From 0420e8715d064cf73dd63f4af16a3b14441da804 Mon Sep 17 00:00:00 2001 From: gustav_delius Date: Mon, 23 Aug 2004 20:34:52 +0000 Subject: [PATCH] removed empty bullet point --- README.txt | 52 +- admin/admin.html | 1 - admin/admin.php | 4 - admin/auth.php | 107 +- admin/backup.php | 12 +- admin/block.php | 47 +- admin/blocks.php | 111 +- admin/calendar.html | 67 - admin/calendar.php | 99 - admin/config.html | 584 + admin/config.php | 124 +- admin/configure.php | 57 +- admin/configvars.php | 477 - admin/creators.html | 3 +- admin/creators.php | 4 - admin/cron.php | 43 +- admin/delete.php | 32 +- admin/editor.html | 229 +- admin/editor.php | 159 +- admin/enrol.php | 19 +- admin/filters.html | 30 +- admin/filters.php | 15 +- admin/handlevirus.php | 117 - admin/health.php | 508 - admin/index.php | 303 +- admin/innodb.php | 30 - admin/lang.php | 91 +- admin/langdoc.php | 236 - admin/maintenance.php | 79 - admin/module.php | 12 +- admin/modules.php | 36 +- admin/process_email.php | 79 - admin/register.php | 139 +- admin/replace.php | 58 - admin/site.html | 108 +- admin/site.php | 53 +- admin/timezone.php | 16 +- admin/timezoneimport.php | 139 - admin/upgradelogs.php | 4 +- admin/uploaduser.php | 35 +- admin/user.php | 93 +- admin/users.php | 20 +- auth/README | 106 - auth/cas/README-CAS | 7 - auth/cas/auth_ldap_sync_users.php | 40 - auth/cas/config.html | 104 - auth/cas/forbidden.html | 8 - auth/cas/forbidden.php | 12 - auth/cas/index_form.html | 1 - auth/cas/languages.php | 10 - auth/cas/lib.php | 169 - auth/cas/login.php | 321 - auth/cas/logout.php | 10 - auth/db/config.html | 309 +- auth/db/lib.php | 9 +- auth/email/config.html | 1 - auth/email/lib.php | 2 +- auth/fc/config.html | 252 +- auth/imap/config.html | 64 +- auth/imap/lib.php | 2 +- auth/ldap/auth_ldap_sync_users.php | 39 - auth/ldap/config.html | 924 +- auth/ldap/lib.php | 1397 +-- auth/manual/config.html | 16 +- auth/manual/lib.php | 2 +- auth/nntp/config.html | 50 +- auth/nntp/lib.php | 2 +- auth/none/config.html | 1 - auth/none/lib.php | 2 +- auth/pam/config.html | 9 - auth/pam/lib.php | 42 - auth/pop3/config.html | 80 +- auth/pop3/lib.php | 2 +- auth/shibboleth/README.txt | 76 - auth/shibboleth/config.html | 127 - auth/shibboleth/lib.php | 60 - backup/CHANGES_14_15.txt | 66 - backup/backup.php | 34 +- backup/backup_check.html | 168 +- backup/backup_execute.html | 145 +- backup/backup_form.html | 168 +- backup/backup_scheduled.php | 150 +- backup/backuplib.php | 528 +- backup/bb/README.txt | 73 - backup/bb/bb5.5_to_moodle.xsl | 737 -- backup/bb/bb6_to_moodle.xsl | 690 -- backup/bb/restore_bb.php | 89 - backup/config.html | 85 +- backup/db/mysql.php | 2 +- backup/lib.php | 17 +- backup/log.php | 61 +- backup/restore.php | 47 +- backup/restore_check.html | 40 +- backup/restore_execute.html | 143 +- backup/restore_form.html | 124 +- backup/restore_precheck.html | 133 +- backup/restorelib.php | 1517 +-- backup/try.php | 4 +- backup/version.php | 4 +- blocks/HOWTO.html | 1221 -- blocks/README.txt | 53 + .../block_activity_modules.php | 12 +- blocks/admin/block_admin.php | 128 +- blocks/admin/styles.php | 4 - .../calendar_month/block_calendar_month.php | 42 +- blocks/calendar_month/styles.php | 23 - .../block_calendar_upcoming.php | 42 +- blocks/calendar_upcoming/styles.php | 4 - blocks/course_list/block_course_list.php | 42 +- .../{config_global.html => config.html} | 8 +- .../course_summary/block_course_summary.php | 35 +- blocks/course_summary/styles.php | 3 - blocks/db/mysql.php | 95 +- blocks/db/mysql.sql | 16 +- blocks/db/postgres7.php | 86 - blocks/db/postgres7.sql | 17 +- .../glossary_random/block_glossary_random.php | 198 - blocks/glossary_random/config_instance.html | 56 - blocks/html/block_html.php | 34 - blocks/html/config_instance.html | 19 - blocks/login/block_login.php | 10 +- blocks/messages/block_messages.php | 63 - blocks/moodleblock.class.php | 592 +- blocks/news_items/block_news_items.php | 108 +- blocks/online_users/block_online_users.php | 148 +- blocks/online_users/config.html | 24 + blocks/online_users/config_global.html | 21 - blocks/pagedemo.php | 194 - blocks/participants/block_participants.php | 37 +- blocks/quiz_results/block_quiz_results.php | 344 - blocks/quiz_results/config_instance.html | 70 - blocks/quiz_results/styles.php | 26 - .../recent_activity/block_recent_activity.php | 14 +- blocks/rss_client/block_rss_client.php | 229 - blocks/rss_client/block_rss_client_action.php | 278 - blocks/rss_client/block_rss_client_error.php | 14 - blocks/rss_client/config_global.html | 64 - blocks/rss_client/config_instance.html | 140 - blocks/rss_client/db/mysql.php | 16 - blocks/rss_client/db/mysql.sql | 21 - blocks/rss_client/db/postgres7.php | 13 - blocks/rss_client/db/postgres7.sql | 18 - blocks/rss_client/styles.php | 22 - blocks/search_forums/block_search_forums.php | 32 +- blocks/search_forums/styles.php | 8 - blocks/section_links/block_section_links.php | 59 +- .../site_main_menu/block_site_main_menu.php | 60 +- .../block_social_activities.php | 51 +- blocks/version.php | 2 +- calendar/event.php | 169 +- calendar/event_delete.html | 60 +- calendar/event_edit.html | 4 +- calendar/event_new.html | 26 +- calendar/event_select.html | 60 +- calendar/lib.php | 660 +- calendar/overlib.cfg.php | 21 +- calendar/preferences.html | 64 +- calendar/preferences.php | 24 +- calendar/set.php | 6 +- calendar/view.php | 271 +- config-dist.php | 90 +- course/category.php | 258 +- course/delete.php | 13 +- course/edit.html | 163 +- course/edit.php | 62 +- course/editsection.html | 13 +- course/editsection.php | 10 +- course/enrol.html | 45 + course/enrol.php | 37 +- course/format/social/config.php | 13 - course/format/social/format.php | 65 +- course/format/topics/config.php | 13 - course/format/topics/format.php | 240 +- course/format/weeks/config.php | 13 - course/format/weeks/format.php | 243 +- course/grade.php | 18 +- course/grades.php | 74 +- course/group-edit.html | 42 +- course/group.php | 117 +- course/groups-edit.html | 18 +- course/groups-summary.html | 50 + course/groups.php | 76 +- course/import.php | 105 - course/importstudents.html | 84 - course/importstudents.php | 141 - course/index.php | 122 +- course/info.php | 16 +- course/jumpto.php | 18 - course/lib.php | 957 +- course/log.php | 79 +- course/loggraph.php | 40 +- course/loginas.php | 35 +- course/loglive.php | 16 +- course/mod.php | 224 +- course/mod_delete.html | 17 +- course/outline_rep.php | 48 +- course/quickreport.php | 365 + course/recent.php | 51 +- course/scales.php | 89 +- course/search.php | 6 +- course/student.html | 22 +- course/student.php | 49 +- course/teacher.php | 56 +- course/unenrol.php | 10 +- course/user.php | 198 +- course/view.php | 155 +- doc/contents.php | 24 +- doc/index.php | 11 +- doc/install.html | 4 +- enrol/database/config.html | 35 +- enrol/database/enrol.php | 85 +- enrol/enrol.class.php | 90 +- enrol/flatfile/config.html | 18 +- enrol/flatfile/enrol.php | 15 +- enrol/internal/enrol.html | 60 +- enrol/ldap/config.html | 293 - enrol/ldap/enrol.php | 627 -- enrol/ldap/enrol_ldap_sync.php | 29 - enrol/paypal/config.html | 18 +- enrol/paypal/enrol.html | 14 +- enrol/paypal/enrol.php | 67 +- enrol/paypal/ipn.php | 4 +- error/index.php | 30 +- file.php | 193 +- files/index.php | 706 +- files/mimetypes.php | 92 + filter/activitynames/filter.php | 94 +- filter/algebra/algebradebug.php | 101 +- filter/algebra/filter.php | 20 +- filter/algebra/pix.php | 97 +- filter/censor/filter.php | 22 +- filter/index.html | 1 - filter/mediaplugin/filter.php | 86 +- filter/mediaplugin/mp3player.fla.zip | Bin 12375 -> 18538 bytes filter/mediaplugin/mp3player.swf | Bin 1452 -> 10761 bytes filter/multilang/README.txt | 60 +- filter/multilang/filter.php | 275 +- filter/tex/displaytex.php | 25 +- filter/tex/filter.php | 20 +- filter/tex/mimetex.exe | Bin 433152 -> 329728 bytes filter/tex/mimetex.linux | Bin 429514 -> 760158 bytes filter/tex/pix.php | 95 +- filter/tex/texdebug.php | 68 +- filter/tex/texed.php | 12 +- filter/tidy/filter.php | 47 - grade/exceptions.html | 178 - grade/exceptions.php | 143 - grade/index.php | 139 - grade/lib.php | 2775 ----- help.php | 87 +- index.php | 307 +- install.php | 95 +- lang/af/assignment.php | 102 +- lang/af/auth.php | 138 +- lang/af/chat.php | 82 +- lang/af/choice.php | 42 +- lang/af/forum.php | 260 +- lang/af/help/assignment/assignmenttype.html | 17 +- lang/af/help/assignment/resubmit.html | 11 +- lang/af/help/choice/options.html | 9 +- lang/af/help/coursecategory.html | 11 +- lang/af/help/courseformats.html | 26 +- lang/af/help/coursefullname.html | 6 +- lang/af/help/coursenewsitems.html | 20 +- lang/af/help/coursenumsections.html | 21 +- lang/af/help/courserecent.html | 18 +- lang/af/help/courseshortname.html | 8 +- lang/af/help/coursestartdate.html | 22 +- lang/af/help/emoticons.html | 123 +- lang/af/help/enrolmentkey.html | 23 +- lang/af/help/forum/allowdiscussions.html | 21 +- lang/af/help/forum/attachment.html | 22 +- lang/af/help/forum/forumtype.html | 22 +- lang/af/help/forum/ratings.html | 74 +- lang/af/help/forum/subscription.html | 18 +- lang/af/help/guestaccess.html | 24 +- lang/af/help/html.html | 14 +- lang/af/help/langedit.html | 17 +- lang/af/help/mods.html | 67 +- lang/af/help/picture.html | 43 +- lang/af/help/questions.html | 86 +- lang/af/help/quiz/attempts.html | 9 +- lang/af/help/quiz/categories.html | 18 +- lang/af/help/quiz/correctanswers.html | 6 +- lang/af/help/quiz/createmultiple.html | 9 +- lang/af/help/quiz/feedback.html | 6 +- lang/af/help/quiz/grademethod.html | 26 +- lang/af/help/quiz/import.html | 50 +- lang/af/help/quiz/match.html | 12 +- lang/af/help/quiz/maxgrade.html | 12 +- lang/af/help/quiz/multichoice.html | 19 +- lang/af/help/quiz/questiontypes.html | 38 +- lang/af/help/quiz/random.html | 17 +- lang/af/help/quiz/randomsamatch.html | 17 +- lang/af/help/quiz/review.html | 7 +- lang/af/help/quiz/shortanswer.html | 14 +- lang/af/help/quiz/shuffleanswers.html | 11 +- lang/af/help/quiz/shufflequestions.html | 10 +- lang/af/help/quiz/timeopen.html | 9 +- lang/af/help/quiz/truefalse.html | 10 +- lang/af/help/reading.html | 14 +- lang/af/help/resource/resourcetype.html | 34 +- lang/af/help/resource/summary.html | 11 +- lang/af/help/richtext.html | 321 +- lang/af/help/summaries.html | 10 +- lang/af/help/surveys.html | 155 +- lang/af/help/teachers.html | 23 +- lang/af/help/text.html | 149 +- lang/af/help/textformat.html | 64 +- lang/af/help/wiki.html | 299 +- lang/af/help/workshop/addingacomment.html | 21 +- lang/af/help/workshop/agreeassessments.html | 29 +- lang/af/help/workshop/anonymous.html | 13 +- lang/af/help/workshop/assignmenttype.html | 19 +- .../help/workshop/breakdownoffinalgrade.html | 23 +- .../help/workshop/calculatingfinalgrade.html | 46 +- lang/af/help/workshop/editingacomment.html | 7 +- lang/af/help/workshop/elements.html | 66 +- lang/af/help/workshop/finalgrades.html | 20 +- lang/af/help/workshop/graded.html | 14 +- lang/af/help/workshop/grading.html | 28 +- lang/af/help/workshop/gradingassessments.html | 20 +- lang/af/help/workshop/gradingstrategy.html | 71 +- lang/af/help/workshop/includeself.html | 12 +- lang/af/help/workshop/managing.html | 47 +- .../nassessmentsofstudentsubmissions.html | 12 +- .../nassessmentsofteachersexamples.html | 10 +- lang/af/help/workshop/nelements.html | 13 +- lang/af/help/workshop/numberofassessors.html | 27 +- lang/af/help/workshop/resubmit.html | 20 +- lang/af/help/workshop/selfassessment.html | 14 +- lang/af/help/workshop/showinggrades.html | 14 +- lang/af/help/workshop/teachersgradings.html | 14 +- lang/af/help/writing.html | 22 +- lang/af/journal.php | 75 +- lang/af/moodle.php | 1453 ++- lang/af/quiz.php | 319 +- lang/af/resource.php | 85 +- lang/af/survey.php | 422 +- lang/af/workshop.php | 375 +- lang/ar/README | 4 - lang/ar/activitynames.php | 4 +- lang/ar/admin.php | 36 +- lang/ar/appointment.php | 90 +- lang/ar/assignment.php | 5 +- lang/ar/auth.php | 32 +- lang/ar/block_course_list.php | 9 +- lang/ar/block_course_summary.php | 5 +- lang/ar/block_rss_client.php | 32 - lang/ar/block_section_links.php | 12 +- lang/ar/book.php | 31 - lang/ar/brainstorm.php | 28 - lang/ar/calendar.php | 29 +- lang/ar/certificate.php | 12 - lang/ar/chat.php | 98 +- lang/ar/choice.php | 14 +- lang/ar/dialogue.php | 141 +- lang/ar/editor.php | 7 +- lang/ar/emailprotect.php | 7 - lang/ar/enrol_database.php | 18 - lang/ar/enrol_flatfile.php | 8 +- lang/ar/enrol_internal.php | 10 +- lang/ar/enrol_ldap.php | 20 - lang/ar/enrol_paypal.php | 10 - lang/ar/error.php | 7 +- lang/ar/exercise.php | 356 +- lang/ar/forum.php | 28 +- lang/ar/glossary.php | 28 +- lang/ar/help/assignment/assignmenttype.html | 2 +- lang/ar/help/assignment/index.html | 8 +- lang/ar/help/assignment/mods.html | 6 +- lang/ar/help/assignment/resubmit.html | 8 +- lang/ar/help/attendance/mods.html | 4 +- lang/ar/help/book/faq.html | 42 - lang/ar/help/book/index.html | 9 - lang/ar/help/book/mods.html | 5 - lang/ar/help/book/numberingtype.html | 15 - lang/ar/help/book/summary.html | 7 - lang/ar/help/cookies.html | 15 - lang/ar/help/courseavailability.html | 10 - lang/ar/help/coursecategory.html | 11 - lang/ar/hotpot.php | 12 - lang/ar/install.php | 29 +- lang/ar/journal.php | 70 +- lang/ar/lesson.php | 30 +- lang/ar/message.php | 60 - lang/ar/moodle.php | 323 +- lang/ar/pix.php | 52 +- lang/ar/quiz.php | 69 +- lang/ar/resource.php | 139 +- lang/ar/scheduler.php | 86 +- lang/ar/scorm.php | 4 +- lang/ar/shelf.php | 16 +- lang/ar/survey.php | 388 +- lang/ar/webquest.php | 16 +- lang/ar/wiki.php | 264 +- lang/ar/workshop.php | 128 +- lang/be/README | 20 +- lang/be/activitynames.php | 4 +- lang/be/admin.php | 37 +- lang/be/appointment.php | 45 - lang/be/assignment.php | 24 +- lang/be/attendance.php | 12 +- lang/be/auth.php | 48 +- lang/be/block_course_summary.php | 4 +- lang/be/block_html.php | 10 - lang/be/block_online_users.php | 4 +- lang/be/block_quiz_results.php | 28 - lang/be/block_rss_client.php | 39 - lang/be/calendar.php | 33 +- lang/be/censor.php | 4 +- lang/be/chat.php | 15 +- lang/be/choice.php | 5 +- lang/be/countries.php | 6 +- lang/be/dialogue.php | 7 +- lang/be/docs/background.html | 43 +- lang/be/docs/credits.html | 214 - lang/be/docs/cvs.html | 105 +- lang/be/docs/developer.html | 151 +- lang/be/docs/docstyles.css | 134 - lang/be/docs/faq.html | 565 +- lang/be/docs/features.html | 598 +- lang/be/docs/files.php | 29 +- lang/be/docs/future.html | 51 - lang/be/docs/install.html | 108 +- lang/be/docs/installamp.html | 104 - lang/be/docs/intro.html | 42 +- lang/be/docs/licence.html | 136 +- lang/be/docs/other.html | 20 - lang/be/docs/philosophy.html | 50 - lang/be/docs/release.html | 322 + lang/be/docs/teacher.html | 120 +- lang/be/docs/translation.html | 115 - lang/be/docs/upgrade.html | 44 +- lang/be/editor.php | 35 +- lang/be/emailprotect.php | 7 - lang/be/enrol_database.php | 5 +- lang/be/enrol_internal.php | 9 +- auth/index.html => lang/be/enrol_ldap.php | 0 lang/be/enrol_paypal.php | 4 +- lang/be/error.php | 7 +- lang/be/exercise.php | 89 +- lang/be/fonts/default.ttf | Bin 51942 -> 0 bytes lang/be/forum.php | 60 +- lang/be/glossary.php | 223 +- lang/{ar/questionnaire.php => be/grades.php} | 0 lang/be/help/assignment/assignmenttype.html | 8 +- lang/be/help/assignment/mods.html | 6 +- lang/be/help/assignment/resubmit.html | 6 +- lang/be/help/attendance/index.html | 13 +- lang/be/help/attendance/mods.html | 10 +- lang/be/help/chat/chatting.html | 8 +- lang/be/help/chat/index.html | 2 +- lang/be/help/chat/mods.html | 11 +- lang/be/help/choice/index.html | 2 +- lang/be/help/choice/mods.html | 6 +- lang/be/help/choice/options.html | 6 +- lang/be/help/cookies.html | 4 +- lang/be/help/courseavailability.html | 2 +- lang/be/help/coursecategory.html | 8 +- lang/be/help/courseformats.html | 20 +- lang/be/help/coursefullname.html | 4 +- lang/be/help/coursegrades.html | 2 +- lang/be/help/coursehiddensections.html | 2 +- lang/be/help/courseidnumber.html | 4 - lang/be/help/coursenewsitems.html | 8 +- lang/be/help/coursenumsections.html | 6 +- lang/be/help/courserecent.html | 10 +- lang/be/help/coursereports.html | 5 +- lang/be/help/courseshortname.html | 4 +- lang/be/help/coursestartdate.html | 10 +- lang/be/help/courseuploadsize.html | 8 +- lang/be/help/dialogue/dialoguetype.html | 2 +- lang/be/help/dialogue/info.html | 5 +- lang/be/help/dialogue/maildefault.html | 3 +- lang/be/help/dialogue/mods.html | 6 +- lang/be/help/emoticons.html | 86 +- lang/be/help/enrolmentkey.html | 12 +- lang/be/help/exercise/administration.html | 2 +- .../exercise/comparisonofassessments.html | 9 - lang/be/help/exercise/elements.html | 10 +- lang/be/help/exercise/grading.html | 2 +- lang/be/help/exercise/gradinggrade.html | 3 +- lang/be/help/exercise/index.html | 8 +- lang/be/help/exercise/leaguetable.html | 5 +- lang/be/help/exercise/leaguetablenames.html | 5 +- lang/be/help/exercise/managing.html | 11 +- lang/be/help/exercise/mods.html | 7 +- lang/be/help/exercise/moreinfo.html | 7 +- lang/be/help/exercise/nelements.html | 6 +- .../exercise/submissionofdescriptions.html | 2 +- lang/be/help/exercise/takeownership.html | 3 +- lang/be/help/forum/allowdiscussions.html | 11 +- lang/be/help/forum/attachment.html | 10 +- lang/be/help/forum/forumtype.html | 14 +- lang/be/help/forum/index.html | 11 - lang/be/help/forum/maxattachmentsize.html | 5 - lang/be/help/forum/mods.html | 5 - lang/be/help/forum/ratings.html | 19 +- lang/be/help/forum/rssarticles.html | 6 - lang/be/help/forum/rsstype.html | 12 - lang/be/help/forum/subscription.html | 8 +- lang/be/help/forum/subscription2.html | 14 - lang/be/help/glossary/displayformat.html | 12 +- lang/be/help/glossary/editalways.html | 2 +- lang/be/help/glossary/index.html | 6 +- lang/be/help/glossary/mods.html | 8 +- lang/be/help/glossary/rssarticles.html | 2 +- lang/be/help/glossary/rsstype.html | 4 +- lang/be/help/glossary/studentcanpost.html | 2 +- lang/be/help/groupmode.html | 7 +- lang/be/help/groupmodeforce.html | 2 +- lang/be/help/guestaccess.html | 12 +- lang/be/help/html.html | 14 +- lang/be/help/index.html | 62 +- lang/be/help/journal/mods.html | 8 +- lang/be/help/label/mods.html | 7 +- lang/be/help/langedit.html | 10 +- lang/be/help/lesson/grade.html | 6 +- lang/be/help/lesson/handlingofretakes.html | 2 +- lang/be/help/lesson/import.html | 85 +- lang/be/help/lesson/index.html | 18 - lang/be/help/lesson/maxanswers.html | 4 +- lang/be/help/lesson/maxattempts.html | 4 +- lang/be/help/lesson/maxpages.html | 6 +- lang/be/help/lesson/minquestions.html | 12 +- lang/be/help/lesson/mods.html | 10 +- lang/be/help/lesson/nextpageaction.html | 6 +- lang/be/help/lesson/overview.html | 50 +- lang/be/help/lesson/questionoption.html | 8 +- lang/be/help/lesson/questiontypes.html | 6 +- lang/be/help/lesson/retake.html | 8 +- lang/be/help/mods.html | 65 +- lang/be/help/picture.html | 24 +- lang/be/help/questionnaire/mods.html | 7 - lang/be/help/questionnaire/qmanage.html | 4 +- .../help/questionnaire/questionnaireid.html | 2 +- lang/be/help/questions.html | 18 +- lang/be/help/quiz/attempts.html | 6 +- lang/be/help/quiz/categories.html | 10 +- lang/be/help/quiz/correctanswers.html | 6 +- lang/be/help/quiz/export.html | 6 +- lang/be/help/quiz/feedback.html | 4 +- lang/be/help/quiz/formatblackboard.html | 2 +- lang/be/help/quiz/formatctm.html | 16 +- lang/be/help/quiz/formatgift.html | 28 +- lang/be/help/quiz/grademethod.html | 36 +- lang/be/help/quiz/import.html | 127 +- lang/be/help/quiz/index.html | 14 +- lang/be/help/quiz/match.html | 2 +- lang/be/help/quiz/maxgrade.html | 8 +- lang/be/help/quiz/mods.html | 7 +- lang/be/help/quiz/multianswer.html | 8 +- lang/be/help/quiz/multichoice.html | 14 +- lang/be/help/quiz/questiontypes.html | 91 +- lang/be/help/quiz/random.html | 2 +- lang/be/help/quiz/randommatch.html | 10 +- lang/be/help/quiz/randomsamatch.html | 2 +- lang/be/help/quiz/repeatattempts.html | 3 +- lang/be/help/quiz/review.html | 4 +- lang/be/help/quiz/shortanswer.html | 8 +- lang/be/help/quiz/timeopen.html | 4 +- lang/be/help/quiz/truefalse.html | 7 +- lang/be/help/reading.html | 13 +- lang/be/help/resource/index.html | 17 +- lang/be/help/resource/mods.html | 7 +- lang/be/help/resource/resourcetype.html | 27 +- lang/be/help/resource/summary.html | 6 +- lang/be/help/resource/type/directory.html | 5 +- lang/be/help/resource/type/file.html | 4 +- lang/be/help/resource/type/html.html | 4 +- lang/be/help/resource/type/label.html | 4 +- lang/be/help/resource/type/text.html | 6 +- lang/be/help/resource/types.html | 1 + lang/be/help/resource/window.html | 4 +- lang/be/help/richtext.html | 177 +- lang/be/help/scales.html | 7 +- lang/be/help/scorm/mods.html | 12 +- lang/be/help/summaries.html | 3 +- lang/be/help/survey/index.html | 4 +- lang/be/help/survey/mods.html | 6 +- lang/be/help/surveys.html | 77 - lang/be/help/teachers.html | 11 +- lang/be/help/text.html | 129 +- lang/be/help/textformat.html | 67 +- lang/be/help/uploadusers.html | 26 - lang/be/help/wiki.html | 16 +- lang/be/help/wiki/howtowiki.html | 4 +- lang/be/help/wiki/index.html | 2 +- lang/be/help/wiki/mods.html | 7 +- .../help/wiki/revertauthorfieldpattern.html | 2 +- lang/be/help/wiki/revertpages.html | 2 +- lang/be/help/wiki/setpageflags.html | 4 +- lang/be/help/wiki/wikiname.html | 4 +- lang/be/help/wiki/wikitype.html | 2 +- lang/be/help/wiki/wikiusage.html | 13 +- lang/be/help/workshop/addingacomment.html | 13 - lang/be/help/workshop/agreeassessments.html | 12 - .../help/workshop/analysisofassessments.html | 33 - lang/be/help/workshop/anonymous.html | 8 - .../help/workshop/assessmentofexamples.html | 4 - lang/be/help/workshop/assignmenttype.html | 9 - .../help/workshop/breakdownoffinalgrade.html | 12 - .../help/workshop/calculatingfinalgrade.html | 23 - .../workshop/comparisonofassessments.html | 12 - lang/be/help/workshop/editingacomment.html | 3 - lang/be/help/workshop/elements.html | 25 - lang/be/help/workshop/finalgrades.html | 9 - lang/be/help/workshop/grade.html | 6 - lang/be/help/workshop/grading.html | 16 - lang/be/help/workshop/gradingassessments.html | 8 - lang/be/help/workshop/gradingstrategy.html | 21 - lang/be/help/workshop/gradingsubmissions.html | 5 - lang/be/help/workshop/includeself.html | 5 - .../help/workshop/includeteachersgrade.html | 3 - lang/be/help/workshop/index.html | 36 +- lang/be/help/workshop/leaguetable.html | 5 - lang/be/help/workshop/managing.html | 20 - lang/be/help/workshop/mods.html | 5 - .../nassessmentsofstudentsubmissions.html | 3 - .../nassessmentsofteachersexamples.html | 3 - lang/be/help/workshop/nelements.html | 5 - lang/be/help/workshop/overallocation.html | 6 - lang/be/help/workshop/resubmit.html | 9 - lang/be/help/workshop/selfassessment.html | 5 - lang/be/help/workshop/showinggrades.html | 5 - lang/be/help/workshop/specimen.html | 5 - .../help/workshop/submissionofexamples.html | 7 - lang/be/help/workshop/teachersgradings.html | 5 - .../workshop/ungradedassessments_student.html | 3 - .../workshop/ungradedassessments_teacher.html | 4 - lang/be/help/writing.html | 17 +- lang/be/hotpot.php | 6 +- lang/be/install.php | 104 +- lang/be/journal.php | 64 +- lang/be/lesson.php | 211 +- lang/be/message.php | 61 - lang/be/moodle.php | 588 +- lang/be/questionnaire.php | 16 +- lang/be/quiz.php | 157 +- lang/be/resource.php | 44 +- lang/be/scorm.php | 55 +- lang/be/survey.php | 10 +- lang/be/webquest.php | 8 +- lang/be/workshop.php | 70 +- lang/bg/admin.php | 29 - lang/bg/assignment.php | 15 +- lang/bg/attendance.php | 45 - lang/bg/auth.php | 57 +- lang/bg/block_course_list.php | 5 +- lang/bg/block_course_summary.php | 1 - lang/bg/calendar.php | 23 - lang/bg/chat.php | 10 +- lang/bg/countries.php | 61 +- lang/bg/docs/install.html | 27 +- lang/bg/docs/installamp.html | 31 +- lang/bg/editor.php | 11 +- lang/bg/enrol_database.php | 6 +- lang/bg/error.php | 8 +- lang/bg/forum.php | 28 +- lang/bg/glossary.php | 16 +- lang/bg/lesson.php | 169 +- lang/bg/moodle.php | 485 +- lang/bg/questionnaire.php | 4 +- lang/bg/quiz.php | 85 +- lang/bg/resource.php | 17 +- lang/bg/survey.php | 203 +- lang/bg/wiki.php | 41 +- lang/ca/README | 69 +- lang/ca/admin.php | 21 +- lang/ca/assignment.php | 10 +- lang/ca/auth.php | 51 +- lang/ca/block_course_summary.php | 6 +- lang/ca/block_html.php | 10 - lang/ca/block_rss_client.php | 39 - lang/ca/book.php | 50 - lang/ca/calendar.php | 21 +- lang/ca/chat.php | 14 +- lang/ca/choice.php | 3 +- lang/ca/countries.php | 4 +- lang/ca/dialogue.php | 5 +- lang/ca/docs/install.html | 28 +- lang/ca/docs/intro.html | 18 +- lang/ca/editor.php | 14 +- lang/ca/enrol_flatfile.php | 24 +- lang/ca/enrol_internal.php | 12 +- lang/ca/error.php | 6 +- lang/ca/exercise.php | 6 +- lang/ca/forum.php | 19 +- lang/ca/glossary.php | 31 +- lang/ca/help/assignment/assignmenttype.html | 10 +- lang/ca/help/assignment/emailteachers.html | 8 - lang/ca/help/assignment/index.html | 7 +- lang/ca/help/assignment/mods.html | 6 +- lang/ca/help/assignment/resubmit.html | 8 +- lang/ca/help/book/customtitles.html | 3 - lang/ca/help/book/disableprinting.html | 3 - lang/ca/help/book/edit.html | 7 - lang/ca/help/book/faq.html | 39 - lang/ca/help/book/import.html | 5 - lang/ca/help/book/index.html | 11 - lang/ca/help/book/mods.html | 4 - lang/ca/help/book/numberingtype.html | 12 - lang/ca/help/book/summary.html | 5 - lang/ca/help/chat/chatting.html | 23 +- lang/ca/help/chat/index.html | 6 +- lang/ca/help/chat/mods.html | 6 +- lang/ca/help/choice/index.html | 6 +- lang/ca/help/choice/mods.html | 5 +- lang/ca/help/choice/options.html | 6 +- lang/ca/help/cookies.html | 26 +- lang/ca/help/courseavailability.html | 10 +- lang/ca/help/coursecategory.html | 9 +- lang/ca/help/courseformats.html | 20 +- lang/ca/help/coursefullname.html | 4 +- lang/ca/help/coursegrades.html | 2 +- lang/ca/help/courseidnumber.html | 4 +- lang/ca/help/coursenewsitems.html | 8 +- lang/ca/help/coursenumsections.html | 10 +- lang/ca/help/courserecent.html | 26 +- lang/ca/help/coursereports.html | 2 +- lang/ca/help/courseshortname.html | 4 +- lang/ca/help/coursestartdate.html | 12 +- lang/ca/help/courseuploadsize.html | 6 +- lang/ca/help/dialogue/index.html | 14 +- lang/ca/help/dialogue/info.html | 2 +- lang/ca/help/dialogue/mods.html | 2 +- lang/ca/help/dialogue/writing.html | 13 +- lang/ca/help/directorypaths.html | 8 +- lang/ca/help/emoticons.html | 357 +- lang/ca/help/enrolmentkey.html | 12 +- lang/ca/help/forum/allowdiscussions.html | 10 +- lang/ca/help/forum/attachment.html | 12 +- lang/ca/help/forum/forumtype.html | 12 +- lang/ca/help/forum/index.html | 10 +- lang/ca/help/forum/maxattachmentsize.html | 6 +- lang/ca/help/forum/mods.html | 5 +- lang/ca/help/forum/ratings.html | 156 +- lang/ca/help/forum/rssarticles.html | 6 +- lang/ca/help/forum/rsstype.html | 14 +- lang/ca/help/forum/subscription.html | 19 +- lang/ca/help/forum/subscription2.html | 10 +- lang/ca/help/glossary/aliases.html | 6 +- lang/ca/help/glossary/allowcomments.html | 6 +- .../help/glossary/allowduplicatedentries.html | 2 +- lang/ca/help/glossary/casesensitive.html | 6 +- lang/ca/help/glossary/defaultapproval.html | 4 +- lang/ca/help/glossary/description.html | 4 +- lang/ca/help/glossary/destination.html | 12 +- lang/ca/help/glossary/displayformat.html | 4 +- lang/ca/help/glossary/editalways.html | 6 +- lang/ca/help/glossary/entbypage.html | 6 +- lang/ca/help/glossary/filetoimport.html | 4 +- lang/ca/help/glossary/fullmatch.html | 8 +- lang/ca/help/glossary/globalglossary.html | 10 +- lang/ca/help/glossary/importcategories.html | 4 +- lang/ca/help/glossary/index.html | 90 +- lang/ca/help/glossary/linkcategory.html | 6 +- lang/ca/help/glossary/mainglossary.html | 6 +- lang/ca/help/glossary/mods.html | 15 +- lang/ca/help/glossary/rsstype.html | 4 +- lang/ca/help/glossary/shows.html | 11 +- lang/ca/help/glossary/studentcanpost.html | 6 +- lang/ca/help/glossary/usedynalink.html | 8 +- lang/ca/help/glossary/usedynalinkentry.html | 7 - lang/ca/help/groupmode.html | 7 +- lang/ca/help/groupmodeforce.html | 2 +- lang/ca/help/guestaccess.html | 12 +- lang/ca/help/html.html | 38 +- lang/ca/help/index.html | 49 +- lang/ca/help/journal/mods.html | 8 +- lang/ca/help/label/mods.html | 8 +- lang/ca/help/langedit.html | 11 +- lang/ca/help/mods.html | 5 +- lang/ca/help/picture.html | 26 +- lang/ca/help/questions.html | 234 +- lang/ca/help/quiz/attempts.html | 8 +- lang/ca/help/quiz/categories.html | 13 +- lang/ca/help/quiz/correctanswers.html | 6 +- lang/ca/help/quiz/createmultiple.html | 14 +- lang/ca/help/quiz/description.html | 8 +- lang/ca/help/quiz/feedback.html | 6 +- lang/ca/help/quiz/formatblackboard.html | 2 +- lang/ca/help/quiz/formatcustom.html | 2 +- lang/ca/help/quiz/formatmissingword.html | 2 +- lang/ca/help/quiz/grademethod.html | 31 +- lang/ca/help/quiz/import.html | 55 +- lang/ca/help/quiz/index.html | 33 +- lang/ca/help/quiz/match.html | 10 +- lang/ca/help/quiz/maxgrade.html | 11 +- lang/ca/help/quiz/mods.html | 15 +- lang/ca/help/quiz/multianswer.html | 209 +- lang/ca/help/quiz/multichoice.html | 20 +- lang/ca/help/quiz/numerical.html | 14 +- lang/ca/help/quiz/questiontypes.html | 246 +- lang/ca/help/quiz/randomsamatch.html | 14 +- lang/ca/help/quiz/review.html | 10 +- lang/ca/help/quiz/shortanswer.html | 11 +- lang/ca/help/quiz/shuffleanswers.html | 2 +- lang/ca/help/quiz/shufflequestions.html | 2 +- lang/ca/help/quiz/timeopen.html | 8 +- lang/ca/help/quiz/truefalse.html | 13 +- lang/ca/help/reading.html | 12 +- lang/ca/help/resource/index.html | 14 +- lang/ca/help/resource/mods.html | 6 +- lang/ca/help/resource/program.html | 16 + lang/ca/help/resource/resourcetype.html | 25 + lang/ca/help/resource/summary.html | 9 +- lang/ca/help/resource/window.html | 2 +- lang/ca/help/richtext.html | 90 +- lang/ca/help/scheduler/mods.html | 6 +- lang/ca/help/scorm/mods.html | 2 +- lang/ca/help/summaries.html | 9 +- lang/ca/help/survey/index.html | 2 +- lang/ca/help/survey/mods.html | 6 +- lang/ca/help/surveys.html | 276 +- lang/ca/help/teachers.html | 10 +- lang/ca/help/text.html | 522 +- lang/ca/help/textformat.html | 172 +- lang/ca/help/uploadusers.html | 4 +- lang/ca/help/wiki.html | 8 +- lang/ca/help/wiki/checklinks.html | 4 +- lang/ca/help/wiki/ewikiacceptbinary.html | 14 +- lang/ca/help/wiki/howtowiki.html | 396 +- lang/ca/help/wiki/htmlmode.html | 6 +- lang/ca/help/wiki/initialcontent.html | 8 +- lang/ca/help/wiki/mods.html | 14 +- lang/ca/help/wiki/removepages.html | 6 +- .../help/wiki/revertauthorfieldpattern.html | 6 +- lang/ca/help/wiki/revertpages.html | 4 +- lang/ca/help/wiki/setpageflags.html | 6 +- lang/ca/help/wiki/strippages.html | 4 +- lang/ca/help/wiki/wikilinkoptions.html | 6 +- lang/ca/help/wiki/wikiname.html | 8 +- lang/ca/help/wiki/wikitype.html | 12 +- lang/ca/help/wiki/wikiusage.html | 24 +- lang/ca/help/workshop/addingacomment.html | 18 +- lang/ca/help/workshop/agreeassessments.html | 93 +- lang/ca/help/workshop/anonymous.html | 12 +- .../help/workshop/assessmentofexamples.html | 6 +- lang/ca/help/workshop/assignmenttype.html | 20 +- .../help/workshop/breakdownoffinalgrade.html | 25 +- .../help/workshop/calculatingfinalgrade.html | 168 +- lang/ca/help/workshop/editingacomment.html | 8 +- lang/ca/help/workshop/elements.html | 186 +- lang/ca/help/workshop/finalgrades.html | 23 +- lang/ca/help/workshop/graded.html | 15 +- lang/ca/help/workshop/grading.html | 32 +- lang/ca/help/workshop/gradingassessments.html | 14 +- lang/ca/help/workshop/gradinggrade.html | 22 - lang/ca/help/workshop/gradingstrategy.html | 211 +- lang/ca/help/workshop/gradingsubmissions.html | 10 +- lang/ca/help/workshop/includeself.html | 11 +- .../help/workshop/includeteachersgrade.html | 4 - lang/ca/help/workshop/index.html | 186 +- lang/ca/help/workshop/managing.html | 222 +- lang/ca/help/workshop/mods.html | 10 +- .../nassessmentsofstudentsubmissions.html | 6 +- .../nassessmentsofteachersexamples.html | 6 +- lang/ca/help/workshop/nelements.html | 14 +- lang/ca/help/workshop/numberofassessors.html | 27 +- lang/ca/help/workshop/resubmit.html | 18 +- lang/ca/help/workshop/selfassessment.html | 11 +- lang/ca/help/workshop/showinggrades.html | 14 +- lang/ca/help/workshop/specimen.html | 12 +- .../help/workshop/submissionofexamples.html | 14 +- lang/ca/help/workshop/teachersgradings.html | 13 +- .../workshop/ungradedassessments_student.html | 13 +- .../workshop/ungradedassessments_teacher.html | 10 +- lang/ca/help/writing.html | 30 +- lang/ca/install.php | 11 +- lang/ca/lesson.php | 153 +- lang/ca/message.php | 61 - lang/ca/moodle.php | 268 +- lang/ca/quiz.php | 10 +- lang/ca/resource.php | 27 +- lang/ca/scorm.php | 48 +- lang/ca/survey.php | 8 +- lang/ca/wiki.php | 19 +- lang/ca/workshop.php | 10 +- lang/cs/README | 7 +- lang/cs/activitynames.php | 2 +- lang/cs/admin.php | 9 +- lang/cs/auth.php | 81 +- lang/cs/block_course_summary.php | 4 +- lang/cs/calendar.php | 15 +- lang/cs/censor.php | 2 +- lang/cs/chat.php | 14 +- lang/cs/choice.php | 27 +- lang/cs/countries.php | 242 +- lang/cs/dialogue.php | 39 +- lang/cs/docs/background.html | 81 +- lang/cs/docs/credits.html | 123 +- lang/cs/docs/docstyles.css | 1 - lang/cs/docs/faq.html | 14 +- lang/cs/docs/features.html | 15 +- lang/cs/docs/future.html | 43 +- lang/cs/docs/install.html | 850 +- lang/cs/docs/installamp.html | 13 +- lang/cs/docs/intro.html | 31 +- lang/cs/docs/licence.html | 293 +- lang/cs/docs/philosophy.html | 329 +- lang/cs/docs/teacher.html | 86 +- lang/cs/docs/upgrade.html | 11 +- lang/cs/editor.php | 13 +- lang/cs/enrol_flatfile.php | 14 +- lang/cs/enrol_internal.php | 7 +- lang/cs/enrol_paypal.php | 4 +- lang/cs/error.php | 16 +- lang/cs/exercise.php | 43 +- lang/cs/fonts/README.txt | 2 +- lang/{tl => cs}/fonts/default.ttf | Bin lang/cs/forum.php | 8 +- lang/cs/glossary.php | 24 +- lang/cs/help/assignment/assignmenttype.html | 12 +- lang/cs/help/assignment/index.html | 4 +- lang/cs/help/assignment/mods.html | 10 +- lang/cs/help/assignment/resubmit.html | 10 +- lang/cs/help/chat/chatting.html | 30 +- lang/cs/help/chat/index.html | 5 +- lang/cs/help/chat/mods.html | 10 +- lang/cs/help/choice/index.html | 9 +- lang/cs/help/choice/mods.html | 10 +- lang/cs/help/choice/options.html | 8 +- lang/cs/help/cookies.html | 4 +- lang/cs/help/coursecategory.html | 9 +- lang/cs/help/courseformats.html | 20 +- lang/cs/help/coursefullname.html | 6 +- lang/cs/help/coursegrades.html | 2 +- lang/cs/help/coursenewsitems.html | 14 +- lang/cs/help/coursenumsections.html | 16 +- lang/cs/help/courserecent.html | 16 +- lang/cs/help/courseshortname.html | 6 +- lang/cs/help/coursestartdate.html | 22 +- lang/cs/help/courseuploadsize.html | 8 +- lang/cs/help/dialogue/info.html | 2 +- lang/cs/help/dialogue/mods.html | 2 +- lang/cs/help/dialogue/writing.html | 20 +- lang/cs/help/emoticons.html | 126 +- lang/cs/help/enrolmentkey.html | 20 +- lang/cs/help/exercise/mods.html | 6 +- lang/cs/help/forum/allowdiscussions.html | 16 +- lang/cs/help/forum/attachment.html | 20 +- lang/cs/help/forum/forumtype.html | 18 +- lang/cs/help/forum/index.html | 10 +- lang/cs/help/forum/maxattachmentsize.html | 10 +- lang/cs/help/forum/mods.html | 10 +- lang/cs/help/forum/ratings.html | 6 +- lang/cs/help/forum/subscription.html | 18 +- lang/cs/help/glossary/aliases.html | 2 +- .../help/glossary/allowduplicatedentries.html | 2 +- lang/cs/help/glossary/casesensitive.html | 10 +- lang/cs/help/glossary/defaultapproval.html | 2 +- lang/cs/help/glossary/description.html | 6 +- lang/cs/help/glossary/destination.html | 4 +- lang/cs/help/glossary/displayformat.html | 16 +- lang/cs/help/glossary/entbypage.html | 8 +- lang/cs/help/glossary/filetoimport.html | 4 +- lang/cs/help/glossary/fullmatch.html | 10 +- lang/cs/help/glossary/globalglossary.html | 12 +- lang/cs/help/glossary/importcategories.html | 4 +- lang/cs/help/glossary/index.html | 90 +- lang/cs/help/glossary/linkcategory.html | 4 +- lang/cs/help/glossary/mainglossary.html | 12 +- lang/cs/help/glossary/mods.html | 20 +- lang/cs/help/glossary/shows.html | 4 +- lang/cs/help/glossary/studentcanpost.html | 8 +- lang/cs/help/glossary/usedynalink.html | 12 +- lang/cs/help/groupmode.html | 2 +- lang/cs/help/groupmodeforce.html | 2 +- lang/cs/help/guestaccess.html | 34 +- lang/cs/help/html.html | 20 +- lang/cs/help/index.html | 48 +- lang/cs/help/journal/mods.html | 10 +- lang/cs/help/label/mods.html | 10 +- lang/cs/help/langedit.html | 16 +- lang/cs/help/lesson/grade.html | 6 +- lang/cs/help/lesson/handlingofretakes.html | 10 +- lang/cs/help/lesson/import.html | 126 +- lang/cs/help/lesson/maxanswers.html | 8 +- lang/cs/help/lesson/maxattempts.html | 24 +- lang/cs/help/lesson/maxpages.html | 10 +- lang/cs/help/lesson/minquestions.html | 26 +- lang/cs/help/lesson/mods.html | 10 +- lang/cs/help/lesson/nextpageaction.html | 22 +- lang/cs/help/lesson/overview.html | 74 +- lang/cs/help/lesson/questiontype.html | 339 +- lang/cs/help/lesson/questiontypes.html | 4 +- lang/cs/help/lesson/retake.html | 14 +- lang/cs/help/lesson/useeditor.html | 34 +- lang/cs/help/mods.html | 68 +- lang/cs/help/picture.html | 50 +- lang/cs/help/questions.html | 241 +- lang/cs/help/quiz/attempts.html | 8 +- lang/cs/help/quiz/categories.html | 14 +- lang/cs/help/quiz/correctanswers.html | 6 +- lang/cs/help/quiz/createmultiple.html | 10 +- lang/cs/help/quiz/description.html | 10 +- lang/cs/help/quiz/discrimination.html | 22 +- lang/cs/help/quiz/feedback.html | 6 +- lang/cs/help/quiz/formataiken.html | 20 +- lang/cs/help/quiz/formatblackboard.html | 2 +- lang/cs/help/quiz/formatctm.html | 96 +- lang/cs/help/quiz/formatcustom.html | 2 +- lang/cs/help/quiz/formatgift.html | 150 +- lang/cs/help/quiz/formatmissingword.html | 2 +- lang/cs/help/quiz/grademethod.html | 46 +- lang/cs/help/quiz/import.html | 126 +- lang/cs/help/quiz/index.html | 62 +- lang/cs/help/quiz/match.html | 12 +- lang/cs/help/quiz/maxgrade.html | 10 +- lang/cs/help/quiz/mods.html | 10 +- lang/cs/help/quiz/multianswer.html | 22 +- lang/cs/help/quiz/multichoice.html | 18 +- lang/cs/help/quiz/numerical.html | 2 +- lang/cs/help/quiz/questiontypes.html | 110 +- lang/cs/help/quiz/randomsamatch.html | 14 +- lang/cs/help/quiz/repeatattempts.html | 2 +- lang/cs/help/quiz/review.html | 6 +- lang/cs/help/quiz/shortanswer.html | 14 +- lang/cs/help/quiz/shuffleanswers.html | 2 +- lang/cs/help/quiz/shufflequestions.html | 2 +- lang/cs/help/quiz/timeopen.html | 8 +- lang/cs/help/quiz/truefalse.html | 2 +- lang/cs/help/reading.html | 12 +- lang/cs/help/resource/index.html | 6 +- lang/cs/help/resource/mods.html | 10 +- lang/cs/help/resource/program.html | 12 +- lang/cs/help/resource/resourcetype.html | 4 +- lang/cs/help/resource/summary.html | 10 +- lang/cs/help/richtext.html | 174 +- lang/cs/help/scales.html | 26 +- lang/cs/help/summaries.html | 14 +- lang/cs/help/survey/index.html | 4 +- lang/cs/help/survey/mods.html | 10 +- lang/cs/help/surveys.html | 68 +- lang/cs/help/teachers.html | 18 +- lang/cs/help/text.html | 182 +- lang/cs/help/textformat.html | 92 +- lang/cs/help/uploadusers.html | 6 +- lang/cs/help/wiki.html | 633 +- lang/cs/help/writing.html | 6 +- lang/cs/install.php | 9 +- lang/cs/lesson.php | 190 +- lang/cs/moodle.php | 227 +- lang/cs/questionnaire.php | 2 +- lang/cs/quiz.php | 67 +- lang/cs/resource.php | 25 +- lang/cs/scorm.php | 38 +- lang/cs/survey.php | 40 +- lang/cs/wiki.php | 22 +- lang/cs/workshop.php | 113 +- lang/da/admin.php | 116 +- lang/da/assignment.php | 10 +- lang/da/auth.php | 17 +- lang/da/choice.php | 3 +- lang/da/dialogue.php | 4 +- lang/da/editor.php | 6 +- lang/da/enrol_flatfile.php | 13 +- lang/da/enrol_internal.php | 7 +- lang/da/enrol_paypal.php | 4 +- lang/da/error.php | 4 +- lang/da/exercise.php | 33 +- lang/da/forum.php | 8 +- lang/da/glossary.php | 15 +- lang/da/install.php | 20 +- lang/da/lesson.php | 5 +- lang/da/moodle.php | 142 +- lang/da/quiz.php | 51 +- lang/da/resource.php | 19 +- lang/da/survey.php | 6 +- lang/da/wiki.php | 15 +- lang/da/workshop.php | 9 +- lang/{de_du => de}/README | 11 +- lang/de/admin.php | 36 +- lang/de/appointment.php | 4 +- lang/de/assignment.php | 26 +- lang/de/attendance.php | 4 +- lang/de/auth.php | 68 +- lang/de/block_course_list.php | 4 +- lang/de/block_course_summary.php | 5 +- lang/de/block_online_users.php | 6 +- lang/de/book.php | 70 +- lang/de/calendar.php | 45 +- lang/de/chat.php | 28 +- lang/de/chatarea.php | 72 +- lang/de/choice.php | 14 +- lang/de/countries.php | 491 +- lang/de/de-14.zip | Bin 0 -> 395702 bytes lang/de/dialogue.php | 39 +- lang/de/docs/background.html | 113 +- lang/de/docs/coding.html | 427 +- lang/de/docs/credits.html | 468 +- lang/de/docs/cvs.html | 349 +- lang/de/docs/developer.html | 596 +- lang/de/docs/faq.html | 698 +- lang/de/docs/features.html | 409 +- lang/de/docs/files.php | 63 +- lang/de/docs/future.html | 104 +- lang/de/docs/install.html | 817 +- lang/de/docs/installamp.html | 324 +- lang/de/docs/intro.html | 91 +- lang/de/docs/licence.html | 358 +- lang/de/docs/module_files.txt | 36 +- lang/de/docs/other.html | 46 +- lang/de/docs/philosophy.html | 246 +- lang/de/docs/release.htm | 302 + lang/de/docs/release.html | 942 +- lang/de/docs/releaseold.html | 365 + lang/de/docs/teacher.html | 666 +- lang/de/docs/translation.html | 356 +- lang/de/docs/upgrade.html | 243 +- lang/de/editor.php | 25 +- lang/de/enrol_flatfile.php | 4 +- lang/de/enrol_internal.php | 6 +- lang/de/enrol_paypal.php | 2 +- lang/de/error.php | 11 +- lang/de/event.php | 14 +- lang/de/exercise.php | 73 +- lang/de/forum.php | 64 +- lang/de/glossary.php | 60 +- lang/de/help/assignment/assignmenttype.html | 25 +- lang/de/help/assignment/index.html | 12 +- lang/de/help/assignment/mods.html | 29 +- lang/de/help/assignment/resubmit.html | 26 +- lang/de/help/attendance/autoattend.html | 16 +- lang/de/help/attendance/choosedays.html | 11 +- lang/de/help/attendance/dynsection.html | 11 +- lang/de/help/attendance/grade.html | 15 +- lang/de/help/attendance/hours.html | 11 +- lang/de/help/attendance/index.html | 22 +- lang/de/help/attendance/maxgrade.html | 9 +- lang/de/help/attendance/mods.html | 9 +- lang/de/help/book/faq.html | 55 +- lang/de/help/book/index.html | 12 +- lang/de/help/book/mods.html | 9 +- lang/de/help/book/numberingtype.html | 27 +- lang/de/help/book/summary.html | 9 +- lang/de/help/chat/chatting.html | 48 +- lang/de/help/chat/mods.html | 17 +- lang/de/help/choice/index.html | 6 +- lang/de/help/choice/mods.html | 21 +- lang/de/help/choice/options.html | 12 +- lang/de/help/choice/timerestrict.html | 14 +- lang/de/help/cookies.html | 24 +- lang/de/help/courseavailability.html | 20 +- lang/de/help/coursecategory.html | 14 +- lang/de/help/courseformats.html | 53 +- lang/de/help/coursefullname.html | 9 +- lang/de/help/coursegrades.html | 28 +- lang/de/help/coursehiddensections.html | 17 +- lang/de/help/courseidnumber.html | 9 +- lang/de/help/coursenewsitems.html | 24 +- lang/de/help/coursenumsections.html | 21 +- lang/de/help/courserecent.html | 29 +- lang/de/help/coursereports.html | 38 +- lang/de/help/courseshortname.html | 21 +- lang/de/help/coursestartdate.html | 28 +- lang/de/help/courseuploadsize.html | 17 +- lang/de/help/dialogue/addsubject.html | 25 +- lang/de/help/dialogue/closedialogue.html | 33 +- lang/de/help/dialogue/deleteafter.html | 19 +- lang/de/help/dialogue/dialoguetype.html | 50 +- lang/de/help/dialogue/index.html | 24 +- lang/de/help/dialogue/info.html | 51 +- lang/de/help/dialogue/maildefault.html | 18 +- lang/de/help/dialogue/mods.html | 27 +- lang/de/help/dialogue/multiple.html | 25 +- lang/de/help/dialogue/sendmail.html | 29 +- lang/de/help/dialogue/writing.html | 46 +- lang/de/help/emoticons.html | 261 +- lang/de/help/enrolmentkey.html | 41 +- lang/de/help/enrolperiod.html | 20 +- lang/de/help/exercise/administration.html | 44 +- .../exercise/comparisonofassessments.html | 85 +- lang/de/help/exercise/elements.html | 95 +- lang/de/help/exercise/finalgrades.html | 15 +- lang/de/help/exercise/grade.html | 8 +- lang/de/help/exercise/grading.html | 49 +- lang/de/help/exercise/gradinggrade.html | 14 +- lang/de/help/exercise/gradingstrategy.html | 85 +- lang/de/help/exercise/index.html | 62 +- lang/de/help/exercise/leaguetable.html | 14 +- lang/de/help/exercise/leaguetablenames.html | 11 +- lang/de/help/exercise/managing.html | 115 +- lang/de/help/exercise/mods.html | 17 +- lang/de/help/exercise/moreinfo.html | 104 +- lang/de/help/exercise/nelements.html | 29 +- lang/de/help/exercise/password.html | 13 +- lang/de/help/exercise/regrading.html | 37 +- lang/de/help/exercise/specimen.html | 11 +- .../exercise/submissionofdescriptions.html | 18 +- lang/de/help/exercise/takeownership.html | 9 +- lang/de/help/exercise/usemax.html | 12 +- lang/de/help/exercise/usepassword.html | 28 +- lang/de/help/forum/allowdiscussions.html | 36 +- lang/de/help/forum/attachment.html | 32 +- lang/de/help/forum/forumtype.html | 26 +- lang/de/help/forum/index.html | 26 +- lang/de/help/forum/maxattachmentsize.html | 12 +- lang/de/help/forum/mods.html | 17 +- lang/de/help/forum/ratings.html | 127 +- lang/de/help/forum/rssarticles.html | 12 +- lang/de/help/forum/rsstype.html | 20 +- lang/de/help/forum/subscription.html | 28 +- lang/de/help/forum/subscription2.html | 55 +- lang/de/help/glossary/aliases.html | 11 +- lang/de/help/glossary/allowcomments.html | 19 +- .../help/glossary/allowduplicatedentries.html | 15 +- lang/de/help/glossary/casesensitive.html | 26 +- lang/de/help/glossary/defaultapproval.html | 13 +- lang/de/help/glossary/description.html | 17 +- lang/de/help/glossary/destination.html | 16 +- lang/de/help/glossary/displayformat.html | 100 +- lang/de/help/glossary/editalways.html | 21 +- lang/de/help/glossary/entbypage.html | 19 +- lang/de/help/glossary/filetoimport.html | 5 +- lang/de/help/glossary/fullmatch.html | 22 +- lang/de/help/glossary/globalglossary.html | 20 +- lang/de/help/glossary/importcategories.html | 9 +- lang/de/help/glossary/index.html | 36 +- lang/de/help/glossary/linkcategory.html | 14 +- lang/de/help/glossary/mainglossary.html | 24 +- lang/de/help/glossary/mods.html | 31 +- lang/de/help/glossary/rssarticles.html | 11 +- lang/de/help/glossary/rsstype.html | 32 +- lang/de/help/glossary/shows.html | 21 +- lang/de/help/glossary/studentcanpost.html | 29 +- lang/de/help/glossary/usedynalink.html | 33 +- lang/de/help/glossary/usedynalinkentry.html | 22 +- lang/de/help/groupmode.html | 45 +- lang/de/help/groupmodeforce.html | 17 +- lang/de/help/guestaccess.html | 43 +- lang/de/help/html.html | 26 +- lang/de/help/index.html | 96 +- lang/de/help/journal/mods.html | 21 +- lang/de/help/label/mods.html | 10 +- lang/de/help/langedit.html | 20 +- lang/de/help/lesson/grade.html | 21 +- lang/de/help/lesson/handlingofretakes.html | 24 +- lang/de/help/lesson/import.html | 189 +- lang/de/help/lesson/jumpto.html | 50 +- lang/de/help/lesson/maxanswers.html | 47 +- lang/de/help/lesson/maxattempts.html | 51 +- lang/de/help/lesson/maxpages.html | 31 +- lang/de/help/lesson/minquestions.html | 81 +- lang/de/help/lesson/mods.html | 31 +- lang/de/help/lesson/nextpageaction.html | 44 +- lang/de/help/lesson/overview.html | 253 +- lang/de/help/lesson/questionoption.html | 47 +- lang/de/help/lesson/questiontypes.html | 229 +- lang/de/help/lesson/retake.html | 38 +- lang/de/help/lesson/useeditor.html | 120 +- lang/de/help/markdown.html | 928 ++ lang/de/help/mods.html | 145 +- lang/de/help/picture.html | 66 +- lang/de/help/questions.html | 158 +- lang/de/help/quiz/attempts.html | 24 +- lang/de/help/quiz/categories.html | 48 +- lang/de/help/quiz/correctanswers.html | 22 +- lang/de/help/quiz/createmultiple.html | 27 +- lang/de/help/quiz/description.html | 28 +- lang/de/help/quiz/discrimination.html | 34 +- lang/de/help/quiz/feedback.html | 15 +- lang/de/help/quiz/formataiken.html | 53 +- lang/de/help/quiz/formatblackboard.html | 15 +- lang/de/help/quiz/formatctm.html | 264 +- lang/de/help/quiz/formatcustom.html | 14 +- lang/de/help/quiz/formatgift.html | 411 +- lang/de/help/quiz/formatmissingword.html | 15 +- lang/de/help/quiz/grademethod.html | 66 +- lang/de/help/quiz/import.html | 161 +- lang/de/help/quiz/index.html | 119 +- lang/de/help/quiz/match.html | 27 +- lang/de/help/quiz/maxgrade.html | 31 +- lang/de/help/quiz/mods.html | 33 +- lang/de/help/quiz/multianswer.html | 190 +- lang/de/help/quiz/multichoice.html | 48 +- lang/de/help/quiz/numerical.html | 34 +- lang/de/help/quiz/questiontypes.html | 211 +- lang/de/help/quiz/random.html | 36 +- lang/de/help/quiz/randomsamatch.html | 40 +- lang/de/help/quiz/repeatattempts.html | 23 +- lang/de/help/quiz/review.html | 17 +- lang/de/help/quiz/shortanswer.html | 31 +- lang/de/help/quiz/shuffleanswers.html | 32 +- lang/de/help/quiz/shufflequestions.html | 22 +- lang/de/help/quiz/timeopen.html | 22 +- lang/de/help/quiz/truefalse.html | 28 +- lang/de/help/reading.html | 25 +- lang/de/help/resource/index.html | 11 +- lang/de/help/resource/mods.html | 9 +- lang/de/help/resource/program.html | 17 +- lang/de/help/resource/resourcetype.html | 45 +- lang/de/help/resource/summary.html | 10 +- lang/de/help/resource/window.html | 116 +- lang/de/help/richtext.html | 360 +- lang/de/help/scales.html | 30 +- lang/de/help/scheduler/mods.html | 13 +- lang/de/help/summaries.html | 17 +- lang/de/help/survey/index.html | 7 +- lang/de/help/survey/mods.html | 17 +- lang/de/help/surveys.html | 325 +- lang/de/help/teachers.html | 31 +- lang/de/help/text.html | 849 +- lang/de/help/textformat.html | 86 +- lang/de/help/uploadusers.html | 94 +- lang/de/help/wiki.html | 382 +- lang/de/help/wiki/checklinks.html | 9 +- lang/de/help/wiki/ewikiacceptbinary.html | 23 +- lang/de/help/wiki/htmlmode.html | 27 +- lang/de/help/wiki/mods.html | 32 +- lang/de/help/wiki/removepages.html | 10 +- .../help/wiki/revertauthorfieldpattern.html | 13 +- lang/de/help/wiki/revertpages.html | 12 +- lang/de/help/wiki/setpageflags.html | 47 +- lang/de/help/wiki/strippages.html | 7 +- lang/de/help/wiki/wikiname.html | 24 +- lang/de/help/wiki/wikitype.html | 102 +- lang/de/help/wiki/wikiusage.html | 251 +- lang/de/help/workshop/Overview.html | 283 +- lang/de/help/workshop/addingacomment.html | 37 +- lang/de/help/workshop/agreeassessments.html | 55 +- .../help/workshop/analysisofassessments.html | 128 +- lang/de/help/workshop/anonymous.html | 19 +- .../help/workshop/assessmentofexamples.html | 20 +- lang/de/help/workshop/assignmenttype.html | 35 +- .../help/workshop/breakdownoffinalgrade.html | 43 +- .../help/workshop/calculatingfinalgrade.html | 84 +- .../workshop/comparisonofassessments.html | 118 +- lang/de/help/workshop/editingacomment.html | 9 +- lang/de/help/workshop/elements.html | 94 +- lang/de/help/workshop/finalgrades.html | 35 +- lang/de/help/workshop/grade.html | 4 +- lang/de/help/workshop/graded.html | 20 +- lang/de/help/workshop/grading.html | 49 +- lang/de/help/workshop/gradingassessments.html | 29 +- lang/de/help/workshop/gradinggrade.html | 39 +- lang/de/help/workshop/gradingstrategy.html | 104 +- lang/de/help/workshop/gradingsubmissions.html | 16 +- lang/de/help/workshop/includeself.html | 16 +- .../help/workshop/includeteachersgrade.html | 16 +- lang/de/help/workshop/index.html | 108 +- lang/de/help/workshop/leaguetable.html | 20 +- lang/de/help/workshop/managing.html | 91 +- lang/de/help/workshop/managing2.html | 206 +- lang/de/help/workshop/mods.html | 16 +- .../nassessmentsofstudentsubmissions.html | 17 +- .../nassessmentsofteachersexamples.html | 16 +- lang/de/help/workshop/nelements.html | 22 +- lang/de/help/workshop/numberofassessors.html | 41 +- lang/de/help/workshop/overallocation.html | 33 +- lang/de/help/workshop/resubmit.html | 26 +- lang/de/help/workshop/selfassessment.html | 19 +- lang/de/help/workshop/showinggrades.html | 30 +- lang/de/help/workshop/specimen.html | 19 +- .../help/workshop/submissionofexamples.html | 28 +- lang/de/help/workshop/teachersgradings.html | 19 +- lang/de/help/workshop/teacherweight.html | 42 +- .../de/help/workshop/ungradedassessments.html | 44 +- .../workshop/ungradedassessments_student.html | 17 +- .../workshop/ungradedassessments_teacher.html | 23 +- lang/de/help/writing.html | 41 +- lang/de/install.php | 16 +- lang/de/journal.php | 12 +- lang/de/label.php | 8 +- lang/de/lesson.php | 189 +- lang/de/moodle.php | 457 +- lang/de/pix.php | 4 +- lang/de/questionnaire.php | 14 +- lang/de/quiz.php | 203 +- lang/de/resource.php | 43 +- lang/de/scheduler.php | 10 +- lang/de/scorm.php | 46 +- lang/de/survey.php | 215 +- lang/de/text.html | 529 + lang/de/webquest.php | 16 +- lang/de/wiki.php | 71 +- lang/de/workshop.php | 267 +- lang/de_du/README.txt | 1 - lang/de_du/activitynames.php | 10 - lang/de_du/admin.php | 14 - lang/de_du/auth.php | 94 +- lang/de_du/calendar.php | 1 + lang/de_du/moodle.php | 691 +- lang/de_du/quiz.php | 267 +- lang/de_du/resource.php | 51 +- lang/de_du/wiki.php | 152 - lang/de_du/workshop.php | 288 +- lang/el/block_course_list.php | 9 - lang/el/block_course_summary.php | 6 - lang/el/block_online_users.php | 6 - lang/el/block_section_links.php | 9 - lang/el/block_social_activities.php | 5 - lang/el/docs/background.html | 119 +- lang/el/docs/coding.html | 512 +- lang/el/docs/credits.html | 284 +- lang/el/docs/cvs.html | 38 +- lang/el/docs/developer.html | 71 +- lang/el/docs/docstyles.css | 134 - lang/el/docs/faq.html | 1562 +-- lang/el/docs/features.html | 299 +- lang/el/docs/future.html | 63 +- lang/el/docs/glossary.html | 571 +- lang/el/docs/install.html | 177 +- lang/el/docs/installamp.html | 552 +- lang/el/docs/intro.html | 49 +- lang/el/docs/licence.html | 98 +- lang/el/docs/other.html | 66 +- lang/el/docs/release.html | 414 + lang/el/docs/teacher.html | 129 +- lang/el/docs/upgrade.html | 31 +- lang/el/help/assignment/assignmenttype.html | 12 +- lang/el/help/assignment/index.html | 6 +- lang/el/help/assignment/mods.html | 9 +- lang/el/help/assignment/resubmit.html | 12 +- lang/el/help/chat/chatting.html | 32 +- lang/el/help/chat/index.html | 5 +- lang/el/help/chat/mods.html | 10 +- lang/el/help/choice/index.html | 5 +- lang/el/help/choice/mods.html | 9 +- lang/el/help/choice/options.html | 8 +- lang/el/help/cookies.html | 18 +- lang/el/help/courseavailability.html | 11 +- lang/el/help/coursecategory.html | 12 +- lang/el/help/courseformats.html | 20 +- lang/el/help/coursefullname.html | 4 +- lang/el/help/coursegrades.html | 18 +- lang/el/help/coursenewsitems.html | 14 +- lang/el/help/coursenumsections.html | 18 +- lang/el/help/courserecent.html | 15 +- lang/el/help/courseshortname.html | 6 +- lang/el/help/coursestartdate.html | 22 +- lang/el/help/enrolmentkey.html | 22 +- lang/el/help/forum/allowdiscussions.html | 18 +- lang/el/help/forum/attachment.html | 19 +- lang/el/help/forum/forumtype.html | 22 +- lang/el/help/forum/index.html | 10 +- lang/el/help/forum/mods.html | 12 +- lang/el/help/forum/ratings.html | 4 +- lang/el/help/forum/subscription.html | 18 +- lang/el/help/guestaccess.html | 22 +- lang/el/help/html.html | 16 +- lang/el/help/index.html | 49 +- lang/el/help/journal/mods.html | 12 +- lang/el/help/langedit.html | 18 +- lang/el/help/mods.html | 58 +- lang/el/help/picture.html | 30 +- lang/el/help/questions.html | 22 +- lang/el/help/quiz/attempts.html | 10 +- lang/el/help/quiz/categories.html | 18 +- lang/el/help/quiz/correctanswers.html | 6 +- lang/el/help/quiz/description.html | 9 +- lang/el/help/quiz/feedback.html | 6 +- lang/el/help/quiz/formatblackboard.html | 5 +- lang/el/help/quiz/formatcustom.html | 4 +- lang/el/help/quiz/formatmissingword.html | 4 +- lang/el/help/quiz/grademethod.html | 38 +- lang/el/help/quiz/index.html | 43 +- lang/el/help/quiz/maxgrade.html | 14 +- lang/el/help/quiz/mods.html | 12 +- lang/el/help/quiz/multianswer.html | 120 +- lang/el/help/quiz/multichoice.html | 18 +- lang/el/help/quiz/numerical.html | 13 +- lang/el/help/quiz/questiontypes.html | 50 +- lang/el/help/quiz/random.html | 2 +- lang/el/help/quiz/repeatattempts.html | 9 +- lang/el/help/quiz/review.html | 12 +- lang/el/help/quiz/shortanswer.html | 14 +- lang/el/help/quiz/timeopen.html | 10 +- lang/el/help/quiz/truefalse.html | 10 +- lang/el/help/reading.html | 18 +- lang/el/help/resource/index.html | 8 +- lang/el/help/resource/mods.html | 9 +- lang/el/help/resource/program.html | 18 +- lang/el/help/resource/resourcetype.html | 33 +- lang/el/help/resource/scales.html | 22 +- lang/el/help/resource/summary.html | 10 +- lang/el/help/richtext.html | 104 +- lang/el/help/survey/index.html | 6 +- lang/el/help/survey/mods.html | 9 +- lang/el/help/surveys.html | 56 +- lang/el/help/teachers.html | 12 +- lang/el/help/text.html | 94 +- lang/el/help/textformat.html | 58 +- .../help/workshop/assessmentofexamples.html | 11 +- lang/el/help/workshop/gradingsubmissions.html | 12 +- lang/el/help/workshop/index.html | 159 +- lang/el/help/workshop/mods.html | 9 +- .../help/workshop/submissionofexamples.html | 24 +- .../workshop/ungradedassessments_student.html | 10 +- .../workshop/ungradedassessments_teacher.html | 18 +- lang/el/help/writing.html | 26 +- lang/el/moodle.php | 1426 ++- lang/el/quiz.php | 12 +- lang/el/workshop.php | 6 +- lang/en/admin.php | 120 +- lang/en/appointment.php | 2 +- lang/en/assignment.php | 16 +- lang/en/attendance.php | 2 +- lang/en/auth.php | 92 +- lang/en/block_course_list.php | 4 +- lang/en/block_course_summary.php | 7 +- lang/en/block_glossary_random.php | 23 - lang/en/block_html.php | 1 - lang/en/block_online_users.php | 4 +- lang/en/block_rss_client.php | 20 +- lang/en/block_section_links.php | 4 +- lang/en/block_social_activities.php | 2 +- lang/en/calendar.php | 2 - lang/en/chat.php | 10 +- lang/en/choice.php | 19 +- lang/en/countries.php | 2 +- lang/en/dialogue.php | 24 +- lang/en/docs/background.html | 19 +- lang/en/docs/coding.html | 68 +- lang/en/docs/credits.html | 198 +- lang/en/docs/cvs.html | 130 +- lang/en/docs/developer.html | 86 +- lang/en/docs/docstyles.css | 1 - lang/en/docs/faq.html | 30 +- lang/en/docs/features.html | 15 +- lang/en/docs/future.html | 68 +- lang/en/docs/install.html | 462 +- lang/en/docs/installamp.html | 33 +- lang/en/docs/intro.html | 19 +- lang/en/docs/licence.html | 39 +- lang/en/docs/other.html | 12 +- lang/en/docs/philosophy.html | 27 +- lang/en/docs/release.html | 287 +- lang/en/docs/releaseold.html | 173 +- lang/en/docs/teacher.html | 81 +- lang/en/docs/translation.html | 102 +- lang/en/docs/upgrade.html | 27 +- lang/en/editor.php | 19 +- lang/en/enrol_database.php | 2 +- lang/en/enrol_flatfile.php | 2 +- lang/en/enrol_internal.php | 2 +- lang/en/enrol_paypal.php | 2 +- lang/en/error.php | 7 +- lang/en/exercise.php | 362 +- lang/en/fonts/default.ttf | Bin 65932 -> 134188 bytes lang/en/forum.php | 43 +- lang/en/glossary.php | 31 +- lang/en/grades.php | 125 - lang/en/help/advanced_markdown.html | 140 - lang/en/help/advancedsettings.html | 8 - lang/en/help/assignment/assignmenttype.html | 12 +- lang/en/help/assignment/index.html | 6 +- lang/en/help/assignment/mods.html | 14 +- lang/en/help/assignment/resubmit.html | 10 +- lang/en/help/attendance/index.html | 2 +- lang/en/help/attendance/mods.html | 8 +- lang/en/help/chat/chatting.html | 2 +- lang/en/help/chat/index.html | 2 +- lang/en/help/chat/mods.html | 18 +- lang/en/help/choice/index.html | 5 +- lang/en/help/choice/limit.html | 11 - lang/en/help/choice/mods.html | 14 +- lang/en/help/choice/options.html | 9 +- lang/en/help/choice/timerestrict.html | 2 +- lang/en/help/courseavailability.html | 2 +- lang/en/help/coursecategory.html | 12 +- lang/en/help/courseformats.html | 20 +- lang/en/help/coursefullname.html | 4 +- lang/en/help/coursegrades.html | 2 +- lang/en/help/coursehiddensections.html | 2 +- lang/en/help/courseidnumber.html | 4 +- lang/en/help/coursenewsitems.html | 14 +- lang/en/help/coursenumsections.html | 18 +- lang/en/help/courserecent.html | 16 +- lang/en/help/coursereports.html | 2 +- lang/en/help/courseshortname.html | 6 +- lang/en/help/coursestartdate.html | 22 +- lang/en/help/courseuploadsize.html | 10 +- lang/en/help/dialogue/index.html | 22 +- lang/en/help/dialogue/info.html | 3 +- lang/en/help/dialogue/maildefault.html | 2 +- lang/en/help/dialogue/mods.html | 16 +- lang/en/help/directorypaths.html | 8 +- lang/en/help/emoticons.html | 88 +- lang/en/help/enrolmentkey.html | 22 +- lang/en/help/enrolperiod.html | 2 - lang/en/help/exercise/administration.html | 38 +- .../exercise/comparisonofassessments.html | 88 +- lang/en/help/exercise/elements.html | 106 +- lang/en/help/exercise/finalgrades.html | 14 +- lang/en/help/exercise/grading.html | 70 +- lang/en/help/exercise/gradinggrade.html | 2 +- lang/en/help/exercise/gradingstrategy.html | 155 +- lang/en/help/exercise/index.html | 22 +- lang/en/help/exercise/leaguetable.html | 2 +- lang/en/help/exercise/leaguetablenames.html | 2 +- lang/en/help/exercise/managing.html | 134 +- lang/en/help/exercise/mods.html | 10 +- lang/en/help/exercise/moreinfo.html | 138 +- lang/en/help/exercise/nelements.html | 30 +- lang/en/help/exercise/password.html | 6 +- lang/en/help/exercise/regrading.html | 22 +- lang/en/help/exercise/specimen.html | 16 +- .../exercise/submissionofdescriptions.html | 6 +- lang/en/help/exercise/takeownership.html | 20 +- lang/en/help/exercise/usepassword.html | 6 +- lang/en/help/forum/allowdiscussions.html | 18 +- lang/en/help/forum/attachment.html | 22 +- lang/en/help/forum/forumtype.html | 18 +- lang/en/help/forum/index.html | 2 +- lang/en/help/forum/maxattachmentsize.html | 10 +- lang/en/help/forum/mods.html | 16 +- lang/en/help/forum/ratings.html | 132 +- lang/en/help/forum/rssarticles.html | 10 +- lang/en/help/forum/rsstype.html | 18 +- lang/en/help/forum/subscription.html | 20 +- lang/en/help/forum/subscription2.html | 26 +- lang/en/help/glossary/aliases.html | 4 +- lang/en/help/glossary/aliases2.html | 9 - lang/en/help/glossary/allowcomments.html | 3 +- .../help/glossary/allowduplicatedentries.html | 2 +- lang/en/help/glossary/casesensitive.html | 4 +- lang/en/help/glossary/defaultapproval.html | 2 +- lang/en/help/glossary/description.html | 4 +- lang/en/help/glossary/destination.html | 4 +- lang/en/help/glossary/displayformat.html | 15 +- lang/en/help/glossary/editalways.html | 16 +- lang/en/help/glossary/entbypage.html | 4 +- lang/en/help/glossary/filetoimport.html | 4 +- lang/en/help/glossary/fullmatch.html | 4 +- lang/en/help/glossary/globalglossary.html | 2 +- lang/en/help/glossary/importcategories.html | 4 +- lang/en/help/glossary/index.html | 40 +- lang/en/help/glossary/linkcategory.html | 4 +- lang/en/help/glossary/mainglossary.html | 4 +- lang/en/help/glossary/mods.html | 14 +- lang/en/help/glossary/rssarticles.html | 8 +- lang/en/help/glossary/rsstype.html | 16 +- lang/en/help/glossary/shows.html | 4 +- lang/en/help/glossary/studentcanpost.html | 4 +- lang/en/help/glossary/usedynalink.html | 10 +- lang/en/help/glossary/usedynalinkentry.html | 9 - lang/en/help/groupmode.html | 5 +- lang/en/help/groupmodeforce.html | 2 +- lang/en/help/guestaccess.html | 63 +- lang/en/help/hideoptions.html | 7 + lang/en/help/html.html | 20 +- lang/en/help/index.html | 70 +- lang/en/help/journal/mods.html | 10 +- lang/en/help/label/mods.html | 11 +- lang/en/help/langedit.html | 16 +- lang/en/help/lesson/bgcolor.html | 4 +- lang/en/help/lesson/custom.html | 7 +- lang/en/help/lesson/deleteattempts.html | 4 +- lang/en/help/lesson/displayleft.html | 6 +- lang/en/help/lesson/height.html | 4 +- lang/en/help/lesson/highscores.html | 6 +- lang/en/help/lesson/import.html | 90 +- lang/en/help/lesson/index.html | 1 - lang/en/help/lesson/jumpto.html | 28 +- lang/en/help/lesson/lessondefault.html | 6 +- lang/en/help/lesson/maxattempts.html | 4 +- lang/en/help/lesson/maxhighscores.html | 4 +- lang/en/help/lesson/maxtime.html | 4 +- lang/en/help/lesson/minquestions.html | 20 +- lang/en/help/lesson/modattempts.html | 4 +- lang/en/help/lesson/mods.html | 19 +- lang/en/help/lesson/overview.html | 158 +- lang/en/help/lesson/password.html | 4 +- lang/en/help/lesson/practice.html | 4 +- lang/en/help/lesson/questionoption.html | 2 +- lang/en/help/lesson/questiontypes.html | 157 +- lang/en/help/lesson/retake.html | 16 +- lang/en/help/lesson/review.html | 6 +- lang/en/help/lesson/slideshow.html | 10 +- lang/en/help/lesson/timed.html | 8 +- lang/en/help/lesson/tree.html | 6 +- lang/en/help/lesson/usepassword.html | 4 +- lang/en/help/lesson/width.html | 4 +- lang/en/help/markdown.html | 1145 +- lang/en/help/mods.html | 6 +- lang/en/help/picture.html | 30 +- lang/en/help/questionnaire/qmanage.html | 6 +- lang/en/help/questionnaire/qtype.html | 6 +- .../help/questionnaire/questionnaireid.html | 6 +- .../en/help/questionnaire/respondenttype.html | 8 +- lang/en/help/questions.html | 258 +- lang/en/help/quiz/attempts.html | 8 +- lang/en/help/quiz/calculated.html | 28 +- lang/en/help/quiz/categories.html | 26 +- lang/en/help/quiz/correctanswers.html | 6 +- lang/en/help/quiz/createmultiple.html | 12 +- lang/en/help/quiz/decimalpoints.html | 4 - lang/en/help/quiz/description.html | 21 +- lang/en/help/quiz/discrimination.html | 10 +- lang/en/help/quiz/export.html | 30 +- lang/en/help/quiz/feedback.html | 6 +- lang/en/help/quiz/formataiken.html | 2 +- lang/en/help/quiz/formatblackboard.html | 2 +- lang/en/help/quiz/formatctm.html | 64 +- lang/en/help/quiz/formatcustom.html | 2 +- lang/en/help/quiz/formatgift.html | 4 +- lang/en/help/quiz/formatmissingword.html | 2 +- lang/en/help/quiz/formatwebct.html | 8 +- lang/en/help/quiz/grademethod.html | 38 +- lang/en/help/quiz/import.html | 130 +- lang/en/help/quiz/index.html | 61 +- lang/en/help/quiz/match.html | 8 +- lang/en/help/quiz/maxgrade.html | 14 +- lang/en/help/quiz/mods.html | 20 +- lang/en/help/quiz/multianswer.html | 49 +- lang/en/help/quiz/multichoice.html | 18 +- lang/en/help/quiz/numerical.html | 6 +- lang/en/help/quiz/questiondatasets.html | 22 +- lang/en/help/quiz/questiontypes.html | 118 +- lang/en/help/quiz/random.html | 27 +- lang/en/help/quiz/randomsamatch.html | 20 +- lang/en/help/quiz/repeatattempts.html | 4 +- lang/en/help/quiz/requiresubnet.html | 16 +- lang/en/help/quiz/review.html | 8 +- lang/en/help/quiz/shortanswer.html | 20 +- lang/en/help/quiz/shuffleanswers.html | 2 +- lang/en/help/quiz/shufflequestions.html | 2 +- lang/en/help/quiz/timelimit.html | 6 +- lang/en/help/quiz/timeopen.html | 6 +- lang/en/help/quiz/truefalse.html | 10 +- lang/en/help/reading.html | 39 +- lang/en/help/resource/index.html | 19 +- lang/en/help/resource/mods.html | 14 +- lang/en/help/resource/parameters.html | 6 +- lang/en/help/resource/window.html | 58 - lang/en/help/richtext.html | 132 +- lang/en/help/scorm/mods.html | 9 +- lang/en/help/search.html | 47 - lang/en/help/summaries.html | 30 +- lang/en/help/survey/index.html | 2 +- lang/en/help/survey/mods.html | 10 +- lang/en/help/surveys.html | 58 +- lang/en/help/teachers.html | 29 +- lang/en/help/text.html | 128 +- lang/en/help/textformat.html | 99 +- lang/en/help/uploadusers.html | 6 +- lang/en/help/wiki.html | 155 + lang/en/help/wiki/checklinks.html | 6 +- lang/en/help/wiki/ewikiacceptbinary.html | 18 +- lang/en/help/wiki/howtowiki.html | 390 +- lang/en/help/wiki/htmlmode.html | 6 +- lang/en/help/wiki/index.html | 30 +- lang/en/help/wiki/initialcontent.html | 8 +- lang/en/help/wiki/mods.html | 19 +- lang/en/help/wiki/removepages.html | 6 +- .../help/wiki/revertauthorfieldpattern.html | 6 +- lang/en/help/wiki/revertpages.html | 6 +- lang/en/help/wiki/setpageflags.html | 8 +- lang/en/help/wiki/strippages.html | 4 +- lang/en/help/wiki/studentadminoptions.html | 6 +- lang/en/help/wiki/wikilinkoptions.html | 6 +- lang/en/help/wiki/wikiname.html | 8 +- lang/en/help/wiki/wikitype.html | 12 +- lang/en/help/wiki/wikiusage.html | 30 +- lang/en/help/workshop/addcommenttobank.html | 4 +- lang/en/help/workshop/addingacomment.html | 36 +- lang/en/help/workshop/agreeassessments.html | 29 +- .../help/workshop/analysisofassessments.html | 17 +- lang/en/help/workshop/anonymous.html | 14 +- .../help/workshop/assessmentofexamples.html | 25 +- lang/en/help/workshop/assignmenttype.html | 35 +- .../help/workshop/breakdownoffinalgrade.html | 22 +- .../help/workshop/calculatingfinalgrade.html | 102 +- .../workshop/comparisonofassessments.html | 86 +- lang/en/help/workshop/editingacomment.html | 6 +- lang/en/help/workshop/elements.html | 100 +- lang/en/help/workshop/finalgrades.html | 38 +- lang/en/help/workshop/graded.html | 14 + lang/en/help/workshop/grading.html | 54 +- lang/en/help/workshop/gradingassessments.html | 44 +- lang/en/help/workshop/gradinggrade.html | 26 +- lang/en/help/workshop/gradingstrategy.html | 142 +- lang/en/help/workshop/gradingsubmissions.html | 26 +- lang/en/help/workshop/includeself.html | 10 +- .../help/workshop/includeteachersgrade.html | 14 +- lang/en/help/workshop/index.html | 56 +- lang/en/help/workshop/leaguetable.html | 15 +- lang/en/help/workshop/managing.html | 202 +- lang/en/help/workshop/managing2.html | 154 +- lang/en/help/workshop/mods.html | 9 +- .../nassessmentsofstudentsubmissions.html | 18 +- .../nassessmentsofteachersexamples.html | 12 +- lang/en/help/workshop/nattachments.html | 20 +- lang/en/help/workshop/nelements.html | 14 +- lang/en/help/workshop/numberofassessors.html | 30 + lang/en/help/workshop/overallocation.html | 40 +- lang/en/help/workshop/regrading.html | 16 +- lang/en/help/workshop/resubmit.html | 20 +- lang/en/help/workshop/selfassessment.html | 13 +- lang/en/help/workshop/showinggrades.html | 14 +- lang/en/help/workshop/specimen.html | 18 +- .../help/workshop/submissionofexamples.html | 55 +- lang/en/help/workshop/teachersgradings.html | 13 + lang/en/help/workshop/teacherweight.html | 22 +- .../en/help/workshop/ungradedassessments.html | 10 +- .../workshop/ungradedassessments_student.html | 19 +- .../workshop/ungradedassessments_teacher.html | 10 +- lang/en/help/workshop/usepassword.html | 25 +- lang/en/help/writing.html | 66 +- lang/en/hotpot.php | 2 +- lang/en/install.php | 290 +- lang/en/journal.php | 3 +- lang/en/label.php | 2 +- lang/en/lesson.php | 336 +- lang/en/message.php | 2 - lang/en/moodle.php | 376 +- lang/en/pix.php | 2 +- lang/en/questionnaire.php | 2 +- lang/en/quiz.php | 70 +- lang/en/resource.php | 23 +- lang/en/scorm.php | 6 +- lang/en/survey.php | 80 +- lang/en/timezones.php | 376 - lang/en/webquest.php | 2 +- lang/en/wiki.php | 11 +- lang/en/workshop.php | 139 +- lang/en_us/assignment.php | 54 + lang/en_us/attendance.php | 68 + lang/en_us/auth.php | 68 + lang/en_us/chat.php | 41 + lang/en_us/choice.php | 21 + lang/{ka_utf8 => en_us}/countries.php | 4 +- lang/en_us/editor.php | 106 + lang/en_us/forum.php | 133 + lang/en_us/glossary.php | 156 + lang/en_us/help/enrolmentkey.html | 28 +- lang/en_us/help/guestaccess.html | 42 +- lang/en_us/journal.php | 39 + lang/en_us/label.php | 9 + lang/en_us/moodle.php | 845 +- lang/en_us/quiz.php | 159 + lang/en_us/resource.php | 50 + lang/en_us/survey.php | 205 + lang/en_us/workshop.php | 241 + lang/es/README.txt | 52 +- lang/es/admin.php | 114 +- lang/es/assignment.php | 16 +- lang/es/auth.php | 61 +- lang/es/block_course_summary.php | 10 +- lang/es/block_glossary_random.php | 28 - lang/es/block_html.php | 11 - lang/es/block_quiz_results.php | 28 - lang/es/block_rss_client.php | 39 - lang/es/book.php | 60 +- lang/es/calendar.php | 8 +- lang/es/chat.php | 7 +- lang/es/choice.php | 3 +- lang/es/countries.php | 3 +- lang/es/dialogue.php | 3 +- lang/es/docs/README.txt | 2 +- lang/es/docs/background.html | 17 +- lang/es/docs/coding.html | 90 +- lang/es/docs/credits.html | 252 +- lang/es/docs/cvs.html | 581 +- lang/es/docs/developer.html | 87 +- lang/es/docs/docstyles.css | 1 - lang/es/docs/faq.html | 210 +- lang/es/docs/features.html | 48 +- lang/es/docs/future.html | 124 +- lang/es/docs/glossary.html | 254 + lang/es/docs/install.html | 833 +- lang/es/docs/installamp.html | 48 +- lang/es/docs/intro.html | 31 +- lang/es/docs/licence.html | 178 +- lang/es/docs/other.html | 68 +- lang/es/docs/philosophy.html | 31 +- lang/es/docs/release.html | 1140 +- lang/es/docs/releaseold.html | 631 +- lang/es/docs/teacher.html | 148 +- lang/es/docs/translation.html | 244 +- lang/es/docs/upgrade.html | 47 +- lang/es/editor.php | 22 +- lang/es/enrol_flatfile.php | 14 +- lang/es/enrol_internal.php | 7 +- lang/es/enrol_paypal.php | 4 +- lang/es/error.php | 15 +- lang/es/exercise.php | 40 +- lang/es/forum.php | 34 +- lang/es/glossary.php | 25 +- lang/es/grades.php | 91 - lang/es/help/cookies.html | 19 +- lang/es/help/courseavailability.html | 5 +- lang/es/help/coursecategory.html | 7 +- lang/es/help/courseformats.html | 7 +- lang/es/help/coursefullname.html | 2 +- lang/es/help/coursegrades.html | 3 +- lang/es/help/coursenewsitems.html | 6 +- lang/es/help/coursenumsections.html | 9 +- lang/es/help/courserecent.html | 14 +- lang/es/help/coursereports.html | 7 +- lang/es/help/courseshortname.html | 2 +- lang/es/help/coursestartdate.html | 16 +- lang/es/help/courseuploadsize.html | 10 +- lang/es/help/directorypaths.html | 12 +- lang/es/help/enrolmentkey.html | 8 +- lang/es/help/exercise/index.html | 42 +- lang/es/help/forum/ratings.html | 2 +- lang/es/help/glossary/allowcomments.html | 3 +- lang/es/help/glossary/displayformat.html | 11 +- lang/es/help/glossary/index.html | 11 +- lang/es/help/glossary/usedynalink.html | 19 +- lang/es/help/groupmode.html | 8 +- lang/es/help/groupmodeforce.html | 6 +- lang/es/help/guestaccess.html | 14 +- lang/es/help/hideoptions.html | 4 - lang/es/help/html.html | 16 +- lang/es/help/index.html | 115 +- lang/es/help/langedit.html | 5 +- lang/es/help/lesson/import.html | 32 +- lang/es/help/lesson/jumpto.html | 2 +- lang/es/help/lesson/maxattempts.html | 5 +- lang/es/help/lesson/overview.html | 8 +- lang/es/help/lesson/questionoption.html | 6 +- lang/es/help/lesson/questiontypes.html | 11 +- lang/es/help/lesson/retake.html | 6 +- lang/es/help/lesson/useeditor.html | 10 +- lang/es/help/mods.html | 69 +- lang/es/help/picture.html | 20 +- lang/es/help/questions.html | 6 +- lang/es/help/quiz/formatctm.html | 6 +- lang/es/help/quiz/formatgift.html | 72 +- lang/es/help/quiz/formatmissingword.html | 2 +- lang/es/help/quiz/import.html | 119 +- lang/es/help/quiz/index.html | 58 +- lang/es/help/quiz/multianswer.html | 22 +- lang/es/help/quiz/questiontypes.html | 57 +- lang/es/help/quiz/random.html | 2 +- lang/es/help/quiz/review.html | 2 +- lang/es/help/quiz/shuffleanswers.html | 4 +- lang/es/help/reading.html | 5 +- lang/es/help/richtext.html | 12 +- lang/es/help/summaries.html | 6 +- lang/es/help/surveys.html | 68 +- lang/es/help/teachers.html | 24 +- lang/es/help/text.html | 17 +- lang/es/help/textformat.html | 62 +- lang/es/help/uploadusers.html | 18 +- lang/es/help/wiki.html | 179 +- lang/es/help/wiki/ewikiacceptbinary.html | 2 +- lang/es/help/wiki/wikiname.html | 2 +- lang/es/help/wiki/wikiusage.html | 18 +- .../help/workshop/analysisofassessments.htm | 107 + .../help/workshop/analysisofassessments.html | 18 +- .../help/workshop/calculatingfinalgrade.html | 5 +- lang/es/help/workshop/elements.html | 5 +- lang/es/help/workshop/grading.html | 2 +- lang/es/help/workshop/gradingassessments.html | 12 +- lang/es/help/workshop/gradingstrategy.html | 2 +- lang/es/help/workshop/managing.html | 4 +- lang/es/help/workshop/numberofassessors.html | 4 +- .../workshop/ungradedassessments_teacher.html | 5 +- lang/es/help/writing.html | 6 +- lang/es/install.php | 87 +- lang/es/lesson.php | 171 +- lang/es/message.php | 64 - lang/es/moodle.php | 321 +- lang/es/pix.php | 8 +- lang/es/questionnaire.php | 12 +- lang/es/quiz.php | 126 +- lang/es/resource.php | 21 +- lang/es/scorm.php | 6 +- lang/es/survey.php | 2 +- lang/es/tui.php | 40 - lang/es/wiki.php | 16 +- lang/es/workshop.php | 101 +- lang/es_ar/moodle.php | 19 +- lang/es_es/auth.php | 2 +- lang/es_es/forum.php | 12 +- lang/es_es/journal.php | 9 +- lang/es_es/moodle.php | 62 +- lang/es_es/pgassignment.php | 528 +- lang/es_es/resource.php | 2 +- lang/es_es/survey.php | 72 +- lang/es_es/workshop.php | 10 +- lang/es_mx/moodle.php | 11 +- lang/et/README | 7 +- lang/et/admin.php | 22 +- lang/et/algebra.php | 14 +- lang/et/assignment.php | 106 +- lang/et/attendance.php | 143 +- lang/et/auth.php | 133 +- lang/et/censor.php | 14 +- lang/et/chat.php | 86 +- lang/et/choice.php | 55 +- lang/et/countries.php | 490 +- lang/et/dialogue.php | 140 +- lang/et/editor.php | 206 +- lang/et/error.php | 38 +- lang/et/exercise.php | 314 +- lang/et/forum.php | 285 +- lang/et/glossary.php | 314 +- lang/et/help/assignment/assignmenttype.html | 13 + lang/et/help/assignment/index.html | 5 + lang/et/help/assignment/mods.html | 7 + lang/et/help/assignment/resubmit.html | 9 + lang/et/help/chat/chatting.html | 26 + lang/et/help/chat/index.html | 4 + lang/et/help/chat/mods.html | 9 + lang/et/help/choice/index.html | 4 + lang/et/help/choice/mods.html | 7 + lang/et/help/choice/options.html | 7 + lang/et/help/coursecategory.html | 30 +- lang/et/help/courseformats.html | 42 +- lang/et/help/coursefullname.html | 6 +- lang/et/help/coursenewsitems.html | 44 +- lang/et/help/coursenumsections.html | 34 +- lang/et/help/courserecent.html | 40 +- lang/et/help/courseshortname.html | 12 +- lang/et/help/coursestartdate.html | 36 +- lang/{hu => et}/help/emoticons.html | 238 +- lang/et/help/enrolmentkey.html | 58 +- lang/et/help/forum/allowdiscussions.html | 20 + lang/et/help/forum/attachment.html | 21 + lang/et/help/forum/forumtype.html | 16 + lang/et/help/forum/index.html | 8 + lang/et/help/forum/mods.html | 8 + lang/et/help/forum/ratings.html | 44 + lang/et/help/forum/subscription.html | 18 + lang/et/help/guestaccess.html | 54 +- lang/et/help/html.html | 38 +- lang/et/help/index.html | 46 + {enrol => lang/et/help/journal}/index.html | 2 +- lang/et/help/journal/mods.html | 10 + lang/et/help/langedit.html | 30 +- lang/et/help/mods.html | 110 +- lang/et/help/picture.html | 82 +- lang/et/help/questions.html | 234 +- lang/et/help/quiz/attempts.html | 6 + lang/et/help/quiz/categories.html | 17 + lang/et/help/quiz/correctanswers.html | 6 + lang/et/help/quiz/createmultiple.html | 10 + lang/et/help/quiz/description.html | 7 + lang/et/help/quiz/feedback.html | 5 + lang/et/help/quiz/formatblackboard.html | 3 + lang/et/help/quiz/formatcustom.html | 3 + lang/et/help/quiz/formatmissingword.html | 3 + lang/et/help/quiz/grademethod.html | 25 + lang/et/help/quiz/import.html | 56 + lang/et/help/quiz/index.html | 30 + lang/et/help/quiz/match.html | 11 + lang/et/help/quiz/maxgrade.html | 11 + lang/et/help/quiz/mods.html | 11 + lang/et/help/quiz/multianswer.html | 44 + lang/et/help/quiz/multichoice.html | 19 + lang/et/help/quiz/numerical.html | 16 + lang/et/help/quiz/questiontypes.html | 50 +- lang/et/help/quiz/random.html | 18 + lang/et/help/quiz/randomsamatch.html | 14 + lang/et/help/quiz/repeatattempts.html | 5 + lang/et/help/quiz/review.html | 6 + lang/et/help/quiz/shortanswer.html | 10 + lang/et/help/quiz/shuffleanswers.html | 13 + lang/et/help/quiz/shufflequestions.html | 11 + lang/et/help/quiz/timeopen.html | 5 + lang/et/help/quiz/truefalse.html | 11 + lang/et/help/reading.html | 32 +- lang/et/help/resource/index.html | 7 + lang/et/help/resource/mods.html | 8 + lang/et/help/resource/program.html | 17 + lang/et/help/resource/resourcetype.html | 60 +- lang/et/help/resource/summary.html | 20 +- lang/et/help/richtext.html | 336 +- lang/et/help/scales.html | 18 + lang/et/help/summaries.html | 10 + lang/et/help/survey/index.html | 5 + lang/et/help/survey/mods.html | 8 + lang/et/help/surveys.html | 220 +- lang/et/help/teachers.html | 54 +- lang/et/help/text.html | 350 +- lang/et/help/textformat.html | 86 +- lang/et/help/wiki.html | 146 + lang/et/help/workshop/addingacomment.html | 20 + lang/et/help/workshop/agreeassessments.html | 35 + lang/et/help/workshop/anonymous.html | 14 + .../help/workshop/assessmentofexamples.html | 13 + lang/et/help/workshop/assignmenttype.html | 21 + .../help/workshop/breakdownoffinalgrade.html | 23 + .../help/workshop/calculatingfinalgrade.html | 54 + lang/et/help/workshop/editingacomment.html | 6 + lang/et/help/workshop/elements.html | 65 + lang/et/help/workshop/finalgrades.html | 21 + lang/et/help/workshop/graded.html | 14 + lang/et/help/workshop/grading.html | 32 + lang/et/help/workshop/gradingassessments.html | 24 + lang/et/help/workshop/gradingstrategy.html | 73 + lang/et/help/workshop/gradingsubmissions.html | 12 + lang/et/help/workshop/includeself.html | 13 + lang/et/help/workshop/index.html | 31 + lang/et/help/workshop/managing.html | 72 + lang/et/help/workshop/mods.html | 9 + .../nassessmentsofstudentsubmissions.html | 13 + .../nassessmentsofteachersexamples.html | 12 + lang/et/help/workshop/nelements.html | 15 + lang/et/help/workshop/numberofassessors.html | 30 + lang/et/help/workshop/resubmit.html | 19 + lang/et/help/workshop/selfassessment.html | 12 + lang/et/help/workshop/showinggrades.html | 15 + lang/et/help/workshop/specimen.html | 11 + .../help/workshop/submissionofexamples.html | 28 + lang/et/help/workshop/teachersgradings.html | 13 + .../workshop/ungradedassessments_student.html | 11 + .../workshop/ungradedassessments_teacher.html | 18 + lang/et/help/writing.html | 66 +- lang/et/journal.php | 71 +- lang/et/label.php | 18 +- lang/et/lesson.php | 157 +- lang/et/mediaplugin.php | 14 +- lang/et/moodle.php | 1787 +-- lang/et/multilang.php | 14 +- lang/et/pix.php | 52 +- lang/et/quiz.php | 401 +- lang/et/resource.php | 128 +- lang/et/survey.php | 418 +- lang/et/tex.php | 14 +- lang/et/webquest.php | 16 +- lang/et/workshop.php | 478 +- lang/eu/activitynames.php | 5 + lang/eu/assignment.php | 6 +- lang/eu/auth.php | 104 +- lang/eu/block_course_list.php | 8 +- lang/eu/block_online_users.php | 9 +- lang/eu/block_section_links.php | 9 +- lang/eu/calendar.php | 13 +- lang/eu/chat.php | 78 +- lang/eu/choice.php | 24 +- lang/eu/countries.php | 227 +- lang/eu/docs/teacher.html | 305 - lang/eu/forum.php | 238 +- lang/eu/glossary.php | 133 +- lang/eu/help/appointment/mods.html | 10 +- lang/eu/help/assignment/assignmenttype.html | 11 +- lang/eu/help/assignment/index.html | 4 +- lang/eu/help/assignment/mods.html | 6 +- lang/eu/help/attendance/autoattend.html | 2 +- lang/eu/help/attendance/dynsection.html | 6 +- lang/eu/help/attendance/hours.html | 6 +- lang/eu/help/attendance/index.html | 12 +- lang/eu/help/attendance/maxgrade.html | 9 +- lang/eu/help/attendance/mods.html | 10 +- lang/eu/help/book/customtitles.html | 2 +- lang/eu/help/book/disableprinting.html | 2 +- lang/eu/help/book/edit.html | 2 +- lang/eu/help/book/faq.html | 2 +- lang/eu/help/book/import.html | 2 +- lang/eu/help/book/index.html | 14 +- lang/eu/help/book/mods.html | 2 +- lang/eu/help/book/numberingtype.html | 11 +- lang/eu/help/book/summary.html | 5 +- lang/eu/help/chat/index.html | 2 +- lang/eu/help/chat/mods.html | 2 +- lang/eu/help/choice/index.html | 4 +- lang/eu/help/choice/mods.html | 8 +- lang/eu/help/choice/options.html | 7 +- lang/eu/help/choice/timerestrict.html | 2 +- lang/eu/help/courseavailability.html | 2 +- lang/eu/help/coursecategory.html | 6 +- lang/eu/help/courseformats.html | 1 + lang/eu/help/coursefullname.html | 4 +- lang/eu/help/coursehiddensections.html | 2 +- lang/eu/help/courseidnumber.html | 4 +- lang/eu/help/coursenewsitems.html | 16 +- lang/eu/help/coursenumsections.html | 13 +- lang/eu/help/courserecent.html | 36 +- lang/eu/help/coursereports.html | 2 +- lang/eu/help/coursestartdate.html | 17 +- lang/eu/help/courseuploadsize.html | 10 +- lang/eu/help/dialogue/dialoguetype.html | 12 +- lang/eu/help/dialogue/info.html | 2 +- lang/eu/help/dialogue/mods.html | 2 +- lang/eu/help/dialogue/writing.html | 22 +- lang/eu/help/directorypaths.html | 8 +- lang/eu/help/emoticons.html | 44 +- lang/eu/help/enrolmentkey.html | 21 +- lang/eu/help/exercise/administration.html | 8 +- lang/eu/help/exercise/elements.html | 42 +- lang/eu/help/exercise/finalgrades.html | 4 +- lang/eu/help/exercise/grading.html | 2 +- lang/eu/help/exercise/gradinggrade.html | 2 +- lang/eu/help/exercise/gradingstrategy.html | 32 +- lang/eu/help/exercise/index.html | 36 +- lang/eu/help/exercise/leaguetable.html | 2 +- lang/eu/help/exercise/leaguetablenames.html | 2 +- lang/eu/help/exercise/managing.html | 22 +- lang/eu/help/exercise/mods.html | 8 +- lang/eu/help/exercise/moreinfo.html | 10 +- lang/eu/help/exercise/nelements.html | 8 +- lang/eu/help/exercise/regrading.html | 6 +- .../exercise/submissionofdescriptions.html | 6 +- lang/eu/help/exercise/takeownership.html | 4 +- lang/eu/help/forum/allowdiscussions.html | 18 +- lang/eu/help/forum/attachment.html | 22 +- lang/eu/help/forum/forumtype.html | 18 +- lang/eu/help/forum/index.html | 12 +- lang/eu/help/forum/maxattachmentsize.html | 10 +- lang/eu/help/forum/mods.html | 6 +- lang/eu/help/forum/ratings.html | 19 +- lang/eu/help/forum/rssarticles.html | 10 +- lang/eu/help/forum/rsstype.html | 18 +- lang/eu/help/forum/subscription.html | 18 +- lang/eu/help/forum/subscription2.html | 18 +- lang/eu/help/glossary/aliases.html | 6 +- .../help/glossary/allowduplicatedentries.html | 5 +- lang/eu/help/glossary/casesensitive.html | 4 +- lang/eu/help/glossary/defaultapproval.html | 2 +- lang/eu/help/glossary/description.html | 4 +- lang/eu/help/glossary/destination.html | 4 +- lang/eu/help/glossary/displayformat.html | 6 +- lang/eu/help/glossary/editalways.html | 16 +- lang/eu/help/glossary/entbypage.html | 4 +- lang/eu/help/glossary/filetoimport.html | 4 +- lang/eu/help/glossary/fullmatch.html | 4 +- lang/eu/help/glossary/globalglossary.html | 4 +- lang/eu/help/glossary/importcategories.html | 4 +- lang/eu/help/glossary/index.html | 40 +- lang/eu/help/glossary/linkcategory.html | 6 +- lang/eu/help/glossary/mainglossary.html | 4 +- lang/eu/help/glossary/mods.html | 18 +- lang/eu/help/glossary/rssarticles.html | 6 +- lang/eu/help/glossary/rsstype.html | 14 +- lang/eu/help/glossary/shows.html | 4 +- lang/eu/help/glossary/studentcanpost.html | 4 +- lang/eu/help/glossary/usedynalink.html | 4 +- lang/eu/help/glossary/usedynalinkentry.html | 4 +- lang/eu/help/groupmode.html | 7 +- lang/eu/help/groupmodeforce.html | 2 +- lang/eu/help/guestaccess.html | 26 +- lang/eu/help/html.html | 25 +- lang/eu/help/index.html | 72 +- lang/eu/help/journal/mods.html | 2 +- lang/eu/help/label/mods.html | 8 +- lang/eu/help/langedit.html | 12 +- lang/eu/help/lesson/handlingofretakes.html | 2 +- lang/eu/help/lesson/import.html | 76 +- lang/eu/help/lesson/jumpto.html | 3 +- lang/eu/help/lesson/maxpages.html | 9 +- lang/eu/help/lesson/minquestions.html | 9 +- lang/eu/help/lesson/mods.html | 12 +- lang/eu/help/lesson/nextpageaction.html | 13 +- lang/eu/help/lesson/overview.html | 62 +- lang/eu/help/lesson/questionoption.html | 17 +- lang/eu/help/lesson/questiontypes.html | 23 +- lang/eu/help/lesson/retake.html | 20 +- lang/eu/help/lesson/useeditor.html | 23 +- lang/eu/help/mods.html | 74 +- lang/eu/help/picture.html | 43 +- lang/eu/help/questionnaire/qmanage.html | 6 +- lang/eu/help/questionnaire/qtype.html | 6 +- .../help/questionnaire/questionnaireid.html | 6 +- .../eu/help/questionnaire/respondenttype.html | 6 +- lang/eu/help/questions.html | 135 +- lang/eu/help/quiz/attempts.html | 7 +- lang/eu/help/quiz/categories.html | 8 +- lang/eu/help/quiz/correctanswers.html | 4 +- lang/eu/help/quiz/createmultiple.html | 10 +- lang/eu/help/quiz/description.html | 2 +- lang/eu/help/quiz/discrimination.html | 18 +- .../help/quiz/eachattemptbuildsonthelast.html | 10 +- lang/eu/help/quiz/feedback.html | 4 +- lang/eu/help/quiz/formataiken.html | 8 +- lang/eu/help/quiz/formatblackboard.html | 2 +- lang/eu/help/quiz/formatctm.html | 16 +- lang/eu/help/quiz/formatcustom.html | 2 +- lang/eu/help/quiz/formatgift.html | 8 +- lang/eu/help/quiz/formatmissingword.html | 2 +- lang/eu/help/quiz/formatwebct.html | 4 +- lang/eu/help/quiz/grademethod.html | 38 +- lang/eu/help/quiz/import.html | 111 +- lang/eu/help/quiz/index.html | 62 +- lang/eu/help/quiz/match.html | 8 +- lang/eu/help/quiz/maxgrade.html | 4 +- lang/eu/help/quiz/mods.html | 4 +- lang/eu/help/quiz/multianswer.html | 114 +- lang/eu/help/quiz/multichoice.html | 6 +- lang/eu/help/quiz/numerical.html | 5 +- lang/eu/help/quiz/questiondatasets.html | 3 + lang/eu/help/quiz/questiontypes.html | 122 +- lang/eu/help/quiz/random.html | 6 +- lang/eu/help/quiz/randomsamatch.html | 10 +- lang/eu/help/quiz/repeatattempts.html | 9 +- lang/eu/help/quiz/requirepassword.html | 4 +- lang/eu/help/quiz/requiresubnet.html | 2 +- lang/eu/help/quiz/review.html | 8 +- lang/eu/help/quiz/shortanswer.html | 6 +- lang/eu/help/quiz/shuffleanswers.html | 2 +- lang/eu/help/quiz/shufflequestions.html | 2 +- lang/eu/help/quiz/timelimit.html | 10 +- lang/eu/help/quiz/truefalse.html | 5 +- lang/eu/help/reading.html | 6 +- lang/eu/help/resource/index.html | 6 +- lang/eu/help/resource/mods.html | 6 +- lang/eu/help/resource/program.html | 12 +- lang/eu/help/resource/resourcetype.html | 32 +- lang/eu/help/resource/summary.html | 8 +- lang/eu/help/resource/window.html | 2 +- lang/eu/help/richtext.html | 285 +- lang/eu/help/scheduler/mods.html | 8 +- lang/eu/help/survey/index.html | 2 +- lang/eu/help/survey/mods.html | 10 +- lang/eu/help/surveys.html | 198 +- lang/eu/help/teachers.html | 25 +- lang/eu/help/text.html | 50 +- lang/eu/help/textformat.html | 50 +- lang/eu/help/uploadusers.html | 7 +- lang/eu/help/wiki.html | 2 +- lang/eu/help/wiki/checklinks.html | 6 +- lang/eu/help/wiki/ewikiacceptbinary.html | 18 +- lang/eu/help/wiki/htmlmode.html | 6 +- lang/eu/help/wiki/initialcontent.html | 8 +- lang/eu/help/wiki/mods.html | 18 +- lang/eu/help/wiki/removepages.html | 6 +- .../help/wiki/revertauthorfieldpattern.html | 6 +- lang/eu/help/wiki/revertpages.html | 4 +- lang/eu/help/wiki/setpageflags.html | 6 +- lang/eu/help/wiki/strippages.html | 4 +- lang/eu/help/wiki/studentadminoptions.html | 6 +- lang/eu/help/wiki/wikilinkoptions.html | 8 +- lang/eu/help/wiki/wikiname.html | 10 +- lang/eu/help/wiki/wikitype.html | 10 +- lang/eu/help/wiki/wikiusage.html | 29 +- lang/eu/help/workshop/addingacomment.html | 26 +- lang/eu/help/workshop/agreeassessments.html | 20 +- .../help/workshop/analysisofassessments.html | 56 +- lang/eu/help/workshop/anonymous.html | 14 +- .../help/workshop/assessmentofexamples.html | 6 +- lang/eu/help/workshop/assignmenttype.html | 18 +- .../help/workshop/breakdownoffinalgrade.html | 28 +- .../help/workshop/calculatingfinalgrade.html | 36 +- lang/eu/help/workshop/editingacomment.html | 6 +- lang/eu/help/workshop/elements.html | 16 +- lang/eu/help/workshop/finalgrades.html | 19 +- lang/eu/help/workshop/graded.html | 10 +- lang/eu/help/workshop/grading.html | 30 +- lang/eu/help/workshop/gradingassessments.html | 14 +- lang/eu/help/workshop/gradingstrategy.html | 44 +- lang/eu/help/workshop/gradingsubmissions.html | 10 +- lang/eu/help/workshop/includeself.html | 10 +- .../help/workshop/includeteachersgrade.html | 2 +- lang/eu/help/workshop/index.html | 56 +- lang/eu/help/workshop/leaguetable.html | 2 +- lang/eu/help/workshop/managing.html | 40 +- lang/eu/help/workshop/mods.html | 10 +- .../nassessmentsofstudentsubmissions.html | 6 +- .../nassessmentsofteachersexamples.html | 6 +- lang/eu/help/workshop/nelements.html | 10 +- lang/eu/help/workshop/numberofassessors.html | 14 +- lang/eu/help/workshop/overallocation.html | 2 +- lang/eu/help/workshop/resubmit.html | 18 +- lang/eu/help/workshop/selfassessment.html | 10 +- lang/eu/help/workshop/showinggrades.html | 10 +- .../help/workshop/submissionofexamples.html | 14 +- lang/eu/help/workshop/teachersgradings.html | 10 +- .../workshop/ungradedassessments_student.html | 7 +- .../workshop/ungradedassessments_teacher.html | 12 +- lang/eu/help/writing.html | 18 +- lang/eu/install.php | 112 +- lang/eu/journal.php | 53 +- lang/eu/label.php | 6 +- lang/eu/lesson.php | 66 +- lang/eu/moodle.php | 277 +- lang/eu/questionnaire.php | 17 +- lang/eu/quiz.php | 215 +- lang/eu/resource.php | 73 +- lang/eu/survey.php | 364 +- lang/eu/wiki.php | 4 +- lang/eu/workshop.php | 351 +- lang/fa/quiz.php | 10 +- lang/fa/workshop.php | 12 +- lang/fa_utf8/assignment.php | 50 - lang/fa_utf8/auth.php | 24 - lang/fa_utf8/chat.php | 41 - lang/fa_utf8/choice.php | 20 - lang/fa_utf8/forum.php | 130 - lang/fa_utf8/journal.php | 14 - lang/fa_utf8/moodle.php | 722 -- lang/fa_utf8/quiz.php | 158 - lang/fa_utf8/readme | 1 - lang/fi/activitynames.php | 5 +- lang/fi/admin.php | 41 +- lang/fi/algebra.php | 17 +- lang/fi/appointment.php | 19 +- lang/fi/assignment.php | 113 +- lang/fi/attendance.php | 8 +- lang/fi/auth.php | 59 +- lang/fi/block_course_list.php | 8 +- lang/fi/block_course_summary.php | 4 +- lang/fi/block_online_users.php | 5 +- lang/fi/block_quiz_results.php | 0 lang/fi/block_rss_client.php | 0 lang/fi/block_section_links.php | 5 +- lang/fi/block_social_activities.php | 5 +- lang/fi/calendar.php | 89 +- lang/fi/censor.php | 5 +- lang/fi/chat.php | 17 +- lang/fi/choice.php | 11 +- lang/fi/countries.php | 24 +- lang/fi/dialogue.php | 141 +- lang/fi/docs/intro.html | 2 +- lang/fi/docs/teacher.html | 112 +- lang/fi/editor.php | 25 +- lang/fi/enrol_database.php | 13 +- lang/fi/enrol_flatfile.php | 15 +- lang/fi/enrol_internal.php | 12 +- lang/fi/enrol_ldap.php | 8 - lang/fi/enrol_paypal.php | 7 +- lang/fi/error.php | 42 +- lang/fi/exercise.php | 63 +- lang/fi/forum.php | 21 +- lang/fi/glossary.php | 22 +- lang/fi/help/assignment/emailteachers.html | 5 - lang/fi/help/assignment/index.html | 9 - lang/fi/help/assignment/mods.html | 4 - lang/fi/help/assignment/resubmit.html | 8 +- lang/fi/help/attendance/autoattend.html | 3 - lang/fi/help/attendance/choosedays.html | 2 - lang/fi/help/attendance/dynsection.html | 4 - lang/fi/help/attendance/grade.html | 3 - lang/fi/help/attendance/hours.html | 3 - lang/fi/help/attendance/index.html | 9 - lang/fi/help/attendance/maxgrade.html | 2 - lang/fi/help/attendance/mods.html | 2 - lang/fi/help/chat/chatting.html | 21 - lang/fi/help/chat/index.html | 4 - lang/fi/help/chat/mods.html | 5 - lang/fi/help/choice/index.html | 5 - lang/fi/help/choice/mods.html | 2 - lang/fi/help/choice/options.html | 5 +- lang/fi/help/choice/timerestrict.html | 4 - lang/fi/help/cookies.html | 11 +- lang/fi/help/courseavailability.html | 2 +- lang/fi/help/courseformats.html | 12 +- lang/fi/help/coursegrades.html | 14 +- lang/fi/help/coursehiddensections.html | 4 +- lang/fi/help/courseidnumber.html | 2 +- lang/fi/help/coursenewsitems.html | 4 +- lang/fi/help/coursenumsections.html | 4 +- lang/fi/help/courserecent.html | 8 +- lang/fi/help/coursereports.html | 10 +- lang/fi/help/courseshortname.html | 4 +- lang/fi/help/courseuploadsize.html | 6 +- lang/fi/help/dialogue/addsubject.html | 8 +- lang/fi/help/dialogue/closedialogue.html | 17 +- lang/fi/help/dialogue/deleteafter.html | 10 +- lang/fi/help/dialogue/dialoguetype.html | 16 +- lang/fi/help/dialogue/index.html | 11 - lang/fi/help/dialogue/info.html | 26 +- lang/fi/help/dialogue/maildefault.html | 7 +- lang/fi/help/dialogue/mods.html | 12 +- lang/fi/help/dialogue/multiple.html | 11 +- lang/fi/help/directorypaths.html | 8 +- lang/fi/help/emoticons.html | 44 +- lang/fi/help/enrolperiod.html | 8 +- lang/fi/help/exercise/administration.html | 6 - .../exercise/comparisonofassessments.html | 9 - lang/fi/help/exercise/elements.html | 16 - lang/fi/help/exercise/finalgrades.html | 4 - lang/fi/help/exercise/grade.html | 5 - lang/fi/help/exercise/grading.html | 17 - lang/fi/help/exercise/gradinggrade.html | 7 - lang/fi/help/exercise/gradingstrategy.html | 15 - lang/fi/help/exercise/index.html | 21 - lang/fi/help/exercise/leaguetable.html | 2 - lang/fi/help/exercise/leaguetablenames.html | 3 - lang/fi/help/exercise/managing.html | 27 - lang/fi/help/exercise/mods.html | 2 - lang/fi/help/exercise/moreinfo.html | 23 - lang/fi/help/exercise/nelements.html | 4 - lang/fi/help/exercise/password.html | 2 - lang/fi/help/exercise/regrading.html | 12 - lang/fi/help/exercise/specimen.html | 5 - .../exercise/submissionofdescriptions.html | 3 - lang/fi/help/exercise/takeownership.html | 3 - lang/fi/help/exercise/usemax.html | 2 - lang/fi/help/exercise/usepassword.html | 4 - lang/fi/help/forum/allowdiscussions.html | 17 +- lang/fi/help/forum/attachment.html | 22 +- lang/fi/help/forum/forumtype.html | 22 +- lang/fi/help/forum/mods.html | 12 +- lang/fi/help/forum/ratings.html | 14 +- lang/fi/help/glossary/aliases.html | 4 - lang/fi/help/glossary/aliases2.html | 5 - lang/fi/help/glossary/allowcomments.html | 4 - .../help/glossary/allowduplicatedentries.html | 3 - lang/fi/help/glossary/allowprintview.html | 5 - lang/fi/help/glossary/attachment.html | 5 - lang/fi/help/glossary/casesensitive.html | 4 - lang/fi/help/glossary/defaultapproval.html | 2 - lang/fi/help/glossary/description.html | 3 - lang/fi/help/glossary/destination.html | 7 - lang/fi/help/glossary/displayformat.html | 23 - lang/fi/help/glossary/editalways.html | 10 - lang/fi/help/glossary/entbypage.html | 4 - lang/fi/help/glossary/filetoimport.html | 3 - lang/fi/help/glossary/fullmatch.html | 4 - lang/fi/help/glossary/globalglossary.html | 5 - lang/fi/help/glossary/importcategories.html | 3 - lang/fi/help/glossary/index.html | 33 - lang/fi/help/glossary/linkcategory.html | 5 - lang/fi/help/glossary/mainglossary.html | 5 - lang/fi/help/glossary/mods.html | 7 - lang/fi/help/glossary/rssarticles.html | 4 - lang/fi/help/glossary/rsstype.html | 8 - lang/fi/help/glossary/shows.html | 8 - lang/fi/help/glossary/studentcanpost.html | 4 - lang/fi/help/glossary/usedynalink.html | 7 - lang/fi/help/glossary/usedynalinkentry.html | 4 - lang/fi/help/groupmode.html | 18 +- lang/fi/help/groupmodeforce.html | 6 +- lang/fi/help/html.html | 4 +- lang/fi/help/index.html | 102 +- lang/fi/help/journal/mods.html | 3 - lang/fi/help/label/mods.html | 4 - lang/fi/help/langedit.html | 6 +- lang/fi/help/lesson/mods.html | 4 - lang/fi/help/lesson/nextpageaction.html | 8 - lang/fi/help/lesson/overview.html | 28 - lang/fi/help/lesson/questionoption.html | 10 - lang/fi/help/lesson/questiontypes.html | 26 - lang/fi/help/lesson/retake.html | 7 - lang/fi/help/lesson/useeditor.html | 12 - lang/fi/help/mods.html | 24 +- lang/fi/help/questionnaire/qmanage.html | 2 - lang/fi/help/quiz/attempts.html | 2 +- lang/fi/help/quiz/decimalpoints.html | 3 - lang/fi/help/quiz/grademethod.html | 6 +- lang/fi/help/quiz/import.html | 125 +- lang/fi/help/quiz/maxgrade.html | 3 +- lang/fi/help/quiz/multichoice.html | 2 +- lang/fi/help/quiz/popup.html | 15 - lang/fi/help/quiz/questiontypes.html | 65 +- lang/fi/help/quiz/random.html | 22 +- lang/fi/help/quiz/review2.html | 3 - lang/fi/help/quiz/shortanswer.html | 4 +- lang/fi/help/reading.html | 2 +- lang/fi/help/resource/mods.html | 11 +- lang/fi/help/richtext.html | 224 +- lang/fi/help/scales.html | 22 +- lang/fi/help/search.html | 44 - lang/fi/help/summaries.html | 15 +- lang/fi/help/uploadusers.html | 61 +- lang/fi/help/wiki/mods.html | 25 +- lang/fi/help/writing.html | 18 +- lang/fi/hotpot.php | 7 +- lang/fi/install.php | 51 +- lang/fi/journal.php | 81 +- lang/fi/label.php | 21 +- lang/fi/lesson.php | 179 +- lang/fi/mediaplugin.php | 5 +- lang/fi/message.php | 0 lang/fi/moodle.php | 428 +- lang/fi/multilang.php | 17 +- lang/fi/pgassignment.php | 4 +- lang/fi/pix.php | 55 +- lang/fi/quiz.php | 73 +- lang/fi/resource.php | 24 +- lang/fi/scorm.php | 8 +- lang/fi/survey.php | 20 +- lang/fi/tex.php | 17 +- lang/fi/webquest.php | 19 +- lang/fi/wiki.php | 72 +- lang/fi/workshop.php | 88 +- lang/fr/admin.php | 115 +- lang/fr/assignment.php | 16 +- lang/fr/attendance.php | 2 +- lang/fr/auth.php | 80 +- lang/fr/block_course_list.php | 4 +- lang/fr/block_course_summary.php | 4 +- lang/fr/block_glossary_random.php | 25 - lang/fr/block_html.php | 9 - lang/fr/block_online_users.php | 2 +- lang/fr/block_quiz_results.php | 26 - lang/fr/block_rss_client.php | 30 +- lang/fr/calendar.php | 18 +- lang/fr/chat.php | 6 +- lang/fr/choice.php | 17 +- lang/fr/dialogue.php | 3 +- lang/fr/docs/background.html | 11 +- lang/fr/docs/coding.html | 12 +- lang/fr/docs/cvs.html | 360 +- lang/fr/docs/developer.html | 10 +- lang/fr/docs/docstyles.css | 1 - lang/fr/docs/faq.html | 30 +- lang/fr/docs/features.html | 11 +- lang/fr/docs/future.html | 74 +- lang/fr/docs/install.html | 30 +- lang/fr/docs/installamp.html | 38 +- lang/fr/docs/intro.html | 11 +- lang/fr/docs/licence.html | 22 +- lang/fr/docs/other.html | 12 +- lang/fr/docs/philosophy.html | 15 +- lang/fr/docs/release.html | 1115 +- lang/fr/docs/releaseold.html | 904 +- lang/fr/docs/teacher.html | 53 +- lang/fr/docs/translation.html | 104 +- lang/fr/docs/upgrade.html | 234 +- lang/fr/editor.php | 19 +- lang/fr/error.php | 9 +- lang/fr/exercise.php | 40 +- lang/fr/forum.php | 39 +- lang/fr/glossary.php | 32 +- lang/fr/help/advancedsettings.html | 7 - lang/fr/help/assignment/assignmenttype.html | 6 +- lang/fr/help/assignment/emailteachers.html | 10 - lang/fr/help/assignment/index.html | 10 +- lang/fr/help/assignment/mods.html | 8 +- lang/fr/help/assignment/resubmit.html | 18 +- lang/fr/help/chat/chatting.html | 45 +- lang/fr/help/chat/mods.html | 2 +- lang/fr/help/choice/index.html | 7 - lang/fr/help/choice/mods.html | 2 +- lang/fr/help/choice/options.html | 2 +- lang/fr/help/choice/timerestrict.html | 10 +- lang/fr/help/cookies.html | 6 +- lang/fr/help/courseavailability.html | 6 +- lang/fr/help/coursecategory.html | 2 +- lang/fr/help/courseformats.html | 8 +- lang/fr/help/coursefullname.html | 2 +- lang/fr/help/coursegrades.html | 2 +- lang/fr/help/coursehiddensections.html | 2 +- lang/fr/help/courseidnumber.html | 6 +- lang/fr/help/coursenewsitems.html | 2 +- lang/fr/help/coursenumsections.html | 2 +- lang/fr/help/courserecent.html | 2 +- lang/fr/help/coursereports.html | 2 +- lang/fr/help/courseshortname.html | 2 +- lang/fr/help/coursestartdate.html | 2 +- lang/fr/help/courseuploadsize.html | 2 +- lang/fr/help/directorypaths.html | 34 - lang/fr/help/emoticons.html | 2 +- lang/fr/help/enrolmentkey.html | 4 +- lang/fr/help/enrolperiod.html | 10 +- lang/fr/help/forum/allowdiscussions.html | 24 +- lang/fr/help/forum/attachment.html | 6 +- lang/fr/help/forum/forumtype.html | 8 +- lang/fr/help/forum/index.html | 32 +- lang/fr/help/forum/maxattachmentsize.html | 2 +- lang/fr/help/forum/mods.html | 2 +- lang/fr/help/forum/ratings.html | 10 +- lang/fr/help/forum/rssarticles.html | 10 +- lang/fr/help/forum/rsstype.html | 6 +- lang/fr/help/forum/subscription.html | 23 +- lang/fr/help/forum/subscription2.html | 15 - lang/fr/help/glossary/aliases.html | 12 +- lang/fr/help/glossary/allowcomments.html | 10 +- .../help/glossary/allowduplicatedentries.html | 7 +- lang/fr/help/glossary/allowprintview.html | 9 - lang/fr/help/glossary/attachment.html | 13 - lang/fr/help/glossary/casesensitive.html | 14 +- lang/fr/help/glossary/defaultapproval.html | 11 +- lang/fr/help/glossary/description.html | 8 +- lang/fr/help/glossary/destination.html | 22 +- lang/fr/help/glossary/displayformat.html | 76 +- lang/fr/help/glossary/editalways.html | 16 - lang/fr/help/glossary/entbypage.html | 12 +- lang/fr/help/glossary/filetoimport.html | 7 +- lang/fr/help/glossary/fullmatch.html | 13 +- lang/fr/help/glossary/globalglossary.html | 16 +- lang/fr/help/glossary/importcategories.html | 9 +- lang/fr/help/glossary/index.html | 72 +- lang/fr/help/glossary/linkcategory.html | 11 +- lang/fr/help/glossary/mainglossary.html | 15 +- lang/fr/help/glossary/mods.html | 19 +- lang/fr/help/glossary/rssarticles.html | 11 +- lang/fr/help/glossary/rsstype.html | 12 +- lang/fr/help/glossary/shows.html | 10 +- lang/fr/help/glossary/studentcanpost.html | 15 +- lang/fr/help/glossary/usedynalink.html | 20 +- lang/fr/help/glossary/usedynalinkentry.html | 9 - lang/fr/help/groupmode.html | 57 +- lang/fr/help/groupmodeforce.html | 14 +- lang/fr/help/guestaccess.html | 12 +- lang/fr/help/hideoptions.html | 5 - lang/fr/help/html.html | 31 +- lang/fr/help/index.html | 122 +- lang/fr/help/journal/mods.html | 10 +- lang/fr/help/label/mods.html | 11 +- lang/fr/help/langedit.html | 19 +- lang/fr/help/lesson/grade.html | 10 +- lang/fr/help/lesson/handlingofretakes.html | 6 +- lang/fr/help/lesson/import.html | 91 +- lang/fr/help/lesson/jumpto.html | 22 +- lang/fr/help/lesson/maxanswers.html | 16 +- lang/fr/help/lesson/maxattempts.html | 35 +- lang/fr/help/lesson/maxpages.html | 17 +- lang/fr/help/lesson/minquestions.html | 14 +- lang/fr/help/lesson/mods.html | 14 +- lang/fr/help/lesson/nextpageaction.html | 37 +- lang/fr/help/lesson/overview.html | 50 +- lang/fr/help/lesson/questionoption.html | 11 +- lang/fr/help/lesson/questiontypes.html | 46 +- lang/fr/help/lesson/retake.html | 10 +- lang/fr/help/lesson/useeditor.html | 16 +- lang/fr/help/mods.html | 7 +- lang/fr/help/picture.html | 14 +- lang/fr/help/questions.html | 190 +- lang/fr/help/quiz/attempts.html | 9 +- lang/fr/help/quiz/categories.html | 26 +- lang/fr/help/quiz/correctanswers.html | 6 +- lang/fr/help/quiz/createmultiple.html | 34 +- lang/fr/help/quiz/description.html | 17 +- lang/fr/help/quiz/discrimination.html | 30 +- lang/fr/help/quiz/export.html | 44 +- lang/fr/help/quiz/feedback.html | 9 +- lang/fr/help/quiz/formataiken.html | 27 +- lang/fr/help/quiz/formatblackboard.html | 8 +- lang/fr/help/quiz/formatctm.html | 40 +- lang/fr/help/quiz/formatcustom.html | 8 +- lang/fr/help/quiz/formatgift.html | 80 +- lang/fr/help/quiz/formatmissingword.html | 8 +- lang/fr/help/quiz/formatwebct.html | 28 +- lang/fr/help/quiz/grademethod.html | 30 +- lang/fr/help/quiz/import.html | 151 +- lang/fr/help/quiz/index.html | 141 +- lang/fr/help/quiz/match.html | 18 +- lang/fr/help/quiz/maxgrade.html | 26 +- lang/fr/help/quiz/mods.html | 9 +- lang/fr/help/quiz/multianswer.html | 155 +- lang/fr/help/quiz/multichoice.html | 15 +- lang/fr/help/quiz/numerical.html | 25 +- lang/fr/help/quiz/questiontypes.html | 111 +- lang/fr/help/quiz/random.html | 43 +- lang/fr/help/quiz/randomsamatch.html | 31 +- lang/fr/help/quiz/repeatattempts.html | 18 +- lang/fr/help/quiz/requirepassword.html | 4 +- lang/fr/help/quiz/requiresubnet.html | 24 +- lang/fr/help/quiz/review.html | 16 +- lang/fr/help/quiz/shortanswer.html | 28 +- lang/fr/help/quiz/shuffleanswers.html | 16 +- lang/fr/help/quiz/shufflequestions.html | 15 +- lang/fr/help/quiz/timelimit.html | 18 +- lang/fr/help/quiz/timeopen.html | 9 +- lang/fr/help/quiz/truefalse.html | 12 +- lang/fr/help/reading.html | 27 +- lang/fr/help/resource/index.html | 28 +- lang/fr/help/resource/mods.html | 8 +- lang/fr/help/resource/parameters.html | 8 +- lang/fr/help/resource/summary.html | 8 +- lang/fr/help/resource/type/directory.html | 2 +- lang/fr/help/resource/type/file.html | 2 +- lang/fr/help/resource/type/html.html | 2 +- lang/fr/help/resource/type/label.html | 2 +- lang/fr/help/resource/type/reference.html | 2 +- lang/fr/help/resource/type/text.html | 2 +- lang/fr/help/resource/types.html | 4 +- lang/fr/help/richtext.html | 148 +- lang/fr/help/scales.html | 33 +- lang/fr/help/search.html | 67 - lang/fr/help/summaries.html | 17 +- lang/fr/help/survey/index.html | 5 +- lang/fr/help/survey/mods.html | 4 +- lang/fr/help/surveys.html | 66 +- lang/fr/help/teachers.html | 26 +- lang/fr/help/text.html | 60 +- lang/fr/help/textformat.html | 62 +- lang/fr/help/uploadusers.html | 66 +- lang/fr/help/wiki.html | 167 +- lang/fr/help/workshop/addingacomment.html | 34 +- lang/fr/help/workshop/agreeassessments.html | 52 +- .../help/workshop/analysisofassessments.html | 154 +- lang/fr/help/workshop/anonymous.html | 18 +- .../help/workshop/assessmentofexamples.html | 14 +- lang/fr/help/workshop/assignmenttype.html | 27 +- .../help/workshop/breakdownoffinalgrade.html | 20 +- .../help/workshop/calculatingfinalgrade.html | 18 +- lang/fr/help/workshop/editingacomment.html | 10 +- lang/fr/help/workshop/elements.html | 122 +- lang/fr/help/workshop/finalgrades.html | 32 +- lang/fr/help/workshop/grade.html | 7 - lang/fr/help/workshop/graded.html | 18 + lang/fr/help/workshop/grading.html | 52 +- lang/fr/help/workshop/gradingassessments.html | 44 +- lang/fr/help/workshop/gradingstrategy.html | 122 +- lang/fr/help/workshop/gradingsubmissions.html | 23 +- lang/fr/help/workshop/includeself.html | 17 +- .../help/workshop/includeteachersgrade.html | 8 +- lang/fr/help/workshop/index.html | 109 +- lang/fr/help/workshop/leaguetable.html | 18 +- lang/fr/help/workshop/managing.html | 84 +- lang/fr/help/workshop/mods.html | 19 +- .../nassessmentsofstudentsubmissions.html | 20 +- .../nassessmentsofteachersexamples.html | 17 +- lang/fr/help/workshop/nelements.html | 25 +- lang/fr/help/workshop/numberofassessors.html | 41 +- lang/fr/help/workshop/overallocation.html | 35 +- lang/fr/help/workshop/resubmit.html | 28 +- lang/fr/help/workshop/selfassessment.html | 19 +- lang/fr/help/workshop/showinggrades.html | 6 +- lang/fr/help/workshop/specimen.html | 26 +- .../help/workshop/submissionofexamples.html | 33 +- lang/fr/help/workshop/teachersgradings.html | 18 +- .../workshop/ungradedassessments_student.html | 19 +- .../workshop/ungradedassessments_teacher.html | 6 +- lang/fr/help/writing.html | 32 +- lang/fr/install.php | 53 +- lang/fr/journal.php | 5 +- lang/fr/label.php | 2 +- lang/fr/lesson.php | 186 +- lang/fr/message.php | 61 - lang/fr/moodle.php | 361 +- lang/fr/pix.php | 3 +- lang/fr/quiz.php | 69 +- lang/fr/resource.php | 26 +- lang/fr/scorm.php | 33 +- lang/fr/survey.php | 7 +- lang/fr/timezones.php | 374 - lang/fr/wiki.php | 22 +- lang/fr/workshop.php | 113 +- lang/fr_ca/admin.php | 27 +- lang/fr_ca/algebra.php | 16 +- lang/fr_ca/assignment.php | 106 +- lang/fr_ca/auth.php | 141 +- lang/fr_ca/censor.php | 16 +- lang/fr_ca/chat.php | 99 +- lang/fr_ca/choice.php | 58 +- lang/fr_ca/countries.php | 306 +- lang/fr_ca/docs/release.html | 229 + lang/fr_ca/docs/releaseold.html | 391 - lang/fr_ca/editor.php | 58 +- lang/fr_ca/error.php | 38 +- lang/fr_ca/forum.php | 295 +- lang/fr_ca/glossary.php | 325 +- .../fr_ca/help/assignment/assignmenttype.html | 42 +- lang/fr_ca/help/assignment/index.html | 10 +- lang/fr_ca/help/assignment/resubmit.html | 44 +- lang/fr_ca/help/choice/index.html | 8 +- lang/fr_ca/help/coursecategory.html | 22 +- lang/fr_ca/help/courseformats.html | 58 +- lang/fr_ca/help/coursegrades.html | 8 +- lang/fr_ca/help/coursenewsitems.html | 36 +- lang/fr_ca/help/coursenumsections.html | 26 +- lang/fr_ca/help/courserecent.html | 16 +- lang/fr_ca/help/courseshortname.html | 20 +- lang/fr_ca/help/coursestartdate.html | 34 +- lang/fr_ca/help/emoticons.html | 4 +- lang/fr_ca/help/enrolmentkey.html | 54 +- lang/fr_ca/help/forum/allowdiscussions.html | 52 +- lang/fr_ca/help/forum/attachment.html | 74 +- lang/fr_ca/help/forum/forumtype.html | 52 +- lang/fr_ca/help/forum/index.html | 40 +- lang/fr_ca/help/forum/mods.html | 16 +- lang/fr_ca/help/forum/ratings.html | 214 +- lang/fr_ca/help/forum/subscription.html | 50 +- lang/fr_ca/help/glossary/displayformat.html | 104 +- lang/fr_ca/help/glossary/globalglossary.html | 32 +- lang/fr_ca/help/glossary/linkcategory.html | 26 +- lang/fr_ca/help/glossary/mainglossary.html | 30 +- lang/fr_ca/help/glossary/mods.html | 42 +- lang/fr_ca/help/glossary/studentcanpost.html | 34 +- lang/fr_ca/help/glossary/usedynalink.html | 40 +- lang/fr_ca/help/guestaccess.html | 50 +- lang/fr_ca/help/html.html | 50 +- lang/fr_ca/help/journal/mods.html | 12 +- lang/fr_ca/help/langedit.html | 4 +- lang/fr_ca/help/lesson/jumpto.html | 8 +- lang/fr_ca/help/lesson/maxanswers.html | 8 +- lang/fr_ca/help/lesson/mods.html | 4 +- lang/fr_ca/help/lesson/retake.html | 12 +- lang/fr_ca/help/mods.html | 2 +- lang/fr_ca/help/picture.html | 78 +- lang/fr_ca/help/questions.html | 200 +- lang/fr_ca/help/quiz/categories.html | 122 +- lang/fr_ca/help/quiz/correctanswers.html | 2 +- lang/fr_ca/help/quiz/createmultiple.html | 58 +- lang/fr_ca/help/quiz/description.html | 12 +- lang/fr_ca/help/quiz/feedback.html | 2 +- lang/fr_ca/help/quiz/formatblackboard.html | 24 +- lang/fr_ca/help/quiz/formatcustom.html | 22 +- lang/fr_ca/help/quiz/formatmissingword.html | 22 +- lang/fr_ca/help/quiz/import.html | 130 +- lang/fr_ca/help/quiz/index.html | 130 +- lang/fr_ca/help/quiz/match.html | 10 +- lang/fr_ca/help/quiz/maxgrade.html | 10 +- lang/fr_ca/help/quiz/mods.html | 4 +- lang/fr_ca/help/quiz/multianswer.html | 208 +- lang/fr_ca/help/quiz/multichoice.html | 56 +- lang/fr_ca/help/quiz/numerical.html | 48 +- lang/fr_ca/help/quiz/questiontypes.html | 206 +- lang/fr_ca/help/quiz/random.html | 20 +- lang/fr_ca/help/quiz/randomsamatch.html | 16 +- lang/fr_ca/help/quiz/repeatattempts.html | 34 +- lang/fr_ca/help/quiz/review.html | 34 +- lang/fr_ca/help/quiz/shortanswer.html | 42 +- lang/fr_ca/help/quiz/shuffleanswers.html | 12 +- lang/fr_ca/help/quiz/shufflequestions.html | 2 +- lang/fr_ca/help/quiz/timeopen.html | 4 +- lang/fr_ca/help/quiz/truefalse.html | 8 +- lang/fr_ca/help/reading.html | 20 +- lang/fr_ca/help/resource/program.html | 54 +- lang/fr_ca/help/resource/resourcetype.html | 78 +- lang/fr_ca/help/resource/summary.html | 40 +- lang/fr_ca/help/summaries.html | 28 +- lang/fr_ca/help/survey/mods.html | 34 +- lang/fr_ca/help/surveys.html | 294 +- lang/fr_ca/help/text.html | 486 +- lang/fr_ca/help/textformat.html | 6 +- lang/fr_ca/help/uploadusers.html | 4 +- lang/fr_ca/help/wiki.html | 398 +- lang/fr_ca/help/workshop/addingacomment.html | 58 +- .../fr_ca/help/workshop/agreeassessments.html | 16 +- lang/fr_ca/help/workshop/anonymous.html | 32 +- .../help/workshop/assessmentofexamples.html | 6 +- lang/fr_ca/help/workshop/assignmenttype.html | 54 +- .../help/workshop/breakdownoffinalgrade.html | 122 +- .../help/workshop/calculatingfinalgrade.html | 170 +- lang/fr_ca/help/workshop/editingacomment.html | 4 +- lang/fr_ca/help/workshop/elements.html | 244 +- lang/fr_ca/help/workshop/finalgrades.html | 10 +- lang/fr_ca/help/workshop/graded.html | 42 +- lang/fr_ca/help/workshop/grading.html | 8 +- .../help/workshop/gradingassessments.html | 76 +- lang/fr_ca/help/workshop/gradingstrategy.html | 212 +- .../help/workshop/gradingsubmissions.html | 48 +- lang/fr_ca/help/workshop/includeself.html | 8 +- .../help/workshop/includeteachersgrade.html | 48 +- lang/fr_ca/help/workshop/index.html | 152 +- lang/fr_ca/help/workshop/leaguetable.html | 40 +- lang/fr_ca/help/workshop/managing.html | 376 +- lang/fr_ca/help/workshop/mods.html | 6 +- .../nassessmentsofstudentsubmissions.html | 46 +- .../nassessmentsofteachersexamples.html | 8 +- lang/fr_ca/help/workshop/nelements.html | 8 +- .../help/workshop/numberofassessors.html | 14 +- lang/fr_ca/help/workshop/overallocation.html | 12 +- lang/fr_ca/help/workshop/resubmit.html | 14 +- lang/fr_ca/help/workshop/selfassessment.html | 8 +- lang/fr_ca/help/workshop/showinggrades.html | 8 +- lang/fr_ca/help/workshop/specimen.html | 48 +- .../help/workshop/submissionofexamples.html | 14 +- .../fr_ca/help/workshop/teachersgradings.html | 8 +- .../workshop/ungradedassessments_student.html | 8 +- .../workshop/ungradedassessments_teacher.html | 8 +- lang/fr_ca/help/writing.html | 42 +- lang/fr_ca/journal.php | 68 +- lang/fr_ca/label.php | 20 +- lang/fr_ca/lesson.php | 43 +- lang/fr_ca/mediaplugin.php | 16 +- lang/fr_ca/moodle.php | 1904 ++-- lang/fr_ca/multilang.php | 16 +- lang/fr_ca/pix.php | 54 +- lang/fr_ca/quiz.php | 458 +- lang/fr_ca/resource.php | 151 +- lang/fr_ca/survey.php | 390 +- lang/fr_ca/tex.php | 14 +- lang/fr_ca/webquest.php | 16 +- lang/fr_ca/workshop.php | 500 +- lang/ga/admin.php | 12 - lang/ga/algebra.php | 6 - lang/ga/appointment.php | 45 - lang/ga/assignment.php | 53 - lang/ga/attendance.php | 74 - lang/ga/block_course_list.php | 8 - lang/ga/block_course_summary.php | 6 - lang/ga/block_section_links.php | 8 - lang/ga/block_social_activities.php | 4 - lang/ga/calendar.php | 122 - lang/ga/censor.php | 6 - lang/ga/chat.php | 43 - lang/ga/choice.php | 23 - lang/ga/dialogue.php | 70 - lang/ga/docs/background.html | 84 - lang/ga/docs/coding.html | 192 - lang/ga/docs/credits.html | 209 - lang/ga/docs/install.html | 646 -- lang/ga/docs/teacher.html | 435 - lang/ga/editor.php | 100 - lang/ga/emailprotect.php | 6 - lang/ga/exercise.php | 162 - lang/ga/forum.php | 137 - lang/ga/help/assignment/assignmenttype.html | 22 - lang/ga/help/assignment/index.html | 11 - lang/ga/help/assignment/mods.html | 10 - lang/ga/help/assignment/resubmit.html | 16 - lang/ga/help/attendance/mods.html | 7 - lang/ga/help/chat/chatting.html | 34 - lang/ga/help/chat/index.html | 5 - lang/ga/help/chat/mods.html | 11 - lang/ga/help/choice/mods.html | 10 - lang/ga/help/choice/options.html | 9 - lang/ga/help/cookies.html | 24 - lang/ga/help/courseavailability.html | 24 - lang/ga/help/coursecategory.html | 17 - lang/ga/help/dialogue/addsubject.html | 11 - lang/ga/help/dialogue/closedialogue.html | 19 - lang/ga/help/dialogue/deleteafter.html | 8 - lang/ga/help/dialogue/dialoguetype.html | 21 - lang/ga/help/dialogue/index.html | 12 - lang/ga/help/dialogue/info.html | 42 - lang/ga/help/dialogue/maildefault.html | 8 - lang/ga/help/dialogue/mods.html | 12 - lang/ga/help/dialogue/multiple.html | 13 - lang/ga/help/dialogue/sendmail.html | 23 - lang/ga/help/dialogue/writing.html | 44 - lang/ga/help/emoticons.html | 141 - lang/ga/help/enrolmentkey.html | 37 - lang/ga/help/index.html | 59 - lang/ga/help/journal/index.html | 1 - lang/ga/help/journal/mods.html | 14 - lang/ga/help/label/mods.html | 8 - lang/ga/help/questions.html | 240 - lang/ga/help/reading.html | 34 - lang/ga/help/survey/index.html | 5 - lang/ga/help/survey/mods.html | 10 - lang/ga/help/teachers.html | 46 - lang/ga/help/writing.html | 53 - lang/ga/journal.php | 37 - lang/ga/label.php | 9 - lang/ga/lesson.php | 69 - lang/ga/moodle.php | 910 -- lang/ga/multilang.php | 6 - lang/ga/pix.php | 26 - lang/ga/questionnaire.php | 14 - lang/ga/quiz.php | 185 - lang/ga/readme | 2 - lang/ga/resource.php | 62 - lang/ga/tex.php | 6 - lang/ga/webquest.php | 8 - lang/gl/auth.php | 2 +- lang/gl/docs/coding.html | 4 +- lang/gl/docs/credits.html | 114 +- lang/gl/docs/cvs.html | 42 +- lang/gl/docs/developer.html | 54 +- lang/gl/docs/faq.html | 4 +- lang/gl/docs/glossary.html | 8 +- lang/gl/docs/install.html | 14 +- lang/gl/docs/installamp.html | 24 +- lang/gl/docs/intro.html | 2 +- lang/gl/docs/licence.html | 12 +- lang/gl/docs/release.html | 388 + lang/gl/docs/teacher.html | 28 +- lang/gl/docs/upgrade.html | 12 +- lang/gl/editor.php | 2 +- lang/gl/forum.php | 2 +- lang/gl/glossary.php | 6 +- lang/gl/help/assignment/mods.html | 9 +- lang/gl/help/chat/mods.html | 8 +- lang/gl/help/choice/mods.html | 9 +- lang/gl/help/forum/mods.html | 12 +- lang/gl/help/journal/mods.html | 10 +- lang/gl/help/mods.html | 14 +- lang/gl/help/quiz/import.html | 48 + lang/gl/help/quiz/mods.html | 11 +- lang/gl/help/quiz/multianswer.html | 12 +- lang/gl/help/resource/mods.html | 5 +- lang/gl/help/resource/resourcetype.html | 26 + lang/gl/help/survey/mods.html | 2 +- lang/gl/help/workshop/mods.html | 2 +- lang/gl/journal.php | 9 +- lang/gl/moodle.php | 56 +- lang/gl/resource.php | 2 +- lang/gl/survey.php | 2 +- lang/gl/workshop.php | 10 +- lang/he/activitynames.php | 6 +- lang/he/admin.php | 19 +- lang/he/algebra.php | 8 +- lang/he/assignment.php | 97 +- lang/he/attendance.php | 120 +- lang/he/auth.php | 148 +- lang/he/block_course_list.php | 12 +- lang/he/block_course_summary.php | 9 +- lang/he/block_online_users.php | 12 +- lang/he/block_section_links.php | 10 +- lang/he/block_social_activities.php | 4 +- lang/he/calendar.php | 192 +- lang/he/censor.php | 4 +- lang/he/chat.php | 72 +- lang/he/choice.php | 43 +- lang/he/countries.php | 441 +- lang/he/dialogue.php | 126 +- lang/he/editor.php | 2 +- lang/he/enrol_flatfile.php | 6 +- lang/he/enrol_internal.php | 4 +- lang/he/enrol_paypal.php | 4 +- lang/he/error.php | 28 +- lang/he/exercise.php | 221 +- lang/he/forum.php | 191 +- lang/he/glossary.php | 155 +- lang/he/label.php | 11 +- lang/he/moodle.php | 511 +- lang/he/quiz.php | 6 +- lang/he/resource.php | 112 +- lang/he/survey.php | 205 + lang/he/tex.php | 11 +- lang/he/workshop.php | 12 +- lang/hu/activitynames.php | 5 - lang/hu/admin.php | 123 - lang/hu/algebra.php | 5 - lang/hu/appointment.php | 45 - lang/hu/assignment.php | 94 +- lang/hu/attendance.php | 75 - lang/hu/auth.php | 176 +- lang/hu/block_course_list.php | 10 - lang/hu/block_course_summary.php | 8 - lang/hu/block_glossary_random.php | 28 - lang/hu/block_html.php | 11 - lang/hu/block_online_users.php | 9 - lang/hu/block_quiz_results.php | 28 - lang/hu/block_rss_client.php | 39 - lang/hu/block_section_links.php | 8 - lang/hu/block_social_activities.php | 4 - lang/hu/calendar.php | 121 - lang/hu/censor.php | 6 - lang/hu/chat.php | 87 +- lang/hu/choice.php | 48 +- lang/hu/countries.php | 246 - lang/hu/dialogue.php | 71 - lang/hu/editor.php | 189 +- lang/hu/emailprotect.php | 7 - lang/hu/enrol_database.php | 18 - lang/hu/enrol_flatfile.php | 21 - lang/hu/enrol_internal.php | 12 - lang/hu/enrol_ldap.php | 46 - lang/hu/enrol_paypal.php | 10 - lang/hu/error.php | 26 - lang/hu/exercise.php | 190 - lang/hu/forum.php | 306 +- lang/hu/glossary.php | 170 - lang/hu/grades.php | 125 - lang/hu/help/assignment/assignmenttype.html | 7 - lang/hu/help/assignment/index.html | 4 - lang/hu/help/assignment/mods.html | 4 - lang/hu/help/assignment/resubmit.html | 7 - lang/hu/help/attendance/autoattend.html | 8 - lang/hu/help/attendance/choosedays.html | 5 - lang/hu/help/attendance/dynsection.html | 6 - lang/hu/help/attendance/grade.html | 6 - lang/hu/help/attendance/hours.html | 6 - lang/hu/help/attendance/index.html | 11 - lang/hu/help/attendance/maxgrade.html | 5 - lang/hu/help/attendance/mods.html | 5 - lang/hu/help/chat/chatting.html | 22 - lang/hu/help/chat/index.html | 4 - lang/hu/help/chat/mods.html | 4 - lang/hu/help/choice/index.html | 4 - lang/hu/help/choice/mods.html | 4 - lang/hu/help/choice/options.html | 5 - lang/hu/help/choice/timerestrict.html | 7 - lang/hu/help/cookies.html | 8 - lang/hu/help/courseavailability.html | 8 - lang/hu/help/coursecategory.html | 7 - lang/hu/help/courseformats.html | 17 - lang/hu/help/coursefullname.html | 4 - lang/hu/help/coursegrades.html | 7 - lang/hu/help/coursehiddensections.html | 8 - lang/hu/help/courseidnumber.html | 4 - lang/hu/help/coursenewsitems.html | 7 - lang/hu/help/coursenumsections.html | 9 - lang/hu/help/courserecent.html | 9 - lang/hu/help/coursereports.html | 9 - lang/hu/help/courseshortname.html | 4 - lang/hu/help/coursestartdate.html | 9 - lang/hu/help/courseuploadsize.html | 5 - lang/hu/help/dialogue/addsubject.html | 4 - lang/hu/help/dialogue/closedialogue.html | 7 - lang/hu/help/dialogue/deleteafter.html | 5 - lang/hu/help/dialogue/dialoguetype.html | 9 - lang/hu/help/dialogue/index.html | 10 - lang/hu/help/dialogue/info.html | 10 - lang/hu/help/dialogue/maildefault.html | 6 - lang/hu/help/dialogue/mods.html | 4 - lang/hu/help/dialogue/multiple.html | 6 - lang/hu/help/dialogue/sendmail.html | 6 - lang/hu/help/dialogue/writing.html | 13 - lang/hu/help/enrolmentkey.html | 11 - lang/hu/help/enrolperiod.html | 10 - lang/hu/help/exercise/administration.html | 12 - .../exercise/comparisonofassessments.html | 61 - lang/hu/help/exercise/elements.html | 20 - lang/hu/help/exercise/finalgrades.html | 5 - lang/hu/help/exercise/grade.html | 3 - lang/hu/help/exercise/grading.html | 18 - lang/hu/help/exercise/gradinggrade.html | 6 - lang/hu/help/exercise/gradingstrategy.html | 20 - lang/hu/help/exercise/index.html | 21 - lang/hu/help/exercise/leaguetable.html | 7 - lang/hu/help/exercise/leaguetablenames.html | 6 - lang/hu/help/exercise/managing.html | 29 - lang/hu/help/exercise/mods.html | 6 - lang/hu/help/exercise/moreinfo.html | 25 - lang/hu/help/exercise/nelements.html | 7 - lang/hu/help/exercise/regrading.html | 24 - lang/hu/help/exercise/specimen.html | 5 - .../exercise/submissionofdescriptions.html | 5 - lang/hu/help/exercise/takeownership.html | 5 - lang/hu/help/exercise/usemax.html | 3 - lang/hu/help/forum/allowdiscussions.html | 9 - lang/hu/help/forum/attachment.html | 10 - lang/hu/help/forum/forumtype.html | 11 - lang/hu/help/forum/index.html | 9 - lang/hu/help/forum/maxattachmentsize.html | 5 - lang/hu/help/forum/mods.html | 4 - lang/hu/help/forum/ratings.html | 22 - lang/hu/help/forum/rssarticles.html | 5 - lang/hu/help/forum/rsstype.html | 12 - lang/hu/help/forum/subscription.html | 9 - lang/hu/help/forum/subscription2.html | 32 - lang/hu/help/glossary/aliases.html | 5 - lang/hu/help/glossary/allowcomments.html | 6 - lang/hu/help/glossary/allowdiscussions.html | 9 - .../help/glossary/allowduplicatedentries.html | 4 - lang/hu/help/glossary/casesensitive.html | 6 - lang/hu/help/glossary/defaultapproval.html | 3 - lang/hu/help/glossary/description.html | 3 - lang/hu/help/glossary/destination.html | 7 - lang/hu/help/glossary/displayformat.html | 28 - lang/hu/help/glossary/editalways.html | 12 - lang/hu/help/glossary/entbypage.html | 5 - lang/hu/help/glossary/filetoimport.html | 3 - lang/hu/help/glossary/fullmatch.html | 5 - lang/hu/help/glossary/globalglossary.html | 7 - lang/hu/help/glossary/importcategories.html | 3 - lang/hu/help/glossary/index.html | 31 - lang/hu/help/glossary/linkcategory.html | 5 - lang/hu/help/glossary/mainglossary.html | 7 - lang/hu/help/glossary/mods.html | 7 - lang/hu/help/glossary/rssarticles.html | 5 - lang/hu/help/glossary/rsstype.html | 12 - lang/hu/help/glossary/shows.html | 9 - lang/hu/help/glossary/studentcanpost.html | 5 - lang/hu/help/glossary/usedynalink.html | 8 - lang/hu/help/glossary/usedynalinkentry.html | 10 - lang/hu/help/groupmode.html | 20 - lang/hu/help/groupmodeforce.html | 6 - lang/hu/help/guestaccess.html | 11 - lang/hu/help/html.html | 12 - lang/hu/help/index.html | 23 - lang/hu/help/journal/index.html | 1 - lang/hu/help/journal/mods.html | 5 - lang/hu/help/label/mods.html | 5 - lang/hu/help/langedit.html | 9 - lang/hu/help/lesson/grade.html | 4 - lang/hu/help/lesson/handlingofretakes.html | 6 - lang/hu/help/lesson/import.html | 85 - lang/hu/help/lesson/jumpto.html | 6 - lang/hu/help/lesson/maxanswers.html | 7 - lang/hu/help/lesson/maxattempts.html | 11 - lang/hu/help/lesson/maxpages.html | 6 - lang/hu/help/lesson/minquestions.html | 13 - lang/hu/help/lesson/mods.html | 6 - lang/hu/help/lesson/nextpageaction.html | 11 - lang/hu/help/lesson/overview.html | 24 - lang/hu/help/lesson/questionoption.html | 10 - lang/hu/help/lesson/questiontypes.html | 36 - lang/hu/help/lesson/retake.html | 9 - lang/hu/help/lesson/useeditor.html | 17 - lang/hu/help/login.html | 23 +- lang/hu/help/markdown.html | 5 - lang/hu/help/mods.html | 3 - lang/hu/help/picture.html | 17 - lang/hu/help/questionnaire/qmanage.html | 6 - lang/hu/help/questionnaire/qtype.html | 7 - .../help/questionnaire/questionnaireid.html | 6 - .../hu/help/questionnaire/respondenttype.html | 7 - lang/hu/help/questions.html | 59 - lang/hu/help/quiz/attempts.html | 5 - lang/hu/help/quiz/calculated.html | 92 - lang/hu/help/quiz/categories.html | 9 - lang/hu/help/quiz/correctanswers.html | 4 - lang/hu/help/quiz/createmultiple.html | 7 - lang/hu/help/quiz/description.html | 7 - lang/hu/help/quiz/discrimination.html | 10 - lang/hu/help/quiz/export.html | 19 - lang/hu/help/quiz/feedback.html | 4 - lang/hu/help/quiz/formataiken.html | 24 - lang/hu/help/quiz/formatblackboard.html | 3 - lang/hu/help/quiz/formatctm.html | 3 - lang/hu/help/quiz/formatcustom.html | 3 - lang/hu/help/quiz/formatgift.html | 152 - lang/hu/help/quiz/formatmissingword.html | 3 - lang/hu/help/quiz/formatwebct.html | 60 - lang/hu/help/quiz/grademethod.html | 23 - lang/hu/help/quiz/import.html | 106 - lang/hu/help/quiz/index.html | 33 - lang/hu/help/quiz/match.html | 6 - lang/hu/help/quiz/maxgrade.html | 7 - lang/hu/help/quiz/mods.html | 5 - lang/hu/help/quiz/multianswer.html | 20 - lang/hu/help/quiz/multichoice.html | 10 - lang/hu/help/quiz/numerical.html | 10 - lang/hu/help/quiz/questiondatasets.html | 18 - lang/hu/help/quiz/questiontypes.html | 65 - lang/hu/help/quiz/random.html | 13 - lang/hu/help/quiz/randomsamatch.html | 8 - lang/hu/help/quiz/repeatattempts.html | 5 - lang/hu/help/quiz/requirepassword.html | 5 - lang/hu/help/quiz/requiresubnet.html | 19 - lang/hu/help/quiz/review.html | 5 - lang/hu/help/quiz/shortanswer.html | 9 - lang/hu/help/quiz/shuffleanswers.html | 9 - lang/hu/help/quiz/shufflequestions.html | 7 - lang/hu/help/quiz/timelimit.html | 12 - lang/hu/help/quiz/timeopen.html | 5 - lang/hu/help/quiz/truefalse.html | 7 - lang/hu/help/reading.html | 21 +- lang/hu/help/resource/index.html | 7 - lang/hu/help/resource/mods.html | 5 - lang/hu/help/resource/parameters.html | 16 - lang/hu/help/resource/program.html | 16 - lang/hu/help/resource/resourcetype.html | 25 - lang/hu/help/resource/summary.html | 7 - lang/hu/help/resource/type/directory.html | 8 - lang/hu/help/resource/type/file.html | 14 - lang/hu/help/resource/type/html.html | 8 - lang/hu/help/resource/type/label.html | 8 - lang/hu/help/resource/type/text.html | 10 - lang/hu/help/resource/types.html | 5 - lang/hu/help/resource/window.html | 59 - lang/hu/help/richtext.html | 147 - lang/hu/help/scales.html | 15 - lang/hu/help/scorm/mods.html | 5 - lang/hu/help/summaries.html | 7 - lang/hu/help/survey/index.html | 5 - lang/hu/help/survey/mods.html | 4 - lang/hu/help/surveys.html | 68 - lang/hu/help/teachers.html | 9 - lang/hu/help/text.html | 288 +- lang/hu/help/textformat.html | 48 - lang/hu/help/uploadusers.html | 30 - lang/hu/help/wiki.html | 132 - lang/hu/help/wiki/checklinks.html | 2 - lang/hu/help/wiki/ewikiacceptbinary.html | 9 - lang/hu/help/wiki/howtowiki.html | 123 - lang/hu/help/wiki/htmlmode.html | 13 - lang/hu/help/wiki/index.html | 1 - lang/hu/help/wiki/initialcontent.html | 5 - lang/hu/help/wiki/mods.html | 11 - lang/hu/help/wiki/removepages.html | 3 - .../help/wiki/revertauthorfieldpattern.html | 4 - lang/hu/help/wiki/revertpages.html | 3 - lang/hu/help/wiki/setpageflags.html | 13 - lang/hu/help/wiki/strippages.html | 3 - lang/hu/help/wiki/studentadminoptions.html | 4 - lang/hu/help/wiki/wikilinkoptions.html | 7 - lang/hu/help/wiki/wikiname.html | 7 - lang/hu/help/wiki/wikitype.html | 39 - lang/hu/help/wiki/wikiusage.html | 110 - lang/hu/help/workshop/addingacomment.html | 14 - lang/hu/help/workshop/agreeassessments.html | 11 - .../help/workshop/analysisofassessments.html | 22 - lang/hu/help/workshop/anonymous.html | 8 - .../help/workshop/assessmentofexamples.html | 4 - lang/hu/help/workshop/assignmenttype.html | 12 - .../help/workshop/breakdownoffinalgrade.html | 11 - .../help/workshop/calculatingfinalgrade.html | 14 - lang/hu/help/workshop/editingacomment.html | 4 - lang/hu/help/workshop/elements.html | 20 - lang/hu/help/workshop/finalgrades.html | 9 - lang/hu/help/workshop/graded.html | 7 - lang/hu/help/workshop/grading.html | 14 - lang/hu/help/workshop/gradingassessments.html | 7 - lang/hu/help/workshop/gradingstrategy.html | 20 - lang/hu/help/workshop/gradingsubmissions.html | 5 - lang/hu/help/workshop/includeself.html | 7 - .../help/workshop/includeteachersgrade.html | 4 - lang/hu/help/workshop/index.html | 31 - lang/hu/help/workshop/leaguetable.html | 6 - lang/hu/help/workshop/managing.html | 38 - lang/hu/help/workshop/mods.html | 5 - .../nassessmentsofstudentsubmissions.html | 4 - .../nassessmentsofteachersexamples.html | 4 - lang/hu/help/workshop/nelements.html | 7 - lang/hu/help/workshop/numberofassessors.html | 7 - lang/hu/help/workshop/overallocation.html | 7 - lang/hu/help/workshop/resubmit.html | 11 - lang/hu/help/workshop/selfassessment.html | 7 - lang/hu/help/workshop/showinggrades.html | 6 - lang/hu/help/workshop/specimen.html | 5 - .../help/workshop/submissionofexamples.html | 7 - lang/hu/help/workshop/teachersgradings.html | 7 - .../workshop/ungradedassessments_student.html | 4 - .../workshop/ungradedassessments_teacher.html | 6 - lang/hu/help/writing.html | 15 - lang/hu/hotpot.php | 12 - lang/hu/install.php | 102 - lang/hu/journal.php | 58 +- lang/hu/label.php | 9 - lang/hu/lesson.php | 254 - lang/hu/mediaplugin.php | 6 - lang/hu/message.php | 63 - lang/hu/moodle.php | 1679 ++- lang/hu/multilang.php | 6 - lang/hu/pix.php | 26 - lang/hu/questionnaire.php | 16 - lang/hu/quiz.php | 421 +- lang/hu/readme.txt | 3 +- lang/hu/resource.php | 117 +- lang/hu/scorm.php | 78 - lang/hu/survey.php | 375 +- lang/hu/tex.php | 6 - lang/hu/webquest.php | 9 - lang/hu/wiki.php | 190 - lang/hu/workshop.php | 504 +- lang/id/auth.php | 6 +- lang/id/editor.php | 2 +- lang/id/forum.php | 2 +- lang/id/glossary.php | 6 +- lang/id/help/forum/ratings.html | 2 +- lang/id/moodle.php | 68 +- lang/id/quiz.php | 8 +- lang/id/resource.php | 2 +- lang/id/survey.php | 4 +- lang/id/workshop.php | 4 +- lang/it/LEGGIMI | 11 +- lang/it/activitynames.php | 2 +- lang/it/admin.php | 9 +- lang/it/appointment.php | 45 - lang/it/auth.php | 42 +- lang/it/block_course_summary.php | 6 +- lang/it/calendar.php | 2 +- lang/it/chat.php | 7 +- lang/it/choice.php | 3 +- lang/it/dialogue.php | 15 +- lang/it/docs/coding.html | 48 +- lang/it/docs/cvs.html | 6 +- lang/it/docs/developer.html | 50 +- lang/it/docs/faq.html | 8 +- lang/it/docs/install.html | 4 +- lang/it/docs/intro.html | 2 +- lang/it/docs/licence.html | 16 +- lang/it/docs/philosophy.html | 8 +- lang/it/docs/release.html | 803 +- lang/it/docs/releaseold.html | 485 - lang/it/docs/teacher.html | 38 +- lang/it/docs/upgrade.html | 8 +- lang/it/editor.php | 8 +- lang/it/enrol_database.php | 18 - lang/it/enrol_flatfile.php | 14 +- lang/it/enrol_internal.php | 7 +- lang/it/enrol_paypal.php | 4 +- lang/it/error.php | 6 +- lang/it/forum.php | 8 +- lang/it/glossary.php | 29 +- lang/it/help/courseformats.html | 21 +- lang/it/help/coursenumsections.html | 8 +- lang/it/help/forum/ratings.html | 2 +- lang/it/help/glossary/aliases.html | 4 +- lang/it/help/glossary/index.html | 4 +- lang/it/help/groupmode.html | 4 +- lang/it/help/guestaccess.html | 6 +- lang/it/help/index.html | 1 - lang/it/help/quiz/index.html | 1 - lang/it/help/quiz/maxgrade.html | 4 +- lang/it/help/resource/index.html | 13 +- lang/it/help/resource/parameters.html | 11 - lang/it/help/resource/program.html | 16 + lang/it/help/resource/resourcetype.html | 1 + lang/it/help/resource/summary.html | 2 +- lang/it/help/resource/type/directory.html | 6 - lang/it/help/resource/type/html.html | 7 - lang/it/help/resource/type/label.html | 6 - lang/it/help/resource/type/text.html | 10 - lang/it/help/resource/types.html | 4 - lang/it/help/uploadusers.html | 4 +- lang/it/help/wiki.html | 452 +- lang/it/hotpot.php | 12 - lang/it/install.php | 93 - lang/it/journal.php | 10 +- lang/it/lesson.php | 3 +- lang/it/moodle.php | 157 +- lang/it/questionnaire.php | 16 - lang/it/quiz.php | 31 +- lang/it/resource.php | 28 +- lang/it/scorm.php | 4 +- lang/it/survey.php | 4 +- lang/it/wiki.php | 51 +- lang/it/workshop.php | 4 +- lang/ja/README | 81 +- lang/ja/activitynames.php | 7 +- lang/ja/admin.php | 122 +- lang/ja/algebra.php | 2 +- lang/ja/appointment.php | 9 +- lang/ja/assignment.php | 49 +- lang/ja/attendance.php | 24 +- lang/ja/auth.php | 86 +- lang/ja/block_course_list.php | 3 +- lang/ja/block_course_summary.php | 6 +- lang/ja/block_glossary_random.php | 27 - lang/ja/block_html.php | 11 - lang/ja/block_online_users.php | 4 +- lang/ja/block_quiz_results.php | 28 - lang/ja/block_rss_client.php | 20 +- lang/ja/block_section_links.php | 7 +- lang/ja/block_social_activities.php | 7 +- lang/ja/calendar.php | 78 +- lang/ja/censor.php | 7 +- lang/ja/chat.php | 20 +- lang/ja/choice.php | 47 +- lang/ja/countries.php | 4 +- lang/ja/dialogue.php | 29 +- lang/ja/docs/background.html | 24 +- lang/ja/docs/docstyles.css | 1 - lang/ja/docs/faq.html | 74 +- lang/ja/docs/features.html | 414 +- lang/ja/docs/files.php | 4 +- lang/ja/docs/future.html | 62 - lang/ja/docs/install.html | 670 +- lang/ja/docs/installamp.html | 64 +- lang/ja/docs/intro.html | 14 +- lang/ja/docs/licence.html | 431 +- lang/ja/docs/other.html | 8 +- lang/ja/docs/philosophy.html | 34 +- lang/ja/docs/release.html | 12 +- lang/ja/docs/teacher.html | 232 +- lang/ja/docs/upgrade.html | 31 +- lang/ja/editor.php | 24 +- lang/ja/emailprotect.php | 4 +- lang/ja/enrol_database.php | 8 +- lang/ja/enrol_flatfile.php | 9 +- lang/ja/enrol_internal.php | 13 +- lang/ja/enrol_paypal.php | 9 +- lang/ja/error.php | 33 +- lang/ja/exercise.php | 34 +- lang/ja/forum.php | 144 +- lang/ja/glossary.php | 152 +- lang/ja/grades.php | 125 - lang/ja/help/advancedsettings.html | 5 - lang/ja/help/assignment/assignmenttype.html | 10 +- lang/ja/help/assignment/emailteachers.html | 7 - lang/ja/help/assignment/index.html | 4 +- lang/ja/help/assignment/mods.html | 11 +- lang/ja/help/assignment/resubmit.html | 9 +- lang/ja/help/attendance/autoattend.html | 7 +- lang/ja/help/attendance/choosedays.html | 3 +- lang/ja/help/attendance/dynsection.html | 5 +- lang/ja/help/attendance/grade.html | 8 +- lang/ja/help/attendance/hours.html | 4 +- lang/ja/help/attendance/index.html | 12 +- lang/ja/help/attendance/maxgrade.html | 6 +- lang/ja/help/attendance/mods.html | 9 +- lang/ja/help/book/index.html | 14 +- lang/ja/help/book/mods.html | 2 +- lang/ja/help/chat/chatting.html | 12 +- lang/ja/help/chat/index.html | 4 +- lang/ja/help/chat/mods.html | 8 +- lang/ja/help/choice/index.html | 7 +- lang/ja/help/choice/limit.html | 7 - lang/ja/help/choice/mods.html | 10 +- lang/ja/help/choice/options.html | 7 +- lang/ja/help/choice/timerestrict.html | 6 +- lang/ja/help/cookies.html | 7 +- lang/ja/help/courseavailability.html | 6 +- lang/ja/help/coursecategory.html | 8 +- lang/ja/help/courseformats.html | 26 +- lang/ja/help/coursefullname.html | 9 +- lang/ja/help/coursegrades.html | 9 +- lang/ja/help/coursehiddensections.html | 4 +- lang/ja/help/courseidnumber.html | 4 +- lang/ja/help/coursenewsitems.html | 8 +- lang/ja/help/coursenumsections.html | 12 +- lang/ja/help/courserecent.html | 12 +- lang/ja/help/coursereports.html | 11 +- lang/ja/help/courseshortname.html | 7 +- lang/ja/help/coursestartdate.html | 12 +- lang/ja/help/courseuploadsize.html | 7 +- lang/ja/help/dialogue/addsubject.html | 4 +- lang/ja/help/dialogue/closedialogue.html | 8 +- lang/ja/help/dialogue/deleteafter.html | 4 +- lang/ja/help/dialogue/dialoguetype.html | 8 +- lang/ja/help/dialogue/index.html | 16 +- lang/ja/help/dialogue/info.html | 25 +- lang/ja/help/dialogue/maildefault.html | 5 +- lang/ja/help/dialogue/mods.html | 11 +- lang/ja/help/dialogue/multiple.html | 4 +- lang/ja/help/dialogue/sendmail.html | 4 +- lang/ja/help/dialogue/writing.html | 14 +- lang/ja/help/emoticons.html | 8 +- lang/ja/help/enrolmentkey.html | 17 +- lang/ja/help/enrolperiod.html | 8 +- lang/ja/help/exercise/grade.html | 4 +- lang/ja/help/exercise/mods.html | 16 +- .../exercise/submissionofdescriptions.html | 10 +- lang/ja/help/exercise/usemax.html | 4 +- lang/ja/help/forum/allowdiscussions.html | 14 +- lang/ja/help/forum/attachment.html | 17 +- lang/ja/help/forum/forumtype.html | 12 +- lang/ja/help/forum/index.html | 13 +- lang/ja/help/forum/maxattachmentsize.html | 6 +- lang/ja/help/forum/mods.html | 16 +- lang/ja/help/forum/ratings.html | 18 +- lang/ja/help/forum/rssarticles.html | 6 +- lang/ja/help/forum/rsstype.html | 14 +- lang/ja/help/forum/subscription.html | 13 +- lang/ja/help/forum/subscription2.html | 2 +- lang/ja/help/glossary/aliases.html | 6 +- lang/ja/help/glossary/aliases2.html | 8 - lang/ja/help/glossary/allowcomments.html | 6 +- .../help/glossary/allowduplicatedentries.html | 4 +- lang/ja/help/glossary/allowprintview.html | 7 - lang/ja/help/glossary/attachment.html | 14 - lang/ja/help/glossary/casesensitive.html | 4 +- lang/ja/help/glossary/defaultapproval.html | 6 +- lang/ja/help/glossary/displayformat.html | 2 +- lang/ja/help/glossary/entbypage.html | 6 +- lang/ja/help/glossary/filetoimport.html | 4 +- lang/ja/help/glossary/fullmatch.html | 2 +- lang/ja/help/glossary/globalglossary.html | 6 +- lang/ja/help/glossary/index.html | 40 +- lang/ja/help/glossary/linkcategory.html | 4 +- lang/ja/help/glossary/mainglossary.html | 8 +- lang/ja/help/glossary/mods.html | 14 +- lang/ja/help/glossary/shows.html | 4 +- lang/ja/help/glossary/studentcanpost.html | 8 +- lang/ja/help/glossary/usedynalink.html | 8 +- lang/ja/help/glossary/usedynalinkentry.html | 8 +- lang/ja/help/groupmode.html | 21 +- lang/ja/help/groupmodeforce.html | 5 +- lang/ja/help/guestaccess.html | 20 +- lang/ja/help/html.html | 14 +- lang/ja/help/index.html | 191 +- lang/ja/help/journal/mods.html | 8 +- lang/ja/help/label/mods.html | 2 +- lang/ja/help/langedit.html | 10 +- lang/ja/help/lesson/bgcolor.html | 3 - lang/ja/help/lesson/custom.html | 6 - lang/ja/help/lesson/displayleft.html | 5 - lang/ja/help/lesson/grade.html | 9 +- lang/ja/help/lesson/height.html | 3 - lang/ja/help/lesson/import.html | 4 +- lang/ja/help/lesson/maxanswers.html | 6 +- lang/ja/help/lesson/maxtime.html | 3 - lang/ja/help/lesson/mods.html | 12 +- lang/ja/help/lesson/overview.html | 4 +- lang/ja/help/lesson/password.html | 3 - lang/ja/help/lesson/practice.html | 3 - lang/ja/help/lesson/timed.html | 6 - lang/ja/help/lesson/tree.html | 3 - lang/ja/help/lesson/usepassword.html | 3 - lang/ja/help/lesson/width.html | 3 - lang/ja/help/markdown.html | 285 +- lang/ja/help/mods.html | 62 +- lang/ja/help/picture.html | 34 +- lang/ja/help/questions.html | 36 +- lang/ja/help/quiz/attempts.html | 7 +- lang/ja/help/quiz/calculated.html | 20 +- lang/ja/help/quiz/categories.html | 15 +- lang/ja/help/quiz/categories_edit.html | 17 - lang/ja/help/quiz/correctanswers.html | 6 +- lang/ja/help/quiz/createmultiple.html | 4 +- lang/ja/help/quiz/decimalpoints.html | 3 - lang/ja/help/quiz/description.html | 8 +- lang/ja/help/quiz/export.html | 33 +- lang/ja/help/quiz/feedback.html | 6 +- lang/ja/help/quiz/formatctm.html | 4 +- lang/ja/help/quiz/formatgift.html | 317 +- lang/ja/help/quiz/formatwebct.html | 2 +- lang/ja/help/quiz/grademethod.html | 37 +- lang/ja/help/quiz/import.html | 4 +- lang/ja/help/quiz/index.html | 62 +- lang/ja/help/quiz/match.html | 9 +- lang/ja/help/quiz/maxgrade.html | 10 +- lang/ja/help/quiz/mods.html | 4 +- lang/ja/help/quiz/multianswer.html | 8 +- lang/ja/help/quiz/multichoice.html | 17 +- lang/ja/help/quiz/numerical.html | 12 +- lang/ja/help/quiz/popup.html | 20 - lang/ja/help/quiz/questiontypes.html | 87 +- lang/ja/help/quiz/random.html | 15 +- lang/ja/help/quiz/randommatch.html | 25 +- lang/ja/help/quiz/randomsamatch.html | 2 +- lang/ja/help/quiz/repeatattempts.html | 7 +- lang/ja/help/quiz/requiresubnet.html | 2 +- lang/ja/help/quiz/review.html | 6 +- lang/ja/help/quiz/review2.html | 3 - lang/ja/help/quiz/shortanswer.html | 12 +- lang/ja/help/quiz/shuffleanswers.html | 18 +- lang/ja/help/quiz/shufflequestions.html | 6 +- lang/ja/help/quiz/timeopen.html | 8 +- lang/ja/help/quiz/truefalse.html | 11 +- lang/ja/help/reading.html | 12 +- lang/ja/help/resource/index.html | 15 +- lang/ja/help/resource/mods.html | 10 +- lang/ja/help/resource/parameters.html | 8 +- lang/ja/help/resource/program.html | 15 + lang/ja/help/resource/resourcetype.html | 19 + lang/ja/help/resource/summary.html | 8 +- lang/ja/help/resource/type/directory.html | 4 +- lang/ja/help/resource/type/file.html | 12 +- lang/ja/help/resource/type/html.html | 4 +- lang/ja/help/resource/type/label.html | 4 +- lang/ja/help/resource/type/text.html | 6 +- lang/ja/help/resource/types.html | 2 +- lang/ja/help/resource/window.html | 20 +- lang/ja/help/richtext.html | 109 +- lang/ja/help/scales.html | 15 +- lang/ja/help/scorm/mods.html | 11 +- lang/ja/help/search.html | 44 - lang/ja/help/summaries.html | 6 +- lang/ja/help/survey/mods.html | 12 +- lang/ja/help/surveys.html | 54 +- lang/ja/help/teachers.html | 16 +- lang/ja/help/text.html | 96 +- lang/ja/help/textformat.html | 66 +- lang/ja/help/uploadusers.html | 10 +- lang/ja/help/wiki.html | 14 +- lang/ja/help/wiki/checklinks.html | 2 - lang/ja/help/wiki/howtowiki.html | 128 - lang/ja/help/wiki/htmlmode.html | 8 +- lang/ja/help/wiki/initialcontent.html | 5 - lang/ja/help/wiki/mods.html | 20 +- lang/ja/help/wiki/removepages.html | 3 - .../help/wiki/revertauthorfieldpattern.html | 4 - lang/ja/help/wiki/revertpages.html | 3 - lang/ja/help/wiki/setpageflags.html | 12 - lang/ja/help/wiki/strippages.html | 4 +- lang/ja/help/wiki/studentadminoptions.html | 3 - lang/ja/help/wiki/wikilinkoptions.html | 9 - lang/ja/help/wiki/wikiname.html | 6 - lang/ja/help/wiki/wikitype.html | 39 - lang/ja/help/wiki/wikiusage.html | 94 - lang/ja/help/workshop/anonymous.html | 7 - lang/ja/help/workshop/grade.html | 10 - lang/ja/help/workshop/gradinggrade.html | 17 - lang/ja/help/workshop/leaguetable.html | 7 - lang/ja/help/workshop/mods.html | 7 - .../nassessmentsofstudentsubmissions.html | 10 +- .../nassessmentsofteachersexamples.html | 6 +- lang/ja/help/workshop/nelements.html | 13 +- lang/ja/help/workshop/password.html | 7 - lang/ja/help/workshop/resubmit.html | 22 +- lang/ja/help/workshop/selfassessment.html | 10 +- lang/ja/help/workshop/specimen.html | 5 - lang/ja/help/writing.html | 18 +- lang/ja/hotpot.php | 6 +- lang/ja/install.php | 41 +- lang/ja/journal.php | 59 +- lang/ja/label.php | 13 +- lang/ja/lesson.php | 242 +- lang/ja/mediaplugin.php | 7 +- lang/ja/message.php | 63 - lang/ja/moodle.php | 670 +- lang/ja/multilang.php | 7 +- lang/ja/pgassignment.php | 178 + lang/ja/pix.php | 47 +- lang/ja/questionnaire.php | 16 +- lang/ja/quiz.php | 356 +- lang/ja/resource.php | 60 +- lang/ja/scorm.php | 37 +- lang/ja/survey.php | 36 +- lang/ja/tex.php | 7 +- lang/ja/timezones.php | 376 - lang/ja/webquest.php | 11 +- lang/ja/wiki.php | 83 +- lang/ja/workshop.php | 243 +- lang/ja_utf8/admin.php | 116 +- lang/ja_utf8/algebra.php | 7 +- lang/ja_utf8/appointment.php | 7 +- lang/ja_utf8/assignment.php | 48 +- lang/ja_utf8/attendance.php | 19 +- lang/ja_utf8/auth.php | 49 +- lang/ja_utf8/block_course_list.php | 6 +- lang/ja_utf8/block_course_summary.php | 5 +- lang/ja_utf8/block_glossary_random.php | 27 - lang/ja_utf8/block_html.php | 11 - lang/ja_utf8/block_online_users.php | 7 +- lang/ja_utf8/block_quiz_results.php | 28 - lang/ja_utf8/block_rss_client.php | 20 +- lang/ja_utf8/calendar.php | 53 +- lang/ja_utf8/chat.php | 9 +- lang/ja_utf8/choice.php | 42 +- lang/ja_utf8/countries.php | 4 +- lang/ja_utf8/dialogue.php | 15 +- lang/ja_utf8/docs/background.html | 12 +- lang/ja_utf8/docs/docstyles.css | 1 - lang/ja_utf8/docs/faq.html | 6 +- lang/ja_utf8/docs/features.html | 18 +- lang/ja_utf8/docs/future.html | 62 - lang/ja_utf8/docs/install.html | 8 +- lang/ja_utf8/docs/installamp.html | 14 +- lang/ja_utf8/docs/intro.html | 6 +- lang/ja_utf8/docs/licence.html | 405 +- lang/ja_utf8/docs/other.html | 8 +- lang/ja_utf8/docs/philosophy.html | 12 +- lang/ja_utf8/docs/release.html | 12 +- lang/ja_utf8/docs/teacher.html | 16 +- lang/ja_utf8/docs/upgrade.html | 15 +- lang/ja_utf8/editor.php | 22 +- lang/ja_utf8/enrol_database.php | 11 +- lang/ja_utf8/error.php | 10 +- lang/ja_utf8/exercise.php | 4 +- lang/ja_utf8/forum.php | 47 +- lang/ja_utf8/glossary.php | 29 +- lang/ja_utf8/grades.php | 125 - lang/ja_utf8/help/advancedsettings.html | 5 - .../help/assignment/assignmenttype.html | 6 +- .../help/assignment/emailteachers.html | 7 - lang/ja_utf8/help/assignment/index.html | 4 +- lang/ja_utf8/help/assignment/mods.html | 11 +- lang/ja_utf8/help/assignment/resubmit.html | 7 +- lang/ja_utf8/help/attendance/index.html | 12 +- lang/ja_utf8/help/attendance/mods.html | 2 +- lang/ja_utf8/help/book/index.html | 14 +- lang/ja_utf8/help/book/mods.html | 2 +- lang/ja_utf8/help/chat/chatting.html | 12 +- lang/ja_utf8/help/chat/index.html | 4 +- lang/ja_utf8/help/chat/mods.html | 8 +- lang/ja_utf8/help/choice/index.html | 5 +- lang/ja_utf8/help/choice/limit.html | 7 - lang/ja_utf8/help/choice/mods.html | 10 +- lang/ja_utf8/help/choice/timerestrict.html | 6 +- lang/ja_utf8/help/cookies.html | 7 +- lang/ja_utf8/help/courseavailability.html | 4 +- lang/ja_utf8/help/coursecategory.html | 6 +- lang/ja_utf8/help/courseformats.html | 8 +- lang/ja_utf8/help/coursefullname.html | 7 +- lang/ja_utf8/help/coursegrades.html | 9 +- lang/ja_utf8/help/coursehiddensections.html | 4 +- lang/ja_utf8/help/courseidnumber.html | 2 +- lang/ja_utf8/help/coursenewsitems.html | 6 +- lang/ja_utf8/help/coursenumsections.html | 10 +- lang/ja_utf8/help/courserecent.html | 10 +- lang/ja_utf8/help/coursereports.html | 9 +- lang/ja_utf8/help/courseshortname.html | 5 +- lang/ja_utf8/help/coursestartdate.html | 10 +- lang/ja_utf8/help/courseuploadsize.html | 5 +- lang/ja_utf8/help/dialogue/closedialogue.html | 2 +- lang/ja_utf8/help/dialogue/deleteafter.html | 4 +- lang/ja_utf8/help/dialogue/dialoguetype.html | 6 +- lang/ja_utf8/help/dialogue/index.html | 16 +- lang/ja_utf8/help/dialogue/info.html | 17 +- lang/ja_utf8/help/dialogue/maildefault.html | 5 +- lang/ja_utf8/help/dialogue/mods.html | 8 +- lang/ja_utf8/help/dialogue/multiple.html | 4 +- lang/ja_utf8/help/dialogue/sendmail.html | 2 +- lang/ja_utf8/help/enrolmentkey.html | 15 +- lang/ja_utf8/help/enrolperiod.html | 8 +- lang/ja_utf8/help/exercise/grade.html | 2 +- lang/ja_utf8/help/exercise/mods.html | 4 +- lang/ja_utf8/help/forum/allowdiscussions.html | 2 +- lang/ja_utf8/help/forum/forumtype.html | 2 +- lang/ja_utf8/help/forum/index.html | 10 +- lang/ja_utf8/help/forum/mods.html | 4 +- lang/ja_utf8/help/forum/ratings.html | 2 +- lang/ja_utf8/help/forum/rsstype.html | 2 +- lang/ja_utf8/help/forum/subscription2.html | 2 +- lang/ja_utf8/help/glossary/aliases2.html | 8 - .../ja_utf8/help/glossary/allowprintview.html | 7 - lang/ja_utf8/help/glossary/attachment.html | 14 - lang/ja_utf8/help/glossary/displayformat.html | 2 +- lang/ja_utf8/help/glossary/index.html | 40 +- lang/ja_utf8/help/glossary/mods.html | 2 +- lang/ja_utf8/help/glossary/shows.html | 2 +- lang/ja_utf8/help/glossary/usedynalink.html | 4 +- .../help/glossary/usedynalinkentry.html | 2 +- lang/ja_utf8/help/groupmode.html | 2 +- lang/ja_utf8/help/index.html | 5 +- lang/ja_utf8/help/journal/mods.html | 2 +- lang/ja_utf8/help/label/mods.html | 2 +- lang/ja_utf8/help/langedit.html | 2 +- lang/ja_utf8/help/lesson/bgcolor.html | 3 - lang/ja_utf8/help/lesson/custom.html | 6 - lang/ja_utf8/help/lesson/displayleft.html | 5 - lang/ja_utf8/help/lesson/grade.html | 4 +- lang/ja_utf8/help/lesson/height.html | 3 - lang/ja_utf8/help/lesson/import.html | 4 +- lang/ja_utf8/help/lesson/maxtime.html | 3 - lang/ja_utf8/help/lesson/mods.html | 2 +- lang/ja_utf8/help/lesson/overview.html | 4 +- lang/ja_utf8/help/lesson/password.html | 3 - lang/ja_utf8/help/lesson/practice.html | 3 - lang/ja_utf8/help/lesson/timed.html | 6 - lang/ja_utf8/help/lesson/tree.html | 3 - lang/ja_utf8/help/lesson/usepassword.html | 3 - lang/ja_utf8/help/lesson/width.html | 3 - lang/ja_utf8/help/markdown.html | 285 +- lang/ja_utf8/help/mods.html | 16 +- lang/ja_utf8/help/questions.html | 6 +- lang/ja_utf8/help/quiz/calculated.html | 20 +- lang/ja_utf8/help/quiz/categories_edit.html | 17 - lang/ja_utf8/help/quiz/createmultiple.html | 4 +- lang/ja_utf8/help/quiz/decimalpoints.html | 3 - lang/ja_utf8/help/quiz/export.html | 33 +- lang/ja_utf8/help/quiz/formatctm.html | 4 +- lang/ja_utf8/help/quiz/formatgift.html | 12 +- lang/ja_utf8/help/quiz/formatwebct.html | 2 +- lang/ja_utf8/help/quiz/import.html | 4 +- lang/ja_utf8/help/quiz/index.html | 62 +- lang/ja_utf8/help/quiz/match.html | 2 +- lang/ja_utf8/help/quiz/mods.html | 4 +- lang/ja_utf8/help/quiz/multianswer.html | 8 +- lang/ja_utf8/help/quiz/popup.html | 20 - lang/ja_utf8/help/quiz/random.html | 13 +- lang/ja_utf8/help/quiz/randomsamatch.html | 2 +- lang/ja_utf8/help/quiz/repeatattempts.html | 7 +- lang/ja_utf8/help/quiz/requiresubnet.html | 2 +- lang/ja_utf8/help/quiz/review2.html | 3 - lang/ja_utf8/help/quiz/shuffleanswers.html | 15 +- lang/ja_utf8/help/quiz/shufflequestions.html | 6 +- lang/ja_utf8/help/reading.html | 4 +- lang/ja_utf8/help/resource/index.html | 18 +- lang/ja_utf8/help/resource/mods.html | 8 +- lang/ja_utf8/help/resource/parameters.html | 8 +- lang/ja_utf8/help/resource/summary.html | 6 +- .../ja_utf8/help/resource/type/directory.html | 4 +- lang/ja_utf8/help/resource/type/file.html | 12 +- lang/ja_utf8/help/resource/type/html.html | 4 +- lang/ja_utf8/help/resource/type/label.html | 4 +- lang/ja_utf8/help/resource/type/text.html | 6 +- lang/ja_utf8/help/resource/types.html | 2 +- lang/ja_utf8/help/resource/window.html | 20 +- lang/ja_utf8/help/richtext.html | 35 +- lang/ja_utf8/help/scales.html | 5 +- lang/ja_utf8/help/scorm/mods.html | 11 +- lang/ja_utf8/help/search.html | 44 - lang/ja_utf8/help/summaries.html | 2 +- lang/ja_utf8/help/survey/mods.html | 4 +- lang/ja_utf8/help/surveys.html | 4 +- lang/ja_utf8/help/teachers.html | 4 +- lang/ja_utf8/help/textformat.html | 27 +- lang/ja_utf8/help/uploadusers.html | 4 +- lang/ja_utf8/help/wiki.html | 2 +- lang/ja_utf8/help/wiki/checklinks.html | 2 - lang/ja_utf8/help/wiki/howtowiki.html | 128 - lang/ja_utf8/help/wiki/initialcontent.html | 5 - lang/ja_utf8/help/wiki/mods.html | 2 +- lang/ja_utf8/help/wiki/removepages.html | 3 - .../help/wiki/revertauthorfieldpattern.html | 4 - lang/ja_utf8/help/wiki/revertpages.html | 3 - lang/ja_utf8/help/wiki/setpageflags.html | 12 - .../help/wiki/studentadminoptions.html | 3 - lang/ja_utf8/help/wiki/wikilinkoptions.html | 9 - lang/ja_utf8/help/wiki/wikiname.html | 6 - lang/ja_utf8/help/wiki/wikitype.html | 39 - lang/ja_utf8/help/wiki/wikiusage.html | 94 - lang/ja_utf8/help/workshop/anonymous.html | 7 - lang/ja_utf8/help/workshop/grade.html | 10 - lang/ja_utf8/help/workshop/gradinggrade.html | 17 - lang/ja_utf8/help/workshop/leaguetable.html | 7 - lang/ja_utf8/help/workshop/mods.html | 7 - lang/ja_utf8/help/workshop/nelements.html | 9 +- lang/ja_utf8/help/workshop/password.html | 7 - lang/ja_utf8/help/workshop/specimen.html | 5 - lang/ja_utf8/help/writing.html | 12 +- lang/ja_utf8/hotpot.php | 7 +- lang/ja_utf8/install.php | 15 +- lang/ja_utf8/journal.php | 8 +- lang/ja_utf8/lesson.php | 173 +- lang/ja_utf8/message.php | 63 - lang/ja_utf8/moodle.php | 383 +- lang/ja_utf8/quiz.php | 102 +- lang/ja_utf8/resource.php | 34 +- lang/ja_utf8/scorm.php | 25 +- lang/ja_utf8/survey.php | 13 +- lang/ja_utf8/timezones.php | 376 - lang/ja_utf8/wiki.php | 50 +- lang/ja_utf8/workshop.php | 133 +- lang/ka_utf8/README | 3 - lang/ka_utf8/assignment.php | 7 - lang/ka_utf8/block_course_list.php | 7 - lang/ka_utf8/block_online_users.php | 7 - lang/ka_utf8/calendar.php | 79 - lang/ka_utf8/chat.php | 8 - lang/ka_utf8/choice.php | 7 - lang/ka_utf8/docs/features.html | 164 - lang/ka_utf8/docs/files.php | 32 - lang/ka_utf8/docs/teacher.html | 244 - lang/ka_utf8/forum.php | 24 - lang/ka_utf8/glossary.php | 10 - lang/ka_utf8/journal.php | 7 - lang/ka_utf8/lesson.php | 7 - lang/ka_utf8/moodle.php | 359 - lang/ka_utf8/quiz.php | 79 - lang/ka_utf8/resource.php | 14 - lang/ka_utf8/survey.php | 7 - lang/ka_utf8/workshop.php | 7 - lang/kn_utf8/install.php | 7 +- lang/kn_utf8/moodle.php | 44 +- lang/ko/README.txt | 24 +- lang/ko/activitynames.php | 6 +- lang/ko/admin.php | 79 +- lang/ko/algebra.php | 17 +- lang/ko/appointment.php | 27 +- lang/ko/assignment.php | 110 +- lang/ko/attendance.php | 146 +- lang/ko/auth.php | 171 +- lang/ko/block_course_list.php | 5 +- lang/ko/block_course_summary.php | 7 +- lang/ko/block_glossary_random.php | 9 - lang/ko/block_html.php | 13 - lang/ko/block_online_users.php | 5 +- lang/ko/block_quiz_results.php | 9 - lang/ko/block_rss_client.php | 9 - lang/ko/block_section_links.php | 5 +- lang/ko/block_social_activities.php | 5 +- lang/ko/book.php | 46 - lang/ko/calendar.php | 5 +- lang/ko/censor.php | 19 +- lang/ko/chat.php | 89 +- lang/ko/choice.php | 58 +- lang/ko/countries.php | 476 +- lang/ko/dialogue.php | 139 +- lang/ko/editor.php | 204 +- lang/ko/emailprotect.php | 17 +- lang/ko/enrol_database.php | 17 +- lang/ko/enrol_flatfile.php | 17 +- lang/ko/enrol_internal.php | 17 +- lang/ko/enrol_ldap.php | 9 - lang/ko/enrol_paypal.php | 17 +- lang/ko/error.php | 36 +- lang/ko/exercise.php | 298 +- lang/ko/forum.php | 275 +- lang/ko/gallery.php | 9 - lang/ko/glossary.php | 311 +- lang/ko/hotpot.php | 5 +- lang/ko/install.php | 17 +- lang/ko/journal.php | 68 +- lang/ko/label.php | 21 +- lang/ko/lesson.php | 46 +- lang/ko/mediaplugin.php | 19 +- lang/ko/message.php | 9 - lang/ko/moodle.php | 1932 ++-- lang/ko/multilang.php | 19 +- lang/ko/pix.php | 55 +- lang/ko/questionnaire.php | 5 +- lang/ko/quiz.php | 418 +- lang/ko/resource.php | 138 +- lang/ko/rssfeed.php | 8 - lang/ko/scheduler.php | 42 - lang/ko/scorm.php | 26 +- lang/ko/survey.php | 283 +- lang/ko/tex.php | 19 +- lang/ko/webquest.php | 21 +- lang/ko/wiki.php | 203 +- lang/ko/workshop.php | 92 +- lang/ko_utf8/README | 12 - lang/ko_utf8/activitynames.php | 10 - lang/ko_utf8/admin.php | 42 - lang/ko_utf8/algebra.php | 10 - lang/ko_utf8/appointment.php | 48 - lang/ko_utf8/assignment.php | 61 - lang/ko_utf8/attendance.php | 75 - lang/ko_utf8/auth.php | 92 - lang/ko_utf8/block_course_list.php | 13 - lang/ko_utf8/block_course_summary.php | 9 - lang/ko_utf8/block_glossary_random.php | 9 - lang/ko_utf8/block_html.php | 13 - lang/ko_utf8/block_online_users.php | 12 - lang/ko_utf8/block_quiz_results.php | 9 - lang/ko_utf8/block_rss_client.php | 9 - lang/ko_utf8/block_section_links.php | 14 - lang/ko_utf8/block_social_activities.php | 10 - lang/ko_utf8/book.php | 46 - lang/ko_utf8/calendar.php | 98 - lang/ko_utf8/censor.php | 10 - lang/ko_utf8/chat.php | 46 - lang/ko_utf8/choice.php | 36 - lang/ko_utf8/countries.php | 250 - lang/ko_utf8/dialogue.php | 71 - lang/ko_utf8/editor.php | 102 - lang/ko_utf8/emailprotect.php | 9 - lang/ko_utf8/enrol_database.php | 9 - lang/ko_utf8/enrol_flatfile.php | 9 - lang/ko_utf8/enrol_internal.php | 9 - lang/ko_utf8/enrol_ldap.php | 9 - lang/ko_utf8/enrol_paypal.php | 9 - lang/ko_utf8/error.php | 23 - lang/ko_utf8/exercise.php | 134 - lang/ko_utf8/forum.php | 139 - lang/ko_utf8/gallery.php | 9 - lang/ko_utf8/glossary.php | 154 - lang/ko_utf8/hotpot.php | 15 - lang/ko_utf8/install.php | 9 - lang/ko_utf8/journal.php | 37 - lang/ko_utf8/label.php | 12 - lang/ko_utf8/lesson.php | 104 - lang/ko_utf8/mediaplugin.php | 10 - lang/ko_utf8/message.php | 9 - lang/ko_utf8/moodle.php | 1072 -- lang/ko_utf8/multilang.php | 10 - lang/ko_utf8/pix.php | 29 - lang/ko_utf8/questionnaire.php | 19 - lang/ko_utf8/quiz.php | 259 - lang/ko_utf8/resource.php | 76 - lang/ko_utf8/rssfeed.php | 8 - lang/ko_utf8/scheduler.php | 42 - lang/ko_utf8/scorm.php | 30 - lang/ko_utf8/survey.php | 78 - lang/ko_utf8/tex.php | 10 - lang/ko_utf8/webquest.php | 11 - lang/ko_utf8/wiki.php | 195 - lang/ko_utf8/workshop.php | 264 - lang/lt/auth.php | 4 +- lang/lt/forum.php | 10 +- lang/lt/glossary.php | 4 +- lang/lt/moodle.php | 1443 +-- lang/lt/quiz.php | 119 +- lang/lt/resource.php | 4 +- lang/lt/survey.php | 217 + lang/lt/wiki.php | 2 +- lang/lt/workshop.php | 12 +- lang/lv/auth.php | 6 +- lang/lv/forum.php | 8 +- lang/lv/moodle.php | 67 +- lang/lv/quiz.php | 10 +- lang/lv/resource.php | 4 +- lang/lv/survey.php | 2 +- lang/lv/workshop.php | 14 +- lang/ms/auth.php | 6 +- lang/ms/editor.php | 2 +- lang/ms/forum.php | 2 +- lang/ms/glossary.php | 6 +- lang/ms/help/forum/ratings.html | 2 +- lang/ms/moodle.php | 70 +- lang/ms/pgassignment.php | 4 +- lang/ms/quiz.php | 10 +- lang/ms/resource.php | 2 +- lang/ms/survey.php | 4 +- lang/ms/workshop.php | 4 +- lang/nl/README.txt | 11 +- lang/nl/activitynames.php | 5 +- lang/nl/admin.php | 121 +- lang/nl/algebra.php | 7 +- lang/nl/appointment.php | 23 +- lang/nl/assignment.php | 36 +- lang/nl/attendance.php | 19 +- lang/nl/auth.php | 118 +- lang/nl/block_course_list.php | 5 +- lang/nl/block_course_summary.php | 6 +- lang/nl/block_glossary_random.php | 27 - lang/nl/block_html.php | 11 - lang/nl/block_online_users.php | 9 +- lang/nl/block_quiz_results.php | 28 - lang/nl/block_rss_client.php | 18 +- lang/nl/block_section_links.php | 5 +- lang/nl/block_social_activities.php | 5 +- lang/nl/calendar.php | 29 +- lang/nl/censor.php | 7 +- lang/nl/chat.php | 25 +- lang/nl/choice.php | 18 +- lang/nl/countries.php | 5 +- lang/nl/dialogue.php | 18 +- lang/nl/docs/background.html | 25 +- lang/nl/docs/docstyles.css | 1 - lang/nl/docs/faq.html | 86 +- lang/nl/docs/features.html | 117 +- lang/nl/docs/files.php | 2 +- lang/nl/docs/install.html | 927 +- lang/nl/docs/intro.html | 21 +- lang/nl/docs/other.html | 13 +- lang/nl/docs/philosophy.html | 33 +- lang/nl/docs/release.html | 712 +- lang/nl/docs/releaseold.html | 1279 +-- lang/nl/docs/teacher.html | 234 +- lang/nl/docs/translation.html | 128 +- lang/nl/docs/upgrade.html | 31 +- lang/nl/editor.php | 22 +- lang/nl/emailprotect.php | 5 +- lang/nl/enrol_database.php | 7 +- lang/nl/enrol_flatfile.php | 5 +- lang/nl/enrol_internal.php | 7 +- lang/nl/enrol_ldap.php | 2 +- lang/nl/enrol_paypal.php | 5 +- lang/nl/error.php | 9 +- lang/nl/exercise.php | 68 +- lang/nl/forum.php | 54 +- lang/nl/glossary.php | 32 +- lang/nl/grades.php | 118 - lang/nl/help/advancedsettings.html | 6 - lang/nl/help/assignment/assignmenttype.html | 12 +- lang/nl/help/assignment/emailteachers.html | 8 - lang/nl/help/assignment/index.html | 6 +- lang/nl/help/assignment/mods.html | 8 +- lang/nl/help/assignment/resubmit.html | 10 +- lang/nl/help/attendance/index.html | 2 +- lang/nl/help/attendance/mods.html | 7 +- lang/nl/help/chat/chatting.html | 2 +- lang/nl/help/chat/index.html | 2 +- lang/nl/help/chat/mods.html | 8 +- lang/nl/help/choice/index.html | 5 +- lang/nl/help/choice/mods.html | 8 +- lang/nl/help/choice/options.html | 6 +- lang/nl/help/choice/timerestrict.html | 2 +- lang/nl/help/cookies.html | 4 +- lang/nl/help/courseavailability.html | 2 +- lang/nl/help/coursecategory.html | 9 +- lang/nl/help/courseformats.html | 20 +- lang/nl/help/coursefullname.html | 4 +- lang/nl/help/coursegrades.html | 4 +- lang/nl/help/courseidnumber.html | 4 +- lang/nl/help/coursenewsitems.html | 10 +- lang/nl/help/coursenumsections.html | 12 +- lang/nl/help/courserecent.html | 14 +- lang/nl/help/coursereports.html | 8 +- lang/nl/help/courseshortname.html | 6 +- lang/nl/help/coursestartdate.html | 16 +- lang/nl/help/courseuploadsize.html | 10 +- lang/nl/help/dialogue/dialoguetype.html | 8 +- lang/nl/help/dialogue/index.html | 14 +- lang/nl/help/dialogue/info.html | 2 +- lang/nl/help/dialogue/mods.html | 8 +- lang/nl/help/directorypaths.html | 8 +- lang/nl/help/emoticons.html | 86 +- lang/nl/help/enrolmentkey.html | 22 +- lang/nl/help/enrolperiod.html | 2 +- lang/nl/help/exercise/administration.html | 10 +- .../exercise/comparisonofassessments.html | 10 +- lang/nl/help/exercise/elements.html | 48 +- lang/nl/help/exercise/finalgrades.html | 6 +- lang/nl/help/exercise/grade.html | 6 +- lang/nl/help/exercise/grading.html | 17 +- lang/nl/help/exercise/gradinggrade.html | 6 +- lang/nl/help/exercise/gradingstrategy.html | 42 +- lang/nl/help/exercise/index.html | 2 +- lang/nl/help/exercise/leaguetable.html | 4 +- lang/nl/help/exercise/leaguetablenames.html | 2 +- lang/nl/help/exercise/managing.html | 47 +- lang/nl/help/exercise/mods.html | 9 +- lang/nl/help/exercise/moreinfo.html | 44 +- lang/nl/help/exercise/nelements.html | 8 +- lang/nl/help/exercise/regrading.html | 4 +- lang/nl/help/exercise/specimen.html | 2 +- .../exercise/submissionofdescriptions.html | 7 +- lang/nl/help/exercise/takeownership.html | 4 +- lang/nl/help/exercise/usemax.html | 6 +- lang/nl/help/forum/allowdiscussions.html | 16 +- lang/nl/help/forum/attachment.html | 18 +- lang/nl/help/forum/forumtype.html | 17 +- lang/nl/help/forum/index.html | 16 +- lang/nl/help/forum/maxattachmentsize.html | 8 +- lang/nl/help/forum/mods.html | 7 +- lang/nl/help/forum/ratings.html | 19 +- lang/nl/help/forum/rssarticles.html | 6 +- lang/nl/help/forum/rsstype.html | 14 +- lang/nl/help/forum/subscription.html | 16 +- lang/nl/help/forum/subscription2.html | 18 +- lang/nl/help/glossary/aliases.html | 4 +- lang/nl/help/glossary/aliases2.html | 7 - lang/nl/help/glossary/allowcomments.html | 6 +- .../help/glossary/allowduplicatedentries.html | 4 +- lang/nl/help/glossary/allowprintview.html | 7 - lang/nl/help/glossary/attachment.html | 11 - lang/nl/help/glossary/casesensitive.html | 4 +- lang/nl/help/glossary/defaultapproval.html | 2 +- lang/nl/help/glossary/description.html | 4 +- lang/nl/help/glossary/destination.html | 6 +- lang/nl/help/glossary/displayformat.html | 14 +- lang/nl/help/glossary/editalways.html | 14 +- lang/nl/help/glossary/entbypage.html | 4 +- lang/nl/help/glossary/filetoimport.html | 4 +- lang/nl/help/glossary/fullmatch.html | 5 +- lang/nl/help/glossary/globalglossary.html | 4 +- lang/nl/help/glossary/importcategories.html | 4 +- lang/nl/help/glossary/index.html | 42 +- lang/nl/help/glossary/linkcategory.html | 4 +- lang/nl/help/glossary/mainglossary.html | 4 +- lang/nl/help/glossary/mods.html | 12 +- lang/nl/help/glossary/rssarticles.html | 6 +- lang/nl/help/glossary/rsstype.html | 15 +- lang/nl/help/glossary/shows.html | 4 +- lang/nl/help/glossary/studentcanpost.html | 6 +- lang/nl/help/glossary/usedynalink.html | 5 +- lang/nl/help/glossary/usedynalinkentry.html | 4 +- lang/nl/help/groupmode.html | 15 +- lang/nl/help/groupmodeforce.html | 4 +- lang/nl/help/guestaccess.html | 26 +- lang/nl/help/hideoptions.html | 4 - lang/nl/help/html.html | 15 +- lang/nl/help/index.html | 72 +- lang/nl/help/journal/mods.html | 8 +- lang/nl/help/label/mods.html | 8 +- lang/nl/help/langedit.html | 13 +- lang/nl/help/lesson/bgcolor.html | 3 - lang/nl/help/lesson/custom.html | 3 - lang/nl/help/lesson/deleteattempts.html | 3 - lang/nl/help/lesson/displayleft.html | 3 - lang/nl/help/lesson/height.html | 3 - lang/nl/help/lesson/highscores.html | 3 - lang/nl/help/lesson/import.html | 144 +- lang/nl/help/lesson/index.html | 20 - lang/nl/help/lesson/lessondefault.html | 3 - lang/nl/help/lesson/maxattempts.html | 2 +- lang/nl/help/lesson/maxhighscores.html | 3 - lang/nl/help/lesson/maxtime.html | 3 - lang/nl/help/lesson/minquestions.html | 2 +- lang/nl/help/lesson/modattempts.html | 3 - lang/nl/help/lesson/mods.html | 7 +- lang/nl/help/lesson/overview.html | 49 +- lang/nl/help/lesson/password.html | 3 - lang/nl/help/lesson/practice.html | 3 - lang/nl/help/lesson/questionoption.html | 2 +- lang/nl/help/lesson/questiontypes.html | 4 +- lang/nl/help/lesson/review.html | 3 - lang/nl/help/lesson/slideshow.html | 4 - lang/nl/help/lesson/timed.html | 3 - lang/nl/help/lesson/tree.html | 3 - lang/nl/help/lesson/usepassword.html | 3 - lang/nl/help/lesson/width.html | 3 - lang/nl/help/mods.html | 7 +- lang/nl/help/picture.html | 42 +- lang/nl/help/questionnaire/qmanage.html | 6 +- lang/nl/help/questionnaire/qtype.html | 6 +- .../help/questionnaire/questionnaireid.html | 6 +- .../nl/help/questionnaire/respondenttype.html | 6 +- lang/nl/help/questions.html | 27 +- lang/nl/help/quiz/attempts.html | 6 +- lang/nl/help/quiz/calculated.html | 2 +- lang/nl/help/quiz/categories.html | 16 +- lang/nl/help/quiz/categories_edit.html | 17 - lang/nl/help/quiz/correctanswers.html | 6 +- lang/nl/help/quiz/createmultiple.html | 10 +- lang/nl/help/quiz/decimalpoints.html | 3 - lang/nl/help/quiz/description.html | 6 +- lang/nl/help/quiz/discrimination.html | 8 +- lang/nl/help/quiz/export.html | 16 +- lang/nl/help/quiz/feedback.html | 4 +- lang/nl/help/quiz/formataiken.html | 2 +- lang/nl/help/quiz/formatblackboard.html | 2 +- lang/nl/help/quiz/formatctm.html | 18 +- lang/nl/help/quiz/formatcustom.html | 2 +- lang/nl/help/quiz/formatgift.html | 18 +- lang/nl/help/quiz/formatmissingword.html | 2 +- lang/nl/help/quiz/formatwebct.html | 2 +- lang/nl/help/quiz/grademethod.html | 36 +- lang/nl/help/quiz/import.html | 140 +- lang/nl/help/quiz/index.html | 64 +- lang/nl/help/quiz/match.html | 8 +- lang/nl/help/quiz/maxgrade.html | 12 +- lang/nl/help/quiz/mods.html | 8 +- lang/nl/help/quiz/multianswer.html | 29 +- lang/nl/help/quiz/multichoice.html | 18 +- lang/nl/help/quiz/numerical.html | 6 +- lang/nl/help/quiz/popup.html | 4 +- lang/nl/help/quiz/questiondatasets.html | 4 +- lang/nl/help/quiz/questiontypes.html | 115 +- lang/nl/help/quiz/randomsamatch.html | 2 +- lang/nl/help/quiz/requiresubnet.html | 2 +- lang/nl/help/quiz/review.html | 8 +- lang/nl/help/quiz/review2.html | 4 - lang/nl/help/quiz/shortanswer.html | 10 +- lang/nl/help/quiz/shuffleanswers.html | 2 +- lang/nl/help/quiz/shufflequestions.html | 2 +- lang/nl/help/quiz/timelimit.html | 2 +- lang/nl/help/quiz/timeopen.html | 6 +- lang/nl/help/quiz/truefalse.html | 12 +- lang/nl/help/reading.html | 27 +- lang/nl/help/resource/index.html | 21 +- lang/nl/help/resource/mods.html | 11 +- lang/nl/help/resource/parameters.html | 1 - lang/nl/help/resource/summary.html | 8 +- lang/nl/help/resource/type/directory.html | 4 +- lang/nl/help/resource/type/file.html | 4 +- lang/nl/help/resource/type/html.html | 4 +- lang/nl/help/resource/type/label.html | 4 +- lang/nl/help/resource/type/text.html | 6 +- lang/nl/help/resource/window.html | 2 +- lang/nl/help/richtext.html | 139 +- lang/nl/help/scales.html | 11 +- lang/nl/help/scheduler/mods.html | 8 +- lang/nl/help/scorm/mods.html | 8 +- lang/nl/help/search.html | 44 - lang/nl/help/summaries.html | 6 +- lang/nl/help/survey/index.html | 2 +- lang/nl/help/survey/mods.html | 8 +- lang/nl/help/surveys.html | 66 +- lang/nl/help/teachers.html | 25 +- lang/nl/help/text.html | 134 +- lang/nl/help/textformat.html | 83 +- lang/nl/help/uploadusers.html | 25 +- lang/nl/help/wiki.html | 55 +- lang/nl/help/wiki/checklinks.html | 4 +- lang/nl/help/wiki/ewikiacceptbinary.html | 12 +- lang/nl/help/wiki/howtowiki.html | 27 +- lang/nl/help/wiki/htmlmode.html | 6 +- lang/nl/help/wiki/index.html | 28 +- lang/nl/help/wiki/initialcontent.html | 17 +- lang/nl/help/wiki/mods.html | 14 +- lang/nl/help/wiki/removepages.html | 6 +- .../help/wiki/revertauthorfieldpattern.html | 6 +- lang/nl/help/wiki/revertpages.html | 4 +- lang/nl/help/wiki/setpageflags.html | 6 +- lang/nl/help/wiki/strippages.html | 4 +- lang/nl/help/wiki/studentadminoptions.html | 6 +- lang/nl/help/wiki/wikilinkoptions.html | 6 +- lang/nl/help/wiki/wikiname.html | 8 +- lang/nl/help/wiki/wikitype.html | 10 +- lang/nl/help/wiki/wikiusage.html | 35 +- lang/nl/help/workshop/addingacomment.html | 24 +- lang/nl/help/workshop/agreeassessments.html | 24 +- .../help/workshop/analysisofassessments.html | 23 +- lang/nl/help/workshop/anonymous.html | 15 +- .../help/workshop/assessmentofexamples.html | 13 +- lang/nl/help/workshop/assignmenttype.html | 6 +- .../help/workshop/breakdownoffinalgrade.html | 22 +- .../help/workshop/calculatingfinalgrade.html | 43 +- lang/nl/help/workshop/editingacomment.html | 6 +- lang/nl/help/workshop/elements.html | 45 +- lang/nl/help/workshop/finalgrades.html | 6 +- lang/nl/help/workshop/graded.html | 8 +- lang/nl/help/workshop/grading.html | 18 +- lang/nl/help/workshop/gradingassessments.html | 4 +- lang/nl/help/workshop/gradingstrategy.html | 69 +- lang/nl/help/workshop/gradingsubmissions.html | 14 +- lang/nl/help/workshop/includeself.html | 10 +- .../help/workshop/includeteachersgrade.html | 4 +- lang/nl/help/workshop/index.html | 63 +- lang/nl/help/workshop/leaguetable.html | 11 +- lang/nl/help/workshop/managing.html | 75 +- lang/nl/help/workshop/mods.html | 8 +- .../nassessmentsofstudentsubmissions.html | 12 +- .../nassessmentsofteachersexamples.html | 11 +- lang/nl/help/workshop/nelements.html | 12 +- lang/nl/help/workshop/numberofassessors.html | 14 +- lang/nl/help/workshop/overallocation.html | 6 +- lang/nl/help/workshop/resubmit.html | 17 +- lang/nl/help/workshop/selfassessment.html | 12 +- lang/nl/help/workshop/showinggrades.html | 10 +- lang/nl/help/workshop/specimen.html | 2 +- .../help/workshop/submissionofexamples.html | 19 +- lang/nl/help/workshop/teachersgradings.html | 10 +- .../workshop/ungradedassessments_student.html | 4 +- .../workshop/ungradedassessments_teacher.html | 10 +- lang/nl/help/writing.html | 25 +- lang/nl/hotpot.php | 5 +- lang/nl/install.php | 58 +- lang/nl/journal.php | 12 +- lang/nl/label.php | 11 +- lang/nl/lesson.php | 182 +- lang/nl/mediaplugin.php | 7 +- lang/nl/message.php | 63 - lang/nl/moodle.php | 527 +- lang/nl/multilang.php | 5 +- lang/nl/pix.php | 45 +- lang/nl/questionnaire.php | 7 +- lang/nl/quiz.php | 136 +- lang/nl/resource.php | 54 +- lang/nl/scheduler.php | 7 +- lang/nl/scorm.php | 38 +- lang/nl/survey.php | 15 +- lang/nl/tex.php | 7 +- lang/nl/timezones.php | 376 - lang/nl/webquest.php | 9 +- lang/nl/wiki.php | 57 +- lang/nl/workshop.php | 113 +- lang/no/auth.php | 6 +- lang/no/dialogue.php | 4 +- lang/no/docs/faq.html | 4 +- lang/no/docs/install.html | 4 +- lang/no/docs/intro.html | 2 +- lang/no/docs/upgrade.html | 6 +- lang/no/editor.php | 2 +- lang/no/exercise.php | 16 +- lang/no/forum.php | 2 +- lang/no/glossary.php | 8 +- lang/no/help/assignment/mods.html | 2 +- lang/no/help/attendance/mods.html | 2 +- lang/no/help/chat/mods.html | 2 +- lang/no/help/choice/mods.html | 2 +- lang/no/help/dialogue/info.html | 2 +- lang/no/help/dialogue/mods.html | 2 +- lang/no/help/forum/mods.html | 2 +- lang/no/help/forum/ratings.html | 2 +- lang/no/help/journal/mods.html | 2 +- lang/no/help/label/mods.html | 2 +- lang/no/help/quiz/multianswer.html | 14 +- lang/no/help/resource/mods.html | 2 +- lang/no/help/survey/mods.html | 2 +- lang/no/help/surveys.html | 4 +- lang/no/help/workshop/mods.html | 2 +- lang/no/moodle.php | 66 +- lang/no/quiz.php | 10 +- lang/no/resource.php | 4 +- lang/no/survey.php | 4 +- lang/no/workshop.php | 4 +- lang/no_gr/auth.php | 6 +- lang/no_gr/editor.php | 2 +- lang/no_gr/forum.php | 2 +- lang/no_gr/glossary.php | 2 +- lang/no_gr/moodle.php | 62 +- lang/no_gr/survey.php | 4 +- lang/pl/README | 3 - lang/pl/activitynames.php | 4 +- lang/pl/admin.php | 12 +- lang/pl/assignment.php | 68 +- lang/pl/attendance.php | 22 +- lang/pl/auth.php | 21 +- lang/pl/block_course_list.php | 4 +- lang/pl/block_course_summary.php | 3 +- lang/pl/calendar.php | 8 +- lang/pl/chat.php | 26 +- lang/pl/choice.php | 24 +- lang/pl/countries.php | 3 +- lang/pl/dialogue.php | 12 +- lang/pl/docs/README.txt | 90 +- lang/pl/docs/background.html | 80 +- lang/pl/docs/coding.html | 312 +- lang/pl/docs/credits.html | 490 +- lang/pl/docs/cvs.html | 274 +- lang/pl/docs/developer.html | 444 +- lang/pl/docs/faq.html | 328 +- lang/pl/docs/features.html | 276 +- lang/pl/docs/files.php | 38 +- lang/pl/docs/future.html | 92 +- lang/pl/docs/glossary.html | 316 +- lang/pl/docs/index.html | 82 +- lang/pl/docs/install.html | 610 +- lang/pl/docs/installamp.html | 220 +- lang/pl/docs/intro.html | 64 +- lang/pl/docs/module_files.txt | 22 +- lang/pl/docs/other.html | 120 +- lang/pl/docs/release.html | 644 +- lang/pl/docs/teacher.html | 452 +- lang/pl/docs/upgrade.html | 198 +- lang/pl/editor.php | 6 +- lang/pl/error.php | 4 +- lang/pl/exercise.php | 47 +- lang/pl/forum.php | 18 +- lang/pl/glossary.php | 22 +- lang/pl/help/assignment/assignmenttype.html | 18 +- lang/pl/help/assignment/index.html | 10 +- lang/pl/help/assignment/mods.html | 10 +- lang/pl/help/assignment/resubmit.html | 16 +- lang/pl/help/chat/chatting.html | 4 +- lang/pl/help/choice/index.html | 8 +- lang/pl/help/choice/mods.html | 8 +- lang/pl/help/choice/options.html | 10 +- lang/pl/help/cookies.html | 14 +- lang/pl/help/courseavailability.html | 16 +- lang/pl/help/coursecategory.html | 16 +- lang/pl/help/courseformats.html | 38 +- lang/pl/help/coursefullname.html | 6 +- lang/pl/help/coursegrades.html | 14 +- lang/pl/help/coursenewsitems.html | 16 +- lang/pl/help/coursenumsections.html | 18 +- lang/pl/help/courserecent.html | 20 +- lang/pl/help/courseshortname.html | 6 +- lang/pl/help/coursestartdate.html | 22 +- lang/pl/help/dialogue/info.html | 2 +- lang/pl/help/dialogue/writing.html | 24 +- lang/pl/help/emoticons.html | 240 +- lang/pl/help/enrolmentkey.html | 26 +- lang/pl/help/exercise/administration.html | 2 +- lang/pl/help/exercise/elements.html | 2 +- lang/pl/help/exercise/finalgrades.html | 2 +- lang/pl/help/exercise/gradingstrategy.html | 2 +- lang/pl/help/forum/allowdiscussions.html | 22 +- lang/pl/help/forum/attachment.html | 24 +- lang/pl/help/forum/forumtype.html | 24 +- lang/pl/help/forum/index.html | 16 +- lang/pl/help/forum/mods.html | 16 +- lang/pl/help/forum/ratings.html | 94 +- lang/pl/help/forum/subscription.html | 22 +- lang/pl/help/glossary/destination.html | 14 +- lang/pl/help/glossary/displayformat.html | 56 +- lang/pl/help/glossary/entbypage.html | 18 +- lang/pl/help/glossary/filetoimport.html | 6 +- lang/pl/help/glossary/fullmatch.html | 12 +- lang/pl/help/glossary/globalglossary.html | 18 +- lang/pl/help/glossary/importcategories.html | 10 +- lang/pl/help/guestaccess.html | 22 +- lang/pl/help/html.html | 34 +- lang/pl/help/index.html | 92 +- lang/pl/help/journal/index.html | 2 +- lang/pl/help/journal/mods.html | 12 +- lang/pl/help/langedit.html | 20 +- lang/pl/help/lesson/jumpto.html | 6 +- lang/pl/help/lesson/nextpageaction.html | 2 +- lang/pl/help/lesson/overview.html | 14 +- lang/pl/help/lesson/questionoption.html | 4 +- lang/pl/help/lesson/questiontype.html | 40 +- lang/pl/help/lesson/questiontypes.html | 40 +- lang/pl/help/mods.html | 7 +- lang/pl/help/picture.html | 38 +- lang/pl/help/questions.html | 158 +- lang/pl/help/quiz/.#multianswer.html.1.1 | 44 + lang/pl/help/quiz/attempts.html | 10 +- lang/pl/help/quiz/categories.html | 22 +- lang/pl/help/quiz/correctanswers.html | 10 +- lang/pl/help/quiz/createmultiple.html | 12 +- lang/pl/help/quiz/description.html | 14 +- lang/pl/help/quiz/feedback.html | 6 +- lang/pl/help/quiz/formataiken.html | 14 +- lang/pl/help/quiz/formatctm.html | 154 +- lang/pl/help/quiz/formatwebct.html | 2 +- lang/pl/help/quiz/grademethod.html | 48 +- lang/pl/help/quiz/import.html | 133 +- lang/pl/help/quiz/index.html | 2 +- lang/pl/help/quiz/match.html | 6 +- lang/pl/help/quiz/maxgrade.html | 12 +- lang/pl/help/quiz/multianswer.html | 14 +- lang/pl/help/quiz/multichoice.html | 22 +- lang/pl/help/quiz/numerical.html | 2 +- lang/pl/help/quiz/questiontypes.html | 64 +- lang/pl/help/quiz/random.html | 16 +- lang/pl/help/quiz/randomsamatch.html | 10 +- lang/pl/help/quiz/review.html | 10 +- lang/pl/help/quiz/shortanswer.html | 14 +- lang/pl/help/quiz/shuffleanswers.html | 8 +- lang/pl/help/quiz/shufflequestions.html | 6 +- lang/pl/help/quiz/timeopen.html | 12 +- lang/pl/help/quiz/truefalse.html | 14 +- lang/pl/help/reading.html | 20 +- lang/pl/help/resource/index.html | 14 +- lang/pl/help/resource/mods.html | 10 +- lang/pl/help/resource/program.html | 32 +- lang/pl/help/resource/resourcetype.html | 50 +- lang/pl/help/resource/summary.html | 16 +- lang/pl/help/richtext.html | 320 +- lang/pl/help/scales.html | 30 +- lang/pl/help/summaries.html | 16 +- lang/pl/help/survey/index.html | 10 +- lang/pl/help/survey/mods.html | 10 +- lang/pl/help/surveys.html | 164 +- lang/pl/help/teachers.html | 20 +- lang/pl/help/text.html | 288 +- lang/pl/help/textformat.html | 102 +- lang/pl/help/uploadusers.html | 17 +- lang/pl/help/wiki.html | 254 +- lang/pl/help/workshop/addingacomment.html | 28 +- lang/pl/help/workshop/agreeassessments.html | 24 +- lang/pl/help/workshop/anonymous.html | 16 +- .../help/workshop/assessmentofexamples.html | 2 +- lang/pl/help/workshop/assignmenttype.html | 26 +- .../help/workshop/breakdownoffinalgrade.html | 24 +- .../help/workshop/calculatingfinalgrade.html | 44 +- lang/pl/help/workshop/editingacomment.html | 8 +- lang/pl/help/workshop/elements.html | 58 +- lang/pl/help/workshop/finalgrades.html | 26 +- lang/pl/help/workshop/graded.html | 24 +- lang/pl/help/workshop/grading.html | 64 +- lang/pl/help/workshop/gradingassessments.html | 40 +- lang/pl/help/workshop/gradingstrategy.html | 132 +- lang/pl/help/workshop/includeself.html | 14 +- lang/pl/help/workshop/leaguetable.html | 20 +- lang/pl/help/workshop/managing.html | 48 +- .../nassessmentsofstudentsubmissions.html | 10 +- .../nassessmentsofteachersexamples.html | 10 +- lang/pl/help/workshop/nelements.html | 12 +- lang/pl/help/workshop/numberofassessors.html | 18 +- lang/pl/help/workshop/overallocation.html | 2 +- lang/pl/help/workshop/resubmit.html | 20 +- lang/pl/help/workshop/selfassessment.html | 16 +- lang/pl/help/workshop/showinggrades.html | 26 +- lang/pl/help/workshop/specimen.html | 10 +- .../help/workshop/submissionofexamples.html | 2 +- lang/pl/help/workshop/teachersgradings.html | 14 +- lang/pl/help/writing.html | 32 +- lang/pl/lesson.php | 7 +- lang/pl/mbc.php | 2 +- lang/pl/moodle.php | 419 +- lang/pl/pix.php | 2 +- lang/pl/quiz.php | 81 +- lang/pl/resource.php | 35 +- lang/pl/scorm.php | 42 +- lang/pl/survey.php | 6 +- lang/pl/wiki.php | 18 +- lang/pl/workshop.php | 8 +- lang/pt/auth.php | 2 +- lang/pt/countries.php | 3 +- lang/pt/dialogue.php | 15 +- lang/pt/docs/background.html | 22 +- lang/pt/docs/faq.html | 510 - lang/pt/docs/files.jpg | Bin 70697 -> 0 bytes lang/pt/docs/files.php | 12 +- lang/pt/docs/install.html | 12 +- lang/pt/docs/installamp.html | 108 +- lang/pt/docs/intro.html | 12 +- lang/pt/docs/licence.html | 2 +- lang/pt/docs/semanal.jpg | Bin 66489 -> 0 bytes lang/pt/docs/social.jpg | Bin 74841 -> 0 bytes lang/pt/docs/teacher.html | 291 - lang/pt/docs/topicos.jpg | Bin 73246 -> 0 bytes lang/pt/editor.php | 2 +- lang/pt/exercise.php | 2 +- lang/pt/forum.php | 98 +- lang/pt/glossary.php | 26 +- lang/pt/help/assignment/mods.html | 2 +- lang/pt/install.php | 26 - lang/pt/moodle.php | 247 +- lang/pt/quiz.php | 41 +- lang/pt/resource.php | 23 +- lang/pt_br/README | 40 +- lang/pt_br/admin.php | 34 +- lang/pt_br/algebra.php | 4 +- lang/pt_br/attendance.php | 4 +- lang/pt_br/auth.php | 42 +- lang/pt_br/block_course_list.php | 3 +- lang/pt_br/block_course_summary.php | 4 +- lang/pt_br/block_online_users.php | 4 +- lang/pt_br/calendar.php | 37 +- lang/pt_br/chat.php | 7 +- lang/pt_br/choice.php | 3 +- lang/pt_br/countries.php | 4 +- lang/pt_br/dialogue.php | 3 +- lang/pt_br/docs/background.html | 87 - lang/pt_br/docs/teacher.html | 247 - lang/pt_br/editor.php | 7 +- lang/pt_br/emailprotect.php | 7 - lang/pt_br/enrol_database.php | 18 - lang/pt_br/enrol_flatfile.php | 15 +- lang/pt_br/enrol_internal.php | 7 +- lang/pt_br/enrol_paypal.php | 4 +- lang/pt_br/error.php | 6 +- lang/pt_br/exercise.php | 11 +- lang/pt_br/forum.php | 10 +- lang/pt_br/glossary.php | 54 +- lang/pt_br/help/attendance/mods.html | 2 +- lang/pt_br/help/forum/ratings.html | 4 +- lang/pt_br/help/resource/resourcetype.html | 12 +- lang/pt_br/help/richtext.html | 2 +- lang/pt_br/hotpot.php | 12 - lang/pt_br/install.php | 18 +- lang/pt_br/lesson.php | 181 +- lang/pt_br/moodle.php | 186 +- lang/pt_br/multilang.php | 2 +- lang/pt_br/quiz.php | 62 +- lang/pt_br/resource.php | 27 +- lang/pt_br/scorm.php | 3 +- lang/pt_br/survey.php | 8 +- lang/pt_br/wiki.php | 19 +- lang/pt_br/workshop.php | 93 +- lang/ro/auth.php | 60 + lang/ro/forum.php | 321 +- lang/ro/moodle.php | 1003 +- lang/ro/quiz.php | 8 +- lang/ro/resource.php | 31 +- lang/ro/survey.php | 582 +- lang/ru/README | 11 +- lang/ru/activitynames.php | 2 +- lang/ru/admin.php | 4 +- .../appointment.php} | 0 lang/ru/assignment.php | 96 +- lang/ru/attendance.php | 6 +- lang/ru/auth.php | 26 +- lang/ru/chat.php | 7 +- lang/ru/countries.php | 162 +- lang/ru/dialogue.php | 54 +- lang/ru/docs/faq.html | 850 +- lang/ru/docs/intro.html | 2 +- lang/ru/docs/licence.html | 2 +- lang/ru/docs/teacher.html | 26 +- lang/ru/editor.php | 155 +- lang/ru/enrol_flatfile.php | 14 +- lang/ru/error.php | 6 +- lang/ru/exercise.php | 11 +- lang/ru/forum.php | 16 +- lang/ru/glossary.php | 73 +- lang/ru/help/assignment/mods.html | 6 - lang/ru/help/choice/mods.html | 5 - lang/ru/help/cookies.html | 5 +- lang/ru/help/coursenumsections.html | 12 +- lang/ru/help/courserecent.html | 18 +- lang/ru/help/emoticons.html | 120 - lang/ru/help/forum/mods.html | 4 - lang/ru/help/forum/ratings.html | 2 +- lang/ru/help/index.html | 52 - lang/ru/help/journal/mods.html | 7 - lang/ru/help/label/mods.html | 5 - lang/ru/help/langedit.html | 18 +- lang/ru/help/lesson/mods.html | 2 +- lang/ru/help/mods.html | 43 +- lang/ru/help/picture.html | 30 +- lang/ru/help/questions.html | 150 +- lang/ru/help/quiz/mods.html | 5 - lang/ru/help/reading.html | 20 +- lang/ru/help/resource/mods.html | 5 - lang/ru/help/resource/resourcetype.html | 2 +- lang/ru/help/richtext.html | 334 +- lang/ru/help/survey/mods.html | 4 - lang/ru/help/text.html | 288 +- lang/ru/help/textformat.html | 104 +- lang/ru/help/wiki.html | 164 - lang/ru/help/wiki/howtowiki.html | 185 - lang/ru/help/wiki/index.html | 18 - lang/ru/help/wiki/mods.html | 16 - lang/ru/help/writing.html | 32 +- lang/ru/journal.php | 70 +- lang/ru/label.php | 6 +- lang/ru/lesson.php | 94 +- lang/ru/moodle.php | 120 +- lang/ru/quiz.php | 25 +- lang/ru/resource.php | 46 +- lang/ru/survey.php | 2 +- lang/ru/wiki.php | 241 +- lang/sk/auth.php | 6 +- lang/sk/docs/teacher.html | 2 +- lang/sk/forum.php | 2 +- lang/sk/help/forum/ratings.html | 2 +- lang/sk/moodle.php | 1513 +-- lang/sk/quiz.php | 10 +- lang/sk/resource.php | 2 +- lang/sk/survey.php | 4 +- lang/sk/workshop.php | 8 +- lang/sl/auth.php | 4 +- lang/sl/editor.php | 2 +- lang/sl/exercise.php | 2 +- lang/sl/forum.php | 2 +- lang/sl/glossary.php | 6 +- lang/sl/moodle.php | 537 +- lang/sl/quiz.php | 6 +- lang/sl/resource.php | 2 +- lang/sl/survey.php | 4 +- lang/sl/workshop.php | 12 +- lang/sq/auth.php | 6 +- lang/sq/chat.php | 2 +- lang/sq/chatarea.php | Bin 0 -> 3580 bytes lang/sq/exercise.php | 16 +- lang/sq/fonts/default.ttf | Bin 0 -> 134188 bytes lang/sq/glossary.php | 6 +- lang/sq/moodle.php | 65 +- lang/sq/quiz.php | 8 +- lang/sq/resource.php | 2 +- lang/sq/survey.php | 4 +- lang/sq/workshop.php | 6 +- lang/sr_utf8/auth.php | 4 +- lang/sr_utf8/calendar.php | 2 +- lang/sr_utf8/chat.php | 85 +- lang/sr_utf8/editor.php | 2 +- lang/sr_utf8/forum.php | 2 +- lang/sr_utf8/glossary.php | 4 +- lang/sr_utf8/moodle.php | 38 +- lang/sr_utf8/quiz.php | 6 +- lang/sr_utf8/resource.php | 2 +- lang/sr_utf8/survey.php | 4 +- lang/sr_utf8/workshop.php | 12 +- lang/sv/LAESMIG.txt | 339 +- lang/sv/README.txt | 326 - lang/sv/admin.php | 125 +- lang/sv/algebra.php | 5 +- lang/sv/appointment.php | 5 +- lang/sv/assignment.php | 98 +- lang/sv/attendance.php | 8 +- lang/sv/auth.php | 73 +- lang/sv/block_course_list.php | 3 +- lang/sv/block_course_summary.php | 5 +- lang/sv/block_glossary_random.php | 28 - lang/sv/block_html.php | 11 - lang/sv/block_quiz_results.php | 28 - lang/sv/block_rss_client.php | 39 - lang/sv/book.php | 42 - lang/sv/calendar.php | 38 +- lang/sv/chat.php | 88 +- lang/sv/choice.php | 46 +- lang/sv/countries.php | 362 +- lang/sv/dialogue.php | 125 +- lang/sv/docs/background.html | 61 +- lang/sv/docs/coding.html | 337 +- lang/sv/docs/credits.html | 418 +- lang/sv/docs/cvs.html | 360 +- lang/sv/docs/developer.html | 165 +- lang/sv/docs/docstyles.css | 26 +- lang/sv/docs/faq.html | 304 +- lang/sv/docs/features.html | 311 +- lang/sv/docs/files.php | 37 +- lang/sv/docs/future.html | 100 +- lang/sv/docs/install.html | 502 +- lang/sv/docs/installamp.html | 194 +- lang/sv/docs/intro.html | 45 +- lang/sv/docs/licence.html | 65 +- lang/sv/docs/other.html | 59 +- lang/sv/docs/philosophy.html | 27 +- lang/sv/docs/release.html | 778 +- lang/sv/docs/releaseold.html | 481 +- lang/sv/docs/teacher.html | 131 +- lang/sv/docs/translation.html | 50 +- lang/sv/docs/upgrade.html | 156 +- lang/sv/editor.php | 26 +- lang/sv/enrol_database.php | 4 +- lang/sv/enrol_ldap.php | 36 - lang/sv/enrol_paypal.php | 4 +- lang/sv/error.php | 21 +- lang/sv/exercise.php | 336 +- lang/sv/flash.php | 43 - lang/sv/forum.php | 53 +- lang/sv/glossary.php | 30 +- lang/sv/help/advanced_markdown.html | 140 - lang/sv/help/advancedsettings.html | 8 - lang/sv/help/assignment/assignmenttype.html | 10 +- lang/sv/help/assignment/emailteachers.html | 9 - lang/sv/help/assignment/index.html | 9 +- lang/sv/help/assignment/mods.html | 21 +- lang/sv/help/assignment/resubmit.html | 17 +- lang/sv/help/attendance/autoattend.html | 4 + lang/sv/help/attendance/choosedays.html | 8 +- lang/sv/help/attendance/dynsection.html | 6 +- lang/sv/help/attendance/grade.html | 11 +- lang/sv/help/attendance/hours.html | 5 +- lang/sv/help/attendance/index.html | 10 +- lang/sv/help/attendance/maxgrade.html | 6 +- lang/sv/help/attendance/mods.html | 9 +- lang/sv/help/book/customtitles.html | 2 - lang/sv/help/book/disableprinting.html | 2 - lang/sv/help/book/edit.html | 6 - lang/sv/help/book/faq.html | 42 - lang/sv/help/book/import.html | 3 - lang/sv/help/book/index.html | 10 - lang/sv/help/book/mods.html | 4 - lang/sv/help/book/numberingtype.html | 9 - lang/sv/help/book/summary.html | 3 - lang/sv/help/chat/chatting.html | 50 +- lang/sv/help/chat/index.html | 5 +- lang/sv/help/chat/mods.html | 6 +- lang/sv/help/choice/index.html | 4 +- lang/sv/help/choice/mods.html | 8 +- lang/sv/help/choice/options.html | 9 +- lang/sv/help/choice/timerestrict.html | 10 +- lang/sv/help/cookies.html | 30 +- lang/sv/help/courseavailability.html | 22 +- lang/sv/help/coursecategory.html | 14 +- lang/sv/help/courseformats.html | 20 +- lang/sv/help/coursefullname.html | 8 +- lang/sv/help/coursegrades.html | 21 +- lang/sv/help/coursehiddensections.html | 13 +- lang/sv/help/courseidnumber.html | 6 +- lang/sv/help/coursenewsitems.html | 18 +- lang/sv/help/coursenumsections.html | 25 +- lang/sv/help/courserecent.html | 23 +- lang/sv/help/coursereports.html | 28 +- lang/sv/help/courseshortname.html | 7 +- lang/sv/help/coursestartdate.html | 30 +- lang/sv/help/courseuploadsize.html | 13 +- lang/sv/help/dialogue/addsubject.html | 13 +- lang/sv/help/dialogue/closedialogue.html | 17 +- lang/sv/help/dialogue/deleteafter.html | 12 +- lang/sv/help/dialogue/dialoguetype.html | 14 +- lang/sv/help/dialogue/index.html | 26 +- lang/sv/help/dialogue/info.html | 32 +- lang/sv/help/dialogue/maildefault.html | 9 +- lang/sv/help/dialogue/mods.html | 23 +- lang/sv/help/dialogue/multiple.html | 13 +- lang/sv/help/dialogue/sendmail.html | 11 +- lang/sv/help/dialogue/writing.html | 23 +- lang/sv/help/directorypaths.html | 16 +- lang/sv/help/emoticons.html | 101 +- lang/sv/help/enrolmentkey.html | 30 +- lang/sv/help/enrolperiod.html | 13 +- lang/sv/help/exercise/administration.html | 6 +- .../exercise/comparisonofassessments.html | 68 - lang/sv/help/exercise/elements.html | 14 +- lang/sv/help/exercise/finalgrades.html | 25 +- lang/sv/help/exercise/grade.html | 9 +- lang/sv/help/exercise/grading.html | 38 +- lang/sv/help/exercise/gradinggrade.html | 17 +- lang/sv/help/exercise/gradingstrategy.html | 17 +- lang/sv/help/exercise/index.html | 46 +- lang/sv/help/exercise/leaguetable.html | 9 +- lang/sv/help/exercise/leaguetablenames.html | 3 +- lang/sv/help/exercise/mods.html | 16 +- lang/sv/help/exercise/moreinfo.html | 74 +- lang/sv/help/exercise/nelements.html | 15 +- lang/sv/help/exercise/password.html | 3 +- lang/sv/help/exercise/regrading.html | 16 +- lang/sv/help/exercise/specimen.html | 11 +- .../exercise/submissionofdescriptions.html | 11 +- lang/sv/help/exercise/takeownership.html | 16 +- lang/sv/help/exercise/usemax.html | 11 +- lang/sv/help/exercise/usepassword.html | 6 +- lang/sv/help/forum/allowdiscussions.html | 25 +- lang/sv/help/forum/attachment.html | 31 +- lang/sv/help/forum/forumtype.html | 17 +- lang/sv/help/forum/index.html | 19 +- lang/sv/help/forum/maxattachmentsize.html | 13 +- lang/sv/help/forum/mods.html | 9 +- lang/sv/help/forum/ratings.html | 24 +- lang/sv/help/forum/rssarticles.html | 3 + lang/sv/help/forum/rsstype.html | 19 +- lang/sv/help/forum/subscription.html | 22 +- lang/sv/help/forum/subscription2.html | 20 +- lang/sv/help/glossary/aliases.html | 9 +- lang/sv/help/glossary/allowcomments.html | 7 +- .../help/glossary/allowduplicatedentries.html | 6 +- lang/sv/help/glossary/allowprintview.html | 5 - lang/sv/help/glossary/attachment.html | 15 - lang/sv/help/glossary/casesensitive.html | 14 +- lang/sv/help/glossary/defaultapproval.html | 8 +- lang/sv/help/glossary/description.html | 6 +- lang/sv/help/glossary/destination.html | 3 +- lang/sv/help/glossary/displayformat.html | 37 +- lang/sv/help/glossary/editalways.html | 7 +- lang/sv/help/glossary/entbypage.html | 7 +- lang/sv/help/glossary/filetoimport.html | 3 +- lang/sv/help/glossary/fullmatch.html | 13 +- lang/sv/help/glossary/globalglossary.html | 28 +- lang/sv/help/glossary/importcategories.html | 4 +- lang/sv/help/glossary/index.html | 57 +- lang/sv/help/glossary/linkcategory.html | 4 +- lang/sv/help/glossary/mainglossary.html | 9 +- lang/sv/help/glossary/mods.html | 9 +- lang/sv/help/glossary/rssarticles.html | 6 +- lang/sv/help/glossary/rsstype.html | 15 +- lang/sv/help/glossary/shows.html | 13 +- lang/sv/help/glossary/studentcanpost.html | 13 +- lang/sv/help/glossary/usedynalink.html | 19 +- lang/sv/help/glossary/usedynalinkentry.html | 7 +- lang/sv/help/groupmode.html | 9 +- lang/sv/help/groupmodeforce.html | 7 +- lang/sv/help/guestaccess.html | 29 +- lang/sv/help/hideoptions.html | 7 - lang/sv/help/hotpotatoes/analysistable.html | 12 - lang/sv/help/hotpotatoes/forceplugins.html | 18 - lang/sv/help/hotpotatoes/index.html | 11 - lang/sv/help/hotpotatoes/mediaplayers.html | 18 - lang/sv/help/hotpotatoes/mods.html | 13 - lang/sv/help/hotpotatoes/navigation.html | 48 - lang/sv/help/hotpotatoes/outputformat.html | 34 - lang/sv/help/hotpotatoes/reportselector.html | 98 - lang/sv/help/hotpotatoes/responsestable.html | 24 - lang/sv/help/hotpotatoes/shownextquiz.html | 16 - lang/sv/help/html.html | 29 +- lang/sv/help/index.html | 89 +- lang/sv/help/journal/index.html | 4 +- lang/sv/help/journal/mods.html | 7 +- lang/sv/help/label/index.html | 4 +- lang/sv/help/label/mods.html | 7 +- lang/sv/help/langedit.html | 23 +- lang/sv/help/lesson/bgcolor.html | 2 - lang/sv/help/lesson/custom.html | 4 - lang/sv/help/lesson/deleteattempts.html | 2 - lang/sv/help/lesson/displayleft.html | 5 - lang/sv/help/lesson/grade.html | 6 +- lang/sv/help/lesson/handlingofretakes.html | 5 +- lang/sv/help/lesson/height.html | 3 - lang/sv/help/lesson/highscores.html | 4 - lang/sv/help/lesson/import.html | 84 +- lang/sv/help/lesson/index.html | 59 +- lang/sv/help/lesson/jumpto.html | 4 +- lang/sv/help/lesson/lessondefault.html | 3 - lang/sv/help/lesson/maxanswers.html | 8 +- lang/sv/help/lesson/maxattempts.html | 15 +- lang/sv/help/lesson/maxhighscores.html | 3 - lang/sv/help/lesson/maxpages.html | 5 +- lang/sv/help/lesson/maxtime.html | 2 - lang/sv/help/lesson/minquestions.html | 25 +- lang/sv/help/lesson/modattempts.html | 4 - lang/sv/help/lesson/mods.html | 15 +- lang/sv/help/lesson/nextpageaction.html | 18 +- lang/sv/help/lesson/ongoing.html | 1 - lang/sv/help/lesson/overview.html | 27 +- lang/sv/help/lesson/password.html | 3 - lang/sv/help/lesson/practice.html | 3 - lang/sv/help/lesson/questionoption.html | 11 +- lang/sv/help/lesson/questiontypes.html | 13 +- lang/sv/help/lesson/retake.html | 9 +- lang/sv/help/lesson/review.html | 4 - lang/sv/help/lesson/slideshow.html | 3 - lang/sv/help/lesson/timed.html | 4 - lang/sv/help/lesson/tree.html | 3 - lang/sv/help/lesson/useeditor.html | 31 - lang/sv/help/lesson/usepassword.html | 3 - lang/sv/help/lesson/width.html | 3 - lang/sv/help/mods.html | 6 +- lang/sv/help/picture.html | 47 +- lang/sv/help/questionnaire/qmanage.html | 4 - lang/sv/help/questionnaire/qtype.html | 5 - .../help/questionnaire/questionnaireid.html | 4 - .../sv/help/questionnaire/respondenttype.html | 5 - lang/sv/help/questions.html | 29 +- lang/sv/help/quiz/attempts.html | 13 +- lang/sv/help/quiz/calculated.html | 67 - lang/sv/help/quiz/categories.html | 37 +- lang/sv/help/quiz/correctanswers.html | 7 +- lang/sv/help/quiz/createmultiple.html | 18 +- lang/sv/help/quiz/decimalpoints.html | 4 - lang/sv/help/quiz/description.html | 18 +- lang/sv/help/quiz/discrimination.html | 10 +- .../help/quiz/eachattemptbuildsonthelast.html | 9 +- lang/sv/help/quiz/export.html | 21 +- lang/sv/help/quiz/feedback.html | 10 +- lang/sv/help/quiz/formataiken.html | 3 +- lang/sv/help/quiz/formatblackboard.html | 3 +- lang/sv/help/quiz/formatcustom.html | 3 +- lang/sv/help/quiz/formatmissingword.html | 3 +- lang/sv/help/quiz/grademethod.html | 18 +- lang/sv/help/quiz/import.html | 15 +- lang/sv/help/quiz/index.html | 85 +- lang/sv/help/quiz/match.html | 16 +- lang/sv/help/quiz/maxgrade.html | 19 +- lang/sv/help/quiz/mods.html | 8 +- lang/sv/help/quiz/multianswer.html | 46 +- lang/sv/help/quiz/multichoice.html | 21 +- lang/sv/help/quiz/numerical.html | 20 +- lang/sv/help/quiz/popup.html | 23 - lang/sv/help/quiz/questiondatasets.html | 17 - lang/sv/help/quiz/questiontypes.html | 80 +- lang/sv/help/quiz/random.html | 34 +- lang/sv/help/quiz/randommatch.html | 19 +- lang/sv/help/quiz/randomsamatch.html | 26 +- lang/sv/help/quiz/repeatattempts.html | 12 +- lang/sv/help/quiz/requirepassword.html | 5 +- lang/sv/help/quiz/requiresubnet.html | 11 +- lang/sv/help/quiz/review.html | 14 +- lang/sv/help/quiz/review2.html | 3 - lang/sv/help/quiz/shortanswer.html | 15 +- lang/sv/help/quiz/shuffleanswers.html | 21 +- lang/sv/help/quiz/shufflequestions.html | 21 +- lang/sv/help/quiz/timelimit.html | 4 +- lang/sv/help/quiz/timeopen.html | 8 +- lang/sv/help/quiz/truefalse.html | 9 +- lang/sv/help/reading.html | 24 +- lang/sv/help/resource/index.html | 25 +- lang/sv/help/resource/mods.html | 9 +- lang/sv/help/resource/parameters.html | 5 + lang/sv/help/resource/program.html | 14 +- lang/sv/help/resource/resourcetype.html | 13 +- lang/sv/help/resource/summary.html | 16 +- lang/sv/help/resource/type/directory.html | 3 + lang/sv/help/resource/type/file.html | 11 +- lang/sv/help/resource/type/html.html | 5 +- lang/sv/help/resource/type/label.html | 7 +- lang/sv/help/resource/type/text.html | 5 +- lang/sv/help/resource/types.html | 4 +- lang/sv/help/resource/window.html | 14 +- lang/sv/help/richtext.html | 136 +- lang/sv/help/richtext_orig.html | 174 - lang/sv/help/scales.html | 36 +- lang/sv/help/scorm/index.html | 4 +- lang/sv/help/scorm/mods.html | 8 +- lang/sv/help/search.html | 47 - lang/sv/help/summaries.html | 24 +- lang/sv/help/survey/index.html | 5 +- lang/sv/help/survey/mods.html | 6 +- lang/sv/help/surveys.html | 90 +- lang/sv/help/teachers.html | 22 +- lang/sv/help/text.html | 181 +- lang/sv/help/textformat.html | 86 +- lang/sv/help/uploadusers.html | 17 +- lang/sv/help/wiki.html | 122 +- lang/sv/help/wiki/checklinks.html | 2 +- lang/sv/help/wiki/ewikiacceptbinary.html | 3 +- lang/sv/help/wiki/howtowiki.html | 18 +- lang/sv/help/wiki/htmlmode.html | 5 +- lang/sv/help/wiki/index.html | 42 +- lang/sv/help/wiki/initialcontent.html | 4 +- lang/sv/help/wiki/mods.html | 6 +- lang/sv/help/wiki/removepages.html | 2 +- .../help/wiki/revertauthorfieldpattern.html | 4 +- lang/sv/help/wiki/revertpages.html | 8 +- lang/sv/help/wiki/setpageflags.html | 5 +- lang/sv/help/wiki/strippages.html | 6 +- lang/sv/help/wiki/studentadminoptions.html | 4 +- lang/sv/help/wiki/wikilinkoptions.html | 12 +- lang/sv/help/wiki/wikiname.html | 4 +- lang/sv/help/wiki/wikitype.html | 3 + lang/sv/help/workshop/addcommenttobank.html | 21 - lang/sv/help/workshop/addingacomment.html | 34 +- lang/sv/help/workshop/agreeassessments.html | 24 +- .../help/workshop/analysisofassessments.html | 26 - lang/sv/help/workshop/anonymous.html | 20 +- .../help/workshop/assessmentofexamples.html | 13 +- lang/sv/help/workshop/assignmenttype.html | 11 +- .../help/workshop/breakdownoffinalgrade.html | 20 +- .../help/workshop/calculatingfinalgrade.html | 15 +- .../workshop/comparisonofassessments.html | 69 - lang/sv/help/workshop/editingacomment.html | 6 +- lang/sv/help/workshop/elements.html | 32 +- lang/sv/help/workshop/finalgrades.html | 23 +- lang/sv/help/workshop/grade.html | 16 +- lang/sv/help/workshop/grading.html | 41 +- lang/sv/help/workshop/gradingassessments.html | 33 +- lang/sv/help/workshop/gradinggrade.html | 28 +- lang/sv/help/workshop/gradingstrategy.html | 34 +- lang/sv/help/workshop/gradingsubmissions.html | 16 +- lang/sv/help/workshop/includeself.html | 11 +- .../help/workshop/includeteachersgrade.html | 14 +- lang/sv/help/workshop/index.html | 82 +- lang/sv/help/workshop/leaguetable.html | 12 +- lang/sv/help/workshop/managing.html | 22 +- lang/sv/help/workshop/managing2.html | 3 +- lang/sv/help/workshop/mods.html | 6 +- .../nassessmentsofstudentsubmissions.html | 27 +- .../nassessmentsofteachersexamples.html | 26 +- lang/sv/help/workshop/nattachments.html | 21 - lang/sv/help/workshop/nelements.html | 12 +- lang/sv/help/workshop/numberofassessors.html | 45 +- lang/sv/help/workshop/overallocation.html | 52 +- lang/sv/help/workshop/password.html | 6 - lang/sv/help/workshop/regrading.html | 25 - lang/sv/help/workshop/resubmit.html | 38 +- lang/sv/help/workshop/selfassessment.html | 19 +- lang/sv/help/workshop/showinggrades.html | 26 +- lang/sv/help/workshop/specimen.html | 11 +- .../help/workshop/submissionofexamples.html | 35 +- lang/sv/help/workshop/teachersgradings.html | 15 +- lang/sv/help/workshop/teacherweight.html | 10 +- .../sv/help/workshop/ungradedassessments.html | 4 +- .../workshop/ungradedassessments_student.html | 28 +- .../workshop/ungradedassessments_teacher.html | 39 +- lang/sv/help/workshop/usepassword.html | 12 - lang/sv/help/writing.html | 37 +- lang/sv/hotpot.php | 14 +- lang/sv/hotpotatoes.php | 61 - lang/sv/install.php | 11 +- lang/sv/journal.php | 58 +- lang/sv/lesson.php | 185 +- lang/sv/message.php | 63 - lang/sv/moodle.php | 508 +- lang/sv/netpublish.php | 52 - lang/sv/questionnaire.php | 6 +- lang/sv/quiz.php | 142 +- lang/sv/readme | 253 - lang/sv/resource.php | 27 +- lang/sv/scorm.php | 45 +- lang/sv/survey.php | 6 +- lang/sv/wiki.php | 30 +- lang/sv/workshop.php | 181 +- lang/th/activitynames.php | 5 +- lang/th/admin.php | 12 +- lang/th/admin_english.php | 605 - lang/th/algebra.php | 6 +- lang/th/appointment.php | 6 +- lang/th/assignment.php | 6 +- lang/th/attendance.php | 14 +- lang/th/auth.php | 77 +- lang/th/block_course_list.php | 6 +- lang/th/block_course_summary.php | 8 +- lang/th/block_online_users.php | 6 +- lang/th/block_section_links.php | 6 +- lang/th/block_social_activities.php | 6 +- lang/th/book.php | 45 - lang/th/brainstorm.php | 31 - lang/th/calendar.php | 34 +- lang/th/censor.php | 6 +- lang/th/chat.php | 11 +- lang/th/choice.php | 7 +- lang/th/countries.php | 7 +- lang/th/dialogue.php | 7 +- lang/{tr => th}/docs/README.txt | 25 +- lang/th/docs/background.html | 79 + lang/{vi_utf8 => th}/docs/coding.html | 152 +- lang/th/docs/credits.html | 209 + lang/th/docs/cvs.html | 150 + lang/th/docs/developer.html | 293 + lang/{tl => th}/docs/docstyles.css | 16 +- lang/{vi_utf8 => th}/docs/faq.html | 195 +- lang/th/docs/features.html | 219 + lang/th/docs/files.php | 31 + lang/th/docs/future.html | 60 + lang/th/docs/install.html | 421 + lang/th/docs/installamp.html | 155 + lang/th/docs/intro.html | 43 + lang/th/docs/licence.html | 39 + lang/th/docs/module_files.txt | 18 + lang/th/docs/other.html | 21 + lang/th/docs/philosophy.html | 52 + lang/th/docs/release.html | 314 + lang/th/docs/releaseold.html | 365 + lang/th/docs/teacher.html | 244 + lang/th/docs/upgrade.html | 114 + lang/th/editor.php | 11 +- lang/th/emailprotect.php | 6 +- lang/th/enrol_database.php | 6 +- lang/th/enrol_flatfile.php | 18 +- lang/th/enrol_internal.php | 11 +- lang/th/enrol_paypal.php | 8 +- lang/th/error.php | 12 +- lang/th/exercise.php | 49 +- lang/th/forum.php | 12 +- lang/th/glossary.php | 19 +- lang/th/grades.php | 105 - lang/th/help/quiz/random.html | 43 +- lang/th/help/workshop/assignmenttype.html | 4 +- .../help/workshop/breakdownoffinalgrade.html | 6 +- .../help/workshop/calculatingfinalgrade.html | 14 +- lang/th/help/workshop/elements.html | 4 +- lang/th/help/workshop/finalgrades.html | 4 +- lang/th/help/workshop/graded.html | 2 +- lang/th/help/workshop/grading.html | 8 +- lang/th/help/workshop/gradingstrategy.html | 8 +- .../nassessmentsofteachersexamples.html | 2 +- lang/th/help/workshop/resubmit.html | 6 +- lang/th/help/workshop/selfassessment.html | 4 +- lang/th/help/workshop/showinggrades.html | 4 +- lang/th/help/workshop/specimen.html | 4 +- lang/th/help/workshop/teachersgradings.html | 4 +- lang/th/hotpot.php | 10 +- lang/th/install.php | 59 +- lang/th/journal.php | 6 +- lang/th/label.php | 6 +- lang/th/lesson.php | 165 +- lang/th/mediaplugin.php | 6 +- lang/th/moodle.php | 285 +- lang/th/multilang.php | 6 +- lang/th/pix.php | 6 +- lang/th/questionnaire.php | 22 +- lang/th/quiz.php | 53 +- lang/th/resource.php | 54 +- lang/th/scheduler.php | 49 - lang/th/scorm.php | 8 +- lang/th/survey.php | 10 +- lang/th/tex.php | 6 +- lang/th/webquest.php | 6 +- lang/th/wiki.php | 17 +- lang/th/workshop.php | 188 +- lang/tl/block_online_users.php | 6 - lang/tl/calendar.php | 117 - lang/tl/docs/README.txt | 49 - lang/tl/docs/background.html | 109 - lang/tl/docs/coding.html | 292 - lang/tl/docs/cvs.html | 527 - lang/tl/docs/developer.html | 423 - lang/tl/docs/faq.html | 501 - lang/tl/docs/features.html | 458 - lang/tl/docs/files.php | 32 - lang/tl/docs/future.html | 119 - lang/tl/docs/install.html | 733 -- lang/tl/docs/installamp.html | 258 - lang/tl/docs/intro.html | 68 - lang/tl/docs/licence.html | 669 -- lang/tl/docs/module_files.txt | 17 - lang/tl/docs/other.html | 30 - lang/tl/docs/philosophy.html | 157 - lang/tl/docs/teacher.html | 359 - lang/tl/docs/translation.html | 288 - lang/tl/docs/upgrade.html | 163 - lang/tl/fonts/README.txt | 18 - lang/tl/help/cookies.html | 18 - lang/tl/help/courseavailability.html | 11 - lang/tl/help/coursecategory.html | 10 - lang/tl/help/courseformats.html | 26 - lang/tl/help/coursefullname.html | 4 - lang/tl/help/coursegrades.html | 14 - lang/tl/help/coursehiddensections.html | 14 - lang/tl/help/courseidnumber.html | 8 - lang/tl/help/coursenewsitems.html | 14 - lang/tl/help/coursenumsections.html | 13 - lang/tl/help/courserecent.html | 17 - lang/tl/help/coursereports.html | 19 - lang/tl/help/courseshortname.html | 7 - lang/tl/help/coursestartdate.html | 19 - lang/tl/help/courseuploadsize.html | 8 - lang/tl/help/directorypaths.html | 29 - lang/tl/help/emoticons.html | 123 - lang/tl/help/enrolmentkey.html | 23 - lang/tl/help/enrolperiod.html | 13 - lang/tl/help/groupmode.html | 33 - lang/tl/help/groupmodeforce.html | 11 - lang/tl/help/guestaccess.html | 24 - lang/tl/help/html.html | 21 - lang/tl/help/index.html | 72 - lang/tl/help/langedit.html | 14 - lang/tl/help/mods.html | 101 - lang/tl/help/picture.html | 50 - lang/tl/help/questions.html | 117 - lang/tl/help/reading.html | 24 - lang/tl/help/richtext.html | 184 - lang/tl/help/scales.html | 25 - lang/tl/help/summaries.html | 15 - lang/tl/help/surveys.html | 140 - lang/tl/help/teachers.html | 35 - lang/tl/help/text.html | 160 - lang/tl/help/textformat.html | 102 - lang/tl/help/uploadusers.html | 77 - lang/tl/help/wiki.html | 197 - lang/tl/help/writing.html | 30 - lang/tl/moodle.php | 1131 -- lang/tl/readme | 2 - lang/tr/README | 25 +- lang/tr/assignment.php | 103 +- lang/tr/auth.php | 83 +- lang/tr/block_course_list.php | 3 +- lang/tr/block_course_summary.php | 4 +- lang/tr/block_online_users.php | 2 +- lang/tr/block_section_links.php | 2 +- lang/tr/block_social_activities.php | 2 +- lang/tr/calendar.php | 34 +- lang/tr/censor.php | 2 +- lang/tr/choice.php | 50 +- lang/tr/countries.php | 2 +- lang/tr/docs/docstyles.css | 134 - lang/tr/docs/files.php | 32 - lang/tr/docs/module_files.txt | 27 +- lang/tr/docs/other.html | 23 - lang/tr/fonts/README.txt | 18 - lang/tr/fonts/default.ttf | Bin 39776 -> 0 bytes lang/tr/fonts/tr_arial.ttf | Bin 110528 -> 0 bytes lang/tr/fonts/tr_timesnewroman.ttf | Bin 130368 -> 0 bytes lang/tr/forum.php | 275 +- lang/tr/help/quiz/random.html | 3 + lang/tr/journal.php | 64 +- lang/tr/label.php | 2 +- lang/tr/mediaplugin.php | 2 +- lang/tr/moodle.php | 1560 +-- lang/tr/multilang.php | 2 +- lang/tr/quiz.php | 374 +- lang/tr/resource.php | 91 +- lang/tr/survey.php | 418 +- lang/uk/auth.php | 6 +- lang/uk/dialogue.php | 2 +- lang/uk/forum.php | 8 +- lang/uk/moodle.php | 30 +- lang/uk/resource.php | 2 +- lang/vi_utf8/activitynames.php | 6 - lang/vi_utf8/admin.php | 43 - lang/vi_utf8/algebra.php | 6 - lang/vi_utf8/appointment.php | 45 - lang/vi_utf8/assignment.php | 63 +- lang/vi_utf8/attendance.php | 75 - lang/vi_utf8/auth.php | 111 - lang/vi_utf8/block_course_list.php | 8 - lang/vi_utf8/block_course_summary.php | 6 - lang/vi_utf8/block_online_users.php | 6 - lang/vi_utf8/block_rss_client.php | 36 - lang/vi_utf8/block_section_links.php | 8 - lang/vi_utf8/block_social_activities.php | 4 - lang/vi_utf8/calendar.php | 132 +- lang/vi_utf8/censor.php | 6 - lang/vi_utf8/chat.php | 53 - lang/vi_utf8/choice.php | 33 - lang/vi_utf8/countries.php | 246 - lang/vi_utf8/dialogue.php | 80 - lang/vi_utf8/docs/README.txt | 48 - lang/vi_utf8/docs/background.html | 71 - lang/vi_utf8/docs/credits.html | 255 - lang/vi_utf8/docs/cvs.html | 247 - lang/vi_utf8/docs/developer.html | 286 - lang/vi_utf8/docs/docstyles.css | 133 - lang/vi_utf8/docs/features.html | 204 - lang/vi_utf8/docs/files.php | 32 - lang/vi_utf8/docs/future.html | 53 - lang/vi_utf8/docs/install.html | 414 - lang/vi_utf8/docs/installamp.html | 152 - lang/vi_utf8/docs/intro.html | 46 - lang/vi_utf8/docs/licence.html | 303 - lang/vi_utf8/docs/module_files.txt | 17 - lang/vi_utf8/docs/other.html | 21 - lang/vi_utf8/docs/philosophy.html | 56 - lang/vi_utf8/docs/release.html | 434 - lang/vi_utf8/docs/teacher.html | 243 - lang/vi_utf8/docs/translation.html | 239 - lang/vi_utf8/docs/upgrade.html | 115 - lang/vi_utf8/editor.php | 112 - lang/vi_utf8/emailprotect.php | 6 - lang/vi_utf8/enrol_database.php | 16 - lang/vi_utf8/enrol_flatfile.php | 22 - lang/vi_utf8/enrol_internal.php | 13 - lang/vi_utf8/enrol_ldap.php | 69 - lang/vi_utf8/enrol_paypal.php | 10 - lang/vi_utf8/error.php | 22 - lang/vi_utf8/exercise.php | 190 - lang/vi_utf8/forum.php | 179 +- lang/vi_utf8/glossary.php | 168 - lang/vi_utf8/help/cookies.html | 13 - lang/vi_utf8/help/courseavailability.html | 11 - lang/vi_utf8/help/coursecategory.html | 11 - lang/vi_utf8/help/courseformats.html | 24 - lang/vi_utf8/help/coursefullname.html | 4 - lang/vi_utf8/help/coursegrades.html | 14 - lang/vi_utf8/help/coursehiddensections.html | 13 - lang/vi_utf8/help/courseidnumber.html | 7 - lang/vi_utf8/help/coursenewsitems.html | 15 - lang/vi_utf8/help/coursenumsections.html | 15 - lang/vi_utf8/help/courserecent.html | 16 - lang/vi_utf8/help/coursereports.html | 21 - lang/vi_utf8/help/courseshortname.html | 7 - lang/vi_utf8/help/coursestartdate.html | 19 - lang/vi_utf8/help/courseuploadsize.html | 8 - lang/vi_utf8/help/directorypaths.html | 26 - lang/vi_utf8/help/emoticons.html | 120 - lang/vi_utf8/help/enrolmentkey.html | 23 - lang/vi_utf8/help/enrolperiod.html | 13 - lang/vi_utf8/help/groupmode.html | 24 - lang/vi_utf8/help/wiki/checklinks.html | 3 - lang/vi_utf8/help/wiki/index.html | 18 - lang/vi_utf8/help/wiki/wikiusage.html | 115 - lang/vi_utf8/hotpot.php | 11 - lang/vi_utf8/install.php | 136 - lang/vi_utf8/journal.php | 39 - lang/vi_utf8/label.php | 9 - lang/vi_utf8/lesson.php | 238 - lang/vi_utf8/mediaplugin.php | 6 - lang/vi_utf8/moodle.php | 1079 +- lang/vi_utf8/multilang.php | 6 - lang/vi_utf8/pix.php | 26 - lang/vi_utf8/questionnaire.php | 14 - lang/vi_utf8/quiz.php | 292 +- lang/vi_utf8/readme.txt | 23 +- lang/vi_utf8/resource.php | 86 +- lang/vi_utf8/scorm.php | 77 - lang/vi_utf8/survey.php | 236 - lang/vi_utf8/tex.php | 6 - lang/vi_utf8/webquest.php | 8 - lang/vi_utf8/wiki.php | 189 - lang/vi_utf8/workshop.php | 323 - lang/zh_cn/auth.php | 6 +- lang/zh_cn/docs/teacher.html | 26 +- lang/zh_cn/editor.php | 2 +- lang/zh_cn/forum.php | 6 +- lang/zh_cn/glossary.php | 6 +- lang/zh_cn/moodle.php | 50 +- lang/zh_cn/quiz.php | 12 +- lang/zh_cn/resource.php | 4 +- lang/zh_cn/survey.php | 4 +- lang/zh_cn/workshop.php | 12 +- lang/zh_cn_utf8/activitynames.php | 7 - lang/zh_cn_utf8/admin.php | 132 - lang/zh_cn_utf8/algebra.php | 7 - lang/zh_cn_utf8/appointment.php | 45 - lang/zh_cn_utf8/assignment.php | 58 - lang/zh_cn_utf8/attendance.php | 15 - lang/zh_cn_utf8/auth.php | 126 - lang/zh_cn_utf8/block_course_list.php | 10 - lang/zh_cn_utf8/block_course_summary.php | 8 - lang/zh_cn_utf8/block_html.php | 11 - lang/zh_cn_utf8/block_online_users.php | 9 - lang/zh_cn_utf8/block_section_links.php | 11 - lang/zh_cn_utf8/block_social_activities.php | 7 - lang/zh_cn_utf8/calendar.php | 118 - lang/zh_cn_utf8/censor.php | 7 - lang/zh_cn_utf8/chat.php | 55 - lang/zh_cn_utf8/choice.php | 23 - lang/zh_cn_utf8/countries.php | 241 - lang/zh_cn_utf8/dialogue.php | 68 - lang/zh_cn_utf8/docs/coding.html | 157 - lang/zh_cn_utf8/docs/teacher.html | 157 - lang/zh_cn_utf8/editor.php | 114 - lang/zh_cn_utf8/emailprotect.php | 7 - lang/zh_cn_utf8/error.php | 16 - lang/zh_cn_utf8/exercise.php | 146 - lang/zh_cn_utf8/fonts/README | 7 - lang/zh_cn_utf8/forum.php | 171 - lang/zh_cn_utf8/glossary.php | 157 - .../zh_cn_utf8/help/exercise/leaguetable.html | 3 - .../help/exercise/leaguetablenames.html | 3 - lang/zh_cn_utf8/help/exercise/mods.html | 5 - lang/zh_cn_utf8/help/exercise/password.html | 3 - lang/zh_cn_utf8/help/exercise/specimen.html | 5 - lang/zh_cn_utf8/help/lesson/bgcolor.html | 3 - lang/zh_cn_utf8/help/lesson/custom.html | 3 - .../help/lesson/deleteattempts.html | 3 - lang/zh_cn_utf8/help/lesson/displayleft.html | 3 - lang/zh_cn_utf8/help/lesson/grade.html | 3 - .../help/lesson/handlingofretakes.html | 5 - lang/zh_cn_utf8/help/lesson/height.html | 3 - lang/zh_cn_utf8/help/lesson/highscores.html | 3 - lang/zh_cn_utf8/help/lesson/import.html | 86 - lang/zh_cn_utf8/help/lesson/jumpto.html | 13 - .../zh_cn_utf8/help/lesson/lessondefault.html | 3 - lang/zh_cn_utf8/help/lesson/maxanswers.html | 7 - lang/zh_cn_utf8/help/lesson/maxattempts.html | 11 - .../zh_cn_utf8/help/lesson/maxhighscores.html | 3 - lang/zh_cn_utf8/help/lesson/maxpages.html | 5 - lang/zh_cn_utf8/help/lesson/maxtime.html | 3 - lang/zh_cn_utf8/help/lesson/minquestions.html | 13 - lang/zh_cn_utf8/help/lesson/modattempts.html | 3 - lang/zh_cn_utf8/help/lesson/mods.html | 5 - .../help/lesson/nextpageaction.html | 9 - lang/zh_cn_utf8/help/lesson/ongoing.html | 1 - lang/zh_cn_utf8/help/lesson/overview.html | 53 - lang/zh_cn_utf8/help/lesson/password.html | 3 - lang/zh_cn_utf8/help/lesson/practice.html | 3 - .../help/lesson/questionoption.html | 10 - lang/zh_cn_utf8/help/lesson/retake.html | 9 - lang/zh_cn_utf8/help/lesson/review.html | 3 - lang/zh_cn_utf8/help/lesson/slideshow.html | 3 - lang/zh_cn_utf8/help/lesson/timed.html | 3 - lang/zh_cn_utf8/help/lesson/tree.html | 3 - lang/zh_cn_utf8/help/lesson/useeditor.html | 5 - lang/zh_cn_utf8/help/lesson/usepassword.html | 3 - lang/zh_cn_utf8/help/lesson/width.html | 3 - lang/zh_cn_utf8/install.php | 106 - lang/zh_cn_utf8/journal.php | 38 - lang/zh_cn_utf8/label.php | 9 - lang/zh_cn_utf8/lesson.php | 121 - lang/zh_cn_utf8/mediaplugin.php | 7 - lang/zh_cn_utf8/message.php | 62 - lang/zh_cn_utf8/moodle.php | 1127 -- lang/zh_cn_utf8/multilang.php | 7 - lang/zh_cn_utf8/pix.php | 26 - lang/zh_cn_utf8/questionnaire.php | 16 - lang/zh_cn_utf8/quiz.php | 193 - lang/zh_cn_utf8/readme | 2 - lang/zh_cn_utf8/resource.php | 63 - lang/zh_cn_utf8/survey.php | 192 - lang/zh_cn_utf8/tex.php | 7 - lang/zh_cn_utf8/webquest.php | 8 - lang/zh_cn_utf8/wiki.php | 100 - lang/zh_cn_utf8/workshop.php | 240 - lang/zh_tw/auth.php | 6 +- lang/zh_tw/forum.php | 6 +- lang/zh_tw/help/coursefullname.html | 2 +- lang/zh_tw/help/coursenewsitems.html | 2 +- lang/zh_tw/help/coursenumsections.html | 2 +- lang/zh_tw/help/courserecent.html | 2 +- lang/zh_tw/help/courseshortname.html | 2 +- lang/zh_tw/help/coursestartdate.html | 2 +- lang/zh_tw/help/enrolmentkey.html | 2 +- lang/zh_tw/help/forum/allowdiscussions.html | 2 +- lang/zh_tw/help/forum/attachment.html | 2 +- lang/zh_tw/help/forum/forumtype.html | 2 +- lang/zh_tw/help/forum/subscription.html | 2 +- lang/zh_tw/help/guestaccess.html | 2 +- lang/zh_tw/help/html.html | 2 +- lang/zh_tw/moodle.php | 46 +- lang/zh_tw/quiz.php | 4 +- lang/zh_tw/resource.php | 30 +- lang/zh_tw/survey.php | 2 +- lang/zh_tw_utf8/admin.php | 12 +- lang/zh_tw_utf8/auth.php | 6 +- lang/zh_tw_utf8/editor.php | 2 +- .../exercise.php} | 0 lang/zh_tw_utf8/forum.php | 6 +- lang/zh_tw_utf8/glossary.php | 6 +- lang/zh_tw_utf8/moodle.php | 44 +- lang/zh_tw_utf8/quiz.php | 8 +- lang/zh_tw_utf8/resource.php | 2 +- lang/zh_tw_utf8/survey.php | 2 +- lang/zh_tw_utf8/workshop.php | 6 +- lib/adminlib.php | 137 +- lib/adodb/adodb-connection.inc.php | 3470 +++--- lib/adodb/adodb-csvlib.inc.php | 25 +- lib/adodb/adodb-datadict.inc.php | 115 +- lib/adodb/adodb-error.inc.php | 2 +- lib/adodb/adodb-errorhandler.inc.php | 4 +- lib/adodb/adodb-errorpear.inc.php | 4 +- lib/adodb/adodb-exceptions.inc.php | 5 +- lib/adodb/adodb-iterator.inc.php | 3 +- lib/adodb/adodb-lib.inc.php | 188 +- lib/adodb/adodb-pager.inc.php | 4 +- lib/adodb/adodb-pear.inc.php | 19 +- lib/adodb/adodb-perf.inc.php | 24 +- lib/adodb/adodb-php4.inc.php | 2 +- lib/adodb/adodb-time.inc.php | 53 +- .../docs/elementindex.html | 28 +- .../docs/elementindex_xmlschema.html | 28 +- .../docs/errors.html | 2 +- .../docs/li_xmlschema.html | 6 +- .../docs/xmlschema/_adodb-xmlschema_php.html | 4 +- .../docs/xmlschema/adoSchema.html | 52 +- lib/adodb/adodb-xmlschema.inc.php | 4 +- lib/adodb/adodb.inc.php | 420 +- lib/adodb/datadict/datadict-access.inc.php | 2 +- lib/adodb/datadict/datadict-db2.inc.php | 81 +- lib/adodb/datadict/datadict-firebird.inc.php | 2 +- lib/adodb/datadict/datadict-generic.inc.php | 2 +- lib/adodb/datadict/datadict-ibase.inc.php | 2 +- lib/adodb/datadict/datadict-informix.inc.php | 2 +- lib/adodb/datadict/datadict-mssql.inc.php | 25 +- lib/adodb/datadict/datadict-mysql.inc.php | 16 +- lib/adodb/datadict/datadict-oci8.inc.php | 11 +- lib/adodb/datadict/datadict-postgres.inc.php | 176 +- lib/adodb/datadict/datadict-sapdb.inc.php | 121 - lib/adodb/datadict/datadict-sybase.inc.php | 10 +- lib/adodb/drivers/adodb-access.inc.php | 2 +- lib/adodb/drivers/adodb-ado.inc.php | 27 +- lib/adodb/drivers/adodb-ado5.inc.php | 636 -- lib/adodb/drivers/adodb-ado_access.inc.php | 9 +- lib/adodb/drivers/adodb-ado_mssql.inc.php | 62 +- lib/adodb/drivers/adodb-borland_ibase.inc.php | 2 +- lib/adodb/drivers/adodb-csv.inc.php | 2 +- lib/adodb/drivers/adodb-db2.inc.php | 53 +- lib/adodb/drivers/adodb-fbsql.inc.php | 7 +- lib/adodb/drivers/adodb-firebird.inc.php | 2 +- lib/adodb/drivers/adodb-ibase.inc.php | 103 +- lib/adodb/drivers/adodb-informix.inc.php | 3 +- lib/adodb/drivers/adodb-informix72.inc.php | 81 +- lib/adodb/drivers/adodb-ldap.inc.php | 12 +- lib/adodb/drivers/adodb-mssql.inc.php | 67 +- lib/adodb/drivers/adodb-mssqlpo.inc.php | 2 +- lib/adodb/drivers/adodb-mysql.inc.php | 129 +- lib/adodb/drivers/adodb-mysqli.inc.php | 447 +- lib/adodb/drivers/adodb-mysqlt.inc.php | 14 +- lib/adodb/drivers/adodb-netezza.inc.php | 8 +- lib/adodb/drivers/adodb-oci8.inc.php | 192 +- lib/adodb/drivers/adodb-oci805.inc.php | 2 +- lib/adodb/drivers/adodb-oci8po.inc.php | 2 +- lib/adodb/drivers/adodb-odbc.inc.php | 132 +- lib/adodb/drivers/adodb-odbc_mssql.inc.php | 4 +- lib/adodb/drivers/adodb-odbc_oracle.inc.php | 61 +- lib/adodb/drivers/adodb-odbtp.inc.php | 203 +- lib/adodb/drivers/adodb-odbtp_unicode.inc.php | 29 +- lib/adodb/drivers/adodb-oracle.inc.php | 2 +- lib/adodb/drivers/adodb-pdo.inc.php | 7 +- lib/adodb/drivers/adodb-postgres.inc.php | 2 +- lib/adodb/drivers/adodb-postgres64.inc.php | 91 +- lib/adodb/drivers/adodb-postgres7.inc.php | 110 +- lib/adodb/drivers/adodb-proxy.inc.php | 2 +- lib/adodb/drivers/adodb-sapdb.inc.php | 124 +- lib/adodb/drivers/adodb-sqlanywhere.inc.php | 2 +- lib/adodb/drivers/adodb-sqlite.inc.php | 55 +- lib/adodb/drivers/adodb-sqlitepo.inc.php | 2 +- lib/adodb/drivers/adodb-sybase.inc.php | 19 +- lib/adodb/drivers/adodb-vfp.inc.php | 4 +- lib/adodb/lang/adodb-ar.inc.php | 34 - lib/adodb/lang/adodb-da.inc.php | 33 - lib/adodb/lang/adodb-esperanto.inc.php | 35 - lib/adodb/lang/adodb-hu.inc.php | 34 - lib/adodb/pear/Auth/Container/ADOdb.php | 412 - lib/adodb/pear/readme.Auth.txt | 20 - lib/adodb/perf/perf-db2.inc.php | 2 +- lib/adodb/perf/perf-informix.inc.php | 2 +- lib/adodb/perf/perf-mssql.inc.php | 2 +- lib/adodb/perf/perf-mysql.inc.php | 2 +- lib/adodb/perf/perf-oci8.inc.php | 2 +- lib/adodb/perf/perf-postgres.inc.php | 2 +- lib/adodb/pivottable.inc.php | 35 +- lib/adodb/readme.txt | 4 +- lib/adodb/rsfilter.inc.php | 11 +- lib/adodb/server.php | 2 +- lib/adodb/session/adodb-compress-bzip2.php | 2 +- lib/adodb/session/adodb-compress-gzip.php | 2 +- lib/adodb/session/adodb-cryptsession.php | 2 +- lib/adodb/session/adodb-encrypt-mcrypt.php | 2 +- lib/adodb/session/adodb-encrypt-md5.php | 2 +- lib/adodb/session/adodb-encrypt-secret.php | 2 +- lib/adodb/session/adodb-session-clob.php | 2 +- lib/adodb/session/adodb-session.php | 40 +- lib/adodb/tests/benchmark.php | 2 +- lib/adodb/tests/test-datadict.php | 25 +- lib/adodb/tests/test-php5.php | 24 +- lib/adodb/tests/test-xmlschema.php | 4 +- lib/adodb/tests/test.php | 143 +- lib/adodb/tests/test2.php | 59 +- lib/adodb/tests/test3.php | 2 +- lib/adodb/tests/test4.php | 65 +- lib/adodb/tests/test5.php | 2 +- lib/adodb/tests/testcache.php | 2 +- lib/adodb/tests/testdatabases.inc.php | 82 +- lib/adodb/tests/testmssql.php | 2 +- lib/adodb/tests/testoci8.php | 2 +- lib/adodb/tests/testoci8cursor.php | 2 +- lib/adodb/tests/testpaging.php | 2 +- lib/adodb/tests/testpear.php | 2 +- lib/adodb/tests/testsessions.php | 2 +- lib/adodb/toexport.inc.php | 12 +- lib/adodb/tohtml.inc.php | 2 +- lib/blocklib.php | 1293 ++- lib/cas/CAS.php | 1114 -- lib/cas/PGTStorage/pgt-db.php | 190 - lib/cas/PGTStorage/pgt-file.php | 236 - lib/cas/PGTStorage/pgt-main.php | 188 - lib/cas/client.php | 1887 ---- lib/cas/domxml-php4-php5.php | 278 - lib/cas/languages/english.php | 27 - lib/cas/languages/french.php | 28 - lib/cas/languages/greek.php | 27 - lib/cas/languages/languages.php | 24 - lib/compatible.php | 155 + lib/cookies.js | 84 - lib/datalib.php | 2790 ++--- lib/db/README | 15 + lib/db/mysql.php | 512 +- lib/db/mysql.sql | 286 +- lib/db/oci8po.php | 29 + lib/db/oci8po.sql | 612 + lib/db/postgres7.php | 494 +- lib/db/postgres7.sql | 223 +- lib/db/schema.php | 255 + lib/db/schemaConfig.xml | 29 + lib/db/schemaCourse.xml | 101 + lib/db/schemaCourse_categories.xml | 43 + lib/db/schemaCourse_display.xml | 31 + lib/db/schemaCourse_modules.xml | 52 + lib/db/schemaCourse_sections.xml | 37 + lib/db/schemaEvent.xml | 1 + lib/db/schemaExecutionListing.html | 1777 +++ lib/db/schemaGroups.xml | 43 + lib/db/schemaGroups_members.xml | 31 + lib/db/schemaLog.xml | 46 + lib/db/schemaLog_display.xml | 30 + lib/db/schemaModules.xml | 40 + lib/db/schemaScale.xml | 40 + lib/db/schemaUser.xml | 106 + lib/db/schemaUser_admins.xml | 24 + lib/defaults.php | 142 +- lib/editor/coursefiles.php | 504 +- lib/editor/courseimages.php | 857 ++ lib/editor/dialog.js | 7 +- lib/editor/htmlarea.php | 457 +- lib/editor/images/ed_nolink.gif | Bin 181 -> 0 bytes lib/editor/images/ed_replace.gif | Bin 124 -> 0 bytes lib/editor/images/spell-check.gif | Bin 107 -> 0 bytes lib/editor/lang/en.php | 6 +- .../TableOperations/table-operations.js | 9 +- lib/editor/popups/dlg_ins_smile.php | 18 +- lib/editor/popups/insert_image.php | 50 +- lib/editor/popups/insert_image_std.php | 15 +- lib/editor/popups/insert_table.php | 2 +- lib/editor/popups/link.php | 5 +- lib/editor/popups/link_std.php | 16 +- lib/editor/popups/preview.php | 61 +- lib/editor/popups/searchandreplace.php | 142 - lib/filelib.php | 274 - lib/filterlib.php | 253 - lib/gdlib.php | 92 +- lib/graphlib.php | 58 +- lib/html2text.php | 81 +- lib/ipatlas/ip-atlas_prefs.php | 56 +- lib/ipatlas/languages/messages.blank.inc | 2 +- lib/ipatlas/languages/messages.it.inc | 2 +- lib/ipatlas/plot.inc | 3 +- lib/ipatlas/plot.php | 19 +- lib/ipatlas/plotconf.inc | 2 +- lib/ipatlas/translate.inc | 2 +- lib/javascript-mod.php | 48 - lib/javascript-static.js | 198 - lib/javascript.php | 74 +- lib/languages.php | 504 +- lib/lexer.php | 393 - lib/magpie/AUTHORS | 1 - lib/magpie/README | 48 - lib/magpie/README_MOODLE.txt | 3 - lib/magpie/TROUBLESHOOTING | 152 - lib/magpie/cookbook | 125 - lib/magpie/extlib/Snoopy.class.inc | 899 -- lib/magpie/htdocs/cookbook.html | 237 - lib/magpie/htdocs/index.html | 419 - lib/magpie/rss_cache.inc | 184 - lib/magpie/rss_fetch.inc | 462 - lib/magpie/rss_parse.inc | 589 - lib/magpie/rss_utils.inc | 67 - lib/markdown.php | 667 +- lib/moodlelib.php | 4713 ++------ lib/mp3player/mp3player.fla.zip | Bin 13945 -> 12718 bytes lib/mp3player/mp3player.swf | Bin 2944 -> 9801 bytes lib/mp3player/readme.txt | 87 - lib/odbc.php | 49 +- lib/olson.php | 630 -- lib/overlib.js | 1510 +-- lib/pagelib.php | 588 - lib/pclzip/pclzip.lib.php | 9915 ++++++++--------- lib/pclzip/readme.txt | 584 +- lib/phpmailer/ChangeLog.txt | 17 - lib/phpmailer/README | 204 +- lib/phpmailer/class.phpmailer.php | 231 +- lib/phpmailer/language/phpmailer.lang-cz.php | 24 - lib/phpmailer/language/phpmailer.lang-de.php | 23 - lib/phpmailer/language/phpmailer.lang-en.php | 1 + lib/phpmailer/language/phpmailer.lang-es.php | 23 - lib/phpmailer/language/phpmailer.lang-fr.php | 24 - lib/phpmailer/language/phpmailer.lang-it.php | 28 - lib/phpmailer/language/phpmailer.lang-nl.php | 23 - lib/phpmailer/language/phpmailer.lang-no.php | 23 - lib/phpmailer/language/phpmailer.lang-se.php | 24 - lib/phpmailer/language/phpmailer.lang-tr.php | 25 - lib/rsslib.php | 408 - lib/searchlib.php | 383 - lib/session-test.php | 10 +- lib/setup.php | 368 +- .../core/core.assign_smarty_interface.php | 4 +- .../core/core.display_debug_console.php | 4 +- lib/smarty/plugins/block.textformat.php | 6 +- lib/smarty/plugins/compiler.assign.php | 4 +- .../plugins/function.assign_debug_info.php | 6 +- lib/smarty/plugins/function.config_load.php | 4 +- lib/smarty/plugins/function.counter.php | 4 +- lib/smarty/plugins/function.cycle.php | 10 +- lib/smarty/plugins/function.debug.php | 6 +- lib/smarty/plugins/function.eval.php | 6 +- lib/smarty/plugins/function.fetch.php | 4 +- .../plugins/function.html_checkboxes.php | 18 +- lib/smarty/plugins/function.html_image.php | 10 +- lib/smarty/plugins/function.html_options.php | 6 +- lib/smarty/plugins/function.html_radios.php | 18 +- .../plugins/function.html_select_date.php | 6 +- .../plugins/function.html_select_time.php | 4 +- lib/smarty/plugins/function.html_table.php | 10 +- lib/smarty/plugins/function.mailto.php | 8 +- lib/smarty/plugins/function.math.php | 6 +- lib/smarty/plugins/function.popup.php | 4 +- lib/smarty/plugins/function.popup_init.php | 4 +- lib/smarty/plugins/modifier.capitalize.php | 4 +- lib/smarty/plugins/modifier.cat.php | 4 +- .../plugins/modifier.count_characters.php | 4 +- .../plugins/modifier.count_paragraphs.php | 4 +- .../plugins/modifier.count_sentences.php | 2 +- lib/smarty/plugins/modifier.count_words.php | 4 +- lib/smarty/plugins/modifier.date_format.php | 8 +- .../plugins/modifier.debug_print_var.php | 8 +- lib/smarty/plugins/modifier.default.php | 4 +- lib/smarty/plugins/modifier.escape.php | 4 +- lib/smarty/plugins/modifier.indent.php | 4 +- lib/smarty/plugins/modifier.lower.php | 4 +- lib/smarty/plugins/modifier.nl2br.php | 8 +- lib/smarty/plugins/modifier.regex_replace.php | 4 +- lib/smarty/plugins/modifier.replace.php | 4 +- lib/smarty/plugins/modifier.spacify.php | 4 +- lib/smarty/plugins/modifier.string_format.php | 4 +- lib/smarty/plugins/modifier.strip.php | 6 +- lib/smarty/plugins/modifier.strip_tags.php | 4 +- lib/smarty/plugins/modifier.truncate.php | 4 +- lib/smarty/plugins/modifier.upper.php | 4 +- lib/smarty/plugins/modifier.wordwrap.php | 4 +- .../plugins/outputfilter.trimwhitespace.php | 10 +- .../plugins/shared.escape_special_chars.php | 2 +- lib/smarty/plugins/shared.make_timestamp.php | 2 +- lib/speller/controls.html | 2 +- lib/speller/server-scripts/spellchecker.php | 18 +- lib/speller/spellchecker.html | 2 +- lib/tablelib.php | 515 - lib/timezones.txt | 1660 --- lib/uploadlib.php | 24 +- lib/validateurlsyntax.php | 547 - lib/weblib.php | 3450 ++---- lib/{wiki_to_markdown.php => wiki.php} | 830 +- lib/womenslib.php | 4 - lib/xmlize.php | 80 +- login/change_password.php | 100 +- login/change_password_form.html | 34 +- login/confirm.php | 18 +- login/forgot_password.php | 6 +- login/forgot_password_form.html | 12 +- login/index.php | 295 +- login/index_form.html | 58 +- login/logout.php | 11 +- login/signup.php | 12 +- login/signup_form.html | 289 +- message/bell.wav | Bin 5272 -> 0 bytes message/discussion.php | 41 - message/history.php | 88 - message/index.php | 88 - message/lib.php | 1014 -- message/messages.php | 2 - message/refresh.php | 111 - message/search.html | 60 - message/send.php | 100 - message/settings.html | 50 - message/user.php | 92 - mod/assignment/backuplib.php | 8 +- mod/assignment/db/mysql.php | 45 +- mod/assignment/db/mysql.sql | 15 +- mod/assignment/db/oci8po.php | 14 + mod/assignment/db/oci8po.sql | 98 + mod/assignment/db/postgres7.php | 46 +- mod/assignment/db/postgres7.sql | 16 +- mod/assignment/details.php | 40 - mod/assignment/index.php | 31 +- mod/assignment/lib.php | 1577 ++- mod/assignment/mod.html | 99 +- mod/assignment/plan.txt | 48 - mod/assignment/restorelib.php | 67 +- mod/assignment/styles.php | 93 - mod/assignment/submissions.php | 214 +- mod/assignment/type/common.html | 26 - mod/assignment/type/common_end.html | 1 - .../type/offline/assignment.class.php | 48 - mod/assignment/type/offline/mod.html | 3 - mod/assignment/type/postdata.html | 26 - .../type/uploadsingle/assignment.class.php | 55 - mod/assignment/type/uploadsingle/mod.html | 3 - mod/assignment/upload.php | 84 +- mod/assignment/version.php | 4 +- mod/assignment/view.php | 131 +- mod/attendance/add.php | 158 +- mod/attendance/backuplib.php | 2 +- mod/attendance/config.html | 51 +- mod/attendance/db/mysql.php | 87 +- mod/attendance/db/mysql.sql | 11 +- mod/attendance/db/oci8po.php | 33 +- mod/attendance/db/postgres7.php | 22 - mod/attendance/db/postgres7.sql | 22 +- mod/attendance/index.php | 8 +- mod/attendance/lib.php | 16 +- mod/attendance/mod.html | 177 +- mod/attendance/restorelib.php | 10 +- mod/attendance/teacheredit.php | 50 +- mod/attendance/version.php | 6 +- mod/attendance/view.php | 31 +- mod/attendance/viewall.php | 38 +- mod/attendance/viewweek.php | 42 +- mod/chat/backuplib.php | 2 +- mod/chat/chatd.php | 716 +- mod/chat/config.html | 92 +- mod/chat/db/mysql.php | 23 +- mod/chat/db/mysql.sql | 14 +- mod/chat/db/oci8po.php | 2 +- mod/chat/db/oci8po.sql | 4 +- mod/chat/db/postgres7.php | 30 +- mod/chat/db/postgres7.sql | 15 - mod/chat/drawboard.php | 38 + mod/chat/gui_header/chatinput.php | 33 + mod/chat/gui_header/chatmsg.php | 74 + mod/chat/gui_header/index.php | 23 + mod/chat/gui_header_js/chatinput.php | 90 +- mod/chat/gui_header_js/chatmsg.php | 4 +- mod/chat/gui_header_js/index.php | 74 +- mod/chat/gui_header_js/insert.php | 65 - mod/chat/gui_header_js/jsupdate.php | 169 +- mod/chat/gui_header_js/users.php | 118 - mod/chat/gui_java/MainFrameGui.java | 177 + mod/chat/gui_java/TextDialog.java | 68 + mod/chat/gui_java/arsc.java | 90 + mod/chat/gui_push_js/chatinput.php | 35 + mod/chat/gui_push_js/chatmsg.php | 98 + mod/chat/gui_push_js/index.php | 24 + mod/chat/gui_sockets/chatinput.php | 146 +- mod/chat/gui_sockets/index.php | 51 +- mod/chat/gui_text/index.php | 122 + mod/chat/index.php | 58 +- mod/chat/insert.php | 69 + mod/chat/lib.php | 382 +- mod/chat/mod.html | 126 +- mod/chat/pagelib.php | 87 - mod/chat/report.php | 143 +- mod/chat/restorelib.php | 23 +- mod/chat/users.php | 110 + mod/chat/version.php | 6 +- mod/chat/view.php | 152 +- mod/choice/backuplib.php | 85 +- mod/choice/db/mysql.php | 78 +- mod/choice/db/mysql.sql | 37 +- mod/choice/db/oci8po.php | 2 +- mod/choice/db/postgres7.php | 65 +- mod/choice/db/postgres7.sql | 32 +- mod/choice/index.php | 18 +- mod/choice/lib.php | 158 +- mod/choice/mod.html | 304 +- mod/choice/report.php | 270 +- mod/choice/restorelib.php | 222 +- mod/choice/version.php | 6 +- mod/choice/view.php | 353 +- mod/dialogue/backuplib.php | 11 +- mod/dialogue/db/mysql.php | 16 +- mod/dialogue/db/mysql.sql | 13 +- mod/dialogue/db/postgres7.php | 16 +- mod/dialogue/db/postgres7.sql | 11 +- mod/dialogue/dialogues.php | 132 +- mod/dialogue/index.php | 4 +- mod/dialogue/lib.php | 72 +- mod/dialogue/locallib.php | 131 +- mod/dialogue/mod.html | 55 +- mod/dialogue/restorelib.php | 14 +- mod/dialogue/version.php | 6 +- mod/dialogue/view.php | 54 +- mod/exercise/assessments.php | 371 +- mod/exercise/backuplib.php | 4 +- mod/exercise/db/mysql.php | 33 +- mod/exercise/db/mysql.sql | 24 +- mod/exercise/db/postgres7.php | 31 +- mod/exercise/db/postgres7.sql | 20 +- mod/exercise/index.php | 19 +- mod/exercise/lib.php | 199 +- mod/exercise/locallib.php | 738 +- mod/exercise/mod.html | 123 +- mod/exercise/restorelib.php | 20 +- mod/exercise/submissions.php | 158 +- mod/exercise/upload.php | 91 +- mod/exercise/version.php | 6 +- mod/exercise/view.php | 177 +- mod/forum/backuplib.php | 72 +- mod/forum/config.html | 116 +- mod/forum/db/mysql.php | 100 +- mod/forum/db/mysql.sql | 40 +- mod/forum/db/oci8po.php | 2 +- mod/forum/db/postgres7.php | 108 +- mod/forum/db/postgres7.sql | 46 - mod/forum/delete.php | 27 + mod/forum/discuss.php | 81 +- mod/forum/index.php | 234 +- mod/forum/lib.php | 1647 +-- mod/forum/mod.html | 290 +- mod/forum/post.html | 73 +- mod/forum/post.php | 219 +- mod/forum/prune.html | 12 +- mod/forum/rate.php | 11 +- mod/forum/report.php | 24 +- mod/forum/restorelib.php | 233 +- mod/forum/rsslib.php | 60 +- mod/forum/search.php | 429 +- mod/forum/subscribe.php | 59 +- mod/forum/subscriber.html | 4 +- mod/forum/subscribers.php | 50 +- mod/forum/user.php | 112 - mod/forum/version.php | 6 +- mod/forum/view.php | 111 +- mod/glossary/approve.php | 26 +- mod/glossary/backuplib.php | 3 +- mod/glossary/comment.html | 73 +- mod/glossary/comment.php | 183 +- mod/glossary/comments.php | 45 +- mod/glossary/config.html | 295 +- mod/glossary/db/mysql.php | 79 +- mod/glossary/db/mysql.sql | 29 +- mod/glossary/db/oci8po.php | 42 +- mod/glossary/db/postgres7.php | 74 +- mod/glossary/db/postgres7.sql | 22 - mod/glossary/deleteentry.php | 44 +- mod/glossary/edit.html | 149 +- mod/glossary/edit.php | 135 +- mod/glossary/editcategories.html | 42 +- mod/glossary/editcategories.php | 308 +- mod/glossary/export.php | 42 +- mod/glossary/exportentry.php | 49 +- mod/glossary/filter.php | 145 +- mod/glossary/formats.php | 235 +- .../formats/TEMPLATE/TEMPLATE_format.php | 74 +- .../formats/continuous/continuous_format.php | 43 +- .../formats/dictionary/dictionary_format.php | 39 +- .../encyclopedia/encyclopedia_format.php | 95 +- .../formats/entrylist/entrylist_format.php | 54 +- mod/glossary/formats/faq/faq_format.php | 54 +- .../fullwithauthor/fullwithauthor_format.php | 82 +- .../fullwithoutauthor_format.php | 65 +- mod/glossary/import.html | 42 +- mod/glossary/import.php | 91 +- mod/glossary/index.php | 20 +- mod/glossary/lib.php | 797 +- mod/glossary/mod.html | 362 +- mod/glossary/print.php | 159 +- mod/glossary/rate.php | 18 +- mod/glossary/report.php | 27 +- mod/glossary/restorelib.php | 127 +- mod/glossary/rsslib.php | 58 +- mod/glossary/showentry.php | 43 +- mod/glossary/sql.php | 73 +- mod/glossary/tabs.html | 34 +- mod/glossary/version.php | 8 +- mod/glossary/view.php | 344 +- mod/index.html | 0 mod/journal/backuplib.php | 2 +- mod/journal/db/mysql.php | 23 +- mod/journal/db/mysql.sql | 7 +- mod/journal/db/oci8po.php | 36 +- mod/journal/db/postgres7.php | 23 +- mod/journal/db/postgres7.sql | 6 - mod/journal/edit.html | 44 +- mod/journal/edit.php | 16 +- mod/journal/index.php | 2 +- mod/journal/lib.php | 136 +- mod/journal/mod.html | 96 +- mod/journal/report.php | 30 +- mod/journal/restorelib.php | 85 +- mod/journal/version.php | 6 +- mod/journal/view.php | 61 +- mod/label/backuplib.php | 2 +- mod/label/db/mysql.php | 50 +- mod/label/db/mysql.sql | 3 +- mod/label/db/postgres7.php | 67 +- mod/label/db/postgres7.sql | 2 - mod/label/index.php | 2 +- mod/label/lib.php | 7 +- mod/label/mod.html | 29 +- mod/label/restorelib.php | 10 +- mod/label/version.php | 6 +- mod/label/view.php | 2 +- mod/lesson/action/addbranchtable.php | 84 - mod/lesson/action/addcluster.php | 67 - mod/lesson/action/addendofbranch.php | 66 - mod/lesson/action/addendofcluster.php | 53 - mod/lesson/action/addpage.php | 241 - mod/lesson/action/confirmdelete.php | 31 - mod/lesson/action/continue.php | 794 -- mod/lesson/action/delete.php | 60 - mod/lesson/action/editpage.php | 473 - mod/lesson/action/insertpage.php | 191 - mod/lesson/action/move.php | 39 - mod/lesson/action/moveit.php | 102 - mod/lesson/action/updatepage.php | 148 - mod/lesson/backuplib.php | 239 +- mod/lesson/db/mysql.php | 148 +- mod/lesson/db/mysql.sql | 102 +- mod/lesson/db/postgres7.php | 196 +- mod/lesson/db/postgres7.sql | 145 +- mod/lesson/format.php | 2 +- mod/lesson/import.php | 31 +- mod/lesson/index.php | 16 +- mod/lesson/lesson.php | 1322 ++- mod/lesson/lib.php | 671 +- mod/lesson/locallib.php | 1153 -- mod/lesson/mod.html | 440 +- mod/lesson/reformat.php | 178 - mod/lesson/report.php | 874 -- mod/lesson/restorelib.php | 373 +- mod/lesson/styles.php | 34 - mod/lesson/timer.js | 113 - mod/lesson/version.php | 4 +- mod/lesson/view.php | 1841 +-- mod/quiz/attempt.php | 161 +- mod/quiz/attempt_close_js.php | 25 - mod/quiz/backuplib.php | 74 +- mod/quiz/category.php | 863 +- mod/quiz/config.html | 348 - mod/quiz/db/mysql.php | 89 +- mod/quiz/db/mysql.sql | 49 +- mod/quiz/db/oci8po.php | 2 +- mod/quiz/db/oci8po.sql | 1 - mod/quiz/db/postgres7.php | 114 +- mod/quiz/db/postgres7.sql | 74 +- mod/quiz/defaults.php | 40 - mod/quiz/edit.php | 337 +- mod/quiz/export.php | 57 +- mod/quiz/format.php | 17 +- mod/quiz/format/aiken/format.php | 4 +- mod/quiz/format/aon/format.php | 8 +- mod/quiz/format/blackboard/format.php | 4 +- mod/quiz/format/coursetestmanager/format.php | 796 +- mod/quiz/format/gift/format.php | 67 +- mod/quiz/format/learnwise/format.php | 144 - .../format/learnwise/learnwise-example.xml | 146 - mod/quiz/format/missingword/format.php | 8 +- mod/quiz/format/multianswer/format.php | 2 +- mod/quiz/format/qti/custommediafilter.php | 146 - mod/quiz/format/qti/format.php | 982 +- mod/quiz/format/qti/qt_common.php | 147 - mod/quiz/format/qti/templates/choice.tpl | 70 - .../format/qti/templates/choiceMultiple.tpl | 64 - mod/quiz/format/qti/templates/composite.tpl | 101 - .../format/qti/templates/extendedText.tpl | 17 - .../templates/extendedText_simpleEssay.tpl | 27 - .../format/qti/templates/graphicGapMatch.tpl | 33 - mod/quiz/format/qti/templates/imsmanifest.tpl | 85 - mod/quiz/format/qti/templates/match.tpl | 62 - .../format/qti/templates/mmchoiceMultiple.tpl | 88 - .../format/qti/templates/notimplemented.tpl | 20 - mod/quiz/format/qti/templates/numerical.tpl | 65 - mod/quiz/format/qti/templates/textEntry.tpl | 50 - mod/quiz/format/webct/format.php | 58 +- mod/quiz/format/xml/format.php | 330 +- mod/quiz/import.php | 55 +- mod/quiz/imsattempt.php | 297 - mod/quiz/index.php | 19 +- mod/quiz/jsclock.php | 6 +- mod/quiz/jstimer.php | 6 +- mod/quiz/lib.php | 1689 ++- mod/quiz/locallib.php | 2016 ---- mod/quiz/mod.html | 716 +- mod/quiz/multiple.php | 195 +- mod/quiz/pagelib.php | 90 - mod/quiz/preview.php | 223 +- mod/quiz/protect_js.php | 38 - mod/quiz/question.php | 235 +- .../questiontypes/calculated/calculated.html | 192 +- .../questiontypes/calculated/editquestion.php | 90 +- .../calculated/modifiednumericalqtype.php | 2 +- .../questiontypes/calculated/questiontype.php | 52 +- .../datasetdependent/abstractqtype.php | 14 +- .../categorydatasetdefinitions.php | 26 +- .../datasetdependent/datasetitems.php | 61 +- .../datasetdependent/questiondatasets.html | 93 +- .../description/description.html | 147 +- .../description/editquestion.php | 4 +- .../description/questiontype.php | 11 +- mod/quiz/questiontypes/match/editquestion.php | 6 +- mod/quiz/questiontypes/match/match.html | 190 +- mod/quiz/questiontypes/match/questiontype.php | 20 +- .../multianswer/editquestion.php | 4 +- .../multianswer/multianswer.html | 116 +- .../multianswer/questiontype.php | 87 +- .../multichoice/editquestion.php | 4 +- .../multichoice/multichoice.html | 257 +- .../multichoice/questiontype.php | 18 +- .../questiontypes/numerical/editquestion.php | 4 +- .../questiontypes/numerical/numerical.html | 161 +- .../questiontypes/numerical/questiontype.php | 4 +- .../questiontypes/random/editquestion.php | 4 +- .../questiontypes/random/questiontype.php | 90 +- mod/quiz/questiontypes/random/random.html | 67 +- .../randomsamatch/editquestion.php | 4 +- .../randomsamatch/questiontype.php | 2 +- .../randomsamatch/randomsamatch.html | 178 +- .../shortanswer/editquestion.php | 6 +- .../shortanswer/questiontype.php | 408 +- .../shortanswer/shortanswer.html | 245 +- .../questiontypes/truefalse/editquestion.php | 4 +- .../questiontypes/truefalse/questiontype.php | 15 +- .../questiontypes/truefalse/truefalse.html | 189 +- mod/quiz/quizfile.php | 169 +- mod/quiz/report.php | 48 +- mod/quiz/report/default.php | 2 +- mod/quiz/report/fullstat/report.php | 92 +- mod/quiz/report/overview/report.php | 289 +- mod/quiz/report/regrade/report.php | 2 +- mod/quiz/report/simplestat/report.php | 22 +- mod/quiz/restorelib.php | 361 +- mod/quiz/review.php | 36 +- mod/quiz/version.php | 6 +- mod/quiz/view.php | 134 +- mod/quiz/view_js.php | 20 +- mod/resource/backuplib.php | 2 +- mod/resource/config.html | 87 +- mod/resource/coursefiles.php | 854 ++ mod/resource/db/mysql.php | 14 +- mod/resource/db/mysql.sql | 3 +- mod/resource/db/oci8po.php | 2 +- mod/resource/db/postgres7.php | 14 +- mod/resource/db/postgres7.sql | 1 - mod/resource/fetch.php | 10 +- mod/resource/filter.php | 136 +- mod/resource/index.php | 19 +- mod/resource/lib.php | 162 +- mod/resource/restorelib.php | 140 +- mod/resource/type/common.html | 33 +- mod/resource/type/common_end.html | 2 +- mod/resource/type/directory/directory.html | 9 +- .../type/directory/resource.class.php | 85 +- mod/resource/type/file/file.html | 171 +- mod/resource/type/file/localfile.php | 49 - mod/resource/type/file/localpath.php | 55 - mod/resource/type/file/resource.class.php | 247 +- mod/resource/type/html/html.html | 110 +- mod/resource/type/html/resource.class.php | 76 +- mod/resource/type/text/resource.class.php | 77 +- mod/resource/type/text/text.html | 113 +- mod/resource/version.php | 6 +- mod/resource/view.php | 36 +- mod/scorm/api.php | 87 - mod/scorm/api1_2.php | 387 + mod/scorm/backuplib.php | 75 +- mod/scorm/cmi.php | 78 + mod/scorm/config.html | 51 +- mod/scorm/coursefiles.php | 855 ++ mod/scorm/datamodel.php | 46 - mod/scorm/datamodels/scorm1_2.js.php | 298 - mod/scorm/datamodels/scorm1_3.js.php | 305 - mod/scorm/db/mysql.php | 111 +- mod/scorm/db/mysql.sql | 36 +- mod/scorm/db/postgres7.php | 104 +- mod/scorm/db/postgres7.sql | 33 +- mod/scorm/details.php | 272 + mod/scorm/index.php | 27 +- mod/scorm/lib.php | 430 +- mod/scorm/loadSCO.php | 100 - mod/scorm/mod.html | 153 +- mod/scorm/playscorm.php | 357 +- mod/scorm/report.php | 112 +- mod/scorm/request.js | 35 - mod/scorm/restorelib.php | 91 +- mod/scorm/scormAPI.php | 206 + mod/scorm/validate.php | 87 - mod/scorm/validatordomxml.php | 10 +- mod/scorm/version.php | 6 +- mod/scorm/view.php | 119 +- mod/survey/backuplib.php | 2 +- mod/survey/db/mysql.php | 18 +- mod/survey/db/mysql.sql | 12 +- mod/survey/db/oci8po.php | 2 +- mod/survey/db/postgres7.php | 22 +- mod/survey/db/postgres7.sql | 21 - mod/survey/details.php | 45 +- mod/survey/download.php | 26 +- mod/survey/graph.php | 84 +- mod/survey/index.php | 12 +- mod/survey/lib.php | 121 +- mod/survey/mod.html | 40 +- mod/survey/report.php | 112 +- mod/survey/restorelib.php | 27 +- mod/survey/save.php | 20 +- mod/survey/version.php | 6 +- mod/survey/view.php | 34 +- mod/wiki/admin.php | 164 +- mod/wiki/backuplib.php | 60 +- mod/wiki/checklinks.html | 14 +- mod/wiki/db/mysql.php | 78 - mod/wiki/db/mysql.sql | 14 +- mod/wiki/db/postgres7.php | 89 - mod/wiki/db/postgres7.sql | 13 +- mod/wiki/ewiki/ewiki.php | 137 +- mod/wiki/ewiki/plugins/aview/backlinks.php | 2 +- mod/wiki/ewiki/plugins/aview/downloads.php | 34 +- mod/wiki/ewiki/plugins/email_protect.php | 24 +- mod/wiki/ewiki/plugins/init.php | 14 +- mod/wiki/ewiki/plugins/markup/footnotes.php | 2 +- mod/wiki/ewiki/plugins/moodle/diff.php | 66 +- mod/wiki/ewiki/plugins/moodle/downloads.php | 111 +- mod/wiki/ewiki/plugins/moodle/f_fixhtml.php | 2 +- .../plugins/moodle/moodle_binary_store.php | 55 +- .../ewiki/plugins/moodle/moodle_wikidump.php | 77 +- mod/wiki/ewikimoodlelib.php | 102 +- mod/wiki/filter.php | 185 +- mod/wiki/index.php | 8 +- mod/wiki/lib.php | 359 +- mod/wiki/mod.html | 168 +- mod/wiki/removepages.html | 30 +- mod/wiki/restorelib.php | 122 +- mod/wiki/revertpages.html | 30 +- mod/wiki/setpageflags.html | 18 +- mod/wiki/strippages.html | 22 +- mod/wiki/test.php | 2 +- mod/wiki/version.php | 3 +- mod/wiki/view.php | 162 +- mod/wiki/wiki_styles.php | 4 +- mod/wiki/wikifiles.php | 848 ++ mod/workshop/Overview.html | 173 + mod/workshop/assess.php | 137 - mod/workshop/assessment_grading_form.html | 29 - mod/workshop/assessments.php | 1142 +- mod/workshop/backuplib.php | 83 +- mod/workshop/db/mysql.php | 203 +- mod/workshop/db/mysql.sql | 76 +- mod/workshop/db/oci8po.php | 2 +- mod/workshop/db/postgres7.php | 193 +- mod/workshop/db/postgres7.sql | 96 +- mod/workshop/icon.png | Bin 0 -> 295 bytes mod/workshop/icon1.gif | Bin 0 -> 209 bytes mod/workshop/icon2.gif | Bin 0 -> 256 bytes mod/workshop/icon2.png | Bin 0 -> 309 bytes mod/workshop/icon3.gif | Bin 0 -> 127 bytes mod/workshop/icon4.gif | Bin 0 -> 132 bytes mod/workshop/icon5.gif | Bin 0 -> 122 bytes mod/workshop/index.php | 106 +- mod/workshop/lib.php | 1228 +- mod/workshop/locallib.php | 2119 ++-- mod/workshop/mod.html | 335 +- mod/workshop/restorelib.php | 206 +- mod/workshop/submissions.php | 1589 ++- mod/workshop/todo.txt | 27 + mod/workshop/upload.php | 174 +- mod/workshop/version.php | 6 +- mod/workshop/view.php | 792 +- mod/workshop/viewassessment.php | 81 - pix/t/copy.gif | Bin 869 -> 0 bytes pix/t/go.gif | Bin 73 -> 0 bytes pix/t/log.gif | Bin 67 -> 0 bytes pix/t/message.gif | Bin 72 -> 0 bytes pix/t/moveleft.gif | Bin 845 -> 0 bytes pix/t/preview.gif | Bin 128 -> 0 bytes pix/t/removeright.gif | Bin 845 -> 0 bytes pix/t/stop.gif | Bin 73 -> 0 bytes pix/t/switch.gif | Bin 124 -> 0 bytes pix/t/switch_minus.gif | Bin 119 -> 0 bytes pix/t/switch_plus.gif | Bin 124 -> 0 bytes pix/t/usernot.gif | Bin 94 -> 0 bytes rss/file.php | 107 +- rss/rsslib.php | 285 + tags | 2392 ++-- theme/UPGRADE.txt | 17 - theme/brightretro/footer.html | 4 +- theme/brightretro/header.html | 8 +- theme/brightretro/styles.php | 11 +- theme/cordoroyblue/footer.html | 18 +- theme/cordoroyblue/header.html | 2 +- theme/cordoroyblue/styles.php | 11 - theme/cornflower/docstyles.php | 97 - theme/cornflower/footer.html | 4 +- theme/cornflower/header.html | 2 +- theme/cornflower/styles.php | 9 - theme/formal_white/README.html | 19 - theme/formal_white/config.php | 142 +- theme/formal_white/docstyles.php | 17 - theme/formal_white/footer.html | 39 +- theme/formal_white/fw_color.css | 209 - theme/formal_white/fw_fonts.css | 131 - theme/formal_white/fw_layout.css | 192 - theme/formal_white/gradient.jpg | Bin 373 -> 0 bytes theme/formal_white/header.html | 92 +- theme/formal_white/pix/grad/bg_bread.jpg | Bin 325 -> 0 bytes theme/formal_white/pix/grad/bg_header.jpg | Bin 332 -> 0 bytes theme/formal_white/screenshot.jpg | Bin 27324 -> 0 bytes theme/formal_white/styles.php | 837 +- theme/garden/footer.html | 6 +- theme/garden/header.html | 6 +- theme/garden/styles.php | 9 - theme/index.php | 118 +- theme/metal/footer.html | 2 +- theme/metal/header.html | 2 +- theme/metal/styles.php | 9 +- theme/oceanblue/README | 8 + theme/oceanblue/README.txt | 4 - theme/oceanblue/config.php | 136 +- theme/oceanblue/docstyles.php | 102 - theme/oceanblue/footer.html | 32 +- theme/oceanblue/header.html | 90 +- theme/oceanblue/header.html_logo | 53 + theme/oceanblue/logo.jpg | Bin 0 -> 2756 bytes theme/oceanblue/logo_base.jpg | Bin 0 -> 820 bytes theme/oceanblue/pix/tab/left.gif | Bin 218 -> 0 bytes theme/oceanblue/pix/tab/left_active.gif | Bin 163 -> 0 bytes theme/oceanblue/pix/tab/left_active_hover.gif | Bin 171 -> 0 bytes theme/oceanblue/pix/tab/left_hover.gif | Bin 235 -> 0 bytes theme/oceanblue/pix/tab/right.gif | Bin 2379 -> 0 bytes theme/oceanblue/pix/tab/right_active.gif | Bin 620 -> 0 bytes .../oceanblue/pix/tab/right_active_hover.gif | Bin 524 -> 0 bytes theme/oceanblue/pix/tab/right_end.gif | Bin 69 -> 0 bytes theme/oceanblue/pix/tab/right_hover.gif | Bin 2188 -> 0 bytes theme/oceanblue/styles.php | 744 +- theme/oceanblue/styles_color.css | 717 -- theme/oceanblue/styles_fonts.css | 506 - theme/oceanblue/styles_layout.css | 1260 --- theme/orangewhite/README.html | 7 - theme/orangewhite/colorstrip.gif | Bin 1043 -> 0 bytes theme/orangewhite/config.php | 141 - theme/orangewhite/css.gif | Bin 750 -> 0 bytes theme/orangewhite/csshover.htc | 88 - theme/orangewhite/docstyles.php | 102 - theme/orangewhite/favicon.ico | Bin 365 -> 0 bytes theme/orangewhite/footer.html | 17 - theme/orangewhite/header.html | 46 - theme/orangewhite/nostyle.css | 9 - theme/orangewhite/pix/rightarrow2.gif | Bin 53 -> 0 bytes theme/orangewhite/pix/tab/left.gif | Bin 406 -> 0 bytes theme/orangewhite/pix/tab/left2.gif | Bin 411 -> 0 bytes theme/orangewhite/pix/tab/left_active.gif | Bin 130 -> 0 bytes theme/orangewhite/pix/tab/left_active2.gif | Bin 130 -> 0 bytes theme/orangewhite/pix/tab/left_hover.gif | Bin 388 -> 0 bytes theme/orangewhite/pix/tab/left_hover2.gif | Bin 399 -> 0 bytes theme/orangewhite/pix/tab/left_inactive.gif | Bin 363 -> 0 bytes theme/orangewhite/pix/tab/left_inactive2.gif | Bin 380 -> 0 bytes theme/orangewhite/pix/tab/right.gif | Bin 1095 -> 0 bytes theme/orangewhite/pix/tab/right2.gif | Bin 1349 -> 0 bytes theme/orangewhite/pix/tab/right_active.gif | Bin 311 -> 0 bytes theme/orangewhite/pix/tab/right_active2.gif | Bin 311 -> 0 bytes theme/orangewhite/pix/tab/right_end.gif | Bin 98 -> 0 bytes theme/orangewhite/pix/tab/right_end2.gif | Bin 99 -> 0 bytes theme/orangewhite/pix/tab/right_hover.gif | Bin 911 -> 0 bytes theme/orangewhite/pix/tab/right_hover2.gif | Bin 1172 -> 0 bytes theme/orangewhite/pix/tab/right_inactive.gif | Bin 715 -> 0 bytes theme/orangewhite/pix/tab/right_inactive2.gif | Bin 844 -> 0 bytes theme/orangewhite/pix/tab/tabsbg.gif | Bin 142 -> 0 bytes theme/orangewhite/pix/tab/tabsbg2.gif | Bin 204 -> 0 bytes theme/orangewhite/pix/tab/tabsbg_x2.gif | Bin 260 -> 0 bytes theme/orangewhite/screenshot.jpg | Bin 37408 -> 0 bytes theme/orangewhite/section_508.gif | Bin 731 -> 0 bytes theme/orangewhite/styles.php | 18 - theme/orangewhite/styles_color.css | 639 -- theme/orangewhite/styles_fonts.css | 396 - theme/orangewhite/styles_layout.css | 921 -- theme/orangewhite/styles_tabs.css | 220 - theme/orangewhite/xhtml_1_0.gif | Bin 780 -> 0 bytes theme/orangewhitepda/config.php | 68 - theme/orangewhitepda/css.gif | Bin 750 -> 0 bytes theme/orangewhitepda/csshover.htc | 88 - theme/orangewhitepda/docstyles.php | 102 - theme/orangewhitepda/farbstreifen_moodle.gif | Bin 1005 -> 0 bytes theme/orangewhitepda/footer.html | 15 - theme/orangewhitepda/header.html | 45 - theme/orangewhitepda/nostyle.css | 9 - theme/orangewhitepda/section_508.gif | Bin 731 -> 0 bytes theme/orangewhitepda/styles.php | 48 - theme/orangewhitepda/styles_color.css | 639 -- theme/orangewhitepda/styles_font.css | 390 - theme/orangewhitepda/styles_layout.css | 751 -- theme/orangewhitepda/xhtml_1_0.gif | Bin 780 -> 0 bytes theme/poweraid/README.txt | 46 + theme/poweraid/config.php | 52 + .../{orangewhitepda => poweraid}/favicon.ico | Bin theme/poweraid/footer.html | 44 + theme/poweraid/header.html | 147 + theme/poweraid/images/bott_bar.jpg | Bin 0 -> 724 bytes theme/poweraid/images/bott_left.jpg | Bin 0 -> 753 bytes theme/poweraid/images/bott_middle.jpg | Bin 0 -> 726 bytes theme/poweraid/images/bott_right.jpg | Bin 0 -> 749 bytes .../poweraid/images/client_tools_bot_mid.gif | Bin 0 -> 169 bytes theme/poweraid/images/dots.gif | Bin 0 -> 72 bytes theme/poweraid/images/dots_002.gif | Bin 0 -> 58 bytes theme/poweraid/images/favicon.ico | Bin 0 -> 766 bytes theme/poweraid/images/frontlogo.jpg | Bin 0 -> 5018 bytes theme/poweraid/images/gradient.jpg | Bin 0 -> 488 bytes theme/poweraid/images/index.php | 3 + theme/poweraid/images/left_corner_bott.jpg | Bin 0 -> 753 bytes theme/poweraid/images/left_corner_top.jpg | Bin 0 -> 755 bytes theme/poweraid/images/left_sidebar.jpg | Bin 0 -> 707 bytes theme/poweraid/images/login_lower_left.gif | Bin 0 -> 143 bytes theme/poweraid/images/login_lower_right.gif | Bin 0 -> 146 bytes theme/poweraid/images/right_bott.jpg | Bin 0 -> 727 bytes theme/poweraid/images/right_corner_bott.jpg | Bin 0 -> 753 bytes theme/poweraid/images/right_corner_top.jpg | Bin 0 -> 761 bytes theme/poweraid/images/right_sidebar.jpg | Bin 0 -> 709 bytes theme/poweraid/images/right_top.jpg | Bin 0 -> 725 bytes theme/poweraid/images/side_left.gif | Bin 0 -> 92 bytes theme/poweraid/images/side_right.gif | Bin 0 -> 84 bytes theme/poweraid/images/sidebar_left.jpg | Bin 0 -> 740 bytes theme/poweraid/images/sidebar_right.jpg | Bin 0 -> 751 bytes theme/poweraid/images/smalllogo.jpg | Bin 0 -> 2644 bytes theme/poweraid/images/top_bar.jpg | Bin 0 -> 726 bytes theme/poweraid/images/top_middle.gif | Bin 0 -> 63 bytes theme/poweraid/images/top_right.gif | Bin 0 -> 526 bytes theme/poweraid/images/topbar_left.jpg | Bin 0 -> 861 bytes theme/poweraid/images/topbar_middle.jpg | Bin 0 -> 794 bytes theme/poweraid/images/topbar_right.jpg | Bin 0 -> 843 bytes theme/poweraid/index.php | 3 + theme/poweraid/license.txt | 340 + theme/poweraid/styles.php | 642 ++ theme/preview.php | 41 - theme/standard/README.html | 15 - theme/standard/config.php | 151 +- theme/standard/docstyles.php | 102 - theme/standard/footer.html | 34 +- theme/standard/gradient.jpg | Bin 373 -> 379 bytes theme/standard/header.html | 89 +- theme/standard/pix/tab/left.gif | Bin 218 -> 0 bytes theme/standard/pix/tab/left_active.gif | Bin 163 -> 0 bytes theme/standard/pix/tab/left_active_hover.gif | Bin 171 -> 0 bytes theme/standard/pix/tab/left_hover.gif | Bin 235 -> 0 bytes theme/standard/pix/tab/right.gif | Bin 2379 -> 0 bytes theme/standard/pix/tab/right_active.gif | Bin 620 -> 0 bytes theme/standard/pix/tab/right_active_hover.gif | Bin 524 -> 0 bytes theme/standard/pix/tab/right_end.gif | Bin 69 -> 0 bytes theme/standard/pix/tab/right_hover.gif | Bin 2188 -> 0 bytes theme/standard/screenshot.jpg | Bin 43147 -> 0 bytes theme/standard/styles.php | 745 +- theme/standard/styles_color.css | 716 -- theme/standard/styles_fonts.css | 506 - theme/standard/styles_layout.css | 1254 --- theme/standard/styles_moz.css | 331 - theme/standardblue/config.php | 133 +- theme/standardblue/footer.html | 23 +- theme/standardblue/gradients.css | 19 - theme/standardblue/header.html | 89 +- theme/standardblue/styles.php | 745 +- theme/standardgreen/config.php | 133 +- theme/standardgreen/footer.html | 23 +- theme/standardgreen/gradients.css | 19 - theme/standardgreen/header.html | 89 +- theme/standardgreen/styles.php | 745 +- theme/standardlogo/README.html | 2 +- theme/standardlogo/config.php | 133 +- theme/standardlogo/footer.html | 23 +- theme/standardlogo/header.html | 93 +- theme/standardlogo/styles.php | 745 +- theme/standardred/config.php | 133 +- theme/standardred/footer.html | 23 +- theme/standardred/gradients.css | 19 - theme/standardred/header.html | 89 +- theme/standardred/styles.php | 745 +- theme/standardwhite/config.php | 133 +- theme/standardwhite/footer.html | 23 +- theme/standardwhite/gradient.jpg | Bin 373 -> 488 bytes theme/standardwhite/gradients.css | 19 - theme/standardwhite/header.html | 89 +- theme/standardwhite/styles.php | 745 +- user/edit.html | 307 +- user/edit.php | 217 +- user/index.php | 236 +- user/pix.php | 49 +- user/pixgroup.php | 49 +- user/policy.php | 51 - user/tabs.php | 92 - user/view.php | 208 +- userpix/index.php | 16 +- version.php | 18 +- 6608 files changed, 162080 insertions(+), 280005 deletions(-) delete mode 100644 admin/calendar.html delete mode 100644 admin/calendar.php create mode 100644 admin/config.html delete mode 100644 admin/configvars.php delete mode 100644 admin/handlevirus.php delete mode 100644 admin/health.php delete mode 100644 admin/innodb.php delete mode 100755 admin/langdoc.php delete mode 100644 admin/maintenance.php delete mode 100755 admin/process_email.php delete mode 100644 admin/replace.php delete mode 100644 admin/timezoneimport.php delete mode 100644 auth/cas/README-CAS delete mode 100644 auth/cas/auth_ldap_sync_users.php delete mode 100644 auth/cas/config.html delete mode 100644 auth/cas/forbidden.html delete mode 100644 auth/cas/forbidden.php delete mode 100644 auth/cas/index_form.html delete mode 100644 auth/cas/languages.php delete mode 100644 auth/cas/lib.php delete mode 100644 auth/cas/login.php delete mode 100644 auth/cas/logout.php delete mode 100755 auth/ldap/auth_ldap_sync_users.php delete mode 100644 auth/pam/config.html delete mode 100644 auth/pam/lib.php delete mode 100644 auth/shibboleth/README.txt delete mode 100755 auth/shibboleth/config.html delete mode 100755 auth/shibboleth/lib.php delete mode 100644 backup/CHANGES_14_15.txt delete mode 100644 backup/bb/README.txt delete mode 100644 backup/bb/bb5.5_to_moodle.xsl delete mode 100644 backup/bb/bb6_to_moodle.xsl delete mode 100644 backup/bb/restore_bb.php delete mode 100644 blocks/HOWTO.html create mode 100644 blocks/README.txt delete mode 100644 blocks/admin/styles.php delete mode 100644 blocks/calendar_month/styles.php delete mode 100644 blocks/calendar_upcoming/styles.php rename blocks/course_list/{config_global.html => config.html} (88%) delete mode 100644 blocks/course_summary/styles.php delete mode 100644 blocks/glossary_random/block_glossary_random.php delete mode 100644 blocks/glossary_random/config_instance.html delete mode 100755 blocks/html/block_html.php delete mode 100755 blocks/html/config_instance.html delete mode 100644 blocks/messages/block_messages.php create mode 100644 blocks/online_users/config.html delete mode 100644 blocks/online_users/config_global.html delete mode 100644 blocks/pagedemo.php delete mode 100644 blocks/quiz_results/block_quiz_results.php delete mode 100644 blocks/quiz_results/config_instance.html delete mode 100644 blocks/quiz_results/styles.php delete mode 100644 blocks/rss_client/block_rss_client.php delete mode 100644 blocks/rss_client/block_rss_client_action.php delete mode 100644 blocks/rss_client/block_rss_client_error.php delete mode 100644 blocks/rss_client/config_global.html delete mode 100644 blocks/rss_client/config_instance.html delete mode 100644 blocks/rss_client/db/mysql.php delete mode 100644 blocks/rss_client/db/mysql.sql delete mode 100644 blocks/rss_client/db/postgres7.php delete mode 100644 blocks/rss_client/db/postgres7.sql delete mode 100644 blocks/rss_client/styles.php delete mode 100644 blocks/search_forums/styles.php create mode 100644 course/enrol.html delete mode 100755 course/format/social/config.php delete mode 100755 course/format/topics/config.php delete mode 100755 course/format/weeks/config.php create mode 100644 course/groups-summary.html delete mode 100644 course/import.php delete mode 100644 course/importstudents.html delete mode 100644 course/importstudents.php delete mode 100644 course/jumpto.php create mode 100644 course/quickreport.php delete mode 100755 enrol/ldap/config.html delete mode 100755 enrol/ldap/enrol.php delete mode 100755 enrol/ldap/enrol_ldap_sync.php create mode 100644 files/mimetypes.php delete mode 100644 filter/index.html delete mode 100644 filter/tidy/filter.php delete mode 100644 grade/exceptions.html delete mode 100644 grade/exceptions.php delete mode 100644 grade/index.php delete mode 100644 grade/lib.php delete mode 100644 lang/ar/block_rss_client.php delete mode 100644 lang/ar/book.php delete mode 100644 lang/ar/brainstorm.php delete mode 100644 lang/ar/certificate.php delete mode 100644 lang/ar/emailprotect.php delete mode 100644 lang/ar/enrol_database.php delete mode 100644 lang/ar/enrol_ldap.php delete mode 100644 lang/ar/help/book/faq.html delete mode 100644 lang/ar/help/book/index.html delete mode 100644 lang/ar/help/book/mods.html delete mode 100644 lang/ar/help/book/numberingtype.html delete mode 100644 lang/ar/help/book/summary.html delete mode 100644 lang/ar/help/cookies.html delete mode 100644 lang/ar/help/courseavailability.html delete mode 100644 lang/ar/help/coursecategory.html delete mode 100644 lang/ar/hotpot.php delete mode 100644 lang/ar/message.php delete mode 100644 lang/be/block_html.php delete mode 100644 lang/be/block_quiz_results.php delete mode 100644 lang/be/docs/credits.html delete mode 100644 lang/be/docs/docstyles.css delete mode 100644 lang/be/docs/future.html delete mode 100644 lang/be/docs/installamp.html delete mode 100644 lang/be/docs/other.html delete mode 100644 lang/be/docs/philosophy.html create mode 100644 lang/be/docs/release.html delete mode 100644 lang/be/docs/translation.html rename auth/index.html => lang/be/enrol_ldap.php (100%) delete mode 100644 lang/be/fonts/default.ttf rename lang/{ar/questionnaire.php => be/grades.php} (100%) delete mode 100644 lang/be/help/courseidnumber.html delete mode 100644 lang/be/help/exercise/comparisonofassessments.html delete mode 100644 lang/be/help/forum/index.html delete mode 100644 lang/be/help/forum/maxattachmentsize.html delete mode 100644 lang/be/help/forum/mods.html delete mode 100644 lang/be/help/forum/rssarticles.html delete mode 100644 lang/be/help/forum/rsstype.html delete mode 100644 lang/be/help/forum/subscription2.html delete mode 100644 lang/be/help/lesson/index.html delete mode 100644 lang/be/help/questionnaire/mods.html delete mode 100644 lang/be/help/surveys.html delete mode 100644 lang/be/help/uploadusers.html delete mode 100644 lang/be/help/workshop/addingacomment.html delete mode 100644 lang/be/help/workshop/agreeassessments.html delete mode 100644 lang/be/help/workshop/analysisofassessments.html delete mode 100644 lang/be/help/workshop/anonymous.html delete mode 100644 lang/be/help/workshop/assessmentofexamples.html delete mode 100644 lang/be/help/workshop/assignmenttype.html delete mode 100644 lang/be/help/workshop/breakdownoffinalgrade.html delete mode 100644 lang/be/help/workshop/calculatingfinalgrade.html delete mode 100644 lang/be/help/workshop/comparisonofassessments.html delete mode 100644 lang/be/help/workshop/editingacomment.html delete mode 100644 lang/be/help/workshop/elements.html delete mode 100644 lang/be/help/workshop/finalgrades.html delete mode 100644 lang/be/help/workshop/grade.html delete mode 100644 lang/be/help/workshop/grading.html delete mode 100644 lang/be/help/workshop/gradingassessments.html delete mode 100644 lang/be/help/workshop/gradingstrategy.html delete mode 100644 lang/be/help/workshop/gradingsubmissions.html delete mode 100644 lang/be/help/workshop/includeself.html delete mode 100644 lang/be/help/workshop/includeteachersgrade.html delete mode 100644 lang/be/help/workshop/leaguetable.html delete mode 100644 lang/be/help/workshop/managing.html delete mode 100644 lang/be/help/workshop/mods.html delete mode 100644 lang/be/help/workshop/nassessmentsofstudentsubmissions.html delete mode 100644 lang/be/help/workshop/nassessmentsofteachersexamples.html delete mode 100644 lang/be/help/workshop/nelements.html delete mode 100644 lang/be/help/workshop/overallocation.html delete mode 100644 lang/be/help/workshop/resubmit.html delete mode 100644 lang/be/help/workshop/selfassessment.html delete mode 100644 lang/be/help/workshop/showinggrades.html delete mode 100644 lang/be/help/workshop/specimen.html delete mode 100644 lang/be/help/workshop/submissionofexamples.html delete mode 100644 lang/be/help/workshop/teachersgradings.html delete mode 100644 lang/be/help/workshop/ungradedassessments_student.html delete mode 100644 lang/be/help/workshop/ungradedassessments_teacher.html delete mode 100644 lang/be/message.php delete mode 100644 lang/ca/block_html.php delete mode 100644 lang/ca/block_rss_client.php delete mode 100644 lang/ca/book.php delete mode 100644 lang/ca/help/assignment/emailteachers.html delete mode 100644 lang/ca/help/book/customtitles.html delete mode 100644 lang/ca/help/book/disableprinting.html delete mode 100644 lang/ca/help/book/edit.html delete mode 100644 lang/ca/help/book/faq.html delete mode 100644 lang/ca/help/book/import.html delete mode 100644 lang/ca/help/book/index.html delete mode 100644 lang/ca/help/book/mods.html delete mode 100644 lang/ca/help/book/numberingtype.html delete mode 100644 lang/ca/help/book/summary.html delete mode 100644 lang/ca/help/glossary/usedynalinkentry.html create mode 100755 lang/ca/help/resource/program.html create mode 100755 lang/ca/help/resource/resourcetype.html delete mode 100644 lang/ca/help/workshop/gradinggrade.html delete mode 100644 lang/ca/help/workshop/includeteachersgrade.html delete mode 100644 lang/ca/message.php rename lang/{tl => cs}/fonts/default.ttf (100%) rename lang/{de_du => de}/README (71%) mode change 100755 => 100644 create mode 100755 lang/de/de-14.zip create mode 100644 lang/de/docs/release.htm create mode 100644 lang/de/docs/releaseold.html create mode 100644 lang/de/help/markdown.html create mode 100644 lang/de/text.html delete mode 100755 lang/de_du/activitynames.php delete mode 100755 lang/de_du/admin.php delete mode 100755 lang/de_du/wiki.php delete mode 100644 lang/el/block_course_list.php delete mode 100644 lang/el/block_course_summary.php delete mode 100644 lang/el/block_online_users.php delete mode 100644 lang/el/block_section_links.php delete mode 100644 lang/el/block_social_activities.php delete mode 100644 lang/el/docs/docstyles.css create mode 100644 lang/el/docs/release.html delete mode 100644 lang/en/block_glossary_random.php delete mode 100755 lang/en/grades.php delete mode 100644 lang/en/help/advanced_markdown.html delete mode 100644 lang/en/help/advancedsettings.html delete mode 100644 lang/en/help/choice/limit.html delete mode 100644 lang/en/help/glossary/aliases2.html delete mode 100644 lang/en/help/glossary/usedynalinkentry.html create mode 100644 lang/en/help/hideoptions.html delete mode 100644 lang/en/help/lesson/index.html delete mode 100644 lang/en/help/quiz/decimalpoints.html delete mode 100644 lang/en/help/resource/window.html delete mode 100644 lang/en/help/search.html create mode 100644 lang/en/help/wiki.html create mode 100644 lang/en/help/workshop/graded.html create mode 100644 lang/en/help/workshop/numberofassessors.html create mode 100644 lang/en/help/workshop/teachersgradings.html delete mode 100644 lang/en/timezones.php create mode 100644 lang/en_us/assignment.php create mode 100755 lang/en_us/attendance.php create mode 100644 lang/en_us/auth.php create mode 100755 lang/en_us/chat.php create mode 100644 lang/en_us/choice.php rename lang/{ka_utf8 => en_us}/countries.php (99%) mode change 100644 => 100755 create mode 100755 lang/en_us/editor.php create mode 100644 lang/en_us/forum.php create mode 100755 lang/en_us/glossary.php create mode 100644 lang/en_us/journal.php create mode 100755 lang/en_us/label.php create mode 100644 lang/en_us/quiz.php create mode 100644 lang/en_us/resource.php create mode 100644 lang/en_us/survey.php create mode 100644 lang/en_us/workshop.php delete mode 100644 lang/es/block_glossary_random.php delete mode 100644 lang/es/block_html.php delete mode 100644 lang/es/block_quiz_results.php delete mode 100644 lang/es/block_rss_client.php create mode 100644 lang/es/docs/glossary.html delete mode 100644 lang/es/grades.php delete mode 100755 lang/es/help/hideoptions.html create mode 100644 lang/es/help/workshop/analysisofassessments.htm delete mode 100644 lang/es/message.php delete mode 100644 lang/es/tui.php create mode 100644 lang/et/help/assignment/assignmenttype.html create mode 100644 lang/et/help/assignment/index.html create mode 100644 lang/et/help/assignment/mods.html create mode 100644 lang/et/help/assignment/resubmit.html create mode 100644 lang/et/help/chat/chatting.html create mode 100644 lang/et/help/chat/index.html create mode 100644 lang/et/help/chat/mods.html create mode 100644 lang/et/help/choice/index.html create mode 100644 lang/et/help/choice/mods.html create mode 100644 lang/et/help/choice/options.html rename lang/{hu => et}/help/emoticons.html (76%) create mode 100644 lang/et/help/forum/allowdiscussions.html create mode 100644 lang/et/help/forum/attachment.html create mode 100644 lang/et/help/forum/forumtype.html create mode 100644 lang/et/help/forum/index.html create mode 100644 lang/et/help/forum/mods.html create mode 100644 lang/et/help/forum/ratings.html create mode 100644 lang/et/help/forum/subscription.html create mode 100644 lang/et/help/index.html rename {enrol => lang/et/help/journal}/index.html (66%) create mode 100644 lang/et/help/journal/mods.html create mode 100644 lang/et/help/quiz/attempts.html create mode 100644 lang/et/help/quiz/categories.html create mode 100644 lang/et/help/quiz/correctanswers.html create mode 100644 lang/et/help/quiz/createmultiple.html create mode 100644 lang/et/help/quiz/description.html create mode 100644 lang/et/help/quiz/feedback.html create mode 100644 lang/et/help/quiz/formatblackboard.html create mode 100644 lang/et/help/quiz/formatcustom.html create mode 100644 lang/et/help/quiz/formatmissingword.html create mode 100644 lang/et/help/quiz/grademethod.html create mode 100644 lang/et/help/quiz/import.html create mode 100644 lang/et/help/quiz/index.html create mode 100644 lang/et/help/quiz/match.html create mode 100644 lang/et/help/quiz/maxgrade.html create mode 100644 lang/et/help/quiz/mods.html create mode 100644 lang/et/help/quiz/multianswer.html create mode 100644 lang/et/help/quiz/multichoice.html create mode 100644 lang/et/help/quiz/numerical.html create mode 100644 lang/et/help/quiz/random.html create mode 100644 lang/et/help/quiz/randomsamatch.html create mode 100644 lang/et/help/quiz/repeatattempts.html create mode 100644 lang/et/help/quiz/review.html create mode 100644 lang/et/help/quiz/shortanswer.html create mode 100644 lang/et/help/quiz/shuffleanswers.html create mode 100644 lang/et/help/quiz/shufflequestions.html create mode 100644 lang/et/help/quiz/timeopen.html create mode 100644 lang/et/help/quiz/truefalse.html create mode 100644 lang/et/help/resource/index.html create mode 100644 lang/et/help/resource/mods.html create mode 100644 lang/et/help/resource/program.html create mode 100644 lang/et/help/scales.html create mode 100644 lang/et/help/summaries.html create mode 100644 lang/et/help/survey/index.html create mode 100644 lang/et/help/survey/mods.html create mode 100644 lang/et/help/wiki.html create mode 100644 lang/et/help/workshop/addingacomment.html create mode 100644 lang/et/help/workshop/agreeassessments.html create mode 100644 lang/et/help/workshop/anonymous.html create mode 100644 lang/et/help/workshop/assessmentofexamples.html create mode 100644 lang/et/help/workshop/assignmenttype.html create mode 100644 lang/et/help/workshop/breakdownoffinalgrade.html create mode 100644 lang/et/help/workshop/calculatingfinalgrade.html create mode 100644 lang/et/help/workshop/editingacomment.html create mode 100644 lang/et/help/workshop/elements.html create mode 100644 lang/et/help/workshop/finalgrades.html create mode 100644 lang/et/help/workshop/graded.html create mode 100644 lang/et/help/workshop/grading.html create mode 100644 lang/et/help/workshop/gradingassessments.html create mode 100644 lang/et/help/workshop/gradingstrategy.html create mode 100644 lang/et/help/workshop/gradingsubmissions.html create mode 100644 lang/et/help/workshop/includeself.html create mode 100644 lang/et/help/workshop/index.html create mode 100644 lang/et/help/workshop/managing.html create mode 100644 lang/et/help/workshop/mods.html create mode 100644 lang/et/help/workshop/nassessmentsofstudentsubmissions.html create mode 100644 lang/et/help/workshop/nassessmentsofteachersexamples.html create mode 100644 lang/et/help/workshop/nelements.html create mode 100644 lang/et/help/workshop/numberofassessors.html create mode 100644 lang/et/help/workshop/resubmit.html create mode 100644 lang/et/help/workshop/selfassessment.html create mode 100644 lang/et/help/workshop/showinggrades.html create mode 100644 lang/et/help/workshop/specimen.html create mode 100644 lang/et/help/workshop/submissionofexamples.html create mode 100644 lang/et/help/workshop/teachersgradings.html create mode 100644 lang/et/help/workshop/ungradedassessments_student.html create mode 100644 lang/et/help/workshop/ungradedassessments_teacher.html delete mode 100644 lang/eu/docs/teacher.html create mode 100644 lang/eu/help/quiz/questiondatasets.html delete mode 100644 lang/fa_utf8/assignment.php delete mode 100644 lang/fa_utf8/auth.php delete mode 100644 lang/fa_utf8/chat.php delete mode 100644 lang/fa_utf8/choice.php delete mode 100644 lang/fa_utf8/forum.php delete mode 100644 lang/fa_utf8/journal.php delete mode 100644 lang/fa_utf8/moodle.php delete mode 100644 lang/fa_utf8/quiz.php delete mode 100644 lang/fa_utf8/readme delete mode 100755 lang/fi/block_quiz_results.php delete mode 100755 lang/fi/block_rss_client.php delete mode 100755 lang/fi/enrol_ldap.php delete mode 100644 lang/fi/help/assignment/emailteachers.html delete mode 100644 lang/fi/help/assignment/index.html delete mode 100644 lang/fi/help/assignment/mods.html delete mode 100644 lang/fi/help/attendance/autoattend.html delete mode 100644 lang/fi/help/attendance/choosedays.html delete mode 100644 lang/fi/help/attendance/dynsection.html delete mode 100644 lang/fi/help/attendance/grade.html delete mode 100644 lang/fi/help/attendance/hours.html delete mode 100644 lang/fi/help/attendance/index.html delete mode 100644 lang/fi/help/attendance/maxgrade.html delete mode 100644 lang/fi/help/attendance/mods.html delete mode 100644 lang/fi/help/chat/chatting.html delete mode 100644 lang/fi/help/chat/index.html delete mode 100644 lang/fi/help/chat/mods.html delete mode 100644 lang/fi/help/choice/index.html delete mode 100644 lang/fi/help/choice/mods.html delete mode 100644 lang/fi/help/choice/timerestrict.html delete mode 100644 lang/fi/help/dialogue/index.html delete mode 100644 lang/fi/help/exercise/administration.html delete mode 100644 lang/fi/help/exercise/comparisonofassessments.html delete mode 100644 lang/fi/help/exercise/elements.html delete mode 100644 lang/fi/help/exercise/finalgrades.html delete mode 100644 lang/fi/help/exercise/grade.html delete mode 100644 lang/fi/help/exercise/grading.html delete mode 100644 lang/fi/help/exercise/gradinggrade.html delete mode 100644 lang/fi/help/exercise/gradingstrategy.html delete mode 100644 lang/fi/help/exercise/index.html delete mode 100644 lang/fi/help/exercise/leaguetable.html delete mode 100644 lang/fi/help/exercise/leaguetablenames.html delete mode 100644 lang/fi/help/exercise/managing.html delete mode 100644 lang/fi/help/exercise/mods.html delete mode 100644 lang/fi/help/exercise/moreinfo.html delete mode 100644 lang/fi/help/exercise/nelements.html delete mode 100644 lang/fi/help/exercise/password.html delete mode 100644 lang/fi/help/exercise/regrading.html delete mode 100644 lang/fi/help/exercise/specimen.html delete mode 100644 lang/fi/help/exercise/submissionofdescriptions.html delete mode 100644 lang/fi/help/exercise/takeownership.html delete mode 100644 lang/fi/help/exercise/usemax.html delete mode 100644 lang/fi/help/exercise/usepassword.html delete mode 100644 lang/fi/help/glossary/aliases.html delete mode 100644 lang/fi/help/glossary/aliases2.html delete mode 100644 lang/fi/help/glossary/allowcomments.html delete mode 100644 lang/fi/help/glossary/allowduplicatedentries.html delete mode 100644 lang/fi/help/glossary/allowprintview.html delete mode 100644 lang/fi/help/glossary/attachment.html delete mode 100644 lang/fi/help/glossary/casesensitive.html delete mode 100644 lang/fi/help/glossary/defaultapproval.html delete mode 100644 lang/fi/help/glossary/description.html delete mode 100644 lang/fi/help/glossary/destination.html delete mode 100644 lang/fi/help/glossary/displayformat.html delete mode 100644 lang/fi/help/glossary/editalways.html delete mode 100644 lang/fi/help/glossary/entbypage.html delete mode 100644 lang/fi/help/glossary/filetoimport.html delete mode 100644 lang/fi/help/glossary/fullmatch.html delete mode 100644 lang/fi/help/glossary/globalglossary.html delete mode 100644 lang/fi/help/glossary/importcategories.html delete mode 100644 lang/fi/help/glossary/index.html delete mode 100644 lang/fi/help/glossary/linkcategory.html delete mode 100644 lang/fi/help/glossary/mainglossary.html delete mode 100644 lang/fi/help/glossary/mods.html delete mode 100644 lang/fi/help/glossary/rssarticles.html delete mode 100644 lang/fi/help/glossary/rsstype.html delete mode 100644 lang/fi/help/glossary/shows.html delete mode 100644 lang/fi/help/glossary/studentcanpost.html delete mode 100644 lang/fi/help/glossary/usedynalink.html delete mode 100644 lang/fi/help/glossary/usedynalinkentry.html delete mode 100644 lang/fi/help/journal/mods.html delete mode 100644 lang/fi/help/label/mods.html delete mode 100644 lang/fi/help/lesson/mods.html delete mode 100644 lang/fi/help/lesson/nextpageaction.html delete mode 100644 lang/fi/help/lesson/overview.html delete mode 100644 lang/fi/help/lesson/questionoption.html delete mode 100644 lang/fi/help/lesson/questiontypes.html delete mode 100644 lang/fi/help/lesson/retake.html delete mode 100644 lang/fi/help/lesson/useeditor.html delete mode 100644 lang/fi/help/questionnaire/qmanage.html delete mode 100644 lang/fi/help/quiz/decimalpoints.html delete mode 100644 lang/fi/help/quiz/popup.html delete mode 100644 lang/fi/help/quiz/review2.html delete mode 100644 lang/fi/help/search.html delete mode 100755 lang/fi/message.php delete mode 100644 lang/fr/block_glossary_random.php delete mode 100755 lang/fr/block_html.php delete mode 100644 lang/fr/block_quiz_results.php delete mode 100644 lang/fr/help/advancedsettings.html delete mode 100644 lang/fr/help/assignment/emailteachers.html delete mode 100644 lang/fr/help/directorypaths.html delete mode 100644 lang/fr/help/forum/subscription2.html delete mode 100644 lang/fr/help/glossary/allowprintview.html delete mode 100644 lang/fr/help/glossary/attachment.html delete mode 100644 lang/fr/help/glossary/editalways.html delete mode 100644 lang/fr/help/glossary/usedynalinkentry.html delete mode 100644 lang/fr/help/hideoptions.html delete mode 100644 lang/fr/help/search.html delete mode 100755 lang/fr/help/workshop/grade.html create mode 100755 lang/fr/help/workshop/graded.html delete mode 100644 lang/fr/message.php delete mode 100644 lang/fr/timezones.php create mode 100644 lang/fr_ca/docs/release.html delete mode 100644 lang/ga/admin.php delete mode 100644 lang/ga/algebra.php delete mode 100644 lang/ga/appointment.php delete mode 100644 lang/ga/assignment.php delete mode 100644 lang/ga/attendance.php delete mode 100644 lang/ga/block_course_list.php delete mode 100644 lang/ga/block_course_summary.php delete mode 100644 lang/ga/block_section_links.php delete mode 100644 lang/ga/block_social_activities.php delete mode 100644 lang/ga/calendar.php delete mode 100644 lang/ga/censor.php delete mode 100644 lang/ga/chat.php delete mode 100644 lang/ga/choice.php delete mode 100644 lang/ga/dialogue.php delete mode 100644 lang/ga/docs/background.html delete mode 100644 lang/ga/docs/coding.html delete mode 100644 lang/ga/docs/credits.html delete mode 100644 lang/ga/docs/install.html delete mode 100644 lang/ga/docs/teacher.html delete mode 100644 lang/ga/editor.php delete mode 100644 lang/ga/emailprotect.php delete mode 100644 lang/ga/exercise.php delete mode 100644 lang/ga/forum.php delete mode 100644 lang/ga/help/assignment/assignmenttype.html delete mode 100644 lang/ga/help/assignment/index.html delete mode 100644 lang/ga/help/assignment/mods.html delete mode 100644 lang/ga/help/assignment/resubmit.html delete mode 100644 lang/ga/help/attendance/mods.html delete mode 100644 lang/ga/help/chat/chatting.html delete mode 100644 lang/ga/help/chat/index.html delete mode 100644 lang/ga/help/chat/mods.html delete mode 100644 lang/ga/help/choice/mods.html delete mode 100644 lang/ga/help/choice/options.html delete mode 100644 lang/ga/help/cookies.html delete mode 100644 lang/ga/help/courseavailability.html delete mode 100644 lang/ga/help/coursecategory.html delete mode 100644 lang/ga/help/dialogue/addsubject.html delete mode 100644 lang/ga/help/dialogue/closedialogue.html delete mode 100644 lang/ga/help/dialogue/deleteafter.html delete mode 100644 lang/ga/help/dialogue/dialoguetype.html delete mode 100644 lang/ga/help/dialogue/index.html delete mode 100644 lang/ga/help/dialogue/info.html delete mode 100644 lang/ga/help/dialogue/maildefault.html delete mode 100644 lang/ga/help/dialogue/mods.html delete mode 100644 lang/ga/help/dialogue/multiple.html delete mode 100644 lang/ga/help/dialogue/sendmail.html delete mode 100644 lang/ga/help/dialogue/writing.html delete mode 100644 lang/ga/help/emoticons.html delete mode 100644 lang/ga/help/enrolmentkey.html delete mode 100644 lang/ga/help/index.html delete mode 100644 lang/ga/help/journal/index.html delete mode 100644 lang/ga/help/journal/mods.html delete mode 100644 lang/ga/help/label/mods.html delete mode 100644 lang/ga/help/questions.html delete mode 100644 lang/ga/help/reading.html delete mode 100644 lang/ga/help/survey/index.html delete mode 100644 lang/ga/help/survey/mods.html delete mode 100644 lang/ga/help/teachers.html delete mode 100644 lang/ga/help/writing.html delete mode 100644 lang/ga/journal.php delete mode 100644 lang/ga/label.php delete mode 100644 lang/ga/lesson.php delete mode 100644 lang/ga/moodle.php delete mode 100644 lang/ga/multilang.php delete mode 100644 lang/ga/pix.php delete mode 100644 lang/ga/questionnaire.php delete mode 100644 lang/ga/quiz.php delete mode 100644 lang/ga/readme delete mode 100644 lang/ga/resource.php delete mode 100644 lang/ga/tex.php delete mode 100644 lang/ga/webquest.php create mode 100644 lang/gl/docs/release.html create mode 100644 lang/gl/help/quiz/import.html create mode 100644 lang/gl/help/resource/resourcetype.html create mode 100644 lang/he/survey.php delete mode 100644 lang/hu/activitynames.php delete mode 100644 lang/hu/admin.php delete mode 100644 lang/hu/algebra.php delete mode 100644 lang/hu/appointment.php delete mode 100644 lang/hu/attendance.php delete mode 100644 lang/hu/block_course_list.php delete mode 100644 lang/hu/block_course_summary.php delete mode 100644 lang/hu/block_glossary_random.php delete mode 100644 lang/hu/block_html.php delete mode 100644 lang/hu/block_online_users.php delete mode 100644 lang/hu/block_quiz_results.php delete mode 100644 lang/hu/block_rss_client.php delete mode 100644 lang/hu/block_section_links.php delete mode 100644 lang/hu/block_social_activities.php delete mode 100644 lang/hu/calendar.php delete mode 100644 lang/hu/censor.php delete mode 100644 lang/hu/countries.php delete mode 100644 lang/hu/dialogue.php delete mode 100644 lang/hu/emailprotect.php delete mode 100644 lang/hu/enrol_database.php delete mode 100644 lang/hu/enrol_flatfile.php delete mode 100644 lang/hu/enrol_internal.php delete mode 100644 lang/hu/enrol_ldap.php delete mode 100644 lang/hu/enrol_paypal.php delete mode 100644 lang/hu/error.php delete mode 100644 lang/hu/exercise.php delete mode 100644 lang/hu/glossary.php delete mode 100644 lang/hu/grades.php delete mode 100644 lang/hu/help/assignment/assignmenttype.html delete mode 100644 lang/hu/help/assignment/index.html delete mode 100644 lang/hu/help/assignment/mods.html delete mode 100644 lang/hu/help/assignment/resubmit.html delete mode 100644 lang/hu/help/attendance/autoattend.html delete mode 100644 lang/hu/help/attendance/choosedays.html delete mode 100644 lang/hu/help/attendance/dynsection.html delete mode 100644 lang/hu/help/attendance/grade.html delete mode 100644 lang/hu/help/attendance/hours.html delete mode 100644 lang/hu/help/attendance/index.html delete mode 100644 lang/hu/help/attendance/maxgrade.html delete mode 100644 lang/hu/help/attendance/mods.html delete mode 100644 lang/hu/help/chat/chatting.html delete mode 100644 lang/hu/help/chat/index.html delete mode 100644 lang/hu/help/chat/mods.html delete mode 100644 lang/hu/help/choice/index.html delete mode 100644 lang/hu/help/choice/mods.html delete mode 100644 lang/hu/help/choice/options.html delete mode 100644 lang/hu/help/choice/timerestrict.html delete mode 100644 lang/hu/help/cookies.html delete mode 100644 lang/hu/help/courseavailability.html delete mode 100644 lang/hu/help/coursecategory.html delete mode 100644 lang/hu/help/courseformats.html delete mode 100644 lang/hu/help/coursefullname.html delete mode 100644 lang/hu/help/coursegrades.html delete mode 100644 lang/hu/help/coursehiddensections.html delete mode 100644 lang/hu/help/courseidnumber.html delete mode 100644 lang/hu/help/coursenewsitems.html delete mode 100644 lang/hu/help/coursenumsections.html delete mode 100644 lang/hu/help/courserecent.html delete mode 100644 lang/hu/help/coursereports.html delete mode 100644 lang/hu/help/courseshortname.html delete mode 100644 lang/hu/help/coursestartdate.html delete mode 100644 lang/hu/help/courseuploadsize.html delete mode 100644 lang/hu/help/dialogue/addsubject.html delete mode 100644 lang/hu/help/dialogue/closedialogue.html delete mode 100644 lang/hu/help/dialogue/deleteafter.html delete mode 100644 lang/hu/help/dialogue/dialoguetype.html delete mode 100644 lang/hu/help/dialogue/index.html delete mode 100644 lang/hu/help/dialogue/info.html delete mode 100644 lang/hu/help/dialogue/maildefault.html delete mode 100644 lang/hu/help/dialogue/mods.html delete mode 100644 lang/hu/help/dialogue/multiple.html delete mode 100644 lang/hu/help/dialogue/sendmail.html delete mode 100644 lang/hu/help/dialogue/writing.html delete mode 100644 lang/hu/help/enrolmentkey.html delete mode 100644 lang/hu/help/enrolperiod.html delete mode 100644 lang/hu/help/exercise/administration.html delete mode 100644 lang/hu/help/exercise/comparisonofassessments.html delete mode 100644 lang/hu/help/exercise/elements.html delete mode 100644 lang/hu/help/exercise/finalgrades.html delete mode 100644 lang/hu/help/exercise/grade.html delete mode 100644 lang/hu/help/exercise/grading.html delete mode 100644 lang/hu/help/exercise/gradinggrade.html delete mode 100644 lang/hu/help/exercise/gradingstrategy.html delete mode 100644 lang/hu/help/exercise/index.html delete mode 100644 lang/hu/help/exercise/leaguetable.html delete mode 100644 lang/hu/help/exercise/leaguetablenames.html delete mode 100644 lang/hu/help/exercise/managing.html delete mode 100644 lang/hu/help/exercise/mods.html delete mode 100644 lang/hu/help/exercise/moreinfo.html delete mode 100644 lang/hu/help/exercise/nelements.html delete mode 100644 lang/hu/help/exercise/regrading.html delete mode 100644 lang/hu/help/exercise/specimen.html delete mode 100644 lang/hu/help/exercise/submissionofdescriptions.html delete mode 100644 lang/hu/help/exercise/takeownership.html delete mode 100644 lang/hu/help/exercise/usemax.html delete mode 100644 lang/hu/help/forum/allowdiscussions.html delete mode 100644 lang/hu/help/forum/attachment.html delete mode 100644 lang/hu/help/forum/forumtype.html delete mode 100644 lang/hu/help/forum/index.html delete mode 100644 lang/hu/help/forum/maxattachmentsize.html delete mode 100644 lang/hu/help/forum/mods.html delete mode 100644 lang/hu/help/forum/ratings.html delete mode 100644 lang/hu/help/forum/rssarticles.html delete mode 100644 lang/hu/help/forum/rsstype.html delete mode 100644 lang/hu/help/forum/subscription.html delete mode 100644 lang/hu/help/forum/subscription2.html delete mode 100644 lang/hu/help/glossary/aliases.html delete mode 100644 lang/hu/help/glossary/allowcomments.html delete mode 100644 lang/hu/help/glossary/allowdiscussions.html delete mode 100644 lang/hu/help/glossary/allowduplicatedentries.html delete mode 100644 lang/hu/help/glossary/casesensitive.html delete mode 100644 lang/hu/help/glossary/defaultapproval.html delete mode 100644 lang/hu/help/glossary/description.html delete mode 100644 lang/hu/help/glossary/destination.html delete mode 100644 lang/hu/help/glossary/displayformat.html delete mode 100644 lang/hu/help/glossary/editalways.html delete mode 100644 lang/hu/help/glossary/entbypage.html delete mode 100644 lang/hu/help/glossary/filetoimport.html delete mode 100644 lang/hu/help/glossary/fullmatch.html delete mode 100644 lang/hu/help/glossary/globalglossary.html delete mode 100644 lang/hu/help/glossary/importcategories.html delete mode 100644 lang/hu/help/glossary/index.html delete mode 100644 lang/hu/help/glossary/linkcategory.html delete mode 100644 lang/hu/help/glossary/mainglossary.html delete mode 100644 lang/hu/help/glossary/mods.html delete mode 100644 lang/hu/help/glossary/rssarticles.html delete mode 100644 lang/hu/help/glossary/rsstype.html delete mode 100644 lang/hu/help/glossary/shows.html delete mode 100644 lang/hu/help/glossary/studentcanpost.html delete mode 100644 lang/hu/help/glossary/usedynalink.html delete mode 100644 lang/hu/help/glossary/usedynalinkentry.html delete mode 100644 lang/hu/help/groupmode.html delete mode 100644 lang/hu/help/groupmodeforce.html delete mode 100644 lang/hu/help/guestaccess.html delete mode 100644 lang/hu/help/html.html delete mode 100644 lang/hu/help/index.html delete mode 100644 lang/hu/help/journal/index.html delete mode 100644 lang/hu/help/journal/mods.html delete mode 100644 lang/hu/help/label/mods.html delete mode 100644 lang/hu/help/langedit.html delete mode 100644 lang/hu/help/lesson/grade.html delete mode 100644 lang/hu/help/lesson/handlingofretakes.html delete mode 100644 lang/hu/help/lesson/import.html delete mode 100644 lang/hu/help/lesson/jumpto.html delete mode 100644 lang/hu/help/lesson/maxanswers.html delete mode 100644 lang/hu/help/lesson/maxattempts.html delete mode 100644 lang/hu/help/lesson/maxpages.html delete mode 100644 lang/hu/help/lesson/minquestions.html delete mode 100644 lang/hu/help/lesson/mods.html delete mode 100644 lang/hu/help/lesson/nextpageaction.html delete mode 100644 lang/hu/help/lesson/overview.html delete mode 100644 lang/hu/help/lesson/questionoption.html delete mode 100644 lang/hu/help/lesson/questiontypes.html delete mode 100644 lang/hu/help/lesson/retake.html delete mode 100644 lang/hu/help/lesson/useeditor.html delete mode 100644 lang/hu/help/markdown.html delete mode 100644 lang/hu/help/mods.html delete mode 100644 lang/hu/help/picture.html delete mode 100644 lang/hu/help/questionnaire/qmanage.html delete mode 100644 lang/hu/help/questionnaire/qtype.html delete mode 100644 lang/hu/help/questionnaire/questionnaireid.html delete mode 100644 lang/hu/help/questionnaire/respondenttype.html delete mode 100644 lang/hu/help/questions.html delete mode 100644 lang/hu/help/quiz/attempts.html delete mode 100644 lang/hu/help/quiz/calculated.html delete mode 100644 lang/hu/help/quiz/categories.html delete mode 100644 lang/hu/help/quiz/correctanswers.html delete mode 100644 lang/hu/help/quiz/createmultiple.html delete mode 100644 lang/hu/help/quiz/description.html delete mode 100644 lang/hu/help/quiz/discrimination.html delete mode 100644 lang/hu/help/quiz/export.html delete mode 100644 lang/hu/help/quiz/feedback.html delete mode 100644 lang/hu/help/quiz/formataiken.html delete mode 100644 lang/hu/help/quiz/formatblackboard.html delete mode 100644 lang/hu/help/quiz/formatctm.html delete mode 100644 lang/hu/help/quiz/formatcustom.html delete mode 100644 lang/hu/help/quiz/formatgift.html delete mode 100644 lang/hu/help/quiz/formatmissingword.html delete mode 100644 lang/hu/help/quiz/formatwebct.html delete mode 100644 lang/hu/help/quiz/grademethod.html delete mode 100644 lang/hu/help/quiz/import.html delete mode 100644 lang/hu/help/quiz/index.html delete mode 100644 lang/hu/help/quiz/match.html delete mode 100644 lang/hu/help/quiz/maxgrade.html delete mode 100644 lang/hu/help/quiz/mods.html delete mode 100644 lang/hu/help/quiz/multianswer.html delete mode 100644 lang/hu/help/quiz/multichoice.html delete mode 100644 lang/hu/help/quiz/numerical.html delete mode 100644 lang/hu/help/quiz/questiondatasets.html delete mode 100644 lang/hu/help/quiz/questiontypes.html delete mode 100644 lang/hu/help/quiz/random.html delete mode 100644 lang/hu/help/quiz/randomsamatch.html delete mode 100644 lang/hu/help/quiz/repeatattempts.html delete mode 100644 lang/hu/help/quiz/requirepassword.html delete mode 100644 lang/hu/help/quiz/requiresubnet.html delete mode 100644 lang/hu/help/quiz/review.html delete mode 100644 lang/hu/help/quiz/shortanswer.html delete mode 100644 lang/hu/help/quiz/shuffleanswers.html delete mode 100644 lang/hu/help/quiz/shufflequestions.html delete mode 100644 lang/hu/help/quiz/timelimit.html delete mode 100644 lang/hu/help/quiz/timeopen.html delete mode 100644 lang/hu/help/quiz/truefalse.html delete mode 100644 lang/hu/help/resource/index.html delete mode 100644 lang/hu/help/resource/mods.html delete mode 100644 lang/hu/help/resource/parameters.html delete mode 100644 lang/hu/help/resource/program.html delete mode 100644 lang/hu/help/resource/resourcetype.html delete mode 100644 lang/hu/help/resource/summary.html delete mode 100644 lang/hu/help/resource/type/directory.html delete mode 100644 lang/hu/help/resource/type/file.html delete mode 100644 lang/hu/help/resource/type/html.html delete mode 100644 lang/hu/help/resource/type/label.html delete mode 100644 lang/hu/help/resource/type/text.html delete mode 100644 lang/hu/help/resource/types.html delete mode 100644 lang/hu/help/resource/window.html delete mode 100644 lang/hu/help/richtext.html delete mode 100644 lang/hu/help/scales.html delete mode 100644 lang/hu/help/scorm/mods.html delete mode 100644 lang/hu/help/summaries.html delete mode 100644 lang/hu/help/survey/index.html delete mode 100644 lang/hu/help/survey/mods.html delete mode 100644 lang/hu/help/surveys.html delete mode 100644 lang/hu/help/teachers.html delete mode 100644 lang/hu/help/textformat.html delete mode 100644 lang/hu/help/uploadusers.html delete mode 100644 lang/hu/help/wiki.html delete mode 100644 lang/hu/help/wiki/checklinks.html delete mode 100644 lang/hu/help/wiki/ewikiacceptbinary.html delete mode 100644 lang/hu/help/wiki/howtowiki.html delete mode 100644 lang/hu/help/wiki/htmlmode.html delete mode 100644 lang/hu/help/wiki/index.html delete mode 100644 lang/hu/help/wiki/initialcontent.html delete mode 100644 lang/hu/help/wiki/mods.html delete mode 100644 lang/hu/help/wiki/removepages.html delete mode 100644 lang/hu/help/wiki/revertauthorfieldpattern.html delete mode 100644 lang/hu/help/wiki/revertpages.html delete mode 100644 lang/hu/help/wiki/setpageflags.html delete mode 100644 lang/hu/help/wiki/strippages.html delete mode 100644 lang/hu/help/wiki/studentadminoptions.html delete mode 100644 lang/hu/help/wiki/wikilinkoptions.html delete mode 100644 lang/hu/help/wiki/wikiname.html delete mode 100644 lang/hu/help/wiki/wikitype.html delete mode 100644 lang/hu/help/wiki/wikiusage.html delete mode 100644 lang/hu/help/workshop/addingacomment.html delete mode 100644 lang/hu/help/workshop/agreeassessments.html delete mode 100644 lang/hu/help/workshop/analysisofassessments.html delete mode 100644 lang/hu/help/workshop/anonymous.html delete mode 100644 lang/hu/help/workshop/assessmentofexamples.html delete mode 100644 lang/hu/help/workshop/assignmenttype.html delete mode 100644 lang/hu/help/workshop/breakdownoffinalgrade.html delete mode 100644 lang/hu/help/workshop/calculatingfinalgrade.html delete mode 100644 lang/hu/help/workshop/editingacomment.html delete mode 100644 lang/hu/help/workshop/elements.html delete mode 100644 lang/hu/help/workshop/finalgrades.html delete mode 100644 lang/hu/help/workshop/graded.html delete mode 100644 lang/hu/help/workshop/grading.html delete mode 100644 lang/hu/help/workshop/gradingassessments.html delete mode 100644 lang/hu/help/workshop/gradingstrategy.html delete mode 100644 lang/hu/help/workshop/gradingsubmissions.html delete mode 100644 lang/hu/help/workshop/includeself.html delete mode 100644 lang/hu/help/workshop/includeteachersgrade.html delete mode 100644 lang/hu/help/workshop/index.html delete mode 100644 lang/hu/help/workshop/leaguetable.html delete mode 100644 lang/hu/help/workshop/managing.html delete mode 100644 lang/hu/help/workshop/mods.html delete mode 100644 lang/hu/help/workshop/nassessmentsofstudentsubmissions.html delete mode 100644 lang/hu/help/workshop/nassessmentsofteachersexamples.html delete mode 100644 lang/hu/help/workshop/nelements.html delete mode 100644 lang/hu/help/workshop/numberofassessors.html delete mode 100644 lang/hu/help/workshop/overallocation.html delete mode 100644 lang/hu/help/workshop/resubmit.html delete mode 100644 lang/hu/help/workshop/selfassessment.html delete mode 100644 lang/hu/help/workshop/showinggrades.html delete mode 100644 lang/hu/help/workshop/specimen.html delete mode 100644 lang/hu/help/workshop/submissionofexamples.html delete mode 100644 lang/hu/help/workshop/teachersgradings.html delete mode 100644 lang/hu/help/workshop/ungradedassessments_student.html delete mode 100644 lang/hu/help/workshop/ungradedassessments_teacher.html delete mode 100644 lang/hu/help/writing.html delete mode 100644 lang/hu/hotpot.php delete mode 100644 lang/hu/install.php delete mode 100644 lang/hu/label.php delete mode 100644 lang/hu/lesson.php delete mode 100644 lang/hu/mediaplugin.php delete mode 100644 lang/hu/message.php delete mode 100644 lang/hu/multilang.php delete mode 100644 lang/hu/pix.php delete mode 100644 lang/hu/questionnaire.php delete mode 100644 lang/hu/scorm.php delete mode 100644 lang/hu/tex.php delete mode 100644 lang/hu/webquest.php delete mode 100644 lang/hu/wiki.php delete mode 100755 lang/it/appointment.php delete mode 100644 lang/it/enrol_database.php delete mode 100644 lang/it/help/resource/parameters.html create mode 100755 lang/it/help/resource/program.html create mode 100644 lang/it/help/resource/resourcetype.html delete mode 100644 lang/it/help/resource/type/directory.html delete mode 100644 lang/it/help/resource/type/html.html delete mode 100644 lang/it/help/resource/type/label.html delete mode 100644 lang/it/help/resource/type/text.html delete mode 100644 lang/it/help/resource/types.html delete mode 100644 lang/it/hotpot.php delete mode 100644 lang/it/install.php delete mode 100644 lang/it/questionnaire.php delete mode 100644 lang/ja/block_glossary_random.php delete mode 100644 lang/ja/block_html.php delete mode 100644 lang/ja/block_quiz_results.php delete mode 100644 lang/ja/docs/future.html delete mode 100644 lang/ja/grades.php delete mode 100644 lang/ja/help/advancedsettings.html delete mode 100644 lang/ja/help/assignment/emailteachers.html delete mode 100644 lang/ja/help/choice/limit.html delete mode 100644 lang/ja/help/glossary/aliases2.html delete mode 100644 lang/ja/help/glossary/allowprintview.html delete mode 100644 lang/ja/help/glossary/attachment.html delete mode 100644 lang/ja/help/lesson/bgcolor.html delete mode 100644 lang/ja/help/lesson/custom.html delete mode 100644 lang/ja/help/lesson/displayleft.html delete mode 100644 lang/ja/help/lesson/height.html delete mode 100644 lang/ja/help/lesson/maxtime.html delete mode 100644 lang/ja/help/lesson/password.html delete mode 100644 lang/ja/help/lesson/practice.html delete mode 100644 lang/ja/help/lesson/timed.html delete mode 100644 lang/ja/help/lesson/tree.html delete mode 100644 lang/ja/help/lesson/usepassword.html delete mode 100644 lang/ja/help/lesson/width.html delete mode 100644 lang/ja/help/quiz/categories_edit.html delete mode 100644 lang/ja/help/quiz/decimalpoints.html delete mode 100644 lang/ja/help/quiz/popup.html delete mode 100644 lang/ja/help/quiz/review2.html create mode 100644 lang/ja/help/resource/program.html create mode 100644 lang/ja/help/resource/resourcetype.html delete mode 100644 lang/ja/help/search.html delete mode 100644 lang/ja/help/wiki/checklinks.html delete mode 100644 lang/ja/help/wiki/howtowiki.html delete mode 100644 lang/ja/help/wiki/initialcontent.html delete mode 100644 lang/ja/help/wiki/removepages.html delete mode 100644 lang/ja/help/wiki/revertauthorfieldpattern.html delete mode 100644 lang/ja/help/wiki/revertpages.html delete mode 100644 lang/ja/help/wiki/setpageflags.html delete mode 100644 lang/ja/help/wiki/studentadminoptions.html delete mode 100644 lang/ja/help/wiki/wikilinkoptions.html delete mode 100644 lang/ja/help/wiki/wikiname.html delete mode 100644 lang/ja/help/wiki/wikitype.html delete mode 100644 lang/ja/help/wiki/wikiusage.html delete mode 100644 lang/ja/help/workshop/anonymous.html delete mode 100644 lang/ja/help/workshop/grade.html delete mode 100644 lang/ja/help/workshop/gradinggrade.html delete mode 100644 lang/ja/help/workshop/leaguetable.html delete mode 100644 lang/ja/help/workshop/mods.html delete mode 100644 lang/ja/help/workshop/password.html delete mode 100644 lang/ja/help/workshop/specimen.html delete mode 100644 lang/ja/message.php create mode 100644 lang/ja/pgassignment.php delete mode 100644 lang/ja/timezones.php delete mode 100644 lang/ja_utf8/block_glossary_random.php delete mode 100644 lang/ja_utf8/block_html.php delete mode 100644 lang/ja_utf8/block_quiz_results.php delete mode 100644 lang/ja_utf8/docs/future.html delete mode 100644 lang/ja_utf8/grades.php delete mode 100644 lang/ja_utf8/help/advancedsettings.html delete mode 100644 lang/ja_utf8/help/assignment/emailteachers.html delete mode 100644 lang/ja_utf8/help/choice/limit.html delete mode 100644 lang/ja_utf8/help/glossary/aliases2.html delete mode 100644 lang/ja_utf8/help/glossary/allowprintview.html delete mode 100644 lang/ja_utf8/help/glossary/attachment.html delete mode 100644 lang/ja_utf8/help/lesson/bgcolor.html delete mode 100644 lang/ja_utf8/help/lesson/custom.html delete mode 100644 lang/ja_utf8/help/lesson/displayleft.html delete mode 100644 lang/ja_utf8/help/lesson/height.html delete mode 100644 lang/ja_utf8/help/lesson/maxtime.html delete mode 100644 lang/ja_utf8/help/lesson/password.html delete mode 100644 lang/ja_utf8/help/lesson/practice.html delete mode 100644 lang/ja_utf8/help/lesson/timed.html delete mode 100644 lang/ja_utf8/help/lesson/tree.html delete mode 100644 lang/ja_utf8/help/lesson/usepassword.html delete mode 100644 lang/ja_utf8/help/lesson/width.html delete mode 100644 lang/ja_utf8/help/quiz/categories_edit.html delete mode 100644 lang/ja_utf8/help/quiz/decimalpoints.html delete mode 100644 lang/ja_utf8/help/quiz/popup.html delete mode 100644 lang/ja_utf8/help/quiz/review2.html delete mode 100644 lang/ja_utf8/help/search.html delete mode 100644 lang/ja_utf8/help/wiki/checklinks.html delete mode 100644 lang/ja_utf8/help/wiki/howtowiki.html delete mode 100644 lang/ja_utf8/help/wiki/initialcontent.html delete mode 100644 lang/ja_utf8/help/wiki/removepages.html delete mode 100644 lang/ja_utf8/help/wiki/revertauthorfieldpattern.html delete mode 100644 lang/ja_utf8/help/wiki/revertpages.html delete mode 100644 lang/ja_utf8/help/wiki/setpageflags.html delete mode 100644 lang/ja_utf8/help/wiki/studentadminoptions.html delete mode 100644 lang/ja_utf8/help/wiki/wikilinkoptions.html delete mode 100644 lang/ja_utf8/help/wiki/wikiname.html delete mode 100644 lang/ja_utf8/help/wiki/wikitype.html delete mode 100644 lang/ja_utf8/help/wiki/wikiusage.html delete mode 100644 lang/ja_utf8/help/workshop/anonymous.html delete mode 100644 lang/ja_utf8/help/workshop/grade.html delete mode 100644 lang/ja_utf8/help/workshop/gradinggrade.html delete mode 100644 lang/ja_utf8/help/workshop/leaguetable.html delete mode 100644 lang/ja_utf8/help/workshop/mods.html delete mode 100644 lang/ja_utf8/help/workshop/password.html delete mode 100644 lang/ja_utf8/help/workshop/specimen.html delete mode 100644 lang/ja_utf8/message.php delete mode 100644 lang/ja_utf8/timezones.php delete mode 100644 lang/ka_utf8/README delete mode 100644 lang/ka_utf8/assignment.php delete mode 100644 lang/ka_utf8/block_course_list.php delete mode 100644 lang/ka_utf8/block_online_users.php delete mode 100644 lang/ka_utf8/calendar.php delete mode 100644 lang/ka_utf8/chat.php delete mode 100644 lang/ka_utf8/choice.php delete mode 100644 lang/ka_utf8/docs/features.html delete mode 100644 lang/ka_utf8/docs/files.php delete mode 100644 lang/ka_utf8/docs/teacher.html delete mode 100644 lang/ka_utf8/forum.php delete mode 100644 lang/ka_utf8/glossary.php delete mode 100644 lang/ka_utf8/journal.php delete mode 100644 lang/ka_utf8/lesson.php delete mode 100644 lang/ka_utf8/moodle.php delete mode 100644 lang/ka_utf8/quiz.php delete mode 100644 lang/ka_utf8/resource.php delete mode 100644 lang/ka_utf8/survey.php delete mode 100644 lang/ka_utf8/workshop.php delete mode 100755 lang/ko/block_glossary_random.php delete mode 100755 lang/ko/block_html.php delete mode 100755 lang/ko/block_quiz_results.php delete mode 100755 lang/ko/block_rss_client.php delete mode 100755 lang/ko/book.php delete mode 100755 lang/ko/enrol_ldap.php delete mode 100755 lang/ko/gallery.php delete mode 100755 lang/ko/message.php delete mode 100755 lang/ko/rssfeed.php delete mode 100755 lang/ko/scheduler.php delete mode 100644 lang/ko_utf8/README delete mode 100644 lang/ko_utf8/activitynames.php delete mode 100644 lang/ko_utf8/admin.php delete mode 100644 lang/ko_utf8/algebra.php delete mode 100644 lang/ko_utf8/appointment.php delete mode 100644 lang/ko_utf8/assignment.php delete mode 100644 lang/ko_utf8/attendance.php delete mode 100644 lang/ko_utf8/auth.php delete mode 100644 lang/ko_utf8/block_course_list.php delete mode 100644 lang/ko_utf8/block_course_summary.php delete mode 100644 lang/ko_utf8/block_glossary_random.php delete mode 100644 lang/ko_utf8/block_html.php delete mode 100644 lang/ko_utf8/block_online_users.php delete mode 100755 lang/ko_utf8/block_quiz_results.php delete mode 100755 lang/ko_utf8/block_rss_client.php delete mode 100644 lang/ko_utf8/block_section_links.php delete mode 100644 lang/ko_utf8/block_social_activities.php delete mode 100644 lang/ko_utf8/book.php delete mode 100644 lang/ko_utf8/calendar.php delete mode 100644 lang/ko_utf8/censor.php delete mode 100644 lang/ko_utf8/chat.php delete mode 100644 lang/ko_utf8/choice.php delete mode 100644 lang/ko_utf8/countries.php delete mode 100644 lang/ko_utf8/dialogue.php delete mode 100644 lang/ko_utf8/editor.php delete mode 100644 lang/ko_utf8/emailprotect.php delete mode 100644 lang/ko_utf8/enrol_database.php delete mode 100644 lang/ko_utf8/enrol_flatfile.php delete mode 100644 lang/ko_utf8/enrol_internal.php delete mode 100755 lang/ko_utf8/enrol_ldap.php delete mode 100644 lang/ko_utf8/enrol_paypal.php delete mode 100644 lang/ko_utf8/error.php delete mode 100644 lang/ko_utf8/exercise.php delete mode 100644 lang/ko_utf8/forum.php delete mode 100755 lang/ko_utf8/gallery.php delete mode 100644 lang/ko_utf8/glossary.php delete mode 100644 lang/ko_utf8/hotpot.php delete mode 100644 lang/ko_utf8/install.php delete mode 100644 lang/ko_utf8/journal.php delete mode 100644 lang/ko_utf8/label.php delete mode 100644 lang/ko_utf8/lesson.php delete mode 100644 lang/ko_utf8/mediaplugin.php delete mode 100755 lang/ko_utf8/message.php delete mode 100644 lang/ko_utf8/moodle.php delete mode 100644 lang/ko_utf8/multilang.php delete mode 100644 lang/ko_utf8/pix.php delete mode 100644 lang/ko_utf8/questionnaire.php delete mode 100644 lang/ko_utf8/quiz.php delete mode 100644 lang/ko_utf8/resource.php delete mode 100644 lang/ko_utf8/rssfeed.php delete mode 100644 lang/ko_utf8/scheduler.php delete mode 100644 lang/ko_utf8/scorm.php delete mode 100644 lang/ko_utf8/survey.php delete mode 100644 lang/ko_utf8/tex.php delete mode 100644 lang/ko_utf8/webquest.php delete mode 100644 lang/ko_utf8/wiki.php delete mode 100644 lang/ko_utf8/workshop.php create mode 100644 lang/lt/survey.php delete mode 100644 lang/nl/block_glossary_random.php delete mode 100644 lang/nl/block_html.php delete mode 100644 lang/nl/block_quiz_results.php delete mode 100644 lang/nl/grades.php delete mode 100644 lang/nl/help/advancedsettings.html delete mode 100644 lang/nl/help/assignment/emailteachers.html delete mode 100644 lang/nl/help/glossary/aliases2.html delete mode 100644 lang/nl/help/glossary/allowprintview.html delete mode 100644 lang/nl/help/glossary/attachment.html delete mode 100644 lang/nl/help/hideoptions.html delete mode 100644 lang/nl/help/lesson/bgcolor.html delete mode 100644 lang/nl/help/lesson/custom.html delete mode 100644 lang/nl/help/lesson/deleteattempts.html delete mode 100644 lang/nl/help/lesson/displayleft.html delete mode 100644 lang/nl/help/lesson/height.html delete mode 100644 lang/nl/help/lesson/highscores.html delete mode 100644 lang/nl/help/lesson/index.html delete mode 100644 lang/nl/help/lesson/lessondefault.html delete mode 100644 lang/nl/help/lesson/maxhighscores.html delete mode 100644 lang/nl/help/lesson/maxtime.html delete mode 100644 lang/nl/help/lesson/modattempts.html delete mode 100644 lang/nl/help/lesson/password.html delete mode 100644 lang/nl/help/lesson/practice.html delete mode 100644 lang/nl/help/lesson/review.html delete mode 100644 lang/nl/help/lesson/slideshow.html delete mode 100644 lang/nl/help/lesson/timed.html delete mode 100644 lang/nl/help/lesson/tree.html delete mode 100644 lang/nl/help/lesson/usepassword.html delete mode 100644 lang/nl/help/lesson/width.html delete mode 100644 lang/nl/help/quiz/categories_edit.html delete mode 100644 lang/nl/help/quiz/decimalpoints.html delete mode 100644 lang/nl/help/quiz/review2.html delete mode 100644 lang/nl/help/search.html delete mode 100644 lang/nl/message.php delete mode 100644 lang/nl/timezones.php create mode 100644 lang/pl/help/quiz/.#multianswer.html.1.1 delete mode 100644 lang/pt/docs/faq.html delete mode 100644 lang/pt/docs/files.jpg delete mode 100644 lang/pt/docs/semanal.jpg delete mode 100644 lang/pt/docs/social.jpg delete mode 100755 lang/pt/docs/teacher.html delete mode 100644 lang/pt/docs/topicos.jpg delete mode 100644 lang/pt_br/docs/background.html delete mode 100644 lang/pt_br/docs/teacher.html delete mode 100644 lang/pt_br/emailprotect.php delete mode 100644 lang/pt_br/enrol_database.php delete mode 100644 lang/pt_br/hotpot.php create mode 100755 lang/ro/auth.php rename lang/{fi/block_glossary_random.php => ru/appointment.php} (100%) mode change 100755 => 100644 delete mode 100644 lang/ru/help/assignment/mods.html delete mode 100644 lang/ru/help/choice/mods.html delete mode 100644 lang/ru/help/emoticons.html delete mode 100644 lang/ru/help/forum/mods.html delete mode 100644 lang/ru/help/index.html delete mode 100644 lang/ru/help/journal/mods.html delete mode 100644 lang/ru/help/label/mods.html delete mode 100644 lang/ru/help/quiz/mods.html delete mode 100644 lang/ru/help/resource/mods.html delete mode 100644 lang/ru/help/survey/mods.html delete mode 100644 lang/ru/help/wiki.html delete mode 100644 lang/ru/help/wiki/howtowiki.html delete mode 100644 lang/ru/help/wiki/index.html delete mode 100644 lang/ru/help/wiki/mods.html create mode 100644 lang/sq/chatarea.php create mode 100644 lang/sq/fonts/default.ttf delete mode 100644 lang/sv/README.txt delete mode 100644 lang/sv/block_glossary_random.php delete mode 100644 lang/sv/block_html.php delete mode 100644 lang/sv/block_quiz_results.php delete mode 100644 lang/sv/block_rss_client.php delete mode 100644 lang/sv/book.php delete mode 100644 lang/sv/enrol_ldap.php delete mode 100644 lang/sv/flash.php delete mode 100644 lang/sv/help/advanced_markdown.html delete mode 100644 lang/sv/help/advancedsettings.html delete mode 100644 lang/sv/help/assignment/emailteachers.html delete mode 100644 lang/sv/help/book/customtitles.html delete mode 100644 lang/sv/help/book/disableprinting.html delete mode 100644 lang/sv/help/book/edit.html delete mode 100644 lang/sv/help/book/faq.html delete mode 100644 lang/sv/help/book/import.html delete mode 100644 lang/sv/help/book/index.html delete mode 100644 lang/sv/help/book/mods.html delete mode 100644 lang/sv/help/book/numberingtype.html delete mode 100644 lang/sv/help/book/summary.html delete mode 100644 lang/sv/help/exercise/comparisonofassessments.html delete mode 100644 lang/sv/help/glossary/allowprintview.html delete mode 100644 lang/sv/help/glossary/attachment.html delete mode 100644 lang/sv/help/hideoptions.html delete mode 100644 lang/sv/help/hotpotatoes/analysistable.html delete mode 100644 lang/sv/help/hotpotatoes/forceplugins.html delete mode 100644 lang/sv/help/hotpotatoes/index.html delete mode 100644 lang/sv/help/hotpotatoes/mediaplayers.html delete mode 100644 lang/sv/help/hotpotatoes/mods.html delete mode 100644 lang/sv/help/hotpotatoes/navigation.html delete mode 100644 lang/sv/help/hotpotatoes/outputformat.html delete mode 100644 lang/sv/help/hotpotatoes/reportselector.html delete mode 100644 lang/sv/help/hotpotatoes/responsestable.html delete mode 100644 lang/sv/help/hotpotatoes/shownextquiz.html delete mode 100644 lang/sv/help/lesson/bgcolor.html delete mode 100644 lang/sv/help/lesson/custom.html delete mode 100644 lang/sv/help/lesson/deleteattempts.html delete mode 100644 lang/sv/help/lesson/displayleft.html delete mode 100644 lang/sv/help/lesson/height.html delete mode 100644 lang/sv/help/lesson/highscores.html delete mode 100644 lang/sv/help/lesson/lessondefault.html delete mode 100644 lang/sv/help/lesson/maxhighscores.html delete mode 100644 lang/sv/help/lesson/maxtime.html delete mode 100644 lang/sv/help/lesson/modattempts.html delete mode 100644 lang/sv/help/lesson/ongoing.html delete mode 100644 lang/sv/help/lesson/password.html delete mode 100644 lang/sv/help/lesson/practice.html delete mode 100644 lang/sv/help/lesson/review.html delete mode 100644 lang/sv/help/lesson/slideshow.html delete mode 100644 lang/sv/help/lesson/timed.html delete mode 100644 lang/sv/help/lesson/tree.html delete mode 100644 lang/sv/help/lesson/useeditor.html delete mode 100644 lang/sv/help/lesson/usepassword.html delete mode 100644 lang/sv/help/lesson/width.html delete mode 100644 lang/sv/help/questionnaire/qmanage.html delete mode 100644 lang/sv/help/questionnaire/qtype.html delete mode 100644 lang/sv/help/questionnaire/questionnaireid.html delete mode 100644 lang/sv/help/questionnaire/respondenttype.html delete mode 100644 lang/sv/help/quiz/calculated.html delete mode 100644 lang/sv/help/quiz/decimalpoints.html delete mode 100644 lang/sv/help/quiz/popup.html delete mode 100644 lang/sv/help/quiz/questiondatasets.html delete mode 100644 lang/sv/help/quiz/review2.html delete mode 100644 lang/sv/help/richtext_orig.html delete mode 100644 lang/sv/help/search.html delete mode 100644 lang/sv/help/workshop/addcommenttobank.html delete mode 100644 lang/sv/help/workshop/analysisofassessments.html delete mode 100644 lang/sv/help/workshop/comparisonofassessments.html delete mode 100644 lang/sv/help/workshop/nattachments.html delete mode 100644 lang/sv/help/workshop/password.html delete mode 100644 lang/sv/help/workshop/regrading.html delete mode 100644 lang/sv/help/workshop/usepassword.html delete mode 100644 lang/sv/hotpotatoes.php delete mode 100644 lang/sv/message.php delete mode 100644 lang/sv/netpublish.php delete mode 100644 lang/sv/readme delete mode 100644 lang/th/admin_english.php delete mode 100644 lang/th/book.php delete mode 100644 lang/th/brainstorm.php rename lang/{tr => th}/docs/README.txt (53%) create mode 100644 lang/th/docs/background.html rename lang/{vi_utf8 => th}/docs/coding.html (62%) create mode 100644 lang/th/docs/credits.html create mode 100644 lang/th/docs/cvs.html create mode 100644 lang/th/docs/developer.html rename lang/{tl => th}/docs/docstyles.css (86%) rename lang/{vi_utf8 => th}/docs/faq.html (59%) create mode 100644 lang/th/docs/features.html create mode 100644 lang/th/docs/files.php create mode 100644 lang/th/docs/future.html create mode 100644 lang/th/docs/install.html create mode 100644 lang/th/docs/installamp.html create mode 100644 lang/th/docs/intro.html create mode 100644 lang/th/docs/licence.html create mode 100644 lang/th/docs/module_files.txt create mode 100644 lang/th/docs/other.html create mode 100644 lang/th/docs/philosophy.html create mode 100644 lang/th/docs/release.html create mode 100644 lang/th/docs/releaseold.html create mode 100644 lang/th/docs/teacher.html create mode 100644 lang/th/docs/upgrade.html delete mode 100644 lang/th/grades.php delete mode 100644 lang/th/scheduler.php delete mode 100644 lang/tl/block_online_users.php delete mode 100644 lang/tl/calendar.php delete mode 100644 lang/tl/docs/README.txt delete mode 100644 lang/tl/docs/background.html delete mode 100644 lang/tl/docs/coding.html delete mode 100644 lang/tl/docs/cvs.html delete mode 100644 lang/tl/docs/developer.html delete mode 100644 lang/tl/docs/faq.html delete mode 100644 lang/tl/docs/features.html delete mode 100644 lang/tl/docs/files.php delete mode 100644 lang/tl/docs/future.html delete mode 100644 lang/tl/docs/install.html delete mode 100644 lang/tl/docs/installamp.html delete mode 100644 lang/tl/docs/intro.html delete mode 100644 lang/tl/docs/licence.html delete mode 100644 lang/tl/docs/module_files.txt delete mode 100644 lang/tl/docs/other.html delete mode 100644 lang/tl/docs/philosophy.html delete mode 100644 lang/tl/docs/teacher.html delete mode 100644 lang/tl/docs/translation.html delete mode 100644 lang/tl/docs/upgrade.html delete mode 100644 lang/tl/fonts/README.txt delete mode 100644 lang/tl/help/cookies.html delete mode 100644 lang/tl/help/courseavailability.html delete mode 100644 lang/tl/help/coursecategory.html delete mode 100644 lang/tl/help/courseformats.html delete mode 100644 lang/tl/help/coursefullname.html delete mode 100644 lang/tl/help/coursegrades.html delete mode 100644 lang/tl/help/coursehiddensections.html delete mode 100644 lang/tl/help/courseidnumber.html delete mode 100644 lang/tl/help/coursenewsitems.html delete mode 100644 lang/tl/help/coursenumsections.html delete mode 100644 lang/tl/help/courserecent.html delete mode 100644 lang/tl/help/coursereports.html delete mode 100644 lang/tl/help/courseshortname.html delete mode 100644 lang/tl/help/coursestartdate.html delete mode 100644 lang/tl/help/courseuploadsize.html delete mode 100644 lang/tl/help/directorypaths.html delete mode 100644 lang/tl/help/emoticons.html delete mode 100644 lang/tl/help/enrolmentkey.html delete mode 100644 lang/tl/help/enrolperiod.html delete mode 100644 lang/tl/help/groupmode.html delete mode 100644 lang/tl/help/groupmodeforce.html delete mode 100644 lang/tl/help/guestaccess.html delete mode 100644 lang/tl/help/html.html delete mode 100644 lang/tl/help/index.html delete mode 100644 lang/tl/help/langedit.html delete mode 100644 lang/tl/help/mods.html delete mode 100644 lang/tl/help/picture.html delete mode 100644 lang/tl/help/questions.html delete mode 100644 lang/tl/help/reading.html delete mode 100644 lang/tl/help/richtext.html delete mode 100644 lang/tl/help/scales.html delete mode 100644 lang/tl/help/summaries.html delete mode 100644 lang/tl/help/surveys.html delete mode 100644 lang/tl/help/teachers.html delete mode 100644 lang/tl/help/text.html delete mode 100644 lang/tl/help/textformat.html delete mode 100644 lang/tl/help/uploadusers.html delete mode 100644 lang/tl/help/wiki.html delete mode 100644 lang/tl/help/writing.html delete mode 100644 lang/tl/moodle.php delete mode 100644 lang/tl/readme delete mode 100644 lang/tr/docs/docstyles.css delete mode 100644 lang/tr/docs/files.php delete mode 100644 lang/tr/docs/other.html delete mode 100644 lang/tr/fonts/README.txt delete mode 100644 lang/tr/fonts/default.ttf delete mode 100644 lang/tr/fonts/tr_arial.ttf delete mode 100644 lang/tr/fonts/tr_timesnewroman.ttf create mode 100644 lang/tr/help/quiz/random.html delete mode 100644 lang/vi_utf8/activitynames.php delete mode 100644 lang/vi_utf8/admin.php delete mode 100644 lang/vi_utf8/algebra.php delete mode 100644 lang/vi_utf8/appointment.php delete mode 100644 lang/vi_utf8/attendance.php delete mode 100644 lang/vi_utf8/auth.php delete mode 100644 lang/vi_utf8/block_course_list.php delete mode 100644 lang/vi_utf8/block_course_summary.php delete mode 100644 lang/vi_utf8/block_online_users.php delete mode 100644 lang/vi_utf8/block_rss_client.php delete mode 100644 lang/vi_utf8/block_section_links.php delete mode 100644 lang/vi_utf8/block_social_activities.php delete mode 100644 lang/vi_utf8/censor.php delete mode 100644 lang/vi_utf8/chat.php delete mode 100644 lang/vi_utf8/choice.php delete mode 100644 lang/vi_utf8/countries.php delete mode 100644 lang/vi_utf8/dialogue.php delete mode 100644 lang/vi_utf8/docs/README.txt delete mode 100644 lang/vi_utf8/docs/background.html delete mode 100644 lang/vi_utf8/docs/credits.html delete mode 100644 lang/vi_utf8/docs/cvs.html delete mode 100644 lang/vi_utf8/docs/developer.html delete mode 100644 lang/vi_utf8/docs/docstyles.css delete mode 100644 lang/vi_utf8/docs/features.html delete mode 100644 lang/vi_utf8/docs/files.php delete mode 100644 lang/vi_utf8/docs/future.html delete mode 100644 lang/vi_utf8/docs/install.html delete mode 100644 lang/vi_utf8/docs/installamp.html delete mode 100644 lang/vi_utf8/docs/intro.html delete mode 100644 lang/vi_utf8/docs/licence.html delete mode 100644 lang/vi_utf8/docs/module_files.txt delete mode 100644 lang/vi_utf8/docs/other.html delete mode 100644 lang/vi_utf8/docs/philosophy.html delete mode 100644 lang/vi_utf8/docs/release.html delete mode 100644 lang/vi_utf8/docs/teacher.html delete mode 100644 lang/vi_utf8/docs/translation.html delete mode 100644 lang/vi_utf8/docs/upgrade.html delete mode 100644 lang/vi_utf8/editor.php delete mode 100644 lang/vi_utf8/emailprotect.php delete mode 100644 lang/vi_utf8/enrol_database.php delete mode 100644 lang/vi_utf8/enrol_flatfile.php delete mode 100644 lang/vi_utf8/enrol_internal.php delete mode 100644 lang/vi_utf8/enrol_ldap.php delete mode 100644 lang/vi_utf8/enrol_paypal.php delete mode 100644 lang/vi_utf8/error.php delete mode 100644 lang/vi_utf8/exercise.php delete mode 100644 lang/vi_utf8/glossary.php delete mode 100644 lang/vi_utf8/help/cookies.html delete mode 100644 lang/vi_utf8/help/courseavailability.html delete mode 100644 lang/vi_utf8/help/coursecategory.html delete mode 100644 lang/vi_utf8/help/courseformats.html delete mode 100644 lang/vi_utf8/help/coursefullname.html delete mode 100644 lang/vi_utf8/help/coursegrades.html delete mode 100644 lang/vi_utf8/help/coursehiddensections.html delete mode 100644 lang/vi_utf8/help/courseidnumber.html delete mode 100644 lang/vi_utf8/help/coursenewsitems.html delete mode 100644 lang/vi_utf8/help/coursenumsections.html delete mode 100644 lang/vi_utf8/help/courserecent.html delete mode 100644 lang/vi_utf8/help/coursereports.html delete mode 100644 lang/vi_utf8/help/courseshortname.html delete mode 100644 lang/vi_utf8/help/coursestartdate.html delete mode 100644 lang/vi_utf8/help/courseuploadsize.html delete mode 100644 lang/vi_utf8/help/directorypaths.html delete mode 100644 lang/vi_utf8/help/emoticons.html delete mode 100644 lang/vi_utf8/help/enrolmentkey.html delete mode 100644 lang/vi_utf8/help/enrolperiod.html delete mode 100644 lang/vi_utf8/help/groupmode.html delete mode 100644 lang/vi_utf8/help/wiki/checklinks.html delete mode 100644 lang/vi_utf8/help/wiki/index.html delete mode 100644 lang/vi_utf8/help/wiki/wikiusage.html delete mode 100644 lang/vi_utf8/hotpot.php delete mode 100644 lang/vi_utf8/install.php delete mode 100644 lang/vi_utf8/journal.php delete mode 100644 lang/vi_utf8/label.php delete mode 100644 lang/vi_utf8/lesson.php delete mode 100644 lang/vi_utf8/mediaplugin.php delete mode 100644 lang/vi_utf8/multilang.php delete mode 100644 lang/vi_utf8/pix.php delete mode 100644 lang/vi_utf8/questionnaire.php delete mode 100644 lang/vi_utf8/scorm.php delete mode 100644 lang/vi_utf8/survey.php delete mode 100644 lang/vi_utf8/tex.php delete mode 100644 lang/vi_utf8/webquest.php delete mode 100644 lang/vi_utf8/wiki.php delete mode 100644 lang/vi_utf8/workshop.php delete mode 100644 lang/zh_cn_utf8/activitynames.php delete mode 100644 lang/zh_cn_utf8/admin.php delete mode 100644 lang/zh_cn_utf8/algebra.php delete mode 100644 lang/zh_cn_utf8/appointment.php delete mode 100644 lang/zh_cn_utf8/assignment.php delete mode 100644 lang/zh_cn_utf8/attendance.php delete mode 100644 lang/zh_cn_utf8/auth.php delete mode 100644 lang/zh_cn_utf8/block_course_list.php delete mode 100644 lang/zh_cn_utf8/block_course_summary.php delete mode 100644 lang/zh_cn_utf8/block_html.php delete mode 100644 lang/zh_cn_utf8/block_online_users.php delete mode 100644 lang/zh_cn_utf8/block_section_links.php delete mode 100644 lang/zh_cn_utf8/block_social_activities.php delete mode 100644 lang/zh_cn_utf8/calendar.php delete mode 100644 lang/zh_cn_utf8/censor.php delete mode 100644 lang/zh_cn_utf8/chat.php delete mode 100644 lang/zh_cn_utf8/choice.php delete mode 100644 lang/zh_cn_utf8/countries.php delete mode 100644 lang/zh_cn_utf8/dialogue.php delete mode 100644 lang/zh_cn_utf8/docs/coding.html delete mode 100644 lang/zh_cn_utf8/docs/teacher.html delete mode 100644 lang/zh_cn_utf8/editor.php delete mode 100644 lang/zh_cn_utf8/emailprotect.php delete mode 100644 lang/zh_cn_utf8/error.php delete mode 100644 lang/zh_cn_utf8/exercise.php delete mode 100644 lang/zh_cn_utf8/fonts/README delete mode 100644 lang/zh_cn_utf8/forum.php delete mode 100644 lang/zh_cn_utf8/glossary.php delete mode 100644 lang/zh_cn_utf8/help/exercise/leaguetable.html delete mode 100644 lang/zh_cn_utf8/help/exercise/leaguetablenames.html delete mode 100644 lang/zh_cn_utf8/help/exercise/mods.html delete mode 100644 lang/zh_cn_utf8/help/exercise/password.html delete mode 100644 lang/zh_cn_utf8/help/exercise/specimen.html delete mode 100644 lang/zh_cn_utf8/help/lesson/bgcolor.html delete mode 100644 lang/zh_cn_utf8/help/lesson/custom.html delete mode 100644 lang/zh_cn_utf8/help/lesson/deleteattempts.html delete mode 100644 lang/zh_cn_utf8/help/lesson/displayleft.html delete mode 100644 lang/zh_cn_utf8/help/lesson/grade.html delete mode 100644 lang/zh_cn_utf8/help/lesson/handlingofretakes.html delete mode 100644 lang/zh_cn_utf8/help/lesson/height.html delete mode 100644 lang/zh_cn_utf8/help/lesson/highscores.html delete mode 100644 lang/zh_cn_utf8/help/lesson/import.html delete mode 100644 lang/zh_cn_utf8/help/lesson/jumpto.html delete mode 100644 lang/zh_cn_utf8/help/lesson/lessondefault.html delete mode 100644 lang/zh_cn_utf8/help/lesson/maxanswers.html delete mode 100644 lang/zh_cn_utf8/help/lesson/maxattempts.html delete mode 100644 lang/zh_cn_utf8/help/lesson/maxhighscores.html delete mode 100644 lang/zh_cn_utf8/help/lesson/maxpages.html delete mode 100644 lang/zh_cn_utf8/help/lesson/maxtime.html delete mode 100644 lang/zh_cn_utf8/help/lesson/minquestions.html delete mode 100644 lang/zh_cn_utf8/help/lesson/modattempts.html delete mode 100644 lang/zh_cn_utf8/help/lesson/mods.html delete mode 100644 lang/zh_cn_utf8/help/lesson/nextpageaction.html delete mode 100644 lang/zh_cn_utf8/help/lesson/ongoing.html delete mode 100644 lang/zh_cn_utf8/help/lesson/overview.html delete mode 100644 lang/zh_cn_utf8/help/lesson/password.html delete mode 100644 lang/zh_cn_utf8/help/lesson/practice.html delete mode 100644 lang/zh_cn_utf8/help/lesson/questionoption.html delete mode 100644 lang/zh_cn_utf8/help/lesson/retake.html delete mode 100644 lang/zh_cn_utf8/help/lesson/review.html delete mode 100644 lang/zh_cn_utf8/help/lesson/slideshow.html delete mode 100644 lang/zh_cn_utf8/help/lesson/timed.html delete mode 100644 lang/zh_cn_utf8/help/lesson/tree.html delete mode 100644 lang/zh_cn_utf8/help/lesson/useeditor.html delete mode 100644 lang/zh_cn_utf8/help/lesson/usepassword.html delete mode 100644 lang/zh_cn_utf8/help/lesson/width.html delete mode 100644 lang/zh_cn_utf8/install.php delete mode 100644 lang/zh_cn_utf8/journal.php delete mode 100644 lang/zh_cn_utf8/label.php delete mode 100644 lang/zh_cn_utf8/lesson.php delete mode 100644 lang/zh_cn_utf8/mediaplugin.php delete mode 100644 lang/zh_cn_utf8/message.php delete mode 100644 lang/zh_cn_utf8/moodle.php delete mode 100644 lang/zh_cn_utf8/multilang.php delete mode 100644 lang/zh_cn_utf8/pix.php delete mode 100644 lang/zh_cn_utf8/questionnaire.php delete mode 100644 lang/zh_cn_utf8/quiz.php delete mode 100644 lang/zh_cn_utf8/readme delete mode 100644 lang/zh_cn_utf8/resource.php delete mode 100644 lang/zh_cn_utf8/survey.php delete mode 100644 lang/zh_cn_utf8/tex.php delete mode 100644 lang/zh_cn_utf8/webquest.php delete mode 100644 lang/zh_cn_utf8/wiki.php delete mode 100644 lang/zh_cn_utf8/workshop.php rename lang/{fi/block_html.php => zh_tw_utf8/exercise.php} (100%) mode change 100755 => 100644 delete mode 100644 lib/adodb/datadict/datadict-sapdb.inc.php delete mode 100644 lib/adodb/drivers/adodb-ado5.inc.php delete mode 100644 lib/adodb/lang/adodb-ar.inc.php delete mode 100644 lib/adodb/lang/adodb-da.inc.php delete mode 100644 lib/adodb/lang/adodb-esperanto.inc.php delete mode 100644 lib/adodb/lang/adodb-hu.inc.php delete mode 100644 lib/adodb/pear/Auth/Container/ADOdb.php delete mode 100644 lib/adodb/pear/readme.Auth.txt delete mode 100644 lib/cas/CAS.php delete mode 100644 lib/cas/PGTStorage/pgt-db.php delete mode 100644 lib/cas/PGTStorage/pgt-file.php delete mode 100644 lib/cas/PGTStorage/pgt-main.php delete mode 100644 lib/cas/client.php delete mode 100644 lib/cas/domxml-php4-php5.php delete mode 100644 lib/cas/languages/english.php delete mode 100644 lib/cas/languages/french.php delete mode 100644 lib/cas/languages/greek.php delete mode 100644 lib/cas/languages/languages.php create mode 100644 lib/compatible.php delete mode 100644 lib/cookies.js create mode 100644 lib/db/README create mode 100644 lib/db/oci8po.php create mode 100755 lib/db/oci8po.sql create mode 100755 lib/db/schema.php create mode 100755 lib/db/schemaConfig.xml create mode 100755 lib/db/schemaCourse.xml create mode 100755 lib/db/schemaCourse_categories.xml create mode 100755 lib/db/schemaCourse_display.xml create mode 100755 lib/db/schemaCourse_modules.xml create mode 100755 lib/db/schemaCourse_sections.xml create mode 100755 lib/db/schemaEvent.xml create mode 100755 lib/db/schemaExecutionListing.html create mode 100755 lib/db/schemaGroups.xml create mode 100755 lib/db/schemaGroups_members.xml create mode 100755 lib/db/schemaLog.xml create mode 100755 lib/db/schemaLog_display.xml create mode 100755 lib/db/schemaModules.xml create mode 100755 lib/db/schemaScale.xml create mode 100755 lib/db/schemaUser.xml create mode 100755 lib/db/schemaUser_admins.xml create mode 100644 lib/editor/courseimages.php delete mode 100644 lib/editor/images/ed_nolink.gif delete mode 100644 lib/editor/images/ed_replace.gif delete mode 100644 lib/editor/images/spell-check.gif delete mode 100644 lib/editor/popups/searchandreplace.php delete mode 100644 lib/filelib.php delete mode 100644 lib/filterlib.php delete mode 100644 lib/javascript-mod.php delete mode 100644 lib/javascript-static.js delete mode 100644 lib/lexer.php delete mode 100644 lib/magpie/AUTHORS delete mode 100644 lib/magpie/README delete mode 100644 lib/magpie/README_MOODLE.txt delete mode 100644 lib/magpie/TROUBLESHOOTING delete mode 100644 lib/magpie/cookbook delete mode 100644 lib/magpie/extlib/Snoopy.class.inc delete mode 100644 lib/magpie/htdocs/cookbook.html delete mode 100644 lib/magpie/htdocs/index.html delete mode 100644 lib/magpie/rss_cache.inc delete mode 100644 lib/magpie/rss_fetch.inc delete mode 100644 lib/magpie/rss_parse.inc delete mode 100644 lib/magpie/rss_utils.inc delete mode 100644 lib/mp3player/readme.txt delete mode 100644 lib/olson.php delete mode 100644 lib/pagelib.php delete mode 100755 lib/phpmailer/language/phpmailer.lang-cz.php delete mode 100755 lib/phpmailer/language/phpmailer.lang-de.php delete mode 100755 lib/phpmailer/language/phpmailer.lang-es.php delete mode 100755 lib/phpmailer/language/phpmailer.lang-fr.php delete mode 100755 lib/phpmailer/language/phpmailer.lang-it.php delete mode 100755 lib/phpmailer/language/phpmailer.lang-nl.php delete mode 100755 lib/phpmailer/language/phpmailer.lang-no.php delete mode 100755 lib/phpmailer/language/phpmailer.lang-se.php delete mode 100755 lib/phpmailer/language/phpmailer.lang-tr.php delete mode 100644 lib/rsslib.php delete mode 100644 lib/searchlib.php delete mode 100644 lib/tablelib.php delete mode 100644 lib/timezones.txt delete mode 100755 lib/validateurlsyntax.php rename lib/{wiki_to_markdown.php => wiki.php} (52%) delete mode 100644 lib/womenslib.php delete mode 100644 message/bell.wav delete mode 100644 message/discussion.php delete mode 100644 message/history.php delete mode 100644 message/index.php delete mode 100644 message/lib.php delete mode 100644 message/messages.php delete mode 100644 message/refresh.php delete mode 100644 message/search.html delete mode 100644 message/send.php delete mode 100644 message/settings.html delete mode 100644 message/user.php create mode 100755 mod/assignment/db/oci8po.php create mode 100755 mod/assignment/db/oci8po.sql delete mode 100644 mod/assignment/details.php delete mode 100644 mod/assignment/plan.txt delete mode 100644 mod/assignment/styles.php delete mode 100644 mod/assignment/type/common.html delete mode 100644 mod/assignment/type/common_end.html delete mode 100644 mod/assignment/type/offline/assignment.class.php delete mode 100644 mod/assignment/type/offline/mod.html delete mode 100644 mod/assignment/type/postdata.html delete mode 100644 mod/assignment/type/uploadsingle/assignment.class.php delete mode 100644 mod/assignment/type/uploadsingle/mod.html create mode 100644 mod/chat/drawboard.php create mode 100644 mod/chat/gui_header/chatinput.php create mode 100644 mod/chat/gui_header/chatmsg.php create mode 100644 mod/chat/gui_header/index.php delete mode 100644 mod/chat/gui_header_js/insert.php delete mode 100644 mod/chat/gui_header_js/users.php create mode 100644 mod/chat/gui_java/MainFrameGui.java create mode 100644 mod/chat/gui_java/TextDialog.java create mode 100644 mod/chat/gui_java/arsc.java create mode 100644 mod/chat/gui_push_js/chatinput.php create mode 100644 mod/chat/gui_push_js/chatmsg.php create mode 100644 mod/chat/gui_push_js/index.php create mode 100644 mod/chat/gui_text/index.php create mode 100644 mod/chat/insert.php delete mode 100644 mod/chat/pagelib.php create mode 100644 mod/chat/users.php create mode 100644 mod/forum/delete.php delete mode 100644 mod/forum/user.php delete mode 100644 mod/index.html delete mode 100644 mod/lesson/action/addbranchtable.php delete mode 100644 mod/lesson/action/addcluster.php delete mode 100644 mod/lesson/action/addendofbranch.php delete mode 100644 mod/lesson/action/addendofcluster.php delete mode 100644 mod/lesson/action/addpage.php delete mode 100644 mod/lesson/action/confirmdelete.php delete mode 100644 mod/lesson/action/continue.php delete mode 100644 mod/lesson/action/delete.php delete mode 100644 mod/lesson/action/editpage.php delete mode 100644 mod/lesson/action/insertpage.php delete mode 100644 mod/lesson/action/move.php delete mode 100644 mod/lesson/action/moveit.php delete mode 100644 mod/lesson/action/updatepage.php delete mode 100644 mod/lesson/locallib.php delete mode 100644 mod/lesson/reformat.php delete mode 100644 mod/lesson/report.php delete mode 100644 mod/lesson/styles.php delete mode 100644 mod/lesson/timer.js delete mode 100644 mod/quiz/attempt_close_js.php delete mode 100644 mod/quiz/config.html delete mode 100644 mod/quiz/defaults.php delete mode 100755 mod/quiz/format/learnwise/format.php delete mode 100644 mod/quiz/format/learnwise/learnwise-example.xml delete mode 100644 mod/quiz/format/qti/custommediafilter.php delete mode 100644 mod/quiz/format/qti/qt_common.php delete mode 100755 mod/quiz/format/qti/templates/choice.tpl delete mode 100755 mod/quiz/format/qti/templates/choiceMultiple.tpl delete mode 100755 mod/quiz/format/qti/templates/composite.tpl delete mode 100755 mod/quiz/format/qti/templates/extendedText.tpl delete mode 100755 mod/quiz/format/qti/templates/extendedText_simpleEssay.tpl delete mode 100644 mod/quiz/format/qti/templates/graphicGapMatch.tpl delete mode 100755 mod/quiz/format/qti/templates/imsmanifest.tpl delete mode 100644 mod/quiz/format/qti/templates/match.tpl delete mode 100755 mod/quiz/format/qti/templates/mmchoiceMultiple.tpl delete mode 100755 mod/quiz/format/qti/templates/notimplemented.tpl delete mode 100755 mod/quiz/format/qti/templates/numerical.tpl delete mode 100755 mod/quiz/format/qti/templates/textEntry.tpl delete mode 100644 mod/quiz/imsattempt.php delete mode 100644 mod/quiz/locallib.php delete mode 100644 mod/quiz/pagelib.php delete mode 100644 mod/quiz/protect_js.php create mode 100644 mod/resource/coursefiles.php delete mode 100644 mod/resource/type/file/localfile.php delete mode 100644 mod/resource/type/file/localpath.php delete mode 100644 mod/scorm/api.php create mode 100644 mod/scorm/api1_2.php create mode 100755 mod/scorm/cmi.php create mode 100755 mod/scorm/coursefiles.php delete mode 100755 mod/scorm/datamodel.php delete mode 100644 mod/scorm/datamodels/scorm1_2.js.php delete mode 100644 mod/scorm/datamodels/scorm1_3.js.php create mode 100755 mod/scorm/details.php delete mode 100755 mod/scorm/loadSCO.php delete mode 100644 mod/scorm/request.js create mode 100755 mod/scorm/scormAPI.php delete mode 100755 mod/scorm/validate.php create mode 100755 mod/wiki/wikifiles.php create mode 100644 mod/workshop/Overview.html delete mode 100644 mod/workshop/assess.php delete mode 100644 mod/workshop/assessment_grading_form.html create mode 100644 mod/workshop/icon.png create mode 100644 mod/workshop/icon1.gif create mode 100644 mod/workshop/icon2.gif create mode 100644 mod/workshop/icon2.png create mode 100755 mod/workshop/icon3.gif create mode 100755 mod/workshop/icon4.gif create mode 100755 mod/workshop/icon5.gif create mode 100644 mod/workshop/todo.txt delete mode 100644 mod/workshop/viewassessment.php delete mode 100644 pix/t/copy.gif delete mode 100755 pix/t/go.gif delete mode 100755 pix/t/log.gif delete mode 100755 pix/t/message.gif delete mode 100644 pix/t/moveleft.gif delete mode 100755 pix/t/preview.gif delete mode 100644 pix/t/removeright.gif delete mode 100755 pix/t/stop.gif delete mode 100644 pix/t/switch.gif delete mode 100644 pix/t/switch_minus.gif delete mode 100644 pix/t/switch_plus.gif delete mode 100755 pix/t/usernot.gif create mode 100644 rss/rsslib.php delete mode 100644 theme/cornflower/docstyles.php delete mode 100644 theme/formal_white/README.html delete mode 100644 theme/formal_white/docstyles.php delete mode 100644 theme/formal_white/fw_color.css delete mode 100644 theme/formal_white/fw_fonts.css delete mode 100644 theme/formal_white/fw_layout.css delete mode 100644 theme/formal_white/gradient.jpg delete mode 100644 theme/formal_white/pix/grad/bg_bread.jpg delete mode 100644 theme/formal_white/pix/grad/bg_header.jpg delete mode 100644 theme/formal_white/screenshot.jpg create mode 100644 theme/oceanblue/README delete mode 100644 theme/oceanblue/README.txt delete mode 100644 theme/oceanblue/docstyles.php create mode 100644 theme/oceanblue/header.html_logo create mode 100644 theme/oceanblue/logo.jpg create mode 100644 theme/oceanblue/logo_base.jpg delete mode 100644 theme/oceanblue/pix/tab/left.gif delete mode 100644 theme/oceanblue/pix/tab/left_active.gif delete mode 100644 theme/oceanblue/pix/tab/left_active_hover.gif delete mode 100644 theme/oceanblue/pix/tab/left_hover.gif delete mode 100644 theme/oceanblue/pix/tab/right.gif delete mode 100644 theme/oceanblue/pix/tab/right_active.gif delete mode 100644 theme/oceanblue/pix/tab/right_active_hover.gif delete mode 100644 theme/oceanblue/pix/tab/right_end.gif delete mode 100644 theme/oceanblue/pix/tab/right_hover.gif delete mode 100644 theme/oceanblue/styles_color.css delete mode 100644 theme/oceanblue/styles_fonts.css delete mode 100644 theme/oceanblue/styles_layout.css delete mode 100644 theme/orangewhite/README.html delete mode 100644 theme/orangewhite/colorstrip.gif delete mode 100644 theme/orangewhite/config.php delete mode 100644 theme/orangewhite/css.gif delete mode 100644 theme/orangewhite/csshover.htc delete mode 100644 theme/orangewhite/docstyles.php delete mode 100644 theme/orangewhite/favicon.ico delete mode 100644 theme/orangewhite/footer.html delete mode 100644 theme/orangewhite/header.html delete mode 100644 theme/orangewhite/nostyle.css delete mode 100644 theme/orangewhite/pix/rightarrow2.gif delete mode 100644 theme/orangewhite/pix/tab/left.gif delete mode 100644 theme/orangewhite/pix/tab/left2.gif delete mode 100644 theme/orangewhite/pix/tab/left_active.gif delete mode 100644 theme/orangewhite/pix/tab/left_active2.gif delete mode 100644 theme/orangewhite/pix/tab/left_hover.gif delete mode 100644 theme/orangewhite/pix/tab/left_hover2.gif delete mode 100644 theme/orangewhite/pix/tab/left_inactive.gif delete mode 100644 theme/orangewhite/pix/tab/left_inactive2.gif delete mode 100644 theme/orangewhite/pix/tab/right.gif delete mode 100644 theme/orangewhite/pix/tab/right2.gif delete mode 100644 theme/orangewhite/pix/tab/right_active.gif delete mode 100644 theme/orangewhite/pix/tab/right_active2.gif delete mode 100644 theme/orangewhite/pix/tab/right_end.gif delete mode 100644 theme/orangewhite/pix/tab/right_end2.gif delete mode 100644 theme/orangewhite/pix/tab/right_hover.gif delete mode 100644 theme/orangewhite/pix/tab/right_hover2.gif delete mode 100644 theme/orangewhite/pix/tab/right_inactive.gif delete mode 100644 theme/orangewhite/pix/tab/right_inactive2.gif delete mode 100644 theme/orangewhite/pix/tab/tabsbg.gif delete mode 100644 theme/orangewhite/pix/tab/tabsbg2.gif delete mode 100644 theme/orangewhite/pix/tab/tabsbg_x2.gif delete mode 100644 theme/orangewhite/screenshot.jpg delete mode 100644 theme/orangewhite/section_508.gif delete mode 100644 theme/orangewhite/styles.php delete mode 100644 theme/orangewhite/styles_color.css delete mode 100644 theme/orangewhite/styles_fonts.css delete mode 100644 theme/orangewhite/styles_layout.css delete mode 100644 theme/orangewhite/styles_tabs.css delete mode 100644 theme/orangewhite/xhtml_1_0.gif delete mode 100644 theme/orangewhitepda/config.php delete mode 100644 theme/orangewhitepda/css.gif delete mode 100644 theme/orangewhitepda/csshover.htc delete mode 100644 theme/orangewhitepda/docstyles.php delete mode 100644 theme/orangewhitepda/farbstreifen_moodle.gif delete mode 100644 theme/orangewhitepda/footer.html delete mode 100644 theme/orangewhitepda/header.html delete mode 100644 theme/orangewhitepda/nostyle.css delete mode 100644 theme/orangewhitepda/section_508.gif delete mode 100644 theme/orangewhitepda/styles.php delete mode 100644 theme/orangewhitepda/styles_color.css delete mode 100644 theme/orangewhitepda/styles_font.css delete mode 100644 theme/orangewhitepda/styles_layout.css delete mode 100644 theme/orangewhitepda/xhtml_1_0.gif create mode 100644 theme/poweraid/README.txt create mode 100644 theme/poweraid/config.php rename theme/{orangewhitepda => poweraid}/favicon.ico (100%) mode change 100644 => 100755 create mode 100644 theme/poweraid/footer.html create mode 100644 theme/poweraid/header.html create mode 100644 theme/poweraid/images/bott_bar.jpg create mode 100644 theme/poweraid/images/bott_left.jpg create mode 100644 theme/poweraid/images/bott_middle.jpg create mode 100644 theme/poweraid/images/bott_right.jpg create mode 100644 theme/poweraid/images/client_tools_bot_mid.gif create mode 100644 theme/poweraid/images/dots.gif create mode 100644 theme/poweraid/images/dots_002.gif create mode 100644 theme/poweraid/images/favicon.ico create mode 100755 theme/poweraid/images/frontlogo.jpg create mode 100644 theme/poweraid/images/gradient.jpg create mode 100644 theme/poweraid/images/index.php create mode 100644 theme/poweraid/images/left_corner_bott.jpg create mode 100644 theme/poweraid/images/left_corner_top.jpg create mode 100644 theme/poweraid/images/left_sidebar.jpg create mode 100644 theme/poweraid/images/login_lower_left.gif create mode 100755 theme/poweraid/images/login_lower_right.gif create mode 100644 theme/poweraid/images/right_bott.jpg create mode 100644 theme/poweraid/images/right_corner_bott.jpg create mode 100644 theme/poweraid/images/right_corner_top.jpg create mode 100644 theme/poweraid/images/right_sidebar.jpg create mode 100644 theme/poweraid/images/right_top.jpg create mode 100644 theme/poweraid/images/side_left.gif create mode 100644 theme/poweraid/images/side_right.gif create mode 100644 theme/poweraid/images/sidebar_left.jpg create mode 100644 theme/poweraid/images/sidebar_right.jpg create mode 100644 theme/poweraid/images/smalllogo.jpg create mode 100644 theme/poweraid/images/top_bar.jpg create mode 100644 theme/poweraid/images/top_middle.gif create mode 100644 theme/poweraid/images/top_right.gif create mode 100644 theme/poweraid/images/topbar_left.jpg create mode 100644 theme/poweraid/images/topbar_middle.jpg create mode 100644 theme/poweraid/images/topbar_right.jpg create mode 100644 theme/poweraid/index.php create mode 100644 theme/poweraid/license.txt create mode 100644 theme/poweraid/styles.php delete mode 100644 theme/preview.php delete mode 100644 theme/standard/README.html delete mode 100644 theme/standard/docstyles.php delete mode 100644 theme/standard/pix/tab/left.gif delete mode 100644 theme/standard/pix/tab/left_active.gif delete mode 100644 theme/standard/pix/tab/left_active_hover.gif delete mode 100644 theme/standard/pix/tab/left_hover.gif delete mode 100644 theme/standard/pix/tab/right.gif delete mode 100644 theme/standard/pix/tab/right_active.gif delete mode 100644 theme/standard/pix/tab/right_active_hover.gif delete mode 100644 theme/standard/pix/tab/right_end.gif delete mode 100644 theme/standard/pix/tab/right_hover.gif delete mode 100755 theme/standard/screenshot.jpg delete mode 100644 theme/standard/styles_color.css delete mode 100644 theme/standard/styles_fonts.css delete mode 100644 theme/standard/styles_layout.css delete mode 100644 theme/standard/styles_moz.css delete mode 100644 theme/standardblue/gradients.css delete mode 100644 theme/standardgreen/gradients.css delete mode 100644 theme/standardred/gradients.css delete mode 100644 theme/standardwhite/gradients.css delete mode 100644 user/policy.php delete mode 100644 user/tabs.php diff --git a/README.txt b/README.txt index 72267d2d134..36803a2bdd2 100644 --- a/README.txt +++ b/README.txt @@ -1,8 +1,25 @@ README $Id$ ------ -QUICK INSTALL -============= +If you are installing the first time, then you +should read the installation guide which is +part of the Moodle documentation (along with +information about upgrading etc): + + http://moodle.com/doc/ + +There is a copy of all this documentation as part of +this Moodle distribution. You can access your local +copy of the installation guide here: + + lang/en/docs/install.html + +Once Moodle is installed on your machine, then +you can also access a local copy of all this +documentation (localised to your language) at: + + http://yourmoodlesite.com/doc/ + For the impatient, here is a basic outline of the installation process, which normally takes me only @@ -10,26 +27,25 @@ a few minutes: 1) Move the Moodle files into your web directory. -2) Create a single database for Moodle to store all +2) Create an empty directory somewhere to store + uploaded files (NOT accessible via the web). + This directory must be writeable by the web server + process. + +3) Create a single database for Moodle to store all it's tables in (or choose an existing database). -3) Visit your Moodle site with a browser, you should - be taken to the install.php script, which will lead - you through creating a config.php file and then - setting up Moodle, creating an admin account etc. +4) Copy the file config-dist.php to config.php, and + edit it with all your own settings. -4) Set up a cron task to call the file admin/cron.php +5) Visit your new home page with a web browser. Moodle + will lead you through the rest of the setup, + creating an admin account and so on. + +6) Set up a cron task to call the file admin/cron.php every five minutes or so. -For more information, see the INSTALL DOCUMENTATION: - - http://moodle.org/doc - -If you have real trouble, please visit the Moodle course -"Using Moodle" on moodle.org. - - -Good luck and have fun! -Martin Dougiamas, Lead Developer +Cheers! +Martin Dougiamas diff --git a/admin/admin.html b/admin/admin.html index aac0373d927..5d6edcdb08c 100644 --- a/admin/admin.html +++ b/admin/admin.html @@ -1,7 +1,6 @@
- '; - echo ''; - echo ''; - echo ''; - echo ''; - - - echo '
diff --git a/admin/admin.php b/admin/admin.php index d5c99987795..50324f34923 100644 --- a/admin/admin.php +++ b/admin/admin.php @@ -19,10 +19,6 @@ error("You must be an administrator to use this page."); } - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - $primaryadmin = get_admin(); /// If you want any administrator to have the ability to assign admin diff --git a/admin/auth.php b/admin/auth.php index a11e2b731da..fb804b8c332 100644 --- a/admin/auth.php +++ b/admin/auth.php @@ -12,13 +12,10 @@ error("Only the admin can use this page"); } - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } /// If data submitted, then process and store. - if ($config = data_submitted()) { + if ($config = data_submitted()) { $config = (array)$config; validate_form($config, $err); @@ -30,7 +27,7 @@ notify("Problem saving config $name as $value"); } } - redirect("auth.php?sesskey=$USER->sesskey", get_string("changessaved"), 1); + redirect("auth.php", get_string("changessaved"), 1); exit; } else { @@ -38,7 +35,7 @@ $focus = "form.$key"; } } - } + } /// Otherwise fill and print the form. @@ -51,19 +48,15 @@ $options[$module] = get_string("auth_$module"."title", "auth"); } asort($options); - if (isset($_GET['auth'])) { - $auth = $_GET['auth']; - } else { + if (isset($_GET['auth'])) { + $auth = $_GET['auth']; + } else { $auth = $config->auth; - } - $auth = clean_filename($auth); + } require_once("$CFG->dirroot/auth/$auth/lib.php"); //just to make sure that current authentication functions are loaded if (! isset($config->guestloginbutton)) { $config->guestloginbutton = 1; } - if (! isset($config->alternateloginurl)) { - $config->alternateloginurl = ''; - } if (! isset($config->auth_instructions)) { $config->auth_instructions = ""; } @@ -96,42 +89,38 @@ $strusers = get_string("users"); print_header("$site->shortname: $strauthenticationoptions", "$site->fullname", - "$stradministration -> $strusers -> $strauthenticationoptions", "$focus"); + "$stradministration -> $strusers -> $strauthenticationoptions", "$focus"); - echo "
"; - echo "framename}\" name=\"authmenu\" method=\"post\" action=\"auth.php\">"; - echo "sesskey."\" />"; + echo "

"; + echo "framename}\" NAME=\"authmenu\" method=\"post\" action=\"auth.php\">"; print_string("chooseauthmethod","auth"); - choose_from_menu ($options, "auth", $auth, "","document.location='auth.php?sesskey=$USER->sesskey&auth='+document.authmenu.auth.options[document.authmenu.auth.selectedIndex].value", ""); + choose_from_menu ($options, "auth", $auth, "","document.location='auth.php?auth='+document.authmenu.auth.options[document.authmenu.auth.selectedIndex].value", ""); - echo "

"; - - print_simple_box_start("center", "100%"); + echo "

"; + + print_simple_box_start("center", "100%", "$THEME->cellheading"); print_heading($options[$auth]); - print_simple_box_start("center", "60%", '', 5, 'informationbox'); + print_simple_box_start("center", "60%", "$THEME->cellcontent"); print_string("auth_$auth"."description", "auth"); print_simple_box_end(); - echo "
"; + echo "
"; print_heading($strsettings); echo ""; require_once("$CFG->dirroot/auth/$auth/config.html"); - echo ''; if ($auth != "email" and $auth != "none" and $auth != "manual") { echo ""; - echo ""; - echo ""; + echo ""; echo ""; - echo ""; - echo ""; + echo ""; echo ""; - if (function_exists('auth_user_create')){ - echo ""; - echo ""; - echo ""; - echo ""; - } + if (function_exists('auth_user_create')){ + echo ""; + echo ""; + echo ""; + echo ""; + } + echo "
'; - print_heading(get_string('auth_common_settings', 'auth')); - echo '
"; + echo "

"; print_string("changepassword", "auth"); - echo ":

"; - echo "changepassword\" />"; + echo ":

"; + echo "changepassword\">"; echo ""; print_string("changepasswordhelp","auth"); @@ -140,53 +129,37 @@ } echo "
"; + echo "

"; print_string("guestloginbutton", "auth"); - echo ":

"; + echo ":

"; choose_from_menu($guestoptions, "guestloginbutton", $config->guestloginbutton, ""); echo ""; print_string("showguestlogin","auth"); echo "
"; - print_string("auth_user_create", "auth"); - echo ":"; - choose_from_menu($createoptions, "auth_user_create", $config->auth_user_create, ""); - echo ""; - print_string("auth_user_creation","auth"); - echo "

"; + print_string("auth_user_create", "auth"); + echo ":

"; + choose_from_menu($createoptions, "auth_user_create", $config->auth_user_create, ""); + echo ""; + print_string("auth_user_creation","auth"); + echo "

"; -/// An alternate url for the login form. It means we can use login forms that are integrated -/// into non-moodle pages - echo '
'; - print_string('alternateloginurl', 'auth'); - echo ''; - echo ''; - echo ''; - print_string('alternatelogin', 'auth', htmlspecialchars($CFG->wwwroot.'/login/index.php')); - echo '
'; - echo '

'; - echo ''; - - print_simple_box_end(); + print_simple_box_end(); print_footer(); - exit; + exit; /// Functions ///////////////////////////////////////////////////////////////// diff --git a/admin/backup.php b/admin/backup.php index 2b8f16b8cde..608f39e0689 100644 --- a/admin/backup.php +++ b/admin/backup.php @@ -21,7 +21,7 @@ /// If data submitted, then process and store. - if (($config = data_submitted()) && confirm_sesskey()) { + if ($config = data_submitted()) { //First of all we check that everything is correct //Check for trailing slash and backslash in backup_sche_destination @@ -73,7 +73,7 @@ } if ($status) { //get courses - if ($courses = get_records('course', '', '', '', 'id,shortname')) { + if ($courses = get_records("course")) { //For each course, we check (insert, update) the backup_course table //with needed data foreach ($courses as $course) { @@ -111,18 +111,18 @@ "$strconfiguration -> ". $strbackup); - echo "

".get_string("logs")."

"; + echo "

".get_string("logs")."

"; print_heading($strbackup); print_simple_box("
".get_string("adminhelpbackup")."
", "center", "50%"); echo "
"; - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); //Check for required functions... - if (!function_exists('utf8_encode')) { - notify("You need to add XML support to your PHP installation"); + if(!function_exists('utf8_encode')) { + print_simple_box("You need to add XML support to your PHP installation", "center", "70%", "$THEME->cellheading", "20", "noticebox"); } include ("$CFG->dirroot/backup/config.html"); diff --git a/admin/block.php b/admin/block.php index 3ce1a075f1d..a3387c39c9f 100644 --- a/admin/block.php +++ b/admin/block.php @@ -16,44 +16,27 @@ require_variable($_REQUEST['block']); $blockid = intval($_REQUEST['block']); - - if(($blockrecord = blocks_get_record($blockid)) === false) { + + if(($blockrecord = get_record('blocks', 'id', $blockid)) === false) { error('This block does not exist'); } - $block = block_instance($blockrecord->name); + $block = block_instance($blockrecord->name, NULL); if($block === false) { error('Problem in instantiating block object'); } - // Define the data we're going to silently include in the instance config form here, - // so we can strip them from the submitted data BEFORE handling it. - $hiddendata = array( - 'block' => $blockid, - 'sesskey' => $USER->sesskey - ); +/// If data submitted, then process and store. - /// If data submitted, then process and store. - - if ($config = data_submitted()) { - - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - if(!$block->has_config()) { - error('This block does not support global configuration'); - } - $remove = array_keys($hiddendata); - foreach($remove as $item) { - unset($config->$item); - } - $block->config_save($config); + if ($config = data_submitted()) { + unset($config['block']); // This will always be set if we have reached this point + $block->handle_config($config); print_header(); redirect("$CFG->wwwroot/$CFG->admin/blocks.php", get_string("changessaved"), 1); exit; - } + } - /// Otherwise print the form. +/// Otherwise print the form. $stradmin = get_string('administration'); $strconfiguration = get_string('configuration'); @@ -67,17 +50,11 @@ print_heading($strblockname); - print_simple_box('
'.get_string('configwarning', 'admin').'
', 'center', '50%'); + print_simple_box('
'.get_string('configwarning').'
', 'center', '50%'); echo '
'; - echo '
'; - echo '

'; - foreach($hiddendata as $name => $val) { - echo ''; - } - echo '

'; - $block->config_print(); - echo '
'; + $block->print_config(); + print_footer(); ?> diff --git a/admin/blocks.php b/admin/blocks.php index be946c1f37b..95d5947e9b2 100644 --- a/admin/blocks.php +++ b/admin/blocks.php @@ -5,11 +5,11 @@ require_once('../config.php'); require_once($CFG->libdir.'/blocklib.php'); + optional_variable($_GET['hide']); + optional_variable($_GET['show']); + optional_variable($_GET['delete']); optional_variable($_GET['confirm'], 0); - $hide = optional_param('hide', 0, PARAM_INT); - $show = optional_param('show', 0, PARAM_INT); - $delete = optional_param('delete', 0, PARAM_INT); - $multiple = optional_param('multiple', 0, PARAM_INT); + $delete = $_GET['delete']; // Dependency remover require_login(); @@ -32,9 +32,8 @@ $strhide = get_string('hide'); $strshow = get_string('show'); $strsettings = get_string('settings'); - $strcourses = get_string('blockinstances', 'admin'); + $strcourses = get_string('courses'); $strname = get_string('name'); - $strmultiple = get_string('blockmultiple', 'admin'); print_header("$site->shortname: $strmanageblocks", "$site->fullname", "$stradministration -> ". @@ -45,56 +44,43 @@ /// If data submitted, then process and store. - if (!empty($hide) && confirm_sesskey()) { - if (!$block = get_record('block', 'id', $hide)) { + if (!empty($_GET['hide'])) { + if (!$block = get_record('blocks', 'id', $_GET['hide'])) { error("Block doesn't exist!"); } - set_field('block', 'visible', '0', 'id', $block->id); // Hide block + set_field('blocks', 'visible', '0', 'id', $block->id); // Hide block } - if (!empty($show) && confirm_sesskey() ) { - if (!$block = get_record('block', 'id', $show)) { + if (!empty($_GET['show'])) { + if (!$block = get_record('blocks', 'id', $_GET['show'])) { error("Block doesn't exist!"); } - set_field('block', 'visible', '1', 'id', $block->id); // Show block + set_field('blocks', 'visible', '1', 'id', $block->id); // Show block } - if (!empty($multiple) && confirm_sesskey()) { - if (!$block = blocks_get_record($multiple)) { - error("Block doesn't exist!"); - } - $block->multiple = !$block->multiple; - update_record('block', $block); - } + if (!empty($delete)) { - if (!empty($delete) && confirm_sesskey()) { - - if (!$block = blocks_get_record($delete)) { + if (!$block = get_record('blocks', 'id', $delete)) { error("Block doesn't exist!"); } - $blockobject = block_instance($block->name); + $blockobject = block_instance($block->name, $site); $strblockname = $blockobject->get_title(); if (!$_GET['confirm']) { notice_yesno(get_string('blockdeleteconfirm', '', $strblockname), - 'blocks.php?delete='.$block->id.'&confirm=1&sesskey='.$USER->sesskey, + 'blocks.php?delete='.$block->id.'&confirm=1', 'blocks.php'); print_footer(); exit; } else { // Delete block - if (!delete_records('block', 'id', $block->id)) { + if (!delete_records('blocks', 'id', $block->id)) { notify("Error occurred while deleting the $strblockname record from blocks table"); } - $instances = get_records('block_instance', 'blockid', $block->id); - if(!empty($instances)) { - foreach($instances as $instance) { - blocks_delete_instance($instance); - } - } + blocks_update_every_block_by_id($block->id, 'delete'); // Delete blocks in all courses by id // Then the tables themselves @@ -119,12 +105,12 @@ /// Get and sort the existing blocks - if (false === ($blocks = get_records('block'))) { + if (false === ($blocks = get_records('blocks'))) { error('No blocks found!'); // Should never happen } foreach ($blocks as $block) { - if(($blockobject = block_instance($block->name)) === false) { + if(($blockobject = block_instance($block->name, NULL)) === false) { // Failed to load continue; } @@ -140,59 +126,52 @@ /// Print the table of all blocks - $table->head = array ($strname, $strcourses, $strversion, $strhide.'/'.$strshow, $strmultiple, $strdelete, $strsettings); - $table->align = array ('left', 'right', 'left', 'center', 'center', 'center', 'center'); - $table->wrap = array ('nowrap', '', '', '', '', '', ''); - $table->size = array ('100%', '10', '10', '10', '10','12'); - $table->width = '100'; + if (empty($THEME->custompix)) { + $pixpath = '../pix'; + // [pj] This is not used anywhere, but I'm leaving it in for the future + //$modpixpath = '../mod'; + } else { + $pixpath = '../theme/'.$CFG->theme.'/pix'; + // [pj] This is not used anywhere, but I'm leaving it in for the future + //$modpixpath = '../theme/'.$CFG->theme.'/pix/mod'; + } + + $table->head = array ($strname, $strcourses, $strversion, $strhide.'/'.$strshow, $strdelete, $strsettings); + $table->align = array ('LEFT', 'RIGHT', 'LEFT', 'CENTER', 'CENTER', 'CENTER'); + $table->wrap = array ("NOWRAP", "", "", "", "",""); + $table->size = array ("100%", "10", "10", "10", "10","12"); + $table->width = "100"; foreach ($blockbyname as $blockname => $blockid) { + // [pj] This is not used anywhere, but I'm leaving it in for the future + //$icon = "name/icon.gif\" hspace=10 height=16 width=16 border=0>"; $blockobject = $blockobjects[$blockid]; - $delete = ''.$strdelete.''; + $delete = ''.$strdelete.''; $settings = ''; // By default, no configuration if($blockobject->has_config()) { $settings = ''.$strsettings.''; } - $count = count_records('block_instance', 'blockid', $blockid); + $count = blocks_get_courses_using_block_by_id($blockid); $class = ''; // Nothing fancy, by default if ($blocks[$blockid]->visible) { - $visible = ''. - ''; + $visible = ''. + ''; } else { - $visible = ''. - ''; + $visible = ''. + ''; $class = ' class="dimmed_text"'; // Leading space required! } - if ($blockobject->instance_allow_multiple()) { - if($blocks[$blockid]->multiple) { - $multiple = ''.get_string('yes').' ('.get_string('change', 'admin').')'; - } - else { - $multiple = ''.get_string('no').' ('.get_string('change', 'admin').')'; - } - } - else { - $multiple = ''; - } - $table->data[] = array( - ''.$blockobject->get_title().'', - $count, - $blockobject->get_version(), - $visible, - $multiple, - $delete, - $settings - ); + $table->data[] = array (''.$blockobject->get_title().'

', $count, $blockobject->get_version(), $visible, $delete, $settings); } - + echo '

'; print_table($table); - + echo '

'; print_footer(); ?> diff --git a/admin/calendar.html b/admin/calendar.html deleted file mode 100644 index 8cdcdbbb1e1..00000000000 --- a/admin/calendar.html +++ /dev/null @@ -1,67 +0,0 @@ - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adminseesall: -
-

- -

-
startwday: -
-

calendar_startwday) ? 0 : $CFG->calendar_startwday, ''); ?>

-
weekenddays: -
-

- /> - /> - /> - /> - /> - /> - /> -

-
upcoming_lookahead: -
-

-
upcoming_maxevents: -
-

-
timezones: -
-

forcetimezone, get_string('timezonenotforced', 'admin'), '', '99'); ?>

-

...

-
- -
-
diff --git a/admin/calendar.php b/admin/calendar.php deleted file mode 100644 index a1c0eae31f6..00000000000 --- a/admin/calendar.php +++ /dev/null @@ -1,99 +0,0 @@ -shortname: $strcalendarsettings", "$site->fullname", - "$stradministration -> ". - "$strconfiguration -> $strcalendarsettings"); - - print_heading($strcalendarsettings); - -/// If data submitted, process and store - - if (($form = data_submitted()) && confirm_sesskey()) { - if(isset($form->adminseesallcourses)) { - set_config('calendar_adminseesall', intval($form->adminseesallcourses) != 0); - unset($SESSION->cal_courses_shown); - } - if(isset($form->forcetimezone)) { - // To protect from SQL injections ... - $form->forcetimezone = str_replace(';', '', $form->forcetimezone); - $form->forcetimezone = str_replace('\'', '', $form->forcetimezone); - set_config('forcetimezone', $form->forcetimezone); - } - if(isset($form->startwday)) { - $startwday = intval($form->startwday); - if($startwday >= 0 && $startwday <= 6) { - set_config('calendar_startwday', $startwday); - } - } - if(isset($form->weekend)) { - if(is_array($form->weekend)) { - // Creating a packed bitfield; look at /calendar/lib.php if you can't figure it out - $bitfield = 0; - foreach($form->weekend as $day) { - $bitfield |= (1 << (intval($day) % 7)); - } - if($bitfield > 0) { - set_config('calendar_weekend', $bitfield); - } - } - } - if(isset($form->lookahead)) { - $lookahead = intval($form->lookahead); - if($lookahead > 0) { - set_config('calendar_lookahead', $lookahead); - } - } - if(isset($form->maxevents)) { - $maxevents = intval($form->maxevents); - if($maxevents > 0) { - set_config('calendar_maxevents', $maxevents); - } - } - redirect('index.php'); - } - - // Include the calendar library AFTER modifying the data, so we read the latest values - require_once($CFG->dirroot.'/calendar/lib.php'); - - // Populate some variables we 're going to need in calendar.html - $timezones = get_list_of_timezones(); - - $weekdays = array( - 0 => get_string('sunday', 'calendar'), - 1 => get_string('monday', 'calendar'), - 2 => get_string('tuesday', 'calendar'), - 3 => get_string('wednesday', 'calendar'), - 4 => get_string('thursday', 'calendar'), - 5 => get_string('friday', 'calendar'), - 6 => get_string('saturday', 'calendar') - ); - - // Main display starts here - - print_simple_box_start("center", "80%"); - include('./calendar.html'); - print_simple_box_end(); - - print_footer(); - -?> diff --git a/admin/config.html b/admin/config.html new file mode 100644 index 00000000000..0e3290a29cf --- /dev/null +++ b/admin/config.html @@ -0,0 +1,584 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

lang:

+ lang, "", "", ""); ?> + + +

langmenu:

+ langmenu, "", "", ""); + ?> + + +

langlist:

+ + + +

locale:

+ + + +

timezone:

timezone) > 13) { + $config->timezone = 99; + } + $timenow = time(); + + for ($tz = -26; $tz <= 26; $tz++) { + $zone = (float)$tz/2.0; + $usertime = $timenow + ($tz * 1800); + if ($tz == 0) { + $timezones["$zone"] = gmstrftime("%a, %I:%M %p", $usertime)." (GMT)"; + } else if ($tz < 0) { + $timezones["$zone"] = gmstrftime("%a, %I:%M %p", $usertime)." (GMT$zone)"; + } else { + $timezones["$zone"] = gmstrftime("%a, %I:%M %p", $usertime)." (GMT+$zone)"; + } + } + + choose_from_menu ($timezones, "timezone", $config->timezone, get_string("serverlocaltime"), "", "99"); + ?> + + +

country:

country, get_string("selectacountry"), "") ?> + + +

smtphosts:

+ + + +

smtpuser:

+ + + +

smtppass:

+ +

noreplyaddress:

+ + + +

gdversion:

+ + + +

htmleditor:

+ htmleditor, "", "", ""); + ?> + + +

maxeditingtime:

+ maxeditingtime, "", "", ""); + ?> + + +

longtimenosee:

+ longtimenosee, "", "", ""); + ?> + + +

deleteunconfirmed:

+ deleteunconfirmed, "", "", ""); + ?> + + +

loglifetime:

+ loglifetime, "", "", ""); + ?> + + +

displayloginfailures:

+ displayloginfailures,"","",""); + ?> + + +

notifyloginfailures:

+ notifyloginfailures,"","",""); + ?> + + +

notifyloginthreshold:

+ notifyloginthreshold,"","",""); + ?> + + +

sessiontimeout:

+ sessiontimeout, "", "", ""); + ?> + + +

sessioncookie:

+ + + +

zip:

+ + + +

unzip:

+ + + +

slasharguments:

+ slasharguments, "", "", ""); + ?> + + +

proxyhost:

+ + + +

proxyport:

+ +

debug:

+ debug, "", "", ""); + ?> + + +

framename:

+ framename)) { + $config->framename = "_top"; + } + ?> + + + +

secureforms:

+ secureforms, "", "", ""); + ?> + + +

teacherassignteachers:

+ teacherassignteachers, "", "", ""); + ?> + + +

allowunenroll:

+ allowunenroll, "", "", ""); + ?> + + +

maxbytes:

+ maxbytes, ""); + ?> + + +

fullnamedisplay:

+ fullnamedisplay, "", "", ""); + ?> + + +

extendedusernamechars:

+ extendedusernamechars, "", "", ""); + ?> + + +

autologinguests:

+ autologinguests, "", "", ""); + ?> + + +

forcelogin:

+ forcelogin, "", "", ""); + ?> + + +

forceloginforprofiles:

+ forceloginforprofiles, "", "", ""); + ?> + + +

opentogoogle:

+ opentogoogle, "", "", ""); + ?> + + +

enablerssfeeds:

+ enablerssfeeds, "", "", ""); + ?> + + You need to add XML support to your PHP installation."; + } + ?> +

digestmailtime:

+ digestmailtime, ""); + ?> + + +
+ ">
+ +
diff --git a/admin/config.php b/admin/config.php index f701ef20df4..1b03783883f 100644 --- a/admin/config.php +++ b/admin/config.php @@ -1,31 +1,26 @@ -id)) { // Additional identity check - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - } + if ($config = data_submitted($match)) { validate_form($config, $err); @@ -38,18 +33,18 @@ unset($conf); $conf->name = $name; $conf->value = $value; - if ($current = get_record('config', 'name', $name)) { + if ($current = get_record("config", "name", $name)) { $conf->id = $current->id; - if (! update_record('config', $conf)) { + if (! update_record("config", $conf)) { notify("Could not update $name to $value"); } } else { - if (! insert_record('config', $conf)) { + if (! insert_record("config", $conf)) { notify("Error: could not add new variable $name !"); } } } - redirect('index.php', get_string('changessaved'), 1); + redirect("index.php", get_string("changessaved"), 1); exit; } else { @@ -57,26 +52,23 @@ $focus = "form.$key"; } } - } + } /// Otherwise fill and print the form. if (empty($config)) { $config = $CFG; - if (!$config->locale = get_field('config', 'value', 'name', 'locale')) { + if (!$config->locale = get_field("config", "value", "name", "locale")) { $config->locale = $CFG->lang; } } if (empty($focus)) { - $focus = ''; + $focus = ""; } - $sesskey = !empty($USER->id) ? $USER->sesskey : ''; - - - $stradmin = get_string('administration'); - $strconfiguration = get_string('configuration'); - $strconfigvariables = get_string('configvariables', 'admin'); + $stradmin = get_string("administration"); + $strconfiguration = get_string("configuration"); + $strconfigvariables = get_string("configvariables"); if ($site) { print_header("$site->shortname: $strconfigvariables", $site->fullname, @@ -86,82 +78,14 @@ } else { print_header(); print_heading($strconfigvariables); - print_simple_box(get_string('configintro', 'admin'), 'center', "50%"); - echo '
'; + print_simple_box(get_string("configintro"), "center", "50%"); + echo "
"; } - - -/// Get all the configuration fields and helptext - include('configvars.php'); - -/// Cycle through the sections to get the sectionnames - $linktext = ''; - foreach($configvars as $sectionname=>$section) { - if ($linktext !== '') { - $linktext .= ' | '; - } - $linktext .= ''.get_string('configsection'.$sectionname, 'admin').''; - } - - echo "
$linktext
\n"; - - print_simple_box_start('center'); - - echo '
'; - -/// Cycle through each section of the configuration - foreach ($configvars as $sectionname=>$section) { - - print_heading(''.get_string('configsection'.$sectionname, 'admin')); - - $table = NULL; - $table->data = array(); - foreach ($section as $configvariable=>$configobject) { - $table->data[] = array ( $configvariable.': ', - $configobject->field - ); - if ($configobject->display_warning()) { - $table->data[] = array ( ' ', - ''.$configobject->warning.'' - ); - } - $table->data[] = array ( ' ', - ''.$configobject->help.'' - ); - $table->align = array ('right', 'left'); - } - print_table($table); - - } - echo '
'; - echo ''; - echo ''; - echo '
'; - - echo '
'; - + print_simple_box_start("center", "", "$THEME->cellheading"); + include("config.html"); print_simple_box_end(); - - - - /// Lock some options - - $httpsurl = str_replace('http://', 'https://', $CFG->wwwroot); - if ($httpsurl != $CFG->wwwroot) { - if (ini_get('allow_url_fopen')) { - if ((($fh = @fopen($httpsurl, 'r')) == false) and ($config->loginhttps == 0)) { - echo ''."\n"; - } - } - } - - if ($site) { print_footer(); } @@ -172,9 +96,11 @@ function validate_form(&$form, &$err) { - // Currently no checks are needed ... + // if (empty($form->fullname)) + // $err["fullname"] = get_string("missingsitename"); - return true; + return; } + ?> diff --git a/admin/configure.php b/admin/configure.php index e2d8a796cf1..f51b70fb59e 100644 --- a/admin/configure.php +++ b/admin/configure.php @@ -1,52 +1,49 @@ -shortname: $stradministration: $strconfiguration", "$site->fullname", - ''. "$stradministration -> $strconfiguration"); + "$stradministration -> $strconfiguration"); print_heading($strconfiguration); - $table->align = array ('right', 'left'); + $table->align = array ("right", "left"); - $table->data[] = array("". get_string('configvariables', 'admin') .'', - get_string('adminhelpconfigvariables')); - $table->data[] = array("". get_string('sitesettings') .'', - get_string('adminhelpsitesettings')); - $table->data[] = array("". get_string('themes') .'', - get_string('adminhelpthemes')); - $table->data[] = array("". get_string('language') .'', - get_string('adminhelplanguage')); - $table->data[] = array("".get_string('managemodules'). ' ', - get_string('adminhelpmanagemodules')); - $table->data[] = array("". get_string('manageblocks') .'', - get_string('adminhelpmanageblocks')); - $table->data[] = array("". get_string('managefilters') .'', - get_string('adminhelpmanagefilters')); + $table->data[] = array("".get_string("configvariables")."", + get_string("adminhelpconfigvariables")); + $table->data[] = array("".get_string("sitesettings")."", + get_string("adminhelpsitesettings")); + $table->data[] = array("".get_string("themes")."", + get_string("adminhelpthemes")); + $table->data[] = array("".get_string("language")."", + get_string("adminhelplanguage")); + $table->data[] = array("".get_string("managemodules")."", + get_string("adminhelpmanagemodules")); + $table->data[] = array("".get_string("manageblocks")."", + get_string("adminhelpmanageblocks")); + $table->data[] = array("".get_string("managefilters")."", + get_string("adminhelpmanagefilters")); if (!isset($CFG->disablescheduledbackups)) { - $table->data[] = array("".get_string("backup")."", - get_string('adminhelpbackup')); + $table->data[] = array("".get_string("backup")."", + get_string("adminhelpbackup")); } - $table->data[]= array("". get_string('editorsettings') ."", - get_string('adminhelpeditorsettings')); - $table->data[]= array("". get_string('calendarsettings', 'admin') ."", - get_string('helpcalendarsettings', 'admin')); - $table->data[]= array("". get_string('sitemaintenancemode', 'admin') ."", - get_string('helpsitemaintenance', 'admin')); + $table->data[]= array("". get_string("editorsettings") ."", + get_string("adminhelpeditorsettings")); + print_table($table); print_footer($site); diff --git a/admin/configvars.php b/admin/configvars.php deleted file mode 100644 index c457e9325a4..00000000000 --- a/admin/configvars.php +++ /dev/null @@ -1,477 +0,0 @@ -help = $help; - $this->field = $field; - $this->warning = $warning; - } - - function display_warning() { - return false; - } -} - - - - - -//////////////////////////////////////////////////////////////////// -/// Miscellaneous config variables -//////////////////////////////////////////////////////////////////// - $misc = array(); - - -/// maxeditingtime - unset($options); - $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); - - $misc['maxeditingtime'] = new configvar (get_string('configmaxeditingtime', 'admin'), - choose_from_menu ($options, 'maxeditingtime', $config->maxeditingtime, '', '', '', true) ); - -/// debug - unset($options); - $options[7] = $strno; - $options[15] = $stryes; - - $misc['debug'] = new configvar (get_string('configdebug', 'admin'), - choose_from_menu ($options, 'debug', $config->debug, '', '', '', true) ); - -/// enablerssfeeds -class configvarrss extends configvar { - function display_warning() { - return (!function_exists('utf8_encode')); - } -} - - $misc['enablerssfeeds'] = new configvarrss (get_string('configenablerssfeeds', 'admin'), - choose_from_menu ($noyesoptions, 'enablerssfeeds', $config->enablerssfeeds, '', '', '', true), - ' You need to add XML support to your PHP installation.' ); - - - - -//////////////////////////////////////////////////////////////////// -/// OPERATING SYSTEM config variables -//////////////////////////////////////////////////////////////////// - $operatingsystem = array(); - -/// gdversion - unset($options); - $options[0] = get_string('gdnot'); - $options[1] = get_string('gd1'); - $options[2] = get_string('gd2'); - - $installed = check_gd_version(); - - $operatingsystem['gdversion'] = new configvar (get_string('configgdversion', 'admin'), - choose_from_menu ($options, 'gdversion', $installed, '', '', '', true) ); - -/// dbsessions - $operatingsystem['dbsessions'] = new configvar (get_string('configdbsessions', 'admin'), - choose_from_menu ($noyesoptions, 'dbsessions', $config->dbsessions, '', '', '', true) ); - -/// sessiontimeout - unset($options); - $options[14400] = get_string('numhours', '', 4); - $options[10800] = get_string('numhours', '', 3); - $options[7200] = get_string('numhours', '', 2); - $options[5400] = get_string('numhours', '', '1.5'); - $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); - - $operatingsystem['sessiontimeout'] = new configvar (get_string('configsessiontimeout', 'admin'), - choose_from_menu ($options, 'sessiontimeout', $config->sessiontimeout, '', '', '', true) ); - -/// sessioncookie - $operatingsystem['sessioncookie'] = new configvar (get_string('configsessioncookie', 'admin'), - '' ); - -/// zip - $operatingsystem['zip'] = new configvar (get_string('configzip', 'admin'), - '' ); - -/// unzip - $operatingsystem['unzip'] = new configvar (get_string('configunzip', 'admin'), - '' ); - -/// slasharguments - unset($options); - $options[0] = "file.php?file=/pic.jpg"; - $options[1] = "file.php/pic.jpg"; - - $operatingsystem['slasharguments'] = new configvar (get_string('configslasharguments', 'admin'), - choose_from_menu ($options, 'slasharguments', $config->slasharguments, '', '', '', true) ); - -/// proxyhost - $operatingsystem['proxyhost'] = new configvar (get_string('configproxyhost', 'admin'), - '' ); - -/// proxyport - $operatingsystem['proxyport'] = new configvar ('', - '' ); - - - -//////////////////////////////////////////////////////////////////// -/// PERMISSIONS config variables -//////////////////////////////////////////////////////////////////// - $permissions = array(); - -/// teacherassignteachers - $permissions['teacherassignteachers'] = new configvar (get_string('configteacherassignteachers', 'admin'), - choose_from_menu ($noyesoptions, 'teacherassignteachers', $config->teacherassignteachers, '', '', '', true) ); - -/// allowunenroll - $permissions['allowunenroll'] = new configvar (get_string('configallowunenroll', 'admin'), - choose_from_menu ($noyesoptions, 'allowunenroll', $config->allowunenroll, '', '', '', true) ); - -/// allusersaresitestudents - $permissions['allusersaresitestudents'] = new configvar (get_string('configallusersaresitestudents', 'admin'), - choose_from_menu ($noyesoptions, 'allusersaresitestudents', $config->allusersaresitestudents, '', '', '', true) ); - -/// showsiteparticipantslist - unset($options); - $options[0] = get_string('siteteachers'); - $options[1] = get_string('allteachers'); - $options[2] = get_string('studentsandteachers'); - - $permissions['showsiteparticipantslist'] = new configvar (get_string('configshowsiteparticipantslist', 'admin'), - choose_from_menu ($options, 'showsiteparticipantslist', $config->showsiteparticipantslist, '', '', '', true) ); - -/// forcelogin - $permissions['forcelogin'] = new configvar (get_string('configforcelogin', 'admin'), - choose_from_menu ($noyesoptions, 'forcelogin', $config->forcelogin, '', '', '', true) ); - -/// forceloginforprofiles - $permissions['forceloginforprofiles'] = new configvar (get_string('configforceloginforprofiles', 'admin'), - choose_from_menu ($noyesoptions, 'forceloginforprofiles', $config->forceloginforprofiles, '', '', '', true) ); - -/// opentogoogle - $permissions['opentogoogle'] = new configvar (get_string('configopentogoogle', 'admin'), - choose_from_menu ($noyesoptions, 'opentogoogle', $config->opentogoogle, '', '', '', true) ); - -/// maxbytes - $options = get_max_upload_sizes(); - - $permissions['maxbytes'] = new configvar (get_string('configmaxbytes', 'admin'), - choose_from_menu ($options, 'maxbytes', $config->maxbytes, '', '', 0, true) ); - -/// messaging - $permissions['messaging'] = new configvar (get_string('configmessaging', 'admin'), - choose_from_menu ($noyesoptions, 'messaging', $config->messaging, '', '', '', true) ); - - - -//////////////////////////////////////////////////////////////////// -/// INTERFACE config variables -//////////////////////////////////////////////////////////////////// - $interface = array(); - -/// language settings - $interface['lang'] = new configvar ( get_string('configlang', 'admin'), - choose_from_menu(get_list_of_languages(), 'lang', $config->lang, '', '', '', true) ); - -/// language menu - $interface['langmenu'] = new configvar ( get_string('configlangmenu', 'admin'), - choose_from_menu($noyesoptions, 'langmenu', $config->langmenu, '', '', '', true) ); - -/// language list - $interface['langlist'] = new configvar ( get_string('configlanglist', 'admin'), - '' ); - -/// locale - $interface['locale'] = new configvar ( get_string('configlocale', 'admin'), - '' ); - -/// timezone - - $interface['timezone'] = new configvar ( get_string('configtimezone', 'admin'), - choose_from_menu (get_list_of_timezones(), 'timezone', $config->timezone, get_string('serverlocaltime'), '', '99', true ) ); - -/// country - $interface['country'] = new configvar ( get_string('configcountry', 'admin'), - choose_from_menu (get_list_of_countries(), 'country', $config->country, get_string('selectacountry'), '', 0, true) ); - -/// framename - if (empty($config->framename)) { - $config->framename = "_top"; - } - - $interface['framename'] = new configvar (get_string('configframename', 'admin'), - '' ); - -/// language list - $interface['themelist'] = new configvar ( get_string('configthemelist', 'admin'), - '' ); - -/// user themes - $interface['allowuserthemes'] = new configvar (get_string('configallowuserthemes', 'admin'), - choose_from_menu ($noyesoptions, 'allowuserthemes', $config->allowuserthemes, '', '', '', true) ); - -/// course themes - $interface['allowcoursethemes'] = new configvar (get_string('configallowcoursethemes', 'admin'), - choose_from_menu ($noyesoptions, 'allowcoursethemes', $config->allowcoursethemes, '', '', '', true) ); - -/// allowuserblockhiding - $interface['allowuserblockhiding'] = new configvar (get_string('configallowuserblockhiding', 'admin'), - choose_from_menu ($noyesoptions, 'allowuserblockhiding', $config->allowuserblockhiding, '', '', '', true) ); - -/// showblocksonmodpages - $interface['showblocksonmodpages'] = new configvar (get_string('configshowblocksonmodpages', 'admin'), - choose_from_menu ($noyesoptions, 'showblocksonmodpages', $config->showblocksonmodpages, '', '', '', true) ); - - -/// tabselectedtofront - $interface['tabselectedtofront'] = new configvar (get_string('tabselectedtofront', 'admin'), - choose_from_menu ($noyesoptions, 'tabselectedtofront', $config->tabselectedtofront, '', '', '', true) ); - - - -//////////////////////////////////////////////////////////////////// -/// USER config variables -//////////////////////////////////////////////////////////////////// - $user = array(); - -/// sitepolicy - $user['sitepolicy'] = new configvar (get_string('configsitepolicy', 'admin'), - '' ); - - -/// fullnamedisplay - unset($options); - $options['language'] = get_string('language'); - $options['firstname lastname'] = get_string('firstname') . ' + ' . get_string('lastname'); - $options['lastname firstname'] = get_string('lastname') . ' + ' . get_string('firstname'); - $options['firstname'] = get_string('firstname'); - - $user['fullnamedisplay'] = new configvar (get_string('configfullnamedisplay', 'admin'), - choose_from_menu ($options, 'fullnamedisplay', $config->fullnamedisplay, '', '', '', true) ); - -/// extendedusernamechars - $user['extendedusernamechars'] = new configvar (get_string('configextendedusernamechars', 'admin'), - choose_from_menu ($noyesoptions, 'extendedusernamechars', $config->extendedusernamechars, '', '', '', true) ); - -/// autologinguests - $user['autologinguests'] = new configvar (get_string('configautologinguests', 'admin'), - choose_from_menu ($noyesoptions, 'autologinguests', $config->autologinguests, '', '', '', true) ); - - - - - -//////////////////////////////////////////////////////////////////// -/// SECURITY config variables -//////////////////////////////////////////////////////////////////// - $security = array(); - -/// displayloginfailures - unset($options); - $options[''] = get_string('nobody'); - $options['admin'] = get_string('administrators'); - $options['teacher'] = get_string('administratorsandteachers'); - $options['everybody'] = get_string('everybody'); - - $security['displayloginfailures'] = new configvar (get_string('configdisplayloginfailures', 'admin'), - choose_from_menu($options, 'displayloginfailures', $config->displayloginfailures, '', '', '', true) ); - -/// notifyloginfailures - unset($options); - $options[''] = get_string('nobody'); - $options['mainadmin'] = get_string('administrator'); - $options['alladmins'] = get_string('administratorsall'); - - $security['notifyloginfailures'] = new configvar (get_string('confignotifyloginfailures', 'admin'), - choose_from_menu($options, 'notifyloginfailures', $config->notifyloginfailures, '', '', '', true) ); - -/// notifyloginthreshold - unset($options); - for ($i=1; $i<=100; $i++) { - $options[$i] = "$i"; - } - - $security['notifyloginthreshold'] = new configvar (get_string('confignotifyloginthreshold', 'admin'), - choose_from_menu($options, 'notifyloginthreshold', $config->notifyloginthreshold, '', '', '', true) ); - -/// secureforms - $security['secureforms'] = new configvar (get_string('configsecureforms', 'admin'), - choose_from_menu ($noyesoptions, 'secureforms', $config->secureforms, '', '', '', true) ); - -/// loginhttps - $security['loginhttps'] = new configvar (get_string('configloginhttps', 'admin'), - choose_from_menu ($noyesoptions, 'loginhttps', $config->loginhttps, '', '', '', true) ); - -/// runclamonupload - $security['runclamonupload'] = new configvar (get_string('configrunclamonupload', 'admin'), - choose_from_menu($noyesoptions, 'runclamonupload', $config->runclamonupload, '', '', '', true) ); - -/// pathtoclam - $security['pathtoclam'] = new configvar (get_string('configpathtoclam', 'admin'), - '' ); - -/// quarantinedir - $security['quarantinedir'] = new configvar (get_string('configquarantinedir', 'admin'), - '' ); - -/// clamfailureonupload - unset($options); - $options['donothing'] = get_string('configclamdonothing', 'admin'); - $options['actlikevirus'] = get_string('configclamactlikevirus', 'admin'); - - $security['clamfailureonupload'] = new configvar (get_string('configclamfailureonupload', 'admin'), - choose_from_menu($options, 'clamfailureonupload', $config->clamfailureonupload, '', '', '', true) ); - - - - -//////////////////////////////////////////////////////////////////// -/// MAINTENANCE config variables -//////////////////////////////////////////////////////////////////// - $maintenance = array(); - -/// longtimenosee - unset($options); - $options[0] = get_string('never'); - $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[21] = get_string('numdays', '', 21); - $options[14] = get_string('numdays', '', 14); - $options[7] = get_string('numdays', '', 7); - - $maintenance['longtimenosee'] = new configvar (get_string('configlongtimenosee', 'admin'), - choose_from_menu ($options, 'longtimenosee', $config->longtimenosee, '', '', '', true) ); - -/// deleteunconfirmed - unset($options); - $options[0] = get_string('never'); - $options[168] = get_string('numdays', '', 7); - $options[144] = get_string('numdays', '', 6); - $options[120] = get_string('numdays', '', 5); - $options[96] = get_string('numdays', '', 4); - $options[72] = get_string('numdays', '', 3); - $options[48] = get_string('numdays', '', 2); - $options[24] = get_string('numdays', '', 1); - $options[12] = get_string('numhours', '', 12); - $options[6] = get_string('numhours', '', 6); - $options[1] = get_string('numhours', '', 1); - - $maintenance['deleteunconfirmed'] = new configvar (get_string('configdeleteunconfirmed', 'admin'), - choose_from_menu ($options, 'deleteunconfirmed', $config->deleteunconfirmed, '', '', '', true) ); - -/// loglifetime - unset($options); - $options[0] = get_string('neverdeletelogs'); - $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); - - $maintenance['loglifetime'] = new configvar (get_string('configloglifetime', 'admin'), - choose_from_menu ($options, 'loglifetime', $config->loglifetime, '', '', '', true) ); - - -//////////////////////////////////////////////////////////////////// -/// MAIL config variables -//////////////////////////////////////////////////////////////////// - $mail = array(); - -/// smtphosts - $mail['smtphosts'] = new configvar (get_string('configsmtphosts', 'admin'), - '' ); - -/// smtpuser - $mail['smtpuser'] = new configvar (get_string('configsmtpuser', 'admin'), - '' ); - -/// smtppass - $mail['smtppass'] = new configvar ('', - '' ); - -/// noreplyaddress - $mail['noreplyaddress'] = new configvar (get_string('confignoreplyaddress', 'admin'), - '' ); - -/// digestmailtime - $hours = array(); - for ($i=0; $i<=23; $i++) { - $hours[$i] = sprintf("%02d",$i); - } - - $mail['digestmailtime'] = new configvar (get_string('configdigestmailtime', 'admin'), - choose_from_menu($hours, 'digestmailtime', $config->digestmailtime, '', '', 0, true) ); - -/// allowemailaddresses - $mail['allowemailaddresses'] = new configvar (get_string('configallowemailaddresses', 'admin'), - '' ); - -/// denyemailaddresses - $mail['denyemailaddresses'] = new configvar (get_string('configdenyemailaddresses', 'admin'), - '' ); - - - - - - -//////////////////////////////////////////////////////////////////// - - $configvars['interface'] = $interface; - $configvars['security'] = $security; - $configvars['operatingsystem'] = $operatingsystem; - $configvars['maintenance'] = $maintenance; - $configvars['mail'] = $mail; - $configvars['user'] = $user; - $configvars['permissions'] = $permissions; - $configvars['misc'] = $misc; - -?> diff --git a/admin/creators.html b/admin/creators.html index c551fd5b642..2acbba68a95 100644 --- a/admin/creators.html +++ b/admin/creators.html @@ -1,7 +1,6 @@
-
@@ -56,7 +55,7 @@ ?>
- 0 GROUP BY course, userid ". + "HAVING count(*) > 1", "", "*,count(*)")) { + foreach ($users as $user) { + delete_records_select("user_students", "userid = '$user->userid' ". + "AND course = '$user->course' AND id <> '$user->id'"); + } + } + flush(); + + /// Delete old logs to save space (this might need a timer to slow it down...) if (!empty($CFG->loglifetime)) { // value in days @@ -118,18 +128,11 @@ } flush(); - if (!empty($CFG->langcache)) { - get_list_of_languages(); - } - flush(); - if (!empty($CFG->notifyloginfailures)) { notify_login_failures(); } flush(); - sync_metacourses(); - } // End of occasional clean-up tasks if (file_exists("$CFG->dataroot/cronextra.php")) { @@ -141,7 +144,7 @@ //Execute backup's cron //Perhaps a long time and memory could help in large sites @set_time_limit(0); - raise_memory_limit("128M"); + ini_set("memory_limit","56M"); if (file_exists("$CFG->dirroot/backup/backup_scheduled.php") and file_exists("$CFG->dirroot/backup/backuplib.php") and file_exists("$CFG->dirroot/backup/lib.php") and @@ -161,13 +164,15 @@ } if (!empty($CFG->enablerssfeeds)) { //Defined in admin/variables page - include_once("$CFG->libdir/rsslib.php"); - mtrace("Running rssfeeds if required..."); + if (file_exists("$CFG->dirroot/rss/rsslib.php")) { + include_once("$CFG->dirroot/rss/rsslib.php"); + mtrace("Running rssfeeds if required..."); - if ( ! cron_rss_feeds()) { - mtrace("Something went wrong while generating rssfeeds!!!"); - } else { - mtrace("Rssfeeds finished"); + if ( ! cron_rss_feeds()) { + mtrace("Something went wrong while generating rssfeeds!!!"); + } else { + mtrace("Rssfeeds finished"); + } } } diff --git a/admin/delete.php b/admin/delete.php index 37d9979a576..ca1988a3f02 100644 --- a/admin/delete.php +++ b/admin/delete.php @@ -3,23 +3,23 @@ // Deletes the moodledata directory, COMPLETELY!! // BE VERY CAREFUL USING THIS! - require_once('../config.php'); + require_once("../config.php"); require_login(); if (!isadmin()) { - error('You must be admin to use this script!'); + 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'); + 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'); + 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; } @@ -27,7 +27,7 @@ delete_subdirectories($deletedir); - echo '

Done!

'; + echo "

Done!

"; print_continue($CFG->wwwroot); exit; @@ -37,22 +37,22 @@ function delete_subdirectories($rootdir) { $dir = opendir($rootdir); while ($file = readdir($dir)) { - if ($file != '.' and $file != '..') { - $fullfile = $rootdir .'/'. $file; - if (filetype($fullfile) == 'dir') { + if ($file != "." and $file != "..") { + $fullfile = "$rootdir/$file"; + if (filetype($fullfile) == "dir") { delete_subdirectories($fullfile); - echo 'Deleting '. $fullfile .' ... '; + echo "Deleting $fullfile ... "; if (rmdir($fullfile)) { - echo 'Done.
'; + echo "Done.
"; } else { - echo 'FAILED.
'; + echo "FAILED.
"; } } else { - echo 'Deleting '. $fullfile .' ... '; - if (unlink($fullfile)) { - echo 'Done.
'; + echo "Deleting $fullfile ... "; + if (unlink("$fullfile")) { + echo "Done.
"; } else { - echo 'FAILED.
'; + echo "FAILED.
"; } } } @@ -60,4 +60,4 @@ function delete_subdirectories($rootdir) { closedir($dir); } -?> \ No newline at end of file +?> diff --git a/admin/editor.html b/admin/editor.html index 57a02455270..65cfba97192 100644 --- a/admin/editor.html +++ b/admin/editor.html @@ -1,237 +1,60 @@ - - + + - - - - - - - + + - - + + - - + + - + - - - - - - - + + + + - + + $fontvalue) { + foreach($fontlist as $fontkey => $fontvalue) { ?> - - + + - - + + - - - - - +
htmleditor: - htmleditor, "", "", ""); - ?> - - -
editorbackgroundcolor::
editorfontfamily::
editorfontsize::
editorkillword::
aspellpath:
editorspelling:: - -

  -
  -
editorhidebuttons: - editorhidebuttons)) { - $buttons = explode(chr(32), $CFG->editorhidebuttons); - } - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/> - /> - />
<?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" />
/> /> /> /> /> /> /> /> /> /> /> />
<?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" />
/> /> /> /> /> /> /> /> /> /> /> />
<?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /><?php print_string(" title="" /> 
/> /> /> /> /> /> /> /> /> /> /> 
-
" />">
- - -
- -
- -
-
- + \ No newline at end of file diff --git a/admin/editor.php b/admin/editor.php index 6bf2fb8c53d..9fae276cbe3 100644 --- a/admin/editor.php +++ b/admin/editor.php @@ -8,18 +8,10 @@ error("Only admins can access this page"); } - if (($data = data_submitted()) && confirm_sesskey()) { + if($data = data_submitted()) { - // do we want default values? - if (isset($data->resettodefaults)) { - if (!(reset_to_defaults())) { - error("Editor settings could not be restored!"); - } - } else { - - if (!(editor_update_config($data))) { - error("Editor settings could not be updated!"); - } + if(!(editor_update_config($data))) { + error("Editor settings could not be updated!"); } redirect("$CFG->wwwroot/$CFG->admin/editor.php", get_string("changessaved"), 1); @@ -27,7 +19,6 @@ // Generate edit form $fontlist = editor_convert_to_array($CFG->editorfontlist); - $dicts = editor_get_dictionaries(); $stradmin = get_string("administration"); $strconfiguration = get_string("configuration"); @@ -39,7 +30,7 @@ print_heading($streditorsettings); print_simple_box("
$streditorsettingshelp
","center","50%"); print("
\n"); - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); include("editor.html"); print_simple_box_end(); print_footer(); @@ -51,14 +42,14 @@ function editor_convert_to_array ($string) { /// Converts $CFG->editorfontlist to array - if (empty($string) || !is_string($string)) { + if(empty($string) || !is_string($string)) { return false; } $fonts = array(); $lines = explode(";", $string); - foreach ($lines as $line) { - if (!empty($line)) { + foreach($lines as $line) { + if(!empty($line)) { list($fontkey, $fontvalue) = explode(":", $line); $fonts[$fontkey] = $fontvalue; } @@ -68,29 +59,17 @@ function editor_convert_to_array ($string) { } function editor_update_config ($data) { - /// Updates the editor config values. - if (!is_object($data)) { + if(!is_object($data)) { return false; } - // Make array for unwanted characters. - $nochars = array(chr(33),chr(34),chr(35),chr(36),chr(37), - chr(38),chr(39),chr(40),chr(41),chr(42), - chr(43),chr(46),chr(47),chr(58),chr(59), - chr(60),chr(61),chr(62),chr(63),chr(64), - chr(91),chr(92),chr(93),chr(94),chr(95), - chr(96),chr(123),chr(124),chr(125),chr(126)); - - $fontlist = ''; - // make font string - $cnt = count($data->fontname); - for ($i = 0; $i < $cnt; $i++) { - if (!empty($data->fontname[$i])) { - $fontlist .= str_replace($nochars, "", $data->fontname[$i]) .":"; - $fontlist .= str_replace($nochars, "", $data->fontnamevalue[$i]) .";"; + for($i = 0; $i < count($data->fontname); $i++) { + if(!empty($data->fontname[$i])) { + $fontlist .= $data->fontname[$i] .":"; + $fontlist .= $data->fontnamevalue[$i] .";"; } } // strip last semicolon @@ -98,117 +77,19 @@ function editor_update_config ($data) { // make array of values to update $updatedata = array(); - $updatedata['htmleditor'] = !empty($data->htmleditor) ? $data->htmleditor : 0; - $updatedata['editorbackgroundcolor'] = !empty($data->backgroundcolor) ? $data->backgroundcolor : "#ffffff"; - $updatedata['editorfontfamily'] = !empty($data->fontfamily) ? str_replace($nochars,"",$data->fontfamily) : "Times New Roman, Times"; - $updatedata['editorfontsize'] = !empty($data->fontsize) ? $data->fontsize : ""; - $updatedata['editorkillword'] = !empty($data->killword) ? $data->killword : "true"; - $updatedata['editorspelling'] = !empty($data->spelling) ? $data->spelling : 0; + $updatedata['editorbackgroundcolor'] = $data->backgroundcolor; + $updatedata['editorfontfamily'] = $data->fontfamily; + $updatedata['editorfontsize'] = $data->fontsize; + $updatedata['editorkillword'] = $data->killword; + $updatedata['editorspelling'] = $data->spelling; $updatedata['editorfontlist'] = $fontlist; - $updatedata['editordictionary'] = !empty($data->dictionary) ? $data->dictionary : ''; - $updatedata['aspellpath'] = !empty($data->aspellpath) ? $data->aspellpath : ''; - $hidebuttons = ''; - if (!empty($data->buttons) && is_array($data->buttons)) { - foreach ($data->buttons as $key => $value) { - $hidebuttons .= $key . " "; - } - } - $updatedata['editorhidebuttons'] = trim($hidebuttons); - - foreach ($updatedata as $name => $value) { - if (!(set_config($name, $value))) { + foreach($updatedata as $name => $value) { + if(!(set_config($name, $value))) { return false; } } return true; } - -function reset_to_defaults () { -/// Reset the values to default - - global $CFG; - include_once($CFG->dirroot .'/lib/defaults.php'); - - $updatedata = array(); - - $updatedata['editorbackgroundcolor'] = $defaults['editorbackgroundcolor']; - $updatedata['editorfontfamily'] = $defaults['editorfontfamily']; - $updatedata['editorfontsize'] = $defaults['editorfontsize']; - $updatedata['editorkillword'] = $defaults['editorkillword']; - $updatedata['editorspelling'] = $defaults['editorspelling']; - $updatedata['editorfontlist'] = $defaults['editorfontlist']; - $updatedata['editorhidebuttons'] = $defaults['editorhidebuttons']; - $updatedata['editordictionary'] = ''; - - foreach ($updatedata as $name => $value) { - if (!(set_config($name, $value))) { - return false; - } - } - return true; -} - -function editor_get_dictionaries () { -/// Get all installed dictionaries in the system - - global $CFG; - - error_reporting(E_ALL); // for debug, final version shouldn't have this... - clearstatcache(); - - $strerror = ''; - - // If aspellpath isn't set don't even bother ;-) - if (empty($CFG->aspellpath)) { - return $strerror = 'Empty aspell path!'; - } - - // Do we have access to popen function? - if (!function_exists('popen')) { - return $strerror = "Popen function disabled!"; - exit; - } - - global $CFG; - - $cmd = $CFG->aspellpath; - $output = ''; - $dictionaries = array(); - $dicts = array(); - - if(!($handle = @popen($cmd .' dump dicts', 'r'))) { - return $strerror = "Couldn't create handle!"; - exit; - } - - while(!feof($handle)) { - $output .= fread($handle, 1024); - } - @pclose($handle); - - $dictionaries = explode(chr(10), $output); - - // Get rid of possible empty values - if (is_array($dictionaries)) { - - $cnt = count($dictionaries); - - for ($i = 0; $i < $cnt; $i++) { - if (!empty($dictionaries[$i])) { - $dicts[] = $dictionaries[$i]; - } - } - } - - if (count($dicts) >= 1) { - return $dicts; - } - - $strerror = "Error! Check your aspell installation!"; - return $strerror; - -} - -?> +?> \ No newline at end of file diff --git a/admin/enrol.php b/admin/enrol.php index 81a9d8bb9be..c43986c1104 100644 --- a/admin/enrol.php +++ b/admin/enrol.php @@ -3,10 +3,8 @@ // Yes, enrol is correct English spelling. include("../config.php"); - - $enrol = optional_param('enrol', $CFG->enrol, PARAM_ALPHA); - require_login(); + optional_variable($enrol, $CFG->enrol); if (!$site = get_site()) { redirect("index.php"); @@ -16,10 +14,6 @@ error("Only the admin can use this page"); } - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - require_once("$CFG->dirroot/enrol/$enrol/enrol.php"); /// Open the class $enrolment = new enrolment_plugin(); @@ -30,7 +24,7 @@ if ($frm = data_submitted()) { if ($enrolment->process_config($frm)) { set_config('enrol', $frm->enrol); - redirect("enrol.php?sesskey=$USER->sesskey", get_string("changessaved"), 1); + redirect("enrol.php", get_string("changessaved"), 1); } } else { $frm = $CFG; @@ -53,26 +47,25 @@ $str->users -> $str->enrolments"); echo "
framename}\" name=\"enrolmenu\" method=\"post\" action=\"enrol.php\">"; - echo "sesskey."\">"; echo "

"; /// Choose an enrolment method echo get_string('chooseenrolmethod').': '; choose_from_menu ($options, "enrol", $enrol, "", - "document.location='enrol.php?sesskey=$USER->sesskey&enrol='+document.enrolmenu.enrol.options[document.enrolmenu.enrol.selectedIndex].value", ""); + "document.location='enrol.php?enrol='+document.enrolmenu.enrol.options[document.enrolmenu.enrol.selectedIndex].value", ""); echo "

"; /// Print current enrolment type description - print_simple_box_start("center", "80%"); + print_simple_box_start("center", "80%", "$THEME->cellheading"); print_heading($options[$enrol]); - print_simple_box_start("center", "60%", '', 5, 'informationbox'); + print_simple_box_start("center", "60%", "$THEME->cellcontent"); print_string("description", "enrol_$enrol"); print_simple_box_end(); - echo "
"; + echo "
"; // print_heading($str->settings); $enrolment->config_form($frm); diff --git a/admin/filters.html b/admin/filters.html index 6828871beb9..5f7f10fe5a1 100644 --- a/admin/filters.html +++ b/admin/filters.html @@ -1,7 +1,6 @@ - +cellheading"); ?> -
@@ -78,20 +77,16 @@
- +cellheading"); ?> - - + - + - - - - - - + diff --git a/admin/filters.php b/admin/filters.php index 0045ff700e4..7c9da07d772 100644 --- a/admin/filters.php +++ b/admin/filters.php @@ -32,11 +32,9 @@ $stractive = get_string("active"); $strinactive = get_string("inactive"); $strcachetext = get_string("cachetext", "admin"); - $strconfigcachetext = get_string("configcachetext", 'admin'); + $strconfigcachetext = get_string("configcachetext"); $strfilteruploadedfiles = get_string("filteruploadedfiles", "admin"); - $strfilterall = get_string("filterall", "admin"); - $strconfigfilteruploadedfiles = get_string("configfilteruploadedfiles", 'admin'); - $strconfigfilterall = get_string("configfilterall", "admin"); + $strconfigfilteruploadedfiles = get_string("configfilteruploadedfiles"); print_header("$site->shortname: $strmanagefilters", "$site->fullname", "$stradministration -> ". @@ -84,23 +82,22 @@ /// If data submitted, then process and store. if (!empty($options)) { - if (($config = data_submitted()) && confirm_sesskey()) { + if ($config = data_submitted()) { unset($config->options); - unset($config->sesskey); foreach ($config as $name => $value) { set_config($name, $value); } } } - if (!empty($add) and !empty($uselect) and confirm_sesskey()) { + if (!empty($add) and !empty($uselect)) { $selectedfilter = $uselect; if (!in_array($selectedfilter, $installedfilters)) { $installedfilters[] = $selectedfilter; set_config("textfilters", implode(',', $installedfilters)); } - } else if (!empty($remove) and !empty($iselect) and confirm_sesskey()) { + } else if (!empty($remove) and !empty($iselect)) { $selectedfilter = $iselect; foreach ($installedfilters as $key => $installedfilter) { if ($installedfilter == $selectedfilter) { @@ -109,7 +106,7 @@ } set_config("textfilters", implode(',', $installedfilters)); - } else if ((!empty($up) or !empty($down)) and !empty($iselect) and confirm_sesskey()) { + } else if ((!empty($up) or !empty($down)) and !empty($iselect)) { if (!empty($up)) { if ($allfilters[$iselect]) { diff --git a/admin/handlevirus.php b/admin/handlevirus.php deleted file mode 100644 index 5d4b022b5cf..00000000000 --- a/admin/handlevirus.php +++ /dev/null @@ -1,117 +0,0 @@ - 2>&1 | php -d error_log=/path/to/log thisfile.php - * also it's important that the output of clamscan prints the FULL PATH to each infected file, so use absolute paths for area to scan - * also it should be run as root, or whatever the webserver runs as so that it has the right permissions in the quarantine dir etc. - * php -d error_log=/path/to/log thisfile.php will override the default error log for php cli, which is stderr, so if you want this script to just print stuff out, use php thisfile.php instead. - */ - - -$fd = fopen('php://stdin','r'); -if (!$fd) { - exit(); -} - -$FULLME='cron'; -require_once(dirname(dirname(__FILE__)).'/config.php'); -require_once($CFG->dirroot.'/lib/uploadlib.php'); // contains virus handling stuff. - -$site = get_site(); - -while(!feof($fd)) { - $entry = fgets($fd); - if (strlen(trim($entry)) == 0) { - continue; - } - if (!$file = validate_line($entry)) { - continue; - } - $bits = explode('/',$file); - $a->filename = $bits[count($bits)-1]; - - if (!$log = get_record("log","module","upload","info",$file,"action","upload")) { - $a->action = clam_handle_infected_file($file,0,false); - clam_replace_infected_file($file); - notify_admins_unknown($file,$a); - continue; - } - $action = clam_handle_infected_file($file,$log->userid,true); - clam_replace_infected_file($file); - - $user = get_record("user","id",$log->userid); - $course = get_record("course","id",$log->course); - $subject = get_string('virusfoundsubject','moodle',$site->fullname); - $a->date = userdate($log->time); - - $a->action = $action; - $a->course = $course->fullname; - $a->user = fullname($user); - - notify_user($user,$subject,$a); - notify_admins($user,$subject,$a); -} -fclose($fd); - - -function notify_user($user,$subject,$a) { - - if (!$user) { - return false; - } - $body = get_string('virusfoundlater','moodle',$a); - email_to_user($user,get_admin(),$subject,$body); -} - - -function notify_admins($user,$subject,$a) { - - $admins = get_admins(); - - $body = get_string('virusfoundlateradmin','moodle',$a); - foreach ($admins as $admin) { - email_to_user($admin,$admin,$subject,$body); - } -} - -function notify_admins_unknown($file,$a) { - - global $site; - - $admins = get_admins(); - $subject = get_string('virusfoundsubject','moodle',$site->fullname); - $body = get_string('virusfoundlateradminnolog','moodle',$a); - foreach ($admins as $admin) { - email_to_user($admin,$admin,$subject,$body); - } -} - -function validate_line($line) { - global $CFG; - if (strpos($line,"FOUND") === false) { - return false; - } - $index = strpos($line,":"); - $file = substr($line,0,$index); - if (!(strpos($file,$CFG->dataroot) === false)) { - if (!file_exists($file)) { - return false; - } - } - else { - if ($file{0} == "/") { - $file = $CFG->dataroot.$file; - } - else { - $file = $CFG->dataroot."/".$file; - } - if (!file_exists($file)) { - return false; - } - } - // clean up - $file = preg_replace('/\.\//','/',$file); - $file = preg_replace('/\/\//','/',$file); - return $file; -} - -?> diff --git a/admin/health.php b/admin/health.php deleted file mode 100644 index 20872918bb8..00000000000 --- a/admin/health.php +++ /dev/null @@ -1,508 +0,0 @@ -shortname.': '.$strhealthcenter, $site->fullname, - ''.$stradmin.' -> '.$strhealthcenter); - -echo << -div#healthnoproblemsfound { - width: 60%; - margin: auto; - padding: 1em; - border: 1px black solid; - -moz-border-radius: 6px; -} -dl.healthissues { - width: 60%; - margin: auto; -} -dl.critical dt, dl.critical dd { - background-color: #a71501; -} -dl.significant dt, dl.significant dd { - background-color: #d36707; -} -dl.annoyance dt, dl.annoyance dd { - background-color: #dba707; -} -dl.notice dt, dl.notice dd { - background-color: #e5db36; -} -dt.solution, dd.solution, div#healthnoproblemsfound { - background-color: #5BB83E !important; -} -dl.healthissues dt, dl.healthissues dd { - margin: 0px; - padding: 1em; - border: 1px black solid; -} -dl.healthissues dt { - font-weight: bold; - border-bottom: none; - padding-bottom: 0.5em; -} -dl.healthissues dd { - border-top: none; - padding-top: 0.5em; - margin-bottom: 10px; -} -dl.healthissues dd form { - margin-top: 0.5em; - text-align: right; -} -form#healthformreturn { - text-align: center; - margin: 2em; -} -dd.solution p { - padding: 0px; - margin: 1em 0px; -} -dd.solution li { - margin-top: 1em; -} - - -STYLES; - - $solution = optional_param('solution', NULL); - - if(!empty($solution) && class_exists($solution)) { - health_print_solution($solution); - } - else { - health_find_problems(); - } - - - print_footer(); - - -function health_find_problems() { - - print_heading(get_string('healthcenter')); - - $issues = array( - SEVERITY_CRITICAL => array(), - SEVERITY_SIGNIFICANT => array(), - SEVERITY_ANNOYANCE => array(), - SEVERITY_NOTICE => array(), - ); - $problems = 0; - - for($i = 1; $i < 1000000; ++$i) { - $classname = sprintf('problem_%06d', $i); - if(!class_exists($classname)) { - break; - } - $problem = new $classname; - if($problem->exists()) { - $severity = $problem->severity(); - $issues[$severity][$classname] = array( - 'severity' => $severity, - 'description' => $problem->description(), - 'title' => $problem->title() - ); - ++$problems; - } - unset($problem); - } - - if($problems == 0) { - echo '
'; - echo get_string('healthnoproblemsfound'); - echo '
'; - } - else { - print_heading(get_string('healthproblemsdetected')); - $severities = array(SEVERITY_CRITICAL, SEVERITY_SIGNIFICANT, SEVERITY_ANNOYANCE, SEVERITY_NOTICE); - foreach($severities as $severity) { - if(!empty($issues[$severity])) { - echo '
'; - foreach($issues[$severity] as $classname => $data) { - echo '
'.$data['title'].'
'; - echo '
'.$data['description']; - echo ''; - echo ''; - echo '
'; - } - echo '
'; - } - } - } -} - -function health_print_solution($classname) { - $problem = new $classname; - $data = array( - 'title' => $problem->title(), - 'severity' => $problem->severity(), - 'description' => $problem->description(), - 'solution' => $problem->solution() - ); - - print_heading(get_string('healthcenter')); - print_heading(get_string('healthproblemsolution')); - echo '
'; - echo '
'.$data['title'].'
'; - echo '
'.$data['description'].'
'; - echo '
'.get_string('healthsolution').'
'; - echo '
'.$data['solution'].'
'; - echo '
'; - echo ''; - echo ''; -} - -class problem_base { - function exists() { - return false; - } - function title() { - return '???'; - } - function severity() { - return SEVERITY_NOTICE; - } - function description() { - return ''; - } - function solution() { - return ''; - } -} - -class problem_000001 extends problem_base { - function title() { - return 'Invalid value for $CFG->dirroot'; - } - function exists() { - global $CFG; - $dirroot = dirname(realpath('../index.php')); - if (!empty($dirroot) && $dirroot != $CFG->dirroot) { - return true; - } - return false; - } - function severity() { - return SEVERITY_CRITICAL; - } - function description() { - global $CFG; - return 'Your config.php file contains the setting $CFG->dirroot = "'.$CFG->dirroot.'", which is incorrect. Unless you correct this problem, Moodle will not function correctly, if at all.'; - } - function solution() { - global $CFG; - $dirroot = dirname(realpath('../index.php')); - return 'You need to edit your config.php file. Find the line which reads
$CFG->dirroot = \''.$CFG->dirroot.'\';
and change it to read
$CFG->dirroot = \''.$dirroot.'\'
'; - } -} - -class problem_000002 extends problem_base { - function title() { - return 'Extra characters at the end of config.php'; - } - function exists() { - // [pj] When the requirements are raised to PHP 4.3.0 this will be file_get_contents() - if($fp = @fopen('../config.php', 'r')) { - $contents = fread($fp, 16384); // 16K should be enough - $ending = substr($contents, -2); - unset($contents); - if($ending == '?>') { - return false; - } - fclose($fp); - } - return true; - } - function severity() { - return SEVERITY_SIGNIFICANT; - } - function description() { - return 'Your Moodle configuration file, config.php, contains some characters after the closing PHP tag (?>). This could cause Moodle to exhibit several kinds of problems and should be fixed.'; - } - function solution() { - global $CFG; - return 'You need to edit '.$CFG->dirroot.'/config.php and remove all characters (including spaces and returns) after the ending ?> tag. These two characters should be the very last in that file.'; - } -} - -class problem_000003 extends problem_base { - function title() { - return '$CFG->dataroot does not exist or does not have write permissions'; - } - function exists() { - global $CFG; - if(!is_dir($CFG->dataroot) || !is_writable($CFG->dataroot)) { - return true; - } - return false; - } - function severity() { - return SEVERITY_SIGNIFICANT; - } - function description() { - global $CFG; - return 'Your config.php says that your "data root" directory is '.$CFG->dataroot.'. However, this directory either does not exist or cannot be written to by Moodle. This means that a variety of problems will be present, such as users not being able to log in and not being able to upload any files. It is imperative that you address this problem for Moodle to work correctly.'; - } - function solution() { - global $CFG; - return 'First of all, make sure that the directory '.$CFG->dataroot.' exists. If the directory does exist, then you must make sure that Moodle is able to write to it. Contact your web server administrator and request that he gives write permissions for that directory to the user that the web server process is running as.'; - } -} - -class problem_000004 extends problem_base { - function title() { - return 'cron.php is not set up to run automatically'; - } - function exists() { - global $CFG; - $lastcron = get_field_sql('SELECT max(lastcron) FROM '.$CFG->prefix.'modules'); - return (time() - $lastcron > 3600 * 24); - } - function severity() { - return SEVERITY_SIGNIFICANT; - } - function description() { - return 'The cron.php mainenance script has not been run in the past 24 hours. This probably means that your server is not configured to automatically run this script in regular time intervals. If this is the case, then Moodle will mostly work as it should but some operations (notably sending email to users) will not be carried out at all.'; - } - function solution() { - global $CFG; - return 'For detailed instructions on how to enable cron, see this section of the installation manual.'; - } -} - -class problem_000005 extends problem_base { - function title() { - return 'PHP: session.auto_start is enabled'; - } - function exists() { - return ini_get_bool('session.auto_start'); - } - function severity() { - return SEVERITY_CRITICAL; - } - function description() { - return 'Your PHP configuration includes an enabled setting, session.auto_start, that must be disabled in order for Moodle to work correctly. Notable symptoms arising from this misconfiguration include fatal errors and/or blank pages when trying to log in.'; - } - function solution() { - global $CFG; - return '

There are two ways you can solve this problem:

  1. If you have access to your main php.ini file, then find the line that looks like this:
    session.auto_start = 1
    and change it to
    session.auto_start = 0
    and then restart your web server. Be warned that this, as any other PHP setting change, might affect other web applications running on the server.
  2. Finally, you may be able to change this setting just for your site by creating or editing the file '.$CFG->dirroot.'/.htaccess to contain this line:
    php_value session.auto_start "0"
'; - } -} - -class problem_000006 extends problem_base { - function title() { - return 'PHP: magic_quotes_runtime is enabled'; - } - function exists() { - return (ini_get_bool('magic_quotes_runtime')); - } - function severity() { - return SEVERITY_SIGNIFICANT; - } - function description() { - return 'Your PHP configuration includes an enabled setting, magic_quotes_runtime, that must be disabled in order for Moodle to work correctly. Notable symptoms arising from this misconfiguration include strange display errors whenever a text field that includes single or double quotes is processed.'; - } - function solution() { - global $CFG; - return '

There are two ways you can solve this problem:

  1. If you have access to your main php.ini file, then find the line that looks like this:
    magic_quotes_runtime = On
    and change it to
    magic_quotes_runtime = Off
    and then restart your web server. Be warned that this, as any other PHP setting change, might affect other web applications running on the server.
  2. Finally, you may be able to change this setting just for your site by creating or editing the file '.$CFG->dirroot.'/.htaccess to contain this line:
    php_value magic_quotes_runtime "Off"
'; - } -} - -class problem_000007 extends problem_base { - function title() { - return 'PHP: file_uploads is disabled'; - } - function exists() { - return !ini_get_bool('file_uploads'); - } - function severity() { - return SEVERITY_SIGNIFICANT; - } - function description() { - return 'Your PHP configuration includes a disabled setting, file_uploads, that must be enabled to let Moodle offer its full functionality. Until this setting is enabled, it will not be possible to upload any files into Moodle. This includes, for example, course content and user pictures.'; - } - function solution() { - global $CFG; - return '

There are two ways you can solve this problem:

  1. If you have access to your main php.ini file, then find the line that looks like this:
    file_uploads = Off
    and change it to
    file_uploads = On
    and then restart your web server. Be warned that this, as any other PHP setting change, might affect other web applications running on the server.
  2. Finally, you may be able to change this setting just for your site by creating or editing the file '.$CFG->dirroot.'/.htaccess to contain this line:
    php_value file_uploads "On"
'; - } -} - -class problem_000008 extends problem_base { - function title() { - return 'PHP: memory_limit cannot be controlled by Moodle'; - } - function exists() { - $memlimit = @ini_get('memory_limit'); - if(empty($memlimit)) { - // PHP not compiled with memory limits, this means that it's - // probably limited to 8M so we have a problem... - return true; - } - // Otherwise, raise_memory_limit in setup.php will do the trick - return false; - } - function severity() { - return SEVERITY_ANNOYANCE; - } - function description() { - return 'The settings for PHP on your server do not allow a script to request more memory during its execution. This means that most likely there is a hard limit of 8MB for each script. It is possible that certain operations within Moodle will require more than this amount in order to complete successfully, especially if there are lots of data to be processed. Therefore, it is recommended that you contact your server administrator to address this issue.'; - } - function solution() { - global $CFG; - return 'We need a good solution here. Enabling memory limit control means recompiling PHP... maybe this should be SEVERITY_NOTICE instead of SEVERITY_ANNOYANCE?'; - } -} - -class problem_000009 extends problem_base { - function title() { - return 'SQL: using account without password'; - } - function exists() { - global $CFG; - return empty($CFG->dbpass); - } - function severity() { - return SEVERITY_CRITICAL; - } - function description() { - global $CFG; - return 'The user account your are connecting to the database server with is set up without a password. This is a very big security risk and is only somewhat lessened if your database is configured to not accept connections from any hosts other than the server Moodle is running on. Unless you use a strong password to connect to the database, you risk unauthorized access to and manipulation of your data.'.($CFG->dbuser != 'root'?'':' This is especially alarming because such access to the database would be as the superuser (root)!'); - } - function solution() { - global $CFG; - return 'You should change the password of the user '.$CFG->dbuser.' both in your database and in your Moodle config.php immediately!'.($CFG->dbuser != 'root'?'':' It would also be a good idea to change the user account from root to something else, because this would lessen the impact in the event that your database is compromised anyway.'); - } -} - -class problem_000010 extends problem_base { - function title() { - return 'Uploaded files: slasharguments disabled or not working'; - } - function exists() { - if (!$this->is_enabled()) { - return true; - } - if ($this->status() < 1) { - return true; - } - return false; - } - function severity() { - if ($this->is_enabled() and $this->status() == 0) { - return SEVERITY_SIGNIFICANT; - } else { - return SEVERITY_ANNOYANCE; - } - } - function description() { - global $CFG; - $desc = 'Slasharguments are needed for relative linking in uploaded resources:
    '; - if (!$this->is_enabled()) { - $desc .= '
  • slasharguments are disabled in Moodle configuration
  • '; - } else { - $desc .= '
  • slasharguments are enabled in Moodle configuration
  • '; - } - if ($this->status() == -1) { - $desc .= '
  • can not run automatic test, you can verify it here
  • '; - } else if ($this->status() == 0) { - $desc .= '
  • slashargument test failed, please check server configuration
  • '; - } else { - $desc .= '
  • slashargument test passed
  • '; - } - $desc .= '
'; - return $desc; - } - function solution() { - global $CFG; - $enabled = $this->is_enabled(); - $status = $this->status(); - $solution = ''; - if ($enabled and ($status == 0)) { - $solution .= 'Slasharguments are enabled, but the test failed. Please disable slasharguments in Moodle configuration or fix the server configuration.
'; - } else if ((!$enabled) and ($status == 0)) { - $solution .= 'Slasharguments are disabled and the test failed. You may try to fix the server configuration.
'; - } else if ($enabled and ($status == -1)) { - $solution .= 'Slasharguments are enabled, automatic testing not possible.
'; - } else if ((!$enabled) and ($status == -1)) { - $solution .= 'Slasharguments are disabled, automatic testing not possible.
'; - } else if ((!$enabled) and ($status > 0)) { - $solution .= 'Slasharguments are disabled though the iternal test is OK. You should enable slasharguments in Moodle configuration.'; - } else if ($enabled and ($status > 0)) { - $solution .= 'Congratulations - everything seems OK now :-D'; - } - if ($status < 1) { - $solution .= '

IIS:

  • try to add cgi.fix_pathinfo=1 to php.ini
  • do NOT enable AllowPathInfoForScriptMappings !!!
  • slasharguments may not work when using ISAPI and PHP 4.3.10 and older

'; - $solution .= '

Apache 1:

  • try to add cgi.fix_pathinfo=1 to php.ini

'; - $solution .= '

Apache 2:

  • you must add AcceptPathInfo on to php.ini or .htaccess
  • try to add cgi.fix_pathinfo=1 to php.ini

'; - } - return $solution; - } - function is_enabled() { - global $CFG; - return !empty($CFG->slasharguments); - } - function status() { - global $CFG; - $handle = @fopen($CFG->wwwroot.'/file.php?file=/testslasharguments', "r"); - $contents = trim(@fread($handle, 7)); - @fclose($handle); - if ($contents != 'test -1') { - return -1; - } - $handle = @fopen($CFG->wwwroot.'/file.php/testslasharguments', "r"); - $contents = trim(@fread($handle, 6)); - @fclose($handle); - switch ($contents) { - case 'test 1': return 1; - case 'test 2': return 2; - default: return 0; - } - } -} - - -class problem_00000x extends problem_base { - function title() { - return ''; - } - function exists() { - return false; - } - function severity() { - return SEVERITY_SIGNIFICANT; - } - function description() { - return ''; - } - function solution() { - global $CFG; - return ''; - } -} - -/* - -TODO: - - session.save_path -- it doesn't really matter because we are already IN a session, right? - -*/ - -?> \ No newline at end of file diff --git a/admin/index.php b/admin/index.php index 6f4665090bf..db0b1e7843d 100644 --- a/admin/index.php +++ b/admin/index.php @@ -1,4 +1,4 @@ -install documentation"; + $documentationlink = "please read the install documentation"; if (ini_get_bool('session.auto_start')) { error("The PHP server variable 'session.auto_start' should be Off - $documentationlink"); @@ -39,7 +39,7 @@ /// Check that config.php has been edited if ($CFG->wwwroot == "http://example.com/moodle") { - error("Moodle has not been configured yet. You need to edit config.php first."); + error("Moodle has not been configured yet. You need to to edit config.php first."); } @@ -48,10 +48,10 @@ $dirroot = dirname(realpath("../index.php")); if (!empty($dirroot) and $dirroot != $CFG->dirroot) { error("Please fix your settings in config.php: -

You have: -

\$CFG->dirroot = \"".addslashes($CFG->dirroot)."\"; -

but it should be: -

\$CFG->dirroot = \"".addslashes($dirroot)."\";", +

You have: +

\$CFG->dirroot = \"".addslashes($CFG->dirroot)."\"; +

but it should be: +

\$CFG->dirroot = \"".addslashes($dirroot)."\";", "./"); } @@ -77,11 +77,11 @@ } else { // Check for missing main tables $maintables = true; - $mtables = array("config", "course", "course_categories", "course_modules", - "course_sections", "log", "log_display", "modules", + $mtables = array("config", "course", "course_categories", "course_modules", + "course_sections", "log", "log_display", "modules", "user", "user_admins", "user_students", "user_teachers"); foreach ($mtables as $mtable) { - if (!in_array($CFG->prefix.$mtable, $tables)) { + if (!in_array($CFG->prefix.$mtable, $tables)) { $maintables = false; break; } @@ -92,13 +92,13 @@ if (empty($agreelicence)) { $strlicense = get_string("license"); print_header($strlicense, $strlicense, $strlicense, "", "", false, " ", " "); - print_heading("Moodle - Modular Object-Oriented Dynamic Learning Environment"); + print_heading("Moodle - Modular Object-Oriented Dynamic Learning Environment"); print_heading(get_string("copyrightnotice")); print_simple_box_start("center"); echo text_to_html(get_string("gpl")); print_simple_box_end(); echo "
"; - notice_yesno(get_string("doyouagree"), "index.php?agreelicence=true", + notice_yesno(get_string("doyouagree"), "index.php?agreelicence=true", "http://moodle.org/doc/?frame=licence.html"); exit; } @@ -123,91 +123,6 @@ } -/// Check version of Moodle code on disk compared with database -/// and upgrade if possible. - - include_once("$CFG->dirroot/version.php"); # defines $version - include_once("$CFG->dirroot/lib/db/$CFG->dbtype.php"); # defines upgrades - - $stradministration = get_string("administration"); - - if ($CFG->version) { - if ($version > $CFG->version) { // upgrade - - $a->oldversion = "$CFG->release ($CFG->version)"; - $a->newversion = "$release ($version)"; - $strdatabasechecking = get_string("databasechecking", "", $a); - - if (empty($_GET['confirmupgrade'])) { - print_header($strdatabasechecking, $stradministration, $strdatabasechecking, - "", "", false, " ", " "); - notice_yesno(get_string('upgradesure', 'admin', $a->newversion), 'index.php?confirmupgrade=yes', 'index.php'); - exit; - - } else { - $strdatabasesuccess = get_string("databasesuccess"); - print_header($strdatabasechecking, $stradministration, $strdatabasechecking, - "", "", false, " ", " "); - print_heading($strdatabasechecking); - $db->debug=true; - if (main_upgrade($CFG->version)) { - $db->debug=false; - if (set_config("version", $version)) { - notify($strdatabasesuccess, "green"); - print_continue("index.php"); - exit; - } else { - notify("Upgrade failed! (Could not update version in config table)"); - } - } else { - $db->debug=false; - notify("Upgrade failed! See /version.php"); - } - } - } else if ($version < $CFG->version) { - notify("WARNING!!! The code you are using is OLDER than the version that made these databases!"); - } - - } else { - $strcurrentversion = get_string("currentversion"); - print_header($strcurrentversion, $stradministration, $strcurrentversion, - "", "", false, " ", " "); - - if (set_config("version", $version)) { - print_heading("Moodle $release ($version)"); - print_continue("index.php"); - die; - } else { - $db->debug=true; - if (main_upgrade(0)) { - print_continue("index.php"); - } else { - error("A problem occurred inserting current version into databases"); - } - $db->debug=false; - } - } - - -/// Updated human-readable release version if necessary - - if ($release <> $CFG->release) { // Update the release version - $strcurrentrelease = get_string("currentrelease"); - print_header($strcurrentrelease, $strcurrentrelease, $strcurrentrelease, "", "", false, " ", " "); - print_heading("Moodle $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/lang/en/docs/release.html"); - print_simple_box_end(); - print_continue("index.php"); - exit; - } - - - /// Insert default values for any important configuration variables include_once("$CFG->dirroot/lib/defaults.php"); @@ -227,9 +142,76 @@ } +/// Check version of Moodle code on disk compared with database +/// and upgrade if possible. + + include_once("$CFG->dirroot/version.php"); # defines $version + include_once("$CFG->dirroot/lib/db/$CFG->dbtype.php"); # defines upgrades + + 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($strdatabasechecking, $strdatabasechecking, $strdatabasechecking, + "", "", false, " ", " "); + print_heading($strdatabasechecking); + $db->debug=true; + if (main_upgrade($CFG->version)) { + $db->debug=false; + if (set_config("version", $version)) { + notify($strdatabasesuccess, "green"); + print_continue("index.php"); + die; + } else { + notify("Upgrade failed! (Could not update version in config table)"); + } + } else { + $db->debug=false; + notify("Upgrade failed! See /version.php"); + } + } else if ($version < $CFG->version) { + notify("WARNING!!! The code you are using is OLDER than the version that made these databases!"); + } + + } else { + $strcurrentversion = get_string("currentversion"); + print_header($strcurrentversion, $strcurrentversion, $strcurrentversion, + "", "", false, " ", " "); + + if (set_config("version", $version)) { + print_heading("You are currently using Moodle version $version (Release $release)"); + print_continue("index.php"); + die; + } else { + $db->debug=true; + if (main_upgrade(0)) { + print_continue("index.php"); + } else { + error("A problem occurred inserting current version into databases"); + } + $db->debug=false; + } + } + +/// Updated human-readable release version if necessary + + if ($release <> $CFG->release) { // Update the release version + $strcurrentrelease = get_string("currentrelease"); + print_header($strcurrentrelease, $strcurrentrelease, $strcurrentrelease, "", "", false, " ", " "); + print_heading("Moodle $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/lang/en/docs/release.html"); + print_simple_box_end(); + print_continue("index.php"); + exit; + } -/// Find and check all main modules and load them up or upgrade them if necessary - upgrade_activity_modules("$CFG->wwwroot/$CFG->admin/index.php"); // Return here afterwards /// Upgrade backup/restore system if necessary require_once("$CFG->dirroot/backup/lib.php"); @@ -244,6 +226,9 @@ /// Check all enrolment plugins and upgrade if necessary upgrade_enrol_plugins("$CFG->wwwroot/$CFG->admin/index.php"); // Return here afterwards + +/// Find and check all main modules and load them up or upgrade them if necessary + upgrade_activity_modules("$CFG->wwwroot/$CFG->admin/index.php"); // Return here afterwards @@ -252,29 +237,6 @@ redirect("site.php"); } -/// Define the unique site ID code if it isn't already - if (empty($CFG->siteidentifier)) { // Unique site identification code - set_config('siteidentifier', random_string(32)); - } - -/// Check if the guest user exists. If not, create one. - if (! record_exists("user", "username", "guest")) { - $guest->auth = "manual"; - $guest->username = "guest"; - $guest->password = md5("guest"); - $guest->firstname = addslashes(get_string("guestuser")); - $guest->lastname = " "; - $guest->email = "root@localhost"; - $guest->description = addslashes(get_string("guestuserinfo")); - $guest->confirmed = 1; - $guest->lang = $CFG->lang; - $guest->timemodified= time(); - - if (! $guest->id = insert_record("user", $guest)) { - notify("Could not create guest user record !!!"); - } - } - /// Set up the admin user if (! record_exists("user_admins")) { // No admin user yet redirect("user.php"); @@ -287,30 +249,20 @@ error("You need to be an admin user to use this page.", "$CFG->wwwroot/login/index.php"); } + /// At this point everything is set up and the user is an admin, so print menu $stradministration = get_string("administration"); print_header("$site->shortname: $stradministration","$site->fullname", "$stradministration"); - print_simple_box_start('center', '100%', '', 20); + print_simple_box_start("center", "100%", "$THEME->cellcontent2", 20); print_heading($stradministration); if (!empty($CFG->upgrade)) { // Print notice about extra upgrading that needs to be done - print_simple_box(get_string("upgrade$CFG->upgrade", "admin", + print_simple_box(get_string("upgrade$CFG->upgrade", "admin", "$CFG->wwwroot/$CFG->admin/upgrade$CFG->upgrade.php"), "center"); print_spacer(10,10); } -/// If no recently cron run - $lastcron = get_field_sql('SELECT max(lastcron) FROM ' . $CFG->prefix . 'modules'); - if (time() - $lastcron > 3600 * 24) { - print_simple_box(get_string('cronwarning', 'admin') , 'center'); - } - -/// Alert if we are currently in maintenance mode - if (file_exists($CFG->dataroot.'/1/maintenance.html')) { - print_simple_box(get_string('sitemaintenancewarning', 'admin') , 'center'); - } - $table->tablealign = "right"; $table->align = array ("right", "left"); $table->wrap = array ("nowrap", "nowrap"); @@ -318,96 +270,91 @@ $table->cellspacing = 3; $table->width = "40%"; - $configdata = " ".get_string("configvariables", 'admin')." - ". + $configdata = " ".get_string("configvariables")." - ". get_string("adminhelpconfigvariables")."
"; - $configdata .= " ".get_string("sitesettings")." - ". + $configdata .= " ".get_string("sitesettings")." - ". get_string("adminhelpsitesettings")."
"; - $configdata .= " ".get_string("themes")." - ". + $configdata .= " ".get_string("themes")." - ". get_string("adminhelpthemes")."
"; - $configdata .= " ".get_string("language")." - ". + $configdata .= " ".get_string("language")." - ". get_string("adminhelplanguage")."
"; - $configdata .= " ".get_string("managemodules")." - ". + $configdata .= " ".get_string("managemodules")." - ". get_string("adminhelpmanagemodules")."
"; - $configdata .= " ".get_string("manageblocks")." - ". + $configdata .= " ".get_string("manageblocks")." - ". get_string("adminhelpmanageblocks")."
"; - $configdata .= " ".get_string("managefilters")." - ". + $configdata .= " ".get_string("managefilters")." - ". get_string("adminhelpmanagefilters")."
"; if (!isset($CFG->disablescheduledbackups)) { - $configdata .= " ".get_string("backup")." - ". + $configdata .= " ".get_string("backup")." - ". get_string("adminhelpbackup")."
"; } - $configdata .= " ". get_string("editorsettings") ." - ". + $configdata .= " ". get_string("editorsettings") ." - ". get_string("adminhelpeditorsettings")."
"; - $configdata .= " ". get_string('calendarsettings', 'admin') ." - ". - get_string('helpcalendarsettings', 'admin')."
"; - $configdata .= " ". get_string('sitemaintenancemode', 'admin') ." - ". - get_string('helpsitemaintenance', 'admin')."
"; - $table->data[] = array("".get_string("configuration")."", + $table->data[] = array("".get_string("configuration")."", $configdata); - $userdata = " sesskey\">".get_string("authentication")." - ". + $userdata = " ".get_string("authentication")." - ". get_string("adminhelpauthentication")."
"; - $userdata .= " ".get_string("edituser")." - ". + $userdata .= " ".get_string("edituser")." - ". get_string("adminhelpedituser")."
"; - $userdata .= " wwwroot/$CFG->admin/user.php?newuser=true&sesskey=$USER->sesskey\">". - get_string("addnewuser")." - ". + $userdata .= " wwwroot/$CFG->admin/user.php?newuser=true\">". + get_string("addnewuser")." - ". get_string("adminhelpaddnewuser")."
"; - $userdata .= " wwwroot/$CFG->admin/uploaduser.php?sesskey=$USER->sesskey\">". - get_string("uploadusers")." - ". + $userdata .= " wwwroot/$CFG->admin/uploaduser.php\">". + get_string("uploadusers")." - ". get_string("adminhelpuploadusers")."
"; - $userdata .= "


 sesskey\">".get_string("enrolments")." - ". + $userdata .= "
 ".get_string("enrolments")." - ". get_string("adminhelpenrolments")."
"; - $userdata .= " sesskey\">".get_string("assignstudents")." - ". + $userdata .= " ".get_string("assignstudents")." - ". get_string("adminhelpassignstudents")."
"; - $userdata .= " sesskey\">".get_string("assignteachers")." - ". + $userdata .= " ".get_string("assignteachers")." - ". get_string("adminhelpassignteachers"). - " \"\"
"; - $userdata .= " sesskey\">".get_string("assigncreators")." - ". + "
"; + $userdata .= " ".get_string("assigncreators")." - ". get_string("adminhelpassigncreators")."
"; - $userdata .= " sesskey\">".get_string("assignadmins")." - ". + $userdata .= " ".get_string("assignadmins")." - ". get_string("adminhelpassignadmins")."
"; - $table->data[] = array("".get_string("users")."", $userdata); + $table->data[] = array("".get_string("users")."", $userdata); - $table->data[] = array("sesskey\">".get_string("courses")."", - " ".get_string("adminhelpcourses")); - $table->data[] = array("id\">".get_string("logs")."", - " ".get_string("adminhelplogs")); - $table->data[] = array("id\">".get_string("sitefiles")."", - " ".get_string("adminhelpsitefiles")); + $table->data[] = array("".get_string("courses")."", + " ".get_string("adminhelpcourses")); + $table->data[] = array("id\">".get_string("logs")."", + " ".get_string("adminhelplogs")); + $table->data[] = array("id\">".get_string("sitefiles")."", + " ".get_string("adminhelpsitefiles")); if (file_exists("$CFG->dirroot/$CFG->admin/$CFG->dbtype")) { - $table->data[] = array("dbtype/frame.php\">".get_string("managedatabase")."", + $table->data[] = array("dbtype/frame.php\">".get_string("managedatabase")."", " ".get_string("adminhelpmanagedatabase")); } print_table($table); - + ////////////////////////////////////////////////////////////////////////////////////////////////// //// IT IS ILLEGAL AND A VIOLATION OF THE GPL TO REMOVE OR MODIFY THE COPYRIGHT NOTICE BELOW //// $copyrighttext = "Moodle ". "$CFG->release ($CFG->version)
". - "Copyright © 1999-2005 Martin Dougiamas
". + "Copyright © 1999-2004 Martin Dougiamas
". "GNU Public License"; - echo "

$copyrighttext

"; + echo "

$copyrighttext

"; ////////////////////////////////////////////////////////////////////////////////////////////////// - echo "
:
:
: - filterall, "", "", ""); - ?> - - -
  ">  
"; - echo " - - + + - + - + + - - - + + - + - + + - - - + + - + - + + - - - + + - + - + + - - - + + - + - + + - - - + + - + - + + - - - + + - + - + + - - - + + - + - + + - - - + - + - + + - - - - + + + - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + - + + diff --git a/auth/db/lib.php b/auth/db/lib.php index c225efcbb9f..cacc0057cf1 100644 --- a/auth/db/lib.php +++ b/auth/db/lib.php @@ -1,4 +1,4 @@ -dbtype != 'postgres7') { - $CFG->prefix = "$CFG->dbname.$CFG->prefix"; - } + $CFG->prefix = "$CFG->dbname.$CFG->prefix"; // Connect to the external database $authdb = &ADONewConnection($CFG->auth_dbtype); @@ -68,7 +65,7 @@ function auth_get_userinfo($username){ if ($rs = $authdb->Execute("SELECT ".$config["auth_user_$field"]." FROM $CFG->auth_dbtable WHERE $CFG->auth_dbfielduser = '$username'")) { if ( $rs->RecordCount() == 1 ) { - $result["$field"] = $rs->fields[0]; + $result["$field"] = $rs->fields[$config["auth_user_$field"]]; } } } diff --git a/auth/email/config.html b/auth/email/config.html index 660e38b7020..ad9ab1e7ca3 100644 --- a/auth/email/config.html +++ b/auth/email/config.html @@ -1,2 +1 @@ -
diff --git a/auth/email/lib.php b/auth/email/lib.php index 84dd0ca538c..f301f0e1ed3 100644 --- a/auth/email/lib.php +++ b/auth/email/lib.php @@ -1,4 +1,4 @@ -auth_fchost)) { - - $config->auth_fchost = "127.0.0.1"; - - } - - if (!isset($config->auth_fcfppport)) { - - $config->auth_fcfppport = "3333"; - - } - - if (!isset($config->auth_fcuserid)) { - - $config->auth_fcuserid = "fcMoodle"; - - } - - if (!isset($config->auth_fcpasswd)) { - - $config->auth_fcpasswd = ""; - - } - - if (!isset($config->auth_fccreators)) { - - $config->auth_fccreators = ""; - - } - -?> - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +auth_fchost)) { + $config->auth_fchost = "127.0.0.1"; + } + if (!isset($config->auth_fcfppport)) { + $config->auth_fcfppport = "3333"; + } + if (!isset($config->auth_fcuserid)) { + $config->auth_fcuserid = "fcMoodle"; + } + if (!isset($config->auth_fcpasswd)) { + $config->auth_fcpasswd = ""; + } + if (!isset($config->auth_fccreators)) { + $config->auth_fccreators = ""; + } +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/auth/imap/config.html b/auth/imap/config.html index 9e7389fce8f..15d5309e115 100644 --- a/auth/imap/config.html +++ b/auth/imap/config.html @@ -1,4 +1,4 @@ -auth_imaphost)) { $config->auth_imaphost = "127.0.0.1"; } @@ -9,51 +9,51 @@ $config->auth_imapport = "143"; } ?> - - - + + - + - + + - - - + + - + - + + - - - + + - + - + + - - - - + + + - + + diff --git a/auth/imap/lib.php b/auth/imap/lib.php index a2c09274152..0cc6fe2f8f8 100644 --- a/auth/imap/lib.php +++ b/auth/imap/lib.php @@ -1,4 +1,4 @@ -dirroot.'/course/lib.php'); -require_once($CFG->dirroot.'/lib/blocklib.php'); -require_once($CFG->dirroot.'/mod/resource/lib.php'); -require_once($CFG->dirroot.'/auth/ldap/lib.php'); -require_once($CFG->dirroot.'/mod/forum/lib.php'); -$CFG->debug=10; -auth_sync_users(1000, true ); - -?> \ No newline at end of file diff --git a/auth/ldap/config.html b/auth/ldap/config.html index 579dbf257c4..8c132849193 100644 --- a/auth/ldap/config.html +++ b/auth/ldap/config.html @@ -1,754 +1,268 @@ ldap_host_url, ""); - optional_variable($config->ldap_contexts, ""); - optional_variable($config->ldap_user_type, ""); - optional_variable($config->ldap_user_attribute, ""); - optional_variable($config->ldap_search_sub, ""); - optional_variable($config->ldap_opt_deref, ""); - optional_variable($config->ldap_bind_dn, ""); - optional_variable($config->ldap_bind_pw, ""); - optional_variable($config->ldap_version, "2"); - optional_variable($config->ldap_objectclass, ""); - optional_variable($config->ldap_memberattribute, ""); - optional_variable($config->ldap_creators, ""); - optional_variable($config->ldap_create_context, ""); - optional_variable($config->ldap_expiration, ""); - optional_variable($config->ldap_expiration_warning, "10"); - optional_variable($config->ldap_expireattr, ""); - optional_variable($config->ldap_gracelogins, ""); - optional_variable($config->ldap_graceattr, ""); - optional_variable($config->auth_user_create, ""); - optional_variable($config->auth_user_create, ""); - optional_variable($config->auth_ldap_forcepasswordchange, ""); - - optional_variable($config->auth_user_firstname_updatelocal, "1"); - optional_variable($config->auth_user_firstname_editlock, "1"); - optional_variable($config->auth_user_firstname_updateremote, ""); - optional_variable($config->auth_user_lastname_updatelocal, "1"); - optional_variable($config->auth_user_lastname_editlock, "1"); - optional_variable($config->auth_user_lastname_updateremote, ""); - optional_variable($config->auth_user_email_updatelocal, "1"); - optional_variable($config->auth_user_email_editlock, "1"); - optional_variable($config->auth_user_email_updateremote, ""); - optional_variable($config->auth_user_phone1_updatelocal, ""); - optional_variable($config->auth_user_phone1_editlock, ""); - optional_variable($config->auth_user_phone1_updateremote, ""); - optional_variable($config->auth_user_phone2_updatelocal, ""); - optional_variable($config->auth_user_phone2_editlock, ""); - optional_variable($config->auth_user_phone2_updateremote, ""); - optional_variable($config->auth_user_department_updatelocal, ""); - optional_variable($config->auth_user_department_editlock, ""); - optional_variable($config->auth_user_department_updateremote, ""); - optional_variable($config->auth_user_address_updatelocal, ""); - optional_variable($config->auth_user_address_editlock, ""); - optional_variable($config->auth_user_address_updateremote, ""); - optional_variable($config->auth_user_city_updatelocal, ""); - optional_variable($config->auth_user_city_editlock, ""); - optional_variable($config->auth_user_city_updateremote, ""); - optional_variable($config->auth_user_country_updatelocal, ""); - optional_variable($config->auth_user_country_editlock, ""); - optional_variable($config->auth_user_country_updateremote, ""); - optional_variable($config->auth_user_description_updatelocal, ""); - optional_variable($config->auth_user_description_editlock, ""); - optional_variable($config->auth_user_description_updateremote, ""); - optional_variable($config->auth_user_lang_updatelocal, ""); - optional_variable($config->auth_user_lang_editlock, ""); - optional_variable($config->auth_user_lang_updateremote, ""); - optional_variable($config->auth_user_idnumber_updatelocal, ""); - optional_variable($config->auth_user_idnumber_editlock, ""); - optional_variable($config->auth_user_idnumber_updateremote, ""); + if (!isset($config->ldap_host_url)) { + $config->ldap_host_url = ""; + } + if (!isset($config->ldap_contexts)) { + $config->ldap_contexts = ""; + } + if (!isset($config->ldap_user_attribute)) { + $config->ldap_user_attribute = ""; + } + if (!isset($config->ldap_search_sub)) { + $config->ldap_search_sub = ""; + } + if (!isset($config->ldap_bind_dn)) { + $config->ldap_bind_dn = ""; + } + if (!isset($config->ldap_bind_pw)) { + $config->ldap_bind_pw = ""; + } + if (empty($config->ldap_version)) { + $config->ldap_version = "2"; + } + if (empty($config->ldap_memberattribute)) { + $config->ldap_memberattribute = ""; + } + if (empty($config->ldap_creators)) { + $config->ldap_creators = ""; + } + if (empty($config->ldap_create_context)) { + $config->ldap_create_context = ""; + } + if (empty($config->ldap_objectclass)) { + $config->ldap_objectclass = ""; + } + if (empty($config->auth_user_guid)) { + $config->auth_user_guid = ""; + } - optional_variable($config->auth_ldap_stdchangepassword, false); - -if (!function_exists('ldap_connect')){ // Is php4-ldap really there? - print '

Warning: - The PHP LDAP module does not seem to be present. - Please ensure it is installed and enabled.

'; -} - ?> -
- - - - - - + + - + - + + - - - + + - + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - + + - - - - - - - - - - - - - - - - + + - + - + + - - - - - - - - + + - + - + + - - - + + + + + - - - - - + + + + - - - + + + - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + + + + + - - - - - - - - - + + + - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + + + + + + - - - - + + + - + + + + diff --git a/auth/ldap/lib.php b/auth/ldap/lib.php index 6ace00db39b..8a5ff444a44 100644 --- a/auth/ldap/lib.php +++ b/auth/ldap/lib.php @@ -1,49 +1,74 @@ - + +Usersync is quite heavy process, it could be good idea to place that script outside of webroot and run it with cron. + + +Any feedback is wellcome, + +Petri Asikainen paca@sci.fi + -/** - * authenticates user againt external userdatabase - * - * Returns true if the username and password work - * and false if they don't - * - * @param string $username - * @param string $password - * */ - -// LDAP functions are reused by other auth libs -if (!defined('AUTH_LDAP_NAME')) { - define('AUTH_LDAP_NAME', 'ldap'); -} - function auth_user_login ($username, $password) { +/// Returns true if the username and password work +/// and false if they don't global $CFG; @@ -51,195 +76,128 @@ function auth_user_login ($username, $password) { return false; } - // CAS-supplied auth tokens override LDAP auth - if ($CFG->auth == "cas" && !empty($CFG->cas_enabled)) { - return cas_ldap_auth_user_login($username, $password); - } + $ldap_connection = auth_ldap_connect(); - $ldapconnection = auth_ldap_connect(); - - if ($ldapconnection) { - $ldap_user_dn = auth_ldap_find_userdn($ldapconnection, $username); + 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){ - ldap_close($ldapconnection); + ldap_close($ldap_connection); return false; } // Try to bind with current username and password - $ldap_login = @ldap_bind($ldapconnection, $ldap_user_dn, $password); - ldap_close($ldapconnection); + $ldap_login = @ldap_bind($ldap_connection, $ldap_user_dn, $password); + ldap_close($ldap_connection); if ($ldap_login) { return true; } } else { - @ldap_close($ldapconnection); + @ldap_close($ldap_connection); error("LDAP-module cannot connect to server: $CFG->ldap_host_url"); } return false; } -/** - * reads userinformation from ldap and return it in array() - * - * Read user information from external database and returns it as array(). - * Function should return all information available. If you are saving - * this information to moodle user-table you should honor syncronization flags - * - * @param string $username username - * @return array - */ + + function auth_get_userinfo($username){ +/// reads userinformation from ldap and return it in array() global $CFG; - $ldapconnection=auth_ldap_connect(); + $config = (array)$CFG; $attrmap = auth_ldap_attributes(); + $ldap_connection=auth_ldap_connect(); + $result = array(); $search_attribs = array(); - foreach ($attrmap as $key=>$values) { - if (!is_array($values)) { - $values = array($values); - } - foreach ($values as $value) { - if (!in_array($value, $search_attribs)) { - array_push($search_attribs, $value); - } - } + foreach ($attrmap as $key=>$value) { + if (!in_array($value, $search_attribs)) { + array_push($search_attribs, $value); + } } - $user_dn = auth_ldap_find_userdn($ldapconnection, $username); + $user_dn = auth_ldap_find_userdn($ldap_connection, $username); - if (empty($CFG->ldap_objectclass)) { // Can't send empty filter + if (! isset($CFG->ldap_objectclass)) { $CFG->ldap_objectclass="objectClass=*"; } - $user_info_result = ldap_read($ldapconnection,$user_dn,$CFG->ldap_objectclass, $search_attribs); + $user_info_result = ldap_read($ldap_connection,$user_dn,$CFG->ldap_objectclass, $search_attribs); if ($user_info_result) { - $user_entry = ldap_get_entries($ldapconnection, $user_info_result); - foreach ($attrmap as $key=>$values){ - if (!is_array($values)) { - $values = array($values); - } - foreach ($values as $value) { - if(isset($user_entry[0][strtolower($value)][0])){ - $result[$key]=addslashes(stripslashes(utf8_decode($user_entry[0][strtolower($value)][0]))); - } + $user_entry = ldap_get_entries($ldap_connection, $user_info_result); + foreach ($attrmap as $key=>$value){ + if(isset($user_entry[0][strtolower($value)][0])){ + $result[$key]=$user_entry[0][strtolower($value)][0]; } } + $result['guid']='ldap'; } - @ldap_close($ldapconnection); + @ldap_close($ldap_connection); return $result; } -/** - * reads userinformation from ldap and return it in an object - * - * @param string $username username - * @return array - */ -function auth_get_userinfo_asobj($username){ - $user_array = truncate_userinfo(auth_get_userinfo($username)); - $user = new object; - foreach($user_array as $key=>$value){ - $user->{$key} = $value; - } - return $user; -} - -/** - * returns all usernames from external database - * - * auth_get_userlist returns all usernames from external database - * - * @return array - */ function auth_get_userlist () { global $CFG; - auth_ldap_init(); return auth_ldap_get_userlist("($CFG->ldap_user_attribute=*)"); } -/** - * checks if user exists on external db - */ function auth_user_exists ($username) { global $CFG; - auth_ldap_init(); //returns true if given usernname exist on ldap $users = auth_ldap_get_userlist("($CFG->ldap_user_attribute=$username)"); return count($users); } -/** - * creates new user on external database - * - * auth_user_create() creates new user on external database - * By using information in userobject - * Use auth_user_exists to prevent dublicate usernames - * - * @param mixed $userobject Moodle userobject - * @param mixed $plainpass Plaintext password - */ function auth_user_create ($userobject,$plainpass) { +//create new user to ldap +//use auth_user_exists to prevent dublicate usernames +//return true if user is created, false on error global $CFG; - $ldapconnection = auth_ldap_connect(); $attrmap = auth_ldap_attributes(); + $ldapconnect = auth_ldap_connect(); + $ldapbind = auth_ldap_bind($ldapconnect); $newuser = array(); - foreach ($attrmap as $key=>$values){ - if (!is_array($values)) { - $values = array($values); - } - foreach ($values as $value) { - if(!empty($userobject->$key) ){ + foreach ($attrmap as $key=>$value){ + if(isset($userobject->$key) ){ $newuser[$value]=utf8_encode($userobject->$key); } - } } //Following sets all mandatory and other forced attribute values - //User should be creted as login disabled untill email confirmation is processed - //Feel free to add your user type and send patches to paca@sci.fi to add them - //Moodle distribution - - switch ($CFG->ldap_user_type) { - case 'edir': + //this should be moved to config inteface ASAP $newuser['objectClass']= array("inetOrgPerson","organizationalPerson","person","top"); $newuser['uniqueId']= $userobject->username; $newuser['logindisabled']="TRUE"; $newuser['userpassword']=$plainpass; - default: - error('auth: ldap auth_user_create() does not support selected usertype (..yet)'); - } + unset($newuser[country]); - $uadd = ldap_add($ldapconnection, $CFG->ldap_user_attribute."=$userobject->username,".$CFG->ldap_create_context, $newuser); + $uadd = ldap_add($ldapconnect, $CFG->ldap_user_attribute."=$userobject->username,".$CFG->ldap_create_context, $newuser); - ldap_close($ldapconnection); + ldap_close($ldapconnect); return $uadd; } -/*/ - * - * auth_get_users() returns userobjects from external database - * - * Function returns users from external databe as Moodle userobjects - * If filter is not present it should return ALL users in external database - * - * @param mixed $filter substring of username - * @returns array of userobjects - */ -function auth_get_users($filter='*', $dontlistcreated=false) { +function auth_get_users($filter='*') { +//returns all userobjects from external database global $CFG; - $ldapconnection = auth_ldap_connect(); $fresult = array(); + $ldap_connection = auth_ldap_connect(); + + auth_ldap_bind($ldap_connection); + + if (! isset($CFG->ldap_objectclass)) { + $CFG->ldap_objectclass="objectClass=*"; + } if ($filter=="*") { $filter = "(&(".$CFG->ldap_user_attribute."=*)(".$CFG->ldap_objectclass."))"; @@ -247,7 +205,7 @@ function auth_get_users($filter='*', $dontlistcreated=false) { $contexts = explode(";",$CFG->ldap_contexts); - if (!empty($CFG->ldap_create_context) and empty($dontlistcreated)){ + if (!empty($CFG->ldap_create_context)){ array_push($contexts, $CFG->ldap_create_context); } @@ -255,38 +213,28 @@ function auth_get_users($filter='*', $dontlistcreated=false) { $search_attribs = array(); - foreach ($attrmap as $key=>$values) { - if (!is_array($values)) { - $values = array($values); - } - foreach ($values as $value) { - if (!in_array($value, $search_attribs)) { - array_push($search_attribs, $value); - } - } + foreach ($attrmap as $key=>$value) { + if (!in_array($value, $search_attribs)) { + array_push($search_attribs, $value); + } } foreach ($contexts as $context) { - - $context = trim($context); - if (empty($context)) { - continue; - } if ($CFG->ldap_search_sub) { //use ldap_search to find first user from subtree - $ldap_result = ldap_search($ldapconnection, $context, + $ldap_result = ldap_search($ldap_connection, $context, $filter, $search_attribs); } else { //search only in this context - $ldap_result = ldap_list($ldapconnection, $context, + $ldap_result = ldap_list($ldap_connection, $context, $filter, $search_attribs); } - $users = auth_ldap_get_entries($ldapconnection, $ldap_result); + $users = auth_ldap_get_entries($ldap_connection, $ldap_result); //add found users to list foreach ($users as $ldapuser=>$attribs) { @@ -299,7 +247,7 @@ function auth_get_users($filter='*', $dontlistcreated=false) { //quick way to get around binarystrings $user->guid=bin2hex($user->guid); //add authentication source stamp - $user->auth = AUTH_LDAP_NAME; + $user->auth='ldap'; $fresult[$user->username]=$user; } @@ -308,180 +256,65 @@ function auth_get_users($filter='*', $dontlistcreated=false) { return $fresult; } -/** - * return number of days to user password expires - * - * If userpassword does not expire it should return 0. If password is already expired - * it should return negative value. - * - * @param mixed $username username - * @return integer - */ -function auth_password_expire($username) { - global $CFG ; - $result = false; - - $ldapconnection = auth_ldap_connect(); - $user_dn = auth_ldap_find_userdn($ldapconnection, $username); - $search_attribs = array($CFG->ldap_expireattr); - $sr = ldap_read($ldapconnection, $user_dn, 'objectclass=*', $search_attribs); - if ($sr) { - $info=auth_ldap_get_entries($ldapconnection, $sr); - if ( empty($info[0][strtolower($CFG->ldap_expireattr)][0])) { - //error_log("ldap: no expiration value".$info[0][$CFG->ldap_expireattr]); - // no expiration attribute, password does not expire - $result = 0; - } else { - $now = time(); - $expiretime = auth_ldap_expirationtime2unix($info[0][strtolower($CFG->ldap_expireattr)][0]); - if ($expiretime > $now) { - $result = ceil(($expiretime - $now) / DAYSECS); - } else { - $result = floor(($expiretime - $now) / DAYSECS); - } - } - } else { - error_log("ldap: auth_password_expire did't find expiration time!."); - } - - //error_log("ldap: auth_password_expire user $user_dn expires in $result days!"); - return $result; -} - -/** - * syncronizes user fron external db to moodle user table - * - * Sync shouid be done by using idnumber attribute, not username. - * You need to pass firstsync parameter to function to fill in - * idnumbers if they dont exists in moodle user table. - * - * Syncing users removes (disables) users that dont exists anymore in external db. - * Creates new users and updates coursecreator status of users. - * - * @param mixed $firstsync Optional: set to true to fill idnumber fields if not filled yet - */ -function auth_sync_users ($bulk_insert_records = 1000, $do_updates=1) { +function auth_sync_users () { //Syncronizes userdb with ldap //This will add, rename -/// OPTIONAL PARAMETERS -/// $bulk_insert_records = 1 // will insert $bulkinsert_records per insert statement -/// valid only with $unsafe. increase to a couple thousand for -/// blinding fast inserts -- but test it: you may hit mysqld's -/// max_allowed_packet limit. -/// $do_updates = 1 // will do pull in data updates from ldap if relevant - - global $CFG ; - - // configure a temp table - print "Configuring temp table\n"; - if(strtolower($CFG->dbtype) === 'mysql'){ - // help old mysql versions cope with large temp tables - execute_sql('SET SQL_BIG_TABLES=1', false); - execute_sql('CREATE TEMPORARY TABLE ' . $CFG->prefix .'extuser (idnumber VARCHAR(12), PRIMARY KEY (idnumber)) TYPE=MyISAM',false); - } elseif (strtolower($CFG->dbtype) === 'postgres7'){ - $bulk_insert_records = 1; // no support for multiple sets of values - execute_sql('CREATE TEMPORARY TABLE '.$CFG->prefix.'extuser (idnumber VARCHAR(12), PRIMARY KEY (idnumber))',false); - } - - - print "connecting to ldap\n"; - $ldapconnection = auth_ldap_connect(); - - //// - //// get user's list from ldap to sql in a scalable fashion - //// - // prepare some data we'll need - if (! empty($CFG->ldap_objectclass)) { - $CFG->ldap_objectclass="objectClass=*"; - } - - $filter = "(&(".$CFG->ldap_user_attribute."=*)(".$CFG->ldap_objectclass."))"; - - $contexts = explode(";",$CFG->ldap_contexts); - - if (!empty($CFG->ldap_create_context)){ - array_push($contexts, $CFG->ldap_create_context); - } - - $fresult = array(); - $count = 0; - foreach ($contexts as $context) { - $context = trim($context); - if (empty($context)) { - continue; - } - begin_sql(); - if ($CFG->ldap_search_sub) { - //use ldap_search to find first user from subtree - $ldap_result = ldap_search($ldapconnection, $context, - $filter, - array($CFG->ldap_user_attribute)); + $users = auth_get_users(); + $usedguids = Array(); + + foreach ($users as $user) { + $usedguids[] = $user->guid; //we will need all used guids later + //update modified time + $user->modified = time(); + //All users are confirmed + $user->confirmed = 1; + // if user does not exist create it + if (!record_exists('user','auth', 'ldap', 'guid', $user->guid)) { + if (insert_record ('user',$user)) { + echo "inserted user $user->username with guid $user->guid \n"; + } else { + echo "error inserting user $user->username with guid $user->guid \n"; + } + continue ; } else { - //search only in this context - $ldap_result = ldap_list($ldapconnection, $context, - $filter, - array($CFG->ldap_user_attribute)); + //update username + set_field('user', 'username', $user->username , 'auth', 'ldap', 'guid', $user->guid); + //no id-information in ldap so get now + $userid = get_field('user', 'id', 'auth', 'ldap', 'guid', $user->guid); + + if (auth_iscreator($user->username)) { + if (! record_exists("user_coursecreators", "userid", $userid)) { + $cdata['userid']=$userid; + $creator = insert_record("user_coursecreators",$cdata); + if (! $creator) { + error("Cannot add user to course creators."); + } + } + } else { + if ( record_exists("user_coursecreators", "userid", $userid)) { + $creator = delete_records("user_coursecreators", "userid", $userid); + if (! $creator) { + error("Cannot remove user from course creators."); + } + } + } } + } + + //find nonexisting users from moodles userdb + $sql = "SELECT * FROM ".$CFG->prefix."user WHERE deleted = '0' AND auth = 'ldap' AND guid NOT IN ('".implode('\' , \'',$usedguids)."');" ; + $result = get_records_sql($sql); - $entry = ldap_first_entry($ldapconnection, $ldap_result); - do { - $value = ldap_get_values_len($ldapconnection, $entry,$CFG->ldap_user_attribute); - $value = $value[0]; - $count++; - array_push($fresult, $value); - if(count($fresult) >= $bulk_insert_records){ - auth_ldap_bulk_insert($fresult); - //print var_dump($fresult); - $fresult=array(); - } - } - while ($entry = ldap_next_entry($ldapconnection, $entry)); - - // insert any remaining users and release mem - if(count($fresult)){ - auth_ldap_bulk_insert($fresult); - $fresult=array(); - } - commit_sql(); - } - // free mem - $ldap_results = 0; - - /// preserve our user database - /// if the temp table is empty, it probably means that something went wrong, exit - /// so as to avoid mass deletion of users; which is hard to undo - $count = get_record_sql('SELECT COUNT(idnumber) AS count, 1 FROM ' . $CFG->prefix .'extuser'); - $count = $count->{'count'}; - if($count < 1){ - print "Did not get any users from LDAP -- error? -- exiting\n"; - exit; - } - - //// - //// User removal - //// - // find users in DB that aren't in ldap -- to be removed! - // this is still not as scalable - $sql = 'SELECT u.id, u.username - FROM ' . $CFG->prefix .'user u LEFT JOIN ' . $CFG->prefix .'extuser e - ON u.idnumber = e.idnumber - WHERE u.auth=\'' . AUTH_LDAP_NAME . '\' AND u.deleted=\'0\' AND e.idnumber IS NULL'; - //print($sql); - $remove_users = get_records_sql($sql); - - if (!empty($remove_users)){ - print "User entries to remove: ". count($remove_users) . "\n"; - - begin_sql(); - foreach ($remove_users as $user) { + if (!empty($result)){ + foreach ($result as $user) { //following is copy pasted from admin/user.php //maybe this should moved to function in lib/datalib.php unset($updateuser); $updateuser->id = $user->id; $updateuser->deleted = "1"; - //$updateuser->username = "$user->username".time(); // Remember it just in case - //$updateuser->email = ""; // Clear this field to free it up + $updateuser->username = "$user->email.".time(); // Remember it just in case + $updateuser->email = ""; // Clear this field to free it up $updateuser->timemodified = time(); if (update_record("user", $updateuser)) { unenrol_student($user->id); // From all courses @@ -493,819 +326,144 @@ function auth_sync_users ($bulk_insert_records = 1000, $do_updates=1) { } //copy pasted part ends } - commit_sql(); - } - $remove_users = 0; // free mem! - - //// - //// User Updates - //// (time-consuming, optional) - //// - if ($do_updates) { - // narrow down what fields we need to update - $all_keys = array_keys(get_object_vars($CFG)); - $updatekeys = array(); - foreach ($all_keys as $key) { - if (preg_match('/^auth_user_(.+)_updatelocal$/',$key, $match)) { - if ($CFG->{$match[0]}) { // if it has a true value - array_push($updatekeys, $match[1]); // the actual key name - } - } - } - // print_r($all_keys); print_r($updatekeys); - unset($all_keys); unset($key); - - } - if ( $do_updates && !(empty($updatekeys)) ) { // run updates only if relevant - $users = get_records_sql('SELECT u.username, u.id FROM ' . $CFG->prefix . 'user AS u WHERE u.deleted=0 and u.auth=\'' . AUTH_LDAP_NAME . '\'' ); - if (!empty($users)) { - print "User entries to update: ". count($users). "\n"; - - - - begin_sql(); - $xcount=0; $maxxcount=100; - foreach ($users as $user) { - echo "updating user $user->username \n"; - auth_ldap_update_user_record($user->username, $updatekeys); - // update course creators - if ( !empty($CFG->ldap_creators) && !empty($CFG->ldap_memberattribute) ) { - if (auth_iscreator($user->username)) { - if (! record_exists("user_coursecreators", "userid", $user->id)) { - $creator = insert_record("user_coursecreators",$user->id); - if (! $creator) { - error("Cannot add user to course creators."); - } - } - } else { - if ( record_exists("user_coursecreators", "userid", $user->id)) { - $creator = delete_records("user_coursecreators", "userid", $user->id); - if (! $creator) { - error("Cannot remove user from course creators."); - } - } - } - } - if ($xcount++ > $maxxcount) { - commit_sql(); - begin_sql(); - $xcount=0; - } - } - commit_sql(); - $users = 0; // free mem - } - } // end do updates - - //// - //// User Additions - //// - // find users missing in DB that are in LDAP - // note that get_records_sql wants at least 2 fields returned, - // and gives me a nifty object I don't want. - $sql = 'SELECT e.idnumber,1 - FROM ' . $CFG->prefix .'extuser e LEFT JOIN ' . $CFG->prefix .'user u - ON e.idnumber = u.idnumber - WHERE u.id IS NULL OR (u.id IS NOT NULL AND u.deleted=1)'; - $add_users = get_records_sql($sql); // get rid of the fat - - if(!empty($add_users)){ - print "User entries to add: ". count($add_users). "\n"; - begin_sql(); - foreach($add_users as $user){ - $user = auth_get_userinfo_asobj($user->idnumber); - //print $user->username . "\n"; - - // prep a few params - $user->modified = time(); - $user->confirmed = 1; - $user->auth = AUTH_LDAP_NAME; - - // insert it - $old_debug=$CFG->debug; - $CFG->debug=10; - - // maybe the user has been deleted before - if ($old_user = get_record('user', 'idnumber', $user->idnumber, 'deleted', 1)) { - $user->id = $old_user->id; - set_field('user', 'deleted', 0, 'idnumber', $user->idnumber); - echo "Revived user $user->username with idnumber $user->idnumber id $user->id\n"; - } elseif ($id=insert_record ('user',$user)) { // it is truly a new user - echo "inserted user $user->username with idnumber $user->idnumber id $id\n"; - $user->id = $id; - } else { - echo "error inserting user $user->username with idnumber $user->idnumber \n"; - } - $CFG->debug=$old_debug; - $userobj = auth_ldap_update_user_record($user->username); - if(isset($CFG->{'auth_ldap_forcechangepassword'}) && $CFG->{'auth_ldap_forcechangepassword'}){ - set_user_preference('auth_forcepasswordchange', 1, $userobj); - } - - // update course creators - if ( !empty($CFG->ldap_creators) && !empty($CFG->ldap_memberattribute) ) { - if (auth_iscreator($user->username)) { - if (! record_exists("user_coursecreators", "userid", $user->id)) { - $creator = insert_record("user_coursecreators",$user->id); - if (! $creator) { - error("Cannot add user to course creators."); - } - } - } else { - if ( record_exists("user_coursecreators", "userid", $user->id)) { - $creator = delete_records("user_coursecreators", "userid", $$user->id); - if (! $creator) { - error("Cannot remove user from course creators."); - } - } - } - } - } - commit_sql(); - $add_users = 0; // free mem - } - return true; + } } -function auth_ldap_update_user_record($username, $updatekeys=false) { -/// will update a local user record from an external source. -/// is a lighter version of the one in moodlelib -- won't do -/// expensive ops such as enrolment -/// -/// If you don't pass $updatekeys, there is a performance hit and -/// values removed from LDAP won't be removed from moodle. - - global $CFG; - - //just in case check text case - $username = trim(moodle_strtolower($username)); - - // get the current user record - $user = get_record('user', 'username', $username); - if (empty($user)) { // trouble - error_log("Cannot update non-existent user: $username"); - die; - } - - if (function_exists('auth_get_userinfo')) { - if ($newinfo = auth_get_userinfo($username)) { - $newinfo = truncate_userinfo($newinfo); - - if (empty($updatekeys)) { // all keys? this does not support removing values - $updatekeys = array_keys($newinfo); - } - - foreach ($updatekeys as $key){ - unset($value); - if (isset($newinfo[$key])) { - $value = $newinfo[$key]; - $value = addslashes(stripslashes($value)); // Just in case - } else { - $value = ''; - } - if(isset($CFG->{'auth_user_' . $key. '_updatelocal'}) - && $CFG->{'auth_user_' . $key. '_updatelocal'}){ - if ($user->{$key} != $value) { // only update if it's changed - set_field('user', $key, $value, 'username', $username); - } - } - } - } - } - return get_record_select("user", "username = '$username' AND deleted <> '1'"); -} - -function auth_ldap_bulk_insert($users){ -// bulk insert in SQL's temp table -// $users is an array of usernames - global $CFG; - - // bulk insert -- superfast with $bulk_insert_records - $sql = 'INSERT INTO '.$CFG->prefix.'extuser (idnumber) VALUES '; - // make those values safe - array_map('addslashes', $users); - // join and quote the whole lot - $sql = $sql . '(\'' . join('\'),(\'', $users) . '\')'; - print "+ " . count($users) . " users\n"; - execute_sql($sql, false); - -} - - -/* - * auth_user_activate activates user in external db. - * - * Activates (enables) user in external db so user can login to external db - * - * @param mixed $username username - * @return boolen result - */ function auth_user_activate ($username) { +//activate new ldap-user after email-address is confirmed global $CFG; - $ldapconnection = auth_ldap_connect(); + $ldapconnect = auth_ldap_connect(); + $ldapbind = auth_ldap_bind($ldapconnect); + + $userdn = auth_ldap_find_userdn($ldapconnect, $username); - $userdn = auth_ldap_find_userdn($ldapconnection, $username); - switch ($CFG->ldap_user_type) { - case 'edir': $newinfo['loginDisabled']="FALSE"; - default; - error ('auth: ldap auth_user_activate() does not support selected usertype (..yet)'); - } - $result = ldap_modify($ldapconnection, $userdn, $newinfo); - ldap_close($ldapconnection); + + $result = ldap_modify($ldapconnect, $userdn, $newinfo); + ldap_close($ldapconnect); return $result; } -/* - * auth_user_disables disables user in external db. - * - * Disables user in external db so user can't login to external db - * - * @param mixed $username username - * @return boolean result - */ function auth_user_disable ($username) { +//activate new ldap-user after email-address is confirmed global $CFG; - $ldapconnection = auth_ldap_connect(); + $ldapconnect = auth_ldap_connect(); + $ldapbind = auth_ldap_bind($ldapconnect); - $userdn = auth_ldap_find_userdn($ldapconnection, $username); - switch ($CFG->ldap_user_type) { - case 'edir': + $userdn = auth_ldap_find_userdn($ldapconnect, $username); $newinfo['loginDisabled']="TRUE"; - default: - error ('auth: ldap auth_user_disable() does not support selected usertype (..yet)'); - } - $result = ldap_modify($ldapconnection, $userdn, $newinfo); - ldap_close($ldapconnection); + + $result = ldap_modify($ldapconnect, $userdn, $newinfo); + ldap_close($ldapconnect); return $result; } -/* - * auth_iscreator returns true if user should be coursecreator - * - * auth_iscreator returns true if user should be coursecreator - * - * @param mixed $username username - * @return boolean result - */ function auth_iscreator($username=0) { ///if user is member of creator group return true global $USER , $CFG; - auth_ldap_init(); - if (! $username) { $username=$USER->username; } if ((! $CFG->ldap_creators) OR (! $CFG->ldap_memberattribute)) { - return null; + return false; } return auth_ldap_isgroupmember($username, $CFG->ldap_creators); } -/* - * auth_user_update saves userinformation from moodle to external db - * - * Called when the user record is updated. - * Modifies user in external database. It takes olduser (before changes) and newuser (after changes) - * conpares information saved modified information to external db. - * - * @param mixed $olduser Userobject before modifications - * @param mixed $newuser Userobject new modified userobject - * @return boolean result - * - */ -function auth_user_update($olduser, $newuser) { - - global $USER , $CFG; - - $ldapconnection = auth_ldap_connect(); - - $result = array(); - $search_attribs = array(); - - $attrmap = auth_ldap_attributes(); - foreach ($attrmap as $key=>$values) { - if (!is_array($values)) { - $values = array($values); - } - foreach ($values as $value) { - if (!in_array($value, $search_attribs)) { - array_push($search_attribs, $value); - } - } - } - - $user_dn = auth_ldap_find_userdn($ldapconnection, $olduser->username); - - $user_info_result = ldap_read($ldapconnection,$user_dn,$CFG->ldap_objectclass, $search_attribs); - - if ($user_info_result){ - - $user_entry = auth_ldap_get_entries($ldapconnection, $user_info_result); - //error_log(var_export($user_entry) . 'fpp' ); - - foreach ($attrmap as $key=>$ldapkeys){ - if (isset($CFG->{'auth_user_'. $key.'_updateremote'}) && $CFG->{'auth_user_'. $key.'_updateremote'}){ - - // for ldap values that could be in more than one - // ldap key, we will do our best to match - // where they came from - $ambiguous = true; - $changed = false; - if (!is_array($ldapkeys)) { - $ldapkeys = $array($ldapkeys); - } - if (count($ldapkeys) < 2) { - $ambiguous = false; - } - - foreach ($ldapkeys as $ldapkey) { - if (!$ambiguous) { - // skip update if the values already match - if( !($newuser->$key === $user_entry[0][strtolower($ldapkey)][0]) ){ - ldap_modify($ldapconnection, $user_dn, array($ldapkey => $newuser->$key)); - } else { - error_log("Skip updating field $key for entry $user_dn: it seems to be already same on LDAP. " . - " old moodle value: '" . $olduser->$key . - "' new value '" . $newuser->$key . - "' current value in ldap entry " . $user_entry[0][strtolower($ldapkey)][0]); - } - } else { // ambiguous - // check the old values match - //error_log("keys $key $ldapkey"); - //error_log("olduser " . $olduser->$key); - //error_log("ldapuser " . $user_entry[0][strtolower($ldapkey)][0]); - if ( !empty($olduser->$key) - && !empty($user_entry[0][strtolower($ldapkey)][0]) - && $olduser->$key === $user_entry[0][strtolower($ldapkey)][0] ) { - // we found which value to update! - error_log("Matched: ". $olduser->$key . " === " . $user_entry[0][strtolower($ldapkey)][0]); - if(ldap_modify($ldapconnection, $user_dn, array($ldapkey => $newuser->$key))){ - $changed=true; - last; - } else { - error ('Error updating LDAP record. Error code: ' - . ldap_errno($ldapconnection) . '; Error string : ' - . ldap_err2str(ldap_errno($ldapconnection))); - } - } - } - } - - if ($ambiguous AND !$changed) { - error_log("Failed to update LDAP with ambiguous field $key". - " old moodle value: '" . $olduser->$key . - "' new value '" . $newuser->$key ); - } - } - } - - - } else { - error_log("ERROR:No user found in LDAP"); - @ldap_close($ldapconnection); - return false; - } - - @ldap_close($ldapconnection); - - return true; - -} - -/* - * changes userpassword in external db - * - * called when the user password is updated. - * changes userpassword in external db - * - * @param mixed $username Username - * @param mixed $newpassword Plaintext password - * @param mixed $oldpassword Plaintext old password to bind ldap with - * @return boolean result - * - */ -function auth_user_update_password($username, $newpassword) { -/// called when the user password is updated -- it assumes it is called by an admin -/// or that you've otherwise checked the user's credentials -/// IMPORTANT: $newpassword must be cleartext, not crypted/md5'ed - - global $CFG, $USER; - $result = false; - - $ldapconnection = auth_ldap_connect(); - - $user_dn = auth_ldap_find_userdn($ldapconnection, $username); - - if(!$user_dn){ - error_log('LDAP Error in auth_user_update_password(). No DN for: ' . $username); - return false; - } - - switch ($CFG->ldap_user_type) { - case 'edir': - //Change password - $result = ldap_modify($ldapconnection, $user_dn, array('userPassword' => $newpassword)); - if(!$result){ - error_log('LDAP Error in auth_user_update_password(). Error code: ' - . ldap_errno($ldapconnection) . '; Error string : ' - . ldap_err2str(ldap_errno($ldapconnection))); - } - //Update password expiration time, grace logins count - $search_attribs = array($CFG->ldap_expireattr, 'passwordExpirationInterval','loginGraceLimit' ); - $sr = ldap_read($ldapconnection, $user_dn, 'objectclass=*', $search_attribs); - if ($sr) { - $info=auth_ldap_get_entries($ldapconnection, $sr); - $newattrs = array(); - if (!empty($info[0][$CFG->ldap_expireattr][0])) { - //Set expiration time only if passwordExpirationInterval is defined - if (!empty($info[0]['passwordExpirationInterval'][0])) { - $expirationtime = time() + $info[0]['passwordExpirationInterval'][0]; - $ldapexpirationtime = auth_ldap_unix2expirationtime($expirationtime); - $newattrs['passwordExpirationTime'] = $ldapexpirationtime; - } - - //set gracelogin count - if (!empty($info[0]['loginGraceLimit'][0])) { - $newattrs['loginGraceRemaining']= $info[0]['loginGraceLimit'][0]; - } - - //Store attribute changes to ldap - $result = ldap_modify($ldapconnection, $user_dn, $newattrs); - if(!$result){ - error_log('LDAP Error in auth_user_update_password() when modifying expirationtime and/or gracelogins. Error code: ' - . ldap_errno($ldapconnection) . '; Error string : ' - . ldap_err2str(ldap_errno($ldapconnection))); - } - } - } else { - error_log('LDAP Error in auth_user_update_password() when reading password expiration time. Error code: ' - . ldap_errno($ldapconnection) . '; Error string : ' - . ldap_err2str(ldap_errno($ldapconnection))); - } - break; - default: - $usedconnection = &$ldapconnection; - // send ldap the password in cleartext, it will md5 it itself - $result = ldap_modify($ldapconnection, $user_dn, array('userPassword' => $newpassword)); - if(!$result){ - error_log('LDAP Error in auth_user_update_password(). Error code: ' - . ldap_errno($ldapconnection) . '; Error string : ' - . ldap_err2str(ldap_errno($ldapconnection))); - } - - } - - - @ldap_close($ldapconnection); - - return $result; -} - //PRIVATE FUNCTIONS starts //private functions are named as auth_ldap* -/** - * returns predefined usertypes - * - * @return array of predefined usertypes - */ - -function auth_ldap_suppported_usertypes (){ -// returns array of supported usertypes (schemas) -// If you like to add our own please name and describe it here -// And then add case clauses in relevant places in functions -// iauth_ldap_init, auth_user_create, auth_check_expire, auth_check_grace - $types['edir']='Novell Edirectory'; - $types['rfc2307']='posixAccount (rfc2307)'; - $types['rfc2307bis']='posixAccount (rfc2307bis)'; - $types['samba']='sambaSamAccount (v.3.0.7)'; - $types['ad']='MS ActiveDirectory'; - return $types; -} - - -/** - * initializes needed variables for ldap-module - * - * Uses names defined in auth_ldap_supported_usertypes. - * $default is first defined as: - * $default['pseudoname'] = array( - * 'typename1' => 'value', - * 'typename2' => 'value' - * .... - * ); - * - * @return array of default values - */ - -function auth_ldap_getdefaults(){ - $default['ldap_objectclass'] = array( - 'edir' => 'User', - 'rfc2703' => 'posixAccount', - 'rfc2703bis' => 'posixAccount', - 'samba' => 'sambaSamAccount', - 'ad' => 'user', - 'default' => '*' - ); - $default['ldap_user_attribute'] = array( - 'edir' => 'cn', - 'rfc2307' => 'uid', - 'rfc2307bis' => 'uid', - 'samba' => 'uid', - 'ad' => 'cn', - 'default' => 'cn' - ); - $default['ldap_memberattribute'] = array( - 'edir' => 'member', - 'rfc2307' => 'member', - 'rfc2307bis' => 'member', - 'samba' => 'member', - 'ad' => 'member', //is this right? - 'default' => 'member' - ); - $default['ldap_memberattribute_isdn'] = array( - 'edir' => '1', - 'rfs2307' => '0', - 'rfs2307bis' => '1', - 'samba' => '0', //is this right? - 'ad' => '0', //is this right? - 'default' => '0' - ); - $default['ldap_expireattr'] = array ( - 'edir' => 'passwordExpirationTime', - 'rfc2307' => 'shadowExpire', - 'rfc2307bis' => 'shadowExpire', - 'samba' => '', //No support yet - 'ad' => '', //No support yet - 'default' => '' - ); - return $default; -} - -/** - * return binaryfields of selected usertype - * - * - * @return array - */ - -function auth_ldap_getbinaryfields () { - global $CFG; - $binaryfields = array ( - 'edir' => array('guid'), - 'rfc2703' => array(), - 'rfc2703bis' => array(), - 'samba' => array(), - 'ad' => array(), - 'default' => '*' - ); - if (!empty($CFG->ldap_user_type)) { - return $binaryfields[$CFG->ldap_user_type]; - } else { - return $binaryfields['default']; - } - } - -function auth_ldap_isbinary ($field) { - if (!isset($field)) { - return null ; - } - return array_search($field, auth_ldap_getbinaryfields()); -} - -/** - * set $CFG-values for ldap_module - * - * Get default configuration values with auth_ldap_getdefaults() - * and by using this information $CFG-> values are set - * If $CFG->value is alredy set current value is honored. - * - * - */ -function auth_ldap_init () { - global $CFG; - - $default = auth_ldap_getdefaults(); - - foreach ($default as $key => $value) { - //set defaults if overriding fields not set - if(empty($CFG->{$key})) { - if (!empty($CFG->ldap_user_type) && !empty($default[$key][$CFG->ldap_user_type])) { - $CFG->{$key} = $default[$key][$CFG->ldap_user_type]; - }else { - //use default value if user_type not set - if(!empty($default[$key]['default'])){ - $CFG->$key = $default[$key]['default']; - }else { - unset($CFG->$key); - } - } - } - } - //hack prefix to objectclass - if ('objectClass=' != substr($CFG->ldap_objectclass, 0, 12)) { - $CFG->ldap_objectclass = 'objectClass='.$CFG->ldap_objectclass; - } - - //all chages go in $CFG , no need to return value -} - -/** - * take expirationtime and return it as unixseconds - * - * takes expriration timestamp as readed from ldap - * returns it as unix seconds - * depends on $CFG->usertype variable - * - * @param mixed time Time stamp readed from ldap as it is. - * @return timestamp - */ - -function auth_ldap_expirationtime2unix ($time) { - - global $CFG; - $result = false; - switch ($CFG->ldap_user_type) { - case 'edir': - $yr=substr($time,0,4); - $mo=substr($time,4,2); - $dt=substr($time,6,2); - $hr=substr($time,8,2); - $min=substr($time,10,2); - $sec=substr($time,12,2); - $result = mktime($hr,$min,$sec,$mo,$dt,$yr); - break; - case 'posix': - $result = $time * DAYSECS ; //The shadowExpire contains the number of DAYS between 01/01/1970 and the actual expiration date - break; - default: - error('CFG->ldap_user_type not defined or function auth_ldap_expirationtime2unix does not support selected type!'); -} - return $result; -} - -/** - * takes unixtime and return it formated for storing in ldap - * - * @param integer unix time stamp - */ -function auth_ldap_unix2expirationtime ($time) { - global $CFG; - $result = false; - switch ($CFG->ldap_user_type) { - case 'edir': - $result=date('YmdHis', $time).'Z'; - break; - case 'posix': - $result = $time ; //Already in correct format - break; - default: - error('CFG->ldap_user_type not defined or function auth_ldap_unixi2expirationtime does not support selected type!'); - } - return $result; - -} - -/* - * checks if user belong to specific group(s) - * - * Returns true if user belongs group in grupdns string. - * - * @param mixed $username username - * @param mixed $groupdns string of group dn separated by ; - * - */ function auth_ldap_isgroupmember ($username='', $groupdns='') { // Takes username and groupdn(s) , separated by ; // Returns true if user is member of any given groups - global $CFG ; - $result = false; - $ldapconnection = auth_ldap_connect(); - + global $CFG, $USER; + + $ldapconnect = auth_ldap_connect(); + $ldapbind = auth_ldap_bind($ldapconnect); + if (empty($username) OR empty($groupdns)) { - return $result; - } - - if ($CFG->ldap_memberattribute_isdn) { - $username=auth_ldap_find_userdn($ldapconnection, $username); + return false; } - if (! $username ) { - return $result; - } - - $groups = explode(";",$groupdns); + $groups = explode(";",$groupdns); + + //build filter + $filter = "(& ($CFG->ldap_user_attribute=$username)(|"; foreach ($groups as $group){ - $group = trim($group); - if (empty($group)) { - continue; + $filter .= "($CFG->ldap_memberattribute=$group)"; + } + $filter .= "))"; + //search + $result = auth_ldap_get_userlist($filter); + + return count($result); + +} +function auth_ldap_connect(){ +/// connects to ldap-server + global $CFG; + + $result = ldap_connect($CFG->ldap_host_url); + + if ($result) { + if (!empty($CFG->ldap_version)) { + ldap_set_option($result, LDAP_OPT_PROTOCOL_VERSION, $CFG->ldap_version); } - //echo "Checking group $group for member $username\n"; - $search = @ldap_read($ldapconnection, $group, '('.$CFG->ldap_memberattribute.'='.$username.')', array($CFG->ldap_memberattribute)); - if (ldap_count_entries($ldapconnection, $search)) {$info = auth_ldap_get_entries($ldapconnection, $search); - - if (count($info) > 0 ) { - // user is member of group - $result = true; - break; - } + + return $result; + + } else { + error("LDAP-module cannot connect to server: $CFG->ldap_host_url"); + return false; } } - return $result; -} -/** - * connects to ldap server - * - * Tries connect to specified ldap servers. - * Returns connection result or error. - * - * @return connection result - */ -function auth_ldap_connect($binddn='',$bindpwd=''){ -/// connects and binds to ldap-server -/// Returns connection result +function auth_ldap_bind($ldap_connection){ +/// makes bind to ldap for searching users +/// uses ldap_bind_dn or anonymous bind global $CFG; - auth_ldap_init(); - //Select bind password, With empty values use - //ldap_bind_* variables or anonymous bind if ldap_bind_* are empty - if ($binddn == '' AND $bindpwd == '') { - if (!empty($CFG->ldap_bind_dn)){ - $binddn = $CFG->ldap_bind_dn; - } - if (!empty($CFG->ldap_bind_pw)){ - $bindpwd = $CFG->ldap_bind_pw; - } - } - - $urls = explode(";",$CFG->ldap_host_url); - - foreach ($urls as $server){ - $server = trim($server); - if (empty($server)) { - continue; + 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; } - $connresult = ldap_connect($server); - //ldap_connect returns ALWAYS true - - if (!empty($CFG->ldap_version)) { - ldap_set_option($connresult, LDAP_OPT_PROTOCOL_VERSION, $CFG->ldap_version); - } - - if (!empty($binddn)){ - //bind with search-user - $bindresult=@ldap_bind($connresult, $binddn,$bindpwd); - } else { - //bind anonymously - $bindresult=@ldap_bind($connresult); + } else { + //bind anonymously + if ( !ldap_bind($ldap_connection)){ + error("Error: could not bind ldap anonymously"); + return false; } - - if (!empty($CFG->ldap_opt_deref)) { - ldap_set_option($connresult, LDAP_OPT_DEREF, $CFG->ldap_opt_deref); - } - - if ($bindresult) { - return $connresult; - } - - $debuginfo == "
Server: '$server'
Connection: '$connresult'
Bind result: '$bindresult'
"; } - //If any of servers are alive we have already returned connection - error("LDAP-module cannot connect any LDAP servers : $debuginfo"); - return false; + return true; } -/** - * retuns dn of username - * - * Search specified contexts for username and return user dn - * like: cn=username,ou=suborg,o=org - * - * @param mixed $ldapconnection $ldapconnection result - * @param mixed $username username - * - */ -function auth_ldap_find_userdn ($ldapconnection, $username){ + +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); @@ -1315,24 +473,21 @@ function auth_ldap_find_userdn ($ldapconnection, $username){ foreach ($ldap_contexts as $context) { - $context = trim($context); - if (empty($context)) { - continue; - } + $context == trim($context); if ($CFG->ldap_search_sub){ //use ldap_search to find first user from subtree - $ldap_result = ldap_search($ldapconnection, $context, "(".$CFG->ldap_user_attribute."=".$username.")",array($CFG->ldap_user_attribute)); + $ldap_result = ldap_search($ldap_connection, $context, "(".$CFG->ldap_user_attribute."=".$username.")",array($CFG->ldap_user_attribute)); } else { //search only in this context - $ldap_result = ldap_list($ldapconnection, $context, "(".$CFG->ldap_user_attribute."=".$username.")",array($CFG->ldap_user_attribute)); + $ldap_result = ldap_list($ldap_connection, $context, "(".$CFG->ldap_user_attribute."=".$username.")",array($CFG->ldap_user_attribute)); } - $entry = ldap_first_entry($ldapconnection,$ldap_result); + $entry = ldap_first_entry($ldap_connection,$ldap_result); if ($entry){ - $ldap_user_dn = ldap_get_dn($ldapconnection, $entry); + $ldap_user_dn = ldap_get_dn($ldap_connection, $entry); break ; } } @@ -1340,47 +495,37 @@ function auth_ldap_find_userdn ($ldapconnection, $username){ return $ldap_user_dn; } -/** - * retuns user attribute mappings between moodle and ldap - * - * @return array - */ - function auth_ldap_attributes (){ - +//returns array containg attribute mappings between Moodle and ldap global $CFG; $config = (array)$CFG; $fields = array("firstname", "lastname", "email", "phone1", "phone2", "department", "address", "city", "country", "description", - "idnumber", "lang" ); + "idnumber", "lang", "guid"); $moodleattributes = array(); foreach ($fields as $field) { - if (!empty($config["auth_user_$field"])) { + if ($config["auth_user_$field"]) { $moodleattributes[$field] = $config["auth_user_$field"]; - if (preg_match('/,/',$moodleattributes[$field])) { - $moodleattributes[$field] = explode(',', $moodleattributes[$field]); // split ? - } } } $moodleattributes['username']=$config["ldap_user_attribute"]; return $moodleattributes; } -/** - * return all usernames from ldap - * - * @return array - */ - function auth_ldap_get_userlist($filter="*") { /// returns all users from ldap servers global $CFG; $fresult = array(); + $ldap_connection = auth_ldap_connect(); - $ldapconnection = auth_ldap_connect(); + auth_ldap_bind($ldap_connection); + + if (! isset($CFG->ldap_objectclass)) { + $CFG->ldap_objectclass="objectClass=*"; + } if ($filter=="*") { $filter = "(&(".$CFG->ldap_user_attribute."=*)(".$CFG->ldap_objectclass."))"; @@ -1394,25 +539,22 @@ function auth_ldap_get_userlist($filter="*") { foreach ($contexts as $context) { - $context = trim($context); - if (empty($context)) { - continue; - } - if ($CFG->ldap_search_sub) { //use ldap_search to find first user from subtree - $ldap_result = ldap_search($ldapconnection, $context,$filter,array($CFG->ldap_user_attribute)); + $ldap_result = ldap_search($ldap_connection, $context, + $filter, + array($CFG->ldap_user_attribute)); } else { //search only in this context - $ldap_result = ldap_list($ldapconnection, $context, + $ldap_result = ldap_list($ldap_connection, $context, $filter, array($CFG->ldap_user_attribute)); } - $users = auth_ldap_get_entries($ldapconnection, $ldap_result); + $users = ldap_get_entries($ldap_connection, $ldap_result); //add found users to list - for ($i=0;$ildap_user_attribute][0]) ); } } @@ -1420,15 +562,6 @@ function auth_ldap_get_userlist($filter="*") { return $fresult; } -/** - * return entries from ldap - * - * Returns values like ldap_get_entries but is - * binary compatible and return all attributes as array - * - * @return array ldap-entries - */ - function auth_ldap_get_entries($conn, $searchresult){ //Returns values like ldap_get_entries but is //binary compatible @@ -1439,16 +572,12 @@ function auth_ldap_get_entries($conn, $searchresult){ $attributes = ldap_get_attributes($conn, $entry); for($j=0; $j<$attributes['count']; $j++) { $values = ldap_get_values_len($conn, $entry,$attributes[$j]); - if (is_array($values)) { $fresult[$i][$attributes[$j]] = $values; - } else { - $fresult[$i][$attributes[$j]] = array($values); - } } $i++; } while ($entry = ldap_next_entry($conn, $entry)); - //were done + //we're done return ($fresult); } diff --git a/auth/manual/config.html b/auth/manual/config.html index 2febb35297c..3114dcbf4c2 100644 --- a/auth/manual/config.html +++ b/auth/manual/config.html @@ -1,11 +1,11 @@ -
- - - + + + - + + diff --git a/auth/manual/lib.php b/auth/manual/lib.php index 657e95a428e..0dce1fc88eb 100644 --- a/auth/manual/lib.php +++ b/auth/manual/lib.php @@ -1,4 +1,4 @@ -auth_nntphost)) { $config->auth_nntphost = "127.0.0.1"; } @@ -7,36 +7,36 @@ } ?> - - - + + - + - + + - - - + + - + - + + - - - - + + + - + + diff --git a/auth/nntp/lib.php b/auth/nntp/lib.php index 502d051edd8..7fd6836fecc 100644 --- a/auth/nntp/lib.php +++ b/auth/nntp/lib.php @@ -1,4 +1,4 @@ - -
diff --git a/auth/none/lib.php b/auth/none/lib.php index e7a1a2c8760..70b84f28ea2 100644 --- a/auth/none/lib.php +++ b/auth/none/lib.php @@ -1,4 +1,4 @@ - -
- - - \ No newline at end of file diff --git a/auth/pam/lib.php b/auth/pam/lib.php deleted file mode 100644 index 24fd39a7750..00000000000 --- a/auth/pam/lib.php +++ /dev/null @@ -1,42 +0,0 @@ - diff --git a/auth/pop3/config.html b/auth/pop3/config.html index 6a5a2bbe968..ec0288b8602 100644 --- a/auth/pop3/config.html +++ b/auth/pop3/config.html @@ -1,4 +1,4 @@ -auth_pop3host)) { $config->auth_pop3host = "127.0.0.1"; } @@ -12,62 +12,62 @@ $config->auth_pop3mailbox = "INBOX"; } ?> - - - + + - + - + + - - - + + - + - + + - - - + + - + - + + - - - + + - + - + + - - - - + + + - + + diff --git a/auth/pop3/lib.php b/auth/pop3/lib.php index c4f24a624e7..6c18d436ec2 100644 --- a/auth/pop3/lib.php +++ b/auth/pop3/lib.php @@ -1,4 +1,4 @@ - -3. Add .htaccess file in this directory which contains: - -## Shibboleth authentication required -AuthType shibboleth -ShibRequireSession On -require valid-user - - -NEW! Modifications to login/index.php -------------------------------------------------------------------------------- -Moodle checks if user theres a shibboleth authenticated session alive. If -username attribute is found, user is considered authenticated. - -Add code after line 31: - - if ($_SERVER[$CFG->shib_user_attribute]) { - /// Log in automatically if user is has been shibboleth authenticated - $frm->username = $_SERVER[$CFG->shib_user_attribute]; - $frm->password = "guest"; - } else { - $frm = data_submitted(); - } - - -MOODLE Authentication options -------------------------------------------------------------------------------- - -Shibboleth origin url: -This is were you put the Shibboleth WAYF url address or the Shibboleth Origin -login url if WAYF is not used. If user selects shibboleth authentication -method he/she is redirected there to authenticate. - -Username, First name, Surname, Email address: -The fields in authentication options are filled with the names of the -shibboleth attributes that your server provides for example: - -$_SERVER['HTTP_SHIB_PNAME'] is the defined attribute in shibboleth target -configuration for username use HTTP_SHIB_PNAME in Username field at -authentication options diff --git a/auth/shibboleth/config.html b/auth/shibboleth/config.html deleted file mode 100755 index 7f8c8983d51..00000000000 --- a/auth/shibboleth/config.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/auth/shibboleth/lib.php b/auth/shibboleth/lib.php deleted file mode 100755 index 4024a0d59fe..00000000000 --- a/auth/shibboleth/lib.php +++ /dev/null @@ -1,60 +0,0 @@ -shib_user_attribute] == $username) { - return true; - } - // Returns false if the username doesn't exist yet - // Returns true if the username and password work - if ($user = get_user_info_from_db("username", $username)) { - if($user->auth == "shibboleth") { - return false; - exit; - } else { - return ($user->password == md5($password)); - exit; - } - } - - return false; -} - -function auth_get_userinfo($username) { -// reads user information from shibboleth attributes and return it in array() - global $CFG; - - $config = (array)$CFG; - $attrmap = auth_shib_attributes(); - - $result = array(); - $search_attribs = array(); - - foreach ($attrmap as $key=>$value) { - $result[$key]=$_SERVER[$value]; - } - return $result; -} - -function auth_shib_attributes (){ -//returns array containg attribute mappings between Moodle and shibboleth - global $CFG; - - $config = (array)$CFG; - $fields = array("firstname", "lastname", "email", "phone1", "phone2", - "department", "address", "city", "country", "description", - "idnumber", "lang", "guid"); - - $moodleattributes = array(); - foreach ($fields as $field) { - if ($config["auth_user_$field"]) { - $moodleattributes[$field] = $config["auth_user_$field"]; - } - } - $moodleattributes['username']=$config["shib_user_attribute"]; - return $moodleattributes; -} -?> diff --git a/backup/CHANGES_14_15.txt b/backup/CHANGES_14_15.txt deleted file mode 100644 index 068e0835f7f..00000000000 --- a/backup/CHANGES_14_15.txt +++ /dev/null @@ -1,66 +0,0 @@ -CHANGES_14_15 $Id$ ----------- - -This document shows changes between 1.4 and 1.5 and their current -status in backup/restore code. - -========== ========== ========== ========== ========== ========== - -Now I show the specific detailed status of every item in the process: - - 1. DONE: check user->idnumber - 2. DONE: check user->lang (at restore set mi_nt where ma_nt). - 3. DONE: check course->lang (at restore set mi_nt where ma_nt). - 4. DONE: user_students->enrol (analyse and proceed). - 5. DONE: user_teachers->enrol (analyse and proceed). - 6. DONE: user->policyagreed (analyse and proceed). - 7. DONE: groups->password - 8. DONE: assignment->emailteachers - 9. DONE: exercise->usepassword and exercise->password -10. DONE: exercise_assessments->generalcomment and teachercomment -11. DONE: glossary->allowprintview -12. DONE: quiz_responses->answer (analyse). -13. DONE: quiz_calculated->correctaswerformat. -14. DONE: quiz->questionsperpage. -15. DONE: quiz_categories->parent and sortorder. -16. DONE: Message subsystem (MIM). Available in SITE backups! -17. DONE: Detect questions without categories and create a category for them - (in backup process). See bug 2380. fix_orphaned_questions() function. -18. DONE: If the course hasn't users and the importer is a teacher, make him - teacher in the restored course. See bug 2381. -19. DONE: Move blocks code to libraries and use it in a standard way. Now new - blocks are supported by scheduled backup. -20. PROG: Review the lesson module completely! Check the upgrade process to - mimic it. Pending to decide if the grade field must go to the score - one when restoring old files!! (sent to Michael, Mark and Martin). -21. DONE: Review the workshop module completely! Check the upgrade process to - mimic it. -22. PROG: Review the wiki module fully. Now the wiki backup & restore seems to - be working fine. About binary contents loaded directly to DB, I - haven't found HOW TO LOAD them. I've opened Bug 2634 to see if - somebody can tell me how to reproduce it! -23. DONE: Add support for metacourses in backup and restore. Show a new option - to decide what to do (ignore, process). -24. DONE: Take out THEME from backup directory. -25. DONE: Add support for forum_read table in backup and restore. -26. DONE: chat_users->course and chat_users->lang. No changes required! -27. PROG: Make the backup/restore/config/logs/index.php XHTML 1.0 Transitional. - Done in manual backups, config, logs and restore. -28. DONE: Add course->theme, groups->them and user->theme. If no present, - default blank. -29. DONE: Add support for block instances in modules. Bug 2517. By Jon. -30. DELAY:Add support for user->dstpreset. After talking with Jon, delayed - because there isn't possible to recode it to destination server. But - sometime we should think in a solution (STAMPS or CHECKSUMS of DSTs). -31. DONE: Change mail's priority (bug 2647) if something goes wrong in scheduled backups. -32. DONE: quiz_questions->hidden and quiz_responses->originalquestion -33. DONE: quiz_question_version -34. DONE: Group images aren't included at all in backup/restore. Bug 2674. -35. DONE: New glossary log action: "view_entry". -36. PROG: Add support for quiz log action: "editquestions". Bug 2778 pending! -37. DONE: Convert module ids in every Wiki reference to other activities. -38. DONE: Convert every wiki formatted text to markdown. Bye, wikies! ;-) -39. TODO: Add backup/restore of new grade tables. - -Eloy (stronk7) -23-01-2004 diff --git a/backup/backup.php b/backup/backup.php index 9613c271148..338f1286412 100644 --- a/backup/backup.php +++ b/backup/backup.php @@ -1,4 +1,4 @@ -libdir/blocklib.php"); optional_variable($id); // course id - optional_variable($to); // id of course to import into afterwards. optional_variable($cancel); optional_variable($launch); @@ -17,13 +16,7 @@ if (!empty($id)) { if (!isteacheredit($id)) { - if (empty($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } else { - if (!isteacheredit($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } - } + error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); } } else { if (!isadmin()) { @@ -41,31 +34,26 @@ //Check backup_version if ($id) { - $linkto = "backup.php?id=".$id.((!empty($to)) ? '&to='.$to : ''); + $linkto = "backup.php?id=".$id; } else { $linkto = "backup.php"; } upgrade_backup_db($linkto); //Get strings - if (empty($to)) { - $strcoursebackup = get_string("coursebackup"); - } - else { - $strcoursebackup = get_string('importdata'); - } + $strcoursebackup = get_string("coursebackup"); $stradministration = get_string("administration"); //If no course has been selected or cancel button pressed if (!$id or $cancel) { print_header("$site->shortname: $strcoursebackup", $site->fullname, - "wwwroot/$CFG->admin/index.php\">$stradministration -> $strcoursebackup"); + "wwwroot/$CFG->admin/index.php\">$stradministration -> $strcoursebackup"); - if ($courses = get_courses('all','c.shortname','c.id,c.shortname,c.fullname')) { + if ($courses = get_courses()) { print_heading(get_string("choosecourse")); - print_simple_box_start("center"); + print_simple_box_start("CENTER"); foreach ($courses as $course) { - echo "id\">$course->fullname ($course->shortname)
"; + echo "id\">$course->fullname ($course->shortname)
"; } print_simple_box_end(); } else { @@ -96,11 +84,11 @@ //Print form print_heading("$strcoursebackup: $course->fullname ($course->shortname)"); - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); //Adjust some php variables to the execution of this script - @ini_set("max_execution_time","3000"); - raise_memory_limit("128M"); + ini_set("max_execution_time","3000"); + ini_set("memory_limit","80M"); //Call the form, depending the step we are if (!$launch) { diff --git a/backup/backup_check.html b/backup/backup_check.html index 7e3a421e828..226bff97e73 100644 --- a/backup/backup_check.html +++ b/backup/backup_check.html @@ -1,4 +1,4 @@ -id)) { if (!isteacheredit($course->id)) { - if (empty($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } else { - if (!isteacheredit($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } - } + error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); } } else { if (!isadmin()) { @@ -58,10 +52,6 @@ } //Check other parameters - if (!isset($backup_metacourse)) { - $backup_metacourse = 1; - } - if (!isset($backup_users)) { $backup_users = 1; } @@ -76,10 +66,6 @@ if (!isset($backup_course_files)) { $backup_course_files = 2; - } - - if (!isset($backup_messages)) { - $backup_messages = 1; } if ($count == 0) { @@ -87,10 +73,15 @@ } ?> -
-
"; + echo ""; + echo ""; - echo ""; - echo ""; echo "
"; print_single_button("$CFG->wwwroot/doc", NULL, get_string("documentation")); echo ""; + echo ""; print_single_button("phpinfo.php", NULL, get_string("phpinfo")); echo ""; - $options['sesskey'] = $USER->sesskey; - print_single_button("register.php", $options, get_string("registration")); + echo ""; + print_single_button("register.php", NULL, get_string("registration")); echo "
"; diff --git a/admin/innodb.php b/admin/innodb.php deleted file mode 100644 index 613b59cf988..00000000000 --- a/admin/innodb.php +++ /dev/null @@ -1,30 +0,0 @@ -MetaTables()) { - $db->debug = true; - foreach ($tables as $table) { - execute_sql("ALTER TABLE $table TYPE=INNODB; "); - } - } - } else { - notice_yesno("Are you sure you want convert all your tables to the InnoDB format?", - "innodb.php?confirm=yes&sesskey=".sesskey(), "index.php"); - } - -?> diff --git a/admin/lang.php b/admin/lang.php index bdeba67abdc..dedd53bbea1 100644 --- a/admin/lang.php +++ b/admin/lang.php @@ -20,22 +20,21 @@ $strlanguage = get_string("language"); $strcurrentlanguage = get_string("currentlanguage"); $strmissingstrings = get_string("missingstrings"); - $streditstrings = get_string("editstrings", 'admin'); - $stredithelpdocs = get_string("edithelpdocs", 'admin'); + $strcomparelanguage = get_string("comparelanguage"); $strthislanguage = get_string("thislanguage"); switch ($mode) { case "missing": - $navigation = "$strlanguage -> $strmissingstrings"; + $navigation = "$strlanguage -> $strmissingstrings"; $title = $strmissingstrings; - $button = '
'. + $button = ''. ''. - '
'; + ''; break; case "compare": - $navigation = "$strlanguage -> $streditstrings"; - $title = $streditstrings; - $button = '
'. + $navigation = "$strlanguage -> $strcomparelanguage"; + $title = $strcomparelanguage; + $button = ''. ''. '
'; break; @@ -56,17 +55,17 @@ if (!$mode) { $currlang = current_language(); $langs = get_list_of_languages(); - echo "
"; + echo "
"; echo "$strcurrentlanguage:"; echo ""; - echo popup_form ("$CFG->wwwroot/$CFG->admin/lang.php?lang=", $langs, "chooselang", $currlang, "", "", "", true); - echo '
'; - $options["lang"] = $currentlang; - print_single_button("http://moodle.org/download/lang/", $options, get_string("latestlanguagepack")); + echo popup_form ("$CFG->wwwroot/admin/lang.php?lang=", $langs, "chooselang", $currlang, "", "", "", true); echo "
"; print_heading("$strmissingstrings"); - print_heading("$streditstrings"); - print_heading("$stredithelpdocs"); + print_heading("$strcomparelanguage"); + echo "

"; + $options["lang"] = $currentlang; + print_single_button("http://moodle.org/download/lang/", $options, get_string("latestlanguagepack")); + echo "
"; print_footer(); exit; } @@ -92,7 +91,7 @@ foreach ($stringfiles as $file) { if (!file_exists("$langdir/$file")) { if (!touch("$langdir/$file")) { - echo "

".get_string("filemissing", "", "$langdir/$file")."

"; + echo "

".get_string("filemissing", "", "$langdir/$file")."

"; continue; } } @@ -129,7 +128,7 @@ foreach ($files as $filekey => $file) { // check all the help files. if (!file_exists("$langdir/help/$file")) { - echo "

".get_string("filemissing", "", "$langdir/help/$file")."

"; + echo "

".get_string("filemissing", "", "$langdir/help/$file")."

"; $somethingfound = true; continue; } @@ -140,7 +139,7 @@ } foreach ($files as $filekey => $file) { // check all the docs files. if (!file_exists("$langdir/docs/$file")) { - echo "

".get_string("filemissing", "", "$langdir/docs/$file")."

"; + echo "

".get_string("filemissing", "", "$langdir/docs/$file")."

"; $somethingfound = true; continue; } @@ -155,19 +154,16 @@ } else if ($mode == "compare") { if (isset($_POST['currentfile'])){ // Save a file - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } $newstrings = $_POST; unset($newstrings['currentfile']); if (lang_save_file($langdir, $currentfile, $newstrings)) { notify(get_string("changessaved")." ($langdir/$currentfile)", "green"); } else { - error("Could not save the file '$currentfile'!", "lang.php?mode=compare&currentfile=$currentfile"); + error("Could not save the file '$currentfile'!", "lang.php?mode=compare¤tfile=$currentfile"); } } - print_heading_with_help($streditstrings, "langedit"); + print_heading_with_help($strcomparelanguage, "langedit"); print_simple_box_start("center", "80%"); echo '
'; @@ -175,7 +171,7 @@ if ($file == $currentfile) { echo "$file   "; } else { - echo "$file   "; + echo "$file   "; } } echo '
'; @@ -186,7 +182,7 @@ if (!file_exists("$langdir/$currentfile")) { if (!touch("$langdir/$currentfile")) { - echo "

".get_string("filemissing", "", "$langdir/$currentfile")."

"; + echo "

".get_string("filemissing", "", "$langdir/$currentfile")."

"; continue; } } @@ -197,7 +193,7 @@ fclose($f); } else { $editable = false; - echo "

".get_string("makeeditable", "", "$langdir/$currentfile")."

"; + echo "

".get_string("makeeditable", "", "$langdir/$currentfile")."

"; } error_reporting(7); @@ -205,12 +201,6 @@ unset($string); include("$enlangdir/$currentfile"); $enstring = $string; - if ($currentlang != 'en' and $currentfile == 'moodle.php') { - $enstring['thislanguage'] = "<< TRANSLATORS: Specify the name of your language here. If possible use Unicode Numeric Character References >>"; - $enstring['thischarset'] = "<< TRANSLATORS: Specify the character set of your language here. Note that all text created while this language is active will be stored using this character set, so don't change it once you have set it. Example: iso-8859-1 >>"; - $enstring['thisdirection'] = "<< TRANSLATORS: This string specifies the direction of your text, either left-to-right or right-to-left. Insert either 'ltr' or 'rtl' here. >>"; - $enstring['parentlanguage'] = "<< TRANSLATORS: If your language has a Parent Language that Moodle should use when strings are missing from your language pack, then specify the code for it here. If you leave this blank then English will be used. Example: nl >>"; - } ksort($enstring); unset($string); @@ -219,16 +209,16 @@ if ($editable) { echo "
"; } - echo ""; + echo "
"; foreach ($enstring as $key => $envalue) { $envalue = nl2br(htmlspecialchars($envalue)); $envalue = preg_replace('/(\$a\-\>[a-zA-Z0-9]*|\$a)/', '$0', $envalue); // Make variables bold. $envalue = str_replace("%%","%",$envalue); $envalue = str_replace("\\","",$envalue); // Delete all slashes - echo "\n\n".''; - echo ''."\n"; - echo ''."\n"; + echo "\n\n"; + echo "\n"; + echo "\n"; $value = $string[$key]; $value = str_replace("\r","",$value); // Bad character caused by Windows @@ -240,10 +230,10 @@ $value = str_replace(">",">",$value); $value = str_replace('"',""",$value); - $cellcolour = $value ? '': 'class="highlight"'; + $cellcolour = $value ? $THEME->cellcontent: $THEME->highlight; if ($editable) { - echo '"; } - echo ''; + echo "\n"; } else { - echo ''; + echo "\n"; } } if ($editable) { - echo ''; + echo ""; } - echo '
'.$key.''.$envalue.'
cellheading\" nowrap valign=top>$keycellheading\" valign=top>$envalue'."\n"; + echo "\n"; if (isset($string[$key])) { $valuelen = strlen($value); } else { @@ -252,29 +242,28 @@ $cols=50; if (strstr($value, "\r") or strstr($value, "\n") or $valuelen > $cols) { $rows = ceil($valuelen / $cols); - echo ''."\n"; + echo "\n"; } else { if ($valuelen) { $cols = $valuelen + 2; } - echo ''; + echo "'.$value.'$value
 
'; - echo ''; - echo ' '; - echo ' '; - echo ' '; - echo '
 
"; + echo " "; + echo " "; + echo " "; + echo "
'; - echo '
'; + echo "
"; + echo ""; } @@ -305,7 +294,7 @@ function lang_save_file($path, $file, $strings) { ksort($strings); foreach ($strings as $key => $value) { - list($id, $stringname) = explode('XXX',$key); + list($id, $stringname) = explode("-",$key); if ($CFG->lang != "zh_hk" and $CFG->lang != "zh_tw") { // Some MB languages include backslash bytes $value = str_replace("\\","",$value); // Delete all slashes } diff --git a/admin/langdoc.php b/admin/langdoc.php deleted file mode 100755 index 159a7accb5f..00000000000 --- a/admin/langdoc.php +++ /dev/null @@ -1,236 +0,0 @@ -shortname: $stredithelpdocs: $currentfile", "$site->fullname", - "$stradministration -> ". - "$strconfiguration -> - $strlanguage -> $stredithelpdocs", - 'choosefile.popup', '', true); - - $currentlang = current_language(); - $langdir = "$CFG->dirroot/lang/$currentlang"; - $enlangdir = "$CFG->dirroot/lang/en"; - - // Shall I save POSTed data? - - if (isset($_POST['currentfile'])) { - if (confirm_sesskey()) { - if (langdoc_save_file($langdir, $currentfile, $_POST['filedata'])) { - notify(get_string("changessaved")." ($langdir/$currentfile)", "green"); - } else { - error("Could not save the file '$currentfile'!", "langdoc.php?currentfile=$currentfile&sesskey=$USER->sesskey"); - } - } - } - - error_reporting(0); // Error reporting turned off due to non-existing files - - // Generate selection for all help and documentation files - - // Get all files from /docs directory - - if (! $files = get_directory_list("$CFG->dirroot/lang/en/docs", "CVS")) { - error("Could not find English language docs files!"); - } - - $options = array(); - - foreach ($files as $filekey => $file) { // check all the docs files. - $options["docs/$file"] = "docs/$file"; - // add mark if file doesn't exist or is empty - if (( !file_exists("$langdir/docs/$file")) || (filesize("$langdir/docs/$file") == 0)) { - $options["docs/$file"] .= "$filemissingmark"; - } else { - if (filemtime("$langdir/docs/$file") < filemtime("$CFG->dirroot/lang/en/docs/$file")) { - $options["docs/$file"] .= "$fileoldmark"; - } - } - } - - // Get all files from /help directory - - 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. - $options["help/$file"] = "help/$file"; - if (( !file_exists("$langdir/help/$file")) || (filesize("$CFG->dirroot/lang/en/help/$file") == 0)) { - $options["help/$file"] .= "$filemissingmark"; - } else { - if (filemtime("$langdir/help/$file") < filemtime("$langdir/help/$file")) { - $options["help/$file"] .= "$fileoldmark"; - } - } - } - - echo "
"; - echo popup_form ("$CFG->wwwroot/$CFG->admin/langdoc.php?sesskey=$USER->sesskey&currentfile=", $options, "choosefile", $currentfile, "", "", "", true); - echo "
"; - - // Generate textareas - - if (!empty($currentfile)) { - - if (!file_exists("$langdir/$currentfile")) { - //check if directory exist - $pathparts = explode('/',$currentfile); - $checkpath = $langdir; - for ($a=0; $a < count($pathparts)-1 ; $a++) { - $checkpath .= "/".$pathparts[$a]; - if(!file_exists($checkpath)){ - if(!mkdir($checkpath)){ - echo ("Cannot create directory: $checkpath"); - } - } - } - // - // file doesn't exist - let's check webserver's permission to create it - // - if (!touch("$langdir/$currentfile")) { - // - // webserver is unable to create new file - // - echo "

".get_string("filemissing", "", " -$langdir/$currentfile")."

"; - $editable = false; - } else { - // - // webserver can create new file - we can delete it now and let - // the langdoc_save_file() create it again if its filesize() > 0 - // - $editable = true; - unlink("$langdir/$currentfile"); - } - } elseif ($f = fopen("$langdir/$currentfile","r+")) { - // - // file exists and is writeable - good for you, translator ;-) - // - $editable = true; - fclose($f); - } else { - // - // file exists but it is not writeable by web server process :-( - // - $editable = false; - echo "

".get_string("makeeditable", "", "$langdir/$currentfile") -."

"; - } - - echo "\n"; - if ($fileeditorinline == 1) { - echo "\n\n"; - } - echo "\n\n
\n"; - echo "\n"; - link_to_popup_window("/lang/en/$currentfile", "popup", get_string("preview")); - echo "
\n"; - - if ($editable) { - echo "
"; - echo ''; - echo ''; - } - - echo "\n"; - link_to_popup_window("/lang/$currentlang/$currentfile", "popup", get_string("preview")); - echo "
"; - - if ($editable) { - echo '
'; - echo ''; - } - - error_reporting($CFG->debug); - } - - print_footer(); - -////////////////////////////////////////////////////////////////////// - -function langdoc_save_file($path, $file, $content) { - -// $path is a full pathname to the file -// $file is the file to overwrite. -// $content are data to write - - global $CFG, $USER; - - error_reporting(0); - - if (!$f = fopen("$path/$file","w")) { - error_reporting($CFG->debug); - return false; - } - - error_reporting($CFG->debug); - - $content = str_replace("\r", "",$content); // Remove linefeed characters - $content = preg_replace("/\n{3,}/", "\n\n", $content); // Collapse runs of blank lines - $content = str_replace("\\","",$content); // Delete all slashes - $content = str_replace("%%","%",$content); - $content = trim($content); // Delete leading/trailing whitespace - - fwrite($f, $content); - - fclose($f); - - // Remove file if its empty - - if (filesize("$path/$file") == 0) { - unlink("$path/$file"); - } - - return true; -} - -?> diff --git a/admin/maintenance.php b/admin/maintenance.php deleted file mode 100644 index a1ef20c6471..00000000000 --- a/admin/maintenance.php +++ /dev/null @@ -1,79 +0,0 @@ -dataroot.'/1/maintenance.html'; - - if ($form = data_submitted()) { - if (confirm_sesskey()) { - if ($form->action == "disable") { - unlink($filename); - redirect('index.php', get_string('sitemaintenanceoff','admin')); - } else { - $file = fopen($filename, 'w'); - fwrite($file, $form->text); - fclose($file); - redirect('index.php', get_string('sitemaintenanceon', 'admin')); - } - } - } - -/// Print the header stuff - - $strmaintenance = get_string('sitemaintenancemode', 'admin'); - $stradmin = get_string('administration'); - $strconfiguration = get_string('configuration'); - - print_header("$SITE->shortname: $strmaintenance", $SITE->fullname, - "$stradmin -> ". - "$strconfiguration -> $strmaintenance"); - - print_heading($strmaintenance); - -/// Print the appropriate form - - if (file_exists($filename)) { // We are in maintenance mode - echo '
'; - echo '
'; - echo ''; - echo ''; - echo '

'; - echo '
'; - echo '
'; - } else { // We are not in maintenance mode - $usehtmleditor = can_use_html_editor(); - - echo '
'; - echo '
'; - echo ''; - echo ''; - echo '

'; - echo '

'.get_string('optionalmaintenancemessage', 'admin').':

'; - echo '
'; - print_textarea($usehtmleditor, 20, 50, 600, 400, "text"); - echo '
'; - echo '
'; - echo '
'; - - if ($usehtmleditor) { - use_html_editor(); - } - } - - print_footer(); -?> diff --git a/admin/module.php b/admin/module.php index dccac9c1a9b..a4466663f1d 100644 --- a/admin/module.php +++ b/admin/module.php @@ -13,13 +13,10 @@ error("Site isn't defined!"); } + /// If data submitted, then process and store. - if ($config = data_submitted()) { - - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } + if ($config = data_submitted()) { print_header(); foreach ($config as $name => $value) { set_config($name, $value); @@ -32,7 +29,6 @@ require_variable($module); - $module = clean_filename($module); require_once("$CFG->dirroot/mod/$module/lib.php"); @@ -48,10 +44,10 @@ print_heading($strmodulename); - print_simple_box("
".get_string("configwarning", 'admin')."
", "center", "50%"); + print_simple_box("
".get_string("configwarning")."
", "center", "50%"); echo "
"; - print_simple_box_start("center", ""); + print_simple_box_start("center", "", "$THEME->cellheading"); include("$CFG->dirroot/mod/$module/config.html"); print_simple_box_end(); diff --git a/admin/modules.php b/admin/modules.php index 7c2ed40cf3e..6b151372dd7 100644 --- a/admin/modules.php +++ b/admin/modules.php @@ -42,7 +42,7 @@ /// If data submitted, then process and store. - if (!empty($hide) and confirm_sesskey()) { + if (!empty($hide)) { if (!$module = get_record("modules", "name", $hide)) { error("Module doesn't exist!"); } @@ -50,7 +50,7 @@ set_field("course_modules", "visible", "0", "module", $module->id); // Hide all related activity modules } - if (!empty($show) and confirm_sesskey()) { + if (!empty($show)) { if (!$module = get_record("modules", "name", $show)) { error("Module doesn't exist!"); } @@ -58,13 +58,13 @@ set_field("course_modules", "visible", "1", "module", $module->id); // Show all related activity modules } - if (!empty($delete) and confirm_sesskey()) { + if (!empty($delete)) { $strmodulename = get_string("modulename", "$delete"); if (empty($confirm)) { notice_yesno(get_string("moduledeleteconfirm", "", $strmodulename), - "modules.php?delete=$delete&confirm=$delete&sesskey=$USER->sesskey", + "modules.php?delete=$delete&confirm=$delete", "modules.php"); print_footer(); exit; @@ -144,17 +144,25 @@ /// Print the table of all modules + if (empty($THEME->custompix)) { + $pixpath = "../pix"; + $modpixpath = "../mod"; + } else { + $pixpath = "../theme/$CFG->theme/pix"; + $modpixpath = "../theme/$CFG->theme/pix/mod"; + } + $table->head = array ($stractivitymodule, $stractivities, $strversion, "$strhide/$strshow", $strdelete, $strsettings); - $table->align = array ("left", "right", "left", "center", "center", "center"); - $table->wrap = array ("nowrap", "", "", "", "",""); - $table->size = array ("100%", "10", "10", "10", "10","12"); + $table->align = array ("LEFT", "RIGHT", "LEFT", "CENTER", "CENTER", "CENTER"); + $table->wrap = array ("NOWRAP", "", "", "", "",""); + $table->size = array ("100%", "10", "10", "10", "10","12"); $table->width = "100"; foreach ($modulebyname as $modulename => $module) { - $icon = "modpixpath/$module->name/icon.gif\" hspace=\"10\" height=\"16\" width=\"16\" border=\"0\" alt=\"\" />"; + $icon = "name/icon.gif\" hspace=10 height=16 width=16 border=0>"; - $delete = "name&sesskey=$USER->sesskey\">$strdelete"; + $delete = "name\">$strdelete"; if (file_exists("$CFG->dirroot/mod/$module->name/config.html")) { $settings = "name\">$strsettings"; @@ -165,12 +173,12 @@ $count = count_records("$module->name"); if ($module->visible) { - $visible = "name&sesskey=$USER->sesskey\" title=\"$strhide\">". - "pixpath/i/hide.gif\" align=\"middle\" height=\"16\" width=\"16\" border=\"0\" alt=\"\" />"; + $visible = "name\" title=\"$strhide\">". + ""; $class = ""; } else { - $visible = "name&sesskey=$USER->sesskey\" title=\"$strshow\">". - "pixpath/i/show.gif\" align=\"middle\" height=\"16\" width=\"16\" border=\"0\" alt=\"\" />"; + $visible = "name\" title=\"$strshow\">". + ""; $class = "class=\"dimmed_text\""; } if ($module->name == "forum") { @@ -178,7 +186,7 @@ $visible = ""; $class = ""; } - $table->data[] = array ("$icon $modulename", $count, $module->version, $visible, $delete, $settings); + $table->data[] = array ("

$icon $modulename

", $count, $module->version, $visible, $delete, $settings); } print_table($table); diff --git a/admin/process_email.php b/admin/process_email.php deleted file mode 100755 index e148c68448b..00000000000 --- a/admin/process_email.php +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/php -f -noreplyaddress) { - $user->email = $_ENV['SENDER']; - - if (!validate_email($user->email)) { - die(); - } - - $site = get_site(); - $subject = get_string('noreplybouncesubject','moodle',$site->fullname); - $body = get_string('noreplybouncemessage','moodle',$site->fullname)."\n\n"; - - $fd = fopen('php://stdin','r'); - if ($fd) { - while(!feof($fd)) { - $body .= fgets($fd); - } - fclose($fd); - } - - $user->id = 0; // to prevent anything annoying happening - - $from->firstname = null; - $from->lastname = null; - $from->email = '<>'; - $from->maildisplay = true; - - email_to_user($user,$from,$subject,$body); - die (); -} -/// ALL OTHER PROCESSING -// we need to split up the address -$prefix = substr($address,0,4); -$mod = substr($address,4,2); -$modargs = substr($address,6,-16); -$hash = substr($address,-16); - -if (substr(md5($prefix.$mod.$modargs.$CFG->siteidentifier),0,16) != $hash) { - die("HASH DIDN'T MATCH!\n"); -} -list(,$modid) = unpack('C',base64_decode($mod.'==')); - -if ($modid == '0') { // special - $modname = 'moodle'; -} -else { - $modname = get_field("modules","name","id",$modid); - require_once('mod/'.$modname.'/lib.php'); -} -$function = $modname.'_process_email'; - -if (!function_exists($function)) { - die(); -} -$fd = fopen('php://stdin','r'); -if (!$fd) { - exit(); -} - -while(!feof($fd)) { - $body .= fgets($fd); -} - -$function($modargs,$body); - -fclose($handle); - - - -?> \ No newline at end of file diff --git a/admin/register.php b/admin/register.php index a4ea25bf546..ba2c3faf8b6 100644 --- a/admin/register.php +++ b/admin/register.php @@ -1,4 +1,4 @@ -country = $CFG->country; } - if (empty($CFG->siteidentifier)) { // Unique site identification code - set_config('siteidentifier', random_string(32)); + if (!$admin->secret) { // secret field hasn't been set yet + $admin->secret = random_string(15); + + if (!set_field("user", "secret", $admin->secret, "id", $admin->id)) { + error("Could not set admin's secret string!"); + } } @@ -39,7 +39,7 @@ print_header("$site->shortname: $strregistration", "$site->fullname", "admin/index.php\">$stradministration -> $strregistration"); - print_heading($strregistration); + print_heading($strmanagemodules); print_simple_box($strregistrationinfo, "center", "70%"); echo "
"; @@ -47,49 +47,46 @@ /// Print the form - print_simple_box_start("center", ""); + print_simple_box_start("center", "", "$THEME->cellheading"); - echo "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "
".get_string("location")."
\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "wwwroot\">\n"; - echo "siteidentifier\">\n"; + echo "secret\">\n"; echo "\n"; echo "\n"; echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; echo "version\">\n"; echo "release\">\n"; echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; diff --git a/admin/replace.php b/admin/replace.php deleted file mode 100644 index 33d9c8d65df..00000000000 --- a/admin/replace.php +++ /dev/null @@ -1,58 +0,0 @@ -'; - echo ''; - echo ''; - echo 'Search whole database for:
'; - echo 'Replace with this string:

'; - echo '
'; - echo ''; - echo ''; - print_simple_box_end(); - die; -} - - -if (!$tables = $db->Metatables() ) { // No tables yet at all. - error("no tables"); -} - -print_simple_box_start('center'); -foreach ($tables as $table) { - if (in_array($table, array($CFG->prefix.'config'))) { // Don't process these - continue; - } - if ($columns = $db->MetaColumns($table, false)) { - foreach ($columns as $column => $data) { - if (in_array($data->type, array('text','mediumtext','longtext','varchar'))) { // Text stuff only - $db->debug = true; - execute_sql("UPDATE {$CFG->prefix}$table SET $column = REPLACE($column, '$search', '$replace');"); - $db->debug = false; - } - } - } -} -print_simple_box_end(); - -print_continue('index.php'); - -?> diff --git a/admin/site.html b/admin/site.html index fd1fa18fcbd..9199b65d72f 100644 --- a/admin/site.html +++ b/admin/site.html @@ -1,20 +1,20 @@ - -
Moodle URL:$CFG->wwwroot

Moodle URL:

$CFG->wwwroot

".get_string("currentversion").":$CFG->release ($CFG->version)

".get_string("currentversion").":

$CFG->release ($CFG->version)

".get_string("fullsitename").":fullname\">

".get_string("fullsitename").":

fullname\">

".get_string("country").":"; + echo "

".get_string("country").":

"; choose_from_menu (get_list_of_countries(), "country", $admin->country, get_string("selectacountry")."...", "", ""); echo "

country\" title=\"See the current list of sites\" target=_blank>".get_string("publicdirectory").":"; + echo "

".get_string("publicdirectory").":

"; $options[0] = get_string("publicdirectory0"); $options[1] = get_string("publicdirectory1"); $options[2] = get_string("publicdirectory2"); @@ -98,77 +95,23 @@ echo "

".get_string("registrationcontact").":\n"; - $options[0] = get_string("registrationcontactno"); - $options[1] = get_string("registrationcontactyes"); - choose_from_menu ($options, "contact", "1", "", "", ""); - unset($options); - echo "

\n"; echo "
".get_string("statistics").":"; - echo "
(".get_string("notpublic").')'; - echo "
"; - - $count = count_records('course')-1; - echo get_string("courses").": ".$count; - echo "\n"; - echo '
'; - - $count = count_records('user')-1; - echo get_string("users").": ".$count; - echo "\n"; - echo '
'; - - $count = count_records('user_students'); - echo get_string("enrolments").": ".$count; - echo "\n"; - echo '
'; - - $count = count_records('user_teachers'); - echo get_string("teachers").": ".$count; - echo "\n"; - echo '
'; - - $count = count_records('forum_posts'); - echo get_string("posts", 'forum').": ".$count; - echo "\n"; - echo '
'; - - $count = count_records('quiz_questions'); - echo get_string("questions", 'quiz').": ".$count; - echo "\n"; - echo '
'; - - $count = count_records('resource'); - echo get_string("modulenameplural", "resource").": ".$count; - echo "\n"; - echo '
'; - - echo "

".get_string("administrator").":


".get_string("administrator")."

".get_string("email").":

email\">

".get_string("administrator").":
".get_string("email").":email\">
".get_string("registrationemail").":\n"; + echo "

".get_string("registrationemail").":

\n"; $options[0] = get_string("registrationno"); $options[1] = get_string("registrationyes"); choose_from_menu ($options, "mailme", "1", "", "", ""); @@ -176,9 +119,9 @@ echo "

 
 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -dirroot.'/auth/ldap/config.html'); -?> - - - - diff --git a/auth/cas/forbidden.html b/auth/cas/forbidden.html deleted file mode 100644 index fb4674bef68..00000000000 --- a/auth/cas/forbidden.html +++ /dev/null @@ -1,8 +0,0 @@ -
:" /> +> + + + + - - - + + - - + - - - + + - - - - - - - + - - - + + + + + + - - - + + - - - + + - - - + + - +

:

:" /> +

:

:
- +

:


+ "; @@ -22,20 +22,19 @@ helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); } else { helpbutton("html", get_string("helphtml"), "moodle", true, true); - } + } ?>
summary); ?>
: get_string("frontpagenews"), - FRONTPAGECOURSELIST => get_string("frontpagecourselist"), - FRONTPAGECATEGORYNAMES => get_string("frontpagecategorynames"), - FRONTPAGETOPICONLY => get_string("frontpagetopiconly")); +

:

get_string("frontpagenews"), + "1" => get_string("frontpagecourselist"), + "2" => get_string("frontpagecategorynames")); if (count_records("course") > 200) { unset($options[1]); if ($form->frontpage == 1) { @@ -46,19 +45,9 @@ ?>
:numsections, ""); - ?> -
: +

:

"0 $newsitems", @@ -76,41 +65,56 @@ ?>
:" /> - () +

:

numsections, ""); + ?> +

:

+ ()
:" /> +

:

()
:" /> - () +

:

+ ()
:" /> - () +

:

+ ()
" />">
- - - - + + + + + diff --git a/admin/site.php b/admin/site.php index 31411f7dfea..d76248e076c 100644 --- a/admin/site.php +++ b/admin/site.php @@ -1,7 +1,6 @@ -id)) { // Additional identity check - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - } + if ($form = data_submitted()) { validate_form($form, $err); if (count($err) == 0) { set_config("frontpage", $form->frontpage); - if ($form->frontpage = FRONTPAGETOPICONLY) { - $form->numsections = 1; // Force the topic display for this format - } $form->timemodified = time(); @@ -39,17 +29,14 @@ error("Serious Error! Could not update the site record! (id = $form->id)"); } } else { - // We are about to create the site "course" - require_once($CFG->dirroot.'/lib/blocklib.php'); + // [pj] We are about to create the site, so let's add some blocks... + // calendar_month is included as a Moodle feature advertisement ;-) + require_once('../lib/blocklib.php'); + $form->blockinfo = blocks_get_default_blocks(NULL, 'site_main_menu,admin,course_list:course_summary,calendar_month'); - if ($newid = insert_record('course', $form)) { - - // Site created, add blocks for it - $page = page_create_object(PAGE_COURSE_VIEW, $newid); - blocks_repopulate_page($page); // Return value not checked because you can always edit later - - $cat->name = get_string('miscellaneous'); - if (insert_record('course_categories', $cat)) { + if ($newid = insert_record("course", $form)) { + $cat->name = get_string("miscellaneous"); + if (insert_record("course_categories", $cat)) { redirect("$CFG->wwwroot/$CFG->admin/index.php", get_string("changessaved"), 1); } else { error("Serious Error! Could not set up a default course category!"); @@ -81,7 +68,7 @@ $form->numsections = 0; $form->id = ""; $form->category = 0; - $form->format = 'site'; // Only for this course + $form->format = "social"; $form->teacher = get_string("defaultcourseteacher"); $form->teachers = get_string("defaultcourseteachers"); $form->student = get_string("defaultcoursestudent"); @@ -112,7 +99,7 @@ if ($firsttime) { print_header(); print_heading($strsitesettings); - print_simple_box(get_string("configintrosite", 'admin'), "center", "50%"); + print_simple_box(get_string("configintrosite"), "center", "50%"); echo "
"; } else { print_header("$site->shortname: $strsitesettings", "$site->fullname", @@ -121,23 +108,17 @@ print_heading($strsitesettings); } - if (empty($USER->id)) { // New undefined admin user - $USER->htmleditor = true; - $sesskey = ''; - } else { - $sesskey = $USER->sesskey; - } - $usehtmleditor = can_use_html_editor(); $defaultformat = FORMAT_HTML; + if ($usehtmleditor = can_use_richtext_editor()) { + $onsubmit = "onsubmit=\"copyrichtext(form.summary);\""; + } else { + $onsubmit = ""; + } - print_simple_box_start("center", ""); + print_simple_box_start("center", "", "$THEME->cellheading"); include("site.html"); print_simple_box_end(); - if ($usehtmleditor) { - use_html_editor(); - } - if (!$firsttime) { print_footer(); } diff --git a/admin/timezone.php b/admin/timezone.php index 028e6080e57..0821d18f62d 100644 --- a/admin/timezone.php +++ b/admin/timezone.php @@ -17,7 +17,7 @@ print_heading(""); - if (isset($zone) and confirm_sesskey()) { + if (isset($zone)) { $db->debug = true; echo "
"; execute_sql("UPDATE {$CFG->prefix}user SET timezone = '$zone'"); @@ -33,26 +33,24 @@ $user->timezone = 99; } $timenow = time(); - $timeformat = get_string('strftimedaytime'); for ($tz = -26; $tz <= 26; $tz++) { $zone = (float)$tz/2.0; $usertime = $timenow + ($tz * 1800); if ($tz == 0) { - $timezones["$zone"] = gmstrftime($timeformat, $usertime)." (GMT)"; + $timezones["$zone"] = gmstrftime("%a, %I:%M %p", $usertime)." (GMT)"; } else if ($tz < 0) { - $timezones["$zone"] = gmstrftime($timeformat, $usertime)." (GMT$zone)"; + $timezones["$zone"] = gmstrftime("%a, %I:%M %p", $usertime)." (GMT$zone)"; } else { - $timezones["$zone"] = gmstrftime($timeformat, $usertime)." (GMT+$zone)"; + $timezones["$zone"] = gmstrftime("%a, %I:%M %p", $usertime)." (GMT+$zone)"; } } - echo '
'; + echo "
"; echo "$strusers ($strall): "; choose_from_menu ($timezones, "zone", $user->timezone, get_string("serverlocaltime"), "", "99"); - echo "sesskey\">"; - echo ""; - echo "
"; + echo ""; + echo ""; print_footer(); diff --git a/admin/timezoneimport.php b/admin/timezoneimport.php deleted file mode 100644 index 34c5347b341..00000000000 --- a/admin/timezoneimport.php +++ /dev/null @@ -1,139 +0,0 @@ -libdir.'/filelib.php'); - require_once($CFG->libdir.'/olson.php'); - - $ok = optional_param('ok'); - - require_login(); - - if (!isadmin()) { - error('Only administrators can use this page!'); - } - - if (!$site = get_site()) { - error('Site isn\'t defined!'); - } - -/// Print headings - - $stradministration = get_string('administration'); - $strconfiguration = get_string('configuration'); - $strcalendarsettings = get_string('calendarsettings', 'admin'); - $strimporttimezones = get_string('importtimezones', 'admin'); - - print_header("$site->shortname: $strcalendarsettings", "$site->fullname", - "$stradministration -> ". - "$strconfiguration -> ". - "$strcalendarsettings -> $strimporttimezones"); - - print_heading($strimporttimezones); - - if (!$ok or !confirm_sesskey()) { - $message = '

'; - $message .= $CFG->dataroot.'/temp/olson.txt
'; - $message .= $CFG->dataroot.'/temp/timezones.txt
'; - $message .= 'http://download.moodle.org/timezones/
'; - $message .= ''.$CFG->dirroot.'/lib/timezones.txt
'; - $message .= '

'; - - $message = get_string("configintrotimezones", 'admin', $message); - - notice_yesno($message, 'timezoneimport.php?ok=1&sesskey='.sesskey(), 'calendar.php'); - - print_footer(); - exit; - } - - -/// Try to find a source of timezones to import from - - $importdone = false; - -/// First, look for an Olson file locally - - $source = $CFG->dataroot.'/temp/olson.txt'; - if (!$importdone and is_readable($source)) { - if ($timezones = olson_to_timezones($source)) { - update_timezone_records($timezones); - $importdone = $source; - } - } - -/// Next, look for a CSV file locally - - $source = $CFG->dataroot.'/temp/timezones.txt'; - if (!$importdone and is_readable($source)) { - if ($timezones = get_records_csv($source, 'timezone')) { - update_timezone_records($timezones); - $importdone = $source; - } - } - -/// Otherwise, let's try moodle.org's copy - - $source = 'http://download.moodle.org/timezones/'; - if (!$importdone and ini_get('allow_url_fopen')) { - if (is_readable($source) && $contents = file_get_contents($source)) { // Grab whole page - if ($file = fopen($CFG->dataroot.'/temp/timezones.txt', 'w')) { // Make local copy - fwrite($file, $contents); - fclose($file); - if ($timezones = get_records_csv($CFG->dataroot.'/temp/timezones.txt', 'timezone')) { // Parse it - update_timezone_records($timezones); - $importdone = $source; - } - unlink($CFG->dataroot.'/temp/timezones.txt'); - } - } - } - - -/// Final resort, use the copy included in Moodle - - $source = $CFG->dirroot.'/lib/timezones.txt'; - if (!$importdone and is_readable($source)) { // Distribution file - if ($timezones = get_records_csv($source, 'timezone')) { - update_timezone_records($timezones); - $importdone = $source; - } - } - - -/// That's it! - - if ($importdone) { - $a = null; - $a->count = count($timezones); - $a->source = $importdone; - print_heading(get_string('importtimezonescount', 'admin', $a), '', 3); - - print_continue('calendar.php'); - - $timezonelist = array(); - foreach ($timezones as $timezone) { - if (isset($timezonelist[$timezone->name])) { - $timezonelist[$timezone->name]++; - } else { - $timezonelist[$timezone->name] = 1; - } - } - ksort($timezonelist); - - echo "
"; - print_simple_box_start('center'); - foreach ($timezonelist as $name => $count) { - echo "$name ($count)
"; - } - print_simple_box_end(); - - } else { - print_heading(get_string('importtimezonesfailed', 'admin'), '', 3); - print_continue('calendar.php'); - } - - print_footer(); - -?> diff --git a/admin/upgradelogs.php b/admin/upgradelogs.php index dc7fabdaf14..07771ba5900 100644 --- a/admin/upgradelogs.php +++ b/admin/upgradelogs.php @@ -33,12 +33,10 @@ if (empty($_GET['confirm'])) { notice_yesno(get_string("upgradelogsinfo", "admin"), - "upgradelogs.php?confirm=true&sesskey=$USER->sesskey", + "upgradelogs.php?confirm=true", "index.php"); print_footer(); exit; - } else if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); } diff --git a/admin/uploaduser.php b/admin/uploaduser.php index 3fdd3ef4440..4575e8e6a5f 100755 --- a/admin/uploaduser.php +++ b/admin/uploaduser.php @@ -1,4 +1,4 @@ -dirroot.'/lib/uploadlib.php'); - $um = new upload_manager('userfile',false,false,null,false,0); - if ($um->preprocess_files()) { - $filename = $um->files['userfile']['tmp_name']; + if ($filename = valid_uploaded_file($_FILES['userfile'])) { //Fix mac/dos newlines $text = my_file_get_contents($filename); @@ -81,8 +73,7 @@ "department" => 1, "city" => 1, "country" => 1, - "lang" => 1, - "auth" => 1, + "lang" => 1, "timezone" => 1); $optional = array("idnumber" => 1, "icq" => 1, @@ -114,7 +105,7 @@ foreach ($header as $i => $h) { $h = trim($h); $header[$i] = $h; // remove whitespace if (!($required[$h] or $optionalDefaults[$h] or $optional[$h])) { - error(get_string('invalidfieldname', 'error', $h), 'uploaduser.php?sesskey='.$USER->sesskey); + error(get_string('invalidfieldname', 'error', $h), 'uploaduser.php'); } if ($required[$h]) { $required[$h] = 2; @@ -123,7 +114,7 @@ // check for required fields foreach ($required as $key => $value) { if ($value < 2) { - error(get_string('fieldrequired', 'error', $key), 'uploaduser.php?sesskey='.$USER->sesskey); + error(get_string('fieldrequired', 'error', $key), 'uploaduser.php'); } } $linenum = 2; // since header is line 1 @@ -148,22 +139,19 @@ // check for required values if ($required[$name] and !$value) { error(get_string('missingfield', 'error', $name). " ". - get_string('erroronline', 'error', $linenum) .". ". - get_string('processingstops', 'error'), - 'uploaduser.php?sesskey='.$USER->sesskey); + get_string('erroronline', 'error', $linenum), + 'uploaduser.php'); } // password needs to be encrypted else if ($name == "password") { $user->password = md5($value); } - else if ($name == "username") { - $user->username = addslashes(moodle_strtolower($value)); - } // normal entry else { $user->{$name} = addslashes($value); } } + $user->auth = 'manual'; $user->confirmed = 1; $user->timemodified = time(); $linenum++; @@ -178,7 +166,7 @@ $addgroup[2] = $user->group3; $addgroup[3] = $user->group4; $addgroup[4] = $user->group5; - $courses = get_courses("all",'c.sortorder','c.id,c.shortname,c.fullname,c.sortorder'); + $courses = get_courses("all"); for ($i=0; $i<5; $i++) { $courseid[$i]=0; } @@ -189,7 +177,7 @@ } } } - if (get_record("user","username",$username) || !($user->id = insert_record("user", $user))) { + if (! $user->id = insert_record("user", $user)) { if (!$user = get_record("user", "username", "changeme")) { // half finished user from another time //Record not added - probably because user is already registered //In this case, output userid from previous registration @@ -270,8 +258,7 @@ echo '
'; echo '
'. $strchoose.':'. - ''. - ''. + ''. ''. '

'; echo '
'; diff --git a/admin/user.php b/admin/user.php index 9ae4bb7b64a..8ac5b4d364d 100644 --- a/admin/user.php +++ b/admin/user.php @@ -1,4 +1,4 @@ -firstname = get_string("admin"); @@ -62,14 +57,12 @@ $USER = $user; $USER->loggedin = true; - $USER->sessionIP = md5(getremoteaddr()); // Store the current IP in the session $USER->site = $CFG->wwwroot; $USER->admin = true; $USER->teacher["$site->id"] = true; $USER->newadminuser = true; - sesskey(); // for added security, used to check script parameters - redirect("$CFG->wwwroot/user/edit.php?id=$user->id&course=$site->id"); + redirect("$CFG->wwwroot/user/edit.php?id=$user->id&course=$site->id"); exit; } else { @@ -84,7 +77,7 @@ error("You must be an administrator to edit users this way."); } - if ($newuser and confirm_sesskey()) { // Create a new user + if ($newuser) { // Create a new user $user->auth = "manual"; $user->firstname = ""; $user->lastname = ""; @@ -101,8 +94,8 @@ } } - redirect("$CFG->wwwroot/user/edit.php?id=$user->id&course=$site->id"); - + redirect("$CFG->wwwroot/user/edit.php?id=$user->id&course=$site->id"); + } else { // List all users for editing $stredituser = get_string("edituser"); @@ -115,17 +108,17 @@ $strshowallusers = get_string("showallusers"); if ($firstinitial or $lastinitial or $search or $page) { - print_header("$site->shortname: $stredituser", $site->fullname, + print_header("$site->shortname: $stredituser", $site->fullname, "$stradministration -> ". "$strusers -> ". "$stredituser"); } else { - print_header("$site->shortname: $stredituser", $site->fullname, + print_header("$site->shortname: $stredituser", $site->fullname, "$stradministration -> ". "$strusers -> $stredituser"); } - if ($confirmuser and confirm_sesskey()) { + if ($confirmuser) { if (!$user = get_record("user", "id", "$confirmuser")) { error("No such user!"); } @@ -141,7 +134,7 @@ notify(get_string("usernotconfirmed", "", fullname($user, true))); } - } else if ($delete and confirm_sesskey()) { // Delete a selected user, after confirmation + } else if ($delete) { // Delete a selected user, after confirmation if (!$user = get_record("user", "id", "$delete")) { error("No such user!"); } @@ -154,7 +147,7 @@ if ($confirm != md5($delete)) { $fullname = fullname($user, true); notice_yesno(get_string("deletecheckfull", "", "'$fullname'"), - "user.php?delete=$delete&confirm=".md5($delete)."&sesskey=$USER->sesskey", "user.php"); + "user.php?delete=$delete&confirm=".md5($delete), "user.php"); exit; } else if (!$user->deleted) { @@ -195,10 +188,10 @@ } else { $columnicon = $dir == "ASC" ? "down":"up"; } - $columnicon = " pixpath/t/$columnicon.gif\" alt=\"\" />"; + $columnicon = " pixpath/t/$columnicon.gif\" />"; } - $$column = "".$string[$column]."$columnicon"; + $$column = "".$string[$column]."$columnicon"; } if ($sort == "name") { @@ -225,8 +218,8 @@ echo "

"; echo get_string("firstname")." : "; if ($firstinitial) { - echo " $strall "; + echo " $strall "; } else { echo " $strall "; } @@ -234,8 +227,8 @@ if ($letter == $firstinitial) { echo " $letter "; } else { - echo " $letter "; + echo " $letter "; } } echo "
"; @@ -244,8 +237,8 @@ echo get_string("lastname")." : "; if ($lastinitial) { - echo " $strall "; + echo " $strall "; } else { echo " $strall "; } @@ -253,15 +246,15 @@ if ($letter == $lastinitial) { echo " $letter "; } else { - echo " $letter "; + echo " $letter "; } } echo "

"; echo "
"; print_paging_bar($usercount, $page, $perpage, - "user.php?sort=$sort&dir=$dir&perpage=$perpage&firstinitial=$firstinitial&lastinitial=$lastinitial&search=$search&"); + "user.php?sort=$sort&dir=$dir&perpage=$perpage&firstinitial=$firstinitial&lastinitial=$lastinitial&search=$search&"); flush(); @@ -280,8 +273,6 @@ $matchstring = implode(", ", $match); print_heading(get_string("nousersmatching", "", $matchstring)); - $table = NULL; - } else { $countries = get_list_of_countries(); @@ -309,7 +300,7 @@ if ($user->id == $USER->id or $user->username == "changeme") { $deletebutton = ""; } else { - $deletebutton = "id&sesskey=$USER->sesskey\">$strdelete"; + $deletebutton = "id\">$strdelete"; } if ($user->lastaccess) { $strlastaccess = format_time(time() - $user->lastaccess); @@ -317,41 +308,45 @@ $strlastaccess = get_string("never"); } if ($user->confirmed == 0) { - $confirmbutton = "id&sesskey=$USER->sesskey\">" . get_string("confirm") . ""; + $confirmbutton = "id\">" . get_string("confirm") . ""; } else { $confirmbutton = ""; } $fullname = fullname($user, true); - $table->data[] = array ("id&course=$site->id\">$fullname", + $table->data[] = array ("id&course=$site->id\">$fullname", "$user->email", "$user->city", "$user->country", $strlastaccess, - "id&course=$site->id\">$stredit", + "id&course=$site->id\">$stredit", $deletebutton, $confirmbutton); } - } - echo "
"; - echo "
"; - echo ""; - echo ""; - if ($search) { - echo ""; - } - echo "
"; - echo "
"; - print_heading("sesskey\">".get_string("addnewuser").""); + echo "
"; + echo "
"; + echo ""; + echo ""; + if ($search) { + echo ""; + } + echo "
"; + echo "
"; + if (is_internal_auth()){ + print_heading("".get_string("addnewuser").""); + } - if (!empty($table)) { print_table($table); + print_paging_bar($usercount, $page, $perpage, - "user.php?sort=$sort&dir=$dir&perpage=$perpage". - "&firstinitial=$firstinitial&lastinitial=$lastinitial&search=$search&"); - print_heading("sesskey\">".get_string("addnewuser").""); + "user.php?sort=$sort&dir=$dir&perpage=$perpage". + "&firstinitial=$firstinitial&lastinitial=$lastinitial&search=$search&"); + } + if (is_internal_auth()){ + print_heading("".get_string("addnewuser").""); + } print_footer(); } diff --git a/admin/users.php b/admin/users.php index 83359ed3094..a7b29f1d415 100644 --- a/admin/users.php +++ b/admin/users.php @@ -1,4 +1,4 @@ -align = array ("right", "left"); - $table->data[] = array("sesskey\">".get_string("authentication")."", + $table->data[] = array("".get_string("authentication")."", get_string("adminhelpauthentication")); $table->data[] = array("".get_string("edituser")."", get_string("adminhelpedituser")); if (is_internal_auth()) { - $table->data[] = array("wwwroot/$CFG->admin/user.php?newuser=true&sesskey=$USER->sesskey\">".get_string("addnewuser")."", + $table->data[] = array("wwwroot/$CFG->admin/user.php?newuser=true\">".get_string("addnewuser")."", get_string("adminhelpaddnewuser")); - $table->data[] = array("wwwroot/$CFG->admin/uploaduser.php?sesskey=$USER->sesskey\">".get_string("uploadusers")."", + $table->data[] = array("wwwroot/$CFG->admin/uploaduser.php\">".get_string("uploadusers")."", get_string("adminhelpuploadusers")); } $table->data[] = array('', '
'); - $table->data[] = array("sesskey\">".get_string("enrolments")."", + $table->data[] = array("".get_string("enrolments")."", get_string("adminhelpenrolments")); - $table->data[] = array("sesskey\">".get_string("assignstudents")."", + $table->data[] = array("".get_string("assignstudents")."", get_string("adminhelpassignstudents")); - $table->data[] = array("sesskey\">".get_string("assignteachers")."", - get_string("adminhelpassignteachers")." \"\""); - $table->data[] = array("sesskey\">".get_string("assigncreators")."", + $table->data[] = array("".get_string("assignteachers")."", + get_string("adminhelpassignteachers")." "); + $table->data[] = array("".get_string("assigncreators")."", get_string("adminhelpassigncreators")); - $table->data[] = array("sesskey\">".get_string("assignadmins")."", + $table->data[] = array("".get_string("assignadmins")."", get_string("adminhelpassignadmins")); print_table($table); diff --git a/auth/README b/auth/README index fb71829ad74..2eda1f668fa 100644 --- a/auth/README +++ b/auth/README @@ -82,109 +82,3 @@ db - Uses an external database to check username/password - if correct, user is logged in - if the username doesn't already exist then a new Moodle account is created - - ------------------------------------------------------------------------------------- - -Authentication API - -This file describes Moodle interface functions to authentication modules. - -Most of functions are from ldap-authentication module and are not implemented (yet?) -on other modules. Please feel free to extend other modules to support same features -or roll your own module. - -Some of new function are still tested and are not documented here yet. - - - -AUTHENTICATION -Basic fuctions to authenticate users with external db - -Mandatory: - - auth_user_login ($username, $password) - - Authenticate username, password with userdatabase. - - Returns: - true if the username and password work - and false if they don't - -Optional: - - auth_get_userinfo($username) - - Query other userinformation from database. - - Returns: - Userinformation in array ( name => value, .... - or false in case of error - -COURSE CREATING - - auth_iscreator($username) - - should user have rights to create courses - - Returns: - True if user have rights to crete cources otherwise false - - -USER CREATION - -Functions that enable usercreation, activation and deactivation -from moodle to external database - - - auth_user_exists ($username) - - Checks if given username exist on external db - - Returns: - true if given usernname exist or false - - auth_user_create ($userobject,$plainpass) - - Creates new user to external db. User should be created - in inactive stage until confirmed by email. - - Returns: - True on success otherwise false - - - auth_user_activate ($username) - - activate new user after email-address is confirmed - - Returns: - True on success otherwise false - - - auth_user_disable ($username) { - - deactivate user in external db. - - Returns: - True on success otherwise false - - - -USER INFORMATION AND SYNCRONIZATION - - auth_get_userlist () - - Get list of usernames in external db. - - Returns: - All usernames in array or false on error. - - - auth_get_users($filter='*') - - Get ALL USEROBJECTS FROM EXTERNAL DB. - - Returns: - Array of all users as objects from external db - - diff --git a/auth/cas/README-CAS b/auth/cas/README-CAS deleted file mode 100644 index 64bfdfcb17f..00000000000 --- a/auth/cas/README-CAS +++ /dev/null @@ -1,7 +0,0 @@ -CAS-module README - -Please read comments from lib.php for auth/cas module -The auth/cas module is using part of the /auth/ldap module. The /auth/ldap directory should exist. -The auth/cas use the PHPCAS project from http://esup-phpcas.sourceforge.net - - diff --git a/auth/cas/auth_ldap_sync_users.php b/auth/cas/auth_ldap_sync_users.php deleted file mode 100644 index 29e74d41dcf..00000000000 --- a/auth/cas/auth_ldap_sync_users.php +++ /dev/null @@ -1,40 +0,0 @@ -dirroot.'/course/lib.php'); -require_once($CFG->dirroot.'/lib/blocklib.php'); -require_once($CFG->dirroot.'/mod/resource/lib.php'); -require_once($CFG->dirroot.'/auth/cas/lib.php'); //cas specific -require_once($CFG->dirroot.'/mod/forum/lib.php'); -$CFG->debug=10; -auth_sync_users(1000, true ); - -?> \ No newline at end of file diff --git a/auth/cas/config.html b/auth/cas/config.html deleted file mode 100644 index 6f44be13291..00000000000 --- a/auth/cas/config.html +++ /dev/null @@ -1,104 +0,0 @@ -cas_hostname,""); - optional_variable($config->cas_port,""); - optional_variable($config->cas_version,""); - optional_variable($config->cas_baseuri,""); - optional_variable($config->cas_language,""); - optional_variable($config->cas_use_cas,""); - optional_variable($config->cas_create_user,"0"); -?> - - -
-

-
cas_enabled: - cas_enabled, get_string("no"),"","");?> - - -
cas_hostname: - - - - -
cas_baseuri: - - - - -
cas_port: - - - - -
cas_version: - - - - -
cas_language: - cas_language, "");?> - - -
cas_create_user: - cas_create_user, "");?> - - -
- - - -
-

-
- diff --git a/auth/cas/forbidden.php b/auth/cas/forbidden.php deleted file mode 100644 index d2d4989ddb1..00000000000 --- a/auth/cas/forbidden.php +++ /dev/null @@ -1,12 +0,0 @@ -fullname: $loginsite", "$site->fullname", $loginsite, - $focus, "", true, "
$langmenu
"); - include("forbidden.html"); - print_footer(); - exit; -?> - diff --git a/auth/cas/index_form.html b/auth/cas/index_form.html deleted file mode 100644 index 271946e06bd..00000000000 --- a/auth/cas/index_form.html +++ /dev/null @@ -1 +0,0 @@ -

:
()

" />
guestloginbutton) { ?>

:

" />
changepassword or is_internal_auth() ) { if (is_internal_auth()) { $changepassword = "forgot_password.php"; $changebuttonname = get_string("senddetails"); } else { $changepassword = $CFG->changepassword; $changebuttonname = get_string("passwordrecovery"); } ?>

auth) { case "email": print_string("loginsteps", "", "signup.php"); ?>
" />
auth_instructions); if (!function_exists('auth_user_login')) { require_once("../auth/$CFG->auth/lib.php"); } if (!empty($CFG->auth_user_create) and function_exists('auth_user_create') ){ ?>
" />
\ No newline at end of file diff --git a/auth/cas/languages.php b/auth/cas/languages.php deleted file mode 100644 index c021b004097..00000000000 --- a/auth/cas/languages.php +++ /dev/null @@ -1,10 +0,0 @@ - "Modern Greek", -"english" => "English", -"french" => "French"); -?> \ No newline at end of file diff --git a/auth/cas/lib.php b/auth/cas/lib.php deleted file mode 100644 index 44e771fa0a9..00000000000 --- a/auth/cas/lib.php +++ /dev/null @@ -1,169 +0,0 @@ -dirroot.'/config.php'); -require_once($CFG->dirroot.'/auth/ldap/lib.php'); -require_once($CFG->dirroot.'/lib/cas/CAS.php'); -$cas_validate=false; - -/** - * replace the ldap auth_user_login function - * authenticates user againt CAS with ldap - * Returns true if the username and password work - * and false if they don't - * - * @param string $username - * @param string $password - * -*/ -function cas_ldap_auth_user_login ($username, $password) { -/// Returns true if the username and password work -/// and false if they don't - - global $CFG; - if (!$username or !$password) { // Don't allow blank usernames or passwords - return false; - } - - if ($CFG->auth == "cas" && !empty($CFG->cas_enabled)){ //cas specific - if ($CFG->cas_create_user=="0"){ - if (get_user_info_from_db("username", $username)){ - return true; - }else{ - return false; - } - }else{ - return true; - } - } - - $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){ - ldap_close($ldap_connection); - return false; - } - - // Try to bind with current username and password - $ldap_login = ldap_bind($ldap_connection, $ldap_user_dn, $password); - ldap_close($ldap_connection); - if ($ldap_login) { - if ($CFG->cas_create_user=="0"){ //cas specific - if (get_user_info_from_db("username", $username)){ - return true; - }else{ - return false; - } - }else{ - return true; - } - } - } else { - ldap_close($ldap_connection); - error("LDAP part of CAS-module cannot connect to server: $CFG->ldap_host_url"); - } - return false; -} - -/** - * authenticates user against CAS from screen login - * the user doesn't have a CAS Ticket yet. - * - * Returns an object user if the username and password work - * and nothing if they don't - * - * @param string $username - * @param string $password - * -*/ -function cas_authenticate_user_login ($username, $password) { - - global $CFG; - $cas_validate=true; - - phpCAS::client($CFG->cas_version,$CFG->cas_hostname,(Integer)$CFG->cas_port,$CFG->cas_baseuri); - phpCAS::setLang($CFG->cas_language); - if (!phpCAS::isAuthenticated()){ - phpCAS::authenticateIfNeeded(); - } - if ($CFG->cas_create_user=="0"){ - if (get_user_info_from_db("username", phpCAS::getUser())){ - $user = authenticate_user_login(phpCAS::getUser(), 'cas'); - }else{ - //login as guest if CAS but not Moodle and not automatic creation - if ($CFG->guestloginbutton){ - $user = authenticate_user_login('guest', 'guest'); - }else{ - $user = authenticate_user_login(phpCAS::getUser(), 'cas'); - } - } - }else{ - $user = authenticate_user_login(phpCAS::getUser(), 'cas'); - } - return $user; -} - -/** - * authenticates user against CAS when first call of Moodle - * if already in CAS (cookie with the CAS ticket), don't have to log again (SSO) - * - * Returns an object user if the username and password work - * and nothing if they don't - * - * @param object $user - * -*/ -function cas_automatic_authenticate ($user="") { - global $CFG; - if (!$cas_validate){ - $cas_validate=true; - phpCAS::client($CFG->cas_version,$CFG->cas_hostname,(Integer)$CFG->cas_port,$CFG->cas_baseuri); - phpCAS::setLang($CFG->cas_language); - if (!phpCAS::isAuthenticated() && !$CFG->guestloginbutton){ - phpCAS::authenticateIfNeeded(); - } - if (phpCAS::isAuthenticated()){ - if ($CFG->cas_create_user=="0"){ - if (get_user_info_from_db("username", phpCAS::getUser())){ - $user = authenticate_user_login(phpCAS::getUser(), 'cas'); - }else{ - //login as guest if CAS but not Moodle and not automatic creation - if ($CFG->guestloginbutton){ - $user = authenticate_user_login('guest', 'guest'); - }else{ - $user = authenticate_user_login(phpCAS::getUser(), 'cas'); - } - } - }else{ - - $user = authenticate_user_login(phpCAS::getUser(), 'cas'); - } - return $user; - }else{ - return; - } - - }else{ - return $user; - } -} - -?> \ No newline at end of file diff --git a/auth/cas/login.php b/auth/cas/login.php deleted file mode 100644 index b5c2c166d92..00000000000 --- a/auth/cas/login.php +++ /dev/null @@ -1,321 +0,0 @@ -dirroot.'/auth/cas/lib.php'); - - //Define variables used in page - if (!$site = get_site()) { - error("No site found!"); - } - - if (empty($CFG->langmenu)) { - $langmenu = ""; - } else { - $currlang = current_language(); - $langs = get_list_of_languages(); - if (empty($CFG->loginhttps)) { - $wwwroot = $CFG->wwwroot; - } else { - $wwwroot = str_replace('http','https',$CFG->wwwroot); - } - $langmenu = popup_form ("$wwwroot/login/index.php?lang=", $langs, "chooselang", $currlang, "", "", "", true); - } - - $loginsite = get_string("loginsite"); - - - $frm = false; - $user = false; - if ((!empty($SESSION->wantsurl) and strstr($SESSION->wantsurl,'username=guest')) or $loginguest) { - /// Log in as guest automatically (idea from Zbigniew Fiedorowicz) - $frm->username = 'guest'; - $frm->password = 'guest'; - } else if (!empty($SESSION->wantsurl) && file_exists($CFG->dirroot.'/login/weblinkauth.php')) { - // Handles the case of another Moodle site linking into a page on this site - include($CFG->dirroot.'/login/weblinkauth.php'); - if (function_exists(weblink_auth)) { - $user = weblink_auth($SESSION->wantsurl); - } - if ($user) { - $frm->username = $user->username; - } else { - $frm = data_submitted(); - } - } else { - $frm = data_submitted(); - } - - if ($frm and (get_moodle_cookie() == '')) { // Login without cookie - - $errormsg = get_string("cookiesnotenabled"); - - } else if ($frm) { // Login WITH cookies - - $frm->username = trim(moodle_strtolower($frm->username)); - - if (($frm->username == 'guest') and empty($CFG->guestloginbutton)) { - $user = false; /// Can't log in as guest if guest button is disabled - $frm = false; - } else if (!$user) { - if ($CFG->auth == "cas" && $frm->username != 'guest'){ /// Cas SSO case - $user = cas_authenticate_user_login($frm->username, $frm->password); - }else{ - $user = authenticate_user_login($frm->username, $frm->password); - } - } - update_login_count(); - - if ($user) { - if (! $user->confirmed ) { // they never confirmed via email - print_header(get_string("mustconfirm"), get_string("mustconfirm") ); - print_heading(get_string("mustconfirm")); - print_simple_box(get_string("emailconfirmsent", "", $user->email), "center"); - print_footer(); - die; - } - - $USER = $user; - if (!empty($USER->description)) { - $USER->description = true; // No need to cart all of it around - } - $USER->loggedin = true; - $USER->site = $CFG->wwwroot; // for added security, store the site in the session - sesskey(); // for added security, used to check script parameters - - if ($USER->username == "guest") { - $USER->lang = $CFG->lang; // Guest language always same as site - $USER->firstname = get_string("guestuser"); // Name always in current language - $USER->lastname = " "; - } - - if (!update_user_login_times()) { - error("Wierd error: could not update login records"); - } - - set_moodle_cookie($USER->username); - - unset($SESSION->lang); - $SESSION->justloggedin = true; - - // Restore the calendar filters, if saved - if(intval(get_user_preferences('calendar_persistflt', 0))) { - include_once($CFG->dirroot.'/calendar/lib.php'); - calendar_set_filters_status(get_user_preferences('calendar_savedflt', 0xff)); - } - - //Select password change url - if (is_internal_auth() || $CFG->{'auth_'.$USER->auth.'_stdchangepassword'}){ - $passwordchangeurl=$CFG->wwwroot.'/login/change_password.php'; - } elseif($CFG->changepassword) { - $passwordchangeurl=$CFG->changepassword; - } - - - // check whether the user should be changing password - if (get_user_preferences('auth_forcepasswordchange', false)){ - if (isset($passwordchangeurl)) { - redirect($passwordchangeurl); - } else { - error("You cannot proceed without changing your password. - However there is no available page for changing it. - Please contact your Moodle Administrator."); - } - } - - - add_to_log(SITEID, "user", "login", "view.php?id=$user->id&course=".SITEID, $user->id, 0, $user->id); - - if (user_not_fully_set_up($USER)) { - $urltogo = $CFG->wwwroot.'/user/edit.php?id='.$USER->id.'&course='.SITEID; - // We don't delete $SESSION->wantsurl yet, so we get there later - - } else if (isset($SESSION->wantsurl) and (strpos($SESSION->wantsurl, $CFG->wwwroot) === 0)) { - $urltogo = $SESSION->wantsurl; /// Because it's an address in this site - unset($SESSION->wantsurl); - - } else { - $urltogo = $CFG->wwwroot.'/'; /// Go to the standard home page - unset($SESSION->wantsurl); /// Just in case - } - - // check if user password has expired - // Currently supported only for ldap-authentication module - if (isset($CFG->ldap_expiration) && $CFG->ldap_expiration == 1 ) { - if (function_exists('auth_password_expire')){ - $days2expire = auth_password_expire($USER->username); - if (intval($days2expire) > 0 && intval($days2expire) < intval($CFG->{$USER->auth.'_expiration_warning'})) { - print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "
$langmenu
"); - notice_yesno(get_string('auth_passwordwillexpire', 'auth', $days2expire), $passwordchangeurl, $urltogo); - print_footer(); - exit; - } elseif (intval($days2expire) < 0 ) { - print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "
$langmenu
"); - notice_yesno(get_string('auth_passwordisexpired', 'auth'), $passwordchangeurl, $urltogo); - print_footer(); - exit; - } - } - } - - reset_login_count(); - - redirect($urltogo); - - exit; - - } else { - if ($CFG->auth == "cas" ){ /// CAS error login - $errormsg = get_string("invalidcaslogin"); - phpCAS::logout("$CFG->wwwroot/auth/cas/forbidden.php"); - }else{ - $errormsg = get_string("invalidlogin"); - } - } - } - - $user=cas_automatic_authenticate($user); - if ($user) { - if (! $user->confirmed ) { // they never confirmed via email - print_header(get_string("mustconfirm"), get_string("mustconfirm") ); - print_heading(get_string("mustconfirm")); - print_simple_box(get_string("emailconfirmsent", "", $user->email), "center"); - print_footer(); - die; - } - - $USER = $user; - if (!empty($USER->description)) { - $USER->description = true; // No need to cart all of it around - } - $USER->loggedin = true; - $USER->site = $CFG->wwwroot; // for added security, store the site in the session - sesskey(); // for added security, used to check script parameters - - if ($USER->username == "guest") { - $USER->lang = $CFG->lang; // Guest language always same as site - $USER->firstname = get_string("guestuser"); // Name always in current language - $USER->lastname = " "; - } - - if (!update_user_login_times()) { - error("Wierd error: could not update login records"); - } - - set_moodle_cookie($USER->username); - - unset($SESSION->lang); - $SESSION->justloggedin = true; - - // Restore the calendar filters, if saved - if(intval(get_user_preferences('calendar_persistflt', 0))) { - include_once($CFG->dirroot.'/calendar/lib.php'); - calendar_set_filters_status(get_user_preferences('calendar_savedflt', 0xff)); - } - - //Select password change url - if (is_internal_auth() || $CFG->{'auth_'.$USER->auth.'_stdchangepassword'}){ - $passwordchangeurl=$CFG->wwwroot.'/login/change_password.php'; - } elseif($CFG->changepassword) { - $passwordchangeurl=$CFG->changepassword; - } - - - // check whether the user should be changing password - if (get_user_preferences('auth_forcepasswordchange', false)){ - if (isset($passwordchangeurl)) { - redirect($passwordchangeurl); - } else { - error("You cannot proceed without changing your password. - However there is no available page for changing it. - Please contact your Moodle Administrator."); - } - } - - - add_to_log(SITEID, "user", "login", "view.php?id=$user->id&course=".SITEID, $user->id, 0, $user->id); - - if (user_not_fully_set_up($USER)) { - $urltogo = $CFG->wwwroot.'/user/edit.php?id='.$USER->id.'&course='.SITEID; - // We don't delete $SESSION->wantsurl yet, so we get there later - - } else if (isset($SESSION->wantsurl) and (strpos($SESSION->wantsurl, $CFG->wwwroot) === 0)) { - $urltogo = $SESSION->wantsurl; /// Because it's an address in this site - unset($SESSION->wantsurl); - - } else { - $urltogo = $CFG->wwwroot.'/'; /// Go to the standard home page - unset($SESSION->wantsurl); /// Just in case - } - - // check if user password has expired - // Currently supported only for ldap-authentication module - if (isset($CFG->ldap_expiration) && $CFG->ldap_expiration == 1 ) { - if (function_exists('auth_password_expire')){ - $days2expire = auth_password_expire($USER->username); - if (intval($days2expire) > 0 && intval($days2expire) < intval($CFG->{$USER->auth.'_expiration_warning'})) { - print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "
$langmenu
"); - notice_yesno(get_string('auth_passwordwillexpire', 'auth', $days2expire), $passwordchangeurl, $urltogo); - print_footer(); - exit; - } elseif (intval($days2expire) < 0 ) { - print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "
$langmenu
"); - notice_yesno(get_string('auth_passwordisexpired', 'auth'), $passwordchangeurl, $urltogo); - print_footer(); - exit; - } - } - } - - reset_login_count(); - - redirect($urltogo); - - exit; - } else { - if(!$CFG->guestloginbutton){ - $errormsg = get_string("invalidcaslogin"); - phpCAS::logout("$CFG->wwwroot/auth/cas/forbidden.php"); - } - } - - if (empty($errormsg)) { - $errormsg = ""; - } - - if (empty($SESSION->wantsurl)) { - $SESSION->wantsurl = array_key_exists('HTTP_REFERER',$_SERVER) ? $_SERVER["HTTP_REFERER"] : $CFG->wwwroot; - } - - if (get_moodle_cookie() == '') { - set_moodle_cookie('nobody'); // To help search for cookies - } - - if (empty($frm->username)) { - $frm->username = get_moodle_cookie() === 'nobody' ? '' : get_moodle_cookie(); - $frm->password = ""; - } - - if (!empty($frm->username)) { - $focus = "login.password"; - } else { - $focus = "login.username"; - } - - if ($CFG->auth == "email" or $CFG->auth == "none" or chop($CFG->auth_instructions) <> "" ) { - $show_instructions = true; - } else { - $show_instructions = false; - } - - print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "
$langmenu
"); - include($CFG->dirroot.'/auth/cas/index_form.html'); - print_footer(); - - exit; - - // No footer on this page - -?> \ No newline at end of file diff --git a/auth/cas/logout.php b/auth/cas/logout.php deleted file mode 100644 index d8df052553c..00000000000 --- a/auth/cas/logout.php +++ /dev/null @@ -1,10 +0,0 @@ -dirroot.'/config.php'); - include_once($CFG->dirroot.'/lib/cas/CAS.php'); - phpCAS::client($CFG->cas_version,$CFG->cas_hostname,(Integer)$CFG->cas_port,$CFG->cas_baseuri); - $backurl = $CFG->wwwroot; - phpCAS::logout($backurl); - -?> \ No newline at end of file diff --git a/auth/db/config.html b/auth/db/config.html index b89ce55664d..b1eff29d818 100644 --- a/auth/db/config.html +++ b/auth/db/config.html @@ -1,4 +1,4 @@ -auth_dbhost)) { $config->auth_dbhost = "localhost"; } @@ -27,20 +27,20 @@ $config->auth_dbpasstype = "plaintext"; } ?> -
auth_dbhost: - +

auth_dbhost:

+ - + -
auth_dbtype: +

auth_dbtype:

auth_dbtype, ""); ?> - + -
auth_dbname: - +

auth_dbname:

+ - + -
auth_dbuser: - +

auth_dbuser:

+ - + -
auth_dbpass: - +

auth_dbpass:

+ - + -
auth_dbtable: - +

auth_dbtable:

+ - + -
auth_dbfielduser: - +

auth_dbfielduser:

+ - + -
auth_dbfieldpass: - +

auth_dbfieldpass:

+ - + -
auth_dbpasstype: - cellheading2 ?>"> +

auth_dbpasstype:

+ auth_dbpasstype, ""); ?> - + -
: - - +

:

+ + -
: - -

:

+ +
: - -

:

+ +
1: - -

1:

+ +
2: - -

2:

+ +
: - -

:

+ +
: - -

:

+ +
: - -

:

+ +
: - -

:

+ +
: - -

:

+ +
: - -

:

+ +
: - -

:

+ +
: - - +

:

+ + -
auth_fchost: - - - - - - - - - -
auth_fcfppport: - - - - - - - - - -
auth_fcuserid: - - - - - - - - - -
auth_fcpasswd: - - - - - - - - - -
auth_fccreators: - - - - - - - - - -
: - - - - - - - - - -

auth_fchost:

+ + + + +

auth_fcfppport:

+ + + + +

auth_fcuserid:

+ + + + +

auth_fcpasswd:

+ + + + +

auth_fccreators:

+ + + + +

:

+ + + + +
auth_imaphost: - +

auth_imaphost:

+ - + -
auth_imaptype: +

auth_imaptype:

auth_imaptype, ""); ?> - + -
auth_imapport: - +

auth_imapport:

+ - + -
: - - +

:

+ + -
-

-
ldap_host_url: - +

ldap_host_url:

+ - + -
ldap_version: +

ldap_version:

ldap_version, ""); if (isset($err["ldap_version"])) formerr($err["ldap_version"]); ?> - + -
-

-
ldap_bind_dn: - - - - -
ldap_bind_pw: - - - - -
-

-
ldap_user_type: - ldap_user_type, ""); ?> - - - -
ldap_contexts: - +

ldap_contexts:

+ - + -
ldap_search_sub: - - - - -
ldap_opt_deref: - ldap_opt_deref, LDAP_DEREF_NEVER); - if (isset($err["ldap_opt_deref"])) formerr($err["ldap_opt_deref"]); - ?> - - -
ldap_user_attribute: - +

ldap_user_attribute:

+ - + -
ldap_memberattribute: - - - - -
ldap_objectclass: - +

ldap_objectclass:

+ - + -
-

-

ldap_search_sub:

+ + + + +
: - -
- -
-

-

ldap_bind_dn:

+ + + + +
: - -
+

ldap_bind_pw:

+ + + + +
-

-

-

ldap_memberattribute:

+ + + + +
-

-
ldap_expiration: - ldap_expiration, ""); - if (isset($err["ldap_expiration"])) formerr($err["ldap_expiration"]); - ?> - - -
ldap_expiration_warning: - - - - -
ldap_exprireattr: - - - - -
ldap_gracelogins: - ldap_gracelogins, ""); - if (isset($err["ldap_expiration"])) formerr($err["ldap_expiration"]); - ?> - - -
ldap_graceattr: - - - - -
-

-
ldap_create_context: - - - - -
-

-
ldap_creators: - +

ldap_creators:

+ - + -

ldap_create_context:

+ + + + +
-

-
: - -
- -
- -
- -
-
-
+

:

+ + - - - -
- -
: - -
- -
- -
- -
-
-

:

+ +
: - -
- -
- -
- -
-
-

:

+ +
1: - -
- -
- -
- -
-
-

1:

+ +
2: - -
- -
- -
- -
-
-

2:

+ +
: - -
- -
- -
- -
-
-

:

+ +
: - -
- -
- -
- -
-
-

:

+ +
: - -
- -
- -
- -
-
-

:

+ +
: - -
- -
- -
- -
-
-

:

+ +
: - -
- -
- -
- -
-
-

:

+ +
: - -
- -
- -
- -
-
-

:

+ +
: - -
- -
- -
- -
-
-

:

+ +

:

+ +
: - - +

:

+ + -
: - - +

:

+ + -
auth_nntphost: - +

auth_nntphost:

+ - + -
auth_nntpport: - +

auth_nntpport:

+ - + -
: - - +

:

+ + -

:

- - - -
auth_pop3host: - +

auth_pop3host:

+ - + -
auth_pop3type: +

auth_pop3type:

auth_pop3type, ""); ?> - + -
auth_pop3port: - +

auth_pop3port:

+ - + -
auth_pop3mailbox: - +

auth_pop3mailbox:

+ - + -
: - - +

:

+ + -

Shibboleth origin url:

- - - -

:

- - -

:

- - -

:

- -

:

- -

:

- - - - -
+ +
"; + echo ""; //Calculate the backup unique code to allow simultaneus backups (to define //the temp-directory name and records in backup temp tables $backup_unique_code = time(); - - if (empty($to)) { - //Now print the Backup Name tr - echo ""; - echo ""; + //Add as hidden name + echo ""; - //Line - echo ""; - - //Now print the To Do list - echo ""; - echo ""; + //Now print the To Do list + echo ""; + echo ""; - } + echo get_string("backupdetails").":"; + echo ""; //This is tha align to every ingo table - $table->align = array ("left","right"); + $table->align = array ("LEFT","RIGHT"); if ($allmods = get_records("modules") ) { foreach ($allmods as $mod) { @@ -194,25 +171,25 @@ //If exists the lib & function $var = "exists_".$modname; if (isset($$var) && $$var) { + //Add hidden fields + $var = "backup_".$modname; + echo ""; + $var = "backup_user_info_".$modname; + echo ""; $var = "backup_".$modname; //Only if selected if ($$var == 1) { //Print the full tr echo ""; - echo ""; - if (empty($to)) { - //Line - echo ""; + //Now print the Users tr + echo ""; + echo ""; - //Now print the Users tr - echo ""; - echo ""; - - } - //Now print the Logs tr conditionally - if ($backup_logs && empty($to)) { + if ($backup_logs) { echo ""; - echo ""; } + //Add as hidden name + echo ""; //Now print the User Files tr conditionally if ($backup_user_files) { echo ""; - echo ""; } + //Add as hidden name + echo ""; //Now print the Course Files tr conditionally if ($backup_course_files) { echo ""; - echo ""; } + //Add as hidden name + echo ""; } ?>

"; + echo get_string("name").":"; + echo "

"; //Calculate the backup string //Calculate the backup word @@ -124,37 +115,26 @@ $backup_name .= userdate(time(),$backup_date_format,99,false); //The extension $backup_name .= ".zip"; - //And finally, clean everything - $backup_name = clean_filename($backup_name); + + //Add as text field + echo ""; + echo "
"; - echo get_string("name").":"; - echo ""; - //Add as text field - echo ""; - echo "

"; - - } else { - echo ''; - } + //Line + echo "

"; //Here we check if backup_users = None. Then, we switch off every module - //user info, user_files, logs and exercises, workshop and messages backups. A Warning is showed to + //user info, user_files, logs and exercises and workshop backups. A Warning is showed to //inform the user. if ($backup_users == 2) { if ($allmods = get_records("modules") ) { @@ -173,19 +153,16 @@ } $backup_user_files = 0; $backup_logs = 0; - $backup_messages = 0; } - print_simple_box("".get_string("backupnoneusersinfo")."","center", "70%", '', "20", "noticebox"); - echo "


"; + print_simple_box("".get_string("backupnoneusersinfo")."","center", "70%", "$THEME->cellheading", "20", "noticebox"); + echo "
"; } - if (empty($to)) { - echo get_string("backupdetails").":"; - echo "
"; - //Add hidden fields - $var = "backup_".$modname; - echo ""; - $var = "backup_user_info_".$modname; - echo ""; + echo "

"; //Print the mod name - echo "".get_string("include")." ".get_string("modulenameplural",$modname)." "; + echo "

  • ".get_string("include")." ".get_string("modulenameplural",$modname)." "; //Now look for user-data status $backup_user_options[0] = get_string("withoutuserdata"); $backup_user_options[1] = get_string("withuserdata"); $var = "backup_user_info_".$modname; //Print the user info - echo $backup_user_options[$$var].""; + echo $backup_user_options[$$var]."

    "; //Call the check function to show more info $modcheckbackup = $modname."_check_backup_mods"; $table->data = $modcheckbackup($id,$$var,$backup_unique_code); @@ -221,74 +198,69 @@ } } } - + //Line + echo "



  • "; + $user_options[0] = get_string("includeallusers"); + $user_options[1] = get_string("includecourseusers"); + $user_options[2] = get_string("includenoneusers"); + echo "

  • ".$user_options[$backup_users]."

    "; + //Add as hidden name + echo ""; + //Print info + $table->data = user_check_backup($id,$backup_unique_code,$backup_users); + print_table($table); + echo "

  • "; - $user_options[0] = get_string("includeallusers"); - $user_options[1] = get_string("includecourseusers"); - $user_options[2] = get_string("includenoneusers"); - echo $user_options[$backup_users].''; - //Print info - $table->data = user_check_backup($id,$backup_unique_code,$backup_users,$backup_messages); - print_table($table); - echo "
    "; - echo get_string("includelogentries").''; + echo "

    "; + echo "

  • ".get_string("includelogentries")."

    "; //Print info $table->data = log_check_backup($id); print_table($table); echo "

  • "; - echo get_string("includeuserfiles").''; + echo "

    "; + echo "

  • ".get_string("includeuserfiles")."

    "; //Print info $table->data = user_files_check_backup($id,$backup_unique_code); print_table($table); echo "

  • "; - echo get_string("includecoursefiles").''; + echo "

    "; + echo "

  • ".get_string("includecoursefiles")."

    "; //Print info $table->data = course_files_check_backup($id,$backup_unique_code); print_table($table); echo "

  • -
    -
    - - - - - - - - - - -" /> -" /> -
    - +
    +
    + + +"> +"> +
    + diff --git a/backup/backup_execute.html b/backup/backup_execute.html index 02d7ff43b24..59d8ab14a94 100644 --- a/backup/backup_execute.html +++ b/backup/backup_execute.html @@ -1,4 +1,4 @@ -id)) { if (!isteacheredit($course->id)) { - if (empty($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } else { - if (!isteacheredit($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } - } + error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); } } else { if (!isadmin()) { @@ -66,11 +60,6 @@ } //Check other parameters - if (!isset($backup_metacourse)) { - $backup_metacourse = 1; - } - $preferences->backup_metacourse = $backup_metacourse; - if (!isset($backup_users)) { $backup_users = 1; } @@ -91,11 +80,6 @@ } $preferences->backup_course_files = $backup_course_files; - if (!isset($backup_messages)) { - $backup_messages = 1; - } - $preferences->backup_messages = $backup_messages; - if (!isset($id)) { error ("Course not specified"); } @@ -104,8 +88,7 @@ if (!isset($backup_name)) { error ("Backup name not specified"); } - //We clean it again (to prevent diacritics entered manually) - $preferences->backup_name = clean_filename($backup_name); + $preferences->backup_name = $backup_name; if (!isset($backup_unique_code)) { error ("Backup unique code not specified"); @@ -122,29 +105,27 @@ notice("No backupable modules are installed!"); } + //Start the main table + echo ""; + + //Now print the Backup Name tr + echo ""; + echo ""; + + //Start the main tr, where all the backup progress is done + echo ""; + echo "\n"; } @@ -455,16 +451,18 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { for($i = $dayweek; $i <= $display->maxwday; ++$i) { echo ''; } - echo "\n"; // Last row ends + echo "\n\n"; // Last row ends - echo "

    "; + echo get_string("name").":"; + echo "

    "; + echo $backup_name; + echo "
    "; + + //Start the main ul + echo "
      "; - if (empty($to)) { - //Start the main table - echo ""; - - //Now print the Backup Name tr - echo ""; - echo ""; - - //Start the main tr, where all the backup progress is done - echo ""; - echo "\n"; + $content .= "
      "; - echo get_string("name").":"; - echo ""; - echo $preferences->backup_name; - echo "
      "; - - //Start the main ul - echo "
        "; - } //Check for temp and backup and backup_unique_code directory //Create them as needed - echo "
      • ".get_string("creatingtemporarystructures").'
      • '; + echo "
      • ".get_string("creatingtemporarystructures"); $status = check_and_create_backup_dir($backup_unique_code); //Empty dir if ($status) { @@ -152,7 +133,7 @@ } //Delete old_entries from backup tables - echo "
      • ".get_string("deletingolddata").'
      • '; + echo "
      • ".get_string("deletingolddata"); $status = backup_delete_old_data(); if (!$status) { error ("An error occurred deleting old backup data"); @@ -163,10 +144,10 @@ echo "
      • ".get_string("creatingxmlfile"); //Begin a new list to xml contents echo "
          "; - echo "
        • ".get_string("writingheader").'
        • '; + echo "
        • ".get_string("writingheader"); //Obtain the xml file (create and open) and print prolog information $backup_file = backup_open_xml($backup_unique_code); - echo "
        • ".get_string("writinggeneralinfo").'
        • '; + echo "
        • ".get_string("writinggeneralinfo");; //Prints general info about backup to file if ($backup_file) { if (!$status = backup_general_info($backup_file,$preferences)) { @@ -178,28 +159,14 @@ //Start new ul (for course) echo "
            "; - echo "
          • ".get_string("courseinfo").'
          • '; + echo "
          • ".get_string("courseinfo"); //Prints course start (tag and general info) if ($status) { if (!$status = backup_course_start($backup_file,$preferences)) { notify("An error occurred while backing up course start"); } } - //Metacourse information - if ($status && $preferences->backup_metacourse) { - echo "
          • ".get_string("metacourse").'
          • '; - if (!$status = backup_course_metacourse($backup_file,$preferences)) { - notify("An error occurred while backing up metacourse info"); - } - } - echo "
          • ".get_string("blocks").'
          • '; - //Blocks information - if ($status) { - if (!$status = backup_course_blocks($backup_file,$preferences)) { - notify("An error occurred while backing up course blocks"); - } - } - echo "
          • ".get_string("sections").'
          • '; + echo "
          • ".get_string("sections"); //Section info if ($status) { if (!$status = backup_course_sections($backup_file,$preferences)) { @@ -208,29 +175,20 @@ } //End course contents (close ul) - echo "
        • "; + echo "
        "; + echo "
      • ".get_string("writinguserinfo"); //User info - if ($status && $preferences->backup_users) { - echo "
      • ".get_string("writinguserinfo").'
      • '; + if ($status) { if (!$status = backup_user_info($backup_file,$preferences)) { notify("An error occurred while backing up user info"); } } - //If we have selected to backup messages and we are - //doing a SITE backup, let's do it - if ($status && $preferences->backup_messages && $preferences->backup_course == SITEID) { - echo "
      • ".get_string("writingmessagesinfo").'
      • '; - if (!$status = backup_messages($backup_file,$preferences)) { - notify("An error occurred while backing up messages"); - } - } - //If we have selected to backup quizzes, backup categories and //questions structure (step 1). See notes on mod/quiz/backuplib.php if ($status and $preferences->mods['quiz']->backup) { - echo "
      • ".get_string("writingcategoriesandquestions").'
      • '; + echo "
      • ".get_string("writingcategoriesandquestions"); if (!$status = quiz_backup_question_categories($backup_file,$preferences)) { notify("An error occurred while backing up quiz categories"); } @@ -239,7 +197,7 @@ //Print logs if selected if ($status) { if ($preferences->backup_logs) { - echo "
      • ".get_string("writingloginfo").'
      • '; + echo "
      • ".get_string("writingloginfo"); if (!$status = backup_log_info($backup_file,$preferences)) { notify("An error occurred while backing up log info"); } @@ -248,7 +206,7 @@ //Print scales info if ($status) { - echo "
      • ".get_string("writingscalesinfo").'
      • '; + echo "
      • ".get_string("writingscalesinfo"); if (!$status = backup_scales_info($backup_file,$preferences)) { notify("An error occurred while backing up scales"); } @@ -256,7 +214,7 @@ //Print groups info if ($status) { - echo "
      • ".get_string("writinggroupsinfo").'
      • '; + echo "
      • ".get_string("writinggroupsinfo"); if (!$status = backup_groups_info($backup_file,$preferences)) { notify("An error occurred while backing up groups"); } @@ -264,7 +222,7 @@ //Print events info if ($status) { - echo "
      • ".get_string("writingeventsinfo").'
      • '; + echo "
      • ".get_string("writingeventsinfo"); if (!$status = backup_events_info($backup_file,$preferences)) { notify("An error occurred while backing up events"); } @@ -292,14 +250,14 @@ //Iterate over modules and call backup foreach ($preferences->mods as $module) { if ($module->backup and $status) { - echo "
      • ".get_string("modulenameplural",$module->name).'
      • '; + echo "
      • ".get_string("modulenameplural",$module->name); if (!$status = backup_module($backup_file,$preferences,$module->name)) { notify("An error occurred while backing up '$module->name'"); } } } //Close ul for module list - echo "
      "; + echo ""; //Close modules tag if (!$status = backup_modules_end ($backup_file,$preferences)) { notify("An error occurred while finishing the module backups"); @@ -319,13 +277,13 @@ } //End xml contents (close ul) - echo ""; + echo ""; } //Now, if selected, copy user files if ($status) { if ($preferences->backup_user_files) { - echo "
    • ".get_string("copyinguserfiles").'
    • '; + echo "
    • ".get_string("copyinguserfiles"); if (!$status = backup_copy_user_files ($preferences)) { notify("An error occurred while copying user files"); } @@ -335,7 +293,7 @@ //Now, if selected, copy course files if ($status) { if ($preferences->backup_course_files) { - echo "
    • ".get_string("copyingcoursefiles").'
    • '; + echo "
    • ".get_string("copyingcoursefiles"); if (!$status = backup_copy_course_files ($preferences)) { notify("An error occurred while copying course files"); } @@ -344,7 +302,7 @@ //Now, zip all the backup directory contents if ($status) { - echo "
    • ".get_string("zippingbackup").'
    • '; + echo "
    • ".get_string("zippingbackup"); if (!$status = backup_zip ($preferences)) { notify("An error occurred while zipping the backup"); } @@ -352,7 +310,7 @@ //Now, copy the zip file to course directory if ($status) { - echo "
    • ".get_string("copyingzipfile").'
    • '; + echo "
    • ".get_string("copyingzipfile"); if (!$status = copy_zip_to_course_dir ($preferences)) { notify("An error occurred while copying the zip file to the course directory"); } @@ -360,7 +318,7 @@ //Now, clean temporary data (db and filesystem) if ($status) { - echo "
    • ".get_string("cleaningtempdata").'
    • '; + echo "
    • ".get_string("cleaningtempdata"); if (!$status = clean_temp_data ($preferences)) { notify("An error occurred while cleaning up temporary data"); } @@ -380,19 +338,8 @@ "$CFG->wwwroot/course/view.php?id=$course->id"); } - if (empty($to)) { - //Print final message - print_simple_box(get_string("backupfinished"),"center"); - print_continue("$CFG->wwwroot/files/index.php?id=".$preferences->backup_course."&wdir=/backupdata"); - } else { - print_simple_box(get_string('importdataexported'),"CENTER"); - if (!empty($preferences->backup_destination)) { - $filename = $preferences->backup_destination."/".$preferences->backup_name; - } else { - $filename = $preferences->backup_course."/backupdata/".$preferences->backup_name; - } - error_log($filename); - $SESSION->import_preferences = $preferences; - print_continue($CFG->wwwroot.'/course/import.php?id='.$to.'&fromcourse='.$id.'&filename='.$filename); - } + //Print final message + print_simple_box(get_string("backupfinished"),"CENTER"); + print_continue("$CFG->wwwroot/files/index.php?id=".$preferences->backup_course."&wdir=/backupdata"); + ?> diff --git a/backup/backup_form.html b/backup/backup_form.html index 673cb2d8c62..b93d490380e 100644 --- a/backup/backup_form.html +++ b/backup/backup_form.html @@ -1,4 +1,4 @@ -id)) { if (!isteacheredit($course->id)) { - if (empty($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } else { - if (!isteacheredit($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } - } + error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); } } else { if (!isadmin()) { @@ -57,10 +51,6 @@ } //Check other parameters - if (!isset($backup_metacourse)) { - $backup_metacourse = 1; - } - if (!isset($backup_users)) { $backup_users = 1; } @@ -77,18 +67,14 @@ $backup_course_files = 1; } - if (!isset($backup_messages)) { - $backup_messages = 1; - } - if ($count == 0) { notice("No backupable modules are installed!"); } ?> -
      - + +
      "; - echo ""; + choose_from_menu($backup_user_options, $var, $$var, ""); + echo ""; } } //Line - echo ""; - - if (empty($to)) { - //Now print the Metacourse tr - echo ""; - echo ""; - } - else { - echo ''; - } + echo ""; + + //Now print the Users tr + echo ""; + echo ""; + + //Now print the Logs tr + echo ""; + echo ""; + + //Now print the User Files tr + echo ""; + echo ""; - if (empty($to)) { - //Now print the Users tr - echo ""; - echo ""; - } - else { - echo ''; - } - - if (empty($to)) { - //Now print the Logs tr - echo ""; - echo ""; - } - else { - echo ''; - } - - if (empty($to)) { - //Now print the User Files tr - echo ""; - echo ""; - } - else { - echo ''; - } //Now print the Course Files tr echo ""; - echo ""; - - if (empty($to) && $course->id == SITEID) { - //If we are in a SITEID backup print the Messages tr - echo ""; - echo ""; - } - else { - echo ''; - } } ?>
      "; + echo "

      "; echo get_string("include")." ". get_string("modulenameplural",$modname).":"; - echo "

      "; + echo ""; $backup_options[0] = get_string("no"); $backup_options[1] = get_string("yes"); $var = "backup_".$modname; choose_from_menu($backup_options, $var, $$var, ""); + $backup_user_options[0] = get_string("withoutuserdata"); + $backup_user_options[1] = get_string("withuserdata"); $var = "backup_user_info_".$modname; - if (empty($to)) { - $backup_user_options[0] = get_string("withoutuserdata"); - $backup_user_options[1] = get_string("withuserdata"); - choose_from_menu($backup_user_options, $var, $$var, ""); - } - else { - echo ''; - } - echo "

      "; - echo get_string ("metacourse").":"; - echo ""; - $meta_options[0] = get_string("no"); - $meta_options[1] = get_string("yes"); - choose_from_menu($meta_options, "backup_metacourse", $backup_metacourse, ""); - echo "

      "; + echo get_string("users").":"; + echo "

      "; + $user_options[0] = get_string("all"); + $user_options[1] = get_string("course"); + $user_options[2] = get_string("none"); + choose_from_menu($user_options, "backup_users", $backup_users, ""); + echo "

      "; + echo get_string("logs").":"; + echo "

      "; + $log_options[0] = get_string("no"); + $log_options[1] = get_string("yes"); + choose_from_menu($log_options, "backup_logs", $backup_logs, ""); + echo "

      "; + echo get_string ("userfiles").":"; + echo "

      "; + $user_file_options[0] = get_string("no"); + $user_file_options[1] = get_string("yes"); + choose_from_menu($user_file_options, "backup_user_files", $backup_user_files, ""); + echo "
      "; - echo get_string("users").":"; - echo ""; - $user_options[0] = get_string("all"); - $user_options[1] = get_string("course"); - $user_options[2] = get_string("none"); - choose_from_menu($user_options, "backup_users", $backup_users, ""); - echo "
      "; - echo get_string("logs").":"; - echo ""; - $log_options[0] = get_string("no"); - $log_options[1] = get_string("yes"); - choose_from_menu($log_options, "backup_logs", $backup_logs, ""); - echo "
      "; - echo get_string ("userfiles").":"; - echo ""; - $user_file_options[0] = get_string("no"); - $user_file_options[1] = get_string("yes"); - choose_from_menu($user_file_options, "backup_user_files", $backup_user_files, ""); - echo "
      "; + echo "

      "; echo get_string ("coursefiles").":"; - echo "

      "; + echo ""; $course_file_options[0] = get_string("no"); $course_file_options[1] = get_string("yes"); choose_from_menu($course_file_options, "backup_course_files", $backup_course_files, ""); echo "
      "; - echo get_string ('messages','message').":"; - echo ""; - $mess_options[0] = get_string("no"); - $mess_options[1] = get_string("yes"); - choose_from_menu($mess_options, "backup_messages", $backup_messages, ""); - echo "
      -
      -
      - - - -" /> -" /> -
      -
      +
      +
      + + +"> +"> +
      + diff --git a/backup/backup_scheduled.php b/backup/backup_scheduled.php index 41ef78426e6..bbd705a3a7a 100644 --- a/backup/backup_scheduled.php +++ b/backup/backup_scheduled.php @@ -1,4 +1,4 @@ -courseid")) { - //Doesn't exist, so delete from backup tables - delete_records('backup_courses', 'courseid', "$bckcourse->courseid"); - delete_records('backup_log', 'courseid', "$bckcourse->courseid"); - $skipped++; - } - } - } - mtrace(" $skipped courses"); - //Now process existing courses $courses = get_records("course"); //For each course, we check (insert, update) the backup_course table //with needed data @@ -101,25 +79,20 @@ function schedule_backup_cron() { } //Now we backup every course with nextstarttime < now if ($backup_course->nextstarttime > 0 && $backup_course->nextstarttime < $now) { + //Set laststarttime + $starttime = time(); + set_field("backup_courses","laststarttime",$starttime,"courseid",$backup_course->courseid); + //Launch backup + $course_status = schedule_backup_launch_backup($course,$starttime); //We have to send a email because we have included at least one backup $emailpending = true; - //Only make the backup if laststatus isn't 2-UNFINISHED (uncontrolled error) - if ($backup_course->laststatus != 2) { - //Set laststarttime - $starttime = time(); - set_field("backup_courses","laststarttime",$starttime,"courseid",$backup_course->courseid); - //Set course status to unfinished, the process will reset it - set_field("backup_courses","laststatus","2","courseid",$backup_course->courseid); - //Launch backup - $course_status = schedule_backup_launch_backup($course,$starttime); - //Set lastendtime - set_field("backup_courses","lastendtime",time(),"courseid",$backup_course->courseid); - //Set laststatus - if ($course_status) { - set_field("backup_courses","laststatus","1","courseid",$backup_course->courseid); - } else { - set_field("backup_courses","laststatus","0","courseid",$backup_course->courseid); - } + //Set lastendtime + set_field("backup_courses","lastendtime",time(),"courseid",$backup_course->courseid); + //Set laststatus + if ($course_status) { + set_field("backup_courses","laststatus","1","courseid",$backup_course->courseid); + } else { + set_field("backup_courses","laststatus","0","courseid",$backup_course->courseid); } } @@ -144,49 +117,25 @@ function schedule_backup_cron() { delete_records_select("backup_log", "laststarttime < '$loglifetime'"); } - //Send email to admin if necessary + //Send email to admin if ($emailpending) { mtrace(" Sending email to admin"); $message = ""; - - //Get info about the status of courses - $count_all = count_records('backup_courses'); - $count_ok = count_records('backup_courses','laststatus','1'); - $count_error = count_records('backup_courses','laststatus','0'); - $count_unfinished = count_records('backup_courses','laststatus','2'); - - //Build the message text - //Summary - $message .= get_string('summary')."\n"; - $message .= "==================================================\n"; - $message .= " ".get_string('courses').": ".$count_all."\n"; - $message .= " ".get_string('ok').": ".$count_ok."\n"; - $message .= " ".get_string('error').": ".$count_error."\n"; - $message .= " ".get_string('unfinished').": ".$count_unfinished."\n\n"; - - //Reference - if ($count_error != 0 || $count_unfinished != 0) { - $message .= " ".get_string('backupfailed')."\n\n"; - $dest_url = $CFG->wwwroot.'/backup/log.php'; - $message .= " ".get_string('backuptakealook','',$dest_url)."\n\n"; - //Set message priority - $admin->priority = 1; - //Reset unfinished to error - set_field('backup_courses','laststatus','0','laststatus','2'); - } else { - $message .= " ".get_string('backupfinished')."\n"; + //Build the message text (future versions should handle html messages too!!) + $logs = get_records_select ("backup_log","laststarttime >= '$now'","id"); + if ($logs) { + $currentcourse = 1; + foreach ($logs as $log) { + if ($currentcourse != $log->courseid) { + $message .= "\n==================================================\n\n"; + $currentcourse = $log->courseid; + } + $message .= userdate($log->time,"%T",$admin->timezone)." ".$log->info."\n"; + } } - - //Build the message subject - $site = get_site(); - $prefix = $site->shortname.": "; - if ($count_error != 0 || $count_unfinished != 0) { - $prefix .= "[".strtoupper(get_string('error'))."] "; - } - $subject = $prefix.get_string("scheduledbackupstatus"); - //Send the message - email_to_user($admin,$admin,$subject,$message); + $site = get_site(); + email_to_user($admin,$admin,"$site->shortname: ".get_string("scheduledbackupstatus"),$message); } @@ -212,7 +161,6 @@ function schedule_backup_launch_backup($course,$starttime = 0) { schedule_backup_log($starttime,$course->id," Phase 2: Executing and copying:"); $status = schedule_backup_course_execute($preferences,$starttime); } - if ($status && $preferences) { //Only if the backup_sche_keep is set if ($preferences->backup_keep) { @@ -220,7 +168,6 @@ function schedule_backup_launch_backup($course,$starttime = 0) { $status = schedule_backup_course_delete_old_files($preferences,$starttime); } } - if ($status && $preferences) { mtrace(" End backup OK"); schedule_backup_log($starttime,$course->id,"End backup course $course->fullname - OK"); @@ -240,7 +187,7 @@ function schedule_backup_log($starttime,$courseid,$message) { $log->courseid = $courseid; $log->time = time(); $log->laststarttime = $starttime; - $log->info = addslashes($message); + $log->info = $message; insert_record ("backup_log",$log); } @@ -309,9 +256,6 @@ function schedule_backup_course_configure($course,$starttime = 0) { if (!isset($backup_config->backup_sche_withuserdata)) { $backup_config->backup_sche_withuserdata = 1; } - if (!isset($backup_config->backup_sche_metacourse)) { - $backup_config->backup_sche_metacourse = 1; - } if (!isset($backup_config->backup_sche_users)) { $backup_config->backup_sche_users = 1; } @@ -324,9 +268,6 @@ function schedule_backup_course_configure($course,$starttime = 0) { if (!isset($backup_config->backup_sche_coursefiles)) { $backup_config->backup_sche_coursefiles = 1; } - if (!isset($backup_config->backup_sche_messages)) { - $backup_config->backup_sche_messages = 1; - } if (!isset($backup_config->backup_sche_active)) { $backup_config->backup_sche_active = 0; } @@ -389,12 +330,10 @@ function schedule_backup_course_configure($course,$starttime = 0) { //Convert other parameters if ($status) { - $preferences->backup_metacourse = $backup_config->backup_sche_metacourse; $preferences->backup_users = $backup_config->backup_sche_users; $preferences->backup_logs = $backup_config->backup_sche_logs; $preferences->backup_user_files = $backup_config->backup_sche_userfiles; $preferences->backup_course_files = $backup_config->backup_sche_coursefiles; - $preferences->backup_messages = $backup_config->backup_sche_messages; $preferences->backup_course = $course->id; $preferences->backup_destination = $backup_config->backup_sche_destination; $preferences->backup_keep = $backup_config->backup_sche_keep; @@ -435,15 +374,11 @@ function schedule_backup_course_configure($course,$starttime = 0) { $backup_name .= userdate(time(),$backup_date_format,99,false); //The extension $backup_name .= ".zip"; - //And finally, clean everything - $backup_name = clean_filename($backup_name); //Calculate the string to match the keep preference $keep_name = $backup_word."-"; //The shortname $keep_name .= strtolower($backup_shortname)."-"; - //And finally, clean everything - $keep_name = clean_filename($keep_name); $preferences->backup_name = $backup_name; $preferences->keep_name = $keep_name; @@ -484,7 +419,7 @@ function schedule_backup_course_configure($course,$starttime = 0) { //Now calculate the users if ($status) { schedule_backup_log($starttime,$course->id," calculating users"); - user_check_backup($course->id,$backup_unique_code,$preferences->backup_users,$preferences->backup_messages); + user_check_backup($course->id,$backup_unique_code,$preferences->backup_users); } //Now calculate the logs @@ -550,6 +485,12 @@ function schedule_backup_course_execute($preferences,$starttime = 0) { $status = clear_backup_dir($preferences->backup_unique_code); } + //Delete old_entries from backup tables + if ($status) { + schedule_backup_log($starttime,$preferences->backup_course," cleaning old data"); + $status = backup_delete_old_data(); + } + //Create the moodle.xml file if ($status) { schedule_backup_log($starttime,$preferences->backup_course," creating backup file"); @@ -568,18 +509,6 @@ function schedule_backup_course_execute($preferences,$starttime = 0) { $status = backup_course_start($backup_file,$preferences); } - //Metacourse information - if ($status && $preferences->backup_metacourse) { - schedule_backup_log($starttime,$preferences->backup_course," metacourse info"); - $status = backup_course_metacourse($backup_file,$preferences); - } - - //Block info - if ($status) { - schedule_backup_log($starttime,$preferences->backup_course," blocks info"); - $status = backup_course_blocks($backup_file,$preferences); - } - //Section info if ($status) { schedule_backup_log($starttime,$preferences->backup_course," sections info"); @@ -592,15 +521,6 @@ function schedule_backup_course_execute($preferences,$starttime = 0) { $status = backup_user_info($backup_file,$preferences); } - //If we have selected to backup messages and we are - //doing a SITE backup, let's do it - if ($status && $preferences->backup_messages && $preferences->backup_course == SITEID) { - schedule_backup_log($starttime,$preferences->backup_course," messages"); - if (!$status = backup_messages($backup_file,$preferences)) { - notify("An error occurred while backing up messages"); - } - } - //If we have selected to backup quizzes, backup categories and //questions structure (step 1). See notes on mod/quiz/backuplib.php if ($status and $preferences->mods['quiz']->backup) { diff --git a/backup/backuplib.php b/backup/backuplib.php index 2677ec3b84c..5eebf827854 100644 --- a/backup/backuplib.php +++ b/backup/backuplib.php @@ -1,4 +1,4 @@ -prefix}backup_ids (backup_code, table_name, old_id) - SELECT DISTINCT $backup_unique_code,'quiz_categories',t.category + SELECT DISTINCT '$backup_unique_code','quiz_categories',t.category FROM {$CFG->prefix}quiz_questions t, {$CFG->prefix}quiz_question_grades g, {$CFG->prefix}quiz q WHERE q.course = '$course' AND g.quiz = q.id AND g.question = t.id",false); - - //Now, foreach detected category, we look for their parents upto 0 (top category) - $categories = get_records_sql("SELECT old_id, old_id - FROM {$CFG->prefix}backup_ids - WHERE backup_code = $backup_unique_code AND - table_name = 'quiz_categories'"); - - if ($categories) { - foreach ($categories as $category) { - if ($dbcat = get_record('quiz_categories','id',$category->old_id)) { - //echo $dbcat->name; //Debug - //Go up to 0 - while ($dbcat->parent != 0) { - //echo '->'; //Debug - $current = $dbcat->id; - if ($dbcat = get_record('quiz_categories','id',$dbcat->parent)) { - //Found parent, add it to backup_ids (by using backup_putid - //we ensure no duplicates!) - $status = backup_putid($backup_unique_code,'quiz_categories',$dbcat->id,0); - //echo $dbcat->name; //Debug - } else { - //Parent not found, fix it (set its parent to 0) - set_field ('quiz_categories','parent',0,'id',$current); - //echo 'assigned to top!'; //Debug - } - } - //echo '
      '; //Debug - } - } - } - return $status; } - - //This function is used to detect orphaned questions (pointing to a - //non existing category) and to recreate such category. This function - //is used by the backup process, to ensure consistency and should be - //executed in the upgrade process and, perhaps in the health center. - function fix_orphaned_questions ($course) { - - global $CFG; - - $categories = get_records_sql("SELECT DISTINCT t.category, t.category - FROM {$CFG->prefix}quiz_questions t, - {$CFG->prefix}quiz_question_grades g, - {$CFG->prefix}quiz q - WHERE q.course = '$course' AND - g.quiz = q.id AND - g.question = t.id",false); - if ($categories) { - foreach ($categories as $key => $category) { - $exist = get_record('quiz_categories','id', $key); - //If the category doesn't exist - if (!$exist) { - //Build a new category - $db_cat->course = $course; - $db_cat->name = get_string('recreatedcategory','',$key); - $db_cat->info = get_string('recreatedcategory','',$key); - $db_cat->publish = 1; - $db_cat->stamp = make_unique_id_code(); - //Insert the new category - $catid = insert_record('quiz_categories',$db_cat); - unset ($db_cat); - if ($catid) { - //Reasign orphaned questions to their new category - set_field ('quiz_questions','category',$catid,'category',$key); - } - } - } - } - } //Delete category ids from backup_ids table function delete_category_ids ($backup_unique_code) { @@ -103,7 +30,7 @@ //Calculate the number of users to backup and put their ids in backup_ids //Return an array of info (name,value) - function user_check_backup($course,$backup_unique_code,$backup_users,$backup_messages) { + function user_check_backup($course,$backup_unique_code,$backup_users) { //$backup_users=0-->all // 1-->course (needed + enrolled) // 2-->none @@ -117,7 +44,7 @@ if ($backup_users == 0 or $backup_users == 1) { //Calculate needed users (calling every xxxx_get_participants function + scales users) - $needed_users = backup_get_needed_users($course, $backup_messages); + $needed_users = backup_get_needed_users($course); //Calculate enrolled users (students + teachers) $enrolled_users = backup_get_enrolled_users($course); @@ -199,9 +126,9 @@ // every student and teacher in the course, so it //must be merged with backup_get_enrrolled_users !! - function backup_get_needed_users ($courseid, $includemessages=false) { + function backup_get_needed_users ($courseid) { - global $CFG; + global $CFG, $THEME; $result = false; @@ -231,7 +158,7 @@ } } - //Now, add scale users (from site and course scales) + //Now, add scales users (from site and course scales) //Get users $scaleusers = get_records_sql("SELECT DISTINCT userid,userid FROM {$CFG->prefix}scale @@ -245,22 +172,6 @@ } } } - - //Now, add message users if necessary - if ($includemessages) { - include_once("$CFG->dirroot/message/lib.php"); - //Get users - $messageusers = message_get_participants(); - //Add message users to results - if ($messageusers) { - foreach ($messageusers as $messageuser) { - //If id != 0 - if ($messageuser->id !=0) { - $result[$messageuser->id]->id = $messageuser->id; - } - } - } - } return $result; @@ -350,9 +261,8 @@ $rootdir = $CFG->dataroot."/users"; //Check if directory exists if (is_dir($rootdir)) { - //Get directories without descend - $userdirs = get_directory_list($rootdir,"",false,true,false); - foreach ($userdirs as $dir) { + $coursedirs = get_directory_list($rootdir); + foreach ($coursedirs as $dir) { //Extracts user id from file path $tok = strtok($dir,"/"); if ($tok) { @@ -403,8 +313,7 @@ $rootdir = $CFG->dataroot."/$course"; //Check if directory exists if (is_dir($rootdir)) { - //Get files and directories without descend - $coursedirs = get_directory_list($rootdir,$CFG->moddata,false,true,true); + $coursedirs = get_directory_list($rootdir,$CFG->moddata); $backupdata_dir = "backupdata"; foreach ($coursedirs as $dir) { //Check it isn't backupdata_dir @@ -460,17 +369,6 @@ return $status; } - //Function to check and create the "group_files" dir to - //save all the user files we need from "groups" dir - function check_and_create_group_files_dir($backup_unique_code) { - - global $CFG; - - $status = check_dir_exists($CFG->dataroot."/temp/backup/".$backup_unique_code."/group_files",true); - - return $status; - } - //Function to check and create the "course_files" dir to //save all the course files we need from "CFG->datadir/course" dir function check_and_create_course_files_dir($backup_unique_code) { @@ -566,13 +464,6 @@ fwrite ($bf,full_tag("DATE",2,false,$preferences->backup_unique_code)); //The original site wwwroot fwrite ($bf,full_tag("ORIGINAL_WWWROOT",2,false,$CFG->wwwroot)); - //The zip method used - if (!empty($CFG->zip)) { - $zipmethod = 'external'; - } else { - $zipmethod = 'internal'; - } - fwrite ($bf,full_tag("ZIP_METHOD",2,false,$zipmethod)); //Te includes tag fwrite ($bf,start_tag("DETAILS",2,true)); //Now, go to mod element of preferences to print its status @@ -595,12 +486,6 @@ //Print the end fwrite ($bf,end_tag("MOD",3,true)); } - //The metacourse in backup - if ($preferences->backup_metacourse == 1) { - fwrite ($bf,full_tag("METACOURSE",3,false,"true")); - } else { - fwrite ($bf,full_tag("METACOURSE",3,false,"false")); - } //The user in backup if ($preferences->backup_users == 1) { fwrite ($bf,full_tag("USERS",3,false,"course")); @@ -627,14 +512,6 @@ } else { fwrite ($bf,full_tag("COURSEFILES",3,false,"false")); } - //The messages in backup - if ($preferences->backup_messages == 1 && $preferences->backup_course == SITEID) { - fwrite ($bf,full_tag("MESSAGES",3,false,"true")); - } else { - fwrite ($bf,full_tag("MESSAGES",3,false,"false")); - } - //The mode of writing the block data - fwrite ($bf,full_tag('BLOCKFORMAT',3,false,'instances')); fwrite ($bf,end_tag("DETAILS",2,true)); @@ -657,12 +534,18 @@ fwrite ($bf,start_tag("HEADER",2,true)); //Get info from course - $course = get_record("course","id",$preferences->backup_course); + $course=false; + if ($courses = get_records("course","id",$preferences->backup_course)) { + $course = $courses[$preferences->backup_course]; + } if ($course) { //Prints course info fwrite ($bf,full_tag("ID",3,false,$course->id)); //Obtain the category - $category = get_record("course_categories","id","$course->category"); + $category = false; + if ($categories = get_records("course_categories","id","$course->category")) { + $category = $categories[$course->category]; + } if ($category) { //Prints category info fwrite ($bf,start_tag("CATEGORY",3,true)); @@ -678,6 +561,7 @@ fwrite ($bf,full_tag("SUMMARY",3,false,$course->summary)); fwrite ($bf,full_tag("FORMAT",3,false,$course->format)); fwrite ($bf,full_tag("SHOWGRADES",3,false,$course->showgrades)); + fwrite ($bf,full_tag("BLOCKINFO",3,false,blocks_get_block_names($course->blockinfo))); fwrite ($bf,full_tag("NEWSITEMS",3,false,$course->newsitems)); fwrite ($bf,full_tag("TEACHER",3,false,$course->teacher)); fwrite ($bf,full_tag("TEACHERS",3,false,$course->teachers)); @@ -693,20 +577,12 @@ fwrite ($bf,full_tag("GROUPMODE",3,false,$course->groupmode)); fwrite ($bf,full_tag("GROUPMODEFORCE",3,false,$course->groupmodeforce)); fwrite ($bf,full_tag("LANG",3,false,$course->lang)); - fwrite ($bf,full_tag("THEME",3,false,$course->theme)); fwrite ($bf,full_tag("COST",3,false,$course->cost)); fwrite ($bf,full_tag("MARKER",3,false,$course->marker)); fwrite ($bf,full_tag("VISIBLE",3,false,$course->visible)); fwrite ($bf,full_tag("HIDDENSECTIONS",3,false,$course->hiddensections)); fwrite ($bf,full_tag("TIMECREATED",3,false,$course->timecreated)); - fwrite ($bf,full_tag("TIMEMODIFIED",3,false,$course->timemodified)); - //If not selected, force metacourse to 0 - if (!$preferences->backup_metacourse) { - $status = fwrite ($bf,full_tag("METACOURSE",3,false,'0')); - //else, export the field as is in DB - } else { - $status = fwrite ($bf,full_tag("METACOURSE",3,false,$course->metacourse)); - } + $status = fwrite ($bf,full_tag("TIMEMODIFIED",3,false,$course->timemodified)); //Print header end fwrite ($bf,end_tag("HEADER",2,true)); } else { @@ -726,246 +602,6 @@ } - //Prints course's metacourse info (table course_meta) - function backup_course_metacourse ($bf,$preferences) { - - global $CFG; - - $status = true; - - //Get info from meta - $parents = get_records_sql ("SELECT m.*, c.idnumber, c.shortname - FROM {$CFG->prefix}course_meta m, - {$CFG->prefix}course c - WHERE m.child_course = '$preferences->backup_course' AND - m.parent_course = c.id"); - $childs = get_records_sql ("SELECT m.*, c.idnumber, c.shortname - FROM {$CFG->prefix}course_meta m, - {$CFG->prefix}course c - WHERE m.parent_course = '$preferences->backup_course' AND - m.child_course = c.id"); - - if ($parents || $childs) { - //metacourse open tag - fwrite ($bf,start_tag("METACOURSE",2,true)); - if ($parents) { - fwrite($bf, start_tag("PARENTS",3,true)); - //Iterate over every parent - foreach ($parents as $parent) { - //Begin parent - fwrite ($bf,start_tag("PARENT",4,true)); - fwrite ($bf,full_tag("ID",5,false,$parent->parent_course)); - fwrite ($bf,full_tag("IDNUMBER",5,false,$parent->idnumber)); - fwrite ($bf,full_tag("SHORTNAME",5,false,$parent->shortname)); - //End parent - fwrite ($bf,end_tag("PARENT",4,true)); - } - fwrite ($bf,end_tag("PARENTS",3,true)); - } - if ($childs) { - fwrite($bf, start_tag("CHILDS",3,true)); - //Iterate over every child - foreach ($childs as $child) { - //Begin parent - fwrite ($bf,start_tag("CHILD",4,true)); - fwrite ($bf,full_tag("ID",5,false,$child->child_course)); - fwrite ($bf,full_tag("IDNUMBER",5,false,$child->idnumber)); - fwrite ($bf,full_tag("SHORTNAME",5,false,$child->shortname)); - //End parent - fwrite ($bf,end_tag("CHILD",4,true)); - } - fwrite ($bf,end_tag("CHILDS",3,true)); - } - //metacourse close tag - $status = fwrite ($bf,end_tag("METACOURSE",3,true)); - } - - return $status; - - } - - //Prints course's messages info (tables message, message_read and message_contacts) - function backup_messages ($bf,$preferences) { - - global $CFG; - - $status = true; - - //Get info from messages - $unreads = get_records ('message'); - $reads = get_records ('message_read'); - $contacts= get_records ('message_contacts'); - - if ($unreads || $reads || $contacts) { - $counter = 0; - //message open tag - fwrite ($bf,start_tag("MESSAGES",2,true)); - if ($unreads) { - //Iterate over every unread - foreach ($unreads as $unread) { - //start message - fwrite($bf, start_tag("MESSAGE",3,true)); - fwrite ($bf,full_tag("ID",4,false,$unread->id)); - fwrite ($bf,full_tag("STATUS",4,false,"UNREAD")); - fwrite ($bf,full_tag("USERIDFROM",4,false,$unread->useridfrom)); - fwrite ($bf,full_tag("USERIDTO",4,false,$unread->useridto)); - fwrite ($bf,full_tag("MESSAGE",4,false,$unread->message)); - fwrite ($bf,full_tag("FORMAT",4,false,$unread->format)); - fwrite ($bf,full_tag("TIMECREATED",4,false,$unread->timecreated)); - fwrite ($bf,full_tag("MESSAGETYPE",4,false,$unread->messagetype)); - //end message - fwrite ($bf,end_tag("MESSAGE",3,true)); - - //Do some output - $counter++; - if ($counter % 20 == 0) { - echo "."; - if ($counter % 400 == 0) { - echo "
      "; - } - backup_flush(300); - } - } - } - - if ($reads) { - //Iterate over every read - foreach ($reads as $read) { - //start message - fwrite($bf, start_tag("MESSAGE",3,true)); - fwrite ($bf,full_tag("ID",4,false,$read->id)); - fwrite ($bf,full_tag("STATUS",4,false,"READ")); - fwrite ($bf,full_tag("USERIDFROM",4,false,$read->useridfrom)); - fwrite ($bf,full_tag("USERIDTO",4,false,$read->useridto)); - fwrite ($bf,full_tag("MESSAGE",4,false,$read->message)); - fwrite ($bf,full_tag("FORMAT",4,false,$read->format)); - fwrite ($bf,full_tag("TIMECREATED",4,false,$read->timecreated)); - fwrite ($bf,full_tag("MESSAGETYPE",4,false,$read->messagetype)); - fwrite ($bf,full_tag("TIMEREAD",4,false,$read->timeread)); - fwrite ($bf,full_tag("MAILED",4,false,$read->mailed)); - //end message - fwrite ($bf,end_tag("MESSAGE",3,true)); - - //Do some output - $counter++; - if ($counter % 20 == 0) { - echo "."; - if ($counter % 400 == 0) { - echo "
      "; - } - backup_flush(300); - } - } - } - - if ($contacts) { - fwrite($bf, start_tag("CONTACTS",3,true)); - //Iterate over every contact - foreach ($contacts as $contact) { - //start contact - fwrite($bf, start_tag("CONTACT",4,true)); - fwrite ($bf,full_tag("ID",5,false,$contact->id)); - fwrite ($bf,full_tag("USERID",5,false,$contact->userid)); - fwrite ($bf,full_tag("CONTACTID",5,false,$contact->contactid)); - fwrite ($bf,full_tag("BLOCKED",5,false,$contact->blocked)); - //end contact - fwrite ($bf,end_tag("CONTACT",4,true)); - - //Do some output - $counter++; - if ($counter % 20 == 0) { - echo "."; - if ($counter % 400 == 0) { - echo "
      "; - } - backup_flush(300); - } - } - fwrite($bf, end_tag("CONTACTS",3,true)); - } - //messages close tag - $status = fwrite ($bf,end_tag("MESSAGES",2,true)); - } - - return $status; - - } - - - - //Prints course's blocks info (table block_instance) - function backup_course_blocks ($bf,$preferences) { - - global $CFG; - - $status = true; - - // Read all of the block table - $blocks = blocks_get_record(); - - $pages = array(); - $pages[] = page_create_object(PAGE_COURSE_VIEW, $preferences->backup_course); - - // Let's see if we have to backup blocks from modules - $modulerecords = get_records_sql('SELECT name, id FROM '.$CFG->prefix.'modules'); - - foreach($preferences->mods as $module) { - if(!$module->backup) { - continue; - } - - $cmods = get_records_select('course_modules', 'course = '.$preferences->backup_course.' AND module = '.$modulerecords[$module->name]->id); - if(empty($cmods)) { - continue; - } - - $pagetypes = page_import_types('mod/'.$module->name.'/'); - if(empty($pagetypes)) { - continue; - } - - foreach($pagetypes as $pagetype) { - foreach($cmods as $cmod) { - $pages[] = page_create_object($pagetype, $cmod->instance); - } - } - } - - //Blocks open tag - fwrite ($bf,start_tag('BLOCKS',2,true)); - - while($page = array_pop($pages)) { - if ($instances = blocks_get_by_page($page)) { - //Iterate over every block - foreach ($instances as $position) { - foreach ($position as $instance) { - //If we somehow have a block with an invalid id, skip it - if(empty($blocks[$instance->blockid]->name)) { - continue; - } - //Begin Block - fwrite ($bf,start_tag('BLOCK',3,true)); - fwrite ($bf,full_tag('NAME',4,false,$blocks[$instance->blockid]->name)); - fwrite ($bf,full_tag('PAGEID',4,false,$instance->pageid)); - fwrite ($bf,full_tag('PAGETYPE',4,false,$instance->pagetype)); - fwrite ($bf,full_tag('POSITION',4,false,$instance->position)); - fwrite ($bf,full_tag('WEIGHT',4,false,$instance->weight)); - fwrite ($bf,full_tag('VISIBLE',4,false,$instance->visible)); - fwrite ($bf,full_tag('CONFIGDATA',4,false,$instance->configdata)); - //End Block - fwrite ($bf,end_tag('BLOCK',3,true)); - } - } - } - } - - //Blocks close tag - $status = fwrite ($bf,end_tag('BLOCKS',2,true)); - - return $status; - - } - //Prints course's sections info (table course_sections) function backup_course_sections ($bf,$preferences) { @@ -1084,10 +720,7 @@ fwrite ($bf,start_tag("USER",3,true)); //Output all user data fwrite ($bf,full_tag("ID",4,false,$user_data->id)); - fwrite ($bf,full_tag("AUTH",4,false,$user_data->auth)); - fwrite ($bf,full_tag("GUID",4,false,$user_data->guid)); fwrite ($bf,full_tag("CONFIRMED",4,false,$user_data->confirmed)); - fwrite ($bf,full_tag("POLICYAGREED",4,false,$user_data->policyagreed)); fwrite ($bf,full_tag("DELETED",4,false,$user_data->deleted)); fwrite ($bf,full_tag("USERNAME",4,false,$user_data->username)); fwrite ($bf,full_tag("PASSWORD",4,false,$user_data->password)); @@ -1097,10 +730,6 @@ fwrite ($bf,full_tag("EMAIL",4,false,$user_data->email)); fwrite ($bf,full_tag("EMAILSTOP",4,false,$user_data->emailstop)); fwrite ($bf,full_tag("ICQ",4,false,$user_data->icq)); - fwrite ($bf,full_tag("SKYPE",4,false,$user_data->skype)); - fwrite ($bf,full_tag("YAHOO",4,false,$user_data->yahoo)); - fwrite ($bf,full_tag("AIM",4,false,$user_data->aim)); - fwrite ($bf,full_tag("MSN",4,false,$user_data->msn)); fwrite ($bf,full_tag("PHONE1",4,false,$user_data->phone1)); fwrite ($bf,full_tag("PHONE2",4,false,$user_data->phone2)); fwrite ($bf,full_tag("INSTITUTION",4,false,$user_data->institution)); @@ -1109,7 +738,6 @@ fwrite ($bf,full_tag("CITY",4,false,$user_data->city)); fwrite ($bf,full_tag("COUNTRY",4,false,$user_data->country)); fwrite ($bf,full_tag("LANG",4,false,$user_data->lang)); - fwrite ($bf,full_tag("THEME",4,false,$user_data->theme)); fwrite ($bf,full_tag("TIMEZONE",4,false,$user_data->timezone)); fwrite ($bf,full_tag("FIRSTACCESS",4,false,$user_data->firstaccess)); fwrite ($bf,full_tag("LASTACCESS",4,false,$user_data->lastaccess)); @@ -1174,7 +802,6 @@ fwrite ($bf,full_tag("TIMEEND",6,false,$tea->timeend)); fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$tea->timemodified)); fwrite ($bf,full_tag("TIMEACCESS",6,false,$tea->timeaccess)); - fwrite ($bf,full_tag("ENROL",6,false,$tea->enrol)); //Print ROLE end fwrite ($bf,end_tag("ROLE",5,true)); } @@ -1190,7 +817,6 @@ fwrite ($bf,full_tag("TIMEEND",6,false,$stu->timeend)); fwrite ($bf,full_tag("TIME",6,false,$stu->time)); fwrite ($bf,full_tag("TIMEACCESS",6,false,$stu->timeaccess)); - fwrite ($bf,full_tag("ENROL",6,false,$stu->enrol)); //Print ROLE end fwrite ($bf,end_tag("ROLE",5,true)); } @@ -1230,7 +856,7 @@ if ($counter % 10 == 0) { echo "."; if ($counter % 200 == 0) { - echo "
      "; + echo "
      "; } backup_flush(300); } @@ -1296,10 +922,10 @@ } //Do some output $counter++; - if ($counter % 20 == 0) { + if ($counter % 10 == 0) { echo "."; - if ($counter % 400 == 0) { - echo "
      "; + if ($counter % 200 == 0) { + echo "
      "; } backup_flush(300); } @@ -1430,29 +1056,20 @@ fwrite ($bf,full_tag("COURSEID",4,false,$group->courseid)); fwrite ($bf,full_tag("NAME",4,false,$group->name)); fwrite ($bf,full_tag("DESCRIPTION",4,false,$group->description)); - fwrite ($bf,full_tag("PASSWORD",4,false,$group->password)); fwrite ($bf,full_tag("LANG",4,false,$group->lang)); - fwrite ($bf,full_tag("THEME",4,false,$group->theme)); fwrite ($bf,full_tag("PICTURE",4,false,$group->picture)); fwrite ($bf,full_tag("HIDEPICTURE",4,false,$group->hidepicture)); fwrite ($bf,full_tag("TIMECREATED",4,false,$group->timecreated)); fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$group->timemodified)); - //Now, backup groups_members, only if users are included - if ($preferences->backup_users != 2) { - $status2 = backup_groups_members_info($bf,$preferences,$group->id); - } + //Now, backup groups_members + $status2 = backup_groups_members_info($bf,$preferences,$group->id); //End group tag fwrite ($bf,end_tag("GROUP",3,true)); } //End groups tag $status = fwrite ($bf,end_tag("GROUPS",2,true)); - - //Now save group_files - if ($status && $status2) { - $status2 = backup_copy_group_files($preferences); - } } return ($status && $status2); } @@ -1558,7 +1175,7 @@ } if ($result != $content && $CFG->debug>7) { //Debug - echo "

      ".$content."
      changed to
      ".$result."

      "; //Debug + echo "

      ".$content."
      changed to
      ".$result."

      "; //Debug } //Debug return $result; @@ -1598,43 +1215,6 @@ } } } - - return $status; - } - - //This function copies all the needed files under the "groups" directory to the "group_files" - //directory under temp/backup - function backup_copy_group_files ($preferences) { - - global $CFG; - - $status = true; - - //First we check if "group_files" exists and create it as necessary - //in temp/backup/$backup_code dir - $status = check_and_create_group_files_dir($preferences->backup_unique_code); - - //Now iterate over directories under "groups" to check if that user must be - //copied to backup - - $rootdir = $CFG->dataroot.'/groups'; - //Check if directory exists - if (is_dir($rootdir)) { - $list = list_directories ($rootdir); - if ($list) { - //Iterate - foreach ($list as $dir) { - //Look for dir like group in groups table - $data = get_record ('groups', 'courseid', $preferences->backup_course, - 'id',$dir); - //If exists, copy it - if ($data) { - $status = backup_copy_file($rootdir."/".$dir, - $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/group_files/".$dir); - } - } - } - } return $status; } @@ -1685,20 +1265,48 @@ $status = true; //Base dir where everything happens - $basedir = cleardoubleslashes($CFG->dataroot."/temp/backup/".$preferences->backup_unique_code); + $basedir = $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code; //Backup zip file name $name = $preferences->backup_name; - //List of files and directories + //List base_dir files and directories $filelist = list_directories_and_files ($basedir); - //Convert them to full paths - $files = array(); - foreach ($filelist as $file) { - $files[] = "$basedir/$file"; + if (empty($CFG->zip)) { // Use built-in php-based zip function + //echo "
      Using pclzip"; //Debug + $files = array(); + foreach ($filelist as $file) { + //If directory, append "/" + //Commented. Not needed wit version 2.0 of pclzip !! + //if (is_dir($basedir."/".$file)) { + // $file = $file."/"; + //} + //Include into array + //echo "
      Adding file/dir ".$file; //Debug + $files[] = $basedir."/".$file; + } + include_once("$CFG->dirroot/lib/pclzip/pclzip.lib.php"); + //include_once("$CFG->dirroot/lib/pclzip/pclerror.lib.php"); //Debug + //include_once("$CFG->dirroot/lib/pclzip/pcltrace.lib.php"); //Debug + //PclTraceOn(2); //Debug + $archive = new PclZip("$basedir/$name"); + if (($list = $archive->create($files,PCLZIP_OPT_REMOVE_PATH,$basedir)) == 0) { + error($archive->errorInfo(true)); + $status = false; + } + //PclTraceDisplay(); //Debug + //PclTraceOff(); //Debug + } else { // Use external zip program + //echo "
      Using external zip"; //Debug + $files = ""; + foreach ($filelist as $file) { + $files .= basename($file); + $files .= " "; + } + $command = "cd $basedir ; $CFG->zip -r $name $files"; + //echo "
      Executing command: ".$command; //Debug + $status = Exec($command); } - $status = zip_files($files, "$basedir/$name"); - //echo "
      Status: ".$status; //Debug return $status; @@ -1724,9 +1332,9 @@ //Define zip destination (course dir) $to_zip_file = $CFG->dataroot."/".$preferences->backup_course; - //echo "

      From: ".$from_zip_file."
      "; //Debug + //echo "

      From: ".$from_zip_file."
      "; //Debug - //echo "

      Checking: ".$to_zip_file."
      "; //Debug + //echo "

      Checking: ".$to_zip_file."
      "; //Debug //Checks course dir exists $status = check_dir_exists($to_zip_file,true); @@ -1734,7 +1342,7 @@ //Define zip destination (backup dir) $to_zip_file = $to_zip_file."/backupdata"; - //echo "

      Checking: ".$to_zip_file."
      "; //Debug + //echo "

      Checking: ".$to_zip_file."
      "; //Debug //Checks backup dir exists $status = check_dir_exists($to_zip_file,true); @@ -1743,7 +1351,7 @@ $to_zip_file = $to_zip_file."/".$preferences->backup_name; } - //echo "

      To: ".$to_zip_file."
      "; //Debug + //echo "

      To: ".$to_zip_file."
      "; //Debug //Copy zip file if ($status) { diff --git a/backup/bb/README.txt b/backup/bb/README.txt deleted file mode 100644 index e19a3c9aa38..00000000000 --- a/backup/bb/README.txt +++ /dev/null @@ -1,73 +0,0 @@ -Ziba Scott 11/19/04 - -This is a beta demonstration of a utility to convert Blackboard -Course export zip files into Moodle course export zip files. It -has been successfully tested with Blackboard 5.5 and -Moodle 1.4.1 and Moodle CVS. There is minimal Blackboard 6 support. -It will convert: - - * Course Name/Title - * Forum Topics - * Course Documents - * Assignments - * External Links - -The current status of this project is -exploration/proof-of-concept. We have successfully converted -basic Blackboard course information as well as course documents -and forum topics using the XSLT methods described above. - -AUTOMATED OPERATION: - - REQUIREMENTS FOR WEB INTERFACE: - *Moodle 1.4.1 or greater - *PHP compiled with --enable-xslt --with-xslt-sablot options - (Check php.net for instructions on enabling xslt for your platform) - - INSTALLATION: - *Unpack this file into the "backup" directory - - - -MANUAL OPERATION: - - REQUIREMENTS: - - *An XSLT 1.0 processor (like Sablotron) - *A zipping utility - - REQUIREMENTS FOR WEB INTERFACE: - - *Linux/Unix - *PHP compiled with --enable-xslt --with-xslt-sablot options. - *Apache with write access to /tmp - *A commandline zipping utility - - COMMAND LINE INSTRUCTIONS: - - 1) Download and uncompress the Blackboard export into a directory. - - 2) Copy bb2moodle.xslt into the Blackboard course directory. - - 3) Run your XSLT processor on imsmanifest.xml with bb2moodle.xslt - as the input and moodle.xml as the output. If you are using - Sablotron on linux, this command will look like this: - sabcmd bb2moodle.xslt imsmanifest.xml > moodle.xml - - 4) Create a moodle zip file with this structure: - moodle.xml - user_files/ - course_files/ - - 5) Copy every subdirectory and its contents from the Blackboard - export directory into the course_files directory. This does - not include the Blackboard XML files, only the course - documents. Your moodle zip file will now look similar to - this: - moodle.xml - user_files/ - course_files/res0009/myfile.doc - course_files/res0010/myotherfile.doc - course_files/res0010/mypicture.jpg - - 6) Upload and restore your moodle zip file diff --git a/backup/bb/bb5.5_to_moodle.xsl b/backup/bb/bb5.5_to_moodle.xsl deleted file mode 100644 index bf87485d8ba..00000000000 --- a/backup/bb/bb5.5_to_moodle.xsl +++ /dev/null @@ -1,737 +0,0 @@ - - - - - - backup-from-blackboard.zip - 2004083100 - 1.4 - 2004083100 - 1.4 - 1094240862 - INSERT URL HERE -

      - - assignment - true - true - - - chat - true - true - - - choice - true - true - - - forum - true - true - - - glossary - true - true - - - journal - true - true - - - label - true - true - - - lesson - true - true - - - quiz - true - true - - - resource - true - true - - - scorm - true - true - - - survey - true - true - - - wiki - true - true - - - workshop - true - true - - course - false - true - true -
      - - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - true - - - - - - - - - - - - - - -
      - 2 - - - - - - 4 - topics - 1 - participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity - 5 - Teacher - Teachers - Student - Students - 0 - 1094270400 - 0 - 10 - 2097152 - 0 - 0 - 0 - - - 0 - 1 - 0 - 1094240775 - 1094240775 - - - -
      -
      - - - - -
      - 0 - 0 - <div style="text-align: center;"><font size="5" style="font-family: arial,helvetica,sans-serif;"></font></div> - - - 1 - - - 1 - - -
      -
      - - - 1. - -
      - - - <span style="font-weight: bold;"></span> - 1 - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - -
      -
      - - - 1. - 1. - - - - - - - - - - - - - - - - - - - - - - - - - - 1. - - 1. - - - - - - - - - - - label - - - - - - 0 - - resource - - - - - - - - - - - - - label - - - - - - - - - - resource - - - - - - - - - - label - - - - - - - resource - - - - - - - - - - - - - - 1. - 1. - - - - 10 - - - - - - - 1094240775 - 0 - 0 - - 1 - 0 - - - - - - - - 1. - - - - label - - - - - - - - <span style="font-style: italic;"> - - - - - :</span> - - - - - - 1094240775 - - - - - - 1. - - - resource - - - - - file - - - / - - - summary broken - - - - - frame - 1094240775 - - - - - - 1. - - - resource - - - - - - text - - - - - - - - - - - - - - 1094240775 - - - - - - 1. - - - resource - - - - file - - - - - <br/> - - - - - - - frame - 1094240775 - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - 1. - - - - - - - - - - - - - - 1. - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1. - - - forum - general - - - - - - - 2 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - - - - 1 - 1094748430 - 1094748430 - 1 - - - 1 - - 0 - - - - - - - 0 - - - - - - - 1. - - 1 - - News forum - - news - 1 - 1094240775 - 0 - 0 - 0 - 1 - 0 - - - - - 1. - - - forum - news - News forum - General news and announcements - 2 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - - - - - 1. - - - - - - - 1 - -1 - 1 - 1094748430 - 1 - - - - 0 - 1 - 1094748430 - 1094748430 - 1 - - - 1 - - 0 - - - - - - - - - - diff --git a/backup/bb/bb6_to_moodle.xsl b/backup/bb/bb6_to_moodle.xsl deleted file mode 100644 index 1bbabb75da3..00000000000 --- a/backup/bb/bb6_to_moodle.xsl +++ /dev/null @@ -1,690 +0,0 @@ - - - - - - backup-from-blackboard.zip - 2004083100 - 1.4 - 2004083100 - 1.4 - 1094240862 - INSERT URL HERE -
      - - assignment - true - true - - - chat - true - true - - - choice - true - true - - - forum - true - true - - - glossary - true - true - - - journal - true - true - - - label - true - true - - - lesson - true - true - - - quiz - true - true - - - resource - true - true - - - scorm - true - true - - - survey - true - true - - - wiki - true - true - - - workshop - true - true - - course - false - true - true -
      -
      - - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - true - - - - - - -
      -
      - - -
      - 2 - - - - - - 4 - topics - 1 - participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity - 5 - Teacher - Teachers - Student - Students - 0 - 1094270400 - 0 - 10 - 2097152 - 0 - 0 - 0 - - - 0 - 1 - 0 - 1094240775 - 1094240775 - - - -
      -
      - - -
      - 0 - 0 - <div style="text-align: center;"><font size="5" style="font-family: arial,helvetica,sans-serif;"></font></div> - - - 1 - - -
      -
      - - - 1. - -
      - - - <span style="font-weight: bold;"></span> - 1 - - - - - - - 0 - - - - - - - - - - - 0 - - - - - - -
      -
      - - - 1. - 1. - - - - - - - - - - - - - - - - - - - - - - - - 1. - 1. - - - - - - - - - - - - - - - - - - 1. - - 1. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1. - 1. - - 10 - - - - - - - label - - 1094240775 - 0 - 0 - - 1 - 0 - - - - - - - 1. - 1. - - 0 - - - - - - - resource - - 1094240775 - 0 - 0 - - 1 - 0 - - - - - - - 1. - 1. - - 0 - - - - resource - - 1094240775 - 0 - 0 - - 1 - 0 - - - - - - - 1. - - - label - - - - - - - - <span style="font-style: italic;"> - - - - - :</span> - - - - - - - - 1094240775 - - - - - - 1. - - - - resource - - - - - - - file - / - - - - - - frame - 1094240775 - - - - - - 1. - - - resource - - - - - - - text - - - - - - - - - - - - - - - - 1094240775 - - - - - - 1. - - - resource - - - - file - - - - - <br/> - - - - - - - frame - 1094240775 - - - - - - 1. - - - - - - - - - - - - - - 1. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1. - - - forum - general - - - - - - - 2 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - - - - 1 - 1094748430 - 1094748430 - 1 - - - 1 - - 0 - - - - - - - 0 - - - - -
      - - - - diff --git a/backup/bb/restore_bb.php b/backup/bb/restore_bb.php deleted file mode 100644 index a95f33c2efe..00000000000 --- a/backup/bb/restore_bb.php +++ /dev/null @@ -1,89 +0,0 @@ - 10-25-04 - -function get_subdirs($directory){ - $opendirectory = opendir( $directory ); - while($filename = readdir($opendirectory)) { - if (is_dir($directory.$filename) and $filename != ".." and $filename != "."){ - $subdirs[] = $filename; - } - } - closedir($opendirectory); - return $subdirs; -} - - -function choose_bb_xsl($manifest){ - $f = fopen($manifest,"r"); - $buffer = fgets($f, 400); - $buffer = fgets($f, 400); - fclose($f); - if (strstr($buffer,"xmlns:bb=\"http://www.blackboard.com/content-packaging/\"")){ - return "bb6_to_moodle.xsl"; - } - return "bb5.5_to_moodle.xsl"; -} - - -function blackboard_convert($dir){ - global $CFG; - - - // Check for a Blackboard manifest file - if (is_readable($dir.'/imsmanifest.xml')){ - - if (!function_exists('xslt_create')) { // XSLT MUST be installed for this to work - notify('You need the XSLT library installed in PHP to open this Blackboard file'); - return false; - } - - //Select the proper XSL file - $xslt_file = choose_bb_xsl($dir.'/imsmanifest.xml'); - - - //TODO: Use the get_string function for this - echo "
    • Converting Blackboard export
    • "; - - // The XSL file must be in the same directory as the Blackboard files when it is processed - if (!copy($CFG->dirroot."/backup/bb/$xslt_file", "$dir/$xslt_file")) { - notify('Could not copy the XSLT file to '."$dir/$xslt_file"); - return false; - } - - // Change to that directory - $startdir = getcwd(); - chdir($dir); - - - // Process the Blackboard XML files with the chosen XSL file. - // The imsmanifest contains all the XML files and their relationships. - // The XSL processor will open them as needed. - $xsltproc = xslt_create(); - if (!xslt_process($xsltproc, 'imsmanifest.xml', "$dir/$xslt_file", "$dir/moodle.xml")) { - notify('Failed writing xml file'); - chdir($startdir); - return false; - } - - - // Copy the Blackboard course files into the moodle course_files structure - $subdirs = get_subdirs($dir."/"); - mkdir("$dir/course_files"); - foreach ($subdirs as $subdir){ - rename($subdir, "course_files/$subdir"); - } - - chdir($startdir); - - // Blackboard export successfully converted - return true; - } - // This is not a Blackboard export - return true; - -} - -?> diff --git a/backup/config.html b/backup/config.html index fe0a908f1ba..9d1c284ba1c 100644 --- a/backup/config.html +++ b/backup/config.html @@ -20,9 +20,6 @@ if (!isset($backup_config->backup_sche_withuserdata)) { $backup_config->backup_sche_withuserdata = 1; } - if (!isset($backup_config->backup_sche_metacourse)) { - $backup_config->backup_sche_metacourse = 1; - } if (!isset($backup_config->backup_sche_users)) { $backup_config->backup_sche_users = 1; } @@ -35,9 +32,6 @@ if (!isset($backup_config->backup_sche_coursefiles)) { $backup_config->backup_sche_coursefiles = 1; } - if (!isset($backup_config->backup_sche_messages)) { - $backup_config->backup_sche_messages = 0; - } if (!isset($backup_config->backup_sche_active)) { $backup_config->backup_sche_active = 0; } @@ -88,15 +82,14 @@ $keep_array[500] = "500"; ?>
      -sesskey."\"/>"; ?> - - - +
      + + - - - + + @@ -104,17 +97,8 @@ - - - - - - - + + @@ -122,8 +106,8 @@ - - + + @@ -131,8 +115,8 @@ - - + + @@ -140,8 +124,8 @@ - - + + @@ -149,17 +133,8 @@ - - - - - - - + + - - + + - - + - - - + - - + - +
      : +

      :

      backup_sche_modules, "") ?> backup_sche_withuserdata, "") ?>
      : - backup_sche_metacourse, "") ?> - - -
      :

      :

      backup_sche_users, "") ?>
      :

      :

      backup_sche_logs, "") ?>
      :

      :

      backup_sche_userfiles, "") ?>
      :

      :

      backup_sche_coursefiles, "") ?>
      : - backup_sche_messages, "") ?> - - -
      :

      :

      backup_sche_keep, ""); @@ -170,16 +145,16 @@
      +
      : backup_sche_active, "") ?>
      + backup_sche_weekdays,$stddayofweek,1) == "1") { - $strchecked = " checked=\"checked\""; + $strchecked = " checked"; } else { $strchecked = ""; } - $check_names[] = ""; + $check_names[] = ""; $i++; } $table->align = array("center","center","center","center","center","center","center"); @@ -214,19 +189,19 @@ ?>
      +
      : backup_sche_hour,$backup_config->backup_sche_minute)) ?>
      - :
      "; } ?> +
      + :
      "; } ?>
      - " /> + ">
      diff --git a/backup/db/mysql.php b/backup/db/mysql.php index ac175e82934..d5c74a11847 100644 --- a/backup/db/mysql.php +++ b/backup/db/mysql.php @@ -67,7 +67,7 @@ function backup_upgrade($oldversion=0) { } if ($oldversion < 2003082600 and $result) { - print_simple_box("This is the first non-alpha release of the Backup/Restore module.

      Thanks for upgrading!","center", "50%", '', "20", "noticebox"); + print_simple_box("This is the first non-alpha release of the Backup/Restore module.

      Thanks for upgrading!","center", "50%", "$THEME->cellheading", "20", "noticebox"); } if ($oldversion < 2003112700 and $result) { diff --git a/backup/lib.php b/backup/lib.php index 5fcbf1cace2..c76533585ff 100644 --- a/backup/lib.php +++ b/backup/lib.php @@ -2,8 +2,6 @@ //This file contains all the general function needed (file manipulation...) //not directly part of the backup/restore utility - require_once($CFG->dirroot.'/lib/uploadlib.php'); - //Sets a name/value pair in backup_config table function backup_set_config($name, $value) { if (get_field("backup_config", "name", "name", $name)) { @@ -58,8 +56,7 @@ global $CFG; $status = true; - //Get files and directories in the temp backup dir witout descend - $list = get_directory_list($CFG->dataroot."/temp/backup", "", false, true, true); + $list = get_directory_list($CFG->dataroot."/temp/backup", "", false); foreach ($list as $file) { $file_path = $CFG->dataroot."/temp/backup/".$file; $moddate = filemtime($file_path); @@ -285,21 +282,17 @@ global $CFG; if (is_file($from_file)) { - //echo "
      Copying ".$from_file." to ".$to_file; //Debug + //echo "
      Copying ".$from_file." to ".$to_file; //Debug //$perms=fileperms($from_file); //return copy($from_file,$to_file) && chmod($to_file,$perms); umask(0000); - if (copy($from_file,$to_file) && chmod($to_file,$CFG->directorypermissions)) { - clam_log_upload($to_file,null,true); - return true; - } - return false; + return copy($from_file,$to_file) && chmod($to_file,$CFG->directorypermissions); } else if (is_dir($from_file)) { return backup_copy_dir($from_file,$to_file); } else{ - //echo "
      Error: not file or dir ".$from_file; //Debug + //echo "
      Error: not file or dir ".$from_file; //Debug return false; } } @@ -309,7 +302,7 @@ global $CFG; if (!is_dir($to_file)) { - //echo "
      Creating ".$to_file; //Debug + //echo "
      Creating ".$to_file; //Debug umask(0000); $status = mkdir($to_file,$CFG->directorypermissions); } diff --git a/backup/log.php b/backup/log.php index 93a81483675..0f245fc4e53 100644 --- a/backup/log.php +++ b/backup/log.php @@ -1,4 +1,4 @@ -shortname: $strconfiguration: $strbackup", $site->fullname, "admin/index.php\">$stradmin -> ". "admin/configure.php\">$strconfiguration -> ". - "admin/backup.php?sesskey=$USER->sesskey\">$strbackup -> ". + "admin/backup.php\">$strbackup -> ". $strlogs); print_heading($backuploglaststatus); - print_simple_box_start('center'); + print_simple_box_start("center", "", "$THEME->cellheading"); //Now, get every record from backup_courses $courses = get_records("backup_courses"); if (!$courses) { notify("No logs found!"); } else { - echo ""; + echo "
      "; //Print table header - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; foreach ($courses as $course) { //Get the course shortname $coursename = get_field ("course","fullname","id",$course->courseid); if ($coursename) { - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - if ($course->laststatus == 1) { - echo ""; - } else if ($course->laststatus == 2) { - echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + if (!$course->laststatus) { + echo ""; } else { - echo ""; + echo ""; } - echo ""; + echo ""; echo ""; } } @@ -86,7 +83,7 @@ print_header("$site->shortname: $strconfiguration: $strbackup", $site->fullname, "admin/index.php\">$stradmin -> ". "admin/configure.php\">$strconfiguration -> ". - "admin/backup.php?sesskey=$USER->sesskey\">$strbackup -> ". + "admin/backup.php\">$strbackup -> ". "$strlogs -> ". $strbackupdetails); @@ -95,7 +92,7 @@ $coursename = get_field("course","fullname","id","$courseid"); print_heading("$strcourse: $coursename"); - print_simple_box_start('center'); + print_simple_box_start("center", "", "$THEME->cellheading"); //First, me get all the distinct backups for that course in backup_log $executions = get_records_sql("SELECT DISTINCT laststarttime,laststarttime @@ -107,10 +104,10 @@ if (!$executions) { notify("No logs found!"); } else { - echo "
      $strcourse$strtimetaken$strstatus$strnext
      $strcourse$strtimetaken$strstatus$strnext
      courseid\">".$coursename."".userdate($course->laststarttime,$strftimedatetime)." - ".userdate($course->lastendtime,$strftimedatetime)."".$strok."".$strunfinished."
      courseid\">".$coursename."".userdate($course->laststarttime,$strftimedatetime)." - ".userdate($course->lastendtime,$strftimedatetime)."".$strerror."".$strerror."".$strok."".userdate($course->nextstarttime,$strftimedatetime)."".userdate($course->nextstarttime,$strftimedatetime)."
      "; + echo "
      "; foreach($executions as $execution) { - echo ""; - echo ""; + echo ""; echo ""; @@ -118,14 +115,14 @@ FROM {$CFG->prefix}backup_log WHERE courseid = '$courseid' AND laststarttime = '$execution->laststarttime' - ORDER BY id"); + ORDER BY time"); if ($logs) { foreach ($logs as $log) { - echo ""; - echo ""; - $log->info = str_replace("- ERROR!!","- ERROR!!",$log->info); - $log->info = str_replace("- OK","- OK",$log->info); - echo ""; + echo ""; + echo ""; + $log->info = str_replace("- ERROR!!","- ERROR!!",$log->info); + $log->info = str_replace("- OK","- OK",$log->info); + echo ""; echo ""; } } diff --git a/backup/restore.php b/backup/restore.php index c0ac5827fec..12753fc810c 100644 --- a/backup/restore.php +++ b/backup/restore.php @@ -1,4 +1,4 @@ -libdir/blocklib.php"); - require_once("$CFG->libdir/wiki_to_markdown.php" ); //Optional optional_variable($id); optional_variable($file); optional_variable($cancel); optional_variable($launch); - optional_variable($to); //Check login require_login(); - if (!$to && isset($SESSION->restore->restoreto) && isset($SESSION->restore->importing) && isset($SESSION->restore->course_id)) { - $to = $SESSION->restore->course_id; - } - if (!empty($id)) { if (!isteacheredit($id)) { - if (empty($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } else { - if (!isteacheredit($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } - } + error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); } } else { if (!isadmin()) { @@ -53,24 +40,20 @@ //Check backup_version if ($file) { - $linkto = "restore.php?id=".$id."&file=".$file; + $linkto = "restore.php?id=".$id."&file=".$file; } else { $linkto = "restore.php"; } upgrade_backup_db($linkto); //Get strings - if (empty($to)) { - $strcourserestore = get_string("courserestore"); - } else { - $strcourserestore = get_string("importdata"); - } + $strcourserestore = get_string("courserestore"); $stradministration = get_string("administration"); //If no file has been selected from the FileManager, inform and end if (!$file) { print_header("$site->shortname: $strcourserestore", $site->fullname, - "wwwroot/$CFG->admin/index.php\">$stradministration -> $strcourserestore"); + "wwwroot/$CFG->admin/index.php\">$stradministration -> $strcourserestore"); print_heading(get_string("nofilesselected")); print_continue("$CFG->wwwroot/$CFG->admin/index.php"); print_footer(); @@ -80,7 +63,7 @@ //If cancel has been selected, inform and end if ($cancel) { print_header("$site->shortname: $strcourserestore", $site->fullname, - "wwwroot/$CFG->admin/index.php\">$stradministration -> $strcourserestore"); + "wwwroot/$CFG->admin/index.php\">$stradministration -> $strcourserestore"); print_heading(get_string("restorecancelled")); print_continue("$CFG->wwwroot/$CFG->admin/index.php"); print_footer(); @@ -107,26 +90,18 @@ $strcourserestore"); } //Print form - print_heading("$strcourserestore".((empty($to) ? ': '.basename($file) : ''))); - print_simple_box_start('center'); + print_heading("$strcourserestore: ".basename($file)); + print_simple_box_start("center", "", "$THEME->cellheading"); //Adjust some php variables to the execution of this script - @ini_set("max_execution_time","3000"); - raise_memory_limit("memory_limit","128M"); + ini_set("max_execution_time","3000"); + ini_set("memory_limit","80M"); //Call the form, depending the step we are - - if (!$launch) { include_once("restore_precheck.html"); } else if ($launch == "form") { - if ($SESSION->restore->importing) { - // set up all the config stuff and skip asking the user about it. - restore_setup_for_check($SESSION->restore,$backup_unique_code); - include_once("restore_execute.html"); - } else { - include_once("restore_form.html"); - } + include_once("restore_form.html"); } else if ($launch == "check") { include_once("restore_check.html"); } else if ($launch == "execute") { diff --git a/backup/restore_check.html b/backup/restore_check.html index a7307868035..3606e59a93b 100644 --- a/backup/restore_check.html +++ b/backup/restore_check.html @@ -1,4 +1,4 @@ -restoreto=$restore_restoreto; - $restore->metacourse=$restore_metacourse; $restore->users=$restore_users; $restore->logs=$restore_logs; $restore->user_files=$restore_user_files; $restore->course_files=$restore_course_files; - $restore->messages=$restore_messages; $restore->course_id=$course_id; } else { //We have the object, so check if we have a new course_id @@ -98,7 +94,7 @@ //We have the object with data, put it in the session $SESSION->restore = $restore; - //From here to the end of the script, only use the $restore object + //From here to the wnd of the script, only use the $restore object //Check login require_login(); @@ -120,18 +116,18 @@ } //Depending the selected restoreto: - // If user is a teacher (and not creator): + // If user is a teacher (and nor admin): // 0-Current course, deleting: Put $restore->course_id and $restore->deleting (true), create the restore object // 1-Current course, adding: Put $restore->course_id and $restore->deleting (false), create the restore object - // If the uses is a creator: + // If the uses is an admin: // 0-Existing course, deleting: Select the destination course and launch the check again, then // put $restore->course_id and $restore->deleting (true), create the restore object. // 1-Existing course, adding: Select the destination course and launch the check again, then // put $restore->course_id and $restore->deleting (false), create the restore object. // 2-New course: Create the restore object and launch the execute. - //If the user is a teacher and not a creator - if (isteacheredit($id) and !iscreator()) { + //If the user is a teacher and not an admin + if (isteacher($id) and !isadmin()) { $restore->course_id = $id; if ($restore->restoreto == 0) { $restore->deleting = true; @@ -140,8 +136,8 @@ } } - //If the user is a creator (or admin) - if (iscreator()) { + //If the user is an admin + if (isadmin()) { //Set restore->deleting as needed if ($restore->restoreto == 0) { $restore->deleting = true; @@ -151,12 +147,12 @@ } //Now, select the course if needed - if (($restore->restoreto == 0 or $restore->restoreto == 1) and ($restore->course_id == 0) and (iscreator())) { - if ($courses = get_courses("all","c.fullname","c.id,c.fullname,c.shortname")) { + if (($restore->restoreto == 0 or $restore->restoreto == 1) and ($restore->course_id == 0) and (isadmin())) { + if ($courses = get_courses("all","c.fullname")) { print_heading(get_string("choosecourse")); - print_simple_box_start("center"); + print_simple_box_start("CENTER"); foreach ($courses as $course) { - echo "id&launch=check&id=$id&file=$file\">$course->fullname ($course->shortname)
      "; + echo "id&launch=check&id=$id&file=$file\">$course->fullname ($course->shortname)
      "; } print_simple_box_end(); } else { @@ -176,10 +172,6 @@ $changed = true; } } - //If we have selected user files or messages, then users must be restored too - if ($restore->user_files || $restore->messages) { - $changed = 1; - } if ($changed) { echo get_string ("noteuserschangednonetocourse"); echo "
      "; @@ -191,12 +183,12 @@ if ($show_continue_button) { //Print the continue button to execute the restore NOW !!!! //All is prepared !!! - echo "
      "; + echo "
      "; $hidden["launch"] = "execute"; $hidden["file"] = $file; $hidden["id"] = $id; print_single_button("restore.php", $hidden, get_string("restorecoursenow"),"post"); - echo "
      "; + echo "
      "; } else { //Show error error ("Something was wrong checking restore preferences"); diff --git a/backup/restore_execute.html b/backup/restore_execute.html index e084b41b7be..960c5293319 100644 --- a/backup/restore_execute.html +++ b/backup/restore_execute.html @@ -1,4 +1,4 @@ -original_wwwroot to $restore to be able to use it in all the restore process //(mainly when decoding internal links) $restore->original_wwwroot = $info->original_wwwroot; - //Add info->backup_version to $restore to be able to detect versions in the restore process - //(to decide when to convert wiki texts to markdown...) - $restore->backup_version = $info->backup_backup_version; //Check login require_login(); @@ -23,13 +20,7 @@ //Check admin if (!empty($id)) { if (!isteacheredit($id)) { - if (empty($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } else { - if (!isteacheredit($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } - } + error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); } } else { if (!isadmin()) { @@ -56,7 +47,7 @@ } //Start the main table - echo "
      "; + echo "
      "; print_simple_box("
      ".userdate($execution->laststarttime)."
      ", "center"); echo "
      ".userdate($log->time,$strftimetime)."".str_replace(" ","    ",$log->info)."
      ".userdate($log->time,$strftimetime)."".str_replace(" ","    ",$log->info)."
      "; + echo "
      "; echo ""; + echo ""; echo "
      "; //Start the main ul @@ -73,19 +64,15 @@ //Saving conversion id variables into backup_tables if ($restore->restoreto == 2) { echo "
    • ".get_string("creatingnewcourse"); - $oldidnumber = $course_header->course_idnumber; if (!$status = restore_create_new_course($restore,$course_header)) { notify("Error while creating the new empty course."); } //Print course fullname and shortname and category if ($status) { echo "
        "; - echo "
      • ".$course_header->course_fullname." (".$course_header->course_shortname.")".'
      • '; - echo "
      • ".get_string("category").": ".$course_header->category->name.'
      • '; - if (!empty($oldidnumber)) { - echo "
      • ".get_string("nomoreidnumber","moodle",$oldidnumber)."
      • "; - } - echo "
    • "; + echo "
    • ".$course_header->course_fullname." (".$course_header->course_shortname.")"; + echo "
    • ".get_string("category").": ".$course_header->category->name; + echo ""; //Put the destination course_id $restore->course_id = $course_header->course_id; } @@ -94,17 +81,17 @@ if ($course) { echo "
    • ".get_string("usingexistingcourse"); echo "
        "; - echo "
      • ".get_string("from").": ".$course_header->course_fullname." (".$course_header->course_shortname.")".'
      • '; - echo "
      • ".get_string("to").": ".$course->fullname." (".$course->shortname.")".'
      • '; + echo "
      • ".get_string("from").": ".$course_header->course_fullname." (".$course_header->course_shortname.")"; + echo "
      • ".get_string("to").": ".$course->fullname." (".$course->shortname.")"; if (($restore->deleting)) { - echo "
      • ".get_string("deletingexistingcoursedata").'
      • '; + echo "
      • ".get_string("deletingexistingcoursedata"); } else { - echo "
      • ".get_string("addingdatatoexisting").'
      • '; + echo "
      • ".get_string("addingdatatoexisting"); } - echo "
    • "; + echo ""; //If we have selected to restore deleting, we do it now. if ($restore->deleting) { - echo "
    • ".get_string("deletingolddata").'
    • '; + echo "
    • ".get_string("deletingolddata"); $status = remove_course_contents($restore->course_id,false) and delete_dir_contents($CFG->dataroot."/".$restore->course_id,"backupdata"); if ($status) { @@ -125,13 +112,13 @@ if ($status) { //Into new course if ($restore->restoreto == 2) { - echo "
    • ".get_string("creatingsections").'
    • '; + echo "
    • ".get_string("creatingsections"); if (!$status = restore_create_sections($restore,$xml_file)) { notify("Error creating sections in the existing course."); } //Into existing course } else if ($restore->restoreto == 0 or $restore->restoreto == 1) { - echo "
    • ".get_string("checkingsections").'
    • '; + echo "
    • ".get_string("checkingsections"); if (!$status = restore_create_sections($restore,$xml_file)) { notify("Error creating sections in the existing course."); } @@ -142,9 +129,10 @@ } } + //Now create users as needed if ($status and ($restore->users == 0 or $restore->users == 1)) { - echo "
    • ".get_string("creatingusers")."
      "; + echo "
    • ".get_string("creatingusers")."
      "; if (!$status = restore_create_users($restore,$xml_file)) { notify("Could not restore users."); } @@ -180,7 +168,7 @@ if ($counter % 10 == 0) { echo "."; if ($counter % 200 == 0) { - echo "
      "; + echo "
      "; } backup_flush(300); } @@ -188,8 +176,8 @@ //Now print information gathered echo " (".get_string("new").": ".$new_count.", ".get_string("existing").": ".$exists_count.")"; echo "
        "; - echo "
      • ".get_string("students").": ".$student_count.'
      • '; - echo "
      • ".get_string("teachers").": ".$teacher_count.'
      • '; + echo "
      • ".get_string("students").": ".$student_count; + echo "
      • ".get_string("teachers").": ".$teacher_count; echo "
      "; } else { notify("No users were found!"); @@ -197,31 +185,17 @@ } } - //Now create metacourse info - if ($status and $restore->metacourse) { - //Only to new courses! - if ($restore->restoreto == 2) { - echo "
    • ".get_string("creatingmetacoursedata"); - if (!$status = restore_create_metacourse($restore,$xml_file)) { - notify("Error creating metacourse in the course."); - } - } - } - - //Now create categories and questions as needed (STEP1) if ($status and ($restore->mods['quiz']->restore)) { - echo "
    • ".get_string("creatingcategoriesandquestions"); - echo "
        "; - if (!$status = restore_create_questions($restore,$xml_file)) { - notify("Could not restore categories and questions!"); - } - echo "
    • "; + echo "
    • ".get_string("creatingcategoriesandquestions")."
      "; + if (!$status = restore_create_questions($restore,$xml_file)) { + notify("Could not restore categories and questions!"); + } } //Now create user_files as needed if ($status and ($restore->user_files)) { - echo "
    • ".get_string("copyinguserfiles"); + echo "
    • ".get_string("copyinguserfiles")."
      "; if (!$status = restore_user_files($restore)) { notify("Could not restore user files!"); } @@ -230,13 +204,13 @@ //Inform about user dirs created from backup echo "
        "; echo "
      • ".get_string("userzones").": ".$status; - echo "
      "; + echo ""; } } //Now create course files as needed if ($status and ($restore->course_files)) { - echo "
    • ".get_string("copyingcoursefiles")."
    • "; + echo "
    • ".get_string("copyingcoursefiles")."
      "; if (!$status = restore_course_files($restore)) { notify("Could not restore course files!"); } @@ -249,18 +223,9 @@ } } - //Now create messages as needed - if ($status and ($restore->messages)) { - echo "
    • ".get_string("creatingmessagesinfo"); - if (!$status = restore_create_messages($restore,$xml_file)) { - notify("Could not restore messages!"); - } - echo "
    • "; - } - //Now create scales as needed if ($status) { - echo "
    • ".get_string("creatingscales").'
    • '; + echo "
    • ".get_string("creatingscales"); if (!$status = restore_create_scales($restore,$xml_file)) { notify("Could not restore custom scales!"); } @@ -268,7 +233,7 @@ //Now create groups as needed if ($status) { - echo "
    • ".get_string("creatinggroups").'
    • '; + echo "
    • ".get_string("creatinggroups"); if (!$status = restore_create_groups($restore,$xml_file)) { notify("Could not restore groups!"); } @@ -276,7 +241,7 @@ //Now create events as needed if ($status) { - echo "
    • ".get_string("creatingevents").'
    • '; + echo "
    • ".get_string("creatingevents"); if (!$status = restore_create_events($restore,$xml_file)) { notify("Could not restore course events!"); } @@ -290,20 +255,9 @@ } } - //Bring back the course blocks -- do it AFTER the modules!!! - if($status) { - //If we are deleting and bringing into a course or making a new course, same situation - if($restore->restoreto == 0 || $restore->restoreto == 2) { - echo '
    • '.get_string('creatingblocks').'
    • '; - if (!$status = restore_create_blocks($restore, $info->backup_block_format, $course_header->blockinfo, $xml_file)) { - notify('Error while creating the course blocks'); - } - } - } - //Now create log entries as needed if ($status and ($restore->logs)) { - echo "
    • ".get_string("creatinglogentries"); + echo "
    • ".get_string("creatinglogentries"); if (!$status = restore_create_logs($restore,$xml_file)) { notify("Could not restore logs!"); } @@ -311,7 +265,7 @@ //Now, if all is OK, adjust the instance field in course_modules !! if ($status) { - echo "
    • ".get_string("checkinginstances").'
    • '; + echo "
    • ".get_string("checkinginstances"); if (!$status = restore_check_instances($restore)) { notify("Could not adjust instances in course_modules!"); } @@ -319,7 +273,7 @@ //Now, if all is OK, adjust activity events if ($status) { - echo "
    • ".get_string("refreshingevents").'
    • '; + echo "
    • ".get_string("refreshingevents"); if (!$status = restore_refresh_events($restore)) { notify("Could not refresh events for activities!"); } @@ -333,38 +287,21 @@ } } - //Now, with backup files prior to version 2005041100, - //convert all the wiki texts in the course to markdown - if ($status && $restore->backup_version < 2005041100) { - echo "
    • ".get_string("convertingwikitomarkdown"); - if (!$status = restore_convert_wiki2markdown($restore)) { - notify("Could not convert wiki texts to markdown!"); - } - } - //Now if all is OK, update: // - course modinfo field // - categories table - // - add user as teacher if ($status) { - echo "
    • ".get_string("checkingcourse").'
    • '; + echo "
    • ".get_string("checkingcourse"); //modinfo field rebuild_course_cache($restore->course_id); //categories table $course = get_record("course","id",$restore->course_id); fix_course_sortorder(); - //Make the user a teacher if the course hasn't teachers (bug 2381) - if (!isadmin()) { - if (!$checktea = get_records('user_teachers','course', $restore->course_id)) { - //Add the teacher to the course - $status = add_teacher($USER->id, $restore->course_id); - } - } } //Cleanup temps (files and db) if ($status) { - echo "
    • ".get_string("cleaningtempdata").'
    • '; + echo "
    • ".get_string("cleaningtempdata"); if (!$status = clean_temp_data ($restore)) { notify("Could not clean up temporary data from files and database"); } @@ -375,21 +312,15 @@ //End the main table - echo "
    • "; if (!$status) { error ("An error has occurred and the restore could not be completed!"); } - if (!$restore->importing) { - echo $output; - //Print final message - print_simple_box(get_string("restorefinished"),"center"); - } else { - print_simple_box(get_string("importdatafinished"),"center"); - unset($SESSION->restore); - } + //Print final message + print_simple_box(get_string("restorefinished"),"CENTER"); print_continue("$CFG->wwwroot/course/view.php?id=".$restore->course_id); ?> diff --git a/backup/restore_form.html b/backup/restore_form.html index c12920a1d20..a3619a82ef5 100644 --- a/backup/restore_form.html +++ b/backup/restore_form.html @@ -1,4 +1,4 @@ - - - - + +
      "; - echo ""; //Line - echo ""; + echo ""; //Now, check modules and info and show posibilities if ($allmods = get_records("modules") ) { //Print option to select/deselect every "with user info" popup. For Gustav, lol, Eloy :-) @@ -156,7 +148,7 @@ function selectItemInMenuByName(formId, menuName, selectIndex ) { get_string("none").""; echo ""; echo ""; - echo ""; + echo ""; foreach ($allmods as $mod) { $modname = $mod->name; $modrestore = $modname."_restore_mods"; @@ -170,9 +162,9 @@ function selectItemInMenuByName(formId, menuName, selectIndex ) { if (isset($info->mods[$modname]) && $info->mods[$modname]->backup == "true") { //Print the full tr echo ""; - echo ""; } else { //Module isn't restorable - echo ""; - echo ""; + echo ""; + echo ""; } } else { //Module isn't restorable - echo ""; - echo ""; + echo ""; + echo ""; } } else { //Module isn't restorable - echo ""; - echo ""; + echo ""; + echo ""; } } //Line - echo ""; + echo ""; - //Now print the Metacourse tr - echo ""; - echo ""; //Now print the Users tr echo ""; - echo ""; //Now print the Logs tr echo ""; - echo ""; //Now print the User Files tr echo ""; - echo ""; //Now print the Course Files tr echo ""; - echo ""; - - //Now print the Messages tr - echo ""; - echo ""; + echo ""; + echo ""; } ?>
      "; + echo "

      "; echo get_string("restoreto").":"; echo "

      "; - if (isteacheredit($id) and !iscreator()) { + if (isteacheredit($id) and !isadmin()) { $restore_restoreto_options[0] = get_string("currentcoursedeleting"); $restore_restoreto_options[1] = get_string("currentcourseadding"); } - if (iscreator()) { + if (isadmin()) { $restore_restoreto_options[0] = get_string("existingcoursedeleting"); $restore_restoreto_options[1] = get_string("existingcourseadding"); $restore_restoreto_options[2] = get_string("newcourse"); @@ -143,7 +135,7 @@ function selectItemInMenuByName(formId, menuName, selectIndex ) { choose_from_menu($restore_restoreto_options, "restore_restoreto", $restore_restoreto, ""); echo "




      "; + echo "

      "; echo get_string("include")." ". get_string("modulenameplural",$modname).":"; - echo "

      "; + echo ""; $restore_options[0] = get_string("no"); $restore_options[1] = get_string("yes"); choose_from_menu($restore_options, $restore_var, $$restore_var, ""); @@ -185,48 +177,33 @@ function selectItemInMenuByName(formId, menuName, selectIndex ) { } else { //Module haven't userdata echo get_string("withoutuserdata"); - echo ""; + echo ""; } echo "


      "; - echo get_string("metacourse").":"; - echo ""; - //If metacourse are in the backup file, show menu, else fixed to no - if ($info->backup_metacourse == "true") { - $metacourse_options[0] = get_string("no"); - $metacourse_options[1] = get_string("yes"); - choose_from_menu($metacourse_options, "restore_metacourse", $restore_metacourse, ""); - } else { - echo get_string("no"); - echo ""; - } - echo "
      "; + echo "

      "; echo get_string("users").":"; - echo "

      "; + echo ""; //If some user is present in the backup file if ($info->backup_users == "all" or $info->backup_users == "course") { //If all users are in the backup file @@ -238,16 +215,16 @@ function selectItemInMenuByName(formId, menuName, selectIndex ) { choose_from_menu($user_options, "restore_users", $restore_users, ""); } else { echo get_string("none"); - echo ""; + echo ""; } echo "
      "; + echo "

      "; echo get_string("logs").":"; - echo "

      "; + echo ""; //If logs are in the backup file, show menu, else fixed to no if ($info->backup_logs == "true") { $log_options[0] = get_string("no"); @@ -255,15 +232,15 @@ function selectItemInMenuByName(formId, menuName, selectIndex ) { choose_from_menu($log_options, "restore_logs", $restore_logs, ""); } else { echo get_string("no"); - echo ""; + echo ""; } echo "
      "; + echo "

      "; echo get_string ("userfiles").":"; - echo "

      "; + echo ""; //If user files are in the backup file, show menu, else fixed to no if ($info->backup_user_files == "true") { $user_file_options[0] = get_string("no"); @@ -271,17 +248,15 @@ function selectItemInMenuByName(formId, menuName, selectIndex ) { choose_from_menu($user_file_options, "restore_user_files", $restore_user_files, ""); } else { echo get_string("no"); - echo ""; + echo ""; } echo "
      "; + echo "

      "; echo get_string ("coursefiles").":"; - echo "

      "; - echo ""; - echo ""; + echo ""; //If course files are in the backup file, show menu, else fixed to no if ($info->backup_course_files == "true") { $course_file_options[0] = get_string("no"); @@ -289,36 +264,19 @@ function selectItemInMenuByName(formId, menuName, selectIndex ) { choose_from_menu($course_file_options, "restore_course_files", $restore_course_files, ""); } else { echo get_string("no"); - echo ""; - } - echo "
      "; - - //This tr is slighty different. Everything becomes hidden if - //we haven't messages is the backup, to avoid confusions to users. - //If messages are in the backup file, show menu, else fixed to no and show nothing - if ($info->backup_messages == "true") { - echo get_string ('messages','message').":"; - echo ""; - $message_options[0] = get_string("no"); - $message_options[1] = get_string("yes"); - choose_from_menu($message_options, "restore_messages", $restore_messages, ""); - } else { - echo " "; - echo ""; + echo ""; } echo "
      -
      -

      - - -" /> -" /> -
      -
      +
      +
      + + +"> +"> +
      + diff --git a/backup/restore_precheck.html b/backup/restore_precheck.html index 02e82004469..ba65a2c43bf 100644 --- a/backup/restore_precheck.html +++ b/backup/restore_precheck.html @@ -1,4 +1,4 @@ -wwwroot/login/index.php"); - } else { - if (!isteacheredit($to)) { - error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); - } - } + error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); } } else { if (!isadmin()) { @@ -34,10 +28,127 @@ error("Site not found!"); } - $status = restore_precheck($id,$file,!empty($SESSION->restore->importing)); - + //Prepend dataroot to variable to have the absolute path + $file = $CFG->dataroot."/".$file; + + //Start the main table + echo ""; + echo ""; + echo "
      "; + + //Start the mail ul + echo "
        "; + + //Check the file exists + if (!is_file($file)) { + error ("File not exists ($file)"); + } + + //Check the file name ends with .zip + if (!substr($file,-4) == ".zip") { + error ("File has an incorrect extension"); + } + + //Now calculate the unique_code for this restore + $backup_unique_code = time(); + + //Now check and create the backup dir (if it doesn't exist) + echo "
      • ".get_string("creatingtemporarystructures"); + $status = check_and_create_backup_dir($backup_unique_code); + //Empty dir + if ($status) { + $status = clear_backup_dir($backup_unique_code); + } + + //Now delete old data and directories under dataroot/temp/backup + if ($status) { + echo "
      • ".get_string("deletingolddata"); + $status = backup_delete_old_data(); + } + + //Now copy he zip file to dataroot/temp/backup/backup_unique_code + if ($status) { + echo "
      • ".get_string("copyingzipfile"); + if (! $status = backup_copy_file($file,$CFG->dataroot."/temp/backup/".$backup_unique_code."/".basename($file))) { + notify("Error copying backup file. Invalid name or bad perms."); + } + } + + //Now unzip the file + if ($status) { + echo "
      • ".get_string("unzippingbackup"); + if (! $status = restore_unzip ($CFG->dataroot."/temp/backup/".$backup_unique_code."/".basename($file))) { + notify("Error unzipping backup file. Invalid zip file."); + } + } + + //Now check for the moodle.xml file + if ($status) { + $xml_file = $CFG->dataroot."/temp/backup/".$backup_unique_code."/moodle.xml"; + echo "
      • ".get_string("checkingbackup"); + if (! $status = restore_check_moodle_file ($xml_file)) { + notify("Error checking backup file. Invalid or corrupted."); + } + } + + $info = ""; + $course_header = ""; + + //Now read the info tag (all) + if ($status) { + echo "
      • ".get_string("readinginfofrombackup"); + //Reading info from file + $info = restore_read_xml_info ($xml_file); + //Reading course_header from file + $course_header = restore_read_xml_course_header ($xml_file); + } + + //End the main ul + echo "
      "; + + //End the main table + echo "
      "; + + //We compare Moodle's versions + if ($CFG->version < $info->backup_moodle_version && $status) { + $message->serverversion = $CFG->version; + $message->serverrelease = $CFG->release; + $message->backupversion = $info->backup_moodle_version; + $message->backuprelease = $info->backup_moodle_release; + print_simple_box(get_string('noticenewerbackup','',$message), "center", "70%", "$THEME->cellheading2", "20", "noticebox"); + + } + + //Now we print in other table, the backup and the course it contains info + if ($info and $course_header and $status) { + //First, the course info + $status = restore_print_course_header($course_header); + //Now, the backup info + if ($status) { + $status = restore_print_info($info); + } + } + + //Save course header and info into php session + if ($status) { + $SESSION->info = $info; + $SESSION->course_header = $course_header; + } + + //Finally, a little form to continue + //with some hidden fields + if ($status) { + echo "
      "; + $hidden["backup_unique_code"] = $backup_unique_code; + $hidden["launch"] = "form"; + $hidden["file"] = $file; + $hidden["id"] = $id; + print_single_button("restore.php", $hidden, get_string("continue"),"post"); + echo "
      "; + } + if (!$status) { - error("An error occured"); + error ("An error has ocurred"); } ?> diff --git a/backup/restorelib.php b/backup/restorelib.php index 653b13e7c99..72369d40cc0 100644 --- a/backup/restorelib.php +++ b/backup/restorelib.php @@ -1,12 +1,31 @@ -unzip)) { // Use built-in php-based unzip function + include_once("$CFG->dirroot/lib/pclzip/pclzip.lib.php"); + //include_once("$CFG->dirroot/lib/pclzip/pclerror.lib.php"); //Debug + //include_once("$CFG->dirroot/lib/pclzip/pcltrace.lib.php"); //Debug + //PclTraceOn(2); //Debug + $archive = new PclZip($file); + if (!$list = $archive->extract(dirname($file))) { + $status = false; + } + //PclTraceDisplay(); //Debug + //PclTraceOff(); //Debug + } else { // Use external unzip program + $command = "cd ".dirname($file)."; $CFG->unzip -o ".basename($file); + Exec($command); + } + + return $status; } //This function checks if moodle.xml seems to be a valid xml file @@ -77,36 +96,126 @@ if (function_exists($function_name)) { echo "
    • ".get_string ("to")." ".get_string("modulenameplural",$name); $status = $function_name($restore); - echo '
    • '; } } } + + //Now I'm going to decode to their new location all the links in wiki texts + //having the syntax " modulename:moduleid". + echo "
    • wiki"; + $status = restore_decode_wiki_texts($restore); + echo ""; + return $status; } - //This function converts all the wiki texts in the restored course - //to the Markdown format. Used only for backup files prior 2005041100. - //It calls every module xxxx_convert_wiki2markdown function - function restore_convert_wiki2markdown($restore) { + //This function search for some wiki texts in differenct parts of Moodle to + //decode them to their new ids. + function restore_decode_wiki_texts($restore) { + + global $CFG; $status = true; echo "
        "; - foreach ($restore->mods as $name => $info) { - //If the module is being restored - if ($info->restore == 1) { - //Check if the xxxx_restore_wiki2markdown exists - $function_name = $name."_restore_wiki2markdown"; - if (function_exists($function_name)) { - echo "
      • ".get_string("modulenameplural",$name); - $status = $function_name($restore); - echo '
      • '; + + if (file_exists("$CFG->dirroot/mod/resource/lib.php")) { + include_once("$CFG->dirroot/mod/resource/lib.php"); + } + + $formatwiki = FORMAT_WIKI; + + //FORUM: Decode every POST (message) in the course + //Check we are restoring forums + if ($restore->mods['forum']->restore == 1) { + echo "
      • ".get_string("from")." ".get_string("modulenameplural","forum"); + //Get all course posts being restored + if ($posts = get_records_sql ("SELECT p.id, p.message + FROM {$CFG->prefix}forum_posts p, + {$CFG->prefix}forum_discussions d, + {$CFG->prefix}backup_ids b + WHERE d.course = $restore->course_id AND + p.discussion = d.id AND + p.format = $formatwiki AND + b.backup_code = $restore->backup_unique_code AND + b.table_name = 'forum_posts' AND + b.new_id = p.id")) { + //Iterate over each post->message + $i = 0; //Counter to send some output to the browser to avoid timeouts + foreach ($posts as $post) { + //Increment counter + $i++; + $content = $post->message; + //Decode it + $result = restore_decode_wiki_content($content,$restore); + + if ($result != $content) { + //Update record + $post->message = addslashes($result); + $status = update_record("forum_posts",$post); + if ($CFG->debug>7) { + echo "

        ".$content."
        changed to
        ".$result."

        "; + } + } + //Do some output + if (($i+1) % 5 == 0) { + echo "."; + if (($i+1) % 100 == 0) { + echo "
        "; + } + backup_flush(300); + } + } + } + } + + //RESOURCE: Decode every RESOURCE (alltext) in the coure + + //Check we are restoring resources + if ($restore->mods['resource']->restore == 1) { + echo "
      • ".get_string("from")." ".get_string("modulenameplural","resource"); + //Get all course resources of type='text' and options=FORMAT_WIKI being restored + if ($resources = get_records_sql ("SELECT r.id, r.alltext + FROM {$CFG->prefix}resource r, + {$CFG->prefix}backup_ids b + WHERE r.course = $restore->course_id AND + r.type = 'text' AND + r.options = $formatwiki AND + b.backup_code = $restore->backup_unique_code AND + b.table_name = 'resource' AND + b.new_id = r.id")) { + //Iterate over each resource->alltext + $i = 0; //Counter to send some output to the browser to avoid timeouts + foreach ($resources as $resource) { + //Increment counter + $i++; + $content = $resource->alltext; + //Decode it + $result = restore_decode_wiki_content($content,$restore); + if ($result != $content) { + //Update record + $resource->alltext = addslashes($result); + $status = update_record("resource",$resource); + if ($CFG->debug>7) { + echo "

        ".$content."
        changed to
        ".$result."

        "; + } + } + //Do some output + if (($i+1) % 5 == 0) { + echo "."; + if (($i+1) % 100 == 0) { + echo "
        "; + } + backup_flush(300); + } } } } echo "
      "; + return $status; + } //This function receives a wiki text in the restore process and @@ -162,15 +271,6 @@ return $info; } - //This function read the xml file and store its data from the blocks in a object - function restore_read_xml_blocks ($xml_file) { - - //We call the main read_xml function, with todo = BLOCKS - $info = restore_read_xml ($xml_file,'BLOCKS',false); - - return $info; - } - //This function read the xml file and store its data from the sections in a object function restore_read_xml_sections ($xml_file) { @@ -180,15 +280,6 @@ return $info; } - //This function read the xml file and store its data from the metacourse in a object - function restore_read_xml_metacourse ($xml_file) { - - //We call the main read_xml function, with todo = METACOURSE - $info = restore_read_xml ($xml_file,"METACOURSE",false); - - return $info; - } - //This function read the xml file and store its data from the users in //backup_ids->info db (and user's id in $info) function restore_read_xml_users ($restore,$xml_file) { @@ -199,17 +290,6 @@ return $info; } - //This function read the xml file and store its data from the messages in - //backup_ids->message backup_ids->message_read and backup_ids->contact and db (and their counters in info) - function restore_read_xml_messages ($restore,$xml_file) { - - //We call the main read_xml function, with todo = MESSAGES - $info = restore_read_xml ($xml_file,"MESSAGES",$restore); - - return $info; - } - - //This function read the xml file and store its data from the questions in //backup_ids->info db (and category's id in $info) function restore_read_xml_questions ($restore,$xml_file) { @@ -276,9 +356,9 @@ $status = true; if ($info) { //This is tha align to every ingo table - $table->align = array ("right","left"); + $table->align = array ("RIGHT","LEFT"); //This is the nowrap clause - $table->wrap = array ("","nowrap"); + $table->wrap = array ("","NOWRAP"); //The width $table->width = "70%"; //Put interesting info in table @@ -317,14 +397,6 @@ } $elem++; } - //Metacourse info - $tab[$elem][0] = "".get_string("metacourse").":"; - if ($info->backup_metacourse == "true") { - $tab[$elem][1] = get_string("yes"); - } else { - $tab[$elem][1] = get_string("no"); - } - $elem++; //Users info $tab[$elem][0] = "".get_string("users").":"; $tab[$elem][1] = get_string($info->backup_users); @@ -353,14 +425,6 @@ $tab[$elem][1] = get_string("no"); } $elem++; - //Messages info (only showed if present) - if ($info->backup_messages == 'true') { - $tab[$elem][0] = "".get_string('messages','message').":"; - $tab[$elem][1] = get_string('yes'); - $elem++; - } else { - //Do nothing - } $table->data = $tab; //Print title print_heading(get_string("backupdetails").":"); @@ -379,7 +443,7 @@ $status = true; if ($course_header) { //This is tha align to every ingo table - $table->align = array ("right","left"); + $table->align = array ("RIGHT","LEFT"); //The width $table->width = "70%"; //Put interesting course header in table @@ -473,10 +537,10 @@ $course->fullname = addslashes($course_header->course_fullname); $course->shortname = addslashes($course_header->course_shortname); $course->idnumber = addslashes($course_header->course_idnumber); - $course->idnumber = ''; //addslashes($course_header->course_idnumber); // we don't want this at all. $course->summary = restore_decode_absolute_links(addslashes($course_header->course_summary)); $course->format = addslashes($course_header->course_format); $course->showgrades = addslashes($course_header->course_showgrades); + $course->blockinfo = addslashes($course_header->blockinfo); $course->newsitems = addslashes($course_header->course_newsitems); $course->teacher = addslashes($course_header->course_teacher); $course->teachers = addslashes($course_header->course_teachers); @@ -492,41 +556,26 @@ $course->groupmode = addslashes($course_header->course_groupmode); $course->groupmodeforce = addslashes($course_header->course_groupmodeforce); $course->lang = addslashes($course_header->course_lang); - $course->theme = addslashes($course_header->course_theme); $course->cost = addslashes($course_header->course_cost); $course->marker = addslashes($course_header->course_marker); $course->visible = addslashes($course_header->course_visible); $course->hiddensections = addslashes($course_header->course_hiddensections); $course->timecreated = addslashes($course_header->course_timecreated); $course->timemodified = addslashes($course_header->course_timemodified); - $course->metacourse = addslashes($course_header->course_metacourse); - //Calculate sortorder field - $sortmax = get_record_sql('SELECT MAX(sortorder) AS max - FROM ' . $CFG->prefix . 'course - WHERE category=' . $course->category); - if (!empty($sortmax->max)) { - $course->sortorder = $sortmax->max + 1; - unset($sortmax); + //Adjust blockinfo field. + //If the info doesn't exist in backup, we create defaults, else we recode it + //to current site blocks. + if (!$course->blockinfo) { + //Create blockinfo default content + if ($course->format == "social") { + $course->blockinfo = blocks_get_default_blocks (NULL,"participants,search_forums,calendar_month,calendar_upcoming,social_activities,recent_activity,admin,course_list"); + } else { + //For topics and weeks formats (default built in the function) + $course->blockinfo = blocks_get_default_blocks(); + } } else { - $course->sortorder = 100; + $course->blockinfo = blocks_get_block_ids($course->blockinfo); } - - //Now, recode some languages (Moodle 1.5) - if ($course->lang == 'ma_nt') { - $course->lang = 'mi_nt'; - } - - //Disable course->metacourse if avoided in restore config - if (!$restore->metacourse) { - $course->metacourse = 0; - } - - //Check if the theme exists in destination server - $themes = get_list_of_themes(); - if (!in_array($course->theme, $themes)) { - $course->theme = ''; - } - //Now insert the record $newid = insert_record("course",$course); if ($newid) { @@ -542,172 +591,6 @@ return $status; } - //This function creates all the block stuff when restoring courses - //It calls selectively to restore_create_block_instances() for 1.5 - //and above backups. Upwards compatible with old blocks. - function restore_create_blocks($restore, $backup_block_format, $blockinfo, $xml_file) { - - $status = true; - - delete_records('block_instance', 'pageid', $restore->course_id, 'pagetype', PAGE_COURSE_VIEW); - if (empty($backup_block_format)) { // This is a backup from Moodle < 1.5 - if (empty($blockinfo)) { - // Looks like it's from Moodle < 1.3. Let's give the course default blocks... - $newpage = page_create_object(PAGE_COURSE_VIEW, $restore->course_id); - blocks_repopulate_page($newpage); - } else { - // We just have a blockinfo field, this is a legacy 1.4 or 1.3 backup - $blockrecords = get_records_select('block', '', '', 'name, id'); - $temp_blocks_l = array(); - $temp_blocks_r = array(); - @list($temp_blocks_l, $temp_blocks_r) = explode(':', $blockinfo); - $temp_blocks = array(BLOCK_POS_LEFT => explode(',', $temp_blocks_l), BLOCK_POS_RIGHT => explode(',', $temp_blocks_r)); - foreach($temp_blocks as $blockposition => $blocks) { - $blockweight = 0; - foreach($blocks as $blockname) { - if(!isset($blockrecords[$blockname])) { - // We don't know anything about this block! - continue; - } - $blockinstance = new stdClass; - // Remove any - prefix before doing the name-to-id mapping - if(substr($blockname, 0, 1) == '-') { - $blockname = substr($blockname, 1); - $blockinstance->visible = 0; - } else { - $blockinstance->visible = 1; - } - $blockinstance->blockid = $blockrecords[$blockname]->id; - $blockinstance->pageid = $restore->course_id; - $blockinstance->pagetype = PAGE_COURSE_VIEW; - $blockinstance->position = $blockposition; - $blockinstance->weight = $blockweight; - if(!$status = insert_record('block_instance', $blockinstance)) { - $status = false; - } - ++$blockweight; - } - } - } - } else if($backup_block_format == 'instances') { - $status = restore_create_block_instances($restore,$xml_file); - } - - return $status; - - } - - //This function creates all the block_instances from xml when restoring in a - //new course - function restore_create_block_instances($restore,$xml_file) { - - $status = true; - //Check it exists - if (!file_exists($xml_file)) { - $status = false; - } - //Get info from xml - if ($status) { - $info = restore_read_xml_blocks($xml_file); - } - - if(empty($info->instances)) { - return $status; - } - - // First of all, iterate over the blocks to see which distinct pages we have - // in our hands and arrange the blocks accordingly. - $pageinstances = array(); - foreach($info->instances as $instance) { - - //pagetype and pageid black magic, we have to handle the case of blocks for the - //course, blocks from other pages in that course etc etc etc. - - if($instance->pagetype == PAGE_COURSE_VIEW) { - // This one's easy... - $instance->pageid = $restore->course_id; - } - else { - $parts = explode('-', $instance->pagetype); - if($parts[0] == 'mod') { - if(!$restore->mods[$parts[1]]->restore) { - continue; - } - $getid = backup_getid($restore->backup_unique_code, $parts[1], $instance->pageid); - $instance->pageid = $getid->new_id; - } - else { - // Not invented here ;-) - continue; - } - } - - if(!isset($pageinstances[$instance->pagetype])) { - $pageinstances[$instance->pagetype] = array(); - } - if(!isset($pageinstances[$instance->pagetype][$instance->pageid])) { - $pageinstances[$instance->pagetype][$instance->pageid] = array(); - } - - $pageinstances[$instance->pagetype][$instance->pageid][] = $instance; - } - - $blocks = get_records_select('block', '', '', 'name, id, multiple'); - - // For each type of page we have restored - foreach($pageinstances as $thistypeinstances) { - - // For each page id of that type - foreach($thistypeinstances as $thisidinstances) { - - $addedblocks = array(); - $maxweights = array(); - - // For each block instance in that page - foreach($thisidinstances as $instance) { - - if(!isset($blocks[$instance->name])) { - //We are trying to restore a block we don't have... - continue; - } - - //If we have already added this block once and multiples aren't allowed, disregard it - if(!$blocks[$instance->name]->multiple && isset($addedblocks[$instance->name])) { - continue; - } - - //If its the first block we add to a new position, start weight counter equal to 0. - if(empty($maxweights[$instance->position])) { - $maxweights[$instance->position] = 0; - } - - //If the instance weight is greater than the weight counter (we skipped some earlier - //blocks most probably), bring it back in line. - if($instance->weight > $maxweights[$instance->position]) { - $instance->weight = $maxweights[$instance->position]; - } - - //Add this instance - $instance->blockid = $blocks[$instance->name]->id; - - if(!insert_record('block_instance', $instance)) { - $status = false; - break; - } - - //Now we can increment the weight counter - ++$maxweights[$instance->position]; - - //Keep track of block types we have already added - $addedblocks[$instance->name] = true; - - } - } - } - - return $status; - } - //This function creates all the course_sections and course_modules from xml //when restoring in a new course or simply checks sections and create records //in backup_ids when restoring in a existing course @@ -793,7 +676,7 @@ $course_module->indent = $mod->indent; $course_module->visible = $mod->visible; $course_module->groupmode = $mod->groupmode; - $course_module->instance = 0; + $course_module->instance = null; //NOTE: The instance (new) is calculated and updated in db in the // final step of the restore. We don't know it yet. //print_object($course_module); //Debug @@ -837,95 +720,6 @@ } return $status; } - - //This function creates all the metacourse data from xml, notifying - //about each incidence - function restore_create_metacourse($restore,$xml_file) { - - global $CFG,$db; - - $status = true; - //Check it exists - if (!file_exists($xml_file)) { - $status = false; - } - //Get info from xml - if ($status) { - //Load data from XML to info - $info = restore_read_xml_metacourse($xml_file); - } - - //Process info about metacourse - if ($status and $info) { - //Process child records - if ($info->childs) { - foreach ($info->childs as $child) { - $dbcourse = false; - $dbmetacourse = false; - //Check if child course exists in destination server - //(by id in the same server or by idnumber and shortname in other server) - if ($restore->original_wwwroot == $CFG->wwwroot) { - //Same server, lets see by id - $dbcourse = get_record('course','id',$child->id); - } else { - //Different server, lets see by idnumber and shortname, and only ONE record - $dbcount = count_records('course','idnumber',$child->idnumber,'shortname',$child->shortname); - if ($dbcount == 1) { - $dbcourse = get_record('course','idnumber',$child->idnumber,'shortname',$child->shortname); - } - } - //If child course has been found, insert data - if ($dbcourse) { - $dbmetacourse->child_course = $dbcourse->id; - $dbmetacourse->parent_course = $restore->course_id; - $status = insert_record ('course_meta',$dbmetacourse); - } else { - //Child course not found, notice! - echo '
      • '.get_string ('childcoursenotfound').' ('.$child->id.'/'.$child->idnumber.'/'.$child->shortname.')
      '; - } - } - //Now, recreate student enrolments... - sync_metacourse($restore->course_id); - } - //Process parent records - if ($info->parents) { - foreach ($info->parents as $parent) { - $dbcourse = false; - $dbmetacourse = false; - //Check if parent course exists in destination server - //(by id in the same server or by idnumber and shortname in other server) - if ($restore->original_wwwroot == $CFG->wwwroot) { - //Same server, lets see by id - $dbcourse = get_record('course','id',$parent->id); - } else { - //Different server, lets see by idnumber and shortname, and only ONE record - $dbcount = count_records('course','idnumber',$parent->idnumber,'shortname',$parent->shortname); - if ($dbcount == 1) { - $dbcourse = get_record('course','idnumber',$parent->idnumber,'shortname',$parent->shortname); - } - } - //If parent course has been found, insert data if it is a metacourse - if ($dbcourse) { - if ($dbcourse->metacourse) { - $dbmetacourse->parent_course = $dbcourse->id; - $dbmetacourse->child_course = $restore->course_id; - $status = insert_record ('course_meta',$dbmetacourse); - //Now, recreate student enrolments in parent course - sync_metacourse($dbcourse->id); - } else { - //Parent course isn't metacourse, notice! - echo '
      • '.get_string ('parentcoursenotmetacourse').' ('.$parent->id.'/'.$parent->idnumber.'/'.$parent->shortname.')
      '; - } - } else { - //Parent course not found, notice! - echo '
      • '.get_string ('parentcoursenotfound').' ('.$parent->id.'/'.$parent->idnumber.'/'.$parent->shortname.')
      '; - } - } - } - - } - return $status; - } //This function creates all the user, user_students, user_teachers //user_course_creators and user_admins from xml @@ -954,11 +748,6 @@ $rec = backup_getid($restore->backup_unique_code,"user",$userid); $user = $rec->info; - //Now, recode some languages (Moodle 1.5) - if ($user->lang == 'ma_nt') { - $user->lang = 'mi_nt'; - } - //Check if it's admin and coursecreator $is_admin = !empty($user->roles['admin']); $is_coursecreator = !empty($user->roles['coursecreator']); @@ -1019,35 +808,6 @@ $user->city = addslashes($user->city); $user->url = addslashes($user->url); $user->description = restore_decode_absolute_links(addslashes($user->description)); - - //We need to analyse the AUTH field to recode it: - // - if the field isn't set, we are in a pre 1.4 backup and we'll - // use $CFG->auth - // - if the destination site has any kind of INTERNAL authentication, - // then apply it to the new user. - // - if the destination site has any kind of EXTERNAL authentication, - // then leave the original authentication of the user. - - if ((! isset($user->auth)) || is_internal_auth($CFG->auth)) { - $user->auth = $CFG->auth; - } - - //We need to process the POLICYAGREED field to recalculate it: - // - if the destination site is different (by wwwroot) reset it. - // - if the destination site is the same (by wwwroot), leave it unmodified - - if ($restore->original_wwwroot != $CFG->wwwroot) { - $user->policyagreed = 0; - } else { - //Nothing to do, we are in the same server - } - - //Check if the theme exists in destination server - $themes = get_list_of_themes(); - if (!in_array($user->theme, $themes)) { - $user->theme = ''; - } - //We are going to create the user //The structure is exactly as we need $newid = insert_record ("user",$user); @@ -1095,19 +855,6 @@ //Set course and user $user->roles['teacher']->course = $restore->course_id; $user->roles['teacher']->userid = $newid; - - //Need to analyse the enrol field - // - if it isn't set, set it to $CFG->enrol - // - if we are in a different server (by wwwroot), set it to $CFG->enrol - // - if we are in the same server (by wwwroot), maintain it unmodified. - if (empty($user->roles['teacher']->enrol)) { - $user->roles['teacher']->enrol = $CFG->enrol; - } else if ($restore->original_wwwroot != $CFG->wwwroot) { - $user->roles['teacher']->enrol = $CFG->enrol; - } else { - //Nothing to do. Leave it unmodified - } - //Insert data in user_teachers //The structure is exactly as we need $status = insert_record("user_teachers",$user->roles['teacher']); @@ -1122,19 +869,6 @@ //Set course and user $user->roles['student']->course = $restore->course_id; $user->roles['student']->userid = $newid; - - //Need to analyse the enrol field - // - if it isn't set, set it to $CFG->enrol - // - if we are in a different server (by wwwroot), set it to $CFG->enrol - // - if we are in the same server (by wwwroot), maintain it unmodified. - if (empty($user->roles['student']->enrol)) { - $user->roles['student']->enrol = $CFG->enrol; - } else if ($restore->original_wwwroot != $CFG->wwwroot) { - $user->roles['student']->enrol = $CFG->enrol; - } else { - //Nothing to do. Leave it unmodified - } - //Insert data in user_students //The structure is exactly as we need $status = insert_record("user_students",$user->roles['student']); @@ -1152,17 +886,17 @@ //Here, if create_preferences, do it as necessary if ($create_preferences) { - //echo "Checking for preferences of user ".$user->username."
      "; //Debug + //echo "Checking for preferences of user ".$user->username."
      "; //Debug //Get user new id from backup_ids $data = backup_getid($restore->backup_unique_code,"user",$userid); $newid = $data->new_id; if (isset($user->user_preferences)) { - //echo "Preferences exist in backup file
      "; //Debug + //echo "Preferences exist in backup file
      "; //Debug foreach($user->user_preferences as $user_preference) { - //echo $user_preference->name." = ".$user_preference->value."
      "; //Debug + //echo $user_preference->name." = ".$user_preference->value."
      "; //Debug //We check if that user_preference exists in DB if (!record_exists("user_preferences","userid",$newid,"name",$user_preference->name)) { - //echo "Creating it
      "; //Debug + //echo "Creating it
      "; //Debug //Prepare the record and insert it $user_preference->userid = $newid; $status = insert_record("user_preferences",$user_preference); @@ -1176,226 +910,6 @@ return $status; } - //This function creates all the structures messages and contacts - function restore_create_messages($restore,$xml_file) { - - global $CFG; - - $status = true; - //Check it exists - if (!file_exists($xml_file)) { - $status = false; - } - //Get info from xml - if ($status) { - //info will contain the id and name of every table - //(message, message_read and message_contacts) - //in backup_ids->info will be the real info (serialized) - $info = restore_read_xml_messages($restore,$xml_file); - - //If we have info, then process messages & contacts - if ($info > 0) { - //Count how many we have - $unreadcount = count_records ('backup_ids', 'backup_code', $restore->backup_unique_code, 'table_name', 'message'); - $readcount = count_records ('backup_ids', 'backup_code', $restore->backup_unique_code, 'table_name', 'message_read'); - $contactcount = count_records ('backup_ids', 'backup_code', $restore->backup_unique_code, 'table_name', 'message_contacts'); - if ($unreadcount || $readcount || $contactcount) { - //Start ul - echo '
        '; - //Number of records to get in every chunk - $recordset_size = 4; - - //Process unread - $db->debug=true; - if ($unreadcount) { - echo '
      • '.get_string('unreadmessages','message').'
      • '; - $counter = 0; - while ($counter < $unreadcount) { - //Fetch recordset_size records in each iteration - $recs = get_records_select("backup_ids","table_name = 'message' AND backup_code = '$restore->backup_unique_code'","old_id","old_id, old_id",$counter,$recordset_size); - if ($recs) { - foreach ($recs as $rec) { - //Get the full record from backup_ids - $data = backup_getid($restore->backup_unique_code,"message",$rec->old_id); - if ($data) { - //Now get completed xmlized object - $info = $data->info; - //traverse_xmlize($info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - //Now build the MESSAGE record structure - $dbrec->useridfrom = backup_todb($info['MESSAGE']['#']['USERIDFROM']['0']['#']); - $dbrec->useridto = backup_todb($info['MESSAGE']['#']['USERIDTO']['0']['#']); - $dbrec->message = backup_todb($info['MESSAGE']['#']['MESSAGE']['0']['#']); - $dbrec->format = backup_todb($info['MESSAGE']['#']['FORMAT']['0']['#']); - $dbrec->timecreated = backup_todb($info['MESSAGE']['#']['TIMECREATED']['0']['#']); - $dbrec->messagetype = backup_todb($info['MESSAGE']['#']['MESSAGETYPE']['0']['#']); - //We have to recode the useridfrom field - $user = backup_getid($restore->backup_unique_code,"user",$dbrec->useridfrom); - if ($user) { - //echo "User ".$dbrec->useridfrom." to user ".$user->new_id."
        "; //Debug - $dbrec->useridfrom = $user->new_id; - } - //We have to recode the useridto field - $user = backup_getid($restore->backup_unique_code,"user",$dbrec->useridto); - if ($user) { - //echo "User ".$dbrec->useridto." to user ".$user->new_id."
        "; //Debug - $dbrec->useridto = $user->new_id; - } - //Check if the record doesn't exist in DB! - $exist = get_record('message','useridfrom',$dbrec->useridfrom, - 'useridto', $dbrec->useridto, - 'timecreated',$dbrec->timecreated); - if (!$exist) { - //Not exist. Insert - $status = insert_record('message',$dbrec); - } else { - //Duplicate. Do nothing - } - } - //Do some output - $counter++; - if ($counter % 10 == 0) { - echo "."; - if ($counter % 200 == 0) { - echo "
        "; - } - backup_flush(300); - } - } - } - } - } - - //Process read - if ($readcount) { - echo '
      • '.get_string('readmessages','message').'
      • '; - $counter = 0; - while ($counter < $readcount) { - //Fetch recordset_size records in each iteration - $recs = get_records_select("backup_ids","table_name = 'message_read' AND backup_code = '$restore->backup_unique_code'","old_id","old_id, old_id",$counter,$recordset_size); - if ($recs) { - foreach ($recs as $rec) { - //Get the full record from backup_ids - $data = backup_getid($restore->backup_unique_code,"message_read",$rec->old_id); - if ($data) { - //Now get completed xmlized object - $info = $data->info; - //traverse_xmlize($info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - //Now build the MESSAGE_READ record structure - $dbrec->useridfrom = backup_todb($info['MESSAGE']['#']['USERIDFROM']['0']['#']); - $dbrec->useridto = backup_todb($info['MESSAGE']['#']['USERIDTO']['0']['#']); - $dbrec->message = backup_todb($info['MESSAGE']['#']['MESSAGE']['0']['#']); - $dbrec->format = backup_todb($info['MESSAGE']['#']['FORMAT']['0']['#']); - $dbrec->timecreated = backup_todb($info['MESSAGE']['#']['TIMECREATED']['0']['#']); - $dbrec->messagetype = backup_todb($info['MESSAGE']['#']['MESSAGETYPE']['0']['#']); - $dbrec->timeread = backup_todb($info['MESSAGE']['#']['TIMEREAD']['0']['#']); - $dbrec->mailed = backup_todb($info['MESSAGE']['#']['MAILED']['0']['#']); - //We have to recode the useridfrom field - $user = backup_getid($restore->backup_unique_code,"user",$dbrec->useridfrom); - if ($user) { - //echo "User ".$dbrec->useridfrom." to user ".$user->new_id."
        "; //Debug - $dbrec->useridfrom = $user->new_id; - } - //We have to recode the useridto field - $user = backup_getid($restore->backup_unique_code,"user",$dbrec->useridto); - if ($user) { - //echo "User ".$dbrec->useridto." to user ".$user->new_id."
        "; //Debug - $dbrec->useridto = $user->new_id; - } - //Check if the record doesn't exist in DB! - $exist = get_record('message_read','useridfrom',$dbrec->useridfrom, - 'useridto', $dbrec->useridto, - 'timecreated',$dbrec->timecreated); - if (!$exist) { - //Not exist. Insert - $status = insert_record('message_read',$dbrec); - } else { - //Duplicate. Do nothing - } - } - //Do some output - $counter++; - if ($counter % 10 == 0) { - echo "."; - if ($counter % 200 == 0) { - echo "
        "; - } - backup_flush(300); - } - } - } - } - } - - //Process contacts - if ($contactcount) { - echo '
      • '.strtolower(get_string('contacts','message')).'
      • '; - $counter = 0; - while ($counter < $contactcount) { - //Fetch recordset_size records in each iteration - $recs = get_records_select("backup_ids","table_name = 'message_contacts' AND backup_code = '$restore->backup_unique_code'","old_id","old_id, old_id",$counter,$recordset_size); - if ($recs) { - foreach ($recs as $rec) { - //Get the full record from backup_ids - $data = backup_getid($restore->backup_unique_code,"message_contacts",$rec->old_id); - if ($data) { - //Now get completed xmlized object - $info = $data->info; - //traverse_xmlize($info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - //Now build the MESSAGE_CONTACTS record structure - $dbrec->userid = backup_todb($info['CONTACT']['#']['USERID']['0']['#']); - $dbrec->contactid = backup_todb($info['CONTACT']['#']['CONTACTID']['0']['#']); - $dbrec->blocked = backup_todb($info['CONTACT']['#']['BLOCKED']['0']['#']); - //We have to recode the userid field - $user = backup_getid($restore->backup_unique_code,"user",$dbrec->userid); - if ($user) { - //echo "User ".$dbrec->userid." to user ".$user->new_id."
        "; //Debug - $dbrec->userid = $user->new_id; - } - //We have to recode the contactid field - $user = backup_getid($restore->backup_unique_code,"user",$dbrec->contactid); - if ($user) { - //echo "User ".$dbrec->contactid." to user ".$user->new_id."
        "; //Debug - $dbrec->contactid = $user->new_id; - } - //Check if the record doesn't exist in DB! - $exist = get_record('message_contacts','userid',$dbrec->userid, - 'contactid', $dbrec->contactid); - if (!$exist) { - //Not exist. Insert - $status = insert_record('message_contacts',$dbrec); - } else { - //Duplicate. Do nothing - } - } - //Do some output - $counter++; - if ($counter % 10 == 0) { - echo "."; - if ($counter % 200 == 0) { - echo "
        "; - } - backup_flush(300); - } - } - } - } - } - //End ul - echo '
      '; - $db->debug=true; - } - } - } - - return $status; - } - //This function creates all the categories and questions //from xml (STEP1 of quiz restore) function restore_create_questions($restore,$xml_file) { @@ -1419,38 +933,13 @@ if ($info !== true) { //Iterate over each category foreach ($info as $category) { - //Skip empty categories (some backups can contain them) - if (!empty($category->id)) { - $catrestore = "quiz_restore_question_categories"; - if (function_exists($catrestore)) { - //print_object ($category); //Debug - $status = $catrestore($category,$restore); - } else { - //Something was wrong. Function should exist. - $status = false; - } - } - } - - //Now we have to recode the parent field of each restored category - $categories = get_records_sql("SELECT old_id, new_id - FROM {$CFG->prefix}backup_ids - WHERE backup_code = $restore->backup_unique_code AND - table_name = 'quiz_categories'"); - if ($categories) { - foreach ($categories as $category) { - $restoredcategory = get_record('quiz_categories','id',$category->new_id); - if ($restoredcategory->parent != 0) { - //echo 'Parent '.$restoredcategory->parent.' is '; //Debug - $idcat = backup_getid($restore->backup_unique_code,'quiz_categories',$restoredcategory->parent); - if ($idcat->new_id) { - $restoredcategory->parent = $idcat->new_id; - } else { - $restoredcategory->parent = 0; - } - //echo $restoredcategory->parent.' now
      '; //Debug - update_record('quiz_categories', $restoredcategory); - } + $catrestore = "quiz_restore_question_categories"; + if (function_exists($catrestore)) { + //print_object ($category); //Debug + $status = $catrestore($category,$restore); + } else { + //Something was wrong. Function should exist. + $status = false; } } } @@ -1479,9 +968,6 @@ //Now, if we have anything in scales, we have to restore that //scales if ($scales) { - //Get admin->id for later use - $admin = get_admin(); - $adminid = $admin->id; if ($scales !== true) { //Iterate over each scale foreach ($scales as $scale) { @@ -1529,7 +1015,7 @@ $sca->userid = $user->new_id; } else { //Assign it to admin - $sca->userid = $adminid; + $sca->userid = 1; } //The structure is equal to the db, so insert the scale $newid = insert_record ("scale",$sca); @@ -1589,9 +1075,7 @@ $gro->courseid = backup_todb($info['GROUP']['#']['COURSEID']['0']['#']); $gro->name = backup_todb($info['GROUP']['#']['NAME']['0']['#']); $gro->description = backup_todb($info['GROUP']['#']['DESCRIPTION']['0']['#']); - $gro->password = backup_todb($info['GROUP']['#']['PASSWORD']['0']['#']); $gro->lang = backup_todb($info['GROUP']['#']['LANG']['0']['#']); - $gro->theme = backup_todb($info['GROUP']['#']['THEME']['0']['#']); $gro->picture = backup_todb($info['GROUP']['#']['PICTURE']['0']['#']); $gro->hidepicture = backup_todb($info['GROUP']['#']['HIDEPICTURE']['0']['#']); $gro->timecreated = backup_todb($info['GROUP']['#']['TIMECREATED']['0']['#']); @@ -1608,13 +1092,6 @@ if ($create_group) { //Me must recode the courseid to the restore->course_id $gro->courseid = $restore->course_id; - - //Check if the theme exists in destination server - $themes = get_list_of_themes(); - if (!in_array($gro->theme, $themes)) { - $gro->theme = ''; - } - //The structure is equal to the db, so insert the group $newid = insert_record ("groups",$gro); } else { @@ -1623,20 +1100,13 @@ } if ($newid) { //We have the newid, update backup_ids - backup_putid($restore->backup_unique_code,"groups", + backup_putid($restore->backup_unique_code,"group", $group->id, $newid); } - //Now restore members in the groups_members, only if - //users are included - if ($restore->users != 2) { - $status2 = restore_create_groups_members($newid,$info,$restore); - } + //Now restore members in the groups_members + $status2 = restore_create_groups_members($newid,$info,$restore); } } - //Now, restore group_files - if ($status && $status2) { - $status2 = restore_group_files($restore); - } } } else { $status = false; @@ -1679,7 +1149,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "
      "; + echo "
      "; } backup_flush(300); } @@ -1708,11 +1178,6 @@ //in backup_ids->info will be the real info (serialized) $events = restore_read_xml_events($restore,$xml_file); } - - //Get admin->id for later use - $admin = get_admin(); - $adminid = $admin->id; - //Now, if we have anything in events, we have to restore that //events if ($events) { @@ -1762,7 +1227,7 @@ $eve->userid = $user->new_id; } else { //Assign it to admin - $eve->userid = $adminid; + $eve->userid = 1; } //We have to recode the groupid field $group = backup_getid($restore->backup_unique_code,"group",$eve->groupid); @@ -1821,7 +1286,7 @@ $result = str_replace($search,$replace,$content); if ($result != $content && $CFG->debug>7) { //Debug - echo "

      ".$content."
      changed to
      ".$result."

      "; //Debug + echo "

      ".$content."
      changed to
      ".$result."

      "; //Debug } //Debug return $result; @@ -1873,7 +1338,7 @@ if ($counter % 2 == 0) { echo "."; if ($counter % 40 == 0) { - echo "
      "; + echo "
      "; } backup_flush(300); } @@ -1890,61 +1355,6 @@ } } - //This function restores the groupfiles from the temp (group_files) directory to the - //dataroot/groups directory - function restore_group_files($restore) { - - global $CFG; - - $status = true; - - $counter = 0; - - //First, we check to "groups" exists and create is as necessary - //in CFG->dataroot - $dest_dir = $CFG->dataroot.'/groups'; - $status = check_dir_exists($dest_dir,true); - - //Now, we iterate over "group_files" records to check if that user dir must be - //copied (and renamed) to the "groups" dir. - $rootdir = $CFG->dataroot."/temp/backup/".$restore->backup_unique_code."/group_files"; - //Check if directory exists - if (is_dir($rootdir)) { - $list = list_directories ($rootdir); - if ($list) { - //Iterate - $counter = 0; - foreach ($list as $dir) { - //Look for dir like groupid in backup_ids - $data = get_record ("backup_ids","backup_code",$restore->backup_unique_code, - "table_name","groups", - "old_id",$dir); - //If that group exists in backup_ids - if ($data) { - if (!file_exists($dest_dir."/".$data->new_id)) { - $status = backup_copy_file($rootdir."/".$dir, $dest_dir."/".$data->new_id); - $counter ++; - } - //Do some output - if ($counter % 2 == 0) { - echo "."; - if ($counter % 40 == 0) { - echo "
      "; - } - backup_flush(300); - } - } - } - } - } - //If status is ok and whe have dirs created, returns counter to inform - if ($status and $counter) { - return $counter; - } else { - return $status; - } - } - //This function restores the course files from the temp (course_files) directory to the //dataroot/course_id directory function restore_course_files($restore) { @@ -1981,7 +1391,7 @@ if ($counter % 2 == 0) { echo "."; if ($counter % 40 == 0) { - echo "
      "; + echo "
      "; } backup_flush(300); } @@ -2019,7 +1429,6 @@ //from backup_ids (calling every mod restore function) if ($info) { if ($info !== true) { - echo '
        '; //Iterate over each module foreach ($info as $mod) { $modrestore = $mod->modtype."_restore_mods"; @@ -2031,7 +1440,6 @@ $status = false; } } - echo '
      '; } } else { $status = false; @@ -2100,14 +1508,14 @@ //We have to recode the userid field $user = backup_getid($restore->backup_unique_code,"user",$dblog->userid); if ($user) { - //echo "User ".$dblog->userid." to user ".$user->new_id."
      "; //Debug + //echo "User ".$dblog->userid." to user ".$user->new_id."
      "; //Debug $dblog->userid = $user->new_id; } //We have to recode the cmid field (if module isn't "course" or "user") if ($dblog->module != "course" and $dblog->module != "user") { $cm = backup_getid($restore->backup_unique_code,"course_modules",$dblog->cmid); if ($cm) { - //echo "Module ".$dblog->cmid." to module ".$cm->new_id."
      "; //Debug + //echo "Module ".$dblog->cmid." to module ".$cm->new_id."
      "; //Debug $dblog->cmid = $cm->new_id; } else { $dblog->cmid = 0; @@ -2132,7 +1540,7 @@ if ($counter % 10 == 0) { echo "."; if ($counter % 200 == 0) { - echo "
      "; + echo "
      "; } backup_flush(300); } @@ -2154,7 +1562,7 @@ $status = true; $toinsert = false; - //echo "
      Before transformations
      "; //Debug + //echo "
      Before transformations
      "; //Debug //print_object($log); //Debug //Depending of the action, we recode different things switch ($log->action) { @@ -2170,7 +1578,7 @@ $log->info = $user->new_id; //Now, extract the mode from the url field $mode = substr(strrchr($log->url,"="),1); - $log->url = "user.php?id=".$log->course."&user=".$log->info."&mode=".$mode; + $log->url = "user.php?id=".$log->course."&user=".$log->info."&mode=".$mode; $toinsert = true; } break; @@ -2260,22 +1668,17 @@ $log->info = ""; $toinsert = true; break; - case "recent": - $log->url = "recent.php?id=".$log->course; - $log->info = ""; - $toinsert = true; - break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored
      "; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored
      "; //Debug break; } - //echo "After transformations
      "; //Debug + //echo "After transformations
      "; //Debug //print_object($log); //Debug //Now if $toinsert is set, insert the record if ($toinsert) { - //echo "Inserting record
      "; //Debug + //echo "Inserting record
      "; //Debug $status = insert_record("log",$log); } return $status; @@ -2287,7 +1690,7 @@ $status = true; $toinsert = false; - //echo "
      Before transformations
      "; //Debug + //echo "
      Before transformations
      "; //Debug //print_object($log); //Debug //Depending of the action, we recode different things switch ($log->action) { @@ -2296,7 +1699,7 @@ $user = backup_getid($restore->backup_unique_code,"user",$log->info); if ($user) { $log->info = $user->new_id; - $log->url = "view.php?id=".$log->info."&course=".$log->course; + $log->url = "view.php?id=".$log->info."&course=".$log->course; $toinsert = true; } break; @@ -2305,7 +1708,7 @@ $user = backup_getid($restore->backup_unique_code,"user",$log->info); if ($user) { $log->info = $user->new_id; - $log->url = "view.php?id=".$log->info."&course=".$log->course; + $log->url = "view.php?id=".$log->info."&course=".$log->course; $toinsert = true; } break; @@ -2322,21 +1725,21 @@ $user = backup_getid($restore->backup_unique_code,"user",$userid); if ($user) { $log->info = ""; - $log->url = "view.php?id=".$user->new_id."&course=".$log->course; + $log->url = "view.php?id=".$user->new_id."&course=".$log->course; $toinsert = true; } break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored
      "; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored
      "; //Debug break; } - //echo "After transformations
      "; //Debug + //echo "After transformations
      "; //Debug //print_object($log); //Debug //Now if $toinsert is set, insert the record if ($toinsert) { - //echo "Inserting record
      "; //Debug + //echo "Inserting record
      "; //Debug $status = insert_record("log",$log); } return $status; @@ -2348,7 +1751,7 @@ $status = true; $toinsert = false; - //echo "
      Before transformations
      "; //Debug + //echo "
      Before transformations
      "; //Debug //print_object($log); //Debug //Now we see if the required function in the module exists @@ -2362,12 +1765,12 @@ } } - //echo "After transformations
      "; //Debug + //echo "After transformations
      "; //Debug //print_object($log); //Debug //Now if $toinsert is set, insert the record if ($toinsert) { - //echo "Inserting record
      "; //Debug + //echo "Inserting record
      "; //Debug $status = insert_record("log",$log); } return $status; @@ -2456,7 +1859,7 @@ //Check if we are into INFO zone //if ($this->tree[2] == "INFO") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug } //This is the startTag handler we use where we are reading the course header zone (todo="COURSE_HEADER") @@ -2470,21 +1873,7 @@ //Check if we are into COURSE_HEADER zone //if ($this->tree[3] == "HEADER") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug - } - - //This is the startTag handler we use where we are reading the blocks zone (todo="BLOCKS") - function startElementBlocks($parser, $tagName, $attrs) { - //Refresh properties - $this->level++; - $this->tree[$this->level] = $tagName; - - //Output something to avoid browser timeouts... - backup_flush(); - - //Check if we are into BLOCKS zone - //if ($this->tree[3] == "BLOCKS") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug } //This is the startTag handler we use where we are reading the sections zone (todo="SECTIONS") @@ -2498,24 +1887,8 @@ //Check if we are into SECTIONS zone //if ($this->tree[3] == "SECTIONS") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug } - - //This is the startTag handler we use where we are reading the metacourse zone (todo="METACOURSE") - function startElementMetacourse($parser, $tagName, $attrs) { - - //Refresh properties - $this->level++; - $this->tree[$this->level] = $tagName; - - //Output something to avoid browser timeouts... - backup_flush(); - - //Check if we are into METACOURSE zone - //if ($this->tree[3] == "METACOURSE") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug - } - //This is the startTag handler we use where we are reading the user zone (todo="USERS") function startElementUsers($parser, $tagName, $attrs) { @@ -2525,32 +1898,9 @@ //Check if we are into USERS zone //if ($this->tree[3] == "USERS") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug } - //This is the startTag handler we use where we are reading the messages zone (todo="MESSAGES") - function startElementMessages($parser, $tagName, $attrs) { - //Refresh properties - $this->level++; - $this->tree[$this->level] = $tagName; - - //Output something to avoid browser timeouts... - backup_flush(); - - //Check if we are into MESSAGES zone - //if ($this->tree[3] == "MESSAGES") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug - - //If we are under a MESSAGE tag under a MESSAGES zone, accumule it - if (isset($this->tree[4]) and isset($this->tree[3])) { - if (($this->tree[4] == "MESSAGE" || $this->tree[5] == "CONTACT" ) and ($this->tree[3] == "MESSAGES")) { - if (!isset($this->temp)) { - $this->temp = ""; - } - $this->temp .= "<".$tagName.">"; - } - } - } //This is the startTag handler we use where we are reading the questions zone (todo="QUESTIONS") function startElementQuestions($parser, $tagName, $attrs) { //Refresh properties @@ -2566,7 +1916,7 @@ //Check if we are into QUESTION_CATEGORIES zone //if ($this->tree[3] == "QUESTION_CATEGORIES") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug //If we are under a QUESTION_CATEGORY tag under a QUESTION_CATEGORIES zone, accumule it if (isset($this->tree[4]) and isset($this->tree[3])) { @@ -2594,7 +1944,7 @@ //Check if we are into SCALES zone //if ($this->tree[3] == "SCALES") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug //If we are under a SCALE tag under a SCALES zone, accumule it if (isset($this->tree[4]) and isset($this->tree[3])) { @@ -2621,7 +1971,7 @@ //Check if we are into GROUPS zone //if ($this->tree[3] == "GROUPS") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug //If we are under a GROUP tag under a GROUPS zone, accumule it if (isset($this->tree[4]) and isset($this->tree[3])) { @@ -2649,7 +1999,7 @@ //Check if we are into EVENTS zone //if ($this->tree[3] == "EVENTS") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug //If we are under a EVENT tag under a EVENTS zone, accumule it if (isset($this->tree[4]) and isset($this->tree[3])) { @@ -2677,7 +2027,7 @@ //Check if we are into MODULES zone //if ($this->tree[3] == "MODULES") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug //If we are under a MOD tag under a MODULES zone, accumule it if (isset($this->tree[4]) and isset($this->tree[3])) { @@ -2705,7 +2055,7 @@ //Check if we are into LOGS zone //if ($this->tree[3] == "LOGS") //Debug - // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + // echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug //If we are under a LOG tag under a LOGS zone, accumule it if (isset($this->tree[4]) and isset($this->tree[3])) { @@ -2726,7 +2076,7 @@ //Output something to avoid browser timeouts... backup_flush(); - echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug + echo $this->level.str_repeat(" ",$this->level*2)."<".$tagName.">
      \n"; //Debug } //This is the endTag handler we use where we are reading the info zone (todo="INFO") @@ -2734,8 +2084,8 @@ //Check if we are into INFO zone if ($this->tree[2] == "INFO") { //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Dependig of different combinations, do different things if ($this->level == 3) { switch ($tagName) { @@ -2765,9 +2115,6 @@ if ($this->tree[3] == "DETAILS") { if ($this->level == 4) { switch ($tagName) { - case "METACOURSE": - $this->info->backup_metacourse = $this->getContents(); - break; case "USERS": $this->info->backup_users = $this->getContents(); break; @@ -2780,12 +2127,6 @@ case "COURSEFILES": $this->info->backup_course_files = $this->getContents(); break; - case "MESSAGES": - $this->info->backup_messages = $this->getContents(); - break; - case 'BLOCKFORMAT': - $this->info->backup_block_format = $this->getContents(); - break; } } if ($this->level == 5) { @@ -2822,8 +2163,8 @@ //Check if we are into COURSE_HEADER zone if ($this->tree[3] == "HEADER") { //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Dependig of different combinations, do different things if ($this->level == 4) { switch ($tagName) { @@ -2899,9 +2240,6 @@ case "LANG": $this->info->course_lang = $this->getContents(); break; - case "THEME": - $this->info->course_theme = $this->getContents(); - break; case "COST": $this->info->course_cost = $this->getContents(); break; @@ -2920,9 +2258,6 @@ case "TIMEMODIFIED": $this->info->course_timemodified = $this->getContents(); break; - case "METACOURSE": - $this->info->course_metacourse = $this->getContents(); - break; } } if ($this->tree[4] == "CATEGORY") { @@ -2951,72 +2286,13 @@ } } - //This is the endTag handler we use where we are reading the sections zone (todo="SECTIONS") - function endElementBlocks($parser, $tagName) { - //Check if we are into BLOCKS zone - if ($this->tree[3] == 'BLOCKS') { - //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug - //Dependig of different combinations, do different things - if ($this->level == 4) { - switch ($tagName) { - case 'BLOCK': - //We've finalized a block, get it - $this->info->instances[] = $this->info->tempinstance; - unset($this->info->tempinstance); - break; - default: - die($tagName); - } - } - if ($this->level == 5) { - switch ($tagName) { - case 'NAME': - $this->info->tempinstance->name = $this->getContents(); - break; - case 'PAGEID': - $this->info->tempinstance->pageid = $this->getContents(); - break; - case 'PAGETYPE': - $this->info->tempinstance->pagetype = $this->getContents(); - break; - case 'POSITION': - $this->info->tempinstance->position = $this->getContents(); - break; - case 'WEIGHT': - $this->info->tempinstance->weight = $this->getContents(); - break; - case 'VISIBLE': - $this->info->tempinstance->visible = $this->getContents(); - break; - case 'CONFIGDATA': - $this->info->tempinstance->configdata = $this->getContents(); - break; - } - } - } - //Clear things - $this->tree[$this->level] = ''; - $this->level--; - $this->content = ""; - - //Stop parsing if todo = BLOCKS and tagName = BLOCKS (en of the tag, of course) - //Speed up a lot (avoid parse all) - //WARNING: ONLY EXIT IF todo = BLOCKS (thus tree[3] = "BLOCKS") OTHERWISE - // THE BLOCKS TAG IN THE HEADER WILL TERMINATE US! - if ($this->tree[3] == 'BLOCKS' && $tagName == 'BLOCKS') { - $this->finished = true; - } - } - //This is the endTag handler we use where we are reading the sections zone (todo="SECTIONS") function endElementSections($parser, $tagName) { //Check if we are into SECTIONS zone if ($this->tree[3] == "SECTIONS") { //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Dependig of different combinations, do different things if ($this->level == 4) { switch ($tagName) { @@ -3108,65 +2384,14 @@ $this->finished = true; } } - - //This is the endTag handler we use where we are reading the metacourse zone (todo="METACOURSE") - function endElementMetacourse($parser, $tagName) { - //Check if we are into METACOURSE zone - if ($this->tree[3] == 'METACOURSE') { - //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug - //Dependig of different combinations, do different things - if ($this->level == 5) { - switch ($tagName) { - case 'CHILD': - //We've finalized a child, get it - $this->info->childs[] = $this->info->tempmeta; - unset($this->info->tempmeta); - break; - case 'PARENT': - //We've finalized a parent, get it - $this->info->parents[] = $this->info->tempmeta; - unset($this->info->tempmeta); - break; - default: - die($tagName); - } - } - if ($this->level == 6) { - switch ($tagName) { - case 'ID': - $this->info->tempmeta->id = $this->getContents(); - break; - case 'IDNUMBER': - $this->info->tempmeta->idnumber = $this->getContents(); - break; - case 'SHORTNAME': - $this->info->tempmeta->shortname = $this->getContents(); - break; - } - } - } - //Clear things - $this->tree[$this->level] = ''; - $this->level--; - $this->content = ""; - - //Stop parsing if todo = METACOURSE and tagName = METACOURSE (en of the tag, of course) - //Speed up a lot (avoid parse all) - if ($this->tree[3] == 'METACOURSE' && $tagName == 'METACOURSE') { - $this->finished = true; - } - } - //This is the endTag handler we use where we are reading the users zone (todo="USERS") function endElementUsers($parser, $tagName) { //Check if we are into USERS zone if ($this->tree[3] == "USERS") { //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Dependig of different combinations, do different things if ($this->level == 4) { switch ($tagName) { @@ -3181,7 +2406,7 @@ if ($this->counter % 10 == 0) { echo "."; if ($this->counter % 200 == 0) { - echo "
      "; + echo "
      "; } backup_flush(300); } @@ -3197,18 +2422,9 @@ $this->info->users[$this->getContents()] = $this->getContents(); $this->info->tempuser->id = $this->getContents(); break; - case "AUTH": - $this->info->tempuser->auth = $this->getContents(); - break; - case "GUID": - $this->info->tempuser->guid = $this->getContents(); - break; case "CONFIRMED": $this->info->tempuser->confirmed = $this->getContents(); break; - case "POLICYAGREED": - $this->info->tempuser->policyagreed = $this->getContents(); - break; case "DELETED": $this->info->tempuser->deleted = $this->getContents(); break; @@ -3236,18 +2452,6 @@ case "ICQ": $this->info->tempuser->icq = $this->getContents(); break; - case "SKYPE": - $this->info->tempuser->skype = $this->getContents(); - break; - case "AIM": - $this->info->tempuser->aim = $this->getContents(); - break; - case "YAHOO": - $this->info->tempuser->yahoo = $this->getContents(); - break; - case "MSN": - $this->info->tempuser->msn = $this->getContents(); - break; case "PHONE1": $this->info->tempuser->phone1 = $this->getContents(); break; @@ -3272,9 +2476,6 @@ case "LANG": $this->info->tempuser->lang = $this->getContents(); break; - case "THEME": - $this->info->tempuser->theme = $this->getContents(); - break; case "TIMEZONE": $this->info->tempuser->timezone = $this->getContents(); break; @@ -3374,9 +2575,6 @@ case "TIMEACCESS": $this->info->temprole->timeaccess = $this->getContents(); break; - case "ENROL": - $this->info->temprole->enrol = $this->getContents(); - break; case "NAME": $this->info->tempuserpreference->name = $this->getContents(); break; @@ -3400,94 +2598,13 @@ $this->content = ""; } - //This is the endTag handler we use where we are reading the messages zone (todo="MESSAGES") - function endElementMessages($parser, $tagName) { - //Check if we are into MESSAGES zone - if ($this->tree[3] == "MESSAGES") { - //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n";//Debug - //Acumulate data to info (content + close tag) - //Reconvert: strip htmlchars again and trim to generate xml data - if (!isset($this->temp)) { - $this->temp = ""; - } - $this->temp .= htmlspecialchars(trim($this->content)).""; - //If we've finished a message, xmlize it an save to db - if (($this->level == 4) and ($tagName == "MESSAGE")) { - //Prepend XML standard header to info gathered - $xml_data = "\n".$this->temp; - //Call to xmlize for this portion of xml data (one MESSAGE) - //echo "-XMLIZE: ".strftime ("%X",time()),"-"; //Debug - $data = xmlize($xml_data,0); - //echo strftime ("%X",time())."

      "; //Debug - //traverse_xmlize($data); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - //Now, save data to db. We'll use it later - //Get id and status from data - $message_id = $data["MESSAGE"]["#"]["ID"]["0"]["#"]; - $message_status = $data["MESSAGE"]["#"]["STATUS"]["0"]["#"]; - if ($message_status == "READ") { - $table = "message_read"; - } else { - $table = "message"; - } - $this->counter++; - //Save to db - $status = backup_putid($this->preferences->backup_unique_code, $table,$message_id, - null,$data); - //Create returning info - $this->info = $this->counter; - //Reset temp - unset($this->temp); - } - //If we've finished a contact, xmlize it an save to db - if (($this->level == 5) and ($tagName == "CONTACT")) { - //Prepend XML standard header to info gathered - $xml_data = "\n".$this->temp; - //Call to xmlize for this portion of xml data (one MESSAGE) - //echo "-XMLIZE: ".strftime ("%X",time()),"-"; //Debug - $data = xmlize($xml_data,0); - //echo strftime ("%X",time())."

      "; //Debug - //traverse_xmlize($data); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - //Now, save data to db. We'll use it later - //Get id and status from data - $contact_id = $data["CONTACT"]["#"]["ID"]["0"]["#"]; - $this->counter++; - //Save to db - $status = backup_putid($this->preferences->backup_unique_code, 'message_contacts' ,$contact_id, - null,$data); - //Create returning info - $this->info = $this->counter; - //Reset temp - unset($this->temp); - } - } - - //Stop parsing if todo = MESSAGES and tagName = MESSAGES (en of the tag, of course) - //Speed up a lot (avoid parse all) - if ($tagName == "MESSAGES" and $this->level == 3) { - $this->finished = true; - $this->counter = 0; - - } - - //Clear things - $this->tree[$this->level] = ""; - $this->level--; - $this->content = ""; - } - //This is the endTag handler we use where we are reading the questions zone (todo="QUESTIONS") function endElementQuestions($parser, $tagName) { //Check if we are into QUESTION_CATEGORIES zone if ($this->tree[3] == "QUESTION_CATEGORIES") { //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Acumulate data to info (content + close tag) //Reconvert: strip htmlchars again and trim to generate xml data if (!isset($this->temp)) { @@ -3536,8 +2653,8 @@ //Check if we are into SCALES zone if ($this->tree[3] == "SCALES") { //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Acumulate data to info (content + close tag) //Reconvert: strip htmlchars again and trim to generate xml data if (!isset($this->temp)) { @@ -3586,8 +2703,8 @@ //Check if we are into GROUPS zone if ($this->tree[3] == "GROUPS") { //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Acumulate data to info (content + close tag) //Reconvert: strip htmlchars again and trim to generate xml data if (!isset($this->temp)) { @@ -3636,8 +2753,8 @@ //Check if we are into EVENTS zone if ($this->tree[3] == "EVENTS") { //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Acumulate data to info (content + close tag) //Reconvert: strip htmlchars again and trim to generate xml data if (!isset($this->temp)) { @@ -3686,8 +2803,8 @@ //Check if we are into MODULES zone if ($this->tree[3] == "MODULES") { //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Acumulate data to info (content + close tag) //Reconvert: strip htmlchars again and trim to generate xml data if (!isset($this->temp)) { @@ -3742,8 +2859,8 @@ //Check if we are into LOGS zone if ($this->tree[3] == "LOGS") { //if (trim($this->content)) //Debug - // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + // echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + //echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Acumulate data to info (content + close tag) //Reconvert: strip htmlchars again and trim to generate xml data if (!isset($this->temp)) { @@ -3803,8 +2920,8 @@ //This is the endTag default handler we use when todo is undefined function endElement($parser, $tagName) { if (trim($this->content)) //Debug - echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug - echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug + echo "C".str_repeat(" ",($this->level+2)*2).$this->getContents()."
      \n"; //Debug + echo $this->level.str_repeat(" ",$this->level*2)."</".$tagName.">
      \n"; //Debug //Clear things $this->tree[$this->level] = ""; @@ -3823,7 +2940,7 @@ $status = true; - $xml_parser = xml_parser_create('UTF-8'); + $xml_parser = xml_parser_create(); $moodle_parser = new MoodleParser(); $moodle_parser->todo = $todo; $moodle_parser->preferences = $preferences; @@ -3835,21 +2952,12 @@ } else if ($todo == "COURSE_HEADER") { //Define handlers to that zone xml_set_element_handler($xml_parser, "startElementCourseHeader", "endElementCourseHeader"); - } else if ($todo == 'BLOCKS') { - //Define handlers to that zone - xml_set_element_handler($xml_parser, "startElementBlocks", "endElementBlocks"); } else if ($todo == "SECTIONS") { //Define handlers to that zone xml_set_element_handler($xml_parser, "startElementSections", "endElementSections"); - } else if ($todo == "METACOURSE") { - //Define handlers to that zone - xml_set_element_handler($xml_parser, "startElementMetacourse", "endElementMetacourse"); } else if ($todo == "USERS") { //Define handlers to that zone xml_set_element_handler($xml_parser, "startElementUsers", "endElementUsers"); - } else if ($todo == "MESSAGES") { - //Define handlers to that zone - xml_set_element_handler($xml_parser, "startElementMessages", "endElementMessages"); } else if ($todo == "QUESTIONS") { //Define handlers to that zone xml_set_element_handler($xml_parser, "startElementQuestions", "endElementQuestions"); @@ -3895,199 +3003,4 @@ return $status; } } - - function restore_precheck($id,$file,$silent=false) { - - global $CFG, $SESSION; - - //Prepend dataroot to variable to have the absolute path - $file = $CFG->dataroot."/".$file; - - if (empty($silent)) { - //Start the main table - echo ""; - echo ""; - echo "
      "; - - //Start the mail ul - echo "
        "; - } - - //Check the file exists - if (!is_file($file)) { - error ("File not exists ($file)"); - } - - //Check the file name ends with .zip - if (!substr($file,-4) == ".zip") { - error ("File has an incorrect extension"); - } - - //Now calculate the unique_code for this restore - $backup_unique_code = time(); - - //Now check and create the backup dir (if it doesn't exist) - if (empty($silent)) { - echo "
      • ".get_string("creatingtemporarystructures").'
      • '; - } - $status = check_and_create_backup_dir($backup_unique_code); - //Empty dir - if ($status) { - $status = clear_backup_dir($backup_unique_code); - } - - //Now delete old data and directories under dataroot/temp/backup - if ($status) { - if (empty($silent)) { - echo "
      • ".get_string("deletingolddata").'
      • '; - } - $status = backup_delete_old_data(); - } - - //Now copy he zip file to dataroot/temp/backup/backup_unique_code - if ($status) { - if (empty($silent)) { - echo "
      • ".get_string("copyingzipfile").'
      • '; - } - if (! $status = backup_copy_file($file,$CFG->dataroot."/temp/backup/".$backup_unique_code."/".basename($file))) { - notify("Error copying backup file. Invalid name or bad perms."); - } - } - - //Now unzip the file - if ($status) { - if (empty($silent)) { - echo "
      • ".get_string("unzippingbackup").'
      • '; - } - if (! $status = restore_unzip ($CFG->dataroot."/temp/backup/".$backup_unique_code."/".basename($file))) { - notify("Error unzipping backup file. Invalid zip file."); - } - } - - //Check for Blackboard backups and convert - if ($status){ - require_once("$CFG->dirroot/backup/bb/restore_bb.php"); - echo "
      • ".get_string("checkingforbbexport"); - $status = blackboard_convert($CFG->dataroot."/temp/backup/".$backup_unique_code); - } - - //Now check for the moodle.xml file - if ($status) { - $xml_file = $CFG->dataroot."/temp/backup/".$backup_unique_code."/moodle.xml"; - if (empty($silent)) { - echo "
      • ".get_string("checkingbackup").'
      • '; - } - if (! $status = restore_check_moodle_file ($xml_file)) { - notify("Error checking backup file. Invalid or corrupted."); - } - } - - $info = ""; - $course_header = ""; - - //Now read the info tag (all) - if ($status) { - if (empty($silent)) { - echo "
      • ".get_string("readinginfofrombackup").'
      • '; - } - //Reading info from file - $info = restore_read_xml_info ($xml_file); - //Reading course_header from file - $course_header = restore_read_xml_course_header ($xml_file); - } - - if (empty($silent)) { - //End the main ul - echo "
      "; - - //End the main table - echo "
      "; - } - - //We compare Moodle's versions - if ($CFG->version < $info->backup_moodle_version && $status) { - $message->serverversion = $CFG->version; - $message->serverrelease = $CFG->release; - $message->backupversion = $info->backup_moodle_version; - $message->backuprelease = $info->backup_moodle_release; - print_simple_box(get_string('noticenewerbackup','',$message), "center", "70%", '', "20", "noticebox"); - - } - - //Now we print in other table, the backup and the course it contains info - if ($info and $course_header and $status) { - //First, the course info - $status = restore_print_course_header($course_header); - //Now, the backup info - if ($status) { - $status = restore_print_info($info); - } - } - - //Save course header and info into php session - if ($status) { - $SESSION->info = $info; - $SESSION->course_header = $course_header; - } - - //Finally, a little form to continue - //with some hidden fields - if ($status) { - if (empty($silent)) { - echo "

      "; - $hidden["backup_unique_code"] = $backup_unique_code; - $hidden["launch"] = "form"; - $hidden["file"] = $file; - $hidden["id"] = $id; - print_single_button("restore.php", $hidden, get_string("continue"),"post"); - echo "
      "; - } - else { - redirect($CFG->wwwroot.'/backup/restore.php?backup_unique_code='.$backup_unique_code.'&launch=form&file='.$file.'&id='.$id); - } - } - - if (!$status) { - error ("An error has ocurred"); - } - return true; - } - - function restore_setup_for_check(&$restore,$backup_unique_code) { - global $SESSION; - $restore->backup_unique_code=$backup_unique_code; - $restore->users = 2; // yuk - if ($allmods = get_records("modules")) { - foreach ($allmods as $mod) { - $modname = $mod->name; - $var = "restore_".$modname; - //Now check that we have that module info in the backup file - if (isset($SESSION->info->mods[$modname]) && $SESSION->info->mods[$modname]->backup == "true") { - $restore->$var = 1; - } - } - } - } - - function backup_to_restore_array($backup,$k=0) { - if (is_array($backup) ) { - foreach ($backup as $key => $value) { - $newkey = str_replace('backup','restore',$key); - $restore[$newkey] = backup_to_restore_array($value,$key); - } - } - else if (is_object($backup)) { - $tmp = get_object_vars($backup); - foreach ($tmp as $key => $value) { - $newkey = str_replace('backup','restore',$key); - $restore->$newkey = backup_to_restore_array($value,$key); - } - } - else { - $newkey = str_replace('backup','restore',$k); - $restore = $backup; - } - return $restore; - } - ?> diff --git a/backup/try.php b/backup/try.php index 34ad2ff407f..b10e0527043 100644 --- a/backup/try.php +++ b/backup/try.php @@ -20,8 +20,8 @@ backup_required_functions(); //Adjust some php variables to the execution of this script - @ini_set("max_execution_time","3000"); - raise_memory_limit("128M"); + ini_set("max_execution_time","3000"); + ini_set("memory_limit","56M"); echo "
      \n";
       
      diff --git a/backup/version.php b/backup/version.php
      index 60c3e32be56..35a10c2df47 100644
      --- a/backup/version.php
      +++ b/backup/version.php
      @@ -5,6 +5,6 @@
       // database (backup_version) to determine whether upgrades should
       // be performed (see db/backup_*.php)
       
      -$backup_version = 2005041100;   // The current version is a date (YYYYMMDDXX)
      +$backup_version = 2004080700;   // The current version is a date (YYYYMMDDXX)
       
      -$backup_release = "1.5 development";  // User-friendly version number
      +$backup_release = "1.4 development";  // User-friendly version number
      diff --git a/blocks/HOWTO.html b/blocks/HOWTO.html
      deleted file mode 100644
      index 6a43e6d02a0..00000000000
      --- a/blocks/HOWTO.html
      +++ /dev/null
      @@ -1,1221 +0,0 @@
      -
      -
      -Moodle Developer Documentation: Blocks
      -
      -
      -
      -
      -

      MOODLE DEVELOPER DOCUMENTATION

      -
      BLOCKS
      -
      Jon Papaioannou (pj@uom.gr)
      -
      $Id$
      -
      - -

      A Step-by-step Guide To Creating Blocks

      - -
        -
      1. - -

        Summary

        - -

        The present document serves as a guide to developers who want to create their own blocks for use in Moodle. It applies to the 1.5 development version of Moodle (and any newer) only, as the blocks subsystem was rewritten and expanded for the 1.5 release. However, you can also find it useful if you want to modify blocks written for Moodle 1.3 and 1.4 to work with the latest versions (look at Appendix B).

        - -

        The guide is written as an interactive course which aims to develop a configurable, multi-purpose block that displays arbitrary HTML. It's targeted mainly at people with little experience with Moodle or programming in general and aims to show how easy it is to create new blocks for Moodle. A certain small amount of PHP programming knowledge is still required, though. Experienced developers and those who just want a reference text should refer to Appendix A because the main guide has a rather low concentration of pure information in the text.

        - -
      2. - -
      3. - -

        Basic Concepts

        - -

        Through this guide, we will be following the creation of an "HTML" block from scratch in order to demonstrate most of the block features at our disposal. Our block will be named "SimpleHTML". This does not constrain us regarding the name of the actual directory on the server where the files for our block will be stored, but for consistency we will follow the practice of using the lowercased form "simplehtml" in any case where such a name is required. Whenever we refer to a file or directory name which contains "simplehtml", it's important to remember that only the "simplehtml" part is up to us to change; the rest is standardized and essential for Moodle to work correctly.

        - -

        Whenever a file's path is mentioned in this guide, it will always start with a slash. This refers to the Moodle home directory; all files and directories will be referred to with respect to that directory.

        - -
      4. - -
      5. - -

        Ready, Set, Go!

        - -

        To define a "block" in Moodle, in the most basic case we need to provide just one source code file. We start by creating the directory /blocks/simplehtml/ and creating a file named /blocks/simplehtml/block_simplehtml.php which will hold our code. We then begin coding the block:

        - -
        class block_simplehtml extends block_base {
        -    function init() {
        -        $this->title = get_string('simplehtml', 'block_simplehtml');
        -        $this->content_type = BLOCK_TYPE_TEXT;
        -        $this->version = 2004111200;
        -    }
        -}
        - -

        The first line is our block class definition; it must be named exactly in the manner shown. Again, only the "simplehtml" part can (and indeed must) change; everything else is standardized.

        - -

        Our class is then given a small method: init. This is essential for all blocks, and its function is to set the three class member variables listed inside it. But what do these values actually mean? Here's a more detailed description.

        - -

        $this->title is the title displayed in the header of our block. We can set it to whatever we like; in this case it's set to read the actual title from a language file we are presumably distributing together with the block. I 'll skip ahead a bit here and say that if you want your block to display no title at all, then you should set this to any descriptive value you want (but not make it an empty string). We will later see how to disable the title's display.

        - -

        $this->content_type tells Moodle what kind of content to expect from this block. Here we have two simple choices. Either we set it to BLOCK_TYPE_TEXT, which tells Moodle to just take our content and display it on screen as-is; or we set it to BLOCK_TYPE_LIST, which tells Moodle that we want our block to display a nicely formatted list of items with optional icons next to each one. We can use BLOCK_TYPE_TEXT to manually create any content we want (do not be fooled by the name; HTML is allowed in the block's content without restriction) or use BLOCK_TYPE_LIST to easily create a simple menu.

        - -

        $this->version is the version of our block. This actually would only make a difference if your block wanted to keep its own data in special tables in the database (i.e. for very complex blocks). In that case the version number is used exactly as it's used in activities; an upgrade script uses it to incrementally upgrade an "old" version of the block's data to the latest. We will outline this process further ahead, since blocks tend to be relatively simple and not hold their own private data. In our example, this is certainly the case so we just set $this->version to YYYYMMDD00 and forget about it.

        - -

        UPDATING: Prior to version 1.5, the basic structure of each block class was slightly different. Refer to Appendix B for more information on the changes that old blocks have to make to conform to the new standard.

        - -
      6. - -
      7. - -

        I Just Hear Static

        - -

        In order to get our block to actually display something on screen, we need to add one more method to our class (before the final closing brace in our file). The new code is:

        - -
        function get_content() {
        -    if ($this->content !== NULL) {
        -        return $this->content;
        -    }
        -
        -    $this->content = new stdClass;
        -    $this->content->text = 'The content of our SimpleHTML block!';
        -    $this->content->footer = 'Footer here...';
        -
        -    return $this->content;
        -}
        - -

        It can't get any simpler than that, can it? Let's dissect this method to see what's going on...

        - -

        First of all, there is a check that returns the current value of $this->content if it's not NULL; otherwise we proceed with "computing" it. Since the computation is potentially a time-consuming operation and it will be called several times for each block (Moodle works that way internally), we take a precaution and include this time-saver.

        - -

        Supposing the content had not been computed before (it was NULL), we then define it from scratch. The code speaks for itself there, so there isn't much to say. Just keep in mind that we can use HTML both in the text and in the footer, if we want to.

        - -

        At this point our block should be capable of being automatically installed in Moodle and added to courses; visit your administration page to install it and after seeing it in action come back to continue our tutorial.

        - -
      8. - -
      9. - -

        Configure That Out

        - -

        The current version of our block doesn't really do much; it just displays a fixed message, which is not very useful. What we 'd really like to do is allow the teachers to customize what goes into the block. This, in block-speak, is called "instance configuration". So let's give our block some instance configuration...

        - -

        First of all, we need to tell Moodle that we want it to provide instance-specific configuration amenities to our block. That's as simple as adding one more method to our block class:

        - -
        function instance_allow_config() {
        -    return true;
        -}
        -
        - -

        This small change is enough to make Moodle display an "Edit..." icon in our block's header when we turn editing mode on in any course. However, if you try to click on that icon you will be presented with a notice that complains about the block's configuration not being implemented correctly. Try it, it's harmless.

        - -

        Moodle's complaints do make sense. We told it that we want to have configuration, but we didn't say what kind of configuration we want, or how it should be displayed. To do that, we need to create one more file: /blocks/simplehtml/config_instance.html (which has to be named exactly like that). For the moment, copy paste the following into it and save:

        - -
        -<table cellpadding="9" cellspacing="0">
        -<tr valign="top">
        -    <td align="right">
        -        <?php print_string('configcontent', 'block_simplehtml'); ?>:
        -    </td>
        -    <td>
        -        <?php print_textarea(true, 10, 50, 0, 0, 'text', $this->config->text); ?>
        -    </td>
        -</tr>
        -<tr>
        -    <td colspan="2" align="center">
        -        <input type="submit" value="<?php print_string('savechanges') ?>" />
        -    </td>
        -</tr>
        -</table>
        -<?php use_html_editor(); ?>
        -
        - -

        It isn't difficult to see that the above code just provides us with a wysiwyg-editor-enabled textarea to write our block's desired content in and a submit button to save. But... what's $this->config->text? Well...

        - -

        Moodle goes a long way to make things easier for block developers. Did you notice that the textarea is actually named "text"? When the submit button is pressed, Moodle saves each and every field it can find in our config_instance.html file as instance configuration data. We can then access that data as $this->config->variablename, where variablename is the actual name we used for our field; in this case, "text". So in essence, the above form just pre-populates the textarea with the current content of the block (as indeed it should) and then allows us to change it.

        - -

        You also might be surprised by the presence of a submit button and the absence of any <form> element at the same time. But the truth is, we don't need to worry about that at all; Moodle goes a really long way to make things easier for developers! We just print the configuration options we want, in any format we want; include a submit button, and Moodle will handle all the rest itself. The instance configuration variables are automatically at our disposal to access from any of the class methods except init.

        - -

        In the event where the default behavior is not satisfactory, we can still override it. However, this requires advanced modifications to our block class and will not be covered here; refer to Appendix A for more details.

        - -

        Having now the ability to refer to this instance configuration data through $this->config, the final twist is to tell our block to actually display what is saved in is configuration data. To do that, find this snippet in /blocks/simplehtml/block_simplehtml.php:

        - -
        -$this->content = new stdClass;
        -$this->content->text = 'The content of our SimpleHTML block!';
        -$this->content->footer = 'Footer here...';
        - -

        and change it to:

        - -
        -$this->content = new stdClass;
        -$this->content->text = $this->config->text;
        -$this->content->footer = 'Footer here...';
        - -

        Oh, and since the footer isn't really exciting at this point, we remove it from our block because it doesn't contribute anything. We could just as easily have decided to make the footer configurable in the above way, too. So for our latest code, the snippet becomes:

        - -
        -$this->content = new stdClass;
        -$this->content->text = $this->config->text;
        -$this->content->footer = '';
        - -

        After this discussion, our block is ready for prime time! Indeed, if you now visit any course with a SimpleHTML block, you will see that modifying its contents is now a snap.

        - -
      10. - -
      11. - -

        The Specialists

        - -

        Implementing instance configuration for the block's contents was good enough to whet our apetite, but who wants to stop there? Why not customize the block's title, too?

        - -

        Why not, indeed. Well, our first attempt is natural enough: let's add another field to /blocks/simplehtml/config_instance.html. Here goes:

        - -
        -<tr valign="top">
        -    <td align="right"><p><?php print_string('configtitle', 'block_simplehtml'); ?>:</td>
        -    <td><input type="text" name="title" size="30" value="<?php echo $this->config->title; ?>" /></td>
        -</tr>
        -
        - -

        We save the edited file, go to a course, edit the title of the block and... nothing happens! The instance configuration is saved correctly, all right (editing it once more proves that) but it's not being displayed. All we get is just the simple "SimpleHTML" title.

        - -

        That's not too wierd, if we think back a bit. Do you remember that init method, where we set $this->title? We didn't actually change its value from then, and $this->title is definitely not the same as $this->config->title (to Moodle, at least). What we need is a way to update $this->title with the value in the instance configuration. But as we said a bit earlier, we can use $this->config in all methods except init! So what can we do?

        - -

        Let's pull out another ace from our sleeve, and add this small method to our block class:

        - -
        -function specialization() {
        -    $this->title = $this->config->title;
        -}
        - -

        Aha, here's what we wanted to do all along! But what's going on with the specialization method?

        - -

        This "magic" method has actually a very nice property: it's guaranteed to be automatically called by Moodle as soon as our instance configuration is loaded and available (that is, immediately after init is called). That means before the block's content is computed for the first time, and indeed before anything else is done with the block. Thus, providing a specialization method is the natural choice for any configuration data that needs to be acted upon "as soon as possible", as in this case.

        - -
      12. - -
      13. - -

        Now You See Me, Now You Don't

        - -

        Now would be a good time to mention another nifty technique that can be used in blocks, and which comes in handy quite often. Specifically, it may be the case that our block will have something interesting to display some of the time; but in some other cases, it won't have anything useful to say. (An example here would be the "Recent Activity" block, in the case where no recent activity in fact exists. However in that case the block chooses to explicitly inform you of the lack of said activity, which is arguably useful). It would be nice, then, to be able to have our block "disappear" if it's not needed to display it.

        - -

        This is indeed possible, and the way to do it is to make sure that after the get_content method is called, the block is completely void of content. Specifically:

        - -
          - -
        • If $this->content_type equals BLOCK_TYPE_TEXT, then "void of content" means that both $this->content->text and $this->content->footer are each equal to the empty string ('').
        • - -
        • If $this->content_type equals BLOCK_TYPE_LIST, then "void of content" means that $this->content->items is an empty array and $this->content->footer is equal to the empty string ('').
        • - -
        - -

        Refer to Part 3 which explains the init function for more information on $this->content_type and its significance. Note that the exact value of the block's title and the presence or absence of a hide_header method do not affect this behavior. A block is considered empty if it has no content, irrespective of anything else.

        - -
      14. - -
      15. - -

        We Are Legion

        - -

        Right now our block is fully configurable, both in title and content. It's so versatile, in fact, that we could make pretty much anything out of it. It would be really nice to be able to add multiple blocks of this type to a single course. And, as you might have guessed, doing that is as simple as adding another small method to our block class:

        - -
        -function instance_allow_multiple() {
        -    return true;
        -}
        - -

        This tells Moodle that it should allow any number of instances of the SimpleHTML block in any course. After saving the changes to our file, Moodle immediately allows us to add multiple copies of the block without further ado!

        - -

        There are a couple more of interesting points to note here. First of all, even if a block itself allows multiple instances in the same page, the administrator still has the option of disallowing such behavior. This setting can be set separately for each block from the Administration / Configuration / Blocks page.

        - -

        And finally, a nice detail is that as soon as we defined an instance_allow_multiple method, the method instance_allow_config that was already defined became obsolete. Moodle assumes that if a block allows multiple instances of itself, those instances will want to be configured (what is the point of same multiple instances in the same page if they are identical?) and thus automatically provides an "Edit" icon. So, we can also remove the whole instance_allow_config method now without harm. We had only needed it when multiple instances of the block were not allowed.

        - -
      16. - -
      17. - -

        The Effects of Globalization

        - -

        Configuring each block instance with its own personal data is cool enough, but sometimes administrators need some way to "touch" all instances of a specific block at the same time. In the case of our SimpleHTML block, a few settings that would make sense to apply to all instances aren't that hard to come up with. For example, we might want to limit the contents of each block to only so many characters, or we might have a setting that filters HTML out of the block's contents, only allowing pure text in. Granted, such a feature wouldn't win us any awards for naming our block "SimpleHTML" but some tormented administrator somewhere might actually find it useful.

        - -

        This kind of configuration is called "global configuration" and applies only to a specific block type (all instances of that block type are affected, however). Implementing such configuration for our block is quite similar to implementing the instance configuration. We will now see how to implement the second example, having a setting that only allows text and not HTML in the block's contents.

        - -

        First of all, we need to tell Moodle that we want our block to provide global configuration by, what a surprise, adding a small method to our block class:

        - -
        -function has_config() {
        -    return true;
        -}
        - -

        Then, we need to create a HTML file that actually prints out the configuration screen. In our case, we 'll just print out a checkbox saying "Do not allow HTML in the content" and a "submit" button. Let's create the file /blocks/simplehtml/config_global.html which again must be named just so, and copy paste the following into it:

        - -
        -<div style="text-align: center;">
        -<input type="hidden" name="block_simplehtml_strict" value="0" />
        -<input type="checkbox" name="block_simplehtml_strict" value="1" 
        -  <?php if(!empty($CFG->block_simplehtml_strict)) echo 'checked="checked"'; ?> />
        -<?php print_string('donotallowhtml', 'block_simplehtml'); ?>
        -<p><input type="submit" value="<?php print_string('savechanges'); ?>" /></p>
        -</div>
        -
        - -

        True to our block's name, this looks simple enough. What it does is that it displays a checkbox named "block_simplehtml_strict" and if the Moodle configuration variable with the same name (i.e., $CFG->block_simplehtml_strict) is set and not empty (that means it's not equal to an empty string, to zero, or to boolean false) it displays the box as pre-checked (reflecting the current status). Why does it check the configuration setting with the same name? Because the default implementation of the global configuration saving code takes all the variables we have in our form and saves them as Moodle configuration options with the same name. Thus, it's good practice to use a descriptive name and also one that won't possibly conflict with the name of another setting. "block_simplehtml_strict" clearly satisfies both requirements.

        - -

        The astute reader may have noticed that we actually have two input fields named "block_simplehtml_strict" in our configuration file. One is hidden and its value is always 0; the other is the checkbox and its value is 1. What gives? Why have them both there?

        - -

        Actually, this is a small trick we use to make our job as simple as possible. HTML forms work this way: if a checkbox in a form is not checked, its name does not appear at all in the variables passed to PHP when the form is submitted. That effectively means that, when we uncheck the box and click submit, the variable is not passed to PHP at all. Thus, PHP does not know to update its value to "0", and our "strict" setting cannot be turned off at all once we turn it on for the first time. Not the behavior we want, surely.

        - -

        However, when PHP handles received variables from a form, the variables are processed in the order in which they appear in the form. If a variable comes up having the same name with an already-processed variable, the new value overwrites the old one. Taking advantage of this, our logic runs as follows: the variable "block_simplehtml_strict" is first unconditionally set to "0". Then, if the box is checked, it is set to "1", overwriting the previous value as discussed. The net result is that our configuration setting behaves as it should.

        - -

        To round our bag of tricks up, notice that the use of if(!empty($CFG->block_simplehtml_strict)) in the test for "should the box be checked by default?" is quite deliberate. The first time this script runs, the variable $CFG->block_simplehtml_strict will not exist at all. After it's set for the first time, its value can be either "0" or "1". Given that both "not set" and the string "0" evaluate as empty while the sting "1" does not, we manage to avoid any warnings from PHP regarding the variable not being set at all, and have a nice human-readable representation for its two possible values ("0" and "1").

        - -

        Now that we have managed to cram a respectable amount of tricks into a few lines of HTML, we might as well discuss the alternative in case that tricks are not enough for a specific configuration setup we have in mind. Saving the data is done in the method config_save, the default implementation of which is as follows:

        - -
        -function config_save($data) {
        -    // Default behavior: save all variables as $CFG properties
        -    foreach ($data as $name => $value) {
        -        set_config($name, $value);
        -    }
        -    return true;
        -}
        - -

        As can be clearly seen, Moodle passes this method an associative array $data which contains all the variables coming in from our configuration screen. If we wanted to do the job without the "hidden variable with the same name" trick we used above, one way to do it would be by overriding this method with the following:

        - -
        -function config_save($data) {
        -    if(isset($data['block_simplehtml_strict'])) {
        -        set_config('block_simplehtml_strict', '1');
        -    }
        -    else {
        -        set_config('block_simplehtml_strict', '0');
        -    }
        -    return true;
        -}
        - -

        Quite straightfoward: if the variable "block_simplehtml_strict" is passed to us, then it can only mean that the user has checked it, so set the configuration variable with the same name to "1". Otherwise, set it to "0". Of course, this version would need to be updated if we add more configuration options because it doesn't respond to them as the default implementation does. Still, it's useful to know how we can override the default implementation if it does not fit our needs (for example, we might not want to save the variable as part of the Moodle configuration but do something else with it).

        - -

        So, we are now at the point where we know if the block should allow HTML tags in its content or not. How do we get the block to actually respect that setting?

        - -

        We could decide to do one of two things: either have the block "clean" HTML out from the input before saving it in the instance configuration and then display it as-is (the "eager" approach); or have it save the data "as is" and then clean it up each time just before displaying it (the "lazy" approach). The eager approach involves doing work once when saving the configuration; the lazy approach means doing work each time the block is displayed and thus it promises to be worse performance-wise. We shall hence go with the eager approach.

        - -

        Much as we did just before with overriding config_save, what is needed here is overriding the method instance_config_save which handles the instance configuration. The default implementation is as follows:

        - -
        -function instance_config_save($data) {
        -    $data = stripslashes_recursive($data);
        -    $this->config = $data;
        -    return set_field('block_instance', 'configdata', base64_encode(serialize($data)), 
        -                     'id', $this->instance->id);
        -}
        - -

        This may look intimidating at first (what's all this stripslashes_recursive() and base64_encode() and serialize() stuff?) but do not despair; we won't have to touch any of it. We will only add some extra validation code in the beginning and then instruct Moodle to additionally call this default implementation to do the actual storing of the data. Specifically, we will add a method to our class which goes like this:

        - -
        -function instance_config_save($data) {
        -    // Clean the data if we have to
        -    global $CFG;
        -    if(!empty($CFG->block_simplehtml_strict)) {
        -        $data['text'] = strip_tags($data['text']);
        -    }
        -    
        -    // And now forward to the default implementation defined in the parent class
        -    return parent::instance_config_save($data);
        -}
        - -

        At last! Now the administrator has absolute power of life and death over what type of content is allowed in our "SimpleHTML" block! Absolute? Well... not exactly. In fact, if we think about it for a while, it will become apparent that if at some point in time HTML is allowed and some blocks have saved their content with HTML included, and afterwards the administrator changes the setting to "off", this will only prevent subsequent content changes from including HTML. Blocks which already had HTML in their content would continue to display it!

        - -

        Following that train of thought, the next stop is realizing that we wouldn't have this problem if we had chosen the lazy approach a while back, because in that case we would "sanitize" each block's content just before it was displayed. The only thing we can do with the eager approach is strip all the tags from the content of all SimpleHTML instances as soon as the admin setting is changed to "HTML off"; but even then, turning the setting back to "HTML on" won't bring back the tags we stripped away. On the other hand, the lazy approach might be slower, but it's more versatile; we can choose whether to strip or keep the HTML before displaying the content, and we won't lose it at all if the admin toggles the setting off and on again. Isn't the life of a developer simple and wonderful?

        - -

        We will let this part of the tutorial come to a close with the obligatory excercise for the reader: in order to have the SimpleHTML block work "correctly", find out how to strengthen the eager approach to strip out all tags from the existing configuration of all instances of our block, or go back and implement the lazy approach instead. (Hint: do that in the get_content method)

        - -

        UPDATING: Prior to version 1.5, the file config_global.html was named simply config.html. Also, the methods config_save and config_print were named handle_config and print_config respectively. Upgrading a block to work with Moodle 1.5 involves updating these aspects; refer to Appendix B for more information.

        - -
      18. - -
      19. - -

        Eye Candy

        - -

        Our block is just about complete functionally, so now let's take a look at some of the tricks we can use to make its behavior customized in a few more useful ways.

        - -

        First of all, there are a couple of ways we can adjust the visual aspects of our block. For starters, it might be useful to create a block that doesn't display a header (title) at all. You can see this effect in action in the Course Description block that comes with Moodle. This behavior is achieved by, you guessed it, adding one more method to our block class:

        - -
        -function hide_header() {
        -    return true;
        -}
        - -

        One more note here: we cannot just set an empty title inside the block's init method; it's necessary for each block to have a unique, non-empty title after init is called so that Moodle can use those titles to differentiate between all of the installed blocks.

        - -

        Another adjustment we might want to do is instruct our block to take up a certain amount of width on screen. Moodle handles this as a two-part process: first, it queries each block about its preferred width and takes the maximum number as the desired value. Then, the page that's being displayed can choose to use this value or, more probably, bring it within some specific range of values if it isn't already. That means that the width setting is a best-effort settlement; your block can request a certain width and Moodle will try to provide it, but there's no guarantee whatsoever about the end result. As a concrete example, all standard Moodle course formats will deliver any requested width between 180 and 210 pixels, inclusive.

        - -

        To instruct Moodle about our block's preferred width, we add one more method to the block class:

        - -
        -function preferred_width() {
        -    // The preferred value is in pixels
        -    return 200;
        -}
        - -

        This will make our block (and all the other blocks displayed at the same side of the page) a bit wider than standard.

        - -

        Finally, we can also affect some properties of the actual HTML that will be used to print our block. Each block is fully contained within a <table> element, inside which all the HTML for that block is printed. We can instruct Moodle to add HTML attributes with specific values to that container. This would be done to either a) directly affect the end result (if we say, assign bgcolor="black"), or b) give us freedom to customize the end result using CSS (this is in fact done by default as we 'll see below).

        - -

        The default behavior of this feature in our case will assign to our block's container the class HTML attribute with the value "sideblock block_simplehtml" (the prefix "block_" followed by the name of our block, lowercased). We can then use that class to make CSS selectors in our theme to alter this block's visual style (for example, ".sideblock.block_simplehtml { border: 1px black solid}").

        - -

        To change the default behavior, we will need to define a method which returns an associative array of attribute names and values. For example, the version

        - -
        -function html_attributes() {
        -    return array(
        -        'class'       => 'sideblock block_'. $this->name(),
        -        'onmouseover' => 'alert("Mouseover on our block!");'
        -    );
        -}
        - -

        will result in a mouseover event being added to our block using JavaScript, just as if we had written the onmouseover="alert(...)" part ourselves in HTML. Note that we actually duplicate the part which sets the class attribute (we want to keep that, and since we override the default behavior it's our responsibility to emulate it if required). And the final elegant touch is that we don't set the class to the hard-coded value "block_simplehtml" but instead use the name method to make it dynamically match our block's name.

        - -
      20. - -
      21. - -

        Authorized Personnel Only

        - -

        It's not difficult to imagine a block which is very useful in some circumstances but it simply cannot be made meaningful in others. An example of this would be the "Social Activities" block which is indeed useful in a course with the social format, but doesn't do anything useful in a course with the weeks format. There should be some way of allowing the use of such blocks only where they are indeed meaningful, and not letting them confuse users if they are not.

        - -

        Moodle allows us to declare which course formats each block is allowed to be displayed in, and enforces these restrictions as set by the block developers at all times. The information is given to Moodle as a standard associative array, with each key corresponding to a page format and defining a boolean value (true/false) that declares whether the block should be allowed to appear in that page format.

        - -

        Notice the deliberate use of the term page instead of course in the above paragraph. This is because in Moodle 1.5 and onwards, blocks can be displayed in any page that supports them. The best example of such pages are the course pages, but we are not restricted to them. For instance, the quiz view page (the first one we see when we click on the name of the quiz) also supports blocks.

        - -

        The format names we can use for the pages derive from the name of the script which is actually used to display that page. For example, when we are looking at a course, the script is /course/view.php (this is evident from the browser's address line). Thus, the format name of that page is course-view. It follows easily that the format name for a quiz view page is mod-quiz-view. This rule of thumb does have a few exceptions, however: -

          -
        • The format name for the front page of Moodle is site-index.
        • -
        • The format name for courses is actually not just course-view; it is course-view-weeks, course-view-topics, etc.
        • -
        • Even though there is no such page, the format name all can be used as a catch-all option.
        • -
        -

        - -

        We can include as many format names as we want in our definition of the applicable formats. Each format can be allowed or disallowed, and there are also three more rules that help resolve the question "is this block allowed into this page or not?": - -

          -
        • Prefixes of a format name will match that format name; for example, mod will match all the activity modules. course-view will match any course, regardless of the course format. And finally, site will also match the front page (remember that its full format name is site-index).
        • -
        • The more specialized a format name that matches our page is, the higher precedence it has when deciding if the block will be allowed. For example, mod, mod-quiz and mod-quiz-view all match the quiz view page. But if all three are present, mod-quiz-view will take precedence over the other two because it is a better match.
        • -
        • The character * can be used in place of any word. For example, mod and mod-* are equivalent. At the time of this document's writing, there is no actual reason to utilize this "wildcard matching" feature, but it exists for future usage.
        • -
        • The order that the format names appear does not make any difference.
        • -
        -

        - -

        All of the above are enough to make the situation sound complex, so let's look at some specific examples. First of all, to have our block appear only in the site front page, we would use:

        - -
        -function applicable_formats() {
        -    return array('site' => true);
        -}
        - -

        Since all is missing, the block is disallowed from appearing in any course format; but then site is set to true, so it's explicitly allowed to appear in the site front page (remember that site matches site-index because it's a prefix).

        - -

        For another example, if we wanted to allow the block to appear in all course formats except social, and also to not be allowed anywhere but in courses, we would use:

        - -
        -function applicable_formats() {
        -    return array('course-view' => true, 'course-view-social' => false);
        -}
        - -

        This time, we first allow the block to appear in all courses and then we explicitly disallow the social format.

        - -

        For our final, most complicated example, suppose that a block can be displayed in the site front page, in courses (but not social courses) and also when we are viewing any activity module, except quiz. This would be:

        - -
        -function applicable_formats() {
        -    return array('site-index' => true,
        -                 'course-view' => true, 'course-view-social' => false,
        -                 'mod' => true, 'mod-quiz' => false);
        -}
        - -

        It is not difficult to realize that the above accomplishes the objective if we remember that there is a "best match" policy to determine the end result.

        - -

        UPDATING: Prior to version 1.5, blocks were only allowed in courses (and in Moodle 1.4, in the site front page). Also, the keywords used to describe the valid course formats at the time were slightly different and had to be changed in order to allow for a more open architecture. Refer to Appendix B for more information on the changes that old blocks have to make to conform to the new standard.

        -
      22. - -
      23. - -

        Lists and Icons

        - -

        In this final part of the guide, we will briefly discuss what the differences between blocks of BLOCK_TYPE_TEXT and those of BLOCK_TYPE_LIST are. The vast majority of the techniques and options discussed before apply to any block; the only difference is in the handling of the $this->content variable.

        - -

        As we have seen, blocks of BLOCK_TYPE_TEXT use two properties of $this->content: "text" and "footer". The text is displayed as-is as the block content, and the footer goes below in smaller font size. Blocks of BLOCK_TYPE_LIST use $this->content->footer in the exact same way, but they ignore $this->content->text.

        - -

        Instead, Moodle expects such blocks to set two other properties when the get_content method is called. $this->content->items should be a numerically indexed array containing elements that represent the HTML for each item in the list that is going to be displayed. Usually these items will be links, so being free to write HTML allows us to provide anchor tags as list items. $this->content->icons should also be a numerically indexed array, with exactly as many items as $this->content->items has. Each of these items should be a fully qualified HTML <img> tag, with "src", "height", "width" and "alt" attributes. Obviously, it makes sense to keep the images small and of a uniform size.

        - -

        Thus, if we were to create a list block, our get_content method might read:

        - -
        -function get_content() {
        -    if ($this->content !== NULL) {
        -        return $this->content;
        -    }
        -
        -    $this->content = new stdClass;
        -    $this->content->items = array();
        -    $this->content->icons = array();
        -    $this->content->footer = 'Footer here...';
        -
        -    $this->content->items[] = '<a href="some_file.php">Menu Option 1</a>';
        -    $this->content->icons[] = '<img src="images/icons/1.gif" width="16" height="16" alt="" />';
        -
        -    // Add more list items here
        -
        -    return $this->content;
        -}
        - -

        The end result when such a block is printed will be a list of items with the corresponding icons before each one, and an optional footer below. For a real world block of this type, there is no better example than the "admin" block which illustrates all of the above.

        - -
      24. - -
      - -

      Appendix A: Reference

      - -

      This Appendix will discuss the base class block_base from which all other block classes derive, and present each and every method that can be overridden by block developers in detail. Methods that should not be overridden are explicitly referred to as such. After reading this Appendix, you will have a clear understanding of every method which you should or could override to implement functionality for your block.

      - -

      The methods are divided into three categories: those you may use and override in your block, those that you may not override but might want to use, and those internal methods that should neither be used nor overridden. In each category, methods are presented in alphabetical order.

      - -
        - -
      • Methods you can freely use and override:

        - -
          - -
        • - -
          applicable_formats
          - -
          -function applicable_formats() {
          -    // Default case: the block can be used in courses and site index, but not in activities
          -    return array('all' => true, 'mod' => false);
          -}
          - -

          This method allows you to control which pages your block can be added to. Page formats are formulated from the full path of the script that is used to display that page. You should return an array with the keys being page format names and the values being booleans (true or false). Your block is only allowed to appear in those formats where the value is true.

          - -

          Example format names are: course-view, site-index (this is an exception, referring front page of the Moodle site), course-format-weeks (referring to a specific course format), mod-quiz (referring to the quiz module) and all (this will be used for those formats you have not explicitly allowed or disallowed).

          - -

          The full matching rules are: -

            -
          • Prefixes of a format name will match that format name; for example, mod will match all the activity modules. course-view will match any course, regardless of the course format. And finally, site will also match the front page (remember that its full format name is site-index).
          • -
          • The more specialized a format name that matches our page is, the higher precedence it has when deciding if the block will be allowed. For example, mod, mod-quiz and mod-quiz-view all match the quiz view page. But if all three are present, mod-quiz-view will take precedence over the other two because it is a better match.
          • -
          • The character * can be used in place of any word. For example, mod and mod-* are equivalent. At the time of this document's writing, there is no actual reason to utilize this "wildcard matching" feature, but it exists for future usage.
          • -
          • The order that the format names appear does not make any difference.
          • -
          -

          - -
        • - -
        • - -
          config_print
          - -
          -function config_print() {
          -    // Default behavior: print the config_global.html file
          -    // You don't need to override this if you're satisfied with the above
          -    if (!$this->has_config()) {
          -        return false;
          -    }
          -    global $CFG, $THEME;
          -    print_simple_box_start('center', '', $THEME->cellheading);
          -    include($CFG->dirroot.'/blocks/'. $this->name() .'/config_global.html');
          -    print_simple_box_end();
          -    return true;
          -}
          - -

          This method allows you to choose how to display the global configuration screen for your block. This is the screen that the administrator is presented with when he chooses "Settings..." for a specific block. Override it if you need something much more complex than the default implementation allows you to do. However, keep these points in mind:

          - -
            -
          1. If you save your configuration options in $CFG, you will probably need to use global $CFG; before including any HTML configuration screens.
          2. -
          3. The HTML <input> elements that you include in your method's output will be automatically enclosed in a <form> element. You do not need to worry about where and how that form is submitted; however, you must provide a way to submit it (i.e., an <input type="submit" />.
          4. -
          - -

          You should return a boolean value denoting the success or failure of your method's actions.

          - -
        • - -
        • - -
          config_save
          - -
          -function config_save($data) {
          -    // Default behavior: save all variables as $CFG properties
          -    // You don't need to override this if you 're satisfied with the above
          -    foreach ($data as $name => $value) {
          -        set_config($name, $value);
          -    }
          -    return true;
          -}
          - -

          This method allows you to override the storage mechanism for your global configuration data. The received argument is an associative array, with the keys being setting names and the values being setting values. The default implementation saves everything as Moodle $CFG variables.

          - -

          Note that $data does not hold all of the submitted POST data because Moodle adds some hidden fields to the form in order to be able to process it. However, before calling this method it strips the hidden fields from the received data and so when this method is called only the "real" configuration data remain.

          - -

          You should return a boolean value denoting the success or failure of your method's actions.

          - -
        • - -
        • - -
          get_content
          - -
          -function get_content() {
          -    // This should be implemented by the derived class.
          -    return NULL;
          -}
          - -

          This method should, when called, populate the $this->content variable of your block. Populating the variable means: - -

          EITHER
          defining $this->content->text and $this->content->footer if your block is of type BLOCK_TYPE_TEXT. Both of these should be strings, and can contain arbitrary HTML.

          - -

          OR
          defining $this->content->items, $this->content->icons and $this->content->footer if your block is of type BLOCK_TYPE_LIST. The first two should be numerically indexed arrays having the exact same number of elements. $this->content->items is an array of strings that can contain arbitrary HTML while $this->content->icons also contains should strings, but those must be fully-qualified HTML <img> tags and nothing else. $this->content->footer is a string, as above.

          - -

          If you set all of these variables to their default "empty" values (empty arrays for the arrays and empty strings for the strings), the block will not be displayed at all except to editing users. This is a good way of having your block hide itself to unclutter the screen if there is no reason to have it displayed.

          - -

          Before starting to populate $this->content, you should also include a simple caching check. If $this->content is exactly equal to NULL then proceed as normally, while if it is not, return the existing value instead of calculating it once more. If you fail to do this, Moodle will suffer a performance hit.

          - -

          In any case, your method should return the fully constructed $this->content variable.

          - -
        • - -
        • - -
          has_config
          - -
          -function has_config() {
          -    return false;
          -}
          - -

          This method should return a boolean value that denotes whether your block wants to present a configuration interface to site admins or not. The configuration that this interface offers will impact all instances of the block equally.

          - -

          To actually implement the configuration interface, you will either need to rely on the default config_print method or override it. The full guide contains more information on this.

          -
        • - -
        • - -
          hide_header
          - -
          -function hide_header() {
          -    //Default, false--> the header is shown
          -    return false;
          -}
          - -

          This method should return a boolean value that denotes whether your block wants to hide its header (or title). Thus, if you override it to return true, your block will not display a title unless the current user is in editing mode.

          - -
        • - -
        • - -
          html_attributes
          - -
          -function html_attributes() {
          -    // Default case: an id with the instance and a class with our name in it
          -    return array('id' => 'inst'.$this->instance->id, 'class' => 'block_'. $this->name());
          -}
          - -

          This method should return an associative array of HTML attributes that will be given to your block's container element when Moodle constructs the output HTML. No sanitization will be performed in these elements at all.

          - -

          If you intend to override this method, you should return the default attributes as well as those you add yourself. The recommended way to do this is:

          - -
          -function html_attributes() {
          -    $attrs = parent::html_attributes();
          -    // Add your own attributes here, e.g.
          -    // $attrs['width'] = '50%';
          -    return $attrs;
          -}
          - -
        • - -
        • - -
          init
          - -
          -function init() {
          -    $this->title = get_string('simplehtml', 'block_simplehtml');
          -    $this->content_type = BLOCK_TYPE_TEXT;
          -    $this->version = 2004111200;
          -}
          - -

          This method must be implemented for all blocks. It has to assign meaningful values to the object variables $this->title, $this->content_type (which must be either BLOCK_TYPE_TEXT or BLOCK_TYPE_LIST) and $this->version (which is used by Moodle for performing automatic updates when available).

          - -

          No return value is expected from this method.

          - -
        • - -
        • - -
          instance_allow_config
          - -
          -function instance_allow_config() {
          -    return false;
          -}
          - -

          This method should return a boolean value. True indicates that your block wants to have per-instance configuration, while false means it does not. If you do want to implement instance configuration, you will need to take some additional steps apart from overriding this method; refer to the full guide for more information.

          - -

          This method's return value is irrelevant if instance_allow_multiple returns true; it is assumed that if you want multiple instances then each instance needs its own configuration.

          - -
        • - -
        • - -
          instance_allow_multiple
          - -
          -function instance_allow_multiple() {
          -    // Are you going to allow multiple instances of each block?
          -    // If yes, then it is assumed that the block WILL USE per-instance configuration
          -    return false;
          -}
          - -

          This method should return a boolean value, indicating whether you want to allow multiple instances of this block in the same page or not. If you do allow multiple instances, it is assumed that you will also be providing per-instance configuration for the block. Thus, you will need to take some additional steps apart from overriding this method; refer to the full guide for more information.

          - -
        • - -
        • - -
          instance_config_print
          - -
          -function instance_config_print() {
          -    // Default behavior: print the config_instance.html file
          -    // You don't need to override this if you're satisfied with the above
          -    if (!$this->instance_allow_multiple() && !$this->instance_allow_config()) {
          -        return false;
          -    }
          -    global $CFG, $THEME;
          -
          -    if (is_file($CFG->dirroot .'/blocks/'. $this->name() .'/config_instance.html')) {
          -        print_simple_box_start('center', '', $THEME->cellheading);
          -        include($CFG->dirroot .'/blocks/'. $this->name() .'/config_instance.html');
          -        print_simple_box_end();
          -    } else {
          -        notice(get_string('blockconfigbad'),
          -               str_replace('blockaction=', 'dummy=', qualified_me()));
          -    }
          -    
          -    return true;
          -}
          - -

          This method allows you to choose how to display the instance configuration screen for your block. Override it if you need something much more complex than the default implementation allows you to do. Keep in mind that whatever you do output from config_print, it will be enclosed in a HTML form automatically. You only need to provide a way to submit that form.

          - -

          You should return a boolean value denoting the success or failure of your method's actions.

          - -
        • - -
          instance_config_save
          - -
          -function instance_config_save($data) {
          -    $data = stripslashes_recursive($data);
          -    $this->config = $data;
          -    return set_field('block_instance', 'configdata', base64_encode(serialize($data)), 
          -                     'id', $this->instance->id);
          -}
          - -

          This method allows you to override the storage mechanism for your instance configuration data. The received argument is an associative array, with the keys being setting names and the values being setting values.

          - -

          The configuration must be stored in the "configdata" field of your instance record in the database so that Moodle can auto-load it when your block is constructed. However, you may still want to override this method if you need to take some additional action apart from saving the data. In that case, you really should do what data processing you want and then call parent::instance_config_save($data) with your new $data array. This will keep your block from becoming broken if the default implementation of instance_config_save changes in the future.

          - -

          Note that $data does not hold all of the submitted POST data because Moodle adds some hidden fields to the form in order to be able to process it. However, before calling this method it strips the hidden fields from the received data and so when this method is called only the "real" configuration data remain.

          - -

          If you want to update the stored copy of the configuration data at run time (for example to persist some changes you made programmatically), you should not use this method. The correct procedure for that purpose is to call instance_config_commit.

          - -

          You should return a boolean value denoting the success or failure of your method's actions.

          - -
        • - -
        • - -
          preferred_width
          - -
          -function preferred_width() {
          -    // Default case: the block wants to be 180 pixels wide
          -    return 180;
          -}
          - -

          This method should return an integer value, which is the number of pixels of width your block wants to take up when displayed. Moodle will try to honor your request, but this is actually up to the implementation of the format of the page your block is being displayed in and therefore no guarantee is given. You might get exactly what you want or any other width the format decides to give you, although obviously an effort to accomodate your block will be made.

          - -

          Most display logic at this point allocates the maximum width requested by the blocks that are going to be displayed, bounding it both downwards and upwards to avoid having a bad-behaving block break the format.

          - -
        • - -
        • - -
          refresh_content
          - -
          -function refresh_content() {
          -    // Nothing special here, depends on content()
          -    $this->content = NULL;
          -    return $this->get_content();
          -}
          - -

          This method should cause your block to recalculate its content immediately. If you follow the guidelines for get_content, which say to respect the current content value unless it is NULL, then the default implementation will do the job just fine.

          - -

          You should return the new value of $this->content after refreshing it.

          - -
        • - -
        • - -
          specialization
          - -
          -function specialization() {
          -    // Just to make sure that this method exists.
          -}
          - -

          This method is automatically called by the framework immediately after your instance data (which includes the page type and id and all instance configuration data) is loaded from the database. If there is some action that you need to take as soon as this data becomes available and which cannot be taken earlier, you should override this method.

          - -

          The instance data will be available in the variables $this->instance and $this->config.

          - -

          This method should not return anything at all.

          - -
        • - -
        - -
      • Methods which you should not override but may want to use:

        - -
          - -
        • -
          instance_config_commit
          -
          -function instance_config_commit() {
          -    return set_field('block_instance',
          -                     'configdata', base64_encode(serialize($this->config)),
          -                     'id', $this->instance->id);
          -}
          - -

          This method saves the current contents of $this->config to the database. If you need to make a change to the configuration settings of a block instance at run time (and not through the usual avenue of letting the user change it), just make the changes you want to $this->config and then call this method.

          -
        • -
        • -
          get_content_type
          -
          -function get_content_type() {
          -    return $this->content_type;
          -}
          - -

          This method returns the value of $this->content_type, and is the preferred way of accessing that variable. It is guaranteed to always work, now and forever. Directly accessing the variable is not recommended; future library changes may break compatibility with code that does so.

          - -
        • -
        • -
          get_title
          -
          -function get_title() {
          -    return $this->title;
          -}
          - -

          This method returns the value of $this->title, and is the preferred way of accessing that variable. It is guaranteed to always work, now and forever. Directly accessing the variable is not recommended; future library changes may break compatibility with code that does so.

          - -
        • -
        • -
          get_version
          -
          -function get_version() {
          -    return $this->version;
          -}
          - -

          This method returns the value of $this->version, and is the preferred way of accessing that variable. It is guaranteed to always work, now and forever. Directly accessing the variable is not recommended; future library changes may break compatibility with code that does so.

          - -
        • -
        • -
          name
          -
          -function name() {
          -    static $myname;
          -    if ($myname === NULL) {
          -        $myname = strtolower(get_class($this));
          -        $myname = substr($myname, strpos($myname, '_') + 1);
          -    }
          -    return $myname;
          -}
          - -

          This method returns the internal name of your block inside Moodle, without the block_ prefix. Obtaining the name of a block object is sometimes useful because it can be used to write code that is agnostic to the actual block's name (and thus more generic and reusable). For an example of this technique, see the config_print method.

          -
        • - -
        - -
      • - -
      • Methods which you should not override and not use at all:

        -
          -
        • -
          _self_test
          -

          This is a private method; no description is given.

          -
        • -
        • -
          _add_edit_controls
          -

          This is a private method; no description is given.

          -
        • -
        • -
          _load_instance
          -

          This is a private method; no description is given.

          -
        • -
        • -
          _print_block
          -

          This is a private method; no description is given.

          -
        • -
        • -
          _print_shadow
          -

          This is a private method; no description is given.

          -
        • -
        -
      • - -
      - -

      The class block_base also has a few standard member variables which its methods manipulate. These variables, the purpose of each and the type of data they are expected to hold is explained in the next section of this Appendix.

      - -

      Class variables:

      - -
        - -
      • - -
        $this->config
        - -

        This variable holds all the specialized instance configuration data that have been provided for this specific block instance (object). It is an object of type stdClass, with member variables directly corresponding to the HTML <input> elements in the block's config_instance.html file.

        - -

        The variable is initialized just after the block object is constructed, immediately before specialization is called for the object. It is possible that the block has no instance configuration, in which case the variable will be NULL.

        - -

        It is obvious that there is a direct relationship between this variable and the configdata field in the mdl_block_instance table. However, it is strongly advised that you refrain from accessing the configdata field yourself. If you absolutely must update its value at any time, it is recommended that you call the method instance_config_commit to do the actual work.

        - -
      • - -
      • - -
        $this->content_type
        - -

        This variable instructs Moodle on what type of content it should assume the block has. It is essential that it has a meaningful value, as Moodle depends on this for correctly displaying the block on screen. Consequently, this variable is closely tied with the varaible $this->content. The variable is expected to have a valid value after the framework calls the init method for each block.

        - -

        The only valid values for this variable are the two named constants BLOCK_TYPE_TEXT and BLOCK_TYPE_LIST.

        -
      • - -
      • - -
        $this->content
        - -

        This variable holds all the actual content that is displayed inside each block. Valid values for it are either NULL or an object of class stdClass, which must have specific member variables set as explained below. Normally, it begins life with a value of NULL and it becomes fully constructed (i.e., an object) when get_content is called.

        - -

        After it is fully constructed, this object is expected to have certain properties, depending on the value of $this->content_type. Specifically: - -

          - -
        • - If $this->content_type is BLOCK_TYPE_TEXT, then $this->content is expected to have the following member variables: - -
            -
          • text
            This is a string of arbitrary length and content. It is displayed inside the main area of the block, and can contain HTML.
          • -
          • footer
            This is a string of arbitrary length and contents. It is displayed below the text, using a smaller font size. It can also contain HTML.
          • -
          -
        • - -
        • If $this->content_type is BLOCK_TYPE_LIST, then $this->content is expected to have the following member variables: -
            -
          • items
            This is a numerically indexed array of strings which holds the title for each item in the list that will be displayed in the block's area. Since usually such lists function like menus, the title for each item is normally a fully qualified HTML <a> tag.
          • -
          • icons
            This is a numerically indexed array of strings which represent the images displayed before each item of the list. It therefore follows that it should have the exact number of elements as the items member variable. Each item in this array should be a fully qualified HTML <img> tag.
          • -
          • footer
            This is a string of arbitrary length and contents. It is displayed below the text, using a smaller font size. It can also contain HTML.
          • -
          -
        • - -
        -

        - -
      • - -
      • - -
        $this->instance
        - -

        This member variable holds all the specific information that differentiates one block instance (i.e., the PHP object that embodies it) from another. It is an object of type stdClass retrieved by calling get_record on the table mdl_block_instance. Its member variables, then, directly correspond to the fields of that table. It is initialized immediately after the block object itself is constructed.

        - -
      • - -
      • - -
        $this->title
        - -

        This variable is a string that contains the human-readable name of the block. It is used to refer to blocks of that type throughout Moodle, for example in the administrator's block configuration screen and in the editing teacher's add block menu. It is also the title that is printed when the block is displayed on screen, although blocks can specifically change this title to something else if they wish (see below). The variable is expected to have a valid value after the framework calls the init method for each object.

        - -

        In the case of blocks which may want to configure their title dynamically through instance configuration, it is still essential to provide a valid title inside init. This title may then be overridden when the specialization method is called by the framework:

        - -
        -function specialization() {
        -    // At this point, $this->instance and $this->config are available
        -    // for use. We can now change the title to whatever we want.
        -    $this->title = $this->config->variable_holding_the_title;
        -}
        - -
      • - -
      • - -
        $this->version
        - -

        This variable should hold each block's version number in the form YYYYMMDDXX, as per the convention throughout Moodle. The version number is used by Moodle to detect when a block has been upgraded and it consequently needs to run the block's upgrade code to bring the "old" version of the block's data up to date. The variable is expected to have a valid value after the framework calls the init method for each block.

        - -

        Most blocks do not keep complex data of their own in the database the way that modules do, so in most cases nothing actually happens during a block version upgrade. However, the version number is displayed in the administration interface for blocks. It is good practice therefore to change your block's version number when it gains new functionality or receives important bug fixes, to enable site administrators to easily identify the exact version of the block they are working with.

        - -
      • - -
      - -

      Appearing throughout the code related to the Blocks API, there is a number of predefined constants that are utilized to avoid the use of "magic numbers" in the code. These constants are:

      - -

      Named constants:

      - -
        -
      • - -
        BLOCK_TYPE_LIST
        - -

        This is one of the two valid values for the $this->content_type member variable of every block. Its value specifies the exact requirements that Moodle will then have for $this->content.

        - -
      • - -
      • - -
        BLOCK_TYPE_TEXT
        - -

        This is one of the two valid values for the $this->content_type member variable of every block. Its value specifies the exact requirements that Moodle will then have for $this->content.

        - -
      • -
      - -

      Appendix B: Differences in the Blocks API for Moodle versions prior to 1.5

      - -

      This Appendix will discuss what changes in the Blocks API were introduced by Moodle 1.5 and what steps developers need to take to update their blocks to be fully compatible with Moodle 1.5. Unfortunately, with these changes backward compatibility is broken; this means that blocks from Moodle 1.4 will never work with 1.5 and vice versa.

      - -
        - -
      1. - -

        Class naming conventions changed

        - -

        In Moodle 1.4, all block classes were required to have a name like CourseBlock_something and the base class from which the derived was MoodleBlock. This has changed in Moodle 1.5, to bring the naming conventions in line with other object-oriented aspects of Moodle (for example there are classes enrolment_base, resource_base etc). The new block classes should instead be named like block_something and derive from block_base. This means that in order to make a block compatible with Moodle 1.5, you need to change the class definition

        - -
        -class CourseBlock_online_users extends MoodleBlock { ... }
        -
        - -

        to

        - -
        -class block_online_users extends block_base { ... }
        -
        - -
      2. - -
      3. - -

        Constructor versus init()

        - -

        In Moodle 1.4, in each block class it was mandatory to define a constructor which accepted a course data record as an argument (the example is from the actual Online Users block):

        - -
        -    function CourseBlock_online_users ($course) {
        -        $this->title = get_string('blockname','block_online_users');
        -        $this->content_type = BLOCK_TYPE_TEXT;
        -        $this->course = $course;
        -        $this->version = 2004052700;
        -    }
        -
        - -

        In contrast, Moodle 1.5 does away with the constructor and instead requires you to define an init() method that takes no arguments:

        - -
        -    function init() {
        -        $this->title = get_string('blockname','block_online_users');
        -        $this->content_type = BLOCK_TYPE_TEXT;
        -        $this->version = 2004111600;
        -    }
        -
        - -

        Of course, this leaves you without access to the $course object, which you might actually need. Since that's probably going to be needed inside get_content, the way to retrieve it is by using this code:

        - -
        -    $course = get_record('course', 'id', $this->instance->pageid);
        -
        - -

        If you are going to need access to $course from inside other methods in addition to get_content, you might fetch the $course object inside the specialization method and save it as a class variable for later use, in order to avoid executing the same query multiple times:

        - -
        -    function specialization() {
        -        $this->course = get_record('course', 'id', $this->instance->pageid);
        -    }
        -
        - -
      4. - -
      5. - -

        Blocks with configuration

        - -

        In Moodle 1.4, blocks could only have what are now (in Moodle 1.5) called "global configuration" options, to differentiate from the new "instance configuration" options. If your block has support for configuration, you will need to take these steps:

        - -
          -
        1. Rename your config.html file to config_global.html.
        2. -
        3. Edit the newly renamed file and completely remove the <form> tag (Moodle now wraps your configuration in a form automatically).
        4. -
        5. If you are using any HTML <input> tags other than those that directly affect your configuration (for example, "sesskey"), REMOVE those too (Moodle will add them automatically as required).
        6. -
        7. If you have overridden print_config, rename your method to config_print.
        8. -
        9. If you have overridden handle_config, rename your method to config_save.
        10. -
        - -
      6. - -
      7. - -

        Blocks with customized applicable formats

        - -

        The correct way to specify the formats you want to allow or disallow your block to exist has been reworked for Moodle 1.5 to take account of the fact that blocks are no longer restricted to just courses. To have a block retain its intended behavior, you must change these format names (array keys in the return value of applicable_formats) if they are used in your block: - -

          -
        • social should become course-view-social
        • -
        • topics should become course-view-topics
        • -
        • weeks should become course-view-weeks
        • -
        - -

        - -

        You should also keep in mind that there is now the possibility of blocks being displayed in other pages too, like the introductory page that users see when they enter an activity module. You might therefore need to make the specification for applicable formats more restrictive to keep your block out of pages it is not supposed to be shown in. Also, there are subtle changes to the way that the final decision to allow or disallow a block is made. For the technical details refer to the definition of applicable_formats, and for a more extended example read the section dedicated to this subject. - -

        That's everything; your block will now be ready for use in Moodle 1.5!

        - - -
      8. - -
      - - - - \ No newline at end of file diff --git a/blocks/README.txt b/blocks/README.txt new file mode 100644 index 00000000000..6a848082d18 --- /dev/null +++ b/blocks/README.txt @@ -0,0 +1,53 @@ +------------------------------------------------------------------------------- +CREATING NEW BLOCKS +------------------------------------------------------------------------------- + +------------------------------------------------------------------------------- +WARNING - PRELIMINARY DOCUMENTATION +This is designed to point new block developers in the right direction. At times +it may NOT be fully up-to-date with the source, or it may even contain some +tiny bit of misinformation that has slipped our notice. If you encounter such a +case, please: + 1. Use the existing block code as reference + 2. Come to the moodle.org forums and tell the world! :) We 'll help you! +------------------------------------------------------------------------------- + +You have to derive a class that extends MoodleBlock. + +The derived class MUST: + + * Implement a constructor that: + 1. Sets $this->content_type (BLOCK_TYPE_LIST or BLOCK_TYPE_TEXT) + 3. Sets $this->title + 4. Sets $this->version + 5. Sets $this->course equal to its only argument + +The derived class MAY: + + * Declare that the block has a configuration interface. + To do so: + + 1. Define a method has_config() {return true;} + 2. Define a method print_config() that prints whatever + configuration interface you want to have. + 3. Define a method handle_config($data) that does what + is needed. $data comes straight from data_submitted(). + + * Limit the course formats it can be displayed in. + To do so: + + 1. Define a method applicable_formats() which returns a bitwise + OR of one or more COURSE_FORMAT_XXX defined constants. These + are defined in lib/blocklib.php. + + * Select a "preferred" width which the course format will try to honor. + To do so: + + 1. Define a method preferred_width() which returns an integer. + This is the block's preferred width in pixels. + + * Declare that the block is going to hide its header. This will result + in a more lightweight appearance. Ideal for announcements/notices. + To do so: + + 1. Define a method hide_header() {return true;} diff --git a/blocks/activity_modules/block_activity_modules.php b/blocks/activity_modules/block_activity_modules.php index 89baf13f8da..70a900c3a0f 100644 --- a/blocks/activity_modules/block_activity_modules.php +++ b/blocks/activity_modules/block_activity_modules.php @@ -1,8 +1,10 @@ title = get_string('activities'); + $this->content_type = BLOCK_TYPE_LIST; + $this->course = $course; $this->version = 2004041000; } @@ -16,7 +18,7 @@ class block_activity_modules extends block_list { return $this->content; } - $this->content = new stdClass; + $this->content = New object; $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; @@ -24,8 +26,8 @@ class block_activity_modules extends block_list { if ($modnamesused) { foreach ($modnamesused as $modname => $modfullname) { if ($modname != 'label') { - $this->content->items[] = ''.$modnamesplural[$modname].''; - $this->content->icons[] = ''; + $this->content->items[] = ''.$modnamesplural[$modname].''; + $this->content->icons[] = ''; } } } diff --git a/blocks/admin/block_admin.php b/blocks/admin/block_admin.php index c57b1540b58..13a7b543b87 100644 --- a/blocks/admin/block_admin.php +++ b/blocks/admin/block_admin.php @@ -1,8 +1,10 @@ -title = get_string('administration'); + $this->content_type = BLOCK_TYPE_LIST; + $this->course = $course; $this->version = 2004081200; } @@ -12,14 +14,14 @@ class block_admin extends block_list { return $this->content; } - $this->content = new stdClass; + $this->content = New object; $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; - if (empty($this->instance)) { + if (empty($this->course)) { $this->content = ''; - } else if ($this->instance->pageid == SITEID) { + } else if ($this->course->category == 0) { $this->load_content_for_site(); } else { $this->load_content_for_course(); @@ -30,7 +32,7 @@ class block_admin extends block_list { function load_content_for_site() { - global $CFG, $USER; + global $CFG; if (isadmin()) { $this->content->items[] = ''.get_string('configuration').'...'; @@ -38,24 +40,18 @@ class block_admin extends block_list { $this->content->items[] = ''.get_string('users').'...'; $this->content->icons[] = ''; - - $this->content->items[]=''.get_string('backup').'...'; - $this->content->icons[]=''; - - $this->content->items[]=''.get_string('restore').'...'; - $this->content->icons[]=''; } if (iscreator()) { - $this->content->items[] = ''.get_string('courses').''; + $this->content->items[] = ''.get_string('courses').''; $this->content->icons[] = ''; } if (isadmin()) { - $this->content->items[] = ''.get_string('logs').''; + $this->content->items[] = ''.get_string('logs').''; $this->content->icons[] = ''; - $this->content->items[] = ''.get_string('sitefiles').''; + $this->content->items[] = ''.get_string('sitefiles').''; $this->content->icons[] = ''; if (file_exists($CFG->dirroot.'/'.$CFG->admin.'/'.$CFG->dbtype)) { @@ -75,94 +71,82 @@ class block_admin extends block_list { return $this->content; } - $course = get_record('course', 'id', $this->instance->pageid); + if (isteacher($this->course->id)) { - if (isteacher($this->instance->pageid)) { - - $isteacheredit = isteacheredit($this->instance->pageid); + $isteacheredit = isteacheredit($this->course->id); if ($isteacheredit) { - $this->content->icons[]=''; - if (isediting($this->instance->pageid)) { - $this->content->items[]=''.get_string('turneditingoff').''; + $this->content->icons[]=''; + if (isediting($this->course->id)) { + $this->content->items[]=''.get_string('turneditingoff').''; } else { - $this->content->items[]=''.get_string('turneditingon').''; + $this->content->items[]=''.get_string('turneditingon').''; } - - $this->content->items[]=''.get_string('settings').'...'; - $this->content->icons[]=''; + $this->content->items[]=''.get_string('settings').'...'; + $this->content->icons[]=''; - if (iscreator() || !empty($CFG->teacherassignteachers)) { - if (!$course->teachers) { - $course->teachers = get_string('defaultcourseteachers'); + if (iscreator() or !empty($CFG->teacherassignteachers)) { + if (!$this->course->teachers) { + $this->course->teachers = get_string('defaultcourseteachers'); } - $this->content->items[]=''.$course->teachers.'...'; - $this->content->icons[]=''; - } - - if (!$course->students) { - $course->students = get_string('defaultcoursestudents'); - } - if (!$course->metacourse) { - $this->content->items[]=''.$course->students.'...'; - $this->content->icons[]=''; - } - else { - $this->content->items[]=''.$course->students.'...'; + $this->content->items[]=''.$this->course->teachers.'...'; $this->content->icons[]=''; } - $this->content->items[]=''.get_string('backup').'...'; - $this->content->icons[]=''; - $this->content->items[]=''.get_string('restore').'...'; - $this->content->icons[]=''; + if (!$this->course->students) { + $this->course->students = get_string('defaultcoursestudents'); + } + $this->content->items[]=''.$this->course->students.'...'; + $this->content->icons[]=''; - $this->content->items[]=''.get_string('importdata').''; - $this->content->icons[]=''; + $this->content->items[]=''.get_string('backup').'...'; + $this->content->icons[]=''; - $this->content->items[]=''.get_string('scales').'...'; - $this->content->icons[]=''; + $this->content->items[]=''.get_string('restore').'...'; + $this->content->icons[]=''; + $this->content->items[]=''.get_string('scales').'...'; + $this->content->icons[]=''; } - $this->content->items[]=''.get_string('grades').'...'; - $this->content->icons[]=''; + $this->content->items[]=''.get_string('grades').'...'; + $this->content->icons[]=''; - $this->content->items[]=''.get_string('logs').'...'; - $this->content->icons[]=''; + $this->content->items[]=''.get_string('logs').'...'; + $this->content->icons[]=''; if ($isteacheredit) { - $this->content->items[]=''.get_string('files').'...'; - $this->content->icons[]=''; + $this->content->items[]=''.get_string('files').'...'; + $this->content->icons[]=''; } - $this->content->items[]=''.get_string('help').'...'; - $this->content->icons[]=''; + $this->content->items[]=''.get_string('help').'...'; + $this->content->icons[]=''; - if ($teacherforum = forum_get_course_forum($this->instance->pageid, 'teacher')) { + if ($teacherforum = forum_get_course_forum($this->course->id, 'teacher')) { $this->content->items[]=''.get_string('nameteacher', 'forum').''; - $this->content->icons[]=''; + $this->content->icons[]=''; } } else if (!isguest()) { // Students menu - if ($course->showgrades) { - $this->content->items[]=''.get_string('grades').'...'; - $this->content->icons[]=''; + if ($this->course->showgrades) { + $this->content->items[]=''.get_string('grades').'...'; + $this->content->icons[]=''; } - if ($course->showreports) { - $this->content->items[]=''.get_string('activityreport').'...'; - $this->content->icons[]=''; + if ($this->course->showreports) { + $this->content->items[]=''.get_string('activityreport').'...'; + $this->content->icons[]=''; } if (is_internal_auth()) { - $this->content->items[]=''.get_string('changepassword').'...'; - $this->content->icons[]=''; + $this->content->items[]=''.get_string('changepassword').'...'; + $this->content->icons[]=''; } else if ($CFG->changepassword) { $this->content->items[]=''.get_string('changepassword').'...'; - $this->content->icons[]=''; + $this->content->icons[]=''; } if ($CFG->allowunenroll) { - $this->content->items[]=''.get_string('unenrolme', '', $course->shortname).'...'; - $this->content->icons[]=''; + $this->content->items[]=''.get_string('unenrolme', '', $this->course->shortname).'...'; + $this->content->icons[]=''; } } } diff --git a/blocks/admin/styles.php b/blocks/admin/styles.php deleted file mode 100644 index 20de2f1fc89..00000000000 --- a/blocks/admin/styles.php +++ /dev/null @@ -1,4 +0,0 @@ -.block_adminblock .content { - text-align: center; - padding: 10px; -} diff --git a/blocks/calendar_month/block_calendar_month.php b/blocks/calendar_month/block_calendar_month.php index 1d859832898..aa04c241e96 100644 --- a/blocks/calendar_month/block_calendar_month.php +++ b/blocks/calendar_month/block_calendar_month.php @@ -1,48 +1,34 @@ title = get_string('calendar', 'calendar'); + $this->content_type = BLOCK_TYPE_TEXT; + $this->course = $course; $this->version = 2004081200; } - function preferred_width() { - return 200; - } - function get_content() { global $USER, $CFG, $SESSION; optional_variable($_GET['cal_m']); optional_variable($_GET['cal_y']); require_once($CFG->dirroot.'/calendar/lib.php'); - + if ($this->content !== NULL) { return $this->content; } - $this->content = new stdClass; + $this->content = New object; $this->content->text = ''; $this->content->footer = ''; - if (empty($this->instance)) { // Overrides: use no course at all - + if (empty($this->course)) { // Overrides: use no course at all $courseshown = false; $filtercourse = array(); - } else { - - $courseshown = $this->instance->pageid; - - if($courseshown == SITEID) { - // Being displayed at site level. This will cause the filter to fall back to auto-detecting - // the list of courses it will be grabbing events from. - $filtercourse = NULL; - } - else { - // Forcibly filter events to include only those from the particular course we are in. - $filtercourse = array($courseshown => 1); - } + $courseshown = $this->course->id; + $filtercourse = array($courseshown => 1); } // We 'll need this later @@ -50,22 +36,22 @@ class block_calendar_month extends block_base { // Be VERY careful with the format for default courses arguments! // Correct formatting is [courseid] => 1 to be concise with moodlelib.php functions. + calendar_set_filters($courses, $group, $user, $filtercourse, $filtercourse); - if ($courseshown == SITEID) { + + if ($courseshown == 1) { // For the front page $this->content->text .= calendar_overlib_html(); $this->content->text .= calendar_top_controls('frontpage', array('m' => $_GET['cal_m'], 'y' => $_GET['cal_y'])); $this->content->text .= calendar_get_mini($courses, $group, $user, $_GET['cal_m'], $_GET['cal_y']); // No filters for now - } elseif (!empty($courseshown)) { + } else { // For any other course $this->content->text .= calendar_overlib_html(); $this->content->text .= calendar_top_controls('course', array('id' => $courseshown, 'm' => $_GET['cal_m'], 'y' => $_GET['cal_y'])); $this->content->text .= calendar_get_mini($courses, $group, $user, $_GET['cal_m'], $_GET['cal_y']); - $course = get_record('course', 'id', $this->instance->pageid); - $this->content->text .= '
      '.calendar_filter_controls('course', '', $course).'
      '; - + $this->content->text .= calendar_filter_controls('course', '', $this->course); } return $this->content; diff --git a/blocks/calendar_month/styles.php b/blocks/calendar_month/styles.php deleted file mode 100644 index 9ae6d96e69f..00000000000 --- a/blocks/calendar_month/styles.php +++ /dev/null @@ -1,23 +0,0 @@ -.block_calendar_month .cal_popup_caption, -.block_calendar_month .cal_popup_fg div { - font-size: 0.85em !important; -} - -.block_calendar_month .filters { - font-size:0.75em; - padding: 5px; -} - -.block_calendar_month .filters table { - border-collapse:separate; - border-spacing: 2px; - padding: 2px; -} - -.block_calendar_month .event_global, -.block_calendar_month .event_course, -.block_calendar_month .event_group, -.block_calendar_month .event_user { - border-width: 2px; - border-style: solid; -} diff --git a/blocks/calendar_upcoming/block_calendar_upcoming.php b/blocks/calendar_upcoming/block_calendar_upcoming.php index a120ccc0f9b..07ca412105c 100644 --- a/blocks/calendar_upcoming/block_calendar_upcoming.php +++ b/blocks/calendar_upcoming/block_calendar_upcoming.php @@ -1,8 +1,10 @@ title = get_string('upcomingevents', 'calendar'); + $this->content_type = BLOCK_TYPE_TEXT; + $this->course = $course; $this->version = 2004052600; } @@ -17,33 +19,22 @@ class block_calendar_upcoming extends block_base { return $this->content; } - $this->content = new stdClass; + $this->content = New object; $this->content->text = ''; - if (empty($this->instance)) { // Overrides: use no course at all - + if (empty($this->course)) { // Overrides: use no course at all $courseshown = false; $filtercourse = array(); $this->content->footer = ''; - } else { - - $courseshown = $this->instance->pageid; + $courseshown = $this->course->id; + $filtercourse = array($courseshown => 1); $this->content->footer = '
      '. + '/calendar/view.php?view=upcoming&course='.$this->course->id.'">'. get_string('gotocalendar', 'calendar').'...'; $this->content->footer .= '
      '. + '/calendar/event.php?action=new&course='.$this->course->id.'">'. get_string('newevent', 'calendar').'...'; - - if ($courseshown == SITEID) { - // Being displayed at site level. This will cause the filter to fall back to auto-detecting - // the list of courses it will be grabbing events from. - $filtercourse = NULL; - } else { - // Forcibly filter events to include only those from the particular course we are in. - $filtercourse = array($courseshown => 1); - } } // We 'll need this later @@ -53,18 +44,11 @@ class block_calendar_upcoming extends block_base { // Correct formatting is [courseid] => 1 to be concise with moodlelib.php functions. calendar_set_filters($courses, $group, $user, $filtercourse, $filtercourse, false); - $events = calendar_get_upcoming($courses, $group, $user, - get_user_preferences('calendar_lookahead', CALENDAR_UPCOMING_DAYS), - get_user_preferences('calendar_maxevents', CALENDAR_UPCOMING_MAXEVENTS)); - if (!empty($this->instance)) { - $this->content->text = calendar_get_sideblock_upcoming($events, - 'view.php?view=day&course='.$courseshown.'&'); - } + $this->content->text = calendar_get_sideblock_upcoming($courses, $group, $user, get_user_preferences('calendar_lookahead', CALENDAR_UPCOMING_DAYS), get_user_preferences('calendar_maxevents', CALENDAR_UPCOMING_MAXEVENTS)); - if (empty($this->content->text)) { - $this->content->text = '
      '. - get_string('noupcomingevents', 'calendar').'
      '; + if(empty($this->content->text)) { + $this->content->text = '
      '.get_string('noupcomingevents', 'calendar').'
      '; } return $this->content; diff --git a/blocks/calendar_upcoming/styles.php b/blocks/calendar_upcoming/styles.php deleted file mode 100644 index 48b0d560f5b..00000000000 --- a/blocks/calendar_upcoming/styles.php +++ /dev/null @@ -1,4 +0,0 @@ -.block_calendar_upcoming .event .date { - text-align:right; - font-size:0.8em; -} diff --git a/blocks/course_list/block_course_list.php b/blocks/course_list/block_course_list.php index 3b2faff9885..f25b7f8a564 100644 --- a/blocks/course_list/block_course_list.php +++ b/blocks/course_list/block_course_list.php @@ -1,15 +1,32 @@ title = get_string('courses'); - $this->version = 2004111600; + $this->content_type = BLOCK_TYPE_LIST; + $this->course = $course; + $this->version = 2004081200; } function has_config() { return true; } + function print_config() { + global $CFG, $THEME; + print_simple_box_start('center', '', $THEME->cellheading); + include($CFG->dirroot.'/blocks/'.$this->name().'/config.html'); + print_simple_box_end(); + return true; + } + + function handle_config($config) { + foreach ($config as $name => $value) { + set_config($name, $value); + } + return true; + } + function get_content() { global $THEME, $CFG, $USER; @@ -17,14 +34,19 @@ class block_course_list extends block_list { return $this->content; } - $this->content = new stdClass; + $this->content = New object; $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; - $icon = "pixpath/i/course.gif\"". - " height=\"16\" width=\"16\" alt=\"".get_string("course")."\" />"; - + if (empty($THEME->custompix)) { + $icon = "wwwroot/pix/i/course.gif\"". + " height=\"16\" width=\"16\" alt=\"".get_string("course")."\">"; + } else { + $icon = "wwwroot/theme/$CFG->theme/pix/i/course.gif\"". + " height=\"16\" width=\"16\" alt=\"".get_string("course")."\">"; + } + $adminseesall = true; if (isset($CFG->block_course_list_adminview)) { if ( $CFG->block_course_list_adminview == 'own'){ @@ -35,7 +57,7 @@ class block_course_list extends block_list { if (isset($USER->id) and !(isadmin() and $adminseesall)) { // Just print My Courses if ($courses = get_my_courses($USER->id)) { foreach ($courses as $course) { - if ($course->id == SITEID) { + if (!$course->category) { continue; } $linkcss = $course->visible ? "" : " class=\"dimmed\" "; @@ -77,9 +99,7 @@ class block_course_list extends block_list { } else { $this->content->items = array(); $this->content->icons = array(); - $this->content->footer = get_string('nocoursesyet').'

      '. - ''. - get_string("addnewcourse").'...'; + $this->content->footer = get_string('nocoursesyet'); } $this->title = get_string('courses'); } diff --git a/blocks/course_list/config_global.html b/blocks/course_list/config.html similarity index 88% rename from blocks/course_list/config_global.html rename to blocks/course_list/config.html index 9f0c786dc58..a9aa62babef 100644 --- a/blocks/course_list/config_global.html +++ b/blocks/course_list/config.html @@ -1,6 +1,8 @@ +
      + - + + ">
      block_course_list_adminview:

      block_course_list_adminview:

      - " />
      + +
      diff --git a/blocks/course_summary/block_course_summary.php b/blocks/course_summary/block_course_summary.php index 1ba126e3f6f..a65774c329f 100644 --- a/blocks/course_summary/block_course_summary.php +++ b/blocks/course_summary/block_course_summary.php @@ -1,15 +1,15 @@ title = get_string('pagedescription', 'block_course_summary'); - $this->version = 2004052600; - } - - function specialization() { - if($this->instance->pagetype == PAGE_COURSE_VIEW && $this->instance->pageid != SITEID) { - $this->title = get_string('coursesummary', 'block_course_summary'); +class CourseBlock_course_summary extends MoodleBlock { + function CourseBlock_course_summary ($course) { + if (empty($course->category)) { // Site level + $this->title = get_string('frontpagedescription'); + } else { + $this->title = get_string('blockname','block_course_summary'); } + $this->content_type = BLOCK_TYPE_TEXT; + $this->course = $course; + $this->version = 2004052600; } function get_content() { @@ -19,22 +19,19 @@ class block_course_summary extends block_base { return $this->content; } - if (empty($this->instance)) { + if (empty($this->course)) { return ''; } - $course = get_record('course', 'id', $this->instance->pageid); - $this->content = New stdClass; - $options->noclean = true; // Don't clean Javascripts etc - $this->content->text = format_text($course->summary, FORMAT_HTML, $options); - if(isediting($this->instance->pageid)) { - if($this->instance->pageid == SITEID) { - $editpage = $CFG->wwwroot.'/'.$CFG->admin.'/site.php'; + $this->content->text = format_text($this->course->summary, FORMAT_HTML); + if (isediting($this->course->id)) { + if (empty($this->course->category)) { + $editpage = $CFG->wwwroot.'/admin/site.php'; } else { - $editpage = $CFG->wwwroot.'/course/edit.php?id='.$this->instance->pageid; + $editpage = $CFG->wwwroot.'/course/edit.php?id='.$this->course->id; } - $this->content->text .= ""; + $this->content->text .= ""; } $this->content->footer = ''; diff --git a/blocks/course_summary/styles.php b/blocks/course_summary/styles.php deleted file mode 100644 index 46bac343241..00000000000 --- a/blocks/course_summary/styles.php +++ /dev/null @@ -1,3 +0,0 @@ -.block_course_summary .content { - padding:10px; -} diff --git a/blocks/db/mysql.php b/blocks/db/mysql.php index f78b02e7b18..fff5cb2ae9b 100644 --- a/blocks/db/mysql.php +++ b/blocks/db/mysql.php @@ -24,7 +24,7 @@ global $CFG; $result = true; - if ($oldversion < 2004041000 && $result) { + if ($oldversion < 2004041000 and $result) { $result = execute_sql("CREATE TABLE `{$CFG->prefix}blocks` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(40) NOT NULL default '', @@ -37,99 +37,6 @@ global $CFG; COMMENT = 'To register and update all the available blocks'"); } - if ($oldversion < 2004101900 && $result) { - $result = execute_sql("CREATE TABLE `{$CFG->prefix}block` ( - `id` int(10) unsigned NOT NULL auto_increment, - `name` varchar(40) NOT NULL default '', - `version` int(10) NOT NULL default '0', - `cron` int(10) unsigned NOT NULL default '0', - `lastcron` int(10) unsigned NOT NULL default '0', - `visible` tinyint(1) NOT NULL default '1', - `multiple` tinyint(1) NOT NULL default '0', - PRIMARY KEY (`id`) - ) - COMMENT = 'To register and update all the available blocks'"); - - if(!$result) { - return false; - } - - $records = get_records('blocks'); - if(!empty($records)) { - foreach($records as $block) { - $block->multiple = 0; - insert_record('block', $block); - } - } - - execute_sql("DROP TABLE `{$CFG->prefix}blocks`"); - - $result = execute_sql("CREATE TABLE `{$CFG->prefix}block_instance` ( - `id` int(10) not null auto_increment, - `blockid` int(10) not null default '0', - `pageid` int(10) not null default '0', - `pagetype` varchar(12) not null default '', - `position` enum('l', 'r') not null, - `weight` tinyint(3) not null default '0', - `visible` tinyint(1) not null default '0', - `configdata` text not null default '', - - PRIMARY KEY(`id`), - INDEX pageid(`pageid`) - )"); - - if(!$result) { - return false; - } - - $records = get_records('course'); - if(!empty($records)) { - foreach($records as $thiscourse) { - // The @ suppresses a notice emitted if there is no : in the string - @list($left, $right) = split(':', $thiscourse->blockinfo); - if(!empty($left)) { - $arr = explode(',', $left); - foreach($arr as $weight => $blk) { - $instance = new stdClass; - $instance->blockid = abs($blk); - $instance->pageid = $thiscourse->id; - $instance->pagetype = PAGE_COURSE_VIEW; - $instance->position = BLOCK_POS_LEFT; - $instance->weight = $weight; - $instance->visible = ($blk > 0) ? 1 : 0; - $instance->configdata = ''; - insert_record('block_instance', $instance); - } - } - if(!empty($right)) { - $arr = explode(',', $right); - foreach($arr as $weight => $blk) { - $instance = new stdClass; - $instance->blockid = abs($blk); - $instance->pageid = $thiscourse->id; - $instance->pagetype = PAGE_COURSE_VIEW; - $instance->position = BLOCK_POS_RIGHT; - $instance->weight = $weight; - $instance->visible = ($blk > 0) ? 1 : 0; - $instance->configdata = ''; - insert_record('block_instance', $instance); - } - } - } - } - - execute_sql("ALTER TABLE `{$CFG->prefix}course` DROP COLUMN blockinfo"); - } - - if ($oldversion < 2004112900 && $result) { - $result = $result && table_column('block_instance', 'pagetype', 'pagetype', 'varchar', '20', ''); - $result = $result && table_column('block_instance', 'position', 'position', 'varchar', '10', ''); - } - - if ($oldversion < 2004112900 && $result) { - execute_sql('UPDATE '.$CFG->prefix.'block_instance SET pagetype = \''.PAGE_COURSE_VIEW.'\' WHERE pagetype = \'\''); - } - //Finally, return result return $result; } diff --git a/blocks/db/mysql.sql b/blocks/db/mysql.sql index 6dfae52caba..36f2bde8c1f 100644 --- a/blocks/db/mysql.sql +++ b/blocks/db/mysql.sql @@ -3,27 +3,13 @@ # Table structure for table `blocks` # -CREATE TABLE `prefix_block` ( +CREATE TABLE `prefix_blocks` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(40) NOT NULL default '', `version` int(10) NOT NULL default '0', `cron` int(10) unsigned NOT NULL default '0', `lastcron` int(10) unsigned NOT NULL default '0', `visible` tinyint(1) NOT NULL default '1', - `multiple` tinyint(1) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; - -CREATE TABLE `prefix_block_instance` ( - `id` int(10) not null auto_increment, - `blockid` int(10) not null default '0', - `pageid` int(10) not null default '0', - `pagetype` varchar(20) not null default '', - `position` varchar(10) not null default '', - `weight` tinyint(3) not null default '0', - `visible` tinyint(1) not null default '0', - `configdata` text not null default '', - PRIMARY KEY(`id`), - INDEX pageid(`pageid`) -) TYPE=MyISAM; # -------------------------------------------------------- diff --git a/blocks/db/postgres7.php b/blocks/db/postgres7.php index f399aee7daa..ecfa8e68156 100644 --- a/blocks/db/postgres7.php +++ b/blocks/db/postgres7.php @@ -39,92 +39,6 @@ global $CFG; } - if ($oldversion < 2004101900 && $result) { - $result = execute_sql("CREATE TABLE {$CFG->prefix}block ( - id SERIAL8 PRIMARY KEY, - name varchar(40) NOT NULL default '', - version INT8 NOT NULL default '0', - cron INT8 NOT NULL default '0', - lastcron INT8 NOT NULL default '0', - visible int NOT NULL default '1', - multiple int NOT NULL default '0' - ) - "); - - if(!$result) { - return false; - } - - $records = get_records('blocks'); - if(!empty($records)) { - foreach($records as $block) { - $block->multiple = 0; - unset($block->id); - insert_record('block', $block); - } - } - - execute_sql("DROP TABLE {$CFG->prefix}blocks"); - - $result = execute_sql("CREATE TABLE {$CFG->prefix}block_instance ( - id SERIAL8 PRIMARY KEY, - blockid INT8 not null default '0', - pageid INT8 not null default '0', - pagetype varchar(12) not null default '', - position char not null check (position in ('l', 'r')) , - weight int not null default '0', - visible int not null default '0', - configdata text not null default '' - )"); - - if(!$result) { - return false; - } - - $records = get_records('course'); - if(!empty($records)) { - foreach($records as $thiscourse) { - // The @ suppresses a notice emitted if there is no : in the string - @list($left, $right) = split(':', $thiscourse->blockinfo); - if(!empty($left)) { - $arr = explode(',', $left); - foreach($arr as $weight => $blk) { - $instance = new stdClass; - $instance->blockid = abs($blk); - $instance->pageid = $thiscourse->id; - $instance->pagetype = PAGE_COURSE_VIEW; - $instance->position = BLOCK_POS_LEFT; - $instance->weight = $weight; - $instance->visible = ($blk > 0) ? 1 : 0; - $instance->configdata = ''; - insert_record('block_instance', $instance); - } - } - if(!empty($right)) { - $arr = explode(',', $right); - foreach($arr as $weight => $blk) { - $instance = new stdClass; - $instance->blockid = abs($blk); - $instance->pageid = $thiscourse->id; - $instance->pagetype = PAGE_COURSE_VIEW; - $instance->position = BLOCK_POS_RIGHT; - $instance->weight = $weight; - $instance->visible = ($blk > 0) ? 1 : 0; - $instance->configdata = ''; - insert_record('block_instance', $instance); - } - } - } - } - - execute_sql("ALTER TABLE {$CFG->prefix}course DROP COLUMN blockinfo"); - } - - if ($oldversion < 2004112900 && $result) { - $result = $result && table_column('block_instance', 'pagetype', 'pagetype', 'varchar', '20', ''); - $result = $result && table_column('block_instance', 'position', 'position', 'varchar', '10', ''); - } - //Finally, return result return $result; } diff --git a/blocks/db/postgres7.sql b/blocks/db/postgres7.sql index 53598786edd..eccdc73f06c 100644 --- a/blocks/db/postgres7.sql +++ b/blocks/db/postgres7.sql @@ -3,25 +3,12 @@ # Table structure for table blocks # -CREATE TABLE prefix_block ( +CREATE TABLE prefix_blocks ( id SERIAL8 PRIMARY KEY, name varchar(40) NOT NULL default '', version INT8 NOT NULL default '0', cron INT8 NOT NULL default '0', lastcron INT8 NOT NULL default '0', - visible int NOT NULL default '1', - multiple int NOT NULL default '1' + visible int NOT NULL default '1' ) ; - -CREATE TABLE prefix_block_instance ( - id SERIAL8 PRIMARY KEY, - blockid INT8 not null default '0', - pageid INT8 not null default '0', - pagetype varchar(20) not null default '', - position varchar(10) not null default '', - weight int not null default '0', - visible int not null default '0', - configdata text not null default '' -) ; - # -------------------------------------------------------- diff --git a/blocks/glossary_random/block_glossary_random.php b/blocks/glossary_random/block_glossary_random.php deleted file mode 100644 index c362cf15aa6..00000000000 --- a/blocks/glossary_random/block_glossary_random.php +++ /dev/null @@ -1,198 +0,0 @@ -title = get_string('blockname','block_glossary_random'); - $this->version = 2005040500; - - } - - function specialization() { - global $CFG; - $this->course = get_record('course', 'id', $this->instance->pageid); - - // load userdefined title and make sure it's never empty - if (empty($this->config->title)) { - $this->title = get_string('blockname','block_glossary_random'); - } else { - $this->title = $this->config->title; - } - - if (empty($this->config->glossary)) { - return false; - } - - if (!isset($this->config->nexttime)) { - $this->config->nexttime = 0; - } - - //check if it's time to put a new entry in cache - if (time() > $this->config->nexttime) { - - // place glossary concept and definition in $pref->cache - if (!$numberofentries = count_records('glossary_entries','glossaryid',$this->config->glossary, - 'approved',1)) { - $this->config->cache = get_string('noentriesyet','block_glossary_random'); - $this->instance_config_commit(); - } - - switch ($this->config->type) { - - case BGR_RANDOMLY: - $i = rand(1,$numberofentries); - $LIMIT = sql_paging_limit($i-1, 1); - $SORT = 'ASC'; - break; - - case BGR_NEXTONE: - if (isset($this->config->previous)) { - $i = $this->config->previous + 1; - } else { - $i = 1; - } - if ($i > $numberofentries) { // Loop back to beginning - $i = 1; - } - $LIMIT = sql_paging_limit($i-1, 1); - $SORT = 'ASC'; - break; - - default: // BGR_LASTMODIFIED - $i = $numberofentries; - $LIMIT = 'LIMIT 1'; // The last one - $SORT = 'DESC'; - break; - } - - if ($entry = get_record_sql(' SELECT concept, definition, format '. - ' FROM '.$CFG->prefix.'glossary_entries'. - ' WHERE glossaryid = '.$this->config->glossary. - ' AND approved = 1 '. - 'ORDER BY timemodified '.$SORT.' '.$LIMIT)) { - - if (empty($this->config->showconcept)) { - $text = ''; - } else { - $text = "

      $entry->concept

      "; - } - $text .= format_text($entry->definition, $entry->format); - - $this->config->nexttime = usergetmidnight(time()) + DAYSECS * $this->config->refresh; - $this->config->previous = $i; - - } else { - $text = get_string('noentriesyet','block_glossary_random'); - } - // store the text - $this->config->cache = $text; - $this->instance_config_commit(); - } - } - - function instance_allow_multiple() { - // Are you going to allow multiple instances of each block? - // If yes, then it is assumed that the block WILL USE per-instance configuration - return true; - } - - function instance_config_print() { - global $CFG; - - if (!isset($this->config)) { - // ... teacher has not yet configured the block, let's put some default values here to explain things - $this->config->title = get_string('blockname','block_glossary_random'); - $this->config->refresh = 0; - $this->config->showconcept = 1; - $this->config->cache= get_string('notyetconfigured','block_glossary_random'); - $this->config->addentry=get_string('addentry', 'block_glossary_random'); - $this->config->viewglossary=get_string('viewglossary', 'block_glossary_random'); - $this->config->invisible=get_string('invisible', 'block_glossary_random'); - } - - // select glossaries to put in dropdown box ... - $glossaries = get_records_select_menu('glossary', 'course='.$this->course->id,'name','id,name'); - - // and select quotetypes to put in dropdown box - $type[0] = get_string('random','block_glossary_random'); - $type[1] = get_string('lastmodified','block_glossary_random'); - $type[2] = get_string('nextone','block_glossary_random'); - - $this->config->nexttime = usergetmidnight(time()) + DAYSECS * $this->config->refresh; - - // display the form - - if (is_file($CFG->dirroot .'/blocks/'. $this->name() .'/config_instance.html')) { - print_simple_box_start('center', '', '', 5, 'blockconfigglobal'); - include($CFG->dirroot .'/blocks/'. $this->name() .'/config_instance.html'); - print_simple_box_end(); - } else { - notice(get_string('blockconfigbad'), str_replace('blockaction=', 'dummy=', qualified_me())); - } - - return true; - } - - function get_content() { - global $USER, $CFG; - - if (empty($this->config->glossary)) { - $this->content->text = get_string('notyetconfigured','block_glossary_random'); - $this->content->footer = ''; - return $this->content; - } - - if (empty($this->config->cache)) { - $this->config->cache = ''; - } - - if ($this->content !== NULL) { - return $this->content; - } - - $this->content = new stdClass; - $this->content->text = $this->config->cache; - - // place link to glossary in the footer if the glossary is visible - $glossaryid = $this->config->glossary; - $glossary=get_record('glossary', 'id', $glossaryid); - $studentcanpost = $glossary->studentcanpost; //needed to decide on which footer - - //Create a temp valid module structure (course,id) - $tempmod->course = $this->course->id; - $tempmod->id = $glossaryid; - - //Obtain the visible property from the instance - if (instance_is_visible('glossary', $tempmod)) { - $cm = get_coursemodule_from_instance('glossary',$glossaryid, $this->course->id) ; - if ($studentcanpost) { - $this->content->footer = ''.$this->config->addentry.'
      '; - } else { - $this->content->footer = ''; - } - - $this->content->footer .= ''.$this->config->viewglossary.''; - - // otherwise just place some text, no link - } else { - $this->content->footer = $this->config->invisible; - } - - return $this->content; - } - - function hide_header() { - if (empty($this->config->title)) { - return true; - } - return false; - } - -} -?> diff --git a/blocks/glossary_random/config_instance.html b/blocks/glossary_random/config_instance.html deleted file mode 100644 index 9d7cb3e75cf..00000000000 --- a/blocks/glossary_random/config_instance.html +++ /dev/null @@ -1,56 +0,0 @@ -config->glossary)) { - $this->config->glossary = 0; - } - if (!isset($this->config->type)) { - $this->config->type = 0; - } -?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      :
      :config->glossary) ?>
      :
      :config->type, ""); - helpbutton("",get_string("type","block_glossary_random"),"moodle",true,false,get_string("typehelp","block_glossary_random")); - ?>
      : - -config->showconcept)) echo 'checked="checked"'; ?> />
      -
      :
      :
      :
      ">
      diff --git a/blocks/html/block_html.php b/blocks/html/block_html.php deleted file mode 100755 index fe56fa92982..00000000000 --- a/blocks/html/block_html.php +++ /dev/null @@ -1,34 +0,0 @@ -title = get_string('html', 'block_html'); - $this->version = 2004123000; - } - - function applicable_formats() { - return array('all' => true); - } - - function specialization() { - $this->title = isset($this->config->title) ? $this->config->title : get_string('newhtmlblock', 'block_html'); - } - - function instance_allow_multiple() { - return true; - } - - function get_content() { - if ($this->content !== NULL) { - return $this->content; - } - - $this->content = new stdClass; - $this->content->text = isset($this->config->text) ? $this->config->text : ''; - $this->content->footer = ''; - - return $this->content; - } -} -?> diff --git a/blocks/html/config_instance.html b/blocks/html/config_instance.html deleted file mode 100755 index 6c6cacb17ee..00000000000 --- a/blocks/html/config_instance.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - -
      : ()
      :config->text)?$this->config->text:'') ?>
      -
      - diff --git a/blocks/login/block_login.php b/blocks/login/block_login.php index b13796c064c..6e54061c670 100644 --- a/blocks/login/block_login.php +++ b/blocks/login/block_login.php @@ -1,8 +1,10 @@ title = get_string('login'); + $this->content_type = BLOCK_TYPE_TEXT; + $this->course = $course; $this->version = 2004081600; } @@ -42,8 +44,7 @@ class block_login extends block_base { $signup = ''; } - $username = get_moodle_cookie() === 'nobody' ? '' : get_moodle_cookie(); - + $username = get_moodle_cookie(); if (empty($USER->loggedin)) { $this->content->text = "
      content->text .= " action=\"". $wwwroot ."/login/index.php\">\n"; @@ -69,7 +70,6 @@ class block_login extends block_base { // And keep the self test happy by // passing empty string! } - $this->content->footer = ''; return $this->content; } } diff --git a/blocks/messages/block_messages.php b/blocks/messages/block_messages.php deleted file mode 100644 index 0f4685afceb..00000000000 --- a/blocks/messages/block_messages.php +++ /dev/null @@ -1,63 +0,0 @@ -title = get_string('messages','message'); - $this->version = 2004122800; - } - - function get_content() { - global $USER, $CFG; - - if ($this->content !== NULL) { - return $this->content; - } - - $this->content = new stdClass; - $this->content->text = ''; - $this->content->footer = ''; - - if (empty($this->instance) or empty($USER->id) or isguest() or empty($CFG->messaging)) { - return $this->content; - } - - $this->content->footer = ''.get_string('messages', 'message').'...'; - - $users = get_records_sql("SELECT m.useridfrom as id, COUNT(m.useridfrom) as count, - u.firstname, u.lastname, u.picture, u.lastaccess - FROM {$CFG->prefix}user u, - {$CFG->prefix}message m - WHERE m.useridto = '$USER->id' - AND u.id = m.useridfrom - GROUP BY m.useridfrom, u.firstname,u.lastname,u.picture,u.lastaccess"); - - - //Now, we have in users, the list of users to show - //Because they are online - if (!empty($users)) { - foreach ($users as $user) { - $this->content->text .= '
      '; - if ($user->picture) { - if ($CFG->slasharguments) { - $imgtag = ' '; - } else { - $imgtag = ' '; - } - $this->content->text .= $imgtag; - } else { - $this->content->text .= ' '; - } - $timeago = format_time(time() - $user->lastaccess); - $this->content->text .= ''.fullname($user).''; - $this->content->text .= '  '.$user->count.''; - $this->content->text .= '
      '; - } - } else { - $this->content->text .= "
      ".get_string('nomessages', 'message')."
      "; - } - - return $this->content; - } -} - -?> diff --git a/blocks/moodleblock.class.php b/blocks/moodleblock.class.php index 12532a0f04f..e85e5635866 100644 --- a/blocks/moodleblock.class.php +++ b/blocks/moodleblock.class.php @@ -1,252 +1,130 @@ content->items). Optionally include footer text in $this->content->footer. - */ define('BLOCK_TYPE_LIST', 1); - -/** - * Block type of text. Contents of block should be set to standard html text in the content object as items ($this->content->text). Optionally include footer text in $this->content->footer. - */ define('BLOCK_TYPE_TEXT', 2); - -/** - * Block type of nuke. Compitibility with post nuke blocks. Basically treated as BLOCK_TYPE_TEXT. - */ define('BLOCK_TYPE_NUKE', 3); -/** - * Class for describing a moodle block, all Moodle blocks derive from this class - * - * @author Jon Papaioannou - * @package blocks - */ -class block_base { - - /** - * Internal var for storing/caching translated strings - * @var string $str - */ +class MoodleBlock { var $str; - - /** - * The title of the block to be displayed in the block title area. - * @var string $title - */ - var $title = NULL; - - /** - * The type of content that this block creates. Currently support options - BLOCK_TYPE_LIST, BLOCK_TYPE_TEXT, BLOCK_TYPE_NUKE - * @var int $content_type - */ - var $content_type = BLOCK_TYPE_TEXT; - - /** - * An object to contain the information to be displayed in the block. - * @var stdObject $content - */ - var $content = NULL; - - /** - * A string generated by {@link _add_edit_controls()} to display block manipulation links when the user is in editing mode. - * @var string $edit_controls - */ + var $title = NULL; + var $course = NULL; + var $content_type = NULL; + var $content = NULL; var $edit_controls = NULL; + var $version = NULL; - /** - * The current version that the block type defines. - * @var string $version - */ - var $version = NULL; - - /** - * The initialized instance of this block object. - * @var block $instance - */ - var $instance = NULL; - - /** - * An object containing the instance configuration information for the current instance of this block. - * @var stdObject $config - */ - var $config = NULL; - - -/// Class Functions - - /** - * The class constructor - * - */ - function block_base() { - $this->init(); - } - - /** - * Fake constructor to keep PHP5 happy - * - */ - function __construct() { - $this->block_base(); - } - - /** - * Returns the block name, as present in the class name, - * the database, the block directory, etc etc. - * - * @return string - */ function name() { // Returns the block name, as present in the class name, // the database, the block directory, etc etc. static $myname; - if ($myname === NULL) { + if($myname === NULL) { $myname = strtolower(get_class($this)); $myname = substr($myname, strpos($myname, '_') + 1); } return $myname; } - /** - * Parent class version of this function simply returns NULL - * This should be implemented by the derived class to return - * the content object. - * - * @return stdObject - */ function get_content() { // This should be implemented by the derived class. return NULL; } - - /** - * Returns the class $title var value. - * - * Intentionally doesn't check if a title is set. - * This is already done in {@link _self_test()} - * - * @return string $this->title - */ function get_title() { - // Intentionally doesn't check if a title is set. This is already done in _self_test() + // Intentionally doesn't check if a title is set, for _test_self() return $this->title; } - - /** - * Returns the class $content_type var value. - * - * Intentionally doesn't check if content_type is set. - * This is already done in {@link _self_test()} - * - * @return string $this->content_type - */ function get_content_type() { - // Intentionally doesn't check if a content_type is set. This is already done in _self_test() + // Intentionally doesn't check if a content_type is set, for _test_self() return $this->content_type; } - - /** - * Returns the class $version var value. - * - * Intentionally doesn't check if a version is set. - * This is already done in {@link _self_test()} - * - * @return string $this->version - */ function get_version() { - // Intentionally doesn't check if a version is set. This is already done in _self_test() + // Intentionally doesn't check if a version is set, for _test_self() return $this->version; } - - /** - * Returns true or false, depending on whether this block has any content to display - * - * @return boolean - */ - function is_empty() { - $this->get_content(); - return(empty($this->content->text) && empty($this->content->footer)); + function get_header() { + // Intentionally doesn't check if a header is set, for _test_self() + return $this->header; } - - /** - * First sets the current value of $this->content to NULL - * then calls the block's {@link get_content()} function - * to set its value back. - * - * @return stdObject - */ function refresh_content() { // Nothing special here, depends on content() $this->content = NULL; return $this->get_content(); } - - /** - * Display the block! - */ - function _print_block() { + function print_block() { // Wrap the title in a floating DIV, in case we have edit controls to display // These controls will always be wrapped on a right-floating DIV - $title = '
      '.$this->title.'
      '; - if ($this->edit_controls !== NULL) { + $title = '
      '.$this->title.'
      '; + if($this->edit_controls !== NULL) { $title .= $this->edit_controls; } - // is_empty() includes a call to get_content() - if ($this->is_empty()) { - if (empty($this->edit_controls)) { - // No content, no edit controls, so just shut up - return; - } else { - // No content but editing, so show something at least - $this->_print_shadow(); - } - } else { - if ($this->hide_header() && empty($this->edit_controls)) { - // Header wants to hide, no edit controls to show, so no header it is - print_side_block(NULL, $this->content->text, NULL, NULL, $this->content->footer, $this->html_attributes()); - } else { - // The full treatment, please - print_side_block($title, $this->content->text, NULL, NULL, $this->content->footer, $this->html_attributes()); - } + $this->get_content(); + if(!isset($this->content->footer)) { + $this->content->footer = ''; + } + + switch($this->content_type) { + case BLOCK_TYPE_NUKE: + case BLOCK_TYPE_TEXT: + if(empty($this->content->text) && empty($this->content->footer)) { + if(empty($this->edit_controls)) { + // No content, no edit controls, so just shut up + break; + } + else { + // No content but editing, so show something at least + $this->print_shadow(); + } + } + else { + if($this->hide_header() && empty($this->edit_controls)) { + // Header wants to hide, no edit controls to show, so no header it is + print_side_block(NULL, $this->content->text, NULL, NULL, $this->content->footer, $this->html_attributes()); + } + else { + // The full treatment, please + print_side_block($title, $this->content->text, NULL, NULL, $this->content->footer, $this->html_attributes()); + } + } + break; + case BLOCK_TYPE_LIST: + if(empty($this->content->items) && empty($this->content->footer)) { + if(empty($this->edit_controls)) { + // No content, no edit controls, so just shut up + break; + } + else { + // No content but editing, so show something at least + $this->print_shadow(); + } + } + else { + if($this->hide_header() && empty($this->edit_controls)) { + // Header wants to hide, no edit controls to show, so no header it is + print_side_block(NULL, '', $this->content->items, $this->content->icons, $this->content->footer, $this->html_attributes()); + } + else { + // The full treatment, please + print_side_block($title, '', $this->content->items, $this->content->icons, $this->content->footer, $this->html_attributes()); + } + } + break; } } - - /** - * Block contents are missing. Simply display an empty block so that - * edit controls are accessbile to the user and they are aware that this - * block is in place, even if empty. - */ - function _print_shadow() { - $title = '
      '.$this->title.'
      '; - if ($this->edit_controls !== NULL) { + function print_shadow() { + $title = '
      '.$this->title.'
      '; + if($this->edit_controls !== NULL) { $title .= $this->edit_controls; } print_side_block($title, ' ', NULL, NULL, ''); } - /** - * Sets class $edit_controls var with correct block manipulation links. - * - * @uses $CFG - * @uses $USER - * @param stdObject $options ? - * @todo complete documenting this function. Define $options. - */ - function _add_edit_controls($options) { - global $CFG, $USER; + function add_edit_controls($options, $blockid) { + global $CFG, $THEME; + + // The block may be disabled + $blockid = intval($blockid); + $enabled = $blockid > 0; + $blockid = abs($blockid); if (!isset($this->str)) { $this->str->delete = get_string('delete'); @@ -256,344 +134,124 @@ class block_base { $this->str->moveleft = get_string('moveleft'); $this->str->hide = get_string('hide'); $this->str->show = get_string('show'); - $this->str->configure = get_string('configuration'); } - $movebuttons = '
      '; + $path = $CFG->wwwroot.'/course'; - if ($this->instance->visible) { + if (empty($THEME->custompix)) { + $pixpath = $path.'/../pix'; + } else { + $pixpath = $path.'/../theme/'.$CFG->theme.'/pix'; + } + + $movebuttons = '
      '; + + if($enabled) { $icon = '/t/hide.gif'; $title = $this->str->hide; - } else { + } + else { $icon = '/t/show.gif'; $title = $this->str->show; } - $page = page_create_object($this->instance->pagetype, $this->instance->pageid); - $script = $page->url_get_full(array('instanceid' => $this->instance->id, 'sesskey' => $USER->sesskey)); - - $movebuttons .= '' . - ''.$title.''; + $movebuttons .= '' . + ''; - if ($options & BLOCK_CONFIGURE) { - $movebuttons .= '' . - ''. $this->str->configure .''; - } - - $movebuttons .= '' . - ''. $this->str->delete .''; + $movebuttons .= '' . + ' '; if ($options & BLOCK_MOVE_LEFT) { - $movebuttons .= '' . - ''. $this->str->moveleft .''; + $movebuttons .= '' . + ''; } if ($options & BLOCK_MOVE_UP) { - $movebuttons .= '' . - ''. $this->str->moveup .''; + $movebuttons .= '' . + ''; } if ($options & BLOCK_MOVE_DOWN) { - $movebuttons .= '' . - ''. $this->str->movedown .''; + $movebuttons .= '' . + ''; } if ($options & BLOCK_MOVE_RIGHT) { - $movebuttons .= '' . - ''. $this->str->moveright .''; + $movebuttons .= '' . + ''; } $movebuttons .= '
      '; $this->edit_controls = $movebuttons; } - /** - * Tests if this block has been implemented correctly. - * Also, $errors isn't used right now - * - * @return boolean - */ - function _self_test() { // Tests if this block has been implemented correctly. // Also, $errors isn't used right now $errors = array(); $correct = true; - if ($this->get_title() === NULL) { + if($this->get_title() === NULL) { $errors[] = 'title_not_set'; $correct = false; } - if (!in_array($this->get_content_type(), array(BLOCK_TYPE_LIST, BLOCK_TYPE_TEXT, BLOCK_TYPE_NUKE))) { + if(!in_array($this->get_content_type(), array(BLOCK_TYPE_LIST, BLOCK_TYPE_TEXT, BLOCK_TYPE_NUKE))) { $errors[] = 'invalid_content_type'; $correct = false; } - if ($this->get_content() === NULL) { + if($this->get_content() === NULL) { $errors[] = 'content_not_set'; $correct = false; } - if ($this->get_version() === NULL) { + if($this->get_version() === NULL) { $errors[] = 'version_not_set'; $correct = false; } $formats = $this->applicable_formats(); - if (empty($formats) || array_sum($formats) === 0) { - $errors[] = 'no_formats'; + if(empty($formats) || array_sum($formats) === 0) { + $errors[] = 'no_course_formats'; $correct = false; } $width = $this->preferred_width(); - if (!is_int($width) || $width <= 0) { + if(!is_int($width) || $width <= 0) { $errors[] = 'invalid_width'; $correct = false; } return $correct; } - /** - * Subclasses should override this and return true if the - * subclass block has a config_global.html file. - * - * @return boolean - */ function has_config() { return false; } - - /** - * Default behavior: print the config_global.html file - * You don't need to override this if you're satisfied with the above - * - * @uses $CFG - * @return boolean - */ - function config_print() { - // Default behavior: print the config_global.html file - // You don't need to override this if you're satisfied with the above - if (!$this->has_config()) { - return false; - } - global $CFG; - print_simple_box_start('center', '', '', 5, 'blockconfigglobal'); - include($CFG->dirroot.'/blocks/'. $this->name() .'/config_global.html'); - print_simple_box_end(); - return true; + function print_config() { + // This does nothing, it's here to prevent errors from + // derived classes if they implement has_config() but not print_config() } - - /** - * Default behavior: save all variables as $CFG properties - * You don't need to override this if you 're satisfied with the above - * - * @param array $data - * @return boolean - */ - function config_save($data) { - // Default behavior: save all variables as $CFG properties - // You don't need to override this if you 're satisfied with the above - foreach ($data as $name => $value) { - set_config($name, $value); - } - return true; + function handle_config() { + // This does nothing, it's here to prevent errors from + // derived classes if they implement has_config() but not handle_config() } - - /** - * Default case: the block can be used in all course types - * @return array - * @todo finish documenting this function - */ function applicable_formats() { - // Default case: the block can be used in courses and site index, but not in activities - return array('all' => true, 'mod' => false); + // Default case: the block can be used in all course types + return array('all' => true); } - - - /** - * Default case: the block wants to be 180 pixels wide - * @return int - */ function preferred_width() { // Default case: the block wants to be 180 pixels wide return 180; } - - /** - * Default return is false - header will be shown - * @return boolean - */ function hide_header() { //Default, false--> the header is shown return false; } - - /** - * Default case: just an id for the block, with our name in it - * @return array - * @todo finish documenting this function - */ function html_attributes() { - // Default case: an id with the instance and a class with our name in it - return array('id' => 'inst'.$this->instance->id, 'class' => 'block_'. $this->name()); + // Default case: just an id for the block, with our name in it + return array('id' => 'block_'.$this->name()); } - - /** - * Given an instance set the class var $instance to it and - * load class var $config - * @param block $instance - * @todo add additional documentation to further explain the format of instance and config - */ - function _load_instance($instance) { - if (!empty($instance->configdata)) { - $this->config = unserialize(base64_decode($instance->configdata)); - } - // [pj] This line below is supposed to be an optimization (we don't need configdata anymore) - // but what it does is break in PHP5 because the same instance object will be passed to - // this function twice in each page view, and the second time it won't have any configdata - // so it won't work correctly. Thus it's commented out. - // unset($instance->configdata); - $this->instance = $instance; - $this->specialization(); - } - - /** - * This function is called on your subclass right after an instance is loaded - * Use this function to act on instance data just after it's loaded and before anything else is done - * For instance: if your block will have different title's depending on location (site, course, blog, etc) - */ - function specialization() { - // Just to make sure that this method exists. - } - - /** - * Is each block of this type going to have instance-specific configuration? - * Normally, this setting is controlled by {@link instance_allow_multiple}: if multiple - * instances are allowed, then each will surely need its own configuration. However, in some - * cases it may be necessary to provide instance configuration to blocks that do not want to - * allow multiple instances. In that case, make this function return true. - * I stress again that this makes a difference ONLY if {@link instance_allow_multiple} returns false. - * @return boolean - * @todo finish documenting this function by explaining per-instance configuration further - */ - function instance_allow_config() { - return false; - } - - /** - * Are you going to allow multiple instances of each block? - * If yes, then it is assumed that the block WILL USE per-instance configuration - * @return boolean - * @todo finish documenting this function by explaining per-instance configuration further - */ - function instance_allow_multiple() { - // Are you going to allow multiple instances of each block? - // If yes, then it is assumed that the block WILL USE per-instance configuration - return false; - } - - /** - * Default behavior: print the config_instance.html file - * You don't need to override this if you're satisfied with the above - * - * @uses $CFG - * @return boolean - * @todo finish documenting this function - */ - function instance_config_print() { - // Default behavior: print the config_instance.html file - // You don't need to override this if you're satisfied with the above - if (!$this->instance_allow_multiple() && !$this->instance_allow_config()) { - return false; - } - global $CFG; - - if (is_file($CFG->dirroot .'/blocks/'. $this->name() .'/config_instance.html')) { - print_simple_box_start('center', '', '', 5, 'blockconfiginstance'); - include($CFG->dirroot .'/blocks/'. $this->name() .'/config_instance.html'); - print_simple_box_end(); - } else { - notice(get_string('blockconfigbad'), str_replace('blockaction=', 'dummy=', qualified_me())); - } - - return true; - } - - /** - * Serialize and store config data - * @return boolean - * @todo finish documenting this function - */ - function instance_config_save($data) { - $data = stripslashes_recursive($data); - $this->config = $data; - return set_field('block_instance', 'configdata', base64_encode(serialize($data)), 'id', $this->instance->id); - } - - /** - * Replace the instance's configuration data with those currently in $this->config; - * @return boolean - * @todo finish documenting this function - */ - function instance_config_commit() { - return set_field('block_instance', 'configdata', base64_encode(serialize($this->config)), 'id', $this->instance->id); - } - } -/** - * Specialized class for displaying a block with a list of icons/text labels - * - * @author Jon Papaioannou - * @package blocks - */ - -class block_list extends block_base { - var $content_type = BLOCK_TYPE_LIST; - - function is_empty() { - $this->get_content(); - return (empty($this->content->items) && empty($this->content->footer)); - } - - function _print_block() { - // Wrap the title in a floating DIV, in case we have edit controls to display - // These controls will always be wrapped on a right-floating DIV - $title = '
      '.$this->title.'
      '; - if ($this->edit_controls !== NULL) { - $title .= $this->edit_controls; - } - - // is_empty() includes a call to get_content() - if ($this->is_empty()) { - if (empty($this->edit_controls)) { - // No content, no edit controls, so just shut up - return; - } else { - // No content but editing, so show something at least - $this->_print_shadow(); - } - } else { - if ($this->hide_header() && empty($this->edit_controls)) { - // Header wants to hide, no edit controls to show, so no header it is - print_side_block(NULL, '', $this->content->items, $this->content->icons, $this->content->footer, $this->html_attributes()); - } else { - // The full treatment, please - print_side_block($title, '', $this->content->items, $this->content->icons, $this->content->footer, $this->html_attributes()); - } - } - } - -} - -/** - * Class for supporting a phpnuke style block as a moodle block - * - * @author Jon Papaioannou - * @package blocks - */ -class block_nuke extends block_base { - - var $content_type = BLOCK_TYPE_NUKE; - +class MoodleBlock_Nuke extends MoodleBlock { function get_content() { - if ($this->content !== NULL) { + if($this->content !== NULL) { return $this->content; } @@ -601,15 +259,15 @@ class block_nuke extends block_base { $this->content = &New stdClass; // This whole thing begs to be written for PHP >= 4.3.0 using glob(); - $dir = $CFG->dirroot .'/blocks/'. $this->name() .'/nuke/'; - if ($dh = @opendir($dir)) { + $dir = $CFG->dirroot.'/blocks/'.$this->name().'/nuke/'; + if($dh = @opendir($dir)) { while (($file = readdir($dh)) !== false) { $regs = array(); - if (ereg('^block\-(.*)\.php$', $file, $regs)) { + if(ereg('^block\-(.*)\.php$', $file, $regs)) { // Found it! Let's prepare the environment... $oldvals = array(); - if (isset($GLOBALS['admin'])) { + if(isset($GLOBALS['admin'])) { $oldvals['admin'] = $GLOBALS['admin']; } @@ -621,7 +279,7 @@ class block_nuke extends block_base { } // We should have $content set now - if (!isset($content)) { + if(!isset($content)) { return NULL; } return $this->content->text = $content; diff --git a/blocks/news_items/block_news_items.php b/blocks/news_items/block_news_items.php index d26a800d845..be9190a80c9 100644 --- a/blocks/news_items/block_news_items.php +++ b/blocks/news_items/block_news_items.php @@ -1,9 +1,11 @@ title = get_string('latestnews'); - $this->version = 2005030800; + $this->content_type = BLOCK_TYPE_TEXT; + $this->course = $course; + $this->version = 2004052600; } function get_content() { @@ -13,96 +15,28 @@ class block_news_items extends block_base { return $this->content; } - $this->content = new stdClass; - $this->content->text = ''; - $this->content->footer = ''; - - if (empty($this->instance)) { + if (empty($this->course)) { + $this->content = ''; return $this->content; } + require_once($CFG->dirroot.'/course/lib.php'); + require_once($CFG->dirroot.'/mod/forum/lib.php'); - $course = get_record('course', 'id', $this->instance->pageid); - - if ($course->newsitems) { // Create a nice listing of recent postings - - require_once($CFG->dirroot.'/mod/forum/lib.php'); // We'll need this - - $text = ''; - - if (!$forum = forum_get_course_forum($course->id, 'news')) { - return $this->content; - } - - /// First work out whether we can post to this group and if so, include a link - - if (isteacheredit($course->id)) { /// Teachers can always post - $visiblegroups = -1; - - $text .= ''; - - } else { /// Check the group situation - $currentgroup = get_current_group($course->id); - - if (forum_user_can_post_discussion($forum, $currentgroup)) { - $text .= ''; - } - - if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { - $this->content->text = $text; - return $this->content; - } - - $groupmode = groupmode($course, $cm); - - /// Decides if current user is allowed to see ALL the current discussions or not - - if (!$currentgroup and ($groupmode != SEPARATEGROUPS) ) { - $visiblegroups = -1; - } else { - $visiblegroups = $currentgroup; - } - } - - /// Get all the recent discussions we're allowed to see - - if (! $discussions = forum_get_discussions($forum->id, 'p.modified DESC', 0, false, - $visiblegroups, $course->newsitems) ) { - $text .= '('.get_string('nonews', 'forum').')'; - $this->content->text = $text; - return $this->content; - } - - /// Actually create the listing now - - $strftimerecent = get_string('strftimerecent'); - $strmore = get_string('more', 'forum'); - - foreach ($discussions as $discussion) { - - $discussion->subject = $discussion->name; - - $discussion->subject = format_string($discussion->subject, true, $forum->course); - - $text .= '
      '. - '
      '. - ''.userdate($discussion->modified, $strftimerecent).'
      '. - ''.fullname($discussion).'
      '. - '
      '.$discussion->subject.' '. - ''. - $strmore.'...
      '. - '
      '; - } - - $this->content->text = $text; - - $this->content->footer = ''. - get_string('oldertopics', 'forum').' ...'; + $this->content = New object; + $this->content->text = ''; + $this->content->footer = ''; + if ($this->course->newsitems) { + $news = forum_get_course_forum($this->course->id, 'news'); + // Slightly hacky way to do it but... + ob_start(); + echo ''; + forum_print_latest_discussions($news->id, $this->course->newsitems, "minimal", "", get_current_group($this->course->id)); + echo ''; + $this->content->text = ob_get_contents(); + ob_end_clean(); } - return $this->content; } } diff --git a/blocks/online_users/block_online_users.php b/blocks/online_users/block_online_users.php index f2429d449bb..da7cf35cdd7 100644 --- a/blocks/online_users/block_online_users.php +++ b/blocks/online_users/block_online_users.php @@ -1,41 +1,58 @@ title = get_string('blockname','block_online_users'); - $this->version = 2004111600; + $this->content_type = BLOCK_TYPE_TEXT; + $this->course = $course; + $this->version = 2004052700; } function has_config() {return true;} + function print_config() { + global $CFG, $THEME; + print_simple_box_start('center', '', $THEME->cellheading); + include($CFG->dirroot.'/blocks/'.$this->name().'/config.html'); + print_simple_box_end(); + return true; + } + function handle_config($config) { + foreach ($config as $name => $value) { + set_config($name, $value); + } + return true; + } + function get_content() { global $USER, $CFG; + $timetoshowusers = 300; //Seconds default + + if (isset($CFG->block_online_users_timetosee)) { + $timetoshowusers = $CFG->block_online_users_timetosee * 60; + } + if ($this->content !== NULL) { return $this->content; } - $this->content = new stdClass; - $this->content->text = ''; - $this->content->footer = ''; - - if (empty($this->instance)) { + if (empty($this->course)) { + $this->content = ''; return $this->content; } - - $course = get_record('course', 'id', $this->instance->pageid); - $timetoshowusers = 300; //Seconds default - if (isset($CFG->block_online_users_timetosee)) { - $timetoshowusers = $CFG->block_online_users_timetosee * 60; - } - $timefrom = time()-$timetoshowusers; + + $this->content = New object; + $this->content->text = ''; + $this->content->footer = ''; //Calculate if we are in separate groups - $isseparategroups = ($course->groupmode == SEPARATEGROUPS && $course->groupmodeforce && !isteacheredit($this->instance->pageid)); + $isseparategroups = ($this->course->groupmode == SEPARATEGROUPS and $this->course->groupmodeforce and + !isteacheredit($this->course->id)); //Get the user current group - $currentgroup = $isseparategroups ? get_current_group($this->instance->pageid) : NULL; + $currentgroup = $isseparategroups ? get_current_group($this->course->id) : NULL; $groupmembers = ""; $groupselect = ""; @@ -46,83 +63,84 @@ class block_online_users extends block_base { $groupselect .= " AND u.id = gm.userid AND gm.groupid = '$currentgroup'"; } - if ($this->instance->pageid == SITEID) { // Site-level + if (empty($this->course->category)) { // Site-level $courseselect = ''; - $timeselect = "AND (s.timeaccess > $timefrom OR u.lastaccess > $timefrom)"; } else { - $courseselect = "AND s.course = '".$this->instance->pageid."'"; - $timeselect = "AND s.timeaccess > $timefrom"; + $courseselect = "AND s.course = '".$this->course->id."'"; } - $users = array(); + $timefrom = time()-$timetoshowusers; - if ($students = get_records_sql("SELECT u.id, u.username, u.firstname, u.lastname, u.picture, u.lastaccess, s.timeaccess + $students = get_records_sql("SELECT u.id, u.username, u.firstname, u.lastname, u.picture, s.timeaccess FROM {$CFG->prefix}user u, {$CFG->prefix}user_students s $groupmembers - WHERE u.id = s.userid $courseselect $groupselect $timeselect - ORDER BY s.timeaccess DESC")) { - foreach ($students as $student) { - $student->fullname = fullname($student); - $users[$student->id] = $student; - } - } + WHERE u.id = s.userid $courseselect $groupselect + AND s.timeaccess > $timefrom + ORDER BY s.timeaccess DESC"); - if ($this->instance->pageid == SITEID && $CFG->allusersaresitestudents) { - if ($siteusers = get_records_sql("SELECT u.id, u.username, u.firstname, u.lastname, u.picture, u.lastaccess - FROM {$CFG->prefix}user u - WHERE u.lastaccess > $timefrom AND u.username <> 'guest' - ORDER BY u.lastaccess DESC")) { - foreach ($siteusers as $siteuser) { - $siteuser->fullname = fullname($siteuser); - $siteuser->timeaccess = $siteuser->lastaccess; - $users[$siteuser->id] = $siteuser; - } - } - } - - if ($teachers = get_records_sql("SELECT u.id, u.username, u.firstname, u.lastname, u.picture, u.lastaccess, s.timeaccess + $teachers = get_records_sql("SELECT u.id, u.username, u.firstname, u.lastname, u.picture, s.timeaccess FROM {$CFG->prefix}user u, {$CFG->prefix}user_teachers s $groupmembers - WHERE u.id = s.userid $courseselect $groupselect $timeselect - ORDER BY s.timeaccess DESC")) { - foreach ($teachers as $teacher) { - $teacher->fullname = ''.fullname($teacher).''; - $users[$teacher->id] = $teacher; - } - } + WHERE u.id = s.userid $courseselect $groupselect + AND s.timeaccess > $timefrom + ORDER BY s.timeaccess DESC"); + if ($teachers || $students) { + if ($students) { + foreach ($students as $student) { + $student->fullname = fullname($student); + $users[$student->id] = $student; + } + } + if ($teachers) { + foreach ($teachers as $teacher) { + $teacher->fullname = ''.fullname($teacher).''; + $users[$teacher->id] = $teacher; + } + } + } else { + $users = null; + } //Calculate minutes $minutes = floor($timetoshowusers/60); - $this->content->text = "
      (".get_string("periodnminutes","block_online_users",$minutes).")
      "; + $this->content->text = "
      (".get_string("periodnminutes","block_online_users",$minutes).")
      "; //Now, we have in users, the list of users to show //Because they are online - if (!empty($users)) { + if ($users !== null) { foreach ($users as $user) { $this->content->text .= '
      '; - $timeago = format_time(time() - max($user->timeaccess, $user->lastaccess)); //bruno to calculate correctly on frontpage - if ($user->picture) { + $timeago = format_time(time() - $user->timeaccess); + if ($user->picture==0) { + $this->content->text .= ' '; + } else { if ($CFG->slasharguments) { - $imgtag = ' '; + $imgtag = ' '; } else { - $imgtag = ' '; + $imgtag = ' '; } $this->content->text .= $imgtag; - } else { - $this->content->text .= ' '; } - $this->content->text .= ''.$user->fullname.''; - if (!empty($USER->id) and ($USER->id != $user->id) and !empty($CFG->messaging) and !isguest()) { // Only when logged in - $this->content->text .= ' '; - } - $this->content->text .= '
      '; + $this->content->text .= ''.$user->fullname.'
      '; } +/* + $table->align = array("right","left"); + $table->cellpadding = 1; + $table->cellspacing = 1; + $table->data[] = array("pixpath/i/user.gif\" height=16 width=16 alt=\"\">",$user->fullname); + } + // Slightly hacky way to do it but... + ob_start(); + print_table($table); + //$this->content->text .= "
      ".ob_get_contents(); + ob_end_clean(); +*/ } else { - $this->content->text .= "
      ".get_string("none")."
      "; + $this->content->text .= "

      ".get_string("none")."

      "; } return $this->content; diff --git a/blocks/online_users/config.html b/blocks/online_users/config.html new file mode 100644 index 00000000000..3ba2c952a1a --- /dev/null +++ b/blocks/online_users/config.html @@ -0,0 +1,24 @@ + + + + + + + + + + + +

      block_online_users_timetosee:

      + + + + +
      + ">
      + +
      diff --git a/blocks/online_users/config_global.html b/blocks/online_users/config_global.html deleted file mode 100644 index 50ed5db122f..00000000000 --- a/blocks/online_users/config_global.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - -
      block_online_users_timetosee: - - - - -
      -
      diff --git a/blocks/pagedemo.php b/blocks/pagedemo.php deleted file mode 100644 index 9647bc97cf2..00000000000 --- a/blocks/pagedemo.php +++ /dev/null @@ -1,194 +0,0 @@ -dirroot .'/course/lib.php'); - require_once($CFG->dirroot .'/lib/blocklib.php'); - require_once($CFG->dirroot .'/mod/resource/lib.php'); - require_once($CFG->dirroot .'/mod/forum/lib.php'); - - optional_param('blockaction'); - optional_param('instanceid', 0, PARAM_INT); - optional_param('blockid', 0, PARAM_INT); - - require_login(); - - // Begin snippet ----------------------------------------------------------------- - // This snippet should normally be defined in another file, but I 've put it all - // in here to keep it simple. - - // First of all define the string identifier for this "type" of page. - define('MOODLE_PAGE_TEST', 'testpage'); - - // Also, define identifiers for any non-standard block positions we want to support. - define('BLOCK_POS_CENTERUP', 'cu'); - define('BLOCK_POS_CENTERDOWN', 'cd'); - - // The actual Page derived class - class page_test extends page_base { - - // Mandatory; should return our identifier. - function get_type() { - return MOODLE_PAGE_TEST; - } - - // For this test page, only admins are going to be allowed editing (for simplicity). - function user_allowed_editing() { - return isadmin(); - } - - // Also, admins are considered to have "always on" editing (I wanted to avoid duplicating - // the code that turns editing on/off here; you can roll your own or copy course/view.php). - function user_is_editing() { - return isadmin(); - } - - // Simple method that accepts one parameter and prints the header. Here we just ignore - // the parameter entirely. - function print_header($title) { - print_header("Page testing page", 'SAMPLE CUSTOM PAGE', 'home'); - } - - // This should point to the script that displays us; it's straightforward in this case. - function url_get_path() { - global $CFG; - return $CFG->wwwroot .'/blocks/pagedemo.php'; - } - - // We do not need any special request variables such as ID in this case, so we 're not - // going to have to override url_get_parameters() here; the default suits us nicely. - - // Having defined all identifiers we need, here we declare which block positions we are - // going to support. - function blocks_get_positions() { - return array(BLOCK_POS_LEFT, BLOCK_POS_RIGHT, BLOCK_POS_CENTERUP, BLOCK_POS_CENTERDOWN); - } - - // And here we declare where new blocks will appear (arbitrary choice). - function blocks_default_position() { - return BLOCK_POS_CENTERUP; - } - - // Since we 're not going to be creating multiple instances of this "page" (as we do with - // courses), we don't need to provide default blocks. Otherwise we 'd need to override - // the blocks_get_default() method. - - // And finally, a little block move logic. Given a block's previous position and where - // we want to move it to, return its new position. Pretty self-documenting. - function blocks_move_position(&$instance, $move) { - if($instance->position == BLOCK_POS_LEFT && $move == BLOCK_MOVE_RIGHT) { - return BLOCK_POS_CENTERUP; - } else if ($instance->position == BLOCK_POS_RIGHT && $move == BLOCK_MOVE_LEFT) { - return BLOCK_POS_CENTERUP; - } else if (($instance->position == BLOCK_POS_CENTERUP || $instance->position == BLOCK_POS_CENTERDOWN) && $move == BLOCK_MOVE_LEFT) { - return BLOCK_POS_LEFT; - } else if (($instance->position == BLOCK_POS_CENTERUP || $instance->position == BLOCK_POS_CENTERDOWN) && $move == BLOCK_MOVE_RIGHT) { - return BLOCK_POS_RIGHT; - } else if ($instance->position == BLOCK_POS_CENTERUP && $move == BLOCK_MOVE_DOWN) { - return BLOCK_POS_CENTERDOWN; - } else if ($instance->position == BLOCK_POS_CENTERDOWN && $move == BLOCK_MOVE_UP) { - return BLOCK_POS_CENTERUP; - } - return $instance->position; - } - } - // End snippet ------------------------------------------------------------------- - - /// Bounds for block widths on this page - define('BLOCK_L_MIN_WIDTH', 160); - define('BLOCK_L_MAX_WIDTH', 210); - define('BLOCK_R_MIN_WIDTH', 160); - define('BLOCK_R_MAX_WIDTH', 210); - define('BLOCK_C_MIN_WIDTH', 250); - define('BLOCK_C_MAX_WIDTH', 350); - - - // Before creating our page object, we need to map our page identifier to the actual name - // of the class which will be handling its operations. Pretty simple, but essential. - page_map_class(MOODLE_PAGE_TEST, 'page_test'); - - // Now, create our page object. The identifier "1" is passed arbitrarily because we don't - // have multiple "testpages"; if we did, that would be the "testpageid" from the database. - $PAGE = page_create_object(MOODLE_PAGE_TEST, 1); - - $PAGE->print_header(NULL); - $editing = $PAGE->user_is_editing(); - - // That's it! From now on, everything is simply copy-pasted from course/view.php with a few - // minor tweaks to display the page layout! - - // Calculate the preferred width for left, right and center (both center positions will use the same) - optional_variable($preferred_width_left, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT])); - optional_variable($preferred_width_right, blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT])); - optional_variable($preferred_width_centerup, blocks_preferred_width($pageblocks[BLOCK_POS_CENTERUP])); - optional_variable($preferred_width_centerdown, blocks_preferred_width($pageblocks[BLOCK_POS_CENTERDOWN])); - $preferred_width_left = min($preferred_width_left, BLOCK_L_MAX_WIDTH); - $preferred_width_left = max($preferred_width_left, BLOCK_L_MIN_WIDTH); - $preferred_width_right = min($preferred_width_right, BLOCK_R_MAX_WIDTH); - $preferred_width_right = max($preferred_width_right, BLOCK_R_MIN_WIDTH); - $preferred_width_center = max($preferred_width_centerup, $preferred_width_centerdown); - $preferred_width_center = min($preferred_width_center, BLOCK_C_MAX_WIDTH); - $preferred_width_center = max($preferred_width_center, BLOCK_C_MIN_WIDTH); - - // Display the blocks and allow blocklib to handle any block action requested - $pageblocks = blocks_get_by_page($PAGE); - - if($editing) { - if (!empty($blockaction) && confirm_sesskey()) { - if (!empty($blockid)) { - blocks_execute_action($PAGE, $pageblocks, strtolower($blockaction), intval($blockid)); - - } - else if (!empty($instanceid)) { - $instance = blocks_find_instance($instanceid, $pageblocks); - blocks_execute_action($PAGE, $pageblocks, strtolower($blockaction), $instance); - } - // This re-query could be eliminated by judicious programming in blocks_execute_action(), - // but I'm not sure if it's worth the complexity increase... - $pageblocks = blocks_get_by_page($PAGE); - } - } - - // The actual display logic is here - echo ''; - - if(blocks_have_content($pageblocks[BLOCK_POS_LEFT]) || $editing) { - echo ''; - } - - echo ''; - - if(blocks_have_content($pageblocks[BLOCK_POS_RIGHT]) || $editing) { - echo ''; - } - - // Finished! :-) - - echo '
      '; - blocks_print_group($PAGE, $pageblocks[BLOCK_POS_LEFT]); - echo '

      Center-up position:

      '; - if(blocks_have_content($pageblocks[BLOCK_POS_CENTERUP]) || $editing) { - blocks_print_group($PAGE, $pageblocks[BLOCK_POS_CENTERUP]); - } - - echo '
      Content Here'; - - print_object(make_timestamp(2005, 6, 1, 0, 0, 0)); - - echo '
      '; - - echo '

      Center-down position:

      '; - if(blocks_have_content($pageblocks[BLOCK_POS_CENTERDOWN]) || $editing) { - blocks_print_group($PAGE, $pageblocks[BLOCK_POS_CENTERDOWN]); - } - echo '
      '; - blocks_print_group($PAGE, $pageblocks[BLOCK_POS_RIGHT]); - if ($editing) { - blocks_print_adminblock($PAGE, $pageblocks); - } - echo '
      '; - print_footer(); - - -?> diff --git a/blocks/participants/block_participants.php b/blocks/participants/block_participants.php index d3563099342..e107e842b6a 100644 --- a/blocks/participants/block_participants.php +++ b/blocks/participants/block_participants.php @@ -1,8 +1,10 @@ title = get_string('people'); + $this->content_type = BLOCK_TYPE_LIST; + $this->course = $course; $this->version = 2004052600; } @@ -12,12 +14,12 @@ class block_participants extends block_list { if ($this->content !== NULL) { return $this->content; } - if (empty($this->instance)) { + if (empty($this->course)) { $this->content = ''; return $this->content; } - $this->content = new stdClass; + $this->content = New object; $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; @@ -25,29 +27,30 @@ class block_participants extends block_list { $strgroups = get_string('groups'); $strgroupmy = get_string('groupmy'); - $course = get_record('course', 'id', $this->instance->pageid); + $this->content->items[]=''.get_string('participants').''; + $this->content->icons[]=''; - if ($this->instance->pageid != SITEID || $CFG->showsiteparticipantslist > 1 || ($CFG->showsiteparticipantslist == 1 && isteacherinanycourse()) || isteacher(SITEID)) { - $this->content->items[]=''.get_string('participants').''; - $this->content->icons[]=''; - } - - if ($course->groupmode || !$course->groupmodeforce) { - if (isteacheredit($this->instance->pageid)) { - $this->content->items[]=''.$strgroups.''; - $this->content->icons[]=''; + if ($this->course->groupmode or !$this->course->groupmodeforce) { + if ($this->course->groupmode == VISIBLEGROUPS or isteacheredit($this->course->id)) { + $this->content->items[]=''.$strgroups.''; + $this->content->icons[]=''; + } else if ($this->course->groupmode == SEPARATEGROUPS and $this->course->groupmodeforce) { + // Show nothing + } else if ($currentgroup = get_current_group($this->course->id)) { + $this->content->items[]=''.$strgroupmy.''; + $this->content->icons[]=''; } } - if (!empty($USER->id) and !isguest()) { + if (!empty($USER->id)) { $fullname = fullname($USER, true); - $editmyprofile = ''.get_string('editmyprofile').''; + $editmyprofile = ''.get_string('editmyprofile').''; if ($USER->description) { $this->content->items[]= $editmyprofile; } else { $this->content->items[]= $editmyprofile." *"; } - $this->content->icons[]=''; + $this->content->icons[]=''; } return $this->content; diff --git a/blocks/quiz_results/block_quiz_results.php b/blocks/quiz_results/block_quiz_results.php deleted file mode 100644 index 1ee3ce38f03..00000000000 --- a/blocks/quiz_results/block_quiz_results.php +++ /dev/null @@ -1,344 +0,0 @@ -title = get_string('formaltitle', 'block_quiz_results'); - $this->version = 2005012600; - } - - function applicable_formats() { - return array('course' => true, 'mod-quiz' => true); - } - - function get_content() { - global $USER, $CFG; - - if ($this->content !== NULL) { - return $this->content; - } - if (empty($this->instance)) { - $this->content = ''; - return $this->content; - } - - $this->content = new stdClass; - $this->content->text = ''; - $this->content->footer = ''; - - if($this->instance->pagetype == 'course-view') { - // We need to see if we are monitoring a quiz - $quizid = empty($this->config->quizid) ? 0 : $this->config->quizid; - $courseid = $this->instance->pageid; - } - else { - // Assuming we are displayed in the quiz view page - $quizid = $this->instance->pageid; - - // A trick to take advantage of instance config and save queries - if(empty($this->config->courseid)) { - $modrecord = get_record('modules', 'name', 'quiz'); - $cmrecord = get_record('course_modules', 'module', $modrecord->id, 'instance', $quizid); - $this->config->courseid = intval($cmrecord->course); - $this->instance_config_commit(); - } - $courseid = $this->config->courseid; - } - - if(empty($quizid)) { - $this->content->text = get_string('error_emptyquizid', 'block_quiz_results'); - return $this->content; - } - - // Get the quiz record - $quiz = get_record('quiz', 'id', $quizid); - if(empty($quiz)) { - $this->content->text = get_string('error_emptyquizrecord', 'block_quiz_results'); - return $this->content; - } - - // Get the grades for this quiz - $grades = get_records('quiz_grades', 'quiz', $quizid, 'grade, timemodified DESC'); - - if(empty($grades)) { - // No grades, sorry - // The block will hide itself in this case - return $this->content; - } - - if(empty($this->config->showbest) && empty($this->config->showworst)) { - $this->content->text = get_string('configuredtoshownothing', 'block_quiz_results'); - return $this->content; - } - - $groupmode = NOGROUPS; - $best = array(); - $worst = array(); - - if(!empty($this->config->usegroups)) { - // The block was configured to operate in group mode - $course = get_record_select('course', 'id = '.$courseid, 'groupmode, groupmodeforce'); - if($course->groupmodeforce) { - $groupmode = $course->groupmode; - } - else { - $module = get_record_sql('SELECT cm.groupmode FROM '.$CFG->prefix.'modules m LEFT JOIN '.$CFG->prefix.'course_modules cm ON m.id = cm.module WHERE m.name = \'quiz\' AND cm.instance = '.$quizid); - $groupmode = $module->groupmode; - } - // The actual groupmode for the quiz is now known to be $groupmode - } - - if(isteacheredit($courseid) && $groupmode == SEPARATEGROUPS) { - // We 'll make an exception in this case - $groupmode = VISIBLEGROUPS; - } - - switch($groupmode) { - case VISIBLEGROUPS: - // Display group-mode results - $groups = get_groups($courseid); - - if(empty($groups)) { - // No groups exist, sorry - $this->content->text = get_string('error_nogroupsexist', 'block_quiz_results'); - return $this->content; - } - - // Find out all the userids which have a submitted grade - $userids = array(); - foreach($grades as $grade) { - $userids[] = $grade->userid; - } - - // Now find which groups these users belong in - $groupofuser = get_records_sql( - 'SELECT m.userid, m.groupid, g.name FROM '.$CFG->prefix.'groups g LEFT JOIN '.$CFG->prefix.'groups_members m ON g.id = m.groupid '. - 'WHERE g.courseid = '.$courseid.' AND m.userid IN ('.implode(',', $userids).')' - ); - - $groupgrades = array(); - - // OK... now, iterate the grades again and sum them up for each group - foreach($grades as $grade) { - if(isset($groupofuser[$grade->userid])) { - // Count this result only if the user is in a group - $groupid = $groupofuser[$grade->userid]->groupid; - if(!isset($groupgrades[$groupid])) { - $groupgrades[$groupid] = array('sum' => (float)$grade->grade, 'number' => 1, 'group' => $groupofuser[$grade->userid]->name); - } - else { - $groupgrades[$groupid]['sum'] += $grade->grade; - ++$groupgrades[$groupid]['number']; - } - } - } - - foreach($groupgrades as $groupid => $groupgrade) { - $groupgrades[$groupid]['average'] = $groupgrades[$groupid]['sum'] / $groupgrades[$groupid]['number']; - } - - // Sort groupgrades according to average grade, ascending - uasort($groupgrades, create_function('$a, $b', 'if($a["average"] == $b["average"]) return 0; return ($a["average"] > $b["average"] ? 1 : -1);')); - - // How many groups do we have with graded member submissions to show? - $numbest = empty($this->config->showbest) ? 0 : min($this->config->showbest, count($groupgrades)); - $numworst = empty($this->config->showworst) ? 0 : min($this->config->showworst, count($groupgrades) - $numbest); - - // Collect all the group results we are going to use in $best and $worst - $remaining = $numbest; - $groupgrade = end($groupgrades); - while($remaining--) { - $best[key($groupgrades)] = $groupgrade['average']; - $groupgrade = prev($groupgrades); - } - - $remaining = $numworst; - $groupgrade = reset($groupgrades); - while($remaining--) { - $worst[key($groupgrades)] = $groupgrade['average']; - $groupgrade = next($groupgrades); - } - - // Ready for output! - $gradeformat = intval(empty($this->config->gradeformat) ? GRADE_FORMAT_PCT : $this->config->gradeformat); - - if($this->instance->pagetype != 'mod-quiz-view') { - // Don't show header and link to the quiz if we ARE at the quiz... - $this->content->text .= '

      '.$quiz->name.'

      '; - } - - $rank = 0; - if(!empty($best)) { - $this->content->text .= ''; - foreach($best as $groupid => $averagegrade) { - $this->content->text .= ''; - } - $this->content->text .= '
      '; - $this->content->text .= ($numbest == 1?get_string('bestgroupgrade', 'block_quiz_results'):get_string('bestgroupgrades', 'block_quiz_results', $numbest)); - $this->content->text .= '
      '.(++$rank).'.'.$groupgrades[$groupid]['group'].''; - switch($gradeformat) { - case GRADE_FORMAT_FRA: - $this->content->text .= (format_float($averagegrade,$quiz->decimalpoints).'/'.$quiz->grade); - break; - case GRADE_FORMAT_ABS: - $this->content->text .= format_float($averagegrade,$quiz->decimalpoints); - break; - default: - case GRADE_FORMAT_PCT: - $this->content->text .= round((float)$averagegrade / (float)$quiz->grade * 100).'%'; - break; - } - $this->content->text .= '
      '; - } - - $rank = 0; - if(!empty($worst)) { - $worst = array_reverse($worst, true); - $this->content->text .= ''; - foreach($worst as $groupid => $averagegrade) { - $this->content->text .= ''; - } - $this->content->text .= '
      '; - $this->content->text .= ($numworst == 1?get_string('worstgroupgrade', 'block_quiz_results'):get_string('worstgroupgrades', 'block_quiz_results', $numworst)); - $this->content->text .= '
      '.(++$rank).'.'.$groupgrades[$groupid]['group'].''; - switch($gradeformat) { - case GRADE_FORMAT_FRA: - $this->content->text .= (format_float($averagegrade,$quiz->decimalpoints).'/'.$quiz->grade); - break; - case GRADE_FORMAT_ABS: - $this->content->text .= format_float($averagegrade,$quiz->decimalpoints); - break; - default: - case GRADE_FORMAT_PCT: - $this->content->text .= round((float)$averagegrade / (float)$quiz->grade * 100).'%'; - break; - } - $this->content->text .= '
      '; - } - break; - - - case SEPARATEGROUPS: - // This is going to be just like no-groups mode, only we 'll filter - // out the grades from people not in our group. - if(empty($USER) || empty($USER->id)) { - // Not logged in, so show nothing - return $this->content; - } - - $mygroups = get_groups($courseid, $USER->id); - if(empty($mygroups)) { - // Not member of a group, show nothing - return $this->content; - } - - $mygroupsusers = get_records_list('groups_members', 'groupid', implode(',', array_keys($mygroups)), '', 'userid, id'); - // There should be at least one user there, ourselves. So no more tests. - - // Just filter out the grades belonging to other users, and proceed as if there were no groups - $strallowedusers = implode(',', array_keys($mygroupsusers)); - $grades = array_filter($grades, create_function('$el', '$allowed = explode(",", "'.$strallowedusers.'"); return in_array($el->userid, $allowed);')); - - // NO break; HERE, JUST GO AHEAD - default: - case NOGROUPS: - // Single user mode - $numbest = empty($this->config->showbest) ? 0 : min($this->config->showbest, count($grades)); - $numworst = empty($this->config->showworst) ? 0 : min($this->config->showworst, count($grades) - $numbest); - - // Collect all the usernames we are going to need - $remaining = $numbest; - $grade = end($grades); - while($remaining--) { - $best[$grade->userid] = $grade->id; - $grade = prev($grades); - } - - $remaining = $numworst; - $grade = reset($grades); - while($remaining--) { - $worst[$grade->userid] = $grade->id; - $grade = next($grades); - } - - if(empty($best) && empty($worst)) { - // Nothing to show, for some reason... - return $this->content; - } - - // Now grab all the users from the database - $userids = array_merge(array_keys($best), array_keys($worst)); - $users = get_records_list('user', 'id', implode(',',$userids), '', 'id, firstname, lastname'); - - // Ready for output! - - $gradeformat = intval(empty($this->config->gradeformat) ? GRADE_FORMAT_PCT : $this->config->gradeformat); - - if($this->instance->pagetype != 'mod-quiz-view') { - // Don't show header and link to the quiz if we ARE at the quiz... - $this->content->text .= '

      '.$quiz->name.'

      '; - } - - $rank = 0; - if(!empty($best)) { - $this->content->text .= ''; - foreach($best as $userid => $gradeid) { - $this->content->text .= ''; - } - $this->content->text .= '
      '; - $this->content->text .= ($numbest == 1?get_string('bestgrade', 'block_quiz_results'):get_string('bestgrades', 'block_quiz_results', $numbest)); - $this->content->text .= '
      '.(++$rank).'.'.fullname($users[$userid]).''; - switch($gradeformat) { - case GRADE_FORMAT_FRA: - $this->content->text .= (format_float($grades[$gradeid]->grade,$quiz->decimalpoints).'/'.$quiz->grade); - break; - case GRADE_FORMAT_ABS: - $this->content->text .= format_float($grades[$gradeid]->grade,$quiz->decimalpoints); - break; - default: - case GRADE_FORMAT_PCT: - $this->content->text .= round((float)$grades[$gradeid]->grade / (float)$quiz->grade * 100).'%'; - break; - } - $this->content->text .= '
      '; - } - - $rank = 0; - if(!empty($worst)) { - $worst = array_reverse($worst, true); - $this->content->text .= ''; - foreach($worst as $userid => $gradeid) { - $this->content->text .= ''; - } - $this->content->text .= '
      '; - $this->content->text .= ($numworst == 1?get_string('worstgrade', 'block_quiz_results'):get_string('worstgrades', 'block_quiz_results', $numworst)); - $this->content->text .= '
      '.(++$rank).'.'.fullname($users[$userid]).''; - switch($gradeformat) { - case GRADE_FORMAT_FRA: - $this->content->text .= (format_float($grades[$gradeid]->grade,$quiz->decimalpoints).'/'.$quiz->grade); - break; - case GRADE_FORMAT_ABS: - $this->content->text .= format_float($grades[$gradeid]->grade,$quiz->decimalpoints); - break; - default: - case GRADE_FORMAT_PCT: - $this->content->text .= round((float)$grades[$gradeid]->grade / (float)$quiz->grade * 100).'%'; - break; - } - $this->content->text .= '
      '; - } - break; - } - - return $this->content; - } - - function instance_allow_multiple() { - return true; - } -} - -?> diff --git a/blocks/quiz_results/config_instance.html b/blocks/quiz_results/config_instance.html deleted file mode 100644 index baf3404bf1d..00000000000 --- a/blocks/quiz_results/config_instance.html +++ /dev/null @@ -1,70 +0,0 @@ - -instance->pagetype != 'mod-quiz-view') { ?> - - - - -instance->pagetype != PAGE_QUIZ_VIEW) ?> - - - - - - - - - - - - - - - - - - - -
      - - - instance->pageid, '', 'id, name'); - if(empty($quizzes)) { - echo ''.get_string('config_no_quizzes_in_course', 'block_quiz_results').''; - echo '

      '; - } - else { - $options = array(); - foreach($quizzes as $quiz) { - $options[$quiz->id] = $quiz->name; - } - choose_from_menu($options, 'quizid', empty($this->config->quizid) ? 0 : $this->config->quizid); - } - ?> -
      - - - -
      - - - -
      - - - config->usegroups)) echo 'checked="checked"'; ?> value="1" /> - config->usegroups)) echo 'checked="checked"'; ?> value="0" /> -
      - - - get_string('config_format_percentage', 'block_quiz_results'), GRADE_FORMAT_FRA => get_string('config_format_fraction', 'block_quiz_results'), GRADE_FORMAT_ABS => get_string('config_format_absolute', 'block_quiz_results')); - choose_from_menu($formats, 'gradeformat', empty($this->config->gradeformat) ? 0 : $this->config->gradeformat, ''); - ?> -
      - -
      \ No newline at end of file diff --git a/blocks/quiz_results/styles.php b/blocks/quiz_results/styles.php deleted file mode 100644 index c722549f28a..00000000000 --- a/blocks/quiz_results/styles.php +++ /dev/null @@ -1,26 +0,0 @@ -.block_quiz_results { - text-align: center; -} - -.block_quiz_results table.grades .number, -.block_quiz_results table.grades .grade { - text-align: right; - width: 10%; -} - -.block_quiz_results table.grades { - text-align: left; - width: 100%; -} - -.block_quiz_results table.grades caption { - margin: 1em 0px 0px 0px; - border-bottom: 1px solid; - font-weight: bold; -} - -.block_quiz_results h1 { - margin: 4px; - font-weight: bold; - font-size: 1.1em; -} diff --git a/blocks/recent_activity/block_recent_activity.php b/blocks/recent_activity/block_recent_activity.php index 0c293cecc7f..03ee7a3767b 100644 --- a/blocks/recent_activity/block_recent_activity.php +++ b/blocks/recent_activity/block_recent_activity.php @@ -1,8 +1,10 @@ title = get_string('recentactivity'); + $this->content_type = BLOCK_TYPE_TEXT; + $this->course = $course; $this->version = 2004042900; } @@ -12,20 +14,18 @@ class block_recent_activity extends block_base { return $this->content; } - if (empty($this->instance)) { + if (empty($this->course)) { $this->content = ''; return $this->content; } - $this->content = new stdClass; + $this->content = New object; $this->content->text = ''; $this->content->footer = ''; - $course = get_record('course', 'id', $this->instance->pageid); - // Slightly hacky way to do it but... ob_start(); - print_recent_activity($course); + print_recent_activity($this->course); $this->content->text = ob_get_contents(); ob_end_clean(); diff --git a/blocks/rss_client/block_rss_client.php b/blocks/rss_client/block_rss_client.php deleted file mode 100644 index 141540f0388..00000000000 --- a/blocks/rss_client/block_rss_client.php +++ /dev/null @@ -1,229 +0,0 @@ -title = get_string('block_rss_feeds_title', 'block_rss_client'); - $this->version = 2004112000; - } - - function specialization() { - // After the block has been loaded we customize the block's title display - if (!empty($this->config) && !empty($this->config->title)) { - // There is a customized block title, display it - $this->title = $this->config->title; - } else { - // No customized block title, use localized remote news feed string - $this->title = get_string('block_rss_remote_news_feed', 'block_rss_client'); - } - } - - function get_content() { - global $CFG, $editing; - - require_once($CFG->libdir .'/rsslib.php'); - - if($this->content !== NULL) { - return $this->content; - } - - $this->content = new stdClass; - $this->content->footer = ''; - - if (empty($this->instance)) { - // We're being asked for content without an associated instance - $this->content->text = ''; - return $this->content; - } - - $output = ''; - $rssid = -1; - $display_description = false; - if (isset($CFG->block_rss_client_num_entries) && is_numeric($CFG->block_rss_client_num_entries) ) { - $shownumentries = intval($CFG->block_rss_client_num_entries); - } else { - $shownumentries = 5; //default to 5 entries is not specified by admin or instance - } - - if (!empty($this->config)) { - if (!empty($this->config->rssid)) { - if (is_array($this->config->rssid)) { - $rssidarray = $this->config->rssid; - } else { // Make an array of the single value - $rssidarray = array($this->config->rssid); - } - } - if (!empty($this->config->display_description)) { - $display_description = intval($this->config->display_description); - } - if (!empty($this->config->shownumentries)) { - $shownumentries = intval($this->config->shownumentries); - } - } - - $submitters = $CFG->block_rss_client_submitters; - - $isteacher = false; - $this->courseid = SITEID; - if ($this->instance->pagetype == PAGE_COURSE_VIEW) { - $this->courseid = $this->instance->pageid; - $isteacher = isteacher($this->courseid); - } - - //if the user is an admin, course teacher, or all users are allowed - // then allow the user to add rss feeds - global $USER; - $userisloggedin = false; - if (isset($USER) && isset($USER->id) && $USER->id && !isguest()) { - $userisloggedin = true; - } - if ( $userisloggedin && (isadmin() || $submitters == SUBMITTERS_ALL_ACCOUNT_HOLDERS || ($submitters == SUBMITTERS_ADMIN_AND_TEACHER && $isteacher)) ) { - $output .= '
      '; - } - - // Daryl Hawes note: if count of rssidarray is greater than 1 - // we should possibly display a drop down menu of selected feed titles - // so user can select a single feed to view (similar to RSSFeed) - if (!empty($rssidarray)) { - $numids = count($rssidarray); - $count = 0; - foreach ($rssidarray as $rssid) { - $output = $this->get_rss_by_id($rssid, $display_description, $shownumentries, ($numids > 1) ? true : false); - if ($numids > 1 && $count != $numids -1 && !empty($rssfeedstring)) { - $output .= '
      '; - } - $count ++; - } - } - - $this->content->text = $output; - return $this->content; - } - - function instance_allow_multiple() { - return true; - } - - function has_config() { - return true; - } - - function instance_allow_config() { - return true; - } - - /** - * @param int $rssid The feed to be displayed - * @param bool $display_description Should the description information from the feed be displayed or simply the title? - * @param int $shownumentries The maximum number of feed entries to be displayed. - * @param bool $showtitle True if the feed title should be displayed above the feed entries. - * @return string|NULL - */ - function get_rss_by_id($rssid, $display_description, $shownumentries, $showtitle=false) { - global $CFG; - $returnstring = ''; - $now = time(); - require_once($CFG->libdir .'/rsslib.php'); - require_once(MAGPIE_DIR .'rss_fetch.inc'); - - // Check if there is a cached string which has not timed out. - if (BLOCK_RSS_SECONDARY_CACHE_ENABLED && - isset($this->config->{'rssid'. $rssid}) && - isset($this->config->{'rssid'. $rssid .'timestamp'}) && - $this->config->{'rssid'. $rssid .'timestamp'} >= $now - $CFG->block_rss_timeout * 60) { - // If the cached string is not too stale - // use it rather than going any further - return stripslashes_safe($this->config->{'rssid'. $rssid}); - } - - $rss_record = get_record('block_rss_client', 'id', $rssid); - if (isset($rss_record) && isset($rss_record->id)) { - - // By capturing the output from fetch_rss this way - // error messages do not display and clutter up the moodle interface - // however, we do lose out on seeing helpful messages like "cache hit", etc. - ob_start(); - $rss = fetch_rss($rss_record->url); - $rsserror = ob_get_contents(); - ob_end_clean(); - - if ($rss === false) { - if ($CFG->debug && !empty($rsserror)) { - // There was a failure in loading the rss feed, print link to full error text - return 'Error loading a feed.
      '; //Daryl Hawes note: localize this line - } - } - - if ($shownumentries > 0 && $shownumentries < count($rss->items) ) { - $rss->items = array_slice($rss->items, 0, $shownumentries); - } - - if (empty($rss_record->preferredtitle)) { - $feedtitle = stripslashes_safe(rss_unhtmlentities($rss->channel['title'])); - } else { - $feedtitle = stripslashes_safe($rss_record->preferredtitle); - } -// print_object($rss); - if (isset($this->config) && - isset($this->config->block_rss_client_show_channel_image) && - $this->config->block_rss_client_show_channel_image && - isset($rss->image) && isset($rss->image['link']) && isset($rss->image['title']) && isset($rss->image['url']) ) { - $returnstring .= '
      '. $rss->image['title'] .'

      '; - } - - if ($showtitle) { - $returnstring .= '
      '. $feedtitle .'

      '; - } - - $formatoptions->para = false; - - foreach ($rss->items as $item) { - $item['title'] = stripslashes_safe(rss_unhtmlentities($item['title'])); - $item['description'] = stripslashes_safe(rss_unhtmlentities($item['description'])); - if ($item['title'] == '') { - // no title present, use portion of description - $item['title'] = substr(strip_tags($item['description']), 0, 20) . '...'; - } - - if ($item['link'] == '') { - $item['link'] = $item['guid']; - } - - $item['link'] = str_replace('&', '&', $item['link']); - - $returnstring .= '' ."\n"; - - - if ($display_description && !empty($item['description'])){ - $returnstring .= '
      '. - format_text($item['description'], FORMAT_MOODLE, $formatoptions, $this->courseid) . - '
      ' ."\n"; - } - } - - if (!empty($rss->channel['link'])) { - if (!empty($this->config) && isset($this->config->block_rss_client_show_channel_link) && $this->config->block_rss_client_show_channel_link) { - $returnstring .= ''; - } - if (!empty($feedtitle) ) { - $feedtitle = ''. $feedtitle .''; - } - } - } - - if (!empty($feedtitle) and ($feedtitle != '')) { - $this->title = $feedtitle; - } - - // store config setting for this rssid so we do not need to read from file each time - $this->config->{'rssid'. $rssid} = addslashes($returnstring); - $this->config->{'rssid'. $rssid .'timestamp'} = $now; - $this->instance_config_save($this->config); - return $returnstring; - } -} -?> diff --git a/blocks/rss_client/block_rss_client_action.php b/blocks/rss_client/block_rss_client_action.php deleted file mode 100644 index 6befdb98e99..00000000000 --- a/blocks/rss_client/block_rss_client_action.php +++ /dev/null @@ -1,278 +0,0 @@ -libdir .'/rsslib.php'); - require_once(MAGPIE_DIR .'rss_fetch.inc'); - - require_login(); - - //ensure that the logged in user is not using the guest account - if (isset($_SERVER['HTTP_REFERER'])){ - $referrer = $_SERVER['HTTP_REFERER']; - } else { - $referrer = $CFG->wwwroot; - } - if (isguest()) { - error(get_string('noguestpost', 'forum'), $referrer); - } - - optional_variable($act, 'none'); - optional_variable($rssid, 'none'); - optional_variable($courseid, 'none'); - optional_variable($url); - optional_variable($preferredtitle, ''); - optional_variable($item); - - $straddedit = get_string('block_rss_feeds_add_edit', 'block_rss_client'); - if ( isadmin() ) { - $stradmin = get_string('administration'); - $strconfiguration = get_string('configuration'); - $navigation = "wwwroot/$CFG->admin/index.php\">$stradmin -> ". - "wwwroot/$CFG->admin/configure.php\">$strconfiguration -> $straddedit"; - } else if ($courseid != 'none' && $course = get_record('course', 'id', $courseid) ) { - $navigation = "wwwroot/course/view.php?id=$course->id\">$course->shortname -> $straddedit"; - } else { - $navigation = $straddedit; - } - - print_header(get_string('block_rss_feeds_add_edit', 'block_rss_client'), - get_string('block_rss_feeds_add_edit', 'block_rss_client'), - $navigation ); - - //check to make sure that the user is allowed to post new feeds - $submitters = $CFG->block_rss_client_submitters; - $isteacher = false; - if ($courseid != 'none'){ - $isteacher = isteacher($courseid); - } - - //if the user is an admin or course teacher then allow the user to - //assign categories to other uses than personal - if (!( isadmin() || $submitters == SUBMITTERS_ALL_ACCOUNT_HOLDERS || ($submitters == SUBMITTERS_ADMIN_AND_TEACHER && $isteacher) ) ) { - error(get_string('noguestpost', 'forum'), $referrer); - } - - if ($act == 'none') { - rss_display_feeds(); - rss_get_form($act, $url, $rssid, $preferredtitle); - - } else if ($act == 'updfeed') { - require_variable($url); - - // By capturing the output from fetch_rss this way - // error messages do not display and clutter up the moodle interface - // however, we do lose out on seeing helpful messages like "cache hit", etc. - ob_start(); - $rss = fetch_rss($url); - $rsserror = ob_get_contents(); - ob_end_clean(); - - $dataobject->id = $rssid; - if ($rss === false) { - $dataobject->description = ''; - $dataobject->title = ''; - $dataobject->preferredtitle = ''; - } else { - $dataobject->description = addslashes(rss_unhtmlentities($rss->channel['description'])); - $dataobject->title = addslashes(rss_unhtmlentities($rss->channel['title'])); - $dataobject->preferredtitle = addslashes($preferredtitle); - } - $dataobject->url = addslashes($url); - - if (!update_record('block_rss_client', $dataobject)) { - error('There was an error trying to update rss feed with id:'. $rssid); - } - -// rss_display_feeds($rssid); - rss_display_feeds(); - print ''. get_string('block_rss_feed_updated', 'block_rss_client') .''; - rss_get_form($act, $dataobject->url, $rssid, $dataobject->preferredtitle); - - } else if ($act == 'addfeed' ) { - - require_variable($url); - $dataobject->userid = $USER->id; - $dataobject->description = ''; - $dataobject->title = ''; - $dataobject->url = addslashes($url); - $dataobject->preferredtitle = addslashes($preferredtitle); - - $rssid = insert_record('block_rss_client', $dataobject); - if (!$rssid){ - error('There was an error trying to add a new rss feed:'. $url); - } - - // By capturing the output from fetch_rss this way - // error messages do not display and clutter up the moodle interface - // however, we do lose out on seeing helpful messages like "cache hit", etc. - ob_start(); - $rss = fetch_rss($url); - $rsserror = ob_get_contents(); - ob_end_clean(); - - if ($rss === false) { - print 'There was an error loading this rss feed. You may want to verify the url you have specified before using it.'; //Daryl Hawes note: localize this line - } else { - - $dataobject->id = $rssid; - if (!empty($rss->channel['description'])) { - $dataobject->description = addslashes(rss_unhtmlentities($rss->channel['description'])); - } - if (!empty($rss->channel['title'])) { - $dataobject->title = addslashes(rss_unhtmlentities($rss->channel['title'])); - } - if (!update_record('block_rss_client', $dataobject)) { - error('There was an error trying to update rss feed with id:'. $rssid); - } - print ''. get_string('block_rss_feed_added', 'block_rss_client') .''; - } - rss_display_feeds(); - rss_get_form($act, $dataobject->url, $dataobject->id, $dataobject->preferredtitle); - - } else if ( $act == 'rss_edit') { - - $rss_record = get_record('block_rss_client', 'id', $rssid); - $preferredtitle = stripslashes_safe($rss_record->preferredtitle); - if (empty($preferredtitle)) { - $preferredtitle = stripslashes_safe($rss_record->title); - } - $url = stripslashes_safe($rss_record->url); - rss_display_feeds($rssid); - rss_get_form($act, $url, $rssid, $preferredtitle); - - } else if ($act == 'delfeed') { - - $file = $CFG->dataroot .'/cache/rsscache/'. $rssid .'.xml'; - if (file_exists($file)) { - unlink($file); - } - - // echo "DEBUG: act = delfeed"; //debug - //Daryl Hawes note: convert this sql statement to a moodle function call - $sql = 'DELETE FROM '. $CFG->prefix .'block_rss_client WHERE id='. $rssid; - $res= $db->Execute($sql); - - rss_display_feeds(); - print ''. get_string('block_rss_feed_deleted', 'block_rss_client') .''; - rss_get_form($act, $url, $rssid, $preferredtitle); - - } else if ($act == 'view') { - // echo $sql; //debug - // print_object($res); //debug - $rss_record = get_record('block_rss_client', 'id', $rssid); - if (!$rss_record->id){ - print ''. get_string('block_rss_could_not_find_feed', 'block_rss_client') .': '. $rssid .''; - } else { - // By capturing the output from fetch_rss this way - // error messages do not display and clutter up the moodle interface - // however, we do lose out on seeing helpful messages like "cache hit", etc. - ob_start(); - $rss = fetch_rss($rss_record->url); - $rsserror = ob_get_contents(); - ob_end_clean(); - - if (empty($rss_record->preferredtitle)) { - $feedtitle = stripslashes_safe($rss_record->preferredtitle); - } else { - $feedtitle = stripslashes_safe(rss_unhtmlentities($rss->channel['title'])); - } - print ''."\n"; - print ''."\n"; - for($y=0; $y < count($rss->items); $y++) { - $rss->items[$y]['title'] = stripslashes_safe(rss_unhtmlentities($rss->items[$y]['title'])); - $rss->items[$y]['description'] = stripslashes_safe(rss_unhtmlentities($rss->items[$y]['description'])); - if ($rss->items[$y]['link'] == '') { - $rss->items[$y]['link'] = $rss->items[$y]['guid']; - } - - if ($rss->items[$y]['title'] == '') { - $rss->items[$y]['title'] = '>>'; - } - - print ''."\n"; - if (file_exists($CFG->dirroot .'/blog/lib.php')) { - //Blog module is installed - provide "blog this" link - print ''."\n"; - print ''."\n"; - } - print '
      '. $feedtitle .'
      '."\n"; - print ''. $rss->items[$y]['title']; - print ''."\n"; - print ''."\n"; - print ''. get_string('blog_blog_this', 'blog').''."\n"; - print ''. get_string('blog_blog_this', 'blog') .''."\n"; - } else { - print ' '; - } - print '
      '; - print $rss->items[$y]['description'] .'
      '."\n"; - } - } else { - rss_display_feeds(); - rss_get_form($act, $url, $rssid, $preferredtitle); - } - - print_footer(); - -/** - * @param string $act . - * @param string $url . - * @param int $rssid . - * @param bool $printnow True if the generated form should be printed out, false if the string should be returned from this function quietly - */ -function rss_get_form($act, $url, $rssid, $preferredtitle, $printnow=true) { - global $USER, $CFG, $_SERVER, $blockid, $blockaction; - global $blogid; //hackish, but if there is a blogid it would be good to preserve it - $stredit = get_string('edit'); - $stradd = get_string('add'); - $strupdatefeed = get_string('block_rss_update_feed', 'block_rss_client'); - $straddfeed = get_string('block_rss_add_feed', 'block_rss_client'); - - $returnstring = '
      '."\n"; - - $returnstring .= '
      '."\n"; - if ($act == 'rss_edit') { - $returnstring .= $strupdatefeed; - } else { - $returnstring .= $straddfeed; - } - $returnstring .= "\n".'
      '."\n"; - $returnstring .= '
      '. get_string('block_rss_custom_title_label', 'block_rss_client'); - $returnstring .= '
      '."\n"; - - $returnstring .= ''."\n"; - if ($act == 'rss_edit') { - $returnstring .= ''. "\n"; - } - $returnstring .= ''."\n"; - $returnstring .= ''."\n"; - $returnstring .= '
      ". get_string('validate_feed', 'block_rss_client').""; - if ($act == 'rss_edit') { - $returnstring .= $stredit; - } else { - $returnstring .= $stradd; - } - $returnstring .= '" /> '. $validatestring .'
      '."\n"; - $returnstring .= '
      '."\n"; - - if ($printnow){ - print $returnstring; - } - return $returnstring; -} -?> \ No newline at end of file diff --git a/blocks/rss_client/block_rss_client_error.php b/blocks/rss_client/block_rss_client_error.php deleted file mode 100644 index abd519b3ba2..00000000000 --- a/blocks/rss_client/block_rss_client_error.php +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/blocks/rss_client/config_global.html b/blocks/rss_client/config_global.html deleted file mode 100644 index cb7c9a1d5de..00000000000 --- a/blocks/rss_client/config_global.html +++ /dev/null @@ -1,64 +0,0 @@ -libdir .'/rsslib.php'); -?> - - - - - - - - - - - - - - - - - - - - - - - - -
      block_rss_client_num_entries: - - - - -
      block_rss_timeout: - - - -
      block_rss_client_submitters: - block_rss_client_submitters)) { - $selected = $CFG->block_rss_client_submitters; - } else { - $selected = '0'; - $CFG->block_rss_client_submitters = 0; - } - $options = array ( SUBMITTERS_ALL_ACCOUNT_HOLDERS => get_string('everybody'), - SUBMITTERS_ADMIN_ONLY => get_string('administrators'), - SUBMITTERS_ADMIN_AND_TEACHER => get_string('administratorsandteachers') ); - - choose_from_menu ($options, 'block_rss_client_submitters', $selected); - ?> - - -
      -


      -
      diff --git a/blocks/rss_client/config_instance.html b/blocks/rss_client/config_instance.html deleted file mode 100644 index add9a607678..00000000000 --- a/blocks/rss_client/config_instance.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - config) && !empty($this->config->title)) { - $title = $this->config->title; - } - ?> - - - - - - - - - - - - - -
      - - - block_rss_client_display_description) ) { - $CFG->block_rss_client_display_description = '0'; - } - $selected = $CFG->block_rss_client_display_description; - if (isset($this->config) && isset($this->config->display_description)) { - $selected = $this->config->display_description; - } - $options[0] = get_string('no'); - $options[1] = get_string('yes'); - choose_from_menu ($options, 'display_description', $selected); - ?> -
      - - - -
      - - - config) && isset($this->config->rssid)) { - if (is_array($this->config->rssid)) { - // rssid is an array of rssids - $selectedarray = $this->config->rssid; - } else { - // rssid is a single rssid - $selectedarray = array($this->config->rssid); - } - } - if ($rssfeeds = get_records('block_rss_client')) { - foreach($rssfeeds as $rssfeed){ - if (!empty($rssfeed->preferredtitle)) { - $feedtitle = stripslashes_safe($rssfeed->preferredtitle); - } else { - $feedtitle = stripslashes_safe($rssfeed->title); - } - $feedoptions[$rssfeed->id] = $feedtitle; - } - $dropdownmenustring = choose_from_menu($feedoptions, 'rssid[]', '', '', '', '0', true); - - //Daryl Hawes note: - // moodle's choose_from_menu() function does not support - // the "multiple" or "size" options, so before printing out the - // calculated drop down menu we insert the keyword "multiple" - $dropdownmenustring = preg_replace("|\"rssid\[\]\" >*|","\"rssid[]\" multiple>", $dropdownmenustring); - - // since there may be multiple rssids to select - // we need to check for each - if (!empty($selectedarray)) { - foreach ($selectedarray as $selected) { - $selected = intval($selected); - $dropdownmenustring = preg_replace("|\"$selected\">*|","\"$selected\" selected>", $dropdownmenustring); - } - } - - print $dropdownmenustring; - - } else { - print_string('block_rss_no_feeds', 'block_rss_client'); - if ( isadmin() ){ - print '  '. get_string('block_rss_edit_news_feeds', 'block_rss_client') .'
      '; - } - } - ?> -
      -
      - config) && isset($this->config->block_rss_client_show_channel_link)) { - $selected = $this->config->block_rss_client_show_channel_link; - } else { - $selected = '0'; - } - $options = array ( '0' => get_string('no'), - '1' => get_string('yes') ); - - choose_from_menu ($options, 'block_rss_client_show_channel_link', $selected); - ?> -
      - config) && isset($this->config->block_rss_client_show_channel_image)) { - $selected = $this->config->block_rss_client_show_channel_image; - } else { - $selected = '0'; - } - $options = array ( '0' => get_string('no'), - '1' => get_string('yes') ); - - choose_from_menu ($options, 'block_rss_client_show_channel_image', $selected); - ?> -
      - -
      diff --git a/blocks/rss_client/db/mysql.php b/blocks/rss_client/db/mysql.php deleted file mode 100644 index 2f9b98f8a9b..00000000000 --- a/blocks/rss_client/db/mysql.php +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/blocks/rss_client/db/mysql.sql b/blocks/rss_client/db/mysql.sql deleted file mode 100644 index 78da808b09d..00000000000 --- a/blocks/rss_client/db/mysql.sql +++ /dev/null @@ -1,21 +0,0 @@ -# This file contains a complete database schema for all the -# tables used by this module, written in SQL - -# It may also contain INSERT statements for particular data -# that may be used, especially new entries in the table log_display - -# -------------------------------------------------------- - -# -# Table structure for table `prefix_block_rss_client` -# - -CREATE TABLE prefix_block_rss_client ( - `id` int(11) NOT NULL auto_increment, - `userid` int(11) NOT NULL default '0', - `title` varchar(64) NOT NULL default '', - `preferredtitle` varchar(64) NOT NULL default '', - `description` varchar(128) NOT NULL default '', - `url` varchar(255) NOT NULL default '', -PRIMARY KEY (`id`) -) TYPE=MyISAM COMMENT='Remote news feed information. Contains the news feed id, the userid of the user who added the feed, the title of the feed itself and a description of the feed contents along with the url used to access the remote feed. Preferredtitle is a field for future use - intended to allow for custom titles rather than those found in the feed.'; \ No newline at end of file diff --git a/blocks/rss_client/db/postgres7.php b/blocks/rss_client/db/postgres7.php deleted file mode 100644 index 1f4e886b818..00000000000 --- a/blocks/rss_client/db/postgres7.php +++ /dev/null @@ -1,13 +0,0 @@ - \ No newline at end of file diff --git a/blocks/rss_client/db/postgres7.sql b/blocks/rss_client/db/postgres7.sql deleted file mode 100644 index c5adadf1e66..00000000000 --- a/blocks/rss_client/db/postgres7.sql +++ /dev/null @@ -1,18 +0,0 @@ -# This file contains a complete database schema for all the -# tables used by this module, written in SQL - -# It may also contain INSERT statements for particular data -# that may be used, especially new entries in the table log_display - -# -# Table structure for table `block_rss_client` -# - -CREATE TABLE prefix_block_rss_client ( - id SERIAL PRIMARY KEY, - userid INTEGER NOT NULL default '0', - title varchar(64) NOT NULL default '', - preferredtitle varchar(64) NOT NULL default '', - description varchar(128) NOT NULL default '', - url varchar(255) NOT NULL default '' -); diff --git a/blocks/rss_client/styles.php b/blocks/rss_client/styles.php deleted file mode 100644 index 31ae2fb18ec..00000000000 --- a/blocks/rss_client/styles.php +++ /dev/null @@ -1,22 +0,0 @@ -.block_rss_client .link { - border-top:1px solid; - border-top-color:#DDDDDD; - padding-bottom:5px; - font-size:0.7em; -} - -.block_rss_client .description { - color:#555555; - font-size:0.7em; - padding-left:10px; - padding-bottom:8px; -} - -.block_rss_client .title { -} - -.block_rss_client .image { -} - -.block_rss_client .channellink { -} diff --git a/blocks/search_forums/block_search_forums.php b/blocks/search_forums/block_search_forums.php index 12aa22ec826..aee0be0b465 100644 --- a/blocks/search_forums/block_search_forums.php +++ b/blocks/search_forums/block_search_forums.php @@ -1,33 +1,33 @@ title = get_string('search', 'forum'); - $this->version = 2005030900; + $this->content_type = BLOCK_TYPE_TEXT; + $this->course = $course; + $this->version = 2004041000; } function get_content() { - global $CFG; + global $USER, $CFG, $SESSION; + optional_variable($_GET['cal_m']); + optional_variable($_GET['cal_y']); if($this->content !== NULL) { return $this->content; } - $this->content = new stdClass; - $this->content->footer = ''; - - if (empty($this->instance)) { - $this->content->text = ''; + if (empty($this->course)) { + $this->content = ''; return $this->content; } - $this->content->text = '
      '; - $this->content->text .= '
      '; - $this->content->text .= ' '; - $this->content->text .= ''; - $this->content->text .= helpbutton('search', get_string('search'), 'moodle', true, false, '', true); - $this->content->text .= ''; - $this->content->text .= '
      '; + $this->content = New object; + $this->content->text = ''; + $this->content->footer = ''; + + $form = forum_print_search_form($this->course, '', true); + $this->content->text = '
      '.$form.'
      '; return $this->content; } diff --git a/blocks/search_forums/styles.php b/blocks/search_forums/styles.php deleted file mode 100644 index c0a4445c0c2..00000000000 --- a/blocks/search_forums/styles.php +++ /dev/null @@ -1,8 +0,0 @@ -.block_search_forums .searchform { - text-align: center; -} - -.block_search_forums .searchform img { - vertical-align: middle; -} - diff --git a/blocks/section_links/block_section_links.php b/blocks/section_links/block_section_links.php index ee295de9640..a6f08a8639a 100644 --- a/blocks/section_links/block_section_links.php +++ b/blocks/section_links/block_section_links.php @@ -1,15 +1,8 @@ title = get_string('blockname', 'block_section_links'); - $this->version = 2004052800; - } - - function instance_config($instance) { - parent::instance_config($instance); - $course = get_record('course', 'id', $this->instance->pageid); + function CourseBlock_section_links ($course) { if (isset($course->format)) { if ($course->format == 'topics') { $this->title = get_string('topics', 'block_section_links'); @@ -18,11 +11,16 @@ class block_section_links extends block_base { } else { $this->title = get_string('blockname', 'block_section_links'); } + } else { + $this->title = get_string('blockname', 'block_section_links'); } + $this->content_type = BLOCK_TYPE_TEXT; + $this->course = $course; + $this->version = 2004052800; } function applicable_formats() { - return (array('course-view-weeks' => true, 'course-view-topics' => true)); + return (array('weeks' => true, 'topics' => true)); } function get_content() { @@ -34,46 +32,41 @@ class block_section_links extends block_base { return $this->content; } - $this->content = New stdClass; - $this->content->footer = ''; - $this->content->text = ''; - - if (empty($this->instance)) { + if (empty($this->course)) { + $this->content = ''; return $this->content; } - $course = get_record('course', 'id', $this->instance->pageid); - - if ($course->format == 'weeks') { - $highlight = ceil((time()-$course->startdate)/604800); + if ($this->course->format == 'weeks') { + $highlight = ceil((time()-$this->course->startdate)/604800); $linktext = get_string('jumptocurrentweek', 'block_section_links'); $sectionname = 'week'; } - else if ($course->format == 'topics') { - $highlight = $course->marker; + else if ($this->course->format == 'topics') { + $highlight = $this->course->marker; $linktext = get_string('jumptocurrenttopic', 'block_section_links'); $sectionname = 'topic'; } $inc = 1; - if ($course->numsections > 22) { + if ($this->course->numsections > 22) { $inc = 2; } - if ($course->numsections > 40) { + if ($this->course->numsections > 40) { $inc = 5; } - + $courseid = $this->course->id; if (!empty($USER->id)) { - $display = get_field('course_display', 'display', 'course', $this->instance->pageid, 'userid', $USER->id); + $display = get_field('course_display', 'display', 'course', $courseid, 'userid', $USER->id); } if (!empty($display)) { - $link = $CFG->wwwroot.'/course/view.php?id='.$this->instance->pageid.'&'.$sectionname.'='; + $link = "$CFG->wwwroot/course/view.php?id=$courseid&$sectionname="; } else { $link = '#'; } - $text = ''; - for ($i = $inc; $i <= $course->numsections; $i += $inc) { - $isvisible = get_field('course_sections', 'visible', 'course', $this->instance->pageid, 'section', $i); - if (!$isvisible and !isteacher($this->instance->pageid)) { + $text = ''; + for ($i = $inc; $i <= $this->course->numsections; $i += $inc) { + $isvisible = get_field('course_sections', 'visible', 'course', $this->course->id, 'section', $i); + if (!$isvisible and !isteacher($this->course->id)) { continue; } $style = ($isvisible) ? '' : ' class="dimmed"'; @@ -84,10 +77,10 @@ class block_section_links extends block_base { } } if ($highlight) { - $isvisible = get_field('course_sections', 'visible', 'course', $this->instance->pageid, 'section', $highlight); - if ($isvisible or isteacher($this->instance->pageid)) { + $isvisible = get_field('course_sections', 'visible', 'course', $this->course->id, 'section', $highlight); + if ($isvisible or isteacher($this->course->id)) { $style = ($isvisible) ? '' : ' class="dimmed"'; - $text .= "
      $linktext"; + $text .= "
      $linktext"; } } diff --git a/blocks/site_main_menu/block_site_main_menu.php b/blocks/site_main_menu/block_site_main_menu.php index c2c07f43c20..f501f6bc6e5 100644 --- a/blocks/site_main_menu/block_site_main_menu.php +++ b/blocks/site_main_menu/block_site_main_menu.php @@ -1,8 +1,10 @@ title = get_string('mainmenu'); + $this->content_type = BLOCK_TYPE_LIST; + $this->course = $course; $this->version = 2004052700; } @@ -17,34 +19,28 @@ class block_site_main_menu extends block_list { return $this->content; } + if (empty($this->course)) { + return ''; + } + $this->content = New stdClass; $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; - if (empty($this->instance)) { - return $this->content; - } - - $course = get_record('course', 'id', $this->instance->pageid); - - $isteacher = isteacher($this->instance->pageid); - $isediting = isediting($this->instance->pageid); - $ismoving = ismoving($this->instance->pageid); - - $sections = get_all_sections($this->instance->pageid); - if(empty($sections) or !isset($sections[0])) { - return $this->content; - } + $isteacher = isteacher($this->course->id); + $isediting = isediting($this->course->id); + $ismoving = ismoving($this->course->id); + $sections = get_all_sections($this->course->id); $section = $sections[0]; - if (!empty($section->sequence) || $isediting) { - get_all_mods($this->instance->pageid, $mods, $modnames, $modnamesplural, $modnamesused); + if($section->sequence || $isediting) { + get_all_mods($this->course->id, $mods, $modnames, $modnamesplural, $modnamesused); } - $groupbuttons = $course->groupmode; - $groupbuttonslink = (!$course->groupmodeforce); + $groupbuttons = $this->course->groupmode; + $groupbuttonslink = (!$this->course->groupmodeforce); if ($ismoving) { $strmovehere = get_string('movehere'); @@ -53,12 +49,12 @@ class block_site_main_menu extends block_list { $stractivityclipboard = $USER->activitycopyname; } - $modinfo = unserialize($course->modinfo); + $modinfo = unserialize($this->course->modinfo); $editbuttons = ''; if ($ismoving) { - $this->content->icons[] = ' '; - $this->content->items[] = $USER->activitycopyname.' ('.$strcancel.')'; + $this->content->icons[] = ' '; + $this->content->items[] = $USER->activitycopyname.' ('.$strcancel.')'; } if (!empty($section->sequence)) { @@ -71,7 +67,7 @@ class block_site_main_menu extends block_list { if ($isediting && !$ismoving) { if ($groupbuttons) { if (! $mod->groupmodelink = $groupbuttonslink) { - $mod->groupmode = $course->groupmode; + $mod->groupmode = $this->course->groupmode; } } else { @@ -86,12 +82,14 @@ class block_site_main_menu extends block_list { if ($mod->id == $USER->activitycopy) { continue; } - $this->content->items[] = ''. - ''.$strmovehere.''; + $this->content->items[] = ''. + ''.$strmovehere.''; $this->content->icons[] = ''; } $instancename = urldecode($modinfo[$modnumber]->name); - $instancename = format_string($instancename, true, $this->instance->pageid); + if (!empty($CFG->filterall)) { + $instancename = filter_text(''.$instancename.'', $this->course->id); + } $linkcss = $mod->visible ? '' : ' class="dimmed" '; if (!empty($modinfo[$modnumber]->extra)) { $extra = urldecode($modinfo[$modnumber]->extra); @@ -110,21 +108,21 @@ class block_site_main_menu extends block_list { } else { $this->content->items[] = ''.$instancename.''.$editbuttons; - $this->content->icons[] = ''.$mod->modfullname.''; + $this->content->icons[] = ''.$mod->modfullname.''; } } } } if ($ismoving) { - $this->content->items[] = ''. - ''.$strmovehere.''; + $this->content->items[] = ''. + ''.$strmovehere.''; $this->content->icons[] = ''; } if ($isediting && $modnames) { $this->content->footer = '
      '. - print_section_add_menus($course, 0, $modnames, true, true).'
      '; + print_section_add_menus($this->course, 0, $modnames, true, true).''; } else { $this->content->footer = ''; } diff --git a/blocks/social_activities/block_social_activities.php b/blocks/social_activities/block_social_activities.php index 5ab3c3acd98..e769e1b836d 100644 --- a/blocks/social_activities/block_social_activities.php +++ b/blocks/social_activities/block_social_activities.php @@ -1,13 +1,15 @@ title = get_string('blockname','block_social_activities'); + $this->content_type = BLOCK_TYPE_LIST; + $this->course = $course; $this->version = 2004041800; } function applicable_formats() { - return array('course-view-social' => true); + return array('social' => true); } function get_content() { @@ -16,29 +18,26 @@ class block_social_activities extends block_list { if ($this->content !== NULL) { return $this->content; } + if (empty($this->course)) { + return ''; + } - $this->content = new stdClass; + $this->content = New object; $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; - if (empty($this->instance)) { - return $this->content; - } - - $course = get_record('course', 'id', $this->instance->pageid); - // To make our day, we start with an ugly hack global $sections, $mods, $modnames; $section = $sections[0]; // That wasn't so bad, was it? - $groupbuttons = $course->groupmode; - $groupbuttonslink = (!$course->groupmodeforce); - $isteacher = isteacher($this->instance->pageid); - $isediting = isediting($this->instance->pageid); - $ismoving = ismoving($this->instance->pageid); + $groupbuttons = $this->course->groupmode; + $groupbuttonslink = (!$this->course->groupmodeforce); + $isteacher = isteacher($this->course->id); + $isediting = isediting($this->course->id); + $ismoving = ismoving($this->course->id); if ($ismoving) { $strmovehere = get_string('movehere'); $strmovefull = strip_tags(get_string('movefull', '', "'$USER->activitycopyname'")); @@ -46,11 +45,11 @@ class block_social_activities extends block_list { $stractivityclipboard = $USER->activitycopyname; } - $modinfo = unserialize($course->modinfo); + $modinfo = unserialize($this->course->modinfo); $editbuttons = ''; if ($ismoving) { - $this->content->icons[] = ' \"\"'; + $this->content->icons[] = ' '; $this->content->items[] = $USER->activitycopyname.' ('.$strcancel.')'; } @@ -64,7 +63,7 @@ class block_social_activities extends block_list { if ($isediting && !$ismoving) { if ($groupbuttons) { if (! $mod->groupmodelink = $groupbuttonslink) { - $mod->groupmode = $course->groupmode; + $mod->groupmode = $this->course->groupmode; } } else { @@ -79,12 +78,14 @@ class block_social_activities extends block_list { if ($mod->id == $USER->activitycopy) { continue; } - $this->content->items[] = ''. - ''.$strmovehere.''; + $this->content->items[] = ''. + ''.$strmovehere.''; $this->content->icons[] = ''; } $instancename = urldecode($modinfo[$modnumber]->name); - $instancename = format_string($instancename, true, $this->instance->pageid); + if (!empty($CFG->filterall)) { + $instancename = filter_text(''.$instancename.'', $this->course->id); + } $linkcss = $mod->visible ? '' : ' class="dimmed" '; if (!empty($modinfo[$modnumber]->extra)) { $extra = urldecode($modinfo[$modnumber]->extra); @@ -103,21 +104,21 @@ class block_social_activities extends block_list { } else { $this->content->items[] = ''.$instancename.''.$editbuttons; - $this->content->icons[] = ''.$mod->modfullname.''; + $this->content->icons[] = ''.$mod->modfullname.''; } } } } if ($ismoving) { - $this->content->items[] = ''. - ''.$strmovehere.''; + $this->content->items[] = ''. + ''.$strmovehere.''; $this->content->icons[] = ''; } if ($isediting && $modnames) { $this->content->footer = '
      '. - print_section_add_menus($course, 0, $modnames, true, true).'
      '; + print_section_add_menus($this->course, 0, $modnames, true, true).''; } else { $this->content->footer = ''; } diff --git a/blocks/version.php b/blocks/version.php index 6f8d67d2b88..05834435d26 100644 --- a/blocks/version.php +++ b/blocks/version.php @@ -5,4 +5,4 @@ // database (blocks_version) to determine whether upgrades should // be performed (see db/backup_*.php) -$blocks_version = 2005022400; // The current version is a date (YYYYMMDDXX) +$blocks_version = 2004052700; // The current version is a date (YYYYMMDDXX) diff --git a/calendar/event.php b/calendar/event.php index 89e944b8e5b..1b44b1da763 100644 --- a/calendar/event.php +++ b/calendar/event.php @@ -50,19 +50,17 @@ redirect(CALENDAR_URL.'view.php?view=upcoming'); } - $action = required_param('action', PARAM_ALPHA); - $eventid = optional_param('id', 0, PARAM_INT); - $eventtype = optional_param('type', 'select', PARAM_ALPHA); - $urlcourse = optional_param('course', 0, PARAM_INT); + require_variable($_REQUEST['action']); + optional_variable($_REQUEST['id']); + optional_variable($_REQUEST['type'], 'select'); + $_REQUEST['id'] = intval($_REQUEST['id']); // Always a good idea, against SQL injections if(!$site = get_site()) { redirect($CFG->wwwroot.'/'.$CFG->admin.'/index.php'); } - $strcalendar = get_string('calendar', 'calendar'); - $now = usergetdate(time()); - $nav = calendar_get_link_tag($strcalendar, CALENDAR_URL.'view.php?view=upcoming&', $now['mday'], $now['mon'], $now['year']); + $nav = calendar_get_link_tag(get_string('calendar', 'calendar'), CALENDAR_URL.'view.php?view=upcoming&', $now['mday'], $now['mon'], $now['year']); $day = intval($now['mday']); $mon = intval($now['mon']); $yr = intval($now['year']); @@ -74,23 +72,25 @@ } // If a course has been supplied in the URL, change the filters to show that one - if($urlcourse > 0 && record_exists('course', 'id', $urlcourse)) { - if($urlcourse == SITEID) { - // If coming from the site page, show all courses - $SESSION->cal_courses_shown = calendar_get_default_courses(true); - calendar_set_referring_course(0); - } - else { - // Otherwise show just this one - $SESSION->cal_courses_shown = $urlcourse; - calendar_set_referring_course($SESSION->cal_courses_shown); + if(!empty($_GET['course'])) { + if(is_numeric($_GET['course']) && $_GET['course'] > 0 && record_exists('course', 'id', $_GET['course'])) { + if($_GET['course'] == 1) { + // If coming from the home page, show all courses + $SESSION->cal_courses_shown = calendar_get_default_courses(true); + calendar_set_referring_course(0); + } + else { + // Otherwise show just this one + $SESSION->cal_courses_shown = intval($_GET['course']); + calendar_set_referring_course($SESSION->cal_courses_shown); + } } } - switch($action) { + switch($_REQUEST['action']) { case 'delete': $title = get_string('deleteevent', 'calendar'); - $event = get_record('event', 'id', $eventid); + $event = get_record('event', 'id', $_REQUEST['id']); if($event === false) { error('Invalid event'); } @@ -101,7 +101,7 @@ case 'edit': $title = get_string('editevent', 'calendar'); - $event = get_record('event', 'id', $eventid); + $event = get_record('event', 'id', $_REQUEST['id']); if($event === false) { error('Invalid event'); } @@ -111,7 +111,8 @@ if($form = data_submitted()) { - $form->name = strip_tags($form->name,''); // Strip all tags, but + $form->name = strip_tags($form->name); // Strip all tags + $form->description = clean_text($form->description , $form->format); // Clean up any bad tags $form->timestart = make_timestamp($form->startyr, $form->startmon, $form->startday, $form->starthr, $form->startmin); if($form->duration == 1) { @@ -121,7 +122,7 @@ } } else if($form->duration == 2) { - $form->timeduration = $form->minutes * MINSECS; + $form->timeduration = $form->minutes * 60; } else { $form->timeduration = 0; @@ -132,7 +133,6 @@ update_record('event', $form); /// Log the event update. - $form->name = stripslashes($form->name); //To avoid double-slashes add_to_log($form->courseid, 'calendar', 'edit', 'event.php?action=edit&id='.$form->id, $form->name); // OK, now redirect to day view @@ -151,7 +151,8 @@ $form = data_submitted(); if(!empty($form) && $form->type == 'defined') { - $form->name = strip_tags($form->name, ''); // Strip all tags but + $form->name = strip_tags($form->name); // Strip all tags + $form->description = clean_text($form->description , $form->format); // Clean up any bad tags $form->timestart = make_timestamp($form->startyr, $form->startmon, $form->startday, $form->starthr, $form->startmin); if($form->duration == 1) { @@ -161,7 +162,7 @@ } } else if ($form->duration == 2) { - $form->timeduration = $form->minutes * MINSECS; + $form->timeduration = $form->minutes * 60; } else { $form->timeduration = 0; @@ -177,18 +178,14 @@ $eventid = insert_record('event', $form, true); /// Log the event entry. - $form->name = stripslashes($form->name); //To avoid double-slashes add_to_log($form->courseid, 'calendar', 'add', 'event.php?action=edit&id='.$eventid, $form->name); if ($form->repeat) { for($i = 1; $i < $form->repeats; $i++) { - // [pj] - // This will not necessarily work correctly because of DST $form->timestart += 604800; // add one week /// Get the event id for the log record. $eventid = insert_record('event', $form, true); /// Log the event entry. - $form->name = stripslashes($form->name); //To avoid double-slashes add_to_log($form->courseid, 'calendar', 'add', 'event.php?action=edit&id='.$eventid, $form->name); } } @@ -208,37 +205,42 @@ // Let's see if we are supposed to provide a referring course link // but NOT for the "main page" course - if($SESSION->cal_course_referer != SITEID && + if($SESSION->cal_course_referer > 1 && ($shortname = get_field('course', 'shortname', 'id', $SESSION->cal_course_referer)) !== false) { // If we know about the referring course, show a return link $nav = ''.$shortname.' -> '.$nav; } - print_header($site->shortname.': '.$strcalendar.': '.$title, $strcalendar, $nav.' -> '.$title, - $focus, '', true, '', user_login_string($site)); + print_header(get_string('calendar', 'calendar').': '.$title, $site->fullname, $nav.' -> '.$title, + $focus, '', true, '', '

      '.user_login_string($site).'

      '); echo calendar_overlib_html(); - echo ''; - echo '
      '; + echo ''; + echo ''; // START: Last column (3-month display) + echo ''; + echo '
      '; - switch($action) { + switch($_REQUEST['action']) { case 'delete': - $confirm = optional_param('confirm', 0, PARAM_INT); - if($confirm) { + if(!empty($_REQUEST['confirm']) && $_REQUEST['confirm'] == 1) { // Kill it and redirect to day view - if(($event = get_record('event', 'id', $eventid)) !== false) { + if(($event = get_record('event', 'id', $_REQUEST['id'])) !== false) { /// Log the event delete. - delete_records('event', 'id', $eventid); + delete_records('event', 'id', $_REQUEST['id']); // pj - fixed the course id problem, but now we have another one: // what to do with the URL? add_to_log($event->courseid, 'calendar', 'delete', '', $event->name); } - redirect(CALENDAR_URL.'view.php?view=day&cal_d='.$_REQUEST['d'].'&cal_m='.$_REQUEST['m'].'&cal_y='.$_REQUEST['y']); - + if(checkdate($_REQUEST['m'], $_REQUEST['d'], $_REQUEST['y'])) { + // Being a bit paranoid to check this, but it doesn't hurt + redirect(CALENDAR_URL.'view.php?view=day&cal_d='.$_REQUEST['d'].'&cal_m='.$_REQUEST['m'].'&cal_y='.$_REQUEST['y']); + } + else { + // Redirect to now + redirect(CALENDAR_URL.'view.php?view=day&cal_d='.$now['mday'].'&cal_m='.$now['mon'].'&cal_y='.$now['year']); + } } else { $eventtime = usergetdate($event->timestart); @@ -246,13 +248,9 @@ $d = $eventtime['mday']; $y = $eventtime['year']; // Display confirmation form - echo '
      '.get_string('deleteevent', 'calendar').': '.$event->name.'
      '; - echo '

      '.get_string('confirmeventdelete', 'calendar').'

      '; - echo '
      '; - $event->time = calendar_format_event_time($event, time(), '', false); - calendar_print_event($event); - echo '
      '; + print_side_block_start(get_string('deleteevent', 'calendar').': '.$event->name, array('class' => 'mycalendar')); include('event_delete.html'); + print_side_block_end(); } break; @@ -265,7 +263,7 @@ $form->timeduration = $event->timeduration; $form->id = $event->id; $form->format = $defaultformat; - if($event->timeduration > HOURSECS) { + if($event->timeduration > 3600) { // More than one hour, so default to normal duration mode $form->duration = 1; $form->minutes = ''; @@ -273,7 +271,7 @@ else if($event->timeduration) { // Up to one hour, "minutes" mode probably is better here $form->duration = 2; - $form->minutes = $event->timeduration / MINSECS; + $form->minutes = $event->timeduration / 60; } else { // No duration @@ -287,8 +285,9 @@ $course = $site; } - echo '
      '.get_string('editevent', 'calendar').'
      '; + print_side_block_start(get_string('editevent', 'calendar'), array('class' => 'mycalendar')); include('event_edit.html'); + print_side_block_end(); if ($usehtmleditor) { use_html_editor("description"); } @@ -318,12 +317,12 @@ calendar_get_allowed_types($allowed); if(!$allowed->groups && !$allowed->courses && !$allowed->site) { // Take the shortcut - $eventtype = 'user'; + $_REQUEST['type'] = 'user'; } $header = ''; - switch($eventtype) { + switch($_REQUEST['type']) { case 'user': $form->name = ''; $form->description = ''; @@ -341,10 +340,11 @@ $header = get_string('typeuser', 'calendar'); break; case 'group': - $groupid = optional_param('groupid', 0, PARAM_INT); + optional_variable($_REQUEST['groupid']); + $groupid = $_REQUEST['groupid']; if(!($group = get_record('groups', 'id', $groupid) )) { calendar_get_allowed_types($allowed); - $eventtype = 'select'; + $_REQUEST['type'] = 'select'; } else { $form->name = ''; @@ -364,10 +364,11 @@ } break; case 'course': - $courseid = optional_param('courseid', 0, PARAM_INT); + optional_variable($_REQUEST['courseid']); + $courseid = $_REQUEST['courseid']; if(!record_exists('course', 'id', $courseid)) { calendar_get_allowed_types($allowed); - $eventtype = 'select'; + $_REQUEST['type'] = 'select'; } else { $form->name = ''; @@ -414,9 +415,8 @@ $header = ' ('.$header.')'; } - echo '
      '.get_string('newevent', 'calendar').$header.'
      '; - - if($eventtype == 'select') { + print_side_block_start(get_string('newevent', 'calendar').$header, array('class' => 'mycalendar')); + if($_REQUEST['type'] == 'select') { $defaultcourse = $SESSION->cal_course_referer; if(isteacheredit($defaultcourse, $USER->id)) { $defaultgroup = 0; @@ -424,12 +424,11 @@ else { $defaultgroup = user_group($defaultcourse, $USER->id); } - $groupid = optional_param('groupid', $defaultgroup->id, PARAM_INT); - $courseid = optional_param('courseid', $defaultcourse, PARAM_INT); - echo '

      '.get_string('eventkind', 'calendar').':

      '; - echo '
      '; + optional_variable($_REQUEST['groupid'], $defaultgroup->id); + optional_variable($_REQUEST['courseid'], $defaultcourse); + $groupid = $_REQUEST['groupid']; + $courseid = $_REQUEST['courseid']; include('event_select.html'); - echo '
      '; } else { include('event_new.html'); @@ -437,36 +436,36 @@ use_html_editor("description"); } } - + print_side_block_end(); break; } echo '
      '; $defaultcourses = calendar_get_default_courses(); calendar_set_filters($courses, $groups, $users, $defaultcourses, $defaultcourses); + + print_side_block_start(get_string('monthlyview', 'calendar')); list($prevmon, $prevyr) = calendar_sub_month($mon, $yr); list($nextmon, $nextyr) = calendar_add_month($mon, $yr); - - echo ''; - echo '
      '.get_string('monthlyview', 'calendar').'
      '; - echo '
      '; - echo calendar_filter_controls('event', 'action='.$action.'&type='.$eventtype.'&id='.$eventid); - echo '
      '; - - echo '
      '; + + echo calendar_filter_controls('event', 'action='.$_REQUEST['action'].'&type='.$_REQUEST['type'].'&id='.$_REQUEST['id']); + echo '

      '; echo calendar_top_controls('display', array('m' => $prevmon, 'y' => $prevyr)); echo calendar_get_mini($courses, $groups, $users, $prevmon, $prevyr); - echo '

      '; + echo '

      '; echo calendar_top_controls('display', array('m' => $mon, 'y' => $yr)); echo calendar_get_mini($courses, $groups, $users, $mon, $yr); - echo '

      '; + echo '

      '; echo calendar_top_controls('display', array('m' => $nextmon, 'y' => $nextyr)); echo calendar_get_mini($courses, $groups, $users, $nextmon, $nextyr); - echo '

      '; - + echo '

      '; + print_side_block_end(); + print_spacer(1, 180); echo '
      '; print_footer(); @@ -529,12 +528,24 @@ function calendar_get_allowed_types(&$allowed) { $allowed->user = true; // User events always allowed $allowed->groups = false; // This may change just below $allowed->courses = false; // This may change just below - $allowed->site = isteacheredit(SITEID); + $allowed->site = isadmin($USER->id); - if(!empty($SESSION->cal_course_referer) && $SESSION->cal_course_referer != SITEID && isteacheredit($SESSION->cal_course_referer, $USER->id)) { + if(!empty($SESSION->cal_course_referer) && $SESSION->cal_course_referer > 1 && isteacheredit($SESSION->cal_course_referer, $USER->id)) { $allowed->courses = array($SESSION->cal_course_referer => 1); $allowed->groups = get_groups($SESSION->cal_course_referer); } + + //[pj]: This was used when we wanted to display all legal choices + /* + if($allowed->site) { + $allowed->courses = get_courses('all', 'c.shortname'); + $allowed->groups = get_records_sql('SELECT g.*, c.fullname FROM '.$CFG->prefix.'groups g LEFT JOIN '.$CFG->prefix.'course c ON g.courseid = c.id ORDER BY c.shortname'); + } + else if(!empty($USER->teacheredit)) { + $allowed->courses = get_records_select('course', 'id != 1 AND id IN ('.implode(',', array_keys($USER->teacheredit)).')'); + $allowed->groups = get_records_sql('SELECT g.*, c.fullname FROM '.$CFG->prefix.'groups g LEFT JOIN '.$CFG->prefix.'course c ON g.courseid = c.id WHERE g.courseid IN ('.implode(',', array_keys($USER->teacheredit)).')'); + } + */ } ?> diff --git a/calendar/event_delete.html b/calendar/event_delete.html index 76e8b926ddc..7a550512e0b 100644 --- a/calendar/event_delete.html +++ b/calendar/event_delete.html @@ -1,33 +1,27 @@ - - - - - -
      -
      -

      -   - - - - - - - -   -

      -
      -
      -
      -

      -   - - - - - -   -

      -
      -
      - +

      +
      + + + + + +
      +
      + + + + + + + +
      +
      +
      + + + + + +
      +
      +
      diff --git a/calendar/event_edit.html b/calendar/event_edit.html index e8408567b03..359b2cff9b2 100644 --- a/calendar/event_edit.html +++ b/calendar/event_edit.html @@ -1,5 +1,5 @@
      - +
      - +
      : @@ -59,7 +59,7 @@

      diff --git a/calendar/event_new.html b/calendar/event_new.html index 3c036bec4e7..ec22db8cebe 100644 --- a/calendar/event_new.html +++ b/calendar/event_new.html @@ -3,13 +3,13 @@ $course = get_record('course', 'id', ($form->courseid) ? $form->courseid : $site->id); ?> - +
      @@ -18,9 +18,9 @@ : @@ -29,9 +29,9 @@ : @@ -47,15 +47,15 @@
      duration == 1) echo 'checked="checked"'; ?>/> - timestart + $form->timeduration);?> - - timestart + $form->timeduration) ?> + timestart + $form->timeduration);?> + + timestart + $form->timeduration) ?>
      duration == 2) echo 'checked="checked"'; ?>/> - +
      @@ -77,7 +77,7 @@ - + @@ -85,7 +85,7 @@ - +
      : - +
      - description); - if (isset($err['description'])) formerr($err['description']); + if (isset($err['description'])) formerr($err['description']); ?>
      - timestart);?> - - timestart) ?> + timestart);?> + + timestart) ?>

      diff --git a/calendar/event_select.html b/calendar/event_select.html index 1e827f713ff..872c9d51224 100644 --- a/calendar/event_select.html +++ b/calendar/event_select.html @@ -1,35 +1,37 @@ - + +

      + + +

      - + + - + + +
      - user)) { ?>
      - - groups)) { ?>
      - -
      - - courses)) { ?> -
      - - site)) { ?> -
      - -
      : + user)) { ?>

      + + groups)) { ?>

      + + + courses)) { ?> +

      + + site)) { ?> +

      + +
      - - -   +

      + +

      +
      -

      - - -

      - \ No newline at end of file diff --git a/calendar/lib.php b/calendar/lib.php index ee6dae131e7..95fbbf60441 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -38,26 +38,17 @@ // // ///////////////////////////////////////////////////////////////////////////// -// These are read by the administration component to provide default values -define('CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD', 21); -define('CALENDAR_DEFAULT_UPCOMING_MAXEVENTS', 10); -define('CALENDAR_DEFAULT_STARTING_WEEKDAY', 1); -// This is a packed bitfield: day X is "weekend" if $field & (1 << X) is true -// Default value = 65 = 64 + 1 = 2^6 + 2^0 = Saturday & Sunday -define('CALENDAR_DEFAULT_WEEKEND', 65); - -// Fetch the correct values from admin settings/lang pack -// If no such settings found, use the above defaults -$firstday = isset($CFG->calendar_startwday) ? $CFG->calendar_startwday : get_string('firstdayofweek'); -if(!is_numeric($firstday)) { - define ('CALENDAR_STARTING_WEEKDAY', CALENDAR_DEFAULT_STARTING_WEEKDAY); +$firstday = get_string('firstdayofweek'); +if(!is_numeric($firstday)) { + define ('CALENDAR_STARTING_WEEKDAY', 1); } else { define ('CALENDAR_STARTING_WEEKDAY', intval($firstday) % 7); } -define ('CALENDAR_UPCOMING_DAYS', isset($CFG->calendar_lookahead) ? intval($CFG->calendar_lookahead) : CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD); -define ('CALENDAR_UPCOMING_MAXEVENTS', isset($CFG->calendar_maxevents) ? intval($CFG->calendar_maxevents) : CALENDAR_DEFAULT_UPCOMING_MAXEVENTS); -define ('CALENDAR_WEEKEND', isset($CFG->calendar_weekend) ? intval($CFG->calendar_weekend) : CALENDAR_DEFAULT_WEEKEND); + +define ('SECS_IN_DAY', 86400); +define ('CALENDAR_UPCOMING_DAYS', 21); +define ('CALENDAR_UPCOMING_MAXEVENTS', 10); define ('CALENDAR_URL', $CFG->wwwroot.'/calendar/'); define ('CALENDAR_TF_24', '%H:%M'); define ('CALENDAR_TF_12', '%I:%M %p'); @@ -106,7 +97,7 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y $display->tstart = gmmktime(0, 0, 0, $m, 1, $y); // This is GMT $display->tend = gmmktime(23, 59, 59, $m, $display->maxdays, $y); // GMT - $startwday = dayofweek(1, $m, $y); + $startwday = gmdate('w', $display->tstart); // $display->tstart is already GMT, so don't use date(): messes with server's TZ // Align the starting weekday to fall in our display range // This is simple, not foolproof. @@ -115,24 +106,23 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y } // Get the events matching our criteria. Don't forget to offset the timestamps for the user's TZ! - // TODO: usertime() doesn't compensate for DST. Thus the line below is wrong. $whereclause = calendar_sql_where(usertime($display->tstart), usertime($display->tend), $users, $groups, $courses); if($whereclause === false) { $events = array(); } else { - $events = get_records_select('event', $whereclause, 'timestart'); + $events = get_records_select('event', $whereclause); } // This is either a genius idea or an idiot idea: in order to not complicate things, we use this rule: if, after - // possibly removing SITEID from $courses, there is only one course left, then clicking on a day in the month + // possibly removing courseid 1 from $courses, there is only one course left, then clicking on a day in the month // will also set the $SESSION->cal_courses_shown variable to that one course. Otherwise, we 'd need to add extra // arguments to this function. $morehref = ''; if(!empty($courses)) { - $courses = array_diff($courses, array(SITEID)); + $courses = array_diff($courses, array(1)); if(count($courses) == 1) { $morehref = '&course='.reset($courses); } @@ -143,18 +133,18 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y //calendar_events_by_day($events, $display->tstart, $eventsbyday, $durationbyday, $typesbyday); calendar_events_by_day($events, $m, $y, $eventsbyday, $durationbyday, $typesbyday); - $content .= ''; // Begin table - $content .= ''; // Header row: day names + $content .= '
      '; // Begin table + $content .= ''; // Header row: day names // Print out the names of the weekdays $days = array('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'); for($i = $display->minwday; $i <= $display->maxwday; ++$i) { // This uses the % operator to get the correct weekday no matter what shift we have // applied to the $display->minwday : $display->maxwday range from the default 0 : 6 - $content .= ''; + $content .= ''; } - $content .= ''; // End of day names; prepare for day numbers + $content .= ''; // End of day names; prepare for day numbers // For the table display. $week is the row; $dayweek is the column. $dayweek = $startwday; @@ -176,13 +166,13 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y // Reset vars $cell = ''; - if(CALENDAR_WEEKEND & (1 << ($dayweek % 7))) { + if($dayweek % 7 == 0 || $dayweek % 7 == 6) { // Weekend. This is true no matter what the exact range is. - $class = 'weekend day'; + $class = 'cal_weekend'; } else { // Normal working day. - $class = 'day'; + $class = ''; } // Special visual fx if an event is defined @@ -200,10 +190,10 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y $popupicon = $CFG->modpixpath.'/'.$event->modulename.'/icon.gif'; $popupalt = $event->modulename; - } else if ($event->courseid == SITEID) { // Site event + } else if ($event->courseid == 1) { // Site event $popupicon = $CFG->pixpath.'/c/site.gif'; $popupalt = ''; - } else if ($event->courseid != 0 && $event->courseid != SITEID && $event->groupid == 0) { // Course event + } else if ($event->courseid > 1 and empty($event->groupid)) { // Course event $popupicon = $CFG->pixpath.'/c/course.gif'; $popupalt = ''; } else if ($event->groupid) { // Group event @@ -213,7 +203,7 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y $popupicon = $CFG->pixpath.'/c/user.gif'; $popupalt = ''; } - $popupcontent .= ''; + $popupcontent .= ''; } $popupcaption = get_string('eventsfor', 'calendar', userdate($events[$eventid]->timestart, $strftimetimedayshort)); @@ -222,39 +212,39 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y // Class and cell content if(isset($typesbyday[$day]['startglobal'])) { - $class .= ' event_global'; + $class .= ' cal_event_global'; } else if(isset($typesbyday[$day]['startcourse'])) { - $class .= ' event_course'; + $class .= ' cal_event_course'; } else if(isset($typesbyday[$day]['startgroup'])) { - $class .= ' event_group'; + $class .= ' cal_event_group'; } else if(isset($typesbyday[$day]['startuser'])) { - $class .= ' event_user'; + $class .= ' cal_event_user'; } - $cell = ''.$day.''; + $cell = ''.$day.''; } else { $cell = $day; } if(isset($typesbyday[$day]['durationglobal'])) { - $class .= ' duration_global'; + $class .= ' cal_duration_global'; } else if(isset($typesbyday[$day]['durationcourse'])) { - $class .= ' duration_course'; + $class .= ' cal_duration_course'; } else if(isset($typesbyday[$day]['durationgroup'])) { - $class .= ' duration_group'; + $class .= ' cal_duration_group'; } else if(isset($typesbyday[$day]['durationuser'])) { - $class .= ' duration_user'; + $class .= ' cal_duration_user'; } // Special visual fx for today if($display->thismonth && $day == $d) { - $class .= ' today'; + $class .= ' cal_today'; } // Just display it @@ -270,7 +260,7 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y } $content .= ''; // Last row ends - $content .= '
      '.get_string($days[$i % 7], 'calendar').''.get_string($days[$i % 7], 'calendar').'
      '; // Tabular display of days ends + $content .= '
      '; // Tabular display of days ends return $content; } @@ -278,7 +268,7 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxevents, $fromtime=0) { global $CFG; - $display = &new stdClass; + $display = &New stdClass; $display->range = $daysinfuture; // How many days in the future we 'll look $display->maxevents = $maxevents; @@ -297,26 +287,28 @@ function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxeve $display->tstart = $usermidnighttoday; } - // This works correctly with respect to the user's DST, but it is accurate - // only because $fromtime is always the exact midnight of some day! - $display->tend = usergetmidnight($display->tstart + DAYSECS * $display->range + 3 * HOURSECS) - 1; + // This effectively adds as many days as needed, and the final SECS_IN_DAY - 1 + // serves to cover the duration until the end of the final day. We could + // just do another gmmktime() and an addition, but this is "faster" :) + $display->tend = $display->tstart + (SECS_IN_DAY * $display->range) - 1; // Get the events matching our criteria $whereclause = calendar_sql_where($display->tstart, $display->tend, $users, $groups, $courses); if ($whereclause === false) { $events = false; } else { - $events = get_records_select('event', $whereclause, 'timestart'); + $whereclause .= ' ORDER BY timestart'; // We want them this way + $events = get_records_select('event', $whereclause); } // This is either a genius idea or an idiot idea: in order to not complicate things, we use this rule: if, after - // possibly removing SITEID from $courses, there is only one course left, then clicking on a day in the month + // possibly removing courseid 1 from $courses, there is only one course left, then clicking on a day in the month // will also set the $SESSION->cal_courses_shown variable to that one course. Otherwise, we 'd need to add extra // arguments to this function. $morehref = ''; if(!empty($courses)) { - $courses = array_diff($courses, array(SITEID)); + $courses = array_diff($courses, array(1)); if(count($courses) == 1) { $morehref = '&course='.reset($courses); } @@ -329,139 +321,100 @@ function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxeve break; } - $event->time = calendar_format_event_time($event, $now, $morehref); - $output[] = $event; + $eventtime = calendar_format_event_time($event, $now, $morehref); + + $outkey = count($output); + + $output[$outkey] = $event; // Grab the whole raw event by default + + // Now we know how to display the time, we have to see how to display the event + if(!empty($event->modulename)) { // Activity event + + // The module name is set. I will assume that it has to be displayed, and + // also that it is an automatically-generated event. And of course that the + // three fields for get_coursemodule_from_instance are set correctly. + + calendar_get_course_cached($coursecache, $event->courseid); + + $module = calendar_get_module_cached($coursecache, $event->modulename, $event->instance, $event->courseid); + + if ($module === false) { + // This shouldn't have happened. What to do now? + // Just ignore it + continue; + } + + $modulename = get_string('modulename', $event->modulename); + $eventtype = get_string($event->eventtype, $event->modulename); + $icon = $CFG->modpixpath.'/'.$event->modulename.'/icon.gif'; + + $output[$outkey]->icon = ''; + $output[$outkey]->referer = ''.$event->name.''; + $output[$outkey]->time = $eventtime; + $output[$outkey]->courselink = ''.$coursecache[$event->courseid]->fullname.''; + $output[$outkey]->cmid = $module->id; + + + + } else if($event->courseid == 1) { // Site event + $output[$outkey]->icon = ''; + $output[$outkey]->time = $eventtime; + + + + } else if($event->courseid > 1 and !$event->groupid) { // Course event + calendar_get_course_cached($coursecache, $event->courseid); + + $output[$outkey]->icon = ''; + $output[$outkey]->time = $eventtime; + $output[$outkey]->courselink = ''.$coursecache[$event->courseid]->fullname.''; + + + + } else if ($event->groupid) { // Group event + $output[$outkey]->icon = ''; + $output[$outkey]->time = $eventtime; + + + + } else if($event->userid) { // User event + $output[$outkey]->icon = ''; + $output[$outkey]->time = $eventtime; + } ++$processed; } } return $output; } -function calendar_add_event_metadata($event) { - global $CFG; - - //Support multilang in event->name - $event->name = format_string($event->name,true); - - if(!empty($event->modulename)) { // Activity event - // The module name is set. I will assume that it has to be displayed, and - // also that it is an automatically-generated event. And of course that the - // fields for get_coursemodule_from_instance are set correctly. - $module = calendar_get_module_cached($coursecache, $event->modulename, $event->instance); - - if ($module === false) { - return; - } - - $modulename = get_string('modulename', $event->modulename); - $eventtype = get_string($event->eventtype, $event->modulename); - $icon = $CFG->modpixpath.'/'.$event->modulename.'/icon.gif'; - - $event->icon = ''; - $event->referer = ''.$event->name.''; - $event->courselink = ''.$coursecache[$module->course]->fullname.''; - $event->cmid = $module->id; - - - } else if($event->courseid == SITEID) { // Site event - $event->icon = ''; - - } else if($event->courseid != 0 && $event->courseid != SITEID && $event->groupid == 0) { // Course event - calendar_get_course_cached($coursecache, $event->courseid); - $event->icon = ''; - $event->courselink = ''.$coursecache[$event->courseid]->fullname.''; - - } else if ($event->groupid) { // Group event - $event->icon = ''; - - } else if($event->userid) { // User event - $event->icon = ''; - } - - return $event; -} - -function calendar_print_event($event) { - global $CFG, $USER; - - static $strftimetime; - - $event = calendar_add_event_metadata($event); - echo ''; - echo ''; - echo ''; - echo ''; - echo '
      '; - if (!empty($event->icon)) { - echo $event->icon; - } else { - print_spacer(16,16); - } - echo ''; - - if (!empty($event->referer)) { - echo '
      '.$event->referer.'
      '; - } else { - echo '
      '.$event->name."
      "; - } - if (!empty($event->courselink)) { - echo '
      '.$event->courselink.'
      '; - } - if (!empty($event->time)) { - echo ''.$event->time.''; - } else { - echo ''.calendar_time_representation($event->timestart).''; - } - - echo '
       '; - echo format_text($event->description, FORMAT_HTML); - if (calendar_edit_event_allowed($event)) { - echo '
      '; - if (empty($event->cmid)) { - $editlink = CALENDAR_URL.'event.php?action=edit&id='.$event->id; - $deletelink = CALENDAR_URL.'event.php?action=delete&id='.$event->id; - } else { - $editlink = $CFG->wwwroot.'/course/mod.php?update='.$event->cmid.'&return=true&sesskey='.$USER->sesskey; - $deletelink = $CFG->wwwroot.'/course/mod.php?delete='.$event->cmid.'&sesskey='.$USER->sesskey;; - } - echo ' '.get_string('tt_editevent', 'calendar').''; - echo ' '.get_string('tt_deleteevent', 'calendar').''; - echo '
      '; - } - echo '
      '; - -} - function calendar_sql_where($tstart, $tend, $users, $groups, $courses, $withduration=true, $ignorehidden=true) { $whereclause = ''; // Quick test if(is_bool($users) && is_bool($groups) && is_bool($courses)) { return false; } - if(is_array($users) && !empty($users)) { // Events from a number of users if(!empty($whereclause)) $whereclause .= ' OR'; - $whereclause .= ' (userid IN ('.implode(',', $users).') AND courseid = 0 AND groupid = 0)'; + $whereclause .= ' userid IN ('.implode(',', $users).') AND courseid = 0 AND groupid = 0'; } else if(is_numeric($users)) { // Events from one user if(!empty($whereclause)) $whereclause .= ' OR'; - $whereclause .= ' (userid = '.$users.' AND courseid = 0 AND groupid = 0)'; + $whereclause .= ' userid = '.$users.' AND courseid = 0 AND groupid = 0'; } else if($users === true) { // Events from ALL users if(!empty($whereclause)) $whereclause .= ' OR'; - $whereclause .= ' (userid != 0 AND courseid = 0 AND groupid = 0)'; + $whereclause .= ' userid != 0 AND courseid = 0 AND groupid = 0'; } else if($users === false) { - // No user at all, do nothing + // No user at all + if(!empty($whereclause)) { + $whereclause .= ' OR'; + } + $whereclause .= ' 0'; } - if(is_array($groups) && !empty($groups)) { // Events from a number of groups if(!empty($whereclause)) $whereclause .= ' OR'; @@ -477,38 +430,36 @@ function calendar_sql_where($tstart, $tend, $users, $groups, $courses, $withdura if(!empty($whereclause)) $whereclause .= ' OR '; $whereclause .= ' groupid != 0'; } - // boolean false (no groups at all): we don't need to do anything - if(is_array($courses)) { // A number of courses (maybe none at all!) if(!empty($courses)) { if(!empty($whereclause)) { $whereclause .= ' OR'; } - $whereclause .= ' (groupid = 0 AND courseid IN ('.implode(',', $courses).'))'; + $whereclause .= ' groupid = 0 AND courseid IN ('.implode(',', $courses).')'; } else { // This means NO courses, not that we don't care! - // No need to do anything + if(!empty($whereclause)) { + $whereclause .= ' OR'; + } + $whereclause .= ' 0'; } } else if(is_numeric($courses)) { // One course if(!empty($whereclause)) $whereclause .= ' OR'; - $whereclause .= ' (groupid = 0 AND courseid = '.$courses.')'; + $whereclause .= ' groupid = 0 AND courseid = '.$courses; } else if($courses === true) { // Events from ALL courses if(!empty($whereclause)) $whereclause .= ' OR'; - $whereclause .= ' (groupid = 0 AND courseid != 0)'; + $whereclause .= ' groupid = 0 AND courseid != 0'; } - // Security check: if, by now, we have NOTHING in $whereclause, then it means - // that NO event-selecting clauses were defined. Thus, we won't be returning ANY - // events no matter what. Allowing the code to proceed might return a completely - // valid query with only time constraints, thus selecting ALL events in that time frame! - if(empty($whereclause)) { - return false; + if ($ignorehidden) { + if (!empty($whereclause)) $whereclause .= ' AND'; + $whereclause .= ' visible = 1'; } if($withduration) { @@ -526,10 +477,6 @@ function calendar_sql_where($tstart, $tend, $users, $groups, $courses, $withdura $whereclause = $timeclause; } - if ($ignorehidden) { - $whereclause .= ' AND visible = 1'; - } - return $whereclause; } @@ -539,15 +486,8 @@ function calendar_top_controls($type, $data) { if(!isset($data['d'])) { $data['d'] = 1; } - - if(!checkdate($data['m'], $data['d'], $data['y'])) { - $time = time(); - } - else { - $time = make_timestamp($data['y'], $data['m'], $data['d']); - } - $date = usergetdate($time); - + $time = calendar_mktime_check($data['m'], $data['d'], $data['y']); + $date = getdate($time); $data['m'] = $date['mon']; $data['y'] = $date['year']; @@ -557,10 +497,10 @@ function calendar_top_controls($type, $data) { list($nextmonth, $nextyear) = calendar_add_month($data['m'], $data['y']); $nextlink = calendar_get_link_tag('>>', 'index.php?', 0, $nextmonth, $nextyear); $prevlink = calendar_get_link_tag('<<', 'index.php?', 0, $prevmonth, $prevyear); - $content .= ''; - $content .= '\n"; - $content .= ''; - $content .= '\n"; + $content .= '
      '.$prevlink."'.userdate($time, get_string('strftimemonthyear')).''.$nextlink."
      '; + $content .= '\n"; + $content .= '\n"; + $content .= '\n"; $content .= '
      '.$prevlink."'.strftime(get_string('strftimemonthyear'), $time)."'.$nextlink."
      '; break; case 'course': @@ -568,53 +508,51 @@ function calendar_top_controls($type, $data) { list($nextmonth, $nextyear) = calendar_add_month($data['m'], $data['y']); $nextlink = calendar_get_link_tag('>>', 'view.php?id='.$data['id'].'&', 0, $nextmonth, $nextyear); $prevlink = calendar_get_link_tag('<<', 'view.php?id='.$data['id'].'&', 0, $prevmonth, $prevyear); - $content .= ''; - $content .= '\n"; - $content .= ''; - $content .= '\n"; + $content .= '
      '.$prevlink."'.userdate($time, get_string('strftimemonthyear')).''.$nextlink."
      '; + $content .= '\n"; + $content .= '\n"; + $content .= '\n"; $content .= '
      '.$prevlink."'.strftime(get_string('strftimemonthyear'), $time)."'.$nextlink."
      '; break; case 'upcoming': - $content .= '\n"; + $content .= '\n"; break; case 'display': - $content .= '\n"; + $content .= '\n"; break; case 'month': list($prevmonth, $prevyear) = calendar_sub_month($data['m'], $data['y']); list($nextmonth, $nextyear) = calendar_add_month($data['m'], $data['y']); - $prevdate = make_timestamp($prevyear, $prevmonth, 1); - $nextdate = make_timestamp($nextyear, $nextmonth, 1); - $content .= ''; - $content .= ''; - $content .= '\n"; - $content .= '\n"; + $prevdate = calendar_mktime_check($prevmonth, 1, $prevyear); + $nextdate = calendar_mktime_check($nextmonth, 1, $nextyear); + $content .= "
      << '.userdate($prevdate, get_string('strftimemonthyear')).''.userdate($time, get_string('strftimemonthyear'))."'.userdate($nextdate, get_string('strftimemonthyear'))." >>
      \n"; + $content .= '\n"; + $content .= '\n"; + $content .= '\n"; $content .= "
      << '.strftime(get_string('strftimemonthyear'), $prevdate)."'.strftime(get_string('strftimemonthyear'), $time)."'.strftime(get_string('strftimemonthyear'), $nextdate)." >>
      \n"; break; case 'day': $data['d'] = $date['mday']; // Just for convenience $dayname = calendar_wday_name($date['weekday']); - $prevdate = usergetdate(make_timestamp($data['y'], $data['m'], $data['d'] - 1)); - $nextdate = usergetdate(make_timestamp($data['y'], $data['m'], $data['d'] + 1)); + $prevdate = getdate($time - SECS_IN_DAY); + $nextdate = getdate($time + SECS_IN_DAY); $prevname = calendar_wday_name($prevdate['weekday']); $nextname = calendar_wday_name($nextdate['weekday']); - $content .= ''; - $content .= '\n"; + $content .= "
      << '.$prevname."
      \n"; + $content .= '\n"; // Get the format string $text = get_string('strftimedaydate'); - /* // Regexp hackery to make a link out of the month/year part $text = ereg_replace('(%B.+%Y|%Y.+%B|%Y.+%m[^ ]+)', '\\1', $text); - $text = ereg_replace('(F.+Y|Y.+F|Y.+m[^ ]+)', '\\1', $text); - */ // Replace with actual values and lose any day leading zero - $text = userdate($time, $text); + $text = strftime($text, $time); + $text = str_replace(' 0', ' ', $text); // Print the actual thing - $content .= ''; + $content .= '\n"; - $content .= '\n"; - $content .= '
      << '.$prevname."'.$text.''.$text."'.$nextname." >>
      '; + $content .= '
    • '.$nextname." >>
      \n"; break; } return $content; @@ -649,34 +587,34 @@ function calendar_filter_controls($type, $vars = NULL, $course = NULL) { $getvars .= '&'.$vars; } - $content = ''; + $content = '
      '; $content .= ''; if($SESSION->cal_show_global) { - $content .= ''."\n"; + $content .= ''."\n"; } else { $content .= ''."\n"; } if($SESSION->cal_show_course) { - $content .= ''."\n"; + $content .= ''."\n"; } else { $content .= ''."\n"; } - if(!empty($USER->id) && !isguest()) { + if(!empty($USER) && !isguest()) { $content .= "\n"; if($groupevents) { // This course MIGHT have group events defined, so show the filter if($SESSION->cal_show_groups) { - $content .= ''."\n"; + $content .= ''."\n"; } else { $content .= ''."\n"; } if ($SESSION->cal_show_user) { - $content .= ''."\n"; + $content .= ''."\n"; } else { $content .= ''."\n"; } @@ -686,7 +624,7 @@ function calendar_filter_controls($type, $vars = NULL, $course = NULL) { $content .= ''."\n"; if($SESSION->cal_show_user) { - $content .= ''."\n"; + $content .= ''."\n"; } else { $content .= ''."\n"; } @@ -767,6 +705,26 @@ function calendar_get_link_tag($text, $linkbase, $d, $m, $y) { return ''.$text.''; } +function calendar_gmmktime_check($m, $d, $y, $default = false) { + if($default === false) $default = time(); + if(!checkdate($m, $d, $y)) { + return $default; + } + else { + return gmmktime(0, 0, 0, $m, $d, $y); + } +} + +function calendar_mktime_check($m, $d, $y, $default = false) { + if($default === false) $default = time(); + if(!checkdate($m, $d, $y)) { + return $default; + } + else { + return mktime(0, 0, 0, $m, $d, $y); + } +} + function calendar_wday_name($englishname) { return get_string(strtolower($englishname), 'calendar'); } @@ -775,7 +733,9 @@ function calendar_days_in_month($month, $year) { return intval(date('t', mktime(0, 0, 0, $month, 1, $year))); } -function calendar_get_sideblock_upcoming($events, $linkhref = NULL) { +function calendar_get_sideblock_upcoming($courses, $groups, $users, $daysinfuture, $maxevents) { + $events = calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxevents); + $content = ''; $lines = count($events); if (!$lines) { @@ -783,26 +743,15 @@ function calendar_get_sideblock_upcoming($events, $linkhref = NULL) { } for ($i = 0; $i < $lines; ++$i) { - if (!isset($events[$i]->time)) { // Just for robustness - continue; - } - $events[$i] = calendar_add_event_metadata($events[$i]); - $content .= '
      '.$events[$i]->icon.' '; + $content .= '
      '.$events[$i]->icon.' '; if (!empty($events[$i]->referer)) { // That's an activity event, so let's provide the hyperlink $content .= $events[$i]->referer; } else { - if(!empty($linkhref)) { - $ed = usergetdate($events[$i]->timestart); - $href = calendar_get_link_href(CALENDAR_URL.$linkhref, $ed['mday'], $ed['mon'], $ed['year']); - $content .= ''.$events[$i]->name.''; - } - else { - $content .= $events[$i]->name; - } + $content .= $events[$i]->name; } - $events[$i]->time = str_replace('»', '
      »', $events[$i]->time); - $content .= '
      '.$events[$i]->time.'
      '; + $events[$i]->time = str_replace('->', '
      ->', $events[$i]->time); + $content .= '
      '.$events[$i]->time.'
      '; if ($i < $lines - 1) $content .= '
      '; } @@ -854,10 +803,10 @@ function calendar_events_by_day($events, $month, $year, &$eventsbyday, &$duratio $eventsbyday[$eventdaystart][] = $event->id; // Mark the day as having such an event - if($event->courseid == SITEID && $event->groupid == 0) { + if($event->courseid == 1 && $event->groupid == 0) { $typesbyday[$eventdaystart]['startglobal'] = true; } - else if($event->courseid != 0 && $event->courseid != SITEID && $event->groupid == 0) { + else if($event->courseid > 1 && $event->groupid == 0) { $typesbyday[$eventdaystart]['startcourse'] = true; } else if($event->groupid) { @@ -882,10 +831,10 @@ function calendar_events_by_day($events, $month, $year, &$eventsbyday, &$duratio // Mark all days between $lowerbound and $upperbound (inclusive) as duration for($i = $lowerbound + 1; $i <= $upperbound; ++$i) { $durationbyday[$i][] = $event->id; - if($event->courseid == SITEID && $event->groupid == 0) { + if($event->courseid == 1 && $event->groupid == 0) { $typesbyday[$i]['durationglobal'] = true; } - else if($event->courseid != 0 && $event->courseid != SITEID && $event->groupid == 0) { + else if($event->courseid > 1 && $event->groupid == 0) { $typesbyday[$i]['durationcourse'] = true; } else if($event->groupid) { @@ -900,11 +849,11 @@ function calendar_events_by_day($events, $month, $year, &$eventsbyday, &$duratio return; } -function calendar_get_module_cached(&$coursecache, $modulename, $instance) { - $module = get_coursemodule_from_instance($modulename, $instance); +function calendar_get_module_cached(&$coursecache, $modulename, $instance, $courseid) { + $module = get_coursemodule_from_instance($modulename, $instance, $courseid); if($module === false) return false; - if(!calendar_get_course_cached($coursecache, $module->course)) { + if(!calendar_get_course_cached($coursecache, $courseid)) { return false; } return $module; @@ -920,25 +869,6 @@ function calendar_get_course_cached(&$coursecache, $courseid) { function calendar_session_vars() { global $SESSION, $USER; - if(!empty($USER->id) && isset($USER->realuser) && !isset($SESSION->cal_loggedinas)) { - // We just logged in as someone else, update the filtering - unset($SESSION->cal_users_shown); - unset($SESSION->cal_courses_shown); - $SESSION->cal_loggedinas = true; - if(intval(get_user_preferences('calendar_persistflt', 0))) { - calendar_set_filters_status(get_user_preferences('calendar_savedflt', 0xff)); - } - } - else if(!empty($USER->id) && !isset($USER->realuser) && isset($SESSION->cal_loggedinas)) { - // We just logged back to our real self, update again - unset($SESSION->cal_users_shown); - unset($SESSION->cal_courses_shown); - unset($SESSION->cal_loggedinas); - if(intval(get_user_preferences('calendar_persistflt', 0))) { - calendar_set_filters_status(get_user_preferences('calendar_savedflt', 0xff)); - } - } - if(!isset($SESSION->cal_course_referer)) { $SESSION->cal_course_referer = 0; } @@ -970,8 +900,13 @@ function calendar_session_vars() { } function calendar_overlib_html() { - return '' - .''; + global $CFG; + + $html = ''; + $html .= ''; + $html .= ''; + + return $html; } function calendar_set_referring_course($courseid) { @@ -980,9 +915,7 @@ function calendar_set_referring_course($courseid) { } function calendar_set_filters(&$courses, &$group, &$user, $courseeventsfrom = NULL, $groupeventsfrom = NULL, $ignorefilters = false) { - global $SESSION, $USER, $CFG; - - //$GLOBALS['db']->debug = true; + global $SESSION, $USER; // Insidious bug-wannabe: setting $SESSION->cal_courses_shown to $course->id would cause // the code to function incorrectly UNLESS we convert it to an integer. One case where @@ -1000,11 +933,11 @@ function calendar_set_filters(&$courses, &$group, &$user, $courseeventsfrom = NU if(($SESSION->cal_show_course && $SESSION->cal_show_global) || $ignorefilters) { if(is_int($courseeventsfrom)) { - $courses = array(SITEID, $courseeventsfrom); + $courses = array(1, $courseeventsfrom); } else if(is_array($courseeventsfrom)) { $courses = array_keys($courseeventsfrom); - $courses[] = SITEID; + $courses[] = 1; } } else if($SESSION->cal_show_course) { @@ -1014,10 +947,10 @@ function calendar_set_filters(&$courses, &$group, &$user, $courseeventsfrom = NU else if(is_array($courseeventsfrom)) { $courses = array_keys($courseeventsfrom); } - $courses = array_diff($courses, array(SITEID)); + $courses = array_diff($courses, array(1)); } else if($SESSION->cal_show_global) { - $courses = array(SITEID); + $courses = array(1); } else { $courses = false; @@ -1037,62 +970,55 @@ function calendar_set_filters(&$courses, &$group, &$user, $courseeventsfrom = NU else if(is_array($groupeventsfrom)) { $groupcourses = array_keys($groupeventsfrom); } + $grouparray = array(); - if(isadmin() && !empty($CFG->calendar_adminseesall)) { - $group = true; + // We already have the courses to examine in $courses + // For each course... + foreach($groupcourses as $courseid) { + // If the user is an editing teacher in there, + if(!empty($USER->id) && isteacheredit($courseid, $USER->id)) { + // Show events from all groups + if(($grouprecords = get_groups($courseid)) !== false) { + $grouparray = array_merge($grouparray, array_keys($grouprecords)); + } + } + // Otherwise show events from the group he is a member of + else if(isset($USER->groupmember[$courseid])) { + $grouparray[] = $USER->groupmember[$courseid]; + } + } + if(empty($grouparray)) { + $group = false; } else { - $grouparray = array(); - - // We already have the courses to examine in $courses - // For each course... - foreach($groupcourses as $courseid) { - // If the user is an editing teacher in there, - if(!empty($USER->id) && isteacheredit($courseid, $USER->id)) { - // Show events from all groups - if(($grouprecords = get_groups($courseid)) !== false) { - $grouparray = array_merge($grouparray, array_keys($grouprecords)); - } - } - // Otherwise show events from the group he is a member of - else if(isset($USER->groupmember[$courseid])) { - $grouparray[] = $USER->groupmember[$courseid]; - } - } - if(empty($grouparray)) { - $group = false; - } - else { - $group = $grouparray; - } + $group = $grouparray; } - } else { $group = false; } - - $GLOBALS['db']->debug = false; } function calendar_edit_event_allowed($event) { global $USER; - if(empty($USER->id) || isguest($USER->id)) { + if(empty($USER) || isguest($USER->id)) { return false; } if (isadmin($USER->id)) return true; // Admins are allowed anything - if ($event->courseid != 0 && isteacher($event->courseid)) { - return true; + if ($event->courseid > 1) { + // Course event, only editing teachers may... edit :P + if(isteacheredit($event->courseid)) { + return true; + } + } else if($event->courseid == 0 && $event->groupid != 0) { // Group event $group = get_record('groups', 'id', $event->groupid); - if($group === false) { - return false; - } - if(isteacher($group->courseid)) { + if($group === false) return false; + if(isteacheredit($group->courseid)) { return true; } @@ -1111,26 +1037,67 @@ function calendar_get_default_courses($ignoreref = false) { return array($SESSION->cal_course_referer => 1); } - if(empty($USER->id)) { + if(empty($USER)) { return array(); } $courses = array(); - if(isadmin($USER->id)) { - if(!empty($CFG->calendar_adminseesall)) { - $courses = get_records_sql('SELECT id, 1 FROM '.$CFG->prefix.'course'); - return $courses; - } + if(!empty($USER->id) && isadmin($USER->id)) { + $courses = get_records_sql('SELECT id, 1 FROM '.$CFG->prefix.'course'); + return $courses; } if(isset($USER->student) && is_array($USER->student)) { - $courses = $USER->student; + $courses = $USER->student + $courses; } if(isset($USER->teacher) && is_array($USER->teacher)) { - $courses = $USER->teacher; + $courses = $USER->teacher + $courses; } return $courses; } +function calendar_get_tz_offset() { + global $USER, $CFG; + static $tzfix; + + // Caching + if(isset($tzfix)) { + return $tzfix; + } + + if(empty($USER)) { + // Don't forget that there are users which have NOT logged in, even as guests + $timezone = $CFG->timezone; + } + else { + // If, on the other hand, we do have a user... + $timezone = $USER->timezone; + if(abs($timezone > 13)) { + // But if the user has specified 'server default' time, + // don't get the server's; get the Moodle $CFG setting + // (Martin's help text on site cfg implies this) + $timezone = $CFG->timezone; + } + } + + if(abs($timezone) <= 13) { + $tzfix = $timezone * 3600; + } + else { + $tzfix = date('Z'); + } + + return $tzfix; +} + +function calendar_preferences_array() { + return array( + 'startwday' => get_string('pref_startwday', 'calendar'), + 'maxevents' => get_string('pref_maxevents', 'calendar'), + 'lookahead' => get_string('pref_lookahead', 'calendar'), + 'timeformat' => get_string('pref_timeformat', 'calendar'), + ); +} + function calendar_preferences_button() { global $CFG, $USER; @@ -1179,7 +1146,7 @@ function calendar_format_event_time($event, $now, $morehref, $usecommonwords = t // Set printable representation $eventtime = calendar_get_link_tag($day, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']). - ' ('.$timestart.' » '.$timeend.')'; + ' ('.$timestart.' -> '.$timeend.')'; } else { // It spans two or more days @@ -1190,7 +1157,7 @@ function calendar_format_event_time($event, $now, $morehref, $usecommonwords = t // Set printable representation $eventtime = calendar_get_link_tag($daystart, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $startdate['mday'], $startdate['mon'], $startdate['year']). - ' ('.$timestart.') » '.calendar_get_link_tag($dayend, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']). + ' ('.$timestart.') -> '.calendar_get_link_tag($dayend, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']). ' ('.$timeend.')'; } } @@ -1202,70 +1169,19 @@ function calendar_format_event_time($event, $now, $morehref, $usecommonwords = t // Set printable representation $eventtime = calendar_get_link_tag($day, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $startdate['mday'], $startdate['mon'], $startdate['year']).' ('.$time.')'; } - + return $eventtime; } - -function calendar_human_readable_dst($preset) { - $weekdays = array('sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'); - - $options = new stdClass; - $options->activate_index = ($preset->activate_index == -1) ? get_string('last', 'calendar') : get_string('nth', 'calendar', $preset->activate_index); - $options->activate_weekday = ($preset->activate_day < 0) ? get_string('day', 'calendar') : get_string($weekdays[$preset->activate_day], 'calendar'); - $options->activate_month = date('F', mktime(0, 0, 0, $preset->activate_month, 1, 2000)); - $options->offset = abs($preset->apply_offset); - //$options->direction = $preset->apply_offset > 0 ? get_string('timeforward', 'calendar') : get_string('timerewind', 'calendar'); - $options->direction = get_string('timeforward', 'calendar'); - $options->deactivate_index = ($preset->deactivate_index == -1) ? get_string('last', 'calendar') : get_string('nth', 'calendar', $preset->deactivate_index); - $options->deactivate_weekday = ($preset->deactivate_day < 0) ? get_string('day', 'calendar') : get_string($weekdays[$preset->deactivate_day], 'calendar'); - $options->deactivate_month = date('F', mktime(0, 0, 0, $preset->deactivate_month, 1, 2000)); - - return get_string('dsthumanreadable', 'calendar', $options); -} - -function calendar_print_month_selector($name, $selected) { - - $months = array(); - - for ($i=1; $i<=12; $i++) { - $months[$i] = userdate(gmmktime(12, 0, 0, $i, 1, 2000), '%B'); + +if(!function_exists('array_diff_assoc')) { + // PHP < 4.3.0 + function array_diff_assoc($source, $diff) { + $res = $source; + foreach ($diff as $key=>$data) { + unset($res[$key]); + } + return $res; } - - choose_from_menu($months, $name, $selected, ''); -} - -function calendar_get_filters_status() { - global $SESSION; - - $status = 0; - if($SESSION->cal_show_global) { - $status += 1; - } - if($SESSION->cal_show_course) { - $status += 2; - } - if($SESSION->cal_show_groups) { - $status += 4; - } - if($SESSION->cal_show_user) { - $status += 8; - } - return $status; -} - -function calendar_set_filters_status($packed_bitfield) { - global $SESSION, $USER; - - if(!isset($USER) || empty($USER->id)) { - return false; - } - - $SESSION->cal_show_global = ($packed_bitfield & 1); - $SESSION->cal_show_course = ($packed_bitfield & 2); - $SESSION->cal_show_groups = ($packed_bitfield & 4); - $SESSION->cal_show_user = ($packed_bitfield & 8); - - return true; } ?> diff --git a/calendar/overlib.cfg.php b/calendar/overlib.cfg.php index eb2221a5862..7dee24e7782 100644 --- a/calendar/overlib.cfg.php +++ b/calendar/overlib.cfg.php @@ -1,10 +1,11 @@ -ol_delay = 350; -ol_fgclass = 'cal_popup_fg'; -ol_bgclass = 'cal_popup_bg'; -ol_cgclass = 'cal_popup_cg'; -ol_captionfontclass = 'cal_popup_caption'; -ol_noclose = true; -ol_sticky = true; -ol_close = 'X'; -ol_offsety = -1; -ol_mouseoff = 1; +ol_delay = 350; +ol_fgcolor = '#ffffff'; +ol_fgclass = 'cal_popup_fg'; +ol_bgclass = 'cal_popup_bg'; +ol_cgclass = 'cal_popup_cg'; +ol_captionfontclass = 'cal_popup_caption'; +ol_noclose = true; +ol_sticky = true; +ol_close = 'X'; +ol_offsety = -1; +ol_mouseoff = 1; diff --git a/calendar/preferences.html b/calendar/preferences.html index 19d113e1eb1..35abd8b5c81 100644 --- a/calendar/preferences.html +++ b/calendar/preferences.html @@ -1,25 +1,27 @@ -
      '.get_string('globalevents', 'calendar').''.get_string('globalevents', 'calendar').''.get_string('globalevents', 'calendar').''.get_string('courseevents', 'calendar').''.get_string('courseevents', 'calendar').''.get_string('courseevents', 'calendar').'
      '.get_string('groupevents', 'calendar').''.get_string('groupevents', 'calendar').''.get_string('groupevents', 'calendar').''.get_string('userevents', 'calendar').''.get_string('userevents', 'calendar').''.get_string('userevents', 'calendar').' '.get_string('userevents', 'calendar').''.get_string('userevents', 'calendar').''.get_string('userevents', 'calendar').'
      - - +
      :
      + + + - - + + + - - + + + - - + + + - - - - - - +

      :

      - timeformat, "", "", ""); + choose_from_menu ($options, "timeformat", $prefs->timeformat, "", "", ""); ?> -

      +
      +
      :

      :

      - startwday, '', '', ''); ?> -

      +
      +
      :

      :

      - maxevents, "", "", ""); + choose_from_menu ($options, "maxevents", $prefs->maxevents, "", "", ""); ?> -

      +
      +
      :

      :

      - lookahead, "", "", ""); + choose_from_menu ($options, "lookahead", $prefs->lookahead, "", "", ""); ?> -

      +
      +
      : - get_string('no'), 1 => get_string('yes')), 'persistflt', $prefs->persistflt, '', '', ''); ?> -

      -
      - " /> + ">
      diff --git a/calendar/preferences.php b/calendar/preferences.php index 488f4b2a13c..3513c6457b1 100644 --- a/calendar/preferences.php +++ b/calendar/preferences.php @@ -5,7 +5,7 @@ require_once($CFG->dirroot.'/calendar/lib.php'); if (isset($SESSION->cal_course_referer)) { - if (! $course = get_record('course', 'id', $SESSION->cal_course_referer)) { + if (! $course = get_record("course", "id", $SESSION->cal_course_referer)) { $course = get_site(); } } @@ -34,21 +34,18 @@ set_user_preference('calendar_startwday', $value); break; case 'maxevents': - if (intval($value) >= 1) { + if ((int)$value >= 1) { set_user_preference('calendar_maxevents', $value); } break; case 'lookahead': - if (intval($value) >= 1) { + if ((int)$value >= 1) { set_user_preference('calendar_lookahead', $value); } break; - case 'persistflt': - set_user_preference('calendar_persistflt', intval($value)); - break; } } - redirect('view.php', get_string('changessaved'), 1); + redirect("view.php", get_string("changessaved"), 1); exit; } @@ -66,20 +63,19 @@ print_header("$site->shortname: $strcalendar: $strpreferences", $strcalendar, $navigation, - '', '', true, '', user_login_string($site)); + '', '', true, '', '

      '.user_login_string($site).'

      '); print_heading($strpreferences); - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); $prefs->timeformat = get_user_preferences('calendar_timeformat', ''); - $prefs->startwday = get_user_preferences('calendar_startwday', CALENDAR_STARTING_WEEKDAY); - $prefs->maxevents = get_user_preferences('calendar_maxevents', CALENDAR_UPCOMING_MAXEVENTS); - $prefs->lookahead = get_user_preferences('calendar_lookahead', CALENDAR_UPCOMING_DAYS); - $prefs->persistflt = get_user_preferences('calendar_persistflt', 0); + $prefs->startwday = get_user_preferences('calendar_startwday', CALENDAR_STARTING_WEEKDAY); + $prefs->maxevents = get_user_preferences('calendar_maxevents', CALENDAR_UPCOMING_MAXEVENTS); + $prefs->lookahead = get_user_preferences('calendar_lookahead', CALENDAR_UPCOMING_DAYS); - include('./preferences.html'); + include("preferences.html"); print_simple_box_end(); print_footer($course); diff --git a/calendar/set.php b/calendar/set.php index 86e3c4d3d9f..470bd736396 100644 --- a/calendar/set.php +++ b/calendar/set.php @@ -78,25 +78,21 @@ break; case 'showgroups': $SESSION->cal_show_groups = !$SESSION->cal_show_groups; - set_user_preference('calendar_savedflt', calendar_get_filters_status()); break; case 'showcourses': $SESSION->cal_show_course = !$SESSION->cal_show_course; - set_user_preference('calendar_savedflt', calendar_get_filters_status()); break; case 'showglobal': $SESSION->cal_show_global = !$SESSION->cal_show_global; - set_user_preference('calendar_savedflt', calendar_get_filters_status()); break; case 'showuser': $SESSION->cal_show_user = !$SESSION->cal_show_user; - set_user_preference('calendar_savedflt', calendar_get_filters_status()); break; } switch($_GET['from']) { case 'event': - redirect(CALENDAR_URL.'event.php?action='.$_GET['action'].'&type='.$_GET['type'].'&id='.intval($_GET['id'])); + redirect(CALENDAR_URL.'event.php?action='.$_GET['action'].'&type='.$_GET['type'].'&id='.intval($_GET['id'])); break; case 'month': redirect(CALENDAR_URL.'view.php?view=month&cal_d='.$_GET['cal_d'].'&cal_m='.$_GET['cal_m'].'&cal_y='.$_GET['cal_y']); diff --git a/calendar/view.php b/calendar/view.php index b05e3ac318f..a46a5b6765a 100644 --- a/calendar/view.php +++ b/calendar/view.php @@ -44,7 +44,11 @@ require_once($CFG->dirroot.'/course/lib.php'); require_once($CFG->dirroot.'/calendar/lib.php'); + optional_variable($_GET['view'], 'upcoming'); optional_variable($_GET['course'], 0); + optional_variable($_GET['cal_d']); + optional_variable($_GET['cal_m']); + optional_variable($_GET['cal_y']); if(!$site = get_site()) { redirect($CFG->wwwroot.'/'.$CFG->admin.'/index.php'); @@ -56,25 +60,28 @@ $nav = calendar_get_link_tag(get_string('calendar', 'calendar'), CALENDAR_URL.'view.php?view=upcoming&', $now['mday'], $now['mon'], $now['year']); - $view = optional_param('view', 'upcoming'); - $day = optional_param('cal_d', 0, PARAM_INT); - $mon = optional_param('cal_m', 0, PARAM_INT); - $yr = optional_param('cal_y', 0, PARAM_INT); - + // Make sure that the GET variables are correct + $day = intval($_GET['cal_d']); + $mon = intval($_GET['cal_m']); + $yr = intval($_GET['cal_y']); if(!checkdate($mon, $day, $yr)) { $day = intval($now['mday']); $mon = intval($now['mon']); $yr = intval($now['year']); } - $time = make_timestamp($yr, $mon, $day); + $time = mktime(0, 0, 0, $mon, $day, $yr); - switch($view) { + switch($_GET['view']) { case 'day': - $nav .= ' -> '.userdate($time, get_string('strftimedate')); + $text = strftime(get_string('strftimedate'), $time); + if($text[0] == '0') { + $text = substr($text, 1); + } + $nav .= ' -> '.$text; $pagetitle = get_string('dayview', 'calendar'); break; case 'month': - $nav .= ' -> '.userdate($time, get_string('strftimemonthyear')); + $nav .= ' -> '.strftime(get_string('strftimemonthyear'), $time); $pagetitle = get_string('detailedmonthview', 'calendar'); break; case 'upcoming': @@ -84,21 +91,21 @@ // If a course has been supplied in the URL, change the filters to show that one if (!empty($_GET['course'])) { - if ($course = get_record('course', 'id', $_GET['course'])) { - if ($course->id == 1) { + if (is_numeric($_GET['course']) && $_GET['course'] > 0 && record_exists('course', 'id', $_GET['course'])) { + if ($_GET['course'] == 1) { // If coming from the home page, show all courses $SESSION->cal_courses_shown = calendar_get_default_courses(true); calendar_set_referring_course(0); } else { // Otherwise show just this one - $SESSION->cal_courses_shown = $course->id; + $SESSION->cal_courses_shown = intval($_GET['course']); calendar_set_referring_course($SESSION->cal_courses_shown); } } } - if (empty($USER->id) or isguest()) { + if (empty($USER) or isguest()) { $defaultcourses = calendar_get_default_courses(); calendar_set_filters($courses, $groups, $users, $defaultcourses, $defaultcourses); @@ -113,9 +120,6 @@ // If we know about the referring course, show a return link and ALSO require login! require_login(); $nav = ''.$shortname.' -> '.$nav; - if (empty($course)) { - $course = get_record('course', 'id', $SESSION->cal_course_referer); // Useful to have around - } } $strcalendar = get_string('calendar', 'calendar'); @@ -123,19 +127,19 @@ // Print title and header print_header("$site->shortname: $strcalendar: $pagetitle", $strcalendar, $nav, - '', '', true, $prefsbutton, user_login_string($site)); + '', '', true, $prefsbutton, '

      '.user_login_string($site).'

      '); echo calendar_overlib_html(); // Layout the whole page as three big columns. - echo ''; - echo ''; + echo '
      '; + echo ''; // START: Main column - echo ''; echo '
      '; + echo ''; - switch($view) { + switch($_GET['view']) { case 'day': calendar_show_day($day, $mon, $yr, $courses, $groups, $users); break; @@ -152,28 +156,24 @@ // END: Main column // START: Last column (3-month display) - echo ''; - echo '
      '.get_string('monthlyview', 'calendar').'
      '; - + echo '
      '; + print_side_block_start(get_string('monthlyview', 'calendar')); list($prevmon, $prevyr) = calendar_sub_month($mon, $yr); list($nextmon, $nextyr) = calendar_add_month($mon, $yr); $getvars = 'cal_d='.$day.'&cal_m='.$mon.'&cal_y='.$yr; // For filtering - - echo '
      '; - echo calendar_filter_controls($view, $getvars); - echo '
      '; - - echo '
      '; + echo calendar_filter_controls($_GET['view'], $getvars); + echo '

      '; echo calendar_top_controls('display', array('m' => $prevmon, 'y' => $prevyr)); echo calendar_get_mini($courses, $groups, $users, $prevmon, $prevyr); - echo '

      '; + echo '

      '; echo calendar_top_controls('display', array('m' => $mon, 'y' => $yr)); echo calendar_get_mini($courses, $groups, $users, $mon, $yr); - echo '

      '; + echo '

      '; echo calendar_top_controls('display', array('m' => $nextmon, 'y' => $nextyr)); echo calendar_get_mini($courses, $groups, $users, $nextmon, $nextyr); - echo '

      '; - + echo '

      '; + print_side_block_end(); + print_spacer(1, 180); echo '
      '; @@ -183,7 +183,7 @@ function calendar_show_day($d, $m, $y, $courses, $groups, $users) { - global $CFG, $USER; + global $CFG, $THEME, $USER; if (!checkdate($m, $d, $y)) { $now = usergetdate(time()); @@ -193,14 +193,17 @@ function calendar_show_day($d, $m, $y, $courses, $groups, $users) { $getvars = 'from=day&cal_d='.$d.'&cal_m='.$m.'&cal_y='.$y; // For filtering $starttime = make_timestamp($y, $m, $d); - $endtime = make_timestamp($y, $m, $d + 1) - 1; + $endtime = $starttime + SECS_IN_DAY - 1; $events = calendar_get_upcoming($courses, $groups, $users, 1, 100, $starttime); - $text = ''; - if (!isguest() && !empty($USER->id)) { - $text.= '
      '; - $text.= ''; + // New event button + if (empty($USER) || isguest()) { + $text = get_string('dayview', 'calendar').': '.calendar_course_filter_selector($getvars); + } else { + $text = '
      '.get_string('dayview', 'calendar').': '. + calendar_course_filter_selector($getvars).'
      '; + $text.= ''; $text.= ''; $text.= ''; $text.= ''; @@ -209,20 +212,15 @@ function calendar_show_day($d, $m, $y, $courses, $groups, $users) { $text.= '
      '; } - $text .= get_string('dayview', 'calendar').': '.calendar_course_filter_selector($getvars); - - echo '
      '.$text.'
      '; - - echo '
      '.calendar_top_controls('day', array('d' => $d, 'm' => $m, 'y' => $y)).'
      '; + print_side_block_start($text, array('class' => 'mycalendar')); + echo '

      '.calendar_top_controls('day', array('d' => $d, 'm' => $m, 'y' => $y)).'

      '; if (empty($events)) { // There is nothing to display today. - echo '

      '.get_string('daywithnoevents', 'calendar').'

      '; + echo '

      '.get_string('daywithnoevents', 'calendar').'

      '; } else { - echo '
      '; - $underway = array(); // First, print details about events that start today @@ -248,16 +246,15 @@ function calendar_show_day($d, $m, $y, $courses, $groups, $users) { // Then, show a list of all events that just span this day if (!empty($underway)) { - echo '

      '.get_string('spanningevents', 'calendar').':

      '; + echo '

      '.get_string('spanningevents', 'calendar').':

      '; foreach ($underway as $event) { $event->time = calendar_format_event_time($event, time(), '', false); calendar_print_event($event); } } - - echo '
      '; - } + + print_side_block_end(); } function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { @@ -315,15 +312,19 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { $events = array(); } else { - $events = get_records_select('event', $whereclause, 'timestart'); + $events = get_records_select('event', $whereclause); } // Extract information: events vs. time calendar_events_by_day($events, $m, $y, $eventsbyday, $durationbyday, $typesbyday); - $text = ''; - if(!isguest() && !empty($USER->id)) { - $text.= '
      '; + // New event button + if(empty($USER) || isguest()) { + $text = get_string('detailedmonthview', 'calendar').': '.calendar_course_filter_selector($getvars); + } + else { + $text = '
      '.get_string('detailedmonthview', 'calendar').': '.calendar_course_filter_selector($getvars).'
      '; + $text.= ''; $text.= ''; $text.= ''; $text.= ''; @@ -331,26 +332,22 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { $text.= '
      '; } - $text .= get_string('detailedmonthview', 'calendar').': '.calendar_course_filter_selector($getvars); + print_side_block_start($text, array('class' => 'mycalendar')); - echo '
      '.$text.'
      '; - - echo '
      '; echo calendar_top_controls('month', array('m' => $m, 'y' => $y)); - echo '
      '; // Start calendar display - echo ''; // Begin table. First row: day names + echo '
      '; // Begin table. First row: day names // Print out the names of the weekdays $days = array('sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'); for($i = $display->minwday; $i <= $display->maxwday; ++$i) { // This uses the % operator to get the correct weekday no matter what shift we have // applied to the $display->minwday : $display->maxwday range from the default 0 : 6 - echo ''; + echo ''; } - echo ''; // End of day names; prepare for day numbers + echo ''; // End of day names; prepare for day numbers // For the table display. $week is the row; $dayweek is the column. $week = 1; @@ -374,9 +371,9 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { $cell = ''; $dayhref = calendar_get_link_href(CALENDAR_URL.'view.php?view=day&', $day, $m, $y); - if(CALENDAR_WEEKEND & (1 << ($dayweek % 7))) { + if($dayweek % 7 == 0 || $dayweek % 7 == 6) { // Weekend. This is true no matter what the exact range is. - $class = 'weekend'; + $class = 'cal_weekend'; } else { // Normal working day. @@ -386,16 +383,16 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { // Special visual fx if an event is defined if(isset($eventsbyday[$day])) { if(isset($typesbyday[$day]['startglobal'])) { - $class .= ' event_global'; + $class .= ' cal_event_global'; } else if(isset($typesbyday[$day]['startcourse'])) { - $class .= ' event_course'; + $class .= ' cal_event_course'; } else if(isset($typesbyday[$day]['startgroup'])) { - $class .= ' event_group'; + $class .= ' cal_event_group'; } else if(isset($typesbyday[$day]['startuser'])) { - $class .= ' event_user'; + $class .= ' cal_event_user'; } if(count($eventsbyday[$day]) == 1) { $title = get_string('oneevent', 'calendar'); @@ -403,29 +400,29 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { else { $title = get_string('manyevents', 'calendar', count($eventsbyday[$day])); } - $cell = ''; + $cell = ''.$day.''; } else { - $cell = '
      '.$day.'
      '; + $cell = $day; } // Special visual fx if an event spans many days if(isset($typesbyday[$day]['durationglobal'])) { - $class .= ' duration_global'; + $class .= ' cal_duration_global'; } else if(isset($typesbyday[$day]['durationcourse'])) { - $class .= ' duration_course'; + $class .= ' cal_duration_course'; } else if(isset($typesbyday[$day]['durationgroup'])) { - $class .= ' duration_group'; + $class .= ' cal_duration_group'; } else if(isset($typesbyday[$day]['durationuser'])) { - $class .= ' duration_user'; + $class .= ' cal_duration_user'; } // Special visual fx for today if($display->thismonth && $day == $d) { - $class .= ' today'; + $class .= ' cal_today'; } // Just display it @@ -435,18 +432,17 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { echo ''.$cell; if(isset($eventsbyday[$day])) { - echo '
        '; + echo '
      '.get_string($days[$i % 7], 'calendar').''.get_string($days[$i % 7], 'calendar').'
      '; foreach($eventsbyday[$day] as $eventindex) { - echo '
    • '.format_string($events[$eventindex]->name,true).'
    • '; + echo ''; + echo ''; } - echo ''; + echo '
      ·'.$events[$eventindex]->name.'
      '; } if(isset($durationbyday[$day])) { - echo '
        '; foreach($durationbyday[$day] as $eventindex) { - echo '
      • ['.format_string($events[$eventindex]->name,true).']
      • '; + echo '
        ('.$events[$eventindex]->name.')
        '; } - echo '
      '; } echo "
     
    \n"; // Tabular display of days ends + echo "
    \n
    \n"; // Tabular display of days ends // OK, now for the filtering display - echo '
    '; + echo '
    '; + echo ''; + echo ''; // Global events if($SESSION->cal_show_global) { - echo ''."\n"; } else { @@ -474,7 +472,7 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { // Course events if(!empty($SESSION->cal_show_course)) { - echo ''."\n"; } else { @@ -484,11 +482,11 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { echo "\n"; - if(!empty($USER->id) && !isguest()) { + if(!empty($USER) && !isguest()) { echo ''; // Group events if($SESSION->cal_show_groups) { - echo ''."\n"; } else { @@ -497,7 +495,7 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { } // User events if($SESSION->cal_show_user) { - echo ''."\n"; } else { @@ -507,19 +505,21 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) { echo "\n"; } - echo '
    '.get_string('globalevents', 'calendar').': '; + echo ''.get_string('globalevents', 'calendar').': '; echo get_string('shown', 'calendar').' ('.get_string('clickhide', 'calendar').')'.get_string('courseevents', 'calendar').': '; + echo ''.get_string('courseevents', 'calendar').': '; echo get_string('shown', 'calendar').' ('.get_string('clickhide', 'calendar').')
    '.get_string('groupevents', 'calendar').': '; + echo ''.get_string('groupevents', 'calendar').': '; echo get_string('shown', 'calendar').' ('.get_string('clickhide', 'calendar').')'.get_string('userevents', 'calendar').': '; + echo ''.get_string('userevents', 'calendar').': '; echo get_string('shown', 'calendar').' ('.get_string('clickhide', 'calendar').')
    '; + echo '

    '; + print_side_block_end(); } function calendar_show_upcoming_events($courses, $groups, $users, $futuredays, $maxevents) { - global $USER; $events = calendar_get_upcoming($courses, $groups, $users, $futuredays, $maxevents); - $text = ''; + // New event button + if(empty($USER) || isguest()) { + $text = get_string('upcomingevents', 'calendar').': '.calendar_course_filter_selector('from=upcoming'); - if(!isguest() && !empty($USER->id)) { - $text.= '
    '; - $text.= '
    '; + } else { + $text = '
    '.get_string('upcomingevents', 'calendar').': '.calendar_course_filter_selector('from=upcoming').'
    '; + $text.= ''; $text.= ''; /* $text.= ''; @@ -529,35 +529,88 @@ function calendar_show_upcoming_events($courses, $groups, $users, $futuredays, $ $text.= '
    '; } - $text .= get_string('upcomingevents', 'calendar').': '.calendar_course_filter_selector('from=upcoming'); - - echo '
    '.$text.'
    '; - + print_side_block_start($text, array('class' => 'mycalendar')); if ($events) { - echo '
    '; foreach ($events as $event) { calendar_print_event($event); } - echo '
    '; } else { + echo '
    '; print_heading(get_string('noupcomingevents', 'calendar')); } + print_side_block_end(); } + +function calendar_print_event($event) { + global $CFG, $THEME; + + static $strftimetime; + + echo ''; + echo "'; + echo ""; + echo ""; + echo "\n
    cellcontent2\" class=\"eventfullpicture\" width=\"32\" valign=\"top\">"; + if (!empty($event->icon)) { + echo $event->icon; + } else { + print_spacer(16,16); + } + echo 'cellheading\" class=\"eventfullheader\" width=\"100%\">"; + + if (!empty($event->referer)) { + echo ''.$event->referer.' '; + } else { + echo ''.$event->name.""; + } + if (!empty($event->courselink)) { + echo '
    '.$event->courselink.' '; + } + if (!empty($event->time)) { + echo ''.$event->time.''; + } else { + echo ''.calendar_time_representation($event->timestart).''; + } + + echo "
    cellcontent2\" valign=\"top\" class=\"eventfullside\" width=\"32\"> cellcontent\" class=\"eventfullmessage\">\n"; + echo format_text($event->description, FORMAT_HTML); + if (calendar_edit_event_allowed($event)) { + echo '
    '; + if (empty($event->cmid)) { + $editlink = CALENDAR_URL.'event.php?action=edit&id='.$event->id; + $deletelink = CALENDAR_URL.'event.php?action=delete&id='.$event->id; + } else { + $editlink = $CFG->wwwroot.'/course/mod.php?update='.$event->cmid.'&return=true'; + $deletelink = $CFG->wwwroot.'/course/mod.php?delete='.$event->cmid; + } + echo ' '.get_string('tt_editevent', 'calendar').''; + echo ' '.get_string('tt_deleteevent', 'calendar').''; + echo '
    '; + } + echo "

    \n\n"; + +} + + function calendar_course_filter_selector($getvars = '') { global $USER, $SESSION; - if (empty($USER->id) or isguest()) { + if (empty($USER) or isguest()) { return ''; } - if (isadmin() && !empty($CFG->calendar_adminseesall)) { - $courses = get_courses('all', 'c.shortname','c.id,c.shortname'); + if (isadmin()) { + $courses = get_courses('all', 'c.shortname'); } else { $courses = get_my_courses($USER->id, 'shortname'); } - unset($courses[SITEID]); + unset($courses[1]); $courseoptions[1] = get_string('fulllistofcourses'); foreach ($courses as $course) { @@ -570,8 +623,10 @@ function calendar_course_filter_selector($getvars = '') { $selected = ''; } - return popup_form(CALENDAR_URL.'set.php?var=setcourse&'.$getvars.'&id=', + $form = popup_form(CALENDAR_URL.'set.php?var=setcourse&'.$getvars.'&id=', $courseoptions, 'cal_course_flt', $selected, '', '', '', true); + + return str_replace(' diff --git a/config-dist.php b/config-dist.php index 2628f05e0a8..9ca2a767caa 100644 --- a/config-dist.php +++ b/config-dist.php @@ -110,7 +110,7 @@ $CFG->dataroot = '/home/example/moodledata'; // to make sure the web server process (eg Apache) can access the files. // NOTE: the prefixed 0 is important, and don't use quotes. -$CFG->directorypermissions = 02777; +$CFG->directorypermissions = 0777; //========================================================================= @@ -152,88 +152,30 @@ $CFG->admin = 'admin'; // Setting this to true will enable admins to edit any post at any time // $CFG->admineditalways = true; // -// These variables define DEFAULT block variables for new courses -// If this one is set it overrides all others and is the only one used. -// $CFG->defaultblocks_override = 'participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity'; -// -// These variables define the specific settings for defined course formats. -// They override any settings defined in the formats own config file. -// $CFG->defaultblocks_site = 'site_main_menu,admin,course_list:course_summary,calendar_month'; -// $CFG->defaultblocks_social = 'participants,search_forums,calendar_month,calendar_upcoming,social_activities,recent_activity,admin,course_list'; -// $CFG->defaultblocks_topics = 'participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity'; -// $CFG->defaultblocks_weeks = 'participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity'; -// -// These blocks are used when no other default setting is found. -// $CFG->defaultblocks = 'participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity'; -// +// This variable will override the default block configuration on newly +// created courses, or on upgraded courses from Moodle 1.2.1 and earlier. +// The names here should all be existing blocks in the "blocks" directory. +// $CFG->defaultblocks = "participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity"; // // This setting will put Moodle in Unicode mode. It's very new and // most likely doesn't work yet. THIS IS FOR DEVELOPERS ONLY, IT IS // NOT RECOMMENDED FOR PRODUCTION SITES // $CFG->unicode = true; // +// Turning this on will make Moodle use a https connection just for the +// login page (providing a secure login), and then afterwards revert +// back to the normal http URL. Requires https to be enabled on the +// web server. +// $CFG->loginhttps = true; +// +// To use spell-checking (experimental) define a path below to your +// locally-installed copy of Aspell (0.50.1 or newer) +// $CFG->aspellpath = '/usr/bin/aspell'; // *nix +// $CFG->aspellpath = '"c:\path\to\aspell\aspell.exe"'; // Windows +// // Seconds for files to remain in caches. Decrease this if you are worried // about students being served outdated versions of uploaded files. // $CFG->filelifetime = 86400; -// -// If this setting is set to true, then Moodle will track the IP of the -// current user to make sure it hasn't changed during a session. This -// will prevent the possibility of sessions being hijacked via XSS, but it -// may break things for users coming using proxies that change all the time, -// like AOL. -// $CFG->tracksessionip = true; -// -// -// The following lines are for handling email bounces. -// $CFG->handlebounces = true; -// $CFG->minbounces = 10; -// $CFG->bounceratio = .20; -// The next lines are needed both for bounce handling and any other email to module processing. -// mailprefix must be EXACTLY four characters. -// Uncomment and customise this block for Postfix -// $CFG->mailprefix = 'mdl+'; // + is the separator for Exim and Postfix. -// $CFG->mailprefix = 'mdl-'l // - is the separator for qmail -// $CFG->maildomain = 'youremaildomain.com'; -// -// The following setting will tell Moodle to respect your PHP session -// settings. Use this if you want to control session configuration -// from php.ini, httpd.conf or .htaccess files. -// $CFG->respectsessionsettings = true; -// -// This setting will cause the userdate() function not to fix %d in -// date strings, and just let them show with a zero prefix. -// $CFG->nofixday = true; -// -// This setting will make some graphs (eg user logs) use lines instead of bars -// $CFG->preferlinegraphs = true; -// -// Enabling this will make most text-based filters only match the first time -// a phrase occurs in a given text. Otherwise all are matched. -// $CFG->filtermatchonepertext = true; -// -// Enabling this will make most text-based filters only match the first time -// a phrase occurs in a given page. Otherwise all are matched. -// $CFG->filtermatchoneperpage = true; -// -// Performance profiling -// -// If you set Debug to "Yes" in the Configuration->Variables page some -// performance profiling data will show up on your footer (in default theme). -// With these settings you get more granular control over the capture -// and printout of the data -// -// Capture performance profiling data -// define('MDL_PERF' , true); -// -// Capture additional data from DB -// define('MDL_PERFDB' , true); -// -// Print to log (for passive profiling of production servers) -// define('MDL_PERFTOLOG' , true); -// -// Print to footer (works with the default theme) -// define('MDL_PERFTOFOOT', true); -// //========================================================================= // ALL DONE! To continue installation, visit your main page with a browser diff --git a/course/category.php b/course/category.php index 54babaaa17a..87bbdd14337 100644 --- a/course/category.php +++ b/course/category.php @@ -1,6 +1,6 @@ -categoryediting = true; } else if ($edit == "off") { @@ -47,7 +47,7 @@ if (isadmin()) { /// Rename the category if requested - if (!empty($_POST['rename']) and confirm_sesskey()) { + if (!empty($_POST['rename'])) { $category->name = $_POST['rename']; if (! set_field("course_categories", "name", $category->name, "id", $category->id)) { notify("An error occurred while renaming the category"); @@ -56,19 +56,14 @@ /// Resort the category if requested - if (!empty($_GET['resort']) and confirm_sesskey()) { - if ($courses = get_courses($category->id, "fullname ASC", 'c.id,c.fullname,c.sortorder')) { - // move it off the range - $count = get_record_sql('SELECT MAX(sortorder) AS max, 1 - FROM ' . $CFG->prefix . 'course WHERE category=' . $category->id); - $count = $count->max + 100; - begin_sql(); + if (!empty($_GET['resort'])) { + if ($courses = get_courses($category->id, "fullname ASC")) { + $count = 0; foreach ($courses as $course) { set_field('course', 'sortorder', $count, 'id', $course->id); $count++; } - commit_sql(); - fix_course_sortorder($category->id); + fix_course_sortorder(); } } } @@ -85,29 +80,28 @@ if ($creatorediting) { if ($adminediting) { - print_header("$site->shortname: $category->name", "$site->fullname: $strcourses", + print_header("$site->shortname: $category->name", "$site->fullname: $strcourses", "admin/index.php\">$stradministration -> ". "$strcategories -> $category->name", "", "", true, $navbaritem); } else { - print_header("$site->shortname: $category->name", "$site->fullname: $strcourses", + print_header("$site->shortname: $category->name", "$site->fullname: $strcourses", "$strcategories -> $category->name", "", "", true, $navbaritem); } } else { - print_header("$site->shortname: $category->name", "$site->fullname: $strcourses", + print_header("$site->shortname: $category->name", "$site->fullname: $strcourses", "$strcategories -> $category->name", "", "", true, $navbaritem); } - echo '
    '; // course wrapper start /// Print the category selector $displaylist = array(); $parentlist = array(); - + make_categories_list($displaylist, $parentlist, ""); - - echo '
    '; + + echo "\n"; + echo "
    "; echo "

    $strcategories:

    "; echo "
    "; popup_form("category.php?id=", $displaylist, "switchcategory", "$category->id", "", "", "", false); @@ -118,9 +112,9 @@ if ($adminediting) { - /// Move a specified course to a new category + /// Move a specified course to a new category - if (isset($moveto) and $data = data_submitted() and confirm_sesskey()) { // Some courses are being moved + if (isset($moveto) and $data = data_submitted()) { // Some courses are being moved if (! $destcategory = get_record("course_categories", "id", $data->moveto)) { error("Error finding the category"); @@ -128,24 +122,15 @@ unset($data->moveto); unset($data->id); - unset($data->sesskey); if ($data) { foreach ($data as $code => $junk) { - $courseid = substr($code, 1); if (! $course = get_record("course", "id", $courseid)) { notify("Error finding course $courseid"); } else { - // figure out a sortorder that we can use in the destination category - $sortorder = get_field_sql('SELECT MIN(sortorder)-1 AS min - FROM ' . $CFG->prefix . 'course WHERE category=' . $destcategory->id) || 1000; - - $course->category = $destcategory->id; - $course->sortorder = $sortorder; - - if (!update_record('course', $course)) { + if (!set_field("course", "category", $destcategory->id, "id", $course->id)) { notify("An error occurred - course not moved!"); } fix_course_sortorder(); @@ -156,9 +141,9 @@ } - /// Hide or show a course - - if ((isset($hide) or isset($show)) and confirm_sesskey()) { + /// Hide or show a course + + if (isset($hide) or isset($show)) { if (isset($hide)) { $course = get_record("course", "id", $hide); $visible = 0; @@ -176,62 +161,71 @@ /// Move a course up or down - if ((isset($moveup) or isset($movedown)) and confirm_sesskey()) { + if (isset($moveup) or isset($movedown)) { $movecourse = NULL; $swapcourse = NULL; - // ensure the course order has no gaps - // and isn't at 0 - fix_course_sortorder($category->id); - - // we are going to need to know the range - $max = get_record_sql('SELECT MAX(sortorder) AS max, 1 - FROM ' . $CFG->prefix . 'course WHERE category=' . $category->id); - $max = $max->max + 100; + $courses = get_courses($category->id); if (isset($moveup)) { - $movecourse = get_record('course', 'id', $moveup); - $swapcourse = get_record('course', - 'category', $category->id, - 'sortorder', $movecourse->sortorder - 1); - } else { - $movecourse = get_record('course', 'id', $movedown); - $swapcourse = get_record('course', - 'category', $category->id, - 'sortorder', $movecourse->sortorder + 1); + if ($movecourse = get_record("course", "id", $moveup)) { + foreach ($courses as $course) { + if ($course->id == $movecourse->id) { + break; + } + $swapcourse = $course; + } + } } - + if (isset($movedown)) { + if ($movecourse = get_record("course", "id", $movedown)) { + $choosenext = false; + foreach ($courses as $course) { + if ($choosenext) { + $swapcourse = $course; + break; + } + if ($course->id == $movecourse->id) { + $choosenext = true; + } + } + } + } if ($swapcourse and $movecourse) { // Renumber everything for robustness - begin_sql(); - if (!( set_field("course", "sortorder", $max, "id", $swapcourse->id) - && set_field("course", "sortorder", $swapcourse->sortorder, "id", $movecourse->id) - && set_field("course", "sortorder", $movecourse->sortorder, "id", $swapcourse->id) - )) { - notify("Could not update that course!"); + $count=0; + foreach ($courses as $course) { + $count++; + if ($course->id == $swapcourse->id) { + $course = $movecourse; + } else if ($course->id == $movecourse->id) { + $course = $swapcourse; + } + if (! set_field("course", "sortorder", $count, "id", $course->id)) { + notify("Could not update that course!"); + } } - commit_sql(); } - } + fix_course_sortorder(); + } // End of editing stuff /// Print out all the sub-categories + if ($subcategories = get_records("course_categories", "parent", $category->id, "sortorder ASC")) { $firstentry = true; foreach ($subcategories as $subcategory) { if ($subcategory->visible or iscreator()) { - $subcategorieswereshown = true; if ($firstentry) { - echo ''; - echo ''; - echo ''; + + echo ""; // The right column - if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing) { - echo ''; + if(block_have_active($rightblocks) || $editing) { + echo ''; } - echo '
    '.get_string('subcategories').'
    '; + echo ""; + echo ""; + echo "\n"; + echo "
    ".get_string("subcategories")."
    "; $firstentry = false; } $catlinkcss = $subcategory->visible ? "" : " class=\"dimmed\" "; - echo ''. - $subcategory->name.'
    '; + echo "id\">$subcategory->name
    "; } } if (!$firstentry) { @@ -239,26 +233,22 @@ echo "
    "; } } - + /// Print out all the courses unset($course); // To avoid unwanted language effects later - $courses = get_courses_page($category->id, 'c.sortorder ASC', - 'c.id,c.sortorder,c.shortname,c.fullname,c.summary,c.visible,c.teacher,c.guest,c.password', - $totalcount, $page*$perpage, $perpage); + $courses = get_courses_page($category->id, "c.sortorder ASC", "c.*", $totalcount, $page*$perpage, $perpage); $numcourses = count($courses); if (!$courses) { - if (empty($subcategorieswereshown)) { - print_heading(get_string("nocoursesyet")); - } + print_heading(get_string("nocoursesyet")); } else if ($numcourses <= COURSE_MAX_SUMMARIES_PER_PAGE and !$page and !$creatorediting) { print_courses($category, "80%"); - } else { - print_paging_bar($totalcount, $page, $perpage, "category.php?id=$category->id&perpage=$perpage&"); + } else { + print_paging_bar($totalcount, $page, $perpage, "category.php?id=$category->id&perpage=$perpage&"); $strcourses = get_string("courses"); $strselect = get_string("select"); @@ -272,15 +262,18 @@ $strhide = get_string("hide"); $strshow = get_string("show"); $strsummary = get_string("summary"); - $strsettings = get_string("settings"); - $strassignteachers = get_string("assignteachers"); + $strassignteachers = get_string("assignteachers"); $strallowguests = get_string("allowguests"); $strrequireskey = get_string("requireskey"); + if (empty($THEME->custompix)) { + $pixpath = "$CFG->wwwroot/pix"; + } else { + $pixpath = "$CFG->wwwroot/theme/$CFG->theme/pix"; + } - echo '
    '; - echo "sesskey\">"; - echo ''; + echo ""; + echo "
    "; echo ""; if ($creatorediting) { echo ""; @@ -303,79 +296,64 @@ $linkcss = $acourse->visible ? "" : " class=\"dimmed\" "; echo ""; - echo ''; + echo ""; if ($creatorediting) { if ($adminediting) { echo ""; echo ""; } else { echo ""; @@ -384,14 +362,14 @@ } if ($abletomovecourses) { - echo ""; } - + echo "
    $strcourses$stredit
    '.$acourse->fullname.'id\">$acourse->fullname"; - echo ''. - ' '; - echo ''. - ' '; - echo ''. - ' '; + echo "wwwroot/course/teacher.php?id=$acourse->id\"> "; + echo "id\"> "; if (!empty($acourse->visible)) { - echo ''. - ' '; + echo "id&hide=$acourse->id\"> "; } else { - echo ''. - ' '; + echo "id&show=$acourse->id\"> "; } + + echo "id\"> "; - echo ''. - ' '; - - echo ''. - ' '; - + echo "id&wdir=/backupdata\"> "; + if ($up) { - echo ''. - ' '; + echo "id&moveup=$acourse->id\"> "; } else { - echo ' '; + echo "wwwroot/pix/spacer.gif\" height=11 width=11 border=0> "; } - + if ($down) { - echo ''. - ' '; + echo "id&movedown=$acourse->id\"> "; } else { - echo ' '; + echo "wwwroot/pix/spacer.gif\" height=11 width=11 border=0> "; } - + echo ""; - echo ''; + echo "id\">"; $abletomovecourses = true; } else if (isteacheredit($acourse->id)) { echo ""; - echo ''. - ' '; - echo ''. - ' '; + echo "wwwroot/course/teacher.php?id=$acourse->id\"> "; } echo ""; - if (!empty($acourse->guest)) { - echo ''; + if ($acourse->guest ) { + echo "id\">\"\""; } - if (!empty($acourse->password)) { - echo ''; + if ($acourse->password) { + echo "id\">\"\""; } - if (!empty($acourse->summary)) { - link_to_popup_window ("/course/info.php?id=$acourse->id", "courseinfo", - 'info', + if ($acourse->summary) { + link_to_popup_window ("/course/info.php?id=$acourse->id", "courseinfo", + "\"info\"", 400, 500, $strsummary); } echo "
    "; + echo "
    "; echo "
    "; unset($displaylist[$category->id]); choose_from_menu ($displaylist, "moveto", "", get_string("moveselectedcoursesto"), "javascript:document.movecourses.submit()"); - echo ''; + echo "id\">"; echo "
    "; echo "
    "; echo "
    "; @@ -403,7 +381,6 @@ unset($options); $options["id"] = $category->id; $options["resort"] = "name"; - $options["sesskey"] = $USER->sesskey; print_single_button("category.php", $options, get_string("resortcoursesbyname"), "get"); } @@ -416,18 +393,15 @@ if (isadmin()) { /// Print form to rename the category $strrename= get_string("rename"); - echo '
    '; - echo ''; - echo ''; - echo ''; - echo ''; + echo ""; + echo "id\">"; + echo "name)."\">"; + echo ""; echo "
    "; echo "
    "; } echo ""; - - echo ''; // course wrapper end - + print_footer(); ?> diff --git a/course/delete.php b/course/delete.php index 6a589ff4590..d0cee3315b5 100644 --- a/course/delete.php +++ b/course/delete.php @@ -1,4 +1,4 @@ -category\">$category->name -> ". "$strdeletecheck"); - notice_yesno("$strdeletecoursecheck

    $course->fullname ($course->shortname)", - "delete.php?id=$course->id&delete=".md5($course->timemodified)."&sesskey=$USER->sesskey", + notice_yesno("$strdeletecoursecheck

    $course->fullname ($course->shortname)", + "delete.php?id=$course->id&delete=".md5($course->timemodified), "category.php?id=$course->category"); exit; } @@ -47,14 +47,7 @@ error("The check variable was wrong - try again"); } - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - // OK checks done, delete the course now. - - add_to_log(SITEID, "course", "delete", "view.php?id=$course->id", "$course->fullname (ID $course->id)"); - $strdeletingcourse = get_string("deletingcourse", "", $course->shortname); print_header("$site->shortname: $strdeletingcourse", $site->fullname, diff --git a/course/edit.html b/course/edit.html index 618bc82d627..b08c11fb169 100644 --- a/course/edit.html +++ b/course/edit.html @@ -1,4 +1,4 @@ -showreports)) { $form->showreports = 0; @@ -12,21 +12,14 @@ if (!isset($form->lang)) { $form->lang = ''; } - if (!isset($form->theme)) { - $form->theme = ''; - } if (!isset($form->enrolperiod)) { $form->enrolperiod = 0; } - if (!isset($form->metacourse)) { - $form->metacourse = 0; - } ?> -
    - - - - + +
    :
    + + - - - - + + - - - + + - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + - - - + + - - - + + - - - + + - - + + -allowcoursethemes)) { ?> - - - - - - - - - - - +

    :

    :" /> +

    :

    :" /> +

    :

    :" /> +

    :

    :

    :

    summary); helpbutton("text", get_string("helptext")); @@ -67,23 +59,23 @@ ?>
    :

    :

    courseformats, "format", "$form->format", ""); helpbutton("courseformats", get_string("courseformats")); ?>
    :

    :

    startdate); helpbutton("coursestartdate", get_string("startdate")); ?>
    :

    :

    :

    :

    :

    :

    :

    :

    :" /> +

    :

    :

    :

    enrol != 'internal') { ?> -
    :" /> +

    :

    :

    :

    :

    :

    :

    :

    :

    :

    :

    :

    maxbytes); choose_from_menu ($choices, "maxbytes", $form->maxbytes, ""); helpbutton("courseuploadsize", get_string("maximumupload")); ?>
    :" /> +

    :

    ()
    :" /> +

    :

    ()
    :" /> +

    :

    ()
    :" /> +

    :

    ()
    :

    :

    : - theme, "", "", ""); - ?> -
    : - metacourse,"","",""); - } else { - echo ((empty($form->metacourse)) ? get_string("no") : get_string("yes")); - echo " - $disable_meta "; - } ?> -
    " />
    ">
    - - - - - +
    diff --git a/course/edit.php b/course/edit.php index 37771c940b9..a07024645e3 100644 --- a/course/edit.php +++ b/course/edit.php @@ -1,16 +1,14 @@ -libdir/blocklib.php"); - $id = (int)optional_param('id', 0); // course id - $category = (int)optional_param('category', 0); // possible default category + optional_variable($id, 0); // course id + optional_variable($category, 0); // category id require_login(); - - $disable_meta = false; if ($id) { if (! $course = get_record("course", "id", $id)) { @@ -20,20 +18,6 @@ if (!isteacheredit($course->id)) { error("You do not currently have editing privileges!"); } - - if (course_in_meta($course)) { - $disable_meta = get_string('metaalreadyinmeta'); - } - else if ($course->metacourse) { - if (count_records("course_meta","parent_course",$course->id) > 0) { - $disable_meta = get_string('metaalreadyhascourses'); - } - } - else { - if (count_records("user_students","course",$course->id) > 0) { - $disable_meta = get_string('metaalreadyhasenrolments'); - } - } } else { // Admin is creating a new course if (!iscreator()) { @@ -48,9 +32,11 @@ } + + /// If data submitted, then process and store. - if ($form = data_submitted() and confirm_sesskey()) { + if ($form = data_submitted()) { if (empty($course)) { check_for_restricted_user($USER->username, "$CFG->wwwroot"); @@ -60,8 +46,6 @@ $form->startdate = make_timestamp($form->startyear, $form->startmonth, $form->startday); - $form->format = optional_param('format', 'social', PARAM_ALPHA); - validate_form($course, $form, $err); if (count($err) == 0) { @@ -70,40 +54,36 @@ if (!empty($course)) { // Test for and remove blocks which aren't appropriate anymore - $page = page_create_object(PAGE_COURSE_VIEW, $course->id); - blocks_remove_inappropriate($page); + $form->blockinfo = $course->blockinfo; + block_remove_inappropriate_from_course($form); // Update with the new data - if (update_record('course', $form)) { + if (update_record("course", $form)) { add_to_log($course->id, "course", "update", "edit.php?id=$id", ""); fix_course_sortorder(); - redirect($page->url_get_full(), get_string('changessaved')); + redirect("view.php?id=$course->id", get_string("changessaved")); } else { error("Serious Error! Could not update the course record! (id = $form->id)"); } } else { $form->timecreated = time(); - // place at beginning of category - fix_course_sortorder(); - $form->sortorder = get_field_sql("SELECT min(sortorder)-1 FROM {$CFG->prefix}course WHERE category=$form->category"); - if (empty($form->sortorder)) { - $form->sortorder = 100; + //Create blockinfo default content + if ($form->format == "social") { + $form->blockinfo = blocks_get_default_blocks (NULL,"participants,search_forums,calendar_month,calendar_upcoming,social_activities,recent_activity,admin,course_list"); + } else { + //For topics and weeks formats (default built in the function) + $form->blockinfo = blocks_get_default_blocks(); } - if ($newcourseid = insert_record('course', $form)) { // Set up new course - - // Setup the blocks - $page = page_create_object(PAGE_COURSE_VIEW, $newcourseid); - blocks_repopulate_page($page); // Return value not checked because you can always edit later - + if ($newcourseid = insert_record("course", $form)) { // Set up new course $section = NULL; $section->course = $newcourseid; // Create a default section. $section->section = 0; $section->id = insert_record("course_sections", $section); fix_course_sortorder(); - add_to_log(SITEID, "course", "new", "view.php?id=$newcourseid", "$form->fullname (ID $newcourseid)"); + add_to_log($newcourseid, "course", "new", "view.php?id=$newcourseid", ""); if (isadmin()) { // Redirect admin to add teachers redirect("teacher.php?id=$newcourseid", get_string("changessaved")); @@ -123,8 +103,6 @@ $USER->teacher[$newcourseid] = true; $USER->teacheredit[$newcourseid] = true; - fix_course_sortorder(); - redirect("view.php?id=$newcourseid", get_string("changessaved")); } @@ -209,10 +187,8 @@ "$strcategories -> $straddnewcourse", $focus); } - $form->sesskey = !empty($USER->id) ? $USER->sesskey : ''; - print_heading($streditcoursesettings); - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); include("edit.html"); print_simple_box_end(); diff --git a/course/editsection.html b/course/editsection.html index ecc813b7789..50a3c8241be 100644 --- a/course/editsection.html +++ b/course/editsection.html @@ -1,8 +1,8 @@
    - - - '; + echo ""; // The right column - if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing) { - echo ''; } - echo '

    :

    + + +

    :


    - summary); ?> + summary); ?>
    - - -" /> + +"> diff --git a/course/editsection.php b/course/editsection.php index 97a487aaf56..16c5c744df9 100644 --- a/course/editsection.php +++ b/course/editsection.php @@ -1,4 +1,4 @@ -sesskey = !empty($USER->id) ? $USER->sesskey : ''; - $usehtmleditor = can_use_html_editor(); $sectionname = get_string("name$course->format"); $stredit = get_string("edit", "", " $sectionname $section->section"); print_header("$course->shortname: $stredit", "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> $stredit"); print_heading(get_string("summaryof", "", "$sectionname $form->section")); - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); include("editsection.html"); print_simple_box_end(); diff --git a/course/enrol.html b/course/enrol.html new file mode 100644 index 00000000000..13fe31ee224 --- /dev/null +++ b/course/enrol.html @@ -0,0 +1,45 @@ + + + + + + + + + +
    +

    + id&course=$site->id\">". + "$teacher->firstname $teacher->lastname."; + } else { + $teachername = get_string("yourteacher", "", strtolower($course->teacher)); + } + print_string("enrolmentkeyfrom", "", $teachername); + ?> +

    +
    +
    + + + + + + + +

    :

    + + +
      + + + + + + +
    ">  
    + ">
    +
    +
    + diff --git a/course/enrol.php b/course/enrol.php index 1a930cf72b8..bd2d7ee8cce 100644 --- a/course/enrol.php +++ b/course/enrol.php @@ -1,4 +1,4 @@ -id, 'course', $course->id)) { - if ($course->enrolperiod and $student->timestart and ($student->timestart >= time())) { - $message = get_string('enrolmentnotyet', '', userdate($student->timestart)); - print_header(); - notice($message, $CFG->wwwroot); - } + $message = get_string('enrolmentnotyet', '', userdate($student->timestart)); + print_header(); + notice($message, $CFG->wwwroot); } /// Check the submitted enrollment key if there is one if ($form = data_submitted()) { - //User is not enrolled in the course, wants to access course content - //as a guest, and course setting allow unlimited guest access - //Code cribbed from course/loginas.php - if (isset($loginasguest) && ($course->guest==1)) { - $realuser = $USER->id; - $realname = fullname($USER, true); - $USER = guest_user(); - $USER->loggedin = true; - $USER->site = $CFG->wwwroot; - $USER->realuser = $realuser; - $USER->sessionIP = md5(getremoteaddr()); // Store the current IP in the session - if (isset($SESSION->currentgroup)) { // Remember current cache setting for later - $SESSION->oldcurrentgroup = $SESSION->currentgroup; - unset($SESSION->currentgroup); - } - $guest_name = fullname($USER, true); - add_to_log($course->id, "course", "loginas", "../user/view.php?id=$course->id&$USER->id$", "$realname -> $guest_name"); - if ($SESSION->wantsurl) { - $destination = $SESSION->wantsurl; - unset($SESSION->wantsurl); - } else { - $destination = "$CFG->wwwroot/course/view.php?id=$course->id"; - } - redirect($destination); - } - $enrol->check_entry($form, $course); + $enrol->check_entry($form, $course); } $enrol->print_entry($course); diff --git a/course/format/social/config.php b/course/format/social/config.php deleted file mode 100755 index 9120003bf0d..00000000000 --- a/course/format/social/config.php +++ /dev/null @@ -1,13 +0,0 @@ - \ No newline at end of file diff --git a/course/format/social/format.php b/course/format/social/format.php index 7cf3f2b84b7..72a8f1dc1a3 100644 --- a/course/format/social/format.php +++ b/course/format/social/format.php @@ -1,8 +1,9 @@ -dirroot.'/mod/forum/lib.php'); + require_once("$CFG->dirroot/mod/forum/lib.php"); + require_once("$CFG->dirroot/mod/resource/lib.php"); // Bounds for block widths define('BLOCK_L_MIN_WIDTH', 100); @@ -10,52 +11,56 @@ define('BLOCK_R_MIN_WIDTH', 100); define('BLOCK_R_MAX_WIDTH', 210); - optional_variable($preferred_width_left, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT])); - optional_variable($preferred_width_right, blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT])); + optional_variable($preferred_width_left, 0); + optional_variable($preferred_width_right, 0); $preferred_width_left = min($preferred_width_left, BLOCK_L_MAX_WIDTH); $preferred_width_left = max($preferred_width_left, BLOCK_L_MIN_WIDTH); $preferred_width_right = min($preferred_width_right, BLOCK_R_MAX_WIDTH); $preferred_width_right = max($preferred_width_right, BLOCK_R_MIN_WIDTH); - $strgroups = get_string('groups'); - $strgroupmy = get_string('groupmy'); - $editing = $PAGE->user_is_editing(); + $strgroups = get_string("groups"); + $strgroupmy = get_string("groupmy"); + $editing = isediting($course->id); - echo ''; + echo '
    '; echo ''; - if (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $editing) { - echo ''; } - echo ''; - // The right column - if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing) { - echo ''; + if(block_have_active($rightblocks) || $editing) { + echo ''; } echo ''; diff --git a/course/format/topics/config.php b/course/format/topics/config.php deleted file mode 100755 index de42edb9f4f..00000000000 --- a/course/format/topics/config.php +++ /dev/null @@ -1,13 +0,0 @@ - \ No newline at end of file diff --git a/course/format/topics/format.php b/course/format/topics/format.php index 5755cac1788..8fee54e5468 100644 --- a/course/format/topics/format.php +++ b/course/format/topics/format.php @@ -1,4 +1,4 @@ -dirroot.'/mod/forum/lib.php'); + require_once("$CFG->dirroot/mod/forum/lib.php"); // Bounds for block widths define('BLOCK_L_MIN_WIDTH', 100); @@ -14,8 +14,8 @@ define('BLOCK_R_MIN_WIDTH', 100); define('BLOCK_R_MAX_WIDTH', 210); - optional_variable($preferred_width_left, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT])); - optional_variable($preferred_width_right, blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT])); + optional_variable($preferred_width_left, 0); + optional_variable($preferred_width_right, 0); $preferred_width_left = min($preferred_width_left, BLOCK_L_MAX_WIDTH); $preferred_width_left = max($preferred_width_left, BLOCK_L_MIN_WIDTH); $preferred_width_right = min($preferred_width_right, BLOCK_R_MAX_WIDTH); @@ -31,91 +31,97 @@ } } - if (isteacher($course->id) and isset($marker) and confirm_sesskey()) { + if (isteacher($course->id) and isset($marker)) { $course->marker = $marker; if (! set_field("course", "marker", $marker, "id", $course->id)) { error("Could not mark that topic for this course"); } } - $streditsummary = get_string('editsummary'); - $stradd = get_string('add'); - $stractivities = get_string('activities'); - $strshowalltopics = get_string('showalltopics'); - $strtopic = get_string('topic'); - $strgroups = get_string('groups'); - $strgroupmy = get_string('groupmy'); - $editing = $PAGE->user_is_editing(); - + $streditsummary = get_string("editsummary"); + $stradd = get_string("add"); + $stractivities = get_string("activities"); + $strshowalltopics = get_string("showalltopics"); + $strtopic = get_string("topic"); + $strgroups = get_string("groups"); + $strgroupmy = get_string("groupmy"); if ($editing) { $strstudents = moodle_strtolower($course->students); - $strtopichide = get_string('topichide', '', $strstudents); - $strtopicshow = get_string('topicshow', '', $strstudents); - $strmarkthistopic = get_string('markthistopic'); - $strmarkedthistopic = get_string('markedthistopic'); - $strmoveup = get_string('moveup'); - $strmovedown = get_string('movedown'); + $strtopichide = get_string("topichide", "", $strstudents); + $strtopicshow = get_string("topicshow", "", $strstudents); + $strmarkthistopic = get_string("markthistopic"); + $strmarkedthistopic = get_string("markedthistopic"); + $strmoveup = get_string("moveup"); + $strmovedown = get_string("movedown"); } /// Layout the whole page as three big columns. - echo '
    '; - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); + if(block_have_active($leftblocks) || $editing) { + echo ''; + print_course_blocks($course, $leftblocks, BLOCK_LEFT); echo ''; - if ($forum = forum_get_course_forum($course->id, 'social')) { - if (forum_is_subscribed($USER->id, $forum->id)) { - $subtext = get_string('unsubscribe', 'forum'); + echo ""; + if ($social = forum_get_course_forum($course->id, "social")) { + if (forum_is_subscribed($USER->id, $social->id)) { + $subtext = get_string("unsubscribe", "forum"); } else { - $subtext = get_string('subscribe', 'forum'); + $subtext = get_string("subscribe", "forum"); } - $headertext = ''. - ''. - ''. - '
    '.get_string('socialheadline').'
    '; + $headertext = "". + "
    ". + get_string("socialheadline"). + "". + "id\">$subtext
    "; print_heading_block($headertext); - print_spacer(7); + echo "\"\"
    "; - forum_print_latest_discussions($course, $forum, 10, 'plain', '', false); + forum_print_latest_discussions($social->id, 10, "plain", "", false); } else { - notify('Could not find or create a social forum here'); + notify("Could not find or create a social forum here"); } echo '
    '; - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT); - echo ''; + print_course_blocks($course, $rightblocks, BLOCK_RIGHT); + if ($editing && !empty($missingblocks)) { + block_print_blocks_admin($course, $missingblocks); + } + print_spacer(1, 120, true); + echo '
    '; + echo "
    "; + + echo "\n"; /// The left column ... - if (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $editing) { - echo ''; } /// Start main column - echo '
    '; - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); + if(block_have_active($leftblocks) || $editing) { + echo ''; + print_course_blocks($course, $leftblocks, BLOCK_LEFT); echo ''; + echo ""; - print_heading_block(get_string('topicoutline'), 'outline'); + print_heading_block(get_string("topicoutline"), "100%", "outlineheadingblock"); + print_spacer(8, 1, true); - echo ''; + echo "
    "; /// If currently moving a file then show the current clipboard if (ismoving($course->id)) { - $stractivityclipboard = strip_tags(get_string('activityclipboard', '', addslashes($USER->activitycopyname))); - $strcancel= get_string('cancel'); - echo ''; - echo ''; - echo ''; + $stractivityclipboard = strip_tags(get_string("activityclipboard", "", addslashes($USER->activitycopyname))); + $strcancel= get_string("cancel"); + echo ""; + echo ""; + echo ""; + echo ""; } + /// Print Section 0 $section = 0; $thissection = $sections[$section]; if ($thissection->summary or $thissection->sequence or isediting($course->id)) { - echo ''; - echo ''; - echo ''; + echo ""; + echo "'; - echo ''; - echo ''; - echo ''; + echo ""; + echo ""; + echo ""; } @@ -128,6 +134,22 @@ while ($section <= $course->numsections) { + if (!empty($displaysection) and $displaysection != $section) { + if (empty($sections[$section])) { + $strsummary = ""; + } else { + $strsummary = " - ".strip_tags($sections[$section]->summary); + if (strlen($strsummary) < 57) { + $strsummary = " - $strsummary"; + } else { + $strsummary = " - ".substr($strsummary, 0, 60)."..."; + } + } + $sectionmenu["topic=$section"] = s("$section$strsummary"); + $section++; + continue; + } + if (!empty($sections[$section])) { $thissection = $sections[$section]; @@ -135,131 +157,131 @@ unset($thissection); $thissection->course = $course->id; // Create a new section structure $thissection->section = $section; - $thissection->summary = ''; + $thissection->summary = ""; $thissection->visible = 1; - if (!$thissection->id = insert_record('course_sections', $thissection)) { - notify('Error inserting new topic!'); + if (!$thissection->id = insert_record("course_sections", $thissection)) { + notify("Error inserting new topic!"); } } $showsection = (isteacher($course->id) or $thissection->visible or !$course->hiddensections); - if (!empty($displaysection) and $displaysection != $section) { - if ($showsection) { - $strsummary = ' - '.strip_tags($thissection->summary); - if (strlen($strsummary) < 57) { - $strsummary = ' - '.$strsummary; - } else { - $strsummary = ' - '.substr($strsummary, 0, 60).'...'; - } - $sectionmenu['topic='.$section] = s($section.$strsummary); - } - $section++; - continue; - } - if ($showsection) { $currenttopic = ($course->marker == $section); if (!$thissection->visible) { - $sectionstyle = ' hidden'; + $colorsides = "bgcolor=\"$THEME->hidden\" class=\"topicsoutlinesidehidden\""; + $colormain = "bgcolor=\"$THEME->cellcontent\" class=\"topicsoutlinecontenthidden\""; } else if ($currenttopic) { - $sectionstyle = ' current'; + $colorsides = "bgcolor=\"$THEME->cellheading2\" class=\"topicsoutlinesidehighlight\""; + $colormain = "bgcolor=\"$THEME->cellcontent\" class=\"topicsoutlinecontenthighlight\""; } else { - $sectionstyle = ''; + $colorsides = "bgcolor=\"$THEME->cellheading\" class=\"topicsoutlineside\""; + $colormain = "bgcolor=\"$THEME->cellcontent\" class=\"topicsoutlinecontent\""; } - echo ''; + echo ""; + echo ""; - echo ''; - - echo '"; } else { - $summaryformatoptions->noclean = true; - echo format_text($thissection->summary, FORMAT_HTML, $summaryformatoptions); + echo ''; - echo '"; + } + echo "'; - echo ''; + echo ""; + echo ""; + echo ""; } $section++; } - echo '
    '; - echo $stractivityclipboard.'  ('.$strcancel.')'; - echo '
    cellcontent\" class=\"topicoutlineclip\" width=\"100%\">"; + echo "

    "; + echo "$stractivityclipboard  ($strcancel)"; + echo "

    "; + echo "
     '; + echo '
    cellheading\" class=\"topicsoutlineside\" valign=top width=20> cellcontent\" class=\"topicsoutlinecontent\" width=\"100%\">"; - $summaryformatoptions->noclean = true; - echo format_text($thissection->summary, FORMAT_HTML, $summaryformatoptions); + echo format_text($thissection->summary, FORMAT_HTML); if (isediting($course->id)) { - echo ''.$streditsummary.'

    '; + echo "id\">pixpath/t/edit.gif\" ". + " height=11 width=11 border=0 alt=\"$streditsummary\">
    "; } + echo '
    '; + print_section($course, $thissection, $mods, $modnamesused); if (isediting($course->id)) { print_section_add_menus($course, $section, $modnames); } - echo '
     
    cellheading\" class=\"topicsoutlineside\" valign=top align=center width=10>"; + echo " 
    "; + echo "

    $section

    "; + echo "
    '; - echo ''.$section.''; - echo ''; if (!isteacher($course->id) and !$thissection->visible) { // Hidden for students - echo get_string('notavailable'); + echo ''; + echo get_string("notavailable"); + echo "'; + + echo format_text($thissection->summary, FORMAT_HTML); if (isediting($course->id)) { - echo ' '. - '

    '; + echo " id>". + "pixpath/t/edit.gif\" border=0 height=11 width=11>
    "; } + echo '
    '; + print_section($course, $thissection, $mods, $modnamesused); if (isediting($course->id)) { print_section_add_menus($course, $section, $modnames); } - } - echo '
    '; + echo ""; + echo ""; + if ($displaysection == $section) { // Show the zoom boxes - echo ''. - '
    '; + echo "id&topic=all\" title=\"$strshowalltopics\">". + "pixpath/i/all.gif\" height=25 width=16 border=0>
    "; } else { - $strshowonlytopic = get_string('showonlytopic', '', $section); - echo ''. - '
    '; + $strshowonlytopic = get_string("showonlytopic", "", $section); + echo "id&topic=$section\" title=\"$strshowonlytopic\">". + "pixpath/i/one.gif\" height=16 width=16 border=0>
    "; } if (isediting($course->id)) { if ($course->marker == $section) { // Show the "light globe" on/off - echo ''. - '
    '; + echo "id&marker=0\" title=\"$strmarkedthistopic\">". + "pixpath/i/marked.gif\" vspace=3 height=16 width=16 border=0>
    "; } else { - echo ''. - '
    '; + echo "id&marker=$section\" title=\"$strmarkthistopic\">". + "pixpath/i/marker.gif\" vspace=3 height=16 width=16 border=0>
    "; } if ($thissection->visible) { // Show the hide/show eye - echo ''. - '
    '; + echo "id&hide=$section\" title=\"$strtopichide\">". + "pixpath/i/hide.gif\" vspace=3 height=16 width=16 border=0>
    "; } else { - echo ''. - '
    '; + echo "id&show=$section\" title=\"$strtopicshow\">". + "pixpath/i/show.gif\" vspace=3 height=16 width=16 border=0>
    "; } if ($section > 1) { // Add a arrow to move section up - echo ''. - '
    '; + echo "id§ion=$section&move=-1\" title=\"$strmoveup\">". + "pixpath/t/up.gif\" vspace=3 height=11 width=11 border=0>
    "; } if ($section < $course->numsections) { // Add a arrow to move section down - echo ''. - '
    '; + echo "id§ion=$section&move=1\" title=\"$strmovedown\">". + "pixpath/t/down.gif\" vspace=3 height=11 width=11 border=0>
    "; } } - echo '
    '; + echo "
    "; if (!empty($sectionmenu)) { - echo '
    '; - echo popup_form($CFG->wwwroot.'/course/view.php?id='.$course->id.'&', $sectionmenu, - 'sectionmenu', '', get_string('jumpto'), '', '', true); - echo '
    '; + echo "
    "; + echo popup_form("$CFG->wwwroot/course/view.php?id=$course->id&", $sectionmenu, + "sectionmenu", "", get_string("jumpto"), "", "", true); + echo "
    "; } - echo '
    '; - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT); + if(block_have_active($rightblocks) || $editing) { + echo ''; + print_course_blocks($course, $rightblocks, BLOCK_RIGHT); + if ($editing && !empty($missingblocks)) { + block_print_blocks_admin($course, $missingblocks); + } + print_spacer(1, 120, true); echo '
    '; + echo "
    \n"; ?> diff --git a/course/format/weeks/config.php b/course/format/weeks/config.php deleted file mode 100755 index de42edb9f4f..00000000000 --- a/course/format/weeks/config.php +++ /dev/null @@ -1,13 +0,0 @@ - \ No newline at end of file diff --git a/course/format/weeks/format.php b/course/format/weeks/format.php index 7f1e9adbe43..074cbe0fa95 100644 --- a/course/format/weeks/format.php +++ b/course/format/weeks/format.php @@ -1,4 +1,4 @@ -newsitems) { - $news = forum_get_course_forum($course->id, 'news'); + $news = forum_get_course_forum($course->id, "news"); } - $streditsummary = get_string('editsummary'); - $stradd = get_string('add'); - $stractivities = get_string('activities'); - $strshowallweeks = get_string('showallweeks'); - $strweek = get_string('week'); - $strgroups = get_string('groups'); - $strgroupmy = get_string('groupmy'); - $editing = $PAGE->user_is_editing(); - + $streditsummary = get_string("editsummary"); + $stradd = get_string("add"); + $stractivities = get_string("activities"); + $strshowallweeks = get_string("showallweeks"); + $strweek = get_string("week"); + $strgroups = get_string("groups"); + $strgroupmy = get_string("groupmy"); if ($editing) { $strstudents = moodle_strtolower($course->students); - $strweekhide = get_string('weekhide', '', $strstudents); - $strweekshow = get_string('weekshow', '', $strstudents); - $strmoveup = get_string('moveup'); - $strmovedown = get_string('movedown'); + $strweekhide = get_string("weekhide", "", $strstudents); + $strweekshow = get_string("weekshow", "", $strstudents); + $strmoveup = get_string("moveup"); + $strmovedown = get_string("movedown"); } /// Layout the whole page as three big columns. - echo ''; + echo "
    "; + + echo "\n"; /// The left column ... - if (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $editing) { - echo ''; } /// Start main column - echo '
    '; - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); + if(block_have_active($leftblocks) || $editing) { + echo ''; + print_course_blocks($course, $leftblocks, BLOCK_LEFT); echo ''; + echo ""; + print_heading_block(get_string("weeklyoutline"), "100%", "outlineheadingblock"); + print_spacer(8, 1, true); - print_heading_block(get_string('weeklyoutline'), 'outline'); - - echo ''; + echo "
    "; /// If currently moving a file then show the current clipboard if (ismoving($course->id)) { - $stractivityclipboard = strip_tags(get_string('activityclipboard', '', addslashes($USER->activitycopyname))); - $strcancel= get_string('cancel'); - echo ''; - echo ''; - echo ''; + $stractivityclipboard = strip_tags(get_string("activityclipboard", "", addslashes($USER->activitycopyname))); + $strcancel= get_string("cancel"); + echo ""; + echo ""; + echo ""; + echo ""; } /// Print Section 0 with general activities @@ -84,36 +87,34 @@ $thissection = $sections[$section]; if ($thissection->summary or $thissection->sequence or isediting($course->id)) { - echo ''; - echo ''; - echo '"; + echo ""; + echo "'; - echo ''; - echo ''; - echo ''; - + echo ""; + echo ""; + echo ""; } -/// Now all the normal modules by week -/// Everything below uses "section" terminology - each "section" is a week. - +/// Now all the weekly sections $timenow = time(); $weekdate = $course->startdate; // this should be 0:00 Monday of that week $weekdate += 7200; // Add two hours to avoid possible DST problems @@ -122,7 +123,7 @@ $weekofseconds = 604800; $course->enddate = $course->startdate + ($weekofseconds * $course->numsections); - $strftimedateshort = ' '.get_string('strftimedateshort'); + $strftimedateshort = " ".get_string("strftimedateshort"); while ($weekdate < $course->enddate) { @@ -130,6 +131,13 @@ $weekday = userdate($weekdate, $strftimedateshort); $endweekday = userdate($weekdate+518400, $strftimedateshort); + if (!empty($displaysection) and $displaysection != $section) { // Check this week is visible + $sectionmenu["week=$section"] = s("$strweek $section | $weekday - $endweekday"); + $section++; + $weekdate = $nextweekdate; + continue; + } + if (!empty($sections[$section])) { $thissection = $sections[$section]; @@ -137,119 +145,128 @@ unset($thissection); $thissection->course = $course->id; // Create a new week structure $thissection->section = $section; - $thissection->summary = ''; + $thissection->summary = ""; $thissection->visible = 1; - if (!$thissection->id = insert_record('course_sections', $thissection)) { - notify('Error inserting new week!'); + if (!$thissection->id = insert_record("course_sections", $thissection)) { + notify("Error inserting new week!"); } } $showsection = (isteacher($course->id) or $thissection->visible or !$course->hiddensections); - if (!empty($displaysection) and $displaysection != $section) { // Check this week is visible - if ($showsection) { - $sectionmenu['week='.$section] = s("$strweek $section | $weekday - $endweekday"); - } - $section++; - $weekdate = $nextweekdate; - continue; - } - if ($showsection) { $currentweek = (($weekdate <= $timenow) && ($timenow < $nextweekdate)); if (!$thissection->visible) { - $sectionstyle = ' hidden'; + $colorsides = "bgcolor=\"$THEME->hidden\" class=\"weeklyoutlinesidehidden\""; + $colormain = "bgcolor=\"$THEME->cellcontent\" class=\"weeklyoutlinecontenthidden\""; } else if ($currentweek) { - $sectionstyle = ' current'; + $colorsides = "bgcolor=\"$THEME->cellheading2\" class=\"weeklyoutlinesidehighlight\""; + $colormain = "bgcolor=\"$THEME->cellcontent\" class=\"weeklyoutlinecontenthighlight\""; } else { - $sectionstyle = ''; + $colorsides = "bgcolor=\"$THEME->cellheading\" class=\"weeklyoutlineside\""; + $colormain = "bgcolor=\"$THEME->cellcontent\" class=\"weeklyoutlinecontent\""; } - echo ''; - echo ''; - - echo '"; + echo ""; + + echo ""; + } else { - echo '
    '.$weekday.' - '.$endweekday.'
    '; - - $summaryformatoptions->noclean = true; - echo format_text($thissection->summary, FORMAT_HTML, $summaryformatoptions); - + + echo "

    $weekday - $endweekday

    "; + + echo format_text($thissection->summary, FORMAT_HTML); + if (isediting($course->id)) { - echo ' '. - '

    '; + echo " id\">". + "pixpath/t/edit.gif\" height=11 width=11 border=0>
    "; } - + + echo '
    '; + print_section($course, $thissection, $mods, $modnamesused); - + if (isediting($course->id)) { print_section_add_menus($course, $section, $modnames); } + + echo ""; } - echo ''; - - echo ''; - echo ''; + + echo ""; + echo ""; + echo ""; } $section++; $weekdate = $nextweekdate; } - echo '
    '; - echo $stractivityclipboard.'  ('.$strcancel.')'; - echo '
    cellcontent\" class=\"weeklyoutlineclip\" width=\"100%\">"; + echo "

    "; + echo "$stractivityclipboard  ($strcancel)"; + echo "

    "; + echo "
     '; + echo "
    cellheading\" class=\"weeklyoutlineside\" valign=top width=20> cellcontent\" class=\"weeklyoutlinecontent\" width=\"100%\">"; - $summaryformatoptions->noclean = true; - echo format_text($thissection->summary, FORMAT_HTML, $summaryformatoptions); + echo format_text($thissection->summary, FORMAT_HTML); if (isediting($course->id)) { - echo ''.$streditsummary.'

    '; + echo " id\">pixpath/t/edit.gif\" ". + " border=0 alt=\"$streditsummary\">
    "; } + echo '
    '; + print_section($course, $thissection, $mods, $modnamesused); if (isediting($course->id)) { print_section_add_menus($course, $section, $modnames); } - echo '
     
    cellheading\" class=\"weeklyoutlineside\" valign=top align=center width=10>"; + echo " 
    '; - echo ''.$section.''; - echo ''; + echo "
    "; + echo "

    $section

    "; + echo "
    "; + if (!isteacher($course->id) and !$thissection->visible) { // Hidden for students - echo '
    '.$weekday.' - '.$endweekday.' ('.get_string('notavailable').')
    '; - + echo "

    $weekday - $endweekday "; + echo "(".get_string("notavailable").")"; + echo "

    "; + echo "
    '; + echo ""; + echo ""; if ($displaysection == $section) { - echo ''. - '
    '; + echo "id&week=all\" title=\"$strshowallweeks\">". + "pixpath/i/all.gif\" height=25 width=16 border=0>
    "; } else { $strshowonlyweek = get_string("showonlyweek", "", $section); - echo ''. - '
    '; + echo "id&week=$section\" title=\"$strshowonlyweek\">". + "pixpath/i/one.gif\" height=16 width=16 border=0>
    "; } - + if (isediting($course->id)) { if ($thissection->visible) { // Show the hide/show eye - echo ''. - '
    '; + echo "id&hide=$section\" title=\"$strweekhide\">". + "pixpath/i/hide.gif\" vspace=3 height=16 width=16 border=0>
    "; } else { - echo ''. - '
    '; + echo "id&show=$section\" title=\"$strweekshow\">". + "pixpath/i/show.gif\" vspace=3 height=16 width=16 border=0>
    "; } + if ($section > 1) { // Add a arrow to move section up - echo ''. - '
    '; + echo "id§ion=$section&move=-1\" title=\"$strmoveup\">". + "pixpath/t/up.gif\" vspace=3 height=11 width=11 border=0>
    "; } - + if ($section < $course->numsections) { // Add a arrow to move section down - echo ''. - '
    '; + echo "id§ion=$section&move=1\" title=\"$strmovedown\">". + "pixpath/t/down.gif\" vspace=3 height=11 width=11 border=0>
    "; } + } - - echo '
    '; + echo "
    "; if (!empty($sectionmenu)) { - echo '
    '; - echo popup_form($CFG->wwwroot.'/course/view.php?id='.$course->id.'&', $sectionmenu, - 'sectionmenu', '', get_string('jumpto'), '', '', true); - echo '
    '; + echo "
    "; + echo popup_form("$CFG->wwwroot/course/view.php?id=$course->id&", $sectionmenu, + "sectionmenu", "", get_string("jumpto"), "", "", true); + echo "
    "; } - echo '
    '; - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT); - echo ''; + print_course_blocks($course, $rightblocks, BLOCK_RIGHT); + if ($editing && !empty($missingblocks)) { + block_print_blocks_admin($course, $missingblocks); + } + print_spacer(1, 120, true); + echo '
    '; - + echo "
    \n"; ?> diff --git a/course/grade.php b/course/grade.php index 250ff89a546..9a66ab269cd 100644 --- a/course/grade.php +++ b/course/grade.php @@ -1,4 +1,4 @@ -instance)) { - $image = "wwwroot/mod/$mod->modname/view.php?id=$mod->id\"". - " title=\"$mod->modfullname\">". - "modname/icon.gif\" ". - "height=\"16\" width=\"16\" alt=\"$mod->modfullname\" />"; + $image = "wwwroot/mod/$mod->modname/view.php?id=$mod->id\"". + " TITLE=\"$mod->modfullname\">". + "modname/icon.gif\" ". + "HEIGHT=16 WIDTH=16 ALT=\"$mod->modfullname\">"; $columnhtml[] = "$image ". - "wwwroot/mod/$mod->modname/view.php?id=$mod->id\">". - format_string($instance->name,true). - ""; + "wwwroot/mod/$mod->modname/view.php?id=$mod->id\">". + "$instance->name". + ""; if (empty($modgrades->grades[$USER->id])) { $grades[] = ""; @@ -88,7 +88,7 @@ /// OK, we have all the data, now present it to the user print_header("$course->shortname: $strgrades", "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> $strgrades"); print_heading($strgrades); diff --git a/course/grades.php b/course/grades.php index 8e7194cf811..d0b2cab4714 100644 --- a/course/grades.php +++ b/course/grades.php @@ -1,4 +1,4 @@ -shortname: $strgrades", "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname - -> $strgrades"); - setup_and_print_groups($course, $groupmode, "grades.php?id=$course->id"); - notice(get_string("nostudentsingroup"), "$CFG->wwwroot/course/view.php?id=$course->id"); - print_footer($course); - exit; - } + $students = get_group_students($currentgroup, "u.lastname ASC"); } else { - if (!$students = get_course_students($course->id, "u.lastname ASC")) { - print_header("$course->shortname: $strgrades", "$course->fullname", + $students = get_course_students($course->id, "u.lastname ASC"); + } + +/// Get a list of all students + if (!$students) { + print_header("$course->shortname: $strgrades", "$course->fullname", "wwwroot/course/view.php?id=$course->id\">$course->shortname -> $strgrades"); - notice(get_string("nostudentsyet"), "$CFG->wwwroot/course/view.php?id=$course->id"); - print_footer($course); - exit; - } + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; } foreach ($students as $student) { @@ -90,32 +84,32 @@ if (!empty($modgrades->maxgrade)) { if ($mod->visible) { $maxgrade = "$strmax: $modgrades->maxgrade"; - $maxgradehtml = "
    $strmax: $modgrades->maxgrade"; + $maxgradehtml = "
    $strmax: $modgrades->maxgrade"; } else { $maxgrade = "$strmax: $modgrades->maxgrade"; - $maxgradehtml = "
    $strmax: $modgrades->maxgrade"; + $maxgradehtml = "
    $strmax: $modgrades->maxgrade"; } } else { $maxgrade = ""; $maxgradehtml = ""; } - $image = "wwwroot/mod/$mod->modname/view.php?id=$mod->id\"". - " title=\"$mod->modfullname\">". - "modname/icon.gif\" ". - "height=\"16\" width=\"16\" alt=\"$mod->modfullname\" />"; + $image = "wwwroot/mod/$mod->modname/view.php?id=$mod->id\"". + " TITLE=\"$mod->modfullname\">". + "modname/icon.gif\" ". + "HEIGHT=16 WIDTH=16 ALT=\"$mod->modfullname\">"; if ($mod->visible) { $columnhtml[] = "$image ". - "wwwroot/mod/$mod->modname/view.php?id=$mod->id\">". - format_string($instance->name,true). - "$maxgradehtml"; + "wwwroot/mod/$mod->modname/view.php?id=$mod->id\">". + "$instance->name". + "$maxgradehtml"; } else { $columnhtml[] = "$image ". - "wwwroot/mod/$mod->modname/view.php?id=$mod->id\">". - format_string($instance->name,true). - "$maxgradehtml"; + "wwwroot/mod/$mod->modname/view.php?id=$mod->id\">". + "$instance->name". + "$maxgradehtml"; } - $columns[] = "$mod->modfullname: ".format_string($instance->name)." - $maxgrade"; + $columns[] = "$mod->modfullname: $instance->name - $maxgrade"; foreach ($students as $student) { if (!empty($modgrades->grades[$student->id])) { @@ -123,9 +117,9 @@ if ($mod->visible) { $gradeshtml[$student->id][] = $modgrades->grades[$student->id]; } else { - $gradeshtml[$student->id][] = "". + $gradeshtml[$student->id][] = "". $modgrades->grades[$student->id]. - ""; + ""; } } else { $grades[$student->id][] = $currentstudentgrade = ""; @@ -147,7 +141,7 @@ /// OK, we have all the data, now present it to the user - if ($download == "xls" and confirm_sesskey()) { + if ($download == "xls") { require_once("../lib/excel/Worksheet.php"); require_once("../lib/excel/Workbook.php"); @@ -205,7 +199,7 @@ exit; - } else if ($download == "txt" and confirm_sesskey()) { + } else if ($download == "txt") { /// Print header to force download @@ -249,24 +243,22 @@ } else { // Just print the web page print_header("$course->shortname: $strgrades", "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> $strgrades"); print_heading($strgrades); setup_and_print_groups($course, $groupmode, "grades.php?id=$course->id"); - echo ""; - echo "
    "; + echo ""; + echo "
    "; $options["id"] = "$course->id"; $options["download"] = "xls"; - $options["sesskey"] = $USER->sesskey; print_single_button("grades.php", $options, get_string("downloadexcel")); - echo ""; + echo ""; $options["download"] = "txt"; - $options["sesskey"] = $USER->sesskey; print_single_button("grades.php", $options, get_string("downloadtext")); - echo "
    "; + echo "
    "; $table->head = array_merge(array ("", get_string("firstname"), get_string("lastname")), $columnhtml, array(get_string("total"))); diff --git a/course/group-edit.html b/course/group-edit.html index 58cef414326..3fcac9fafb6 100644 --- a/course/group-edit.html +++ b/course/group-edit.html @@ -1,29 +1,23 @@
    - +
    - - + - - + + - - - - - - - + + - + + - +
    : +

    :

    :
    - -

    :

    description); + print_textarea($usehtmleditor, 10, 50, 660, 200, "description", $group->description); + helpbutton("text", get_string("helptext")); if (isset($err["description"])) formerr($err["description"]); ?>
    :
    :

    :

    maxbytes, $course->maxbytes); if (!empty($CFG->gdversion) and $maxbytes) { ?> -
    :

    :

    - dirroot.'/lib/uploadlib.php'); - upload_print_form_fragment(1,array('imagefile'),null,false,null,0,0,false); - helpbutton("picture", get_string("helppicture")); + + + @@ -52,10 +45,9 @@
    " />">
    - - - + +
    diff --git a/course/group.php b/course/group.php index 342d4707393..65c9141c708 100644 --- a/course/group.php +++ b/course/group.php @@ -3,14 +3,12 @@ /// Shows current group, and allows editing of the group /// icon and other settings related to that group -/// This script appears within a popup window + require_once('../config.php'); + require_once('lib.php'); - require_once('../config.php'); - require_once('lib.php'); - - $id = required_param('id'); // Course id - $group = optional_param('group', 0); // Optionally look at other groups - $edit = optional_param('edit', false); // Editing can be turned on + require_variable($id); // Course id + optional_variable($group); // Optionally look at other groups + optional_variable($edit); // Turn editing on and off if (! $course = get_record('course', 'id', $id) ) { error("That's an invalid course id"); @@ -18,70 +16,115 @@ require_login($course->id); - if (!isteacheredit($course->id)) { - close_window(); + if ($group) { + if (isteacheredit($course->id) or $course->groupmode == VISIBLEGROUPS) { + if (! $group = get_record("groups", "id", $group, "courseid", $course->id)) { + error('Specified group could not be found!', "groups.php?id=$course->id"); + } + } else { + error('Sorry, you don\'t have access to view this group', "view.php?id=$course->id"); + } + } else if (! $group = get_current_group($course->id, 'full')) { + error('You are not currently in a group!', "view.php?id=$course->id"); } - if (! $group = get_record("groups", "id", $group, "courseid", $course->id)) { - notice('Specified group could not be found!', "#"); - close_window_button(); + if (isteacheredit($course->id) or (isteacher($course->id) and ismember($group->id) ) ) { + $edit = isset($_GET['edit']); + $editbutton = $edit ? "" : update_group_button($course->id, $group->id); + } else { + $edit = false; + $editbutton = ""; } /// Print the headers of the page - print_header(get_string('groupinfoedit').' : '.$group->name); + $strgroup = get_string('group'); + $strgroups = get_string('groups'); + $loggedinas = "

    ".user_login_string($course, $USER)."

    "; + + if (isteacheredit($course->id) or $course->groupmode == VISIBLEGROUPS) { + print_header("$strgroup : $group->name", "$course->fullname", + "wwwroot/course/view.php?id=$course->id\">$course->shortname + -> id\">$strgroups -> $group->name", + "", "", true, $editbutton, $loggedinas); + } else { + print_header("$strgroup : $group->name", "$course->fullname", + "wwwroot/course/view.php?id=$course->id\">$course->shortname + -> $strgroup -> $group->name", "", "", true, "", $loggedinas); + } + /// If data submitted, then process and store. - if ($form = data_submitted() and confirm_sesskey()) { + if ($form = data_submitted()) { if (empty($form->name)) { $edit = true; $err['name'] = get_string("missingname"); } else { - require_once($CFG->dirroot.'/lib/uploadlib.php'); - - $um = new upload_manager('imagefile',false,false,null,false,0,true,true); - if ($um->preprocess_files()) { + if (!empty($_FILES['imagefile'])) { require_once("$CFG->libdir/gdlib.php"); - if (save_profile_image($group->id, $um, 'groups')) { - $group->picture = 1; + if ($filename = valid_uploaded_file($_FILES['imagefile'])) { + $group->picture = save_profile_image($group->id, $filename, 'groups'); } } - $group->name = clean_text($form->name); - $group->description = clean_text($form->description); + $group->name = $form->name; + $group->description = $form->description; $group->hidepicture = $form->hidepicture; - $group->password = $form->password; if (!update_record("groups", $group)) { - notify("A strange error occurred while trying to save"); + notify("A strange error occurred while trying to save "); } else { - notify(get_string('changessaved')); + redirect("group.php?id=$course->id&group=$group->id", get_string("changessaved")); } - close_window(3); } } /// Are we editing? If so, handle it. - if ($usehtmleditor = can_use_richtext_editor()) { - $defaultformat = FORMAT_HTML; + if ($edit) { // We are editing a group's information + if ($usehtmleditor = can_use_richtext_editor()) { + $defaultformat = FORMAT_HTML; + } else { + $defaultformat = FORMAT_MOODLE; + } + + include('group-edit.html'); + + if ($usehtmleditor) { + use_html_editor("description"); + } + + print_footer(); + exit; + } + +/// Just display the information + + print_heading($group->name); + echo '
    '; + print_group_picture($group, $course->id, true, false, false); + echo '
    '; + if ($group->description) { + print_simple_box(format_text($group->description), 'center', '50%'); + } + + echo '
    '; + + if ($users = get_group_users($group->id)) { + foreach ($users as $user) { + print_user($user, $course); + } } else { - $defaultformat = FORMAT_MOODLE; + print_heading(get_string('nousersyet')); } - $usehtmleditor = false; - $sesskey = !empty($USER->id) ? $USER->sesskey : ''; +/// Finish off the page - include('group-edit.html'); + print_footer($course); - if ($usehtmleditor) { - use_html_editor("description"); - } - - echo ""; ?> diff --git a/course/groups-edit.html b/course/groups-edit.html index 51c68c8b5ce..04da8d6b99d 100755 --- a/course/groups-edit.html +++ b/course/groups-edit.html @@ -1,4 +1,4 @@ - - + +
    - + + + + + + +
    - - +

    - -

    @@ -147,7 +146,6 @@ function groupWindow(selectgroup) { -

    name ?>
    + + + + + + + + + + + +
    +

    picture ?>

    +
    +

    description ?>

    + linkeditprofile)) { + echo '

    '.$t->linkeditprofile->text.'...

    '; + } + ?> +
    +

    users) { + $countusers = count($t->users); + foreach ($t->users as $user) { + echo "wwwroot/user/view.php?id=$user->id&course=$t->courseid\">$user->fullname"; + $countusers--; + if ($countusers) { + echo ', '; + } + } + } + ?> +

    +
    + linkfullprofile)) { + echo '

    '.$t->linkfullprofile->text.'...

    '; + } + ?> +
    +
    +
    diff --git a/course/groups.php b/course/groups.php index c0c8c3d1673..0561876e696 100644 --- a/course/groups.php +++ b/course/groups.php @@ -1,29 +1,34 @@ id); - if (!isteacheredit($course->id)) { + if (!isteacheredit($course->id) and $course->groupmode != VISIBLEGROUPS) { redirect("group.php?id=$course->id"); // Not allowed to see all groups } -/// Get the current list of groups and check the selection is valid - - $groups = get_groups($course->id); - - if ($selectedgroup and !isset($groups[$selectedgroup])) { - $selectedgroup = NULL; + if (isteacheredit($course->id)) { + if (isset($_GET['edit'])) { + if($edit == "on") { + $USER->groupsediting = true; + } else { + $USER->groupsediting = false; + } + } + } else { + $USER->groupsediting = false; } @@ -32,20 +37,52 @@ $strgroup = get_string('group'); $strgroups = get_string('groups'); $streditgroupprofile = get_string('editgroupprofile'); - $strgroupmembers = get_string('groupmembers'); $strgroupmemberssee = get_string('groupmemberssee'); - $strparticipants = get_string('participants'); + $loggedinas = "

    ".user_login_string($course, $USER)."

    "; print_header("$course->shortname: $strgroups", "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname ". - "-> wwwroot/user/index.php?id=$course->id\">$strparticipants ". - "-> $strgroups", "", "", true, '', user_login_string($course, $USER)); + "wwwroot/course/view.php?id=$course->id\">$course->shortname + -> $strgroups", "", "", true, update_groups_button($course->id), $loggedinas); +/// Get the current list of groups -/// First, process any inputs there may be. + $groups = get_groups($course->id); - if ($data = data_submitted() and confirm_sesskey()) { + if (empty($USER->groupsediting)) { /// Display an overview of all groups + if (!$groups) { + print_heading(get_string('groupsnone')); + + } else { + $isteacher = isteacher($course->id); + $isteacheredit = isteacheredit($course->id); + foreach ($groups as $group) { + $t = $group; + $t->description = format_text($group->description); + $t->picture = print_group_picture($group, $course->id, true, true, true); + if ($t->users = get_group_users($group->id, 'u.lastname ASC')) { + foreach ($t->users as $key => $user) { + $t->users[$key]->fullname = fullname($user, $isteacher); + } + } + if ($isteacheredit or ($isteacher and ismember($group->id))) { + $t->linkeditprofile->url = "group.php?id=$course->id&group=$group->id&edit=on"; + $t->linkeditprofile->text = $streditgroupprofile; + } + $t->linkfullprofile->url = "group.php?id=$course->id&group=$group->id"; + $t->linkfullprofile->text = $strgroupmemberssee; + + include('groups-summary.html'); + } + } + print_footer($course); + exit; + } + + +/// We are in editing mode. First, process any inputs there may be. + + if ($data = data_submitted()) { if (!empty($data->nonmembersadd)) { /// Add people to a group if (!empty($data->nonmembers) and !empty($data->groupid)) { @@ -123,7 +160,6 @@ $strgroupadd = get_string('groupadd'); $strgroupremove = get_string('groupremove'); $strgroupinfo = get_string('groupinfo'); - $strgroupinfoedit = get_string('groupinfoedit'); $strgroupinfopeople = get_string('groupinfopeople'); $strgrouprandomassign = get_string('grouprandomassign'); $strgroupaddusers = get_string('groupaddusers'); @@ -183,8 +219,6 @@ $members = $listmembers[$selectedgroup]; } - $sesskey = !empty($USER->id) ? $USER->sesskey : ''; - /// Print out the complete form include('groups-edit.html'); diff --git a/course/import.php b/course/import.php deleted file mode 100644 index fa43072d047..00000000000 --- a/course/import.php +++ /dev/null @@ -1,105 +0,0 @@ -id); - - if (!isteacheredit($course->id)) { - error("You need to be a teacher or an admin to use this page"); - } - - if ($from = get_record("course","id",$fromcourse)) { - if (!empty($filename) && file_exists($CFG->dataroot.'/'.$filename) && !empty($SESSION->import_preferences)) { - $restore = backup_to_restore_array($SESSION->import_preferences); - $restore->restoreto = 1; - $restore->course_id=$id; - $restore->importing=1; // magic variable so we know that we're importing rather than just restoring. - - $SESSION->restore = $restore; - redirect($CFG->wwwroot.'/backup/restore.php?file='.$filename.'&id='.$fromcourse.'&to='.$id); - } - else { - redirect($CFG->wwwroot.'/backup/backup.php?id='.$from->id.'&to='.$course->id); - } - } - - $strimport = get_string("importdata"); - - print_header("$course->fullname: $strimport", "$course->fullname: $strimport", "$course->shortname"); - - $taught_courses = get_my_courses($USER->id,"visible DESC,sortorder ASC",0,1); - $cat_courses = get_courses($course->category); - print_heading(get_string("importdatafrom")); - - $options = array(); - foreach ($taught_courses as $tcourse) { - if ($tcourse->id != $course->id && $tcourse->id != $site->id){ - $options[$tcourse->id] = $tcourse->fullname; - } - } - - $fm = ''; - $submit = ''; - - if (count($options) > 0) { - $table->data[] = array($fm.''.get_string('coursestaught').'', - choose_from_menu($options,"fromcourse","","choose","","0",true), - $submit); - } - - unset($options); - - $options = array(); - foreach ($cat_courses as $ccourse) { - if ($ccourse->id != $course->id && $ccourse->id != $site->id){ - $options[$ccourse->id] = $ccourse->fullname; - } - } - $cat = get_record("course_categories","id",$course->category); - - if (count($options) > 0) { - $table->data[] = array($fm.''.get_string('coursescategory').' ('.$cat->name .')', - choose_from_menu($options,"fromcourse","","choose","","0",true), - $submit); - } - $table->data[] = array($fm.''.get_string('searchcourses').'', - '', - ''); - - if (!empty($fromcoursesearch)) { - $totalcount = 0; - $courses = get_courses_search(explode(" ",$fromcoursesearch),"fullname ASC",$page,50,$totalcount); - if (is_array($courses) and count($courses) > 0) { - $table->data[] = array(''.get_string('searchresults').'','',''); - foreach ($courses as $scourse) { - if ($course->id != $scourse->id) { - $table->data[] = array('',$scourse->fullname, - '' - .get_string('usethiscourse')); - } - } - } - else { - $table->data[] = array('',get_string('noresults'),''); - } - } - - print_table($table); - print_footer(); -?> \ No newline at end of file diff --git a/course/importstudents.html b/course/importstudents.html deleted file mode 100644 index 9257bd7593b..00000000000 --- a/course/importstudents.html +++ /dev/null @@ -1,84 +0,0 @@ - -
    - - - - - - - - - - - - - - -
    - - - -
    - -
    - -
    - -
    -
    - -
    - - - '."\n"; - } - ?> -
    -
    - - diff --git a/course/importstudents.php b/course/importstudents.php deleted file mode 100644 index 433afebf1f5..00000000000 --- a/course/importstudents.php +++ /dev/null @@ -1,141 +0,0 @@ -wwwroot/$CFG->admin/index.php"); - } - - if (! $course = get_record("course", "id", $id)) { - error("Course ID was incorrect (can't find it)"); - } - - require_login($course->id); - - if (!$course->metacourse) { - redirect("$CFG->wwwroot/course/student.php?id=$course->id"); - } - - if (!isadmin()) { - error("You must be an admin"); - } - - - $strassigncourses = get_string('metaassigncourses'); - $stralreadycourses = get_string('metaalreadycourses'); - $strnoalreadycourses = get_string('metanoalreadycourses'); - $strpotentialcourses = get_string('metapotentialcourses'); - $strnopotentialcourses = get_string('metanopotentialcourses'); - $straddcourses = get_string('metaaddcourse'); - $strremovecourse = get_string('metaremovecourse'); - $strsearch = get_string("search"); - $strsearchresults = get_string("searchresults"); - $strcourses = get_string("courses"); - $strshowall = get_string("showall"); - - print_header("$course->shortname: $strassigncourses", - "$site->fullname", - "
    id\">$course->shortname -> $strassigncourses", - "studentform.searchtext"); - -/// Don't allow restricted teachers to even see this page (because it contains -/// a lot of email addresses and access to all student on the server - - check_for_restricted_user($USER->username, "$CFG->wwwroot/course/view.php?id=$course->id"); - -/// Print a help notice about the need to use this page - - if (!$frm = data_submitted()) { - $note = get_string("importmetacoursenote"); - print_simple_box($note, "center", "50%"); - -/// A form was submitted so process the input - - } else { - if (!empty($frm->add) and !empty($frm->addselect) and confirm_sesskey()) { - $timestart = $timeend = 0; - foreach ($frm->addselect as $addcourse) { - if (!add_to_metacourse($course->id,$addcourse)) { - error("Could not add the selected course to this meta course!"); - } - } - } else if (!empty($frm->remove) and !empty($frm->removeselect) and confirm_sesskey()) { - foreach ($frm->removeselect as $removecourse) { - if (! remove_from_metacourse($course->id,$removecourse)) { - error("Could not remove the selected course to this meta course!"); - } - } - } else if (!empty($frm->showall) and confirm_sesskey()) { - unset($frm->searchtext); - $frm->previoussearch = 0; - } - } - - - $previoussearch = (is_object($frm) && ((!empty($frm->search) or ($frm->previoussearch == 1)))) ; - - /// Get all existing students and teachers for this course. - if(! $alreadycourses = get_courses_in_metacourse($course->id)) { - $alreadycourses = array(); - } - - $numcourses = 0; - - -/// Get search results excluding any users already in this course - if (!empty($frm->searchtext) and $previoussearch and confirm_sesskey()) { - $searchcourses = get_courses_search(explode(" ",$frm->searchtext),'fullname ASC',0,99999,$numcourses); - foreach ($searchcourses as $tmp) { - if (array_key_exists($tmp->id,$alreadycourses)) { - unset($searchcourses[$tmp->id]); - } - if (!empty($tmp->metacourse)) { - unset($searchcourses[$tmp->id]); - } - } - if (array_key_exists($course->id,$searchcourses)) { - unset($searchcourses[$course->id]); - } - $numcourses = count($searchcourses); - } - -/// If no search results then get potential students for this course excluding users already in course - if (empty($searchcourses)) { - - $numcourses = get_courses_notin_metacourse($course->id,true); - - $courses = array(); - - if ($numcourses <= MAX_COURSES_PER_PAGE) { - $courses = get_courses_notin_metacourse($course->id); - } - } - - - $searchtext = (isset($frm->searchtext)) ? $frm->searchtext : ""; - $previoussearch = ($previoussearch) ? '1' : '0'; - - print_simple_box_start("center"); - - include('importstudents.html'); - - print_simple_box_end(); - - print_footer(); - - - - - -?> diff --git a/course/index.php b/course/index.php index 254bc17ae82..393048226eb 100644 --- a/course/index.php +++ b/course/index.php @@ -1,4 +1,4 @@ -categoriesediting = true; } else if ($edit == "off") { @@ -43,15 +43,14 @@ print_course_search(); } else { $strfulllistofcourses = get_string("fulllistofcourses"); - print_header("$site->shortname: $strfulllistofcourses", $strfulllistofcourses, $strfulllistofcourses, - '', '', true, update_categories_button()); + print_header("$site->shortname: $strfulllistofcourses", $strfulllistofcourses, $strfulllistofcourses); print_courses(0, "80%"); } if (iscreator()) { // Print link to create a new course - echo "
    "; + echo "

    "; print_single_button("edit.php", NULL, get_string("addnewcourse"), "get"); - echo "

    "; + echo "

    "; } print_footer(); @@ -85,7 +84,7 @@ /// If data for a new category was submitted, then add it - if ($form = data_submitted() and confirm_sesskey()) { + if ($form = data_submitted()) { if (!empty($form->addcategory)) { unset($newcategory); $newcategory->name = $form->addcategory; @@ -101,41 +100,33 @@ /// Delete a category if necessary - if (isset($delete) and confirm_sesskey()) { + if (isset($delete)) { if ($deletecat = get_record("course_categories", "id", $delete)) { - if (!empty($sure) && $sure == md5($deletecat->timemodified)) { - /// Send the children categories to live with their grandparent - if ($childcats = get_records("course_categories", "parent", $deletecat->id)) { - foreach ($childcats as $childcat) { - if (! set_field("course_categories", "parent", $deletecat->parent, "id", $childcat->id)) { - error("Could not update a child category!", "index.php"); - } + + /// Send the children categories to live with their grandparent + if ($childcats = get_records("course_categories", "parent", $deletecat->id)) { + foreach ($childcats as $childcat) { + if (! set_field("course_categories", "parent", $deletecat->parent, "id", $childcat->id)) { + error("Could not update a child category!", "index.php"); } } - - /// If the grandparent is a valid (non-zero) category, then - /// send the children courses to live with their grandparent as well - if ($deletecat->parent) { - if ($childcourses = get_records("course", "category", $deletecat->id)) { - foreach ($childcourses as $childcourse) { - if (! set_field("course", "category", $deletecat->parent, "id", $childcourse->id)) { - error("Could not update a child course!", "index.php"); - } - } - } - } - - /// Finally delete the category itself - if (delete_records("course_categories", "id", $deletecat->id)) { - notify(get_string("categorydeleted", "", $deletecat->name)); - } } - else { - $strdeletecategorycheck = get_string("deletecategorycheck","",$deletecat->name); - notice_yesno("$strdeletecategorycheck", - "index.php?delete=$delete&sure=".md5($deletecat->timemodified)."&sesskey=$USER->sesskey", - "index.php?sesskey=$USER->sesskey"); - exit(); + + /// If the grandparent is a valid (non-zero) category, then + /// send the children courses to live with their grandparent as well + if ($deletecat->parent) { + if ($childcourses = get_records("course", "category", $deletecat->id)) { + foreach ($childcourses as $childcourse) { + if (! set_field("course", "category", $deletecat->parent, "id", $childcourse->id)) { + error("Could not update a child course!", "index.php"); + } + } + } + } + + /// Finally delete the category itself + if (delete_records("course_categories", "id", $deletecat->id)) { + notify(get_string("categorydeleted", "", $deletecat->name)); } } } @@ -154,7 +145,7 @@ /// Move a category to a new parent if required - if (isset($move) and isset($moveto) and confirm_sesskey()) { + if (isset($move) and isset($moveto)) { if ($tempcat = get_record("course_categories", "id", $move)) { if ($tempcat->parent != $moveto) { if (! set_field("course_categories", "parent", $moveto, "id", $tempcat->id)) { @@ -166,7 +157,7 @@ /// Hide or show a category - if ((isset($hide) or isset($show)) and confirm_sesskey()) { + if (isset($hide) or isset($show)) { if (isset($hide)) { $tempcat = get_record("course_categories", "id", $hide); $visible = 0; @@ -187,7 +178,7 @@ /// Move a category up or down - if ((isset($moveup) or isset($movedown)) and confirm_sesskey()) { + if (isset($moveup) or isset($movedown)) { $swapcategory = NULL; $movecategory = NULL; @@ -246,7 +237,7 @@ } /// Find any orphan courses that don't yet have a valid category and set to default - if ($courses = get_courses(NULL,NULL,'c.category,c.id,c.sortorder')) { + if ($courses = get_courses()) { foreach ($courses as $course) { if ($course->category and !isset($categories[$course->category])) { set_field("course", "category", $default, "id", $course->id); @@ -260,9 +251,8 @@ echo "
    "; echo "
    "; - echo ""; - echo ""; - echo "sesskey\" />"; + echo ""; + echo ""; echo "
    "; echo "
    "; @@ -282,12 +272,11 @@ $displaylist[0] = get_string("top"); make_categories_list($displaylist, $parentlist, ""); - echo ""; + echo "
    "; echo ""; echo ""; echo ""; echo ""; - echo ""; print_category_edit(NULL, $displaylist, $parentlist); @@ -309,9 +298,10 @@ function print_category_edit($category, $displaylist, $parentslist, $depth=-1, $up=false, $down=false) { /// Recursive function to print all the categories ready for editing - global $CFG, $USER; + global $THEME, $CFG; static $str = ''; + static $pixpath = ''; if (empty($str)) { $str->delete = get_string("delete"); @@ -322,37 +312,47 @@ function print_category_edit($category, $displaylist, $parentslist, $depth=-1, $ $str->show = get_string("show"); } + if (empty($pixpath)) { + if (empty($THEME->custompix)) { + $pixpath = "$CFG->wwwroot/pix"; + } else { + $pixpath = "$CFG->wwwroot/theme/$CFG->theme/pix"; + } + } + if ($category) { - echo ""; echo ""; echo ""; @@ -364,7 +364,7 @@ function print_category_edit($category, $displaylist, $parentslist, $depth=-1, $ unset($tempdisplaylist[$key]); } } - popup_form ("index.php?move=$category->id&sesskey=$USER->sesskey&moveto=", $tempdisplaylist, "moveform$category->id", "$category->parent", "", "", "", false); + popup_form ("index.php?move=$category->id&moveto=", $tempdisplaylist, "moveform$category->id", "$category->parent", "", "", "", false); echo ""; echo ""; } else { diff --git a/course/info.php b/course/info.php index e1a5cdad861..0844edec5f4 100644 --- a/course/info.php +++ b/course/info.php @@ -1,4 +1,4 @@ -custompix)) { + $pixpath = "$CFG->wwwroot/pix"; + } else { + $pixpath = "$CFG->wwwroot/theme/$CFG->theme/pix"; + } + print_header(get_string("summaryof", "", $course->fullname)); echo "

    $course->fullname
    ($course->shortname)

    "; @@ -35,16 +41,16 @@ echo "
    "; if ($course->guest) { $strallowguests = get_string("allowguests"); - echo "

    \"\"pixpath/i/guest.gif\" /> $strallowguests

    "; + echo "

    \"\" $strallowguests

    "; } if ($course->password) { $strrequireskey = get_string("requireskey"); - echo "

    \"\"pixpath/i/key.gif\" /> $strrequireskey

    "; + echo "

    \"\" $strrequireskey

    "; } if ($teachers = get_course_teachers($course->id)) { - echo "
    $strcategories$strcourses$stredit$strmovecategoryto
    "; + echo "
    cellcontent\">"; + echo "

    "; for ($i=0; $i<$depth;$i++) { echo "      "; } $linkcss = $category->visible ? "" : " class=\"dimmed\" "; - echo "edit\" href=\"category.php?id=$category->id&edit=on&sesskey=$USER->sesskey\">$category->name"; + echo "edit\" href=\"category.php?id=$category->id&edit=on\">$category->name"; + echo "

    "; echo "
    $category->coursecount"; /// Print little icons - echo "delete\" href=\"index.php?delete=$category->id&sesskey=$USER->sesskey\">pixpath/t/delete.gif\" height=\"11\" width=\"11\" border=\"0\" alt=\"\" /> "; + echo "delete\" href=\"index.php?delete=$category->id\"> "; if (!empty($category->visible)) { - echo "hide\" href=\"index.php?hide=$category->id&sesskey=$USER->sesskey\">pixpath/t/hide.gif\" height=\"11\" width=\"11\" border=\"0\" alt=\"\" /> "; + echo "hide\" href=\"index.php?hide=$category->id\"> "; } else { - echo "show\" href=\"index.php?show=$category->id&sesskey=$USER->sesskey\">pixpath/t/show.gif\" height=\"11\" width=\"11\" border=\"0\"alt=\"\" /> "; + echo "show\" href=\"index.php?show=$category->id\"> "; } if ($up) { - echo "moveup\" href=\"index.php?moveup=$category->id&sesskey=$USER->sesskey\">pixpath/t/up.gif\" height=\"11\" width=\"11\" border=\"0\" alt=\"\" /> "; + echo "moveup\" href=\"index.php?moveup=$category->id\"> "; } if ($down) { - echo "movedown\" href=\"index.php?movedown=$category->id&sesskey=$USER->sesskey\">pixpath/t/down.gif\" height=\"11\" width=\"11\" border=\"0\"alt=\"\" /> "; + echo "movedown\" href=\"index.php?movedown=$category->id\"> "; } echo "
    '; - echo ''; - echo ''; - } -} - -/** - * Print visibility setting form element on module setup forms in mod/.../mod.html - */ -function print_visible_setting($form, $course=NULL) { - if (empty($course)) { - if (! $course = get_record('course', 'id', $form->course)) { - error("This course doesn't exist"); - } - } - if ($form->coursemodule) { - $visible = get_field('course_modules', 'visible', 'id', $form->coursemodule); - } else { - $visible = true; - } - - if ($form->mode == 'add') { // in this case $form->section is the section number, not the id - $hiddensection = !get_field('course_sections', 'visible', 'section', $form->section, 'course', $form->course); - } else { - $hiddensection = !get_field('course_sections', 'visible', 'id', $form->section); - } - if ($hiddensection) { - $visible = false; - } - - echo ''; - echo ''; - echo ''; -} - ?> diff --git a/course/log.php b/course/log.php index 3858e6b3f45..103a94e4ade 100644 --- a/course/log.php +++ b/course/log.php @@ -1,93 +1,90 @@ -id - optional_variable($modid, ''); // course_module->id - optional_variable($modaction, ''); // an action as recorded in the logs - optional_variable($page, '0'); // which page to show - optional_variable($perpage, '100'); // how many per page - optional_variable($showcourses,0); // whether to show courses if we're over our limit. - optional_variable($showusers,0); // whether to show users if we're over our limit. + optional_variable($modname, ""); // course_module->id + optional_variable($modid, ""); // course_module->id + optional_variable($modaction, ""); // an action as recorded in the logs + optional_variable($page, "0"); // which page to show + optional_variable($perpage, "100"); // how many per page require_login(); - if (! $course = get_record('course', 'id', $id) ) { - error('That\'s an invalid course id'); + if (! $course = get_record("course", "id", $id) ) { + error("That's an invalid course id"); } if (! isteacher($course->id)) { - error('Only teachers can view logs'); + error("Only teachers can view logs"); } if (! $course->category) { if (!isadmin()) { - error('Only administrators can look at the site logs'); + error("Only administrators can look at the site logs"); } } - $strlogs = get_string('logs'); - $stradministration = get_string('administration'); + $strlogs = get_string("logs"); + $stradministration = get_string("administration"); - session_write_close(); if (!empty($_GET['chooselog'])) { - $userinfo = get_string('allparticipants'); - $dateinfo = get_string('alldays'); + $userinfo = get_string("allparticipants"); + $dateinfo = get_string("alldays"); if ($user) { - if (!$u = get_record('user', 'id', $user) ) { - error('That\'s an invalid user!'); + if (!$u = get_record("user", "id", $user) ) { + error("That's an invalid user!"); } - $userinfo = fullname($u, isteacher($course->id)); + $userinfo = "$u->firstname $u->lastname"; } if ($date) { - $dateinfo = userdate($date, get_string('strftimedaydate')); + $dateinfo = userdate($date, get_string("strftimedaydate")); } if ($course->category) { - print_header($course->shortname .': '. $strlogs, $course->fullname, + print_header("$course->shortname: $strlogs", "$course->fullname", "id\">$course->shortname -> - id\">$strlogs -> $userinfo, $dateinfo", ''); + id\">$strlogs -> $userinfo, $dateinfo", ""); } else { - print_header($course->shortname .': '. $strlogs, $course->fullname, + print_header("$course->shortname: $strlogs", "$course->fullname", "admin/index.php\">$stradministration -> - id\">$strlogs -> $userinfo, $dateinfo", ''); + id\">$strlogs -> $userinfo, $dateinfo", ""); } print_heading("$course->fullname: $userinfo, $dateinfo (".usertimezone().")"); - print_log_selector_form($course, $user, $date, $modname, $modid, $modaction, $group, $showcourses, $showusers); + print_log_selector_form($course, $user, $date, $modname, $modid, $modaction, $group); - print_log($course, $user, $date, 'l.time DESC', $page, $perpage, - "log.php?id=$course->id&chooselog=1&user=$user&date=$date&modid=$modid&modaction=$modaction&group=$group", + print_log($course, $user, $date, "l.time DESC", $page, $perpage, + "log.php?id=$course->id&chooselog=1&user=$user&date=$date&modid=$modid&modaction=$modaction&group=$group", $modname, $modid, $modaction, $group); } else { if ($course->category) { - print_header($course->shortname .': '. $strlogs, $course->fullname, - "id\">$course->shortname -> $strlogs", ''); + print_header("$course->shortname: $strlogs", "$course->fullname", + "id\">$course->shortname -> $strlogs", ""); } else { - print_header($course->shortname .': '. $strlogs, $course->fullname, - "admin/index.php\">$stradministration -> $strlogs", ''); + print_header("$course->shortname: $strlogs", "$course->fullname", + "admin/index.php\">$stradministration -> $strlogs", ""); } - print_heading(get_string('chooselogs') .':'); + print_heading(get_string("chooselogs").":"); - print_log_selector_form($course, $user, $date, $modname, $modid, $modaction, $group, $showcourses, $showusers); + print_log_selector_form($course); - echo '
    '; - print_heading(get_string('chooselivelogs') .':'); + echo "
    "; + print_heading(get_string("chooselivelogs").":"); - echo '

    '; - link_to_popup_window('/course/loglive.php?id='. $course->id,'livelog', get_string('livelogs'), 500, 800); - echo '

    '; + echo "

    "; + link_to_popup_window("/course/loglive.php?id=$course->id","livelog", get_string("livelogs"), 500, 800); + echo "

    "; } print_footer($course); diff --git a/course/loggraph.php b/course/loggraph.php index d074d765bc3..306028eaf64 100644 --- a/course/loggraph.php +++ b/course/loggraph.php @@ -1,4 +1,4 @@ -startdate > $maxseconds) { $course->startdate = $timenow - $maxseconds; } @@ -94,22 +93,12 @@ $graph->x_data = $days; $graph->y_data['logs'] = $logs; + $graph->y_format['logs'] = array('colour' => 'blue','line' => 'line'); + $graph->y_label_left = get_string("hits"); + $graph->label_size = "6"; + $graph->y_order = array('logs'); - if (!empty($CFG->preferlinegraphs)) { - $graph->y_format['logs'] = array('colour' => 'blue','line' => 'line'); - } else { - $graph->y_format['logs'] = array('colour' => 'blue','bar' => 'fill','bar_size' => 0.6); - $graph->parameter['bar_spacing'] = 0; - } - - - $graph->parameter['y_label_left'] = get_string("hits"); - $graph->parameter['label_size'] = "12"; - $graph->parameter['x_axis_angle'] = 90; - $graph->parameter['x_label_angle'] = 0; - $graph->parameter['tick_length'] = 0; - $graph->parameter['shadow'] = 'none'; @@ -138,7 +127,8 @@ for ($i=0; $i<=23; $i++) { $logs[$i] = 0; $hour = $daystart + $i * 3600; - $hours[$i] = $i; + $hh = (int)userdate($hour, "%I"); + $hours[$i] = userdate($hour, "$hh %p"); } if ($rawlogs = get_logs_userday($user->id, $courseselect, $daystart)) { @@ -156,19 +146,13 @@ $graph->x_data = $hours; $graph->y_data['logs'] = $logs; + $graph->y_format['logs'] = array('colour' => 'blue','bar' => 'fill','legend' =>'actual','bar_size' => 0.9); + $graph->y_label_left = get_string("hits"); + $graph->label_size = "6"; + $graph->y_order = array('logs'); - if (!empty($CFG->preferlinegraphs)) { - $graph->y_format['logs'] = array('colour' => 'blue','line' => 'line'); - } else { - $graph->y_format['logs'] = array('colour' => 'blue','bar' => 'fill','bar_size' => 0.9); - } - - $graph->parameter['y_label_left'] = get_string("hits"); - $graph->parameter['label_size'] = "12"; - $graph->parameter['x_axis_angle'] = 0; - $graph->parameter['x_label_angle'] = 0; - + $graph->parameter['shadow'] = 'none'; error_reporting(5); // ignore most warnings such as font problems etc diff --git a/course/loginas.php b/course/loginas.php index d46a407cedb..246003aa162 100644 --- a/course/loginas.php +++ b/course/loginas.php @@ -1,12 +1,12 @@ -id); } - if (isset($USER->realuser)) { /// Reset user back to their real self + if ($return and $USER->realuser) { $USER = get_user_info_from_db("id", $USER->realuser); $USER->loggedin = true; $USER->site = $CFG->wwwroot; - $USER->sessionIP = md5(getremoteaddr()); // Store the current IP in the session - if (isset($SESSION->oldcurrentgroup)) { // Restore previous "current group" cache. - $SESSION->currentgroup = $SESSION->oldcurrentgroup; + if (isset($SESSION->oldcurrentgroup)) { // Restore previous "current group" + $SESSION->currentgroup[$course->id] = $SESSION->oldcurrentgroup; unset($SESSION->oldcurrentgroup); } if (isset($SESSION->oldtimeaccess)) { // Restore previous timeaccess settings @@ -31,10 +30,8 @@ unset($SESSION->oldtimeaccess); } - if ($return) { /// That's all we wanted to do, so let's go back - redirect($_SERVER["HTTP_REFERER"]); - exit; - } + redirect($_SERVER["HTTP_REFERER"]); + exit; } // $user must be defined to go on @@ -43,8 +40,6 @@ error("Only teachers can use this page!"); } - check_for_restricted_user($USER->username, "$CFG->wwwroot/user/view.php?id=$user&course=$course->id"); - if ($course->category and !isstudent($course->id, $user) and !isadmin()) { error("This student is not in this course!"); } @@ -68,25 +63,25 @@ $USER->loggedin = true; $USER->site = $CFG->wwwroot; $USER->realuser = $teacher_id; - $USER->sessionIP = md5(getremoteaddr()); // Store the current IP in the session - if (isset($SESSION->currentgroup)) { // Remember current cache setting for later - $SESSION->oldcurrentgroup = $SESSION->currentgroup; - unset($SESSION->currentgroup); + if (isset($SESSION->currentgroup[$course->id])) { // Remember current setting for later + $SESSION->oldcurrentgroup = $SESSION->currentgroup[$course->id]; + unset($SESSION->currentgroup[$course->id]); } + set_moodle_cookie($USER->username); $student_name = fullname($USER, true); - add_to_log($course->id, "course", "loginas", "../user/view.php?id=$course->id&user=$user", "$teacher_name -> $student_name"); + add_to_log($course->id, "course", "loginas", "../user/view.php?id=$course->id&user=$user", "$teacher_name -> $student_name"); $strloginas = get_string("loginas"); $strloggedinas = get_string("loggedinas", "", $student_name); print_header("$course->fullname: $strloginas $student_name", "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname -> + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> $strloginas $student_name"); notice($strloggedinas, "$CFG->wwwroot/course/view.php?id=$course->id"); -?> \ No newline at end of file +?> diff --git a/course/loglive.php b/course/loglive.php index d9aebfe51c3..587ec251aee 100644 --- a/course/loglive.php +++ b/course/loglive.php @@ -1,4 +1,4 @@ -framename) || $CFG->framename==='_top') { - $CFG->framename = '_blank'; - } - $strlivelogs = get_string("livelogs"); $strupdatesevery = get_string("updatesevery", "moodle", COURSE_LIVELOG_REFRESH); print_header("$strlivelogs ($strupdatesevery)", "$strlivelogs", "", "", - ''); + ""); $user=0; $date=time() - 3600; print_log($course, $user, $date, "l.time DESC", 0, 500, - "loglive.php?id=$course->id&user=$user&date=$date"); - - print_footer($course); + "loglive.php?id=$course->id&user=$user&date=$date"); exit; diff --git a/course/mod.php b/course/mod.php index d7c67ae2719..deb22cb1f97 100644 --- a/course/mod.php +++ b/course/mod.php @@ -1,4 +1,4 @@ -modform)) { // Variables are stored in the session $mod = $SESSION->modform; unset($SESSION->modform); @@ -16,18 +14,18 @@ $mod = (object)$_POST; } - if (isset($cancel)) { + if (isset($cancel)) { if (!empty($SESSION->returnpage)) { $return = $SESSION->returnpage; unset($SESSION->returnpage); redirect($return); } else { - redirect("view.php?id=$mod->course#$sectionreturn"); + redirect("view.php?id=$mod->course"); } } - if (isset($_POST["course"]) and confirm_sesskey()) { // add or update form submitted + if (isset($_POST["course"])) { // add or update form submitted if (!$course = get_record("course", "id", $mod->course)) { error("This course doesn't exist"); @@ -37,9 +35,7 @@ error("You can't modify this course!"); } - $mod->modulename = clean_filename($mod->modulename); // For safety $modlib = "$CFG->dirroot/mod/$mod->modulename/lib.php"; - if (file_exists($modlib)) { include_once($modlib); } else { @@ -53,10 +49,8 @@ switch ($mod->mode) { case "update": - if (isset($mod->name)) { - if (trim($mod->name) == '') { - unset($mod->name); - } + if (trim($mod->name) == '') { + unset($mod->name); } $return = $updateinstancefunction($mod); @@ -68,31 +62,18 @@ } error("Could not update the $mod->modulename", "view.php?id=$course->id"); } - - if (isset($mod->visible)) { - set_coursemodule_visible($mod->coursemodule, $mod->visible); - } - - if (isset($mod->groupmode)) { - set_coursemodule_groupmode($mod->coursemodule, $mod->groupmode); - } - if (is_string($return)) { error($return, "view.php?id=$course->id"); } - if (isset($mod->redirect)) { - $SESSION->returnpage = $mod->redirecturl; - } else { - $SESSION->returnpage = "$CFG->wwwroot/mod/$mod->modulename/view.php?id=$mod->coursemodule"; - } + $SESSION->returnpage = "$CFG->wwwroot/mod/$mod->modulename/view.php?id=$mod->coursemodule"; - add_to_log($course->id, "course", "update mod", - "../mod/$mod->modulename/view.php?id=$mod->coursemodule", - "$mod->modulename $mod->instance"); - add_to_log($course->id, $mod->modulename, "update", - "view.php?id=$mod->coursemodule", - "$mod->instance", $mod->coursemodule); + add_to_log($course->id, "course", "update mod", + "../mod/$mod->modulename/view.php?id=$mod->coursemodule", + "$mod->modulename $mod->instance"); + add_to_log($course->id, $mod->modulename, "update", + "view.php?id=$mod->coursemodule", + "$mod->instance", $mod->coursemodule); break; case "add": @@ -114,13 +95,10 @@ error($return, "view.php?id=$course->id"); } - if (!isset($mod->groupmode)) { // to deal with pre-1.5 modules - $mod->groupmode = $course->groupmode; /// Default groupmode the same as course - } + $mod->groupmode = $course->groupmode; /// Default groupmode the same as course $mod->instance = $return; - - // course_modules and course_sections each contain a reference + // course_modules and course_sections each contain a reference // to each other, so we have to update one of them twice. if (! $mod->coursemodule = add_course_module($mod) ) { @@ -129,31 +107,27 @@ if (! $sectionid = add_mod_to_section($mod) ) { error("Could not add the new course module to that section"); } + //We get the section's visible field status + $visible = get_field("course_sections","visible","id",$sectionid); + + if (! set_field("course_modules", "visible", $visible, "id", $mod->coursemodule)) { + error("Could not update the course module with the correct visibility"); + } if (! set_field("course_modules", "section", $sectionid, "id", $mod->coursemodule)) { error("Could not update the course module with the correct section"); - } + } - if (!isset($mod->visible)) { // We get the section's visible field status - $mod->visible = get_field("course_sections","visible","id",$sectionid); - } - // make sure visibility is set correctly (in particular in calendar) - set_coursemodule_visible($mod->coursemodule, $mod->visible); - - if (isset($mod->redirect)) { - $SESSION->returnpage = $mod->redirecturl; - } else { - $SESSION->returnpage = "$CFG->wwwroot/mod/$mod->modulename/view.php?id=$mod->coursemodule"; - } - - add_to_log($course->id, "course", "add mod", - "../mod/$mod->modulename/view.php?id=$mod->coursemodule", - "$mod->modulename $mod->instance"); - add_to_log($course->id, $mod->modulename, "add", - "view.php?id=$mod->coursemodule", - "$mod->instance", $mod->coursemodule); + $SESSION->returnpage = "$CFG->wwwroot/mod/$mod->modulename/view.php?id=$mod->coursemodule"; + + add_to_log($course->id, "course", "add mod", + "../mod/$mod->modulename/view.php?id=$mod->coursemodule", + "$mod->modulename $mod->instance"); + add_to_log($course->id, $mod->modulename, "add", + "view.php?id=$mod->coursemodule", + "$mod->instance", $mod->coursemodule); break; - + case "delete": if (! $deleteinstancefunction($mod->instance)) { notify("Could not delete the $mod->modulename (instance)"); @@ -164,12 +138,9 @@ if (! delete_mod_from_section($mod->coursemodule, "$mod->section")) { notify("Could not delete the $mod->modulename from that section"); } - - unset($SESSION->returnpage); - - add_to_log($course->id, "course", "delete mod", - "view.php?id=$mod->course", - "$mod->modulename $mod->instance", $mod->coursemodule); + add_to_log($course->id, "course", "delete mod", + "view.php?id=$mod->course", + "$mod->modulename $mod->instance", $mod->coursemodule); break; default: error("No mode defined"); @@ -183,13 +154,38 @@ unset($SESSION->returnpage); redirect($return); } else { - redirect("view.php?id=$course->id#$sectionreturn"); + redirect("view.php?id=$course->id"); } exit; } - if ((isset($_GET['movetosection']) or isset($_GET['moveto'])) and confirm_sesskey()) { + if (isset($_GET['move'])) { + + require_variable($id); + + if (! $cm = get_record("course_modules", "id", $id)) { + error("This course module doesn't exist"); + } + + if (!isteacheredit($cm->course)) { + error("You can't modify this course!"); + } + + move_module($cm, $_GET['move']); + + rebuild_course_cache($cm->course); + + $site = get_site(); + if ($site->id == $cm->course) { + redirect($CFG->wwwroot); + } else { + redirect("view.php?id=$cm->course"); + } + exit; + + } else if (isset($_GET['movetosection']) or isset($_GET['moveto'])) { + if (! $cm = get_record("course_modules", "id", $USER->activitycopy)) { error("The copied course module doesn't exist!"); } @@ -225,15 +221,16 @@ rebuild_course_cache($section->course); - if (SITEID == $section->course) { + $site = get_site(); + if ($site->id == $section->course) { redirect($CFG->wwwroot); } else { - redirect("view.php?id=$section->course#$sectionreturn"); + redirect("view.php?id=$section->course"); } - } else if (isset($_GET['indent']) and confirm_sesskey()) { + } else if (isset($_GET['indent'])) { - require_variable($id); + require_variable($id); if (! $cm = get_record("course_modules", "id", $id)) { error("This course module doesn't exist"); @@ -249,14 +246,15 @@ error("Could not update the indent level on that course module"); } - if (SITEID == $cm->course) { + $site = get_site(); + if ($site->id == $cm->course) { redirect($CFG->wwwroot); } else { - redirect("view.php?id=$cm->course#$sectionreturn"); + redirect("view.php?id=$cm->course"); } exit; - } else if (isset($_GET['hide']) and confirm_sesskey()) { + } else if (isset($_GET['hide'])) { if (! $cm = get_record("course_modules", "id", $_GET['hide'])) { error("This course module doesn't exist"); @@ -265,19 +263,20 @@ if (!isteacheredit($cm->course)) { error("You can't modify this course!"); } - - set_coursemodule_visible($cm->id, 0); + + hide_course_module($cm->id); rebuild_course_cache($cm->course); - if (SITEID == $cm->course) { + $site = get_site(); + if ($site->id == $cm->course) { redirect($CFG->wwwroot); } else { - redirect("view.php?id=$cm->course#$sectionreturn"); + redirect("view.php?id=$cm->course"); } exit; - } else if (isset($_GET['show']) and confirm_sesskey()) { + } else if (isset($_GET['show'])) { if (! $cm = get_record("course_modules", "id", $_GET['show'])) { error("This course module doesn't exist"); @@ -295,19 +294,21 @@ error("This module doesn't exist"); } - if ($module->visible and ($section->visible or (SITEID == $cm->course))) { - set_coursemodule_visible($cm->id, 1); + $site = get_site(); + + if ($module->visible and ($section->visible or ($site->id == $cm->course))) { + show_course_module($cm->id); rebuild_course_cache($cm->course); } - if (SITEID == $cm->course) { + if ($site->id == $cm->course) { redirect($CFG->wwwroot); } else { - redirect("view.php?id=$cm->course#$sectionreturn"); + redirect("view.php?id=$cm->course"); } exit; - } else if (isset($_GET['groupmode']) and confirm_sesskey()) { + } else if (isset($_GET['groupmode'])) { if (! $cm = get_record("course_modules", "id", $_GET['id'])) { error("This course module doesn't exist"); @@ -316,19 +317,20 @@ if (!isteacheredit($cm->course)) { error("You can't modify this course!"); } - - set_coursemodule_groupmode($cm->id, $_GET['groupmode']); + + set_groupmode_for_module($cm->id, $_GET['groupmode']); rebuild_course_cache($cm->course); - if (SITEID == $cm->course) { + $site = get_site(); + if ($site->id == $cm->course) { redirect($CFG->wwwroot); } else { - redirect("view.php?id=$cm->course#$sectionreturn"); + redirect("view.php?id=$cm->course"); } exit; - } else if (isset($_GET['copy']) and confirm_sesskey()) { // value = course module + } else if (isset($_GET['copy'])) { // value = course module if (! $cm = get_record("course_modules", "id", $_GET['copy'])) { error("This course module doesn't exist"); @@ -354,9 +356,9 @@ $USER->activitycopycourse = $cm->course; $USER->activitycopyname = $instance->name; - redirect("view.php?id=$cm->course#$sectionreturn"); + redirect("view.php?id=$cm->course"); - } else if (isset($_GET['cancelcopy']) and confirm_sesskey()) { // value = course module + } else if (isset($_GET['cancelcopy'])) { // value = course module $courseid = $USER->activitycopycourse; @@ -364,9 +366,9 @@ unset($USER->activitycopycourse); unset($USER->activitycopyname); - redirect("view.php?id=$courseid#$sectionreturn"); + redirect("view.php?id=$courseid"); - } else if (isset($_GET['delete']) and confirm_sesskey()) { // value = course module + } else if (isset($_GET['delete'])) { // value = course module if (! $cm = get_record("course_modules", "id", $_GET['delete'])) { error("This course module doesn't exist"); @@ -386,12 +388,12 @@ if (! $instance = get_record($module->name, "id", $cm->instance)) { // Delete this module from the course right away - if (! delete_mod_from_section($cm->id, $cm->section)) { - notify("Could not delete the $module->name from that section"); - } if (! delete_course_module($cm->id)) { notify("Could not delete the $module->name (coursemodule)"); } + if (! delete_mod_from_section($cm->id, $cm->section)) { + notify("Could not delete the $module->name from that section"); + } error("The required instance of this module didn't exist. Module deleted.", "$CFG->wwwroot/course/view.php?id=$course->id"); } @@ -405,12 +407,11 @@ $form->modulename = $module->name; $form->fullmodulename = $fullmodulename; $form->instancename = $instance->name; - $form->sesskey = !empty($USER->id) ? $USER->sesskey : ''; $strdeletecheck = get_string("deletecheck", "", "$form->fullmodulename"); $strdeletecheckfull = get_string("deletecheckfull", "", "$form->fullmodulename '$form->instancename'"); - print_header_simple("$strdeletecheck", "", + print_header_simple("$strdeletecheck", "$", "$strdeletecheck"); print_simple_box_start("center", "60%", "#FFAAAA", 20, "noticebox"); @@ -422,7 +423,7 @@ exit; - } else if (isset($_GET['update']) and confirm_sesskey()) { // value = course module + } else if (isset($_GET['update'])) { // value = course module if (! $cm = get_record("course_modules", "id", $_GET['update'])) { error("This course module doesn't exist"); @@ -443,12 +444,12 @@ if (! $form = get_record($module->name, "id", $cm->instance)) { error("The required instance of this module doesn't exist"); } - + if (! $cw = get_record("course_sections", "id", $cm->section)) { error("This course section doesn't exist"); } - if (isset($return)) { + if (isset($return)) { $SESSION->returnpage = "$CFG->wwwroot/mod/$module->name/view.php?id=$cm->id"; } @@ -459,7 +460,6 @@ $form->modulename = $module->name; $form->instance = $cm->instance; $form->mode = "update"; - $form->sesskey = !empty($USER->id) ? $USER->sesskey : ''; $sectionname = get_string("name$course->format"); $fullmodulename = strtolower(get_string("modulename", $module->name)); @@ -472,7 +472,7 @@ $pageheading = get_string("updatinga", "moodle", $fullmodulename); } - } else if (isset($_GET['duplicate']) and confirm_sesskey()) { // value = course module + } else if (isset($_GET['duplicate'])) { // value = course module if (! $cm = get_record("course_modules", "id", $_GET['duplicate'])) { error("This course module doesn't exist"); @@ -493,15 +493,15 @@ if (! $form = get_record($module->name, "id", $cm->instance)) { error("The required instance of this module doesn't exist"); } - + if (! $cw = get_record("course_sections", "id", $cm->section)) { error("This course section doesn't exist"); } - if (isset($return)) { + if (isset($return)) { $SESSION->returnpage = "$CFG->wwwroot/mod/$module->name/view.php?id=$cm->id"; } - + $section = get_field('course_sections', 'section', 'id', $cm->section); $form->coursemodule = $cm->id; @@ -511,7 +511,6 @@ $form->modulename = $module->name; $form->instance = $cm->instance; $form->mode = "add"; - $form->sesskey = !empty($USER->id) ? $USER->sesskey : ''; $sectionname = get_string("name$course->format"); $fullmodulename = strtolower(get_string("modulename", $module->name)); @@ -524,8 +523,8 @@ $pageheading = get_string("duplicatinga", "moodle", $fullmodulename); } - - } else if (isset($_GET['add']) and confirm_sesskey()) { + + } else if (isset($_GET['add'])) { if (empty($_GET['add'])) { redirect($_SERVER["HTTP_REFERER"]); @@ -550,7 +549,6 @@ $form->instance = ""; $form->coursemodule = ""; $form->mode = "add"; - $form->sesskey = !empty($USER->id) ? $USER->sesskey : ''; if (isset($_GET['type'])) { $form->type = $_GET['type']; } @@ -585,8 +583,8 @@ if ($course->category) { print_header("$course->shortname: $streditinga", "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname -> - wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural -> + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> + wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural -> $streditinga", $focuscursor, "", false); } else { print_header("$course->shortname: $streditinga", "$course->fullname", @@ -606,14 +604,14 @@ $defaultformat = FORMAT_MOODLE; } - $icon = "modpixpath/$module->name/icon.gif\" alt=\"\" /> "; + $icon = "modpixpath/$module->name/icon.gif\"> "; print_heading_with_help($pageheading, "mods", $module->name, $icon); - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); include_once($modform); print_simple_box_end(); - if ($usehtmleditor and empty($nohtmleditorneeded)) { + if ($usehtmleditor and empty($nohtmleditorneeded)) { use_html_editor($editorfields); } diff --git a/course/mod_delete.html b/course/mod_delete.html index 8670c0784d2..6e9c7366960 100644 --- a/course/mod_delete.html +++ b/course/mod_delete.html @@ -1,14 +1,13 @@ wwwroot/course/mod.php" ?>"> - - - - - - - + + + + + + - " /> - " onclick="javascript:history.go(-1);" /> + "> + " onclick="javascript:history.go(-1);"> diff --git a/course/outline_rep.php b/course/outline_rep.php index 4872fc68741..d995b67ba13 100644 --- a/course/outline_rep.php +++ b/course/outline_rep.php @@ -1,4 +1,4 @@ -category) { print_header("$course->shortname: $stractivityreport", "$course->fullname", - "id\">$course->shortname -> + "id\">$course->shortname -> $stractivityreport"); } else { print_header("$course->shortname: $stractivityreport ($mode)", "$course->fullname", - "id&course=$course->id\">".fullname($user)." -> + "id&course=$course->id\">$user->firstname $user->lastname -> $stractivityreport -> $strmode"); } print_heading("$course->fullname"); - echo "
    "; + echo "
    "; echo "

    \n"; foreach ($teachers as $teacher) { if ($teacher->authority > 0) { @@ -52,7 +58,7 @@ $teacher->role = $course->teacher; } echo "$teacher->role: "; - link_to_popup_window ("/user/view.php?id=$teacher->id&course=$site->id", "opener", + link_to_popup_window ("/user/view.php?id=$teacher->id&course=$site->id", "opener", fullname($teacher), 400, 500, "$teacher->role", ""); echo "
    "; diff --git a/course/jumpto.php b/course/jumpto.php deleted file mode 100644 index 882a3ec8bf2..00000000000 --- a/course/jumpto.php +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/course/lib.php b/course/lib.php index 253697c85e1..8d3b0c263f4 100644 --- a/course/lib.php +++ b/course/lib.php @@ -16,14 +16,9 @@ define('COURSE_MAX_RECENT_PERIOD', 172800); // Two days, in seconds define('COURSE_MAX_SUMMARIES_PER_PAGE', 10); // courses -define('COURSE_MAX_COURSES_PER_DROPDOWN',5000); // max courses in log dropdown before switching to optional - -define('COURSE_MAX_USERS_PER_DROPDOWN',5000); // max users in log dropdown before switching to optional - define("FRONTPAGENEWS", 0); define("FRONTPAGECOURSELIST", 1); define("FRONTPAGECATEGORYNAMES", 2); -define("FRONTPAGETOPICONLY", 3); function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, $selecteddate="lastlogin", $mod="", $modid="activity/All", $modaction="", $selectedgroup="", $selectedsort="default") { @@ -37,7 +32,13 @@ function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, // Get all the possible users $users = array(); - if ($courseusers = get_course_users($course->id, '', '', 'u.id, u.firstname, u.lastname')) { + if ($course->category) { + $courseusers = get_course_users($course->id); + } else { + $courseusers = get_site_users("u.lastaccess DESC", "u.id, u.firstname, u.lastname"); + } + + if ($courseusers) { foreach ($courseusers as $courseuser) { $users[$courseuser->id] = fullname($courseuser, $isteacher); } @@ -92,7 +93,7 @@ function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, $activities["section/$mod->section"] = "-------------- $strsection $mod->section --------------"; } $section = $mod->section; - $mod->name = strip_tags(format_string(urldecode($mod->name),true)); + $mod->name = strip_tags(urldecode($mod->name)); if (strlen($mod->name) > 55) { $mod->name = substr($mod->name, 0, 50)."..."; } @@ -142,7 +143,7 @@ function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, } echo '

    '; - echo ''; + echo ''; echo "
    "; echo ""; @@ -151,7 +152,7 @@ function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, choose_from_menu ($courses, "id", $course->id, ""); echo ""; } else { - echo ''; + echo "id\">"; } $sortfields = array("default" => get_string("bycourseorder"),"dateasc" => get_string("datemostrecentlast"), "datedesc" => get_string("datemostrecentfirst")); @@ -160,7 +161,7 @@ function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, choose_from_menu ($users, "user", $selecteduser, get_string("allparticipants") ); echo ""; - echo '"; @@ -168,7 +169,7 @@ function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, choose_from_menu ($activities, "modid", $selectedactivity, ""); echo ""; - echo '"; @@ -191,13 +192,13 @@ function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, } - echo '"; echo "
    ' . get_string("since") . ''; + echo "" . get_string("since") . ""; choose_from_menu ($dates, "date", $selecteddate, get_string("alldays")); echo "
    ' . get_string("sortby") . ""; + echo "" . get_string("sortby") . ""; choose_from_menu ($sortfields, "sortby", $selectedsort, ""); echo "
    '; - echo ''; + echo ""; + echo ""; echo "
    "; - $advancedlink = "wwwroot/course/recent.php?id=$course->id&advancedfilter=0\">" . get_string("normalfilter") . ""; + $advancedlink = "wwwroot/course/recent.php?id=$course->id&advancedfilter=0\">" . get_string("normalfilter") . ""; print_heading($advancedlink); echo "
    "; echo ""; @@ -219,13 +220,13 @@ function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, } $tmpdate = time() - ($count * 3600 * 24); $heading = $heading . - "wwwroot/course/recent.php?id=$course->id&date=$tmpdate\"> $count $day | "; + "wwwroot/course/recent.php?id=$course->id&date=$tmpdate\"> $count $day | "; } $heading = $strsince . ": wwwroot/course/recent.php?id=$course->id\">$strlastlogin" . " | " . $heading; print_heading($heading); - $advancedlink = "wwwroot/course/recent.php?id=$course->id&advancedfilter=1\">" . get_string("advancedfilter") . ""; + $advancedlink = "wwwroot/course/recent.php?id=$course->id&advancedfilter=1\">" . get_string("advancedfilter") . ""; print_heading($advancedlink); } @@ -233,48 +234,10 @@ function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, } function print_log_selector_form($course, $selecteduser=0, $selecteddate="today", - $modname="", $modid=0, $modaction="", $selectedgroup=-1,$showcourses=0,$showusers=0) { + $modname="", $modid=0, $modaction="", $selectedgroup=-1) { global $USER, $CFG; - // first check to see if we can override showcourses and showusers - $numcourses = count_records_select("course", "", "COUNT(id)"); - if ($numcourses < COURSE_MAX_COURSES_PER_DROPDOWN && !$showcourses) { - $showcourses = 1; - } - - if ($course->category && $selectedgroup) { - $sql = 'SELECT COUNT(ut.id) '. - 'FROM '.$CFG->prefix.'groups_members gm '. - ' JOIN '.$CFG->prefix.'user_teachers ut ON gm.userid=ut.userid '. - 'WHERE ut.course='.$course->id.' AND gm.groupid='.$selectedgroup; - $numteachers = count_records_sql($sql); - // students - $sql = 'SELECT COUNT(us.id) '. - 'FROM '.$CFG->prefix.'groups_members gm '. - ' JOIN '.$CFG->prefix.'user_students us ON gm.userid=us.userid '. - 'WHERE us.course='.$course->id.' AND gm.groupid='.$selectedgroup; - $numstudents = count_records_sql($sql); - // add - $numusers = $numstudents + $numteachers; - } - else if ($course->category || !$CFG->allusersaresitestudents) { - $sql = "SELECT COUNT(t.id) FROM {$CFG->prefix}user_teachers t - WHERE t.course = '$course->id'"; - $numusers = count_records_sql($sql); - $sql = "SELECT count(s.id) FROM {$CFG->prefix}user_students s - WHERE s.course = '$course->id'"; - $numusers = $numusers + count_records_sql($sql); - } - else if (!$course->category && $CFG->allusersaresitestudents) { - $numusers = get_users(false, '', true,'','','','',0,9999,'id'); - } - - if ($numusers < COURSE_MAX_USERS_PER_DROPDOWN && !$showusers) { - $showusers = 1; - } - - /// Setup for group handling. $isteacher = isteacher($course->id); $isteacheredit = isteacheredit($course->id); @@ -294,29 +257,34 @@ function print_log_selector_form($course, $selecteduser=0, $selecteddate="today" // Get all the possible users $users = array(); - if ($showusers) { - if ($course->category) { - if ($selectedgroup) { // If using a group, only get users in that group. - $courseusers = get_group_users($selectedgroup, 'u.lastname ASC', '', 'u.id, u.firstname, u.lastname'); - } else { - $courseusers = get_course_users($course->id, '', '', 'u.id, u.firstname, u.lastname'); - } - } else { - $courseusers = get_site_users("u.lastaccess DESC", "u.id, u.firstname, u.lastname"); + if ($course->category) { + /// If using a group, only get users in that group. + if ($selectedgroup) { + $sql = 'SELECT u.id as id, u.firstname, u.lastname, u.lastaccess '. + 'FROM '.$CFG->prefix.'user u,'.$CFG->prefix.'user_students us,'.$CFG->prefix.'groups_members gm, '. + $CFG->prefix.'user_teachers ut '. + 'WHERE us.course='.$course->id.' AND gm.groupid='.$selectedgroup. + ' AND (gm.userid=us.userid OR gm.userid=ut.userid) AND gm.userid=u.id'; + $courseusers = get_records_sql($sql); } - - if ($courseusers) { - foreach ($courseusers as $courseuser) { - $users[$courseuser->id] = fullname($courseuser, $isteacher); - } - } - if ($guest = get_guest()) { - $users[$guest->id] = fullname($guest); + else { + $courseusers = get_course_users($course->id); } + } else { + $courseusers = get_site_users("u.lastaccess DESC", "u.id, u.firstname, u.lastname"); } - if (isadmin() && $showcourses) { - if ($ccc = get_records("course", "", "", "fullname","id,fullname,category")) { + if ($courseusers) { + foreach ($courseusers as $courseuser) { + $users[$courseuser->id] = fullname($courseuser, $isteacher); + } + } + if ($guest = get_guest()) { + $users[$guest->id] = fullname($guest); + } + + if (isadmin()) { + if ($ccc = get_records("course", "", "", "fullname")) { foreach ($ccc as $cc) { if ($cc->category) { $courses["$cc->id"] = "$cc->fullname"; @@ -346,7 +314,7 @@ function print_log_selector_form($course, $selecteduser=0, $selecteddate="today" $activities["section/$mod->section"] = "-------------- $strsection $mod->section --------------"; } $section = $mod->section; - $mod->name = strip_tags(format_string(urldecode($mod->name),true)); + $mod->name = urldecode($mod->name); if (strlen($mod->name) > 55) { $mod->name = substr($mod->name, 0, 50)."..."; } @@ -359,15 +327,16 @@ function print_log_selector_form($course, $selecteduser=0, $selecteddate="today" $selectedactivity = "$mod->cm"; } } - } - if (isadmin() && !$course->category) { - $activities["site_errors"] = get_string("siteerrors"); - if ($modid === "site_errors") { + if (isadmin() && !$course->category) { + $activities["site_errors"] = get_string("siteerrors"); + if ($modid === "site_errors") { $selectedactivity = "site_errors"; + } } } + $strftimedate = get_string("strftimedate"); $strftimedaydate = get_string("strftimedaydate"); @@ -403,55 +372,25 @@ function print_log_selector_form($course, $selecteduser=0, $selecteddate="today" echo '
    '; echo '
    '; - echo ''; - echo ''; - echo ''; - if (isadmin() && $showcourses) { + echo ''; + if (isadmin()) { choose_from_menu ($courses, "id", $course->id, ""); } else { - // echo ''; - $courses = array(); - $courses[$course->id] = $course->fullname . ((empty($course->category)) ? ' (Site) ' : ''); - choose_from_menu($courses,"id",$course->id,false); - if (isadmin()) { - $a->url = "log.php?chooselog=0&group=$selectedgroup&user=$selecteduser" - ."&id=$course->id&date=$selecteddate&modid=$selectedactivity&showcourses=1&showusers=$showusers"; - print_string('logtoomanycourses','moodle',$a); - } + echo "id\">"; } if ($showgroups) { - if ($cgroups = get_groups($course->id)) { - foreach ($cgroups as $cgroup) { - $groups[$cgroup->id] = $cgroup->name; - } - } - else { - $groups = array(); + $cgroups = get_groups($course->id); + foreach ($cgroups as $cgroup) { + $groups[$cgroup->id] = $cgroup->name; } choose_from_menu ($groups, "group", $selectedgroup, get_string("allgroups") ); } - if ($showusers) { - choose_from_menu ($users, "user", $selecteduser, get_string("allparticipants") ); - } - else { - $users = array(); - if (!empty($selecteduser)) { - $user = get_record('user','id',$selecteduser); - $users[$selecteduser] = fullname($user); - } - else { - $users[0] = get_string('allparticipants'); - } - choose_from_menu($users,'user',$selecteduser,false); - $a->url = "log.php?chooselog=0&group=$selectedgroup&user=$selecteduser" - ."&id=$course->id&date=$selecteddate&modid=$selectedactivity&showusers=1&showcourses=$showcourses"; - print_string('logtoomanyusers','moodle',$a); - } + choose_from_menu ($users, "user", $selecteduser, get_string("allparticipants") ); choose_from_menu ($dates, "date", $selecteddate, get_string("alldays")); choose_from_menu ($activities, "modid", $selectedactivity, get_string("allactivities"), "", ""); - echo ''; + echo ""; echo "
    "; echo "
    "; } @@ -460,17 +399,13 @@ function make_log_url($module, $url) { switch ($module) { case "user": case "course": + case "user": case "file": case "login": case "lib": case "admin": - case "message": - case "calendar": return "/$module/$url"; break; - case "upload": - return "$url"; - break; case "library": case "": return "/"; @@ -481,7 +416,7 @@ function make_log_url($module, $url) { } } -function print_log($course, $user=0, $date=0, $order="l.time ASC", $page=0, $perpage=100, +function print_log($course, $user=0, $date=0, $order="l.time ASC", $page=0, $perpage=100, $url="", $modname="", $modid=0, $modaction="", $groupid=0) { // It is assumed that $date is the GMT time of midnight for that day, @@ -506,7 +441,7 @@ function print_log($course, $user=0, $date=0, $order="l.time ASC", $page=0, $per $joins = array(); if ($course->category) { - $joins[] = "l.course='$course->id'"; + $joins[] = "l.course='$course->id'"; } else { $courses[0] = ''; if ($ccc = get_courses("all", "c.id ASC", "c.id,c.shortname")) { @@ -521,7 +456,7 @@ function print_log($course, $user=0, $date=0, $order="l.time ASC", $page=0, $per } if ('site_errors' === $modid) { - $joins[] = "( l.action='error' OR l.action='infected' )"; + $joins[] = "l.action='error'"; } else if ($modid) { $joins[] = "l.cmid = '$modid'"; } @@ -578,13 +513,13 @@ function print_log($course, $user=0, $date=0, $order="l.time ASC", $page=0, $per $strftimedatetime = get_string("strftimedatetime"); $isteacher = isteacher($course->id); - echo '

    '; + echo "

    "; print_string("displayingrecords", "", $totalcount); echo "

    "; - print_paging_bar($totalcount, $page, $perpage, "$url&perpage=$perpage&"); + print_paging_bar($totalcount, $page, $perpage, "$url&perpage=$perpage&"); - echo ''; + echo '
    '; foreach ($logs as $log) { if (isset($ldcache[$log->module][$log->action])) { @@ -593,42 +528,30 @@ function print_log($course, $user=0, $date=0, $order="l.time ASC", $page=0, $per $ld = get_record('log_display', 'module', $log->module, "action", $log->action); $ldcache[$log->module][$log->action] = $ld; } - if ($ld && !empty($log->info)) { - // ugly hack to make sure fullname is shown correctly - if (($ld->mtable == 'user') and ($ld->field == 'CONCAT(firstname," ",lastname)')) { - $log->info = fullname(get_record($ld->mtable, 'id', $log->info), true); - } else { - $log->info = get_field($ld->mtable, $ld->field, 'id', $log->info); - } + if ($ld) { + $log->info = get_field($ld->mtable, $ld->field, 'id', $log->info); } - //Filter log->info - $log->info = format_string($log->info); - - $log->url = strip_tags(urldecode($log->url)); // Some XSS protection - $log->info = strip_tags(urldecode($log->info)); // Some XSS protection - $log->url = str_replace('&', '&', $log->url); /// XHTML compatibility - - echo ''; + echo ''; if (! $course->category) { - echo ''; + echo ''; } - echo ''; - echo ''; - echo ''; + echo ''; + echo ''; + echo ''; $fullname = fullname($log, $isteacher); - echo ''; - echo ''; + echo ''; - echo ''; + echo ''; + echo ''; echo ''; } echo '
    '.$courses[$log->course].''.$courses[$log->course].''.userdate($log->time, '%a').''.userdate($log->time, $strftimedatetime).''; - link_to_popup_window("/lib/ipatlas/plot.php?address=$log->ip&user=$log->userid", 'ipatlas',$log->ip, 400, 700); - echo ''.userdate($log->time, '%a').''.userdate($log->time, $strftimedatetime).''; + link_to_popup_window("/lib/ipatlas/plot.php?address=$log->ip&user=$log->userid", 'ipatlas',$log->ip, 400, 700); + echo 'userid&course=$log->course".'">'.$fullname.''; + echo 'userid&course=$log->course".'">'.$fullname.''; link_to_popup_window( make_log_url($log->module,$log->url), 'fromloglive',"$log->module $log->action", 400, 600); - echo ''.$log->info.''.$log->info.'
    '; - print_paging_bar($totalcount, $page, $perpage, "$url&perpage=$perpage&"); + print_paging_bar($totalcount, $page, $perpage, "$url&perpage=$perpage&"); } @@ -637,8 +560,7 @@ function print_log_graph($course, $userid=0, $type="course.png", $date=0) { if (empty($CFG->gdversion)) { echo "(".get_string("gdneed").")"; } else { - echo '\"\"'; + echo "wwwroot/course/loggraph.php?id=$course->id&user=$userid&type=$type&date=$date\">"; } } @@ -649,7 +571,7 @@ function print_recent_activity($course) { // This function trawls through the logs looking for // anything new since the user's last login - global $CFG, $USER, $SESSION; + global $CFG, $USER, $THEME, $SESSION; $isteacher = isteacher($course->id); @@ -661,14 +583,12 @@ function print_recent_activity($course) { } } - echo '
    '; - echo get_string('activitysince', '', userdate($timestart)); - echo '
    '; - echo '
    '; + echo '
    '; + echo get_string("activitysince", "", userdate($timestart)); - echo ''.get_string('recentactivityreport').''; + echo '

    '.get_string('recentactivityreport').'

    '; - echo '
    '; + echo ''; // Firstly, have there been any new enrolments? @@ -679,33 +599,33 @@ function print_recent_activity($course) { $users = get_recent_enrolments($course->id, $timestart); if ($users) { - echo '
    '; + echo "

    "; foreach ($users as $user) { if (! $heading) { - print_headline(get_string("newusers").':', 3); + print_headline(get_string("newusers").":"); $heading = true; $content = true; } $fullname = fullname($user, $isteacher); - echo 'id&course=$course->id\">$fullname
    "; + echo 'id&course=$course->id\">$fullname
    "; } - echo '

    '; + echo "

    "; } // Next, have there been any modifications to the course structure? - $logs = get_records_select('log', "time > '$timestart' AND course = '$course->id' AND + $logs = get_records_select("log", "time > '$timestart' AND course = '$course->id' AND module = 'course' AND action LIKE '% mod'", "time ASC"); if ($logs) { foreach ($logs as $key => $log) { - $info = split(' ', $log->info); + $info = split(" ", $log->info); - if ($info[0] == 'label') { // Labels are special activities + if ($info[0] == "label") { // Labels are special activities continue; } - $modname = get_field($info[0], 'name', 'id', $info[1]); + $modname = get_field($info[0], "name", "id", $info[1]); //Create a temp valid module structure (course,id) $tempmod->course = $log->course; $tempmod->id = $info[1]; @@ -715,23 +635,23 @@ function print_recent_activity($course) { //Only if the mod is visible if ($modvisible) { switch ($log->action) { - case 'add mod': - $stradded = get_string('added', 'moodle', get_string('modulename', $info[0])); - $changelist[$log->info] = array ('operation' => 'add', 'text' => "$stradded:
    wwwroot/course/$log->url\">".format_string($modname,true).""); + case "add mod": + $stradded = get_string("added", "moodle", get_string("modulename", $info[0])); + $changelist["$log->info"] = array ("operation" => "add", "text" => "$stradded:
    wwwroot/course/$log->url\">$modname"); break; - case 'update mod': - $strupdated = get_string('updated', 'moodle', get_string('modulename', $info[0])); - if (empty($changelist[$log->info])) { - $changelist[$log->info] = array ('operation' => 'update', 'text' => "$strupdated:
    wwwroot/course/$log->url\">".format_string($modname,true).""); + case "update mod": + $strupdated = get_string("updated", "moodle", get_string("modulename", $info[0])); + if (empty($changelist["$log->info"])) { + $changelist["$log->info"] = array ("operation" => "update", "text" => "$strupdated:
    wwwroot/course/$log->url\">$modname"); } break; - case 'delete mod': - if (!empty($changelist[$log->info]['operation']) and - $changelist[$log->info]['operation'] == 'add') { - $changelist[$log->info] = NULL; + case "delete mod": + if (!empty($changelist["$log->info"]["operation"]) and + $changelist["$log->info"]["operation"] == "add") { + $changelist["$log->info"] = NULL; } else { - $strdeleted = get_string('deletedactivity', 'moodle', get_string('modulename', $info[0])); - $changelist[$log->info] = array ('operation' => 'delete', 'text' => $strdeleted); + $strdeleted = get_string("deletedactivity", "moodle", get_string("modulename", $info[0])); + $changelist["$log->info"] = array ("operation" => "delete", "text" => $strdeleted); } break; } @@ -747,22 +667,33 @@ function print_recent_activity($course) { } if (isset($changes)){ if (count($changes) > 0) { - print_headline(get_string('courseupdates').':', 3); + print_headline(get_string("courseupdates").":"); $content = true; foreach ($changes as $changeinfo => $change) { - echo '

    '.$change['text'].'

    '; + echo "

    ".$change["text"]."

    "; } } } } + + // If this site uses Library module, then print recent items + if (!empty($CFG->librarypath)) { + if (file_exists("$CFG->dirroot/$CFG->librarypath/librarylib.php")) { + include_once("$CFG->dirroot/$CFG->librarypath/librarylib.php"); + if (librarysummarize(5, '', date('YmdHis',$USER->lastlogin))) { + $content = true; + } + } + } + // Now display new things from each module - $mods = get_records('modules', 'visible', '1', 'name', 'id, name'); + $mods = get_records("modules", "visible", "1", "name", "id, name"); foreach ($mods as $mod) { // Each module gets it's own logs and prints them - include_once($CFG->dirroot.'/mod/'.$mod->name.'/lib.php'); - $print_recent_activity = $mod->name.'_print_recent_activity'; + include_once("$CFG->dirroot/mod/$mod->name/lib.php"); + $print_recent_activity = $mod->name."_print_recent_activity"; if (function_exists($print_recent_activity)) { $modcontent = $print_recent_activity($course, $isteacher, $timestart); if ($modcontent) { @@ -772,7 +703,7 @@ function print_recent_activity($course) { } if (! $content) { - echo '

    '.get_string('nothingnew').'

    '; + echo "".get_string("nothingnew").""; } } @@ -882,7 +813,7 @@ function get_all_sections($courseid) { function course_set_display($courseid, $display=0) { global $USER; - if (empty($USER->id)) { + if (empty($USER)) { return false; } @@ -913,7 +844,11 @@ function set_section_visible($courseid, $sectionnumber, $visibility) { if (!empty($section->sequence)) { $modules = explode(",", $section->sequence); foreach ($modules as $moduleid) { - set_coursemodule_visible($moduleid, $visibility); + if ($visibility) { + show_course_module($moduleid); + } else { + hide_course_module($moduleid); + } } } rebuild_course_cache($courseid); @@ -932,27 +867,23 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false, static $ismoving; static $strmovehere; static $strmovefull; - static $strunreadpostsone; - $labelformatoptions = New stdClass; if (!isset($isteacher)) { $groupbuttons = ($course->groupmode or (!$course->groupmodeforce)); $groupbuttonslink = (!$course->groupmodeforce); $isteacher = isteacher($course->id); $isediting = isediting($course->id); - $ismoving = $isediting && ismoving($course->id); + $ismoving = ismoving($course->id); if ($ismoving) { $strmovehere = get_string("movehere"); $strmovefull = strip_tags(get_string("movefull", "", "'$USER->activitycopyname'")); } - $strunreadpostsone = get_string('unreadpostsone', 'forum'); } - $labelformatoptions->noclean = true; $modinfo = unserialize($course->modinfo); - echo ''; + echo '
    '; if (!empty($section->sequence)) { $sectionmods = explode(",", $section->sequence); @@ -964,19 +895,20 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false, $mod = $mods[$modnumber]; if ($mod->visible or $isteacher) { - echo '"; echo ""; } } - } else { - echo ""; // needed for XHTML compatibility } if ($ismoving) { - echo ' - '; + echo "\n"; } echo "
    '; + echo "
    modname\">"; if ($ismoving) { if ($mod->id == $USER->activitycopy) { continue; } - echo ''. - ''.$strmovehere.'
    - '; + echo "wwwroot/course/mod.php?moveto=$mod->id\">". + "pixpath/movehere.gif\" ". + " alt=\"$strmovehere\" border=\"0\">
    \n"; } $instancename = urldecode($modinfo[$modnumber]->name); - $instancename = format_string($instancename, true, $course->id); + if (!empty($CFG->filterall)) { + $instancename = filter_text("$instancename", $course->id); + } if (!empty($modinfo[$modnumber]->extra)) { $extra = urldecode($modinfo[$modnumber]->extra); @@ -998,39 +930,20 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false, if (!$mod->visible) { echo ""; } - echo format_text($extra, FORMAT_HTML, $labelformatoptions); + echo format_text($extra, FORMAT_HTML); if (!$mod->visible) { echo ""; } } else { // Normal activity $linkcss = $mod->visible ? "" : " class=\"dimmed\" "; - echo ''.$mod->modfullname.''. - ' '. - $instancename.''; + echo "\"$mod-modfullname\">". + " modfullname\" $linkcss $extra". + " href=\"$CFG->wwwroot/mod/$mod->modname/view.php?id=$mod->id\">$instancename"; } - if ($CFG->forum_trackreadposts && $mod->modname == 'forum') { - $groupmode = groupmode($course, $mod); - $groupid = ($groupmode == SEPARATEGROUPS && !isteacheredit($course->id)) ? - get_current_group($course->id) : false; -// $unread = forum_tp_count_forum_posts($mod->instance, $groupid) - -// forum_tp_count_forum_read_records($USER->id, $mod->instance, $groupid); - $unread = forum_tp_count_forum_unread_posts($USER->id, $mod->instance, $groupid); - if ($unread) { - echo ' '; - if ($unread == 1) { - echo $strunreadpostsone; - } else { - print_string('unreadpostsnumber', 'forum', $unread); - } - echo ' '; - } - } - if ($isediting) { - if ($groupbuttons and $mod->modname != 'label' and $mod->modname != 'resource') { + if ($groupbuttons) { if (! $mod->groupmodelink = $groupbuttonslink) { $mod->groupmode = $course->groupmode; } @@ -1038,22 +951,19 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false, } else { $mod->groupmode = false; } - echo '  '; - echo make_editing_buttons($mod, $absolute, true, $mod->indent, $section->section); + echo "  "; + echo make_editing_buttons($mod, $absolute, true, $mod->indent); } echo "
    '. - ''.$strmovehere.'
    wwwroot/course/mod.php?movetosection=$section->id\">". + "pixpath/movehere.gif\" ". + " alt=\"$strmovehere\" border=\"0\">
    \n\n"; } @@ -1062,7 +972,7 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false, function print_section_add_menus($course, $section, $modnames, $vertical=false, $return=false) { // Prints the menus to add activities and resources - global $CFG, $USER; + global $CFG; static $straddactivity, $stractivities, $straddresource, $resources; if (!isset($straddactivity)) { @@ -1074,7 +984,7 @@ function print_section_add_menus($course, $section, $modnames, $vertical=false, $resourceraw = resource_get_resource_types(); foreach ($resourceraw as $type => $name) { - $resources["resource&type=$type"] = $name; + $resources["resource&type=$type"] = $name; } $resources['label'] = get_string('resourcetypelabel', 'resource'); } @@ -1082,7 +992,7 @@ function print_section_add_menus($course, $section, $modnames, $vertical=false, $output = ''; $output .= '
    '; @@ -1091,7 +1001,7 @@ function print_section_add_menus($course, $section, $modnames, $vertical=false, } $output .= '
    '; - $output .= popup_form("$CFG->wwwroot/course/mod.php?id=$course->id&section=$section&sesskey=$USER->sesskey&add=", + $output .= popup_form("$CFG->wwwroot/course/mod.php?id=$course->id&section=$section&add=", $resources, "ressection$section", "", $straddresource, 'resource/types', $straddresource, true); $output .= ''; - $output .= popup_form("$CFG->wwwroot/course/mod.php?id=$course->id&section=$section&sesskey=$USER->sesskey&add=", + $output .= popup_form("$CFG->wwwroot/course/mod.php?id=$course->id&section=$section&add=", $modnames, "section$section", "", $straddactivity, 'mods', $straddactivity, true); $output .= '
    '; $output .= '
    '; @@ -1113,7 +1023,7 @@ function rebuild_course_cache($courseid=0) { $select = ""; } - if ($courses = get_records_select("course", $select,'','id,fullname')) { + if ($courses = get_records_select("course", $select)) { foreach ($courses as $course) { $modinfo = serialize(get_array_of_activities($course->id)); if (!set_field("course", "modinfo", $modinfo, "id", $course->id)) { @@ -1124,6 +1034,15 @@ function rebuild_course_cache($courseid=0) { } +function print_heading_block($heading, $width="100%", $class="headingblock") { + global $THEME; + + echo ""; + echo "
    cellheading\" class=\"$class\">"; + echo stripslashes($heading); + echo "
    "; +} + function make_categories_list(&$list, &$parents, $category=NULL, $path="") { /// Given an empty array, this function recursively travels the @@ -1132,16 +1051,16 @@ function make_categories_list(&$list, &$parents, $category=NULL, $path="") { if ($category) { if ($path) { - $path = $path.' / '.$category->name; + $path = "$path / $category->name"; } else { - $path = $category->name; + $path = "$category->name"; } $list[$category->id] = $path; } else { $category->id = 0; } - if ($categories = get_categories($category->id)) { // Print all the children recursively + if ($categories = get_categories("$category->id")) { // Print all the children recursively foreach ($categories as $cat) { if (!empty($category->id)) { if (isset($parents[$category->id])) { @@ -1159,9 +1078,8 @@ function print_whole_category_list($category=NULL, $displaylist=NULL, $parentsli /// Recursive function to print out all the categories in a nice format /// with or without courses included global $CFG; - - if (isset($CFG->max_category_depth) && ($depth >= $CFG->max_category_depth)) { - return; + if (isset($CFG->max_category_depth)&&($depth >= $CFG->max_category_depth)) { + return; } if (!$displaylist) { @@ -1207,114 +1125,111 @@ function print_category_info($category, $depth) { static $strallowguests, $strrequireskey, $strsummary; if (empty($strsummary)) { - $strallowguests = get_string('allowguests'); - $strrequireskey = get_string('requireskey'); - $strsummary = get_string('summary'); + $strallowguests = get_string("allowguests"); + $strrequireskey = get_string("requireskey"); + $strsummary = get_string("summary"); } - $catlinkcss = $category->visible ? '' : ' class="dimmed" '; + $catlinkcss = $category->visible ? "" : " class=\"dimmed\" "; if ($CFG->frontpage == FRONTPAGECOURSELIST) { - $catimage = ''; + $catimage = "pixpath/i/course.gif\" width=16 height=16 border=0>"; } else { $catimage = " "; } - echo "\n\n".''; + echo "\n\n
    "; if ($CFG->frontpage == FRONTPAGECOURSELIST) { - $courses = get_courses($category->id, 'c.sortorder ASC', 'c.id,c.sortorder,c.visible,c.fullname,c.shortname,c.password,c.summary,c.guest'); + $courses = get_courses($category->id); echo ""; if ($depth) { $indent = $depth*30; $rows = count($courses) + 1; - echo ''; + echo ""; } - echo ''; - echo ''; - echo ''; - echo ''; + echo ""; + echo ""; + echo ""; + echo "\n"; if ($courses && !(isset($CFG->max_category_depth)&&($depth>=$CFG->max_category_depth-1))) { foreach ($courses as $course) { - $linkcss = $course->visible ? '' : ' class="dimmed" '; - echo '\n\n'; + echo "\n"; } } } else { if ($depth) { $indent = $depth*20; - echo ''; + echo ""; } - echo ''; - echo ''; + echo ""; + echo ""; } - echo '
    '; + echo ""; print_spacer(10, $indent); - echo ''.$catimage.''; - echo ''.$category->name.''; - echo ' 
    $catimage"; + echo "wwwroot/course/category.php?id=$category->id\">$category->name"; + echo " 
     '; - echo ''; - echo ''.$course->fullname.''; - echo ''; + $linkcss = $course->visible ? "" : " class=\"dimmed\" "; + echo "
     "; + echo ""; + echo "wwwroot/course/view.php?id=$course->id\">$course->fullname"; + echo ""; if ($course->guest ) { - echo ''; - echo ''.$strallowguests.''; + echo "wwwroot/course/view.php?id=$course->id\">"; + echo "\"$strallowguests\"pixpath/i/guest.gif\">"; } else { - echo ''; + echo "\"\"pixpath/spacer.gif\">"; } if ($course->password) { - echo ''; - echo ''.$strrequireskey.''; + echo "wwwroot/course/view.php?id=$course->id\">"; + echo "\"$strrequireskey\"pixpath/i/key.gif\">"; } else { - echo ''; + echo "\"\"pixpath/spacer.gif\">"; } if ($course->summary) { - link_to_popup_window ('/course/info.php?id='.$course->id, 'courseinfo', - ''.$strsummary.'', + link_to_popup_window ("/course/info.php?id=$course->id", "courseinfo", + "\"$strsummary\"pixpath/i/info.gif\">", 400, 500, $strsummary); } else { - echo ''; + echo "\"\"pixpath/spacer.gif\">"; } - echo '
    '; + echo ""; print_spacer(10, $indent); - echo ''; - echo ''.$category->name.''; - echo ''; - if ($category->coursecount) { - echo $category->coursecount; - } - echo '
    "; + echo "wwwroot/course/category.php?id=$category->id\">$category->name"; + echo "$category->coursecount
    '; + echo "\n
    \n"; } function print_courses($category, $width="100%") { /// Category is 0 (for all courses) or an object - global $CFG; + global $CFG, $THEME; if (empty($category)) { $categories = get_categories(0); // Parent = 0 ie top-level categories only if (count($categories) == 1) { $category = array_shift($categories); - $courses = get_courses($category->id, 'c.sortorder ASC', 'c.id,c.sortorder,c.visible,c.fullname,c.shortname,c.password,c.summary,c.teacher'); + $courses = get_courses($category->id); } else { - $courses = get_courses('all', 'c.sortorder ASC', 'c.id,c.sortorder,c.visible,c.fullname,c.shortname,c.password,c.summary,c.teacher'); + $courses = get_courses("all"); } unset($categories); } else { $categories = get_categories($category->id); // sub categories - $courses = get_courses($category->id, 'c.sortorder ASC', 'c.id,c.sortorder,c.visible,c.fullname,c.shortname,c.password,c.summary,c.teacher'); + $courses = get_courses($category->id); } if ($courses) { foreach ($courses as $course) { print_course($course, $width); + echo "
    \n"; } } else { print_heading(get_string("nocoursesyet")); @@ -1325,7 +1240,7 @@ function print_courses($category, $width="100%") { function print_course($course, $width="100%") { - global $CFG; + global $CFG, $THEME; static $enrol; @@ -1334,38 +1249,38 @@ function print_course($course, $width="100%") { $enrol = new enrolment_plugin; } - print_simple_box_start("center", "$width", '', 5, "coursebox"); + if (! $site = get_site()) { + error("Could not find a site!"); + } + + + print_simple_box_start("center", "$width", $THEME->cellcontent, 5, "coursebox"); $linkcss = $course->visible ? "" : " class=\"dimmed\" "; echo ""; - echo ''; - echo '"; + echo ""; echo "
    '; - echo ''. - $course->fullname.'
    '; + echo "
    "; + echo "

    wwwroot/course/view.php?id=$course->id\">$course->fullname

    "; if ($teachers = get_course_teachers($course->id)) { - echo "\n"; + echo "

    \n"; foreach ($teachers as $teacher) { if ($teacher->authority > 0) { if (!$teacher->role) { $teacher->role = $course->teacher; } $fullname = fullname($teacher, isteacher($course->id)); // is the USER a teacher of that course - echo $teacher->role.': '.$fullname.'
    '; + echo "$teacher->role: wwwroot/user/view.php?id=$teacher->id&course=$site->id\">$fullname
    "; } } - echo "\n"; + echo "

    "; } echo $enrol->get_access_icons($course); - echo '
    '; - $options = NULL; - $options->noclean = true; - $options->para = false; - echo format_text($course->summary, FORMAT_MOODLE, $options, $course->id); + echo ""; + echo "

    ".filter_text(text_to_html($course->summary), $course->id)."

    "; echo "
    "; @@ -1389,6 +1304,7 @@ function print_my_moodle() { continue; } print_course($course, "100%"); + echo "
    \n"; } if (count_records("course") > (count($courses) + 1) ) { // Some courses not being displayed @@ -1416,25 +1332,25 @@ function print_course_search($value="", $return=false, $format="plain") { $strsearchcourses= get_string("searchcourses"); - if ($format == 'plain') { - $output = '
    '; - $output .= '

    '; - $output .= ''; - $output .= ''; - $output .= '

    '; - } else if ($format == 'short') { - $output = '
    '; - $output .= '

    '; - $output .= ''; - $output .= ''; - $output .= '

    '; - } else if ($format == 'navbar') { - $output = '
    '; - $output .= '
    '; - $output .= ''; - $output .= ''; - $output .= '
    '; - $output .= '
    '; + if ($format == "plain") { + $output = "

    "; + $output .= "

    wwwroot/course/search.php\" method=\"get\">"; + $output .= ""; + $output .= ""; + $output .= "

    "; + } else if ($format == "short") { + $output = "

    "; + $output .= "

    wwwroot/course/search.php\" method=\"get\">"; + $output .= ""; + $output .= ""; + $output .= "

    "; + } else if ($format == "navbar") { + $output = "
    "; + $output .= "
    wwwroot/course/search.php\" method=\"get\">"; + $output .= ""; + $output .= ""; + $output .= "
    "; + $output .= "
    "; } if ($return) { @@ -1498,42 +1414,34 @@ function add_mod_to_section($mod, $beforemod=NULL) { } } -function set_coursemodule_groupmode($id, $groupmode) { +function set_groupmode_for_module($id, $groupmode) { return set_field("course_modules", "groupmode", $groupmode, "id", $id); } -function set_coursemodule_visible($id, $visible) { - $cm = get_record('course_modules', 'id', $id); +function hide_course_module($mod) { + $cm = get_record('course_modules', 'id', $mod); $modulename = get_field('modules', 'name', 'id', $cm->module); if ($events = get_records_select('event', "instance = '$cm->instance' AND modulename = '$modulename'")) { foreach($events as $event) { - if ($visible) { - show_event($event); - } else { - hide_event($event); - } + hide_event($event); } } - return set_field("course_modules", "visible", $visible, "id", $id); + return set_field("course_modules", "visible", 0, "id", $mod); } -/* - * Delete a course module and any associated data at the course level (events) - * Until 1.5 this function simply marked a deleted flag ... now it - * deletes it completely. - * - */ -function delete_course_module($id) { - if (!$cm = get_record('course_modules', 'id', $id)) { - return true; - } +function show_course_module($mod) { + $cm = get_record('course_modules', 'id', $mod); $modulename = get_field('modules', 'name', 'id', $cm->module); if ($events = get_records_select('event', "instance = '$cm->instance' AND modulename = '$modulename'")) { foreach($events as $event) { - delete_event($event); + show_event($event); } } - return delete_records('course_modules', 'id', $cm->id); + return set_field("course_modules", "visible", 1, "id", $mod); +} + +function delete_course_module($mod) { + return set_field("course_modules", "deleted", 1, "id", $mod); } function delete_mod_from_section($mod, $section) { @@ -1556,7 +1464,6 @@ function delete_mod_from_section($mod, $section) { function move_section($course, $section, $move) { /// Moves a whole course section up and down within the course - global $USER; if (!$move) { return true; @@ -1582,10 +1489,6 @@ function move_section($course, $section, $move) { if (!set_field("course_sections", "section", $section, "id", $sectiondestrecord->id)) { return false; } - // if the focus is on the section that is being moved, then move the focus along - if (isset($USER->display[$course->id]) and ($USER->display[$course->id] == $section)) { - course_set_display($course->id, $sectiondest); - } return true; } @@ -1606,13 +1509,10 @@ function moveto_module($mod, $section, $beforemod=NULL) { if ($mod->section != $section->id) { $mod->section = $section->id; + if (!update_record("course_modules", $mod)) { return false; } - // if moving to a hidden section then hide module - if (!$section->visible) { - set_coursemodule_visible($mod->id, 0); - } } /// Add the module into the new section @@ -1629,11 +1529,135 @@ function moveto_module($mod, $section, $beforemod=NULL) { } -function make_editing_buttons($mod, $absolute=false, $moveselect=true, $indent=-1, $section=-1) { - global $CFG, $USER; + + +function move_module($cm, $move) { +/// Moves an activity module up and down within the course + + if (!$move) { + return true; + } + + if (! $thissection = get_record("course_sections", "id", $cm->section)) { + error("This course section doesn't exist"); + } + + $mods = explode(",", $thissection->sequence); + + $len = count($mods); + $pos = array_keys($mods, $cm->id); + $thepos = $pos[0]; + + if ($len == 0 || count($pos) == 0 ) { + error("Very strange. Could not find the required module in this section."); + } + + if ($len == 1) { + $first = true; + $last = true; + } else { + $first = ($thepos == 0); + $last = ($thepos == $len - 1); + } + + if ($move < 0) { // Moving the module up + + if ($first) { + if ($thissection->section == 0) { // First section, do nothing + return true; + + } else { // Push onto end of previous section + $prevsectionnumber = $thissection->section - 1; + if (! $prevsection = get_record("course_sections", "course", "$thissection->course", + "section", "$prevsectionnumber")) { + error("Previous section ($prevsection->id) doesn't exist"); + } + + if (!empty($prevsection->sequence)) { + $newsequence = "$prevsection->sequence,$cm->id"; + } else { + $newsequence = "$cm->id"; + } + + if (! set_field("course_sections", "sequence", $newsequence, "id", $prevsection->id)) { + error("Previous section could not be updated"); + } + + if (! set_field("course_modules", "section", $prevsection->id, "id", $cm->id)) { + error("Module could not be updated"); + } + + array_splice($mods, 0, 1); + $newsequence = implode(",", $mods); + if (! set_field("course_sections", "sequence", $newsequence, "id", $thissection->id)) { + error("Module could not be updated"); + } + + return true; + + } + } else { // move up within this section + $swap = $mods[$thepos-1]; + $mods[$thepos-1] = $mods[$thepos]; + $mods[$thepos] = $swap; + + $newsequence = implode(",", $mods); + if (! set_field("course_sections", "sequence", $newsequence, "id", $thissection->id)) { + error("This section could not be updated"); + } + return true; + } + + } else { // Moving the module down + + if ($last) { + $nextsectionnumber = $thissection->section + 1; + if ($nextsection = get_record("course_sections", "course", "$thissection->course", + "section", "$nextsectionnumber")) { + + if (!empty($nextsection->sequence)) { + $newsequence = "$cm->id,$nextsection->sequence"; + } else { + $newsequence = "$cm->id"; + } + + if (! set_field("course_sections", "sequence", $newsequence, "id", $nextsection->id)) { + error("Next section could not be updated"); + } + + if (! set_field("course_modules", "section", $nextsection->id, "id", $cm->id)) { + error("Module could not be updated"); + } + + array_splice($mods, $thepos, 1); + $newsequence = implode(",", $mods); + if (! set_field("course_sections", "sequence", $newsequence, "id", $thissection->id)) { + error("This section could not be updated"); + } + return true; + + } else { // There is no next section, so just return + return true; + + } + } else { // move down within this section + $swap = $mods[$thepos+1]; + $mods[$thepos+1] = $mods[$thepos]; + $mods[$thepos] = $swap; + + $newsequence = implode(",", $mods); + if (! set_field("course_sections", "sequence", $newsequence, "id", $thissection->id)) { + error("This section could not be updated"); + } + return true; + } + } +} + +function make_editing_buttons($mod, $absolute=false, $moveselect=true, $indent=-1) { + global $CFG, $THEME; static $str; - static $sesskey; if (!isset($str)) { $str->delete = get_string("delete"); @@ -1651,198 +1675,89 @@ function make_editing_buttons($mod, $absolute=false, $moveselect=true, $indent=- $str->groupsnone = get_string("groupsnone"); $str->groupsseparate = get_string("groupsseparate"); $str->groupsvisible = get_string("groupsvisible"); - $sesskey = sesskey(); - } - - if ($section >= 0) { - $section = '&sr='.$section; // Section return - } else { - $section = ''; } if ($absolute) { - $path = $CFG->wwwroot.'/course'; + $path = "$CFG->wwwroot/course"; } else { - $path = '.'; + $path = "."; + } + + if (empty($THEME->custompix)) { + $pixpath = "$path/../pix"; + } else { + $pixpath = "$path/../theme/$CFG->theme/pix"; } if ($mod->visible) { - $hideshow = ' '; + $hideshow = "hide\" href=\"$path/mod.php?hide=$mod->id\">hide\"> "; } else { - $hideshow = ' '; + $hideshow = "show\" href=\"$path/mod.php?show=$mod->id\">show\"> "; } if ($mod->groupmode !== false) { if ($mod->groupmode == SEPARATEGROUPS) { $grouptitle = $str->groupsseparate; - $groupimage = $CFG->pixpath.'/t/groups.gif'; - $grouplink = $path.'/mod.php?id='.$mod->id.'&groupmode=0&sesskey='.$sesskey; + $groupimage = "$pixpath/t/groups.gif"; + $grouplink = "$path/mod.php?id=$mod->id&groupmode=0"; } else if ($mod->groupmode == VISIBLEGROUPS) { $grouptitle = $str->groupsvisible; - $groupimage = $CFG->pixpath.'/t/groupv.gif'; - $grouplink = $path.'/mod.php?id='.$mod->id.'&groupmode=1&sesskey='.$sesskey; + $groupimage = "$pixpath/t/groupv.gif"; + $grouplink = "$path/mod.php?id=$mod->id&groupmode=1"; } else { $grouptitle = $str->groupsnone; - $groupimage = $CFG->pixpath.'/t/groupn.gif'; - $grouplink = $path.'/mod.php?id='.$mod->id.'&groupmode=2&sesskey='.$sesskey; + $groupimage = "$pixpath/t/groupn.gif"; + $grouplink = "$path/mod.php?id=$mod->id&groupmode=2"; } if ($mod->groupmodelink) { - $groupmode = ''. - ''.$grouptitle.''; + $groupmode = "clicktochange)\" href=\"$grouplink\">". + "\"$grouptitle\""; } else { - $groupmode = ''.$grouptitle.''; + $groupmode = "forcedmode)\" ". + " src=\"$groupimage\" hspace=\"2\" height=\"11\" width=\"11\" ". + "border=\"0\" alt=\"$grouptitle\">"; } } else { $groupmode = ""; } if ($moveselect) { - $move = ''; + $move = "move\" href=\"$path/mod.php?copy=$mod->id\">move\">"; } else { - $move = ''. - ''; + $move = "moveup\" href=\"$path/mod.php?id=$mod->id&move=-1\">moveup\">". + "movedown\" href=\"$path/mod.php?id=$mod->id&move=1\">movedown\">"; } $leftright = ""; if ($indent > 0) { - $leftright .= ''; + $leftright .= "moveleft\" href=\"$path/mod.php?id=$mod->id&indent=-1\">moveleft\">"; } if ($indent >= 0) { - $leftright .= ''; + $leftright .= "moveright\" href=\"$path/mod.php?id=$mod->id&indent=1\">moveright\">"; } - return ''.$leftright.$move. - ''. - ''.$hideshow.$groupmode.''; + return "$leftright$move". + "update\" href=\"$path/mod.php?update=$mod->id\">update\">". + // Following line is commented out until this feature is more definite -- martin + // "duplicate\" href=\"$path/mod.php?duplicate=$mod->id\"> 2 ". + "delete\" href=\"$path/mod.php?delete=$mod->id\">delete\">$hideshow$groupmode"; } -/** - * given a course object with shortname & fullname, this function will - * truncate the the number of chars allowed and add ... if it was too long - */ -function course_format_name ($course,$max=100) { - - $str = $course->shortname.': '.$course->fullname; - if (strlen($str) <= $max) { - return $str; - } - else { - return substr($str,0,$max-3).'...'; - } -} - -/** - * This function will return true if the given course is a child course at all - */ -function course_in_meta ($course) { - return record_exists("course_meta","child_course",$course->id); -} - - -/** - * Print standard form elements on module setup forms in mod/.../mod.html - */ -function print_standard_coursemodule_settings($form) { - if (! $course = get_record('course', 'id', $form->course)) { - error("This course doesn't exist"); - } - print_groupmode_setting($form, $course); - print_visible_setting($form, $course); -} - -/** - * Print groupmode form element on module setup forms in mod/.../mod.html - */ -function print_groupmode_setting($form, $course=NULL) { - - if (empty($course)) { - if (! $course = get_record('course', 'id', $form->course)) { - error("This course doesn't exist"); - } - } - if ($form->coursemodule) { - if (! $cm = get_record('course_modules', 'id', $form->coursemodule)) { - error("This course module doesn't exist"); - } - } else { - $cm = null; - } - $groupmode = groupmode($course, $cm); - if ($course->groupmode or (!$course->groupmodeforce)) { - echo '
    '.get_string('groupmode').':'; - unset($choices); - $choices[NOGROUPS] = get_string('groupsnone'); - $choices[SEPARATEGROUPS] = get_string('groupsseparate'); - $choices[VISIBLEGROUPS] = get_string('groupsvisible'); - choose_from_menu($choices, 'groupmode', $groupmode, '', '', 0, false, $course->groupmodeforce); - helpbutton('groupmode', get_string('groupmode')); - echo '
    '.get_string('visibletostudents','',moodle_strtolower($course->students)).':'; - unset($choices); - $choices[1] = get_string('show'); - $choices[0] = get_string('hide'); - choose_from_menu($choices, 'visible', $visible, '', '', 0, false, $hiddensection); - echo '
    "; + echo "
    "; echo ""; echo "
    $stractivityreport:
    "; @@ -56,18 +56,18 @@ $section = $sections[$i]; if ($section->sequence) { - echo "
    "; - echo "

    "; + echo "
    "; + echo "

    "; switch ($course->format) { case "weeks": print_string("week"); break; case "topics": print_string("topic"); break; default: print_string("section"); break; } - echo " $i

    "; + echo " $i"; - echo "
      "; + echo "
        "; - echo ""; + echo "
        "; $sectionmods = explode(",", $section->sequence); foreach ($sectionmods as $sectionmod) { @@ -92,10 +92,10 @@ print_outline_row($mod, $instance, $result); } - echo "
        "; + echo "
    "; print_simple_box_end(); - echo ""; + echo ""; } } } @@ -104,27 +104,27 @@ function print_outline_row($mod, $instance, $result) { - $image = "modname/icon.gif\" height=\"16\" width=\"16\" alt=\"$mod->modfullname\" />"; + $image = "modname/icon.gif\" HEIGHT=16 WIDTH=16 ALT=\"$mod->modfullname\">"; - echo ""; - echo "$image"; - echo ""; - echo " modfullname\""; - echo " href=\"../mod/$mod->modname/view.php?id=$mod->id\">$instance->name"; - echo "   "; - echo ""; + echo ""; + echo "$image"; + echo ""; + echo " modfullname\""; + echo " HREF=\"../mod/$mod->modname/view.php?id=$mod->id\">$instance->name"; + echo "   "; + echo ""; if (isset($result->info)) { echo "$result->info"; } else { - echo "

    -

    "; + echo "

    -

    "; } - echo ""; - echo "   "; + echo ""; + echo "   "; if (isset($result->time)) { $timeago = format_time(time() - $result->time); - echo "".userdate($result->time)." ($timeago)"; + echo "".userdate($result->time)." ($timeago)"; } - echo ""; + echo ""; } ?> diff --git a/course/quickreport.php b/course/quickreport.php new file mode 100644 index 00000000000..865536c0c78 --- /dev/null +++ b/course/quickreport.php @@ -0,0 +1,365 @@ +name)){ + $modnames[$nowmod->id] = $nowmod->name; + } +} +//needed for cases when a particular module type needs special treatment (assignment,forum) +$modname_value = array_flip($modnames); + + require_variable($id); // course id + optional_variable($download, ""); // to download data + + require_login(); + + if (! $course = get_record("course", "id", $id)) { + error("Course ID was incorrect"); + } + +//take each event and create an array type/event/user hierarchy +//we need to get the entire list of enrolled students for the course so that we can list by student + + if (isteacher($course->id)) { + $isstudent = 0; + } elseif (isstudent($course->id)) { + $isstudent = 1; + } else { + error("You are not registered for this course"); + } + + $courseid = $course->id; + //Get the ids of all course users + $allusers = quick_findusers($course->id); + //Get all postings from this course's users + $allposts = quick_findposts($course->id); + //count posts per user by looping thru $allposts and put counts in $post_counts + foreach ($allposts as $thispost){ + $post_counts[$thispost->forumid][$thispost->userid]++; + } + $allmods = quick_moduleorder($course->id); +//Now take all mods and build an object $mod_info for only those modules that will be reported +//Concurrently build a $mods_week array that says how many columns will be in the header per week + + $modcount = -1; + foreach($allmods as $thismod){ + $modcount++; + //get the info on this module from course_modules + $nowmod = get_record("course_modules","id",$thismod[mod]); + $noworder = get_record("course_sections","id",$nowmod->section); + + //only add to array the module is contained in the $modnames array + if ($modnames[$nowmod->module]){ + //section is the entry in course_sections which says which instances + ///reside in the section and which week/section they are in + $mod_info[$modcount][section] = $nowmod->section; + //module is the type of module (assignment, forum, etc.) + $mod_info[$modcount][module] = $nowmod->module; + //modid is the id of the module in "course_modules" table + $mod_info[$modcount][modid] = $nowmod->id; + //week is the current week/section that the module resides in + $mod_info[$modcount][week] = $noworder->section; + //instance in the relevant module table will yield the name + $mod_info[$modcount][instance] = $nowmod->instance; + //Count how many instances in each week for colspan purposes + if ($mods_week[$noworder->section]){ + $mods_week[$noworder->section]++; + } else { + $mods_week[$noworder->section] = 1; + } + //Now add the name of the module to $mods_info + $mod_info[$modcount][name] = get_field($modnames[$nowmod->module],"name","id",$nowmod->instance); + } else { + $modcount--; + } + } + + //Catalog by user all activity for every module + //This will include modules to be ignored later, but it is easier this way + //Data for each user can be retrieved by matching$rec->name with $mod_info name(created above) + //Create a comma-delimited string in $user_data with the IDs of each user in an array of mod type(module) + modid + foreach ($modnames as $nowtype => $nowname){ + $now_module = $nowname; + $now_user_table = $quick_dataloc[$now_module][0]; //name of table containing individual user records + $now_pointer = $quick_dataloc[$now_module][1]; // the field in above with pointer to table with name of activity + // Now set up a table for each separate instance of the module with a listing of the users + $allrecs = quick_findrecs($now_module,$now_user_table,$now_pointer,$course->id); + if ($allrecs) { + foreach ($allrecs as $rec){ + $np = $rec->instance; + if ($nowname == "assignment"){ + // For assignments, a record is created for all students when the assmt is created + //the timemodified is 0 until the student submits an assignment + if ($rec->timemodified != 0) { + $user_data[$nowtype][$np] = $user_data[$nowtype][$np] . ",$rec->userid,"; + } + } else { + $user_data[$nowtype][$np] = $user_data[$nowtype][$np] . ",$rec->userid,"; + } + } + } + } + if ($allposts) { + foreach ($allposts as $rec){ + $forumval = $modname_value["forum"]; + $user_data[$forumval][$rec->forumid] = $user_data[$forumval][$rec->forumid] . ",$rec->userid,"; +// echo "
    " . $rec->forumid . $rec->name . "
    "; + } + } + + //now go through the $mod_info array in order of the users, and find whether each user contributed, put in $user_contribs + foreach($allusers as $user){ + $uid = $user->id; + foreach ($mod_info as $thismod){ + if(strlen($user_data[$thismod[module]][$thismod[instance]]) < 2){ + $user_contribs[$uid][] = "-"; + continue; + } + //For forums count the number of contributions. For others, just "x" or "-"; + if ($thismod[module] == $modname_value["forum"]) { + $puid = $post_counts[$uid]; + if ($post_counts[$thismod[instance]][$uid] > 0){ + $user_contribs[$uid][] = $post_counts[$thismod[instance]][$uid]; + } else { + $user_contribs[$uid][] = "-"; + } + } else { + //see if "comma+userid+comma " exists + $sstring = ",$user->id,"; + if(strpos($user_data[$thismod[module]][$thismod[instance]],$sstring)> -1){ + $user_contribs[$uid][] = "X"; + }else { + $user_contribs[$uid][] = "-"; + } + } + } + } + +//if Excel spreadsheet requested + if ($download == "xls") { + require_once("$CFG->libdir/excel/Worksheet.php"); + require_once("$CFG->libdir/excel/Workbook.php"); + header("Content-type: application/vnd.ms-excel"); + header("Content-Disposition: attachment; filename=$course->shortname"."_quickreport.xls"); + header("Expires: 0"); + header("Cache-Control: must-revalidate, post-check=0,pre-check=0"); + header("Pragma: public"); + $workbook = new Workbook("-"); + // Creating the first worksheet + $myxls = &$workbook->add_worksheet('Quick Report'); + $myxls->write_string(0,0,$quiz->name); + $myxls->set_column(0,0,25); + $formaty =& $workbook->add_format(); + $formaty->set_bg_color('yellow'); + $formatyc =& $workbook->add_format(); + $formatyc->set_bg_color('yellow'); + $formatyc->set_bold(1); + $formatyc->set_align('center'); + $formatc =& $workbook->add_format(); + $formatc->set_align('center'); + $formatb =& $workbook->add_format(); + $formatb->set_bold(1); + + $row = 1; + $col = 2; + /// Print names of all the fields + ///First labels to show week/section + if ($course->format == "weeks") {$formatname = "Week";} else {$formatname = "Section";} + foreach($mods_week as $week=>$wkcount){ + for ($i = 0; $i < $wkcount;$i++) { + $col++; + $col_label = "$formatname $week"; + $myxls->write_string($row,$col,$col_label,$formatb); + } + } + //now labels for module names + $row++; + $col=0; + $myxls->write_string($row,$col,"Student",$formatb); + $col++; + $myxls->write_string($row,$col,"Picture",$formatb); + $col++; + $myxls->write_string($row,$col,"Profile",$formatb); + + //get the names of each module instance and put in header + foreach($mod_info as $thiscat=>$thismod){ + $modname = ucwords($modnames[$thismod[module]]); + $col++; + $col_label = "$modname $thismod[name]"; + $myxls->write_string($row,$col,$col_label,$formatb); + } + + /// Print all the user data + $row++; + foreach ($user_contribs as $userid=>$thisuser){ + $row++; + $col=0; + $fullname = ucwords($allusers[$userid]->lastname) . ", " . ucwords($allusers[$userid]->firstname); + $myxls->write_string($row,$col,$fullname,$formatb); + $col++; + if($allusers[$userid]->picture){ + $myxls->write_string($row,$col,"X",$formatc); + } else { + $myxls->write_string($row,$col,"-",$formatc); + } + $col++; + if (strlen($allusers[$userid]->description) > 10) { + $myxls->write_string($row,$col,"X",$formatc); + } else { + $myxls->write_string($row,$col,"-",$formatc); + } + foreach ($thisuser as $thismod) { + $col++; + $myxls->write_string($row,$col,$thismod,$formatc); + } + } + $workbook->close(); + exit; + } + + quick_headers($course); + $quick_bgcount = 0; + echo ""; + //printer header line with weeks + $options["id"] = $course->id; + $options["download"] = "xls"; + print ( ""); + if ($course->format == "weeks") {$formatname = "Week";} else {$formatname = "Section";} + foreach($mods_week as $week=>$wkcount){ + print ""; + } + echo ""; + //get the names of each module instance and put in header + foreach($mod_info as $thiscat=>$thismod){ + $modname = ucwords($modnames[$thismod[module]]); + print (""); + } + echo "\n"; + foreach ($user_contribs as $userid=>$thisuser){ + $quick_bgcount++; + if ($quick_bgcount%3 == 0) { + echo ""; + } else { + echo ""; + } + $fullname = ucwords($allusers[$userid]->lastname) . ", " . ucwords($allusers[$userid]->firstname); + if (!$isstudent){ + $fullname = "id&user=$userid>$fullname"; + } + echo ""; + $picture = print_user_picture($userid, $course->id, $allusers[$userid]->picture, false, true); + echo ""; + if (strlen($allusers[$userid]->description) > 10) {quick_show("X");} else {quick_show("-");} + foreach ($thisuser as $thismod) { + quick_show($thismod); + } + echo "\n"; + } + echo "
    "); + print_single_button("quickreport.php", $options, get_string("downloadexcel")); + print ("$formatname $week
    StudentPictureProfile $modname
    $thismod[name]
    $fullname" . $picture . "
    \n"; + + print_footer($course); + + +function quick_findusers($courseid){ + global $CFG,$USER,$isstudent; + if ($isstudent){ + $studcondition = "AND a.id = $USER->id"; + } else { + $studcondition = ""; + } + $allusers = get_records_sql("SELECT a.id,a.lastname, a.firstname,a.picture,a.description,b.course + FROM {$CFG->prefix}user a, + {$CFG->prefix}user_students b + WHERE b.course = $courseid AND + b.userid = a.id $studcondition + ORDER BY a.lastname ASC, a.firstname ASC"); + + return $allusers; +} + +function quick_findrecs($tbl1,$tbl2,$pointer,$courseid){ + global $CFG; + $allrecs = get_records_sql("SELECT b.id,a.id, c.id,c.lastname, c.firstname,a.course,a.name ,b.userid,b.timemodified, b.$pointer as instance + FROM {$CFG->prefix}$tbl1 a, + {$CFG->prefix}$tbl2 b, + {$CFG->prefix}user c, + {$CFG->prefix}course_modules d + WHERE a.course = $courseid AND + a.id = b.$pointer AND + c.id = b.userid AND + d.instance = b.$pointer"); +/// ORDER BY e.section ASC +// print("

    All records: $tbl1

    "); +// print_object($allrecs); + return $allrecs; +} + +function quick_findposts($courseid){ + global $CFG; + //this will allow records to be identified by Forum but not by thread (no b.id) + $allposts = get_records_sql("SELECT + c.id, c.userid,a.id as forumid,a.name + FROM {$CFG->prefix}forum a, + {$CFG->prefix}forum_discussions b, + {$CFG->prefix}forum_posts c + WHERE b.course = $courseid AND + a.id = b.forum AND + c.discussion = b.id + ORDER BY forumid ASC"); + return $allposts; +} + +function quick_moduleorder($courseid){ +//using course_sections which gives the sections & sequence, build an array with each section + item pair +// echo "
    Course= " . $courseid . "
    "; + $allmods = get_records("course_sections","course",$courseid,"section","id,section,sequence"); +// print_object($allmods); +// $modsequence + foreach ($allmods as $thisweek){ +// print_object($thisweek); + if ($thisweek->sequence){ +// print ("$thisweek->sequence"); + $weeklist = explode(",",$thisweek->sequence); + foreach($weeklist as $activity){ + $all_list[] =array("mod"=>$activity,"sec"=>$thisweek->section); + } +// print_object($weeklist); + } else { +// print ("
    No modules this week
    "); + } + } + return $all_list; +} + +function quick_headers($course){ + global $CFG; + print_header("$course->shortname: 'Quick Report'", "$course->fullname", + "wwwroot/course/view.php?id=$course->id\">$course->shortname + -> 'Quick Report'"); +} + +function quick_show($x){ + echo ""; + print ("$x"); + echo ""; +} +?> diff --git a/course/recent.php b/course/recent.php index 24d2c125642..d161da0adc0 100644 --- a/course/recent.php +++ b/course/recent.php @@ -1,4 +1,4 @@ -".user_login_string($course, $USER)."

    "; if (!empty($_GET['chooserecent'])) { @@ -34,7 +33,7 @@ } $userinfo = fullname($u); } - if ($date) + if ($date) $dateinfo = userdate($date, get_string("strftimedaydate")); if ($course->category) { @@ -110,7 +109,7 @@ } else { // you chose a group of activities - if (isteacher($course->id)) { + if (isteacher($user)) { $hiddenfilter = ""; } else { $hiddenfilter = " AND cs.visible = '1' "; @@ -126,7 +125,7 @@ if (!empty($sections)) { - echo "
    "; + echo "
    "; $i = 0; if (!empty($filter)) { @@ -135,7 +134,7 @@ $activityfilter = ""; } - if (isteacher($course->id)) { + if (isteacher($user)) { $hiddenfilter = ""; } else { $hiddenfilter = " AND cm.visible = '1' "; @@ -144,7 +143,6 @@ foreach ($sections as $section) { if ($i <= $course->numsections) { - $activity = new Object; $activity->type = "section"; if ($i) { $activity->name = $sectiontitle . " $i"; @@ -174,32 +172,31 @@ AND m.id = cm.module $activityfilter AND cm.id = '$sectionmod'"); - $groupmode = groupmode($course, $coursemod); + $groupmode = groupmode($course, $coursemod); switch ($groupmode) { case SEPARATEGROUPS : $groupid = mygroupid($course->id); break; - case VISIBLEGROUPS : + case VISIBLEGROUPS : if ($selectedgroup == "allgroups") { $groupid = ""; } else { $groupid = $selectedgroup; - } + } break; case NOGROUPS : default : $groupid = ""; - } + } $libfile = "$CFG->dirroot/mod/$coursemod->name/lib.php"; - + if (file_exists($libfile)) { require_once($libfile); $get_recent_mod_activity = $coursemod->name."_get_recent_mod_activity"; if (function_exists($get_recent_mod_activity)) { - $activity = new Object; $activity->type = "activity"; $activity->name = $instance->name; $activity->visible = $coursemod->visible; - $activity->content->modfullname = $mod->modfullname; + $activity->content->fullname = $mod->modfullname; $activity->content->modname = $mod->modname; $activity->content->modid =$mod->id; $activities[$index] = $activity; @@ -216,9 +213,9 @@ switch ($sortby) { case "datedesc" : usort($activities, "compare_activities_by_time_desc"); break; case "dateasc" : usort($activities, "compare_activities_by_time_asc"); break; - case "default" : + case "default" : default : $detail = false; $sortby = "default"; - + } if (!empty($activities)) { @@ -231,7 +228,7 @@ $section = 0; - if (isteacher($course->id)) { + if (isteacher($user)) { $teacher = true; } else { $teacher = false; @@ -242,8 +239,8 @@ // peak at next activity. If it's another section, don't print this one! // this means there are no activities in the current section - if (($activity->type == "section") && - (($activity_count == ($key + 1)) || + if (($activity->type == "section") && + (($activity_count == ($key + 1)) || ($activities[$key+1]->type == "section"))) { continue; @@ -268,22 +265,22 @@ $linkformat = ''; } $image = "modpixpath/" . $activity->content->modname . "/icon.gif\"" . - "height=\"16\" width=\"16\" alt=\"" . $activity->content->modfullname . "\" />"; - echo ""; } } else { - + if (!$inbox) { print_simple_box_start("center", "90%"); $inbox = true; } - + $print_recent_mod_activity = $activity->type."_print_recent_mod_activity"; - + if (function_exists($print_recent_mod_activity)) { echo '
        '; $print_recent_mod_activity($activity, $course->id, $detail); diff --git a/course/scales.php b/course/scales.php index 9fefb77de58..3531dc553a1 100644 --- a/course/scales.php +++ b/course/scales.php @@ -1,4 +1,4 @@ -name)) { $errors[$scaleid]->name = true; @@ -101,8 +98,8 @@ error("Scale ID was incorrect"); } - // $scales_course_uses = course_scale_used($course->id,$scale->id); - // $scales_site_uses = site_scale_used($scale->id,$courses); + $scales_course_uses = course_scale_used($course->id,$scale->id); + $scales_site_uses = site_scale_used($scale->id); $scalemenu = make_menu_from_list($scale->scale); print_header("$course->shortname: $strscales", "$course->fullname", @@ -127,9 +124,6 @@ //If action is edit or new, show the form if ($action == "edit" || $action == "new") { - - $sesskey = !empty($USER->id) ? $USER->sesskey : ''; - //Check for teacher edit if (! isteacheredit($course->id)) { error("Only editing teachers can modify scales !"); @@ -149,7 +143,7 @@ //Calculate the uses if ($scale->courseid == 0) { - $scale_uses = site_scale_used($scale->id,$courses); + $scale_uses = site_scale_used($scale->id); } else { $scale_uses = course_scale_used($course->id,$scale->id); } @@ -182,37 +176,37 @@ $scale->description = $form->description; } echo "
        id\">"; - echo ""; - echo ""; + echo "
        "; + echo ""; if (!empty($errors[$scale->id]->name)) { $class = "class=\"highlight\""; } else { $class = ""; } - echo ""; - echo ""; + echo ""; echo ""; - echo ""; + echo ""; if (!empty($errors[$scale->id]->scalescale)) { $class = "class=\"highlight\""; } else { $class = ""; } - echo ""; - echo ""; + echo ""; echo ""; - echo ""; - echo ""; + echo ""; - echo ""; echo ""; echo ""; if ($scale->id) { - echo ""; + echo ""; echo ""; echo ""; } echo ""; - echo "
        $strname:name)."\" />"; + echo "

        $strname:

        name)."\">"; echo "
        $strscale:"; + echo "

        $strscale:

        "; echo "
        $strdescription:"; + echo "

        $strdescription:

        "; helpbutton("text", $strhelptext); echo "
        "; + echo ""; echo "
        "; echo "".get_string("usedinnplaces","",$scale_uses); @@ -220,13 +214,12 @@ echo "
        "; - echo "id\" />"; - echo ""; - echo "courseid\" />"; - echo "id\" />"; - echo ""; - echo ""; + echo ""; + echo "id\">"; + echo "courseid\">"; + echo "id\">"; + echo ""; + echo ""; echo "
        "; echo "
        "; echo "
        "; @@ -237,7 +230,7 @@ } //If action is delete, do it - if ($action == "delete" and confirm_sesskey()) { + if ($action == "delete") { //Check for teacher edit if (! isteacheredit($course->id)) { error("Only editing teachers can delete scales !"); @@ -249,7 +242,7 @@ //Calculate the uses if ($scale->courseid == 0) { - $scale_uses = site_scale_used($scale->id,$courses); + $scale_uses = site_scale_used($scale->id); } else { $scale_uses = course_scale_used($course->id,$scale->id); } @@ -270,7 +263,7 @@ } //If action is down or up, do it - if (($action == "down" || $action == "up") and confirm_sesskey()) { + if ($action == "down" || $action == "up" ) { //Check for teacher edit if (! isadmin()) { error("Only administrators can move scales",$CFG->wwwroot.'/course/scales.php?id='.$course->id); @@ -282,7 +275,7 @@ //Calculate the uses if ($scale->courseid == 0) { - $scale_uses = site_scale_used($scale->id,$courses); + $scale_uses = site_scale_used($scale->id); } else { $scale_uses = course_scale_used($course->id,$scale->id); } @@ -384,7 +377,7 @@ /// Print out the main page print_header("$course->shortname: $strscales", "$course->fullname", - "id\">$course->shortname + "id\">$course->shortname -> $strscales"); print_heading_with_help($strscales, "scales"); @@ -422,6 +415,12 @@ if ($scales) { //Calculate the base path $path = "$CFG->wwwroot/course"; + //Calculate pixpath + if (empty($THEME->custompix)) { + $pixpath = "$path/../pix"; + } else { + $pixpath = "$path/../theme/$CFG->theme/pix"; + } $data = array(); $incustom = true; @@ -433,11 +432,11 @@ $data[] = $line; } $line = array(); - $line[] = "name\" href=\"$CFG->wwwroot/course/scales.php?id=$course->id&scaleid=$scale->id&action=details\" "."onclick=\"return openpopup('/course/scales.php?id=$course->id\&scaleid=$scale->id&action=details', 'scale', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);\">".$scale->name."
        ".str_replace(",",", ",$scale->scale).""; + $line[] = "name\" href=\"$CFG->wwwroot/course/scales.php?id=$course->id&scaleid=$scale->id&action=details\" "."onClick=\"return openpopup('/course/scales.php?id=$course->id\&scaleid=$scale->id&action=details', 'scale', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);\">".$scale->name."
        ".str_replace(",",", ",$scale->scale).""; if (!empty($scale->courseid)) { $scales_uses = course_scale_used($course->id,$scale->id); } else { - $scales_uses = site_scale_used($scale->id,$courses); + $scales_uses = site_scale_used($scale->id); } $line[] = $scales_uses; if ($incustom) { @@ -447,18 +446,18 @@ } $buttons = ""; if (empty($scales_uses) && ($incustom || isadmin())) { - $buttons .= "id&scaleid=$scale->id&action=edit\">pixpath/t/edit.gif\" hspace=\"2\" height=\"11\" width=\"11\" border=\"0\" alt=\"\" /> "; + $buttons .= "id&scaleid=$scale->id&action=edit\"> "; if ($incustom && isadmin()) { - $buttons .= "id&scaleid=$scale->id&action=down&sesskey=$USER->sesskey\">pixpath/t/down.gif\" hspace=\"2\" height=\"11\" width=\"11\" border=\"0\" alt=\"\" /> "; + $buttons .= "id&scaleid=$scale->id&action=down\"> "; } if (!$incustom && isadmin()) { - $buttons .= "id&scaleid=$scale->id&action=up&sesskey=$USER->sesskey\">pixpath/t/up.gif\" hspace=\"2\" height=\"11\" width=\"11\" border=\"0\" alt=\"\" /> "; + $buttons .= "id&scaleid=$scale->id&action=up\"> "; } - $buttons .= "id&scaleid=$scale->id&action=delete&sesskey=$USER->sesskey\">pixpath/t/delete.gif\" hspace=\"2\" height=\"11\" width=\"11\" border=\"0\" alt=\"\" /> "; + $buttons .= "id&scaleid=$scale->id&action=delete\"> "; } $line[] = $buttons; @@ -466,7 +465,7 @@ } $head = $strscale.",".$stractivities.",".$strtype.",".$stroptions; $table->head = explode(",",$head); - $size = "50%,20%,20%,10%"; + $size = "50%,20$,20%,10%"; $table->size = explode(",",$size); $align = "left,center,center,center"; $table->align = explode(",",$align); diff --git a/course/search.php b/course/search.php index 96d4cb56499..9a5d4843d62 100644 --- a/course/search.php +++ b/course/search.php @@ -1,4 +1,4 @@ -fullname = highlight("$search", $course->fullname); @@ -77,7 +77,7 @@ print_spacer(5,5); } - print_paging_bar($totalcount, $page, $perpage, "search.php?search=$search&perpage=$perpage&"); + print_paging_bar($totalcount, $page, $perpage, "search.php?search=$search&perpage=$perpage&"); } else { print_heading(get_string("nocoursesfound", "", $search)); diff --git a/course/student.html b/course/student.html index 0dea5eb9a15..af6f16a9d41 100644 --- a/course/student.html +++ b/course/student.html @@ -1,8 +1,7 @@
        - - - + + "; - echo ""; - echo ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; + echo ""; - echo ""; + echo ""; + echo ""; if (isset($result->time)) { $timeago = format_time(time() - $result->time); - echo ""; + echo ""; } - echo ""; + echo ""; } ?> diff --git a/course/view.php b/course/view.php index 943584b85ef..61d51dcc366 100644 --- a/course/view.php +++ b/course/view.php @@ -1,4 +1,4 @@ -libdir.'/blocklib.php'); - $id = optional_param('id', 0, PARAM_INT); - $name = optional_param('name'); - $edit = optional_param('edit'); - $idnumber = optional_param('idnumber'); + optional_variable($id); + optional_variable($name); - if (empty($id) && empty($name)) { + if (!$id and !$name) { error("Must specify course id or short name"); } - if (!empty($name)) { - if (! ($course = get_record('course', 'shortname', $name)) ) { - error('Invalid short course name'); - } - } else if (!empty($idnumber)) { - if (! ($course = get_record('course', 'idnumber', $idnumber)) ) { - error('Invalid course idnumber'); + if (!empty($_GET['name'])) { + if (! ($course = get_record("course", "shortname", $name)) ) { + error("That's an invalid short course name"); } } else { - if (! ($course = get_record('course', 'id', $id)) ) { - error('Invalid course id'); + if (! ($course = get_record("course", "id", $id)) ) { + error("That's an invalid course id"); } } require_login($course->id); - //If course is hosted on an external server, redirect to corresponding - //url with appropriate authentication attached as parameter - if (file_exists($CFG->dirroot ."/course/externservercourse.php")) { - include $CFG->dirroot ."/course/externservercourse.php"; - if (function_exists(extern_server_course)) { - if ($extern_url = extern_server_course($course)) { - redirect($extern_url); - } - } - } - require_once($CFG->dirroot.'/calendar/lib.php'); /// This is after login because it needs $USER add_to_log($course->id, "course", "view", "view.php?id=$course->id", "$course->id"); - $course->format = clean_param($course->format, PARAM_ALPHA); if (!file_exists($CFG->dirroot.'/course/format/'.$course->format.'/format.php')) { $course->format = 'weeks'; // Default format is weeks } - $PAGE = page_create_object(PAGE_COURSE_VIEW, $course->id); - $pageblocks = blocks_setup($PAGE); + // Doing this now so we can pass the results to block_action() + // and dodge the overhead of doing the same work twice. + + $blocks = $course->blockinfo; + $delimpos = strpos($blocks, ':'); + + if($delimpos === false) { + // No ':' found, we have all left blocks + $leftblocks = explode(',', $blocks); + $rightblocks = array(); + } + else if($delimpos === 0) { + // ':' at start of string, we have all right blocks + $blocks = substr($blocks, 1); + $leftblocks = array(); + $rightblocks = explode(',', $blocks); + } + else { + // Both left and right blocks + $leftpart = substr($blocks, 0, $delimpos); + $rightpart = substr($blocks, $delimpos + 1); + $leftblocks = explode(',', $leftpart); + $rightblocks = explode(',', $rightpart); + } if (!isset($USER->editing)) { $USER->editing = false; } - if ($PAGE->user_allowed_editing()) { - if ($edit == 'on') { - $USER->editing = true; - } else if ($edit == 'off') { - $USER->editing = false; - if(!empty($USER->activitycopy) && $USER->activitycopycourse == $course->id) { - $USER->activitycopy = false; - $USER->activitycopycourse = NULL; + $editing = false; + + if (isteacheredit($course->id)) { + if (isset($edit)) { + if ($edit == "on") { + $USER->editing = true; + } else if ($edit == "off") { + $USER->editing = false; } } - if (isset($hide) && confirm_sesskey()) { + $editing = $USER->editing; + + if (isset($hide)) { set_section_visible($course->id, $hide, '0'); } - if (isset($show) && confirm_sesskey()) { + if (isset($show)) { set_section_visible($course->id, $show, '1'); } + if (isset($_GET['blockaction'])) { + if (isset($_GET['blockid'])) { + block_action($course, $leftblocks, $rightblocks, strtolower($_GET['blockaction']), intval($_GET['blockid'])); + } + } + + // This has to happen after block_action() has possibly updated the two arrays + $allblocks = array_merge($leftblocks, $rightblocks); + + $missingblocks = array(); + $recblocks = get_records('blocks','visible','1'); + + // Note down which blocks are going to get displayed + blocks_used($allblocks, $recblocks); + + if($editing && $recblocks) { + foreach($recblocks as $recblock) { + // If it's not hidden or displayed right now... + if(!in_array($recblock->id, $allblocks) && !in_array(-($recblock->id), $allblocks)) { + // And if it's applicable for display in this format... + $formats = block_method_result($recblock->name, 'applicable_formats'); + + if( isset($formats[$course->format]) ? $formats[$course->format] : !empty($formats['all'])) { + // Translation: if the course format is explicitly accepted/rejected, use + // that setting. Otherwise, fallback to the 'all' format. The empty() test + // uses the trick that empty() fails if 'all' is either !isset() or false. + + // Add it to the missing blocks + $missingblocks[] = $recblock->id; + } + } + } + } + if (!empty($section)) { - if (!empty($move) and confirm_sesskey()) { + if (!empty($move)) { if (!move_section($course, $section, $move)) { notify("An error occurred while moving a section"); } @@ -86,17 +126,25 @@ } } else { $USER->editing = false; + + // Note down which blocks are going to get displayed + $allblocks = array_merge($leftblocks, $rightblocks); + $recblocks = get_records('blocks','visible','1'); + blocks_used($allblocks, $recblocks); } $SESSION->fromdiscussion = "$CFG->wwwroot/course/view.php?id=$course->id"; - if ($course->id == SITEID) { // This course is not a real course. + if (! $course->category) { // This course is not a real course. redirect("$CFG->wwwroot/"); } - $PAGE->print_header(get_string('course').': %fullname%'); + $strcourse = get_string("course"); - echo '
        '; // course wrapper start + $loggedinas = "

        ".user_login_string($course, $USER)."

        "; + + print_header("$strcourse: $course->fullname", "$course->fullname", "$course->shortname", + "", "", true, update_course_icon($course->id), $loggedinas); get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused); @@ -120,9 +168,28 @@ } } + // If the block width cache is not set, set it + if(!isset($SESSION->blockcache->width->{$course->id}) || $editing) { + + // This query might be optimized away if we 're in editing mode + if(!isset($recblocks)) { + $recblocks = get_records('blocks','visible','1'); + } + $preferred_width_left = blocks_preferred_width($leftblocks, $recblocks); + $preferred_width_right = blocks_preferred_width($rightblocks, $recblocks); + + // This may be kind of organizational overkill, granted... + // But is there any real need to simplify the structure? + $SESSION->blockcache->width->{$course->id}->left = $preferred_width_left; + $SESSION->blockcache->width->{$course->id}->right = $preferred_width_right; + } + else { + $preferred_width_left = $SESSION->blockcache->width->{$course->id}->left; + $preferred_width_right = $SESSION->blockcache->width->{$course->id}->right; + } + require("$CFG->dirroot/course/format/$course->format/format.php"); // Include the actual course format - echo '
        '; // content wrapper end print_footer(NULL, $course); ?> diff --git a/doc/contents.php b/doc/contents.php index 243b5201039..f101a467ab4 100755 --- a/doc/contents.php +++ b/doc/contents.php @@ -5,8 +5,7 @@ if (! $info = document_file("files.php", false)) { error("404 - File Not Found"); } - - $string = array(); + if ($CFG->forcelogin) { require_login(); } @@ -14,25 +13,14 @@ include($info->filepath); print_header(); - - $ulopen = false; - + foreach ($string as $file => $filename) { - if (substr($file,0,1) == "-") { - if($ulopen) { - echo ''; - } - echo '

        '.$filename.'

        '; - } - - // Sloppy way to produce valid markup... there should be a print_footer_minimal(). - echo ''; ?> diff --git a/doc/index.php b/doc/index.php index da7bf50def4..46be9c27425 100644 --- a/doc/index.php +++ b/doc/index.php @@ -2,14 +2,19 @@ require("../config.php"); - $file = optional_param('file', "", PARAM_FILE); // docs file to view straight - $frame = optional_param('frame', "", PARAM_FILE); // docs file to view in frame - $sub = optional_param('sub', "", PARAM_CLEAN); // sub-section (named anchor) + optional_variable($file, ""); // docs file to view + optional_variable($frame, ""); // docs file to view + optional_variable($sub, ""); // sub-section (named anchor) + optional_variable($lang, ""); // override current language if ($CFG->forcelogin) { require_login(); } + if (!empty($lang)) { + $SESSION->lang = $lang; + } + if (!empty($sub)) { $sub = "#$sub"; } else { diff --git a/doc/install.html b/doc/install.html index 31d14d5b299..2716a0d69cf 100755 --- a/doc/install.html +++ b/doc/install.html @@ -84,8 +84,8 @@

        Here is a quick summary of the contents of the Moodle folder, to help get you oriented:

        -

        config.php - the ONLY file you need to edit to get started
        - version.php - defines the current version of Moodle code
        +

        config.php - the ONLY file you need to edit to get started
        + version.php - defines the current version of Moodle code
        index.php - the front page of the site

        • admin/ - code to administrate the whole server
        • diff --git a/enrol/database/config.html b/enrol/database/config.html index 089eee6c99b..847f8270693 100644 --- a/enrol/database/config.html +++ b/enrol/database/config.html @@ -1,15 +1,11 @@
        @@ -18,7 +17,7 @@ id\" type=\"hidden\" value=\"1\" />$stryes"; + $editall = "id\" type=\"hidden\" value=\"1\">$stryes"; } else { $editall = choose_from_menu ($editmenu, "e$teacher->id", $teacher->editall, "", "", "", true); } - $removelink = "id&remove=$teacher->id&sesskey=$USER->sesskey\">$strremoveteacher"; + $removelink = "id&remove=$teacher->id\">$strremoveteacher"; if (!$teacher->role) { $teacher->role = $course->teacher; } $table->data[] = array ($picture, fullname($teacher, true), $authority, - "id\" value=\"$teacher->role\" size=\"30\" />", + "id\" value=\"$teacher->role\" size=30>", $editall, $removelink); } $teacherlist = implode(",",$teacherarray); unset($teacherarray); print_table($table); - echo "id\" />"; - echo "sesskey\" />"; - echo "
        "; + echo "id\">"; + echo "
        "; echo "
        "; echo ""; echo "
        "; @@ -181,15 +179,15 @@ $usercount = get_users(false, $search, true, $teacherlist); if ($usercount == 0) { - echo "

        $strnopotentialteachers

        "; + echo "

        $strnopotentialteachers

        "; } else if ($usercount > MAX_USERS_PER_PAGE) { - echo "

        $strtoomanytoshow ($usercount)

        "; + echo "

        $strtoomanytoshow ($usercount)

        "; } else { if ($search) { - echo "

        ($strsearchresults : $search)

        "; + echo "

        ($strsearchresults : $search)

        "; } if (!$users = get_users(true, $search, true, $teacherlist)) { @@ -203,7 +201,7 @@ foreach ($users as $user) { - $addlink = "id&add=$user->id&sesskey=$USER->sesskey\">$straddteacher"; + $addlink = "id&add=$user->id\">$straddteacher"; $picture = print_user_picture($user->id, $course->id, $user->picture, false, true); $table->data[] = array ($picture, fullname($user, true), $user->email, $addlink); } @@ -212,14 +210,14 @@ if ($search or $usercount > MAX_USERS_PER_PAGE) { echo "
        "; - echo "
        "; - echo "id\" />"; - echo ""; - echo ""; + echo ""; + echo "id\">"; + echo ""; + echo ""; echo "
        "; echo "
        "; } - print_footer($course); + print_footer(); ?> diff --git a/course/unenrol.php b/course/unenrol.php index a8693227490..d3927dcb8ef 100644 --- a/course/unenrol.php +++ b/course/unenrol.php @@ -1,4 +1,4 @@ -id, $course->id)) { error("An error occurred while trying to unenrol you."); @@ -48,7 +48,7 @@ $strunenrol = get_string("unenrol"); print_header("$course->shortname: $strunenrol", "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname -> $strunenrol"); + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> $strunenrol"); if ($user->id == $USER->id) { $strunenrolsure = get_string("unenrolsure", "", get_string("yourself")); @@ -56,8 +56,8 @@ $strunenrolsure = get_string("unenrolsure", "", fullname($user, true)); } - notice_yesno ($strunenrolsure, "unenrol.php?id=$id&user=$user->id&confirm=yes&sesskey=$USER->sesskey", "$HTTP_REFERER"); + notice_yesno ($strunenrolsure, "unenrol.php?id=$id&user=$user->id&confirm=yes", "$HTTP_REFERER"); - print_footer($course); + print_footer(); ?> diff --git a/course/user.php b/course/user.php index 1c2d42750d3..692a0ce4975 100644 --- a/course/user.php +++ b/course/user.php @@ -1,4 +1,4 @@ -id, "course", "user report", "user.php?id=$course->id&user=$user->id&mode=$mode", "$user->id"); + add_to_log($course->id, "course", "user report", "user.php?id=$course->id&user=$user->id&mode=$mode", "$user->id"); $stractivityreport = get_string("activityreport"); $strparticipants = get_string("participants"); @@ -40,43 +40,47 @@ if ($course->category) { print_header("$course->shortname: $stractivityreport ($mode)", "$course->fullname", - "id\">$course->shortname -> - id\">$strparticipants -> - id&course=$course->id\">$fullname -> + "id\">$course->shortname -> + id\">$strparticipants -> + id&course=$course->id\">$fullname -> $stractivityreport -> $strmode"); } else { print_header("$course->shortname: $stractivityreport ($mode)", "$course->fullname", - "id&course=$course->id\">$fullname -> + "id&course=$course->id\">$fullname -> $stractivityreport -> $strmode"); } + print_heading($fullname); + echo ""; + echo ""; -/// Print tabs at top -/// This same call is made in: -/// /user/view.php -/// /user/edit.php -/// /course/user.php - $currenttab = $mode; - include($CFG->dirroot.'/user/tabs.php'); - + foreach ($modes as $listmode) { + $strmode = get_string($listmode); + if ($mode == $listmode) { + echo ""; + } else { + echo ""; + } + } + echo "
        $stractivityreport: $strmodeid&user=$user->id&mode=$listmode>$strmode
        "; get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused); switch ($mode) { case "todaylogs" : - echo '
        '; + echo "
        "; print_log_graph($course, $user->id, "userday.png"); - echo '
        '; + echo "
        "; print_log($course, $user->id, usergetmidnight(time()), "l.time DESC", $page, $perpage, - "user.php?id=$course->id&user=$user->id&mode=$mode"); + "user.php?id=$course->id&user=$user->id&mode=$mode"); break; case "alllogs" : - echo '
        '; + echo "
        "; print_log_graph($course, $user->id, "usercourse.png"); - echo '
        '; + echo ""; print_log($course, $user->id, 0, "l.time DESC", $page, $perpage, - "user.php?id=$course->id&user=$user->id&mode=$mode"); + "user.php?id=$course->id&user=$user->id&mode=$mode"); break; case "outline" : @@ -89,75 +93,67 @@ if (isset($sections[$i])) { // should always be true $section = $sections[$i]; - $showsection = (isteacher($course->id) or $section->visible or !$course->hiddensections); - - if ($showsection) { // prevent hidden sections in user activity. Thanks to Geoff Wilbert! - - if ($section->sequence) { - echo '
        '; - echo '

        '; - switch ($course->format) { - case "weeks": print_string("week"); break; - case "topics": print_string("topic"); break; - default: print_string("section"); break; - } - echo " $i

        "; - - echo '
        '; - - if ($mode == "outline") { - echo ""; - } - - $sectionmods = explode(",", $section->sequence); - foreach ($sectionmods as $sectionmod) { - if (empty($mods[$sectionmod])) { - continue; - } - $mod = $mods[$sectionmod]; - - if (empty($mod->visible)) { - continue; - } - - $instance = get_record("$mod->modname", "id", "$mod->instance"); - $libfile = "$CFG->dirroot/mod/$mod->modname/lib.php"; - - if (file_exists($libfile)) { - require_once($libfile); - - switch ($mode) { - case "outline": - $user_outline = $mod->modname."_user_outline"; - if (function_exists($user_outline)) { - $output = $user_outline($course, $user, $mod, $instance); - print_outline_row($mod, $instance, $output); - } - break; - case "complete": - $user_complete = $mod->modname."_user_complete"; - if (function_exists($user_complete)) { - $image = "modname/icon.gif\" ". - "height=\"16\" width=\"16\" alt=\"$mod->modfullname\" />"; - echo "

        $image $mod->modfullname: ". - "wwwroot/mod/$mod->modname/view.php?id=$mod->id\">". - format_string($instance->name,true)."

        "; - echo "
          "; - $user_complete($course, $user, $mod, $instance); - echo "
        "; - } - break; - } - } - } - - if ($mode == "outline") { - echo "
        "; - print_simple_box_end(); - } - echo '
        '; // content - echo '
        '; // section + + if ($section->sequence) { + echo "
        "; + echo "

        "; + switch ($course->format) { + case "weeks": print_string("week"); break; + case "topics": print_string("topic"); break; + default: print_string("section"); break; } + echo " $i

        "; + + echo "
          "; + + if ($mode == "outline") { + echo ""; + } + + $sectionmods = explode(",", $section->sequence); + foreach ($sectionmods as $sectionmod) { + if (empty($mods[$sectionmod])) { + continue; + } + $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); + + switch ($mode) { + case "outline": + $user_outline = $mod->modname."_user_outline"; + if (function_exists($user_outline)) { + $output = $user_outline($course, $user, $mod, $instance); + print_outline_row($mod, $instance, $output); + } + break; + case "complete": + $user_complete = $mod->modname."_user_complete"; + if (function_exists($user_complete)) { + $image = "modname/icon.gif\" ". + "HEIGHT=16 WIDTH=16 ALT=\"$mod->modfullname\">"; + echo "

          $image $mod->modfullname: ". + "wwwroot/mod/$mod->modname/view.php?id=$mod->id\">". + "$instance->name

          "; + echo "
            "; + $user_complete($course, $user, $mod, $instance); + echo "
          "; + } + break; + } + } + } + + if ($mode == "outline") { + echo "
          "; + print_simple_box_end(); + } + echo "
        "; + + } } } @@ -169,27 +165,27 @@ function print_outline_row($mod, $instance, $result) { - $image = "modname/icon.gif\" height=\"16\" width=\"16\" alt=\"$mod->modfullname\" />"; + $image = "modname/icon.gif\" HEIGHT=16 WIDTH=16 ALT=\"$mod->modfullname\">"; - echo "
        $image"; - echo " modfullname\""; - echo " href=\"../mod/$mod->modname/view.php?id=$mod->id\">".format_string($instance->name,true)."   "; + echo "
        $image"; + echo " modfullname\""; + echo " HREF=\"../mod/$mod->modname/view.php?id=$mod->id\">$instance->name   "; if (isset($result->info)) { echo "$result->info"; } else { - echo "

        -

        "; + echo "

        -

        "; } - echo "
              ".userdate($result->time)." ($timeago)".userdate($result->time)." ($timeago)
        - + - + - + @@ -45,7 +36,7 @@ - + @@ -55,7 +46,7 @@ - + @@ -65,7 +56,7 @@ - + @@ -75,7 +66,7 @@ - + @@ -85,7 +76,7 @@ - + @@ -95,7 +86,7 @@ - + @@ -105,7 +96,7 @@ - + @@ -115,7 +106,7 @@ - + diff --git a/enrol/database/enrol.php b/enrol/database/enrol.php index 65f42edfe8f..4fb3617fbe7 100644 --- a/enrol/database/enrol.php +++ b/enrol/database/enrol.php @@ -17,71 +17,45 @@ class enrolment_plugin extends enrolment_base { function get_student_courses(&$user) { global $CFG; - parent::get_student_courses($user); /// Start with the list of known enrolments - /// If the database fails we can at least use this + parent::get_student_courses($user); + // This is a hack to workaround what seems to be a bug in ADOdb with accessing // two databases of the same kind ... it seems to get confused when trying to access // the first database again, after having accessed the second. // The following hack will make the database explicit which keeps it happy - if (strpos($CFG->prefix, $CFG->dbname) === false) { - $oldprefix = $CFG->prefix; $CFG->prefix = "$CFG->dbname.$CFG->prefix"; } + - // Try to connect to the external database - + // Connect to the external database $enroldb = &ADONewConnection($CFG->enrol_dbtype); - if ($enroldb->PConnect($CFG->enrol_dbhost,$CFG->enrol_dbuser,$CFG->enrol_dbpass,$CFG->enrol_dbname)) { - $courselist = array(); /// Initialise new array - $newstudent = array(); - - /// Get the authoritative list of enrolments from the database - - $useridnumber = $user->{$CFG->enrol_localuserfield}; - - - if ($rs = $enroldb->Execute("SELECT $CFG->enrol_remotecoursefield - FROM $CFG->enrol_dbtable - WHERE $CFG->enrol_remoteuserfield = '$useridnumber' ")) { - - if ($rs->RecordCount() > 0) { - while (!$rs->EOF) { - $courselist[] = $rs->fields[0]; - $rs->MoveNext(); - } - - foreach ($courselist as $coursefield) { - if ($course = get_record('course', $CFG->enrol_localcoursefield, $coursefield)) { - $newstudent[$course->id] = true; /// Add it to new list - if (isset($user->student[$course->id])) { /// We have it already - unset($user->student[$course->id]); /// Remove from old list - } else { - enrol_student($user->id, $course->id); /// Enrol the student - } - } - } - } - - if (!empty($user->student)) { /// We have some courses left that we need to unenrol from - foreach ($user->student as $courseid => $value) { - unenrol_student($user->id, $courseid); /// Unenrol the student - unset($user->student[$course->id]); /// Remove from old list - } - } - - $user->student = $newstudent; /// Overwrite the array with the new one - } + foreach ($user->student as $courseid=>$value) { + /// Get the value of the local course field + $localcoursevalue = getfield("course", $CFG->enrol_localcoursefield, "id", $courseid); + + /// Find a record in the external database that matches the local course field and local user field + /// to the respective remote fields + $rs = $enroldb->Execute("SELECT * FROM $CFG->enrol_dbtable + WHERE $CFG->enrol_remotecoursefield = '$localcoursevalue' + AND $CFG->enrol_remoteuserfield = '{$user->$CFG->enrol_localuserfield}' "); + + /// If no records existed then student has been unenrolled externally. + /// Unenrol locally and remove entry from the $user->student array + if (! ($rs->RecordCount()) ) { + unenrol_student($user->id, $courseid); + unset ($user->student[$courseid]); + } + } + $enroldb->Close(); + } - if (!empty($oldprefix)) { - $CFG->prefix = $oldprefix; // Restore it just in case - } } @@ -113,20 +87,9 @@ function get_access_icons($course) { } -/// Overide the base config_form() function +/// Overrise the base config_form() function function config_form($frm) { global $CFG; - - $vars = array('enrol_dbhost', 'enrol_dbuser', 'enrol_dbpass', - 'enrol_dbname', 'enrol_dbtable', - 'enrol_localcoursefield', 'enrol_localuserfield', - 'enrol_remotecoursefield', 'enrol_remoteuserfield', - 'enrol_allowinternal'); - foreach ($vars as $var) { - if (!isset($frm->$var)) { - $frm->$var = ''; - } - } include("$CFG->dirroot/enrol/database/config.html"); } diff --git a/enrol/enrol.class.php b/enrol/enrol.class.php index 05453a11853..2bdbecc3c77 100644 --- a/enrol/enrol.class.php +++ b/enrol/enrol.class.php @@ -133,31 +133,22 @@ function print_entry($course) { print_header($strloginto, $course->fullname, "$strcourses -> $strloginto"); echo "
        "; - notice_yesno(get_string("enrolmentconfirmation"), "enrol.php?id=$course->id&confirm=1", $CFG->wwwroot); + notice_yesno(get_string("enrolmentconfirmation"), "enrol.php?id=$course->id&confirm=1", $CFG->wwwroot); print_footer(); exit; } else { - if ($course->enrolperiod) { + if ($course->enrolperiod == 0) { + $timestart = 0; + $timeend = 0; + } else { $timestart = time(); $timeend = time() + $course->enrolperiod; - } else { - $timestart = $timeend = 0; } if (! enrol_student($USER->id, $course->id, $timestart, $timeend)) { error("An error occurred while trying to enrol you."); } - - $subject = get_string("welcometocourse", "", $course->fullname); - $a->coursename = $course->fullname; - $a->profileurl = "$CFG->wwwroot/user/view.php?id=$USER->id&course=$course->id"; - $message = get_string("welcometocoursetext", "", $a); - if (! $teacher = get_teacher($course->id)) { - $teacher = get_admin(); - } - email_to_user($USER, $teacher, $subject, $message); - add_to_log($course->id, "course", "enrol", "view.php?id=$course->id", "$USER->id"); $USER->student[$course->id] = true; @@ -179,9 +170,9 @@ function print_entry($course) { } - print_header($strloginto, $course->fullname, "$strcourses -> $strloginto", "form.password"); + print_header($strloginto, $course->fullname, "$strcourses -> $strloginto", "form.password"); - print_course($course, "80%"); + print_course($course); include("$CFG->dirroot/enrol/internal/enrol.html"); @@ -203,41 +194,21 @@ function print_entry($course) { function check_entry($form, $course) { global $CFG, $USER, $SESSION, $THEME; - if (empty($form->password)) { - $form->password = ''; - } - - $groupid = $this->check_group_entry($course->id, $form->password); - if (($form->password == $course->password) or ($groupid !== false) ) { + if ($form->password == $course->password) { if (isguest()) { add_to_log($course->id, "course", "guest", "view.php?id=$course->id", $_SERVER['REMOTE_ADDR']); - } else { /// Update or add new enrolment + } else if (!record_exists("user_students", "userid", $USER->id, "course", $course->id)) { - if ($course->enrolperiod) { - $timestart = time(); - $timeend = $timestart + $course->enrolperiod; - } else { - $timestart = $timeend = 0; - } - - if (! enrol_student($USER->id, $course->id, $timestart, $timeend)) { + if (! enrol_student($USER->id, $course->id)) { error("An error occurred while trying to enrol you."); } - - if ($groupid !== false) { - if (add_user_to_group($groupid, $USER->id)) { - $USER->groupmember[$course->id] = $groupid; - } else { - error("An error occurred while trying to add you to a group"); - } - } - + $subject = get_string("welcometocourse", "", $course->fullname); $a->coursename = $course->fullname; - $a->profileurl = "$CFG->wwwroot/user/view.php?id=$USER->id&course=$course->id"; + $a->profileurl = "$CFG->wwwroot/user/view.php?id=$USER->id&course=$course->id"; $message = get_string("welcometocoursetext", "", $a); if (! $teacher = get_teacher($course->id)) { @@ -266,25 +237,6 @@ function check_entry($form, $course) { } -/** -* Check if the given enrolment key matches a group enrolment key for the given course -* -* Check if the given enrolment key matches a group enrolment key for the given course -* -* @param courseid the current course id -* @param password the submitted enrolment key -*/ -function check_group_entry ($courseid, $password) { - $ingroup = false; - if ( ($groups = get_groups($courseid)) !== false ) { - foreach ($groups as $group) - if ( !empty($group->password) and ($password == $group->password) ) - $ingroup = $group->id; - } - return $ingroup; -} - - /** * Prints a form for configuring the current enrolment plugin * @@ -334,11 +286,6 @@ function cron() { if ($students = get_records_select('user_students', $select)) { foreach ($students as $student) { - if ($course = get_record('course', 'id', $student->course)) { - if (empty($course->enrolperiod)) { // This overrides student timeend - continue; - } - } unenrol_student($student->userid, $student->course); } } @@ -362,16 +309,15 @@ function get_access_icons($course) { $str = ''; - if (!empty($course->guest)) { + if ($course->guest) { $strallowguests = get_string("allowguests"); - $str .= ''; - $str .= ''.$strallowguests.'  '; + $str .= "wwwroot/course/view.php?id=$course->id\">"; + $str .= "\"$strallowguests\"pixpath/i/guest.gif\">  "; } - if (!empty($course->password)) { + if ($course->password) { $strrequireskey = get_string("requireskey"); - $str .= ''; - $str .= ''.$strrequireskey.''; + $str .= "wwwroot/course/view.php?id=$course->id\">"; + $str .= "\"$strrequireskey\"pixpath/i/key.gif\">"; } return $str; diff --git a/enrol/flatfile/config.html b/enrol/flatfile/config.html index 0cfed7bcc65..2002d0bcca4 100644 --- a/enrol/flatfile/config.html +++ b/enrol/flatfile/config.html @@ -1,7 +1,7 @@
        enrol_dbtype:

        enrol_dbtype:

        - enrol_dbtype)) { - $frm->enrol_dbtype = 'mysql'; - } choose_from_menu($dboptions, "enrol_dbtype", $frm->enrol_dbtype, '', '', ''); ?> @@ -20,14 +16,9 @@
        enrol_dbhost:

        enrol_dbhost:

        - enrol_dbhost)) { - $frm->enrol_dbhost = ''; - } - ?> - + @@ -35,7 +26,7 @@
        enrol_dbuser:

        enrol_dbuser:

        enrol_dbpass:

        enrol_dbpass:

        enrol_dbname:

        enrol_dbname:

        enrol_dbtable:

        enrol_dbtable:

        enrol_localcoursefield:

        enrol_localcoursefield:

        enrol_localuserfield:

        enrol_localuserfield:

        enrol_remotecoursefield:

        enrol_remotecoursefield:

        enrol_remoteuserfield:

        enrol_remoteuserfield:

        enrol_allowinternal:

        enrol_allowinternal:

        enrol_allowinternal) echo "checked=\"true\"" ?> />
        - + @@ -11,9 +11,9 @@ - + - + - + - +
        enrol_flatfilelocation:

        enrol_flatfilelocation:

        enrol_mailstudents:

        enrol_mailstudents:

        - enrol_mailstudents) echo "checked=\"true\"" ?> /> + enrol_mailstudents) echo "checked=\"true\"" ?> /> @@ -21,9 +21,9 @@
        enrol_mailteachers:

        enrol_mailteachers:

        - enrol_mailteachers) echo "checked=\"true\"" ?> /> + enrol_mailteachers) echo "checked=\"true\"" ?> /> @@ -31,9 +31,9 @@
        enrol_mailadmins:

        enrol_mailadmins:

        - enrol_mailadmins) echo "checked=\"true\"" ?> /> + enrol_mailadmins) echo "checked=\"true\"" ?> /> @@ -41,9 +41,9 @@
        enrol_allowinternal:

        enrol_allowinternal:

        - enrol_allowinternal) echo "checked=\"true\"" ?> /> + enrol_allowinternal) echo "checked=\"true\"" ?> /> diff --git a/enrol/flatfile/enrol.php b/enrol/flatfile/enrol.php index 8b51a767e50..e26cef732ea 100644 --- a/enrol/flatfile/enrol.php +++ b/enrol/flatfile/enrol.php @@ -40,13 +40,6 @@ function check_entry($form, $course) { /// Override the base config_form() function function config_form($frm) { global $CFG; - - $vars = array('enrol_flatfilelocation', 'enrol_mailstudents', 'enrol_mailteachers', 'enrol_mailadmins'); - foreach ($vars as $var) { - if (!isset($frm->$var)) { - $frm->$var = ''; - } - } include ("$CFG->dirroot/enrol/flatfile/config.html"); } @@ -186,7 +179,7 @@ function process_config($config) { switch ($fields[1]) { case "student": if ($fields[0] == "add") { - if (! enrol_student($user->id, $course->id, $fields[4], $fields[5], 'flatfile')) { + if (! enrol_student($user->id, $course->id, $fields[4], $fields[5])) { $elog = "Error enrolling in course\n"; } } else { @@ -198,7 +191,7 @@ function process_config($config) { case "teacher": if ($fields[0] == "add") { - if (! add_teacher($user->id, $course->id, 0, '', $fields[4], $fields[5], 'flatfile')) { + if (! add_teacher($user->id, $course->id, 0, '', $fields[4], $fields[5])) { $elog = "Error adding teacher to course\n"; } } else { @@ -210,7 +203,7 @@ function process_config($config) { case "teacheredit": if ($fields[0] == "add") { - if (! add_teacher($user->id, $course->id, 1, '', $fields[4], $fields[5], 'flatfile')) { + if (! add_teacher($user->id, $course->id, 1, '', $fields[4], $fields[5])) { $elog = "Error adding teacher to course\n"; } } else { @@ -238,7 +231,7 @@ function process_config($config) { if (!empty($CFG->enrol_mailstudents)) { $a->coursename = "$course->fullname"; - $a->profileurl = "$CFG->wwwroot/user/view.php?id=$user->id&course=$course->id"; + $a->profileurl = "$CFG->wwwroot/user/view.php?id=$user->id&course=$course->id"; email_to_user($user, $teacher, get_string("enrolmentnew", '', $course->shortname), get_string('welcometocoursetext', '', $a)); } diff --git a/enrol/internal/enrol.html b/enrol/internal/enrol.html index b41d7b2cc63..90d29c39d2f 100644 --- a/enrol/internal/enrol.html +++ b/enrol/internal/enrol.html @@ -1,59 +1 @@ - -

        -id&course=".SITEID."\">".fullname($teacher)."."; - } else { - $teachername = get_string('yourteacher', '', strtolower($course->teacher)); - } - print_string('enrolmentkeyfrom', '', $teachername); - ?> -

        - -

        errormsg)) {formerr($this->errormsg);} ?>

        - - -
        - - - - - -
        : - - - " /> -
        -
        -
        - -
        -
        - " /> -
        -
        - -guest) { - print_simple_box_start('center'); -?> -
        - - - - - -
        - - - -
        -
        - - +

        id&course=$site->id\">". "$teacher->firstname $teacher->lastname."; } else { $teachername = get_string("yourteacher", "", strtolower($course->teacher)); } print_string("enrolmentkeyfrom", "", $teachername); ?>

        errormsg)) {formerr($this->errormsg);} ?>

        :

         
        ">  
        ">
        \ No newline at end of file diff --git a/enrol/ldap/config.html b/enrol/ldap/config.html deleted file mode 100755 index 7b0b6adabeb..00000000000 --- a/enrol/ldap/config.html +++ /dev/null @@ -1,293 +0,0 @@ -enrol_ldap_host_url, ''); -optional_variable($frm->enrol_ldap_version, ''); -optional_variable($frm->enrol_ldap_bind_dn, ''); -optional_variable($frm->enrol_ldap_bind_pw, ''); -// student & teacher enrol -optional_variable($frm->enrol_ldap_student_contexts, ''); -optional_variable($frm->enrol_ldap_student_memberattribute, ''); -optional_variable($frm->enrol_ldap_teacher_contexts, ''); -optional_variable($frm->enrol_ldap_teacher_memberattribute, ''); -optional_variable($frm->enrol_ldap_objectclass, ''); -optional_variable($frm->enrol_ldap_course_idnumber_updatelocal, ''); -// fields -optional_variable($frm->enrol_ldap_course_idnumber, ''); -optional_variable($frm->enrol_ldap_course_idnumber_updatelocal, false); -optional_variable($frm->enrol_ldap_course_idnumber_editlock, false); -optional_variable($frm->enrol_ldap_course_fullname, ''); -optional_variable($frm->enrol_ldap_course_fullname_updatelocal, false); -optional_variable($frm->enrol_ldap_course_fullname_editlock, false); -optional_variable($frm->enrol_ldap_course_shortname, ''); -optional_variable($frm->enrol_ldap_course_shortname_updatelocal, false); -optional_variable($frm->enrol_ldap_course_shortname_editlock, false); -optional_variable($frm->enrol_ldap_course_summary, ''); -optional_variable($frm->enrol_ldap_course_summary_updatelocal, false); -optional_variable($frm->enrol_ldap_course_summary_editlock, false); -// autocreate -optional_variable($frm->enrol_ldap_autocreate, false); -optional_variable($frm->enrol_ldap_category, 1); -optional_variable($frm->enrol_ldap_template, ''); - -?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        -

        -
        enrol_ldap_host_url: - - - - -
        enrol_ldap_version: - enrol_ldap_version, ""); - if (isset($err["enrol_ldap_version"])) formerr($err["enrol_ldap_version"]); - ?> - - -
        enrol_ldap_bind_dn: - - - - -
        ldap_bind_pw: - - - - -
        -

        -
        enrol_ldap_student_contexts: - - - - -
        enrol_ldap_student_memberattribute: - - - - -
        -

        -
        enrol_ldap_teacher_contexts: - - - - -
        enrol_ldap_teacher_memberattribute: - - - - -
        -

        -
        enrol_ldap_objectclass: - - - - -
        enrol_ldap_course_idnumber: - - -
        - -
        - -
        -
        - -
        enrol_ldap_course_shortname: - - -
        - -
        - -
        -
        - -
        enrol_ldap_course_fullname: - - -
        - -
        - -
        -
        - -
        enrol_ldap_course_summary: - - -
        - -
        - -
        -
        - -
        -

        -
        enrol_ldap_autocreate: - 'no','1'=>'yes'), "enrol_ldap_autocreate", $frm->enrol_ldap_autocreate, ""); - if (isset($err["enrol_ldap_autocreate"])) formerr($err["enrol_ldap_autocreate"]); - ?> - - -
        enrol_ldap_category: - enrol_ldap_category, ""); - - ?> - - - -
        enrol_ldap_template: - - - - -
        diff --git a/enrol/ldap/enrol.php b/enrol/ldap/enrol.php deleted file mode 100755 index 53309bb5ded..00000000000 --- a/enrol/ldap/enrol.php +++ /dev/null @@ -1,627 +0,0 @@ -dirroot/enrol/enrol.class.php"); -require_once("$CFG->dirroot/course/lib.php"); -require_once("$CFG->dirroot/lib/blocklib.php"); - -$CFG->enrol_localcoursefield = 'idnumber'; - -class enrolment_plugin extends enrolment_base { - - var $log; - -/// Leave get_teacher_courses() function unchanged for the time being - - -/// Leave cron() function unchanged - - -/// Overide the base get_student_courses() function -function get_student_courses(&$user) { - global $CFG; - parent::get_student_courses($user); // populate known enrolments - $this->get_user_courses($user, 'student'); - return parent::get_student_courses($user); -} - -/// Overide the base get_teacher_courses() function -function get_teacher_courses(&$user) { - global $CFG; - parent::get_teacher_courses($user); // populate known enrolments - $this->get_user_courses($user, 'teacher'); - return parent::get_teacher_courses($user); -} - -/// Overide the base get_student_courses() function -function get_user_courses(&$user, $type) { - global $CFG; - - if(!isset($type) || !($type =='student' || $type =='teacher' )){ - error("Bad call to get_user_courses()!"); - } - - - // Connect to the external database - $ldap_connection = $this->enrol_ldap_connect(); - if (!$ldap_connection) { - @ldap_close($ldap_connection); - error("LDAP-module cannot connect to server: $CFG->ldap_host_url"); - return false; - } - - // we are connected OK, continue... - - /// Find a record in the external database that matches the local course field and local user field - /// to the respective remote fields - $enrolments = $this->find_ext_enrolments( $ldap_connection, - $user->idnumber , - $type); - - foreach ($enrolments as $enrol){ - - $course_ext_id = $enrol[$CFG->enrol_ldap_course_idnumber][0]; - if(empty($course_ext_id)){ - error_log("The course external id is invalid!\n"); - continue; // next; skip this one! - } - - // create the course ir required - $course_obj = get_record( 'course', - $CFG->enrol_localcoursefield, - $course_ext_id ); - - if (empty($course_obj)){ // course doesn't exist - if($CFG->enrol_ldap_autocreate){ // autocreate - error_log("CREATE User $user->username enrolled to a nonexistant course $course_ext_id \n"); - $newcourseid = $this->create_course($enrol); - $course_obj = get_record( 'course', - $CFG->enrol_localcoursefield, - $newcourseid); - } else { - error_log("User $user->username enrolled to a nonexistant course $course_ext_id \n"); - } - } else { // the course object exists before we call... - if ($course_obj->visible==0) { - // non-visible courses don't show up in the enrolled - // array, so we should skip them -- - unset($user->{$type}[$course_obj->id]); - continue; - } - } - - // deal with enrolment in the moodle db - if (!empty($course_obj)) { // does course exist now? - if(isset($user->{$type}[$course_obj->id])){ - unset($user->{$type}[$course_obj->id]); // remove from old list - } else { - $CFG->debug=10; - if ($type === 'student') { // enrol - error_log("Enrolling student $user->id ($user->username) in course $course_obj->id ($course_obj->shortname) "); - if (! enrol_student($user->id, $course_obj->id, NULL,NULL, 'ldap')){ - error_log("Failed to enrol student $user->id ($user->username) into course $course_obj->id ($course_obj->shortname)"); - } - } else if ($type === 'teacher') { - error_log("Enrolling teacher $user->id ($user->username) in course $course_obj->id ($course_obj->shortname)"); - add_teacher($user->id, $course_obj->id, NULL,NULL,NULL, NULL,'ldap'); - } - $CFG->debug=0; - } - } - } - - // ok, if there's any thing still left in the $user->student or $user->teacher - // array, those are old enrolments that we want to remove (or are they?) - if(!empty($user->{$type})){ - $courses = array_keys($user->{$type}); - foreach ($courses as $courseid){ - // get the record if it's ldap - $rec = get_record('user_' . $type . 's', 'userid', $user->id, 'course', $courseid, 'enrol', 'ldap'); - if(!empty($rec)){ // this was a legacy - if ($type === 'student') { // enrol - unenrol_student($user->id, $courseid); - } else if ($type === 'teacher') { - remove_teacher($user->id, $courseid); - } - unset($user->{$type}[$course_obj->id]); - } - - } - } - - @ldap_close($ldap_connection); - return true; -} - -/// sync enrolments with ldap, create courses if required. -function sync_enrolments($type, $enrol) { - global $CFG; - - if(!isset($type) || !($type =='student' || $type =='teacher' )){ - error("Bad call to get_all_courses()!"); - } - $table = array( 'teacher' => 'user_teachers', - 'student' => 'user_students'); - - if(!isset($enrol)){ - $enrol=false; - } - - // Connect to the external database - $ldap_connection = $this->enrol_ldap_connect(); - if (!$ldap_connection) { - @ldap_close($ldap_connection); - error("LDAP-module cannot connect to server: $CFG->ldap_host_url"); - return false; - } - - // we are connected OK, continue... - $this->enrol_ldap_bind($ldap_connection); - - //get all contexts and look for first matching user - $ldap_contexts = explode(";",$CFG->{'enrol_ldap_'.$type.'_contexts'}); - - // get all the fields we will want for the potential course creation - // as they are light. don't get membership -- potentially a lot of data. - $ldap_fields_wanted = array( 'dn', $CFG->enrol_ldap_course_idnumber); - if (!empty($CFG->enrol_ldap_course_fullname)){ - array_push($ldap_fields_wanted, $CFG->enrol_ldap_course_fullname); - } - if (!empty($CFG->enrol_ldap_course_shortname)){ - array_push($ldap_fields_wanted, $CFG->enrol_ldap_course_shortname); - } - if (!empty($CFG->enrol_ldap_course_summary)){ - array_push($ldap_fields_wanted, $CFG->enrol_ldap_course_summary); - } - if($enrol){ - array_push($ldap_fields_wanted, $CFG->{'enrol_ldap_'.$type.'_memberattribute'}); - } - - // define the search pattern - if (!empty($CFG->enrol_ldap_objectclass)){ - $ldap_search_pattern='(objectclass='.$CFG->enrol_ldap_objectclass.')'; - } else { - $ldap_search_pattern="(objectclass='*')"; - - } - - // first, pack the sortorder... - fix_course_sortorder(); - - foreach ($ldap_contexts as $context) { - - $context == trim($context); - if ($CFG->enrol_ldap_search_sub){ - //use ldap_search to find first user from subtree - $ldap_result = ldap_search($ldap_connection, - $context, - $ldap_search_pattern, - $ldap_fields_wanted); - - } else { - //search only in this context - $ldap_result = ldap_list($ldap_connection, - $context, - $ldap_search_pattern, - $ldap_fields_wanted,0,0); - } - - // check and push results - $records = ldap_get_entries($ldap_connection,$ldap_result); - - // ldap libraries return an odd array, really. fix it: - $flat_records=array(); - for ($c=0;$c<$records['count'];$c++) { - array_push($flat_records, $records["$c"]); - } - // free mem -- is there a leak? - $records=0; $ldap_result=0; - - if (count($flat_records)) { - - - foreach($flat_records as $course){ - $idnumber = $course{$CFG->enrol_ldap_course_idnumber}[0]; - print "== Synching $idnumber\n"; - // does the course exist in moodle already? - $course_obj = false; - $course_obj = get_record( 'course', - $CFG->enrol_localcoursefield, - $idnumber ); - if (!is_object($course_obj)) { - // ok, now then let's create it! - print "Creating Course $idnumber..."; - $newcourseid = $this->create_course($course, true); // we are skipping fix_course_sortorder() - $course_obj = get_record( 'course', 'id', $newcourseid); - if (is_object($course_obj)) { - print "OK!\n"; - } else { - print "failed\n"; - } - } - - // enrol&unenrol if required - if($enrol && is_object($course_obj)){ - // pull the ldap membership into a nice array - // this is an odd array -- mix of hash and array -- - $ldapmembers=array(); - if(!empty($course{ strtolower($CFG->{'enrol_ldap_'.$type.'_memberattribute'} ) })){ // may have no membership! - - $ldapmembers = $course{ strtolower($CFG->{'enrol_ldap_'.$type.'_memberattribute'} ) }; - unset($ldapmembers{'count'}); // remove oddity ;) - } - - // prune old ldap enrolments - // hopefully they'll fit in the max buffer size for the RDBMS - $sql = ' SELECT enr.userid AS user, 1 - FROM ' . $CFG->prefix . $table{$type} . ' enr ' . - ' JOIN ' . $CFG->prefix . 'user usr ON usr.id=enr.userid ' . - " WHERE course=$course_obj->id - AND enrol='ldap' "; - if (!empty($ldapmembers)) { - $sql .= 'AND usr.idnumber NOT IN (\''. join('\',\'', $ldapmembers).'\')'; - } else { - print ("Empty enrolment for $course_obj->shortname \n"); - } - $todelete = get_records_sql($sql); - if(!empty($todelete)){ - foreach ($todelete as $member) { - $member = $member->{'user'}; - if($type==='student'){ - if (unenrol_student($member, $course_obj->id)){ - print "Unenrolled $type $member into course $course_obj->id ($course_obj->shortname)\n"; - } else { - print "Failed to unenrol $type $member into course $course_obj->id ($course_obj->shortname)\n"; - } - } else { - if (remove_teacher($member, $course_obj->id)){ - print "Unenrolled $type $member into course $course_obj->id ($course_obj->shortname)\n"; - } else { - print "Failed to unenrol $type $member into course $course_obj->id ($course_obj->shortname)\n"; - } - } - } - } - - // insert current enrolments - // bad we can't do INSERT IGNORE with postgres... - foreach ($ldapmembers as $ldapmember) { - $sql = 'SELECT id,1 FROM '.$CFG->prefix.'user ' - ." WHERE idnumber='$ldapmember'"; - $member = get_record_sql($sql); -// print "sql: $sql \nidnumber = $ldapmember \n" . var_dump($member); - $member = $member->id; - if(empty($member)){ - print "Could not find user $ldapmember, skipping\n"; - continue; - } - if (!get_record($table{$type}, 'course', $course_obj->id, - 'userid', $member, 'enrol', 'ldap')){ - if($type === 'student'){ - if (enrol_student($member, $course_obj->id, NULL,NULL, 'ldap')){ - print "Enrolled $type $member ($ldapmember) into course $course_obj->id ($course_obj->shortname)\n"; - } else { - print "Failed to enrol $type $member ($ldapmember) into course $course_obj->id ($course_obj->shortname)\n"; - } - } else { // teacher - if (add_teacher($member, $course_obj->id, NULL,NULL,NULL, NULL,'ldap')){ - print "Enrolled $type $member ($ldapmember) into course $course_obj->id ($course_obj->shortname)\n"; - } else { - print "Failed to enrol $type $member ($ldapmember) into course $course_obj->id ($course_obj->shortname)\n"; - } - } - } - } - - - } - } - } - } - - // we are done now, a bit of housekeeping - fix_course_sortorder(); - - @ldap_close($ldap_connection); - return true; -} - - -/// Override the base print_entry() function -function print_entry($course) { - global $CFG; - - if (! empty($CFG->enrol_allowinternal) ) { - parent::print_entry($course); - } else { - print_header(); - notice(get_string("enrolmentnointernal"), $CFG->wwwroot); - } -} - -/// Override the base check_entry() function -function check_entry($form, $course) { - global $CFG; - - if (! empty($CFG->enrol_allowinternal) ) { - parent::check_entry($form, $course); - } -} - - -/// Overide the get_access_icons() function -function get_access_icons($course) { -} - - -/// Overrise the base config_form() function -function config_form($frm) { - global $CFG; - include("$CFG->dirroot/enrol/ldap/config.html"); -} - -/// Override the base process_config() function -function process_config($config) { - - optional_variable($config->enrol_ldap_host_url, ''); - set_config('enrol_ldap_host_url', $config->enrol_ldap_host_url); - - optional_variable($config->enrol_ldap_version, ''); - set_config('enrol_ldap_version', $config->enrol_ldap_version); - - optional_variable($config->enrol_ldap_bind_dn, ''); - set_config('enrol_ldap_bind_dn', $config->enrol_ldap_bind_dn); - - optional_variable($config->enrol_ldap_bind_pw, ''); - set_config('enrol_ldap_bind_pw', $config->enrol_ldap_bind_pw); - - optional_variable($config->enrol_ldap_student_contexts, ''); - set_config('enrol_ldap_student_contexts', $config->enrol_ldap_student_contexts); - - optional_variable($config->enrol_ldap_student_memberattribute, ''); - set_config('enrol_ldap_student_memberattribute', $config->enrol_ldap_student_memberattribute); - - optional_variable($config->enrol_ldap_teacher_contexts, ''); - set_config('enrol_ldap_teacher_contexts', $config->enrol_ldap_teacher_contexts); - - optional_variable($config->enrol_ldap_teacher_memberattribute, ''); - set_config('enrol_ldap_teacher_memberattribute', $config->enrol_ldap_teacher_memberattribute); - - optional_variable($config->enrol_ldap_objectclass, ''); - set_config('enrol_ldap_objectclass', $config->enrol_ldap_objectclass); - - optional_variable($config->enrol_ldap_category, ''); - set_config('enrol_ldap_category', $config->enrol_ldap_category); - - optional_variable($config->enrol_ldap_template, ''); - set_config('enrol_ldap_template', $config->enrol_ldap_template); - - optional_variable($config->enrol_ldap_course_fullname, ''); - set_config('enrol_ldap_course_fullname', $config->enrol_ldap_course_fullname); - - optional_variable($config->enrol_ldap_course_shortname, ''); - set_config('enrol_ldap_course_shortname', $config->enrol_ldap_course_shortname); - - optional_variable($config->enrol_ldap_course_summary, ''); - set_config('enrol_ldap_course_summary', $config->enrol_ldap_course_summary); - - optional_variable($config->enrol_ldap_course_idnumber, ''); - set_config('enrol_ldap_course_idnumber', $config->enrol_ldap_course_idnumber); - - optional_variable($config->enrol_localcoursefield, ''); - set_config('enrol_localcoursefield', $config->enrol_localcoursefield); - - optional_variable($config->enrol_ldap_user_memberfield, ''); - set_config('enrol_ldap_user_memberfield', $config->enrol_ldap_user_memberfield); - - optional_variable($config->enrol_ldap_search_sub, '0'); - set_config('enrol_ldap_search_sub', $config->enrol_ldap_search_sub); - - optional_variable($config->enrol_ldap_autocreate, '0'); - set_config('enrol_ldap_autocreate', $config->enrol_ldap_autocreate); - - - - if (!isset($config->enrol_allowinternal)) { - $config->enrol_allowinternal = ''; - } - set_config('enrol_allowinternal', $config->enrol_allowinternal); - - return true; - -} - -function enrol_ldap_connect(){ -/// connects to ldap-server - global $CFG; - - $result = ldap_connect($CFG->enrol_ldap_host_url); - - if ($result) { - if (!empty($CFG->enrol_ldap_version)) { - ldap_set_option($result, LDAP_OPT_PROTOCOL_VERSION, $CFG->enrol_ldap_version); - } - - return $result; - - } else { - error("LDAP-module cannot connect to server: $CFG->enrol_ldap_host_url"); - return false; - } -} - -function enrol_ldap_bind($ldap_connection){ -/// makes bind to ldap for searching users -/// uses ldap_bind_dn or anonymous bind - - global $CFG; - - if ( ! empty($CFG->enrol_ldap_bind_dn) ){ - //bind with search-user - if (!ldap_bind($ldap_connection, $CFG->enrol_ldap_bind_dn,$CFG->enrol_ldap_bind_dn)){ - 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 find_ext_enrolments ($ldap_connection, $memberuid, $type){ -/// type is teacher or student -/// return multidimentional array array with of courses (at least dn and idnumber) -/// - - global $CFG; - - //default return value - $courses = array(); - $this->enrol_ldap_bind($ldap_connection); - - //get all contexts and look for first matching user - $ldap_contexts = explode(";",$CFG->{'enrol_ldap_'.$type.'_contexts'}); - - // get all the fields we will want for the potential course creation - // as they are light. don't get membership -- potentially a lot of data. - $ldap_fields_wanted = array( 'dn', $CFG->enrol_ldap_course_idnumber); - if (!empty($CFG->enrol_ldap_course_fullname)){ - array_push($ldap_fields_wanted, $CFG->enrol_ldap_course_fullname); - } - if (!empty($CFG->enrol_ldap_course_shortname)){ - array_push($ldap_fields_wanted, $CFG->enrol_ldap_course_shortname); - } - if (!empty($CFG->enrol_ldap_course_summary)){ - array_push($ldap_fields_wanted, $CFG->enrol_ldap_course_summary); - } - - // define the search pattern - $ldap_search_pattern = "(".$CFG->{'enrol_ldap_'.$type.'_memberattribute'}."=".$memberuid.")"; - if (!empty($CFG->enrol_ldap_objectclass)){ - $ldap_search_pattern='(&(objectclass='.$CFG->enrol_ldap_objectclass.')'.$ldap_search_pattern.')'; - } - - foreach ($ldap_contexts as $context) { - $context == trim($context); - if (empty($context)) { - continue; // next; - } - - if ($CFG->enrol_ldap_search_sub){ - //use ldap_search to find first user from subtree - $ldap_result = ldap_search($ldap_connection, - $context, - $ldap_search_pattern, - $ldap_fields_wanted); - - } else { - //search only in this context - $ldap_result = ldap_list($ldap_connection, - $context, - $ldap_search_pattern, - $ldap_fields_wanted); - } - - // check and push results - $records = ldap_get_entries($ldap_connection,$ldap_result); - - // ldap libraries return an odd array, really. fix it: - $flat_records=array(); - for ($c=0;$c<$records['count'];$c++) { - array_push($flat_records, $records["$c"]); - } - - if (count($flat_records)) { - $courses = array_merge($courses, $flat_records); - } - } - - return $courses; -} - -// will create the moodle course from the template -// course_ext is an array as obtained from ldap -- flattened somewhat -// NOTE: if you pass true for $skip_fix_course_sortorder -// you will want to call fix_course_sortorder() after your are done -// with course creation -function create_course ($course_ext,$skip_fix_course_sortorder=0){ - global $CFG; - - // set defaults - $course = NULL; - $course->student = 'Student'; - $course->students = 'Students'; - $course->teacher = 'Teacher'; - $course->teachers = 'Teachers'; - $course->format = 'topics'; - $course->blockinfo = blocks_get_default_blocks(); - - // override defaults with template course - if(!empty($CFG->enrol_ldap_template)){ - $course = get_record("course", 'shortname', $CFG->enrol_ldap_template); - unset($course->id); // so we are clear to reinsert the record - unset($course->sortorder); - } - - // override with required ext data - $course->idnumber = $course_ext[$CFG->enrol_ldap_course_idnumber][0]; - $course->fullname = $course_ext[$CFG->enrol_ldap_course_fullname][0]; - $course->shortname = $course_ext[$CFG->enrol_ldap_course_shortname][0]; - if ( empty($course->idnumber) - || empty($course->fullname) - || empty($course->shortname) ) { - // we are in trouble! - error_log("Cannot create course: missing required data from the LDAP record!"); - error_log(var_export($course, true)); - return false; - } - - if(!empty($CFG->enrol_ldap_course_summary)){ // optional - $course->summary = $course_ext->{$CFG->enrol_ldap_course_summary}[0]; - } - if(!empty($CFG->enrol_ldap_category)){ // optional ... but ensure it is set! - $course->category = $CFG->enrol_ldap_category; - } - if ($course->category == 0){ // must be avoided as it'll break moodle - $course->category = 1; // the misc 'catch-all' category - } - - // define the sortorder (yuck) - $sort = get_record_sql('SELECT MAX(sortorder) AS max, 1 FROM ' . $CFG->prefix . 'course WHERE category=' . $course->category); - $sort = $sort->max; - $sort++; - $course->sortorder = $sort; - - // override with local data - $course->startdate = time(); - $course->timecreated = time(); - $course->visible = 1; - - // store it and log - if ($newcourseid = insert_record("course", $course)) { // Set up new course - $section = NULL; - $section->course = $newcourseid; // Create a default section. - $section->section = 0; - $section->id = insert_record("course_sections", $section); - - if(!$skip_fix_course_sortorder){ - fix_course_sortorder(); - } - add_to_log($newcourseid, "course", "new", "view.php?id=$newcourseid", "enrol/ldap auto-creation"); - } else { - error_log("Could not create new course from LDAP from DN:" . $course_ext['dn']); - error("Serious Error! Could not create the new course!"); - return false; - } - - return $newcourseid; -} - -} // end of class - -?> diff --git a/enrol/ldap/enrol_ldap_sync.php b/enrol/ldap/enrol_ldap_sync.php deleted file mode 100755 index 31d0a5af238..00000000000 --- a/enrol/ldap/enrol_ldap_sync.php +++ /dev/null @@ -1,29 +0,0 @@ -dirroot . '/course/lib.php'); - require_once($CFG->dirroot . '/lib/moodlelib.php'); - require_once($CFG->dirroot . '/lib/datalib.php'); - require_once($CFG->dirroot . "/enrol/" . $CFG->enrol . "/enrol.php"); - - // ensure errors are well explained - $CFG->debug=10; - // update enrolments -- these handlers should autocreate courses if required - $enrol = new enrolment_plugin(); - $enrol->enrol_ldap_connect(); - $enrol->sync_enrolments('student', true); - $enrol->sync_enrolments('teacher', true); - - // sync metacourses - if (function_exists('sync_metacourses')) { - sync_metacourses(); - } - -?> diff --git a/enrol/paypal/config.html b/enrol/paypal/config.html index bf78a985cc9..5e72888180c 100644 --- a/enrol/paypal/config.html +++ b/enrol/paypal/config.html @@ -1,7 +1,7 @@ - + @@ -11,7 +11,7 @@ - + @@ -21,7 +21,7 @@ - + @@ -31,9 +31,9 @@ - + - + - +
        enrol_cost:

        enrol_cost:

        enrol_currency:

        enrol_currency:

        enrol_currency, "","", "") ?>
        enrol_paypalbusiness:

        enrol_paypalbusiness:

        enrol_mailstudents:

        enrol_mailstudents:

        - enrol_mailstudents) echo "checked=\"true\"" ?> /> + enrol_mailstudents) echo "checked=\"true\"" ?> /> @@ -41,9 +41,9 @@
        enrol_mailteachers:

        enrol_mailteachers:

        - enrol_mailteachers) echo "checked=\"true\"" ?> /> + enrol_mailteachers) echo "checked=\"true\"" ?> /> @@ -51,9 +51,9 @@
        enrol_mailadmins:

        enrol_mailadmins:

        - enrol_mailadmins) echo "checked=\"true\"" ?> /> + enrol_mailadmins) echo "checked=\"true\"" ?> /> diff --git a/enrol/paypal/enrol.html b/enrol/paypal/enrol.html index 3cf2bf747c3..71dcd939981 100644 --- a/enrol/paypal/enrol.html +++ b/enrol/paypal/enrol.html @@ -8,11 +8,11 @@ - - + + "> - + id-$course->id" ?>"> @@ -26,10 +26,10 @@ "> - - - - + + + + diff --git a/enrol/paypal/enrol.php b/enrol/paypal/enrol.php index f17e722e136..a322f930637 100644 --- a/enrol/paypal/enrol.php +++ b/enrol/paypal/enrol.php @@ -35,18 +35,10 @@ function print_entry($course) { } else { print_header($strloginto, $course->fullname, - "wwwroot/course/\">$strcourses -> $strloginto"); + "wwwroot/courses/\">$strcourses -> $strloginto"); print_course($course, "80%"); print_simple_box_start("center"); - //Sanitise some fields before building the PayPal form - $coursefullname = $this->sanitise_for_paypal($course->fullname); - $courseshortname = $this->sanitise_for_paypal($course->shortname); - $userfullname = $this->sanitise_for_paypal(fullname($USER)); - $userfirstname = $this->sanitise_for_paypal($USER->firstname); - $userlastname = $this->sanitise_for_paypal($USER->lastname); - $useraddress = $this->sanitise_for_paypal($USER->address); - $usercity = $this->sanitise_for_paypal($USER->city); include("$CFG->dirroot/enrol/paypal/enrol.html"); @@ -59,6 +51,13 @@ function print_entry($course) { +/// Override the base check_entry() function +/// This should never be called for this type of enrolment anyway +function check_entry($form, $course) { +} + + + /// Override the get_access_icons() function function get_access_icons($course) { global $CFG; @@ -88,12 +87,12 @@ function get_access_icons($course) { case 'CAD': $currency = '$'; break; case 'GBP': $currency = '£'; break; case 'JPY': $currency = '¥'; break; - case 'AUD': $currency = '$'; break; default: $currency = '$'; break; } - $str .= ''.$strcost.': '; - $str .= $currency.format_float($cost,2).''; + $str .= "

        $strcost: ". + "wwwroot/course/view.php?id=$course->id\">"; + $str .= "$currency".format_float($cost,2).'

        '; } @@ -109,18 +108,9 @@ function config_form($frm) { 'EUR' => 'Euros', 'JPY' => 'Japanese Yen', 'GBP' => 'British Pounds', - 'CAD' => 'Canadian Dollars', - 'AUD' => 'Australian Dollars' + 'CAD' => 'Canadian Dollars' ); - $vars = array('enrol_cost', 'enrol_currency', 'enrol_paypalbusiness', - 'enrol_mailstudents', 'enrol_mailteachers', 'enrol_mailadmins'); - foreach ($vars as $var) { - if (!isset($frm->$var)) { - $frm->$var = ''; - } - } - include("$CFG->dirroot/enrol/paypal/config.html"); } @@ -160,38 +150,5 @@ function process_config($config) { } -//To avoid wrong (for PayPal) characters in sent data -function sanitise_for_paypal($text) { - global $CFG; - - if (!empty($CFG->sanitise_for_paypal)) { - //Array of characters to replace (not allowed by PayPal) - //Can be expanded as necessary to add other diacritics - $replace = array('á' => 'a', //Spanish characters - 'é' => 'e', - 'í' => 'i', - 'ó' => 'o', - 'ú' => 'u', - 'Á' => 'A', - 'É' => 'E', - 'Í' => 'I', - 'Ó' => 'O', - 'Ú' => 'U', - 'ñ' => 'n', - 'Ñ' => 'N', - 'ü' => 'u', - 'Ü' => 'U'); - $text = strtr($text, $replace); - - //Make here other sanities if necessary - - } - - return $text; - -} - } // end of class definition - -?> diff --git a/enrol/paypal/ipn.php b/enrol/paypal/ipn.php index 750fc7ad3ab..1212bed72bd 100644 --- a/enrol/paypal/ipn.php +++ b/enrol/paypal/ipn.php @@ -34,7 +34,7 @@ $custom = explode('-', $data->custom); $data->userid = $custom[0]; $data->courseid = $custom[1]; - $data->payment_gross = $data->mc_gross; + $data->payment_amount = $data->mc_gross; $data->payment_currency = $data->mc_currency; @@ -184,7 +184,7 @@ } else if (strcmp ($result, "INVALID") == 0) { // ERROR - insert_record("enrol_paypal", $data, false); + insert_record("enrol_paypal", $data); email_paypal_error_to_admin("Received an invalid payment notification!! (Fake payment?)", $data); } } diff --git a/error/index.php b/error/index.php index 542883c2aa5..3728e31653c 100644 --- a/error/index.php +++ b/error/index.php @@ -1,37 +1,37 @@ '. $requested, $text); + email_to_user($admin, $USER, "Error: $referer -> $requested", "$text"); - redirect($CFG->wwwroot .'/course/', 'Message sent, thanks', 3); + redirect("$CFG->wwwroot/course/", "Message sent, thanks", 3); die; } $site = get_site(); - print_header($site->fullname .':Error', $site->fullname .': Error 404', '', 'form.text'); + 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).

        '. $REDIRECT_URL, 'center', '', $THEME->cellheading); + print_simple_box("An unusual error occurred (tried to reach a page that doesn't exist).

        $REDIRECT_URL", "center", "", "$THEME->cellheading"); ?> -

        -

        If you have time, please let us know what you were trying +

        +

        If you have time, please let us know what you were trying to do when the error occurred: -

        -
        - - - -
        +

        +
        + + + +
        \ No newline at end of file +?> diff --git a/file.php b/file.php index b8ba8fded49..b25e6cf301e 100644 --- a/file.php +++ b/file.php @@ -1,140 +1,99 @@ -filelifetime)) { - $lifetime = 86400; // Seconds for files to remain in caches + $CFG->filelifetime = 86400; /// Seconds for files to remain in caches + } + + if (isset($file)) { // workaround for situations where / syntax doesn't work + $pathinfo = $file; } else { - $lifetime = $CFG->filelifetime; - } - - - $relativepath = get_file_argument('file.php'); - - // relative path must start with '/', because of backup/restore!!! - if (!$relativepath) { - error('No valid arguments supplied or incorrect server configuration'); - } else if ($relativepath{0} != '/') { - error('No valid arguments supplied, path does not start with slash!'); + $pathinfo = get_slash_arguments("file.php"); } - $pathname = $CFG->dataroot.$relativepath; - - // extract relative path components - $args = explode('/', trim($relativepath, '/')); - if (count($args) == 0) { // always at least courseid, may search for index.html in course root - error('No valid arguments supplied'); + if (!$pathinfo) { + error("No file parameters!"); } - // security: limit access to existing course subdirectories - // note: course ID must be specified - // note: the lang field is needed for the course language switching hack in weblib.php - if (!$course = get_record_sql("SELECT id, lang FROM {$CFG->prefix}course WHERE id='".(int)$args[0]."'")) { - error('Invalid course ID'); + $pathinfo = urldecode($pathinfo); + + if (! $args = parse_slash_arguments($pathinfo)) { + error("No valid arguments supplied"); } - // security: prevent access to "000" or "1 something" directories - if ($args[0] != $course->id) { - error('Invalid course ID'); + $numargs = count($args); + if ($numargs < 2 or empty($args[1])) { + error("No valid arguments supplied"); } - // security: login to course if necessary - if ($course->id != SITEID) { - require_login($course->id); + $courseid = (integer)$args[0]; + + $course = get_record("course", "id", $courseid); + + if ($course->category) { + require_login($courseid); } else if ($CFG->forcelogin) { require_login(); } - // security: only editing teachers can access backups - if ((!isteacheredit($course->id)) - and (count($args) >= 2) - and (strtolower($args[1]) == 'backupdata')) { + // it's OK to get here if no course was specified - error('Access not allowed'); + $pathname = "$CFG->dataroot$pathinfo"; + if ($pathargs = explode("?",$pathname)) { + $pathname = $pathargs[0]; // Only keep what's before the '?' + } + $filename = $args[$numargs-1]; + if ($fileargs = explode("?",$filename)) { + $filename = $fileargs[0]; // Only keep what's before the '?' } - if (is_dir($pathname)) { - if (file_exists($pathname.'/index.html')) { - $pathname = rtrim($pathname, '/').'/index.html'; - $args[] = 'index.html'; - } else if (file_exists($pathname.'/index.htm')) { - $pathname = rtrim($pathname, '/').'/index.htm'; - $args[] = 'index.htm'; - } else if (file_exists($pathname.'/Default.htm')) { - $pathname = rtrim($pathname, '/').'/Default.htm'; - $args[] = 'Default.htm'; - } else { - // security: do not return directory node! - not_found($course->id); + if (file_exists($pathname)) { + $lastmodified = filemtime($pathname); + $mimetype = mimeinfo("type", $filename); + + header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); + header("Expires: " . gmdate("D, d M Y H:i:s", time() + $CFG->filelifetime) . " GMT"); + header("Cache-control: max_age = $CFG->filelifetime"); + header("Pragma: "); + header("Content-disposition: inline; filename=$filename"); + + + if (empty($CFG->filteruploadedfiles)) { + header("Content-length: ".filesize($pathname)); + header("Content-type: $mimetype"); + readfile($pathname); + + } else { /// Try and put the file through filters + if ($mimetype == "text/html") { + $options->noclean = true; + $output = format_text(implode('', file($pathname)), FORMAT_HTML, $options, $courseid); + + header("Content-length: ".strlen($output)); + header("Content-type: text/html"); + echo $output; + + } else if ($mimetype == "text/plain") { + $options->newlines = false; + $options->noclean = true; + $output = '
        '.format_text(implode('', file($pathname)), FORMAT_MOODLE, $options, $courseid).'
        '; + header("Content-length: ".strlen($output)); + header("Content-type: text/html"); + echo $output; + + } else { /// Just send it out raw + header("Content-length: ".filesize($pathname)); + header("Content-type: $mimetype"); + readfile($pathname); + } } + } else { + header("HTTP/1.0 404 not found"); + error(get_string("filenotfound", "error"), "$CFG->wwwroot/course/view.php?id=$courseid"); } - // security: teachers can view all assignments, students only their own - if ((count($args) >= 3) - and (strtolower($args[1]) == 'moddata') - and (strtolower($args[2]) == 'assignment')) { - - $lifetime = 0; // do not cache assignments, students may reupload them - if ((!isteacher($course->id)) && (count($args) != 6 || $args[4] != $USER->id)) { - error('Access not allowed'); - } - } - - // security: some protection of hidden resource files - // warning: it may break backwards compatibility - // TODO: case sensitive in PostgresQL, case insensitive in MySQL (ok?) - // TODO: should we protect directories too? - if ((!empty($CFG->preventaccesstohiddenfiles)) - and (count($args) >= 2) - and (!isteacher($course->id))) { - - $reference = ltrim($relativepath, "/{$args[0]}/"); - - $sql = "SELECT COUNT(r.id) " . - "FROM {$CFG->prefix}resource r, " . - "{$CFG->prefix}course_modules cm, " . - "{$CFG->prefix}modules m " . - "WHERE r.course = '{$course->id}' " . - "AND m.name = 'resource' " . - "AND cm.module = m.id " . - "AND cm.instance = r.id " . - "AND cm.visible = 0 " . - "AND r.type = 'file' " . - "AND r.reference = '{$reference}'"; - if (count_records_sql($sql)) { - error('Access not allowed'); - } - } - - // check that file exists - if (!file_exists($pathname)) { - not_found($course->id); - } - - // extra security: keep symbolic links inside dataroot/courseid if required - /*if (!empty($CFG->checksymlinks)) { - $realpath = realpath($pathname); - $realdataroot = realpath($CFG->dataroot.'/'.$course->id); - if (strpos($realpath, $realdataroot) !== 0) { - not_found($course->id); - } - }*/ - - // ======================================== - // finally send the file - // ======================================== - $filename = $args[count($args)-1]; - send_file($pathname, $filename, $lifetime, !empty($CFG->filteruploadedfiles)); - - function not_found($courseid) { - global $CFG; - header('HTTP/1.0 404 not found'); - error(get_string('filenotfound', 'error'), $CFG->wwwroot.'/course/view.php?id='.$courseid); //this is not displayed on IIS?? - } + exit; ?> diff --git a/files/index.php b/files/index.php index 8f6a386ad5f..287d59d1595 100644 --- a/files/index.php +++ b/files/index.php @@ -1,4 +1,4 @@ -libdir.'/filelib.php'); - - $id = required_param('id', PARAM_INT); - $file = optional_param('file', '', PARAM_PATH); - $wdir = optional_param('wdir', '', PARAM_PATH); - $action = optional_param('action', '', PARAM_ACTION); - $name = optional_param('name', '', PARAM_FILE); - $oldname = optional_param('oldname', '', PARAM_FILE); - $choose = optional_param('choose', '', PARAM_CLEAN); - - - if ($choose) { - if (count(explode('.', $choose)) != 2) { - error('Incorrect format for choose parameter'); - } - } + require("../config.php"); + require_variable($id); + optional_variable($file, ""); + optional_variable($wdir, ""); + optional_variable($action, ""); if (! $course = get_record("course", "id", $id) ) { error("That's an invalid course id"); @@ -37,19 +25,14 @@ } function html_footer() { - - global $course, $choose; - - if ($choose) { - echo "
        "; - } else { - echo "
        "; - print_footer($course); - } + global $course; + echo ""; + print_footer($course); } function html_header($course, $wdir, $formfield=""){ - global $CFG, $ME, $choose; + + global $CFG; if (! $site = get_site()) { error("Invalid site!"); @@ -60,7 +43,7 @@ } else { $strfiles = get_string("files"); } - + if ($wdir == "/") { $fullnav = "$strfiles"; } else { @@ -71,59 +54,29 @@ for ($i=1; $i<$numdirs-1; $i++) { $navigation .= " -> "; $link .= "/".urlencode($dirs[$i]); - $navigation .= "id&wdir=$link&choose=$choose\">".$dirs[$i].""; + $navigation .= "id&wdir=$link\">".$dirs[$i].""; } - $fullnav = "id&wdir=/&choose=$choose\">$strfiles $navigation -> ".$dirs[$numdirs-1]; + $fullnav = "id&wdir=/\">$strfiles $navigation -> ".$dirs[$numdirs-1]; } + if ($course->id == $site->id) { + print_header("$course->shortname: $strfiles", "$course->fullname", + "admin/index.php\">".get_string("administration"). + " -> $fullnav", $formfield); - if ($choose) { - print_header(); - - $chooseparts = explode('.', $choose); - - ?> - - - ', '»', "$course->shortname -> $fullnav"); - echo ''; - - if ($course->id == $site->id) { - print_heading(get_string("publicsitefileswarning"), "center", 2); - } + print_heading(get_string("publicsitefileswarning"), "center", 2); } else { - - if ($course->id == $site->id) { - print_header("$course->shortname: $strfiles", "$course->fullname", - "admin/index.php\">".get_string("administration"). - " -> $fullnav", $formfield); - - print_heading(get_string("publicsitefileswarning"), "center", 2); - - } else { - print_header("$course->shortname: $strfiles", "$course->fullname", - "id\">$course->shortname". - " -> $fullnav", $formfield); - } + print_header("$course->shortname: $strfiles", "$course->fullname", + "id\">$course->shortname". + " -> $fullnav", $formfield); } - - echo ""; + echo "
        "; echo ""; echo "'; +function print_cell($alignment="center", $text=" ") { + echo "\n"; } function displaydir ($wdir) { @@ -653,12 +649,11 @@ function displaydir ($wdir) { global $basedir; global $id; global $USER, $CFG; - global $choose; $fullpath = $basedir.$wdir; $directory = opendir($fullpath); // Find all files - while (false !== ($file = readdir($directory))) { + while ($file = readdir($directory)) { if ($file == "." || $file == "..") { continue; } @@ -687,58 +682,46 @@ function displaydir ($wdir) { $strunzip = get_string("unzip"); $strlist = get_string("list"); $strrestore= get_string("restore"); - $strchoose = get_string("choose"); - echo ""; - echo ''; - echo "
        "; - echo "
        "; - } - if (! $basedir = make_upload_directory("$course->id")) { error("The site administrator needs to fix the file permissions"); } @@ -132,16 +85,17 @@ // End of configuration and access control + require("mimetypes.php"); - if (!$wdir) { - $wdir="/"; - } - - if (($wdir != '/' and detect_munged_arguments($wdir, 0)) - or ($file != '' and detect_munged_arguments($file, 0))) { + $regexp="\\.\\."; + if (ereg( $regexp, $file, $regs )| ereg( $regexp, $wdir,$regs )) { $message = "Error: Directories can not contain \"..\""; $wdir = "/"; $action = ""; + } + + if (!$wdir) { + $wdir="/"; } if ($wdir == "/backupdata") { @@ -155,19 +109,33 @@ case "upload": html_header($course, $wdir); - require_once($CFG->dirroot.'/lib/uploadlib.php'); - - if (!empty($save) and confirm_sesskey()) { - $course->maxbytes = 0; // We are ignoring course limits - $um = new upload_manager('userfile',false,false,$course,false,0); - $dir = "$basedir$wdir"; - if ($um->process_file_uploads($dir)) { - notify(get_string('uploadedfile')); - } - // um will take care of error reporting. - displaydir($wdir); + if (!empty($_FILES['userfile'])) { + $userfile = $_FILES['userfile']; } else { - $upload_max_filesize = get_max_upload_file_size($CFG->maxbytes); + $save = false; + } + if (!empty($save)) { + if (!is_uploaded_file($userfile['tmp_name']) or $userfile['size'] == 0) { + notify(get_string("uploadnofilefound")); + } else { + $userfile_name = clean_filename($userfile['name']); + if ($userfile_name) { + $newfile = "$basedir$wdir/$userfile_name"; + if (move_uploaded_file($userfile['tmp_name'], $newfile)) { + chmod($newfile, 0666); + $a = NULL; + $a->file = "$userfile_name (".$userfile['type'].")"; + $a->directory = $wdir; + print_string("uploadedfileto", "", $a); + } else { + notify(get_string("uploadproblem", "", $userfile_name)); + } + } + } + displaydir($wdir); + + } else { + $upload_max_filesize = get_max_upload_file_size($CFG->maxbytes); // Restricted by site setting $filesize = display_size($upload_max_filesize); $struploadafile = get_string("uploadafile"); @@ -175,38 +143,36 @@ $strmaxsize = get_string("maxsize", "", $filesize); $strcancel = get_string("cancel"); - echo "

        $struploadafile ($strmaxsize) --> $wdir"; - echo "
        "; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " sesskey\" />"; - upload_print_form_fragment(1,array('userfile'),null,false,null,$upload_max_filesize,0,false); - echo "
        "; - echo " "; - echo ""; - echo ""; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo "
        "; - echo "
        "; + echo "

        $struploadafile ($strmaxsize) --> $wdir"; + echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo " "; + echo ""; + echo ""; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; } html_footer(); break; case "delete": - if (!empty($confirm) and confirm_sesskey()) { + if (!empty($confirm)) { html_header($course, $wdir); foreach ($USER->filelist as $file) { $fullfile = $basedir.$file; if (! fulldelete($fullfile)) { - echo "
        Error: Could not delete: $fullfile"; + echo "
        Error: Could not delete: $fullfile"; } } clearfilelist(); @@ -216,14 +182,14 @@ } else { html_header($course, $wdir); if (setfilelist($_POST)) { - echo "

        ".get_string("deletecheckwarning").":

        "; + echo "

        ".get_string("deletecheckwarning").":

        "; print_simple_box_start("center"); printfilelist($USER->filelist); print_simple_box_end(); echo "
        "; notice_yesno (get_string("deletecheckfiles"), - "index.php?id=$id&wdir=$wdir&action=delete&confirm=1&sesskey=$USER->sesskey", - "index.php?id=$id&wdir=$wdir&action=cancel"); + "index.php?id=$id&wdir=$wdir&action=delete&confirm=1", + "index.php?id=$id&wdir=$wdir&action=cancel"); } else { displaydir($wdir); } @@ -233,10 +199,10 @@ case "move": html_header($course, $wdir); - if (($count = setfilelist($_POST)) and confirm_sesskey()) { + if ($count = setfilelist($_POST)) { $USER->fileop = $action; $USER->filesource = $wdir; - echo "

        "; + echo "

        "; print_string("selectednowmove", "moodle", $count); echo "

        "; } @@ -246,13 +212,13 @@ case "paste": html_header($course, $wdir); - if (isset($USER->fileop) and ($USER->fileop == "move") and confirm_sesskey()) { + if (isset($USER->fileop) and $USER->fileop == "move") { foreach ($USER->filelist as $file) { $shortfile = basename($file); $oldfile = $basedir.$file; $newfile = $basedir.$wdir."/".$shortfile; if (!rename($oldfile, $newfile)) { - echo "

        Error: $shortfile not moved"; + echo "

        Error: $shortfile not moved"; } } } @@ -262,7 +228,7 @@ break; case "rename": - if (!empty($name) and confirm_sesskey()) { + if (!empty($name)) { html_header($course, $wdir); $name = clean_filename($name); if (file_exists($basedir.$wdir."/".$name)) { @@ -277,33 +243,30 @@ $strcancel = get_string("cancel"); $strrenamefileto = get_string("renamefileto", "moodle", $file); html_header($course, $wdir, "form.name"); - echo "

        $strrenamefileto:"; - echo "
        "; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo " sesskey\" />"; - echo " "; - echo " "; - echo "
        "; - echo "
        "; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo "
        "; - echo "
        "; + echo "

        $strrenamefileto:"; + echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; } html_footer(); break; case "mkdir": - if (!empty($name) and confirm_sesskey()) { + if (!empty($name)) { html_header($course, $wdir); $name = clean_filename($name); if (file_exists("$basedir$wdir/$name")) { @@ -318,40 +281,37 @@ $strcancel = get_string("cancel"); $strcreatefolder = get_string("createfolder", "moodle", $wdir); html_header($course, $wdir, "form.name"); - echo "

        $strcreatefolder:"; - echo "
        "; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo " sesskey\" />"; - echo " "; - echo "
        "; - echo "
        "; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo "
        "; - echo "
        "; + echo "

        $strcreatefolder:"; + echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; } html_footer(); break; case "edit": html_header($course, $wdir); - if (isset($text) and confirm_sesskey()) { + if (isset($text)) { $fileptr = fopen($basedir.$file,"w"); fputs($fileptr, stripslashes($text)); fclose($fileptr); displaydir($wdir); } else { - $streditfile = get_string("edit", "", "$file"); + $streditfile = get_string("edit", "", "$file"); $fileptr = fopen($basedir.$file, "r"); $contents = fread($fileptr, filesize($basedir.$file)); fclose($fileptr); @@ -361,31 +321,27 @@ } else { $usehtmleditor = false; } - $usehtmleditor = false; // Always keep it off for now print_heading("$streditfile"); - echo "
        "; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo " sesskey\" />"; + echo "
        "; + echo ""; + echo " "; + echo " "; + echo " "; + echo " "; print_textarea($usehtmleditor, 25, 80, 680, 400, "text", $contents); - echo "
        "; - echo " "; - echo ""; - echo ""; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo "
        "; - echo "
        "; + echo "
        "; + echo " "; + echo ""; + echo ""; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; if ($usehtmleditor) { use_html_editor(); @@ -397,19 +353,28 @@ break; case "zip": - if (!empty($name) and confirm_sesskey()) { + if (!empty($name)) { html_header($course, $wdir); $name = clean_filename($name); - - $files = array(); - foreach ($USER->filelist as $file) { - $files[] = "$basedir/$file"; + if (empty($CFG->zip)) { // Use built-in php-based zip function + $files = array(); + foreach ($USER->filelist as $file) { + $files[] = "$basedir/$file"; + } + include_once("$CFG->libdir/pclzip/pclzip.lib.php"); + $archive = new PclZip("$basedir/$wdir/$name"); + if (($list = $archive->create($files,'',"$basedir/$wdir/")) == 0) { + error($archive->errorInfo(true)); + } + } else { // Use external zip program + $files = ""; + foreach ($USER->filelist as $file) { + $files .= basename($file); + $files .= " "; + } + $command = "cd $basedir/$wdir ; $CFG->zip -r $name $files"; + Exec($command); } - - if (!zip_files($files,"$basedir/$wdir/$name")) { - error(get_string("zipfileserror","error")); - } - clearfilelist(); displaydir($wdir); @@ -417,31 +382,28 @@ html_header($course, $wdir, "form.name"); if (setfilelist($_POST)) { - echo "

        ".get_string("youareabouttocreatezip").":

        "; + echo "

        ".get_string("youareabouttocreatezip").":

        "; print_simple_box_start("center"); printfilelist($USER->filelist); print_simple_box_end(); - echo "
        "; - echo "

        ".get_string("whattocallzip"); - echo "
        "; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo " sesskey\" />"; - echo " "; - echo "
        "; - echo "
        "; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo "
        "; - echo "
        "; + echo "
        "; + echo "

        ".get_string("whattocallzip"); + echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; } else { displaydir($wdir); clearfilelist(); @@ -452,26 +414,62 @@ case "unzip": html_header($course, $wdir); - if (!empty($file) and confirm_sesskey()) { + if (!empty($file)) { + $strname = get_string("name"); + $strsize = get_string("size"); + $strmodified = get_string("modified"); + $strstatus = get_string("status"); $strok = get_string("ok"); $strunpacking = get_string("unpacking", "", $file); - echo "

        $strunpacking:

        "; + echo "

        $strunpacking:

        "; $file = basename($file); - if (!unzip_file("$basedir/$wdir/$file")) { - error(get_string("unzipfileserror","error")); + if (empty($CFG->unzip)) { // Use built-in php-based unzip function + include_once("$CFG->libdir/pclzip/pclzip.lib.php"); + $archive = new PclZip("$basedir/$wdir/$file"); + if (!$list = $archive->extract("$basedir/$wdir")) { + error($archive->errorInfo(true)); + } else { // print some output + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + foreach ($list as $item) { + echo ""; + $item['filename'] = str_replace("$basedir/$wdir/", "", $item['filename']); + print_cell("left", $item['filename']); + if (! $item['folder']) { + print_cell("right", display_size($item['size'])); + } else { + echo ""; + } + $filedate = userdate($item['mtime'], get_string("strftimedatetime")); + print_cell("right", $filedate); + print_cell("right", $item['status']); + echo ""; + } + echo "
        $strname$strsize$strmodified$strstatus
         
        "; + } + + } else { // Use external unzip program + print_simple_box_start("center"); + echo "
        ";
        +                    $command = "cd $basedir/$wdir ; $CFG->unzip -o $file 2>&1";
        +                    passthru($command);
        +                    echo "
        "; + print_simple_box_end(); } - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo "
        "; - echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; } else { displaydir($wdir); } @@ -480,46 +478,45 @@ case "listzip": html_header($course, $wdir); - if (!empty($file) and confirm_sesskey()) { + if (!empty($file)) { $strname = get_string("name"); $strsize = get_string("size"); $strmodified = get_string("modified"); $strok = get_string("ok"); $strlistfiles = get_string("listfiles", "", $file); - echo "

        $strlistfiles:

        "; + echo "

        $strlistfiles:

        "; $file = basename($file); include_once("$CFG->libdir/pclzip/pclzip.lib.php"); - $archive = new PclZip(cleardoubleslashes("$basedir/$wdir/$file")); - if (!$list = $archive->listContent(cleardoubleslashes("$basedir/$wdir"))) { + $archive = new PclZip("$basedir/$wdir/$file"); + if (!$list = $archive->listContent("$basedir/$wdir")) { notify($archive->errorInfo(true)); } else { - echo ""; - echo ""; + echo "
        $strname$strsize$strmodified
        "; + echo ""; foreach ($list as $item) { echo ""; - print_cell("left", $item['filename'], 'name'); + print_cell("left", $item['filename']); if (! $item['folder']) { - print_cell("right", display_size($item['size']), 'size'); + print_cell("right", display_size($item['size'])); } else { echo ""; } $filedate = userdate($item['mtime'], get_string("strftimedatetime")); - print_cell("right", $filedate, 'date'); + print_cell("right", $filedate); echo ""; } echo "
        $strname$strsize$strmodified
         
        "; } - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo "
        "; - echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; } else { displaydir($wdir); } @@ -528,24 +525,24 @@ case "restore": html_header($course, $wdir); - if (!empty($file) and confirm_sesskey()) { - echo "

        ".get_string("youaregoingtorestorefrom").":

        "; + if (!empty($file)) { + echo "

        ".get_string("youaregoingtorestorefrom").":

        "; print_simple_box_start("center"); echo $file; print_simple_box_end(); echo "
        "; - echo "

        ".get_string("areyousuretorestorethisinfo")."

        "; - $restore_path = "$CFG->wwwroot/backup/restore.php"; + echo "

        ".get_string("areyousuretorestorethisinfo")."

        "; + $restore_path = "../backup/restore.php"; notice_yesno (get_string("areyousuretorestorethis"), - $restore_path."?id=".$id."&file=".cleardoubleslashes($id.$wdir."/".$file), - "index.php?id=$id&wdir=$wdir&action=cancel"); + $restore_path."?id=".$id."&file=".$id.$wdir."/".$file, + "index.php?id=$id&wdir=$wdir&action=cancel"); } else { displaydir($wdir); } html_footer(); break; - case "cancel": + case "cancel"; clearfilelist(); default: @@ -558,10 +555,11 @@ /// FILE FUNCTIONS /////////////////////////////////////////////////////////// + function fulldelete($location) { if (is_dir($location)) { $currdir = opendir($location); - while (false !== ($file = readdir($currdir))) { + while ($file = readdir($currdir)) { if ($file <> ".." && $file <> ".") { $fullfile = $location."/".$file; if (is_dir($fullfile)) { @@ -600,10 +598,7 @@ function setfilelist($VARS) { foreach ($VARS as $key => $val) { if (substr($key,0,4) == "file") { $count++; - $val = rawurldecode($val); - if (!detect_munged_arguments($val, 0)) { - $USER->filelist[] = $val; - } + $USER->filelist[] = rawurldecode($val); } } return $count; @@ -622,10 +617,10 @@ function printfilelist($filelist) { foreach ($filelist as $file) { if (is_dir($basedir.$file)) { - echo "pixpath/f/folder.gif\" height=\"16\" width=\"16\" alt=\"\" /> $file
        "; + echo "pixpath/f/folder.gif\" height=16 width=16> $file
        "; $subfilelist = array(); $currdir = opendir($basedir.$file); - while (false !== ($subfile = readdir($currdir))) { + while ($subfile = readdir($currdir)) { if ($subfile <> ".." && $subfile <> ".") { $subfilelist[] = $file."/".$subfile; } @@ -634,17 +629,18 @@ function printfilelist($filelist) { } else { $icon = mimeinfo("icon", $file); - echo "pixpath/f/$icon\" height=\"16\" width=\"16\" alt=\"\" /> $file
        "; + echo "pixpath/f/$icon\" height=16 width=16> $file
        "; } } } -function print_cell($alignment='center', $text=' ', $class='') { - if ($class) { - $class = ' class="'.$class.'"'; - } - echo '
        '.$text.'"; + echo ""; + echo "$text"; + echo ""; + echo "
        "; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo "\n"; + echo ""; + echo "
        "; + echo "
        $strname$strsize$strmodified$straction
        "; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; if ($wdir == "/") { $wdir = ""; } - if (!empty($wdir)) { - $dirlist[] = '..'; - } $count = 0; if (!empty($dirlist)) { asort($dirlist); foreach ($dirlist as $dir) { - echo ""; - if ($dir == '..') { - $fileurl = rawurlencode(dirname($wdir)); - print_cell(); - print_cell('left', ''.get_string('parentfolder').''.get_string('parentfolder').'', 'name'); - print_cell(); - print_cell(); - print_cell(); + $count++; - } else { - $count++; - $filename = $fullpath."/".$dir; - $fileurl = rawurlencode($wdir."/".$dir); - $filesafe = rawurlencode($dir); - $filesize = display_size(get_directory_size("$fullpath/$dir")); - $filedate = userdate(filemtime($filename), "%d %b %Y, %I:%M %p"); - print_cell("center", "", 'checkbox'); - print_cell("left", "pixpath/f/folder.gif\" height=\"16\" width=\"16\" border=\"0\" alt=\"Folder\" />".htmlspecialchars($dir)."", 'name'); - print_cell("right", $filesize, 'size'); - print_cell("right", $filedate, 'date'); - print_cell("right", "$strrename", 'commands'); - } + $filename = $fullpath."/".$dir; + $fileurl = rawurlencode($wdir."/".$dir); + $filesafe = rawurlencode($dir); + $filesize = display_size(get_directory_size("$fullpath/$dir")); + $filedate = userdate(filemtime($filename), "%d %b %Y, %I:%M %p"); - echo ""; + echo ""; + + print_cell("center", ""); + print_cell("left", "pixpath/f/folder.gif\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"Folder\">".htmlspecialchars($dir).""); + print_cell("right", "$filesize"); + print_cell("right", $filedate); + print_cell("right", "$strrename"); + + echo ""; } } @@ -756,69 +739,54 @@ function displaydir ($wdir) { $fileurlsafe = rawurlencode($fileurl); $filedate = userdate(filemtime($filename), "%d %b %Y, %I:%M %p"); - if (substr($fileurl,0,1) == '/') { - $selectfile = substr($fileurl,1); - } else { - $selectfile = $fileurl; - } + echo ""; - echo ""; - - print_cell("center", "", 'checkbox'); - echo ""; + echo ""; $file_size = filesize($filename); - print_cell("right", display_size($file_size), 'size'); - print_cell("right", $filedate, 'date'); - - if ($choose) { - $edittext = "$strchoose "; - } else { - $edittext = ''; - } - - + print_cell("right", display_size($file_size)); + print_cell("right", $filedate); if ($icon == "text.gif" || $icon == "html.gif") { - $edittext .= "$stredit"; + $edittext = "$stredit"; } else if ($icon == "zip.gif") { - $edittext .= "sesskey&choose=$choose\">$strunzip "; - $edittext .= "sesskey&choose=$choose\">$strlist "; + $edittext = "$strunzip "; + $edittext .= "$strlist "; if (!empty($CFG->backup_version) and isteacheredit($id)) { - $edittext .= "sesskey&choose=$choose\">$strrestore "; + $edittext .= "$strrestore "; } + } else { + $edittext = ""; } - - print_cell("right", "$edittext $strrename", 'commands'); + print_cell("right", "$edittext $strrename"); - echo ""; + echo ""; } } - echo "
        $strname$strsize$strmodified$straction
        "; + print_cell("center", ""); + echo ""; if ($CFG->slasharguments) { $ffurl = "/file.php/$id$fileurl"; } else { $ffurl = "/file.php?file=/$id$fileurl"; } link_to_popup_window ($ffurl, "display", - "pixpath/f/$icon\" height=\"16\" width=\"16\" border=\"0\" alt=\"File\" />", + "pixpath/f/$icon\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"File\">", 480, 640); - echo ' '; + echo ""; link_to_popup_window ($ffurl, "display", htmlspecialchars($file), 480, 640); - echo "
        "; - echo "
        "; + echo ""; + echo "
        "; if (empty($wdir)) { $wdir = "/"; } - echo ""; - echo ""; + echo ""; + echo "
        "; - echo ""; - echo ''; - echo " "; - echo "sesskey\" />"; + echo ""; + echo ""; - echo ""; - echo "
        "; + echo ""; + echo " "; $options = array ( "move" => "$strmovetoanotherfolder", "delete" => "$strdeletecompletely", @@ -828,38 +796,34 @@ function displaydir ($wdir) { choose_from_menu ($options, "action", "", "$strwithchosenfiles...", "javascript:document.dirform.submit()"); } - echo ""; - echo ""; + echo ""; + echo ""; if (!empty($USER->fileop) and ($USER->fileop == "move") and ($USER->filesource <> $wdir)) { - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " sesskey\" />"; - echo " "; - echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; } - echo "
        "; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo "
        "; - echo "
        "; - echo "
        "; - echo ' '; - echo " "; - echo " "; - echo " "; - echo " "; - echo "
        "; - echo "
        "; - echo "
        "; + echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; + echo "
        "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
        "; + echo "
        "; + echo "
        "; } diff --git a/files/mimetypes.php b/files/mimetypes.php new file mode 100644 index 00000000000..d1b74894feb --- /dev/null +++ b/files/mimetypes.php @@ -0,0 +1,92 @@ + array ("type"=>"document/unknown", "icon"=>"unknown.gif"), + "3gp" => array ("type"=>"video/quicktime", "icon"=>"video.gif"), + "ai" => array ("type"=>"application/postscript", "icon"=>"image.gif"), + "aif" => array ("type"=>"audio/x-aiff", "icon"=>"audio.gif"), + "aiff" => array ("type"=>"audio/x-aiff", "icon"=>"audio.gif"), + "aifc" => array ("type"=>"audio/x-aiff", "icon"=>"audio.gif"), + "applescript" => array ("type"=>"text/plain", "icon"=>"text.gif"), + "asc" => array ("type"=>"text/plain", "icon"=>"text.gif"), + "au" => array ("type"=>"audio/au", "icon"=>"audio.gif"), + "avi" => array ("type"=>"video/x-ms-wm", "icon"=>"avi.gif"), + "bmp" => array ("type"=>"image/bmp", "icon"=>"image.gif"), + "cs" => array ("type"=>"application/x-csh", "icon"=>"text.gif"), + "css" => array ("type"=>"text/css", "icon"=>"text.gif"), + "dv" => array ("type"=>"video/x-dv", "icon"=>"video.gif"), + "doc" => array ("type"=>"application/msword", "icon"=>"word.gif"), + "dif" => array ("type"=>"video/x-dv", "icon"=>"video.gif"), + "eps" => array ("type"=>"application/postscript", "icon"=>"pdf.gif"), + "gif" => array ("type"=>"image/gif", "icon"=>"image.gif"), + "gtar" => array ("type"=>"application/x-gtar", "icon"=>"zip.gif"), + "gz" => array ("type"=>"application/g-zip", "icon"=>"zip.gif"), + "gzip" => array ("type"=>"application/g-zip", "icon"=>"zip.gif"), + "h" => array ("type"=>"text/plain", "icon"=>"text.gif"), + "hqx" => array ("type"=>"application/mac-binhex40", "icon"=>"zip.gif"), + "html" => array ("type"=>"text/html", "icon"=>"html.gif"), + "htm" => array ("type"=>"text/html", "icon"=>"html.gif"), + "jpe" => array ("type"=>"image/jpeg", "icon"=>"image.gif"), + "jpeg" => array ("type"=>"image/jpeg", "icon"=>"image.gif"), + "jpg" => array ("type"=>"image/jpeg", "icon"=>"image.gif"), + "js" => array ("type"=>"application/x-javascript", "icon"=>"text.gif"), + "latex"=> array ("type"=>"application/x-latex", "icon"=>"text.gif"), + "m" => array ("type"=>"text/plain", "icon"=>"text.gif"), + "mov" => array ("type"=>"video/quicktime", "icon"=>"video.gif"), + "movie"=> array ("type"=>"video/x-sgi-movie", "icon"=>"video.gif"), + "m3u" => array ("type"=>"audio/x-mpegurl", "icon"=>"audio.gif"), + "mp3" => array ("type"=>"audio/mp3", "icon"=>"audio.gif"), + "mp4" => array ("type"=>"video/mp4", "icon"=>"video.gif"), + "mpeg" => array ("type"=>"video/mpeg", "icon"=>"video.gif"), + "mpe" => array ("type"=>"video/mpeg", "icon"=>"video.gif"), + "mpg" => array ("type"=>"video/mpeg", "icon"=>"video.gif"), + "pct" => array ("type"=>"image/pict", "icon"=>"image.gif"), + "pdf" => array ("type"=>"application/pdf", "icon"=>"pdf.gif"), + "php" => array ("type"=>"text/plain", "icon"=>"text.gif"), + "pic" => array ("type"=>"image/pict", "icon"=>"image.gif"), + "pict" => array ("type"=>"image/pict", "icon"=>"image.gif"), + "png" => array ("type"=>"image/png", "icon"=>"image.gif"), + "pps" => array ("type"=>"application/vnd.ms-powerpoint", "icon"=>"powerpoint.gif"), + "ppt" => array ("type"=>"application/vnd.ms-powerpoint", "icon"=>"powerpoint.gif"), + "ps" => array ("type"=>"application/postscript", "icon"=>"pdf.gif"), + "qt" => array ("type"=>"video/quicktime", "icon"=>"video.gif"), + "ra" => array ("type"=>"audio/x-realaudio", "icon"=>"audio.gif"), + "ram" => array ("type"=>"audio/x-pn-realaudio", "icon"=>"audio.gif"), + "rm" => array ("type"=>"audio/x-pn-realaudio", "icon"=>"audio.gif"), + "rtf" => array ("type"=>"text/rtf", "icon"=>"text.gif"), + "rtx" => array ("type"=>"text/richtext", "icon"=>"text.gif"), + "sh" => array ("type"=>"application/x-sh", "icon"=>"text.gif"), + "sit" => array ("type"=>"application/x-stuffit", "icon"=>"zip.gif"), + "smi" => array ("type"=>"application/smil", "icon"=>"text.gif"), + "smil" => array ("type"=>"application/smil", "icon"=>"text.gif"), + "swf" => array ("type"=>"application/x-shockwave-flash", "icon"=>"flash.gif"), + "tar" => array ("type"=>"application/x-tar", "icon"=>"zip.gif"), + "tif" => array ("type"=>"image/tiff", "icon"=>"image.gif"), + "tiff" => array ("type"=>"image/tiff", "icon"=>"image.gif"), + "tex" => array ("type"=>"application/x-tex", "icon"=>"text.gif"), + "texi" => array ("type"=>"application/x-texinfo", "icon"=>"text.gif"), + "texinfo" => array ("type"=>"application/x-texinfo", "icon"=>"text.gif"), + "tsv" => array ("type"=>"text/tab-separated-values", "icon"=>"text.gif"), + "txt" => array ("type"=>"text/plain", "icon"=>"text.gif"), + "wav" => array ("type"=>"audio/wav", "icon"=>"audio.gif"), + "wmv" => array ("type"=>"video/x-ms-wmv", "icon"=>"avi.gif"), + "asf" => array ("type"=>"video/x-ms-asf", "icon"=>"avi.gif"), + "xls" => array ("type"=>"application/vnd.ms-excel", "icon"=>"excel.gif"), + "xml" => array ("type"=>"text/xml", "icon"=>"xml.gif"), + "xsl" => array ("type"=>"text/xml", "icon"=>"xml.gif"), + "zip" => array ("type"=>"application/zip", "icon"=>"zip.gif") + ); + + if (eregi("\.([a-z0-9]+)$", $filename, $match)) { + if(isset($mimeinfo[strtolower($match[1])][$element])) { + return $mimeinfo[strtolower($match[1])][$element]; + } else { + return $mimeinfo["xxx"][$element]; // By default + } + } else { + return $mimeinfo["xxx"][$element]; // By default + } +} + +?> diff --git a/filter/activitynames/filter.php b/filter/activitynames/filter.php index d7565339c47..9e52f155c1c 100644 --- a/filter/activitynames/filter.php +++ b/filter/activitynames/filter.php @@ -1,4 +1,4 @@ -id; + } } $course = get_record("course","id",$courseid); $modinfo = unserialize($course->modinfo); if (!empty($modinfo)) { - - $linkarray = array(); - - //Sort modinfo by name length - usort($modinfo,'comparemodulenamesbylength'); - $cm = ''; foreach ($modinfo as $activity) { //Exclude labels and hidden items @@ -31,22 +27,90 @@ $href_tag_begin = "wwwroot/mod/$activity->mod/view.php?id=$activity->cm\">"; $currentname = urldecode($activity->name); if ($currentname = trim($currentname)) { - $linkarray[] = new filterobject($currentname, $href_tag_begin, '', false, true); + //Avoid integers < 1000 to be linked. See bug 1441. + $intcurrent = intval($currentname); + if (!(!empty($intcurrent) && strval($intcurrent) == $currentname && $intcurrent < 1000)) { + $text = activity_link_names($text,$currentname,$href_tag_begin, ""); + } } } } - $text = filter_phrases ($text, $linkarray); } return $text; } + + function activity_link_names($text,$name,$href_tag_begin,$href_tag_end = "") { + $list_of_words_cp = strip_tags($name); + $list_of_words_cp = trim($list_of_words_cp,'|'); - //This function is used to order module names from longer to shorter - function comparemodulenamesbylength($a, $b) { - if (strlen($a->name) == strlen($b->name)) { - return 0; + $list_of_words_cp = trim($list_of_words_cp); + + $list_of_words_cp = preg_quote($list_of_words_cp,'/'); + + $invalidprefixs = "([a-zA-Z0-9])"; + $invalidsufixs = "([a-zA-Z0-9])"; + + //Avoid seaching in the string if it's inside invalidprefixs and invalidsufixs + $words = array(); + $regexp = '/'.$invalidprefixs.'('.$list_of_words_cp.')|('.$list_of_words_cp.')'.$invalidsufixs.'/is'; + preg_match_all($regexp,$text,$list_of_words); + + if ($list_of_words) { + foreach (array_unique($list_of_words[0]) as $key=>$value) { + $words['<*'.$key.'*>'] = $value; + } + if (!empty($words)) { + $text = str_replace($words,array_keys($words),$text); + } } - return (strlen($a->name) < strlen($b->name)) ? 1 : -1; + + //Now avoid searching inside the tag + $excludes = array(); + preg_match_all('/(.+?)<\/nolink>/is',$text,$list_of_excludes); + foreach (array_unique($list_of_excludes[0]) as $key=>$value) { + $excludes['<+'.$key.'+>'] = $value; + } + if (!empty($excludes)) { + $text = str_replace($excludes,array_keys($excludes),$text); + } + + //Now avoid searching inside links + $links = array(); + preg_match_all('/(.+?)<\/A>/is',$text,$list_of_links); + foreach (array_unique($list_of_links[0]) as $key=>$value) { + $links['<@'.$key.'@>'] = $value; + } + if (!empty($links)) { + $text = str_replace($links,array_keys($links),$text); + } + + //Now avoid searching inside every tag + $final = array(); + preg_match_all('/<(.+?)>/is',$text,$list_of_tags); + foreach (array_unique($list_of_tags[0]) as $key=>$value) { + $final['<|'.$key.'|>'] = $value; + } + if (!empty($final)) { + $text = str_replace($final,array_keys($final),$text); + } + + $text = preg_replace('/('.$list_of_words_cp.')/is', $href_tag_begin.'$1'.$href_tag_end,$text); + + //Now rebuild excluded areas + if (!empty($final)) { + $text = str_replace(array_keys($final),$final,$text); + } + if (!empty($links)) { + $text = str_replace(array_keys($links),$links,$text); + } + if (!empty($excludes)) { + $text = str_replace(array_keys($excludes),$excludes,$text); + } + if (!empty($words)) { + $text = str_replace(array_keys($words),$words,$text); + } + return $text; } ?> diff --git a/filter/algebra/algebradebug.php b/filter/algebra/algebradebug.php index 4883263e479..b14062b138d 100644 --- a/filter/algebra/algebradebug.php +++ b/filter/algebra/algebradebug.php @@ -61,14 +61,10 @@ $output = algebra2tex($algebra); $output = refineTeX($output); } - if (strpos($query,'ShowImage')||strpos($query,'SlashArguments')) { + if (strpos($query,'ShowImage')) { $output = algebra2tex($algebra); $output = refineTeX($output); - if (strpos($query,'ShowImage')) { - tex2image($output, $md5); - } else { - slasharguments($output, $md5); - } + tex2image($output, $md5); } else { outputText($output); } @@ -94,35 +90,9 @@ function algebra2tex($algebra) { if ( (PHP_OS == "WINNT") || (PHP_OS == "WIN32") || (PHP_OS == "Windows") ) { $algebra = "\"". str_replace('"','\"',$algebra) . "\""; - $cmd = "cd $CFG->dirroot\\$CFG->algebrafilterdirwin & algebra2tex.pl x/2"; - $test = `$cmd`; - if ($test != '\frac{x}{2}') { - echo "There is a problem with either Perl or the script algebra2tex.pl
        "; - $ecmd = $cmd . " 2>&1"; - echo `$ecmd` . "
        \n"; - echo "The shell command
        $cmd
        returned status = $status
        \n"; - $commandpath = "$CFG->dirroot\\$CFG->algebrafilterdirwin\\algebra2tex.pl"; - if (file_exists($commandpath)) { - echo "The file permissions of algebra2tex.pl are: " . decoct(fileperms($commandpath)) . "
        "; - } - die; - } $cmd = "cd $CFG->dirroot\\$CFG->algebrafilterdirwin & algebra2tex.pl $algebra"; } else { $algebra = escapeshellarg($algebra); - $cmd = "cd $CFG->dirroot/$CFG->algebrafilterdir; ./algebra2tex.pl x/2"; - $test = `$cmd`; - if ($test != '\frac{x}{2}') { - echo "There is a problem with either Perl or the script algebra2tex.pl
        "; - $ecmd = $cmd . " 2>&1"; - echo `$ecmd` . "
        \n"; - echo "The shell command
        $cmd
        returned status = $status
        \n"; - $commandpath = "$CFG->dirroot/$CFG->algebrafilterdir/algebra2tex.pl"; - if (file_exists($commandpath)) { - echo "The file permissions of algebra2tex.pl are: " . decoct(fileperms($commandpath)) . "
        "; - } - die; - } $cmd = "cd $CFG->dirroot/$CFG->algebrafilterdir; ./algebra2tex.pl $algebra"; } $texexp = `$cmd`; @@ -197,17 +167,17 @@ function outputText($texexp) { echo "\n"; } -function tex2image($texexp, $md5, $return=false) { +function tex2image($texexp, $md5) { global $CFG; $error_message1 = "Your system is not configured to run mimeTeX. "; - $error_message1 .= "You need to download the appropriate
        executable "; + $error_message1 .= "You need to download the appropriate
        executable "; $error_message1 .= "from "; $error_message1 .= "http://moodle.org/download/mimetex/, or obtain the "; - $error_message1 .= "C source
        from "; + $error_message1 .= "C source
        from
        "; $error_message1 .= "http://www.forkosh.com/mimetex.zip, compile it and "; - $error_message1 .= "put the executable into your
        moodle/filter/tex/ directory. "; - $error_message1 .= "You also need to edit your moodle/filter/algebra/pix.php file
        "; - $error_message1 .= ' by adding the line
               case "' . PHP_OS . "\":\n";
        +  $error_message1 .= "put the executable into your
        moodle/filter/tex/ directory. "; + $error_message1 .= "You also need to edit your moodle/filter/algebra/pix.php file
        "; + $error_message1 .= ' by adding the line
               case "' . PHP_OS . "\":\n";
           $error_message1 .= "           \$cmd = \"\\\\\"\$CFG->dirroot/\$CFG->texfilterdir/";
           $error_message1 .= 'mimetex.' . strtolower(PHP_OS) . "\\\\\" -e \\\\\"\$pathname\\\\\" \". escapeshellarg(\$texexp);";
           $error_message1 .= "
        You also need to add this to your algebradebug.php file."; @@ -254,9 +224,6 @@ function tex2image($texexp, $md5, $return=false) { } system($cmd, $status); } - if ($return) { - return $image; - } if ($texexp && file_exists($pathname)) { $lastmodified = filemtime($pathname); header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); @@ -269,50 +236,32 @@ function tex2image($texexp, $md5, $return=false) { readfile("$pathname"); } else { $ecmd = "$cmd 2>&1"; - echo `$ecmd` . "
        \n"; - echo "The shell command
        $cmd
        returned status = $status
        \n"; + echo `$ecmd` . "
        \n"; + echo "The shell command
        $cmd
        returned status = $status
        \n"; if ($status == 4) { - echo "Status corresponds to illegal instruction
        \n"; + echo "Status corresponds to illegal instruction
        \n"; } else if ($status == 11) { - echo "Status corresponds to bus error
        \n"; + echo "Status corresponds to bus error
        \n"; } else if ($status == 22) { - echo "Status corresponds to abnormal termination
        \n"; + echo "Status corresponds to abnormal termination
        \n"; } if (file_exists($commandpath)) { - echo "File size of mimetex executable $commandpath is " . filesize($commandpath) . "
        "; - echo "The file permissions are: " . decoct(fileperms($commandpath)) . "
        "; + echo "File size of mimetex executable $commandpath is " . filesize($commandpath) . "
        "; + echo "The file permissions are: " . decoct(fileperms($commandpath)) . "
        "; if (function_exists("md5_file")) { - echo "The md5 checksum of the file is " . md5_file($commandpath) . "
        "; + echo "The md5 checksum of the file is " . md5_file($commandpath) . "
        "; } else { $handle = fopen($commandpath,"rb"); $contents = fread($handle,16384); fclose($handle); - echo "The md5 checksum of the first 16384 bytes is " . md5($contents) . "
        "; + echo "The md5 checksum of the first 16384 bytes is " . md5($contents) . "
        "; } } else { - echo "mimetex executable $commandpath not found!
        "; + echo "mimetex executable $commandpath not found!
        "; } echo "Image not found!"; } } - -function slasharguments($texexp, $md5) { - global $CFG; - $admin = $CFG->wwwroot . '/' . $CFG->admin . '/config.php'; - $image = tex2image($texexp,$md5,true); - echo "

        If the following image displays correctly, set your "; - echo "Administration->Configuration->Variables "; - echo "setting for slasharguments to file.php/pic.jpg: "; - echo "

        \n"; - echo "

        Otherwise set it to file.php?file=pic.jpg "; - echo "It should display correctly as "; - echo "

        \n"; - echo "

        If neither equation image displays correctly, please seek "; - echo "further help at moodle.org at the "; - echo ""; - echo "Mathematics Tools Forum

        "; -} - ?> @@ -323,7 +272,7 @@ function slasharguments($texexp, $md5) {
        -
          @@ -335,18 +284,16 @@ function slasharguments($texexp, $md5) { A preliminary translation into TeX will appear in the box below.
        1. Next click on this button . A more refined translation into TeX will appear in the box below.
        2. -
        3. Then click on this button +
        4. Finally click on this button to show a graphic image of the algebraic expression.
        5. -
        6. Finally check your slash arguments setting -
        -


        +

        -

        -
        +
        +

        Debugging Help

        @@ -387,7 +334,7 @@ edit your moodle/filter/algebra/pix.php file to add

        to the list of operating systems in the switch (PHP_OS) statement. Windows users may have a problem properly unzipping mimetex.exe. Make sure that mimetex.exe is is PRECISELY -433152 bytes in size. If not, download fresh copy from +329728 bytes in size. If not, download fresh copy from http://moodle.org/download/mimetex/windows/mimetex.exe. Lastly check the execute permissions on your mimetex binary, as outlined in item 2 above. diff --git a/filter/algebra/filter.php b/filter/algebra/filter.php index d672da556d6..8558684ebfd 100644 --- a/filter/algebra/filter.php +++ b/filter/algebra/filter.php @@ -46,7 +46,7 @@ $CFG->algebrafilterdirwin = "filter\\algebra"; } -function string_file_picture_algebra($imagefile, $tex= "", $height="", $width="", $align="middle") { +function string_file_picture_algebra($imagefile, $tex= "", $height="", $width="") { // Given the path to a picture file in a course, or a URL, // this function includes the picture in the page. global $CFG; @@ -72,17 +72,17 @@ function string_file_picture_algebra($imagefile, $tex= "", $height="", $width="" } else { $output .= "wwwroot/$CFG->texfilterdir/displaytex.php?"; - $output .= urlencode($tex) . "\" onclick=\"return openpopup('/$CFG->texfilterdir/displaytex.php?"; + $output .= urlencode($tex) . "\" onClick=\"return openpopup('/$CFG->texfilterdir/displaytex.php?"; $output .= urlencode($tex) . "', 'popup', 'menubar=0,location=0,scrollbars,"; $output .= "resizable,width=300,height=240', 0);\">"; } - $output .= "\"\"slasharguments) { // Use this method if possible for better caching $output .= "$CFG->wwwroot/$CFG->algebrafilterdir/pix.php/$imagefile"; } else { $output .= "$CFG->wwwroot/$CFG->algebrafilterdir/pix.php?file=$imagefile"; } - $output .= "\" style=\"vertical-align:$align\" />"; + $output .= "\" />"; $output .= ""; } else { $output .= "Error: must pass URL or course"; @@ -136,14 +136,6 @@ function algebra_filter ($courseid, $text) { $algebra = $matches[1][$i] . $matches[2][$i]; $algebra = str_replace('','',$algebra); $algebra = str_replace('','',$algebra); - $align = "middle"; - if (preg_match('/^align=bottom /',$algebra)) { - $align = "text-bottom"; - $algebra = preg_replace('/^align=bottom /','',$algebra); - } else if (preg_match('/^align=top /',$algebra)) { - $align = "text-top"; - $algebra = preg_replace('/^align=top /','',$algebra); - } $md5 = md5($algebra); $filename = $md5 . ".gif"; if (! $texcache = get_record("cache_filters","filter","algebra", "md5key", $md5)) { @@ -228,8 +220,8 @@ function algebra_filter ($courseid, $text) { $texcache->md5key = $md5; $texcache->rawtext = addslashes($texexp); $texcache->timemodified = time(); - insert_record("cache_filters",$texcache, false); - $text = str_replace( $matches[0][$i], string_file_picture_algebra($filename, $texexp, '', '', $align), $text); + insert_record("cache_filters",$texcache); + $text = str_replace( $matches[0][$i], string_file_picture_algebra($filename, $texexp), $text); } else { $text = str_replace( $matches[0][$i],"Undetermined error: ",$text); } diff --git a/filter/algebra/pix.php b/filter/algebra/pix.php index d0218474d86..adf1a86a5e2 100644 --- a/filter/algebra/pix.php +++ b/filter/algebra/pix.php @@ -5,34 +5,40 @@ $nomoodlecookie = true; // Because it interferes with caching - require_once('../../config.php'); - require_once($CFG->libdir.'/filelib.php'); + require_once("../../config.php"); - $CFG->texfilterdir = 'filter/tex'; - $CFG->algebrafilterdir = 'filter/algebra'; - $CFG->algebraimagedir = 'filter/algebra'; + $CFG->algebrafilterdir = "filter/algebra"; + $CFG->texfilterdir = "filter/tex"; + $CFG->algebraimagedir = "filter/algebra"; + error_reporting(E_ALL); - $cmd = ''; // Initialise these variables - $status = ''; - - //error_reporting(E_ALL); - - $relativepath = get_file_argument('pix.php'); - - $args = explode('/', trim($relativepath, '/')); - - if (count($args) == 1) { - $image = $args[0]; - $pathname = $CFG->dataroot.'/'.$CFG->algebraimagedir.'/'.$image; + $lifetime = 86400; + if (isset($file)) { // workaround for situations where / syntax doesn't work + $pathinfo = '/' . $file; } else { - error('No valid arguments supplied'); + $pathinfo = get_slash_arguments("pix.php"); } + if (! $args = parse_slash_arguments($pathinfo)) { + error("No valid arguments supplied"); + } + + $numargs = count($args); + + if ($numargs == 1) { + $image = $args[0]; + $pathname = "$CFG->dataroot/$CFG->algebraimagedir/$image"; + $filetype = "image/gif"; + } else { + error("No valid arguments supplied"); + } + + if (!file_exists($pathname)) { $md5 = str_replace('.gif','',$image); - if ($texcache = get_record('cache_filters', 'filter', 'algebra', 'md5key', $md5)) { - if (!file_exists($CFG->dataroot.'/'.$CFG->algebraimagedir)) { + if ($texcache = get_record("cache_filters", "filter", "algebra", "md5key", $md5)) { + if (!file_exists("$CFG->dataroot/$CFG->algebraimagedir")) { make_upload_directory($CFG->algebraimagedir); } @@ -46,34 +52,29 @@ $texexp = str_replace('"','\"',$texexp); $cmd = "$CFG->dirroot/$CFG->texfilterdir/mimetex.exe"; $cmd = str_replace(' ','^ ',$cmd); - $cmd .= " ++ -e \"$pathname\" -- \"$texexp\""; + $cmd .= " ++ -e \"$pathname\" \"$texexp\""; } else if (is_executable("$CFG->dirroot/$CFG->texfilterdir/mimetex")) { /// Use the custom binary - $cmd = "$CFG->dirroot/$CFG->texfilterdir/mimetex -e $pathname -- ". escapeshellarg($texexp); - + $cmd = "$CFG->dirroot/$CFG->texfilterdir/mimetex -e $pathname ". escapeshellarg($texexp); + } else { /// Auto-detect the right TeX binary switch (PHP_OS) { case "Linux": - $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.linux\" -e \"$pathname\" -- ". escapeshellarg($texexp); + $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.linux\" -e \"$pathname\" ". escapeshellarg($texexp); break; case "Darwin": - $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.darwin\" -e \"$pathname\" -- ". escapeshellarg($texexp); + $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.darwin\" -e \"$pathname\" ". escapeshellarg($texexp); break; default: /// Nothing was found, so tell them how to fix it. - if ($CFG->debug > 7) { - echo "Make sure you have an appropriate MimeTeX binary here:\n\n"; - echo " $CFG->dirroot/$CFG->texfilterdir/mimetex\n\n"; - echo "and that it has the right permissions set on it as executable program.\n\n"; - echo "You can get the latest binaries for your ".PHP_OS." platform from: \n\n"; - echo " http://moodle.org/download/mimetex/"; - } else { - echo "Mimetex executable was not found,\n"; - echo "Please turn on debug mode in site configuration to see more info here."; - } - die; + echo "Make sure you have an appropriate MimeTeX binary here:\n\n"; + echo " $CFG->dirroot/$CFG->texfilterdir/mimetex\n\n"; + echo "and that it has the right permissions set on it as executable program.\n\n"; + echo "You can get the latest binaries for your ".PHP_OS." platform from: \n\n"; + echo " http://moodle.org/download/mimetex/"; + exit; break; } } @@ -82,16 +83,20 @@ } if (file_exists($pathname)) { - send_file($pathname, $image); + $lastmodified = filemtime($pathname); + header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); + 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-disposition: inline; filename=$image"); + header("Content-length: ".filesize($pathname)); + header("Content-type: $filetype"); + readfile("$pathname"); } else { - if ($CFG->debug > 7) { - echo "The shell command
        $cmd
        returned status = $status
        \n"; - echo "Image not found!
        "; - echo "Please try the wwwroot/$CFG->algebrafilterdir/algebradebug.php\">debugging script"; - } else { - echo "Image not found!
        "; - echo "Please try the wwwroot/$CFG->algebrafilterdir/algebradebug.php\">debugging script
        "; - echo "Please turn on debug mode in site configuration to see more info here."; - } + echo "The shell command
        $cmd
        returned status = $status
        \n"; + echo "Image not found!
        "; + echo "Please try the wwwroot/filter/algebra/algebradebug.php\">debugging script"; } + + exit; ?> diff --git a/filter/censor/filter.php b/filter/censor/filter.php index 121960a3755..df769b28bf4 100644 --- a/filter/censor/filter.php +++ b/filter/censor/filter.php @@ -3,9 +3,12 @@ // Censorship filtering // // This very simple example of a Text Filter will parse -// printed text, blacking out words perceived to be bad -// -// The list of words is in the lang/xx/moodle.php +// printed text, replacing words with other words +// +// To activate this filter, add a line like this to your +// list of filters in your Filter configuration: +// +// filter/censor/filter.php // ////////////////////////////////////////////////////////////// @@ -14,17 +17,10 @@ function censor_filter($courseid, $text) { - static $words; + static $search = array('fuck', 'cunt', 'shit', 'wank', 'cock'); + static $replace = array('f***', 'c***', 's***', 'w***', 'c***'); - if (empty($words)) { - $words = array(); - $badwords = explode(',', get_string('censorbadwords')); - foreach ($badwords as $badword) { - $words[] = new filterobject(trim($badword), '', '', false, false); - } - } - - return filter_phrases($text, $words); // Look for all these words in the text + return str_ireplace($search, $replace, $text); } diff --git a/filter/index.html b/filter/index.html deleted file mode 100644 index 8b137891791..00000000000 --- a/filter/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/filter/mediaplugin/filter.php b/filter/mediaplugin/filter.php index 155d1093e6e..58a446b0d11 100644 --- a/filter/mediaplugin/filter.php +++ b/filter/mediaplugin/filter.php @@ -16,32 +16,20 @@ /// courseid and the text to be filtered (in HTML form). function mediaplugin_filter($courseid, $text) { - global $CFG, $THEME; + global $CFG; if (empty($CFG->filter_mediaplugin_ignore_mp3)) { - static $c; - - if (empty($c)) { - if (!empty($THEME->filter_mediaplugin_colors)) { - $c = $THEME->filter_mediaplugin_colors; // You can set this up in your theme/xxx/config.php - } else { - $c = 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&waitForPlay=yes&'; - } - } - $c = htmlentities($c); $search = '/]*)>(.*?)<\/a>/i'; - $replace = '\\0 wwwroot/filter/mediaplugin/mp3player.swf?src=\\2.mp3\" />"; - $replace .= ' '; - $replace .= ' '; - $replace .= ' '; + $replace .= ' width="35" height="18" id="mp3player" align="">'; + $replace .= " wwwroot/filter/mediaplugin/mp3player.swf?src=\\2.mp3\">"; + $replace .= ' '; + $replace .= ' '; $replace .= " wwwroot/filter/mediaplugin/mp3player.swf?src=\\2.mp3\" "; - $replace .= " quality=\"high\" bgcolor=\"#333333\" width=\"90\" height=\"15\" name=\"mp3player\" "; + $replace .= " quality=high bgcolor=\"#333333\" width=\"35\" height=\"18\" name=\"mp3player\" "; $replace .= ' type="application/x-shockwave-flash" '; - $replace .= ' flashvars="'.$c.'" '; $replace .= ' pluginspage="http://www.macromedia.com/go/getflashplayer">'; $replace .= ''; $replace .= ' '; @@ -52,13 +40,13 @@ function mediaplugin_filter($courseid, $text) { if (empty($CFG->filter_mediaplugin_ignore_swf)) { $search = '/]*)>(.*?)<\/a>/i'; - $replace = '\\0

        "; - $replace .= ' '; + $replace .= ' width="400" height="300" id="mp3player" align="">'; + $replace .= " "; + $replace .= ' '; $replace .= " filter_mediaplugin_ignore_mov)) { $search = '/]*)>(.*?)<\/a>/i'; - $replace = '\\0

        "; - $replace .= ''; - $replace .= ''; - $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; $replace .= ''; $replace .= "\nfilter_mediaplugin_ignore_wmv)) { $search = '/]*)>(.*?)<\/a>/i'; - $replace = '\\0

        "; - $replace .= ''; - $replace .= ''; - $replace .= ''; - $replace .= ''; - $replace .= ''; - $replace .= ''; - $replace .= ''; - $replace .= ''; - $replace .= ''; + $replace .= ' id="msplayer" align="" type="application/x-oleobject">'; + $replace .= ""; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; $replace .= "\nfilter_mediaplugin_ignore_mpg)) { $search = '/]*)>(.*?)<\/a>/i'; - $replace = '\\0

        '; - $replace .= ''; - $replace .= ''; - $replace .= ''; + $replace = '\\0

        '; + $replace .= ''; + $replace .= ''; + $replace .= ''; $replace .= ' '; $replace .= '

        '; @@ -132,10 +120,10 @@ function mediaplugin_filter($courseid, $text) { if (empty($CFG->filter_mediaplugin_ignore_avi)) { $search = '/]*)>(.*?)<\/a>/i'; - $replace = '\\0

        '; - $replace .= ''; - $replace .= ''; - $replace .= ''; + $replace = '\\0

        '; + $replace .= ''; + $replace .= ''; + $replace .= ''; $replace .= ' '; $replace .= '

        '; diff --git a/filter/mediaplugin/mp3player.fla.zip b/filter/mediaplugin/mp3player.fla.zip index 6f99c88195588f3c936a9c93285fd41a05aba2d4..6ef979cf8d0d6dd47e722b809351be0b9f2c90ae 100644 GIT binary patch literal 18538 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 TcqVc_{DdPo>0n$0UmX4cC_9>~ literal 12375 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

        S*iat9J6$Xvht7oy49GlCT4$>k5pW)If>H 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�?+YK#-F`h6X#0a{P5Fb;=<#q`y}QdvQ@uv* za?mvG2Dhg!ZK3FU7E6&j79w?UOW7lqj@mc)?^?|3(&!fUu;9WG-F@ii%BG2#dN1FFJ|3cZq1#Li~^q6)nc_ zJV3GhA;;Uw)ehD`dmU0;a7_coouMn53=kBWhm#Dr+PUQYQ{#YZRp+L0et zTDZy*EmfiuQxokIqVU(>Y|s_$tB*3kb8NLDE?Q8HGKuObgwP55)EFYuB>(BY$7t>} zxGbZ>8d69k#4w2cXS`=^L_KRQ+H#b_gGL@Al=pGZQ}IOrz9N-`&@r1Rzc1CsegODC H7f3?bVQ>>r literal 1452 zcmV;d1ylM%S5pQt4gdgnoP}3QY!g=$y)&Ni2Rn%q;(Uk=0g53IAcQ|nTQ`)SfH*Y` zVpAoPct|XaCz=@tST#awOS?cwMV2Z=CFr85kh-f_RMgp4H4tnpM?JRaQ;! z`^?WCyIzdnyZ794&%N)x`OLtv3`AxiCcsH?eSQ6nKt2j^r%xOM1M+2EF$-D=jA9|L z>ad`c@x5z(oZwx>hdbVRrtcR@BNmEGoL8o-3JX0bZ*Y&q$~57s_vk+zBtt!Bf6xQ77XB2+{OLy}yD333(bI6%kJM9eYC)D)a(tH=;q3jnlL zLJ$&=BpjlEaPD>T7fDtG2%PKcdMLs{AecD8pc#iE8E$yZj*KSlVJt(U+j70+uiZs* z)gfv3CF$@ZX&n-8lDE@ee5Wr-R}+$r{^B?Kl61Ec?;nzAlDEf|_nMQp$CsqHRbKy) zKA(_JMR*G;F$h5oS}}VNenjN2-&MeIr+|K6HTFjJrP}0AwW$S_+=Obte@_hfQYD*| zmf|E2$#JVlXb5i}!>)w4gt`zM>c-1DeW*d@1?=tf~UDiA@LUMn{eM(+Zykp zv25ebwoz$ASObLWIN;S$x5(}Vic`#fdT#H7Q_l$Hx$WXPFoBCGkmZ#GJN_&|^*|-! zP*N1KjgpNi33YnuGWSAbA&k7fdy!u@lshbO~Jn_X)NS0@{u`r+Qnf zQ;ouo$^tKFZ;GE$oE?){zHZN~*E5UrnUMY8DqPx+Gwn%ePA_C#_!EA3p-zsa$LY;w z-t|{o6eZMUpQokF5M#7M|+mkw%pJpu3w0pi`OQ)`!=Po)wcJ(=OeL5o<17aMN(04#^@G2%`_EF+-(QO17LuR@wU zu^uwIk&XNTM)Kd5VBg(ONjBg16`NT*S+3X zgFVCj6OY&A&e(owF6e}hz^AFUBMD;$C=%UsdMXNRu*dUg2EA6J=%4VH$8rGcht zLr47nZSVI+HJBj2j(Q&|U}RB?EWpTEA7idQ%HOT62YUHZ2}tlAz>&M- zBkWtO8th<87=zd+tNcrisiXyWVs!WS_Xhc=923!QiIA;|=yD~{(fxFA(E5rYuKxhe G&VoDjp}9N& diff --git a/filter/multilang/README.txt b/filter/multilang/README.txt index 1f4eedc198e..1c35e5c9fe6 100644 --- a/filter/multilang/README.txt +++ b/filter/multilang/README.txt @@ -1,14 +1,50 @@ -$Id$ +/////////////////////////////////////////////////////////////////////////// +// This program is part of Moodle - Modular Object-Oriented Dynamic // +// Learning Environment - http://moodle.com // +// // +// Multilingual Filter // +// $Id$ // +// // +/////////////////////////////////////////////////////////////////////////// -To Install it: - - Enable if from "Administration/Filters". - -To Use it: - - Create your contents into multiple languages. - - Enclose every language content between: - + Introduction + + + + Introducción + + + + Einleitung + + + +/////////////////////////////////////////////////////////////////////////// +// // +// Copyright (C) 2004 Gaëtan Frenoy // +// // +// 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 // +// // +/////////////////////////////////////////////////////////////////////////// diff --git a/filter/multilang/filter.php b/filter/multilang/filter.php index 66c81c00fd3..c736e460ac0 100644 --- a/filter/multilang/filter.php +++ b/filter/multilang/filter.php @@ -1,95 +1,180 @@ - // -// Eloy Lafuente // -// // -// 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 // -// // -/////////////////////////////////////////////////////////////////////////// - -// Given XML multilinguage text, return relevant text according to -// current language. i.e.= -// - look for lang sections in the code. -// - if there exists texts in the currently active language, print them. -// - else, if there exists texts in the current parent language, print them. -// - else, if there are English texts, print them -// - else, print the first language in the text. -// -// This is an improved version of the original multilang filter by Gaëtan Frenoy. -// It should be 100% compatible with the original one. Some new features are: -// - Supports a new "short" syntax to make things easier. Simply use: -// -// - Needs less resources and executes faster. -// - Allows any type of content to be used. No restrictions at all! - -function multilang_filter($courseid, $text) { - - global $CFG; - -/// Do a quick check using stripos to avoid unnecessary work - if (stripos($text, 'currenttextiscacheable = false; - -/// Get current language - $currentlang = current_language(); - -/// Get parent language - $langfile = "$CFG->dirroot/lang/$currentlang/moodle.php"; - if ($result = get_string_from_file("parentlanguage", "$langfile", "\$parentlang")) { - eval($result); - } - -/// Create an array of preffered languages - $preflangs = array(); - $preflangs[] = $currentlang; /// First, the current lang - if (!empty($parentlang)) { - $preflangs[] = $parentlang; /// Then, if available, the parent lang - } - if ($currentlang != 'en') { - $preflangs[] = 'en'; /// Finally, if not used, add the en lang - } - -/// Break the text into lang sections - $search = '/(.+?)<\/lang>/is'; - preg_match_all($search,$text,$list_of_langs); - -/// Get the existing sections langs - $minpref = count($preflangs); - $bestkey = 0; - //Iterate - foreach ($list_of_langs[1] as $key => $lang) { - $foundkey = array_search($lang, $preflangs); - if ($foundkey !== false && $foundkey !== NULL && $foundkey < $minpref) { - $minpref = $foundkey; - $bestkey = $key; - if ($minpref == 0) { - continue; //The best has been found. Leave iteration. - } - } - } - - $text = trim($list_of_langs[2][$bestkey]); - - return $text; -} - -?> + // +// // +// 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 // +// // +/////////////////////////////////////////////////////////////////////////// +// // +// To activate this filter, add a line like this to your // +// list of filters in your Filter configuration: // +// // +// filter/multilang/filter.php // +// // +// See README.txt for more information about this module // +// // +/////////////////////////////////////////////////////////////////////////// + + +/// Given XML multilinguage text, return relevant text according to +/// current language. i.e.= +/// - look for lang sections in the code. +/// - if there exists texts in the currently active language, print them. +/// - else, if there exists texts in the current parent language, print them. +/// - else, if there are English texts, print them +/// - else, print everything. +/// +/// $text is raw unmodified user text + +function multilang_filter($courseid, $text) { + + global $CFG; + +/// Make sure XML is enabled in this PHP + if (!function_exists('xml_parser_create')) { + return $text; + } + +/// Do a quick check using stripos to avoid unnecessary work + if (stripos($text, 'currenttextiscacheable = false; + +/// Get current language + $currentlanguage = current_language(); + +/// Strip all spaces between tags + $text = eregi_replace(">"."[[:space:]]+"."<","><", $text); + $text = eregi_replace("&", "&", $text); + +/// Parse XML multilingual file + $xml = new XMLParser($text); + $text = $xml->texts['en']; + foreach ($xml->texts as $lang => $lang_text) { + if ($lang == $currentlanguage) $text = $lang_text; + } + + return $text; +} + + + +/// XML Parser for Multilingual text +/// Search for "" tags and stores inner xml into $this->texts[lang] +/// +class XMLParser { + /// Currently parsed language + var $current_lang = NULL; + /// Currently parsed format + var $current_format = NULL; + /// Currently parsed text + var $current_text = NULL; + /// List of parsed texts so far + var $texts = NULL; + +/// Constructor + function XMLParser($data) { + /// Init member variables + $this->current_lang = NULL; + $this->current_format = NULL; + $this->current_text = ''; + $this->texts = array(); + + /// Default text for default language is input data + $this->texts['en'] = $data; + + /// Create parser + $xml_parser = xml_parser_create(); + xml_set_object($xml_parser, &$this); + xml_set_element_handler($xml_parser, 'startElement', 'endElement'); + xml_set_character_data_handler($xml_parser, 'characterData'); + /// Parse date (embed data around dummy tag so parser will receive + /// a complete XML document + if (!xml_parse($xml_parser, ''.$data.'', true)) + { + /* + die(sprintf("XML error: %s at line %d", + xml_error_string(xml_get_error_code($xml_parser)), + xml_get_current_line_number($xml_parser))); + */ + } + /// Free resource + xml_parser_free($xml_parser); + } + +/// Callback on start of an XML element + function startElement($parser, $tag, $attributeList) { + if ($tag == 'LANG' && is_null($this->current_lang)) + { + // tag found, initialise current member vars + // default language is 'en' + $this->current_lang = array_key_exists("LANG", $attributeList)?strtolower($attributeList['LANG']):'en'; + // default format is 'auto' + $this->current_format = array_key_exists('FORMAT', $attributeList)?strtolower($attributeList['FORMAT']):'auto'; + // init inner xml + $this->current_text = ''; + } + elseif (!is_null($this->current_lang)) + { + // If a language has been found already, process tag and attributes + // and add it to inner xml for current language + $this->current_text .= "<{$tag}"; + foreach ($attributeList as $key => $val) { + $this->current_text .= " {$key}=\"{$val}\""; + } + $this->current_text .= ">"; + } + else { + // This code is outside any tag, text is probably not + // a valid multilingual format + } + } + +/// Callback on end of an XML element + function endElement($parser, $tag) { + if ($tag == 'LANG' && !is_null($this->current_lang)) { + // tag found while tag was already open, + // store inner xml and reset context + $this->texts[$this->current_lang] = $this->current_text; + $this->current_text = ''; + $this->current_lang = NULL; + $this->current_format = NULL; + } + elseif (!is_null($this->current_lang)) { + // If a language has been found already, process tag + // and add it to inner xml for current language + $this->current_text .= ""; + } + else { + // This code is outside any tag, text is probably not + // a valid multilingual format + } + } + +/// Callback on character data + function characterData($parser, $data) { + // Process inner text and add it to current inner xml + $this->current_text .= $data; + } +} + +?> diff --git a/filter/tex/displaytex.php b/filter/tex/displaytex.php index a7a986ad362..1a13d1c632e 100644 --- a/filter/tex/displaytex.php +++ b/filter/tex/displaytex.php @@ -1,18 +1,9 @@ - - - TeX Source - - - - - - \ No newline at end of file +TeX Source + + + + diff --git a/filter/tex/filter.php b/filter/tex/filter.php index 72f25d44ed7..f3c69ce0649 100644 --- a/filter/tex/filter.php +++ b/filter/tex/filter.php @@ -39,7 +39,7 @@ $CFG->texfilterdir = "filter/tex"; -function string_file_picture_tex($imagefile, $tex= "", $height="", $width="", $align="middle") { +function string_file_picture_tex($imagefile, $tex= "", $height="", $width="") { // Given the path to a picture file in a course, or a URL, // this function includes the picture in the page. global $CFG; @@ -65,17 +65,17 @@ function string_file_picture_tex($imagefile, $tex= "", $height="", $width="", $a } else { $output .= "wwwroot/$CFG->texfilterdir/displaytex.php?"; - $output .= urlencode($tex) . "\" onclick=\"return openpopup('/$CFG->texfilterdir/displaytex.php?"; + $output .= urlencode($tex) . "\" onClick=\"return openpopup('/$CFG->texfilterdir/displaytex.php?"; $output .= urlencode($tex) . "', 'popup', 'menubar=0,location=0,scrollbars,"; $output .= "resizable,width=300,height=240', 0);\">"; } - $output .= "\"\"slasharguments) { // Use this method if possible for better caching $output .= "$CFG->wwwroot/$CFG->texfilterdir/pix.php/$imagefile"; } else { $output .= "$CFG->wwwroot/$CFG->texfilterdir/pix.php?file=$imagefile"; } - $output .= "\" style=\"vertical-align:$align\" />"; + $output .= "\" />"; $output .= ""; } else { $output .= "Error: must pass URL or course"; @@ -125,14 +125,6 @@ function tex_filter ($courseid, $text) { $texexp = $matches[1][$i] . $matches[2][$i]; $texexp = str_replace('','',$texexp); $texexp = str_replace('','',$texexp); - $align = "middle"; - if (preg_match('/^align=bottom /',$texexp)) { - $align = "text-bottom"; - $texexp = preg_replace('/^align=bottom /','',$texexp); - } else if (preg_match('/^align=top /',$texexp)) { - $align = "text-top"; - $texexp = preg_replace('/^align=top /','',$texexp); - } $md5 = md5($texexp); if (! $texcache = get_record("cache_filters","filter","tex", "md5key", $md5)) { $texcache->filter = 'tex'; @@ -140,10 +132,10 @@ function tex_filter ($courseid, $text) { $texcache->md5key = $md5; $texcache->rawtext = addslashes($texexp); $texcache->timemodified = time(); - insert_record("cache_filters",$texcache, false); + insert_record("cache_filters",$texcache); } $filename = $md5 . ".gif"; - $text = str_replace( $matches[0][$i], string_file_picture_tex($filename, $texexp, '', '', $align), $text); + $text = str_replace( $matches[0][$i], string_file_picture_tex($filename, $texexp), $text); } return $text; } diff --git a/filter/tex/mimetex.exe b/filter/tex/mimetex.exe index 2433941df0e3eff925fa3eb9224a7ad222a8dbdb..af7502a6dd9b5080720b15f97498d7456990e9c6 100755 GIT binary patch delta 54107 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 L&dt3&bNl}Q)3|IW delta 134975 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 K+n>tEbN_$aE1qot diff --git a/filter/tex/mimetex.linux b/filter/tex/mimetex.linux index ef75715ab968a5f026599e27638194b197c62694..d2123f12a70b3fcc97d9f69c05da1496b2947175 100755 GIT binary patch literal 760158 zcmd444Sbwcl|MdtqXP|0fFMCD1Sr}9V#O-00SSdiqmp$N9Yv*xD`M=5BF<=8Nt!yD zwGU4R>e|_@Y`dmQ)h@Qu)dqt$kU}J3tr|4$rZ%C$t?n~U)Tj|68=e36d(OSjJd>n? z``gdwzkxn;p8Im{z2}~D?z!i_JR6*A-%wFe5wU-jk*WyaCOWI5EAd-@^dyN|8EHh! zvdEIiSrRXSNE5+7|MF;r|7sXm7t#3UXe82K8|A;2zpadH*;*Mn!NgbNcPsxPFaI?H z=0Aqpe?TL6-uM>@K#@qL`NuL6?oZQ`QQraR_ww(v!7q`}WpG z{m*v%_p|ANy2opXqXI}1lE(e16#edvk3KMPQUrw{(;3&Ti?rR0WSaAxnset$gdp~; zGTaRGU!y6WcuZ*1FzC#(_(5leKb{kfJ>b-)`xm*+RJwgCaz}OAnOfu}rVc(=}o!NBzY$R2aPZL367C78W`K@)=R0~k&u8Dfi>|isA6-l>G zM>-n4M4dZ)a3Z#Rc(pUV;Z)!(rl$Sh{@x&+Nw?2LQfEr=tbaEc4P}|i7M7$ZtC4zL zq?nrVmtIxLI4NkxT~mvK7H-_2Gfm#`oZ1$)4vkpir)_z*5q~EsW(Olh{7Ie3XWFhQ zHiHeEW-$cNqmR2JTEt0lD_WP7#lmiU8fAZ?|vdcL6c z;jkqdChd?WHcBiTyVO92z)?0cxePs?USAtYvJ(LpZ>#nHBPN|9jfwhC=vyzuQ5JJ)5-wTR@0tUt39uI|nck{)_*Yy_nNC+$1f}z zbVS5F$9Em{4PsAXY{YerG4hzSKXJ@WOiQF@jk?YRV<(h46Cyjvy3$KT-NYynB!DCK zz?y22tdVs4h)CARBF`B)I8)^%MiB`#V?;BiXvSP;QVO|DSZ4~nP6=^l4eJQUCSNR( zlPCjZM{kk%cVDRzaXdjFR>t-sDUo z>{5gQV|snGBDD^H>x{DVoT=CYl~v@5aOWjPs1{pCy{l?t4^~&A|AMq$!moJLO$>Xj z!*1)Lbo(Lc@I&bEL+J2>6Ua8a{NNAU$I>4dt0-KkMMhIE_F9EmY|`XWZ63p$hJ{$Sa)P#n#=Pv)grcrQ3H2?p?sW zODc$Dd%Wvv-9)#o;P&HIaGTe<&28P9Zr>_MwgSmkTfuEX1)m-E65GAj-RD)G>H%x( z?oHLF7G9xrji#1*YiAZNpz7+{Y`l1vGqI^M>-fb;{@@>q#jG<0=srNK9_;`bU6bTZ z^q%l4H4OU#1MC!ZjZr4h8q|uAdj7B{A<`Hy)w?I(LqeHGf{Ot)7SUSz0~Za)SQcnCDiKa5AZ zeKHc;)Gg3xB(*r*-aw6a4+2!uAUO#W8|(U#NDfqWKT7dhXDbf6U|MSJ10-hxFiWg} zbhI9DTYJ;(z0%%Zw6|B-6Dj&dZ1yu71!*5qC1!1(7!05pn17F(*qv_QEjV@q$8Jlr zJpp%mt@}{Ah!5oL0LAAAB0f>Kb(cjg(h&7pyJHU^7?Pp21kmj|+tcmarG)J$VY}3_ z+e_>cA=+kZxz(aV0Ge8=xsO);W$j(gC}n5{lJhQ+p;Q$Z^WE_A98PxrkyY_6{-zJ+EFkchzlVc)}KTAGsGW?Ve&(e+h!Mi>>R@nv}ONl zXQ2HA{ECW2eWsQVL*$_Ij(N_+@?mJwB6+BHwR3>!dPTJkR5=GQf&dHEsI#9ujL2zy zbDg2WWymeevyZHfIH(G+(mv**CLaOnM`1V5oO94W2ZVfbri$5zKxfz4lWyM=xufdY zwR=2gPnCmlV%T#~6>3$CZbUb!ZxS;KO$+@>Aw!I>Z&U#^t`8McBgNFP|Mlsxxd9n^ zm&g!?Y8jtt1P@uWSU6t{aCC^+PaxeVU?;4r@Dk{p;dzyhdkN5PX!&p)U01xVf%g2P z&#}ZtX2W=fewv@H%Be$6P+D`=nw*<7r?FiAyi%`yp{0U{=63?BZ!1w{5JBT~tbpFB zNJ5i0RBos&oMKGbStTjsIy9`-_chGgJL$>w|NnEoND~GvuscKv01Sr#F_#Ba#ZhbT zql^fH9-vu4V_G%g9>(s`*gcetGnV}JlxP|2LX@c7I1Q|<7=CgBS|QQ9lgX;8bB&lL zr+t)4K>^o7VOF*SHKugL+uGa0#3Y9!%Cd^e?SM%=R_H)rmCncM?7je7?}r}5?06Yjm9_o5jwfIDPeUS z-`oVuoVtqC>A>P8CTPj*hZe4I_G9|pURRmI$d4)Besb`BxBV`}OUKjFv@9m#B^`aXW-6?fVmN;+A*>7`WcZw{ z|0$ZTG2OmIxN?bb<&rR0jwxx8qQsR$8dl=UmU8_F-wr#<%TQUCg&K{4hDa|Va8fY8u6~H7mK>sim`mCq<8ox z){J6|iaH)B83$0#1DIE2oiP|sFNX;YhQ?sNe7G3{u#CFL1jb~0CeqO%zPI(FtKd+W z=6E|@DC6YH!n;Z?2$HC>(6Ru1l)pGRo&YIi00%q?nkg(p@~rO=@i5kUnw{q}HXAj1h0!M2gN8LvYXhJZr^soCo#F$ z=2ho<|7vlxI3bO!FQ({o^JBJ=bUI+B@R#t9!3`4o8 z=OZ;NtQK@VGA&M>3*RgJ4B+_|$P)jf%V84UO&Biu-@!5pCx8xLSHT3|F$qSHz@k$` ziQ2M(kpenDh$uE06rU}j@LFqo-;qcpp3NWp{W;h|RtBR>(Y_L40{bv?St8LT-qvSE| zAJM4%F(@jyLTfjmQ@2xTu`jo){kYvtOd4X%Z!y(JT}zw|zb9Ob5MH7{rZ>+e9h2W= zivAFaL&E0xk?N({o0nFP*X%|=KlQ|T%|7!h?*|XJKX{AhJh;F17T6VsZ{2@n?Y_ge zJ_ywes=${qkv>>iPB4+)x;15G%dCQ2GHR&-Z`3FWGR8U`!up69w&Wc{Bqm_ozHpr3 ztALK5)5!dGus`_k^i)0Yw|)P{#nG(O8}|zrsIRp>dYZ;OYGa->F>vz1q_36KAALP* zLCr=lWUT9rL`uKy2t?N3GHH|no&1;r_;3BW1mqjF?31;Gy7!o}Ke|8(C(kM2r|9ug z375<*;TL%=;bCD=E((+;H&0H0lj#Ch5wgo4BC)pR;X&uI&8%g>e(->gC1B{ z4U#@P8gHwA$Kt4e>lI-NB;N#LuB)P@MJXMTuB*puh5wEJV$JH~{`4~hP@b%bB+rCp z87gba&#N1rswEj`d7=~iPfC7}TC%0ol|Ahr^rgXtmjR8PMon=RxCWllsln!2b%X$l zqFrd%)STJyT;0G%x7WrxAYP+Zyhc@3!v2BEf*C>sLbU3L)v6;_tBy$0#E6^lp$xhH zLs4(9t=w?Rpi@gRg&t%Y(Wq3XT*A2bXVQw&^3Okul*7+*9tkSM#1EJoTA!?S7z=V# zk6d8^7oX7aa#nf+DptFQRUekBp9O$rQST44Z0ZUL5l`xv!3~=)TMyDiG1@@9WS$5w zCrlJ6>sBr6IEfut`qMV)8ciB_7~oig!lrl1XuiF0aG4sq;?)F)6$VINolP|@?;XPnL_4tex; z_G?m^Zo&C<49+KyzJ&eh_Wk0R*$>Cee(RX&4IDEtf8m-tiLT9l0CdZoB@6(Qch;i^ z{uuCAJbIVo(*;B4%0qiCA zNy9LpkOtB)IA75)%)~Ga<2Wu2+lGd1vkluGY8X=Qk%sL8@Io7=UZ!)fAc1n{NmKc( zRHP~Tzb#Esk*4VJr0LrKoFh$NDwie*o!Af@5rxA&#s|_=E7BAdX^Q^2(qv@`<9?i; z8q66eN)#(C>l`ghq-joK6{S*A>IqaUEKO0!1+~%tRGP?b%6Bt=lIi}BO4AP)P!o?( zO_0tYIdw#-d7>)r{y#2JE1@b>qFz!aQBbLvIh&PEjCz=cp`o0HQKMrTMh%Yz4;6wj zeUpI-;{nHwD=vrcCz3pQCx1mnM!EhWmVSPd@DRqPSc@w}DLJpO~g!p?yeH z-q0eb>Vv0@TnOLu0A_@g3{YibC}8FBKZk@O^x3@1WDYWbk84;4T^b*zA>(C2_=AGQQ(B#6zWx zJN;v={Y27=|GV-3QwK3qm>FNP)ISxr5^Ux14AWxLAbBKd_u;2a=&v8|L46o4PA4m$|1@7gb?%B-0vUw()T6uH%!ko%FUMz7qPF8i%t_s>gh>o# zHc{{9+L$WKXH#o!JC^xt-He1u%<9B!M@{~#9Beo<$vlM;MRYP$07tlz1m2h}F~V4? z_o;*9Yxj*i+Yb9r<;QEHH_P14+4t1bhuiPMgzhex&}}+=>!u@Xrw`wHm)AP&W^YFM z={`Oqcbqhs5dZ~v0)df zyI$g%V|A8rN3ECPo12jsiFXrIwv#WhoqU0q*i$f?i>dv^)IRLHXzMO@=FXehnT-@G zS+aFAZ)ZWRQ!bXI0c7}uXBr&o3sdFz zY)VX{k))l3Nenb4dg~bwF6$hl>Z378)i(xRcND?-W#Tmvg%`{0A%&sza@P$zLGLl?`rY84B`pd^RQOC;)YC zR>CAkd~x8LrA(FOv&1(NCNZlMBtCx7@Se+$I0pOdP zkr;``eDgR0;ERJ~PcgL{4$8KPk^pqW%U&)3bu5SiP)i`gXNjjZj7h2_Mg_okvr$RR zCw;q+mPt1!VG`rE!o=|1Of^&G_~gn0`V_R2Fo}Wvf!tCu;iA@>pr_tBC z9=!!I#l8z{Q!rvtiNyI+@zCKIn-FACpJEYVStYrirD4@NQ;`)Q!>5~>;pp7Qr?5By zusDCf;;tm}6cOf*xoL!3iJ2m7u@mn>H#^C&44-bs$1~l>r(h-k%>1#!!*n6x5rk4X z5gsW^UMW0hYxAP1Gwg0Av%duUJ;dmsvVcfr?Eb|8H_a%>?L)u^9kLC1s$3p*r10I%1gj!^b`v9mj_eN@bPiz;^p)ez%$Vbk z*VO3{v=$b{)R;3-3g{hoMqxS}e&WaZqZ7{zILXt;o#C>8%ECKkfWEkVfX7gP0by3Q z|3&>8R1yQSO$h(tga`{nCTtZ%{V`At3G;7;wH>hAQs@@)Le`dMaY$RK~6uHl)jQy1>rq_D-??JK^%^v@VaXK-d;L zn>RUL;k_kXWo=emxjU&pGJLvX`KJ5U0~To}0BPorm1d@!Q@~vb&vW){s>`1h=%;8b zQ>!mv7_oupk#2Q~H1m08M-s)5lsN*i2XeRJ$CZ}?dfqbIeEtbCW;COe?aGVcB{3`K z(Hk7RFgs~hu}?vGu{O!UHgOq2s}@M?iJ1!B)k{TWln-aMV*IwCS=Lap#;=5lp(MsH z#{O%VD$6IvevCP^86`|&Tc?!im&Z0*+@GFuoQuS51QOWhMzy6C4+_XPjz~6D!Qa(BGVAt=(r!ZLh9bzs^Cg2Qt3-5jkGPmGtQRu0{EgJQ!A3bE5!@}QX54Iojvy)lwH(UW)AX|$%xGHbh^BP%A2#T2cVwnpSI zQ?SDIVzh9_--ei$LCpDXtmQ$Y&Rs*=bHv#bp2Hsgr5Q0|U1wqXH72XYWFga~Q$ha_SNy$3U>!?_?*z;k;7JHb+f87*p7EEh*G~i7qu7t)j@|1ybT&61} zJRBcZY2bLx1R3Vw;lAsT=@u`;AI`I6j&XQz9Ir=q(9Ao$mr;e+mgUR8(0raT65%Rt zH1j6umCjY%%2^G!J^CB?vA(bUEwQnOp{nW-n(pKC)yZWB*sxfEOOr1xoTuPQH0n&l zGzF}6SneUxBhJ?G9TDOokDoi9Av~77iBD%!m@qHP^N@{AAl*`)peFwhNFWHsf+NCf z#>H+65WX;?(w5YE5lWA3t^B z{Zh`5E$5=~4B@%ukR2U<7OmGV%%K6 z#PiwIIz>9eJ0M{a!`&CgTlE^N3@;W(23%F!Ju8-2P}o&W?PkfBL%6jz_7Jw%K{6T}{IM1n(*+in zmlK3pmMHTlDN9}#o6vc zyn~9I{WF6K;Xv7j31bHpO<M(8SO(j zfzQhCzjJfGy}kGpO8*$g)92Q={`P1^%H>V=Z_33k~Axb zIH;^ZxE)k3CTy{rL1h`kvV6MPrFf?M_!P_pfSEsbP+_{zpdtvfEKvp(DNA1e{6S@x z8B{!(68%4T+dSuDFR?Uh3j_{1A`8&Z%hRaguQS+ zXDCm|(vW)LY=E6mVpUMHaZg9mpj+mNqelN%!2+{4q?*%LB0;Gw=jrp8kSMj{4_m zX=W0Ye+=}%d@`)XDhuZ$#1sfG&%Ib!yH^(0wjI88+mW@K58rxk;oMRZ_;VIY;w3g? zBk8!ayBs%YZK(tw8PH+1?%qOuDHP5b6Y3>4VU{m;&ZbjPPZ6G7uoz=mZfZ-ncVk=D z?*K_ecT;67`(J#s#^N{m0%NhYOLNKz*-o4nsen&8(dmj4E!{`wm`EG}NF0AC%SeQr zlwyuUR*Go?1?be(D1I(4OS4EpKZXl4+<6bn@LC=Lu3aCTwd^J zRXmCfXBBnaW{`qY#gC*a3rl6w0X8SpW)ssDm9mKd+vfa8^26}$V{b)8UE!}Vy-QCl z!mSo7xD+Y-Q zH-*&X_k$|I9*D6fXB1(7Pd2t^xwEVz4@mcm`))$`^8og;@Z>2EwDc}?@)W7Tldb!K zMz)IV3o>Jik@(B8QO<4MP5%?G^RT<|WY>wc^AnwhZnEV1^8yGM9CnnE)&I z|H(Q|Q15?Yy)kFxsVlf0wcg!!BUy#hUBuy3ZX=)P(RZD059e7~|82JZ@TU`rIe9*Y zUSB?}C(p^%uCw`h4yEdmRB4DklDb^08cj9YW8L%6<5+i#tWEJ8#aigZtTO@VNn859pk+3b_1RyWG~!xh{X#!CJs3cAsb)LkjWq z1t_#P#e42$sU%#{FzG((578|Ipj-H3bqmvlbc^bfF3~MiYpBhi)6u^*4b$x&JnAxq z-Lc|MFUqzKR$N|rZdw4Zb*w_8#53v2CJVd!0?Yn4Yn}N+9c#9OP(5;=XpT0grN#|} zdAbFDZR~eIupD-030Tg&p0P4B)?E?lzPBSp=t2N=;g6*YQ-|mxsHK`h8Yxv?Nu6aV zNyOkB2~Kkk96NEgh)>kKu_`qJ*m4zyuZX1 z8TDYdl?c^d_GIe|QLkXwpSeQ>);n_ja3(!bfx+g)$1_*s^}@m;1unTu-aV=Hrpi3$ zyC60hB$oNKC0VHrRcqu1kIc1FJ3e)@NV<>fB+@DZF;7-Z4$f4&vi1SPpP?OC{}zCV zW#fqM!BG<8z-*2sd9u({69+Tg6~TsXp+6Y#($QJzNTjSs z%JAA&RK}`l-KmM?0&2WT{$OavE((7z(+qU{BZCJV+b}5Y)P%S#%Bf#10XRe!_XNV} zI$mg^D_HX6S-0h8;YvLBUak&!n-Wv>M8ea^Hw}Xwk`*k)NZ|{(o+`EhLp!$|M<6Mz z5O`adNuJnN2=1Fj^v;_=8MB{5_HJNHC|t$W$dQ$Ny2}G1ByY@!4Q|*RY9bXU3lQ;% zvqHScLsmSjx?!R+acb~?{dyx#EsP`eq@$XgdQ|Mq#3JvYQ(cu*+3bqK0sJ2J>$*mj z?YMvCGX@hGNHGy=k{SRR`^FGhh-%4Pk3`~%onCiIR@Qgo{%?OLxIEd4!#%FJWvd#K zkaZW@6i;djoM)-%sLf{11QMK>cs$Z*^GqgNEa)e%DE6=zPy_^vvcNt*E84-k0-$ci z9zt!EAHcaGQ;o?hq#9bb3C!xwIq73iWg0ge#QjIK?Y8IhvRze_8MvBcGF;u@Z&Z|7 zp(?mKTgKH;bT~A+2vsQ8vQ&VL2&DqN(pCzdWEg@V3-**miz~Phui2z|iKJ#x!DWmSd=tfk3QY~~ehCnAf~{d7}sqX{r|$9XJ4juY!Bx02;@hiR$IH9?u* z)1;*`-}#R8Kqm^LZz;5?SZ>qW8oKBwu~n|D+2&n^b4<9ZZYtZp`{A2_clM!k(YD|2 z%CUUUt%I__*n;*B z%2FNx%&4l{sMM(LW+1Y0KmKb&zq&~BMsOQw>o5IqHz zBr6fcD5bN9DUnsNax;Mc@!tp%Pj<&)w#s=Z4s&&J6qj=9{R5c2QpWmEFh%K3I;r>a zVeZN}N3(k-h{p|hX7*7ndwE^Dj|HF5u@a)c?m}$K*4n216XNSGY&!@-ni>g$i=@VJ ze{2=Yg^Ha*W*C1#tsf_E;CzHN3r%h)Kc+N17xlX&KMJ2jsA0SBNvB2qHjV2gg`_jm zlgpqB`yV|8DscvZ7~ZFUJ<72{gtE7wwB{KOUr)_XFcrq!iqy;fQ-2kSxCbGLSZ(Jq zyoy`A>beVfBj+u!m@pH3P{Y<-5Pu$Y^^ypBuxKjPa$(Hxbg ziYx1=Cf=Ym%Jj!F|A_SIE9x<%N0Qfx5B^$xtw>=L<^sjsSqJJ>7G9>QDpPBZm#P9A z0-6_$1X)(r`8$7Z$TF$>Xxed{4%1%j$(e*r1W`sQC+VifT9J(D$oiK+$lXT|{-hFq zk7^$5L0fSx6gC;sFJbQ@P-jhg@*0v$dc_!B6U<@K;dm$Cgc)!wW|%K|lA1cvTzUim z-W&K%;En-)Y%yVm+L{i&P_N;of@YI+5nd`8GlAM-0GEw{qqx0*dn_soZ}yk{LOXhN z!Hz!Pk1iaKD#gChFSpiZolzKTd#v?{jke$dT(l5y!3??Jj-WZRJ9dFoU@)30m4!ue zIar~Gdv+C-+}SXLp-g(BHo!bh%;?c2Y-K7a;QRy1=IAAyB) zZ8Y3ca99VIrQtqRT$YAA`f$Kyi1$GNJBr~gPdHt?q-sr_dsS458OCv-^uRUmu}o55 zl3D3qp6XDs<%BcvS0xirg61glGWrT?#r@MYL=WHCaIiu&?$=o|Ceg%nADQR=aTP=GW zljrDLmC*AdaU7YLnmj${rCk^4K9aHq8{WT9;&4Nm_!Pv)W5^(KI34#dwO4QA<%(7sf+UaHSRSEKA^FlKWlmCezD zkUN7MH{s3ZV5e&;J=c;I#|5Sc=OaR=$ar}fMo#0KTE9#hNw(4L;d2^!`>YWtXo#su z>MEVd!M)An;^~>1j#si*dBEv%ps-Co;n^L0E%wM0!`d2BlM<_FUX|`+ts|y%skQjP z=9E5dNlay72K1KW-H0Qct3G**=5&i2_dToUOq35U3nsu-ConycU;-3ccLfLc&ps`@%?qo=Xc)qg$QoYuHKdmKkR%ps zfQoLyf9aPD^=Hl9)1Q}J?)FwXUR6wE9^Uj>?w}33`7!kny~+!bF}0x`A}38}Ses?6 zO_kQhocT|^gb~Xb@pFus(pjT&jIgqB4HT?^m^};(!`9-EKJY^^x(2Wd6pd+#gK&CF z43`QX`yngdXuKBrpKx*o^zR{h&!QjWu#!5P5o;N7yN%FtYx18*y)mM)`b>lg=cHT~ zLTJXnZ9vK>i=n6~Z(^P@A+R*-O+f19(PBP`A5k~c!TlOIHw2{vGahD~_#yN6g2XU2XsHHae=A|NoREnl zwCKPiQOm=LQOpw~$t46}%AyD2ZNG<@`e%+C&BM#qSV&$LmKE=5Fm(`QOXN}KE&drl z`4e*=bOUa6nMwOqI33oGL)4|ZNJXSVIQ>-U)zX6YO{Fi-+{_sbFuWc*odU2@Lg1M5 z4+pixY@&qHHcyTs(lEw79)+({BW`%nLg@;xG}ERIRFafS@}!of$A6O^i^dE+l2yR2 zm9(2XFW4wYk$(nN+i@1>*Qx2Y$OqwB(38g17fM!OlmpX@`m+uFfk2$D z=FgT$qi{`#Q8qIszYFyh8}oyv(eJfXfY#phK9onTz3GDhum(q}paV!1EXsvacG{Gk zOeqSgtC;HafAnL^L6wCX(5&!zErwjF6*ynUCZYFvin+vp|6p@-*1U@i62jsvx6FE7 zjA9U$On>S|Q+Y5z&|@D(Mf`-tkV2o>iNO8VI@z56B2;pi8H_-X*MSPlsrj^|z%`hZ z8D2-Q3*Ljy_MuBsC*ztf*6DE^bt_yEdzg11Mxh<+{G*4Z)v|2>^NBOWPlknBieCL) z)s>r^-MqO$32+`q1>Eq-=wxTF!Vk?_y4}B&NoMu%5rLb!=C{N91n~l3&D~EXg*L{H9W} zwr85rV*Y#> z-ne1fYhPeA5SsJke;sQ7IIcS5CYFU{dCE%Yl*;lH>leuKWJs2Mo6-+t83vT^pBS!v zSeCgh2E3l1MrF3hI8>9zIDmEu>HfMzgtpr$l>Ps1sD|snc&8zHsGe6`uAy>{WxkB8 zG_5gJq%OnAr;-ml48C_>?AFFR+%T&L;^w&jb-h#Ag?9P0De}FcB7b!gifj#vgm~0f zbi7`+tTb~PiZNvshSlSgQKx0RH7Fzh5==o5hz8@DQu)O|IDeQ%%?$yl>qweN{(C`K z@`6weWvuG485enL?^`AD@^fZzg^&uJawLR7$`p zY`nqkdH1b|=HSr70APWC7(m?bJ|f8UwMvqsEPZ8(H^lu{X?b*>z8qLeai5C&XO!Z& ziACeIjqqcm1k~)a>{V$t`Y6`*X%bHzupPC7nNcJXfr7h+ut=Xk?9uBrBgfOs2x3DS zheH_&TVd>Bx?&H5{7?MQFb$aa;tdiGs!nUO)`$@z3dMO@A*oSo1uMH== zB=lEng{pWx9vqL;CQu#*Fczx;WIlY7gQ-xn{JCI5GdqB* zs{-D!JUT{pHbO4;KT<4C(kTEAB>Wq|IBo<8HMfcO;gwDfCL(+S>6RmeP0}{e9=x`# zQ%r7i~@ zqCRG*XM9vO`R63j2<~NL$GidFY5roQWe`LKq=b<;?0@t7Ms}0D5>lh%pgt&k*^?5* znGWZX(}gV>4Y1VDfhYeEy#LthDKd9+5z@+4ssaBrMIzs2V9{ba_ai3mf7EKV)Ek1L ztDJsL;aPkyZj^*z!ry)s_$er72<5;A#vOPgNVj}g>z4mDtP|mc{0C9EtUu&y5oT+O z!^yb4o{I*!M|c7hh3iP_`UP?W>pJG&q9w{rUg6}&B>4ajIG1qv5;#K64HK{l5mv|n{`<*#o*nb3U;XyKc**Rh68kh{or>^ z8Jxk)OY%!Bi~FAol3-b4s>z8aUya`uqPvhl8NOR=VpiagslZ|SZ8;$wl8w8E{EuTK zL(7ErL;laTohI>~pf|4$^`U5$VWInk^c_D%CHW`(`!&Dtnbl~#c4OM#tsHLMw>9~G zkkE*cxgR9dKmK7jx{gOrn3#s1*xE#eHbqNeoi@bmb57Dlr0M8V^slwCn6wQ=QYYiK z&n)*!YmX!bgo#^t-8fg3@C|{Bcnke7uAY}S=rFzRb|RbUMfby&Q0jt~AZ{~+cmOd+ z8S^?-$=S?9c&%~{$v77^u{Qh8??`8(l5Kwj6=j3(vcbSQ+zb(9L*o|ngsK;dc^H^G z`&eis`P$gSQal;9jn;wxK}7}r z$r_48s6WO^ETMcH-$g<`EZXt&L({S)5Z4n%3lp4vB~W>Gulf1lOFwWj`}AK;UfM> z3n)ZtFEk%}1mNN33)(Oy`}4=RF#{O!VLasz~$8O7_)1_4J1%12f*!vt4J=pllV&Si?M0x0+@HS;=^#J@EZ{up`H-%(gMe4L!9OQwZNnQRyKB zZY#cq2-~_#;`6;TNUTOPr(Q>Y*JO28w*kR@0mhH|9lrreE|P)2I9mh*T!n;Sm;2aU zNC~g&ZaWODZBOHY?5MnCy+iK(Z$wrNG}NwP8_TJ!l*6}A%~AHtLf+1c&^Ut>hBk0R zHEK&De;p`->QGCtk(9lvb>htM3J?`DMh{Oe9r=~af5F_PChQ5!A+ZDxK zJedkri?-g=jg#vesU2lE7pC7Z6Q=#2;b5oe(1lO(VTO7XbjBa1p@2BTV73SdiU&}4 z5WC$#80uBuU?Y5ZMeW-Mt-NB4pClgP;Av~4U7;1h_ARkaAMaZB4PrzhO@S|wlnlB$ zO{_9tF?@5zbUdq!`#hK(Lhvmb!#q^D%v7xrzqV?$Vf+h&s@3GPObsQB&CXe8DDFRH zb%_bWcQwAFK^W+ zXs+gJRN0Dol@I~DKTPeIl?8YidA`7`(o$7ORmC1Q$~54bErxUqGknSGr-Twg2EJ)F z|MYMM?K$IZTZL|h&se-6Fbq&dmF7vk4HH}h2dvmI$vUyu|IEAqGvWXa!8TcZ<28RLB1L{6thA@`of0YnAIV|AP5MtCRhlAFuP2Rl@yb+9 z0j`SsCqE)cq3MxFuQf`~RL1V+@NJXPo+8G!yWR;k@U};-RGvF8!QU~#r8Yt8Lny-3 z#((?=rh6xV3jS0)BRmEpuNVYYDE3!8Y#WKm&J@M9aDF(Eln@OP*-0UGkrgqUf%_kO zi7N~5HFL%E6&y1n$+s#{(eYY1s8RBw*? zCTn_Y+K!~}voq)GB`?g3A=HC&0x~LLH8ThmUqcpcYy3!HUi|BcLQC1QibG0vpv7Dk zqwK?vOJT*6nG34kh|V?)Sc4gEkVCZrO$E?o0QmuQEPy5gXe@w6185|Gh6CtO01XAu zKmhdz(18Hz4WRu2v@d}61kmmP+GQXt9#n6@%odhq7lP7#d`9kg(V)DtrKBeV=}h)= zgxp*=o`ad~cw)4}z{7Wp0o(8sylf4>Y{AQ5W;32-+`-Hy1DWaBmqA--qO?rG?$sAB z0)~}>6%27?fn_agQ%GA};a~I<J$@) zCiQZnX0l*cD$BBC?I__O1nO`k6oA2Z7_YVvWM!Rf)E-xr%CRZ!Sb^eiIL6IQASB%<)Qok>Z3V(yRT&{ijxFO7)}8qEGAyeqqjlH@7#do_ z`NSQygeB$b9AOs7d^Uz*ZccLKhzXh<&jp5bwj4too~El}nQhWAmRTj_0n6Wp7caAg z&!Cz~31bX4J>!WgDC1G(f73UeQYK zK?LURJPP6o;hLm#I&RZ9L#Et*Vlj<2d2xA}1hUCoA8x~Mx{pt}$6WxyN~lSS!@cV{ z7K_99cw#R#VTr*vL8M#|ht0wwDW1qptGL*+2`?Bl<;h<6zw$RIiw=lMykRnjC#7Cn z!8h|Ivm9aSDSXIQVL|M!!6ZeZxZ&Fu9D9f(*@z)lKE4KOOd$lS9n(Aj{zIKCve8Q5 zD@;N!H;PzGnz%|~DOb8Y*Qv+_7Yp%qeM*{O#ZqHfq`yvMw1#FJ;nxfPym5r`w6F$T zKCZ-j9u4@k`ADS@>bM&4TQ-$akwgtNAlr#4b2x|%GEqS@9o5h$i zBNE@+E5P3+pTtuRz-=eeAspd<{u#Ce{xnfau;XBcuuz&I)LB5n3K5Cy8^(9_3=-G~ zb(l&c(*I(B1WL@38`J~2VFr)~^^_nX>}5G2_L&c3{KBp&Szx=C_Q8Z0#55SOe2a;$ zo#)9S!J4mI1Fwc75OOxiEIfaKplOhKc)r2BEQ9$V_jhb;Z+PubVTEB~2|UWG=(p-X zi?VGw7~BvSC+Zb`!+$72g05u?l50zc8_|yv^fG$30D-h-i^4yC%~lf%c@j~okO^UD z2%cIH7#L@udqE0{AFCzbQYl%XRk&Y5%+c!PRe4_ZUI7r>G=$y)<(g`Gkt3FUNMG+`{+)ar zoT&CXhXCBSr!43YgZ7mL4KQeTSx`TNcHvQYzwM{R_>j%`OX&+Kyp;@l{7(A#j~41A z-S}>L)Bobng~Eyu)HVkt-+>#H8p)fw8_1Z?X3-x@8|<^vq|8)}W_ANnY;0dbmg4&o zzJr@1v3q!canPw})&=U#ZZXXDt&woOC9R!}Jfqibj-AZ*kJq$8D0n6FQ^<@fnfW7E zGSlimyqC`-JIFDI_cBV^rK01EjlwtALlQP%{|Xb}gFbR)Nu0Y0Q*TaRA-?})Ol%R_ zA9Y!Lo{5LrF>O#0xX^s&Qf6T3KC(t6S*KI6P!1X~XOxT>9CD*UgY{Ibel5XAzaZaO zC9`w^p?HJ_^Alf|LhJqINfLuo519{~Rywf8!)cQkVQkrNlLS~RtzL&2I_pCZ*cWAB zfCzDVEIVx2TzSLDOPB}Sq8>MfU`?SG!u_xNL_(`haB)~~8b_JmbEBv$G6hdxmY4!B z5xuLye3J(Y3E0@6N1LdiI#<0%UFx>S>#=FCEry4=;z4QogiJCUWd}QLWu8Bxx;~Sl zNglTsLOg@>S)hjYfBB7S*On#xZaCq1&25HJ-VDTG6#fXK@aWXxy?h?o(JU~d3U4mM zwQ&JlxP|kD;qv4jd;KbrVJnOum}-_dY2uja;wd>)B`#tPM7Ta8j@n=>c@5bS4B@|T zql$)dL#&Hm6-6Ie3z=|?|{;;7dfW{020}3Zl)BPubKM^#T z8OBqJ!i>qy9Fnjh6E>I`2x2X#@y2oKI_xJ6aau^Xymwd$r~{YjW{LOj{b`7|#%tCa zmU$SZfMxh2EOP+B;k|qw+0idBqcF+9v!bJ6qX42?Fyt^$8LPt1<1ZPc>5-1NiIJ{(7-I6AfPIl- zC6JHc@?qNK%h|X3ePi*{^f1^zx1$VwWnq1pKFttol~l4tHS5B-$i)7S+UMZ97z2!? zFWG>^M_Z8L)W$o5JSEr7^?zDCAQVqdr2C_ozW~XgRIVfwWU4`t3=MnXl92eWR(}CW z*z%JyN$50^@F>cHB=AQhfy{k)FP}$tu%Un!u>~Ce++EwjB-gZ$q*j*(>58qz!Mq<+^+mAmr;>(tCWFpI-R2N)==UDl9x}o z6!3(b8&And02%qiW9=CxO84<8aw33{6T&Jdgj6kHT1Pm1!cF9ap&>b;3MdK-8=hY= zS5Ee$|I2xK40)7`*>vpLI4CkIbTDft>=Z92PoWH_*ZUBL$tSbifrGmQurm|SIfq_F z{dzeiD^aj4I932*5{@TMWAVE!(_W4e3!4YnuZk94>}55NJj>$Lbb(V<<%$t|rb}Wk5ka5DS{dJ}Z?O_;a6s9&U{8SmyI2L||-rq>-5xgoeNw z%s`EKeZvzZt2MUF5Ge8fKj7n&p!j&rCL{7cLpF#!e?;Wz8acd|&m%iHZ9cr0Q9Aej zuRBju;4E6zI;n1$J2kLX3r>5K`AiQEg{x+Krs#NVHe;h?XNbB@_Z(qL&J3k|nT#VL zcbchdL|rx;+v{Z}a@|7ZBBvqAo932_s7UgYL6J=9uRdamq%)!LZW!+A8D5e36jn9Uw3>bd^~WC^3IQ}3Kz;xn3!sSr8VjJ&02%?r@dXxH039;W zLX`=#-T<|2MW2~1Jy-lv zG@r>=wx!3GcgQN|=My(@2h1Mi;PJHN3B{~5TSDNALbxO_?XP44!Z6G6 zR4QYp1Q>lD==HGjJQ|2k*JDBtGldX39#_<^FH37=D%SPyD5NBAbZuF2!^i zWIM#2N+NJ+Dsquik4wNlD7rWhYduT#!3U; z@TFuth5F#n_4L;?)$IP=DN&qjgnz3Z6=J`%IUl7@V||gNiGM++!U#rc9BA)HavPW2 zVdLb)qYYjg1j`_&cm~B025PaYxX%Vps=)_PBvxJUhE*5F@GjDtJlB8LRRAG^Fu9Z; zb+2@PTZkDv4i|l zmp&mOkc0dL$=+BLkw_yn*Ec_(&|tshBerwMK4=*_j2xiQ@x~~PrS4GZkb$gul&r5Jiki(48U6gdlAiVCl^}9l&CBh_Yg3L1`5|Zinix4>agiQslK}=MJYun| zfG5%IQnZG{(sJw~O>xTV? z%hyUQfa6D2Tm?YE#U4T&pC|Dv{a~?Azn`@wcB7;JsMXi_(yHE zd0~-ur05VkN|?1xB=&b(ti)urOWRV>E=R2nICjKB69F_9K%)UP5Y&1&vY@XjCn56BjJCFRP)X17FG)j4JHIq&Dxa$ zDAfZJ!f?nup70yt$>9@261;hMf%gN?*oJxqPHBIU0w*UgD|}GFy5z-$8?Xtdasv#h z0|o(IeuS}7jIJjHw;rB_OSKSesG`RXAty2$qqsY#fbAy?Jc}DK7zno)^0O_FDm>vt z!Lv!?C?iZ0j?q$zJ!~3$hVo?7c#Fh8eZ-KC{h98QUIpoPL(*kkr?j-oPNPSTNuYZ0 z^lR5KGX}7Icq=Rq#yUxgv5tu}ga7o0LP;UIh=Fy7C)|#BMvN^jXcynWv}(VzH2=Bx zNI)LD$5AV+Gu7l5*$RSCoYJDJ#idFZQ4ldgaCza0G2O?Cx*4ht^$9X-?a6)nnhx@d z)CKO~Lvnq?Mp%Slyf{ia^QqgHK7%sQUaBe|cN6z8#*ZIT)ENp4=Bs$pTDVat8S<;r zuZcMLrSSA0m+29xxC?KE3k(%8*n)ygpo#r2gp=V6E@H|ki2Lz!Om6K4!lAjXTAw=b zJ)ZgPBd8iyk@ESG?NPdX(Z)2J4l=iuzh^W!ZiWxUCjSAqzI%c zrk3z9Pib4?Q%BhcpeEIN-YKQ345#WXOLdN>nztg1M22bJ_YK8re7>d?%WW$fjcspQ z^5s%X&eoQorgBAxHRnIL)f%&!#fIPWcQ(AO{vC2M39X3x>w{oZkWK&IAi@~MGm^eV zgY&Zxi<0?A&YHXEU20;-ga5-OHcd!pv59KSYaO~i7c_;t>1~Z~)nILhvZI=Q0cuEI_TLMXtT>iq0y1$CxBxrC)gLzMapjmqOjG_;)7g7P=VX+p}I zC&oU*l{h%t5Uj_r*<};{2QgjeiCZZ!bch*=afn$r6Jx_Pav>y=e+&=*)yK&Lrjk7T z+)XIYJU`zWWl5t@Vqe-UmZ$(ng8YEB*x)2CdT@ctvd%J z3q$XdJV|)XFs-35+TJSOBa|-9qzi9>UX#SD{MQ|)Fl~5}J8;Xm_-kQgph84Tfvpqw zKcW4mGky){*DBb7cS&dPGZnwbTa|Pw4*h1uI>(;yzCQ?WlnKBawJ57@%xSZ~vZu{} zC*Jn$l9a9=w=ArlQpWqAew+dU!%+=HKCM1&WRFtivlZ|a2GC>x`2lnc(93Sanb^z( zpi2ZA3t~qN1Y-RO;e7gQDx5k383$iY{w=Ue(2WKKENwuz8Ey+yF$c+u5v_tIG(K&M zbY?a;gJf9SWa7!{_;tmVS?2K9sc7OT8TZ=@GTdhIFOQ4g0>Z)!FqxRGk562XXMotI zgJ4H}sfyjRA1}B@8Qs4Ut<@UfE_LmbJU6m1t~nI)4m7pgAOlcO9RLWQI>4*VcnEOm)B#>Fx5Cq3nKjAmHISvs)XI~LdcFE^W0pj5YBor3uDZgkiF5 zFuW5O)DppL0AZL!;MvR?wL^{+7p9|&;DR@&oWBI)k{x(U8x65V>BxRNT2Q_JxR@Sy8?mu|9w5_ZWF}XiE&#zo-<@Is^ zZMG#!2Hs*Z0;5*2QB2(bhz85OM{HcPTX{SoXZp4lFqttbKBu?qkjy+NOCgB+J04{> zLC7hQm|o&3LXI=n_3x(ijN&{Zj1WAtGDpM=;gJ%|X&a1sJb5(*R`db!7^>dj0yPoI z_B9~PoP#|V0eTKL+qdcA1%qe$77T7%IC%8Hf~i{;4(|Qd0;zF;55cGyG)a8`)do-$ z5V!}i)j?P!fM&mG^B%k3LK6Wr1_-)PzBaPstgPk`*sXwP*y+2ZX z$;qrUepoBa?2qaQvQ@69$ZSP>J$bsBEdulDW;WwFn7IwlvTVF5j2P^0VL4!4{~0qr z@H7asus%2mKtwqT2CkbgLnOCM;EPqnRDRLK6Mq{*#Y}=qvbz~dR=Q6lE%`pp-OLTl z7h$u-Bhsp5qX{V|NC+3!F$*Oitu);nnlAQ`z{}2H8&y7>ybD7c_+dXz?j*O5eaE^72_}D_=mt zdA3X&YG_Ro!eYzh2z9l2o7xVPhX$O*aR00jI!qnFbMf8Ha1h5^oJ3-f@RXZ-yF@dj z8Q&a`2qIa7{j3thpw$_|JVwMf6O$7xf?kehUBl!#tpF=WH**Vqi&;Ls4C7Zz2odqk z&1npgS4oT~)dA^Pb>&rjs*c$Ov75V`aE8w&X$4WS9wx@bGY6!EjWq(Ksuuou%8@*= zHaJtaKZ? zTBTPdSu4_vCQ|o@Ej4^o4k2VyqvB#+T<@FHfQzMad^U*@L;}zla&x5^S7HKDmqBI& zOk%PHI8H>L*KG2goXFqMV3h9LDh+sPRun5!7zG;(jZP*NzVvZGs=S$bVwr!IDi1)e z=;dcVxur>L(GaHO$3qHY8M0ahL0B~lA!?R4DH_o%OA!{z*ci%4IM6IiSL|Vse@ds- zED%%?XVlQPET5iXhl#z23tN0Rw&9iJW=yOQ(GpbRz8OQgjmB%S|t|n zHl)CM8sacZ#?$}K8q`pnBY4A-3!XHY|9}MxFc#j-`96i4Y5JQ8h>;X0MTfU>wv2gPA(h1%sK=WI~8KzgzCb z6haA&p&_K$%Q{6p6t-jV*&cR8Xfvw&=#$T34uC-F>nLi-0gb;(2tsxYDfQ`{xOanO zY0)SQk3mJKT@L!^#JK{)4&YXwJAnk#Z@l??Zen*dh8YB3`TRcSUK;fO$V_YqnW>r$ zfruzGm4$+t_>QlnA`QNe$_C~bg5w5wve_Z|&au%(%2j8hy7+D`l2gR&t*9~%nG ziTB-W9>jA@umdyW&A{G8PzPtTRd*9Y)F@TbOJc5?u15rWXNzR{Ur;1$C#e(x!jd8> z3k8+ zb-5}~jPZa4ID6tHnZn9mj+6l3wB^8h3P_(?TXYnE|$P>5| zc=s=JgbTCMha90rWvj;5;T<2f6Fe1lf#&4x)z~p0{6Hy!J z$8-oOT~M{`6dD))v+Rarcw%qaZG`t5*d{S9VXg0O1?s5yYH z37}O0ba?=+2%wb#ba4PJ3!tR|)EGcZ0;nN?>I0}QfNBA0O{-0qxsox0*TKx}ueHVC zGg&C8=7GSXxRH70A+9^tdhZqf2{uhIiUaedi%CH}91&fI>&#m}AqE^=n@C|#mSFoi zU)3MW!-Im^e+V1r&@X@L@SrB#5>7Z?)A=zyW%?Ydj@?fDk=;%+01ofv^T>`Vff*GX z9#mY{EPxA#2VWR2II4jWUrq<<+zfllG%?o2PYwtTwXN{x{rIcLZC-16%6;LKFRXo& zrS`q09NGI9K=wQhEFpvAJZPZhh|o3~ii+WgFKsL52u6`38nKNe-AB??#O^*FFB|2B z$Btt6R7oVMhsbBJdbqKVFB(@;LbmXm0+FH&Gyc$9U!2Cz(5_O@5 zEl@Ea1iT)o-x;W%9O3>Z^)sf%!06_v5ir*l_*y)}DX0%HRh1Of7nmsHIhd)%Q)SqS zE8OM?BVOB0a|IWREvSkA$G_Kp(t7n#2w1l}FnM}Bvx#pd`CW>GinlKyzZVDcn-xJe z_vDE{Wd%vxpZvIFETl95E)U>V)T#^=2mL{B^56MME?8&?ri!5zab4uadJ(>#NDQ2p zQg`UQlp(AzL*T&OqiJN-mQB$@HIQ9USy&;10kff)xc|maNH3*l-j8!47&}Qr(lsk( z0V9S8;zs6J7j87hW&t6Q+y|!TBCYb8RYH}B*Mxn>A2Y-o1`d0`6v~gUQb|&b{RKt2 z)TU*5^A%;M_LN*%U(%SLxnJr(Uc=+|*Z{hNY-BUbDMttd5kmdEXKq@upQ%)=>sM&C zR;-y7Lghbqo2fjhg`1u5#P`Sp3WpM-_P5x?3)kKxW@p=4kp`&MxBq2M3&`fjX~E~` zrlok;n!QA8hT3D9|K-}RSe~T9N5}H_zhuTm2=hPYG}~+5WrZ0YT!t5WC~(CdV#g;j z<;hwVdnl^K9@4GYLs2dEklu#l+qz5Ae-FMNksbiE&0D^0Lk5&1qWJO8p%Su(h$^Cw zQ53~rqMo*HbMCK|+-*N874$MGsID|@XJr7F%R5oJxIHD4{}S4c)R{M<7<^6C6n4XZ zLla7vnb|BwL@9v2%0|gRMROT%Pp-x*WyDr-ttB5sE#p5CQ1c2mZivBgQb)L+q0zz8guY= zksP@1Fh{b^n_RFOoLn^E7v3*E)i^o0{7Emz{s?7xa%TBKcgW4qHZ1&&mtkhjiq#nu zc~Ww*0*j#?G3jH8@JivSlfJoy;39uv7R9JpE9T&kD#^&JI9Rsjq=e-pTor*u6-E_% zSV*yl*@`_Z`gl@U>>+!!HJAA8Bn-16gxEoC@epUgW5u59@#_1pC8ssYew6o)XI3H1 z_F?BSr*pQMtsl>>Qs<(V*u5?7y311O5~v2>!D$92c;Bh2_RlK zp<%pAL!oN|2sV`oyF7qa2GEKCx;TKA1<+ChS%nv}J=zduOvLovLg--9z$hxblTNU0 zV}6V#4eQL%gFW!nRZPdBhXBS+s7eXBREkro#QjgfeG7tu=!n$sa$}(auwHk9wGzM< z8E!L&YF3OGg|4)DNd!+W+3<2CgMOCTmCHGTEvA`ofOfX2A!|6))NR>?n|cl$mu0p7 z_CJSe4dy|ahkyCw{LzVL1{~TXS?SZx+ZJ_>3l!$e>1J3oFV;+B*%o9SlM6}4cd!|S z`qF302jyGg>~T#!zM~E)Y;lL5&;o0ci#mJGLzJC+E{C@3gAGyNM{^IvC6 z#OTpd3@T{tKND4D;jhDZ!Y!*TEDJ{kwKess4(e67bb)lx<68evIu4%5MN#zx!fF-X zZSJ|Gtt`AI95uHB3lQcq`SjNUnS$CZkSRoh`85bgAUt3@%rq^s00~0rfb z<5p@qyJ_z2py|TH;m(Ge`E3YZ8PvT5;3m1lF5CAD1k65kBg*BceM@(vVY@71fDXea zuiIh^u%kPGh689MfOu`RrW*>N0YHkSAJAopwj;#CgW)GWBdwh`7+#4PueOZ&F%Mh( zelr+`m?Zg1B?ksWq*9pI)9Xb^AG=v{=&LeU2_uHrhyLnM4zE&gJE~r=9Yt_dB^@x0 z<1>94Tc-Rrw};X;jVQM!6ub)k@4&u4aQlfl=c%D{fbB-otp~*+u;5*+pjD zdjQWPJ9-6X6m}`$Id4!1p~9f>XQB#eMB*v0ZJ-fDMI5yC+8@-bG$@49K_hDYL+Kz8 zd?V{%!2}Q%sqwVrBEicm5DW^83dnVQ!jumRp-e$-dRfNaGHQlMFuw)?2|~yM66_0* zl}Hdu7Ze&w2NLj2Nk9m@zwxyCJ8tzi&YHuMPcgt&5GLp&ET8n@>jd?64gT_9Z40!1w4r7$6*3E02EXC!H~f>ZG^UCBa_X^gAJS8}ymT?s|exXOk( z-PqY=!e1zCoH=DT;VkN&ls>wK|8tkoHQWvu{zm%JV`M>ch|Y%OjeHn2r94f|3AYiM zvyW7O(R(m@+GjYr6PJRD6*6o#;g=9%_b$MyDLH7jFgb7;x{i?%*g(Dn?~nC0@L?kl zeAoqnZ`{Z%u3sWi#k4xU;qS-in9MOGtnob=+fsa`Vt7J)4ia5#&gzqc#8<8((ZwDi zV1wcP9Q+7V74rcIX-jILo^1DFHe^j-TYVbE@jwr=1aavIXfz#3zJMo2U{TxnA~Tpk znZYB%bBvK%Fg7?Le7%{PkTO#zgohZx_0Ius8bwlcoA9N!F%02r3sMSm{71~iTu2-! z;3I+wWwQjvhw0<7q#4Zk^alj^aB%%v10T*Se87i5x3RA+NGaOtZHx)&DuKH>&ZJ@U z2$N=FMKoemcy26@q7gLIVzt*7l*OmoI6kq@;uHDWg8Z%TW_Ogt*iwL(h#+#J5sX)q zSJ4Q@tA9`yzp4zp1i#p4@r!(ILH^cvvYW6wyn!@mTfN316n=OEbCd7l6^t;`2>ucZ zW*UJGNsF0=C5L6gOe1Ka#$%=-cUv$$1`fH~*kV1rfl4``eb9_Kw3twWD?&vHgzw=E z1WAMnn53!Ol9~*w@iq8hHPR1Tjbu?Bc$vP3>Nm2RqOfZcUu>D(g&%>01>*dPNrxLo zi4=e-fhlkYhAN|_n&-$vgUgdhf^$#&b;F5SO#V`*6xn3sFLg%PoWWn}=rA|QU+T;- zi^*ToQ4w0^#CIZpiKX#_SJH4;jo@zsLn8!*Wm1wGwR#dZkP?2#GHi4p8*A9$yb|;* zcTiHzI~++KVfFC#P_jX&+rpM>s|0PrDC%|0i;vOW@CI}|lx)NLg$?%#ngdo`GFV6X z`m=QCj%2!jhM7m|6pIG@C6$Y{RsO~@AeJ$)47in3&c+udlP&bo0zxmh&uEf31zRY3 zkzYEEx9F6XI78RpF-z{#V()4aXUN1>h?jYx!n{E(_V9i?_`q3>lXeGcs3NTW4RkT~ zQIrdDr5_eoI{0(oW%?efr}K6PUZyBOO17(3zlp2e$ zaSlyje0Djp#>5yH#vD{Tsfb$T6L`_ndTF=}1h8@42YtDm#5^a>H*i8@lDZ`Qn|X<~ zI0H#>P?gZdXxs{W$8znmTstgR6I^T_83vIx`x;v#qvGg`tr6NJ6wAE8FZCu#lAj4%ujnlB+3)_-*p_w1v zz}Uyo(3aF9)S*!n@$|sUq9}5ssPBR8C<@06;Ya)AP-7B}pA4tjwCo_IHusGa@3FBJ z-+pT#PQ=zea()r}x!jM4CFz*vAgdSPBP(GAlEaQ&-M1oG2pJYA#raOtOVd0^h0AvE zwRsUCDa>I& zy!ur@@pqqFiG2<+{)DoG@P(qi;dM_;q7lJi8018OQsAJ8&t!XxI{VFrvBB^>+#P); zN#51mJyxu)QEIczlACXUr6z1N*vWa+_)fM7tpU|%xjNuV21;nIa8ZS$k-|lPXt`wH5f&Swcp9yr25+rc1K*o zir9p0NzP?r2I>7qZhiE_t#3aZ2VSP{q52kfQxt{*_+kd>Zhd5L48GG3V9Y1|n}Cz_ zW^gDD<9DmhOBxnGV|cJ3HsQA;jc%Sf@G{{TE{=nBM?bK>ftnat=w8T2q5u(v3;j`> zDGU^f?gxI#bvxZ zNl$j5r>FAa%FSXICIWv3ZYUlNQG^g&h$0uF3MmSYbaGN6gCk^K^;dbi4qG%EnIfrb zL~LSkMpF5fvqmOUsyYMiGc59FCrGMJ0SrpKTjFn|K^R}IPmTd%r$qA^JVw(gz2?B# zyU7SPb4+A6eZ^9*u}r#RfS+d!28iXs=I%tiETX8CE(04u3BtZ^f4d!*yuyj+L6hWk5a{YB2I4Ak`He zfs2L|aEQuKF`f4;#)&HP6CN)-)xq14VhRH^pLV2r4lxXr4Gt5uWSDFdMY(cwqAIYs z84+~R5c#U@QxfPXF=eLBs}zQGJ*jpmApwb@DZn$}7%Sor86Em+@^Euau{ zI;la8Cz@9HjI>zlp~6IyP(2!|VP+5Ngdga=94?IE@%GW(_pp}ocgzlXdZ-p?Ndux_ zyi{wnce3emt^at3nBJyWo;tDND@osoq_nEzJBdwVc);g@TR4TOJv<%Rp462Ic$JWz z+jdH?xsY+EBf-vSgg*>d?^_>;5E%U%JM;ufP;3O*F$ z#1BrlEouiQ)BqTh9;mh73J+r-7wsny(3gy!i}D&{%)|NZxHeW8%%vYJRy-e&sq8s? z;DN)37PTCB-~*-TovfmkvSfvnZA*1gi{jZ|g=hAm{=Y43fQDZAK6>Ox#f(8hXnC)>Q ztQBEOQ8#9;=;%CWtw@?Vwn zH~LFAGR%#DxsmaCRY7V(<0TWH7p=?&KF=%p&&&DG`AeVUyw4%;b0$8|TljQ=TxNl=GiOvz0w-D@)gsB~gZp!P!w=v{uP~w(0^E zbA~p36sde_mHNN_Me0RJRAt95Wa(F^*b0Irg6H8nh*?lJ1Rj-U$CHzI{Ea)4aEel- z$#v9QDJp&C{3GbS6FnW{Jx3rbAHc0pTcDj;ucNtw=da4!q*sd2?jft-eaQ11l@;OaX{W|ECa0)XoYUdTf{14+BGJ*{Xl9=5!i zL|9X{XFtNeLv|M)>||MoDUK%PlIy6Cg9AC)8f%K%8%0I~^${>R=!Z-Wl`~9B6@~{{ z307|C9XcjU9gw2ZS5~<<6|dJ3Eb_ttp&vueI9*2bKDIaf8wj2qYl4iX6BoMVyDadD zo~A@97YBJL8Ck*fOMiIK7GK%(EVUiaF5>)JrDzKjAUW5BJk+2;@3W9LJ9H^tU*s#5 z4tdtJEvh=?S=+X#qRmrvcrdZO%~NrBFfsSA?>Sl_p`I8GLn(S*7+N?Jgb-uls{L?2 zvQcWzM){FvQ3Z}6Q?|O5j8~Oh^d#c(KBG|ljTmgxJSF|`ObJ_O{qz{{ICq$WKL*`5|joxr+mBSNp>(2d!icO;eO zTOi!ABH$D+@v%YPz#^~_7n`7beLdq5fPPp6$Z}Im5g=>I%B>V_BoUZRVZ1?B zR%gKNZ=^57A_qi(eoPUd)Fc7~$-jZVECPfki-6MtpXk|WiU1`e5ujiC6PBeIODLXa zsTJ0F5st1OW+&DBNvip^HXq(8U1RfMl8>UZJxAzO&RQ@A20{~5(K|hqX%}37gbUqH zOnVnbT{}9Co*09!8$Ft-yl}tVs{_%7k90PW$Ytz6UzXcN4YZRcYS4$4JOmlgE}YH{ z9i16;SO_5@&k@QH^0bQ|R#72OtMJjIZ-}G!p729!M)=_-AM((O5d)S9@auU7;D(Tg zrZ|yqBmV@Shqh%yjn|h6n{{s?2i}2)@?G~XJD(-zUUohQr`q^DzQ!eYQ;|blau*7& zL2$d5?!&8vE7wP^C*iU^I>@>1-Ww(7`lgu@hQb{-FB)?PnP*qR6ezLfV*8`7gG|Go zsfHbKGKoTApMpNB27hUb4Tl&?oirPLAMhlL&3l9DIfA3-9w%xHhV7N;zg2e-$q|Ot zEKDhAk%=ztH8cV!P?(y3M+zwWTGi8TXxs-UZ{4;;nbHw+)!yk z(kS5j(SY8?qASs-$3>%m(lZefmy%2}5dAyw4@9r0#Zf(#vL(@L#>5;^G_8I1m+>Ky z5gn@j9+LP=_uHi4+afVK#*k+}fJOAzIj+@Kb~B|YpUyRe+C6MTO-wTD74}t>bwG;P1`VHn!ni>l^BI(6jYuMJ?=)~vDS6Dm{bA9>zz946H401=^e&84(sQz=B1no2?*w8LX)Qpi;JP28K}B~GT*q7t z?suRB0YwUg$OG>DJW9=Y0YiUDMDcUXC$)(W7_fHuOLy3Oa~YdUO>9t~G}JG7ISS^8 zp9x`Vhmm~POWF~uh3}68l%&t#axeu=+Ayl-B#%?sBK)d%{7+3+>*Z)j|*0thdl|u)i-fb7Q4Pj z*@P6Akrd+v0+f#T+j66DGEF#!9D}`)haB{s5ZPqVuDvsj0F%rrj4ePs7X@*w(mVe&|DI+1f= zh8e*U_$MVLrImi)qcf(1Bco63Mb8_q(|B7w1UeD!DF-$R&(OIu5N< z{b9BeUurCzTHt!FLeNWX6ECTwoyJrePTOI=oiY;@9D5bzzmba|^GVxk2ZKZitS;WIrvi%oH&Lt822VJ4Pz~SlI-NT8$8?k^wEgLOuCZ^s=B~PVx zX!G*ZIou|-tIQaoN2jc#-|Qr+4e!<5%6qH#k>!G+mU_>!0)Rpfj-(XHpW=!5HBe;M zlor--NL+RX$sD{Yy4HaQ$Ie0?gI;_g3z#nxAqCpd>jcVpF3|Ub*kl;NATexfSP*lx zz$9^{1BJz3>3}+;M*=QZ>IHC`=oN`@kM~5Tp(;`3FiepCt`_$P12>wWy9!xhJ=eK|BX3^V%LeBzA(iU*4L;{Jn7PKI~oC;|S$w<$a%6AKA^3+6*iEjlc6 z2=He1mhW_U*b@x$s1FWFXAbgtrob2q>+CZhe?geuRu zYR|bU4@BD&X>NBIE*Z1@OmuD;ELJDcc=?AwB+=9D*KVltbcJ0;Foyt4SGA|h$ZV9} ze?6hagF5XvQ{t|m#j{brtx=KDY zu)Xs!f|bq_u)IJbF1z$}e=T3EWgeb@Mfu2DpnYbToZgt!zF-nG zz>G|w&qJt&PIizyD!DEmewElB!&O=pWQng@L9|Y2Adf-bXk{3gj$k^^dI7Z_!zl9I zy^f7aZjYFuq4H_2zheMa8E675ztf!k;s#2q5cwJ=nf;|lIN=dYq#rRS(ltzNm7et9 zchb&nygMvW8%U!5hvqVwMZ34x)}pUK^Tf1=&6g^sP-df@h9@GhBprm1faR_vGFT#CKRQ{LJW;9o!Sef3lB! zU=f((L|Xv{BD?gO2YP+k8qVwQj!@a%W?oiu;J%qRHkY$Nn;Mr(l!$KCfQ*8gHKe+z zpH%(e<)2EFn%y^1rZqmwSaIp0r1n{2e6=&F9W`zXB^^Nk+4u%_7%p&#ckpwR6l&od zbcNIO2pv&TiU|jLf>qG1L(hZx(3nIvbXg=k0|ann2^FLLyl;w2zXq4+(idY@T&xuIoR6^|>koFA{=u$^NBpQs#mwN?vCknJ%tg=(lqzF458lE&h5Ij*J5TrX9 z1qoK76eRi@97!iJ^U4<}lL(*6okXf~F}t^uyMZLGIzM$^`)qmJWkt>g;WEZmh>-{vrrPpfCB&2+hfv@ zTl)y@2y6}|aSW#^h)F|kt=?L?ewAUw4_e`mR3&hTm6nKyN-yrkXsk0?oN@0`$4{qW#4N9{@{|+ITK1Sy@)ga~;6kw9cI5=Eb!SxC|b%rnd8rq*hUr11~j%uKs7Gg4prOZQ=YiR7s(w>vxHuk{`2jq~A@}WWaZ4U0& z!yg(=)VYtZ>h^R;HGQ_H8zX0W(+O1f6qHa_ZHUk%BJ)9`_$z6#m12K=26yI(HV=Se z?IYJP#DJ3#b&?vbr&Ie5RF2VydST6VU|C)t%!-Nk1km*%Xe!hZV1~`tqn!YB1fY5% zSh{P+tTlBsNqo_Uz_J}vtGGi*;E0_Qisvx%-wU>4JzooNH=$|T1_3QLW2Vr7*`Cfv zrh!S=r&W3~wG68hR4cOqyGQ$}nTt^@7bTG$*@rx!hZ6OC_kFk!6vz+5n!KdOd!8_6eAK=iOwz-EMp%E#NpRGLl3w9G#tHgL5f# z7zGgqktBlMr$lHJU=^95C8J9O7<7-&3TzeV?;x8I|Byrb6c;b`O7I6HKz{*`cknB7wRvk!UP{X_*K5#w?^5o3^@d%#DaaYlb=X-M*2Rh-{<##`IPA*nuGU zVk^+XG=URez1EVM69%}JY(cc@|3g6;SQ~lBseRfP!q%7ssoIXd3F>1KxU}_F0;_7v zSu)(c#Rmb&rl=$vqJpp_Gb||@29ZjP6DfBek@^CioS@w*x35S{rfmf@{SKw!)~?0c zF|x?!rXK7nAp@Hia1~F>`cCS=JZbAY_}8`mB>$$a@5V2Kz=Ze-vs5s2KPd&>!-~_n zB)Q}=j0m(#EW9WM8RGh7NCDj`cC|n``lnJ!xE!2-P9nFqh9)s~(00UXDA$h%_}jaw z1+`Y}tcB6;)2Xqc-x$4<{jww<1jsg0|i)&lLQfGkvi zz~?Edz^V75>$7=<6-93CO)Zyy(4fer(U*)*T9LRv@FFMBWw zV3o^T$)$B98?px@Www}Ugt!8tWTZ%CkBBkqnub;Dn2X!?d~Dw~KQf7Ve&Wj*dD_9! zg5^on4&h;2PKqHiiQL+V*m@KxT}Zjpv+F9tn>r5O+L*eY`V-zThZv#l4pLMME$ZhMkss|HcUd0714=}USUH~o`4l* zwS55@%-*fbK?=%*U92*ipGc7PQf5K3kRzF-Buf)!{* zmBL66<4kTv;R%|92<+RA9>tGv_O=Z1Xq|G#xnOpZX94C(^d4(~Hj5)#e`8wy0H` z3d)&xZJt)&_yfnMAZHqLe)TQ{^%kK~F zUViHvn0mMEJ1g(Gz+Xb>ejY-GWxBu z3#Nw1J(b)^o2TPP8BFpM+zoQ&UA{ZSBx5^|F29(CQ=4AADVC}hwa(X40GegWH*6i} zY4ToBt9|Dp)Tr$eLV^SP2LV{W3qidwdj&khCUeM_ z$+^d4u&NSRt;UaNc?m2hv;)LsniTkq#x3Ale(OAKA3b?V)|(VOgkTGs?eG}bxWTNa z37dBj204i`g*w^Ie~2mmPonq+{KQw>ls-(M*P=zm6+}^3h!Qj}mLo&9O95M-4Sy{C zo#o*jy^4QoC1m9nLT-LZ?k6@shaY_<@b8uMO`s*!`~VRm`F8df!oPVJoH`v1iDp6j zv2CU-rc_dLNF^l&Q`eP1E|p>T71x{anE1Z5u zO4Gop4s$&QPW1@3a020jB{!i*kD)xsx^z!Ou7IX;=(S_9#v%u{eDR zSqJ7tK)+B^hXto^Sj8KlLs35Q9&$taJlZpP`h7@P_PP7A*QCn16l#IW|a zgDsr?2wTL$>1lWj*1CYxBEo4M!p_fH7Qz1*rz^-1GDPsgC{80|aY~5dbRlqhkZ>B@ z3nwW0m}bFzswCbR-Ows>CvC35&)3zR;FBk&?#f_w8_nVgOz2pAdJrCiPlQt);j{u_ z-@vE;7^ib&8XJ5%I>^H5ID##l4#H#LM2h}J!s%0l#o`ptC$76j;*G(lW^yNO-iaU9 ziqMA)UKvc@4bsU|^w-?Yv3&S=1K?sS0!cF}aW6)i06ytz>@l3RUd-^Zn zd!O6+qa!{Ijww&bZA9z&i+p!z-mHhLW;=-pq2U;6j4^3Cr9h7lWPAVzke zJ&IULEMi|`j>teP9f&=Ly4HITCMv776GN2npG}jLCF)r?L3r##Sg(SA5mWG5QSkqqzu;v?!Nh=j zq6Pmbw&2^M1rq~)O9g)qVR3Dqng2#i+0CNtUFR>m>v)vtPt4uIQZS5Qi|Bpu7(`Rq zf2XoPKp2-Tv@G|J=PCK{Bx(h{m|bp^OEmu^TJEyga_@|mOI_j-DtB>wx!e}Jh)P5L z|3&Vk%?=tw#|lmh0J1mv?TyflArdHw%pnq#D|DDzeb%K&tsAWuXy*zB(=oOH4LEnbnd< z?xf9g@Pqn{>r>11>2a)MDL;SS*J*knbFWpSqB`roh_ayftGa+RG&DEZ22(YEe+k^Ti-asNbC<*LKgM!0*APojf6jrlEHlc<^p`Z!NUj(UP|D{eQxNs?s8#b zgg>bz@cM8>V8RyjqnS-K0UGni^S3?GFy;1fE@j3zrg|351f6d|%;NiNtRNg7o;9L;FF4RVfQ2)7`kLeYsukj6JPyqDE>;6V6B%$2(ItlG~m3++~CGPvIGU7-` zusuo})l2pfWoIA29+#>6!7rXq25XbFS7w~)TDM>D_ddll8iB3_w1Yk38?7y+gQPoL z#gR$GX>2sb_C4(qtl21~Y1G&wUe`R4Hcgu;(khGG!9(7}NRhiBHdh2oT8?qrk6|-w z=|D5QhOn|dj#fk+g&O=7u*L)4`06|H;mrgO(a9Tax2TU?aj*s*CqnJoUyM-i{URhm zTW5wO?B1@erK*{n;yX#}ED5#*TS*4W(jFGIj^^XbEKu{;&RdeOBvE@C?{%>5@{LwJ zFJ5kgo}6j}mcGF_%seR(payxicz<^?{4XunfLk38cZ7gD+jql!wP@{pV3?@+EU1^p zLme6e6$%gJ%cltT5%2{#OMDYE!M9m>zm9$I0>kgl;{t3bz-<+9NqhlVb+piy0&jtx zwSZq+)L?5$b;_S!O+Uqj&D{x^hqAUWbICj9QxSJPg-*{pvGk;N8zyBrEvGzhI%Ahw zVL@ElU=z;V<1Pg3Lf60hGl$KBEg!rkxYu_){Hd`~WI5yzEp|Y|>;hVa)Gp6E)1_22 zfWhG}Nv{xG{6Qdbr(Nn2hvq;6c{|vk48>U)5b0d3IP(1MPU){ryy@LcPgC{a&;Ds= zx+t|x$sLzOTLt7qd0Tkbx-~Pft5ugzy)gk8g#S!@!5<0?HqAH7T8q5VvanZ+%etHv zJI+(u;(klpX_VGaS@X=Yu8J!wN>{>pO6tk|_vi{X6&9LhH6d?*bYU&`Jf+q2TUsBw z`l+wm&r=q9z4MfH>3>|7c2oa!RbcI@f9ZG)Ir>V+x1nq0dCJN?FI{u~rzcaOey0Ff1 zp0a+09N$hh<|&Ju>QfcaAC+gwj(GGsQwj0veWG?-6x0MIuofEK#<~jQU7;F2t(9BD z9i;CHzX?`i6xNkr2P>8bbA;~Pm1FWC5ejvH+#07aXx*6k?{7!Fj_3*%6-=NGU z^}ds09lfH=Zu4D-E4toVEax9nCNHkcKW3X6gbC?AfGf6+EzTZ*8zr_oldC@WCctJj8=8-55s!R^~I>M{vQ}c1mq*%QzVV<`2 z3}cNR6#Gv*D^^ZUnCjb$gCXjStVA8ht0T2V%3v?17vxWayNe4!kN1B0lrjxgviz3! zCMr7**9+%4u)R?o?NX*Y{oM|=(D~>ntea1Sv4p)5&d5?{ab&)Ogo0ri*?l{d3xa#) zVFccbGf1iPw4c5U!R9nb9Ng`D`i+X0Q=OG(1Nbhxv^Fvngb3f#6X6SM0W|y)a6lQw zC?xzV04dh4xzujMn8J|X;>=SJF)y~}rk12*%Z!#dMbz)bR4%N{Yvog!r<6iR*89tb zsneYbmhZ)_Iy3!EuB`W$9`m0WD?P!N)Q<`t^6eu)PKcd0954M4noVH#W$TzpiJ|GZ zDGnmZz%x(D$Fa>UG-D{AW-;4z6qV&!j0%v*Z2qT1y?u-`xVM2s#XFMri{#;KGA_Bt zP9B$>ml{f-5hzIu@9fXq8{R9wug@gQ0xd{jPlULHgy$Max( ze>|v0aWOo2x%YBt{EoLx5FY$CXhAazNyw(z?#%=cc6(`nMy zha>)+KQHtSR`SskrQ%A!;`TfYoJCMd&<9}G~WfMCX(y#~zq zmrcW(JB?pv4f|h=P zj}+Jg`YZ{eBO^kBo|*(ALR9ue7;yN&dC1Nj9t7YxvlOU^LAF59eQ#WrA<}DSt4DA4 zhi}j?iAie^HW6v#2^#>y-Z2P!lL>1unUPNL6E#~jk1?h}9=^v%Wc%lvG^o*ULG3Av zT2=4$5q%#v4k$&3(VP7v+MC^+xi{-AIloo*9a(lkzfAE@K|X34v_)RMr3G^h(i5xU z7QA#T`A4c91LK(4K}`Os#Yl8e1|#Q8WJ-B+=6=OR&GGk$?8Q*;3@fYO$eOH4X4V#L zTBfYtDPXGN*o@P))K**(+_LC7Qk@1=gGC@a;@g2a?1=A3v33@6i_;$9arGGeC)i)m zi#$>n> zd&hAcTnZk?y0Xzx=pVu@3O*!$)}wsbY;4bo`6;sKo<=g>7|VSPj`E9)}ap<61vKKj(Quor)xcINyUgZhn4p-GNvN}IJd3MA*l%kj6 zuF_Np)tz_CyRe5+@wuvt?SZ{KIVlD11|R)e0`QvRl7e~gO`{a<%-Jv*JCJ=TZaH-; zIPkUAmGOa^XV2Q{%}{S0iC;NCwLDQ?grnEatfEwD6)v`c0!zgKu4TAs*(o=N)U4{UfkRb`j{1^stCp(rk5-f(EtmIs%kgVlz9Jj5ZAC|xj?dg(Q5v>+zYl>^ ze4W)Ub;k9O#VIb|j2N6ciKG!|Lm92oR^QRAPEaS+j7Hgntdz0nh_p5TC@wWs3nSiD z=mg}_RQ(P_2lje*FhADfCS#AQ+7!j4<8k_dSyorjj5Y77A+TjO>&3m6A zlu}^YcZ5Dl)HYu$T89wK;O$6DvRRguQ|_H)r5|9WuZ~H7C2nX&dWfbE&uyE<;2J=q zKr8!J9EcNQeM?OCak!`rDdmum!ptTbTii@mjCvQsaj~5N2iMtIF6wBAn7OqxtCOpO zKZ4gPCf_K=p&hx#R2UdANP%QTNL%YDF}ke+)8z4Osc59ItEIp@m%}t*4-B0@!J{-1 zZq)-a522w3>JT#7alI5QhhsW!l%qJu&_I()=3wtmQsIf#^1N`fmy z>B}t9=?OE_j`m(EB=_f6S>1>+q8?B^2K^lFNHX;BkvC~ntzUrvgK9Hx(RuQ|k8*_a zHu91sYUUjy${o=sZ=&wB@@a2ynV-Wzp_=|7mVb-2D==%%H7x}j$l_s>_|k$UNhL=h z32Is50xi)@BA@Xks>N)Dx^R~n0Hbpr)RxqVl=@$hyDh1koG-!I3$ya^y*ZMoPeL+5 zk%8Gr1c-)(fy3rY(6H)AQDDftX(fK;P0R6x{YWv56jOZ>mg;YebD#zMu zCv&6sjh=3#cVwd(9)*NfanlQLC*9fPJyy-_-G6jK#hH{x2KyVU0NjNQRbyZYaoKp~ z06~yGTWx%+9gZYc`rluSvRS!-F*gY8tFc@_YM~NwwNo6|`$okf^SPy(!oQVI0hcdu zAu5U@Rit8byrNRU7@^mc!xz~^agj|#UU7u^q1BQm+u=e#xJ?Rt4~cLGJ))(+ciByx zTQ*E7O${Q*1#6B55iUKMTy+$gwN2g`C2!fV>VbZJ0#9*IF&leNMi6SGY+l3#jXSi zk;yJER_n+WJ{H*h22_Sk3M|IBRoTQTXWErUik;%fmV!4Te7X_gxE{6o3GNa`WMc3x zeC-Uzs+Y6avaZxo7crhuP*h4Pb4Ug=*h+d2cDswD5WBh-NTj?+s=AIti3Q{9hy{2G z2{BnMWeIYNotct>>xwAGzH2I7RVu5TRi!ee)fEV-Y@`tCiA!DDgnxpKVh?>O>^YGY zRbF#3Iss9=xV;Q%@uV@nDtB)MYJDv{h3cl+h(PsIc@Y**ZPlefn@huP6CB52`UMhF z4bI@%)W#PH5Z~}CH;#i_uDcT7t;FUxZ9gC63~nL>r9c(c%{`7x_WHvKN*$GIP<&8k zRHP@9VMIge6ehY&@VxnWg%AlNn+UkJ7*>D`o={$UtAP}Gd;{<^)DhitDcfdfgfPgsiG1%`R`KWtK!n)Q)8Py zOUme~jMy;wAU9SZw#=n%Ib!krCJ3XS!zW2KUT{FEqeT9rlThg`QdI%f;LhfAN%D#2 zPm<(+WPB(Eac`7OEe6-pkur!zFdDyO!7FcyItxgX7fp;W8&v{aMYy3Cf$-c4yyf7t z8J|=dA3`kb@yw>IMyl79&g^zV?)D)A6<&lE^MR8k1emc{pI@Tk^q-<8!3dbRht8k!S*d z#@E@_%A1G=oo?C^*!s2M`fuQa-W5WRM_b^9+Qy#j=8qDZ^#mc_J!&J-b7F(Q-rtQE zA1*nQ|8lSiE~(}v>~&T|V(*j$c@yCm3OeznicspwKfa#oXgtd(?$?7G zQ81rVja0#Ua(Q!cSs{L}XCL%l@F1*gg-cW(a`=xW$X_axLAAVzlJ%$)8>uCM2TCL1 zc4EVx4Ft!}Ib4{Fd_gqetU8LutR2Ahqb)X3V=7j;-Og7SRl%!*48|U}wjqI`Ir7ng z2{fg~Ep^W$LOzS;>OV2IEVppJxQDTzK>Gj+rV#g&B3|W6E-cjELKwAd9RG(+$c=kOB`U5kn|m-c~rCF*XX>Qb*OaKoq7t$rnQw z;%PmqE#`H*;Zk1Zn=fTmLx6Vb67CIyO=W3@+y@vV%41^1xMg#xlKQ_iLCF{@^(0jp zq2M98@i2?RLW&ELySY6nk(-;pdy=&JF=%O_brf#mq;RQqhuB9&m5mnp)X`2Qz*^~M zBofV|{0JWA2F%Q+ysVZ|S11O-td^CX%^N5(N#wV4p#nccV}$~&%Bd9P*+yz_(&_*y zrv-Mot`%9;@<`SR!6`&Wygw7ws|5I|Z~0)?DY=eB9naF?s|1N}T^q=qEyDL;2hS5r zF_5rtqI40J;Ia$2(AJtRt-a$H%@-0W#hl$Y5K5D!1l02=Z^6l(9$T z+J_e@NYsQf4+ZzbU5q3OyO2ZXDw1ld2tTGr*}}wN$;utvyWBNLc~$sN`5eK$D>{{W zQYNhH(WDWy+|cn2)SZkEQfbilgrdT|t)=2wybAO*m<%{s%S8FNrH5GdkQEOskj|9r z2uI#OYAD^NbjFi{%P$rpt8k?Xv6Z>&;8{4lScycqk<#cAGnjUTL&-j&i-z#Z9MYtF zzl#Us;8+5UO2y8br@anc!Ym!HQjEz!R9^~XriX|}0!gDgBq{~k`tK1bBv1{AUv`4sRfp$%Kn7CUAeXV1f23 zI$!|QCz6F7Lu*ty=pzsXt=SAM!J0tL85pZ2xKaN*S|WqRM1K!vjf}-V3ofU%d3)Bok2*J8W}MF4E59r6v!C_9 zZ_~ezB+$L*y!N^B*{(yp>?ADOtj?t=SpD6ue@OUpM;bg-wodJi_mi&B>ih zCRza7sde4Rj};zBExF|Frs&D!F#d6*b zqU;$(jSAUr2-vAO0n6wvDD0)~H<6|))-$lo*mW>o(X;Xriaz{wUok72_9h9@cpl?m zR8sR(5*!Fk#sW(N&esNxFyuuLKytz~@H|y4TV*beI|xN3r3{<3hfH;$C*D7?LHA*i z8RJ1*jgIKZCI`OCrXH%EnGVeB7bwZNUyZC=3=_##*E}fP=q?*6UE%_VI_I1)C%Ft? zivMV$EIL#+)fHjn2MM;U5)l0`t-!Kv4r*=sJ>(6rJh1=oIL0A{b}$O$Iu~Wc@Q#*+ z{q5}v2V`vXpK(ip?a1IiGqn8v1~*(8EpI~U*$U*dhBeAIWX9VC>XXchdD^>}T#>so z_l{>{60FPGRytg6#)AYXB+uwUnjBegtvt@FEWF>BhiZ{cgol1Bjy0%{bu4J0f41J1K_p15YPL#t-B;$FMi-O3GBIzW$e6@%m0UavTdnZq}b(t@`h9s#ds zINR0FD%B0W&cRC}yFQ(RI&ZI#XdJGg{Tzcw>|B6$94@ z&l{;Z{=`NaZYeyb+V`>li=-gzYZ?v693j=vRm4g?(HuM^RUIK;Bl(&?OR&()r-GU6 zB0|&Lt}6u`h)~p(NG@&7j3au8Qg;`E?R#X7wm|J7>1I#^El|9&QHcnJr;BJqM=#1x z0j-%JT}*chnsfc#iDi!|DiQ716Zd_bvSuoYxBq1daR?5GnL&)VhTwrx1cQw-9ab=X zWobgpgx``iNNb;VL3|Xlzd)Y|`7w6pQ(^MHePIKU=8IFFWi*J{K!OTgK2$bP;~E;R z)2nA>VeiIcu86lu|I<8g$ymtglknle4}A4!VMar?4aRx#)C#S)yyrH>WH{D1+z>Uz z{bwN%{-X=@kCD^NaXIC{{y*d(vBFLZW41q8)L8WhEQ)UxQ`{eIFpO`n6ldDI@&{r!6{GD0c6#~&GqL~c>lf^7<^;o?WR+K=ueJd0CeFW4R zjn8Q6Xwlx!^{WwK0ya2sbsxakrmi1^c^k)pH_6`RnPEJ8EGBj{w&`betixh(sNz@O zjt}WLv5Gg#9{!Zqx1_+wm@&i>BdwBMufIngo<7Oki*}6dOES-_$i|HFy{M$>3&a{k z6=pT6T4=I=2qybEhF2awr!wzBWFk-Qnv0UyUlY6ju-u%C4o*Z;gKTVOf=5*0br+f{ zg4^}`P?^$Jv6h&#_FlPuB2X#2-^wW7eIeOCeE~A^&YS_H?e3%LjYdk1g~7$;Q_Pi= z6ucsgz=+o^RsgK^68&~+*sS=*tM?;`%oFM1Rs&;slNW(f;JH{0EE^g)Nqa25_&kcp zS$iMWSx7T6H?x?-WiC8807w;&MWD}@Q7jji#YIcO02by~Pr9cBK9hlg zw_>}NzraHbbZB3?Oa{`ChzIe|05Vt4hKj|mQ^)r%r$?#KA9!!BI6XlM4hKX-*9le6 zQkWVioPR}zr$Gfa>!EklC&lD5Ho2UT`YAEoB#P5(#eU^K)SC2>{uHn)mPaOd zHJt*mYL$5?=W4O2E(LywDzcWuZ-ysUpruvx9EDXU^lmR2PyoxSFaSx4Dz}wT74slg z&8gV)S=K*d*;$^4rz~itTwxxow@z-E8N0q>HY2C^mtvYN+o{qK0{NSj1Fb^5UX;{rDy#aOV4Uz*?DD*I=xHi zln(~Ss0Q4InX~pGDKH#`nDrJMk4$=TOip9_`}4>d*FDGsOkoOhap9MG;kdMK4xOI* z5E5wMcn1P{<(twcU!tBE%_o+(HT3F+Hq`GUMK2y#!A- zTcO??tdfUYB^Sq+OiIG2g^HXih~xt?umbnOW5M{9Rf`wK!tj32*e+9%Q;V+VYGmoP zicZG0HfI1dP$}(CqjhraFpy*m#5)k%W#nZ2eS{b^U{9Ivs5&ze{?sU&FGz(U_^W|^ z>-F*2dewgtts<|{VDIajNvF+^aaH>TP&C%d6Il_MB^yA}`vF1^3m8CZg@9a(kX{)- zOX-8M{sHu5T5}Y^m@b*Iz-9S&Uc6Qw55#1~uO6 zq^)zYDYJUH6dZ}PV*eRBD;u_Fn#w%7GfY3#7KLYYVH5hI4O8?*fweB$&>GluWN$rv z5PIuzd=!-}F?(2#8Z^@oF1Cz80zh@n|C5N^_7@OX>UVwKrZ>-!EwS;ZD?gBhTE zELTsfkx1VLmv}D(H$WSYt3QCS-LwzIJVS%Sv~*=1Z2>IBeZU>q_K2&>Dv#6L{8>Sup8=fLQCazyHcXaXEvHT_O#|?Tkufv~z#E!&LU<7H0 zvty;2&p@_%3ufOiLa*8jPjh#YQrf9ZT!o$aSoD(L&Dfc_w^qdeUc_Uj;{u$WQF3Z= zl9^%Vg+J)0BuuHdN>vXalN@S}B*|x*KgMi)#vY!dn1}f;08vvL<`rlkCG)WWo`pvi z+P@DxP|ihIdk@Loz$i3h6^t^QEsyWQe3PyQ#U^@?rqR{VfmMjYUQ8H(L5-cAimQv} zq-{QlQ8QTZeVi4~vtyS(9T3Xz%xaPCTfqyPd|=r~ejdh=E5GgEPPbxBbMW2>`G7Yq z>wwptxp!{X@zTL)2acy?$Ir1VX608R$M0;mber#v$_OFloi4T=l%?ai0Q!)@#`dTs z=co-C8>AM&Q;V&oe679<8$)Hh8Ya#}>6y5H5)fTB?`v;T^@d-;vFHRWuFxqDaBNoP zY?uiyT4KNi^P)~=D9_7*uIXd>3^@HNC_tS)MxSf^UV&fOMKwF{OI3&c-CE(21bzy# zQ~N$3tIO!NTz$QffZkWvw$jWD_Wq)fRDW={sB26L*vmRHn`*JcH{^I6DQq0nsgp?( zBgeRb+>N7onUTy>Vmb_Q{z!@xxCzyQbNcgIXtNb|b&ms^@WQ~jDNZTy1;8aPO0OOy zZEcR^r>gGPRBu5G?62vwf=%U3xVe<~!Pn4f12uJuAG_;U{}JwndofcZy)v;DN9+}M zRS4P~+{$+=c1#ZqLtBz3gzO{^V6)uHhtKBY$pDzwz(%)K{fy;V9$aXceCp3cK;;8&SV;lC^HM#5KI%37Uk4>WBi+`MC_I7a#g-0Wv5Z7rD_X`j=Ob|B&^%_s#JEY_O-yZV+AMYWjYfBasD=WvPD&BD}+*IOL zZXK5*lLEzfc*Gt-9VrOC6>l$oQ4=8cwT zjaJLk)ko6R`RO_HX#X*XGWzMvCTTv3N1D)g*^AOj zFQKzIZpFP8nIFx}Y?_1PIQdAldb&uk@*~sa5XVWd4oH+6(=@OI$+A~me zVV%xGxk{e_Oq|-F?(`X)Ds!#;G90iHQr}A*(!(%?m7+9t^n2LpXY+s3nQ>UYPlHv7 zw`7pm%}`6xg`;bL$k{`7T!rIF%kV&Tr)POw(vxeEk1`#h{s&x<&ANRB7Z{6T;EY;5grmEP#KF{j9}Ixm!v*Kl<~<(3^6*DWPLMqHxovzGV#;2(G-lQ zVF_Uk$OT{}~Hn+dfnLav*UbD1b)buYVUuJ<=_NcocH;vjWR*4y4{VbS;%$IoTQ zQ*6)hQ}EuT6e$n(vsb-ML7#7*nQEmFSNlb1)>(2T7~^ zC}ocK$Jiy=T{=WQ6>?C3EjO!s<;lz@VXryfpn5r1I)>Umvb#5u%w~|xx@XEp?8;9~ zd97UlZezF6)tDHpl&t1#T%c8=EKn#rPQcPZ980Ea zf%apB%XmY_t>#QXJlHF{-!Kv9I!KEF|0sh`5C0E%>vQiphvKEx^bUcVvx&Hba*OTV z1&O7pWEd@SE>Lrn1?Jm#^MMcQF;yMCu~7Td8Kw&&T=g^LM;WPwM8Iws6UJFz|BlpR zx^hZ@295T!h1!Z}zH3B27pN>mp;`^H`hA^tu#53J3N}GiVUhE%#LP4;g~i+zJXJOd zc~IHF1fv7_xMD|3Yj&Vg=lD+Go+O-uwVyz~UxF|5)tpK+iHA?4NrYh70y>c98DsE} zIh>}tH_o504MF)CH1*A;yQsfe$uXT*KKlXhj$doTVgKolSrCAtLKbymE`*%)Pf{9hB5tQ zmv7c7e-mvePN%qtY^+oGT&z>qgqwRaq(Ue~9+LtQzZ z0xU9dFk=vH@9t=O{|k1lpkPv54^mq}pLPEBek)S++upB71hx0^_%+&lx=0(--iJ`4 z(?)w=g!ayQ!EEmsqZ)dF+dI0lZbQ=C+JoSk*uIHzZa!*hHCN#Rt%xF~04_IGU4o1C z0Hnpe5h+0nv@|-Jt0*C9BhePo+$l0O>us{vi`?F9Tsu-eeEz(`V(nkh9N>s?HwMzH z4q^VacV_I6+tKz5I9-r6WqSC1$~vfEKC%u+qsOtXRFVFp&Wv|%r{Gs8_$A90C&#}x ze(?-Sw#F}`#Q0^DIer;sj$cNZzsUq+p8{PHdBB^XN?mdO-0OeW|y z>~_GiHH4>fTLcTM&Fy#}hMv)B{us~cM5GFIo47s_uaev8VXS$$X{ARTfV>>X8zUUm zMvnl~*j+86D_dY*vyvJ6iXD%f_6=VK=pvlQ`k0w?o|Q~9)Ekfv}T+1+L_ykoF~>GXbF@^0Zbp)V*ib{ z6=m2ly;zxf7xtUXQtrN8nLbVn;HnN~dV#hQzuA-S!ezYPOS324OTQzt`8rf4T=ruCZes#;F8{rUuJ zXu|1`@rM6`Rv`02pAPvK>3(LU8;KC4n^#=on&x!!V>k~9h+vX_0u4r_zi18@t~XOi z^v)ODNrF3*gNLAxr5YJDAQ!l2yi2s)W%8F^sRQF-=CzRRK^-GAnZ`d#GB5{z?H|g? zm`)ssDc^Ze!2ZwDi{;Y&noL^@_#j8fTcV8V+MbR)-np9m3fkf1LEagekwJ_0%VW3- zzQYAzQKZ|nL~+kQT@0lzYAw{B{!;MjBSF(M*D_-pfuUIK5+(JQ9Ubp~p#7awp@-m%N3c z3StR)5CA0k}5wN*YEA8`4>*-O77ZaT>-u_0)7mFp&_PP6&<>*%-m; zu?UI_#Y8OQ*iL*a)CSE4Zg^PhwgAn*h7W*Wakwk@$Kt;H>v6xkpbzc~zQeLckBU

        2#Y5^6eGw;I1lwBnJ9pUt%S3YfFL)X?<1C_@8%a=lX)`?GB;#^LA% zRN;P8K*3XzPrB&*)Ug=(EY!NL74rG6e5yd-h$UGw=*6WKulQV;pKS_a#>4Ghj5OSW_XDymt_5>pz?@p} zGX}k7Oz*w@(mRLgoya+SBeJ@n|GfifUuqYIa>gxdTqhR&p9}i;3wpXRP6MUkt+*pC zo_^M5;peDrLmpod>3BK@@aDzP{k(ukbdw=r(Txhg@>M5ajth&;n*vve2!@7oDzopR zTgPZh9*an`(5RK~IhCc3j1$;4UYd1wX@Y#V0G6Y>Slfa5eU?m2dicf{klE3x{p8OK z#=g*DU(}iLA;m|0ufuK|@3H8{c5bX>dD6z0rUGo!@45=MZJnN^YgH(+ihG3XAcwd<8m0?WzS7 zh89mii#5*+7!hF8`~AoY7G?)&PHNeOJE7M&3}d|^aoV)3%)Fi6o1E#$o{0-ig0RSy;?Z)kQ!aMM#kfMkcNurS zQm~MQ2h;(7f)ZlW04rtYLb*6iE_TbsE~Ow1xh_(2p=PCEvYBgYHcN3=GA?emdFLy` zsP~8Y;h$oQQ6!fA@duzragtn3NG4ofg=|wR@R0&{T5-8>k+pIuei^qDGl-&v%Iq}R zDbL3L4tcg)p6!xnr)CoSl(|l&IK8$Y<1Jyi%*TMEU^0m&pU7zflkCN~@b3R3?p?s6 zs;<8AOlATTGH`-KjWtM6w2YyaDAtSt&4o!K5SV1h1tnlxFTB*YNM@2KCJ<)^*d7Pd zR;#`(wn(+wzOC(BFR0ZfV3~kc!=)M}g=nLm<3u}xO#<;{{=c>MnM)9Q`QGn){yYzv zbJ=HK)?RDvwbyMUE*_Wa;zjBTm*}3}TjZH2dLA})O+FwNFA^(U>WX@G;cT^ZmRMLI zO6SmRttGgSKvorP%!xKyf|Wg0(I#uPZ`Ul)$ZKlDYf-li(bl!~Ser$eMJ+*|>0C#N z#XARwoFF!{3|Vm0vRp?OA~naAa~c}$zkUwXOIeDp_$K8t`;0LRHC0Us9|c|N+NOA+ za363JCMV<(fZ#AGlNV%snZKWXoDvei{W^0Py&L!nxK(RExRhr{e~KSiRbH!CN2{YQ za<`C^#aaR`?UbdB$1Cv-or8+`l$^G;w@$lUwqO*wT(;xVE^0-T{Uvm?0jkyiik${3 zbZNFRkAH~A>ay9CQ>%EESXLm4=g^$CWC!alqCm8O_pix`&JI={BnU^FEWXZJE`o98 zYtbr#F$!bbauDz>bXmj-OXGMom5)T=lWrbI>vaIPy%*f8DMt$-4H#~L(s^Z;ppEQ_ zVzGh$`Y1LfzV2KxPRo6q<{}+)p|3>^aUKfU&#Gn&caiBE4kLSVMTYj-W3jShCaq(* zi`*8y*Q@S&wFHUn;OavJS(4*OMGkOzDN3?bBw4&%V8@cGmRdw?WKv&SsfX8Bre@Qv}{F}IOfSdydo$=gpY!A{zyW{3hrhYxq5 zK#C~I^qz+<;hGW=+9r^R*TyRZ@JL;^oT5_5>0DiFvq#i*OOY>Iv|@vD&~v9+nq63m zm<%%P2G?bY*4Hor(Z<|pV^*+L!&+Atv~8@a4KA1kA+|?t?TOY|p#EEkfn@n!$+364 zs@&RR7cs9Y^4z4>Xrjj+K?8OytWnSSCEl|j=S<>7Q@n{hHtzcHRyBhMmEHa>kDCC5 ze3Tf5D6x6X03*SU7UmbgBctBb{QV_Lz>Z7Ziy7mG;g8V=N4MfH$Kz_*jSGx!Z~@P2 zXhWxus?b#wmSs*{D7zZ|wE>smQ{mE!tX`g$7+jtrxM1d-NpOMT+1UrR%*MLf;GMIe zQSDW0dXX;l3vdY=P1c+9*5eo zTX4s%%n6|3r zywvmh&I`SjmVHX<>pKaLqo=`9anY9UI|=@}g7_tr8hy9K2LGzyP5fXIJ(xDUD+O#-2|Pi}mB*aNUkd(<_zSA8+uS z=@RY%_024M0E>MRwA3Z_Dpt^{0(Iq5fd#c{wh9A&T|I*0@d;opQiB0ME^%zc=Bi*| zGhYVjWmUA<5`BiQh>^P?!C*~=b5V1-T5fUh_h8L+_2HM*mG$Zp?Dwp`FaHgYGOKlq zS|+QTXd}Klr3&UFR}tZD66E#Y(dw_{@(fR_z~Hzva^?`^kT?l{=`%zp@0@-V?Uo>= z@s&Ihr0&zgoQaspYwO0MG8> z!$|G1m73`~K5hCjqi@{$^w*J+gz*F6&JV0Xk%ti=7xdubuGx+U=y$ypX;JXolq>5% z)E4fLqzQis)Vk$xh_Vre%UI8JrEGoztN{M|_#l5z23O&^4TwlI3Uqyt zpr{1yrMkH9u4r>kU9`I3VN_Mfy%AmO3z3e7KW)rM3=F=6hdTZi3mzh3#&F}Y*%?#M zdw}kkTy=7-RqK!ogT68KfUts=$)GLKE$VEdE=$y9in{EFO}&$k5|GOmi8_}~nr!)n z{#~M~wL3yg{;pD*p;edeR!1Py375@{MYZK$zWS+(F z<3t4KO34*OoHP!&SNwHE;m9pq1rCX<%LD55kSq?`cd4d}Q;=T!kb zNINR#DPApr3}K`JA$5R@8dn$CNP6nTGkZ6*$>LRY@lwjelqxFw6+aZW+|lCf!eU5= z&&f}Ho#-y@O_08p>_2OAqiY~0Mj#{puF5TCp?Wp^IpT{hCOZ| zx+YT_w;e$74u~>BMe4USxkA#2mn_6!H$F-?*Uu`MJixmnVcR)vF;7&yZ(=uT?X7Ctx1N zA@9JO-k+d4=l~39)MXW!0-G=w{*sLD%0VGl7H^9npkvn^lPC5_ju`%%>V`k3;wM?F z$_@l@Ypq7}%rcb#9i|uVPK;X$I|gn-jRK@gQ8rRWHMMy;Fn9}jfC5{ac?0t*5<_Ez zo>sLyyRaNcO5V@GC0W4Vj;Oak+MFA0&I*#_uT~qJZgokfS{?&U zo%SwdB1~(M;y<6sjAT(pP$!7TGk&q$$A|;i;cz}qVCchA(it9q2HZqSaZrDfEQ${& zj@d|31*v)1`XGBss`or!>tGZI>6R17qM>pZ{ix2ta1ZzqMqL}Nl`OQaNO`Ik2V^`) z3(CW*P1RVDYKx}#Q2#v`RlS-m>LELjXchj2cG-i#!h)&F{awnl`^cJ#GzKwQ0yUqG zeWEGinQAjEv)T5;aDi9?eIeLmcr#C)o=;s{!h}Um2L@sN_-qM8Il+D#6#|8k;kgRH z#s`uB>0EnsHqfbu@d{@Nke&^iI6{51q2l_G=6#`5aWzg-*+MCLpdjP@iKP&yDKsus zd|OdWI6qU1N#Z<5ErzzrOOX(6?FTcZJc~MtXQ@@QMHOoxfYpXpDOh2tGBgmMLEB@6 zwuhDuj2-&a&mfZ%1pwlteQ30*XR#)_Lp$;SiO@^Yt}i23LgPjZl-G=m+puO_6k9XA zcr10l-y91VGO*CtN-cU3eG0{dS=+?*l42tKq~r$%NZi_*(74MGP-u`3dW(loa!4{i=`R62D-R!Jzsp?Gg14~4+tY@Qx$&g#Uk|UWeYZM zhB-sL#W^JqSc&hyt@!8iXWv%tqy30)3+HerU zK^W}Qdr6hK6HlvGJqz{(EtyR#{{ucFA`-h|2Fk0T+!rMUP_rI`Y?2;n|A0EuevR@~ejT$6?} z!u#6lS+&{^5D7-<8YcSQji4&~YvSftd|Dd$`$J*!iZ%)(A5`3`_mz;d6Yxp7XB>+8 zacqre(dJzp%FC~+XCEw8=;*QqI3|q}Lj=~NoeiTa6@L?7APY2c_6?(#DKhqT^s9>B zi6@wo@_Wwp@85jD`<&|Rj5<3jkU$A9c8|lx`IQapQ&YU>tKQedDB78{tq;wpmd)Zw zS*gEs^LTGK=!D+p6>Y{N5Vg?kPV|o4Bg*PSMYE`@p`zLJLp-U%qGAJL#YP0A7b=<~ zUl;IecfD`tT;X2&az74j`<&8pA#DLVT^NiGg|5G6B0CGv}s0`x8=R6;IsXsZWp zf#HafxuFv5oA3w{T*)HU*)K|5p^_WvQK*FCeetuLzcD^o6)N%6J29S{yF+F2jk8Bz zLOUZlyHk)@QTy8WVrYqS`d9IG_qeYDQe_0HwqyE1@LpW{T070i0gM~GF4LdD1p^Ct zE3mP$bd+s2=|8|jVmVTuY{r>{*bYLgJcAaU+#+P~LG9WfJBZq*D*lILPu$w}ml%Nz z{M7Hqb9VxR-$l|X-GOKAA5Z`_2nP5`^D5rb{|8&C4&Mmk){fz-{nZV46aEnI2x%+k zn)E(A_Kh?v0ZMJ~ViCT4nK*($b$S3#UxsRx9^h|^?!kljI)iyWXLu)-_e}Hc%@yZp z>FB#u3mYpmAB02g877tYP#8Y(SYFOEEGf5ON&u8v?O~+X16r%+w7*B9z(2Q&q~l9z z715~HF;ey$;0!j0OJk+?O_r-N+l_P+9^(|wgw26kc)5pLFl-KlrD(^cJ#|yE z&B2Gq30)aRO}a9&f^LAa1`@afx}{1#RAlgn#2y~)pbU0aCQQ0oN1`9ri78Uk<=jB; zLQX&ZIC>2I7R4gMFBsk?m|H`;CHMJ(?_idp!2pnEK?g(JPpAq0CN=OG@*@bG>V^7as|)>A>qv)%i|IW@&^qBl@jplfqz-EhKiEhQ z#y?3aEM$zvBP65?v||`*!-hOrjnjXAfW8)ioA4LV$z$82=z_WgdMtXgl>`{1_ow$b z8xz~wAU#pH(v!(s`8)m^rrj?)_TzB~1vnYX4>PfPm zreT9r(qO<|KdWad{iK^|K~=1qxeFI}UFvv%en~e&FPgrD(V#q3lDMNuf=bf3`WLh^ zozw~bfV47Hg~G?B0K9}33C#>|HBO_Mp|(VqLJk%wq@AHE8t;I<2*1!5;cu~M*dV-q z&p5kt!+AA+Ml0|R#)yn7(Y&D(^ZKLS4PVfPT>ylME570g6IY9o+AFrZB5f^ed8qAw zQOhH-EBt$CH}R34OT8}7QJKBX%R}x^D#&x zq#KW;&k$@q#Lo_d%iDjnDEA z0WpY@397C|qQa%0i#yCCxwT*~2TfI$wq^^+5O)Y^IE;@l7FL;dsLOKg2UvGgO!!E; zn|udO+ac9x#Rh0@CKNht&41?vjO6h`iW})0KN%%>@5;VMXb0$maB|E6Wa@}qAI??F z;qr(>Fn|Tj4ZaN@P&AJ+ca1}MFT7{4LtK(;-vh;>58+UK@hE!4lt8T z7Qs{^_D+8XfwgvLq{NdUy(3^qfeFPKp}wzR&_)pFgY%Cxsnc)wh`VYS=X{}EC zs-Z=}4F4(i?9~f-#Npq<@5zmg!Jzg&`VKhR8zQEaWaQD$Mhn1}2)`W-Vxj=za*IK8 z;VwW9>;Lj(IwlVXTK|nb@>m>i&#=vaOTqwUAZ9TH++X`4XOXNq*g3em0*H$@P0>BlC2vgn6=4>wI?7zKtxX4{NkjT(I(J17zH zrY0OgrCwpYl)b{fSmVD2utTM?`cm0usq9B7Hx??DJt&0=6auvme4D){r@Pd3^=f%$ zUbzk0Nf;)`P8o*e1xg9&M*(cLkyMHH2vFN|WBYp~uzOm^_OMO@3KIzjb=O=Gxux+LZRPsN`L_ad>-r7uU_9o&Nc%qg@h@xe1w zLSvzev@^w-dBqYMw*wl>KVoR8W?z4i=bVs}VJr|mU?dZ`AB+wdBSC=S)4;>M1m7%x zPK4~ko?XO~J>IcEGkhVzLkMI$$AE0VHy<5R-Hqxu511==&$Vdxj%U4yi_>{E}?eE%vDpC`X-fie2 z))fe|=WHghho<7Y-WXe9pFj!2)y6gxa51)--q*En+>Kc%nCf{2-_~jKvAh9Qc5(-P zfDY()#`^4b88q&hKpwCle&Vy(Ae0u+6duF(zV0G{LsgR($9T&oBB-R6Cum3uLM?lL zi^GtgLS2&gP!tudF%9tReH7dVla8Eqoe0?_KY?tC-wAYo$57NIz9)c!S;SqPrAIZn zMa!Du-}^6Ai=|<_QFXkw6!>Aw+WJvjxL>vzn@c!xqG`{6NHKvp*;q)_N>FfsCL!kT zF^D`B*2to^msn3Dv)<_{HlerRAT9Vkh2Lh}yAD)hsR&}w2IgsEpl z8xPegrU$GV3RHT(w%?bL$-NA}jS{jM)SnsN8;4ch%HcNC zc3FspeVRh3;uG^pP4FA6zwu=hakc!6yxhY*YUK{K=4tV2`T@`H0(;g!71+~aZ9jqi zN=ox~>&GJaC4 zl7H(CyhAB%h+e*_Rz9sZ?8rZyPvTShZqEz|n^eH-*S?1WcsSMwp=po33hWm2gVNYhm|6+A1LxB{h}7`D!JySC>Oza!m`kx;Q@MD|O|M6FFK16ZNL&lE#KKI`m@Ul8 zmcN4ON>{yfT(L$ySMig2=blR2X5e9#I;Cis6t^j01>SSf8C)A)dg;ouaMN=WXvqtU zj9F{t!m9XHd@+_F} z`}YfzsPbpLdf+?}^!1-Fw+|Q;xqwO!v7cR=-37j+wq)kD*t(*rbSaUuXq2+vbOE+B`IQY+Fy!2M;? zSV)SI@LL_~?~-JixHU8#pP`T8JssMYAsfWapusz%;b%IeG}|a=h|+Y7t@qR!a%xG7 zAQBM4yz4DL6WPs>WJj5^uq8zPt4fJ^N?;lwis{P6k1<_uh4*9oqZxwRo!AV-QShe* z>5;ncp9pV;$=vgOW9H`3Cvo`=$HivjU~R}Ma4v9WAs&Es@o+V;<`u&oX3@jg2->^O zI{=7_cZ`E$=_n}wtAGn7qDuF{TgU%%++m}?Ie=fPfi(%MQ|d^QPz2jDIUTU`M4*$E zr7xlr(UxD(roKLx{EsZL zbzO=Fd8M|nM*BzVQc;0$TKDK>*o`y1lAi5;(s+h7Bc@9zK>oq2AEkgyDFafEG1=-u zc8AuM;FC~kF5rV7tdg`Y(0&_jkT9a(_cPw}k8S%-JWR|L&5`u}7;Vc%pAo2wK1J6Q zXsPHU>Vh6N-@ePVJ8)?IU-1T7q>X1POQ1% zH)8Fy4<4k>As-r?y*L1rq9`i3`cq|_+Y!>Bw&g%hKr*>H?ORXa!&=@4?+=yb(jY@+ zJl0T|+WV0UdsN7nJ≠v)J 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

        R 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%0Dm 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 bkp@cIeBwn!LMi@3z3u}QJj}qQ!)EcnYrTeO diff --git a/filter/tex/pix.php b/filter/tex/pix.php index a5f84d3b1bd..1a992454e71 100644 --- a/filter/tex/pix.php +++ b/filter/tex/pix.php @@ -5,33 +5,39 @@ $nomoodlecookie = true; // Because it interferes with caching - require_once('../../config.php'); - require_once($CFG->libdir.'/filelib.php'); + require_once("../../config.php"); - $CFG->texfilterdir = 'filter/tex'; - $CFG->teximagedir = 'filter/tex'; + $CFG->texfilterdir = "filter/tex"; + $CFG->teximagedir = "filter/tex"; + error_reporting(E_ALL); - $cmd = ''; // Initialise these variables - $status = ''; - - //error_reporting(E_ALL); - - $relativepath = get_file_argument('pix.php'); - - $args = explode('/', trim($relativepath, '/')); - - if (count($args) == 1) { - $image = $args[0]; - $pathname = $CFG->dataroot.'/'.$CFG->teximagedir.'/'.$image; + $lifetime = 86400; + if (isset($file)) { // workaround for situations where / syntax doesn't work + $pathinfo = '/' . $file; } else { - error('No valid arguments supplied'); + $pathinfo = get_slash_arguments("pix.php"); } + if (! $args = parse_slash_arguments($pathinfo)) { + error("No valid arguments supplied"); + } + + $numargs = count($args); + + if ($numargs == 1) { + $image = $args[0]; + $pathname = "$CFG->dataroot/$CFG->teximagedir/$image"; + $filetype = "image/gif"; + } else { + error("No valid arguments supplied"); + } + + if (!file_exists($pathname)) { $md5 = str_replace('.gif','',$image); - if ($texcache = get_record('cache_filters', 'filter', 'tex', 'md5key', $md5)) { - if (!file_exists($CFG->dataroot.'/'.$CFG->teximagedir)) { + if ($texcache = get_record("cache_filters", "filter", "tex", "md5key", $md5)) { + if (!file_exists("$CFG->dataroot/$CFG->teximagedir")) { make_upload_directory($CFG->teximagedir); } @@ -45,34 +51,29 @@ $texexp = str_replace('"','\"',$texexp); $cmd = "$CFG->dirroot/$CFG->texfilterdir/mimetex.exe"; $cmd = str_replace(' ','^ ',$cmd); - $cmd .= " ++ -e \"$pathname\" -- \"$texexp\""; + $cmd .= " ++ -e \"$pathname\" \"$texexp\""; } else if (is_executable("$CFG->dirroot/$CFG->texfilterdir/mimetex")) { /// Use the custom binary - $cmd = "$CFG->dirroot/$CFG->texfilterdir/mimetex -e $pathname -- ". escapeshellarg($texexp); - + $cmd = "$CFG->dirroot/$CFG->texfilterdir/mimetex -e $pathname ". escapeshellarg($texexp); + } else { /// Auto-detect the right TeX binary switch (PHP_OS) { case "Linux": - $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.linux\" -e \"$pathname\" -- ". escapeshellarg($texexp); + $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.linux\" -e \"$pathname\" ". escapeshellarg($texexp); break; case "Darwin": - $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.darwin\" -e \"$pathname\" -- ". escapeshellarg($texexp); + $cmd = "\"$CFG->dirroot/$CFG->texfilterdir/mimetex.darwin\" -e \"$pathname\" ". escapeshellarg($texexp); break; default: /// Nothing was found, so tell them how to fix it. - if ($CFG->debug > 7) { - echo "Make sure you have an appropriate MimeTeX binary here:\n\n"; - echo " $CFG->dirroot/$CFG->texfilterdir/mimetex\n\n"; - echo "and that it has the right permissions set on it as executable program.\n\n"; - echo "You can get the latest binaries for your ".PHP_OS." platform from: \n\n"; - echo " http://moodle.org/download/mimetex/"; - } else { - echo "Mimetex executable was not found,\n"; - echo "Please turn on debug mode in site configuration to see more info here."; - } - die; + echo "Make sure you have an appropriate MimeTeX binary here:\n\n"; + echo " $CFG->dirroot/$CFG->texfilterdir/mimetex\n\n"; + echo "and that it has the right permissions set on it as executable program.\n\n"; + echo "You can get the latest binaries for your ".PHP_OS." platform from: \n\n"; + echo " http://moodle.org/download/mimetex/"; + exit; break; } } @@ -81,16 +82,20 @@ } if (file_exists($pathname)) { - send_file($pathname, $image); + $lastmodified = filemtime($pathname); + header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); + 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-disposition: inline; filename=$image"); + header("Content-length: ".filesize($pathname)); + header("Content-type: $filetype"); + readfile("$pathname"); } else { - if ($CFG->debug > 7) { - echo "The shell command
        $cmd
        returned status = $status
        \n"; - echo "Image not found!
        "; - echo "Please try the
        wwwroot/$CFG->texfilterdir/texdebug.php\">debugging script"; - } else { - echo "Image not found!
        "; - echo "Please try the wwwroot/$CFG->texfilterdir/texdebug.php\">debugging script
        "; - echo "Please turn on debug mode in site configuration to see more info here."; - } + echo "The shell command
        $cmd
        returned status = $status
        \n"; + echo "Image not found!
        "; + echo "Please try the wwwroot/$CFG->texfilterdir/texdebug.php\">debugging script"; } + + exit; ?> diff --git a/filter/tex/texdebug.php b/filter/tex/texdebug.php index d08cdea3082..a9119322263 100644 --- a/filter/tex/texdebug.php +++ b/filter/tex/texdebug.php @@ -50,8 +50,6 @@ } if (strpos($query,'ShowImage')) { tex2image($texexp); - } else if (strpos($query,'SlashArguments')) { - slasharguments($texexp); } else { outputText($output); } @@ -73,17 +71,17 @@ echo "\n"; } - function tex2image($texexp, $return=false) { + function tex2image($texexp) { global $CFG; $error_message1 = "Your system is not configured to run mimeTeX. "; - $error_message1 .= "You need to download the appropriate
        executable "; + $error_message1 .= "You need to download the appropriate
        executable "; $error_message1 .= "from "; $error_message1 .= "http://moodle.org/download/mimetex/, or obtain the "; - $error_message1 .= "C source
        from "; + $error_message1 .= "C source
        from
        "; $error_message1 .= "http://www.forkosh.com/mimetex.zip, compile it and "; - $error_message1 .= "put the executable into your
        moodle/filter/tex/ directory. "; - $error_message1 .= "You also need to edit your moodle/filter/tex/pix.php file
        "; - $error_message1 .= ' by adding the line

               case "' . PHP_OS . "\":\n";
        +        $error_message1 .= "put the executable into your
        moodle/filter/tex/ directory. "; + $error_message1 .= "You also need to edit your moodle/filter/tex/pix.php file
        "; + $error_message1 .= ' by adding the line
               case "' . PHP_OS . "\":\n";
                 $error_message1 .= "           \$cmd = \"\\\\\"\$CFG->dirroot/\$CFG->texfilterdir/";
                 $error_message1 .= 'mimetex.' . strtolower(PHP_OS) . "\\\\\" -e \\\\\"\$pathname\\\\\" \". escapeshellarg(\$texexp);";
                 $error_message1 .= "
        You also need to add this to your texdebug.php file."; @@ -130,9 +128,6 @@ } system($cmd, $status); } - if ($return) { - return $image; - } if ($texexp && file_exists($pathname)) { $lastmodified = filemtime($pathname); header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); @@ -145,50 +140,33 @@ readfile("$pathname"); } else { $ecmd = "$cmd 2>&1"; - echo `$ecmd` . "
        \n"; - echo "The shell command
        $cmd
        returned status = $status
        \n"; + echo `$ecmd` . "
        \n"; + echo "The shell command
        $cmd
        returned status = $status
        \n"; if ($status == 4) { - echo "Status corresponds to illegal instruction
        \n"; + echo "Status corresponds to illegal instruction
        \n"; } else if ($status == 11) { - echo "Status corresponds to bus error
        \n"; + echo "Status corresponds to bus error
        \n"; } else if ($status == 22) { - echo "Status corresponds to abnormal termination
        \n"; + echo "Status corresponds to abnormal termination
        \n"; } if (file_exists($commandpath)) { - echo "File size of mimetex executable $commandpath is " . filesize($commandpath) . "
        "; - echo "The file permissions are: " . decoct(fileperms($commandpath)) . "
        "; + echo "File size of mimetex executable $commandpath is " . filesize($commandpath) . "
        "; + echo "The file permissions are: " . decoct(fileperms($commandpath)) . "
        "; if (function_exists("md5_file")) { - echo "The md5 checksum of the file is " . md5_file($commandpath) . "
        "; + echo "The md5 checksum of the file is " . md5_file($commandpath) . "
        "; } else { $handle = fopen($commandpath,"rb"); $contents = fread($handle,16384); fclose($handle); - echo "The md5 checksum of the first 16384 bytes is " . md5($contents) . "
        "; + echo "The md5 checksum of the first 16384 bytes is " . md5($contents) . "
        "; } } else { - echo "mimetex executable $commandpath not found!
        "; + echo "mimetex executable $commandpath not found!
        "; } echo "Image not found!"; } } - function slasharguments($texexp) { - global $CFG; - $admin = $CFG->wwwroot . '/' . $CFG->admin . '/config.php'; - $image = tex2image($texexp,true); - echo "

        If the following image displays correctly, set your "; - echo "Administration->Configuration->Variables "; - echo "setting for slasharguments to file.php/pic.jpg: "; - echo "

        \n"; - echo "

        Otherwise set it to file.php?file=pic.jpg "; - echo "It should display correctly as "; - echo "

        \n"; - echo "

        If neither equation image displays correctly, please seek "; - echo "further help at moodle.org at the "; - echo ""; - echo "Mathematics Tools Forum

        "; - } - ?> @@ -199,7 +177,7 @@
        -
          @@ -207,18 +185,16 @@ to see the cache_filters database entry for this expression.
        1. If the database entry looks corrupt, click on this button to delete it:
        2. -
        3. Then click on this button +
        4. Finally click on this button to show a graphic image of the algebraic expression.
        5. -
        6. Finally check your slash arguments setting -
        -


        +

        -

        -
        +
        +

        Debugging Help

        @@ -246,7 +222,7 @@ edit your moodle/filter/tex/pix.php file to add

        to the list of operating systems in the switch (PHP_OS) statement. Windows users may have a problem properly unzipping mimetex.exe. Make sure that mimetex.exe is is PRECISELY -433152 bytes in size. If not, download a fresh copy from +329728 bytes in size. If not, download a fresh copy from http://moodle.org/download/mimetex/windows/mimetex.exe. Another possible problem which may affect diff --git a/filter/tex/texed.php b/filter/tex/texed.php index 5d61b119354..10d5b28b993 100644 --- a/filter/tex/texed.php +++ b/filter/tex/texed.php @@ -25,16 +25,16 @@ $pathname = "$CFG->dataroot/$CFG->teximagedir/$image"; switch (PHP_OS) { case "Linux": - system("$CFG->dirroot/$CFG->texfilterdir/mimetex.linux -e $pathname -- ". escapeshellarg($texexp) ); + system("$CFG->dirroot/$CFG->texfilterdir/mimetex.linux -e $pathname ". escapeshellarg($texexp) ); break; case "WINNT": case "WIN32": case "Windows": $texexp = str_replace('"','\"',$texexp); - system("$CFG->dirroot/$CFG->texfilterdir/mimetex.exe -e $pathname -- \"$texexp\""); + system("$CFG->dirroot/$CFG->texfilterdir/mimetex.exe -e $pathname \"$texexp\""); break; case "Darwin": - system("$CFG->dirroot/$CFG->texfilterdir/mimetex.darwin -e $pathname -- ". escapeshellarg($texexp) ); + system("$CFG->dirroot/$CFG->texfilterdir/mimetex.darwin -e $pathname ". escapeshellarg($texexp) ); break; } if (file_exists($pathname)) { @@ -64,13 +64,13 @@
        - -


        +

        -

        +
        diff --git a/filter/tidy/filter.php b/filter/tidy/filter.php deleted file mode 100644 index d96c0090c44..00000000000 --- a/filter/tidy/filter.php +++ /dev/null @@ -1,47 +0,0 @@ - -* @param int course id -* @param string text to be filtered -*/ -function tidy_filter($courseid, $text) { - -/// Configuration for tidy. Feel free to tune for your needs, e.g. to allow -/// proprietary markup. - $tidyoptions = array( - 'output-xhtml' => true, - 'show-body-only' => true, - 'tidy-mark' => false, - 'drop-proprietary-attributes' => true, - 'drop-font-tags' => true, - 'drop-empty-paras' => true, - 'indent' => true, - 'quiet' => true, - ); - -/// Do a quick check using strpos to avoid unnecessary work - if (strpos($text, '<') === false) { - return $text; - } - - -/// If enabled: run tidy over the entire string - if (function_exists('tidy_repair_string')){ - $text = tidy_repair_string($text, $tidyoptions); - } - - return $text; -} -?> diff --git a/grade/exceptions.html b/grade/exceptions.html deleted file mode 100644 index 6311f93a522..00000000000 --- a/grade/exceptions.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
        - -
        -
        - - - - - -

        - -

        -
        -
        -
        - - - - -
        -
        -
        - - - - - -

        - -

        -
        -
        - diff --git a/grade/exceptions.php b/grade/exceptions.php deleted file mode 100644 index ead81833bef..00000000000 --- a/grade/exceptions.php +++ /dev/null @@ -1,143 +0,0 @@ -id); - - $group = get_current_group($course->id); - - print_header("$course->shortname: ".get_string('grades'), "$course->fullname", grade_nav($course, $action)); - - grade_preferences_menu($action, $course, $group); - - grade_set_uncategorized(); - - -/// We are in editing mode. First, process any inputs there may be. - - if ($data = data_submitted()) { - // make sure it is safe to process data - if (!empty($USER->id)) { - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - } - - if (!empty($data->nonmembersadd)) { /// Add people to a grade_item - if (!empty($data->nonmembers) and !empty($data->grade_itemid)) { - $grade_itemmodified = false; - foreach ($data->nonmembers as $userid) { - $record->courseid = $course->id; - $record->grade_itemid = $data->grade_itemid; - $record->userid = $userid; - if (!record_exists('grade_exceptions','courseid',$course->id,'grade_itemid',$data->grade_itemid,'userid',$userid)) { - if (!insert_record('grade_exceptions', $record)) { - notify(get_string('addexceptionerror','grades').$userid.':'.$data->grade_itemid); - } - } - $grade_itemmodified = true; - } - } - $selectedgrade_item = $data->grade_itemid; - - } else if (!empty($data->membersremove)) { /// Remove selected people from a particular grade_item - if (!empty($data->members) and !empty($data->grade_itemid)) { - foreach ($data->members as $userid) { - delete_records('grade_exceptions', 'userid', $userid, "grade_itemid", $data->grade_itemid, 'courseid', $course->id); - } - } - $selectedgrade_item = $data->grade_itemid; - } - } - if (isset($selectedgrade_item)) { - clean_param($selectedgrade_item, PARAM_CLEAN); - } - -/// Calculate data ready to create the editing interface - - $strgradeitemnonmembers = get_string('gradeitemnonmembers','grades'); - $strgradeitemmembersselected = get_string('gradeitemmembersselected','grades'); - $strgradeitemremovemembers = get_string('gradeitemremovemembers','grades'); - $strgradeiteminfomembers = get_string('gradeiteminfomembers','grades'); - $strgradeitemadd = get_string('gradeitemadd','grades'); - $strgradeitemremove = get_string('gradeitemremove','grades'); - $strgradeiteminfo = get_string('gradeiteminfo','grades'); - $strgradeiteminfopeople = get_string('gradeiteminfopeople','grades'); - $strgradeitemrandomassign = get_string('gradeitemrandomassign','grades'); - $strgradeitemaddusers = get_string('gradeitemaddusers','grades'); - $strgradeitems = get_string('gradeitems','grades'); - $courseid = $course->id; - $listgrade_items = array(); - $listmembers = array(); - $nonmembers = array(); - $grade_items = array(); - $grade_items = get_records('grade_item', 'courseid', $course->id); - $grade_itemcount = count($grade_items); - - // we need to create a multidimensional array keyed by grade_itemid with all_students at each level - if (isset($grade_items)) { - foreach($grade_items as $grade_item) { - $nonmembers[$grade_item->id] = array(); - if ($students = get_course_students($course->id)) { - foreach ($students as $student) { - $nonmembers[$grade_item->id][$student->id] = fullname($student, true); - } - unset($students); - } - } - } - - - if ($grade_items) { - foreach ($grade_items as $grade_item) { - $modname = get_record('modules', 'id', $grade_item->modid); - $itemname = get_record($modname->name, 'id', $grade_item->cminstance, 'course', $course->id); - $grade_item->name = $itemname->name; - $countusers = 0; - $listmembers[$grade_item->id] = array(); - if ($grade_itemexceptions = grade_get_grade_item_exceptions($grade_item->id)) { - foreach ($grade_itemexceptions as $grade_itemexception) { - $listmembers[$grade_item->id][$grade_itemexception->userid] = $nonmembers[$grade_item->id][$grade_itemexception->userid]; - unset($nonmembers[$grade_item->id][$grade_itemexception->userid]); - $countusers++; - } - } - $listgrade_items[$grade_item->id] = $grade_item->name." ($countusers)"; - if (!isset($grade_item->name)) { - // these were items that have since been deleted - unset($listgrade_items[$grade_item->id]); - delete_records('grade_item', 'id', $grade_item->id); - } - natcasesort($listmembers[$grade_item->id]); - natcasesort($nonmembers[$grade_item->id]); - } - natcasesort($listgrade_items); - } - - if (empty($selectedgrade_item)) { // Choose the first group by default - $selectedgrade_item = array_shift(array_keys($listgrade_items)); - } - - include('exceptions.html'); - - print_footer($course); - exit; - -function grade_get_grade_item_exceptions($id) { - global $CFG; - global $course; - - $sql = "SELECT ge.id, ge.userid FROM {$CFG->prefix}grade_exceptions ge, {$CFG->prefix}user_students us WHERE us.course=$course->id AND grade_itemid=$id AND ge.userid = us.userid AND us.course=ge.courseid"; - $grade_exceptions = get_records_sql($sql); - return $grade_exceptions; -} - -?> diff --git a/grade/index.php b/grade/index.php deleted file mode 100644 index a226a124d08..00000000000 --- a/grade/index.php +++ /dev/null @@ -1,139 +0,0 @@ -id); - - if (isteacher($course->id)) { - $group = get_and_set_current_group($course, $course->groupmode, $group); - } else { - $group = get_current_group($course->id); - } - - - // if the user set new prefs make sure they happen now - if ($action == 'set_grade_preferences' && $prefs = data_submitted()) { - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - grade_set_preferences($course, $prefs); - } - - $preferences = grade_get_preferences($course->id); - - - // we want this in its own window - if ($action == 'stats') { - grade_stats(); - exit(); - } else if ($action == 'excel') { - grade_download('xls', $id); - exit(); - } else if ($action == 'text') { - grade_download('txt', $id); - exit(); - } - - print_header($course->shortname.': '.get_string('grades'), $course->fullname, grade_nav($course, $action)); - - grade_preferences_menu($action, $course, $group); - - grade_set_uncategorized(); - - if (isteacher($course->id)) { - switch ($action) { - case "cats": - grade_set_categories(); - break; - case "insert_category": - grade_insert_category(); - grade_set_categories(); - break; - case "assign_categories": - grade_assign_categories(); - grade_set_categories(); - break; - case "set_grade_weights": - grade_set_grade_weights(); - grade_display_grade_weights(); - break; - case "weights": - grade_display_grade_weights(); - break; - case "grades": - if ($preferences->use_advanced == 1) { - grade_view_all_grades($user); - } - else { - // all the grades will be in the 'uncategorized' category - grade_view_category_grades($user); - } - break; - case "vcats": - grade_view_category_grades($user); - break; - case "prefs": - case "set_grade_preferences": - grade_display_grade_preferences($course, $preferences); - break; - case "letters": - grade_display_letter_grades(); - break; - case "set_letter_grades": - grade_set_letter_grades(); - grade_display_letter_grades(); - break; - case "delete_category": - grade_delete_category(); - // re-run set_uncategorized as they may have deleted a category that had items in it - grade_set_uncategorized(); - grade_set_categories(); - break; - case "view_student_grades": - grade_view_all_grades($user); - break; - case "view_student_category_grades": - grade_view_category_grades($user); - break; - default: - if ($preferences->use_advanced == 1) { - grade_view_all_grades($user); - } - else { - grade_view_category_grades($user); - } - } // end switch - } // end if isTeacher - else { - if ($preferences->show_weighted || $preferences->show_points || $preferences->show_points) { - - if ($preferences->use_advanced == 1) { - if($action != 'vcats') { - grade_view_all_grades($USER->id); - } - else { - grade_view_category_grades($USER->id); - } - } else { - grade_view_category_grades($USER->id); - } - - } else { - error(get_string('gradebookhiddenerror','grades')); - } - } // end else (!teacher) - - print_footer($course); - - -?> diff --git a/grade/lib.php b/grade/lib.php deleted file mode 100644 index 0e68e6224d6..00000000000 --- a/grade/lib.php +++ /dev/null @@ -1,2775 +0,0 @@ -dirroot.'/course/lib.php'); - -define('UNCATEGORISED', 'uncategorised'); - -$GRADEPREFS = array('use_advanced', // Only add new preferences to the end of this array! - 'use_weighted_for_letter', // as the order counts and will affect backward compatibility - 'display_weighted', - 'display_points', - 'display_percent', - 'display_letters', - 'reprint_headers', - 'show_hidden', - ); - - -$GRADEPREFSDEFAULTS = array('use_advanced' => 0, - 'use_weighted_for_letter' => 0, - 'display_weighted' => 0, - 'display_points' => 2, - 'display_percent' => 1, - 'display_letters' => 0, - 'reprint_headers' => 0, - 'show_hidden' => 1 - ); - - -//****************************************************************** -// SQL FUNCTIONS -//****************************************************************** - -function grade_get_category_weight($course, $category) { - global $CFG; - $sql = "SELECT id, weight, drop_x_lowest, bonus_points, hidden, c.id cat_id - FROM {$CFG->prefix}grade_category c - WHERE c.courseid=$course - AND c.name='$category'"; - $temp = get_record_sql($sql); - return $temp; -} - -function grade_get_grade_items($course) { - global $CFG; - $sql = "SELECT i.id, c.name as cname, i.modid, mm.name as modname, i.cminstance, c.hidden, cm.visible, i.sort_order - FROM {$CFG->prefix}grade_item i, - {$CFG->prefix}grade_category c, - {$CFG->prefix}course_modules cm, - {$CFG->prefix}modules mm - WHERE c.id=i.category - AND i.courseid=c.courseid - AND c.courseid=$course - AND cm.course=c.courseid - AND cm.module=mm.id - AND i.modid=mm.id - AND cm.instance=i.cminstance"; - $temp = get_records_sql($sql); - return $temp; -} - -function grade_get_module_link($course, $cminstance, $modid) { - global $CFG; - $sql = "SELECT cm.id FROM {$CFG->prefix}course_modules cm, {$CFG->prefix}modules mm, {$CFG->prefix}grade_item i - WHERE i.modid='".$modid."' - AND i.modid=mm.id - AND cm.instance = i.cminstance - AND i.cminstance=".$cminstance." - AND i.courseid=cm.course AND cm.module=mm.id AND i.courseid=$course"; - $temp = get_record_sql($sql); - return $temp; -} - -function grade_get_grade_letter($course, $grade) { - global $CFG; - $sql = "SELECT id, letter FROM {$CFG->prefix}grade_letter WHERE courseid=$course AND grade_high >= $grade AND grade_low <= $grade"; - $temp = get_record_sql($sql); - return $temp; -} - -function grade_get_exceptions($course) { - global $CFG; - $sql = "SELECT e.id, e.userid, gi.cminstance, gi.modid, c.name as catname, mm.name as modname - FROM {$CFG->prefix}grade_exceptions e, - {$CFG->prefix}grade_item gi, - {$CFG->prefix}grade_category c, - {$CFG->prefix}course_modules cm, - {$CFG->prefix}modules mm - WHERE e.courseid=$course - AND gi.id = e.grade_itemid - AND c.id = gi.category - AND cm.course=c.courseid - AND cm.module=mm.id - AND gi.modid=mm.id"; - - $temp = get_records_sql($sql); - return $temp; -} - -function grade_letters_set($course) { - global $CFG; - $sql = "SELECT * FROM {$CFG->prefix}grade_letter WHERE courseid=$course"; - $letters_set = get_records_sql($sql); - if ($letters_set) { - return true; - } - else { - return false; - } -} - -function grade_get_users_by_group($course, $group) { - global $CFG; - $sql = "SELECT userid FROM {$CFG->prefix}groups_members WHERE courseid=$course AND groupid = $group"; - $members = get_records_sql($sql); - if ($members) { - foreach($members as $member) { - $group->$userid = true; - } - return $group; - } - else { - return NULL; - } -} - -//****************************************************************** -// END SQL FUNCTIONS -//****************************************************************** - -function grade_get_formatted_grades() { - global $CFG; - global $course; - global $preferences; - $i = 1; - $grades = grade_get_grades(); - if (isset($grades)) { - // iterate through all students - foreach($grades as $cur_category=>$grade_category) { - // $cur_category holds the value of the current category name - // $grade_category holds an array of all the mod types that are in this category - if (isset($grade_category)) { - foreach($grade_category as $cur_mod=>$mod_category) { - // $cur_mod is the id of the current moodle module type - // $mod_category holds the grades for $cur_mod (current mod type) - $module_info = get_record('modules', 'id', $cur_mod); - $cur_modname = $module_info->name; - if (isset($mod_category)) { - foreach($mod_category as $cur_cminstance=>$students_grade) { - // $cur_cminstance is the course module instance for the cur_mod - $instance = get_record($cur_modname, 'id',$cur_cminstance, 'course',$course->id); - // it's necessary to check if the name is blank because some mods don't clean up the grades when the instance is deleted - // this is a bug. as it is plausible that some item could get created and have old data from a previous mod laying around - if ($instance->name != '') { - // duplicate grade item name, the user should know better than to name to things by the same name, but to make sure grades don't disappear lets modify the name slightly - if (isset($all_categories["$cur_category"]["$instance->name"])) { - $instance->name= $instance->name.' *'.$i.'*'; - } - - if (isset($students_grade->grades) && $students_grade->grades != '') { - foreach($students_grade->grades as $student=>$grade) { - // add an entry for any student that has a grade - $grades_by_student["$student"]["$cur_category"]["$instance->name"]['grade'] = $grade; - $grades_by_student["$student"]["$cur_category"]["$instance->name"]['sort_order'] = $students_grade->sort_order; - - if (!isset($grades_by_student["$student"]["$cur_category"]['stats'])) { - $grades_by_student["$student"]["$cur_category"]['stats'] = array(); - } - - if (!isset($grades_by_student["$student"]["$cur_category"]['stats']['points'])) { - $grades_by_student["$student"]["$cur_category"]['stats']['points'] = $grade; - } - else { - $grades_by_student["$student"]["$cur_category"]['stats']['points'] = $grades_by_student["$student"]["$cur_category"]['stats']['points'] + $grade; - } - - // This next block just creates a comma seperated list of all grades for the category - if (isset($grades_by_student["$student"]["$cur_category"]['stats']['allgrades'])) { - $grades_by_student["$student"]["$cur_category"]['stats']['allgrades'] .= ','.$grade; - } - else { - $grades_by_student["$student"]["$cur_category"]['stats']['allgrades'] = $grade; - } - } - } - // set up a list of all categories and assignments (adjusting things for extra credit where necessary) - $all_categories["$cur_category"]["$instance->name"]['hidden'] = $students_grade->hidden; - $all_categories["$cur_category"]["$instance->name"]['sort_order'] = $students_grade->sort_order; - - $all_categories["$cur_category"]["$instance->name"]['extra_credit'] = $students_grade->extra_credit; - - if ($all_categories["$cur_category"]["$instance->name"]['extra_credit'] != 1) { - $all_categories["$cur_category"]["$instance->name"]['maxgrade'] = $students_grade->maxgrade; - } - else { - $all_categories["$cur_category"]["$instance->name"]['maxgrade'] = 0; - } - $all_categories["$cur_category"]["$instance->name"]['scale_grade'] = $students_grade->scale_grade; - if ($students_grade->scale_grade != 0) { - $all_categories["$cur_category"]["$instance->name"]['scaled_max'] = round($all_categories["$cur_category"]["$instance->name"]['maxgrade']/$students_grade->scale_grade); - } - else { - // avoids divide by zero... scale_grade shouldn't be set to 0 anyway - $all_categories["$cur_category"]["$instance->name"]['scaled_max'] = $all_categories["$cur_category"]["$instance->name"]['maxgrade']; - $all_categories["$cur_category"]["$instance->name"]['scale_grade'] = 1.0; - } - if (! isset($all_categories["$cur_category"]['stats']) ) { - $all_categories["$cur_category"]['stats'] = array(); - } - $all_categories["$cur_category"]["$instance->name"]['grade_against'] = $all_categories["$cur_category"]["$instance->name"]['scaled_max']; - if (!isset($all_categories["$cur_category"]['stats']['weight'])) { - $weight = grade_get_category_weight($course->id, $cur_category); - $all_categories["$cur_category"]['stats']['weight'] = $weight->weight; - } - - $all_categories["$cur_category"]["$instance->name"]['cminstance'] = $cur_cminstance; - $all_categories["$cur_category"]["$instance->name"]['modid'] = $cur_mod; - $modname = get_record('modules','id',$cur_mod); - $all_categories["$cur_category"]["$instance->name"]['modname'] = $modname->name; - - // get bonus points and drop the x lowest - $drop = get_record('grade_category', 'courseid', $course->id, 'name', $cur_category); - $all_categories["$cur_category"]['stats']['drop'] = $drop->drop_x_lowest; - $all_categories["$cur_category"]['stats']['bonus_points'] = $drop->bonus_points; - } - } - } - } - } - } - - // set the students name under student_data (this has the added bonus of creating an entry for students who do not have any grades) - $students = get_course_students($course->id); - if (isset($students) && $students) { - foreach ($students as $userid => $student) { - $grades_by_student["$userid"]['student_data']['firstname'] = $student->firstname; - $grades_by_student["$userid"]['student_data']['lastname'] = $student->lastname; - $grades_by_student["$userid"]['student_data']['email'] = $student->email; - if (isset($student->location)) { - $grades_by_student["$userid"]['student_data']['location'] = $student->location; - } - $grades_by_student["$userid"]['student_data']['department'] = $student->department; - $grades_by_student["$userid"]['student_data']['idnumber'] = $student->idnumber; - } - } - - // unset any item that has a "" for a name at this point this inludes instructors who have grades or any student formerly enrolled. - if (isset($grades_by_student)) { - foreach ($grades_by_student as $student => $assignments) { - if (!isset($grades_by_student["$student"]['student_data']['firstname']) && !isset($grades_by_student["$student"]['student_data']['lastname'])) { - unset($grades_by_student["$student"]); - } - } - } - - - // set the totalpoints for each category taking into account drop_x_lowest - // also set the number of grade items for the category to make calculating grades for students who have not taken anything easier - foreach($all_categories as $category => $assignments) { - $dropcount = 0; - $all_categories["$category"]['stats']['totalpoints'] = 0; - $all_categories["$category"]['stats']['grade_items'] = 0; - if (isset($assignments)) { - foreach($assignments as $assignment=>$grade) { - if ($assignment != 'stats') { - if ($dropcount < $all_categories["$category"]['stats']['drop']) { - // skip a grade in the total - $dropcount++; - } - else { - // make sure the current assignment is not extra credit and then add it to the totalpoints - if ($all_categories["$category"][$assignment]['extra_credit'] != 1) { - $all_categories["$category"]['stats']['totalpoints'] = $all_categories["$category"]['stats']['totalpoints'] + $assignments["$assignment"]['grade_against']; - $all_categories["$category"]['stats']['grade_items'] = $all_categories["$category"]['stats']['grade_items'] + 1; - } - } - } - } - } - } - - if (isset($_REQUEST['group'])) { - $group = clean_param($_REQUEST['group'], PARAM_INT); - } - // if the user has selected a group to view by get the group members - if (isset($group) && $group != 0) { - $groupmembers = get_group_users($group); - } - - // this next block catches any students who do not have a grade for any item in a particular category - foreach($all_categories as $category => $main_category) { - // make sure each student has an entry for each category - if (isset($grades_by_student)) { - foreach($grades_by_student as $student=>$categories) { - if ( (isset($groupmembers) && isset($groupmembers[$student])) || !isset($groupmembers)) { - $grades_by_student["$student"]["$category"]['stats']['totalpoints'] = $main_category['stats']['totalpoints']; - $grades_by_student["$student"]["$category"]['stats']['weight'] = $main_category['stats']['weight']; - $grades_by_student["$student"]["$category"]['stats']['grade_items'] = $main_category['stats']['grade_items']; - if (!isset($grades_by_student["$student"]["$category"]['stats']['points'])) { - $grades_by_student["$student"]["$category"]['stats']['points'] = '-'; - } - else { - // points are set... see if the current category is using drop the x lowest and do so - if ($main_category['stats']['drop'] != 0) { - $grades_by_student["$student"]["$category"]['stats']['allgrades'] = grade_drop_lowest($grades_by_student["$student"]["$category"]['stats']['allgrades'], $main_category['stats']['drop'], $main_category['stats']['grade_items']); - if ($grades_by_student["$student"]["$category"]['stats']['points'] != '-') { - $cat_points = 0; - $count_grades = explode(',',$grades_by_student["$student"]["$category"]['stats']['allgrades']); - foreach($count_grades as $grade) { - $cat_points = $cat_points + $grade; - } - $grades_by_student["$student"]["$category"]['stats']['points'] = $cat_points; - } - } - } - - // add any bonus points for the category - if ($all_categories["$category"]['stats']['bonus_points'] != 0) { - $grades_by_student["$student"]["$category"]['stats']['points'] = $grades_by_student["$student"]["$category"]['stats']['points'] + $all_categories["$category"]['stats']['bonus_points']; - } - - foreach($main_category as $assignment => $items) { - if ($assignment != 'stats') { - if(!isset($grades_by_student["$student"]["$category"]["$assignment"]['maxgrade'])) { - $grades_by_student["$student"]["$category"]["$assignment"]['maxgrade'] = $all_categories["$category"]["$assignment"]['grade_against']; - } - if(!isset($grades_by_student["$student"]["$category"]["$assignment"]['grade'])) { - $grades_by_student["$student"]["$category"]["$assignment"]['grade'] = '-'; - $grades_by_student["$student"]["$category"]["$assignment"]['sort_order'] = $all_categories["$category"]["$assignment"]['sort_order']; - } - } - } - } // end groupmember if - else { - // unset grade since they are not in the selected group. - unset($grades_by_student["$student"]); - } - } - } - } - - // set the total coursepoints - $all_categories['stats']['weight'] = 0; - $all_categories['stats']['totalpoints'] = 0; - foreach($all_categories as $category => $info) { - if ($category != 'stats') { - $all_categories['stats']['weight'] = $all_categories['stats']['weight'] + $all_categories["$category"]['stats']['weight']; - $all_categories['stats']['totalpoints'] = $all_categories['stats']['totalpoints'] + $all_categories["$category"]['stats']['totalpoints']; - } - } - - // set each individuals total points by category so we can then exclude some grades if set to use exceptions - if (isset($grades_by_student)) { - foreach($grades_by_student as $student => $categories) { - foreach($all_categories as $category => $assignments) { - if ($category != 'stats') { - $grades_by_student["$student"]["$category"]['stats']['totalpoints'] = $all_categories["$category"]['stats']['totalpoints']; - } - } - $grades_by_student["$student"]['student_data']['totalpoints'] = $all_categories['stats']['totalpoints']; - } - } - - // take into account any excluded grade_items - $strexcluded = get_string('excluded', 'grades'); - $exceptions = grade_get_exceptions($course->id); - if (isset($exceptions) && $exceptions) { - foreach($exceptions as $exception) { - if (isset($grades_by_student["$exception->userid"])) { - if ($grades_by_student["$exception->userid"]["$exception->catname"]) { - $assgn = get_record($exception->modname, 'id', $exception->cminstance, 'course', $course->id); - $grades_by_student["$exception->userid"]['student_data']['totalpoints'] = $grades_by_student["$exception->userid"]['student_data']['totalpoints'] - $all_categories["$exception->catname"]["$assgn->name"]['maxgrade']; - $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['totalpoints'] = $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['totalpoints'] - $all_categories["$exception->catname"]["$assgn->name"]['grade_against']; - $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['grade_items'] = $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['grade_items'] - 1; - if ($grades_by_student["$exception->userid"]["$exception->catname"]['stats']['grade_items'] < 0) { - $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['grade_items'] = 0; - } - $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['points'] = $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['points'] - $grades_by_student["$exception->userid"]["$exception->catname"]["$assgn->name"]['grade']; - $grades_by_student["$exception->userid"]["$exception->catname"]["$assgn->name"]['maxgrade'] = $strexcluded; - $grades_by_student["$exception->userid"]["$exception->catname"]["$assgn->name"]['grade'] = $strexcluded; - // see if they are excluded entirely from a category - if ($grades_by_student["$exception->userid"]["$exception->catname"]['stats']['totalpoints'] == 0) { - $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['totalpoints'] = $strexcluded; - $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['percent'] = $strexcluded; - $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['points'] = $strexcluded; - $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['weight'] = $strexcluded; - $grades_by_student["$exception->userid"]["$exception->catname"]['stats']['weighted'] = $strexcluded; - } - } - } - else { - // the user had exceptions, but was unenrolled from the course... we could delete it here, but we will leave it because the user may be re-added to the course - } - } - } - - if (isset($grades_by_student)) { - foreach($grades_by_student as $student => $categories) { - $grades_by_student["$student"]['student_data']['points'] = '-'; - $grades_by_student["$student"]['student_data']['totalpoints'] = 0; - $grades_by_student["$student"]['student_data']['weight'] = 0; - $grades_by_student["$student"]['student_data']['weighted'] = 0; - foreach($categories as $category => $assignments) { - if ($category != 'student_data') { - // set the student's total points earned - if ($grades_by_student["$student"]["$category"]['stats']['points'] != $strexcluded) { - if ($grades_by_student["$student"]["$category"]['stats']['points'] != '-') { - $grades_by_student["$student"]['student_data']['points'] = $grades_by_student["$student"]['student_data']['points'] + $grades_by_student["$student"]["$category"]['stats']['points']; - } - $grades_by_student["$student"]['student_data']['totalpoints'] = $grades_by_student["$student"]['student_data']['totalpoints'] + $grades_by_student["$student"]["$category"]['stats']['totalpoints']; - } - - // set percents and weights for each assignment - foreach($assignments as $assignment => $info) { - if ($assignment != 'stats') { - if ($grades_by_student["$student"]["$category"]["$assignment"]['grade'] != $strexcluded) { - if ($grades_by_student["$student"]["$category"]["$assignment"]['maxgrade'] != 0) { - $grades_by_student["$student"]["$category"]["$assignment"]['percent'] = round($grades_by_student["$student"]["$category"]["$assignment"]['grade']/$grades_by_student["$student"]["$category"]["$assignment"]['maxgrade']*100,2); - } - else { - $grades_by_student["$student"]["$category"]["$assignment"]['percent'] = 0; - } - if ($grades_by_student["$student"]["$category"]['stats']['totalpoints'] != 0) { - $grades_by_student["$student"]["$category"]["$assignment"]['weight'] = round($all_categories["$category"]['stats']['weight']*($grades_by_student["$student"]["$category"]["$assignment"]['maxgrade']/$grades_by_student["$student"]["$category"]['stats']['totalpoints']),2); - } - else { - $grades_by_student["$student"]["$category"]["$assignment"]['weight'] = 0.00; - } - if ($grades_by_student["$student"]["$category"]["$assignment"]['weight'] != 0) { - $grades_by_student["$student"]["$category"]["$assignment"]['weighted'] = round($grades_by_student["$student"]["$category"]["$assignment"]['percent']*$grades_by_student["$student"]["$category"]["$assignment"]['weight']/100,2); - } - else { - // should only be here if this is extra credit - $grades_by_student["$student"]["$category"]["$assignment"]['weighted'] = 0.00; - } - } - else { - $grades_by_student["$student"]["$category"]["$assignment"]['percent'] = $strexcluded; - $grades_by_student["$student"]["$category"]["$assignment"]['weight'] = $strexcluded; - $grades_by_student["$student"]["$category"]["$assignment"]['weighted'] = $strexcluded; - } - } - } - // set the percent and weight per category - if ($grades_by_student["$student"]["$category"]['stats']['totalpoints'] != 0 ) { - $grades_by_student["$student"]["$category"]['stats']['percent'] = round($grades_by_student["$student"]["$category"]['stats']['points']/$grades_by_student["$student"]["$category"]['stats']['totalpoints']*100,2); - $grades_by_student["$student"]["$category"]['stats']['weighted'] = round($grades_by_student["$student"]["$category"]['stats']['points']/$grades_by_student["$student"]["$category"]['stats']['totalpoints']*$grades_by_student["$student"]["$category"]['stats']['weight'],2); - } - else { - if ($grades_by_student["$student"]["$category"]['stats']['totalpoints'] != $strexcluded) { - $grades_by_student["$student"]["$category"]['stats']['percent'] = 0.00; - $grades_by_student["$student"]["$category"]['stats']['weighted'] = 0.00; - } - } - - // set students overall weight (this is what percent they will be graded against) - if ($grades_by_student["$student"]["$category"]['stats']['weight'] != $strexcluded) { - $grades_by_student["$student"]['student_data']['weight'] = $grades_by_student["$student"]['student_data']['weight'] + $grades_by_student["$student"]["$category"]['stats']['weight']; - } - - // set the students total categories towards point total we have to defer the percent calculation until we know what total weight they should be graded against since they may - // be excluded from a whole category. - if ($all_categories["$category"]['stats']['totalpoints'] != 0) { - $grades_by_student["$student"]['student_data']['weighted'] = $grades_by_student["$student"]['student_data']['weighted'] + $grades_by_student["$student"]["$category"]['stats']['weighted']; - } - } - - - } - - // set the percent and weight overall - if ($grades_by_student["$student"]['student_data']['totalpoints'] != 0 && $grades_by_student["$student"]['student_data']['totalpoints'] != $strexcluded) { - $grades_by_student["$student"]['student_data']['percent'] = round($grades_by_student["$student"]['student_data']['points']/$grades_by_student["$student"]['student_data']['totalpoints']*100,2); - if ($grades_by_student["$student"]['student_data']['weight'] != 0) { - $grades_by_student["$student"]['student_data']['weighted'] = round($grades_by_student["$student"]['student_data']['weighted']/$grades_by_student["$student"]['student_data']['weight']*100,2); - } - else { - $grades_by_student["$student"]['student_data']['weighted'] = 0.00; - } - } - else if ($grades_by_student["$student"]['student_data']['totalpoints'] == 0) { - $grades_by_student["$student"]['student_data']['percent'] = 0.00; - } - - } - } - - if (isset($grades_by_student)) { - $sort = optional_param('sort','default'); - - switch ($sort) { - case 'highgrade_category': - uasort($grades_by_student, 'grade_sort_by_highgrade_category'); - break; - case 'highgrade_category_asc': - uasort($grades_by_student, 'grade_sort_by_highgrade_category_asc'); - break; - case 'highgrade': - { - if ($preferences->use_weighted_for_letter == 1) { - uasort($grades_by_student, 'grade_sort_by_weighted'); - } - else { - uasort($grades_by_student, 'grade_sort_by_percent'); - } - break; - } - case 'points': - uasort($grades_by_student, 'grade_sort_by_points'); - break; - case 'points_asc': - uasort($grades_by_student, 'grade_sort_by_points_asc'); - break; - case 'weighted': - uasort($grades_by_student, 'grade_sort_by_weighted'); - break; - case 'weighted_asc': - uasort($grades_by_student, 'grade_sort_by_weighted_asc'); - break; - case 'percent': - uasort($grades_by_student, 'grade_sort_by_percent'); - break; - case 'percent_asc': - uasort($grades_by_student, 'grade_sort_by_percent_asc'); - break; - case 'highgrade_asc': - { - if ($preferences->use_weighted_for_letter == 1) { - uasort($grades_by_student, 'grade_sort_by_weighted_asc'); - } - else { - uasort($grades_by_student, 'grade_sort_by_percent_asc'); - } - break; - } - case 'firstname': - uasort($grades_by_student, 'grade_sort_by_firstname'); - break; - default: - uasort($grades_by_student, 'grade_sort_by_lastname'); - } - } - else { - $grades_by_student = 0; - } - //print_object($grades_by_student); - //print_object($all_categories); - $retval = array($grades_by_student, $all_categories); - } - else { - $retval = array(0,0); - // echo "
        Could not find any graded items for this course.
        "; - } - return $retval; -} - -function grade_drop_lowest($grades, $drop, $total) { - // drops the lowest $drop numbers from the comma seperated $grades making sure that if $grades has - // fewer items than $total that we don't drop too many - $grade_array = explode(',',$grades); - - $actually_drop = (count($grade_array) - $total); - if ($actually_drop > 0) { - rsort($grade_array); - - for($i=0; $i < (count($grade_array) - $actually_drop); $i++) { - $ret_grades["$i"] = $grade_array["$i"]; - } - if ($ret_grades) { - $grades = implode(',',$ret_grades); - } - else { - // set grades to 0... they decided to drop too many - $grades = 0; - } - } - return $grades; -} - -function grade_get_grades() { - global $CFG; - global $course; - $mods = grade_get_grade_items($course->id); - $preferences = grade_get_preferences($course->id); - - if ($mods) { - foreach ($mods as $mod) { - // hidden is a gradebook setting for an assignment and visible is a course_module setting - if (($mod->hidden != 1 && $mod->visible==1) or (isteacher($course->id) && $preferences->show_hidden==1)) { - $libfile = "$CFG->dirroot/mod/$mod->modname/lib.php"; - if (file_exists($libfile)) { - require_once($libfile); - $gradefunction = $mod->modname."_grades"; - if ($grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"] = $gradefunction($mod->cminstance)) { - // added grades for particular mod - // now get the grade_item modifiers ie. scale_grade and extra credit - $scale_grade = get_record('grade_item', 'courseid', $course->id, 'cminstance', $mod->cminstance, 'modid', $mod->modid); - - if (isset($scale_grade)) { - $grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"]->scale_grade = $scale_grade->scale_grade; - $grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"]->extra_credit = $scale_grade->extra_credit; - } - else { - $grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"]->scale_grade = 1.00; - $grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"]->extra_credit = 0; - } - - if ($mod->hidden != 1 && $mod->visible==1) { - $grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"]->hidden = 0; - } - else { - $grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"]->hidden = 1; - } - - $grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"]->sort_order = $scale_grade->sort_order; - - // I don't think this should be necessary but it appears that the forum doesn't follow the grades API properly it returns blank or NULL when it - // should return a value for maxgrade according to the moodle API... so if it doesn't want to give us a grade let's not use it. - // this happens when grading is set to a non-numeric for a forum ie. uses "seperate and connected ways of knowing" - if ($grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"]->maxgrade == '') - { - $grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"]->maxgrade = 100; - //unset($grades["$mod->cname"]["$mod->modid"]["$mod->cminstance"]); - } - } - else { - // delete this item from the grade_item table since it was deleted through the mod interface - delete_records('grade_item', 'modid', $mods->modid, 'courseid', $course->id); - } - } - else { - //echo "
        Could not find lib file for $mod->modid
        "; - } - } - } - } - else { - // Do something here for no grades - //echo "
        No grades returned. It appears that there are no items with grades for this course.
        "; - } - if (isset($grades)) { - return $grades; - } - else { - return NULL; - } -} - -function grade_set_uncategorized() { - // this function checks to see if any mods have not been assigned a category and sets them to uncategorized. - global $CFG; - global $course; - $uncat = UNCATEGORISED; - - $uncat_id = get_record('grade_category', 'courseid', $course->id, 'name', $uncat); - - if (!$uncat_id) { - // insert the uncategorized category - $temp->name=$uncat; - $temp->courseid=$course->id; - $temp->drop_x_lowest = 0; - $temp->bonus_points = 0; - $temp->hidden = 0; - $temp->weight = 100.00; - - insert_record('grade_category', $temp); - $uncat_id = get_record('grade_category', 'courseid', $course->id, 'name', $uncat); - if (!$uncat_id) { - error(get_string('errornocategorizedid','grades')); - exit(0); - } - } - - - /// Collect modules data - get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused); - $itemcount = 0; - - // this will let us establish the order for gradebook item display - $sort = 0; - - /// 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) { - if (isset($mods["$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)) { - $itemcount++; - //modgrades contains student information with associated grade - //echo "modname: $mod->modname id: $mod->id course: $mod->course
        "; - // get instance name from db. - $instance = get_record($mod->modname, 'id', $mod->instance); - // see if the item is already in the category table and if it is call category select with the id so it is selected - get_record('modules', 'name', $mod->modname); - $item = get_record('grade_item', 'courseid', $course->id, 'modid', $mod->module, 'cminstance', $mod->instance); - if (!$item) { - // set the item to uncategorized in grade_item - $item->courseid = $course->id; - $item->category = $uncat_id->id; - $item->modid = $mod->module; - $item->cminstance = $mod->instance; - $item->id = insert_record('grade_item', $item); - } - else if ($item->category == 0) { - // this catches any errors where they may have some wierd category set - set_field('grade_item', 'category', $uncat_id->id, 'id', $item->id); - } - set_field('grade_item', 'sort_order', $sort, 'id', $item->id); - $sort++; - } - } - } - } - } - } - } - } -} - -// sorting functions for grades -function grade_sort_by_lastname($x,$y) -{ - //$grades_by_student["$student->userid"]['student_data']['firstname'] = $student->firstname; - //$grades_by_student["$student->userid"]['student_data']['lastname'] = $student->lastname; - if (strnatcasecmp($x['student_data']['lastname'],$y['student_data']['lastname']) == 0) { - return strnatcasecmp($x['student_data']['firstname'],$y['student_data']['firstname']); - } - else { - return strnatcasecmp($x['student_data']['lastname'],$y['student_data']['lastname']); - } -} - -function grade_sort_by_firstname($x,$y) -{ - //$grades_by_student["$student->userid"]['student_data']['firstname'] = $student->firstname; - //$grades_by_student["$student->userid"]['student_data']['lastname'] = $student->lastname; - if (strnatcasecmp($x['student_data']['firstname'],$y['student_data']['firstname']) == 0) { - return strnatcasecmp($x['student_data']['lastname'],$y['student_data']['lastname']); - } - else { - return strnatcasecmp($x['student_data']['firstname'],$y['student_data']['firstname']); - } -} - -function grade_sort_by_points($x,$y) { - if ($x['student_data']['points'] == $y['student_data']['points']) { - return grade_sort_by_lastname($x,$y); - } - else { - if ($x['student_data']['points'] > $y['student_data']['points']) - return -1; - else - return 1; - } -} - -function grade_sort_by_points_asc($x,$y) { - if ($x['student_data']['points'] == $y['student_data']['points']) { - return grade_sort_by_lastname($x,$y); - } - else { - if ($x['student_data']['points'] < $y['student_data']['points']) - return -1; - else - return 1; - } -} - -function grade_sort_by_weighted($x,$y) { - if ($x['student_data']['weighted'] == $y['student_data']['weighted']) { - return grade_sort_by_lastname($x,$y); - } - else { - if ($x['student_data']['weighted'] > $y['student_data']['weighted']) - return -1; - else - return 1; - } -} - -function grade_sort_by_percent($x,$y) { - if ($x['student_data']['percent'] == $y['student_data']['percent']) { - return grade_sort_by_lastname($x,$y); - } - else { - if ($x['student_data']['percent'] > $y['student_data']['percent']) - return -1; - else - return 1; - } -} - -function grade_sort_by_percent_asc($x,$y) { - if ($x['student_data']['percent'] == $y['student_data']['percent']) { - return grade_sort_by_lastname($x,$y); - } - else { - if ($x['student_data']['percent'] < $y['student_data']['percent']) - return -1; - else - return 1; - } -} - -function grade_sort_by_weighted_asc($x,$y) { - if ($x['student_data']['weighted'] == $y['student_data']['weighted']) { - return grade_sort_by_lastname($x,$y); - } - else { - if ($x['student_data']['weighted'] < $y['student_data']['weighted']) - return -1; - else - return 1; - } -} - -function grade_sort_by_highgrade_category($x,$y) { - global $cview; - - if(!$cview) { - $cview = optional_param('cview'); - } - - if ($x["$cview"]['stats']['points'] == $y["$cview"]['stats']['points']) { - return grade_sort_by_lastname($x,$y); - } - else { - return ($y["$cview"]['stats']['points'] - $x["$cview"]['stats']['points']); - } -} - -function grade_sort_by_highgrade_category_asc($x,$y) { - global $cview; - - if(!$cview) - $cview = optional_param('cview'); - - if ($x["$cview"]['stats']['points'] == $y["$cview"]['stats']['points']) { - return grade_sort_by_lastname($x,$y); - } - else { - return ($x["$cview"]['stats']['points'] - $y["$cview"]['stats']['points']); - } -} - - -function grade_set_preference($courseid, $name, $value) { - global $GRADEPREFS; - - if (false !== ($key = array_search($name, $GRADEPREFS))) { - if ($record = get_record('grade_preferences', 'courseid', $courseid, 'preference', $key)) { - $record->value = $value; - update_record('grade_preferences', $record); - } else { // Make a new one - $record->preference = $key; - $record->courseid = $courseid; - $record->value = $value; - insert_record('grade_preferences', $record); - } - } -} - -function grade_get_preference($courseid, $name) { - global $GRADEPREFS; - - if (false !== ($key = array_search($name, $GRADEPREFS))) { - if ($record = get_record('grade_preferences', 'courseid', $courseid, 'preference', $key)) { - return $record->value; - } else { // Make a new one - $record->preference = $key; - $record->courseid = $courseid; - $record->value = $value; - insert_record('grade_preferences', $record); - } - } - return NULL; -} - -function grade_get_preferences($courseid) { - global $CFG; - global $GRADEPREFS, $GRADEPREFSDEFAULTS; - - $preferences = NULL; - - // Get the preferences for the course. - if ($rawprefs = get_records('grade_preferences', 'courseid', $courseid)) { - foreach ($rawprefs as $pref) { - if (isset($GRADEPREFS[$pref->preference])) { // Valid pref - $name = $GRADEPREFS[$pref->preference]; - $preferences->$name = $pref->value; - } - } - } - - // Check for any missing ones and create them from defaults - // We don't save them in the database so we save space - foreach ($GRADEPREFS as $number => $name) { - if (!isset($preferences->$name)) { - $preferences->$name = $GRADEPREFSDEFAULTS[$name]; - } - } - - // Construct some other ones about which fields are shown - - $isteacher = isteacher($courseid); - - $preferences->show_weighted = (($preferences->display_weighted > 0 && $isteacher) || - ($preferences->display_weighted > 1 && !$isteacher)); - - $preferences->show_points = (($preferences->display_points > 0 && $isteacher) || - ($preferences->display_points > 1 && !$isteacher)); - - $preferences->show_percent = (($preferences->display_percent > 0 && $isteacher) || - ($preferences->display_percent > 1 && !$isteacher)); - - $preferences->show_letters = (($preferences->display_letters > 0 && $isteacher) || - ($preferences->display_letters > 1 && !$isteacher)); - - return $preferences; -} - - -function grade_set_preferences($course, $newprefs) { - - if (!isset($newprefs->use_advanced) or ($newprefs->use_advanced == 1)) { - foreach ($newprefs as $name => $value) { /// Just save them all - grade_set_preference($course->id, $name, $value); - } - return true; - } - -/// We don't need advanced features, and we need to unset all extra features -/// So they don't affect grades (This approach should be revisited because it resets everything!!) - - grade_set_preference($course->id, 'use_advanced', 0); - grade_set_preference($course->id, 'use_weighted_for_letter', 0); - grade_set_preference($course->id, 'display_weighted', 0); - grade_set_preference($course->id, 'display_points', 2); - grade_set_preference($course->id, 'display_percent', 0); - grade_set_preference($course->id, 'display_letters', 0); - -/// Lose all exceptions - delete_records('grade_exceptions', 'courseid', $course->id); - - if (!$uncat = get_record('grade_category', 'courseid', $course->id, 'name', UNCATEGORISED)) { - /// Make a category for uncategorised stuff - $uncat->name=UNCATEGORISED; - $uncat->courseid=$course->id; - if (!$uncat->id = insert_record('grade_category', $uncat)) { - error(get_string('errornocategorizedid','grades')); - } - } - - set_field('grade_item', 'category', $uncat->id, 'courseid', $course->id); - set_field('grade_item', 'scale_grade', 1.00, 'courseid', $course->id); - set_field('grade_item', 'extra_credit', 0, 'courseid', $course->id); - - set_field('grade_category', 'weight', 100.0, 'courseid', $course->id, 'id', $uncat->id); - set_field('grade_category', 'bonus_points', '0', 'courseid', $course->id); -} - - -function grade_preferences_menu($action, $course, $group=0) { - - if (!isteacher($course->id)) { - return; - } - - // remap some actions to simplify later code - switch ($action) { - case 'prefs': - case 'set_grade_preferences': - $curraction = 'prefs'; - break; - case 'cats': - case 'vcats': - case 'insert_category': - case 'assign_categories': - case 'delete_category': - $curraction = 'cats'; - break; - case 'set_grade_weights': - case 'weights': - $curraction = 'weights'; - break; - case 'letters': - case 'set_letter_grades': - $curraction = 'letters'; - break; - case 'view_student_grades': - case 'view_student_category_grades': - case 'grades': - $curraction = 'grades'; - break; - case 'excepts': - $curraction = 'excepts'; - break; - - default: - $curraction = 'grades'; - } - - $tabs = $row = array(); - $row[] = new tabobject('grades', 'index.php?id='.$course->id, - get_string('viewgrades', 'grades')); - $row[] = new tabobject('prefs', 'index.php?id='.$course->id.'&action=prefs', - get_string('setpreferences', 'grades')); - // only show the extra options if advanced is turned on, they don't do anything otherwise - if (grade_get_preference($course->id, 'use_advanced') == 1) { - $row[] = new tabobject('cats', 'index.php?id='.$course->id.'&action=cats', - get_string('setcategories', 'grades')); - $row[] = new tabobject('weights', 'index.php?id='.$course->id.'&action=weights', - get_string('setweights', 'grades')); - $row[] = new tabobject('letters', 'index.php?id='.$course->id.'&action=letters', - get_string('setgradeletters', 'grades')); - $row[] = new tabobject('excepts', 'exceptions.php?id='.$course->id.'&action=excepts', - get_string('gradeexceptions', 'grades')); - } - $tabs[] = $row; - - print_tabs($tabs, $curraction); -} - - -function grade_nav($course, $action='grades') { - global $CFG; - global $USER; - global $cview; - - $strgrades = get_string('grades', 'grades'); - $gradenav = "wwwroot/course/view.php?id=$course->id\">$course->shortname"; - - if (isteacher($course->id)) { - switch ($action) { - case 'prefs': - case 'set_grade_preferences': - $strcurpage = get_string('setpreferences','grades'); - break; - case 'cats': - case 'delete_category': - case 'cats': - case 'insert_category': - case 'assign_categories': - $strcurpage = get_string('setcategories','grades'); - break; - case 'weights': - case 'set_grade_weights': - $strcurpage = get_string('setweights','grades'); - break; - case 'set_letter_grades': - case 'letters': - $strcurpage = get_string('setgradeletters','grades'); - break; - case 'excepts': - $strcurpage = get_string('gradeexceptions', 'grades'); - break; - default: - unset($strcurpage); - break; - } - - if ($action=='grades') { - $gradenav .= " -> $strgrades"; - } else { - $gradenav .= " -> id&action=grades\">$strgrades"; - } - - // if we are on a grades sub-page provide a link back (including grade preferences and grade items - - if (isset($strcurpage)) { - $gradenav .= " -> $strcurpage"; - } else if($action =='vcats') { - // show sub category - if (isset($cview)) { - $gradenav .= " -> $cview"; - } - } - - } else { - $gradenav .= " -> $strgrades"; - } - - return $gradenav; -} - -function grade_download($download, $id) { - global $CFG; - - require_variable($id); // course id - optional_variable($download, ""); // to download data - - require_login(); - - if (! $course = get_record("course", "id", $id)) { - error("Course ID was incorrect"); - } - - 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"); - -/// Check to see if groups are being used in this course - if ($groupmode = groupmode($course)) { // Groups are being used - if (isset($_GET['group'])) { - $changegroup = $_GET['group']; /// 0 or higher - } else { - $changegroup = -1; /// This means no group change was specified - } - - $currentgroup = get_and_set_current_group($course, $groupmode, $changegroup); - } else { - $currentgroup = false; - } - - if ($currentgroup) { - $students = get_group_students($currentgroup, "u.lastname ASC"); - } else { - $students = get_course_students($course->id, "u.lastname ASC"); - } - - foreach ($students as $student) { - $grades[$student->id] = array(); // Collect all grades in this array - $gradeshtml[$student->id] = array(); // Collect all grades html formatted 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); - -/// 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 (!empty($modgrades->maxgrade)) { - if ($mod->visible) { - $maxgrade = "$strmax: $modgrades->maxgrade"; - } else { - $maxgrade = "$strmax: $modgrades->maxgrade"; - } - } else { - $maxgrade = ""; - } - - $columns[] = "$mod->modfullname: $instance->name - $maxgrade"; - - foreach ($students as $student) { - if (!empty($modgrades->grades[$student->id])) { - $grades[$student->id][] = $currentstudentgrade = $modgrades->grades[$student->id]; - } else { - $grades[$student->id][] = $currentstudentgrade = ""; - $gradeshtml[$student->id][] = ""; - } - if (!empty($modgrades->maxgrade)) { - $totals[$student->id] = (float)($totals[$student->id]) + (float)($currentstudentgrade); - } else { - $totals[$student->id] = (float)($totals[$student->id]) + 0; - } - } - } - } - } - } - } - } - } // a new Moodle nesting record? ;-) - -/// OK, we have all the data, now present it to the user - if ($download == "xls" and confirm_sesskey()) { - require_once("../lib/excel/Worksheet.php"); - require_once("../lib/excel/Workbook.php"); - -// HTTP headers - header("Content-type: application/vnd.ms-excel"); - $downloadfilename = clean_filename("$course->shortname $strgrades"); - header("Content-Disposition: attachment; filename=\"$downloadfilename.xls\""); - header("Expires: 0"); - header("Cache-Control: must-revalidate,post-check=0,pre-check=0"); - header("Pragma: public"); - -/// Creating a workbook - $workbook = new Workbook("-"); - $myxls =& $workbook->add_worksheet($strgrades); - -/// Print names of all the fields - - $myxls->write_string(0,0,get_string("firstname")); - $myxls->write_string(0,1,get_string("lastname")); - $myxls->write_string(0,2,get_string("idnumber")); - $myxls->write_string(0,3,get_string("institution")); - $myxls->write_string(0,4,get_string("department")); - $myxls->write_string(0,5,get_string("email")); - $pos=6; - foreach ($columns as $column) { - $myxls->write_string(0,$pos++,strip_tags($column)); - } - $myxls->write_string(0,$pos,get_string("total")); - - -/// Print all the lines of data. - - $i = 0; - foreach ($grades as $studentid => $studentgrades) { - $i++; - $student = $students[$studentid]; - if (empty($totals[$student->id])) { - $totals[$student->id] = ''; - } - - $myxls->write_string($i,0,$student->firstname); - $myxls->write_string($i,1,$student->lastname); - $myxls->write_string($i,2,$student->idnumber); - $myxls->write_string($i,3,$student->institution); - $myxls->write_string($i,4,$student->department); - $myxls->write_string($i,5,$student->email); - $j=6; - foreach ($studentgrades as $grade) { - if (is_numeric($grades)) { - $myxls->write_number($i,$j++,strip_tags($grade)); - } - else { - $myxls->write_string($i,$j++,strip_tags($grade)); - } - } - $myxls->write_number($i,$j,$totals[$student->id]); - } - - $workbook->close(); - - exit; - - } else if ($download == "txt" and confirm_sesskey()) { - -/// Print header to force download - - header("Content-Type: application/download\n"); - $downloadfilename = clean_filename("$course->shortname $strgrades"); - header("Content-Disposition: attachment; filename=\"$downloadfilename.txt\""); - -/// Print names of all the fields - - echo get_string("firstname")."\t". - get_string("lastname")."\t". - get_string("idnumber")."\t". - get_string("institution")."\t". - get_string("department")."\t". - get_string("email"); - foreach ($columns as $column) { - $column = strip_tags($column); - echo "\t$column"; - } - echo "\t".get_string("total")."\n"; - -/// Print all the lines of data. - foreach ($grades as $studentid => $studentgrades) { - $student = $students[$studentid]; - if (empty($totals[$student->id])) { - $totals[$student->id] = ''; - } - echo "$student->firstname\t$student->lastname\t$student->idnumber\t$student->institution\t$student->department\t$student->email"; - foreach ($studentgrades as $grade) { - $grade = strip_tags($grade); - echo "\t$grade"; - } - echo "\t".$totals[$student->id]; - echo "\n"; - } - - exit; - - } -} - -function grade_get_stats($category='all') { - list($grades_by_student, $all_categories) = grade_get_formatted_grades(); - - if ($grades_by_student != 0 && $all_categories != 0) { - switch($category) { - case 'all': - { - //populate the sum of student points, # items and totalpoints for each category - foreach($grades_by_student as $student=>$categories) { - foreach($categories as $cur_category=>$assignments) { - if($category != 'student_data') { - if (isset($assignments['stats'])) { - if (isset($stats[$cur_category]['sum'])) { - $stats[$cur_category]['sum'] = $stats[$cur_category]['sum'] + $assignments['stats']['points']; - } - else { - $stats[$cur_category]['sum'] = $assignments['stats']['points']; - } - $stats[$cur_category]['items'] = $assignments['stats']['grade_items']; - $stats[$cur_category]['totalpoints'] = $assignments['stats']['totalpoints']; - $stats[$cur_category]['weight'] = $all_categories[$cur_category]['stats']['weight']; - } - } - } - } - // populate the overall sum,items and totalpoints - foreach($stats as $cur_category=>$info) { - if($cur_category != 'all' && $cur_category != 'student_data') { - if (isset($stats['all'])) { - $stats['all']['sum'] = $stats['all']['sum'] + $stats[$cur_category]['sum']; - $stats['all']['items'] = $stats['all']['items'] + $stats[$cur_category]['items']; - $stats['all']['totalpoints'] = $stats['all']['totalpoints'] + $stats[$cur_category]['totalpoints']; - $stats['all']['weighted_sum'] = $stats['all']['weighted_sum'] + ($stats[$cur_category]['sum']/($stats[$cur_category]['totalpoints']))*$stats[$cur_category]['weight']; - } - else { - $stats['all']['sum'] = $stats[$cur_category]['sum']; - $stats['all']['items'] = $stats[$cur_category]['items']; - $stats['all']['totalpoints'] = $stats[$cur_category]['totalpoints']; - $stats['all']['weighted_sum'] = ($stats[$cur_category]['sum']/($stats[$cur_category]['totalpoints']))*$stats[$cur_category]['weight']; - } - } - } - $stats['all']['students'] = count($grades_by_student); - $stats['all']['average'] = $stats['all']['sum'] / $stats['all']['students']; - $stats['all']['average_weighted'] = $stats['all']['weighted_sum']/$stats['all']['students']; - - // calculate the average squared deviation and populate a list of all scores while we're at it - $stats['all']['avgsqddev'] = 0; - $stats['all']['avgsqddev_weighted'] = 0; - foreach($grades_by_student as $student=>$categories) { - foreach($categories as $cur_category=>$assignments) { - if ($cur_category != 'student_data') { - $stats['all']['avgsqddev'] = $stats['all']['avgsqddev'] + pow(($grades_by_student[$student]['student_data']['points']-$stats['all']['average']),2); - $stats['all']['avgsqddev_weighted'] = $stats['all']['avgsqddev_weighted'] + pow(($grades_by_student[$student]['student_data']['weighted']-$stats['all']['average_weighted']),2); - } - } - if (isset($stats['all']['all_scores'])) { - $stats['all']['all_scores'] .= ','.$grades_by_student[$student]['student_data']['points']; - $stats['all']['all_scores_weighted'] .= ','.$grades_by_student[$student]['student_data']['weighted']; - } - else { - $stats['all']['all_scores'] = $grades_by_student[$student]['student_data']['points']; - $stats['all']['all_scores_weighted'] = $grades_by_student[$student]['student_data']['weighted']; - } - } - $stats['all']['avgsqddev']=$stats['all']['avgsqddev']/$stats['all']['students']; - $stats['all']['avgsqddev_weighted']=$stats['all']['avgsqddev_weighted']/$stats['all']['students']; - $stats['all']['stddev'] = sqrt($stats['all']['avgsqddev']); - $stats['all']['stddev_weighted'] = sqrt($stats['all']['avgsqddev_weighted']); - $stats['all']['mode'] = grade_mode($stats['all']['all_scores']); - $stats['all']['mode_weighted'] = grade_mode($stats['all']['all_scores_weighted']); - - // make sure the mode is not set to every score - if(count($stats['all']['mode']) == count($grades_by_student)) { - $stats['all']['mode'] = get_string('nomode','grade'); - } - if(count($stats['all']['mode_weighted']) == count($grades_by_student)) { - $stats['all']['mode_weighted'] = get_string('nomode','grade'); - } - break; - } - default: - { - // get the stats for category - //populate the sum of student points, # items and totalpoints for each category - foreach($grades_by_student as $student=>$categories) { - if(isset($grades_by_student[$student][$category]['stats'])) { - if (isset($stats[$category]['sum'])) { - $stats[$category]['sum'] = $stats[$category]['sum'] + $grades_by_student[$student][$category]['stats']['points']; - } - else { - $stats[$category]['sum'] = $grades_by_student[$student][$category]['stats']['points']; - } - $stats[$category]['items'] = $grades_by_student[$student][$category]['stats']['grade_items']; - $stats[$category]['totalpoints'] = $grades_by_student[$student][$category]['stats']['totalpoints']; - } - } - $stats[$category]['students'] = count($grades_by_student); - $stats[$category]['average'] = $stats[$category]['sum']/$stats[$category]['students']; - - // calculate the average squared deviation and populate a list of all scores too - $stats[$category]['avgsqddev'] = 0; - foreach($grades_by_student as $student=>$categories) { - foreach($categories as $cur_category=>$assignment) { - if ($cur_category != 'student_data') { - if ($grades_by_student[$student][$category]['stats']['points'] == '-' || $grades_by_student[$student][$category]['stats']['points'] == get_string('grades','excluded')) { - // count grade as a zero - $stats[$category]['avgsqddev'] = $stats[$category]['avgsqddev'] + pow(($stats[$category]['average']),2); - } - else { - $stats[$category]['avgsqddev'] = $stats[$category]['avgsqddev'] + pow(($grades_by_student[$student][$category]['stats']['points']-$stats[$category]['average']),2); - } - } - } - - if (isset($stats[$category]['all_scores'])) { - $stats[$category]['all_scores'] .= ','.$grades_by_student[$student][$category]['stats']['points']; - } - else { - $stats[$category]['all_scores'] = $grades_by_student[$student][$category]['stats']['points']; - } - } - $stats[$category]['avgsqddev'] = $stats[$category]['avgsqddev']/$stats[$category]['students']; - $stats[$category]['stddev'] = sqrt($stats[$category]['avgsqddev']); - $stats[$category]['mode'] = grade_mode($stats[$category]['all_scores']); - break; - } - } // end switch - // do a little cleanup - $stats[$category]['stddev'] = sprintf("%0.2f", $stats[$category]['stddev']); - $stats[$category]['average'] = sprintf("%0.2f", $stats[$category]['average']); - $stats[$category]['max'] = max(explode(',',$stats[$category]['all_scores'])); - $stats[$category]['min'] = min(explode(',',$stats[$category]['all_scores'])); - $stats[$category]['median'] = explode(',',$stats[$category]['all_scores']); - - if (isset($stats[$category]['stddev_weighted'])) { - $stats[$category]['stddev_weighted'] = sprintf("%0.2f", $stats[$category]['stddev_weighted']); - } - if (isset($stats[$category]['average_weighted'])) { - $stats[$category]['average_weighted'] = sprintf("%0.2f", $stats[$category]['average_weighted']); - } - if (isset($stats[$category]['max_weighted'])) { - $stats[$category]['max_weighted'] = max(explode(',',$stats[$category]['all_scores_weighted'])); - } - if (isset($stats[$category]['min_weighted'])) { - $stats[$category]['min_weighted'] = min(explode(',',$stats[$category]['all_scores_weighted'])); - } - - if (isset($stats[$category]['all_scores_weighted'])) { - $stats[$category]['median_weighted'] = explode(',',$stats[$category]['all_scores_weighted']); - } - else { - - } - - - sort($stats[$category]['median']); - - if (count($stats[$category]['median'])/2 == floor(count($stats[$category]['median'])/2) ) { - // even number of scores - $temp = $stats[$category]['median'][count($stats[$category]['median'])/2-1] + $stats[$category]['median'][count($stats[$category]['median'])/2]; - $temp = $temp/2; - } - else { - // odd number of scores - $temp = $stats[$category]['median'][floor(count($stats[$category]['median'])/2)]; - } - unset($stats[$category]['median']); - $stats[$category]['median'] = $temp; - - if (isset($stats[$category]['median_weighted'])) { - if (count($stats[$category]['median_weighted'])/2 == floor(count($stats[$category]['median_weighted'])/2)) { - // even number of scores - $temp = $stats[$category]['median_weighted'][count($stats[$category]['median_weighted'])/2-1] + $stats[$category]['median_weighted'][count($stats[$category]['median_weighted'])/2+1]; - $temp = $temp/2; - } - else { - // odd number of scores - $temp = $stats[$category]['median_weighted'][floor(count($stats[$category]['median_weighted'])/2)]; - } - unset($stats[$category]['median_weighted']); - $stats[$category]['median_weighted'] = $temp; - } - } - return $stats; -} - -// returns a comma seperated list of the most common values in $items, $items is expected to be a comma sperated list of numbers -function grade_mode($items) { - $all_scores = explode(',',$items); - foreach($all_scores as $value) { - if (isset($frequency[$value])) { - $frequency[$value]++; - } - else { - $frequency[$value] = 1; - } - } - $max = max($frequency); - foreach($frequency as $key=>$value) { - if ($value == $max) { - if (isset($retval)) { - $retval .= ', '.$key; - } - else { - $retval = $key; - } - } - } - return $retval; -} - - -function grade_stats() { - global $CFG; - global $course; - global $USER; - global $preferences; - - if (!isset($category)) { - $category = clean_param($_REQUEST['category'], PARAM_CLEAN); - } - - $stats = grade_get_stats($category); - - // output our data - print_header(); - echo ''; - if ($preferences->show_weighted == 1 && $preferences->use_weighted_for_letter == 1 && $category== 'all') { - echo ''; - } - - echo ''; - if ($preferences->show_weighted == 1 && $preferences->use_weighted_for_letter == 1 && $category== 'all') { - echo ''; - } - echo ''; - - echo ''; - if ($preferences->show_weighted == 1 && $preferences->use_weighted_for_letter == 1 && $category== 'all') { - echo ''; - } - echo ''; - - echo ''; - if ($preferences->show_weighted == 1 && $preferences->use_weighted_for_letter == 1 && $category== 'all') { - echo ''; - } - echo ''; - - echo ''; - if ($preferences->show_weighted == 1 && $preferences->use_weighted_for_letter == 1 && $category== 'all') { - echo ''; - } - echo ''; - - echo ''; - if ($preferences->show_weighted == 1 && $preferences->use_weighted_for_letter == 1 && $category== 'all') { - echo ''; - } - echo ''; - - echo ''; - if ($preferences->show_weighted == 1 && $preferences->use_weighted_for_letter == 1 && $category== 'all') { - echo ''; - } - echo ''; - echo '
        '.$category.' '.get_string('stats','grades').'
         '.get_string('points','grades').''.get_string('weight','grades').'
        '.get_string('max','grades').':'.$stats[$category]['max'].''.$stats[$category]['max_weighted'].'
        '.get_string('min','grades').':'.$stats[$category]['min'].''.$stats[$category]['min_weighted'].'
        '.get_string('average','grades').':'.$stats[$category]['average'].''.$stats[$category]['average_weighted'].'
        '.get_string('median','grades').':'.$stats[$category]['median'].''.$stats[$category]['median_weighted'].'
        '.get_string('mode','grades').':'.$stats[$category]['mode'].''.$stats[$category]['mode_weighted'].'
        '.get_string('standarddeviation','grades').':'.$stats[$category]['stddev'].''.$stats[$category]['stddev_weighted'].'
        '; - //print_footer(); -} - -function grade_view_category_grades($view_by_student) { - global $CFG; - global $course; - global $USER; - global $preferences; - global $group; - if (!isteacher($course->id)) { - $view_by_student = $USER->id; - } - - if ($preferences->use_advanced == 0) { - $cview = UNCATEGORISED; - } - else { - $cview=clean_param($_REQUEST['cview'], PARAM_CLEAN); - } - - if ($cview) { - list($grades_by_student, $all_categories) = grade_get_formatted_grades(); - - if ($grades_by_student != 0 && $all_categories != 0) { - // output a form for the user to download the grades. - grade_download_form(); - - if ($view_by_student != -1) { - // unset all grades except for this student - foreach ($grades_by_student as $student=>$junk) { - if($student != $view_by_student) { - unset($grades_by_student[$student]); - } - } - } - - $grade_columns = $preferences->show_weighted + $preferences->show_points + $preferences->show_percent; - - $first = 0; - //$maxpoints = 0; - $maxpercent = 0; - $reprint = 0; - if (isteacher($course->id)) { - $student_heading_link = get_string('student','grades'); - //only set sorting links if more than one student displayed. - if ($view_by_student == -1) { - $student_heading_link .='
        '.get_string('sortbylastname','grades').''; - $student_heading_link .= '
        '.get_string('sortbyfirstname','grades').''; - } - else { - $student_heading_link .= '
        '.get_string('showallstudents','grades').''; - } - } - echo ''; - if (isteacher($course->id)) { - $header = ''; - } - else { - $header = ''; - } - $header1 = ''; - - // to keep track of what we've output - $colcount = 0; - $rowcount = 0; - $reprint = 0; - - // this next section is to display the items in the course order - foreach($grades_by_student as $student => $categories) { - if (isset($item_order)) { - // we already have the sort order let's jump out - break; - } - $item_order = array(); - foreach($categories as $category => $items) { - if ($category == $cview) { - foreach ($items as $assignment=>$points) { - if ($assignment != 'stats') { - $temp = $points['sort_order']; - $item_order[$temp] = $assignment; - } - } - } - } - } - ksort($item_order); - - foreach($grades_by_student as $student => $categories) { - - if ($preferences->reprint_headers != 0 && $reprint >= $preferences->reprint_headers) { - echo $header.$header1; - $reprint=0; - } - - // highlight every 3 rows for readability - if ($rowcount < 3) { - $row = ''; - $rowcount ++; - } - else { - $row = ''; - $rowcount++; - if ($rowcount >= 6) { - $rowcount = 0; - } - } - // set the links to student information based on multiview or individual... if individual go to student info... if many go to individual grades view. - if (isteacher($course->id)) { - if ($view_by_student != -1) { - $student_link = ''; - } - else { - $student_link = ''; - } - $student_link .= $grades_by_student[$student]['student_data']['lastname'].', '.$grades_by_student[$student]['student_data']['firstname'].''; - $row .= ''; - } - - foreach($categories as $category => $items) { - if ($category == $cview) { - // make sure that the grades come out in the same order - foreach($item_order as $order=>$assignment) - { - if ($assignment != 'stats') { - if ($first == 0) { - $colcount++; - $link_id = grade_get_module_link($course->id, $all_categories[$category][$assignment]['cminstance'], $all_categories[$category][$assignment]['modid']); - - $link = $CFG->wwwroot.'/mod/'.$all_categories[$category][$assignment]['modname'].'/view.php?id='.$link_id->id; - if ($all_categories[$category][$assignment]['hidden'] == 0) { - $header .= ''; - if ($preferences->show_points) { - $header1 .= ''; - } - - if($preferences->show_percent) { - if ($all_categories[$category][$assignment]['grade_against'] != $all_categories[$category][$assignment]['maxgrade']) { - $header1 .= ''; - } - } - if ($preferences->show_weighted) { - if ($all_categories[$category]['stats']['totalpoints'] != 0) { - $cur_weighted_max = sprintf("%0.2f", $all_categories[$category][$assignment]['grade_against']/$all_categories[$category]['stats']['totalpoints']*$all_categories[$category]['stats']['weight']); - } - else { - $cur_weighted_max = 0; - } - $header1 .= ''; - } - } - - // display points - if ($preferences->show_points) { - $row .= ''; - } - - if ($preferences->show_percent) { - $row .= ''; - } - - if ($preferences->show_weighted) { - $row .= ''; - } - } - } - } - } - - if ($first == 0) { - if (isteacher($course->id) && $view_by_student == -1) { - $total_sort_link = ''.get_string('highgradedescending','grades').''; - $total_sort_link .= ''.get_string('highgradeascending','grades').''; - } - else { - $total_sort_link = ''; - } - - $stats_link = ''.get_string('statslink','grades').''; - if ($all_categories[$cview]['stats']['drop'] != 0) { - $header .= ''; - } - else { - $header .= ''; - } - - if ($preferences->show_points) { - $header1 .= ''; - } - if ($preferences->show_percent) { - $header1 .= ''; - } - - - if ($preferences->show_weighted) { - $header1 .= ''; - } - - if (isteacher($course->id) ) { - $header .= ''; - } - else { - $header .= ''; - } - - //adjust colcount to reflect the actual number of columns output - $colcount++; // total column - $colcount = $colcount*$grade_columns + 2; - echo ''; - echo $header; - echo $header1; - $first = 1; - } - - // total points for category - if ($preferences->show_points) { - $row .= ''; - } - - // total percent for category - if ($preferences->show_percent) { - $row .= ''; - } - - - // total weighted for category - if ($preferences->show_weighted) { - $row .= ''; - } - - if (isteacher($course->id) ) { - $row .= ''; - } - $row .= ''; - echo $row; - $reprint++; - } - echo '
        '.$student_heading_link.'
        '.$student_link.''.$assignment.''; - } - else { - $header .= ''.$assignment.''; - } - if ($all_categories[$category][$assignment]['extra_credit'] == 1) { - $header .= '('.get_string('extracredit','grades').')'; - } - $header .=''. $all_categories[$category][$assignment]['maxgrade']; - if ($all_categories[$category][$assignment]['grade_against'] != $all_categories[$category][$assignment]['maxgrade']) { - $header1 .= '('. $all_categories[$category][$assignment]['grade_against'].')'; - } - $header1 .= ''.get_string('scaledpct','grades').''; - } - else { - $header1 .= ''.get_string('rawpct','grades').''.$cur_weighted_max.get_string('pctoftotalgrade','grades').'' . $items[$assignment]['grade'] . ''. $items[$assignment]['percent'].'%'.$items[$assignment]['weighted'].'%'.get_string('total','grades').'  (Lowest '. $all_categories[$cview]['stats']['drop']. ' Dropped)'.$total_sort_link.' '.$stats_link.''.get_string('total','grades').' '.$total_sort_link.' '.$stats_link.''.$all_categories[$cview]['stats']['totalpoints']; - if ($all_categories[$cview]['stats']['bonus_points'] != 0) { - $header1 .='(+'.$all_categories[$cview]['stats']['bonus_points'].')'; - } - $header1 .=''.get_string('percent','grades').''.$all_categories[$cview]['stats']['weight'].get_string('pctoftotalgrade','grades').''.$student_heading_link.'
        '; - if ($preferences->use_advanced != 0) { - echo $cview.' '.get_string('grades','grades'); - } - else { - echo get_string('grades','grades'); - } - - echo ''; - - if (isteacher($course->id)) { - helpbutton('coursegradeteacher', get_string('gradehelp','grades'), 'gradebook'); - } - else { - helpbutton('coursegradestudent', get_string('gradehelp','grades'), 'gradebook'); - } - echo '
        '.$grades_by_student[$student][$cview]['stats']['points'].''.$grades_by_student[$student][$cview]['stats']['percent'].'%'.$grades_by_student[$student][$cview]['stats']['weighted'].'%'.$student_link.'
        '; - } - else { // no grades returned - error(get_string('nogradesreturned','grades')); - } - } - else { - error(get_string('nocategoryview','grades')); - } -} - -function grade_view_all_grades($view_by_student) { -// displays all grades for the course - global $CFG; - global $course; - global $preferences; - global $USER; - - if (!isteacher($course->id)) { - $view_by_student = $USER->id; - } - - list($grades_by_student, $all_categories) = grade_get_formatted_grades(); - - if ($grades_by_student != 0 && $all_categories != 0) { - // output a form for the user to download the grades. - grade_download_form(); - - if ($view_by_student != -1) { - // unset all grades except for this student - foreach ($grades_by_student as $student=>$junk) { - if($student != $view_by_student) { - unset($grades_by_student[$student]); - } - } - } - $grade_columns = $preferences->show_weighted + $preferences->show_points + $preferences->show_percent; - - $first = 0; - $total_course_points = 0; - $maxpercent = 0; - $reprint=0; - - echo ''; - if (isteacher($course->id) ) { - $student_heading_link = get_string('student','grades'); - if ($view_by_student == -1) { - $student_heading_link .='
        '.get_string('sortbylastname','grades').'
        '; - $student_heading_link .= '
        '.get_string('sortbyfirstname','grades').'
        '; - } - else { - $student_heading_link .= '
        '.get_string('showallstudents','grades').''; - } - $header = ''; - } - else { - $header = ''; - } - $header1 = ''; - - $rowcount = 0; - $colcount = 0; - foreach($grades_by_student as $student => $categories) { - $totalpoints = 0; - $totalgrade = 0; - $total_bonus_points = 0; - if ($preferences->reprint_headers != 0 && $reprint >= $preferences->reprint_headers) { - echo $header.$header1; - $reprint=0; - } - if ($rowcount < 3) { - $row = ''; - $rowcount ++; - } - else { - $row = ''; - $rowcount++; - if ($rowcount >= 6) { - $rowcount = 0; - } - } - // set the links to student information based on multiview or individual... if individual go to student info... if many go to individual grades view. - if (isteacher($course->id)) { - if ($view_by_student != -1) { - $studentviewlink = ''.$grades_by_student[$student]['student_data']['lastname'].', '.$grades_by_student[$student]['student_data']['firstname'].''; - } - else { - $studentviewlink = ''.$grades_by_student[$student]['student_data']['lastname'].', '.$grades_by_student[$student]['student_data']['firstname'].''; - } - $row .= ''; - } - ksort($categories); - foreach($categories as $category => $items) { - if ($category != 'student_data') { - if ($first == 0) { - $colcount++; - if ($category == UNCATEGORISED) { - $categoryname = get_string(UNCATEGORISED, 'grades'); - } else { - $categoryname = $category; - } - // only print the category headers if something is displayed for them - if ($preferences->show_weighted || $preferences->show_percent || $preferences->show_points) { - $stats_link = ''.get_string('statslink','grades').''; - $header .= ''; - if ($preferences->show_points) { - $header1 .= ''; - } - if ($preferences->show_percent) { - $header1 .= ''; - } - if ($preferences->show_weighted) { - $header1 .= ''; - } - $maxpercent = $all_categories["$category"]['stats']['weight'] + $maxpercent; - //$total_course_points = $all_categories[$category]['stats']['totalpoints']+ $total_course_points; - //$total_course_points = $all_categories[$category]['stats']['totalpoints']+ $total_course_points; - } - - - if ($preferences->show_points) { - $row .= ''; - } - if ($preferences->show_percent) { - $row .= ''; - } - - if ($preferences->show_weighted) { - $row .= ''; - } - $total_bonus_points = $all_categories[$category]['stats']['bonus_points']; - } - } - if ($first == 0) { - if ($preferences->show_letters) { - $total_columns = $grade_columns + 1; - } - else { - $total_columns = $grade_columns; - } - - if (isteacher($course->id) && $view_by_student == -1) { - $grade_sort_link = ''.get_string('highgradedescending','grades').''; - $grade_sort_link .= ''.get_string('highgradeascending','grades').''; - $points_sort_link = ''.get_string('pointsdescending','grades').''; - $points_sort_link .= ''.get_string('pointsascending','grades').''; - $weighted_sort_link = ''.get_string('weighteddescending','grades').''; - $weighted_sort_link .= ''.get_string('weightedascending','grades').''; - $percent_sort_link = ''.get_string('percentdescending','grades').''; - $percent_sort_link .= ''.get_string('percentascending','grades').''; - } - $stats_link = ''.get_string('statslink','grades').''; - $header .= ''; - if (isteacher($course->id) && $view_by_student == -1) { - if ($preferences->show_points) { - $header1 .= ''; - } - if ($preferences->show_percent) { - $header1 .= ''; - } - if ($preferences->show_weighted) { - $header1 .= ''; - } - if ($preferences->show_letters) { - $header1 .= ''; - } - $header1 .= ''; - } - else { - if ($preferences->show_points) { - $header1 .= ''; - } - if ($preferences->show_percent) { - $header1 .= ''; - } - if ($preferences->show_weighted) { - $header1 .= ''; - } - if ($preferences->show_letters) { - $header1 .= ''; - } - $header1 .= ''; - } - if (isteacher($course->id)) { - $header .= ''; - } - // adjust colcount to reflect actual number of columns output - $colcount = $colcount * $grade_columns + $total_columns + 2; - - echo ''; - - - echo $header; - echo $header1; - $first = 1; - } - if ($preferences->show_points) { - $row .= ''; - } - if ($preferences->show_percent) { - $row .= ''; - } - if ($preferences->show_weighted) { - $row .= ''; - } - if ($preferences->show_letters) { - if ($preferences->use_weighted_for_letter == 1) { - $grade = $grades_by_student[$student]['student_data']['weighted']; - } - else { - $grade = $grades_by_student[$student]['student_data']['percent']; - } - $letter_grade = grade_get_grade_letter($course->id, $grade); - if ($letter_grade) { - $row .= ''; - } - else { - // there wasn't an appropriate entry to use in the gradebook. - if (grade_letters_set($course->id)) { - $row .= ''; - } - else { - $row .= ''; - } - } - } - if (isteacher($course->id) ) { - $row .= ''; - } - else { - $row .= ''; - } - echo $row; - $reprint++; - } - echo '
        '.$student_heading_link.'
        '. $studentviewlink .''. $categoryname .' '.$stats_link.''; - } - if ($preferences->display_weighted != 0) { - $header .= '('. $all_categories[$category]['stats']['weight'] . '%)'; - } - $header .= ''.get_string('points','grades').'('.$all_categories[$category]['stats']['totalpoints'].')'; - if ($all_categories[$category]['stats']['bonus_points'] != 0) { - $header1 .='(+'.$all_categories[$category]['stats']['bonus_points'].')'; - } - $header1 .=''.get_string('percent','grades').''.get_string('weightedpctcontribution','grades').'' . $items['stats']['points'] . ''. $items['stats']['percent'].'%'. $items['stats']['weighted'] . '%'.get_string('total','grades').' '.$stats_link.''.get_string('points','grades').'('.$all_categories['stats']['totalpoints'].')'; - if ($category != 'student_data' && $all_categories[$category]['stats']['bonus_points'] != 0) { - - $header1 .='(+'.$total_bonus_points.')'; - } - $header1 .= '
        '.$points_sort_link.' '.'
        '.get_string('percentshort','grades').'
        '.$percent_sort_link.' '.'
        '.get_string('weightedpct','grades').'('.$all_categories['stats']['weight'].')'.'
        '.$weighted_sort_link.' '.'
        '.get_string('lettergrade','grades').'
        '.$grade_sort_link.' '.'
        '.get_string('points','grades').'('.$all_categories['stats']['totalpoints'].')'; - if ($category != 'student_data' && $all_categories[$category]['stats']['bonus_points'] != 0) { - $header1 .='(+'.$total_bonus_points.')'; - } - $header1 .= ''.get_string('percentshort','grades').''.get_string('weightedpct','grades').'('.$all_categories['stats']['weight'].')'.get_string('lettergrade','grades').'
        '.$student_heading_link.'
        '.get_string('allgrades','grades').''; - if (isteacher($course->id)) { - helpbutton('coursegradeteacher', get_string('gradehelp','grades'), 'gradebook'); - } - else { - helpbutton('coursegradestudent', get_string('gradehelp','grades'), 'gradebook'); - } - echo '
        '.$grades_by_student[$student]['student_data']['points'].''.$grades_by_student[$student]['student_data']['percent'].'%'.$grades_by_student[$student]['student_data']['weighted'].'%'.$letter_grade->letter.''.get_string('nolettergrade','grades').' '.$grade.''.get_string('nogradeletters','grades').''. $studentviewlink .'
        '; - } - else { // no grades returned - error(get_string('nogradesreturned','grades')); - } -} - - -function grade_set_grade_weights() { -// set the grade weights as submitted from the form generated by display_grade_weights - global $CFG; - global $course; - global $USER; - - if (!empty($USER->id)) { - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - } - - // get list of all categories - $categories = get_records('grade_category', 'courseid', $course->id); - if ($categories) { - foreach ($categories as $category) { - $form_catname = str_replace(' ', '_', $category->name); - - $submitted_category = optional_param($form_catname); - if (is_numeric($submitted_category)) { - // see if there is a weight if so see if it needs to be updated - $weight = grade_get_category_weight($course->id, $category->name); - if ($weight) { - if ($weight->weight != $submitted_category) - { - set_field('grade_category', 'weight', $submitted_category, 'id', $weight->id); - } - - $cur_drop = optional_param("drop_x_lowest$form_catname"); - $cur_bonus_points = optional_param("bonus_points$form_catname"); - $cur_hidden = optional_param("hidden$form_catname"); - if ($cur_hidden) { - $cur_hidden = true; - } - else { - $cur_hidden = false; - } - - if ($weight->drop_x_lowest != $cur_drop) { - set_field('grade_category', 'drop_x_lowest', $cur_drop, 'id', $weight->cat_id); - } - if ($weight->bonus_points != $cur_bonus_points) { - set_field('grade_category', 'bonus_points', $cur_bonus_points, 'id', $weight->cat_id); - } - if ($cur_hidden) { - set_field('grade_category', 'hidden', 1, 'id', $weight->cat_id); - } - else { - set_field('grade_category', 'hidden', 0, 'id', $weight->cat_id); - } - } - else { - // insert the new record... we shouldn't reach this point anymore - //$new_weight->course = $course->id; - //$new_weight->category = $category->id; - //$new_weight->weight = $submitted_category; - //insert_record('grade_weight', $new_weight); - } - } - else { - echo '
        '.get_string('nonumericweight','grades').$category->name.': "'.$submitted_category.'"

        '; - } - } - } -} - -function grade_display_grade_weights() { -// get all categories with weights -// then set and display that entry. - global $CFG; - global $course; - global $USER; - - $categories = get_records('grade_category', 'courseid', $course->id); - if ($categories) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - - $sum = 0; - - foreach($categories as $category) { - $val = $category->weight; - $sum = $sum + $val; - - // make names form safe - $form_catname = str_replace(' ', '_', $category->name); - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo ''; - if ($sum != 100) { - echo ''; - } - else { - echo ''; - } - } - else { - /// maybe this should just do the default population of the categories instead? - echo ''.get_string('setcategorieserror','grades').''; - } - echo '
        '.get_string('setweights','grades'); - helpbutton('coursegradeweight', get_string('gradeweighthelp','grades'), 'gradebook'); - echo '
        '.get_string('category','grades').''.get_string('weight','grades').''.get_string('dropxlowest','grades').''.get_string('bonuspoints','grades').''.get_string('hidecategory','grades').'
        '.$category->name.'hidden == 1) { - echo ' checked="checked"'; - } - echo ' />
        '.get_string('totalweightnot100','grades').'
        '.get_string('totalweight100','grades').'
        '; - echo '
        '.get_string('dropxlowestwarning','grades').'

        '; -} - -function grade_set_categories() { - global $CFG; - global $course; - global $USER; - - - /// Collect modules data - get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused); - - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - - $itemcount = 0; - - /// 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 != '') - // this block traps out broken modules that don't return a maxgrade according to the moodle API - { - $itemcount++; - //modgrades contains student information with associated grade - //echo "modname: $mod->modname id: $mod->id course: $mod->course
        "; - echo ''; - echo ''; - echo ''; - echo '"; - // see if the item is already in the category table and if it is call category select with the id so it is selected - echo ''; - - if (isset($item_cat_id)) { - // the value held in scale_grade is a scaling percent. The next line just formats it so it is easier for the user (they just enter the point value they want to be 100%) - if ($item_cat_id->scale_grade == '' || $item_cat_id->scale_grade == 0) - $scale_to = $modgrades->maxgrade; - else - $scale_to = round($modgrades->maxgrade/$item_cat_id->scale_grade); - echo ''; - } - else { - echo ''; - } - - echo ''; - } - } - } - } - } - } - } - } - echo ''; - echo ''; - echo ''; - echo '
        '.get_string('setcategories','grades'); - helpbutton('coursegradecategory', get_string('gradecategoryhelp','grades'), 'gradebook'); - echo '
        '.get_string('gradeitem','grades').''.get_string('category','grades').''.get_string('maxgrade','grades').''.get_string('curveto','grades').''.get_string('extracredit','grades').'
        '; - // get instance name from db. - $instance = get_record($mod->modname, 'id', $mod->instance); - echo "$instance->name'.$modgrades->maxgrade.'extra_credit == 1) { - echo ' checked="checked"'; - } - echo ' />
        '; - grade_add_category_form(); - echo '
        '; - grade_delete_category_form(); - echo '
        '.get_string('extracreditwarning','grades').'
        '; -} - -function grade_delete_category() { - global $CFG; - global $course; - global $USER; - - if (!empty($USER->id)) { - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - } - - $cat_id = optional_param('category_id'); - if ($cat_id != 'blank') { - // delete the record - delete_records('grade_category', 'id', $cat_id, 'courseid', $course->id); - // set grade_item category field=0 where it was the deleted category (set uncategorized will clean this up) - set_field('grade_item', 'category', 0, 'category', $cat_id); - } -} - -function grade_assign_categories() { - global $CFG; - global $course; - global $USER; - $num_categories = optional_param('totalitems'); - - if (!empty($USER->id)) { - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - } - - for ($i = 1; $i <= $num_categories; $i++) { - - // these next sets of lines are a bit obtuse, but it lets there be a dynamic number of grade items - // in the grade category form (maybe there's a better way?) - $cur_cat_id = '$_REQUEST[\'category'.$i.'\'];'; - eval( "\$cur_cat_id = $cur_cat_id;" ); - $cur_modname = '$_REQUEST[\'modname'.$i.'\'];'; - eval( "\$cur_modname = $cur_modname;" ); - $cur_mod = '$_REQUEST[\'mod'.$i.'\'];'; - eval( "\$cur_mod = $cur_mod;" ); - $cur_maxgrade = '$_REQUEST[\'maxgrade'.$i.'\'];'; - eval( "\$cur_maxgrade = $cur_maxgrade;" ); - $cur_scale_grade = '$_REQUEST[\'scale_grade'.$i.'\'];'; - eval( "\$cur_scale_grade = $cur_scale_grade;" ); - $cur_extra_credit = '$_REQUEST[\'extra_credit'.$i.'\'];'; - $temp = 'extra_credit'.$i; - $junk = get_record('modules','name',$cur_modname); - $cur_modid = $junk->id; - if (isset($_REQUEST[$temp])) { - eval( "\$cur_extra_credit = $cur_extra_credit;" ); - } - else { - $cur_extra_credit = false; - } - - if ($cur_scale_grade == 0 || $cur_scale_grade == '') { - $cur_scale_grade = 1.0; - } - - $db_cat = get_record('grade_item', 'modid', $cur_modid, 'cminstance', $cur_mod, 'courseid', $course->id); - if ( $db_cat ) { - if ($db_cat->category != $cur_cat_id) { - // item doesn't match in the db so update it to point to the new category - set_field('grade_item', 'category', $cur_cat_id, 'id', $db_cat->id); - } - - if ($db_cat->scale_grade != $cur_maxgrade/$cur_scale_grade) { - // scale_grade doesn't match - set_field('grade_item', 'scale_grade', ($cur_maxgrade/$cur_scale_grade), 'id', $db_cat->id); - } - - if ($cur_extra_credit) { - set_field('grade_item', 'extra_credit', 1, 'id', $db_cat->id); - } - else { - set_field('grade_item', 'extra_credit', 0, 'id', $db_cat->id); - } - } - else { - // add a new record - $item->courseid = $course->id; - $item->category = $cur_cat_id; - $item->modid = $cur_modid; - $item->cminstance = $cur_mod; - $item->scale_grade = $cur_scale_grade; - $item->extra_credit = $cur_extra_credit; - insert_record('grade_item', $item); - } - } -} - -function grade_add_category_form() { - /// outputs a form to add a category - /// just a simple text box with submit - global $course; - global $USER; - echo '
        '; - echo get_string('addcategory','grades').':'; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
        '; -} - -function grade_delete_category_form() { - // outputs a form to delete a category - global $course; - global $USER; - echo '
        '; - echo get_string('deletecategory','grades').': '; - echo ''; - echo ''; - echo '
        '; -} - -function grade_insert_category() { - global $CFG; - global $course; - global $USER; - - $category->name=optional_param('name'); - $category->courseid=$course->id; - - if (!empty($USER->id)) { - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - } - - // make sure the record isn't already there and insert if okay - if (record_exists('grade_category', 'name', $category->name, 'courseid', $category->course)) { - // category already exists - } - elseif ($category->name != ''){ - if (!insert_record('grade_category', $category) ) { - echo ''.get_string('addcategoryerror','grades').''; - } - } -} - -function grade_category_select($id_selected) { - /// prints out a select box containing categories. - global $CFG; - global $course; - - - echo ''; - - $categories = get_records('grade_category', 'courseid', $course->id, 'name'); - - if (!isset($categories)) { - error(get_string("nocategories")); - } - else { - foreach($categories as $category) { - if ($category->name == UNCATEGORISED) { - $category->name = get_string('uncategorised', 'grades'); - } - if ($category->id == $id_selected) { - echo ''; - } - else { - echo ''; - } - } - } -} - -function grade_display_grade_preferences($course, $preferences) { - global $CFG; - global $USER; - - print_heading_with_help(get_string('setpreferences','grades'), 'coursegradepreferences', 'grades'); - - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - - $optionsyesno = NULL; - $optionsyesno[0] = get_string('no'); - $optionsyesno[1] = get_string('yes'); - - echo ''; - echo ''; - - if ($preferences->use_advanced) { - $options = NULL; - $options[0] = get_string('no'); - $options[1] = get_string('toonly', 'moodle', $course->teachers); - $options[2] = get_string('toeveryone', 'moodle'); - - // display grade weights - echo ''; - echo ''; - - // display points - echo ''; - echo ''; - - // display percent - echo ''; - echo ''; - - // display letter grade - echo ''; - echo ''; - - // letter grade uses weighted percent - $options = NULL; - $options[0] = get_string('usepercent','grades'); - $options[1] = get_string('useweighted','grades'); - - echo ''; - echo ''; - } - - $headerlist[0] = get_string('none'); - for ($i=1; $i<=100; $i++) { - $headerlist[$i] = $i; - } - - // reprint headers every n lines default n=0 - echo ''; - echo ''; - - // show hidden grade items to teacher - echo ''; - echo ''; - - echo '
        '.get_string('useadvanced','grades').''; - choose_from_menu($optionsyesno, 'use_advanced', $preferences->use_advanced, ''); - echo '
        '.get_string('displayweighted','grades').':'; - choose_from_menu($options, 'display_weighted', $preferences->display_weighted, ''); - echo '
        '.get_string('displaypoints','grades').':'; - choose_from_menu($options, 'display_points', $preferences->display_points, ''); - echo '
        '.get_string('displaypercent','grades').':'; - choose_from_menu($options, 'display_percent', $preferences->display_percent, ''); - echo '
        '.get_string('displaylettergrade','grades').':'; - choose_from_menu($options, 'display_letters', $preferences->display_letters, ''); - echo '
        '.get_string('lettergrade','grades').':'; - choose_from_menu($options, 'use_weighted_for_letter', $preferences->use_weighted_for_letter, ''); - echo '
        '.get_string('reprintheaders','grades').':'; - choose_from_menu($headerlist, 'reprint_headers', $preferences->reprint_headers, ''); - echo '
        '.get_string('showhiddenitems','grades').''; - choose_from_menu($optionsyesno, 'show_hidden', $preferences->show_hidden, ''); - echo '
        '; -} - - - -function grade_display_letter_grades() { - global $CFG; - global $course; - global $USER; - - $db_letters = get_records('grade_letter', 'courseid', $course->id, 'grade_high DESC'); - - if ($db_letters) { - $using_defaults = false; - foreach ($db_letters as $letter) { - $letters[$letter->id]->letter = $letter->letter; - $letters[$letter->id]->grade_low = $letter->grade_low; - $letters[$letter->id]->grade_high = $letter->grade_high; - $letters[$letter->id]->courseid = $course->id; - } - } - else { - $using_defaults = true; - // default A - $letters[0]->letter='A'; - $letters[0]->grade_low=93.00; - $letters[0]->grade_high=100.00; - $letters[0]->courseid = $course->id; - // default A- - $letters[1]->letter='A-'; - $letters[1]->grade_low=90.00; - $letters[1]->grade_high=92.99; - $letters[1]->courseid = $course->id; - // default B+ - $letters[2]->letter='B+'; - $letters[2]->grade_low=87.00; - $letters[2]->grade_high=89.99; - $letters[2]->courseid = $course->id; - // default B - $letters[3]->letter='B'; - $letters[3]->grade_low=83.00; - $letters[3]->grade_high=86.99; - $letters[3]->courseid = $course->id; - // default B- - $letters[4]->letter='B-'; - $letters[4]->grade_low=80.00; - $letters[4]->grade_high=82.99; - $letters[4]->courseid = $course->id; - // default C+ - $letters[5]->letter='C+'; - $letters[5]->grade_low=77.00; - $letters[5]->grade_high=79.99; - $letters[5]->courseid = $course->id; - // default C - $letters[6]->letter='C'; - $letters[6]->grade_low=73.00; - $letters[6]->grade_high=76.99; - $letters[6]->courseid = $course->id; - // default C- - $letters[7]->letter='C-'; - $letters[7]->grade_low=70.00; - $letters[7]->grade_high=72.99; - $letters[7]->courseid = $course->id; - // default D+ - $letters[8]->letter='D+'; - $letters[8]->grade_low=67.00; - $letters[8]->grade_high=69.99; - $letters[8]->courseid = $course->id; - // default D - $letters[9]->letter='D'; - $letters[9]->grade_low=60.00; - $letters[9]->grade_high=66.99; - $letters[9]->courseid = $course->id; - // default F - $letters[10]->letter='F'; - $letters[10]->grade_low=0.00; - $letters[10]->grade_high=59.99; - $letters[10]->courseid = $course->id; - } - - echo ''; - echo ''; - echo ''; - echo ''; - $i=0; - foreach ($letters as $id=>$items) { - if ($id !='' && !$using_defaults) { - // send the record id so if the user deletes the values we can delete the row. - echo ''; - } - echo ''."\n"; - echo ''."\n"; - echo ''."\n"; - $i++; - } - echo ''; - echo ''; - echo ''; - echo '
        '.get_string('setgradeletters','grades'); - helpbutton('coursegradeletter', get_string('gradeletterhelp','grades'), 'gradebook'); - echo '
        '.get_string('gradeletter','grades').''.get_string('lowgradeletter','grades').''.get_string('highgradeletter','grades').'
        '.get_string('gradeletternote','grades').'
        '; -} - -function grade_set_letter_grades() { - global $CFG; - global $course; - global $USER; - - if (!empty($USER->id)) { - if (!confirm_sesskey()) { - error(get_string('confirmsesskeybad', 'error')); - } - } - - $totalitems= clean_param($_REQUEST['totalitems'], PARAM_CLEAN); - - for($i=0; $i<=$totalitems; $i++) { - if (isset($_REQUEST["id$i"])) { - // item submitted was already in database - $letterid = $_REQUEST["id$i"]; - $updateletters[$letterid]->letter = clean_param($_REQUEST["letter$i"], PARAM_CLEAN); - $updateletters[$letterid]->grade_low = clean_param($_REQUEST["grade_low$i"], PARAM_CLEAN); - $updateletters[$letterid]->grade_high = clean_param($_REQUEST["grade_high$i"], PARAM_CLEAN); - $updateletters[$letterid]->id = $letterid; - } - else { - // its a new item - $newletter->letter = clean_param($_REQUEST["letter$i"], PARAM_CLEAN); - $newletter->grade_low = clean_param($_REQUEST["grade_low$i"], PARAM_CLEAN); - $newletter->grade_high = clean_param($_REQUEST["grade_high$i"], PARAM_CLEAN); - $newletter->courseid = $course->id; - if (is_numeric($newletter->grade_high) && is_numeric($newletter->grade_low)) { - insert_record('grade_letter', $newletter); - } - else { - if ($i < $totalitems) { - if ($newletter->grade_high != '' or $newletter->grade_low != '') { - echo '
        '.get_string('lettergradenonnumber','grades').' '.$newletter->letter.' item number: '.$i.'
        '; - } - } - } - } - } - - if (isset($updateletters)) { - foreach($updateletters as $id=>$items) { - // see if any of the values are blank... if so delete them - if ($items->letter == '' || $items->grade_low == '' || $items->grade_high == '') { - delete_records('grade_letter', 'id', $id); - } - else { - if (is_numeric($items->grade_high) && is_numeric($items->grade_low)) { - update_record('grade_letter', $items); - } - else { - echo '
        '.get_string('errorgradevaluenonnumeric','grades').$letter.'
        '; - } - } - } - } -} - -function grade_download_form($type='both') { - global $course,$USER; - if ($type != 'both' || $type != 'excel' || $type != 'text') { - $type = 'both'; - } - - if (isteacher($course->id)) { - echo ''; - $options['id'] = $course->id; - $options['sesskey'] = $USER->sesskey; - - if ($type = 'both' || $type == 'excel') { - $options['action'] = 'excel'; - echo ''; - } - if ($type = 'both' || $type == 'text') { - $options['action'] = 'text'; - echo ''; - } - echo ''; - - echo '
        '; - print_single_button("index.php", $options, get_string("downloadexcel")); - echo ''; - print_single_button("index.php", $options, get_string("downloadtext")); - echo ''; - setup_and_print_groups($course, $course->groupmode, 'index.php?id='.$course->id); - echo '
        '; - } -} - -?> diff --git a/help.php b/help.php index 6544a1bf2f7..49426df277c 100644 --- a/help.php +++ b/help.php @@ -1,63 +1,50 @@ -dirroot .'/lang/'. $lang .'/help/'. $file; + if ($module == "moodle") { + $filepath = "$CFG->dirroot/lang/$lang/help/$file"; } else { - $filepath = $CFG->dirroot .'/lang/'. $lang .'/help/'. $module .'/'. $file; - if (!file_exists($filepath)) { - $filepath = $CFG->dirroot.'/mod/'.$module.'/lang/'. $lang .'/help/'. $module .'/'. $file; - } + $filepath = "$CFG->dirroot/lang/$lang/help/$module/$file"; } - - if (file_exists($filepath)) { + + if (file_exists("$filepath")) { $helpfound = true; - include($filepath); // The actual helpfile + include("$filepath"); // The actual helpfile - if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) { + if ($module == "moodle" and ($file == "index.html" or $file == "mods.html")) { // include file for each module - if (!$modules = get_records('modules', 'visible', 1)) { - error('No modules found!!'); // Should never happen + if (!$modules = get_records("modules", "visible", 1)) { + error("No modules found!!"); // Should never happen } foreach ($modules as $mod) { - $strmodulename = get_string('modulename', $mod->name); + $strmodulename = get_string("modulename", "$mod->name"); $modulebyname[$strmodulename] = $mod; } ksort($modulebyname); @@ -67,19 +54,19 @@ if (empty($lang)) { continue; } - $filepath = $CFG->dirroot .'/lang/'. $lang .'/help/'. $mod->name .'/'. $file; + $filepath = "$CFG->dirroot/lang/$lang/help/$mod->name/$file"; - if (file_exists($filepath)) { + if (file_exists("$filepath")) { echo '
        '; - include($filepath); // The actual helpfile + include("$filepath"); // The actual helpfile break; } } } } - if ($module == 'moodle' and ($file == 'resource/types.html')) { // RESOURCES - require_once($CFG->dirroot .'/mod/resource/lib.php'); + if ($module == "moodle" and ($file == "resource/types.html")) { // RESOURCES + require_once("$CFG->dirroot/mod/resource/lib.php"); $typelist = resource_get_resource_types(); $typelist['label'] = get_string('resourcetypelabel', 'resource'); @@ -88,10 +75,10 @@ if (empty($lang)) { continue; } - $filepath = $CFG->dirroot .'/lang/'. $lang .'/help/resource/type/'. $type .'.html'; - if (file_exists($filepath)) { + $filepath = "$CFG->dirroot/lang/$lang/help/resource/type/$type.html"; + if (file_exists("$filepath")) { echo '
        '; - include($filepath); // The actual helpfile + include("$filepath"); // The actual helpfile break; } } @@ -101,9 +88,9 @@ } } } else { - echo '

        '; + echo "

        "; echo clean_text($text); - echo '

        '; + echo "

        "; $helpfound = true; } @@ -111,11 +98,13 @@ if (!$helpfound) { $file = clean_text($file); // Keep it clean! - notify('Help file "'. $file .'" could not be found!'); + notify("Help file '$file' could not be found!"); } close_window_button(); - echo '

        '. get_string('helpindex') .'

        '; - print_footer('none'); + echo "

        ".get_string("helpindex")."

        "; ?> + + + diff --git a/index.php b/index.php index 1ab86c2214d..38d69e6b1aa 100644 --- a/index.php +++ b/index.php @@ -1,4 +1,4 @@ -dirroot .'/course/lib.php'); - require_once($CFG->dirroot .'/lib/blocklib.php'); + require_once("config.php"); + require_once("course/lib.php"); + require_once('lib/blocklib.php'); + require_once("mod/resource/lib.php"); + require_once("mod/forum/lib.php"); - if (empty($SITE)) { - redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php'); + if (! $site = get_site()) { + redirect("$CFG->wwwroot/$CFG->admin/index.php"); } if ($CFG->forcelogin) { @@ -26,168 +28,250 @@ if (isadmin()) { if (moodle_needs_upgrading()) { - redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php'); + redirect("$CFG->wwwroot/$CFG->admin/index.php"); } } - if (get_moodle_cookie() == '') { - set_moodle_cookie('nobody'); // To help search for cookies on login page - } - - if (!empty($USER->id)) { - add_to_log(SITEID, 'course', 'view', 'view.php?id='.SITEID, SITEID); + if (empty($USER->id)) { + if (empty($CFG->loginhttps)) { + $wwwroot = $CFG->wwwroot; + } else { + $wwwroot = str_replace('http','https',$CFG->wwwroot); + } + $loginstring = "".get_string("login").""; + } else { + $loginstring = "".user_login_string($site).""; } if (empty($CFG->langmenu)) { - $langmenu = ''; + $langmenu = ""; } else { $currlang = current_language(); $langs = get_list_of_languages(); - $langmenu = popup_form ($CFG->wwwroot .'/index.php?lang=', $langs, 'chooselang', $currlang, '', '', '', true); + $langmenu = popup_form ("$CFG->wwwroot/index.php?lang=", $langs, "chooselang", $currlang, "", "", "", true); } - $PAGE = page_create_object(PAGE_COURSE_VIEW, SITEID); - $pageblocks = blocks_setup($PAGE); - $editing = $PAGE->user_is_editing(); - $preferred_width_left = bounded_number(BLOCK_L_MIN_WIDTH, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT]), - BLOCK_L_MAX_WIDTH); - $preferred_width_right = bounded_number(BLOCK_R_MIN_WIDTH, blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT]), - BLOCK_R_MAX_WIDTH); + print_header(strip_tags($site->fullname), "$site->fullname", "home", "", + "summary))."\">", + true, "", "$loginstring$langmenu"); - print_header(strip_tags($SITE->fullname), $SITE->fullname, 'home', '', - '', - true, '', user_login_string($SITE).$langmenu); + $editing = isediting($site->id); + + // Doing this now so we can pass the results to block_action() + // and dodge the overhead of doing the same work twice. + + $blocks = $site->blockinfo; + $delimpos = strpos($blocks, ':'); + + if($delimpos === false) { + // No ':' found, we have all left blocks + $leftblocks = explode(',', $blocks); + $rightblocks = array(); + } + else if($delimpos === 0) { + // ':' at start of string, we have all right blocks + $blocks = substr($blocks, 1); + $leftblocks = array(); + $rightblocks = explode(',', $blocks); + } + else { + // Both left and right blocks + $leftpart = substr($blocks, 0, $delimpos); + $rightpart = substr($blocks, $delimpos + 1); + $leftblocks = explode(',', $leftpart); + $rightblocks = explode(',', $rightpart); + } + + if($editing) { + if (isset($_GET['blockaction'])) { + if (isset($_GET['blockid'])) { + block_action($site, $leftblocks, $rightblocks, strtolower($_GET['blockaction']), intval($_GET['blockid'])); + } + } + + // This has to happen after block_action() has possibly updated the two arrays + $allblocks = array_merge($leftblocks, $rightblocks); + + $missingblocks = array(); + $recblocks = get_records('blocks','visible','1'); + + // Note down which blocks are going to get displayed + blocks_used($allblocks, $recblocks); + + if($editing && $recblocks) { + foreach($recblocks as $recblock) { + // If it's not hidden or displayed right now... + if(!in_array($recblock->id, $allblocks) && !in_array(-($recblock->id), $allblocks)) { + // And if it's applicable for display in this format... + $formats = block_method_result($recblock->name, 'applicable_formats'); + + if( isset($formats['site']) ? $formats['site'] : !empty($formats['all'])) { + // Translation: if the 'site' format is explicitly accepted/rejected, use + // that setting. Otherwise, fallback to the 'all' format. The empty() test + // uses the trick that empty() fails if 'all' is either !isset() or false. + + // Add it to the missing blocks + $missingblocks[] = $recblock->id; + } + } + } + } + } + else { + // Note down which blocks are going to get displayed + $allblocks = array_merge($leftblocks, $rightblocks); + $recblocks = get_records('blocks','visible','1'); + blocks_used($allblocks, $recblocks); + } + + // If the block width cache is not set, set it + if(!isset($SESSION) or !isset($SESSION->blockcache) or + !isset($SESSION->blockcache->width->{$site->id}) or $editing) { + // This query might be optimized away if we 're in editing mode + if(!isset($recblocks)) { + $recblocks = get_records('blocks','visible','1'); + } + $preferred_width_left = blocks_preferred_width($leftblocks, $recblocks); + $preferred_width_right = blocks_preferred_width($rightblocks, $recblocks); + + // This may be kind of organizational overkill, granted... + // But is there any real need to simplify the structure? + $SESSION->blockcache->width->{$site->id}->left = $preferred_width_left; + $SESSION->blockcache->width->{$site->id}->right = $preferred_width_right; + } else { + $preferred_width_left = $SESSION->blockcache->width->{$site->id}->left; + $preferred_width_right = $SESSION->blockcache->width->{$site->id}->right; + } + + $preferred_width_left = min($preferred_width_left, BLOCK_L_MAX_WIDTH); + $preferred_width_left = max($preferred_width_left, BLOCK_L_MIN_WIDTH); + $preferred_width_right = min($preferred_width_right, BLOCK_R_MAX_WIDTH); + $preferred_width_right = max($preferred_width_right, BLOCK_R_MIN_WIDTH); ?> - +
        - '; - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); + if(block_have_active($leftblocks) || $editing) { + echo ''; } - echo ''; - - - // The right column - if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing || isadmin()) { - echo ''; } ?> @@ -195,6 +279,5 @@
        '; + print_course_blocks($site, $leftblocks, BLOCK_LEFT); echo ''; - - + echo ''; + + /// Print Section - if ($SITE->numsections > 0) { + if ($site->numsections > 0) { + print_simple_box_start('center', '100%', $THEME->cellcontent, 5, 'sitetopic'); + + /// If currently moving a file then show the current clipboard + if (ismoving($site->id)) { + $stractivityclipboard = strip_tags(get_string("activityclipboard", "", addslashes($USER->activitycopyname))); + echo "

        "; + echo "$stractivityclipboard  (".get_string("cancel").")"; + echo "

        "; + } - if (!$section = get_record('course_sections', 'course', $SITE->id, 'section', 1)) { - delete_records('course_sections', 'course', $SITE->id, 'section', 1); // Just in case - $section->course = $SITE->id; + + if (!$section = get_record('course_sections', 'course', $site->id, 'section', 1)) { + delete_records('course_sections', 'course', $site->id, 'section', 1); // Just in case + $section->course = $site->id; $section->section = 1; $section->summary = ''; - $section->sequence = ''; $section->visible = 1; $section->id = insert_record('course_sections', $section); } - if (!empty($section->sequence) or !empty($section->summary) or $editing) { - print_simple_box_start('center', '100%', '', 5, 'sitetopic'); + echo format_text($section->summary, FORMAT_HTML); - /// If currently moving a file then show the current clipboard - if (ismoving($SITE->id)) { - $stractivityclipboard = strip_tags(get_string('activityclipboard', '', addslashes($USER->activitycopyname))); - echo '

        '; - echo "$stractivityclipboard  (". get_string('cancel') .')'; - echo '

        '; - } - - $options = NULL; - $options->noclean = true; - echo format_text($section->summary, FORMAT_HTML, $options); - - if ($editing) { - $streditsummary = get_string('editsummary'); - echo "id\">pixpath/t/edit.gif\" ". - " height=\"11\" width=\"11\" border=\"0\" alt=\"$streditsummary\" />

        "; - } - - get_all_mods($SITE->id, $mods, $modnames, $modnamesplural, $modnamesused); - print_section($SITE, $section, $mods, $modnamesused, true); - - if ($editing) { - print_section_add_menus($SITE, $section->section, $modnames); - } - print_simple_box_end(); + if ($editing) { + $streditsummary = get_string('editsummary'); + echo "id\">pixpath/t/edit.gif\" ". + " height=11 width=11 border=0 alt=\"$streditsummary\">
        "; } + + echo '
        '; + + get_all_mods($site->id, $mods, $modnames, $modnamesplural, $modnamesused); + print_section($site, $section, $mods, $modnamesused, true); + + if ($editing) { + print_section_add_menus($site, $section->section, $modnames); + } + print_simple_box_end(); + print_spacer(10); } switch ($CFG->frontpage) { /// Display the main part of the front page. case FRONTPAGENEWS: - if ($SITE->newsitems) { // Print forums only when needed - require_once($CFG->dirroot .'/mod/forum/lib.php'); - - 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; - if (forum_is_subscribed($USER->id, $newsforum->id)) { - $subtext = get_string('unsubscribe', 'forum'); - } else { - $subtext = get_string('subscribe', 'forum'); - } - $headertext = ''. - ''. - ''. - '
        '.$newsforum->name.'
        '; - } else { - $headertext = $newsforum->name; - } - - print_heading_block($headertext); - forum_print_latest_discussions($SITE, $newsforum, $SITE->newsitems); + 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"; + if (forum_is_subscribed($USER->id, $newsforum->id)) { + $subtext = get_string("unsubscribe", "forum"); + } else { + $subtext = get_string("subscribe", "forum"); + } + $headertext = " + +
        $newsforum->name + id\">$subtext +
        "; + } else { + $headertext = $newsforum->name; + } + print_heading_block($headertext); + print_spacer(8,1); + forum_print_latest_discussions($newsforum->id, $site->newsitems); break; case FRONTPAGECOURSELIST: case FRONTPAGECATEGORYNAMES: - if (isset($USER->id) and !isset($USER->admin)) { - print_heading_block(get_string('mycourses')); + print_heading_block(get_string("mycourses")); + print_spacer(8,1); print_my_moodle(); } else { - if (count_records('course_categories') > 1) { + if (count_records("course_categories") > 1) { if ($CFG->frontpage == FRONTPAGECOURSELIST) { - print_heading_block(get_string('availablecourses')); + print_heading_block(get_string("availablecourses")); } else { - print_heading_block(get_string('categories')); + print_heading_block(get_string("categories")); } - print_simple_box_start('center', '100%', '', 5, 'categorybox'); + print_spacer(8,1); + print_simple_box_start("center", "100%"); print_whole_category_list(); print_simple_box_end(); - print_course_search('', false, 'short'); + print_course_search("", false, "short"); } else { - print_heading_block(get_string('availablecourses')); - print_courses(0, '100%'); + print_heading_block(get_string("availablecourses")); + print_spacer(8,1); + print_courses(0, "100%"); } } break; - case FRONTPAGETOPICONLY: // Do nothing!! :-) - break; - } echo '
        '; + if(block_have_active($rightblocks) || $editing || isadmin()) { + echo ''; if (isadmin()) { - echo '
        '.update_course_icon($SITE->id).'
        '; + echo '
        '.update_course_icon($site->id).'
        '; echo '
        '; } - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT); + print_course_blocks($site, $rightblocks, BLOCK_RIGHT); + if ($editing && !empty($missingblocks)) { + block_print_blocks_admin($site, $missingblocks); + } echo '
        - + + diff --git a/install.php b/install.php index 00fc5843a4d..fdc346888dd 100644 --- a/install.php +++ b/install.php @@ -68,7 +68,7 @@ if ( empty($INSTALL['language']) and empty($_POST['language']) ) { $SESSION->lang = (!empty($_POST['language'])) ? $_POST['language'] : $INSTALL['language']; $CFG->dirroot = $INSTALL['dirroot']; $CFG->dataroot = $INSTALL['dataroot']; -$CFG->directorypermissions = 00777; +$CFG->directorypermissions = 0777; /// Include some moodle libraries @@ -162,26 +162,26 @@ if ($INSTALL['stage'] == 2) { if (($fh = @fopen($INSTALL['dirroot'].'/install.php', 'r')) === false ) { $CFG->dirroot = dirname(__FILE__); $INSTALL['dirroot'] = dirname(__FILE__); - $errormsg .= get_string('dirrooterror', 'install').'
        '; - } - if ($fh) fclose($fh); + $errormsg = get_string('dirrooterror', 'install'); + } else { + fclose($fh); - $CFG->dirroot = $INSTALL['dirroot']; + $CFG->dirroot = $INSTALL['dirroot']; - /// check wwwroot - if (ini_get('allow_url_fopen')) { + /// check wwwroot if (($fh = @fopen($INSTALL['wwwroot'].'/install.php', 'r')) === false) { - $errormsg .= get_string('wwwrooterror', 'install').'
        '; + $errormsg = get_string('wwwrooterror', 'install'); + } else { + fclose($fh); + + /// check dataroot + $CFG->dataroot = $INSTALL['dataroot']; + if (make_upload_directory('sessions', false) === false ) { + $errormsg = get_string('datarooterror', 'install'); + } } } - if ($fh) fclose($fh); - - /// check dataroot - $CFG->dataroot = $INSTALL['dataroot']; - if (make_upload_directory('sessions', false) === false ) { - $errormsg = get_string('datarooterror', 'install').'
        '; - } - if ($fh) fclose($fh); + if (!empty($errormsg)) $nextstage = 2; @@ -213,34 +213,24 @@ if ($INSTALL['stage'] == 3) { } } - if ($INSTALL['dbtype'] == 'mysql') { /// Check MySQL extension is present - if (!extension_loaded('mysql')) { - $errormsg = get_string('mysqlextensionisnotpresentinphp', 'install'); - $nextstage = 3; - } - } + $db = &ADONewConnection($INSTALL['dbtype']); - if (empty($errormsg)) { - - $db = &ADONewConnection($INSTALL['dbtype']); - - error_reporting(0); // Hide errors - - if (! $dbconnected = $db->Connect($INSTALL['dbhost'],$INSTALL['dbuser'],$INSTALL['dbpass'],$INSTALL['dbname'])) { - /// The following doesn't seem to work but we're working on it - /// If you come up with a solution for creating a database in MySQL - /// feel free to put it in and let us know - if ($dbconnected = $db->Connect($INSTALL['dbhost'],$INSTALL['dbuser'],$INSTALL['dbpass'])) { - switch ($INSTALL['dbtype']) { /// Try to create a database - case 'mysql': - if ($db->Execute("CREATE DATABASE {$INSTALL['dbname']};")) { - $dbconnected = $db->Connect($INSTALL['dbhost'],$INSTALL['dbuser'],$INSTALL['dbpass'],$INSTALL['dbname']); - } else { - $errormsg = get_string('dbcreationerror', 'install'); - $nextstage = 3; - } - break; - } + error_reporting(0); // Hide errors + + if (! $dbconnected = $db->Connect($INSTALL['dbhost'],$INSTALL['dbuser'],$INSTALL['dbpass'],$INSTALL['dbname'])) { + /// The following doesn't seem to work but we're working on it + /// If you come up with a solution for creating a database in MySQL + /// feel free to put it in and let us know + if ($dbconnected = $db->Connect($INSTALL['dbhost'],$INSTALL['dbuser'],$INSTALL['dbpass'])) { + switch ($INSTALL['dbtype']) { /// Try to create a database + case 'mysql': + if ($db->Execute("CREATE DATABASE {$INSTALL['dbname']};")) { + $dbconnected = $db->Connect($INSTALL['dbhost'],$INSTALL['dbuser'],$INSTALL['dbpass'],$INSTALL['dbname']); + } else { + $errormsg = get_string('dbcreationerror', 'install'); + $nextstage = 3; + } + break; } } } @@ -262,9 +252,7 @@ if ($INSTALL['stage'] == 3) { /// If we can open a file then we know that the admin name is correct. if ($nextstage == 4 or $INSTALL['stage'] == 4) { - if (!ini_get('allow_url_fopen')) { - $nextstage = ($goforward) ? 5 : 3; - } else if (($fh = @fopen($INSTALL['wwwroot'].'/'.$INSTALL['admindirname'].'/site.html', 'r')) !== false) { + if (($fh = @fopen($INSTALL['wwwroot'].'/'.$INSTALL['admindirname'].'/site.html', 'r')) !== false) { $nextstage = ($goforward) ? 5 : 3; fclose($fh); } else { @@ -292,8 +280,8 @@ if ($nextstage == 5) { $str .= "\r\n"; $str .= '$CFG->dbtype = \''.$INSTALL['dbtype']."';\r\n"; - $str .= '$CFG->dbhost = \''.addslashes($INSTALL['dbhost'])."';\r\n"; - if (!empty($INSTALL['dbname'])) { + $str .= '$CFG->dbhost = \''.$INSTALL['dbhost']."';\r\n"; + if ($INSTALL['dbtype'] == 'mysql') { $str .= '$CFG->dbname = \''.$INSTALL['dbname']."';\r\n"; $str .= '$CFG->dbuser = \''.$INSTALL['dbuser']."';\r\n"; $str .= '$CFG->dbpass = \''.$INSTALL['dbpass']."';\r\n"; @@ -305,10 +293,9 @@ if ($nextstage == 5) { $str .= '$CFG->wwwroot = \''.$INSTALL['wwwroot']."';\r\n"; $str .= '$CFG->dirroot = \''.$INSTALL['dirroot']."';\r\n"; $str .= '$CFG->dataroot = \''.$INSTALL['dataroot']."';\r\n"; - $str .= '$CFG->admin = \''.$INSTALL['admindirname']."';\r\n"; $str .= "\r\n"; - $str .= '$CFG->directorypermissions = 00777; // try 02777 on a server in Safe Mode'."\r\n"; + $str .= '$CFG->directorypermissions = 0777;'."\r\n"; $str .= "\r\n"; $str .= 'require_once("$CFG->dirroot/lib/setup.php");'."\r\n"; @@ -337,7 +324,7 @@ if ($nextstage == 5) { - + Moodle Install @@ -358,7 +345,7 @@ if (isset($_GET['help'])) { @@ -636,7 +623,7 @@ function install_helpbutton($url, $title='') { } echo ""; echo "\"$title\"";"; echo "\n"; } diff --git a/lang/af/assignment.php b/lang/af/assignment.php index 638e7659959..f8d30bccf9e 100644 --- a/lang/af/assignment.php +++ b/lang/af/assignment.php @@ -1,51 +1,51 @@ -teacher het kommentaar gelewer op jou opdrag van \'$a->assignment\' - -Kommentaar is aangeheg by jou opdrag: - - $a->url'; -$string['assignmentmailhtml'] = '$a->teacher het kommentaar gelewer op jou opdrag van -\'$a->assignment\'

        -Dit is aangeheg by jou url\"> opdrag.'; -$string['assignmentname'] = 'Opdrag naam'; -$string['assignmenttype'] = 'Opdrag tipe'; -$string['description'] = 'Beskrywing'; -$string['duedate'] = 'Inhandings datum'; -$string['early'] = '$a vroeg'; -$string['failedupdatefeedback'] = 'Opdrag terugvoer van gebruiker $a nie gestoor nie'; -$string['feedback'] = 'Terugvoer'; -$string['feedbackupdated'] = 'Terug voer gepos vir $a persone'; -$string['late'] = '$a laat'; -$string['maximumgrade'] = 'Maksimum punt'; -$string['maximumsize'] = 'Maksimum groote'; -$string['modulename'] = 'Opdrag'; -$string['modulenameplural'] = 'Opdragte'; -$string['newsubmissions'] = 'Opdragte in gelewer'; -$string['notgradedyet'] = 'Nog nie gemerk nie'; -$string['notsubmittedyet'] = 'Nog nie in gehandig'; -$string['overwritewarning'] = 'Waarskuwing: her-inlewering sal jou huidige opdrag VERVANG'; -$string['saveallfeedback'] = 'Stoor my terugvoer'; -$string['submissionfeedback'] = 'Opdrag terugvoer'; -$string['submissions'] = 'Ingestuurde opdragte'; -$string['submitassignment'] = 'Handig jou opdrag in met dié vorm'; -$string['submitted'] = 'Ontvang'; -$string['typeoffline'] = 'Ongekoppelde aktiwiteite'; -$string['typeuploadsingle'] = 'Laai \'n lêer op'; -$string['uploadbadname'] = 'Lêer naam bevat vreemde karakters en kon nie gestoor word nie'; -$string['uploadedfiles'] = 'Gestoorde lêers'; -$string['uploaderror'] = '\'n Fout het ontstaan toe jou lêer op die bediener gestoor is'; -$string['uploadfailnoupdate'] = 'Lêer is opgelaai MAAR kon nie gestoor word nie!'; -$string['uploadfiletoobig'] = 'Jammer, die lêer is te groot(die limiet is $a bytes)'; -$string['uploadnofilefound'] = 'Geen lêer gevind - maak seker dat \'n lêer geselekteer is'; -$string['uploadnotregistered'] = '\'$a\' is opgelaai, MAAR is nie geregistreer nie!'; -$string['uploadsuccess'] = '\'$a\' suksesvol ontvang'; -$string['viewfeedback'] = 'Kyk na punte en terugvoer'; -$string['viewsubmissions'] = 'Kyk na $a ingehandigde opdragte'; -$string['yoursubmission'] = 'Jou ingestuurde opdrag'; - -?> +teacher het kommentaar gelewer op jou opdrag van '\$a->assignment' + +Kommentaar is aangeheg by jou opdrag: + + \$a->url"; +$string['assignmentmailhtml'] = "\$a->teacher het kommentaar gelewer op jou opdrag van +'\$a->assignment'

        +Dit is aangeheg by jou url\\\"> opdrag."; +$string['assignmentname'] = "Opdrag naam"; +$string['assignmenttype'] = "Opdrag tipe"; +$string['description'] = "Beskrywing"; +$string['duedate'] = "Inhandings datum"; +$string['early'] = "\$a vroeg"; +$string['failedupdatefeedback'] = "Opdrag terugvoer van gebruiker \$a nie gestoor nie"; +$string['feedback'] = "Terugvoer"; +$string['feedbackupdated'] = "Terug voer gepos vir \$a persone"; +$string['late'] = "\$a laat"; +$string['maximumgrade'] = "Maksimum punt"; +$string['maximumsize'] = "Maksimum groote"; +$string['modulename'] = "Opdrag"; +$string['modulenameplural'] = "Opdragte"; +$string['newsubmissions'] = "Opdragte in gelewer"; +$string['notgradedyet'] = "Nog nie gemerk nie"; +$string['notsubmittedyet'] = "Nog nie in gehandig"; +$string['overwritewarning'] = "Waarskuwing: her-inlewering sal jou huidige opdrag VERVANG"; +$string['saveallfeedback'] = "Stoor my terugvoer"; +$string['submissionfeedback'] = "Opdrag terugvoer"; +$string['submissions'] = "Ingestuurde opdragte"; +$string['submitassignment'] = "Handig jou opdrag in met dié vorm"; +$string['submitted'] = "Ontvang"; +$string['typeoffline'] = "Ongekoppelde aktiwiteite"; +$string['typeuploadsingle'] = "Laai 'n lêer op"; +$string['uploadbadname'] = "Lêer naam bevat vreemde karakters en kon nie gestoor word nie"; +$string['uploadedfiles'] = "Gestoorde lêers"; +$string['uploaderror'] = "'n Fout het ontstaan toe jou lêer op die bediener gestoor is"; +$string['uploadfailnoupdate'] = "Lêer is opgelaai MAAR kon nie gestoor word nie!"; +$string['uploadfiletoobig'] = "Jammer, die lêer is te groot(die limiet is \$a bytes)"; +$string['uploadnofilefound'] = "Geen lêer gevind - maak seker dat 'n lêer geselekteer is"; +$string['uploadnotregistered'] = "'\$a' is opgelaai, MAAR is nie geregistreer nie!"; +$string['uploadsuccess'] = "'\$a' suksesvol ontvang"; +$string['viewfeedback'] = "Kyk na punte en terugvoer"; +$string['viewsubmissions'] = "Kyk na \$a ingehandigde opdragte"; +$string['yoursubmission'] = "Jou ingestuurde opdrag"; + +?> diff --git a/lang/af/auth.php b/lang/af/auth.php index ef019e05df3..734dd3cbcdb 100644 --- a/lang/af/auth.php +++ b/lang/af/auth.php @@ -1,69 +1,69 @@ -pre-fill met die eksterne databasis velde wat jy gespesifiseer het.

        As jy die velde oop los sal Moodle verstek waardes gebruik word.

        Die gebruiker sal instaat wees om die velde te redigeer sodra die gebruiker aanteken.

        '; -$string['auth_dbfieldpass'] = 'Naam van die veld wat wagwoorde bevat'; -$string['auth_dbfielduser'] = 'Naam van die veld wat gebruikersname bevat'; -$string['auth_dbhost'] = 'Die rekenaar wat optree as gasheer vir die databasis bediener.'; -$string['auth_dbname'] = 'Naam van die databasis'; -$string['auth_dbpass'] = 'Wagwoord vir die bogenoemde gebruikersnaam'; -$string['auth_dbpasstype'] = 'Spesifiseer die formaat wat die wagwoord veld gebruik. MD5 enkripsie is handig om mee konneksies te maak na ander web toepassings soos PostNuke'; -$string['auth_dbtable'] = 'Naam van die tabel in die databasis'; -$string['auth_dbtitle'] = 'Gebruik \'n eksterne databasis'; -$string['auth_dbtype'] = 'Die databasis tipe (Sien ADOdb documentation vir details)'; -$string['auth_dbuser'] = 'Gebruiker met lees toegang tot databasis'; -$string['auth_emaildescription'] = 'Email bevestiging is die verstek geldigheidsvasstellings metode. Wanneer die gebruiker aanteken en sy eie gebruikersnaam en wagwoord kies, sal \'n email as bevestiging aan sy email adres gestuur word. Die email bevat \'n veilige skakel na \'n bladsy waar die gebruiker sy rekening kan bevestig. As die gebruiker weer aanteken, word sy wagwoord en gebruikersnaam getoets teen die waardes wat in die Moodle databasis gestoor is.'; -$string['auth_emailtitle'] = 'Email gebaseerde geldigheidsvasstellings'; -$string['auth_imapdescription'] = 'Die metode gebruik \'n IMAP bediener om vastestel of \'n gebruikersnaam en wagwoord geldig is.'; -$string['auth_imaphost'] = 'Die IMAP bediener adres. Gebruik die IP nommer, nie die DNS naam nie.'; -$string['auth_imapport'] = 'IMAP bediener poort nommer. Dit is gewoonlik 143 of 993.'; -$string['auth_imaptitle'] = 'Gebruik \'n IMAP bediener'; -$string['auth_imaptype'] = 'Die IMAP bediener tipe. IMAP bedieners kan verskillende tipes geldigheidsvasstellings en onderhandelings hê.'; -$string['auth_ldap_bind_dn'] = 'Spesifiseer hier, as jy wil bind-user gebruik om vir gebruikers te soek. Iets soos \'cn=ldapuser,ou=public,o=org\''; -$string['auth_ldap_bind_pw'] = 'Wagwoord vir bind-user.'; -$string['auth_ldap_contexts'] = 'Lys van kontekste waar gebruikers gevestig is. Verdeel verskillende kontekste met \';\'. Byvoorbeeld: \'ou=users,o=org; ou=others,o=org\''; -$string['auth_ldap_create_context'] = 'As jy gebruikers in werking stel met email geldigheidsvasstellings, spesifiseer die konteks waar gebruikers geskep word. Die konteks moet anders wees as ander gebruikers, weens sekuriteits redes. Jy hoef nie die konteks by te voeg by die ldap_context-variable, Moodle sal outomaties soek vir gebruikers in die konteks.'; -$string['auth_ldap_creators'] = 'Lys van groepe waarvan die lede kursusse mag skep. Verdeel meervoudige groepe met \';\'. Gewoonlik iets soos \'cn=teachers,ou=staff,o=myorg\''; -$string['auth_ldap_host_url'] = 'Spesifiseer LDAP gasheer in URL formaat. Byvoorbeeld \'ldap://ldap.myorg.com/\' of \'ldaps://ldap.myorg.com/\' '; -$string['auth_ldap_memberattribute'] = 'As gebruiker lid van \'n groep is, spesifiseer hulle einskap. Iets soos \'lid\' of \'member\''; -$string['auth_ldap_search_sub'] = 'Gebruik waarde <> 0 as jy \'n soektog doen op gebruikers van \'n subkonteks.'; -$string['auth_ldap_update_userinfo'] = 'Dateer gebruiker inligting op (naam, van, adres...) vanaf LDAP na Moodle. Kyk na /auth/ldap/attr_mappings.php vir binding inligting'; -$string['auth_ldap_user_attribute'] = 'Die einskap wat gebruik word om gebruikers te benoem of te soek. Gewoonlik \'cn\'.'; -$string['auth_ldapdescription'] = 'Die metode gebruik \'n eksterne LDAP bediener om geldigheidvastelling te voorsien. - -Indien die gegewe gebruikersnaam en wagwoord geldig is, sal Moodle \'n nuwe - gebruiker in sy databasis skep. Die module kan gebruiker eienskappe inlees vanaf LDAP - en die verlangde velde in Moodle in vul. As die gebruiker aanteken sal net die - gebruikersnaam en wagwoord gebruik word.'; -$string['auth_ldapextrafields'] = 'Die velde is opsioneel. Dit is moontlik om van die Moodle gebruiker velde te pre-fill met inligting van die LDAP velde wat jy gespesifiseer het.

        As jy die velde oop los sal Moodle verstek waardes gebruik word. Geen data oordrag vanaf LDAP sal gemaak word nie.

        Die gebruiker sal instaat wees om die velde te redigeer sodra die gebruiker aanteken.

        '; -$string['auth_ldaptitle'] = 'Gebruik \'n LDAP bediener'; -$string['auth_manualdescription'] = 'Met die metode kan gebruikers nie self hulle rekeninge skep nie. Gebruiker rekeninge moet deur die admin. gebruiker geskep word.'; -$string['auth_manualtitle'] = 'Admin. gebruiker skep rekeninge'; -$string['auth_nntpdescription'] = 'Die metode gebruik \'n NNTP bediener om vas te stel of \'n gebruikersnaam en wagwoord geldig is.'; -$string['auth_nntphost'] = 'Die NNTP bediener adres. Gebruik die IP nommer, nie die DNS naam nie.'; -$string['auth_nntpport'] = 'Bediener poort (119 is die mees algemeen)'; -$string['auth_nntptitle'] = 'Gebruik \'n NNTP bediener'; -$string['auth_nonedescription'] = 'Gebruikers teken in, en kan dan self dadelik \'n geldige rekening skep, geen geldigheidvastelling teen \'n eksterne databasis nie, en geen konformasie via email nie. Waarskuwing: die opsie kan moontlik baie sekuriteit en admin probleme veroorsaak.'; -$string['auth_nonetitle'] = 'Geen geldigheidsvastelling'; -$string['auth_pop3description'] = 'Die metode gebruik \'n POP3 bediener om vas te stel of \'n gebruikersnaam en wagwoord geldig is.'; -$string['auth_pop3host'] = 'Die POP3 bediener adres. Gebruik die IP nommer, nie die DNS naam nie.'; -$string['auth_pop3port'] = 'Bediener adres (110 is die mees algemeen)'; -$string['auth_pop3title'] = 'Gebruik \'n POP3 bediener'; -$string['auth_pop3type'] = 'Bediener tipe. Indien jou bediener sertifikaat sekuriteit benut, kies pop3cert.'; -$string['auth_user_create'] = 'Stel gebruiker skepping in werking'; -$string['auth_user_creation'] = 'Nuwe (anonieme) gebruikers kan gebruikers rekeninge op \'n eksterne geldigheidvastellings bron skep, en bevestig dan deur email. As jy dit gebruik, onthou om module-spesifieke opsies vir gebruiker skepping op te stel.'; -$string['auth_usernameexists'] = 'Gebruikersnaam bestaan reeds, kies asseblief \'n ander naam.'; -$string['authenticationoptions'] = 'Geldigheidvastellings opsies'; -$string['authinstructions'] = 'Voorsien hier instruksies vir jou gebruikers, sodat hulle kan weet watter gebruikersname en wagwoorde hulle kan gebruik. Die teks wat jy hier in sit sal op die aanteken bladsy verskyn. As jy dit oop los sal geen instuksies vertoon word nie.'; -$string['changepassword'] = 'Verander wagwoord URL'; -$string['changepasswordhelp'] = 'Spesifiseer hier \'n plek waar jou gebruikers hulle gebruikersname en wagwoorde kan verander of dit herwin indien hulle dit vergeet het. Dit sal as \'n knoppie op die aanteken bladsy aan die gebruikers voorsien word. As jy dit oop los sal daar geen knoppie op die bladsy verskyn nie'; -$string['chooseauthmethod'] = 'Kies \'n geldigheidvastellings metode: '; -$string['guestloginbutton'] = 'Tekenaan as \'n gas'; -$string['instructions'] = 'Instruksies'; -$string['md5'] = 'MD5 enkripsie'; -$string['plaintext'] = 'Gewone teks'; -$string['showguestlogin'] = 'Jy kan die gas aanteken knoppie wys of wegsteek op die aanteken bladsy.'; - -?> +pre-fill met die eksterne databasis velde wat jy gespesifiseer het.

        As jy die velde oop los sal Moodle verstek waardes gebruik word.

        Die gebruiker sal instaat wees om die velde te redigeer sodra die gebruiker aanteken."; +$string['auth_dbfieldpass'] = "Naam van die veld wat wagwoorde bevat"; +$string['auth_dbfielduser'] = "Naam van die veld wat gebruikersname bevat"; +$string['auth_dbhost'] = "Die rekenaar wat optree as gasheer vir die databasis bediener."; +$string['auth_dbname'] = "Naam van die databasis"; +$string['auth_dbpass'] = "Wagwoord vir die bogenoemde gebruikersnaam"; +$string['auth_dbpasstype'] = "Spesifiseer die formaat wat die wagwoord veld gebruik. MD5 enkripsie is handig om mee konneksies te maak na ander web toepassings soos PostNuke"; +$string['auth_dbtable'] = "Naam van die tabel in die databasis"; +$string['auth_dbtitle'] = "Gebruik 'n eksterne databasis"; +$string['auth_dbtype'] = "Die databasis tipe (Sien ADOdb documentation vir details)"; +$string['auth_dbuser'] = "Gebruiker met lees toegang tot databasis"; +$string['auth_emaildescription'] = "Email bevestiging is die verstek geldigheidsvasstellings metode. Wanneer die gebruiker aanteken en sy eie gebruikersnaam en wagwoord kies, sal 'n email as bevestiging aan sy email adres gestuur word. Die email bevat 'n veilige skakel na 'n bladsy waar die gebruiker sy rekening kan bevestig. As die gebruiker weer aanteken, word sy wagwoord en gebruikersnaam getoets teen die waardes wat in die Moodle databasis gestoor is."; +$string['auth_emailtitle'] = "Email gebaseerde geldigheidsvasstellings"; +$string['auth_imapdescription'] = "Die metode gebruik 'n IMAP bediener om vastestel of 'n gebruikersnaam en wagwoord geldig is."; +$string['auth_imaphost'] = "Die IMAP bediener adres. Gebruik die IP nommer, nie die DNS naam nie."; +$string['auth_imapport'] = "IMAP bediener poort nommer. Dit is gewoonlik 143 of 993."; +$string['auth_imaptitle'] = "Gebruik 'n IMAP bediener"; +$string['auth_imaptype'] = "Die IMAP bediener tipe. IMAP bedieners kan verskillende tipes geldigheidsvasstellings en onderhandelings hê."; +$string['auth_ldap_bind_dn'] = "Spesifiseer hier, as jy wil bind-user gebruik om vir gebruikers te soek. Iets soos 'cn=ldapuser,ou=public,o=org'"; +$string['auth_ldap_bind_pw'] = "Wagwoord vir bind-user."; +$string['auth_ldap_contexts'] = "Lys van kontekste waar gebruikers gevestig is. Verdeel verskillende kontekste met ';'. Byvoorbeeld: 'ou=users,o=org; ou=others,o=org'"; +$string['auth_ldap_create_context'] = "As jy gebruikers in werking stel met email geldigheidsvasstellings, spesifiseer die konteks waar gebruikers geskep word. Die konteks moet anders wees as ander gebruikers, weens sekuriteits redes. Jy hoef nie die konteks by te voeg by die ldap_context-variable, Moodle sal outomaties soek vir gebruikers in die konteks."; +$string['auth_ldap_creators'] = "Lys van groepe waarvan die lede kursusse mag skep. Verdeel meervoudige groepe met ';'. Gewoonlik iets soos 'cn=teachers,ou=staff,o=myorg'"; +$string['auth_ldap_host_url'] = "Spesifiseer LDAP gasheer in URL formaat. Byvoorbeeld 'ldap://ldap.myorg.com/' of 'ldaps://ldap.myorg.com/' "; +$string['auth_ldap_memberattribute'] = "As gebruiker lid van 'n groep is, spesifiseer hulle einskap. Iets soos 'lid' of 'member'"; +$string['auth_ldap_search_sub'] = "Gebruik waarde <> 0 as jy 'n soektog doen op gebruikers van 'n subkonteks."; +$string['auth_ldap_update_userinfo'] = "Dateer gebruiker inligting op (naam, van, adres...) vanaf LDAP na Moodle. Kyk na /auth/ldap/attr_mappings.php vir binding inligting"; +$string['auth_ldap_user_attribute'] = "Die einskap wat gebruik word om gebruikers te benoem of te soek. Gewoonlik 'cn'."; +$string['auth_ldapdescription'] = "Die metode gebruik 'n eksterne LDAP bediener om geldigheidvastelling te voorsien. + Indien die gegewe gebruikersnaam en wagwoord geldig is, sal Moodle 'n nuwe + gebruiker in sy databasis skep. Die module kan gebruiker eienskappe inlees vanaf LDAP + en die verlangde velde in Moodle in vul. As die gebruiker aanteken sal net die + gebruikersnaam en wagwoord gebruik word."; +$string['auth_ldapextrafields'] = "Die velde is opsioneel. Dit is moontlik om van die Moodle gebruiker velde te pre-fill met inligting van die LDAP velde wat jy gespesifiseer het.

        As jy die velde oop los sal Moodle verstek waardes gebruik word. Geen data oordrag vanaf LDAP sal gemaak word nie.

        Die gebruiker sal instaat wees om die velde te redigeer sodra die gebruiker aanteken."; +$string['auth_ldaptitle'] = "Gebruik 'n LDAP bediener"; +$string['auth_manualdescription'] = "Met die metode kan gebruikers nie self hulle rekeninge skep nie. Gebruiker rekeninge moet deur die admin. gebruiker geskep word."; +$string['auth_manualtitle'] = "Admin. gebruiker skep rekeninge"; +$string['auth_nntpdescription'] = "Die metode gebruik 'n NNTP bediener om vas te stel of 'n gebruikersnaam en wagwoord geldig is."; +$string['auth_nntphost'] = "Die NNTP bediener adres. Gebruik die IP nommer, nie die DNS naam nie."; +$string['auth_nntpport'] = "Bediener poort (119 is die mees algemeen)"; +$string['auth_nntptitle'] = "Gebruik 'n NNTP bediener"; +$string['auth_nonedescription'] = "Gebruikers teken in, en kan dan self dadelik 'n geldige rekening skep, geen geldigheidvastelling teen 'n eksterne databasis nie, en geen konformasie via email nie. Waarskuwing: die opsie kan moontlik baie sekuriteit en admin probleme veroorsaak."; +$string['auth_nonetitle'] = "Geen geldigheidsvastelling"; +$string['auth_pop3description'] = "Die metode gebruik 'n POP3 bediener om vas te stel of 'n gebruikersnaam en wagwoord geldig is."; +$string['auth_pop3host'] = "Die POP3 bediener adres. Gebruik die IP nommer, nie die DNS naam nie."; +$string['auth_pop3port'] = "Bediener adres (110 is die mees algemeen)"; +$string['auth_pop3title'] = "Gebruik 'n POP3 bediener"; +$string['auth_pop3type'] = "Bediener tipe. Indien jou bediener sertifikaat sekuriteit benut, kies pop3cert."; +$string['auth_user_create'] = "Stel gebruiker skepping in werking"; +$string['auth_user_creation'] = "Nuwe (anonieme) gebruikers kan gebruikers rekeninge op 'n eksterne geldigheidvastellings bron skep, en bevestig dan deur email. As jy dit gebruik, onthou om module-spesifieke opsies vir gebruiker skepping op te stel."; +$string['auth_usernameexists'] = "Gebruikersnaam bestaan reeds, kies asseblief 'n ander naam."; +$string['authenticationoptions'] = "Geldigheidvastellings opsies"; +$string['authinstructions'] = "Voorsien hier instruksies vir jou gebruikers, sodat hulle kan weet watter gebruikersname en wagwoorde hulle kan gebruik. Die teks wat jy hier in sit sal op die aanteken bladsy verskyn. As jy dit oop los sal geen instuksies vertoon word nie."; +$string['changepassword'] = "Verander wagwoord URL"; +$string['changepasswordhelp'] = "Spesifiseer hier 'n plek waar jou gebruikers hulle gebruikersname en wagwoorde kan verander of dit herwin indien hulle dit vergeet het. Dit sal as 'n knoppie op die aanteken bladsy aan die gebruikers voorsien word. As jy dit oop los sal daar geen knoppie op die bladsy verskyn nie"; +$string['chooseauthmethod'] = "Kies 'n geldigheidvastellings metode: "; +$string['guestloginbutton'] = "Tekenaan as 'n gas"; +$string['instructions'] = "Instruksies"; +$string['md5'] = "MD5 enkripsie"; +$string['plaintext'] = "Gewone teks"; +$string['showguestlogin'] = "Jy kan die gas aanteken knoppie wys of wegsteek op die aanteken bladsy."; + +?> diff --git a/lang/af/chat.php b/lang/af/chat.php index f01924c0088..df52b68a8e4 100644 --- a/lang/af/chat.php +++ b/lang/af/chat.php @@ -1,41 +1,41 @@ - + diff --git a/lang/af/choice.php b/lang/af/choice.php index a0eb923fcd9..2c7008f41be 100644 --- a/lang/af/choice.php +++ b/lang/af/choice.php @@ -1,21 +1,21 @@ - + diff --git a/lang/af/forum.php b/lang/af/forum.php index ad2755ad33d..eb0e65b629d 100644 --- a/lang/af/forum.php +++ b/lang/af/forum.php @@ -1,130 +1,130 @@ -name - $a->date'; -$string['configdisplaymode'] = 'Verstek waarde om forum te vertoon.'; -$string['configlongpost'] = 'Pos wat langer as dit is (HTML nie ingesluit) word as te lank beskou.'; -$string['configmanydiscussions'] = 'Maksimum aantal besprekings wat per bladsy vertoon word'; -$string['configshortpost'] = 'Pos wat korter as dit is (HTML nie ingesluit nie) word as te kort beskou.'; -$string['couldnotadd'] = 'Kon nie jou pos byvoeg nie weens \'n onbekende fout'; -$string['couldnotdeleteratings'] = 'Jammer, dit kan nie uitgewis word nie, dit is reeds deur iemand geevalueer'; -$string['couldnotdeletereplies'] = 'Jammer, dit kan nie uitgewis word nie, iemand het reeds hierop geantwoord'; -$string['couldnotupdate'] = 'Kon nie opdateer nie weens \'n onbekende fout'; -$string['delete'] = 'Uitwis'; -$string['deleteddiscussion'] = 'Die besprekings onderwerp is uitgewis'; -$string['deletedpost'] = 'Die pos is uitgewis'; -$string['deletesure'] = 'Is jy seker jy wil die pos uitvee?'; -$string['discussion'] = 'Bespreking'; -$string['discussionmoved'] = 'Die bespreking is geskuif na \'$a\'.'; -$string['discussions'] = 'Besprekings'; -$string['discussionsstartedby'] = 'Bespreking begin deur $a'; -$string['discussionsstartedbyrecent'] = 'Besprekings onlangs begin deur $a'; -$string['discussthistopic'] = 'Bespreek die onderwerp'; -$string['eachuserforum'] = 'Elke persoon pos een bespreking'; -$string['edit'] = 'Redigeer'; -$string['editing'] = 'Redigering'; -$string['emptymessage'] = 'Iets was verkeerd met jou pos. Jy het dit leeg gelos of die aanhegting was te groot. Jou veranderinge was nie gestoor nie.'; -$string['everyonecanchoose'] = 'Almal kan kies om in te skryf'; -$string['everyoneissubscribed'] = 'Almal is in geskryf by die forum'; -$string['forcesubscribe'] = 'Forseer almal om in te skryf'; -$string['forcesubscribeq'] = 'Forseer almal om in te skryf?'; -$string['forum'] = 'Forum'; -$string['forumintro'] = 'Forum introduksie'; -$string['forumname'] = 'Forum naam'; -$string['forums'] = 'Forums'; -$string['forumtype'] = 'Forum tipe'; -$string['generalforum'] = 'Standaard forum vir algemene gebruik'; -$string['generalforums'] = 'Algemene forums'; -$string['inforum'] = 'in $a'; -$string['intronews'] = 'Algemene nuus en afkondigings'; -$string['introsocial'] = '\'n Oop forum om oor enige onderwerp te gesels'; -$string['introteacher'] = '\'n Forum alleenlik vir onderwyser besprekings'; -$string['lastpost'] = 'Laaste pos'; -$string['learningforums'] = 'Leer forums'; -$string['maxtimehaspassed'] = 'Jammer, die maksimum tydperk om die pos ($a) te redigeer is verby!'; -$string['message'] = 'Boodskap'; -$string['modeflatnewestfirst'] = 'Wys terugvoer nuutste eerste'; -$string['modeflatoldestfirst'] = 'Wys terugvoer oudste eerste'; -$string['modenested'] = 'Wys terugvoer in geneste formaat'; -$string['modethreaded'] = 'Wys terugvoer in \'threaded\' formaat'; -$string['modulename'] = 'Forum'; -$string['modulenameplural'] = 'Forums'; -$string['more'] = 'nog'; -$string['movethisdiscussionto'] = 'Skuif die bespreking na ... '; -$string['namenews'] = 'Nuus forum'; -$string['namesocial'] = 'Sosiaale forum'; -$string['nameteacher'] = 'Onderwys forum'; -$string['newforumposts'] = 'Nuwe forum pos'; -$string['nodiscussions'] = 'Daar is nog nie besprekings onderwerpe in die forum nie'; -$string['noguestpost'] = 'Jammer, gaste mag nie aan die bespreking deelneem nie'; -$string['nomorepostscontaining'] = 'Niks meer pos wat \'$a\' bevat is gevind nie'; -$string['nonews'] = 'Geen nuwe nuus is al gepos nie'; -$string['noposts'] = 'Geen pos'; -$string['nopostscontaining'] = 'Geen pos met \'$a\' was gevind nie'; -$string['nosubscribers'] = 'Daar is nog nie inskrywers by die forum nie'; -$string['nownotsubscribed'] = '$a->name sal NIE kopieë van \'$a->forum\' ontvang via email nie.'; -$string['nowsubscribed'] = '$a->name sal kopieë van \'$a->forum\' ontvang via email.'; -$string['numposts'] = '$a pos'; -$string['olderdiscussions'] = 'Ouer besprekings'; -$string['openmode0'] = 'Geen besprekings, geen terugvoer'; -$string['openmode1'] = 'Geen besprekings, maar terugvoer word toegelaat'; -$string['openmode2'] = 'Besprekings en terugvoer word toegelaat'; -$string['parentofthispost'] = 'Ouer van die pos'; -$string['postadded'] = 'Jou pos was suksesvol bygevoeg.

        Jy het $a om die pos te redigeer as jy wil veranderinge wil aanbring.'; -$string['postincontext'] = 'Wys die pos in konteks'; -$string['postmailinfo'] = 'Hierdie is \'n kopie van \'n boodskap wat gepos is op die $a webblad. -Om terugvoer te lewer via die webblad klik op die skakel:'; -$string['postrating1'] = 'Wys meestal AFSONDERLIKE kennis'; -$string['postrating2'] = 'Ewe veel AFSONDERLIKE en VERBONDE kennis'; -$string['postrating3'] = 'Wys meestal VERBONDE kennis'; -$string['posts'] = 'Pos'; -$string['postupdated'] = 'Jou veranderinge is gedoen'; -$string['processingpost'] = '$a word verwerk'; -$string['rate'] = 'Evalueer'; -$string['rating'] = 'Evaluasie'; -$string['ratingeveryone'] = 'Almal kan pos evalueer'; -$string['ratingno'] = 'Geen evaluasies'; -$string['ratingonlyteachers'] = 'Slegs $a mag pos evalueer'; -$string['ratings'] = 'Evaluasie'; -$string['ratingssaved'] = 'Evaluasie gestoor'; -$string['ratingsuse'] = 'Gebruik evaluasies'; -$string['ratingtime'] = 'Evalueer slegs pos tussen die twee datums:'; -$string['re'] = 'Re:'; -$string['readtherest'] = 'Lees die res van die onderwerp'; -$string['replies'] = 'Terugvoer'; -$string['repliesmany'] = '$a terugvoer ontvang'; -$string['repliesone'] = '$a terugvoer ontvang'; -$string['reply'] = 'Antwoord'; -$string['search'] = 'Soek'; -$string['searchforums'] = 'Deursoek forums'; -$string['searcholderposts'] = 'Deursoek ouer pos...'; -$string['searchresults'] = 'Soektog resultate'; -$string['sendinratings'] = 'Stuur my nuutste evaluerings in'; -$string['showsubscribers'] = 'Wys inskrywers'; -$string['singleforum'] = '\'n Enkele bespreking'; -$string['startedby'] = 'Begin deur'; -$string['subject'] = 'Onderwerp'; -$string['subscribe'] = 'Skryf in by die forum'; -$string['subscribed'] = 'Ingeskryf'; -$string['subscribers'] = 'Inskrywers'; -$string['subscribersto'] = 'Inskrywers tot \'$a\''; -$string['subscribestart'] = 'Stuur vir my email kopieë van hierdie bespreking'; -$string['subscribestop'] = 'Moenie vir my email kopieë stuur van die bespreking nie'; -$string['subscription'] = 'Inskrywing'; -$string['subscriptions'] = 'Inskrywings'; -$string['unsubscribe'] = 'Kanselleer inskrywing tot hierdie forum'; -$string['unsubscribed'] = 'Kanselleer inskrywing'; -$string['youratedthis'] = 'Jy het dit geevalueer as'; -$string['yournewtopic'] = 'Jou nuwe besprekings onderwerp'; -$string['yourreply'] = 'Jou terugvoer'; - -?> +name - \$a->date"; +$string['configdisplaymode'] = "Verstek waarde om forum te vertoon."; +$string['configlongpost'] = "Pos wat langer as dit is (HTML nie ingesluit) word as te lank beskou."; +$string['configmanydiscussions'] = "Maksimum aantal besprekings wat per bladsy vertoon word"; +$string['configshortpost'] = "Pos wat korter as dit is (HTML nie ingesluit nie) word as te kort beskou."; +$string['couldnotadd'] = "Kon nie jou pos byvoeg nie weens 'n onbekende fout"; +$string['couldnotdeleteratings'] = "Jammer, dit kan nie uitgewis word nie, dit is reeds deur iemand geevalueer"; +$string['couldnotdeletereplies'] = "Jammer, dit kan nie uitgewis word nie, iemand het reeds hierop geantwoord"; +$string['couldnotupdate'] = "Kon nie opdateer nie weens 'n onbekende fout"; +$string['delete'] = "Uitwis"; +$string['deleteddiscussion'] = "Die besprekings onderwerp is uitgewis"; +$string['deletedpost'] = "Die pos is uitgewis"; +$string['deletesure'] = "Is jy seker jy wil die pos uitvee?"; +$string['discussion'] = "Bespreking"; +$string['discussionmoved'] = "Die bespreking is geskuif na '\$a'."; +$string['discussions'] = "Besprekings"; +$string['discussionsstartedby'] = "Bespreking begin deur \$a"; +$string['discussionsstartedbyrecent'] = "Besprekings onlangs begin deur \$a"; +$string['discussthistopic'] = "Bespreek die onderwerp"; +$string['eachuserforum'] = "Elke persoon pos een bespreking"; +$string['edit'] = "Redigeer"; +$string['editing'] = "Redigering"; +$string['emptymessage'] = "Iets was verkeerd met jou pos. Jy het dit leeg gelos of die aanhegting was te groot. Jou veranderinge was nie gestoor nie."; +$string['everyonecanchoose'] = "Almal kan kies om in te skryf"; +$string['everyoneissubscribed'] = "Almal is in geskryf by die forum"; +$string['forcesubscribe'] = "Forseer almal om in te skryf"; +$string['forcesubscribeq'] = "Forseer almal om in te skryf?"; +$string['forum'] = "Forum"; +$string['forumintro'] = "Forum introduksie"; +$string['forumname'] = "Forum naam"; +$string['forums'] = "Forums"; +$string['forumtype'] = "Forum tipe"; +$string['generalforum'] = "Standaard forum vir algemene gebruik"; +$string['generalforums'] = "Algemene forums"; +$string['inforum'] = "in \$a"; +$string['intronews'] = "Algemene nuus en afkondigings"; +$string['introsocial'] = "'n Oop forum om oor enige onderwerp te gesels"; +$string['introteacher'] = "'n Forum alleenlik vir onderwyser besprekings"; +$string['lastpost'] = "Laaste pos"; +$string['learningforums'] = "Leer forums"; +$string['maxtimehaspassed'] = "Jammer, die maksimum tydperk om die pos (\$a) te redigeer is verby!"; +$string['message'] = "Boodskap"; +$string['modeflatnewestfirst'] = "Wys terugvoer nuutste eerste"; +$string['modeflatoldestfirst'] = "Wys terugvoer oudste eerste"; +$string['modenested'] = "Wys terugvoer in geneste formaat"; +$string['modethreaded'] = "Wys terugvoer in 'threaded' formaat"; +$string['modulename'] = "Forum"; +$string['modulenameplural'] = "Forums"; +$string['more'] = "nog"; +$string['movethisdiscussionto'] = "Skuif die bespreking na ... "; +$string['namenews'] = "Nuus forum"; +$string['namesocial'] = "Sosiaale forum"; +$string['nameteacher'] = "Onderwys forum"; +$string['newforumposts'] = "Nuwe forum pos"; +$string['nodiscussions'] = "Daar is nog nie besprekings onderwerpe in die forum nie"; +$string['noguestpost'] = "Jammer, gaste mag nie aan die bespreking deelneem nie"; +$string['nomorepostscontaining'] = "Niks meer pos wat '\$a' bevat is gevind nie"; +$string['nonews'] = "Geen nuwe nuus is al gepos nie"; +$string['noposts'] = "Geen pos"; +$string['nopostscontaining'] = "Geen pos met '\$a' was gevind nie"; +$string['nosubscribers'] = "Daar is nog nie inskrywers by die forum nie"; +$string['nownotsubscribed'] = "\$a->name sal NIE kopieë van '\$a->forum' ontvang via email nie."; +$string['nowsubscribed'] = "\$a->name sal kopieë van '\$a->forum' ontvang via email."; +$string['numposts'] = "\$a pos"; +$string['olderdiscussions'] = "Ouer besprekings"; +$string['openmode0'] = "Geen besprekings, geen terugvoer"; +$string['openmode1'] = "Geen besprekings, maar terugvoer word toegelaat"; +$string['openmode2'] = "Besprekings en terugvoer word toegelaat"; +$string['parentofthispost'] = "Ouer van die pos"; +$string['postadded'] = "Jou pos was suksesvol bygevoeg.

        Jy het \$a om die pos te redigeer as jy wil veranderinge wil aanbring."; +$string['postincontext'] = "Wys die pos in konteks"; +$string['postmailinfo'] = "Hierdie is 'n kopie van 'n boodskap wat gepos is op die \$a webblad. +Om terugvoer te lewer via die webblad klik op die skakel:"; +$string['postrating1'] = "Wys meestal AFSONDERLIKE kennis"; +$string['postrating2'] = "Ewe veel AFSONDERLIKE en VERBONDE kennis"; +$string['postrating3'] = "Wys meestal VERBONDE kennis"; +$string['posts'] = "Pos"; +$string['postupdated'] = "Jou veranderinge is gedoen"; +$string['processingpost'] = "\$a word verwerk"; +$string['rate'] = "Evalueer"; +$string['rating'] = "Evaluasie"; +$string['ratingeveryone'] = "Almal kan pos evalueer"; +$string['ratingno'] = "Geen evaluasies"; +$string['ratingonlyteachers'] = "Slegs \$a mag pos evalueer"; +$string['ratings'] = "Evaluasie"; +$string['ratingssaved'] = "Evaluasie gestoor"; +$string['ratingsuse'] = "Gebruik evaluasies"; +$string['ratingtime'] = "Evalueer slegs pos tussen die twee datums:"; +$string['re'] = "Re:"; +$string['readtherest'] = "Lees die res van die onderwerp"; +$string['replies'] = "Terugvoer"; +$string['repliesmany'] = "\$a terugvoer ontvang"; +$string['repliesone'] = "\$a terugvoer ontvang"; +$string['reply'] = "Antwoord"; +$string['search'] = "Soek"; +$string['searchforums'] = "Deursoek forums"; +$string['searcholderposts'] = "Deursoek ouer pos..."; +$string['searchresults'] = "Soektog resultate"; +$string['sendinratings'] = "Stuur my nuutste evaluerings in"; +$string['showsubscribers'] = "Wys inskrywers"; +$string['singleforum'] = "'n Enkele bespreking"; +$string['startedby'] = "Begin deur"; +$string['subject'] = "Onderwerp"; +$string['subscribe'] = "Skryf in by die forum"; +$string['subscribed'] = "Ingeskryf"; +$string['subscribers'] = "Inskrywers"; +$string['subscribersto'] = "Inskrywers tot '\$a'"; +$string['subscribestart'] = "Stuur vir my email kopieë van hierdie bespreking"; +$string['subscribestop'] = "Moenie vir my email kopieë stuur van die bespreking nie"; +$string['subscription'] = "Inskrywing"; +$string['subscriptions'] = "Inskrywings"; +$string['unsubscribe'] = "Kanselleer inskrywing tot hierdie forum"; +$string['unsubscribed'] = "Kanselleer inskrywing"; +$string['youratedthis'] = "Jy het dit geevalueer as"; +$string['yournewtopic'] = "Jou nuwe besprekings onderwerp"; +$string['yourreply'] = "Jou terugvoer"; + +?> diff --git a/lang/af/help/assignment/assignmenttype.html b/lang/af/help/assignment/assignmenttype.html index fabfec415aa..b734472c02f 100644 --- a/lang/af/help/assignment/assignmenttype.html +++ b/lang/af/help/assignment/assignmenttype.html @@ -1,4 +1,13 @@ -

        Opdrag Tipe

        -

        Daar is 'n paar verskillende opdrag tipes

        -

        Ongekoppelde aktiwiteit - word gebruik vir opdragte wat nie in Moodle gedoen word nie. Studente sien 'n beskrywing van die opdrag, maar hoef nie enige lêers elektronies in te handig nie. Onderwysers kan wel punte toeken aan opdragte, en dan vir studente kennisgewing gee van hulle punte.

        -

        Handig 'n lêer elektronies in - met die tipe opdrag moet die studente 'n lêer(van enige tipe) elektronies inhandig. Dit kan Word dokumente wees, 'n prent, 'n web blad, of enige iets wat jy vra. Onderwysers kan die opdrag merk in 'n gekoppelde omgewing.

        \ No newline at end of file +

        Opdrag Tipe

        + +

        Daar is 'n paar verskillende opdrag tipes

        + +

        Ongekoppelde aktiwiteit - word gebruik vir opdragte wat nie in Moodle +gedoen word nie. Studente sien 'n beskrywing van die opdrag, maar hoef nie enige +lêers elektronies in te handig nie. Onderwysers kan wel punte toeken aan +opdragte, en dan vir studente kennisgewing gee van hulle punte. + +

        Handig 'n lêer elektronies in - met die tipe opdrag moet die studente +'n lêer(van enige tipe) elektronies inhandig. Dit kan Word dokumente wees, 'n +prent, 'n web blad, of enige iets wat jy vra. Onderwysers kan die opdrag merk in +'n gekoppelde omgewing. \ No newline at end of file diff --git a/lang/af/help/assignment/resubmit.html b/lang/af/help/assignment/resubmit.html index 4c738349832..8296b47c753 100644 --- a/lang/af/help/assignment/resubmit.html +++ b/lang/af/help/assignment/resubmit.html @@ -1 +1,10 @@ -

        Herinlewering van opdragte

        Studente kan nie opdragte weer inlewer as die Onderwyser dit eers gemerk het nie. Maar die stelling kan verander word.

        Gebruik die opsie om studente toe te laat om opdragte weer in te lewer na dat hulle opdragte klaar gemerk is. Dan kan hulle opdrag weer gemerk word. Die onderwyser kan so studente aanmoedig om te verbeter op hulle vorige poging.

        Die opsie is nie beskikbaar vir ongekoppelde opdragte nie.

        \ No newline at end of file +

        Herinlewering van opdragte

        + +

        Studente kan nie opdragte weer inlewer as die Onderwyser dit eers gemerk het +nie. Maar die stelling kan verander word.

        + +

        Gebruik die opsie om studente toe te laat om opdragte weer in te lewer na dat +hulle opdragte klaar gemerk is. Dan kan hulle opdrag weer gemerk word. Die +onderwyser kan so studente aanmoedig om te verbeter op hulle vorige poging.

        + +

        Die opsie is nie beskikbaar vir ongekoppelde opdragte nie.

        diff --git a/lang/af/help/choice/options.html b/lang/af/help/choice/options.html index 928a928d96f..02930e5a843 100644 --- a/lang/af/help/choice/options.html +++ b/lang/af/help/choice/options.html @@ -1,3 +1,6 @@ -

        Keuse Vrae

        -

        Spesifiseer hier die opsies waarvan lesers kan kies.

        -

        Jy kan enige hoeveelheid van die opsies kies: dit is nie nodig om al 6 opsies in te vul nie, party kan oopgelos word.

        \ No newline at end of file +

        Keuse Vrae

        + +

        Spesifiseer hier die opsies waarvan lesers kan kies. + +

        Jy kan enige hoeveelheid van die opsies kies: dit is nie nodig om al 6 opsies +in te vul nie, party kan oopgelos word. \ No newline at end of file diff --git a/lang/af/help/coursecategory.html b/lang/af/help/coursecategory.html index 3e12cf59f71..476ba11fb32 100644 --- a/lang/af/help/coursecategory.html +++ b/lang/af/help/coursecategory.html @@ -1 +1,10 @@ -

        Kursus Kategorieë

        Jou Moodle administrateur mag dalk 'n paar kursus kategorieë opgestel het.

        Byvoorbeeld: "Wetenskap", "Wiskunde", "Ekonomie", ens.

        Kies die kategorie wat by jou kursus pas. Die keuse sal bepaal waar jou kursus in die kursus lys vertoon sal word, dit kan jou studente help om makliker jou kursus te kry.

        \ No newline at end of file +

        Kursus Kategorieë

        + +

        Jou Moodle administrateur mag dalk 'n paar kursus kategorieë + opgestel het. + +

        Byvoorbeeld: "Wetenskap", "Wiskunde", "Ekonomie", ens. + +

        Kies die kategorie wat by jou kursus pas. Die keuse sal bepaal + waar jou kursus in die kursus lys vertoon sal word, dit kan jou studente help om + makliker jou kursus te kry. diff --git a/lang/af/help/courseformats.html b/lang/af/help/courseformats.html index 58d3d22435e..a5cccd5867d 100644 --- a/lang/af/help/courseformats.html +++ b/lang/af/help/courseformats.html @@ -1 +1,25 @@ -

        Moodle Kursus Formaat

        Weeklikse formaat

          Die kursus materiaal word opgedeel in weke, met duidelike begin en eind-datums. Elke week bestaan uit aktiwitieite . Party aktiwiteite , soos joernale, het 'oop vensters' van byvoorbeeld twee weke waarna hulle toe sal gaan en nie meer beskikbaar wees nie.

        Onderwerp formaat

          Baie dieselfde as weeklikse formaat, behalwe dat elke week dan as 'n onderwerp beskou word. 'n Onderwerp het geen tyd limiet nie. Jy hoef geen datums te spesifiseer nie.

        Sosiale formaat

          In die formaat word alles gesentreer om een hoof forum, die Sosiale forum, wat gelys word op die hoofbladsy. Dit is bruikbaar in 'n informele situasie. Dit is dalk selfs nie 'n kursus nie. Dit kan byvoorbeeld, gebruik word as 'n kennisgewingbord.
        \ No newline at end of file +

        Moodle Kursus Formaat

        + +

        Weeklikse formaat

        +
          +Die kursus materiaal word opgedeel in weke, met duidelike begin en eind-datums. +Elke week bestaan uit aktiwitieite . Party aktiwiteite , soos joernale, het 'oop +vensters' van byvoorbeeld twee weke waarna hulle toe sal gaan en nie meer +beskikbaar wees nie. +
        + +

        Onderwerp formaat

        +
          +Baie dieselfde as weeklikse formaat, behalwe dat elke week dan as 'n onderwerp +beskou word. 'n Onderwerp het geen tyd limiet nie. Jy hoef geen datums te +spesifiseer nie. +
        + +

        Sosiale formaat

        +
          +In die formaat word alles gesentreer om een hoof forum, die Sosiale forum, wat +gelys word op die hoofbladsy. Dit is bruikbaar in 'n informele situasie. Dit is +dalk selfs nie 'n kursus nie. Dit kan byvoorbeeld, gebruik word as 'n +kennisgewingbord. +
        + diff --git a/lang/af/help/coursefullname.html b/lang/af/help/coursefullname.html index a8ecd81862b..d0db05104fb 100644 --- a/lang/af/help/coursefullname.html +++ b/lang/af/help/coursefullname.html @@ -1 +1,5 @@ -

        Kursus Vol Naam

        Die volle naam van die kursus word bo-aan die bladsy vertoon en in die kursus lys .

        \ No newline at end of file +

        Kursus Vol Naam

        + +

        Die volle naam van die kursus word bo-aan die bladsy vertoon en in die kursus +lys .

        + diff --git a/lang/af/help/coursenewsitems.html b/lang/af/help/coursenewsitems.html index a948d65ccd0..704fed49e85 100644 --- a/lang/af/help/coursenewsitems.html +++ b/lang/af/help/coursenewsitems.html @@ -1,9 +1,11 @@ -

        Kursus Nuus Items

        -

        'n Spesiale forum met die naam "Nuus" kom voor in die -'weeklikse' en 'onderwerps' kursus formaat. Dit is 'n goeie plek om -kennisgewings te sit vir alle studente om te sien. (Alle studente -is outomaties ingeskryf by die forum, en sal kennisgewings deur -email ontvang.)

        -

        Die stelling bepaal hoeveel onlangse items op die kursus -hoofblad vertoon sal word, in die nuus area aan die regterkant.

        -

        As jy dit na "0" stel sal die nuus area nie verskyn nie.

        \ No newline at end of file +

        Kursus Nuus Items

        + +

        'n Spesiale forum met die naam "Nuus" kom voor in die 'weeklikse' +en 'onderwerps' kursus formaat. Dit is 'n goeie plek om kennisgewings te sit vir +alle studente om te sien. (Alle studente is outomaties ingeskryf by die forum, +en sal kennisgewings deur email ontvang.) + +

        Die stelling bepaal hoeveel onlangse items op die kursus hoofblad vertoon sal +word, in die nuus area aan die regterkant. + +

        As jy dit na "0" stel sal die nuus area nie verskyn nie. \ No newline at end of file diff --git a/lang/af/help/coursenumsections.html b/lang/af/help/coursenumsections.html index f3b0ce77d15..99abda3add3 100644 --- a/lang/af/help/coursenumsections.html +++ b/lang/af/help/coursenumsections.html @@ -1,9 +1,12 @@ -

        Kursus se hoeveelheid Onderwerpe/Weke

        -

        Die stelling word slegs gebruik deur die 'weeklikse' en -'onderwerp' kursus formaat.

        -

        In die 'weeklikse' formaat, spesifiseer hoeveel weke die kursus -lank is vanaf die aanvangs datum.

        -

        In die 'onderwerp'  formaat, spesifiseer dit die aantal -onderwerpe.

        -

        Dit sal as die aantal areas ("bokse") in die middel van die -skerm vertoon word.

        \ No newline at end of file +

        Kursus se hoeveelheid Onderwerpe/Weke

        + +

        Die stelling word slegs gebruik deur die 'weeklikse' en 'onderwerp' kursus +formaat. + +

        In die 'weeklikse' formaat, spesifiseer hoeveel weke die +kursus lank is vanaf die aanvangs datum. + +

        In die 'onderwerp'  formaat, spesifiseer dit die aantal onderwerpe. + +

        Dit sal as die aantal areas ("bokse") in die middel van die skerm +vertoon word. \ No newline at end of file diff --git a/lang/af/help/courserecent.html b/lang/af/help/courserecent.html index 7e6e1751d82..ebcae1b746d 100644 --- a/lang/af/help/courserecent.html +++ b/lang/af/help/courserecent.html @@ -1,5 +1,13 @@ -

        Onlangse Aktiwiteite

        -

        Moodle kan "onlangse aktiwiteite" op die kursus hoofblad vertoon.

        -

        Dit wys alles wat in die kursus gebeur het sedert die persoon laas by die kursus ingeteken het, soos nuwe pos, nuwe gebruikers, joernale ens.

        -

        Dit word aanbeveel dat jy die stelling aansit vir jou kursus, want dit help om 'n gevoel te gee vir die aktiwiteite in die kursus. Dit help om 'n atmosfeer te skep van samewerking by al die deelnemers.

        -

        Vir 'n groot kursus wat baie gebruik word kan dit afgesit word omdat dit die vertoning van die hoofblad kan stadiger maak.

        \ No newline at end of file +

        Onlangse Aktiwiteite

        + +

        Moodle kan "onlangse aktiwiteite" op die kursus hoofblad vertoon. + +

        Dit wys alles wat in die kursus gebeur het sedert die persoon laas by die +kursus ingeteken het, soos nuwe pos, nuwe gebruikers, joernale ens. + +

        Dit word aanbeveel dat jy die stelling aansit vir jou kursus, want dit help +om 'n gevoel te gee vir die aktiwiteite in die kursus. Dit help om 'n atmosfeer +te skep van samewerking by al die deelnemers. + +

        Vir 'n groot kursus wat baie gebruik word kan dit afgesit word omdat dit die +vertoning van die hoofblad kan stadiger maak. \ No newline at end of file diff --git a/lang/af/help/courseshortname.html b/lang/af/help/courseshortname.html index ae36706a893..498bf54377b 100644 --- a/lang/af/help/courseshortname.html +++ b/lang/af/help/courseshortname.html @@ -1 +1,7 @@ -

        Kort Kursus Naam

        Baie institusies verwys na hulle kursusse met 'n kort naam, soos BP102 of COMMS. Al het jy nog nie 'n naam vir jou kursus nie, dink een hier uit. Dit gaan op verskeie plekke gebruik word waar die lang naam nie gepas is nie (soos in die onderwerp lyn van 'n email).

        \ No newline at end of file +

        Kort Kursus Naam

        + +

        Baie institusies verwys na hulle kursusse met 'n kort naam, soos + BP102 of COMMS. Al het jy nog nie 'n naam vir jou kursus nie, dink een hier +uit. Dit gaan op verskeie plekke gebruik word waar die lang naam nie gepas is +nie (soos in die onderwerp lyn van 'n email).

        + diff --git a/lang/af/help/coursestartdate.html b/lang/af/help/coursestartdate.html index b7b9a6b3f7f..4e02e8ee1a1 100644 --- a/lang/af/help/coursestartdate.html +++ b/lang/af/help/coursestartdate.html @@ -1,6 +1,16 @@ -

        Kursus Begin Datum

        -

        Hier spesifiseer jy die begin datum van die kursus (in jou eie tyd sone).

        -

        As jy 'n 'weeklikse' kursus formaat gebruik, sal dit die vertoning van die weke affekteer. Die eerste week sal begin op die datum wat jy hier spesifiseer.

        -

        Die stelling sal geen effek hê nie op kursusse wat die  'sosiale' of  'onderwerp' formaat gebruik.

        -

        Dit sal die vertoning van 'log' inskrywings affekteer, omdat die datum gebruik sal word vir die vroegste moontlike datum waarop aktiwiteite vertoon kan word.

        -

        In die algemeen maak dit sin om die datum te stel na die regte begin datum van jou kursus, maak nie saak watter kursus formaat jy gebruik nie.

        \ No newline at end of file +

        Kursus Begin Datum

        + +

        Hier spesifiseer jy die begin datum van die kursus (in jou eie tyd sone). + +

        As jy 'n 'weeklikse' kursus formaat gebruik, sal dit die vertoning van die +weke affekteer. Die eerste week sal begin op die datum wat jy hier spesifiseer. + +

        Die stelling sal geen effek hê nie op kursusse wat die  'sosiale' of  +'onderwerp' formaat gebruik. + +

        Dit sal die vertoning van 'log' inskrywings affekteer, omdat die datum +gebruik sal word vir die vroegste moontlike datum waarop aktiwiteite vertoon kan +word. + +

        In die algemeen maak dit sin om die datum te stel na die regte begin datum +van jou kursus, maak nie saak watter kursus formaat jy gebruik nie. \ No newline at end of file diff --git a/lang/af/help/emoticons.html b/lang/af/help/emoticons.html index c793f0c877f..f0941651f34 100644 --- a/lang/af/help/emoticons.html +++ b/lang/af/help/emoticons.html @@ -1 +1,122 @@ -

        Using Smilies (emoticons)

        - +
        smile :-)
        big grin :-D
        wink ;-)
        mixed :-/
        thoughtful V-.
        tongue out :-P
        cool B-)
        approve ^-)
        wide eyes 8-)
        surprise 8-o
        sad :-(
        shy 8-.
        blush :-I
        kisses :-X
        clown :o)
        black eye P-|
        angry 8-[
        dead xx-P
        sleepy |-.
        evil }-]

        Dit is nie altyd moontlik om jou emosies uit te druk in gewone teks nie. Die ikone kan help.

        Om die ikoon in jou teks te sit: klik net op die ikoon hierbo, of tik net die verwante teks kode direk in jou teks in.

        Let wel: die kodes is self soos klein prentjies - draai net jou kop links om na hulle te kyk.

        \ No newline at end of file +

        Using Smilies (emoticons)

        + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        smile:-)
        big grin:-D
        wink;-)
        mixed:-/
        thoughtfulV-.
        tongue out:-P
        coolB-)
        approve^-)
        wide eyes8-)
        surprise8-o
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        sad:-(
        shy8-.
        blush:-I
        kisses:-X
        clown:o)
        black eyeP-|
        angry8-[
        deadxx-P
        sleepy|-.
        evil}-]
        +
        + +

        Dit is nie altyd moontlik om jou emosies uit te druk in gewone teks nie. Die +ikone kan help. + +

        Om die ikoon in jou teks te sit: klik net op die ikoon hierbo, of tik net die +verwante teks kode direk in jou teks in.

        + +

        Let wel: die kodes is self soos klein prentjies - draai net jou kop links om +na hulle te kyk.

        + diff --git a/lang/af/help/enrolmentkey.html b/lang/af/help/enrolmentkey.html index 4f6e53b4ca7..a6419631962 100644 --- a/lang/af/help/enrolmentkey.html +++ b/lang/af/help/enrolmentkey.html @@ -1,6 +1,17 @@ -

        Kursus Registrasie Sleutel

        -

        'n Kursus registrasie sleutel hou ongewenste mense uit jou kursus.

        -

        As jy dit oop los, kan enige iemand met 'n Moodle gebruiksnaam op die webblad by die kursus inskryf deur slegs daar in te gaan.

        -

        As jy iets hier insit, dan sal studente wat vir die eerste keer hier wil in gaan gevra word vir die woord of sin (hulle sal net een keer gevra word).

        -

        Die idee is dat jy aan gemagtigde persone die sleutel sal gee deur private email, gewone pos, oor die telefoon of selfs woordeliks in die klas.

        -

        As die wagwoord 'uit kom' en ongewenste mense skryf in by die kursus, kan jy hulle inskrywings kanselleer (op hulle gebruikers profiel bladsy) en die sleutel verander. Regmatige studente sal nie geaffekteer word nie, ongewenste mense sal nie weer kan in kom nie.

        \ No newline at end of file +

        Kursus Registrasie Sleutel

        + +

        'n Kursus registrasie sleutel hou ongewenste mense uit jou kursus. + +

        As jy dit oop los, kan enige iemand met 'n Moodle gebruiksnaam op die webblad +by die kursus inskryf deur slegs daar in te gaan. + +

        As jy iets hier insit, dan sal studente wat vir die eerste keer hier wil in +gaan gevra word vir die woord of sin (hulle sal net een keer gevra word). + +

        Die idee is dat jy aan gemagtigde persone die sleutel sal gee deur private email, +gewone pos, oor die telefoon of selfs woordeliks in die klas. + +

        As die wagwoord 'uit kom' en ongewenste mense skryf in by die kursus, kan jy +hulle inskrywings kanselleer (op hulle gebruikers profiel bladsy) en die sleutel +verander. Regmatige studente sal nie geaffekteer word nie, ongewenste mense sal +nie weer kan in kom nie. \ No newline at end of file diff --git a/lang/af/help/forum/allowdiscussions.html b/lang/af/help/forum/allowdiscussions.html index 10e14523908..cec2a84ab96 100644 --- a/lang/af/help/forum/allowdiscussions.html +++ b/lang/af/help/forum/allowdiscussions.html @@ -1,5 +1,16 @@ -

        Laat nuwe pos toe

        -

        Die opsie kan studente beperk om nuwe pos op die forum te sit.

        -

        Vir meeste forums sal jy studente onbeperk toelaat om nuwe pos("threads") by te sit, en ook terugvoer te lewer op pos.

        -

        Maar party keer sal jy hulle wil beperk. Byvoorbeeld, die Nuus forum laat slegs onderwysers toe om pos by te sit wat op die hoof blad van die kursus sal verskyn. Kies in die geval die derde opsie  "Geen bersprekings, geen terugvoer".

        -

        Party keer wil jy hê dat net onderwysers besprekings kan begin, maar wil hê dat studente kan terugvoer lewer (byvoorbeeld in die Nuus forum op die hoof blad). Kies in die geval die tweede opsie, "Geen besprekings, maar terugvoer word toegelaat".

        \ No newline at end of file +

        Laat nuwe pos toe

        + +

        Die opsie kan studente beperk om nuwe pos op die forum te sit. + +

        Vir meeste forums sal jy studente onbeperk toelaat om nuwe +pos("threads") by te sit, en ook terugvoer te lewer op pos. + +

        Maar party keer sal jy hulle wil beperk. Byvoorbeeld, die Nuus forum laat +slegs onderwysers toe om pos by te sit wat op die hoof blad van die kursus sal +verskyn. Kies in die geval die derde opsie  "Geen bersprekings, geen +terugvoer". + +

        Party keer wil jy hê dat net onderwysers besprekings kan begin, maar wil hê +dat studente kan terugvoer lewer (byvoorbeeld in die Nuus forum op die hoof +blad). Kies in die geval die tweede opsie, "Geen besprekings, maar +terugvoer word toegelaat". \ No newline at end of file diff --git a/lang/af/help/forum/attachment.html b/lang/af/help/forum/attachment.html index 4802dba9c1c..9a07145de76 100644 --- a/lang/af/help/forum/attachment.html +++ b/lang/af/help/forum/attachment.html @@ -1,6 +1,16 @@ -

        Aangehegte stukke saam met pos op 'n forum

        -

        Jy kan 'n lêer aanheg by enige posstuk in die forum. Die lêer word op die bediener saam met jou pos gestoor.

        -

        Gebruik dit om 'n foto te wys of 'n Word dokument.

        -

        Die lêer kan van enige tipe wees, dit word aanbeveel dat jy die lêer 'n naam gee wat eindig met die standaard drie letter agtervoegsel, .doc vir 'n Word dokument, .jpg of .png vir 'n prent, ens. Dit sal dit makliker maak vir ander mense om jou aangehegte stukke te sien in hulle "browsers".

        -

        As jy pos redigeer en 'n nuwe lêer aanheg, sal dit die vorige lêer vervang.

        -

        As jy pos redigeer en jy sit nie 'n nuwe lêer by nie, sal die oorspronklike lêer gehou word.

        \ No newline at end of file +

        Aangehegte stukke saam met pos op 'n forum

        + +

        Jy kan 'n lêer aanheg by enige posstuk in die forum. Die lêer word op die +bediener saam met jou pos gestoor. + +

        Gebruik dit om 'n foto te wys of 'n Word dokument. + +

        Die lêer kan van enige tipe wees, dit word aanbeveel dat jy die lêer 'n +naam gee wat eindig met die standaard drie letter agtervoegsel, .doc vir 'n Word +dokument, .jpg of .png vir 'n prent, ens. Dit sal dit makliker maak vir ander +mense om jou aangehegte stukke te sien in hulle "browsers". + +

        As jy pos redigeer en 'n nuwe lêer aanheg, sal dit die vorige lêer vervang. + +

        As jy pos redigeer en jy sit nie 'n nuwe lêer by nie, sal die oorspronklike +lêer gehou word. \ No newline at end of file diff --git a/lang/af/help/forum/forumtype.html b/lang/af/help/forum/forumtype.html index f32256ab337..b90ef6acf51 100644 --- a/lang/af/help/forum/forumtype.html +++ b/lang/af/help/forum/forumtype.html @@ -1,6 +1,16 @@ -

        Forum Tipes

        -

        Daar is 'n paar verskillende forum tipes:

        -

        'n Eenvoudige bespreking - is slegs een onderwerp, op een bladsy. Gebruik dit vir 'n kort bespreking.

        -

        Standaard forum vir algemene gebruikers - dit is 'n oop forum waar enige iemand 'n bespreking kan begin. Gebruik dit vir 'n algemene forum.

        -

        Elke persoon pos een bespreking - Elke persoon kan een bespreking begin(enige iemand kan terugvoer lewer). Gebruik dit om studente te laat reflekteer oor die week/onderwerp wat verby is, en kry dan almal se terugvoer hieroor.

        -

        (Meer nog in toekomstige Moodle weergawes)

        \ No newline at end of file +

        Forum Tipes

        + +

        Daar is 'n paar verskillende forum tipes: + +

        'n Eenvoudige bespreking - is slegs een onderwerp, op een bladsy. +Gebruik dit vir 'n kort bespreking. + +

        Standaard forum vir algemene gebruikers - dit is 'n oop forum waar +enige iemand 'n bespreking kan begin. Gebruik dit vir 'n algemene forum. + +

        Elke persoon pos een bespreking - Elke persoon kan een bespreking +begin(enige iemand kan terugvoer lewer). Gebruik dit om studente te laat +reflekteer oor die week/onderwerp wat verby is, en kry dan almal se terugvoer +hieroor. + +

        (Meer nog in toekomstige Moodle weergawes) \ No newline at end of file diff --git a/lang/af/help/forum/ratings.html b/lang/af/help/forum/ratings.html index 57e685fe1ce..4a7a9ad4d49 100644 --- a/lang/af/help/forum/ratings.html +++ b/lang/af/help/forum/ratings.html @@ -1,19 +1,55 @@ -Pos word geevalueer gebaseer op die teorie van geskeide en verbonde kennis. Die teorie kan jou help om menslike interaksie uit 'n ander oogpunt te sien. Dit beskryf 'n manier om dinge wat ons sien en hoor te evalueer en meer van te leer. Almal van ons gebruik die metodes in verskillende hoeveelhede op verskillende tye. Vir die voorbeeld word twee mense gebruik, Jim wat meestal geskeide kennis gebruik en Mary wat meestal verbonde kennis gebruik. -

          -
        • Jim hou daarvan om objektief te bly en probeer sy emosies en gevoelens uit die saak hou. As hy in 'n bespreking is met mense wat ander idees het, staan hy by sy standpunte, en probeer hy met logika foute in ander mense se redenasies kry. Hy is krities oor nuwe idees behalwe as dit 'n feit is van 'n betroubare bron soos 'n handboek, onderwyser of direkte ondervinding. Jim gebruik geskeide kennis.
        • -
        • Mary is baie sensitief teenoor ander mense se gevoelens. Sy luister en vra vrae totdat sy voel sy verstaan die ander persoon en kan die saak uit hulle oogpunt sien. Sy leer deur die ondervindings van ander mense te deel en hulle kennis wat hulle daar uit gekry het. Wanneer sy met ander praat vermy sy konfrontasie en sal die persoon probeer help as sy 'n manier kan sien om hulle te help met logiese voorstelle. Mary  gebruik verbonde kennis.
        • -
        -In die voorbeeld gebruik 'n man geskeide kennis en 'n vrou gebruik verbonde kennis. 'n Paar navorsings projekte het gevind dat dit statisties meeste die geval is, maar individuele persone kan enige plek op die spektrum lê tussen die twee uiterstes. Vir 'n groep wat effektief saamwerk is dit belangrik dat almal al twee metodes kan gebruik. 'n Persoon kan karaktertrekke van  enige twee metodes openbaar(of selfs beide) in, byvoorbeeld, pos op 'n forum. Die doel van die evaluering van elke posstuk is: -
        a) om jou te help dink oor die onderwerp terwyl jy pos lees b)vir die skrywer terugvoer te lewer oor hoe ander mense hulle sien
        -Die resultate word nie gebruik om studente te evalueer nie maar slegs om kommunikasie te verbeter. -
        -Vind meer uit oor die teorieë: -
          -
        • 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, NY: Basic Books.
        • -
        • Clinchy, B.M. (1989a). The development of thoughtfulness in college women: Integrating reason and care. American Behavioural Scientist, 32(6), 647-657.
        • -
        • Clinchy, B.M. (1989b). On critical thinking & connected knowing. Liberal education, 75(5), 14-19.
        • -
        • Clinchy, B.M. (1996). Connected and separate knowing; Toward a marriage of two minds. In N.R. Goldberger, Tarule, J.M., Clinchy, B.M. &
        • -
        • Belenky, M.F. (Eds.), Knowledge, Difference, and Power; Essays inspired by “Women’s Ways of Knowing” (pp. 205-247). New York, NY: Basic Books.
        • -
        • 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.
        • -
        • 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.
        • -
        \ No newline at end of file +Pos word geevalueer gebaseer op die teorie van geskeide en verbonde +kennis. + +Die teorie kan jou help om menslike interaksie uit 'n ander oogpunt te sien. +Dit beskryf 'n manier om dinge wat ons sien en hoor te evalueer en meer van te +leer. + +Almal van ons gebruik die metodes in verskillende hoeveelhede op verskillende +tye. Vir die voorbeeld word twee mense gebruik, Jim wat meestal geskeide kennis +gebruik en Mary wat meestal verbonde kennis gebruik. +
          +
        • Jim hou daarvan om objektief te bly en probeer sy emosies en gevoelens uit + die saak hou. As hy in 'n bespreking is met mense wat ander idees het, staan + hy by sy standpunte, en probeer hy met logika foute in ander mense se + redenasies kry. Hy is krities oor nuwe idees behalwe as dit 'n feit + is van 'n betroubare bron soos 'n handboek, onderwyser of direkte + ondervinding. Jim gebruik geskeide kennis. +
        • +
        • Mary is baie sensitief teenoor ander mense se gevoelens. Sy luister en vra + vrae totdat sy voel sy verstaan die ander persoon en kan die saak uit + hulle oogpunt sien. Sy leer deur die ondervindings van ander mense te + deel en hulle kennis wat hulle daar uit gekry het. Wanneer sy met ander + praat vermy sy konfrontasie en sal die persoon probeer help as sy 'n manier + kan sien om hulle te help met logiese voorstelle. Mary  gebruik verbonde + kennis.
        • +
        +In die voorbeeld gebruik 'n man geskeide kennis en 'n vrou gebruik verbonde +kennis. 'n Paar navorsings projekte het gevind dat dit statisties meeste die +geval is, maar individuele persone kan enige plek op die spektrum lê tussen die +twee uiterstes. +Vir 'n groep wat effektief saamwerk is dit belangrik dat almal al twee +metodes kan gebruik. +'n Persoon kan karaktertrekke van  enige twee metodes openbaar(of selfs +beide) in, byvoorbeeld, pos op 'n forum. Die doel van die evaluering van elke +posstuk is: +
        +a) om jou te help dink oor die onderwerp terwyl jy pos lees +b)vir die skrywer terugvoer te lewer oor hoe ander mense hulle sien +
        + +Die resultate word nie gebruik om studente te evalueer nie maar slegs om +kommunikasie te verbeter. +
        + +Vind meer uit oor die teorieë: +
          +
        • 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, NY: Basic Books.
        • +
        • Clinchy, B.M. (1989a). The development of thoughtfulness in college women: Integrating reason and care. American Behavioural Scientist, 32(6), 647-657.
        • +
        • Clinchy, B.M. (1989b). On critical thinking & connected knowing. Liberal education, 75(5), 14-19.
        • +
        • Clinchy, B.M. (1996). Connected and separate knowing; Toward a marriage of two minds. In N.R. Goldberger, Tarule, J.M., Clinchy, B.M. &
        • +
        • Belenky, M.F. (Eds.), Knowledge, Difference, and Power; Essays inspired by “Women’s Ways of Knowing” (pp. 205-247). New York, NY: Basic Books.
        • +
        • 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.
        • +
        • 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.
        • +
        + diff --git a/lang/af/help/forum/subscription.html b/lang/af/help/forum/subscription.html index 6eaadb5526e..ff7ffc3a8bc 100644 --- a/lang/af/help/forum/subscription.html +++ b/lang/af/help/forum/subscription.html @@ -1,6 +1,12 @@ -

        Forum Inskrywings

        -

        As 'n persoon ingeskryf is op 'n forum sal hulle 'n email kopie kry van alle posstukke op die forum (pos word omtrent na -maxeditingtime/60 ?> minute gestuur).

        -

        Mense kan gewoonlik kies of hulle ingeskryf wil wees op 'n forum of nie.

        -

        Maar 'n onderwyser kan kies om alle kursus deelnemers in te skryf.

        -

        Dit is baie handig vir nuus forums en forums aan die begin van die kursus (voordat almal agtergekom het dat hulle self op die forums kan inskryf).

        \ No newline at end of file +

        Forum Inskrywings

        + +

        As 'n persoon ingeskryf is op 'n forum sal hulle 'n email kopie kry van alle +posstukke op die forum (pos word omtrent na maxeditingtime/60 ?> +minute gestuur). + +

        Mense kan gewoonlik kies of hulle ingeskryf wil wees op 'n forum of nie. + +

        Maar 'n onderwyser kan kies om alle kursus deelnemers in te skryf. + +

        Dit is baie handig vir nuus forums en forums aan die begin van die kursus +(voordat almal agtergekom het dat hulle self op die forums kan inskryf). \ No newline at end of file diff --git a/lang/af/help/guestaccess.html b/lang/af/help/guestaccess.html index e661e9f16a6..187071c78f9 100644 --- a/lang/af/help/guestaccess.html +++ b/lang/af/help/guestaccess.html @@ -1,6 +1,18 @@ -

        Gas Toegang

        -

        Jy het die keuse om gaste toe te laat tot jou kursus of nie toe te laat nie.

        -

        Mense kan as gaste in teken met die  "Teken in as 'n gas" knoppie op die in teken bladsy.

        -

        Gaste het ALTYD  "lees-alleen" toegang - hulle kan nie pos stuur nie of aan die kursus verander nie.

        -

        Jy kan dit gebruik om toegang te gee vir 'n kollega, of 'n student kan na die kursus kyk voor hulle besluit om in te skryf.

        -

        Jy het die keuse tussen twee tipes gas toegang: met of sonder registrasie sleutel. As jy gaste toelaat met die sleutel, dan sal die gaste die sleutel moet voorsien ELKE keer as hulle in teken (studente hoef dit net een keer te voorsien). Dit laat jou toe om gas toegang te beheer. As jy kies om gaste toegang te gee sonder 'n sleutel kan enige iemand toegang kry tot jou kursus.

        \ No newline at end of file +

        Gas Toegang

        + +

        Jy het die keuse om gaste toe te laat tot jou kursus of nie toe te laat nie. + +

        Mense kan as gaste in teken met die  "Teken in as 'n gas" +knoppie op die in teken bladsy. + +

        Gaste het ALTYD  "lees-alleen" toegang - hulle kan nie pos +stuur nie of aan die kursus verander nie. + +

        Jy kan dit gebruik om toegang te gee vir 'n kollega, of 'n student kan na die +kursus kyk voor hulle besluit om in te skryf. + +

        Jy het die keuse tussen twee tipes gas toegang: met of sonder registrasie +sleutel. As jy gaste toelaat met die sleutel, dan sal die gaste die sleutel moet +voorsien ELKE keer as hulle in teken (studente hoef dit net een keer te +voorsien). Dit laat jou toe om gas toegang te beheer. As jy kies om gaste +toegang te gee sonder 'n sleutel kan enige iemand toegang kry tot jou kursus. \ No newline at end of file diff --git a/lang/af/help/html.html b/lang/af/help/html.html index fbdd4dbb418..71b995b6b5d 100644 --- a/lang/af/help/html.html +++ b/lang/af/help/html.html @@ -1 +1,13 @@ -

        Hoe om in HTML te skryf

        Wanneer jy  HTML gebruik in Moodle, kan jy enige HTML tags gebruik om enige effek te kry wat jy wil.

        Jou kode sal normaal vertoon word in 'n skerm in 'n tabel sel, dus:

        • jy hoef nie <HEAD> of <BODY> tags te gebruik nie
        • wees versigtig vir  </TABLE> tags wat nie pas nie, aangesien dit jou vertoning kan deurmekaar maak.
        \ No newline at end of file +

        Hoe om in HTML te skryf

        + +

        Wanneer jy  HTML gebruik in Moodle, kan jy enige HTML tags gebruik om +enige effek te kry wat jy wil. + +

        Jou kode sal normaal vertoon word in 'n skerm in 'n tabel sel, dus: + +

          +
        • jy hoef nie <HEAD> of <BODY> tags te gebruik nie +
        • wees versigtig vir  </TABLE> tags wat nie pas nie, aangesien dit + jou vertoning kan deurmekaar maak. +
        + diff --git a/lang/af/help/langedit.html b/lang/af/help/langedit.html index 96733258b6c..bdd4cb63ce7 100644 --- a/lang/af/help/langedit.html +++ b/lang/af/help/langedit.html @@ -1,5 +1,12 @@ -

        Taal Redigeering

        -

        Om tale te redigeer op die bladsy moet die lêers skryfbaar wees deur 'n web bediener proses.

        -

        By party stringe sal jy 'n $a en 'n $a->something sien.

        -

        Dit is veranderlikes wat vervang sal word deur ander woorde of name in Moodle.

        -

        As daar net een veranderlike is, word $a gebruik. As daar twee of meer veranderlikes is kry elkeen 'n naam.

        \ No newline at end of file +

        Taal Redigeering

        + +

        Om tale te redigeer op die bladsy moet die lêers skryfbaar wees deur 'n web +bediener proses. + +

        By party stringe sal jy 'n $a en 'n $a->something sien. + +

        Dit is veranderlikes wat vervang sal word deur ander woorde of name in +Moodle. + +

        As daar net een veranderlike is, word $a gebruik. As daar twee of meer +veranderlikes is kry elkeen 'n naam. \ No newline at end of file diff --git a/lang/af/help/mods.html b/lang/af/help/mods.html index 50d3d60bf2d..e714b21e394 100644 --- a/lang/af/help/mods.html +++ b/lang/af/help/mods.html @@ -1 +1,66 @@ -

        Aktiwiteit Modules

        Moodle bevat 'n wye verskeidenheid aktiwiteits modules wat gebruik kan word om enige tipe kursus te bou.

        \ No newline at end of file +

        Aktiwiteit Modules

        + +

        Moodle bevat 'n wye verskeidenheid aktiwiteits modules wat gebruik kan word +om enige tipe kursus te bou.

        + +

         Forums

        +
          +

          Dit kan die belangrikste aktiwiteit wees - dit is hier wat die besprekings +plaasvind. + Forums kan op verskillende maniere gestruktureer word. Mede gebruikers van +die forum kan elke posstuk evalueer. Posstukke kan op verskillende maniere +gesien word, en kan aangehegte dokumente bevat. Deur op 'n forum in te skryf, +sal deelnemers alle posstukke op die forum ontvang in hulle email. 'n +Onderwyser kan alle studente forseer om ingeskryf te wees op 'n forum. +

        + +

         Joernale

        +
          +

          Die module kan 'n belangrike reflektiewe aktiwiteit wees. Die onderwyser kan +studente vra om oor 'n spesifieke onderwerp te skryf. Studente kan aan hulle +antwoord werk of redigeer oor 'n sekere tydperk. Die antwoord is privaat en kan +slegs deur die onderwyser gesien word, wat kan terugvoer lewer en 'n punt gee +vir die joernaal inskrywing. Een joernaal aktiwiteit per week is gewoonlik  +'n goeie idee.

          +
        + +

         Hulpbronne

        +
          +

          Hulpbronne is inhoud: inligting wat die onderwyser by die kursus wil voeg. Dit kan lêers wees op die bediener; bladsye wat in Moodle geredigeer is; +of eksterne web bladsye wat deel gemaak is van die kursus.

          +
        + +

         Opdragte

        +
          +

          Onderwysers kan opdragte gee wat deur die studente voorberei moet word (enige +formaat) en inlewer deur dit op die bediener te laai. Tipiese opdragte is opstelle, projekte, verslae ens. Die module het fasiliteite om die opdragte te +merk.

          +
        + +

         Toetse

        +
          +

          Die module laat die onderwyser toe om toetse op te stel, dit kan meervoudige +keuse vrae, waar/vals, en kort antwoord vrae wees. Die vrae word in kategorieë +in 'n databasis gehou,die vrae kan weer gebruik word in die kursus of ander +kursusse. Toetse kan verskeie pogings toelaat. Elke poging word outomaties +gemerk, die onderwyser kan terugvoer lewer of die korrekte antwoord wys. Die +module het fasiliteite om die toetse te merk.

          +
        + +

         Keuses

        +
          +

          Die keuse aktiwiteit is eenvoudig - die onderwyser vra 'n vraag en +spesifiseer 'n paar antwoorde as terugvoer. Dit laat die klas toe om te kies om +in 'n sekere rigting in te gaan; of om toestemming te gee vir iets. +

        + +

         Menings +Opnames

        +
          +

          Die Opname module bevat 'n paar opname instrumente wat handig is om dink werk +te stimuleer of om 'n opname in 'n gekoppelde omgewing te maak . Onderwysers kan +dit gebruik om data van hul studente bymekaar te maak wat hulle sal help om meer +te leer van hulle klas en onderwys metodes.

          +
        + + diff --git a/lang/af/help/picture.html b/lang/af/help/picture.html index 0c0b94ce7d9..578edea6b37 100644 --- a/lang/af/help/picture.html +++ b/lang/af/help/picture.html @@ -1,15 +1,28 @@ -

        Hoe om 'n prent op te laai

        -

        Jy kan 'n prent van jou rekenaar op laai na die bediener, die prent sal op 'n paar plekke gebruik word om jou voor te stel.

        -

        Jy kan enige prent gebruik wat jy wil.

        -

        Die foto moet  JPG of PNG formaat wees (die naam moet eindig met 'n .jpg of .png).

        -

        Daar is vier metodes om 'n prent lêer te kry:

        -
          -
        1. Met 'n digitale kamera, dan sal die foto waarskynlik klaar in die regte formaat wees.
        2. -
        3. Jy kan 'n skandeerder gebruik om 'n foto in te 'scan'. Stoor dit as JPG of PNG.
        4. -
        5. Jy kan selfs 'n prent met 'n verf program teken.
        6. -
        7. Jy kan beelde vanaf die internet 'steel'. http://images.google.com is 'n goeie plek om vir prente te soek. As jy een gevind het, regs klik op die prent en kies "Save this image..." van die kies lys (mag dalk verskillend gedoen word op verskillende rekenaars).
        8. -
        -

        Om die prent op te laai, klik die  "Browse" knoppie op die redigeer bladsy, en kies die prent op jou hardeskyf.

        -

        Let Wel: maak seker die prent is nie grootter as die maksimum toegelate groote nie - anders sal hy nie op gelaai word nie.

        -

        Klik "Verander profiel" onder aan die bladsy om die lêer te stoor.

        -

        Wanneer jy terug gaan na die profiel blad, mag dit dalk lyk of die prent nie gelaai is nie. Klik die  "Reload" knoppie in jou "browser".

        \ No newline at end of file +

        Hoe om 'n prent op te laai

        + +

        Jy kan 'n prent van jou rekenaar op laai na die bediener, die prent sal op 'n +paar plekke gebruik word om jou voor te stel. +

        Jy kan enige prent gebruik wat jy wil. +

        Die foto moet  JPG of PNG formaat wees (die naam moet eindig met 'n .jpg +of .png). +

        Daar is vier metodes om 'n prent lêer te kry: + +

          +
        1. Met 'n digitale kamera, dan sal die foto waarskynlik klaar in die regte + formaat wees. +
        2. Jy kan 'n skandeerder gebruik om 'n foto in te 'scan'. Stoor dit as JPG of PNG. +
        3. Jy kan selfs 'n prent met 'n verf program teken. +
        4. Jy kan beelde vanaf die internet 'steel'. http://images.google.com + is 'n goeie plek om vir prente te soek. As jy een gevind het, regs klik op die + prent en kies "Save this image..." van die kies lys (mag dalk verskillend + gedoen word op verskillende rekenaars). +
        + +

        Om die prent op te laai, klik die  "Browse" knoppie op die redigeer +bladsy, en kies die prent op jou hardeskyf. +

        Let Wel: maak seker die prent is nie grootter as die maksimum toegelate +groote nie - +anders sal hy nie op gelaai word nie. +

        Klik "Verander profiel" onder aan die bladsy om die lêer te stoor. +

        Wanneer jy terug gaan na die profiel blad, mag dit dalk lyk of die prent nie +gelaai is nie. Klik die  "Reload" knoppie in jou "browser". \ No newline at end of file diff --git a/lang/af/help/questions.html b/lang/af/help/questions.html index 6931931e2ba..0ca829c64af 100644 --- a/lang/af/help/questions.html +++ b/lang/af/help/questions.html @@ -1 +1,85 @@ -

        Vrae

        'n Goeie manier om mense te help dink is om hulle vrae te vra. 'n Goeie vraag kan ons baie help om inligting by mekaar te sit, ons bestaande idees te her-evalueer en nuwe idees te skep.

        Vrae wat gevra word om ander te help leer staan bekend as Socratiese  vrae.

        Met Socratiese vrae moet jy baie mooi na die ander persoon luister om jou vraag op 'n behulpsame manier op te stel.

        Hier is voorbeelde van sulke vrae:

        Vrae om 'n ander persoon beter te verstaan

        • Wat bedoel jy as jy sê ______?
        • Wat is jou hoof  punt?
        • Hoe vergelyk _____ met _____?
        • Kan jy dit op 'n ander manier stel?
        • Verstaan ek jou reg; het jy  _____ of _____ bedoel?
        • Hoe vergelyk dit met ons probleem/bespreking?
        • Jane, som op in jou eie woorde wat Richard gesê het? ... Richard, is dit wat jy bedoel het?
        • Kan jy vir my 'n voorbeeld gee?
        • Sal _____ 'n goeie voorbeeld wees van dit?

        Vrae oor wat die leerder aanvaar

        • Wat aanvaar jy hier?
        • Wat aanvaar Jenny?
        • Wat kan ons instede aanvaar?
        • Dit lyk of jy  _____ aanvaar. Verstaan ek jou reg?
        • Alle jou redenerings is gebaseer op die idee dat  _____. Hoekom  is dit gebaseer op  _____ in plaas van _____?
        • Dit lyk of jy  _____ aanvaar.
        • Is dit altyd die geval? Hoekom is dit die geval?
        • Hoekom sal enige iemand dit aanvaar dat  _____?

        Vrae oor redes en bewysstukke

        • Kan jy jou redes aan ons verduidelik?
        • Hoekom is dit so in die geval?
        • Is daar 'n rede om nie in die bewysstukke te glo nie?
        • Wie sal weet wat die waarheid is?
        • Wat sal jy aan iemand sê wat die stelling  ____ maak?
        • Kan iemand anders ook bewys lewer wat die stelling bevestig?
        • Hoe het jy tot die gevolgtrekking gekom?
        • Hoe kan ons uitvind of dit waar is?

        Vrae oor persoonlike standpunte

        • Wat impliseer jy daardeur?
        • Wanneer jy sê _____, impliseer jy  _____?
        • Maar as dit gebeur wat sal nog gebeur? Hoekom?
        • Watter effek sal dit hê?
        • Sal dit noodwendig gebeur of sal dit miskien gebeur?
        • Wat is 'n alternatief?
        • As _____ en  _____ die geval is, wat sal dan ook waar wees?
        • As ons sê dat _____ is dit eties, wat van _____?

        Vrae oor implikasies en nagevolge

        • Hoe kan ons uitvind?
        • Wat aanvaar die vraag?
        • Sal  _____ die vraag anders vra?
        • Hoe kan iemand die vraag afhandel?
        • Kan ons die vraag afbreek?
        • Is die vraag duidelik? Verstaan ons dit?
        • Is die vraag maklik of moeilik om te antwoord? Hoekom?
        • Stem ons saam dat dit die vraag is?
        • Om die vraag te beantwoord, watter vrae moet ons eers vra?
        • Hoe sal _____ die onderwerp stel?
        • Hoekom is die onderwerp belangrik?
        • Is dit die belangrikste vraag, of is daar 'n onderliggende vraag ?
        • Kan jy sien hoe dit betrekking het tot ________?

        Questions adapted from Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA.

        More info about writing

        More info about reading

        \ No newline at end of file +

        Vrae

        + +

        'n Goeie manier om mense te help dink is om hulle vrae te vra. 'n Goeie vraag +kan ons baie help om inligting by mekaar te sit, ons bestaande idees te +her-evalueer en nuwe idees te skep.

        + +

        Vrae wat gevra word om ander te help leer staan bekend as Socratiese  +vrae.

        + +

        Met Socratiese vrae moet jy baie mooi na die ander persoon luister om jou +vraag op 'n behulpsame manier op te stel. + +

        Hier is voorbeelde van sulke vrae:

        + + + +

        Vrae om 'n ander persoon beter te verstaan

        +
          +
        • Wat bedoel jy as jy sê ______?
        • +
        • Wat is jou hoof  punt?
        • +
        • Hoe vergelyk _____ met _____?
        • +
        • Kan jy dit op 'n ander manier stel?
        • +
        • Verstaan ek jou reg; het jy  _____ of _____ bedoel?
        • +
        • Hoe vergelyk dit met ons probleem/bespreking?
        • +
        • Jane, som op in jou eie woorde wat Richard gesê het? ... Richard, is dit + wat jy bedoel het?
        • +
        • Kan jy vir my 'n voorbeeld gee?
        • +
        • Sal _____ 'n goeie voorbeeld wees van dit?
        • +
        +

        Vrae oor wat die leerder aanvaar

        +
          +
        • Wat aanvaar jy hier?
        • +
        • Wat aanvaar Jenny?
        • +
        • Wat kan ons instede aanvaar?
        • +
        • Dit lyk of jy  _____ aanvaar. Verstaan ek jou reg?
        • +
        • Alle jou redenerings is gebaseer op die idee dat  _____. Hoekom  + is dit gebaseer op  _____ in plaas van _____?
        • +
        • Dit lyk of jy  _____ aanvaar.
        • +
        • Is dit altyd die geval? Hoekom is dit die geval?
        • +
        • Hoekom sal enige iemand dit aanvaar dat  _____?
        • +
        +

        Vrae oor redes en bewysstukke

        +
          +
        • Kan jy jou redes aan ons verduidelik?
        • +
        • Hoekom is dit so in die geval?
        • +
        • Is daar 'n rede om nie in die bewysstukke te glo nie?
        • +
        • Wie sal weet wat die waarheid is?
        • +
        • Wat sal jy aan iemand sê wat die stelling  ____ maak?
        • +
        • Kan iemand anders ook bewys lewer wat die stelling bevestig?
        • +
        • Hoe het jy tot die gevolgtrekking gekom?
        • +
        • Hoe kan ons uitvind of dit waar is?
        • +
        +

        Vrae oor persoonlike standpunte

        +
          +
        • Wat impliseer jy daardeur?
        • +
        • Wanneer jy sê _____, impliseer jy  _____?
        • +
        • Maar as dit gebeur wat sal nog gebeur? Hoekom?
        • +
        • Watter effek sal dit hê?
        • +
        • Sal dit noodwendig gebeur of sal dit miskien gebeur?
        • +
        • Wat is 'n alternatief?
        • +
        • As _____ en  _____ die geval is, wat sal dan ook waar wees?
        • +
        • As ons sê dat _____ is dit eties, wat van _____?
        • +
        +

        Vrae oor implikasies en nagevolge

        +
          +
        • Hoe kan ons uitvind?
        • +
        • Wat aanvaar die vraag?
        • +
        • Sal  _____ die vraag anders vra?
        • +
        • Hoe kan iemand die vraag afhandel?
        • +
        • Kan ons die vraag afbreek?
        • +
        • Is die vraag duidelik? Verstaan ons dit?
        • +
        • Is die vraag maklik of moeilik om te antwoord? Hoekom?
        • +
        • Stem ons saam dat dit die vraag is?
        • +
        • Om die vraag te beantwoord, watter vrae moet ons eers vra?
        • +
        • Hoe sal _____ die onderwerp stel?
        • +
        • Hoekom is die onderwerp belangrik?
        • +
        • Is dit die belangrikste vraag, of is daar 'n onderliggende vraag ?
        • +
        • Kan jy sien hoe dit betrekking het tot ________?
        • +
        + +
        +Questions adapted from Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA. + +

        +

        diff --git a/lang/af/help/quiz/attempts.html b/lang/af/help/quiz/attempts.html index 6826c19d7f9..fa0f9d7fa32 100644 --- a/lang/af/help/quiz/attempts.html +++ b/lang/af/help/quiz/attempts.html @@ -1,3 +1,6 @@ -

        Toets Pogings

        -

        Studente kan meer as een poging toegelaat word om 'n toets te doen.

        -

        Dit kan 'n toets meer van 'n opvoedkundige aktiwiteit maak in plaas van net 'n evaluasie.

        \ No newline at end of file +

        Toets Pogings

        + +

        Studente kan meer as een poging toegelaat word om 'n toets te doen. + +

        Dit kan 'n toets meer van 'n opvoedkundige aktiwiteit maak in plaas van net +'n evaluasie. \ No newline at end of file diff --git a/lang/af/help/quiz/categories.html b/lang/af/help/quiz/categories.html index bfa62ec008e..12c0a90d767 100644 --- a/lang/af/help/quiz/categories.html +++ b/lang/af/help/quiz/categories.html @@ -1,5 +1,13 @@ -

        Vrae Kategorieë

        -

        Eerder as om al jou vrae in een lang lys te hou, maak kategorieë om hulle in te plaas.

        -

        Elke kategorie het 'n naam en 'n kort beskrywing.

        -

        Elke kategorie kan ook gepubliseer word, dit beteken die kategorie (en al die vrae in dit) sal bekikbaar gestel word aan al die kursusse, sodat hulle jou vrae in hulle toetse kan gebruik.

        -

        Kategorieë kan geskep en uitgwis word soos jy wil . As jy 'n kategorie uitwis met vrae sal jy gevra word om die vrae na 'n ander kategorie te skuif.

        \ No newline at end of file +

        Vrae Kategorieë

        + +

        Eerder as om al jou vrae in een lang lys te hou, maak kategorieë om hulle in +te plaas. + +

        Elke kategorie het 'n naam en 'n kort beskrywing. + +

        Elke kategorie kan ook gepubliseer word, dit beteken die kategorie (en al die +vrae in dit) sal bekikbaar gestel word aan al die kursusse, sodat hulle jou vrae +in hulle toetse kan gebruik. + +

        Kategorieë kan geskep en uitgwis word soos jy wil . As jy 'n kategorie +uitwis met vrae sal jy gevra word om die vrae na 'n ander kategorie te skuif. \ No newline at end of file diff --git a/lang/af/help/quiz/correctanswers.html b/lang/af/help/quiz/correctanswers.html index d694ce1264d..b4a2e8be751 100644 --- a/lang/af/help/quiz/correctanswers.html +++ b/lang/af/help/quiz/correctanswers.html @@ -1 +1,5 @@ -

        Wys korrekte antwoorde

        As jy die stelling aansit, sal die regte antwoord vertoon word vir elke vraag (vertoon in 'n helder kleur).

        \ No newline at end of file +

        Wys korrekte antwoorde

        + +

        As jy die stelling aansit, sal die regte antwoord vertoon word vir elke vraag +(vertoon in 'n helder kleur). +

        diff --git a/lang/af/help/quiz/createmultiple.html b/lang/af/help/quiz/createmultiple.html index 103743808d3..7dad2e1b3e2 100644 --- a/lang/af/help/quiz/createmultiple.html +++ b/lang/af/help/quiz/createmultiple.html @@ -1 +1,8 @@ -

        Skep meer as een vraag

        Die bladsy  laat jou toe om meer as een vraag op 'n slag te skep.

        Op die oomblik laat dit jou net toe om 'n paar ' Random' vrae te skep en (opsioneel) by die toets te voeg.

        Die bladsy sal later meer funksionaliteit hê.

        \ No newline at end of file +

        Skep meer as een vraag

        + +

        Die bladsy  laat jou toe om meer as een vraag op 'n slag te skep.

        + +

        Op die oomblik laat dit jou net toe om 'n paar ' Random' vrae te skep en +(opsioneel) by die toets te voeg.

        + +

        Die bladsy sal later meer funksionaliteit hê.

        diff --git a/lang/af/help/quiz/feedback.html b/lang/af/help/quiz/feedback.html index e6db288f365..33e4844795f 100644 --- a/lang/af/help/quiz/feedback.html +++ b/lang/af/help/quiz/feedback.html @@ -1 +1,5 @@ -

        Terugvoer

        As jy die stelling aansit, sal die studente terugvoer ontvang op elke vraag (reg of verkeerd).

        \ No newline at end of file +

        Terugvoer

        + +

        As jy die stelling aansit, sal die studente terugvoer ontvang op elke vraag +(reg of verkeerd).

        + diff --git a/lang/af/help/quiz/grademethod.html b/lang/af/help/quiz/grademethod.html index a1b2cf1bbcd..d55f0f10ccd 100644 --- a/lang/af/help/quiz/grademethod.html +++ b/lang/af/help/quiz/grademethod.html @@ -1 +1,25 @@ -

        Evaluasie Metode

        Wanneer meer as een poging toegelaat word vir die toets, is daar 'n paar verskillende metodes om die student se finale punt uit te werk.

        Hoogste Punt

          Die finale punt is die hoogste punt van al die pogings.

        Gemiddelde punt

          Die finale punt is die gemiddeld van al die pogings.

        Eerste Punt

          Die finale punt is die punt van die eerste poging(ander pogings word ge-ignoreer).

        Laaste Punt

          Die finale punt is die laaste punt wat verkry is.

        \ No newline at end of file +

        Evaluasie Metode

        + +

        Wanneer meer as een poging toegelaat word vir die toets, is daar 'n paar +verskillende metodes om die student se finale punt uit te werk. + +

        Hoogste Punt

        +

          +

          Die finale punt is die hoogste punt van al die pogings. +

        + +

        Gemiddelde punt

        +

          +

          Die finale punt is die gemiddeld van al die pogings. +

        + +

        Eerste Punt

        +

          +

          Die finale punt is die punt van die eerste poging(ander pogings word +ge-ignoreer). +

        + +

        Laaste Punt

        +

          +

          Die finale punt is die laaste punt wat verkry is. +

        diff --git a/lang/af/help/quiz/import.html b/lang/af/help/quiz/import.html index 50d48e7ea9a..3e80d6da4ae 100644 --- a/lang/af/help/quiz/import.html +++ b/lang/af/help/quiz/import.html @@ -1 +1,49 @@ -

        Voer nuwe vrae in

        Die funksie laat jou toe om nuwe vrae in te voer vanaf eksterne teks lêers.

        Die volgende lêer formate word ondersteun:

        Verlore Woord

          Die formaat ondersteun net meervoudige keuse vrae. Elke antwoord word geskei deur 'n  tilde (~), en die korrekte antwoord het 'n '=' teken vooraan. Hier is 'n voorbeeld:

          Bokke is  {=herbivore ~karnivore ~omnivore}

          More info about the "Missing Word" format

        AON

          Selfde as verlore woord formaat, behalwe dat na alle vrae in gevoer is word alle Kort Antwoord vrae, vier op 'n slag verander in Bypassend Vrae.

          Is vernoem na die organisasie wat baie toets funksionaliteit by gedra het.

        Blackboard

        Jou eie formaat

          As jy jou eie formaat het kan jy dit self implementeer deur mod/quiz/format/custom.php te redigeer

          Die hoeveelheid nuwe kode is baie klein - 'parse' 'n enkle sin uit 'n gegewe teks.

          More info about the "Custom" format

        In die toekoms sal nog formate ingesluit word soos WebCT, IMS QTI en enige iets wat deur Moodle gebuikers bygedra word!

        \ No newline at end of file +

        Voer nuwe vrae in

        + +

        Die funksie laat jou toe om nuwe vrae in te voer vanaf eksterne teks lêers. + +

        Die volgende lêer formate word ondersteun: + +

        Verlore Woord

        +
          +

          Die formaat ondersteun net meervoudige keuse vrae. Elke antwoord word geskei +deur 'n  tilde (~), en die korrekte antwoord het 'n '=' teken vooraan. Hier +is 'n voorbeeld: + +

          Bokke is  {=herbivore ~karnivore ~omnivore} +
          + +

          Meer inligting:

          +
        + + +

        AON

        +
          +

          Selfde as verlore woord formaat, behalwe dat na alle vrae in gevoer is word +alle Kort Antwoord vrae, vier op 'n slag verander in Bypassend Vrae.

          +

          Is vernoem na die organisasie wat baie toets funksionaliteit by gedra het.

          +
        + + +

        Blackboard

        +
          +

          Die module voer vrae in wat in Blackboard se uitvoer vraag formaat gestoor +is. Dit gebruik XML en PHP funksies.

          + +

          Meer inligting:

          +
        + +

        Jou eie formaat

        +
          +

          As jy jou eie formaat het kan jy dit self implementeer deur mod/quiz/format/custom.php +te redigeer + +

          Die hoeveelheid nuwe kode is baie klein - 'parse' 'n enkle sin uit 'n gegewe +teks. + +

          Meer inligting:

          +
        + + +

        In die toekoms sal nog formate ingesluit word soos WebCT, IMS QTI en enige +iets wat deur Moodle gebuikers bygedra word!

        diff --git a/lang/af/help/quiz/match.html b/lang/af/help/quiz/match.html index a6e4c604647..7ab449ca17b 100644 --- a/lang/af/help/quiz/match.html +++ b/lang/af/help/quiz/match.html @@ -1,4 +1,8 @@ -

        Bypassende Antwoord Vrae

        -

        Na 'n opsionele inleiding, word die gebruiker voorsien van verskeie sub-vrae en verskeie geskommelde antwoorde. Daar is een regte antwoord vir elke vraag.

        -

        Die gebruiker moet die regte antwoord kies om by die sub-vraag te pas.

        -

        Elke sub-vraag dra ewe veel by tot die finale punt van die vraag.

        \ No newline at end of file +

        Bypassende Antwoord Vrae

        + +

        Na 'n opsionele inleiding, word die gebruiker voorsien van verskeie sub-vrae +en verskeie geskommelde antwoorde. Daar is een regte antwoord vir elke vraag. + +

        Die gebruiker moet die regte antwoord kies om by die sub-vraag te pas. + +

        Elke sub-vraag dra ewe veel by tot die finale punt van die vraag. \ No newline at end of file diff --git a/lang/af/help/quiz/maxgrade.html b/lang/af/help/quiz/maxgrade.html index dd4478ceef5..23879ebe4fa 100644 --- a/lang/af/help/quiz/maxgrade.html +++ b/lang/af/help/quiz/maxgrade.html @@ -1,4 +1,8 @@ -

        Maksimum Punt

        -

        Alle punte word aangepas tot die maksimum punt van 'n toets.

        -

        Byvoorbeeld, stel die maks punt na 20, omdat dit 20% van die toets werd is.

        -

        Al het jy 10 vrae in 'n toets wat uit 'n totaal van 50 punte tel, sal alle punte afgeskaal word na 20.

        \ No newline at end of file +

        Maksimum Punt

        + +

        Alle punte word aangepas tot die maksimum punt van 'n toets. + +

        Byvoorbeeld, stel die maks punt na 20, omdat dit 20% van die toets werd is. + +

        Al het jy 10 vrae in 'n toets wat uit 'n totaal van 50 punte tel, sal alle +punte afgeskaal word na 20. \ No newline at end of file diff --git a/lang/af/help/quiz/multichoice.html b/lang/af/help/quiz/multichoice.html index 1781b2d35bf..6c2040e8d0b 100644 --- a/lang/af/help/quiz/multichoice.html +++ b/lang/af/help/quiz/multichoice.html @@ -1 +1,18 @@ -

        Meervoudige Keuse vrae

        In antwoord op 'n vraag (kan prente insluit)  moet die student uit 'n paar moontlike antwoorde kies. Daar is twee tipes meervoudige keuse vrae - enkele antwoord of meervoudige antwoord.

        Enkel - net een antwoord word toegelaat. Oor die algemeen is alle punte vir die vraag positief.

        Meervoudig - laat een of meer antwoorde toe - elke antwoord kan 'n positiewe of negatiewe punt hê, so deur al die antwoorde te kies sal nie noodwendig 'n goeie punt gee nie. As die totale punt negatief is sal die punt vir die vraag nul wees. Wees versigtig, dit is moontlik om vrae te maak wat meer as 100% tel.

        Elke antwoord, reg of verkeerd,  sal terugvoer lewer,  - die terugvoer sal langs die vraag getoon word  (as die toets gestel is om terugvoer te lewer).

        \ No newline at end of file +

        Meervoudige Keuse vrae

        + +

        In antwoord op 'n vraag (kan prente insluit)  moet die student uit 'n paar moontlike +antwoorde kies. Daar is twee tipes meervoudige keuse vrae - +enkele antwoord of meervoudige antwoord. + +

        Enkel - net een antwoord word toegelaat. Oor die algemeen is alle punte vir +die vraag positief. + +

        Meervoudig - laat een of meer antwoorde toe - elke antwoord kan 'n positiewe +of negatiewe punt hê, so deur al die antwoorde te kies sal nie noodwendig 'n +goeie punt gee nie. As die totale punt negatief is sal die punt vir die vraag +nul wees. Wees versigtig, dit is moontlik om vrae te maak wat meer as 100% tel. + +

        Elke antwoord, reg of verkeerd,  sal terugvoer lewer,  - die +terugvoer sal langs die vraag getoon word  (as die toets gestel is om +terugvoer te lewer). +

        diff --git a/lang/af/help/quiz/questiontypes.html b/lang/af/help/quiz/questiontypes.html index c2d6423a730..ef1480ab41a 100644 --- a/lang/af/help/quiz/questiontypes.html +++ b/lang/af/help/quiz/questiontypes.html @@ -1 +1,37 @@ -

        Hoe om 'n nuwe vraag te skep

        Daar is verskeie vraag tipes wat jy by 'n kategorie kan byvoeg:

        Meervoudige Keuse vraag

          Die student moet in antwoord op 'n vraag(kan selfs 'n prent insluit) uit 'n paar moontlikhede kies. Daar is twee tipes meervoudige keuse vrae - enkel antwoord en meervoudige antwoord.

          More info about Multiple Choice questions

        Kort Antwoord

          In antwoord op 'n vraag (kan selfs 'n prent insluit), moet die student 'n woord of 'n sin in tik. Daar kan 'n paar moontlike regte antwoorde bestaan met verskillende punte. Antwoorde mag sensitief wees vir hoofletters.

          More info about Short Answer questions

        Waar/Vals

        Willekeurige Vrae

          (Nog nie geimplementeer nie) Jy kies 'n aantal vrae, elke keer as die student die toets doen sal hy willekeurig 'n ander vraag ontvang.

          More info about Random questions

        \ No newline at end of file +

        Hoe om 'n nuwe vraag te skep

        + +

        Daar is verskeie vraag tipes wat jy by 'n kategorie kan byvoeg:

        + +

        Meervoudige Keuse vraag

        +
          +

          Die student moet in antwoord op 'n vraag(kan selfs 'n prent insluit) uit 'n +paar moontlikhede kies. Daar is twee tipes meervoudige keuse vrae - enkel +antwoord en meervoudige antwoord. +

          Meer inligting:

          +
        + +

        Kort Antwoord

        +
          +

          In antwoord op 'n vraag (kan selfs 'n prent insluit), moet die student 'n +woord of 'n sin in tik. Daar kan 'n paar moontlike regte antwoorde bestaan met +verskillende punte. Antwoorde mag sensitief wees vir hoofletters. +

          +

          Meer inligting:

          +
        + +

        Waar/Vals

        +
          +

          In antwoord op 'n vraag (kan selfs 'n prent insluit), moet die student kies +tussen twee opsies Waar of Vals. +

          +

          Meer inligting:

          +
        + +

        Willekeurige Vrae

        +
          +

          (Nog nie geimplementeer nie) Jy kies 'n aantal vrae, elke keer as die student +die toets doen sal hy willekeurig 'n ander vraag ontvang. +

          +

          Meer inligting:

          +
        + diff --git a/lang/af/help/quiz/random.html b/lang/af/help/quiz/random.html index b7c1a2eaca6..e367573c1d8 100644 --- a/lang/af/help/quiz/random.html +++ b/lang/af/help/quiz/random.html @@ -1 +1,16 @@ -

        Willekeurige Vrae

        Willekeurige Vrae is 'n spesiale vraag tipe.

        Wanneer jy 'n Willekeurige Vraag in die toets sit, sal 'n vraag uit die hele kategorie gekies word met elke poging tot die toets.

        Die maksimum punt van die vraag sal altyd dieselfde bly.

        As jy 'n toets opstel met byvoorbeeld 10 willekeurige vrae, dan kan studente moontlik 10 verskillende vrae kry elke keer as hulle die toets doen.

        Let Wel: jy kan willekeurige vrae en nie-willekeurige vrae meng om seker te maak dat 'n sekere vraag altyd gevra word.

        \ No newline at end of file +

        Willekeurige Vrae

        + +

        Willekeurige Vrae is 'n spesiale vraag tipe.

        + +

        Wanneer jy 'n Willekeurige Vraag in die toets sit, sal 'n vraag uit die hele +kategorie gekies word met elke poging tot die toets.

        + +

        Die maksimum punt van die vraag sal altyd dieselfde bly.

        + +

        As jy 'n toets opstel met byvoorbeeld 10 willekeurige vrae, dan kan studente +moontlik 10 verskillende vrae kry elke keer as hulle die toets doen.

        + +

        Let Wel: jy kan willekeurige vrae en nie-willekeurige vrae meng om seker te maak +dat 'n sekere vraag altyd gevra word.

        + + diff --git a/lang/af/help/quiz/randomsamatch.html b/lang/af/help/quiz/randomsamatch.html index a213696e88d..9e8d2ef2f5b 100644 --- a/lang/af/help/quiz/randomsamatch.html +++ b/lang/af/help/quiz/randomsamatch.html @@ -1,5 +1,12 @@ -

        Willekeurige Kort Antwoord vrae

        -

        Na 'n opsionele inleiding, word 'n paar sub-vrae vertoon en 'n paar geskommelde antwoorde. Daar is een regte antwoord vir elke vraag.

        -

        Die student moet een antwoord kies wat by die sub-vraag pas.

        -

        Elke sub-vraag tel dieselfde vir die finale punt van die vraag.

        -

        Die vrae en antwoorde word willekeurig uit al die Kort Antwoord vrae gekies uit die huidige kategorie. Elke keer as die student die toets doen sal daar verskillende vrae en antwoorde wees.

        \ No newline at end of file +

        Willekeurige Kort Antwoord vrae

        + +

        Na 'n opsionele inleiding, word 'n paar sub-vrae vertoon en 'n paar +geskommelde antwoorde. Daar is een regte antwoord vir elke vraag. + +

        Die student moet een antwoord kies wat by die sub-vraag pas. + +

        Elke sub-vraag tel dieselfde vir die finale punt van die vraag. + +

        Die vrae en antwoorde word willekeurig uit al die Kort Antwoord vrae gekies +uit die huidige kategorie. Elke keer as die student die toets doen sal daar +verskillende vrae en antwoorde wees. \ No newline at end of file diff --git a/lang/af/help/quiz/review.html b/lang/af/help/quiz/review.html index d084bd7124c..35fc82364c3 100644 --- a/lang/af/help/quiz/review.html +++ b/lang/af/help/quiz/review.html @@ -1 +1,6 @@ -

        Laat hersiening toe

        As jy die opsie toelaat sal studente hulle vorige pogings vir die toets kan sien.

        Dit is slegs moontlik na die toets gesluit is(na die keer datum).

        \ No newline at end of file +

        Laat hersiening toe

        + +

        As jy die opsie toelaat sal studente hulle vorige pogings vir die toets kan +sien.

        + +

        Dit is slegs moontlik na die toets gesluit is(na die keer datum).

        diff --git a/lang/af/help/quiz/shortanswer.html b/lang/af/help/quiz/shortanswer.html index dbb46910e3e..e72d42277a6 100644 --- a/lang/af/help/quiz/shortanswer.html +++ b/lang/af/help/quiz/shortanswer.html @@ -1,4 +1,10 @@ -

        Kort Antwoord vrae

        -

        In antwoord tot 'n vraag (wat 'n prent kan insluit) moet die student 'n sin of 'n woord in tik.

        -

        Daar kan 'n paar korrekte antwoorde wees, elke met 'n verskillende punt. As die kas sensitiewe opsie aan is sal daar onderskeid getref word tussen "Woord" en "woord".

        -

        Antwoorde word presies vergelyk, dus wees versigtig met jou spelling!

        \ No newline at end of file +

        Kort Antwoord vrae

        + +

        In antwoord tot 'n vraag (wat 'n prent kan insluit) moet die student 'n sin +of 'n woord in tik. + +

        Daar kan 'n paar korrekte antwoorde wees, elke met 'n verskillende punt. As +die kas sensitiewe opsie aan is sal daar onderskeid getref word tussen +"Woord" en "woord". + +

        Antwoorde word presies vergelyk, dus wees versigtig met jou spelling! \ No newline at end of file diff --git a/lang/af/help/quiz/shuffleanswers.html b/lang/af/help/quiz/shuffleanswers.html index dbe6c12ac14..152ed058664 100644 --- a/lang/af/help/quiz/shuffleanswers.html +++ b/lang/af/help/quiz/shuffleanswers.html @@ -1 +1,10 @@ -

        Skommel Antwoorde

        As jy die opsie in werking stel sal die antwoorde van die vraag geskommel wees elke keer as die student die toets doen.

        Dit werk net vir Meervoudige Keuse vrae.

        Dit maak dit 'n bietjie moeiliker vir studente om bymekaar af te skryf.

        Die opsie is nie dieselfde as Willekeurige Vrae nie.

        \ No newline at end of file +

        Skommel Antwoorde

        + +

        As jy die opsie in werking stel sal die antwoorde van die vraag geskommel +wees elke keer as die student die toets doen.

        + +

        Dit werk net vir Meervoudige Keuse vrae.

        + +

        Dit maak dit 'n bietjie moeiliker vir studente om bymekaar af te skryf.

        + +

        Die opsie is nie dieselfde as Willekeurige Vrae nie.

        diff --git a/lang/af/help/quiz/shufflequestions.html b/lang/af/help/quiz/shufflequestions.html index 37d4a88f2ac..fabc52b13e7 100644 --- a/lang/af/help/quiz/shufflequestions.html +++ b/lang/af/help/quiz/shufflequestions.html @@ -1 +1,9 @@ -

        Skommel Vrae

        As jy die opsie in werking stel sal die vrae in die toets elke keer in 'n ander volgorde verskyn.

        Dit is nie dieselfde as Willekeurige Vrae nie, die opsie gaan slegs oor die vrae se volgorde.

        Dit maak dit vir studente 'n bietjie moeliker om by mekaar af te skryf.

        \ No newline at end of file +

        Skommel Vrae

        + +

        As jy die opsie in werking stel sal die vrae in die toets elke keer in 'n +ander volgorde verskyn.

        + +

        Dit is nie dieselfde as Willekeurige Vrae nie, die opsie gaan slegs oor die +vrae se volgorde.

        + +

        Dit maak dit vir studente 'n bietjie moeliker om by mekaar af te skryf.

        diff --git a/lang/af/help/quiz/timeopen.html b/lang/af/help/quiz/timeopen.html index 0c38e1e7903..0c9c0bef3eb 100644 --- a/lang/af/help/quiz/timeopen.html +++ b/lang/af/help/quiz/timeopen.html @@ -1,3 +1,6 @@ -

        Toets tye

        -

        Jy kan spesifiseer wanneer die toets oop of toe moet wees.

        -

        As die toets nie oop is nie sal die toets nie beskikbaar wees aan studente wees nie.

        \ No newline at end of file +

        Toets tye

        + +

        Jy kan spesifiseer wanneer die toets oop of toe moet wees. + +

        As die toets nie oop is nie sal die toets nie beskikbaar wees aan studente +wees nie. \ No newline at end of file diff --git a/lang/af/help/quiz/truefalse.html b/lang/af/help/quiz/truefalse.html index 1ce6fcef08e..4d6779805f3 100644 --- a/lang/af/help/quiz/truefalse.html +++ b/lang/af/help/quiz/truefalse.html @@ -1 +1,9 @@ -

        Waar/Vals vrae

        In antwoord op 'n vraag (wat 'n prent kan insluit) moet die student Waar of Vals antwoord.

        As die terugvoer opsie aan is, sal terugvoer gewys word sodra die student die vraag beantwoord het.

        \ No newline at end of file +

        Waar/Vals vrae

        + + +

        In antwoord op 'n vraag (wat 'n prent kan insluit) moet die student Waar of +Vals antwoord. + +

        As die terugvoer opsie aan is, sal terugvoer gewys word sodra die student die +vraag beantwoord het. +

        diff --git a/lang/af/help/reading.html b/lang/af/help/reading.html index 12017d73046..7cbce955137 100644 --- a/lang/af/help/reading.html +++ b/lang/af/help/reading.html @@ -1 +1,13 @@ -

        Lees

        Wanneer teks vinnig gelees word is dit maklik om die skrywer verkeerd te verstaan.

        Om dit te vermy, lees die skrywer se woorde versigtig en probeer dit uit die skrywer se oog punt te sien.

        Dit kan ook help om te dink oor wat die skrywer nie gesê het nie - dit kan jou help om jou eie vrae te vorm.

        More info about writing

        More info about questions

        \ No newline at end of file +

        Lees

        + +

        Wanneer teks vinnig gelees word is dit maklik om die skrywer verkeerd te +verstaan.

        + +

        Om dit te vermy, lees die skrywer se woorde versigtig en probeer dit uit die +skrywer se oog punt te sien.

        + +

        Dit kan ook help om te dink oor wat die skrywer nie gesê het nie - dit kan +jou help om jou eie vrae te vorm.

        + +

        +

        diff --git a/lang/af/help/resource/resourcetype.html b/lang/af/help/resource/resourcetype.html index 10ca20f1d2e..063cb02a28b 100644 --- a/lang/af/help/resource/resourcetype.html +++ b/lang/af/help/resource/resourcetype.html @@ -1 +1,33 @@ -

        Hulpbron Tipes

        Hulpbronne kan enige inhoud bevat. Hier is die verskillende tipes, dit spesifiseer hoe toegang verkry word tot die inhoud:

        Gewone teks - dit is die eenvoudigste tipe. Jy kan die inhoud in tik(redigeer) op 'n vorm op die volgende bladsy. Van die inhoud sal outomaties geformateer word. Meer inligting oor gewone teks:

        HTML teks - Vir meer gevorderde gebruikers. Geen outomatiese formatering vind plaas nie, jy moet self die  HTML kodes bysit.

        Verwysing - verwysing na 'n boek of joernaal.

        Opgelaaide lêer - wys enige lêer wat opgelaai is in die kursus. Gaan kyk na die "Lêers" gedeelte om te sien watter lêers daar is.

        Web skakel - 'n URL na 'n plek iewers op die web. As enige iemand op die aktiwiteit klik sal hulle na die web blad buite Moodle gaan (die bladsy sal in die browser venster verskyn).

        Web Bladsy - 'n URL na iewers op die web. Soos die vorige tipe sal dit 'n web bladsy vertoon, maar met die tipe sal die bladsy binne 'n raam in Moodle vertoon word asof die bladsy deel is van Moodle.

        Program - 'n program wat inligting nodig het oor die huidige Moodle gebruiker. Dit laat ander web programme toe om met Moodle saam te werk.

        Wiki teks - laat meer formatering toe as gewone teks, en jy hoef nie HTML te leer ken nie. Jy tik gewone teks maar daar is formatering karakters wat jy kan insluit (bv. *die sal bold gedruk word* /dit sal skuins gedruk word/) om maklik formatering mee te doen.

        \ No newline at end of file +

        Hulpbron Tipes

        + +

        Hulpbronne kan enige inhoud bevat. Hier is die verskillende tipes, dit +spesifiseer hoe toegang verkry word tot die inhoud: + +

        Gewone teks - dit is die eenvoudigste tipe. Jy kan die inhoud in +tik(redigeer) op 'n vorm op die volgende bladsy. Van die inhoud sal outomaties +geformateer word. Meer inligting oor gewone teks: + +

        HTML teks - Vir meer gevorderde gebruikers. Geen outomatiese +formatering vind plaas nie, jy moet self die  HTML kodes bysit. + +

        Verwysing - verwysing na 'n boek of joernaal. + +

        Opgelaaide lêer - wys enige lêer wat opgelaai is in die kursus. Gaan +kyk na die "Lêers" gedeelte om te sien watter lêers daar is. + +

        Web skakel - 'n URL na 'n plek iewers op die web. As enige iemand op +die aktiwiteit klik sal hulle na die web blad buite Moodle gaan (die bladsy sal +in die browser venster verskyn). + +

        Web Bladsy - 'n URL na iewers op die web. Soos die vorige tipe sal dit +'n web bladsy vertoon, maar met die tipe sal die bladsy binne 'n raam in Moodle +vertoon word asof die bladsy deel is van Moodle. + +

        Program - 'n program wat inligting nodig het oor die huidige Moodle +gebruiker. Dit laat ander web programme toe om met Moodle saam te werk. + +

        Wiki teks - laat meer formatering toe as gewone teks, en jy hoef nie +HTML te leer ken nie. Jy tik gewone teks maar daar is formatering karakters wat +jy kan insluit (bv. *die sal bold gedruk word* /dit sal skuins gedruk word/) om +maklik formatering mee te doen.

        + diff --git a/lang/af/help/resource/summary.html b/lang/af/help/resource/summary.html index 7aa0f4b3e71..9b825e875d7 100644 --- a/lang/af/help/resource/summary.html +++ b/lang/af/help/resource/summary.html @@ -1,4 +1,7 @@ -

        Opsomming

        -

        Die opsomming is 'n kort beskrywing van die hulpbron.

        -

        Moenie te veel skryf of die hulpbron hier insluit nie!

        -

        Die hulpbron inhoud word op die volgende bladsy gespesifiseer.

        \ No newline at end of file +

        Opsomming

        + +

        Die opsomming is 'n kort beskrywing van die hulpbron. + +

        Moenie te veel skryf of die hulpbron hier insluit nie! + +

        Die hulpbron inhoud word op die volgende bladsy gespesifiseer. \ No newline at end of file diff --git a/lang/af/help/richtext.html b/lang/af/help/richtext.html index f37e1a58823..dbfa4e04f59 100644 --- a/lang/af/help/richtext.html +++ b/lang/af/help/richtext.html @@ -1,154 +1,167 @@ -

        Richtext HTML redigeerder

        -

        Beskikbaarheid: htmleditor) { - - print_string("htmleditordisabledadmin"); - - } else if (!$USER->htmleditor) { - - print_string("htmleditordisabled"); - - } else if (!can_use_richtext_editor()) { - - print_string("htmleditordisabledbrowser"); - - } else { - - print_string("htmleditoravailable"); - - } - -?>

        -

        Die Richtext HTML redigeerder laat jou toe om teks te redigeer soos 'n woord verwerker, dit produseer normale HTML kode.

        -

        Die redigeerder het ekstra funksies wat jy ook dalk sal handig vind.

        -

        Plak teks in van ander programme

        -
        -

        Jy kan ryk teks van ander Windows programme soos Word knip en plak, en die formaat sal behoue bly. Gebruik net die normale knip en plak metodes van jou 'browser' of program (of Control-C en Control-V).

        -
        -

        Om prente in te sit

        -
        -

        As jy klaar prente op 'n ander web blad het, kan jy die prente in sit met die "Insert Images" knoppie.

        -
        -

        Om tabelle in te sit

        -
        -

        Om 'n spesifieke uitleg vir jou teks te gebruik, gebruik die  "Insert Tables" knoppie.

        -
        -

        Om skakels in te sit

        -
        -

        Om 'n nuwe skakel in te sit, tik eerste die teks van die skakel in. Selekteer dit en klik op die "link" knoppie. Tik die URL in waarna jy wil  skakel.

        -
        -

        Om smilies (emoticons) in te sit

        -
        -

        Om die klein ikone in jou teks te sit klik op die smilie ikoon. 'n Venster met  die verskillende smilies sal verskyn. (Of tik die smilie se kode in jou teks dat sal as 'n smilie ikoon later vertoon word).

        - - - - - -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        smile:-)
        big grin:-D
        wink;-)
        mixed:-/
        thoughtfulV-.
        tongue out:-P
        coolB-)
        approve^-)
        wide eyes8-)
        surprise8-o
        -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        sad:-(
        shy8-.
        blush:-I
        kisses:-X
        clown:o)
        black eyeP-|
        angry8-[
        deadxx-P
        sleepy|-.
        evil}-]
        -
        -
        \ No newline at end of file +

        Richtext HTML redigeerder

        + +

        Beskikbaarheid: +htmleditor) { + print_string("htmleditordisabledadmin"); + } else if (!$USER->htmleditor) { + print_string("htmleditordisabled"); + } else if (!can_use_richtext_editor()) { + print_string("htmleditordisabledbrowser"); + } else { + print_string("htmleditoravailable"); + } +?> +

        + +

        Die Richtext HTML redigeerder laat jou toe om teks te redigeer soos 'n woord +verwerker, dit produseer normale HTML kode. + +

        Die redigeerder het ekstra funksies wat jy ook dalk sal handig vind. + +

        Plak teks in van ander programme

        +
          +

          Jy kan ryk teks van ander Windows programme soos Word knip en plak, en die +formaat sal behoue bly. Gebruik net die normale knip en plak metodes van jou +'browser' of program (of Control-C en Control-V). +

        + +

        Om prente in te sit

        +
          +

          As jy klaar prente op 'n ander web blad het, kan jy die prente in sit met die +"Insert Images" knoppie. +

        + +

        Om tabelle in te sit

        +
          +

          Om 'n spesifieke uitleg vir jou teks te gebruik, gebruik die  "Insert Tables" +knoppie. +

        + +

        Om skakels in te sit

        +
          +

          Om 'n nuwe skakel in te sit, tik eerste die teks van die skakel in. Selekteer +dit en klik op die "link" knoppie. Tik die URL in waarna jy wil  +skakel. +

        + + +

        Om smilies (emoticons) in te sit

        +
          +

          Om die klein ikone in jou teks te sit klik op die smilie ikoon. 'n Venster +met  die verskillende smilies sal verskyn. (Of tik die smilie se kode in +jou teks dat sal as 'n smilie ikoon later vertoon word). + + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          smile:-)
          big grin:-D
          wink;-)
          mixed:-/
          thoughtfulV-.
          tongue out:-P
          coolB-)
          approve^-)
          wide eyes8-)
          surprise8-o
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          sad:-(
          shy8-.
          blush:-I
          kisses:-X
          clown:o)
          black eyeP-|
          angry8-[
          deadxx-P
          sleepy|-.
          evil}-]
          +
          + +

        + + diff --git a/lang/af/help/summaries.html b/lang/af/help/summaries.html index ffe390034e9..88126a6c725 100644 --- a/lang/af/help/summaries.html +++ b/lang/af/help/summaries.html @@ -1 +1,9 @@ -

        Onderwerp/Week Opsomming

        Die idee van die opsomming is om die studente voor te berei op wat gaan volg in die onderwerp/week.

        Elke opsomming moet kort wees sodat die kursus bladsy nie te lank word nie.

        As jy meer wil sê as 'n sin of twee, sit eerder nog 'n hulpbron by (byvoorbeeld 'n dokument getiteld Onderwerp beskrywing).

        \ No newline at end of file +

        Onderwerp/Week Opsomming

        + +

        Die idee van die opsomming is om die studente voor te berei op wat gaan volg +in die onderwerp/week.

        + +

        Elke opsomming moet kort wees sodat die kursus bladsy nie te lank word nie.

        + +

        As jy meer wil sê as 'n sin of twee, sit eerder nog 'n hulpbron by +(byvoorbeeld 'n dokument getiteld Onderwerp beskrywing).

        diff --git a/lang/af/help/surveys.html b/lang/af/help/surveys.html index cf60e138985..669884e1d38 100644 --- a/lang/af/help/surveys.html +++ b/lang/af/help/surveys.html @@ -1,49 +1,106 @@ -

        Beskikbare Menings Opnames

        -

        Huidiglik het Moodle slegs 'n paar Menings Opnames (In die toekoms sal meer beskikbaar wees).

        -

        Die opnames is gekies omdat hulle baie handig is om 'n gekoppelde omgewing mee te evalueer wat onderrig aanbied. Die opnames kan neigings onder jou deelnemers identifiseer. (Kyk hier vir 'n deeglike analise van die gebruik van die opnames: http://dougiamas.com/writing/herdsa2002)

        -
        -

        COLLES - Constructivist On-Line Learning Environment Survey

        -
        -

        Die COLLES bestaan uit 24 stellings gegroepeer in 6 skale, elkeen help ons om sleutel vrae oor die aanlyn omgewing te beantwoord:

        - - - - - - - - - - - - - - - - - - - - - - - - - -
        RelevansieHoe relevant is die kursus tot die student se professionele praktyk?
        RefleksieStimuleer die kursus die studente se kritiese reflektiewe denke?
        InteraktiwiteitTot watter mate studente aan gekoppelde opvoedkundige gesprekke deelneem?
        Tutor OndersteuningHoe goed laat die tutors die studente deelneem in die gekoppelde omgewing?
        Ondersteuning van klasgenoteGee mede studente mekaar sensitiewe aanmoedigings?
        InterpretasieVerstaan die studente en tutors mekaar se aanlyn boodskappe?
        -

        Ondersteun die dinamiese oogpunt van leerwerk, dit is 'n nuwe teorie oor kennis: 'social constructivism', wat die leerder voorstel as 'n aktiwe voorsteller(denker) binne 'n sosiale interaktiewe leeromgewing. 'Social constructivism' is 'n epistemologie, 'n manier van kennis opdoen, leerders werk saam om iets te verstaan en te bou aan hulle kennis, veral in die konteks dat hulle persoonlike ondervindings deel terwyl hulle saam iets probeer uitvind.

        -

        Die samewerking help studente om hulle kommunikasie vaardighede te verbeter, hulle verbeter hulle vermoë om oop kritiese gesprekke te voer met hulle onderwysers en klasgenote. Die kommunikasie word gekarakteriseer deur pogings om mekaar te probeer verstaan, en 'n kritiese houding in te neem en alles wat van selfsprekend aanvaar word te ondersoek.

        -

        Die COLLES is ontwerp om jou te help monitor tot watter mate jy die vermoë van die  Wêreld  Wye Web aanwend om studente te bereik in 'n dinamiese leer omgewing.

        -

        (Die inligting kom van die COLLES bladsy. Vind meer uit van COLLES by: http://surveylearning.com/colles/)

        -
        -
        -

        ATTLS - Attitudes to Thinking and Learning Survey

        -
        -

        Die teorie van 'ways of knowing', (Belenky et al., 1986), voorsien ons van 'n menings opname wat ons kan help om die kwaliteit te bepaal van kommunikasie in 'n omgewing van samewerking.

        -

        Die 'Attitudes Towards Thinking and Learning Survey' (ATTLS) is 'n instrument wat ontwerp is deur Galotti et al. (1999) wat vasstel tot watter mate 'n persoon  'verbonde kennis' (CK) of  'geskeide kennis' (SK) het.

        -

        Mense met hoër CK tellings is geneig om meer te hou van leer, en is meer geneig om saam te werk, en is bereid om op die idees van ander te bou, terwyl mense met 'n hoë SK telling geneig is om baie krities te wees en 'n teenstrydige houding in te neem teenoor leer.

        -

        Navorsing het getoon dat die twee leer metodes onafhanklik van mekaar is (Galotti et al., 1999; Galotti et al., 2001). Dit is slegs 'n weerspieëling van houdings ten opsigte van leer, nie die persoon se kapasiteit om te leer of sy intellektuele vermoë nie.

        -

        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.

        -

        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.

        -

        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.

        -
        \ No newline at end of file +

        Beskikbare Menings Opnames

        + +

        Huidiglik het Moodle slegs 'n paar Menings Opnames (In die toekoms sal meer +beskikbaar wees).

        + +

        Die opnames is gekies omdat hulle baie handig is om 'n gekoppelde omgewing +mee te evalueer wat onderrig aanbied. Die opnames kan neigings onder jou +deelnemers identifiseer. (Kyk hier vir 'n deeglike analise van die gebruik van +die opnames: +http://dougiamas.com/writing/herdsa2002)

        + +
        +

        COLLES - Constructivist On-Line Learning Environment Survey

        +
          +

          Die COLLES bestaan uit 24 stellings gegroepeer in 6 skale, elkeen help ons + om sleutel vrae oor die aanlyn omgewing te beantwoord:

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          RelevansieHoe relevant is die kursus tot die student se professionele praktyk? +
          Refleksie Stimuleer die kursus die studente se kritiese reflektiewe denke? +
          Interaktiwiteit Tot watter mate studente aan gekoppelde opvoedkundige gesprekke + deelneem? +
          Tutor OndersteuningHoe goed laat die tutors die studente deelneem in die gekoppelde + omgewing? +
          Ondersteuning van klasgenote Gee mede studente mekaar sensitiewe aanmoedigings? +
          Interpretasie Verstaan die studente en tutors mekaar se aanlyn boodskappe?
          + +

          Ondersteun die dinamiese oogpunt van leerwerk, dit is 'n nuwe teorie oor + kennis: 'social constructivism', wat die leerder voorstel as 'n aktiwe + voorsteller(denker) binne 'n sosiale interaktiewe leeromgewing. 'Social constructivism' is + 'n epistemologie, 'n manier van kennis opdoen, leerders werk saam om iets te + verstaan en te bou aan hulle kennis, veral in die konteks dat hulle + persoonlike ondervindings deel terwyl hulle saam iets probeer uitvind.

          + +

          Die samewerking help studente om hulle kommunikasie vaardighede te + verbeter, hulle verbeter hulle vermoë om oop kritiese gesprekke te voer met + hulle onderwysers en klasgenote. Die kommunikasie word gekarakteriseer deur + pogings om mekaar te probeer verstaan, en 'n kritiese houding in te neem en + alles wat van selfsprekend aanvaar word te ondersoek.

          + +

          Die COLLES is ontwerp om jou te help monitor tot watter mate jy die vermoë + van die  Wêreld  Wye Web aanwend om studente te bereik in 'n + dinamiese leer omgewing.

          + +

          +(Die inligting kom van die COLLES bladsy. Vind meer uit van COLLES by: +http://surveylearning.com/colles/)

          +
        + + +
        +

        ATTLS - Attitudes to Thinking and Learning Survey

        +
          + +

          Die teorie van 'ways of knowing', (Belenky et al., 1986), voorsien ons van 'n +menings opname wat ons kan help om die kwaliteit te bepaal van kommunikasie in +'n omgewing van samewerking. + +

          Die 'Attitudes Towards Thinking and Learning Survey' (ATTLS) is 'n instrument +wat ontwerp is deur Galotti et al. (1999) wat vasstel tot watter mate 'n +persoon  'verbonde kennis' (CK) of  'geskeide kennis' (SK) het. + +

          Mense met hoër CK tellings is geneig om meer te hou van leer, en is meer +geneig om saam te werk, en is bereid om op die idees van ander te bou, terwyl +mense met 'n hoë SK telling geneig is om baie krities te wees en 'n +teenstrydige houding in te neem teenoor leer. + +

          Navorsing het getoon dat die twee leer metodes onafhanklik van mekaar is (Galotti et al., 1999; Galotti et al., 2001). +Dit is slegs 'n weerspieëling van houdings ten opsigte van leer, nie die +persoon se kapasiteit om te leer of sy intellektuele vermoë nie. + +

          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.

          + +

          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.

          + +

          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.

          + + +
        diff --git a/lang/af/help/teachers.html b/lang/af/help/teachers.html index 47b28e5be6c..77a28e61e86 100644 --- a/lang/af/help/teachers.html +++ b/lang/af/help/teachers.html @@ -1,5 +1,18 @@ -

        Onderwysers

        -

        Die bladsy wys 'n lys van almal wat as "onderwysers" aangewys is vir die kursus (deur die stelsel administrateur).

        -

        Jy kan die bladsy gebruik om 'n rol toe te ken aan almal (titel) soos  "Professor", "Tutor", "Assistent", ens. Dit sal op die web blad se kursus lys verskyn asook op die lys van deelnemers aan die kursus. As jy die veld oop los sal die verstek waarde vir onderwyser gebruik word (die naam op die kursus stellings bladsy).

        -

        Jy kan die lys rangskik (byvoorbeeld: sit die hoof onderwyser eerste). Kies die nommer van die kielys in die "Orde" kolom. Druk "Stoor veranderinge" om die nuwe orde lys te sien.

        -

        Let Wel: As jy 'n onderwyser "wegsteek" sal die onderwyser NIE vertoon word op die kursus lys nie of op die lys van deelnemers NIE. Hulle sal weggesteek wees van studente (behalwe as hulle boodskappe op die forums pos ens.).

        \ No newline at end of file +

        Onderwysers

        + +

        Die bladsy wys 'n lys van almal wat as "onderwysers" aangewys is +vir die kursus (deur die stelsel administrateur). + +

        Jy kan die bladsy gebruik om 'n rol toe te ken aan almal (titel) soos  "Professor", "Tutor", +"Assistent", ens. Dit sal op die web blad se kursus lys verskyn asook +op die lys van deelnemers aan die kursus. As jy die veld oop los sal die verstek +waarde vir onderwyser gebruik word (die naam op die kursus stellings bladsy). + +

        Jy kan die lys rangskik (byvoorbeeld: sit die hoof onderwyser eerste). Kies +die nommer van die kielys in die "Orde" kolom. Druk "Stoor +veranderinge" om die nuwe orde lys te sien. + +

        Let Wel: As jy 'n onderwyser "wegsteek" sal die onderwyser +NIE vertoon word op die kursus lys nie of op die lys van deelnemers NIE. Hulle +sal weggesteek wees van studente (behalwe as hulle boodskappe op die forums pos +ens.). \ No newline at end of file diff --git a/lang/af/help/text.html b/lang/af/help/text.html index 5c4370d30b7..96bc787595e 100644 --- a/lang/af/help/text.html +++ b/lang/af/help/text.html @@ -1 +1,148 @@ -

        Hoe om met teks te skryf

        Om teks in Moodle te skryf werk op die gewone manier behalwe dat jy kan "smilies" en URL adresse bysit en sekere HTML tags.

        Smilies (emoticons)

        Om die klein ikone in jou teks te sit, tik slegs die bypassende kode in jou teks. Die kode self lyk soos klein prentjies as jy jou kop na links draai om na hulle te kyk.

        smile :-)
        big grin :-D
        wink ;-)
        mixed :-/
        thoughtful V-.
        tongue out :-P
        cool B-)
        approve ^-)
        wide eyes 8-)
        surprise 8-o
        sad :-(
        shy 8-.
        blush :-I
        kisses :-X
        clown :o)
        black eye P-|
        angry 8-[
        dead xx-P
        sleepy |-.
        evil }-]

        URL

        Elke woord wat begin met www. of http:// sal outomaties verander in 'n skakel waarop jy kan klik.

        Byvoorbeeld: www.yahoo.com of http://curtin.edu

        HTML tags

        Jy kan die volgende HTML tags gebruik om dele van jou teks te beklemtoon.

        HTML  Produseer
        <B> bold </B> bold text
        <I> italic </I> italic text
        <U> underline </U> underlined text
        <FONT SIZE=1> small </FONT> small
        <FONT SIZE=4> large </FONT> large
        <FONT COLOR=green> example </FONT> example
        <UL><LI>one <LI>two </UL>
        • one
        • two
        <HR>
        \ No newline at end of file +

        Hoe om met teks te skryf

        + +Om teks in Moodle te skryf werk op die gewone manier behalwe dat jy kan +"smilies" en URL adresse bysit en sekere HTML tags. + +

        Smilies (emoticons)

        +
          +

          Om die klein ikone in jou teks te sit, tik slegs die bypassende kode in jou +teks. Die kode self lyk soos klein prentjies as jy jou kop na links draai om na +hulle te kyk.

          + + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          smile:-)
          big grin:-D
          wink;-)
          mixed:-/
          thoughtfulV-.
          tongue out:-P
          coolB-)
          approve^-)
          wide eyes8-)
          surprise8-o
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          sad:-(
          shy8-.
          blush:-I
          kisses:-X
          clown:o)
          black eyeP-|
          angry8-[
          deadxx-P
          sleepy|-.
          evil}-]
          +
          + +
        + +

        URL

        +
          +

          Elke woord wat begin met www. of http:// sal outomaties +verander in 'n skakel waarop jy kan klik. +

          Byvoorbeeld: www.yahoo.com of http://curtin.edu +

        + +

        HTML tags

        +
          +

          Jy kan die volgende HTML tags gebruik om dele van jou teks te beklemtoon. + + + + + + + + + + +
          HTML Produseer
          <B> bold </B> bold text
          <I> italic </I> italic text
          <U> underline </U> underlined text
          <FONT SIZE=1> small </FONT> small
          <FONT SIZE=4> large </FONT> large
          <FONT COLOR=green> example </FONT> example
          <UL><LI>one <LI>two </UL>
          • one
          • two
          <HR>
          +

        + + diff --git a/lang/af/help/textformat.html b/lang/af/help/textformat.html index 19fe2b415a0..ddb0d7b330a 100644 --- a/lang/af/help/textformat.html +++ b/lang/af/help/textformat.html @@ -1 +1,63 @@ -

        Formatering van teks

        Daar is 'n paar verskillende teks formate wat jy kan kies in Moodle, die formaat hang af van jou browser en jou kennis.

        Los die stelling op sy verstek waarde en alles behoort te werk soos jy verwag.

        1. Moodle outo-formaat

        Dit is die beste as jy normale web vorms gebruik vir inskrywings (as jy nie Richtext HTML redigeerder gebruik nie). Tik teks normaal in asof jy 'n email stuur.

        Wanneer jy die teks stoor, sal Moodle outomaties die teks formateer.

        Byvoorbeeld, 'n URL soos http://yahoo.com of www.yahoo.com sal in 'n skakel verander.

        Oop lyne sal die begin wees van nuwe paragrawe.

        "Smiley" karakters soos :-) sal outomaties in ikone verander word.

        Jy kan selfs HTML kode gebruik.

        Meer inligting oor Moodle outo-formaat.

        2. HTML formaat

        In die formaat is alle teks in HTML formaat. As jy 'n HTML redigeerder gebruik om teks te formaateer is dit die verstek formaat - alle opdragte op die nutsbalk produseer HTML kode vir jou.

        Selfs al gebruik jy nie Richtext HTML redigeerder nie, kan jy HTML kode in jou teks gebruik en dit behoort uit te kom soos jy verwag.

        Daar word geen outomaties formatering gedoen soos by Moodle outo-formaat nie.

        Meer inligting oor HTML

        Meer oor Richtext HTML redigeerder

        3. Gewone teks formaat

        Gebruik die formaat as jy baie kode of  HTML kode het wat jy wil laat vertoon presies soos jy dit geskryf het.

        Smilies en nuwe lyne sal ingesit word maar verder sal geen veranderinge aangebring word nie.

        4. Wiki teks formaat

        Dit is 'n spesiale manier van teks in tik.

        Dit laat jou toe om teks in te tik wat baie leesbaar lyk, maar kan outomaties in HTML teks verander word met komplekse formatering.

        Meer oor Wiki

        \ No newline at end of file +

        Formatering van teks

        + +

        Daar is 'n paar verskillende teks formate wat jy kan kies in Moodle, die +formaat hang af van jou browser en jou kennis. + +

        Los die stelling op sy verstek waarde en alles behoort te werk soos jy +verwag. + +

        1. Moodle outo-formaat

        + +
          +

          Dit is die beste as jy normale web vorms gebruik vir inskrywings (as jy nie Richtext HTML +redigeerder gebruik nie). Tik teks normaal in asof jy 'n email stuur. + +

          Wanneer jy die teks stoor, sal Moodle outomaties die teks formateer. +

          Byvoorbeeld, 'n URL soos http://yahoo.com of + www.yahoo.com sal in 'n skakel verander. +

          Oop lyne sal die begin wees van nuwe paragrawe. +

          "Smiley" karakters soos :-) sal outomaties in ikone verander word. +

          Jy kan selfs HTML kode gebruik. +

          Meer inligting +oor Moodle outo-formaat.

          +
        + + +

        2. HTML formaat

        + +
          +

          In die formaat is alle teks in HTML formaat. As jy 'n HTML redigeerder +gebruik om teks te formaateer is dit die verstek formaat - alle opdragte op die +nutsbalk produseer HTML kode vir jou. + +

          Selfs al gebruik jy nie Richtext HTML redigeerder nie, kan jy HTML kode in +jou teks gebruik en dit behoort uit te kom soos jy verwag. + +

          Daar word geen outomaties formatering gedoen soos by Moodle outo-formaat nie. +

          Meer inligting +oor HTML

          +

          Meer oor +Richtext HTML redigeerder

          +
        + + +

        3. Gewone teks formaat

        + +
          +

          Gebruik die formaat as jy baie kode of  HTML kode het wat jy wil laat +vertoon presies soos jy dit geskryf het. + +

          Smilies en nuwe lyne sal ingesit word maar verder sal geen veranderinge +aangebring word nie. +

        + + +

        4. Wiki teks formaat

        +
          +

          Dit is 'n spesiale manier van teks in tik. +

          Dit laat jou toe om teks in te tik wat baie leesbaar lyk, maar kan outomaties +in HTML teks verander word met komplekse formatering. + +

          Meer oor Wiki

          +
        + diff --git a/lang/af/help/wiki.html b/lang/af/help/wiki.html index 099e731a1f1..4bbb962917c 100644 --- a/lang/af/help/wiki.html +++ b/lang/af/help/wiki.html @@ -1,165 +1,134 @@ -

        Hoe om in Wiki formaat te skryf

        -

        Bladsye met Wiki formaat voorsien 'n maklike en intuïtiewe manier om gewone teks op te merk na 'n maklike leesbare formaat wat omgeskakel sal word na XHTML wanneer dit vertoon word. Die voordeel is dat jy nie hoef  HTML te leer om goeie resultate te verkry nie, en die teks wat jy skryf lyk goed, selfs voor dit omgeskakel word. Jy kan dit doen eerder as om Word dokumente as HTML te stoor, nou kan jy nog die hulpbron redigeer in 'n gekoppelde omgewing.

        -

        Jy skryf basies gewone teks, en voeg dan spesiale karakters by om die formatering te doen.

        -

        Paragraaf blok formatering

        -

        Paragraaf blokke word deur ten minste een lyn geskei. Om 'n paragraaf te formateer, voeg een van die spesiale karaketers by in die eerste karakter op die eerste lyn van die paragraaf gevolg deur 'n spasie...

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        KarakterBlok Tipe
        Geen karakterGewone paragraaf
        >Aanhaling
        SpasiePre-Geformateerde Teks ("Monospaced")
        %Pre-Geformateerde Teks en Wikki formaat word geignoreer
        !#Opskrif - # is 1-6, dit is die vlak van die opskrif (1 is die grootste)
        Q.Vraag - styl inligting word by die paragraaf gevoeg om vraag/antwoord beter voor te dra (in tema)
        A.Antwoord - soos bogenoemde
        -

        Lys Formatering

        -

        Lyste kan maklik opgestel word deur 'n spesiale karakter voor aan die lys by te sit gevolg deur 'n spasie. Die lys se einde word deur 'n oop lyn getoon. Lyste kan binne in lyste op gestel word. Definisie Lyste se definisies en gewone teks kan gemeng word op die regte effek te kry. Die spesiale karakters...

        - - - - - - - - - - - - - - - - - - - - - -
        KarakterLys item tipe
        *Ongeordende Lys ("bullets")
        #Geordende Lys (1,2,3 ens)
        :Definisie Lys, definisie
        ;Definisie Lys, teks
        -

        Lys binne 'n lys voorbeeld:

        -
        -
        -  * Eerste Bullet
        -
        -  * Tweede Bullet
        -
        -  ## lyn 1
        -
        -  ## lyn 2
        -
        -  * Derde Bullet
        -
        -
        -

        Dit gee:

        -
          -
        • Eerste Bullet
        • -
        • Tweede Bullet
        • -
        • -
            -
          1. lyn 1
          2. -
          3. lyn 2
          4. -
          -
        • -
        • Derde Bullet
        • -
        -

        Spesifieke lyn formatering

        -

        Spesifieke lyn formatering laat 'n sekere deel van 'n lyn 'n sekere styl aan neem. Die spesiale karakters wat gebruik word kan enige plek in die lyn voor kom, maar die formatering kan nie lyne kruis nie. Die karakters...

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        VoorbeeldVoorbeeldFormatering
        *hello world*hello worldBold
        /hello world/hello worldItalics of Beklemtoning
        +hello world+hello worldTeks wat ingesit is
        -hello world-hello worldUitgewis of "Strikethrough"
        hello ~world~hello worldSubskrif
        hello ^world^hello worldSuperskrif
        "hello world"hello worldAangehaal
        %hello world%hello worldKode of "Monospaced"
        @hello world@hello worldAanhaling
        -

        Akronieme

        -

        Skryf die akroniem in hoofletters gevolg deur die beskrywing in parentese. Daar moet geen spasie wees tussen die akroniem en die parentse nie. Voorbeeld...

        -

        HTML(Hypertext Markup Language)
        -HTML

        -

        Hiper Skakels

        -Skakels word in teks geplaas en gevolg deur (sonder spasies) die teks wat vertoon moet word in hakies. Voorbeeld: http://www.google.com/(Doen Soektog) sal omgeskakel word na Doen Soektog. -

        Moodle Module Skakels

        -

        As jy die Moodle id nommer (kyk vir ?id=nn aan die einde van 'n module adres) en die module naam ken, kan jy na die hulpbron skakel met:

        -

        ModuleName:nn(Beskrywende Teks)

        -

        vb., resource:36(My New Page) forum:10(Jump to forum)

        -

        Moodle Prent Skakels

        -

        Grafiese beelde kan in wiki teks gesit word. Jy moet die prent op laai(let die pad ("path") na die prent). Die kode is:

        -

        /..pad na lêer..(teks wat vertoon moet word)

        -

        byvoorbeeld, /mypics/graphic.jpg(My Foto)

        -

        Outomatiese Formatering

        -

        Mees algemene funksies word outomaties omgeskakel na hul XHTML ekwivalent.. Die hoof funksies...

        -
          -
        • HTTP skakels word omgeskakel na aktiewe skakels
        • -
        • ..., (R), (TM), (C), 1/4, 1/2, 3/4 word omgeskakel na die korrekte karakter
        • -
        • syfer x syfer (5 x 5), word omgeskakel na vermenigvuldig simbool
        • -
        • 'n Lyn wat met vier koppeltekens begin word omgeskakel na een reguit lyn
        • -
        \ No newline at end of file +

        Hoe om in Wiki formaat te skryf

        + +

        + Bladsye met Wiki formaat voorsien 'n maklike en intuïtiewe manier om gewone + teks op te merk na 'n maklike leesbare formaat wat omgeskakel sal word na XHTML + wanneer dit vertoon word. Die voordeel is dat jy nie hoef  HTML te leer + om goeie resultate te verkry nie, en die teks wat jy skryf lyk goed, + selfs voor dit omgeskakel word. Jy kan dit doen eerder as om Word + dokumente as HTML te stoor, nou kan jy nog die hulpbron redigeer in 'n + gekoppelde omgewing. +

        + +

        Jy skryf basies gewone teks, en voeg dan spesiale karakters by om +die formatering te doen.

        + +

        Paragraaf blok formatering

        + +

        + Paragraaf blokke word deur ten minste een lyn geskei. Om 'n paragraaf te + formateer, voeg een van die spesiale karaketers by in die eerste karakter op + die eerste lyn van die paragraaf gevolg deur 'n spasie... +

        + + + + + + + + + + +
        KarakterBlok Tipe
        Geen karakterGewone paragraaf
        >Aanhaling
        SpasiePre-Geformateerde Teks ("Monospaced")
        %Pre-Geformateerde Teks en Wikki formaat word + geignoreer
        !#Opskrif - # is 1-6, dit is die vlak van die opskrif (1 is + die grootste)
        Q.Vraag - styl inligting word by die paragraaf gevoeg om + vraag/antwoord beter voor te dra (in tema)
        A.Antwoord - soos bogenoemde
        + +

        Lys Formatering

        + +

        Lyste kan maklik opgestel word deur 'n spesiale karakter voor aan die lys by +te sit gevolg deur 'n spasie. Die lys se einde word deur 'n oop lyn getoon. Lyste kan +binne in lyste op gestel word. Definisie Lyste se definisies en gewone teks kan +gemeng word op die regte effek te kry. Die spesiale karakters...

        + + + + + + + +
        KarakterLys item tipe
        *Ongeordende Lys ("bullets")
        #Geordende Lys (1,2,3 ens)
        :Definisie Lys, definisie
        ;Definisie Lys, teks
        + +

        Lys binne 'n lys voorbeeld:

        +

        +  * Eerste Bullet
        +  * Tweede Bullet
        +  ## lyn 1
        +  ## lyn 2
        +  * Derde Bullet
        +
        +

        Dit gee: +

        • Eerste Bullet
        • +
        • Tweede Bullet
        • +
          1. lyn 1
          2. +
          3. lyn 2
          +
        • Derde Bullet +
        + +

        Spesifieke lyn formatering

        + +

        Spesifieke lyn formatering laat 'n sekere deel van 'n lyn 'n sekere styl aan +neem. Die spesiale karakters wat gebruik word kan enige plek in die lyn voor +kom, maar die formatering kan nie lyne kruis nie. Die karakters...

        + + + + + + + + + + + + +
        VoorbeeldVoorbeeldFormatering
        *hello world*hello worldBold
        /hello world/hello worldItalics of + Beklemtoning
        +hello world+hello worldTeks wat ingesit + is
        -hello world-hello worldUitgewis of  + "Strikethrough"
        hello ~world~hello worldSubskrif
        hello ^world^hello worldSuperskrif
        "hello world"hello worldAangehaal
        %hello world%hello worldKode of  + "Monospaced"
        @hello world@hello worldAanhaling
        + +

        Akronieme

        + +

        Skryf die akroniem in hoofletters gevolg deur die beskrywing in parentese. +Daar moet geen spasie wees tussen die akroniem en die parentse nie. Voorbeeld...

        + +

        HTML(Hypertext Markup Language)
        HTML

        + +

        Hiper Skakels

        + +Skakels word in teks geplaas en gevolg deur (sonder spasies) die teks wat +vertoon moet word in hakies. Voorbeeld: http://www.google.com/(Doen Soektog) sal +omgeskakel word na Doen Soektog. + +

        Moodle Module Skakels

        + +

        As jy die Moodle id nommer (kyk vir ?id=nn aan die einde van 'n module adres) +en die module naam ken, kan jy na die hulpbron skakel met:

        + +

        ModuleName:nn(Beskrywende Teks)

        +

        vb., resource:36(My New Page) forum:10(Jump to forum)

        + +

        Moodle Prent Skakels

        + +

        Grafiese beelde kan in wiki teks gesit word. Jy moet die prent op laai(let +die pad ("path") na die prent). Die kode is:

        + +

        /..pad na lêer..(teks wat vertoon moet word)

        + +

        byvoorbeeld, /mypics/graphic.jpg(My Foto)

        + +

        Outomatiese Formatering

        + +

        Mees algemene funksies word outomaties omgeskakel na hul XHTML ekwivalent.. +Die hoof funksies...

        + +
          +
        • HTTP skakels word omgeskakel na aktiewe skakels +
        • ..., (R), (TM), (C), 1/4, 1/2, 3/4 word omgeskakel na die korrekte + karakter +
        • syfer x syfer (5 x 5), word omgeskakel na vermenigvuldig simbool +
        • 'n Lyn wat met vier koppeltekens begin word omgeskakel na een reguit lyn +
        + diff --git a/lang/af/help/workshop/addingacomment.html b/lang/af/help/workshop/addingacomment.html index 84276bfc862..d68e352f373 100644 --- a/lang/af/help/workshop/addingacomment.html +++ b/lang/af/help/workshop/addingacomment.html @@ -1 +1,20 @@ -

        Voeg Kommentaar by

        Kommentaar kan bygevoeg word om:

        1. Om 'n verduideliking by te voeg by die evaluasie(deur die student wat die werk gemerk het);
        2. Navraag doen oor stellings wat gemaak is in die evaluasie(Deur die student wie se werk dit is);
        3. Om probleme op te los wat gedurende die evaluasie ontstaan het(deur die onderwyser);

        Die doel van die kommentaar is om 'n ooreenstemming te bereik of om die persoon wat die werk gemerk het te vra om die werk weer te hersien. Die bespreking moet op 'n redelike manier gevoer word.

        As die werk gehersien is sal die ou kommentaar uitgewis word en nie meer saam met die werk vertoon word nie.

        \ No newline at end of file +

        Voeg Kommentaar by

        + +

        Kommentaar kan bygevoeg word om: + +

          +
        1. Om 'n verduideliking by te voeg by die evaluasie(deur die student wat die + werk gemerk het); +
        2. Navraag doen oor stellings wat gemaak is in die evaluasie(Deur die student + wie se werk dit is); +
        3. Om probleme op te los wat gedurende die evaluasie ontstaan het(deur die + onderwyser); +
        +

        Die doel van die kommentaar is om 'n ooreenstemming te bereik of om die +persoon wat die werk gemerk het te vra om die werk weer te hersien. Die +bespreking moet op 'n redelike manier gevoer word. + +

        As die werk gehersien is sal die ou kommentaar uitgewis word en nie meer saam +met die werk vertoon word nie. + +

        diff --git a/lang/af/help/workshop/agreeassessments.html b/lang/af/help/workshop/agreeassessments.html index 5ac7abe4f82..2fb70fb6194 100644 --- a/lang/af/help/workshop/agreeassessments.html +++ b/lang/af/help/workshop/agreeassessments.html @@ -1 +1,28 @@ -

        Ooreenkomste oor gemerkte werk

        'n Werkswinkel opdrag kan enige van die karaktertrekke hê:

        1. In die inhandig en evaluasie fase wanneer studente ander studente se werk kan sien is daar geen kommentaar van die student wie se werk dit is aan die student wat die werk moet merk nie. Daar sal terugvoer wees van die onderwyser as die onderwyser die student se evaluasie merk en 'n punt daar voor gee. Die onderwyser se kommentaar sal beskikbaar wees aan die student wie se werk dit is en die student wat die werk gemerk het.
        2. In die inhandig en evaluasie fase wanneer studente ander studente se evaluasies kan sien sal hulle toegelaat word om kommentaar by te voeg. Hulle kan met die evaluasie saamstem of nie. As hulle saamstem met die evaluasie sal die evaluasie punt gebruik word om die finale punt uit te werk. As hulle nie saamstem met die evaluasie kan die student wat dit gemerk het sy evaluasie hersien. Dit sal so aan gaan tot die student saamstem met die evaluasie of die tyd vir evaluasies verby is. As daar nog nie 'n ooreenkoms bereik is teen die tyd wat die evaluasies klaar moet wees nie sal die punt nie gebruik word om die finale punt uit te werk nie.

        In die tweede metode kan die stelling afgesit word wat punte vertoon. As die 'steek punte weg' opsie aangesit word, sal slegs kommentaar vertoon word aan die student wie se werk dit is. Die punte word slegs vertoon as 'n ooreenkoms bereik is (op kommentaar alleenlik).

        \ No newline at end of file +

        Ooreenkomste oor gemerkte werk

        + +

        'n Werkswinkel opdrag kan enige van die karaktertrekke hê: + +

          +
        1. In die inhandig en evaluasie fase wanneer studente ander studente se werk + kan sien is daar geen kommentaar van die student wie se werk dit is aan die + student wat die werk moet merk nie. Daar sal terugvoer wees van die onderwyser + as die onderwyser die student se evaluasie merk en 'n punt daar voor gee. Die + onderwyser se kommentaar sal beskikbaar wees aan die student wie se werk dit + is en die student wat die werk gemerk het. + +
        2. In die inhandig en evaluasie fase wanneer studente ander studente se + evaluasies kan sien sal hulle toegelaat word om kommentaar by te voeg. Hulle + kan met die evaluasie saamstem of nie. As hulle saamstem met die evaluasie sal + die evaluasie punt gebruik word om die finale punt uit te werk. As hulle nie + saamstem met die evaluasie kan die student wat dit gemerk het sy evaluasie + hersien. Dit sal so aan gaan tot die student saamstem met die evaluasie of die + tyd vir evaluasies verby is. As daar nog nie 'n ooreenkoms bereik is teen die + tyd wat die evaluasies klaar moet wees nie sal die punt nie gebruik word om + die finale punt uit te werk nie. +
        +

        In die tweede metode kan die stelling afgesit word wat punte vertoon. As die +'steek punte weg' opsie aangesit word, sal slegs kommentaar vertoon word aan die +student wie se werk dit is. Die punte word slegs vertoon as 'n ooreenkoms bereik +is (op kommentaar alleenlik). + +

        diff --git a/lang/af/help/workshop/anonymous.html b/lang/af/help/workshop/anonymous.html index 1026696e34a..799fc8a923e 100644 --- a/lang/af/help/workshop/anonymous.html +++ b/lang/af/help/workshop/anonymous.html @@ -1 +1,12 @@ -

        Anonieme Evaluasies

        'n Klasgenoot kan anoniem 'n evaluasie doen. In die geval sal die student se naam (en foto) nie vertoon word nie. Slegs lêername word gebruik om stukke werk te identifiseer en te merk.

        As die evaluasie nie anoniem is nie, dan sal werkstukke vertoon word met die naam (en foto) van die student wie se werk dit is. Dit mag dalk die punte toekenning beïnvloed.

        Let Wel: onderwyser punte wat aan studente getoon word is nooit anoniem nie.

        \ No newline at end of file +

        Anonieme Evaluasies

        + +

        'n Klasgenoot kan anoniem 'n evaluasie doen. In die geval sal die student se +naam (en foto) nie vertoon word nie. Slegs lêername word gebruik om stukke werk +te identifiseer en te merk. + +

        As die evaluasie nie anoniem is nie, dan sal werkstukke vertoon word met die +naam (en foto) van die student wie se werk dit is. Dit mag dalk die punte +toekenning beïnvloed. + +

        Let Wel: onderwyser punte wat aan studente getoon word is nooit anoniem nie. +

        diff --git a/lang/af/help/workshop/assignmenttype.html b/lang/af/help/workshop/assignmenttype.html index e40ba9934c4..75ea82593d1 100644 --- a/lang/af/help/workshop/assignmenttype.html +++ b/lang/af/help/workshop/assignmenttype.html @@ -1 +1,18 @@ -

        Klasgenoot evaluasie

        'n Klasgenoot evaluasie moet een van twee tipes wees:

        1. Slegs terugvoer oor evaluasie elemente en algemene kommentaar word gebruik. Die evaluasie van die elemente word nie vertoon op die punte bladsy nie. Werksopdragte self kry nie 'n punt nie maar die student se evaluasie van die werkstuk. Slegs die student se evaluasie van werkstukke dra by tot die finale punt wat hy verkry.
        2. Hier moet die onderwyser en klasgenote die werkstukke evalueer en 'n punt gee. Die werkstukke kry 'n algehele kwalitatiewe en kwantitatiewe punt. Die finale punt van die student sal bereken word van die onderwyser se punt, die gemiddelde punt van klasgenote en die student se evaluasie punt.
        \ No newline at end of file +

        Klasgenoot evaluasie

        + +

        'n Klasgenoot evaluasie moet een van twee tipes wees: + +

          +
        1. Slegs terugvoer oor evaluasie elemente en algemene kommentaar word gebruik. + Die evaluasie van die elemente word nie vertoon op die punte bladsy nie. + Werksopdragte self kry nie 'n punt nie maar die student se evaluasie van die + werkstuk. Slegs die student se evaluasie van werkstukke dra by tot die finale + punt wat hy verkry. + +
        2. Hier moet die onderwyser en klasgenote die werkstukke evalueer en 'n punt + gee. Die werkstukke kry 'n algehele kwalitatiewe en kwantitatiewe punt. Die + finale punt van die student sal bereken word van die onderwyser se punt, die + gemiddelde punt van klasgenote en die student se evaluasie punt. + +
        + diff --git a/lang/af/help/workshop/breakdownoffinalgrade.html b/lang/af/help/workshop/breakdownoffinalgrade.html index dc518cdce63..7b1325945be 100644 --- a/lang/af/help/workshop/breakdownoffinalgrade.html +++ b/lang/af/help/workshop/breakdownoffinalgrade.html @@ -1 +1,22 @@ -

        Berekening van die finale punt

        Die tabel op die skerm wys jou hoe die finale punt saamgestel is. Daar is drie moontlike komponente.

        1. Die onderwyser se punt vir die werkstuk.
        2. Die gemiddeld van die klasgenote se punt.
        3. 'n Punt vir die student in die evaluasie fase. Dit word gebaseer op (a) student se punte te hoog of te laag was in vergelyking teenoor die ander studente(bevooroordeeld), (b) of student se punte volg, weereens gebaseer op die gemiddeld van ander studente (betroubaarheid) en (c) op die kwaliteit van kommentaar wat die student op ander studente se werk gelewer het. Dit word deur die onderwyser gemerk. Die drie punte word op die volgende maniere geweeg 1:2:3 om die totale punt uit te werk. Die onderwyser se punt kry dieselfde gewig as die bevooroordeeld en bertoubaarheid punt.

        Die gewig kan self opgestel word om aan te pas by 'n opdrag. Die gewigte word gewys op die kleiner tabel.

        \ No newline at end of file +

        Berekening van die finale punt

        + +

        Die tabel op die skerm wys jou hoe die finale punt saamgestel is. Daar is +drie moontlike komponente. + +

          +
        1. Die onderwyser se punt vir die werkstuk. +
        2. Die gemiddeld van die klasgenote se punt. +
        3. 'n Punt vir die student in die evaluasie fase. Dit word gebaseer op (a) + student se punte te hoog of te laag was in vergelyking teenoor die ander + studente(bevooroordeeld), + (b) of student se punte volg, weereens gebaseer op die gemiddeld van ander + studente (betroubaarheid) en (c) op die kwaliteit van kommentaar wat die + student op ander studente se werk gelewer het. Dit word deur die onderwyser + gemerk. Die drie punte word op die volgende maniere geweeg 1:2:3 om die totale + punt uit te werk. Die onderwyser se punt kry dieselfde gewig as die + bevooroordeeld en bertoubaarheid punt. +
        + +

        Die gewig kan self opgestel word om aan te pas by 'n opdrag. Die gewigte word +gewys op die kleiner tabel. +

        diff --git a/lang/af/help/workshop/calculatingfinalgrade.html b/lang/af/help/workshop/calculatingfinalgrade.html index 04562230837..08200cd2103 100644 --- a/lang/af/help/workshop/calculatingfinalgrade.html +++ b/lang/af/help/workshop/calculatingfinalgrade.html @@ -1 +1,45 @@ -

        Berekening van die final punt

        Die tabel op die skerm wys hoe die student se finale punt bereken is. Die finale punt is die som van vyf geweegde komponente.

        1. Die onderwyser se punt. Dit is optioneel en word slegs gebruik as die onderwyser die werk gemerk het. As die student meer as een werkstuk in lewer word die beste punt gevat. Hier beteken hoogste punt die hoogste punt van die geweegde kombinasie tussen die onderwyser se punt en die klasgenote se punt...
        2. Die gemiddeld van die klasgenote se punt vir die werk. As die student meer as een werkstuk ingelewer het word die beste punt gevat. Die punt kan optioneel die onderwyser se punt insluit. Dit kan ingesluit word omdat die klasgenote se punt baie laag is of as dit bleik dat die klasgenoot punt  bevooroordeeld is(gewoonlik baie hoog) of nie betroubaar is nie. As die onderwyser se punt ingesluit word, word dit dieselfde behandel as die ander punte om 'n gemiddeld uit te werk.
        3. Die studente se bevooroordeelde punte. As die studente se punte te hoog of te laag is. Dit is nie 'n absolute maatstaf  nie aangesien dit gebaseer is op die verskil tussen die student se punt en die klasgenote se gemiddelde punt vir elke werkstuk wat hulle gemerk het. Oor die algemeen behoort die komponent nie 'n hoë gewig te hê nie.
        4. Die studente se betroubaarheid.Dit meet hoe goed die student ander studente se gemiddelde punt volg. Teoreties as 'n student hoë punte gee vir goeie werk en lae punte vir slegte werk sal sy betroubaarheid hoog wees.
        5. Die gemiddelde punt wat die onderwyser gee vir die student se evaluasies van ander se werk. Dit sluit in evaluasies wat die student gemaak het op voorbeeld werkstukke en punte wat die onderwyser toeken gedurende die evaluasie fase. Oor die algemeen is die komponent meer belangrik as komponent 3 en 4 en moet meer geweeg word as die vorige twee.

        Die vyf komponente kan geweeg word om aan te pas by die opdrag. Byvoorbeeld die onderwyser se punt sal baie hoër geweeg word as die studente se evalusies van ander se werk nie 'n groot deel van die opdrag uitmaak nie. As die onderwyser net 'n paar werkstukke merk kan die punte geignoreer word deur die gewig na 0 te stel. As die opdrag gaan oor die studente se evaluasies en oordeel kan die vorige twee komponente na 0 gestel word en die punt sal slegs uitgewerk word op hulle oordeel vermoë.

        Let Wel: die skerm word herhaaldelik gebruik en die finale punt word gewoonlik eers ingesluit as al die fases afgehandel is. As die onderwyser tevrede met die finale punt en die gewig kan die punte aan die studente bekend gemaak word.

        \ No newline at end of file +

        Berekening van die final punt

        + +

        Die tabel op die skerm wys hoe die student se finale punt bereken is. Die +finale punt is die som van vyf geweegde komponente. + +

          +
        1. Die onderwyser se punt. Dit is optioneel en word slegs gebruik as die + onderwyser die werk gemerk het. As die student meer as een werkstuk in lewer + word die beste punt gevat. Hier beteken hoogste punt die hoogste punt van die + geweegde kombinasie tussen die onderwyser se punt en die klasgenote se punt... +
        2. Die gemiddeld van die klasgenote se punt vir die werk. As die student meer + as een werkstuk ingelewer het word die beste punt gevat. Die punt kan + optioneel die onderwyser se punt insluit. Dit kan ingesluit word omdat die + klasgenote se punt baie laag is of as dit bleik dat die klasgenoot punt  + bevooroordeeld is(gewoonlik baie hoog) of nie betroubaar is nie. As die + onderwyser se punt ingesluit word, word dit dieselfde behandel as die ander + punte om 'n gemiddeld uit te werk. +
        3. Die studente se bevooroordeelde punte. As die studente se punte te + hoog of te laag is. Dit is nie 'n absolute maatstaf  nie aangesien dit + gebaseer is op die verskil tussen die student se punt en die klasgenote se + gemiddelde punt vir elke werkstuk wat hulle gemerk het. Oor die algemeen + behoort die komponent nie 'n hoë gewig te hê nie. +
        4. Die studente se betroubaarheid.Dit meet hoe goed die student ander + studente se gemiddelde punt volg. Teoreties as 'n student hoë punte gee vir + goeie werk en lae punte vir slegte werk sal sy betroubaarheid hoog wees. +
        5. Die gemiddelde punt wat die onderwyser gee vir die student se evaluasies van + ander se werk. Dit sluit in evaluasies wat die student gemaak het op voorbeeld + werkstukke en punte wat die onderwyser toeken gedurende die evaluasie fase. + Oor die algemeen is die komponent meer belangrik as komponent 3 en 4 en moet + meer geweeg word as die vorige twee. +
        + +

        Die vyf komponente kan geweeg word om aan te pas by die opdrag. Byvoorbeeld +die onderwyser se punt sal baie hoër geweeg word as die studente se evalusies van +ander se werk nie 'n groot deel van die opdrag uitmaak nie. As die onderwyser +net 'n paar werkstukke merk kan die punte geignoreer word deur die gewig na 0 te +stel. As die opdrag gaan oor die studente se evaluasies en oordeel kan die +vorige twee komponente na 0 gestel word en die punt sal slegs uitgewerk word op +hulle oordeel vermoë. + +

        Let Wel: die skerm word herhaaldelik gebruik en die finale punt word +gewoonlik eers ingesluit as al die fases afgehandel is. As die onderwyser +tevrede met die finale punt en die gewig kan die punte aan die studente bekend +gemaak word. +

        diff --git a/lang/af/help/workshop/editingacomment.html b/lang/af/help/workshop/editingacomment.html index 3183bc1f34c..1df16d00b8e 100644 --- a/lang/af/help/workshop/editingacomment.html +++ b/lang/af/help/workshop/editingacomment.html @@ -1 +1,6 @@ -

        Redigeer kommentaar

        Soos met ander items word daar 'n kort tydperk toe gelaat om kommentaar te redigeer. Die kommentaar word nie saam met die werkstuk vertoon totdat die periode verby is nie.

        \ No newline at end of file +

        Redigeer kommentaar

        + +

        Soos met ander items word daar 'n kort tydperk toe gelaat om kommentaar te +redigeer. Die kommentaar word nie saam met die werkstuk vertoon totdat die +periode verby is nie. +

        diff --git a/lang/af/help/workshop/elements.html b/lang/af/help/workshop/elements.html index 1fd580562af..e0ac45a3ddb 100644 --- a/lang/af/help/workshop/elements.html +++ b/lang/af/help/workshop/elements.html @@ -1,12 +1,54 @@ -

        Opdrag elemente

        -

        Om evaluasie te vergemaklik, moet elke opdrag 'n paar "Opdrag Elemente" bevat. Elke element handel oor 'n sekere aspek van die opdrag . 'n Tipiese opdrag sal tussen 5 en 15 elemente hê vir kommentaar en evaluasie, dit sal afhang van hoe ingewikkeld en hoe lank die opdrag is. 'n Klasgenoot opdrag met net een element word toegelaat en is dieselfde as 'n standaard Moodle opdrag.

        -

        Die tipe elemente hang af van die opdrag se evaluasie strategie.

        -

        Geen evaluasie. Elemente beskryf aspekte van die opdrag. Die persoon wat die opdrag evalueer moet op al die aspekte kommentaar lewer. Soos met alle strategië is daar 'n plek vir algemene kommentaar.

        -

        Akkumulatiewe evaluasie. Die elemente het die volgende kenmerke:

        -
          -
        1. Die BESKRYWING van die element. Dit moet duidelik stel watter aspek van die opdrag word geevalueer. As die evaluasie kwalitatief is, is dit behulpsaam om te sê wat word beskou as Uitstekend, Gemiddeld of Swak .
        2. -
        3. Die SKAAL van die element. Daar is 'n paar gedefinieerde skale. Daar is van eenvoudige Ja/Nee skale, tot meervoudige skale tot volle persentasie skale. Kies die skaal om aan te pas by die aantal variasies wat die element kan hê. Let Wel: die skaal bepaal nie die element se gewig met die bepaling van die finale punt nie, 'n 2 punt skaal tel dieselfde as 'n 100 punt skaal as hulle dieselfde gewig het...
        4. -
        5. Die GEWIG van die element. Met verstek word dieselfde gewig toegeken aan al die elemente met die berekening van die finale punt. Dit kan verander word deur belangrike elemente 'n gewig te gee meer as een, en minder belangrike elemente 'n gewig minder as een. Om die gewig te verander, verander nie die maksimum van die totale punt nie, die waarde word bepaal deur die MAKSIMUM PUNT stelling by die klasgenoot opdrag. Gewigte kan 'n negatiewe gewig kry (daar word nog ge-eksperimenteer met die stelling).
        6. -
        -

        Aspekte wat ingesluit moet word. Die elemente sal items of aspekte beskryf wat ingesluit moet word by die opdrag. Die evaluasie word gebaseer op die feit dat elemente ingesluit is of nie. Die onderwyser moet 'n tabel opstel met voorgestelde punte wanneer al die aspekte ingesluit is, as een nie ingesluit is nie, as twee nie ingesluit is nie, ens. As party items belangriker is as ander kan hulle 'n gewig kry van groter as een. Minder belangriker items kan 'n gewig kry van minder as een. Die totale "fout optelling" is die som van die gewig van alle items wat weggelaat is. Die persoon wat die werk evalueer kan altyd klein verstellings maak aan die gewig.

        -

        Evaluasie kriteria. Die elemente sal elk 'n stel "vlak" stellings hê wat gebruik kan word om die opdrag mee te evalueer. Die stellings kan akumulatief wees of self behoudend. Die evalueerder moet besluit watter stelling pas die beste by die opdrag. Die onderwyser moet vir elke stelling 'n punt gee. Dit sal normaalweg in rangorde volg. Die evalueerder kan klein verstellings maak aan die punte.

        \ No newline at end of file +

        Opdrag elemente

        + +

        Om evaluasie te vergemaklik, moet elke opdrag 'n paar "Opdrag +Elemente" bevat. Elke element handel oor 'n sekere aspek van die opdrag . +'n Tipiese opdrag sal tussen 5 en 15 elemente hê vir kommentaar en evaluasie, +dit sal afhang van hoe ingewikkeld en hoe lank die opdrag is. 'n Klasgenoot +opdrag met net een element word toegelaat en is dieselfde as 'n standaard Moodle +opdrag. + +

        Die tipe elemente hang af van die opdrag se evaluasie strategie. + +

        Geen evaluasie. Elemente beskryf aspekte van die opdrag. Die persoon +wat die opdrag evalueer moet op al die aspekte kommentaar lewer. Soos met alle +strategië is daar 'n plek vir algemene kommentaar. + + +

        Akkumulatiewe evaluasie. Die elemente het die volgende kenmerke: +

          +
        1. Die BESKRYWING van die element. Dit moet duidelik stel watter aspek van die + opdrag word geevalueer. As die evaluasie kwalitatief is, is dit behulpsaam om + te sê wat word beskou as Uitstekend, Gemiddeld of Swak . + +
        2. Die SKAAL van die element. Daar is 'n paar gedefinieerde skale. Daar is van + eenvoudige Ja/Nee skale, tot meervoudige skale tot volle persentasie skale. + Kies die skaal om aan te pas by die aantal variasies wat die element kan hê. + Let Wel: die skaal bepaal nie die element se gewig met die bepaling van die + finale punt nie, 'n 2 punt skaal tel dieselfde as 'n 100 punt skaal as hulle + dieselfde gewig het... + +
        3. Die GEWIG van die element. Met verstek word dieselfde gewig toegeken aan al + die elemente met die berekening van die finale punt. Dit kan verander word + deur belangrike elemente 'n gewig te gee meer as een, en minder belangrike + elemente 'n gewig minder as een. Om die gewig te verander, verander nie die + maksimum van die totale punt nie, die waarde word bepaal deur die MAKSIMUM + PUNT stelling by die klasgenoot opdrag. Gewigte kan 'n negatiewe gewig kry + (daar word nog ge-eksperimenteer met die stelling). +
        +

        Aspekte wat ingesluit moet word. Die elemente sal items of aspekte +beskryf wat ingesluit moet word by die opdrag. Die evaluasie word gebaseer op die +feit dat elemente ingesluit is of nie. Die onderwyser moet 'n tabel opstel met +voorgestelde punte wanneer al die aspekte ingesluit is, as een nie ingesluit is +nie, as twee nie ingesluit is nie, ens. As party items belangriker is as ander +kan hulle 'n gewig kry van groter as een. Minder belangriker items kan 'n +gewig kry van minder as een. Die totale "fout optelling" is die som +van die gewig van alle items wat weggelaat is. Die persoon wat die werk evalueer +kan altyd klein verstellings maak aan die gewig. + +

        Evaluasie kriteria. Die elemente sal elk 'n stel "vlak" +stellings hê wat gebruik kan word om die opdrag mee te evalueer. Die stellings +kan akumulatief wees of self behoudend. Die evalueerder moet besluit watter +stelling pas die beste by die opdrag. Die onderwyser moet vir elke stelling 'n +punt gee. Dit sal normaalweg in rangorde volg. Die evalueerder kan klein +verstellings maak aan die punte. +

        \ No newline at end of file diff --git a/lang/af/help/workshop/finalgrades.html b/lang/af/help/workshop/finalgrades.html index 63db0be71e5..94f3f706603 100644 --- a/lang/af/help/workshop/finalgrades.html +++ b/lang/af/help/workshop/finalgrades.html @@ -1 +1,19 @@ -

        Die finale punt

        Die tabel op die skerm wys die finale punt en hoe die punt opgemaak is (dit is hoe dit aan die student vertoon sal word). As daar waardes is wat weggelaat is, is dit moontlik om terug te gaan en die waardes by te sit. Daar is twee tipes veranderings wat aan die finale punt gebring kan word.

        1. As die onderwyser se punt bygesit moet word dan kan die werkstuk gemerk word deur na die onderwyser se Bestuur skerm te gaan en op die "Student se werk" skakel te klik. Enige werkstukke wat nie ingehandig is nie kan ook gemerk word. As die werk klaar gemerk is skuif die opdrag na Fase 3 toe om die finale punt te bereken. Op die manier kan ongemerkte opdragte ook gemerk word.
        2. As 'n ander gewig skema gebruik moet word, skuif die opdrag terug na Fase 3 en die "Bereken Finale Punt" skakel kan geklik word en nuwe gewigte kan gestel word. As die gewigte gestel is, skuif die opdrag na Fase 4 om die punte aan die studente te vertoon.
        \ No newline at end of file +

        Die finale punt

        + +

        Die tabel op die skerm wys die finale punt en hoe die punt opgemaak is (dit +is hoe dit aan die student vertoon sal word). As daar waardes is wat weggelaat +is, is dit moontlik om terug te gaan en die waardes by te sit. Daar is twee +tipes veranderings wat aan die finale punt gebring kan word. + +

          +
        1. As die onderwyser se punt bygesit moet word dan kan die werkstuk gemerk word + deur na die onderwyser se Bestuur skerm te gaan en op die "Student se + werk" skakel te klik. Enige werkstukke wat nie ingehandig is nie kan ook + gemerk word. As die werk klaar gemerk is skuif die opdrag na Fase 3 toe om die + finale punt te bereken. Op die manier kan ongemerkte opdragte ook gemerk word. +
        2. As 'n ander gewig skema gebruik moet word, skuif die opdrag terug na Fase 3 + en die "Bereken Finale Punt" skakel kan geklik word en nuwe gewigte + kan gestel word. As die gewigte gestel is, skuif die opdrag na Fase 4 om die + punte aan die studente te vertoon. +
        + diff --git a/lang/af/help/workshop/graded.html b/lang/af/help/workshop/graded.html index e60ebbcd697..e43ebfcfda3 100644 --- a/lang/af/help/workshop/graded.html +++ b/lang/af/help/workshop/graded.html @@ -1 +1,13 @@ -

        'n Gemerkte klasgenoot opdrag

        Dit vertoon kommentaar en punte saam met 'n werkstuk wat gemerk is. As jy nie tevrede is met die evaluasie nie kan jy terugvoer lewer op die kommentaar wat gelewer is en nie die punt aanvaar nie (in die fase). As dit die geval is, onder aan die skerm is daar plek om jou terugvoer in te skryf. Druk dan die knoppie onderaan die skerm en kies NEE as jy gevra word of jy tevrede is met die evaluasie.

        As jy tevrede is met die evaluasie klik die knoppie onder aan die skerm en kies JA.

        \ No newline at end of file +

        'n Gemerkte klasgenoot opdrag

        + +

        Dit vertoon kommentaar en punte saam met 'n werkstuk wat gemerk is. As jy nie +tevrede is met die evaluasie nie kan jy terugvoer lewer op die kommentaar wat +gelewer is en nie die punt aanvaar nie (in die fase). As dit die geval is, onder +aan die skerm is daar plek om jou terugvoer in te skryf. Druk dan die knoppie +onderaan die skerm en kies NEE as jy gevra word of jy tevrede is met die +evaluasie. + +

        As jy tevrede is met die evaluasie klik die knoppie onder aan die skerm en +kies JA. + +

        diff --git a/lang/af/help/workshop/grading.html b/lang/af/help/workshop/grading.html index f27220a2d21..ff2df16f7c1 100644 --- a/lang/af/help/workshop/grading.html +++ b/lang/af/help/workshop/grading.html @@ -1 +1,27 @@ -

        Om klasgenote se werk te merk

        Om evaluasie te vergemaklik word opdragte in 'n paar evaluasie elemente verdeel. Elke element handel oor 'n sekere aspek van die opdrag. Afhangend van die tipe opdrag, moet jy vir elke element:

        1. 'n Punt kies deur op 'n knoppie te druk of van die kieslys af kies.
        2. Verduidelik hoekom jy die punt gegee het in die terugvoer blok. As die rede voor die handliggend is kan die blok oop gelos word. Let Wel: onderwysers mag dalk navraag doen as daar geen verduidlikings is nie.

        In ander tipes van evalueering sal jy gevra word om vas te stel of sekere elemente aanwesig is, in ander sal jy gevra word om te kies watter stelling pas die beste by die opdrag. In albei die gevalle kan jy die punte aanpas om by die opdrag te pas.

        Die laaste blok laat jou toe om algemene kommentaar te lewer. Dit sal jou toelaat om jou evaluasie te verduidlik. Die terugvoer sal aan die student getoon word wat die werk ingelewer het.

        Jy het 'n sekere tydperk, gewoonlik 'n half uur, om veranderinge aan te bring aan jou punte of kommentaar. As die periode verby is sal die student verwittig word dat sy werk gemerk is. In die fase sal jy slegs kan kyk na jou kommentaar maar nie veranderinge kan aanbring nie.

        \ No newline at end of file +

        Om klasgenote se werk te merk

        + +

        Om evaluasie te vergemaklik word opdragte in 'n paar evaluasie elemente +verdeel. Elke element handel oor 'n sekere aspek van die opdrag. Afhangend van +die tipe opdrag, moet jy vir elke element: +

          +
        1. 'n Punt kies deur op 'n knoppie te druk of van die kieslys af kies. + +
        2. Verduidelik hoekom jy die punt gegee het in die terugvoer blok. As die rede + voor die handliggend is kan die blok oop gelos word. Let Wel: onderwysers mag dalk navraag doen as daar geen verduidlikings is nie. +
        + +

        In ander tipes van evalueering sal jy gevra word om vas te stel of sekere +elemente aanwesig is, in ander sal jy gevra word om te kies watter stelling pas +die beste by die opdrag. In albei die gevalle kan jy die punte aanpas om by die +opdrag te pas. + +

        Die laaste blok laat jou toe om algemene kommentaar te lewer. Dit sal jou +toelaat om jou evaluasie te verduidlik. Die terugvoer sal aan die student getoon +word wat die werk ingelewer het. + +

        Jy het 'n sekere tydperk, gewoonlik 'n half uur, om veranderinge aan te bring +aan jou punte of kommentaar. As die periode verby is sal die student verwittig +word dat sy werk gemerk is. In die fase sal jy slegs kan kyk na jou kommentaar +maar nie veranderinge kan aanbring nie. + +

        diff --git a/lang/af/help/workshop/gradingassessments.html b/lang/af/help/workshop/gradingassessments.html index 8be4e3c7aab..408c9dc6939 100644 --- a/lang/af/help/workshop/gradingassessments.html +++ b/lang/af/help/workshop/gradingassessments.html @@ -1 +1,19 @@ -

        Punte toekenning vir studente se evaluasies

        Op die skerm gee die onderwyser 'n punt vir die student se evaluasie wat gemaak is gedurende die inlewerings en evaluasie fase van die opdrag. 'n Eenvoudige evaluasie metode word gebruik - 'n punt word gegee uit 20. Die onderwyser besluit waarna gekyk moet word in die evaluasie en gee 'n punt daarvolgens. Byvoorbeeld, op 'n hoë vlak moet die student kritiese kommentaar lewer, op 'n standaard vlak moet die student sterk en swak punte uit wys, en op 'n lae vlak hoef studente slegs foute uit te wys.

        As beskikbaar, sal die onderwyser se kommentaar voor die student s'n gewys word om maklik vergelykings te maak. Die onderwyser se kommentaar is min of meer 'n mikpunt vir studente.

        Die punte word gestoor deur op die geskikte knoppie onder aan die bladsy te klik. Daar is 'n kans om die punte te redigeer voor die "redigerings" periode verby is. As die periode verby is word die punte aan die student wie se werk dit is beskikbaar gestel.

        \ No newline at end of file +

        Punte toekenning vir studente se evaluasies

        + +

        Op die skerm gee die onderwyser 'n punt vir die student se evaluasie wat +gemaak is gedurende die inlewerings en evaluasie fase van die opdrag. 'n +Eenvoudige evaluasie metode word gebruik - 'n punt word gegee uit 20. Die +onderwyser besluit waarna gekyk moet word in die evaluasie en gee 'n punt +daarvolgens. Byvoorbeeld, op 'n hoë vlak moet die student kritiese kommentaar +lewer, op 'n standaard vlak moet die student sterk en swak punte uit wys, en op +'n lae vlak hoef studente slegs foute uit te wys. + +

        As beskikbaar, sal die onderwyser se kommentaar voor die student s'n gewys +word om maklik vergelykings te maak. Die onderwyser se kommentaar is min of meer +'n mikpunt vir studente. + +

        Die punte word gestoor deur op die geskikte knoppie onder aan die bladsy te +klik. Daar is 'n kans om die punte te redigeer voor die "redigerings" +periode verby is. As die periode verby is word die punte aan die student wie se +werk dit is beskikbaar gestel. +

        diff --git a/lang/af/help/workshop/gradingstrategy.html b/lang/af/help/workshop/gradingstrategy.html index 7b83061bfe8..4532e801a83 100644 --- a/lang/af/help/workshop/gradingstrategy.html +++ b/lang/af/help/workshop/gradingstrategy.html @@ -1,15 +1,56 @@ -

        Evaluasie strategie

        -

        Daar is 'n paar evaluasie strategië beskikbaar:

        -
          -
        1. Geen punte toekenning In die tipe opdrag gee studente nie 'n kwantitatiewe evaluasie nie. Die studente lewer kommentaar maar gee nie 'n punt nie. Die onderwyser kan wel vir die studente se kommentaar punte gee. Die punte vorm die basis van die student se finale punt. As die onderwyser nie punte toeken nie sal daar geen finale punt wees vir die opdrag nie.
        2. -
        3. Akkumulatiewe evaluasie. Om evaluasie te vergemaklik, moet elke opdrag 'n paar "Opdrag Elemente" bevat. Elke element handel oor 'n sekere aspek van die opdrag . 'n Tipiese opdrag sal tussen 5 en 15 elemente hê vir kommentaar en evaluasie, dit sal afhang van hoe ingewikkeld en hoe lank die opdrag is. 'n Klasgenoot opdrag met net een element word toegelaat en is dieselfde as 'n standaard Moodle opdrag. -

          Die elemente het die volgende kenmerke:

          -
            -
          1. Die BESKRYWING van die element. Dit moet duidelik stel watter aspek van die opdrag word geevalueer. As die evaluasie kwalitatief is, is dit behulpsaam om te sê wat word beskou as Uitstekend, Gemiddeld of Swak .
          2. -
          3. Die SKAAL van die element. Daar is 'n paar gedefinieerde skale. Daar is van eenvoudige Ja/Nee skale, tot meervoudige skale tot volle persentasie skale. Kies die skaal om aan te pas by die aantal variasies wat die element kan hê. Let Wel: die skaal bepaal nie die element se gewig met die bepaling van die finale punt nie, 'n 2 punt skaal tel dieselfde as 'n 100 punt skaal as hulle dieselfde gewig het...
          4. -
          5. Die GEWIG van die element. Met verstek word dieselfde gewig toe geken aan al die elemente met die berekening van die finale punt. Dit kan verander word deur belangrike elemente 'n gewig te gee meer as een, en minder belangrike elemente 'n gewig minder as een. Om die gewig te verander, verander nie die maksimum van die totale punt nie, die waarde word bepaal deur die MAKSIMUM PUNT stelling by die klasgenoot opdrag. Gewigte kan 'n negatiewe gewig kry (daar word nog ge-eksperimenteer met die stelling).
          6. -
        4. -
        5. Aspekte wat ingesluit moet word. Die elemente sal items of aspekte beskryf wat ingesluit moet word by die opdrag. Die evaluasie word gebaseer op die feit dat elemente ingesluit is of nie. Die onderwyser moet 'n tabel opstel met voorgestelde punte wanneer al die aspekte ingesluit is, as een nie ingesluit is nie, as twee nie ingesluit is nie, ens. As party items belangriker is as ander kan hulle 'n gewig kry van groter as een. Minder belangriker items kan 'n gewig kry van minder as een. Die totale "fout optelling" is die som van die gewig van alle items wat weggelaat is. Die persoon wat die werk evalueer kan altyd klein verstellings maak aan die gewig.
        6. -
        7. Evaluasie kriteria. Die elemente sal elk 'n stel "vlak" stellings hê wat gebruik kan word om die opdrag mee te evalueer. Die stellings kan akumulatief wees of self behoudend. Die evalueerder moet besluit watter stelling pas die beste by die opdrag. Die onderwyser moet vit elke stelling 'n punt gee. Dit sal normaalweg in rangorde volg. Die evalueerder kan klein verstellings maak aan die punte.
        8. -
        \ No newline at end of file +

        Evaluasie strategie

        + +

        Daar is 'n paar evaluasie strategië beskikbaar: + +

          +
        1. Geen punte toekenning In die tipe opdrag gee studente nie 'n + kwantitatiewe evaluasie nie. Die studente lewer kommentaar maar gee nie 'n + punt nie. Die onderwyser kan wel vir die studente se kommentaar punte gee. Die + punte vorm die basis van die student se finale punt. As die onderwyser nie + punte toeken nie sal daar geen finale punt wees vir die opdrag nie. + +
        2. Akkumulatiewe evaluasie. Om evaluasie te vergemaklik, moet elke + opdrag 'n paar "Opdrag Elemente" bevat. Elke element handel oor 'n + sekere aspek van die opdrag . 'n Tipiese opdrag sal tussen 5 en 15 elemente + hê vir kommentaar en evaluasie, dit sal afhang van hoe ingewikkeld en hoe + lank die opdrag is. 'n Klasgenoot opdrag met net een element word toegelaat en + is dieselfde as 'n standaard Moodle opdrag. +

          Die elemente het die volgende kenmerke: +

            +
          1. Die BESKRYWING van die element. Dit moet duidelik stel watter aspek van + die opdrag word geevalueer. As die evaluasie kwalitatief is, is dit + behulpsaam om te sê wat word beskou as Uitstekend, Gemiddeld of Swak . +
          2. Die SKAAL van die element. Daar is 'n paar gedefinieerde skale. Daar is + van eenvoudige Ja/Nee skale, tot meervoudige skale tot volle persentasie + skale. Kies die skaal om aan te pas by die aantal variasies wat die + element kan hê. Let Wel: die skaal bepaal nie die element se gewig met + die bepaling van die finale punt nie, 'n 2 punt skaal tel dieselfde as 'n + 100 punt skaal as hulle dieselfde gewig het... +
          3. Die GEWIG van die element. Met verstek word dieselfde gewig toe geken + aan al die elemente met die berekening van die finale punt. Dit kan + verander word deur belangrike elemente 'n gewig te gee meer as een, en + minder belangrike elemente 'n gewig minder as een. Om die gewig te + verander, verander nie die maksimum van die totale punt nie, die waarde + word bepaal deur die MAKSIMUM PUNT stelling by die klasgenoot opdrag. + Gewigte kan 'n negatiewe gewig kry (daar word nog ge-eksperimenteer met die + stelling).
          4. +
          +   +
        3. Aspekte wat ingesluit moet word. Die elemente sal items of aspekte + beskryf wat ingesluit moet word by die opdrag. Die evaluasie word gebaseer op + die feit dat elemente ingesluit is of nie. Die onderwyser moet 'n tabel opstel + met voorgestelde punte wanneer al die aspekte ingesluit is, as een nie + ingesluit is nie, as twee nie ingesluit is nie, ens. As party items belangriker + is as ander kan hulle 'n gewig kry van groter as een. Minder belangriker + items kan 'n gewig kry van minder as een. Die totale "fout + optelling" is die som van die gewig van alle items wat weggelaat is. Die + persoon wat die werk evalueer kan altyd klein verstellings maak aan die gewig.
        4. + +
        5. Evaluasie kriteria. Die elemente sal elk 'n stel "vlak" + stellings hê wat gebruik kan word om die opdrag mee te evalueer. Die + stellings kan akumulatief wees of self behoudend. Die evalueerder moet besluit + watter stelling pas die beste by die opdrag. Die onderwyser moet vit elke + stelling 'n punt gee. Dit sal normaalweg in rangorde volg. Die evalueerder kan + klein verstellings maak aan die punte. +
        + diff --git a/lang/af/help/workshop/includeself.html b/lang/af/help/workshop/includeself.html index 6670938c7ed..d03be22beb2 100644 --- a/lang/af/help/workshop/includeself.html +++ b/lang/af/help/workshop/includeself.html @@ -1 +1,11 @@ -

        Sluit eie werk in

        Die evaluasie opdrag kan ook die student se eie werk insluit. Byvoorbeeld: as 'n student vyf werkstukke moet merk sal die student gevra word om ses werkstukke te merk, die sesde werkstuk sal sy eie werk wees.

        As die aantal merkers na 0 gestel word en "die sluit eie werk in" opsie is aan sal die student sy eie werk moet merk. Die punt mag dalk ook die onderwyser se punt insluit (as die onderwyser wil).

        \ No newline at end of file +

        Sluit eie werk in

        + +

        Die evaluasie opdrag kan ook die student se eie werk insluit. Byvoorbeeld: as +'n student vyf werkstukke moet merk sal die student gevra word om ses werkstukke +te merk, die sesde werkstuk sal sy eie werk wees. + +

        As die aantal merkers na 0 gestel word en "die sluit eie werk in" opsie is aan sal +die student sy eie werk moet merk. Die punt mag dalk ook die onderwyser se punt +insluit (as die onderwyser wil). + +

        diff --git a/lang/af/help/workshop/managing.html b/lang/af/help/workshop/managing.html index 6778b2b4d76..5919e674fbe 100644 --- a/lang/af/help/workshop/managing.html +++ b/lang/af/help/workshop/managing.html @@ -1 +1,46 @@ -

        Bestuur van 'n werkswinkel opdrag

        'n Werkswinkel opdrag is meer kompleks as 'n gewone opdrag en bestaan uit 'n paar fases:

        1. Die evaluasie van die opdrag moet in 'n paar evaluasie ELEMENTE opgedeel word. Dit gee die studente 'n raamwerk om te gebruik in hulle evaluasies. Die onderwyser moet die elemente/punte staat opstel. (Sien die bladsy vir meer details.)

          As die elemente opgestel is sal die onderwyser gewoonlik 'n paar voorbeelde gee. Studente kan eers die voorbeelde evalueer voordat hulle met hulle eie werk begin. Maar, voordat die opdrag aan die studente beskikbaar gestel word moet die onderwyser ook die voorbeelde evalueer. Dit geen vir die studente ook 'n idee hoe om die werkstukke te evalueer.

          Die inhandiging van voorbeelde is opsioneel en dalk nie van pas by alle voorbeelde nie.

        2. Die opdrag is nou oop aan alle studente. As die onderwyser voorbeelde gegee het kan die studente gevra word om 'n sekere aantal van die voorbeelde te evalueer. In die geval, moet die onderwyser die studente se evaluasies merk om seker te maak dit is op standaard voordat hulle self met hulle eie werk begin. Die standaard is gestel na 40%. As die student die benodigde aantal evaluasies "geslaag" het, kan hulle begin om hulle eie werk in te handig.

          As 'n student werk inlewer kan die onderwyser, as benodig, die werk evalueer. Die evaluasie kan gebruik word om die student se finale punt uit te werk. Die evaluasies kan voor en na die keer datum gedoen word.

          As die opdrag deur klasgenote gemerk word, sal studente wat opdragte in gegee het ander studente se werk gewys word om te evalueer. As hulle klaar die werk gemerk het sal die student wie se werk dit is die evaluasie kan sien(maar die student kan nie daarop kommentaar lewer nie). Die onderwyser kan wel die evaluasies merk en daarvoor 'n punt gee wat gebruik sal word om die student se finale punt uit te werk.

        3. Na die keerdatum, skuif die onderwyser die opdrag na die volgende fase, nou kan die studente nie meer werk in lewer of ander se werk evalueer nie. Die onderwyser bereken nou die finale punt vir die studente. Die finale punt bestaan uit drie komponente, die onderwyser se punt, gemiddelde punt van die klasgenote se evaluasies en die punt wat die onderwyser vir die student se evaluasies gegee het.  Die onderwyser gee vir die drie komponente 'n gewig voor die berekening van die finale punt.
        4. In die finale fase word studente toegelaat om hulle finale punt te sien. As dit benodig word kan die onderwyser die opdrag terug skuif na die vorige fase om veranderings te maak aan bv. die gewig van komponente.
        \ No newline at end of file +

        Bestuur van 'n werkswinkel opdrag

        + +

        'n Werkswinkel opdrag is meer kompleks as 'n gewone opdrag en bestaan uit 'n +paar fases: +

          +
        1. Die evaluasie van die opdrag moet in 'n paar evaluasie ELEMENTE opgedeel + word. Dit gee die studente 'n raamwerk om te gebruik in hulle evaluasies. Die + onderwyser moet die elemente/punte staat opstel. (Sien die bladsy vir + meer details.) + +

          As die elemente opgestel is sal die onderwyser gewoonlik 'n paar + voorbeelde gee. Studente kan eers die voorbeelde evalueer voordat hulle met + hulle eie werk begin. Maar, voordat die opdrag aan die studente beskikbaar + gestel word moet die onderwyser ook die voorbeelde evalueer. Dit geen vir + die studente ook 'n idee hoe om die werkstukke te evalueer. +

          Die inhandiging van voorbeelde is opsioneel en dalk nie van pas by alle + voorbeelde nie. + +

        2. Die opdrag is nou oop aan alle studente. As die onderwyser voorbeelde gegee + het kan die studente gevra word om 'n sekere aantal van die voorbeelde te + evalueer. In die geval, moet die onderwyser die studente se evaluasies merk om + seker te maak dit is op standaard voordat hulle self met hulle eie werk begin. + Die standaard is gestel na 40%. As die student die benodigde aantal evaluasies + "geslaag" het, kan hulle begin om hulle eie werk in te handig. +

          As 'n student werk inlewer kan die onderwyser, as benodig, die werk + evalueer. Die evaluasie kan gebruik word om die student se finale punt uit + te werk. Die evaluasies kan voor en na die keer datum gedoen word. +

          As die opdrag deur klasgenote gemerk word, sal studente wat opdragte in + gegee het ander studente se werk gewys word om te evalueer. As hulle klaar + die werk gemerk het sal die student wie se werk dit is die evaluasie kan + sien(maar die student kan nie daarop kommentaar lewer nie). Die onderwyser + kan wel die evaluasies merk en daarvoor 'n punt gee wat gebruik sal word om + die student se finale punt uit te werk. + +

        3. Na die keerdatum, skuif die onderwyser die opdrag na die volgende fase, nou kan die studente nie meer werk in lewer of ander se werk evalueer nie. + Die onderwyser bereken nou die finale punt vir die studente. Die finale punt + bestaan uit drie komponente, die onderwyser se punt, gemiddelde punt van die + klasgenote se evaluasies en die punt wat die onderwyser vir die student se + evaluasies gegee het.  Die onderwyser gee vir die drie komponente 'n + gewig voor die berekening van die finale punt. + +
        4. In die finale fase word studente toegelaat om hulle finale punt te sien. As + dit benodig word kan die onderwyser die opdrag terug skuif na die vorige fase + om veranderings te maak aan bv. die gewig van komponente. +
        + diff --git a/lang/af/help/workshop/nassessmentsofstudentsubmissions.html b/lang/af/help/workshop/nassessmentsofstudentsubmissions.html index 750ecf70623..9bf7548e376 100644 --- a/lang/af/help/workshop/nassessmentsofstudentsubmissions.html +++ b/lang/af/help/workshop/nassessmentsofstudentsubmissions.html @@ -1 +1,11 @@ -

        Aantal evaluasies van studente se werk

        Die nommer bepaal of 'n student gevra sal word om ander studente se werk te merk. As dit nie nul is nie, sal elke student die aantal werkstukke gewys word en gevra word om hulle te evalueer. Na die evaluasie kan die student wie se werk dit is die kommentaar en ook moontlik hulle punt sien wat die ander student vir hulle gegee het. (Die proses kan herhaaldelik plaas vind). Die onderwyser kan dan selfs die studente se evaluasies merk en die punt sal gebruik word om hulle finale punt uit te werk. As die onderwyser wil kan hy sy kommentaar en punte aan die studente beskikbaar stel.

        \ No newline at end of file +

        Aantal evaluasies van studente se werk

        + +

        Die nommer bepaal of 'n student gevra sal word om ander studente se werk te +merk. As dit nie nul is nie, sal elke student die aantal werkstukke gewys word +en gevra word om hulle te evalueer. Na die evaluasie kan die student wie se werk +dit is die kommentaar en ook moontlik hulle punt sien wat die ander student vir +hulle gegee het. (Die proses kan herhaaldelik plaas vind). Die onderwyser kan +dan selfs die studente se evaluasies merk en die punt sal gebruik word om hulle +finale punt uit te werk. As die onderwyser wil kan hy sy kommentaar en punte aan +die studente beskikbaar stel. +

        diff --git a/lang/af/help/workshop/nassessmentsofteachersexamples.html b/lang/af/help/workshop/nassessmentsofteachersexamples.html index e4e50b8a962..f8a7e94acfd 100644 --- a/lang/af/help/workshop/nassessmentsofteachersexamples.html +++ b/lang/af/help/workshop/nassessmentsofteachersexamples.html @@ -1 +1,9 @@ -

        Aantal voorbeelde van die onderwyser wat gemerk moet word

        Die nommer bepaal of studente eers 'n aantal voorbeelde moet evalueer voordat hulle hulle eie werk moet inlewer. As die getal nie nul is nie moet die studente die aantal voorbeelde evalueer op 'n bevredigende vlak voordat hulle  hulle eie werk kan inlewer. Dit beteken dat die onderwyser eers hulle evaluasies sal moet merk voordat hulle met hulle eie werk kan begin. Die onderwyser se kommentaar en punte word aan die studente vertoon.

        \ No newline at end of file +

        Aantal voorbeelde van die onderwyser wat gemerk moet word

        + +

        Die nommer bepaal of studente eers 'n aantal voorbeelde moet evalueer voordat +hulle hulle eie werk moet inlewer. As die getal nie nul is nie moet die studente +die aantal voorbeelde evalueer op 'n bevredigende vlak voordat hulle  hulle +eie werk kan inlewer. Dit beteken dat die onderwyser eers hulle evaluasies sal +moet merk voordat hulle met hulle eie werk kan begin. Die onderwyser se +kommentaar en punte word aan die  studente vertoon. +

        diff --git a/lang/af/help/workshop/nelements.html b/lang/af/help/workshop/nelements.html index b0304c736ef..9fee8770905 100644 --- a/lang/af/help/workshop/nelements.html +++ b/lang/af/help/workshop/nelements.html @@ -1 +1,12 @@ -

        Aantal kommentaar, elemente, kriteria en aspekte wat ingesluit moet word

        Die aantal hier bepaal hoeveel items sal by die evaluasie ingesluit word. Afhangend van die evaluerings strategie, die nommer is die aantal kommentaar, elemente, kriteria en aspekte wat ingesluit moet word. Tipies sal 'n opdrag tussen 5 en 15 elemente hê, die nommer sal afhang van hoe groot en kompleks die opdrag is.

        Alle evaluasies het plek vir algemene kommentaar. Vir 'n opdrag wat nie 'n punt kry nie sal die nommer die aantal plekke wees vir kommentaar. As dit nul is sal die area slegs vir algemene kommentaar wees.

        \ No newline at end of file +

        Aantal kommentaar, elemente, kriteria en aspekte wat +ingesluit moet word

        + +

        Die aantal hier bepaal hoeveel items sal by die evaluasie ingesluit word. +Afhangend van die evaluerings strategie, die nommer is die aantal kommentaar, +elemente, kriteria en aspekte wat ingesluit moet word. Tipies sal 'n opdrag +tussen 5 en 15 elemente hê, die nommer sal afhang van hoe groot en kompleks die +opdrag is.

        Alle evaluasies het plek vir algemene kommentaar. Vir 'n opdrag wat +nie 'n punt kry nie sal die nommer die aantal plekke wees vir kommentaar. As dit +nul is sal die area slegs vir algemene kommentaar wees. + +

        diff --git a/lang/af/help/workshop/numberofassessors.html b/lang/af/help/workshop/numberofassessors.html index 366cfc3541d..2f8862cb1c0 100644 --- a/lang/af/help/workshop/numberofassessors.html +++ b/lang/af/help/workshop/numberofassessors.html @@ -1 +1,26 @@ -

        Aantal opdragte wat klasgenote moet evalueer

        Gewoonlik sal drie tot agt klasgenote 'n spesifieke student se werk evalueer. Met ander woorde elke student sal gevra word om die aantal ander studente se werk te merk. Hoe groter die opdrag is,in terme van inhoud, hoe kleiner moet die getal wees, anders gaan die evaluasie te veel werk wees vir ander studente. Elke student moet genoeg voorbeelde sien om te kan onderskei wat is 'n goeie werkstuk en wat is 'n swak werkstuk. Maar, om die evaluasie vermoë van 'n student deeglik te evalueer sal meer evaluasies van die student verlang word. Die prestasie sal moontlik nie akkuraat bepaal kan word as die student net drie of vier evaluasies doen nie.

        As daar genoeg werk ingelewer is (10 of meer), sal die stelsel vir elke student ten minste een goeie werkstuke en een swak werkstuk gee. Dit kan slegs gebeur as die onderwyser die werk gemerk het voordat die studente evaluasies begin. Die onderwyser hoef nie AL die opdrag te merk nie, net 'n paar sal nodig wees. Die onderwyser se evaluasies hier hoef nie by die finale punt ingesluit te word nie maar word net gebruik as 'n wegspring punt. Let Wel: as die stelling aan is dat die onderwyser punt aan studente getoon word sal die punt eers aan die einde van die inlewerings fase getoon word.

        Die aantal wat klasgenote moet merk kan nul wees. In die geval moet die student self sy werk evalueer (as die stelling aan is) of slegs die onderwyser merk die werk.

        \ No newline at end of file +

        Aantal opdragte wat klasgenote moet evalueer

        + +

        Gewoonlik sal drie tot agt klasgenote 'n spesifieke student se werk evalueer. +Met ander woorde elke student sal gevra word om die aantal ander studente se +werk te merk. Hoe groter die opdrag is,in terme van inhoud, hoe kleiner moet die +getal wees, anders gaan die evaluasie te veel werk wees vir ander studente. Elke +student moet genoeg voorbeelde sien om te kan onderskei wat is 'n goeie werkstuk +en wat is 'n swak werkstuk. Maar, om die evaluasie vermoë van 'n student +deeglik te evalueer sal meer evaluasies van die student verlang word. Die +prestasie sal moontlik nie akkuraat bepaal kan word as die student net drie of +vier evaluasies doen nie. + +

        As daar genoeg werk ingelewer is (10 of meer), sal die stelsel vir elke +student ten minste een goeie werkstuke en een swak werkstuk gee. Dit kan slegs +gebeur as die onderwyser die werk gemerk het voordat die studente evaluasies +begin. Die onderwyser hoef nie AL die opdrag te merk nie, net 'n paar sal nodig +wees. Die onderwyser se evaluasies hier hoef nie by die finale punt ingesluit te +word nie maar word net gebruik as 'n wegspring punt. Let Wel: as die stelling +aan is dat die onderwyser punt aan studente getoon word sal die punt eers aan +die einde van die inlewerings fase getoon word. + +

        Die aantal wat klasgenote moet merk kan nul wees. In die geval moet die +student self sy werk evalueer (as die stelling aan is) of slegs die onderwyser +merk die werk. + +

        diff --git a/lang/af/help/workshop/resubmit.html b/lang/af/help/workshop/resubmit.html index 2261e37c74c..f7b1fa14823 100644 --- a/lang/af/help/workshop/resubmit.html +++ b/lang/af/help/workshop/resubmit.html @@ -1 +1,19 @@ -

        Herinlewering van opdragte

        Gewoonlik word studente net toegelaat om die opdrag een keer in te lewer.

        As jy wil, kan jy die stelling aansit en dit sal die studente toelaat om meer as een opdrag in te lewer. Dit kan die studente aanmoedig om beter werk te lewer.

        Evaluasie van 'n opdrag hang af van die aantal kere wat die opdrag al gemerk is. Dus as 'n student nog 'n opdrag inlewer sal die opdrag 'n kandidaat wees om deur 'n klasgenoot gemerk te word. Maar, as 'n student 'n klomp werkstukke vinnig na mekaar inlewer sal al die werkstukke ewe veel kans hê om gemerk te word. Prioriteit word nie gegee aan die nuutste opdragte nie.

        As die student se finale punt uitgewerk word, sal die hoogste punt gebruik word. Hier beteken hoogste punt die geweegde gemiddeld van die onderwyser se punt en die klasgenote se punt.

        \ No newline at end of file +

        Herinlewering van opdragte

        + +

        Gewoonlik word studente net toegelaat om die opdrag een keer in te lewer.

        + +

        As jy wil, kan jy die stelling aansit en dit sal die studente toelaat om meer +as een opdrag in te lewer. Dit kan die studente aanmoedig om beter werk te +lewer.

        + +

        Evaluasie van 'n opdrag hang af van die aantal kere wat die opdrag al gemerk +is. Dus as 'n student nog 'n opdrag inlewer sal die opdrag 'n kandidaat wees om +deur 'n klasgenoot gemerk te word. Maar, as 'n student 'n klomp werkstukke +vinnig na mekaar inlewer sal al die werkstukke ewe veel kans hê om gemerk te +word. Prioriteit word nie gegee aan die nuutste opdragte nie. + +

        As die student se finale punt uitgewerk word, sal die hoogste punt gebruik +word. Hier beteken hoogste punt die geweegde gemiddeld van die onderwyser se +punt en die klasgenote se punt. + +

        diff --git a/lang/af/help/workshop/selfassessment.html b/lang/af/help/workshop/selfassessment.html index e14050c4761..79b65856685 100644 --- a/lang/af/help/workshop/selfassessment.html +++ b/lang/af/help/workshop/selfassessment.html @@ -1 +1,13 @@ -

        Self evaluasie

        Die werkswinkel opdrag kan die student se eie werk vir hom gee om te merk saam met al die ander werkstukke wat die student gevra sal word om te merk. M.a.w. as die aantal werkstukke wat die student moet evalueer vyf is, sal die student ses werkstukke ontvang om te evalueer, die sesde opdrag sal sy eie werkstuk wees.

        As die aantal opdragte wat gemerk moet word gestel word na nul en die self evaluasie opsie is aan word die opdrag net deur die student gemerk wie se werk dit is. Die punt mag die onderwyser se punt bevat of nie.

        \ No newline at end of file +

        Self evaluasie

        + +

        Die werkswinkel opdrag kan die student se eie werk vir hom gee om te merk +saam met al die ander werkstukke wat die student gevra sal word om te merk. +M.a.w. as die aantal werkstukke wat die student moet evalueer vyf is, sal die +student ses werkstukke ontvang om te evalueer, die sesde opdrag sal sy eie +werkstuk wees. + +

        As die aantal opdragte wat gemerk moet word gestel word na nul en die self +evaluasie opsie is aan word die opdrag net deur die student gemerk wie se werk +dit is. Die punt mag die onderwyser se punt bevat of nie. + +

        diff --git a/lang/af/help/workshop/showinggrades.html b/lang/af/help/workshop/showinggrades.html index e62f8d7f4c2..78b58cf4d98 100644 --- a/lang/af/help/workshop/showinggrades.html +++ b/lang/af/help/workshop/showinggrades.html @@ -1 +1,13 @@ -

        Punte word nie vertoon nie

        Die opsie kan gebruik word in 'n werkswinkel opdrag waar die student moet saamstem en tevrede wees met sy evalueering . Met verstek word die punt en kommentaar van klasgenote aan die student vertoon. As die punt saam met kommentaar vertoon word kan dit moontlik lei tot meer geskille tussen die studente.

        As die opsie aan is om punte weg te steek sal die student se punt vir die werkstuk eers vertoon word sodra ooreenkoms bereik is . Die ooreenkoms sal gemaak moet word op slegs die kommentaar. As die kommentaar en die punt wat toegeken is nie ooreenstem nie kan die student by die onderwyser appelleer.

        \ No newline at end of file +

        Punte word nie vertoon nie

        + +

        Die opsie kan gebruik word in 'n werkswinkel opdrag waar die student moet +saamstem en tevrede wees met sy evalueering . Met verstek word die punt en +kommentaar van klasgenote aan die student vertoon. As die punt saam met +kommentaar vertoon word kan dit moontlik lei tot meer geskille tussen die +studente. + +

        As die opsie aan is om punte weg te steek sal die student se punt vir die +werkstuk eers vertoon word sodra ooreenkoms bereik is . Die ooreenkoms sal +gemaak moet word op slegs die kommentaar. As die kommentaar en die punt wat +toegeken is nie ooreenstem nie kan die student by die onderwyser appelleer. +

        diff --git a/lang/af/help/workshop/teachersgradings.html b/lang/af/help/workshop/teachersgradings.html index 7cc0e185923..e9a517c799a 100644 --- a/lang/af/help/workshop/teachersgradings.html +++ b/lang/af/help/workshop/teachersgradings.html @@ -1 +1,13 @@ -

        Vertoon die onderwyser se punt

        'n Onderwyser se punte en kommentaar kan opsioneel ook aan die studente vertoon word terwyl hulle besig is met evaluasies van ander studente se werkstukke. Die punte kan vertoon word na die keerdatum of selfs later as die punte nog nie beskikbaar is nie. Die onderwyser se kommentaar en punte kan studente lei met hulle eie evaluasies van ander studente se werk.

        Let Wel: in 'n opdrag waar klasgenote anoniem die werkstukke evalueer sal die onderwyser se kommentaar en punte altyd saam met sy naam en as dit beskikbaar is sy foto vertoon word.

        \ No newline at end of file +

        Vertoon die onderwyser se punt

        + +

        'n Onderwyser se punte en kommentaar kan opsioneel ook aan die studente +vertoon word terwyl hulle besig is met evaluasies van ander studente se +werkstukke. Die punte kan vertoon word na die keerdatum of selfs later as die +punte nog nie beskikbaar is nie. Die onderwyser se kommentaar en punte kan +studente lei met hulle eie evaluasies van ander studente se werk. + +

        Let Wel: in 'n opdrag waar klasgenote anoniem die werkstukke evalueer sal die +onderwyser se kommentaar en punte altyd saam met sy naam en as dit beskikbaar is +sy foto vertoon word. + +

        diff --git a/lang/af/help/writing.html b/lang/af/help/writing.html index 3f903307d45..40fa78bc0db 100644 --- a/lang/af/help/writing.html +++ b/lang/af/help/writing.html @@ -1 +1,21 @@ -

        Skryf

        As jy vir ander mense skryf, probeer om direk aan hulle te skryf.

        Verduidelik jou idees duidelik en eenvoudig om misverstande te voorkom. Byvoorbeeld, gebruik eerder 'n kort woord as 'n lang woord.

        In forums, hou jou pos kort en op die onderwerp. In plaas van een lang forum wat baie stellings maak, maak 'n paar kort forums wat slegs een stelling maak.

        Redigeer jou teks so veel keer as nodig tot dit reg is. In forums het jy maxeditingtime/60)> minute na jy jou pos gestoor het om terug te gaan en dit reg te maak indien nodig.

        Wanneer jy terugvoer lewer, probeer interessante vrae vra. Dit sal jou en die ander persoon help dink (en leer!) oor die onderwerp wat jy bespreek.

        More info about asking questions

        More info about reading

        \ No newline at end of file +

        Skryf

        + +

        As jy vir ander mense skryf, probeer om direk aan hulle te skryf.

        + +

        Verduidelik jou idees duidelik en eenvoudig om misverstande te voorkom. +Byvoorbeeld, gebruik eerder 'n kort woord as 'n lang woord.

        + +

        In forums, hou jou pos kort en op die onderwerp. In plaas van een lang forum +wat baie stellings maak, maak 'n paar kort forums wat slegs een stelling maak. + +

        Redigeer jou teks so veel keer as nodig tot dit reg is. In forums het jy maxeditingtime/60) ?> +minute na jy jou pos gestoor het om terug te gaan en dit reg te maak indien +nodig.

        + +

        Wanneer jy terugvoer lewer, probeer interessante vrae vra. Dit sal jou en die +ander persoon help dink (en leer!) oor die onderwerp wat jy bespreek.

        + + +

        +

        +

        diff --git a/lang/af/journal.php b/lang/af/journal.php index ab094939b4a..6c38076d55a 100644 --- a/lang/af/journal.php +++ b/lang/af/journal.php @@ -1,36 +1,39 @@ -teacher het terugvoer gepos op jou joernaal inskrywing van \'$a->journal\' - -Dit is aangeheg aan jou joernaal inskrywing: $a->url'; -$string['journalmailhtml'] = '$a->teacher het terugvoer gepos op jou joernaal inskrywing van -\'$a->journal\'

        -Dit is aangeheg aan jou url\">joernaal inskrywing.'; -$string['journalname'] = 'Joernaal naam'; -$string['journalquestion'] = 'Joernaal vraag'; -$string['journalrating1'] = 'Nie tevrede nie'; -$string['journalrating2'] = 'Bevredigend'; -$string['journalrating3'] = 'Uitstaande'; -$string['modulename'] = 'Joernaal'; -$string['modulenameplural'] = 'Joernale'; -$string['newjournalentries'] = 'Nuwe joernaal inskrywings'; -$string['noentry'] = 'Geen toegang'; -$string['noratinggiven'] = 'Geen evaluasie'; -$string['notopenuntil'] = 'Die joernaal sal eers geopen word op '; -$string['notstarted'] = 'Jy het nog nie die joernaal begin nie'; -$string['overallrating'] = 'Algehele evaluasie'; -$string['rate'] = 'Evalueer'; -$string['saveallfeedback'] = 'Stoor al my terugvoer'; -$string['startoredit'] = 'Begin of redigeer my joernaal inskrywing'; -$string['viewallentries'] = 'Sien $a joernaal inskrywings'; - -?> +teacher het terugvoer gepos op jou joernaal inskrywing van '\$a->journal' + +Dit is aangeheg aan jou joernaal inskrywing: \$a->url"; + +$string['journalmailhtml'] = "\$a->teacher het terugvoer gepos op jou joernaal inskrywing van +'\$a->journal'

        +Dit is aangeheg aan jou url\\\">joernaal inskrywing."; +$string['journalname'] = "Joernaal naam"; +$string['journalquestion'] = "Joernaal vraag"; +$string['journalrating1'] = "Nie tevrede nie"; +$string['journalrating2'] = "Bevredigend"; +$string['journalrating3'] = "Uitstaande"; +$string['newjournalentries'] = "Nuwe joernaal inskrywings"; +$string['noentry'] = "Geen toegang"; +$string['notopenuntil'] = "Die joernaal sal eers geopen word op "; +$string['notstarted'] = "Jy het nog nie die joernaal begin nie"; +$string['noratinggiven'] = "Geen evaluasie"; +$string['overallrating'] = "Algehele evaluasie"; +$string['rate'] = "Evalueer"; +$string['saveallfeedback'] = "Stoor al my terugvoer"; +$string['startoredit'] = "Begin of redigeer my joernaal inskrywing"; +$string['viewallentries'] = "Sien \$a joernaal inskrywings"; + +?> diff --git a/lang/af/moodle.php b/lang/af/moodle.php index e06533e7739..cdcac3feed3 100644 --- a/lang/af/moodle.php +++ b/lang/af/moodle.php @@ -1,741 +1,712 @@ -$a
        '; -$string['activityiscurrentlyhidden'] = 'Jammer, die aktiwiteit word weggesteek'; -$string['activitymodule'] = 'Aktiwiteit module'; -$string['activityreport'] = 'Aktiwiteit verslag'; -$string['activityselect'] = 'Selekteer die aktiwiteit om elders te skuif'; -$string['activitysince'] = 'Aktiwiteite sedert $a'; -$string['add'] = 'Voeg'; -$string['addadmin'] = 'Voeg admin by'; -$string['addcreator'] = 'Voeg kursus skepper by'; -$string['added'] = 'By gevoeg $a'; -$string['addinganew'] = 'Voeg by \'n nuwe $a'; -$string['addinganewto'] = '\'n Nuwe $a->what is aan $a->to toegevoeg'; -$string['addingdatatoexisting'] = 'Voeg data by bestaande'; -$string['addnewcategory'] = 'Voeg nuwe kategorie by'; -$string['addnewcourse'] = 'Voeg \'n nuwe kursus by'; -$string['addnewuser'] = 'Voeg \'n nuwe gebruiker by'; -$string['address'] = 'Adres'; -$string['addstudent'] = 'Voeg student by'; -$string['addteacher'] = 'Voeg onderwyser by'; -$string['admin'] = 'Admin'; -$string['adminhelpaddnewuser'] = 'Skep nuwe gebruiker rekening met die hand'; -$string['adminhelpassignadmins'] = 'Admins kan enige iets doen en enige plek gaan'; -$string['adminhelpassigncreators'] = 'Kursus skeppers kan kursusse skep en klas gee in die kursus'; -$string['adminhelpassignstudents'] = 'Gaan in \'n kursus in en voeg studente by vanaf die admin kieslys'; -$string['adminhelpassignteachers'] = 'Vind \'n kursus en gebruik die ikoon om onderwysers by te voeg'; -$string['adminhelpauthentication'] = 'Jy kan interne gebruiker rekeninge gebruik of \'n eksterne databasis gebruik'; -$string['adminhelpconfiguration'] = 'Konfigureer hoe die webblad lyk en werk'; -$string['adminhelpconfigvariables'] = 'Konfigureer veranderlikes wat die algemene werking van die webblad affekteer'; -$string['adminhelpcourses'] = 'Defineer kursusse, kategorië en voeg mense by '; -$string['adminhelpedituser'] = 'Lees deur die lys van gebruiker rekeninge en redigeer enige van die rekeninge'; -$string['adminhelplanguage'] = 'Om die huidige taal pakket te evalueer en te redigeer'; -$string['adminhelplogs'] = 'Lees deur al die aktiwiteite op die webblad'; -$string['adminhelpmanagedatabase'] = 'Kry direkte toegang tot databasis (wees versigtig!)'; -$string['adminhelpmanagemodules'] = 'Bestuur geinstalleerde modules en hulle stellings'; -$string['adminhelpsitefiles'] = 'Om algemene lêers te publiseer of om eksterne rugsteune op te laai'; -$string['adminhelpsitesettings'] = 'Defineer hoe die voorblad van die webblad lyk'; -$string['adminhelpthemes'] = 'Kies hoe die webblad lyk (kleur, letters ens.)'; -$string['adminhelpusers'] = 'Definieer jou gebruikers en stel geldigheidsvasstelling op'; -$string['administration'] = 'Administrasie'; -$string['administrator'] = 'Administrateur'; -$string['administrators'] = 'Administrateurs'; -$string['again'] = 'weer'; -$string['all'] = 'Alle'; -$string['alldays'] = 'Alle dae'; -$string['allfieldsrequired'] = 'Alle velde word benodig'; -$string['alllogs'] = 'Alle logs'; -$string['allow'] = 'Laat toe'; -$string['allowguests'] = 'Die kursus laat gaste toe'; -$string['allownot'] = 'Moenie toelaat nie'; -$string['allparticipants'] = 'Alle deelnemers'; -$string['alphanumerical'] = 'Kan slegs alfabeties letters of nommers gebruik'; -$string['alreadyconfirmed'] = 'Registrasie is reeds bevestig'; -$string['answer'] = 'Antwoord'; -$string['areyousuretorestorethis'] = 'Is jy seker?'; -$string['areyousuretorestorethisinfo'] = 'Later in die proses kan jy besluit of jy die rugsteun by \'n bestaande kursus wil voeg of \'n nuwe kursus wil skep.'; -$string['assessment'] = 'Evaluasie'; -$string['assignadmins'] = 'Voeg admins by'; -$string['assigncreators'] = 'Voeg kursus skeppers by'; -$string['assignstudents'] = 'Skryf studente in '; -$string['assignstudentsnote'] = 'Let Wel: dit mag dalk nie nodig wees om die bladsy te gebruik nie omdat die studente self kan inskryf by die kursus.'; -$string['assignstudentspass'] = 'Al wat jy hoef te doen is om die studente te laat weet van die registrasie sleutel vir die kursus, die sleutel is huidiglik: \'$a\''; -$string['assignteachers'] = 'Voeg onderwysers by'; -$string['authentication'] = 'Geldigheidsvastelling'; -$string['autosubscribe'] = 'Forum auto-inskryf'; -$string['autosubscribeno'] = 'Nee: moet my nie outomaties inskryf by die forum nie'; -$string['autosubscribeyes'] = 'Ja: as ek pos, skryf my in by die forum'; -$string['availability'] = 'Beskikbaarheid'; -$string['availablecourses'] = 'Beskikbare kursusse'; -$string['backup'] = 'Rugsteun'; -$string['backupdate'] = 'Rugsteun Datum'; -$string['backupdetails'] = 'Rugsteun Details'; -$string['backupfilename'] = 'rugsteun'; -$string['backupfinished'] = 'Rugsteun suksesvol'; -$string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['backuporiginalname'] = 'Rugsteun Naam'; -$string['backupversion'] = 'Rugsteun Versie'; -$string['cancel'] = 'Kanselleer'; -$string['categories'] = 'Kursus Kategorieë'; -$string['category'] = 'Kategorie'; -$string['categoryadded'] = 'Die kategorie \'$a\' was bygesit'; -$string['categorydeleted'] = 'Die kategorie \'$a\' was uitgewis'; -$string['categoryduplicate'] = '\'n Kategorie genaamd \'$a\' bestaan reeds!'; -$string['changedpassword'] = 'Wagwoord - verander.'; -$string['changepassword'] = 'Verander wagwoord'; -$string['changessaved'] = 'Veranderinge - gestoor'; -$string['checkingbackup'] = 'Evalueer rugsteun'; -$string['checkingcourse'] = 'Evalueer kursus'; -$string['checkinginstances'] = 'Evalueer instansies'; -$string['checkingsections'] = 'Evalueer seksies'; -$string['checklanguage'] = 'Toets taal'; -$string['choose'] = 'Kies'; -$string['choosecourse'] = 'Kies \'n kursus'; -$string['chooselivelogs'] = 'Of kyk na huidige aktiwiteite'; -$string['chooselogs'] = 'Kies die logs wat jy wil sien'; -$string['choosetheme'] = 'Kies tema'; -$string['chooseuser'] = 'Kies \'n gebruiker'; -$string['city'] = 'Stad/dorp'; -$string['cleaningtempdata'] = 'Maak temp data skoon'; -$string['closewindow'] = 'Maak die venster toe'; -$string['comparelanguage'] = 'Vergelyk en redigeer huidige taal'; -$string['complete'] = 'Klaar'; -$string['configcountry'] = 'As jy \'n land hier stel, dan sal die land as verstek waarde gebruik word met nuwe gebruiker rekeninge. As gebruikers \'n land MOET kies, los die veld oop.'; -$string['configdebug'] = 'As jy die aansit, dan sal PHP se \'error_reporting\' vermeerder sodat meer waarskuwings gedruk word, dit is slegs nuttig vir ontwikkelaars.'; -$string['configerrorlevel'] = 'Kies die hoeveelheid PHP waarskuwings wat vertoon moet word. Normaal is gewoonlik die beste keuse.'; -$string['configframename'] = 'As jy Moodle in \'n web raam sit, sit die naam van die raam hier. Andersins los die waarde as \'_top\''; -$string['configgdversion'] = 'Sê watter GD versie is geinstalleer. Die versie wat getoon word is outomaties vasgestel, moenie dit verander tensy sy rerig weet wat jy doen nie.'; -$string['confightmleditor'] = 'Kies of gebruikers die ingeslote HTML redigeerder mag gebruik of nie. As jy dit toelaat sal die redigeerder slegs verskyn as dit versoenbaar is met die \'browser\' (IE 5.5 of beter). Gebruikers kan ook kies om dit nie te gebruik nie.'; -$string['configidnumber'] = 'Die opsie spesifiseer of (a) Die Gebruiker nie vir \'n ID gevra sal word nie, (b) Gebruikers word gevra vir \'n ID maar kan dit oop los, of (c) Gebruikers word gevra vir \'n ID en kan dit nie oop los nie. As \'n ID gegee word sal die ID in die Gebruiker se profiel vertoon word.'; -$string['configintro'] = 'Op die bladsy kan jy konfigurasie veranderlikes spesifiseer wat Moodle behoorlik sal laat funksioneer op jou bediener. Moenie te veel bekommer oor die veranderlikes nie - die verstek waardes werk gewoonlik en jy kan altyd later terug kom na die bladsy om veranderinge te maak.'; -$string['configintroadmin'] = 'Op die bladsy skep jy die hoof administrateur rekening wat totalle beheer het oor die web blad. Gee dit \'n veilige gebruikersnaam en wagwoord en ook \'n geldige email adres. Jy kan nog admin rekeninge later skep.'; -$string['configintrosite'] = 'Die bladsy konfigureer die voor blad van die nuwe werf. Jy kan enige tyd terug kom en die stellings verander deur die \'Werf Verstellings\' skakels op die hoof blad(home page) te gebruik.'; -$string['configlang'] = 'Kies \'n verstek taal vir die werf. Gebruikers kan later self die stelling verander.'; -$string['configlangdir'] = 'Meeste tale word van links na regs geskryf, maar party soos Hebreeus word van regs na links geskryf.'; -$string['configlanglist'] = 'Los dit oop om gebruikers in staat te stel om enige taal te kies wat saam met Moodle geinstalleer word. Verkort die lys deur taal kodes in te tik, sit \'n komma tussen elke kode (byvoorbeeld: en,es_es,fr,it)'; -$string['configlangmenu'] = 'Kies of \'n algemene taal lys op die hoof blad vertoon moet word, \'login\' bladsy ens. Die gebruiker sal steeds in staat wees om \'n taal te kies in sy eie profiel.'; -$string['configlocale'] = 'Kies \'n lokaliteit - dit sal die formaat en taal van datums beïnvloed . Die lokaliteit moet op jou bedryfstelsel geinstalleer word. (byvoorbeeld: en_US of es_ES). As jy nie weet wat om te kies nie - los dit oop.'; -$string['configloglifetime'] = 'Dit spesifiseer hoe lank jy \'logs\' hou oor gebruiker aktiwiteit. \'Logs\' ouer as dit word outomaties uitgevee. Dit is die beste om die \'logs\' vir so lank as moontlik te hou, ingeval jy dit benodig, maar as jou bediener baie besig is, maak die \'logs\' leef tyd korter.'; -$string['configlongtimenosee'] = 'As studente lank laas by die werf was word hulle inskrywings outomaties gekanselleer. Die waarde spesifiseer die tyd limiet.'; -$string['configmaxeditingtime'] = 'Dit spesifiseer hoe lank tyd mense het om forum post, joernaal inskrywings ens te redigeer. Gewoonlik is 30 minute \'n goeie waarde.'; -$string['configproxyhost'] = 'As die bediener \'n instaan bediener benodig (soos \'n \'firewall\') om toegang te verkry tot die internet, gee die instaan bediener naam en poort hier. Andersins los dit oop.'; -$string['configsecureforms'] = 'Moodle kan \'n addisionele vlak van sekuriteit gebruik as data vanaf web forms ontvang word. As dit aangesit is word die \'browser\' se HTTP_REFERER nagegaan teen die huidige adres. In \'n paar gevalle kan dit probleme veroorsaak by gebruikers wat firewalls gebruik (eg Zonealarm)wat gekonfigureer is om HTTP_REFERER weg te vat by web verkeer. Simtome is om \'vas te sit\' op \'n vorm. As jou gebruiker die probleem ondervind met \'login page\' (byvoorbeeld) sit die stelling af.'; -$string['configsessiontimeout'] = 'As mense wat op die bladsy ingeteken is, stil is vir \'n lang tyd (laai geen bladsye), dan word hulle outomaties uitgeteken (sessie word geeindig). Die veranderlike spesifiseer hoe lank voor hulle uitgeteken word.'; -$string['configslasharguments'] = 'Lêers (prente, dokumente ens.) word voorsien via \'n skrip wat \'slash arguments\' gebruik(die tweede opsie hier). Die metode laat lêers toe om voorlopig geberg te word op \'n web \'browser\', instaan bediener ens. Maar party PHP bedieners laat nie die metode toe nie, as jy probleme ondervind om opgelaaide lêers en prente te sien(soos gebruiker foto\'s), stel die veranderlike na die eerste opsie'; -$string['configsmtphosts'] = 'Gee die volle naam van die lokale SMTP bediener wat Moodle moet gebruik om pos te stuur (soos \'mail.a.com\' of \'mail.a.com;mail.b.com\'). As jy dit oop los sal Moodle die verstek PHP metode gebruik om pos te stuur.'; -$string['configsmtpuser'] = 'Indien jy SMTP bediener gebruik, en die bediener gebruik geldigheidssvastelling, sit dan die gerbruikersnaam en wagwoord hier.'; -$string['configteacherassignteachers'] = 'Mag gewone onderwysers nog onderwysers aanwys binne in die kursusse waar hulle klas gee? As die stelling \'Nee\' is kan slegs kursus skeppers en admins onderwysers aanwys.'; -$string['configunzip'] = 'Waar is jou \'unzip\' program (Slegs Unix, optioneel). As dit gespesifiseer is sal die program gebruik word om gekompakteerde argiewe op die bediener oop te maak. As jy dit oop los sal Moodle interne roetines gebruik.'; -$string['configuration'] = 'Konfigurasie'; -$string['configvariables'] = 'Konfigureer veranderlikes'; -$string['configwarning'] = 'Wees versig om die stellings te verander - vreemde waardes kan probleme skep.'; -$string['configzip'] = 'Waar is jou \'zip\' program (Slegs Unix, optioneel). Indien gespesifiseer, sal die program gebruik word om \'zip\' argiewe op die bediener te skep. As jy dit oop los sal Moodle interne roetines gebruik.'; -$string['confirmed'] = 'Jou registrasie is bevestig'; -$string['confirmednot'] = 'Jou registrasie is nog nie bevestig nie!'; -$string['continue'] = 'Gaan voort'; -$string['cookiesenabled'] = '\'Cookies\' moet aangesit wees in jou \'browser\''; -$string['copy'] = 'kopieer'; -$string['copyingcoursefiles'] = 'Kopieer kursus lêers'; -$string['copyinguserfiles'] = 'Kopieer gebruiker lêers'; -$string['copyingzipfile'] = 'Kopieer \'zip\' lêers'; -$string['copyrightnotice'] = 'Kopiereg kennisgewing'; -$string['country'] = 'Land'; -$string['course'] = 'Kursus'; -$string['courseavailable'] = 'Die kursus is beskikbaar aan studente'; -$string['courseavailablenot'] = 'Die kursus is nie beskikbaar vir studente nie'; -$string['coursebackup'] = 'Kursus Rugsteun'; -$string['coursecategories'] = 'Kursus kategorië'; -$string['coursecategory'] = 'Kursus kategorie'; -$string['coursecreators'] = 'Kursus skeppers'; -$string['coursefiles'] = 'Kursus lêers'; -$string['courseformats'] = 'Kursus formaat'; -$string['coursegrades'] = 'Kursus punte'; -$string['courseinfo'] = 'Kursus inligting'; -$string['courserestore'] = 'Kursus herstel'; -$string['courses'] = 'Kursusse'; -$string['courseupdates'] = 'Kursus veranderinge'; -$string['create'] = 'Skep'; -$string['createaccount'] = 'Skep my nuwe rekening'; -$string['createfolder'] = 'Skep \'n lêergids in $a'; -$string['createuserandpass'] = 'Skep \'n nuwe gerbuikersnaam en wagwoord om mee in te teken'; -$string['createziparchive'] = 'Skep nuwe \'zip\' argief'; -$string['creatingcategoriesandquestions'] = 'Skep kategorië en vrae'; -$string['creatingcoursemodules'] = 'Skep kursus modules'; -$string['creatinglogentries'] = 'Skep \'log\' inskrywings'; -$string['creatingnewcourse'] = 'Skep nuwe kursus'; -$string['creatingscales'] = 'Skep skale'; -$string['creatingsections'] = 'Skep seksies'; -$string['creatingtemporarystructures'] = 'Skep tydelike strukture'; -$string['creatingusers'] = 'Skep gebruikers'; -$string['creatingxmlfile'] = 'Skep XML lêers'; -$string['currentcourseadding'] = 'Voeg data by huidige kursus'; -$string['currentcoursedeleting'] = 'Wis huidige kursus uit'; -$string['currentlanguage'] = 'Huidige taal'; -$string['currentlocaltime'] = 'jou huidige lokale tyd'; -$string['currentrelease'] = 'Huidige vrystelling inligting'; -$string['currentversion'] = 'Huidige vrystelling'; -$string['databasechecking'] = 'Moodle word opgegradeer van $a->oldversion na $a->newversion...'; -$string['databasesetup'] = 'Jou databasis word opgestel'; -$string['databasesuccess'] = 'Databasis opgradeering was suksesvol'; -$string['databaseupgradebackups'] = 'Rugsteun weergawe is nou $a'; -$string['databaseupgrades'] = 'Databasis word opgegradeer'; -$string['day'] = 'dag'; -$string['days'] = 'dae'; -$string['defaultcoursefullname'] = 'Kursus Naam 101'; -$string['defaultcourseshortname'] = 'KN101'; -$string['defaultcoursestudent'] = 'Student'; -$string['defaultcoursestudents'] = 'Studente'; -$string['defaultcoursesummary'] = 'Skryf \'n kort en interessante paragraaf wat handel oor die kursus hier'; -$string['defaultcourseteacher'] = 'Onderwyser'; -$string['defaultcourseteachers'] = 'Onderwysers'; -$string['delete'] = 'Uitwis'; -$string['deletecheck'] = 'Vee $a uit?'; -$string['deletecheckfiles'] = 'Is jy seker jy wil die lêers uitwis?'; -$string['deletecheckfull'] = 'Is jy seker jy wil $a heeltemal uitwis?'; -$string['deletecheckwarning'] = 'Jy gaan die volgende lêers uitwis'; -$string['deletecompletely'] = 'Wis heeltemal uit'; -$string['deletecourse'] = 'Wis kursus uit'; -$string['deletecoursecheck'] = 'Is jy seker jy wil die kursus en al die data wat dit bevat uitwis?'; -$string['deleted'] = 'Uitgewis'; -$string['deletedactivity'] = '$a uitgewis'; -$string['deletedcourse'] = '$a is heeltemal uitgewis'; -$string['deletednot'] = 'Kon nie $a uitwis nie!'; -$string['deletingcourse'] = '$a word uitgewis'; -$string['deletingexistingcoursedata'] = 'Wis bestaande kursus data uit'; -$string['deletingolddata'] = 'Wis ou data uit'; -$string['department'] = 'Departement'; -$string['description'] = 'Beskrywing'; -$string['displayingfirst'] = 'Slegs die eerste $a->count $a->things word vertoon'; -$string['displayingrecords'] = 'Vertoon $a rekords'; -$string['displayingusers'] = 'Vertoon gebruikers $a->start tot $a->end'; -$string['documentation'] = 'Moodle Dokumentasie'; -$string['donotask'] = 'Moenie vra nie'; -$string['downloadexcel'] = 'Laai af in Excel formaat'; -$string['downloadtext'] = 'Laai af in teks formaat'; -$string['doyouagree'] = 'Het jy die voorwaardes gelees en verstaan jy dit?'; -$string['edit'] = 'Redigeer $a'; -$string['editcoursesettings'] = 'Redigeer kursus stellings'; -$string['editinga'] = 'Redigeer \'n $a'; -$string['editmyprofile'] = 'Redigeer profiel'; -$string['editsummary'] = 'Redigeer opsomming'; -$string['editthisactivity'] = 'Redigeer die aktiwiteit'; -$string['editthiscategory'] = 'Redigeer die kategorie'; -$string['edituser'] = 'Redigeer gebruiker rekeninge'; -$string['email'] = 'Email adres'; -$string['emailconfirm'] = 'Bevestig jou rekening'; -$string['emailconfirmation'] = 'Hallo $a->firstname, \'n Nuwe rekening is aangevra vanaf \'$a->sitename\' wat jou email adres gebruik. Om die rekening te bevestig gaan na die web adres: $a->link In meeste programe sal dit as \'n blou skakel vertoon word waarop jy slegs hoef te klik. As dit nie werk nie,sny die adres uit en plak dit in die adres lyn bo aan jou \'browser\'. As jy hulp nodig het kontak die blad administrateur, $a->admin'; -$string['emailconfirmationsubject'] = '$a: rekening bevestiging'; -$string['emailconfirmsent'] = '

        \'n Email is veronderstel om gestuur te wees na jou adres - $a

        -

        Dit bevat maklike instruksies om jou registrasie te voltooi.

        -

        As jy probleme ondervind, kontak die blad administrateur.

        '; -$string['emaildisplay'] = 'Email vertoning'; -$string['emaildisplaycourse'] = 'Laat slegs lede van my kursus toe om my adres te sien'; -$string['emaildisplayno'] = 'Steek my email adres weg van almal'; -$string['emaildisplayyes'] = 'Laat almal toe om my email adres te sien'; -$string['emailexists'] = 'Die email adres is klaar geregistreer.'; -$string['emailformat'] = 'Email formaat'; -$string['emailmustbereal'] = 'NB: die email adres moet geldig wees'; -$string['emailpasswordconfirmation'] = 'Hallo $a->firstname, iemand(moontlik jyself) het \'n nuwe wagwoord aangevra vir jou rekening op \'$a->sitename\'. Om dit te bevestig en \'n nuwe wagwoord via email te ontvang gaan na die volgende web adres $a->link In meeste programe sal dit as \'n blou skakel vertoon word waarop jy slegs hoef te klik. As dit nie werk nie,sny die adres uit en plak dit in die adres lyn bo aan jou \'browser\'. As jy hulp nodig het kontak die blad administrateur, $a->admin'; -$string['emailpasswordconfirmationsubject'] = '$a: verander wagwoord bevestiging'; -$string['emailpasswordconfirmsent'] = '\'n Email is veronderstel om gestuur te wees na jou adres - $a.

        Dit bevat maklike instruksies om jou wagwoord verandering te bevestig.

        As jy probleme ondervind, kontak die blad administrateur.'; -$string['emailpasswordsent'] = 'Dankie dat jy die verandering van jou wagwoord bevestig het. -\'n Email wat jou nuwe wagwoord bevat is gestuur na
        $a->email.
        -Die nuwe wagwoord was outomaties gegenereer - jy kan jou wagwoord verander na iets wat makliker is om te onthou. link\">Verander jou wagwoord hier'; -$string['enrolmentconfirmation'] = 'Jy gaan jou self inskryf as \'n lid van die kursus.
        Is jy seker jy wil dit doen?'; -$string['enrolmentkey'] = 'Registrasie sleutel'; -$string['enrolmentkeyfrom'] = 'Die kursus benodig \'n \'registrasie sleutel\' - \'n eenmalige
        wagwoord wat voorsien moet word deur $a'; -$string['enrolmentkeyhint'] = 'Die registrasie sleutel is nie korrek nie, probeer aseblief weer
        (Leidraad: dit begin met \'$a\')'; -$string['entercourse'] = 'Klik om by die kursus in te gaan'; -$string['enteremailaddress'] = 'Sleutel jou email adres in om jou wagwoord te verander,jou nuwe wagwoord sal na jou gestuur word via email.'; -$string['error'] = 'Fout'; -$string['errortoomanylogins'] = 'Jammer, jy het die aantal inskrywings probeerslae oorskry. Maak jou \'browser\' toe en begin weer.'; -$string['existing'] = 'Bestaande'; -$string['existingadmins'] = 'Bestaande administrateurs'; -$string['existingcourse'] = 'Bestaande kursus'; -$string['existingcourseadding'] = 'Voeg data by bestaande kursus'; -$string['existingcoursedeleting'] = 'Wis bestaande kursus uit'; -$string['existingcreators'] = 'Bestaande kursus skeppers'; -$string['existingstudents'] = 'Ingeskryfde studente'; -$string['existingteachers'] = 'Bestaande onderwysers'; -$string['feedback'] = 'Terugvoer'; -$string['filemissing'] = '$a is verlore'; -$string['files'] = 'Lêers'; -$string['filesfolders'] = 'Lêers/lêergidse'; -$string['filloutallfields'] = 'Vul al die velde in op die vorm'; -$string['findmorecourses'] = 'Vind nog kursusse...'; -$string['firstname'] = 'Noem naam'; -$string['firsttime'] = 'Is dit jou eerste keer hier?'; -$string['followingoptional'] = 'Die volgende items is optioneel'; -$string['followingrequired'] = 'Die volgende items moet ingevul word'; -$string['forgotten'] = 'Het jy jou gebruikersnaam en wagwoord vergeet?'; -$string['format'] = 'Formaat'; -$string['formathtml'] = 'HTML formaat'; -$string['formatplain'] = 'Gewone teks formaat'; -$string['formatsocial'] = 'Sosiale formaat'; -$string['formattext'] = 'Moodle auto-formaat'; -$string['formattexttype'] = 'Formatering'; -$string['formattopics'] = 'Onderwerp formaat'; -$string['formatweeks'] = 'Weeklikse formaat'; -$string['formatwiki'] = 'Wiki formaat'; -$string['from'] = 'Vanaf'; -$string['frontpagecategorynames'] = 'Vertoon \'n lys van kategorië'; -$string['frontpagecourselist'] = 'Vertoon \'n lys van kursusse'; -$string['frontpagedescription'] = 'Voorblad beskrywing'; -$string['frontpageformat'] = 'Voorblad formaat'; -$string['frontpagenews'] = 'Vertoon nuus items'; -$string['fulllistofcourses'] = 'Alle kursusse'; -$string['fullname'] = 'Voledige naam'; -$string['fullprofile'] = 'Volle profiel'; -$string['fullsitename'] = 'Volledige web blad naam'; -$string['gd1'] = 'GD 1.x is geinstalleer'; -$string['gd2'] = 'GD 2.x is geinstalleer'; -$string['gdneed'] = 'GD moet geinstalleer wees om die grafiek te sien'; -$string['gdnot'] = 'GD is nie geinstallleer nie'; -$string['gpl'] = 'Copyright (C) 2001-2003 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'; -$string['grade'] = 'Graad'; -$string['grades'] = 'Grade'; -$string['guestskey'] = 'Laat gaste in met \'n sleutel'; -$string['guestsno'] = 'Moenie gaste in laat nie'; -$string['guestsnotallowed'] = 'Jammmer, \'$a\' laat nie gaste toe nie.'; -$string['guestsyes'] = 'Laat gaste toe, sonder \'n sleutel'; -$string['guestuser'] = 'Gas gebruieker'; -$string['guestuserinfo'] = 'Die gebruiker is \'n spesiale gebruiker met lees-alleen toegang tot sommige kursusse'; -$string['help'] = 'Help'; -$string['helpemoticons'] = 'Gebruik emoticons'; -$string['helpformatting'] = 'Hoe om teks te formateer'; -$string['helphtml'] = 'Hoe om HTML te skryf'; -$string['helpindex'] = 'Indeks van help lêers'; -$string['helppicture'] = 'Hoe om \'n prent op te laai'; -$string['helpquestions'] = 'Vra goeie vrae'; -$string['helpreading'] = 'Lees versigtig'; -$string['helprichtext'] = 'Meer omtrent Richtext redigeerder'; -$string['helpsummaries'] = 'Meer omtrent die opsommings'; -$string['helptext'] = 'Hoe om teks te skryf'; -$string['helpwiki'] = 'Hoe om Wiki teks te skryf'; -$string['helpwriting'] = 'Skryf versigtig'; -$string['hide'] = 'Versteek'; -$string['hits'] = 'Kere besoek'; -$string['hitsoncourse'] = 'Kere wat $a->coursename besoek is deur $a->username'; -$string['hitsoncoursetoday'] = '$a->coursename vandag besoek deur $a->username'; -$string['home'] = 'Hoofblad'; -$string['hour'] = 'uur'; -$string['hours'] = 'ure'; -$string['howtomakethemes'] = 'Hoe om nuwe temas te skep'; -$string['htmleditor'] = 'Gebruik Richtext HTML redigeerder (IE alleenlik, 5.5 of later)'; -$string['htmleditoravailable'] = 'Die Richtext redigeerder is beskikbaar'; -$string['htmleditordisabled'] = 'Jy het Richtext redigeerder in jou gebruikersprofiel buite werking gestel'; -$string['htmleditordisabledadmin'] = 'Die administrateur het Richtext redigeerder buite werking gestel op die blad'; -$string['htmleditordisabledbrowser'] = 'Die Richtext redigeerder is buite werking gestel omdat jy nie Internet Explorer 5.5 or beter gebruik nie'; -$string['htmlformat'] = 'Mooi HTML formaat'; -$string['icqnumber'] = 'ICQ nommer'; -$string['idnumber'] = 'ID nommer'; -$string['include'] = 'Ingesluit'; -$string['includeallusers'] = 'Sluit alle gebruikers in'; -$string['includecoursefiles'] = 'Sluit kursus lêers in'; -$string['includecourseusers'] = 'Sluit kursus gebruikers in'; -$string['included'] = 'Ingesluit'; -$string['includelogentries'] = 'Sluit \'Log\' inskrywings in'; -$string['includeneededusers'] = 'sluit Benodigde gebruikers in'; -$string['includeuserfiles'] = 'Sluit gebruiker lêers in'; -$string['invalidemail'] = 'Ongeldige email adres'; -$string['invalidlogin'] = 'Ongeldige \'login\', probeer weer'; -$string['jumpto'] = 'Gaan na...'; -$string['langltr'] = 'Taal rigting links-na-regs'; -$string['langrtl'] = 'Taal rigting regs na links'; -$string['language'] = 'Taal'; -$string['languagegood'] = 'Die taal pakket is voledig! :-)'; -$string['lastaccess'] = 'Laaste toegang'; -$string['lastedited'] = 'Laaste geredigeer'; -$string['lastmodified'] = 'Laaste gemodifiseer'; -$string['lastname'] = 'Van'; -$string['latestlanguagepack'] = 'Kyk vir nuutste taal pakket op moodle.org'; -$string['latestnews'] = 'Nuus'; -$string['leavetokeep'] = 'Los oop om huidige wagwoord te hou'; -$string['license'] = 'GPL Lisensie'; -$string['list'] = 'Lys'; -$string['listfiles'] = 'Lys van lêers in $a'; -$string['listofallpeople'] = 'Lys van alle mense'; -$string['livelogs'] = '\'Logs\' van die laaste uur'; -$string['locale'] = 'en'; -$string['location'] = 'Lokasie'; -$string['loggedinas'] = 'Jy is ingeteken as $a '; -$string['loggedinnot'] = 'Jy is nie in geteken nie.'; -$string['login'] = 'Teken in'; -$string['loginas'] = 'Teken in as'; -$string['loginguest'] = 'Teken in as \'n gas'; -$string['loginsite'] = 'Teken in op die blad'; -$string['loginsteps'] = 'Hallo! Vir volle toegang tot die kursusse moet jy vir jouself \'n rekening skep op die blad. Party kursusse mag dalk \'n \"registrasie sleutel\" benodig. Hier is die stappe: -

          -
        1. Vul die Nuwe Rekening vorm in met jou details.
        2. -
        3. \'n Email sal dadelik aan jou email adres gestuur word.
        4. -
        5. Lees jou email, en klik op die skakel wat dit bevat.
        6. -
        7. Jou rekening sal bevestig wees en jy sal ingeteken wees.
        8. -
        9. Kies die kursus waaraan jy wil deelneem.
        10. As jy gevra word vir \'n \"registrasie sleutel\" - gee die sleutel wat deur jou onderwyser voorsien is. Dit sal jou \"inskryf\" in die kursus.
        11. Jy het nou toegang tot die voledige kursus. Van nou af sal jy net jou gebruikersnaam en wagwoord benodig(in die vorm op die blad) om toegang te verkry tot die web blad en die kurusse waarvoor jy ingeskryf is.
        12. -
        '; -$string['loginstepsnone'] = '

        Hallo!

        -

        Vir volle toegang tot die kursus moet jy \'n rekening skep.

        -

        Al wat jy hoef te doen is om \'n gebruikernaam en wagwoord uit te dink en in te vul op die vorm op die bladsy!

        -

        As iemand klaar die gebruikernaam gekies het, sal jy \'n ander gebruikernaam moet gebruik.

        '; -$string['loginto'] = 'Teken in op $a'; -$string['loginusing'] = 'Teken hier in met jou gebruikersnaam en wagwoord'; -$string['logout'] = 'Teken uit'; -$string['logs'] = 'Logs'; -$string['mainmenu'] = 'Hoof kieslys'; -$string['makeafolder'] = 'Maak \'n lêergids'; -$string['makeeditable'] = 'As jy \'$a\' redigeerbaar maak deur \'n web bediener prosess (vb. apache) dan kan jy die lêer vanaf die bladsy redigeer.'; -$string['managedatabase'] = 'Bestuur databasis'; -$string['managemodules'] = 'Bestuur modules'; -$string['markedthistopic'] = 'Die onderwerp is beklemtoon as die huidige onderwerp'; -$string['markthistopic'] = 'Beklemtoon die onderwerp as die huidige onderwerp'; -$string['maximumchars'] = 'Maksimum van $a karakters'; -$string['maximumgrade'] = 'Maksimum punt'; -$string['maximumshort'] = 'Maks'; -$string['maxsize'] = 'Maks grootte: $a'; -$string['min'] = 'min'; -$string['mins'] = 'mins'; -$string['miscellaneous'] = 'Algemene'; -$string['missingcategory'] = 'Jy moet \'n kategorie kies'; -$string['missingcity'] = 'Vul stad/dorp in'; -$string['missingcountry'] = 'Vul land in'; -$string['missingdescription'] = 'Vul beskrywing in'; -$string['missingemail'] = 'Vul email adres in'; -$string['missingfirstname'] = 'Vul naam in'; -$string['missingfullname'] = 'Vul volle naam in'; -$string['missinglastname'] = 'Vul van in'; -$string['missingnewpassword'] = 'Vul nuwe wagwoord in'; -$string['missingpassword'] = 'Vul wagwoord in'; -$string['missingshortname'] = 'Vul kort naam in'; -$string['missingshortsitename'] = 'Vul web blad se afkorting in'; -$string['missingsitedescription'] = 'Vul web blad beskrywing in'; -$string['missingsitename'] = 'Vul web blad naam in'; -$string['missingstrings'] = 'Kyk vir sinne wat kort'; -$string['missingstudent'] = 'Jy moet iets kies'; -$string['missingsummary'] = 'Vul opsomming in'; -$string['missingteacher'] = 'Jy moet iets kies'; -$string['missingurl'] = 'Vul URL in'; -$string['missingusername'] = 'Vul gebruikernaam in'; -$string['modified'] = 'Verander'; -$string['moduledeleteconfirm'] = 'Jy gaan die module \'$a\' uitwis. Dit sal alles in die databasis wat met die module geassosieer word uitwis. Is jy seker jy wil voort gaan?'; -$string['moduledeletefiles'] = 'Al die data geassosieer met die \'$a->module\' module is uitgewis. Wis die lêergids uit op die bediener(voorkom dat die module homself herinstalleer), wis nou die volgende lêergids uit op jou bediener: $a->directory'; -$string['modulesetup'] = 'Stel module tabelle op'; -$string['modulesuccess'] = '$a tablle is korrek opgestel'; -$string['moodleversion'] = 'Moodle Weergawe'; -$string['mostrecently'] = 'mees onlangs'; -$string['move'] = 'Skuif'; -$string['movecategoryto'] = 'Skuif kategorie na:'; -$string['movecourseto'] = 'Skuif kursus na:'; -$string['movedown'] = 'Skuif af'; -$string['movefilestohere'] = 'Skuif lêers hier'; -$string['movefull'] = 'Skuif $a hierna toe'; -$string['movehere'] = 'Skuif tot hier'; -$string['moveselectedcoursesto'] = 'Skuif geselekteerde kursusse na...'; -$string['movetoanotherfolder'] = 'Skuif na \'n ander lêergids'; -$string['moveup'] = 'Skuif op'; -$string['mustconfirm'] = 'Jy moet jou inskrywing bevestig'; -$string['mycourses'] = 'My kursusse'; -$string['name'] = 'Naam'; -$string['namesocial'] = 'afdeling'; -$string['nametopics'] = 'onderwerp'; -$string['nameweeks'] = 'week'; -$string['needed'] = 'Benodig'; -$string['never'] = 'Nooit'; -$string['neverdeletelogs'] = 'Moet nooit \'logs\' uitwis nie'; -$string['new'] = 'Nuwe'; -$string['newaccount'] = 'Nuwe rekening'; -$string['newcourse'] = 'Nuwe kursus'; -$string['newpassword'] = 'Nuwe wagwoord'; -$string['newpasswordtext'] = 'Hi $a->firstname, - -Jou rekening wagwoord by \'$a->sitename\' is herstel en \'n tydlike wagwoord is aan jou uitgereik. - -Jou huidige inteken inligting: -gebruikersnaam: $a->username -wagwoord: $a->newpassword - -Gaan asb. na die bladsy om jou wagwoord te verander: $a->link - -In meeste programe sal dit as \'n blou skakel vertoon word waarop jy slegs hoef te klik. As dit nie werk nie, sny die adres uit en plak dit in die adres lyn bo aan jou \'browser\'. - -Dankie vanaf die \'$a->sitename\' administrateur, $a->signoff '; -$string['newpicture'] = 'Nuwe prentjie'; -$string['newsitem'] = 'nuus item'; -$string['newsitems'] = 'nuus items'; -$string['newsitemsnumber'] = 'Nuus items om te wys'; -$string['newuser'] = 'Nuwe gebruiker'; -$string['newusers'] = 'Nuwe gebruikers'; -$string['next'] = 'Volgende'; -$string['no'] = 'Nee'; -$string['nocoursesfound'] = 'Geen kursusse was gevind met die woorde \'$a\''; -$string['nocoursesyet'] = 'Geen kursusse in die kategorie nie'; -$string['noexistingadmins'] = 'Geen admins, dit is \'n ernestige fout en jy is nie veronderstel om die boodskap te sien nie.'; -$string['noexistingcreators'] = 'Geen bestaande kursus skeppers nie'; -$string['noexistingstudents'] = 'Geen bestaande studente'; -$string['noexistingteachers'] = 'Geen bestaande onderwysers nie'; -$string['nofilesselected'] = 'Geen lêers is gekies om herstel te word nie'; -$string['nofilesyet'] = 'Geen lêers is al opgelaai vir die kursus nie'; -$string['nograde'] = 'Geen punt'; -$string['noimagesyet'] = 'Geen prente is al opgelaai vir die kursus nie'; -$string['nomorecourses'] = 'Geen meer kursusse was gevind nie'; -$string['none'] = 'Geen'; -$string['nopotentialadmins'] = 'Geen potensiële admins'; -$string['nopotentialcreators'] = 'Geen potensiële kursus skeppers'; -$string['nopotentialstudents'] = 'Geen potensiële studente nie'; -$string['nopotentialteachers'] = 'Geen potensiële onderwysers'; -$string['normal'] = 'Normaal'; -$string['nostudentsyet'] = 'Geen studente is al in die kursus ingeskryf nie'; -$string['nosuchemail'] = 'Email adres bestaan nie'; -$string['notavailable'] = 'Nie beskikbaar'; -$string['noteachersyet'] = 'Daar is nog nie onderwysers in die kursus nie'; -$string['notenrolled'] = '$a is nie ingeskryf by die kursus nie.'; -$string['noteuserschangednonetocourse'] = 'Let Wel: kursus gebruikers moet herstel word wanneer gebruiker data herstel word. Die stelling is vir jou verander.'; -$string['nothingnew'] = 'Niks nuut, sedert jy laas ingeteken het nie'; -$string['notincluded'] = 'Nie ingesluit nie'; -$string['nousersmatching'] = 'Geen gebruikers soos \'$a\' was gevind nie'; -$string['nousersyet'] = 'Daar is nog nie gebruikers nie'; -$string['now'] = 'nou'; -$string['numberweeks'] = 'Hoeveelheid weke/onderwerpe'; -$string['numdays'] = '$a dae'; -$string['numhours'] = '$a ure'; -$string['numminutes'] = '$a minute'; -$string['numviews'] = '$a gesien'; -$string['numweeks'] = '$a weke'; -$string['numwords'] = '$a woorde'; -$string['numyears'] = '$a jare'; -$string['ok'] = 'OK'; -$string['opentoguests'] = 'Gas toegang'; -$string['optional'] = 'optioneel'; -$string['order'] = 'Orde'; -$string['other'] = 'Ander'; -$string['outline'] = 'Beskrywing'; -$string['page'] = 'Bladsy'; -$string['participants'] = 'Deelnemers'; -$string['password'] = 'Wagwoord'; -$string['passwordchanged'] = 'Wagwoord is verander'; -$string['passwordconfirmchange'] = 'Bevestig wagwoord verandering'; -$string['passwordrecovery'] = 'Ja, help my om in te teken'; -$string['passwordsdiffer'] = 'Die wagwoorde verskil'; -$string['passwordsent'] = 'Wagwoord is gestuur'; -$string['passwordsenttext'] = '

        \'n Email is gestuur na jou adres - $a->email.

        -

        Lees die email vir jou nuwe wagwoord

        Die wagwoord is outomaties gegenereer, as jy wil link>verander dit na iets makliker om te onthou.

        '; -$string['people'] = 'Mense'; -$string['personalprofile'] = 'Persoonlike profiel'; -$string['phone'] = 'Telefoon'; -$string['phpinfo'] = 'PHP inligting'; -$string['popupwindow'] = 'Maak lêer in \'n nuwe venster oop'; -$string['potentialadmins'] = 'Potensiële admins'; -$string['potentialcreators'] = 'Potensiële kursus skeppers'; -$string['potentialstudents'] = 'Potensiële studente'; -$string['potentialteachers'] = 'Potensiële Onderwysers'; -$string['preferredlanguage'] = 'Taal voorkeur'; -$string['preview'] = 'Voorskou'; -$string['previeworchoose'] = 'Toets of kies \'n tema'; -$string['publicdirectory'] = 'Publieke lêergids'; -$string['publicdirectory0'] = 'Asseblief moenie die webblad publiseer nie'; -$string['publicdirectory1'] = 'Publiseer die webblad naam alleenlik'; -$string['publicdirectory2'] = 'Publiseer die blad naam met \'n skakel'; -$string['publicsitefileswarning'] = 'Let Wel: enige iemand het toegang tot lêers wat hier geplaas word '; -$string['question'] = 'Vraag'; -$string['readinginfofrombackup'] = 'Lees inligting van rugsteun'; -$string['readme'] = 'README'; -$string['recentactivity'] = 'Onlangse aktiwiteite'; -$string['registration'] = 'Moodle Registrasie'; -$string['registrationemail'] = 'Email kennisgewing'; -$string['registrationinfo'] = '

        Registreer op die bladsy jou Moodle webblad by moodle.org. Registrasie is gratis. Die belangrike voordeel van registrasie is dat jy op \'n poslys geplaas word, almal op die lys kry belangrike kennisgewings soos sekuriteit waarskuwings of nuwe weergawes van Moodle.

        -

        Jou inligting word privaat gehou en word aan niemand verkoop of gegee nie. Die inligting word versamel vir ondersteunings doeleindes, en om statistiek op te bou oor die algehele Moodle gemeenskap.

        -

        Jy kan jou blad naam, land en URL laat vertoon op \'n publieke lys van Moodle bladsye.

        -

        Alle registasies sal eers met die hand gekontroleer word voordat dit by die lys gevoeg word, jy kan jou registrasie (en inskrywing op die publiekelys) enige tyd verander deur die vorm weer in te vul en in te stuur.

        '; -$string['registrationno'] = 'Nee, ek wil nie emails ontvang nie'; -$string['registrationsend'] = 'Stuur registrasie inligting na moodle.org'; -$string['registrationyes'] = 'Ja, laat weet my van belangrike kennisgewings'; -$string['removeadmin'] = 'Verwyder admin'; -$string['removecreator'] = 'Verwyder kursus skepper'; -$string['removestudent'] = 'Verwyder student'; -$string['removeteacher'] = 'Verwyder onderwyser'; -$string['rename'] = 'Verander naam'; -$string['renamefileto'] = 'Hernoem $a na'; -$string['required'] = 'Benodig'; -$string['requireskey'] = 'Die kursus benodig \'n registrasie sleutel'; -$string['resortcoursesbyname'] = 'Hersorteer kursusse by naam'; -$string['resources'] = 'Hulpbronne'; -$string['restore'] = 'Herstel'; -$string['restorecancelled'] = 'Herstelwerk gekanselleer'; -$string['restorecoursenow'] = 'Herstel die kursus nou!'; -$string['restorefinished'] = 'Herstelling was suksesvol'; -$string['restoreto'] = 'Herstel na'; -$string['returningtosite'] = 'Terug by die webblad?'; -$string['revert'] = 'Keer terug'; -$string['role'] = 'Rol'; -$string['savechanges'] = 'Stoor veranderinge'; -$string['scale'] = 'Skaal'; -$string['scales'] = 'Skale'; -$string['scalescustom'] = 'Stel skale'; -$string['scalescustomcreate'] = 'Voeg \'n skaal by'; -$string['scalescustomno'] = 'Geen self gestelde skale is al geskep nie'; -$string['scalesstandard'] = 'Standaard skale'; -$string['search'] = 'Soek'; -$string['searchagain'] = 'Soek weer'; -$string['searchcourses'] = 'Soek deur kursusse'; -$string['searchhelp'] = 'Jy kan vir meer as een woord op \'n slag soek.

        woord: soek vir enige bypassende woord in die teks. -
        +woord: soek slegs vir woorde wat presies die selfde is. -
        -woord: moenie resultate insluit waarin die woord is nie.'; -$string['searchresults'] = 'Soektog resultate'; -$string['sec'] = 'sekonde'; -$string['secs'] = 'sekondes'; -$string['section'] = 'Afdeling'; -$string['sections'] = 'Afdelings'; -$string['select'] = 'Selekteer'; -$string['selectacountry'] = 'Kies \'n land'; -$string['selectednowmove'] = '$a lêers geselekteer om te skuif. Gaan nou na die bestemming en druk \'Skuif lêers hier\''; -$string['senddetails'] = 'Stuur my details via email'; -$string['separateandconnected'] = 'Geskeide of Verbonde kennis'; -$string['serverlocaltime'] = 'Bediener se lokale tyd'; -$string['settings'] = 'Stellings'; -$string['shortname'] = 'Kort naam'; -$string['shortnametaken'] = 'Die kort naam word al klaar vir \'n ander kursus gebruik ($a)'; -$string['shortsitename'] = 'Kort naam vir die webblad (enkel woord)'; -$string['show'] = 'Vertoon'; -$string['showall'] = 'Vertoon al $a'; -$string['showallcourses'] = 'Vertoon alle kursusse'; -$string['showalltopics'] = 'Vertoon alle onderwerpe'; -$string['showallusers'] = 'Vertoon alle gebruikers'; -$string['showallweeks'] = 'Vertoon alle weke'; -$string['showgrades'] = 'Vertoon punte'; -$string['showlistofcourses'] = 'Vertoon \'n lys van alle kurusse'; -$string['showonlytopic'] = 'Vertoon slegs onderwerp $a'; -$string['showonlyweek'] = 'Vertoon slegs week $a'; -$string['showrecent'] = 'Vertoon onlangse aktiwiteite'; -$string['showtheselogs'] = 'Vertoon die \'logs\''; -$string['site'] = 'Webbladsy'; -$string['sitefiles'] = 'Webblad lêers'; -$string['sitelogs'] = 'Webblad \'logs\''; -$string['sitenews'] = 'Webblad nuus'; -$string['sites'] = 'Webbladsye'; -$string['sitesettings'] = 'Webblad stellings'; -$string['size'] = 'Grootte'; -$string['socialheadline'] = 'Sosiale forum - nuutste onderwerpe'; -$string['someallowguest'] = 'Partye kursusse laat gas gebruikers toe'; -$string['someerrorswerefound'] = 'Sommige velde was oop of nie korrek nie, kyk onder vir details.'; -$string['startdate'] = 'Kursus begin datum'; -$string['startsignup'] = 'Begin nou! Maak \'n nuwe rekening oop.'; -$string['state'] = 'Staat/Provinsie'; -$string['status'] = 'Status'; -$string['strftimedate'] = '%%d %%B %%Y'; -$string['strftimedateshort'] = '%%d %%B'; -$string['strftimedatetime'] = '%%d %%B %%Y, %%I:%%M %%p'; -$string['strftimedaydate'] = '%%A, %%d %%B %%Y'; -$string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%I:%%M %%p'; -$string['strftimerecent'] = '%%d %%b, %%H:%%M'; -$string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%I:%%M %%p'; -$string['strftimetime'] = '%%I:%%M %%p'; -$string['stringsnotset'] = 'Die volgende stringe is nie gedefinieer nie in $a'; -$string['studentnotallowed'] = 'Jammer, jy het nie toegang tot die kursus as \'$a\' nie'; -$string['students'] = 'Studente'; -$string['subcategories'] = 'Sub-kategorië'; -$string['success'] = 'Sukses'; -$string['summary'] = 'Opsomming'; -$string['summaryof'] = 'Opsomming van $a'; -$string['supplyinfo'] = 'Gee asseblief \'n beskrywing van jouself'; -$string['teacheronly'] = 'vir die $a alleenlik'; -$string['teacherroles'] = '$a rolle'; -$string['teachers'] = 'Onderwysers'; -$string['textediting'] = 'Terwyl teks geredigeer word'; -$string['texteditor'] = 'Gebruik standaard web vorms'; -$string['textformat'] = 'Gewone teks formaat'; -$string['thanks'] = 'Dankie'; -$string['theme'] = 'Tema'; -$string['themes'] = 'Temas'; -$string['themesaved'] = 'Nuwe tema gestoor'; -$string['thischarset'] = 'iso-8859-1'; -$string['thislanguage'] = 'Afrikaans'; -$string['time'] = 'Tyd'; -$string['timezone'] = 'Tyd sone'; -$string['to'] = 'Na'; -$string['today'] = 'Vandag'; -$string['todaylogs'] = 'Vandag se \'logs\''; -$string['toomanytoshow'] = 'Daar is te veel gebruikers om te toon'; -$string['top'] = 'Bo'; -$string['topic'] = 'Onderwerp'; -$string['topichide'] = 'Steek die onderwerp weg van $a'; -$string['topicoutline'] = 'Onderwerp beskrywing'; -$string['topicshow'] = 'Wys die onderwerp aan $a'; -$string['total'] = 'Totaal'; -$string['turneditingoff'] = 'Sit redigering af'; -$string['turneditingon'] = 'Sit redigering aan'; -$string['undecided'] = 'Onbeslis'; -$string['unenrol'] = 'Kanseleer inskrywing'; -$string['unenrolme'] = 'Kanseleer my inskrywing by $a'; -$string['unenrolsure'] = 'Is jy seker jy wil $a se inskrywing kanselleer by die kursus?'; -$string['unknowncategory'] = 'Onbekende kategorie'; -$string['unpacking'] = 'Besig met $a'; -$string['unsafepassword'] = 'Onveilige wagwoord. Kies \'n ander wagwoord'; -$string['unusedaccounts'] = 'Rekeninge wat nie gebruik is vir $a dae word outomaties gekanselleer'; -$string['unzip'] = 'Unzip'; -$string['unzippingbackup'] = 'Pak rugsteun uit'; -$string['update'] = 'Bring verandering aan'; -$string['updated'] = '$a is verander'; -$string['updatemyprofile'] = 'Verander profiel'; -$string['updatesevery'] = 'Opdateer elke $a sekondes'; -$string['updatethis'] = 'Verander die $a'; -$string['updatethiscourse'] = 'Verander die kursus'; -$string['updatinga'] = 'Verander aan $a'; -$string['updatingain'] = 'Verander aan $a->what in $a->in'; -$string['upload'] = 'Oplaai'; -$string['uploadafile'] = 'Laai \'n lêer op'; -$string['uploadedfileto'] = '$a->file is gestoor in $a->directory'; -$string['uploadnofilefound'] = 'Geen lêer is gevind - is jy seker jy het een gekies om op te laai?'; -$string['uploadproblem'] = '\'n Onbekende fout het gebeur terwyl \'$a\' op gelaai is(miskien is dit te groot?)'; -$string['uploadthisfile'] = 'Laai die lêer op'; -$string['user'] = 'Gebruiker'; -$string['userdeleted'] = 'Die gebruiker rekening is uit gewis'; -$string['userdescription'] = 'Beskrywing'; -$string['userfiles'] = 'Gebruiker lêers'; -$string['username'] = 'Gebruikersnaam'; -$string['usernameexists'] = 'die gebruikersnaam bestaan reeds, kies \'n ander een'; -$string['userprofilefor'] = 'Gebruiker profiel van $a'; -$string['users'] = 'Gebruikers'; -$string['userzones'] = 'Gebruiker sones'; -$string['usingexistingcourse'] = 'Gebruik bestaande kursus'; -$string['view'] = 'Vertoon'; -$string['webpage'] = 'Web bladsy'; -$string['week'] = 'Week'; -$string['weekhide'] = 'Steek die week weg van $a'; -$string['weeklyoutline'] = 'Week beskrywing'; -$string['weekshow'] = 'Vertoon die week aan $a'; -$string['welcometocourse'] = 'Welkom by $a'; -$string['welcometocoursetext'] = 'Welkom by $a->coursename! Begin deur jou profiel te redigeer binne die kursus sodat ons meer van jou weet. $a->profileurl'; -$string['whattocallzip'] = 'Wat wil jy die \'zip\' lêer noem?'; -$string['withchosenfiles'] = 'Met gekiesde lêers'; -$string['withoutuserdata'] = 'sonder gebruiker data'; -$string['withuserdata'] = 'met gebruiker data'; -$string['wordforstudent'] = 'Jou woord vir Student'; -$string['wordforstudenteg'] = 'vb Student, Leerling ens'; -$string['wordforstudents'] = 'Jou woord vir Studente'; -$string['wordforstudentseg'] = 'vb Studente, Leerlinge ens'; -$string['wordforteacher'] = 'Jou woord vir Onderwyser'; -$string['wordforteachereg'] = 'vb. Onderwyser, Aanbieder ens.'; -$string['wordforteachers'] = 'Jou woord vir Onderwysers'; -$string['wordforteacherseg'] = 'vb. Onderwysers, Aanbieders ens'; -$string['writingcategoriesandquestions'] = 'Skryf kategorië en vrae'; -$string['writingcoursedata'] = 'Skryf kursus data'; -$string['writinggeneralinfo'] = 'Skryf algemene info'; -$string['writingheader'] = 'Skryf loopkop reël'; -$string['writingloginfo'] = 'Skryf \'log\' info'; -$string['writingmoduleinfo'] = 'Skryf modules info'; -$string['writingscalesinfo'] = 'Skryf skale info'; -$string['writinguserinfo'] = 'Skryf gebruiker info'; -$string['wrongpassword'] = 'Wagwoord pas nie by die gebruikersnaam nie'; -$string['yes'] = 'Ja'; -$string['youareabouttocreatezip'] = 'Jy gaan nou \'n \'zip\' lêer skep met'; -$string['youaregoingtorestorefrom'] = 'Jy gaan herstel vanaf:'; -$string['yourlastlogin'] = 'Jy het laas in geteken op:'; -$string['yourself'] = 'jyself'; -$string['yourteacher'] = 'jou $a'; -$string['zippingbackup'] = 'Besig met rugsteun'; - -?> +\$a
        "; +$string['activityiscurrentlyhidden'] = "Jammer, die aktiwiteit word weggesteek"; +$string['activitymodule'] = "Aktiwiteit module"; +$string['activityreport'] = "Aktiwiteit verslag"; +$string['activityselect'] = "Selekteer die aktiwiteit om elders te skuif"; +$string['activitysince'] = "Aktiwiteite sedert \$a"; +$string['add'] = "Voeg"; +$string['addadmin'] = "Voeg admin by"; +$string['addcreator'] = "Voeg kursus skepper by"; +$string['added'] = "By gevoeg \$a"; +$string['addinganew'] = "Voeg by 'n nuwe \$a"; +$string['addinganewto'] = "'n Nuwe \$a->what is aan \$a->to toegevoeg"; +$string['addingdatatoexisting'] = "Voeg data by bestaande"; +$string['addnewcategory'] = "Voeg nuwe kategorie by"; +$string['addnewcourse'] = "Voeg 'n nuwe kursus by"; +$string['addnewuser'] = "Voeg 'n nuwe gebruiker by"; +$string['address'] = "Adres"; +$string['addstudent'] = "Voeg student by"; +$string['addteacher'] = "Voeg onderwyser by"; +$string['admin'] = "Admin"; +$string['adminhelpaddnewuser'] = "Skep nuwe gebruiker rekening met die hand"; +$string['adminhelpassignadmins'] = "Admins kan enige iets doen en enige plek gaan"; +$string['adminhelpassigncreators'] = "Kursus skeppers kan kursusse skep en klas gee in die kursus"; +$string['adminhelpassignstudents'] = "Gaan in 'n kursus in en voeg studente by vanaf die admin kieslys"; +$string['adminhelpassignteachers'] = "Vind 'n kursus en gebruik die ikoon om onderwysers by te voeg"; +$string['adminhelpauthentication'] = "Jy kan interne gebruiker rekeninge gebruik of 'n eksterne databasis gebruik"; +$string['adminhelpconfiguration'] = "Konfigureer hoe die webblad lyk en werk"; +$string['adminhelpconfigvariables'] = "Konfigureer veranderlikes wat die algemene werking van die webblad affekteer"; +$string['adminhelpcourses'] = "Defineer kursusse, kategorië en voeg mense by "; +$string['adminhelpedituser'] = "Lees deur die lys van gebruiker rekeninge en redigeer enige van die rekeninge"; +$string['adminhelplanguage'] = "Om die huidige taal pakket te evalueer en te redigeer"; +$string['adminhelplogs'] = "Lees deur al die aktiwiteite op die webblad"; +$string['adminhelpmanagedatabase'] = "Kry direkte toegang tot databasis (wees versigtig!)"; +$string['adminhelpmanagemodules'] = "Bestuur geinstalleerde modules en hulle stellings"; +$string['adminhelpsitefiles'] = "Om algemene lêers te publiseer of om eksterne rugsteune op te laai"; +$string['adminhelpsitesettings'] = "Defineer hoe die voorblad van die webblad lyk"; +$string['adminhelpthemes'] = "Kies hoe die webblad lyk (kleur, letters ens.)"; +$string['adminhelpusers'] = "Definieer jou gebruikers en stel geldigheidsvasstelling op"; +$string['administration'] = "Administrasie"; +$string['administrator'] = "Administrateur"; +$string['administrators'] = "Administrateurs"; +$string['again'] = "weer"; +$string['all'] = "Alle"; +$string['alldays'] = "Alle dae"; +$string['allfieldsrequired'] = "Alle velde word benodig"; +$string['alllogs'] = "Alle logs"; +$string['allow'] = "Laat toe"; +$string['allowguests'] = "Die kursus laat gaste toe"; +$string['allownot'] = "Moenie toelaat nie"; +$string['allparticipants'] = "Alle deelnemers"; +$string['alphanumerical'] = "Kan slegs alfabeties letters of nommers gebruik"; +$string['alreadyconfirmed'] = "Registrasie is reeds bevestig"; +$string['answer'] = "Antwoord"; +$string['areyousuretorestorethis'] = "Is jy seker?"; +$string['areyousuretorestorethisinfo'] = "Later in die proses kan jy besluit of jy die rugsteun by 'n bestaande kursus wil voeg of 'n nuwe kursus wil skep."; +$string['assessment'] = "Evaluasie"; +$string['assignadmins'] = "Voeg admins by"; +$string['assigncreators'] = "Voeg kursus skeppers by"; +$string['assignstudents'] = "Skryf studente in "; +$string['assignstudentsnote'] = "Let Wel: dit mag dalk nie nodig wees om die bladsy te gebruik nie omdat die studente self kan inskryf by die kursus."; +$string['assignstudentspass'] = "Al wat jy hoef te doen is om die studente te laat weet van die registrasie sleutel vir die kursus, die sleutel is huidiglik: '\$a'"; +$string['assignteachers'] = "Voeg onderwysers by"; +$string['authentication'] = "Geldigheidsvastelling"; +$string['autosubscribe'] = "Forum auto-inskryf"; +$string['autosubscribeno'] = "Nee: moet my nie outomaties inskryf by die forum nie"; +$string['autosubscribeyes'] = "Ja: as ek pos, skryf my in by die forum"; +$string['availability'] = "Beskikbaarheid"; +$string['availablecourses'] = "Beskikbare kursusse"; +$string['backup'] = "Rugsteun"; +$string['backupdate'] = "Rugsteun Datum"; +$string['backupdetails'] = "Rugsteun Details"; +$string['backupfilename'] = "rugsteun"; +$string['backupfinished'] = "Rugsteun suksesvol"; +$string['backupnameformat'] = "%%Y%%m%%d-%%H%%M"; +$string['backuporiginalname'] = "Rugsteun Naam"; +$string['backupversion'] = "Rugsteun Versie"; +$string['cancel'] = "Kanselleer"; +$string['categories'] = "Kursus Kategorieë"; +$string['category'] = "Kategorie"; +$string['categoryadded'] = "Die kategorie '\$a' was bygesit"; +$string['categorydeleted'] = "Die kategorie '\$a' was uitgewis"; +$string['categoryduplicate'] = "'n Kategorie genaamd '\$a' bestaan reeds!"; +$string['changedpassword'] = "Wagwoord - verander."; +$string['changepassword'] = "Verander wagwoord"; +$string['changessaved'] = "Veranderinge - gestoor"; +$string['checkingbackup'] = "Evalueer rugsteun"; +$string['checkingcourse'] = "Evalueer kursus"; +$string['checkinginstances'] = "Evalueer instansies"; +$string['checkingsections'] = "Evalueer seksies"; +$string['checklanguage'] = "Toets taal"; +$string['choose'] = "Kies"; +$string['choosecourse'] = "Kies 'n kursus"; +$string['chooselivelogs'] = "Of kyk na huidige aktiwiteite"; +$string['chooselogs'] = "Kies die logs wat jy wil sien"; +$string['choosetheme'] = "Kies tema"; +$string['chooseuser'] = "Kies 'n gebruiker"; +$string['city'] = "Stad/dorp"; +$string['cleaningtempdata'] = "Maak temp data skoon"; +$string['closewindow'] = "Maak die venster toe"; +$string['comparelanguage'] = "Vergelyk en redigeer huidige taal"; +$string['complete'] = "Klaar"; +$string['configcountry'] = "As jy 'n land hier stel, dan sal die land as verstek waarde gebruik word met nuwe gebruiker rekeninge. As gebruikers 'n land MOET kies, los die veld oop."; +$string['configdebug'] = "As jy die aansit, dan sal PHP se 'error_reporting' vermeerder sodat meer waarskuwings gedruk word, dit is slegs nuttig vir ontwikkelaars."; +$string['configerrorlevel'] = "Kies die hoeveelheid PHP waarskuwings wat vertoon moet word. Normaal is gewoonlik die beste keuse."; +$string['configframename'] = "As jy Moodle in 'n web raam sit, sit die naam van die raam hier. Andersins los die waarde as '_top'"; +$string['configgdversion'] = "Sê watter GD versie is geinstalleer. Die versie wat getoon word is outomaties vasgestel, moenie dit verander tensy sy rerig weet wat jy doen nie."; +$string['confightmleditor'] = "Kies of gebruikers die ingeslote HTML redigeerder mag gebruik of nie. As jy dit toelaat sal die redigeerder slegs verskyn as dit versoenbaar is met die 'browser' (IE 5.5 of beter). Gebruikers kan ook kies om dit nie te gebruik nie."; +$string['configidnumber'] = "Die opsie spesifiseer of (a) Die Gebruiker nie vir 'n ID gevra sal word nie, (b) Gebruikers word gevra vir 'n ID maar kan dit oop los, of (c) Gebruikers word gevra vir 'n ID en kan dit nie oop los nie. As 'n ID gegee word sal die ID in die Gebruiker se profiel vertoon word."; +$string['configintro'] = "Op die bladsy kan jy konfigurasie veranderlikes spesifiseer wat Moodle behoorlik sal laat funksioneer op jou bediener. Moenie te veel bekommer oor die veranderlikes nie - die verstek waardes werk gewoonlik en jy kan altyd later terug kom na die bladsy om veranderinge te maak."; +$string['configintroadmin'] = "Op die bladsy skep jy die hoof administrateur rekening wat totalle beheer het oor die web blad. Gee dit 'n veilige gebruikersnaam en wagwoord en ook 'n geldige email adres. Jy kan nog admin rekeninge later skep."; +$string['configintrosite'] = "Die bladsy konfigureer die voor blad van die nuwe werf. Jy kan enige tyd terug kom en die stellings verander deur die 'Werf Verstellings' skakels op die hoof blad(home page) te gebruik."; +$string['configlang'] = "Kies 'n verstek taal vir die werf. Gebruikers kan later self die stelling verander."; +$string['configlangdir'] = "Meeste tale word van links na regs geskryf, maar party soos Hebreeus word van regs na links geskryf."; +$string['configlanglist'] = "Los dit oop om gebruikers in staat te stel om enige taal te kies wat saam met Moodle geinstalleer word. Verkort die lys deur taal kodes in te tik, sit 'n komma tussen elke kode (byvoorbeeld: en,es_es,fr,it)"; +$string['configlangmenu'] = "Kies of 'n algemene taal lys op die hoof blad vertoon moet word, 'login' bladsy ens. Die gebruiker sal steeds in staat wees om 'n taal te kies in sy eie profiel."; +$string['configlocale'] = "Kies 'n lokaliteit - dit sal die formaat en taal van datums beïnvloed . Die lokaliteit moet op jou bedryfstelsel geinstalleer word. (byvoorbeeld: en_US of es_ES). As jy nie weet wat om te kies nie - los dit oop."; +$string['configloglifetime'] = "Dit spesifiseer hoe lank jy 'logs' hou oor gebruiker aktiwiteit. 'Logs' ouer as dit word outomaties uitgevee. Dit is die beste om die 'logs' vir so lank as moontlik te hou, ingeval jy dit benodig, maar as jou bediener baie besig is, maak die 'logs' leef tyd korter."; +$string['configlongtimenosee'] = "As studente lank laas by die werf was word hulle inskrywings outomaties gekanselleer. Die waarde spesifiseer die tyd limiet."; +$string['configmaxeditingtime'] = "Dit spesifiseer hoe lank tyd mense het om forum post, joernaal inskrywings ens te redigeer. Gewoonlik is 30 minute 'n goeie waarde."; +$string['configproxyhost'] = "As die bediener 'n instaan bediener benodig (soos 'n 'firewall') om toegang te verkry tot die internet, gee die instaan bediener naam en poort hier. Andersins los dit oop."; +$string['configsecureforms'] = "Moodle kan 'n addisionele vlak van sekuriteit gebruik as data vanaf web forms ontvang word. As dit aangesit is word die 'browser' se HTTP_REFERER nagegaan teen die huidige adres. In 'n paar gevalle kan dit probleme veroorsaak by gebruikers wat firewalls gebruik (eg Zonealarm)wat gekonfigureer is om HTTP_REFERER weg te vat by web verkeer. Simtome is om 'vas te sit' op 'n vorm. As jou gebruiker die probleem ondervind met 'login page' (byvoorbeeld) sit die stelling af."; +$string['configsessiontimeout'] = "As mense wat op die bladsy ingeteken is, stil is vir 'n lang tyd (laai geen bladsye), dan word hulle outomaties uitgeteken (sessie word geeindig). Die veranderlike spesifiseer hoe lank voor hulle uitgeteken word."; +$string['configslasharguments'] = "Lêers (prente, dokumente ens.) word voorsien via 'n skrip wat 'slash arguments' gebruik(die tweede opsie hier). Die metode laat lêers toe om voorlopig geberg te word op 'n web 'browser', instaan bediener ens. Maar party PHP bedieners laat nie die metode toe nie, as jy probleme ondervind om opgelaaide lêers en prente te sien(soos gebruiker foto's), stel die veranderlike na die eerste opsie"; +$string['configsmtphosts'] = "Gee die volle naam van die lokale SMTP bediener wat Moodle moet gebruik om pos te stuur (soos 'mail.a.com' of 'mail.a.com;mail.b.com'). As jy dit oop los sal Moodle die verstek PHP metode gebruik om pos te stuur."; +$string['configsmtpuser'] = "Indien jy SMTP bediener gebruik, en die bediener gebruik geldigheidssvastelling, sit dan die gerbruikersnaam en wagwoord hier."; +$string['configteacherassignteachers'] = "Mag gewone onderwysers nog onderwysers aanwys binne in die kursusse waar hulle klas gee? As die stelling 'Nee' is kan slegs kursus skeppers en admins onderwysers aanwys."; +$string['configunzip'] = "Waar is jou 'unzip' program (Slegs Unix, optioneel). As dit gespesifiseer is sal die program gebruik word om gekompakteerde argiewe op die bediener oop te maak. As jy dit oop los sal Moodle interne roetines gebruik."; +$string['configuration'] = "Konfigurasie"; +$string['configvariables'] = "Konfigureer veranderlikes"; +$string['configwarning'] = "Wees versig om die stellings te verander - vreemde waardes kan probleme skep."; +$string['configzip'] = "Waar is jou 'zip' program (Slegs Unix, optioneel). Indien gespesifiseer, sal die program gebruik word om 'zip' argiewe op die bediener te skep. As jy dit oop los sal Moodle interne roetines gebruik."; +$string['confirmed'] = "Jou registrasie is bevestig"; +$string['confirmednot'] = "Jou registrasie is nog nie bevestig nie!"; +$string['continue'] = "Gaan voort"; +$string['cookiesenabled'] = "'Cookies' moet aangesit wees in jou 'browser'"; +$string['copy'] = "kopieer"; +$string['copyingcoursefiles'] = "Kopieer kursus lêers"; +$string['copyinguserfiles'] = "Kopieer gebruiker lêers"; +$string['copyingzipfile'] = "Kopieer 'zip' lêers"; +$string['copyrightnotice'] = "Kopiereg kennisgewing"; +$string['country'] = "Land"; +$string['course'] = "Kursus"; +$string['courseavailable'] = "Die kursus is beskikbaar aan studente"; +$string['courseavailablenot'] = "Die kursus is nie beskikbaar vir studente nie"; +$string['coursebackup'] = "Kursus Rugsteun"; +$string['coursecategories'] = "Kursus kategorië"; +$string['coursecategory'] = "Kursus kategorie"; +$string['coursecreators'] = "Kursus skeppers"; +$string['coursefiles'] = "Kursus lêers"; +$string['courseformats'] = "Kursus formaat"; +$string['coursegrades'] = "Kursus punte"; +$string['courseinfo'] = "Kursus inligting"; +$string['courserestore'] = "Kursus herstel"; +$string['courses'] = "Kursusse"; +$string['courseupdates'] = "Kursus veranderinge"; +$string['create'] = "Skep"; +$string['createaccount'] = "Skep my nuwe rekening"; +$string['createfolder'] = "Skep 'n lêergids in \$a"; +$string['createuserandpass'] = "Skep 'n nuwe gerbuikersnaam en wagwoord om mee in te teken"; +$string['createziparchive'] = "Skep nuwe 'zip' argief"; +$string['creatingcategoriesandquestions'] = "Skep kategorië en vrae"; +$string['creatingcoursemodules'] = "Skep kursus modules"; +$string['creatinglogentries'] = "Skep 'log' inskrywings"; +$string['creatingnewcourse'] = "Skep nuwe kursus"; +$string['creatingscales'] = "Skep skale"; +$string['creatingsections'] = "Skep seksies"; +$string['creatingtemporarystructures'] = "Skep tydelike strukture"; +$string['creatingusers'] = "Skep gebruikers"; +$string['creatingxmlfile'] = "Skep XML lêers"; +$string['currentcourseadding'] = "Voeg data by huidige kursus"; +$string['currentcoursedeleting'] = "Wis huidige kursus uit"; +$string['currentlanguage'] = "Huidige taal"; +$string['currentlocaltime'] = "jou huidige lokale tyd"; +$string['currentrelease'] = "Huidige vrystelling inligting"; +$string['currentversion'] = "Huidige vrystelling"; +$string['databasechecking'] = "Moodle word opgegradeer van \$a->oldversion na \$a->newversion..."; +$string['databasesetup'] = "Jou databasis word opgestel"; +$string['databasesuccess'] = "Databasis opgradeering was suksesvol"; +$string['databaseupgradebackups'] = "Rugsteun weergawe is nou \$a"; +$string['databaseupgrades'] = "Databasis word opgegradeer"; +$string['day'] = "dag"; +$string['days'] = "dae"; +$string['defaultcoursefullname'] = "Kursus Naam 101"; +$string['defaultcourseshortname'] = "KN101"; +$string['defaultcoursestudent'] = "Student"; +$string['defaultcoursestudents'] = "Studente"; +$string['defaultcoursesummary'] = "Skryf 'n kort en interessante paragraaf wat handel oor die kursus hier"; +$string['defaultcourseteacher'] = "Onderwyser"; +$string['defaultcourseteachers'] = "Onderwysers"; +$string['delete'] = "Uitwis"; +$string['deletecheck'] = "Vee \$a uit?"; +$string['deletecheckfiles'] = "Is jy seker jy wil die lêers uitwis?"; +$string['deletecheckfull'] = "Is jy seker jy wil \$a heeltemal uitwis?"; +$string['deletecheckwarning'] = "Jy gaan die volgende lêers uitwis"; +$string['deletecompletely'] = "Wis heeltemal uit"; +$string['deletecourse'] = "Wis kursus uit"; +$string['deletecoursecheck'] = "Is jy seker jy wil die kursus en al die data wat dit bevat uitwis?"; +$string['deleted'] = "Uitgewis"; +$string['deletedactivity'] = "\$a uitgewis"; +$string['deletedcourse'] = "\$a is heeltemal uitgewis"; +$string['deletednot'] = "Kon nie \$a uitwis nie!"; +$string['deletingcourse'] = "\$a word uitgewis"; +$string['deletingexistingcoursedata'] = "Wis bestaande kursus data uit"; +$string['deletingolddata'] = "Wis ou data uit"; +$string['department'] = "Departement"; +$string['description'] = "Beskrywing"; +$string['displayingfirst'] = "Slegs die eerste \$a->count \$a->things word vertoon"; +$string['displayingrecords'] = "Vertoon \$a rekords"; +$string['displayingusers'] = "Vertoon gebruikers \$a->start tot \$a->end"; +$string['documentation'] = "Moodle Dokumentasie"; +$string['donotask'] = "Moenie vra nie"; +$string['downloadexcel'] = "Laai af in Excel formaat"; +$string['downloadtext'] = "Laai af in teks formaat"; +$string['doyouagree'] = "Het jy die voorwaardes gelees en verstaan jy dit?"; +$string['edit'] = "Redigeer \$a"; +$string['editcoursesettings'] = "Redigeer kursus stellings"; +$string['editinga'] = "Redigeer 'n \$a"; +$string['editmyprofile'] = "Redigeer profiel"; +$string['editsummary'] = "Redigeer opsomming"; +$string['editthisactivity'] = "Redigeer die aktiwiteit"; +$string['editthiscategory'] = "Redigeer die kategorie"; +$string['edituser'] = "Redigeer gebruiker rekeninge"; +$string['email'] = "Email adres"; +$string['emailconfirm'] = "Bevestig jou rekening"; +$string['emailconfirmation'] = "Hallo \$a->firstname, 'n Nuwe rekening is aangevra vanaf '\$a->sitename' wat jou email adres gebruik. Om die rekening te bevestig gaan na die web adres: \$a->link In meeste programe sal dit as 'n blou skakel vertoon word waarop jy slegs hoef te klik. As dit nie werk nie,sny die adres uit en plak dit in die adres lyn bo aan jou 'browser'. As jy hulp nodig het kontak die blad administrateur, \$a->admin"; +$string['emailconfirmationsubject'] = "\$a: rekening bevestiging"; +$string['emailconfirmsent'] = "

        'n Email is veronderstel om gestuur te wees na jou adres - \$a

        Dit bevat maklike instruksies om jou registrasie te voltooi.

        As jy probleme ondervind, kontak die blad administrateur."; +$string['emaildisplay'] = "Email vertoning"; +$string['emaildisplaycourse'] = "Laat slegs lede van my kursus toe om my adres te sien"; +$string['emaildisplayno'] = "Steek my email adres weg van almal"; +$string['emaildisplayyes'] = "Laat almal toe om my email adres te sien"; +$string['emailexists'] = "Die email adres is klaar geregistreer."; +$string['emailformat'] = "Email formaat"; +$string['emailmustbereal'] = "NB: die email adres moet geldig wees"; +$string['emailpasswordconfirmation'] = "Hallo \$a->firstname, iemand(moontlik jyself) het 'n nuwe wagwoord aangevra vir jou rekening op '\$a->sitename'. Om dit te bevestig en 'n nuwe wagwoord via email te ontvang gaan na die volgende web adres \$a->link In meeste programe sal dit as 'n blou skakel vertoon word waarop jy slegs hoef te klik. As dit nie werk nie,sny die adres uit en plak dit in die adres lyn bo aan jou 'browser'. As jy hulp nodig het kontak die blad administrateur, \$a->admin"; +$string['emailpasswordconfirmationsubject'] = "\$a: verander wagwoord bevestiging"; +$string['emailpasswordconfirmsent'] = "'n Email is veronderstel om gestuur te wees na jou adres - \$a.

        Dit bevat maklike instruksies om jou wagwoord verandering te bevestig.

        As jy probleme ondervind, kontak die blad administrateur."; +$string['emailpasswordsent'] = "Dankie dat jy die verandering van jou wagwoord bevestig het.

        'n Email wat jou nuwe wagwoord bevat is gestuur na \$a->email.

        Die nuwe wagwoord was outomaties gegenereer - jy kan jou wagwoord verander na iets wat makliker is om te onthou. link> Verander jou wagwoord hier"; +$string['enrolmentconfirmation'] = "Jy gaan jou self inskryf as 'n lid van die kursus.
        Is jy seker jy wil dit doen?"; +$string['enrolmentkey'] = "Registrasie sleutel"; +$string['enrolmentkeyfrom'] = "Die kursus benodig 'n 'registrasie sleutel' - 'n eenmalige
        wagwoord wat voorsien moet word deur \$a"; +$string['enrolmentkeyhint'] = "Die registrasie sleutel is nie korrek nie, probeer aseblief weer
        (Leidraad: dit begin met '\$a')"; +$string['entercourse'] = "Klik om by die kursus in te gaan"; +$string['enteremailaddress'] = "Sleutel jou email adres in om jou wagwoord te verander,jou nuwe wagwoord sal na jou gestuur word via email."; +$string['error'] = "Fout"; +$string['errortoomanylogins'] = "Jammer, jy het die aantal inskrywings probeerslae oorskry. Maak jou 'browser' toe en begin weer."; +$string['existing'] = "Bestaande"; +$string['existingadmins'] = "Bestaande administrateurs"; +$string['existingcourse'] = "Bestaande kursus"; +$string['existingcourseadding'] = "Voeg data by bestaande kursus"; +$string['existingcoursedeleting'] = "Wis bestaande kursus uit"; +$string['existingcreators'] = "Bestaande kursus skeppers"; +$string['existingstudents'] = "Ingeskryfde studente"; +$string['existingteachers'] = "Bestaande onderwysers"; +$string['feedback'] = "Terugvoer"; +$string['filemissing'] = "\$a is verlore"; +$string['files'] = "Lêers"; +$string['filesfolders'] = "Lêers/lêergidse"; +$string['filloutallfields'] = "Vul al die velde in op die vorm"; +$string['findmorecourses'] = "Vind nog kursusse..."; +$string['firstname'] = "Noem naam"; +$string['firsttime'] = "Is dit jou eerste keer hier?"; +$string['followingoptional'] = "Die volgende items is optioneel"; +$string['followingrequired'] = "Die volgende items moet ingevul word"; +$string['forgotten'] = "Het jy jou gebruikersnaam en wagwoord vergeet?"; +$string['format'] = "Formaat"; +$string['formathtml'] = "HTML formaat"; +$string['formatplain'] = "Gewone teks formaat"; +$string['formatsocial'] = "Sosiale formaat"; +$string['formattext'] = "Moodle auto-formaat"; +$string['formattexttype'] = "Formatering"; +$string['formattopics'] = "Onderwerp formaat"; +$string['formatweeks'] = "Weeklikse formaat"; +$string['formatwiki'] = "Wiki formaat"; +$string['from'] = "Vanaf"; +$string['frontpagecategorynames'] = "Vertoon 'n lys van kategorië"; +$string['frontpagecourselist'] = "Vertoon 'n lys van kursusse"; +$string['frontpagedescription'] = "Voorblad beskrywing"; +$string['frontpageformat'] = "Voorblad formaat"; +$string['frontpagenews'] = "Vertoon nuus items"; +$string['fulllistofcourses'] = "Alle kursusse"; +$string['fullname'] = "Voledige naam"; +$string['fullprofile'] = "Volle profiel"; +$string['fullsitename'] = "Volledige web blad naam"; +$string['gd1'] = "GD 1.x is geinstalleer"; +$string['gd2'] = "GD 2.x is geinstalleer"; +$string['gdneed'] = "GD moet geinstalleer wees om die grafiek te sien"; +$string['gdnot'] = "GD is nie geinstallleer nie"; +$string['gpl'] = "Copyright (C) 2001-2003 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"; +$string['grade'] = "Graad"; +$string['grades'] = "Grade"; +$string['guestskey'] = "Laat gaste in met 'n sleutel"; +$string['guestsno'] = "Moenie gaste in laat nie"; +$string['guestsnotallowed'] = "Jammmer, '\$a' laat nie gaste toe nie."; +$string['guestsyes'] = "Laat gaste toe, sonder 'n sleutel"; +$string['guestuser'] = "Gas gebruieker"; +$string['guestuserinfo'] = "Die gebruiker is 'n spesiale gebruiker met lees-alleen toegang tot sommige kursusse"; +$string['help'] = "Help"; +$string['helpemoticons'] = "Gebruik emoticons"; +$string['helpformatting'] = "Hoe om teks te formateer"; +$string['helphtml'] = "Hoe om HTML te skryf"; +$string['helpindex'] = "Indeks van help lêers"; +$string['helppicture'] = "Hoe om 'n prent op te laai"; +$string['helpquestions'] = "Vra goeie vrae"; +$string['helpreading'] = "Lees versigtig"; +$string['helprichtext'] = "Meer omtrent Richtext redigeerder"; +$string['helpsummaries'] = "Meer omtrent die opsommings"; +$string['helptext'] = "Hoe om teks te skryf"; +$string['helpwiki'] = "Hoe om Wiki teks te skryf"; +$string['helpwriting'] = "Skryf versigtig"; +$string['hide'] = "Versteek"; +$string['hits'] = "Kere besoek"; +$string['hitsoncourse'] = "Kere wat \$a->coursename besoek is deur \$a->username"; +$string['hitsoncoursetoday'] = "\$a->coursename vandag besoek deur \$a->username"; +$string['home'] = "Hoofblad"; +$string['hour'] = "uur"; +$string['hours'] = "ure"; +$string['howtomakethemes'] = "Hoe om nuwe temas te skep"; +$string['htmleditor'] = "Gebruik Richtext HTML redigeerder (IE alleenlik, 5.5 of later)"; +$string['htmleditoravailable'] = "Die Richtext redigeerder is beskikbaar"; +$string['htmleditordisabled'] = "Jy het Richtext redigeerder in jou gebruikersprofiel buite werking gestel"; +$string['htmleditordisabledadmin'] = "Die administrateur het Richtext redigeerder buite werking gestel op die blad"; +$string['htmleditordisabledbrowser'] = "Die Richtext redigeerder is buite werking gestel omdat jy nie Internet Explorer 5.5 or beter gebruik nie"; +$string['htmlformat'] = "Mooi HTML formaat"; +$string['icqnumber'] = "ICQ nommer"; +$string['idnumber'] = "ID nommer"; +$string['include'] = "Ingesluit"; +$string['includeallusers'] = "Sluit alle gebruikers in"; +$string['includecoursefiles'] = "Sluit kursus lêers in"; +$string['includecourseusers'] = "Sluit kursus gebruikers in"; +$string['included'] = "Ingesluit"; +$string['includelogentries'] = "Sluit 'Log' inskrywings in"; +$string['includeneededusers'] = "sluit Benodigde gebruikers in"; +$string['includeuserfiles'] = "Sluit gebruiker lêers in"; +$string['invalidemail'] = "Ongeldige email adres"; +$string['invalidlogin'] = "Ongeldige 'login', probeer weer"; +$string['jumpto'] = "Gaan na..."; +$string['langltr'] = "Taal rigting links-na-regs"; +$string['langrtl'] = "Taal rigting regs na links"; +$string['language'] = "Taal"; +$string['languagegood'] = "Die taal pakket is voledig! :-)"; +$string['lastaccess'] = "Laaste toegang"; +$string['lastedited'] = "Laaste geredigeer"; +$string['lastmodified'] = "Laaste gemodifiseer"; +$string['lastname'] = "Van"; +$string['latestlanguagepack'] = "Kyk vir nuutste taal pakket op moodle.org"; +$string['latestnews'] = "Nuus"; +$string['leavetokeep'] = "Los oop om huidige wagwoord te hou"; +$string['license'] = "GPL Lisensie"; +$string['list'] = "Lys"; +$string['listfiles'] = "Lys van lêers in \$a"; +$string['listofallpeople'] = "Lys van alle mense"; +$string['livelogs'] = "'Logs' van die laaste uur"; +$string['locale'] = "en"; +$string['location'] = "Lokasie"; +$string['loggedinas'] = "Jy is ingeteken as \$a "; +$string['loggedinnot'] = "Jy is nie in geteken nie."; +$string['login'] = "Teken in"; +$string['loginas'] = "Teken in as"; +$string['loginguest'] = "Teken in as 'n gas"; +$string['loginsite'] = "Teken in op die blad"; +$string['loginsteps'] = "Hallo! Vir volle toegang tot die kursusse moet jy vir jouself 'n rekening skep op die blad. Party kursusse mag dalk 'n "registrasie sleutel" benodig. Hier is die stappe:

        1. Vul die Nuwe Rekening vorm in met jou details.
        2. 'n Email sal dadelik aan jou email adres gestuur word.
        3. Lees jou email, en klik op die skakel wat dit bevat.
        4. Jou rekening sal bevestig wees en jy sal ingeteken wees.
        5. Kies die kursus waaraan jy wil deelneem.
        6. As jy gevra word vir 'n "registrasie sleutel" - gee die sleutel wat deur jou onderwyser voorsien is. Dit sal jou "inskryf" in die kursus.
        7. Jy het nou toegang tot die voledige kursus. Van nou af sal jy net jou gebruikersnaam en wagwoord benodig(in die vorm op die blad) om toegang te verkry tot die web blad en die kurusse waarvoor jy ingeskryf is.
        "; +$string['loginstepsnone'] = "Hallo!

        Vir volle toegang tot die kursus moet jy 'n rekening skep.

        Al wat jy hoef te doen is om 'n gebruikernaam en wagwoord uit te dink en in te vul op die vorm op die bladsy!

        As iemand klaar die gebruikernaam gekies het, sal jy 'n ander gebruikernaam moet gebruik."; +$string['loginto'] = "Teken in op \$a"; +$string['loginusing'] = "Teken hier in met jou gebruikersnaam en wagwoord"; +$string['logout'] = "Teken uit"; +$string['logs'] = "Logs"; +$string['mainmenu'] = "Hoof kieslys"; +$string['makeafolder'] = "Maak 'n lêergids"; +$string['makeeditable'] = "As jy '\$a' redigeerbaar maak deur 'n web bediener prosess (vb. apache) dan kan jy die lêer vanaf die bladsy redigeer."; +$string['managedatabase'] = "Bestuur databasis"; +$string['managemodules'] = "Bestuur modules"; +$string['markedthistopic'] = "Die onderwerp is beklemtoon as die huidige onderwerp"; +$string['markthistopic'] = "Beklemtoon die onderwerp as die huidige onderwerp"; +$string['maximumchars'] = "Maksimum van \$a karakters"; +$string['maximumgrade'] = "Maksimum punt"; +$string['maximumshort'] = "Maks"; +$string['maxsize'] = "Maks grootte: \$a"; +$string['min'] = "min"; +$string['mins'] = "mins"; +$string['miscellaneous'] = "Algemene"; +$string['missingcategory'] = "Jy moet 'n kategorie kies"; +$string['missingcity'] = "Vul stad/dorp in"; +$string['missingcountry'] = "Vul land in"; +$string['missingdescription'] = "Vul beskrywing in"; +$string['missingemail'] = "Vul email adres in"; +$string['missingfirstname'] = "Vul naam in"; +$string['missingfullname'] = "Vul volle naam in"; +$string['missinglastname'] = "Vul van in"; +$string['missingnewpassword'] = "Vul nuwe wagwoord in"; +$string['missingpassword'] = "Vul wagwoord in"; +$string['missingshortname'] = "Vul kort naam in"; +$string['missingshortsitename'] = "Vul web blad se afkorting in"; +$string['missingsitedescription'] = "Vul web blad beskrywing in"; +$string['missingsitename'] = "Vul web blad naam in"; +$string['missingstrings'] = "Kyk vir sinne wat kort"; +$string['missingstudent'] = "Jy moet iets kies"; +$string['missingsummary'] = "Vul opsomming in"; +$string['missingteacher'] = "Jy moet iets kies"; +$string['missingurl'] = "Vul URL in"; +$string['missingusername'] = "Vul gebruikernaam in"; +$string['modified'] = "Verander"; +$string['moduledeleteconfirm'] = "Jy gaan die module '\$a' uitwis. Dit sal alles in die databasis wat met die module geassosieer word uitwis. Is jy seker jy wil voort gaan?"; +$string['moduledeletefiles'] = "Al die data geassosieer met die '\$a->module' module is uitgewis. Wis die lêergids uit op die bediener(voorkom dat die module homself herinstalleer), wis nou die volgende lêergids uit op jou bediener: \$a->directory"; +$string['modulesetup'] = "Stel module tabelle op"; +$string['modulesuccess'] = "\$a tablle is korrek opgestel"; +$string['moodleversion'] = "Moodle Weergawe"; +$string['mostrecently'] = "mees onlangs"; +$string['move'] = "Skuif"; +$string['movecategoryto'] = "Skuif kategorie na:"; +$string['movecourseto'] = "Skuif kursus na:"; +$string['movedown'] = "Skuif af"; +$string['movefilestohere'] = "Skuif lêers hier"; +$string['movefull'] = "Skuif \$a hierna toe"; +$string['movehere'] = "Skuif tot hier"; +$string['moveselectedcoursesto'] = "Skuif geselekteerde kursusse na..."; +$string['movetoanotherfolder'] = "Skuif na 'n ander lêergids"; +$string['moveup'] = "Skuif op"; +$string['mustconfirm'] = "Jy moet jou inskrywing bevestig"; +$string['mycourses'] = "My kursusse"; +$string['name'] = "Naam"; +$string['namesocial'] = "afdeling"; +$string['nametopics'] = "onderwerp"; +$string['nameweeks'] = "week"; +$string['needed'] = "Benodig"; +$string['never'] = "Nooit"; +$string['neverdeletelogs'] = "Moet nooit 'logs' uitwis nie"; +$string['new'] = "Nuwe"; +$string['newaccount'] = "Nuwe rekening"; +$string['newcourse'] = "Nuwe kursus"; +$string['newpassword'] = "Nuwe wagwoord"; +$string['newpasswordtext'] = "Hi \$a->firstname, Jou rekening wagwoord by '\$a->sitename' is herstel en 'n tydlike wagwoord is aan jou uitgereik. Jou huidige inteken inligting: gebruikersnaam: \$a->username wagwoord: \$a->newpassword Gaan asb. na die bladsy om jou wagwoord te verander: \$a->link In meeste programe sal dit as 'n blou skakel vertoon word waarop jy slegs hoef te klik. As dit nie werk nie, sny die adres uit en plak dit in die adres lyn bo aan jou 'browser'. Dankie vanaf die '\$a->sitename' administrateur, \$a->signoff "; +$string['newpicture'] = "Nuwe prentjie"; +$string['newsitem'] = "nuus item"; +$string['newsitems'] = "nuus items"; +$string['newsitemsnumber'] = "Nuus items om te wys"; +$string['newuser'] = "Nuwe gebruiker"; +$string['newusers'] = "Nuwe gebruikers"; +$string['next'] = "Volgende"; +$string['no'] = "Nee"; +$string['nocoursesfound'] = "Geen kursusse was gevind met die woorde '\$a'"; +$string['nocoursesyet'] = "Geen kursusse in die kategorie nie"; +$string['noexistingadmins'] = "Geen admins, dit is 'n ernestige fout en jy is nie veronderstel om die boodskap te sien nie."; +$string['noexistingcreators'] = "Geen bestaande kursus skeppers nie"; +$string['noexistingstudents'] = "Geen bestaande studente"; +$string['noexistingteachers'] = "Geen bestaande onderwysers nie"; +$string['nofilesselected'] = "Geen lêers is gekies om herstel te word nie"; +$string['nofilesyet'] = "Geen lêers is al opgelaai vir die kursus nie"; +$string['nograde'] = "Geen punt"; +$string['noimagesyet'] = "Geen prente is al opgelaai vir die kursus nie"; +$string['nomorecourses'] = "Geen meer kursusse was gevind nie"; +$string['none'] = "Geen"; +$string['nopotentialadmins'] = "Geen potensiële admins"; +$string['nopotentialcreators'] = "Geen potensiële kursus skeppers"; +$string['nopotentialstudents'] = "Geen potensiële studente nie"; +$string['nopotentialteachers'] = "Geen potensiële onderwysers"; +$string['normal'] = "Normaal"; +$string['nostudentsyet'] = "Geen studente is al in die kursus ingeskryf nie"; +$string['nosuchemail'] = "Email adres bestaan nie"; +$string['notavailable'] = "Nie beskikbaar"; +$string['noteachersyet'] = "Daar is nog nie onderwysers in die kursus nie"; +$string['notenrolled'] = "\$a is nie ingeskryf by die kursus nie."; +$string['noteuserschangednonetocourse'] = "Let Wel: kursus gebruikers moet herstel word wanneer gebruiker data herstel word. Die stelling is vir jou verander."; +$string['nothingnew'] = "Niks nuut, sedert jy laas ingeteken het nie"; +$string['notincluded'] = "Nie ingesluit nie"; +$string['nousersmatching'] = "Geen gebruikers soos '\$a' was gevind nie"; +$string['nousersyet'] = "Daar is nog nie gebruikers nie"; +$string['now'] = "nou"; +$string['numberweeks'] = "Hoeveelheid weke/onderwerpe"; +$string['numdays'] = "\$a dae"; +$string['numhours'] = "\$a ure"; +$string['numminutes'] = "\$a minute"; +$string['numviews'] = "\$a gesien"; +$string['numweeks'] = "\$a weke"; +$string['numwords'] = "\$a woorde"; +$string['numyears'] = "\$a jare"; +$string['ok'] = "OK"; +$string['opentoguests'] = "Gas toegang"; +$string['optional'] = "optioneel"; +$string['order'] = "Orde"; +$string['other'] = "Ander"; +$string['outline'] = "Beskrywing"; +$string['page'] = "Bladsy"; +$string['participants'] = "Deelnemers"; +$string['password'] = "Wagwoord"; +$string['passwordchanged'] = "Wagwoord is verander"; +$string['passwordconfirmchange'] = "Bevestig wagwoord verandering"; +$string['passwordrecovery'] = "Ja, help my om in te teken"; +$string['passwordsdiffer'] = "Die wagwoorde verskil"; +$string['passwordsent'] = "Wagwoord is gestuur"; +$string['passwordsenttext'] = "

        'n Email is gestuur na jou adres - \$a->email.

        Lees die email vir jou nuwe wagwoord

        Die wagwoord is outomaties gegenereer, as jy wil link>verander dit na iets makliker om te onthou."; +$string['people'] = "Mense"; +$string['personalprofile'] = "Persoonlike profiel"; +$string['phone'] = "Telefoon"; +$string['phpinfo'] = "PHP inligting"; +$string['popupwindow'] = "Maak lêer in 'n nuwe venster oop"; +$string['potentialadmins'] = "Potensiële admins"; +$string['potentialcreators'] = "Potensiële kursus skeppers"; +$string['potentialstudents'] = "Potensiële studente"; +$string['potentialteachers'] = "Potensiële Onderwysers"; +$string['preferredlanguage'] = "Taal voorkeur"; +$string['preview'] = "Voorskou"; +$string['previeworchoose'] = "Toets of kies 'n tema"; +$string['publicdirectory'] = "Publieke lêergids"; +$string['publicdirectory0'] = "Asseblief moenie die webblad publiseer nie"; +$string['publicdirectory1'] = "Publiseer die webblad naam alleenlik"; +$string['publicdirectory2'] = "Publiseer die blad naam met 'n skakel"; +$string['publicsitefileswarning'] = "Let Wel: enige iemand het toegang tot lêers wat hier geplaas word "; +$string['question'] = "Vraag"; +$string['readinginfofrombackup'] = "Lees inligting van rugsteun"; +$string['readme'] = "README"; +$string['recentactivity'] = "Onlangse aktiwiteite"; +$string['registration'] = "Moodle Registrasie"; +$string['registrationemail'] = "Email kennisgewing"; +$string['registrationinfo'] = "

        Registreer op die bladsy jou Moodle webblad by moodle.org. Registrasie is gratis. Die belangrike voordeel van registrasie is dat jy op 'n poslys geplaas word, almal op die lys kry belangrike kennisgewings soos sekuriteit waarskuwings of nuwe weergawes van Moodle.

        Jou inligting word privaat gehou en word aan niemand verkoop of gegee nie. Die inligting word versamel vir ondersteunings doeleindes, en om statistiek op te bou oor die algehele Moodle gemeenskap.

        Jy kan jou blad naam, land en URL laat vertoon op 'n publieke lys van Moodle bladsye.

        Alle registasies sal eers met die hand gekontroleer word voordat dit by die lys gevoeg word, jy kan jou registrasie (en inskrywing op die publiekelys) enige tyd verander deur die vorm weer in te vul en in te stuur."; +$string['registrationno'] = "Nee, ek wil nie emails ontvang nie"; +$string['registrationsend'] = "Stuur registrasie inligting na moodle.org"; +$string['registrationyes'] = "Ja, laat weet my van belangrike kennisgewings"; +$string['removeadmin'] = "Verwyder admin"; +$string['removecreator'] = "Verwyder kursus skepper"; +$string['removestudent'] = "Verwyder student"; +$string['removeteacher'] = "Verwyder onderwyser"; +$string['rename'] = "Verander naam"; +$string['renamefileto'] = "Hernoem \$a na"; +$string['required'] = "Benodig"; +$string['requireskey'] = "Die kursus benodig 'n registrasie sleutel"; +$string['resortcoursesbyname'] = "Hersorteer kursusse by naam"; +$string['resources'] = "Hulpbronne"; +$string['restore'] = "Herstel"; +$string['restorecancelled'] = "Herstelwerk gekanselleer"; +$string['restorecoursenow'] = "Herstel die kursus nou!"; +$string['restorefinished'] = "Herstelling was suksesvol"; +$string['restoreto'] = "Herstel na"; +$string['returningtosite'] = "Terug by die webblad?"; +$string['revert'] = "Keer terug"; +$string['role'] = "Rol"; +$string['savechanges'] = "Stoor veranderinge"; +$string['scale'] = "Skaal"; +$string['scales'] = "Skale"; +$string['scalescustom'] = "Stel skale"; +$string['scalescustomcreate'] = "Voeg 'n skaal by"; +$string['scalescustomno'] = "Geen self gestelde skale is al geskep nie"; +$string['scalesstandard'] = "Standaard skale"; +$string['search'] = "Soek"; +$string['searchagain'] = "Soek weer"; +$string['searchcourses'] = "Soek deur kursusse"; +$string['searchhelp'] = "Jy kan vir meer as een woord op 'n slag soek.

        +woord: soek vir enige bypassende woord in die teks. +
        +woord: soek slegs vir woorde wat presies die selfde is. +
        -woord: moenie resultate insluit waarin die woord is nie."; +$string['searchresults'] = "Soektog resultate"; +$string['sec'] = "sekonde"; +$string['secs'] = "sekondes"; +$string['section'] = "Afdeling"; +$string['sections'] = "Afdelings"; +$string['select'] = "Selekteer"; +$string['selectacountry'] = "Kies 'n land"; +$string['selectednowmove'] = "\$a lêers geselekteer om te skuif. Gaan nou na die bestemming en druk 'Skuif lêers hier'"; +$string['senddetails'] = "Stuur my details via email"; +$string['separateandconnected'] = "Geskeide of Verbonde kennis"; +$string['serverlocaltime'] = "Bediener se lokale tyd"; +$string['settings'] = "Stellings"; +$string['shortname'] = "Kort naam"; +$string['shortnametaken'] = "Die kort naam word al klaar vir 'n ander kursus gebruik (\$a)"; +$string['shortsitename'] = "Kort naam vir die webblad (enkel woord)"; +$string['show'] = "Vertoon"; +$string['showall'] = "Vertoon al \$a"; +$string['showallcourses'] = "Vertoon alle kursusse"; +$string['showalltopics'] = "Vertoon alle onderwerpe"; +$string['showallusers'] = "Vertoon alle gebruikers"; +$string['showallweeks'] = "Vertoon alle weke"; +$string['showgrades'] = "Vertoon punte"; +$string['showlistofcourses'] = "Vertoon 'n lys van alle kurusse"; +$string['showonlytopic'] = "Vertoon slegs onderwerp \$a"; +$string['showonlyweek'] = "Vertoon slegs week \$a"; +$string['showrecent'] = "Vertoon onlangse aktiwiteite"; +$string['showtheselogs'] = "Vertoon die 'logs'"; +$string['site'] = "Webbladsy"; +$string['sitefiles'] = "Webblad lêers"; +$string['sitelogs'] = "Webblad 'logs'"; +$string['sitenews'] = "Webblad nuus"; +$string['sites'] = "Webbladsye"; +$string['sitesettings'] = "Webblad stellings"; +$string['size'] = "Grootte"; +$string['socialheadline'] = "Sosiale forum - nuutste onderwerpe"; +$string['someallowguest'] = "Partye kursusse laat gas gebruikers toe"; +$string['someerrorswerefound'] = "Sommige velde was oop of nie korrek nie, kyk onder vir details."; +$string['startdate'] = "Kursus begin datum"; +$string['startsignup'] = "Begin nou! Maak 'n nuwe rekening oop."; +$string['state'] = "Staat/Provinsie"; +$string['status'] = "Status"; +$string['strftimedate'] = "%%d %%B %%Y"; +$string['strftimedateshort'] = "%%d %%B"; +$string['strftimedatetime'] = "%%d %%B %%Y, %%I:%%M %%p"; +$string['strftimedaydate'] = "%%A, %%d %%B %%Y"; +$string['strftimedaydatetime'] = "%%A, %%d %%B %%Y, %%I:%%M %%p"; +$string['strftimerecent'] = "%%d %%b, %%H:%%M"; +$string['strftimerecentfull'] = "%%a, %%d %%b %%Y, %%I:%%M %%p"; +$string['strftimetime'] = "%%I:%%M %%p"; +$string['stringsnotset'] = "Die volgende stringe is nie gedefinieer nie in \$a"; +$string['studentnotallowed'] = "Jammer, jy het nie toegang tot die kursus as '\$a' nie"; +$string['students'] = "Studente"; +$string['subcategories'] = "Sub-kategorië"; +$string['success'] = "Sukses"; +$string['summary'] = "Opsomming"; +$string['summaryof'] = "Opsomming van \$a"; +$string['supplyinfo'] = "Gee asseblief 'n beskrywing van jouself"; +$string['teacheronly'] = "vir die \$a alleenlik"; +$string['teacherroles'] = "\$a rolle"; +$string['teachers'] = "Onderwysers"; +$string['textediting'] = "Terwyl teks geredigeer word"; +$string['texteditor'] = "Gebruik standaard web vorms"; +$string['textformat'] = "Gewone teks formaat"; +$string['thanks'] = "Dankie"; +$string['theme'] = "Tema"; +$string['themes'] = "Temas"; +$string['themesaved'] = "Nuwe tema gestoor"; +$string['thischarset'] = "iso-8859-1"; +$string['thislanguage'] = "Afrikaans"; +$string['time'] = "Tyd"; +$string['timezone'] = "Tyd sone"; +$string['to'] = "Na"; +$string['today'] = "Vandag"; +$string['todaylogs'] = "Vandag se 'logs'"; +$string['toomanytoshow'] = "Daar is te veel gebruikers om te toon"; +$string['top'] = "Bo"; +$string['topic'] = "Onderwerp"; +$string['topichide'] = "Steek die onderwerp weg van \$a"; +$string['topicoutline'] = "Onderwerp beskrywing"; +$string['topicshow'] = "Wys die onderwerp aan \$a"; +$string['total'] = "Totaal"; +$string['turneditingoff'] = "Sit redigering af"; +$string['turneditingon'] = "Sit redigering aan"; +$string['undecided'] = "Onbeslis"; +$string['unenrol'] = "Kanseleer inskrywing"; +$string['unenrolme'] = "Kanseleer my inskrywing by \$a"; +$string['unenrolsure'] = "Is jy seker jy wil \$a se inskrywing kanselleer by die kursus?"; +$string['unknowncategory'] = "Onbekende kategorie"; +$string['unpacking'] = "Besig met \$a"; +$string['unsafepassword'] = "Onveilige wagwoord. Kies 'n ander wagwoord"; +$string['unusedaccounts'] = "Rekeninge wat nie gebruik is vir \$a dae word outomaties gekanselleer"; +$string['unzip'] = "Unzip"; +$string['unzippingbackup'] = "Pak rugsteun uit"; +$string['update'] = "Bring verandering aan"; +$string['updated'] = "\$a is verander"; +$string['updatemyprofile'] = "Verander profiel"; +$string['updatesevery'] = "Opdateer elke \$a sekondes"; +$string['updatethis'] = "Verander die \$a"; +$string['updatethiscourse'] = "Verander die kursus"; +$string['updatinga'] = "Verander aan \$a"; +$string['updatingain'] = "Verander aan \$a->what in \$a->in"; +$string['upload'] = "Oplaai"; +$string['uploadafile'] = "Laai 'n lêer op"; +$string['uploadedfileto'] = "\$a->file is gestoor in \$a->directory"; +$string['uploadnofilefound'] = "Geen lêer is gevind - is jy seker jy het een gekies om op te laai?"; +$string['uploadproblem'] = "'n Onbekende fout het gebeur terwyl '\$a' op gelaai is(miskien is dit te groot?)"; +$string['uploadthisfile'] = "Laai die lêer op"; +$string['user'] = "Gebruiker"; +$string['userdeleted'] = "Die gebruiker rekening is uit gewis"; +$string['userdescription'] = "Beskrywing"; +$string['userfiles'] = "Gebruiker lêers"; +$string['username'] = "Gebruikersnaam"; +$string['usernameexists'] = "die gebruikersnaam bestaan reeds, kies 'n ander een"; +$string['userprofilefor'] = "Gebruiker profiel van \$a"; +$string['users'] = "Gebruikers"; +$string['userzones'] = "Gebruiker sones"; +$string['usingexistingcourse'] = "Gebruik bestaande kursus"; +$string['view'] = "Vertoon"; +$string['webpage'] = "Web bladsy"; +$string['week'] = "Week"; +$string['weekhide'] = "Steek die week weg van \$a"; +$string['weeklyoutline'] = "Week beskrywing"; +$string['weekshow'] = "Vertoon die week aan \$a"; +$string['welcometocourse'] = "Welkom by \$a"; +$string['welcometocoursetext'] = "Welkom by \$a->coursename! Begin deur jou profiel te redigeer binne die kursus sodat ons meer van jou weet. \$a->profileurl"; +$string['whattocallzip'] = "Wat wil jy die 'zip' lêer noem?"; +$string['withchosenfiles'] = "Met gekiesde lêers"; +$string['withoutuserdata'] = "sonder gebruiker data"; +$string['withuserdata'] = "met gebruiker data"; +$string['wordforstudent'] = "Jou woord vir Student"; +$string['wordforstudenteg'] = "vb Student, Leerling ens"; +$string['wordforstudents'] = "Jou woord vir Studente"; +$string['wordforstudentseg'] = "vb Studente, Leerlinge ens"; +$string['wordforteacher'] = "Jou woord vir Onderwyser"; +$string['wordforteachereg'] = "vb. Onderwyser, Aanbieder ens."; +$string['wordforteachers'] = "Jou woord vir Onderwysers"; +$string['wordforteacherseg'] = "vb. Onderwysers, Aanbieders ens"; +$string['writingcategoriesandquestions'] = "Skryf kategorië en vrae"; +$string['writingcoursedata'] = "Skryf kursus data"; +$string['writinggeneralinfo'] = "Skryf algemene info"; +$string['writingheader'] = "Skryf loopkop reël"; +$string['writingloginfo'] = "Skryf 'log' info"; +$string['writingmoduleinfo'] = "Skryf modules info"; +$string['writingscalesinfo'] = "Skryf skale info"; +$string['writinguserinfo'] = "Skryf gebruiker info"; +$string['wrongpassword'] = "Wagwoord pas nie by die gebruikersnaam nie"; +$string['yes'] = "Ja"; +$string['youareabouttocreatezip'] = "Jy gaan nou 'n 'zip' lêer skep met"; +$string['youaregoingtorestorefrom'] = "Jy gaan herstel vanaf:"; +$string['yourlastlogin'] = "Jy het laas in geteken op:"; +$string['yourself'] = "jyself"; +$string['yourteacher'] = "jou \$a"; +$string['zippingbackup'] = "Besig met rugsteun"; + +?> diff --git a/lang/af/quiz.php b/lang/af/quiz.php index f68b0296c23..84a708c12b7 100644 --- a/lang/af/quiz.php +++ b/lang/af/quiz.php @@ -1,159 +1,160 @@ -
        As jy \'n vraag kategorie gekies of geskep het kan jy vrae skep of redigeer. Jy kan enige van die vrae kies om in te sluit by jou toets aan die ander kant van die bladsy.'; -$string['addquestions'] = 'Voeg vrae by'; -$string['addquestionstoquiz'] = 'Voeg vrae by die huidige toets'; -$string['addselectedtoquiz'] = 'Voeg geselekteerde by die toets'; -$string['allowreview'] = 'Laat hersiening toe'; -$string['alreadysubmitted'] = 'Dit is moontlik dat jy klaar die lêer ingehandig het'; -$string['alwaysavailable'] = 'Altyd beskikbaar'; -$string['answer'] = 'Antwoord'; -$string['answerhowmany'] = 'Een of meer antwoorde?'; -$string['answersingleno'] = 'Verskeie antwoorde toegelaat'; -$string['answersingleyes'] = 'Een antwoord alleenlik'; -$string['answerswithacceptederrormarginmustbenumeric'] = 'Antwoorde wat aanvaarbare foute toelaat moet numeries wees'; -$string['attempt'] = 'Poging $a'; -$string['attemptfirst'] = 'Eerste poging'; -$string['attemptlast'] = 'Laaste poging'; -$string['attemptquiznow'] = 'Doen toets nou'; -$string['attempts'] = 'Pogings'; -$string['attemptsallowed'] = 'Pogings toegelaat'; -$string['attemptsunlimited'] = 'Onbeperkte pogings'; -$string['backtoquiz'] = 'Terug na toets redigeering'; -$string['bestgrade'] = 'Beste punt'; -$string['blackboard'] = 'Swartbord'; -$string['caseno'] = 'Nee, kas is nie belangrik nie'; -$string['casesensitive'] = 'Kassensitief'; -$string['caseyes'] = 'Ja, kas moet reg wees'; -$string['categories'] = 'Kategorieë'; -$string['category'] = 'Kategorie'; -$string['categoryinfo'] = 'Kategorie inligting'; -$string['categorymove'] = 'Die kategorie \'$a->name\' bevat $a->count vrae. Kies asseblief \'n ander kategorie om hulle na te skuif.'; -$string['categorymoveto'] = 'Skuif hulle na die kategorie'; -$string['choice'] = 'Keuse'; -$string['choices'] = 'Beskikbare keuses'; -$string['correctanswer'] = 'Korrekte antwoord'; -$string['correctanswers'] = 'Korrekte antwoorde'; -$string['countdown'] = 'Aftelling'; -$string['countdownfinished'] = 'Die toets gaan nou sluit, jy moet nou jou werk inhandig.'; -$string['countdowntenminutes'] = 'Die toets gaan oor 10 minute sluit.'; -$string['createmultiple'] = 'Skep meer as een vraag'; -$string['createnewquestion'] = 'Skep \'n nuwe vraag'; -$string['custom'] = 'Eie formaat'; -$string['daysavailable'] = 'Dae beskikbaar'; -$string['default'] = 'Verstek'; -$string['defaultgrade'] = 'Verstek vraag punt'; -$string['defaultinfo'] = 'Die verstek kategorie vir die vrae.'; -$string['deletequestioncheck'] = 'Is jy seker dat jy \'$a\' wil uit wis?'; -$string['description'] = 'Beskrywing'; -$string['eachattemptbuildsonthelast'] = 'Elke probeerslag bou op die laaste een'; -$string['editcategories'] = 'Redigeer kategorie'; -$string['editingdescription'] = 'Redigeer \'n Beskrywing'; -$string['editingmatch'] = 'Redigeer Bypassende vraag'; -$string['editingmultianswer'] = 'Redigeer Vasgelegde Antwoorde (Cloze)'; -$string['editingmultichoice'] = 'Redigeer meervoudige keuse vrae'; -$string['editingnumerical'] = 'Redigeer \'n numeriese vraag'; -$string['editingquestion'] = 'Redigeer \'n vraag'; -$string['editingquiz'] = 'Redigeer toets'; -$string['editingrandom'] = 'Redigeer \'n willekeurige vraag'; -$string['editingrandomsamatch'] = 'Redigeer \'n willekeurige vraag met \'n kort antwoord'; -$string['editingshortanswer'] = 'Redigeer kort-antwoord vraag'; -$string['editingtruefalse'] = 'Redigeer waar/vals vraag'; -$string['false'] = 'vals'; -$string['feedback'] = 'Terugvoer'; -$string['fileformat'] = 'Lêer formaat'; -$string['filloutoneanswer'] = 'Jy moet een moontlike antwoord kies. Antwoorde wat oop gelos word, word nie gemerk nie.'; -$string['filloutthreequestions'] = 'Jy moet ten minste drie keuses maak. Antwoorde wat oop gelos word,word nie gemerk nie.'; -$string['fillouttwochoices'] = 'Jy moet ten minste twee keuses maak. Antwoorde wat oop gelos word,word nie gemerk nie.'; -$string['fractionsaddwrong'] = 'Die positiewe punte wat jy gekies het tel nie op tot 100%% nie -
        Dit tel op tot $a%% -
        Wil jy terug gaan en die vraag reg maak?'; -$string['fractionsnomax'] = 'Een van die antwoorde moet 100%% wees, sodat dit -
        moontlik is om vol punte te kry vir die vraag. -
        Wil jy terug gaan en die vraag reg maak?'; -$string['gradeaverage'] = 'Gemiddelde punt'; -$string['gradehighest'] = 'Hoogste punt'; -$string['grademethod'] = 'Graderings metode'; -$string['guestsno'] = 'Jammer, gaste word nie toegelaat om die punte te sien nie'; -$string['imagedisplay'] = 'Prent om te vertoon'; -$string['importquestions'] = 'Voer vrae van lêer in'; -$string['introduction'] = 'Inleiding'; -$string['marks'] = 'Punte'; -$string['match'] = 'Bypassende'; -$string['matchanswer'] = 'Bypassende antwoord'; -$string['missingcorrectanswer'] = 'Korrekte antwoord moet gespesifiseer word'; -$string['missingname'] = 'Vul vraag naam in'; -$string['missingquestiontext'] = 'Vul vraag teks in'; -$string['missingword'] = 'Vul woord formaat in'; -$string['modulename'] = 'Toets'; -$string['modulenameplural'] = 'Toetse'; -$string['multianswer'] = 'Vasgelegde antwoorde'; -$string['multichoice'] = 'Meervoudige Keuse Vraag'; -$string['noanswers'] = 'Geen antwoord was gekies nie!'; -$string['noattempts'] = 'Geen pogings om die toets te doen was gemaak nie'; -$string['nomoreattempts'] = 'Nog pogings word nie toegelaat nie'; -$string['noquestions'] = 'Geen vrae is al by gesit nie'; -$string['noreview'] = 'Jy word nie toegelaat om die toets te hersien nie'; -$string['noreviewuntil'] = 'Jy mag eers die toets hersien na $a'; -$string['notenoughsubquestions'] = 'Nie genoeg sub-vrae gedefinieer nie!
        -Wil jy terug gaan en die vraag reg maak?'; -$string['numerical'] = 'Numeries'; -$string['publish'] = 'Publiseer'; -$string['qti'] = 'IMS QTI formaat'; -$string['question'] = 'Vraag'; -$string['questioninuse'] = 'Die vraag \'$a\' word huidiglik gebruik:'; -$string['questionname'] = 'Vraag naam'; -$string['questions'] = 'Vrae'; -$string['quizavailable'] = 'Die toets is beskikbaar tot: $a'; -$string['quizclose'] = 'Maak toets toe'; -$string['quizclosed'] = 'Die toets is toe op $a'; -$string['quizcloses'] = 'Toets is besig om te sluit'; -$string['quiznotavailable'] = 'Die toets sal eers beskikbaar wees op: $a'; -$string['quizopen'] = 'Maak die toets oop'; -$string['random'] = 'Willekeurige vraag'; -$string['randomcreate'] = 'Skep Willekeurige vraag'; -$string['randomsamatch'] = 'Willekeurige Kort-Antwoord Bypassende'; -$string['randomsamatchcreate'] = 'Skep \'n Willekeurige Kort-Antwoord Bypassende vraag'; -$string['randomsamatchintro'] = 'Vir elk van die volgende vrae, kies die korrekte antwoord van die kieslys.'; -$string['randomsamatchnumber'] = 'Hoeveel vrae om te kies'; -$string['readytosend'] = 'Jy gaan nou jou toets in stuur om te merk. Wil jy voort gaan?'; -$string['recentlyaddedquestion'] = '\'n Vraag is onlangs bygevoeg'; -$string['regrade'] = 'Merk alle pogings weer'; -$string['regradecomplete'] = 'Alle pogings is weer gemerk'; -$string['regradecount'] = '$a->changed van $a->attempt punte was verander'; -$string['rename'] = 'Hernoem'; -$string['report'] = 'Verslae'; -$string['reportoverview'] = 'Oorsig'; -$string['reportregrade'] = 'Probeerslae word weer gemerk'; -$string['reportsimplestat'] = 'Eenvoudige statestiek'; -$string['review'] = 'Hersien'; -$string['save'] = 'Stoor'; -$string['savegrades'] = 'Stoor punte'; -$string['savemyanswers'] = 'Stoor my punte'; -$string['savequiz'] = 'Stoor die hele toets'; -$string['score'] = 'Rou punt'; -$string['select'] = 'Selekteer'; -$string['selectall'] = 'Selekteer als'; -$string['selectcategoryabove'] = 'Kies \'n bogenoemde kategorie'; -$string['shortanswer'] = 'Kort antwoord'; -$string['show'] = 'Vertoon'; -$string['showcorrectanswer'] = 'In terugvoer, wys korrekte antwoorde?'; -$string['showfeedback'] = 'Wys terugvoer as klaar geantwoord?'; -$string['shuffleanswers'] = 'Skommel antwoorde'; -$string['shufflequestions'] = 'Skommel vrae'; -$string['time'] = 'Tyd'; -$string['timecompleted'] = 'Voltooi'; -$string['timetaken'] = 'Tyd geneem'; -$string['toomanyrandom'] = 'Die aantal willekeurige vrae is meer as wat die kategorie bevat! ($a)'; -$string['true'] = 'Waar'; -$string['truefalse'] = 'Waar/Vals'; -$string['type'] = 'Tipe'; -$string['viewallanswers'] = 'Vertoon $a voltooide toetse'; -$string['viewallreports'] = 'Kyk na terugvoer vir $a probeerslae'; -$string['webct'] = 'WebCT formaat'; -$string['yourfinalgradeis'] = 'Jou finale punt vir die toets is $a'; - -?> +
        As jy 'n vraag kategorie gekies of geskep het kan jy vrae skep of redigeer. Jy kan enige van die vrae kies om in te sluit by jou toets aan die ander kant van die bladsy."; +$string['addquestions'] = "Voeg vrae by"; +$string['addquestionstoquiz'] = "Voeg vrae by die huidige toets"; +$string['addselectedtoquiz'] = "Voeg geselekteerde by die toets"; +$string['allowreview'] = "Laat hersiening toe"; +$string['alreadysubmitted'] = "Dit is moontlik dat jy klaar die lêer ingehandig het"; +$string['alwaysavailable'] = "Altyd beskikbaar"; +$string['answer'] = "Antwoord"; +$string['answerhowmany'] = "Een of meer antwoorde?"; +$string['answersingleno'] = "Verskeie antwoorde toegelaat"; +$string['answersingleyes'] = "Een antwoord alleenlik"; +$string['answerswithacceptederrormarginmustbenumeric'] = "Antwoorde wat aanvaarbare foute toelaat moet numeries wees"; +$string['attempt'] = "Poging \$a"; +$string['attemptfirst'] = "Eerste poging"; +$string['attemptlast'] = "Laaste poging"; +$string['attemptquiznow'] = "Doen toets nou"; +$string['attempts'] = "Pogings"; +$string['attemptsallowed'] = "Pogings toegelaat"; +$string['attemptsunlimited'] = "Onbeperkte pogings"; +$string['backtoquiz'] = "Terug na toets redigeering"; +$string['bestgrade'] = "Beste punt"; +$string['blackboard'] = "Swartbord"; +$string['caseno'] = "Nee, kas is nie belangrik nie"; +$string['casesensitive'] = "Kassensitief"; +$string['caseyes'] = "Ja, kas moet reg wees"; +$string['categories'] = "Kategorieë"; +$string['category'] = "Kategorie"; +$string['categoryinfo'] = "Kategorie inligting"; +$string['categorymove'] = "Die kategorie '\$a->name' bevat \$a->count vrae. Kies asseblief 'n ander kategorie om hulle na te skuif."; +$string['categorymoveto'] = "Skuif hulle na die kategorie"; +$string['choice'] = "Keuse"; +$string['choices'] = "Beskikbare keuses"; +$string['correctanswer'] = "Korrekte antwoord"; +$string['correctanswers'] = "Korrekte antwoorde"; +$string['countdown'] = "Aftelling"; +$string['countdownfinished'] = "Die toets gaan nou sluit, jy moet nou jou werk inhandig."; +$string['countdowntenminutes'] = "Die toets gaan oor 10 minute sluit."; +$string['createmultiple'] = "Skep meer as een vraag"; +$string['createnewquestion'] = "Skep 'n nuwe vraag"; +$string['custom'] = "Eie formaat"; +$string['daysavailable'] = "Dae beskikbaar"; +$string['default'] = "Verstek"; +$string['defaultgrade'] = "Verstek vraag punt"; +$string['defaultinfo'] = "Die verstek kategorie vir die vrae."; +$string['deletequestioncheck'] = "Is jy seker dat jy '\$a' wil uit wis?"; +$string['description'] = "Beskrywing"; +$string['eachattemptbuildsonthelast'] = "Elke probeerslag bou op die laaste een"; +$string['editcategories'] = "Redigeer kategorie"; +$string['editingdescription'] = "Redigeer 'n Beskrywing"; +$string['editingmatch'] = "Redigeer Bypassende vraag"; +$string['editingmultianswer'] = "Redigeer Vasgelegde Antwoorde (Cloze)"; +$string['editingmultichoice'] = "Redigeer meervoudige keuse vrae"; +$string['editingnumerical'] = "Redigeer 'n numeriese vraag"; +$string['editingquestion'] = "Redigeer 'n vraag"; +$string['editingquiz'] = "Redigeer toets"; +$string['editingrandom'] = "Redigeer 'n willekeurige vraag"; +$string['editingrandomsamatch'] = "Redigeer 'n willekeurige vraag met 'n kort antwoord"; +$string['editingshortanswer'] = "Redigeer kort-antwoord vraag"; +$string['editingtruefalse'] = "Redigeer waar/vals vraag"; +$string['false'] = "vals"; +$string['feedback'] = "Terugvoer"; +$string['fileformat'] = "Lêer formaat"; +$string['filloutoneanswer'] = "Jy moet een moontlike antwoord kies. Antwoorde wat oop gelos word, word nie gemerk nie."; +$string['filloutthreequestions'] = "Jy moet ten minste drie keuses maak. Antwoorde wat oop gelos word,word nie gemerk nie."; +$string['fillouttwochoices'] = "Jy moet ten minste twee keuses maak. Antwoorde wat oop gelos word,word nie gemerk nie."; +$string['fractionsaddwrong'] = "Die positiewe punte wat jy gekies het tel nie op tot 100%% nie +
        Dit tel op tot \$a%% +
        Wil jy terug gaan en die vraag reg maak?"; +$string['fractionsnomax'] = "Een van die antwoorde moet 100%% wees, sodat dit +
        moontlik is om vol punte te kry vir die vraag. +
        Wil jy terug gaan en die vraag reg maak?"; +$string['gradeaverage'] = "Gemiddelde punt"; +$string['gradehighest'] = "Hoogste punt"; +$string['grademethod'] = "Graderings metode"; +$string['grades'] = "Punte"; +$string['guestsno'] = "Jammer, gaste word nie toegelaat om die punte te sien nie"; +$string['imagedisplay'] = "Prent om te vertoon"; +$string['importquestions'] = "Voer vrae van lêer in"; +$string['introduction'] = "Inleiding"; +$string['marks'] = "Punte"; +$string['match'] = "Bypassende"; +$string['matchanswer'] = "Bypassende antwoord"; +$string['missingcorrectanswer'] = "Korrekte antwoord moet gespesifiseer word"; +$string['missingname'] = "Vul vraag naam in"; +$string['missingquestiontext'] = "Vul vraag teks in"; +$string['missingword'] = "Vul woord formaat in"; +$string['modulename'] = "Toets"; +$string['modulenameplural'] = "Toetse"; +$string['multianswer'] = "Vasgelegde antwoorde"; +$string['multichoice'] = "Meervoudige Keuse Vraag"; +$string['noanswers'] = "Geen antwoord was gekies nie!"; +$string['noattempts'] = "Geen pogings om die toets te doen was gemaak nie"; +$string['nomoreattempts'] = "Nog pogings word nie toegelaat nie"; +$string['noquestions'] = "Geen vrae is al by gesit nie"; +$string['noreview'] = "Jy word nie toegelaat om die toets te hersien nie"; +$string['noreviewuntil'] = "Jy mag eers die toets hersien na \$a"; +$string['notenoughsubquestions'] = "Nie genoeg sub-vrae gedefinieer nie!
        +Wil jy terug gaan en die vraag reg maak?"; +$string['numerical'] = "Numeries"; +$string['publish'] = "Publiseer"; +$string['qti'] = "IMS QTI formaat"; +$string['question'] = "Vraag"; +$string['questioninuse'] = "Die vraag '\$a' word huidiglik gebruik:"; +$string['questionname'] = "Vraag naam"; +$string['questions'] = "Vrae"; +$string['quizavailable'] = "Die toets is beskikbaar tot: \$a"; +$string['quizclose'] = "Maak toets toe"; +$string['quizclosed'] = "Die toets is toe op \$a"; +$string['quizcloses'] = "Toets is besig om te sluit"; +$string['quiznotavailable'] = "Die toets sal eers beskikbaar wees op: \$a"; +$string['quizopen'] = "Maak die toets oop"; +$string['random'] = "Willekeurige vraag"; +$string['randomcreate'] = "Skep Willekeurige vraag"; +$string['randomsamatch'] = "Willekeurige Kort-Antwoord Bypassende"; +$string['randomsamatchcreate'] = "Skep 'n Willekeurige Kort-Antwoord Bypassende vraag"; +$string['randomsamatchintro'] = "Vir elk van die volgende vrae, kies die korrekte antwoord van die kieslys."; +$string['randomsamatchnumber'] = "Hoeveel vrae om te kies"; +$string['readytosend'] = "Jy gaan nou jou toets in stuur om te merk. Wil jy voort gaan?"; +$string['recentlyaddedquestion'] = "'n Vraag is onlangs bygevoeg"; +$string['regrade'] = "Merk alle pogings weer"; +$string['regradecomplete'] = "Alle pogings is weer gemerk"; +$string['regradecount'] = "\$a->changed van \$a->attempt punte was verander"; +$string['rename'] = "Hernoem"; +$string['report'] = "Verslae"; +$string['reportoverview'] = "Oorsig"; +$string['reportregrade'] = "Probeerslae word weer gemerk"; +$string['reportsimplestat'] = "Eenvoudige statestiek"; +$string['review'] = "Hersien"; +$string['save'] = "Stoor"; +$string['savegrades'] = "Stoor punte"; +$string['savemyanswers'] = "Stoor my punte"; +$string['savequiz'] = "Stoor die hele toets"; +$string['score'] = "Rou punt"; +$string['select'] = "Selekteer"; +$string['selectall'] = "Selekteer als"; +$string['selectcategoryabove'] = "Kies 'n bogenoemde kategorie"; +$string['shortanswer'] = "Kort antwoord"; +$string['show'] = "Vertoon"; +$string['showcorrectanswer'] = "In terugvoer, wys korrekte antwoorde?"; +$string['showfeedback'] = "Wys terugvoer as klaar geantwoord?"; +$string['shuffleanswers'] = "Skommel antwoorde"; +$string['shufflequestions'] = "Skommel vrae"; +$string['time'] = "Tyd"; +$string['timecompleted'] = "Voltooi"; +$string['timetaken'] = "Tyd geneem"; +$string['toomanyrandom'] = "Die aantal willekeurige vrae is meer as wat die kategorie bevat! (\$a)"; +$string['true'] = "Waar"; +$string['truefalse'] = "Waar/Vals"; +$string['type'] = "Tipe"; +$string['viewallanswers'] = "Vertoon \$a voltooide toetse"; +$string['viewallreports'] = "Kyk na terugvoer vir \$a probeerslae"; +$string['webct'] = "WebCT formaat"; +$string['yourfinalgradeis'] = "Jou finale punt vir die toets is \$a"; + +?> diff --git a/lang/af/resource.php b/lang/af/resource.php index 9900ca005e0..343a0765d69 100644 --- a/lang/af/resource.php +++ b/lang/af/resource.php @@ -1,42 +1,43 @@ -Lêer Bestuurder.'; -$string['notypechosen'] = 'Jy moet \'n tipe kies. Gebruik jou \'Back\' knoppie op terug te gaan en weer te probeer'; -$string['resourcetype'] = 'Tipe hulpbron'; -$string['resourcetype1'] = 'Verwysing'; -$string['resourcetype2'] = 'Web Blad'; -$string['resourcetype3'] = 'Op gelaaide lêer'; -$string['resourcetype4'] = 'Gewone teks'; -$string['resourcetype5'] = 'Web skakel'; -$string['resourcetype6'] = 'HTML teks'; -$string['resourcetype7'] = 'Program'; -$string['resourcetype8'] = 'Wiki teks'; - -?> +Lêer Bestuurder."; +$string['notypechosen'] = "Jy moet 'n tipe kies. Gebruik jou 'Back' knoppie op terug te gaan en weer te probeer"; +$string['resourcetype'] = "Tipe hulpbron"; +$string['resourcetype1'] = "Verwysing"; +$string['resourcetype2'] = "Web Blad"; +$string['resourcetype3'] = "Op gelaaide lêer"; +$string['resourcetype4'] = "Gewone teks"; +$string['resourcetype5'] = "Web skakel"; +$string['resourcetype6'] = "HTML teks"; +$string['resourcetype7'] = "Program"; +$string['resourcetype8'] = "Wiki teks"; + +?> diff --git a/lang/af/survey.php b/lang/af/survey.php index a03b743bb07..0e5288ad977 100644 --- a/lang/af/survey.php +++ b/lang/af/survey.php @@ -1,205 +1,217 @@ -voorkeur
        (ideale) en werklike ondervinding in die eenheid te vergelyk. - -Daar is geen \'reg\' of \'verkeerde\' antwoorde nie; ons is geïnteresseerdin jou opinie. Wees asseblief verseker dat jou terugvoer konfidensieel behandel sal word, en nie jou evaluasie sal beïnvloed nie. - -Jou terugvoer sal ons help om die eenheid se aanbieding te verbeter. - -Baie dankie.'; -$string['collesapname'] = 'COLLES (Voorkeur en Werklike)'; -$string['collesm1'] = 'Toepaslikheid'; -$string['collesm1short'] = 'Toepaslikheid'; -$string['collesm2'] = 'Reflektiewe Dinkwerk'; -$string['collesm2short'] = 'Reflektiewe Dinkwerk'; -$string['collesm3'] = 'Interaktiwiteit'; -$string['collesm3short'] = 'Interaktiwiteit'; -$string['collesm4'] = 'Tutor Ondersteuning'; -$string['collesm4short'] = 'Tutor Ondersteuning'; -$string['collesm5'] = 'Eweknie Ondersteuning'; -$string['collesm5short'] = 'Eweknie Ondersteuning'; -$string['collesm6'] = 'Interpretasie'; -$string['collesm6short'] = 'Interpretasie'; -$string['collesmintro'] = 'In die aanlyn eenheid...'; -$string['collespintro'] = 'Die doel van die menings opname is om ons te help verstaan waaraan jy waarde heg met die aanlyn leer ondervinding. - -Elk van die 24 bewerings vra jou oor jou Voorkeur (ideale) ondervinding in die eenheid. - -Daar is geen \'reg\' of \'verkeerde\' antwoorde nie; ons is geïnteresseerd in jou opinie. Wees asseblief verseker dat jou terugvoer konfidensieel behandel sal word, en nie jou evaluasie sal beïnvloed nie. - -Jou terugvoer sal ons help om die eenheid se aanbieding te verbeter. - -Baie dankie.'; -$string['collespname'] = 'COLLES (Voorkeur)'; -$string['done'] = 'Klaar'; -$string['download'] = 'Aflaai'; -$string['downloadexcel'] = 'Laai data af as \'n Excel spreitabel'; -$string['downloadinfo'] = 'Jy kan al die rou data aflaai in \'n vorm wat analise in Excel, SPSS of enige ander pakket moontlik maak.'; -$string['downloadtext'] = 'Laai data af as \'n gewone teks lêer'; -$string['editingasurvey'] = 'Redigeer menings opname'; -$string['guestsnotallowed'] = 'Gaste kan nie menings opnames inhandig nie'; -$string['helpsurveys'] = 'Help oor verskillende tipes opnames'; -$string['howlong'] = 'Hoe lank het dit gevat om die opname te voltooi?'; -$string['howlongoptions'] = 'minder as 1 min,1-2 min,2-3 min,3-4 min,4-5-min,5-10 min,meer as 10'; -$string['ifoundthat'] = 'Ek het gevind dat'; -$string['introtext'] = 'Inleiding teks'; -$string['ipreferthat'] = 'Ek verkies dat'; -$string['modulename'] = 'Menings Opname'; -$string['modulenameplural'] = 'Menings Opnames'; -$string['name'] = 'Naam'; -$string['newsurveyresponses'] = 'Nuwe opname terugvoer'; -$string['nobodyyet'] = 'Niemand het al terugvoer gelewer nie'; -$string['notdone'] = 'Nog nie gedoen nie'; -$string['notes'] = 'Jou private analise en notas'; -$string['othercomments'] = 'Het jy ander kommentaar?'; -$string['peoplecompleted'] = '$a mens(e) het al klaar die opname gedoen'; -$string['preferred'] = 'Voorkeur'; -$string['preferredclass'] = 'Klas voorkeur'; -$string['preferredstudent'] = '$a voorkeur'; -$string['question'] = 'Vraag'; -$string['questions'] = 'Vrae'; -$string['questionsnotanswered'] = 'Party meervoudige keuse vrae is nie beantwoord nie.'; -$string['report'] = 'Opname verslag'; -$string['savednotes'] = 'Jou notas is gestoor'; -$string['scaleagree5'] = 'Verskil baie,Verskil ietwat,Verskil nie/Stem nie saam nie,Stem ietwat saam,Stem baie saam'; -$string['scales'] = 'Skale'; -$string['scaletimes5'] = 'Amper Nooit,Selde,Pary Keer,Gereeld,Amper Altyd'; -$string['seemoredetail'] = 'Klik hier om meer details te sien'; -$string['selectedquestions'] = 'Geselekteerde vrae op \'n skaal, alle studente'; -$string['summary'] = 'Opsomming'; -$string['surveycompleted'] = 'Jy het die opname voltooi. Die grafiek onder vergelyk jou terugvoer met die klas gemiddeld.'; -$string['surveyname'] = 'Opname naam'; -$string['surveysaved'] = 'Opname gestoor'; -$string['surveytype'] = 'Opname tipe'; -$string['thanksforanswers'] = 'Dankie, $a dat jy jy opname voltooi het'; -$string['time'] = 'Tyd'; -$string['viewsurveyresponses'] = 'Kyk na $a opname terugvoer'; - -?> +voorkeur (ideale) en werklike ondervinding in die eenheid te vergelyk. + +Daar is geen 'reg' of 'verkeerde' antwoorde nie; ons is geïnteresseerdin jou opinie. Wees asseblief verseker dat jou terugvoer konfidensieel behandel sal word, en nie jou evaluasie sal beïnvloed nie. + +Jou terugvoer sal ons help om die eenheid se aanbieding te verbeter. + + +Baie dankie."; + +$string['collespname'] = "COLLES (Voorkeur)"; +$string['collespintro'] = "Die doel van die menings opname is om ons te help verstaan waaraan jy waarde heg met die aanlyn leer ondervinding. + +Elk van die 24 bewerings vra jou oor jou Voorkeur (ideale) ondervinding in die eenheid. + +Daar is geen 'reg' of 'verkeerde' antwoorde nie; ons is geïnteresseerd in jou opinie. Wees asseblief verseker dat jou terugvoer konfidensieel behandel sal word, en nie jou evaluasie sal beïnvloed nie. + +Jou terugvoer sal ons help om die eenheid se aanbieding te verbeter. + +Baie dankie."; + +$string['collesm1'] = "Toepaslikheid"; +$string['collesm1short'] = "Toepaslikheid"; +$string['collesm2'] = "Reflektiewe Dinkwerk"; +$string['collesm2short'] = "Reflektiewe Dinkwerk"; +$string['collesm3'] = "Interaktiwiteit"; +$string['collesm3short'] = "Interaktiwiteit"; +$string['collesm4'] = "Tutor Ondersteuning"; +$string['collesm4short'] = "Tutor Ondersteuning"; +$string['collesm5'] = "Eweknie Ondersteuning"; +$string['collesm5short'] = "Eweknie Ondersteuning"; +$string['collesm6'] = "Interpretasie"; +$string['collesm6short'] = "Interpretasie"; + +$string['collesmintro'] = "In die aanlyn eenheid..."; + +$string['done'] = "Klaar"; +$string['download'] = "Aflaai"; +$string['downloadexcel'] = "Laai data af as 'n Excel spreitabel"; +$string['downloadinfo'] = "Jy kan al die rou data aflaai in 'n vorm wat analise in Excel, SPSS of enige ander pakket moontlik maak."; +$string['downloadtext'] = "Laai data af as 'n gewone teks lêer"; +$string['editingasurvey'] = "Redigeer menings opname"; +$string['guestsnotallowed'] = "Gaste kan nie menings opnames inhandig nie"; +$string['helpsurveys'] = "Help oor verskillende tipes opnames"; +$string['howlong'] = "Hoe lank het dit gevat om die opname te voltooi?"; +$string['howlongoptions'] = "minder as 1 min,1-2 min,2-3 min,3-4 min,4-5-min,5-10 min,meer as 10"; +$string['ifoundthat'] = "Ek het gevind dat"; +$string['introtext'] = "Inleiding teks"; +$string['ipreferthat'] = "Ek verkies dat"; +$string['name'] = "Naam"; +$string['newsurveyresponses'] = "Nuwe opname terugvoer"; +$string['nobodyyet'] = "Niemand het al terugvoer gelewer nie"; +$string['notdone'] = "Nog nie gedoen nie"; +$string['notes'] = "Jou private analise en notas"; +$string['othercomments'] = "Het jy ander kommentaar?"; +$string['peoplecompleted'] = "\$a mens(e) het al klaar die opname gedoen"; +$string['preferred'] = "Voorkeur"; +$string['preferredclass'] = "Klas voorkeur"; +$string['preferredstudent'] = "\$a voorkeur"; +$string['question'] = "Vraag"; +$string['questions'] = "Vrae"; +$string['questionsnotanswered'] = "Party meervoudige keuse vrae is nie beantwoord nie."; +$string['report'] = "Opname verslag"; +$string['scales'] = "Skale"; +$string['savednotes'] = "Jou notas is gestoor"; +$string['scaleagree5'] = "Verskil baie,Verskil ietwat,Verskil nie/Stem nie saam nie,Stem ietwat saam,Stem baie saam"; +$string['scaletimes5'] = "Amper Nooit,Selde,Pary Keer,Gereeld,Amper Altyd"; +$string['seemoredetail'] = "Klik hier om meer details te sien"; +$string['selectedquestions'] = "Geselekteerde vrae op 'n skaal, alle studente"; +$string['summary'] = "Opsomming"; +$string['surveycompleted'] = "Jy het die opname voltooi. Die grafiek onder vergelyk jou terugvoer met die klas gemiddeld."; +$string['surveyname'] = "Opname naam"; +$string['surveysaved'] = "Opname gestoor"; +$string['surveytype'] = "Opname tipe"; +$string['thanksforanswers'] = "Dankie, \$a dat jy jy opname voltooi het"; +$string['time'] = "Tyd"; +$string['viewsurveyresponses'] = "Kyk na \$a opname terugvoer"; + +?> diff --git a/lang/af/workshop.php b/lang/af/workshop.php index a4a81044d64..6d9c32db2c5 100644 --- a/lang/af/workshop.php +++ b/lang/af/workshop.php @@ -1,187 +1,188 @@ - - Dit maak evaluering makliker en meer konstant. As onderwyser moet jy die Elemente
        - byvoeg voordat jy die opdrag beskikbaar stel aan die studente. Dit word gedoen deur
        - op die opdrag in die kursus te klik, as daar geen elemente is nie sal jy gevra word
        - om hulle by te sit. Jy kan die aantal elemente redigeer deur die \'Redigeer Evaluasie\' skerm,
        - die elemente kan bygesit word deur die \'Bestuur Evaluasie skerm. '; -$string['notgraded'] = 'Nie gemerk nie'; -$string['notitlegiven'] = 'Geen title gegee'; -$string['numberofassessmentelements'] = 'Aantal Evaluasie Elemente'; -$string['numberofassessments'] = 'Aantal Evaluasies'; -$string['numberofassessmentsofstudentsubmissions'] = 'Aantal evaluasies van student se werk'; -$string['numberofassessmentsofteachersexamples'] = 'Aantal evaluasies van Voorbeelde van Onderwyser'; -$string['on'] = 'op $a'; -$string['openassignment'] = 'Oop Opdrag'; -$string['optionforpeergrade'] = 'Opsie vir klas genote evaluasie'; -$string['overallgrade'] = 'Totale punt'; -$string['overallpeergrade'] = 'Totale punt vir klas genote: $a'; -$string['overallteachergrade'] = 'Totale onderwyser punt: $a'; -$string['ownwork'] = 'Eie Werk'; -$string['phase'] = 'Fase'; -$string['phase1'] = 'Stel Opdrag Op'; -$string['phase2'] = '$a Inhandigings en Evaluasies'; -$string['phase3'] = 'Berekening van Finale Punte'; -$string['phase4'] = 'Vertoon finale punte'; -$string['pleaseassesstheseexamplesfromtheteacher'] = 'Evalueer asseblief die Voorbeelde van $a'; -$string['pleaseassessthesestudentsubmissions'] = 'Evalueer asseblief die $a ingehandige werkstukke'; -$string['pleaseassessyoursubmissions'] = 'Evalueer jou werk/werkstukke asb.'; -$string['poor'] = 'Swak'; -$string['present'] = 'Aanwesig'; -$string['reassess'] = 'Her-evalueer'; -$string['reply'] = 'Antwoord'; -$string['returnto'] = 'Keer terug na'; -$string['returntosubmissionpage'] = 'Keer terug'; -$string['rubric'] = 'Rubriek'; -$string['savedok'] = 'Gestoor'; -$string['savemyassessment'] = 'Stoor my evaluasie'; -$string['savemycomment'] = 'Stoor my kommentaar'; -$string['savemygrading'] = 'Stoor my punte'; -$string['scale10'] = 'Punt uit 10'; -$string['scale100'] = 'Punt uit 100'; -$string['scale20'] = 'Punt uit 20'; -$string['scalecorrect'] = '2 punt Korrek/Verkeerd skaal'; -$string['scaleexcellent4'] = '4 punt Uitstekend/Onvoldoende'; -$string['scaleexcellent5'] = '5 punt Uitstekend/Onvoldoende'; -$string['scaleexcellent7'] = '7 punt Uitstekend/Onvoldoende'; -$string['scalegood3'] = '3 punt Goed/Onvoldoende'; -$string['scalepresent'] = '2 punt Teenwoordig/Afwesig skaal'; -$string['scaleyes'] = '2 punt Ja/Nee skaal'; -$string['select'] = 'Selekteer'; -$string['selfassessment'] = 'Self Evaluasie'; -$string['showgrades'] = 'Vertoon Punte'; -$string['specimenassessmentform'] = 'Voorbeeld Evaluasie Vorm'; -$string['studentassessments'] = '$a Evaluasies'; -$string['studentgrades'] = '$a Punte'; -$string['studentsubmissions'] = '$a ingehandigde werkstukke'; -$string['studentsubmissionsforassessment'] = '$a Student se werk vir evaluasie'; -$string['submission'] = 'Inhandigings'; -$string['submissions'] = 'Ingehandigde werkstukke'; -$string['submitassignment'] = 'Handig opdrag in'; -$string['submitexampleassignment'] = 'Handig voorbeeld opdrag in'; -$string['submitted'] = 'Ingehandig'; -$string['submittedby'] = 'Ingehandig deur'; -$string['suggestedgrade'] = 'Voorgestellde Punt'; -$string['teacherassessments'] = '$a Evaluasies'; -$string['teacherscomment'] = 'Onderwyser se kommentaar'; -$string['teachersgrade'] = 'Onderwyser se punt'; -$string['teachersubmissionsforassessment'] = '$a Onderwyser se ingehandigde werkstukke vir evaluasie'; -$string['thegradeis'] = 'Die punt is $a'; -$string['theseasessmentsaregradedbytheteacher'] = 'Die evaluasie is gedoen deur $a'; -$string['timeassessed'] = 'Tyd geevalueer'; -$string['title'] = 'Titel'; -$string['typeofscale'] = 'Tipe Skaal'; -$string['ungradedassessmentsofstudentsubmissions'] = '$a Ongemerkte werk deur studente'; -$string['ungradedassessmentsofteachersubmissions'] = '$a Ongemerkte werk deur onderwysers'; -$string['verypoor'] = 'Baie Sleg'; -$string['view'] = 'Vertoon'; -$string['viewassessmentofteacher'] = 'Vertoon evaluasie van $a'; -$string['viewotherassessments'] = 'Vertoon ander evaluasies'; -$string['warningonamendingelements'] = 'WAARSKUWING:Daar is ingehandigde evaluasies.
        Moenie die aantal Evaluasie Elemente, Skaal Tipes of Element Gewig verander nie.'; -$string['weightederrorcount'] = 'Geweegde Fouttelling : $a'; -$string['weightforbias'] = 'Gewig van afronding'; -$string['weightforgradingofassessments'] = 'Gewig vir evaluasies'; -$string['weightforpeerassessments'] = 'Gewig vir klas genoot evaluasies'; -$string['weightforreliability'] = 'Gewig vir betroubaarheid'; -$string['weightforteacherassessments'] = 'Gewig vir die $a Evaluasies'; -$string['weights'] = 'Gewigte'; -$string['weightsusedforfinalgrade'] = 'Gewig vir finale punt'; -$string['weightsusedforsubmissions'] = 'Gewig vir inhandigings'; -$string['yourassessments'] = 'Jou evaluasie'; -$string['yourfeedbackgoeshere'] = 'Jou terugvoer kom hier'; - -?> + + Dit maak evaluering makliker en meer konstant. As onderwyser moet jy die Elemente
        + byvoeg voordat jy die opdrag beskikbaar stel aan die studente. Dit word gedoen deur
        + op die opdrag in die kursus te klik, as daar geen elemente is nie sal jy gevra word
        + om hulle by te sit. Jy kan die aantal elemente redigeer deur die 'Redigeer Evaluasie' skerm,
        + die elemente kan bygesit word deur die 'Bestuur Evaluasie skerm. "; +$string['notgraded'] = "Nie gemerk nie"; +$string['notitlegiven'] = "Geen title gegee"; +$string['numberofassessmentelements'] = "Aantal Evaluasie Elemente"; +$string['numberofassessments'] = "Aantal Evaluasies"; +$string['numberofassessmentsofstudentsubmissions'] = "Aantal evaluasies van student se werk"; +$string['numberofassessmentsofteachersexamples'] = "Aantal evaluasies van Voorbeelde van Onderwyser"; +$string['on'] = "op \$a"; +$string['openassignment'] = "Oop Opdrag"; +$string['optionforpeergrade'] = "Opsie vir klas genote evaluasie"; +$string['overallgrade'] = "Totale punt"; +$string['overallpeergrade'] = "Totale punt vir klas genote: \$a"; +$string['overallteachergrade'] = "Totale onderwyser punt: \$a"; +$string['ownwork'] = "Eie Werk"; +$string['phase'] = "Fase"; +$string['phase1'] = "Stel Opdrag Op"; +$string['phase2'] = "\$a Inhandigings en Evaluasies"; +$string['phase3'] = "Berekening van Finale Punte"; +$string['phase4'] = "Vertoon finale punte"; +$string['pleaseassesstheseexamplesfromtheteacher'] = "Evalueer asseblief die Voorbeelde van \$a"; +$string['pleaseassessthesestudentsubmissions'] = "Evalueer asseblief die \$a ingehandige werkstukke"; +$string['pleaseassessyoursubmissions'] = "Evalueer jou werk/werkstukke asb."; +$string['poor'] = "Swak"; +$string['present'] = "Aanwesig"; +$string['reassess'] = "Her-evalueer"; +$string['reply'] = "Antwoord"; +$string['returnto'] = "Keer terug na"; +$string['returntosubmissionpage'] = "Keer terug"; +$string['rubric'] = "Rubriek"; +$string['savedok'] = "Gestoor"; +$string['savemyassessment'] = "Stoor my evaluasie"; +$string['savemycomment'] = "Stoor my kommentaar"; +$string['savemygrading'] = "Stoor my punte"; +$string['scale10'] = "Punt uit 10"; +$string['scale100'] = "Punt uit 100"; +$string['scale20'] = "Punt uit 20"; +$string['scalecorrect'] = "2 punt Korrek/Verkeerd skaal"; +$string['scaleexcellent4'] = "4 punt Uitstekend/Onvoldoende"; +$string['scaleexcellent5'] = "5 punt Uitstekend/Onvoldoende"; +$string['scaleexcellent7'] = "7 punt Uitstekend/Onvoldoende"; +$string['scalegood3'] = "3 punt Goed/Onvoldoende"; +$string['scalepresent'] = "2 punt Teenwoordig/Afwesig skaal"; +$string['scaleyes'] = "2 punt Ja/Nee skaal"; +$string['select'] = "Selekteer"; +$string['selfassessment'] = "Self Evaluasie"; +$string['showgrades'] = "Vertoon Punte"; +$string['specimenassessmentform'] = "Voorbeeld Evaluasie Vorm"; +$string['studentassessments'] = "\$a Evaluasies"; +$string['studentgrades'] = "\$a Punte"; +$string['studentsubmissions'] = "\$a ingehandigde werkstukke"; +$string['studentsubmissionsforassessment'] = "\$a Student se werk vir evaluasie"; +$string['submission'] = "Inhandigings"; +$string['submissions'] = "Ingehandigde werkstukke"; +$string['submitassignment'] = "Handig opdrag in"; +$string['submitexampleassignment'] = "Handig voorbeeld opdrag in"; +$string['submitted'] = "Ingehandig"; +$string['submittedby'] = "Ingehandig deur"; +$string['suggestedgrade'] = "Voorgestellde Punt"; +$string['teacherassessments'] = "\$a Evaluasies"; +$string['teacherscomment'] = "Onderwyser se kommentaar"; +$string['teachersgrade'] = "Onderwyser se punt"; +$string['teachersubmissionsforassessment'] = "\$a Onderwyser se ingehandigde werkstukke vir evaluasie"; +$string['thegradeis'] = "Die punt is \$a"; +$string['thereisfeedbackfromtheteacher'] = "Daar is terugvoer van die \$a"; +$string['theseasessmentsaregradedbytheteacher'] = "Die evaluasie is gedoen deur \$a"; +$string['timeassessed'] = "Tyd geevalueer"; +$string['title'] = "Titel"; +$string['typeofscale'] = "Tipe Skaal"; +$string['ungradedassessmentsofstudentsubmissions'] = "\$a Ongemerkte werk deur studente"; +$string['ungradedassessmentsofteachersubmissions'] = "\$a Ongemerkte werk deur onderwysers"; +$string['verypoor'] = "Baie Sleg"; +$string['view'] = "Vertoon"; +$string['viewassessmentofteacher'] = "Vertoon evaluasie van \$a"; +$string['viewotherassessments'] = "Vertoon ander evaluasies"; +$string['warningonamendingelements'] = "WAARSKUWING:Daar is ingehandigde evaluasies.
        Moenie die aantal Evaluasie Elemente, Skaal Tipes of Element Gewig verander nie."; +$string['weightederrorcount'] = "Geweegde Fouttelling : \$a"; +$string['weightforbias'] = "Gewig van afronding"; +$string['weightforgradingofassessments'] = "Gewig vir evaluasies"; +$string['weightforpeerassessments'] = "Gewig vir klas genoot evaluasies"; +$string['weightforreliability'] = "Gewig vir betroubaarheid"; +$string['weightforteacherassessments'] = "Gewig vir die \$a Evaluasies"; +$string['weights'] = "Gewigte"; +$string['weightsusedforfinalgrade'] = "Gewig vir finale punt"; +$string['weightsusedforsubmissions'] = "Gewig vir inhandigings"; +$string['yourassessments'] = "Jou evaluasie"; +$string['yourfeedbackgoeshere'] = "Jou terugvoer kom hier"; + +?> diff --git a/lang/ar/README b/lang/ar/README index f5a7b11c5cb..49d212c1791 100644 --- a/lang/ar/README +++ b/lang/ar/README @@ -5,7 +5,3 @@ Maintained/expanded by Dr. Ali H. Abureesh, dr.abureesh@makkahelearning.net (Original translation by Ahmed Nabil, ana@harf.com) - -ÚÑÈí -ÊßÝá ÈÇáÊÑÌãÊå æÊÍÏíËåÇ: Ï/ Úáí Èä ÍÓä ÃÈæ ÇáÑíÔ -(ÞÇã ÈÇáÊÑÌãÉ Ýí ãÑÍáÊåÇ ÇáÃæáì ÃÍãÏ äÈíá) \ No newline at end of file diff --git a/lang/ar/activitynames.php b/lang/ar/activitynames.php index cdf555c816f..cd9ca87fd2b 100644 --- a/lang/ar/activitynames.php +++ b/lang/ar/activitynames.php @@ -1,7 +1,7 @@ diff --git a/lang/ar/admin.php b/lang/ar/admin.php index a85f207573f..d96790f33ca 100644 --- a/lang/ar/admin.php +++ b/lang/ar/admin.php @@ -1,44 +1,10 @@ a$ ÓóíõÚØøáõ ÇáÊæÞíÊ ÇáÕíÝí áßá ÇáãÓÊÎÏãíä áÐáã ÇáÅÚÏÇÏ ÇáãÓÈÞ. åÐÇ ÇáÊÛííÑ ãä ÇáãÍÊãá ÓíÄËÑ Úáì ÇÓíÚÇÈåã ááæÞÊ ÈÏæä Åí ÅäÐÇÑ. åá ÊÑÛÈ Ýí ÇáÃÓÊãÑÇÑ¿'; -$string['confirmdeletedstdefault'] = 'ÇáãÓãì ÇáãÚÏ ãÓÈÞÇð $a ãÚãá Èå áÌãíÚ ãÓÊÎÏãí åÐÇ ÇáãæÞÚ! ÍÐÝ åÐÇ ãä ÇáãÍÊãá ÓíÄËÑ Úáì ÇÓíÚÇÈåã ááæÞÊ ÈÏæä Åí ÅäÐÇÑ. åá ÊÑÛÈ Ýí ÇáÃÓÊãÑÇÑ¿'; -$string['cronwarning'] = 'áã íÊã ÊÔÛíá cron.php ãÄÎÑÇð (Úáì ÇáÃÞá ÎáÇá ÇáÜ 24 ÓÇÚÉ ÇáãÇÖíÉ)
        ÅÐÇ áã Êßæä ÞÏ ÃÚÏÇÊ åÐå ÇáÎÏãÉ¡ ÇáÑÌÇÁ ãÑÇÌÚÉ ÊÚáíãÇÊ ÇáÊËÈíÊ¡ ÇáãæÌæÏÉ Ýí Set up cron'; -$string['dstisapreference'] = 'ßá ãÓÊÎÏã íãßä áå Çä íÎÊÇÑ Åí ÅÚÏÇÏ ãÓÈÞ'; -$string['dstisforcedto'] = 'ÃÌÈÑ ßá ÇáãÓÊÎÏãíä ÇÓÊÎÏÇã'; -$string['dstpresets'] = 'ÇáÃÚÏÇÏ ÇáãÓÈÞ ááæÞÊ ÇáÕíÝí'; -$string['editingdstpreset'] = 'ÍÑÑ ÇáÃÚÏÇÏ ÇáãÓÈÞ ááæÞÊ ÇáÕíÝí'; -$string['emptydstlist'] = 'áÇ íæÌÏ ÊÚÑíÝ ãÓÈÞ ááÊæÞíÊ ÇáÕíÝí. ÊÓÊØíÚ ÅÖÇÝÉ æÇÍÏ ÈÇáäÞÑ Úáì ÒÑ ÇáÅÖÇÝÉ.'; -$string['errordstpresetactivateearlier'] = 'ÔåÑ ÇáÊäÔíØ íÌÈ Ãä íßæä ÞÈá ÔåÑ ÇáÊÚØíá'; -$string['errordstpresetnameempty'] = 'áÇ íÌÈ ÊÑß ÇÓã ÇáÇÚÏÇÏ ÇáãÓÈÞ ÝÇÑÛÇð'; -$string['errordstpresetnameexists'] = 'íæÌÏ ÃÚÏÇÏ ãÓÈÞ íÍãá äÝÓ ÇáãÓãì'; $string['filteruploadedfiles'] = 'ÊäÞíÍ ÇáãáÝÇÊ ÇáãÍãáå'; -$string['helpadminseesall'] = 'åá íÓÊØíÚ ÇáãÏÑÇÁ ÑÄíÉ ßá ÇÍÏÇË ÇáÊÞæíã Ãã ÇáãÊÚáÞÉ Èåã ÝÞØ¿'; -$string['helpcalendarsettings'] = 'ÃÚÏ ÇáÌæÇäÈ ÇáãÎÊáÝÉ ááÊÞæíã æÇáÊÇÑíÎ / æÞÊ ÇáãÊÚáÞÉ ÈãæÏá.'; -$string['helpdstforusers'] = 'åá íÓÊØíÚ ßá ãÓÊÎÏã ãä ÇÎÊíÇÑ ÃÚÏÇÏÇÊ ÇáÊæÞíÊ ÇáÕíÝí ÇáÎÇÕ Èå¿'; -$string['helpmanagedstpresets'] = 'ÃäÞÑ åÐÇ ÇáÒÑ áÅÖÇÝÉ¡ ÊÍÑíÑ¡ æ ÍÐÝ ÇáÃÚÏÇÏ ÇáãÓÈÞ ááÊæÞíÊ ÇáÕíÝí ÇáãÊÇÍ Ýí åÐÇ ÇáãæÞÚ.'; -$string['helpstartofweek'] = 'ãÇ åæ Çáíæã ÇáÐí íÈÏÇÁ ÈÉ ÇáÃÓÈæÚ Ýí ÇáÊÞæíã'; -$string['helpupcominglookahead'] = 'ãÓÊÞÈáÇð¡ ãÇ åæ ÚÏÏ ÇáÃíÇã ÇáÊí ÓíäÙÑÇáÊÞæíã ÎáÇáåÇáãÚÑÝÉ ÇáÃÍÏÇË ÇáÞÇÏãÉ ÃÝÊÑÇÖíÇð¿'; -$string['helpupcomingmaxevents'] = 'ÃÝÊÑÇÖíÇð¡ ßã (ÇáÍÏ ÇáÃÞÕì) ááÃÍÇË ÇáÞÇÏã ÇáÊí ÓÊÚÑÖ ááãÓÊÎÏã¿'; -$string['helpweekenddays'] = 'Ãí ÇáÇíÇã ÓÊÚÇãá \"ßÚØáÉ ÇáÃÓÈæÚ\" æÇáÊí ÓÊÚÑÖ Èáæä ãÎÊáÝ¿'; -$string['managedstpresets'] = 'ÅÏÑÇ ÇÅÚÏÇÏ ÇáãÓÈÞ ááÊæÞíÊ ÇáÕíÝí'; -$string['nodstpresetsexist'] = 'ÏÚã ÇáÊæÞíÊ ÇáÕíÝí ãÚØá áßá ÇáãÓÊÎÏãíä¡ æÐáß áÚÏã ÊÚÑíÝ Ãí ÅÚÏÇÏ ãÓÈÞ ááÊæÞíÊ ÇáÕíÝí. ÊÓÊØíÚ ÊÚÑíÝ ÈÚÖ ÇáÅÚÏÇÏÇÊ ÇáãÓÈÞÉ ÈÇÓÊÎÏÇã ÇáÒÑ ÇáÊÇáí.'; -$string['therewereerrors'] = 'ÊæÌÏ ÇÎØÇÁ Ýí ãÚáæãÇÊß'; $string['upgradelogs'] = 'áÅÏÇÁ æÙíÝí ßÇãá¡ ÓÌáÇÊß ÇáÞÏíãÉ ÊÍÊÇÌ áÊÑÞíÉ ãÚáæãÇÊ ÅÖÇÝíÉ'; -$string['upgradelogsinfo'] = 'áÞÏ Êã Úãá ÈÚÖ ÇáÊÛííÑÇÊö ãÄÎÑÇð Ýí ØÑíÞóÉ ÊÎúÒõíä ÇáÓÌáÇÊö. áÊÊãßä ãä ÑÄíÉ ÓÌáÇÊß ÇáÞÏíãÉ áßá äÔÇØ íÊÓäì Úáíß ÊÑÞíÉ åÐå ÇáÓÌáÇÊ ÇáÞÏíãÉ. åÐÇ ÇáÃÌÑÇÁ ÓíÓÊÛÑÞ æÞÊ (Úáì ÓÈíá ÇáãËÇá ÚÏÉ ÓÇÚÇÊ) æãä Çáããßä Ãä Ãä íÈØÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ ÅÐÇ ßÇä ÇáãæÞÚ ßÈíÑ. ÈãÌÑÏ ÇáÈÏÁ ÈåÐÇ ÇáÃÌÑÇÁ íÌÈ Úáíß ÊÑßÉ ÍÊì íäÊåí æÐáß (ÈÅÈúÞÇÁ äÇÝÐÉö ÇáãÊÕÝøÍó íóÝúÊÍõ). áÇÊÞáÞ - ÃËäÇÁ åÐÇ ÇáÃÌÑÇÁ ÓíÚãá ãæÞÚßó ÈÔßá Óáíã æáä íÊÃËÑ ÅÏÇÁ ÇáãÓÊÎÏãæä ááãæÞÚ ÃËäÇÁ åÐÇ ÇáÃÌÑÇÁ.

        åóáú ÊõÑíÏõ ÊóÑúÞöíÉ ÓÌáÇÊößó ÇáÂä¿'; -$string['upgradesure'] = '

        áÞÏ Êã ÇÓÊÈÏÇá ãáÝÇÊ ãæÏá¡ æÇäÊ ÇáÂä Úáì æÔß ÊÑÞíÉ ãæÞÚß ÈÇáÃÕÏÑ

        -

        a$<>/b<>/p -

        áÇ ÊÓÊØíÚ ÇáÚæÏÉ Åáì ÇáÎáÝ ÈãÌÑÏ ÇáÃäÊåÇÁ ãä åÐÇ ÇáÃÌÑÇÁ.

        -

        åá ÃäÊ ãÊÃßÏ ááÞíÇã ÈÚãíáÉ ÇáÊÑÞíÉ åÐå¿

        '; $string['upgradinglogs'] = 'ÊÑÞíÉ ÇáÓÌáÇÊ'; ?> diff --git a/lang/ar/appointment.php b/lang/ar/appointment.php index 47c6d4c7aed..7ba2c5c6110 100644 --- a/lang/ar/appointment.php +++ b/lang/ar/appointment.php @@ -1,45 +1,45 @@ - + diff --git a/lang/ar/assignment.php b/lang/ar/assignment.php index 7f9983bc97b..c8924d855ff 100644 --- a/lang/ar/assignment.php +++ b/lang/ar/assignment.php @@ -1,5 +1,5 @@ username ÞÇã ÈÊÍÏíË ÇáãåãÉÇáãÞÏãÉ áÜ \'$a->assignment\' æåÐå ÇáãåãÉ ãæÌæÏÉ Ýí: $a->url'; -$string['emailteachermailhtml'] = '$a->username ÞÇã ÈÊÍÏíË ÇáãåãÉÇáãÞÏãÉ áÜ \'$a->assignment\'

        æåí url\">available on the web site.'; -$string['emailteachers'] = 'ÈÑíÏ ÅáßÊÑæäí ÊäÈíåí ááãÚáãæä'; $string['existingfiledeleted'] = 'Êã ÍÐ ÇáãáÝÇÊ ÇáãæÌæÏÉ :a$'; $string['failedupdatefeedback'] = 'ÊÚÐÑ ÊÍÏíË ÊÚáíÞ ÇáãÓÊÎÏã Úáì ÇáÑÓÇáÉ $a '; $string['feedback'] = 'ÊÕÍíÍ'; diff --git a/lang/ar/auth.php b/lang/ar/auth.php index 89eaf86aa39..edf701fff46 100644 --- a/lang/ar/auth.php +++ b/lang/ar/auth.php @@ -1,11 +1,9 @@ ÍÞæá ÇáÈíÇäÇÊ ÇáÎÇÑÌíÉ
        ÇáÊí ÊÞæã ÈÊÍÏíÏåÇ åäÇ.
        ÅÐÇ ÊÑßÊ åÐå ÇáÃãÇßä ÝÇÑÛÉ ÝÓæÝ íÊã ÇÎÊíÇÑ ÇáÃæÖÇÚ ÇáÇÝÊÑÇÖíÉ.
        æÝí ßá ÇáÃÍæÇá¡ ÝÓæÝ íÊãßä ÇáãÓÊÎÏã ãä ÊÚÏíá ßá Êáß ÇáÍÞæá ÈÚÏ ÇáÏÎæá.'; +$string['auth_dbextrafields'] = 'åÐå ÇáÍÞæá ÇÎÊíÇÑíÉ¡ æíãßäß ãáÁ ÈÚÖ ÍÞæá ÇáãÓÊÎÏã Ýí äÙÇã Moodle ãÓÈÞÇ ÈÇáãÚáæãÇÊ ãä ÍÞæá ÇáÈíÇäÇÊ ÇáÎÇÑÌíÉ ÇáÊí ÊÞæã ÈÊÍÏíÏåÇ åäÇ.

        ÅÐÇ ÊÑßÊ åÐå ÇáÃãÇßä ÝÇÑÛÉ ÝÓæÝ íÊã ÇÎÊíÇÑ ÇáÃæÖÇÚ ÇáÇÝÊÑÇÖíÉ.

        æÝí ßá ÇáÃÍæÇá¡ ÝÓæÝ íÊãßä ÇáãÓÊÎÏã ãä ÊÚÏíá ßá Êáß ÇáÍÞæá ÈÚÏ ÇáÏÎæá.'; $string['auth_dbfieldpass'] = 'ÇÓã ÇáÍÞá ÇáãÔÊãá Úáì ßáãÇÊ ÇáãÑæÑ'; $string['auth_dbfielduser'] = 'ÇÓã ÇáÍÞá ÇáãÔÊãá Úáì ÃÓãÇÁ ÇáãÓÊÎÏãíä'; $string['auth_dbhost'] = 'åÐÇ ÇáÍÇÓÈ íÓÊÖíÝ ãÒæÏ ÞÇÚÏÉ ÇáÈíÇäÇÊ.'; @@ -14,14 +12,10 @@ $string['auth_dbpass'] = ' $string['auth_dbpasstype'] = 'ÍÏøÏ ÇáÔøßá ÇáÐí íÓÊÎÏãå ÍÞá ßáãÉ ÇáÓøÑ. ÊÔÝíÑ MD5 ãÝíÏ ááÊøæÕíá ÊØÈíÞÇÊ ÇáæíÈ ÇáÔøÇÆÚÉ ÇáÃÎÑì ãËá PostNuke'; $string['auth_dbtable'] = 'ÇÓã ÇáÌÏæá Ýí ÞÇÚÏÉ ÇáÈíÇäÇÊ'; $string['auth_dbtitle'] = 'ÇÓÊÎÏã ÞÇÚÏÉ ÈíÇäÇÊ ÎÇÑÌíÉ'; -$string['auth_dbtype'] = 'äæÚ ÞÇÚÏÉ ÇáÈíÇäÇÊ (ÃäÙÑ ADOdb documentation ááãÒíÏ ãä ÇáÊÝÇÕíá'; +$string['auth_dbtype'] = 'äæÚ ÞÇÚÏÉ ÇáÈíÇäÇÊ (ÃäÙÑ ADOdb documentation ááãÒíÏ ãä ÇáÊÝÇÕíá'; $string['auth_dbuser'] = 'ÇÓã ÇáãÓÊÎÏã ãÚ ÍÞ ÇáÏÎæá Úáì ÞÇÚÏÉ ÇáÈíÇäÇÊ ááÞÑÇÁÉ ÝÞØ'; -$string['auth_editlock'] = 'ÃÞÝá ÇáÞíã'; $string['auth_emaildescription'] = 'íÊã ÇáÊæËíÞ ÚÇÏÉ ÚÈÑ ÇáÈÑíÏ ÇáÅáßÊÑæäí¡ æåæ ÇáæÖÚ ÇáÇÝÊÑÇÖí áÃÓáæÈ ÇáÊæËíÞ. ÝÚäÏãÇ íÞæã ÇáãÓÊÎÏã ÈÇáÊæÞíÚ æÈÇÎÊíÇÑ ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ ÇáÎÇÕÉ Èå íÊã ÅÑÓÇá ÑÓÇáÉ ÊæßíÏíÉ Åáì ÚäæÇäå ÇáÈÑíÏí. æíÍÊæí ÇáÈÑíÏ ÇáÅáßÊÑæäí Úáì ÑÇÈØÉ ÂãäÉ ÊÄÏí Åáì ÕÝÍÉ íÓÊØíÚ ÇáãÓÊÎÏã ãä ÎáÇáåÇ ÊæßíÏ ÇÔÊÑÇßå. æÝí ÍÇáÉ ÇáÏÎæá ÝíãÇ ÈÚÏ íÊã ÇáÊÍÞÞ ãä ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ ÈãÞÇÈáÊåÇ ÈÇáãÎÒäÉ Ýí ÞÇÚÏÉ ÈíÇäÇÊ äÙÇã Moodle..'; $string['auth_emailtitle'] = 'ÊæËíÞ íÊã Úä ØÑíÞ ÇáÈÑíÏ ÇáÅáßÊÑæäí'; -$string['auth_fcfppport'] = 'ãäÝÐ ÇáãÒæÏ(3333 åæ ÇáÃßËÑ ÔíæÚÇð)'; -$string['auth_fcpasswd'] = 'ßáãÉ ãÑæÑ ááÍÓÇÈ ÇáÓÇÈÞ'; -$string['auth_fctitle'] = 'ÇÓÊÎÏã ÎÇÏã ÏÑÌÉ Ãæáì'; $string['auth_imapdescription'] = 'íÓÊÎÏã åÐÇ ÇáÃÓáæÈ ãÒæÏ IMAP ááÊÍÞÞ ãä ÕÍÉ ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ.'; $string['auth_imaphost'] = 'ÚäæÇä ãÒæÏ IMAP. ÇÓÊÎÏã ÑÞã ÇáÈÑæÊæßæá áÇ ÇÓã ÇáäØÇÞ.'; $string['auth_imapport'] = 'ÑÞã ãäÝÐ ãÒæÏ IMAP . íßæä Ýí ÇáÛÇáÈ 143 Ãæ 993.'; @@ -29,24 +23,18 @@ $string['auth_imaptitle'] = ' $string['auth_imaptype'] = 'äæÚ ãÒæÏ IMAP . ãä Çáããßä áãÒæÏÇÊ IMAP Ãä Êßæä áÏíåÇ ÃäæÇÚ ãÎÊáÝÉ ãä ÇáÊæËíÞ æÇáÊÝÇæÖ.'; $string['auth_ldap_bind_dn'] = 'ÅÐÇ ÃÑÏÊ ÇÓÊÎÏÇã æÙíÝÉ bind-user ááÈÍË Úä ãÓÊÎÏãíä Ýíãßäß ÊÚííä Ðáß åäÇ¡ ßÃä ÊÍÏÏ ãËáÇ: \'cn=ldapuser,ou=public,o=org\''; $string['auth_ldap_bind_pw'] = 'ßáãÉ ãÑæÑ bind-user'; -$string['auth_ldap_bind_settings'] = 'ÅÚÏÇÏÇÊ ÈÇíäÏ'; $string['auth_ldap_contexts'] = 'ÞÇÆãÉ ÇáÓíÇÞÇÊ ÇáãæÌæÏ ÈåÇ ÇáãÓÊÎÏãíä¡ ÍíË íÝÕá Èíä ßá ÓíÇÞ æÂÎÑ ÈÝÇÕáÉ åßÐÇ: \'ou=users,o=org; ou=others,o=org\''; $string['auth_ldap_create_context'] = 'áæ ãßøäÊ ÅäÔÇÁ ÇáãÓÊÎÏã ÈÊÃßíÏ ÇáÈÑíÏ ÇáÅáßÊÑæäíø, ÍÏøÏ ÇáÓøíÇÞ ÅäÔÇÁ ãÓÊÎÏãæä . íÌÈ Ãä íßæä åÐÇ ÇáÓøíÇÞ ãÎÊáÝ Úä ÇáãÓÊÎÏãíä ÇáÂÎÑíä áãäÚ ÇáÞÖÇíÇ ÇáÃãäíøÉ . áÇ ÊÍÊÇÌ áÅÖÇÝÉ åÐÇ ÇáÓøíÇÞ ÓíÇÞ ÇáÜãÊÛíÑ(ldap_context-variable) ãæÏá ÓíÈÍË Úä ÇáãÓÊÎÏãíä ãä åÐÇ ÇáÓøíÇÞ ÊáÞÇÆíøðÇ '; $string['auth_ldap_creators'] = 'ÞÇÆãÉ ÇáÌãÇÚÇÊ ÇáÊì íõÓúãóÍ áÃÚÖÇÆåÇ ÇáÞíÇã ÈÇäÔÇÁ ãäÇåÌ ÏÑÇÓíÉ ÌÏíÏÉ. ÃÝÕá Èíä ÇáÌãÇÚÇÊ ÇáãÊÚÏøÏÉ ÈÜ \";\" ÚÇÏÉ Úáì ÇáÔßá ÇáÊÇáí (cn=teachers,ou=staff,o=myorg)'; -$string['auth_ldap_expiration_warning_desc'] = 'ÞÈá ßã íæã ÓíÊã ÅÑÓÇá ÊÍÐíÑ ÇäÊåÇÁ ÕáÇÍíÉ ßáãÉ ÇáãÑæÑ.'; $string['auth_ldap_host_url'] = 'ÍÏÏ ãÖíÝ ÈÑÊæßæá ÇáÏÎæá Úáì ÇáÏáíá ÇáÎÝíÝ LDAPÝí Ôßá ÚäæÇä ÅäÊÑäÊ ãËá \'ldap://ldap.myorg.com/\' Ãæ \'ldaps://ldap.myorg.com/\' '; -$string['auth_ldap_login_settings'] = 'ÃÚÏÇÏÇÊ ÇáÏÎæá'; $string['auth_ldap_memberattribute'] = 'ÍÏÏ ÕÝÉ ÇáÚÖæ ÇáãÓÊÎÏã¡ ÚäÏãÇ íäÊãí ÇáãÓÊÎÏãæä áãÌãæÚÉ. ÚÇÏÉ \"ÚÖæ\"'; -$string['auth_ldap_passwdexpire_settings'] = 'ÅÚÏÇÏÇÊ ÇäÊåÇÁ ÕáÇÍíÉ ßáãÉ ãÑæÑ LDAP'; -$string['auth_ldap_search_sub'] = 'ÖÚ ÞíãÉ <> 0 ÅÐÇ ÃÑÏÊ Ãä ÊÈÍË Úä ãÓÊÎÏãíä ãä ÓíÇÞÇÊ ÝÑÚíÉ.'; -$string['auth_ldap_server_settings'] = 'ÅÚÏÇÏÇÊ ãÒæÏ LDAP'; +$string['auth_ldap_search_sub'] = 'ÖÚ ÞíãÉ <> 0 ÅÐÇ ÃÑÏÊ Ãä ÊÈÍË Úä ãÓÊÎÏãíä ãä ÓíÇÞÇÊ ÝÑÚíÉ.'; $string['auth_ldap_update_userinfo'] = 'ÊÍÏíË ãÚáæãÇÊ ÇáãÓÊÎÏã (ÇáÇÓã ÇáÃæá¡ ÇáÇÓã ÇáÃÎíÑ¡ ÇáÚäæÇä¡ …) ãä ÈÑÊæßæá ÇáÏÎæá Úáì ÇáÏáíá ÇáÎÝíÝ LDAPÅáì äÙÇã Moodle . ÃäÙÑ /auth/ldap/attr_mappings.php ááÍÕæá Úáì ãÚáæãÇÊ Úä ÇáÊÎØíØ'; $string['auth_ldap_user_attribute'] = 'ÇáæÕÝ ÇáãÓÊÎÏã áÊÓãíÉ/ÇáÈÍË Úä ÇáãÓÊÎÏãíä¡ æÛÇáÈÇ ãÇ íßæä \'cn\'.'; -$string['auth_ldap_user_settings'] = 'ÃÚÏÇÏÇÊ ÇáÈÍË Úä ãÓÊÎÏã'; $string['auth_ldap_version'] = 'ÃÕÏÇÑ äÙÇã ÇáÜ LDAP ÇáãÓÊÎÏã Ýí ÎÇÏãß'; $string['auth_ldapdescription'] = 'åÐÇ ÇáÃÓáæÈ íÞÏã ÇáÊæËíÞ Ýí ãÞÇÈá ãÒæÏ ÎÇÑÌí áÈÑæÊæßæá ÇáÏÎæá Úáì ÇáÏáíá ÇáÎÝíÝ LDAP. ÅÐÇ ßÇä ßá ãä ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ ÕÍíÍÇ ÝÅä äÙÇã Moodle íÞæã ÈÅäÔÇÁ ÅÏÎÇá ãÓÊÎÏã ÌÏíÏ Ýí ÞÇÚÏÉ ÈíÇäÇÊå. æíãßä áåÐå ÇáæÍÏÉ ÇáäãØíÉ ÞÑÇÁÉ ÓãÇÊ ÇáãÓÊÎÏã ãä ÈÑæÊæßæá ÇáÏÎæá Úáì ÇáÏáíá ÇáÎÝíÝ LDAP æãáÁ ÇáÍÞæá ÇáãØáæÈÉ Ýí äÙÇã Moodle . æáÇ íÍÊÇÌ ÚäÏ ÇáÏÎæá áÇÍÞÇ Óæì Åáì ÇáÊÍÞÞ ãä ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ.'; -$string['auth_ldapextrafields'] = 'åÐå ÇáÍÞæá ÇÎÊíÇÑíÉ¡ æíãßäß ãáÁ ÈÚÖ ÍÞæá ÇáãÓÊÎÏã Ýí äÙÇã Moodle ãÓÈÞÇ ÈÇáãÚáæãÇÊ ãä ÍÞæá LDAP ÇáÊí ÊÞæã ÈÊÍÏíÏåÇ åäÇ.
        ÅÐÇ ÊÑßÊ åÐå ÇáÍÞæá ÝÇÑÛÉ Ýáä íÊã äÞá Ãí ÔíÁ ãä ÈÑæÊæßæá ÇáÏÎæá Úáì ÇáÏáíá ÇáÎÝíÝ LDAP ¡ Èá íÊã ÇÓÊÎÏÇã ÇáÃæÖÇÚ ÇáÇÝÊÑÇÖíÉ ÇáãæÌæÏÉ ÈäÙÇã Moodle.
        æÝí ßá ÇáÃÍæÇá¡ ÝÓæÝ íÊãßä ÇáãÓÊÎÏã ãä ÊÚÏíá ßá Êáß ÇáÍÞæá ÈÚÏ ÇáÏÎæá.'; +$string['auth_ldapextrafields'] = 'åÐå ÇáÍÞæá ÇÎÊíÇÑíÉ¡ æíãßäß ãáÁ ÈÚÖ ÍÞæá ÇáãÓÊÎÏã Ýí äÙÇã Moodle ãÓÈÞÇ ÈÇáãÚáæãÇÊ ãä ÍÞæá LDAP ÇáÊí ÊÞæã ÈÊÍÏíÏåÇ åäÇ.

        ÅÐÇ ÊÑßÊ åÐå ÇáÍÞæá ÝÇÑÛÉ Ýáä íÊã äÞá Ãí ÔíÁ ãä ÈÑæÊæßæá ÇáÏÎæá Úáì ÇáÏáíá ÇáÎÝíÝ LDAP ¡ Èá íÊã ÇÓÊÎÏÇã ÇáÃæÖÇÚ ÇáÇÝÊÑÇÖíÉ ÇáãæÌæÏÉ ÈäÙÇã Moodle.

        æÝí ßá ÇáÃÍæÇá¡ ÝÓæÝ íÊãßä ÇáãÓÊÎÏã ãä ÊÚÏíá ßá Êáß ÇáÍÞæá ÈÚÏ ÇáÏÎæá.'; $string['auth_ldaptitle'] = 'ÇÓÊÎÏã ãÒæÏ LDAP'; $string['auth_manualdescription'] = 'íÚØá åÐÇ ÇáÇÓáæÈ ÌãíÚ ÇáØÑÞ ÇáÊí Êãßä ÇáãÓÊÎÏãíä ãä ÇäÔÇÁ ÍÓÇÈÇÊåã. ÌãíÚ ÇáÍÓÇÈÇÊ áÇ ÈÏ Çä ÊäÔÇÁ íÏæíÇð ãä ÞÈá ÇáãÏíÑ'; $string['auth_manualtitle'] = 'ÇáÍÓÇÈÇÊ ÇáíÏæíÉ ÝÞØ'; @@ -57,16 +45,11 @@ $string['auth_nntpport'] = ' $string['auth_nntptitle'] = 'ÇÓÊÎÏã ãÒæÏ NNTP'; $string['auth_nonedescription'] = 'íãßä ááãÓÊÎÏãíä ÇáÊæÞíÚ Ëã ÅäÔÇÁ ÍÓÇÈÇÊ ÕÍíÍÉ Úáì ÇáÝæÑ¡ Ïæä ÍÇÌÉ ááÊæËíÞ Ýí ãÞÇÈá ãÒæÏ ÎÇÑÌí Ãæ Åáì ÇáÊæßíÏ ãä ÎáÇá ÇáÈÑíÏ ÇáÅáßÊÑæäí. íäÕÍ ÈÇáÍÑÕ Úä ÇÓÊÎÏÇã åÐÇ ÇáÎíÇÑ - æÊÏíÑ ÚæÇÞÈ ãÔÇßá ÇáÍãÇíÉ æÇáÅÏÇÑÉ ÇáÊí ÞÏ ÊäÊÌ Úäå.'; $string['auth_nonetitle'] = 'áÇ íæÌÏ ÊæËíÞ'; -$string['auth_passwordisexpired'] = 'ÇäÊåÊ ÕáÇÍíÉ ßáãÉ ãÑæÑß. åá ÊÑÛÈ Ýí ÊÛíÑåÇÇáÂä¿'; -$string['auth_passwordwillexpire'] = 'ÓÊäÊåí ÕáÇÍíÉ ßáãÉ ãÑæÑß ÎáÇá $a. åá ÊÑÛÈ Ýí ÊÛíÑåÇÇáÂä¿'; $string['auth_pop3description'] = 'íÓÊÎÏã åÐÇ ÇáÃÓáæÈ ãÒæÏ ÈÑÊæßæá ãßÊÈ ÇáÈÑíÏ3 POP3 ááÊÃßÏ ãä ÕÍÉ ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ.'; $string['auth_pop3host'] = 'ÚäæÇä ãÒæÏ ÈÑÊæßæá ãßÊÈ ÇáÈÑíÏ3 POP3. ÇÓÊÎÏã ÑÞã ÇáÈÑæÊæßæá áÇ ÇÓã ÇáäØÇÞ.'; -$string['auth_pop3mailbox'] = 'ÇÓã ÕäÏæÞ ÇáÈÑíÏÇáãÑÛæÈ ÇáÃÊÕÇá Èå (ÚÇÏÉ ÕäÏæÞ ÇáæÇÑÏ)'; $string['auth_pop3port'] = 'ãäÝÐ ÇáãÒæÏ (110 åí ÇáÃßËÑ ÔíæÚÇ)'; $string['auth_pop3title'] = 'ÇÓÊÎÏã ãÒæÏ POP3'; $string['auth_pop3type'] = 'äæÚ ÇáãÒæÏ. ÅÐÇ ßÇä ãÒæÏß íÓÊÎÏã ÍãÇíÉ ÇáÔåÇÏÉ¡ Þã ÈÇÎÊíÇÑ pop3cert.'; -$string['auth_updatelocal'] = 'ÍÐË ÇáãÚáæãÇÊ ÇáãÍáíÉ'; -$string['auth_updateremote'] = 'ÍÏË ÇáãÚáãæãÇÊ ÇáÎÇÑÌíÉ'; $string['auth_user_create'] = 'Êãßíä ÅäÔÇÁ ãÓÊÎÏã'; $string['auth_user_creation'] = 'íÓÊØíÚ ÇáãÓÊÎÏãæä ÇáÌÏÏ Ãæ (ÇáãÌåæáæä) ÇäÔÇÁ ÍÓÇÈÇÊ Úáì ãÕÏÑ ÇáÊæËíÞ ÇáÎÇÑÌíø æ ÊÃßíøÏ ÇáÊÓÌíá ÚÈÑ ÈÑíÏ ÅáßÊÑæäíø . ÅÐÇ ÃäÊ ãßäÊ åÐå ÇáÎÇÕíå, ÃÐä ÊÐßøÑ Ãä ÊæÝøÞ Èíä ÇáÎíÇÑÇÊ ÐÇÊ ÇáãÑßÈÉ ÇáãÍÏøÏÉ áÅäÔÇÁ ÇáãÓÊÎÏã ÃíÖðÇ'; $string['auth_usernameexists'] = 'ÇáÇÓã ÇáãÎÊÇÑ ãæÌæÏ¡ ÇáÑÌÇÁ ÇÎÊíÇÑ ÇÓã ÇÎÑ'; @@ -75,15 +58,10 @@ $string['authinstructions'] = ' $string['changepassword'] = 'ÊÛííÑ ÚäæÇä ßáãÉ ÇáãÑæÑ'; $string['changepasswordhelp'] = 'åäÇ ÊÓÊØíÚ ÊÚííä ÇáãæÖÚ ÇáÐí íãßä ááãÓÊÎÏãíä ãä ÎáÇáå ÇÓÊÑÏÇÏ Ãæ ÊÛííÑ ÃÓãÇÁ ÇáãÓÊÎÏãíä Ãæ ßáãÇÊ ÇáãÑæÑ ÇáÎÇÕÉ Èåã Ýí ÍÇáÉ äÓíÇäåÇ. æÓæÝ íßæä Ðáß ãÊÇÍÇ ááãÓÊÎÏãíä ãä ÎáÇá ÒÑ Ýí ÕÝÍÉ ÇáÏÎæá æÕÝÍÉ ÇáãÓÊÎÏã ÇáÎÇÕÉ Èåã. ÃãÇ ÅÐÇ ÊÑßÊ åÐÇ ÇáãßÇä ÎÇáíÇ¡ Ýáä íÊã ØÈÇÚÉ ÇáÒÑ.'; $string['chooseauthmethod'] = 'ÇÎÊÑ ÃÓáæÈÇ ááÊæËíÞ: '; -$string['forcechangepassword'] = 'ÃÌÈÑ ÊÛíÑ ßáãÉ ÇáãÑæÑ'; -$string['forcechangepassword_help'] = 'ÃÌÈÑ ÇáãÓÊÎÏãíä Úáì ÊÛíÑ ßáãÉ ÇáãÑæÑ ÚäÏãÇ íÞæãæÇ ÈÇáÏÎæá Åáì ãæÏá Ãæá ãÑÉ.'; -$string['forcechangepasswordfirst_help'] = 'ÃÌÈÑ ÇáãÓÊÎÏãíä Úáì ÊÛíÑ ßáãÉ ÇáãÑæÑ ÚäÏãÇ íÞæãæÇ ÈÇáÏÎæá Åáì ãæÏá Ãæá ãÑÉ.'; $string['guestloginbutton'] = 'ÒÑ ÏÎæá ÇáÖíÝ'; $string['instructions'] = 'ÊÚáíãÇÊ'; $string['md5'] = 'ÊÔÝíÑ MD5'; $string['plaintext'] = 'äÕ ÚÇÏí'; $string['showguestlogin'] = 'íãßäß ÅÙåÇÑ Ãæ ÅÎÝÇÁ ÒÑ ÏÎæá ÇáÖíÝ Ýí ÕÝÍÉ ÇáÏÎæá.'; -$string['stdchangepassword'] = 'ÇÓÊÎÏã ÕÝÍÉ ÊÛíÑ ßáãÉ ÇáãÑæÑ ÇáÞíÇÓíÉ'; -$string['stdchangepassword_expl'] = 'áæ íÓãÍ äÙÇã ÇáÊæËíÞ ÇáÎÇÑÌí ÈÊÛíÑ ßáãÉ ÇáãÑæÑ ãä ÎáÇá ãæÏá¡ ÅÐä Íæá åÐÇ ÇáÅÚÏÇÏ Åáì (äÚã). åÐÇ ÇáÅÚÏÇÏ ÓíÊÎØì ãÓÇÑ ÊÛíÑ ßáãÉ ÇáãÑæÑ.'; ?> diff --git a/lang/ar/block_course_list.php b/lang/ar/block_course_list.php index e8b80545b01..9b8a291c788 100644 --- a/lang/ar/block_course_list.php +++ b/lang/ar/block_course_list.php @@ -1,10 +1,9 @@ diff --git a/lang/ar/block_course_summary.php b/lang/ar/block_course_summary.php index bc55f5fd22b..d2f56bc11ce 100644 --- a/lang/ar/block_course_summary.php +++ b/lang/ar/block_course_summary.php @@ -1,8 +1,7 @@ diff --git a/lang/ar/block_rss_client.php b/lang/ar/block_rss_client.php deleted file mode 100644 index ba60f432263..00000000000 --- a/lang/ar/block_rss_client.php +++ /dev/null @@ -1,32 +0,0 @@ - diff --git a/lang/ar/block_section_links.php b/lang/ar/block_section_links.php index 062752953fb..38d4ff98579 100644 --- a/lang/ar/block_section_links.php +++ b/lang/ar/block_section_links.php @@ -1,11 +1,11 @@ diff --git a/lang/ar/book.php b/lang/ar/book.php deleted file mode 100644 index 201a0c3bccd..00000000000 --- a/lang/ar/book.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/lang/ar/brainstorm.php b/lang/ar/brainstorm.php deleted file mode 100644 index f9a46676c0f..00000000000 --- a/lang/ar/brainstorm.php +++ /dev/null @@ -1,28 +0,0 @@ - diff --git a/lang/ar/calendar.php b/lang/ar/calendar.php index 70393804410..155bc500582 100644 --- a/lang/ar/calendar.php +++ b/lang/ar/calendar.php @@ -1,5 +1,5 @@ activate_ÝåÑÓ $a->activate_ßá íæã ãä ÃíÇã ÇáÃÓÈæÚ $a->activate_ÇáÔåÑ¡ ÃäÞá ÇáæÞÊ $a->offset ÏÞÇÆÞ $a->dirction. åÐÇ ÇáÊÛííÑ ÓíÓÊãÑ ÍÊì $a->deactivate_ÝåÑÓ $a->deactivate_ ÃíÇã ÇáÃÓÈæÚ áÜ $a->deactivate_ÇáÔåÑ.'; -$string['dstof'] = 'ãä'; -$string['dstonthe'] = 'Ýí ÇáÜ'; -$string['dstpresetactivated'] = 'ÊäÔíØ'; -$string['dstpresetadjusttime'] = 'ÊÚÏíá ÇáæÞÊ'; -$string['dstpresetdeactivated'] = 'ÊÚØíá'; -$string['dstpresetname'] = 'ÇÓã ÇáÇÚÏÇÏ ÇáãÓÞ'; $string['durationminutes'] = 'ÇáãÏÉ ÈÇáÏÞÇÆÞ'; $string['durationnone'] = 'ÈÏæä ãÏÉ ÒãäíÉ'; $string['durationuntil'] = 'ÍÊì'; @@ -48,34 +36,21 @@ $string['eventstarttime'] = ' $string['eventtime'] = 'æÞÊ'; $string['eventview'] = 'ÊÝÇÕíá ÇáæÞÊ'; $string['expired'] = 'ÇäÊåì'; -$string['explain_dstpreset'] = 'ãä ãÓÏáÉ ÇáÎíÇÑÇÊ ÊÓÊØíÚ ÊÍÏíÏ ÅÚÏÇÏÇÊ ÇáÊæÞíÊ ÇáÕíÝí ááãäØÞÉ ÇáãÎÊÇÑÉ.'; -$string['explain_dstpresetforced'] = 'ãÏíÑ ÇáãæÞÚ áÇ íÓãÍ ááãÓÊÎÏãíä ÇáÞíÇã ÈÊÚÏíá åÐÇ ÇáÎíÇÑ.'; -$string['explain_lookahead'] = 'ÓíÚÏ åÐÇ ÚÏÏ (ÇáÍÏ ÇáÃÞÕì) ááÃíÇã ÇáãÓÊÞÈáíÉ ÇáÊí ÓíÙåÑ ÎáÇáåÇ ÇáÍÏÊ ÇáÞÇÏã. ÇáÃÍÏÇË ÇáÊí ÓÊÈÏÇÁ ÈÚÏ åÐÇ ÇáÅÚÏÇÏ áä ÊÙåÑ ßÃÍÏÇË ÞÇÏãÉ. ÇáÑÌÇÁ ãáÇÍÙÉ áÇ íæÌÏ ÖãÇä áÅÙåÇÑ ßá ÇáÃÍÏÇË ÇáÊí ÓÊÈÏÇÁ ÎáÇá åÐÇ ÇáæÞÊ ÇáÒãäí. áæ æÌÏ ÇáßËíÑ ãä ÇáÇÍÏÇË ÇáÞÇÏãÉ (ÃßËÑ ãä ÇáÍÏ ÇáÃÞÕì ÇáãÊÇÍ ááÃÍÏÇË ÇáÞÇÏãÉ) ßá ÇáÃÍÏÇË ÇáÈÚíÏÉ ÒãäíÇð áä ÊÙåÑ.'; -$string['explain_maxevents'] = 'ÓíÚÏ åÐÇ ÇáÍÏ ÇáÃÞÕì áÚÏÏ ÇáÇÍÏÇË ÇáÞÇÏãÉ ÇáÊí ÓíÊã ÚÑÖåÇ åäÇÁ. áæ ÞãÊ ÈÇÎÊíÇÑ ÑÞã ßÈíÑ ÝÓíßæä ÚÏÏ ÇáÇÍÏÇË ßËíÑÉ ÌÏÇð æÓÊÓÛá ãÓÇÍÉ ßÈíÑ Úáì ÇáÔÇÔÉ.'; -$string['explain_persistflt'] = 'áæ Êã ÊÝÚíá åÐÇ ÇáÅÚÏÇÏ¡ ÂáíÇÓíÊÐßÑ ãæÏá ÃÎÑ ÅÚÏÇÏÇÊ æÈäÇÁ ÚáíåÇíÚíÏåÇ ßá ãÑÉ ÊÏÎá ÝíåÇ Åáì ÇáãæÞÚ.'; -$string['explain_startwday'] = 'ÇÓÇÈíÚ ÇáÊÞæíã ÓÊØåÑ ÅÈÊÏÇð ÈÇáíæã ÇáÐí ÊÎÊÇÑå åäÇÁ'; -$string['explain_timeformat'] = 'ÊÓÊØíÚ ãÔÇåÏÉ ÇáæÞÊ ÈÇÍÏ ÇáÊäÓííÞíä 12 Ãæ 24 ÓÇÚÉ. áæ ÞãÊ ÈÇÎÊíÇÑ ÇáæÖÚ \"ÇáÃÝÊÑÇÖí\" ÂáíÇð ÓíÊã ÇÎÊíÇÑ ÇáÊäÓíÞ ÍÓÈ ÇááÛÉ ÇáãÓÊÎÏãÉ Ýí ÇáãæÞÚ.'; -$string['first'] = 'Ãæá'; $string['fri'] = 'ÇáÌãÚÉ'; $string['friday'] = 'ÇáÌãÚÉ'; $string['globalevents'] = 'ÃÍÏÇË ÔÇãáå'; $string['gotocalendar'] = 'ÅÐåÈ Åáì ÇáÊÞæíã'; $string['groupevents'] = 'ÃÍÏÇË ãÌãæÚÉ'; $string['hidden'] = 'ãÎÝí'; -$string['last'] = 'ÃÎÑ'; $string['manyevents'] = '$a ÃÍÏÇË'; $string['mon'] = 'ÇáÇËäíä'; $string['monday'] = 'ÇáÇËäíä'; $string['monthlyview'] = 'ãÚÇíäÉ ÔåÑíÉ'; $string['newevent'] = 'ÍÏË ÌÏíÏ'; -$string['notusingdst'] = 'áÇ íÊã ÇÓÊÎÏÇã ÇáÊæÞíÊ ÇáÕíÝí'; $string['noupcomingevents'] = 'áÇ íæÌÏ ÃÍÏÇË ÞÇÏãÉ'; -$string['nth'] = '{$a} '; $string['oneevent'] = 'ÍÏË æÇÍÏ'; -$string['pref_dstpreset'] = 'ÇáÊæÞíÊ ÇáÕíÝí'; $string['pref_lookahead'] = 'ãÚÇíäÉ ÇáÇÍÏÇË ÇáÞÇÏãÉ'; $string['pref_maxevents'] = 'ÇáÍÏ ÇáÇÞÕì ááÃÍÏÇË ÇáÞÇÏãÉ'; -$string['pref_persistflt'] = 'ÊÐßÑ ãÑÔÍ ÇáÇÚÏÇÏÇÊ'; $string['pref_startwday'] = 'Ãæá ÃíÇã ÇáÃÓÈæÚ'; $string['pref_timeformat'] = 'ÕíÛÉ ÚÑÖ ÇáæÞÊ'; $string['preferences'] = 'ÊÝÖíáÇÊ'; @@ -93,8 +68,6 @@ $string['thu'] = ' $string['thursday'] = 'ÇáÎãíÓ'; $string['timeformat_12'] = '12 ÓÇÚÉ (Õ/ã)'; $string['timeformat_24'] = '24 ÓÇÚÉ'; -$string['timeforward'] = 'Åáì ÇáÇãÇã'; -$string['timerewind'] = 'Åáì ÇáÎáÝ'; $string['today'] = 'Çáíæã'; $string['tomorrow'] = 'ÛÏÇð'; $string['tt_deleteevent'] = 'ÇÍÐÝ ÍÏË'; diff --git a/lang/ar/certificate.php b/lang/ar/certificate.php deleted file mode 100644 index 299ef2e37c0..00000000000 --- a/lang/ar/certificate.php +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/lang/ar/chat.php b/lang/ar/chat.php index 5518c46e48e..db144adca2b 100644 --- a/lang/ar/chat.php +++ b/lang/ar/chat.php @@ -1,55 +1,43 @@ -ÏÇÆãÇ ÝÚÇáå'; -$string['explainmethoddaemon'] = 'åÐå ÇáÇÚÏÇÏÇÊ ãåãÉ ÝÞØ áæ ÞãÊ ÈÇÎÊíÇÑ \"ÎÇÏã Ïíãæä ááãÍÇÏËÉ\" ߨÑíÞÉ ÇáãÍÇÏËÉ'; -$string['explainmethodnormal'] = 'åÐå ÇáÇÚÏÇÏÇÊ ãåãÉ ÝÞØ áæ ÞãÊ ÈÇÎÊíÇÑ \"ØÑíÞÉ ÇáãÍÇÏËÉ ÇáÚÇÏíÉ\" ߨÑíÞÉ ÇáãÍÇÏËÉ'; -$string['generalconfig'] = 'ÅÚÏÇÏÇÊ ÚÇãÉ'; -$string['helpchatting'] = 'ãÓÇÚÏÉ ááãÍÇÏËÉ'; -$string['idle'] = 'ÎÇãá'; -$string['messagebeepseveryone'] = ' $a ÅÑÓÇá äÛãÉ ááÌãíÚ!'; -$string['messagebeepsyou'] = ' $a ÃÑÓá äÛãÉ áß!'; -$string['messageenter'] = ' $a ÏÎá ÛÑÝÉ ãÍÇÏËÉ'; -$string['messageexit'] = ' $a ÎÑÌ ãä ÛÑÝÉ ãÍÇÏËÉ'; -$string['messages'] = 'ÑÓÇÆá'; -$string['methoddaemon'] = 'ÎÇÏã Ïíãæä ááãÍÇÏËÉ'; -$string['methodnormal'] = 'ÇáØÑíÞÉ ÇáÇÚÊíÇÏíÉ'; -$string['modulename'] = 'ãÍÇÏËÉ'; -$string['modulenameplural'] = 'ãÍÇÏËÇÊ'; -$string['neverdeletemessages'] = 'áÇÊãÓÍ ÇáÑÓÇÆá ÃÈÏÇð'; -$string['nextsession'] = 'ÇáÌáÓÉ ÇáÊÇáíÉ '; -$string['noguests'] = 'ÇáãÍÇÏËÉ ÛíÑ ãÊÇÍÉ ááÒæÇÑ'; -$string['nomessages'] = 'áÇ ÊæÌÏ ÑÓÇÆá ÈÚÏ'; -$string['repeatdaily'] = 'Ýí äÝÓ ÇáãæÚÏ ßá íæã'; -$string['repeatnone'] = 'áÇ ÊßÑÇÑ- Þã ÈäÔÑ ÇáãæÚÏ ÇáãÍÏÏ ÝÞØ'; -$string['repeattimes'] = 'ÌáÓÇÊ ãßÑÑÉ'; -$string['repeatweekly'] = 'Ýí äÝÓ ÇáãæÚÏ ÇÓÈæÚíÇð'; -$string['savemessages'] = 'ÃÍÝÙ ÇáÌáÓÇÊ ÇáÓÇÈÞÉ'; -$string['seesession'] = 'ÃÚÑÖ åÐå ÇáÌáÓÉ'; -$string['sessions'] = 'ÌáÓÉ ãÍÇÏËÉ'; -$string['strftimemessage'] = '%%H:%%M'; -$string['studentseereports'] = 'íÓÊØíÚ ÇáÌãíÚ ãÚÇíäÉ ÇáÌáÓÇÊ ÇáÓÇÈÞÉ'; -$string['viewreport'] = 'ãÚÇíäÉ ÌáÓÇÊ ÇáãÍÇÏËÉ ÇáÓÇÈÞÉ'; - -?> + diff --git a/lang/ar/choice.php b/lang/ar/choice.php index a1a9cce4a34..16612cef1a9 100644 --- a/lang/ar/choice.php +++ b/lang/ar/choice.php @@ -1,25 +1,16 @@ diff --git a/lang/ar/dialogue.php b/lang/ar/dialogue.php index 605a4fe80df..cbc2f02fe16 100644 --- a/lang/ar/dialogue.php +++ b/lang/ar/dialogue.php @@ -1,71 +1,70 @@ -
        åá ÃäÊ ãÊÃßøÏ Ãäøß ÊÑíÏ ÅÛáÇÞ åÐÇ ÇáÍæÇÑ ¿'; -$string['deleteafter'] = 'ÇÍÐÝ ÇáÍæÇÑÇÊ ÇáãÛáÞÉ ÈÚÏ (ÇíÇã)'; -$string['dialogueclosed'] = 'ÍæÇÑ ãÛáÞ'; -$string['dialogueintro'] = 'ãÞÏãÉ ÍæÇÑ'; -$string['dialoguemail'] = '$a->userfrom ÞÇã ãä ÈÅÖÇÝÉ ãÇÏÉ ÌÏíÏÉ áãÇÏÊß ÇáÍæÇÑíÉ $a->dialogue -ÊÓÊØÚ ãÔÇåÏÊåÇ ãáÍÞÉ áãÇÏÊß ÇáÍæÇÑíÉ: - -$a->url'; -$string['dialoguemailhtml'] = '$a->userfrom ÞÇã ãä ÈÅÖÇÝÉ ãÇÏÉ ÌÏíÏÉ áãÇÏÊß -ÇáÍæÇÑíÉ áÜ\'$a->dialogue\'

        -ÊÓÊØÚ ãÔÇåÏÊåÇ ãáÍÞÉ url\">áÍæÇÑß.'; -$string['dialoguename'] = 'ÇÓã ÇáÍæÇÑ'; -$string['dialogueopened'] = 'ÝÊÍ ÇáÍæÇÑ ãÚ $a'; -$string['dialoguewith'] = 'ÍæÇÑ ãÚ $a'; -$string['everybody'] = 'ÌãíÚ ÇáÇÔÎÇÕ'; -$string['furtherinformation'] = 'ãÚáæãÇÊ ÇÎÑì'; -$string['lastentry'] = 'ÇÎÑ ãÇÏÉ'; -$string['maildefault'] = 'ÈÑíÏ ÇÝÊÑÇÖí'; -$string['mailnotification'] = 'ÇÔÚÇÑ ÈÑíÏí'; -$string['modulename'] = 'ÍæÇÑ'; -$string['modulenameplural'] = 'ÍæÇÑÇÊ'; -$string['namehascloseddialogue'] = '$a ÞÇã ÈÇÛáÞ ÇáÍæÇÑ'; -$string['newdialogueentries'] = 'ãæÇÏ ÍæÇÑíÉ ÌÏíÏÉ'; -$string['newentry'] = 'ãÇÏÉ ÌÏíÏÉ'; -$string['noavailablepeople'] = 'áÇ íÌæÏ Çì ÔÎÕ ááãÍÇæÑÉ ãÚå'; -$string['nopersonchosen'] = 'áã íÊã ÇÎÊíÇÑ Çì ÔÎÕ'; -$string['nosubject'] = 'áã íÊã ÇÏÎÇá ÇáãæÖæÚ'; -$string['notextentered'] = 'áã íÊã ÇÏÎÇá ÇáäÕ'; -$string['notstarted'] = 'áã íÈÏÇÁ åÐÇ ÇáÍæÇÑ ÈÚÏ'; -$string['notyetseen'] = 'áã íÑÇì ÈÚÏ'; -$string['numberofentries'] = 'ÚÏÏ ÇáãæÇÏ'; -$string['numberofentriesadded'] = 'ÚÏÏ ÇáãæÇÏ ÇáãÖÇÝÉ: $a'; -$string['of'] = 'ãä'; -$string['onwrote'] = 'ßÊÈ $a Ýí'; -$string['onyouwrote'] = 'ßÊÈÊ $a Ýí'; -$string['open'] = 'ãÝÊæÍ'; -$string['openadialoguewith'] = 'ÇÝÊÍ ÍæÇÑ ãÚ'; -$string['opendialogue'] = 'ÇÝÊÍ ÍæÇÑ'; -$string['opendialogueentries'] = 'ãæÇÏ ÇáÍæÇÑ ÇáãÝÊæÍ'; -$string['pane0'] = 'ÇÝÊÍ ÍæÇÑ'; -$string['pane1'] = ' $a ÍæÇÑÇÊ ÊäÙÑ ÇáÑÏæÏ ãäß'; -$string['pane1one'] = '1 ÍæÇÑ íäÊÙÑ ÇáÑÏ ãäß'; -$string['pane2'] = ' $a ÍæÇÑÇÊ ÊäÊÙÑ ÇáÑÏæÏãä ÔÎÕ ÇÎÑ '; -$string['pane2one'] = '1 ÍæÇÑ íäÊÙÑ ÇáÑÏ ãä ÇáÔÎÕ ÇáÇÎÑ'; -$string['pane3'] = '$a ÍæÇÑÇÊ ãÛáÞÉ'; -$string['pane3one'] = '1 ÍæÇÑ ãÛáÞ'; -$string['seen'] = 'ÔæåÏ $a ÞÈá '; -$string['sendmailmessages'] = 'ÇÑÓÇá ÑÓÇÆá ÈÑíÏ ÊÍÊæì Úáì ãæÇÏí ÇáÌÏíÏÉ'; -$string['status'] = 'ÇáÍÇáÉ'; -$string['studenttostudent'] = 'ØÇáÈ - áØÇáÈ'; -$string['subject'] = 'ãæÖæÚ'; -$string['subjectadded'] = 'Êã ÇÖÇÝÉ ãæÖæÚ'; -$string['teachertostudent'] = 'ãÏÑÓ - áØÇáÈ'; -$string['typefirstentry'] = 'ÇØÈÚ ÇáãÇÏÉ ÇáÇæáì åäÇÁ'; -$string['typefollowup'] = 'ÇØÈÚ ÇáãÊÇÈÚÉ åäÇÁ'; -$string['typeofdialogue'] = 'äæÚ ÇáÍæÇÑ'; -$string['typereply'] = 'ÇØÈÚ ÇáÑÏ åäÇÁ'; -$string['viewallentries'] = 'ÔÇåÏ $a ãæÇÏ ÇáÍæÇÑ'; - -?> +
        åá ÃäÊ ãÊÃßøÏ Ãäøß ÊÑíÏ ÅÛáÇÞ åÐÇ ÇáÍæÇÑ ¿'; +$string['deleteafter'] = 'ÇÍÐÝ ÇáÍæÇÑÇÊ ÇáãÛáÞÉ ÈÚÏ (ÇíÇã)'; +$string['dialogueclosed'] = 'ÍæÇÑ ãÛáÞ'; +$string['dialogueintro'] = 'ãÞÏãÉ ÍæÇÑ'; +$string['dialoguemail'] = '$a->userfrom ÞÇã ãä ÈÅÖÇÝÉ ãÇÏÉ ÌÏíÏÉ áãÇÏÊß ÇáÍæÇÑíÉ $a->dialogue +ÊÓÊØÚ ãÔÇåÏÊåÇ ãáÍÞÉ áãÇÏÊß ÇáÍæÇÑíÉ: + +$a->url'; +$string['dialoguemailhtml'] = '$a->userfrom ÞÇã ãä ÈÅÖÇÝÉ ãÇÏÉ ÌÏíÏÉ áãÇÏÊß +ÇáÍæÇÑíÉ áÜ\'$a->dialogue\'

        +ÊÓÊØÚ ãÔÇåÏÊåÇ ãáÍÞÉ url\">áÍæÇÑß.'; +$string['dialoguename'] = 'ÇÓã ÇáÍæÇÑ'; +$string['dialogueopened'] = 'ÝÊÍ ÇáÍæÇÑ ãÚ $a'; +$string['dialoguewith'] = 'ÍæÇÑ ãÚ $a'; +$string['everybody'] = 'ÌãíÚ ÇáÇÔÎÇÕ'; +$string['furtherinformation'] = 'ãÚáæãÇÊ ÇÎÑì'; +$string['lastentry'] = 'ÇÎÑ ãÇÏÉ'; +$string['maildefault'] = 'ÈÑíÏ ÇÝÊÑÇÖí'; +$string['modulename'] = 'ÍæÇÑ'; +$string['modulenameplural'] = 'ÍæÇÑÇÊ'; +$string['namehascloseddialogue'] = '$a ÞÇã ÈÇÛáÞ ÇáÍæÇÑ'; +$string['newdialogueentries'] = 'ãæÇÏ ÍæÇÑíÉ ÌÏíÏÉ'; +$string['newentry'] = 'ãÇÏÉ ÌÏíÏÉ'; +$string['noavailablepeople'] = 'áÇ íÌæÏ Çì ÔÎÕ ááãÍÇæÑÉ ãÚå'; +$string['nopersonchosen'] = 'áã íÊã ÇÎÊíÇÑ Çì ÔÎÕ'; +$string['nosubject'] = 'áã íÊã ÇÏÎÇá ÇáãæÖæÚ'; +$string['notextentered'] = 'áã íÊã ÇÏÎÇá ÇáäÕ'; +$string['notstarted'] = 'áã íÈÏÇÁ åÐÇ ÇáÍæÇÑ ÈÚÏ'; +$string['notyetseen'] = 'áã íÑÇì ÈÚÏ'; +$string['numberofentries'] = 'ÚÏÏ ÇáãæÇÏ'; +$string['numberofentriesadded'] = 'ÚÏÏ ÇáãæÇÏ ÇáãÖÇÝÉ: $a'; +$string['of'] = 'ãä'; +$string['onwrote'] = 'ßÊÈ $a Ýí'; +$string['onyouwrote'] = 'ßÊÈÊ $a Ýí'; +$string['open'] = 'ãÝÊæÍ'; +$string['openadialoguewith'] = 'ÇÝÊÍ ÍæÇÑ ãÚ'; +$string['opendialogue'] = 'ÇÝÊÍ ÍæÇÑ'; +$string['opendialogueentries'] = 'ãæÇÏ ÇáÍæÇÑ ÇáãÝÊæÍ'; +$string['pane0'] = 'ÇÝÊÍ ÍæÇÑ'; +$string['pane1'] = ' $a ÍæÇÑÇÊ ÊäÙÑ ÇáÑÏæÏ ãäß'; +$string['pane1one'] = '1 ÍæÇÑ íäÊÙÑ ÇáÑÏ ãäß'; +$string['pane2'] = ' $a ÍæÇÑÇÊ ÊäÊÙÑ ÇáÑÏæÏãä ÔÎÕ ÇÎÑ '; +$string['pane2one'] = '1 ÍæÇÑ íäÊÙÑ ÇáÑÏ ãä ÇáÔÎÕ ÇáÇÎÑ'; +$string['pane3'] = '$a ÍæÇÑÇÊ ãÛáÞÉ'; +$string['pane3one'] = '1 ÍæÇÑ ãÛáÞ'; +$string['seen'] = 'ÔæåÏ $a ÞÈá '; +$string['sendmailmessages'] = 'ÇÑÓÇá ÑÓÇÆá ÈÑíÏ ÊÍÊæì Úáì ãæÇÏí ÇáÌÏíÏÉ'; +$string['status'] = 'ÇáÍÇáÉ'; +$string['studenttostudent'] = 'ØÇáÈ - áØÇáÈ'; +$string['subject'] = 'ãæÖæÚ'; +$string['subjectadded'] = 'Êã ÇÖÇÝÉ ãæÖæÚ'; +$string['teachertostudent'] = 'ãÏÑÓ - áØÇáÈ'; +$string['typefirstentry'] = 'ÇØÈÚ ÇáãÇÏÉ ÇáÇæáì åäÇÁ'; +$string['typefollowup'] = 'ÇØÈÚ ÇáãÊÇÈÚÉ åäÇÁ'; +$string['typeofdialogue'] = 'äæÚ ÇáÍæÇÑ'; +$string['typereply'] = 'ÇØÈÚ ÇáÑÏ åäÇÁ'; +$string['viewallentries'] = 'ÔÇåÏ $a ãæÇÏ ÇáÍæÇÑ'; + +?> diff --git a/lang/ar/editor.php b/lang/ar/editor.php index 84a0edbeed4..c4e3a4d5041 100644 --- a/lang/ar/editor.php +++ b/lang/ar/editor.php @@ -1,15 +1,13 @@ diff --git a/lang/ar/enrol_database.php b/lang/ar/enrol_database.php deleted file mode 100644 index ac0a5961471..00000000000 --- a/lang/ar/enrol_database.php +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/lang/ar/enrol_flatfile.php b/lang/ar/enrol_flatfile.php index 30e3ce28b3b..e10d50f5bb5 100644 --- a/lang/ar/enrol_flatfile.php +++ b/lang/ar/enrol_flatfile.php @@ -1,11 +1,7 @@ diff --git a/lang/ar/enrol_internal.php b/lang/ar/enrol_internal.php index 34d9066b6d8..191264f89ed 100644 --- a/lang/ar/enrol_internal.php +++ b/lang/ar/enrol_internal.php @@ -1,13 +1,7 @@ -

      • íÓÊØíÚ ÇáãÚáã Ãæ ÇáãÏíÑ ãä ÊÓíÌá ÇáØáÇÈ ÈØÑíÞÉ ÚÇÏíÉ æÐáß Úä ØÑíÞ ÇáÑÇÈØ ÇáãæÌæÏ ÞÇÆãÉ ÇáÅÏÇÑÉ ÏÇÎá ÇáãäåÌ ÇáÏÑÇÓí.
      • -
      • íãßä ÅÖÇÝÉ ßáãÉ ãÑæÑ áßá ãäåÌ ÏÑÇÓí ÊÓãì \"ãÝÊÇÍ ÇáÊÓÌíá\". Ãí ÔÎÕ íÚÑÝ åÐå ÇáßáãÉ íÓÊØíÚ ÅÖÇÝÉ äÝÓå Ýí ÇáãäåÌ ÇáÏÑÇÓí.
      • - -'; -$string['enrolname'] = 'ÊÓÌíá ÏÇÎáí'; +$string['enrolname'] = 'تسجيل داخلي'; ?> diff --git a/lang/ar/enrol_ldap.php b/lang/ar/enrol_ldap.php deleted file mode 100644 index 1da81d1bd2a..00000000000 --- a/lang/ar/enrol_ldap.php +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/lang/ar/enrol_paypal.php b/lang/ar/enrol_paypal.php index 70d9beb751d..e69de29bb2d 100644 --- a/lang/ar/enrol_paypal.php +++ b/lang/ar/enrol_paypal.php @@ -1,10 +0,0 @@ - diff --git a/lang/ar/error.php b/lang/ar/error.php index 7ef363d1828..e9a9c2913ac 100644 --- a/lang/ar/error.php +++ b/lang/ar/error.php @@ -1,22 +1,21 @@ modulename\" ($a->moduleversion) áÇíãßä ÊËÈÊåÇ ÇáÂä. ÃäåÇ ÊÊØáÈ ÃÕÏÇÑ ÌÏíÏ áãæÏá -(ÃäÊ ÊÓÊÎÏã ÇáÂä $a->currentmoodle, æÊÍÊÇÌ $a ->requiremoodle)'; +(ÃäÊ ÊÓÊÎÏã ÇáÂä $a->currentmoodle, æÊÍÊÇÌ $a ->requiremoodle) +'; $string['notavailable'] = 'ÛíÑ ãÊæÝÑ ÍÇáíÇ'; $string['restricteduser'] = 'ÚÐÑÇ¡ ÍÓÇÈß ÇáÍÇáí \"$a\" áÇ íÎæáß ááÞíÇã ÈÐáß'; $string['unknowncourse'] = 'ÇÓã ÇáãäåÌ ÇáÏÑÇÓí ÛíÑ ãÚÑæÝ \"$a\"'; $string['usernotaddederror'] = 'ÇáãÓÊÎÏã \"$a\" áã íÊã ÅÖÇÝÊå - ÎØÇÁ ÛíÑ ãÚÑæÝ'; $string['usernotaddedregistered'] = 'ÇáãÓÊÎÏã \"$a\" - íÊã ÊÓÌíáå ãÓÈÞÇð'; -$string['usernotavailable'] = 'ÛíÑ ãÓãæÍ áß ãÚÇíäÉ ÇáÊÝÕíáÇÊ ÇáÔÎÕíÉ áåÐÇ ÇáãÓÊÎÏã'; ?> diff --git a/lang/ar/exercise.php b/lang/ar/exercise.php index f8a0cc105c3..f4f1e67ef13 100644 --- a/lang/ar/exercise.php +++ b/lang/ar/exercise.php @@ -1,188 +1,168 @@ - ÞÏ ÊÑíÏ ãÑÇÌÚÉ Úãáß Ýí ÖæÁ Ðáß ÇáÊøÞííã
        ÅÐÇ ÚãáÊ Ðáß ãä ÝÖáß ÊÐßøÑ Ãä ÊÞæã ÈãÑÇÌÚÉ ÊÞÏíÑß ÃíÖðÇ .
        íãßä Ãä ÊÚãá åÐÇ ÈÇáÖøÛØ Úáì ÑÇÈØ ÅÚÇÏÉ ÇáÊÞííã ÇáãÚØì ÃÓÝá .'; -$string['awaitingassessmentbythe'] = 'Ýí ÇäÊÙÇÑ ÇáÊÞííã ÈæÇÓØÉ $a'; -$string['clearlateflag'] = 'ÅÒÇáÉ ãÄÔÑ ÇáÊÃÎíÑ'; -$string['comment'] = 'ÊÚáíÞ'; -$string['comparisonofassessments'] = 'ãÞÇÑäÉ ÇáÊÞííãÇÊ'; -$string['confirmdeletionofthisitem'] = 'ÊÃßíÏ ÍÐÝ åÐÇ $a'; -$string['correct'] = 'ÕÍ'; -$string['count'] = 'ÚÏ'; -$string['criterion'] = 'ãÚíÇÑ'; -$string['deadline'] = 'ÇÎÑ ãæÚÏ'; -$string['deadlineis'] = 'ÇÎÑ ãæÚÏ åæ $a'; -$string['delete'] = 'ÇÍÐÝ'; -$string['deletesubmissionwarning'] = 'ÊÍÐíÑ: åäÇß $a ÊÞííãÇÊ ãÑÊÈØÉ ÈåÐÇ ÇáÊÓáíã.
        ãä ÇáãÝÊÑØ ÚÏã ÇáÞíÇã ÈÍÐÝ åÐÇ ÇáÊÓáíã'; -$string['deleting'] = 'íÍÐÝ'; -$string['description'] = 'æÕÝ'; -$string['descriptionofexercise'] = 'Ýí ÊãÑíä ÇáãåãÉ æÕÝ ÇáÊãÑíä Ãæ ÇáæÇÌÈ ÇáÐí ÓíäÝÐÈæÇÓØÉ $a íõæÖóÚ Ýí ãÓÊäÏ (Word) Ãæ ãáÝø (HTML). åÐÇ ÇáãáÝø íõÍóãøóá Ýí ÇáÊøãÑíä ÞÈá ÊÝõÊöÍó ÇáãåãÉ ÈæÇÓØÉ $a . æÅäøå ããßä ÃíÖðÇ ÅäÔÇÁ ãÌãæÚÉð ãáÝÇÊ ãÊäæÚÉ Úáì äÝÓ ÇáÊøãÑíä Ãæ ÇáãåãøÉ, ßãÓÊäÏÇÊ (Word) Ãæ ãáÝÇÊ (HTML), æ ÊÍãøá åÐå ÇáãáÝÇÊ ÇáãÊäæÚÉ Ýí ÇáÊøãÑíä ÞÈá Ãä íÊã ÝõÊÍå ÈæÇÓØÉ $a .'; -$string['detailsofassessment'] = 'ÊÝÇÕíá ÇáÊÞííã'; -$string['displayoffinalgrades'] = 'ÃÚÑÖ ÇáÏÑÌÇÊ ÇáäåÇÆíÉ'; -$string['doubleupload'] = 'ÊøÍÐíÑ : ãä ÇáãÍÊãá Çä åÐÇ ÇáÊÓáíã ÞÏ ÃõÑúÓöáó ãÑøÊíä. ÇÐåÈ Åáì ÕÝÍÉ ÇáÅÏÇÑÉ, æ ÊÍÞÞ ãä ÊÓáíãíä åÐÇ ÇáãÓÊÎÏã ÎáÇá ÝÊÑÉ æÞÊ ÞÕíÑÉ . ÇÍÐÝ ÃÍÏåãÇ ÞÈá ÇáÇÓÊãÑÇÑ .'; -$string['duedate'] = 'ÊÇÑíÎ ÇáÊÓáíã'; -$string['edit'] = 'ÊÍÑíÑ'; -$string['editingassessmentelements'] = 'ÍÑÑ ÚäÇÕÑ ÇáÊÞííã'; -$string['element'] = 'ÚäÕÑ'; -$string['elementweight'] = 'æÒä ÇáÚäÕÑ'; -$string['enterpassword'] = 'ÃÏÎá ßáãÉ ÇáãÑæÑ'; -$string['entriessaved'] = 'Êã ÍÝÙ ÇáãæÇÏ'; -$string['errorbanded'] = 'ÊæÍíÏ ÇáÎØÇÁ'; -$string['excellent'] = 'ããÊÇÒ'; -$string['exerciseassessments'] = 'ÊãÑíä ÇáÊÞííãÇÊ'; -$string['exercisefeedback'] = 'ÊÚáíÞ Úáì ÇáÊãÑíã'; -$string['exercisesubmissions'] = 'ÊÓáíãÇÊ ÇáÊãÑíä'; -$string['fair'] = 'ÚÇÏá'; -$string['generalcomment'] = 'ÊÚáíÞ ÚÇã'; -$string['good'] = 'ÌíÏ'; -$string['gradeassessment'] = 'ÏÑÌÉ ÊÞííã'; -$string['gradeforassessment'] = 'ÏÑÌÉ ááÊÞííã'; -$string['gradeforstudentsassessment'] = 'ÏÑÌÉ áÜ $a ÊÞííã'; -$string['gradeforsubmission'] = 'ÏÑÌÉ ÇáÊÓáíã'; -$string['gradetable'] = 'ÌÏæá ÇáÏÑÌÉ'; -$string['gradinggrade'] = 'ÏÑÌÉ ÇáÊÞííã'; -$string['gradingstrategy'] = 'ÇÓÊÑÇÊíÌíÉ æÖÚ ÇáÏÑÌÇÊ'; -$string['handlingofmultiplesubmissions'] = 'ãÚÇáÌÉ ÊÓáíãÇÊ ãÊßÑÑÉ'; -$string['hidenamesfromstudents'] = 'ÇÎÝÇÁ ÇÓãÇÁ ÇáØáÇÈ'; -$string['incorrect'] = 'ÛíÑ ÕÍíÍ'; -$string['late'] = 'ãÊÃÎÑ'; -$string['lax'] = 'ÛíÑ ÕÇÑã'; -$string['leaguetable'] = 'ÌÏæá ãæÍÏ ááÚãá ÇáÐí Êã ÊÓáíãÉ'; -$string['mail1'] = 'Êã ÊÞííã ãåãÊß \'$a\' ÈæÇÓØÉ'; -$string['mail2'] = 'ãä Çáããßä ãÔÇåÏÉ ÇáÊÚáíÞÇÊ æÇáÏÑÌÉ Ýí ÊãÑíä ÇáãåãÉ\'$a\''; -$string['mail3'] = 'ÊÓØíÚ ãÔÇåÏÊåÇ Ýí ÊãÑíä ãåãÊß'; -$string['mail6'] = 'Êã ãÑÇÌÚÉ ÊÞííã ãåãÊß \'$a\' ÈæÇÓØÉ'; -$string['mail7'] = 'ÇáÊÚáíÞÇÊ ÇáãÞÏãÉ ÈæÇÓØÉ $a íãßä ãÔÇåÏÊåÇÝí ÊãÑíä ÇáãåãÉ'; -$string['managingassignment'] = 'ÅÏÇÑÉ ÇáÊãÑíä'; -$string['maximum'] = 'ÇáÇÞÕì'; -$string['maximumgradeforstudentassessments'] = 'ÇáÏÑÌÉ ÇáÞÕæí áÊÞííãÇÊ ÇáØÇáÈ: $a'; -$string['maximumgradeforsubmissions'] = 'ÇáÏÑÌÉ ÇáÞÕæí ááÊÓáíãÇÊ: $a'; -$string['maximumsize'] = 'ÇáÍÌã ÇáÇÞÕì'; -$string['mean'] = 'ãÊæÓØ'; -$string['minimum'] = 'ÇáÇÏäì'; -$string['modulename'] = 'ÊãÑíä'; -$string['modulenameplural'] = 'ÊãÇÑíä'; -$string['movingtophase'] = 'ÃäÞá Åáì ãÑÍáÉ $a'; -$string['multiplesubmissions'] = 'ÊÓáíãÇÊ ãÊßÑÑÉ'; -$string['noexercisedescriptionssubmitted'] = 'áã íÊã ÊÓáíã æÕÝ ÇáÊãÑíä'; -$string['nosubmissions'] = 'áÇ íæÌÏ ÊÓáíãÇÊ'; -$string['notassessedyet'] = 'áã íÞííã ÈÚÏ'; -$string['notavailable'] = 'ÛíÑ ãæÌæÏ'; -$string['noteonassessmentelements'] = 'áÇÍÙ Ãä ÇáÊøÕäíÝ ÞÓã Ýí ÚÏÏ ãä ÚäÇÕÑ ÇáÊÞííã .
        -åÐÇ ÈÌÚá ÑÕÏ ÇáÏÑÌÇÊ ÃÓåá æ ÃßËÑ ËÈÇÊÇð . ßãÏÑøÓ íÌÈ Ãä ÊÖíÝ åÐå .
        -ÇáÚäÇÕÑ ÞÈá ÅÊÇÍÉ ÇáãåãÉ ááØøáÈÉ . ÓíäÝÐ åÐÇ .
        -ÈÇáÖøÛØ Úáì ÇáãåãÉ Ýí ÇáãäåÌ ÇáÏÑÇÓí, Ýí ÍÇáÉ ÚÏã æÌæÏ Ãì ÚäÕÑ ÓÊÊØáÈ .
        -ÈÅÖÇÝÉ ÇáÚäÇÕÑ . íãßäß Ãä ÊÛíøÑ ÚÏÏ ÇáÚäÇÕÑ ÈÇÓÊÎÏÇã ÔÇÔÉ ÊÍíÑí ÇáãåãÉ, .
        -íãßä ÊõÚóÏøóá ÇáÚäÇÕÑ ãä ÇáÔøÇÔÉ \"ÅÏÇÑÉ ÇáãåãÉ\"'; -$string['noteongradinggrade'] = 'åÐå ÇáÏÑÌÉ åí ÚÈÇÑÉ Úä ãÏì ãáÇÆãÉ ÊÞííãß ãÚ ÊÞííã
        Úãáß ãä ÞÈá $a. ßáãÇ ßÇäÊ ÇáÏÑÌÉ ÚÇáíå ßáãÇ ßÇä ÇáÊÞííã ãáÇÆã.'; -$string['noteonstudentassessments'] = '{ÑÕÏ ÇáÏÑÌÉ ãä ÇáãÏÑÓ/ ÇáÏÑÌÉ ãä ÇáØÇáÈ}'; -$string['notgraded'] = 'áã íÊã ÑÕÏ ÏÑÌÇÊ ÈÚÏ'; -$string['notitlegiven'] = 'áã íÊã ÚäæäÊå'; -$string['numberofassessmentelements'] = 'ÚÏÏ ÇáÊøÚáíÞÇÊ, ÚäÇÕÑ ÇáÊÞííã, ÝÑÞ ÇáÏÑÌÇÊ, ÚÈÇÑÇÊ ÇáãÚíÇÑ Ãæ ÃÕäÇÝ Ýí ÞÇÚÏÉ'; -$string['numberofcriterionelements'] = 'ÚÏÏ ÚäÇÕÑ ÇáãÚíÇÑ áÇ ÈÏ Ãä Êßæä ÇßËÑ ãä æÇÍÏ.'; -$string['numberofentries'] = 'ÚÏÏ ÇáãæÇÏ'; -$string['numberofentriesinleaguetable'] = 'ÚÏÏ ÇáãæÇÏ Ýí ÞÇÆãÉ ÇáÝÆÉ'; -$string['numberofnegativeresponses'] = 'ÚÏÏ ÇáÇÌÇÈÇÊ ÇáÓáÈíÉ'; -$string['onesubmission'] = 'ÊÓáíã æÇÍÏ'; -$string['optionaladjustment'] = 'ÊÚÏíá ÇÎÊíÇÑí'; -$string['overallgrade'] = 'ÇáÏÑÌÉ ÇáÚÇãÉ'; -$string['passwordprotectedexercise'] = 'ÇáÊãÑíä ãÍãí ÈßáãÉ ãÑæÑ'; -$string['phase'] = 'ãÑÍáå'; -$string['phase1'] = 'ÃÚÏ ÇáÊãÑíä'; -$string['phase1short'] = 'ÃÚÏ'; -$string['phase2'] = 'ÇáÓãÇÍ áÜ $a ÇáÊÞííãÇÊ æÇáÊÓáíãÇÊ'; -$string['phase2short'] = 'ãÊÇÍ'; -$string['phase3'] = 'ÃÞÝ $a ÇáÊÞííãÇÊ æÇáÊÓáíãÇÊ'; -$string['phase3short'] = 'ãÛáÞ'; -$string['pleasegradetheassessment'] = 'ÇáÑÌÇÁ ÑÕÏ ÏÑÌÉ áÊÞííã åÐÇ ÇáÚãá $a'; -$string['pleasemakeyourownassessment'] = 'ÇáÑÌÇÁ Þã ÈÊÞííã ÇáÚãá ÇáãÞÏã ãä $a.
        áÇÍÙ Çä äãæÐÌ ÇáÊÞííã ÙåÑ ãÈÏÇÆíÇð ÈÊÞííã ÇáØÇáÈ.
        íÌÈ Úáíß ÇáÞíÇã ÈÇí ÊÚÏíáÇÊ ÊÚÊÞÏ ÇäåÇ ÖÑæÑíÉ æãä Ëã ÇäÞÑ Úáì ÃÍÏ
        ÇáÃÒÇÑíÑ Ýí äåÇíÉ ÇáÕÝÍÉ.'; -$string['pleasesubmityourwork'] = 'ÇáÑÌÇÁ ÇÓÊÎÏÇã åÐÇ ÇáäãæÐÌ áÊÓáíã Úãáß'; -$string['pleaseusethisform'] = 'ÇáÑÌÇÁ ÊÚÈíÆÉ åÐå ÇáÇÓÊãÇÑÉ ÈÚÏ
        ÇäÊåÇÆß ãä ÇáÊÚáíãÇÊ ÇáãæÖÍ Ýí ÇáÊãÑíä ÇáÊÇáí.'; -$string['pleaseviewtheexercise'] = 'ãä ÝÖáß Þã È ãÚÇíäÉ ÇáÊøãÑíä ÇáÊÇáí æÐáß ÈÇáäÞÑ Úáí ÚäæÇäå. .
        íÌíÈ Úáíß ÇÊÈÇÚ ÇáÊÚáíãÇÊ ÇáÎÇÕÉ ÈåÐÇ ÇáÊøãÑíä . .
        ÚäÏ ÇáÇäÊåÇÁ ãä ÇáÊãÑíä .
        ÈäÌÇÍ ÃäÞÑ Úáì ÑÇÈØ ßáãÉ Þííã ( Ãæ ÇÚÏ ÇáÊÞííã ) .
        ÇáãæÌæÏÉ Ýí ÇáÌåÉ ÇáÇíÓÑì ãä ÇáÚäæÇä . ÈÚÏ ÇáÇäÊåÇÁ ãä åÐÇ ÇáÊøÞííã ÓÊÒæÏ
        ÈÅÑÔÇÏÇÊ ÅÖÇÝíøÉ ÊæÖÍ ÇáÎØæÇÊ ÇáÊÇáíÉ .'; -$string['poor'] = 'ÖÚíÝ'; -$string['present'] = 'ÍÇÖÑ'; -$string['reasonforadjustment'] = 'ÓÈÈ ÇáÊÚÏíá'; -$string['reassess'] = 'ÃÚÏ ÇáÊÞííã'; -$string['regradestudentassessments'] = 'ÃÚÏ ÊÞííã ÊÞííãÇÊ ÇáØáÇÈ'; -$string['resubmissionfor'] = 'ÅÚÇÏÉ ÊÓáíã áÜ $a'; -$string['resubmitnote'] = '*åÐÇ íÚäí Ãäå ÞÏ ÓãÍ áÜ $a ÇáÞíÇã ÈÅÚÇÏÉ ÇáÊÓáíã .
        íãßä ÊÚííä åÐÇ ÇáãÄÔÑ áÃì ÅÚÇÏÉ ÊÞííã æÐáß ÈÇáäÞÑ Úáí
        ÑÇÈØ ÇáÓãÇÍ áÜ $a ÇáÞíÇã ÈÅÚÇÏÉ ÇáÊÓáíã ÇáÒøÑø .
        íÓÊØíÚ ÇáØøÇáÈ ÇáÞíÇã ÈÅÚÇÏÉ ÇáÊÓáíã ÚäÏãÇ íßæä ÇáãÄÔÑÙÇåÑÇð ÚáìÃíø ãä ÊÓáíãÇÊå .'; -$string['rubric'] = 'ÞÇÚÏÉ'; -$string['savedok'] = 'Êã ÇáÍÝÙ '; -$string['saveentries'] = 'ÍÝÙ ÇáãæÇÏ'; -$string['savemyassessment'] = 'ÇÍÝÙ ÊÞííãí'; -$string['saveweights'] = 'ÍÝÙ ÇáÃæÒÇä'; -$string['scale10'] = 'ÇÑÕÏ ãä 10'; -$string['scale100'] = 'ÇÑÕÏ ãä 100'; -$string['scale20'] = 'ÇÑÕÏ ãä 20'; -$string['scalecorrect'] = '2 äÞØÉ ÕÍ / ãÞíÇÓ ÛíÑ ÕÍíÍ'; -$string['scaleexcellent4'] = '4 äÞÇØ ããÊÇÒ/ ãÞíÇÓ ÖÚíÝ ÌÏÇ'; -$string['scaleexcellent5'] = '5 äÞÇØ ããÊÇÒ/ ãÞíÇÓ ÖÚíÝ ÌÏÇ'; -$string['scaleexcellent7'] = '7 äÞÇØ ããÊÇÒ/ ãÞíÇÓ ÖÚíÝ ÌÏÇ'; -$string['scalegood3'] = '3 äÞÇØ ÌíÏ /ãÞíÇÓ ÖÚíÝ'; -$string['scalepresent'] = '2 äÞØÉ ÍÇÖÑ / ãÞíÇÓ ÛÇÆÈ'; -$string['scaleyes'] = '2 äÞØÉ äÚã / áÇ íæÌÏ ãÞíÇÓ'; -$string['specimenassessmentform'] = 'äãæÐÌ ÊÞííã ÇáÚíäÉ'; -$string['strict'] = 'ÕÇÑã'; -$string['studentallowedtoresubmit'] = '$a ÓãÍ áå ÈÅÚÇÏÉ ÇáÊÓáíã'; -$string['studentassessments'] = '$a ÊÞííãÇÊ'; -$string['studentnotallowed'] = '$a áã ÓãÍ áå ÈÅÚÇÏÉ ÇáÊÓáíã'; -$string['studentsubmissions'] = '$a ÊÓáíãÇÊ'; -$string['studentsubmissionsforassessment'] = ' $a ÊÓáíãÇÊ ÇáØÇáÈ ááÊÞííã'; -$string['submission'] = 'ÊÓáíã'; -$string['submissions'] = 'ÊÓáíãÇÊ'; -$string['submissionsnowclosed'] = 'ÇáÊÓáíã ãÛáÞ ÇáÇä - ãæÚÏ ÇáÊÓáíã ÞÏ ÇäÊåÇÁ'; -$string['submitexercisedescription'] = 'Óáã æÕÝ ÇáÊãÑíä'; -$string['submitted'] = 'Êã ÊÓáíãÉ'; -$string['submittedby'] = 'Êã ÊÓáíãÉ ÈæÇÓØÉ'; -$string['suggestedgrade'] = 'ÇáÏÑÌÉ ÇáãÞÊÑÍÉ'; -$string['teacherassessment'] = ' $a ÊÞííã'; -$string['teacherassessmenttable'] = ' $a ÌÏæá ÇáÊÞííã '; -$string['teacherscomment'] = 'ÊÚáíÞÇÊ ÇáãÏÑÓ'; -$string['theexercise'] = 'ÇáÊãÑíä'; -$string['theexerciseandthesubmissionby'] = ' $a ÇáÊãÑíä æÇáÊÓáíã ÈæÇÓØÉ'; -$string['thegradeis'] = ' $a ÇáÏÑÌÉ åí'; -$string['thereisfeedbackfromthe'] = ' $a íæÌÏ ÊÚáíÞ ãä'; -$string['thisisaresubmission'] = 'ÅÚÇÏÉ ÇáÊÓáíã åÐå ÈæÇÓØÉ a . -
        Êã ÇÙåÇÑ ÊÞííãß ááÊÓáíãåã $ ÇáÓøÇÈÞ.
        ÈÚÏ ÇáäøÙÑ Ýí ÇáÊÓáíã ÇáÌÏíÏ, ãä ÝÖáß ÕÍøÍ åÐÇ ÇáÊøÞííã
        æÐáß ÈÇáäÞÑ Úáì ÃÍÏ ÇáÃÒÑÇÑ Ýí ÃÓÝá ÇáÕøÝÍÉ .'; -$string['title'] = 'ÚäæÇä'; -$string['typeofscale'] = 'äæÚ ÇáÞíÇÓ'; -$string['unassessed'] = '$a áã íÞííã'; -$string['ungradedstudentassessments'] = ' $a áã íÊã ÑÕÏ ÏÑÌÇÊ áÊÞííãÇÊ ÇáØÇáÈ'; -$string['usemaximum'] = 'ÇÓÊÎÏã ÇáÇÞÕì'; -$string['usemean'] = 'ÇÓÊÎÏã ÇáãÊæÓØ'; -$string['usepassword'] = 'ÇÓÊÎÏã ßáãÉ ãÑæÑ'; -$string['verylax'] = 'ÛíÑ ÕÇÑã ÌÏÇð'; -$string['verypoor'] = 'ÖÚíÝ ÌÏÇ'; -$string['verystrict'] = 'ÕÇÑã ÌÏÇó'; -$string['view'] = 'ÚÑÖ'; -$string['viewteacherassessment'] = 'ÇÚÑÖ $a ÊÞííã'; -$string['warningonamendingelements'] = 'ÊÍÐíÑ: áÞÏ Êã ÊÓáÈã ÚÏÏ ãä ÇáÊÞííãÇÊ.
        áÇ ÊÞã ÈÊÛíÑ ÚÏÏ ÇáÚäÇÕÑ¡ ÃäæÇÚ ÇáãÞÇííÓ¡ Ãæ ÃæÒÇä ÇáÚäÕÑ.'; -$string['weightederrorcount'] = 'ÇÌãÇáì æÒä ÇáÇÎØÇÁ: $a'; -$string['weightforgradingofassessments'] = 'æÒä ÏÑÌÇÊ ÇáÊÞííãÇÊ'; -$string['weightforteacherassessments'] = 'æÒä áÜ $a ÇáÊÞííãÇÊ'; -$string['weights'] = 'ÇæÒÇä'; -$string['weightssaved'] = 'Êã ÍÝÙ ÇáÇæÒÇä'; -$string['weightsusedforoverallgrade'] = 'ÇáÃæÒÇä ÇáãÓÊÎÏãÉ ááÏÑÌÉ ÇáÇÌãÇáíÉ'; -$string['wrongpassword'] = 'ßáãÉ ÇáãÑæÑ áåÐÇ ÇáÊãÑíä ÛíÑ ÕÍíÍíÉ'; -$string['yourassessment'] = 'ÊÞííãß'; -$string['yourfeedbackgoeshere'] = 'ÊÚáíÞß íæÖÚ åäÇÁ'; -$string['yoursubmission'] = 'ÊÓáíãß'; - -?> + ÞÏ ÊÑíÏ ãÑÇÌÚÉ Úãáß Ýí ÖæÁ Ðáß ÇáÊøÞííã
        ÅÐÇ ÚãáÊ Ðáß ãä ÝÖáß ÊÐßøÑ Ãä ÊÞæã ÈãÑÇÌÚÉ ÊÞÏíÑß ÃíÖðÇ .<ÈÑ /> íãßä Ãä ÊÚãá åÐÇ ÈÇáÖøÛØ Úáì ÑÇÈØ ÅÚÇÏÉ ÇáÊÞííã ÇáãÚØì ÃÓÝá .'; +$string['awaitingassessmentbythe'] = 'Ýí ÇäÊÙÇÑ ÇáÊÞííã ÈæÇÓØÉ $a'; +$string['awaitingfeedbackfromthe'] = 'Ýí ÇäÊÙÇÑ ÇáÊÚáíÞ ãä $a'; +$string['clearlateflag'] = 'ÅÒÇáÉ ãÄÔÑ ÇáÊÃÎíÑ'; +$string['comment'] = 'ÊÚáíÞ'; +$string['confirmdeletionofthisitem'] = 'ÊÃßíÏ ÍÐÝ åÐÇ $a'; +$string['correct'] = 'ÕÍ'; +$string['criterion'] = 'ãÚíÇÑ'; +$string['deadline'] = 'ÇÎÑ ãæÚÏ'; +$string['deadlineis'] = 'ÇÎÑ ãæÚÏ åæ $a'; +$string['delete'] = 'ÇÍÐÝ'; +$string['deleting'] = 'íÍÐÝ'; +$string['description'] = 'æÕÝ'; +$string['descriptionofexercise'] = 'Ýí ÊãÑíä ÇáãåãÉ æÕÝ ÇáÊãÑíä Ãæ ÇáæÇÌÈ ÇáÐí ÓíäÝÐÈæÇÓØÉ $a íõæÖóÚ Ýí ãÓÊäÏ (Word) Ãæ ãáÝø (HTML). åÐÇ ÇáãáÝø íõÍóãøóá Ýí ÇáÊøãÑíä ÞÈá ÊÝõÊöÍó ÇáãåãÉ ÈæÇÓØÉ $a . æÅäøå ããßä ÃíÖðÇ ÅäÔÇÁ ãÌãæÚÉð ãáÝÇÊ ãÊäæÚÉ Úáì äÝÓ ÇáÊøãÑíä Ãæ ÇáãåãøÉ, ßãÓÊäÏÇÊ (Word) Ãæ ãáÝÇÊ (HTML), æ ÊÍãøá åÐå ÇáãáÝÇÊ ÇáãÊäæÚÉ Ýí ÇáÊøãÑíä ÞÈá Ãä íÊã ÝõÊÍå ÈæÇÓØÉ $a .'; +$string['detailsofassessment'] = 'ÊÝÇÕíá ÇáÊÞííã'; +$string['displayoffinalgrades'] = 'ÃÚÑÖ ÇáÏÑÌÇÊ ÇáäåÇÆíÉ'; +$string['doubleupload'] = 'ÊøÍÐíÑ : ãä ÇáãÍÊãá Çä åÐÇ ÇáÊÓáíã ÞÏ ÃõÑúÓöáó ãÑøÊíä. ÇÐåÈ Åáì ÕÝÍÉ ÇáÅÏÇÑÉ, æ ÊÍÞÞ ãä ÊÓáíãíä åÐÇ ÇáãÓÊÎÏã ÎáÇá ÝÊÑÉ æÞÊ ÞÕíÑÉ . ÇÍÐÝ ÃÍÏåãÇ ÞÈá ÇáÇÓÊãÑÇÑ .'; +$string['duedate'] = 'ÊÇÑíÎ ÇáÊÓáíã'; +$string['edit'] = 'ÊÍÑíÑ'; +$string['editingassessmentelements'] = 'ÍÑÑ ÚäÇÕÑ ÇáÊÞííã'; +$string['element'] = 'ÚäÕÑ'; +$string['elementweight'] = 'æÒä ÇáÚäÕÑ'; +$string['entriessaved'] = 'Êã ÍÝÙ ÇáãæÇÏ'; +$string['errorbanded'] = 'ÊæÍíÏ ÇáÎØÇÁ'; +$string['excellent'] = 'ããÊÇÒ'; +$string['exerciseassessments'] = 'ÊãÑíä ÇáÊÞííãÇÊ'; +$string['exercisefeedback'] = 'ÊÚáíÞ Úáì ÇáÊãÑíã'; +$string['exercisesubmissions'] = 'ÊÓáíãÇÊ ÇáÊãÑíä'; +$string['generalcomment'] = 'ÊÚáíÞ ÚÇã'; +$string['good'] = 'ÌíÏ'; +$string['gradeassessment'] = 'ÏÑÌÉ ÊÞííã'; +$string['gradeforassessment'] = 'ÏÑÌÉ ááÊÞííã'; +$string['gradeforstudentsassessment'] = 'ÏÑÌÉ áÜ $a ÊÞííã'; +$string['gradeforsubmission'] = 'ÏÑÌÉ ÇáÊÓáíã'; +$string['gradetable'] = 'ÌÏæá ÇáÏÑÌÉ'; +$string['gradingstrategy'] = 'ÇÓÊÑÇÊíÌíÉ æÖÚ ÇáÏÑÌÇÊ'; +$string['handlingofmultiplesubmissions'] = 'ãÚÇáÌÉ ÊÓáíãÇÊ ãÊßÑÑÉ'; +$string['hidenamesfromstudents'] = 'ÇÎÝÇÁ ÇÓãÇÁ ÇáØáÇÈ'; +$string['incorrect'] = 'ÛíÑ ÕÍíÍ'; +$string['leaguetable'] = 'ÌÏæá ãæÍÏ ááÚãá ÇáÐí Êã ÊÓáíãÉ'; +$string['mail1'] = 'Êã ÊÞííã ãåãÊß \'$a\' ÈæÇÓØÉ'; +$string['mail2'] = 'ãä Çáããßä ãÔÇåÏÉ ÇáÊÚáíÞÇÊ æÇáÏÑÌÉ Ýí ÊãÑíä ÇáãåãÉ\'$a\''; +$string['mail3'] = 'ÊÓØíÚ ãÔÇåÏÊåÇ Ýí ÊãÑíä ãåãÊß'; +$string['mail6'] = 'Êã ãÑÇÌÚÉ ÊÞííã ãåãÊß \'$a\' ÈæÇÓØÉ'; +$string['mail7'] = 'ÇáÊÚáíÞÇÊ ÇáãÞÏãÉ ÈæÇÓØÉ $a íãßä ãÔÇåÏÊåÇÝí ÊãÑíä ÇáãåãÉ'; +$string['managingassignment'] = 'ÅÏÇÑÉ ÇáÊãÑíä'; +$string['maximumsize'] = 'ÇáÍÌã ÇáÇÞÕì'; +$string['modulename'] = 'ÊãÑíä'; +$string['modulenameplural'] = 'ÊãÇÑíä'; +$string['movingtophase'] = 'ÃäÞá Åáì ãÑÍáÉ $a'; +$string['multiplesubmissions'] = 'ÊÓáíãÇÊ ãÊßÑÑÉ'; +$string['noexercisedescriptionssubmitted'] = 'áã íÊã ÊÓáíã æÕÝ ÇáÊãÑíä'; +$string['nosubmissions'] = 'áÇ íæÌÏ ÊÓáíãÇÊ'; +$string['notassessedyet'] = 'áã íÞííã ÈÚÏ'; +$string['notavailable'] = 'ÛíÑ ãæÌæÏ'; +$string['noteonassessmentelements'] = 'áÇÍÙ Ãä ÇáÊøÕäíÝ ÞÓã Ýí ÚÏÏ ãä ÚäÇÕÑ ÇáÊÞííã .
        +åÐÇ ÈÌÚá ÑÕÏ ÇáÏÑÌÇÊ ÃÓåá æ ÃßËÑ ËÈÇÊÇð . ßãÏÑøÓ íÌÈ Ãä ÊÖíÝ åÐå .
        +ÇáÚäÇÕÑ ÞÈá ÅÊÇÍÉ ÇáãåãÉ ááØøáÈÉ . ÓíäÝÐ åÐÇ .
        +ÈÇáÖøÛØ Úáì ÇáãåãÉ Ýí ÇáãäåÌ ÇáÏÑÇÓí, Ýí ÍÇáÉ ÚÏã æÌæÏ Ãì ÚäÕÑ ÓÊÊØáÈ .
        +ÈÅÖÇÝÉ ÇáÚäÇÕÑ . íãßäß Ãä ÊÛíøÑ ÚÏÏ ÇáÚäÇÕÑ ÈÇÓÊÎÏÇã ÔÇÔÉ ÊÍíÑí ÇáãåãÉ, .
        +íãßä ÊõÚóÏøóá ÇáÚäÇÕÑ ãä ÇáÔøÇÔÉ "ÅÏÇÑÉ ÇáãåãÉ" +'; +$string['noteonstudentassessments'] = '{ÑÕÏ ÇáÏÑÌÉ ãä ÇáãÏÑÓ/ ÇáÏÑÌÉ ãä ÇáØÇáÈ}'; +$string['notgraded'] = 'áã íÊã ÑÕÏ ÏÑÌÇÊ ÈÚÏ'; +$string['notitlegiven'] = 'áã íÊã ÚäæäÊå'; +$string['nowpleasemakeyourownassessment'] = 'ÇáÂä ãä ÝÖáß Þã ÈÊÞííã ÇáÚãá ÇáãÞÏã ãä $a +
        áÇÍÙ Ãä ÇÓÊãÇÑÉ ÇáÊøÞííã ãÈÏÇÆíÇ ÇÚØíÊ äÝÓ ÏøÑÌÇÊ
        ÇÓÊãÇÑÉ ÇáØøÇáÈ . íäÈÛí Ãä ÊÚãá Ãíø ÊÚÏíáÇÊ ÊÚÊÞÏ ÖÑæÑíøÉ ÈÚÏ Ðáß
        ÇÖÛØ Úáì ÃÍÏ ÇáÃÒÑÇÑ Ýí ÃÓÝá ÇáÕøÝÍÉ . +'; +$string['numberofassessmentelements'] = 'ÚÏÏ ÇáÊøÚáíÞÇÊ, ÚäÇÕÑ ÇáÊÞííã, ÝÑÞ ÇáÏÑÌÇÊ, ÚÈÇÑÇÊ ÇáãÚíÇÑ Ãæ ÃÕäÇÝ Ýí ÞÇÚÏÉ'; +$string['numberofentries'] = 'ÚÏÏ ÇáãæÇÏ'; +$string['numberofnegativeresponses'] = 'ÚÏÏ ÇáÇÌÇÈÇÊ ÇáÓáÈíÉ'; +$string['onesubmission'] = 'ÊÓáíã æÇÍÏ'; +$string['optionaladjustment'] = 'ÊÚÏíá ÇÎÊíÇÑí'; +$string['overallgrade'] = 'ÇáÏÑÌÉ ÇáÚÇãÉ'; +$string['phase'] = 'ãÑÍáå'; +$string['phase1'] = 'ÃÚÏ ÇáÊãÑíä'; +$string['phase1short'] = 'ÃÚÏ'; +$string['phase2'] = 'ÇáÓãÇÍ áÜ $a ÇáÊÞííãÇÊ æÇáÊÓáíãÇÊ'; +$string['phase2short'] = 'ãÊÇÍ'; +$string['phase3'] = 'ÃÞÝ $a ÇáÊÞííãÇÊ æÇáÊÓáíãÇÊ'; +$string['phase3short'] = 'ãÛáÞ'; +$string['pleasegradetheassessment'] = 'ÇáÑÌÇÁ ÑÕÏ ÏÑÌÉ áÊÞííã åÐÇ ÇáÚãá $a'; +$string['pleasesubmityourwork'] = 'ÇáÑÌÇÁ ÇÓÊÎÏÇã åÐÇ ÇáäãæÐÌ áÊÓáíã Úãáß'; +$string['pleaseusethisform'] = 'ÇáÑÌÇÁ ÊÚÈíÆÉ åÐå ÇáÇÓÊãÇÑÉ ÈÚÏ
        ÇäÊåÇÆß ãä ÇáÊÚáíãÇÊ ÇáãæÖÍ Ýí ÇáÊãÑíä ÇáÊÇáí.'; +$string['pleaseviewtheexercise'] = 'ãä ÝÖáß Þã È ãÚÇíäÉ ÇáÊøãÑíä ÇáÊÇáí æÐáß ÈÇáäÞÑ Úáí ÚäæÇäå. .
        íÌíÈ Úáíß ÇÊÈÇÚ ÇáÊÚáíãÇÊ ÇáÎÇÕÉ ÈåÐÇ ÇáÊøãÑíä . .
        ÚäÏ ÇáÇäÊåÇÁ ãä ÇáÊãÑíä .
        ÈäÌÇÍ ÃäÞÑ Úáì ÑÇÈØ ßáãÉ Þííã ( Ãæ ÇÚÏ ÇáÊÞííã ) .
        ÇáãæÌæÏÉ Ýí ÇáÌåÉ ÇáÇíÓÑì ãä ÇáÚäæÇä . ÈÚÏ ÇáÇäÊåÇÁ ãä åÐÇ ÇáÊøÞííã ÓÊÒæÏ
        ÈÅÑÔÇÏÇÊ ÅÖÇÝíøÉ ÊæÖÍ ÇáÎØæÇÊ ÇáÊÇáíÉ .'; +$string['poor'] = 'ÖÚíÝ'; +$string['present'] = 'ÍÇÖÑ'; +$string['reasonforadjustment'] = 'ÓÈÈ ÇáÊÚÏíá'; +$string['reassess'] = 'ÃÚÏ ÇáÊÞííã'; +$string['resubmissionfor'] = 'ÅÚÇÏÉ ÊÓáíã áÜ $a'; +$string['resubmitnote'] = '*åÐÇ íÚäí Ãäå ÞÏ ÓãÍ áÜ $a ÇáÞíÇã ÈÅÚÇÏÉ ÇáÊÓáíã .
        íãßä ÊÚííä åÐÇ ÇáãÄÔÑ áÃì ÅÚÇÏÉ ÊÞííã æÐáß ÈÇáäÞÑ Úáí
        ÑÇÈØ ÇáÓãÇÍ áÜ $a ÇáÞíÇã ÈÅÚÇÏÉ ÇáÊÓáíã ÇáÒøÑø .
        íÓÊØíÚ ÇáØøÇáÈ ÇáÞíÇã ÈÅÚÇÏÉ ÇáÊÓáíã ÚäÏãÇ íßæä ÇáãÄÔÑÙÇåÑÇð ÚáìÃíø ãä ÊÓáíãÇÊå .'; +$string['rubric'] = 'ÞÇÚÏÉ'; +$string['savedok'] = 'Êã ÇáÍÝÙ '; +$string['saveentries'] = 'ÍÝÙ ÇáãæÇÏ'; +$string['savemyassessment'] = 'ÇÍÝÙ ÊÞííãí'; +$string['saveweights'] = 'ÍÝÙ ÇáÃæÒÇä'; +$string['scale10'] = 'ÇÑÕÏ ãä 10'; +$string['scale100'] = 'ÇÑÕÏ ãä 100'; +$string['scale20'] = 'ÇÑÕÏ ãä 20'; +$string['scalecorrect'] = '2 äÞØÉ ÕÍ / ãÞíÇÓ ÛíÑ ÕÍíÍ'; +$string['scaleexcellent4'] = '4 äÞÇØ ããÊÇÒ/ ãÞíÇÓ ÖÚíÝ ÌÏÇ'; +$string['scaleexcellent5'] = '5 äÞÇØ ããÊÇÒ/ ãÞíÇÓ ÖÚíÝ ÌÏÇ'; +$string['scaleexcellent7'] = '7 äÞÇØ ããÊÇÒ/ ãÞíÇÓ ÖÚíÝ ÌÏÇ'; +$string['scalegood3'] = '3 äÞÇØ ÌíÏ /ãÞíÇÓ ÖÚíÝ'; +$string['scalepresent'] = '2 äÞØÉ ÍÇÖÑ / ãÞíÇÓ ÛÇÆÈ'; +$string['scaleyes'] = '2 äÞØÉ äÚã / áÇ íæÌÏ ãÞíÇÓ'; +$string['specimenassessmentform'] = 'äãæÐÌ ÊÞííã ÇáÚíäÉ'; +$string['studentallowedtoresubmit'] = '$a ÓãÍ áå ÈÅÚÇÏÉ ÇáÊÓáíã'; +$string['studentassessments'] = '$a ÊÞííãÇÊ'; +$string['studentnotallowed'] = '$a áã ÓãÍ áå ÈÅÚÇÏÉ ÇáÊÓáíã'; +$string['studentsubmissions'] = '$a ÊÓáíãÇÊ'; +$string['studentsubmissionsforassessment'] = ' $a ÊÓáíãÇÊ ÇáØÇáÈ ááÊÞííã'; +$string['submission'] = 'ÊÓáíã'; +$string['submissions'] = 'ÊÓáíãÇÊ'; +$string['submissionsnowclosed'] = 'ÇáÊÓáíã ãÛáÞ ÇáÇä - ãæÚÏ ÇáÊÓáíã ÞÏ ÇäÊåÇÁ'; +$string['submitexercisedescription'] = 'Óáã æÕÝ ÇáÊãÑíä'; +$string['submitted'] = 'Êã ÊÓáíãÉ'; +$string['submittedby'] = 'Êã ÊÓáíãÉ ÈæÇÓØÉ'; +$string['suggestedgrade'] = 'ÇáÏÑÌÉ ÇáãÞÊÑÍÉ'; +$string['teacherassessment'] = ' $a ÊÞííã'; +$string['teacherassessmenttable'] = ' $a ÌÏæá ÇáÊÞííã '; +$string['teacherscomment'] = 'ÊÚáíÞÇÊ ÇáãÏÑÓ'; +$string['theexercise'] = 'ÇáÊãÑíä'; +$string['theexerciseandthesubmissionby'] = ' $a ÇáÊãÑíä æÇáÊÓáíã ÈæÇÓØÉ'; +$string['thegradeis'] = ' $a ÇáÏÑÌÉ åí'; +$string['thereisfeedbackfromthe'] = ' $a íæÌÏ ÊÚáíÞ ãä'; +$string['thisisaresubmission'] = 'ÅÚÇÏÉ ÇáÊÓáíã åÐå ÈæÇÓØÉ a . +
        Êã ÇÙåÇÑ ÊÞííãß ááÊÓáíãåã $ ÇáÓøÇÈÞ.
        ÈÚÏ ÇáäøÙÑ Ýí ÇáÊÓáíã ÇáÌÏíÏ, ãä ÝÖáß ÕÍøÍ åÐÇ ÇáÊøÞííã
        æÐáß ÈÇáäÞÑ Úáì ÃÍÏ ÇáÃÒÑÇÑ Ýí ÃÓÝá ÇáÕøÝÍÉ .'; +$string['title'] = 'ÚäæÇä'; +$string['typeofscale'] = 'äæÚ ÇáÞíÇÓ'; +$string['ungradedstudentassessments'] = ' $a áã íÊã ÑÕÏ ÏÑÌÇÊ áÊÞííãÇÊ ÇáØÇáÈ'; +$string['usemaximum'] = 'ÇÓÊÎÏã ÇáÇÞÕì'; +$string['usemean'] = 'ÇÓÊÎÏã ÇáãÊæÓØ'; +$string['verypoor'] = 'ÖÚíÝ ÌÏÇ'; +$string['view'] = 'ÚÑÖ'; +$string['viewassessment'] = 'ÇÚÑÖ ÇáÊÞííã'; +$string['warningonamendingelements'] = 'ÊÍÐíÑ: áÞÏ Êã ÊÓáÈã ÚÏÏ ãä ÇáÊÞííãÇÊ.
        áÇ ÊÞã ÈÊÛíÑ ÚÏÏ ÇáÚäÇÕÑ¡ ÃäæÇÚ ÇáãÞÇííÓ¡ Ãæ ÃæÒÇä ÇáÚäÕÑ.'; +$string['weightederrorcount'] = 'ÇÌãÇáì æÒä ÇáÇÎØÇÁ: $a'; +$string['weightforgradingofassessments'] = 'æÒä ÏÑÌÇÊ ÇáÊÞííãÇÊ'; +$string['weightforteacherassessments'] = 'æÒä áÜ $a ÇáÊÞííãÇÊ'; +$string['weights'] = 'ÇæÒÇä'; +$string['weightssaved'] = 'Êã ÍÝÙ ÇáÇæÒÇä'; +$string['weightsusedforoverallgrade'] = 'ÇáÃæÒÇä ÇáãÓÊÎÏãÉ ááÏÑÌÉ ÇáÇÌãÇáíÉ'; +$string['yourassessment'] = 'ÊÞííãß'; +$string['yourfeedbackgoeshere'] = 'ÊÚáíÞß íæÖÚ åäÇÁ'; +$string['yoursubmission'] = 'ÊÓáíãß'; + +?> diff --git a/lang/ar/forum.php b/lang/ar/forum.php index 9417dd89c91..77496e6abb3 100644 --- a/lang/ar/forum.php +++ b/lang/ar/forum.php @@ -1,5 +1,5 @@ date - $a->name '; $string['configdisplaymode'] = 'ÇáÚÑÖ ÇáÝÊÑÇÖì ááäÞÔÇÊ áæ áã íÊã ÇáÞíÇã ÈÅÎÊÈÇÑ ÇÎÑ'; -$string['configenablerssfeeds'] = 'åÐÇ Óíãßä ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ áßá ÇáãäÊÏíÇÊ. ÓÊÍÊÇÌ ÇáÞíÇã ÈÊÝÚíá ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ íÏæíÇð ãä ÎáÇá ÅÚÏÇÏÇÊ ãá ãäÊÏì.'; $string['configlongpost'] = 'Ãí ãÞÇáÉ ÊÒíÏ Úä åÐÇ ÇáÍÏ (ÈÏæä ÅÖÇÝÉ HTML) ÊÚÊÈÑ Øæíáå'; $string['configmanydiscussions'] = 'ÇáÍÏ ÇáÇÞÕì áÚÏÏ ááãäÇÞÔÇÊ ÇáãÚÑæÖå Ýí ÇáÕÝÍÉ ÇáæÇÍÏ ááãäÊÏì'; $string['configmaxbytes'] = 'ÇáÍÌã ÇáÇÝÊÑÇÖí ÇáÇÞÕì áÌãíÚ ãÑÝÞÇÊ ÇáãäÊÏì Ýí åÐÇ ÇáãæÞÚ (ÚÑÖÉ áãÍÏÏÇÊ ÇáãäåÌ ÇáÏÑÇÓí æÈÚÖ ÇáÇÚÏÇÏÇÊ ÇáÇÎÑì)'; -$string['configreplytouser'] = 'åá íÌÈ ÊÖãííä ÚäæÇä ÇáÈÑíÏ ÇáÅáßÊÑæäí ÇáÎÇÕ ÈÇáãÔÇÑß Ýí ÇáãäÊÏì ÚäÏ ÅÑÓÇá ÇáãÔÇÑßÉ ÈÇáÈÑíÏ ÇáÅáßÊÑæäí¿ íÊÓÊØÚ ÇáãÓÊÎÏãæä ãä ÎáÇá ÇáÎíÇÑÇÊ ÇáãÊæÝÑÉ Ýí ÕÝÍÉ ÇáÓíÑ ÇáÐÇÊíÉ ÌÚá ÚäÇæíä ÈÑíÏåã ÓÑíÉ ÍÊì áæ Êã ÃÚÏÇÏ åÐå ÇáÎÏãÉ ÈÜ (äÚã)'; $string['configshortpost'] = 'Ãí ãÞÇáÉ ÊÍË åÐÇ ÇáÍÏ (ÈÏæä ÅÖÇÝÉ HTML) ÊÚÊÈÑ ÞÕíÑå'; $string['couldnotadd'] = 'ÊÚÐÑ ÅÑÓÇá ãÞÇáÉ äÊíÌÉ ÎØÃ ÛíÑ ãÚÑæÝ '; $string['couldnotdeleteratings'] = 'ÚÐÑÇð! Êã ÊÕäíÝå¡ ÝáÇ íãßä ÍÐÝå '; @@ -26,8 +24,7 @@ $string['delete'] = ' $string['deleteddiscussion'] = 'Êã ÍÐÝ ãæÖæÚ ÇáäÞÇÔ'; $string['deletedpost'] = 'Êã ÍÐÝ åÐå ÇáãÞÇáÉ'; $string['deletesure'] = 'åá ÃäÊ ãÊÃßÏ Ãäß ÊÑíÏ ÅáÛÇÁ ÍÐÝ åÐå ÇáãÔÇÑßÉ¿'; -$string['digestmailheader'] = 'åÐÇ ãáÎÕß Çáíæãí ááãÔÇÑßÇÊ ÇáÌÏíÏ ãä ãäÊÏíÇÊ $a->sitename. áÊÛííÑ ÊÝÖíáÇÊß ÇáÈÑíÏíÉ ÇÐåÈ Åáì $a->userprefs'; -$string['digestmailprefs'] = 'ÓíÑÊß ÇáÐÇÊíÉ'; +$string['digestmailprefs'] = 'áãÍÊß ÇáÔÎÕíÉ'; $string['digestmailsubject'] = '$a ãáÎÕ ãäÊÏì'; $string['digestsentusers'] = 'ÇáãáÎÕÇÊ ÇÑÓáÊ ÈäÌÇÍ ÈÇáÈÑíÏ ÇáÅáßÊÑæäí Åáì $a ÇáãÓÊÎÏãíä'; $string['discussion'] = 'äÞÇÔ'; @@ -43,7 +40,6 @@ $string['editing'] = ' $string['emptymessage'] = 'ËãÉ ÎØÃ æÞÚ Ýí ãÞÇáß ÇáãÑÓá. ÑÈãÇ ÊÑßÊå ÝÇÑÛÇ Ãæ Ãä ÍÌã ÇáãáÝ ÇáãÑÝÞ ÃßÈÑ ãä ÇááÇÒã¡ áÐÇ áã íÊã ÍÝÙ ÊÛííÑÇÊß'; $string['everyonecanchoose'] = 'ÇáÌãíÚ íãßäå ÇáÇÎÊíÇÑ áíÕÈÍ ãÔÊÑßÇ'; $string['everyoneissubscribed'] = 'ÇáÌãíÚ ãÔÊÑß Ýí åÐÇ ÇáäÞÇÔ'; -$string['existingsubscribers'] = 'ÇáãÔÇÑßíä ÇáãæÌæÏíä'; $string['forcesubscribe'] = 'ÅÌÈÇÑ ÇáÌãíÚ ááÇÔÊÑÇß'; $string['forcesubscribeq'] = 'åá ÇáÇÔÊÑÇß ÅÌÈÇÑí Úáì ÇáÌãíÚ¿'; $string['forum'] = 'ÇáãäÊÏì'; @@ -73,7 +69,7 @@ $string['movethisdiscussionto'] = ' $string['namenews'] = 'ãäÊÏì ÇáÃÎÈÇÑ'; $string['namesocial'] = 'ãäÊÏì ÇÌÊãÇÚí'; $string['nameteacher'] = 'ãäÊÏì ÇáãÏÑÓ'; -$string['newforumposts'] = 'ãÞÇáÇÊ ÇáãäÊÏì ÇáÌÏíÏÉ'; +$string['newforumposts'] = 'ãÚÇáã ÇáãäÊÏì ÇáÌÏíÏ'; $string['nodiscussions'] = 'áÇ íæÌÏ ãæÖæÚ ááãäÇÞÔÉ Ýí åÐÇ ÇáãäÊÏì'; $string['noguestpost'] = 'ÚÐÑÇð! ÛíÑ ãÓãæÍ ááÖíæÝ ÈÅÑÓÇá ãÞÇáÇÊ'; $string['nomorepostscontaining'] = 'áÇÊæÌÏ ãÔÇÑßÇÊ ÅÖÇÝíÉ ÊÍÊæí Úáì \' $a\' Êã ÇßÊÔÇÝåÇ'; @@ -91,7 +87,7 @@ $string['openmode1'] = ' $string['openmode2'] = 'íÓãÍ ÈÇáãäÇÞÔÇÊ æÇáÑÏæÏ'; $string['parent'] = 'ÇÚÑÖ ÇáÇÕá'; $string['parentofthispost'] = 'ÇÕá ÇáãÞÇá'; -$string['postadded'] = 'Êã ÅÖÇÝÉ ãÞÇáß ÈäÌÇÍ.
        Úáíß $a Ãä ÊÝÊÍå ááÊÚÏíá ÅÐÇ ÃÑÏÊ ÅÏÎÇá Ãí ÊÛííÑÇÊ.'; +$string['postadded'] = 'Êã ÅÖÇÝÉ ãÞÇáß ÈäÌÇÍ.

        Úáíß $a Ãä ÊÝÊÍå ááÊÚÏíá ÅÐÇ ÃÑÏÊ ÅÏÎÇá Ãí ÊÛííÑÇÊ.'; $string['postincontext'] = 'ÔÇåÏ åÐÇ ÇáãÞÇá Ýí ÇáÓíÇÞ'; $string['postmailinfo'] = 'åÐå äÓÎÉ ãä ÑÓÇáÉ ÃÑÓáÊ áãæÞÚ $a .áÅÖÇÝÉ ÑÏß Úä ØÑíÞ åÐÇ ÇáãæÞÚ¡ ÇÖÛØ åÐå ÇáÑÇÈØÉ:'; $string['postrating1'] = 'ÊÙåÑ ãåÇÑÊå ãäÝÑÏÇ'; @@ -100,19 +96,17 @@ $string['postrating3'] = ' $string['posts'] = 'ãÔÇÑßÇÊ'; $string['posttoforum'] = 'ãÔÇÑßÉ Ýí ãäÊÏì'; $string['postupdated'] = 'Êã ÊÍÏíË ãÞÇáß ÇáãÑÓá'; -$string['potentialsubscribers'] = 'ÇáãÔÇÑßíä ÇáãÍÊãáæä'; -$string['processingdigest'] = 'ÅÚÏÇÏ ÇáãÎáÕ ÇáÈÑíÏí ááãÓÊÎÏã $a'; +$string['processingdigest'] = 'ÅÚÏÇÏ ÇáãáÕ ÇáÈÑíÏí ááãÓÊÎÏã $a'; $string['processingpost'] = 'ãÚÇáÌÉ ÇáÑÓÇáÉ $a'; $string['prune'] = 'ÌÒÇÁ'; -$string['prunedpost'] = 'ÃäÔÆ äÞÇÔ ÌÏíÏ áåÐå ÇáãÔÇÑßÉ'; $string['pruneheading'] = 'ÌÒÇÁ ÇáãÔÇÑßÉ æÇäÞáåÇ Åáì äÞÇÔ ÌÏíÏ'; $string['rate'] = 'ÕäÝ'; $string['rating'] = 'ÊÕäíÝ'; $string['ratingeveryone'] = 'ÇáÌãíÚ íÓÊØíÚ ÇáÊÕäíÝ'; $string['ratingno'] = 'áÇ íæÌÏ ÊÕäíÝ'; -$string['ratingonlyteachers'] = 'ÝÞØ $a íÊÓØíÚ ÊÕäíÝ ÇáãÔÇÑßÇÊ'; -$string['ratingpublic'] = '$a íÓÊØíÚ ãÔÇåÏÉ ÊÕäíÝ Çáßá'; -$string['ratingpublicnot'] = '$a ãÔÇÑß íÓÊØíÚ ãÔÇåÏÉ ÊÕäíÝå ÝÞØ'; +$string['ratingonlyteachers'] = 'ÇáãÏÑÓæä ÝÞØ íÊÓØíÚ ÊÕäíÝ ÇáãÞÇáÇÊ'; +$string['ratingpublic'] = 'Çáßá íÓÊØíÚ ãÔÇåÏÉ ÊÕäíÝ Çáßá'; +$string['ratingpublicnot'] = 'ßá ãÔÇÑß íÓÊØíÚ ãÔÇåÏÉ ÊÕäíÝå ÝÞØ'; $string['ratings'] = 'ÊÕäíÝÇÊ'; $string['ratingssaved'] = 'Êã ÍÝÙ ÇáÊÕäíÝÇÊ'; $string['ratingsuse'] = 'ÇÓÊÎÏã ÇáÊÕäíÝ'; @@ -124,8 +118,6 @@ $string['repliesmany'] = '$a $string['repliesone'] = ' $a ÑÏ ÍÊì ÇáÇä'; $string['reply'] = 'ÑÏ'; $string['replyforum'] = 'ÑÏ Úáì ÇáãäÊÏì'; -$string['rsssubscriberssdiscussions'] = 'ÇÚÑÖ ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ áÜáãäÇÞÔÇÊ \'$a\''; -$string['rsssubscriberssposts'] = 'ÇÚÑÖ ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ ááãÔÇÑßÇÊ \'$a\''; $string['search'] = 'ÈÍË'; $string['searchforums'] = 'ÈÍË ÇáãäÊÏíÇÊ'; $string['searcholderposts'] = 'ÇáÈÍË Úä ãÔÇÑßÇÊ ÞÏíãÉ'; @@ -148,9 +140,7 @@ $string['subscriptions'] = ' $string['unsubscribe'] = 'ÅáÛÇÁ ÇáÇÔÊÑÇß Ýí åÐÇ ÇáãäÊÏì'; $string['unsubscribed'] = 'ÅáÛÇÁ ÇáÇÔÊÑÇß'; $string['unsubscribeshort'] = 'ÇáÛí ÇáÇÔÊÑÇß'; -$string['yesforever'] = 'äÚã¡ ááÇÈÏ'; -$string['yesinitially'] = 'äÚã¡ ãÈÏÆíÇ'; -$string['youratedthis'] = 'áÞÏ ÞãÊ ÈÊÕäÝ åÐÇ'; +$string['youratedthis'] = 'ÃäÊ ÕäÝÊ åÐÇ'; $string['yournewtopic'] = 'ãæÖæÚß ÇáÌÏíÏ ááãäÇÞÔÉ'; $string['yourreply'] = 'ÑÏß'; diff --git a/lang/ar/glossary.php b/lang/ar/glossary.php index 1fec7c54fa4..de704fdd083 100644 --- a/lang/ar/glossary.php +++ b/lang/ar/glossary.php @@ -1,5 +1,5 @@ ÊÚÈÆÉ ÍÞáí ÇáãÝåæã æ ÇáÊÚÑíÝ ÅÌÈÇÑí'; +$string['explainaddentry'] = 'ÃÖÝ ãÕØáÍ ÌÏíÏÉ Åáì ÇáãÓÑÏ ÇáÍÇáí.
        ÊÚÈÆÉ ÍÞáí ÇáãÝåæã æ ÇáÊÚÑíÝ ÅÌÈÇÑí'; $string['explainall'] = 'ÃÚÑÖ ÌãíÚ ÇáãÕØáÇÍÇÊ Ýí ÕÝÍÉ æÇÍÏÉ'; $string['explainalphabet'] = 'ÇÓÊÚÑÖ ÇáãÓÑÏ ÈÇÓÊÎÏÇã ÇáÝåÑÓÊ'; -$string['explainexport'] = 'áÞÏ Êã ÅäÔÇÁ ãáÝ.
        Þã ÈÊäÒíáÉ æÇÍÊÝÙ Èå Ýí ãßÇä Ããä. ÊÓØíÚ ÇÓÊíÑÇÏå Åáì åÐÇ ÇáãäåÌ ÇáÏÑÇÓí Ãæ ÛíÑå ãÊì ÔÆÊ '; -$string['explainimport'] = 'íÌÈ Úáíß ÊÍÏíÏÇáãáÝ ÇáãÓÊæÑÏ æÊÚÑíÝ ãÚÇííÑ ÚãáíÉ ÇáÅÓÊíÑÇÏ.
        Óáã ØáÈß æÞã ÈãÑÇÌÚÉ ÇáäÊÇÆÌ.'; +$string['explainexport'] = 'áÞÏ Êã ÅäÔÇÁ ãáÝ.
        Þã ÈÊäÒíáÉ æÇÍÊÝÙ Èå Ýí ãßÇä Ããä. ÊÓØíÚ ÇÓÊíÑÇÏå Åáì åÐÇ ÇáãäåÌ ÇáÏÑÇÓí Ãæ ÛíÑå ãÊì ÔÆÊ '; +$string['explainimport'] = 'íÌÈ Úáíß ÊÍÏíÏÇáãáÝ ÇáãÓÊæÑÏ æÊÚÑíÝ ãÚÇííÑ ÚãáíÉ ÇáÅÓÊíÑÇÏ.

        Óáã ØáÈß æÞã ÈãÑÇÌÚÉ ÇáäÊÇÆÌ.'; $string['explainspecial'] = 'ÇÚÑÖ ÇáãÕØáÇÍÇÊ ÇáÊì áÇ ÊäÊã Åáì ÍÑÝ'; $string['exportedentry'] = 'Êã ÊÕÏíÑ ÇáãÕØáÍ'; $string['exportedfile'] = 'Êã ÊÕÏíÑ ÇáãáÝ'; @@ -104,7 +99,6 @@ $string['filetoimport'] = ' $string['fillfields'] = 'ÍÞæá ÇáãÝåæã æÇáÊÚÑíÝ ÇÌÈÇÑíÉ'; $string['filtername'] = 'ÇáÑÈØ ÇáÂáí ááãÓÑÏ'; $string['fullmatch'] = 'ÞÇÑä ßá ÇáßáãÇÊ ÝÞØ'; -$string['globalglossary'] = 'ãÓÑÏ ÔÇãá'; $string['glossaryleveldefaultsettings'] = 'ÇáÅÚÏÇÏ ÇáÅÝÊÑÇÖí ááãÓÑÏ'; $string['glossarytype'] = 'äæÚ ÇáãÓÑÏ'; $string['glosssaryexported'] = 'Êã ÊÕÏíÑ ÇáãÓÑÏ'; @@ -131,7 +125,6 @@ $string['notcategorised'] = ' $string['numberofentries'] = 'ÚÏÏ ÇáãÕØáÇÍÇÊ'; $string['onebyline'] = '(æÇÍÏÉ Ýí ÇáÓØÑ)'; $string['printerfriendly'] = 'äÓÎÉ ØÈÇÚÉ'; -$string['printviewnotallowed'] = 'ãÚÇíäÉ ÇáØÈÇÚÉ ÛíÑ ãÊÇÍÉ'; $string['question'] = 'ÓÄÇá'; $string['rate'] = 'ÕäÝ'; $string['rating'] = 'ÊÕäíÝ'; @@ -144,7 +137,6 @@ $string['ratingsuse'] = ' $string['ratingtime'] = 'ÇÍÕÑ ÊÕäíÝÇÊ ÇáãÕØáÇÍÇÊ Öãä äØÇÞ åÐå ÇáÊæÇÑíÎ'; $string['rejectedentries'] = 'ÇáãÕØáÇÍÇÊ ÇáãÑÝæÖÉ'; $string['rejectionrpt'] = 'ÊÞÑíÑ ÇáÑÝÖ'; -$string['rsssubscriberss'] = 'ÃÚÑÖ ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ ááãÝÇåíã \'$a\''; $string['searchindefinition'] = 'ÈÍË äÕí ßÇãá'; $string['secondaryglossary'] = 'ãÓÑÏ ËÇäæí'; $string['sendinratings'] = 'ÇÑÓá ÊÕäíÝí ÇáÇÎíÑ'; diff --git a/lang/ar/help/assignment/assignmenttype.html b/lang/ar/help/assignment/assignmenttype.html index df87d21bbb1..fccfd4b8ce1 100755 --- a/lang/ar/help/assignment/assignmenttype.html +++ b/lang/ar/help/assignment/assignmenttype.html @@ -1,4 +1,4 @@ -

        ÃäæÇÚ ÇáæÇÌÈ

        +

        ÃäæÇÚ ÇáæÇÌÈ

        åäÇß ÚÏÉ ÃäæÇÚ ááæÇÌÈÇÊ.

        äÔÇØ ÈÏæä ÅÊÕÇá - åÐÇ ÇáäæÚ ãä ÇáæÇÌÈÇÊ ãÝíÏ ÚäÏãÇ íßæä ÇÏÇÁ ÇáæÇÌÈ ÓíÊã ÎÇÑÌ ãæÏá. ÇáØáÇÈ íÓÊØíæÚ ãÔÇåÏÉ æÕÝ ÇáæÇÌÈ¡ æáßä áÇ diff --git a/lang/ar/help/assignment/index.html b/lang/ar/help/assignment/index.html index 69e36afacff..b03546d54ce 100755 --- a/lang/ar/help/assignment/index.html +++ b/lang/ar/help/assignment/index.html @@ -1,5 +1,9 @@

        ÇáæÇÌÈÇÊ

        \ No newline at end of file diff --git a/lang/ar/help/assignment/mods.html b/lang/ar/help/assignment/mods.html index e4d531d7860..e21cee68772 100755 --- a/lang/ar/help/assignment/mods.html +++ b/lang/ar/help/assignment/mods.html @@ -1,5 +1,5 @@ -

         ÇáæÌÈÇÊ

        -

        íÓÊØÚ ÇáãÏÑÓ ãä ÎáÇá ÇáæÇÌÈÇÊ ÊÍÏíÏ ÇáæÇÌÈ ÇáãØáæÈ ãä ÇáØáÇÈ +

         ÇáæÌÈÇÊ

        +

        íÓÊØÚ ÇáãÏÑÓ ãä ÎáÇá ÇáæÇÌÈÇÊ ÊÍÏíÏ ÇáæÇÌÈ ÇáãØáæÈ ãä ÇáØáÇÈ ÊÍÖíÑå ÈãÍÊæì ÑÞãí (Ýí Çí åíÆÉ) æÇáÞíÇã ÈÊÓáíãå ÈæÇÓØÉ ÊÍãíá ÇáãáÝ Ýí ÇáÎÇÏã. äãÇÐÌ ÇáæÇÌÈÇÊ ÊÖãä ÇáãÞÇáÇÊ¡ ÇáãÔÇÑíÚ ÇáÊÚáíãíÉ¡ ÇáÊÞÇÑíÑ¡ ÅáÎ. åÐå ÇáæÍÏå -ÊÍÊæí Úáì ÅãßÇäíÇÊ ÊÕÍíÍ ÇáæÇÌÈÇÊ æÅÚØÇÆåÇ ÇáÏÑÌÇÊ ÇáãÓÊÍÞÉ.

        +ÊÍÊæí Úáì ÅãßÇäíÇÊ ÊÕÍíÍ ÇáæÇÌÈÇÊ æÅÚØÇÆåÇ ÇáÏÑÌÇÊ ÇáãÓÊÍÞÉ.

        diff --git a/lang/ar/help/assignment/resubmit.html b/lang/ar/help/assignment/resubmit.html index 205bf14145c..3febe5f25c4 100755 --- a/lang/ar/help/assignment/resubmit.html +++ b/lang/ar/help/assignment/resubmit.html @@ -1,9 +1,9 @@ -

        ÅÚÇÏÉ ÊÓáíã ÇáæÇÌÈÇÊ

        -

        Ýí ÇáæÖÚ ÇáÇÝÊÑÇÖí¡ ÈãÌÑÏ ãÇ íÞæã ÇáãÏÑÓ ÈÊÕÍíÍ +

        ÅÚÇÏÉ ÊÓáíã ÇáæÇÌÈÇÊ

        +

        Ýí ÇáæÖÚ ÇáÇÝÊÑÇÖí¡ ÈãÌÑÏ ãÇ íÞæã ÇáãÏÑÓ ÈÊÕÍíÍ ÇáæÇÌÈÇÊ æÅÚØÇÆåÇ ÇáÏÑÌÇÊ ÇáãÓÊÍÞÉ¡ áä íÊãßä ÇáØáÇÈ ÅÚÇÏÉ ÊÓáíãåÇ.

        -

        Ýí ÍÇáÉ ÊÛíÑ ÇáæÖÚ ÇáÇÝÊÑÇÖí¡ æÊÔÛíá åÐÇ ÇáÎíÇÑ¡ +

        Ýí ÍÇáÉ ÊÛíÑ ÇáæÖÚ ÇáÇÝÊÑÇÖí¡ æÊÔÛíá åÐÇ ÇáÎíÇÑ¡ ÓíÊãßä ÇáØáÇÈ ãä ÅÚÇÏÉ ÊÓáíã ÇáæÇÌÈÇÊ ÇáÊí Êã ÊÕÍíÍåÇ æÑÕÏ ÏÑÌÇÊåÇ áÊÕÍÍ ãÑÉ ÃÎÑì ææÖÚ ÏÑÌÇÊ ÌÏíÏÉ áåÇ. åÐÇ ÑÈãÇ íßæä ãÝíÏÇð áæ ÑÛÈ ÇáãÏÑÓ ÊÔÌíÚ ÇáØáÇÈ ÇáÞíÇã ÈÚãá ÇÝÖá ãä ÇáÓÇÈÞ ÈØÑíÞÉ ÇáÊßÑÇÑ.

        -

        ÈÇáØÈÚ¡ åÐÇ ÇáÎíÇÑ ÛíÑ ãäÇÓÈ ááæÇÌÈÇÊ ÇáÊí ÊÊã ÈÏæä +

        ÈÇáØÈÚ¡ åÐÇ ÇáÎíÇÑ ÛíÑ ãäÇÓÈ ááæÇÌÈÇÊ ÇáÊí ÊÊã ÈÏæä ÅÊÕÇá.

        \ No newline at end of file diff --git a/lang/ar/help/attendance/mods.html b/lang/ar/help/attendance/mods.html index 97f25865e4b..271109e8252 100755 --- a/lang/ar/help/attendance/mods.html +++ b/lang/ar/help/attendance/mods.html @@ -1,2 +1,2 @@ -

         ÇáÍÖæÑ

        -

        Êãßäß åÐå ÇáæÍÏå ãä ÊÓÌíá ÍÖæÑ ßá ãÔÇÑß áÍÏË ÎÇÕ.

        +

         ÇáÍÖæÑ

        +

        Êãßäß åÐå ÇáæÍÏå ãä ÊÓÌíá ÍÖæÑ ßá ãÔÇÑß áÍÏË ÎÇÕ.

        diff --git a/lang/ar/help/book/faq.html b/lang/ar/help/book/faq.html deleted file mode 100644 index 0457a3b6333..00000000000 --- a/lang/ar/help/book/faq.html +++ /dev/null @@ -1,42 +0,0 @@ - - -

        ÃÓÆáÉ ãÊßÑÑÉ Úä ÇáßÊÈ

        - -
        -
        áãÇÐÇ ãÓÊæííä ÝÞØ¿
        -
        ÈÕÝå ÚÇã¡ ãÓÊæíä ááßÊÈ ßÇÝíå¡ áÂä ÃßËÑ ãä Ðáß ÓíÄÏí - Åáì ãÓÊäÏÇÊ ÑÏíÆÉ ÇáÈäíÉ.  ÕããÊ æÍÏÉ ÇáßÊÇÈ áÅäÔÇÁ ãæÇÏ ÏÑÇÓíÉ ÞÕíÑÉ - ÊÊßæä ãä ÚÏÉ ÕÝÍÇÊ¡ ááãÓÊäÏÇÊ ÈÕÝÍÇÊ ßËíÑÉ¡ ãä ÇáÃÝÖá ÇÓÊÎÏÇã ÊäÓíÞ (PDF). - ÃÓåá ØÑíÞÉ áÅäÔÇÁ ãÓÊäÏÇÊ (PDF) åæ ÇÓÊÎÏÇã - ÇáØÇÈÚÇÊ ÇáæÇÞÚíÉ (äÙÑ: PDFCreator, PDF -Factory, Adobe Acrobat)
        -
      • -
        -
        åá íÓÊØíÚ ÇáØáÇÈ ÇáÞíÇã ÈÊÍÑíÑ ÇáßÊÈ
        -
        ÇáãÚáãæä ÝÞØ ÓÊØíÚæä ÃäÔÇÁ æÊÍÑíÑ ÇáßÊÈ. áÇ ÊæÌÏ - Ãí ÎØØ ãÓÊÞÈáíÉ áÊÒæíÏ æÍÏÉ ÇáßÊÇÈ ÈÅãßÇäíÉ ÌÚá ÇáØáÇÈ ÞÇÏÑíä Úáì ÊÍÑíÑ - ÇáßÊÈ.¡ æáßä ÑÈãÇ ÔÎÕ ãÇ ÓíäÔÆ æÍÏÉ ááØáÇÈ ãÔÇÈå (áÍÞíÈÉ ÇáãÓÊäÏÇÊ). - ÇáåÏÝ ÇáÑÆíÓ ãä æÍÏÉ ÇáßÊÇÈ ÈåÐÇ ÇáÔßá åæ ÌÚáåÇ ÛíÑ ãÚÞÏÉ.
        -
        -
      • -
        -


        -
        ßíÝ ÃÊãßä ãä ÇáÈÍË ÎáÇá ÇáßÊÈ¿
        -
        Ýí ÇáæÞÊ ÇáÑÇåä ÊæÌÏ ØÑíÞÉ æÇÍÏÉ ááÞíÇã ÈÚãáíÉ ÇáÈÍË¡ - æÐáß ãä ÎáÇá ÃÑ ÇáÈÍË ÇáãæÌæÏ Ýí ÇáãÊÕÝÍ. ÇáÈÍË ÇáÔÇãá ãÊæÝÑ ÝÞØ Ýí ãäÊÏíÇÊ - ãæÏá. Óíßæä Ôí ÌÏíÏ æÌæÏ ÎÏãÉ ÈÍË áßá ÇáãæÇÑÏ æÇáæÍÏÇÊ ÇáãÊæÝÑÉ¡ åá ãä - ãÊØæÚíä ááÞíÇã ÈÅÚÏÇÏ åÐå ÇáÎÏãÉ¿
        -

        -
      • -

        ÓØÑ æÇÍÏ áÇ íÓÊæÚÈ ÇáÚäÇæíä.

        -
        ÅãÇ Ãä ÊÚíÏ ÕíÇÛÉ ÇáÚäÇæíä Ãæ ÊØáÈ ãä ãÏíÑ ÇáãæÞÚ ÊÛíÑ ÓÚÉ ÍÞá ÞÇÆãÉ - ÇáãÍÊæíÇÊ æÇáÊí Êã ÊÚÑíÝåÇ áßá ÇáßÊÈ Ýí ÕÝÍÉ ÅÚÏÇÏÇÊ æÍÏÉ ÇáßÊÇÈ.
        -
        -
      • -
        \ No newline at end of file diff --git a/lang/ar/help/book/index.html b/lang/ar/help/book/index.html deleted file mode 100644 index 856bc86d529..00000000000 --- a/lang/ar/help/book/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - -

        æÍÏÉ ÇáßÊÇÈ

        - - diff --git a/lang/ar/help/book/mods.html b/lang/ar/help/book/mods.html deleted file mode 100644 index d90764fcd2f..00000000000 --- a/lang/ar/help/book/mods.html +++ /dev/null @@ -1,5 +0,0 @@ -

         ßÊÈ

        -
          -

          æÍÏÉ ÇáßÊÇÈ åí ÚÈÇÑÉ Úä æÍÏÉ ãÈÓØÉ áÅäÔÇÁ ãæÇÏ ÏÑÇÓíÉ -ãßæäÉ ãä ÚÏÉ ÕÝÍÇÊ.

          -
        \ No newline at end of file diff --git a/lang/ar/help/book/numberingtype.html b/lang/ar/help/book/numberingtype.html deleted file mode 100644 index 69571a04287..00000000000 --- a/lang/ar/help/book/numberingtype.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

        ÊÑÞíã ÇáÝÕæá

        - -

        íæÌÏ ÚÏÏ ãä ÃäæÚ ÇáÊÑÞíã ÇáãÚÏÉ ãÓÈÞÇð:

        ÈÏæä ÊÑÞíã:

        -

        None - chapter and subchapter titles are not formatted at all, use -if you want to define special numbering styles. For example letters: in chapter -title type "A First Chapter", "A.1 Some Subchapter",...

        - -

        Numbers - chapters and subchapters are numbered (1, 1.1, 1.2, 2, -...)

        - -

        Bullets - subchapters are indented and displayed with bullets.

        - -

        Indented - subchapters are indented.

        diff --git a/lang/ar/help/book/summary.html b/lang/ar/help/book/summary.html deleted file mode 100644 index af3ea433d9b..00000000000 --- a/lang/ar/help/book/summary.html +++ /dev/null @@ -1,7 +0,0 @@ - - -

        ãáÎÕ ÇáÞÑÇÁÉ

        - -

        ÇáãáÎÕ åæ ÚÈÇÑÉ Úä æÕÝ ÞÕíÑ ÌÏÇð ááßÊÇÈ.

        - -

        áÇ ÊÞã ÈßÊÇÈÉ æÕÝ ãØæá åäÇÁ!

        \ No newline at end of file diff --git a/lang/ar/help/cookies.html b/lang/ar/help/cookies.html deleted file mode 100644 index c4c39fd9fc1..00000000000 --- a/lang/ar/help/cookies.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

        ßæßíÒ

        - -

        íÓÊÎÏã ÇáãæÞÚ äæÚíä ãä ÇáßæßíÒ.

        -

        ÇáÃåã äæÚ ãäåãÇ åæ ÌáÓÊ Çáßæßí¡ ÇáÊí ÊÏÚì ÌáÓÊ ãæÏíá. -ááÍÝÇÙ Úáì ÇáÇÓÊãÑÇÑ Ýí ÏÎæáß  Åáì ãæÏíá æÇáÊäÞá ãä ÕÝÍÉ Åáì ÃÎÑ¡ íÌÈ -Úáíß ÇáÓãÇÍ ÈÌáÓÇÊ ÇáßæßíÒ ãä ÎáÇá ÅÚÏÇÏÇÊ ãÊÕÝÍ ÇáÅäÊÑäÊ ÇáÎÇÕ Èß. ÚäÏ ÎÑæÌ ãä -ãæÏá Ãæ ÅÛáÇÞß ááãÊÕÝÍ  ÓÊÍÐÝ ÌáÓÇÊ ÇáßæßíÒ (ãä ãÊÕÝÍß æãä ÇáãÒæÏ).

        -

        ÇáäæÚ ÇáÃÎÑ ãä Çáßæßí åæ ÝÞØ áÅÚØÇÁ äæÚ ãä ÇáÑÇÍÉ -ááãÓÊÎÏãíä¡ ÚÇÏÉ íÏÚì ãæÏáÏ. ãåÇãå åí ÊÐßÑ ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ ãä -ÎáÇá ãÊÕÝÍß. åÐÇ íÚäí Ãä Ýí ßá ãÑ ÊÑÛÈ ÇáÏÎæá Åáì ãæÏá ÓÊÌÏ ÇÓã ÇáãÓÊÎÏã æßáãÉ -ÇáãÑæÑ ãÍÝæÙÉ Ýí ãÊÕÝÍß. ãä ÇáÃÝÖá ÑÝÖ¡ æÚÏã Êãßíä åÐÇ ÇáäæÚ ãä ÇáßæßíÒ - ÊÍÊÇÌ -ßÊÇÈÉ ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ ÚäÏ ÏÎæáß áãæÏá ßá ãÑÉ.

        - diff --git a/lang/ar/help/courseavailability.html b/lang/ar/help/courseavailability.html deleted file mode 100644 index e411129e13b..00000000000 --- a/lang/ar/help/courseavailability.html +++ /dev/null @@ -1,10 +0,0 @@ - - -

        ÅÊÇÍÉ ÇáãäåÌ ÇáÏÑÇÓí

        -

        åÐÇ ÇáÎíÇÑ íÓãÍ áß ÈÅÎÝÇÁ ãäåÌß ÇáÏÑÇÓí ÊãÇãÇð.

        -

        áä íÙåÑ åÐÇ ÇáãäåÌ Öãä ÞÇÆãÉ ÇáãäÇåÌ¡ ÅáÇ áãÚáãæä ÇáãäåÌ äÝÓå æ -ááãÏÑÇÁ.

        -

        ÍÊì æáæ ÍÇæá ÇáØáÇÈ ÇáÏÎæá Úáì ÇáãäåÌ ÇáÏÑÇÓí ãÈÇÔÑÉ ãä ÎáÇá -ØÈÇÚÉ ãÓÇÑå Ýí ÇáãÊÕÝÍ ÝáÇ íÓÊØíÚæä.

        - - diff --git a/lang/ar/help/coursecategory.html b/lang/ar/help/coursecategory.html deleted file mode 100644 index a28a222ccb3..00000000000 --- a/lang/ar/help/coursecategory.html +++ /dev/null @@ -1,11 +0,0 @@ -

        Course Categories

        - -

        Your Moodle administrator may have set up several - course categories.

        - -

        For example, "Science", "Humanities", "Public Health" etc

        - -

        Choose the one most applicable for your course. This - choice will affect where your course is displayed on the - course listing and may make it easier for students to - find your course.

        diff --git a/lang/ar/hotpot.php b/lang/ar/hotpot.php deleted file mode 100644 index f4c2d236a28..00000000000 --- a/lang/ar/hotpot.php +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/lang/ar/install.php b/lang/ar/install.php index 2969304c1f4..bc0b1dc0f8f 100644 --- a/lang/ar/install.php +++ b/lang/ar/install.php @@ -1,46 +1,21 @@ íÊØáÈ ãæÏá Úáì ÇáÇÞá ÇáÃÕÏÇÑ 4.1.0 áÜ PHP

        -

        ÇäÊ ÊÓÊÎÏã ÇáÃÕÏÇÑ $a

        -

        íÌÈ Úáíß ÊÑÞíÉ PHP Ãæ ÇáÇäÊÞÇá Åáì ãÓÊÙíÝ ÃÎÑ áÏíå ÃÕÏÇÑ ÇÌÏ áÜ PHP.

        '; -$string['safemode'] = 'æÖÚ ÇáÇãÇä'; -$string['safemodeerror'] = 'ãä Çáããßä Çä ãæÏá íæÇÌå ãÔÇßá ÚäÏãÇ íßæä æÖÚ ÇáÇãÇä äÔØ'; -$string['sessionautostart'] = 'ÇáÈÏÁ ÇáÂáí ááÌáÓÉ'; -$string['sessionautostarterror'] = 'íÌÈ Ãä íßæä åÐÇ ãÚØá'; -$string['sessionautostarthelp'] = '

        íÊØáÈ ãæÏá áÏÚã ÇáÌáÓÇÊ æÈÏæäåÇ áÇ íÓÊØÚ ÇáÚãá.

        -

        .íãßä Êãßíä ÇáÌáÓÇÊ ãä ÎáÇá ãáÝ php.in ...ÇÈÍË Úä session.auto_start

        '; $string['wwwroot'] = 'WWW'; $string['wwwrooterror'] = 'ÅÚÏÇÏ \'WWW\' ÛíÑ ÕÍíÍ'; diff --git a/lang/ar/journal.php b/lang/ar/journal.php index d743830e162..37de4c8dce7 100644 --- a/lang/ar/journal.php +++ b/lang/ar/journal.php @@ -1,35 +1,35 @@ -teacher ÞÇã íæÖÚ ÈÚÖ ÇáÊÕÍíÍÇÊ Úáì ãÇÏÉ ãÐßÑÊß ÇáãÓáãÉ áÜ \'$a->journal\' -ÊÓÊØíÚ ãÔÇåÏÊåÇ ãÑÝÞÉ ãÚ ãÇÏÉ ãÐßÑÊß: $a->url -'; -$string['journalmailhtml'] = '$a->teacher ÞÇã ÈæÖÚ ÈÚÖ ÇáÊÕÍíÍÇÊ Úáì ãÇÏÉ ãÐßÑÊß \'$a->journal\'

        - íãßäß ãÔÇåÏÊåÇ ãÑÝÞÉ ãÚ áãÇÏÉ ãÐßÑÊßurl\">journal entry.'; -$string['journalname'] = 'ÇÓã ÇáãÐßÑÉ'; -$string['journalquestion'] = 'ÓÄÇá ÇáãÐßÑÉ'; -$string['journalrating1'] = 'áíÓ ãÞäÚÇ'; -$string['journalrating2'] = 'ãÞäÚÇ'; -$string['journalrating3'] = 'ÎÇÑÌ ÇáäØÇÞ'; -$string['modulename'] = 'ãÐßÑÉ'; -$string['modulenameplural'] = 'ãÐßÑÇÊ'; -$string['newjournalentries'] = 'ãÏÎáÇÊ ãÐßÑÉ ÌÏíÏÉ'; -$string['noentry'] = 'áÇ íæÌÏ ãÏÎáÇÊ'; -$string['noratinggiven'] = 'áÇ ÊæÌÏ ÊÕäíÝÇÊ ãÍÏÏÉ'; -$string['notopenuntil'] = 'åÐå ÇáãÐßÑÉ áä ÊÝÊÍ ÍÊì'; -$string['notstarted'] = 'Åäß áã ÊÈÏÇ åÐå ÇáãÐßÑÉ ÍÊì ÇáÂä'; -$string['overallrating'] = 'ÛÇáÈíÉ ÇáÊÕäíÝÇÊ'; -$string['rate'] = 'ÕäÝ'; -$string['saveallfeedback'] = 'ÃÍÝÙ ÌãíÚ ÇáÊÕÍíÍÇÊ ÇáÎÇÕ Èí'; -$string['startoredit'] = ' ÊÚÏíá ãÐßÑÊí'; -$string['viewallentries'] = 'ãÚÇíäÉ $a ãÏÎáÇÊ ÇáãÐßÑÉ'; - -?> +teacher ÞÇã íæÖÚ ÈÚÖ ÇáÊÕÍíÍÇÊ Úáì ãÇÏÉ ãÐßÑÊß ÇáãÓáãÉ áÜ \'$a->journal\' +ÊÓÊØíÚ ãÔÇåÏÊåÇ ãÑÝÞÉ ãÚ ãÇÏÉ ãÐßÑÊß: $a->url +'; +$string['journalmailhtml'] = '$a->teacher ÞÇã ÈæÖÚ ÈÚÖ ÇáÊÕÍíÍÇÊ Úáì ãÇÏÉ ãÐßÑÊß \'$a->journal\'

        + íãßäß ãÔÇåÏÊåÇ ãÑÝÞÉ ãÚ áãÇÏÉ ãÐßÑÊßurl\">journal entry.'; +$string['journalname'] = 'ÇÓã ÇáãÐßÑÉ'; +$string['journalquestion'] = 'ÓÄÇá ÇáãÐßÑÉ'; +$string['journalrating1'] = 'áíÓ ãÞäÚÇ'; +$string['journalrating2'] = 'ãÞäÚÇ'; +$string['journalrating3'] = 'ÎÇÑÌ ÇáäØÇÞ'; +$string['modulename'] = 'ãÐßÑÉ'; +$string['modulenameplural'] = 'ãÐßÑÇÊ'; +$string['newjournalentries'] = 'ãÏÎáÇÊ ãÐßÑÉ ÌÏíÏÉ'; +$string['noentry'] = 'áÇ íæÌÏ ãÏÎáÇÊ'; +$string['noratinggiven'] = 'áÇ ÊæÌÏ ÊÕäíÝÇÊ ãÍÏÏÉ'; +$string['notopenuntil'] = 'åÐå ÇáãÐßÑÉ áä ÊÝÊÍ ÍÊì'; +$string['notstarted'] = 'Åäß áã ÊÈÏÇ åÐå ÇáãÐßÑÉ ÍÊì ÇáÂä'; +$string['overallrating'] = 'ÛÇáÈíÉ ÇáÊÕäíÝÇÊ'; +$string['rate'] = 'ÕäÝ'; +$string['saveallfeedback'] = 'ÃÍÝÙ ÌãíÚ ÇáÊÕÍíÍÇÊ ÇáÎÇÕ Èí'; +$string['startoredit'] = ' ÊÚÏíá ãÐßÑÊí'; +$string['viewallentries'] = 'ãÚÇíäÉ $a ãÏÎáÇÊ ÇáãÐßÑÉ'; + +?> diff --git a/lang/ar/lesson.php b/lang/ar/lesson.php index 3a0acf1c57e..c7cfc55f4e7 100644 --- a/lang/ar/lesson.php +++ b/lang/ar/lesson.php @@ -1,8 +1,7 @@ diff --git a/lang/ar/moodle.php b/lang/ar/moodle.php index 3247d5bbe6b..252726fb9c0 100644 --- a/lang/ar/moodle.php +++ b/lang/ar/moodle.php @@ -1,19 +1,18 @@ $a
        '; +$string['activityclipboard'] = 'äÞá åÐÇ ÇáäÔÇØ: $a'; $string['activityiscurrentlyhidden'] = 'ÚÐÑÇð åÐÇ ÇáäÔÇØ ãÎÝí ÍÇáíÇð'; $string['activitymodule'] = 'æÍÏÉ äÔÇØ'; $string['activityreport'] = 'ÊÞÑíÑ ÇáäÔÇØ'; $string['activityselect'] = 'ÃÎÊÑ åÐÇ ÇáäÔÇØ áäÞáå Åáì ãßÇä ÃÎÑ'; $string['activitysince'] = 'äÔÇØ ãäÐ $a'; $string['add'] = 'ÃÖÝ'; -$string['addactivity'] = 'ÃÖÝ äÔÇØ'; $string['addadmin'] = 'ÃÖÝ ãÏíÑ'; $string['addcreator'] = 'ÃÖÝ ãäÔÆ ãäåÌ ÏÑÇÓí'; $string['added'] = 'ÊãÊ ÅÖÇÝÉ $a'; @@ -26,25 +25,21 @@ $string['addingdatatoexisting'] = ' $string['addnewcategory'] = 'ÃÖÝ ÕäÝ ÌÏíÏ'; $string['addnewcourse'] = 'ÃÖÝ ãäåÌ ÏÑÇÓí ÌÏíÏ'; $string['addnewuser'] = 'ÃÖÝ ãÓÊÎÏã ÌÏíÏ'; -$string['addresource'] = 'ÃÖÝ ãÕÏÑ'; $string['address'] = 'ÇáÚäæÇä'; $string['addstudent'] = 'ÃÖÝ ØÇáÈ'; -$string['addteacher'] = 'ÃÖÝ ãÚáã'; +$string['addteacher'] = 'ÃÖÝ ãÏÑÓ'; $string['admin'] = 'ãÏíÑ ÇáãæÞÚ'; $string['adminhelpaddnewuser'] = 'ÅäÔÇÁ ÍÓÇÈ ãÓÊÎÏã ÌÏíÏ íÏæíÇð'; $string['adminhelpassignadmins'] = 'ÇáãÏÑÇÁ íÓÊØíÚæä ÇáÞíÇã ÈÌãíÚ ÇáÚãáíÇÊ Ýí Åí ãßÇä Ýí ÇáãæÞÚ'; $string['adminhelpassigncreators'] = 'ÇáãäÔÆæä íÓÊØíÚæä ÅäÔÇÁ ÇáãäÇåÌ ÇáÏÑÇÓíÉ ÇáÌÏíÏ æÇáÊÏÑíÓ ÝíåÇ'; $string['adminhelpassignstudents'] = 'ÅÐåÈ Åáì ÇáãäåÌ ÇáÏÑÇÓí æÃÖÝ ÇáØáÇÈ ãä ÞÇÆãÉ ÇáãÏíÑ'; -$string['adminhelpassignteachers'] = 'ÃÈÍË Úä ãäåÌ ÏÑÇÓí Ëã ÇÓÊÎÏã ÇáÃÞæäÉ áÅÖÇÝÉ ãÚáãæä'; +$string['adminhelpassignteachers'] = 'ÃÈÍË Úä ãäåÌ ÏÑÇÓí Ëã ÇÓÊÎÏã ÇáÃÞæäÉ áÅÖÇÝÉ ãÏÑÓíä'; $string['adminhelpauthentication'] = 'íãßäß ÇÓÊÎÏÇã ÍÓÇÈÇÊ ÇáãÓÊÎÏãíä ÇáãæÌæÏÉ Ãæ ÇÓÊÎÏÇã ÞÇÚÏÉ ÈíÇäÇÊ ÎÇÑÌíÉ'; $string['adminhelpbackup'] = 'ÃÚÏ ÇáäÓÎ ÇáÇÍÊíÇØí ÇáÂáì æãæÇÚíÏå'; $string['adminhelpconfiguration'] = 'ÃÚÏ Úãá æãÙåÑ ÇáãæÞÚ'; $string['adminhelpconfigvariables'] = 'ÃÚÏ ÇáãÊÛíÑÇÊ ÇáÊí ÊÄËÑ Úáì ÚãáíÉ ÇáãæÞÚ ÇáÚÇãÉ'; $string['adminhelpcourses'] = 'ÚÑÝ ÇáãäÇåÌ ÇáÏÑÇÓíÉ æÇáÇÕäÇÝ æÚíä ÇÔÎÇÕ áåã'; -$string['adminhelpeditorsettings'] = 'ÊÚÑíÝ ÇáÇÚÏÇÏÇÊ ÇáÇÓÇÓíÉ áãÍÑÑ Çá ÊÔ Êí Ãã Åá'; $string['adminhelpedituser'] = 'ÇÓÊÚÑÖ ÞÇÆãÉ ÍÓÇÈÇÊ ÇáãÓÊÎÏãíä æÍÑÑ Ãí ãäåã'; -$string['adminhelpenrolments'] = 'ÅÎÊÑú ØÑÞó ÏÇÎáíÉð Ãóæ ÎÇÑÌíÉó ááÓóíúØóÑóÉ Úáì ÇáÊÓÌíáÇÊö'; -$string['adminhelpfailurelogs'] = 'ÊÕÝøÍú ÓÌáÇÊó ãÍÇæáÇÊ ÇáÏÎæá ÇáÝÇÔáÉ'; $string['adminhelplanguage'] = 'áãÑÇÌÚÉ æÊÍÑíÑ ÍÒãÉ ÇááÛÉ ÇáÍÇáíÉ'; $string['adminhelplogs'] = 'ÇÓÊÚÑÇÖ ÓÌáÇÊ ÌãíÚ ÇáÃäÔØÉ ÈÇáãæÞÚ'; $string['adminhelpmanageblocks'] = 'ÇÏÑ ÇáßÊá ÇáãËÈÊå æÅÚÏÇÏÇÊåÇ'; @@ -59,10 +54,7 @@ $string['adminhelpusers'] = ' $string['administration'] = 'ÅÏÇÑÉ ÇáãæÞÚ'; $string['administrator'] = 'ãÏíÑ'; $string['administrators'] = 'ãÏÑÇÁ'; -$string['administratorsall'] = 'ßá ÇáãÏÑÇÁ'; -$string['administratorsandteachers'] = 'ÇáãÏÑÇÁ æÇáãÚáãæä'; $string['advancedfilter'] = 'ÈÍË ãÊÞÏã'; -$string['advancedsettings'] = 'ÅÚÏÇÏÇÊ ãÊÞÏãÉ'; $string['again'] = 'ãÑÉ ÃÎÑì'; $string['all'] = 'Çáßá'; $string['allactivities'] = 'ÌãíÚ ÇáÇäÔØÉ'; @@ -72,10 +64,8 @@ $string['allgroups'] = ' $string['alllogs'] = 'ßá ãáÝÇÊ ÇáÊÞÇÑíÑ'; $string['allow'] = 'ÇÓãÍ'; $string['allowguests'] = 'íÓãÍ ááãÓÊÎÏãíä ÇáÖíæÝ ÈÇáÏÎæá Åáì åÐÇ ÇáãäåÌ ÇáÏÑÇÓí'; -$string['allowinternal'] = 'ÇáÓãÇÍ ÈÇáØÑÞ ÇáÏÇÎáíÉ'; $string['allownot'] = 'áÇ ÊÓãÍ'; $string['allparticipants'] = 'ßá ÇáãÔÇÑßíä'; -$string['allteachers'] = 'ßá ÇáãÚáãæä'; $string['alphabet'] = 'áȡʡˡ̡͡ΡϡСѡҡӡԡա֡ء١ڡۡݡޡߡá¡ã¡ä¡åÜ¡æ¡í¡'; $string['alphanumerical'] = 'áÇ íÞÈá ÅáÇ ÍÑæÝÇ åÌÇÆíÉ Ãæ ÃÑÞÇãÇ'; $string['alreadyconfirmed'] = 'Êã ÊÃßíÏ ÇáÊÓÌíá ÈÇáÝÚá'; @@ -89,7 +79,7 @@ $string['assigncreators'] = ' $string['assignstudents'] = 'ÓÌá ØáÇÈ'; $string['assignstudentsnote'] = 'ãáÇÍÙÉ: ÑÈãÇ áíÓ ãä ÇáÖÑæÑí ÇÓÊÎÏÇã åÐå ÇáÕÝÍÉ¡ ÍíË Ãä ÇáØáÇÈ ÓíÞæãæä ÈÊÓÌíá ÇáÐÇÊí Ýí åÐÇ ÇáãäåÌ ÇáÏÑÇÓí.'; $string['assignstudentspass'] = 'ÑÈãÇ ãÇ íÌÈ ÇáÞíÇã Èå åæ ÅÔÚÇÑ ÇáØáÇÈ ÈãÝÊÇÍ ÇáÊÓÌíá Åáì ÇáãäåÌ ÇáÏÑÇÓí¡ æÇáÐí åæ:\'$a\''; -$string['assignteachers'] = 'ÊÚííä ãÚáãæä'; +$string['assignteachers'] = 'ÊÚííä ãÏÑÓíä'; $string['authentication'] = 'ÊæËíÞ'; $string['autosubscribe'] = 'ÊÓÌíá Âáì Ýí ÇáãäÊÏì'; $string['autosubscribeno'] = 'áÇ: áÇ ÊÞã ÈÊÓÌíáí ÂáíÇð Ýí ÇáãäÊÏíÇÊ'; @@ -100,26 +90,17 @@ $string['backup'] = ' $string['backupcoursefileshelp'] = 'Êãßíä åÐå ÇáÎÇÕíÉ ÓíÓãÍ ÈÅÖÇÝÉ ãáÝÇÊ ÇáãäåÌ ÇáÏÑÇÓí Åáì ÇáäÓÎ ÇáÇÍÊíÇØí ÇáÂáì'; $string['backupdate'] = 'ÊÇÑíÎ ÇáäÓÎÉ ÇáÅÍÊíÇØíÉ'; $string['backupdetails'] = 'ÊÝÇÕíá ÇáäÓÎÉ ÇáÅÍÊíÇØíÉ'; -$string['backupfailed'] = 'ÈÚÖ ãäÇåÌß ÇáÏÑÇÓíÉ áã íÊã ÍÝÙåÇ'; $string['backupfilename'] = 'ÇÓã ãáÝ ÇáäÓÎÉ ÇáÅÍÊíÇØíÉ'; $string['backupfinished'] = 'ÇáäÓÎ ÇáÅÍÊíÇØí Êã ÈäÌÇÍ'; $string['backupincludemoduleshelp'] = 'ÍÏÏ ÑÛÈÊß Ýí ÅÖÇÝÉ æÍÏÇÊ ÇáãäåÌ ãÚ Ãæ ÈÏæä ãÚáæãÇÊ ÇáãÓÊÎÏã Ýí ÇáäÓÎ ÇáÇÍÊíÇØí ÇáÂáì'; $string['backupkeephelp'] = 'ßã ÚÏÏ ÇáäÓÎ ÇáÇÍÊíÇØíÉ ÇáÍÏíË áßá ãäåÌ ÏÑÇÓí ÊÑÛÈ ÇáÇÍÊÝÇÙ ÈåÇ¿(ÇáäÓÎ ÇáÞÏíãÉ ÓÊÍÐÝ ÂáíÇð'; -$string['backuplogdetailed'] = 'ÓÌá ÊäÝíÐí ãÝÕá'; -$string['backuploglaststatus'] = 'ÃÎÑ ÓÌá ÊäÝíÐí'; $string['backuplogshelp'] = 'áæ ãßä¡ ÓíÊã ÅÖÇÝÉ ÌãíÚ ÓöÌáÇÊ ÃÏÇÁ ÇáãäåÌ ÇáÏÑÇÓí Öãä ÇáäÓÎ ÇáÇÍÊíÇØí ÇáÂáí.'; $string['backupnameformat'] = 'äæÚ ÊäÓíÞ ãáÝ ÇáäÓÎÉ ÇáÅÍÊíÇØíÉ'; -$string['backupnoneusersinfo'] = 'áÇÍÙ: áÞÏ ÞãÊ ÈÇÎÊíÇÑ ÇáäÓÎ ÇáÇÍÊíÇØí ÈÏæä ÇÎÊíÇÑ ÇáãÓÊÎÏãíä¡ áÐÇ ÝÃä ÌãíÚ ÇáæÍÏÇÊ Êã ÊÍæíáåÇ Åáì \"ãÚáæãÇÊ ÈÏæä ãÓÊÎÏãíä.\" ÝÖáÇð áÇÍÙ Ãä æÍÏÉ \" ÇáÊãÇÑíä\" ææÍÏÉ \"æÑÔÉ Úãá\" ÛíÑ ãÊØÇÈÞÊÇä ãÚ åÐÇ ÇáäæÚ ãä ÇáäÓÎ ÇáÇÍÊíÇØí¡ áÐÇ Êã ÊÚØíáåãÇ ÊãÇãÇ.'; $string['backuporiginalname'] = 'ÇÓã ÇáÇÕáí áãáÝ ÇáäÓÎÉ ÇáÅÍÊíÇØíÉ'; -$string['backupsavetohelp'] = 'ÇáãÓÇÑ ÇáßÇãá ááãÌáÏ ÇáÐí ÊÑíÏ Ãä ÊÍÝÙ Ýí ãáÝÇÊ ÇáäÓÎ ÇáÇÍÊíÇØí
        (ÃÊÑß ÝÇÑÛÇð ááÍÝÙ Ýí ÇáãÌáÏ ÇáÇÝÊÑÇØí ááãäåÌ ÇáÏÑÇÓí)'; -$string['backuptakealook'] = 'ÝÖáÇ¡ ÇáÞÇÁ äÙÑÉ Úáì ÓÌá ÇáäÓÎ ÇáÇÍÊíÇØí Ýí: $a'; -$string['backupuserfileshelp'] = 'ÇÎÊÑ áæ ßäÊ ÊÑÛÈ Ýí ÅÖÇÝÉ ãáÝÇÊ ÇáãÓÊÎÏã(ãËá: ÕæÑ ÇáÓíÑÉ ÇáÐÇÊíÉ) Öãä ÇáäÓÎ ÇáÇÍÊíÇØí ÇáÂáí'; +$string['backupsavetohelp'] = 'ÇáãÓÇÑ ÇáßÇãá ááãÌáÏ ÇáÐí ÊÑíÏ Ãä ÊÍÝÙ Ýí ãáÝÇÊ ÇáäÓÎ ÇáÇÍÊíÇØí
        (ÃÊÑß ÝÇÑÛÇð ááÍÝÙ Ýí ÇáãÌáÏ ÇáÇÝÊÑÇØí ááãäåÌ ÇáÏÑÇÓí)'; +$string['backupuserfileshelp'] = 'ÇÎÊÑ áæ ßäÊ ÊÑÛÈ Ýí ÅÖÇÝÉ ãáÝÇÊ ÇáãÓÊÎÏã(ãËá: ÕæÑ ÇááãÍå ÇáÔÎÕíÉ) Öãä ÇáäÓÎ ÇáÇÍÊíÇØí ÇáÂáí'; $string['backupusershelp'] = 'ÇÎÊÑ áæ ßäÊ ÊÑÛÈ Ýí ÅÖÇÝÉ ÌãíÚ ÇáãÓÊÎÏãíä Ýí ÇáÎÇÏã Ãæ ÇáãÓÊÎÏãíä ÇáãØáæÈíä áßá ãäåÌ ÏÑÇÓí ÝÞØ'; $string['backupversion'] = 'ÅÕÏÇÑ ÇáäÓÎÉ ÇáÅÍÊíÇØíÉ'; -$string['blockconfiga'] = 'íÊã ÅÚÏÇÏ ßÊáÉ ÇáÜ $a '; -$string['blockconfigbad'] = 'áã íÊã ÊØÈíÞ åÐå ÇáßÊáÉ ÈÔßá ÕÍíÍ áåÐÇ áÇ íãßä ÊæÝíÑ æÇÌåÉ ááÅÚÏÇÏÇÊ.'; -$string['blockdeleteconfirm'] = 'ÃäÊ ÃóæúÔóßúó Ãóäú ÊóÍúÐÝó ÇáßÊáÉó \'$ a\' ÈÇáßÇãá . åÐÇ ÓóíóÍúÐÝõ ÈÇáßÇãá ÌãíÚ ÇáãÚáæãÇÊ ÇáãÊÚáÞÉ ÈåÐå ãä ÞÇÚÏÉö ÇáÈíÇäÇÊ. åóáú ÃäÊ ãÊÃßøÏ ãä ÇáÅöÓúÊöãúÑÇÑ Ýí ÚãáíÉ ÇáÍÐÝ åÐå¿'; -$string['blockdeletefiles'] = 'ÌãíÚ ÇáãÚáæãÇÊ ÇáãÊÚáÞÉ ÈåÐå ÇáßÊáÉ \'$a->block\' Êã ÍÐÝåÇ ãä ÞÇÚÏÉ ÇáÈíÇäÇÊ. áÅÊãÇã ÚãáíÉ ÇáÍÐÝ (æÊÌäÈ ÅÚÇÏÉ ÇáÊËÈíÊ ÇáÐÇÊí áåÐå ÇáßÊáÉ)¡ íÌÈ Úáíß ÍÐÝ ãÌáÏ åÐå ÇáßÊáÉ ãä ÎÇÏã ÇáãáÝÇÊ $a->directory'; $string['blocks'] = 'ßÊá'; $string['blocksetup'] = 'ÅÚÏÇÏ ÌÏÇæá ÇáßÊáÉ'; $string['blocksuccess'] = '$a Êã ÅÚÏÇÏ ÇáÌÏÇæá ÈÔßá ÕÍíÍ'; @@ -141,88 +122,47 @@ $string['checkingsections'] = ' $string['checklanguage'] = 'ÊÃßÏ ÇááÛÉ'; $string['choose'] = 'ÇÎÊÑ'; $string['choosecourse'] = 'ÇÎÊÑ ãäåÌ ÏÑÇÓí'; -$string['chooseenrolmethod'] = 'ØÑíÞÉ ÇáÊÓÌíá ÇáÇÓÇÓíÉ'; $string['chooselivelogs'] = 'Ãæ ÔÇåÏ ÇáäÔÇØ ÇáÍÇáí'; $string['chooselogs'] = 'ÇÎÊÑ ÇáÊÞÇÑíÑ ÇáÊí ÊÑíÏ ÇáÇØáÇÚ ÚáíåÇ'; $string['choosereportfilter'] = 'ÇÎÊÑ ãäÞÍ ááÊÞÑíÑ '; $string['choosetheme'] = 'ÇÎÊÑ ãÙåÑ ÇáãæÞÚ'; $string['chooseuser'] = 'ÇÎÊÑ ãÓÊÎÏãÇ'; $string['city'] = 'ÇáãÏíäÉ/ÇáÈáÏÉ'; -$string['clambroken'] = 'ÞÇã ãÏíÑ ÇáãæÞÚ ÈÊÝÚíá ÝÍÕ ÇáÝíÑæÓÇÊ ááãáÝÇÊ ÇáãÍãáå æáßä ÞÇã ÃÎØÇÁ Ýí ÅÚÏÇÏ ÔÆ ãÇ.
        ÊÍãíá ãáÝß áã íÊã ÈäÌÇÍ. ßãÇ Êã ÇÑÓÇá ÈÑíÏ ÅáßÊÑæäí áãÏíÑ ÇáãæÞÚ áÅÔÚÇÑå ÈÐáß áíÊãßä ãä ÊÚÏíá ÇáÎØÇÁ.
        ãä ÇáÃÝÖá ãÍÇæáÉ ÊÍãíá ãáÝß áÇÍÞÇð.'; -$string['clamdeletedfile'] = 'Êã ÍÐÝ áãáÝ'; -$string['clamdeletedfilefailed'] = 'áã íÊã ÍÐÝ ÇáãáÝ'; -$string['clamemailsubject'] = '$a:: ÅÔÚÇÑ ßáÇãÃíÝí'; -$string['clamfailed'] = 'áã íÊãßä ßáÇãÃíÝí ãä ÇáÚãá. ÑÓÇáÉ ÇáÎØÇÁ ÇáæÇÑÏÉ åí $a.åäÇÁ ÇáäÇÊÌ ãä ßáÇãÃíÝí.'; -$string['clamlost'] = 'áÞÏ Êã ÅÚÏÇÏ ãæÏá áÊÔÛíá ßáÇã ÚäÏ ÊÍãíá ÇáãáÝÇÊ¡ æáßä ÇáãÓÇÑ ÇáÐí Êã ÊÒæíÏÉ áßáÇãÃíÝí¡$a¡ ÛíÑ ÕÍíÍÒ'; -$string['clamlostandactinglikevirus'] = 'ÈÇáÅÖÇÝÉ¡ Êã ÅÚÏÇÏ ãæÏá Úáì Ãä íÚãá ÌãíÚ ÇáãáÝÇÊ ãËá ÇáÝíÑæÓÇÊ Ýí ÍÇáÉ ÝÔá ßáÇãÃíÝí ãä ÇáÚãá. åÐÇ íÚäí Çä áä íÊãßä Ãí ØÇáÈ ãä ÊÍãíá Ãí ãáÝ ÍÊì íÊã ÊÚÏíá åÐå ÇáãÔßáÉ. '; -$string['clammovedfile'] = 'áÞÏ Êã äÞá ÇáãáÝ Åáì ãÌáÏ ÇáãÍÌÑ ÇáÕÍí ÇáÐí ÍÏÏÊå¡ ÇáãæÞÚ ÇáÌÏíÏ åæ $a'; -$string['clammovedfilebasic'] = 'áÞÏ Êã äÞá ÇáãáÝ Åáì ãÌáÏ ÇáãÍÌÑ ÇáÕÍí.'; -$string['clamquarantinedirfailed'] = 'áã äÊãßä ãä äÞá ÇáãáÝ Åáì ãÌáÏ ÇáãÍÌÑ ÇáÕÍí ÇáãÍÏÏ¡$a. ÊÍÊÇÌ ÊÕÍíÍ åÐÇ ÚäÏãÇ ÊÍÐÝ ÇáãáÝÇÊ ÇáÊí ÑÈãÇ Êßæä ãÕÇÈÉ ÈÇáÝíÑæÓÇÊ.'; -$string['clamunknownerror'] = 'íæÌÏ ÎØÇÁ ÛíÑ ãÚÑæÝ ãÚ ßáÇãÃíÝí.'; $string['cleaningtempdata'] = 'äÙÝ ÇáãÚáæãÇÊ ÇáãÄÞÊÉ'; $string['clicktochange'] = 'ÇäÞÑ ááÊÛíÑ'; $string['closewindow'] = 'ÃÛáÞ åÐå ÇáäÇÝÐÉ'; $string['comparelanguage'] = 'ÞÇÑä æÚÏá ÇááÛÉ ÇáÍÇáíÉ'; $string['complete'] = 'ßÇãá'; -$string['configallowunenroll'] = 'ÅÐÇ ÃõÚöÏøó åÐÇ \"äÚã\" ÓíÊãßä ÇáØøáÈÉ ãä ÇäÓÍÇÈåã ãä ÇáãäÇåÌ ÐÇÊíÇõ ãÊì íÔÇÄä.ÚÏÇ Ðáß áÇ íÊãßäæÇ ãä ÇáÇäÓÍÇÈ æíÕÈÍ ÇáÊÍßã Ýí ÊÓÌíáåã ãä ÞÈá ÇáãÚáãæä æ ÇáãÏíÑíä ÝÞØ.'; -$string['configallusersaresitestudents'] = 'ááÃäÔØÉ ÇáãæÖæÚÉ Úáì ÇáÕÝÍÉ ÇáÃæáì ãöäú ÇáãæÞÚö¡ åóáú ÓíÚÇãá ßá ÇáãÔÇÑßíä ߨáÇÈ¿ ÅÐÇ ßÇäÊ ÇáÃÌÇÈÉ ÈÜ \"äÚã\"¡ åá ÓíÓãÍ áÃíø ÍÓÇÈ ÇáãõÔóÇÑóßóÉ ßØÇáÈ Ýí Êáß ÇáÃäÔØÉ¿. ÅÐÇ ßÇäÊ ÇáÃÌÇÈÉ ÈÜ \"áÇ\"¡ ãÓíÓãÍ ÝÞØ ááãÔÇÑßíä ÇáãÓÌáííä Ýí Ýí ãäåÌ ÏÑÇÓí æÇÍÏ Úáì ÇáÃÞá ÝÕáö æÇÍÏ ááãÔÇÑßÉ Ýí ÇáÃäÔØÉ ÇáãæÖæÚÉ Úáì ÇáÕÝÍÉ ÇáÃæáì. ÝÞØ ÇáãÏÑÇÁ æÇáãÚáãæä ÓíÚÇãáæÇ ßãÚáãíä áåÐå ÇáÃäÔØÉ.'; -$string['configautologinguests'] = 'åá ÓíÓãÍ áÒæÇÑ ÇáÏÎæá ÂáíÇð ßÒæÇÑ ááãäÇåÌ ÇáÏÇÑÓíÉ ÇáÊí ÊÓãÍ ááÒæÇÑ ÈÇáÏÎæá.'; -$string['configcachetext'] = 'ááãæÇÞÚö ÇáßÈíÑÉ Ãóæ ÇáãæÇÞÚö ÇáÊí ÊÓÊÎÏã ãÑÔÍÇÊó ÇáäóÕøö¡ åÐÇ ÇáÇÚÏÇÏ ÓíÓÑÚ ÇáÃÏÇÁ. äÓÎ ÇáäÕæÕö ÓóÊóÍÊÝÙõ Ýí Ôßáöåã æÊäÓíÞåÇ ÇáÇÕáí ÎáÇá ÇáæÞÊö ÇáãÍÏøÏó åäÇ. ÊÕÛíÑ ÍÌã åÐÇ ÇáÇÚÏÇÏ ÞÏ íÄÏí Åáì ÊÈØÆÉ ÇáÃÏÇÁ ÈÚÖ ÇáÔøíÁ¡ áßä ÅÚÏÇÏÉ ÈÔßá ßÈíÑÉ ÌÏÇð ÞóÏú íÚúäí Ãä ÇáäÕæÕó ÓÊóÓÊÛÑÞõ æÞÊÇð ØæíáÇð áíÊã ÊÍÏíËåÇ (Úáì ÓÈíá ÇáãËÇá íÍÕá åÐÇ ãÚ ÑÇÈØÇÊ ÇáÇäÊÑäÊ ÇáÌÏíÏÉö).'; -$string['configclamactlikevirus'] = 'ÚÇãá ÇáãáÝÇÊ ßÝíÑæÓÇÊ'; -$string['configclamdonothing'] = 'ÚÇãá ÇáãáÝÇÊ Úáì ÃäåÇ Óáíãå'; -$string['configclamfailureonupload'] = 'áæ ÞãÊ ÈÅÚÏÇÏ ßáÇãÝí áÝÍÕ ÇáãáÝÇÊö ÇáãÍãáÉ¡ æáßä áÃí ÓÈÈ ãä ÇáÇÓÈÇÈ ÇÎÝÞ Ýí ÝÍÕ ÇáãáÝÇÊ ßíÝ íÌÈ Úáíå Ãä íÚãá¿ áæ ÞãÊ ÈÇÎÊíÇÑ ãÚÇãáÉ ßá ÇáãáÝÇÊ Úáì ÇäåÇ \'ãÕÇÈÉ ÈÇáÝíÑæÓÇÊö \'¡ ÓíÊã äÞáåÇ ãÈÇÔÑÉ Åáì ãäØÞÉö ÇáãÍÌÑ ÇáÕÍí¡ Ãóæ ÍóÐÝåÇ. áæ ÞãÊ ÈÇÎÊíÇÑ ãÚÇãáÉ ÇáãáÝÇÊ Úáì ÇäåÇ \'áÇ ÊÍÊæí Úáì ÝíÑæÓÇÊ\'¡ ÓóÊóäÊÞáõ ÌãíÚ ÇáãáÝÇÊ Åáì ÇáãÌáÏ ÇáãÍÏÏ ÈØÑíÞÉ áØÈíÚíÉ. Ýí Ãí ãä ÇáÍÇáÊíä¡ ÓíÍÇØ ÇáãÏÑÇÁ ÈÃä ßáÇãÝí ÞÏ ÇÎÝÞ Ýí Úãáå. áæ ÞãÊ ÈÇÎÊíÇÑ ãÚÇãáÉ ßá ÇáãáÝÇÊ Úáì ÇäåÇ \'ãÕÇÈÉ ÈÇáÝíÑæÓÇÊö \' æáÓÈÈ ãÇ ÃÎÝÞõ ßáÇãÝí Úáì Ãä íÚãá ÈÔßá ÕÍíÍ (ÚÇÏÉ áÚÏã ÇÏÎÇá ÇáãÓÇÑ ÇáÕÍíÍ ßáÇãÝí)¡ ßõáø ÇáãáÝÇÊ ÇáÊí ÇáãÍãáÉ ÓóÊóäÊÞáõ Åáì ãäØÞÉö ÇáãÍÌÑ ÇáÕÍí ÇáãÍÏÏÉ¡ Ãóæ ÊÍóÐÝ. ßõäú ÍÐÑÇð Ýí ÇáÊÚÇãá ãÚ åÐÇ ÇáÃÚÏÇÏ.'; +$string['configallowunenroll'] = 'ÅÐÇ ÃõÚöÏøó åÐÇ \"äÚã\" ÓíÊãßä ÇáØøáÈÉ ãä ÇäÓÍÇÈåã ãä ÇáãäÇåÌ ÐÇÊíÇõ ãÊì íÔÇÄä.ÚÏÇ Ðáß áÇ íÊãßäæÇ ãä ÇáÇäÓÍÇÈ æíÕÈÍ ÇáÊÍßã Ýí ÊÓÌíáåã ãä ÞÈá ÇáãÏÑøÓíä æ ÇáãÏíÑíä ÝÞØ.'; $string['configcountry'] = 'ÅÐÇ ÃÚÏÏÊ ÏæáÉð åäÇ, ÓÊßæä åí ÇáÏæáÉ ÇáÃÝÊÑÇÖíÉ áÌãíÚ ÍÓÇÈÇÊ ÇáãÓÊÎÏãíä ÇáÌÏíÏÉ. áÇ ÊÞã ÈÅÎÊíÇÑ ÇáÏæáÉ æÐáß ááÅÌÈÇÑ ÇáãÓÊÎÏãíä ÇÎÊÇÑÇáÏæá.'; -$string['configdbsessions'] = 'ÅÐÇ Êã Êãßíä åÐÇ ÇáÃÚÏÇÏ¡ ÝÃäå ÓóíóÓÊÚãáõ ÞÇÚÏÉó ÇáÈíÇäÇÊ áÊÎóÒúíä ãÚáæãÇÊö ÇáÌáÓÇÊ ÇáÍÇáíÉö. åÐÇ ãÝíÏõ ÌÏÇð ááãæÇÞÚ ÇáßÈíÑö Ãóæ ÇáãæÇÞÚ ãÔÛæáÉ Ãæ ÇáãæÇÞÚ ÇáãÕããå Úáì ãÌãæÚÉ ÎÇÏãÇÊö. áÃßËÑ ãä ÇáãæÇÞÚö ãä ÇáÃÝÖá Çä åÐÇ ÇáÃÚÏÇÏ íõÊúÑóßó ãÚØá áíÊã ÇÓÊÎÏÇã ÞÑÕ ÇáÎÇÏãó. ãõáÇÍÙÉ ÊÛíÑ åÐÇ ÇáÃÚÏÇÏ ÇáÂä ÓíÄÏì Åáì ÅÎÑÇÌ ÌãíÚ ÇáãÔÇÑßæä Ýí ÇáãæÞÚ (ÈãÇ Ýí Ðáß ÃäÊ).'; $string['configdebug'] = 'ÇÎÊíÇÑ ÇáÊÔÛíá åäÇ ÓíÄÏí Åáì ÒíÇÏÉ ÚÏÏ ÇáÊÍÐíÑÇÊ ÇáÎÇÕÉ ÈÎØÃ Èí ÅÊÔ Èí. åÐÇ ÇáÇÎÊíÇÑ íÝíÏ ÇáãØæÑíä ÝÞØ.'; -$string['configdeleteunconfirmed'] = 'ÅÐÇ ÃäÊ ÊóÓÊÚãáõ ÇáÈÑíÏ ÅáßÊÑæäí áÊÃßíÏ ÇáÊÓÌíá¡ åí åÐå ÇáÝÊÑÉõ ÇáÊí ÎáÇáåÇ íãßä ÞÈæá ÇáÑóÏø ãä ÇáãÓÊÎÏãæä. ÈÚÏ åÐå ÇáÝÊÑÉö¡ ÇáÍÓÇÈÇÊ ÇáÞÏíãÉ æÇáÛíÑ ãÄßÏÉ ÓíÊã ÍÐÝåÇ.'; -$string['configdigestmailtime'] = 'ÇáäÇÓ ÇáÐíä íóÎÊÇÑæäó Ãóäú íÓÊáãæÇ ÑÓÇÆá ÈÑíÏíÉ ÅáßÊÑæäíÉ Ýí Ôßáö ÇáãáÎøÕö ÓóÊõÑÓáõ ÈÇáÈÑíÏ ÇáÅáßÊÑæäí ÕÍíÝÉ ÇáãáÎøÕó ÇáíæãíÉó. åÐÇ ÇáÅÚÏÇÏ ÓíÍÏÏ ÇáæÞÊ Çáíæãí ÇáÐí ÓóíõÑÓáõ (ÓÊÊã ÚãáíÉ ÇáÅÑÓÇá ÈãÌÑÏ ÇáÊäÝíÏ ÇáÂáí ááßæÑä \"corn\" ÇáÊÇáí).'; -$string['configdisplayloginfailures'] = 'åÐÇ ÓíÚÑÖ ãÚáæãÇÊ ááãÓÊÎÏãíä ÇáãÎÊÇÑæä Úä ãÍÇæáÇÊ ÇáÊÓÌíá ÇáÝÇÔáÉ ÇáÊí ÍÕáÊ ÓÇÈÞÇ.'; -$string['configenablerssfeeds'] = 'åÐÇ ÇáãÝÊÇÍö Óóíõãßøäõ ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ (RSS) ãä ÎáÇá ÇáãæÞÚö. áÑõÄíÉ Ãíø ÊÛííÑ ÓóÊóÍÊÇÌõ Êóãúßíä ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ (RSS) Ýí ÌãíÚ ÇáæÍÏÇÊö ÃíÖÇð - ÅÐúåÈõ Åáì ÅÚÏÇÏÇÊ ÇáæÍÏÇÊó ÊÍÊ ÅÏÇÑÉö ÇáãæÞÚ.'; -$string['configenablerssfeedsdisabled'] = 'åÐå ÇáÎÏãÉ ÛíÑ ãÊæÝÑ áÂä ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ (RSS) ãÚØáÉ Ýí ßõáø ÇáãæÞÚö. áÊóãúßíä åÐå ÇáÎÏãÉ ÅÐúåÈõ Åáì ÅÚÏÇÏÇÊ ÇáãÊÛíøÑÇÊó ÊÍÊ ÅÏÇÑÉö ÇáãæÞÚ.'; $string['configerrorlevel'] = 'ÇÎÊÑ ÚÏÏ ÊÍÐíÑÇÊ PHP ÇáÊí ÊÑíÏ ÅÙåÇÑåÇ. ÇáãÚÏá ÇáÚÇÏí åæ ÃÝÖá ÇáÎíÇÑÇÊ ÛÇáÈÇ.'; -$string['configextendedusernamechars'] = 'åÐÇ ÇáÅÚÏÇÏ ÓíÓóãÍ ááØáÇÈö ÇÓÊÎÏÇã Ãí ÍÑæÝ Ýí Ýí ÍÞá ÃÓãÇÁö ÇáãÓÊÎÏãíä (áÇÍÙ Ãä åÐå áÇ ÊõÄËøÑõ Úáì ÃÓãÇÆöåã ÇáÝÚáíÉö). ÇáæÖÚ ÇáÃÝÊÑÇÖí åæ ÚÏã ÇáÓãÇÍ æåÐÇ ÓíÌÈÑ ÇáãÓÊÎÏãíä ÈÅÓÊÎÏÇã ÍÑæÝ æÑÇÞÇã ÝÞØ ÚäÏ ÅÏÎÇá ÇÓã ÇÓÊÎÏã. '; -$string['configfilteruploadedfiles'] = 'óãúßíä åÐÇ ÇáÅÚÏÇÏ ÓíÌÚá ãæÏá Moodle ÇáÞíÇã ÈãõÚóÇáóÌóÉ ßõáø ãáÝÇÊ (HTML) ÇáÅÊÔ Êí Åã Åá æãáÝÇÊ ÇáäóÕøö ÇáãÍãáÉ æÐáß ÈÅÓÊÎÏÇã ÇáãÑÔÍÇÊö ÞÈá ÚóÑúÖåã ÚÑÖ Êáß ÇáãáÝÇÊ.'; $string['configforcelogin'] = 'ÞíÇÓíÇ¡ íÓÊØíÚ ÇáäÇÓ ÞÑÇÁÉ ãÍÊæì ÇáÕÝÍÉ ÇáÇæáì ááãæÞÚ æÞæÇÆã ÇáãäÇåÌ ÇáÏÑÇÓíÉ (áíÓ ÇáãäÇåÌ ÇáÏÑÇÓíå ÈÐÇÊåÇ) ÈÏæä ÇáÏÎæá Åáì ÇáãæÞÚ. ãßä åÐÇ ÇáÇÚÏÇÏ áæ ßäÊ ÊÑÛÈ Ýí ÇÌÈÇÑ ÇáäÇÓ ÇáÏÎæá Åáì ÞÈá Úãá Åì ÔíÁ.'; -$string['configforceloginforprofiles'] = 'ãßä åÐÇ ÇáÅÚÏÇÏ áÅÌúÈÇÑ ÇáäÇÓö áÏÎæá ßãÔÇÑßíä (áíÓæÇ ÒæÇÑ) ÞÈá ÇáÓãÇÍó áåã áÑõÄíÉ ÕÝÍÇÊ ÇáÓíÑÉ ÇáÐÇÊíÉ. ÅÝÊÑÇÖíÇð åÐÇ ÇáÅÚÏÇÏ ÛíÑ ããßä (\"ÎÇØÆ\") æÐáß áÊãßíä ÇáØáÇÈ ÇáÌÏÏ ÇáÞÑÇÁÉ Úä ãÚáãíä ßõáø ãäåÌ ÏÑÇÓí¡ áßä åÐÇ ÃíÖÇð íÚäí Ãäø ÇáÈÍË ÈÇÓÊÎÏÇã ãÍÑßÇÊ ÇáÈÍË ÓíÙåÑ ááÈÇÍË ÇáãÚáæãÇÊ ÇáÎÇÕÉ ÈåæáÇÁ ÇáãÚáãæä.'; $string['configframename'] = 'ÖÚ ÇÓã ÇáÇØÇÑ ÇáÎÇÕ ÈãæÞÚß åäÇÁ áÊÖãíä ãæÏá Öãä ÅØÇÑ ãæÞß¡ æÇáÇ ÊÑß åÐÇ ÇáãÊÛíÑ ßãÇ åæ \"ÇÚáì\".'; $string['configfullnamedisplay'] = 'åÐÇ íÚÑøÝ ßíÝíÉ ÙåæÑ ÇáÃÓãÇÁ ÚäÏãÇ íÊã õÚúÑóÖõåÇó ÈÇáßÇãá . áãÚÙã ÇáãæÇÞÚ ÇáÃÍÇÏíøÉ ÇááøÛÉ ÇáÅÚÏÇÏ ÇáÃßËÑ ÝÇÚáíøÉ åæ ÇáÅÚÏÇÏ ÇáÇÝÊÑÇÖí \"ÇáÃÓãÇÁ ÇáÃæáì + áÞÈ\", áßäøß ÊÓÊØíÚ Çä ÊÎÊÇÑ ÅÎÝÇÁ ÇáÃáÞÇÈ ßáøíøðÇ, Ãæ ÊÑßåÇ ÍõÒãÉ ÇááÛÉ ÇáÍÇáíøÉ (áÈÚÖ ÇááøÛÇÊ ØÑÞ ãÎÊáÝÉ) '; $string['configgdversion'] = 'Úíä ÇáäÓÎÉ ÇáÊí Êã ÊäÕíÈåÇ ãä GD. ÇáäÓÎÉ ÇáãÚÑæÖÉ ÇÝÊÑÇÖíÇ åí ÇáÊí íÊã ÇáßÔÝ ÚäåÇ ÂáíÇ. áÇ ÊÞã ÈÊÛííÑ åÐÇ ÇáæÖÚ ÅáÇ ÅÐÇ ßäÊ ãÊãÑÓÇ.'; $string['confightmleditor'] = 'ÇÎÊÑ ãÇ ÅÐÇ ßäÊ ÊÓãÍ ÈÇÓÊÎÏÇã ãÍÑÑ äÕæÕ HTML. ÚäÏãÇ ÊÎÊÇÑ ÇÓãÍ ÝÅä åÐÇ ÇáãÍÑÑ ÓæÝ íÙåÑ ÝÞØ ÚäÏãÇ íÊã ÇÓÊÎÏÇã ãÊÕÝÍ ãæÇÆã (ãËá IE 5.5 Ãæ ÃÚáì). æíãßä ááãÓÊÎÏã ÃáÇ íÎÊÇÑ ÇÓÊÎÏÇã ÇáãÍÑÑ.'; -$string['configidnumber'] = 'åÐÇ ÇáÎíÇÑ íÍÏÏ ÓæÇÁ (Ã) ÇáãÓÊÎÏãíä áä íÓÃáæÇ Úä ÇÑÞÇã åæíÇÊåã Úáì ÇáÅØáÇÞ¡ (È) ÇáãÓÊÎÏãíä ÓíÓÃáæÇ Úä ÇÑÞÇã åæíÇÊåã æáßä íãßäåã ÊÑßåÇ ÝÇÑÛÉ¡ (Ì) ÇáãÓÊÎÏãíä ÓíÓÃáæÇ Úä ÇÑÞÇã åæíÇÊåã æáÇ íãßäåã ÊÑßåÇ ÝÇÑÛÉ. áæ ÓÌá ÇáãÓÊÎÏã ÑÞã åæíÊå ÓíÙåÑ Ýí ÇáÓíÑÉ ÇáÐÇÊíÉ. '; +$string['configidnumber'] = 'åÐÇ ÇáÎíÇÑ íÍÏÏ ÓæÇÁ (Ã) ÇáãÓÊÎÏãíä áä íÓÃáæÇ Úä ÇÑÞÇã åæíÇÊåã Úáì ÇáÅØáÇÞ¡ (È) ÇáãÓÊÎÏãíä ÓíÓÃáæÇ Úä ÇÑÞÇã åæíÇÊåã æáßä íãßäåã ÊÑßåÇ ÝÇÑÛÉ¡ (Ì) ÇáãÓÊÎÏãíä ÓíÓÃáæÇ Úä ÇÑÞÇã åæíÇÊåã æáÇ íãßäåã ÊÑßåÇ ÝÇÑÛÉ. áæ ÓÌá ÇáãÓÊÎÏã ÑÞã åæíÊå ÓíÙåÑ Ýí äÈÐÊå ÇáÔÎÕíÉ. '; $string['configintro'] = 'Ýí åÐå ÇáÕÝÍÉ ÊÓÊØíÚ ÊÍÏíÏ ÚÏÏ ãÊÛíÑÇÊ ÇáÊßæíä ÇáÊí ÊÓÇÚÏ Úáì Úãá Moodle ÈÔßá ÌíÏ Úáì ãÒæÏß. áÇ ÊÞáÞ ÈÔÃä Ðáß¡ ÝÇáÃæÖÇÚ ÇáÇÝÊÑÇÖíÉ ÊÚãá ÈÔßá ÌíÏ Ýí ÇáÛÇáÈ¡ ßãÇ Ãä ÈÇÓÊØÇÚÊß Ãä ÊÛíÑ åÐå ÇáÅÚÏÇÏÇÊ áÇÍÞÇ ãä ÎáÇá åÐå ÇáÕÝÍÉ.'; $string['configintroadmin'] = 'åÐÇ ÇáÎíÇÑ íÍÏøÏ ÓæÇÁ (Ã) ÇáãÓÊÎÏãæä áí ãØÇáÈæäó ÈÑÞã åæíøÉ Úáì ÇáÅØáÇÞ, ( È ) ÇáãÓÊÎÏãæä ãØÇáÈæäó ÈÑÞã åæíøÉ áßäø íãßä Ãä íÊÑßå ÝÑÇÛ Ãæ ( Ì ) ÇáãÓÊÎÏãæä ãØÇáÈæäó ÈÑÞã åæíøÉ æ áÇ íãßä Ãä íÊÑßå ÝÑÇÛ . ÅÐÇ ÅÚØì ÑÞã åæíÉ ÇáãÓÊÎÏã ÓíõÚúÑóÖ Ýí ÇáãÍÉ ÇáÔÎÕíÉ.'; $string['configintrosite'] = 'ãä ÎáÇá åÐå ÇáÕÝÍÉ ÊÓØíÚ ÊÑÊíÈ ÇáÕÝÍÉ ÇáÃæáì áãæÞÚß. ÊÓØíÚ ÇáÚæÏÉ áåÐå ÇáÕÝÍÉ áÊÛíÑ ÇáÅÚÏÇÏÇÊ Ýí æÞÊ ÔÆÊ æÐáß ãä ÎáÇá ÇáæÇÕáÉ \"ÅÚÏÇÏÇÊ ÇáãæÞÚ\" Ýí ÇáÕÝÍÉ ÇáÑÆíÓå.'; $string['configlang'] = 'ÇÎÊÑ áÛÉ ÇÝÊÑÇÖíÉ ááãæÞÚ ÈÃßãáå¡ ãÚ ÇáÚáã Ãä ÇáãÓÊÎÏãíä áÏíåã ÇáÞÏÑÉ Úáì ÇÓÊÈÏÇá åÐå ÇáÅÚÏÇÏÇÊ ÈÃÎÑì áÇÍÞÇ.'; $string['configlangdir'] = 'íÊã ØÈÇÚÉ ãÚÙã ÇááÛÇÊ ãä ÇáíÓÇÑ Åáì Çáíãíä¡ æáßä ÈÚÖ ÇááÛÇÊ ãËá ÇáÚÑÈí æÇáÚÈÑí íÊã ÇáØÈÇÚÉ ãä Çáíãä Åáì ÇáÔãÇá.'; $string['configlanglist'] = 'ÅÊÑß åÐÇ ÝÇÑÛ ááÓãÇÍ ááãÓÊÎÏãíä Çä íÎÊÇÑæÇ áÛÉ ãä ÇááÛÇÊ ÇáÊí ÞãÊ ÈÊÒæíÏåÇ ÚäÏ ÊËÈÊß áãæÏá. æáßä¡ ÊÓØíÚ ÅÎÊÕÇÑ ÞÇÆãÉ ÇááÛÉ æÐáß ãä ÎáÇá ÞÇÆãÉ ÈÇááÛÇÊ ÇáãÑÛæÈ ÝíåÇ Úáì Ãä íÝÕá Èíä ÔÝÑÇÊ ÇááÛÇÊ ÈÝÇÕáÉ. Úáì ÓÈíá ÇáãËÇá: en,es_es,fr,it'; -$string['configlangmenu'] = 'ÃÎÊÑ ÅãÇ Ãä ÊÚÑÖ ÞÇÆãÉ ÇááÛÉ ÇáÚÇãÉ Úáì ÇáÕÝÍÉ ÇáÑÆíÓÉ æÕÝÍÉ ÇáÏÎæá Ãæ áÇ. åÐÇ áä íÄËÑ Úáì Êãßíä ÇáãÓÊÎÏãíä ãä ÅÎÊíÇÑ ÇááÛÉ ÇáãÝÖáÉ áåã Ýí ÕÝÍÉ ÓíÑåã ÇáÐÇÊíÉ.'; +$string['configlangmenu'] = 'ÃÎÊÑ ÅãÇ Ãä ÊÚÑÖ ÞÇÆãÉ ÇááÛÉ ÇáÚÇãÉ Úáì ÇáÕÝÍÉ ÇáÑÆíÓÉ æÕÝÍÉ ÇáÏÎæá Ãæ áÇ. åÐÇ áä íÄËÑ Úáì Êãßíä ÇáãÓÊÎÏãíä ãä ÅÎÊíÇÑ ÇááÛÉ ÇáãÝÖáÉ áåã Ýí ÕÝÍÉ äÈÐÊåã ÇáÔÎÕíÉ.'; $string['configlocale'] = 'ÇÎÊÑ ÇáÃÚÏÇÏÇÊ ÇáãÍáíÉ æÇáÊÞæíã ááãæÞÚ ÈÃßãáå. ãÚ ÇáÚáã Ãä åÐå ÓíÄËÑ Úáì ÇáÊäÓíÞ æáÛÉ ÇáÊæÇÑíÎ . æÓæÝ ÊÍÊÇÌ Åáì ÊäÕíÈ ÈíÇäÇÊ ÇáãæÞÚ Úáì äÙÇã ÇáÊÔÛíá ÇáÎÇÕ Èß. ÅÐÇ ßäÊ áÇ ÊÚÑÝ Ãí ÇáÎíÇÑÇÊ ÃäÓÈ¡ ÏÚ ÇáãßÇä ÎÇáíÇ.'; -$string['configloginhttps'] = 'ÊÝÚíá åÐÇ ÓóíóÌúÚáõ ãæÏá ÅÓÊÚãÇáó ÅÊøÕÇáó ÅÊÔ Êí Êí Èí ÅÓ (https) ÇáÂãä ÝÞØ ááÏÎæá Úáì ÕÝÍÉó ÇáÏÎæá Åáì ÇáãæÞÚ (íãäÍ ÏÎæá Âãä)¡ æÈÚÏ Ðáß íóÑúÌÚõ Åáì ÇáØÈíÚíö áãÓÇÑ ÇáÅÊÔ Êí Êí Èí (http) æÐáß áÊÍÓíä ÓÑÚÉö ÇáÃÏÇÁ ÇáÚÇãø. -ÊÍÐíÑ: åÐÇ ÇáÅÚÏÇÏ íÊÊØáÈ ÊÝÚíá ÇáÜ ÅÊÔ Êí Êí Èí ÅÓ (https) Úáì ÎÇÏã ÇáæíÈ- ÅÐÇ áæ áã íõÝÚá ÈåÐÇ ÇáÔßá ÓÊãäÚ äÝÓß ãä ÇáÏÎæá Úáì ãæÞÚß.'; $string['configloglifetime'] = 'åÐÇ íÍÏÏãÏÉ ÇáÝÊÑÉ ÇáÊí ÊÑíÏ ÎáÇáåÇ ÇáÇÍÊÝÇÙ ÈÓÌáÇÊ ÇäÔØÉ ÇáãÓÊÎÏã. ÌãíÚ ÇáÓÌáÇÊ ÇáÊí ÇÞÏã ãä åÐÇ ÇáÊÇÑíÎ ÓÊÍÐÝ ÂáíÇ. ãä ÇáÇÝÖá ÇáÇÍÊÝÇÙ ÈÇáÓÌáÇÊ ÃØæá ÝÊÑ ããßäå ÑÈãÇ ÞÏ ÊÍÊÇÌ ÅáíåÇ¡ æáßä ÅÐÇ ßäÊ ÊÚÇäí ãä ãÔÇßá Ýí äæÚíÉ ÃÏÇÁ ÎÇÏã ãæÞÚß íãßäß ÊÞáíÕ ÝÊÑÉ ÇáÇÍÊÝÇÙ ÈÇáÓÌáÇÊ.'; $string['configlongtimenosee'] = 'ÅÐÇ áã íÊã ÏÎæá ÇáØáÇÈ áÝÊÑÉ ØæíáÉ¡ ÝÓíÄÏí Ðáß Åáì ÅáÛÇÁ ÇÔÊÑÇßåã ãä ÍáÞÇÊ ÇáÏÑÇÓÉ ÃÊæãÇÊíßíÇ. åÐÇ ÇáãÚÇãá íÍÏÏ ÇáãåáÉ ÇáÒãäíÉ áÐáß.'; $string['configmaxbytes'] = 'åÐÇ íÍÏÏ ÇáÍÌã ÇáÇÞÕì ááãáÝÇÊ ÇáãÍãáå Åáì ÇáãæÞÚ ÈÇßãáå. åÐÇ ÇáÅÚÏÇÏ íÎÖÚ áÊÍÏíÏÇÊ (PHP upload_max_filesize ) æ (Apache LimitRequestBody). áÐáß¡ íÊÑÇæÍ ÇáÍÏ ÇáÇÞÕì ááÈÊÇÊ ÇáÊì íãßä ÇÎÊíÇÑåÇ áãÓÊæì ÇáãäåÌ ÇáÏÑÇÓí Ãæ ãÓÊæì ÇáæÍÏÉ.'; $string['configmaxeditingtime'] = 'åÐÇ íÞæã ÈÊÍÏíÏ ÇáãåáÉ ÇáÒãäíÉ ÇáãØáæÈÉ áÅÚÇÏÉ ÊÍÑíÑ ãÑÇÓáÇÊ ÇáãäÊÏíÇÊ æÇáÑÏÚáì ÇáãÐßÑÉ¡ ÅáÎ. æÊÚÏ ÝÊÑÉ 30 ÏÞíÞÉ ÞíãÉ ãäÇÓÈÉ. '; -$string['confignoreplyaddress'] = 'Ýí ÈÚÖ ÇáÃÍíÇä ÊÑÓá ÑÓÇÆá ÇáÈÑíÏ ÇáÅáßÊÑæäíÉ äíÇÈÉð Úóäú ãÓÊÎÏã ãÇ (Úáì ÓÈíá ãËÇá: - ãÔÇÑßÇÊ ÇáãäÊÏíÇÊ). ÚäæÇä ÇáÈÑíÏ ÇáÅáßÊÑæäí ÇáÐí ÓÊÞæã ÈÊõÍÏøÏõ åäÇ Óóíßõæäõ ãÓÊÚãá Ýí ÍÞá \"ÇáãÑÓá\" ÇáÐí íÙåÑ Ýí ÑÓÇáÉ ÇáÈÑíÏ ÇáÅáßÊÑæäí æÐáß ÚäÏ ÚÏã ÇáÑÛÈ Ýí Êãßíä ÇáãÓÊáãíä ááÈÑíÏ ãä ÇáÅÌÇÈÉ ãÈÇÔÑÉ Åáì ÇáãÑÓá ÇáÝÚáí (Úáì ÓÈíá ÇáãËÇá: - ÚäÏãÇ íóÎÊÇÑõ ÇáãÓÊÎÏã ÚÏã ÅÙåÇÑ ÚäæÇäö ÈÑíÏåã ÇáÅáßÊÑæäí).'; -$string['confignotifyloginfailures'] = 'áæ Êã ÊÓÌíá ÍÇáÉ ÇáÏÎæá ÇáÝÇÔáÉ¡ íãßä ÅÑÓÇá ÈÑíÏ ÅáßÊÑæäí ÅÔÚÇÑí íÍÊæí Úáì åÐå ÇáÓÌáÇÊ. áãä ÓíÊã ÅÑÓÇá åÐÇ ÇáÈÑíÏ ÇáÅáßÊÑæäí ÇáÅÔÚÇÑí¿'; -$string['confignotifyloginthreshold'] = 'áæ Êã ÊÝÚíá ÅÔÚÇÑÇÊ ÍÇáÇÊ ÇáÏÎæá ÇáÝÇÔáÉ¡ ßã ÚÏÏ ÇáãÍÇæáÇÊ ááãÓÊÎÏã ÇáæÇÍÏ Ãæ áÚäæÇä ÈÑÊæßæá ÇáÅäÊÑäÊ (IP address) ÇáæÇÍÏÇáÊí ÓíÊã ÇáÅÔÚÇÑ ÚäåÇ¿'; -$string['configopentogoogle'] = 'áæ Êã ÊÝÚíá åÐÇ ÇáÃÚÏÇÏ¡ Óíãßä Google ãä ÇáÏÎæá Åáì ãæÞÚß ßÒÇÆÑ. ÈÇáÅÖÇÝÉ Åáì ßá ÇáÐíä íÈÍËæä Ýí Google ÓíÊãßäæÇ ãä ÇáÏÎæá Åìá ãæÞÚß ßÒÇÆÑíä. áÇÍÙ Ãä ÏÎæáåã Óíßæä ÝÞØ Åáì ÇãäÇåÌ ÇáÏÑÇÓíÉ ÇáÊí ÊÓãÍ ÈÏÎæá ÇáÒæÇÑ.'; -$string['configpathtoclam'] = 'ÇáãÓÇÑ áßáÇãíÝí. ãä Çáããßä Ãä íßæä -like /usr/bin/clamscan or /usr/bin/clamdscan -ÊÍÊÇÌ áåÐÇ ÇáãÓÇÑ áÊÔÛíá ßáÇãíÝí '; -$string['configproxyhost'] = 'ÅÐÇ ßÇä ÇáãÒæÏ ÈÍÇÌÉ Åáì ÇÓÊÎÏÇã ßãÈíæÊÑ proxy (ãËá äÙÇã firewall) ááÏÎæá Úáì ÇáÅäÊÑäÊ¡ ÝÚáíß ÈßÊÇÈÉ ÇÓã ãÖíÝ proxy æÇáãäÝÐ åäÇ. æÅáÇ ÝÏÚ ÇáãßÇä ÎÇáíÇ.'; -$string['configquarantinedir'] = 'ÅÐÇ ÊõÑíÏõ ßáÇãÝí Ãóäú íäÞá ÇáãáÝÇÊó ãõÕóÇÈÉó ÈÇáÝíÑæÓÇÊ Åáì Ïáíá ÇáãÍÌÑ ÕÍí¡ Þã ÈÇÏÎÇá ÇÓã ãÓÇÑ ÇáÏáíá ÈÎÇÏãö ÇáæíÈ Úáì Ãä íßæä ÇáÏáíá ÞÇÈá ááßÊÇÈÉ. áæ ÊÑßÊ åÐÇ ÇáÍÞá ÝÇÑÛÇÕ¡ Ãóæ ÃÏÎáÊ ãÓãì Ïáíá ÛíÑ ãæÌæÏ Ãæ ÛíÑ ÞÇÈá ááßÊÇÈÉ¡ ÝÓíÊã ÍÐÝ ÌãíÚ ÇáãáÝÇÊ ÇáãÕÇÈÉ ÈÇáÝíÑæÓÇÊ. áÇ ÊÞã ÈÅÖÇÝÉ ÇáÚáÇãÉ ÇáÊÇáíÉ Ýí äåÇíÉ ÇáãÓãì /.'; -$string['configrunclamonupload'] = 'åá ÊÑÛÈ Ãä íÞæã ßáÇãÝí ÈÝÍÕ ÇáãáÝÇÊ ÇáãÍãáÉ Åáì ÇáãæÞÚ¿ ÓÊÍÊÇÌ ßÊÇÈÉ ÇáãÓÇÑ ÇáÕÍíÍ áßáÇãÝí ÍÊí íÊãßä ÇáÈÑäÇãÌ ãä ÝÍÕ ÇáãáÝÇÊ (ßáÇãÝí ÚÈÇÑ Úä ÝÇÍÕ ÝíÑæÓÇÊ ãÌÇäí ÈÅãßÇäß ÇáÍÕæá Úáíå ãöäú http://www.clamav.net/)'; +$string['configproxyhost'] = 'ÅÐÇ ßÇä ÇáãÒæÏ ÈÍÇÌÉ Åáì ÇÓÊÎÏÇã ßãÈíæÊÑ proxy (ãËá äÙÇã firewall) ááÏÎæá Úáì ÇáÅäÊÑäÊ¡ ÝÚáíß ÈßÊÇÈÉ ÇÓã ãÖíÝ proxy æÇáãäÝÐ åäÇ. æÅáÇ ÝÏÚ ÇáãßÇä ÎÇáíÇ.'; $string['configsecureforms'] = 'íãßä Ãä íÓÊÎÏã ãæÏá ãÓÊæì Ããä ÅÖÇÝíøðÇ ÚäÏ ÞÈæá ÇáÈíÇäÇÊ ãä äãÇÐÌ ÇáÔÈßÉ . ÅÐÇ ãõßøöäó åÐÇ ÓíÞÇÑä ãÊÛíÑ ãÔíÑÇáÅÊÔ Êí Êí Èí (HTTP_REFERER) ááãÊÕÝÍ ãÚ ÚäæÇä ÇáäãæÐÌ ÇáÍÇáíø . Ýí ÍÇáÇÊ ÞáíáÉ ÌÏøðÇ åÐÇ ÞÏ íÓÈøÈ ãÔÇßá ÅÐÇ ßÇä ÇáãÓÊÎÏã íÓÊÎÏã ÌÏÇÑ äÇÑíø Úáì ÓÈíá ÇáãËÇá (Zonealarm) ÇÚÏ áäÒÚ ãÔíÑÇáÅÊÔ Êí Êí Èí (HTTP_REFERER) ãä ÇáãÑæÑ. ÇáÃÚÑÇÖ Êßæä ÊæÞÝ ÇáäæÐÌ. ÅÐÇ æÇÌå ãÓÊÎÏãæß ãÔÇßá Ýí ÕÝÍÉ ÇáÏøÎæá ( Úáì ÓÈíá ÇáãËÇá ) ÞÏ ÊÑíÏ ÅÚÇÞÉ åÐÇ ÇáãßÇä, ÈÇáÑøÛã ãä Ãäå ÞÏ íÊÑß ãæÞÚß ÃßËÑ ÊÚÑÖÇð Åáì åÌãÇÊ ßáãÉ ÓÑ æÇáÞæøÉ ÇáÌÈÑíøÉ . ÅÐÇ ßäÊ ãÊÑÏÏÇ, ÇÊÑß åÐå ÇáãÌãæÚÉ \"äÚã\".'; $string['configsessioncookie'] = 'åÐÇ ÇáÅÚÏÇÏ íÎÕÕ ÇáÇÓã ÇáãÓÊÎÏã ááßæßíÒ(cookie) ÎáÇá ÌáÓÇÊ ãæÏá. åÐÇ ÇáæÖÚ ÅÎÊíÇÑí æãÝíÏ áÊÌäÈ ÇáÑÊÈÇßÇÊ ÇáÊí ÞÏ ÊÍÕá ÃËäÇÁ ÇÓÊÎÏã ÇßËÑ ãä äÓÎÉ áãæÏá Úáì äÝÓ ÇáãæÞÚ.'; $string['configsessiontimeout'] = 'ÓíÞæã ÇáäÙÇã ÈÅÎÑÇÌ ÇáãÓÊÎÏãíä ÂáíÇð Ýí ÍÇáÉ ÚÏã ÊÕÝÍåã Ãæ ÊÍãáåã ááãáÝÇÊ áãÏÉ Òãäíå. åÐÇ ÇáãÊÛíÑ íÍÏÏ Øæá ÇáãÏÉ ÇáÒãäíÉ ÇáÊì íãßä ááãÓÊÎÏã ÇáÈÞÇÁ Ýí ÇáäÙÇã Ïæä Åí äÔÇØ.'; -$string['configshowsiteparticipantslist'] = 'ßá ØáÇÈ æãÚáãæä ÇáãæÞÚ ÓíÊã ÊÕäíÝåã Ýí ÞÇÆãÉ ÇáãÔÇÑßíä. áãä ÓíÓãÍ ãÔÇåÏÉ ÞÇÆãÉ ÇáãÔÇÑßíä'; -$string['configsitepolicy'] = 'ÅÐÇ ßÇä áÏíß ÇÊÝÇÞíÉ ÇÔÊÑÇß æÇáÊí íÌÈ Úáì ßá ÇáãÔÇÑßíä ÇáãæÇÝÞÉ ÚáíåÇ ÞÈá ÇÓÊÎÏÇã ÇáãæÞÚ¡ ÇÐä íÌÈ Úáíß ßÊÇÈÉÑÇÈØ ÕÝÍÉ ÇáÇÊÝÇÞíÉ Ýí åÐÇ ÇáÍÞá¡ Ãæ ÊÑß ÇáÍÞá ÝÇÑÛÇø Ýí ÍÇáÉ ÚÏã æÌæÏ ÇÊÝÇÞíÉ. íãßä áÑÇÈØ Çä íÔíÑ Åáì ãÌáÏ íÍÊæí Úáíå ÇáãáÝ Úáì ÓÈíá ÇáãËÇá: http://yoursite/file.php/1/policy.html'; $string['configslasharguments'] = 'íÊã ÊÒæíÏ ÇáãáÝÇÊ (ÇáÕæÑ æÇáÊÍãíáÇÊ¡ ÇáÎ) Úä ØÑíÞ äÕ íÓÊÎÏã \'slash arguments\' (æÊãËá ÇáÎíÇÑ ÇáËÇäí åäÇ). åÐÇ ÇáÃÓáæÈ íÓãÍ ÈÊÎÒíä ãÄÞÊ ááãáÝÇÊ Ýí ÚÇÑÖ ÇáÅäÊÑäÊ ÈÔßá ÃÓåá¡ æßÐÇ ãÒæÏÇÊ proxy ¡ ÅáÎ. áßä ááÃÓÝ ÈÚÖ ãÒæÏÇÊ PHP áÇ ÊÓãÍ ÈåÐÇ ÇáÃÓáæÈ. áÐÇ ÝÝí ÍÇáÉ äÔæÁ ãÔßáÉ ÚäÏ ÚÑÖ ÇáãáÝÇÊ Ãæ ÇáÕæÑ ÇáãÍãáÉ (ãËá ÕæÑ ÇáãÓÊÎÏã) íäÕÍ ÈæÖÚ åÐÇ ÇáãÊÛíÑ Ýí ÇáÎíÇÑ ÇáÃæá.'; $string['configsmtphosts'] = 'ÇßÊÈ ÇáÇÓã ßÇãáÇ áÎÇÏã Ãæ ÎÇÏãÇÊ SMTP ÇáãÍáíÉ ÇáÊí ÓæÝ íÓÊÎÏãåÇ ÇáãæÞÚ Ýí ÅÑÓÇá ÇáÈÑíÏ (ãËá \'mail.a.com\' or \'mail.a.com;mail.b.com\' ). ÅÐÇ ÊÑßÊå ÎÇáíÇ¡ ÓæÝ íÓÊÎÏã ÇáãæÞÚ ÇáÃÓáæÈ ÇáÇÝÊÑÇÖí Ýí PHP Ýì ÅÑÓÇá ÇáÈÑíÏ.'; $string['configsmtpuser'] = 'ÅÐÇ ßäÊ ÞÏ ÞãÊ ÈÊÍÏíÏ ãÒæÏ SMTP ãä ÞÈá¡ æíÍÊÇÌ ÇáãÒæÏ Åáì ÇáÊÍÞÞ ãä ÇáãÓÊÎÏã¡ Þã ÈÅÏÎÇá ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ åäÇ.'; -$string['configteacherassignteachers'] = 'åá íãßä ááãÚáãæä ÇáÚÇÏííä ÊÚíä ãÚáãíä ÇÎÑíä ááãäåÌ ÇáÏÑÇÓí ÇáÐí íÞæã ÈÊÏÑíÓå¿ áæ ßÇäÊ ÇáÇÌÇÈÉ \"áÇ\" ÅÐÇ ÝÞØ ãäÔÄ ÇáãäÇåÌ ÇáÏÑÇÓíÉ æÇáãÏíÑä ÇáÐíä íÓÊØíæä ÊÚííä ÇáãÚáãæä.'; -$string['configtimezone'] = 'åäÇÁ ÊÓÊØíÚ ÊÍÏíÏ ÇáãäØÞÉ ÇáÒãäíÉÇáÃÝÊÑÇÖíÉ. ÇáãäØÞÉ ÇáÒãäíÉ åÐå åí ÝÞØ áÇÙåÇÑ ÇáÊÇÑíÎ - ßá ãÓÊÎÏã íÓÊØíÚ åÐÇ ÇáÇÚÏÇÏ æÐáß Úä ØÑíÞ ÇÎÊíÇÑ ãäØÞÉ ÇáÒãäíÉ ÃÎÑì ãä ÎáÇá ÕÝÍÉ ÇáÓíÑÉ ÇáÐÇÊíÉ. \"æÞÊ ÇáãÒæÏ\" åäÇÁ ÓíÌÚá ÇáæÞÊ ÇáÃÝÊÑÇÖí áãæÏá åæ æÞÊ ÇáãÒæÏ¡ æáßä \"æÞÊ ÇáãÒæÏ\" Ýí ÕÝÍÉ ÇáÓíÑÉ ÇáÐÇÊíÉ ááãÓÊÎÏãíä Óíßæä åæ ÇáæÞÊ ÇáÃÝÊÑÇÖí.'; +$string['configteacherassignteachers'] = 'åá íãßä ááãÏÑÓíä ÇáÚÇÏííä ÊÚíä ãÏÑÓíä ÇÎÑíä ááãäåÌ ÇáÏÑÇÓí ÇáÐí íÞæã ÈÊÏÑíÓå¿ áæ ßÇäÊ ÇáÇÌÇÈÉ \"áÇ\" ÅÐÇ ÝÞØ ãäÔÄ ÇáãäÇåÌ ÇáÏÑÇÓíÉ æÇáãÏíÑä ÇáÐíä íÓÊØíæä ÊÚííä ÇáãÏÑÓíä.'; $string['configunzip'] = 'Úíä ãæÖÚ ÈÑäÇãÌ unzip ÇáÐí ÊÓÊÎÏãå (ãÚUnix ÝÞØ). åÐÇ ÇáÈÑäÇãÌ ÖÑæÑí áÝß ÇáÃÑÔíÝÇÊ ÇáãÖÛæØÉ Úáì ÇáãÒæÏ.'; $string['configuration'] = 'ÅÚÏÇÏÇÊ ÇáãæÞÚ'; $string['configvariables'] = 'ãÊÛíÑÇÊ ÇáãæÞÚ'; @@ -232,16 +172,12 @@ $string['confirm'] = ' $string['confirmed'] = 'Êã ÊÃßíÏ ÇáÊÓÌíá'; $string['confirmednot'] = 'ÊÓÌíáß áã íÃßÏ ÈÚÏ!'; $string['continue'] = 'ÇÓÊãÑ'; -$string['continuetocourse'] = 'ÃäÞÑ åäÇÁ ááÏÎæá Åáì ãäåÌß ÇáÏÑÇÓí'; $string['cookiesenabled'] = 'åÐÇ ÇáãÊÕÝÍ íÌÈ Ãä íÏÚã ÇáÜ Cookies '; -$string['cookiesnotenabled'] = 'áÓæ ÇáÍÙ¡ áã Êãßä ÎÇÕíÉ ÇáßÒßíÒ Ýí ãÊÕÝÍß.'; $string['copy'] = 'äÓÎ'; $string['copyingcoursefiles'] = 'äÓÎ ãáÝÇÊ ÇáãäåÌ ÇáÏÑÇÓí'; $string['copyinguserfiles'] = 'äÓÎ ãáÝÇÊ ÇáãÓÊÎÏã'; $string['copyingzipfile'] = 'äÓÎ ãáÝ ãÖÛæØ'; $string['copyrightnotice'] = 'ãáÍæÙÉ ÍÞæÞ ÇáØÈÚ'; -$string['cost'] = 'ÇáÞíãÉ'; -$string['costdefault'] = 'ÇáÞíãÉ ÇáÃÝÊÑÇÖíÉ'; $string['country'] = 'ÇáÏæáÉ'; $string['course'] = 'ãäåÌ ÏÑÇÓí'; $string['courseavailable'] = 'åÐÇ ÇáãäåÌ ÇáÏÑÇÓí ãÊæÝÑ ááØáÇÈ'; @@ -263,7 +199,6 @@ $string['createaccount'] = ' $string['createfolder'] = 'ÅäÔÇÁ ãÌáÏ Ýí $a'; $string['createuserandpass'] = 'ãä ÝÖáß ÓÌá ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ ááÏÎæá ÈåãÇ ÝíãÇ ÈÚÏ'; $string['createziparchive'] = 'ÅäÔÇÁ ÃÑÔíÝ ãÖÛæØ'; -$string['creatingblocks'] = 'ÃäÔÇÁ ßÊáÉ'; $string['creatingcategoriesandquestions'] = 'ÅäÔÇÁ ÃÕäÇÝ æÇÓÆáÉ'; $string['creatingcoursemodules'] = 'ÅäÔÇÁ æÍÏÉ ãäåÌ ÏÑÇÓí'; $string['creatingevents'] = 'ÅäÔÇÁ ÃÍÏÇË'; @@ -275,7 +210,6 @@ $string['creatingsections'] = ' $string['creatingtemporarystructures'] = 'ÅäÔÇÁ åíÇßá ãÄÞÊÉ'; $string['creatingusers'] = 'ÅäÔÇÁ ãÓÊÎÏãíä'; $string['creatingxmlfile'] = 'ÅäÔÇÁ ãáÝ XML'; -$string['currency'] = 'ÚãáÉ'; $string['currentcourseadding'] = 'ÅÖÇÝÉ ãÚáæãÇÊ ááãäåÌ ÇáÏÑÇÓí ÇáÍÇáí'; $string['currentcoursedeleting'] = 'ÍÐÝ ÇáãäåÌ ÇáÏÑÇÓí ÇáÍÇáí ÃæáÇð'; $string['currentlanguage'] = 'ÇááÛÉ ÇáÍÇáíÉ'; @@ -290,22 +224,19 @@ $string['databasesuccess'] = ' $string['databaseupgradebackups'] = 'ÇáäÓÎ ÇáÅÍÊíÇØí ááÅÕÏÑÇ ÇáÂä $a'; $string['databaseupgradeblocks'] = 'ÅÕÏÇÑ ÇáßÊá ÇáÇä åæ $a'; $string['databaseupgrades'] = 'ÊÍÏíË ÞÇÚÏÉ ÇáÈíÇäÇÊ'; -$string['date'] = 'ÊÇÑíÎ'; $string['datemostrecentfirst'] = 'ÇáÊÇÑíÎ - ÇáÇÍÏË ÃæáÇð'; $string['datemostrecentlast'] = 'ÇáÊÇÑíÎ - ÇáÇÍÏË ÃÎÑÇð'; $string['day'] = 'íæã'; $string['days'] = 'ÃíÇã'; -$string['decodinginternallinks'] = 'ÊÔÝíÑ ÇáÑæÇÈØ ÇáÏÇÎáíÉ'; $string['defaultcoursefullname'] = 'ÇáÇÓã ÇáßÇãá ááãäåÌ ÇáÏÑÇÓí 101'; $string['defaultcourseshortname'] = 'ãäåÌ 101'; $string['defaultcoursestudent'] = 'ÇáØÇáÈ'; $string['defaultcoursestudents'] = 'ÇáØáÇÈ'; $string['defaultcoursesummary'] = 'ÇßÊÈ ÝÞÑÉ ãÎÊÕÑÉ ÊÔÑÍ ÝíåÇ ãæÖæÚ ÇáãäåÌ ÇáÏÑÇÓí'; -$string['defaultcourseteacher'] = 'ãÚáã'; -$string['defaultcourseteachers'] = 'ãÚáãæä'; +$string['defaultcourseteacher'] = 'ÇáãÏÑÓ'; +$string['defaultcourseteachers'] = 'ÇáãÏÑÓæä'; $string['delete'] = 'ÍÐÝ'; $string['deleteall'] = 'ÍÐÝ Çáßá'; -$string['deletecategorycheck'] = 'åá ÇäÊ ãÊÃßÏááÞíÇã ÈÍÐÝ åÐÇ ÇáÕäÝ ÊãÇãÇ\'a$\'?
        ßá ãäÇåÌ ÏÑÇÓíÉ ÓÊäÞá Ãáì ÇáÕäÝ ÇáÑÆíÓ áæ æÌÏ ÕäÝ ÑÆíÓ¡ Ãæ Åáì ãäæÚÇÊ.'; $string['deletecheck'] = 'ÍÐÝ $a ?'; $string['deletecheckfiles'] = 'åá ÃäÊ ãÊÃßÏ ÊãÇã ÇáÞíÇã ÈÚãáíÉ ÍÐÝ åÐå ÇáãáÝÇÊ'; $string['deletecheckfull'] = 'åá ÃäÊ ãÊÃßÏ Ãäß ÊÑíÏ ÍÐÝ $a ?'; @@ -323,9 +254,6 @@ $string['deletingexistingcoursedata'] = ' $string['deletingolddata'] = 'ÍÐÝ ãÚáæãÇÊ ÇáÞÏíãÉ'; $string['department'] = 'ÞÓã'; $string['description'] = 'ÇáæÕÝ'; -$string['detailedless'] = 'ÊÝÇÕíá ÃÞá'; -$string['detailedmore'] = 'ÊÝÇÕíá ÃßËÑ'; -$string['directorypaths'] = 'ãÓÇÑÇÊ ÇáÇÏáÉ'; $string['disable'] = 'ÊÚØíá'; $string['displayingfirst'] = 'ÝÞØ ÇáÇæá $a->count $a->things ÓíÚÑÖ'; $string['displayingrecords'] = 'ÚÑÖ $a ÇáÓÌáÇÊ'; @@ -336,38 +264,17 @@ $string['down'] = ' $string['downloadexcel'] = 'ÊÍãíá Ýí ÊäÓíÞ ÅßÓá'; $string['downloadtext'] = 'ÊÍãíá Ýí ÕíÛÉ äÕ'; $string['doyouagree'] = 'åá ÞãÊ ÈÞÑÇÁÉ åÐå ÇáÔÑæØ æÇÓÊíÚÇÈåÇ¿'; -$string['duplicate'] = 'äÓÎ ãØÇÈÞ'; -$string['duplicatinga'] = 'íÊã äÓÎ ãØÇÈÞ: $a'; -$string['duplicatingain'] = 'äÓÎ ãØÇÈÞ $ a> whatÝí $ a> in'; -$string['edhelpbgcolor'] = 'ÚÑÝ áæä ÎáÝíÉ ÇáãÍÑÑ.
        ÇáÞíã ÇáãÊÚÇÑÝ ÚáíåÇ Úáì ÓÈíá ÇáãËÇá åí: #ffffff ááæä ÇáÃÈíÖ.'; -$string['edhelpcleanword'] = 'åÐÇ ÇáÅÚÏÇÏ áÊÝÚíá Ãæ ÊÚØíá ãÑÔÍ ÇáÊäÓíÞ ÇáÎÇÕ ÈãÇßÑæ ÓæÝ æÑÑÏ.'; -$string['edhelpenablespelling'] = 'Êãßíä Ãæ ÊÚØá ÇáÊÏÞíÞ ÇáÃãáÇÆí. ÚäÏ ÇáÊãßíä aspell íÌÈ Ãä íßæä ãËÈÊ Úáì ÇáãÒæÏ.'; -$string['edhelpfontfamily'] = 'ÎÇÕíÉ ÚÇÆáÉ ÇáÎØæØ åí ÚÈÇÑÉ Úä ÞÇÆãÉ ÊÍÊæí Úáì ÇÓãÇÁ ÚÇÆáÉ ÇáÎØæØ (Ãæ/æ)ÇÓãÇÁ ÚÇãÉ. ÃÓãÇÁ 򾂮á ÇáÎØæØ íÌÈ Çä íÝÕá ÈíäåÇ ÈÜ ÝÇÕáÉ (,)'; -$string['edhelpfontlist'] = 'ÚÑÝ ÇáÎØæØ ÇáãÓÊÎÏãÉ Ýí ãÓÏáÉ ÎØæØ ÇáãÍÑÑ'; -$string['edhelpfontsize'] = 'ÍÌã ÇáÎØ ÇáÃÝÊÑÇØí íÍÏÏ ÍÌã ÇáÎØ.
        Valid ÇáÞíã Úáì ÓÈíá ÇáãËÇá : medium, large, smaller, larger, 10pt, 11px.'; $string['edit'] = 'ÍÑÑ $a'; $string['editcoursesettings'] = 'ÍÑÑ ÅÚÏÇÏÇÊ ÇáãäåÌ ÇáÏÑÇÓí'; $string['editfiles'] = 'ÍÑÑ ÇáãáÝÇÊ'; $string['editgroupprofile'] = 'ÊÍÑíÑ ÓãÇÊ ÇáãÌãæÚÉ'; $string['editinga'] = 'ÊÍÑíÑ $a'; -$string['editingteachershort'] = 'ãÍÑÑ'; -$string['editlock'] = 'áÇ íãßä ÊÍÑíÑ åÐå ÇáÞíã'; -$string['editmyprofile'] = 'ÍÑÑ ãáÝ ÓíÑÊß ÇáÐÇÊíÉ'; -$string['editorbgcolor'] = 'áæä ÇáÎáÝíÉ'; -$string['editorcleanonpaste'] = 'äÙÝ ãíßÑæ ÓæÝ æÑÑÏ ÊÔ Êí Åã Ãá ÚäÏ ÇááÕÞ'; -$string['editorcommonsettings'] = 'ÇáÇÚÏÇÏÇÊ ÇáãÊÚÇÑÝ ÚáíåÇ'; -$string['editordefaultfont'] = 'ÇáÎØ ÇáÇÝÊÑÇÖí'; -$string['editorenablespelling'] = 'ãßä ÇáãÏÞÞ ÇáÃãáÇÆí'; -$string['editorfontlist'] = 'ÞÇÆãÉ ÇáÎØæØ'; -$string['editorfontsize'] = 'ÍÌã ÇáÎØ ÇáÇÝÊÑÇÖí'; -$string['editorresettodefaults'] = 'ÅÚÇÏÉ ÇáÞíã ááæÖÚ ÇáÇÝÊÑÇÖí'; -$string['editorsettings'] = 'ÅÚÏÇÏÇÊ ÇáãÍÑÑ'; +$string['editmyprofile'] = 'ÍÑÑ ãáÝ ÇáÈíÇäÇÊ'; $string['editsummary'] = 'ÍÑÑ ãáÎÕ'; $string['editthisactivity'] = 'ÊÚÏíá åÐÇ ÇáäÔÇØ'; $string['editthiscategory'] = 'ÍÑÑ åÐÇ ÇáÕäÝ'; $string['edituser'] = 'ÍÑÑ ÈíÇäÇÊ ãÓÊÎÏã'; $string['email'] = 'ÚäæÇä ÇáÈÑíÏ ÇáÅáßÊÑæäí'; -$string['emailactive'] = 'Êã ÊÝÚíá ÇáÈÑíÏ ÇáÅáßÊÑæäí'; $string['emailagain'] = 'ÇáÈÑíÏ ÇáÅáßÊÑæäí ËÇäíÇð'; $string['emailconfirm'] = 'Þã ÈÊÃßíÏ ÇÔÊÑÇßß'; $string['emailconfirmation'] = 'ãÑÍÈÇ $a->firstname, @@ -379,26 +286,18 @@ $string['emailconfirmation'] = ' ÊÍíÇÊ ãä \'$a->sitename\' ÇáãÏíÑ, $a->admin'; $string['emailconfirmationsubject'] = '$a ÊÃßíÏ ÇáÍÓÇÈ:'; -$string['emailconfirmsent'] = '

        Êã ÅÑÓÇá ÈÑíÏ Åáì $a

        -

        æÇáÐí íÍÊæí Úáì ÅÑÔÇÏÇÊ ÓåáÉ ÊÚíäß Úáì ÅÊãÇã ÇáÊÓÌíá

        -

        ÅÐÇ ÇÓÊãÑÊ ÇáãÔÇßá ÇÊÕá ÈãÏíÑ åÐÇ ÇáãæÞÚ

        '; -$string['emaildigest'] = 'ÈÑíÏ ÅáßÊÑæäí ãáÎÕ'; -$string['emaildigestcomplete'] = 'ßÇãá (ÈÑíÏ ÅáßÊÑæäí íæãí íÍÊæí ßÇãá ÇáãÔÇÑßÇÊ)'; -$string['emaildigestoff'] = 'ÈÏæä ãáÎÕ (ÈÑíÏ ÅáßÊÑæäí æÇÍÏ áßá ãÔÇÑßÉ ãäÊÏì)'; -$string['emaildigestsubjects'] = 'ãæÇÖíÚ (ÈÑíÏ ÅáßÊÑæäí íæãí íÍÊæí Úáì ÇáæÇÖíÚ ÝÞØ)'; +$string['emailconfirmsent'] = '

        Êã ÅÑÓÇá ÈÑíÏ Åáì $a +

        æÇáÐí íÍÊæí Úáì ÅÑÔÇÏÇÊ ÓåáÉ ÊÚíäß Úáì ÅÊãÇã ÇáÊÓÌíá +

        ÅÐÇ ÇÓÊãÑÊ ÇáãÔÇßá ÇÊÕá ÈãÏíÑ åÐÇ ÇáãæÞÚ'; $string['emaildisable'] = 'ÚäæÇä åÐÇ ÇáÈÑíÏ ÇáÅáßÊÑæäí ãÚØá'; -$string['emaildisableclick'] = 'ÃäÞÑ åäÇÁ áÊÚØíá ÅÑÓÇá Ãí ÈÑíÏ ÅáßÊÑæäí áåÐÇ ÇáÚäæÇä'; $string['emaildisplay'] = 'ÚÑÖ ÇáÈÑíÏ'; $string['emaildisplaycourse'] = 'ÅÙåÇÑ ÚäæÇäí ÇáÈÑíÏí ááãÔÇÑßíä Ýí ÍáÞÇÊ ÏÑÇÓíÉ ÃÎÑì ÝÞØ'; $string['emaildisplayno'] = 'ÅÎÝÇÁ ÚäæÇäí ÇáÈÑíÏí Úä Çáßá'; $string['emaildisplayyes'] = 'ÅÙåÇÑ ÚäæÇäí ÇáÈÑíÏí ááßá'; $string['emailenable'] = 'ÚäæÇä åÐÇ ÇáÈÑíÏ ÇáÅáßÊÑæäí ããßä'; -$string['emailenableclick'] = 'ÃäÞÑ åäÇÁ ááÅÚÇÏÉ Êãßíä ÅÑÓÇá ÇáÈÑíÏ ÅáßÊÑæäí áåÐÇ ÇáÚäæÇä'; $string['emailexists'] = 'åÐÇ ÇáÚäæÇä ÇáÈÑíÏí ãæÌæÏ ÈÇáÝÚá.'; $string['emailformat'] = 'ÊäÓíÞ ÇáÈÑíÏ'; $string['emailmustbereal'] = 'áÇÈÏ Ãä íßæä ÚäæÇä ÈÑíÏß ÇáÅáßÊÑæäí ÍÞíÞíÇ'; -$string['emailnotallowed'] = 'ÚäÇæíä ÇáÈÑíÏ ÇáÅáßÊÑæäí áåÐå ÇáãÌÇáÇÊ áÇ íÓãÍ ÈåÇ ($a)'; -$string['emailonlyallowed'] = 'åÐÇ ÇáÈÑíÏ ÇáÅáßÊÑæäí áíÓ ãä ÇáÚäÇæíä ÇáãÕÑÍ áåÇ($a)'; $string['emailpasswordconfirmation'] = 'ÃåáÇ $a->firstname, ÔÎÕ ãÇ(ÑÈãÇ ÃäÊ) ØáÈÊ ßáãÉ ÓÑ ÌÏíÏáÍÓÇÈß Ýí @@ -407,42 +306,33 @@ $a->firstname, $a->link Ýí ãÚÙã ÈÑÇãÌ ÇÓÊÞÈÇá ÇáÈÑíÏ ÇáÅáßÊÑæä ÓíÙåÑ åÐÇ ÇáÚäæÇä ÈÎØ ÇÒÑÞ äÔØ íßä ÇáäÞÑ Úáíå ÈÇáÝÇÑå. Ýí ÍÇáÉ ÝÔá ÚãáíÉ ÇáäÞÑ ÈÇáÝÇÑå¡ Þã ÈäÓÎ ÇáÚäæÇä ßÇãáÇ æáÕÞÉ Ýí ÎÇäÉ ÇáÚäæÇä ÈÇáãÊÕÝÍ Ýí ÍÇáÉ ÑÛÈÊãß ÇáÍÕæá Úáì ãÓÇÚÏÉ¡ íãßäß ÇáÇÊÕÇá ÈãÏíÑ ÇáãæÞÚ -$a->admin'; +$a->admin +'; $string['emailpasswordconfirmationsubject'] = '$a ÊÛíÑ ßáãÉ ÇáãÑæÑ:'; $string['emailpasswordconfirmsent'] = 'ãä ÇáãÝÊÑÖ Çäå ÞÏ Êã ÅÑÓÇá ÈÑíÏ ÅáßÊÑæäí Åáì ÚäæÇä ÈÑíÏß ÇáÅáßÊÑæäí$a -
        íÍÊæí Úáì áÊÇßíÏ æÅäåÇÁ ÊÛíÑ ßáãÉ ÇáÓÑ +

        íÍÊæí Úáì áÊÇßíÏ æÅäåÇÁ ÊÛíÑ ßáãÉ ÇáÓÑ Ýí ÍÇáÉ ÍÕæá Úáì ÕÚæÈÇÊ Þã ÈÇáÇÊÕÇá ÈãÏíÑ ÇáãæÞÚ $a->admin'; $string['emailpasswordsent'] = 'ÔßÑðÇ áÊÃßíÏ ÊÛííÑ ßáãÉ ÇáÓøÑø -
        Êã ÅÑÓÇá ÈÑíÏ ÅáßÊÑæäí Åáì ÚäæÇä ÈÑíÏß ÇáÅáßÊÑæäí íÍÊæí Úáì ßáãÉ ÇáÓÑ ÇáÌÏíÏÉ +

        Êã ÅÑÓÇá ÈÑíÏ ÅáßÊÑæäí Åáì ÚäæÇä ÈÑíÏß ÇáÅáßÊÑæäí íÍÊæí Úáì ßáãÉ ÇáÓÑ ÇáÌÏíÏÉ $a->email -
        ßáãÉ ÇáÓÑ ÇáÌÏíÏ ÅäÔÆÊ ÂáíÇ¡ ÑÈãÇ ÊÑÛÈ Ýí -link\">ÛíÑ ßáãÉ ÇáÓÑ ÇáÎÇÕÉ ÈßÅáí ÔÆ ÊÓÊØíÚ ÊÐßÑå'; +

        ßáãÉ ÇáÓÑ ÇáÌÏíÏ ÅäÔÆÊ ÂáíÇ¡ ÑÈãÇ ÊÑÛÈ Ýí +link>ÛíÑ ßáãÉ ÇáÓÑ ÇáÎÇÕÉ ÈßÅáí ÔÆ ÊÓÊØíÚ ÊÐßÑå'; $string['enable'] = 'Êãßíä'; -$string['encryptedcode'] = 'ÑãÒ ãÔÝÑ'; $string['enrolledincourse'] = 'ãÓÌá Ýí ÇáãäåÌ ÇáÏÑÇÓí '; $string['enrolledincoursenot'] = 'ÛíÑ ãÓÌá Ýí ÇáãäåÌ ÇáÏÑÇÓí '; -$string['enrollfirst'] = 'íÌÈ Úáíß ÇáÊÓÌíá Ýí ãäåÌ ÏÑÇÓí æÇÍÏ Úáì ÇáÇÞá áÊÊãßä ãä ÇÓÊÎÏÇã ÇäÔØÉ ÇáãæÞÚ'; $string['enrolmentconfirmation'] = 'ÇäÊ Úáì æÔß ÇáÊÓÌíá ßÚÖæ Ýí åÐ ÇáãäåÌ ÇáÏÑÇÓí
        åá ÃäÊ ãÊÃßÏ ãä Ðáß¿'; $string['enrolmentkey'] = 'ãÝÊÇÍ ÇáÊÓÌíá'; -$string['enrolmentkeyfrom'] = 'åÐÇ ÇáãäåÌ ÇáÏÑÇÓí íÊØáÈ \'ãÝÊÇÍ ÊÓÌíá\' - Ýí ÇáãÑÉ ÇáÃæáì ÝÞØ
        +$string['enrolmentkeyfrom'] = 'åÐÇ ÇáãäåÌ ÇáÏÑÇÓí íÊØáÈ \'ãÝÊÇÍ ÊÓÌíá\' - Ýí ÇáãÑÉ ÇáÃæáì ÝÞØ
        ßáãÉ ÇáãÑæÑ ÇáÊí íÝÊÑÖ ÍÕæáß ÚáíåÇ ãä $a'; -$string['enrolmentkeyhint'] = 'ãÝÊÇÍ ÇáÊÓÌíá ÛíÑ ÕÍíÍ. íÑÌì ÅÚÇÏÉ ÇáãÍÇæáÉ
        +$string['enrolmentkeyhint'] = 'ãÝÊÇÍ ÇáÊÓÌíá ÛíÑ ÕÍíÍ. íÑÌì ÅÚÇÏÉ ÇáãÍÇæáÉ
        (åÐÇ ÊáãíÍ - Åäå íÈÏà ÈÜ \'$a\''; -$string['enrolmentnew'] = 'ÊÓÌíá ÌÏíÏ Ýí $a'; -$string['enrolmentnewuser'] = '$a->user ÞÇã ÈÇáÊÓÌíá Ýí \"$a->course\"'; -$string['enrolmentnointernal'] = 'ÇáÊÓÌíá ÇáíÏæí ÛíÑ ãÝÚá ÍÇáíÇð'; -$string['enrolmentnotyet'] = 'ÚÐÑÇð¡ áÇ ÊÓÊØíÚ ÇáÏÎæá Åáì åÐÇ ÇáãäåÌ ÇáÏÑÇÓí ÍÊì
        $a'; -$string['enrolments'] = 'ÊÓÌíáÇÊ'; -$string['enrolperiod'] = 'ÝÊÑÉ ÇáÊÓÌíá'; $string['entercourse'] = 'ÇáÏÎæá Åáì åÐÇ ÇáãäåÌ ÇáÏÑÇÓí'; $string['enteremailaddress'] = 'ÃÏÎá ÚäæÇä ÈÑíÏß ÇáÅáßÊÑæäí áÊÕáß Úáíå ÑÓÇáÉ ÈÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ.'; -$string['entries'] = 'ãÏÎáÇÊ'; $string['error'] = 'ÎØÇÁ'; $string['errortoomanylogins'] = 'ÚÐÑÇáÞÏ ÊÌÇæÒË ÇáÍÏ ÇáÇÞÕì áãÍÇæáÇÊ ÇáÏÎæá. ÇÚÏ ÊÔÛíá ÇáãÊÕÝÍ.'; $string['errorwhenconfirming'] = 'áã ÊÊã ÚãáíÉ ÇáÊÇßíÏ ÈÚÏ æÐáß áÍÕæá ÎØÇÁ ãÇ. áæ Çäß äÞÑÉ Úáì ÇáÚäæÇä ÇáãÑÓá Åáì ÈÑíÏ ÇáÅáßÊÑæäí áäÞáß ÅáìåäÇÁ¡ ÊÇßÏ ãä Çäß äÞÑÉ Úáì ÇáÚäæÇä ßÇãáÇ¡ íãßäß äÓÎ æáÕÞ ÇáÚäæÇä ááÞíÇã ÈÚãáíÉ ÇáäÞá Åáì ÇáãæÞÚ ÈÔßá ÃÝÖá'; -$string['everybody'] = 'Çáßá'; $string['executeat'] = 'äÝÐ Ýí ÍÇáÉ'; $string['existing'] = 'ãæÌæÏ'; $string['existingadmins'] = 'ÇáãÏÑÇÁ ÇáãæÌæÏíä'; @@ -451,12 +341,8 @@ $string['existingcourseadding'] = ' $string['existingcoursedeleting'] = 'ÍÐÝ ãÚáæãÇÊ ãä ãäåÌ ÏÑÇÓí ãæÌæÏ'; $string['existingcreators'] = 'ãäÔÆæä ÇáãäåÌ ÇáÏÑÇÓí ÇáãæÌæÏíä'; $string['existingstudents'] = 'ÇáØáÇÈ ÇáãÓÌáæä'; -$string['existingteachers'] = 'ÇáãÚáãæä ÇáãæÌæÏæä'; -$string['explanation'] = 'ÔÑÍ / ÊÝÓíÑ'; -$string['failedloginattempts'] = '$a->attempts ÇáÍÇæáÇÊ ÇáÏÎæá ÇáÝÇÔáÉ ãäÐ ÃÎÑ ÒíÇÑÉ áß'; -$string['failedloginattemptsall'] = '$a->attempts ãÍÇæáÇÊ ÏÎæá ÝÇÔáÉ $a->accounts ááÍÓÇÈÇÊ'; +$string['existingteachers'] = 'ÇáãÏÑÓæä ÇáãæÌæÏæä'; $string['feedback'] = 'ÊÞÑíÑ'; -$string['file'] = 'ãáÝ'; $string['filemissing'] = '$a ÛíÑ ãæÌæÏ'; $string['files'] = 'ãáÝÇÊ'; $string['filesfolders'] = 'ãáÝÇÊ / ãÌáÏÇÊ'; @@ -471,12 +357,9 @@ $string['force'] = ' $string['forcedmode'] = 'æÖÚ ÅÌÈÇÑí'; $string['forcelanguage'] = 'ÅÌÈÇÑ ÇááÛÉ'; $string['forceno'] = 'ÚÏã ÇáÅÌÈÇÑ'; -$string['forcepasswordchange'] = 'ÅÌÈÇÑ ßáãÉ ÇáãÑæÑ'; -$string['forcepasswordchangehelp'] = 'ÃÔÚÑ ÇáãÓÊÎÏã ÈÊÛíÑ ßáãÉ ÇáãÑæÑ ÚäÏ ÇáÏÎæá ááãæÞÚ ËÇäíÇð'; $string['forgotten'] = 'åá äÓíÊ ÇÓã ÇáÏÎæá Ãæ ßáãÉ ÇáãÑæÑ¿'; $string['format'] = 'ÊäÓíÞ'; $string['formathtml'] = 'ÊäÓíÞ HTML'; -$string['formatmarkdown'] = 'ÊäÓíÞ Markdown'; $string['formatplain'] = 'ÊäÓíÞ äÕíÉ'; $string['formatsocial'] = 'ÊäÓíÞ ÇÌÊãÇÚí'; $string['formattext'] = 'ÊäÓíÞ ÊáÞÇÆíÉ'; @@ -493,14 +376,12 @@ $string['frontpagenews'] = ' $string['fulllistofcourses'] = 'ßá ÇáãäÇåÌ ÇáÏÑÇÓíÉ'; $string['fullname'] = 'ÇáÇÓã ßÇãáÇ'; $string['fullnamedisplay'] = '$a->ÇáÇÓã ÇáÇæá $a->ÇáÇÓã ÇáÇÎíÑ'; -$string['fullprofile'] = 'ãáÝ ÇáÓíÑÉ ÇáÐÇÊíÉ'; +$string['fullprofile'] = 'ãáÝ ÇáÈíÇäÇÊ ßÇãáÇ'; $string['fullsitename'] = 'ÇÓã ÇáãæÞÚ ßÇãáÇ'; -$string['functiondisabled'] = 'Êáß ÇáæÙíÝÉ ÛíÑ ããßäÉ ÍÇáíÇ'; $string['gd1'] = 'GD 1.x Êã ÊäÕíÈå'; $string['gd2'] = 'GD 2.x Êã ÊäÕíÈå'; $string['gdneed'] = 'áÇÈÏ ãä ÊäÕíÈ GD áÑÄíÉ åÐÇ ÇáÑÓã'; $string['gdnot'] = 'áã íÊã ÊäÕíÈ GD'; -$string['go'] = 'ÇÐåÈ'; $string['gpl'] = 'ÍÞæÞ ÇáØÈÚ (C) 2001-2002 Martin Dougiamas (http://dougiamas.com) åÐÇ ÇáÈÑäÇãÌ ãÌÇäí¡ íãßäß ÅÚÇÏÉ ÊæÒíÚå æ/Ãæ ÊÚÏíáå ØÈÞÇ áÔÑæØ ÑÎÕÉ ÇáÌãåæÑ ÇáÚÇãÉ GNU General Public License ÇáÊí ÃÕÏÑÊåÇ ãÄÓÓÉ ÇáÈÑÇãÌ ÇáãÌÇäíÉ Free Software Foundation ÓæÇÁ ÇáäÓÎÉ ÑÞã 2 Ãæ Ãí äÓÎÉ ÃÎÑì ÊÇáíÉ ÊÎÊÇÑåÇ. íÊã ÊæÒíÚ åÐÇ ÇáÈÑäÇãÌ ÑÌÇÁ ÇáÅÝÇÏÉ¡ æáÇ íÚÏ åÐÇ ÖãÇäÇ æáæ ÖãäíÇ Úáì ãáÇÆãÉ åÐÇ ÇáÈÑäÇãÌ ááÊÓæíÞ Ãæ áÛÑÖ ãÚíä. áãÑíÏ ãä ÇáãÚáæãÇÊ¡ ÑÇÌÚ ÑÎÕÉ ÇáÌãåæÑ ÇáÚÇãÉ GNU General Public License: @@ -551,9 +432,7 @@ $string['hiddensections'] = ' $string['hiddensectionscollapsed'] = 'ÇáÃÌÒÇÁ ÇáãÍÝíÉ Êã ÅÙåÇÑåÇ Ýí åíÆÉ ã䨿íÉ'; $string['hiddensectionsinvisible'] = 'ÇáÃÌÒÇÁ ÇáãÍÝíÉ ÛíÑ ãÑÆíå ÊãÇãÇð'; $string['hide'] = 'ÅÎÝÇÁ'; -$string['hideadvancedsettings'] = 'ÅÎÝÇÁ ÇáÅÚÏÇÏÇÊ ÇáãÊÞÏãÉ'; $string['hidepicture'] = 'ÅÎÝÇÁ ÇáÕæÑÉ'; -$string['hidesettings'] = 'ÅÎÝÇÁ ÇáÅÚÏÇÏÇÊ'; $string['hits'] = 'äÊÇÆÌ'; $string['hitsoncourse'] = 'ÏÎæá Åáì $a->coursename ÈæÇÓØÉ $a->username'; $string['hitsoncoursetoday'] = 'äÊÇÆÌ Çáíæã Ýí $a->coursename ÈæÇÓØÉ $a->username'; @@ -583,8 +462,6 @@ $string['includeuserfiles'] = ' $string['institution'] = 'ãÄÓÓÉ'; $string['invalidemail'] = 'ÚäæÇä ÇáÈÑíÏ ÇáÅáßÊÑæäí ÛíÑ ÕÍíÍ'; $string['invalidlogin'] = 'ÎØÃ Ýí ÇÓã ÇáãÓÊÎÏã Ãæ ßáãÉ ÇáãÑæÑ¡ íÑÌì ÅÚÇÏÉ ÇáãÍÇæáÉ.'; -$string['ip_address'] = 'ÚäæÇä IP'; -$string['jump'] = 'ÃÞÝÒ'; $string['jumpto'] = 'ÇäÊÞÇá Åáì...'; $string['keep'] = 'ÇÍÝÙ'; $string['langltr'] = 'ÇÊÌÇå ÇááÛÉ ãä ÇáÔãÇá Åáì Çáíãíä'; @@ -609,32 +486,26 @@ $string['location'] = ' $string['loggedinas'] = 'Êã ÏÎæáß ÈÕÝÉ $a'; $string['loggedinnot'] = 'áã íÊã ÏÎæáß.'; $string['login'] = 'ÏÎæá'; -$string['login_failure_logs'] = 'ÓÌáÇÊ ãÍÇæáÇÊ ÇáÏÎæá ÇáÝÇÔáÉ'; $string['loginas'] = 'ÏÎæá ÈÕÝÉ'; $string['loginguest'] = 'ÇáÏÎæá ÈÕÝÉ ÖíÝ'; $string['loginsite'] = 'ÏÎæá Åáì ÇáãæÞÚ'; $string['loginsteps'] = 'ãÑÍÈÇ Èß! íãßäß ÅäÔÇÁ ÇÔÊÑÇß ÌÏíÏ Ýí åÐÇ ÇáãæÞÚ ÎáÇá áÍÙÇÊ æÇáÇÊÕÇá ÇáßÇãá ÈÇáãäÇåÌ ÇáÏÑÇÓíÉ æÐáß ÈÊÊÈÚ ÇáÎØæÇÊ ÇáÊÇáíÉ: -

          -
        1. Çãáà äãæÐÌ ÍÓÇÈ ÌÏíÏ.
        2. -
        3. Úáì ÇáÝæÑ ÊÕáß ÑÓÇáÉ Úáì ÚäæÇäß ÇáÈÑíÏí.
        4. -
        5. Þã ÈÞÑÇÁÉ ÇáÈÑíÏ æÇÖÛØ Úáì ÇáÑÇÈØÉ ÇáãæÌæÏÉ Èå.
        6. -
        7. ÓíÊã ÊÃßíÏ ÇÔÊÑÇßß æíÓãÍ áß ÈÇáÏÎæá.
        8. -
        9. æÇáÂä Þã ÈÇÎÊíÇÑ ÇáãäåÌ ÇáÏÑÇÓí ÇáÐí ÊÑÛÈ ÇáãÔÇÑßÉ Ýíå.
        10. -
        11. ãä ÇáÂä ÝÕÇÚÏÇ íãßäß ÇáÏÎæá Úä ØÑíÞ ÅÏÎÇá ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ (Ýí ÇáäãæÐÌ ÇáãÞÇÈá ÈåÐå ÇáÕÝÍÉ) ¡ æÊÓÊØíÚ ÇáÇÊÕÇá ÇáßÇãá ÈÇáãäåÌ ÇáÏÑÇÓí ¡ æÊÕá Åáì Ãí ãäåÌ ÏÑÇÓí ÊÑíÏ ÇáÊÓÌíá Èå.
        12. -
        13. ÅÐÇ ØáÈ ãäß \'\'ãÝÊÇÍ ÇáÊÓÌíá\'\' - ÇÓÊÎÏã ÇáãÝÊÇÍ ÇáÐí ÃÚØÇå áß ÇáãÏÑÓ. åÐÇ ÓíÌÚáß \'\'ÊÔÇÑß\'\' Ýí ÇáãäåÌ ÇáÏÑÇÓí.
        14. -
        15. áÇ ÍÙ Ãä ßá ãäåÌ ÏÑÇÓí ÞÏ íßæä áå ÃíÖÇ \"ãÝÊÇÍ ÊÓÌíá\" ÓÊÍÊÇÌ Åáíå áÇÍÞÇ.
        16. -
        '; -$string['loginstepsnone'] = '

        ãÑÍÈÇ!

        ááÇÊÕÇá ÇáßÇãá ÈÇáãäÇåÌ ÇáÏÑÇÓíÉ ÓÊÍÊÇÌ Åáì ÅäÔÇÁ ÇÔÊÑÇß ÌÏíÏ.

        ßá ãÇ Úáíß åæ Úãá ÇÓã ãÓÊÎÏã æßáãÉ ãÑæÑ æÇÓÊÎÏÇãåãÇ Ýí ÇáäãæÐÌ ÇáãæÌæÏ ÈåÐå ÇáÕÝÍÉ!

        ÅÐÇ ßÇä ÇÓã ÇáãÓÊÎÏã ÞÏ Êã ÇÓÊÎÏÇãå ãä ÞÈá¡ ÌÑÈ ãÑÉ ÃÎÑì ÇÓãÇ ÂÎÑ.

        '; +
          +
        1. Çãáà äãæÐÌ ÍÓÇÈ ÌÏíÏ. +
        2. Úáì ÇáÝæÑ ÊÕáß ÑÓÇáÉ Úáì ÚäæÇäß ÇáÈÑíÏí. +
        3. Þã ÈÞÑÇÁÉ ÇáÈÑíÏ æÇÖÛØ Úáì ÇáÑÇÈØÉ ÇáãæÌæÏÉ Èå. +
        4. ÓíÊã ÊÃßíÏ ÇÔÊÑÇßß æíÓãÍ áß ÈÇáÏÎæá. +
        5. æÇáÂä Þã ÈÇÎÊíÇÑ ÇáãäåÌ ÇáÏÑÇÓí ÇáÐí ÊÑÛÈ ÇáãÔÇÑßÉ Ýíå. +
        6. ãä ÇáÂä ÝÕÇÚÏÇ íãßäß ÇáÏÎæá Úä ØÑíÞ ÅÏÎÇá ÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ (Ýí ÇáäãæÐÌ ÇáãÞÇÈá ÈåÐå ÇáÕÝÍÉ) ¡ æÊÓÊØíÚ ÇáÇÊÕÇá ÇáßÇãá ÈÇáãäåÌ ÇáÏÑÇÓí ¡ æÊÕá Åáì Ãí ãäåÌ ÏÑÇÓí ÊÑíÏ ÇáÊÓÌíá Èå. +
        7. ÅÐÇ ØáÈ ãäß \'\'ãÝÊÇÍ ÇáÊÓÌíá\'\' - ÇÓÊÎÏã ÇáãÝÊÇÍ ÇáÐí ÃÚØÇå áß ÇáãÏÑÓ. åÐÇ ÓíÌÚáß \'\'ÊÔÇÑß\'\' Ýí ÇáãäåÌ ÇáÏÑÇÓí. +
        8. áÇ ÍÙ Ãä ßá ãäåÌ ÏÑÇÓí ÞÏ íßæä áå ÃíÖÇ \"ãÝÊÇÍ ÊÓÌíá\" ÓÊÍÊÇÌ Åáíå áÇÍÞÇ. +
        '; +$string['loginstepsnone'] = 'ãÑÍÈÇ!

        ááÇÊÕÇá ÇáßÇãá ÈÇáãäÇåÌ ÇáÏÑÇÓíÉ ÓÊÍÊÇÌ Åáì ÅäÔÇÁ ÇÔÊÑÇß ÌÏíÏ.

        ßá ãÇ Úáíß åæ Úãá ÇÓã ãÓÊÎÏã æßáãÉ ãÑæÑ æÇÓÊÎÏÇãåãÇ Ýí ÇáäãæÐÌ ÇáãæÌæÏ ÈåÐå ÇáÕÝÍÉ!

        ÅÐÇ ßÇä ÇÓã ÇáãÓÊÎÏã ÞÏ Êã ÇÓÊÎÏÇãå ãä ÞÈá¡ ÌÑÈ ãÑÉ ÃÎÑì ÇÓãÇ ÂÎÑ.'; $string['loginto'] = 'ÏÎæá Åáì $a'; $string['loginusing'] = 'ÇáÏÎæá ÈÇÓã ÇáãÓÊÎÏã æßáãÉ ÇáãÑæÑ'; $string['logout'] = 'ÎÑæÌ'; $string['logs'] = 'ÊÞÇÑíÑ'; -$string['logtoomanycourses'] = '[ url \"> ÇáãÒíÏ ]'; -$string['logtoomanyusers'] = '[ url \"> ÇáãÒíÏ ]'; -$string['mailadmins'] = 'ÃÍØ ÇáãÏÑÇÁ'; -$string['mailstudents'] = 'ÃÍØ ÇáØáÇÈ'; -$string['mailteachers'] = 'ÃÍØ ÇáãÚáãæä'; $string['mainmenu'] = 'ÇáÞÇÆãÉ ÇáÑÆíÓíÉ'; $string['makeafolder'] = 'ÅäÔÇÁ ãÌáÏ'; $string['makeeditable'] = 'ÅÐÇ ÌÚáÊ \'$a\' ÞÇÈáÇ ááÊÚÏíá ãä ÎáÇá ÚãáíÉ ãÒæÏ ÇáÅäÊÑäÊ (ãËÇá apache) Ëã ÊÓÊØíÚ ÊÚÏíá åÐÇ ÇáãáÝ ãÈÇÔÑÉ ãä ÎáÇá åÐå ÇáÕÝÍÉ'; @@ -651,7 +522,6 @@ $string['maximumupload'] = ' $string['maxsize'] = 'ÇáÍÏ ÇáÃÞÕì: $a'; $string['min'] = 'ÇáÍÏ ÇáÃÏäì'; $string['mins'] = 'ÇáÃÞá'; -$string['minutes'] = 'ÏÞÇÆÞ'; $string['miscellaneous'] = 'ãÊäæÚ'; $string['missingcategory'] = 'áÇÈÏ ãä ÇÎÊíÇÑ ÕäÝ'; $string['missingcity'] = 'ÇáãÏíäÉ/ÇáÈáÏ áã íÍÏÏ'; @@ -680,7 +550,6 @@ $string['moduledeletefiles'] = ' $string['modulesetup'] = 'ÊäÕíÈ ÌÏÇæá ÇáæÍÏÉ ÇáäãØíÉ'; $string['modulesuccess'] = '$a Êã ÊäÕíÈ ÇáÌÏÇæá ÈÔßá ÕÍíÍ'; $string['moodleversion'] = 'ÃÕÏÇÑ ãæÏá'; -$string['more'] = 'ÇáãÒíÏ'; $string['mostrecently'] = 'ÇáÃÍÏË'; $string['move'] = 'äÞá'; $string['movecategoryto'] = 'äÞá ÇáÕäÝ Åáì:'; @@ -694,7 +563,6 @@ $string['moveright'] = ' $string['moveselectedcoursesto'] = 'ÃäÞá ÇáãäÇåÌ ÇáÏÑÇÓíÉ ÇáãÎÊÇÑÉ Åáì'; $string['movetoanotherfolder'] = 'äÞá Åáì ãÌáÏ ÂÎÑ'; $string['moveup'] = 'ÇáÇäÊÞÇá Åáì ÃÚáì'; -$string['mustchangepassword'] = 'ßáãÉ ÇáãÑæÑ ÇáÌÏíÏÉ íÌÈ Ãä ÊÎÊáÝ Úä ÇáßáãÉ ÇáÍÇáíÉ'; $string['mustconfirm'] = 'ÃäÊ ÊÍÊÇÌ Åáì ÊÃßíÏ ÇáÏÎæá'; $string['mycourses'] = 'ãäÇåÌí ÇáÏÑÇÓíÉ'; $string['name'] = 'ÇáÇÓã'; @@ -717,7 +585,8 @@ $string['newpasswordtext'] = ' $a->link Ýí ÃÛáÈ ÈÑÇãÌ ÇáÈÑíÏ íÙåÑ Ðáß Ýí Ôßá ÑÇÈØÉ ÒÑÞÇÁ¡ æãÇ Úáíß ÅáÇ ÇáÖÛØ ÚáíåÇ. ÝÅÐÇ áã íÚãá Ðáß¡ Þã ÈÞÕ ÇáÚäæÇä æáÕÞå Ýí ÎÇäÉ ÇáÚäæÇä ÃÚáì ÚÇÑÖ ÇáÅäÊÑäÊ. ÊÍíÇÊ ãä \'$a->sitename\' ÇáãÏíÑ, -$a->signoff'; +$a->signoff +'; $string['newpicture'] = 'ÕæÑÉ ÔÎÕíÉ ÌÏíÏÉ'; $string['newsitem'] = 'ÈäÏ ÃÎÈÇÑíå'; $string['newsitems'] = 'ÈäæÏ ÃÎÈÇÑíå'; @@ -726,45 +595,37 @@ $string['newuser'] = ' $string['newusers'] = 'ãÓÊÎÏãæä ÌÏÏ'; $string['next'] = 'ÇáÊÇáí'; $string['no'] = 'áÇ'; -$string['nobody'] = 'áÇ ÃÍÏ'; $string['nocoursesfound'] = 'áÇ íæÌÏ ãäåÌ ÏÑÇÓí íÍÊæí Úáì åÐå ÇáßáãÇÊ \'$a\''; $string['nocoursesyet'] = 'áÇ ÊæÌÏ ÍáÞÇÊ ÏÑÇÓíÉ áåÐå ÇáÝÆÉ'; $string['noexistingadmins'] = 'áÇ íæÌÏãÏÑÇÁ¡ åÐÇ ÎØÇÁ ÎØíÑ æáä ÊÑì åÐå ÇáÑÓÇáå ËÇäíÇ'; $string['noexistingcreators'] = 'áÇ íæÌÏ ãäÔÆæä'; $string['noexistingstudents'] = 'áÇ íæÌÏ ØáÇÈ'; -$string['noexistingteachers'] = 'áÇ íæÌÏ ãÚáãæä'; +$string['noexistingteachers'] = 'áÇ íæÌÏ ãÏÑÓæä ÍÖæÑ'; $string['nofilesselected'] = 'áã íÊã ÇÎÊíÇÑ ãáÝÇÊ ááÞíÇã ÈÚãáíÉ ÇáÃÓÊÑÌÇÚ'; $string['nofilesyet'] = 'áã íÊã ÊÍãíá Ãí ãáÝ ááãäåÌ ÇáÎÇÕ Èß'; $string['nograde'] = 'áÇ ÊæÌÏ ÏÑÌÉ'; $string['noimagesyet'] = 'áã íÊã ÊÍãíá Ãí ÕæÑÉ ááãäåÌ ÇáÎÇÕ Èß '; $string['nomorecourses'] = 'áÇ íæÌÏ ÇáãÒíÏ ãä ÇáãäÇåÌ ÇáÏÑÇÓíÉ ÇáããÇËáÉ'; -$string['nomoreidnumber'] = 'áÊÝÇÏí ÇáÊÚÇÑÖ áÇ ÊÓÊÎÏã ÑÞã ÊÚÑíÝ'; $string['none'] = 'áÇ íæÌÏ'; $string['nopotentialadmins'] = 'áÇ íæÌÏ ãÏÑÇÁ ãÍÊãáæä'; $string['nopotentialcreators'] = 'áÇ íæÌÏ ãäÔÆæä ãäåÌ ÏÑÇÓí ãÍÊãáæä'; $string['nopotentialstudents'] = 'áÇ íæÌÏ ØáÇÈ ãÍÊãáæä'; -$string['nopotentialteachers'] = 'áÇ íæÌÏ ãÚáãæä ãÍÊãáæä'; +$string['nopotentialteachers'] = 'áÇ íæÌÏ ãÏÑÓíä ãÍÊãáæä'; $string['normal'] = 'ÚÇÏí'; $string['normalfilter'] = 'ÈÍË ÚÇÏí'; $string['nostudentsfound'] = 'áã íÊã ÇáÚ辄 Úáì $a'; $string['nostudentsyet'] = 'áã íÊã ÊÓÌíá Ãí ØáÇÈ Ýí åÐÇ ÇáãäåÌ ÇáÏÑÇÓí '; $string['nosuchemail'] = 'áÇ íæÌÏ ãËá åÐÇ ÇáÚäæÇä ÇáÈÑíÏí'; $string['notavailable'] = 'ÛíÑ ãÊæÝÑ'; -$string['noteachersyet'] = 'áÇ íæÌÏ ãÚáãæä áåÐÇ ÇáãäåÌ ÇáÏÑÇÓí '; +$string['noteachersyet'] = 'áÇ íæÌÏ ãÏÑÓæä Ýí åÐÇ ÇáãäåÌ ÇáÏÑÇÓí '; $string['notenrolled'] = '$a ÛíÑ ãÓÌá Ýí åÐÇ ÇáãäåÌ ÇáÏÑÇÓí'; $string['noteuserschangednonetocourse'] = 'ãáÇÍÙÉ:ãØáÈ ÇÓÊÑÌÇÚ ãÓÊÎÏãíä ÇáãäåÌ ÇáÏÑÇÓí ÚäÏ ÇÓÊÑÌÇÚ ãÚáæãÇÊ ÇáãÓÊÎÏã. åÐÇ ÇáÇÚÏÇÏÊã ÊÛíÑ áß'; $string['nothingnew'] = 'áÇ ÌÏíÏ ãäÐ ÂÎÑ ÒíÇÑÉ áß.'; -$string['noticenewerbackup'] = 'ÇáãáÝ ÇáÇÍÊíÇØí åÐÇ Êã ÅäÔÇÆå ÈãæÏá $a->backuprelese ($a->backupversion)æåÐÇ ÇáÇÕÏÇÑ ãä ãæÇÏá åæ ÃÍÏË ãä ÇáÃÕÏÇÑ ÇáãËÈÊ áÏíß ÇáÂä $a->backuprelese ($a->backupversion). åÐÇ ÞÏ íÓÈÈ ÈÚÖ ÇáÊÚÇÑÖÇÊ áÇä ÊæÇÝÞ ãáÝÇÊ ÇáäÓÎ ÇáÇÍÊíÇØí áÇ íãßä ÖãÇäåÇ.'; -$string['notifyloginfailuresmessage'] = '$a->time ÅäÊÑ äÊ ÈÑæÊæßæá: $a->ip ãÓÊÎÏã: $a->info'; -$string['notifyloginfailuresmessageend'] = 'ÊÓØíÚ ÑÄíÉ åÐå ÇáÓÌáÇÊ Ýí $a /course/log.php?id=1&chooselog=1&modid=site_errors'; -$string['notifyloginfailuresmessagestart'] = 'åÐå ÞÇÆãÉ áãÍÇæáÇÊ ÇáÏÎæá ÇáÝÇÔáÉ Åáì $a ãäÐ ÃÎÑ ÅÍÇØÉ áß'; -$string['notifyloginfailuressubject'] = '$a:: ÇÔÚÇÑ ãÍÇæáÇÊ ÇáÏÎæá ÇáÝÇÔáÉ.'; $string['notincluded'] = 'áã íÖãä'; $string['notingroup'] = 'ÚÐÑÇð¡ íÌÈ Úáíß Ãä Êßæä ÚÖæÇð Ýí ãÌãæÚÉ áÊÊãßä ãä ãÚÇíäÉ åÐÇ ÇáäÔÇØ'; $string['nousersmatching'] = 'áã íÚËÑ Úáì \'$a\' ãÓÊÎÏãíä ããÇËáíä'; $string['nousersyet'] = 'áíÓ åäÇß ãÓÊÎÏãæä ÍÊì ÇáÂä'; $string['now'] = 'ÇáÂä'; -$string['numattempts'] = '$a ãÍÇæáÇÊ ÇáÏÎæá ÇáÎÇØÆÉ'; $string['numberweeks'] = 'ÚÏÏ ÇáÃÓÇÈíÚ/ÇáãæÇÖíÚ'; $string['numdays'] = '$a ÃíÇã'; $string['numhours'] = '$a ÓÇÚÇÊ'; @@ -781,8 +642,6 @@ $string['order'] = ' $string['other'] = 'ÃÎÑ'; $string['outline'] = 'ãáÎÕ'; $string['page'] = 'ÕÝÍÉ'; -$string['pageheaderconfigablock'] = 'ÅÚÏÇÏ ßÊáÉ Ýí %%fullname%%'; -$string['parentlanguage'] = '<<ÇáãÊÑÌãæä: ÃÐÇ ßÇäÊ áÛÊß áåÇ áÛÉ Ãã æÇáÊí íÌÈ Úáì ãæÏá íÊÎÏã æíæÌÏ ÈÚÖ ÇáÊÚÇÈíÑ ãÝÞæÏÉ ãä ÍÒãÉ áÛÊß¡ áÐÇ íÌÈ Úáíß ÊÍÏíÏ ÇáÑãÒ åäÇÁ. áæ ÊÑßÊ åÐÇ ÇáÍÞá ÝÇÑÛÇ ÓíÊã ÇÓÊÎÏÇã ÇááÛÉ ÇáÅäÌáíÒíÉ. Úáì ÓÈíá ÇáãËÇá: nl>>'; $string['participants'] = 'ÇáãÔÊÑßæä'; $string['password'] = 'ßáãÉ ÇáãÑæÑ'; $string['passwordchanged'] = 'Êã ÊÛííÑ ßáãÉ ÇáãÑæÑ'; @@ -790,28 +649,19 @@ $string['passwordconfirmchange'] = ' $string['passwordrecovery'] = 'äÚã¡ ÓÇÚÏäí Úáì ÇáÏÎæá'; $string['passwordsdiffer'] = 'ßáãÇÊ ÇáãÑæÑ áÇ ÊÊØÇÈÞ'; $string['passwordsent'] = 'Êã ÅÑÓÇá ßáãÉ ÇáãÑæÑ'; -$string['passwordsenttext'] = '

        Êã ÅÑÓÇá ÑÓÇáÉ Åáì ÇáÚäæÇä $a->email.

        -

        íÑÌì ÇáÈÍË Ýí ÇáÈÑíÏ Úä ßáãÉ ÇáãÑæÑ

        -

        Êã ÅÕÏÇÑ ßáãÉ ãÑæÑ ÌÏíÏÉ¡ æÑÈãÇ ÑÛÈÊ Ýí - < a href=\"$a->link\">Ýí ÊÛííÑåÇ Åáì ÔíÁ ÃÈÓØ ãä Ðáß ÍÊì íÓåá ÊÐßÑåÇ.

        '; -$string['pathnotexists'] = 'ÇáãÓÇÑ ÛíÑ ãæÌæÏ Ýí ÇáÎÇÏã'; -$string['pathslasherror'] = 'áÇ íãßä ÇäåÇÁ ÇáãÓÇÑ ÈÚáÇãÉ ãÇÆáÉ!!'; -$string['paymentinstant'] = 'ÇÓÊÎÏã ÇáÒÑ ÇáÊÇáí áÏÝÚ ÇáÑÓæã ÇáÊÓÌíá ÎáÇá ÏÞÇÆÞ.'; -$string['paymentrequired'] = 'åÐÇ ÇáãäåÌ ÛíÑ ãÌÇäíä áÐÇ íÌÈ ÏÝÚ ÇáÞíãÉ ááÏÎæá. '; -$string['paymentsorry'] = 'ÔßÑÇð áÞíÇãß ÈÏÝÚ ÇáãÈáÛ ÇáãØáæÈ! æáßä áÓæÁ ÇáÍÙ áã íÊã ÍÊì ÇáÂä ÅäåÇÁ ÅÌÑÇÁÇÊ ÇáÎÇÕÉ ÈÊÓÌíáß¡ áÐÇ áä ÊÊãßä ãä ÇáÏÎæá Åáì ÇáãäåÌ ÇáÏÑÇÓí \"$a->fullname\". ÇáÑÌÇÁð ÍÇæáú ÇáÏÎæá ÈÖÚÉ ËæÇäí¡ Ýí ÍÇáÉ ÚÏã Êãßä ãä ÇáÏÎæá ÈÚÏ ÚÏÉ ãÍÇæáÇÊ ÇáÑÌÇÁð ÅÍÇØÉ$a-> ãÚáøã Ãóæ ãÏíÑ ÇáãæÞÚó.'; -$string['paymentthanks'] = 'ÔßÑÇð áÞíÇãß ÈÏÝÚ ÇáãÈáÛ ÇáãÇáí! áÞÏ Êã ÊÓÌíáß Ýí ÇáãäåÌ ÇáÏÑÇÓí: :
        \"$a\"'; +$string['passwordsenttext'] = '

        Êã ÅÑÓÇá ÑÓÇáÉ Åáì ÇáÚäæÇä $a->email. +

        íÑÌì ÇáÈÍË Ýí ÇáÈÑíÏ Úä ßáãÉ ÇáãÑæÑ +

        Êã ÅÕÏÇÑ ßáãÉ ãÑæÑ ÌÏíÏÉ¡ æÑÈãÇ ÑÛÈÊ Ýí + link>Ýí ÊÛííÑåÇ Åáì ÔíÁ ÃÈÓØ ãä Ðáß ÍÊì íÓåá ÊÐßÑåÇ.'; $string['people'] = 'ÃÔÎÇÕ'; -$string['personalprofile'] = 'ÇáÓíÑÉ ÇáÐÇÊíÉ'; +$string['personalprofile'] = 'ãáÝ ÇáÈíÇäÇÊ ÔÎÕí'; $string['phone'] = 'åÇÊÝ'; $string['phpinfo'] = 'ãÚáæãÇÊ PHP'; -$string['policyagree'] = 'íÌÈ ÇáãæÇÝÞÉ Úáì åÐå ÇáÔÑæØ ááÃÓÊãÑÇÑ Ýí ÇÓÊÎÏÇã ÇáãæÞÚ. åá ÃäÊ ãæÇÝÞ¿'; -$string['policyagreement'] = 'ÔÑæØ ÅÊÝÇÞíÉ ÇáãæÞÚ'; -$string['policyagreementclick'] = 'ÃäÞÑ åäÇÁ áÞÑÇÁÉ ÔÑæØ ÅÊÝÇÞíÉ ÇáãæÞÚ'; $string['popupwindow'] = 'ÝÊÍ ÇáãáÝ Ýí äÇÝÐÉ ÌÏíÏÉ'; $string['potentialadmins'] = 'ãÏÑÇÁ ãÍÊãáæä'; $string['potentialcreators'] = 'ãäÔÆæä ãÊåÌ ÏÑÇÓí ãÍÊãáæä'; $string['potentialstudents'] = 'ØáÇÈ ãÍÊãáæä'; -$string['potentialteachers'] = 'ãÚáãæä ãÍÊãáæä'; +$string['potentialteachers'] = 'ãÏÑÓæä ãÍÊãáæä'; $string['preferredlanguage'] = 'ÇááÛÉ ÇáãÝÖáÉ'; $string['preview'] = 'ãÚÇíäÉ'; $string['previeworchoose'] = 'ÇÎÊÑ ÇáÔßá ÇáãäÇÓÈ áíÙåÑ ÇáãæÞÚ Èå'; @@ -829,23 +679,22 @@ $string['recentactivityreport'] = ' $string['refreshingevents'] = 'ÊÍÏíË ÇáÇÍÏÇË'; $string['registration'] = 'ÊÓÌíá ãæÏá'; $string['registrationemail'] = 'ÅÔÚÇÑÇÊ ÇáÈÑíÏ ÇáÅáßÊÑæäí'; -$string['registrationinfo'] = 'ãä ÎáÇá åÐå ÇáÕÝÍÉ íÊã ÊÓÌíá ãæÞÚß ãÚ moodle.org. ÇáÊÓÌíá ãÌÇäí. +$string['registrationinfo'] = '

        ãä ÎáÇá åÐå ÇáÕÝÍÉ íÊã ÊÓÌíá ãæÞÚß ãÚ moodle.org. ÇáÊÓÌíá ãÌÇäí. ÇáåÏÝ ÇáÑÆíÓ ãä ÇáÊÓÌíá åæ ÇÖÇÝÊß Ûáì ÞÇÆãÉ ÇáÈÑíÏ ÇáÅáßÊÑæäí æÐáß áÊÒæíÏß ÈãÇ åæ ÌÏíÏ ÝíãÇ íÊÚáÞ ÈÞÖÇíÇ ÇáÇãä æÇáÇÕÏÇÑÇÊ ÇáÌÏíÏå áãæÏá -
        ÅÝÊÑÇÖíÇ¡ ãÚáæãÇÊß ÓÊÈÞì ÎÇÕÉ æÓÑíåæáä ÊÈÇÚ Ãæ ÊÓáã áÅì ÌåÉ ÇÎÑì. ÇáÓÈÈ ÇáÑÆíÓ ãä ÊÌãíÚ åÐå ÇáÈíÇäÇÊ åæ áÅÛÑÇÖ ÇáÏÚã ÇáÝäí æÇáãÓÇÚÏå Ýí ÈäÇÁ ÅÍÕÇÆíå ÊÌÓÏ ÌãåæÑ ãæÏá -
        íãßäß ÇáÓãÇÍ ÈäÔÑ ÇÓã ãæÞÚß æÏæáÊß Ýí ÇáÞÇÆãÉ ÇáÚÇãÉ ááãæÇÞÚ ÇáãÓÊÎÏãÉ áãæÏá -
        ßá ÇáÊÓÌáÇÊ ÇáÌÏíÏå ÊæßÏ íÏæíÇ ÞÈá ÇÖÇÝÊåÇ Ûáì ÇáÞÇÆãÉ¡ æáßä ÈãÌÑÏ ÅÖÇÝÊß ááÞÇÆãÉ íãßäß ÊÍÏíË ÈíÇäÇÊ ÊÓÌíáß ÈÅÚÇÏÉ ÇÑÓÇá åÐÇ ÇáäæÐÌ Ýí Ãí æÞÊ'; +

        ÅÝÊÑÇÖíÇ¡ ãÚáæãÇÊß ÓÊÈÞì ÎÇÕÉ æÓÑíåæáä ÊÈÇÚ Ãæ ÊÓáã áÅì ÌåÉ ÇÎÑì. ÇáÓÈÈ ÇáÑÆíÓ ãä ÊÌãíÚ åÐå ÇáÈíÇäÇÊ åæ áÅÛÑÇÖ ÇáÏÚã ÇáÝäí æÇáãÓÇÚÏå Ýí ÈäÇÁ ÅÍÕÇÆíå ÊÌÓÏ ÌãåæÑ ãæÏá +

        íãßäß ÇáÓãÇÍ ÈäÔÑ ÇÓã ãæÞÚß æÏæáÊß Ýí ÇáÞÇÆãÉ ÇáÚÇãÉ ááãæÇÞÚ ÇáãÓÊÎÏãÉ áãæÏá +

        ßá ÇáÊÓÌáÇÊ ÇáÌÏíÏå ÊæßÏ íÏæíÇ ÞÈá ÇÖÇÝÊåÇ Ûáì ÇáÞÇÆãÉ¡ æáßä ÈãÌÑÏ ÅÖÇÝÊß ááÞÇÆãÉ íãßäß ÊÍÏíË ÈíÇäÇÊ ÊÓÌíáß ÈÅÚÇÏÉ ÇÑÓÇá åÐÇ ÇáäæÐÌ Ýí Ãí æÞÊ'; $string['registrationno'] = 'áÇ: áÇ ÃÑíÏ ÇÓÊáÇã ÈÑíÏ ÅáßÊÑæäí'; $string['registrationsend'] = 'ÃÑÓá ãÚáæãÇÊ ÇáÊÓÌíá Åáì moodle.org'; $string['registrationyes'] = 'äÚã: ÝÖáÇð ÅÔÚÇÑí ÈÇáãÚáæãÇÊ ÇáãåãÉ'; $string['removeadmin'] = 'ÇÓÊÈÚÇÏ ãÏíÑ'; $string['removecreator'] = 'ÇÓÊÈÚÇÏ ãäÔÆ ãäåÌ ÏÑÇÓí'; $string['removestudent'] = 'ÇÓÊÈÚÇÏ ØÇáÈ'; -$string['removeteacher'] = 'ÇÓÊÈÚÇÏ ãÚáã'; +$string['removeteacher'] = 'ÇÓÊÈÚÇÏ ãÏÑÓ'; $string['rename'] = 'ÊÛííÑ ÇáÇÓã'; $string['renamefileto'] = 'ÊÛííÑ ÇáÇÓã $a Åáí'; $string['required'] = 'ãÝÑæÖ'; $string['requireskey'] = 'åÐÇ ÇáãäåÌ ÇáÏÑÇÓí ÈÍÇÌÉ Åáì ãÝÊÇÍ ÇáÊÓÌíá'; -$string['requirespayment'] = 'åÐÇ ÇáãäåÌ ÇáÏÑÇÓí íÊØáÈ ÇáÏÝÚ ÇáãÇáí ÞÈá ÇáÇÔÊÑÇß Ýíå'; $string['resortcoursesbyname'] = 'ÑÊÈ ÇáãäÇåÌ ÇáÏÑÇÓíÉ ÈÇáÇÓã'; $string['resources'] = 'ÇáãÕÇÏÑ'; $string['restore'] = 'ÅÓÊÑÌÇÚ'; @@ -856,10 +705,6 @@ $string['restoreto'] = ' $string['returningtosite'] = 'åá ÃäÊ ãÔÊÑß ÈÇáÝÚá¿ ÇáÏÎæá ãä åäÇ '; $string['revert'] = 'ÚßÓ'; $string['role'] = 'ÇáÏæÑ'; -$string['rss'] = 'ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ'; -$string['rssarticles'] = 'ÚÏÏ ãÞÇáÇÊ ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ ÇáÍÇáíÉ'; -$string['rsserror'] = 'ÎØÇÁ Ýí ÞÑÇÁÉ ãÚáæãÇÊ ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ'; -$string['rsstype'] = 'ÎÏãÉ ÊÛÐíÉ ÇáãÚáæãÇÊ áåÐÇ ÇáäÔÇØ'; $string['savechanges'] = 'ÍÝÙ ÇáÊÛííÑÇÊ'; $string['saveto'] = 'ÍÝÙ Åáì'; $string['scale'] = 'ãÞíÇÓ'; @@ -874,7 +719,7 @@ $string['scheduledbackupstatus'] = ' $string['search'] = 'ÈÍË'; $string['searchagain'] = 'ÈÍË ãÑÉ ÃÎÑì'; $string['searchcourses'] = 'ÈÍË ãäÇåÌ ÏÑÇÓíÉ'; -$string['searchhelp'] = 'ÊÓÊØíÚ ÇáÈÍÊ Úä ßáãÇÊ ãÊÚÏÏÉ Ýí Âä æÇÍÏ
        word: ÃÈÍË Úä åÐå Çáßáã Öãä ÇáäÕ.
        +word: ÇáßáãÇÊ ÇáãÊÔÇÈå ÊãÇãÇ ÓíÈÍË ÚäåÇ.
        word:áÇ ÊÖíÝ äÊÇÆÌ ÊÍÊæì Úáì åÐå ÇáßáãÉ'; +$string['searchhelp'] = 'ÊÓÊØíÚ ÇáÈÍÊ Úä ßáãÇÊ ãÊÚÏÏÉ Ýí Âä æÇÍÏ

        word: ÃÈÍË Úä åÐå Çáßáã Öãä ÇáäÕ.
        +word: ÇáßáãÇÊ ÇáãÊÔÇÈå ÊãÇãÇ ÓíÈÍË ÚäåÇ.
        word:áÇ ÊÖíÝ äÊÇÆÌ ÊÍÊæì Úáì åÐå ÇáßáãÉ'; $string['searchresults'] = 'äÊÇÆÌ ÇáÈÍË'; $string['sec'] = 'ËÇäíÉ'; $string['secs'] = 'ËæÇäí'; @@ -891,7 +736,6 @@ $string['shortname'] = ' $string['shortnametaken'] = 'åÐÇ ÇáÇÓã ÇáãÎÊÕÑ ãÓÊÎÏã áãäåÌ ÏÑÇÓí ÇÎÑ ($a)'; $string['shortsitename'] = 'ÇÓã ÇáãæÞÚ ãÎÊÕÑÇ (ßáãÉ æÇÍÏÉ Úáì ÓÈíá ÇáãËÇá)'; $string['show'] = 'ÚÑÖ'; -$string['showadvancedsettings'] = 'ÚÑÖ ÇáÇÚÏÇÏÇÊ ÇáãÊÞÏãÉ'; $string['showall'] = 'ÚÑÖ Çáßá $a'; $string['showallcourses'] = 'ÚÑÖ ßá ÇáãäÇåÌ ÇáÏÑÇÓíÉ'; $string['showalltopics'] = 'ÚÑÖ ßá ÇáãæÖæÚÇÊ'; @@ -902,23 +746,15 @@ $string['showlistofcourses'] = ' $string['showonlytopic'] = 'ÚÑÖ ãæÖæÚ ÝÞØ $a'; $string['showonlyweek'] = 'ÚÑÖ ÃÓÈæÚ ÝÞØ $a'; $string['showrecent'] = 'ÚÑÖ ÇáäÔÇØ ÇáÍÇáí'; -$string['showreports'] = 'ÚÑÖ ÊÞÇÑíÑ ÇáäÔÇØ'; -$string['showsettings'] = 'ÚÑÖ ÇáÇÚÏÇÏÇÊ'; +$string['showreports'] = 'ÇÚÑÖ ÊÞÇÑíÑ ÇáäÔÇØ'; $string['showtheselogs'] = 'ÚÑÖ ÇáÊÞÇÑíÑ'; $string['since'] = 'ãäÐ'; -$string['sincelast'] = 'ãäÐ ÃÎÑ ÏÎæá'; $string['site'] = 'ÇáãæÞÚ'; -$string['sitedefault'] = 'ÇáæÖÚ ÇáÇÝÊÑÇÖí ááãæÞÚ'; -$string['siteerrors'] = 'ÃÎØÇÁ ÇáãæÞÚ'; $string['sitefiles'] = 'ãáÝÇÊ ÇáãæÞÚ'; $string['sitelogs'] = 'ÊÞÑíÑ ÃäÔØÉ ÇáãæÞÚ'; $string['sitenews'] = 'ÃÎÈÇÑ ÇáãæÞÚ'; -$string['sitepartlist0'] = 'íÌÈ Ãä Êßæä ÃÍÏ ÇáãÚáãæä áÊÊãßä ãä ÑÄíÉ ÞÇÆãÉ ÇáãÔÇÑßíä.'; -$string['sitepartlist1'] = 'íÌÈ Ãä Êßæä ÃÍÏ ÇáãÚáãæä áÊÊãßä ãä ÑÄíÉ ÞÇÆãÉ ÇáãÔÇÑßíä.'; $string['sites'] = 'ÇáãæÇÞÚ'; -$string['sitesection'] = 'ÊÖãíä ãæÖæÚ ÞÓã'; $string['sitesettings'] = 'ÅÚÏÇÏÇÊ ÇáÕÝÍÉ ÇáÑÆíÓíÉ'; -$string['siteteachers'] = 'ãÚáãíä ÇáãæÞÚ'; $string['size'] = 'ÇáÍÌã'; $string['sizeb'] = 'ÈÇíÊÒ'; $string['sizegb'] = 'ÛíÛÇÈÇíÊ'; @@ -928,7 +764,6 @@ $string['socialheadline'] = ' $string['someallowguest'] = 'ÈÚÖ ÇáãäÇåÌ ÇáÏÑÇÓíÉ ÊÓãÍ ÈæÌæÏ ÇáÖíæÝ'; $string['someerrorswerefound'] = 'ÈÚÖ ÇáãÚáæãÇÊ ÝÞÏÊ Ãæ ÛíÑ ÕÍíÍÉ¡ áÐÇ íÑÌì ÇáäÙÑ ÊÇáíå ááÍÕæá Úáì ãÒíÏ ãä ÇáÊÝÇÕíá.'; $string['sortby'] = 'ÅÝÑÒ ÈÜ'; -$string['specifyname'] = 'íÌÈ Úáíß ÊÍÏí ÇÓã'; $string['startdate'] = 'ÊÇÑíÎ ÈÏÁ ÇáãäåÌ ÇáÏÑÇÓí'; $string['startsignup'] = 'ÅäÔÇÁ ÇÔÊÑÇß ÌÏíÏ'; $string['state'] = 'æáÇíÉ / ãÞÇØÚÉ'; @@ -938,8 +773,6 @@ $string['strftimedateshort'] = '%%d %%B'; $string['strftimedatetime'] = '%%d %%B %%Y, %%I:%%M %%p'; $string['strftimedaydate'] = '%%A, %%d %%B %%Y'; $string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%I:%%M %%p'; -$string['strftimedayshort'] = '%%A, %%d %%B'; -$string['strftimedaytime'] = '%%a, %%H:%%M'; $string['strftimemonthyear'] = '%%B %%Y'; $string['strftimerecent'] = '%%d %%b, %%H:%%M'; $string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%I:%%M %%p'; @@ -947,7 +780,6 @@ $string['strftimetime'] = '%%I:%%M %%p'; $string['stringsnotset'] = 'áã íÊã ÊÚÑíÝ ÇáÅÚÏÇÏÇÊ ÇáÊÇáíÉ Ýí $a'; $string['studentnotallowed'] = 'ÚÐÑÇ! áÇ íãßäß ÇáÏÎæá Úáì åÐå ÇáÍáÞÉ ÇáÏÑÇÓíÉ ÈÕÝÉ \'$a\''; $string['students'] = 'ØáÇÈ'; -$string['studentsandteachers'] = 'ØáÇÈ æãÚáãæä'; $string['subcategories'] = 'ÇÕäÇÝ ÝÑÚíÉ'; $string['success'] = 'äÌÇÍ'; $string['summary'] = 'ãáÎÕ'; @@ -955,7 +787,7 @@ $string['summaryof'] = ' $string['supplyinfo'] = 'ÈÑÌÇÁ ÃÏÎá ÈíÇäÇÊß ÇáÔÎÕíÉ'; $string['teacheronly'] = 'ãä ÃÌá $a ÝÞØ '; $string['teacherroles'] = '$a ÃÏæÇÑ'; -$string['teachers'] = 'ãÚáãæä'; +$string['teachers'] = 'ãÏÑÓíä'; $string['textediting'] = 'ÚäÏ ÊÍÑíÑ ÇáäÕæÕ'; $string['texteditor'] = 'ÇÓÊÎÏã äãÇÐÌ ÇáÅäÊÑäÊ ÇáÞíÇÓíÉ'; $string['textformat'] = 'ÊäÓíÞ äÕ ÚÇÏí'; @@ -965,7 +797,7 @@ $string['themes'] = ' $string['themesaved'] = 'Êã ÍÝÙ ÇáÔßá ÇáÌÏíÏ'; $string['thischarset'] = 'windows-1256'; $string['thisdirection'] = 'rtl'; -$string['thislanguage'] = 'عربي'; +$string['thislanguage'] = 'ÚÑÈí'; $string['time'] = 'ÇáæÞÊ'; $string['timezone'] = 'ÇáãäØÞÉ ÇáÒãäíÉ'; $string['to'] = 'Åáì'; @@ -978,7 +810,6 @@ $string['topichide'] = ' $string['topicoutline'] = 'ãÎØØ ÇáãæÖæÚ'; $string['topicshow'] = 'ÚÑÖ åÐÇ ÇáãæÖæÚ Åáì $a'; $string['total'] = 'ãÌãæÚ'; -$string['trysearching'] = 'ÍÇæá ÇáÈÍË'; $string['turneditingoff'] = 'ÅíÞÇÝ ÇáÊÍÑíÑ'; $string['turneditingon'] = 'ÊÔÛíá ÇáÊÍÑíÑ'; $string['undecided'] = 'ÛíÑ ãÍÏÏ'; @@ -987,9 +818,7 @@ $string['unenrolallstudents'] = ' $string['unenrolallstudentssure'] = 'åá ÃäÊ ãÊÃßÏ ãä ÇáÞíÇã ÈÅáÛÇÁ ÊÓÌíá ÌãíÚ ÇáØáÇÈ ÊãÇãÇ ãä åÐÇ ÇáãäåÌ ÇáÏÑÇÓí¿'; $string['unenrolme'] = 'ÅáÛÇÁ ÊÓÌíáí ãä $a'; $string['unenrolsure'] = 'åá ÃäÊ ãÊÃßÏ Ãäß ÊÑíÏ ÅáÛÇÁ ÇáÊÓÌíá $a ãä åÐÇ ÇáãäåÌ ÇáÏÑÇÓí?'; -$string['unfinished'] = 'áã íäÊåí ÈÚÏ'; $string['unknowncategory'] = 'ÕäÝ ÛíÑ ãÚÑæÝ'; -$string['unlimited'] = 'ÈáÇ ÍÏæÏ'; $string['unpacking'] = 'Ýß ÇáÍÒãÉ $a'; $string['unsafepassword'] = 'ßáãÉ ãÑæÑ ÛíÑ ÂãäÉ - ÌÑÈ ÃÎÑì'; $string['unusedaccounts'] = 'ÇáÍÓÇÈÇÊ ÇáÊí áÇ ÊÓÊÎÏã áÃßËÑ ãä $a íæãÇ íÊã ÅáÛÇÁ ÇÔÊÑÇßåÇ ÂáíÇ'; @@ -998,7 +827,7 @@ $string['unzippingbackup'] = ' $string['up'] = 'ÃÚáì'; $string['update'] = 'ÊÍÏíË'; $string['updated'] = 'Êã ÊÍÏíË $a'; -$string['updatemyprofile'] = 'ÊÍÏíË ÓíÑÊß ÇáÐÇÊíÉ'; +$string['updatemyprofile'] = 'ÊÍÏíË áãÍå ÔÎÕíÉ'; $string['updatesevery'] = 'íÊã ÇáÊÍÏíË ßá $a ËÇäíå'; $string['updatethis'] = 'ØæÑ åÐÇ $a'; $string['updatethiscourse'] = 'ÍÏË åÐÇ ÇáãäåÌ ÇáÏÑÇÓí'; @@ -1006,21 +835,10 @@ $string['updatinga'] = ' $string['updatingain'] = 'ÊÍÏíË $a->what Ýí $a->in'; $string['upload'] = 'ÊÍãíá'; $string['uploadafile'] = 'ÊÍãíá ãáÝ'; -$string['uploadedfile'] = 'Êã ÊÍãíá ÇáãáÝ ÈäÌÇÍ'; $string['uploadedfileto'] = 'Êã ÊÍãíá $a->file Åáì $a->directory'; -$string['uploadedfiletoobig'] = 'ÚÐÑÇ¡ Ãä ÍÌã ÇáãáÝ ÃãÈÑ ããÇ åæ ãÓãæÍ Èå(ÇáÍÏåæ$a ÈÇíÊ)'; -$string['uploadfailednotrecovering'] = 'áÞÏ ÝÔá ÊÍãíá ãáÝß æÐáß áæÌæÏ ãÔßáÉ Ýí ÃÍÏ ÇáãáÝÇÊ¡ $a->name.
        åäÇÁ ÓÌá ÇáãÔÇßá:
        $a->problem
        áã íÊã ÍáåÇ.'; -$string['uploadfilelog'] = 'ÓÌá ÊÍãíá ãáÝ $a'; -$string['uploadformlimit'] = 'ÇáãáÝ ÇáãÍãá ÊÌÇæÒ ÇáÍÏ ÇáÇÚáì ááÍÌã ÇáãÓãæÍ Èå ãä ÎáÇá ÇáäãæÐÌ.'; -$string['uploadlabel'] = 'ÇáÚäæÇä:'; $string['uploadnofilefound'] = 'áã íÚËÑ Úáì Ãí ãáÝ¡ åá ÊÃßÏÊ ãä ÇÎÊíÇÑß áãáÝ ááÞíÇã ÈÊÍãáå.'; $string['uploadnotallowed'] = 'ÇáÊÍãíá ÛíÑ ãÓãæÍ Èå'; -$string['uploadoldfilesdeleted'] = 'Êã ÍÐÝ ÇáãáÝÇÊ ÇáÞÏíãÉ ÇáÎÇÕÉ Èß.'; -$string['uploadpartialfile'] = 'Êã ÊÍãíá ÌÒÁ ãä ÇáãáÝ'; $string['uploadproblem'] = 'ÍÕá ÎØÇÁ ÛíÑ ãÚÑæÝ ÃËäÇÁ ÊÍãíá ÇáãáÝ. $a(ÑÈãÇ ÍÌã ÇáãáÝ ßÈíÑÌÏÇõ?)'; -$string['uploadrenamedchars'] = 'Êã ÊÛíÑ ãÓãì ÇáãáÝ ãä $a->oldname Åáì $a->newname æÐáß áÚÏã ÇáÊæÇÝÞ ÇáãÓãíÇÊ. '; -$string['uploadrenamedcollision'] = 'Êã ÊÛíÑ ãÓãì ÇáãáÝ ãä $a->oldname Åáì $a->newname æÐáß áæÌÏ ÊÚÇÑÖ ãÚ ÃÓã ÇáãáÝ. '; -$string['uploadserverlimit'] = 'ÇáãáÝ ÇáãÍãá ÊÌÇæÒ ÇáÍÏ ÇáÇÚáì ááÍÌã ÇáãÓãæÍ Èå ãä ÎáÇá ÇáÎÇÏã.'; $string['uploadthisfile'] = 'ÊÍãíá åÐÇ ÇáãáÝ'; $string['uploadusers'] = 'ÊÍãíá ãÓÊÎÏãæä'; $string['usedinnplaces'] = 'ÇÓÊÎÏã Ýí $a '; @@ -1030,31 +848,16 @@ $string['userdata'] = ' $string['userdeleted'] = 'Êã ÍÐÝ ÇÔÊÑÇß åÐÇ ÇáãÓÊÎÏã'; $string['userdescription'] = 'ÇáæÕÝ'; $string['userfiles'] = 'ãáÝÇÊ ÇáãÓÊÎÏã'; -$string['userlist'] = 'ÞÇÆãÉ ÇáãÓÊÎÏãíä'; $string['username'] = 'ÇÓã ÇáãÓÊÎÏã'; $string['usernameexists'] = 'ÇÓã ÇáãÓÊÎÏã ãæÌæÏ ÈÇáÝÚá¡ ÇÎÊÑ ÇÓãÇ ÂÎÑ'; $string['usernotconfirmed'] = 'áã íÊãßä ãä ÊÃßíÏ $a'; -$string['userprofilefor'] = 'ÓíÑÉ $a ÇáÐÇÊíÉ'; +$string['userprofilefor'] = 'ÇááãÍÉ ÇáÔÎÕíÉ áÜ $a'; $string['users'] = 'ÇáãÓÊÎÏãæä'; $string['usersnew'] = 'ãÓÊÎÏãæä ÌÏÏ'; $string['userzones'] = 'äØÇÞ ÇáãÓÊÎÏã'; $string['usingexistingcourse'] = 'ÇÓÊÎÏÇã ÇáãäåÌ ÇáÏÑÇÓí ÇáãæÌÏæÏ'; $string['version'] = 'ÅÕÏÇÑ'; $string['view'] = 'ãÚÇíäå'; -$string['virusfound'] = 'ÇáÑÌÇÁ ÇáÃäÊÈÇå! áÞÏ ÇßÊÔÝ ßáÇãÝí ÝíÑæÓ Ýí ÇáãáÝ ÇáãÍãá ãä ÞÈá $a->user ááãäåÌ ÇáÏÑÇÓí $a->course. åäÇÁ äÊíÌÉ ÝÍÕ ÇáÝíÑæÓÇÊ. '; -$string['virusfoundlater'] = 'áÞÏÊã ÇßÊÔÇÝ ÝíÑæÓ Ýí ÇáãáÝ ÇáÐí ÞãÊ ÈÊÍãíáå æÇáÐí ÈãÓãì $a->filename ÈÊÇÑíÎ $a->date ááãäåÌ ÇáÏÑÇÓí $a->course. åäÇÁ ãáÎÕ áãÇ ÞÏ ÍÕá áãáÝß -$a->action -áæ ßÇä åÐÇ ÇáãáÝ íÍÊæì Úáì Úãá ÊÑÛÈ ÊÓáíãÉ¡ íÌÈ Úáíß ÅÚÇÏÉ ÊÍãáå ãÚ ÇáÊÃßÏ ãä ÓáãÊå ãä ÇáÝíÑæÓÇÊ¡ æáÐáß áíÊãßä ÇáãÚáã ãä ÇÓÊáÇãå.'; -$string['virusfoundlateradmin'] = 'ÇáÑÌÇÁ ÇáÃäÊÈÇå! áÞÏÊã ÇßÊÔÇÝ ÝíÑæÓ Ýí ÇáãáÝ ÇáÐí ÞãÊ ÈÊÍãíáå æÇáÐí ÈãÓãì $a->filename ÈÊÇÑíÎ $a->date ááãäåÌ ÇáÏÑÇÓí $a->course ãä ÞÈá ÇáãÓÊÎÏã $a->user. åäÇÁ ãáÎÕ áãÇ ÞÏ ÍÕá ááãáÝ -$a->action -áÞÏ Êã ÅÍÇØÉ ÇáãÓÊÎÏã.'; -$string['virusfoundlateradminnolog'] = 'ÇáÑÌÇÁ ÇáÃäÊÈÇå! áÞÏ ÇßÊÔÝ ßáÇãÝí ÝíÑæÓ Ýí ÇáãáÝ $a->filename. áã íÓÊØÚ ãæÏá ãä Íá ãÔßáÉ ÇáãáÝ ÇáãÕÇÈ ÈÇáÝíÑæÓ. -åäÇÁ ãáÎÕ áãÇ ÞÏ ÍÕá ááãáÝ - -$a->action '; -$string['virusfoundsubject'] = '$a: Êã ÇáÚ辄 Úáì ÝíÑæÓ'; -$string['virusfounduser'] = 'Êã ÇßÊÔÇÝ Ãä ÇáãáÝ ÇáÐí ÞãÊ ÈÊÍãíáå¡ $a->filename¡ íÍÊæí Úáì ÝíÑæÓ! áÐÇ áã íÊã ÊÍãíá ãáÝß Åáì ÇáãÌáÏ ÇáãÍÏÏ.'; -$string['virusplaceholder'] = 'Êã ÇßÊÔÇÝ Çä åÐÇ ÇáãáÝö ÇáÐí Êã ÊÍãíáå ÍÊæí Úáì ÝíÑæÓ áÐÇ Êã äÞáå Ãæ ÍÐÝÉ æÊã ÇÍÇØÉ ÇáãÓÊÎÏã ÈÐáß.'; $string['webpage'] = 'ÕÝÍÉ ÅäÊÑäÊ'; $string['week'] = 'ÃÓÈæÚ'; $string['weekhide'] = 'ÃÎÝÇÁ åÐÇ ÇáÃÓÈæÚ ãä $a'; @@ -1062,7 +865,7 @@ $string['weeklyoutline'] = ' $string['weekshow'] = 'ÚÑÖ åÐÇ ÇáÃÓÈæÚ áÜ $a'; $string['welcometocourse'] = 'ãÑÍÈÇ Ýí $a'; $string['welcometocoursetext'] = 'ãÑÍÈÇ Ýí $a->coursename! -ãä ÇáÃÔíÇÁ ÇáÊí íÌÈ Ãä ÊÝÚáåÇ ÇÈÊÏÇÁ Ãä ÊÞæã ÈÊÚÏíá ÇáÕÝÍÉ ÇáÓíÑÉ ÇáÐÇÊíÉ ÎáÇá ÇáãäåÌ ÇáÏÑÇÓí ÍÊì äÚÑÝ ÇáãÒíÏ Úäß +ãä ÇáÃÔíÇÁ ÇáÊí íÌÈ Ãä ÊÝÚáåÇ ÇÈÊÏÇÁ Ãä ÊÞæã ÈÊÚÏíá ÇáÕÝÍÉ ÇááãÍÉ ÇáÔÎÕíÉ ÎáÇá ÇáãäåÌ ÇáÏÑÇÓí ÍÊì äÚÑÝ ÇáãÒíÏ Úäß $a->profileurl'; $string['whattocallzip'] = 'ãÇÐÇ ÊÑíÏ ÊÓãíÉ ÇáãáÝ ÇáãÖÛæØ¿'; $string['withchosenfiles'] = 'ãÚ ÇáãáÝÇÊ ÇáãÎÊÇÑÉ'; @@ -1074,7 +877,7 @@ $string['wordforstudents'] = ' $string['wordforstudentseg'] = 'ãËáÇ: ÇáØáÇÈ¡ ÇáãÔÇÑßæä¡ ÇáÏÇÑÓæä¡ ÅáÎ'; $string['wordforteacher'] = 'íÔÇÑ Åáì ÇáãÏÑÓ ÈßáãÉ'; $string['wordforteachereg'] = 'ãËáÇ: ÇáãÏÑÓ¡ ÇáãÍÇÖÑ¡ ÇáãÚáã¡ ÅáÎ'; -$string['wordforteachers'] = 'íÔÇÑ Åáì ÇáãÚáãæä'; +$string['wordforteachers'] = 'íÔÇÑ Åáì ÇáãÏÑÓíä'; $string['wordforteacherseg'] = 'ãËáÇ: ÇáãÏÑÓæä¡ ÇáãÍÇÖÑæä¡ ÇáãÚáãæä¡ ÅáÎ'; $string['writingcategoriesandquestions'] = 'ÇáÞíÇã ÈßÊÇÈÉ ÇáÃÕäÇÝ æÇáÇÓÆáå'; $string['writingcoursedata'] = 'ÇáÞíÇã ÈßÊÇÈÉ ãÚáæãÇÊ ÇáãäåÌ ÇáÏÑÇÓí'; diff --git a/lang/ar/pix.php b/lang/ar/pix.php index 7ed61347140..07ee8e8cfa5 100644 --- a/lang/ar/pix.php +++ b/lang/ar/pix.php @@ -1,26 +1,26 @@ - + diff --git a/lang/ar/quiz.php b/lang/ar/quiz.php index d164731c077..fc6057ec10c 100644 --- a/lang/ar/quiz.php +++ b/lang/ar/quiz.php @@ -1,20 +1,15 @@
        ÈÚÏ Çä ÊÎÊÇÑ Ãæ ÊäÔÆ äæÚíÉ ÓÄÇá ÓÊÊãßä ãä ÇäÔÇÁ Ãæ ÊÚÏø ÇáÃÓÆáÉ. íãßä ÇÎÊíÇÑ Ãíø ãä åÐå ÇáÃÓÆáÉ áÅÖÇÝÊåÇ Åáì ÇáÇãÊÍÇä Úáì ÇáÌÇäÈ ÇáÂÎÑ áåÐå ÇáÕøÝÍÉ .'; $string['addquestions'] = 'ÃÖÝ ÇÓÆáå'; $string['addquestionstoquiz'] = 'ÃÖÝ ÃÓÆáå ááÅãÊÍÇä ÇáÍÇáí'; -$string['addrandom1'] = 'ÇÖÝ'; -$string['addrandom2'] = 'ÇÓÆáÉ ÚÔæÇÆíÉ'; $string['addselectedtoquiz'] = 'ÃÖÝ ÇáÈäæÏ ÇáãÎÊÇÑÉ Åáì ÇáÅãÊÍÇä'; $string['aiken'] = 'ÊäÓíÞ Ãíßä'; -$string['allinone'] = 'ÛíÑ ãÍÍÏ'; $string['allowreview'] = 'ÇáÓãÇÍ ÈÇáãÑÇÌÚÉ'; $string['alreadysubmitted'] = 'íÈÏæ Ãäß ÞÏ ÞÏãÊ åÐå ÇáÅÌÇÈÉ ÈÇáÝÚá'; -$string['alternativeunits'] = 'æÍÏÇÊ ÈÏíáÉ'; $string['alwaysavailable'] = 'ãÊÇÍ ÏÇÆãÇ'; $string['answer'] = 'ÅÌÇÈÉ'; $string['answerhowmany'] = ' ÅÌÇÈÉ æÇÍÏÉ Ãã ÚÏÉ ÅÌÇÈÇÊ¿'; @@ -30,13 +25,10 @@ $string['attemptlast'] = ' $string['attemptquiznow'] = 'Þã ÈÃÏÇÁ ÇáÇãÊÍÇä ÇáÂä'; $string['attempts'] = 'ãÍÇæáÇÊ'; $string['attemptsallowed'] = 'ÇáãÍÇæáÇÊ ÇáãÓãæÍ ÈåÇ'; -$string['attemptsexist'] = 'áÞÏ ÊãÊ ÇÎÐ åÐÇ ÇáÇãÊÍÇä ãÓÈÞÇ'; $string['attemptsunlimited'] = 'ãÍÇæáÇÊ ÛíÑ ãÍÏæÏÉ'; -$string['back'] = 'ÇáÚæÏÉ áãÚÇíäÉ ÇáÓÄÇá'; $string['backtoquiz'] = 'ÚæÏÉ áÊÚÏíá ÇáÇãÊÍÇä'; $string['bestgrade'] = 'ÃÝÖá ÏÑÌÉ'; $string['blackboard'] = 'Blackboard'; -$string['calculated'] = 'Êã ÇáÍÓÇÈ'; $string['calculatedquestion'] = 'ÇÍÊÓÇÈ ÇáÓÄÇá ÛíÑ ãÏÚæã Ýí ÇáÓØÑ $a . ÓíÊã ÊÌÇåá ÇáÓÄÇá.'; $string['caseno'] = 'áÇ¡ ÍÇáÉ ÇáÃÍÑÝ ÛíÑ ãåãÉ'; $string['casesensitive'] = 'ãØÇÈÞÉ ÍÇáÉ ÇáÃÍÑÝ'; @@ -46,8 +38,6 @@ $string['category'] = ' $string['categoryinfo'] = 'ãÚáæãÇÊ Úä ÇáÝÆÉ'; $string['categorymove'] = 'ÝÆÉ \'$a->name\' ÊÍÊæí Úáì $a->count ÓÄÇá. íÑÌì ÇÎÊíÇÑ ÝÆÉ ÃÎÑì áäÞá ÇáÃÓÆáÉ ÅáíåÇ.'; $string['categorymoveto'] = 'ÇäÞá Åáì åÐå ÇáÝÆÉ'; -$string['categoryupdated'] = 'Êã ÊÍÏíË ÇáÝÆÉ ÈäÌÇÍ'; -$string['checkanswer'] = 'ÇÎÊÑ'; $string['choice'] = 'ÇÎÊíÇÑ'; $string['choices'] = 'ÇáÎíÇÑÇÊ ÇáãÊÇÍÉ'; $string['correctanswer'] = 'ÅÌÇÈÉ ÕÍíÍÉ'; @@ -60,9 +50,7 @@ $string['coursetestmanager'] = ' $string['createmultiple'] = 'ÇäÔÆ ÇÓÆáÉ ãÊÚÏÏÉ ÇáÇÎÊíÇÑÇÊ'; $string['createnewquestion'] = 'ÇäÔÆ ÓÄÇá ÌÏíÏ'; $string['custom'] = 'ÊäÓíÞ ãÎÕÕ'; -$string['datasetnumber'] = 'ÑÞã'; $string['daysavailable'] = 'ÇáÃíÇã ÇáãÊÇÍÉ'; -$string['decimals'] = 'ãÚ $a'; $string['default'] = 'ÇÝÊÑÇÖí'; $string['defaultgrade'] = 'ÏÑÌÉ ÇáÓÄÇá ÇáÇÝÊÑÇÖíÉ'; $string['defaultinfo'] = 'ÇáÝÆÉ ÇáÇÝÊÑÇÖíÉ ááÃÓÆáÉ'; @@ -71,9 +59,7 @@ $string['deletequestioncheck'] = ' $string['description'] = 'æÕÝ'; $string['discrimination'] = 'ÝåÑÓÊ ÇáÊãííÒ'; $string['eachattemptbuildsonthelast'] = 'ßá ãÍÇæáÉ ÊÈäì Úáì ÓÇÈÞÊåÇ'; -$string['editcategories'] = 'ÍÑÑÇáÝÆÇÊ'; -$string['editcategory'] = 'ÍÑÑ ÇáÝÆÉ'; -$string['editdatasets'] = 'ÍÑÑ ÇáãæÇÚíÏ'; +$string['editcategories'] = 'ÊÚÏíá ÇáÝÆÇÊ'; $string['editingdescription'] = 'ÊÍÑíÑ ÇáæÕÝ'; $string['editingmatch'] = 'ÊÍÑíÑ ÓÄÇá ÊØÇÈÞí'; $string['editingmultianswer'] = 'ÊÍÑíÑ ÇÌÇÈÇÊ ÖãäíÉ (Cloze)'; @@ -87,23 +73,18 @@ $string['editingshortanswer'] = ' $string['editingtruefalse'] = 'ÊÍÑíÑ ÓÄÇá Úä ÇáÕæÇÈ æÇáÎØÃ'; $string['editquestions'] = 'ÊÍÑíÑ ÇáÇÓÆáå'; $string['errorsdetected'] = '$a Êã ÇÓÊßÔÇÝ ÎØÇÁ (ÃÎØÇÁ)'; -$string['exportfilename'] = 'ÇãÊÍÇä'; -$string['exportname'] = 'ÇÓã ÇáãáÝ'; -$string['exportquestions'] = 'ÕÏÑ ÇáÃÓÆáå Åáì ãáÝ'; $string['false'] = 'ÎÇØìÁ'; $string['feedback'] = 'ÊÚáíÞ'; -$string['file'] = 'ãáÝ'; $string['fileformat'] = 'ÊäÓíÞ ÇáãáÝ'; $string['filloutoneanswer'] = 'áÇÈÏ Ãä Êãáà ÇáÝÑÇÛ ÈÅÌÇÈÉ æÇÍÏÉ Úáì ÇáÃÞá.ÇáÅÌÇÈÇÊ ÇáÊí ÊÊÑß ÝÇÑÛÉ áä ÊÓÊÎÏã.'; $string['filloutthreequestions'] = 'íÌÈ ÊÚÈíÆÉ ËáÇËÉ ÃÓÆáÉ Úáì ÇáÇÞá. ÇáÇÓÆáÉÇáÝÇÑÛÉ áä ÊÓÊÎÏã.'; $string['fillouttwochoices'] = 'íÌÈ ÊÚÈíÆÉ ÇÎÊíÇÑíä Úáì ÇáÃÞá. ÇáÎíÇÑÇÊ ÇáÊí ÊÊÑß ÝÇÑÛÉ áä ÊÓÊÎÏã.'; -$string['forceregeneration'] = 'ÃÌÈÇÑ ÇáÊÌÏíÏ'; $string['fractionsaddwrong'] = 'ÇáÏÑÌÇÊ ÇáãæÌÈÉ ÇáÊí ÍÕáÊ ÚáíåÇ áÇ ÊÈáÛ 100%% -
        Èá ÅäåÇ ÊÈáÛ $a %% -
        åá ÊÑíÏ ÇáÑÌæÚ áÊÕæíÈ åÐÇ ÇáÓÄÇá¿'; +
        Èá ÅäåÇ ÊÈáÛ $a %% +
        åá ÊÑíÏ ÇáÑÌæÚ áÊÕæíÈ åÐÇ ÇáÓÄÇá¿'; $string['fractionsnomax'] = 'áÇ ÈÏ Ãä íßæä ÃÍÏ ÇáÃÓÆáÉ 100%%, ÍÊì íßæä -
        ÇáÍÕæá Úáì ÇáÏÑÌÉ ÇáäåÇÆíÉ áåÐÇ ÇáÓÄÇá ããßäÇ. -
        åá ÊÑíÏ ÇáÑÌæÚ áÊÕæíÈ åÐÇ ÇáÓÄÇá¿'; +
        ÇáÍÕæá Úáì ÇáÏÑÌÉ ÇáäåÇÆíÉ áåÐÇ ÇáÓÄÇá ããßäÇ. +
        åá ÊÑíÏ ÇáÑÌæÚ áÊÕæíÈ åÐÇ ÇáÓÄÇá¿'; $string['gift'] = 'ÊäÓíÞ GIFT'; $string['gradeaverage'] = 'ãÊæÓØ ÇáÏÑÌÉ'; $string['gradehighest'] = 'ÃÚáì ÏÑÌÉ'; @@ -115,16 +96,10 @@ $string['importquestions'] = ' $string['indivresp'] = 'ÅÌÇÈÇÊ ÇáÇÝÑÇÏ áßá ÈäÏ'; $string['introduction'] = 'ãÞÏãÉ'; $string['itemanal'] = 'ÊÍáíá ÈäÏ ÇáÇÌÇÈÉ'; -$string['itemdefinition'] = 'ÊÚÑíÝ'; -$string['link'] = 'ÑÇÈØ'; $string['listitems'] = 'ÞÇÆãÉ ÈäæÏ ÇáÇãÊÍÇä'; -$string['literal'] = 'ÍÑÝí'; $string['marks'] = 'ÇáÏÑÌÇÊ'; $string['match'] = 'ãØÇÈÞÉ'; $string['matchanswer'] = 'ÇáÇÌÇÈÉ ÇáãØÇÈÞÉ'; -$string['max'] = 'ÇÞÕì'; -$string['min'] = 'ÇÏäì'; -$string['minutes'] = 'ÏÞÇÆÞ'; $string['missinganswer'] = 'ÅÌÇÈÇÊ Þáíáå: ÚÈÇÑÇÊ Rx ¡ Lx áÓØÑ ÇáÓÄÇá $a . íÌÈ Úáíß ÃÌÇÈÊíä ãÍÊãáå Úáì ÇáÇÞá. '; $string['missingcorrectanswer'] = 'íÌÈ ÊÍÏí ÇáÇÌÇÈÉ ÇáÕÍíÍÉ'; $string['missingname'] = 'ÇÓã ÇáÓÄÇá ÛíÑ ãÊæÝÑ'; @@ -135,7 +110,6 @@ $string['modulename'] = ' $string['modulenameplural'] = 'ÇãÊÍÇäÇÊ'; $string['multianswer'] = 'ÅÌÇÈÇÊ ÖãäíÉ (Cloze)'; $string['multichoice'] = ' ÎíÇÑÇÊ ãÊÚÏÏÉ'; -$string['multiplier'] = 'ãÊÚÏÏ'; $string['name'] = 'ÇÓã'; $string['noanswers'] = 'áã íÊã ÇÎÊíÇÑ ÅÌÇÈÇÊ!'; $string['noattempts'] = 'áã ÊÊã Ãí ãÍÇæáÇÊ Ýí åÐÇ ÇáÇãÊÍÇä'; @@ -144,15 +118,10 @@ $string['noquestions'] = ' $string['noresponse'] = 'áÇ ÊæÌÏ ÅÌÇÈÉ'; $string['noreview'] = 'áÇ ÊÓÊØíÚ ãÑÇÌÚÉ åÐÇ ÇáÇãÊÍÇä'; $string['noreviewuntil'] = 'áÇ ÊÓÊØíÚ ãÑÇÌÚÉ åÐÇ ÇáÇãÊÍÇä ÍÊì $a '; -$string['notenoughsubquestions'] = 'ÚÏÏ ÇáÇÓÆáÉ ÇáÝÑÚíÉ ÛíÑ ßÇÝí!
        åá ÊÑÛÈ Ýí ÇáÚæÏÉ áÊÚÏíá åÐÇ ÇáÓÄÇá.'; +$string['notenoughsubquestions'] = 'ÚÏÏ ÇáÇÓÆáÉ ÇáÝÑÚíÉ ÛíÑ ßÇÝí!
        åá ÊÑÛÈ Ýí ÇáÚæÏÉ áÊÚÏíá åÐÇ ÇáÓÄÇá.'; $string['numerical'] = 'ÑÞãí'; -$string['optional'] = 'ÇÎÊíÇÑí'; -$string['overdue'] = 'ãÊÃÎÑ ÌÏÇ'; $string['paragraphquestion'] = 'ÓÄÇá ÇáÝÞÑÉ ÛíÑ ãÏÚã Ýí ÓØÑ $a . ÓíÊã ÊÌÇåá ÇáÓÄÇá.'; -$string['passworderror'] = 'ßáãÉ ÇáÓÑ ÇáãÏÎáÉ ÛíÑ ÕÍíÍÉ'; $string['percentcorrect'] = 'äÓÈÉ ÇáÕÍ'; -$string['preview'] = 'ãÚÇíäÉ'; -$string['previewquestion'] = 'ãÚÇíäÉ ÇáÓÄÇá'; $string['publish'] = 'äÔÑ'; $string['qti'] = 'ÊäÓíÞ IMS QTI'; $string['question'] = 'ÓÄÇá'; @@ -160,16 +129,12 @@ $string['questioninuse'] = ' $string['questionname'] = 'ÇÓã ÇáÓÄÇá'; $string['questionnametoolong'] = 'ÇÓã ÇáÓÄÇá Øæíá ÌÏÇÝí ÓØÑ $a(ÇáÍÏ ÇáÇÞÕì 255 ÍÑÝ). Êã ÇÎÊÕÇÑå.'; $string['questions'] = 'ÃÓÆáÉ'; -$string['questionsperpage'] = 'ÇáÍÏ ÇáÇÞÕì áÚÏÏ ÇáÇÓÆáå Ýí ÇáÕÝÍÉ ÇáæÇÍÏÉ'; $string['quizavailable'] = 'ÇáÇãÊÍÇä ãæÌæÏ ÍÊì : $a '; $string['quizclose'] = 'ÅÛáÇÞ ÇáÇãÊÍÇä'; $string['quizclosed'] = 'Êã ÛáÞ åÐÇ ÇáÇãÊÍÇä Ýí $a '; $string['quizcloses'] = 'ÓíÛáÞ ÇáÇãÊÍÇä'; $string['quiznotavailable'] = 'ÇáÇãÊÍÇä áä íßæä ãÊÇÍÇ ÍÊì: $a '; $string['quizopen'] = 'ÝÊÍ ÇáÇãÊÍÇä'; -$string['quizopens'] = 'ÇáÇãÊÍÇä ãÝÊæÍ'; -$string['quiztimelimit'] = 'ÇáæÞÊ ÇáãÍÏÏ: $a'; -$string['quiztimer'] = 'ãÄÞÊ ÇáÇãÊÍÇä'; $string['random'] = 'ÊÑÊíÈ ÚÔæÇÆí'; $string['randomcreate'] = 'ÅäÔÇÁ ÇÓÆáÉ ÚÔæÇÆíå'; $string['randomsamatch'] = 'ÇÌÇÈÉ ÞÕíÑå ÊØÇÈÞíÉ ÚÔæÇÆíÉ'; @@ -177,13 +142,10 @@ $string['randomsamatchcreate'] = ' $string['randomsamatchintro'] = 'áßá ãä ÇáÇÓÆáÉ ÇáÊÇáíÉ¡ ÇÎÊÑ ÇáÇÌÇÈÉ ÇáÕÍíÍÉ ãä ÇáÞÇÆãÉ'; $string['randomsamatchnumber'] = 'ÚÏÏ ÇáÇÓÆáÉ ÇáÊí ÓíÊã ÇÎÊíÇÑåÇ'; $string['readytosend'] = 'ÃäÊ ÈÕÏÏ ÅÑÓÇá ÇÎÊÈÇÑß ÈÇáßÇãá ááÊÞííã. åá ÃäÊ ãÊÃßÏ æÊÑíÏ ÇáÇÓÊãÑÇÑ¿'; -$string['reattemptquiz'] = 'ÅÚÇÏÉ ÇáÇÎÊÈÇÑ'; $string['recentlyaddedquestion'] = 'ÓÄÇá ÇÖíÝ ÍÏíËÇ'; $string['regrade'] = 'ÅÚÇÏÉ ÊÕäíÝ ßá ÇáãÍÇæáÇÊ'; $string['regradecomplete'] = 'Êã ÅÚÇÏÉ ÊÕäíÝ ßá ÇáãÍÇæáÇÊ'; $string['regradecount'] = '$a->changed ãä $a->attempt Êã ÊÛíÑ ÇáÏÑÌÇÊ'; -$string['relative'] = 'äÓÈí'; -$string['remove'] = 'ÇÈÚÏ'; $string['rename'] = 'ÅÚÇÏÉ ÊÓãíÉ'; $string['report'] = 'ÊÞÇÑíÑ'; $string['reportfullstat'] = 'ÅÍÕÇÆíÇÊ ãÝÕáÉ'; @@ -193,17 +155,8 @@ $string['reportmulti_resp'] = ' $string['reportoverview'] = 'ãÚÇíäå ÚÇãå'; $string['reportregrade'] = 'ÅÚÇÏÉ ÊÕÍíÍ ÇáãÍÇæáÇÊ'; $string['reportsimplestat'] = 'ÅÍÕÇÆíÇÊ ãÈÓØÉ'; -$string['requirepassword'] = 'íÊØáÈ ßáãÉ ãÑæÑ'; -$string['requirepasswordmessage'] = 'áÃÎÐ åÐÇ ÇáÇÎÊÈÇÑíÌÈ Úáíß ãÚÑÝÉ ßáãÉ ÇáãÑæÑ'; -$string['requiresubnet'] = 'íÊØáÈ ÚäæÇä ÔÈßÉ'; -$string['reuseifpossible'] = 'ÇÚÏ ÇÓÊÎÏÇã ÇáãÈÚÏ ÓÇÈÞÇð'; $string['review'] = 'ãÑÇÌÚÉ'; -$string['reviewafter'] = 'ÇáÓãÇÍ ÈÇáãÑÇÌÚÉ ÈÚÏ ÇáÇÎÊÈÇÑ'; -$string['reviewalways'] = 'ÇáÓãÇÍ ÈÇáãÑÇÌÚÉ Ýí Ãí æÞÊ'; -$string['reviewbefore'] = 'ÇáÓãÇÍ ÈÇáãÑÇÌÚÉ ÇËäÇÁ ÇáÇÎÊÈÇÑ'; -$string['reviewnever'] = 'ÚÏ ÇáÓãÇÍ ÈÇáãÑÇÌÚÉ'; $string['save'] = 'ÍÝÙ'; -$string['saveandedit'] = 'ÍÝØ ÇáÊÛíÑÇÊ æÊÍÑíÑ ÇáÇÓÆáÉ'; $string['savegrades'] = 'ÍÝÙ ÇáÏÑÌÇÊ'; $string['savemyanswers'] = 'ÍÝÙ ÅÌÇÈÇÊí'; $string['savequiz'] = 'ÍÝÙ åÐÇ ÇáÇãÊÍÇä ßÇãáÇ'; @@ -217,20 +170,13 @@ $string['showcorrectanswer'] = ' $string['showfeedback'] = 'ÚÑÖ ÇáÊÚáíÞ ÈÚÏ ÇáÅÌÇÈÉ?'; $string['shuffleanswers'] = 'ÇÎáØ ÇáÇÌÇÈÇÊ'; $string['shufflequestions'] = 'ÇÎáØ ÇáÇÓÆáÉ'; -$string['significantfigures'] = 'ãÚ $a'; -$string['substitutedby'] = 'ÓíÓÊÈÏá ÈÜÜ'; $string['time'] = 'ÇáæÞÊ'; $string['timecompleted'] = 'Êã'; -$string['timeleft'] = 'ÇáæÞÊ ÇáãÊÈÞí'; -$string['timelimit'] = 'ÇáæÞÊ ÇáãÍÏÏ'; -$string['timelimitexeeded'] = 'ÚÐÑÇ¡ ÇäÊåí ÇáæÞÊ ÇáãÍÏÏ ááÇãÊÍÇä'; -$string['timesup'] = 'ÇäÊåì ÇáæÞÊ!'; $string['timetaken'] = 'ÇáæÞÊ ÇáãÓÊÛÑÞ'; $string['toomanyrandom'] = 'ÚÏÏ ÇáÇÓÆáÉ ÇáÚÔæÇÆíÉ ÇßËÑ ãä ãÇ íÓÊæÚÈÉ åÐÇ ÇáÕäÝ! ($a) '; $string['true'] = 'ÕæÇÈ'; $string['truefalse'] = 'ÕæÇÈ/ÎØÃ'; $string['type'] = 'ÇáäæÚ'; -$string['unit'] = 'ÍÊì'; $string['unknowntype'] = 'äæÚíÉ ÇáÓÄÇá ÛíÑ ãÏÚã Ýí ÓØÑ $a. ÓíÊã ÊÌÇåá ÇáÓÄÇá. '; $string['viewallanswers'] = 'ãÚÇíäÉ $a ÇáÇãÊÍÇäÇÊ ÇáãäÌÒÉ'; $string['viewallreports'] = 'ãÚÇíäÉ ÇáÊÞÇÑíÑ áÜ $a ÇáãÍÇæáÇÊ'; @@ -238,7 +184,6 @@ $string['warningsdetected'] = '$a $string['webct'] = 'ÊäÓíÞ WebCT'; $string['withsummary'] = 'ãÚ ãáÎÕ ÅÍÕÇÆí'; $string['wronggrade'] = 'ÏÑÌÉ ÎØÇÁ (ÈÚÏ ÓØÑ $a ) :'; -$string['xml'] = 'ÊäÓíÞ XML'; $string['yourfinalgradeis'] = 'ÊÕäíÝß ÇáäåÇÆí Úä åÐÇ ÇáÇãÊÍÇä åæ $a '; ?> diff --git a/lang/ar/resource.php b/lang/ar/resource.php index 86970c4a0e5..ed65be36e30 100644 --- a/lang/ar/resource.php +++ b/lang/ar/resource.php @@ -1,77 +1,62 @@ -File Manager.'; -$string['notypechosen'] = 'áÇÈÏ ãä ÇÎÊíÇÑ äæÚ. ÇÓÊÎÏã ÒÑ back ááÑÌæÚ æÅÚÇÏÉ ÇáãÍÇæáÉ.'; -$string['pagedisplay'] = 'ÇÚÑÖ åÐÇ ÇáãæÑÏ Ýí ÇáäÇÝÐå ÇáÍÇáíÉ'; -$string['pagewindow'] = 'äÝÓ ÇáäÇÝÐå'; -$string['popupresource'] = 'áÇ ÈÏ Çä íÙåÑ åÐÇ ÇáãæÑÏ Ýí äÇÝÐå ãÓÊÞáå'; -$string['popupresourcelink'] = 'áæ áã ÊÚãá¡ ÃäÞÑ åäÇÁ: $a'; -$string['resourcetype'] = 'äæÚ ÇáãæÑÏ'; -$string['resourcetype1'] = 'ãÑÌÚ'; -$string['resourcetype2'] = 'ÕÝÍÉ ÇäÊÑäÊ'; -$string['resourcetype3'] = 'ÊÍãíá ãáÝ'; -$string['resourcetype4'] = 'äÕ'; -$string['resourcetype5'] = 'ÑÇÈØ ÇäÊÑäÊ'; -$string['resourcetype6'] = 'äÕ ÃÊÔ Êí Ãã Åá'; -$string['resourcetype7'] = 'ÈÑäÇãÌ'; -$string['resourcetype8'] = 'äÕ ãÔÇÈÉ áæíßí'; -$string['resourcetype9'] = 'ãÌáÏ'; -$string['resourcetypedirectory'] = 'ÇÚÑÖ ÇáãÌáÏ'; -$string['resourcetypefile'] = 'ÇÑÈØ ÈãáÝ Ãæ ãæÞÚ'; -$string['resourcetypehtml'] = 'ÃÚÏ ÕÝÍÉ æíÈ'; -$string['resourcetypelabel'] = 'ÇÏÑÌ ãáÕÞÉ'; -$string['resourcetypetext'] = 'ÇÚÏ ÕÝÍÉ äÕíÉ'; -$string['searchweb'] = 'ÇÈÍË Úä ÕÝÍÉ æíÈ'; -$string['variablename'] = 'ÇÓã ÇáãÊÛíÑÇÊ'; - -?> +'; +$string['filename'] = 'ÇÓã ÇáãáÝ'; +$string['fulltext'] = 'ÇáäÕ ÈÇáßÇãá'; +$string['htmlfragment'] = 'ÔØÑ ãä HTML'; +$string['modulename'] = 'ãæÑÏ'; +$string['modulenameplural'] = 'ãæÇÑÏ'; +$string['neverseen'] = 'ÛíÑ ãÑÆí ãØáÞÇ'; +$string['newdirectories'] = 'ÇÙåÑ æÇÕáÇÊ ÇáãÌáÏ'; +$string['newfullscreen'] = 'ÚÈÁ ßá ÇáÔÇÔå'; +$string['newheight'] = 'ÇáÇÑÊÝÇÚ ÇáÇÝÊÑÇÖí ááäÇÝÐå (ÈÇáÈßÓá)'; +$string['newlocation'] = 'ÇÙåÑ ÔÑíØ ÇáãæÞÚ'; +$string['newmenubar'] = 'ÇÙåÑ ÔÑíØ ÇáÞÇÆãÉ'; +$string['newresizable'] = 'ÇáÓãÇÍ ÈÊÛíÑ ãÞÇÓ ÇáäÇÝÐå'; +$string['newscrollbars'] = 'ÇáÓãÇÍ ÈÊãÑíÑ ÇáäÇÝÏå'; +$string['newstatus'] = 'ÇÙåÑ ÔÑíØ ÇáÍÇáå'; +$string['newtoolbar'] = 'ÇÙåÑ ÔÑíØ ÇáÇÏæÇÊ'; +$string['newwidth'] = 'ÇáÚÑÖ ÇáÝÊÑÇÖí ááäÇÝÏå (ÈÇáÈßÓá)'; +$string['newwindow'] = 'äÇÝÐå ÌÏíÏå'; +$string['newwindowopen'] = 'ÃÚÑÖ åÐÇ ÇáãæÑÏ Ýí äÇÝÐå ÌÏíÏå'; +$string['note'] = 'ãáÍæÙÉ'; +$string['notefile'] = 'áÊÍãíá ÇáãáÝÇÊ Åáì ÇáÍáÞÉ ÇáÏÑÇÓíÉ (æÐáß áÊÙåÑ Ýí ÇáÞÇÆãÉ) ÇÓÊÎÏã File Manager.'; +$string['notypechosen'] = 'áÇÈÏ ãä ÇÎÊíÇÑ äæÚ. ÇÓÊÎÏã ÒÑ back ááÑÌæÚ æÅÚÇÏÉ ÇáãÍÇæáÉ.'; +$string['popupresource'] = 'áÇ ÈÏ Çä íÙåÑ åÐÇ ÇáãæÑÏ Ýí äÇÝÐå ãÓÊÞáå'; +$string['popupresourcelink'] = 'áæ áã ÊÚãá¡ ÃäÞÑ åäÇÁ: $a'; +$string['resourcetype'] = 'äæÚ ÇáãæÑÏ'; +$string['resourcetype1'] = 'ÇáãÑÌÚ'; +$string['resourcetype2'] = 'ÕÝÍÉ ÅäÊÑäÊ'; +$string['resourcetype3'] = 'ÇáãáÝ ÇáÐí Êã ÊÍãíáå'; +$string['resourcetype4'] = 'äÕ ÚÇÏí'; +$string['resourcetype5'] = 'æÕáÉ ÅäÊÑäÊ'; +$string['resourcetype6'] = 'äÕ HTML'; +$string['resourcetype7'] = 'ÇáÈÑäÇãÌ'; +$string['resourcetype8'] = 'äÕ æßí'; + +?> diff --git a/lang/ar/scheduler.php b/lang/ar/scheduler.php index 2a8163ad844..cc3cef4ac2e 100644 --- a/lang/ar/scheduler.php +++ b/lang/ar/scheduler.php @@ -1,43 +1,43 @@ - + diff --git a/lang/ar/scorm.php b/lang/ar/scorm.php index bcf6a15bc9d..8eab6270cde 100644 --- a/lang/ar/scorm.php +++ b/lang/ar/scorm.php @@ -1,5 +1,5 @@ diff --git a/lang/ar/shelf.php b/lang/ar/shelf.php index 0ee101f6d3b..455ead1e322 100644 --- a/lang/ar/shelf.php +++ b/lang/ar/shelf.php @@ -1,8 +1,8 @@ - + diff --git a/lang/ar/survey.php b/lang/ar/survey.php index 29e6acd1f40..32ecd40e61f 100644 --- a/lang/ar/survey.php +++ b/lang/ar/survey.php @@ -1,194 +1,194 @@ -ÇáãÃãæáÉ
        (ÇáãËÇáíÉ) ãÚ ÊÌÑÈÊß ÇáæÇÞÚíÉ Ýí åÐå ÇáæÍÏÉ. -æáíÓ åäÇß ÃÓÆáÉ \'ÕæÇÈ\' Ãæ \'ÎØÃ\'¡ ÝäÍä áÇ íåãäÇ ÅáÇ ÇáÊÚÑÝ Úáì ÑÃíß ÝÞØ¡ ÊÃßÏ ãä Ãä ÑÏæÏß ÓæÝ ÊÚÇãá ÈÃÞÕì ÏÑÌÉ ãä ÇáÓÑíÉ æáä ÊÄËÑ Úáì ÊÞííãß. -ÑÏæÏß ÇáãÊÃäíÉ ÓæÝ ÊÓÇÚÏäÇ Úáì ÊÍÓíä ÇáÚÑÖ ÇáãÈÇÔÑ áåÐå ÇáæÍÏÉ ãÓÊÞÈáÇ. -ãÚ ÌÒíá ÇáÔßÑ'; -$string['collesapname'] = 'COLLES (ÇáãÃãæá æÇáÝÚáí)'; -$string['collesm1'] = 'ÇáÕáÉ'; -$string['collesm1short'] = 'ÇáÕáÉ'; -$string['collesm2'] = 'ÇáÊÝßíÑ ÇáãÊÃäí'; -$string['collesm2short'] = 'ÇáÊÝßíÑ ÇáãÊÃäí'; -$string['collesm3'] = 'ÇáÊÝÇÚá'; -$string['collesm3short'] = 'ÇáÊÝÇÚá'; -$string['collesm4'] = 'ÏÚã ÇáãÚáã'; -$string['collesm4short'] = 'ÏÚã ÇáãÚáã'; -$string['collesm5'] = 'ÏÚã ÇáäÙíÑ'; -$string['collesm5short'] = 'ÏÚã ÇáäÙíÑ'; -$string['collesm6'] = 'ÊÝÓíÑ'; -$string['collesm6short'] = 'ÊÝÓíÑ'; -$string['collesmintro'] = 'Ýí åÐå ÇáæÍÏÉ ÇáãÈÇÔÑÉ...'; -$string['collespintro'] = 'íßãä ÇáÛÑÖ ãä åÐÇ ÇáÇÓÊÈíÇä Ýí ÇáãÓÇÚÏÉ Úáì ãÚÑÝÉ ãÇ íÍæÒ ÊÞÏíÑß Ýí ÚãáíÉ ÇáÊÚáã Úáì ÇáÅäÊÑäÊ. - -ãä ÎáÇá ÇáÃÓÆáÉ ÇáÊÇáíÉ æÚÏÏåÇ 24 ÓÄÇáÇ ÊÓÃá Úä ÊÌÑÈÊß ÇáãÃãæáÉ (ÇáãËÇáíÉ) Ýí åÐå ÇáæÍÏÉ. - -æáíÓ åäÇß ÃÓÆáÉ \'ÕæÇÈ\' Ãæ \'ÎØÃ\'¡ ÝäÍä áÇ íåãäÇ ÅáÇ ÇáÊÚÑÝ Úáì ÑÃíß ÝÞØ¡ ÊÃßÏ ãä Ãä ÑÏæÏß ÓæÝ ÊÚÇãá ÈÃÞÕì ÏÑÌÉ ãä ÇáÓÑíÉ æáä ÊÄËÑ Úáì ÊÞííãß. -ÑÏæÏß ÇáãÊÃäíÉ ÓæÝ ÊÓÇÚÏäÇ Úáì ÊÍÓíä ÇáÚÑÖ ÇáãÈÇÔÑ áåÐå ÇáæÍÏÉ ãÓÊÞÈáÇ. - -ãÚ ÌÒíá ÇáÔßÑ.'; -$string['collespname'] = 'COLLES (ÇáÝÚáí)'; -$string['done'] = 'Êã'; -$string['download'] = 'ÊäÒíá'; -$string['downloadexcel'] = 'ÊäÒíá ÇáÈíÇäÇÊ Ýí ÌÏæá ÈÕíÛÉ ÅßÓá'; -$string['downloadinfo'] = 'íãßäß ÊäÒíá ÇáÈíÇäÇÊ ÈÍÇáÊåÇ áåÐÇ ÇáÇÓÊÈíÇä ÈÔßá ãäÇÓÈ áÊÍáíáåÇ Ýí ÅßÓá, ÃÓ Èí ÃÓÇÃÓ Ãæ Ãí ÈÑÇãÌ ÃÎÑì.'; -$string['downloadtext'] = 'ÊäÒíá ÇáÈíÇäÇÊ Ýí ãÌÑÏ ãáÝ äÕæÕ'; -$string['editingasurvey'] = 'ÊÚÏíá ÇáÇÓÊÈíÇä'; -$string['guestsnotallowed'] = 'áÇ íÓãÍ áÒæÇÑ áÊÓáíã ÇÓÊÈíÇä'; -$string['helpsurveys'] = 'ãÓÇÚÏÉ Ýí ÃäæÇÚ ÇáÇÓÊÈíÇäÇÊ ÇáãÎÊáÝÉ'; -$string['howlong'] = 'ßã ãä ÇáæÞÊ ÃãÖíÊ Ýí ÅÊãÇã åÐÇ ÇáÇÓÊÈíÇä¿'; -$string['howlongoptions'] = 'ÃÞá ãä ÏÞíÞÉ¡ 1-2 ÏÞíÞÉ¡ 2-3 ÏÞÇÆÞ¡ 3-4 ÏÞÇÆÞ¡ 4-5 ÏÞÇÆÞ¡ 5-10 ÏÞÇÆÞ¡ ÃßËÑ ãä 10 ÏÞÇÆÞ'; -$string['ifoundthat'] = 'æÌÏÊ Ãä'; -$string['introtext'] = 'äÕ ÇáãÞÏãÉ'; -$string['ipreferthat'] = ' ÃÝÖá Ãä'; -$string['modulename'] = 'ÇÓÊÈíÇä'; -$string['modulenameplural'] = 'ÇÓÊÈíÇäÇÊ'; -$string['name'] = 'ÇÓã'; -$string['newsurveyresponses'] = 'ÅÌÇÈÉ ÇÓÊÈíÇä ÌÏíÏ'; -$string['nobodyyet'] = 'áÇ íæÌÏ ãä Ãßãá åÐÇ ÇáÇÓÊÈíÇä '; -$string['notdone'] = 'áã íÊã'; -$string['notes'] = 'ÊÍáíáß æãáÇÍÙÇÊß ÇáÎÇÕÉ'; -$string['othercomments'] = 'åá áÏíß ÊÚáíÞÇÊ ÃÎÑì¿'; -$string['peoplecompleted'] = '$a Ãßãá ÇáäÇÓ åÐÇ ÇáÇÓÊÈíÇä ÇáÂä'; -$string['preferred'] = 'íÝÖá'; -$string['preferredclass'] = 'ÇáÝÕá ÇáãÃãæá'; -$string['preferredstudent'] = '$a ãÃãæá'; -$string['question'] = 'ÓÄÇá'; -$string['questions'] = 'ÃÓÆáÉ'; -$string['questionsnotanswered'] = 'áã íÊã ÇáÅÌÇÈÉ Úáì ÈÚÖ ÇáÃÓÆáÉ ÐÇÊ ÇáÎíÇÑÇÊ ÇáãÊÚÏÏÉ.'; -$string['report'] = 'ÊÞÑíÑ ÇáÇÓÊÈíÇä'; -$string['savednotes'] = 'ãáÇÍÙÇÊß ÍÝÙÊ'; -$string['scaleagree5'] = 'ÃÚÇÑÖ ÈÔÏÉ¡ ÃÚÇÑÖ ÈÚÖ ÇáÔíÁ,áÇ ÃÚÇÑÖ æáÇ ÃÊÝÞ,ÃÊÝÞ ÈÚÖ ÇáÔíÁ¡ ÇÊÝÞ ÈÔÏÉ'; -$string['scales'] = 'äØÇÞÇÊ'; -$string['scaletimes5'] = 'Ýí ÇáÛÇáÈ áÇ¡ äÇÏÑÇ¡ ÃÍíÇäÇ¡ Ýí ÃßËÑ ÇáÃÍíÇä¡ ÊÞÑíÈÇ ÏÇÆãÇ'; -$string['seemoredetail'] = 'ÇÖÛØ åäÇ áÊÑì ÊÝÇÕíá ÃßËÑ'; -$string['selectedquestions'] = 'ÇÎÊÑ ÓÄÇáÇ ãä ÇáäØÇÞ, ßá ÇáÏÇÑÓíä'; -$string['summary'] = 'ãæÌÒ'; -$string['surveycompleted'] = 'áÞÏ ÃßãáÊ åÐÇ ÇáÇÓÊÈíÇä. ÇáÑÓã ÇáÈíÇäí íæÖÍ ãáÎÕ äÊÇÆÌß ãÞÇÑäÉ ÈÇáãÊæÓØ .'; -$string['surveyname'] = 'ÇÓã ÇáÇÓÊÈíÇä'; -$string['surveysaved'] = 'ÍÝÙ ÇáÇÓÊÈíÇä'; -$string['surveytype'] = 'äæÚ ÇáÇÓÊÈíÇä'; -$string['thanksforanswers'] = 'ÔßÑÇ Úáì ÇáÅÌÇÈÉ Úáì ÇáÇÓÊÈíÇä, $a'; -$string['time'] = 'ÇáæÞÊ'; -$string['viewsurveyresponses'] = 'ãÚÇíäÉ $a ÑÏæÏ ÇáÇÓÊÈíÇä'; - -?> +ÇáãÃãæáÉ (ÇáãËÇáíÉ) ãÚ ÊÌÑÈÊß ÇáæÇÞÚíÉ Ýí åÐå ÇáæÍÏÉ. +æáíÓ åäÇß ÃÓÆáÉ \'ÕæÇÈ\' Ãæ \'ÎØÃ\'¡ ÝäÍä áÇ íåãäÇ ÅáÇ ÇáÊÚÑÝ Úáì ÑÃíß ÝÞØ¡ ÊÃßÏ ãä Ãä ÑÏæÏß ÓæÝ ÊÚÇãá ÈÃÞÕì ÏÑÌÉ ãä ÇáÓÑíÉ æáä ÊÄËÑ Úáì ÊÞííãß. +ÑÏæÏß ÇáãÊÃäíÉ ÓæÝ ÊÓÇÚÏäÇ Úáì ÊÍÓíä ÇáÚÑÖ ÇáãÈÇÔÑ áåÐå ÇáæÍÏÉ ãÓÊÞÈáÇ. +ãÚ ÌÒíá ÇáÔßÑ'; +$string['collesapname'] = 'COLLES (ÇáãÃãæá æÇáÝÚáí)'; +$string['collesm1'] = 'ÇáÕáÉ'; +$string['collesm1short'] = 'ÇáÕáÉ'; +$string['collesm2'] = 'ÇáÊÝßíÑ ÇáãÊÃäí'; +$string['collesm2short'] = 'ÇáÊÝßíÑ ÇáãÊÃäí'; +$string['collesm3'] = 'ÇáÊÝÇÚá'; +$string['collesm3short'] = 'ÇáÊÝÇÚá'; +$string['collesm4'] = 'ÏÚã ÇáãÚáã'; +$string['collesm4short'] = 'ÏÚã ÇáãÚáã'; +$string['collesm5'] = 'ÏÚã ÇáäÙíÑ'; +$string['collesm5short'] = 'ÏÚã ÇáäÙíÑ'; +$string['collesm6'] = 'ÊÝÓíÑ'; +$string['collesm6short'] = 'ÊÝÓíÑ'; +$string['collesmintro'] = 'Ýí åÐå ÇáæÍÏÉ ÇáãÈÇÔÑÉ...'; +$string['collespintro'] = 'íßãä ÇáÛÑÖ ãä åÐÇ ÇáÇÓÊÈíÇä Ýí ÇáãÓÇÚÏÉ Úáì ãÚÑÝÉ ãÇ íÍæÒ ÊÞÏíÑß Ýí ÚãáíÉ ÇáÊÚáã Úáì ÇáÅäÊÑäÊ. + +ãä ÎáÇá ÇáÃÓÆáÉ ÇáÊÇáíÉ æÚÏÏåÇ 24 ÓÄÇáÇ ÊÓÃá Úä ÊÌÑÈÊß ÇáãÃãæáÉ (ÇáãËÇáíÉ) Ýí åÐå ÇáæÍÏÉ. + +æáíÓ åäÇß ÃÓÆáÉ \'ÕæÇÈ\' Ãæ \'ÎØÃ\'¡ ÝäÍä áÇ íåãäÇ ÅáÇ ÇáÊÚÑÝ Úáì ÑÃíß ÝÞØ¡ ÊÃßÏ ãä Ãä ÑÏæÏß ÓæÝ ÊÚÇãá ÈÃÞÕì ÏÑÌÉ ãä ÇáÓÑíÉ æáä ÊÄËÑ Úáì ÊÞííãß. +ÑÏæÏß ÇáãÊÃäíÉ ÓæÝ ÊÓÇÚÏäÇ Úáì ÊÍÓíä ÇáÚÑÖ ÇáãÈÇÔÑ áåÐå ÇáæÍÏÉ ãÓÊÞÈáÇ. + +ãÚ ÌÒíá ÇáÔßÑ.'; +$string['collespname'] = 'COLLES (ÇáÝÚáí)'; +$string['done'] = 'Êã'; +$string['download'] = 'ÊäÒíá'; +$string['downloadexcel'] = 'ÊäÒíá ÇáÈíÇäÇÊ Ýí ÌÏæá ÈÕíÛÉ ÅßÓá'; +$string['downloadinfo'] = 'íãßäß ÊäÒíá ÇáÈíÇäÇÊ ÈÍÇáÊåÇ áåÐÇ ÇáÇÓÊÈíÇä ÈÔßá ãäÇÓÈ áÊÍáíáåÇ Ýí ÅßÓá, ÃÓ Èí ÃÓÇÃÓ Ãæ Ãí ÈÑÇãÌ ÃÎÑì.'; +$string['downloadtext'] = 'ÊäÒíá ÇáÈíÇäÇÊ Ýí ãÌÑÏ ãáÝ äÕæÕ'; +$string['editingasurvey'] = 'ÊÚÏíá ÇáÇÓÊÈíÇä'; +$string['guestsnotallowed'] = 'áÇ íÓãÍ áÒæÇÑ áÊÓáíã ÇÓÊÈíÇä'; +$string['helpsurveys'] = 'ãÓÇÚÏÉ Ýí ÃäæÇÚ ÇáÇÓÊÈíÇäÇÊ ÇáãÎÊáÝÉ'; +$string['howlong'] = 'ßã ãä ÇáæÞÊ ÃãÖíÊ Ýí ÅÊãÇã åÐÇ ÇáÇÓÊÈíÇä¿'; +$string['howlongoptions'] = 'ÃÞá ãä ÏÞíÞÉ¡ 1-2 ÏÞíÞÉ¡ 2-3 ÏÞÇÆÞ¡ 3-4 ÏÞÇÆÞ¡ 4-5 ÏÞÇÆÞ¡ 5-10 ÏÞÇÆÞ¡ ÃßËÑ ãä 10 ÏÞÇÆÞ'; +$string['ifoundthat'] = 'æÌÏÊ Ãä'; +$string['introtext'] = 'äÕ ÇáãÞÏãÉ'; +$string['ipreferthat'] = ' ÃÝÖá Ãä'; +$string['modulename'] = 'ÇÓÊÈíÇä'; +$string['modulenameplural'] = 'ÇÓÊÈíÇäÇÊ'; +$string['name'] = 'ÇÓã'; +$string['newsurveyresponses'] = 'ÅÌÇÈÉ ÇÓÊÈíÇä ÌÏíÏ'; +$string['nobodyyet'] = 'áÇ íæÌÏ ãä Ãßãá åÐÇ ÇáÇÓÊÈíÇä '; +$string['notdone'] = 'áã íÊã'; +$string['notes'] = 'ÊÍáíáß æãáÇÍÙÇÊß ÇáÎÇÕÉ'; +$string['othercomments'] = 'åá áÏíß ÊÚáíÞÇÊ ÃÎÑì¿'; +$string['peoplecompleted'] = '$a Ãßãá ÇáäÇÓ åÐÇ ÇáÇÓÊÈíÇä ÇáÂä'; +$string['preferred'] = 'íÝÖá'; +$string['preferredclass'] = 'ÇáÝÕá ÇáãÃãæá'; +$string['preferredstudent'] = '$a ãÃãæá'; +$string['question'] = 'ÓÄÇá'; +$string['questions'] = 'ÃÓÆáÉ'; +$string['questionsnotanswered'] = 'áã íÊã ÇáÅÌÇÈÉ Úáì ÈÚÖ ÇáÃÓÆáÉ ÐÇÊ ÇáÎíÇÑÇÊ ÇáãÊÚÏÏÉ.'; +$string['report'] = 'ÊÞÑíÑ ÇáÇÓÊÈíÇä'; +$string['savednotes'] = 'ãáÇÍÙÇÊß ÍÝÙÊ'; +$string['scaleagree5'] = 'ÃÚÇÑÖ ÈÔÏÉ¡ ÃÚÇÑÖ ÈÚÖ ÇáÔíÁ,áÇ ÃÚÇÑÖ æáÇ ÃÊÝÞ,ÃÊÝÞ ÈÚÖ ÇáÔíÁ¡ ÇÊÝÞ ÈÔÏÉ'; +$string['scales'] = 'äØÇÞÇÊ'; +$string['scaletimes5'] = 'Ýí ÇáÛÇáÈ áÇ¡ äÇÏÑÇ¡ ÃÍíÇäÇ¡ Ýí ÃßËÑ ÇáÃÍíÇä¡ ÊÞÑíÈÇ ÏÇÆãÇ'; +$string['seemoredetail'] = 'ÇÖÛØ åäÇ áÊÑì ÊÝÇÕíá ÃßËÑ'; +$string['selectedquestions'] = 'ÇÎÊÑ ÓÄÇáÇ ãä ÇáäØÇÞ, ßá ÇáÏÇÑÓíä'; +$string['summary'] = 'ãæÌÒ'; +$string['surveycompleted'] = 'áÞÏ ÃßãáÊ åÐÇ ÇáÇÓÊÈíÇä. ÇáÑÓã ÇáÈíÇäí íæÖÍ ãáÎÕ äÊÇÆÌß ãÞÇÑäÉ ÈÇáãÊæÓØ .'; +$string['surveyname'] = 'ÇÓã ÇáÇÓÊÈíÇä'; +$string['surveysaved'] = 'ÍÝÙ ÇáÇÓÊÈíÇä'; +$string['surveytype'] = 'äæÚ ÇáÇÓÊÈíÇä'; +$string['thanksforanswers'] = 'ÔßÑÇ Úáì ÇáÅÌÇÈÉ Úáì ÇáÇÓÊÈíÇä, $a'; +$string['time'] = 'ÇáæÞÊ'; +$string['viewsurveyresponses'] = 'ãÚÇíäÉ $a ÑÏæÏ ÇáÇÓÊÈíÇä'; + +?> diff --git a/lang/ar/webquest.php b/lang/ar/webquest.php index 7d42bcb04af..dbc49ac06ff 100644 --- a/lang/ar/webquest.php +++ b/lang/ar/webquest.php @@ -1,8 +1,8 @@ - + diff --git a/lang/ar/wiki.php b/lang/ar/wiki.php index 30643e379a9..badbc97f5d5 100644 --- a/lang/ar/wiki.php +++ b/lang/ar/wiki.php @@ -1,150 +1,124 @@ diff --git a/lang/ar/workshop.php b/lang/ar/workshop.php index b627ab7acdf..646404f17ab 100644 --- a/lang/ar/workshop.php +++ b/lang/ar/workshop.php @@ -1,36 +1,27 @@ ÏÑÌÉ'; $string['agreetothisassessment'] = 'ÃæÝÞ Úáì åÐÇ ÇáÊÞííã'; $string['allgradeshaveamaximumof'] = 'íæÌÏ ÍÏ ÇÞÕì áÌãíÚ ÇáÏÑÌÇÊ: $a'; $string['allowresubmit'] = 'ÇáÓãÇÍ ÈÅÚÇÏÉ ÇáÊÓáíã'; -$string['allsubmissions'] = 'ÌãíÚ ÇáÊÓáíãÇÊ'; $string['alreadyinphase'] = 'ãæÌæÏ Ýí ãÑÍáÉ $a'; $string['amendassessmentelements'] = 'ÚÏá ÚäÇÕÑ ÇáÊÞííã'; $string['amendtitle'] = 'ÚÏá ÇáÚäæÇä'; -$string['analysis'] = 'ÊÍáíá'; $string['analysisofassessments'] = 'ÊÍáíá ÇáÊÞííãÇÊ'; $string['assess'] = 'Þííã'; $string['assessedon'] = 'õÞííã Úáì $a'; $string['assessment'] = 'ÊÞííã'; $string['assessmentby'] = 'Þííã ÈæÇÓØÉ $a'; $string['assessmentdropped'] = 'ÇäÎÝÖ ÇáÊÞííã'; -$string['assessmentend'] = 'äåÇíÉ ÇáÊÞííã'; -$string['assessmentendevent'] = 'äåÇíÉ ÇáÊÞííã áÜ $a'; $string['assessmentgrade'] = 'ÏÑÌÉ ÇáÊÞííã: $a'; $string['assessmentnotyetagreed'] = 'áã íÊÝÞ Úáì ÇáÊÞííã ÈÚÏ'; -$string['assessmentnotyetgraded'] = 'áã íÊã ÊÕÍíÍ ÇáÊÞííã'; -$string['assessmentof'] = 'ÊÞííã áÜ $a'; -$string['assessmentofresubmission'] = 'åÐÇ ÇáÊÞííã áÞØÚÉ Úãá ãäÞÍÉ
        ÞÏ Êã ÊÚÈÆÉ ÏÑÌÇÊß æÊÚáíÞÇÊ Ýí ÇáäãæÐÌ ÇáÍÇáí
        ÇáÑÌÇÁ Þã ÈÊÚÏíáåÇ ÈÚÏ ÇáäÙÑ Ýí ÇáÚãá ÇáãäÞÍ. '; +$string['assessmentofresubmission'] = 'åÐÇ ÇáÊÞííã áÞØÚÉ Úãá ãäÞÍÉ < /br> ÞÏ Êã ÊÚÈÆÉ ÏÑÌÇÊß æÊÚáíÞÇÊ Ýí ÇáäãæÐÌ ÇáÍÇáí < /br> ÇáÑÌÇÁ Þã ÈÊÚÏíáåÇ ÈÚÏ ÇáäÙÑ Ýí ÇáÚãá ÇáãäÞÍ. '; $string['assessmentofthissubmission'] = 'ÊÞííã åÐÇ ÇáÊÓáíã'; $string['assessments'] = 'ÊÞííãÇÊ'; $string['assessmentsareok'] = 'ÇáÊÞííãÇÊ õÃÞÑÊ'; @@ -38,36 +29,21 @@ $string['assessmentsby'] = ' $string['assessmentsdone'] = 'Êã ÇäåÇÁ ÇáÊÞííãÇÊ'; $string['assessmentsexcluded'] = 'ÚÏÏ ÇáÊÞííãÇÊ ÇáãÓÊÈÚÏÉ ãä åÐÇ $a'; $string['assessmentsmustbeagreed'] = 'íÌÈ ÇáÇÊÝÇÞ Úáì ÇáÊÞííãÇÊ'; -$string['assessmentstart'] = 'ÈÏÇíÉ ÇáÊÞííã'; -$string['assessmentstartevent'] = 'ÈÏÇíÉ ÇáÊÞííã áÜ $a'; $string['assessmentwasagreedon'] = 'Êã ÇáÇÊÝÇÞ Úáì ÇáÊÞííã $a'; $string['assessor'] = 'ãÞííã'; -$string['assessthisassessment'] = 'ÕÍÍ åÐÇ ÇáÊÞííã'; $string['assessthissubmission'] = 'Þííã åÐÇ ÇáÊÓáíã'; $string['assignmentnotinthecorrectphase'] = 'ÇáãåãÉ áíÓÊ Ýí ÇáãÑÍáÉ ÇáÕÍíÍÉ'; -$string['assmnts'] = 'ÊÞííãÇÊ'; -$string['attachment'] = 'ãÑÝÞ'; -$string['attachments'] = 'ãÑÝÞÇÊ'; $string['authorofsubmission'] = 'ßÇÊÈ ÇáÊÓáíã'; -$string['automaticgradeforassessment'] = 'ÇáÊÕÍíÍ ÇáÂáí ááÊÞííã'; $string['averageerror'] = 'ÎØÇÁ ãÊæÓØ'; $string['awaitinggradingbyteacher'] = 'Ýí ÇäÊÙÇÑ ÑÕÏ ÇáÏÑÌÉ ÈæÇÓØÉ $a'; $string['beforedeadline'] = 'ÞÈá ÅäÊåÇÁ ÇáãæÚÏ: $a'; -$string['by'] = 'Êã ÊÓáíãÉ ÈæÇÓØÉ'; $string['calculationoffinalgrades'] = 'ÍÓÇÈ ÇáÏÑÌÇÊ ÇáäåÇÆíÉ'; -$string['clearlateflag'] = 'ÇÒá ãÄÔÑ ÇáÊÃÎíÑ'; $string['closeassignment'] = 'ÇÛáÞ ÇáãåãÉ'; $string['comment'] = 'ÊÚáíÞ'; -$string['commentbank'] = 'Èäß ÇáÊÚáíÞ'; $string['commentby'] = 'ÊÚáíÞ ÈæÇÓØÉ'; -$string['comparisonofassessments'] = 'ãÞÇÑäÉ ÇáÊÞííãÇÊ'; $string['confirmdeletionofthisitem'] = 'ÊÃßíÏ ÍÐÝ åÐÇ $a'; $string['correct'] = 'ÕÍ'; -$string['count'] = 'ÚÏ'; $string['criterion'] = 'ãÚíÇÑ'; -$string['currentphase'] = 'ÇáãÑÍáÉ ÇáÍÇáíÉ'; -$string['date'] = 'ÇáÊÇÑíÎ'; -$string['datestr'] = '%%d/%%m/%%y
        %%H:%%M'; $string['deadline'] = 'ÇÎÑ ãæÚÏ'; $string['deadlineis'] = 'ÇÎÑ ãæÚÏ åæ $a'; $string['delete'] = 'ÇÍÐÝ'; @@ -75,26 +51,19 @@ $string['deleting'] = ' $string['description'] = 'æÕÝ'; $string['detailsofassessment'] = 'ÊÝÇÕíá ÇáÊÞííã'; $string['disagreewiththisassessment'] = 'ÚÇÑÖ åÐÇ ÇáÊÞííã'; -$string['displayofcurrentgrades'] = 'ÇÚÑÖ ÇáÏÑÌÇÊ ÇáÍÇáíÉ'; $string['displayoffinalgrades'] = 'ÇÚÑÖ ÇáÏÑÌÇÊ ÇáäåÇÆíÉ'; -$string['displayofgrades'] = 'ÚÑÖ ÇáÏÑÌÇÊ'; $string['dontshowgrades'] = 'áÇ ÊÙåÑ ÇáÏÑÌÇÊ'; $string['edit'] = 'ÍÑÑ'; $string['editacomment'] = 'ÍÑÑ ÇáÊÚáíÞ'; $string['editingassessmentelements'] = 'ÊÍÑíÑ ÚäÇÕÑ ÇáÊÞííã'; -$string['editsubmission'] = 'ÍÑÑ ÇáÊÓáíã'; $string['element'] = 'ÚäÕÑ'; $string['elementweight'] = 'æÒä ÇáÚäÕÑ'; -$string['enterpassword'] = 'ÇÏÎá ßáãÉ ÇáãÑæÑ'; $string['errorbanded'] = 'ÊæÍíÏ ÇáÎØÇÁ'; $string['errortable'] = 'ÌÏæá ÇáÇÎØÇÁ'; -$string['examplesubmissions'] = 'ãËÇá ááÊÓáíãÇÊ'; $string['excellent'] = 'ããÊÇÒ'; $string['excludingdroppedassessments'] = 'ÇÓÊÈÚÏ ÇáÊÞííãÇÊ ÇáãäÎÝÙÉ'; $string['expectederror'] = 'Ýí ÍÇáÉ ÇáÊÎãííä ÊæÞÚ ÞíãÉ ÇáÎØÇÁ $a'; -$string['fair'] = 'ãÞÈæá'; $string['feedbackgoeshere'] = 'ÊÚáíÞß íæÖÚ åäÇÁ'; -$string['firstname'] = 'ÇáÇÓã ÇáÇæá'; $string['generalcomment'] = 'ÊÚáíÞ ÚÇã'; $string['good'] = 'ÌíÏ'; $string['grade'] = 'ÏÑÌÉ'; @@ -106,25 +75,14 @@ $string['gradeforbias'] = ' $string['gradeforreliability'] = 'ÏÑÌÉ ÇáÚæá'; $string['gradeforstudentsassessment'] = 'ÏÑÌÉ ÊÞííã ÇáØÇáÈ'; $string['gradeforsubmission'] = 'ÏÑÌÉ ÇáÊÓáíã'; -$string['gradegiventoassessment'] = 'ÇáÏÑÌÉ ÇáãÚØÇÉ ááÊÞííã'; $string['gradeofsubmission'] = 'ÏÑÌÉ ÊÓáíã: $a'; -$string['grades'] = 'ÏÑÌÇÊ'; -$string['gradesforassessmentsare'] = 'ÞíãÉ ÏÑÌÇÊ ÇáÊÞííã ãä $a'; -$string['gradesforstudentsassessment'] = 'ÏÑÌÇÊ ÇáÊÞííã áÜ $a'; -$string['gradesforsubmissionsare'] = 'ÞíãÉ ÏÑÌÉ ÇáÊÓáíã ãä $a'; $string['gradetable'] = 'ÌÏæá ÇáÏÑÌÉ'; -$string['gradingallassessments'] = 'ÊÞÏíÑ ßá ÇáÊÞííãÇÊ'; -$string['gradinggrade'] = 'ÊÞÏíÑ ÇáÏÑÌÉ'; $string['gradingstrategy'] = 'ÇÓÊÑÇÊíÌíÉ ÑÕÏ ÇáÏÑÌÇÊ'; $string['hidegradesbeforeagreement'] = 'ÅÎÝí ÇáÏÑÌÇÊ ÞÈá ÇáãæÇÝÞÉ'; $string['hidenamesfromstudents'] = 'ÃÎÝí ÇáÇÓãÇÁ ãä $a'; -$string['includeteachersgrade'] = 'ÃÖÝ ÏÑÌÉ ãÚáã'; +$string['includeteachersgrade'] = 'ÃÖÝ ÏÑÌÉ ÇáãÏÑÓ'; $string['incorrect'] = 'ÛíÑ ÕÍíÍ'; -$string['info'] = 'ãÚáæãÉ'; -$string['invaliddates'] = 'ÇáÊæÇÑíÎ ÇáÊí Êã ÅÏÎÇáåÇ ÛíÑ ããßäÉ.
        ÃÓÊÎÏã ÇÒÑÇÑ ÇáÑÌæÚ Åáì ÇáÎáÝ Ýí ÇáãÊÕÝÍ ááÚæÏÉ Åáì ÇáäãæÐÌ ááÞíÇã ÈÊÕÍíÍ ÇáÊæÇÑíÎ.'; $string['iteration'] = 'Êã $a ÊßÑÇÑ'; -$string['lastname'] = 'ÇÓã ÇáÚÇÆáÉ'; -$string['lax'] = 'ãÑä'; $string['leaguetable'] = 'ÌÏæá ãæÍÏ ááÚãá ÇáÐí Êã ÊÓáíãÉ'; $string['listassessments'] = 'ÞÇÆãÉ ÇáÊÞííãÇÊ'; $string['listofallsubmissions'] = 'ÞÇÆãÉ ÌãíÚ ÇáÊÓáíãÇÊ'; @@ -141,75 +99,60 @@ $string['mail7'] = ' $string['mail8'] = 'ÊÚÊÈÑ ÇáãåãÉ $a ÞØÚÉ Úãá ãäÞÍÉ'; $string['mail9'] = 'ÇáÑÌÇÁ ÊÞííãåÇ Ýí ãåãÉ æÑÔÉ ÇáÚãá $a'; $string['managingassignment'] = 'ÅÏÇÑÉ ÇáãåãÉ'; -$string['maximum'] = 'ÇáÇÞÕì'; -$string['maximumsize'] = 'ÇáÍÌã ÇáÇÞÕì'; -$string['mean'] = 'ãÊæÓØ'; -$string['minimum'] = 'ÇáÇÏäì'; +$string['maximumsize'] = 'ÇáÍÌæ ÇáÇÞÕì'; $string['modulename'] = 'æÑÔÉ Úãá'; $string['modulenameplural'] = 'æÑÔ Úãá'; $string['movingtophase'] = 'ÇáÇäÊÞÇá Åáì ãÑÍáÉ $a'; $string['namesnotshowntostudents'] = 'áÇ ÊÙåÑ ÇáÇÓãÇÁ áÜ $a'; $string['newassessments'] = 'ÊÞííãÇÊ ÌÏíÏÉ'; -$string['newattachment'] = 'ãÑÝÞ ÌÏíÏ'; $string['newgradings'] = 'ÑÕÏ ÏÑÌÇÊ ÌÏíÏ'; $string['newsubmissions'] = 'ÊÓáíãÇÊ ÌÏíÏÉ'; $string['noassessments'] = 'áÇ ÊæÌÏ ÊÞííãÇÊ'; $string['noassessmentsdone'] = 'áã íÊã ÊäÝíÐ Ãì ÊÞííãÇÊ'; -$string['noattachments'] = 'áÇ íæÌÏ ãÑÝÞ'; $string['nosubmission'] = 'áÇ íæÌÏ Çì ÊÓáíã'; $string['nosubmissionsavailableforassessment'] = 'áÇ íæÌÏ Ãì ÊÓáíã ááÊÞííã'; -$string['notallowed'] = 'ÛíÑ ãÕÑÍÇð áß Ýí ÇáæÞÊ ÇáÑÇåä ááÏÎæá Úáì åÐå ÇáÕÝÍÉ.'; $string['notavailable'] = 'ÛíÑ ãÊÇÍ'; -$string['notenoughexamplessubmitted'] = 'áã íÊã ÊÓáíã ÇãËáÉ ßÇÝíÉ.'; $string['noteonassessmentelements'] = 'áÇÍÙ Ãä ÇáÊøÕäíÝ ÞÓã Ýí ÚÏÏ ãä ÚäÇÕÑ ÇáÊÞííã .
        -åÐÇ ÈÌÚá ÑÕÏ ÇáÏÑÌÇÊ ÃÓåá æ ÃßËÑ ËÈÇÊÇð . ßãÚáã íÌÈ Ãä ÊÖíÝ åÐå .
        +åÐÇ ÈÌÚá ÑÕÏ ÇáÏÑÌÇÊ ÃÓåá æ ÃßËÑ ËÈÇÊÇð . ßãÏÑøÓ íÌÈ Ãä ÊÖíÝ åÐå .
        ÇáÚäÇÕÑ ÞÈá ÅÊÇÍÉ ÇáãåãÉ ááØøáÈÉ . ÓíäÝÐ åÐÇ .
        ÈÇáÖøÛØ Úáì ÇáãåãÉ Ýí ÇáãäåÌ ÇáÏÑÇÓí, Ýí ÍÇáÉ ÚÏã æÌæÏ Ãì ÚäÕÑ ÓÊÊØáÈ .
        ÈÅÖÇÝÉ ÇáÚäÇÕÑ . íãßäß Ãä ÊÛíøÑ ÚÏÏ ÇáÚäÇÕÑ ÈÇÓÊÎÏÇã ÔÇÔÉ ÊÍíÑí ÇáãåãÉ, .
        -íãßä ÊõÚóÏøóá ÇáÚäÇÕÑ ãä ÇáÔøÇÔÉ \"ÅÏÇÑÉ ÇáãåãÉ\"'; -$string['noteonstudentassessments'] = '{ÇáÏÑÌÉ ãä ÇáØÇáÈ / ÊÞÏíÑ ÏÑÌÉ ÇáÊÞííã}'; +íãßä ÊõÚóÏøóá ÇáÚäÇÕÑ ãä ÇáÔøÇÔÉ "ÅÏÇÑÉ ÇáãåãÉ" +'; $string['notgraded'] = 'áã íÊã ÑÕÏ ÇáÏÑÌÇÊ'; -$string['notitle'] = 'áÇ íæÌÏ ÚäæÇä'; $string['notitlegiven'] = 'áã íÚØì ÚäæÇä'; -$string['nowork'] = 'ÇäÊåÊ ÝÊÑÉ ÇáÊÓáíã.
        áã ÊÞã ÈÊÓáíã Ãí Úãá.'; $string['numberofassessmentelements'] = 'Number of Comments, Assessment Elements, Grade Bands, Criterion Statments or Categories in a Rubric'; $string['numberofassessments'] = 'ÚÏÏ ÇáÊÞííãÇÊ'; $string['numberofassessmentschanged'] = 'ÚÏÏ ÇáÊÞííãÇÊ ÇáÊí Êã ÊÛíÑåÇ: $a'; -$string['numberofassessmentsdropped'] = 'ÚÏÏ ÇáÊÞííãÇÊ ÇáãÍÐæÝÉ: $a'; $string['numberofassessmentsofstudentsubmissions'] = 'ÚÏÏ ÇáÊÞííãÇÊ ÇáãÓáãÉ ãä ÞÈá ÇáØÇáÈ'; -$string['numberofassessmentsofteachersexamples'] = 'ÚÏÏ ÃãËáÉ ÇáÊÞííãÇÊ ÇáãÓáãÉ ãä ÞÈá ÇáãÚáã'; -$string['numberofassessmentsweighted'] = 'ÚÏÏ ÇáÊÞííãÇÊ (ÇáãæÒæäÉ):$a'; -$string['numberofattachments'] = 'ÚÏÏ ÇáÑÝÞÇÊ ÇáãÊæÞÚÉ ãÚ ÇáÊÓáíã'; +$string['numberofassessmentsofteachersexamples'] = 'ÚÏÏ ÃãËáÉ ÇáÊÞííãÇÊ ÇáãÓáãÉ ãä ÞÈá ÇáÏÑÓ'; $string['numberofentries'] = 'ÚÏÏ ÇáãÏÎáÇÊ'; $string['numberofnegativeresponses'] = 'ÚÏÏ ÇáÇÌÇÈÇÊ ÇáÓáÈíÉ'; $string['numberofsubmissions'] = 'ÚÏÏ ÇáÊÓáíãÇÊ: $a'; -$string['ograde'] = 'ÇáÏÑÌÉ
        ÇáßáíÉ'; $string['on'] = 'Ýí $a'; $string['openassignment'] = 'ãåãÉ ãÝÊæÍÉ'; $string['optionaladjustment'] = 'ÊÚÏíáÇÊ ÇÎÊíÇÑíÉ'; -$string['optionforpeergrade'] = 'ÇÎÊíÇÑí áÏÑÌÉ ÇáÒãíá'; +$string['optionforpeergrade'] = 'ÇÎÊíÇÑí áÏÑÌÉ ÇáäÙíÑ'; $string['optionsusedinanalysis'] = 'ÇáÇÎíÇÑÇÊ ÇáãÓÊÎÏãÉ Ýí ÇáÊÍáíá'; $string['overallgrade'] = 'ÇáÏÑÌÉ ÇáßáíÉ'; $string['overallocation'] = 'ÇÚáì ãä ÇáÍÕÉ'; -$string['overallpeergrade'] = 'ÏÑÌÉ ÇáÒãíá ÇáßáíÉ: $a'; -$string['overallteachergrade'] = 'ÏÑÌÉ ÇáãÚáã ÇáßáíÉ: $a'; +$string['overallpeergrade'] = 'ÏÑÌÉ ÇáäÙíÑ ÇáßáíÉ: $a'; +$string['overallteachergrade'] = 'ÏÑÌÉ ÇáãÏÑÓ ÇáßáíÉ: $a'; $string['ownwork'] = 'Úãáß'; -$string['passmnts'] = 'ÊÞííãÇÊ
        ÇáÒãáÇÁ'; -$string['passwordprotectedworkshop'] = 'æÑÔÉ Úãá ãÍãíÉ ÈßáãÉ ãÑæÑ'; $string['percentageofassessments'] = 'äÓÈÉ ÇáÊÞííãÇÊ ÇáÊí ÓÊÎÝÖ'; $string['phase'] = 'ãÑÍáÉ'; -$string['phase0'] = 'ÎÇãá'; -$string['phase0short'] = 'ÎÇãá'; $string['phase1'] = 'ÃÚÏ ãåãÉ'; $string['phase1short'] = 'ÃÚÏ'; $string['phase2'] = 'ÇáÓãÇÍ $a ááÊÓáíãÇÊ '; $string['phase2short'] = 'ÊÓáíãÇÊ'; $string['phase3'] = 'ÇáÓãÇÍ $a ááÊÓáíãÇÊ æÇáÊÞííãÇÊ'; -$string['phase3short'] = 'ßáÇíåãÇ'; +$string['phase3short'] = 'ÇáÇËäíä'; $string['phase4'] = 'ÇáÓãÇÍ $a ááÊÞííãÇÊ'; $string['phase4short'] = 'ÇáÊÞííãÇÊ'; -$string['phase5'] = 'ÃÚÑÖ ÇáÏÑÌÇÊ ÇáäåÇÆíÉ'; -$string['phase5short'] = 'ÃÚÑÖ ÇáÏÑÌÇÊ'; +$string['phase5'] = 'ÍÓÇÈ ÇáÏÑÌÇÊ ÇáäåÇÆíÉ'; +$string['phase5short'] = 'ÍÓÇÈ'; +$string['phase6'] = 'ÇÙåÇÑ ÇáÏÑÌÇÊ ÇáäåÇÆíÉ'; +$string['phase6short'] = 'ÅÙåÇÑ ÇáÏÑÌÇÊ'; $string['pleaseassesstheseexamplesfromtheteacher'] = 'ÇáÑÌÇÁ Þííã åÐå ÇáÇãËáÉ ãä $a'; $string['pleaseassessthesestudentsubmissions'] = 'ÇáÑÌÇÁ Þííã åÐå ÇáÊÓáíãÇÊ ãä $a'; $string['pleaseassessyoursubmissions'] = 'ÇáÑÌÇÁ ÊÞííã ÊÓáíãÇÊß'; @@ -217,9 +160,6 @@ $string['poor'] = ' $string['present'] = 'ÍÇÖÑ'; $string['reasonforadjustment'] = 'ÓÈÈ ÇáÊÚÏíá'; $string['reassess'] = 'ÇÚÏ ÇáÊÞííã'; -$string['regradestudentassessments'] = 'ÃÚÏ ÊÞÏíÑ ÊÞííãÇÊ ÇáØáÇÈ'; -$string['releaseteachergrades'] = 'ÇäÔÑ ÏÑÌÇÊ ÇáãÚáãæä'; -$string['removeallattachments'] = 'ÃÍÐÝ ßá ÇáãÑÝÞÇÊ'; $string['repeatanalysis'] = 'ßÑÑ ÇáÊÍáíá'; $string['reply'] = 'ÇÌÈ'; $string['returnto'] = 'ÅÑÌÚ Åáì'; @@ -230,7 +170,6 @@ $string['saveleaguetableoptions'] = ' $string['savemyassessment'] = 'ÃÍÝÙ ÊÞííãí'; $string['savemycomment'] = 'ÃÍÝÙ ÊÚáíÞí'; $string['savemygrading'] = 'ÃÍÝÙ ÑÕÏí áÏÑÌÇÊ'; -$string['savemysubmission'] = 'ÃÍÝÙ ÊÓáíãí'; $string['saveoverallocation'] = 'ÃÍÝÙ ãÓÊæì ÝæÞ ÇáÍÕÉ'; $string['scale10'] = 'ÇÑÕÏ ãä 10'; $string['scale100'] = 'ÇÑÕÏ ãä 100'; @@ -244,57 +183,40 @@ $string['scalepresent'] = '2 $string['scaleyes'] = '2 äÞØÉ äÚã / áÇ íæÌÏ ãÞíÇÓ'; $string['select'] = 'ÇÎÊÑ'; $string['selfassessment'] = 'ÊÞííã ÐÇÊí'; -$string['showdescription'] = 'ÃÚÑÖ æÕÝ æÑÔÉ ÇáÚãá'; +$string['setoverallocation'] = 'ÇÙÈØ ãÓÊæì ÝæÞ ÇáÍÕÉ'; $string['showgrades'] = 'ÇÖåÇÑ ÇáÏÑÌÇÊ'; -$string['showsubmission'] = 'ÃÚÑÖ ÊÓáíã: $a'; $string['specimenassessmentform'] = 'ÇÓÊãÇÑÉ ÚíøäÉ ÊÞííã'; $string['standarddeviation'] = 'ÚäÕÑ ÇáÇäÍÑÇÝ ÇáÞíÇÓí: $a'; $string['standarddeviationnote'] = 'ÇáÚäÇÕÑ ÐÇÊ ÇáÞíã ÇáÕÛíÑ ÃæÇäÍÑÇÝ ÞíÇÓí ÕÝÑíãßä Çä ÊÍÑÝ ÇáÊÍáíá
        . ÓíÊã ÇÓÊÈÚÇÏ åÐå ÇáÚäÇÕÑ'; -$string['strict'] = 'ÕÇÑã'; $string['studentassessments'] = '$a ÊÞííãÇÊ'; $string['studentgrades'] = '$a ÏÑÌÇÊ'; $string['studentsubmissions'] = '$a ÊÓáíãÇÊ'; $string['studentsubmissionsforassessment'] = '$a ÊÓáíãÇÊ ÇáØÇáÈ ááÊÞííã'; $string['submission'] = 'ÊÓáíã'; -$string['submissionend'] = 'äåÇíÉ ÇáÊÓáíãÇÊ'; -$string['submissionendevent'] = 'äåÇíÉ ÇáÊÓáíãÇÊ áÜ $a'; $string['submissions'] = 'ÊÓáíãÇÊ'; $string['submissionsnolongerallowed'] = 'áã íÚÏ íÓãÍ ÈÇáÊÓáíãÇÊ'; -$string['submissionstart'] = 'ÈÏÇíÉ ÇáÊÓáíãÇÊ'; -$string['submissionstartevent'] = 'ÈÏÇíÉ ÇáÊÓáíãÇÊ áÜ $a'; $string['submissionsused'] = '$a ÇáÊÓáíãÇÊ ÇáãÓÊÎÏãÉ Ýí åÐÇ ÇáÌÏæá'; $string['submitassignment'] = 'Óáã ãåãÉ'; $string['submitassignmentusingform'] = 'ÇÓÊÎÏã åÐå ÇáÇÓÊãÇÑÉ áÊÓáíã ãåãÊß'; -$string['submitexample'] = 'ãËÇá ÇáÊÓáíã'; $string['submitexampleassignment'] = 'Óáã ãËÇá ãåãÉ'; $string['submitrevisedassignment'] = 'ÇÓÊÎÏã åÐå ÇáÇÓÊãÇÑÉ áÊÓáíã ãåãÊß ÇáãäÞÍÉ'; $string['submitted'] = 'Êã ÊÓáíãÉ'; $string['submittedby'] = 'Êã ÊÓáíãÉ ÈæÇÓØÉ'; $string['suggestedgrade'] = 'ÇáÏÑÌÉ ÇáãÞÊÑÍÉ'; -$string['tassmnt'] = 'ãÚáã
        ÊÞííã'; $string['teacherassessments'] = '$a ÇáÊÞííãÇÊ'; -$string['teachergradeforassessment'] = '$a ÏÑÌÉ áÊÞííã'; -$string['teacherscomment'] = 'ÊÚáíÞ ÇáãÚáã'; -$string['teachersgrade'] = 'ÏÑÌÉ ÇáãÚáã'; -$string['teachersubmissionsforassessment'] = '$a ÊÓáíãÇÊ ÇáãÚáã ááÊÞííã'; -$string['thegradeforthisassessmentis'] = 'ÇáÏÑÌÉ áåÐÇ ÇáÊÞííã åí $a'; +$string['teacherscomment'] = 'ÊÚáíÞ ÇáãÏÑÓ'; +$string['teachersgrade'] = 'ÏÑÌÉ ÇáãÏÑÓ'; +$string['teachersubmissionsforassessment'] = '$a ÊÓáíãÇÊ ÇáãÏÑÓ ááÊÞííã'; $string['thegradeis'] = '$a ÇáÏÑÌÉ åí'; +$string['thereisfeedbackfromtheteacher'] = '$a íæÌÏ ÊÚáíÞ ãä'; $string['theseasessmentsaregradedbytheteacher'] = '$a Êã ÑÕÏ ÏÑÌÇÊ åÐå ÇáÊÞííãÇÊ ÈæÇÓØÉ'; -$string['thisisadroppedassessment'] = 'åÐÇ ÇáÊÞííã ãÍÐæÝ'; $string['timeassessed'] = 'ÊÞííã ÇáæÞÊ'; -$string['title'] = 'ÚäæÇä ÇáÊÓáíã'; +$string['title'] = 'ÚäæÇä'; $string['typeofscale'] = 'äæÚ ÇáãÞíÇÓ'; -$string['unassessed'] = '$a áã íÞííã'; -$string['ungradedassessments'] = '$a ÊÞííãÇÊ áã íÊã ÊÞÏíÑåÇ'; $string['ungradedassessmentsofstudentsubmissions'] = '$a áã íÊã ÑÕÏ ÏÑÌÇÊ ááÊÞííãÇÊ ÇáØÇáÈ ÇáãÓáãÉ'; $string['ungradedassessmentsofteachersubmissions'] = '$a áã íÊã ÑÕÏ ÏÑÌÇÊ ááÊÞííãÇÊ ÇáØÇáÈ ÇáãÓáãÉ'; -$string['uploadsuccess'] = 'Êã ÇáÊÍãíá ÈäÌÇÍ'; -$string['usepassword'] = 'ÇÓÊÎÏã ßáãÉ ãÑæÑ'; -$string['verylax'] = 'ãÑä ÌÏÇð'; $string['verypoor'] = 'ÖÚíÝ ÌÏÇð'; -$string['verystrict'] = 'ÕÇÑã ÌÏÇð'; $string['view'] = 'ãÚÇíäÉ'; -$string['viewassessment'] = 'ãÚÇíäÉ ÊÞííã'; $string['viewassessmentofteacher'] = 'ãÚÇíäÉ ÊÞííã $a'; $string['viewotherassessments'] = 'ãÚÇíäÉ ÊÞííãÇÊ ÇÎÑì'; $string['warningonamendingelements'] = 'ÊÍÐíÑ: áÞÏ Êã ÊÓáÈã ÚÏÏ ãä ÇáÊÞííãÇÊ.
        áÇ ÊÞã ÈÊÛíÑ ÚÏÏ ÇáÚäÇÕÑ¡ ÃäæÇÚ ÇáãÞÇííÓ¡ Ãæ ÃæÒÇä ÇáÚäÕÑ.'; @@ -302,9 +224,9 @@ $string['weight'] = ' $string['weightederrorcount'] = 'ÚÏ ÇáÇÎØÇÁ ÇáãæÒæäÉ: $a'; $string['weightforbias'] = 'æÒä ÇáÊÍíÒ'; $string['weightforgradingofassessments'] = 'æÒä ÑÕÏ ÏÑÌÇÊ ÇáÊÞííãÇÊ'; -$string['weightforpeerassessments'] = 'æÒä ÊÞííãÇÊ Òãíá'; +$string['weightforpeerassessments'] = 'æÒä ÊÞííãÇÊ ÇáäÙíÑ'; $string['weightforreliability'] = 'ÇæÒÇä ÇáÊÚæíá'; -$string['weightforteacherassessments'] = 'æÒä ÊÞííãÇÊ ãÚáã'; +$string['weightforteacherassessments'] = 'æÒä ÊÞííãÇÊ ÇáãÏÑÓ'; $string['weights'] = 'ÇæÒÇä'; $string['weightsusedforfinalgrade'] = 'ÇáÇæÒÇä ÇáãÓÊÎÏãÉ ááÏÑÌÉ ÇáäåÇÆíÉ'; $string['weightsusedforsubmissions'] = 'ÇáÇæÒÇä ÇáãÓÊÎÏãÉ ááÊÓáíã'; @@ -313,10 +235,8 @@ $string['workshopassessments'] = ' $string['workshopcomments'] = 'ÊÚáíÞÇÊ æÑÔÉ Úãá'; $string['workshopfeedback'] = 'ÊÚáíÞ æÑÔÉ Úãá'; $string['workshopsubmissions'] = 'ÊÓáíã æÑÔÉ Úãá'; -$string['wrongpassword'] = 'ßáãÉ ÇáãÑæÑ ÛíÑ ÕÍíÍÉ áÏÎæá Åáì æÑÔÉ ÇáÚãá åÐå'; $string['yourassessments'] = 'ÊÞííãß'; $string['yourassessmentsofexamplesfromtheteacher'] = 'ÊÞííã ááÃãËáÉ ÇáãÞÏãÉ ãä $a'; $string['yourfeedbackgoeshere'] = 'ÊÚáíÞß íæÖÚ åäÇÁ'; -$string['yoursubmissions'] = 'ÊÓáíãÇÊß'; ?> diff --git a/lang/be/README b/lang/be/README index ae0782aa72d..f49d4381f61 100644 --- a/lang/be/README +++ b/lang/be/README @@ -1,17 +1,15 @@ -Belarusian translation - -contact: Maryia Davidouskaia -maryia@iatp.by- +Belarusian translation by maryia@iatp.by +Maryia Davidouskaia Áåëàðóñêàÿ âåðñ³ÿ Moodle -Ïðàáëåìû ç êàäûðî¢êàé âûðàøàþööà àäêëþ÷ýííåì êàäûðî¢ê³ ïà-çìà¢÷àíí³ ¢ íàëàäàõ àïà÷ó (ôàéë httpd.conf): +Ïðàáëåìû ç êàäûðî¢êàé âûðàøàþööà àäêëþ÷ýííåì êàäûðî¢ê³ ïà-çìà¢÷àííþ ¢ íàëàäàõ àïà÷ó (ôàéë httpd.conf): AddDefaultCharset off àáî ¢ñòà븢êàé ÿãî íà Windows-1251 Ïàäçÿê³: -Ñÿðãåé Êðó÷êî¢, sk@tbm.org.by -Àëåã Àçàðî¢ñê³, olegtut@tut.by -Ìàðûÿ Äàâ³äî¢ñêàÿ, maryia@iatp.by -Âÿðíàðäà ²âàíîâà, milaiv@tbm.org.by -Óëàäç³ì³ð Êîø÷àíêà, dassax@mail.com -Äçÿí³ñ Òóøûíñê³, tbm@tbm.lingvo.minsk.by -Õâåäàð ϳñêóíî¢, fpiskounov@mail.ru \ No newline at end of file +Àëåã Àçàðî¢ñê³ +Ìàðûÿ Äàâ³äî¢ñêàÿ +Óëàäç³ì³ð Âàðàá'¸¢ +Óëàäç³ì³ð Êîø÷àíêà +Äçÿí³ñ Òóøûíñê³ +Õâåäàð ϳñêóíî¢ \ No newline at end of file diff --git a/lang/be/activitynames.php b/lang/be/activitynames.php index 3d36d488723..8553b9323c8 100644 --- a/lang/be/activitynames.php +++ b/lang/be/activitynames.php @@ -1,7 +1,7 @@ diff --git a/lang/be/admin.php b/lang/be/admin.php index 92db57f8e20..f16f1800ea0 100644 --- a/lang/be/admin.php +++ b/lang/be/admin.php @@ -1,44 +1,13 @@ $a, òî ÿíû áóäóöü çí³ø÷àíû äëÿ ¢ñ³õ êàðûñòàëüí³êà¢, ÿê³ÿ ³õ âûêàðûñòî¢âàþöü. Ãýòàÿ àïåðàöûÿ çìåí³öü íàñòðîéê³ ÷àñó áåç ïàâåäàìëåííÿ. Âû ¢ïý¢íåíû, øòî ïàòðýáíà ïðàäî¢æûöü?'; -$string['confirmdeletedstdefault'] = 'Ðåã³ÿíàëüíûÿ ¢ñòàíî¢ê³ $a âûêàðûñòî¢âàþöàà äëÿ ¢ñ³õ êàðûñòàëüí³êࢠñàéòà! Âûäàëåííå ³õ çìåí³öü íàñòðîéê³ ÷àñó äëÿ êàðûñòàëüí³êࢠáåç ïàïÿðýäíÿãà ïàâåäàìëåííÿ. Âû ¢ïý¢íåíû, øòî ïàòðýáíà ïðàäî¢æûöü?'; -$string['cronwarning'] = 'cron.php ñêðûïò ïàäòðûìê³ íå âûêàðûñòî¢âà¢ñÿ ñàìà ìåíåé 24 ãàäç³íû.
        äàêóìåíòàöûÿ ïà ëàäàâàíí³ òëóìà÷ûöü ÿê ãýòà ìîæíà à¢òàìàòûçàâàöü.'; -$string['dstisapreference'] = 'Êîæíû êàðûñòàëüí³ê ìîæà àáðàöü, ÿê³ '; -$string['dstisforcedto'] = 'Ïðûìóñîâà ¢ñå êàðûñòàëüí³ê³ âûêàðûñòî¢âàþöü'; -$string['dstpresets'] = 'Ðýã³ÿíàëüíûÿ íàñòðîéê³'; -$string['editingdstpreset'] = 'Ðýäàãàâàöü ðýã³ÿíàëüíûÿ íàñòðîéê³'; -$string['emptydstlist'] = 'Çàðàç íå âûçíà÷àíû ðýã³ÿíàëüíûÿ ¢ñòàíî¢ê³. Âû ìîæàöå äàäàöü ³õ, íàö³ñíó¢ íà êíîïêó Äàäàöü.'; -$string['errordstpresetactivateearlier'] = 'Ìåñÿö àêòûâàöû³ ïàâ³íåí áûöü ðàíåé ÷ûì ìåñÿö äýàêòûâàöû³'; -$string['errordstpresetnameempty'] = 'Íàçâà ðýã³ÿíàëüíûõ íàñòðîåê íà ïàâ³ííà áûöü ïóñòîé'; -$string['errordstpresetnameexists'] = '²íøûÿ ðýã³ÿíàëüíûÿ íàñòðîéê³ ç òàêîé íàçâàé ³ñíóþöü'; $string['filteruploadedfiles'] = 'Ô³ëüòðàâàííå ôàéëà¢, ÿê³ÿ çàãðóæàþööà'; -$string['helpadminseesall'] = 'Äàçâîë³öü àäì³í³ñòðàòàðàì áà÷ûöü óñå ïàâåäàìëåíí³, ïàäçå³ êàëÿíäàðà ö³ òîëüê³ ³õ àñàá³ñòûÿ?'; -$string['helpcalendarsettings'] = 'Íàñòðî³öü êàëÿíäàð ³ ðîçíûÿ àñïåêòû, çâÿçàíûÿ ç ðýã³ÿíàëüíûì³ íàñòðîéêàì³ Moodle'; -$string['helpdstforusers'] = 'Êîæíû êàðûñòàëüí³ê ìîæà âûêàðûñòî¢âàöü àñàá³ñòûÿ ðýã³ÿíàëüíûÿ íàñòðîéê³?'; -$string['helpmanagedstpresets'] = 'Íàö³ñí³öå íà êíîïêó, êàá äàäàöü, àäðýäàãàâàöü ³ âûäàë³öü ðýã³ÿíàëüíûÿ íàñòðîéê³, ÿê³ÿ ìàã÷ûìû äëÿ ãýòàãà ñàéòà.'; -$string['helpstartofweek'] = 'Ç ÿêîãà äíÿ ïà÷ûíàåööà òûäçåíü ó êàëÿíäàðû?'; -$string['helpupcominglookahead'] = 'ßê øìàò äç¸í ó áóäó÷ûí³ ïàâ³ííû àäëþñòðî¢âàööà ¢ êàëÿíäàðû äëÿ íàñòóïàþ÷ûõ ïàäçåé ïà çìà¢÷àííþ?'; -$string['helpupcomingmaxevents'] = 'ßê øìàò (ìàêñ³ìóì) íàñòóïàþ÷ûõ ïàäçåé ïàâ³ííû àäëþñòðî¢âàööà êàðûñòàëüí³êàì ïà çìà¢÷àííþ?'; -$string['helpweekenddays'] = 'ßê³ÿ äí³ òûäíÿ ðàçãëÿäàþööà ÿê ÿãî êàíåö ³ ïàâ³ííû àäëþñòðî¢âàööà ³íøûì³ êîëåðàì³?'; -$string['managedstpresets'] = 'Íàñòðî³öü ðýã³ÿíàëüíûÿ óñòàíî¢ê³'; -$string['nodstpresetsexist'] = 'Ïàäòðûìêà ðýã³ÿíàëüíûõ íàñòðîåê çàáëàê³ðàâàíà äëÿ ¢ñ³õ êàðûñòàëüí³êࢠòàìó, øòî ÿíû íå ïàçíà÷àíû. Âû ìîæàöå ³õ íàñòðî³öü, êàë³ âûêàðûñòàåöå êíîïêó í³æýé.'; -$string['therewereerrors'] = 'Áûë³ ïàìûëê³ ¢ Âàøûõ äàäçåíûõ'; $string['upgradelogs'] = 'Äëÿ áîëüø ïî¢íàé ôóíêöûÿíàëüíàñö³ Âàøó ñòàðóþ ñ³ñòýìíóþ ³íôàðìàöûþ (logs) íåàáõîäíà ¢çíà¢ëÿöü. Áîëüø ³íôàðìàöû³'; $string['upgradelogsinfo'] = 'Íåêàòîðûÿ çìåíû ìîãóöü àäáûâàööà ç ñ³ñòýìíàé ³íôàðìàöûÿé (logs) ³ ÿå çàï³ñàì. Äëÿ òàãî, êàá ìîæíà áûëî ïðàãëÿäàöü óñå ñòàðûÿ logs íà àñíîâå per-activity basis, Âàøû ñòàðûÿ logs ïàâ³ííû ïåðûÿäû÷íà óçíà¢ëÿööà. Ãýòà çàëåæûöü àä Âàøàãà ñàéòó ³ ìîæà çàéìàöü øìàò ÷àñó (íàâàò íåêàëüê³ ãàäç³íà¢) ³ Âû ìîæàöå íàâàò ïåðàâûøàöü äàçâîëåíûÿ ìåæû ¢ ÁÄ äëÿ íàäçâû÷àé âÿë³ê³õ ñàéòà¢. Àäíàê, Âû ìóñ³öå çàïóñêàöü òàê³ ïðàöýñ àäíà¢ëåííÿ ñ³ñòýìíàé ³íôàðìàöû³ ³ íå ïåðàïûíÿöü ÿãî (íå çà÷ûíÿöü âîêíû áðà¢çåðà) äà ïî¢íàãà çàâÿðøýííÿ. Íå õâàëþéöåñÿ ïàä÷àñ òàêîé ïðàöû ñàéò äëÿ ³íøûõ êàðûñòàëüí³êࢠáóäçå ïðàöàâàöü ó çâû÷àéíûì ðýæûìå. Âû æàäàåöå ïðàâåñö³ óçíà¢ëåííå ñ³ñòýìíàé ³íôàðìàöû³ (logs) íåàäêëàäíà? '; -$string['upgradesure'] = 'Âàøûÿ ôàéëû Moodle áûë³ çìåíåíû ³ Âàì íåàáõîäíà à¢òàìàòû÷íà àäíàâ³öü âàø ñåðâåð äà ãýòࢠâåðñ³³: -

        $a

        -

        Ìàéöå íà ¢âàçå, êàë³ àáíàâ³öå âåðñ³þ, òî íå çìîæàöå âÿðíóööà äà ïàïÿðýäíÿãà âàðûÿíòó.

        -

        Âû ¢ïýíåíû, øòî õî÷àöå àáíàâ³öü ãýòû ñåðâåð äà ãýòàé âåðñ³³?

        '; $string['upgradinglogs'] = 'Óçíà¢ëåííå ñ³ñòýìíàé ³íôàðìàöû³ (logs) '; ?> + + diff --git a/lang/be/appointment.php b/lang/be/appointment.php index 77a14b179ae..e69de29bb2d 100644 --- a/lang/be/appointment.php +++ b/lang/be/appointment.php @@ -1,45 +0,0 @@ - diff --git a/lang/be/assignment.php b/lang/be/assignment.php index b4f4341673d..df91d571ed9 100644 --- a/lang/be/assignment.php +++ b/lang/be/assignment.php @@ -1,26 +1,18 @@ teacher çðàá³¢ êàìåíòàð äà Âàøàãà çàäàííÿ äëÿ \'$a->assignment\'. Âû ìîæàöå ïàãëÿäçåöü ÿãî ïà ñïàñûëöû: $a->url'; -$string['assignmentmailhtml'] = '$a->teacher çðàá³¢ êàìåíòàð äà Âàøàãà \'$a->assignment\'

        Âû ìîæàöå ïàãëÿäçåöü ÿãî url\">ïà ñïàñûëöû:.'; +$string['assignmentmail'] = '$a->teacher çðàá³¢ êàìåíòàð äà Âàøàãà çàäàííÿ äëÿ \'$a->assignment\'.Âû ìîæàöå ïàãëÿäçåöü ÿãî ïà ñïàñûëöû: $a->url'; +$string['assignmentmailhtml'] = '$a->teacher çðàá³¢ êàìåíòàð äà Âàøàãà äëÿ \'$a->assignment\'

        Âû ìîæàöå ïàãëÿäçåöü ÿãî url\">ïà ñïàñûëöû:.'; $string['assignmentname'] = 'Íàçâà çàäàííÿ'; $string['assignmenttype'] = 'Òûï çàäàííÿ'; -$string['configmaxbytes'] = 'Óñòàíî¢ëåíû ïà-çìà¢÷àíí³ ìàêñ³ìàëüíû ïàìåð äëÿ ¢ñ³õ çàäàííÿ¢ íà ñàéöå (ñóàäíîñ³ööà ç óñòàíî¢ëåíûì àáìåæàâàííåì ïà êóðñó ³ ç ³íøûì³ ëàêàëüíûì³ ¢ñòàíî¢êàì³)'; +$string['configmaxbytes'] = 'Óñòàíî¢ëåíû ïà-çìà¢÷àíí³ ìàêñ³ìàëüíû ïàìåð äëÿ ¢ñ³õ çàäàííÿ¢ íà ñàéöå (ñóàäíîñ³ööà ç óñòàíî¢ëåíûì àáìåæàâàííåì ïà êóðñó ³ ç ³íøûì³ ëàêàëüíûì³ ¢ñòàíî¢êàì³)'; $string['description'] = 'Àï³ñàííå'; $string['duedate'] = 'Àïîøí³ òýðì³í çäà÷û'; $string['duedateno'] = 'Íå ìàå àïîøíÿãà òýðì³íó çäà÷û'; $string['early'] = '$a ðàíà'; -$string['emailteachermail'] = '$a->username àáíàâ³ë³ ñâàå àäêàçû äëÿ -\'$a->assignment\' - -Ïðàãëåäçåöü ³õ ìàã÷ûìà òóò: $a->url'; -$string['emailteachermailhtml'] = '$a->username àáíàâ³ë³ ñâàå àäêàçû äëÿ \'$a->assignment\'

        -ßíû äàñòóïíûÿ ïà url\">ãýòàìó àäðàñó íà ñàéöå. -'; -$string['emailteachers'] = 'Ïàïÿðýäæàíí³ íàêîíò ýëåêòðîííàé ïîøòû äëÿ âûêëàä÷ûêà¢'; $string['existingfiledeleted'] = '²ñíóþ÷û ôàéë áû¢ âûäàëåíû: $a'; $string['failedupdatefeedback'] = 'Íå ¢äàëîñÿ àäíàâ³öü àäêàç êàðûñòàëüí³êà $a'; $string['feedback'] = 'Çìÿí³öü'; @@ -29,11 +21,11 @@ $string['late'] = '$a $string['maximumgrade'] = 'Ìàêñ³ìàëüíàÿ àäçíàêà'; $string['maximumsize'] = 'Ìàêñ³ìàëüíû ïàìåð'; $string['modulename'] = 'Çàäàííå'; -$string['modulenameplural'] = 'Çàäàíí³'; +$string['modulenameplural'] = 'Çàäàííÿ'; $string['newsubmissions'] = 'Ïðàïàíàâàöü àäêàç'; $string['notgradedyet'] = 'Ïàêóëü àäçíàêà íå àòðûìàíà'; $string['notsubmittedyet'] = 'Àäïðàâ³öü ðàøýííå'; -$string['overwritewarning'] = 'Óâàãà: Êàë³ Âû äàäç³öå íîâû âàðûÿíò àäêàçó, òî ïàïÿðýäí³ âàðûÿíò áóäçå çàìåø÷àíû íîâûì'; +$string['overwritewarning'] = 'Óâàãà: Âû ìîæàöå çìÿí³öü àäêàç, òàäû ãýòû áóäçå âûäàëåíû'; $string['saveallfeedback'] = 'Çàõàâàöü óñå âûïðà¢ëåíí³'; $string['submissionfeedback'] = 'Àäêàç âûïðà¢ëåíû'; $string['submissions'] = 'Àäêàçû'; @@ -41,7 +33,7 @@ $string['submitassignment'] = ' $string['submitted'] = 'Àäêàç ïðûíÿòû'; $string['typeoffline'] = 'Àäêàç – ïà-çà ñàéòàì'; $string['typeuploadsingle'] = ' Àäêàç – ó âûãëÿäçå ôàéëà'; -$string['uploadbadname'] = 'Ãýòû ôàéë óòðûìë³âàå íåäàïóø÷àëüíûÿ ñ³ìâàëû ³ íÿ ìîæà áûöü çàïàìïàâàíû'; +$string['uploadbadname'] = ' Ãýòû ôàéë óòðûìë³âàå íåäàïóñêàëüíûÿ ñ³ìâàëû ³ íÿ ìîæà áûöü çàïàìïàâàíû'; $string['uploadedfiles'] = 'Çàïàìïàâàíûÿ ôàéëû'; $string['uploaderror'] = 'Ïàä÷àñ çàõàâàííÿ ôàéëà íà ñýðâåð àäáûëàñÿ ïàìûëêà'; $string['uploadfailnoupdate'] = 'Ôàéë áû¢ çàïàìïàâàíû, àëå íÿ ìîæà àäíàâ³öü Âàø ïàïÿðýäí³ àäêàç!'; @@ -53,4 +45,4 @@ $string['viewfeedback'] = ' $string['viewsubmissions'] = 'Ïàãëÿäçåöü $a àäêàçࢠíà çàäàííå'; $string['yoursubmission'] = 'Âàø àäêàç'; -?> +?> \ No newline at end of file diff --git a/lang/be/attendance.php b/lang/be/attendance.php index 59b21bcacc4..e483e2cf3f5 100644 --- a/lang/be/attendance.php +++ b/lang/be/attendance.php @@ -1,5 +1,5 @@ +?> \ No newline at end of file diff --git a/lang/be/auth.php b/lang/be/auth.php index 9901b85d6a4..ccdae33286c 100644 --- a/lang/be/auth.php +++ b/lang/be/auth.php @@ -1,33 +1,22 @@ Ãýòûÿ ïàë³ äàäàòêîâûÿ. Âû ìîæàöå âûáðàöü ïàïÿðýäíÿå çàïà¢íåííå íåêàòîðûõ ïà븢 êàðûñòàëüí³öê³õ äàäçåíûõ àä ïà븢 çíåøíÿé áàçû äàäçåíûõ, ïàêàçàíàé òóò.

        Íå çàïà¢íÿéöå ïîëå, äëÿ âûêàðûñòàííÿ íàñòðîåê ïà-çìà¢÷àíí³.

        +$string['auth_dbextrafields'] = 'Ãýòûÿ ïàë³ äàäàòêîâûÿ. Âû ìîæàöå âûáðàöü ïàïÿðýäíÿå çàïà¢íåííå íåêàòîðûõ ïà븢 êàðûñòàëüí³öê³õ äàäçåíûõ àä ïà븢 çíåøíÿé áàçû äàäçåíûõ, ïàêàçàíàé òóò.

        Íå çàïà¢íÿéöå ïîëå, äëÿ âûêàðûñòàííÿ íàñòðîåê ïà-çìà¢÷àíí³.

        Ó ëþáûì âûïàäêó, êàðûñòàëüí³ê çìîæà ðýäàãàâàöü óñå ïàë³ ïàñëÿ òàãî, ÿê ¸í çîéäçå ¢ ñ³ñòýìó.

        '; $string['auth_dbfieldpass'] = 'Íàçâà ïîëÿ, ÿêîå çìÿø÷àå ïàðîëü'; $string['auth_dbfielduser'] = 'Íàçâà ïîëÿ, ÿêîå çìÿø÷àå ëàã³í'; -$string['auth_dbhost'] = 'Êàìï\'þòýð, íà ÿê³ì çàïóø÷àíû ñýðâåð áàçû äàäçåíûõ.'; +$string['auth_dbhost'] = 'Êàìï'þòýð, íà ÿê³ì çàïóø÷àíû ñýðâåð áàçû äàäçåíûõ.'; $string['auth_dbname'] = 'Íàçâà áàçû äàäçåíûõ'; $string['auth_dbpass'] = 'Ïàðîëü, àäïàâåäíû ïàêàçàíàìó ëàã³íó'; $string['auth_dbpasstype'] = 'Âûçíà÷àå ôàðìàò âûêàðûñòàíûõ ïàðîëÿ¢. MD5-êàäàâàííå íàéáîëüø ïðûäàòíàå ïðû çëó÷ýíí³ äà ³íøûõ web-äàäàòêà¢, íàïðûêëàä, PostNuke'; $string['auth_dbtable'] = 'Íàçâà òàáë³öû ¢ áàçå äàäçåíûõ'; $string['auth_dbtitle'] = 'Âûêàðûñòàöü çíåøíþþ áàçó äàäçåíûõ'; -$string['auth_dbtype'] = 'Òûï áàçû äàäçåíûõ (Ãë. Äàêóìåíòàöûþ ïà ADO db)'; +$string['auth_dbtype'] = 'Òûï áàçû äàäçåíûõ (Ñì. Äàêóìåíòàöûþ ïà ADO db äëÿ äýòàëÿ¢)'; $string['auth_dbuser'] = 'Ëàã³í êàðûñòàëüí³êà ç ïðàâàì³ òîëüê³ íà ÷ûòàííå äëÿ áàçû äàäçåíûõ'; -$string['auth_editlock'] = 'Çàáëàêàâàíàå çíà÷ýííå'; -$string['auth_editlock_expl'] = '

        Çàáëàêàâàíàå çíà÷ýííå:Êàë³ ðàçáëàêóåöå, òî áóäçå âûäàâàööà ïàïÿðýäæàííå àá ðýäàãàâàíí³ êàðûñòàëüí³êàì³ ³ àäì³í³ñòðàòàðàì³ íåïàñðýäíà äàäçåíûõ ïîëÿ. Âûêàðûñòî¢âàéöå ãýòû ïàðàìåòð, êàë³ âû çàõî¢âàåöå ãýòûÿ äàäçåíûÿ ¢ çíåøíÿé ñ³ñòýìå à¢òàðûçàöû³.

        '; -$string['auth_emaildescription'] = 'Ïàöâÿðäæýííå ç äàïàìîãàé ýëåêòðîííàé ïîøòû - âûêàðûñòàíû ïà-çìà¢÷àíí³ ìåòàä à¢òýíòûô³êàöû³. Ïðû ðýã³ñòðàöû³ êàðûñòàëüí³êà ïðàç ïàêàçàíû àäðàñ ýëåêòðîííàé ïîøòû àäïðà¢ëÿåööà ë³ñò ç ïðîñüáàé ïàöâåðäç³öü ðýã³ñòðàöûþ. ˳ñò óòðûìë³âàå âûïàäêîâà ñòâîðàíóþ (áÿñïå÷íóþ) ñïàñûëêó íà ñòàðîíêó, äçå êàðûñòàëüí³ê ìîæà ïàöâåðäç³öü óë³êîâû çàï³ñ. Ó äàëåéøûì ïðû ¢âàõîäçå ¢ ñ³ñòýìó àäáûâàåööà çâåðêà ³ìÿ êàðûñòàëüí³êà ³ ïàðîëþ ç ³õ çíà÷ýííÿì³ ¢ áàçå äàäçåíûõ.'; +$string['auth_emaildescription'] = 'Ïàöâÿðäæýííå ç äàïàìîãàé ýëåêòðîííàé ïîøòû - âûêàðûñòàíû ïà-çìà¢÷àíí³ ìåòàä à¢òýíòûô³êàöû³. Ïðû ðýã³ñòðàöû³ êàðûñòàëüí³êà, ïðàç ïàêàçàíû àäðàñ ýëåêòðîííàé ïîøòû àäïðà¢ëÿåööà ë³ñò ç ïðîñüáàé ïàöâåðäç³öü ðýã³ñòðàöûþ. ˳ñò óòðûìë³âàå âûïàäêîâà ñòâîðàíóþ (áÿñïå÷íóþ) ñïàñûëêó íà ñòàðîíêó, äçå êàðûñòàëüí³ê ìîæà ïàöâåðäç³öü óë³êîâû çàï³ñ. Ó äàëåéøûì ïðû ¢âàõîäçå ¢ ñ³ñòýìó àäáûâàåööà çâåðêà ³ìÿ êàðûñòàëüí³êà ³ ïàðîëþ ç ³õ çíà÷ýííÿì³ ¢ áàçå äàäçåíûõ.'; $string['auth_emailtitle'] = 'E-mail - à¢òýíòûô³êàöûÿ'; -$string['auth_fccreators'] = 'Ñï³ñ ãðóïà¢, ñóïîëüí³êàì ÿê³õ äàçâàëÿåööà ñòâàðàöü íîâûÿ êóðñû. Íåêàëüê³ ãðóïࢠïàâ³ííû áûöü àääçåëÿíû àäíà àä àäíîé ç äàïàìîãàé \';\'. ²ìÿ ïàâ³ííà áûöü ïàçíà÷àíà äàêëàäíà (ç óë³êàì ðýã³ñòðà ë³òàð). ѳñòýìà àä÷óâàëüíà äà ðýã³ñòðó ë³òàð.'; -$string['auth_fcdescription'] = 'Ãýòû ìåòàä âûêàðûñòî¢âàå ñåðâåð FirstClass äëÿ ïðàâåðê³ íà ñàïðà¢äíàñöü ³ìÿ êàðûñòàëüí³êà ³ ïàðîëü.'; -$string['auth_fcfppport'] = 'Ïîðò ñåðâåðà (3333 - ¢ áîëüøàñö³ âûïàäêà¢)'; -$string['auth_fchost'] = 'Àäðàñ ñåðâåðà FirstClass. Âûêàðûñòî¢âàéöå IP-àäðàñ àëüáî äàìåííàå ³ìÿ.'; -$string['auth_fcpasswd'] = 'Ïàðîëü äëÿ ¢ë³êîâàãà çàï³ñó âûøýé.'; -$string['auth_fctitle'] = 'Âûêàðûñòàöü ñåðâåð FirstClass'; -$string['auth_fcuserid'] = 'Íóìàð êàðûñòàëüí³êà (ID) äëÿ ¢ë³êîâàãà çàï³ñó FirstClass ç ïðûâ³ëåÿì³ \'Subadministrator\'.'; $string['auth_imapdescription'] = 'Ãýòû ìåòàä âûêàðûñòîâàå IMAP-ñýðâåð äëÿ ïðàâåðê³ àäïàâåäíàñö³ ïàðû ëàã³í/ïàðîëü.'; $string['auth_imaphost'] = 'Àäðàñ IMAP-ñýðâåðà. Âûêàðûñòàéöå IP-àäðàñ, íå DNS-³ìÿ.'; $string['auth_imapport'] = 'Íóìàð ïîðòà äëÿ IMAP-ñýðâåðà. Çâû÷àéíà ¢ äûÿïàçîíå àä 143 äà 993.'; @@ -35,62 +24,45 @@ $string['auth_imaptitle'] = ' $string['auth_imaptype'] = 'Òûï ñýðâåðà IMAP. Ñýðâåðû IMAP ìîãóöü ìåöü ðîçíûÿ òûïû ³äýíòûô³êàöû³ ³ ïðàòàêîëà¢.'; $string['auth_ldap_bind_dn'] = 'Êàë³ Âû æàäàåöå çâÿçàíàãà êàðûñòàëüí³êà äëÿ ïîøóêó êàðûñòàëüí³êà¢, àçíà÷öå ãýòà òóò. Íàïðûêëàä, \'cn=ldapuser,ou=public,o=org\''; $string['auth_ldap_bind_pw'] = 'Ïàðîëü äëÿ çâÿçâàííÿ êàðûñòàëüí³êà.'; -$string['auth_ldap_bind_settings'] = 'Íàñòðîéê³ Bind'; $string['auth_ldap_contexts'] = 'Ñï³ñ êàíòýêñòà¢, äçå ðàçìåø÷àíûÿ êàðûñòàëüí³ê³ . Àääçåë³öå ðîçíûÿ êàíòýêñòû \';\'. Íàïðûêëàä: \'ou=users,o=org; ou=others,o=org\''; $string['auth_ldap_create_context'] = 'Êàë³ Âû äàçâîë³ë³ ñòâàðýííå êàðûñòàëüí³êࢠïðû ïàöâåðäæàíí³ ïðàç ïîøòó, âûçíà÷ûöå êàíòýêñò, ó ÿê³ áóäóöü çàâîäç³ööà êàðûñòàëüí³ê³. Ãýòû êàíòýêñò ïàâ³íåí àäðîçí³âàööà àä ³íøûõ, êàá ïðàäóõ³ë³öü ïðàáëåìû ç áÿñïåêàé. Íÿìà íåàáõîäíàñö³ äàäàâàöü, íàçâó êàíòýêñòó äà ldap_context-ïåðàìåííûì, ñ³ñòýìà áóäçå øóêàöü êàðûñòàëüí³êࢠàä ãýòàãà êàíòýêñòó à¢òàìàòû÷íà.'; $string['auth_ldap_creators'] = 'Ñï³ñ ãðóïà¢, ñÿáðàì ÿê³õ äàçâàëÿåööà ñòâàðàöü íîâûÿ êóðñû. Ñï³ñ ãðóïࢠïàäçÿëÿéöå ç äàïàìîãàé \';\'. Íàïðûêëàä,\'cn=teachers,ou=staff,o=myorg\''; -$string['auth_ldap_expiration_desc'] = 'Âûáÿðûöå Íå, êàá íå ïðàâîäç³öü ïðàâåðêó ïàðîëÿ íà ïðàòýðì³íàâàíû ¸í ö³ íå, àëüáî LDAP, êàá ïðàâÿðàöü ïðàòýðì³íàâàíû ïàðîëü ö³ íå íåïàñðýäíà ¢ LDAP'; -$string['auth_ldap_expiration_warning_desc'] = 'Êîëüêàñöü äç¸í, çà ÿê³ÿ ïàâ³íåí ïàðîëü áûöü çìåíåíû äà ñêàí÷ýííÿ òýðì³íó ñàïðà¢äíàñö³ ïàðîëÿ.'; $string['auth_ldap_host_url'] = 'Àçíà÷öå LDAP-õîñò ó âûãëÿäçå URL\'à, íàïðûêëàä \'ldap://ldap.myorg.com/\' àáî \'ldaps://ldap.myorg.com/\' '; -$string['auth_ldap_login_settings'] = 'Íàñòðîéê³ ¢ë³êîâàãà çàï³ñó'; $string['auth_ldap_memberattribute'] = 'Âûçíà÷ûöå êàðûñòàëüí³öê³ àòðûáóò, ÿê³ âûçíà÷àå ïðûíàëåæíàñöü êàðûñòàëüí³êà äà ãðóïû. Çâû÷àéíà \'óäçåëüí³ê\''; -$string['auth_ldap_passwdexpire_settings'] = 'Íàñòðîéê³ òýðì³íà äçåéíàñö³ ïàðîëÿ ¢ LDAP'; $string['auth_ldap_search_sub'] = 'Àçíà÷öå çíà÷ýíí³ <> 0 êàë³ Âàì ïàäàáàåööà øóêàöü êàðûñòàëüí³êࢠïà ñóáêàíòýêñòàì.'; -$string['auth_ldap_server_settings'] = 'Íàñòðîéê³ LDAP-ñåðâåðà'; $string['auth_ldap_update_userinfo'] = 'Àáíà¢ëÿéöå êàðûñòàëüí³öêóþ ³íôàðìàöûþ (²ìÿ, Ïðîçâ³ø÷à, àäðàñ ..) àä LDAP äà ñ³ñòýìû. Ãëÿäç³öå /auth/ldap/attr_mappings.php äëÿ òàãî, êàá àäëþñòðàâàöü ³íôàðìàöûþ.'; $string['auth_ldap_user_attribute'] = 'Àòðûáóò, âûêàðûñòàíû äëÿ ³ìÿ/ïîøóê. Çâû÷àéíà, \'cn\'.'; -$string['auth_ldap_user_settings'] = 'Ïðàãëÿä äàäçåíûõ êàðûñòàëüí³êà'; -$string['auth_ldap_user_type'] = 'Âûáðàöü, êàá êàðûñòàëüí³ê³ çàõî¢âàë³ñÿ ¢ LDAP. Ãýòûÿ íàñòðîéê³ òàêñàìà ïàçíà÷àþöü ÿê äàäçåíûÿ ïðàòýðì³íàâàíàãà ¢ë³êîâàãà çàï³ñó, ñòâàðýííÿ êàðûñòàëüí³êà áóäöü ïðàöàâàöü.'; $string['auth_ldap_version'] = 'Âåðñ³ÿ LDAP ïðàòàêîëó, ÿêóþ âûêàðûñòàå Âàøû ñýðâåð.'; $string['auth_ldapdescription'] = 'Ãýòû ìåòàä çàáÿñïå÷âàå à¢òýíòûô³êàöûþ ç äàïàìîãàé LDAP-ñýðâåðà. Êàë³ äàäçåíû ëàã³í ³ ïàðîëü ìàþöü ìîö, ñòâàðàåööà íîâû êàðûñòàëüí³öê³ ¢ë³êîâû çàï³ñ ó áàçå äàäçåíûõ ñ³ñòýìû. Ãýòû ìîäóëü ìîæà ÷ûòàöü ïàë³ àä LDAP-ñýðâåðà ³ çàïà¢íÿöü íåàáõîäíûÿ ïàë³ ¢ ñ³ñòýìå. Ó äàëåéøûì ïðàâÿðàþööà òîëüê³ ëàã³í ³ ïàðîëü'; -$string['auth_ldapextrafields'] = '

        Ãýòûÿ ïàë³ äàäàòêîâûÿ. Âû ìîæàöå âûá³ðàöü ïàïÿðýäíÿå çàïà¢íåííå íåêàòîðûõ ïà븢 êàðûñòàëüí³öê³õ äàäçåíûõ àä ïà븢 LDAP, ïàêàçàíàãà òóò.

        Íå çàïà¢íÿéöå ãýòàå ïîëå, äëÿ òàãî, êàá íå ïåðàíîñ³öü äàäçåíûÿ ç LDAP.

        Ó ëþáûì âûïàäêó, êàðûñòàëüí³ê çìîæà ðýäàãàâàöü óñå ïàë³ ïàñëÿ òàãî, ÿê ¸í çîéäçå ¢ ñ³ñòýìó.

        '; +$string['auth_ldapextrafields'] = 'Ãýòûÿ ïàë³ äàäàòêîâûÿ. Âû ìîæàöå âûá³ðàöü ïàïÿðýäíÿå çàïà¢íåííå íåêàòîðûõ ïà븢 êàðûñòàëüí³öê³õ äàäçåíûõ àä ïà븢 LDAP, ïàêàçàíàãà òóò.

        Íå çàïà¢íÿéöå ãýòàå ïîëå, äëÿ òàãî, êàá íå ïåðàíîñ³öü äàäçåíûÿ ç LDAP.

        Ó ëþáûì âûïàäêó, êàðûñòàëüí³ê çìîæà ðýäàãàâàöü óñå ïàë³ ïàñëÿ òàãî, ÿê ¸í çîéäçå ¢ ñ³ñòýìó.

        '; $string['auth_ldaptitle'] = 'Âûêàðûñòàöü LDAP-ñýðâåð'; $string['auth_manualdescription'] = 'Ãýòû ìåòàä âûäàëÿå ëþáû øëÿõ äëÿ êàðûñòàëüí³êà¢, äëÿ ñòâàðýííÿ ¢ëàñíûõ óë³êîâûõ çàï³ñà¢. Óñå ¢ë³êîâûÿ çàï³ñû ïàâ³ííû áûöü óðó÷íóþ ñòâîðàíûÿ êàðûñòàëüí³êàì àäì³í³ñòðàöû³.'; $string['auth_manualtitle'] = 'Òîëüê³ ¢ ðó÷íóþ çàâåäçåíûÿ ¢ë³êîâûÿ çàï³ñû.'; -$string['auth_multiplehosts'] = 'Ó âûïàäêó íåêàëüê³õ õàñòî¢ ÿíû ïàâ³ííû áûöü ïàêàçàíûÿ íàñòóïíûì ÷ûíàì: host1.com;host2.com;host3.com'; +$string['auth_multiplehosts'] = 'Ó âûïàäêó íåêàëüê³õ õàñòî¢ ÿíû ïàâ³ííû áûöü ïàêàçàíûÿ íàñòóïíûì ÷ûíàì: host1.com;host2.com;host3.com +'; $string['auth_nntpdescription'] = 'Ãýòû ìåòàä âûêàðûñòî¢âàå NNTP-ñýðâåð äëÿ âûçíà÷ýííÿ àäïàâåäíàñö³ ëàã³íà ³ ïàðîëÿ.'; $string['auth_nntphost'] = 'Àäðàñ NNTP-ñýðâåðà. Âûêàðûñòàéöå IP-àäðàñ, íå DNS-³ìÿ.'; $string['auth_nntpport'] = 'Íóìàð ïîðòó ñýðâåðà (çâû÷àéíà, 119)'; $string['auth_nntptitle'] = 'Âûêàðûñòàöü NNTP-ñýðâåð'; $string['auth_nonedescription'] = 'Êàðûñòàëüí³ê³ ìîãóöü ðýã³ñòðàâàööà ³ ñòâàðàöü óë³êîâûÿ çàï³ñû íåàäêëàäíà, áåç ³äýíòûô³êàöû³ ñà çíåøíÿãà ñýðâåðà ³ ïàöâÿðäæýííÿ¢ ïðàç ýëåêòðîííóþ ïîøòó. Áóäçüöå ¢âàæë³âûì âûêàðûñòî¢âàþ÷û ãýòóþ îïöûþ - ïàäóìàéöå àá àáàðîíå ³ ïðàáëåìàõ àäì³í³ñòðàâàííÿ, ÿê³ÿ ìîãóöü ïà¢ñòàöü.'; $string['auth_nonetitle'] = 'Íå âûêàðûñòî¢âàöü à¢òýíòûô³êàöûþ'; -$string['auth_passwordisexpired'] = 'Âàø ïàðîëü ïðàòýðì³íàâàíû. Ö³ æàäàåöå çìÿí³öü ïàðîëü çàðàç?'; -$string['auth_passwordwillexpire'] = 'Âàø ïàðîëü áóäçå íåäçåéñíû ïðàç $a äç¸í. Ö³ æàäàåöå çìÿí³öü ïàðîëü çàðàç?'; $string['auth_pop3description'] = 'Ãýòû ìåòàä âûêàðûñòî¢âàå POP3-ñýðâåð äëÿ âûçíà÷ýííÿ àäïàâåäíàñö³ ³ ïðàâ³ëüíàñö³ ïàðû ëàã³í/ïàðîëü.'; $string['auth_pop3host'] = 'Àäðàñ POP3-ñýðâåðà. Âûêàðûñòàéöå IP-àäðàñ, íå DNS-³ìÿ.'; $string['auth_pop3port'] = 'Íóìàð ïîðòó ñýðâåðà (çâû÷àéíà, 110)'; $string['auth_pop3title'] = 'Âûêàðûñòàöü POP3-ñýðâåð'; $string['auth_pop3type'] = 'Òûï ñýðâåðó. Êàë³ Âàø ñýðâåð âûêàðûñòàå àáàðîíó çàñíàâàíóþ íà ñåðòûô³êàòàõ, âûêàðûñòàéöå pop3cert.'; -$string['auth_updatelocal'] = 'Àäíàâ³öü ëàêàëüíûÿ äàäçåíûÿ'; -$string['auth_updateremote'] = 'Àäíàâ³öü çíåøí³ÿ äàäçåíûÿ'; $string['auth_user_create'] = 'Äàçâîë³öü ñòâàðýííå êàðûñòàëüí³êà¢'; $string['auth_user_creation'] = 'Íîâûÿ (àíàí³ìíûÿ) êàðûñòàëüí³ê³ ìîãóöü ñòâàðàöü óë³êîâûÿ çàï³ñû íà çíåøíÿé êðûí³öû à¢òýíòûô³êàöû³ ³ ïàöâÿðäæàöü ïðàç ýëåêòðîííóþ ïîøòó. Êàë³ Âû äàçâîë³öå ãýòà, íå çàáóäçüöå òàêñàìà ñêàíô³ãóðàâàöü âûçíà÷àíûÿ ìîäóëåì îïöû³ äëÿ ñòâàðýííÿ êàðûñòàëüí³êà.'; $string['auth_usernameexists'] = 'Âûáðàíû ëàã³í óæî ³ñíóå. Âûáåðûöå ³íøû.'; $string['authenticationoptions'] = 'Íàñòðîéêà à¢òýíòûô³êàöû³'; -$string['authinstructions'] = 'Òóò Âû ìîæàöå íàï³ñàöü ³íñòðóêöû³ äëÿ Âàøûõ êàðûñòàëüí³êà¢, äëÿ òàãî, êàá ÿíû âåäàë³, ÿê³ ëàã³í ³ ïàðîëü ÿíû ïàâ³ííû âûêàðûñòàöü. Òýêñò, ÿê³ Âû ¢âîäç³öå, òóò - ç\'ÿâ³ööà íà ñòàðîíöû ¢âàõîäó ¢ ñ³ñòýìó. Êàë³ Âû ïàê³íåöå ïîëå ïóñòûì, í³ÿê³õ ³íñòðóêöûé äðóêàâàööà íå áóäçå.'; +$string['authinstructions'] = 'Òóò Âû ìîæàöå íàï³ñàöü ³íñòðóêöû³ äëÿ Âàøûõ êàðûñòàëüí³êà¢, äëÿ òàãî, êàá ÿíû âåäàë³, ÿê³ ëàã³í ³ ïàðîëü ÿíû ïàâ³ííû âûêàðûñòàöü. Òýêñò, ÿê³ Âû ¢âîäç³öå, òóò - ç'ÿâ³ööà íà ñòàðîíöû ¢âàõîäó ¢ ñ³ñòýìó. Êàë³ Âû ïàê³íåöå ïîëå ïóñòûì, í³ÿê³õ ³íñòðóêöûé äðóêàâàööà íå áóäçå.'; $string['changepassword'] = 'Çìÿí³öü URL ç ïàðîëåì'; $string['changepasswordhelp'] = 'Òóò Âû ìîæàöå âûçíà÷ûöü ñïîñàá, ÿê³ì êàðûñòàëüí³ê³ ìîãóöü âÿðíóöü àáî çìÿí³öü ³õ ëàã³í/ïàðîëü, êàë³ ÿíû çàáûë³ ÿãî. Êàðûñòàëüí³ê³ ¢áà÷àöü êíîïêó íà ñòàðîíöû ¢âàõîäó ¢ ñ³ñòýìó ³ ³õ êàðûñòàëüí³öêàé ñòàðîíöû. Êàë³ Âû íå çàïî¢í³öå ïîëå, êíîïêà âûâîäç³ööà íå áóäçå.'; $string['chooseauthmethod'] = 'Âûáåðûöå ìåòàä à¢òýíòûô³êàöû³: '; -$string['forcechangepassword'] = 'Ïðûìóñîâà çìÿí³öü ïàðîëü'; -$string['forcechangepassword_help'] = 'Ïðûìóñ³ü êàðûñòàëüí³êࢠçìÿí³öü ïàðîëü ïðû íàñòóïíûì óâàõîäçå ¢ Moodle.'; -$string['forcechangepasswordfirst_help'] = 'Ïðûìóñ³ü êàðûñòàëüí³êࢠçìÿí³öü ïàðîëü ïðû ïåðøûì óâàõîäçå ¢ Moodle.'; $string['guestloginbutton'] = 'Êíîïêà ãàñöÿâîãà ¢âàõîäó'; $string['instructions'] = '²íñòðóêöû³'; $string['md5'] = 'MD5-øûôðàâàííå'; $string['plaintext'] = 'Òýêñò'; $string['showguestlogin'] = 'Âû ìîæàöå âûáðàöü: ïàêàçâàöü àáî íå êíîïêó ãàñöÿâîãà äîñòóïó ¢ ñ³ñòýìó.'; -$string['stdchangepassword'] = 'Âûêàðûñòàöü ñòàíäàðòíóþ ñòàðîíêó çìÿíåííÿ ïàðîëÿ'; -$string['stdchangepassword_expl'] = 'Êàë³ çíåøíÿÿ ñ³ñòýìà à¢òàðûçàöû³ äàçâàëÿå çìÿíÿöü ïàðîëü ïðàç Moodle, ïàçíà÷öå Òàê. Ãýòû ïàðàìåòð àäêëþ÷àå \'Change Password URL\''; -$string['stdchangepassword_explldap'] = 'Çà¢âàãà: Ãýòû ïàðàìåòð ðýêàìåíäóåööà, êàë³ Âû âûêàðûñòî¢âàåöå ïàäêëþ÷ýííå äà LDAP ïðàç SSL (ïðàòàêîë ldaps://) ³ ïðû ¢ìîâå, øòî LDAP-ñåðâåð çíåøí³.'; -?> +?> \ No newline at end of file diff --git a/lang/be/block_course_summary.php b/lang/be/block_course_summary.php index 4ebbb22bffc..1ad6f948ec7 100644 --- a/lang/be/block_course_summary.php +++ b/lang/be/block_course_summary.php @@ -1,8 +1,8 @@ diff --git a/lang/be/block_html.php b/lang/be/block_html.php deleted file mode 100644 index 3c9e35e33cd..00000000000 --- a/lang/be/block_html.php +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/lang/be/block_online_users.php b/lang/be/block_online_users.php index 505adb4e458..9c152efefd3 100644 --- a/lang/be/block_online_users.php +++ b/lang/be/block_online_users.php @@ -1,9 +1,9 @@ diff --git a/lang/be/block_quiz_results.php b/lang/be/block_quiz_results.php deleted file mode 100644 index 9b475a1e976..00000000000 --- a/lang/be/block_quiz_results.php +++ /dev/null @@ -1,28 +0,0 @@ - diff --git a/lang/be/block_rss_client.php b/lang/be/block_rss_client.php index 50f0768befb..e69de29bb2d 100644 --- a/lang/be/block_rss_client.php +++ b/lang/be/block_rss_client.php @@ -1,39 +0,0 @@ - diff --git a/lang/be/calendar.php b/lang/be/calendar.php index 5d42dd3e09d..d7272fec857 100644 --- a/lang/be/calendar.php +++ b/lang/be/calendar.php @@ -1,5 +1,5 @@ activate_index $a->activate_weekday êîæíàãà $a->activate_month, ïåðàíåñö³ ÷àñ $a->offset õâ³ë³í $a->direction. Ãýòûÿ çìÿíåíí³ ³ñíóþöü äà $a->deactivate_index $a->deactivate_weekday $a->deactivate_month. '; -$string['dstof'] = 'ç'; -$string['dstonthe'] = 'Íà'; -$string['dstpresetactivated'] = 'Àêòûâàöûÿ'; -$string['dstpresetadjusttime'] = 'Ðýäàãàâàííå ÷àñó'; -$string['dstpresetdeactivated'] = 'Äýàêòûâàöûÿ'; -$string['dstpresetname'] = 'Íàçâà íàñòðîåê'; $string['durationminutes'] = 'Íà ïðàöÿãó õâ³ë³íà¢'; $string['durationnone'] = 'Áåç ïðàöÿãëàñö³'; $string['durationuntil'] = 'Äà'; @@ -51,15 +39,11 @@ $string['eventstarttime'] = ' $string['eventtime'] = '×àñ'; $string['eventview'] = 'Ïàäðàáÿçíàñö³ Ïàäçå³'; $string['expired'] = 'Ñêîí÷û¢ñÿ'; -$string['explain_dstpreset'] = 'Âû ìîæàöå àáðàöü ðý㳸í êàá âûêàðûñòî¢âàöü íàñòðî¢ê³ ëåòíÿãà/ç³ìîâàãà ÷àñó ¢ âûïàäàþ÷ûì ìåíþ.'; -$string['explain_dstpresetforced'] = 'Àäì³í³ñòðàòàð ñàéòó íå äàçâàëÿå êàðûñòàëüí³êàì çìÿíÿöü ãýòûÿ ïàðàìåòðû.'; $string['explain_lookahead'] = 'Ãýòàÿ íàñòðîéêà ¢ñòà븢âàå ìàêñ³ìàëüíóþ êîëüêàñöü äç¸í ó áóäó÷ûí³, íà ïðàöÿãó ÿê³õ óñå ïàäçå³ ¢ ïàðàäêó ³õ íàäûõîäó áóäóöü àäëþñòðî¢âàööà. Ïàäçå³, ÿê³ÿ ðàñïà÷íóööà ïà-çà ìåæàì³ äàäçåíàãà ïåðûÿäó í³êîë³ íÿ áóäóöü ïàêàçàíûÿ. Ïðû ãýòûì òðýáà ¢ë³÷âàöü, øòî ãýòà íå ãàðàíòóå òàãî, øòî ¢ñå ïàäçå³ ðàñïà÷àòûÿ ¢ ãýòû ïåðûÿä áóäóöü ïàêàçàíûÿ, êàë³ ³õ áóäçå çàøìàò (áîëüø ÷ûì \"Ìàêñ³ìóì ìàã÷ûìûõ ïàäçåÿ¢\"), òàäû ÿíû íÿ áóäóöü ïàêàçâàööà.'; -$string['explain_maxevents'] = 'Ãýòà íàñòðîéêà âûçíà÷àå ìàêñ³ìàëüíóþ êîëüêàñöü ïàäçåÿ¢, øòî íàñòóï³ë³ ³ ÿê³ÿ òðýáà ïàêàçàöü. Êàë³ Âû âûáåðûöå áîëüøóþ êîëüêàñöü, òàäû ìàã÷ûìà, øòî ïàêàçû ïàäçåÿ¢ áóäóöü çàéìàöü øìàò ìåñöà íà Âàøûì ýêðàíå.'; -$string['explain_persistflt'] = 'Êàë³ íåàáõîäíà, òî Moodle áóäçå çàïàì³íàöü âàøûÿ àïîøí³ÿ íàñòðîéê³ ô³ëüòðó äçåÿííÿ¢ ³ à¢òàìàòû÷íà àäíà¢ëÿöü ³õ êîæíû ðàç ïàñëÿ ¢âàõîäó.'; +$string['explain_maxevents'] = 'Ãýòà íàñòðîéêà âûçíà÷àå ìàêñ³ìàëüíóþ êîëüêàñöü ïàäçåÿ¢, øòî íàñòóï³ë³ ³ ÿê³ÿ òðýáà ïàêàçàöü. Êàë³ Âû âûáåðûöå áîëüøóþ êîëüêàñöü, òàäû ìàã÷ûìà, øòî ïàêàçû ïàäçåÿ¢ áóäóöü çàéìàöü øìàò ìåñöà íà Âàøûì ýêðàíå.'; $string['explain_startwday'] = 'Òûäí³ êàëåíäàðà áóäóöü ïàêàçàíûÿ ç òàê³ì ïåðøûì äí¸ì, ÿê³ Âû âûáåðûöå òóò.'; $string['explain_timeformat'] = 'Âû ìîæàöå âûáðàöü ó ÿê³ì ôàðìàöå ïàêàçâàöü ÷àñ - ó 12-ö³ ãàäç³ííûì àáî 24-îõ ãàäç³ííûì. Êàë³ Âû âûáåðûöå íàñòðîéêó \"ïà çìà¢÷àíí³\", òî ãýòû ôàðìàò à¢òàìàòû÷íà âûá³ðàåööà ¢ çàëåæíàñö³ àä ìîâû, ÿêàÿ âûáðàíàÿ íà Âàøûì ñàéöå.'; $string['february'] = 'Ëþòû'; -$string['first'] = 'ïåðøû'; $string['fri'] = 'Ïòí'; $string['friday'] = 'Ïÿòí³öà'; $string['globalevents'] = 'Àãóëüíûÿ ïàäçå³'; @@ -69,7 +53,6 @@ $string['hidden'] = ' $string['january'] = 'Ñòóäçåíü'; $string['july'] = '˳ïåíü'; $string['june'] = '×ýðâåíü'; -$string['last'] = 'àïîøí³'; $string['manyevents'] = '$a ïàäçåÿ¢'; $string['march'] = 'Ñàêàâ³ê'; $string['may'] = 'Òðàâåíü'; @@ -77,16 +60,12 @@ $string['mon'] = ' $string['monday'] = 'Ïàíÿäçåëàê'; $string['monthlyview'] = 'Àãëÿä çà ìåñÿö'; $string['newevent'] = 'Íîâàÿ ïàäçåÿ'; -$string['notusingdst'] = 'Íå âûêàðûñòî¢âàöü ïåðàõîä íà ëåòí³/ç³ìîâû ÷àñ'; -$string['noupcomingevents'] = 'Íå ìàåööà í³ÿê³õ íàñòóïàþ÷ûõ ïàäçåÿ¢'; +$string['noupcomingevents'] = 'Íå ìàåööà í³ÿê³õ íîâûõ ïàäçåÿ¢'; $string['november'] = '˳ñòàïàä'; -$string['nth'] = '{$a}'; $string['october'] = 'Êàñòðû÷í³ê'; $string['oneevent'] = '1 ïàäçåÿ'; -$string['pref_dstpreset'] = 'Ëåòí³/ç³ìîâû ÷àñ'; -$string['pref_lookahead'] = 'Ïðàãíîç íàñòóïàþ÷ûõ ïàäçåÿ¢'; -$string['pref_maxevents'] = 'Ìàêñ³ìóì íàñòóïàþ÷ûõ ïàäçåÿ¢'; -$string['pref_persistflt'] = 'Çàõàâàöü ïàðàìåòðû ô³ëüòðó'; +$string['pref_lookahead'] = 'Ïðàãíîç íîâûõ ïàäçåÿ¢'; +$string['pref_maxevents'] = 'Ìàêñ³ìóì íîâûõ ïàäçåÿ¢'; $string['pref_startwday'] = 'Ïåðøû äçåíü òûäíÿ'; $string['pref_timeformat'] = 'Ôàðìàò ïàêàçó ÷àñó'; $string['preferences'] = 'Ïåðàâàã³'; @@ -105,8 +84,6 @@ $string['thu'] = ' $string['thursday'] = '×àöâåð'; $string['timeformat_12'] = '12 ãàäç³ííû'; $string['timeformat_24'] = '24 ãàäç³ííû'; -$string['timeforward'] = 'íàïåðàä'; -$string['timerewind'] = 'íàçàä'; $string['today'] = 'Ѹííÿ'; $string['tomorrow'] = 'Çà¢òðà'; $string['tt_deleteevent'] = 'Âûäàë³öü ïàäçåþ'; diff --git a/lang/be/censor.php b/lang/be/censor.php index a60b5892e1c..10134c8d96b 100644 --- a/lang/be/censor.php +++ b/lang/be/censor.php @@ -1,7 +1,7 @@ diff --git a/lang/be/chat.php b/lang/be/chat.php index 4dae385a044..fd92a4c4e7a 100644 --- a/lang/be/chat.php +++ b/lang/be/chat.php @@ -1,20 +1,16 @@ í³êîë³ íå ïàçíà÷àéöå ÿå í³æýé ÷ûì 2 * chat_refresh_room.'; +$string['configoldping'] = 'Ïàñëÿ òàãî ÿê äî¢ã³ ÷àñ íå ÷óâàöü êàðûñòàëüí³êà, ìû ë³÷ûì øòî ¸í íàñ ïàê³íó¢?'; $string['configrefreshroom'] = 'ßê ÷àñòà ÷àò òóò ïàâ³íåí àáíà¢ëÿööà? (ó ñåêóíäàõ). Ìàëîå çíà÷ýííå - ñòâàðàå ³ëþç³þ áûñòðûí³, àëå ìîöíà çàãðóæàå âýá-ñýðâåð êàë³ øìàò ëþäçåé íàõîäçÿööà ¢ ÷àò-ðýæûìå.'; $string['configrefreshuserlist'] = 'ßê ÷àñòà ïàâ³íåí àáíà¢ëÿööà ñï³ñ êàðûñòàëüí³êà¢? (ó ñåêóíäàõ). '; -$string['configserverhost'] = 'Äàìåííàÿ ³ìÿ êàìï\'þòàðà, íà ÿê³ì ïðàöóå äýìàí ñåðâåðà'; -$string['configserverip'] = '˳÷áàâû IP-àäðàñ, ÿê³ àäïàâÿäàå äàìåííàìó ³ìåí³ êàìï\'þòàðà'; $string['configservermax'] = 'Ìàêñ³ìàëüíû äàçâîëåíàÿ êîëüêàñöü êë³åíòà¢'; -$string['configserverport'] = 'Íóìàð ïàðòà äëÿ âûêàðûñòàííÿ äýìàíàì ñåðâåðà'; $string['currentchats'] = 'ßê³ÿ ïðàöóþöü íà äàäçåíû ìîìàíò ÷àòû'; $string['currentusers'] = 'Áÿãó÷ûÿ êàðûñòàëüí³ê³'; $string['deletesession'] = 'Âûäàë³öü ãýòóþ ñåñ³þ'; @@ -22,9 +18,6 @@ $string['deletesessionsure'] = ' $string['donotusechattime'] = 'Íå ïàêàçâàöü ÷àñ ïðàöû ÷àòó'; $string['enterchat'] = 'Óâàéñö³ ¢ ÷àò'; $string['errornousers'] = 'Íÿìà í³âîäíàãà êàðûñòàëüí³êà!'; -$string['explaingeneralconfig'] = 'Ãýòûÿ íàñòðîéê³ çà¢ñ¸äû ¢ñòóïàþöü ó ñ³ëó'; -$string['explainmethoddaemon'] = 'Ãýòûÿ íàñòðîéê³ ìàþöü çíà÷ýííå òîëüê³, êàë³ Âû ¢ ÿêàñö³ ìåòàäà ÷àòà âûáðàë³ äýìàí ÷àò-ñýðâåðà'; -$string['explainmethodnormal'] = 'Ãýòûÿ íàñòðîéê³ ìàþöü çíà÷ýííå òîëüê³, êàë³ Âû ¢ ÿêàñö³ ìåòàäà ÷àòà âûáðàë³ çâû÷àéíû ìåòàä'; $string['generalconfig'] = 'Àñíî¢íàÿ êàíô³ãóðàöûÿ'; $string['helpchatting'] = 'Äàïàìîãà ïà çíîñ³íàõ ó ÷àöå'; $string['idle'] = 'Ôîíàì'; @@ -52,4 +45,4 @@ $string['strftimemessage'] = '%%H:%%M'; $string['studentseereports'] = 'Óñå ìîãóöü ïàãëÿäçåöü ñåñ³³'; $string['viewreport'] = 'Ïàãëÿäçåöü ì³íóëûÿ ÷àò-ñåñ³³'; -?> +?> \ No newline at end of file diff --git a/lang/be/choice.php b/lang/be/choice.php index 41f4f25a22a..f6d31f17d4c 100644 --- a/lang/be/choice.php +++ b/lang/be/choice.php @@ -1,5 +1,5 @@ +?> \ No newline at end of file diff --git a/lang/be/countries.php b/lang/be/countries.php index 00a7c75806e..d2a8380f1bc 100644 --- a/lang/be/countries.php +++ b/lang/be/countries.php @@ -4,9 +4,9 @@ $string['AD'] = 'Àíäîðà'; $string['AE'] = 'Àá\'ÿäíàíûÿ Àðàáñê³ÿ Ýì³ðàòû'; -$string['AF'] = 'Àôãàí³ñòàí'; -$string['AG'] = 'Àíòûãóà ³ Áàðáóä'; -$string['AI'] = 'Àíãó³ëà'; +$string['AF'] = ' Àôãàí³ñòàí'; +$string['AG'] = 'Àíòûãóà ³ Áàðáóä '; +$string['AI'] = 'Àíãó³ëà '; $string['AL'] = 'Àëáàí³ÿ'; $string['AM'] = 'Àðìåí³ÿ'; $string['AN'] = 'Ãàëàíäñê³ÿ àñòðàâû'; diff --git a/lang/be/dialogue.php b/lang/be/dialogue.php index 1d50cceddaf..84be682c82a 100644 --- a/lang/be/dialogue.php +++ b/lang/be/dialogue.php @@ -1,5 +1,5 @@
        Âû ¢ïý¢íåíûÿ, øòî Âû æàäàåöå çàêðûööÿ ãýòàãà äûÿëîãó?'; $string['deleteafter'] = 'Âûäàë³öü çàêðûòûÿ Äûÿëîã³ ïàñëÿ (äí.)'; $string['dialogueclosed'] = 'Äûÿëîã çàêðûòû'; @@ -24,7 +24,6 @@ $string['everybody'] = ' $string['furtherinformation'] = 'Äàëåéøàÿ ²íôàðìàöûÿ'; $string['lastentry'] = 'Àïîøí³ ¡âàõîä'; $string['maildefault'] = 'Mail ïà-çìà¢÷àíí³'; -$string['mailnotification'] = 'Ïàâåäàìëåííå ïà ýëåêòðîííàé ïîøöå'; $string['modulename'] = 'Äûÿëîã'; $string['modulenameplural'] = 'Äûÿëîã³'; $string['namehascloseddialogue'] = '$a çàêðû¢ äûÿëîã'; @@ -65,4 +64,4 @@ $string['typeofdialogue'] = ' $string['typereply'] = 'Óâÿäç³öå àäêàç òóò'; $string['viewallentries'] = 'Ïðàãëÿä $a äûÿëîãàâûõ çàï³ñà¢'; -?> +?> \ No newline at end of file diff --git a/lang/be/docs/background.html b/lang/be/docs/background.html index c63cbb1423d..1b9c1759706 100644 --- a/lang/be/docs/background.html +++ b/lang/be/docs/background.html @@ -1,41 +1,40 @@ - - + + - Moodle Docs: Background - - + Dokumentacja Moodle: Informacje Dodatkowe + + - + -

        Äàäàòêîâàÿ ³íôàðìàöûÿ

        +

        Informacje dodatkowe

        -

        Ïëàòôîðìà Moodle ãýòà ïðàäóêò, ÿê³ ¢âåñü ÷àñ ðàçâ³âàåööà. Ïðàöà íàä óäàñêàíàëåííåì Moodle áûë³ ïà÷àòû Martin'a Dougiamas'a, ÿê³ ³ íàäàëåé óçíà÷àëüâàå ¢âåñü ïðàåêò :

        +

        Platforma Moodle jest produktem poddawanym ci±g³ej pracy rozwojowej. Prace nad Moodle zosta³y rozpoczête przez Martin'a Dougiamas'a, który nadal przewodzi ca³emu projektowi :

        -

        Ïðàöóþ ç Moodle, ðîçíûì³ ìåòàäàì³ ¢æî íåêàëüê³ ãàäî¢. Ãýòà ïðàöà ïà÷àëàñÿ ¢ 90-òûõ êàë³ ÿ âûêîíâࢠôóíêöûþ âýáìàéñòðà ¢ Curtin University of Technology ³ àäíà÷àñîâà àäì³í³ñòðàòàðà ³õíÿé ñ³ñòýìû WebCT. ß ñóñòðý¢ øìàò çàõàïëÿþ÷ûõ ïðàáëåìࢠçâÿçàíûõ ç ãýòàé ñ³ñòýìàé ³ íå ìîã ñóïàêî³ööà – ïàâ³ííà áûëî ³ñíàâàöü ëåïøàå ðàøýííå (³ çóñ³ì íå ìàþ íà ¢âàçå ñ³ñòýìû Blàckboàrd :-)

        +

        Pracujê nad Moodle, na ró¿ne sposoby, od kilku lat. Zaczê³o siê to w latach 90-tych gdy pe³ni³em funkcjê webmastera w Curtin University of Technology oraz administratora ich systemu WebCT. Natrafi³em na wiele frustruj±cych problemów zwi±zanych z tym systemem i nie mog³em usiedzieæ spokojnie - musia³o istnieæ lepsze rozwi±zanie (i nie mam wcale na my¶li systemu Blackboard :-)

        -

        Âåäàþ òàêñàìà øìàò ëþäçåé, ÿê³ÿ ïðàöóþöü ó øêîëàõ ³ íåâÿë³ê³õ óñòàíîâàõ (à òàêñàìà ¢ íåêàëüê³õ âÿë³ê³õ!), ÿê³ÿ áû õàöåë³ áîëüø ýôåêòû¢íà âûêàðûñòî¢âàöü ³íòýðíýò, àëå íå âåäàþöü, ÿê ãýòà çðàá³öü ó ëàá³ðûíöå äàñòóïíûõ òýõíàëîã³é ³ ïåäàãàã³÷íûõ ìåòàäà¢. ß çà¢ñ¸äû ñïàäçÿâà¢ñÿ, øòî ç’ÿâ³ööà äàðìàâàÿ ³í³öûÿòûâà, ÿêàÿ äàñöü ãýòûì ëþäçÿì ìàã÷ûìàñöü ïåðàíåñö³ ñâàå ïåäàãàã³÷íûÿ ¢ìåíí³ ¢ àñÿðîääçå on-l³ne.

        +

        Znam równie¿ wiele osób pracuj±cych w szko³ach i niewielkich instytucjach (oraz w paru wielkich!), które chc± efektywniej wykorzystywaæ internet, ale nie wiedz± jak do tego podej¶æ w labiryncie dostêpnych technologii i metod pedagogicznych. Zawsze mia³em nadziejê, ¿e pojawi siê darmowa alternatywa, która umo¿liwi tym osobom przenie¶æ swoje umiejêtno¶ci pedagogicznych na ¶rodowisko on-line.

        -

        Ìàÿ ìîöíàÿ âåðà ó íå ðýàë³çàâàíûÿ ìàã÷ûìàñö³, ÿê³ÿ äàå íàâó÷àííå ïðàç ³íòýðíýò çìóñ³ëà ìÿíå ñêîí÷ûöü ìàã³ñòðàòóðó ³ àáàðàí³öü äûñåðòàöûþ ¢ ãàë³íå àäóêàöû³. Ñïàëó÷û¢øû òàê³ì ÷ûíàì íàáûòûÿ ðàíåé âåäû ¢ ³íôàðìàòûöû ç íîâàíàáûòûì³ ïðà ïðàöýñû íàâó÷àííÿ ÿ ïðûñòóï³¢ äà ñóïðàöî¢í³öòâà.

        -

        Äëÿ ìÿíå âåëüì³ ³ñòîòíà, êàá ïðàãðàìàâàííå áûëî íåñêëàäàíûì äëÿ êàðûñòàëüí³êà. Ó ÿíî ïàâ³ííà áûöü íàñòîëüê³ ³íòó³òû¢íûì, ÿê ãýòà òîëüê³ ìàã÷ûìà.

        -

        ß âåëüì³ çàõîïëåíû ñâà¸é ïðàöàé íàä Moodle, à òàêñàìà òûì, øòî Moodle àäêðûòû ³ äàðìàâû. Ìîöíà âåðó ¢ ïåðàâàãó àäêðûòàãà íàâó÷àííÿ ³ äàïàìîæíàãà íàâó÷àííÿ, à Moodle ãýòà àñíî¢íû ñïîñàá, ç äàïàìîãàé ÿêîãà ÿ ìàãó ðýàë³çàâàöü ñâàå ³äý³.

        +

        Moja silna wiara w niezrealizowane mo¿liwo¶ci, które niesie nauczanie poprzez internet sk³oni³a mnie do ukoñczenia studiów magisterskich oraz obronienia doktoratu w dziedzinie edukacji. Po³±czy³em w ten sposób moj± wcze¶niejsz± karierê informatyka z nowo pozyskan± wiedz± o procesach uczenia siê i wspó³pracy.

        +

        Bardzo istotne jest dla mnie, by oprogramowanie by³o ³atwe w obs³udze. W zasadzie to powinno byæ tak intuicyjne jak to tylko mo¿liwe.

        +

        Jestem przywi±zany do mojej pracy nad Moodle, oraz to tego, ¿e Moodle jest otwarte i darmowe. Silnie wierzê w wagê nieograniczonej edukacji i wspomaganego nauczania, a Moodle jest g³ównym sposobem, w jaki mogê siê przyczyniæ do realizacji tych idea³ów.

        -

        Àä ïà÷àòêó ïðàöû ¢æî ¢çí³êëà íåêàëüê³ âåëüì³ ðîçíûõ ïðàòàòûïࢠïëàòôîðìû Moodle, ³ íàðýøöå 20 æí³¢íÿ 2002 ãîäà áûëà ïðàäñòà¢ëåíà ñâåòó, ÿê³ íå ÷àêࢠí³÷îãà ïàäîáíàãà, âåðñ³ÿ 1.0. Ãýòà âåðñ³ÿ ïðûçíà÷àåööà äëÿ íåâÿë³ê³õ, áîëüø êàìåðíûõ çàíÿòêࢠíà ¢í³âåðñ³òýöê³ì óçðî¢í³ ³ áûëà ïðàäìåòàì äàñëåäàâàííÿ¢ ïðûðîäû ñóïðàöî¢í³öòâà ³ ðýôëåêñ³³, ÿê³ÿ ç’ÿâ³ë³ñÿ ¢ ãýòûõ íåâÿë³ê³õ ãðóïàõ äàðîñëûõ êàðûñòàëüí³êà¢.

        +

        Od tamtego czasu powsta³o kilka bardzo ró¿nych prototypów platformy Moodle a¿ wreszcie dnia 20 sierpnia 2002 roku przedstawiona zosta³a niespodziewaj±cemu siê niczego ¶wiatu wersja 1.0. Ta wersja by³a przeznaczona dla mniejszych, bardziej kameralnych zajêæ na poziomie uniwersyteckim i by³a przedmiotem badañ które analizowa³y naturê wspó³pracy i refleksji które pojawia³y siê w tych niewielkich grupkach doros³ych u¿ytkowników.

        -

        Ç òàãî ÷àñó ïà ÷àðçå ç'ÿ¢ëÿë³ñÿ íîâûÿ, óäàñêàíàëåíûÿ âûäàíí³, ëåïø ç³íòýãðàâàíûÿ, à òàêñàìà ç íîâûì³ ìàã÷ûìàñöÿì³.

        +

        Od tamtego czasu kolejno ukazywa³y siê nowe, udoskonalone wydania, lepiej zintegrowane, oraz zawieraj±ce nowe mo¿liwo¶ci

        -

        Ïàêîëüê³ ïëàòôîðìà Moodle ðàñïà¢ñþäç³ëàñÿ, à êîëüêàñöü ÿå êàðûñòàëüí³êࢠâûðàñëà, ðîá³ööà øòîðàç áîëüøû, óí¸ñàê ç áîêó ðîçíûõ ëþäçåé ó ðîçíûõ àäóêàöûéíûõ àáñòàâ³íàõ. Íàïðûêëàä, ïëàòôîðìà Moodle óæûâàåööà ¢æî íå òîëüê³ âà ¢í³âåðñ³òýòàõ, àëå òàêñàìà ¢ ñÿðýäí³õ ³ áàçàâûõ øêîëàõ, ó íåêàìåðöûéíûõ àðãàí³çàöûÿõ, ó ïðûâàòíûõ ô³ðìàõ, íåçàëåæíûì³ íàñòà¢í³êàì³, à íàâàò áàöüêàì³, ÿê³ÿ ñàìàñòîéíà ³ìêíóööà äàöü àäóêàöûþ ñâà³ì äçåöÿì. Ìíîãà ëþäçåé âà ¢ñ³ì ñâåöå ¢íåñëà ñâîé óêëàä ó ðàçâ³öö¸ ïëàòôîðìû Moodle. Äàâåäàåøñÿ ïðà ãýòà áîëüø ó ñåêöû³ ïàäçÿê. +

        Jako ¿e platforma Moodle siê rozprzestrzeni³a a liczba jej u¿ytkowników wzros³a, istnieje coraz wiêkszy wk³ad ze strony rozmaitych ludzi w ró¿nych sytuacjach edukacyjnych. Przyk³adowo platforma Moodle jest u¿ywana ju¿ nie tylko na uniwersytetach, ale tak¿e w szko³ach ¶rednich, podstawowych, w organizacjach nie nastawionych na zysk, w prywatnych firmach, przez niezale¿nych nauczycieli, a nawet przez rodziców samodzielnie kszta³c±cych swoje dzieci. Wiele ludzi z ca³ego ¶wiata ma swój wk³ad w rozwój platformy Moodle. Wiêcej dowiesz siê w sekcji podziêkowania. -

        Âàæíàé ñêëàäàþ÷àé ïðàåêòó Moodle ç’ÿ¢ëÿåööà ³íòýðíýò-ñòàðîíêà moodle.org, ÿêàÿ ñëóæûöü öýíòðàì ³íôàðìàöû³, äûñêóñ³³, à òàêñàìà ñóïðàöî¢í³öòâà Moodle, ó ÷ûì óäçåëüí³÷àþöü àäì³í³ñòðàòàðû, íàñòà¢í³ê³, äàñëåä÷ûê³, ³, çðàçóìåëà, íàâó÷ýíöû. Òàêñàìà ÿê ñàì Moodle ãýòà ñòàðîíêà ¢âåñü ÷àñ ðàçâ³âàåööà, êàá ïàñïåöü çà çàïûòàì³ êàðûñòàëüí³êࢠ³ ,òàêñàìà ÿê Moodle, çà¢ñ¸äû áóäçå äàñòóïíà áÿñïëàòíà.

        +

        Wa¿n± sk³adow± projektu Moodle jest strona internetowa moodle.org, która jest centrum informacji, dyskusji, oraz wspó³pracy u¿ytkowników Moodle, do których zaliczaj± siê administratorzy, nauczyciele, badacze, oraz oczywi¶cie deweloperzy. Tak samo jak samo Moodle ta strona ci±gle siê rozwija, by nad±¿yæ za potrzebami u¿ytkowników i ,tak samo jak Moodle, zawsze bêdzie dostêpna bezp³atnie.

        -

        Íàïðûêàíöû 2003 ðàñïà÷àëà ñâàþ äçåéíàñöü moodle.com ô³ðìà, ÿêàÿ áóäçå ïðàäñòà¢ëÿöü äàäàòêîâóþ äàïàìîãó òûì, êàìó ÿíà áóäçå ïàòðýáíà, ³ ÿø÷ý ìíîñòâà ö³êàâûõ ïàñëóã.

        +

        Pod koniec 2003 sw± dzia³alno¶æ rozpocznie, moodle.com firma, która bêdzie udziela³a dodatkowej pomocy tym, którzy bêd± jej potrzebowaæ, oraz wiele ciekawych us³ug.

        -

        Ïðà ïëàíû íà áóäó÷ûíþ Moodle äàâåäàåøñÿ áîëüø íà ñòàðîíöû, ïðûñâå÷àíàé ïëàíàì Moodle

        +

        Wiêcej na temat przysz³ych planów Moodle dowiesz siê na stronie po¶wiêconej Przysz³o¶ci Moodle

        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        +

        Dokumentacja Moodle

        +

        Version: $Id$

        diff --git a/lang/be/docs/credits.html b/lang/be/docs/credits.html deleted file mode 100644 index 53d25a8fb72..00000000000 --- a/lang/be/docs/credits.html +++ /dev/null @@ -1,214 +0,0 @@ - - - -Äàêóìåíòàöûÿ ïà Moodle: Óí¸ñê³ - - - - -

        Óí¸ñê³

        -
        -

        Àãóëüíûÿ çâåñòê³

        -
        -

        Ìàðö³í Äóäæûÿìàñ - ðàñïà÷ûíàëüí³ê, âÿäó÷û ðàñïðàöî¢í³ê, ìåíåäæýð ïðàåêòó, ìåíåäæýð ïà âûïóñêó ³ àñíî¢íàÿ öÿãëàâàÿ ñ³ëà ïðàåêòó Moodle. Ö³ ìàåöå ñåíà ïàäñöÿë³öü?

        -

        Ïàêåò Moodle çíàõîäç³ööà ïàä àáàðîíàé À¢òàðñêàãà ïðàâà © 1999-2004, Ìàðö³í Äóäæûÿìàñ ïàä ë³öýíç³ÿé GNU GPL.

        -
        -

        Àñíî¢íûÿ ðàñïðàöî¢í³ê³

        -
        -

        Àñàáë³âàÿ ïàäçÿêà àä óñ³õ íàñ – òûì, õòî çðàá³¢ ³ñòîòíû ¢í¸ñàê ó íàï³ñàííå êîäó Moodle ³ äàïàìàãàå ðàçâ³âàöü ÿãî äàëåé. Ãýòà ëþäç³, ÿê³ÿ ðàçóìåþöü øòî òàêîå ðàñïðàöî¢êà Moodle ³ áåç ÿê³õ Moodle íå íàáû¢ áû òàê³ÿ ïàìåðû:

        -
        -

        - Eloy Lafuente (stronk7), Ray Kingdon, Williams Castillo, Petri Asikainen, Henrik Kaipe, Zbigniew Fiedorowicz, Gustav Delius, Thomas Robb, Janne Mikkonen, Jon Papaioannou, Scott Elliott, Shane Elliott, Roberto Pinna (Bobo), Mike Churchward, Petr Škoda (skodak), Penny Leach, Martin Langhoff

        -
        -
        -

        ²íøûÿ ïàìàãàòûÿ

        -
        -

        Øìàò ³íøûõ ëþäçåé ïðûíÿë³ ¢äçåë (³ ïðàöÿãâàþöü ðàá³öü ãýòà íàäàëåé) ó êàíñòðóêòû¢íûõ àáìåðêàâàííÿõ, ïàäòðûìöû, òýñòàâàíí³, ðàñïðàöî¢öû ðîçíûõ êàâàëêࢠïðàãðàìû ³ äàêóìåíòàöû³. Ãýòû ñï³ñ âåëüì³ âÿë³ê³ ³ ¢âåñü ÷àñ çìÿíÿåööà, àëå íåêàòîðûÿ ³ì¸íû ìû çãàäâàåì (ó ïàðàäêó, ÿê ÿíû äàäàâàë³ñÿ):

        -
        -

        - Peter C. Taylor, Art Lader, Matt Hope, Tom Murdock, Sébastien Namèche, James Miller, Dustin - Rue, Holger Schadeck, Giovanni Tummarello, John Windmueller, Sean Keogh, Mitsuhiro - Yoshida, Greg Barnett, Mark Kimes, Mary Hunter, Russell Jungwirth, Przemyslaw Stencel, - John "Captain" Eyre, Paula Edmiston, Howard Miller, Claudio Tavares, P. Timothy Ervin, - Bob Calder, Ursula Raab, David Delgado, Mad Alex, Gaëtan Frenoy, Bernard Boucher, - Bryan Williams, Rob Butner, Koen Roggemans, David Scotson, Torsten Anderson, Eamon Costello, Hannes Gassert.

        -
        -

        Äàðóéöå, êàë³ ìû çàáûë³ñÿ ¢êëþ÷ûöü Âàøàå ³ìÿ ¢ ñï³ñ. Moodle-ñóïîëüíàñöü âÿë³êàÿ ³ àêòû¢íàÿ ³ òàê³ âÿë³ê³ ñï³ñ öÿæêà óòðûìë³âàöü! Êàë³ ëàñêà, äàøë³öå ë³ñò Ìàðö³íó ç Âàøûì³ ïðàïàíîâàì³! :-)

        -

        Òàêñàìà äçÿêóþ ¢ñ³ì òûì, õòî

        - -
        -

        Ïåðàêëàä÷ûê³

        -
        -

        Àäíûì ç ìîöíûõ áàêî¢ Moodle ¸ñöü êîëüêàñöü ïåðàêëàäࢠÿãî ³íòýðôýéñó ³ äàêóìåíòàöû³. Êîæíû ïåðàêëàä ïàòðàáóå øìàòãàäç³ííàé ïðàöû, ïàêîëüê³ ìàåööà áîëüø çà 1000 ôðàçࢠäëÿ ïåðàêëàäó (äàäàòêîâà ñîòí³ äàïàìîæíûõ ôàéëà¢). Øìàò ÿê³ÿ ìîâû ìàþöü áîëüø çà àäíàãî ïåðàêëàä÷ûêà, øòî ïðàöóþöü ðàçàì ö³ àäç³í çà àäíûì.

        -

        Óòðûìë³âàöü ñï³ñ ç ³ì¸íàì³ ãýòûõ öóäî¢íûõ ëþäçåé íàäçâû÷àé öÿæêà, òàìó, êàë³ ëàñêà, çâÿðòàéöåñÿ äà ñòàðîíê³ çàïàìïî¢âàííÿ ìîâû äçå çãàäâàþööà ³ì¸íû ³ äýòàë³.

        -

        Êààðäûíàòàð ïåðàêëàäó - Koen Roggemans (translation@moodle.org).

        -
        -

        Òýìû

        -
        -

        Òýìû íàäàþöü ñàéòàì Moodle ôàðáࢠ³ æûööÿ. ͳæýé ìû ïàäàåì ñï³ñ òýìà¢, øòî ¢âàõîäçÿöü ó äûñòðûáóòû¢ Moodle ³ ³õ à¢òàðà¢: -

        - -
        -

        Á³áë³ÿòýê³ Moodle

        -
        -

        Íåêàòîðûÿ á³áë³ÿòýê³ Moodle áûë³ íàï³ñàíû ³íøûì³ ëþäçüì³ ³ ðàçìÿðêî¢âàþööà ÿê ÷àñòêà Moodle ïàä ñâà³ì³ open source ë³öýíç³ÿì³, øòî äàçâàëÿþöü íàì ðàá³öü ãýòà. Õà÷ó ïåðàäàöü ñâàå ïàäçÿê³ à¢òàðàì óñ³õ ãýòûõ öóäî¢íûõ ïðàäóêòࢠ– áåç ³õ Moodle ìîã áû íå ìåöü òàêóþ ôóíêöûÿíàëüíàñöü. ²íôàðìàöûÿ ïðà ïðàâû íà êîæíû ïàêåò ìîæíà áà÷ûöü í³æýé:

        -

        ADOdb   -  lib/adodb

        -
        -

        Á³áë³ÿòýêà àáñòðàêöû³ áàçû äàäçåíûõ äëÿ MySQL, PostgreSQL, MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 ³ ODBC.

        -

        Âåðñ³ÿ: 4.50
        - À¢òàðñêàå ïðàâà © 2000-2004 John Lim (jlim@natsoft.com.my)
        - ˳öýíç³ÿ: Dual LGPL and BSD-style
        - URL:  http://adodb.sourceforge.net
        -

        -
        -

        Ãðàô³÷íàÿ áàçà   -  lib/graphlib.php

        -
        -

        Ïðûëàäà äëÿ ìàëÿâàííÿ ë³í³ÿ¢, óêàçàëüí³êà¢, ïàíåëÿ¢ ³ ô³ãóðíûõ äûÿãðàìà¢, óêëþ÷íà ç ë³÷áàâûì³ âîñÿì³ àáñöûñ ³ äâàéíûì³ âîñÿì³ àðäûíàò.

        -

        Âåðñ³ÿ: 1.6.3 (ñà çìÿíåííÿì³)
        - À¢òàðñêàå ïðàâà © 2000  Herman Veluwenkamp, hermanV@mindless.com
        - ˳öýíç³ÿ: LGPL
        -

        -
        - -

        html2text   -  lib/html2text.php

        -
        -

        PHP-ñêðûïò äëÿ êàíâåðòàöû³ HTML ó ïðûáë³çíû òýêñòàâû ýêâ³âàëåíò

        -

        Âåðñ³ÿ: 1.0 (ñà çìÿíåííÿì³)
        - À¢òàðñêàå ïðàâà © 2002  Mark Wilton-Jones
        - ˳öýíç³ÿ: HowToCreate script license with written permission
        - URL: http://www.howtocreate.co.uk/php/
        -

        -
        - -

        htmlArea   -  lib/editor

        -
        -

        Ñêðûïò Javascript/HTML äëÿ çìÿø÷ýííÿ GUI-ðýäàêòàðà ¢ òýêòàâûÿ âîáëàñö³ ¢ ²íòýðíýò Ýêñïëîðýð ³ Mozilla

        -

        Âåðñ³ÿ: 3.0 áýòà (ñà çìÿíåííÿì³)
        - À¢òàðñêàå ïðàâà © 2002  interactivetools.com, inc.
        - ˳öýíç³ÿ: htmlArea License (áàçóåööà íà BSD license)
        -

        -
        - -

        IP-Atlas  -   lib/ipatlas

        -
        -

        Ñêðûïòû PHP äëÿ àäëþñòðàâàííÿ ìåñöà IP-àäðàñà íà ìàïå.
        -
        - Âåðñ³ÿ: 1.0 (ñà çìÿíåííÿì³)
        - À¢òàðñêàå ïðàâà © 2002   Ivan Kozik
        - ˳öýíç³ÿ: GNU GPL
        - URL: http://www.xpenguin.com/ip-atlas.php

        -
        - -

        kses   -  lib/kses.php

        -
        -

        Ô³ëüòð HTML/XHTML, ÿê³ äàçâàëÿå òîëüê³ íåêàòîðûÿ ýëåìåíòû ³ àòðûáóòû

        -

        Âåðñ³ÿ: 0.2.1
        - À¢òàðñêàå ïðàâà © 2002,2003  Ulf Harnhammar
        - ˳öýíç³ÿ: GNU GPL
        - URL: http://sourceforge.net/projects/kses -

        -
        - -

        mimeTeX  -   filter/tex

        -
        -

        Ñêàìï³ëÿâàíàÿ C-ïðàãðàìà äëÿ êàíâåðòàâàííÿ TeX ó GIF'û
        -
        - Âåðñ³ÿ: 1.4
        - À¢òàðñêàå ïðàâà © 2002-2004   John Forkosh Associates, Inc
        - ˳öýíç³ÿ: GNU GPL
        - URL: http://www.forkosh.com/mimetex.html
        -URL: http://moodle.org/download/mimetex

        -
        -

        overlibmws  -   lib/overlib.js

        -
        -

        Javascript-á³áë³ÿòýêà äëÿ ïàëÿïøýííÿ ¢ëàñö³âàñöÿ¢ óñïëûâàþ÷ûõ âîêíࢠDHTML, ðóõîìûõ âîêíà¢, ïàäçåÿ¢ ³ ã.ä.
        -
        - Âåðñ³ÿ: ˳ïåíü 2004
        - À¢òàðñêàå ïðàâà © 2002-2004   Foteos Macrides
        - À¢òàðñêàå ïðàâà © 1998-2004   Erik Bosrup
        - ˳öýíç³ÿ: Artistic Open Source ë³öýíç³ÿ
        - URL: http://www.macridesweb.com/oltest/
        -

        -

        PclZip  -   lib/pclzip

        -
        -

        Ïðûëàäà äëÿ ñòâàðýííÿ, ïðàöû ³ ðàñïàêî¢öû ôàéëࢠzip.
        -
        - Âåðñ³ÿ: 2.4 RC1
        - À¢òàðñêàå ïðàâà © 2004  Vincent Blavet <vincent@phpconcept.net>
        - ˳öýíç³ÿ: GNU GPL
        - URL: http://www.phpconcept.net
        -

        -
        -

        PHP mailer   -  lib/class.phpmailer.php

        -
        -

        Ïðûëàäà äëÿ äàñûëê³ ë³ñòà ç âûêàðûñòàííåì àëüáî sendmail, PHP mail(), àëüáî SMTP.  Ìåòàäû áàçóþööà íà ñòàíäàðòíûõ ïðûëàäàõ AspEmail(tm).
        -
        - Âåðñ³ÿ 1.71,
        - À¢òàðñêàå ïðàâà © 2003 Brent R. Matzelle <bmatzelle@yahoo.com>
        - ˳öýíç³ÿ: LGPL
        - URL:   http://phpmailer.sourceforge.net
        -

        -
        -

        PHP Markdown   -  lib/markdown.php

        -
        -

        Ôóíêöû³ äëÿ êàíâåðòàâàííÿ ç òýêñòàâàãà ôàðìàòó Markdown ó ÷ûñòû XHTML.

        -

        Âåðñ³ÿ: 1.0b9 (ñà çìÿíåííÿì³)
        - À¢òàðñêàå ïðàâà © 2003-2004 , John Gruber
        - À¢òàðñêàå ïðàâà © 2004 , Michel Fortin
        - ˳öýíç³ÿ: LGPL
        - URL: http://www.michelf.com/projects/php-markdown/
        -

        -
        -

        Snoopy  -   lib/snoopy

        -
        -

        Ñåòêàâû PHP-êë³åíò
        -
        - Âåðñ³ÿ: 1.0
        - À¢òàðñêàå ïðàâà © 1999-2000 Monte Ohrt <monte@ispi.net>
        - ˳öýíç³ÿ: GNU LGPL
        - URL: http://snoopy.sourceforge.com
        -

        -
        -

        Spreadsheet::WriteExcel  -   lib/excel

        -
        -

        Á³áë³ÿòýêà äëÿ ãåíåðàâàííÿ òàáë³ö Excel.
        -
        - Âåðñ³ÿ: 2002-11-28
        - À¢òàðñêàå ïðàâà © 2002  Xavier Noguer <xnoguer@rezebra.com>
        - ˳öýíç³ÿ: GNU LGPL
        - URL: http://jeffn.users.phpclasses.org/browse.html/package/767.html
        -

        -
        -

        SMTP class   -  lib/class.smtp.php

        -
        -

        Ïðûëàäà, ÿêàÿ âûêàðûñòî¢âàåööà äëÿ ñóâÿç³ ç ëþáûì SMTP-ñýðâåðàì.
        - ¨í àæûööÿ¢ëÿå ¢ñå ôóíêöû³ SMTP, âûçíà÷àíûÿ ¢ RFC821 çà âûêëþ÷ýííåì TURN.
        -
        - Âåðñ³ÿ: 03/26/2001
        - À¢òàðñêàå ïðàâà © 2001  Chris Ryan <chris@greatbridge.com>

        -


        -

        -
        -
        -

        Äàêóìåíòàöûÿ Moodle

        -

        Âåðñ³ÿ: $Id$

        -
        - - diff --git a/lang/be/docs/cvs.html b/lang/be/docs/cvs.html index 4e085472250..abaf4720384 100644 --- a/lang/be/docs/cvs.html +++ b/lang/be/docs/cvs.html @@ -1,37 +1,43 @@ - - + -Moodle Docs: How to use CVS - - - - -

        Âûêàðûñòàííå CVS ó ìýòàõ çäàáûööÿ ³ àêòóàë³çàöû³ çûõîäíàãà êîäó (êîäó êðûí³öû) Moodle

        -
        + +

        Âûêàðûñòàííå CVS ó ìýòàõ çäàáûööÿ ³ àêòóàë³çàöû³ çûõîäíàãà êîäó (êîäó êðûí³öû) Moodle

        CVS ãýòà àêðîí³ì àä Current Versioning System (ñ³ñòýìà àêòóàë³çàöû³). Ãýòà ìåòàä çàõî¢âàííÿ êîäó êðûí³öû, ÿê³ ïðûìÿíÿåööà ïà¢ñþäíà, ïàêîëüê³ ¸í çàõî¢âàå ¢ñå âåðñ³³ ôàéëࢠòàê³ì ÷ûíàì, øòî í³÷îãà í³êîë³ íå ïðàïàäàå, ó òîé ÷àñ ÿê àêòû¢íàñöü ðîçíûõ ëþäçåé êàíòðàëþåööà. Äàå òàêñàìà ìàã÷ûìàñöü çàõàâàííÿ êîäó, êàë³ äâà àáî áîëüø ÷àëàâåê³ àäíà÷àñîâà ïðàöóþöü ç àäíûì ôàéëàì. Êîä êðûí³öû, à òàêñàìà ¢ñå âåðñ³³ çàõî¢âàþööà íà öýíòðàëüíûì ñýðâåðû (ó äàäçåíûì âûïàäêó íà Sourceforge).

        Êàë³ âû çàõî÷àöå ïðîñòà àòðûìàöü äîñòóï äà àêòóàëüíàé âåðñ³³ Moodle, ÿêàÿ çíàõîäç³ööà íà ñýðâåðû CVS, òîëüê³ ç ïðàâàì³ ïðà÷ûòàííÿ, Âàì ãýòàÿ ñòàðîíêà íå ïàòðýáíà. Ïðîñòà ðóõàéöåñÿ çãîäíà ç ³íñòðóêöûÿì³ CVS, ÿê³ÿ çíàõîäçÿööà íà ñòàðîíöû Moodle - çïàìïàâàöü..

        -

        Êàá àòðûìàöü ìàã÷ûìàñöü êàðûñòàööà àðõ³âàì CVS Moodle (ÿê ïðàãðàì³ñò ç ïðàâàì çàï³ñó), Âàì ïåðø çà ¢ñ¸ òðýáà çàðýã³ñòðàâàööà íà ñýðâåðû Sourceforge. Íà ãýòàé ñòàðîíöû ïàâåäàìëÿåì íàïðûêëàä, øòî âåäàåì ³ìÿ êàðûñòàëüí³êà myusername ðàçàì ç ïàðîëåì mypassword. Çâÿðí³öå ¢âàãó íà ³íñòðóêöû³ sourceforge, ÿê³ÿ äàòû÷àöü ñòâàðýííÿ õàòíÿãà êàòàëîãó CVS. Òàì ïåðàë³÷àíû äçåÿíí³, ÿê³ÿ Âàì òðýáà âûêàíàöü àäíîñíà êîæíàãà íîâàãà ðýã³ñòðàöûéíàãà çàï³ñó, êàá çðàá³öü ìàã÷ûìàé ïðàöó ç CVS. Êîðàòêà : Âû ïàâ³ííû âûêàðûñòàöü ssh, êàá ³íòýðàêòû¢íà çëó÷ûööà ç cvs.sourceforge.net.

        +

        Êàá àòðûìàöü ìàã÷ûìàñöü êàðûñòàööà àðõ³âàì CVS Moodle (ÿê ïðàãðàì³ñò ç ïðàâàì çàï³ñó), Âàì ïåðø çà ¢ñ¸ òðýáà çàðýã³ñòðàâàööà íà ñýðâåðû Sourceforge. Íà ãýòàé ñòàðîíöû ïàâåäàìëÿåì íàïðûêëàä, øòî âåäàåì ³ìÿ êàðûñòàëüí³êà + myusername ðàçàì ç ïàðîëåì + mypassword. Çâÿðí³öå ¢âàãó íà ³íñòðóêöû³ sourceforge, ÿê³ÿ äàòû÷àöü ñòâàðýííÿ õàòíÿãà êàòàëîãó CVS. Òàì ïåðàë³÷àíû äçåÿíí³, ÿê³ÿ Âàì òðýáà âûêàíàöü àäíîñíà êîæíàãà íîâàãà ðýã³ñòðàöûéíàãà çàï³ñó, êàá çðàá³öü ìàã÷ûìàé ïðàöó ç CVS. Êîðàòêà : Âû ïàâ³ííû âûêàðûñòàöü ssh, êàá ³íòýðàêòû¢íà çëó÷ûööà ç cvs.sourceforge.net.

        -

        Ïàñëÿ òàãî, ÿê Âû çàðýã³ñòðóåöåñÿ íà ñýðâåðû Sourceforge'a, óñòàíàâ³öå êàíòàêò ç (Martin'àì Dougiamas'àì), êàá ¸í ïåðàäࢠÂàì ïðàâû ðàá³öü çàï³ñû ¢ àñîáíûÿ êàòàëîã³.

        + + +

        Êàá ïàçáåãíóöü çàïûòó ïðà mypassword êîæíû ðàç, êàë³ Âû çàïóñêàåöå äàðó÷ýíí³ CVS, ïðà÷ûòàéöå ²íñòðóêöû³ Sourceforge ïðà òîå, ÿê âûêàðûñòàöü êëþ÷û à¢òàðûçàöû³.. Ãýòû êðîê íå ç’ÿ¢ëÿåööà àáàâÿçêîâûì, àëå ìîæà ¢ çíà÷íàé ñòóïåí³ ïàëåã÷ûöü Âàì ïðàöó ç CVS.

        +

        Êàë³ Âû ¢æî àòðûìàåöå ¢ñå ïàòðýáíûÿ ïðàâû, ïðîñòà íàá³ðàéöå äçåþ÷û êðûí³÷íû êîä ³ ïà÷ûíàéöå ïðàöó. ͳæýé ïàäàäçåíû ³íñòðóêöû³ ÿê äëÿ ñ³ñòýìû Unix òàê ³ äëÿ Windows.

        + +

        1. Âûêàðûñòàííå CVS ó àñÿðîääç³ Unix

        CVS ía Sourceforge âûêàðûñòî¢âàå ïà ïðû÷ûíå áÿñïåê³ òðàíñïàðòíóþ àáàëîíêó ssh, òàìó âàì òðýáà áóäçå óñòàíàâ³öü àäïàâåäíóþ çìåííóþ CVS_RSH àñÿðîääçÿ ¢ àáàëîíöû ñâàéãî Uniksa:

        @@ -44,6 +50,7 @@ style ol {margin-left:40px;}
        cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co moodle

        Íå ³ìêí³öåñÿ çíàéñö³ ãýòó ïåðøóþ êàìàíäó CVS ó ³ñíóþ÷ûì êàòàëîãó Moodel. Çàìåñò ãýòàãà ïà÷í³öå ïðàöàâàöü ó íîâûì êàòàëîãó. Ïàìÿòàéöå, øòî íà êîæíûì êðîêó ó Âàñ áóäóöü ïûòàööà ïðà ïàðîëü (mypassword), õ³áà øòî Âû ¢ñòàíîâ³öå êëþ÷ à¢òàðûçàöû³

        +

        Öÿïåð Âàì ïàòðýáåí íîâû êàòàëîã : 'moodle'. Âû ìîæàöå çìÿí³öü ÿãî íàçâó, àáî ïåðàíåñö³ ÿãî, êàë³ õî÷àöå, ó ³íøàå ìåñöà. Çàéäç³öå ¢ ÿãî :

        cd moodle 
        @@ -53,6 +60,7 @@ style ol {margin-left:40px;}
        cvs diff -c config-dist.php
         cvs diff -c lang
        +

        Êàá àòðûìàöü íàéáîëüø íîâûÿ ¢äàñêàíàëåíí³ ç ñýðâåðà âûêàðûñòàéöå:

        cvs update -dP 
        @@ -60,57 +68,66 @@ cvs diff -c lang

        Êàá ïåðàñëàöü ñâàå íîâûÿ ôàéëû íàçàä íà ñýðâåð, Âàì òðýáà áóäçå íàáðàöü íåøòà ïàäîáíàå äà:

        -
        cd lang/ca cvs commit 
        +
        cd lang/ca 
        +cvs commit 

        Òàäû Âû áóäçåöå çàïðîøàíû çìÿñö³öü ñâîé êàìåíòàð (ó çàëåæíàñö³ àä Âàøàãà êåìë³âàãà ðýäàêòàðà òýêñòó) ... äàäàé âàæíû êàìåíòàð ³ çàêðûé ðýäàêòàð ... ôàéëû áóäóöü ïåðàñëàíûÿ ¢ Sourceforge ³ çàï³ñàíûÿ. Ãýòà ¢ñ¸.

        -

        Êàá çýêàíîì³öü ÷àñ, ìîæàø çìÿñö³öü ïðûáë³çíûÿ ïàðàìåòðû ¢ ôàéëå .cvsrc, ó Âàøûì õàòí³ì êàòàëîãó. Íàïðûêëàä ìîé óêëþ÷àå :

        + +

        Êàá çýêàíîì³öü ÷àñ, ìîæàø çìÿñö³öü ïðûáë³çíûÿ ïàðàìåòðû ¢ ôàéëå .cvsrc, ó Âàøûì õàòí³ì êàòàëîãó. Íàïðûêëàä ìîé óêëþ÷àå : + +

        -
        diff -c update -dP 
        +
        diff -c 
        +update -dP 

        Êàá äàâåäàööà áîëüø, íàáÿðû 'cvs help'...

        +

         

        2. Âûêàðûñòàííå CVS ó àñÿðîääç³ Windows

        Ïåðø çà ¢ñ¸ âàì òðýáà çïàìïàâàöü ñâåæóþ êîï³þ ïëàòôîðìû Moodle, âûêàðûñòî¢âàþ÷û ñâîé ðýã³ñòðàöûéíû çàï³ñ ïðàãðàì³ñòà

        1. Çïàìïóé TortoiseCVS ç tortoisecvs.org. - Çàëàäóé ÿãî, à çàòûì çíî¢ çàïóñö³ ñâîé êàìï'þòýð.
        -
        - 2. Ëàêàë³çóé ó ³ñíóþ÷óþ àáî ñòâàðû íîâóþ òý÷êó, ó ÿêóþ òû õî÷àø ñêàï³ÿâàöü Moodle.
        - - 3. Íàö³ñí³ ïðàâóþ êëàâ³øó ìûøû íà ãýòàé òý÷öû ³ íàáÿðû "CVS Checkout" ç ìåíþ. Ïàâ³ííà àäêðûööà äûÿëîãàâàå âàêíî.
        -
        + Çàëàäóé ÿãî, à çàòûì çíî¢ çàïóñö³ ñâîé êàìï'þòýð.
        +
        + 2. Ëàêàë³çóé ó ³ñíóþ÷óþ àáî ñòâàðû íîâóþ òý÷êó, ó ÿêóþ òû õî÷àø ñêàï³ÿâàöü Moodle.
        +
        + 3. Íàö³ñí³ ïðàâóþ êëàâ³øó ìûøû íà ãýòàé òý÷öû ³ íàáÿðû "CVS Checkout" ç ìåíþ. Ïàâ³ííà àäêðûööà äûÿëîãàâàå âàêíî.
        +
        4. Ñêàï³þé ãýòû òýêñò ó ïîëå CVSROOT :

         :ext:myusername@cvs.sourceforge.net:/cvsroot/moodle
        -


        - 5. Êë³êí³ íà: "Fetch list...".
        -
        - 6. Ç ïðàâàãà áîêó ç’ÿâ³ööà ñï³ñ ìîäóëÿ¢: âûáåðû "moodle" ç ãýòàãà ñï³ñà.
        -
        - 7. Êë³êí³ íà "OK" . Ïàâ³íåí ïà÷àööà ïðàöýñ ïåðàíîñó Moodle
        +


        + 5. Êë³êí³ íà: "Fetch list...".
        +
        + 6. Ç ïðàâàãà áîêó ç’ÿâ³ööà ñï³ñ ìîäóëÿ¢: âûáåðû "moodle" ç ãýòàãà ñï³ñà.
        +
        + 7. Êë³êí³ íà "OK" . Ïàâ³íåí ïà÷àööà ïðàöýñ ïåðàíîñó Moodle

        Ó äûÿëîãàâûì âàêíå ïàâ³ííû ç’ÿâ³ööà íàçâû ïåðàíåñåíûõ ôàéëà¢, à ïðàç õâ³ë³íó Âû ¢æî ïàâ³ííû ìåöü ïî¢íóþ âåðñ³þ Moodle. Ïàçíåé âû ìîæàöå ïåðàíåñö³ íàâåéøûÿ ôàéëû ç ñýðâåðà CVS :

        -

        1. Íàö³ñí³ ïðàâóþ êëàâ³øó ìûøû íà òý÷öû Moodle (àáî ³íøàé âûáðàíàé òàáîé) ³ âûáåðû "CVS Update".
        +

        1. Íàö³ñí³ ïðàâóþ êëàâ³øó ìûøû íà òý÷öû Moodle (àáî ³íøàé âûáðàíàé òàáîé) ³ âûáåðû "CVS Update".

        Êàë³ çàêîí÷ûø ìàäûô³êàöûþ ôàéëࢠ(³õí³ êîëåð çìåí³ööà ç çÿë¸íàãà íà ÷ûðâîíû!) ìîæàø äàñòàâ³öü ³õ íàçàä íà ñýðâåð òàê³ì ÷ûíàì :

        1. Íàö³ñí³ ïðàâóþ êëàâ³øó ìûøû íà òý÷öû Moodle (àáî ³íøàé, âûáðàíàé òàáîé) ³ âûáåðû - "CVS Commit...".
        -
        - 2. Ó äûÿëîãàâûì âàêíå àï³øû ¢âåäçåíûÿ òàáîé çìåíû.
        -
        - 3. Êë³êí³ "OK". Òâàå çìåíû áóäóöü çàíåñåíû íà ñýðâåð.
        + "CVS Commit...".
        +
        + 2. Ó äûÿëîãàâûì âàêíå àï³øû ¢âåäçåíûÿ òàáîé çìåíû.
        +
        + 3. Êë³êí³ "OK". Òâàå çìåíû áóäóöü çàíåñåíû íà ñýðâåð.

        +

         

        Ïîñïåõà¢!

        +

         

        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        +

        Äàêóìåíòàöûÿ Moodle

        +

        Version: $Id: features.html,v 1.2 2004/12/08 + 10:34:19 martin Exp $

        diff --git a/lang/be/docs/developer.html b/lang/be/docs/developer.html index 2ac2502cc2b..de19e3781ba 100644 --- a/lang/be/docs/developer.html +++ b/lang/be/docs/developer.html @@ -1,20 +1,29 @@ - - -Moodle Docs: Developers Manual - - + Äàêóìåíòàöûÿ Moodle : Ïàäðó÷í³ê ïðàãðàì³ñòà + + + - -

        ²íñòðóêöûÿ êàðûñòàëüí³êà

        -
        + + +

        Ïàäðó÷í³ê ïðàãðàì³ñòà

        Ãýòû äàêóìåíò ÷àñòêîâà àï³ñâàå ñòðóêòóðó Moodle, à òàêñàìà ñïîñàá, ÿê³ì âû ìîæàöå ¢êëþ÷ûöü ÿãî ¢ ñâภðàçâ³öö¸.

        Íà ãýòû ìîìàíò ¸í íå âåëüì³ ³ìïàíóþ÷û. Àëå ç öÿãàì ÷àñó ïàâ³ííà ç’ÿâ³ööà ëåïøàÿ äàêóìåíòàöûÿ!

        Çìåñò:

        1. Àðõ³òýêòóðà Moodle
        2. -
        3. ßê ÿãî ìîæíà ¢êëþ÷ûöü ó ñâภðàçâ³öö¸
        4. +
        5. ßê ÿãî ìîæíà ¢êëþ÷ûöü ó ñâภðàçâ³öö¸ +
        -
        -

        1. Àðõ³òýêòóðà Moodle

        +

         

        +

        1. Àðõ³òýêòóðà Moodle

        Ç ïóíêòó ãëåäæàííÿ àäì³í³ñòðàòàðà, ïëàòôîðìà Moodle áûëà ñòâîðàíà çãîäíà ç íàñòóïíûì³ êðûòýðûÿì³ :

          -
        1. Moodle ïàâ³íåí ñïðûÿöü çàïóñêó íàéáîëüøàé êîëüêàñö³ ïëàòôîðì
          -
          - Ïëàòôîðìà ñåöåâûõ àïë³êàöûé, ÿêàÿ íàéëåïø ïàääàåööà ïåðàíîñó - ãýòà PHP çëó÷àíàÿ ç MySQL. Ìåíàâ³òà ¢ ãýòûì àñÿðîääç³ áû¢ ñòâîðàíû Moodle (ïàä Linuks, Windows, à òàêñàìà Mac OS X). Äçåëÿ ïàäòðûìê³ áàçࢠäàäçåíûõ Moodle êàðûñòàåööà á³áë³ÿòýêàé ADOdb. Ãýòà àçíà÷àå, øòî Moodle çäîëüíû âûêàðûñòî¢âàöü áîëüø ÷ûì äçåñÿöü ðîçíûõ â³äࢠáàç äàäçåíûõ. (íà æàëü Moodle íå çäîëüíû ïàêóëü øòî ñòâàðàöü òàáåëü âà ¢ñ³õ ãýòûõ áàçàõ äàäçåíûõ. Áîëüø ïàäðàáÿçíóþ ³íôàðìàöûþ âû çíîéäçåöå ó íàñòóïíàé ÷àñòöû ãýòàãà ïàäðó÷í³êà)
          +
        2. Moodle ïàâ³íåí ñïðûÿöü çàïóñêó ÿê ìàãà íàéáîëüøàé êîëüêàñö³ ïëàòôîðì
          +
          + Ïëàòôîðìà ñåöåâûõ àïë³êàöûé, ÿêàÿ íàéëåïø ïàääàåööà ïåðàíîñó - ãýòà PHP çëó÷àíàÿ ç MySQL. Ìåíàâ³òà ¢ ãýòûì àñÿðîääç³ áû¢ ñòâîðàíû Moodle (ïàä Linuks, Windows, à òàêñàìà Mac OS X). Äçåëÿ ïàäòðûìê³ áàçࢠäàäçåíûõ Moodle êàðûñòàåööà á³áë³ÿòýêàé ADOdb. Ãýòà àçíà÷àå, øòî Moodle çäîëüíû âûêàðûñòî¢âàöü áîëüø ÷ûì äçåñÿöü ðîçíûõ â³äࢠáàç äàäçåíûõ. (íà æàëü Moodle íå çäîëüíû ïàêóëü øòî ñòâàðàöü òàáåëü âà ¢ñ³õ ãýòûõ áàçàõ äàäçåíûõ. Áîëüø ïàäðàáÿçíóþ ³íôàðìàöûþ âû çíîéäçåöå ó íàñòóïíàé ÷àñòöû ãýòàãà ïàäðó÷í³êà)
          +
        3. -
        4. Moodle ïàâ³íåí áûöü ïðîñòûì ïðû ëàäàâàíí³, àñâîéâàíí³ àáñëóãî¢âàííÿ i ìàäûô³êàöû³
          -
          +
        5. Moodle ïàâ³íåí áûöü ïðîñòûì ïðû ëàäàâàíí³, àñâîéâàíí³ àáñëóãî¢âàííÿ i ìàäûô³êàöû³
          +
          Ðàíí³ÿ ïðàòàòûïû Moodle (1999) áûë³ ñòâîðàíû ç äàïàìîãàé Zope - âûñîêà¢çðî¢íåâàãà, àðûåíòàâàíàãà íà àá'åêòû ñýðâåðà ñåöåâûõ àïë³êàöûÿ¢. Íà æàëü, àêàçàëàñÿ, øòî ïàì³ìà ñàìîé ïà ñàáå ôàéíàé òýõíàëîã³³, ÿå öÿæêà áûëî çàñâî³öü ³ ÿíà áûëà íåäàñòàòêîâà ãíóòêàé ç ïóíêòó ãëåäæàííÿ àäì³í³ñòðàâàííÿ. Ç äðóãîãà áîêó, äà ñêðûïòàâàé ìîâû PHP ìîæíà âåëüì³ ë¸ãêà ïðûçâû÷à³ööà (àñàáë³âà, êàë³ âû ¢æî çàéìàë³ñÿ ïðàãðàìàâàííåì ç âûêàðûñòàííåì ñêðûïòàâûõ ìîâà¢). ß âûðàøû¢ àäíîñíà õóòêà, øòî íå áóäó ¢æûâàöü ïðàåêòàâàííÿ, ÿêîå àðûåíòàâàíà íà ïðàôåñ³ÿíàëà¢-ïðàãðàì³ñòà¢, çíî¢ æà äçåëÿ òàãî, êàá öýëàå çàñòàëîñÿ ë¸ãê³ì ³ çðàçóìåëûì äëÿ ïà÷àòêî¢öà¢. Ïà¢òîðíàå âûêàðûñòàííå êîäó (code reuse) äàñÿãàåööà äçÿêóþ÷û ñ³ñòýìå á³áë³ÿòýê ç ÿñíà àêðýñëåíûì³ ôóíêöûÿì³ ³ ñö³ñëà âûçíà÷àíûì ìåñöàçíàõîäæàííåì ôàéëࢠñà ñêðûïòàì³. Ìîâà PHP òàêñàìà íåñêëàäàíàÿ ïðû çàêëàäöû ³ íàñòîëüê³ æ äàñòóïíàÿ, áî áîëüøàñöü ñýðâåðࢠïðàïàíóå ÿå ÿê ñòàíäàðò. -
          +
          +
        6. -
        7. Ïåðàõîäû äà ÷àðãîâûõ âåðñ³é Moodle ïàâ³ííû áûöü íåñêëàäàíûì³
          -
          - Ïëàòôîðìà Moodle óêëþ÷àå ³íôàðìàöûþ ïðà ñâàå âåðñ³³ (òàêñàìà ÿê ³ ïðà âåðñ³³ çíåøí³õ ìîäóëÿ¢). Ó ÿå ¢áóäàâàíû ìåõàí³çì, ÿê³ äàçâàëÿå Moodle ïðàâ³ëüíà àêòóàë³çàâàöü ñàìûÿ íîâûÿ âåðñ³³ (íàïðûêëàä, Moodle ìàå ìàã÷ûìàñöü çìÿí³öü íàçâû òàáë³öࢠàáî äàäàöü íîâûÿ ïàë³ äà ¢æî ³ñíóþ÷ûõ). Êàë³ íàïðûêëàä âû êàðûñòàåöåñÿ CVS ó Þí³êñå, òî äàñòàòêîâà òîëüê³ äàöü êàìàíäó "cvs update -d", a çàòûì âûéñö³ íà ãàëî¢íóþ ñòàðîíêó ñýðâ³ñó êàá çàêîí÷ûöü ïðàöýñ àêòóàë³çàöû³.
          +
        8. Ïåðàõîäû äà ÷àðãîâûõ âåðñ³é Moodle ïàâ³ííû áûöü íåñêëàäàíûì³
          +
          + Ïëàòôîðìà Moodle óêëþ÷àå ³íôàðìàöûþ ïðà ñâàå âåðñ³³ (òàêñàìà ÿê ³ ïðà âåðñ³³ çíåøí³õ ìîäóëÿ¢). Ó ÿå ¢áóäàâàíû ìåõàí³çì, ÿê³ äàçâàëÿå Moodle ïðàâ³ëüíà àêòóàë³çàâàöü ñàìûÿ íîâûÿ âåðñ³³ (íàïðûêëàä, Moodle ìàå ìàã÷ûìàñöü çìÿí³öü íàçâû òàáë³öࢠàáî äàäàöü íîâûÿ ïàë³ äà ¢æî ³ñíóþ÷ûõ). Êàë³ íàïðûêëàä âû êàðûñòàåöåñÿ CVS ó Þí³êñå, òî äàñòàòêîâà òîëüê³ äàöü êàìàíäó "cvs update -d", a çàòûì âûéñö³ íà ãàëî¢íóþ ñòàðîíêó ñýðâ³ñó êàá çàêîí÷ûöü ïðàöýñ àêòóàë³çàöû³.
          +
        9. -
        10. Moodle ïàâ³íåí ìåöü ìîäóëüíóþ ïàáóäîâó, êàá ìåöü ìàã÷ûìàñöü ðàçáóäîâû ñ³ñòýìû.
          -
          - Moodle ìàå øýðàã ìàäóëÿöûéíûõ ôóíêöûé, òàê³õ ÿê òýìû, çìåñò êóðñà¢, ìîâࢠàáàëîíàê ïðàãðàìû, ñõåìû áàç äàäçåíûõ ³ ôàðìàòû êóðñà¢. . Ãýòà äàçâàëÿå äàäàâàöü íîâûÿ ôóíêöû³ äà ãàëî¢íàãà êîäó, àáî íàâàò àñîáíà ³õ ðàçìÿðêî¢âàöü. Íà ãýòó òýìó âû çìîæàöå àòðûìàöü áîëüø ³íôàðìàöû³ äàëåé.
          +
        11. Moodle ïàâ³íåí ìåöü ìîäóëüíóþ ïàáóäîâó, êàá ìåöü ìàã÷ûìàñöü ðàçáóäîâû ñ³ñòýìû.
          +
          + Moodle ìàå øýðàã ìàäóëÿöûéíûõ ôóíêöûé, òàê³õ ÿê òýìû, çìåñò êóðñà¢, ìîâࢠàáàëîíàê ïðàãðàìû, ñõåìû áàç äàäçåíûõ ³ ôàðìàòû êóðñà¢. . Ãýòà äàçâàëÿå äàäàâàöü íîâûÿ ôóíêöû³ äà ãàëî¢íàãà êîäó, àáî íàâàò àñîáíà ³õ ðàçìÿðêî¢âàöü. Íà ãýòó òýìó âû çìîæàöå àòðûìàöü áîëüø ³íôàðìàöû³ äàëåé.
          +
        12. -
        13. Ïàâ³ííà ³ñíàâàöü ìàã÷ûìàñöü êàðûñòàííÿ Moodle ðàçàì ç ³íøûì³ ñ³ñòýìàì³
          -
          - Moodle òðûìàå ¢ñå ôàéëû äàäçåíàãà êóðñà ¢ çâû÷àéíûì êàòàëîãó íà ñýðâåðû. Ãýòà äàçâàëÿå àäì³í³ñòðàòàðó ñ³ñòýìû çðàá³öü ³õ äàñòóïíûì³ íà ôàéëàâûì óçðî¢í³ êîæíàìó íàñòà¢í³êó, íàïðûêëàä ïðàç Appletalk, SMB, NFS, FTP, WebDAV ³ ä.ï.. Ìîäóë³ âåðàãîäíàñö³ äàçâàëÿþöü Moodle êàðûñòàööà LDAP, ²MAP, POP3, NNTP, àáî ³íøûì³ áàçàì³ äàäçåíûõ ÿê êðûí³öàé ³íôàðìàöû³ àá êàðûñòàëüí³êàõ. Ó áóäó÷ûí³ Moodle çá³ðàåööà ìåöü ìàã÷ûìàñöü ³ìïàðòàâàöü ³ ýêñïàðòàâàöü äàäçåíûÿ ïðû äàïàìîçå ôàðìàòà¢, ÿê³ÿ àáàï³ðàþööà íà XML (ó òûì ë³êó ²MS ³ SCORM), à òàêñàìà ïàâûøàíóþ ìàã÷ûìàñöü êàðûñòàííÿ ¢çîðàì³ ôàðìàòàâàííÿ àáàëîíê³ (äçÿêóþ÷û ãýòàìó ñòàíå ëÿã÷ýé ³íòýãðàâàöü Moodle ç ³íøûì³ ñòàðîíêàì³ WWW)
          +
        14. Ïàâ³ííà ³ñíàâàöü ìàã÷ûìàñöü êàðûñòàííÿ Moodle ðàçàì ç ³íøûì³ ñ³ñòýìàì³
          +
          + Moodle òðûìàå ¢ñå ôàéëû äàäçåíàãà êóðñà ¢ çâû÷àéíûì êàòàëîãó íà ñýðâåðû. Ãýòà äàçâàëÿå àäì³í³ñòðàòàðó ñ³ñòýìû çðàá³öü ³õ äàñòóïíûì³ íà ôàéëàâûì óçðî¢í³ êîæíàìó íàñòà¢í³êó, íàïðûêëàä ïðàç Appletalk, SMB, NFS, FTP, WebDAV ³ ä.ï.. Ìîäóë³ âåðàãîäíàñö³ äàçâàëÿþöü Moodle êàðûñòàööà LDAP, ²MAP, POP3, NNTP, àáî ³íøûì³ áàçàì³ äàäçåíûõ ÿê êðûí³öàé ³íôàðìàöû³ àá êàðûñòàëüí³êàõ. Ó áóäó÷ûí³ Moodle çá³ðàåööà ìåöü ìàã÷ûìàñöü ³ìïàðòàâàöü ³ ýêñïàðòàâàöü äàäçåíûÿ ïðû äàïàìîçå ôàðìàòà¢, ÿê³ÿ àáàï³ðàþööà íà XML (ó òûì ë³êó ²MS ³ SCORM), à òàêñàìà ïàâûøàíóþ ìàã÷ûìàñöü êàðûñòàííÿ ¢çîðàì³ ôàðìàòàâàííÿ àáàëîíê³ (äçÿêóþ÷û ãýòàìó ñòàíå ëÿã÷ýé ³íòýãðàâàöü Moodle ç ³íøûì³ ñòàðîíêàì³ WWW)
        -

        2. ßê ìîæíà óêëþ÷ûöü Moodle ó ñâภðàçâ³öö¸

        +

         

        +

        2. ßê ìîæíà óêëþ÷ûöü Moodle ó ñâภðàçâ³öö¸

        ßê óæî ãàâàðûëàñÿ âûøýé, Moodle óòðûìë³âàå øýðàã ôóíêöûé, ÿê³ÿ ìàþöü ìîäóëüíóþ ïàáóäîâó. Íàâàò êàë³ âû íå ïðàãðàì³ñò, ³ñíóþöü òàê³ÿ ñôåðû, ó ÿê³õ âû ìîæàöå ñàáå äàïàìàã÷û.

        -

        Ñêëàäí³ê³ êóðñà¢

        +

        Ñêëàäí³ê³ êóðñà¢

        -

        Ãýòà íà ñàìàé ñïðàâå íàéáîëüø ³ñòîòíûÿ ìîäóë³. ßíû ðàçìåø÷àíû ¢ êàòàëîãó 'mod'. ²ñíóå ñåì àñíî¢íûõ ìîäóëÿ¢ ãýòàãà òûïó : çàäàííå, âûáàð, ôîðóì, äç¸íí³ê, òýñò, çàïàñ, à òàêñàìà àíêåòà. Êîæíû ç ãýòûõ ìîäóëÿ¢ óêëþ÷àå àñîáíû ïàäêàòàëîã, ó ÿê³ ¢êëþ÷àíû íåàáõîäíûÿ ýëåìåíòû (ïëþñ äàäàòêîâûÿ ñêðûïòû, òûïîâûÿ òîëüê³ äëÿ äàäçåíàãà ìîäóëÿ) :

        +

        Ãýòà íà ñàìàé ñïðàâå íàéáîëüø ³ñòîòíûÿ ìîäóë³. ßíû ðàçìåø÷àíû ¢ êàòàëîãó 'mod'. ²ñíóå ñåì àñíî¢íûõ ìîäóëÿ¢ ãýòàãà òûïó : çàäàííå, âûáàð, ôîðóì, äç¸íí³ê, òýñò, çàïàñ, à òàêñàìà àíêåòà. Êîæíû ç ãýòûõ ìîäóëÿ¢ óêëþ÷àå àñîáíû ïàäêàòàëîã, ó ÿê³ ¢êëþ÷àíû íåàáõîäíûÿ ýëåìåíòû (ïëþñ äàäàòêîâûÿ ñêðûïòû, òûïîâûÿ òîëüê³ äëÿ äàäçåíàãà ìîäóëÿ) : +

        • mod.html: ñëóæûöü äëÿ çìÿø÷ýííÿ àáî àêòóàë³çàöû³ ³íñòàíöû³ äàäçåíàãà ìîäóëþ
        • version.php: àêðýñë³âàå ³íôàðìàöûþ (meta-³nfo) ³ ðîá³öü ìàã÷ûìûì âûêàðûñòàííå
        • @@ -72,7 +88,7 @@
        • widget_update_instance() - êîä, ÿê³ ñëóæûöü äëÿ àêòóàë³çàöû³ ¢æî ³ñíóþ÷ûõ ³íñòàíöûé
        • widget_delete_instance() - êîä, ÿê³ ñëóæûöü äëÿ âûäàëåííÿ ³íñòàíöûé
        • widget_user_outline() - ìàþ÷û äàäçåíóþ ³íñòàíöûþ, ìîæíà ïàäñóìàâàöü óêëàä êàðûñòàëüí³êà
        • -
        • widget_user_complete() - ìàþ÷û äàäçåíóþ ³íñòàíöûþ, ìîæíà ïàäðàáÿçíà ïåðàë³÷ûöü óñå ýëåìåíòû ¢êëàäó êàðûñòàëüí³êà
          +
        • widget_user_complete() - ìàþ÷û äàäçåíóþ ³íñòàíöûþ, ìîæíà ïàäðàáÿçíà ïåðàë³÷ûöü óñå ýëåìåíòû ¢êëàäó êàðûñòàëüí³êà
        • êàá ïàçáåãíóöü ìàã÷ûìûõ êàíôë³êòà¢, êîæíàÿ ç ôóíêöûé ìîäóëþ ïàâ³ííà ïà÷ûíàööà íà w³dget_ . Êîæíàÿ ïàñòàÿííàÿ, ÿêóþ âû àêðýñë³öå, ïàâ³ííà ïà÷ûíàööà W²DGET_
        @@ -83,10 +99,11 @@ Ðàñïàêóé ÿãî, à çàòûì ïðà÷ûòàé ôàéë README

        Äîáðàé ñïðàâàé ç’ÿ¢ëÿåööà ¢äçåë ó Ôîðóìå, ïðûñâå÷àíûì ñêëàäí³êàì êóðñà¢. (Activities modules forum on Using Moodle).

        +

         

        -

        Òýìû

        +

        Òýìû

        -

        Òýìû àêðýñë³âàþöü âûãëÿä óñÿãî ñýðâ³ñó. Ðàçàì ç ãàëî¢íàé äûñòðûáóöûÿé, ïðàïàíóåööà íåêàëüê³ ïðîñòûõ òýìà¢, àëå òû ìîæàø ñòâàðûöü ñâàþ ¢ëàñíóþ, ïàäá³ðàþ÷û êîëåðû, ñòûë³ ³ ãðàô³êó, à òàêñàìà çìÿñö³¢øû ñâîé ëàãàòûï

        +

        Òýìû (Themes / sk³ns) àêðýñë³âàþöü âûãëÿä óñÿãî ñýðâ³ñó. Ðàçàì ç ãàëî¢íàé äûñòðûáóöûÿé, ïðàïàíóåööà íåêàëüê³ ïðîñòûõ òýìà¢, àëå òû ìîæàø ñòâàðûöü ñâàþ ¢ëàñíóþ, ïàäá³ðàþ÷û êîëåðû, ñòûë³ ³ ãðàô³êó, à òàêñàìà çìÿñö³¢øû ñâîé ëàãàòûï

        Êîæíàÿ òýìà ðàçìåø÷àíà ¢ ïàäêàòàëîãó "theme" ³ óêëþ÷àå, ÿê ì³í³ìóì, íàñòóïíûÿ ôàéëû:

        • config.php: àêðýñë³âàå êîëåðû òýìû, ÿê³ÿ ¢æûâàþööà âà ¢ñ³ì ñåðâ³ñå
        • @@ -96,21 +113,23 @@

        Êàá ñòâàðûöü óëàñíóþ òýìó äëÿ Moodle ó ³ñíóþ÷àé âåðñ³³:

          -
        1. Çðàá³ êîï³þ ÿêóþ-íåáóäçü ç óæî ³ñíóþ÷ûõ òýìࢠó òý÷êó ç ³íøàé íàçâàé. Ïðàïàíóþ òàáå ïà÷àöü ç íåéêàé ñòàíäàðòíàé òýìû.
        2. -
        3. Àäðýäàãóé config.php ³ ðàçìÿñö³ ¢ ³ì óëàñíûÿ êîëåðû.
        4. -
        5. Àäðýäàãóé styles.php ³ çàìÿí³ ñòûë³ CSS.
        6. -
        7. Àäðýäàãóé header.html i footer.html êàá äàäàöü ëàãàòûï ³ â³çóàëüíóþ ñõåìó ñòàðîíê³. +
        8. Ñêàï³þé ÿêóþ-íåáóäçü ç óæî ³ñíóþ÷ûõ òýìࢠó òý÷êó ç ³íøàé íàçâàé. Ïðàïàíóþ òàáå ïà÷àöü ç íåéêàé ñòàíäàðòíàé òýìû.
        9. +
        10. Çìàäûô³êóé config.php ³ ðàçìÿñö³ ¢ ³ì óëàñíûÿ êîëåðû.
        11. +
        12. Çìàäûô³êóé styles.php ³ çàìÿí³ ñòûë³ CSS.
        13. +
        14. Çìàäûô³êóé header.html i footer.html êàá äàäàöü ëàãàòûï ³ â³çóàëüíóþ ñõåìó ñòàðîíê³.

        Ïàìÿòàé, øòî êîæíû ç ãýòûõ êðîêࢠç’ÿ¢ëÿåööà àïöûÿíàëüíûì. Ìîæàø äûÿìåòðàëüíà çìÿí³öü âûãëÿä ñýðâ³ñó, òîëüê³ çìÿí³¢øû êîëåðû ¢ conf³g.php

        ×àðãîâûÿ âåðñ³³ Moodle ìîãóöü ó íåêàòîðàé ñòóïåí³ çìÿí³öü òýìû, òàìó çà¢ñ¸äû ÷ûòàé çà¢âàã³ äà íîâàãà âûäàííÿ, êàë³ êàðûñòàåøñÿ íåñòàíäàðòíàé òýìàé.

        Àñàáë³âà Moodle 2.0 áóäçå ìåöü çóñ³ì íîâóþ ñ³ñòýìó äýìàíñòðàöû³, ÿêàÿ, õóò÷ýé çà ¢ñ¸, áóäçå çàñíàâàíà íà òðàíñôàðìàöûÿõ XSL âûõàäó XML ç Moodle. Âåðàãîäíà øòî òýìû áóäóöü ìåöü çóñ³ì ³íøû ôàðìàò, àëå çàòîå áóäóöü êóäû áîëüø çäîëüíûÿ äà ìàäûô³êàöûÿ¢ (íàïðûêëàä áóäóöü ìåöü ìàã÷ûìàñöü ïåðàñî¢âàííÿ àñîáíûõ ýëåìåíòࢠíà ñòàðîíöû).

        -

        Áîëüø ³íôàðìàöû³ íà ãýòó òýìó çíîéäçåöå íà ôîðóìå, ÿê³ ïðûñâå÷àíû òýìàì (Themes forum on Using Moodle). Êàë³ ñòâîðûø äîáðóþ òýìó, ÿêîé áû çàõàöå¢ ïàäçÿë³ööà, ïåðàøë³ óïàêîâàíû ôàéë íà ôîðóì, ïðûñâå÷àíû òýìàì.
        +

        Áîëüø ³íôàðìàöû³ íà ãýòó òýìó çíîéäçåöå íà ôîðóìå, ÿê³ ïðûñâå÷àíû òýìàì (Themes forum on Using Moodle). Êàë³ ñòâîðûø äîáðóþ òýìó, ÿêîé áû çàõàöå¢ ïàäçÿë³ööà, ïåðàøë³ óïàêîâàíû ôàéë íà ôîðóì, ïðûñâå÷àíû òýìàì.

        -

        Ìîâû

        +

         

        +

        Ìîâû

        Moodle çàïðàåêòàâàíû ÿê ì³æíàðîäíàÿ ïëàòôîðìà. Êàë³ ëàíöóæîê çíàêࢠàáî ñòàðîíêà òýêñòó, ÿêàÿ äýìàíñòðóåööà, ÿê ÷àñòêà àáàëîíê³, ¸í ïàäòðûìë³âàåööà ÿê ìî¢íû ôàéë. Êîæíàÿ ìîâà çàõî¢âàåööà ¢ ïàäêàòàëîãó 'lang'. + Ñòðóêòóðà ïàäêàòàëîãó lang íàñòóïíàÿ:

        lang/be - êàòàëîã, ÿê óêëþ÷àå ¢ñå ôàéëû äëÿ äàäçåíàé ìîâû (íàïðûêëàä äëÿ áåëàðóñêàé)

          @@ -122,14 +141,14 @@
        • quiz.php - ëàíöóæê³ çíàêࢠäëÿ ìîäóëþ òýñò
        • resource.php - ëàíöóæê³ çíàêࢠäëÿ ìîäóëþ ðýñóðñû
        • survey.php - ëàíöóæê³ çíàêࢠäëÿ ìîäóëþ àíêåòû
        • -
        • .... ³ äà òàãî ëàíöóæê³ çíàêࢠäëÿ ¢ñ³õ äàäàòêîâûõ ìîäóëÿ¢.
          -
          +
        • .... ³ äà òàãî ëàíöóæê³ çíàêࢠäëÿ ¢ñ³õ äàäàòêîâûõ ìîäóëÿ¢
          +
          Ëàíöóæîê çíàêࢠç ãýòûõ ôàéëࢠìîæíà àòðûìàöü ïðû äàïàìîçå get_string() - àáî print_string() . Êîæíû ëàíöóæîê çíàêࢠçàìÿíÿå àäïàâåäíû ëàíöóæîê íà ³íøàé ìîâå.
          -
          +
          lub print_string() . Êîæíû ëàíöóæîê çíàêࢠçàìÿíÿå àäïàâåäíû ëàíöóæîê íà ³íøàé ìîâå.
          +
          íàïðûêëàä: $strdueby = get_string("assignmentdueby", "assignment", - userdate($date));
          -
          + userdate($date));
          +
          Êàë³ ÿê³-íåáóäçü ëàíöóæîê çíàêࢠó íåéêàé ìîâå íå ³ñíóå, ¸í à¢òàìàòû÷íà çàìÿíÿåööà ñâà³ì àíãåëüñê³ì àäïàâåäí³êàì.

        lang/be/help - óêëþ÷àå ¢ñå äàïàìîæíûÿ ñòàðîíê³ (äëÿ äàïàìîã³ âà ¢ñïëûâàþ÷ûõ âîêíàõ)

        @@ -146,38 +165,56 @@ Martin Dougiamas.

        Ìîæàø òàêñàìà ñêàðûñòàöü Ôîðóì, ïðûñâå÷àíû ìîâàì (Languages forum on Using Moodle).

        Ìàãó òàêñàìà ïåðàäàöü òàáå ïðàâû çàï³ñó CVS ó êðûí³÷íû êîä Moodle êàá òû ìîã íåïàñðýäíà ¢ïðà¢ëÿöü ôàéëàì³.

        -

        Ñõåìû áàçࢠäàäçåíûõ

        +


        + Ñõåìû áàçࢠäàäçåíûõ

        Êàë³ Moodle àòðûìàå äçåþ÷óþ áàçó äàäçåíûõ ðàçàì ç àêðýñëåíûì³ òàáë³öàì³, òî ìýòàíàê³ðàâàíûÿ ïðîñòûÿ çàïûòû SQL, âûêàðûñòàíûÿ ¢ Moodle, ïàâ³ííû ïðàâ³ëüíà ñóïðàöî¢í³÷àöü ç ðîçíûì³ â³äàì³ áàç äàäçåíûõ.

        Ïðàáëåìà çàêëþ÷àåööà ¢ à¢òàìàòû÷íûì ñòâàðýíí³ íîâûõ òàáë³öࢠó áàçàõ äàäçåíûõ. Moodle ³ìêíåööà ãýòà âûêàíàöü ïàä÷àñ çàêëàäê³. Ïàêîëüê³ áàçû äàäçåíûõ ó çíà÷íàé ñòóïåí³ àäðîçí³âàþööà, ÿø÷ý íå ³ñíóå ìåòàä âûêàíàííÿ ãýòàãà íåçàëåæíà àä ïëàòôîðìû. Êàá ïàäòðûìàöü ãýòû ïðàöýñ ìîæíà ñòâàðûöü sekwenc äàðó÷ýííÿ¢ SQL, ÿê³ÿ ñëóæàöü äëÿ ñòâàðýííÿ òàáë³öû Moodle ó êàíêðýòíàé áàçå äàäçåíûõ. Ãýòûÿ ôàéëû çíàõîäçÿööà ó êàòàëîãó lib/db, òàêñàìà ¢ ïàäêàòàëîãó db êîæíàãà ìîäóëþ.

        Çàðàç òîëüê³ MySQL ³ PostgreSQL ïî¢íàñöþ àáñëóãî¢âàþööà ãýòûì ìåõàí³çìàì (í³õòî íå ñêëࢠñõåìࢠäëÿ ³íøûõ áàç).

        -

        Moodle 1.2 áóäçå âûêàðûñòî¢âàöü íîâû ìåòàä, çàñíàâàíû íà XML, ÿêàÿ çàáÿñïå÷ûöü, øòî òîå, øòî ¢ñå ãýòûÿ ñêëàäàíàñö³ ñòðàöÿöü àêòóàëüíàñöü. +

        Moodle 1.1 áóäçå âûêàðûñòî¢âàöü íîâû ìåòàä, çàñíàâàíû íà XML, ÿêàÿ çàáÿñïå÷ûöü, øòî òîå, øòî ¢ñå ãýòûÿ ñêëàäàíàñö³ ñòðàöÿöü àêòóàëüíàñöü.

        -

        Ôàðìàòû êóðñà¢

        +

         

        +

        Ôàðìàòû êóðñà¢

        -

        Moodle àáñëóãî¢âàå çàðàç òðû ðîçíûÿ ôàðìàòû êóðñࢠ: òûäí¸âû, òýìàòû÷íû, à òàêñàìà ñïåöûÿëüíû.

        +

        Moodle àáñëóãî¢âàå çàðàç òðû ðîçíûÿ ôàðìàòû êóðñࢠ: òûäí¸âû, òýìàòû÷íû, à òàêñàìà ñÿáðî¢ñê³.

        Óñå ÿíû íåêàëüê³ áîëüø ïðûâÿçàíû äà êîäà (³ ïðàç ãýòà ìåíø "ýëàñòû÷íûÿ")÷ûì ³íøûÿ ìîäóë³, àëå ³ òóò ìîæíà àäíîñíà ë¸ãêà äàäàöü íîâûÿ ôàðìàòû.

        Êàë³ òû ìàåø íåéê³ÿ çàäóìû àäíîñíà ³íøûõ ôàðìàòà¢, ÿê³ÿ òàáå ïàòðýáíû, àáî õàöå¢ áû ñóñòðýööà, çêàíòàêòóéñÿ ñà ìíîé, à ÿ çðàáëþ ¢ñ¸ øòî çìàãó, êàá óêëþ÷ûöü ³õ ¢ áóäó÷ûÿ äûñòðûáóöû³.

         

        -

        Äàêóìåíòàöûÿ ³ àðòûêóëû

        +

        Äàêóìåíòàöûÿ ³ àðòûêóëû

        Êàë³ òû àä÷óâàåø, øòî ìîæàø íàï³ñàöü äàâåäí³ê, àðòûêóë, íàâóêîâóþ ïðàöó (àáî ëþáóþ ³íøóþ) íà òýìó Moodle, çðàá³ ãýòà!

        Çìÿñö³ ñâàþ ïðàöó ¢ ñåòöû ³ ïàìÿòàé, øòî òðýáà òàêñàìà çìÿñö³öü ñïàñûëêó íà http://moodle.org/

        -

        Óäçåë ó çíàõîäæàíí³ ïàìûëàê

        +

         

        +

        Óäçåë ó çíàõîäæàíí³ ïàìûëàê

        -

        Íàïðûêàíöû, ÿ á õàöå¢ öÿáå çààõâîö³öü, êàá òû çàï³ñà¢ñÿ ¢ "çíàõîäæàííå ïàìûëàê " (bug tracker) íà ñòàðîíöû http://moodle.org/bugs , +

        Íàïðûêàíöû, ÿ á õàöå¢ öÿáå çààõâîö³öü, êàá òû çàï³ñà¢ñÿ ¢ "çíàõîäæàííå ïàìûëàê " (bug tracker) + + íà ñòàðîíöû http://moodle.org/bugs , êàá àáâÿø÷àöü ïðà ¢ñå ïàìûëê³, ÿê³ÿ òû çíîéäçåø ³ êàá òû ìîã óäçåëüí³÷àöü ó àáìåðêàâàíí³, ÿê àä ³õ ïàçáàâ³ööà.

        Òýðì³í "Ïàìûëê³" äàòû÷ûöü íå òîëüê³ ïàìûëàê ó ïðàãðàìàâàíí³, àëå òàêñàìà íîâûõ ³äýé àáî ïàæàäàííÿ¢ àäíîñíà ôóíêöûé, àáî íàâàò êàíñòðóêòû¢íàé êðûòûê³ ³ñíóþ÷ûõ ôóíêöûé. Ïðûâàáíàñöü ïðàãðàìàâàííÿ open-source çàêëþ÷àåööà ¢ òûì, øòî êîæíû ìîæà ïðûíÿöü óäçåë ³ äàïàìàã÷û ¢ ñòâàðýíí³ ëåïøàãà ïðàäóêòà. Ó ãýòûì ïðàåêöå òâîé àñàá³ñòû ¢êëàä áóäçå ïðûâ³òàíû ç ðàäàñöþ!

        -

        Äçÿêóþ çà êàðûñòàííå Moodle!!

        -

        Ç íàéëåïøûì³ ïàæàäàííÿì³,
        +

         

        +
        +
        +
        +

        Äçÿêóþ çà êàðûñòàííå Moodle!

        +

        Ç íàéëåïøûì³ çû÷ýííÿì³,
        Martin Dougiamas

        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        +
        +
        +
        +

         

        +

         

        +
        +

         

        +
        +

        Dokumentacja Moodle

        +

        Version: $Id: developer.html,v 1.2 2004/12/09 + 10:34:19 martin Exp $

        + - \ No newline at end of file diff --git a/lang/be/docs/docstyles.css b/lang/be/docs/docstyles.css deleted file mode 100644 index 0af1b88cdb6..00000000000 --- a/lang/be/docs/docstyles.css +++ /dev/null @@ -1,134 +0,0 @@ -body, td, th, li { - font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - background-color: #FFFFFF; -} - -th { - font-weight: bold; -} - -a:link { - text-decoration: none; - color: blue; -} - -a:visited { - text-decoration: none; - color: blue; -} - -a:hover { - text-decoration: underline; - color: red; -} - -form { - margin-bottom: 0; -} - - -li { - margin-bottom: 10px; - -} - -.question { - font-size: medium; - font-weight: bold; - font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - border: 1px dotted; - padding: 10px; - background-color: #EEEEEE; -} - -.answer { - font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - font-size: medium; - border: none; - padding-left: 40px; -} - -.normaltext { - font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - font-size: medium; - border: none; - margin-left: 30px; - -} - -.answercode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: none; - padding-left: 60px; -} - -.questionlink { - font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - font-size: medium; - border: none; - padding-left: 40px; -} - -.examplecode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: thin dashed #999999; - background-color: #FBFBFB; - margin: auto; - padding: 30px; - height: auto; - width: auto; -} -h1 { - font-weight: bold; - color: #000000; - background-color: #CCCCCC; - padding: 5px; - font-size: large; - border-width: 1px; - border-color: #CCCCCC; - -moz-border-radius: 10px; -} -h2 { - font-weight: bold; - color: #FFFFFF; - background-color: #666666; - padding: 5px; - font-size: medium; - border-width: 1px; - border-color: #666666; - -moz-border-radius: 10px; -} -h3 { - font-weight: normal; - color: #FFFFFF; - background-color: #666666; - padding: 5px; - font-size: medium; - -moz-border-radius: 10px; -} -.spaced { - - margin-bottom: 30px; -} - -ul { - margin-top: 10px; - -} -.commandline { - font-family: "Courier New", Courier, mono; - font-size: x-small; - background-color: #FBFBFB; - margin: auto auto 20px 30px; - padding: 5px; - height: auto; - width: auto; - font-weight: bold; - border: 1px solid #999999; - white-space: nowrap; - display: compact; - clear: both; - float: none; -} diff --git a/lang/be/docs/faq.html b/lang/be/docs/faq.html index 2f79b913a4b..dfee88cff4f 100644 --- a/lang/be/docs/faq.html +++ b/lang/be/docs/faq.html @@ -1,14 +1,12 @@ - - + -Moodle Docs: Frequently Asked Questions (FAQ) - - +Äàêóìåíòàöûÿ Moodle: Ïûòàíí³, øòî íàé÷àñöåé çàäàþöü (FAQ) + + - -

        Íàé÷àñöåé çàäàâàíûÿ ïûòàíí³ (FAQ)

        + +

        Ïûòàíí³, øòî íàé÷àñöåé çàäàþöü (FAQ)

        Íà ãýòàé ñòàðîíöû çíàõîäç³ööà íåêàëüê³ àäêàçࢠíà ïûòàíí³, øòî íàé÷àñöåé çàäàþöü. Êàë³ Âû ðóõàë³ñÿ àäïàâåäíà ³íñòðóêöû³ ïà ëàäàâàíí³, àëå óñ¸ ÿø÷ý ìàåöå ïðàáëåìû, òàäû ãýòàÿ ñòàðîíêà ïàâ³ííà Âàì äàïàìàã÷û.

        @@ -17,135 +15,620 @@ Moodle íà moodle.org. Ïà÷ûíàéöå ç ïîøóêó ôîðóìà¢, ñêàðûñòà¢øû íåêàëüê³ êëþ÷àâûõ ñëîâà¢, êàë³ Âàøàÿ ïðàáëåìà ¢æî àáìÿðêî¢âàëàñÿ. Êàë³ í³÷îãà íÿ çíîéäçåöå, àôîðì³öå Âàøàå ïûòàííå ¢ âûãëÿäçå àäïàâåäíàãà ôîðóìó - Âàì äàïàìîãóöü.

        +

        Êàë³ âû ¢æî ïàñïðàáàâàë³ íåêàëüê³ âàðûÿíòࢠáåçâûí³êîâà, ³ Âû ïðû ãýòûì ïðàöóåöå ç àêòûâ³çàâàíûì firewall-àì (áëàê³ðî¢ø÷ûêàì íåïàæàäàíàãà äîñòóïó), ðýêàìåíäóåì ïðàâåðûöü íàñòðîéê³ Âàøàãà firewall-ó, êàá ïåðàêàíàööà, øòî ¸í íå áëàêóå ïàòðýáíóþ ôóíêöûþ àáî çëó÷ýííå. Firewall-û çðýäêó âûêë³êàþöü ïðàáëåìû ç Moodle, àëå ÷àñàì óïëûâàþöü çà çí³æýííå ôóíêöûÿíàëüíûõ ìàã÷ûìàñöÿ¢ ç ïðû÷ûíû çáîÿ¢ êàíô³ãóðàöû³ Firewall-a. + + +

        Ñêàðûñòàéöå ãýòû ñï³ñ ïûòàííÿ¢ äëÿ õóòêàãà ïåðàõîäó äà àäïàâåäíàãà àäêàçó í³æýé:

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Êàë³ ÿ ñïðàáóþ ïðàãëÿäçåöü çàãðóæàåìû ôàéë âûñêîêâàå ïàìûëêà "ôàéë íÿ çíîéäçåíû"

        -

        Íàïðûêëàä: Not Found: The requested URL /moodle/file.php/2/ìîé ôàéë.jpg íÿ áû¢ çíîéäçåíû íà ãýòûì ñýðâåðû.

        -

        Âàø ñýðâåð ìóñ³öü ìåöü òàêóþ êàíô³ãóðàöûþ, êàá ÷àñòêà URL ïàñëÿ ³ìÿ ñêðûïòà ïàäûõîäç³ëà äà ñêðûïòà. Ãýòà çâû÷àéíà äàñòóïíà ¢ Apache 1, àëå íåäàñòóïíà ïà çìà¢÷àíí³ ¢ Apache 2. Êàá óêëþ÷ûöü ãýòà, äàäàéöå ãýòû ðàäîê äà Âàøàãà httpd.conf, àáî äà .htaccess ôàéëà ¢ Âàøàé ëàêàëüíàé äûðýêòîðû³ (ãëÿäç³ Äàêóìåíòàöûþ ïà ëàäàâàíí³ + + + +

        Íàïðûêëàä: Not Found: The requested URL /moodle/file.php/2/ìîé ôàéë.jpg + + + + íÿ áû¢ çíîéäçåíû íà ãýòûì ñýðâåðû.

        + + + +

        Âàø ñýðâåð ìóñ³öü ìåöü òàêóþ êàíô³ãóðàöûþ, êàá ÷àñòêà URL ïàñëÿ ³ìÿ ñêðûïòà ïàäûõîäç³ëà äà ñêðûïòà. Ãýòà çâû÷àéíà äàñòóïíà ¢ Apache 1, àëå íåäàñòóïíà ïà çìà¢÷àíí³ ¢ Apache 2. Êàá óêëþ÷ûöü ãýòà, äàäàéöå ãýòû ðàäîê äà Âàøàãà httpd.conf, àáî äà .htaccess ôàéëà ¢ Âàøàé ëàêàëüíàé äûðýêòîðû³ (ãëÿäç³ Óñòàëÿâàöü äàêóìåíòàöûþ + + + äëÿ òàãî êàá àòðûìàöü áîëüø äýòàëÿ¢):

        + + +

        AcceptPathInfo on

        + + +

        ÇÀ¡ÂÀÃÀ: ãýòà ñïðàöóå òîëüê³ ¢ âåðñ³³ Apache 2.x.

        + + +

        Êàë³ âû íå êàðûñòàåöåñÿ Apache 2 ³ ¢ âàñ ÿø÷ý ¢çí³êàå ãýòà ïðàáëåìà, øòî ìàëàâåðàãîäíà, òàäû ¢êëþ÷ûöå Moodle êàá ïàñïðàáàâàöü àëüòýðíàòû¢íû ìåòàä. Íåãàòû¢íû áîê ãýòàãà - ñïàä ó ïðàäóêòû¢íàñö³ äëÿ Âàøûõ êàðûñòàëüí³êࢠ³ Âû òàêñàìà íå çìîæàöå ¢æûâàöü àëüòýðíàòû¢íûÿ ñïàñûëê³ íà ðýñóðñû HTML.

        -

        Êàá ñêàðûñòàööà ãýòûì àëüòýðíàòû¢íûì ìåòàäàì, çàðýã³ñòðóéöåñÿ ÿê Admin, ³äç³öå íà ñòàðîíêó "Configure Variables" ³ çìÿí³öå ¢ñòàíî¢ê³ íà "slasharguments". Çàðàç Âû çìîæàöå êàðûñòàööà Âàøûì³ çàãðóæàíûì³ ôàéëàì³.

        -

        Ö³ çàëàäàâàíà PHP, ³ ÿêàÿ ¢ ìÿíå âåðñ³ÿ?

        -

        Çðàá³öå íîâû ôàéë íà âàøûì ñàéöå ïàä íàçâàé info.php, ÿê³ çìÿø÷àå íàñòóïíû òýêñò ³ âûêë³÷öå ÿãî ç Âàøàãà áðà¢çåðà:

        -

        <?PHP phpinfo() ?>

        + + + +

        Êàá ñêàðûñòàööà ãýòûì àëüòýðíàòû¢íûì ìåòàäàì, çàðýã³ñòðóéöåñÿ ÿê Admin, ³äç³öå íà ñòàðîíêó "Configure Variables" ³ çìÿí³öå ¢ñòàíî¢ê³ íà "slasharguments". + + + + + Çàðàç Âû çìîæàöå êàðûñòàööà Âàøûì³ çàãðóæàíûì³ ôàéëàì³.

        + + + +

         

        + + + + + + + +

        Ö³ çàëàäàâàíà PHP, ³ ÿêàÿ ¢ ìÿíå âåðñ³ÿ?

        + + + +

        Çðàá³öå íîâû ôàéë íà âàøûì ñàéöå ïàä íàçâàé info.php, ÿê³ çìÿø÷àå íàñòóïíû òýêñò ³ âûêë³÷öå ÿãî ç Âàøàãà áðà¢çåðà:

        + + + + + + + +

        <?PHP phpinfo() ?>

        + + +

        Êàë³ íå àäáûâàåööà í³÷îãà, òàäû ¢ âàñ íå ¢ñòàëÿâàíû PHP. Ïðàãëÿäç³öå äàêóìåíòû ïà ³íñòàëÿöû³, êàá äàâåäàööà, ÿê ÿãî ìîæíà ïàñòàâ³öü íà âàø êàìï'þòýð.

        + + + +

         

        + + +

        ×àìó ¢ñå ìàå ñòàðîíê³ ïóñòûÿ?

        + + +

        Ïðàâåðöå ïåðàìåííóþ dirroot ó config.php. Òðýáà ¢æûâàöü ïî¢íûÿ ïàðîë³, íàïðûêëàä:

        + + +

        $CFG->dirroot = "d:\inetpub\sites\www.yoursite.com\web\moodle";

        + + + +

         

        + + +

        Redhat Linux ïëàòôîðìó ãëÿäç³öå: Redhat Linux

        + + + +

         

        + + +

        Íà ñòàðîíêàõ ïàìûëê³: çâàðîò äà íÿâûçíà÷àíàé ôóíêöû³: get_string()

        + + +

        Êàë³ âûñêîêâàþöü ïàìûëê³, êøòàëòó:

        + + +

        Àíàë³ç ïàìûëêà: àíàë³ç ïàìûëêà, íå÷àêàíàÿ Ò ÏÅÐÀÌÅÍÍÀß ó c:\program + + + files\easyphp\www\moodle\config.php on line 94
        + + + Ïàìûëêà: Çâàðîò äà íÿâûçíà÷àíàé ôóíêöû³: get_string() in c:\program files\easyphp\www\moodle\mod\resource\lib.php + + + on line 11

        + + +

        òàäû, íàïý¢íà, Âû ïàê³íóë³ semi-colon àáî ñïàñûëêó ç ðàäêà ¢ config.php (ïàïÿðýäíÿãà ðàäêà 94).

        + + +

        ²íøàé ïðû÷ûíàé ìîæà áûöü òîå, øòî âû àä÷ûí³ë³ config.php ó ïðàãðàìå êøòàëòó Word êàá ÿãî àäðýäàãàâàöü, à çàõàâàë³ ÿãî ÿê HTML ñòàðîíêó, à íå òýêñòàâàãà ôàéëà.

        -

        ×àìó àòðûìë³âàþ ïàìûëê³ ïðà "çàãàëî¢ê³ ¢æî äàñëàíûÿ"?

        + + + +

         

        + + + +

        ×àìó àòðûìë³âàþ ïàìûëê³ + + +ïðà "çàãàëî¢ê³ ¢æî äàñëàíûÿ"?

        + + +

        Êàë³ âûñêîêâàþöü ïàìûëê³ êøòàëòó:

        + + +

        Óâàãà: íå ìàãó äàäàöü ³íôàðìàöûþ çàãàëî¢êà - çàãàëî¢ê³ ¢æî äàñëàíûÿ (âûâàä ïà÷à¢ñÿ íà/webs/moodle/config.php:87) ó /webs/moodle/lib/moodlelib.php íà ðàäêó 1322

        + + + +

        Óâàãà: íå ìàãó äàäàöü ³íôàðìàöûþ çàãàëî¢êà - çàãàëî¢ê³ ¢æî äàñëàíûÿ (âûâàä ïà÷à¢ñÿ íà/webs/moodle/config.php:87) ó /webs/moodle/lib/moodlelib.php íà ðàäêó 1322

        -

        Óâàãà: íå ìàãó äàäàöü ³íôàðìàöûþ çàãàëî¢êà - çàãàëî¢ê³ ¢æî äàñëàíû(âûâàä ïà÷à¢ñÿ íà/webs/moodle/config.php:87) ó /webs/moodle/lib/moodlelib.php íà ðàäêó 54

        -

        Ó Âàñ ïóñòûÿ ðàäê³ àáî ïðàìåæê³ ïàñëÿ àïîøíÿãà íà Âàøûì config.php ôàéëå. Ìàã÷ûìà, ïðàáëåìû ç òýêñòàâûì³ ðýäàêòàðàì³ - íà ïðûêëàä Notepad ó Windows - ïàñïðàáóéöå ³íøû.

        + + + +

        Óâàãà: íå ìàãó äàäàöü ³íôàðìàöûþ çàãàëî¢êà - çàãàëî¢ê³ ¢æî äàñëàíû(âûâàä ïà÷à¢ñÿ íà/webs/moodle/config.php:87) ó /webs/moodle/lib/moodlelib.php + + + +íà ðàäêó 54

        + + + +

        Ó Âàñ ïóñòûÿ ðàäê³ àáî ïðàìåæê³ ïàñëÿ àïîøíÿãà íà Âàøûì config.php + + + +ôàéëå. Ìàã÷ûìà, ïðàáëåìû ç òýêñòàâûì³ ðýäàêòàðàì³ - íà ïðûêëàä Notepad ó Windows - ïàñïðàáóéöå ³íøû.

        + + + +

         

        + + +

        Àòðûìë³âàþ ïàìûëêó: íåàáõîäíà òîå, øòî íå ðàñêðûëàñÿ '/web/moodle/lib/setup.php'

        + + +

        Ó Âàøûì config.php, óñòàíî¢êà äëÿ ïåðàìåííàé dirroot ìóñ³öü áûöü ïî¢íû øëÿõ àä æîðñòêàãà äûñêó Âàøàãà ñýðâåðà.

        + + +

        Çäàðàåööà, ëþäç³ ¢æûâàþöü øëÿõ àä ³õ õàòíÿé äûðýêòîðû³, àáî ðîäíàñíû êîðàíþ äûðýêòîðû³ ñýðâåðà.

        -

        Êîæíû òýêñò, ÿê³ ÿ äàäàþ ç àïîñòðàôàì (') àáî ¢ äâóêîññ³ (") âûêë³êàå ïàìûëê³ àáî ïðûõîäç³öü ç äàëó÷àíûì ñëýøàì

        + + + +

         

        + + + +

        Êîæíû òýêñò, ÿê³ ÿ äàäàþ ç àïîñòðàôàì + + + + (') àáî ¢ äâóêîññ³ (") âûêë³êàå ïàìûëê³ àáî ïðûõîäç³öü ç äàëó÷àíûì ñëýøàì

        + + +

        Ïðàáëåìû ç àïîñòðàôàì³ âûêë³êàíû íÿïðàâ³ëüíûì "ïàðíûì³ äâóêîññÿì³". Moodle ïàòðàáóå íàñòóïíûõ óñòàíîâàê (çâû÷àéíà, ïà çìà¢÷àíí³):

        -

        magic_quotes_gpc = On
        magic_quotes_runtime = Off

        -

        Ãëÿäç³ ñåêöûþ íà webserver configuration ó äàêóìåíòàöû³ ïà ëàäàâàíí³, êàá äàâåäàööà áîëüø äýòàë¸âà.

        + + + +

        magic_quotes_gpc = On
        + + + + magic_quotes_runtime = Off

        + + + +

        Ãëÿäç³ ñåêöûþ íà webserver + + configuration ó äàêóìåíòàöû³ ïà ëàäàâàíí³, êàá äàâåäàööà áîëüø äýòàë¸âà.

        + +

         

        + + + + + + + + + + + + + + +

        Ïàìûëê³ ¢ session_start

        + + +

        Êàë³ âûñêîêâàþöü ïàìûëê³ êøòàëòó:

        + + +

        Óâàãà: session_start() [function.session-start]: open(/tmp\sess_d40f380d37d431fc1516e9a895ad9ce0, O_RDWR) íå ñïðàöàâàëà: Òàê³ ôàéë àáî äûðýêòîðûÿ àäñóòí³÷àþöü (2) ó G:\web\moodle\lib\setup.php íà ðàäêó 123

        + + +

        Óâàãà: session_start() [function.session-start]: open(/tmp\sess_d40f380d37d431fc1516e9a895ad9ce0, O_RDWR) íå ñïðàöàâàëà: Òàê³ ôàéë àáî äûðýêòîðûÿ àäñóòí³÷àþöü (2) ó G:\web\moodle\lib\setup.php íà ðàäêó 123

        + + +

        Óâàãà: session_start() [function.session-start]: Íå ìàãó äàñëàöü àáìåæàâàëüí³ê ÑÓÁÄ - çàãàëî¢ê³ ¢æî äàñëàíûÿ (âûâàä ïà÷à¢ñÿ íà G:\web\moodle\lib\setup.php:1) in G:\web\moodle\lib\setup.php íà ðàäêó 123

        -

        ... ãýòà ¢ñ¸ òû÷ûööà òàãî, øòî PHP íå ìîæà çàõàâàöü "session" ôàéëû íà æîðñòê³ì äûñêó (ó äûðýêòîðû³/tmp). Çâû÷àéíà, ïðû÷ûíà ¢ òûì, øòî ¢ âàñ ÍßÌÀ äûðýêòîðû³ /tmp íà âàøûì êàìï'þòýðû. Ãýòà òûïîâà äëÿ Windows.

        + + + + + + + +

        ... ãýòà ¢ñ¸ òû÷ûööà òàãî, øòî PHP íå ìîæà çàõàâàöü + "session" ôàéëû íà æîðñòê³ì äûñêó (ó äûðýêòîðû³/tmp). Çâû÷àéíà, ïðû÷ûíà ¢ òûì, øòî ¢ âàñ ÍßÌÀ äûðýêòîðû³ /tmp íà âàøûì êàìï'þòýðû. Ãýòà òûïîâà äëÿ Windows. + + + + + + +

        Ðàøýííå: òðýáà çàô³êñàâàöü PHP óñòàíî¢ê³ íà ãýòûì øëÿõó êàá ïàòðàï³öü ó ðýàëüíóþ äûðýêòîðûþ. Ãýòà ìîæíà çðàá³öü ó âàøûì ôàéëå php.ini file:

        + + +

        session.save_path = C:\temp

        + + +

        àáî ³íàêø ó ôàéëå .htaccess ó âàøàé àñíî¢íàé äûðýêòîðû³ moodle:

        + + +

        php_value session.save_path "/home/moodle/sessions"

        + +

         

        + + + + + + +

        Êàë³ ÿ ³äó íà ñòàðîíêó àäì³í³ñòðàòàðà, ìíå êàæóöü à÷ûñö³öü dirroot!

        + + +

        Êàë³ ¢ âàñ ïàìûëê³ òàêîãà êøòàëòó ¢ Moodle 1.0.9:

        + + + + + + + + + + + + + -
        Ïðàâåðöå ñâàå ¢ñòàíî¢ê³ ¢ config.php: -

        Ó âàñ:

        -

        $CFG->dirroot = "/home/users/fred/public_html/moodle";

        -

        àëå ìóñ³öü áûöü:

        + + + +
        Ïðàâåðöå ñàâå ¢ñòàíî¢ê³ ¢ config.php: + + + +

        Ó âàñ: + + + +

        $CFG->dirroot = "/home/users/fred/public_html/moodle"; + + + +

        àëå ìóñ³öü áûöü: + + +

        $CFG->dirroot = "";

        + + + + + + +

        Òàäû ¢ âàñ ìàëåíüê³ æó÷îê, øòî çäàðàåööà íà íåêàòîðûõ ñýðâåðàõ. Ïðàáëåìà ç ïðàâåðêàé ïàìûëàê, à íå ñà øëÿõàì. Êàá àäðýãóëÿâàöü ÿãî, çíàéäç³öå ãýòû ðàäîê (line 66) ó ôàéëå admin/index.php:

        + + +

        if ($dirroot != $CFG->dirroot) {

        + + +

        ³ çìÿí³öå ÿãî íà:

        + + +

        if (!empty($dirroot) and $dirroot != $CFG->dirroot) {

        + +

         

        + + + + +

        ß ðýã³ñòðóþñÿ, àëå ñïàñûëêà íà login íå çìÿíÿåööà. ß íàðìàëüíà çàãðóæàþñÿ ³ ïðàöóþ.

        + + +

        Ïåðàêàíàéöåñÿ, øòî URL ó Âàøûõ $CFG->wwwroot óñòàíî¢êàõ òîé ñàìû, ÿê³ì Âû ðýàëüíà êàðûñòàåöåñÿ, êàá çàéñö³ íà ãýòû ñàéò.

        + +

         

        + + +

        Êàë³ õà÷ó äàäàöü ðýñóðñ, òî àòðûìë³âàþ ïàâåäàìëåíí³ àá ïàìûëöû.

        + + +

        Êàë³ âû ¢æûâàåöå Apache òàäû, õóò÷ýé çà ¢ñ¸, Âàøû ¢ñòàíî¢ê³ íà config.php äëÿ $CFG->wwwroot àäðîçí³âàþööà àä ðýàëüíàãà URL , ÿê³ âû ¢æûâàåöå, êàá çàéñö³ íà ñàéò. Ïàñïðàáóéöå òàêñàìà àäêëþ÷ûöü "secureforms" ó íàñòðîéêàõ àäì³í³ñòðàòàðà.

        + +

         

        + + + + + + +

        Ïàä÷àñ ïà÷àòêó ïðàöýñó çàãðóçê³, ó ìÿíå íå ïàòðàáóþöü ñòâàðûöü àäì³í³ñòðàöûéíû ðàõóíàê!

        + + +

        Ãýòà âÿäîìàÿ ïðàáëåìà ¢ âåðñ³ÿõ Moodle äà 1.0.9, çàðàç âûïðà¢ëåíàÿ ¢ âåðñ³³ 1.1.

        + + +

        Ãýòà íå òû÷ûööà ¢ñ³õ, à òîëüê³ òûõ, õòî , óñòàëÿâà¢øû Moodle ìàå ñ³ñòýìó ïàâåäàìëåííÿ àá íàâåäâàíí³ ñàéòó íà ñâà³ì áðà¢çåðû ç ³íøàé ïðàãðàìû íà òûì æà ñàéöå, ïàä íàçâàì³ "user", "admin", àáî "teacher".

        + + +

        Ïðàâåðê³ ¢êëþ÷àþöü âûäàëåííå òàê³õ ñ³ñòýì ç Âàøàãà áðà¢çåðà ïåðàä ³íñòàëÿöûÿé, êàðûñòàþ÷ûñÿ ³íøûì áðà¢çåðàì, àáî ðýäàãóþ÷û ôàéë moodle/admin/user.php êàá óñòàâ³öü ãýòûÿ ðàäê³ êàëÿ ïà÷àòêó:

        + + +

        unset($user);
        unset($admin);
        unset($teacher);

        + + +

        Ïàñëÿ ãýòûõ ïðàâåðàê äîáðà ïðàïóñö³öü óñå òàáë³öû ¢ áàçó äàäçåíûõ ³ ïåðàçàïóñö³öü.

        + +

         

        + + + + + + +

        Íå ìàãó çàðýã³ñòðàâàööà - â³ñíå âàêíî ðýã³ñòðàöû³.

        -

        Çâû÷àéíà ïðû÷ûíà ¢ òûì, øòî Âàø êàìï'þòýð (íå âàø Moodle ñýðâåð) ìàå firewall, ÿê³ âûäàëÿå ïàòðýáíóþ ³íôàðìàöûþ ç áðà¢çåðà. Âîñü ³íñòðóêöû³, ÿê ãýòà âûïðàâ³öü Norton firewall products.

        + + + +

        Çâû÷àéíà ïðû÷ûíà ¢ òûì, øòî Âàø êàìï'þòýð (íå âàø Moodle ñýðâåð) + + ìàå firewall, ÿê³ âûäàëÿå ïàòðýáíóþ ³íôàðìàöûþ ç áðà¢çåðà. Âîñü ³íñòðóêöû³, ÿê ãýòà âûïðàâ³öü Norton firewall products.

        + + +

        ѳñàä òàêñàìà ìîæà âûïðàâ³öü ãýòà. Âû ìîæàöå ðýäàãóþ÷û ñòàðîíêó íàñòðîåê Moodle ³ çìÿí³öü ïåðàìåííóþ "secureforms" íà "No".

        + + +

        ²íøàÿ ìàã÷ûìàÿ ïðû÷ûíà ïàìûëê³ -- òîå, øòî ñåñ³³ íà ñýðâåðû çêàíô³ãóðàâàíû íÿïðàâ³ëüíà. Âû ìîæàöå ïðàâåðûöü ãýòà, âûêë³êà¢øû ³íâåíòàð http://yourserver/moodle/lib/session-test.php.

        +

         

        + + + + + + +

        ßê çàñöåðàã÷ûñÿ àä çãóáû ³íôàðìàöû³ íà ìà³ì ñàéöå Moodle?

        + + +

        Òðýáà çðàá³öü êîï³³ 2 ãàëî¢íûõ ðý÷à¢: áàçû äàäçåíûõ ³ ôàéëà¢, ÿê³ÿ çàãðóæàþööà. ²íâåíòàðû Moodle ñàì³ ïà ñàáå ìåíø âàæíû, ïàêîëüê³ ïðû íåàáõîäíàñö³ çà¢ñ¸äû ìîæíà çàãðóç³öü ñâåæóþ êîï³þ.

        + + +

        ¨ñöü øìàò øëÿõî¢ àæûööÿ¢ëåííÿ òàêîé ïàäòðûìê³. Âîñü àï³ñàííå ìàëåíüêàãà ³íâåíòàðó ¢ Unix äëÿ ïàäòðûìê³ áàçû äàäçåíûõ (äîáðà áóäçå çàïóñêàöü ãýòû ³íâåíòàð øòîäíÿ ïðàç õðîí (ãýòà -- äýìàí Unix-à)

        +

        cd /my/backup/directory

        +

        mv moodle-database.sql.gz moodle-database-old.sql.gz

        +

        mysqldump -h example.com -u myusername --password=mypassword -C -Q -e -a mydatabasename > moodle-database.sql

        +

        gzip moodle-database.sql

        +

        Äëÿ ôàéëࢠìîæíà ðýãóëÿðíà ñêàðûñòî¢âàöü rsync, êàá êàï³ðàâàöü çìåíåíûÿ ôàéëû íà ³íøû ñýðâåð:

        -

        rsync -auvtz --delete -e ssh mysshusername@example.com:/my/server/directory /my/backup/directory/

        + +

        rsync -auvtz --delete -e ssh mysshusername@example.com:/my/server/directory + + /my/backup/directory/

        + +

         

        + + + + +

        ×àìó ìîé ñàéò Moodle íÿïðàâ³ëüíà ïàêàçâàå äàòó ³ ÷àñ?

        -

        Êîæíàÿ ìîâà ïàòðàáóå ñïåöûô³÷íàãà ìî¢íàãà êîäó (¸í íàçûâàåööà locale code), êàá äàòû âûâîäç³ë³ñÿ ïðàâ³ëüíà. Ìî¢íûÿ ïàêåòû ¢òðûìë³âàþöü ñòàíäàðòíûÿ êîäû ïà çìà¢÷àíí³, àëå ÿíû ìîãóöü íå ñïðàöî¢âàöü íà ñýðâåðàõ Windows.

        -

        Ïðàâ³ëüíûÿ êîäû ïàä Windows ìîæíà çíàéñö³ íà ãýòûõ äâóõ ñòàðîíêàõ: Êîäû ìî¢, à òàêñàìà Êîäû êðà³í/ðý㳸íࢠ(eg "esp_esp" for spanish).

        -

        Íîâûÿ ìÿñöîâûÿ êîäû ìîæíà ¢âåñö³ íà Admin -> Configure -> ñòàðîíêà Ïåðàìåííûõ, äçå ÿíû ïåðàêðûâàþöü êîäû íÿäà¢íà âûáðàíàãà ìî¢íàãà ïàêåòó.

        + + + +

        Êîæíàÿ ìîâà ïàòðàáóå ñïåöûô³÷íàãà ìî¢íàãà êîäó (¸í íàçûâàåööà locale + + code), êàá äàòû âûâîäç³ë³ñÿ ïðàâ³ëüíà. Ìî¢íûÿ ïàêåòû ¢òðûìë³âàþöü ñòàíäàðòíûÿ êîäû ïà çìà¢÷àíí³, àëå ÿíû ìîãóöü íå ñïðàöî¢âàöü íà ñýðâåðàõ Windows.

        + +

        Ïðàâ³ëüíûÿ êîäû ïàä Windows ìîæíà çíàéñö³ íà ãýòûõ äâóõ ñòàðîíêàõ: Ìîâà + + codes, à òàêñàìà Êðà³íà\ðý㳸í + + codes.(eg "esp_esp" for spanish)

        + +

        Íîâûÿ ìÿñöîâûÿ êîäû ìîæíà ¢âåñö³ íà Admin -> Configure + + -> ñòàðîíêà Ïåðàìåííûõ, äçå ÿíû ïåðàêðûâàþöü êîäû íÿäà¢íà âûáðàíàãà ìî¢íàãà ïàêåòó.

        + +

         

        +

        E-mail êîï³³ íå äàñûëàþööà ç ìà³õ ôîðóìà¢

        -

        Âûïàâ³ííû óñòàíà¢ë³âàåöå ¢ëàñö³âàñö³ õðîíà Moodle, êàá à¢òàìàòû÷íà äàñûëàöü email ç ôîðóìà¢, æóðíàëࢠetc. Ãýòû ïðàöýñ ïàòðàáóå òàêñàìà âû÷ûø÷ýííÿ, íàïðûêëàä âûäàëåííÿ ñòàðûõ, íåïàöâåðäæàíûõ êàðûñòàëüí³êà¢, ³ ã. ä..

        -

        Óâîãóëå, Âàì òðýáà ðàñïà÷àöü ïðàöýñ, êàá ðýãóëÿðíà âûêë³êàöü ³íâåíòàð http://yoursite/admin/cron.php. Ãëÿäç³öå ñåêöûþ ïðà õðîí ó äàêóìåíòàöû³ ïà ëàäàâàíí³.

        -

        Tip: Ïàñïðàáóéöå íàñòðîéê³ ïà çìà¢÷àíí³ íà ñòàðîíöû ïåðàìåííûõ Moodle. Ïàê³íüöå smtphost ÷ûñòûì. Ãýòà ïðûéìàëüíà äëÿ áàëüøûí³ êàðûñòàëüí³êà¢.

        -
        -
        -
        -

        Ïðàïàíàâàöü íîâàå ïûòàííå ö³ àäêàç

        -
        -

        Äçÿêóé John Eyre çà äàïàìîãó ïðû àäíà¢ëåíí³ ãýòàãà + +

        Âûïàâ³ííû óñòàíà¢ë³âàåöå ¢ëàñö³âàñö³ õðîíà Moodle, + +êàá à¢òàìàòû÷íà äàñûëàöü email ç ôîðóìà¢, æóðíàëࢠetc. Ãýòû ïðàöýñ ïàòðàáóå òàêñàìà âû÷ûø÷ýííÿ, íàïðûêëàä âûäàëåííÿ ñòàðûõ, íåïàöâåðäæàíûõ êàðûñòàëüí³êà¢, ³ ã. ä..

        + +

        Óâîãóëå, Âàì òðýáà ðàñïà÷àöü ïðàöýñ, êàá ðýãóëÿðíà âûêë³êàöü ³íâåíòàð http://yoursite/admin/cron.php. Ãëÿäç³öå + + ñåêöûþ ïðà õðîí ó äàêóìåíòàöû³ ïà ëàäàâàíí³.

        + +

        Tip: Ïàñïðàáóéöå íàñòðîéê³ ïà çìà¢÷àíí³ íà ñòàðîíöû ïåðàìåííûõ Moodle. Ïàê³íüöå smtphost ÷ûñòûì. + +Ãýòà ïðûéìàëüíà äëÿ áàëüøûí³ êàðûñòàëüí³êà¢. +

          +

          + + +


        + + + +

        Suggest + + + + íîâû FAQ (óëó÷íà àäêàç!)

        + + + +
        + + + +

        Äçÿêóé John Eyre çà ïàäòðûìêó ïðû àïãðýéäçå ãýòàãà FAQ.

        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        + + + +

        Äàêóìåíòàöûÿ Moodle

        + + + +

        Version: $Id: faq.html,v 1.6 2003/03/30 13:54:28 + + + + moodler Exp $

        + + + + + + + + + + \ No newline at end of file diff --git a/lang/be/docs/features.html b/lang/be/docs/features.html index 91ed2498bd3..620636e9432 100644 --- a/lang/be/docs/features.html +++ b/lang/be/docs/features.html @@ -1,146 +1,478 @@ - - + + -Moodle Docs: Background - - + + +Àñíî¢íûÿ àñàáë³âàñö³ + + + + + +
        +

        Àñíî¢íûÿ àñàáë³âàñö³

        -
        -

        ѳñòýìà ç'ÿ¢ëÿåööà ïðàöóþ÷àé ³ ¢ ñòàíå ðàçâ³ööÿ. Íà ãýòàé + +

         

        + +

        ѳñòýìà ç'ÿ¢ëÿåööà ïðàöóþ÷àé ³ ¢ ñòàíå ðàçâ³ööÿ. Íà ãýòàé ñòàðîíöû Âû çíîéäçåöå ñï³ñ íåêàòîðûõ ìàã÷ûìàñöÿ¢ ñ³ñòýìû:

        + +

         

        +

        Ó àãóëüíûõ ðûñàõ

        -
          -
        • Ñïðàåêòàâàíàÿ ç óë³êàì äàñÿãíåííÿ¢ ñó÷àñíàé ïåäàãîã³ê³ (àêöýíò + +
            +
          • Ñïðàåêòàâàíàÿ ç óë³êàì äàñÿãíåííÿ¢ ñó÷àñíàé ïåäàãîã³ê³ (àêöýíò íà ¢çàåìàäçåÿííå ïàì³æ âó÷íÿì³, àáìåðêàâàíí³);
          • -
          • Ïðûäàòíàÿ ÿê äëÿ íàâó÷àííÿ íà àäëåãëàñö³, òàê ³ äëÿ âî÷íàãà - (çàï³ñ íà êóðñû, ðàñêëàäû, æóðíàë)
          • -
          • Ïðîñòàÿ, ë¸ãêàÿ, ýôåêòû¢íàÿ, ñóìÿø÷àëüí³íàÿ ñ³ñòýìà;
          • -
          • Ïðîñòàå ëàäàâàííå íà ëþáóþ ïëàòôîðìó, øòî ÿêàÿ ïàäòðûìë³âàå PHP. Äëÿ ïðàöû íåàáõîäíà òîëüê³ àäíà áàçà äàäçåíûõ;
          • -
          • Ïî¢íàÿ àáñòðàêöûÿ áàçû äàäçåíûõ (ïàäòðûìë³âàå MySQL, PostgreSQL, MSSQL, Oracle, Interbase, +
          • Ïðûäàòíàÿ ÿê äëÿ íàâó÷àííÿ íà àäëåãëàñö³, òàê ³ äëÿ âî÷íàãà + (çàï³ñ íà êóðñû, ðà ñêëàäû, æóðíàë)
          • +
          • Ïðîñòû, “ë¸ãê³”, ýôåêòû¢íû, ñóìÿø÷àëüíû web-àáàëîíêà;
          • +
          • Ïðîñòàå ëàäàâàííå íà ëþáóþ ïëàòôîðìó, øòî ÿêàÿ ïàäòðûìë³âàå PHP. Äëÿ ïðàöû íåàáõîäíà òîëüê³ àäíà áàçà äàäçåíûõ;
          • +
          • Ïî¢íàÿ àáñòðàêöûÿ áàçû äàäçåíûõ (ïàäòðûìë³âàå MySQL, PostgreSQL, MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 ³ ODBC);
          • -
          • Çðîáëåíû àêöýíò íà àáàðîíå (øûôðàâàíûÿ ñåñ³³ SSL, à¢òýíòûô³êàöûÿ ç LDAP-, IMAP-, POP3-, NNTP- ñýðâåðà¢).
          • -
          -

          ʳðàâàííå ñàéòàì

          -
            -
          • Ìîäóëüíû, ë¸ãêà ìàäûô³êóåìû äûçàéí.
          • -
          • Äàëó÷àåìûÿ ìî¢íûÿ ïàêåòû äàçâàëÿþöü äàìàã÷ûñÿ ïî¢íàé - ëàêàë³çàöû³. Íà äàäçåíû ìîìàíò ïàäòðûìë³âàþööà 20 ìîâࢠ(óëó÷íà - áåëàðóñêàÿ).
          • -
          • Äîáðà äàêóìåíòàâàíû êîä ïàä GPL-ë³öýíç³ÿé - – ìîäóëüíû ³ ë¸ãêà ìàäûô³êóåööà.
          • -
          -

          ʳðàâàííå êàðûñòàëüí³êàì³

          -
            -
          • ̳í³ìàëüíàå ¢ìÿøàëüí³öòâà àäì³í³ñòðàòàðà ïðû çàõàâàíí³ âûñîêàé -áÿñïåê³;
          • -
          • Ïðîñòàÿ ³íòýãðàöûÿ ç ³ñíóþ÷ûì³ ñ³ñòýìàì³ à¢òýíòûô³êàöû³:
          • -
          • Íà àñíîâå ýëåêòðîííàé ïîøòû: ñòóäýíò ìîæà ñòâàðûöü ñâîé ðýã³ñòðàöûéíû çàï³ñ. Àäðàñ ýëåêòðîííàé ñêðûíê³ ñïðà¢äæûâàåööà ñïðà¢äæâàåööà ïðàç -ïàöâåðäæàííå
          • -
          • LDAP-ìåòàä: àêà¢íòû ìîãóöü ñïðà¢äæâàööà íà ñýðâåðû. Àäì³í³ñòðàòàð ìîæà äàâàöü óêàçàíí³, ÿê³ÿ ïàë³ âûêàðûñòî¢âàöü
          • -
          • IMAP,POP,NNTP: ðýã³ñòðàöûéíûÿ çàï³ñû ñïðà¢äæâàþööà íà ïàøòîâûì ñýðâåðû àáî ñýðâåðû íàâ³íà¢. Ïàäòðûìë³âàþööà SSL ³ TLS.
          • -
          • Çíåøíÿÿ áàçà äàäçåíûõ: ëþáàÿ áàçà äàäçåíûõ, øòî óòðûìë³âàå ÿê ì³í³ìóì 2 ïàë³, ìîæà âûêàðûñòî¢âàööà ¢ ÿêàñö³ çíåøíÿé -êðûí³öû à¢òýíòûô³êàöû³.
          • -
          • Íàñòà¢í³ê ìîæà äàäàöü "êîäàâàå ñëîâà" äëÿ ñâà³õ -êóðñà¢, êàá ïðàäóõ³ë³öü íàâåäâàííå êóðñࢠàñîáàì³ çâîíêó. ¨í ìîæà ïåðàäàâàöü -ñòóäýíòàì êëþ÷ ïàä÷àñ àñàá³ñòàé ðàçìîâû, ç äàïàìîãàé ýëåêòðîííàé ïîøòû ³ ä.ï.
          • -
          • Ñòóäýíòû ìîãóöü ðýäàãàâàöü ñâàå ðýã³ñòðàöûéíûÿ çàï³ñû (ôîòàçäûìê³, àñàá³ñòûÿ -äàäçåíûÿ, ðýêâ³ç³òû
          • -
          • Êîæíû êàðûñòàëüí³ê ìîæà ïàçíà÷ûöü ñâîé ëàêàëüíû ÷àñ, ïðû ãýòûì -óñå äàòû ¢ ñ³ñòýìå áóäóöü ïåðàâåäçåíû äëÿ ÿãî íà ìÿñöîâû ÷àñ (÷àñ ïàâåäàìëåííÿ¢ ó -ôîðóìàõ, òýðì³íû âûêàíàííÿ çàäàííÿ¢, ä.ï.).
          • -
          -

          ʳðàâàííå êóðñàì³

          -
            -
          • Ïàäòðûìë³âàþööà ðîçíûÿ ñòðóêòóðû êóðñà¢: "êàëÿíäàðíû", -"ôîðóì", "äðýâà"
          • -
          • Áàãàòû íàáîð ìîäóëÿ¢-ñêëàäí³êࢠäëÿ êóðñࢠ- Ôîðóì, Ðàáî÷û ñøûòàê, -Òýñò, Ðýñóðñ, Àïûòàííå, Àíêåòà, Ïðàêòûêóì.
          • -
          • Çìåíû, øòî àäáûë³ñÿ íà êóðñå ç ÷àñó àïîøíÿãà ¢âàõîäó -êàðûñòàëüí³êà ¢ ñ³ñòýìó, ìîãóöü àäëþñòðî¢âàööà íà ïåðøàé ñòàðîíöû êóðñà.
          • -
          • Àìàëü óñå òýêñòû, ÿê³ÿ íàá³ðàþööà, à òàêñàìà ðýñóðñû, ïàâåäàìëåíí³ íà ôîðóì, çàï³ñû ¢ ñøûòê³ ³ ä.ï. - ìîãóöü ðýäàãàâàööà ¢áóäàâàíûì -RichText-ðýäàêòàðàì
          • -
          • Óñå àäçíàê³ (ç Ôîðóìà¢, Ïðàöî¢íûõ ñøûòêà¢, Òýñòࢠ³ Çàäàííÿ¢) ìîãóöü -áûöü ñàáðàíûÿ íà àäíîé ñòàðîíöû (àáî ¢ âûãëÿäçå ôàéëà)
          • -
          • Äàñòóïíàÿ ïî¢íàÿ ñïðàâàçäà÷à ïà ¢âàõîäàõ êàðûñòàëüí³êà ¢ ñ³ñòýìó ³ -ðàáîöå, ç ãðàô³êàì³ ³ äýòàëÿì³ ïðàöû íàä ðîçíûì³ ìîäóëÿì³ (àïîøí³ ¢âàõîä, -êîëüê³ ðàçî¢ ïðà÷ûòàíà, ïàâåäàìëåíí³, çàï³ñû ¢ ñøûòêàõ)
          • -
          • Ýëåêòðîííûÿ ðàññûëê³ íàâ³íà¢, ôîðóìà¢, àäçíàê ³ êàìåíòàðî¢ íàñòà¢í³êà¢.
          • -
          -

          ìîäóëü Çàäàííå

          -
            -
          • Äëÿ Çàäàííÿ¢ ìîãóöü âûçíà÷àööà òýðì³íû çäà÷û, ìàêñ³ìàëüíàÿ - àäçíàêà ³ ôàðìàò àäêàçó;
          • -
          • Ñòóäýíòû ìîãóöü çàïàìïî¢âàöü àäêàçû íà çàäàííå (ó çàäàäçåíûì - ôàðìàöå) íà ñýðâåð, äçå à¢òàìàòû÷íà çàíàòî¢âàåööà ÷àñ àäêàçó (íàñòà¢í³ê - áà÷ûöü, ÿê³ÿ ðàáîòû çäàäçåíûÿ ïàñëÿ çàêàí÷ýííÿ òýðì³íó);
          • -
          • Êîæíàå çàäàííå ìîæíà âûëó÷ûöü ó ôîðóì, ó ÿê³ì áóäçå ¢äçåëüí³÷àöü óâåñü êëàñ (ñòàâ³öü àäçíàê³ ³ êàìåíòàâàöü);
          • -
          • Êàìåíòàðû íàñòà¢í³êà äàï³ñâàþööà ïàä çàäàííåì äëÿ êîæíàãà ñòóäýíòà (êîï³³ êàìåíòàðà äàñûëàþööà ýëåêòðîííàé ïîøòàé);
          • -
          • Íàñòà¢í³ê ìîæà äàçâîë³öü ñòóäýíòàì óíîñ³öü çìåíû ¢ ñâàå àäêàçû, äëÿ ïà¢òîðíàé àöýíê³.
          • -
          -

          ìîäóëü Àïûòàííå

          -
            -
          • Ìîæà áûöü ñêàðûñòàíû äëÿ òàãî, êàá ñòóäýíòû - ïðàãàëàñàâàë³ çà øòî-íåáóäçü, àáî äëÿ àòðûìàííÿ êàìåíòàðî¢ àä êîæíàãà - ñòóäýíòà;
          • -
          • Íàñòà¢í³ê áà÷ûöü âûí³ê³ ¢ âûãëÿäçå òàáë³öû âó÷àíü - âûáàð.
          • -
          -

          ìîäóëü Ôîðóì

          -
            -
          • Äàñòóïíûÿ ðîçíûÿ òûïû ôîðóìࢠ("òîëüê³ äëÿ íàñòà¢í³êà¢", "ôîðóì íàâ³íà¢", "àäêðûòû äëÿ ¢ñ³õ" ³ ³íø.)
          • -
          • Äà êîæíàãà ïàâåäàìëåííÿ äàëó÷àåööà ôîòàçäûìàê à¢òàðà
          • -
          • Êàðûñòàëüí³ê ìîæà âûá³ðàöü, ¢ ÿê³ì âûãëÿäçå ÿìó áóäóöü ïàêàçâàöü ïàâåäàìëåíí³ ôîðóìà («ïëîñê³»\«äðýâà», ñàðö³ðî¢êà
          • -
          • Êàðûñòàëüí³ê³ ìîãóöü ïàäï³ñàööà íà ³íäûâ³äóàëüíûÿ ôîðóìû (áóäóöü àòðûìë³âàöü ïàâåäàìëåíí³ ïðàç ýëåêòðîííóþ ïîøòó, àáî íàñòà¢í³ê³ ìîãóöü ó àáàâÿçêîâûì ïàðàäêó ïàäï³ñàöü íà ôîðóì óñ³õ
          • -
          • Íàñòà¢í³ê³ ìîãóöü çàáàðàí³öü êàðûñòàëüí³êàì àäêàçâàöü ó ôîðóìå -(ôîðóìû íàâ³íà¢).
          • -
          -

          ìîäóëü Ðàáî÷û ñøûòàê

          -
            -
          • Ðàáî÷û ñøûòàê - ãýòà ïðûâàòíû êàíòàêò ïàì³æ íàñòà¢í³êàì ³ âó÷íåì
          • -
          • Íàñòà¢í³ê ìîæà àöýíüâàöü êîæíû çàï³ñ ó ñøûòêó äëÿ ¢ñ¸é ãðóïû àäíà÷àñîâà ¢ çðó÷íàé web-àáàëîíöû íà àäíîé ñòàðîíöû
          • -
          • Êàìåíòàð íàñòà¢í³êà äàäàåööà äà çàï³ñó ¢ ñøûòêó, ³ ïàâåäàìëåííå ïðà ãýòà äàñûëàåööà ïðàç email.
          • -
          -

          ìîäóëü Òýñò

          -
            -
          • Íàñòà¢í³ê ìîæà ¢ web-àáàëîíöû ñòâàðûöü -áàçó äàäçåíûõ, ÿêàÿ ¢òðûìë³âàå ïûòàíí³ äëÿ øìàòðàçîâàãà âûêàðûñòàííÿ ¢ ðîçíûõ -òýñòàõ
          • -
          • Òýñòû à¢òàìàòû÷íà àöýíüâàþööà (³ ìîãóöü áûöü ïåðààöýíåíû ïðû çìÿíåíí³ "âàðòàñö³" ïûòàííÿ¢)
          • -
          • Òýñòû ìîãóöü ìåöü àáìåæàâàíí³ ïà ÷àñå
          • -
          • Íà âûáàð íàñòà¢í³êà, òýñòàâàííå ïà àäíûì ìàòýðûÿëå ìîãóöü ïðàâîäç³ööà íåêàëüê³ ðàçî¢, ìîãóöü áûöü ïàêàçàíûÿ êàìåíòàðû äà àäêàçࢠ³/àáî ïðàâ³ëüíûÿ àäêàçû.
          • -
          • Ïûòàíí³ ìîãóöü óòðûìë³âàöü HTML-òýêñò ³ êàðö³íê³.
          • -
          • Ïûòàíí³, øòî ïðàïàíî¢âàþöü âûáàð ç âàðûÿíòࢠàäêàçࢠìîãóöü ìåöü ÿê àäç³í ïðàâ³ëüíû àäêàç, òàê ³ íåêàëüê³.
          • -
          • Ïàäòðûìë³âàþööà ïûòàíí³ ç àäêàçàì ó âûãëÿäçå ñëîâà àáî ôðàçû
          • -
          • Ïàäòðûìë³âàþööà ïûòàíí³, ÿê³ÿ ìàþöü àëüòýðíàòûâó (äàêëàäíà/íåäàêëàäíà)
          • -
          -

          ìîäóëü Ðåñóðñ

          -
            -
          • Ïàäòðûìë³âàå ëþáû êàíòýíò ó ýëåêòðîííûì âûãëÿäçå;
          • -
          • Ôàéëû ìîãóöü áûöü àáî çàïàìïàâàíû âûêëàä÷ûêàì ³ çàõî¢âàööà íà -ñýðâåðû, àáî ñòâàðàööà "ïà õîäçå ï'åñû", âûêàðûñòî¢âàþ÷û web-ôîðìû -(òýêñò àáî HTML);
          • -
          • Òûïû ðýñóðñà¢:
          • -
          • HTML-òýêñò;
          • -
          • Ñïàñûëêà - ñïàñûëêà íà àðòûêóë ó æóðíàëå àáî êí³çå;
          • -
          • Çàïàìïàâàíû ôàéë - àäëþñòðî¢âàå ëþáû ôàéë, ÿê³ Âû çàïàìïàâàë³ äëÿ êóðñà;
          • -
          • Web-ñïàñûëêà - URL ñïàñûëêà;
          • -
          • Web-ñòàðîíêà - ïðàöóå àíàëàã³÷íà Web-ñïàñûëöû, çà âûêëþ÷ýííåì òàãî, øòî ðýñóðñ àä÷ûíÿåööà ¢ ôðýéìå (³íòýãðóåööà ç ñàéòàì);
          • -
          • Çíåøíÿÿ ïðàãðàìà, ÿêàÿ íà ¢âàõîäçå ïðûìàå ³íôàðìàöûþ àá êàðûñòàëüí³êó ³ êóðñå.
          • +
          • Çðîáëåíû àêöýíò íà àáàðîíå (øûôðàâàíûÿ ñåñ³³ SSL, à¢òýíòûô³êàöûÿ ç LDAP-, IMAP-, POP3-, NNTP- ñýðâåðà¢). +
          -

          ìîäóëü Àíêåòà

          -
            -
          • Óáóäàâàíûÿ àíêåòû ìîãóöü áûöü ñêàðûñòàíûÿ äëÿ òýñòàâàííÿ êëàñà¢;
          • -
          • Ñêëàäàåööà îíëàéíàâàÿ ñïðàâàçäà÷à ïà àíêåòàõ, ÿêàÿ ¢òðûìë³âàå ãðàô³ê³.
          • -
          • Äàäçåíûÿ ìîãóöü áûöü çïàìïàâàíû ¢ Excel-ôàðìàöå àáî ¢ âûãëÿäçå CSV-ôàéëà;
          • -
          • Àáàëîíêà àíêåò ïðàäóõ³ëÿå ÷àñòêîâàå çàïà¢íåííå;
          • -
          • Ïà çàïà¢íåíí³ àíêåòû ñòóäýíò ìîæà àòðûìàöü ïðûâåäçåíûÿ äà ñÿðýäíÿãà ïàêàç÷ûêà âûí³ê³ àãóëüíàãà àïûòàííÿ.
          • -
          -
        -

        Äàêóñåíòàöûÿ Moodle

        -

        Version: $Id$

        +

        ʳðàâàííå ñàéòàì

        + +
          +
        • Ìîäóëüíû, ë¸ãêà ìàäûô³êóåìû äûçàéí.
        • +
        • Äàëó÷àåìûÿ ìî¢íûÿ ïàêåòû äàçâàëÿþöü äàìàã÷ûñÿ ïî¢íàé + ëàêàë³çàöû³. Íà äàäçåíû ìîìàíò ïàäòðûìë³âàþööà 20 ìîâࢠ(óëó÷íà + áåëàðóñêàÿ).
        • +
        • Äîáðà äàêóìåíòàâàíû êîä ïàä GPL-ë³öýíç³ÿé + – ìîäóëüíû ³ ë¸ãêà ìàäûô³êóåööà.
        • +
        + +

        ʳðàâàííå êàðûñòàëüí³êàì³

        + +

                +̳í³ìàëüíàå ¢ìÿøàëüí³öòâà àäì³í³ñòðàòàðà ïðû çàõàâàíí³ âûñîêàé +áÿñïåê³;

        + +

                +Ïðîñòàÿ ³íòýãðàöûÿ ç ³ñíóþ÷ûì³ ñ³ñòýìàì³ à¢òýíòûô³êàöû³:

        + +

                 +íà àñíîâå e-mail: +ñòóäýíò ìîæà ñòâàðûöü ñâîé àêà¢íò. Email àäðàñ ñïðà¢äæâàåööà ïðàç +ïàöâåðäæàííå;

        + +

                 +LDAP-ìåòàä: àêà¢íòû ìîãóöü ñïðà¢äæâàööà íà LDAP +ñýðâåðû. Àäì³í³ñòðàòàð ìîæà äàâàöü óêàçàíí³, ÿê³ÿ ïàë³ âûêàðûñòî¢âàöü;

        + +

                 +IMAP, POP3, NNTP: àêà¢íòû ñïðà¢äæâàþööà íà ïàøòîâûì ñýðâåðû àáî ñýðâåðû íàâ³íà¢. Ïàäòðûìë³âàþööà SSL ³ TLS.

        + +

                 +Çíåøíÿÿ áàçà äàäçåíûõ: ëþáàÿ áàçà +äàäçåíûõ, øòî óòðûìë³âàå ÿê ì³í³ìóì 2 ïàë³, ìîæà âûêàðûñòî¢âàööà ¢ ÿêàñö³ çíåøíÿé +êðûí³öû à¢òýíòûô³êàöû³.

        + +

        + +

                +Íàñòà¢í³ê ìîæà äàäàöü "êîäàâàå ñëîâà" äëÿ ñâà³õ +êóðñà¢, êàá ïðàäóõ³ë³öü íàâåäâàííå êóðñࢠàñîáàì³ çâîíêó. ¨í ìîæà ïåðàäàâàöü +ñòóäýíòàì êëþ÷ ïàä÷àñ àñàá³ñòàé ðàçìîâû, ç äàïàìîãàé email, ä.ï.

        + +

                +Ñòóäýíòû ìîãóöü ðýäàãàâàöü ñâàå àêà¢íòû (ôîòàçäûìê³, àñàá³ñòûÿ +äàäçåíûÿ, ðýêâ³ç³òû);

        + +

                +Êîæíû êàðûñòàëüí³ê ìîæà ïàçíà÷ûöü ñâîé ëàêàëüíû ÷àñ, ïðû ãýòûì +óñå äàòû ¢ ñ³ñòýìå áóäóöü ïåðàâåäçåíû äëÿ ÿãî íà ìÿñöîâû ÷àñ (÷àñ ïàâåäàìëåííÿ¢ ó +ôîðóìàõ, òýðì³íû âûêàíàííÿ çàäàííÿ¢, ä.ï.).

        + +

        ʳðàâàííå êóðñàì³

        + +

                +Ïàäòðûìë³âàþööà ðîçíûÿ ñòðóêòóðû êóðñà¢: «êàëÿíäàðíû», +«ôîðóì», «äðýâà»;

        + +

                +Áàãàòû íàáîð ìîäóëÿ¢-ñêëàäí³êࢠäëÿ êóðñࢠ- Ôîðóì, Ñøûòàê, +Òýñò, Ðýñóðñ, Àïûòàííå, Àíêåòà, Õàòíÿå Çàäàííå;

        + +

                +Çìåíû, øòî àäáûë³ñÿ íà êóðñå ç ÷àñó àïîøíÿãà ¢âàõîäó +êàðûñòàëüí³êà ¢ ñ³ñòýìó, ìîãóöü àäëþñòðî¢âàööà íà ïåðøàé ñòàðîíöû êóðñà.

        + +

                +Àìàëü óñå òýêñòû, ÿê³ÿ íàá³ðàþööà, à òàêñàìà ðýñóðñû, ïàâåäàìëåíí³ íà ôîðóì, çàï³ñû ¢ ñøûòê³ ³ ä.ï. - ìîãóöü ðýäàãàâàööà ¢áóäàâàíûì WYSIWYG RichText-ðýäàêòàðàì;

        + +

                +Óñå àäçíàê³ (ç Ôîðóìà¢, Ïðàöî¢íûõ ñøûòêà¢, Òýñòࢠ³ Çàäàííÿ¢) ìîãóöü +áûöü ñàáðàíûÿ íà àäíîé ñòàðîíöû (àáî ¢ âûãëÿäçå ôàéëà);

        + +

                +Äàñòóïíàÿ ïî¢íàÿ ñïðàâàçäà÷à ïà ¢âàõîäàõ êàðûñòàëüí³êà ¢ ñ³ñòýìó ³ +ðàáîöå, ç ãðàô³êàì³ ³ äýòàëÿì³ ïðàöû íàä ðîçíûì³ ìîäóëÿì³ (àïîøí³ ¢âàõîä, +êîëüê³ ðàçî¢ ïðà÷ûòàíà, ïàâåäàìëåíí³, çàï³ñû ¢ ñøûòêàõ);

        + +

                +E-mail-ðàññûëê³ +íàâ³íà¢, ôîðóìà¢, àäçíàê ³ êàìåíòàðî¢ íàñòà¢í³êà¢.

        + +

        ìîäóëü Çàäàííå

        + +
          +
        • Äëÿ Çàäàííÿ¢ ìîãóöü âûçíà÷àööà òýðì³íû çäà÷û, ìàêñ³ìàëüíàÿ + àäçíàêà ³ ôàðìàò àäêàçó;
        • +
        • Ñòóäýíòû ìîãóöü çàïàìïî¢âàöü àäêàçû íà çàäàííå (ó çàäàäçåíûì + ôàðìàöå) íà ñýðâåð, äçå à¢òàìàòû÷íà çàíàòî¢âàåööà ÷àñ àäêàçó (íàñòà¢í³ê + áà÷ûöü, ÿê³ÿ ðàáîòû çäàäçåíûÿ ïàñëÿ çàêàí÷ýííÿ òýðì³íó);
        • +
        • Êîæíàå çàäàííå ìîæíà âûëó÷ûöü ó ôîðóì, ó ÿê³ì áóäçå ¢äçåëüí³÷àöü óâåñü êëàñ (ñòàâ³öü àäçíàê³ ³ êàìåíòàâàöü);
        • +
        • Êàìåíòàðû íàñòà¢í³êà äàï³ñâàþööà ïàä çàäàííåì äëÿ êîæíàãà + ñòóäýíòà (êîï³³ êàìåíòàðà äàñûëàþööà ýëåêòðîííàé ïîøòàé);
        • +
        • Íàñòà¢í³ê ìîæà äàçâîë³öü ñòóäýíòàì óíîñ³öü çìåíû ¢ ñâàå àäêàçû, äëÿ ïà¢òîðíàé àöýíê³.
        • +
        + +

        ìîäóëü Àïûòàííå

        + +
          +
        • Ìîæà áûöü ñêàðûñòàíû äëÿ òàãî, êàá ñòóäýíòû + ïðàãàëàñàâàë³ çà øòî-íåáóäçü, àáî äëÿ àòðûìàííÿ êàìåíòàðî¢ àä êîæíàãà + ñòóäýíòà;
        • +
        • Íàñòà¢í³ê áà÷ûöü âûí³ê³ ¢ âûãëÿäçå òàáë³öû âó÷àíü - âûáàð.
        • +
        + +

        ìîäóëü Ôîðóì

        + +

                +Äàñòóïíûÿ ðîçíûÿ òûïû ôîðóìࢠ("òîëüê³ äëÿ íàñòà¢í³êà¢", +"ôîðóì íàâ³íà¢", "àäêðûòû äëÿ ¢ñ³õ" ³ ³íø.);

        + +

                +Äà êîæíàãà ïàâåäàìëåííÿ äàëó÷àåööà ôîòàçäûìàê à¢òàðà;

        + +

                +Êàðûñòàëüí³ê ìîæà âûá³ðàöü, ¢ ÿê³ì âûãëÿäçå ÿìó áóäóöü ïàêàçâàöü +ïàâåäàìëåíí³ ôîðóìà («ïëîñê³»\«äðýâà», ñàðö³ðî¢êà);

        + +

                +Êàðûñòàëüí³ê³ ìîãóöü ïàäï³ñàööà íà ³íäûâ³äóàëüíûÿ ôîðóìû (áóäóöü +àòðûìë³âàöü ïàâåäàìëåíí³ ïðàç email) àáî íàñòà¢í³ê³ ìîãóöü ó +àáàâÿçêîâûì ïàðàäêó ïàäï³ñàöü íà ôîðóì óñ³õ;

        + +

                +Íàñòà¢í³ê³ ìîãóöü çàáàðàí³öü êàðûñòàëüí³êàì àäêàçâàöü ó ôîðóìå +(ôîðóìû íàâ³íà¢).

        + +

        ìîäóëü Ñøûòàê

        + +

                +Ñøûòàê - ãýòà ïðûâàòíû êàíòàêò ïàì³æ íàñòà¢í³êàì ³ âó÷íåì;

        + +

                +Íàñòà¢í³ê ìîæà àöýíüâàöü êîæíû çàï³ñ ó ñøûòêó äëÿ ¢ñ¸é ãðóïû +àäíà÷àñîâà ¢ çðó÷íàé web-àáàëîíöû íà àäíîé +ñòàðîíöû;

        + +

                +Êàìåíòàð íàñòà¢í³êà äàäàåööà äà çàï³ñó ¢ ñøûòêó, ³ ïàâåäàìëåííå +ïðà ãýòà äàñûëàåööà ïðàç email.

        + +

        ìîäóëü Òýñò

        + +

                +Íàñòà¢í³ê ìîæà ¢ web-àáàëîíöû ñòâàðûöü +áàçó äàäçåíûõ, ÿêàÿ ¢òðûìë³âàå ïûòàíí³ äëÿ øìàòðàçîâàãà âûêàðûñòàííÿ ¢ ðîçíûõ +òýñòàõ;

        + +

                +Òýñòû à¢òàìàòû÷íà àöýíüâàþööà (³ ìîãóöü áûöü ïåðààöýíåíû ïðû +çìÿíåíí³ «âàðòàñö³» ïûòàííÿ¢);

        + +

                +Òýñòû ìîãóöü ìåöü àáìåæàâàíí³ ïà ÷àñå;

        + +

                +Íà âûáàð íàñòà¢í³êà, òýñòàâàííå ïà àäíûì ìàòýðûÿëå ìîãóöü ïðàâîäç³ööà íåêàëüê³ ðàçî¢, ìîãóöü áûöü ïàêàçàíûÿ êàìåíòàðû äà àäêàçࢠ³/àáî ïðàâ³ëüíûÿ àäêàçû.

        + +

                +Ïûòàíí³ ìîãóöü óòðûìë³âàöü HTML-òýêñò ³ +êàðö³íê³.

        + +

                +Ïûòàíí³, øòî ïðàïàíî¢âàþöü âûáàð ç âàðûÿíòࢠàäêàçࢠìîãóöü ìåöü +ÿê àäç³í ïðàâ³ëüíû àäêàç, òàê ³ íåêàëüê³.

        + +

                +Ïàäòðûìë³âàþööà ïûòàíí³ ç àäêàçàì ó âûãëÿäçå ñëîâà àáî ôðàçû

        + +

                +Ïàäòðûìë³âàþööà ïûòàíí³, ÿê³ÿ ìàþöü àëüòýðíàòûâó (äàêëàäíà/íåäàêëàäíà)

        + +

        ìîäóëü Ðåñóðñ

        + +

                +Ïàäòðûìë³âàå ëþáû êàíòýíò ó ýëåêòðîííûì âûãëÿäçå;

        + +

                +Ôàéëû ìîãóöü áûöü àáî çàïàìïàâàíû âûêëàä÷ûêàì ³ çàõî¢âàööà íà +ñýðâåðû, àáî ñòâàðàööà "«ïà õîäçå ï'åñû»", âûêàðûñòî¢âàþ÷û web-ôîðìû +(òýêñò àáî HTML);

        + +

                +Òûïû ðýñóðñà¢:

        + +

        o        +HTML-òýêñò;

        + +

        o        +Ñïàñûëêà - ñïàñûëêà íà àðòûêóë ó +æóðíàëå àáî êí³çå;

        + +

        o        +Çàïàìïàâàíû ôàéë - àäëþñòðî¢âàå ëþáû +ôàéë, ÿê³ Âû çàïàìïàâàë³ äëÿ êóðñà;

        + +

        o        +Web-ñïàñûëêà - URL ñïàñûëêà;

        + +

        o        +Web-ñòàðîíêà - ïðàöóå àíàëàã³÷íà +Web-ñïàñûëöû, çà âûêëþ÷ýííåì òàãî, øòî ðýñóðñ àä÷ûíÿåööà ¢ ôðýéìå +(³íòýãðóåööà ç ñàéòàì);

        + +

        o       +Çíåøíÿÿ ïðàãðàìà, ÿêàÿ íà ¢âàõîäçå ïðûìàå +³íôàðìàöûþ àá êàðûñòàëüí³êó ³ êóðñå.

        + +

        ìîäóëü Àíêåòà

        + +

                +Óáóäàâàíûÿ àíêåòû COLLES, ATTLS ìîãóöü áûöü ñêàðûñòàíûÿ äëÿ òýñòàâàííÿ êëàñà¢;

        + +

                +Ñêëàäàåööà îíëàéíàâàÿ ñïðàâàçäà÷à ïà àíêåòàõ, ÿêàÿ ¢òðûìë³âàå ãðàô³ê³. +Äàäçåíûÿ ìîãóöü áûöü çïàìïàâàíû ¢ Excel-ôàðìàöå àáî ¢ âûãëÿäçå CSV-ôàéëà;

        + +

                +Àáàëîíêà àíêåò ïðàäóõ³ëÿå ÷àñòêîâàå çàïà¢íåííå;

        + +

                +Ïà çàïà¢íåíí³ àíêåòû ñòóäýíò ìîæà àòðûìàöü ïðûâåäçåíûÿ äà ñÿðýäíÿãà ïàêàç÷ûêà âûí³ê³ àãóëüíàãà àïûòàííÿ.

        + +

        Ó ñ³ñòýìó ¢áóäàâàíûÿ äàäàòêîâûÿ ìîäóë³:

        + +

         

        + +

        ADOdb - lib/adodb

        + +

        Á³áë³ÿòýêà äëÿ àáñòðàêöû³ áàçû äàäçåíûõ (äëÿ ïàäòðûìê³ áàç äàäçåíûõ MySQL, PostgreSQL, MSSQL, Oracle, Interbase, +Foxpro, Access, ADO, Sybase, DB2 and ODBC).

        + +

        Version: 2.50

        + +

        Copyright © 2000, 2001 John Lim (jlim@natsoft.com.my)

        + +

        License: Dual LGPL and BSD-style

        + +

        URL: {http://php.weblogs.com/adodb}

        + +

         

        + +

        Graph Class - lib/graphlib.php

        + +

        Á³áë³ÿòýêà äëÿ ìàëÿâàííÿ ãðàô³êà¢.

        + +

        Version: 1.6.3 (with modifications)

        + +

        Copyright © 2000 Herman Veluwenkamp, +hermanV@mindless.com

        + +

        License: LGPL

        + +

         

        + +

        IP-Atlas - lib/ipatlas

        + +

        PHP-ñêðûïò, ÿê³ ïàêàçâàå ïàëàæýííå IP-àäðýñó íà êàðöå.

        + +

        Version: 1.0 (with modifications)

        + +

        Copyright © 2002 Ivan Kozik

        + +

        License: GNU GPL

        + +

        URL: {http://www.xpenguin.com/ip-atlas.php}

        + +

         

        + +

        PHP mailer - lib/class.phpmailer.php

        + +

        Êëàñ äëÿ àäïðà¢ê³ email, êàðûñòàþ÷ûñÿ +Sendmail, PHP mail(), àáî SMTP. Ìåòàäû, ÿê³ÿ áàçóþööà +íà ñòàíäàðòíûõ AspEmail(tm) +êëàñàõ.

        + +

        Version 1.60, Created 03/30/2002

        + +

        Copyright © 2001 Brent R. Matzelle +<bmatzelle@yahoo.com>

        + +

        License: LGPL

        + +

        URL: {http://phpmailer.sourceforge.net}

        + +

         

        + +

        PHP Simple Excel File Generator - lib/psxlsgen.php

        + +

        Êëàñ äëÿ ãåíåðàöû³ ïðîñòûõ MS Excel ôàéëࢠ(xls) +ç äàïàìîãàé PHP.

        + +

        Version: 0.3b

        + +

        Copyright © 2001 Erol Ozcan +<eozcan@superonline.com>

        + +

        License: GNU LGPL

        + +

        URL: {http://psxlsgen.sourceforge.net}

        + +

         

        + +

        Richtext Editor - lib/rte

        + +

        HTML-ðýäàêòàð, óáóäàâàíû ¢ web-áðà¢çýð.

        + +

        Version: 0.30 beta 1 (plus modifications)

        + +

        Copyright © 2001 Ramesys (Contracting +Services) Limited <Austin.France@Ramesys.com> License: GNU LGPL

        + +

        URL: {http://richtext.sourceforge.net}

        + +

         

        + +

        SMTP class - lib/class.smtp.php

        + +

        Êëàñ äëÿ çëó÷ýííÿ ³ êàìóí³êàâàííÿ ç ëþáûì SMTP- ñýðâåðàì.

        + +

        It implements all the SMTP functions +defined in RFC821 except TURN.

        + +

        Version: 03/26/2001

        + +

        Copyright © 2001 Chris Ryan +<chris@greatbridge.com>

        + +

         

        + +
        + + \ No newline at end of file diff --git a/lang/be/docs/files.php b/lang/be/docs/files.php index bd57734c4c6..58ed72b53fc 100644 --- a/lang/be/docs/files.php +++ b/lang/be/docs/files.php @@ -1,32 +1,19 @@ diff --git a/lang/be/docs/future.html b/lang/be/docs/future.html deleted file mode 100644 index c7abdd83bbe..00000000000 --- a/lang/be/docs/future.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - Moodle Docs: Future - - - - - -

        Ïëàíû íà áóäó÷ûíþ

        -
        -

        ×ûì ñòàëåé ðîá³ööà Moodle, òûì áîëüøû ¢ïëû¢ íà ÿãîíàå ðàçâ³öö¸ àêàçâàþöü ÿãî ãðàìàäñê³ÿ ðàñïðàöî¢í³ê³ ³ êàðûñòàëüí³ê³. Äûíàì³÷íà çìÿíÿåìóþ áàçó äàäçåíûõ ³ ³íôàðìàöûþ ïðà ïðàïàíàâàíûÿ ¢äàñêàíàëåíí³ ³ ³õ óëàñö³âàñö³ ìîæíà çíàéñö³ íà moodle.org/bugs. - Âàøûÿ óí¸ñàê³ ó ôîðìå ïðàïàíîâà¢, êîäà¢, çâàðîòíàé ñóâÿç³ ³ ðàñïà¢ñþäó çâåñòàê óñÿëÿê â³òàåööà. Çàç³ðí³öå ¢ ²íñòðóêöûþ êàðûñòàëüí³êà ³ ôîðóìû ðàñïðàöî¢í³êࢠäàäàòêîâàé ³íôàðìàöûÿé. Ìîæíà òàêñàìà çàïëàö³öü, êàá àòðûìàöü íåêàòîðûÿ ðàñïðàöî¢ê³ õóò÷ýé. Ãëÿäç³öå ³íôàðìàöûþ íà moodle.com/development.

        -

        Âîñü êàðîòê³ íàðûñ íà áóäó÷ûíþ, õàöÿ ¸í çà¢ñ¸äû ìîæà çìÿí³ööà ¢ çàëåæíàñö³ àä æàäàííÿ ôóíäàòàðࢠàáî ðàñïðàöî¢í³êà¢.

        -

        Âåðñ³ÿ 1.5. Ëþòû 2005.

        -
        -

        Ìýòà äàäçåíàé âåðñ³³ – çðàá³öü Moodle öàëêàì ñïàëó÷àëüíûì ç âàæíûì³ ñòàíäàðòàì³ äàñòóïó äà ²íòýðíýòó, òàê³ì³ ÿê WAI (W3C), SENDA (UK) ³ Section 508 (US).

        -

        Êîä àäëþñòðàâàííÿ (çíåøíÿãà âûãëÿäó) áóäçå ïðûñòàñàâàíû äà XHTML Transitional 1.0., òàêñàìà ¢äàñêàíàëåíà ³ ïàøûðàíà CSS, òàê øòî äûçàéíåð çìîæà ëåïø êàíòðàëÿâàöü âûãëÿä ñàéòó.

        -

        Òàêñàìà ïðàïàíóåì äî¢ã³ ñï³ñ íîâûõ óëàñö³âàñöÿ¢:

        -
          -
        • ²ìãíåííàÿ äàñûëêà ïàâåäàìëåííÿ¢ äëÿ ïðàìîé êàìóí³êàöû³.
        • -
        • Âÿë³ê³ÿ ¢äàñêàíàëåíí³ äëÿ ìîäóëþ Òýñòà¢, óêëþ÷íà: òýñòû íà ñòàðîíêàõ ç ïý¢íàé êîëüêàñöþ ïûòàííÿ¢ íà ñòàðîíêó, óäàñêàíàëåíû ³íòýðôåéñ äëÿ ñòâàðýííÿ òýñòà¢, ³åðàðõ³ÿ ïûòàííÿ¢.
        • -
        • Íîâû ôàðìàò áëîêà¢, ÿê³ äàçâàëÿå êàðûñòàööà âÿë³êàé êîëüêàñöþ êîï³ÿ¢ áëîêࢠ³ ³õ ëåïøàé êàíô³ãóðàöûÿé (ñòàðûÿ ïðû¢íåñåíûÿ áëîê³ ïàòðàáóþöü àêòóàë³çàöû³ (àïãðýéäó), ãë. äàêóìåíòû ¢ äûðýêòîðû³ áëîêà¢).
        • -
        • Ðàñøûðàíàÿ LDAP ³íòýãðàöûÿ. Çàðàç LDAP ìîæà êàíòðàëÿâàöü ñòâàðýííå êóðñà¢, ðàñêëàäû ãðóïà¢, ñ³íõðàí³çàöûþ êàðûñòàëüí³êà ³ ³íø.
        • -
        • Ïý¢íûÿ ïàë³ êàðûñòàëüí³êà ìîãóöü áûöü çàáëàêàâàíûÿ àäì³í³ñòðàòàðàì.
        • -
        • Óäàñêàíàëåíàÿ äàçàïàìïî¢êà ç ïàäòðûìêàé à¢òàìàòû÷íàãà ñêàíàâàííÿ íà â³ðóñû íîâûõ äàêóìåíòà¢, ó ÿê³õ âûêàðûñòàíû ClamAV.
        • -
        • Ñïðîø÷àíû ³íòýðôåéñ äëÿ ìîäóëÿ¢ Ïðàêòûêóìû ³ Íàâó÷àëüíàÿ ðàáîòà.
        • -
        • Íîâû ô³ëüòð Tidy äëÿ êàíâåðòàöû³ ¢ñ³õ òýêñòà¢, ÿê³ÿ ïàäòðûìë³âàþööà êàðûñòàëüí³êàì³ ¢ XHTML.
        • -
        • Ìîäóëü ÐÀÌ-à¢òýíòûô³êàöû³.
        • -
        • Ñåñ³³ ìîãóöü áûöü ðàçìåø÷àíû ¢ áàçå äàäçåíûõ (êàðûñíà äëÿ êëàñòýðࢠMoodle).
        • -
        • Ïàãàäíåíí³ äëÿ êàðûñòàëüí³êࢠïà âÿäçåíí³ ïàë³òûê³ ñàéòó.
        • -
        • Øìàò ³íøûõ óäàñêàíàëåííÿ¢ ³ ïàïðàâàê.
        • -
        -
        -

        Âåðñ³ÿ 1. 6. - ñÿðýäç³íà 2005.

        -
        -

        Øìàòë³ê³ÿ ñòàðîíê³ ãýòàé âåðñ³³ áóäóöü ïðûäàòíûì³ äëÿ íàñòðîéê³ ïðàç âûêàðûñòàííå XHTML øàáëîíà¢.

        -

        Ïàäòðûìêà ëîãࢠêàðûñòàëüí³êࢠ(çàìåíà Ðàáî÷ûõ ñøûòêà¢).

        -

        Ñòàðîíêà Ìîé Moodle.

        -

        Óäàñêàíàëåíí³ ¢ ñòðóêòóðûçàöû³ ³ ïàäòðûìöû ïëûí³ êóðñà¢.

        -
        -

        Âåðñ³ÿ 2.0. - ïàçíåé ó 2005 ã.

        -
        -

        Ãýòà áóéíàÿ âåðñ³ÿ áóäçå ¢òðûìë³âàöü âåëüì³ ö³êàâûÿ ðàñïðàöî¢ê³, ÿê³ÿ äàçâîëÿöü çðàá³öü Moodle áîëüø àäàïòàâàíûì äà ñåö³âà ç àêöýíòàì íà ñóìåñíóþ ïðàöó.

        -
        -
        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        - - \ No newline at end of file diff --git a/lang/be/docs/install.html b/lang/be/docs/install.html index c119ca8b2dd..92937031e42 100644 --- a/lang/be/docs/install.html +++ b/lang/be/docs/install.html @@ -1,20 +1,23 @@ - - - Moodle Docs: Basic Installation - - - - -

        Ëàäàâàííå Moodle

        -

        Íå ïàí³êóéöå!

        + +

        Ëàäàâàííå Moodle

        Ãýòû äàâåäí³ê ïàäàå ñïîñàá ëàäàâàííÿ ïëàòôîðìû Moodle. Íåêàòîðûÿ àñïåêòû ïðàöýñó ëàäàâàííÿ àï³ñàíû âåëüì³ ïàäðàáÿçíà äçåëÿ òàãî, êàá çâÿðíóöü óâàãó íà ìíîñòâà äðîáíûõ àäðîçíåííÿ¢ ïàì³æ ðîçíûì³ ñåöåâûì³ ñýðâåðàì³. Ç ãýòàé ïðû÷ûíû äàäçåíû äàêóìåíò ìîæà ïàäàööà äî¢ã³ì ³ ñêëàäàíûì. Íÿõàé ãýòà âàñ íå ïàëîõàå - Moodle ìîæíà çàëàäàâàöü çà íåêàëüê³ õâ³ë³íà¢!

        Ïðûñâÿö³ àäíàê êðûõó ÷àñó, êàá äàêëàäíà âûâó÷ûöü äàêóìåíò – çàòîå òû çýêàíîì³ø ÷àñ ïàñëÿ.

        Çìåñò:

        @@ -49,19 +52,23 @@

        Ó áîëüøàñö³ âûïàäêࢠãýòûÿ ïàòðàáàâàíí³ âûêîíâàþööà ïà-çìà¢÷àíí³. Àäíàê, êàë³ ãýòà íå òàê, çàïûòàé ó êàìïàí³³, ÿêàÿ äàå òàáå õîñòûíã ÷àìó, à òàêñàìà ïàäóìàé ïðà ìàã÷ûìàñöü ïåðàíåñö³ ñàéò íà ³íøû ñýðâåð.

        Êàë³ çàõî÷àø çàïóñö³öü ïëàòôîðìó Moodle íà ñâà³ì óëàñíûì êàìïóòàðû, àëå ãýòà ïàäàñöà òàáå êðûõó ñêëàäàíûì, òî ïðà÷ûòàé äàâåäí³ê:Ëàäàâàííå - Apache, MySQL i PHP. Òàì êðîê ïà êðîêó àï³ñàíû ïðàöýñ ³õ ëàäàâàííÿ íà íàéáîëüø ïàïóëÿðíûõ ïëàòôîðìàõ.

        + Apache, MySQL i PHP. Òàì êðîê ïà êðîêó àï³ñàíû ïðàöýñ ³õ ëàäàâàííÿ íà íàéáîëüø ïàïóëÿðíûõ ïëàòôîðìàõ.

        +

         

        2. Ïåðàíîñ

        Ïëàòôîðìó Moodle ìîæíà çäàáûöü äâóìà ñïîñàáàì³ : ßê ñêàìïðýñàâàíû ïàêåò, àáî ÿê CVS. Ãýòà äðàáíþòêà àï³ñàíà íà ñòàðîíöû, ïðûñâå÷àíàé çàïàìïî¢öû : http://moodle.org/download/

        +

        Ïàñëÿ çàïàìïî¢ê³ ³ ðàñïàêî¢ê³ ñêàìïðýñàâàíàãà ôàéëó, àáî ïàñëÿ ïàðà¢íàííÿ ïàêåòࢠCVS, áóäçåø ìåöü êàòàëîã ïàä íàçâàé "moodle", óëó÷íà ôàéëû ³ êàòàëîã³ Moodle.

        -

        Ìîæàø àáî ïåðàï³ñàöü óâåñü êàòàëîã íà ñýðâåð, à êàë³ çðîá³ø ãýòà, òî ïëàòôîðìà Moodle ñòàíå äàñòóïíàé ïà àäðàñå http://òâîéñýðâåð.com/moodle, àáî ìîæàø ïåðàï³ñàöü çìåñò êàòàëîãó moodle íåïàñðýäíà íà ãàëî¢íû êàòàëîã äàêóìåíòࢠíà òâà³ì ñýðâåðû, ³ ¢ ãýòûì âûïàäêó Moodle áóäçå äàñòóïíû ïà àäðàñå http://òâîéñýðâåð.com

        + +

        Ìîæàø àáî ïåðàï³ñàöü óâåñü êàòàëîã íà ñýðâåð, à êàë³ çðîá³ø ãýòà, òî ïëàòôîðìà Moodle ñòàíå äàñòóïíàé ïà àäðàñå http://òâîéñýðâåð.com/moodle, àáî ìîæàø ïåðàï³ñàöü çìåñò êàòàëîãó moodle íåïàñðýäíà íà ãàëî¢íû êàòàëîã äàêóìåíòࢠíà òâà³ì ñýðâåðû, ³ ¢ ãýòûì âûïàäêó Moodle áóäçå äàñòóïíû ïà àäðàñå http://òâîéñýðâåð.com

        +

         

        3. Ñòðóêòóðà ñýðâ³ñó

        ͳæýé äàåööà êàðîòêàå àï³ñàííå çìåñòó äàâåäí³êà Moodle, êàá äàïàìàã÷û òàáå àðûåíòàâàööà :

        -

        config.php - àäç³íû ôàéë, ÿê³ òû ïàâ³íåí çìàäûô³êàâàöü, ïåðø ÷ûì ïà÷íåø ïðàöó ç Moodle
        - version.php - àêðýñë³âàå àêòóàëüíóþ âåðñ³þ êîäó Moodle
        +

        config.php - àäç³íû ôàéë, ÿê³ òû ïàâ³íåí çìàäûô³êàâàöü, ïåðø ÷ûì ïà÷íåø ïðàöó ç Moodle
        + version.php - àêðýñë³âàå àêòóàëüíóþ âåðñ³þ êîäó Moodle
        index.php - ãàëî¢íàÿ ñòàðîíêà ñýðâ³ñó

        • admin/ - êîä, ÿê³ äàçâàëÿå ¢ïðà¢ëÿöü óñ³ì ñýðâ³ñàì
        • @@ -77,18 +84,24 @@
        • theme/ - òýìû, ÿê³ÿ ñëóæàöü äëÿ çìåíû âîíêàâàãà àôàðìëåííÿ òâàéãî ñýðâ³ñó
        • user/ - êîä, ÿê³ ñëóæûöü äëÿ çìåíû ³ àáñëóãî¢âàííÿ êàðûñòàëüí³êà¢
        +

         

        4. Ñòâàðýííå êàòàëîãó äàäçåíûõ

        Ïëàòôîðìà Moodle ïàòðàáóå òàêñàìà ïý¢íàé ïðàñòîðû íà òâà³ì öâ¸ðäûì äûñêó, êàá çàõî¢âàöü ïåðàñëàíûÿ ïàêåòû, òàê³ÿ ÿê äàêóìåíòû êóðñࢠàáî çäûìê³ êàðûñòàëüí³êà¢.

        +

        Ñòâàðû äçå-íåáóäçü êàòàëîã, ÿê³ òû õàöå¢ áû âûêàðûñòàöü ó ãýòûõ ìýòàõ. Ç ïàç³öû³ áÿñïåê³ áûëî á íàéëåïø, êàá ãýòà áû¢ êàòàëîã, ÿê³ íÿ áóäçå äàñòóïíûì íåïàñðýäíà ïðàç ²íòýðíýò. Íàéëåïø ÿãî ðàçìÿñö³öü ïðîñòà ïà-çà ñåöåâûì êàòàëîãàì. Êàë³ íå çðîá³ø ãýòàãà, òî ñòâàðû ¢ êàòàëîãó äàäçåíûõ Moodle ôàéë ç íàçâàé .htaccess, óêëþ÷àþ÷û í³æýé ïàäàäçåíóþ ë³í³þ :

        deny from all
        -

        Ïåðàêàíàéñÿ, øòî ïëàòôîðìà Moodle çäîëüíàÿ çàï³ñâàöü ïåðàñëàíûÿ ôàéëû ¢ ãýòûì êàòàëîãó. Ïðàâåð, ö³ ìàå ïðàãðàìíàå çàáåñïÿ÷ýííå ñýðâåðó (ïð. Apache) ìàå ïðàâû çàï³ñó ¢ ãýòûì êàòàëîãó. Ó ñ³ñòýìå Un³x ãýòà àçíà÷àå ïðàãðàìàâàííå ¢ëàäàëüí³êà ãýòàãà êàòàëîãà íàïðûêëàä, "nobody" àáî "apache"

        -

        Íà áîëüøàñö³ ñýðâåðàõ àãóëüíàãà êàðûñòàííÿ õóò÷ýé çà ¢ñ¸ áóäçåø çìóøàíû çàáàðàí³öü äîñòóï äà ïàêåòࢠêàðûñòàëüí³êàì ç òâà¸é "ãðóïû" (êàá íå äàöü ìàã÷ûìàñö³ àñòàòí³ì êë³åíòàì ãýòàãà ñýðâåðó äîñòóïó äà òâà³õ ïàêåòà¢), àëå äàé ìàã÷ûìàñöü ìåöü óñå ïðàâû çàï³ñó/ïðà÷ûòàííÿ ¢ñ³ì àñòàòí³ì (êàá ñýðâåð ìîã ìåöü äîñòóï äà òâà³õ ôàéëà¢). Êàë³ ¢çí³êíóöü íåéê³ÿ ïðàáëåìû ñà ñôåðû áÿñïåê³ äàäçåíûõ, òî ¢çãàäí³ ãýòà ç àäì³í³ñòðàòàðàì ñýðâåðó.

        + +

        Ïåðàêàíàéñÿ, øòî ïëàòôîðìà Moodle çäîëüíàÿ çàï³ñâàöü ïåðàñëàíûÿ ôàéëû ¢ ãýòûì êàòàëîãó. Ïðàâåð, ö³ ìàå ïðàãðàìíàå çàáåñïÿ÷ýííå ñýðâåðó (ïð. Apache) ìàå ïðàâû çàï³ñó ¢ ãýòûì êàòàëîãó. Ó ñ³ñòýìå Un³x ãýòà àçíà÷àå ïðàãðàìàâàííå ¢ëàäàëüí³êà ãýòàãà êàòàëîãà íàïðûêëàä, "nobody" àáî "apache"

        + +

        Íà áîëüøàñö³ ñýðâåðàõ àãóëüíàãà êàðûñòàííÿ õóò÷ýé çà ¢ñ¸ áóäçåø çìóøàíû çàáàðàí³öü äîñòóï äà ïàêåòࢠêàðûñòàëüí³êàì ç òâà¸é "ãðóïû" (êàá íå äàöü ìàã÷ûìàñö³ àñòàòí³ì êë³åíòàì ãýòàãà ñýðâåðó äîñòóïó äà òâà³õ ïàêåòà¢), àëå äàé ìàã÷ûìàñöü ìåöü óñå ïðàâû çàï³ñó/ïðà÷ûòàííÿ ¢ñ³ì àñòàòí³ì (êàá ñýðâåð ìîã ìåöü äîñòóï äà òâà³õ ôàéëà¢). Êàë³ ¢çí³êíóöü íåéê³ÿ ïðàáëåìû ñà ñôåðû áÿñïåê³ äàäçåíûõ, òî ¢çãàäí³ ãýòà ç àäì³í³ñòðàòàðàì ñýðâåðó.

        +
        +

         

        5. Ñòâàðýííå áàçû äàäçåíûõ

        Ìóñ³ø ñòâàðûöü ïóñòóþ áàçó äàäçåíûõ (ïð. "moodle") ó òâà¸é ñ³ñòýìå áàç äàäçåíûõ, à òàêñàìà ñïåöûÿëüíàãà êàðûñòàëüí³êà (íàïð."moodleuser"), ÿê³ áóäçå ìåöü äîñòóï äà ãýòàé áàçû äàäçåíûõ (³ òîëüê³ äà ÿå). Ìîæàø óæûâàöü ëàã³í "root", àäíàê ãýòà íåïàæàäàíà ç ïàç³öû³ áÿñïåê³ : êàë³ á õàêåð äàâåäà¢ñÿ ïðà òâîé ïàðîëü, òî íå òîëüê³ àäíà áàçà äàäçåíûõ àïûíåööà ¢ íåáÿñïåöû, àëå òàêñàìà ¢ñÿ ñ³ñòýìà áàç äàäçåíûõ. @@ -112,6 +125,7 @@

        (Êàë³ òû êàðûñòàåøñÿ MySQL, òàäû ðàþ phpMyAdmin äëÿ ¢ïðà¢ëåííÿ òâà³ì³ áàçàì³ äàäçåíûõ – òàäû ìîæàø óñå àï³ñàíûÿ âûøýé íàñòðîéê³ ¢âåñö³ ïðàç ñåòêàâû ³íòýðôýéñ).

        Ïà÷ûíàþ÷û ç âåðñ³³ 1.0.8 ïëàòôîðìà Moodle àáñëóãî¢âàå ïðýô³êñû òàáë³öà¢, òàìó ìîæà áÿñïå÷íà ïàäçÿëÿöü áàçó äàäçåíûõ ðàçàì ç òàáë³öàì³ ³íøûõ àïë³êàöûé.

        +

         

        6. Ïðàâåðêà ¢ñòàíîâàê ñýðâåðó

        Ïåðø çà ¢ñ¸ ïåðàêàíàéñÿ, øòî òâîé ñýðâåð ìàå òàêóþ êàíô³ãóðàöûþ, øòî ìîæà ¢æûâàöü ïàêåò ³ndex.php, ÿê ìàã÷ûìóþ ñòàðîíêó (âåðàãîäíà ïîáà÷ ç ³ndex.html, default.htm ³tp.).

        @@ -125,8 +139,10 @@
        AcceptPathInfo on 
        +

        Ïà-òðýöÿå, ïëàòôîðìà Moodle ïàòðàáóå, íåêàëüê³õ óñòàíîâàê PHP, äëÿ òàãî êàá äçåéí³÷àöü ïðàâ³ëüíà. Íà áîëüøàñö³ ñýðâåðࢠãýòûÿ ¢ñòàíî¢ê³ áóäóöü óñòàëÿâàíûÿ ïà çìà¢÷àíí³. Íåêàòîðûÿ ñýðâåðû PHP (³ íåêàòîðûÿ íàéáîëüø íîâûÿ âåðñ³³ PHP) ìîãóöü ìåöü ³íøûÿ ¢ñòàíî¢ê³. ßíû àï³ñàíû ó ôàéëå êàíô³ãóðàöû³ PHP (çâû÷àéíà ãýòà php.³n³)

        +
        magic_quotes_gpc = 1
         magic_quotes_runtime = 0
         file_uploads = 1
        @@ -136,7 +152,9 @@ session.bug_compat_warn = 0
         

        Êàë³ òû íå ìàåø äîñòóïó äà httpd.conf àáî php.³n³ íà òâà³ì ñýðâåðû, àáî ðàçìÿñö³¢ Moodle íà ñýðâåðû, íà ÿê³ì óæî äçåéí³÷àþöü àïë³êàöû³, øòî ïàòðàáóþöü ³íøûõ óñòàíîâàê, íå õâàëþéñÿ. Ìîæàø ³ íàäàëåé çàìÿíÿöü óñòàíî¢ê³ ïà çìà¢÷àíí³.

        -

        Êàá ìàã÷û ðàá³öü ãýòà, òðýáà ñòâàðûöü ôàéë ç íàçâàé .htaccess ó ãàëî¢íûì êàòàëîãó Moodle, ÿê³ áóäçå ¢êëþ÷àöü ãýòûÿ ¢ñòàíî¢ê³. Àï³ñàíû ìåòàä äàòû÷ûöü òîëüê³ ñýðâåðࢠApache, ³ òîëüê³ òàäû, êàë³ ìàã÷ûìû çàï³ñ óñòàíîâàê ïà çìà¢÷àíí³(overr³des)

        + +

        Êàá ìàã÷û ðàá³öü ãýòà, òðýáà ñòâàðûöü ôàéë ç íàçâàé .htaccess ó ãàëî¢íûì êàòàëîãó Moodle, ÿê³ áóäçå ¢êëþ÷àöü ãýòûÿ ¢ñòàíî¢ê³. Àï³ñàíû ìåòàä äàòû÷ûöü òîëüê³ ñýðâåðࢠApache, ³ òîëüê³ òàäû, êàë³ ìàã÷ûìû çàï³ñ óñòàíîâàê ïà çìà¢÷àíí³(overr³des) +

         DirectoryIndex index.php index.html index.htm
         
        @@ -150,17 +168,20 @@ php_flag file_uploads 1
         php_flag short_open_tag 1
         php_flag session.auto_start 0
         php_flag session.bug_compat_warn 0
        -

        Ìîæàø òàêñàìà àï³ñàöü òàê³ÿ ¢ñòàíî¢ê³, ÿê ìàêñ³ìàëüíû ðàçìåð äàñûëàåìûõ ôàéëà¢:

        +

        Ìîæàø òàêñàìà àï³ñàöü òàê³ÿ ¢ñòàíî¢ê³, ÿê ìàêñ³ìàëüíû ðàçìåð äàñûëàåìûõ ôàéëà¢:

         LimitRequestBody 0
         php_value upload_max_filesize 2M
         php_value post_max_size 2M
              
        -

        Íàéïðàñöåé ãýòà ìîæíà çðàá³öü, ñêàï³ðàâà¢øû ¢çîðíû ïàêåò l³b/htaccess ³ ìàäûô³êóþ÷û ÿãî ¢ çàëåæíàñö³ àä ïàòðýáû. Óçîðíû ïàêåò óêëþ÷àå äàëåéøûÿ ³íñòðóêöû³. Ó àáàëîíöû Un³x ìîæíà ñêàï³ðàâàöü ãýòû ôàéë íàñòóïíûì ÷ûíàì :

        + +

        Íàéïðàñöåé ãýòà ìîæíà çðàá³öü, ñêàï³ðàâà¢øû ¢çîðíû ïàêåò l³b/htaccess ³ ìàäûô³êóþ÷û ÿãî ¢ çàëåæíàñö³ àä ïàòðýáû. Óçîðíû ïàêåò óêëþ÷àå äàëåéøûÿ ³íñòðóêöû³. Ó àáàëîíöû Un³x ìîæíà ñêàï³ðàâàöü ãýòû ôàéë íàñòóïíûì ÷ûíàì :

        cp lib/htaccess .htaccess
        +
        +

         

        7. Óñòà븢êà config.php

        Çàðàç óæî ìîæàø çìàäûô³êàâàöü ôàéë êàíô³ãóðàöû³ config.php, âûêàðûñòî¢âàþ÷û äëÿ ãýòàãà òýêñòàâû ðýäàêòàð. Ãýòû ïàêåò âûêàðûñòî¢âàþöü óñå àñòàòí³ÿ ôàéëû Moodle.

        @@ -168,12 +189,13 @@ php_value post_max_size 2M

        Çìàäûô³êóé config.php àêðýñë³¢øû äýòàë³ íàêîíò áàçû äàäçåíûõ, ÿêóþ òû òîëüê³ øòî àï³ñࢠ(óêëþ÷û¢øû ¢ ãýòà ïðýô³êñ òàáë³öû - Óâàãà : ãýòà ç’ÿ¢ëÿåööà íåàáõîäíûì PostgreSQL), à òàêñàìà àäðàñ ñýðâ³ñó, êàòàëîã ç äàäçåíûì³ ³ ä.ï. Ôàéë êàíô³ãóðàöû³ ¢êëþ÷àå ïàäðàáÿçíûÿ ³íñòðóêöû³ ç ïðûêëàäàì³.

        Êàë³ òû âûêàíࢠóæî ¢ñ¸ ãýòà, äàëåéøàÿ ³íñòàëÿöûÿ àäáûâàåööà ïðû äàïàìîçå ñåòêàâàãà ³íòýðôýéñó. Äà êàíöà ãýòàãà äàêóìåíòà ïðûìåì, øòî òâàÿ ñòàðîíêà äàñòóïíà ïà àäðàñå http://example.com/moodle

        +

         

        8. Çàéäç³ íà àäì³í³ñòðàöûéíóþ ñòàðîíêó

        Àäì³í³ñòðàöûéíàÿ ñòàðîíêà, äàñòóïíàÿ ïà àäðàñó http://example.com/moodle/admin. Êàë³ òû ñïðàáóåø çàéñö³ íà ãàëî¢íóþ ñòàðîíêó òâàéãî ñýðâ³ñó, òî ³ òàê àïûíåøñÿ íà ¸é à¢òàìàòû÷íà. Êàë³ ïåðøû ðàç çîéäçåø íà àäì³í³ñòðàöûéíóþ ñòàðîíêó, áóäçåø çàïûòàíû ö³ ïàãàäæàåøñÿ òû ¢çãîäí³öü "shrinkwrap" GPL. Ìóñ³ø ïàãàäç³ööà, êàá ïðàöÿãâàöü äàëåé.

        -

        (Moodle ñïðàáóå òàêñàìà ¢ñòàíàâ³öü 'cookies' äëÿ òâàéãî áðà¢çåðà. Êàë³ ìàåø òàê³ áðà¢çýð, øòî öÿáå çàïûòâàþöü ïðà çãîäó çàï³ñàöü cook³es, òóò ìóñ³ø äàçâîë³öü çàï³ñ, áî ¢ ³íøûì âûïàäêó ïëàòôîðìà Moodle íÿ áóäçå äçåéí³÷àöü ïðàâ³ëüíà).

        +

        (Moodle ñïðàáóå òàêñàìà ¢ñòàíàâ³öü 'cookies' äëÿ òâàéãî áðà¢çåðà. Êàë³ ìàåø òàê³ áðà¢çýð, øòî öÿáå çàïûòâàþöü ïðà çãîäó çàï³ñàöü cook³es, òóò ìóñ³ø äàçâîë³öü çàï³ñ, áî ¢ ³íøûì âûïàäêó ïëàòôîðìà Moodle íÿ áóäçå äçåéí³÷àöü ïðàâ³ëüíà).

        Çàðàç ïëàòôîðìà Moodle ïà÷íå êàíô³ãóðàöûþ áàçû äàäçåíûõ ³ ñòâàðýííå òàáë³öà¢, ïðûçíà÷àíûõ äëÿ çàï³ñó äàäçåíûõ. Ó ïåðøóþ ÷àðãó ñòâàðàþööà òàáë³öû ãàëî¢íàé áàçû äàäçåíûõ. Óáà÷ûø ñåðûþ êàìàíäࢠSQL, à ïàñëÿ ³õ ñòàòóòíàå ïàâåäàìëåííå (çÿë¸íàãà àáî ÷ûðâîíàãà êîëåðó), ÿê³ÿ áóäóöü âûãëÿäàöü íàñòóïíûì àáî ïàäîáíûì ÷ûíàì:

        CREATE TABLE course ( id int(10) unsigned NOT NULL auto_increment, category @@ -192,12 +214,23 @@ php_value post_max_size 2M

        Ïåðàñóíü àäì³í³ñòðàöûéíóþ ñòàðîíêó ¢ ñàìû êàíåö, à çàòûì êë³êí³ íà ñïàñûëêó "Continue"

        Óáà÷ûø çàðàç ïàäîáíóþ ñòàðîíêó, ÿêàÿ ¢ñòàíîâ³öü òàáë³öû äëÿ ¢ñ³õ ìîäóëÿ¢. Òàêñàìà ÿê ïåðàä ãýòûì, ïàâåäàìëåíí³ ïàâ³ííû áûöü çÿë¸íàãà êîëåðó.

        Ïåðàíÿñ³ ñòàðîíêó íà ñàìû êàíåö ³ êë³êí³ íà ñïàñûëêó "Continue"

        -

        Öÿïåð òû ïàâ³íåí óáà÷ûöü ôàðìóëÿð, ó ÿê³ì ìîæàø çàï³ñàöü áîëüø ïåðàìåííûõ, ÿê³ÿ äàòû÷àöü ëàäàâàííÿ, òàê³õ ÿê ìàã÷ûìàÿ ìîâà, çëó÷ýíí³ SMTP ³ ä.ï.. Íàäòà íå ñïÿøàéñÿ çàëàäàâàöü óñ¸ àäðàçó – çà¢ñ¸äû ìîæàø âÿðíóööà ³ çìàäûô³êàâàöü ÿê³ÿ-íåáóäçü ç ãýòûõ ïåðàìåííûõ, êàðûñòàþ÷ûñÿ ïàíåëëþ àäì³í³ñòðàòàðà. Ïåðàñóíü ñòàðîíêó ¢ êàíåö ³ êë³êí³ íà "Save changes".

        -

        Êàë³ (³ òîëüê³ ¢ òàê³ì âûïàäêó) íåäçå ñïûí³øñÿ ïàä÷àñ óñÿãî ãýòàãà ïðàöýñó áåç ìàã÷ûìàñö³ ÿãî ïðàöÿãâàöü, òî òâîé ñýðâåð, âåðàãîäíà, ìàå òàê çâàíû "buggy referrer". Àäíàê ãýòà ë¸ãêà ìîæíà âûïðàâ³öü: ïðîñòà ¢êëþ÷û ¢ñòàíî¢êó "secureforms" ³ ïàñïðàáóé ïðàöÿãâàöü ëàäàâàííå.

        + +

        Öÿïåð òû ïàâ³íåí óáà÷ûöü ôàðìóëÿð, ó ÿê³ì ìîæàø çàï³ñàöü áîëüø ïåðàìåííûõ, ÿê³ÿ äàòû÷àöü ëàäàâàííÿ, òàê³õ ÿê ìàã÷ûìàÿ ìîâà, çëó÷ýíí³ SMTP ³ ä.ï.. Íàäòà íå ñïÿøàéñÿ çàëàäàâàöü óñ¸ àäðàçó – çà¢ñ¸äû ìîæàø âÿðíóööà ³ çìàäûô³êàâàöü ÿê³ÿ-íåáóäçü ç ãýòûõ ïåðàìåííûõ, êàðûñòàþ÷ûñÿ ïàíåëëþ àäì³í³ñòðàòàðà. Ïåðàñóíü ñòàðîíêó ¢ êàíåö ³ êë³êí³ íà "Save changes".

        + +

        Êàë³ (³ òîëüê³ ¢ òàê³ì âûïàäêó) íåäçå ñïûí³øñÿ ïàä÷àñ óñÿãî ãýòàãà ïðàöýñó áåç ìàã÷ûìàñö³ ÿãî ïðàöÿãâàöü, òî òâîé ñýðâåð, âåðàãîäíà, ìàå òàê çâàíû "buggy referrer". Àäíàê ãýòà ë¸ãêà ìîæíà âûïðàâ³öü: ïðîñòà ¢êëþ÷û ¢ñòàíî¢êó "secureforms" ³ ïàñïðàáóé ïðàöÿãâàöü ëàäàâàííå.

        Íà íàñòóïíàé ñòàðîíöû ìîæàø àêðýñë³öü ïàðàìåòðû ñâàéãî ñåðâ³ñó ¢ Moodle, à òàêñàìà òûòóëüíóþ ñòàðîíêó, âûá³ðàþ÷û òàê³ÿ ðý÷û ÿê íàçâà, ôàðìàò, àï³ñàííå ñýðâ³ñó ³ ä.ï.. Çàïî¢í³ ãýòûÿ ïàë³ (çà¢ñ¸äû ìîæàø äà ³õ âÿðíóööà) ³ êë³êí³ íà "Save changes" (çàï³øû çìåíû).

        -

        Ïàä êàíåö òàáå ïðàïàíóþöü ñòâàðûöü ðýã³ñòðàöûéíû çàï³ñ çâû÷àéíàãà êàðûñòàëüí³êà - àäì³í³ñòðàòàðà, ç äàïàìîãàé ÿêîãà òû áóäçåø ïàçíåé ìåöü äîñòóï íà àäì³í³ñòðàöûéíûÿ ñòàðîíê³. Çàïî¢í³ àíêåòó, çìÿø÷àþ÷û ¢ ¸é ñâภ³ìÿ, àäðàñ ýëåêòðîííàé ñêðûíê³ ³ ä.ï., à çàòûì êë³êí³ íà "Save changes" (çàï³øû çìåíû). Íå ¢ñå ïàë³ ïàâ³ííû áûöü çàïî¢íåíû, àëå êàë³ ïðàì³íåø íåêàòîðûÿ íàéáîëüø ³ñòîòíûÿ, öÿáå ïðà ³õ çàïûòàþöü çíî¢.

        -
        -

        Àáàâÿçêîâà çàïîìí³ ³ìÿ êàðûñòàëüí³êà ³ ïàðîëü, ÿê³ÿ òû âûáðࢠäëÿ ðýã³ñòðàöû³ àäì³í³ñòðàòàðà, òàìó øòî ÿíû áóäóöü íåàáõîäíûÿ òàáå, êàá àòðûìàöü äîñòóï äà àäì³í³ñòðàöûéíàé ïàíåë³ ¢ áóäó÷ûì.

        + +

        Ïàä êàíåö òàáå ïðàïàíóþöü ñòâàðûöü ðýã³ñòðàöûéíû çàï³ñ çâû÷àéíàãà êàðûñòàëüí³êà - àäì³í³ñòðàòàðà, ç äàïàìîãàé ÿêîãà òû áóäçåø ïàçíåé ìåöü äîñòóï íà àäì³í³ñòðàöûéíûÿ ñòàðîíê³. Çàïî¢í³ àíêåòó, çìÿø÷àþ÷û ¢ ¸é ñâภ³ìÿ, àäðàñ ýëåêòðîííàé ñêðûíê³ ³ ä.ï., à çàòûì êë³êí³ íà "Save changes" (çàï³øû çìåíû). Íå ¢ñå ïàë³ ïàâ³ííû áûöü çàïî¢íåíû, àëå êàë³ ïðàì³íåø íåêàòîðûÿ íàéáîëüø ³ñòîòíûÿ, öÿáå ïðà ³õ çàïûòàþöü çíî¢.

        +
        +
        +
        +
        +
        +

        Àáàâÿçêîâà çàïîìí³ íàçâó êàðûñòàëüí³êà ³ ïàðîëü, ÿê³ òû âûáðࢠäëÿ ðýã³ñòðàöû³ àäì³í³ñòðàòàðà, òàìó øòî ÿíû áóäóöü íåàáõîäíûÿ òàáå, êàá àòðûìàöü äîñòóï äà àäì³í³ñòðàöûéíàé ïàíåë³ ¢ áóäó÷ûì.

        +
        +
        +
        +

        (Êàë³, ïà ÿêîé-íåáóäçü ïðû÷ûíå ïðàöýñ ëàäàâàííÿ ïåðàïûí³¢ñÿ, àáî áûëà äàïóø÷àíà ñ³ñòýìíàÿ ïàìûëêà, ÿêàÿ çðàá³ëà íåìàã÷ûìàé ðýã³ñòðàöûþ àäì³í³ñòðàòàðà, ìîæàø çàðýã³ñòðàâàööà, óæûâàþ÷û àäâîëüíàé íàçâû êàðûñòàëüí³êà "admin", ç ïàðîëåì "admin".)

        Êàë³ æ ïðàöýñ ëàäàâàííÿ çàêîí÷ûööà ïàñïÿõîâà, áóäçåø ïåðàíåñåíû íàçàä íà ãàëî¢íóþ ñòàðîíêó ñâàéãî ñýðâ³ñó. Çâÿðí³ ¢âàãó íà àäì³í³ñòðàöûéíûÿ ñïàñûëê³, ÿê³ÿ â³äàöü ç ëåâàãà áîêó (ÿíû ìàþööà òàêñàìà íà àäì³í³ñòðàöûéíàé ïàíåë³.) ²õ ìîæàø óáà÷ûöü òîëüê³ òû, ïàêîëüê³ òû ¢æî çàðýã³ñòðàâàíû ÿê àäì³í³ñòðàòàð. Óñ¸ ¢ïðà¢ëåííå Moodle ìîæíà çàðàç àæûööÿ¢ëÿöü ç ãýòàãà ìåíþ. Ç ÿãî äàïàìîãàé ìîæàø íàïð.:

        @@ -208,18 +241,22 @@ php_value post_max_size 2M
      • Çìÿíÿöü óñòàíî¢ê³ äëÿ ¢ñÿãî ñåðâ³ñó, òàê³ÿ ÿê òýìû (çíåøíÿå àôàðìëåííå) ³ ä.ï.
      • +

         

        9. Óñòàíî¢êà ìåõàí³çìó 'cron'

        Íåêàòîðûÿ ìîäóë³ Moodle ïàòðàáóþöü öûêë³÷íûõ òýñòà¢, êàá âûêàíàöü ñâàå çàäàíí³. Íàïðûêëàä, Moodle ïàâ³ííà ïðàâåðûöü äûñêóñ³éíûÿ ôîðóìû, êàá ìàã÷û âûñëàöü ìýéëàâûÿ êîï³³ ëþäçÿì, ÿê³ÿ íà ³õ çàï³ñàë³ñÿ.

        Àäêàçíû çà ãýòà ñêðûïò-ìåõàí³çì çíàõîäç³ööà ó êàòàëîãó 'adm³n' ó ôàéëå cron.php. Àäíàê ¸í íå ¢ ñòàíå çàïóñö³öü ñàì ñÿáå, òàìó òàêñàìà òðýáà çàïóñö³öü ãýòû ìåõàí³çì, ÿê³ áóäçå ðýãóëÿðíà çàïóñêàöü ãýòû ñêðûïò (íàïð. ïðàç 5 õâ³ë³í). Ãýòà áóäóöü òàê³ÿ &qout;óäàðû ñýðöà" óñÿãî ñåðâ³ñó, ó ðûòìå ÿêîãà íàçâàíû ñêðûïò ìîæà âûêîíâàöü ôóíêöû³ ¢ àäðýçêàõ ÷àñó, àêðýñëåíûõ ó ìîäóëÿõ.

        Çâÿðí³ ¢âàãó, øòî ìàøûíà, íà ÿêîé çàïóø÷àíû ìåõàí³çì 'cron' íå ìóñ³öü áûöü àáàâÿçêîâà òîé ñàìàé, íà ÿêîé ïðàöóå Moodle.. Êàë³, íàïðûêëàä, òâîé ²íòýðíýò-ñýðâåð íå àáñëóãî¢âàå ìåõàí³çì 'cron', òî ìîæàø çàïóñö³öü ÿãî íà ³íøûì ñýðâåðû, àáî íà òâà³ì äàìàøí³ì êàìïóòàðû. Âàæíà àäç³íà òîå, êàá ôàéë cron.php âûêë³êà¢ñÿ ðýãóëÿðíà.

        -

        Íàãðóçêà, ÿêóþ çàäàå ãýòû ñêðûïò, íå âåëüì³ âÿë³êàÿ, òàìó ¢âîãóëå 5 õâ³ë³í – ãýòà ðàçóìíû âûáàð, àëå êàë³ õî÷àø, ìîæàø ïàäî¢æûöü àäðýçê³ ÷àñó äà 15 àáî íàâàò 30 õâ³ë³í. Íàéëåïø áûëî á, àäíàê, êàá ãýòû àäðýçàê ÷àñó íå áû¢ çàíàäòà äî¢ã³, òàìó øòî ñïàçíåíí³ ïðû ïåðàñûëöû çâåñòàê ïîøòàé ìîãóöü àáìåæàâàöü àêòû¢íàñöü íà êóðñàõ.

        -

        Ïåðø çà ¢ñ¸ ïðàâåð ö³ ïðàâ³ëüíà äçåéí³÷àå ñêðûïò, çàïóñêàþ÷û ÿãî íåïàñðýäíà ç òâàéãî áðà¢çýðà:

        + +

        Íàãðóçêà, ÿêóþ çàäàå ãýòû ñêðûïò, íå âåëüì³ âÿë³êàÿ, òàìó ¢âîãóëå 5 õâ³ë³í – ãýòà ðàçóìíû âûáàð, àëå êàë³ õî÷àø, ìîæàø ïàäî¢æûöü àäðýçê³ ÷àñó äà 15 àáî íàâàò 30 õâ³ë³í. Íàéëåïø áûëî á, àäíàê, êàá ãýòû àäðýçàê ÷àñó íå áû¢ çàíàäòà äî¢ã³, òàìó øòî ñïàçíåíí³ ïðû ïåðàñûëöû çâåñòàê ïîøòàé ìîãóöü àáìåæàâàöü àêòû¢íàñöü íà êóðñàõ.

        + +

        Ïåðø çà ¢ñ¸ ïðàâåð ö³ ïðàâ³ëüíà äçåéí³÷àå ñêðûïò, çàïóñêàþ÷û ÿãî íåïàñðýäíà ç òâàéãî áðà¢çýðà:

        http://example.com/moodle/admin/cron.php

        Öÿïåð òðýáà çðàá³öü òàê, êàá ñêðûïò çàïóñêà¢ñÿ à¢òàìàòû÷íà ³ ðýãóëÿðíà.

        -

        Çàïóñê ñêðûïòà ç ë³í³³ êàìàíäà¢

        + +

        Çàïóñê ñêðûïòà ç ë³í³³ êàìàíäà¢

        Ãýòó ñòàðîíêó òû ìîæàø âûêë³êàöü äàêëàäíà òàêñàìà, ÿê ó ïàïÿðýäí³ì ïðûêëàäçå. Íàïðûêëàä ó ñ³ñòýìå Un³x ìîæàø ñêàðûñòàöü ³íñòðóìåíò 'wget':

        wget -q -O /dev/null http://example.com/moodle/admin/cron.php
        @@ -247,6 +284,7 @@ php_value post_max_size 2M

        Ó ñ³ñòýìàõ W³ndows: Íàéëåïø ñêàðûñòàöü ìàëû ïàêåò moodle-cron-for-windows.zip ïðû äàïàìîçå ÿêîãà ¢âåñü ïðàöýñ ñòàíåööà âåëüì³ ïðîñòûì. Ìîæàø òàêñàìà âûêàðûñòàöü óáóäàâàíóþ ôóíêöûþ 'Ãàðìàí³çàöûÿ çàäà÷à¢'.

        Íà ²íòýðíýò-ñýðâåðàõ: òâàÿ êàíòðîëüíàÿ ïàíåëü, ÿêàÿ àáàï³ðàåööà íà ñåòêó, ìîæà ¢òðûìë³âàöü ³íòýðíýò-ñòàðîíêó, ÿêàÿ äàå ìàã÷ûìàñöü óêëþ÷ûöü äàäçåíû ïðàöýñ. Çàïûòàéñÿ ¢ ñâàéãî àäì³í³ñòðàòàðà ïðà äýòàë³.

        +

        10. Ñòâàðýííå íîâàãà êóðñà

        @@ -256,10 +294,12 @@ php_value post_max_size 2M

        Êë³êí³ íà "Çàï³øû çìåíû", ³ áóäçåø ïåðàíåñåíû ¢ íàñòóïíû ôàðìóëÿð, íà ÿê³ì ìîæàø çàï³ñàöü âÿäî¢öࢠêóðñà¢. Ó ãýòûì ìåñöû ìîæàø êàðûñòàööà òîëüê³ ³ñíóþ÷ûì³ ðýã³ñòðàöûéíûì³ çàï³ñàì³. Êàë³ çàõî÷àø ñòâàðûöü íîâû ðýã³ñòðàöûéíû çàï³ñ âÿäî¢öû, òàäû àáî ïðàïàíóé âÿäî¢öó, êàá ¸í ñòâàðû¢ ÿãî ñàáå ñàì (íà ñòàðîíöû ðýã³ñòðàöû³), àáî ñòâàðû ÿãî ñàìàñòîéíà, êë³êíó¢øû íà ñïàñûëêó " Ñòâàðû íîâû ðýã³ñòðàöûéíû çàï³ñ" íà àäì³í³ñòðàöûéíàé ïàíåë³.

        Ïàñëÿ òàãî, ÿê êóðñ óæî ñòâîðàíû, ¸í ãàòîâû äà çìåíû ¢ñòàíîâàê, à òàêñàìà ñòàíîâ³ööà äàñòóïíûì ïðàç ñïàñûëêó "Êóðñû" íà ãàëî¢íàé ñòàðîíöû.

        -

        Ïðà÷ûòàé "ʳðà¢í³öòâà äëÿ íàñòà¢í³êà" êàá ïàçíà¸ì³ööà ç äýòàëÿì³ íà òýìó ïàáóäîâû êóðñà¢.

        -
        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        - +

        Ïðà÷ûòàé "Ïàäðó÷í³ê íàñòà¢í³êà" êàá ïàçíà¸ì³ööà ç äýòàëÿì³ íà òýìó ïàáóäîâû êóðñà¢.

        +
        +

         

        +

        Äàêóìåíòàöûÿ Moodle

        +

        Version: $Id$

        + + \ No newline at end of file diff --git a/lang/be/docs/installamp.html b/lang/be/docs/installamp.html deleted file mode 100644 index d8e4dc18969..00000000000 --- a/lang/be/docs/installamp.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - Moodle Docs: Installing PHP and MySQL - - - - - -

        Ëàäàâàííå Apache, MySQL ³ PHP

        -
        -

        Moodle íàï³ñàíû ñêðûïòàâàé ìîâàé PHP, ³ çàõî¢âàå áîëüøàñöü äàäçåíûõ ¢ áàçå äàäçåíûõ. Ìû ðýêàìåíäóåì âûêàðûñòî¢âàöü áàçó äàäçåíûõ MySQL. Ïåðàä ëàäàâàííåì Moodle Âû ìóñ³öå ìåöü ðàáî÷óþ ³íñòàëÿöûþ PHP ³ ðàáî÷óþ áàçó äàäçåíûõ ç òûì, êàá Âàø êàïì'þòýð ìîã ñòàöü ôóíêöûÿíàëüíûì ¢ýá-ñýðâåðàì. Ëàäàâàííå âûøýéíàçâàíûõ ïàêåòࢠìîæà âûêë³êàöü íåêàòîðûÿ ïðàáëåìû äëÿ ñÿðýäíÿãà êàðûñòàëüí³êà, òàìó ãýòàÿ ñòàðîíêà äàïàìîæà çðàá³öü ïðàöýñ ÿê ìàãà ïðàñöåéøûì äëÿ ðîçíûõ ïëàòôîðìà¢:

        - -

        Õîñòûíãàâû ñåðâ³ñ

        -
        -

        Íà æàëü, õîñòûíãàâûÿ ñåðâ³ñû âåëüì³ ðîçíÿööà ¢ ïëàíå ³õ ïðàöû. Ó íåêàòîðûõ âûïàäêàõ Âàì çàëàäóþöü Moodle.

        -

        Áîëüøàñöü ïðàïàíóå êàíòðîëüíóþ ïàíåëü äëÿ êàíòðîëþ Âàøàãà ñàéòà, ñòâàðýííÿ áàçû äàäçåíûõ ³ ëàäàâàííÿ õðîíà. Íåêàòîðûÿ ìîãóöü ïðàïàíàâàöü òýðì³íàëüíû äîñòóï ïðàç ssh äëÿ òàãî, êàá Âû ìàãë³ âûêàðûñòî¢âàöü êàìàíäíóþ àáàëîíêó äëÿ ïðàöû.

        -

        Âû ìóñ³öå ïðàêëàäâàöü ñâîé øëÿõ ïðàç Ëàäàâàííå Moodle ³ âûêîíâàöü êîæíû êðîê çà ðàç. Çâÿðí³öåñÿ äà ñâàéãî ïðàâàéäýðà ¢ âûïàäêó, êàë³ çàõðàñíåöå.

        -
        -

        Mac OS X

        -
        -

        Íàéëÿã÷ýéøû øëÿõ – ãýòà óñòàëÿâàöü Apache-ñýðâåð àä Apple, äàäàöü PHP ³ MySQL ç äàïàìîãàé ïàêåòࢠÌàðêà ˳ÿí³äæà (Marc Liyanage). Äçâå í³æýéïàäàäçåíûÿ ñòàðîíê³ äàþöü âåëüì³ ïàäðàáÿçíûÿ ³íñòðóêöû³ ïà ëàäàâàíí³, ÿê³ÿ ìû íå áóäçåì ïà¢òàðàöü òóò:

        -
        -

        PHP: çàïàìïàâàöü àäñþëü: http://www.entropy.ch/software/macosx/php/

        -

        MySQL: çàïàìïàâàöü àäñþëü: http://www.entropy.ch/software/macosx/mysql/

        -
        -

        ßê òîëüê³ Âû ¢ñ¸ ãýòà çàëàäóåöå, ñòàíäàðòíàå Ëàäàâàííå Moodle íå ìóñ³öü âûêë³êàöü ïðàáëåìà¢.

        -

        Áîëüø äýòàë¸âûÿ ³íñòðóêöû³ ìîæíà çíàéñö³ òóò: http://moodle.org/wiki/index.php/InstallingMoodle

        -
        -

        Redhat Linux

        -
        -

        Âû ìóñ³öå ¢ñòàëÿâàöü óñå íàÿ¢íûÿ RPM-ïàêåòû äëÿ Apache, PHP ³ MySQL. ×àñòà çàáûâàþöü óñòàëÿâàöü ïàêåò php-mysql, ÿê³ íåàáõîäíû äëÿ òàãî, êàá PHP ìîã çâÿðòàööà äà MySQL.

        -

        ßê òîëüê³ Âû ¢ñ¸ ãýòà çàëàäóåöå, ñòàíäàðòíàå Ëàäàâàííå Moodle íå ìóñ³öü âûêë³êàöü ïðàáëåìà¢.

        -

        Áîëüø äýòàë¸âûÿ ³íñòðóêöû³ ìîæíà çíàéñö³ òóò: http://moodle.org/wiki/index.php/InstallingMoodle

        -
        -

        Windows

        -
        -

        Íàéëÿã÷ýéøû øëÿõ – ãýòà âûêàðûñòàöü EasyPHP, - ïàêåò, ÿê³ ¢êëþ÷àå ¢ñå ïàòðýáíûÿ êàìïàíåíòû. Äëÿ ëàäàâàííÿ òðýáà çðàá³öü íàñòóïíàå:

        -
          -
        1. Ñïà÷àòêó, êàë³ ìàåöå ¢æî ¢ñòàëÿâàíû MySQL (íàâàò êàë³ ãýòà ÷àñòêà ³íøàãà ïàêåòà), ïðàâÿäç³öå äýëàäàâàííå ¢ñÿãî, âûäàë³öå ¢ñå MySQL-ôàéëû ³ ¢ïý¢í³öåñÿ, øòî Âû âûäàë³ë³ c:\my.cnf ³ c:\windows\my.ini. - Ìîæíà çíàéñö³ ïðàç ïîøóê ÓÑÅ ôàéëû my.cnf - ö³ my.ini ³ âûäàë³öü ³õ.
        2. -
        3. Êàë³ Âû ðàíåé çàëàäî¢âàë³ PHP, òî âûäàë³öå ëþáûÿ ôàéëû ç íàçâàé php4ts.dll - ç äûðýêòîðû³ Windows, à òàêñàìà ¢ñå ôàéëû php.ini.
        4. -
        5. Çàïàìïàâàöü EasyPHP ìîæíà àäñþëü: http://www.easyphp.org/telechargements/dn.php?F=easyphp1-7 - (ïðûêëàäíà 10 Mb)
        6. -
        7. Çàïóñö³öå çàïàìïàâàíû ôàéë: easyphp1-7_setup.exe. Ëàäàâàííå àäáûâàåööà íà ôðàíöóçñêàé ìîâå, àëå í³÷ûì íå àäðîçí³âàåööà àä ëàäàâàííÿ ³íøûõ Windows-ïðàãðàìà¢. ß ðàþ âûá³ðàöü äàïîìíûÿ ôóíêöû³ ³ äàçâîëû íà ³õ ëàäàâàííå. Çàïîìí³öå, øòî "Suivant" çíà÷ûöü Äàëåé ³ "Oui" çíà÷ûöü Òàê.
        8. -
        9. Ïðû êàíöû ëàäàâàííÿ àáÿðûöå "Lancer - EasyPHP" (Ïà÷àöü EasyPHP) ³ íàö³ñí³öå êíîïêó "Terminer". Âû ìóñ³öå àïûíóööà íà ³íôàðìàöûéíàé ¢ýá-ñòàðîíöû, ÿêóþ ìîæíà ïðà³ãíàðàâàöü.
        10. -
        11. Êàë³ ¢ñ¸ ïðàéøëî áåç ïðàáëåì – ìàå â³íøàâàíí³! Apache, PHP ³ MySQL óñòàëÿâàíûÿ ³ ïðàöóþöü! Âû ìóñ³öå ïàáà÷ûöü ÷îðíóþ ë³òàðó E íà ïàíåë³ ³íñòðóìåíòà¢. Íàö³ñí³öå ïðàâàé êíîïêàé íà ë³òàðû ³ Âû àòðûìàåöå ìåíþ, ÿêîå äàçâîë³öü Âàì ê³ðàâàöü ïðàãðàìàì³.
        12. -
        13. Íåêàòîðûÿ ðý÷û áóäóöü íà ôðàíöóçñêàé ³ êàë³ Âû àääàåöå ïåðàâàãó àíãåëüñêàé, çàãðóç³öå ãýòû ôàéë: http://www.easyphp.org/telechargements/dn.php?F=indexUS_1.7 , ÿê³ ¢òðûìë³âàå àíãåëüñê³ÿ âåðñ³³ òý÷àê www ³ home ó òý÷öû EasyPHP1-7. ²õ ìîæíà ñêàï³ÿâàöü çàìåñò äàïîìíûõ ôàéëà¢.
        14. -
        15. Íàñòóïíàå, øòî Âàì òðýáà çðàá³öü – ãýòà ¢ñòàëÿâàöü áàçó äàäçåíûõ äëÿ Moodle. Íàö³ñí³öå ïðàâàé êíîïêàé íà E íà ïàíåë³ ³íñòðóìåíòࢠ³ àáÿðûöå Administration, çàòûì íàö³ñí³öå DB Management (êàëÿ PHPMyAdmin).
        16. -
        17. Êàë³ áóäçå çàïûò ïðà ³ìÿ êàðûñòàëüí³êà (username), óâÿäç³öå "root" à ïîëå äëÿ ïàðîëþ ïàê³íüöå ïóñòûì. - Ïàñëÿ ãýòàãà Âû ìóñ³öå ïàáà÷ûöü ¢ýá-³íòýðôåéñ phpMyAdmin, ÿê³ äàçâîë³öü Âàì ñòâàðàöü íîâûÿ áàçû äàäçåíûõ ³ ¢ë³êîâûÿ çàï³ñû êàðûñòàëüí³êà¢.
        18. -
        19. Ñòâàðûöå íîâóþ áàçó äàäçåíûõ íàäðóêàâà¢øû "moodle" ¢ ïîë³ ³ íàö³ñíó¢øû êíîïêó "Create" (Ñòâàðûöü). Ãýòà áûëî ë¸ãêà!
        20. -
        21. Êàë³ ìàåöå æàäàííå, òî Âû òàêñàìà ìîæàöå ñòâàðûöü íîâû ¢ë³êîâû çàï³ñ êàðûñòàëüí³êà äëÿ äîñòóïó äà Âàøàé áàçû äàäçåíûõ. Ãýòàÿ ïðàöýäóðà ìîæà âûêë³êàöü íåêàòîðûÿ ïðàáëåìû äëÿ ïåðøàïà÷àòêî¢öà, òàìó ìîæíà ñêàðûñòàöü ³ñíàãà êàðûñòàëüí³êà "root" - áåç ïàðîëþ ¢ Moodle config, ÿê³ ìîæíà ñòâàðûöü ïàçíåé.
        22. -
        23. Öÿïåð Âû ìîæàöå çàëàäàâàöü Moodle! Çàïàìïóéöå àïîøí³ ðýë³ç Moodle ç http://moodle.org/download, ³ ðàñïàêóéöå àðõ³¢.
        24. -
        25. Ñêàï³þéöå ôàéëû moodle ó C:\Program Files\EasyPHP\www. Âû ìîæàöå ñêàï³ÿâàöü àëüáî ¢ñþ äûðýêòîðûþ moodle (íàïð., C:\Program Files\EasyPHP\www\moodle), àëüáî ñêàï³ÿâàöü óâåñü çìåñò äûðýêòîðû³ moodle. - Êàë³ Âû àáÿðýöå äðóãóþ ìàã÷ûìàñöü, òàäû çìîæàöå ìåöü äîñòóï äà ñâà¸é õàòíÿé ñòàðîíê³ Moodle ïðàç http://localhost/ instead of http://localhost/moodle/.
        26. -
        27. Çðàá³öå äçå-íåáóäçü íîâóþ ïóñòóþ òý÷êó äëÿ Moodle ç òûì, êàá çàõî¢âàöü çàãðóæàíûÿ ôàéëû, íàïð.: C:\moodledata.
        28. -
        29. Çàéäç³öå ¢ òý÷êó Moodle. Çðàá³öå êîï³þ config-dist.php ³ íàçàâ³öå ÿå config.php
        30. -
        31. Àäðýäàãóéöå config.php ¢ òýêñòàâûì ðýäàêòàðû (Ïðûäàòíû Notepad, àëå áóäçüöå ¢âàæë³âûÿ, êàá ðýäàêòàð íå äàäàâࢠíåïàæàäàíûÿ ïðàáåëû ¢ êàíöû).
        32. -
        33. Óâÿäç³öå ¢ñþ ³íôðàìàöûþ ïà íîâàé áàçå äàäçåíûõ:
          - $CFG->dbtype = 'mysql';
          - $CFG->dbhost = 'localhost';
          - $CFG->dbname = 'moodle';
          - $CFG->dbuser = 'root';
          - $CFG->dbpass = '';
          - $CFG->dbpersist = true;
          - $CFG->prefix = 'mdl_';
        34. -
        35. Óâÿäç³öå ¢ñå øëÿõ³ äëÿ ôàéëà¢:
          - $CFG->wwwroot = 'http://localhost/moodle'; // Âûêàðûñòî¢âàéöå çíåøí³ àäðàñ, êàë³ Âû ÿãî âåäàåöå.
          - $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
          - $CFG->dataroot = 'C:\moodledata';
        36. -
        37. Çàõàâàéöå config.php – Âû ìîæàöå ïðà³ãíàðàâàöü ³íøûÿ ïàðàìåòðû ëàäàâàííÿ, êàë³ òàê³ÿ ¸ñöü.
        38. -
        39. Âû àìàëü ñêîí÷ûë³! Ðýøòà ëàäàâàííÿ³ àäáûâàåööà ïðàç ¢ýá. Íàáÿðûöå ¢ áðà¢çåðû - http://localhost/moodle/admin/ - äëÿ òàãî, êàá ïðàöÿãíóöü ëàäàâàííå ïðàç áðà¢çåð.
        40. -
        41. Êàá êàðûñòàööà zip-ôàéëàì³ ¢ Moodle (íàïðûêëàä êîï³³ âûêàðûñòî¢âàþöü zip) Âàì ñïàòðýá³ööà àêòûâ³çàâàöü "zlib". Ãýòà Âû ìîæàöå çðàá³öü çàéøî¢øû ¢ äûðýêòîðûþ EasyPHP - (C:\Program Files\EasyPHP), ³ çàïóñö³¢øû ïðàãðàìó phpini.exe. Ïàñòà¢öå ïàçíàêó íàñóïðàöü "zlib.dll". - Çãàðí³öå âàêíî, ïîòûì ïðàâàé êíîïêàé íàö³ñí³öå íà ë³òàðó íà ïàíåë³ ³íñòðóìåíòà¢, ó ìåíþ àáÿðûöå "Restart".
        42. -
        43. Ó çàêëþ÷ýííå, Âàì òðýáà çàëàäàâàöü õðîí. Áîëüø ïàäðàáÿçíà ïðà ãýòà ãë. Ëàäàâàííå Moodle.
        44. -
        -

        Êàë³ Âû íå êàðûñòàåöåñÿ, ö³ íå ìîæàöå êàðûñòàööà EasyPHP, ³ñíóå íåêàëüê³ øëÿõî¢ äëÿ òàãî, êàá óïý¢í³ööà, øòî PHP óñòàëÿâàíû êàðýêòíà ³ ïàçáåãíóöü àãóëüíûõ ïðàáëåì:

        -
          -
        • Ïðàâåðöå ö³ ¢êëþ÷àíû GD-ìîäóëü ç òûì, êàá Moodle ìîã àïðàöî¢âàöü ìàëþíê³ – ìàã÷ûìà ïðûéäçåööà àäðýäàãàâàöü php.ini ³ ïðûáðàöü êàìåíòàð (;) ç ðàäêà: 'extension=php_gd2.dll'.
        • -
        • Ïðàâåðöå ö³ ¢êëþ÷àíû Zlib -ìîäóëü, êàá ìîæíà áûëî ñòâàðàöü ³ ðàñïàêî¢âàöü zip-ôàéëû ¢íóòðû Moodle.
        • -
        • Ïðàâåðöå ö³ ¢êëþ÷àíû ñåñ³³ – ìàã÷ûìà ïðûéäçåööà àäðýäàãàâàöü php.ini ³ àäðýãóëÿâàöü äûðýêòîðûþ äëÿ session.save_path - çàìåñò äàïîìíàãà - "/tmp" óâÿäç³öå äûðýêòîðûþ Windows êøòàëòó "c:/temp".
        • -
        -
        -
        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        - - \ No newline at end of file diff --git a/lang/be/docs/intro.html b/lang/be/docs/intro.html index 1327d6b034d..c11733525de 100644 --- a/lang/be/docs/intro.html +++ b/lang/be/docs/intro.html @@ -1,23 +1,21 @@ - - - + + + + System Docs: Introduction + + -Moodle Docs: Introduction - - - - - - -

        Óâîäç³íû

        -
        -

        ѳñòýìà ÌÀÀÍÑ (Ìîäóëüíàÿ àá'åêòíà-àðûåíòàâàíàÿ íàâó÷àëüíàÿ ñ³ñòýìà) ç'ÿ¢ëÿåööà ïàêåòàì ïðàãðàìíàãà çàáåñïÿ÷ýííÿ äëÿ ñòâàðýííÿ êóðñࢠíàâó÷àííÿ íà àäëåãëàñö³ ³ ¢ýá-ñàéòà¢. - Ãýòû ïðàåêò, ÿê³ ïðàöÿãâàå ðàçâ³âàööà, áû¢ ñòâîðàíû äëÿ ïàäòðûìê³ ³ äàñëåäàâàííÿ¢ òýîðû³ "ñàöûÿëüíàãà êàíñòðóêòûâ³çìó ¢ àäóêàöû³".

        -

        ѳñòýìà ðàñïà¢ñþäæâàåööà íà áÿçâûïëàòíàé àñíîâå, ÿê Open Source-ïðàåêò, ïà ë³öåíç³³ GNU GPL (ó íåêàëüê³õ ñëîâàõ: Âàì äàçâîëåíà êàï³ÿâàöü, âûêàðûñòî¢âàöü ³ çìÿíÿöü êîä).

        -

        ѳñòýìà ìîæà ïðàöàâàöü íà ëþáûì êàìï'þòýðû, íà ÿê³ì ïðàöóå - PHP, ³ ïàäòðûìë³âàå ïðàêòû÷íà ëþáóþ áàçó äàäçåíûõ (ó ïðûâàòíàñö³, MySQL).

        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        - - \ No newline at end of file +

        Óâîäç³íû

        + +

        ѳñòýìà ÌÀÀÍÑ (Ìîäóëüíàÿ àá'åêòíà-àðûåíòàâàíàÿ íàâó÷àëüíàÿ ñ³ñòýìà) ç'ÿ¢ëÿåööà ïàêåòàì ïðàãðàìíàãà çàáåñïÿ÷ýííÿ äëÿ ñòâàðýííÿ êóðñࢠíàâó÷àííÿ íà àäëåãëàñö³ ³ web-ñàéòà¢. + Ãýòû ïðàåêò, ÿê³ ïðàöÿãâàå ðàçâ³âàööà, áû¢ ñòâîðàíû äëÿ ïàäòðûìê³ ³ äàñëåäàâàííÿ¢ òýîðû³ "social constructionist framework of education".

        + +

        ѳñòýìà ðàñïà¢ñþäæâàåööà íà áÿçâûïëàòíàé àñíîâå, ÿê Open Source-ïðàåêò, ïà ë³öåíç³³ GNU GPL (ó íåêàëüê³õ ñëîâàõ: Âàì äàçâîëåíà êàï³ÿâàöü, âûêàðûñòî¢âàöü ³ çìÿíÿöü êîä). + +

        ѳñòýìà ìîæà ïðàöàâàöü íà ëþáûì êàìï'þòýðû, íà ÿê³ì ïðàöóå + PHP, ³ ïàäòðûìë³âàå ïðàêòû÷íà ëþáóþ áàçó äàäçåíûõ (ó ïðûâàòíàñö³, MySQL).

        +


        +

        +

        Äàêóìåíòàöûÿ Moodle

        + + \ No newline at end of file diff --git a/lang/be/docs/licence.html b/lang/be/docs/licence.html index bc8cad8d7a9..2255a886699 100644 --- a/lang/be/docs/licence.html +++ b/lang/be/docs/licence.html @@ -1,72 +1,64 @@ - - - - -Moodle Docs: Copyright License - - - - - -

        À¢òàðñê³ÿ ïðàâû íà Moodle

        -
        -

        Íàçâà Moodle™ ç'ÿ¢ëÿåööà çàðýã³ñòðàâàíàé ãàíäë¸âàé ìàðêàé Moodle Trust.
        - Âàì ïàòðýáíà àòðûìàöü äàçâîë äëÿ âûêàðûñòàííÿ ãýòàé ìàðê³ äëÿ â³äࢠäçåéíàñö³, - ÿê³ÿ àï³ñàíû í³æýé.

        -

        Moodle software is Copyright © 1999-2004, Martin - Dougiamas.

        -
        -
        - -

        ÓͲÂÅÐÑÀËÜÍÀß ÃÐÀÌÀÄÑÊÀß Ë²ÖÝÍÇ²ß GNU

        -

        Âåðñ³ÿ 2, ÷ýðâåíü 1999 ã.

        -

        Copyright (C) 1989, 1991 Free Software Foundation, Inc.
        59 Temple Place, Suite 330, Boston, MA 02111--1307, USA

        Copyright (C) ïåðàêëàä íà áåëàðóñêóþ ìîâó,
        2004 Íàâóêîâà-³íôàðìàöûéíû ôîíä "Áåëàðóñêàå ñëîâà"
        2004 Ñÿðæóê Êðó÷êî¢

        Óñ³ì äàçâàëÿåööà êàï³ÿâàöü ³ ðàñïà¢ñþäæâàöü äàñëî¢íûÿ êîï³³ ãýòàãà ë³öýíç³éíàãà äàêóìåíòó, àëå çìÿíÿöü ÿãî íåëüãà.
        -

        Ïðýàìáóëà

        -

        ˳öýíç³³ íà âÿë³êóþ ÷àñòêó ïðàãðàìíàãà çàáåñïÿ÷ýííÿ (ÏÇ), ñêëàäçåíûÿ òàê, êàá ïàçáàâ³öü âàñ ñâàáîäû ñóìåñíà âûêàðûñòàöü ³ çìÿíÿöü ÿãî. Íààäâàðîò, Óí³âåðñàëüíàÿ ãðàìàäñêàÿ ë³öýíç³ÿ GNU ïðûçíà÷àíàÿ ãàðàíòàâàöü âàøóþ ñâàáîäó ñóìåñíà âûêàðûñòî¢âàöü ³ çìÿíÿöü ñâàáîäíàå ÏÇ, ã.ç. ñöâåðäç³öü, øòî ÏÇ ç'ÿ¢ëÿåööà ñâàáîäíûì äëÿ ¢ñ³õ ÿãî êàðûñòàëüí³êà¢. Ãýòàÿ ¡í³âåðñàëüíàÿ ãðàìàäñêàÿ ë³öýíç³ÿ ÿêàÿ ¢æûâàåööà äà áîëüøàé ÷àñòê³ ÏÇ Ôîíäó ñâàáîäíàãà ÏÇ ³ äà ¢ñ³õ ³íøûõ ïðàãðàì, ÷ûå à¢òàðû ïðûìàþöü íà ñÿáå àáàâÿçàöåëüñòâû ÿå âûêàðûñòàöü. (Çàìåñò ÿå äëÿ ÷àñòê³ ÏÇ Ôîíäó ñâàáîäíàãà ÏÇ óæûâàåööà ¡í³âåðñàëüíàÿ ãðàìàäñêàÿ ë³öýíç³ÿ GNU äëÿ á³áë³ÿòýê.) Âû òàêñàìà ìîæàöå âûêàðûñòàöü ÿå äëÿ ñâà³õ ïðàãðàìà¢.

        -

        Êàë³ ìû ãàâîðûì àá ñâàáîäíûì ÏÇ, ìû ìàåì íà ¢âàçå ñâàáîäó, à íå êîøò. Ìÿðêóåööà, øòî íàøû ¡í³âåðñàëüíûÿ ãðàìàäñê³ÿ ë³öýíç³³ ãàðàíòóþöü, øòî âû êàðûñòàåöåñÿ ñâàáîäàé ðàñïà¢ñþäæâàöü êîï³³ ñâàáîäíàãà ÏÇ (³ àòðûìë³âàöü çà ãýòà ¢çíàãàðîäæàííå, êàë³ âû òàãî æàäàåöå); øòî âû àòðûìë³âàåöå çûõîäíû êîä àáî ìîæàöå àòðûìàöü ÿãî, êàë³ çàõî÷àöå; øòî âû ìîæàöå çìÿíÿöü ÏÀ àáî âûêàðûñòàöü ÿãî ÷àñòê³ ¢ íîâûõ ñâàáîäíûõ ïðàãðàìàõ; ³ øòî âû âåäàåöå, øòî âû ìîæàöå ¢ñå ãýòà ðàá³öü.

        -

        Êàá àáàðàí³öü âàøû ïðàâû, íàì òðýáà àçíà÷ûöü òàê³ÿ àáìåæàâàíí³, ÿê³ÿ çàáàðîíÿöü êàìó á òî í³ áûëî àäìà¢ëÿöü âàì ó ãýòûõ ïðàâàõ àáî çàïàòðàáàâàöü àä âàñ àäìîâ³ööà àä ãýòûõ ïðàâî¢. Ãýòûÿ àáìåæàâàíí³ ïåðàâîäçÿööà ¢ íåêàòîðûÿ àáàâÿçàöåëüñòâû äëÿ âàñ, êàë³ âû ðàñïà¢ñþäæâàåöå êîï³³ ÏÇ àáî êàë³ âû ìàäûô³êóåöå ÿãî.

        -

        Íàïðûêëàä, êàë³ âû ðàñïà¢ñþäæâàåöå êîï³³ òàêîé ïðàãðàìû áÿñïëàòíà àáî çà ¢çíàãàðîäæàííå, âû ïàâ³ííû äàöü àòðûìàëüí³êàì óñ¸ ïðàâû, ÿê³ì³ âû âàëîäàåöå. Âû ïàâ³ííû ãàðàíòàâàöü, øòî ÿíû òàêñàìà àòðûìàþöü àáî çìîãóöü àòðûìàöü çûõîäíû êîä. ² âû ïàâ³ííû ïàêàçàöü ³ì ãýòûÿ ¢ìîâû, êàá ÿíû âåäàë³ àá ñâà³õ ïðàâàõ.

        -

        Ìû àáàðàíÿåì âàøû ïðàâû ¢ äâà ýòàïû: (1) çàõî¢âàåì à¢òàðñê³ÿ ïðàâû íà ÏÇ ³ (2) ïðàïàíî¢âàåì âàì ãýòóþ ë³öýíç³þ, ÿêàÿ äàå âàì çàêîííàå ïðàâà êàï³ðàâàöü, ðàñïà¢ñþäæâàöü ³/àáî ìàäûô³êàâàöü ÏÇ.

        -

        Òàêñàìà, êàá àáàðàí³öü íàñ ³ êîæíàãà à¢òàðà, ìû æàäàåì ïåðàêàíàööà, øòî ¢ñå ðàçóìåþöü, øòî ãàðàíòûé íà ãýòà ñâàáîäíàå ÏÇ íÿìà. Êàë³ ÏÇ ìàäûô³êóåööà ³ ïåðàäàåööà ê³ì-íåáóäçü ÿø÷ý, ìû æàäàåì, êàá àòðûìàëüí³ê³ ÏÇ âåäàë³, øòî òîå, øòî ¢ ³õ ¸ñöü --- ãýòà íå àðûã³íàë, êàá ëþáûÿ ïðàáëåìû, ñòâîðàíûÿ ³íøûì³, íå àäá³ë³ñÿ íà ðýïóòàöû³ ïåðøàïà÷àòêîâûõ à¢òàðà¢.

        -

        ² íàðýøöå, êîæíàé âñâàáîäíàé ïðàãðàìå çà¢ñ¸äû ïàãðàæàþöü ïàòýíòû íà ÏÇ. Ìû æàäàåì óí³êíóöü íåáÿñïåê³, øòî ïà¢òîðíûÿ ðàñïà¢ñþäæâàëüí³ê³ ñâàáîäíàé ïðàãðàìû ñàìàñòîéíà àòðûìàþöü ïàòýíòû, ðîáÿ÷û ïðàãðàìó òàê³ì ÷ûíàì ïðûâàòíàé óëàñíàñöþ. Êàá ïðàäóõ³ë³öü ãýòà, ìû ÿ¢íà çàÿ¢ëÿåì, øòî ëþáû ïàòýíò ïàâ³íåí áûöü àáî ïðàäñòà¢ëåíû ¢ñ³ì äëÿ âîëüíàãà âûêàðûñòàííÿ, àáî íå ïðàäñòà¢ëåíû í³êîìó.

        -

        ͳæýé ïàäàþööà äàêëàäíûÿ âûçíà÷ýíí³ ³ ¢ìîâû äëÿ êàï³ÿâàííÿ, ðàñïà¢ñþäæàííÿ ³ ìàäûô³êàöû³.

        -

        ÂÛÇÍÀ×ÝÍͲ ² ¡ÌÎÂÛ ÄËß ÊÀϲßÂÀÍÍß, ÐÀÑÏÀ¡ÑÞÄÆÀÍÍß ² ÌÀÄÛÔ²ÊÀÖÛ².

        -

        0. Ãýòàÿ ˳öýíç³ÿ ÿêàÿ ¢æûâàåööà äà ëþáîé ïðàãðàìû àáî ³íøàìó òâîðó, ÿê³ çìÿø÷àå ïàâåäàìëåííå, çìåø÷àíàå òðûìàëüí³êàì à¢òàðñê³õ ïðàâî¢ ³ ïàâåäàìëÿå àá òûì, øòî ÿíî ìîæà ðàñïà¢ñþäæâàööà ïðû ¢ìîâàõ, àáóìî¢ëåíûõ ó äàäçåíàé Óí³âåðñàëüíàé ãðàìàäñêàé ë³öýíç³³. Íàäàëåé òýðì³í "Ïðàãðàìà" àäíîñ³ööà äà ëþáîé òàêîé ïðàãðàìû àáî òâîðó, à òýðì³í "òâîð, çàñíàâàíû íà Ïðàãðàìå" àçíà÷àå Ïðàãðàìó àáî ëþáû òâîð, ÿê³ çìÿø÷àå Ïðàãðàìó àáî ÿå ÷àñòêó, äàñëî¢íóþ, àáî ìàäûô³êàâàíóþ, ³/àáî ïåðàêëàäçåíóþ íà ³íøóþ ìîâó. (Òóò ³ äàëåé ïåðàêëàä óêëþ÷àåööà áåç àáìåæàâàííÿ¢ ó ðàçóìåííå "ìàäûô³êàöûÿ".) Êîæíû ¢ëàäàëüí³ê ë³öýíç³³ àäðàñàâàíû ÿê "âû".

        -

        ³äû äçåéíàñö³, ÿê³ÿ íå ç'ÿ¢ëÿþööà êàï³ÿâàííåì, ðàñïà¢ñþäæàííåì àáî ìàäûô³êàöûÿé íå àõîïë³âàþööà ãýòàé ˳öýíç³ÿé; ÿíû çà ìåæàì³ ÿå ¢ïëûâó. Âûêàðûñòàííå Ïðàãðàìû ïà ÿå ôóíêöûÿíàëüíàìó ïðûçíà÷ýííþ íåàáìåæàâàíàå, ³ âûõàäíûÿ äàäçåíûÿ Ïðàãðàìû, øòî àõîïë³âàþööà ãýòàé ˳öýíç³ÿé, òîëüê³ êàë³ ³õ çìåñò ç'ÿ¢ëÿåööà òâîðàì, çàñíàâàíûì íà Ïðàãðàìå (íåçàëåæíà àä òàãî, ö³ áûë³ ÿíû àòðûìàíûÿ ¢ ïðàöýñå âûêàðûñòàííÿ Ïðàãðàìû). Ö³ ç'ÿ¢ëÿþööà ÿíû òàê³ì³, çàëåæûöü àä òàãî, øòî ìåíàâ³òà ðîá³öü Ïðàãðàìà.

        -

        1. Âû ìîæàöå êàï³ÿâàöü ³ ðàñïà¢ñþäæâàöü äàñëî¢íûÿ êîï³³ çûõîäíàãà êîäó Ïðàãðàìû ïà ÿãî àòðûìàíí³ íà ëþáûì íîñüá³öå, ïðû ¢ìîâå, øòî âû àäïàâåäíûì ÷ûíàì çìÿø÷àåöå íà áà÷íûì ìåñöû ¢ êîæíàé êîï³³ àäïàâåäíàå àïàâÿø÷ýííå àá à¢òàðñê³õ ïðàâàõ ³ àäìîâó àä ãàðàíòûÿ¢; ïàê³äàåöå íåêðàíóòûì³ ¢ñ¸ àïàâÿø÷ýíí³, ÿê³ÿ àäíîñÿööà äà äàäçåíàé ˳öýíç³³ ³ äà àäñóòíàñö³ ÿê³õ-íåáóäçü ãàðàíòûé; ³ ïåðàäàåöå ¢ñ³ì ³íøûì àòðûìàëüí³êàì Ïðàãðàìû êîï³þ äàäçåíàé ˳öýíç³³ ðàçàì ç Ïðàãðàìàé.

        -

        Âû ìîæàöå ïðûçíà÷ûöü ïëàòó çà ô³ç³÷íû àêò ïåðàäà÷û êîï³³ ³ ìîæàöå ïà ñâà³ì ìåðêàâàíí³ ïðàäñòà¢ëÿöü ãàðàíòû³ çà ¢çíàãàðîäæàííå.

        -

        2. Âû ìîæàöå çìÿíÿöü ñâàþ êîï³þ àáî êîï³³ Ïðàãðàìû àáî ëþáîé ÿå ÷àñòê³, ñòâàðàþ÷û òàê³ì ÷ûíàì òâîð, çàñíàâàíû íà Ïðàãðàìå, ³ êàï³ÿâàöü ³ ðàñïà¢ñþäæâàöü ãýòûÿ ìàäûô³êàöû³ àáî òâîð ó àäïàâåäíàñö³ ç Ðàçäçåëàì 1, ÿê³ ïðûâåäçåíû âûøýé, ïðû ¢ìîâå, øòî âû âûêàíàåöå ¢ñ¸ í³æýé ïðàï³ñàíûÿ ¢ìîâû:

        -
          -
        1. Âû àáàâÿçàíûÿ çàáÿñïå÷ûöü ìàäûô³êàâàíûÿ ôàéëû çà¢âàæíûì³ àïàâÿø÷ýííÿì³, ÿê³ÿ çìÿø÷àþöü óêàçàíí³ íà òîå, øòî âû çìÿí³ë³ ôàéëû, ³ äàòó êîæíàãà çìÿíåííÿ.
        2. -
        3. Âû àáàâÿçàíûÿ äàöü óñ³ì òðýö³ì àñîáàì ë³öýíç³þ íà áÿñïëàòíàå âûêàðûñòàííå êîæíàãà òâîðó, ÿê³ âû ðàñïà¢ñþäæâàåöå àáî ïóáë³êóåöå, öàëêàì, ³ ÿê³ öàëêàì àáî ÷àñòêîâà ¢òðûìë³âàå Ïðàãðàìó àáî ÿêóþ-íåáóäçü ÿå ÷àñòêó, íà ¢ìîâàõ, àáóìî¢ëåíûõ ó äàäçåíàé ˳öýíç³ÿé.
        4. -
        5. Êàë³ ìàäûô³êàâàíàÿ ïðàãðàìà çâû÷àéíà ÷ûòàå êàìàíäû ¢ ³íòýðàêòû¢íûì ðýæûìå ïðàöû, âû ïàâ³ííû çðàá³öü òàê, êàá ïðû çàïóñêó äëÿ ïðàöû ¢ òàê³ì ³íòýðàêòû¢íûì ðýæûìå çâû÷àéíûì äëÿ ÿå ÷ûíàì ÿíà äðóêàâàëà àáî âûâîäç³ëà íà ýêðàí àáâåñòêó, ÿêàÿ çìÿø÷àå àäïàâåäíàå àïàâÿø÷ýííå àá à¢òàðñê³õ ïðàâàõ ³ àïàâÿø÷ýííå àá òûì, øòî ãàðàíòûé íÿìà (àáî, íààäâàðîò, ÿêîå ïàâåäàìëÿå ïðà òîå, øòî âû çàáÿñïå÷âàåöå ãàðàíòû³), ³ øòî êàðûñòàëüí³ê³ ìîãóöü ïà¢òîðíà ðàñïà¢ñþäæâàöü ïðàãðàìó íà ãýòûõ óìîâàõ, ³ ÿêîå ïàêàçâàå êàðûñòàëüí³êó, ÿê ïðàãëåäç³öü êîï³þ äàäçåíàé ˳öýíç³³. (Âûêëþ÷ýííå: êàë³ ñàìà Ïðàãðàìà ïðàöóå ¢ ³íòýðàêòû¢íûì ðýæûìå, àëå çâû÷àéíà íå âûâîäç³öü ïàäîáíóþ àáâåñòêó, òî âàø òâîð, çàñíàâàíû íà Ïðàãðàìå, íå àáàâÿçàíû âûâîäç³öü àáâåñòêó.)
        -

        Ãýòûÿ ïàòðàáàâàíí³ ¢æûâàþööà äà ìàäûô³êàâàíàãà òâîðó ¢ öýëûì. Êàë³ âÿäîìûÿ ÷àñòê³ ãýòàãà òâîðó íå áûë³ çàñíàâàíûÿ íà Ïðàãðàìå ³ ìîãóöü àáãðóíòàâàíà ë³÷ûööà íåçàëåæíûì³ ³ ñàìàñòîéíûì³ òâîðàì³, òî ãýòàÿ ˳öýíç³ÿ ³ ÿå ¢ìîâû íå ðàñïà¢ñþäæâàþööà íà ãýòûÿ ÷àñòê³, êàë³ âû ðàñïà¢ñþäæâàåöå ³õ ÿê àñîáíûÿ òâîðû. Àëå êàë³ âû ðàñïà¢ñþäæâàåöå ãýòûÿ ÷àñòê³ ÿê ÷àñòêó öýëàãà òâîðó, çàñíàâàíàãà íà Ïðàãðàìå, òî âû àáàâÿçàíûÿ ðàá³öü ãýòà ¢ àäïàâåäíàñö³ ç óìîâàì³ äàäçåíàé ˳öýíç³³, ðàñïà¢ñþäæâàþ÷û ïðàâû àòðûìàëüí³êࢠë³öýíç³³ íà ¢âåñü òâîð ³, òàê³ì ÷ûíàì, íà êîæíóþ ÷àñòêó, íåçàëåæíà àä òàãî, õòî ÿãî íàï³ñà¢.

        -

        Òàê³ì ÷ûíàì, çìåñò ãýòàãà ðàçäçåëó íå ìàå íà ìýöå ïðýòýíäàâàöü íà âàøû ïðàâû íà òâîð, ÿê³ íàï³ñàíû öàëêàì âàì³, àáî àñïðý÷âàöü ³õ; ìýòà õóò÷ýé ó òûì, êàá ðàçâ³öü ïðàâà ê³ðàâàöü ðàñïà¢ñþäæàííåì âûòâîðíûõ àáî êàëåêòû¢íûõ òâîðà¢, çàñíàâàíûõ íà Ïðàãðàìå.

        -

        Àêðàìÿ òàãî, ïðîñòàå çíàõîäæàííå ³íøàãà òâîðó, íå çàñíàâàíàãà íà ãýòàé Ïðàãðàìå, ðàçàì ç Ïðàãðàìàé (àáî ç òâîðàì, çàñíàâàíûì íà ãýòàé Ïðàãðàìå) íà òûì æà íîñüá³öå äëÿ òðûâàëàãà çàõî¢âàííÿ, àáî ÿê³ ðàñïà¢ñþäæâàåööà íîñüá³öå, íå ðàñïà¢ñþäæâàå äçåÿííå ãýòàé ˳öýíç³³ íà ³íøû òâîð.

        -

        3. Âû ìîæàöå êàï³ÿâàöü ³ ðàñïà¢ñþäæâàöü Ïðàãðàìó (àáî òâîð, çàñíàâàíû íà ¸é) ïàâîäëå Ðàçäçåëà 2) ó àá'åêòíûì êîäçå àáî ¢ âûêàíàëüíûì âûãëÿäçå ¢ àäïàâåäíàñö³ ç Ðàçäçåëàì³ 1 ³ 2, øòî ïàäàäçåíûÿ âûøýé, ïðû ¢ìîâå, øòî âû òàêñàìà âûêàíàåöå àäíî ç íàñòóïíûõ ïàòðàáàâàííÿ¢:

        -
          -
        1. Ñóïðàâàäç³öå ÿå ïî¢íûì àäïàâåäíûì ìàøûíà÷ûòýëüíûì çûõîäíûì êîäàì, ÿê³ ìóñ³öü ðàñïà¢ñþäæâàööà ¢ àäïàâåäíàñö³ ç Ðàçäçåëàì³ 1 ³ 2, øòî ïðûâåäçåíûÿ âûøýé, íà íîñüá³öå, ÿê³ çâû÷àéíà âûêàðûñòî¢âàåööà äëÿ àáìåíó ÏÇ; àáî,
        2. -
        3. Ñóïðàâàäç³öå ÿå ï³ñüìîâûì ñêàçàì, äçåéñíûì ïðûíàìñ³ íà ïðàöÿãó òðîõ ãàäî¢, äàöü ëþáîé òðýöÿé àñîáå çà ¢çíàãàðîäæàííå êîøòàì íå áîëüøàå çà ô³ç³÷íû àêò âûðàáó êîï³³ ïî¢íóþ ìàøûíà÷ûòýëüíóþ êîï³þ àäïàâåäíàãà çûõîäíàãà êîäà, ÿêàÿ ìóñ³öü ðàñïà¢ñþäæâàööà ¢ àäïàâåäíàñö³ ç Ðàçäçåëàì³ 1 ³ 2, øòî ïðûâåäçåíûÿ âûøýé; àáî
        4. -
        5. Ñóïðàâàäç³öå ÿå ³íôàðìàöûÿé, àòðûìàíàé âàì³ ¢ ÿêàñö³ ïðàïàíîâû ðàñïà¢ñþäç³öü àäïàâåäíû çûõîäíû êîä. (Ãýòàÿ ìàã÷ûìàñöü äàïóø÷àëüíàÿ òîëüê³ äëÿ íåêàìåðöûéíàãà ðàñïà¢ñþäæàííÿ, ³ òîëüê³ êàë³ âû àòðûìàë³ ïðàãðàìó ¢ àá'åêòíûì êîäçå àáî ¢ âûêàíàëüíûì âûãëÿäçå ç ïðàïàíîâàé ó àäïàâåäíàñö³ ç Ïóíêòàì b) âûøýé.)
        -

        Çûõîäíû êîä äëÿ òâîðà àçíà÷àå ÿãîíû â³ä, áîëüø ïåðàâàæíû äëÿ âûêàíàííÿ ¢ ³ì ìàäûô³êàöûÿ¢. Äëÿ âûêîíâàåìàãà òâîðó ïî¢íû çûõîäíû êîä àçíà÷àå ¢ñå çûõîäíûÿ êîäû äëÿ ¢ñ³õ ìîäóëÿ¢, ÿê³ÿ ¸í óòðûìë³âàå, ïëþñ ëþáûÿ çâÿçàíûÿ ç òâîðàì ôàéëû àçíà÷ýíí³ ³íòýðôåéñó, ïëþñ ñöýíàðû³, âûêàðûñòàíûÿ äëÿ ê³ðàâàííÿ êàìï³ëÿöûÿ¢ ³ ëàäàâàííÿ âûêîíâàåìàãà òâîðó. Àäíàê, ó âûãëÿäçå àäìûñëîâàãà âûêëþ÷ýííÿ, çûõîäíû êîä, ÿê³ ðàñïà¢ñþäæâàåööà, íå àáàâÿçàíû ¢êëþ÷àöü òîå, øòî çâû÷àéíà ïðàäñòà¢ëÿåööà ç àñíî¢íûì³ êàìïàíåíòàì³ àïåðàöûéíàé ñ³ñòýìû, ïàä ê³ðàâàííåì ÿêîé ïðàöóå âûêîíâàåìû òâîð, çà âûêëþ÷ýííåì âûïàäêó, êàë³ ñàì êàìïàíåíò ñïàäàðîæí³÷àå âûêîíâàåìàìó òâîðó.

        -

        Êàë³ ðàñïà¢ñþäæàííå âûêîíâàåìàãà òâîðà àáî àá'åêòû¢íàãà êîäó àäáûâàåööà øëÿõàì ïðàäñòà¢ëåííÿ äîñòóïó äëÿ êàï³ÿâàííÿ ç âûçíà÷àíàãà ìåñöà, òî ïðàäñòà¢ëåííå äîñòóïó äëÿ êàï³ÿâàííÿ çûõîäíàãà êîäà ç òàãî æ ìåñöà ë³÷ûööà ðàñïà¢ñþäæàííåì çûõîäíàãà êîäà, íàâàò êàë³ òðýö³ÿ àñîáû íå çìóøàþööà äà êàï³ÿâàííÿ çûõîäíàãà êîäà ðàçàì ç àá'åêòíûì êîäàì.

        -

        4. Âû íå ìîæàöå êàï³ÿâàöü, çìÿíÿöü, ïà¢òîðíà ë³öýçàâàöü, àáî ðàñïà¢ñþäæâàöü Ïðàãðàìó ³íàêø, ÷ûì ãýòà â³äàâî÷íà ïðàäóãëåäæàíàå äàäçåíàé ˳öýíç³ÿé. Ëþáàÿ ñïðîáà êàï³ÿâàöü, çìÿíÿöü, ïà¢òîðíà ë³öýíçàâàöü, àáî ðàñïà¢ñþäæâàöü Ïðàãðàìó ÿê³ì-íåáóäçü ³íøûì ÷ûíàì íåïðàâàìåðíàÿ ³ à¢òàìàòû÷íà ñïûíÿå âàøû ïðàâû äàäçåíûÿ âàì ãýòàé ˳öýíç³ÿé. Àäíàê ë³öýíç³³ àñîáà¢, ÿê³ÿ àòðûìàë³ àä âàñ êîï³³ àáî ïðàâû ïàâîäëå äàäçåíàé Óí³âåðñàëüíàé ãðàìàäñêàé ë³öýíç³³, íå ñïûíÿöü ñâàéãî äçåÿííÿ äà òàãî ÷àñó, ïàêóëü ãýòûÿ àñîáû öàëêàì âûêîíâàþöü óìîâû.

        -

        5. Âû íå àáàâÿçàíûÿ ïàãàäæàööà ç ãýòàé ˳öýíç³ÿé, òàìó øòî âû íå ïàäï³ñâàë³ ÿå. Àäíàê òàäû âû íå àòðûìë³âàåöå ïðàâû ìàäûô³êàâàöü àáî ðàñïà¢ñþäæâàöü Ïðàãðàìó àáî çàñíàâàíûÿ íà Ïðàãðàìå òâîðû. Ãýòûÿ äçåÿíí³ çàáàðîíåíûÿ çàêîíàì, êàë³ âû íå òðûìàåöåñÿ ïàòðàáàâàííÿ¢ äàäçåíàé ˳öýíç³³. À çíà÷ûöü, çìÿíÿþ÷û àáî ðàñïà¢ñþäæâàþ÷û Ïðàãðàìó (àáî òâîð, çàñíàâàíû íà Ïðàãðàìå), âû âûêàçâàåöå ñâàþ çãîäó ç ãýòàé ˳öýíç³ÿé ³ ¢ñ³ì³ ÿå ¢ìîâàì³ àá êàï³ÿâàíí³, ðàñïà¢ñþäæàíí³ àáî ìàäûô³êàöû³ Ïðàãðàìû àáî òâîðà¢, çàñíàâàíûõ íà ¸é.

        -

        6. Êîæíû ðàç, êàë³ âû ïà¢òîðíà ðàñïà¢ñþäæâàåöå Ïðàãðàìó (àáî ëþáû òâîð, çàñíàâàíû íà Ïðàãðàìå), àòðûìàëüí³ê à¢òàìàòû÷íà àòðûìë³âàå ë³öýíç³þ àä ïåðøàïà÷àòêîâàãà òðûìàëüí³êà ë³öýíç³³ íà êàï³ÿâàííå, ðàñïà¢ñþäæàííå àáî ìàäûô³êàöûþ Ïðàãðàìû, ÿêàÿ àáóìî¢ë³âàåööà ¢ ãýòûõ âûçíà÷ýííÿõ ³ ¢ìîâàõ. Âû íå ìîæàöå íàêëàäàöü ÿê³õ-íåáóäçü äàäàòêîâûÿ àáìåæàâàíí³ íà àæûööÿ¢ëåííå àòðûìàëüí³êàì ïðàâî¢, ïðàäñòà¢ëåíûõ äàäçåíûì äàêóìåíòàì. Âû íå íÿñåöå àäêàçíàñö³ çà çàõàâàííå òðýö³ì³ àñîáàì³ ¢ìîâࢠãýòàé ˳öýíç³³.

        -

        7. Êàë³ ¢ âûí³êó ñóäîâàãà ðàçãëÿäó, àáî àáâ³íàâà÷âàííÿ ¢ ïàðóøýíí³ ïàòýíòà àáî ïà ëþáûì ³íøûì ÷ûíí³êó (íå àáàâÿçêîâà çâÿçàíàé ç ïàòýíòàì³), âàì íàâÿçàíûÿ ¢ìîâû, øòî ñóïÿðý÷àöü äàäçåíàé ˳öýíç³³ (ÿê ïà ðàøýíí³ ñóäó, òàê ³ íå), òî ãýòà íå âûçâàëÿå âàñ àä çàõàâàííÿ ïðàâ³ëࢠ˳öýíç³³. Êàë³ âû íå ìîæàöå çàéìàööà ðàñïà¢ñþäæàííåì òàê³ì ÷ûíàì, êàá àäíà÷àñîâà çàäàâîë³öü ïàòðàáàâàíí³ ³ ãýòàé ˳öýíç³³, ³ ¢ñ³ì ³íøûì ïàòðàáàâàííÿì, òî âû íå ïàâ³ííû çàéìàööà ðàñïà¢ñþäæàííåì Ïðàãðàìû. Íàïðûêëàä, êàë³ ïàòýíò íå äàçâàëÿå áÿçâûïëàòíàå ïà¢òîðíàå ðàñïà¢ñþäæàííå Ïðàãðàìû ¢ñ³ì, õòî àòðûìࢠêîï³³ àä âàñ íåïàñðýäíà àáî ïðàç ïàñÿðýäí³êà¢, òî àäç³íûì ñïîñàáàì çàäàâîë³öü ³ ïàòýíòó, ³ ãýòàé ˳öýíç³³ áóäçå âàøà ïî¢íàÿ àäìîâà àä ðàñïà¢ñþäæàííÿ Ïðàãðàìû.

        -

        Êàë³ ÿêàÿ-íåáóäçü ÷àñòêà ãýòàãà ðàçäçåëó íå ìàå ñ³ëû àáî íå ìîæà áûöü äàñòàñàâàíà äà ëþáûõ ïý¢íûõ àêàë³÷íàñöÿ¢, òî ìàåööà íà ¢âàçå, øòî ìàå ñ³ëó àñòàòíÿÿ ÷àñòêà ðàçäçåëó, ³ ¢âåñü ðàçäçåë ìàå ñ³ëó ïðû ³íøûõ àêàë³÷íàñöÿõ.

        -

        Ìýòà ãýòàãà ðàçäçåëó íå çààõâîö³öü âàñ ðàá³öü çàÿâû àá ïàðóøýííÿõ ïðàâî¢ íà ïàòýíò, àáî ³íøûõ ïðýòýíç³ÿõ íà ïðàâà ¢ëàñíàñö³, àáî àñïðý÷âàöü ïðàâ³ëüíàñöü ïàäîáíûõ ïðýòýíç³ÿ¢; àäç³íàÿ ìýòà ãýòàãà ïàäçåëó --- àáàðîíà öýëàñíàñö³ ñ³ñòýìû ðàñïà¢ñþäæàííÿ ñâàáîäíàãà ÏÇ, ÿêàÿ ðýàë³çóåööà âûêàðûñòàííåì àãóëüíûõ ë³öýíç³ÿ¢. Ìíîã³ÿ ëþäç³ äçÿêóþ÷û ãýòàé ñ³ñòýìå ¢íåñë³ ø÷îäðû ¢í¸ñàê ó øûðîê³ ñïåêòð ÏÇ, ÿêîå ðàñïà¢ñþäæâàåööà ïàëàãàþ÷ûñÿ íà ¢çãîäíåíàå ¢æûâàííå ãýòàé ñ³ñòýìû; à¢òàðó íàëåæûöü ïðàâà ö³ æàäàå ¸í àáî ÿíà ðàñïà¢ñþäæâàöü ÏÇ ó ãýòàé ñ³ñòýìå àáî ¢ íåéêàé ³íøàé, ³ àòðûìàëüí³ê ë³öýíç³³ íå ìîæà ¢ïëûâàöü íà ïðûíÿööå ãýòàãà ðàøýííÿ.

        -

        Ãýòû ïàäçåë ïðûçíà÷àíû äëÿ òàãî, êàá äàêëàäíà ïðàñâÿòë³öü, ÿêàÿ ¸ñöü âûñíîâà ç àñòàòíÿé ÷àñòê³ äàäçåíàé ˳öýíç³³.

        -

        8. Êàë³ ðàñïà¢ñþäæàííå ³/àáî ¢æûâàííå Ïðàãðàìû àáìåæàâàíàå ¢ øýðàãó êðà³í àáî ïàòýíòàì³, àáî à¢òàðñê³ì³ ïðàâàì³ íà ³íòýðôåéñû, ïåðøàïà÷àòêîâû ¢ëàäàëüí³ê à¢òàðñê³õ ïðàâî¢, ÿê³ âûïóñêàå Ïðàãðàìó ç ãýòàé ˳öýíç³ÿé, ìîæà äàäàöü â³äàâî÷íàå àáìåæàâàííå íà ãåàãðàô³÷íàå ðàñïà¢ñþäæàííå, âûêëþ÷û¢øû òàê³ÿ êðà³íû, òàê øòî ðàñïà¢ñþäæàííå äàçâàëÿåööà òîëüê³ ¢ òûõ êðà³íàõ, ÿê³ÿ íå áûë³ âûêëþ÷àíûÿ. Ó ãýòûì âûïàäêó äàäçåíàÿ ˳öýíç³ÿ ¢êëþ÷àå ¢ ñÿáå ãýòàå àáìåæàâàííå, ÿê êàë³ á ÿíî áûëî íàï³ñàíà ¢ òýêñöå äàäçåíàé ˳öýíç³³.

        -

        9. Ôîíä ñâàáîäíàãà ÏÇ ìîæà ÷àñ àä ÷àñó ïóáë³êàâàöü ïåðàãëåäæàíûÿ ³/àáî íîâûÿ âåðñ³³ ¡í³âåðñàëüíàé ãðàìàäñêàé ë³öýíç³³. Òàê³ÿ íîâûÿ âåðñ³³ áóäóöü ïàäîáíûÿ ïà äóõó ç äàäçåíàé âåðñ³ÿé, àëå ìîãóöü àäðîçí³âàööà ¢ äýòàëÿõ, íàê³ðàâàíûõ íà íîâûÿ ïðàáëåìû àáî àêàë³÷íàñö³.

        -

        Êîæíàé âåðñ³³ íàäàåööà àäìåòíû íóìàð âåðñ³³. Êàë³ ¢ Ïðàãðàìå ïàçíà÷àíû íóìàð âåðñ³³ äàäçåíàé ˳öýíç³³, ÿêàÿ äà ÿå ïðûìÿíÿåööà, ³ ñëîâû "ëþáàÿ íàñòóïíàÿ âåðñ³ÿ", âû ìîæàöå íà âûáàð ³ñö³ ¢ñëåä âûçíà÷ýííÿì ³ ¢ìîâàì àáî äàäçåíàé âåðñ³³, àáî ëþáîé íàñòóïíàé âåðñ³³, àïóáë³êàâàíàé Ôîíäàì ñâàáîäíàãà ÏÇ. Êàë³ ¢ Ïðàãðàìå íå ïàçíà÷àíû íóìàð âåðñ³³ äàäçåíàé ˳öýíç³³, âû ìîæàöå âûáðàöü ëþáóþ âåðñ³þ, êàë³-íåáóäçü àïóáë³êàâàíóþ Ôîíäàì ñâàáîäíàãà ÏÇ.

        -

        10. Êàë³ âû æàäàåöå ¢áóäàâàöü ÷àñòê³ Ïðàãðàìû ¢ ³íøûÿ ñâàáîäíûÿ ïðàãðàìû ç ³íøûì³ ¢ìîâàì³ ðàñïà¢ñþäæàííÿ, íàï³øûöå à¢òàðó ç ïðîñüáàé àá äàçâîëå. Äëÿ ÏÇ, ÿêîå àõî¢âàåööà à¢òàðñê³ì³ ïðàâàì³ Ôîíäó ñâàáîäíàãà ÏÇ, íàï³øûöå ¢ Ôîíä ñâàáîäíàãà ÏÇ; ìû ÷àñàì ðîá³ì âûêëþ÷ýíí³ äëÿ ãýòàãà. Íàøàå ðàøýííå áóäçå ê³ðàâàööà äâóìà ìýòàì³: çàõàâàííÿ ñâàáîäíàãà ñòàòóòó ¢ñ³õ âûòâîðíûõ íàøàãà ñâàáîäíàãà ÏÇ ³ ñàäçåéí³÷àííÿ ñóìåñíàìó ³ ïà¢òîðíàìó âûêàðûñòàííþ ÏÇ íàîãóë.

        -

        ͲßÊ²Õ ÃÀÐÀÍÒÛß¡

        -

        11. ÏÀÊÎËÜʲ ÏÐÀÃÐÀÌÀ ÏÐÀÄÑÒÀ¡ËßÅÖÖÀ ÁßÑÏËÀÒÍÀ, ÍÀ ÏÐÀÃÐÀÌÓ ÍßÌÀ ÃÀÐÀÍÒÛÉ Ó ÒÎÉ ÌÅÐÛ, ßÊÀß ÄÀÏÓÑÊÀÅÖÖÀ ÇÀÊÎÍÀÌ, ØÒÎ ¡ÆÛÂÀÅÖÖÀ ¡ ÃÝÒÀÉ ÑÔÅÐÛ. ÇÀ ÂÛÊËÞ×ÝÍÍÅÌ ÒÛÕ ÂÛÏÀÄÊÀ¡, ÊÀ˲ ÀÄÂÀÐÎÒÍÀÅ ÇÀß¡ËÅÍÀ ¡ ϲÑÜÌÎÂÀÉ ÔÎÐÌÅ, ÒÐÛÌÀËÜͲʲ À¡ÒÀÐÑÊ²Õ ÏÐÀÂΡ ²/ÀÁÎ ²ÍØÛß ÁÀʲ ÏÀÑÒÀ¡ËßÞÖÜ ÏÐÀÃÐÀÌÓ "ßÊ ßÍÀ ¨ÑÖÜ" ÁÅÇ ßÊÎÃÀ-ÍÅÁÓÄÇÜ Â²ÄÓ ÃÀÐÀÍÒÛß¡, ÂÛß¡ËÅÍÛÕ Â²ÄÀÂÎ×ÍÀ ÀÁÎ ßÊ²ß ÌÀÞÖÖÀ ÍÀ ¡ÂÀÇÅ, ÓÊËÞ×ÀÞ×Û, ÀËÅ ÍÅ ÀÁÌßÆÎ¡ÂÀÞ×ÛÑß ÌÀÞ×Û̲Ñß ÍÀ ¡ÂÀÇÅ ÃÀÐÀÍÒÛß̲ ÊÀÌÅÐÖÛÉÍÀÉ ÂÀÐÒÀÑÖ² ² ÏÐÛÄÀÒÍÀÑÖ² ÄËß ÊÀÍÊÐÝÒÍÀÉ ÌÝÒÛ. ÓÑß ÐÛÇÛÊÀ ÀÄÍÎÑÍÀ ßÊÀÑÖ² ² ÏÐÀÄÓÊÖÛÉÍÀÑÖ² ÏÐÀÃÐÀÌÛ ÇÀÑÒÀÅÖÖÀ ÏÐÛ ÂÀÑ. ÊÀ˲ ÏÐÀÃÐÀÌÀ ÀÏÛÍÅÖÖÀ ÄÝÔÅÊÒÍÀÉ, ÂÛ ÏÐÛÌÀÅÖÅ ÍÀ ÑßÁÅ ÊÎØÒ ÓÑßÃÎ ÍÅÀÁÕÎÄÍÀÃÀ ÀÁÑËÓÃΡÂÀÍÍß, ÀÄÍÀ¡ËÅÍÍß ÀÁÎ ÂÛÏÐÀ¡ËÅÍÍß.

        -

        12. ² ¡ ßÊ²Ì ÐÀÇÅ, ÊÀ˲ ÍÅ ÏÀÒÐÀÁÓÅÖÖÀ ÀÄÏÀÂÅÄÍÛÌ ÇÀÊÎÍÀÌ ÀÁÎ ÍÅ ÀÁÓÌΡËÅÍÀ ¡ ϲÑÜÌÎÂÀÉ ÔÎÐÌÅ, Ͳßʲ ÒÐÛÌÀËÜÍ²Ê À¡ÒÀÐÑÊ²Õ ÏÐÀÂΡ ÀÁΠͲßÊÀß ²ÍØÀß ÀÑÎÁÀ, ßÊÀß ÌÎÆÀ ÇÌßÍßÖÜ ²/ÀÁÎ ÏÀ¡ÒÎÐÍÀ ÐÀÑÏÀ¡ÑÞÄÆÂÀÖÜ ÏÐÀÃÐÀÌÓ, ßÊ ÁÛËÎ ÄÀÇÂÎËÅÍÀ ÂÛØÝÉ, ÍÅ ÍßÑÓÖÜ ÀÄÊÀÇÍÀÑÖ² ÏÅÐÀÄ ÂÀ̲ ÇÀ ÑÒÐÀÒÛ, ÓÊËÞ×ÀÞ×Û ËÞÁÛß ÑÓÏÎËÜÍÛß, ÀÄÌÛÑËÎÂÛß, ÂÛÏÀÄÊÎÂÛß ÀÁÎ, ßÊ ÑËÅÄÑÒÂÀ ÑÒÐÀÒÛ, ßÊ²ß ÂÛͲÊ˲ Ç ÏÐÛ×ÛÍÛ ÂÛÊÀÐÛÑÒÀÍÍß ÀÁÎ ÍÅÌÀÃ×ÛÌÀÑÖ² ÂÛÊÀÐÛÑÒÀÍÍß ÏÐÀÃÐÀÌÛ (ÓÊËÞ×ÀÞ×Û, ÀËÅ ÍÅ ÀÁÌßÆÎ¡ÂÀÞ×Û ÑÒÐÀÒÀÉ ÄÀÄÇÅÍÛÕ, ÀÁÎ ÄÀÄÇÅÍÛ̲, ßÊ²ß ÑÒÀ˲ ÍßÏÐÀ²ËÜÍÛ̲, ÀÁÎ ÑÒÐÀÒÀ̲, ØÒÎ ÁÛ˲ ÏÀÍÅÑÅÍÛß Ç-ÇÀ ÂÀÑ ÀÁÎ ÒÐÝÖ²Õ ÀÑÎÁÀ¡, ÀÁÎ ÀÄÌÎÂÀÉ ÏÐÀÃÐÀÌÛ ÏÐÀÖÀÂÀÖÜ ÑÓÌÅÑÍÀ Ç ËÞÁÛ̲ ²ÍØÛ̲ ÏÐÀÃÐÀÌÀ̲), ÍÀÂÀÒ ÊÀ˲ ÒÀʲ ÒÐÛÌÀËÜÍ²Ê ÀÁÎ ²ÍØÀß ÀÑÎÁÀ ÁÛ˲ ÀÏÀÂÅØ×ÀÍÛ ÀÁ ÌÀÃ×ÛÌÀÑÖ² ÒÀÊ²Õ ÑÒÐÀÒÀ¡.

        -

        ÊÀÍÅÖ ÂÛÇÍÀ×ÝÍÍß¡ ² ¡ÌΡ

        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        - - \ No newline at end of file + + + +

        Copyright © 2001-2004, Martin Dougiamas.

        +

         

        +

        ÓͲÂÅÐÑÀËÜÍÀß ÃÐÀÌÀÄÑÊÀß Ë²ÖÝÍÇ²ß GNU

        +

        Âåðñ³ÿ 1, ë³ñòàïàä 2004 ã.

        +

        Copyright (C) 1989, 1991 Free Software Foundation, Inc.
        59 Temple Place, Suite 330, Boston, MA 02111--1307, USA

        Copyright (C) ïåðàêëàä íà áåëàðóñêóþ ìîâó,
        2004 Ñÿðæóê Êðó÷êî¢
        2004 Êðó÷êî¢ Ñ.Ì.

        Óñ³ì äàçâàëÿåööà êàï³ÿâàöü ³ ðàñïà¢ñþäæâàöü äàñëî¢íûÿ êîï³³ ãýòàãà ë³öýíç³éíàãà äàêóìåíòó, àëå çìÿíÿöü ÿãî íåëüãà.
        +

        Ïðýàìáóëà

        +

        ˳öýíç³³ íà âÿë³êóþ ÷àñòêó ïðàãðàìíàãà çàáåñïÿ÷ýííÿ (ÏÇ), ñêëàäçåíûÿ òàê, êàá ïàçáàâ³öü âàñ ñâàáîäû ñóìåñíà âûêàðûñòàöü ³ çìÿíÿöü ÿãî. Íààäâàðîò, Óí³âåðñàëüíàÿ ãðàìàäñêàÿ ë³öýíç³ÿ GNU ïðûçíà÷àíàÿ ãàðàíòàâàöü âàøóþ ñâàáîäó ñóìåñíà âûêàðûñòî¢âàöü ³ çìÿíÿöü ñâàáîäíàå ÏÇ, ã.ç. ñöâåðäç³öü, øòî ÏÇ ç'ÿ¢ëÿåööà ñâàáîäíûì äëÿ ¢ñ³õ ÿãî êàðûñòàëüí³êà¢. Ãýòàÿ ¡í³âåðñàëüíàÿ ãðàìàäñêàÿ ë³öýíç³ÿ ÿêàÿ ¢æûâàåööà äà áîëüøàé ÷àñòê³ ÏÇ Ôîíäó ñâàáîäíàãà ÏÇ ³ äà ¢ñ³õ ³íøûõ ïðàãðàì, ÷ûå à¢òàðû ïðûìàþöü íà ñÿáå àáàâÿçàöåëüñòâû ÿå âûêàðûñòàöü. (Çàìåñò ÿå äëÿ ÷àñòê³ ÏÇ Ôîíäó ñâàáîäíàãà ÏÇ óæûâàåööà ¡í³âåðñàëüíàÿ ãðàìàäñêàÿ ë³öýíç³ÿ GNU äëÿ á³áë³ÿòýê.) Âû òàêñàìà ìîæàöå âûêàðûñòàöü ÿå äëÿ ñâà³õ ïðàãðàìà¢. +

        Êàë³ ìû ãàâîðûì àá ñâàáîäíûì ÏÇ, ìû ìàåì íà ¢âàçå ñâàáîäó, à íå êîøò. Ìÿðêóåööà, øòî íàøû ¡í³âåðñàëüíûÿ ãðàìàäñê³ÿ ë³öýíç³³ ãàðàíòóþöü, øòî âû êàðûñòàåöåñÿ ñâàáîäàé ðàñïà¢ñþäæâàöü êîï³³ ñâàáîäíàãà ÏÇ (³ àòðûìë³âàöü çà ãýòà ¢çíàãàðîäæàííå, êàë³ âû òàãî æàäàåöå); øòî âû àòðûìë³âàåöå çûõîäíû êîä àáî ìîæàöå àòðûìàöü ÿãî, êàë³ çàõî÷àöå; øòî âû ìîæàöå çìÿíÿöü ÏÀ àáî âûêàðûñòàöü ÿãî ÷àñòê³ ¢ íîâûõ ñâàáîäíûõ ïðàãðàìàõ; ³ øòî âû âåäàåöå, øòî âû ìîæàöå ¢ñå ãýòà ðàá³öü. +

        Êàá àáàðàí³öü âàøû ïðàâû, íàì òðýáà àçíà÷ûöü òàê³ÿ àáìåæàâàíí³, ÿê³ÿ çàáàðîíÿöü êàìó á òî í³ áûëî àäìà¢ëÿöü âàì ó ãýòûõ ïðàâàõ àáî çàïàòðàáàâàöü àä âàñ àäìîâ³ööà àä ãýòûõ ïðàâî¢. Ãýòûÿ àáìåæàâàíí³ ïåðàâîäçÿööà ¢ íåêàòîðûÿ àáàâÿçàöåëüñòâû äëÿ âàñ, êàë³ âû ðàñïà¢ñþäæâàåöå êîï³³ ÏÇ àáî êàë³ âû ìàäûô³êóåöå ÿãî. +

        Íàïðûêëàä, êàë³ âû ðàñïà¢ñþäæâàåöå êîï³³ òàêîé ïðàãðàìû áÿñïëàòíà àáî çà ¢çíàãàðîäæàííå, âû ïàâ³ííû äàöü àòðûìàëüí³êàì óñ¸ ïðàâû, ÿê³ì³ âû âàëîäàåöå. Âû ïàâ³ííû ãàðàíòàâàöü, øòî ÿíû òàêñàìà àòðûìàþöü àáî çìîãóöü àòðûìàöü çûõîäíû êîä. ² âû ïàâ³ííû ïàêàçàöü ³ì ãýòûÿ ¢ìîâû, êàá ÿíû âåäàë³ àá ñâà³õ ïðàâàõ. +

        Ìû àáàðàíÿåì âàøû ïðàâû ¢ äâà ýòàïû: (1) çàõî¢âàåì à¢òàðñê³ÿ ïðàâû íà ÏÇ ³ (2) ïðàïàíî¢âàåì âàì ãýòóþ ë³öýíç³þ, ÿêàÿ äàå âàì çàêîííàå ïðàâà êàï³ðàâàöü, ðàñïà¢ñþäæâàöü ³/àáî ìàäûô³êàâàöü ÏÇ. +

        Òàêñàìà, êàá àáàðàí³öü íàñ ³ êîæíàãà à¢òàðà, ìû æàäàåì ïåðàêàíàööà, øòî ¢ñå ðàçóìåþöü, øòî ãàðàíòûé íà ãýòà ñâàáîäíàå ÏÇ íÿìà. Êàë³ ÏÇ ìàäûô³êóåööà ³ ïåðàäàåööà ê³ì-íåáóäçü ÿø÷ý, ìû æàäàåì, êàá àòðûìàëüí³ê³ ÏÇ âåäàë³, øòî òîå, øòî ¢ ³õ ¸ñöü --- ãýòà íå àðûã³íàë, êàá ëþáûÿ ïðàáëåìû, ñòâîðàíûÿ ³íøûì³, íå àäá³ë³ñÿ íà ðýïóòàöû³ ïåðøàïà÷àòêîâûõ à¢òàðà¢. +

        ² íàðýøöå, êîæíàé âñâàáîäíàé ïðàãðàìå çà¢ñ¸äû ïàãðàæàþöü ïàòýíòû íà ÏÇ. Ìû æàäàåì óí³êíóöü íåáÿñïåê³, øòî ïà¢òîðíûÿ ðàñïà¢ñþäæâàëüí³ê³ ñâàáîäíàé ïðàãðàìû ñàìàñòîéíà àòðûìàþöü ïàòýíòû, ðîáÿ÷û ïðàãðàìó òàê³ì ÷ûíàì ïðûâàòíàé óëàñíàñöþ. Êàá ïðàäóõ³ë³öü ãýòà, ìû ÿ¢íà çàÿ¢ëÿåì, øòî ëþáû ïàòýíò ïàâ³íåí áûöü àáî ïðàäñòà¢ëåíû ¢ñ³ì äëÿ âîëüíàãà âûêàðûñòàííÿ, àáî íå ïðàäñòà¢ëåíû í³êîìó. +

        ͳæýé ïàäàþööà äàêëàäíûÿ âûçíà÷ýíí³ ³ ¢ìîâû äëÿ êàï³ÿâàííÿ, ðàñïà¢ñþäæàííÿ ³ ìàäûô³êàöû³. +

        ÂÛÇÍÀ×ÝÍͲ ² ¡ÌÎÂÛ ÄËß ÊÀϲßÂÀÍÍß, ÐÀÑÏÀ¡ÑÞÄÆÀÍÍß ² ÌÀÄÛÔ²ÊÀÖÛ².

        +

        0. Ãýòàÿ ˳öýíç³ÿ ÿêàÿ ¢æûâàåööà äà ëþáîé ïðàãðàìû àáî ³íøàìó òâîðó, ÿê³ çìÿø÷àå ïàâåäàìëåííå, çìåø÷àíàå òðûìàëüí³êàì à¢òàðñê³õ ïðàâî¢ ³ ïàâåäàìëÿå àá òûì, øòî ÿíî ìîæà ðàñïà¢ñþäæâàööà ïðû ¢ìîâàõ, àáóìî¢ëåíûõ ó äàäçåíàé Óí³âåðñàëüíàé ãðàìàäñêàé ë³öýíç³³. Íàäàëåé òýðì³í "Ïðàãðàìà" àäíîñ³ööà äà ëþáîé òàêîé ïðàãðàìû àáî òâîðó, à òýðì³í "òâîð, çàñíàâàíû íà Ïðàãðàìå" àçíà÷àå Ïðàãðàìó àáî ëþáû òâîð, ÿê³ çìÿø÷àå Ïðàãðàìó àáî ÿå ÷àñòêó, äàñëî¢íóþ, àáî ìàäûô³êàâàíóþ, ³/àáî ïåðàêëàäçåíóþ íà ³íøóþ ìîâó. (Òóò ³ äàëåé ïåðàêëàä óêëþ÷àåööà áåç àáìåæàâàííÿ¢ ó ðàçóìåííå "ìàäûô³êàöûÿ".) Êîæíû ¢ëàäàëüí³ê ë³öýíç³³ àäðàñàâàíû ÿê "âû". +

        ³äû äçåéíàñö³, ÿê³ÿ íå ç'ÿ¢ëÿþööà êàï³ÿâàííåì, ðàñïà¢ñþäæàííåì àáî ìàäûô³êàöûÿé íå àõîïë³âàþööà ãýòàé ˳öýíç³ÿé; ÿíû çà ìåæàì³ ÿå ¢ïëûâó. Âûêàðûñòàííå Ïðàãðàìû ïà ÿå ôóíêöûÿíàëüíàìó ïðûçíà÷ýííþ íåàáìåæàâàíàå, ³ âûõàäíûÿ äàäçåíûÿ Ïðàãðàìû, øòî àõîïë³âàþööà ãýòàé ˳öýíç³ÿé, òîëüê³ êàë³ ³õ çìåñò ç'ÿ¢ëÿåööà òâîðàì, çàñíàâàíûì íà Ïðàãðàìå (íåçàëåæíà àä òàãî, ö³ áûë³ ÿíû àòðûìàíûÿ ¢ ïðàöýñå âûêàðûñòàííÿ Ïðàãðàìû). Ö³ ç'ÿ¢ëÿþööà ÿíû òàê³ì³, çàëåæûöü àä òàãî, øòî ìåíàâ³òà ðîá³öü Ïðàãðàìà. +

        +

        1. Âû ìîæàöå êàï³ÿâàöü ³ ðàñïà¢ñþäæâàöü äàñëî¢íûÿ êîï³³ çûõîäíàãà êîäó Ïðàãðàìû ïà ÿãî àòðûìàíí³ íà ëþáûì íîñüá³öå, ïðû ¢ìîâå, øòî âû àäïàâåäíûì ÷ûíàì çìÿø÷àåöå íà áà÷íûì ìåñöû ¢ êîæíàé êîï³³ àäïàâåäíàå àïàâÿø÷ýííå àá à¢òàðñê³õ ïðàâàõ ³ àäìîâó àä ãàðàíòûÿ¢; ïàê³äàåöå íåêðàíóòûì³ ¢ñ¸ àïàâÿø÷ýíí³, ÿê³ÿ àäíîñÿööà äà äàäçåíàé ˳öýíç³³ ³ äà àäñóòíàñö³ ÿê³õ-íåáóäçü ãàðàíòûé; ³ ïåðàäàåöå ¢ñ³ì ³íøûì àòðûìàëüí³êàì Ïðàãðàìû êîï³þ äàäçåíàé ˳öýíç³³ ðàçàì ç Ïðàãðàìàé. +

        Âû ìîæàöå ïðûçíà÷ûöü ïëàòó çà ô³ç³÷íû àêò ïåðàäà÷û êîï³³ ³ ìîæàöå ïà ñâà³ì ìåðêàâàíí³ ïðàäñòà¢ëÿöü ãàðàíòû³ çà ¢çíàãàðîäæàííå. +

        +

        2. Âû ìîæàöå çìÿíÿöü ñâàþ êîï³þ àáî êîï³³ Ïðàãðàìû àáî ëþáîé ÿå ÷àñòê³, ñòâàðàþ÷û òàê³ì ÷ûíàì òâîð, çàñíàâàíû íà Ïðàãðàìå, ³ êàï³ÿâàöü ³ ðàñïà¢ñþäæâàöü ãýòûÿ ìàäûô³êàöû³ àáî òâîð ó àäïàâåäíàñö³ ç Ðàçäçåëàì 1, ÿê³ ïðûâåäçåíû âûøýé, ïðû ¢ìîâå, øòî âû âûêàíàåöå ¢ñ¸ í³æýé ïðàï³ñàíûÿ ¢ìîâû: +

        +

          +
        1. Âû àáàâÿçàíûÿ çàáÿñïå÷ûöü ìàäûô³êàâàíûÿ ôàéëû çà¢âàæíûì³ àïàâÿø÷ýííÿì³, ÿê³ÿ çìÿø÷àþöü óêàçàíí³ íà òîå, øòî âû çìÿí³ë³ ôàéëû, ³ äàòó êîæíàãà çìÿíåííÿ. +

          +
        2. Âû àáàâÿçàíûÿ äàöü óñ³ì òðýö³ì àñîáàì ë³öýíç³þ íà áÿñïëàòíàå âûêàðûñòàííå êîæíàãà òâîðó, ÿê³ âû ðàñïà¢ñþäæâàåöå àáî ïóáë³êóåöå, öàëêàì, ³ ÿê³ öàëêàì àáî ÷àñòêîâà ¢òðûìë³âàå Ïðàãðàìó àáî ÿêóþ-íåáóäçü ÿå ÷àñòêó, íà ¢ìîâàõ, àáóìî¢ëåíûõ ó äàäçåíàé ˳öýíç³ÿé. +

          +
        3. Êàë³ ìàäûô³êàâàíàÿ ïðàãðàìà çâû÷àéíà ÷ûòàå êàìàíäû ¢ ³íòýðàêòû¢íûì ðýæûìå ïðàöû, âû ïàâ³ííû çðàá³öü òàê, êàá ïðû çàïóñêó äëÿ ïðàöû ¢ òàê³ì ³íòýðàêòû¢íûì ðýæûìå çâû÷àéíûì äëÿ ÿå ÷ûíàì ÿíà äðóêàâàëà àáî âûâîäç³ëà íà ýêðàí àáâåñòêó, ÿêàÿ çìÿø÷àå àäïàâåäíàå àïàâÿø÷ýííå àá à¢òàðñê³õ ïðàâàõ ³ àïàâÿø÷ýííå àá òûì, øòî ãàðàíòûé íÿìà (àáî, íààäâàðîò, ÿêîå ïàâåäàìëÿå ïðà òîå, øòî âû çàáÿñïå÷âàåöå ãàðàíòû³), ³ øòî êàðûñòàëüí³ê³ ìîãóöü ïà¢òîðíà ðàñïà¢ñþäæâàöü ïðàãðàìó íà ãýòûõ óìîâàõ, ³ ÿêîå ïàêàçâàå êàðûñòàëüí³êó, ÿê ïðàãëåäç³öü êîï³þ äàäçåíàé ˳öýíç³³. (Âûêëþ÷ýííå: êàë³ ñàìà Ïðàãðàìà ïðàöóå ¢ ³íòýðàêòû¢íûì ðýæûìå, àëå çâû÷àéíà íå âûâîäç³öü ïàäîáíóþ àáâåñòêó, òî âàø òâîð, çàñíàâàíû íà Ïðàãðàìå, íå àáàâÿçàíû âûâîäç³öü àáâåñòêó.)
        +

        Ãýòûÿ ïàòðàáàâàíí³ ¢æûâàþööà äà ìàäûô³êàâàíàãà òâîðó ¢ öýëûì. Êàë³ âÿäîìûÿ ÷àñòê³ ãýòàãà òâîðó íå áûë³ çàñíàâàíûÿ íà Ïðàãðàìå ³ ìîãóöü àáãðóíòàâàíà ë³÷ûööà íåçàëåæíûì³ ³ ñàìàñòîéíûì³ òâîðàì³, òî ãýòàÿ ˳öýíç³ÿ ³ ÿå ¢ìîâû íå ðàñïà¢ñþäæâàþööà íà ãýòûÿ ÷àñòê³, êàë³ âû ðàñïà¢ñþäæâàåöå ³õ ÿê àñîáíûÿ òâîðû. Àëå êàë³ âû ðàñïà¢ñþäæâàåöå ãýòûÿ ÷àñòê³ ÿê ÷àñòêó öýëàãà òâîðó, çàñíàâàíàãà íà Ïðàãðàìå, òî âû àáàâÿçàíûÿ ðàá³öü ãýòà ¢ àäïàâåäíàñö³ ç óìîâàì³ äàäçåíàé ˳öýíç³³, ðàñïà¢ñþäæâàþ÷û ïðàâû àòðûìàëüí³êࢠë³öýíç³³ íà ¢âåñü òâîð ³, òàê³ì ÷ûíàì, íà êîæíóþ ÷àñòêó, íåçàëåæíà àä òàãî, õòî ÿãî íàï³ñà¢. +

        Òàê³ì ÷ûíàì, çìåñò ãýòàãà ðàçäçåëó íå ìàå íà ìýöå ïðýòýíäàâàöü íà âàøû ïðàâû íà òâîð, ÿê³ íàï³ñàíû öàëêàì âàì³, àáî àñïðý÷âàöü ³õ; ìýòà õóò÷ýé ó òûì, êàá ðàçâ³öü ïðàâà ê³ðàâàöü ðàñïà¢ñþäæàííåì âûòâîðíûõ àáî êàëåêòû¢íûõ òâîðà¢, çàñíàâàíûõ íà Ïðàãðàìå. +

        Àêðàìÿ òàãî, ïðîñòàå çíàõîäæàííå ³íøàãà òâîðó, íå çàñíàâàíàãà íà ãýòàé Ïðàãðàìå, ðàçàì ç Ïðàãðàìàé (àáî ç òâîðàì, çàñíàâàíûì íà ãýòàé Ïðàãðàìå) íà òûì æà íîñüá³öå äëÿ òðûâàëàãà çàõî¢âàííÿ, àáî ÿê³ ðàñïà¢ñþäæâàåööà íîñüá³öå, íå ðàñïà¢ñþäæâàå äçåÿííå ãýòàé ˳öýíç³³ íà ³íøû òâîð. +

        3. Âû ìîæàöå êàï³ÿâàöü ³ ðàñïà¢ñþäæâàöü Ïðàãðàìó (àáî òâîð, çàñíàâàíû íà ¸é) ïàâîäëå Ðàçäçåëà 2) ó àá'åêòíûì êîäçå àáî ¢ âûêàíàëüíûì âûãëÿäçå ¢ àäïàâåäíàñö³ ç Ðàçäçåëàì³ 1 ³ 2, øòî ïàäàäçåíûÿ âûøýé, ïðû ¢ìîâå, øòî âû òàêñàìà âûêàíàåöå àäíî ç íàñòóïíûõ ïàòðàáàâàííÿ¢: +

        +

          +
        1. Ñóïðàâàäç³öå ÿå ïî¢íûì àäïàâåäíûì ìàøûíà÷ûòýëüíûì çûõîäíûì êîäàì, ÿê³ ìóñ³öü ðàñïà¢ñþäæâàööà ¢ àäïàâåäíàñö³ ç Ðàçäçåëàì³ 1 ³ 2, øòî ïðûâåäçåíûÿ âûøýé, íà íîñüá³öå, ÿê³ çâû÷àéíà âûêàðûñòî¢âàåööà äëÿ àáìåíó ÏÇ; àáî, +

          +
        2. Ñóïðàâàäç³öå ÿå ï³ñüìîâûì ñêàçàì, äçåéñíûì ïðûíàìñ³ íà ïðàöÿãó òðîõ ãàäî¢, äàöü ëþáîé òðýöÿé àñîáå çà ¢çíàãàðîäæàííå êîøòàì íå áîëüøàå çà ô³ç³÷íû àêò âûðàáó êîï³³ ïî¢íóþ ìàøûíà÷ûòýëüíóþ êîï³þ àäïàâåäíàãà çûõîäíàãà êîäà, ÿêàÿ ìóñ³öü ðàñïà¢ñþäæâàööà ¢ àäïàâåäíàñö³ ç Ðàçäçåëàì³ 1 ³ 2, øòî ïðûâåäçåíûÿ âûøýé; àáî +

          +
        3. Ñóïðàâàäç³öå ÿå ³íôàðìàöûÿé, àòðûìàíàé âàì³ ¢ ÿêàñö³ ïðàïàíîâû ðàñïà¢ñþäç³öü àäïàâåäíû çûõîäíû êîä. (Ãýòàÿ ìàã÷ûìàñöü äàïóø÷àëüíàÿ òîëüê³ äëÿ íåêàìåðöûéíàãà ðàñïà¢ñþäæàííÿ, ³ òîëüê³ êàë³ âû àòðûìàë³ ïðàãðàìó ¢ àá'åêòíûì êîäçå àáî ¢ âûêàíàëüíûì âûãëÿäçå ç ïðàïàíîâàé ó àäïàâåäíàñö³ ç Ïóíêòàì b) âûøýé.)
        +

        Çûõîäíû êîä äëÿ òâîðà àçíà÷àå ÿãîíû â³ä, áîëüø ïåðàâàæíû äëÿ âûêàíàííÿ ¢ ³ì ìàäûô³êàöûÿ¢. Äëÿ âûêîíâàåìàãà òâîðó ïî¢íû çûõîäíû êîä àçíà÷àå ¢ñå çûõîäíûÿ êîäû äëÿ ¢ñ³õ ìîäóëÿ¢, ÿê³ÿ ¸í óòðûìë³âàå, ïëþñ ëþáûÿ çâÿçàíûÿ ç òâîðàì ôàéëû àçíà÷ýíí³ ³íòýðôåéñó, ïëþñ ñöýíàðû³, âûêàðûñòàíûÿ äëÿ ê³ðàâàííÿ êàìï³ëÿöûÿ¢ ³ ëàäàâàííÿ âûêîíâàåìàãà òâîðó. Àäíàê, ó âûãëÿäçå àäìûñëîâàãà âûêëþ÷ýííÿ, çûõîäíû êîä, ÿê³ ðàñïà¢ñþäæâàåööà, íå àáàâÿçàíû ¢êëþ÷àöü òîå, øòî çâû÷àéíà ïðàäñòà¢ëÿåööà ç àñíî¢íûì³ êàìïàíåíòàì³ àïåðàöûéíàé ñ³ñòýìû, ïàä ê³ðàâàííåì ÿêîé ïðàöóå âûêîíâàåìû òâîð, çà âûêëþ÷ýííåì âûïàäêó, êàë³ ñàì êàìïàíåíò ñïàäàðîæí³÷àå âûêîíâàåìàìó òâîðó. +

        Êàë³ ðàñïà¢ñþäæàííå âûêîíâàåìàãà òâîðà àáî àá'åêòû¢íàãà êîäó àäáûâàåööà øëÿõàì ïðàäñòà¢ëåííÿ äîñòóïó äëÿ êàï³ÿâàííÿ ç âûçíà÷àíàãà ìåñöà, òî ïðàäñòà¢ëåííå äîñòóïó äëÿ êàï³ÿâàííÿ çûõîäíàãà êîäà ç òàãî æ ìåñöà ë³÷ûööà ðàñïà¢ñþäæàííåì çûõîäíàãà êîäà, íàâàò êàë³ òðýö³ÿ àñîáû íå çìóøàþööà äà êàï³ÿâàííÿ çûõîäíàãà êîäà ðàçàì ç àá'åêòíûì êîäàì. +

        4. Âû íå ìîæàöå êàï³ÿâàöü, çìÿíÿöü, ïà¢òîðíà ë³öýçàâàöü, àáî ðàñïà¢ñþäæâàöü Ïðàãðàìó ³íàêø, ÷ûì ãýòà â³äàâî÷íà ïðàäóãëåäæàíàå äàäçåíàé ˳öýíç³ÿé. Ëþáàÿ ñïðîáà êàï³ÿâàöü, çìÿíÿöü, ïà¢òîðíà ë³öýíçàâàöü, àáî ðàñïà¢ñþäæâàöü Ïðàãðàìó ÿê³ì-íåáóäçü ³íøûì ÷ûíàì íåïðàâàìåðíàÿ ³ à¢òàìàòû÷íà ñïûíÿå âàøû ïðàâû äàäçåíûÿ âàì ãýòàé ˳öýíç³ÿé. Àäíàê ë³öýíç³³ àñîáà¢, ÿê³ÿ àòðûìàë³ àä âàñ êîï³³ àáî ïðàâû ïàâîäëå äàäçåíàé Óí³âåðñàëüíàé ãðàìàäñêàé ë³öýíç³³, íå ñïûíÿöü ñâàéãî äçåÿííÿ äà òàãî ÷àñó, ïàêóëü ãýòûÿ àñîáû öàëêàì âûêîíâàþöü óìîâû. +

        5. Âû íå àáàâÿçàíûÿ ïàãàäæàööà ç ãýòàé ˳öýíç³ÿé, òàìó øòî âû íå ïàäï³ñâàë³ ÿå. Àäíàê òàäû âû íå àòðûìë³âàåöå ïðàâû ìàäûô³êàâàöü àáî ðàñïà¢ñþäæâàöü Ïðàãðàìó àáî çàñíàâàíûÿ íà Ïðàãðàìå òâîðû. Ãýòûÿ äçåÿíí³ çàáàðîíåíûÿ çàêîíàì, êàë³ âû íå òðûìàåöåñÿ ïàòðàáàâàííÿ¢ äàäçåíàé ˳öýíç³³. À çíà÷ûöü, çìÿíÿþ÷û àáî ðàñïà¢ñþäæâàþ÷û Ïðàãðàìó (àáî òâîð, çàñíàâàíû íà Ïðàãðàìå), âû âûêàçâàåöå ñâàþ çãîäó ç ãýòàé ˳öýíç³ÿé ³ ¢ñ³ì³ ÿå ¢ìîâàì³ àá êàï³ÿâàíí³, ðàñïà¢ñþäæàíí³ àáî ìàäûô³êàöû³ Ïðàãðàìû àáî òâîðà¢, çàñíàâàíûõ íà ¸é. +

        6. Êîæíû ðàç, êàë³ âû ïà¢òîðíà ðàñïà¢ñþäæâàåöå Ïðàãðàìó (àáî ëþáû òâîð, çàñíàâàíû íà Ïðàãðàìå), àòðûìàëüí³ê à¢òàìàòû÷íà àòðûìë³âàå ë³öýíç³þ àä ïåðøàïà÷àòêîâàãà òðûìàëüí³êà ë³öýíç³³ íà êàï³ÿâàííå, ðàñïà¢ñþäæàííå àáî ìàäûô³êàöûþ Ïðàãðàìû, ÿêàÿ àáóìî¢ë³âàåööà ¢ ãýòûõ âûçíà÷ýííÿõ ³ ¢ìîâàõ. Âû íå ìîæàöå íàêëàäàöü ÿê³õ-íåáóäçü äàäàòêîâûÿ àáìåæàâàíí³ íà àæûööÿ¢ëåííå àòðûìàëüí³êàì ïðàâî¢, ïðàäñòà¢ëåíûõ äàäçåíûì äàêóìåíòàì. Âû íå íÿñåöå àäêàçíàñö³ çà çàõàâàííå òðýö³ì³ àñîáàì³ ¢ìîâࢠãýòàé ˳öýíç³³. +

        7. Êàë³ ¢ âûí³êó ñóäîâàãà ðàçãëÿäó, àáî àáâ³íàâà÷âàííÿ ¢ ïàðóøýíí³ ïàòýíòà àáî ïà ëþáûì ³íøûì ÷ûíí³êó (íå àáàâÿçêîâà çâÿçàíàé ç ïàòýíòàì³), âàì íàâÿçàíûÿ ¢ìîâû, øòî ñóïÿðý÷àöü äàäçåíàé ˳öýíç³³ (ÿê ïà ðàøýíí³ ñóäó, òàê ³ íå), òî ãýòà íå âûçâàëÿå âàñ àä çàõàâàííÿ ïðàâ³ëࢠ˳öýíç³³. Êàë³ âû íå ìîæàöå çàéìàööà ðàñïà¢ñþäæàííåì òàê³ì ÷ûíàì, êàá àäíà÷àñîâà çàäàâîë³öü ïàòðàáàâàíí³ ³ ãýòàé ˳öýíç³³, ³ ¢ñ³ì ³íøûì ïàòðàáàâàííÿì, òî âû íå ïàâ³ííû çàéìàööà ðàñïà¢ñþäæàííåì Ïðàãðàìû. Íàïðûêëàä, êàë³ ïàòýíò íå äàçâàëÿå áÿçâûïëàòíàå ïà¢òîðíàå ðàñïà¢ñþäæàííå Ïðàãðàìû ¢ñ³ì, õòî àòðûìࢠêîï³³ àä âàñ íåïàñðýäíà àáî ïðàç ïàñÿðýäí³êà¢, òî àäç³íûì ñïîñàáàì çàäàâîë³öü ³ ïàòýíòó, ³ ãýòàé ˳öýíç³³ áóäçå âàøà ïî¢íàÿ àäìîâà àä ðàñïà¢ñþäæàííÿ Ïðàãðàìû. +

        Êàë³ ÿêàÿ-íåáóäçü ÷àñòêà ãýòàãà ðàçäçåëó íå ìàå ñ³ëû àáî íå ìîæà áûöü äàñòàñàâàíà äà ëþáûõ ïý¢íûõ àêàë³÷íàñöÿ¢, òî ìàåööà íà ¢âàçå, øòî ìàå ñ³ëó àñòàòíÿÿ ÷àñòêà ðàçäçåëó, ³ ¢âåñü ðàçäçåë ìàå ñ³ëó ïðû ³íøûõ àêàë³÷íàñöÿõ. +

        Ìýòà ãýòàãà ðàçäçåëó íå çààõâîö³öü âàñ ðàá³öü çàÿâû àá ïàðóøýííÿõ ïðàâî¢ íà ïàòýíò, àáî ³íøûõ ïðýòýíç³ÿõ íà ïðàâà ¢ëàñíàñö³, àáî àñïðý÷âàöü ïðàâ³ëüíàñöü ïàäîáíûõ ïðýòýíç³ÿ¢; àäç³íàÿ ìýòà ãýòàãà ïàäçåëó --- àáàðîíà öýëàñíàñö³ ñ³ñòýìû ðàñïà¢ñþäæàííÿ ñâàáîäíàãà ÏÇ, ÿêàÿ ðýàë³çóåööà âûêàðûñòàííåì àãóëüíûõ ë³öýíç³ÿ¢. Ìíîã³ÿ ëþäç³ äçÿêóþ÷û ãýòàé ñ³ñòýìå ¢íåñë³ ø÷îäðû ¢í¸ñàê ó øûðîê³ ñïåêòð ÏÇ, ÿêîå ðàñïà¢ñþäæâàåööà ïàëàãàþ÷ûñÿ íà ¢çãîäíåíàå ¢æûâàííå ãýòàé ñ³ñòýìû; à¢òàðó íàëåæûöü ïðàâà ö³ æàäàå ¸í àáî ÿíà ðàñïà¢ñþäæâàöü ÏÇ ó ãýòàé ñ³ñòýìå àáî ¢ íåéêàé ³íøàé, ³ àòðûìàëüí³ê ë³öýíç³³ íå ìîæà ¢ïëûâàöü íà ïðûíÿööå ãýòàãà ðàøýííÿ. +

        Ãýòû ïàäçåë ïðûçíà÷àíû äëÿ òàãî, êàá äàêëàäíà ïðàñâÿòë³öü, ÿêàÿ ¸ñöü âûñíîâà ç àñòàòíÿé ÷àñòê³ äàäçåíàé ˳öýíç³³. +

        8. Êàë³ ðàñïà¢ñþäæàííå ³/àáî ¢æûâàííå Ïðàãðàìû àáìåæàâàíàå ¢ øýðàãó êðà³í àáî ïàòýíòàì³, àáî à¢òàðñê³ì³ ïðàâàì³ íà ³íòýðôåéñû, ïåðøàïà÷àòêîâû ¢ëàäàëüí³ê à¢òàðñê³õ ïðàâî¢, ÿê³ âûïóñêàå Ïðàãðàìó ç ãýòàé ˳öýíç³ÿé, ìîæà äàäàöü â³äàâî÷íàå àáìåæàâàííå íà ãåàãðàô³÷íàå ðàñïà¢ñþäæàííå, âûêëþ÷û¢øû òàê³ÿ êðà³íû, òàê øòî ðàñïà¢ñþäæàííå äàçâàëÿåööà òîëüê³ ¢ òûõ êðà³íàõ, ÿê³ÿ íå áûë³ âûêëþ÷àíûÿ. Ó ãýòûì âûïàäêó äàäçåíàÿ ˳öýíç³ÿ ¢êëþ÷àå ¢ ñÿáå ãýòàå àáìåæàâàííå, ÿê êàë³ á ÿíî áûëî íàï³ñàíà ¢ òýêñöå äàäçåíàé ˳öýíç³³. +

        9. Ôîíä ñâàáîäíàãà ÏÇ ìîæà ÷àñ àä ÷àñó ïóáë³êàâàöü ïåðàãëåäæàíûÿ ³/àáî íîâûÿ âåðñ³³ ¡í³âåðñàëüíàé ãðàìàäñêàé ë³öýíç³³. Òàê³ÿ íîâûÿ âåðñ³³ áóäóöü ïàäîáíûÿ ïà äóõó ç äàäçåíàé âåðñ³ÿé, àëå ìîãóöü àäðîçí³âàööà ¢ äýòàëÿõ, íàê³ðàâàíûõ íà íîâûÿ ïðàáëåìû àáî àêàë³÷íàñö³. +

        Êîæíàé âåðñ³³ íàäàåööà àäìåòíû íóìàð âåðñ³³. Êàë³ ¢ Ïðàãðàìå ïàçíà÷àíû íóìàð âåðñ³³ äàäçåíàé ˳öýíç³³, ÿêàÿ äà ÿå ïðûìÿíÿåööà, ³ ñëîâû "ëþáàÿ íàñòóïíàÿ âåðñ³ÿ", âû ìîæàöå íà âûáàð ³ñö³ ¢ñëåä âûçíà÷ýííÿì ³ ¢ìîâàì àáî äàäçåíàé âåðñ³³, àáî ëþáîé íàñòóïíàé âåðñ³³, àïóáë³êàâàíàé Ôîíäàì ñâàáîäíàãà ÏÇ. Êàë³ ¢ Ïðàãðàìå íå ïàçíà÷àíû íóìàð âåðñ³³ äàäçåíàé ˳öýíç³³, âû ìîæàöå âûáðàöü ëþáóþ âåðñ³þ, êàë³-íåáóäçü àïóáë³êàâàíóþ Ôîíäàì ñâàáîäíàãà ÏÇ. +

        10. Êàë³ âû æàäàåöå ¢áóäàâàöü ÷àñòê³ Ïðàãðàìû ¢ ³íøûÿ ñâàáîäíûÿ ïðàãðàìû ç ³íøûì³ ¢ìîâàì³ ðàñïà¢ñþäæàííÿ, íàï³øûöå à¢òàðó ç ïðîñüáàé àá äàçâîëå. Äëÿ ÏÇ, ÿêîå àõî¢âàåööà à¢òàðñê³ì³ ïðàâàì³ Ôîíäó ñâàáîäíàãà ÏÇ, íàï³øûöå ¢ Ôîíä ñâàáîäíàãà ÏÇ; ìû ÷àñàì ðîá³ì âûêëþ÷ýíí³ äëÿ ãýòàãà. Íàøàå ðàøýííå áóäçå ê³ðàâàööà äâóìà ìýòàì³: çàõàâàííÿ ñâàáîäíàãà ñòàòóòó ¢ñ³õ âûòâîðíûõ íàøàãà ñâàáîäíàãà ÏÇ ³ ñàäçåéí³÷àííÿ ñóìåñíàìó ³ ïà¢òîðíàìó âûêàðûñòàííþ ÏÇ íàîãóë. +

        ͲßÊ²Õ ÃÀÐÀÍÒÛß¡

        +

        11. ÏÀÊÎËÜʲ ÏÐÀÃÐÀÌÀ ÏÐÀÄÑÒÀ¡ËßÅÖÖÀ ÁßÑÏËÀÒÍÀ, ÍÀ ÏÐÀÃÐÀÌÓ ÍßÌÀ ÃÀÐÀÍÒÛÉ Ó ÒÎÉ ÌÅÐÛ, ßÊÀß ÄÀÏÓÑÊÀÅÖÖÀ ÇÀÊÎÍÀÌ, ØÒÎ ¡ÆÛÂÀÅÖÖÀ ¡ ÃÝÒÀÉ ÑÔÅÐÛ. ÇÀ ÂÛÊËÞ×ÝÍÍÅÌ ÒÛÕ ÂÛÏÀÄÊÀ¡, ÊÀ˲ ÀÄÂÀÐÎÒÍÀÅ ÇÀß¡ËÅÍÀ ¡ ϲÑÜÌÎÂÀÉ ÔÎÐÌÅ, ÒÐÛÌÀËÜͲʲ À¡ÒÀÐÑÊ²Õ ÏÐÀÂΡ ²/ÀÁÎ ²ÍØÛß ÁÀʲ ÏÀÑÒÀ¡ËßÞÖÜ ÏÐÀÃÐÀÌÓ "ßÊ ßÍÀ ¨ÑÖÜ" ÁÅÇ ßÊÎÃÀ-ÍÅÁÓÄÇÜ Â²ÄÓ ÃÀÐÀÍÒÛß¡, ÂÛß¡ËÅÍÛÕ Â²ÄÀÂÎ×ÍÀ ÀÁÎ ßÊ²ß ÌÀÞÖÖÀ ÍÀ ¡ÂÀÇÅ, ÓÊËÞ×ÀÞ×Û, ÀËÅ ÍÅ ÀÁÌßÆÎ¡ÂÀÞ×ÛÑß ÌÀÞ×Û̲Ñß ÍÀ ¡ÂÀÇÅ ÃÀÐÀÍÒÛß̲ ÊÀÌÅÐÖÛÉÍÀÉ ÂÀÐÒÀÑÖ² ² ÏÐÛÄÀÒÍÀÑÖ² ÄËß ÊÀÍÊÐÝÒÍÀÉ ÌÝÒÛ. ÓÑß ÐÛÇÛÊÀ ÀÄÍÎÑÍÀ ßÊÀÑÖ² ² ÏÐÀÄÓÊÖÛÉÍÀÑÖ² ÏÐÀÃÐÀÌÛ ÇÀÑÒÀÅÖÖÀ ÏÐÛ ÂÀÑ. ÊÀ˲ ÏÐÀÃÐÀÌÀ ÀÏÛÍÅÖÖÀ ÄÝÔÅÊÒÍÀÉ, ÂÛ ÏÐÛÌÀÅÖÅ ÍÀ ÑßÁÅ ÊÎØÒ ÓÑßÃÎ ÍÅÀÁÕÎÄÍÀÃÀ ÀÁÑËÓÃΡÂÀÍÍß, ÀÄÍÀ¡ËÅÍÍß ÀÁÎ ÂÛÏÐÀ¡ËÅÍÍß. +

        12. ² ¡ ßÊ²Ì ÐÀÇÅ, ÊÀ˲ ÍÅ ÏÀÒÐÀÁÓÅÖÖÀ ÀÄÏÀÂÅÄÍÛÌ ÇÀÊÎÍÀÌ ÀÁÎ ÍÅ ÀÁÓÌΡËÅÍÀ ¡ ϲÑÜÌÎÂÀÉ ÔÎÐÌÅ, Ͳßʲ ÒÐÛÌÀËÜÍ²Ê À¡ÒÀÐÑÊ²Õ ÏÐÀÂΡ ÀÁΠͲßÊÀß ²ÍØÀß ÀÑÎÁÀ, ßÊÀß ÌÎÆÀ ÇÌßÍßÖÜ ²/ÀÁÎ ÏÀ¡ÒÎÐÍÀ ÐÀÑÏÀ¡ÑÞÄÆÂÀÖÜ ÏÐÀÃÐÀÌÓ, ßÊ ÁÛËÎ ÄÀÇÂÎËÅÍÀ ÂÛØÝÉ, ÍÅ ÍßÑÓÖÜ ÀÄÊÀÇÍÀÑÖ² ÏÅÐÀÄ ÂÀ̲ ÇÀ ÑÒÐÀÒÛ, ÓÊËÞ×ÀÞ×Û ËÞÁÛß ÑÓÏÎËÜÍÛß, ÀÄÌÛÑËÎÂÛß, ÂÛÏÀÄÊÎÂÛß ÀÁÎ, ßÊ ÑËÅÄÑÒÂÀ ÑÒÐÀÒÛ, ßÊ²ß ÂÛͲÊ˲ Ç ÏÐÛ×ÛÍÛ ÂÛÊÀÐÛÑÒÀÍÍß ÀÁÎ ÍÅÌÀÃ×ÛÌÀÑÖ² ÂÛÊÀÐÛÑÒÀÍÍß ÏÐÀÃÐÀÌÛ (ÓÊËÞ×ÀÞ×Û, ÀËÅ ÍÅ ÀÁÌßÆÎ¡ÂÀÞ×Û ÑÒÐÀÒÀÉ ÄÀÄÇÅÍÛÕ, ÀÁÎ ÄÀÄÇÅÍÛ̲, ßÊ²ß ÑÒÀ˲ ÍßÏÐÀ²ËÜÍÛ̲, ÀÁÎ ÑÒÐÀÒÀ̲, ØÒÎ ÁÛ˲ ÏÀÍÅÑÅÍÛß Ç-ÇÀ ÂÀÑ ÀÁÎ ÒÐÝÖ²Õ ÀÑÎÁÀ¡, ÀÁÎ ÀÄÌÎÂÀÉ ÏÐÀÃÐÀÌÛ ÏÐÀÖÀÂÀÖÜ ÑÓÌÅÑÍÀ Ç ËÞÁÛ̲ ²ÍØÛ̲ ÏÐÀÃÐÀÌÀ̲), ÍÀÂÀÒ ÊÀ˲ ÒÀʲ ÒÐÛÌÀËÜÍ²Ê ÀÁÎ ²ÍØÀß ÀÑÎÁÀ ÁÛ˲ ÀÏÀÂÅØ×ÀÍÛ ÀÁ ÌÀÃ×ÛÌÀÑÖ² ÒÀÊ²Õ ÑÒÐÀÒÀ¡. +

        ÊÀÍÅÖ ÂÛÇÍÀ×ÝÍÍß¡ ² ¡ÌΡ

        +

         

        +

         

        +

        Äàêóìåíòàöûÿ Moodle

        + \ No newline at end of file diff --git a/lang/be/docs/other.html b/lang/be/docs/other.html deleted file mode 100644 index 2e86ef9d1d6..00000000000 --- a/lang/be/docs/other.html +++ /dev/null @@ -1,20 +0,0 @@ - - - -Moodle Docs: Frequently Asked Questions (FAQ) - - - - - -

        Äàäàòêîâàÿ äàêóìåíòàöûÿ

        -

        Òóò Âû ìîæàöå çíàéñö³ íåêàëüê³ ñïàñûëàê íà ³íøûÿ êðûí³öû äàêóìåíòàöû³ ïà Moodle:

        -

        ²íäýêñ óñ³õ ôàéëࢠäàïàìîã³ Moodle - ñï³ñ óñ³õ êàíòýêñòíà-çàëåæíûõ äàïàìîæíûõ ôàéëࢠó ðàìêàõ Moodle

        -

        Äàêóìåíòàöûÿ êàðûñòàëüí³êà - - ãýòàÿ ñòàðîíêà ïàäàå äàêóìåíòàöûþ ñòâîðàíóþ äëÿ êàðûñòàëüí³êࢠMoodle.

        -
        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        - - diff --git a/lang/be/docs/philosophy.html b/lang/be/docs/philosophy.html deleted file mode 100644 index 8187beb8c2c..00000000000 --- a/lang/be/docs/philosophy.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - -Moodle Docs: Philosophy - - - - - -

        Ô³ëàñîô³ÿ

        -
        -

        Ïðàåêò ³ äàëåéøàå ðàçâ³öö¸ ñ³ñòýìû Moodle áóäóþööà íà àäìûñëîâàé ô³ëàñîô³³ íàâó÷àííÿ, âîáðàçå ìûñëåííÿ, ÿê³ êîðàòêà ìîæíà íàçâàöü "ñàöûÿëüíàÿ êàíñòðóêòû¢íàÿ ïåäàãîã³êà". (Íåêàòîðûÿ íàâóêî¢öû, ìàã÷ûìà, óæî ïàäóìàë³: "÷àðãîâàÿ áÿçãëóçäç³öà ç àäóêàöû³ ¢ ãàë³íå ïðàãðàìíàãà çàáåñïÿ÷ýííÿ" ³ ïàöÿãíóë³ñÿ äà ìûøê³, àëå, êàë³ ëàñêà, ïðà÷ûòàéöå äà êàíöà – ãýòà ìîæà àïûíóööà êàðûñíûì äëÿ ëþáîé ãàë³íû!).

        -

        Àïåðóþ÷û ïðîñòûì³ òýðì³íàì³ ³ ðàñêðû¢øû ÷àòûðû àñíî¢íûÿ ïàíÿöö³ , ÿê³ÿ õàâàþööà çà äàäçåíàé ôðàçàé, ìû ïàñïðàáóåì ðàñòëóìà÷ûöü, øòî ÿíà àçíà÷àå. Óë³÷ûöå, øòî êîæíàå ç ïàíÿööÿ¢ óÿ¢ëÿå àäíî ìåðêàâàííå ç âåë³çàðíàé êîëüêàñö³ ðàçíàñòàéíûõ äàñëåäàâàííÿ¢, à òàìó ìîæà ïàäàööà íå çóñ³ì ïåðàêàíà¢÷ûì³, êàë³ Âû ¢æî ÷ûòàë³ àá ãýòûì ðàíåé.

        -

        Êàë³ æ ãýòûÿ ïàíÿöö³ äëÿ âàñ íîâûÿ, òàäû öàëêàì âåðàãîäíà, øòî ãýòûÿ ³äý³ ñïà÷àòêó áóäçå ñêëàäàíà çðàçóìåöü. Ðýêàìåíäóåì Âàì ïðà÷ûòàöü ³õ áîëüø óâàæë³âà ³ ¢çãàäàöü óëàñíû äîñâåä âûâó÷ýííÿ ÷àãî á òî í³ áûëî.
        -

        -

        1. Êàíñòðóÿâàííå

        -
        -

        Ãýòà ïàíÿööå ñöâÿðäæàå, øòî ëþäç³ àêòû¢íà âûáóäî¢âàþöü íîâûÿ âåäû ïà ìåðû ¢çàåìàäçåÿííÿ ç íàâàêîëüíûì ñâåòàì.

        -

        Óñ¸, øòî Âû ÷ûòàåöå, áà÷ûöå, ÷óåöå, àä÷óâàåöå, äà ÷àãî äàòûêàåöåñÿ, ïðàõîäç³öü âûïðàáàâàííå ¢ñ³ì³ ðàíåé íàáûòûì³ âåäàì³. Êàë³ ãýòàÿ íîâàÿ ³íôàðìàöûÿ àêàçâàåööà æûööÿçäîëüíàé, òî ÿíà çäîëüíàÿ ñôàðìàâàöü ó Âàñ íîâûÿ âåäû. Âåäû ¢ìàöî¢âàþööà, êàë³ Âû ç ïîñïåõàì êàðûñòàåöåñÿ ³ì³ ó áîëüø øûðîê³ì Âàøûì àñÿðîääç³. Âû íå ïðîñòà áëîê ïàìÿö³, ÿê³ ïàñ³¢íà "ïàãëûíàå" ³íôàðìàöûþ, ³ âåäû íå ìîãóöü áûöü ïðîñòà ïåðàäàäçåíû Âàì øëÿõàì ÷ûòàííÿ àáî ïðàñëóõî¢âàííÿ ³íôàðìàöû³.

        -

        Ìû íå ãàâîðûì, øòî Âû íå ìîæàöå íàâó÷ûööà ÷àìó-íåáóäçü ¢ âûí³êó ÷ûòàííÿ ³íôàðìàöû³ ç Web-ñòàðîíê³ àáî ïðàãëÿäó ëåêöû³. Âÿäîìà, ìîæàöå. Ìû ïðîñòà ïàäêðýñë³âàåì, øòî ïðû íàâó÷àíí³ ìàå ìåñöà áîëüø ³íòýðïðýòàöûÿ, ÷ûì ïðîñòàÿ ïåðàäà÷à ³íôàðìàöû³ àä àäíàãî ìîçãà ³íøàìó.
        -

        -
        -

        2. Êàíñòðóêòûâ³çì

        -
        -

        Ñýíñ ãýòàãà ïàíÿööÿ ¢ ñöâÿðäæýíí³ ïðà òîå, øòî íàâó÷àííå àñàáë³âà ýôåêòû¢íà, êàë³ íàâó÷ýíåö ñòâàðàå íåøòà äëÿ ïåðàäà÷û äîñâåäó ³íøûì. Íàâó÷ýíåö âûáóäî¢âàå ìà¢ëåí÷ûÿ ïàâåäàìëåíí³, ³íòýðíýò-ïàâåäàìëåíí³, áîëüø ñêëàäàíûÿ àðòýôàêòû, ÿê, ïðûêëàäàì, òâîð âûÿ¢ëåí÷àãà ìàñòàöòâà, äîì àáî êàìïëåêò ïðàãðàìíàãà çàáåñïÿ÷ýííÿ.

        -

        Íàïðûêëàä, Âû ìîæàöå ïðà÷ûòàöü ãýòóþ ñòàðîíêó íåêàëüê³ ðàçî¢, àëå ¢æî çà¢òðà í³÷îãà íå áóäçåöå ïàìÿòàöü. Òûì íå ìåíø, êàë³ á Âû ïàñïðàáàâàë³ ðàñòëóìà÷ûöü ãýòûÿ ³äý³ êàìóñüö³ ÿø÷ý ñâà³ì³ ñëîâàì³ àáî ïàäðûõòàâàöü ñëàéäû, ÿê³ÿ ³ëþñòðóþöü ãýòûÿ ïàíÿöö³, òî ãàðàíòóåì Âàì, øòî Âû ñàì³ äàá³ë³ñÿ á ëåïøàãà ðàçóìåííÿ ãýòûõ ïàíÿööÿ¢. Òàìó ëþäç³ ³ âÿäóöü çàï³ñû ïàä÷àñ ëåêöûé, íàâàò êàë³ í³êîë³ íå âÿðòàþööà äà ÿãî ¢ äàëåéøûì.
        -

        -
        -

        3. Ñàöûÿëüíû êàíñòðóêòûâ³çì

        -
        -

        Ñàöûÿëüíû êàíñòðóêòûâ³çì ïàäûìàå ¢æî çãàäàíûÿ ïàíÿöö³ äà ¢çðî¢íþ ñàöûÿëüíàé ãðóïû, ÷àëüöû ÿêîé ó ñóïðàöî¢í³öòâå ñòâàðàþöü ìàëóþ êóëüòóðó ñóìåñíûõ àðòýôàêòà¢, âûí³êࢠäçåéíàñö³, ÿê³ÿ ìàþöü àãóëüíûÿ çíà÷ýíí³. Êàë³ õòîñüö³ ïàãðóæàåööà ¢ ïàäîáíóþ êóëüòóðó, ¸í çíàõîäç³ööà ¢ áåñïåðàïûííûì ïðàöýñå íàâó÷àííÿ íà ðîçíûõ óçðî¢íÿõ, ç'ÿ¢ëÿþ÷ûñÿ ÷àñòêàé ãýòàé êóëüòóðû.

        -

        Ïðîñòûì ïðûêëàäàì ç'ÿ¢ëÿåööà êóáàê. Ãýòû ïðàäìåò ìîæà âûêàðûñòî¢âàööà äëÿ òûñÿ÷û ðîçíûõ ìýòà¢, àëå ÿãî ôîðìà ìàå íà ¢âàçå íàÿ¢íàñöü íåéêàãà "âåäàííÿ" àá çàõî¢âàíí³ âàäêàñöÿ¢. Áîëüø ñêëàäàíû ïðûêëàä – àíëàéí-êóðñ. Òóò íå òîëüê³ "ôîðìû" ³íñòðóìåíòàðûÿ ïàêàçâàþöü íà òî, ÿê ïàâ³íåí ïðàöàâàöü òàê³ êóðñ, àëå ³ ïðàöà ³ òýêñòû, ñòâîðàíûÿ ¢ ãðóïå ¢ öýëûì äàïàìîãóöü óñòàíàâ³öü, ÿê êîæíû ¢äçåëüí³ê êóðñà äçåéí³÷àå ¢ ñêëàäçå ãðóïû.
        -

        -
        -

        4. Çâÿçàíàå ³ ñàìàñòîéíàå

        -
        -

        Ãýòàÿ êàíöýïöûÿ äàå áîëüø ãëûáîê³ äîñëåä ìàòûâàöû³ ïàâîäç³íࢠàñîáíûõ ëþäçåé ó ïðàöýñå äûñêóñ³³. Ñàìàñòîéíûÿ ïàçíàííå – ãýòà êàë³ õòîñüö³ ñòàðàåööà çàñòàâàööà àá'åêòû¢íûì ³ çàñíî¢âàööà íà ôàêòàõ. ¨í ìàå ñõ³ëüíàñöü àáàðàíÿöü óëàñíûÿ ìåðêàâàíí³, êàðûñòàþ÷ûñÿ ëîã³êàé äëÿ çíàõîäæàííÿ ñëàáûõ ìåñöࢠó ìåðêàâàííÿõ àïàíåíòà. Çâÿçàíûÿ ïàçíàííå ¢ÿ¢ëÿå ñàáîé áîëüø ýìàöûéíû ïàäûõîä, ÿê³ äàïóñêàå ñóá'åêòû¢íàñöü. Ïðû ãýòûì ÷àëàâåê ñòàðàåööà ñëóõàöü ³ çàäàâàöü ïûòàíí³ äëÿ ðàçóìåííÿ ³íøàãà ïóíêòó ãëåäæàííÿ. Ñêàíñòðóÿâàíàå ïàçíàííå – ãýòà êàë³ ÷àëàâåê êàðûñòàåööà àáîäâóìà ç âûøýéïàäàäçåíûõ ïàäûõîäࢠ³ çäîëüíû âûëó÷ûöü ÿê³-íåáóäçü ç ³õ, ÿê íàéáîëüø ïðûäàòíû äà áÿãó÷àé ñ³òóàöû³.

        -

        Ó öýëûì, çäàðîâàÿ êîëüêàñöü çâÿçàíûõ ïàâîäç³íࢠó ñêëàäçå çãóðòàâàííÿ íàâó÷ýíöࢠ– ãýòà ìàãóòíû ñòûìóë äëÿ íàâó÷àííÿ, ïàêîëüê³ ¸í íå òîëüê³ àá'ÿäíî¢âàå ëþäçåé, àëå ³ ñïðûÿå ç'ÿ¢ëåííþ ãëûáåéøûõ ðàçâàæàííÿ¢ ³ ïåðàãëÿäó ³ñíóþ÷ûõ ïåðàêàíàííÿ¢.

        -
        -
        -

        Àáäóìâàííå ãýòûõ ïûòàííÿ¢ äàïàìîæà Âàì ñôàêóñàâàööà áîëüø íà òûì äîñâåäçå, ÿê³ ìîæà àïûíóööà êàðûñíûì äëÿ âó÷îáû ç ïóíêòó ãëåäæàííÿ íàâó÷ýíöà, ÷ûì íà ïóáë³êàöû³ ³ àöýíöû ³íôàðìàöû³, ÿêîé ÿíû ïàâ³ííû âàëîäàöü, ïàâîäëå Âàøàãà ïóíêòó ãëåäæàííÿ. Ãýòà òàêñàìà äàïàìîæà Âàì çðàçóìåöü, ÿê êîæíû ¢äçåëüí³ê êóðñà ìîæà áûöü àäíà÷àñîâà íàñòà¢í³êàì ³ íàâó÷ýíöàì. ßê íàñòà¢í³ê Âû çìîæàöå ïåðàñòàöü áûöü ïðîñòà "êðûí³öàé âåäà¢" ³ ïåðàòâîðûöåñÿ ¢ íàòõíÿëüí³êà, ó ðîëåâóþ ìàäýëü äëÿ êëàñà. Ã. çí. Âû áóäçåöå çâÿçàíûÿ ñà ñòóäýíòàì³ íà ³íäûâ³äóàëüíûì óçðî¢í³, ïðàöóþ÷û ç ³õ êàíêðýòíûì³ çàïàòðàáàâàííÿì³. Âû áóäçåöå ìàäýðàâàöü äûñêóñ³³ ³ ðàáîòó òàê³ì ÷ûíàì, êàá íàê³ðî¢âàöü ñòóäýíòࢠó öýëûì äà äàñÿãíåííÿ âó÷ýáíûõ ìýòࢠãðóïû.

        -

        Áåçóìî¢íà Moodle íå íàâÿçâàå òàê³ òûï ïàâîäç³íà¢, àëå ãýòà ÿãî ëåïøàÿ ¢ëàñö³âàñöü ó ñýíñå ïàäòðûìê³ ïðàöýñó íàâó÷àííÿ. Ó áóäó÷ûí³ ïà ìåðû ñòàá³ë³çàöû³ òýõí³÷íàé ³íôðàñòðóêòóðû Moodle, äàëåéøûÿ ïåðà¢òâàðýíí³ ¢ ãàë³íå ïåäàãàã³÷íàé ïàäòðûìê³ ñòàíóöü àñíî¢íûì íàïðàìêàì ó ðàçâ³öö³ ñ³ñòýìû Moodle.

        -
        -
        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        - - diff --git a/lang/be/docs/release.html b/lang/be/docs/release.html new file mode 100644 index 00000000000..85bb79961db --- /dev/null +++ b/lang/be/docs/release.html @@ -0,0 +1,322 @@ + + Äàêóìåíòàöûÿ Moodle: Çìåíû êàëåéíûõ âåðñ³ÿõ Moodle + + + + + + +

        ²íôàðìàöûÿ äëÿ âûäàííÿ

        + +

        Íàâ³íû ¢ Moodle 1.1 (28 æí³¢íÿ, 2003):

        +
          +
          +
           
          +
          Íàéâàæíåéøûÿ çìåíû
          +
          +
          +
          +
            +
          • Íîâàÿ ñ³ñòýìà ñòâàðýííÿ çàïàñíûõ êîï³é ³ ¢çíà¢ëåííÿ êóðñࢠ(äçÿêóþ÷û Eloy!)
          • +
          • Íîâû çìåñò ïðàêòû÷íàãà êóðñà (äçÿêóþ÷û Ray!)
          • +
          • Íîâû çìåñò ÷àò äëÿ ñ³íõðîííûõ äûñêóñ³é
          • +
          • Íîâàÿ ïðûëàäà äëÿ ê³ðàâàííÿ êóðñàì³, ÿêàÿ äàå ìàã÷ûìàñöü óïðà¢ëÿöü âÿë³êàé êîëüêàñöþ êóðñࢠ(ïðàòýñòàâàíà 3700)
          • +
          • Àêðýñëåíàÿ êàðûñòàëüí³êàì øêàëà àäçíàê, ÿê³ÿ ìîãóöü áûöü âûêàðûñòàíû ¢ êóðñàõ
          • +
          • Óäàñêàíàëåíà äçåéíàñöü ó ìíîã³õ ñôåðàõ
          • +
          +
          +
          +
          +
          Àãóëüíàå
          +
          +
          +
          +
            +
          • Áîëüø ïðàçðûñòàÿ àäì³í³ñòðàòû¢íàÿ ïàíåëü
          • +
          • Êàòýãîðû³ ìîãóöü áûöü óñòàëÿâàíû ³ ðàññàðòàâàíû ïà àëôàâ³öå àáî ¢ðó÷íóþ
          • +
          • Êóðñû ³ öýëûÿ êàòýãîðû³ ìîãóöü áûöü ñõàâàíûÿ àä ñòóäýíòà¢
          • +
          • Ìîæíà øóêàöü ïà êëþ÷àâûõ ñëîâàõ ñÿðîä íàçâࢠ³ àï³ñàííÿ¢ êóðñà¢
          • +
          • Ó âÿë³ê³õ êàòýãîðûÿõ çàðàç ìàþööà ñòàðîíê³
          • +
          • Âûïðà¢ëåíû cach³ng stylesheets, à òàêñàìà ãðàô³êà
          • +
          • "Ìàå êóðñû" âûñâåòëåíû íà õàòíÿé ñòàðîíöû ïðàç ëàãàòûï.
          • +
          • Äàáà¢ëåíà íå çëó÷àíàÿ ñòàðîíêà, ÿêàÿ ¢êëþ÷àå ¡ÑÞ ãðàô³êó, ÿêàÿ ïðàäñòà¢ëÿå êàðûñòàëüí³êࢠ(ïàãëÿäç³ /userp³x)
          • +
          • Çìåííàÿ "secureforms" öÿïåð ïðàäáà÷ë³âà ÂÛÊËÞ×ÀÍÀ.
          • +
          • Äëÿ Moodle íå³ñòîòíà, ö³ ¢êëþ÷àíà "magic quotes".
          • +
          • Âûêàíàíà ðýàðàíæàöûÿ ãðàô³ê³ ¢ êàòàëîãó /p³x
          • +
          • Ïàâåäàìëåíí³ e-ma³l ó ôàðìàöå HTML çàðàç ëåïø àäôàðìàòàâàíû, ó ìýòàõ äàñÿãíåííÿ áîëüøàé êàìïàòûá³ëüíàñö³.
          • +
          • Ma³l bounces çàðàç ïåðàñûëàþööà àäì³í³ñòðàòàðó
          • +
          • Ïàëåïøàíû çàäàíí³, ÿê³ÿ âûêîíâàþööà ìåõàí³çìàì cron (ìåíø àáöÿæàíû CPU). Ïàäâîéíûÿ çàï³ñû íà êóðñû çàðàç àíóëþþööà
          • +
          • Ïàëåïøàíà âûñâÿòëåííå ëàãàòûïࢠç íåàáìåæàâàíûì stron³cowan
          • +
          • Ãðàô³ê³ ëàãàòûïࢠêàðûñòàëüí³êࢠâûïðà¢ëåíû (ïàêàçâàþöü ÓÑÅ ëàãàòûïû êàðûñòàëüí³êà íà ñýðâ³ñå)
          • +
          • Ëþäç³, ðýã³ñòðàöûÿ ÿê³õ ñòâîðàíà ¢ðó÷íóþ, çìîãóöü çàðàç àäñûëàöü ïàðîë³
          • +
          • Ïàëåïøàíà ñ³ñòýìà àêðýñëåííÿ/âûñâÿòëåííÿ ôàéëࢠäàïàìîã³ äëÿ ñêëàäàþ÷ûõ êóðñà
          • +
          • Ñêëàäàëüí³ê³ êóðñࢠìàþöü çàðàç ê³ðà¢í³öòâà äëÿ ïðàöû.
          • +
          • Ïàëåïøàíà àáñëóãà àäðàñî¢ e-ma³l (êàá àäøóêàöü web sp³ders)
          • +
          • Çàðàç äàñòóïíû ñï³ñ óñ³õ ôàéëࢠäàïàìîã³
          • +
          • Á³áë³ÿòýêà (äàäàòàê Mark'a K³mes'a ) çàðàç àáñëóãî¢âàåööà, êàë³ ÿíà çàëàäàâàíàÿ (ïàãëÿäç³ ñåêöûþ, ïðûñâå÷àíóþ ¢êëàäó êàðûñòàëüí³êࢠó ðàçâ³öö¸ Moodle)
          • +
          +
          +
          +
          +
          +
          Courses
          +
          +
          +
          +
            +
          • Teachers can now have their course editing privileges removed
          • +
          • Teachers can now manually enrol students if they want to
          • +
          • Teacher management is now all combined in one interface
          • +
          • Activities can be moved any distance with two clicks
          • +
          • Topics/weeks can now be moved up and down
          • +
          • Pop-up menu to quickly switch between topics/weeks when collapsed
          • +
          • When self-enrolling, students are notified and given a chance to cancel
          • +
          • Teachers and students see list of "My Courses" on course + home pages.
          • +
          • Grades can be hidden from students if not needed
          • +
          +
          +
          +
          +
          +
          Languages
          +
          +
          +
          +
            +
          • Hungarian and Greek have been added, + and there are lots of other updates. As usual, the language packs within + this release may not be fully completed yet. You can always download + the newest language packs from http://moodle.org/download/lang/.
          • +
          • Updates and fixes to most languages
          • +
          • Languages now have a parent language (for displaying missing strings)
          • +
          • Some fixes for locales and time display in several languages
          • +
          • es_mx is being phased out in favour of "es" (International + Spanish)
          • +
          +
          +
          +
          +
          +
          Forum
          +
          +
          +
          +
            +
          • Much improved searching, with multiple keywords, paging etc
          • +
          • Forum grading can be either off, used by everyone, or used only by teachers
          • +
          • Forum grading can use custom scales or numbers
          • +
          • A date range can be set to restrict the posts that can be graded.
          • +
          • Admin now has access to some settings via Admin -> Modules -> Forums
          • +
          • After editing a post, user is returned to post in context
          • +
          • Attached images are displayed inline
          • +
          • Email copies in plain text format now print URLs nicely
          • +
          +
          +
          +
          +
          Quiz
          +
          +
          +
          +
            +
          • New question type: Embedded Answers (Cloze) - allows text passages + with embedded answers
          • +
          • New question type: Numerical - allows a range of numerical answers + to be entered
          • +
          • New question type: Description - not a real question, it allows text/graphics + to be inserted anywhere
          • +
          • Expanded quiz reporting with modular report plugins
          • +
          • New feature for repeat attempts, where each attempt builds on the + last
          • +
          • If the quiz is closing within the next 24 hours, a small countdown + clock is shown in the title bar and alerts warn at ten minutes and zero + minutes.
          • +
          • Some refactoring to the quiz code to make it easier to extend with + new question types
          • +
          +
          +
          +
          +
          +
          Resources
          +
          +
          +
          +
            +
          • Web links can now be in very customisable pop-up windows.
          • +
          • Admin now has access to some settings via Admin -> Modules -> + Resources
          • +
          +
          +
          +
          +
          Some of the more annoying bugs recently fixed
          +
          +
          +
          +
            +
          • Moving posts now also moves attachments
          • +
          • No more warnings when looking for uploaded files in an empty course
          • +
          • Students no longer always get plain-format mail on force-subscribed + forums
          • +
          • Cookies can no longer interfere with the admin setup during installation
          • +
          • Effectively no limit to the number of activities per section
          • +
          • Several fixes when dealing with zip files, especially on Windows
          • +
          • Admins can now edit accounts created from external databases
          • +
          • Session no longer conflicts with other software
          • +
          • Excel files now work on non-Intel machines
          • +
          +
          +
          +
          +
           
          +
          +
           
          +
        + +
        + +

        New in Moodle 1.0.9 (29th May, 2003) :

        +
          +
          General
          +
          +
        • Various optimisations and significant performance enhancements
        • +
        • Several obscure security fixes
        • +
        • Moodle is now well-behaved when enclosed within a frame
        • +
        • Richtext editor can now be used in more text-editing fields
        • +
        • New format "Plain text format", useful when posting code or HTML.
        • +
        • New format "Wiki format", allows Wiki-style tagging in most places
        • +
        • New popup allows emoticons/smilies to be inserted by clicking on images
        • +
        • Ability to specify permissions of new folders and files created on the server
        • +
        • Some fixes for servers running in Safe Mode (some file problems remain)
        • +
        • Various fixes for cleaning some external text of quotes, etc
        • +
        • Various fixes for PostgreSQL 7.3 compatibility
        • +
        • Started migration of HTML code towards XHTML Transitional
        • +
        • Countless other little fixes all over the place
        • +
          + +
          Languages
          +
          +
        • 10 new language packs! Argentinian Spanish, Czech, Portuguese, Slovakian, Romanian, Danish, Russian, Polish, Chinese Traditional and French Canadian.
        • +
        • Fixes and upgrades to almost all language packs
        • +
        • Language can be specified for the current session (see menu on home page and login page) and can be changed on any page by something to the url, eg: http://moodle.org/?lang=ru
        • +
        • Language menu can be restricted to a subset of languages and even removed. +
        • Truetype fonts are now part of the language packs
        • +
        • ALL dates/times can now be reformatted as part of the language pack
        • +
        • A small but annoying bug was fixed with the web-based language editor on Windows servers that caused language files to grow
        • +
          + +
          Developers
          +
          +
        • Global debug variable gives more feedback about uninitialised variables and the like
        • +
        • Various fixes to tidy up and further standardise some of the PHP code
        • +
        • Various fixes for robustness (ensuring variables are always initialised)
        • +
          + +
          Admin
          +
          +
        • Some changed options and code in config-dist.php (if upgrading, compare with your current config.php or rebuild your config.php from scratch)
        • +
        • Many changes to themes - authors of custom themes should read theme/UPGRADE.txt
        • +
        • New moodle.org registration function for security notifications etc
        • +
        • Admin directory can be moved from /admin to something else (see config-dist.php)
        • +
        • User listing is now paged, and can now be searched for strings
        • +
        • Module management: activity modules can now be individually disabled or deleted completely
        • +
        • Improvements to the language editing page
        • +
        • Better checking of PHP environment during installation, with warnings
        • +
        • Cleaner installation procedure.
        • +
          + +
          User management
          +
          +
        • New role: Course creator - just like teacher but can also create new courses
        • +
        • New authentication plug-in named "manual", prevents users from creating their own accounts
        • +
        • "Forgot Password" routine now uses an email confirmation before resetting password
        • +
          + + +
          Courses
          +
          +
        • Activities on the course page now have a little button to hide/show that activity to students
        • +
        • Whole topics/weeks can also now be hidden or shown
        • +
        • The list of participants now has some paging, to cope with very large classes
        • +
        • Zip/Unzip is now supported by an internal zip library, removing + the dependence on external programs to do this. This also means that + zip/unzip now works on Windows.
        • +
          + +
          Assignments
          +
          +
        • Assignment submissions can be sorted
        • +
        • Assignment notification mail isn't sent to unenrolled students
        • +
          + +
          Forums
          +
          +
        • Display of forum discussions list is greatly improved
        • +
        • Whole discussions can be moved to any other forum with a single click
        • +
        • Date/time of posts is now "last modified", not "created"
        • +
        • Blank subject-lines or messages are now prevented
        • +
        • More intelligent parsing and display of text in posts
        • +
        • Force Subscribe now works on the "Site News" forum (mails all active students/teachers)
        • +
        • Better handling of mailouts to prevent the possibility of double copies + that sometimes happened with very large classes
        • +
          + +
          Workshop Assignment module (not included: available soon as a separate download)
          +
          +
        • A very interesting new module contributed by Ray Kingdon,
        • +
        • A flexible tool that implements a variety of peer-grading and + example-setting schemes that involve a whole group in examining + and grading pieces of work.
        • +
          + +
          Quizzes
          +
          +
        • New question type, Random Question (selects from all questions in the same category)
        • +
        • New question type, Matching Question (student must match answers to questions)
        • +
        • New question type, Random Matching Short-Answers (randomly creates Matching Questions + from the available Short Answer questions in the same category)
        • +
        • Quiz question import from text files (modular design allows expansion to new formats - a beta Blackboard module is included)
        • +
        • 'Create multiple questions' wizard to quickly create a random quiz
        • +
        • Quiz questions may be randomly shuffled
        • +
        • Quiz answers (multiple choice, etc) may be randomly shuffled
        • +
        • Fixed off-by-one error when "Save Grades" button wasn't used.
        • +
        • Regrading works properly if the quiz has been changed
        • +
        • Editing a question after it's already been used in a quiz no longer affects quiz results
        • +
        • Multiple choice answers are labelled a,b,c not 1,2,3
        • +
          + +
          Resources
          +
          +
        • Better performance when editing large text or HTML resources
        • +
        • Plain images are now display centered within a proper web page (not raw).
        • +
        • Wiki format added as a new option for Resource pages
        • +
          + +
          Custom Themes
          +
          +
        • A number of new styles have been added to all built-in themes. Some of these are ESSENTIAL + to viewing some of the new features. PLEASE SEE + theme/UPGRADE.txt + TO SEE THE CHANGES YOU WILL HAVE TO MAKE TO OLDER THEMES.
        • + +
        • Custom themes now have the capability to re-define all the little button graphics. + There is a new entry in theme/x/config.php ($THEME->custompix) and a new + optional subdirectory "pix". See the theme cordoroyblue for an example.
        • +
          + +
        + +
        + + +

        Older releases can be seen in the Moodle.org announcement forum. + + +

         

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/be/docs/teacher.html b/lang/be/docs/teacher.html index 318ecf0bbb2..175bae2908d 100644 --- a/lang/be/docs/teacher.html +++ b/lang/be/docs/teacher.html @@ -1,74 +1,75 @@ - - - -Moodle Docs: Teachers Manual - - - + + System Docs: Teachers Manual + + - -

        ʳðà¢í³öòâà äëÿ íàñòà¢í³êà.

        -

        Íà ãýòàé ñòàðîíöû Âû çíîéäçåöå ñö³ñëàå ê³ðà¢í³öòâà ïà ñòâàðýíí³ îíëàéíàâûõ êóðñà¢. Òóò ó àãóëüíûõ ðûñàõ àáìÿðêî¢âàþööà àñíî¢íûÿ ôóíêöû³ ³ ðàçâÿçàíí³, ÿê³ÿ Âû ïàâ³ííû áóäçåöå ïðûìàöü ïàä÷àñ ïðàöû ç êóðñàì.

        -

        Ðàçäçåëû äàêóìåíòà:

        -
          -
        1. ðàñïà÷ûíàþ÷û ïðàöó
        2. -
        3. íàñòðîéê³ êóðñó
        4. -
        5. çàïàìïî¢êà ôàéëà¢
        6. -
        7. ïëàíàâàííå ïðàêòû÷íûõ çàíÿòêà¢
        8. -
        9. ïðàöà ç êóðñàì
        10. -
        11. äàäàòêîâàÿ ³íôàðìàöûÿ
        12. -
        -

        Ðàñïà÷ûíàþ÷û ïðàöó.

        + + +

        ʳðà¢í³öòâà äëÿ íàñòà¢í³êà.

        +

        Íà ãýòàé ñòàðîíöû Âû çíîéäçåöå ñö³ñëàå ê³ðà¢í³öòâà ïà ñòâàðýíí³ îíëàéíàâûõ êóðñà¢. Òóò ó àãóëüíûõ ðûñàõ àáìÿðêî¢âàþööà àñíî¢íûÿ ôóíêöû³ ³ ðàçâÿçàíí³, ÿê³ÿ Âû ïàâ³ííû áóäçåöå ïðûìàöü ïàä÷àñ ïðàöû ç êóðñàì.

        + +

        Ðàçäçåëû äàêóìåíòà:

        +
          +
        1. ðàñïà÷ûíàþ÷û ïðàöó
        2. +
        3. íàñòðîéê³ êóðñó
        4. +
        5. çàãðóçêà ôàéëà¢
        6. +
        7. ïëàíàâàííå ïðàêòû÷íûõ çàíÿòêà¢
        8. +
        9. ïðàöà ç êóðñàì
        10. +
        11. äàäàòêîâàÿ ³íôàðìàöûÿ
        12. +
        +

        Ðàñïà÷ûíàþ÷û ïðàöó.

        Ãýòû äàêóìåíò ìàå íà ¢âàçå, øòî Âàø àäì³í³ñòðàòàð çàëàäàâࢠѳñòýìó ³ äࢠÂàì íîâû êóðñ, ïðàöó ç ÿê³ì Âû ðàñïà÷ûíàåöå. Òàêñàìà ìÿðêóåööà, øòî Âû ¢âàéøë³ ¢ ñ³ñòýìó êóðñó, ñêàðûñòà¢øû ¢ë³êîâû çàï³ñ ³íñòðóêòàðà.

        ͳæýé ïàäàþööà òðû àñíî¢íûÿ ïàðàäû, ÿê³ÿ äàçâîëÿöü Âàì ðàñïà÷àöü ïðàöó.

          -
        1. Íå áîéöåñÿ ýêñïåðûìåíòàâàöü: +
        2. Íå áîéöåñÿ ýêñïåðûìåíòàâàöü:
          Ñìåëà äàñëåäóéöå ³ çìÿíÿéöå ðîçíûÿ ïàðàìåòðû. Ìàëàâåðàãîäíà, øòî Âû íåøòà ñàïñóåöå ¢ êóðñå. Íàâàò êàë³ ãýòà àäáóäçåööà, ÿê ïðàâ³ëà, óñ¸ ë¸ãêà àäíà¢ëÿåööà. -
        3. -
        4. Çâÿðí³öå ¢âàãó ³ êàðûñòàéöåñÿ íàñòóïíûì³ çíà÷êàì³: +
        +
      • Çâÿðí³öå ¢âàãó ³ êàðûñòàéöåñÿ íàñòóïíûì³ çíà÷êàì³:
        -

        Ðýäàãàâàöü - Çíà÷îê ðýäàãàâàííå äàçâîë³öü Âàì çìÿíÿöü óñå, øòî çíàõîäç³ööà íàñóïðàöü ÿãî. +

          - Çíà÷àê ðýäàãàâàííå äàçâîë³öü Âàì çìÿíÿöü óñå, øòî çíàõîäç³ööà íàñóïðàöü ÿãî.

        -

        Äàïàìîãà - Çíà÷îê äàïàìîã³ äàñöü âàì äîñòóï äà ¢ñïëûâàþ÷ûõ ïàäêàçàê.

        +

        - Çíà÷àê äàïàìîã³ äàñöü âàì äîñòóï äà ¢ñïëûâàþ÷ûõ ïàäêàçàê.

      • -
      • Êàðûñòàéöåñÿ íàâ³ãàöûéíàé ïàíåëëþ, ÿêàÿ çìåø÷àíà ¢âåðñå êîæíàé ñòàðîíê³. -
        ßíà áóäçå íàãàäâàöü Âàì, äçå Âû çíàõîäç³öåñÿ, ³ íå äàçâîë³öü çãóá³ööà. +
      • Êàðûñòàéöåñÿ íàâ³ãàöûéíàé ïàíåëëþ, ÿêàÿ çìåø÷àíà ¢âåðñå êîæíàé ñòàðîíê³. ßíà áóäçå íàãàäâàöü Âàì, äçå Âû çíàõîäç³öåñÿ, ³ íå äàçâîë³öü çãóá³ööà.
      • -
        +
        -

        Íàñòðîéê³ êóðñó.

        +

        Íàñòðîéê³ êóðñó.

        Ïåðøàå, øòî Âû ïàâ³ííû çðàá³öü, - ãýòà çàéñö³ íà õàòíþþ ñòàðîíêó Âàøàãà êóðñó äëÿ àäì³í³ñòðàâàííÿ ³ ïñòðûêíóöü ìûøêàé íà "íàñòðîéê³". (Çà¢âàæöå, øòî ãýòàÿ ñïàñûëêà, ÿê, ³ íàîãóë, óâåñü ðàçäçåë àäì³í³ñòðàâàííÿ, äàñòóïíàÿ òîëüê³ âàì ³ àäì³í³ñòðàòàðó ñàéòà. Ñòóäýíòû íå çìîãóöü íàâàò áà÷ûöü ãýòûõ ñïàñûëàê.)

        Íà ñòàðîíöû íàñòðîåê Âû ìîæàöå çìÿí³öü íåêàòîðûÿ ïàðàìåòðû ñâàéãî êóðñó, ñòàâ³öü ïà ðàíæûðó ïàâîäëå ³ì¸íàõ ³ ïà ÷àñå, êàë³ ÿíû ¢ñòóïàþöü ó ñ³ëó. Ìû íå áóäçåì çàðàç ïàäðàáÿçíà íà ³õ ñïûíÿööà, òàê ÿê ïîáà÷ ç óñ³ì³ íàñòðîéêàì³ ¸ñöü çíà÷ê³ äàïàìîã³, ÿê³ÿ äýòàë¸âà ³õ òëóìà÷àöü. Àäíàê, âàðòà àáìåðêàâàöü ñàìóþ âàæíóþ íàñòðîéêó - ôàðìàò êóðñà.

        Ôàðìàò êóðñà ïàäîáíà øàáëîíó âûçíà÷àå àñíî¢íóþ ñõåìó Âàøàãà êóðñà. Âåðñ³ÿ ñ³ñòýìû 1.0 ìàå òðû ôàðìàòû, ó áóäó÷ûí³ ³õ, âåðàãîäíà, ñòàíå íàøìàò áîëüø.

        ͳæýé ïàäàþööà ñêðûíøîòû òðîõ óçîðࢠêóðñó ¢ êîæíûì ç òðîõ ôàðìàòࢠ(íå çâàæàéöå íà àäðîçíåííå ¢ êîëåðàõ - ÿíû ¢ñòà븢âàþööà àäì³í³ñòðàòàðàì äëÿ ¢ñÿãî ñàéòà):

        Øòîòûäí¸âû:

        -

        Øòîòûäí¸âû

        +

        +

         

        Òýìàòû÷íû:

        -

        Òýìàòû÷íû

        +

        +

         

        Ñàöûÿëüíû:

        -

        Ñàöûÿëüíû

        +

        +

         

        Çà¢âàæöå, øòî øòîòûäí¸âû ³ òýìàòû÷íû ôàðìàòû âåëüì³ ïàäîáíûÿ ïà ñòðóêòóðû. Àñíî¢íàÿ ðîçí³öà ïàëÿãàå ¢ òûì, øòî êîæíû áëîê ó øòîòûäí¸âûì ôàðìàöå àõîïë³âàå ðî¢íà àäç³í òûäçåíü, ó òîé ÷àñ ÿê ó òýìàòû÷íûì ôàðìàöå àäç³í áëîê ìîæà àõîïë³âàöü óñ¸, øòî Âû ïàæàäàåöå.

        Äëÿ àòðûìàííÿ áîëüø äýòàë¸âàé ³íôàðìàöû³ âûêàðûñòàéöå çíà÷ê³ äàïàìîã³ íà ñòàðîíöû íàñòðîåê êóðñà.

        -
        +
        -

        Çàïàìïî¢êà ôàéëà¢.

        +

        Çàãðóçêà ôàéëà¢.

        Ìàã÷ûìà, Âû çàõî÷àöå äàäàöü ó ñâîé êóðñ äàäàòêîâûÿ ìàòýðûÿëû, íàïðûêëàä web-ñòàðîíêó, à¢äû¸ ³ â³äýà ôàéë, òýêñòàâû äàêóìåíò àáî ôëýø-àí³ìàöûþ. Ëþáû ³ñíóþ÷û ôàéë ìîæà áûöü çàãðóæàíû ¢ Âàøû êóðñ ³ çàõî¢âàööà íà ñýðâåðû. Ïàêóëü Âàøûÿ ôàéëû çàõî¢âàþööà íà ñýðâåðû, Âû ìîæàöå ïåðàñî¢âàöü, ïåðàíàçûâàöü, ðýäàãàâàöü àáî âûäàëÿöü ³õ.

        Óñ¸ ãýòà ìîæíà çðàá³öü, ñêàðûñòà¢øû ñïàñûëêó ôàéëû ¢ ìåíþ àäì³í³ñòðàâàííÿ. Ðàçäçåë "ôàéëû" âûãëÿäàå íàñòóïíûì ÷ûíàì:

        -

        Ôàéëû

        +

        +

         

        Ãýòàÿ àáàëîíêà äàñòóïíàÿ òîëüê³ ³íñòðóêòàðàì. Ïàçíåé àñîáíûÿ ôàéëû ðîáÿööà äàñòóïíûì³ äëÿ ñòóäýíòࢠ(ÿê "ðýñóðñû", ãëÿäç³öå íàñòóïíû ðàçäçåë).

        Íà ñêðûíøîòó ïàêàçàíà, øòî ôàéëû ðàçìåø÷àíûÿ ïîáà÷ ç ïàääûðýêòîðûÿì³. Âû ìîæàöå ñòâàðàöü ëþáóþ êîëüêàñöü ïàääûðýêòîðûÿ¢ äëÿ àðãàí³çàöû³ ñâà³õ ôàéëࢠ³ ïåðàñî¢âàöü ³õ ç àäíîé ïàääûðýêòîðû³ ó ³íøóþ.

        Ïðàç web-àáàëîíêó Âû ìîæàöå çàãðóç³öü íå áîëüø çà àäç³í ôàéë çà ðàç. Êàë³ Âû æàäàåöå çàãðóç³öü íåêàëüê³ ôàéëࢠàäðàçó (äà ïðûêëàäó, web-ñòàðîíêó öàëêàì), íàøìàò ëÿã÷ýé âûêàðûñòàöü zip-ïðàãðàìó, êàá ñö³ñíóöü ³õ ó àäç³í ôàéë, çàãðóç³öü zip-ôàéë, à çàòûì ðàçàðõ³âàâàöü ÿãî íà ñýðâåðû (Âû ¢áà÷ûöå ñïàñûëêó unzip ïîáà÷ ç zip-àðõ³âàì).

        Êàá ïðàãëÿäçåöü çàãðóæàíû ôàéë, ïñòðûêí³öå ìûøøó ïà ÿãî ³ìåí³. Âàø web-áðà¢çýð ïàêëàïàö³ööà ³ àá àäëþñòðàâàíí³, ³ àá ÿãî çàãðóçöû íà Âàøû êàìï'þòýð.

        HTML ³ òýêñòàâûÿ ôàéëû ìîæíà ðýäàãàâàöü ïðàìà ¢ îíëàéíàâûì ðýæûìå, ôàéëû àñòàòí³õ òûïࢠÂû ìîæàöå ðýäàãàâàöü òîëüê³ íà ñâà³ì ëàêàëüíûì êàìï'þòýðû, à çàòûì íàíî¢ çàãðóæàöü. Êàë³ ôàéë, ÿê³ ³ñíóå ìàå òàêóþ æ íàçâó, øòî ³ òîé, ÿê³ Âû çàãðóæàåöå, ¸í áóäçå à¢òàìàòû÷íà ïåðàçàï³ñàíû.

        -
        +
        -

        Ïëàíàâàííå ïðàêòû÷íûõ çàíÿòêà¢.

        +

        Ïëàíàâàííå ïðàêòû÷íûõ çàíÿòêà¢.

        Ñêëàäàííå êóðñó ¢ëó÷àå ¢ ñÿáå äàäàâàííå ìîäóëÿ¢ ïðàêòû÷íûõ çàíÿòêࢠíà àñíî¢íóþ ñòàðîíêó ¢ òûì ïàðàäêó, ó ÿê³ì ñòóäýíòû áóäóöü ³õ âûêîíâàöü. Âû ìîæàöå ¢ ëþáû ÷àñ çìÿí³öü ãýòû ïàðàäàê.

        Êàá óêëþ÷ûöü ðýäàãàâàííå, ïñòðûêí³öå ìûøøó íà "Ðýäàãàâàöü". Ãýòû ïåðàêëþ÷àëüí³ê àäëþñòðî¢âàå àáî õàâàå äàäàòêîâûÿ ýëåìåíòû, ÿê³ÿ äàçâîëÿöü âàì ê³ðàâàöü ãàëî¢íàé ñòàðîíêàé êóðñà. Çâÿðí³öå ¢âàãó, øòî íà ïåðøûì ñêðûíøîòó, ÿê³ ðàçìåø÷àíû âûøýé, óêëþ÷àíûÿ äàäàòêîâûÿ ýëåìåíòû ê³ðàâàííÿ.

        @@ -77,7 +78,7 @@
        Çàäàííå.
        Âû äàåöå çàäàííå, óñòàëÿâà¢øû òýðì³í ÿãî çäà÷û ³ ìàêñ³ìàëüíóþ àäçíàêó. Ñòóäýíòû ìàþöü ìàã÷ûìàñöü çàãðóç³öü àäç³í ôàéë, êàá âûêàíàöü ïàòðàáàâàíí³. Äàòà çàãðóçê³ ôàéëà ô³êñóåööà. Ïàçíåé ïåðàä Âàì³ áóäçå ñòàðîíêà, íà ÿêîé Âû çìîæàöå ïðàãëÿäçåöü óñå ôàéëû ³ ÷àñ ³õ çàãðóçê³, à çàòûì çàï³ñàöü àäçíàêó ³ êàìåíòàð. Ïðàç ïà¢ãàäç³íû ïàñëÿ òàãî, ÿê Âû âûñòàâ³öå àäçíàêó, ѳñòýìà à¢òàìàòû÷íà àäïðàâ³öü ñòóäýíòó àïàâÿø÷ýííå ýëåêòðîííàé ïîøòàé.


        -
        Ãàëàñàâàííå.
        +
        Âûáàð.
        Ïðàêòû÷íûÿ çàíÿòê³ âûáàðó âåëüì³ ïðîñòûÿ: Âû çàäàåöå ïûòàííå ³ ¢ñòà븢âàåöå âàðûÿíòû àäêàçó. Ñòóäýíòû ìîãóöü çðàá³öü âûáàð, à ïåðàä âàì³ áóäçå ñïðàâàçäà÷à àá âûí³êàõ. Âûáàð ìîæíà âûêàðûñòàöü äëÿ òàãî, êàá àòðûìàöü çãîäó ñòóäýíòࢠíà äàñëåäàâàííå, à òàêñàìà äëÿ ïðàâÿäçåííÿ ãàëàñàâàííÿ.


        @@ -85,31 +86,31 @@
        Ãýòû ìîäóëü íàéâàæíåéøû - òóò àäáûâàåööà àáìåðêàâàííå. Ïðû äàáà¢ëåíí³ íîâàãà ôîðóìà Âû áóäçåöå ìåöü ìàã÷ûìàñöü âûáðàöü ÿãî ç íåêàëüê³õ òûïà¢: çâû÷àéíû ôîðóì ç àáìåðêàâàííåì àäíîé òýìû, äàñòóïíû äëÿ ¢ñ³õ àãóëüíû ôîðóì, àáî ôîðóì ç àäíîé ë³í³ÿé àáìåðêàâàííÿ äëÿ êîæíàãà êàðûñòàëüí³êà.


        -
        Ðàáî÷ûÿ ñøûòê³.
        -
        Êîæíû ðàáî÷û ñøûòàê ç'ÿ¢ëÿåööà çàï³ñàì ó àãóëüíûì ðàáî÷ûì ñøûòêó êóðñà. Äëÿ êîæíàãà æóðíàëà Âû ìîæàöå ïàñòàâ³öü àäêðûòàå ïûòàííå, ÿêîå áóäçå çàäàâàöü íàïðàìàê òàãî, àá ÷ûì áóäóöü ï³ñàöü ñòóäýíòû. Òàêñàìà ìîæíà ¢ñòàëÿâàöü âàêíî, ó ÿê³ì áóäçå àäëþñòðî¢âàööà ÷àñ àäêðûööÿ ðàáî÷àãà ñøûòêó (ãýòàÿ ôóíêöûÿ äàñòóïíàÿ òîëüê³ ¢ øòîòûäí¸âûì ôàðìàöå). Çààõâî÷âàéöå ñòóäýíòࢠíà òîå, êàá ÿíû âûêëàäàë³ ñâàå äóìê³ ³ êðûòûêó ¢ ðàáî÷ûõ ñøûòêàõ, òàê ÿê ÿíû äàñòóïíûÿ òîëüê³ ³ì ³ Âàì. Ïàñëÿ Âû çìîæàöå àöàí³öü ³ ïðàêàìåíòàâàöü óñå çàï³ñû çà äàäçåíû äçåíü àáî íà äàäçåíóþ òýìó, ñòóäýíòû à¢òàìàòû÷íà àòðûìàþöü ýëåêòðîííàé ïîøòàé ïàâåäàìëåííå, ÿêîå ñòàâ³öü ³õ ó âÿäîìàñöü àá Âàøûì ìåðêàâàíí³.
        +
        Æóðíàë.
        +
        Êîæíû æóðíàë ç'ÿ¢ëÿåööà çàï³ñàì ó àãóëüíûì æóðíàëå êóðñó. Äëÿ êîæíàãà æóðíàëà Âû ìîæàöå ïàñòàâ³öü àäêðûòàå ïûòàííå, ÿêîå áóäçå çàäàâàöü íàïðàìàê òàãî, àá ÷ûì áóäóöü ï³ñàöü ñòóäýíòû. Òàêñàìà ìîæíà ¢ñòàëÿâàöü âàêíî, ó ÿê³ì áóäçå àäëþñòðî¢âàööà ÷àñ àäêðûööÿ æóðíàëà (ãýòàÿ ôóíêöûÿ äàñòóïíàÿ òîëüê³ ¢ øòîòûäí¸âûì ôàðìàöå). Çààõâî÷âàéöå ñòóäýíòࢠíà òîå, êàá ÿíû âûêëàäàë³ ñâàå äóìê³ ³ êðûòûêó ¢ æóðíàëàõ, òàê ÿê ÿíû äàñòóïíûÿ òîëüê³ ³ì ³ Âàì. Ïàñëÿ Âû çìîæàöå àöàí³öü ³ ïðàêàìåíòàâàöü óñå çàï³ñû çà äàäçåíû äçåíü àáî íà äàäçåíóþ òýìó, ñòóäýíòû à¢òàìàòû÷íà àòðûìàþöü ýëåêòðîííàé ïîøòàé ïàâåäàìëåííå, ÿêîå ñòàâ³öü ³õ ó âÿäîìàñöü àá Âàøûì ìåðêàâàíí³.


        Ðýñóðñû.
        Ðýñóðñû - ãýòà çìåñò Âàøàãà êóðñà. Ðýñóðñàì ìîæà ç'ÿ¢ëÿööà ëþáû çàãðóæàíû âàì³ ôàéë àáî URL. Òàêñàìà Âû ìîæàöå ïàäòðûìë³âàöü çâû÷àéíûÿ ñòàðîíê³ òýêñòó, ÿê³ ìîæíà íàáðàöü íåïàñðýäíà ¢ ôîðìå.


        -
        Òýñò.
        +
        Òýñòû.
        Ãýòû ìîäóëü äàçâîëÿöü Âàì ðàñïðàöî¢âàöü ³ ïðàâîäç³öü òýñòû, ïûòàíí³ íà êàòîðûÿ ìîæà áûöü íåêàëüê³ âàðûÿíòà àäêàçà¢, àäêàçû "äàêëàäíà - íåäàêëàäíà", àáî ñö³ñëûÿ àäêàçû. Ïûòàíí³ ¢òðûìë³âàþööà ¢ ñòðóêòóðûçàâàíàé áàçå äàäçåíûõ ³ ìîãóöü ïà¢òîðíà âûêàðûñòî¢âàööà ¢ àäíûì àáî ðîçíûõ êóðñàõ. Íà ïðàõîäæàííå òýñòó äàåööà íåêàëüê³ ñïðîáà¢. Êîæíàÿ ñïðîáà à¢òàìàòû÷íà ô³êñóåööà, ³ ³íñòðóêòàð ìîæà äàöü ñâàþ àäçíàêó àáî âûçíà÷ûöü ïðàâ³ëüíûÿ àäêàçû íà òýñò. Ãýòû ìîäóëü ìàå ïðûëàäû äëÿ âûñòà¢ëåííÿ àäçíàê.


        -
        Àïûòàëüí³ê³.
        -
        Ìîäóëü àïûòàííÿ¢ çàáÿñïå÷âàå íåêàëüê³ âûçíà÷àíûõ ïðûëàäࢠäëÿ àïûòàííÿ, ÿê³ÿ ìîãóöü áûöü êàðûñíûì³ äëÿ àäçíàê³ ³ ðàçóìåííÿ êëàñà. Ó äàäçåíû ìîìàíò ÿíû ¢êëþ÷àþöü ColLES ³ ATTLS. Àïûòàííå ìîæíà ïðàâîäç³öü ñÿðîä ñòóäýíòࢠó ïà÷àòêó êóðñà ¢ ÿêàñö³ ñðîäêó äûÿãíîñòûê³ àáî íàïðûêàíöû êóðñà äëÿ àöýíê³ (ÿø÷ý àäç³í âàðûÿíò - ïðàâîäç³öü àïûòàííå ðàç íà òûäçåíü).
        +
        Àïûòàíí³.
        +
        Ìîäóëü àïûòàííÿ¢ çàáÿñïå÷âàå íåêàëüê³ âûçíà÷àíûõ ïðûëàäࢠäëÿ àïûòàííÿ, ÿê³ÿ ìîãóöü áûöü êàðûñíûì³ äëÿ àäçíàê³ ³ ðàçóìåííÿ êëàñà. Ó äàäçåíû ìîìàíò ÿíû ¢êëþ÷àþöü COLLES ³ ATTLS. Àïûòàííå ìîæíà ïðàâîäç³öü ñÿðîä ñòóäýíòࢠó ïà÷àòêó êóðñà ¢ ÿêàñö³ ñðîäêó äûÿãíîñòûê³ àáî íàïðûêàíöû êóðñà äëÿ àöýíê³ (ÿø÷ý àäç³í âàðûÿíò - ïðàâîäç³öü àïûòàííå ðàç íà òûäçåíü).

        -

        Ïàñëÿ òàãî, ÿê Âû äàäàñö¸ ïðàêòû÷íûÿ çàíÿòê³, ìîæàöå ïåðàñî¢âàöü ³õ ó ïëàíå êóðñà, ïñòðûêàþ÷û ìûøêàé íà íåâÿë³÷ê³ÿ ñòðýëê³, ÿê³ÿ ìåñöÿööà íàñóïðàöü êîæíàãà çàíÿòêó (Ó âåðõ - Ó í³ç). Âû òàêñàìà ìîæàöå âûäàëÿöü ³õ, ñêàðûñòà¢øû íàñòóïíû çíà÷àê, Âûäàë³öü, - ³ ðýäàãàâàöü ³ äàïàìîãàé çíà÷êà ðýäàãàâàííå. Ðýäàãàâàöü.

        -
        +

        Ïàñëÿ òàãî, ÿê Âû äàäàñö¸ ïðàêòû÷íûÿ çàíÿòê³, ìîæàöå ïåðàñî¢âàöü ³õ ó ïëàíå êóðñà, ïñòðûêàþ÷û ìûøêàé íà íåâÿë³÷ê³ÿ ñòðýëê³, ÿê³ÿ ìåñöÿööà íàñóïðàöü êîæíàãà çàíÿòêó ( + ). Âû òàêñàìà ìîæàöå âûäàëÿöü ³õ, ñêàðûñòà¢øû íàñòóïíû çíà÷àê, , + ³ ðýäàãàâàöü ³ äàïàìîãàé çíà÷êà ðýäàãàâàííå. .

        +
        -

        Ïðàöà ç êóðñàì.

        +

        Ïðàöà ç êóðñàì.

        -

        Ïðà òîå, ÿê ïðàöàâàöü ç êóðñàì, ìîæíà íàï³ñàöü öýëóþ äûñåðòàöûþ, àëå ìû àáìÿæóåìñÿ íåêàëüê³ì³ ïàäêàçêàì³:

        +

        Ïðà òîå, ÿê ïðàöàâàöü ç êóðñàì, ìîæíà íàï³ñàöü öýëóþ äûñåðòàöûþ, àëå ìû àáìÿæóåìñÿ íåêàëüê³ì³ ïàäêàçêàì³:

        1. çàðýã³ñòðóéöåñÿ íà ¢ñ³õ ôîðóìàõ.
        2. çààõâî÷âàéöå ñòóäýíòࢠçàïà¢íÿöü ïðîô³ë³ êàðûñòàëüí³êà (óêëþ÷íà ôîòàçäûìê³): ãýòà çàáÿñïå÷ûöü êàíòýêñò äëÿ ³õ áóäó÷ûõ ðàáîò.
        3. @@ -118,21 +119,18 @@
        4. âûêàðûñòàéöå ôóíêöûþ "ñïðàâàçäà÷à àá äçåéíàñö³" (íàñóïðàöü êîæíàãà ³ìÿ ¢ ñï³ñå ¢ñ³õ àñîáࢠàáî ñà ñòàðîíê³ ïðîô³ëþ ëþáîãà êàðûñòàëüí³êà). Ãýòà âûäàòíàÿ ìàã÷ûìàñöü ïàíàç³ðàöü, ÷ûì çàíÿòû ïý¢íû ÷àëàâåê ïàä÷àñ êóðñó.
        5. ñâîå÷àñîâà àäêàçâàéöå ñòóäýíòàì. Íå àäêëàäàéöå ãýòà íà ïîòûì - ðàá³öå ãýòà àäðàçó. Íå òîëüê³ òàìó, øòî ïàñëÿ Âû íå çäîëååöå äàöü ðàäû ¢ñ¸é ìàñå íàçàïàøàíûõ ïàâåäàìëåííÿ¢, à ÿø÷ý ³ òàìó, øòî ãýòà êëþ÷àâû ñïîñàá ñòâàðýííÿ ³ ïàäòðûìàííÿ ïà÷óööÿ åäíàñö³ ¢ Âàøûì êóðñå.
        -
        +
        -

        Äàäàòêîâàÿ ³íôàðìàöûÿ.

        +

        Äàäàòêîâàÿ ³íôàðìàöûÿ.

        Êàë³ ¢ âàñ óçí³êíóöü ÿê³ÿ-íåáóäçü ïðàáëåìû ç Âàøûì ñàéòàì, çâåðíåöåñÿ äà ñâàéãî àäì³í³ñòðàòàðà.

        Êàë³ ¢ âàñ ¸ñöü ³äý³ ïà ïàëÿïøýíí³ ñ³ñòýìû àáî íàâàò ïðîñòà äîáðûÿ ã³ñòîðû³, íàâåäàåöå Moodle.com - ³ äàëó÷ûöåñÿ äà êóðñó ïàä íàçâàé "ïðàöà ç ѳñòýìàé". Ìû áóäçåì ðàäûÿ, êàë³ Âû áóäçåöå ïàäòðûìë³âàöü ç íàì³ ñóâÿçü ³ àêàæûöå ñàäçåÿííå ïà ¢äàñêàíàëåíí³ Ñ³ñòýìû.

        + ³ äàëó÷ûöåñÿ äà êóðñó ïàä íàçâàé "ïðàöà ç ѳñòýìàé". Ìû áóäçåì ðàäûÿ, êàë³ Âû áóäçåöå ïàäòðûìë³âàöü ç íàì³ ñóâÿçü ³ àêàæûöå ñàäçåÿííå ïà ¢äàñêàíàëåíí³ Ñ³ñòýìû.

        Êàë³ Âû æàäàåöå ¢çÿöü óäçåë ó ðàñïðàöî¢öû íîâûõ ìîäóëÿ¢ àáî íàï³ñàíí³ äàêóìåíòàöû³, ñêàíòàêòóéöåñÿ ñà ìíîé: Martin - Dougiamas, àáî çàç³ðí³öå íà ñàéò bugs.Moodle.com

        -

        ² ¢ðýøöý, íå çàáûâàéöåñÿ êàðûñòàööà ñïàñûëêàì³ ÿê ãýòà - ³íäýêñ óñ³õ ôàéëࢠäàïàìîã³ Moodle.

        + Dougiamas àáî çàç³ðí³öå íà ñàéò bugs.Moodle.com

        Äçÿêóé çà âûêàðûñòàííå ñ³ñòýìû. Ïîñïåõà¢!

        -
        +
        +

         

        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id: teacher.html,v 1.4 2002/08/18 10:00:01 - martin Exp $

        - - \ No newline at end of file +

        Äàêóìåíòàöûÿ Moodle

        + diff --git a/lang/be/docs/translation.html b/lang/be/docs/translation.html deleted file mode 100644 index ef2cfbbe903..00000000000 --- a/lang/be/docs/translation.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - Moodle translation guide - - - - - - -

        ßê ïåðàêëàäàöü Moodle

        - -

        Ïåðàêëàäàöü Moodle íÿöÿæêà, àëå íåêàòîðûÿ ðý÷û âàðòà âåäàöü ïåðàä òûì, ÿê âû ðàñïà÷íåöå.

        - -

        Ñòðóêòóðà ìî¢íàãà ïàêåòà

        - -

        Óñå ìî¢íûÿ ïàêåòû ðàçìåø÷àíû ¢ äûðýêòîðû³ lang, êîæíàÿ ìîâà – ó àñîáíàé äûðýêòîðû³, ÿê³ÿ ìàå àäïàâåäíóþ àáðýâ³ÿòóðó íàçâû ìîâࢠ(be, en, fr, nl, es ...).

        - - -

        Ó ãýòàé òý÷öû ðàçìåø÷àíû ¢ñå àñíî¢íûÿ ôàéëû, ÿíû ìàþöü ïàøûðýííå .ðhð (íàïð., moodle.php).  -Ãýòûÿ ôàéëû çìÿø÷àþöü êàðîòê³ÿ ôðàçû, ÿê³ÿ íàçûâàþöü "ëàíöóæêàì³". -

        -

        Òàêñàìà ¢ íàÿ¢íàñö³ íåêàëüê³ òý÷àê, ÿê³ÿ çìÿø÷àþöü html-ñòàðîíê³: -

        -
          -
        • òý÷êà help: óòðûìë³âàå êàíòýêñò-àä÷óâàëüíûÿ ôàéëû äàïàìîã³, ÿê³ÿ ¢ñïëûâàþöü ïðû íàö³ñêàíí³ àáðàçêà äàïàìîã³ ïðû êàðûñòàíí³ ïðàãðàìàé Moodle. -
        • òý÷êà docs: çìÿø÷àå àñíî¢íóþ äàêóìåíòàöûþ (òàê³ÿ ÿê ãýòû ôàéë!)
        • -
        -

        Ñòâàðýííå àáñàëþòíà íîâàãà ìî¢íàãà ïàêåòà

        -

        Êàë³ Moodle ÿø÷ý íå ïàäòðûìë³âàå Âàøó ìîâó, àáî Âû æàäàåöå ¢íåñö³ ¢äàñêàíàëåíí³ ¢ ³íòýðôåéñ Âàøàãà ñàéòà, Âàì ìîæà ñïàòðýá³ööà íîâû ïåðàêëàä.

        -

        Óñ¸ øòî äëÿ ãýòàãà òðýáà – ãýòà ñòâàðûöü íîâóþ òý÷êó ¢ äûðýêòîðû³ lang, ñêàðûñòà¢øû äëÿ íàéìåííÿ âàøàé ìîâû äâóõë³òàðíû êîä. Ãýòûÿ ñòàíäàðòíûÿ êîäû ìîæíà çíàéñö³ ¢ lib/languages.php. Êàë³ Âû ðîá³öå ïåðàêëàä íà äûÿëåêò ïý¢íàé ìîâû, ñêàðûñòàéöå êîä ãýòàé ìîâû, ïîòûì ïàñòà¢öå í³æíþþ ðûñó ³ çàòûì – äâóõë³òàðíàå àáàçíà÷ýííå äûÿëåêòó (íàïðûêëàä, pt äëÿ ïàðòóãàëüñêàé ³ pt_br áóäçå àáàçíà÷àöü áðàç³ëüñê³ âàðûÿíò ïàðòóãàëüñêàé ìîâû).  Êàë³ Âû ñòâàðàåöå âåðñ³þ Þí³êîä, äûê äàäàéöå ïàñëÿ í³æíÿé ðûñû _utf8 (íàïðûêëàä, sr_utf8).
        -

        -

        Çàòûì, ñòâàðûöå ¢ Âàøàé ìî¢íàé äûðýêòîðû³ ôàéë "moodle.php", óëó÷íà ç íàñòóïíûì³ ðàäêàì³:

        - -<?PHP
        -$string['thischarset'] = 'iso-8859-1';
        -$string['thisdirection'] = 'ltr';
        -$string['thislanguage'] = 'new language pack';
        -?> -
        -

        -àáî ñêàï³þéöå moodle.php ç ³íøàé ìîâû ¢ Âàøó äûðýêòîðûþ.  Àíãåëüñê³ âàðûÿíò çâû÷àéíà íàéïà¢íåéøû, àëå ãýòà íå ìàå çíà÷ýííÿ, áî Âû ¢ñ¸ àäíî áóäçåöå ÿãî ïåðàðàáëÿöü.
        -

        -

        Çàðàç Âû ãàòîâû ¢íîñ³öü íîâûÿ ëàíöóæê³ (ñòðûíã³) ðýäàãóþ÷û ïåðàêëàä íà Âàøóþ ìîâó. ßê ãýòà ðîá³ööà – ãë. äàëåé...

        -

        Ïåðøàå, øòî òðýáà ðýäàãàâàöü äëÿ íîâàãà ìî¢íàãà ïàêåòà – ãýòà ëàíöóæîê "thischarset" ó moodle.php. -¨í ìóñ³öü óòðûìë³âàöü ïàäûõîäçÿ÷ûÿ ¢ýá-õàðàêòàðûñòûê³ (øðûôò, ïðàâàï³ñ, ë³÷áû), óñòàíî¢ëåíûÿ äëÿ Âàøàé ìîâû. -Ïàñëÿ çìåíࢠó ãýòûì ëàíöóæêó, çàõàâàéöå ôàéë moodle.php ³ ïåðàçàãðóç³öå ñòàðîíêó. Äàëåé ïðàöóéöå ç àñòàòí³ì³ ëàíöóæêàì³.

        -

        Ðýäàãàâàííå ³ñíàãà ìî¢íàãà ïàêåòó.

        -

        Óíÿñåííå íåâÿë³ê³õ ïðàâàê

        -

        Êàë³ Âû æàäàåöå çìÿí³öü ó ³íòýðôåéñå òîëüê³ ïàðó ðý÷à¢, íå âàðòà ïà÷ûíàöü ðýäàãàâàöü àäç³í ñà ñòàíäàðòíûõ ìî¢íûõ ïàêåòà¢.  Êàë³ Âû ¢ñ¸ æ ãýòà çðîá³öå, óñå çìåíû áóäóöü ïåðàçàï³ñàíûÿ (³ ñòðà÷àíûÿ) ïðû íàñòóïíàé àêòóàë³çàöû³ Moodle.
        -

        -

        Çàì³æ ãýòàãà, ñêàðûñòàéöå ³íñòðóêöû³, ÿê³ÿ ïðûâåäçåíûÿ í³æýé äëÿ ñòâàðýííÿ ãàðà÷àãà (ìàðê³ðàâàíàãà, àçíà÷àíàãà) íîâàãà ìî¢íàãà ïàêåòà (ó moodle.php). Ìîâó-êðûí³öó âûá³ðàéöå òàê, êàá ÿíà áûëà íàéáë³æýéøàÿ äà Âàøàé.  Íàïðûêëàä, - äîáðûì ³ìåì äëÿ ëàêàëüíàé àíãåëüñêàé âåðñ³³ áóäçå "en_local", à ìîâàé-êðûí³öàé áóäçå "en" àáî "en_us".

        -

        Çà¢âàæöå, øòî äëÿ òàãî, êàá óñå íàâåäâàëüí³ê³ ñàéòó ìàãë³ ïðàãëÿäçåöü ãýòû íîâû ïàêåò, ¸í ìóñ³öü áûöü ïàçíà÷àíû ÿê ìîâà ñàéòó (ãàðà÷û, ìàðê³ðàâàíû), à äîñòóï äà ³íøûõ ìîâࢠìóñ³öü áûöü àáìåæàâàíû íà Admin >> Configuration >> Variables.
        -
        -

        -

        Ïåðàêëàä ìî¢íûõ ôàéëࢠ³íòýðôåéñó Moodle (ëàíöóæêî¢)

        -
          -
        1. Çàéäç³öå íà Âàø Moodle-ñýðâåð ÿê àäì³í³ñòðàòàð.
        2. -
        3. Çàéäç³öå íà Administration >> Configuration >> Language – ãýòà ñòàðîíêà àäì³í³ñòðàâàííÿ ìîâà¢.
        4. -
        5. Âûáåðûöå íà ãýòàé ñòàðîíöû ç ìåíþ Âàøó ìîâó, çàòûì âûáåðûöå "Ðýäàãàâàííå ïåðàêëàäó".
        6. -
        7. Âû ¢áà÷ûöå ôîðìû äëÿ ðýäàãàâàííÿ êîæíàãà ôàéëà. Êàë³ íå – ïåðàêàíàéöåñÿ, øòî ôàéëû äàñòóïíûÿ äëÿ çàï³ñó – ìàã÷ûìà òðýáà çìÿí³öü äàçâîë íà äîñòóï äà ôàéëà¢.
        8. -
        9. Ôîðìû ñêëàäàþööà ç òðîõ êàëîíàê: ïåðøàÿ – ³ìÿ ëàíöóæêà, äðóãàÿ – ãýòû ëàíöóæîê ïà-àíãåëüñêó, òðýöÿÿ – ïåðàêëàä.
        10. -
        11. Ðýäàãóéöå ëàíöóæê³ äëÿ êîæíàãà ôàéëà (ïàçíà÷àíû êîëåðàì), íå çàáûâàéöåñÿ çàõî¢âàöü çìåíû, íàö³ñêàþ÷û íà "Çàõàâàöü: ..." ó êàíöû êîæíàé ôîðìû.
        12. -
        13. Öàëêàì äàïóø÷àëüíà ïàê³äàöü ëàíöóæê³ ïóñòûì³. Moodle ñêàðûñòàåööà äëÿ ³õ ìîâàé-êðûí³öàé. Ìîâó-êðûí³öó ìîæíà ïàçíà÷ûöü ó moodle.php, êàë³ ÿíà íå ïàçíà÷àíà, òî àíãåëüñêàÿ áóäçå ãýòêàé ïà-çìà¢÷àíí³.
        14. -
        15. Íàéïðàñöåé ïðàãëÿäçåöü óñå ïðàïóø÷àíûÿ ëàíöóæê³ – ãýòà íàö³ñíóöü íà "Ïðàâåðêà ïåðàêëàäó". -
        16. -
        -

        Ïåðàêëàä ôàéëࢠäàïàìîã³ ³ äàêóìåíòàöû³

        -

        Çàðàç ó Moodle íÿìà ¢áóäàâàíàãà ðýäàêòàðà äëÿ ðýäàãàâàííÿ ôàéëࢠäàïàìîã³, àëå çðàá³öü ãýòà ñàìîìó çóñ³ì íå öÿæêà. Âàæíà êàðûñòàööà àíãåëüñê³ì en ìî¢íûì ïàêåòàì äëÿ ïàðà¢íàííÿ. Ñêàï³þéöå àíãåëüñê³ ôàéë äàïàìîã³ ç ìî¢íàãà ïàêåòó ³ ïåðàìÿñö³öå ÿãî íà òîå æ ìåñöà ¢ Âàøûì ìî¢íûì ïàêåöå. Çàòûì ïåðàêëàäç³öå ôàéë ó ïðîñòûì òýêñòàâûì ðýäàêòàðû, ïðû ãýòûì ñòàðàéöåñÿ íå ïàðóøûöü ó ôàéëå í³âîäíàãà êîäó (çâû÷àéíà êîäó íÿìà, ¸ñöü àäíî html-òýã³). (ÍÅ ÊÀÐÛÑÒÀÉÖÅÑß WORDPROCESSOR äëÿ íàï³ñàííÿ ïåðàêëàäࢠôàéëࢠäàïàìîã³ – ÿíû äàäàþöü ó ôàéëû çàøìàò áðóäó). Íàö³ñí³öå "Ïðàâåðêà ïåðàêëàäó" íà ïàíåë³ àäì³í³ñòðàâàííÿ ìîâࢠ– ãýòàê Âû äàâåäàåöåñÿ, ÿê³õ ôàéëࢠáðàêóå.
        -Íå ïàê³äàéöå ¢ Âàøûì ìî¢íûì ïàêåöå íåïåðàêëàäçåíûÿ ôàéëû äàïàìîã³ ç ³íøàãà ìî¢íàãà ïàêåòó.

        - -

        Êàë³ ëàñêà, ï³øûöå ôàéëû äàïàìîã³ XHTML-àäïàâåäíûì³. Ó ñêàðîöå ãýòà çíà÷ûöü, øòî:

        -
          -
        • Óñå òýã³ ïàâ³íû áûöü çàêðûòûÿ: <p>lalala</p>
        • -
        • Óñå ýëåìåíòû ìóñÿöü áûöü óêëàäçåíû: <p> lalala <em>lalala</em> </p>
        • -
        • Óñå ýëåìåíòû ³ àòðûáóòû ìóñÿöü ï³ñàööà ç ìàëîé ë³òàðû
        • -
        • Óñå àòðûáóòû ìóñÿöü ï³ñàööà ïî¢íàñöþ ³ ¢ äâóêîññ³: <p align="right"> lalala </p>
        • -
        • Ïóñòûÿ ýëåìåíòû ìóñÿöü çàêàí÷âàööà íà />: <br /> <hr />. Òðýáà äàäàâàöü ïðàáåë ïåðàä ñ³ìâàëàì "/".
        • -
        • Ýëåìåíò <img ìóñ³öü ìåöü àòðûáóò alt="" (¸í ìîæà áûöü ïóñòûì) ³ ïàâ³íåí çàêàí÷âàööà, ÿê ³ ëþáû ³íøû ïóñòû ýëåìåíò, ³ /> íàïðûêëàä, <img alt="" src="picture.gif" />
        • -
        • <?= ³ <? ïàâ³ííû áûöü <?php
        • -
        • Íå ïàâ³ííà áûöü ͲßÊ²Õ òýãࢠäëÿ ïàçíà÷ýííÿ øðûôòî¢. Ýëåìåíòࢠ<p><em> <h1> <h2> ³ ã.ä. ìóñ³öü áûöü äàñòàòêîâà äëÿ ìî¢íûõ ôàéëࢠ...
        • -
        • Íàçâà ìîâû ¢ ìî¢íûì ïàêåöå ($string['thislanguage'] ó moodle.php) ìóñ³öü àäïàâÿäàöü, ïà ìàã÷ûìàñö³, Unicode Numeric Character References (NCR), ïàêîëüê³ òàêàÿ àäïàâåäíàñöü äàçâàëÿå ³ìþ ïðàöàâàöü ó ìåæàõ ËÞÁÎÃÀ êàíòýêñòó êàäç³ðî¢ê³ (ãë., íàïðûêëàä, ê³òàéñê³ ïàêåò).
        • -
        -

        ͳâîäç³í ç ôàéëࢠ¢ òý÷öû help íå ïàòðàáóå òýãà¢, øòî ïàçíà÷àþöü òûï äàêóìåíòà (doc type), html, çìåñö³âà (body), àäêðûöö¸ ³ çàêðûöö¸ çàãàëî¢êà – ãýòûÿ ôàéëû ¢êëþ÷àíû ¢ help.php. Ñêðûïò ñàì çàáÿñïå÷ûöü ñëóøíàå ôàðìàâàííå ñòàðîíàê. Ãýòà àçíà÷àå, øòî çàñòàåööà ìàëà ìåñöà äëÿ HTML-òâîð÷àñö³! Êàë³ ëàñêà, òðûìàéöåñÿ àíãåëüñêàãà ¢çîðó.

        -

        Ôàéëû ¢ òý÷öû docs ìóñÿöü áûöü ïî¢íàñöþ XHTML-àäïàâåäíûì³, óêëþ÷íà ç òûïàì äàêóìåíòà (doc type), çàãàëî¢êàì (header) ³ ã.ä.

        -

        Íàö³ñíó¢øû íà "Ïðàâåðêà ïåðàêëàäó" íà ýêðàíå ìî¢íàãà àäì³í³ñòðàâàííÿ Âû ¢áà÷ûöå ôàéëû, ïåðàêëàäࢠÿê³õ áðàêóå. Êàë³ íåéê³õ ôàéëࢠáðàêóå, òàäû Moodle ïà-çìà¢÷àíí³ âûêàðûñòî¢âàå àíãëàìî¢íûÿ àäïàâåäí³ê³, òàìó íå ïàê³äàéöå êîï³ÿ¢ íåïåðàêëàäçåíûõ ôàéëࢠäàïàìîã³ ¢ Âàøûì ìî¢íûì ïàêåöå, ³íà÷àé ãýòû âåëüì³ çðó÷íû ³íñòðóìåíò íå áóäçå ïðàöàâàöü.

        -

        Çìÿø÷ýííå Âàøàãà ìî¢íàãà ïàêåòà ¢ ïðàåêò Moodle

        -

        Ïàäçÿë³ñÿ ñâà³ì ïåðàêëàäàì – äàïàìîæàø ³íøûì êàðûñòàëüí³êàì, ÿê³ÿ êàðûñòàþööà Âàøàé ìîâàé.   -Âàøà ìîâà ñòàíå äàñòóïíàé ó äàëåéøûõ âåðñ³ÿõ ïðàãðàìû Moodle. -

        -

        Ïðîñòà çààðõ³âóéöå ¢ñþ Âàøó íîâóþ ìî¢íóþ äûðýêòîðûþ ¢ zip ôàéë ³ äàøë³öå íà àäðàñ translation@moodle.org. -

        -

        Ìû íàï³øàì Âàì ³ ïàâåäàì³ì ïàäðàáÿçíàñö³.

        -

        Êàë³ ëàñêà, ñïðà¢äç³öå ïåðàä äàñûëêàé íàñòóïíàå:

        -
          -
        • Ö³ ¸ñöü ïóñòûÿ ôàéëû?
        • -
        • ßê³ÿ ôàéëû ³ ëàíöóæê³ íå ïåðàêëàäçåíûÿ?
        • -
        • Ö³ ôàéëû íå ðýäàãàâàë³ñÿ ç äàïàìîãàé wordprocessor-ðýäàêòàðà?
        • -
        • Ö³ óòðûìë³âàå README ôàéë ³ì¸íû ³ ýëåêòðîííûÿ ñêðûíê³ ïåðàêëàä÷ûêࢠÂàøàãà ìî¢íàãà ïàêåòó?
        • -
        • Íàçâà òý÷ê³ àäïàâÿäàå ìî¢íàìó êîäó (ïðàâåðöå moodle\lib\languages.php)?
        • -
        • Ìî¢íû ïàêåò ïðàõîäç³¢ òýñòàâàííå íà ïàìûëê³ íà òýñò-ñàéöå?
        • -
        • Êàë³ " thislanguage " óòðûìë³âàå ³íøûÿ ñ³ìâàëû ÷ûì ëàö³íñê³ÿ ë³òàðû, ö³ ¢òðûìë³âàå ¸í Unicode Numeric Character References (NCR) ñ³ìâàëû?
        • -
        • Ëàíöóæê³ ³ ôàéëû ìàþöü XHTML-êàìïàíåíòû?
        • -
        -

        Óòðûìàííå ñòàíäàðòíàãà ìî¢íàãà ïàêåòà

        -

        Êàë³ Âû æàäàåöå ïàäòðûìë³âàöü ïý¢íóþ ìîâó ¢ Moodle, ëåïø ñêàðûñòàööà Moodle CVS. Òàê³ì ÷ûíàì, ó Âàñ áóäçå íàéíî¢øàÿ âåðñ³ÿ ïðàãðàìû ³ Âû çìîæàöå àïåðàòû¢íà ¢íîñ³öü Âàøû çìåíû ¢ ïðàåêò. Êàë³ Âàì ïàòðýáíà äàïàìîãà ïà ¢ñòàíî¢öû ãýòàãà êàìïàíåíòó, çâÿðí³öåñÿ ïà àäðàñå translation@moodle.org.
        -

        - -

        Òàêñàìà ïàäï³øûöåñÿ íà ìî¢íû ôîðóì – òàì Âû çíîéäçåöå íàâ³íû ³ àáìåðêàâàíí³ ïûòàííÿ¢, çâÿçàíûõ ç ïåðàêëàäàì.

        -

        Íàðýøöå, êàá øòîäç¸ííà áûöü ó êóðñå çìåíà¢, ïàäï³øûöåñÿ íà CVS ðàññûëêó.  Ãýòà äàïàìîæà ïðûâåñö³ Âàø ïåðàêëàä ó ìàêñ³ìàëüíóþ àäïàâåäíàñöü ç àíãë³éñêàé âåðñ³ÿé.

        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        - diff --git a/lang/be/docs/upgrade.html b/lang/be/docs/upgrade.html index 7db4c2dce9d..76184c162c0 100644 --- a/lang/be/docs/upgrade.html +++ b/lang/be/docs/upgrade.html @@ -1,16 +1,24 @@ - - - Moodle Docs: Upgrading - - + Äàêóìåíòàöûÿ Moodle : Àêòóàë³çàöûÿ + + + - -

        Àêòóàë³çàöûÿ Moodle

        + +

        Àêòóàë³çàöûÿ Moodle

        -

        Moodle çàïðàåêòàâàíû òàê³ì ÷ûíàì, êàá áåç ïðàáëåì ìîæíà áûëî ïåðàéñö³ àä ïàïÿðýäíÿé âåðñ³³ äà áîëüø íîâàé.

        Êàë³ òû ¢æî çàëàäàâࢠMoodle, òàäû ìóñ³ø ïàñòóïàöü çãîäíà í³æýé ïåðàë³÷àíûì³ ïðàâ³ëàì³ :

        1. Çðàá³ çàïàñíûÿ êîï³³ âàæíûõ äàäçåíûõ

        @@ -21,12 +29,12 @@

        1. Êàòàëîã, ÿê³ óêëþ÷àå Moodle

        -

        Çðàá³ àñîáíûÿ êîï³³ ãýòûõ ôàéëà¢, ïåðø ÷ûì ïÿðîéäçåø äà íàñòóïíàé âåðñ³³, êàá áûëî ìîæíà âÿðíóöü conf³g.php ³ ¢ñå ìîäóë³, ÿê³ÿ áûë³ ¢áóäàâàíûÿ ¢ òýìû, ìî¢íûÿ ôàéëû, çìåñò êóðñࢠ³ ã.ä.)
        +

        Çðàá³ àñîáíûÿ êîï³³ ãýòûõ ôàéëà¢, ïåðø ÷ûì ïÿðîéäçåø äà íàñòóïíàé âåðñ³³, êàá áûëî ìîæíà âÿðíóöü conf³g.php ³ ¢ñå ìîäóë³, ÿê³ÿ áûë³ ¢áóäàâàíûÿ ¢ òýìû, ìî¢íûÿ ôàéëû, çìåñò êóðñࢠ³ ã.ä.)

        2. Êàòàëîã ç òâà³ì³ äàäçåíûì³.

        -

        Ó ãýòûì ìåñöû çàõî¢âàþööà äàñëàíûÿ ôàéëû (òàê³ÿ ÿê ðýñóðñû, àáî ïðàöû ñòóäýíòà¢), òàìó âåëüì³ ³ñòîòíà çà¢ñ¸äû ìåöü êîï³³ ãýòûõ ôàéëà¢, à íå òîëüê³ ïàä÷àñ àêòóàë³çàöû³ âåðñ³³. Ïðû àêòóàë³çàöû³ ÷àñàì ìîãóöü çìÿíÿööà íàçâû êàòàëîãà¢, àáî ÿíû ìîãóöü ïåðàìÿø÷àööà ¢ ³íøàå ìåñöà.
        +

        Ó ãýòûì ìåñöû çàõî¢âàþööà äàñëàíûÿ ôàéëû (òàê³ÿ ÿê ðýñóðñû, àáî ïðàöû ñòóäýíòà¢), òàìó âåëüì³ ³ñòîòíà çà¢ñ¸äû ìåöü êîï³³ ãýòûõ ôàéëà¢, à íå òîëüê³ ïàä÷àñ àêòóàë³çàöû³ âåðñ³³. Ïðû àêòóàë³çàöû³ ÷àñàì ìîãóöü çìÿíÿööà íàçâû êàòàëîãà¢, àáî ÿíû ìîãóöü ïåðàìÿø÷àööà ¢ ³íøàå ìåñöà.

        3. Áàçà äàäçåíûõ

        @@ -36,6 +44,7 @@

        mysqldump moodle > moodle-backup-2002-10-26.sql

        Ìîæàø òàêñàìà ñêàðûñòàöü ôóíêöûþ "Ýêñïàðòóé" ó Moodle, ïðàç àáàëîíêó WWW "ʳðàâàííå áàçàé äàäçåíûõ" êàá çðàá³öü òîå ñàìàå íà ³íøûõ ïëàòôîðìàõ.

        +

         

        @@ -46,12 +55,12 @@

        Íå ïàäï³ñâàé ïàïÿðýäíÿé óñòàíî¢ê³, õ³áà òîëüê³ òû ¢ïý¢íåíû ¢ òûì, øòî ðîá³ø. ×àñàì ñòàðûÿ ôàéëû ìîãóöü âûêë³êàöü ïðàáëåìû ¢ íîâàé âåðñ³³. Íàéáîëüø ïðûäàòíû ñïîñàá - ãýòà çìÿí³öü íàçâó êàòàëîãà ³ñíóþ÷àé âåðñ³³ Moodle, ³ òîëüê³ ïàñëÿ ðàñïàêàâàöü íîâóþ âåðñ³þ ¢ ñòàðûì ìåñöû.

        -

        mv moodle moodle.backup
        +

        mv moodle moodle.backup
        tar xvzf moodle-1.0.6.tgz

        Ïàñëÿ ÷àãî ñêàï³þé conf³g.php ³ çíåøí³ÿ ìîäóë³, òàê³ÿ ÿê òýìû.

        -

        cp moodle.backup/config.php moodle
        +

        cp moodle.backup/config.php moodle
        cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme

        @@ -64,6 +73,7 @@

        Ïàìÿòàé ïðà ïàðàìåòð "d". ¨í ñëóæûöü äëÿ ñòâàðýííÿ íîâûõ êàòàëîãà¢, êàë³ ãýòà ïàòðýáíà. Âàæíûì ïàðàìåòðàì ç’ÿ¢ëÿåööà òàêñàìà "P". ¨í äàçâàëÿå ñêàñàâàöü ïóñòûÿ êàòàëîã³.

        Êàë³ âûäàåø ôàéëû Moodle, òî ¢âàæë³âà ïðà÷ûòàé ïàâåäàìëåíí³, êàá óïý¢í³ööà, øòî íå ¢çí³êíå í³ÿê³õ êàíôë³êòà¢. Óñå òâàå òýìû ³ íåñòàíäàðòíûÿ çíåøí³ÿ ìîäóë³ çàñòàíóööà íåïàðóøàíûì³.

        +

         

        3. Çàêàí÷ýííå ïðàöýñó àêòóàë³çàöû³.

        @@ -76,11 +86,13 @@

        Íÿ âàæíà, ö³ òû çàÿ¢ëåíû, ÿê àäì³í³ñòðàòàð ö³ íå.

        Moodle à¢òàìàòû÷íà ïàâåäàì³öü ïðà ³ñíàâàííå íîâàé âåðñ³³, à òàêñàìà ïðàâÿäçå ¢ñþ àêòóàë³çàöûþ áàçû äàäçåíûõ ³ íåàáõîäíûõ ôàéëà¢. Êàë³ ¸í íàïàòêàå íåøòà, øòî íå ¢ ñòàíå áóäçå âûêàíàöü ñàìàñòîéíà (øòî çäàðàåööà âåëüì³ ðýäêà), òàäû ïðà³íôàðìóå öÿáå ïðà ¢ñ¸, øòî òðýáà çðàá³öü óðó÷íóþ.

        +

         

        Êàë³ ¢ñ¸ àäáûëîñÿ áåç ïàìûëàê (íå áûëî ïàâåäàìëåííÿ¢ ïðà ïàìûëê³) ìîæíà àäðàçó ïà÷ûíàöü êàðûñòàööà íîâàé âåðñ³ÿé Moodle!

        Êàë³ ¢çí³êíóöü ïðàáëåìû ç àêòóàë³çàöûÿé, íàâåäàé moodle.org ³ çìÿñö³ àáâåñòêó íà Installation Support Forum (ôîðóì äàïàìîã³ ¢ ïðàöýñå ëàäàâàííÿ) ó êóðñå Using Moodle (êàðûñòàííå Moodle).

        -

        Äàêóìåíòàöûÿ Moodle

        -

        Version: $Id$

        +

         

        +

         

        +

        Äàêóìåíòàöûÿ Moodle

        +

        Version: $Id$

        - diff --git a/lang/be/editor.php b/lang/be/editor.php index 8eee0fadada..79f4577a5dc 100644 --- a/lang/be/editor.php +++ b/lang/be/editor.php @@ -1,12 +1,12 @@ ] äëÿ âÿðòàííÿ ¢ ðýæûì â³çóàëüíàãà ðýäàãàâàííÿ.'; $string['texttop'] = 'Ïà âåðõí³ì óñêðàéêó ðàäêà'; +$string['thischarset'] = 'windows-1251'; +$string['thisdirection'] = 'ltr'; $string['top'] = 'Ïà âåðõí³ì óñêðàéêó'; $string['type'] = 'Òûï'; -$string['underline'] = 'Ïàäêðýñëåííû'; +$string['underline'] = 'Ïàäêðýñëåííå'; $string['undo'] = 'Àäìÿí³öü àïîøíÿå äçåÿííå'; $string['unorderedlist'] = 'Ìàðê³ðàâàíû ñï³ñ'; $string['upload'] = 'Çàãðóç³öü'; @@ -111,4 +110,4 @@ $string['width'] = ' $string['wordclean'] = 'Âû÷ûñö³öü àä HTML-òýãà¢, ÿê³ÿ âûêàðûñòî¢âàþööà MS Word'; $string['zip'] = 'Ñòâàðûöü Zip-àðõ³¢'; -?> +?> \ No newline at end of file diff --git a/lang/be/emailprotect.php b/lang/be/emailprotect.php index 492bb6abc24..e69de29bb2d 100644 --- a/lang/be/emailprotect.php +++ b/lang/be/emailprotect.php @@ -1,7 +0,0 @@ - diff --git a/lang/be/enrol_database.php b/lang/be/enrol_database.php index fa99feddf92..956f0eb19e7 100644 --- a/lang/be/enrol_database.php +++ b/lang/be/enrol_database.php @@ -1,5 +1,5 @@ -
      • Âûêëàä÷ûêà ö³ àäì³í³ñòðàòàð ìîãóöü óðó÷íóþ äàäàöü ñòóäýíòࢠó êóðñ ïðàç ìåíþ ê³ðàâàííÿ êóðñàì.
      • -
      • Äëÿ êóðñà ìîæà áûöü ïàçíà÷àíû ïàðîëü, ÿê³ áîëüø âÿäîìû ÿê \"êîäàâàå ñëîâà\". Ëþáû, õòî ÿãî âåäàå, ìîæà äàäàöü ñÿáå ¢ ñêëàä óäçåëüí³êàç êóðñà.
      • -'; $string['enrolname'] = 'Óíóòðàíàÿ ðýã³ñòðàöûÿ íà êóðñå'; -?> +?> \ No newline at end of file diff --git a/auth/index.html b/lang/be/enrol_ldap.php similarity index 100% rename from auth/index.html rename to lang/be/enrol_ldap.php diff --git a/lang/be/enrol_paypal.php b/lang/be/enrol_paypal.php index 46f661fa6a3..a29187b8e2f 100644 --- a/lang/be/enrol_paypal.php +++ b/lang/be/enrol_paypal.php @@ -1,9 +1,7 @@ modulename\" ($a->moduleversion) íå ìîæà áûöü óñòàëÿâàíû. ¨í ïàòðàáóå íàâåéøàé âåðñ³³ ñ³ñòýìû (çàðàç Âû âûêàðûñòî¢âàåöå $a->currentmoodle, à Âàì íåàáõîäíà $a->requiremoodle).'; $string['notavailable'] = 'Çàðàç ãýòà íå äàñòóïíà.'; -$string['processingstops'] = 'Ïðàöýñ ñïûíÿåööà òóò. Çàï³ñû, ÿê³ÿ çàñòàë³ñÿ ³ãíàðóþööà.'; $string['restricteduser'] = 'Ïðàáà÷öå, àëå Âàø ðýã³ñòðàöûéíû çàï³ñ \"$a\" íå äàçâàëÿå Âàì ðàá³öü ãýòà.'; -$string['sessionipnomatch'] = 'Ïðàáà÷öå, àëå Âàø IP-àäðàñ çìÿí³¢ñÿ ïàñëÿ Âàøàãà ïåðøàãà ¢âàõîäó. Ãýòàÿ àñàáë³âàñöü áÿñïåê³ ïàïÿðýäæâàå ¢âàõîä àä Âàøàãà ³ìÿ ³íøûõ êàðûñòàëüí³êࢠíà ñàéò. Çâû÷àéíûÿ êàðûñòàëüí³ê³ íå àòðûìë³âàþöü ãýòàå ïàâåäàìëåííå. Êàë³ ëàñêà çâÿðí³öåñÿ äà àäì³í³ñòðàòîðà ñàéòà çà äàïàìîãàé.'; $string['unknowncourse'] = 'Íåâÿäîìàÿ íàçâà êóðñó '; $string['usernotaddederror'] = 'Êàðûñòàëüí³ê '; $string['usernotaddedregistered'] = 'Êàðûñòàëüí³ê \"$a\" íå äàäàäçåíû - óæî çàðýã³ñòðàâàíû'; $string['usernotavailable'] = '²íôàðìàöûÿ àá äàäçåíûì êàðûñòàëüí³êó Âàì íåäàñòóïíàÿ.'; -?> +?> \ No newline at end of file diff --git a/lang/be/exercise.php b/lang/be/exercise.php index 2c319fd6f19..ad644ea1f2f 100644 --- a/lang/be/exercise.php +++ b/lang/be/exercise.php @@ -1,5 +1,5 @@ Àäìî¢öåñÿ àä âûäàëåííÿ ãýòàãà ðàçâÿçàííÿ.'; $string['deleting'] = 'Âûäàëåííå'; $string['description'] = 'Àï³ñàííå'; $string['descriptionofexercise'] = 'Ïðû àöýíöû Ïðàêòûêàâàííÿ àï³ñàííå ïðàêòûêàâàííÿ àáî çàäàííÿ äëÿ âûêàíàííÿ $a ïàâ³ííà áûöü çìåø÷àíà ¢ äàêóìåíò ôàðìàòࢠWord àáî HTML. Ãýòû ôàéë ïàâ³íåí áûöü çàãðóæàíû ¢ Ïðàêòûêàâàííå ïåðø ÷ûì ÿíî áóäçå àä÷ûíåíà äëÿ $a. Òàêñàìà ìàã÷ûìà ñòâàðûöü íàáîð âàðûÿíòࢠìåíàâ³òà äëÿ ãýòàãà Ïðàêòûêàâàííÿ ¢ òûõ æ ôàðìàòàõ (Word àáî HTML) ³ çàãðóç³öü ó Ïðàêòûêàâàííå ïåðø ÷ûì ÿíî áóäçå àä÷ûíåíà äëÿ $a. '; $string['detailsofassessment'] = 'Ïàäðàáÿçíàñö³ àöýíüâàííÿ'; $string['displayoffinalgrades'] = 'Ïàêàç âûí³êîâûõ àäçíàê'; $string['doubleupload'] = 'Ïàïÿðýäæàííå: ãýòà ïàâåäàìëåííå ìàã÷ûìà áûëî ïàñëàíà äâîé÷û. Ïåðàéäç³öå äà ñòàðîíê³ Àäì³í³ñòðàâàííÿ, ïðàâåðöå ö³ áûëî ïàñëàíà äâà ïàâåäàìëåííÿ àäíîìó ³ òîìó æ êàðûñòàëüí³êó çà êàðîòê³ ïåðûÿä ÷àñó. Âûäàë³öå àäíî ç òàê³õ ïàâåäàìëåííÿ¢.'; -$string['duedate'] = 'Àáóìî¢ëåíàÿ äàòà'; +$string['duedate'] = 'Íåàáõîäíàÿ Äàòà'; $string['edit'] = 'Ðýäàãàâàöü'; $string['editingassessmentelements'] = 'Ðýäàãàâàöü ýëåìåíòû àöýíüâàííÿ'; $string['element'] = 'Ýëåìåíò'; $string['elementweight'] = 'Âàãà ýëåìåíòà'; -$string['enterpassword'] = 'Óâåñö³ ïàðîëü'; $string['entriessaved'] = 'Çàõàâàíûÿ ¢âàõîäû'; $string['errorbanded'] = 'Àá\'ÿäíàíàÿ ïàìûëêà'; $string['excellent'] = 'Âûäàòíà'; $string['exerciseassessments'] = 'Àäçíàê³ Ïðàêòûêàâàííÿ'; $string['exercisefeedback'] = 'Âîäãóê³ ïà Ïðàêòûêàâàíí³'; $string['exercisesubmissions'] = 'Ïàâåäàìëåíí³ ïà Ïðàêòûêàâàíí³'; -$string['fair'] = 'Äàêëàäíà'; $string['generalcomment'] = 'Ãàëî¢íû êàìåíòàð '; $string['good'] = 'Äîáðà'; $string['gradeassessment'] = 'Øêàëà àöýíüâàííÿ'; $string['gradeforassessment'] = 'Øêàëà äëÿ àöýíüâàííÿ'; -$string['gradeforstudentsassessment'] = 'Øêàëà äëÿ $a àöýíê³'; +$string['gradeforstudentsassessment'] = 'Øêàëû äëÿ $a àäçíàê³'; $string['gradeforsubmission'] = 'Øêàëà äëÿ ïàâåäàìëåííÿ¢'; -$string['gradetable'] = 'Òàáë³öà àäçíàê'; -$string['gradinggrade'] = 'Âûë³÷âàííå àäçíàê'; -$string['gradingstrategy'] = 'Ñòðàòýã³ÿ àöýíüâàííÿ'; +$string['gradetable'] = 'Òàáë³öà øêàëû'; +$string['gradingstrategy'] = 'Ñòðàòýã³ÿ øêàë³ðàâàííÿ'; $string['handlingofmultiplesubmissions'] = 'Àïðàöî¢êà ìíîæíûõ ïàâåäàìëåííÿ¢'; -$string['hidenamesfromstudents'] = 'Ñõàâàöü ³ì¸íû àä ñòóäýíòà¢'; -$string['incorrect'] = 'Íåïðàâ³ëüíà'; -$string['late'] = 'Ñïàçíåííå'; -$string['lax'] = 'Ïðûáë³çíà'; -$string['leaguetable'] = 'Ðýéòûíãàâàÿ òàáë³öà äàñëàíûõ ðàáîò'; -$string['mail1'] = 'Âàøàå çàäàííå \'$a\' áûëî àöýíåíàå'; +$string['hidenamesfromstudents'] = 'Ñõàâàöü ²ì¸íû àä Ñòóäýíòà¢'; +$string['incorrect'] = 'Íå ïðàâ³ëüíà'; +$string['leaguetable'] = 'Ðýéòûíãàâàÿ òàáë³öà ïðýçåíòàâàíûõ ïðàöà¢'; +$string['mail1'] = 'Âàøàå çàäàííå \'$a\' áûëî àöýíåíà'; $string['mail2'] = 'Êàìåíòàðû ³ øêàëû ìîãóöü áûöü ïàêàçàíû ïðû àöýíüâàíí³ ïðàêòûêàâàííÿ \'$a\''; -$string['mail3'] = 'Âû ìîæàöå ïàãëÿäçåöü ãýòà ïðû Âàøûì àöýíüâàíí³ ïðàêòûêàâàííÿ'; -$string['mail6'] = 'Âàøàÿ àäçíàêà ïà çàäàíí³ \'$a\' áûëà ðàçãëåäæàíàÿ'; -$string['mail7'] = 'Êàìåíòàðû, àòðûìàíûÿ àä $a ìîæíà ¢áà÷ûöü ïðû àöýíüâàíí³ ïðàêòûêàâàííÿ'; -$string['managingassignment'] = 'ʳðàâàííå ïðàêòûêàâàííåì'; +$string['mail3'] = 'Âû ìîæàöå ïàãëÿäçåöü ãýòà ïðû Âàøûì àöýíüâàíí³ Ïðàêòûêàâàííÿ'; +$string['mail6'] = 'Âàøàÿ àäçíàêà ïà çàäàíí³ \'$a\'áûëà ðàçãëåäæàíàÿ'; +$string['mail7'] = 'Êàìåíòàðû, àòðûìàíûÿ àä $a ìîæíà ¢áà÷ûöü ïðû àöýíüâàíí³ Ïðàêòûêàâàííÿ'; +$string['managingassignment'] = 'ʳðàâàííå Ïðàêòûêàâàííåì'; $string['maximum'] = 'Ìàêñ³ìóì'; -$string['maximumgradeforstudentassessments'] = 'Ìàêñ³ìàëüíàÿ àäçíàêà äëÿ àäçíàê ñòóäýíòà¢: $a'; -$string['maximumgradeforsubmissions'] = 'Ìàêñ³ìàëüíàÿ àäçíàêà äëÿ àäêàçà¢: $a'; $string['maximumsize'] = 'Ìàêñ³ìàëüíû ïàìåð'; -$string['mean'] = 'Ñÿðýäíå'; $string['minimum'] = '̳í³ìóì'; $string['modulename'] = 'Ïðàêòûêàâàííå'; $string['modulenameplural'] = 'Ïðàêòûêàâàíí³'; $string['movingtophase'] = 'Ïåðàñóíóöü ó ôàçó $a'; $string['multiplesubmissions'] = 'Øìàòë³ê³ÿ ïàâåäàìëåíí³'; -$string['noexercisedescriptionssubmitted'] = 'Íå áûë³ àòðûìàíûÿ àí³ÿê³ÿ àï³ñàíí³ ïðàêòûêàâàííÿ'; +$string['noexercisedescriptionssubmitted'] = 'Íå áûë³ àòðûìàíûÿ í³ÿê³ÿ àï³ñàíí³ Ïðàêòûêàâàííÿ'; $string['nosubmissions'] = 'Íÿìà ïàâåäàìëåííÿ¢'; $string['notassessedyet'] = 'ßø÷ý íå àöýíåíà'; $string['notavailable'] = 'Íå äàñòóïíà'; $string['noteonassessmentelements'] = 'Çâåðíåöå ¢âàãó, øòî àöýíüâàííå ìîæà áûöü íÿïðàâ³ëüíûì ç-çà êîëüêàñö³ \"ýëåìåíòࢠàöýíüâàííÿ\".
        Àëå ïðû ãýòûì, ãýòûÿ ýëåìåíòû ìîãóöü çðàá³öü àöýíüâàííå ïðîñòûì ³ áîëüø ýôåêòû¢íûì.
        ßê âûêëàä÷ûê Âû ìîæàöå äàäàâàöü òàê³ÿ ýëåìåíòû ïåðàä òûì, ÿê Âàøàå ïðàêòûêàâàííå ñòàíå äàñòóïíûì äëÿ ñòóäýíòà¢.
        Ãýòûÿ ýëåìåíòû ñòâàðàþööà ïðû ïðûçíà÷ýíí³ çàäàííÿ¢ äëÿ êóðñó, êàë³ òàê³õ ýëåìåíòࢠíÿìà, òî Âàñ áóäóöü ïûòàöü ö³ äàäàâàöü ³õ.
        Âû ìîæàöå çìÿíÿöü êîëüêàñöü ýëåìåíòà¢, âûêàðûñòî¢âàþ÷û âàêíî \"Ðýäàãàâàííå çàäàííÿ\"
        , ñàì³ ýëåìåíòû ìîãóöü áûöü çìåíåíûÿ ç âàêíà \"ʳðàâàííå Ïðàêòûêàâàííåì\". '; -$string['noteongradinggrade'] = 'Ãýòàÿ àöýíêà ïàðà¢íî¢âàå íàêîëüê³ äîáðà òâàÿ àöýíêà ñóïàäàå ç àöýíêàé
        âûïðàöàâàíàé $a. ×ûì âûøýé àöýíêà, òûì âû áë³æýé äà ïàðàçóìåííÿ.'; $string['noteonstudentassessments'] = '{Àäçíàêà àä ñòóäýíòà/Êàí÷àòêîâàÿ àäçíàêà àä âûêëàä÷ûêà}'; $string['notgraded'] = 'Íå àöýíüâàåìàÿ'; $string['notitlegiven'] = 'Íå äàäçåíà í³ÿêàé íàçâû'; $string['numberofassessmentelements'] = 'Êîëüêàñöü êàìåíòàðî¢, Ýëåìåíòࢠàöýíüâàííÿ, õ³áࢠàöýíüâàííÿ, êðûòýðࢠàöýíüâàííÿ àáî êàòýãîðûÿ¢ ó ðóáðûêàõ '; -$string['numberofcriterionelements'] = 'Êîëüêàñöü êðûòýðࢠàöýíüâàííÿ ìóñ³öü áûöü áîëüøàé çà àäç³íêó.'; $string['numberofentries'] = 'Êîëüêàñöü óâàõîäà¢'; -$string['numberofentriesinleaguetable'] = '˳÷áà çàï³ñࢠó Òàáë³öû Ðýéòûíãó'; $string['numberofnegativeresponses'] = 'Êîëüêàñöü àäìî¢íûõ âîäãóêà¢'; $string['onesubmission'] = 'Àäíî ïàâåäàìëåííå'; $string['optionaladjustment'] = 'Íåàáàâÿçêîâàå ê³ðàâàííå'; $string['overallgrade'] = 'Ïî¢íàÿ àäçíàêà'; -$string['passwordprotectedexercise'] = 'Ïàðîëü àáàðîíû ïðàêòûêàâàííÿ'; $string['phase'] = 'Ôàçà'; -$string['phase1'] = 'Íàñòðîéêà ïðàêòûêàâàííÿ'; +$string['phase1'] = 'Íàñòðîéêà Ïðàêòûêàâàííÿ'; $string['phase1short'] = 'Íàñòðîéê³'; $string['phase2'] = 'Äàçâîëåíà $a Àäçíàê³ ³ Ïàâåäàìëåíí³'; $string['phase2short'] = 'Àä÷ûíåíà'; -$string['phase3'] = 'Ïàêàçàöü ïî¢íûÿ àäçíàê³ ³ òàáë³öó ðýéòûíãó'; +$string['phase3'] = 'Ïàêàçàöü ïî¢íûÿ àäçíàê³ ³ ðýéòûíãàâóþ òàáë³öó'; $string['phase3short'] = 'Ïàêàçàöü'; $string['pleasegradetheassessment'] = 'Êàë³ ëàñêà, àöàí³öå ÷àñòêó ïðàöû àä $a'; -$string['pleasemakeyourownassessment'] = 'Êàë³ ëàñêà, àöàí³öå ðàáîòó $a.
        Çâÿðí³öå ¢âàãó, øòî ôàðìóëÿð àöýíüâàííÿ ïà-çìà¢÷àíí³ ïàêàçâàåööà ç àöýíêàé ñòóäýíòà.
        Ìóñ³ø çðàá³öü íåàáõîäíûÿ ïàïðà¢ê³ ³ çàòûì êë³êí³ íà àäíó
        ç êíîïàê óí³çå ñòàðîíê³.'; $string['pleasesubmityourwork'] = 'Êàë³ ëàñêà, àäïðà¢öå Âàøóþ ïðàöó ñêàðûñòà¢øû ãýòóþ ôîðìó'; -$string['pleaseusethisform'] = 'Êàë³ ëàñêà, çàïî¢í³öå ãýòóþ ôîðìó, êàë³ Âû çàâåðøûöå
        ¢ñå ³íñòðóêöû³ ïà âûêàíàíí³ Ïðàêòûêàâàííÿ ïàêàçàíàãà í³æýé.'; -$string['pleaseviewtheexercise'] = 'Êàë³ ëàñêà, ïðàãëåäç³öå Ïðàêòûêàâàííå, ïàêàçàíàå í³æýé íàö³ñêàþ÷û íà ÿãî çàãàëîâàê.
        Âû ïàâ³ííû ñëåäàâàöü ³íñòðóêöûÿì ïà ãýòûì Ïðàêòûêàâàíí³.
        -Êàë³ Âû çàäàâîëåíû òûì, øòî öàëêàì âûêàíàë³ Ïðàêòûêàâàííå, òî Âû íàö³ñí³öå íà ñïàñûëêó \"Àöýíüâàííå\" (àáî \"Ïåðààöýíüâàííå\"), øòî çíàçîäç³ööà í³æýé. Êàë³ Âû àòðûìàåöå ñâàþ àäçíàêó, òî Âàì áóäóöü ïàêàçàíûÿ äàëåéøûÿ ³íñòðóêöû³ àá òûì, øòî òðýáà áóäçå çðàá³öü ïîòûì.'; +$string['pleaseusethisform'] = 'Êàë³ ëàñêà, çàïî¢í³öå ãýòóþ ôîðìó, êàë³ Âû çàâåðøûöå ¢ñå ³íñòðóêöû³ ïà âûêàíàíí³ Ïðàêòûêàâàííÿ ïàêàçàíàãà í³æýé.'; +$string['pleaseviewtheexercise'] = 'Êàë³ ëàñêà, ïðàãëåäç³öå Ïðàêòûêàâàííå, ïàêàçàíàå í³æýé íàö³ñêàþ÷û íà ÿãî çàãàëîâàê.
        Âû ïàâ³ííû ñëåäàâàöü ³íñòðóêöûÿì ïà ãýòûì Ïðàêòûêàâàíí³.
        Êàë³ Âû çàäàâîëåíû òûì, øòî öàëêàì âûêàíàë³ Ïðàêòûêàâàííå, òî Âû íàö³ñí³öå íà ñïàñûëêó \"Àöýíüâàííå\" (àáî \"Ïåðààöýíüâàííå\"), øòî çíàçîäç³ööà í³æýé. Êàë³ Âû àòðûìàåöå ñâàþ àäçíàêó, òî Âàì áóäóöü ïàêàçàíûÿ äàëåéøûÿ ³íñòðóêöû³ àá òûì, øòî òðýáà áóäçå çðàá³öü ïîòûì.'; $string['poor'] = 'Äðýííà'; $string['present'] = 'Ïðýçåíòàöûÿ'; $string['reasonforadjustment'] = 'Ïðû÷ûíà äëÿ ê³ðàâàííÿ'; $string['reassess'] = 'Ïà¢òîðíû äîñòóï'; -$string['regradestudentassessments'] = 'Íàíî¢ àöàí³öü àöýíüâàííå ñòóäýíòà¢'; -$string['resubmissionfor'] = 'Íàíî¢ àäïðàâ³öü ïàâåäàìëåííå $a'; +$string['resubmissionfor'] = '²çíî¢ àäïðàâ³öü ïàâåäàìëåííå $a'; $string['resubmitnote'] = '* àçíà÷àå, øòî $a äàçâîëåíà ïåðàðàá³öü ãýòà ïàâåäàìëåííå.
        Ãýòû ñöÿã ìîæíà ¢ñòà븢âàöü äëÿ ëþáîãà ïàâåäàìëåííÿ äëÿ ïà¢òîðíàãà äîñòóïó ç äàïàìîãàé íàö³ñêó.
        \"Äàçâîëåíà $a ïà¢òîðíà ïàñëàöü ïàâåäàìëåííå\"
        Ñòóäýíò ìîæà ³çíî¢ ïàñûëàöü ñâภïàâåäàìëåííå êàë³ ãýòû ñöÿã óñòàëÿâàíû äëÿ ëþáîãà ç ïàâåäàìëåííÿ¢.'; $string['rubric'] = 'Ðóáðûêà'; $string['savedok'] = 'Çàõàâàíà '; @@ -134,9 +117,8 @@ $string['scaleexcellent7'] = '7 $string['scalegood3'] = '3 áàëû Äîáðà/Äðýííà øêàëû'; $string['scalepresent'] = '2 áàëà Ïðûñóòíàñöü/Àäñóòíàñöü øêàëû'; $string['scaleyes'] = '2 áàëà Òàê/Íå øêàëû'; -$string['specimenassessmentform'] = 'Àñîáí³ê ôîðìû àöýíüâàííÿ'; -$string['standarddeviation'] = 'Ñòàíäàðòíàå àäõ³ëåííå'; -$string['strict'] = 'Äàêëàäíà'; +$string['specimenassessmentform'] = 'Àñîáí³ê ôîðìû àöýíê³'; +$string['strict'] = 'Ñòðîãà'; $string['studentallowedtoresubmit'] = '$a äàçâîëåíà ïàñëàöü ïàâåäàìëåííå íàíî¢'; $string['studentassessments'] = '$a Àäçíàê³'; $string['studentnotallowed'] = '$a íå äàçâîëåíà ïàñûëàöü ïàâåäàìëåíí³ íàíî¢ '; @@ -145,41 +127,34 @@ $string['studentsubmissionsforassessment'] = '$a $string['submission'] = 'Ïàâåäàìëåííå'; $string['submissions'] = 'Ïàâåäàìëåíí³'; $string['submissionsnowclosed'] = 'Ïàâåäàìëåíí³ çàðàç çàêðûòûÿ - êðàéí³ òýðì³í àäñûëê³ Ïàâåäàìëåííÿ ì³íó¢'; -$string['submitexercisedescription'] = 'Äàñëàöü àï³ñàíí³ ïàâåäàìëåííÿ'; -$string['submitted'] = 'Äàñëàíà'; +$string['submitexercisedescription'] = 'Ïàñëàöü àï³ñàíí³ ïàâåäàìëåííÿ'; +$string['submitted'] = 'Ïàñëàíà'; $string['submittedby'] = 'Ïàñëàíà àä'; $string['suggestedgrade'] = 'Ïðàïàíàâàíàÿ àöýíêà'; $string['teacherassessment'] = '$a Àäçíàêà'; -$string['teacherassessmenttable'] = '$a Àöýíà÷íàÿ òàáë³öà'; +$string['teacherassessmenttable'] = '$a Àöýíà÷íàÿ Òàáë³öà'; $string['teacherscomment'] = 'Âûêëàä÷ûöê³ êàìåíòàð'; $string['theexercise'] = 'Ïðàêòûêàâàííå'; -$string['theexerciseandthesubmissionby'] = 'Ïðàêòûêàâàííå ³ ïàâåäàìëåííå àä $a'; +$string['theexerciseandthesubmissionby'] = 'Ïðàêòûêàâàííå ³ Ïàâåäàìëåííå àä $a'; $string['thegradeis'] = 'Àäçíàêà $a'; $string['thereisfeedbackfromthe'] = 'Ãýòà âîäãóê àä $a'; $string['thisisaresubmission'] = 'Ãýòà çíî¢êó ïåðàäàäçåíàå ïàâåäàìëåííå àä $a.
        Âàøàÿ àöýíêà ïàïÿðýäí³õ ïàâåäàìëåííÿ¢ áóäçå ïàêàçàíàÿ.
        Ïàñëÿ ïðàãëÿäó íîâàãà ïàâåäàìëåííÿ, êàë³ ëàñêà âûïðàâ³öå ãýòóþ àäçíàêó ³ íàö³ñí³öå íà àäíó ç êíîïàê, ðàçìåø÷àíûõ óí³çå ñòàðîíê³.'; $string['title'] = 'Çàãàëîâàê'; $string['typeofscale'] = 'Òûï øêàë³ðàâàííÿ'; -$string['unassessed'] = '$a íåàöýíåíûõ'; $string['ungradedstudentassessments'] = '$a àáíàâ³¢ ñòóäýíöêóþ àäçíàêó'; $string['usemaximum'] = 'Âûêàðûñòàöü ìàêñ³ìóì'; -$string['usemean'] = 'Âûêàðûñòàöü ñÿðýäíÿå '; -$string['usepassword'] = 'Âûêàðûñòàöü ïàðîëü'; -$string['verylax'] = 'Âåëüì³ ïðûáë³çíà'; +$string['usemean'] = 'âûêàðûñòàöü ñÿðýäíÿå '; $string['verypoor'] = 'Âåëüì³ äðýííà'; -$string['verystrict'] = 'Âåëüì³ äàêëàäíà'; $string['view'] = 'Ïðàãëÿä'; -$string['viewteacherassessment'] = 'Ïàãëÿäç³ $a àäçíàêó'; -$string['warningonamendingelements'] = 'ÏÀÏßÐÝÄÆÀÍÍÅ: ìàþööà âûñòà¢ëåíûÿ àäçíàê³.
        -Íå çìÿíÿéöå êîëüêàñöü ýëåìåíòà¢, òûïû ¢çâàæâàííÿ àáî âàã³ ýëåìåíòà¢.'; +$string['warningonamendingelements'] = 'ÏÀÏßÐÝÄÆÀÍÍÅ: ìàþööà âûñòà¢ëåíûÿ àäçíàê³.
        Íå çìÿíÿéöå êîëüêàñöü ýëåìåíòà¢, òûïû ¢çâàæâàííÿ àáî âàã³ ýëåìåíòà¢.'; $string['weightederrorcount'] = 'Âàãàâû ³íäýêñ ïàìûëê³: $a'; $string['weightforgradingofassessments'] = 'Âàãà äëÿ ãðàäàöû³ àäçíàê'; $string['weightforteacherassessments'] = 'Âàãà äëÿ $a Àäçíàê'; $string['weights'] = 'Âàã³'; $string['weightssaved'] = 'Âàã³ çàõàâàíûÿ'; -$string['weightsusedforoverallgrade'] = 'Âàã³ âûêàðûñòî¢âàþööà äëÿ ïî¢íàé àöýíê³'; -$string['wrongpassword'] = 'Íåäàêëàäíû ïàðîëü äëÿ ãýòàãà ïðàêòûêàâàííÿ'; +$string['weightsusedforoverallgrade'] = 'Âàã³ âûêàðûñòî¢âàþööà äëÿ Ïî¢íàé àöýíê³'; $string['yourassessment'] = 'Âàøàÿ àäçíàêà'; -$string['yourfeedbackgoeshere'] = 'Âàø âîäãóê áóäçå çìåø÷àíû òóò'; +$string['yourfeedbackgoeshere'] = 'Âàø âîäãóê áóäçå íàê³ðàâàíû ñþäû'; $string['yoursubmission'] = 'Âàøàå ïàâåäàìëåííå'; -?> +?> \ No newline at end of file diff --git a/lang/be/fonts/default.ttf b/lang/be/fonts/default.ttf deleted file mode 100644 index aeca348e5b85867abe45c64c5546dd5907fc56cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51942 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 diff --git a/lang/be/forum.php b/lang/be/forum.php index 486e4f1d5cc..2ea03152d11 100644 --- a/lang/be/forum.php +++ b/lang/be/forum.php @@ -1,5 +1,5 @@ name - $a->date'; -$string['configcleanreadtime'] = 'Ãàäç³íà äíÿ äëÿ à÷ûø÷ýííÿ ñòàðûõ ïàâåäàìëåííÿ¢ ç òàáë³öû \'ïðà÷ûòàíûõ\''; $string['configdisplaymode'] = 'Âûêàðûñòàíû ïà-çìà¢÷àíí³ ðýæûì àáìåðêàâàííÿ.'; $string['configenablerssfeeds'] = 'Ãýòàÿ íàñòðîéêà äàçâîë³öü ðàá³öü çìÿíåíí³ ¢ ôàðìàöå RSS äëÿ ¢ñ³õ ôîðóìà¢. Âû ïàâ³ííû áóäçåöå ¢ðó÷íóþ íàñòðî³öü ãýòà äëÿ êîæíàãà ôîðóìà.'; $string['configlongpost'] = 'Ëþáîå ïàâåäàìëåííå ÿêîå ïåðàâûøàå ãýòû ïàìåð (âûêëþ÷ýííå - HTML) ë³÷ûöü çàâÿë³ê³ì.'; -$string['configmanydiscussions'] = 'Ìàêñ³ìàëüíàÿ êîëüêàñöü àáìåðêàâàííÿ¢, øòî ïàêàçâàåööà íà àäíîé ñòàðîíöû'; -$string['configmaxbytes'] = 'Ìàêñ³ìàëüíû ïàìåð ïà-çìà¢÷àíí³ äëÿ ¢ñ³õ óêëàäàííÿ¢ óñ³õ ôîðóìࢠíà äàäçåíûì ñàéöå (ãýòà çâÿçàíà ç àáìåæàâàííÿì³ ¢ êóðñå ³ ³íøûì³ ëàêàëüíûì³ íàñòðîéêàì³)'; -$string['configoldpostdays'] = 'Êîëüêàñöü äç¸í, ïàñëÿ ÿê³õ ïàâåäàìëåííå ë³÷ûööà ïðà÷ûòàíûì'; -$string['configreplytouser'] = 'Êàë³ ïàâåäàìëåíí³ ç ôîðóìà äàñûëàþööà ïà ïîøöå, ö³ ïàâ³ííû ÿíû ¢òðûìë³âàöü àäðàñ ýëåêòðîííàé ïîøòû êàðûñòàëüí³êà, ÿê³ äàñûëàå ë³ñò? Òàäû àòðûìàëüí³ê³ çìîãóöü àäêàçàöü àñàá³ñòà õóò÷ýé ÷ûì ïðàç ôîðóì. Íàâàò, êàë³ ïàçíà÷ûöü \'Òàê\', êàðûñòàëüí³ê³ ìîãóöü íàñòðî³öü ñâîé óë³êîâû çàï³ñ òàê, øòî àäðàñ ýëåêòðîííàé ïîøòû áóäçå çàõàâàíû ¢ ñàêðýöå.'; -$string['configshortpost'] = 'Ëþáîå ïàâåäàìëåííå ìåíøàå çà ãýòû ïàìåð (âûêëþ÷ýííå - HTML) ë³÷ûöü çàìàëûì.'; -$string['configtrackreadposts'] = 'Óñòàëþé íà \'Òàê\', êàë³ õî÷àø áà÷ûöü ïàçíàêó ïðà÷ûòàíà/íåïðà÷ûòàíà êîæíûì êàðûñòàëüí³êàì'; -$string['configusermarksread'] = 'Êàë³ \'Òàê\', êàðûñòàëüí³ê ìóñ³öü óðó÷íóþ ïàçíà÷ûöü ïàâåäàìëåíí³ ÿê ïðà÷ûòàíûÿ. Êàë³ \'Íå\', òàäû ïàä÷àñ ïðàãëÿäó ïàâåäàìëåííå ïàçíà÷àåööà ÿê ïðà÷ûòàíàå.'; -$string['couldnotadd'] = 'Ïàâåäàìëåííå íå äàäàäçåíà ç ïðû÷ûíû íåâÿäîìàé ïàìûëê³'; +$string['configmanydiscussions'] = 'Ìàêñ³ìàëüíàÿ êîëüêàñöü àáìåðêàâàííÿ¢, øòî ïàçâàåööà íà àäíîé ñòàðîíöû'; +$string['configmaxbytes'] = 'Ìàêñ³ìàëüíû ïàìåð ïà çìà¢÷àíí³ äëÿ ¢ñ³õ óêëàäàííÿ¢ óñ³õ ôîðóìࢠíà äàäçåíûì ñàéöå (ãýòà çâÿçàíà ç àáìåæàâàííÿì³ ¢ êóðñå ³ ³íøûì³ ëàêàëüíûì³ íàñòðîéêàì³)'; +$string['configshortpost'] = 'Ëþáîå ïàâåäàìëåííå ìåíøàå çà ãýòû ïàìåð (âûêëþ÷ýííå - HTML) ë³÷ûöü çàìàëåíüê³ì.'; +$string['couldnotadd'] = 'Ïàâåäàìëåííå íå äàäàäçåíà ç ïðû÷ûíû íåâÿäîìàé ïàìûëê³'; $string['couldnotdeleteratings'] = 'Âûäàëåííå íåìàã÷ûìà: äàäçåíàå ïàâåäàìëåííå ¢æî áûëî àöýíåíà'; $string['couldnotdeletereplies'] = 'Âûäàëåííå íåìàã÷ûìà: íà äàäçåíàå ïàâåäàìëåííå ¢æî áûë³ àäêàçû'; -$string['couldnotupdate'] = 'Ïàâåäàìëåííå íå àáíî¢ëåíàå ç ïðû÷ûíû íåâÿäîìàé ïàìûëê³'; +$string['couldnotupdate'] = 'Ïàâåäàìëåííå íå àáíî¢ëåíàå ç ïðû÷ûíû íåâÿäîìàé ïàìûëê³'; $string['delete'] = 'Âûäàë³öü'; $string['deleteddiscussion'] = 'Òýìà äëÿ àáìåðêàâàííÿ áûëà âûäàëåíàÿ'; $string['deletedpost'] = 'Ïàâåäàìëåííå áûëî âûäàëåíàå'; $string['deletesure'] = 'Âû ¢ïý¢íåíûÿ, øòî æàäàåöå âûäàë³öü ãýòà ïàâåäàìëåííå?'; -$string['digestmailheader'] = 'Ãýòà Âàø äç¸ííû äàéäæýñò íîâûõ ïàâåäìëåííÿ¢ ç ôîðóìࢠ$a->sitename. Êàá çìÿí³öü Âàøûÿ íàñòðîéê³ äëÿ ïðàöû ç ôîðóìàì, ïåðàéäç³öå ïà $a->userprefs.'; -$string['digestmailprefs'] = 'Âàø óë³êîâû çàï³ñ'; -$string['digestmailsubject'] = '$a: äàéäæýñò ôîðóìó'; -$string['digestsentusers'] = 'Äàéäæåñòû áûë³ ïàñïÿõîâà äàñëàíû ýëåêòðîííàé ïîøòàé $a êàðûñòàëüí³êàì.'; $string['discussion'] = 'Àáìåðêàâàííå'; $string['discussionmoved'] = 'Àáìåðêàâàííå ïåðàñóíóòà ¢ \'$a\'.'; $string['discussionname'] = 'Íàçâà àáìåðêàâàííÿ'; @@ -44,7 +35,7 @@ $string['discussthistopic'] = ' $string['eachuserforum'] = 'Êîæíû äàñûëàå àäíó òýìó'; $string['edit'] = 'Ðýäàãàâàöü'; $string['editing'] = 'Ðýäàãàâàííå'; -$string['emptymessage'] = 'Àäáûëàñÿ ïàìûëêà ïàä÷àñ àïðàöî¢ê³ Âàøàãà ïàâåäàìëåííÿ. Âåðàãîäíà, Âû ïàê³íóë³ ÿãî ïóñòûì àáî ïåðàâûñ³ë³ äàïóø÷àëüíû ïàìåð óêëàäàííÿ.
        Ïàâåäàìëåííå íå áûëî çàõàâàíà.'; +$string['emptymessage'] = 'Àäáûëàñÿ ïàìûëêà ïàä÷àñ àïðàöî¢ê³ Âàøàãà ïàâåäàìëåííÿ. Âåðàãîäíà, Âû ïàê³íóë³ ÿãî ïóñòûì àáî ïåðàâûñ³ë³ äàïóø÷àëüíû ïàìåð óêëàäàííÿ.
        Ïàâåäàìëåííå íå áûëî çàõàâàíà.'; $string['everyonecanchoose'] = 'Óñå ìîãóöü ïàäï³ñàööà íà ãýòû ôîðóì'; $string['everyoneissubscribed'] = 'Óñå ïàäï³ñàíûÿ íà ãýòû ôîðóì'; $string['existingsubscribers'] = 'Áÿãó÷ûÿ ïàäï³ñàíòû'; @@ -55,18 +46,16 @@ $string['forumintro'] = ' $string['forumname'] = 'Íàçâà ôîðóìà'; $string['forums'] = 'Ôîðóìû'; $string['forumtype'] = 'Òûï ôîðóìà'; -$string['generalforum'] = 'Ñòàíäàðòíû ôîðóì äëÿ àãóëüíûõ àáìåðêàâàííÿ¢'; +$string['generalforum'] = 'Ñòàíäàðòíû ôîðóì äëÿ àãóëüíûõ àáìåðêàâàííÿ¢'; $string['generalforums'] = 'Àãóëüíûÿ ôîðóìû'; $string['inforum'] = 'ó $a'; $string['intronews'] = 'Ãàëî¢íûÿ íàâ³íû ³ àá\'ÿâû'; -$string['introsocial'] = 'Àäêðûòû ôîðóì'; +$string['introsocial'] = 'Àä÷ûíåíû ôîðóì'; $string['introteacher'] = 'Íàñòà¢í³öê³ ôîðóì'; $string['lastpost'] = 'Àïîøíÿå ïàâåäàìëåííå'; $string['learningforums'] = 'Ôîðóìû íàâó÷àííÿ'; -$string['markread'] = 'Ïàçíà÷ûöü ÿê ïðà÷ûòàíàå'; -$string['markunread'] = 'Ïàçíà÷ûöü ÿê íåïðà÷ûòàíàå'; $string['maxattachmentsize'] = 'Ìàêñ³ìàëüíû ïàìåð óêëàäàííÿ¢'; -$string['maxtimehaspassed'] = 'Äàðóéöå, ÷àñ, íà ïðàöÿãó ÿêîãà ðýäàãàâàííå ãýòàãà ïàâåäàìëåííÿ ($a), ì³íó¢!'; +$string['maxtimehaspassed'] = 'Âûáà÷ûöå ÷àñ, íà ïðàöÿãó ÿêîãà ðýäàãàâàííå ãýòàãà ïàâåäàìëåííÿ ($a), ì³íóëà!'; $string['message'] = 'Ïàâåäàìëåííå'; $string['modeflatnewestfirst'] = 'Ïëîñêà, íàïåðàäçå íîâûÿ'; $string['modeflatoldestfirst'] = 'Ïëîñêà, íàïåðàäçå ñòàðûÿ'; @@ -81,23 +70,23 @@ $string['namesocial'] = ' $string['nameteacher'] = 'Íàñòà¢í³öê³ ôîðóì'; $string['newforumposts'] = 'Íîâûÿ ïàâåäàìëåíí³ ôîðóìà'; $string['nodiscussions'] = 'Íÿìà òýìࢠäëÿ àáìåðêàâàííÿ'; -$string['noguestpost'] = 'Äàðóéöå, ãîñöþ íå äàçâàëÿåööà ï³ñàöü ó ôîðóì'; +$string['noguestpost'] = 'Âûáà÷àéöå, Ãîñöþ íå äàçâàëÿåööà ï³ñàöü ó ôîðóì'; $string['nomorepostscontaining'] = 'Ïàâåäàìëåííÿ¢, ÿê³ÿ çìÿø÷àþöü \'$a\' íå çíîéäçåíà'; $string['nonews'] = 'Íîâûõ ðàçäçåëࢠíÿìà'; $string['noposts'] = 'Íÿìà ïàâåäàìëåííÿ¢'; $string['nopostscontaining'] = 'Ïàâåäàìëåííÿ¢, ÿê³ÿ çìÿø÷àþöü \'$a\', çíîéäçåíà íå áûëî'; $string['nosubscribers'] = 'Ó ãýòàãà ôîðóìà íÿìà ïàäï³ñàíòà¢'; -$string['notingroup'] = 'Äàðóéöå, àëå Âû ïàâ³ííû áûöü ÷àëüöîì ãðóïû, êàá áà÷ûöü ãýòû ôîðóì.'; -$string['nownotsubscribed'] = '$a->name áîëüø ÍÅ áóäçå àòðûìë³âàöü êîï³³ ïàâåäàìëåííÿ¢ ç ôîðóìà \'$a->forum\' ïðàç e-mail.'; +$string['notingroup'] = 'Âûáà÷ûöå, àëå Âû ïàâ³ííû áûöü ñÿáðàì ãðóïû, êàá áà÷ûöü ãýòû ôîðóì.'; +$string['nownotsubscribed'] = '$a->name áîëüø ÍÅ áóäçå àòðûìë³âàöü êîï³³ ïàâåäàìëåííÿ¢ ôîðóìà \'$a->forum\' ïðàç e-mail.'; $string['nowsubscribed'] = '$a->name áóäçå àòðûìë³âàöü êîï³³ ïàâåäàìëåííÿ¢ ôîðóìà \'$a->forum\' ïðàç e-mail.'; $string['numposts'] = 'ïàâåäàìëåííÿ¢ - $a'; $string['olderdiscussions'] = 'Ñòàðûÿ àáìåðêàâàíí³'; $string['openmode0'] = 'Çàïûòâàöü ³ àäêàçâàöü íåëüãà'; $string['openmode1'] = 'Çàïûòâàöü íåëüãà, àäêàçâàöü ìîæíà'; $string['openmode2'] = '² çàïûòâàöü, ³ àäêàçâàöü ìîæíà'; -$string['parent'] = 'Ïàêàç à¢òàðà'; -$string['parentofthispost'] = 'À¢òàð ãýòàãà ïàâåäàìëåííÿ'; -$string['postadded'] = 'Âàøàå ïàâåäàìëåííå äàäàäçåíà.
        Ó Âàñ ¸ñöü $a äëÿ çàíÿñåííÿ çìÿíåííÿ¢'; +$string['parent'] = 'Ïàêàç áàöüê³'; +$string['parentofthispost'] = 'Áàöüêà ãýòàãà ïàâåäàìëåííÿ'; +$string['postadded'] = 'Âàøàå ïàâåäàìëåííå äàäàäçåíà.

        Ó Âàñ ¸ñöü $a äëÿ çàíÿñåííÿ çìÿíåííÿ¢'; $string['postincontext'] = 'Ó êàíòýêñöå'; $string['postmailinfo'] = 'Ãýòà êîï³ÿ ïàâåäàìëåííÿ ç $a. Êàá àäêàçàöü íà ÿãî íà ñàéöå - ³äç³öå ïà ãýòàé ñïàñûëöû: '; $string['postrating1'] = 'Ó àñíî¢íûì àáìÿðêî¢âàþööà ïðûâàòíàñö³'; @@ -107,7 +96,6 @@ $string['posts'] = ' $string['posttoforum'] = 'Àäïðàâ³öü íà ôîðóì'; $string['postupdated'] = 'Âàøàå ïàâåäàìëåííå áûëî çìåíåíàå'; $string['potentialsubscribers'] = 'Ïàòýíöûéíûÿ ïàäï³ñàíòû'; -$string['processingdigest'] = 'Ôàðìóåööà äàéäæýñò ïàâåäàìëåííÿ¢ äëÿ êàðûñòàëüí³êà $a '; $string['processingpost'] = 'Àïðàöî¢âàåööà ïàâåäàìëåííå $a...'; $string['prune'] = 'Àääçÿë³öü'; $string['prunedpost'] = 'Ç ïàâåäàìëåííÿ áûëî ñòâîðàíà íîâàå àáìåðêàâàííå'; @@ -123,15 +111,15 @@ $string['ratings'] = ' $string['ratingssaved'] = 'Àäçíàê³ çàõàâàíûÿ'; $string['ratingsuse'] = 'Âûêàðûñòàöü àöýíüâàííå'; $string['ratingtime'] = 'Àáìÿæóéöå àäçíàê³ çà ïàâåäàìëåíí³ ¢ ãýòûì äûÿïàçîíå äàòà¢:'; -$string['re'] = 'Àäêàç:'; -$string['readtherest'] = 'Ïðà÷ûòàöü ïàê³íóòûÿ ïàâåäàìëåíí³'; +$string['re'] = 'Re:'; +$string['readtherest'] = 'Ïðà÷ûòàöü ïàê³íóòûÿ ïàâåäàìëåíí³'; $string['replies'] = 'Àäêàçû'; $string['repliesmany'] = 'Ïàêóëü $a àäêàçà¢'; $string['repliesone'] = 'Ïàêóëü $a àäêàç'; $string['reply'] = 'Àäêàçàöü'; $string['replyforum'] = 'Àäêàçàöü ó ôîðóì'; -$string['rsssubscriberssdiscussions'] = 'Ïàêàçàöü RSS-ñòóæêó äëÿ \'$a\' äûñêóñ³ÿ¢'; -$string['rsssubscriberssposts'] = 'Ïàêàçàöü RSS-ñòóæêó äëÿ \'$a\' ïàâåäàìëåííÿ¢'; +$string['rsssubscriberssdiscussions'] = 'Ïàêàçàöü çìÿíåíí³ ¢ ôàðìàöå RSS äëÿ \'$a\' äûñêóñ³ÿ¢'; +$string['rsssubscriberssposts'] = 'Ïàêàçàöü çìÿíåíí³ ¢ ôàðìàöå RSS äëÿ \'$a\' ïàâåäàìëåííÿ¢'; $string['search'] = 'Ïîøóê ïà ôîðóìàõ'; $string['searchforums'] = 'Øóêàöü'; $string['searcholderposts'] = 'Ïîøóê ñòàðûõ ïàâåäàìëåííÿ¢...'; @@ -148,13 +136,9 @@ $string['subscribenone'] = ' $string['subscribers'] = 'Ïàäï³ñàíòû'; $string['subscribersto'] = 'Ïàäï³ñàíòû \'$a\''; $string['subscribestart'] = 'Àäïðà¢ëÿöü '; -$string['subscribestop'] = 'ß íå æàäàþ àòðûìë³âàöü êîï³³ ïàâåäàìëåííÿ¢ ó ãýòûì ôîðóìå'; +$string['subscribestop'] = 'ß íå æàäàþ àòðûìë³âàöü e-mail êîï³³ ïàâåäàìëåííÿ¢ ó ãýòûì ôîðóìå'; $string['subscription'] = 'Ïàäï³ñêà'; $string['subscriptions'] = 'Ïàäï³ñê³'; -$string['unread'] = 'Íåïðà÷ûòàíàå'; -$string['unreadposts'] = 'Íåïðà÷ûòàíûÿ ïàâåäàìëåíí³'; -$string['unreadpostsnumber'] = ' $a íåïðà÷ûòàíûõ ïàâåäàìëåííÿ¢'; -$string['unreadpostsone'] = '1 íåïðà÷ûòàíàå ïàâåäàìëåííå'; $string['unsubscribe'] = 'Àíóëÿâàöü ïàäï³ñêó'; $string['unsubscribed'] = 'Íåïàäï³ñàíûÿ'; $string['unsubscribeshort'] = 'Àäï³ñàöü'; @@ -164,4 +148,4 @@ $string['youratedthis'] = ' $string['yournewtopic'] = 'Òýìà äëÿ àáìåðêàâàííÿ¢'; $string['yourreply'] = 'Âàø àäêàç'; -?> +?> \ No newline at end of file diff --git a/lang/be/glossary.php b/lang/be/glossary.php index b5f3db0f440..f7822a94f60 100644 --- a/lang/be/glossary.php +++ b/lang/be/glossary.php @@ -1,170 +1,159 @@ Àçíà÷ýííå ³ òëóìà÷ýííå - àáàâÿçêîâûÿ ïàë³.'; -$string['explainall'] = 'Ïàêàçàöü ÓÑÅ àðòûêóëû íà àäíîé ñòàðîíöû'; -$string['explainalphabet'] = 'Ïðàãëÿä ñëî¢í³êà, âûêàðûñòî¢âàþ÷û ãýòû ³íäýêñ'; -$string['explainexport'] = 'Ôàéë áû¢ ñòâîðàíû.
        Çàãðóç³öå ³ çàõàâàéöå ÿãî. Âû ìîæàöå ³ìïàðòàâàöü ÿãî ¢ ëþáû ÷àñ ó ãýòû àáî ³íøû êóðñå.'; -$string['explainimport'] = 'Âû ïàâ³ííû âûçíà÷ûöü ôàéë, êàá ³ìïàðòàâàöü ³ âûçíà÷ûöü êðûòýðû ãýòàãà ïðàöýñó.
        Ïàøë³öå Âàø çàïûò ³ ïðàãëåäçüöå âûí³ê³.'; -$string['explainspecial'] = 'Ïàêàæûöå àðòûêóëû, ÿê³ÿ íå ïà÷ûíàþööà ç ë³òàðû'; -$string['exportedentry'] = 'Ýêñïàðòóåìû àðòûêóë'; +$string['entbypage'] = 'Çàï³ñû, ïàêàçàíûÿ íà ñòàðîíöû'; +$string['entries'] = 'Çàï³ñû'; +$string['entrieswithoutcategory'] = 'Çàï³ñû áåç êàòýãîðû³'; +$string['entry'] = 'Çàï³ñ'; +$string['entryalreadyexist'] = 'Çàï³ñ óæî ³ñíóå'; +$string['entryapproved'] = 'Ãýòû çàï³ñ áû¢ çàöâåðäæàíû'; +$string['entrydeleted'] = 'Çàï³ñ âûäàëåíû'; +$string['entryexported'] = 'Çàï³ñ ïàñïÿõîâà ýêñïàðòàâàíû'; +$string['entryishidden'] = '(ãýòû çàï³ñ çàðàç ñõàâàíû)'; +$string['entryleveldefaultsettings'] = 'Íàñòðîéê³ ïà çìà¢÷àíí³ ¡çðî¢íþ çàï³ñó'; +$string['entryusedynalink'] = 'Ãýòû çàï³ñ áóäçå à¢òàìàòû÷íà çâÿçàíû'; +$string['explainaddentry'] = 'Äàäàöü íîâû çàï³ñ ó áÿãó÷û ãëàñàð.
        Êàíöýïöûÿ ³ àçíà÷ýíí³ - àáàâÿçêîâûÿ ïàë³'; +$string['explainall'] = 'Ïàêàçàöü ÓÑÅ çàï³ñû ÿê àäíó ñòàðîíêó'; +$string['explainalphabet'] = 'Ïîøóê ãëàñàðà âûêàðûñòî¢âàþ÷û ãýòû ³íäýêñ'; +$string['explainexport'] = 'Ôàéë áû¢ ñòâîðàíû.
        Çàãðóç³öå ³ çàõàâàåöå ÿãî. Âû ìîæàöå ³ìïàðòàâàöü ÿãî ¢ ëþáû ÷àñ ó ãýòûì àáî ³íøûì êóðñå.'; +$string['explainimport'] = 'Âû ïàâ³ííû âûçíà÷ûöü ôàéë, êàá ³ìïàðòàâàöü ³ âûçíà÷ûöü êðûòýðû ãýòàãà ïðàöýñó.

        Ïàøë³öå Âàøû çàïûò ³ ïðàãëåäç³öå âûí³ê³.'; +$string['explainspecial'] = 'Ïàêàæûöå çàï³ñû, ÿê³ÿ íå ïà÷ûíàþööà ç ë³òàðû'; +$string['exportedentry'] = 'Ýêñïàðòóåìû çàï³ñ'; $string['exportedfile'] = 'Ýêñïàðòóåìû ôàéë'; -$string['exportentries'] = 'Ýêñïàðòóåìûÿ àðòûêóëû'; -$string['exportglossary'] = 'Ýêñïàðò ñëî¢í³êà'; -$string['exporttomainglossary'] = 'Ýêñïàðò ó ãàëî¢íû ñëî¢í³ê'; +$string['exportentries'] = 'Ýêñïàðòóåìûÿ çàï³ñû'; +$string['exportglossary'] = 'Ýêñïàðò ãëàñàðà'; +$string['exporttomainglossary'] = 'Ýêñïàðò ó ãàëî¢íû ãëàñàð'; $string['filetoimport'] = 'Ôàéë äëÿ ³ìïàðòó'; -$string['fillfields'] = 'Àçíà÷ýííå ³òëóìà÷ýííå - àáàâÿçêîâûÿ ïàë³.'; -$string['filtername'] = 'À¢òàñïàñûëêà íà ñëî¢í³ê'; -$string['fullmatch'] = 'Ñóïàäçåííå ïà ïî¢íàé ôîðìå àçíà÷ýííÿ'; -$string['globalglossary'] = 'Ãëàáàëüíû ñëî¢í³ê'; -$string['glossaryleveldefaultsettings'] = 'Íàñòðîéê³ ïà-çìà¢÷àíí³ äëÿ ¡çðî¢íþ Ñëî¢í³êà'; -$string['glossarytype'] = 'Òûï ñëî¢í³êà'; -$string['glosssaryexported'] = 'Ñëî¢í³ê ýêñïàðòàâàíû.'; -$string['importcategories'] = '²ìïàðò êàòýãîðûé'; +$string['fillfields'] = 'Êàíöýïöûÿ ³ àçíà÷ýííå - àáàâÿçêîâûÿ ïàë³.'; +$string['filtername'] = 'À¢òàçâÿçâàííå ãëàñàðà'; +$string['fullmatch'] = 'Àäïàâåäíàñöü òîëüê³ ïà ïî¢íûõ ñëîâàõ'; +$string['globalglossary'] = 'Ãëàáàëüíû ãëàñàð'; +$string['glossaryleveldefaultsettings'] = 'Íàñòðîéê³ ïà çìà¢÷àíí³ äëÿ ¡çðî¢íþ Ãëàñàðà'; +$string['glossarytype'] = 'Òûï ãëàñàðà'; +$string['glosssaryexported'] = 'Ãëàñàð ýêñïàðòàâàíû'; +$string['importcategories'] = 'Êàòýãîðû³ ³ìïàðòó'; $string['importedcategories'] = '²ìïàðòóåìûÿ êàòýãîðû³'; -$string['importedentries'] = '²ìïàðòóåìûÿ àðòûêóëû'; -$string['importentries'] = '²ìïàðò àðòûêóëà¢'; -$string['isglobal'] = 'Ãýòû ñëî¢í³ê ãëàáàëüíû?'; -$string['linkcategory'] = 'À¢òàñïàñûëêó íà ãýòóþ êàòýãîðûþ'; -$string['mainglossary'] = 'Ãàëî¢íû ñëî¢í³ê'; +$string['importedentries'] = '²ìïàðòóåìûÿ çàï³ñû'; +$string['importentries'] = '²ìïàðò çàï³ñà¢'; +$string['isglobal'] = 'Ãýòû ãëàñàð ãëàáàëüíû?'; +$string['linkcategory'] = 'À¢òàìàòû÷íàå çâÿçâàííå ãýòàé êàòýãîðû³'; +$string['mainglossary'] = 'Ãàëî¢íû ãëàñàð'; $string['maxtimehaspassed'] = 'Ïðàáà÷öå, àëå ìàêñ³ìàëüíû ÷àñ äëÿ ðýäàãàâàííÿ ãýòàãà êàìåíòàðà ($a) ì³íó¢!'; -$string['modulename'] = 'Ñëî¢í³ê'; -$string['modulenameplural'] = 'Ñëî¢í³ê³'; -$string['newentries'] = 'Íîâûÿ àðòûêóëû ¢ ñëî¢í³ê'; -$string['newglossary'] = 'Íîâû ñëîí³ê'; -$string['newglossarycreated'] = 'Íîâû ñëîí³ê ñòâîðàíû.'; -$string['newglossaryentries'] = 'Íîâûÿ àðòûêóëû ¢ ñëî¢í³êó:'; +$string['modulename'] = 'Ãëàñàð'; +$string['modulenameplural'] = 'Ãëàñàðû'; +$string['newentries'] = 'Íîâûÿ çàï³ñû ¢ ãëàñàð'; +$string['newglossary'] = 'Íîâû ãëàñàð'; +$string['newglossarycreated'] = 'Íîâû ãëàñàð ñòâîðàíû'; +$string['newglossaryentries'] = 'Íîâûÿ çàï³ñû ¢ ãëàñàð:'; $string['nocomment'] = 'Íå çíîéäçåíà êàìåíòàðî¢'; -$string['nocomments'] = '(ͳÿê³ÿ êàìåíòàðû, íÿ çíîéäçåíûÿ äëÿ ãýòàãà àðòûêóëà)'; -$string['noconceptfound'] = 'Íå çíîéäçåíûÿ àçíà÷ýííå ³ òëóìà÷ýííå.'; -$string['noentries'] = 'Íÿìà àðòûêóëࢠó ãýòûì ðàçäçåëå'; -$string['noentry'] = 'Íå çíîéäçåíû àðòûêóë.'; +$string['nocomments'] = '(ͳÿê³ÿ êàìåíòàðû, íå çíîéäçåíûÿ ¢ ãýòûì çàï³ñû)'; +$string['noconceptfound'] = 'Íå çíîéäçåíûÿ êàíöýïöûÿ ³ àçíà÷ýííå'; +$string['noentries'] = 'ͳÿê³ÿ çàï³ñû íå çíîéäçåíûÿ ¢ ãýòàé ñåêöû³'; +$string['noentry'] = 'Íå çíîéäçåíû çàï³ñ'; $string['notcategorised'] = 'Íå ¢ êàòýãîðû³'; -$string['numberofentries'] = 'Êîëüêàñöü àðòûêóëà¢'; -$string['onebyline'] = '(àäç³í íà ðàäîê)'; +$string['numberofentries'] = 'Êîëüêàñöü çàï³ñà¢'; +$string['onebyline'] = '(àäç³í íà ë³í³³)'; $string['printerfriendly'] = 'Âåðñ³ÿ äëÿ äðóêó'; -$string['printviewnotallowed'] = 'Ïðàãëÿä ïåðàä äðóêàì íå äàçâîëåíû'; $string['question'] = 'Ïûòàííå'; $string['rate'] = 'Àäçíàêà'; $string['rating'] = 'Àöýíüâàííå'; -$string['ratingeveryone'] = 'Ëþáû ìîæà àöýíüâàöü àðòûêóëû'; +$string['ratingeveryone'] = 'Ëþáû ìîæà àöàíüâàöü çàï³ñû'; $string['ratingno'] = 'Íå àöýíüâàöü'; -$string['ratingonlyteachers'] = 'Òîëüê³ $a ìîæà àöýíüâàöü àðòûêóëû'; +$string['ratingonlyteachers'] = 'Òîëüê³ $a ìîæà àöýíüâàöü çàï³ñû'; $string['ratings'] = 'Àäçíàê³'; $string['ratingssaved'] = 'Àäçíàê³ çàõàâàíûÿ'; $string['ratingsuse'] = 'Âûêàðûñòàöü àäçíàê³'; -$string['ratingtime'] = 'Àáìÿæóéöå äàòû ¢ ãýòûì äûÿïàçîíå äëÿ âûñòà¢ëåííÿ àäçíàê çà àðòûêóëû:'; -$string['rejectedentries'] = 'Àäõ³ëåíûÿ àðòûêóëû'; +$string['ratingtime'] = 'Àáìÿæóéöå àöýíê³ ïà çàï³ñàõ äàòàì³ ¢ ãýòûì äûÿïàçîíå:'; +$string['rejectedentries'] = 'Àäõ³ëåíûÿ çàï³ñû'; $string['rejectionrpt'] = 'Àäõ³ëåíàÿ ñïðàâàçäà÷à'; -$string['rsssubscriberss'] = 'Ïàêàçàöü çìÿíåíí³ ¢ RSS ôàðìàöå äëÿ \'$a\' àçíà÷ýííÿ¢'; +$string['rsssubscriberss'] = 'Ïàêàçàöü çìÿíåíí³ ¢ RSS ôàðìàöå äëÿ \'$a\' êàíöýïöûé'; $string['searchindefinition'] = 'Ïà¢íàòýêñòàâû ïîøóê'; -$string['secondaryglossary'] = 'Äðóãàñíû ñëî¢í³ê'; -$string['sendinratings'] = 'Äàøë³öå ìàå àïîøí³ÿ àäçíàê³'; -$string['showall'] = 'Ïàêàçàöü ñïàñûëêó \'ÓÑÅ\''; +$string['secondaryglossary'] = 'Äðóãàñíû ãëàñàð'; +$string['sendinratings'] = 'Âûøë³öå ìàå àïîøí³ÿ àäçíàê³'; +$string['showall'] = 'Ïàêàçàöü ÓÑÅ ñóâÿç³'; $string['showalphabet'] = 'Ïàêàçàöü àëôàâ³ò'; -$string['showspecial'] = 'Ïàêàçàöü ñïàñûëêó \'Àäìûñëîâû\''; +$string['showspecial'] = 'Ïàêàçàöü àäìûñëîâûÿ ñóâÿç³'; $string['sortby'] = 'Ñàðòàâàöü ïà'; -$string['sortbycreation'] = 'Ïà äàöå ñòâàðýííÿ'; -$string['sortbylastupdate'] = 'Ïà àïîøíÿìó àáíà¢ëåííþ'; +$string['sortbycreation'] = 'Ñòâàðûöü äàòó'; +$string['sortbylastupdate'] = 'Àïîøíÿå àáíà¢ëåííå'; $string['sortchronogically'] = 'Õðàíàëàã³÷íàå ñàðòàâàííå'; $string['special'] = 'Àäìûñëîâû'; $string['standardview'] = 'Øóêàöü ïà àëüôàâ³òó'; -$string['studentcanpost'] = 'Ñòóäýíòû ìîãóöü äàäàâàöü àðòûêóëû'; -$string['totalentries'] = 'Óñÿãî àðòûêóëà¢'; -$string['usedynalink'] = 'À¢òàìàòû÷íàÿ ñïàñûëêà íà àðòûêóëû ñëî¢í³êà'; -$string['waitingapproval'] = '×àêàéöå äàçâîëó'; -$string['warningstudentcapost'] = '(Âûêàðûñòî¢âàöü òîëüê³ êàë³ ñëî¢í³ê íå ãàëî¢íû)'; -$string['withauthor'] = 'Àçíà÷ýíí³ ç à¢òàðàì'; -$string['withoutauthor'] = 'Àçíà÷ýíí³ áåç à¢òàðà'; +$string['studentcanpost'] = 'Ñòóäýíòû ìîãóöü äàäàâàöü çàï³ñû'; +$string['totalentries'] = 'Óñÿãî çàï³ñà¢'; +$string['usedynalink'] = 'À¢òàìàòû÷íàå çâÿçâàííå çàï³ñࢠãëàñàðà'; +$string['waitingapproval'] = '×àêàéöå ïàöâåðäæàííÿ'; +$string['warningstudentcapost'] = '(Âûêàðûñòî¢âàöü òîëüê³ êàë³ ãëàñàð íå ãàëî¢íû)'; +$string['withauthor'] = 'Êàíöýïöû³ ç à¢òàðàì³'; +$string['withoutauthor'] = 'Êàíöýïöû³ áåç à¢òàðà'; $string['writtenby'] = 'ïà'; -$string['youarenottheauthor'] = 'Âû - íå à¢òàð ãýòàãà êàìåíòàðó, òàê øòî Âàì íå äàçâîëåíà ðýäàãàâàöü ÿãî.'; +$string['youarenottheauthor'] = 'Âû - íå à¢òàð ãýòàãà êàìåíòàðà, òàê øòî Âàì íå äàçâàëÿþöü ðýäàãàâàöü ãýòà.'; -?> +?> \ No newline at end of file diff --git a/lang/ar/questionnaire.php b/lang/be/grades.php similarity index 100% rename from lang/ar/questionnaire.php rename to lang/be/grades.php diff --git a/lang/be/help/assignment/assignmenttype.html b/lang/be/help/assignment/assignmenttype.html index b68e4db4503..8265c332fa1 100644 --- a/lang/be/help/assignment/assignmenttype.html +++ b/lang/be/help/assignment/assignmenttype.html @@ -1,8 +1,8 @@ -

        Òûïû çàäàííÿ¢

        +

        Òûïû çàäàííÿ¢

        -

        ²ñíóå äâà â³äû çàäàííÿ¢

        +

        ²ñíóå äâà â³äû çàäàííÿ¢

        -

        Àäêàç – ïà-çà ñàéòàì - ãýòû òûï çàäàííÿ ìàå íà ¢âàçå, øòî ñòóäýíò àäêàçâàå íà ïûòàííå ïà-çà ñàéòàì. Ñòóäýíòû áà÷àöü òýêñò çàäàííÿ, àëå íå ìîãóöü ó àäêàç íà ÿãî çàïàìïî¢âàöü ôàéëû íà ñýðâåð. Íàñòà¢í³ê³ ìîãóöü àöýíüâàöü ðàáîòó ñòóäýíòà¢, ³ ñòóäýíòû ìîãóöü áà÷ûöü àöýíê³ âûí³êࢠñâà¸é ïðàöû.

        +

        Àäêàç – ïà-çà ñàéòàì - ãýòû òûï çàäàííÿ ìàå íà ¢âàçå, øòî ñòóäýíò àäêàçâàå íà ïûòàííå ïà-çà ñàéòàì. Ñòóäýíòû áà÷àöü òýêñò çàäàííÿ, àëå íå ìîãóöü ó àäêàç íà ÿãî çàïàìïî¢âàöü ôàéëû íà ñýðâåð. Íàñòà¢í³ê³ ìîãóöü àöýíüâàöü ðàáîòó ñòóäýíòà¢, ³ ñòóäýíòû ìîãóöü áà÷ûöü àöýíê³ âûí³êࢠñâà¸é ïðàöû. -

        Àäêàç – ó âûãëÿäçå ôàéëó - ãýòû òûï çàäàííÿ¢ äàçâàëÿå ñòóäýíòàì çàïàìïî¢âàöü íà ñýðâåð àäêàç ó âûãëÿäçå àäíàãî ëþáîãà ôàéëà. Ãýòà ìîæà áûöü òýêñòàâû äàêóìåíò, êàðö³íêà, zip-àðõ³¢, àáî ³íøàãà òûïó, ó çàëåæíàñö³ àä çàäàííÿ. Íàñòà¢í³ê³ ìîãóöü ñòàâ³öü àäçíàê³ çà àäêàç.

        +

        Àäêàç – ó âûãëÿäçå ôàéëó - ãýòû òûï çàäàííÿ¢ äàçâàëÿå ñòóäýíòàì çàïàìïî¢âàöü íà ñýðâåð àäêàç ó âûãëÿäçå àäíàãî ëþáîãà ôàéëà. Ãýòà ìîæà áûöü òýêñòàâû äàêóìåíò, êàðö³íêà, zip-àðõ³¢, àáî ³íøàãà òûïó, ó çàëåæíàñö³ àä çàäàííÿ. Íàñòà¢í³ê³ ìîãóöü ñòàâ³öü àäçíàê³ çà àäêàç. diff --git a/lang/be/help/assignment/mods.html b/lang/be/help/assignment/mods.html index 707deef264f..da738f5d17a 100644 --- a/lang/be/help/assignment/mods.html +++ b/lang/be/help/assignment/mods.html @@ -1,5 +1,5 @@ -

         Çàäàíí³

        -
        +

         Çàäàíí³

        +

          Çàäàíí³ äàþöü ìàã÷ûìàñöü âÿäó÷àìó àêðýñë³öü ïðàöû, ÿê³ÿ ñòóäýíòû ïàâ³ííû âûêàíàöü ó ýëåêòðîííàé ôîðìå (ó ëþáûì ôàðìàöå) i ïåðàñëàöü íà ñýðâåð. Òûïîâûÿ çàäàíí³ ãýòà ïðàêòûêàâàíí³, ïðàåêòû, ñïðàâàçäà÷û ³ ä.ï. Ãýòû ìîäóëü âàëîäàå ôóíêöûÿé, ÿêàÿ äàå ìàã÷ûìàñöü âûñòà¢ëÿöü àäçíàê³.

          -
        + diff --git a/lang/be/help/assignment/resubmit.html b/lang/be/help/assignment/resubmit.html index dd05ab0bb17..8f577bd471f 100644 --- a/lang/be/help/assignment/resubmit.html +++ b/lang/be/help/assignment/resubmit.html @@ -1,5 +1,5 @@ -

        Âûïðà¢ëåííå àäêàçà¢

        +

        Âûïðà¢ëåííå àäêàçà¢

        -

        Ïà çìà¢÷àíí³, ñòóäýíòû íå ìîãóöü âûïðà¢ëÿöü àäêàçû, ïàñëÿ òàãî, ÿê ÿíû àòðûìàë³ àäçíàêó íàñòà¢í³êà.

        +

        Ïà çìà¢÷àíí³, ñòóäýíòû íå ìîãóöü âûïðà¢ëÿöü àäêàçû, ïàñëÿ òàãî, ÿê ÿíû àòðûìàë³ àäçíàêó íàñòà¢í³êà.

        -

        Êàë³ Âû óêëþ÷ûöå ãýòóþ îïöûþ ñòóäýíòàì áóäçå äàçâîëåíà âûïðà¢ëÿöü àäêàçû ïàñëÿ òàãî, ÿê ÿíû àòðûìàþöü àäçíàê³.

        +

        Êàë³ Âû óêëþ÷ûöå ãýòóþ îïöûþ ñòóäýíòàì áóäçå äàçâîëåíà âûïðà¢ëÿöü àäêàçû ïàñëÿ òàãî, ÿê ÿíû àòðûìàþöü àäçíàê³.

        diff --git a/lang/be/help/attendance/index.html b/lang/be/help/attendance/index.html index 24d7579081b..3ab8a1d4e03 100644 --- a/lang/be/help/attendance/index.html +++ b/lang/be/help/attendance/index.html @@ -1,10 +1,9 @@

        Ïðûñóòíàñöü

        \ No newline at end of file +
      • À¢òàìàòû÷íàÿ ðýã³ñòðàöûÿ ïðûñóòíàñö³ +
      • Äí³ òûäíÿ, ó ÿê³ÿ ñïðà¢äæâàåööà ïðûñóòíàñöü +
      • Óñòàëþéöå ñåêöûþ äëÿ äàñëåäàâàííÿ íàâåäâàííÿ ¢ ãýòû äçåíü
      • Àöýíüâàííå âåäàìàñö³ ïðûñóòíàñö³
      • Êîëüêàñöü ãàäç³íࢠíà àãóëüíûì ñïàòêàíí³ êëàñà +
      • Ìàêñ³ìàëüíàÿ àäçíàêà çà íàâåäâàííå + + diff --git a/lang/be/help/attendance/mods.html b/lang/be/help/attendance/mods.html index 9c2da0837cf..c4b970adbd5 100644 --- a/lang/be/help/attendance/mods.html +++ b/lang/be/help/attendance/mods.html @@ -1,5 +1,5 @@ -

         Ïðûñóòíàñöü

        -
        -

        Ãýòû ìîäóëü ðîá³öü ìàã÷ûìûì ô³êñàâàííå êîæíàãà ñòóäýíòà íà ñàéöå àáî àíëàéí-êëàñå íà çàíÿòêàõ. -

        -
        +

         Attendance

        +
          +

          Ãýòû ìîäóëü ðîá³öü ìàã÷ûìûì ô³êñàâàííå êîæíàãà ç ïðûñóòíûõ íà çàíÿòêàõ ñòóäýíòà¢.[11~ +

          +
        diff --git a/lang/be/help/chat/chatting.html b/lang/be/help/chat/chatting.html index 92226892a06..8836358f423 100644 --- a/lang/be/help/chat/chatting.html +++ b/lang/be/help/chat/chatting.html @@ -4,18 +4,18 @@
        Ýìàòûêîíû
        -
        Ëþáûÿ ýìàòûêîíû, ÿê³ÿ ìîãóöü âûêàðûñòî¢âàööà ó ³íøûõ ïðàãðàìàõ ïà-çà ñ³ñòýìàé Moodle, ìîãóöü áûöü âûêàðûñòàíûÿ òàêñàìà ³ òóò ³ áóäóöü àäëþñòðàâàíûÿ ïðàâ³ëüíà. Íàïðûêëàä, :-) =
        +
        Ëþáûÿ ýìàòûêîíû, ÿê³ÿ ìîãóöü âûêàðûñòî¢âàööà ó ³íøûõ ïðàãðàìàõ ïà-çà ñ³ñòýìàé Moodle, ìîãóöü áûöü âûêàðûñòàíûÿ òàêñàìà ³ òóò ³ áóäóöü àäëþñòðàâàíûÿ ïðàâ³ëüíà. Íàïðûêëàä, :-) =
        ˳íê³
        Àäðàñû ¢ ²íòýðíýöå áóäóöü çàìÿíÿööà íà ë³íê³ à¢òàìàòû÷íà.
        Ñòàí äóøû
        Ìîæàø ðàñïà÷àöü ðàäîê ç "/me" àáî ":", êàá ïàêàçàöü ñâîé ñòàí äóøû. Íà ïðûêëàä, êàë³ òâภ³ìÿ ßí ³ çàï³øàø - ":ñìÿþñÿ!" àáî "/me ñìÿþñÿ!", óñå ¢áà÷àöü "ßí ñìÿåööà!"
        + ":ñìÿþñÿ!" lub "/me ñìÿþñÿ!", óñå ¢áà÷àöü "ßí ñìÿåööà!"
        Äç³íüêàííå
        -
        Ìîæàø äàñëàöü ñ³ãíàë ³íøûì ëþäçÿì íàö³ñêàþ÷û íà "äçûíüê" ïîáà÷ ç ³õ ³ìåì. Êàðûñíàé ïðûëàäàé, êàá âûñëàöü äçûíêàííå ¢ñ³ì ëþäçÿì íà ÷àöå àäíà÷àñîâà ¸ñöü - "äçûíüê óñ³ì".
        +
        Ìîæàø äàñëàöü "äç³íüê" ³íøûì ëþäçÿì íàö³ñêàþ÷û íà "bzzz" ïîáà÷ ç ³õ ³ìåì. Êàðûñíàé ïðûëàäàé, êàá âûñëàöü äçûíêàííå ¢ñ³ì ëþäçÿì íà ÷àöå àäíà÷àñîâà ¸ñöü + "beep all".
        HTML
        Êàë³ êðûõó âåäàåø êîä HTML, ìîæàø âûêàðûñòî¢âàöü ÿãî ¢ ñâà³ì òýêñöå, êàá óâîäç³öü ìàëþíê³, ïðàéãðàâàöü ãóê³ àáî àäïàâåäíà ôàðìàòàâàöü òýêñò.
        diff --git a/lang/be/help/chat/index.html b/lang/be/help/chat/index.html index 25d742e7ab2..5a87da79f9b 100644 --- a/lang/be/help/chat/index.html +++ b/lang/be/help/chat/index.html @@ -1,4 +1,4 @@

        Ìîäóëü ×àò

        diff --git a/lang/be/help/chat/mods.html b/lang/be/help/chat/mods.html index 4b943424aca..3c00f25c8fb 100644 --- a/lang/be/help/chat/mods.html +++ b/lang/be/help/chat/mods.html @@ -1,5 +1,6 @@ -

         ×àòû

        -
        -

        Ìîäóëü ×àò äàçâàëÿå ¢äçåëüí³êàì ïðàâÿäçåííå äûñêóñ³³ ¢ ðýàëüíûì ÷àñå íåïàñðýäíà ¢ ñåòöû. Ãýòà íàéëåïøàÿ ïðûëàäà äëÿ çíàõîäæàííÿ ¢çàåìàïàðàçóìåííÿ, à òàêñàìà àáìåðêàâàííÿ òýìû. Ñïîñàá óæûâàííÿ ÷àò-ñåñ³ÿ¢ ïðûíöûïîâà àäðîçí³âàåööà àä äûñêóñ³³ íà ôîðóìå. - Ìîäóëü ×àò óòðûìë³âàå ìíîñòâà îïöûÿ¢, ÿê³ÿ äàçâàëÿþöü ê³ðàâàííå ³ ïðàãëÿäàííå ÷àò-äûñêóñ³³.

        -
        \ No newline at end of file +

         ×àòû

        +
          +

          Ìîäóëü ×àò äàçâàëÿå ¢äçåëüí³êàì ïðàâÿäçåííå äûñêóñ³³ ¢ ðýàëüíûì ÷àñå íåïàñðýäíà ¢ ñåòöû. Ãýòà íàéëåïøàÿ ïðûëàäà äëÿ çíàõîäæàííÿ ¢çàåìàïàðàçóìåííÿ, à òàêñàìà àáìåðêàâàííÿ òýìû. Ñïîñàá óæûâàííÿ ÷àò-ñåñ³ÿ¢ ïðûíöûïîâà àäðîçí³âàåööà àä äûñêóñ³³ íà ôîðóìå. + Ìîäóëü ×àò óòðûìë³âàå ìíîñòâà îïöûÿ¢, ÿê³ÿ äàçâàëÿþöü ê³ðàâàííå ³ ïðàãëÿäàííå ÷àò-äûñêóñ³³. + przegl±danie dyskusji czat.

          +
        \ No newline at end of file diff --git a/lang/be/help/choice/index.html b/lang/be/help/choice/index.html index e8324fb36c6..0801acaec77 100644 --- a/lang/be/help/choice/index.html +++ b/lang/be/help/choice/index.html @@ -1,4 +1,4 @@

        Ãàëàñàâàíí³

        diff --git a/lang/be/help/choice/mods.html b/lang/be/help/choice/mods.html index f60a41282b6..ee0d3ee779f 100644 --- a/lang/be/help/choice/mods.html +++ b/lang/be/help/choice/mods.html @@ -1,3 +1,3 @@ -

         Ãàëàñàâàíí³

        -
        -

        Äçåÿííå çâÿçàíàå ç ïðàâÿäçåííåì ãàëàñàâàííÿ âåëüì³ ïðîñòàå - âÿäî¢öà çàäàå ïûòàííå ³ ïðàïàíóå øýðàã ìàã÷ûìûõ àäêàçࢠíà âûáàð. Ãýòû ìîäóëü ìîæà áûöü ïðûäàòíû äëÿ ïðàâÿäçåííÿ õóòêàãà àíêåòàâàííÿ, ÿêîå ìàå íà ìýöå çààõâîö³öü äà ïðûíÿööÿ ðàøýííÿ ïà äàäçåíàé òýìå, äàöü ìàã÷ûìàñöü ãðóïå ïðàãàëàñàâàöü íà òýìó íàê³ðóíêó êóðñà, àáî àòðûìàöü çãîäó íà ïðàâÿäçåííå äàñëåäàâàííÿ¢.

        +

         Ãàëàñàâàííå

        +
          +

          Äçåÿííå çâÿçàíàå ç ïðàâÿäçåííåì ãàëàñàâàííÿ âåëüì³ ïðîñòàå - âÿäî¢öà çàäàå ïûòàííå ³ ïðàïàíóå øýðàã ìàã÷ûìûõ àäêàçࢠíà âûáàð. Ãýòû ìîäóëü ìîæà áûöü ïðûäàòíû äëÿ ïðàâÿäçåííÿ õóòêàãà àíêåòàâàííÿ, ÿêîå ìàå íà ìýöå çààõâîö³öü äà ïðûíÿööÿ ðàøýííÿ ïà äàäçåíàé òýìå, äàöü ìàã÷ûìàñöü ãðóïå ïðàãàëàñàâàöü íà òýìó íàê³ðóíêó êóðñà, àáî àòðûìàöü çãîäó íà ïðàâÿäçåííå äàñëåäàâàííÿ¢.

        diff --git a/lang/be/help/choice/options.html b/lang/be/help/choice/options.html index 8a25dae09a5..4bd58c45ad8 100644 --- a/lang/be/help/choice/options.html +++ b/lang/be/help/choice/options.html @@ -1,5 +1,5 @@ -

        Âàðûÿíòû àäêàçó

        +

        Âàðûÿíòû àäêàçó

        -

        Òóò Âû ìîæàöå íàï³ñàöü âàðûÿíòû, ç ÿê³õ áóäçå âûá³ðàööà àäêàç ñòóäýíòàì.

        +

        Òóò Âû ìîæàöå íàï³ñàöü âàðûÿíòû, ç ÿê³õ áóäçå âûá³ðàööà àäêàç ñòóäýíòàì. -

        Âû ìîæàöå çàïî¢í³öü ëþáóþ êîëüêàñöü âàðûÿíòࢠ(äàïóø÷àëüíà ïàê³äàöü ïàë³ ïóñòûì³).

        +

        Âû ìîæàöå çàïî¢í³öü ëþáóþ êîëüêàñöü âàðûÿíòࢠ(äàïóø÷àëüíà ïàê³äàöü ïàë³ ïóñòûì³). diff --git a/lang/be/help/cookies.html b/lang/be/help/cookies.html index 79ea661d4d2..69e14285a1b 100644 --- a/lang/be/help/cookies.html +++ b/lang/be/help/cookies.html @@ -3,6 +3,6 @@

        Äâà òûïû cookies âûêàðûñòî¢âàþööà íà äàäçåíûì ñàéöå (cookie - íåâÿë³ê³ ôðàãìåíò äàäçåíûõ àá ïåðàäã³ñòîðû³ çâàðîòࢠäàäçåíàãà êàðûñòàëüí³êà äà äàäçåíàãà WWW-ñýðâåðà, à¢òàìàòû÷íà ñòâàðàåìû ñýðâåðàì íà ìàøûíå êàðûñòàëüí³êà).

        Àáàâÿçêîâûì ç'ÿ¢ëÿåööà ïåðøû òûï - session cookie, ÿê³ çâû÷àéíà íàçûâàþöü MoodleSession. Âû ïàâ³ííû ¢ñòàëÿâàöü ïàäòðûìêó ãýòûõ cookie - ó Âàøûì áðà¢çåðû (ïðàãðàìå ïðàãëÿäó) äëÿ çàáåñïÿ÷ýííÿ áåñïåðàïûííàé ïåðàäà÷û Âàøàãà Ëàã³íó àä ñòàðîíê³ äà ñòàðîíê³. Êàë³ Âû âûõîäç³öå ç ñ³ñòýìû (íàö³ñêàåöå "ðýã³ñòðàöûÿ"), àáî çà÷ûíÿåöå áðà¢çåð, òî ãýòûÿ cookie çí³ø÷àþööà (íà Âàøûì áðà¢çåðû ³ íà ñýðâåðû).

        + ó Âàøûì áðà¢çåðû (ïðàãðàìå ïðàãëÿäó) äëÿ çàáåñïÿ÷ýííÿ áåñïåðàïûííàé ïåðàäà÷û Âàøàãà Ëàã³íó (login) àä ñòàðîíê³ äà ñòàðîíê³. Êàë³ Âû âûõîäç³öå ç ñ³ñòýìû (íàö³ñêàåöå "ðýã³ñòðàöûÿ"), àáî çà÷ûíÿåöå áðà¢çåð, òî ãýòûÿ cookie çí³ø÷àþööà (íà Âàøûì áðà¢çåðû ³ íà ñýðâåðû).

        -

        ²íøû òûï cookie íåàáõîäíû äëÿ çðó÷íàñö³, çâû÷àéíà ¸í ìàå ³ìÿ MOODLEID. ßíî çàïàì³íàå Âàøàå ³ìÿ (username) ó ìåæàõ browser. Ãýòà íåàáõîäíà äëÿ òàãî, êàá êàë³ Âû ³çíî¢ âÿðíóë³ñÿ äà äàäçåíàãà ðàçäçåëó ñàéòà, òî ïîëå ç Âàøûì ³ìåì áûëî á óæî çàïî¢íåíà äëÿ Âàñ. Ç ïóíêòà ïîãëÿäó áÿñïåê³ âàðòà àäìîâ³ööà àä òàêîãà cookie - ³ òàäû Âàì äàâÿäçåööà êîæíû ðàç ïðû çâàðîöå àáî ïåðàðýã³ñòðàöû³ ¢âîäç³öü ñâภ³ìÿ (êàðûñòàëüí³ê).

        +

        ²íøû òûï cookie íåàáõîäíû äëÿ çðó÷íàñö³, çâû÷àéíà ¸í ìàå ³ìÿ MOODLEID. ßíî çàïàì³íàå Âàøàå ³ìÿ (username) ó ìåæàõ browser. Ãýòà íåàáõîäíà äëÿ òàãî, êàá êàë³ Âû ³çíî¢ âÿðíóë³ñÿ äà äàäçåíàãà ðàçäçåëó ñàéòà, òî ïîëå ç Âàøûì ³ìåì áûëî á óæî çàïî¢íåíà äëÿ Âàñ. Ç ïóíêòà ïîãëÿäó áÿñïåê³ âàðòà àäìîâ³ööà àä òàêîãà cookie - ³ òàäû Âàì äàâÿäçåööà êîæíû ðàç ïðû çâàðîöå àáî ïåðàðýã³ñòðàöû³ ¢âîäç³öü ñâภ³ìÿ (username).

        diff --git a/lang/be/help/courseavailability.html b/lang/be/help/courseavailability.html index cadd0f9358e..efcc399cb03 100644 --- a/lang/be/help/courseavailability.html +++ b/lang/be/help/courseavailability.html @@ -1,6 +1,6 @@

        Äàñòóïíàñöü êóðñà

        -

        Ãýòàÿ íàñòðîéêà äàçâàëÿå Âàì öàëêàì "ñõàâàöü" êóðñ.

        +

        Ãýòàÿ íàñòðîéêà äàçâàëÿå Âàì öàëêàì "ñõàâàöü" êóðñ.

        Êóðñ íå áóäçå ç'ÿ¢ëÿööà í³ ¢ ÿê³õ êàòàëîãàõ ³ ñï³ñàõ, àêðàìÿ òûõ, ÿê³ÿ äàñòóïíûÿ âûêëàä÷ûêàì äàäçåíàãà êóðñó ³ àäì³í³ñòðàòàðàì.

        Íàâàò êàë³ ñòóäýíòû áóäóöü ñïðàáàâàöü àòðûìàöü äîñòóï ïà ïðàìîìó URL , òî ³ì óñ¸ ðî¢íà áóäçå àäìî¢ëåíà ¢ äîñòóïå.

        \ No newline at end of file diff --git a/lang/be/help/coursecategory.html b/lang/be/help/coursecategory.html index 02514fadcd7..5d217647192 100644 --- a/lang/be/help/coursecategory.html +++ b/lang/be/help/coursecategory.html @@ -1,8 +1,8 @@ -

        Êàòýãîðû³ êóðñà¢

        +

        Êàòýãîðû³ êóðñà¢

        -

        Àäì³í³ñòðàòàð ñàéòà ìîæà ïðûçíà÷ûöü êàòýãîðû³ äëÿ ðàçäçÿëåííÿ êóðñà¢.

        +

        Àäì³í³ñòðàòàð ñàéòà ìîæà ïðûçíà÷ûöü êàòýãîðû³ äëÿ ðàçäçÿëåííÿ êóðñà¢. -

        Íàïðûêëàä, "Cisco", "Microsoft", "Linux" ³ ä.ï.

        +

        Íàïðûêëàä, "Cisco", "Microsoft", "Linux" ³ ä.ï. -

        Âûáåðûöå êàòýãîðûþ, ÿêàÿ íàéáîëüø áë³çêà ïàäûõîäç³öü äëÿ Âàøàãà êóðñà. Ãýòà ïà¢ïëûâàå íà òîå, äçå áóäçå àäëþñòðî¢âàööà êóðñ (Âàøûì ñòóäýíòàì áóäçå ïðàñöåé ÿãî çíàéñö³).

        +

        Âûáåðûöå êàòýãîðûþ, ÿêàÿ íàéáîëüø áë³çêà ïàäûõîäç³öü äëÿ Âàøàãà êóðñà. Ãýòà ïà¢ïëûâàå íà òîå, äçå áóäçå àäëþñòðî¢âàööà êóðñ (Âàøûì ñòóäýíòàì áóäçå ïðàñöåé ÿãî çíàéñö³). diff --git a/lang/be/help/courseformats.html b/lang/be/help/courseformats.html index 1e95765c485..4ea669eec9b 100644 --- a/lang/be/help/courseformats.html +++ b/lang/be/help/courseformats.html @@ -1,16 +1,16 @@ -

        Ôàðìàòû êóðñà¢

        +

        Ôàðìàòû êóðñà¢

        -

        Ôàðìàò-êàëÿíäàð

        -
          +

          Ôàðìàò-êàëÿíäàð

          +
            Àðãàí³çóåööà ðàñêëàä (òûäçåíü çà òûäíåì) ç äàêëàäíûì òýðì³íàì ïà÷àòêó ³ çàêàí÷ýííÿ êóðñà. -
          +
        -

        Ôàðìàò-ñòðóêòóðà

        -
          +

          Ôàðìàò-ñòðóêòóðà

          +
            Çíåøíå íàãàäâàå Ôàðìàò-êàëÿíäàð çà âûêëþ÷ýííåì òàãî, øòî íå ìàå àáìåæàâàííÿ¢ ïà ÷àñå ³ íå ïðûâÿçàíû äà êàëåíäàðó. -
          +
        -

        Ôàðìàò-ôîðóì

        -
          +

          Ôàðìàò-ôîðóì

          +
            Êóðñ àðãàí³çóåööà íà àñíîâå àäíàãî âÿë³êàãà ôîðóìà. Ìîæà âûêàðûñòî¢âàööà íÿ òîëüê³ ÿê êóðñ, àëå ³ ÿê àäíà âÿë³êàÿ äîøêà ïàâåäàìëåííÿ¢. -
          +
        diff --git a/lang/be/help/coursefullname.html b/lang/be/help/coursefullname.html index 7fd914fab47..7a982b468f2 100644 --- a/lang/be/help/coursefullname.html +++ b/lang/be/help/coursefullname.html @@ -1,5 +1,5 @@ -

        Ïî¢íàÿ íàçâà êóðñà

        +

        Ïî¢íàÿ íàçâà êóðñà

        -

        Íàçâà, ÿêàÿ áóäçå àäëþñòðî¢âàööà ¢ âåðõíÿé ÷àñòöû ýêðàíó.

        +

        Íàçâà, ÿêàÿ áóäçå àäëþñòðî¢âàööà ¢ âåðõíÿé ÷àñòöû ýêðàíó.

        diff --git a/lang/be/help/coursegrades.html b/lang/be/help/coursegrades.html index c18130b7989..120cf55ea97 100644 --- a/lang/be/help/coursegrades.html +++ b/lang/be/help/coursegrades.html @@ -1,6 +1,6 @@

        Àäçíàê³

        -

        Øìàòë³ê³ÿ â³äû äçåéíàñö³ ¢ êóðñå äàçâàëÿþöü óñòà븢âàöü ³õ àöýíüâàííå.

        +

        Øìàòë³ê³ÿ â³äû äçåéíàñö³ ¢ êóðñå äàçâàëÿþöü óñòà븢âàöü ³õ àöýíüâàííå.

        Ïà çìà¢÷àíí³ âûí³ê³ ¢ñ³õ àöýíàê ïà ¢ñ³õ â³äàõ äçåéíàñö³ êóðñà äàñòóïíûÿ ïà ñïàñûëöû "Àäçíàê³", ÿêàÿ çíàõîäç³ööà íà ãàëî¢íàé ñòàðîíöû êóðñó.

        Êàë³ âûêëàä÷ûê íå æàäàå ñêàðûñòàöü àöýíüâàííå ¢ êóðñå, àáî æàäàå ñõàâàöü àäçíàê³ àä ñòóäýíòà¢, òî ¸í ìîæà ãýòà çðàá³öü çàáàðàí³¢øû ïàêàçâàöü âûí³ê³ àöýíüâàííÿ, ñêàðûñòà¢øû ñïàñûëêó "Óñòà븢ê³" íà ãàëî¢íàé ñòàðîíöû êóðñó, à çàòûì âûëó÷û¢øû "íå" ó ïóíêöå "Ïàêàçâàöü àäçíàê³". Ãýòà íå àçíà÷àå, øòî ëþáûÿ ³íäûâ³äóàëüíûÿ äçåÿíí³ ñòóäýíòࢠïåðàñòàíóöü àöýíüâàööà. Ïðîñòà âûí³ê³ òàêîãà àöýíüâàííÿ íÿ áóäóöü ïàêàçàíûÿ ñòóäýíòàì.

        diff --git a/lang/be/help/coursehiddensections.html b/lang/be/help/coursehiddensections.html index 0065b17b651..a1d173de4d2 100644 --- a/lang/be/help/coursehiddensections.html +++ b/lang/be/help/coursehiddensections.html @@ -1,6 +1,6 @@

        Ñõàâàíûÿ ñåêöû³ êóðñà

        -

        Ãýòàÿ îïöûÿ äàçâàëÿå âûðàøàöü ÿê³ì ÷ûíàì ñõàâàíûÿ ðàçäçåëû Âàøàãà êóðñó ìóñÿöü àäëþñòðî¢âàööà äëÿ +

        Ãýòàÿ îïöûÿ äàçâàëÿå âûðàøàöü ÿê³ì ÷ûíàì ñõàâàíûÿ ðàçäçåëû Âàøàãà êóðñó ìóñÿöü àäëþñòðî¢âàööà äëÿ ñòóäýíòà¢.

        Ïà çìà¢÷àíí³ ïàêàçâàåööà òîëüê³ ìàëåíüêàÿ ÷àñòêà (ó çãîðíóòàé ôîðìå, çâû÷àéíà øýðàãà êîëåðó) ç ìýòàé ïàçíà÷ýííÿ diff --git a/lang/be/help/courseidnumber.html b/lang/be/help/courseidnumber.html deleted file mode 100644 index be8c6196f51..00000000000 --- a/lang/be/help/courseidnumber.html +++ /dev/null @@ -1,4 +0,0 @@ -

        ID íóìàð êóðñó

        - -

        Âàðòà ¢æûâàöü òîëüê³ ¢ âûïàäêàõ çíåøíÿãà êàíòðàëÿâàííÿ çàï³ñó. Ó Moodle í³äçå íå ¢æûâàåööà. Êàë³ ìàåø íåéê³ àô³öûéíû êîä äëÿ êóðñà, âûêàðûñòàé ÿãî òóò.

        - diff --git a/lang/be/help/coursenewsitems.html b/lang/be/help/coursenewsitems.html index 5fb7eeefb44..488df05d57c 100644 --- a/lang/be/help/coursenewsitems.html +++ b/lang/be/help/coursenewsitems.html @@ -1,8 +1,8 @@ -

        Íàâ³íû

        +

        Íàâ³íû

        -

        Àäìûñëîâû ôîðóì ç íàçâàé "Íàâ³íû" ç'ÿâ³ööà ¢ êóðñå. Ãýòà äîáðàå ìåñöà äëÿ íàòàòàê, ÿê³ÿ ìóñÿöü óáà÷ûöü óñå ñòóäýíòû. (Ïà çìà¢÷àíí³, óñå ñòóäýíòû ïàäï³ñàíûÿ íà ãýòû ôîðóì ³ áóäóöü àòðûìë³âàöü Âàøûÿ ïàâåäàìëåíí³ ïðàç e-mail).

        +

        Àäìûñëîâû ôîðóì ç íàçâàé "Íàâ³íû" ç'ÿâ³ööà ¢ êóðñå. Ãýòà äîáðàå ìåñöà äëÿ íàòàòàê, ÿê³ÿ ìóñÿöü óáà÷ûöü óñå ñòóäýíòû. (Ïà çìà¢÷àíí³, óñå ñòóäýíòû ïàäï³ñàíûÿ íà ãýòû ôîðóì ³ áóäóöü àòðûìë³âàöü Âàøûÿ ïàâåäàìëåíí³ ïðàç e-mail) -

        Ãýòû ïàðàìåòð ïàêàçâàå êîëüê³ íàâ³íࢠìîæà ç'ÿ¢ëÿööà íà ãàëî¢íàé ñòàðîíöû Âàøàãà êóðñó.

        +

        Ãýòû ïàðàìåòð ïàêàçâàå êîëüê³ íàâ³íࢠìîæà ç'ÿ¢ëÿööà íà ãàëî¢íàé ñòàðîíöû Âàøàãà êóðñó. -

        Êàë³ Âû ïàñòàâ³öå çíà÷ýííå "0 íàâ³íà¢" òàäû ðàìêà ç íàâ³íàì³ íå ç'ÿâ³ööà.

        +

        Êàë³ Âû ïàñòàâ³öå çíà÷ýííå "0 íàâ³íà¢" òàäû ðàìêà ç íàâ³íàì³ íå ç'ÿâ³ööà. diff --git a/lang/be/help/coursenumsections.html b/lang/be/help/coursenumsections.html index a5409b46453..af57ce72dcb 100644 --- a/lang/be/help/coursenumsections.html +++ b/lang/be/help/coursenumsections.html @@ -1,7 +1,7 @@ -

        Êîëüêàñöü òûäíÿ¢/òýìà¢

        +

        Êîëüêàñöü òûäíÿ¢/òýìà¢

        -

        Êàë³ òûï êóðñà - "Ôàðìàò-ñòðóêòóðà" - ïàêàç÷ûê âûçíà÷àå êîëüêàñöü òûäíÿ¢, íà ïðàöÿãó ÿê³õ ïðàöÿãâàåööà êóðñ.

        +

        Êàë³ òûï êóðñà - "Ôàðìàò-ñòðóêòóðà" - ïàêàç÷ûê âûçíà÷àå êîëüêàñöü òûäíÿ¢, íà ïðàöÿãó ÿê³õ ïðàöÿãâàåööà êóðñ. -

        Êàë³ òûï êóðñó - "Ôàðìàò-ñòðóêòóðà" - ïàêàç÷ûê âûçíà÷àå êîëüêàñöü ðàçäçåëà¢.

        +

        Êàë³ òûï êóðñó - "Ôàðìàò-ñòðóêòóðà" - ïàêàç÷ûê âûçíà÷àå êîëüêàñöü ðàçäçåëà¢. diff --git a/lang/be/help/courserecent.html b/lang/be/help/courserecent.html index 7bc4cee2f14..1b473f59136 100644 --- a/lang/be/help/courserecent.html +++ b/lang/be/help/courserecent.html @@ -1,10 +1,10 @@ -

        Àïîøí³ÿ íàâ³íû

        +

        Àïîøí³ÿ íàâ³íû

        -

        "Àïîøí³ÿ íàâ³íû" ìîãóöü à¢òàìàòû÷íà àáíà¢ëÿööà íà ïåðøàé ñòàðîíöû êóðñó.

        +

        "Àïîøí³ÿ íàâ³íû" ìîãóöü à¢òàìàòû÷íà àáíà¢ëÿööà íà ïåðøàé ñòàðîíöû êóðñó. -

        ßíû ïàêàçâàþöü, øòî àäáûëîñÿ ¢ êóðñå, ç ÷àñó àïîøíÿãà íàâåäâàííÿ, óêëþ÷àþ÷û íîâûÿ ïàâåäàìëåíí³, íàòàòê³ àá ïàâåë³÷ýíí³ êîëüêàñö³ êàðûñòàëüí³êࢠ³ ä.ï.

        +

        ßíû ïàêàçâàþöü, øòî àäáûëîñÿ ¢ êóðñå, ç ÷àñó àïîøíÿãà íàâåäâàííÿ, óêëþ÷àþ÷û íîâûÿ ïàâåäàìëåíí³, íàòàòê³ àá ïàâåë³÷ýíí³ êîëüêàñö³ êàðûñòàëüí³êࢠ³ ä.ï. -

        Âåäàííå òàãî, øòî ðîáÿöü ³íøûÿ ¢äçåëüí³ê³ êóðñó, äàïàìîæà ñòâàðûöü àòìàñôåðó êàíêóðýíöû³ ³ ñóïðàöî¢í³öòâà. Ìû ðà³ì Âàì ïàê³íóöü ãýòóþ îïöûþ ¢êëþ÷àíàé.

        +

        Âåäàííå òàãî, øòî ðîáÿöü ³íøûÿ ¢äçåëüí³ê³ êóðñó, äàïàìîæà ñòâàðûöü àòìàñôåðó êàíêóðýíöû³ ³ ñóïðàöî¢í³öòâà. Ìû ðà³ì Âàì ïàê³íóöü ãýòóþ îïöûþ ¢êëþ÷àíàé. -

        Âàì, ìàã÷ûìà, çàõî÷àööà àäêëþ÷ûöü ãýòóþ îïöûþ äëÿ êóðñà, ÿê³ ïðàäóãëåäæâàå âÿë³êàÿ êîëüêàñöü ñëóõà÷î¢.

        +

        Âàì, ìàã÷ûìà, çàõî÷àööà àäêëþ÷ûöü ãýòóþ îïöûþ äëÿ êóðñà, ÿê³ ïðàäóãëåäæâàå âÿë³êàÿ êîëüêàñöü ñëóõà÷î¢. diff --git a/lang/be/help/coursereports.html b/lang/be/help/coursereports.html index 43d98172fd7..249432b3686 100644 --- a/lang/be/help/coursereports.html +++ b/lang/be/help/coursereports.html @@ -1,7 +1,8 @@

        Ñïðàâàçäà÷û ïà àêòû¢íàñö³

        -

        Ñïðàâàçäà÷û ïà àêòû¢íàñö³ äàñòóïíûÿ êîæíàìó õòî áÿðý ¢äçåë ó êóðñå. +

        Ñïðàâàçäà÷û ïà àêòû¢íàñö³ äàñòóïíûÿ êîæíàìó õòî áÿðý ¢äçåë ó êóðñå. Ãýòûÿ ñïðàâàçäà÷û ¢òðûìë³âàþöü âåäàìàñö³ äîñòóïó êàðûñòàëüí³êà, à òàêñàìà ³íôàðìàöûþ, ÿêàÿ äàòû÷ûööà àêòû¢íàñö³ êàðûñòàëüí³êà.

        Íàñòà¢í³ê çà¢ñ¸äû ìàå äîñòóï äà òûõ ñïðàâàçäà÷à¢, íàö³ñêàþ÷û êíîïêó íà ñòàðîíöû äçå çìåø÷àíû ïðîô³ëü äàäçåíàãà ñòóäýíòà.

        -

        Ó ñâàþ ÷àðãó äîñòóï ñòóäýíòࢠäà ãýòûõ ñïðàâàçäà÷ࢠêàíòðàëþåööà íàñòà¢í³êàì. Ó âûïàäêó íåêàòîðûõ êóðñࢠìàã÷ûìàñöü òàêîãà äîñòóïó ìîæà àêàçàöü âåëüì³ âÿë³êóþ ïàñëóãó, òàìó øòî ãýòà ïàêàæà ñòóäýíòó ÿãîíûÿ âûñ³ëê³ ³ ¢í¸ñàê ó îíëàéí ïðàöû. Àäíàê ó âûïàäêó íåêàòîðûõ êóðñࢠäîñòóï ñòóäýíòàì ìîæà áûöü àáìåæàâàíû. Áîëüø òàãî, äîñòóï ñòóäýíòࢠäà ãýòûõ ñïðàâàçäà÷ࢠâûêë³÷à äàäàòêîâàå àáöÿæàðâàííå ñýðâåðó, øòî ¢ âûïàäêó øìàòë³ê³õ êëàñࢠö³ äî¢ã³õ êóðñࢠìîæà ñõ³ë³öü àäì³í³ñòðàòàðà äà äýàêòûâàöû³ äàäçåíàé ôóíêöû³.

        +

        Ó ñâàþ ÷àðãó äîñòóï ñòóäýíòࢠäà ãýòûõ ñïðàâàçäà÷ࢠêàíòðàëþåööà íàñòà¢í³êàì. Ó âûïàäêó íåêàòîðûõ êóðñࢠìàã÷ûìàñöü òàêîãà äîñòóïó ìîæà àêàçàöü âåëüì³ âÿë³êóþ ïàñëóãó, òàìó øòî ãýòà ïàêàæà ñòóäýíòó ÿãîíûÿ âûñ³ëê³ ³ ¢í¸ñàê ó îíëàéí ïðàöû. +Àäíàê ó âûïàäêó íåêàòîðûõ êóðñࢠäîñòóï ñòóäýíòàì ìîæà áûöü àáìåæàâàíû. Áîëüø òàãî, äîñòóï ñòóäýíòࢠäà ãýòûõ ñïðàâàçäà÷ࢠâûêë³÷à äàäàòêîâàå àáöÿæàðâàííå ñýðâåðó, øòî ¢ âûïàäêó øìàòë³ê³õ êëàñࢠö³ äî¢ã³õ êóðñࢠìîæà ñõ³ë³öü àäì³í³ñòðàòàðà äà äýàêòûâàöû³ äàäçåíàé ôóíêöû³.

        diff --git a/lang/be/help/courseshortname.html b/lang/be/help/courseshortname.html index c954937f822..db26d4c568a 100644 --- a/lang/be/help/courseshortname.html +++ b/lang/be/help/courseshortname.html @@ -1,5 +1,5 @@ -

        Ñêàðî÷àíàÿ íàçâà êóðñà

        +

        Ñêàðî÷àíàÿ íàçâà êóðñà

        -

        Íàï³øûöå ñêàðî÷àíóþ íàçâó êóðñà, íàïðûêëàä, JVB01 àáî CSP05. Ãýòà íàçâà áóäçå âûêàðûñòî¢âàööà ¢ íåêàëüê³õ âûïàäêàõ, äëÿ ïàçíà÷ýííÿ êóðñà (çàãàëî¢ê³ ¢ e-mail).

        +

        Íàï³øûöå ñêàðî÷àíóþ íàçâó êóðñà, íàïðûêëàä, JVB01 àáî CSP05. Ãýòà íàçâà áóäçå âûêàðûñòî¢âàööà ¢ íåêàëüê³õ âûïàäêàõ, äëÿ ïàçíà÷ýííÿ êóðñà (çàãàëî¢ê³ ¢ e-mail).

        diff --git a/lang/be/help/coursestartdate.html b/lang/be/help/coursestartdate.html index 0ab6144216d..4f293951684 100644 --- a/lang/be/help/coursestartdate.html +++ b/lang/be/help/coursestartdate.html @@ -1,10 +1,10 @@ -

        Äàòà ïà÷àòêó êóðñà

        +

        Äàòà ïà÷àòêó êóðñà

        -

        Ó ãýòûì ïîë³ Âû âûçíà÷àåöå ÷àñ ïà÷àòêó êóðñà (ó Âàøàé ãàäç³ííàé çîíå).

        +

        Ó ãýòûì ïîë³ Âû âûçíà÷àåöå ÷àñ ïà÷àòêó êóðñà (ó Âàøàé ÷àñàâàé çîíå). -

        Êàë³ Âû âûêàðûñòàåöå "Ôàðìàò-êàëÿíäàð", òî áëîê ïåðøàãà òûäíÿ áóäçå áà÷íû ¢ äçåíü, ÿê³ ¢ñòàíî¢ëåíû òóò.

        +

        Êàë³ Âû âûêàðûñòàåöå "Ôàðìàò-êàëÿíäàð", òî áëîê ïåðøàãà òûäíÿ áóäçå áà÷íû ¢ äçåíü, ÿê³ ¢ñòàíî¢ëåíû òóò. -

        Íà ³íøûÿ ôàðìàòû êóðñࢠïîëå íå ïà¢ïëûâàå, çà âûêëþ÷ýííåì ñ³ñòýìíûõ ôàéëࢠðýã³ñòðàöû³, ÿê³ÿ âûêàðûñòî¢âàþöü ãýòóþ äàòó ÿê íàéáîëüø ðàííÿþ äëÿ àäëþñòðàâàííÿ.

        +

        Íà ³íøûÿ ôàðìàòû êóðñࢠïîëå íå ïà¢ïëûâàå, çà âûêëþ÷ýííåì ñ³ñòýìíûõ ôàéëࢠðýã³ñòðàöû³, ÿê³ÿ âûêàðûñòî¢âàþöü ãýòóþ äàòó ÿê íàéáîëüø ðàííÿþ äëÿ àäëþñòðàâàííÿ. -

        Ó öýëûì, êàë³ ¢ Âàøàãà êóðñà ¸ñöü äàòà ïà÷àòêó, áûëî á íÿ äðýííà ¢ñòàëÿâàöü ÿå òóò (óñ¸ àäíî ÿê³ ôàðìàò ìàå Âàøû êóðñ).

        +

        Ó öýëûì, êàë³ ¢ Âàøàãà êóðñà ¸ñöü äàòà ïà÷àòêó, áûëî á íÿ äðýííà ¢ñòàëÿâàöü ÿå òóò (óñ¸ àäíî ÿê³ ôàðìàò ìàå Âàøû êóðñ). diff --git a/lang/be/help/courseuploadsize.html b/lang/be/help/courseuploadsize.html index e2d58c0017e..2f972963e56 100644 --- a/lang/be/help/courseuploadsize.html +++ b/lang/be/help/courseuploadsize.html @@ -1,6 +1,6 @@ -

        Ìàêñ³ìàëüíà äàïóø÷àëüíû ïàìåð ôàéëó ¢ ðàìêàõ äàäçåíàãà êóðñà.

        +

        Ìàêñ³ìàëüíà äàïóø÷àëüíû ïàìåð ôàéëó ¢ ðàìêàõ äàäçåíàãà êóðñà.

        -

        Ãýòû ïàðàìåòð âûçíà÷àå íàéáîëüøû äàïóø÷àëüíû ïàìåð ôàéëó, ÿê³ ìîæà áûöü äàñëàíû ñòóäýíòàì ó ðàìêàõ äàäçåíàãà êóðñó. -Ãýòû ïàðàìåòð íå ìîæà ïåðàâûøàöü ìàêñ³ìàëüíû ïàìåð ôàéëó âûçíà÷àíàãà äëÿ ¢ñÿãî ²íòýðíýò-ðýñóðñó. Äàêëàäíàå âûçíà÷ýííå (àáìåæàâàííå) ãýòàãà ïàðàìåòðó àäíîñ³ööà äà êàìïåòýíöû³ àäì³í³ñòðàòàðà ñåòê³.

        +

        Ãýòû ïàðàìåòð âûçíà÷àå íàéáîëüøû äàïóø÷àëüíû ïàìåð ôàéëó, ÿê³ ìîæà áûöü äàñëàíû ñòóäýíòàì ó ðàìêàõ äàäçåíàãà êóðñó. +Ãýòû ïàðàìåòð íå ìîæà ïåðàâûøàöü ìàêñ³ìàëüíû ïàìåð ôàéëó âûçíà÷àíàãà äëÿ ¢ñÿãî ²íòýðíýò-ðýñóðñó. Äàêëàäíàå âûçíà÷ýííå (àáìåæàâàííå) ãýòàãà ïàðàìåòðó àäíîñ³ööà äà êàìïåòýíöû³ àäì³í³ñòðàòàðà ñåòê³.

        -

        ¨ñöü ìàã÷ûìàñöü äàëåéøàãà àáìåæàâàííÿ ïàìåðó ôàéëó ïðàç óíÿñåííå àäïàâåäíûõ çìåíࢠó íàñòðîéê³ ¢ ìåæàõ êîæíàãà ìîäóëÿ àêòû¢íàñö³ (activity module).

        +

        ¨ñöü ìàã÷ûìàñöü äàëåéøàãà àáìåæàâàííÿ ïàìåðó ôàéëó ïðàç óíÿñåííå àäïàâåäíûõ çìåíࢠó íàñòðîéê³ ¢ ìåæàõ êîæíàãà ìîäóëÿ àêòû¢íàñö³ (activity module).

        diff --git a/lang/be/help/dialogue/dialoguetype.html b/lang/be/help/dialogue/dialoguetype.html index a0d7c2920b5..13374920272 100644 --- a/lang/be/help/dialogue/dialoguetype.html +++ b/lang/be/help/dialogue/dialoguetype.html @@ -6,4 +6,4 @@
      • Ñòóäýíò-ñòóäýíò. Ãýòû òûï äûÿëîãó ðîá³öü ÿãî ìàã÷ûìûì ïàì³æ äâóìà ñòóäýíòàì³. Âûêëàä÷ûê³ íå ìîãóöü ïðûìàöü óäçåë ó ãýòûì òûïå äûÿëîãà¢.

      • Êîæíû ç êîæíûì. Ãýòû òûï äûÿëîãó äàå ìàã÷ûìàñöü êîæíàìó ç Êëàñà ðàñïà÷àöü äûÿëîã ç ëþáûì ñà ñï³ñó. Âûêëàä÷ûê ìîæà ïà÷àöü äûÿëîã ç ³íøûì âûêëàä÷ûêàì àáî ñà ñòóäýíòàì, ÿê ³ ñòóäýíò ç âûêëàä÷ûêàì àáî ç ³íøûì ñòóäýíòàì.

      • - \ No newline at end of file + diff --git a/lang/be/help/dialogue/info.html b/lang/be/help/dialogue/info.html index a32a96518c8..01d63d95165 100644 --- a/lang/be/help/dialogue/info.html +++ b/lang/be/help/dialogue/info.html @@ -1,4 +1,4 @@ - Äûÿëîã³ (áîëüø ³íôàðìàöû³)

        + Äûÿëîã³ (áîëüø ³íôàðìàöû³)

        Ãýòû ìîäóëü äàçâàëÿå äâóì êàðûñòàëüí³êàì ñóàäíîñ³ööà ïàì³æ ñàáîé íåñêëàäàíûì ñïîñàáàì. Âûêëàä÷ûê ìîæà ïà÷àöü äûÿëîã òîëüê³ ç àäíûì ñòóäýíòàì, ñòóäýíò òîëüê³ ç àäíûì âûêëàä÷ûêàì ³, íàðýøöý, àäç³í ñòóäýíò ìîæà ïà÷àöü äûÿëîã ç ³íøûì ñòóäýíòàì. Àäíàê æà, ÿê ñòóäýíò, òàê ³ âûêëàä÷ûê àäíà÷àñîâà ìîãóöü óäçåëüí³÷àöü ó ìíîã³õ äûÿëîãàõ.

        @@ -6,4 +6,5 @@

        Êîæíû ¢äçåëüí³ê ìîæà çàêîí÷ûöü äûÿëîã ó ëþáû ìîìàíò. Çàêîí÷àíûÿ äûÿëîã³ íå ìîãóöü áûöü ïðàöÿãíóòû. Àäíàê æà, çàêîí÷àíû äûÿëîã êîæíû ¢äçåëüí³ê ìîæà áà÷ûöü, õ³áà øòî ¸í áû¢ çàêðûòû à¢òàìàòû÷íà.

        -

        Ãýòû ìîäóëü çàêðûâàå çàêîí÷àíûÿ äûÿëîã³ ïðàç ÷àñ, çàäàäçåíû ñòâàðàëüí³êàì äûÿëîãó. Ñòâàðàëüí³ê äûÿëîãó ìîæà òàêñàìà ¢ñòàíàâ³öü ãýòû ïàðàìåòð òàê³ì ÷ûíàì, êàá äàäçåíû äûÿëîã í³êîë³ íå áû¢ çàêðûòû.

        \ No newline at end of file +

        Ãýòû ìîäóëü çàêðûâàå çàêîí÷àíûÿ äûÿëîã³ ïðàç ÷àñ, çàäàäçåíû ñòâàðàëüí³êàì äûÿëîãó. Ñòâàðàëüí³ê äûÿëîãó ìîæà òàêñàìà ¢ñòàíàâ³öü ãýòû ïàðàìåòð òàê³ì ÷ûíàì, êàá äàäçåíû äûÿëîã í³êîë³ íå áû¢ çàêðûòû.

        + diff --git a/lang/be/help/dialogue/maildefault.html b/lang/be/help/dialogue/maildefault.html index 6da09a88a71..40664d699d3 100644 --- a/lang/be/help/dialogue/maildefault.html +++ b/lang/be/help/dialogue/maildefault.html @@ -1,2 +1,3 @@

        Äàøë³ ýëåêòðîííû ë³ñò ç íîâûì çàï³ñàì

        -

        Ãýòû ïàðàìåòð äàå ìàã÷ûìàñöü ïåðàñëàöü íîâû çàï³ñ ç äàïàìîãàé ýëåêòðîííàé ïîøòû. Êàë³ ãýòû ïàðàìåòð íàñòðî³öü íà "Òàê", òî íîâû çàï³ñ áóäçå à¢òàìàòû÷íà ïåðàñëàíû íà ýëåêòðîííóþ ñêðûíêó êàðûñòàëüí³êà.

        \ No newline at end of file +

        Ãýòû ïàðàìåòð äàå ìàã÷ûìàñöü ïåðàñëàöü íîâû çàï³ñ ç äàïàìîãàé ýëåêòðîííàé ïîøòû. Êàë³ ãýòû ïàðàìåòð íàñòðî³öü íà "Òàê", òî íîâû çàï³ñ áóäçå à¢òàìàòû÷íà ïåðàñëàíû íà ýëåêòðîííóþ ñêðûíêó êàðûñòàëüí³êà.

        + diff --git a/lang/be/help/dialogue/mods.html b/lang/be/help/dialogue/mods.html index 4413fc088a6..77444c8fba3 100644 --- a/lang/be/help/dialogue/mods.html +++ b/lang/be/help/dialogue/mods.html @@ -1,4 +1,4 @@ -

         Äûÿëîã³

        -
        +

         Äûÿëîã³

        +

          Ãýòû ìîäóëü äàçâàëÿå äâóì êàðûñòàëüí³êàì ñóàäíîñ³ööà ïàì³æ ñàáîé íåñêëàäàíûì ñïîñàáàì. Âûêëàä÷ûê ìîæà ïà÷àöü äûÿëîã òîëüê³ ç àäíûì ñòóäýíòàì, ñòóäýíò òîëüê³ ç àäíûì âûêëàä÷ûêàì ³, íàðýøöå, àäç³í ñòóäýíò ìîæà ïà÷àöü äûÿëîã ç ³íøûì ñòóäýíòàì. Àäíàê æà, ÿê ñòóäýíò, òàê ³ âûêëàä÷ûê àäíà÷àñîâà ìîãóöü óäçåëüí³÷àöü ó ìíîã³õ äûÿëîãàõ.

          -
        \ No newline at end of file + diff --git a/lang/be/help/emoticons.html b/lang/be/help/emoticons.html index 72c185d6f1b..8f1fbfd8408 100644 --- a/lang/be/help/emoticons.html +++ b/lang/be/help/emoticons.html @@ -1,119 +1,119 @@ -

        Êàðûñòàííå ýìàòûêîíàì³ (ïà÷óööÿì³, òâàðûêàì³)

        +

        Êàðûñòàííå ýìàòûêîíàì³ (ïà÷óööÿì³, òâàðûêàì³)

        - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
        Óñìåøêà Óñìåøêà:-):-)
        Øûðîêàÿ óñìåøêà Øûðîêàÿ ¢ñìåøêà:-D:-D
        Óñìåøêà ç ïàäìîðãâàííåì Óñìåøêà ç ïàäìîðãâàííåì;-);-)
        Çìåøàíûÿ ïà÷óöö³ Çìåøàíûÿ ïà÷óöö³:-/:-/
        Çàäóìåííû Çàäóìåííû V-.
        ßçû÷îê ßçû÷îê:-P:-P
        Ðî¢íû ãîñöü 'Ðî¢íû ãîñöü'B-)B-)
        Çàäàâîëåíàñöü Çàäàâîëåíàñöü^-)^-)
        Âûëóïëåíûÿ âî÷û Âûëóïëåíûÿ âî÷û8-)8-)
        Çäç³¢ëåííå Çäç³¢ëåííå8-o8-o
        - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
        Ñìóòàê Ñìóòàê:-(:-(
        Íåðàøó÷àñöü Íåðàøó÷àñöü8-.8-.
        Çáÿíòýæàíû Çáÿíòýæàíû:-I:-I
        Ïàöàëóíàê Ïàöàëóíàê:-X:-X
        Áëàçàí Áëàçàí:o):o)
        Ïàäá³òàå âîêà Ïàäá³òàå âîêàP-|P-|
        Íåçàäàâîëåíû Íåçàäàâîëåíû8-[8-[
        ̸ðòâû ̸ðòâûxx-Pxx-P
        Ñîííû Ñîííû|-.|-.
        Íÿ÷ûñö³ê Íÿ÷ûñö³ê}-]}-]
        -

        Ïàä÷àñ ï³ñàííÿ ¢ àñÿðîäêó oíëàéí, ÷àñàì ìîæàø ìåöü öÿæêàñö³ ç âûêàçâàííåì ñâà³õ ýìîöûÿ ç äàïàìîãàþ òýêñòó. Ãýòûÿ ìàëûÿ àáðàçê³ ìîãóöü òàáå äàïàìàã÷û.

        +

        Ïàä÷àñ ï³ñàííÿ ¢ àñÿðîäêó oíëàéí, ÷àñàì ìîæàø ìåöü öÿæêàñö³ ç âûêàçâàííåì ñâà³õ ýìîöûÿ ç äàïàìîãàþ òýêñòó. Ãýòûÿ ìàëûÿ àáðàçê³ ìîãóöü òàáå äàïàìàã÷û.

        -

        Êàá çìÿñö³öü ýìàòûêîí ó òýêñöå: êëàöí³ íà àáðàíû àáðàçîê çìåø÷àíû âûøýé, àáî çàï³øû àäïàâÿäàþ÷û ÿìó øýðàã çíàêࢠíåïàñðýäíà ïàä÷àñ íàáîðó òýêñòó.

        +

        Êàá çìÿñö³öü ýìàòûêîí ó òýêñöå: êëàöí³ íà àáðàíû àáðàçîê çìåø÷àíû âûøýé, àáî çàï³øû àäïàâÿäàþ÷û ÿìó øýðàã çíàêࢠíåïàñðýäíà ïàä÷àñ íàáîðó òýêñòó.

        -

        Çâÿðí³ ¢âàãó, øòî òýêñòàâûÿ êîäû ïàäàáðàíûÿ òàê, êàá áûë³ ïàäîáíûÿ íà àáðàçê³. Äàñòàòêîâà íàõ³ë³öü ãàëàâó ¢ëåâà, êàá ïàãëÿäçåöü íà ³õ.

        +

        Çâÿðí³ ¢âàãó, øòî òýêñòàâûÿ êîäû ïàäàáðàíûÿ òàê, êàá áûë³ ïàäîáíûÿ íà àáðàçê³. Äàñòàòêîâà íàõ³ë³öü ãàëàâó ¢ëåâà, êàá ïàãëÿäçåöü íà ³õ.

        diff --git a/lang/be/help/enrolmentkey.html b/lang/be/help/enrolmentkey.html index f35ebe04393..21811081cda 100644 --- a/lang/be/help/enrolmentkey.html +++ b/lang/be/help/enrolmentkey.html @@ -1,13 +1,13 @@ -

        Êîäàâàå ñëîâà

        +

        Êîäàâàå ñëîâà

        -

        Êîäàâàå ñëîâà - ñðîäàê íå äàïóñêàöü ñòàðîíí³õ ëþäçåé äà Âàøàãà êóðñà.

        +

        Êîäàâàå ñëîâà - ñðîäàê íå äàïóñêàöü ñòàðîíí³õ ëþäçåé äà Âàøàãà êóðñà. -

        Ïóñòîå ïîëå àçíà÷àå, øòî ëþáû, ÿê³ ñòâàðû¢ óë³êîâû çàï³ñ íà ñàéöå, ìîæà çàï³ñàööà íà Âàøû êóðñ.

        +

        Ïóñòîå ïîëå àçíà÷àå, øòî ëþáû, ÿê³ ñòâàðû¢ óë³êîâû çàï³ñ íà ñàéöå, ìîæà çàï³ñàööà íà Âàøû êóðñ. -

        Êàë³ Âû íàï³øûöå ¢ ãýòà ïîëå ñëîâà àáî ôðàçó, êîæíû ñòóäýíò äëÿ òàãî, êàá çàï³ñàööà íà êóðñ ïàâ³íåí áóäçå ÿå íàï³ñàöü.

        +

        Êàë³ Âû íàï³øûöå ¢ ãýòà ïîëå ñëîâà àáî ôðàçó, êîæíû ñòóäýíò äëÿ òàãî, êàá çàï³ñàööà íà êóðñ ïàâ³íåí áóäçå ÿå íàï³ñàöü. -

        Âû ìîæàöå ïàâåäàì³öü âó÷íÿì êëþ÷, ñêàðûñòà¢øû e-mail, òýëåôîí àáî ¢ àñàá³ñòàé ãóòàðöû.

        +

        Âû ìîæàöå ïàâåäàì³öü âó÷íÿì êëþ÷, ñêàðûñòà¢øû e-mail, òýëåôîí àáî ¢ àñàá³ñòàé ãóòàðöû. -

        Êàë³ êîäàâàå ñëîâà äàâåäàë³ñÿ ³ ¢ Âàñ ç'ÿâ³ë³ñÿ ë³øí³ÿ ñòóäýíòû, âûêëþ÷ûöå ³õ ç êóðñó, ñêàðûñòà¢øû ¢ë³êîâûÿ çàï³ñû ³ çìÿí³öå êëþ÷. Íà ñòóäýíòà¢, ÿê³ÿ çàï³ñàë³ñÿ íà êóðñ, ãýòà í³ÿê íå ïà¢ïëûâàå.

        +

        Êàë³ êîäàâàå ñëîâà äàâåäàë³ñÿ ³ ¢ Âàñ ç'ÿâ³ë³ñÿ ë³øí³ÿ ñòóäýíòû, âûêëþ÷ûöå ³õ ç êóðñó, ñêàðûñòà¢øû ¢ë³êîâûÿ çàï³ñû ³ çìÿí³öå êëþ÷. Íà ñòóäýíòà¢, ÿê³ÿ çàï³ñàë³ñÿ íà êóðñ, ãýòà í³ÿê íå ïà¢ïëûâàå. diff --git a/lang/be/help/exercise/administration.html b/lang/be/help/exercise/administration.html index 06ed784f2a4..e22fee6336e 100644 --- a/lang/be/help/exercise/administration.html +++ b/lang/be/help/exercise/administration.html @@ -9,4 +9,4 @@

        Ãýòûÿ êàìïàíåíòû ïàâ³ííû áûöü àäïàâåäíà ¢çâàæàíûÿ. Âûêëàä÷ûê ìîæà, íàïðûêëàä, àöàí³öü àäçíàêó ñòóäýíòà âåëüì³ í³çêà, íàâàò íà íóëü. Òàäû êàí÷àòêîâàÿ àäçíàêà áóäçå çàëåæûöü àä àäçíàê³ çà ðàáîòó. Âàãà, ÿêàÿ íàäàäçåíà êîæíàìó ç ýëåìåíòà¢, ìîæà áûöü ó ëþáûì ìîìàíöå ïàä÷àñ âûêàíàííÿ ïðàêòûêàâàííÿ çìåíåíà, àëå âûí³ê ãýòûõ çìåíࢠïàâ³íåí àäðàçó ç’ÿ¢ëÿööà ¢ òàáë³öû àäçíàê.

        -

        Íà ñòàðîíöû ê³ðàâàííÿ ïðàêòûêàâàííåì çíàõîäç³ööà òàêñàìà ³íôàðìàöûÿ, ÿêàÿ äàòû÷ûöü óëàñíà ïðàêòûêàâàííÿ (ïðûñëàíàÿ âûêëàä÷ûêàì), àäçíàê³ ñòóäýíòࢠçà ¢ëàñíûÿ ðàáîòû, à òàêñàìà ³õí³ÿ ðàáîòû. ²íôàðìàöûÿ, ÿêàÿ çíàõîäç³ööà íà ãýòàé ñòàðîíöû ìîæà áûöü çìåíåíà , âûäàëåíà, ïðàãëåäæàíà àáî àöýíåíà ïà¢òîðíà. Òàê³ì ÷ûíàì, ìýòàé ãýòàé ñòàðîíê³ ¸ñöü ìàã÷ûìàñöü ìàí³òîðûíãó ïîñïåõࢠñòóäýíòࢠàä ïà÷àòêó âûêàíàííÿ ïðàêòûêàâàííÿ¢ äà ñàìààöýíê³.

        \ No newline at end of file +

        Íà ñòàðîíöû ê³ðàâàííÿ ïðàêòûêàâàííåì çíàõîäç³ööà òàêñàìà ³íôàðìàöûÿ, ÿêàÿ äàòû÷ûöü óëàñíà ïðàêòûêàâàííÿ (ïðûñëàíàÿ âûêëàä÷ûêàì), àäçíàê³ ñòóäýíòࢠçà ¢ëàñíûÿ ðàáîòû, à òàêñàìà ³õí³ÿ ðàáîòû. ²íôàðìàöûÿ, ÿêàÿ çíàõîäç³ööà íà ãýòàé ñòàðîíöû ìîæà áûöü çìåíåíà , âûäàëåíà, ïðàãëåäæàíà àáî àöýíåíà ïà¢òîðíà. Òàê³ì ÷ûíàì, ìýòàé ãýòàé ñòàðîíê³ ¸ñöü ìàã÷ûìàñöü ìàí³òîðûíãó ïîñïåõࢠñòóäýíòࢠàä ïà÷àòêó âûêàíàííÿ ïðàêòûêàâàííÿ¢ äà ñàìààöýíê³.

        diff --git a/lang/be/help/exercise/comparisonofassessments.html b/lang/be/help/exercise/comparisonofassessments.html deleted file mode 100644 index 5f61b67eb31..00000000000 --- a/lang/be/help/exercise/comparisonofassessments.html +++ /dev/null @@ -1,9 +0,0 @@ -

        Ïàðà¢íàííå àöýíàê

        - -

        Ïðû âûêàíàíí³ ïðàêòûêàâàííÿ¢ ïý¢íàÿ ÷àñòêà ïðàöû çâû÷àéíà àöýíüâàåööà äâîé÷û. Ñòóäýíò àöýíüâàå ñâàþ ðàáîòó ïåðàä òûì, ÿê çäàöü ÿå, à âûêëàä÷ûê ïîòûì ÿø÷ý ðàç àöýíüâàå ÿå. Êðîïêàé àäë³êó äëÿ àöýíê³, ÿêóþ ðîá³öü âûêëàä÷ûê, ç'ÿ¢ëÿåööà àöýíêà ñòóäýíòà. Ïðàêòûêàâàííå äàçâàëÿå âûêëàä÷ûêó íàäàöü ÷àñòêó áàëà ñòóäýíöêàé àöýíöû, ðýøòà ñêëàäí³êࢠáàëà óòðûìë³âàåööà ¢ àöýíöû âûêàíàíàãà ïðàêòûêàâàííÿ âûêëàä÷ûêàì. (Ìàêñ³ìàëüíûÿ áàëû íàçûâàþööà àäïàâåäíà "Áàë äëÿ àöýíàê ñòóäýíòà¢" ³ "Áàë äëÿ ïàäàäçåíûõ ðàáîò".) Òðýáà àäçíà÷ûöü, øòî áàë ñà ñòóäýíöêàé àöýíê³ íå âûêàðûñòî¢âàåööà. Ñòóäýíöêàé àöýíöû äàåööà áàë, ÿê³ áàçóåööà íà òûì, íàêîëüê³ ÿíà ñóïàäàå ç àöýíêàé âûêëàä÷ûêà.

        - -

        Ñòóïåíü àäïàâåäíàñö³ àöýíê³ ñòóäýíòà ³ âûêëàä÷ûêà áàçóåööà íà ðîçí³öû ó ìíîñòâàõ àñîáíûõ ýëåìåíòࢠ(ôàêòû÷íà, âûêàðûñòî¢âàþööà êâàäðàòû ðîçíàñö³). Ñÿðýäíÿå ãýòûõ ðîçí³ö òðýáà êàíâåðòàâàöü ó áàë, ÿê³ áóäçå ìåöü ñýíñ. Îïöûÿ "Ïàðà¢íàííå àöýíàê" äàå âûêëàä÷ûêó ïý¢íóþ ñòóïåíü êàíòðîëþ ïðû êàíâåðòàâàíí³ ïàðà¢íàííÿ¢ ó áàëû.

        - -

        Äëÿ òàãî, êàá ìåöü óÿ¢ëåííå ïðà òîå, ÿê³ ýôåêò ìàå ãýòàÿ îïöûÿ, âîçüìåì (äàñòàòêîâà ïðîñòû) ïðûêëàä àöýíê³, ÿêàÿ ¢êëþ÷àå 10 ïûòàííÿ¢ êøòàëòó Òàê/Íå. Íàïðûêëàä, äëÿ àöýíê³ ìîæíà âûêàðûñòî¢âàöü ïûòàíí³ êøòàëòó "Ö³ ñëóøíà àäôàðìàòàâàíà òàáë³öà?", "Ö³ ïàäë³÷àíû äàõîä ðî¢íû $100.66?" ³ ã.ä. Áóäçåì ìåðêàâàöü, øòî ìû ìàåì 10 òàê³õ ïûòàííÿ¢. Êàë³ ìû âûá³ðàåì îïöûþ "Âåëüì³ ïðûáë³çíà" òî ïî¢íàå ñóïàäçåííå àöýíê³ ñòóäýíòà ³ âûêëàä÷ûêà äàñöü áàë ó 100%, êàë³ àäêàç íà àäíî ïûòàííå íÿñëóøíû, òî áàë áóäçå 90%, äâà íÿñëóøíûÿ àäêàçû äàäóöü 80%, òðû – 70% ³ ã.ä. Íà ïåðøû ïîãëÿä òàêàÿ àöýíêà çäàåööà ðàçóìíàé, ³ Âû íå çóñ³ì ðàçóìååöå ÷àìó ÿíà íàçûâàåööà "Âåëüì³ ïðûáë³çíàé". Äîáðà, óÿâ³öå ñàáå âûïàäàê, øòî ñòóäýíò ðîá³öü àáñàëþòíà âûïàäêîâóþ àöýíêó, êàë³ ïûòàíí³ íà äçåñÿöü ïûòàííÿ¢ äàþööà íà¢çäàãàä. Ó ñÿðýäí³ì ïÿöü àäêàçࢠìîãóöü áûöü ñëóøíûì³. Òàê³ì ÷ûíàì, òàêàÿ "ëåâàÿ" àöýíêà ìîæà äàöü áàë ó 50%. ѳòóàöûÿ ðîá³ööà òðîõ³ áîëüø çðàçóìåëàé, êàë³ ìû âûêàðûñòî¢âàåì îïöûþ "Âåëüì³ ïðûáë³çíà", òàäû âûïàäêîâàñöü àöýíê³ çí³æàåööà íà 20%. Êàë³ âûáðàöü îïöûþ "Ïðûáë³çíà" òî âûïàäêîâûÿ çäàãàäê³ áóäóöü ó áîëüøàñö³ âûïàäêࢠçâîäç³ööà ê íóëþ. Íà ãýòûì óçðî¢í³ áàë ó 50% äàåööà ¢ òûì âûïàäêó, êàë³ äçâå àöýíê³ ñóïàäàþöü ó âàñüì³ ïûòàííÿõ ç 10-ö³. Êàë³ íå ñóïàäàþöü òðû ïûòàíí³, òàäû áàë áóäçå ðî¢íû 25%. Êàë³ âûáðàöü îïöûþ "Äàêëàäíà" , òî íåñóïàäçåííå ¢ äâóõ ïûòàííÿõ äàå áàë ó 40%. Äâà íåäàêëàäíûÿ àäêàçû íà ïûòàíí³ ïðû âûáðàíàé îïöû³ "Âåëüì³ äàêëàäíà" äàþöü áàë ó 35%, à àäíà íåäàêëàäíàñöü – 65%.

        -

        Ãýòà ïðûêëàä äàâîë³ øòó÷íû, ïàêîëüê³ áîëüøàñöü àöýíàê çâû÷àéíà ñêëàäàþööà ç ýëåìåíòà¢, ÿê³ÿ ìàþöü áîëüø çíà÷ýííÿ¢ ÷ûì ïðîñòûÿ àäêàçû Òàê ³ Íå. Ó òàê³õ âûïàäêàõ, õóò÷ýé çà ¢ñ¸, ïàðà¢íàííå áóäçå ìåöü çà âûí³ê áîëüø âûñîê³ÿ áàëû ¢ ïàðà¢íàíí³ ñà çíà÷ýííÿì³ ïàçíà÷àíûì³ âûøýé. Ðîçíûÿ ¢çðî¢í³ (Âåëüì³ ïðûáë³çíà, Ïðûáë³çíà, Äàêëàäíà ...) äàþööà ç òûì, êàá âûêëàä÷ûê ìîã ÿê ìàãà áîëüø äàêëàäíà âûçíà÷ûöü ñóïàñòà¢ëåíí³. Êàë³ âûêëàä÷ûê àä÷óâàå, øòî áàëû äëÿ àöýíàê çàíàäòà í³çê³ÿ, òî òðýáà âûá³ðàöü îïöûþ "Ïðûáë³çíà" ö³ íàâàò "Âåëüì³ ïðûáë³çíà" . ², àäïàâåäíà, êàë³ ¸ñöü àä÷óâàííå, øòî áàëû äëÿ ñòóäýíöê³õ àöýíàê çàíàäòà âûñîê³ÿ, òî òðýáà âûáðàöü îïöûþ "Äàêëàäíà" ö³ "Âåëüì³ äàêëàäíà". Ãýòà ñàïðà¢äû øëÿõ ñïðîáࢠ³ ïàìûëàê ç îïöûÿé "Ïðûáë³çíà" ó ÿêàñö³ çûõîäíàãà ïóíêòó.

        -

        Ó ÷àñ âûêàíàííÿ ïðàêòûêàâàííÿ âûêëàä÷ûê ìîæà àä÷óöü, øòî áàëû, äàäçåíûÿ ñòóäýíòó, àëüáî çàíàäòà âûñîê³ÿ, àëüáî çàíàäòà í³çê³ÿ. Ãýòûÿ áàëû ìîæíà áà÷ûöü íà Ñòàðîíöû àäì³í³ñòðàâàííÿ ïðàêòûêàâàííÿ¢. Ó ãýòûì âûïàäêó âûêëàä÷ûê ìîæà çìÿí³öü íàñòðîéêó ãýòàé îïöû³ ³ ïàë³÷ûöü áàëû íàíî¢ ("Ïåðààöýíêà áàëà¢"). Ïåðààöýíüâàííå ðîá³ööà øëÿõàì íàö³ñêàííÿ íà ñïàñûëêó "Ïåðàöàí³öü àöýíê³ ñòóäýíòà" ", ÿêàÿ çíàõîäç³ööà íà ñòàðîíöû àäì³í³ñòðàâàííÿ ïðàêòûêàâàííÿ. Ïðàöýäóðó ìîæíà ðàá³öü ó ëþáû ìîìàíò âûêàíàííÿ ïðàêòûêàâàííÿ ³ ãýòà íå ïðûâÿäçå äà íåéê³õ ñêàæýííÿ¢.

        \ No newline at end of file diff --git a/lang/be/help/exercise/elements.html b/lang/be/help/exercise/elements.html index b7379bb65da..92c8d241504 100644 --- a/lang/be/help/exercise/elements.html +++ b/lang/be/help/exercise/elements.html @@ -1,17 +1,17 @@

        Ýëåìåíòû ðàáîòû

        Êàá ðàáîòó áûëî ëÿã÷ýé àöýíüâàöü, ÿíà ïàâ³ííà ìåöü àïòûìàëüíóþ êîëüêàñöü "ýëåìåíòࢠàöýíê³". -Êîæíû àöýíà÷íû ýëåìåíò ïàâ³íåí äàòû÷ûöü àêðýñëåíàãà àñïåêòó ðàáîòû. Çâû÷àéíà ðàáîòû ¢êëþ÷àþöü àä 5 äà 15 ýëåìåíòࢠàöýíê³, ó çàëåæíàñö³ àä ñêëàäàíàñö³ çàäàííÿ. Äàïóñêàåööà íàÿ¢íàñöü òîëüê³ àäíàãî àöýíà÷íàãà ýëåìåíòà, ó òàê³ì ðàçå ðàáîòà áóäçå íàãàäâàöü ñòàíäàðòíàå çàäàííå ¢ Moodle.

        +Êîæíû àöýíà÷íû ýëåìåíò ïàâ³íåí äàòû÷ûöü àêðýñëåíàãà àñïåêòó ðàáîòû. Çâû÷àéíà ðàáîòû ¢êëþ÷àþöü àä 5 äà 15 ýëåìåíòࢠàöýíê³, ó çàëåæíàñö³ àä ñêëàäàíàñö³ çàäàííÿ. Äàïóñêàåööà íàÿ¢íàñöü òîëüê³ àäíàãî àöýíà÷íàãà ýëåìåíòà, ó òàê³ì ðàçå ðàáîòà áóäçå íàãàäâàöü ñòàíäàðòíàå çàäàííå ¢ Moodle. -

        Ñòðàòýã³³ àöýíüâàííÿ:

        +

        Ñòðàòýã³³ àöýíüâàííÿ: -

        Íå àöýíüâàöü. Ýëåìåíòû ðàáîòû ç’ÿ¢ëÿþööà àï³ñàííåì ïý¢íûõ àñïåêòࢠðàáîòû. Âûêëàä÷ûê ïàâ³íåí çðàá³öü çà¢âàã³ äà êîæíàãà àñïåêòó. ßê ³ ¢ ³íøûõ ñòðàòýã³ÿõ àöýíüâàííÿ, äàåööà òàêñàìà àãóëüíû êàìåíòàð.

        +

        Íå àöýíüâàöü. Ýëåìåíòû ðàáîòû ç’ÿ¢ëÿþööà àï³ñàííåì ïý¢íûõ àñïåêòࢠðàáîòû. Âûêëàä÷ûê ïàâ³íåí çðàá³öü çà¢âàã³ äà êîæíàãà àñïåêòó. ßê ³ ¢ ³íøûõ ñòðàòýã³ÿõ àöýíüâàííÿ, äàåööà òàêñàìà àãóëüíû êàìåíòàð. -

        Íà ïàäñòàâå ñêëàäàþ÷ûõ ýëåìåíòࢠàöýíê³. Ãýòà ñòðàòýã³ÿ ¢êëþ÷àå ¢ ñÿáå íàñòóïíûÿ ýòàïû àöýíê³:

        +

        Íà ïàäñòàâå ñêëàäàþ÷ûõ ýëåìåíòࢠàöýíê³. Ãýòà ñòðàòýã³ÿ ¢êëþ÷àå ¢ ñÿáå íàñòóïíûÿ ýòàïû àöýíê³:

        1. ÀϲÑÀÍÍÅ ýëåìåíòà àöýíê³. Òóò òðýáà íàçâàöü àñïåêò ðàáîòû, ÿê³ àöýíüâàåööà. Êàë³ ðàáîòà ìàå ÿêàñíû õàðàêòàð, òðýáà àêðýñë³öü, øòî ïàâ³ííà ë³÷ûööà äîáðûì,ñÿðýäí³ì ³ êåïñê³ì.
        2. -
        3. ØÊÀËÀ ýëåìåíòà. Moodle ìàå øýðàã àêðýñëåíûõ àöýíà÷íûõ øêàë, àä ïðîñòûõ òàê/íå, äà øìàòñòóïåíü÷àòûõ , ïðàöýíòàâûõ øêàë. Êîæíû ýëåìåíò ìàå ñâàþ ¢ëàñíóþ øêàëó. Çà¢âàæöå, øòî øêàëà íå ¢ïëûâàå íà âàãó äàäçåíàãà ýëåìåíòà ïðû âûñòà¢ëåíí³ êàí÷àòêîâàé àäçíàê³. Äâóõñòóïåíü÷àòàÿ øêàëà ìàå òàê³ ñàìû quot;¢ïëû¢" íà êàí÷àòêîâóþ àäçíàêó ÿê ³ øêàëà, ÿêàÿ ìàå 100 ïóíêòà¢, ïðû ¢ìîâå, øòî ýëåìåíòû, ÿê³õ ãýòà øêàëà äàòû÷ûöü, ìàþöü òàêóþ ñàìóþ âàãó.
        4. +
        5. ØÊÀËÀ ýëåìåíòà. Moodle ìàå øýðàã àêðýñëåíûõ àöýíà÷íûõ øêàë, àä ïðîñòûõ òàê/íå, äà øìàòñòóïåíü÷àòûõ , ïðàöýíòàâûõ øêàë. Êîæíû ýëåìåíò ìàå ñâàþ ¢ëàñíóþ øêàëó. Çà¢âàæöå, øòî øêàëà íå ¢ïëûâàå íà âàãó äàäçåíàãà ýëåìåíòà ïðû âûñòà¢ëåíí³ êàí÷àòêîâàé àäçíàê³. Äâóõñòóïåíü÷àòàÿ øêàëà ìàå òàê³ ñàìû quot;¢ïëû¢" íà êàí÷àòêîâóþ àäçíàêó ÿê ³ øêàëà, ÿêàÿ ìàå 100 ïóíêòà¢, ïðû ¢ìîâå, øòî ýëåìåíòû, ÿê³õ ãýòà øêàëà äàòû÷ûöü, ìàþöü òàêóþ ñàìóþ âàãó.
        6. ÂÀÃÀ ýëåìåíòà. Ïðûìàåööà, øòî êîæíû ýëåìåíò ìàå òàêóþ ñàìóþ âàãó . Ãýòà ìîæíà çìÿí³öü, ïðûäàþ÷û áîëüø ³ñòîòíûì ýëåìåíòàì âàãó, áîëüøóþ ÷ûì 1, à ìåíø ³ñòîòíûì – ìåíøóþ, ÷ûì 1. Çìåíà âàã³ ÍÅ íà çìåíó ìàêñ³ìàëüíàé àäçíàê³, ÿêàÿ àêðýñë³âàåööà ç äàïàìîãàé ïàðàìåòðà Ìàêñ³ìàëüíàÿ Àäçíàêà. Âàãà ìîæà ìåöü ïðûï³ñàíóþ âàðòàñöü í³æýéøóþ , ÷ûì íóëü, ïðà¢äà, äà òàê³õ çàï³ñࢠíàëåæûöü àäíîñ³ööà, ÿê äà ýêñïåðûìåíòàëüíûõ.
        7. diff --git a/lang/be/help/exercise/grading.html b/lang/be/help/exercise/grading.html index b65e324f4c1..53feb6cb0ff 100644 --- a/lang/be/help/exercise/grading.html +++ b/lang/be/help/exercise/grading.html @@ -11,7 +11,7 @@

          Ïåðøàïà÷àòêîâàÿ àöýíêà ïðàöû òàáîé ñàì³ì áóäçå àöýíåíà âûêëàä÷ûêàì, ÿê³ çðîá³öü çà¢âàã³ äà òâà³õ ñöâåðäæàííÿ¢. Ãýòû êàìåíòàð áóäçå íà áà÷íû, à àäçíàêà çà òâàþ àöýíêó ñâà¸é ïðàöû ìîæà ïà¢ïëûâàöü íà êàí÷àòêîâóþ àäçíàêó çà ðàáîòó.

          -

          Âûêëàä÷ûêàì

          +

          Äëÿ âûêëàä÷ûêà¢

          Ãýòû ôàðìóëÿð âûêàðûñòî¢âàåööà äëÿ àöýíê³ ðàáîò ñòóäýíòà¢. Àäçíàêà, çàï³ñàíàÿ ¢ ôàðìóëÿðû, ïàâ³ííà ñêëàäàöü ïðûíöûïîâû êàìïàíåíò êàí÷àòêîâàé àäçíàê³ çà ïðàêòûêàâàííå. Çà¢âàã³ ³ àäçíàêà áóäóöü äàñòóïíûÿ ñòóäýíòó. Ïàñëÿ àöýíüâàííÿ òðýáà âûðàøûöü, ö³ ïàâ³íåí ñòóäýíò ïåðàðàá³öü ñâàþ ïðàöó ³ âûñëàöü ÿå ³çíî¢ ö³ íå.

          diff --git a/lang/be/help/exercise/gradinggrade.html b/lang/be/help/exercise/gradinggrade.html index 605538802be..4dd4660b2d0 100644 --- a/lang/be/help/exercise/gradinggrade.html +++ b/lang/be/help/exercise/gradinggrade.html @@ -1,5 +1,6 @@

          Àöýíüâàííå ðàáîò

          -

          Íà ïåðøàé ïàëîâå ñòàðîíê³ ïðàäñòà¢ëÿåööà ¢ëàñíàÿ àöýíêà ñòóäýíòà. Ãýòà àöýíêà ïàâ³ííà óêëþ÷àöü ìàêñ³ìàëüíà 20 ïóíêòà¢. "Àöýíêà àäçíàê³" ïàâ³ííà áûöü çìåø÷àíà ¢ àêåíöû, ó ÿêîå çàï³ñâàåööà ìåðêàâàííå âûêëàä÷ûêà.

          +

          Íà ïåðøàé ïàëîâå ñòàðîíê³ ïðàäñòà¢ëÿåööà ¢ëàñíàÿ àöýíêà ñòóäýíòà. Ãýòà àöýíêà ïàâ³ííà óêëþ÷àöü ìàêñ³ìàëüíà 20 ïóíêòà¢. "Àöýíêà àäçíàê³" + ïàâ³ííà áûöü çìåø÷àíà ¢ àêåíöû, ó ÿêîå çàï³ñâàåööà ìåðêàâàííå âûêëàä÷ûêà.

          Íà äðóãîé ïàëîâå ñòàðîíê³ ¸ñöü ôîðìà, ó ÿêîé ìîæàöå ïàñòàâ³öü óëàñíóþ àäçíàêó ðàáîòû ñòóäýíòà.

          \ No newline at end of file diff --git a/lang/be/help/exercise/index.html b/lang/be/help/exercise/index.html index 61e91c696b0..a5afcdde844 100644 --- a/lang/be/help/exercise/index.html +++ b/lang/be/help/exercise/index.html @@ -2,15 +2,15 @@
          • ʳðàâàííå çàäàííåì ç ñàìààöýíêàé
          • Ýëåìåíòû ðàáîòû
          • -
          • Ïàðà¢íàííå àöýíàê
          • +
          • Comparison of Assessments
          • Êàí÷àòêîâûÿ àäçíàê³
          • Ìàêñ³ìàëüíàÿ àäçíàêà
          • Àöýíüâàííå ðàáîò
          • Àöýíüâàííå
          • Ñòðàòýã³ÿ àöýíüâàííÿ
          • -
          • Òàáë³öà Ðýéòûíãó
          • -
          • ²ì¸íû ¢ òàáë³öû Ðýéòûíãó
          • -
          • ʳðàâàííå ïðàêòûêàâàííåì ç ñàìààöýíêàé
          • +
          • Òàáë³öà ˳ã³
          • +
          • ²ì¸íû ¢ òàáë³öû ˳ã³
          • +
          • ʳðàâàííå ïðàêòûêàâàííåì
          • Áîëüø ³íôàðìàöû³
          • Êîëüêàñöü ýëåìåíòࢠðàáîòû
          • Ïà¢òîðíàÿ àöýíêà ñòóäýíöê³õ ðàáîò
          • diff --git a/lang/be/help/exercise/leaguetable.html b/lang/be/help/exercise/leaguetable.html index 93c4bf64ab0..f58c8fc78c0 100644 --- a/lang/be/help/exercise/leaguetable.html +++ b/lang/be/help/exercise/leaguetable.html @@ -1,3 +1,4 @@ -

            Òàáë³öà Ðýéòûíãó

            +

            Òàáë³öà ˳ã³

            -

            Òàáë³öà Ðýéòûíãó âûñâå÷âàåööà ïàä êàíåö ïðàêòûêàâàííÿ ³ ¢êëþ÷àå ñï³ñ íàéëåïøûõ ðàáîò, ç óñ³õ äàñëàíûõ. Êàë³ êîëüêàñöü ýëåìåíòࢠóñòàíî¢ëåíà íà 0, òàáë³öà íå áóäçå âûñâå÷âàööà.

            \ No newline at end of file +

            Òàáë³öà ˳㳠âûñâå÷âàåööà ïàä êàíåö ïðàêòûêàâàííÿ ³ ¢êëþ÷àå ñï³ñ íàéëåïøûõ ïðàö, ç óñ³õ ïðûñëàíûõ. Êàë³ êîëüêàñöü ýëåìåíòࢠóñòàíî¢ëåíà íà 0, òàáë³öà íå áóäçå âûñâå÷âàööà.

            + diff --git a/lang/be/help/exercise/leaguetablenames.html b/lang/be/help/exercise/leaguetablenames.html index 9d2a51a6b24..1176cebc441 100644 --- a/lang/be/help/exercise/leaguetablenames.html +++ b/lang/be/help/exercise/leaguetablenames.html @@ -1,3 +1,4 @@ -

            ²ì¸íû ¢ òàáë³öû Ðýéòûíãó

            +

            ²ì¸íû ¢ òàáë³öû ˳ã³

            -

            Ãýòà êàìàíäà âûðàøàå ö³ áóäóöü ³ìÿ ³ ïðîçâ³ø÷à ñòóäýíòà ïàä êàíåö ïðàêòûêàâàííÿ ïàêàçàíûÿ ¢ Òàáë³öû Ðýéòûíãó. Çâû÷àéíà ³ìÿ ³ ïðîçâ³ø÷à íå ïàêàçâàþööà – òàáë³öà àíàí³ìíàÿ.

            +

            Ãýòà êàìàíäà âûðàøàå ö³ áóäóöü ³ìÿ ³ ïðîçâ³ø÷à ñòóäýíòà ïàä êàíåö ïðàêòûêàâàííÿ ïàêàçàíûÿ ¢ Òàáë³öû ˳ã³. Çâû÷àéíà ³ìÿ ³ ïðîçâ³ø÷à íå ïàêàçâàþööà – òàáë³öà àíàí³ìíàÿ.

            + diff --git a/lang/be/help/exercise/managing.html b/lang/be/help/exercise/managing.html index 0cd2e163372..f39834af297 100644 --- a/lang/be/help/exercise/managing.html +++ b/lang/be/help/exercise/managing.html @@ -1,18 +1,18 @@ -

            ʳðàâàííå ïðàêòûêàâàííåì ç ñàìààöýíêàé

            +

            ʳðàâàííå ïðàêòûêàâàííåì ç óëàñíàé àöýíêàé ðàáîòû

            -

            Ïðàêòûêàâàííå ç óëàñíàé àöýíêàé ðàáîòû çâû÷àéíà áîëüø àá'¸ìíàå, ÷ûì ïðîñòàå çàäàííå. ßíî ¢êëþ÷àå 4 íàñòóïíûÿ ôàçû: +

            Ïðàêòûêàâàííå ç óëàñíàé àöýíêàé ðàáîòû çâû÷àéíà áîëüø àá'¸ìíàå, ÷ûì ïðîñòàå çàäàííå. ßíî ¢êëþ÷àå 4 íàñòóïíûÿ ôàçû:

            1. Ñòâàðýííå ïðàêòûêàâàííÿ. Àöýíêà ïðàöû ñòàíå ìåíø ñêëàäàíàé, êàë³ ÿå ðàçäçÿë³öü íà øýðàã ÝËÅÌÅÍÒÀ¡ àöýíê³. Ãýòà äàçâàëÿå ïàçáåãíóöü ñóá'åêòûâ³çìó ïðû àöýíöû ³ äàå ñòóäýíòàì êðîïêó àäë³êó ïàä÷àñ àöýíê³ ¢ëàñíàé ïðàöû. Çà ðàñïðàöî¢êó ýëåìåíòࢠàöýíê³ àäêàçíà íàñòà¢í³ê , ÿê³ ñòâàðàå àðêóø àäçíàê (ãëÿäç³ í³æýé.)

              Ðàçàì ç ýëåìåíòàì³ àöýíê³ íàñòà¢í³ê ïàâ³íåí ïðûñëàöü ôàéë Word àáî HTML, ó ÿê³ì ¸í àï³øà çàäàäçåíàå ïðàêòûêàâàííå. Ãýòû ôàéë áóäçå ïàêàçàíû ñòóäýíòàì ó äðóãîé ôàçå ïðàêòûêàâàííÿ.

              -

              Íàñòà¢í³ê³ ìîãóöü ïàäðûõòàâàöü ó Word àáî HTML êîìïëåêñ ïàäîáíûõ ïðàêòûêàâàííÿ¢. ßíû ïàâ³ííû íå âåëüì³ àäðîçí³âàööà, ïàêîëüê³ áóäóöü àöýíüâàööà ïðû äàïàìîçå àäíûõ ³ òûõ æà àöýíà÷íûõ ýëåìåíòà¢. Àëå ïðûñûëàöü ïàäîáíûÿ ïðàêòûêàâàíí³ íåàáàâÿçêîâà, à äëÿ íåêàòîðûõ òûïࢠïðàö ãýòà ìîæà àêàçàööà ¢âîãóëå íåïàòðýáíûì.

            2. +

              Íàñòà¢í³ê³ ìîãóöü ïàäðûõòàâàöü ó Word àáî HTML êîìïëåêñ ïàäîáíûõ ïðàêòûêàâàííÿ¢. ßíû ïàâ³ííû íå âåëüì³ àäðîçí³âàööà, ïàêîëüê³ áóäóöü àöýíüâàööà ïðû äàïàìîçå àäíûõ ³ òûõ æà àöýíà÷íûõ ýëåìåíòà¢. Àëå ïðûñûëàöü ïàäîáíûÿ ïðàêòûêàâàíí³ íåàáàâÿçêîâà, à äëÿ íåêàòîðûõ òûïࢠïðàö ãýòà ìîæà àêàçàööà ¢âîãóëå íåïàòðýáíûì.

            3. Äàçâîë íà âûñûëêó ðàáîòû. Ïàñëÿ ¢âàõîäó ¢ ãýòó ôàçó, ïðàêòûêàâàíí³ ñòàíîâÿööà ¢æî íåäàñòóïíûì³ äëÿ ñòóäýíòà¢. Êàë³ âûêëàä÷ûê ðàñïðàöàâࢠðîçíûÿ ïðàêòûêàâàíí³, ñòóäýíòû ³õ áà÷àöü, ó ³íøûì âûïàäêó áà÷àöü òûÿ ñàìûÿ ïðàêòûêàâàíí³.

              Ïåðø ÷ûì ïåðàñëàöü ðàáîòó, ñòóäýíòû ïàâ³ííû çàïî¢í³öü ôàðìóëÿð àäçíàê. Òîëüê³ ïàñëÿ ÿãî çàïà¢íåííÿ ÿíû ìîãóöü âûñûëàöü ðàáîòó. ßíû òàêñàìà ìîãóöü âûïðà¢ëÿöü ðàáîòó íà ïàäñòàâå ¢ëàñíàé àöýíê³ , âûêàíàíàé ïàâîäëå ôàðìóëÿðà àäçíàê. Íàñòà¢í³ê áà÷ûöü óëàñíóþ àöýíêó ñòóäýíòà ³ ìîæà ÿå àöàí³öü. Ãýòà ³ ¸ñöü "ïàäâîéíû ôàðìóëÿð àöýíê³". Óðýøöå âûêëàä÷ûê ìîæà çàïàòðàáàâàöü àä ñòóäýíòà ïà¢òîðíàé âûñûëê³ ðàáîòû.

              -

              ßê òîëüê³ ñòóäýíò ïðûøëå ðàáîòó, âûêëàä÷ûê ìîæà àöàí³öü ÿå çíî¢. Êàë³ ñòóäýíòàì äàçâîëåíà øìàòðàçîâàå ïðàäñòà¢ëåííå ñâà³õ ðàáîò, íàñòà¢í³ê ïàâ³íåí âûçíà÷ûööà, ÿê áóäçå âûñòà¢ëÿööà êàí÷àòêîâàÿ àäçíàêà: ö³ ãýòà áóäçå íàéáîëüø âûñîêàÿ ç àòðûìàíûõ çà ãýòó ðàáîòó àäçíàê, ö³ ñÿðýäíÿÿ. Ãýòû ïàðàìåòð ìîæíà çìÿí³öü ó ëþáû ìîìàíò, ³ ãýòà àäðàçó áóäçå â³äàöü íà òàáë³öû àäçíàê.

            4. +

              ßê òîëüê³ ñòóäýíò ïðûøëå ðàáîòó, âûêëàä÷ûê ìîæà àöàí³öü ÿå çíî¢. Êàë³ ñòóäýíòàì äàçâîëåíà øìàòðàçîâàå ïðàäñòà¢ëåííå ñâà³õ ðàáîò, íàñòà¢í³ê ïàâ³íåí âûçíà÷ûööà, ÿê áóäçå âûñòà¢ëÿööà êàí÷àòêîâàÿ àäçíàêà: ö³ ãýòà áóäçå íàéáîëüø âûñîêàÿ ç àòðûìàíûõ çà ãýòó ðàáîòó àäçíàê, ö³ ñÿðýäíÿÿ. Ãýòû ïàðàìåòð ìîæíà çìÿí³öü ó ëþáû ìîìàíò, ³ ãýòà àäðàçó áóäçå â³äàöü íà òàáë³öû àäçíàê.

            5. Ïàñëÿ çàêàí÷ýííÿ òýðì³íó äàñûëê³ ðàáîò âûêëàä÷ûê ïåðàõîäç³öü ó ôàçó ³õ àöýíê³. Ó ãýòàé ôàçå, ïåðø ÷ûì ïåðàéñö³ äà íàñòóïíàãà ýòàïó, ¸í ïàâ³íåí öàëêàì çàêîí÷ûöü àöýíêó.

            6. @@ -23,4 +23,5 @@

              Êàí÷àòêîâàÿ àäçíàêà ñòóäýíòà – ãýòà ¢çâàæàíàÿ êàìá³íàöûÿ àäçíàê³, ÿêóþ ïàñòàâ³¢ âûêëàä÷ûê ³ ¢ëàñíàé àäçíàê³ ñòóäýíòà. Âàã³ ¢ñòàíà¢ë³âàþööà çâû÷àéíà íà 1. ßíû ìîãóöü çìÿíÿööà íà ñòàðîíöû "Àäì³í³ñòðàöûÿ" ó ëþáû ìîìàíò âûêàíàííÿ ïðàêòûêàâàííÿ ³ ãýòà àäðàçó áóäçå â³äàöü ó òàáë³öû àäçíàê.

              -

              Âûêëàä÷ûê ìîæà àäêðûöü ñòàðîíêó "Àäì³í³ñòðàöûÿ" ó ëþáû ìîìàíò. Íà ãýòàé ñòàðîíöû ìîæíà ¢áà÷ûöü, ÿêóþ âàðòàñöü ó äàäçåíû ìîìàíò ìàþöü âàã³, à òàêñàìà ìîæíà ÿå òàì çìÿí³öü. Ãýòà ñòàðîíêà ¢êëþ÷àå ñï³ñ äàñëàíûõ ðàáîò ³ óëàñíûÿ àäçíàê³, ÿê³ÿ ñàì³ ñàáå âûñòàâ³ë³ ñòóäýíòû. Âûêëàä÷ûê ìîæà êàðûñòàööà ãýòàé ñòàðîíêàé äëÿ ïåðøàñíàé ³ ïà¢òîðíàé àöýíê³ ÿê ðàáîò, òàê ³ àäçíàê, ÿê³ÿ ñàáå âûñòàâ³ë³ ñòóäýíòû, âûäàëåííÿ ðàáîò ³ ãýòûõ àäçíàê, à òàêñàìà ñà÷ûöü çà ïîñïåõàì³ ¢ âûêàíàíí³ ãýòàãà ïðàêòûêàâàííÿ.

              \ No newline at end of file +

              Âûêëàä÷ûê ìîæà àäêðûöü ñòàðîíêó "Àäì³í³ñòðàöûÿ" ó ëþáû ìîìàíò. Íà ãýòàé ñòàðîíöû ìîæíà ¢áà÷ûöü, ÿêóþ âàðòàñöü ó äàäçåíû ìîìàíò ìàþöü âàã³, à òàêñàìà ìîæíà ÿå òàì çìÿí³öü. Ãýòà ñòàðîíêà ¢êëþ÷àå ñï³ñ äàñëàíûõ ðàáîò ³ óëàñíûÿ àäçíàê³, ÿê³ÿ ñàì³ ñàáå âûñòàâ³ë³ ñòóäýíòû. Âûêëàä÷ûê ìîæà êàðûñòàööà ãýòàé ñòàðîíêàé äëÿ ïåðøàñíàé ³ ïà¢òîðíàé àöýíê³ ÿê ðàáîò, òàê ³ àäçíàê, ÿê³ÿ ñàáå âûñòàâ³ë³ ñòóäýíòû, âûäàëåííÿ ðàáîò ³ ãýòûõ àäçíàê, à òàêñàìà ñà÷ûöü çà ïîñïåõàì³ ¢ âûêàíàíí³ ãýòàãà ïðàêòûêàâàííÿ.

              + diff --git a/lang/be/help/exercise/mods.html b/lang/be/help/exercise/mods.html index 49b8ff1fe0b..2aae8db01e4 100644 --- a/lang/be/help/exercise/mods.html +++ b/lang/be/help/exercise/mods.html @@ -1,5 +1,6 @@ - Ïðàêòûêàâàííå äëÿ ñàìààöýíê³ + Ïðàêòûêàâàííå äëÿ ñàìààöýíê³ -
              +

                Ïðàêòûêàâàííå äëÿ ñàìààöýíê³ – ãýòà çâû÷àéíà íåñêëàäàíàå çàäàííå, àëå ÿíî ïðàäñòà¢ëÿå íåìàëûÿ ìàã÷ûìàñö³. Çìåñòàì ãýòàãà ïðàêòûêàâàííÿ çâû÷àéíà ¸ñöü íåéêàå ïðàêòû÷íàå çàäàííå. Ãýòà ìîæà áûöü ýñý, ðàïàðò, ïàäðûõòî¢êà ïðýçåíòàöû³ àáî êàëüêóëÿöû³. Ïàñëÿ âûêàíàííÿ ïðàêòûêàâàííÿ ñòóäýíò ïàâ³íåí ñàì àöàí³öü ñâàþ ðàáîòó. Ïàñëÿ ñààöýíê³ ³ ïåðàñûëê³ ðàáîòû, ÿå àöýíüâàå âûêëàä÷ûê: ÿê ñàìó ðàáîòó, òàê ³ àäçíàêó, âûñòà¢ëåíóþ ñòóäýíòàì ñàìîìó ñàáå. Âûêëàä÷ûê ìîæà ïðàïàíàâàöü ñòóäýíòó ïåðàðàá³öü ðàáîòó ³ ïðûñëàöü çíî¢ ÿå ïàëåïøàíû âàðûÿíò.

                -
              \ No newline at end of file +
          + diff --git a/lang/be/help/exercise/moreinfo.html b/lang/be/help/exercise/moreinfo.html index e78534bb129..d15bf593b4d 100644 --- a/lang/be/help/exercise/moreinfo.html +++ b/lang/be/help/exercise/moreinfo.html @@ -1,11 +1,11 @@ - Ïðàêòûêàâàíí³ ç óëàñíàé àöýíêàé ïðàöû + Ïðàêòûêàâàíí³ ç óëàñíàé àöýíêàé ïðàöû

          Ïðàêòûêàâàííå ç óëàñíàé àöýíêàé ïðàöû – ãýòà íåñêëàäàíû ³ äàþ÷û âÿë³ê³ÿ ìàã÷ûìàñö³ ³íñòðóìåíò. Ó òàê³ì ïðàêòûêàâàíí³ íàñòà¢í³ê ïðàïàíóå ñòóäýíòàì âûêàíàöü ïý¢íóþ ïðàêòû÷íóþ ïðàöó, íàïðûêëàä íàï³ñàöü ýñý, ðàïàðò, ïðýçåíòàöûþ ö³ êàëüêóëÿöûþ. Ïàñëÿ âûêàíàííÿ òàêîé ïðàöû ñòóäýíò íàéïåðø ïàâ³íåí àöàí³öü ÿå ñàì ïåðàä òûì, âûøëå ÿå âûêëàä÷ûêó äëÿ ÿãî àöýíê³. Äçÿêóþ÷û ãýòàìó, íàñòà¢í³ê çìîæà àöàí³öü ÿê ñàìó ðàáîòó òàê ³ àäçíàêó, ÿêóþ âûñòàâ³¢ ñàáå ñòóäýíò. Ó ÿêàñö³ àäêàçó íàñòà¢í³ê ìîæà ïàñëàöü ñòóäýíòó êàìåíòàð, ÿê³ äàòû÷ûöü ÿãîíàé ðàáîòû ³ ïðàïàíàâàöü, íàïðûêëàä, âûïðàâ³öü ÿå ³ ïðûñëàöü ïà¢òîðíà.

          Ïðàêòûêàâàííå ïà÷ûíàåööà àä:

          1. Ñòâàðýííÿ äàêóìåíòó Word àáî HTML, ÿê³ äàå çàäàííå ñòóäýíòàì. Ãýòû ôàéë ïðûñûëàå íà ñýðâåð íàñòà¢í³ê.
          2. -
          3. Óäàêëàäíåííÿ ôàðìóëÿðà àäçíàê ïðàç âûáàð àäïàâåäíûõ ïàðàìåòðࢠ³ çàï³ñâàííå àäïàâåäíûõ ýëåìåíòà¢. Ãýòûì ôàðìóëÿðàì áóäóöü êàðûñòàööà ÿê âûêëàä÷ûê³, òàê ³ ñòóäýíòû. Êàë³ õî÷àø âåäàöü áîëüø äàêëàäíà - çàãëÿí³ ¢ ôàéëû, ÿê³ÿ äàòû÷àöü äàïàìîã³ ïðû àöýíüâàíí³.

          +
        8. Óäàêëàäíåííÿ ôàðìóëÿðà àäçíàê ïðàç âûáàð àäïàâåäíûõ ïàðàìåòðࢠ³ çàï³ñâàííå àäïàâåäíûõ ýëåìåíòà¢. Ãýòûì ôàðìóëÿðàì áóäóöü êàðûñòàööà ÿê âûêëàä÷ûê³, òàê ³ ñòóäýíòû. Êàë³ õî÷àø âåäàöü áîëüø äàêëàäíà - çàãëÿí³ ¢ ôàéëû, ÿê³ÿ äàòû÷àöü äàïàìîã³ ïðû àöýíüâàíí³

        Ó áîëüøûõ ãðóïàõ âûêëàä÷ûê ìîæà ñòâàðûöü íåêàëüê³ âàðûÿíòࢠïðàêòûêàâàííÿ, êàá çàäàíí³ ñòóäýíòࢠêðûõó àäðîçí³âàë³ñÿ. Òàê³ÿ ïðàêòûêàâàíí³ ìîæíà ñòâàðûöü ó Moodle ³ ÿíû áóäóöü ðàçàñëàíûÿ ñòóäýíòàì ìåòàäàì æàðàá'¸¢ê³. Ó ìåæàõ ãðóïû ÿíû áóäóöü ìåöü àäíîëüêàâóþ ñêëàäàíàñöü. Âàðûÿíòû íå ïàâ³ííû çàíàäòà àäðîçí³âàööà, ïàêîëüê³ ÿíû áóäóöü àöýíüâàööà ç äàïàìîãàé àäíàãî ³ òàãî æ ôàðìóëÿðà àäçíàê.

        @@ -21,4 +21,5 @@

        Ó âûïàäêàõ, êàë³ âûêëàä÷ûê äàçâàëÿå ïðûñûëàöü ðàáîòó íåêàëüê³ ðàçî¢, ¸í ïàâ³íåí ïðûíÿöü ðàøýííå, ÿê àöýíüâàöü òàê³ÿ ðàáîòû. ¨ñöü äçâå ìàã÷ûìàñö³ ¢ òàê³ì âûïàäêó: âûñòà¢ëÿåööà íàéëåïøàÿ àäçíàêà ç óñ³õ âûñòà¢ëåíûõ àáî ñÿðýäíÿÿ . Ãýòà âûáàð ìîæíà çðàá³öü ó ëþáû ìîìàíò ó ïðàöýñå âûêàíàííÿ ïðàêòûêàâàííÿ.

        -

        Ó êàíöû ñòóäýíòû ìîãóöü óáà÷ûöü òàáë³öó íàéëåïøûõ ðàáîò. Ãýòà ñï³ñ óñ³õ ïðûñëàíûõ ðàáîò, àëå íàéëåïøûÿ ðàáîòû áóäóöü çíàõîäç³ööà íà ïà÷àòêó ãýòàãà ñï³ñó. Ó âûïàäêó, êàë³ íåêàòîðûÿ ñòóäýíòû ïðûñûëàë³ ðàáîòó íåêàëüê³ ðàçî¢, òóò áóäóöü ïàêàçàíû íàéëåïøûÿ.

        \ No newline at end of file +

        Ó êàíöû ñòóäýíòû ìîãóöü óáà÷ûöü òàáë³öó íàéëåïøûõ ðàáîò. Ãýòà ñï³ñ óñ³õ ïðûñëàíûõ ðàáîò, àëå íàéëåïøûÿ ðàáîòû áóäóöü çíàõîäç³ööà íà ïà÷àòêó ãýòàãà ñï³ñó. Ó âûïàäêó, êàë³ íåêàòîðûÿ ñòóäýíòû ïðûñûëàë³ ðàáîòó íåêàëüê³ ðàçî¢, òóò áóäóöü ïàêàçàíû íàéëåïøûÿ.

        + diff --git a/lang/be/help/exercise/nelements.html b/lang/be/help/exercise/nelements.html index f1bfb67aa4b..03accddd3d9 100644 --- a/lang/be/help/exercise/nelements.html +++ b/lang/be/help/exercise/nelements.html @@ -1,7 +1,7 @@ -

        Êîëüêàñöü ýëåìåíòࢠðàáîòû

        +

        Êîëüêàñöü êàìåíòàðî¢, ñêëàäàþ÷ûõ, íåàáõîäíûõ ýëåìåíòࢠàáî êðûòýðûÿëüíûõ ñêàçà¢

        -

        Çàï³ñàíû íà ãýòàé ñòàðîíöû ë³ê àêðýñë³âàå êîëüêàñöü ñêëàäí³êࢠçàäàííÿ. ²õ òûï çàëåæûöü àä ïðûíÿòàé ñòðàòýã³³ àöýíê³. Ãýòà ìîæà áûöü êîëüêàñöü êàìåíòàðî¢, ñêëàäàþ÷ûõ çàäàííÿ, íåàáõîäíûõ ýëåìåíòà¢, àáî êîëüêàñöü êðûòýðûÿëüíûõ ñêàçà¢. Òûïîâàå çàäàííå ïàâ³ííà ìåöü àä ïÿö³ äà ïÿòíàööàö³ ñêëàäàþ÷ûõ. Êîëüêàñöü ñêëàäàþ÷ûõ çàëåæûöü àä ñêëàäàíàñö³ çàäàííÿ.

        +

        Çàï³ñàíû íà ãýòàé ñòàðîíöû ë³ê àêðýñë³âàå êîëüêàñöü ñêëàäàþ÷ûõ çàäàííÿ. ²õ òûï çàëåæûöü àä ïðûíÿòàé ñòðàòýã³³ àöýíê³. Ãýòà ìîæà áûöü êîëüêàñöü êàìåíòàðî¢, ñêëàäàþ÷ûõ çàäàííÿ, íåàáõîäíûõ ýëåìåíòà¢, àáî êîëüêàñöü êðûòýðûÿëüíûõ ñêàçà¢. Òûïîâàå çàäàííå ïàâ³ííà ìåöü àä ïÿö³ äà ïÿòíàööàö³ ñêëàäàþ÷ûõ. Êîëüêàñöü ñêëàäàþ÷ûõ çàëåæûöü àä ñêëàäàíàñö³ çàäàííÿ.

        Ó ôàçå ñòâàðýííÿ ïðàêòûêàâàííÿ ìîæíà çìåíøûöü àáî ïàâÿë³÷ûöü êîëüêàñöü ýëåìåíòà¢, ÿê³ÿ áóäóöü ïàêàçàíûÿ. Ïàâåë³÷ýííå âûêë³÷à ïàêàç áîëüøàé êîëüêàñö³ ïóñòûõ ýëåìåíòࢠíà ñòàðîíöû.

        -

        Óñå ñïîñàáû àöýíüâàííÿ ìàþöü òàêñàìà ïàë³, ïðûçíà÷àíûÿ äëÿ àãóëüíàãà êàìåíòàðà. Êàë³ ïðûíÿòà ñòðàòýã³ÿ "Áåç àöýíüâàííÿ", çàï³ñàíû ë³ê àêðýñë³âàå êîëüêàñöü äàäàòêîâûõ ïà븢 äëÿ êàìåíòàðà. Êàë³ áóäçå çðîáëåíà ¢ñòàíî¢êà íà íóëü, òî àöýíêà áóäçå ¢êëþ÷àöü òîëüê³ àãóëüíû êàìåíòàð.

        +

        Óñå ñïîñàáû àöýíüâàííÿ ìàþöü òàêñàìà ïàë³, ïðûçíà÷àíûÿ äëÿ àãóëüíàãà êàìåíòàðà. Êàë³ ïðûíÿòà ñòðàòýã³ÿ "Áåç àöýíüâàííÿ", çàï³ñàíû ë³ê àêðýñë³âàå êîëüêàñöü äàäàòêîâûõ ïà븢 äëÿ êàìåíòàðà. Êàë³ áóäçå çðîáëåíà ¢ñòàíî¢êà íà íóëü, òî àöýíêà áóäçå ¢êëþ÷àöü òîëüê³ àãóëüíû êàìåíòàð.

        diff --git a/lang/be/help/exercise/submissionofdescriptions.html b/lang/be/help/exercise/submissionofdescriptions.html index ff459213cbb..be610fd263d 100644 --- a/lang/be/help/exercise/submissionofdescriptions.html +++ b/lang/be/help/exercise/submissionofdescriptions.html @@ -2,4 +2,4 @@

        Âûêëàä÷ûê ïàâ³íåí ïåðàñëàöü õàöÿ á àäíî àï³ñàííå çàäàííÿ. Ãýòà àï³ñàííå ìîæà áûöü ïðàäñòà¢ëåíà ÿê äàêóìåíò Word àáî ¢ ôàéëå HTML àáî ³íøûì ôàéëå, ÿê³ ìîæíà ïðà÷ûòàöü ïðàç ïðàãëÿä. Ãýòû ôàéë áóäçå äàñòóïíû ñòóäýíòàì i ïàâ³ííû óêëþ÷àöü ó ñÿáå äàêëàäíàå àï³ñàííå, ÿêîå äàòû÷ûöü âûêàíàííÿ çàäàííÿ.

        -

        Âûêëàä÷ûê ìîæà ïåðàñëàöü áîëüø, ÷ûì àäíî àï³ñàííå çàäàííÿ. Òàäû ñ³ñòýìà ìåòàäàì æàðàá'¸¢ê³ áóäçå ïàêàçâàöü ðîçíûÿ âàðûÿíòû àï³ñàííÿ àäíàãî ³ òàãî æ çàäàííÿ. Àäíàê ãýòûÿ âàðûÿíòû ïàâ³ííû áûöü íàñòîëüê³ ïàäîáíûÿ, êàá ðîçí³öà ïàì³æ ³ì³ íå ¢ñêëàäíÿëà àöýíüâàííå ðàáîòû íà ôàðìóëÿðû àäçíàê.

        \ No newline at end of file +

        Âûêëàä÷ûê ìîæà ïåðàñëàöü áîëüø, ÷ûì àäíî àï³ñàííå çàäàííÿ. Òàäû ñ³ñòýìà ìåòàäàì æàðàá'¸¢ê³ áóäçå ïàêàçâàöü ðîçíûÿ âàðûÿíòû àï³ñàííÿ àäíàãî ³ òàãî æ çàäàííÿ. Àäíàê ãýòûÿ âàðûÿíòû ïàâ³ííû áûöü íàñòîëüê³ ïàäîáíûÿ, êàá ðîçí³öà ïàì³æ ³ì³ íå ¢ñêëàäíÿëà àöýíüâàííå ïðàöû íà ôàðìóëÿðû àäçíàê.

        diff --git a/lang/be/help/exercise/takeownership.html b/lang/be/help/exercise/takeownership.html index c9494f17d81..60d3ec332d4 100644 --- a/lang/be/help/exercise/takeownership.html +++ b/lang/be/help/exercise/takeownership.html @@ -1,4 +1,5 @@

        Çàáÿðû íà êàíòðîëü ïðàêòûêàâàíí³

        -

        Ãýòàÿ ñïàñûëêà äàçâàëÿå âûêëàä÷ûêó ñòàöü óëàäàëüí³êàì áÿãó÷àé ñóêóïíàñö³ íàáîðó ïàäï³ñàíûõ ïðàêòûêàâàííÿ¢. Âàì ãýòà ñïàòðýá³ööà ¢ âûïàäêó, êàë³ Âû ³ìïàðòàâàë³ ïðàêòûêàâàííå ç êîï³³ ³íøàãà êóðñó. Óêàçàíàÿ ñïàñûëêà äàçâàëÿå âàì "çàÿâ³öü ïðàâû" íà ¢âåñü íàáîð ïðàêòûêàâàííÿ¢. Ó áÿãó÷ûì êóðñå ãýòûÿ ³ìïàðòàâàíûÿ ïàäï³ñàíûÿ íàáîðû ìîãóöü íàëåæàöü ëþáîé àñîáå, íàâàò ñòóäýíòó. Ïàäîáíàÿ ïðàöýäóðà äàçâàëÿå ïàçáåãíóöü ðîçíàãà êøòàëòó ïðàáëåì, øòî ìîãóöü óçí³êíóöü ç ãýòàé ïðû÷ûíû, ³ äàïàìàãàå çðàá³öü Âàñ óëàñí³êàì ïðàêòûêàâàííÿ¢.

        +

        Ãýòàÿ ñïàñûëêà äàçâàëÿå âûêëàä÷ûêó ñòàöü óëàäàëüí³êàì áÿãó÷àé ñóêóïíàñö³ íàáîðó ïàäï³ñàíûõ ïðàêòûêàâàííÿ¢. Âàì ãýòà ñïàòðýá³ööà ¢ âûïàäêó, êàë³ Âû ³ìïàðòàâàë³ ïðàêòûêàâàííå ç êîï³³ ³íøàãà êóðñó. Óêàçàíàÿ ñïàñûëêà äàçâàëÿå âàì "çàÿâ³öü ïðàâû" + íà ¢âåñü íàáîð ïðàêòûêàâàííÿ¢. Ó áÿãó÷ûì êóðñå ãýòûÿ ³ìïàðòàâàíûÿ ïàäï³ñàíûÿ íàáîðû ìîãóöü íàëåæàöü ëþáîé àñîáå, íàâàò ñòóäýíòó. Ïàäîáíàÿ ïðàöýäóðà äàçâàëÿå ïàçáåãíóöü ðîçíàãà êøòàëòó ïðàáëåì, øòî ìîãóöü óçí³êíóöü ç ãýòàé ïðû÷ûíû, ³ äàïàìàãàå çðàá³öü âàñ óëàñí³êàì ïðàêòûêàâàííÿ¢.

        Çà âûêëþ÷ýííåì óëàäàííÿ, ñàì³ ïàäï³ñàíûÿ íàáîðû íå çàêðàíàþööà ãýòàé ïðàöýäóðàé.

        \ No newline at end of file diff --git a/lang/be/help/forum/allowdiscussions.html b/lang/be/help/forum/allowdiscussions.html index 93126b73657..837ef5b4bf9 100644 --- a/lang/be/help/forum/allowdiscussions.html +++ b/lang/be/help/forum/allowdiscussions.html @@ -1,10 +1,11 @@ -

        Äàçâîëû äëÿ íîâûõ ïàâåäàìëåííÿ¢

        +

        Äàçâîëû äëÿ íîâûõ ïàâåäàìëåííÿ¢

        -

        Ó ãýòûì ïîë³ Âû ìîæàöå ¢âåñö³ àáìåæàâàíí³ äëÿ ïàâåäàìëåííÿ¢ ñòóäýíòࢠó ôîðóìå.

        +

        Ó ãýòûì ïîë³ Âû ìîæàöå ¢âåñö³ àáìåæàâàíí³ äëÿ ïàâåäàìëåííÿ¢ ñòóäýíòࢠó ôîðóìå. -

        Äëÿ áîëüøàñö³ ôîðóìࢠÂû, íàéõóò÷ýé, áóäçåöå âûêàðûñòî¢âàööà ïåðøàÿ îïöûÿ, êàá äàçâîë³öü ñòóäýíòàì ðàñïà÷ûíàöü íîâûÿ òýìû (threads), ³ äàâàöü àäêàçû íà ³íøûÿ ïàâåäàìëåíí³.

        +

        Äëÿ áîëüøàñö³ ôîðóìࢠÂû, íàéõóò÷ýé, áóäçåöå âûêàðûñòî¢âàööà ïåðøàÿ îïöûÿ, êàá äàçâîë³öü ñòóäýíòàì ðàñïà÷ûíàöü íîâûÿ òýìû (threads), ³ äàâàöü àäêàçû íà ³íøûÿ ïàâåäàìëåíí³. -

        ×àñàì áûâàå êàðûñíà âûêàðûñòàöü òðýööþ îïöûþ. Ïðûêëàäàì, ó ôîðóìå íàâ³íà¢, ÿê³ ¢ âûí³êó áóäçå àäëþñòðàâàíû íà ïåðøàé ñòàðîíöû êóðñà.

        +

        ×àñàì áûâàå êàðûñíà âûêàðûñòàöü òðýööþ îïöûþ. Ïðûêëàäàì, ó ôîðóìå íàâ³íà¢, ÿê³ ¢ âûí³êó áóäçå àäëþñòðàâàíû íà ïåðøàé ñòàðîíöû êóðñà. -

        Ìàã÷ûìà ¢çí³êíå ñ³òóàöûÿ, êàë³ Âàì ñïàòðýá³ööà, êàá òîëüê³ íàñòà¢í³ê³ ìàãë³ ðàñïà÷ûíàöü íîâûÿ òýìû, à âó÷í³ - òîëüê³ àäêàçâàöü. Ó ãýòûì âûïàäêó äà ìåñöà àáðàöü äðóãóþ îïöûþ - "Çàïûòâàööà íåëüãà, àäêàçâàöü ìîæíà".

        +

        Ìàã÷ûìà ¢çí³êíå ñ³òóàöûÿ, êàë³ Âàì ñïàòðýá³ööà, êàá òîëüê³ íàñòà¢í³ê³ ìàãë³ ðàñïà÷ûíàöü íîâûÿ òýìû, à âó÷í³ - òîëüê³ àäêàçâàöü. + Ó ãýòûì âûïàäêó äà ìåñöà àáðàöü äðóãóþ îïöûþ - "Çàïûòâàööà íåëüãà, àäêàçâàöü ìîæíà". diff --git a/lang/be/help/forum/attachment.html b/lang/be/help/forum/attachment.html index 9d65472c560..62be0bcaa99 100644 --- a/lang/be/help/forum/attachment.html +++ b/lang/be/help/forum/attachment.html @@ -1,5 +1,5 @@ -

        Äàëó÷ê³ äà ïàâåäàìëåííÿ¢

        -

        Âû ìîæàöå äàëó÷ûöü àäç³í ôàéë(êàðö³íêó, Word-äàêóìåíò...) äà ñâàéãî ïàâåäàìëåííÿ ¢ ôîðóì. Ôàéë áóäçå çàõî¢âàööà íà ñýðâåðû ðàçàì ç Âàøûì ïàâåäàìëåííåì.

        -

        Ôàéë ìîæà áûöü ëþáîãà òûïó, àëå ìû ðà³ì âûêàðûñòî¢âàöü ñòàíäàðòíûÿ 3-õ ë³òàðíûÿ ïàøûðýíí³ äëÿ ôàéëࢠ(íàïðûêëàä, .doc äëÿ Word-äàêóìåíòà¢, .jpg àáî .png äëÿ êàðö³íàê...), äëÿ òàãî, êàá ôàéëû áûëî ïðàñöåé ³äýíòûô³êàâàöü ³íøûì.

        -

        Êàë³ Âû çìÿí³ë³ ñâภïàâåäàìëåííå ³ äàëó÷ûë³ íîâû ôàéë, ïàïÿðýäí³ ôàéë áóäçå çàìåíåíû.

        -

        Êàë³ Âû àäðýäàãàâàë³ ïàâåäàìëåííå ³ ïàê³íóë³ ïîëå ç äàëó÷àíûì ôàéëàì ïóñòûì, ïàïÿðýäíÿÿ âåðñ³ÿ ôàéëà áóäçå âûêàðûñòî¢âàööà ç ïàâåäàìëåííåì.

        \ No newline at end of file +

        Ôàéëû äà ïàâåäàìëåííÿ¢

        +

        Âû ìîæàöå äàëó÷ûöü àäç³í ôàéë(êàðö³íêó, Word-äàêóìåíò...) äà ñâàéãî ïàâåäàìëåííÿ ¢ ôîðóì. Ôàéë áóäçå çàõî¢âàööà íà ñýðâåðû ðàçàì ç Âàøûì ïàâåäàìëåííåì. +

        Ôàéë ìîæà áûöü ëþáîãà òûïó, àëå ìû ðà³ì âûêàðûñòî¢âàöü ñòàíäàðòíûÿ 3-õ ë³òàðíûÿ ïàøûðýíí³ äëÿ ôàéëࢠ(íàïðûêëàä, .doc äëÿ Word-äàêóìåíòà¢, .jpg àáî .png äëÿ êàðö³íàê...), äëÿ òàãî, êàá ôàéëû áûëî ïðàñöåé ³äýíòûô³êàâàöü ³íøûì. +

        Êàë³ Âû çìÿí³ë³ ñâภïàâåäàìëåííå ³ äàëó÷ûë³ íîâû ôàéë, ïàïÿðýäí³ ôàéë áóäçå çàìåíåíû. +

        Êàë³ Âû àäðýäàãàâàë³ ïàâåäàìëåííå ³ ïàê³íóë³ ïîëå ç äàëó÷àíûì ôàéëàì ïóñòûì, ïàïÿðýäíÿÿ âåðñ³ÿ ôàéëà áóäçå âûêàðûñòî¢âàööà ç ïàâåäàìëåííåì. \ No newline at end of file diff --git a/lang/be/help/forum/forumtype.html b/lang/be/help/forum/forumtype.html index b3455bdcacb..a8e0235542c 100644 --- a/lang/be/help/forum/forumtype.html +++ b/lang/be/help/forum/forumtype.html @@ -1,12 +1,12 @@ -

        Òûïû ôîðóìà¢

        +

        Ôîðóìû

        -

        Âû ìîæàöå âûáðàöü òûï ôîðóìó:

        +

        Âû ìîæàöå âûáðàöü òûï ôîðóìó: -

        Ïðîñòàå àáìåðêàâàííå - ñêëàäàåööà ç àäíîé òýìû. -Çâû÷àéíà âûêàðûñòî¢âàåööà äëÿ òàãî, êàá ñôàêóñàâàöü àáìåðêàâàíí³ íà àäíîé òýìå.

        +

        Ïðîñòàå àáìåðêàâàííå - ñêëàäàåööà ç àäíîé òýìû. +Çâû÷àéíà âûêàðûñòî¢âàåööà äëÿ òàãî, êàá ñôàêóñàâàöü àáìåðêàâàíí³ íà àäíîé òýìå. -

        Ñòàíäàðòíû àãóëüíàìýòàâû ôîðóì - àäêðûòû ôîðóì ó ÿê³ì êîæíû ìîæà ðàñïà÷àöü íîâóþ òýìó ¢ ëþáû ÷àñ.

        +

        Ñòàíäàðòíû àãóëüíàìýòàâû ôîðóì - àäêðûòû ôîðóì ó ÿê³ì êîæíû ìîæà ðàñïà÷àöü íîâóþ òýìó ¢ ëþáû ÷àñ. -

        Êîæíû äàñûëàå àäíó òýìó - ÷àñàì áûâàå êàðûñíà àáìÿæî¢âàöü êîëüêàñöü òýìà¢, øòî ñòâàðàþööà êàðûñòàëüí³êàì³.

        +

        Êîæíû äàñûëàå àäíó òýìó - ÷àñàì áûâàå êàðûñíà àáìÿæî¢âàöü êîëüêàñöü òýìà¢, øòî ñòâàðàþööà êàðûñòàëüí³êàì³. -

        Ïëàíóåööà äàäàöü ³íøûÿ òûïû ôîðóìà¢.

        +

        Ïëàíóåööà äàäàöü ³íøûÿ òûïû ôîðóìà¢. diff --git a/lang/be/help/forum/index.html b/lang/be/help/forum/index.html deleted file mode 100644 index 474be57d440..00000000000 --- a/lang/be/help/forum/index.html +++ /dev/null @@ -1,11 +0,0 @@ -

        Ôîðóìû

        - diff --git a/lang/be/help/forum/maxattachmentsize.html b/lang/be/help/forum/maxattachmentsize.html deleted file mode 100644 index 5c7c595149e..00000000000 --- a/lang/be/help/forum/maxattachmentsize.html +++ /dev/null @@ -1,5 +0,0 @@ -

        Ìàêñ³ìàëüíû ïàìåð äàëó÷ê³

        - -

        Ìàêñ³ìàëüíû ïàìåð äàëó÷ê³ àêðýñë³âàå òîé, õòî àäêðûâàå ôîðóì.

        - -

        ×àñàì óäàåööà ïåðàñëàöü ôàéë áîëüøû, ÷ûì óñòàíî¢ëåíû ãýòûì ïàðàìåòðàì, àäíàê æà ãýòû ôàéë íå áóäçå çàõàâàíû íà ñýðâåðû ³, õóò÷ýé çà ¢ñ¸, áóäçå ç’ÿ¢ëÿööà ïàâåäàìëåííå ïðà ïàìûëêó.

        \ No newline at end of file diff --git a/lang/be/help/forum/mods.html b/lang/be/help/forum/mods.html deleted file mode 100644 index bc33d92c219..00000000000 --- a/lang/be/help/forum/mods.html +++ /dev/null @@ -1,5 +0,0 @@ -

         Ôîðóì

        -
        -

        Ãýòû ìîäóëü ìîæà ñòàööà íàéáîëüø âàæíûì – ìåíàâ³òà òóò àäáûâàåööà áîëüøàñöü äûñêóñ³é. Ôîðóì ìîæà ìåöü ðîçíóþ ñòðóêòóðó ³ äàâàöü ìàã÷ûìàñöü àöýíê³ êîæíàãà ïàâåäàìëåííÿ ÿãî ¢äçåëüí³êàì³. Ïàâåäàìëåíí³ ìîãóöü ïðàãëÿäàööà ¢ ðîçíûõ ôàðìàòàõ ³ ¢êëþ÷àöü äàäàòê³. Óäçåëüí³ê³, ÿê³ÿ ç’ÿ¢ëÿþööà ïàäï³ñ÷ûêàì³ ôîðóìó àòðûìàþöü ïðàç ýëåêòðîííóþ ïîøòó êîæíàå íîâàå ïàâåäàìëåííå. Âÿäî¢öà ìîæà íàâÿçàöü ïàäï³ñêó ¢ñ³ì óäçåëüí³êàì.

        - -
        diff --git a/lang/be/help/forum/ratings.html b/lang/be/help/forum/ratings.html index b817671ec8e..768c1554e56 100644 --- a/lang/be/help/forum/ratings.html +++ b/lang/be/help/forum/ratings.html @@ -1,22 +1,22 @@ -

        Ïàâåäàìëåíí³ ìîãóöü àöýíüâàööà, êàðûñòàþ÷ûñÿ øêàëîé, ÿêàÿ çàñíàâàíà íà òýîðû³ àá'åêòû¢íàãà ³ ñóá'åêòû¢íàãà ïàçíàííÿ.

        +Ïàâåäàìëåíí³ ìîãóöü àöýíüâàööà, êàðûñòàþ÷ûñÿ øêàëîé, ÿêàÿ çàñíàâàíà íà òýîðû³ àá'åêòû¢íàãà ³ ñóá'åêòû¢íàãà ïàçíàííÿ. -

        Ãýòàÿ òýîðûÿ ìîæà äàïàìàã÷û Âàì ç³ðíóöü íà ñòàñóíê³ ïàì³æ ëþäçüì³ ïà-íîâàìó. ßíà àï³ñâàå äâà ðîçíûÿ øëÿõ³, ïà ÿê³õ ìû ìîæàì àöýíüâàöü ³ âûâó÷àöü ðîçíûÿ àá'åêòû.

        +Ãýòàÿ òýîðûÿ ìîæà äàïàìàã÷û Âàì ç³ðíóöü íà ñòàñóíê³ ïàì³æ ëþäçüì³ ïà-íîâàìó. ßíà àï³ñâàå äâà ðîçíûÿ øëÿõ³, ïà ÿê³õ ìû ìîæàì àöýíüâàöü ³ âûâó÷àöü ðîçíûÿ àá'åêòû. -

        Êîæíû ç íàñ ìîæà âûêàðûñòàöü àáîäâà ãýòûÿ ìåòàäû ¢ ðîçíûõ ñ³òóàöûÿõ ³ ¢ ðîçíûõ ïðàïîðöûÿõ. Óÿâ³ì ó ÿêàñö³ ïðûêëàäó äâóõ ëþäçåé, ïåðøû áîëüø àá'åêòû¢íû äàñëåä÷ûê (ßí), à äðóãàÿ áîëüø ñóá'åêòû¢íàÿ (Ðóæàíà).

        +Êîæíû ç íàñ ìîæà âûêàðûñòàöü àáîäâà ãýòûÿ ìåòàäû ¢ ðîçíûõ ñ³òóàöûÿõ ³ ¢ ðîçíûõ ïðàïîðöûÿõ. Óÿâ³ì ó ÿêàñö³ ïðûêëàäó äâóõ ëþäçåé, ïåðøû áîëüø àá'åêòû¢íû äàñëåä÷ûê (ßí), à äðóãàÿ áîëüø ñóá'åêòû¢íàÿ (Ðóæàíà).
          -
        • ßíó äàñïàäîáû çàñòàâàööà ïà ìàã÷ûìàñö³ áîëüø "àá'åêòû¢íûì", íå äàëó÷àþ÷û ñâàå ïà÷óöö³ ³ ýìîöû³. Ïàä÷àñ äûñêóñ³³ ç ³íøûì³ ëþäçüì³, ÿê³ÿ ìàþöü àäðîçíóþ äóìêó, ÿìó ïàäàáàåööà àäñòîéâàöü ñâîé ïóíêò ãëåäæàííÿ, êàðûñòàþ÷ûñÿ ëîã³êàé, äëÿ çíàõîäæàííÿ ïðàë³êࢠó ðàçâàãàõ àïàíåíòà¢. ¨í ç êðûòûêàé ñòàâ³ööà äà íîâûõ ³äýÿ¢, ïàêóëü ÿíû íå ñòàíóöü äàêàçàíûì³ ôàêòàì³ ç êðûí³öà¢, ÿê³ÿ çàñëóæâàþöü äàâåðó: êí³ã, ïàâàæàíûõ íàñòà¢í³êࢠàáî ÿãîíàãà àñàá³ñòàãà äîñâåäó. ßí - ÿðê³ ïðûêëàä àá'åêòû¢íàãà äàñëåä÷ûêà. +
        • ßíó äàñïàäîáû çàñòàâàööà ïà ìàã÷ûìàñö³ áîëüø "àá'åêòû¢íûì", íå äàëó÷àþ÷û ñâàå ïà÷óöö³ ³ ýìîöû³. Ïàä÷àñ äûñêóñ³³ ç ³íøûì³ ëþäçüì³, ÿê³ÿ ìàþöü àäðîçíóþ äóìêó, ÿìó ïàäàáàåööà àäñòîéâàöü ñâîé ïóíêò ãëåäæàííÿ, êàðûñòàþ÷ûñÿ ëîã³êàé, äëÿ çíàõîäæàííÿ ïðàë³êࢠó ðàçâàãàõ àïàíåíòà¢. ¨í ç êðûòûêàé ñòàâ³ööà äà íîâûõ ³äýÿ¢, ïàêóëü ÿíû íå ñòàíóöü äàêàçàíûì³ ôàêòàì³ ç êðûí³öà¢, ÿê³ÿ çàñëóæâàþöü äàâåðó: êí³ã, ïàâàæàíûõ íàñòà¢í³êࢠàáî ÿãîíàãà àñàá³ñòàãà äîñâåäó. ßí - ÿðê³ ïðûêëàä àá'åêòû¢íàãà äàñëåä÷ûêà.

        • Ðóæàíà áîëüø ÷óëë³âàÿ äà àêðóæàþ÷ûõ ëþäçåé. ßíà íàñòîëüê³ ÷óëë³âàÿ, øòî ìàå òýíäýíöûþ âûñëóõâàöü ³ çàäàâàöü óäàêëàäíÿþ÷ûÿ ïûòàíí³ äà òàãî ìîìàíòó, ïàêóëü íå " çðàçóìåå ïðàäìåò ñïðý÷ê³ ç ïóíêòó ãëåäæàííÿ àïàíåíòà ". ßíà íàâó÷àåööà, êàðûñòàþ÷û äîñâåä ³íøûõ ëþäçåé. Ó ñòàñóíêàõ ç àïàíåíòàì³, ÿíà ³ìêíåööà ïàçáÿãàöü êàíôðàíòàöû³. Ðóæàíà - ÿðê³ ïðûêëàä ñóá'åêòû¢íàãà äàñëåä÷ûêà.
        -

        Ó ïðûâåäçåíûì ïðûêëàäçå äçÿ¢÷ûíà ïðàäñòà¢ëåíà ÿê ñóá'åêòû¢íû âó÷àíü, þíàê - ÿê àá'åêòû¢íû. Ó ðýàëüíûì ñâåöå ³ñíóþöü ìåíàâ³òà òàê³ÿ òýíäýíöû³, õàöÿ, äàâîë³ ÷àñòà, ñóñòðàêàþööà âûêëþ÷ýíí³.

        +Ó ïðûâåäçåíûì ïðûêëàäçå äçÿ¢÷ûíà ïðàäñòà¢ëåíà ÿê ñóá'åêòû¢íû âó÷àíü, þíàê - ÿê àá'åêòû¢íû. Ó ðýàëüíûì ñâåöå ³ñíóþöü ìåíàâ³òà òàê³ÿ òýíäýíöû³, õàöÿ, äàâîë³ ÷àñòà, ñóñòðàêàþööà âûêëþ÷ýíí³. -

        Ó ãðóïå çàñíàâàíàé íà ñóïðàöî¢í³öòâå ³ ¢çàåìàäàïàìîçå, áûëî áû íàäçâû÷àé äîáðà, êàë³ á êîæíû âàëîäࢠàáîäâóìà â³äàì³ ïàçíàííÿ.

        +Ó ãðóïå çàñíàâàíàé íà ñóïðàöî¢í³öòâå ³ ¢çàåìàäàïàìîçå, áûëî áû íàäçâû÷àé äîáðà, êàë³ á êîæíû âàëîäࢠàáîäâóìà â³äàì³ ïàçíàííÿ. -

        Ó êîæíàé êàíêðýòíàé ñ³òóàöû³, íàïðûêëàä ó ôîðóìàõ, ³ìêí³öåñÿ àöàí³öü ïàâåäàìëåíí³ ñòóäýíòà¢, ñûõîäçÿ÷û ç ãýòûõ äâóõ êðûòýðûÿ¢. Ìàã÷ûìà, ãýòà äàïàìîæà äàïàìàã÷û Âàì çðàçóìåöü êîæíàãà ç âó÷íÿ¢ ³ ñòâàðûöü äîáðóþ àòìàñôåðó äëÿ íàâó÷àííÿ.

        +Ó êîæíàé êàíêðýòíàé ñ³òóàöû³, íàïðûêëàä ó ôîðóìàõ, ³ìêí³öåñÿ àöàí³öü ïàâåäàìëåíí³ ñòóäýíòà¢, ñûõîäçÿ÷û ç ãýòûõ äâóõ êðûòýðûÿ¢. Ìàã÷ûìà, ãýòà äàïàìîæà äàïàìàã÷û Âàì çðàçóìåöü êîæíàãà ç âó÷íÿ¢ ³ ñòâàðûöü äîáðóþ àòìàñôåðó äëÿ íàâó÷àííÿ. -
        +
        Âû ìîæàöå äàâåäàööà áîëüø àá âûêëàäçåíûõ âûøýé ³äýÿõ:
        • 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, NY: Basic Books.
        • @@ -27,4 +27,5 @@
        • 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.
        • 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.
        • -
        \ No newline at end of file + + diff --git a/lang/be/help/forum/rssarticles.html b/lang/be/help/forum/rssarticles.html deleted file mode 100644 index 073d6f0e9f4..00000000000 --- a/lang/be/help/forum/rssarticles.html +++ /dev/null @@ -1,6 +0,0 @@ -

        Êîëüêàñöü àðòûêóëࢠó RSS

        - -

        Ãýòà êàìàíäà äàçâîë³öü óñòàíàâ³öü êîëüêàñöü àðòûêóëࢠó RSS Feed.

        - -

        Íàéáîëüø àäýêâàòíàÿ ë³÷áà àä 5 äà 20. ßå ìîæíà ïàâÿë³÷ûöü, êàë³ ôîðóì âåëüì³ àêòû¢íû.

        - diff --git a/lang/be/help/forum/rsstype.html b/lang/be/help/forum/rsstype.html deleted file mode 100644 index 3cf7a852e9b..00000000000 --- a/lang/be/help/forum/rsstype.html +++ /dev/null @@ -1,12 +0,0 @@ -

        RSS çâàðîòíàÿ ñóâÿçü äëÿ ãýòàãà ôîðóìó

        - -

        Ç äàïàìîãàé ãýòàé êàìàíäû ¢êëþ÷àåööà RSS êðûí³öà íàâ³íࢠó ãýòûì ôîðóìå.

        - -

        Ìîæíà âûáðàöü àäç³í ç äâóõ â³äࢠôîðóìà¢:

        - -
          -
        • Äûñêóñ³ÿ: Óêëþ÷àå ¢ ñÿáå íîâûÿ äûñêóñ³³ ç ïåðøûì³ ïàâåäàìëåííÿì³.
        • - -
        • Ïàâåäàìëåíí³: Ó ãýòàé îïöû³ áóäçå àäëþñòðî¢âàööà êàæäàå ïàâåäàìëåííå ãýòàãà ôîðóìó.
        • -
        - diff --git a/lang/be/help/forum/subscription.html b/lang/be/help/forum/subscription.html index 6283ee75215..dc411b5ef8c 100644 --- a/lang/be/help/forum/subscription.html +++ b/lang/be/help/forum/subscription.html @@ -1,4 +1,4 @@ -

        Ïàäï³ñêà íà ôîðóì

        -

        Ïàä÷àñ ïàäï³ñê³ íà ôîðóì, óäçåëüí³ê àòðûìë³âàå êîï³³ ¢ñ³õ ïàâåäàìëåííÿ¢ ïðàç e-mail (ïàâåäàìëåíí³ äàñûëàþööà ïðàç 30 õâ³ë³íࢠïàñëÿ ç'ÿ¢ëåííÿ íà ôîðóìå).

        -

        Ñòóäýíò ìîæà âûá³ðàöü ïàäï³ñàööà íà ôîðóì ö³ íå, çà âûêëþ÷ýííåì âûïàäêà¢, êàë³ íàñòà¢í³ê çðàá³¢ àáàâÿçêîâóþ ïàäï³ñêó íà ôîðóì.

        -

        Àáàâÿçêîâàÿ ïàäï³ñêà çâû÷àéíà ¢ñòà븢âàåööà íà ôîðóìû íàâ³íà¢.

        \ No newline at end of file +

        Ïàäï³ñêà íà ôîðóì

        +

        Ïàä÷àñ ïàäï³ñê³ íà ôîðóì, óäçåëüí³ê àòðûìë³âàå êîï³³ ¢ñ³õ ïàâåäàìëåííÿ¢ ïðàç e-mail (ïàâåäàìëåíí³ äàñûëàþööà ïðàç 30 õâ³ë³íࢠïàñëÿ ç'ÿ¢ëåííÿ íà ôîðóìå). +

        Ñòóäýíò ìîæà âûá³ðàöü ïàäï³ñàööà íà ôîðóì ö³ íå, çà âûêëþ÷ýííåì âûïàäêà¢, êàë³ íàñòà¢í³ê çðàá³¢ àáàâÿçêîâóþ ïàäï³ñêó íà ôîðóì. +

        Àáàâÿçêîâàÿ ïàäï³ñêà çâû÷àéíà ¢ñòà븢âàåööà íà ôîðóìû íàâ³íà¢. \ No newline at end of file diff --git a/lang/be/help/forum/subscription2.html b/lang/be/help/forum/subscription2.html deleted file mode 100644 index 0dd3fb3f25d..00000000000 --- a/lang/be/help/forum/subscription2.html +++ /dev/null @@ -1,14 +0,0 @@ -

        Ïàäï³ñêà íà ôîðóì

        - -

        Òîé, õòî ïàäï³ñàíû íà ôîðóì, áóäçå àòðûìàöü íà ñâàþ ý-ñêðûíêó êîï³³ êîæíàãà ïàâåäàìëåííÿ âûñëàíàãà íà ãýòû ôîðóì. Ïàâåäàìëåíí³ âûñûëàþööà maxeditingtime/60 ?> õâ³ë³í ïàñëÿ ³õ ñòâàðýííÿ.

        - -

        Çâû÷àéíà ¢äçåëüí³ê³ ìîãóöü âûá³ðàöü, õî÷óöü ÿíû ö³ íå áûöü ïàäï³ñàíûì³ íà êîæíû ôîðóì

        - -

        Àäíàê, êàë³ âûðàøûø çàï³ñàööà íà ôîðóì, òî êîæíû ¢äçåëüí³ê êóðñà ïàäï³ñâàåööà íà ãýòû ôîðóì. Íàâàò êàë³ çàï³ñâàåööà íà êóðñ ïàçíåé.

        - -

        Ãýòà ôóíêöûÿ àñàáë³âà êàðûñíàÿ äëÿ ôîðóìó Íàâ³íࢠ³ ïåðøàãà ôîðóìó êóðñà.

        - -

        Êàë³ âûá³ðàåø "Òàê, íàïà÷àòêó," òî ¢ñå ïàäï³ñàíûÿ áóäóöü ìåöü ìàã÷ûìàñöü àäï³ñàööà. Êàìàíäà "Òàê, íàçà¢ñ¸äû" çàï³ñâàå ¢ñ³õ áåç ìàã÷ûìàñö³ àäï³ñàööà.

        - -

        Çâÿðí³öå ¢âàãó, øòî çàìåíà êàìàíäû "Íå" íà "Òàê, íàïà÷àòêó" íå çàï³øà ¢ñ³õ çàï³ñàíûõ ðàíåé íà àñîáࢠíà ôîðóì, à òîëüê³ íîâûõ óäçåëüí³êà¢. Çàìåíà "Òàê, íàïà÷àòêó" íà "Íå" íå âûï³øà ç ôîðóìó òûõ, õòî íà ÿãî ¢æî ïàäï³ñàíû. Áóäçå äàòû÷ûöü òîëüê³ íîâûõ êóðñàíòà¢.

        - diff --git a/lang/be/help/glossary/displayformat.html b/lang/be/help/glossary/displayformat.html index cfa7410838c..4beedda05a4 100644 --- a/lang/be/help/glossary/displayformat.html +++ b/lang/be/help/glossary/displayformat.html @@ -19,10 +19,10 @@
        -

        Àäì³í³ñòðàòàðû Moodle ìîãóöü ñòâàðûöü íîâûÿ ôîðìû ïðýçåíòàöû³ ñëî¢í³êà:

        +

        Àäì³í³ñòðàòàðû Moodle ìîãóöü ñòâàðûöü íîâûÿ ôîðìû ïðýçåíòàöû³ ñëî¢í³êà:

          -
        1. Ïðàâåð çìåñò êàòàëîãà mod/glossàry/formàts .... Òàì ïàâ³ííû áûöü ïàíóìåðàâàíûÿ ôàéëû, àäïàâÿäàþ÷ûÿ äàñòóïíûì ôàðìàòàì ñëî¢í³êà.
        2. -
        3. Ñêàï³þé àäç³í ç ãýòûõ ôàéëࢠ³ äàé ÿìó íîâóþ íàçâó ã.çí. íóìàð N (çâÿðí³ ¢âàãó, øòî 0 ³ 1 óæî çàíÿòûÿ).
        4. -
        5. Ïðàâÿäç³ ðýäàãàâàííå ãýòàãà ôàéëà íà ñâîé êàïûë (àäíàê ìóñ³ø õîöü êðûõó âåäàöü pHp).
        6. -
        7. Çàòûì, äàï³øû ¢ êîæíûì ìî¢íûì ïàêåöå, ÿê³ ¢æûâàåø displayformatN, ³ äàé ÿìó êàðîòêóþ, àëå ëàã³÷íóþ íàçâó.
        8. -
        +
      • Ïðàâåð çìåñò êàòàëîãà mod/glossàry/formàts .... Òàì ïàâ³ííû áûöü ïàíóìåðàâàíûÿ ôàéëû, àäïàâÿäàþ÷ûÿ äàñòóïíûì ôàðìàòàì ñëî¢í³êà. +
      • Ñêàï³þé àäç³í ç ãýòûõ ôàéëࢠ³ äàé ÿìó íîâóþ íàçâó ã.çí. íóìàð N (çâÿðí³ ¢âàãó, øòî 0 ³ 1 óæî çàíÿòûÿ). +
      • Ïðàâÿäç³ ðýäàãàâàííå ãýòàãà ôàéëà íà ñâîé êàïûë (àäíàê ìóñ³ø õîöü êðûõó âåäàöü PHP). +
      • Çàòûì, äàï³øû ¢ êîæíûì ìî¢íûì ïàêåöå, ÿê³ ¢æûâàåø displayformatN, ³ äàé ÿìó êàðîòêóþ, àëå ëàã³÷íóþ íàçâó. +

        diff --git a/lang/be/help/glossary/editalways.html b/lang/be/help/glossary/editalways.html index 1adb7046a12..553a14898eb 100644 --- a/lang/be/help/glossary/editalways.html +++ b/lang/be/help/glossary/editalways.html @@ -1,6 +1,6 @@

        Çà¢ñ¸äû ðýäàãóþööà

        -

        Ãýòà êàìàíäà äàçâîë³öü óñòàíàâ³öü, ö³ áóäóöü çàï³ñû çà¢ñ¸äû äàñòóïíûÿ äëÿ ðýäàãàâàííÿ.

        +

        Ãýòà êàìàíäà äàçâîë³öü óñòàíàâ³öü, ö³ áóäóöü çàï³ñû çà¢ñ¸äû äàñòóïíûÿ äëÿ ðýäàãàâàííÿ.

        Ìîæàø âûáðàöü

        diff --git a/lang/be/help/glossary/index.html b/lang/be/help/glossary/index.html index f7d4f2b5093..b324ae4d238 100644 --- a/lang/be/help/glossary/index.html +++ b/lang/be/help/glossary/index.html @@ -13,19 +13,17 @@
      • Ôàðìàò ñëî¢í³êà
      • Êîëüêàñöü äýô³í³öûé íà ñòàðîíöû
      • Îïöû³ ïîøóêó
      • -
      • À¢òàìàòû÷íà çâÿçâàé çàï³ñàíûÿ äýô³í³öû³
      • +
      • À¢òàìàòû÷íàå çëó÷ýííå êàòýãîðû³
      • Ôàéë äëÿ ³ìïàðòó
      • ²ìïàðò êàòýãîðû³
      • Ó ÿê³ ñëî¢í³ê ³ìïàðòóåì ïàíÿöö³?
      • -
      • RSS çâàðîòíàÿ ñóâÿçü äëÿ ñëî¢í³êà
      • -
      • Êîëüêàñöü àðòûêóëࢠó RSS
      • Ôàéëû äàïàìîã³ ïðàöû ñà ñëî¢í³êàì:
          -
        • Àêòûâ³çàöûÿ à¢òàìàòû÷íàãà ñïàñûëàííÿ íà äýô³í³öûþ
        • +
        • À¢òàìàòû÷íà çâÿçâàé çàï³ñàíûÿ äýô³í³öû³
        • Àëüÿñû
        • Ìàëûÿ ³ âÿë³ê³ÿ ë³òàðû ³ çâÿçâàííå ïàíÿööÿ¢
        • Çâÿçâàííå òîëüê³ ç öýëûì³ ñëîâàì³
        • diff --git a/lang/be/help/glossary/mods.html b/lang/be/help/glossary/mods.html index ae48fd7b20e..8c97f281453 100644 --- a/lang/be/help/glossary/mods.html +++ b/lang/be/help/glossary/mods.html @@ -1,8 +1,8 @@ -

           Ñëî¢í³ê ïàíÿööÿ¢

          -
          +

           Ñëî¢í³ê ïàíÿööÿ¢

          +

            Ãýòû ìîäóëü äàå ìàã÷ûìàñöü óäçåëüí³êàì ñòâàðàöü ³ çàõî¢âàöü çáîð äýô³í³öûé, ïàäîáíûõ íà ñëî¢í³ê. Ïîøóê ³ ïðàãëÿä äýô³í³öûé ìîæà àäáûâàööà íåêàëüê³ì³ ñïîñàáàì³.

            -

            Ñëî¢í³ê ïàíÿööÿ¢ äàå ìàã÷ûìàñöü âûêëàä÷ûêàì ïåðàíîñ³öü çìåñò ç àäíàãî ñëî¢í³êà ïàíÿööÿ¢ ó ³íøû (ãàëî¢íû ñëî¢í³ê ïàíÿööÿ¢) ó ìåæàõ àäíàãî êóðñà.

            +

            Ñëî¢í³ê ïàíÿööÿ¢ äàå ìàã÷ûìàñöü âûêëàä÷ûêàì ïåðàíîñ³öü çìåñò ç àäíàãî ñëî¢í³êà ïàíÿööÿ¢ ó ³íøû (ãàëî¢íû ñëî¢í³ê ïàíÿööÿ¢) ó ìåæàõ àäíàãî êóðñà.

            Ãýòû ìîäóëü òàêñàìà ðîá³öü ìàã÷ûìûì à¢òàìàòû÷íàå äàëó÷ýííå áë³çêàé ïà ñýíñå ³íôàðìàöû³ äà äýô³í³öûé, ÿê³ÿ ¢æî ìàþööà ¢ ìåæàõ êóðñà, ÿê³ ñòâàðàåööà.

            -
          +
        diff --git a/lang/be/help/glossary/rssarticles.html b/lang/be/help/glossary/rssarticles.html index b8ba712bcd4..88137c53001 100644 --- a/lang/be/help/glossary/rssarticles.html +++ b/lang/be/help/glossary/rssarticles.html @@ -1,5 +1,5 @@

        Êîëüêàñöü àðòûêóëࢠó RSS

        -

        Êàìàíäà äàçâàëÿå óñòàíàâ³öü êîëüêàñöü àðòûêóëࢠó RSS çâàðîòíàé ñóâÿç³.

        +

        Êàìàíäà äàçâàëÿå óñòàíàâ³öü êîëüêàñöü àðòûêóëࢠó RSS Feed.

        Íàéáîëüø àïòûìàëüíàÿ êîëüêàñöü àä 5 äà 20. Ìîæíà ÿå ïàâÿë³÷ûöü, êàë³ ñëî¢í³êàì ÷àñòà êàðûñòàþööà.

        \ No newline at end of file diff --git a/lang/be/help/glossary/rsstype.html b/lang/be/help/glossary/rsstype.html index 5c9dd42ae18..4b4c3d3f4bb 100644 --- a/lang/be/help/glossary/rsstype.html +++ b/lang/be/help/glossary/rsstype.html @@ -1,6 +1,6 @@ -

        RSS çâàðîòíàÿ ñóâÿçü äëÿ ñëî¢í³êà

        +

        RSS feed äëÿ ñëî¢í³êà

        -

        Ãýòà îïöûÿ äàçâàëÿå ¢êëþ÷ûöü RSS çâàðîòíóþ ñóâÿçü ó ãýòûì ñëî¢í³êó.

        +

        Ãýòà îïöûÿ äàçâàëÿå ¢êëþ÷ûöü RSS feeds ó ãýòûì ñëî¢í³êó.

        Ìîæàø âûáðàöü àäíó ç äçâþõ ìàã÷ûìàñöÿ¢:

        diff --git a/lang/be/help/glossary/studentcanpost.html b/lang/be/help/glossary/studentcanpost.html index e84485c9a9a..3f9a247e892 100644 --- a/lang/be/help/glossary/studentcanpost.html +++ b/lang/be/help/glossary/studentcanpost.html @@ -1,5 +1,5 @@

        Ñòóäýíòû ìîãóöü äàäàâàöü íîâûÿ ïàíÿöö³

        -

        Ìîæíà äàçâîë³öü ñòóäýíòàì äàäàâàöü, ðýäàãàâàöü àáî âûäàëÿöü ñâàå ¢ëàñíûÿ äýô³í³öû³ àáî ³íøûÿ çàï³ñû. Àäíàê æà, òîëüê³ âûêëàä÷ûê ìîæà çàìÿí³öü àáî âûäàë³öü çàï³ñû ¢ ãàëî¢íûì ñëî¢í³êó, òàê øòî ïðûâåäçåíàÿ âûøýé êàìàíäà àäíîñ³ööà òîëüê³ äà ÷àñîâûõ ñëî¢í³êà¢.

        +

        Ìîæíà äàçâîë³öü ñòóäýíòàì äàäàâàöü, ðýäàãàâàöü àáî âûäàëÿöü ñâàå ¢ëàñíûÿ äýô³í³öû³ àáî ³íøûÿ çàï³ñû. Àäíàê æà, òîëüê³ âûêëàä÷ûê ìîæà çàìÿí³öü àáî âûäàë³öü çàï³ñû ¢ ãàëî¢íûì ñëî¢í³êó, òàê øòî ïðûâåäçåíàÿ âûøýé êàìàíäà àäíîñ³ööà òîëüê³ äà ÷àñîâûõ ñëî¢í³êà¢.

        Óâàãà: Âûêëàä÷ûê ìîæà ¢ ëþáû ìîìàíò çàìÿí³öü àáî âûäàë³öü ëþáû çàï³ñ.

        diff --git a/lang/be/help/groupmode.html b/lang/be/help/groupmode.html index 67aa0a68c1e..2d7eebee804 100644 --- a/lang/be/help/groupmode.html +++ b/lang/be/help/groupmode.html @@ -1,13 +1,14 @@

        ³äû ãðóïà¢

        -

        ¨ñöü òðû íàñòðîéê³ äëÿ ãðóïà¢:

        +

        ¨ñöü òðû íàñòðîéê³ äëÿ ãðóïà¢:

        • àäñóòíàñöü ãðóïà¢
        • àñîáíûÿ ãðóïû - êîæíàÿ ãðóïà áà÷ûöü òîëüê³ ñàìó ñÿáå, àñòàòí³ÿ ãðóïû íÿáà÷íûÿ
        • áà÷íûÿ ãðóïû - êîæíàÿ ãðóïà ïðàöóå ¢ ñâà³õ ðàìêàõ, àëå áà÷ûöü òàêñàìà ³íøûÿ ãðóïû
        +

        -

        Ãðóïû ìîæíà ñòâàðûöü íà äâóõ óçðî¢íÿõ:

        +

        Ãðóïû ìîæíà ñòâàðûöü íà äâóõ óçðî¢íÿõ:

        1. Óçðîâåíü êóðñó
        @@ -17,3 +18,5 @@ Êàë³ êóðñ ïàòðàáóå ïðàöû ¢ ãðóïàõ òàäû ãýòû ïàðàìåòð íå áÿðýööà ïàä óâàãó.
        + +

        diff --git a/lang/be/help/groupmodeforce.html b/lang/be/help/groupmodeforce.html index 5d95fa25980..2eac69f8ab6 100644 --- a/lang/be/help/groupmodeforce.html +++ b/lang/be/help/groupmodeforce.html @@ -1,6 +1,6 @@

        Äàìàæûñÿ ïðàöû ¢ ãðóïå

        -

        Âûáàð ãýòàãà ïàðàìåòðó àçíà÷àå, øòî ïðàöà ¢ ãðóïàõ áóäçå ïðûìÿíÿööà äëÿ êîæíàé àêòû¢íàñö³ ¢ ðàìêàõ äàäçåíàãà êóðñó. +

        Âûáàð ãýòàãà ïàðàìåòðó àçíà÷àå, øòî ïðàöà ¢ ãðóïàõ áóäçå ïðûìÿíÿööà äëÿ êîæíàé àêòû¢íàñö³ ¢ ðàìêàõ äàäçåíàãà êóðñó. ²íøûÿ íàñòðîéê³ ¢ ðàìêàõ àêòû¢íàñö³ ³ãíàðóþööà.

        Ãýòà êàðûñíà, êàë³ õòî-íåáóäçü õî÷à ñòâàðûöü êóðñ äëÿ íåêàëüê³õ àñîáíûõ ãðóïà¢.

        diff --git a/lang/be/help/guestaccess.html b/lang/be/help/guestaccess.html index 11f4f0d4abc..e5193ed1820 100644 --- a/lang/be/help/guestaccess.html +++ b/lang/be/help/guestaccess.html @@ -1,11 +1,11 @@ -

        Ãàñöÿâû äîñòóï

        +

        Ãàñöÿâû äîñòóï

        -

        Âû ìîæàöå äàçâîë³öü ãàñöÿâû äîñòóï íà êóðñ.

        +

        Âû ìîæàöå äàçâîë³öü ãàñöÿâû äîñòóï íà êóðñ. -

        Ó ãýòûì âûïàäêó ëþáû ìîæà çàéñö³ íà Âàøû êóðñ, ñêàðûñòà¢øû êíîïêó "Çàéñö³ ãîñöåì" íà ñòàðîíöû ³äýíòûô³êàöû³.

        +

        Ó ãýòûì âûïàäêó ëþáû ìîæà çàéñö³ íà Âàøû êóðñ, ñêàðûñòà¢øû êíîïêó "Çàéñö³ ãîñöåì" íà ñòàðîíöû ³äýíòûô³êàöû³. -

        Ãîñöü ÇÀ¡Ñ¨ÄÛ ìàå ïðàâà äîñòóïó "òîëüê³ äëÿ ÷ûòàííÿ", ãýòà çíà÷ûöü - ¸í íå ìîæà ïàê³äàöü ïàâåäàìëåíí³ àáî ÿê-íåáóäçü óìåøâàööà ¢ ïðàöó ñòóäýíòà¢.

        +

        Ãîñöü ÇÀ¡Ñ¨ÄÛ ìàå ïðàâà äîñòóïó "òîëüê³ äëÿ ÷ûòàííÿ", ãýòà çíà÷ûöü - ¸í íå ìîæà ïàê³äàöü ïàâåäàìëåíí³ àáî ÿê-íåáóäçü óìåøâàööà ¢ ïðàöó ñòóäýíòà¢. -

        Ìàã÷ûìà, Âû ñêàðûñòàåöå ãýòà ïðû ïàêàçå êóðñà Âàøûì êàëåãàì àáî äëÿ òàãî, êàá ñòóäýíòû ìàãë³ ¢áà÷ûöü êóðñ äà òàãî ÿê âûðàøàöü, ö³ âàðòà íà ÿãî çàï³ñâàööà.

        +

        Ìàã÷ûìà, Âû ñêàðûñòàåöå ãýòà ïðû ïàêàçå êóðñà Âàøûì êàëåãàì àáî äëÿ òàãî, êàá ñòóäýíòû ìàãë³ ¢áà÷ûöü êóðñ äà òàãî ÿê âûðàøàöü, ö³ âàðòà íà ÿãî çàï³ñâàööà. -

        Íàòàòêà: Âû ìîæàöå àáìåæàâàöü êîëüêàñöü ãàñöåé, óñòàëÿâà¢øû äîïóñê äëÿ ãîñöÿ, ÿê³ âåäàå êîäàâàå ñëîâà.

        +

        Íàòàòêà: Âû ìîæàöå àáìåæàâàöü êîëüêàñöü ãàñöåé, óñòàëÿâà¢øû äîïóñê äëÿ ãîñöÿ, ÿê³ âåäàå êîäàâàå ñëîâà. diff --git a/lang/be/help/html.html b/lang/be/help/html.html index 842b6db8110..388b02c3c7c 100644 --- a/lang/be/help/html.html +++ b/lang/be/help/html.html @@ -1,12 +1,12 @@ -

        ßê ï³ñàöü ó ôàðìàöå HTML

        +

        ßê ï³ñàöü ó ôàðìàöå HTML

        -

        Ïðû íàï³ñàíí³ HTML íà ñàéöå, Âû ìîæàöå âûêàðûñòàöü ëþáûÿ HTML-òýã³, äëÿ ñòâàðýííÿ ïàòðýáíûõ Âàì ýôåêòà¢.

        +

        Ïðû íàï³ñàíí³ HTML íà ñàéöå, Âû ìîæàöå âûêàðûñòàöü ëþáûÿ HTML-òýã³, äëÿ ñòâàðýííÿ ïàòðýáíûõ Âàì ýôåêòà¢. -

        Çâû÷àéíà Âàø êîä áóäçå çíàõîäç³ööà ¢ ÿ÷ýéöû òàáë³öû, òàê³ì ÷ûíàì:

        +

        Çâû÷àéíà Âàø êîä áóäçå çíàõîäç³ööà ¢ ÿ÷ýéöû òàáë³öû, òàê³ì ÷ûíàì: -

          -
        • íÿ òðýáà âûêàðûñòî¢âàöü òýã³ <head> àáî <body>;
        • -
        • áóäçüöå ¢âàæë³âûÿ ç âûêàðûñòàííåì òýãà </table>, ÿê³ ìîæà çëàìàöü ñòðóêòóðó ñòàðîíê³ ñàéòà.
        • -
        +
          +
        • íÿ òðýáà âûêàðûñòî¢âàöü òýã³ <HEAD> àáî <BODY>; +
        • áóäçüöå ¢âàæë³âûÿ ç âûêàðûñòàííåì òýãà </TABLE>, ÿê³ ìîæà çëàìàöü ñòðóêòóðó ñòàðîíê³ ñàéòà. +
        diff --git a/lang/be/help/index.html b/lang/be/help/index.html index 194e66b443e..6dc5277c310 100644 --- a/lang/be/help/index.html +++ b/lang/be/help/index.html @@ -3,52 +3,44 @@

        Àãóëüíûÿ

        ʳðàâàííå

        Ïðàåêòàâàííå êóðñà

        ×ûòàííå ³ íàï³ñàííå

        diff --git a/lang/be/help/journal/mods.html b/lang/be/help/journal/mods.html index 199f4a50fcb..22560e739bd 100644 --- a/lang/be/help/journal/mods.html +++ b/lang/be/help/journal/mods.html @@ -1,4 +1,6 @@ -

         Ðàáî÷ûÿ ñøûòê³

        -
        +

         Ðàáî÷ûÿ ñøûòê³

        +
          +

          Ãýòû ìîäóëü àõîïë³âàå âåëüì³ âàæíûÿ äçåÿíí³ ðýôëåêñ³éíàãà õàðàêòàðó. Âÿäó÷û ïðàïàíóå ñòóäýíòàì ïàðàçâàæàöü íà äàäçåíóþ òýìó. Ñòóäýíòû ïý¢íû ÷àñ ìîãóöü ðýäàãàâàöü ³ ìàäûô³êàâàöü ñâàå âûêàçâàíí³, ÿê³ÿ ç’ÿ¢ëÿþööà àñàá³ñòûì³ ³ äàñòóïíûì³ òîëüê³ äëÿ âÿäî¢öû. Âÿäî¢öà ìîæà ïðàêàìåíòàâàöü ³ âûñòàâ³öü ó ðàáî÷û ñøûòàê àäçíàêó çà êîæíû çàï³ñ. Çâû÷àéíà ðýêàìåíäóåööà ñòâàðýííå õàöÿ áû àäíàãî ðàáî÷àãà ñøûòêó ¢ òûäçåíü.

          -
        \ No newline at end of file + + diff --git a/lang/be/help/label/mods.html b/lang/be/help/label/mods.html index 5ff42b45203..b04d6354dd6 100644 --- a/lang/be/help/label/mods.html +++ b/lang/be/help/label/mods.html @@ -1,4 +1,5 @@ -

         Òëóìà÷ýíí³

        -
        +

         Àï³ñàíí³

        +

          Ãýòà íå àêòû¢íûÿ ðýñóðñû êóðñà – ãýòà ãðàô³÷íûÿ ³íòýðôýéñû, ÿê³ÿ äàþöü ìàã÷ûìàñöü óñòàâ³öü òýêñò ³ ãðàô³êó ïàì³æ ³íøûì³ ìàòýðûÿëàì³ íà ñòàðîíöû êóðñà.

          -
        \ No newline at end of file + + diff --git a/lang/be/help/langedit.html b/lang/be/help/langedit.html index 43f88befa66..f03ddc020e3 100644 --- a/lang/be/help/langedit.html +++ b/lang/be/help/langedit.html @@ -1,10 +1,10 @@ -

        Ðýäàãàâàííå ïåðàêëàäó

        +

        Ðýäàãàâàííå ïåðàêëàäó

        -

        Äëÿ ðýäàãàâàííÿ ïåðàêëàäó íà ãýòàé ñòàðîíöû, ôàéëû íà ñýðâåðû íå ïàâ³ííû ìåöü àòðûáóò "òîëüê³ äëÿ ÷ûòàííÿ".

        +

        Äëÿ ðýäàãàâàííÿ ïåðàêëàäó íà ãýòàé ñòàðîíöû, ôàéëû íà ñýðâåðû íå ïàâ³ííû ìåöü àòðûáóò "òîëüê³ äëÿ ÷ûòàííÿ". -

        Ó íåêàòîðûõ ðàäêàõ Âû ¢áà÷ûöå $a àáî $a->something.

        +

        Ó íåêàòîðûõ ðàäêàõ Âû ¢áà÷ûöå $a àáî $a->something. -

        Ãýòûÿ ñ³ìâàëû ïàêàçâàþöü, ïàç³öû³ ¢ ñêàçå, äçå áóäóöü çíàõîäç³ööà ïåðàìåííûÿ.

        +

        Ãýòûÿ ñ³ìâàëû ïàêàçâàþöü, ïàç³öû³ ¢ ñêàçå, äçå áóäóöü çíàõîäç³ööà ïåðàìåííûÿ. -

        Êàë³ ¢ ñêàçå òîëüê³ àäíà ïåðàìåííàÿ, âûêàðûñòî¢âàåööà ôîðìà - $a. Êàë³ ïåðàìåííûõ äçâå ³ áîëüø, êîæíàé äàäçåíà òëóìà÷àëüíàå ³ìÿ.

        +

        Êàë³ ¢ ñêàçå òîëüê³ àäíà ïåðàìåííàÿ, âûêàðûñòî¢âàåööà ôîðìà - $a. Êàë³ ïåðàìåííûõ äçâå ³ áîëüø, êîæíàé äàäçåíà òëóìà÷àëüíàå ³ìÿ. diff --git a/lang/be/help/lesson/grade.html b/lang/be/help/lesson/grade.html index 3a3faf9ac67..5767092eb89 100644 --- a/lang/be/help/lesson/grade.html +++ b/lang/be/help/lesson/grade.html @@ -1,2 +1,4 @@ -

        Àäçíàêà çà íàâó÷àëüíóþ ðàáîòó

        -

        Ãýòû ïàðàìåòð âûçíà÷àå ìàêñ³ìàëüíóþ àäçíàêó, ÿêàÿ ìîæà áûöü àòðûìàíàÿ çà íàâó÷àëüíóþ ðàáîòó ¢ äûÿïàçîíå àä 0 äà 100%. ßãî çíà÷ýííå ìîæà áûöü çìåíåíàå ¢ ëþáû ÷àñ. Ëþáûÿ çìÿíåíí³ íåàäêëàäíà ¢ïëûâàþöü íà ñòàðîíêó "Àäçíàê³" ³ íà àäçíàê³, ÿê³ÿ àäëþñòðî¢âàþööà äëÿ ñòóäýíòà¢. Êàë³ çíà÷ýííå ïàðàìåòðó "àäçíàêà" ðî¢íû 0, òî íàâó÷àëüíàÿ ðàáîòà ñòàíîâ³ööà íÿáà÷íàé íà ðîçíûõ ñòàðîíêàõ, ÿê³ÿ çìÿø÷àþöü àäçíàê³.

        +

        Àäçíàêà çà ¢ðîê

        +

        Ãýòû ïàðàìåòð âûçíà÷àå ìàêñ³ìàëüíóþ àäçíàêó, ÿêàÿ ìîæà áûöü àòðûìàíàÿ íà ¢ðîêó ¢ äûÿïàçîíå àä 0 äà 100%. ßãî çíà÷ýííå ìîæà áûöü çìåíåíàå ¢ ëþáû ÷àñ. Ëþáûÿ çìÿíåíí³ íåàäêëàäíà ¢ïëûâàþöü íà ñòàðîíêó "Àäçíàê³" ³ íà àäçíàê³, ÿê³ÿ àäëþñòðî¢âàþööà äëÿ ñòóäýíòà¢. Êàë³ çíà÷ýííå ïàðàìåòðó "àäçíàêà" ðî¢íû 0, òî ¢ðîê ñòàíîâ³ööà íÿáà÷íûì íà ðîçíûõ ñòàðîíêàõ, ÿê³ÿ çìÿø÷àþöü àäçíàê³.

        + + diff --git a/lang/be/help/lesson/handlingofretakes.html b/lang/be/help/lesson/handlingofretakes.html index 681ae183738..acc10288920 100644 --- a/lang/be/help/lesson/handlingofretakes.html +++ b/lang/be/help/lesson/handlingofretakes.html @@ -1,5 +1,5 @@

        Íàñòðîéêà ñïðîáࢠïåðàçäà÷û

        -

        Êàë³ ñòóäýíòó äàçâîëåíà ïåðàçäàâàöü çàäàííå, ãýòàÿ îïöûÿ äàçâàëÿå íàñòà¢í³êó çàäàöü ÿê³ âûí³ê àäëþñòðî¢âàöü íà ñòàðîíöû "Àäçíàê³". Ïðû çíà÷ýíí³ Ñÿðýäí³ - àäëþñòðî¢âàåööà ñÿðýäíÿÿ àäçíàêà ïà âûí³êàõ ïåðøàé ³ ¢ñ³õ íàñòóïíûõ ñïðîáࢠïðàõîäæàííÿ íàâó÷àëüíàé ðàáîòû. Ïðû çíà÷ýíí³ Ëåïøû - àäëþñòðî¢âàåööà àäïàâåäíà ìàêñ³ìàëüíû âûí³ê íåçàëåæíà àä êîëüêàñö³ ñïðîáࢠïåðàçäà÷.

        +

        Êàë³ ñòóäýíòó äàçâîëåíà ïåðàçäàâàöü çàäàííå, ãýòàÿ îïöûÿ äàçâàëÿå íàñòà¢í³êó çàäàöü ÿê³ âûí³ê àäëþñòðî¢âàöü íà ñòàðîíöû "Àäçíàê³". Ïðû çíà÷ýíí³ Ñÿðýäí³ - àäëþñòðî¢âàåööà ñÿðýäíÿÿ àäçíàêà ïà âûí³êàõ ïåðøàé ³ ¢ñ³õ íàñòóïíûõ ñïðîáࢠïðàõîäæàííÿ ¢ðîêó. Ïðû çíà÷ýíí³ Ëåïøû - àäëþñòðî¢âàåööà àäïàâåäíà ìàêñ³ìàëüíû âûí³ê íåçàëåæíà àä êîëüêàñö³ ñïðîáࢠïåðàçäà÷.

        Ãýòàÿ îïöûÿ ìîæà áûöü çìåíåíàÿ ¢ ëþáû ÷àñ

        diff --git a/lang/be/help/lesson/import.html b/lang/be/help/lesson/import.html index 2ade36d961b..bac3cc83482 100644 --- a/lang/be/help/lesson/import.html +++ b/lang/be/help/lesson/import.html @@ -1,11 +1,11 @@ -

        ²ìïàðò íîâûõ ïûòàííÿ¢

        +

        ²ìïàðò íîâûõ ïûòàííÿ¢

        -

        Ãýòàÿ ôóíêöûÿ äàçâàëÿå ³ìïàðòàâàöü ïûòàíí³ ñà çíåøí³õ òýêñòàâûõ ôàéëà¢, øòî çàãðóæàþööà ïðàç ôîðìó.

        +

        Ãýòàÿ ôóíêöûÿ äàçâàëÿå ³ìïàðòàâàöü ïûòàíí³ ñà çíåøí³õ òýêñòàâûõ ôàéëà¢, øòî çàãðóæàþööà ïðàç ôîðìó. -

        Ïàäòðûìë³âàþööà íàñòóïíûÿ ôàðìàòû:

        +

        Ïàäòðûìë³âàþööà íàñòóïíûÿ ôàðìàòû: -

        Ôàðìàò GIFT

        -
        +

        Ôàðìàò GIFT

        +

          GIFT ç'ÿ¢ëÿåööà íàéáîëüø ïî¢íûì ôàðìàòàì äàñòóïíûì äëÿ ³ìïàðòàâàííÿ ïûòàííÿ¢ ó òýñòû ñ³ñòýìû Moodle ç òýêñòàâàãà ôàéëà. ¨í áû¢ ðàñïðàöàâàíû äëÿ ìàã÷ûìàñö³ ïàäðûõòî¢ê³ ïûòàííÿ¢ äëÿ òýñòࢠó âûãëÿäçå òýêñòàâàãà ôàéëà. ¨í ïàäòðûìë³âàå Ìíîæíû àäêàç, Àäêàç Òàê/Íå, Êàðîòê³ àäêàç, ˳÷áàâû àäêàç, Àäïàâåäíàñö³, Óñòà¢êà ñëîâà çàìåñò ïðàáåëó ³ ³íøûÿ òûïû ïûòàííÿ¢. Ðîçíûÿ òûïû ïûòàííÿ¢ ìîãóöü áûöü âûêàðûñòàíûÿ ¢ àäíûì òýêñòàâûì ôàéëå. Ôàðìàò ãýòàê æà ïàäòðûìë³âàå Êàìåíòàðû, Íàçâû ïûòàííÿ¢, Çâàðîòíóþ ñóâÿçü ³ Àäçíàêó. ͳæýé ïðûâåäçåíûÿ íåêàëüê³ ïðûêëàäà¢:

           Õòî ïàõàâàíû ¢ ìàã³ëå Ãðàíòà?{~Ãðàíò ~Äæýôåðñàí =í³õòî}
          @@ -19,69 +19,70 @@
           Êàë³ íàðàäç³¢ñÿ Ãðàíò?{#1822}
           
          -

          Äàâåäàööà áîëüø àá ôàðìàöå "GIFT"

          -
        +

        Äàâåäàööà áîëüø àá ôàðìàöå "GIFT"

        + -

        Ôàðìàò Aiken

        -
        +

        Ôàðìàò Aiken

        +

          Ôàðìàò Aiken âåëüì³ ïðîñòû ñïîñàá ñòâàðýííÿ ïûòàííÿ¢ òûïó Ìíîæíû àäêàç. ¨í âûêàðûñòî¢âàå âåëüì³ ïðîñòû ñ³íòàêñ³ñ. Ïðûêëàä:

           ßêàÿ ìýòà ïåðøàé äàïàìîã³?
           A. Çàõàâàöü æûöö¸, ïàïÿðýäç³öü äàëåéøàå ïàøêîäæàííå, çàõàâàöü çäàðî¢ÿ
          -b. Çàáÿñïå÷ûöü ìåäûöûíñêóþ äàïàìîãó ïàöÿðïåëàìó
          +B. Çàáÿñïå÷ûöü ìåäûöûíñêóþ äàïàìîãó ïàöÿðïåëàìó
           C. Ïàïÿðýäç³öü äàëåéøàå ïàøêîäæàííå
           D. Äàïàìàã÷û ïàöÿðïåëàìó, ÿê³ ïðîñ³öü äàïàìîã³
           ÀÄÊÀÇ: A
          -

          Äàâåäàööà áîëüø àá ôàðìàöå "Aiken"

          -
        +

        Äàâåäàööà áîëüø àá ôàðìàöå "Aiken"

        + -

        Ôàðìàò Ñëîâà, ÿêîãà áðàêóå

        -
        -

        Ãýòû ôàðìàò ïàäòðûìë³âàå òîëüê³ ïûòàííå òûïó Ìíîæíû àäêàç. Êîæíû àäêàç àääçåëåíû çíàêàì òûëüäû (~), à ïðàâ³ëüíû àäêàç àääçåëåíû çíàêàì ðî¢íà (=). Ïðûêëàä:

        +

        Ïðàïóø÷àíàå ñëîâà

        +
          +

          Ãýòû ôàðìàò ïàäòðûìë³âàå òîëüê³ ïûòàííå òûïó Ìíîæíû àäêàç. Êîæíû àäêàç àääçåëåíû çíàêàì òûëüäû (~), à ïðàâ³ëüíû àäêàç àääçåëåíû çíàêàì ðî¢íà (=). Ïðûêëàä: -

          Ïåðø ÷ûì ïà÷àöü âûâó÷àöü ÷àñòê³ íàøàãà öåëà ÿê íåìà¢ëÿòû, ìû ñòàíåì ñòóäýíòàì³{=àíàòîì³³ ³ ô³ç³ÿëîã³³ ~ðýôëåêòàëîã³³ ~íàâóê³ ~ýêñïåðûìåíòó}, ³ çàñòàíåìñÿ ñòóäýíòàì³ íà ¢ñ¸ æûöö¸. -
          +
          Ïåðø ÷ûì ïà÷àöü âûâó÷àöü ÷àñòê³ íàøàãà öåëà ÿê íåìà¢ëÿòû, ìû ñòàíåì ñòóäýíòàì³{=àíàòîì³³ ³ ô³ç³ÿëîã³³ ~ðýôëåêòàëîã³³ ~íàâóê³ ~ýêñïåðûìåíòó}, ³ çàñòàíåìñÿ ñòóäýíòàì³ íà ¢ñ¸ æûöö¸. +
          -

          Äàâåäàööà áîëüø àá ôàðìàöå "Ñëîâà, ÿêîãà áðàêóå"

          -
        +

        Äàâåäàööà áîëüø àá ôàðìàöå "Ïðàïóø÷àíàå ñëîâà"

        + -

        Ôàðìàò ÀÎÍ

        -
        -

        Ãýòà òîé æà ñàìû ôàðìàò "Ñëîâà, ÿêîãà áðàêóå", çà âûêëþ÷ýííåì òàãî, øòî ïàñëÿ ³ìïàðòàâàííÿ ¢ñå ïûòàíí³ òûïó Êàðîòê³ àäêàç êàíâåðòóåööà ÷àòûðû çà ðàç ó òûï Àäïàâåäíàñöÿ¢.

        -

        Ó äàïà¢íåííå, àäêàçû àä ïûòàííÿ¢ òûïó Ìíîæíû àäêàç çìåøâàþööà âûïàäêîâûì ÷ûíàì ïàä÷àñ ³ìïàðòó

        +

        ÀÎÍ

        +
          +

          Ãýòà òîé æà ñàìû ôàðìàò Ïðàïóø÷àíàå ñëîâà, çà âûêëþ÷ýííåì òàãî, øòî ïàñëÿ ³ìïàðòàâàííÿ ¢ñå ïûòàíí³ òûïó Êàðîòê³ àäêàç êàíâåðòóåööà ÷àòûðû çà ðàç ó òûï Àäïàâåäíàñöÿ¢.

          +

          Ó äàïà¢íåííå, àäêàçû àä ïûòàííÿ¢ òûïó Ìíîæíû àäêàç çìåøâàþööà âûïàäêîâûì ÷ûíàì ïàä÷àñ ³ìïàðòó

          Ôàðìàò ìàå íàçâó ¢ ãîíàð àðãàí³çàöû³, ÿêàÿ ñïàíñàâàëà ðàñïðàöî¢êó ìíîñòâà îïöûÿ¢ äëÿ òýñòàâàííÿ.

          -
        + -

        Ôàðìàò Äîøêà

        -
        -

        Ãýòû ìîäóëü ìîæà ³ìïàðòàâàöü ïûòàíí³, çàõàâàíûÿ ¢ ôàðìàöå ýêñïàðòó ç ôàðìàòó Äîøêà. ¨í çàñíàâàíû íà ôóíêöû³ XML ñêàìï³ëÿâàíàé ó pHp

        +

        Blackboard

        +
        +

        Äàâåäàööà áîëüø àá "Blackboard"

        + -

        Ôàðìàò Ìåíåäæýð òýñòà¢

        -
        -

        Ãýòû ìîäóëü ìîæà ³ìïàðòàâàöü ïûòàíí³, çàõàâàíûÿ ¢ ôàðìàöå Course Test Manager. ¨í çàñíàâàíû íà ðîçíûõ øëÿõàõ äîñòóïó ¢ áàíê òýñòà¢, òàê³õ ÿê áàçà äàäçåíûõ Microsoft Access, ó çàëåæíàñö³ àä òàãî, íà ÿêîé ïëàòôîðìå ïðàöóå Moodle-ñýðâåð, íà Windows àáî íà Linux.

        +

        Ìåíåäæýð òýñòà¢

        +
          +

          Ãýòû ìîäóëü ìîæà ³ìïàðòàâàöü ïûòàíí³, çàõàâàíûÿ ¢ ôàðìàöå Course Test Manager. ¨í çàñíàâàíû íà ðîçíûõ øëÿõàõ äîñòóïó ¢ áàíê òýñòà¢, òàê³õ ÿê áàçà äàäçåíûõ Microsoft Access, ó çàëåæíàñö³ àä òàãî, íà ÿêîé ïëàòôîðìå ïðàöóå Moodle-ñýðâåð, íà Windows àáî íà Linux.

          Íà Windows - ãýòà äàå ìàã÷ûìàñöü çàãðóç³öü áàçó äàäçåíûõ ÿê ëþáû äðóã³ ôàéë.

          -

          Íà Linux ìóñ³öü áûöü óñòàëÿâàíû ODbC êàìïàíåíò äëÿ äîñòóïó äà ìàøûíû ç Windows, íà ÿêîé çàõî¢âàåööà ñåòêàâû òýñò

          +

          Íà Linux ìóñ³öü áûöü óñòàëÿâàíû ODBC êàìïàíåíò äëÿ äîñòóïó äà ìàøûíû ç Windows, íà ÿêîé çàõî¢âàåööà ñåòêàâû òýñò

          Ïðà÷ûòàéöå ¢âàæë³âà ðàçäçåë í³æýé ïåðø ÷ûì âûêàðûñòàöü ãýòà ýêñïàðòàâàííå.

          -

          Äàâåäàööà áîëüø àá ôàðìàöå "Ìåíåäæýð òýñòà¢"

          -
        +

        Äàâåäàööà áîëüø àá ôàðìàöå "Ìåíåäæýð òýñòà¢"

        + -

        Ôàðìàò Íåñòàíäàðòíû

        -
        -

        Êàë³ Âû ìàåöå óëàñíû ôàðìàò, ÿê³ âû æàäàåöå ³ìïàðòàâàöü, Âû ìîæàöå ¢æûöü ÿãî ñàìàñòîéíà àï³ñà¢øû ¢ mod/quiz/format/custom.php

        +

        Ñàìàðîáíû

        +
          +

          Êàë³ Âû ìàåöå óëàñíû ôàðìàò, ÿê³ âû æàäàåöå ³ìïàðòàâàöü, Âû ìîæàöå ¢æûöü ÿãî ñàìàñòîéíà àï³ñà¢øû ¢ mod/quiz/format/custom.php -

          Ïàìåð êîäà äëÿ äàäàâàííÿ âåëüì³ ìàëû, òîëüê³ êàá âûëó÷ûöü ïûòàííå ç àçíà÷àíàãà òýêñòó.

          +

          Ïàìåð êîäà äëÿ äàäàâàííÿ âåëüì³ ìàëû, òîëüê³ êàá âûëó÷ûöü ïûòàííå ç àçíà÷àíàãà òýêñòó. -

          Äàâåäàööà áîëüø àá ôàðìàöå "Íåñòàíäàðòíû"

          -
        +

        Äàâåäàööà áîëüø àá ôàðìàöå "Ñàìàðîáíû"

        + -

        Ìíîñòâà ôàðìàòࢠÿø÷ý íå ¢êàðàí¸íà, óêëþ÷íà WebCT, IMS QTI ³ øýðàã ³íøûõ. Êàðûñòàëüí³ê³ Moodle ìîãóöü çðàá³öü ñâîé óí¸ñàê!

        \ No newline at end of file +

        Ìíîñòâà ôàðìàòࢠÿø÷ý íå ¢êàðàí¸íà, óêëþ÷àþ÷û WebCT, IMS QTI ³ ìàñó ³íøûõ. Êàðûñòàëüí³ê³ Moodle ìîãóöü çðàá³öü ñâîé óí¸ñàê!

        + diff --git a/lang/be/help/lesson/index.html b/lang/be/help/lesson/index.html deleted file mode 100644 index d4d3e5ae404..00000000000 --- a/lang/be/help/lesson/index.html +++ /dev/null @@ -1,18 +0,0 @@ -

        Íàâó÷àëüíàÿ ðàáîòà

        - - \ No newline at end of file diff --git a/lang/be/help/lesson/maxanswers.html b/lang/be/help/lesson/maxanswers.html index a9373f4dd73..19313e2984d 100644 --- a/lang/be/help/lesson/maxanswers.html +++ b/lang/be/help/lesson/maxanswers.html @@ -1,7 +1,7 @@

        Ìàêñ³ìàëüíàÿ êîëüêàñöü àäêàçà¢/ðàçäçåëà¢

        -

        Ãýòû ïàðàìåòð âûçíà÷àå ìàêñ³ìàëüíóþ êîëüêàñöü àäêàçà¢, ÿê³ÿ ìîæà âûêàðûñòàöü íàñòà¢í³ê. Çíà÷ýííå ïà çìà¢÷àíí³ ðî¢íà ÷àòûðîì. Êàë³, äà ïðûêëàäó, íà ïðàöÿãó ¢ñ¸é íàâó÷àëüíàé ðàáîòû âûêàðûñòî¢âàåööà òîëüê³ ïûòàíí³ òûïó Òàê/Íå, ¸ñöü ñýíñ óñòàëÿâàöü ãýòû ïàðàìåòð ðî¢íûì äâóì.

        +

        Ãýòû ïàðàìåòð âûçíà÷àå ìàêñ³ìàëüíóþ êîëüêàñöü àäêàçà¢, ÿê³ÿ ìîæà âûêàðûñòàöü íàñòà¢í³ê. Çíà÷ýííå ïà çìà¢÷àíí³ ðî¢íà ÷àòûðîì. Êàë³, äà ïðûêëàäó, íà ïðàöÿãó ¢ñÿãî ¢ðîêó âûêàðûñòî¢âàåööà òîëüê³ ïûòàíí³ òûïó Òàê/Íå, ¸ñöü ñýíñ óñòàëÿâàöü ãýòû ïàðàìåòð ðî¢íûì äâóì.

        Ãýòû ïàðàìåòð òàêñàìà ¢ñòà븢âàå ìàêñ³ìàëüíóþ êîëüêàñöü ïóíêòࢠó Òàáë³öû çìåñòó.

        -

        Öàëêàì áÿñïå÷íà çìÿíÿöü çíà÷ýííå ãýòàãà ïàðàìåòðó ¢ íàâó÷àëüíàé ðàáîöå, ÿê³ ¢æî ³ñíóå. Êàë³ Âû æàäàåöå äàäàöü ïûòàííå ç âÿë³êàé êîëüêàñöþ àäêàçà¢, àáî ¢íåñö³ âÿë³ê³ÿ çìåíû ¢ çìåñò, íåàáõîäíà çìÿí³öü ãýòû ïàðàìåòð. Ïàñëÿ òàãî, ÿê çìåñò áû¢ çìåíåíû, àáî äàäàäçåíàå ïûòàííå - ãýòû ïàðàìåòð ìîæíà ïðûâåñö³ äà áîëüø "ñòàíäàðòíàãà" çíà÷ýííÿ.

        \ No newline at end of file +

        Öàëêàì áÿñïå÷íà çìÿíÿöü çíà÷ýííå ãýòàãà ïàðàìåòðó âà ¢ðîêó, ÿê³ ¢æî ³ñíóå. Êàë³ Âû æàäàåöå äàäàöü ïûòàííå ç âÿë³êàé êîëüêàñöþ àäêàçà¢, àáî ¢íåñö³ âÿë³ê³ÿ çìåíû ¢ çìåñò, íåàáõîäíà çìÿí³öü ãýòû ïàðàìåòð. Ïàñëÿ òàãî, ÿê çìåñò áû¢ çìåíåíû, àáî äàäàäçåíàå ïûòàííå - ãýòû ïàðàìåòð ìîæíà ïðûâåñö³ äà áîëüø "ñòàíäàðòíàãà" çíà÷ýííÿ.

        \ No newline at end of file diff --git a/lang/be/help/lesson/maxattempts.html b/lang/be/help/lesson/maxattempts.html index 863f599d766..ecdcbcc76c8 100644 --- a/lang/be/help/lesson/maxattempts.html +++ b/lang/be/help/lesson/maxattempts.html @@ -1,6 +1,6 @@

        Ìàêñ³ìàëüíàÿ êîëüêàñöü ñïðîáࢠ(âûêàíàíûõ ñòóäýíòàì)

        -

        Ãýòû ïàðàìåòð âûçíà÷àå ìàêñ³ìàëüíóþ êîëüêàñöü ñïðîáà¢, ÿê³ÿ ìîæà çðàá³öü ñòóäýíò àäêàçâàþ÷û íà ëþáîå ç ïûòàííÿ¢ íàâó÷àëüíàé ðàáîòû. Ó âûïàäêó, êàë³ ïûòàííå íå ïðàäñòà¢ëÿå àäêàç, äà ïðûêëàäó Êàðîòê³ àäêàç àáî ˳÷áàâû, ãýòû ïàðàìåòð çàáÿñïå÷âàå íåàáõîäíû ïåðàõîä äà íàñòóïíàé ñòàðîíê³ íàâó÷àëüíàé ðàáîòû.

        +

        Ãýòû ïàðàìåòð âûçíà÷àå ìàêñ³ìàëüíóþ êîëüêàñöü ñïðîáà¢, ÿê³ÿ ìîæà çðàá³öü ñòóäýíò àäêàçâàþ÷û íà ëþáîå ç ïûòàííÿ¢ óðîêó. Ó âûïàäêó, êàë³ ïûòàííå íå ïðàäñòà¢ëÿå àäêàç, äà ïðûêëàäó Êàðîòê³ àäêàç àáî ˳÷áàâû, ãýòû ïàðàìåòð çàáÿñïå÷âàå íåàáõîäíû ïåðàõîä äà íàñòóïíàé ñòàðîíê³ ¢ðîêó.

        Çíà÷ýííå ïà çìà¢÷àíí³ - 5. Ìåíøàå çíà÷ýííå ïåðàøêàäæàå àáäóìâàííþ ïûòàííÿ ñòóäýíòàì. Áîëüøàå çíà÷ýííå âÿäçå äà áîëüøàãà ðàñ÷àðàâàííÿ ñòóäýíòà.

        @@ -8,5 +8,5 @@

        Çà¢âàæöå, øòî ãýòû ïàðàìåòð ãëàáàëüíû ³ ¸í ðàñïà¢ñþäæâàåööà íà ¢ñå ïûòàíí³ òýñòó, íåçàëåæíà àä ³õ òûïó.

        -

        Çà¢âàæöå, øòî ãýòû ïàðàìåòð íå äçåéí³÷àå íà ïðàâåðêó ïûòàííÿ àáî íàâ³ãàöû³ ïà íàâó÷àëüíàé ðàáîöå íàñòà¢í³êàì. Ïðàâåðêà êîëüêàñö³ ñïðîáࢠãðóíòóåööà íà çíà÷ýííÿõ ç áàçû äàäçåíûõ, ³ ñïðîáû çðîáëåíûÿ íàñòà¢í³êàì íå çàë³÷âàþööà. Ó ðýøöå ðýøò íàñòà¢í³ê ñàì ïàâ³íåí âåäàöü àäêàç!

        +

        Çà¢âàæöå, øòî ãýòû ïàðàìåòð íå äçåéí³÷àå íà ïðàâåðêó ïûòàííÿ àáî íàâ³ãàöû³ ïà ¢ðîêó íàñòà¢í³êàì. Ïðàâåðêà êîëüêàñö³ ñïðîáࢠãðóíòóåööà íà çíà÷ýííÿõ ç áàçû äàäçåíûõ, ³ ñïðîáû çðîáëåíûÿ íàñòà¢í³êàì íå çàë³÷âàþööà. Ó ðýøöå ðýøò íàñòà¢í³ê ñàì ïàâ³íåí âåäàöü àäêàç!

        diff --git a/lang/be/help/lesson/maxpages.html b/lang/be/help/lesson/maxpages.html index 975ff215757..9a6da83f1c7 100644 --- a/lang/be/help/lesson/maxpages.html +++ b/lang/be/help/lesson/maxpages.html @@ -1,7 +1,7 @@ -

        Êîëüêàñöü ñòàðîíàê (êàðòàê) äëÿ ïàêàçó

        +

        Êîëüêàñöü ñòàðîíàê (êàðòà¢) äëÿ ïàêàçó

        -

        Ãýòû ïàðàìåòð âûêàðûñòî¢âàåööà òîëüê³ äëÿ íàâó÷àëüíàé ðàáîòû òûïó Ôëýø-Êàðòêà. Çíà÷ýííå ïà çìà¢÷àíí³ 0 - ãýòà çíà÷ûöü, øòî ¢ñå ñòàðîíê³/êàðòê³ ïàêàçâàþööà ïàä÷àñ íàâó÷àëüíàé ðàáîòû. Íàñòðîéêà ãýòàãà ïàðàìåòðó ¢ íåíóëÿâîå çíà÷ýííå ïàêàçâàå êîëüêàñöü ñòàðîíàê, ïàñëÿ ÿêîé áóäçå äàñÿãíóòû êàíåö íàâó÷àëüíàé ðàáîòû ³ ñòóäýíòó áóäçå ïàêàçàíàÿ àäçíàêà.

        +

        Ãýòû ïàðàìåòð âûêàðûñòî¢âàåööà òîëüê³ äëÿ ¢ðîêࢠòûïó Ôëýø-Êàðòà. Çíà÷ýííå ïà çìà¢÷àíí³ 0 - ãýòà çíà÷ûöü, øòî ¢ñå ñòàðîíê³/êàðòû ïàêàçâàþööà ïàä÷àñ ¢ðîêó. Íàñòðîéêà ãýòàãà ïàðàìåòðó ¢ íåíóëÿâîå çíà÷ýííå ïàêàçâàå êîëüêàñöü ñòàðîíàê, ïàñëÿ ÿêîé áóäçå äàñÿãíóòû êàíåö óðîêó ³ ñòóäýíòó áóäçå ïàêàçàíàÿ àäçíàêà.

        -

        Êàë³ ãýòû ïàðàìåòð ìàå çíà÷ýííå, ÿêîå ïåðàâûøàå êîëüêàñöü ñòàðîíàê íàâó÷àëüíàé ðàáîòû, òàäû êàíåö ðàáîòû áóäçå äàñÿãíóòû ïàñëÿ ïàêàçó ¢ñ³õ ñòàðîíàê.

        +

        Êàë³ ãýòû ïàðàìåòð ìàå çíà÷ýííå, ÿêîå ïåðàâûøàå êîëüêàñöü ñòàðîíàê óðîêó, òàäû êàíåö óðîêó áóäçå äàñÿãíóòû ïàñëÿ ïàêàçó ¢ñ³õ ñòàðîíàê.

        diff --git a/lang/be/help/lesson/minquestions.html b/lang/be/help/lesson/minquestions.html index e29797f6063..76e5ac5e95b 100644 --- a/lang/be/help/lesson/minquestions.html +++ b/lang/be/help/lesson/minquestions.html @@ -1,14 +1,14 @@ -

        ̳í³ìàëüíàÿ êîëüêàñöü ïûòàííÿ¢ ó íàâó÷àëüíàé ðàáîöå

        +

        ̳í³ìàëüíàÿ êîëüêàñöü ïûòàííÿ¢ íà ¢ðîêó

        -

        Êàë³ íàâó÷àëüíàÿ ðàáîòà ¢òðûìë³âàå àäíó àáî áîëüø Òàáë³ö Çìåñòó - ãýòû ïàðàìåòð çâû÷àéíà ¢ñòà븢âàåööà. ßãî çíà÷ýííå ¢ñòà븢âàå í³æíþþ ìÿæó ïà êîëüêàñö³ ïûòàííÿ¢, ÿê³ÿ ðàçãëÿäàþööà ïðû ðàçë³êó àäçíàê³. Ãýòà íå çìóøàå ñòóäýíòà àäêàçâàöü ìåíàâ³òà íà ãýòóþ êîëüêàñöü ïûòàííÿ¢ íàâó÷àëüíàé ðàáîòû.

        +

        Êàë³ ¢ðîê óòðûìë³âàå àäíó àáî áîëüø Òàáë³ö Çìåñòó - ãýòû ïàðàìåòð çâû÷àéíà ¢ñòà븢âàåööà. ßãî çíà÷ýííå ¢ñòà븢âàå í³æíþþ ìÿæó ïà êîëüêàñö³ ïûòàííÿ¢, ÿê³ÿ ðàçãëÿäàþööà ïðû ðàçë³êó àäçíàê³. Ãýòà íå çìóøàå ñòóäýíòà àäêàçâàöü ìåíàâ³òà íà ãýòóþ êîëüêàñöü ïûòàííÿ¢ óðîêó.

        -

        Äà ïðûêëàäó, óñòàëÿâàííå ãýòàãà ïàðàìåòðó ¢ çíà÷ýííå 20, äàå ¢ïý¢íåíàñöü ó òûì, øòî ñòóäýíò áà÷û¢, ïðûíàìñ³, ãýòóþ êîëüêàñöü ïûòàííÿ¢, ïåðø ÷ûì àäçíàêà áûëà âûñòà¢ëåíàÿ. Ðàçãëåäç³ì âûïàäàê, êàë³ ñòóäýíò ïàãëÿäçå¢ çìåñò íàâó÷àëüíàé ðàáîòû ç 5-öþ ñòàðîíêàì³ ³ àäêàçࢠíà ¢ñå àäïàâåäíûÿ ïûòàíí³ ïðàâ³ëüíà, ïàñëÿ ÷àãî áû¢ âûáðàíû êàíåö íàâó÷àëüíàé ðàáîòû (ó âûïàäêó êàë³ ¸ñöü òàê³ ïóíêò ó Òàáë³öû çìåñòó). Êàë³ ãýòû ïàðàìåòð íå áû¢ âûçíà÷àíû, àäçíàêà áûëà á 5 ç 5, øòî àçíà÷àå 100%. Àäíàê ç óñòàíî¢êàé ãýòàãà ïàðàìåòðó ¢ çíà÷ýííå 20, àäçíàêà áûëà á çí³æàíàÿ äà 5 ç 20 , øòî àçíà÷àå 25%. Ó âûïàäêó, êàë³ ñòóäýíò ïðàéøî¢ ïðàç óñþ íàâó÷àëüíóþ ðàáîòó ³ áà÷û¢ 25 ñòàðîíàê ³ ïûòàííÿ¢, àëå ïðàâ³ëüíà àäêàçࢠòîëüê³ íà 23 ïûòàíí³, ÿãîíàÿ àäçíàêà áûëà á 23 ç 25, øòî àçíà÷àå 92%.

        +

        Äà ïðûêëàäó, óñòàëÿâàííå ãýòàãà ïàðàìåòðó ¢ çíà÷ýííå 20, äàå ¢ïý¢íåíàñöü ó òûì, øòî ñòóäýíò áà÷û¢, ïðûíàìñ³, ãýòóþ êîëüêàñöü ïûòàííÿ¢, ïåðø ÷ûì àäçíàêà áûëà âûñòà¢ëåíàÿ. Ðàçãëåäç³ì âûïàäàê, êàë³ ñòóäýíò ïàãëÿäçå¢ çìåñò óðîêó ç 5-öþ ñòàðîíêàì³ ³ àäêàçࢠíà ¢ñå àäïàâåäíûÿ ïûòàíí³ ïðàâ³ëüíà, ïàñëÿ ÷àãî áû¢ âûáðàíû êàíåö óðîêó (ó âûïàäêó êàë³ ¸ñöü òàê³ ïóíêò ó Òàáë³öû çìåñòó). Êàë³ ãýòû ïàðàìåòð íå áû¢ âûçíà÷àíû, àäçíàêà áûëà á 5 ç 5, øòî àçíà÷àå 100%. Àäíàê ç óñòàíî¢êàé ãýòàãà ïàðàìåòðó ¢ çíà÷ýííå 20, àäçíàêà áûëà á çí³æàíàÿ äà 5 ç 20 , øòî àçíà÷àå 25%. Ó âûïàäêó, êàë³ ñòóäýíò ïðàéøî¢ ïðàç óâåñü óðîê ³ áà÷û¢ 25 ñòàðîíàê ³ ïûòàííÿ¢, àëå ïðàâ³ëüíà àäêàçࢠòîëüê³ íà 23 ïûòàíí³, ÿãîíàÿ àäçíàêà áûëà á 23 ç 25, øòî àçíà÷àå 92%.

        -

        Êàë³ ãýòû ïàðàìåòð çàäçåéí³÷àíû, òàäû ñòàðîíêà íàâó÷àëüíàé ðàáîòû, ÿêàÿ àäêðûâàåööà, ïàâ³ííà ïàâåäàì³öü íåøòà íàêøòàëò:

        +

        Êàë³ ãýòû ïàðàìåòð çàäçåéí³÷àíû, òàäû ñòàðîíêà óðîêó, ÿêàÿ àäêðûâàåööà, ïàâ³ííà ïàâåäàì³öü íåøòà íàêøòàëò:

        -

        Ó ãýòàé íàâó÷àëüíàé ðàáîöå ìÿðêóåööà, øòî Âû ïàâ³ííû àäêàçàöü, ïðûíàìñ³, íà N ïûòàííÿ¢. Âû ìîæàöå àäêàçàöü íà áîëüøóþ êîëüêàñöü, êàë³ æàäàåöå, àäíàê êàë³ Âû àäêàæàöå ìåíø ÷ûì íà N ïûòàííÿ¢, Âàøàÿ àäçíàêà áóäçå ðàçë³÷àíàÿ ç ðàçë³êó àãóëüíàé êîëüêàñö³ Âàøûõ àäêàçà¢.

        +

        Ó ãýòûì óðîêó ìÿðêóåööà, øòî Âû ïàâ³ííû àäêàçàöü, ïðûíàìñ³, íà N ïûòàííÿ¢. Âû ìîæàöå àäêàçàöü íà áîëüøóþ êîëüêàñöü, êàë³ æàäàåöå, àäíàê êàë³ Âû àäêàæàöå ìåíø ÷ûì íà N ïûòàííÿ¢, Âàøàÿ àäçíàêà áóäçå ðàçë³÷àíàÿ ç ðàçë³êó àãóëüíàé êîëüêàñö³ Âàøûõ àäêàçà¢.

        Äçå, çðàçóìåëà, "N" çàìåíåíû çíà÷ýííåì ïàðàìåòðó, ÿê³ âû âûá³ðàåöå.

        -

        Êàë³ ãýòû ïàðàìåòð óñòàëÿâàíû, ñòóäýíòàì ãàâîðûööà íà êîëüê³ ïûòàííÿ¢ ÿíû àäêàçàë³ ³ íà êîëüê³ ìàþöü äàöü àäêàç.

        +

        Êàë³ ãýòû ïàðàìåòð óñòàëÿâàíû, ñòóäýíòàì ãàâîðûööà íà êîëüê³ ïûòàííÿ¢ ÿíû àäêàçàë³ ³ íà êîëüê³ ìàþöü äàöü àäêàç. diff --git a/lang/be/help/lesson/mods.html b/lang/be/help/lesson/mods.html index c89cf05e5e0..a735bfc7468 100644 --- a/lang/be/help/lesson/mods.html +++ b/lang/be/help/lesson/mods.html @@ -1,5 +1,7 @@ - Íàâó÷àëüíàÿ ðàáîòà + Óðîê + +

          +

          Óðîê äàíîñ³öü íàâó÷àëüíû ìàòýðûÿë ó ö³êàâàé ³ ãíóòêàé ôîðìå. ¨í ñêëàäàåööà ç íàáîðó ñòàðîíàê. Êîæíàÿ ñòàðîíêà çâû÷àéíà çàêàí÷âàåööà ïûòàííåì ³ ïý¢íàé êîëüêàñöþ ìàã÷ûìûõ àäêàçà¢. Ó çàëåæíàñö³ àä ïðàâ³ëüíàñö³ âûáàðó àäêàçó, ñòóäýíò ïåðàõîäç³öü íà íàñòóïíóþ ñòàðîíêó àáî âÿðòàåööà íà ïàïÿðýäíþþ. Íàâ³ãàöûÿ ïà ¢ðîêó ìîæà áûöü ïðàìîé àáî êîìïëåêñíàé, ó çàëåæíàñö³ àä ñòðóêòóðû ìàòýðûÿëó, ÿê³ âûêëàäàåööà.

          +
        + -
        -

        Íàâó÷àëüíàÿ ðàáîòà äàíîñ³öü íàâó÷àëüíû ìàòýðûÿë ó ö³êàâàé ³ ãíóòêàé ôîðìå. ¨í ñêëàäàåööà ç íàáîðó ñòàðîíàê. Êîæíàÿ ñòàðîíêà çâû÷àéíà çàêàí÷âàåööà ïûòàííåì ³ ïý¢íàé êîëüêàñöþ ìàã÷ûìûõ àäêàçà¢. Ó çàëåæíàñö³ àä ïðàâ³ëüíàñö³ âûáàðó àäêàçó, ñòóäýíò ïåðàõîäç³öü íà íàñòóïíóþ ñòàðîíêó àáî âÿðòàåööà íà ïàïÿðýäíþþ. Íàâ³ãàöûÿ ïà íàâó÷àëüíàé ðàáîöå ìîæà áûöü ïðàìîé àáî êîìïëåêñíàé, ó çàëåæíàñö³ àä ñòðóêòóðû ìàòýðûÿëó, ÿê³ âûêëàäàåööà.

        -
        \ No newline at end of file diff --git a/lang/be/help/lesson/nextpageaction.html b/lang/be/help/lesson/nextpageaction.html index 69b93618d54..d70482b4d7a 100644 --- a/lang/be/help/lesson/nextpageaction.html +++ b/lang/be/help/lesson/nextpageaction.html @@ -1,11 +1,11 @@

        Äçåÿíí³ ïàñëÿ ïðàâ³ëüíàãà àäêàçó

        -

        Çâû÷àéíàå äçåÿííå, ïðûòðûìë³âàööà ïåðàõîäó, ÿê ïàêàçàíà ¢ àäêàçå. Ó áîëüøàñö³ âûïàäêࢠáóäçå ïàêàçàíà Íàñòóïíàÿ ñòàðîíêà íàâó÷àëüíàé ðàáîòû. Ñòóäýíò ïðàõîäç³öü íàâó÷àëüíóþ ðàáîòó ¢ ëàã³÷íàé ïàñëÿäî¢íàñö³: àä ïà÷àòêó äà êàíöà.

        +

        Çâû÷àéíàå äçåÿííå, ïðûòðûìë³âàööà ïåðàõîäó, ÿê ïàêàçàíà ¢ àäêàçå. Ó áîëüøàñö³ âûïàäêࢠáóäçå ïàêàçàíà Íàñòóïíàÿ ñòàðîíêà ¢ðîêó. Ñòóäýíò ïðàõîäç³öü óðîê ó ëàã³÷íàé ïàñëÿäî¢íàñö³: àä ïà÷àòêó äà êàíöà.

        -

        Ç ³íøàãà áîêó, ìîäóëü íàâó÷àëüíàÿ ðàáîòà ìîæà áûöü âûêàðûñòàíû äëÿ ïàêàçó Ôëýø-Êàðòà¢. Ñòóäýíòó ïàêàçâàåööà íåêàòîðàÿ ³íôàðìàöûÿ (íå àáàâÿçêîâà) ³ ïûòàííå, ÿê ïðàâ³ëà, ó âûïàäêîâûì ïàðàäêó. Íÿìà âûçíà÷àíàãà ïà÷àòêó ³ êàíöà. Òîëüê³ íàáîð Êàðòà¢, øòî ïàêàçâàþööà àäíà çà äðóãîé ó âûïàäêîâûì ïàðàäêó.

        +

        Ç ³íøàãà áîêó, ìîäóëü óðîêó ìîæà áûöü âûêàðûñòàíû äëÿ ïàêàçó Ôëýø-Êàðòà¢. Ñòóäýíòó ïàêàçâàåööà íåêàòîðàÿ ³íôàðìàöûÿ (íå àáàâÿçêîâà) ³ ïûòàííå, ÿê ïðàâ³ëà, ó âûïàäêîâûì ïàðàäêó. Íÿìà âûçíà÷àíàãà ïà÷àòêó ³ êàíöà. Òîëüê³ íàáîð Êàðòà¢, øòî ïàêàçâàþööà àäíà çà äðóãîé ó âûïàäêîâûì ïàðàäêó.

        Ãýòàÿ îïöûÿ äàçâàëÿå âûáðàöü äâà âåëüì³ ïðîñòûõ âàðûÿíòû ïàâîäç³íࢠÔëýø-Êàðòà¢. Îïöûÿ "Ïàêàçàöü íåïðàãëåäæàíóþ ñòàðîíêó" í³êîë³ íå ïàêàæà àäíó ³ òóþ æ ñòàðîíêó äâîé÷û (íàâàò êàë³ ñòóäýíò íå àäêàçࢠíà ïûòàííå çâÿçàíàå ç Êàðòàé/Ñòàðîíêàé ïðàâ³ëüíà). Äðóãàÿ îïöûÿ "Ïàêàçàöü ñòàðîíêó ïàê³íóòóþ áåç àäêàçó" äàçâàëÿå ñòóäýíòó ¢áà÷ûöü ñòàðîíêó, ÿêàÿ áûëà ¢æî ïàêàçàíàÿ, àëå àäêàç íà àäïàâÿäàþ÷àå ¸é ïûòàííå áû¢ íÿïðàâ³ëüíûì.

        -

        Ó àáîäâóõ âûïàäêàõ íàâó÷àëüíàé ðàáîòû Ôëýø-Êàðòàì³, íàñòà¢í³ê ìîæà âûðàøûöü ö³ âàðòà âûêàðûñòàöü óñå Êàðòû/Ñòàðîíê³, àáî âûïàäêîâóþ ïàñëÿäî¢íàñöü ÷àñòê³ ç ³õ. Ãýòà âûá³ðàåööà ïðàç ïàðàìåòð "Êîëüêàñöü ñòàðîíàê (êàðòà¢) äëÿ ïàêàçó".

        +

        Ó àáîäâóõ âûïàäêàõ óðîêó Ôëýø-Êàðòàì³, íàñòà¢í³ê ìîæà âûðàøûöü ö³ âàðòà âûêàðûñòàöü óñå Êàðòû/Ñòàðîíê³, àáî âûïàäêîâóþ ïàñëÿäî¢íàñöü ÷àñòê³ ç ³õ. Ãýòà âûá³ðàåööà ïðàç ïàðàìåòð "Êîëüêàñöü ñòàðîíàê (êàðòà¢) äëÿ ïàêàçó".

        diff --git a/lang/be/help/lesson/overview.html b/lang/be/help/lesson/overview.html index ff199d0bba9..d6bed111c67 100644 --- a/lang/be/help/lesson/overview.html +++ b/lang/be/help/lesson/overview.html @@ -1,31 +1,31 @@

        Àãëÿä

          -
        1. Íàâó÷àëüíàÿ ðàáîòà ñêëàäàåööà ç íàáîðó ñòàðîíàê ³, êàë³ íåàáõîäíà, òàáë³öࢠçìåñòó.
        2. -
        3. Ñòàðîíêà íàïî¢íåíàÿ íåêàòîðàé ³íôàðìàöûÿé, ÿêàÿ çâû÷àéíà çàêàí÷âàåööà ïûòàííåì. Òàêàÿ ñòàðîíêà ìàå íàçâó Ñòàðîíêà ç ïûòàííåì.
        4. -
        5. Êîæíàÿ ñòàðîíêà çâû÷àéíà ìàå íàáîð àäêàçà¢.
        6. -
        7. Êîæíû àäêàç ìàå òýêñòàâàå ñóïðàâàäæýííå, ÿêîå ç'ÿ¢ëÿåööà ïðû âûáàðû àäêàçó. Ãýòà òýêñòàâàå ñóïðàâàäæýííå ìàå íàçâó Âîäãóê.
        8. -
        9. Ãýòàê æà ç êîæíûì àäêàçàì çâÿçàíû Ïåðàõîä. Ïåðàõîä ìîæà áûöü àäíîñíûì: ãýòàÿ ñòàðîíêà, íàñòóïíàÿ ñòàðîíêà; àáî àáñàëþòíûì - ïàêàçâàåööà ëþáàÿ ñà ñòàðîíàê íàâó÷àëüíàé ðàáîòû àáî êàíåö ðàáîòû.
        10. -
        11. Ïà-çìà¢÷àíí³, ïåðøû àäêàç ïåðàõîäç³öü íà íàñòóïíóþ ñòàðîíêó íàâó÷àëüíàé ðàáîòû. Íàñòóïíûÿ àäêàçû ïåðàõîäçÿöü íà áÿãó÷óþ ñòàðîíêó. Òàê³ì ÷ûíàì, ñòóäýíòó ïàêàçâàåööà òàÿ æ ñàìàÿ ñòàðîíêà ÿø÷ý ðàç, ó âûïàäêó êàë³ ¸í íå âûáðࢠïåðøû àäêàç.
        12. -
        13. Íàñòóïíàÿ ñòàðîíêà âûçíà÷àåööà ¢ àäïàâåäíàñö³ ç ëàã³÷íàé ïàñëÿäî¢íàñöþ. Ãýòà ïàðàäàê ñòàðîíàê ó àäëþñòðàâàíí³ íàâó÷àëüíàé ðàáîòû íàñòà¢í³êà. Ãýòû ïàðàäàê ìîæà áûöü çìåíåíû øëÿõàì ïåðàñî¢âàííÿ ñòàðîíàê ó ìåæàõ íàâó÷àëüíàé ðàáîòû.
        14. -
        15. Íàâó÷àëüíàÿ ðàáîòà òàêñàìà ìàå ïàðàäàê íàâ³ãàöû³. Ãýòà ïàðàäàê ñòàðîíàê ó àäëþñòðàâàíí³ íàâó÷àëüíàé ðàáîòû ñòóäýíòà. ¨í âûçíà÷àåööà ïåðàõîäàì³, ïàêàçàíûì³ äëÿ àñîáíûõ àäêàçࢠ³ ¸í ìîæà àäðîçí³âàööà àä ëàã³÷íàé ïàñëÿäî¢íàñö³. (Êàë³ äëÿ ïåðàõîäࢠíå áûë³ çìåíåíûÿ ³õ çíà÷ýíí³ ïà-çìà¢÷àíí³, ëàã³÷íàÿ ïàñëÿäî¢íàñöü çàõî¢âàåööà). Íàñòà¢í³ê ìàå ìàã÷ûìàñöü çìÿíÿöü ïàðàäàê íàâ³ãàöû³.
        16. -
        17. Ïðû àäëþñòðàâàíí³ ñòóäýíòó, àäêàçû íà ïûòàííå çâû÷àéíà ïåðàìÿøàíûÿ. Ãýòà àçíà÷àå, øòî ïåðøû àäêàç ç ïóíêòà ïîãëÿäó íàñòà¢í³êà, çóñ³ì íå àáàâÿçêîâà áóäçå ïåðøûì ïà ë³êó àäêàçàì ó àäëþñòðàâàíí³ ïûòàííÿ ñòóäýíòà. (Áîëüø òàãî, êîæíû ðàç ïðû ïàêàçå àäêàçà¢, ÿíû áóäóöü ñïàðàäêàâàíûÿ ³íàêø). Âûêëþ÷ýííå ¢ÿ¢ëÿå íàáîð àäêàçࢠäëÿ òûïó ïûòàííÿ "Àäïàâåäíàñö³", òóò àäêàçû ïàêàçâàþööà ¢ òûì æà ïàðàäêó, ÿê ³ ¢âîäç³ë³ñÿ íàñòà¢í³êàì.
        18. -
        19. Êîëüêàñöü àäêàçࢠìîæà àäðîçí³âàööà àä ñòàðîíê³ äà ñòàðîíê³. Äà ïðûêëàäó, äàïóñêàåööà, øòî íåêàòîðûÿ ñòàðîíê³ ìîãóöü ìåöü ïûòàííå òûïó Òàê/Íå, ó òîé ÷àñ, ÿê ³íøûÿ ìàþöü àäç³í ïðàâ³ëüíû àäêàç ³ 3 íÿïðàâ³ëüíûõ.
        20. -
        21. Öàëêàì ìàã÷ûìà çðàá³öü ñòàðîíêó áåç àäêàçà¢. Ñòóäýíòó áóäçå ïàêàçàíàÿ êíîïêà Ïðàöÿãíóöü çàìåñò íàáîðó àäêàçà¢.
        22. -
        23. Ç ìýòàé àöýíê³ íàâó÷àëüíàé ðàáîòû, çà Ïðàâ³ëüíû àäêàç ïðûìàåööà ïåðàõîä íà ñòàðîíêó, ÿêàÿ çìÿø÷àåööà í³æýé ïà ëàã³÷íûì ïàðàäêó, ÷ûì áÿãó÷àÿ ñòàðîíêà. -Çà Íÿïðàâ³ëüíû àäêàç ïðûìàåööà òîé, ÿê³ ïåðàõîäç³öü àëüáî íà áÿãó÷óþ ñòàðîíêó, àëüáî âûøýé ïà ëàã³÷íûì ïàðàäêó ÷ûì áÿãó÷àÿ ñòàðîíêà. Êàë³ ïåðàõîäû íå çìåíåíûÿ, òî çà ïðàâ³ëüíû ïðûìàåööà ïåðøû àäêàç ç íàáîðó àäêàçà¢, àñòàòí³ÿ ë³÷àööà íÿïðàâ³ëüíûì³.
        24. -
        25. Ïûòàíí³ ìîãóöü ìåöü áîëüø çà àäç³í ïðàâ³ëüíû àäêàç. Äà ïðûêëàäó, êàë³ àáîäâà ç ïûòàííÿ¢ ìàþöü ïåðàõîä íà íàñòóïíóþ ñòàðîíêó, àáîäâà ç ³õ ë³÷àööà ïðàâ³ëüíûì³. (Õîöü ñòóäýíòàì áóäçå ïàêàçàíàÿ íàñòóïíàÿ ñòàðîíêà ïðû âûáàðû ëþáîãà ç ïðàâ³ëüíûõ àäêàçà¢, âîäãóê äëÿ ãýòûõ äâóõ àäêàçࢠìîæà àäðîçí³âàööà).
        26. -
        27. Ïðû ïðàãëÿäçå íàâó÷àëüíàé ðàáîòû íàñòà¢í³êàì, ïðàâ³ëüíû àäêàç ïàäêðýñëåíû.
        28. -
        29. Òàáë³öû çìåñòó óÿ¢ëÿþöü ñàáîé ïðîñòûÿ ñòàðîíê³, ÿê³ÿ ìàþöü ñïàñûëê³ íà ³íøûÿ ñòàðîíê³ íàâó÷àëüíàé ðàáîòû. Çâû÷àéíà íàâó÷àëüíàÿ ðàáîòà ïà÷ûíàåööà ç Òàáë³öû çìåñòó, ÿêàÿ ãðàå ðîëþ Çìåñòó.
        30. -
        31. Êîæíàÿ ñïàñûëêà ¢ òàáë³öû çìåñòó ñêëàäàåööà ç äçâþõ ÷àñòàê: àï³ñàííå ñïàñûëê³ ³ çàãàëîâàê ñòàðîíê³, íà ÿêóþ ðîá³ööà ñïàñûëêà.
        32. -
        33. Òàáë³öà çìåñòó äçåë³öü íàâó÷àëüíóþ ðàáîòó íà íåêàòîðóþ êîëüêàñöü ñåêöûÿ¢. Êîæíàÿ ñåêöûÿ ìîæà ¢òðûìë³âàöü íàáîð ñòàðîíàê (ÿê ïðàâ³ëà, ÿíû àäíîñÿööà äà àäíîé òýìû). Êàíåö ñåêöû³ çâû÷àéíà çàêàí÷âàåööà ñòàðîíêàé Êàíåö çìåñòó. Ãýòà àäìûñëîâàÿ ñòàðîíêà, ÿêàÿ çâû÷àéíà âÿðòàå ñòóäýíòà äà ïàïÿðýäíÿé òàáë³öû çìåñòó. (Ïåðàõîä ñà ñòàðîíê³ "Êàíåö çìåñòó" ìîæà áûöü çìåíåíû, êàë³ ãýòà íåàáõîäíà).
        34. -
        35. Ó íàâó÷àëüíàé ðàáîöå ìîæà áûöü áîëüø çà àäíó Òàáë³öó çìåñòó. Äà ïðûêëàäó, íàâó÷àëüíàÿ ðàáîòà ìîæà áûöü ç ïîñïåõàì ïàäçåëåíàÿ íà ïàäñåêöû³ ¢ ìåæàõ àäíîé Òàáë³öû çìåñòó.
        36. -
        37. Ãýòà âåëüì³ âàæíà, äàâàöü ñòóäýíòó ìàã÷ûìàñöü óáà÷ûöü êàíåö íàâó÷àëüíàé ðàáîòû. Ãýòà ìîæà áûöü çðîáëåíà øëÿõàì äàäàâàííÿ ñïàñûëê³ "Êàíåö íàâó÷àëüíàé ðàáîòû" íà ãàëî¢íàé Òàáë³öû çìåñòó, ïðû ïåðàõîäçå íà ÿêóþ íàâó÷àëüíàÿ ðàáîòà áóäçå çàâåðøàíàÿ. ²íøû âàðûÿíò çàâÿðøýííÿ íàâó÷àëüíàé ðàáîòû ïðûçíà÷àíû äëÿ àïîøíÿé (ïàâîäëå ëàã³÷íàãà ïàðàäêó) Òàáë³öû çìåñòó ¢ íàâó÷àëüíàé ðàáîöå. Ó ãýòûì âûïàäêó ìîæíà íå äàäàâàöü Êàíåö çìåñòó, íàâó÷àëüíàÿ ðàáîòà áóäçå çàâåðøàíàÿ ïà äàñÿãíåíí³ ÿå àïîøíÿé ñòàðîíê³.
        38. -
        39. Êàë³ íàâó÷àëüíàÿ ðàáîòà ¢êëþ÷àå àäíó àëüáî áîëüø òàáë³öࢠçìåñòó, ðýêàìåíäóåööà ¢ñòàëÿâàöü ïàðàìåòð "̳í³ìàëüíàÿ êîëüêàñöü ïûòàííÿ¢" ç íàñòóïíàé ïðû÷ûíû. Ñïðàâà ¢ òûì, øòî ãýòû ïàðàìåòð âûñòà¢ëÿå í³æíþþ ìÿæó êîëüêàñö³ ïðàãëåäæàíûõ ñòàðîíàê ç ÿê³õ ñêëàäàåööà àöýíêà. Áåç ãýòàãà ïàðàìåòðó ñòóäýíò ìîæà íàâåäàöü àäíó ñåêöûþ íàâó÷àëüíàé ðàáîòû, àäêàçàöü íà ¢ñå ïûòàíí³ ïðàâ³ëüíà ³ ïàê³íóöü íàâó÷àëüíóþ ðàáîòó ç ìàêñ³ìàëüíàé àäçíàêàé.
        40. -
        41. Ó äàëåéøûì, êàë³ ìàåööà Òàáë³öà çìåñòó, ñòóäýíò ìàå ìàã÷ûìàñöü íàâåäâàöü àäíó ³ òóþ æ ñåêöûþ áîëüø çà àäç³í ðàç. Âàðòà àäçíà÷ûöü, øòî àäçíàêà ñêëàäàåööà ç êîëüêàñö³ ñòàðîíàê íà ÿê³ÿ àäêàçâàë³ àäç³í ðàç. Òàê³ì ÷ûíàì, ïà¢òîðíû àäêàç íà àäç³í ³ òîé æà íàáîð ïûòàííÿ¢ àí³ÿê íå ïàâÿë³÷âàå àäçíàêó. (Áîëüø çà òîå, òàê³ àäêàç çàí³æàå àäçíàêó, áî êîëüêàñöü ïðàãëåäæàíûõ ñòàðîíàê âûêàðûñòî¢âàåööà ¢ íàçî¢í³êó ïðû ðàçë³êó àäçíàê³). Äëÿ òàãî, êàá ïàêàçàöü ñòóäýíòàì ³õ ïàñïÿõîâàñöü, ³ì äýìàíñòðóåööà ¢ äýòàëÿõ ³íôàðìàöûÿ àá òûì, íà êîëüê³ ïûòàííÿ¢ ÿíû äàë³ ïðàâ³ëüíûÿ àäêàçû, àãóëüíóþ êîëüêàñöü ïðàãëåäæàíûõ ñòàðîíàê ³ ³õ áÿãó÷óþ àäçíàêó ïà êîæíàé ñåêöû³ (Òàáë³öû çìåñòó) íàâó÷àëüíàé ðàáîòû.
        42. -
        43. Êàíåö íàâó÷àëüíàé ðàáîòû äàñÿãàåööà àëüáî ÿ¢íûì ïåðàõîäàì íà êàíåö íàâó÷àëüíàé ðàáîòû (ç Òàáë³öû çìåñòó), àáî ïðû ïåðàõîäçå íà íàñòóïíóþ ñòàðîíêó ïàñëÿ àïîøíÿé (ïàâîäëå ëàã³÷íàãà ïàðàäêó). Êàë³ êàíåö íàâó÷àëüíàé ðàáîòû äàñÿãíóòû, ñòóäýíò àòðûìë³âàå ïàâåäàìëåííå â³íøàâàëüíàãà õàðàêòàðó ³ ÿìó ïàêàçâàåööà ÿãîíàÿ àäçíàêà çà íàâó÷àëüíóþ ðàáîòó (ë³÷áà ïûòàííÿ¢ íà ÿê³ÿ äàäçåíûÿ ïðàâ³ëüíûÿ àäêàçû/êîëüêàñöü ïðàãëåäæàíûõ ñòàðîíàê).
        44. -
        45. Êàë³ êàíåö íàâó÷àëüíàé ðàáîòû íå äàñÿãíóòû ³ ñòóäýíò ÿãî ïðîñòà ïàê³äàå, òî ïðû ïà¢òîðíûì íàâåäâàíí³ íàâó÷àëüíàé ðàáîòû ñòóäýíòó áóäçå ïðàïàíàâàíà ïà÷àöü ðàáîòó àä ïà÷àòêó, àáî ïðàöÿãíóöü ç àïîøíÿãà ïûòàííÿ, íà ÿêîå áû¢ äàäçåíû ïðàâ³ëüíû àäêàç.
        46. -
        47. Äëÿ íàâó÷àëüíûõ ðàáîò, ÿê³ÿ äàçâàëÿþöü ïåðàçäà÷ó, íàñòà¢í³ê ìîæà àáðàöü ïàë³òûêó àöýíê³ ñïðîáࢠïåðàçäà÷à¢, äà ïðûêëàäó, ñÿðýäíþþ àáî ìàêñ³ìàëüíóþ àäçíàêó ïà ¢ñ³õ ñïðîáàõ, ³ âûêàðûñòàöü ÿê êàí÷àòêîâóþ àäçíàêó çà íàâó÷àëüíóþ ðàáîòó.
        48. +
        49. Óðîê ñêëàäàåööà ç íàáîðó ñòàðîíàê ³, êàë³ íåàáõîäíà, òàáë³öࢠçìåñòó. +
        50. Ñòàðîíêà íàïî¢íåíàÿ íåêàòîðàé ³íôàðìàöûÿé, ÿêàÿ çâû÷àéíà çàêàí÷âàåööà ïûòàííåì. Òàêàÿ ñòàðîíêà ìàå íàçâó Ñòàðîíêà ç ïûòàííåì. +
        51. Êîæíàÿ ñòàðîíêà çâû÷àéíà ìàå íàáîð àäêàçà¢. +
        52. Êîæíû àäêàç ìàå òýêñòàâàå ñóïðàâàäæýííå, ÿêîå ç'ÿ¢ëÿåööà ïðû âûáàðû àäêàçó. Ãýòà òýêñòàâàå ñóïðàâàäæýííå ìàå íàçâó Âîäãóê. +
        53. Ãýòàê æà ç êîæíûì àäêàçàì çâÿçàíû Ïåðàõîä. Ïåðàõîä ìîæà áûöü àäíîñíûì: ãýòàÿ ñòàðîíêà, íàñòóïíàÿ ñòàðîíêà; àáî àáñàëþòíûì - ïàêàçâàåööà ëþáàÿ ñà ñòàðîíàê óðîêó àáî êàíåö óðîêó. +
        54. Ïà çìà¢÷àíí³, ïåðøû àäêàç ïåðàõîäç³öü íà íàñòóïíóþ ñòàðîíêó óðîêà. Íàñòóïíûÿ àäêàçû ïåðàõîäçÿöü íà áÿãó÷óþ ñòàðîíêó. Òàê³ì ÷ûíàì, ñòóäýíòó ïàêàçâàåööà òàÿ æ ñàìàÿ ñòàðîíêà ÿø÷ý ðàç, ó âûïàäêó êàë³ ¸í íå âûáðࢠïåðøû àäêàç. +
        55. Íàñòóïíàÿ ñòàðîíêà âûçíà÷àåööà ¢ àäïàâåäíàñö³ ç ëàã³÷íàé ïàñëÿäî¢íàñöþ. Ãýòà ïàðàäàê ñòàðîíàê ó àäëþñòðàâàíí³ ¢ðîêà íàñòà¢í³êà. Ãýòû ïàðàäàê ìîæà áûöü çìåíåíû øëÿõàì ïåðàñî¢âàííÿ ñòàðîíàê ó ìåæàõ óðîêà. +
        56. Óðîê òàêñàìà ìàå ïàðàäàê íàâ³ãàöû³. Ãýòà ïàðàäàê ñòàðîíàê ó àäëþñòðàâàíí³ ¢ðîêà ñòóäýíòà. ¨í âûçíà÷àåööà ïåðàõîäàì³, ïàêàçàíûì³ äëÿ àñîáíûõ àäêàçࢠ³ ¸í ìîæà àäðîçí³âàööà àä ëàã³÷íàé ïàñëÿäî¢íàñö³. (Êàë³ äëÿ ïåðàõîäࢠíå áûë³ çìåíåíûÿ ³õ çíà÷ýíí³ ïà çìà¢÷àíí³, ëàã³÷íàÿ ïàñëÿäî¢íàñöü çàõî¢âàåööà). Íàñòà¢í³ê ìàå ìàã÷ûìàñöü çìÿíÿöü ïàðàäàê íàâ³ãàöû³. +
        57. Ïðû àäëþñòðàâàíí³ ñòóäýíòó, àäêàçû íà ïûòàííå çâû÷àéíà ïåðàìÿøàíûÿ. Ãýòà àçíà÷àå, øòî ïåðøû àäêàç ç ïóíêòà ïîãëÿäó íàñòà¢í³êà, çóñ³ì íå àáàâÿçêîâà áóäçå ïåðøûì ïà ë³êó àäêàçàì ó àäëþñòðàâàíí³ ïûòàííÿ ñòóäýíòà. (Áîëüø òàãî, êîæíû ðàç ïðû ïàêàçå àäêàçà¢, ÿíû áóäóöü ñïàðàäêàâàíûÿ ³íàêø). Âûêëþ÷ýííå ¢ÿ¢ëÿå íàáîð àäêàçࢠäëÿ òûïó ïûòàííÿ "Àäïàâåäíàñö³", òóò àäêàçû ïàêàçâàþööà ¢ òûì æà ïàðàäêó, ÿê ³ ¢âîäç³ë³ñÿ íàñòà¢í³êàì. +
        58. Êîëüêàñöü àäêàçࢠìîæà àäðîçí³âàööà àä ñòàðîíê³ äà ñòàðîíê³. Äà ïðûêëàäó, äàïóñêàåööà, øòî íåêàòîðûÿ ñòàðîíê³ ìîãóöü ìåöü ïûòàííå òûïó Òàê/Íå, ó òîé ÷àñ, ÿê ³íøûÿ ìàþöü àäç³í ïðàâ³ëüíû àäêàç ³ 3 íÿïðàâ³ëüíûõ. +
        59. Öàëêàì ìàã÷ûìà çðàá³öü ñòàðîíêó áåç àäêàçà¢. Ñòóäýíòó áóäçå ïàêàçàíàÿ êíîïêà Ïðàöÿãíóöü çàìåñò íàáîðó àäêàçà¢. +
        60. Ç ìýòàé àöýíê³ ¢ðîêó, çà Ïðàâ³ëüíû àäêàç ïðûìàåööà ïåðàõîä íà ñòàðîíêó, ÿêàÿ çìÿø÷àåööà í³æýé ïà ëàã³÷íûì ïàðàäêó, ÷ûì áÿãó÷àÿ ñòàðîíêà. +Çà Íÿïðàâ³ëüíû àäêàç ïðûìàåööà òîé, ÿê³ ïåðàõîäç³öü àëüáî íà áÿãó÷óþ ñòàðîíêó, àëüáî âûøýé ïà ëàã³÷íûì ïàðàäêó ÷ûì áÿãó÷àÿ ñòàðîíêà. Êàë³ ïåðàõîäû íå çìåíåíûÿ, òî çà ïðàâ³ëüíû ïðûìàåööà ïåðøû àäêàç ç íàáîðó àäêàçà¢, àñòàòí³ÿ ë³÷àööà íÿïðàâ³ëüíûì³. +
        61. Ïûòàíí³ ìîãóöü ìåöü áîëüø çà àäç³í ïðàâ³ëüíû àäêàç. Äà ïðûêëàäó, êàë³ àáîäâà ç ïûòàííÿ¢ ìàþöü ïåðàõîä íà íàñòóïíóþ ñòàðîíêó, àáîäâà ç ³õ ë³÷àööà ïðàâ³ëüíûì³. (Õîöü ñòóäýíòàì áóäçå ïàêàçàíàÿ íàñòóïíàÿ ñòàðîíêà ïðû âûáàðû ëþáîãà ç ïðàâ³ëüíûõ àäêàçà¢, âîäãóê äëÿ ãýòûõ äâóõ àäêàçࢠìîæà àäðîçí³âàööà). +
        62. Ïðû ïðàãëÿäçå ¢ðîêà íàñòà¢í³êàì, ïðàâ³ëüíû àäêàç ïàäêðýñëåíû. +
        63. Òàáë³öû çìåñòó óÿ¢ëÿþöü ñàáîé ïðîñòûÿ ñòàðîíê³, ÿê³ÿ ìàþöü ñïàñûëê³ íà ³íøûÿ ñòàðîíê³ ¢ðîêà. Çâû÷àéíà ¢ðîê ïà÷ûíàåööà ç Òàáë³öû çìåñòó, ÿêàÿ ãðàå ðîëþ Çìåñòó. +
        64. Êîæíàÿ ñïàñûëêà ¢ òàáë³öû çìåñòó ñêëàäàåööà ç äçâþõ ÷àñòàê: àï³ñàííå ñïàñûëê³ ³ çàãàëîâàê ñòàðîíê³, íà ÿêóþ ðîá³ööà ñïàñûëêà. +
        65. Òàáë³öà çìåñòó äçåë³öü óðîê íà íåêàòîðóþ êîëüêàñöü ñåêöûÿ¢. Êîæíàÿ ñåêöûÿ ìîæà ¢òðûìë³âàöü íàáîð ñòàðîíàê (ÿê ïðàâ³ëà, ÿíû àäíîñÿööà äà àäíîé òýìû). Êàíåö ñåêöû³ çâû÷àéíà çàêàí÷âàåööà ñòàðîíêàé Êàíåö çìåñòó. Ãýòà àäìûñëîâàÿ ñòàðîíêà, ÿêàÿ çâû÷àéíà âÿðòàå ñòóäýíòà äà ïàïÿðýäíÿé òàáë³öû çìåñòó. (Ïåðàõîä ñà ñòàðîíê³ "Êàíåö çìåñòó" ìîæà áûöü çìåíåíû, êàë³ ãýòà íåàáõîäíà). +
        66. Âà ¢ðîêó ìîæà áûöü áîëüø çà àäíó Òàáë³öó çìåñòó. Äà ïðûêëàäó, óðîê ìîæà áûöü ç ïîñïåõàì ïàäçåëåíû íà ïàäñåêöû³ ¢ ìåæàõ àäíîé Òàáë³öû çìåñòó. +
        67. Ãýòà âåëüì³ âàæíà, äàâàöü ñòóäýíòó ìàã÷ûìàñöü óáà÷ûöü êàíåö óðîêà. Ãýòà ìîæà áûöü çðîáëåíà øëÿõàì äàäàâàííÿ ñïàñûëê³ "Êàíåö óðîêà" íà ãàëî¢íàé Òàáë³öû çìåñòó, ïðû ïåðàõîäçå íà ÿêóþ óðîê áóäçå çàâåðøàíû. ²íøû âàðûÿíò çàâÿðøýííÿ ¢ðîêó ïðûçíà÷àíû äëÿ àïîøíÿé (ïàâîäëå ëàã³÷íàãà ïàðàäêó) Òàáë³öû çìåñòó âà ¢ðîêó. Ó ãýòûì âûïàäêó ìîæíà íå äàäàâàöü Êàíåö çìåñòó, óðîê áóäçå çàâåðøàíû ïà äàñÿãíåíí³ ÿãî àïîøíÿé ñòàðîíê³. +
        68. Êàë³ ¢ðîê óêëþ÷àå àäíó àëüáî áîëüø òàáë³öࢠçìåñòó, ðýêàìåíäóåööà ¢ñòàëÿâàöü ïàðàìåòð "̳í³ìàëüíàÿ êîëüêàñöü ïûòàííÿ¢" ç íàñòóïíàé ïðû÷ûíû. Ñïðàâà ¢ òûì, øòî ãýòû ïàðàìåòð âûñòà¢ëÿå í³æíþþ ìÿæó êîëüêàñö³ ïðàãëåäæàíûõ ñòàðîíàê ç ÿê³õ ñêëàäàåööà àöýíêà. Áåç ãýòàãà ïàðàìåòðó ñòóäýíò ìîæà íàâåäàöü àäíó ñåêöûþ ¢ðîêó, àäêàçàöü íà ¢ñå ïûòàíí³ ïðàâ³ëüíà ³ ïàê³íóöü óðîê ç ìàêñ³ìàëüíàé àäçíàêàé. +
        69. Ó äàëåéøûì, êàë³ ìàåööà Òàáë³öà çìåñòó, ñòóäýíò ìàå ìàã÷ûìàñöü íàâåäâàöü àäíó ³ òóþ æ ñåêöûþ áîëüø çà àäç³í ðàç. Âàðòà àäçíà÷ûöü, øòî àäçíàêà ñêëàäàåööà ç êîëüêàñö³ ñòàðîíàê íà ÿê³ÿ àäêàçâàë³ àäç³í ðàç. Òàê³ì ÷ûíàì, ïà¢òîðíû àäêàç íà àäç³í ³ òîé æà íàáîð ïûòàííÿ¢ àí³ÿê íå ïàâÿë³÷âàå àäçíàêó. (Áîëüø çà òîå, òàê³ àäêàç çàí³æàå àäçíàêó, áî êîëüêàñöü ïðàãëåäæàíûõ ñòàðîíàê âûêàðûñòî¢âàåööà ¢ íàçî¢í³êó ïðû ðàçë³êó àäçíàê³). Äëÿ òàãî, êàá ïàêàçàöü ñòóäýíòàì ³õ ïàñïÿõîâàñöü, ³ì äýìàíñòðóåööà ¢ äýòàëÿõ ³íôàðìàöûÿ àá òûì, íà êîëüê³ ïûòàííÿ¢ ÿíû äàë³ ïðàâ³ëüíûÿ àäêàçû, àãóëüíóþ êîëüêàñöü ïðàãëåäæàíûõ ñòàðîíàê ³ ³õ áÿãó÷óþ àäçíàêó ïà êîæíàé ñåêöû³ (Òàáë³öû çìåñòó) óðîêà. +
        70. Êàíåö óðîêà äàñÿãàåööà àëüáî ÿ¢íûì ïåðàõîäàì íà êàíåö óðîêà (ç Òàáë³öû çìåñòó), àáî ïðû ïåðàõîäçå íà íàñòóïíóþ ñòàðîíêó ïàñëÿ àïîøíÿé (ïàâîäëå ëàã³÷íàãà ïàðàäêó). Êàë³ êàíåö óðîêà äàñÿãíóòû, ñòóäýíò àòðûìë³âàå ïàâåäàìëåííå â³íøàâàëüíàãà õàðàêòàðó ³ ÿìó ïàêàçâàåööà ÿãîíàÿ àäçíàêà çà ¢ðîê (ë³÷áà ïûòàííÿ¢ íà ÿê³ÿ äàäçåíûÿ ïðàâ³ëüíûÿ àäêàçû/êîëüêàñöü ïðàãëåäæàíûõ ñòàðîíàê). +
        71. Êàë³ Êàíåö óðîêà íå äàñÿãíóòû ³ ñòóäýíò ÿãî ïðîñòà ïàê³äàå, òî ïðû ïà¢òîðíûì íàâåäâàíí³ ¢ðîêà ñòóäýíòó áóäçå ïðàïàíàâàíà ïà÷àöü óðîê àä ïà÷àòêó, àáî ïðàöÿãíóöü ç àïîøíÿãà ïûòàííÿ, íà ÿêîå áû¢ äàäçåíû ïðàâ³ëüíû àäêàç. +
        72. Äëÿ ¢ðîêà¢, ÿê³ÿ äàçâàëÿþöü ïåðàçäà÷ó, íàñòà¢í³ê ìîæà àáðàöü ïàë³òûêó àöýíê³ ñïðîáࢠïåðàçäà÷à¢, äà ïðûêëàäó, ñÿðýäíþþ àáî ìàêñ³ìàëüíóþ àäçíàêó ïà ¢ñ³õ ñïðîáàõ, ³ âûêàðûñòàöü ÿê êàí÷àòêîâóþ àäçíàêó çà ¢ðîê.
        diff --git a/lang/be/help/lesson/questionoption.html b/lang/be/help/lesson/questionoption.html index 82935faa931..48a537b7672 100644 --- a/lang/be/help/lesson/questionoption.html +++ b/lang/be/help/lesson/questionoption.html @@ -1,11 +1,11 @@

        Îïöû³ ïûòàííÿ

        -

        Íåêàòîðûÿ òûïû ïûòàííÿ¢ ìàþöü îïöû³. Òûïû ïûòàííÿ¢ ³ çíà÷ýíí³ îïöûÿ¢ ïðûâåäçåíûÿ í³æýé.

        +

        Íåêàòîðûÿ òûïû ïûòàííÿ¢ ìàþöü îïöû³. Òûïû ïûòàííÿ¢ ³ çíà÷ýíí³ îïöûÿ¢ ïðûâåäçåíûÿ í³æýé.

          -
        1. Íåêàëüê³ ç íåêàëüê³õ. Ãýòû âàðûÿíò Ìíîæíàãà âûáàðó çàâåööà "Íåêàëüê³ ç íåêàëüê³õ". Êàë³ ôóíêöûÿ "Îïöû³ ïûòàííÿ" âûëó÷àíàÿ, òî ñòóäýíò ïàâ³íåí âûáðàöü óñå ïðàâ³ëüíûÿ àäêàçû ç ïðàïàíàâàíûõ âàðûÿíòà¢. Ó ïûòàíí³ ìîæà ãàâàðûööà êîëüê³ ïðàâ³ëüíûõ àäêàçࢠìàå ïûòàííå. Íàïðûêëàä ïûòàííå "Õòî ç í³æýéïðûâåäçåíûõ àñîáࢠáû¢ ïðýç³äýíòàì?" - íå ãàâîðûöü àá êîëüêàñö³ ïðàâ³ëüíûõ àäêàçà¢, ó òîé ÷àñ ÿê, "Âûëó÷ûöå äâóõ ïðýç³äýíòࢠç ïðàïàíàâàíàãà ñï³ñó" - ãàâîðûöü. ˳ê ïðàâ³ëüíûõ àäêàçࢠìîæà âàãàööà àä àäíàãî äà ìíîñòâà âàðûÿíòࢠàäêàçà¢. (Ìíîæíû âûáàð "Íåêàëüê³ ç íåêàëüê³õ" ç àäíûì ïðàâ³ëüíûì àäêàçàì ³ Ìíîæíû âûáàð "Àäç³í ç íåêàëüê³õ" öàëêàì äâà ðîçíûõ òûïû ïûòàííÿ, áî ïåðøû äàçâàëÿå ñòóäýíòó âûáðàöü áîëüø çà àäç³í àäêàç, à àïîøí³ ïðàäóãëåäæâàå âûáàð òîëüê³ àäíàãî àäêàçó).
        2. +
        3. Íåêàëüê³ ç íåêàëüê³õ. Ãýòû âàðûÿíò Ìíîæíàãà âûáàðó çàâåööà "Íåêàëüê³ ç íåêàëüê³õ". Êàë³ ôóíêöûÿ "Îïöû³ ïûòàííÿ" âûëó÷àíàÿ, òî ñòóäýíò ïàâ³íåí âûáðàöü óñå ïðàâ³ëüíûÿ àäêàçû ç ïðàïàíàâàíûõ âàðûÿíòà¢. Ó ïûòàíí³ ìîæà ãàâàðûööà êîëüê³ ïðàâ³ëüíûõ àäêàçࢠìàå ïûòàííå. Íàïðûêëàä ïûòàííå "Õòî ç í³æýéïðûâåäçåíûõ àñîáࢠáû¢ ïðýç³äýíòàì?" - íå ãàâîðûöü àá êîëüêàñö³ ïðàâ³ëüíûõ àäêàçà¢, ó òîé ÷àñ ÿê, "Âûëó÷ûöå äâóõ ïðýç³äýíòࢠç ïðàïàíàâàíàãà ñï³ñó" - ãàâîðûöü. ˳ê ïðàâ³ëüíûõ àäêàçࢠìîæà âàãàööà àä àäíàãî äà ìíîñòâà âàðûÿíòࢠàäêàçà¢. (Ìíîæíû âûáàð "Íåêàëüê³ ç íåêàëüê³õ" ç àäíûì ïðàâ³ëüíûì àäêàçàì ³ Ìíîæíû âûáàð "Àäç³í ç íåêàëüê³õ" öàëêàì äâà ðîçíûõ òûïû ïûòàííÿ, áî ïåðøû äàçâàëÿå ñòóäýíòó âûáðàöü áîëüø çà àäç³í àäêàç, à àïîøí³ ïðàäóãëåäæâàå âûáàð òîëüê³ àäíàãî àäêàçó).

        4. -
        5. Êàðîòê³ àäêàç. Ïà çìà¢÷àíí³ ïðû ïàðà¢íàíí³ àäêàçó ³ãíàðóåööà ðýã³ñòð. Êàë³ ôóíêöûÿ "Îïöû³ ïûòàííÿ" âûáðàíàÿ, òî ïðû ïàðà¢íàíí³ àäêàçó ¢ë³÷âàåööà ðýã³ñòð.
        +
      • Êàðîòê³ àäêàç. Ïà çìà¢÷àíí³ ïðû ïàðà¢íàíí³ àäêàçó ³ãíàðóåööà ðýã³ñòð. Êàë³ ôóíêöûÿ "Îïöû³ ïûòàííÿ" âûáðàíàÿ, òî ïðû ïàðà¢íàíí³ àäêàçó ¢ë³÷âàåööà ðýã³ñòð.

      • -

        ²íøûÿ òûïû ïûòàííÿ¢ íå âûêàðûñòî¢âàþöü ôóíêöûþ "Îïöû³ ïûòàííÿ".

        +

        ²íøûÿ òûïû ïûòàííÿ¢ íå âûêàðûñòàþöü ôóíêöûþ "Îïöû³ ïûòàííÿ".

        diff --git a/lang/be/help/lesson/questiontypes.html b/lang/be/help/lesson/questiontypes.html index e2b21995fc5..8386c10df43 100644 --- a/lang/be/help/lesson/questiontypes.html +++ b/lang/be/help/lesson/questiontypes.html @@ -1,13 +1,13 @@

        Òûïû ïûòàííÿ¢

        -

        Íà äàäçåíû ìîìàíò ìîäóëåì "Íàâó÷àëüíàÿ ðàáîòà" ïàäòðûìë³âàþööà íàñòóïíûÿ òûïû ïûòàííÿ¢:

        +

        Íà äàäçåíû ìîìàíò ìîäóëåì "Óðîê" ïàäòðûìë³âàþööà íàñòóïíûÿ òûïû ïûòàííÿ¢:

        1. Ìíîæíû âûáàð Àäç³í ç íåêàëüê³õ. Ãýòà òûï ïûòàííÿ ïà çìà¢÷àíí³. Òàê³ òûï ïûòàííÿ âåëüì³ ïàïóëÿðíû, ó ³ì ïðàïàíî¢âàåööà âûáðàöü àäç³í àäêàç ç íåêàëüê³õ ìàã÷ûìûõ. Ïðàâ³ëüíû àäêàç ïðàâîäç³öü ñòóäýíòà äàëåé ïà êóðñå, íÿïðàâ³ëüíû - íå. Íÿïðàâ³ëüíû àäêàç ÷àñàì ãó÷ûöü "àäöÿãâàþ÷ûì óâàãó" ³ ýôåêòû¢íàñöü ïûòàííÿ ¢ âÿë³êàé ñòóïåí³ çàëåæûöü àä ïðàäóìàíàñö³ ïûòàííÿ¢, ÿê³ÿ àäöÿãâàþöü óâàãó, ÷ûì àä ñàìîãà ïûòàííÿ àáî ïðàâ³ëüíàãà àäêàçó.

          Êîæíû àäêàç ïðû íåàáõîäíàñö³ ìàå âîäãóê. Êàë³ âîäãóê íå ¢âåäçåíû íàñòà¢í³êàì, ñòóäýíòó àäëþñòðî¢âàåööà âîäãóê ïà çìà¢÷àíí³ "Ïðàâ³ëüíû àäêàç" àáî "Íÿïðàâ³ëüíû àäêàç"

          -

          Ìàåööà ìàã÷ûìàñöü çàïðàãðàìàâàöü áîëüø çà àäç³í ïðàâ³ëüíû àäêàç ó Ìíîæíûì âûáàðû (àäç³í ç íåêàëüê³õ). Ðîçíûÿ ïðàâ³ëüíûÿ àäêàçû ìîãóöü äàâàöü ñòóäýíòó ðîçíûÿ âîäãóê³ ³ ïåðàâîäç³öü íà ðîçíûÿ ñòàðîíê³ ¢ðîêó (íàïåðàä ïà ëàã³÷íûì ïàðàäêó), àëå íå àäðîçí³âàþööà ¢ àöýíöû (íåëüãà ñêàçàöü, øòî íåêàòîðûÿ àäêàçû áîëüø êàðýêòíûÿ çà ³íøûÿ, ïðûíàìñ³ ç ïóíêòó ãëåäæàííÿ àöýíê³). Òàêñàìà ìàã÷ûìû âàðûÿíò, êàë³ ¢ñå àäêàçû ïðàâ³ëüíûÿ ³ ïåðàâîäçÿöü ñòóäýíòà äà ðîçíûõ ñòàðîíàê íàâó÷àëüíàé ðàáîòû (íàïåðàä ïà ëàã³÷íûì ïàðàäêó), ó çàëåæíàñö³ àä òàãî, ÿê³ àäêàç áû¢ âûáðàíû.

          +

          Ìàåööà ìàã÷ûìàñöü çàïðàãðàìàâàöü áîëüø çà àäç³í ïðàâ³ëüíû àäêàç ó Ìíîæíûì âûáàðû (àäç³í ç íåêàëüê³õ). Ðîçíûÿ ïðàâ³ëüíûÿ àäêàçû ìîãóöü äàâàöü ñòóäýíòó ðîçíûÿ âîäãóê³ ³ ïåðàâîäç³öü íà ðîçíûÿ ñòàðîíê³ ¢ðîêó (íàïåðàä ïà ëàã³÷íûì ïàðàäêó), àëå íå àäðîçí³âàþööà ¢ àöýíöû (íåëüãà ñêàçàöü, øòî íåêàòîðûÿ àäêàçû áîëüø êàðýêòíûÿ çà ³íøûÿ, ïðûíàìñ³ ç ïóíêòó ãëåäæàííÿ àöýíê³). Òàêñàìà ìàã÷ûìû âàðûÿíò, êàë³ ¢ñå àäêàçû ïðàâ³ëüíûÿ ³ ïåðàâîäçÿöü ñòóäýíòà äà ðîçíûõ ñòàðîíàê óðîêà (íàïåðàä ïà ëàã³÷íûì ïàðàäêó), ó çàëåæíàñö³ àä òàãî, ÿê³ àäêàç áû¢ âûáðàíû.

          Ìàåööà âàðûÿíò ìíîæíàãà âûáàðó, ìàþ÷û íàçâó "Íåêàëüê³ ç íåêàëüê³õ". Òàê³ òûï ïûòàííÿ ïàòðàáóå àä ñòóäýíòà âûáðàöü óñå ïðàâ³ëüíûÿ àäêàçû ç íàáîðó ìàã÷ûìûõ. Ó ïûòàíí³ ìîæà ãàâàðûööà êîëüê³ ïðàâ³ëüíûõ àäêàçࢠìàå ïûòàííå. Íàïðûêëàä ïûòàííå "Õòî ç í³æýéïðûâåäçåíûõ àñîáࢠáû¢ ïðýç³äýíòàì?" íå ãàâîðûöü àá êîëüêàñö³ ïðàâ³ëüíûõ àäêàçà¢, ó òîé ÷àñ ÿê "Âûëó÷ûöå äâóõ ïðýç³äýíòࢠç ïðàïàíàâàíàãà ñï³ñó" ãàâîðûöü. ˳ê ïðàâ³ëüíûõ àäêàçࢠìîæà âàãàööà àä àäíàãî äà ìíîñòâà âàðûÿíòࢠàäêàçà¢. (Ìíîæíû âûáàð "Íåêàëüê³ ç íåêàëüê³õ" ç àäíûì ïðàâ³ëüíûì àäêàçàì ³ Ìíîæíû âûáàð "Àäç³í ç íåêàëüê³õ" - öàëêàì äâà ðîçíûõ òûïû ïûòàííÿ, áî ïåðøû äàçâàëÿå ñòóäýíòó âûëó÷ûöü áîëüø çà àäç³í àäêàç, à àïîøí³ ïðàäóãëåäæâàå âûáàð òîëüê³ àäíàãî àäêàçó).

          @@ -33,3 +33,5 @@

          Íÿïðàâ³ëüíûÿ àäêàçû (ç óë³êàì äûÿïàçîíó) ïàâ³ííû áûöü ðàçìåø÷àíûÿ ïàñëÿ ïðàâ³ëüíûõ. Äà ïðûêëàäó, äàäàþ÷û íÿïðàâ³ëüíû àäêàç 3:4 äà ïûòàííÿ "Êîëüê³ áóäçå 10 äçåëåíàå íà 3?", ÿãî òðýáà ðàçìÿñö³öü ïàñëÿ ïðàâ³ëüíàãà. Òàäû ïàðàäàê áóäçå íàñòóïíûì: 3.33:3.34 (ïðàâ³ëüíû àäêàç), äàëåé 3:4 (íÿïðàâ³ëüíû àäêàç).

        2. + + diff --git a/lang/be/help/lesson/retake.html b/lang/be/help/lesson/retake.html index 47e784bb8e4..f74a7a41985 100644 --- a/lang/be/help/lesson/retake.html +++ b/lang/be/help/lesson/retake.html @@ -1,10 +1,10 @@ -

          Äîïóñê ñòóäýíòà äà ïåðàçäà÷û íàâó÷àëüíàé ðàáîòû

          +

          Äîïóñê ñòóäýíòà äà ïåðàçäà÷û óðîêà

          -

          Ãýòû ïàðàìåòð âûçíà÷àå ìàã÷ûìàñöü ïðàõîäæàííÿ ñòóäýíòàì íàâó÷àëüíàé ðàáîòû áîëüø çà àäç³í ðàç. Íàïðûêëàä, íàñòà¢í³ê âûðàøû¢, øòî ¢ðîê óòðûìë³âàå ìàòýðûÿë, ÿê³ ñòóäýíò ïàâ³íåí âåäàöü áåçäàêîðíà. Ó ãýòûì âûïàäêó ïàâ³ííà áûöü ïðàäóãëåäæàíàÿ ìàã÷ûìàñöü ïåðàçäàöü íàâó÷àëüíóþ ðàáîòó. Êàë³ ìàòýðûÿë íàâó÷àëüíàé ðàáîòû âûêàðûñòî¢âàåööà ¢ ÿêàñö³ ³ñïûòó, ðýêàìåíäàâàíà âûêëþ÷ûöü ìàã÷ûìàñöü ïåðàçäà÷û.

          +

          Ãýòû ïàðàìåòð âûçíà÷àå ìàã÷ûìàñöü ïðàõîäæàííÿ ñòóäýíòàì óðîêó áîëüø çà àäç³í ðàç. Íàïðûêëàä, íàñòà¢í³ê âûðàøû¢, øòî ¢ðîê óòðûìë³âàå ìàòýðûÿë, ÿê³ ñòóäýíò ïàâ³íåí âåäàöü áåçäàêîðíà. Ó ãýòûì âûïàäêó ïàâ³ííà áûöü ïðàäóãëåäæàíàÿ ìàã÷ûìàñöü ïåðàçäàöü óðîê. Êàë³ ìàòýðûÿë óðîêó âûêàðûñòî¢âàåööà ¢ ÿêàñö³ ³ñïûòó, ðýêàìåíäàâàíà âûêëþ÷ûöü ìàã÷ûìàñöü ïåðàçäà÷û.

          -

          Êàë³ ñòóäýíòó äàçâîëåíà ïåðàçäàâàöü íàâó÷àëüíóþ ðàáîòó, àäçíàêà ïàêàçàíàÿ íà ñòàðîíöû àöýíàê ìîæà áûöü àëüáî ñÿðýäíÿÿ ïà ¢ñ³õ ñïðîáàõ ïåðàçäà÷û, àëüáî ëåïøàÿ ç ³õ. Íàñòóïíû ïàðàìåòð - ÿêàÿ ç ãýòûõ ïàë³òûê àöýíüâàííÿ âûêàðûñòî¢âàåööà ¢ íàâó÷àëüíàé ðàáîöå.

          +

          Êàë³ ñòóäýíòó äàçâîëåíà ïåðàçäàâàöü óðîê, àäçíàêà ïàêàçàíàÿ íà ñòàðîíöû àöýíàê ìîæà áûöü àëüáî ñÿðýäíÿÿ ïà ¢ñ³õ ñïðîáàõ ïåðàçäà÷û, àëüáî ëåïøàÿ ç ³õ. Íàñòóïíû ïàðàìåòð - ÿêàÿ ç ãýòûõ ïàë³òûê àöýíüâàííÿ âûêàðûñòî¢âàåööà âà óðîêó.

          Çà¢âàæöå, øòî àíàë³ç ïûòàííÿ çà¢æäû âûêàðûñòî¢âàå àäêàçû ç ïåðøàé ñïðîáû, âûí³ê³ íàñòóïíûõ ïåðàçäà÷ࢠ³ãíàðóþööà.

          -

          Ïà-çìà¢÷àíí³ ãýòàÿ îïöûÿ ñòà³öü ¢ ðýæûìå Òàê, ãýòà àçíà÷àå, øòî ñòóäýíòû ìîãóöü ïåðàçäàâàöü íàâó÷àëüíóþ ðàáîòó. Ìàåööà íà ¢âàçå, øòî òîëüê³ ïðû âûêëþ÷íûõ àáñòàâ³íàõ ãýòàÿ îïöûÿ ô³êñóåööà ¢ ðýæûìå Íå.

          +

          Ïà çìà¢÷àíí³ ãýòàÿ îïöûÿ ñòà³öü ¢ ðýæûìå Òàê, ãýòà àçíà÷àå, øòî ñòóäýíòû ìîãóöü ïåðàçäàâàöü óðîê. Ìàåööà íà ¢âàçå, øòî òîëüê³ ïðû âûêëþ÷íûõ àáñòàâ³íàõ ãýòàÿ îïöûÿ ô³êñóåööà ¢ ðýæûìå Íå. diff --git a/lang/be/help/mods.html b/lang/be/help/mods.html index 33b63e7fa0d..a93158cf86b 100644 --- a/lang/be/help/mods.html +++ b/lang/be/help/mods.html @@ -1,36 +1,41 @@ -

          Ýëåìåíòû êóðñà

          +

          Ýëåìåíòû êóðñà

          -

          ѳñòýìà âàëîäàå âÿë³êàé ðàçíàñòàéíàñöþ ýëåìåíòà¢, ÿê³ÿ ìîãóöü áûöü âûêàðûñòàíûÿ äëÿ ñòâàðýííÿ êóðñࢠëþáîãà òûïó.

          +

          ѳñòýìà âàëîäàå âÿë³êàé ðàçíàñòàéíàñöþ ýëåìåíòà¢, ÿê³ÿ ìîãóöü áûöü âûêàðûñòàíûÿ äëÿ ñòâàðýííÿ êóðñࢠëþáîãà òûïó.

          -

          Ôîðóì Ôîðóì

          -
          -

          Ôîðóìû - ìåñöà, äçå àäáûâàþööà ¢ñ¸ àáìåðêàâàíí³. Ôîðóìû ìîãóöü ìåöü ðîçíóþ ñòðóêòóðó ³ ¢òðûìë³âàöü àöýíê³ äëÿ ïàâåäàìëåííÿ¢. Ïàâåäàìëåíí³ ôîðóìࢠìîãóöü áûöü óáà÷àíûì³ ¢ ÷àòûðîõ ðîçíûõ ôàðìàòàõ ³ ¢òðûìë³âàöü äàäàòêîâûÿ ôàéëû. Óäçåëüí³ê, ÿê³ ïàäï³ñà¢ñÿ íà ôîðóì, áóäçå àòðûìë³âàöü êîï³³ íîâûõ ïàâåäàìëåííÿ¢ ïðàç e-mail.

          -
          -

          Ðàáî÷û ñøûòàê Ðàáî÷û ñøûòàê

          -
          -

          Íàñòà¢í³ê ïðîñ³öü ñòóäýíòࢠâûêàçàööà íà âûçíà÷àíóþ òýìó, ³ ñòóäýíò ìîæà ðýäàãàâàöü ³ ïàëÿïøàöü ñâîé àäêàç ñà ÷àñàì. Àäêàçû ç'ÿ¢ëÿþööà ïðûâàòíûì³ ³ ³õ ìîæà ïàáà÷ûöü òîëüê³ íàñòà¢í³ê, ÿê³ ìîæà çðàá³öü êàìåíòàð ³ ïàñòàâ³öü àäçíàêó êîæíàìó çàï³ñó. Çâû÷àéíà àäíàãî ñøûòêà ¢ òûäçåíü äàñòàòêîâà.

          -
          +

           Ôîðóì

          +
            +

            Ôîðóìû - ìåñöà, äçå àäáûâàþööà ¢ñ¸ àáìåðêàâàíí³. Ôîðóìû ìîãóöü ìåöü ðîçíóþ ñòðóêòóðó ³ ¢òðûìë³âàöü àöýíê³ äëÿ ïàâåäàìëåííÿ¢. Ïàâåäàìëåíí³ ôîðóìࢠìîãóöü áûöü óáà÷àíûì³ ¢ ÷àòûðîõ ðîçíûõ ôàðìàòàõ ³ ¢òðûìë³âàöü äàäàòêîâûÿ ôàéëû. Óäçåëüí³ê, ÿê³ ïàäï³ñà¢ñÿ íà ôîðóì, áóäçå àòðûìë³âàöü êîï³³ íîâûõ ïàâåäàìëåííÿ¢ ïðàç e-mail. +

          -

          Ðýñóðñ Ðýñóðñ

          -
          -

          Ðýñóðñû - ãýòà ³íôàðìàöûÿ, ÿêóþ íàñòà¢í³ê æàäàå äàöü ó ñâà³ì êóðñå.

          -
          -

          Çàäàííå Çàäàííå

          -
          -

          Çàäàíí³ äàçâàëÿþöü íàñòà¢í³êó íàï³ñàöü ïûòàííå, íà ÿêîå ¢ áóäó÷ûì ¸í àòðûìàå àäêàç àä âó÷íÿ¢ ó âûãëÿäçå ôàéëà çàïàìïàâàíàãà íà ñýðâåð. ѳñòýìà ïðàäñòà¢ëÿå ìàã÷ûìàñöü íàñòà¢í³êó ñòàâ³öü àäçíàê³ çà àòðûìàíû àäêàç.

          -
          +

           Ñøûòàê

          +
            +

            Íàñòà¢í³ê ïðîñ³öü ñòóäýíòࢠâûêàçàööà íà âûçíà÷àíóþ òýìó, ³ ñòóäýíò ìîæà ðýäàãàâàöü ³ ïàëÿïøàöü ñâîé àäêàç ñà ÷àñàì. Àäêàçû ç'ÿ¢ëÿþööà ïðûâàòíûì³ ³ ³õ ìîæà ïàáà÷ûöü òîëüê³ íàñòà¢í³ê, ÿê³ ìîæà çðàá³öü êàìåíòàð ³ ïàñòàâ³öü àäçíàêó êîæíàìó çàï³ñó. Çâû÷àéíà àäíàãî ñøûòêà ¢ òûäçåíü äàñòàòêîâà.

            +
          + +

           Ðýñóðñ

          +
            +

            Ðýñóðñû - ãýòà ³íôàðìàöûÿ, ÿêóþ íàñòà¢í³ê æàäàå äàöü ó ñâà³ì êóðñå.

            +
          + +

           Çàäàííå

          +
            +

            Çàäàíí³ äàçâàëÿþöü íàñòà¢í³êó íàï³ñàöü ïûòàííå, íà ÿêîå ¢ áóäó÷ûì ¸í àòðûìàå àäêàç àä âó÷íÿ¢ ó âûãëÿäçå ôàéëà çàïàìïàâàíàãà íà ñýðâåð. ѳñòýìà ïðàäñòà¢ëÿå ìàã÷ûìàñöü íàñòà¢í³êó ñòàâ³öü àäçíàê³ çà àòðûìàíû àäêàç.

            +
          + +

           Òýñò

          +
            +

            Ãýòû ìîäóëü äàçâàëÿå íàñòà¢í³êó ñòâàðûöü íàáîð òýñòàâûõ ïûòàííÿ¢. Ïûòàíí³ ìîãóöü áûöü: ç íåêàëüê³ì³ àäêàçàì³, ç âûáàðàì äàêëàäíà/íå äàêëàäíà, àáî ÿê³ÿ ïðàäóãëåäæâàþöü êàðîòê³ òýêñòàâû àäêàç. Óñå ïûòàíí³ çàõî¢âàþööà ¢ áàçå äàäçåíûõ ³ ìîãóöü áûöü ó áóäó÷ûì ñêàðûñòàíûÿ ³çíî¢ ó ãýòûì æà êóðñå (àáî ¢ ³íøûõ). Ñòóäýíòàì ìîæíà äàçâîë³öü ïðàõîäç³öü òýñò íåêàëüê³ ðàçî¢, ïðû ãýòûì êîæíàÿ ñïðîáà à¢òàìàòû÷íà àöýíüâàåööà. Òýñòû ìîãóöü ïàêàçâàöü ïðàâ³ëüíûÿ àäêàçû àáî ïðîñòà àäçíàêó.

            +
          + +

           Ïûòàííå

          +
            +

            Ïûòàííå äàçâàëÿå íàñòà¢í³êó çàäàöü ïûòàííå ³ àòðûìàöü íà ÿãî àäêàç àä ñâà³õ âó÷íÿ¢. Àäíî ç ÿãî ïðûçíà÷ýííÿ¢ - ïðàâîäç³öü ãàëàñàâàííå ñÿðîä âó÷íÿ¢. +

          + +

           Àíêåòà

          +
            +

            Àíêåòû ñòâîðàíûÿ äëÿ òàãî, êàá äàâåäàööà ïðà ñòà¢ëåííå âó÷íÿ¢ äà íàâó÷àííÿ (ó ïðûâàòíàñö³ - äà àäëåãëàãà).

            +
          -

          Òýñò Òýñò

          -
          -

          Ãýòû ìîäóëü äàçâàëÿå íàñòà¢í³êó ñòâàðûöü íàáîð òýñòàâûõ ïûòàííÿ¢. Ïûòàíí³ ìîãóöü áûöü: ç íåêàëüê³ì³ àäêàçàì³, ç âûáàðàì äàêëàäíà/íå äàêëàäíà, àáî ÿê³ÿ ïðàäóãëåäæâàþöü êàðîòê³ òýêñòàâû àäêàç. Óñå ïûòàíí³ çàõî¢âàþööà ¢ áàçå äàäçåíûõ ³ ìîãóöü áûöü ó áóäó÷ûì ñêàðûñòàíûÿ ³çíî¢ ó ãýòûì æà êóðñå (àáî ¢ ³íøûõ). Ñòóäýíòàì ìîæíà äàçâîë³öü ïðàõîäç³öü òýñò íåêàëüê³ ðàçî¢, ïðû ãýòûì êîæíàÿ ñïðîáà à¢òàìàòû÷íà àöýíüâàåööà. Òýñòû ìîãóöü ïàêàçâàöü ïðàâ³ëüíûÿ àäêàçû àáî ïðîñòà àäçíàêó.

          -
          -

          Àïûòàííå Àïûòàííå

          -
          -

          Àïûòàííå äàçâàëÿå íàñòà¢í³êó çàäàöü ïûòàííå ³ àòðûìàöü íà ÿãî àäêàç àä ñâà³õ âó÷íÿ¢. Àäíî ç ÿãî ïðûçíà÷ýííÿ¢ - ïðàâîäç³öü ãàëàñàâàííå ñÿðîä âó÷íÿ¢.

          -
          -

          Àïûòàëüí³ê Àïûòàëüí³ê

          -
          -

          Àïûòàëüí³ê³ ñòâîðàíûÿ äëÿ òàãî, êàá äàâåäàööà ïðà ñòà¢ëåííå âó÷íÿ¢ äà íàâó÷àííÿ (ó ïðûâàòíàñö³ - äà àäëåãëàãà).

          -
          diff --git a/lang/be/help/picture.html b/lang/be/help/picture.html index 2da86486ec2..eefc533f94e 100644 --- a/lang/be/help/picture.html +++ b/lang/be/help/picture.html @@ -1,16 +1,16 @@ -

          Çàïàìïî¢êà ôîòàçäûìêà

          +

          Çàïàìïî¢êà ôîòàçäûìêà

          -

          Âû ìîæàöå çàïàìïàâàöü ôîòàçäûìàê ñà ñâàéãî êàìï'þòýðà íà ñýðâåð. Ôîòàçäûìàê áóäçå âûêàðûñòî¢âàööà ¢ ïàâåäàìëåííÿõ íà ôîðóì, ó Âàøûì ¢ë³êîâûì çàï³ñó...

          -

          Ôîòàçäûìàê ïàâ³íåí áûöü ó ôàðìàöå JPG àáî PNG.

          -

          Âû ìîæàöå àòðûìàöü ôîòàçäûìàê, íàñòóïíûì³ ìåòàäàì³:

          +

          Âû ìîæàöå çàïàìïàâàöü ôîòàçäûìàê ñà ñâàéãî êàìï'þòýðà íà ñýðâåð. Ôîòàçäûìàê áóäçå âûêàðûñòî¢âàööà ¢ ïàâåäàìëåííÿõ íà ôîðóì, ó Âàøûì ¢ë³êîâûì çàï³ñó... +

          Ôîòàçäûìàê ïàâ³íåí áûöü ó ôàðìàöå JPG àáî PNG. +

          Âû ìîæàöå àòðûìàöü ôîòàçäûìàê, íàñòóïíûì³ ìåòàäàì³: -

            -
          1. Ñêàðûñòà¢øû ë³÷áàâû ôîòààïàðàò àáî êàìåðó.
          2. -
          3. Àäñêàíàâà¢øû ôîòàçäûìàê (ïåðàêàíàåöåñÿ, øòî çàõàâàë³ ÿãî ¢ íåàáõîäíûì ôàðìàöå).
          4. -
          5. Íàìàëÿâà¢øû ïàðòðýò ó ÿêîé-íåáóäçü ïðàãðàìå äëÿ ïðàöû ç ãðàô³êàé.
          6. -
          7. Çàïàìïàâà¢øû ìàëþíàê ç ²íòýðíýòó. http://images.google.com.
          8. -
          +
            +
          1. Ñêàðûñòà¢øû ë³÷áàâû ôîòààïàðàò àáî êàìåðó. +
          2. Àäñêàíàâà¢øû ôîòàçäûìàê (ïåðàêàíàåöåñÿ, øòî çàõàâàë³ ÿãî ¢ íåàáõîäíûì ôàðìàöå). +
          3. Íàìàëÿâà¢øû ïàðòðýò ó ÿêîé-íåáóäçü ïðàãðàìå äëÿ ïðàöû ç ãðàô³êàé. +
          4. Çàïàìïàâà¢øû ìàëþíàê ç ²íòýðíýòó. http://images.google.com. +
          -

          Äëÿ çàïàìïî¢ê³ ôàéëà íàö³ñí³öå íà êíîïêó "Browse", ³ âûáåðûöå ôîòàçäûìàê íà ñâà³ì êàìï'þòýðû.

          -

          Íàòàòêà: Ïåðàêàíàåöåñÿ, øòî âûáðàíû ôàéë íå ïåðàâûøàå ìàêñ³ìàëüíà äàïóø÷àëüíû ïàìåð.

          +

          Äëÿ çàïàìïî¢ê³ ôàéëà íàö³ñí³öå íà êíîïêó "Browse", ³ âûáåðûöå ôîòàçäûìàê íà ñâà³ì êàìï'þòýðû. +

          Íàòàòêà: Ïåðàêàíàåöåñÿ, øòî âûáðàíû ôàéë íå ïåðàâûøàå ìàêñ³ìàëüíà äàïóø÷àëüíû ïàìåð. diff --git a/lang/be/help/questionnaire/mods.html b/lang/be/help/questionnaire/mods.html deleted file mode 100644 index f4f1f5a12e0..00000000000 --- a/lang/be/help/questionnaire/mods.html +++ /dev/null @@ -1,7 +0,0 @@ - Àíêåòà - -

          -

          -Ìîäóëü äëÿ ñòâàðýííÿ àíêåò äàçâàëÿå êàíñòðóÿâàöü àíêåòû (àïûòàëüí³ê³) ç âûêàðûñòàííåì âûÿë³êàé êîëüêàñö³ òûïࢠïûòàííÿ¢ ³ ç ìàã÷ûìàñöþ àïðàöî¢ê³ àòðûìàíûõ äàäçåíûõ. ¨í çàñíàâàíû íà phpESP, ÿê³ àäíîñ³ööà äà ³íñòðóìåíòàç ç àäêðûòûì³ çûõîäíûì³ êîäàì³ (ãë.: http://phpesp.sourceforge.net). -

          -
          \ No newline at end of file diff --git a/lang/be/help/questionnaire/qmanage.html b/lang/be/help/questionnaire/qmanage.html index 32295a65b41..bb1c890c6cb 100644 --- a/lang/be/help/questionnaire/qmanage.html +++ b/lang/be/help/questionnaire/qmanage.html @@ -1,4 +1,4 @@ -

          ʳðàâàííå àíêåòàì³ ç äàïàìîãàé phpESp

          +

          ʳðàâàííå àíêåòàì³ ç äàïàìîãàé phpESP

          -

          Ìîäóëü àíêåò âûêàðûñòî¢âàå phpESp äëÿ ñòâàðýííÿ àíêåò ³ ê³ðàâàííÿ ³ì³. Ç äàïàìîãàé ãýòàé ñïàñûëê³ ìîæàø ê³ðàâàöü àíêåòàì³.

          +

          Ìîäóëü àíêåò âûêàðûñòî¢âàå phpESP äëÿ ñòâàðýííÿ àíêåò ³ ê³ðàâàííÿ ³ì³. Ç äàïàìîãàé ãýòàé ñïàñûëê³ ìîæàø ê³ðàâàöü àíêåòàì³.

          diff --git a/lang/be/help/questionnaire/questionnaireid.html b/lang/be/help/questionnaire/questionnaireid.html index 6ad53ec8d7c..43a8f70fa61 100644 --- a/lang/be/help/questionnaire/questionnaireid.html +++ b/lang/be/help/questionnaire/questionnaireid.html @@ -1,4 +1,4 @@

          Âûáåðû àíêåòó

          -

          Âûáåðû àíêåòó ñà ñï³ñà àêòû¢íûõ àíêåò, äàñòóïíûõ ç phpESp. Êàë³ òâà¸é àíêåòû íå â³äàöü ó ñï³ñå, õóò÷ýé çà ¢ñ¸ ÿíà íåàêòû¢íàÿ.

          +

          Âûáåðû àíêåòó ñà ñï³ñà àêòû¢íûõ àíêåò, äàñòóïíûõ ç phpESP. Êàë³ òâà¸é àíêåòû íå â³äàöü ó ñï³ñå, õóò÷ýé çà ¢ñ¸ ÿíà íåàêòû¢íàÿ.

          diff --git a/lang/be/help/questions.html b/lang/be/help/questions.html index da54e8a5638..d1dac5028e9 100644 --- a/lang/be/help/questions.html +++ b/lang/be/help/questions.html @@ -1,12 +1,12 @@ -

          Çàäàâàéöå òðàïíûÿ ïûòàíí³

          +

          Çàäàâàéöå òðàïíûÿ ïûòàíí³

          -

          Äîáðû ñïîñàá äàïàìàã÷û ëþäçÿì äóìàöü íàä çàäà÷àé - çàäàâàöü ïûòàíí³. Ïûòàííå, ÿêîå òðàïíà çàäàë³ ìîæà äàïàìàã÷û ÷àëàâåêó ñóïàñòàâ³öü ôàêòû ³ ïðààíàë³çàâàöü ñâàå äóìê³.

          +

          Äîáðû ñïîñàá äàïàìàã÷û ëþäçÿì äóìàöü íàä çàäà÷àé - çàäàâàöü ïûòàíí³. Ïûòàííå, ÿêîå òðàïíà çàäàë³ ìîæà äàïàìàã÷û ÷àëàâåêó ñóïàñòàâ³öü ôàêòû ³ ïðààíàë³çàâàöü ñâàå äóìê³.

          -

          Ïûòàíí³, ÿê³ÿ ñòàâÿööà ç ìýòàé - äàïàìàã÷û íàâó÷àííþ ³íøûõ, ãýòàê æà âÿäîìûÿ ÿê 'Ïûòàíí³ Ñàêðàòà.'

          +

          Ïûòàíí³, ÿê³ÿ ñòàâÿööà ç ìýòàé - äàïàìàã÷û íàâó÷àííþ ³íøûõ, ãýòàê æà âÿäîìûÿ ÿê 'Ïûòàíí³ Ñàêðàòà.'

          -

          'Ïûòàíí³ Ñàêðàòà' ïàòðàáóþöü àä Âàñ óâàæë³âà ñëóõàöü àïàíåíòà äëÿ àöýíê³ âûêàçâàííÿ¢ ³ ñêëàäàííÿ êàíñòðóêòû¢íûõ ïûòàííÿ¢.

          +

          'Ïûòàíí³ Ñàêðàòà' ïàòðàáóþöü àä Âàñ óâàæë³âà ñëóõàöü àïàíåíòà äëÿ àöýíê³ âûêàçâàííÿ¢ ³ ñêëàäàííÿ êàíñòðóêòû¢íûõ ïûòàííÿ¢.

          -

          ͳæýé ïàäàäçåíû íåêàëüê³ âàðûÿíòࢠòàê³õ ïûòàííÿ¢:

          +

          ͳæýé ïàäàäçåíû íåêàëüê³ âàðûÿíòࢠòàê³õ ïûòàííÿ¢:

          @@ -68,9 +68,9 @@
        3. Ö³ áà÷ûöå Âû, ÿê ãýòà ìîæà ñóàäíîñ³ööà ç ________?
        4. -
          -Ïûòàíí³ ç êí³ã³: Ïà¢ëü, Ð. (1993). Êðûòû÷íàå ìûñëåííå: ßê ïàäðûõòàâàöü ñòóäýíòࢠäà õóòêà çìåíë³âàãà ñâåòó: Àñíîâû êðûòû÷íàãà ìûñëåííÿ, Santa Rosa, CA. +
          +Ïûòàíí³ ç êí³ã³: Ïà¢ëü, Ð. (1993). Êðûòû÷íàå ìûñëåííå: ßê ïàäðûõòàâàöü ñòóäýíòࢠäà õóòêà çìåíë³âàãà ñâåòó: Àñíîâû êðûòû÷íàãà ìûñëåííÿ, Santa Rosa, CA. -

          Áîëüø ³íôàðìàöû³ àá íàï³ñàíí³

          +

          +

          -

          Áîëüø ³íôàðìàöû³ àá ÷ûòàíí³

          \ No newline at end of file diff --git a/lang/be/help/quiz/attempts.html b/lang/be/help/quiz/attempts.html index a7583636095..6055922c552 100644 --- a/lang/be/help/quiz/attempts.html +++ b/lang/be/help/quiz/attempts.html @@ -1,5 +1,5 @@ -

          Ñïðîáû ðàçâÿçàííÿ òýñòó

          +

          Êîëüêàñöü ñïðîáà¢

          -

          Ñòóäýíòàì ìîæà äàçâàëÿööà íåêàëüê³ ðàçî¢ ïðàõîäç³öü òýñò.

          +

          Ñòóäýíòàì ìîæà äàçâàëÿööà íåêàëüê³ ðàçî¢ ïðàõîäç³öü òýñò. -

          Ó ãýòûì âûïàäêó, òýñò âûêàðûñòî¢âàåööà ÿê ñðîäàê íàâó÷àííÿ, à íå äëÿ ïðàâåðê³ âåäà¢.

          +

          Ó ãýòûì âûïàäêó, òýñò âûêàðûñòî¢âàåööà ÿê ñðîäàê íàâó÷àííÿ, à íå äëÿ ïðàâåðê³ âåäà¢. diff --git a/lang/be/help/quiz/categories.html b/lang/be/help/quiz/categories.html index 66a9fe53b8a..9dc02a993d2 100644 --- a/lang/be/help/quiz/categories.html +++ b/lang/be/help/quiz/categories.html @@ -1,10 +1,10 @@ -

          Êàòýãîðû³ ïûòàííÿ¢

          +

          Êàòýãîðû³ ïûòàííÿ¢

          -

          Êàòýãîðû³ ïûòàííÿ¢ äàïàìàãàþöü çàõî¢âàöü ïûòàíí³ ¢ íåêàëüê³õ ñï³ñàõ (íàïðûêëàä, ïà òýìàõ) çàìåñò àäíîãà âÿë³êàãà.

          +

          Êàòýãîðû³ ïûòàííÿ¢ äàïàìàãàþöü çàõî¢âàöü ïûòàíí³ ¢ íåêàëüê³õ ñï³ñàõ (íàïðûêëàä, ïà òýìàõ) çàìåñò àäíîãà âÿë³êàãà. -

          Êîæíàÿ êàòýãîðûÿ ñêëàäàåööà ç íàçâû ³ íåâÿë³êàãà àï³ñàííÿ.

          +

          Êîæíàÿ êàòýãîðûÿ ñêëàäàåööà ç íàçâû ³ íåâÿë³êàãà àï³ñàííÿ. -

          Êîæíàÿ êàòýãîðûÿ ìîæà áûöü "àïóáë³êàâàíàÿ", øòî àçíà÷àå, øòî ïûòàíí³ ç ÿå ìîãóöü áûöü âûêàðûñòàíûÿ ¢ òýñòàõ ³íøûõ êóðñࢠíà ñýðâåðû.

          +

          Êîæíàÿ êàòýãîðûÿ ìîæà áûöü "àïóáë³êàâàíàÿ", øòî àçíà÷àå, øòî ïûòàíí³ ç ÿå ìîãóöü áûöü âûêàðûñòàíûÿ ¢ òýñòàõ ³íøûõ êóðñࢠíà ñýðâåðû. -

          Êàòýãîðû³ ìîæíà ñòâàðàöü ³ âûäàëÿöü ó ëþáû ÷àñ. Êàë³ âûäàëÿåìàÿ êàòýãîðûÿ ¢òðûìë³âàå ïûòàíí³, Âàñ ïàïðîñÿöü âûçíà÷ûöü ó ÿêóþ êàòýãîðûþ ³õ ïåðàìÿñö³öü.

          +

          Êàòýãîðû³ ìîæíà ñòâàðàöü ³ âûäàëÿöü ó ëþáû ÷àñ. Êàë³ âûäàëÿåìàÿ êàòýãîðûÿ ¢òðûìë³âàå ïûòàíí³, Âàñ ïàïðîñÿöü âûçíà÷ûöü ó ÿêóþ êàòýãîðûþ ³õ ïåðàìÿñö³öü. diff --git a/lang/be/help/quiz/correctanswers.html b/lang/be/help/quiz/correctanswers.html index 025b80e4e1a..fbe33229695 100644 --- a/lang/be/help/quiz/correctanswers.html +++ b/lang/be/help/quiz/correctanswers.html @@ -1,4 +1,4 @@ -

          Ïàêàçâàöü ïðàâ³ëüíûÿ àäêàçû

          +

          Ïàêàçâàöü ïðàâ³ëüíûÿ àäêàçû

          -

          Êàë³ Âû ¢êëþ÷ûöå ãýòóþ îïöûþ, ïðû àöýíöû, ïðàâ³ëüíûÿ àäêàçû áóäóöü âûëó÷àíûÿ êîëåðàì. -

          +

          Êàë³ Âû ¢êëþ÷ûöå ãýòóþ îïöûþ, ïðû àöýíöû, ïðàâ³ëüíûÿ àäêàçû áóäóöü âûëó÷àíûÿ êîëåðàì. +

          diff --git a/lang/be/help/quiz/export.html b/lang/be/help/quiz/export.html index 7e71e74ce67..469fba90e67 100644 --- a/lang/be/help/quiz/export.html +++ b/lang/be/help/quiz/export.html @@ -7,7 +7,7 @@

          Çàðàç ïàäòðûìë³âàþööà íàñòóïíûÿ ôàðìàòû:

          Ôàðìàò G²FT

          -
          +

            Ôàðìàò G²FT ãýòà íàéáîëüø øìàòáàêîâû ôàðìàò. ¨í áû¢ ñòâîðàíû, ÿê ïðîñòû ìåòàä äëÿ íàñòà¢í³êà¢, ÿê³ÿ ñòâàðàþöü ïûòàíí³, ÿê çâû÷àéíû òýêñòàâû ôàéë.G²FT àáñëóãî¢âàå ïûòàíí³ "Ìíîæíû âûáàð", “Äàêëàäíà/Íåäàêëàäíà”, “Êàðîòê³ÿ àäêàçû”, “Äàïàñóé àäêàç”, “˳÷áàâûÿ”, à òàêñàìà çàäàíí³ òûïó "óñòà¢öå ñëîâà, ÿêîãà áðàêóå".

            Ó àäíûì òýêñòàâûì ôàéëå ìîæà áûöü íåêàëüê³ ðîçíûõ ïûòàííÿ¢. Àêðàìÿ òàãî, ãýòû ôàðìàò äàçâàëÿå çìÿø÷àöü êàìåíòàðû, íàçâû ïûòàííÿ¢, çâàðîòíóþ ³íôàðìàöûþ ³ ¢çâàæâàííå àäçíàê.

            @@ -26,7 +26,7 @@ Êàë³ áû¢ ñòâîðàíû ÁåëàÏÀÍ?{#1991} -

            Áîëüø ïðà ôàðìàò G²FT

            -
          +

          Áîëüø ïðà ôàðìàò G²FT

          +

          Óæî ñòâàðàåì íîâûÿ ôàðìàòû: WebCT, ²MS QT² ³ øòîñö³, øòî ïàæàäàë³ ñÿáðû ñóïîëüíàñö³ Moodle!

          diff --git a/lang/be/help/quiz/feedback.html b/lang/be/help/quiz/feedback.html index 9e19fab3177..e078574600a 100644 --- a/lang/be/help/quiz/feedback.html +++ b/lang/be/help/quiz/feedback.html @@ -1,4 +1,4 @@ -

          Çâàðîòíàÿ ñóâÿçü

          +

          Êàìåíòàâàöü àäêàçû

          -

          Óêëþ÷ýííå ôóíêöû³ äàñûëê³ ³íôàðìàöû³ çâàðîòíàé ñóâÿç³ âûêë³÷à, øòî ñòóäýíòû àòðûìàþöü ³íôàðìàöûþ ïðà êîæíû ñâîé àäêàç – ïðàâ³ëüíû ö³ íÿïðàâ³ëüíû.

          +

          Êàë³ Âû âûá³ðàåöå ãýòóþ îïöûþ, ñòóäýíòàì, ïàñëÿ êîæíàãà àäêàçó, áóäçå ïàêàçàíû êàìåíòàð äà ³õ âûáàðà.

          diff --git a/lang/be/help/quiz/formatblackboard.html b/lang/be/help/quiz/formatblackboard.html index 42dd5c5f753..4545fb03100 100644 --- a/lang/be/help/quiz/formatblackboard.html +++ b/lang/be/help/quiz/formatblackboard.html @@ -1,3 +1,3 @@ -

          ²ìïàðò ôàéëࢠôàðìàòó "Äîøêà"

          +

          ²ìïàðò ôàéëࢠôàðìàòó "Blàckboàrd" (Äîøêà)

          Ïàäðûõòî¢êà äàêóìåíòàöû³ íå çàêîí÷àíà

          diff --git a/lang/be/help/quiz/formatctm.html b/lang/be/help/quiz/formatctm.html index 5632d8ef2bb..b11738a829d 100644 --- a/lang/be/help/quiz/formatctm.html +++ b/lang/be/help/quiz/formatctm.html @@ -1,13 +1,13 @@ -

          ²ìïàðò ôàéëࢠÌåíåäæýð òýñòà¢("Course Test Manager")

          +

          ²ìïàðò ôàéëࢠç CTM ("Course Test Manager")

          Course Test Manager ãýòà ïðàãðàìíàå çàáåñïÿ÷ýííå íàï³ñàíàå Course Technology. Çàðàç ÿíî ¢æî íå ðàçâ³âàåööà àêòû¢íà Course Technology. ¨í çàìåíåíû íîâûì ìåíåäæýðàì òýñòࢠExamV³ew. ͳêîë³ íå ³ñíàâàëà àãóëüíàãà ôàðìàòó, ÿê³ á ðàá³¢ ìàã÷ûìûì ýêñïàðò ãýòàãà ôàðìàòó ç áàíêࢠòýñòࢠCTM ó ³íøûÿ ñóïîëüíûÿ ôàðìàòû òýñòà¢. Ìåíàâ³òà òàìó áû¢ íàï³ñàíû ãýòû ìîäóëü.

          Êàá àòðûìàöü ìàã÷ûìàñöü ³ìïàðòàâàöü ïûòàíí³ CTM, òðýáà ìåöü ³íñòàëÿöûþ CTM ó ñ³ñòýìå W³ndows ³ äîñòóï äà MS Access. Êàá àòðûìàöü äîñòóï äà äàäçåíûõ ïàòðýáíû äâà ôàéëû:

          • System.mda – Ãýòû ôàéë çíàõîäç³ööà ¢ ãàëî¢íûì êàòàëîãó CTM. Ó æàðãîíå MS Access, ¸í àêðýñë³âàåööà ÿê "ѳñòýìíàÿ áàçà äàäçåíûõ" (àíã. "System Database").
          • ctm.mdb – ãýòà áàçà äàäçåíûõ, ÿêàÿ ¢êëþ÷àå òýêñòàâûÿ ïûòàíí³. ²ñíóå àäíà òàêàÿ áàçà äëÿ êîæíàãà êóðñà, çàêëàäçåíàãà ¢ CTM. Ãýòû ôàéë ìîæíà çíàéñö³ ¢ êàòàëîãó íà àäç³í óçðîâåíü í³æýé, ÷ûì ³íñòàëÿöûÿ CTM.
          • -
          +

          -

          Ïðàöýñ ³ìïàðòàâàííÿ ïûòàííÿ¢ ðîçíû ³ çàëåæûöü àä òàãî ö³ Moodle äçåéí³÷àå ¢ ñ³ñòýìå L³nux ö³ W³ndows. Íåçàëåæíà àä òàãî, äçåéí³÷àå Moodle íà L³nux àáî íå, òðýáà ìåöü äîñòóï äà êàìï'þòýðà , ÿê³ äçåéí³÷àå ¢ ñ³ñòýìå W³ndows, êàá ìåöü äîñòóï äà ôàéëࢠMS Àccess.

          +

          Ïðàöýñ ³ìïàðòàâàííÿ ïûòàííÿ¢ ðîçíû ³ çàëåæûöü àä òàãî ö³ Moodle äçåéí³÷àå ¢ ñ³ñòýìå L³nux ö³ W³ndows. Íåçàëåæíà àä òàãî, äçåéí³÷àå Moodle íà L³nux àáî íå, òðýáà ìåöü äîñòóï äà êàìï'þòýðà , ÿê³ äçåéí³÷àå ¢ ñ³ñòýìå W³ndows, êàá ìåöü äîñòóï äà ôàéëࢠMS Àccess.

          Ïðàöýñ ³ìïàðòàâàííÿ áîëüø ïðîñòû íà Moodle, øòî äçåéí³÷àå ¢ W³ndows. Óñ¸, øòî òðýáà çðàá³öü, êàá ïåðàíåñö³ ôàéëû, ãýòà:

          @@ -15,22 +15,22 @@
        5. Ñòâàðû ñâîé óëàñíû òýñò ³ ïåðàéäç³ ¢ ñåêöûþ "²ìïàðòóé ïûòàíí³ ç ôàéëà". Âûáåðû ctm.mdb ÿê ôàéë äëÿ ³ìïàðòó. Êàë³ ãýòà àïåðàöûÿ âûêàíàíà ïðàâ³ëüíà, òî ¢áà÷ûø ÷àðãîâû ýêðàí, ÿê³ äàçâîë³öü òàáå âûáðàöü ïàäêàòýãîðû³ ïûòàííÿ¢ äëÿ ïåðàíîñó. Íàãîäàé äëÿ àðãàí³çàöû³ ìåíàâ³òà òàêîãà ïðàöýñó ³ìïàðòó ç’ÿ¢ëÿåööà ôàêò, øòî áàíê³ òýñòࢠCTM ÷àñòà ¢êëþ÷àþöü âåëüì³ âÿë³êóþ êîëüêàñöü ïûòàííÿ¢, ÿê³ÿ çãðóïàâàíû àêðýñëåíûì ÷ûíàì.
        -

        Êàá ïðàâåñö³ ³ìïàðò íà ïëàòôîðìå Moodle çàëàäàâàíàé íà Linux ïàòðýáíàå äàäàòêîâàå ïðàãðàìíàå çàáåñïÿ÷ýííå ïàä íàçâàé ODBC Socket Server. Êàá ìåöü ìàã÷ûìàñöü ³ìïàðòàâàöü ôàéëû áàç äàäçåíûõ CTM íà L³nux, òðýáà ñïà÷àòêó ñöÿãíóöü ãýòó ïðàãðàìó ³ ¢ñòàíàâ³öü ÿå íà êàìï'þòýð, íà ÿê³ì óæî ¸ñöü áàçà äàäçåíûõ CTM (ó ãýòûì êàìï'þòýðû ìóñ³öü áûöü W³ndows – ãëÿäç³ âûøýé). Àäíàê íå ïàñòóïàé çãîäíà ç ³íòó³òû¢íûì³ êðîêàì³ ³íñòàëÿöû³ ODBC Socket Server Installation. ßíû áîëüø ñêëàäàíûÿ, ÷ûì òðýáà. Çàìåñò ãýòàãà, êàá óñòàíàâ³öü ãýòó ïðàãðàìó ¢ ñ³ñòýìå W³ndows, âûêàíàé íàñòóïíûÿ çàõàäû:

        +

        Êàá ïðàâåñö³ ³ìïàðò íà ïëàòôîðìå Moodle çàëàäàâàíàé íà Linux ïàòðýáíàå äàäàòêîâàå ïðàãðàìíàå çàáåñïÿ÷ýííå ïàä íàçâàé ODBC Socket Server. Êàá ìåöü ìàã÷ûìàñöü ³ìïàðòàâàöü ôàéëû áàç äàäçåíûõ CTM íà L³nux, òðýáà ñïà÷àòêó ñöÿãíóöü ãýòó ïðàãðàìó ³ ¢ñòàíàâ³öü ÿå íà êàìï'þòýð, íà ÿê³ì óæî ¸ñöü áàçà äàäçåíûõ CTM (ó ãýòûì êàìï'þòýðû ìóñ³öü áûöü W³ndows – ãëÿäç³ âûøýé). Àäíàê íå ïàñòóïàé çãîäíà ç ³íòó³òû¢íûì³ êðîêàì³ ³íñòàëÿöû³ ODBC Socket Server Installation. ßíû áîëüø ñêëàäàíûÿ, ÷ûì òðýáà. Çàìåñò ãýòàãà, êàá óñòàíàâ³öü ãýòó ïðàãðàìó ¢ ñ³ñòýìå W³ndows, âûêàíàé íàñòóïíûÿ çàõàäû:

        1. Ó ñ³ñòýìå W³ndows ðàñïàêóé çïàìïàâàíóþ ïðàãðàìó ñà ñòàðîíê³ -.
        2. -
        3. Ñêàï³þé ôàéë ODBCSocketServer.exe ó âûáðàíóþ ëàêàë³çàöûþ, òàêóþ íàïð. ÿê êàòàëîã progràm F³les.
        4. +. +
        5. Ñêàï³þé ôàéë ODBCSocketServer.exe ó âûáðàíóþ ëàêàë³çàöûþ, òàêóþ íàïð. ÿê êàòàëîã Progràm F³les.
        6. Óñòàíàâ³ ODBC Socket Server ÿê Ïàñëóãó (Serv³ce), âûêàðûñòà¢øû íàñòóïíóþ êàìàíäó çàï³ñàíóþ ¢ ñï³ñå äàðó÷ýííÿ¢ àáî ¢ ìåíþ Ïóñê:
          <øëÿõ äîñòóïó/ODBCSocketServer.exe /Service
          .
        7. -
        8. Àäêðûé Ïàñëóã³: Ñòàðò->Óñòàíî¢êà->Ïàíåëü ê³ðàâàííÿ->Àäì³í³ñòðàöûéíû ³íñòðóìåíò->Ïàñëóã³, àáî êë³êíó¢øû ïðàâàé êëàâ³øàé íà àáðàçîê Ìîé êàìï'þòýð, ʳðàâàííå, âûáåðû íà ïðàâàé ïàíåë³ Ïàñëóã³ ³ Àïë³êàöû³->Ïàñëóã³. +
        9. Àäêðûé Ïàñëóã³: Ñòàðò->Óñòàíî¢êà->Ïàíåëü ê³ðàâàííÿ->Àäì³í³ñòðàöûéíû ³íñòðóìåíò->Ïàñëóã³, àáî êë³êíó¢øû ïðàâàé êëàâ³øàé íà àáðàçîê Ìîé êàìï'þòýð, ʳðàâàííå, âûáåðû íà ïðàâàé ïàíåë³ Ïàñëóã³ ³ Àïë³êàöû³->Ïàñëóã³. Ìîæàø ³ñö³ áîëüø êàðîòê³ì øëÿõàì, çàï³ñà¢øû ¢ âàêíå Ïóñê.
        10. Ïàñëóã³ çíàéäç³ ³ êë³êí³ ïðàâàé êëàâ³øàé íà ODBC Socket Server ³ âûáåðû êàìàíäó Ñòàðò. Ó ãýòû ìîìàíò ñòàòóñ ãýòàé ïàñëóã³ ïàâ³íåí çàìÿí³ööà íà "Çàïóø÷àíà". Ìàé íà ¢âàçå, øòî ìîæíà çàòðûìàöü àáî çóñ³ì âûêëþ÷ûöü ãýòó ïàñëóãó ïàñëÿ òàãî, ÿê çàêîí÷ûööà ïðàöýñ ³ìïàðòàâàííÿ ôàéëà¢.
        11. Ñïðà¢äç³, ö³ äàñòóïíûÿ ôàéëû system.mdà ³ ctm.mdb, ³ øòî ¢ñòàíî¢ëåíû òàêñàìà MS Àccess ODBC dr³ver. ¨í ïàâ³íåí áûöü óñòàíî¢ëåíû ðàçàì ç ñòàíäàðòíàé ³íñòàëÿöûÿé W³ndows. Âàðòà ïðàâåðûöü, òàêñàìà âûáðà¢øû Ïàíåëü ê³ðàâàííÿ -> -Àäì³í³ñòðàöûéíûÿ ³íñòðóìåíòû -> Êðûí³öû äàäçåíûõ (ODBC) ³ êë³êíó¢øû íà "ʳðàâàííå". Çàòûì ïåðàêàíàéñÿ , äçå ¢ñòàíî¢ëåíû ôàéëû CTM ³ çíàéäç³ ôàéë system.mdà ³ áàçó äàäçåíûõ ctm.mdb ç ÿêîé ìàåø íàìåð ïåðàíîñ³öü ïûòàíí³. Çàï³øû ïî¢íû øëÿõ äîñòóïó äà ãýòûõ ôàéëࢠà òàêñàìà àäðàñ ²p ³ íàçâó ñýðâåðà W³ndows. Ãýòà ³íôàðìàöûÿ áóäçå ïàòðýáíà ïàä÷àñ ïðàöýñó ³ìïàðòàâàííÿ.
        12. +Àäì³í³ñòðàöûéíûÿ ³íñòðóìåíòû -> Êðûí³öû äàäçåíûõ (ODBC) ³ êë³êíó¢øû íà "ʳðàâàííå". Çàòûì ïåðàêàíàéñÿ , äçå ¢ñòàíî¢ëåíû ôàéëû CTM ³ çíàéäç³ ôàéë system.mdà ³ áàçó äàäçåíûõ ctm.mdb ç ÿêîé ìàåø íàìåð ïåðàíîñ³öü ïûòàíí³. Çàï³øû ïî¢íû øëÿõ äîñòóïó äà ãýòûõ ôàéëࢠà òàêñàìà àäðàñ ²P ³ íàçâó ñýðâåðà W³ndows. Ãýòà ³íôàðìàöûÿ áóäçå ïàòðýáíà ïàä÷àñ ïðàöýñó ³ìïàðòàâàííÿ.
        13. Çàðàç òû ïàäðûõòàâàíû äà òàãî, êàá ðàñïà÷àöü ïðàöýñ ïåðàíîñó êîìïëåêñó ïûòàííÿ¢ ó moodle. Ñòâàðû ñâîé óëàñíû òýñò ³ ïåðàéäç³ ¢ ñåêöûþ "²ìïàðòóé ïûòàíí³ ç ôàéëà". ² ¡ ÃÝÒÛÌ ÌÅÑÖÛ ²ÍÀÊØ ÁÓÄÇÅ ÂÛÃËßÄÀÖÜ ÃÝÒÛ ÏÐÀÖÝÑ Ó L²NUX – ÒÐÝÁÀ ÂÛÁÐÀÖÜ ßʲ-ÍÅÁÓÄÇÜ ÔÀÉË (ÍÀÉËÅÏØ ÍÎÂÀÑÒÂÎÐÀÍÛ)Ó ÏÎ˲, ÀÄÊÓËÜ ÃÝÒÛ ÔÀÉË ÒÐÝÁÀ ÏÅÐÀÍÅÑÖ², ÊÀÁ ÏÀ×ÀÖÜ ÏÐÀÖÝÑ ²ÌÏÀÐÒÓ. ÃÝÒÛ ÔÀÉË ÍÅ ÁÓÄÇÅ ÏÅÐÀ¡ÒÂÎÐÀÍÛ – ÃÝÒÀ ÒÎËÜʲ ÏÝ¡ÍÀß ¡ÌÎÂÀ, ÊÀÁ "ÀØÓÊÀÖÜ" ѲÑÒÝÌÓ. ÒÎËÜʲ ÍÀ ÍÀÑÒÓÏÍÀÉ ÑÒÀÐÎÍÖÛ ¡ÊÀÆÀØ ÀÄÏÀÂÅÄÍÛ ÔÀÉË. Íà íàñòóïíàé ñòàðîíöû òðýáà íàï³ñàöü íàçâó êàìï'þòýðà, íà ÿê³ì óñòàíî¢ëåíû ODBC Socket Server, à òàêñàìà øëÿõ äîñòóïó äà ñ³ñòýìíàé áàçû äàäçåíûõ ³ áàçû äàäçåíûõ CTM. Çàï³øû ãýòó ³íôàðìàöûþ ³ êë³êí³ íà "Çëó÷ûööà ç ñýðâåðàì". Êàë³ ¢ñ¸ áûëî çàï³ñàíà ïðàâ³ëüíà, ç'ÿâ³ööà ñï³ñ, ç ÿêîãà ìîæíà áóäçå âûáðàöü ïàäêàòýãîðû³ ïûòàííÿ¢, ÿê³ÿ ìîæíà ïåðàíåñö³ ç ãýòàé áàçû äàäçåíûõ. Íàãîäàé òàêîãà âûðàøýííÿ ç’ÿ¢ëÿåööà ¢æî âÿäîìû ôàêò, øòî áàíê³ äàäçåíûõ CTM ÷àñòà ¢òðûìë³âàþöü âÿë³êóþ êîëüêàñöü ïûòàííÿ¢, çãðóïàâàíûõ çãîäíà ç àêðýñëåíûì êëþ÷îì (íàïð. ïðàãðàìû êóðñà, ðàçäçåëࢠïàäðó÷í³êà). ÊÀ˲ ÒÛ ÇÄÎËÅ¡ ÄÀÉÑÖ² ÄÀ ÃÝÒÀÃÀ ÝÒÀÏÓ ÁÅÇ ÂÛÏÐÀ¡ËÅÍÍß ÏÀÌÛËÀÊ, ÃÝÒÀ ÀÇÍÀ×ÀÅ, ØÒÎ ¡ÄÀËÎÑß ¡ÑÒÀÍÀ²ÖÜ ÇËÓ×ÝÍÍÅ Ç ÑÝÐÂÅÐÀÌ Ç ÌÝÒÀÉ ²ÌÏÀÐÒÀÂÀÍÍß ÏÛÒÀÍÍß¡ Ó MOODLE!
        14. diff --git a/lang/be/help/quiz/formatgift.html b/lang/be/help/quiz/formatgift.html index f57f5718512..4a405ce5df2 100644 --- a/lang/be/help/quiz/formatgift.html +++ b/lang/be/help/quiz/formatgift.html @@ -1,6 +1,6 @@

          ²ìïàðò ôàéëࢠó ôàðìàöå "G²FT"

          -p>Ôàðìàò G²FT ãýòà íàéáîëüø øìàòáàêîâû ôàðìàò. ¨í çàïðàåêòàâàíû ÿê ìåòàä äëÿ íàñòà¢í³êà¢, ÿê³ÿ ñòâàðàþöü ïûòàíí³ ¢ âûãëÿäçå òýêñòàâûõ ôàéëà¢. G²FT àáñëóãî¢âàå ïûòàíí³ “Ìíîæíû âûáàð”, “Äàêëàäíà/Íåäàêëàäíà”, “Êàðîòê³ÿ àäêàçû”, "Äàïàñóé àäêàç", "˳÷áàâûÿ", à òàêñàìà çàäàíí³ òûïó "óñòà¢öå ñëîâà, ÿêîãà áðàêóå".

          +p>Ôàðìàò G²FT ãýòà íàéáîëüø øìàòáàêîâû ôàðìàò. ¨í çàïðàåêòàâàíû ÿê ìåòàä äëÿ íàñòà¢í³êà¢, ÿê³ÿ ñòâàðàþöü ïûòàíí³ ¢ âûãëÿäçå òýêñòàâûõ ôàéëà¢. G²FT àáñëóãî¢âàå ïûòàíí³ “Ìíîæíû âûáàð”, “Äàêëàäíà/Íåäàêëàäíà”, “Êàðîòê³ÿ àäêàçû”, “Äàïàñóé àäêàç”, “˳÷áàâûÿ”, à òàêñàìà çàäàíí³ òûïó "óñòà¢öå ñëîâà, ÿêîãà áðàêóå".

          Ó àäíûì òýêñòàâûì ôàéëå ìîæà áûöü ïðûâåäçåíà íåêàëüê³ òûïࢠïûòàííÿ¢. Àïðî÷ òàãî, ãýòû ôàðìàò äàçâàëÿå çìÿø÷àöü êàìåíòàðû, íàçâû ïûòàííÿ¢, çâàðîòíóþ ñóâÿçü ³ âàã³ äëÿ àöýíüâàííÿ.

          @@ -21,13 +21,13 @@ p>

          ÒÛÏÛ ÏÛÒÀÍÍß¡

          -

          Ìíîæíàãà âûáàðó:

          +

          Ìíîæíàãà âûáàðó:

          Ó âûïàäêó ïûòàííÿ¢ Ìíîæíàãà âûáàðó íÿïðàâ³ëüíà ïàïÿðýäæâàöü àäêàçû òûëüäàé (~), a ïðàâ³ëüíà çíàêàì ðî¢íàñö³ (=).

          ÁåëàÏÀÍ ãýòà?{~øòîòûäí¸â³ê ~êí³æêà =³íôàðìàöûéíàå àãåíöòâà ³ ³íòýðíýò-ãàçåòà}
          -

          Ñëîâà, ÿêîãà áðàêóå:

          +

          Ñëîâà, ÿêîãà áðàêóå:

          Ãýòû ôàðìàò à¢òàìàòû÷íà ñòàâ³öü "ìåñöà íà ñëîâà" _____ ó ñÿðýäç³íå ñêàçà. Êàá ñòâàðûöü ïûòàííå òàêîãà òûïó, ïàñòࢠàäêàç íà ìåñöà, äçå áðàêóå ñëîâà. Çìÿø÷ýííå àäêàçó çà àïîøí³ì ³íòýðïóíêöûéíûì çíàêàì ó ãýòûì âûïàäêó íå äçåéí³÷àå.

          @@ -35,7 +35,7 @@ p>

          Óñå òûïû ïàòàííÿ¢ ìîæíà çàï³ñàöü ó ôàðìàöå "Ñëîâà, ÿêîãà áðàêóå".

          -

          Êàðîòê³ àäêàç:

          +

          Êàðîòê³ àäêàç:

          Óñå àäêàçû ¢ ãýòûì òûïå ïûòàííÿ¢ ïàïÿðýäæâàþööà çíàêàì ðî¢íàñö³(=). Àáî ¢ñå àäêàçû ïðàâ³ëüíûÿ. ͳ àäç³í àäêàç íå ìîæà ¢òðûìë³âàöü òûëüäó (~)

          @@ -45,7 +45,7 @@ p>

          Êàë³ ïðàâ³ëüíû òîëüê³ àäç³í êàðîòê³ àäêàç, òî ¸í ìîæà áûöü çàï³ñàíû áåç çíàêó ðî¢íàñö³ (=) ïàêîëüê³ ÿãî íåëüãà ïåðàáëûòàöü ç ïûòàííåì Äàêëàäíà/Íåäàêëàäíà.

          -

          Äàêëàäíà/Íåäàêëàäíà:

          +

          Äàêëàäíà/Íåäàêëàäíà:

          Ó äàäçåíûì âûïàäêó ïûòàåìñÿ ö³ äàäçåíàå ñöâåðäæàííå äàêëàäíàå ö³ íåäàêëàäíàå. Àäêàç ìîæà áûöü çàï³ñàíû ÿê {TRUE} àáî äàêëàäíà ö³ {FALSE}- íåäàêëàäíà (ôàëüø). ßê àëüòýðíàòûâó ìîæíà ïðûìÿí³öü àäïàâåäíà {T} àáî {F}.

          @@ -53,7 +53,7 @@ p> ÁåëàÏÀÍ ãýòà ³íôàðìàöûéíàå àãåíöòâà.{T} -

          Äàïàñóé àäêàçû:

          +

          Äàïàñóé àäêàçû:

          Äàïàñî¢íûÿ ïàðû ïà÷ûíàþööà çíàêàì ðî¢íàñö³ (=) ³ ðàçäçåëåíûÿ çíàêàì "->". Ó ïûòàíí³ ìóñÿöü çíàõîäç³ööà õàöÿ áû òðû äàïàñî¢íûÿ ïàðû.

          @@ -72,7 +72,7 @@ p>

          Ïûòàíí³ ãýòàãà òûïó íå àáñëóãî¢âàþöü çâàðîòíàé ñóâÿç³ ³ âàã³ äëÿ àöýíüâàííÿ.

          -

          ˳÷áàâûÿ:

          +

          ˳÷áàâûÿ:

          Àäêàç ó ë³÷áàâûì ïûòàíí³ ïàâ³íåí ïà÷ûíàööà àä çíàêà #. Òàê³ÿ ïûòàíí³ ìîãóöü óòðûìë³âàöü ìåæû ïàìûëê³, ÿêóþ äàï³ñâàåì çà àäêàçàì, ïàïÿðýäæâàþ÷û äâóêðîï'åì. Êàë³ íàïð. àäïàâåäíû àäêàç çíàõîäç³ööà ïàì³æ 1.5 ³ 2.5, ÿê àäêàç çàï³øàì {#2:0.5}.Êàë³ íå ¢ñòàíîâ³ø ìåæà¢ ïàìûëê³, ñ³ñòýìà ¢ñòàíîâ³öü ÿãî íà íóëü.

          @@ -102,7 +102,7 @@ p>

          Àêðàìÿ àñíî¢íûõ ôàðìàòࢠïûòàííÿ, ãýòû ôàðìàò óêëþ÷àå øýðàã äàäàòêîâûõ îïöûÿ¢: êàìåíòàðû, íàçâà ïûòàííÿ, çâàðîòíàÿ ñóâÿçü, âàãà àäêàçó.

          -

          Êàìåíòàðû:

          +

          Êàìåíòàðû:

          Êàìåíòàðû íå ³ìïàðòóþööà ¢ Moodle. ßíû ñëóæàöü äëÿ ïðàçðûñòàãà çàï³ñó ôàéëà ç ïûòàííÿì³.

          @@ -112,7 +112,7 @@ p> Êîëüê³ áóäçå äâà ïëþñ äâà? {#4} -

          Íàçâà ïûòàííÿ:

          +

          Íàçâà ïûòàííÿ:

          Íàçâà ïûòàííÿ ïàâ³ííà çíàõîäç³ööà ïåðàä ïûòàííåì ³ ÿå òðýáà âûëó÷ûöü àáàïàë äâàéíûì äâóêðîï'åì ::.

          @@ -122,7 +122,7 @@ p>

          Êàë³ íå äàñ³ íàçâû ïûòàííþ, òî íàçâàé ñòàíå ñàìî ïûòàííå.

          -

          Çâàðîòíàÿ ñóâÿçü:

          +

          Çâàðîòíàÿ ñóâÿçü:

          Äà êîæíàãà àäêàçó ìîæíà äàäàöü ³íôàðìàöûþ çâàðîòíàé ñóâÿç³ ïðû äàïàìîçå çíàêà "ðýøàòà" (#).

          @@ -146,7 +146,7 @@ p>

          Ó âûïàäêó ïûòàííÿ¢ òûïó Äàêëàäíà/Íåäàêëàäíà çâàðîòíàÿ ³íôàðìàöûÿ ¢çí³êàå òîëüê³ òàäû, êàë³ âûáðàíû íÿïðàâ³ëüíû àäêàç.

          -

          Âàãà àäêàçó:

          +

          Âàãà àäêàçó:

          Óçâàæâàííå àäêàçó äçåéí³÷àå ¢ âûïàäêó ïûòàííÿ¢ ðàçíàñòàéíàãà âûáàðó ³ êàðîòê³õ àäêàçà¢. Àäñîòêàâàÿ âàãà àäêàçó ïàâ³ííà çíàõîäç³ööà çà òûëüäàé àáî çíàêàì ðî¢íàñö³ ¢ âûïàäêó êàðîòêàãà àäêàçó, àëå ïåðàä àäêàçàì. Âàðòàñöü âàã³ çìÿø÷àåööà ïàì³æ çíàêàì³ ïðàöýíòó (íàïð. %50%). Ðýêàìåíäóåööà äàäàâàöü êàìåíòàð.

          @@ -172,7 +172,7 @@ p>

          ÓÂÀÃÀ : Ïàì³ìà òàãî, øòî ìîæíà ïðàâåñö³ ¢ñòàíî¢êó âàãà¢, ³õ íå áóäçå â³äàöü ìàã÷ûìà äà ðýäàãàâàííÿ ïðàç àáàëîíêà Moodle. Ó ïðàöýñå ðýäàãàâàííÿ ¸ñöü ìàã÷ûìàñöü âûáðàöü àêðýñëåíûÿ âàã³. Êàë³ âàã³ àêðýñëåíû ¢ ôàðìàöå G²FT, ÿíû íå áóäóöü àäïàâÿäàöü, Moodle çìåí³öü ³õ íà àäïàâåäíûÿ ³ òàê áóäóöü çàï³ñàíû.

          -

          Øìàò ïðàâ³ëüíûõ àäêàçà¢:

          +

          Øìàò ïðàâ³ëüíûõ àäêàçà¢:

          Ãýòàé îïöûÿé êàðûñòàåìñÿ òàäû, êàë³ ¢ ïûòàíí³ ìíîæíàãà âûáàðó òðýáà ïàçíà÷ûöü áîëüø çà àäç³í àäêàç. Êàá àòðûìàöü ýôåêò, òðýáà ïàñòàâ³öü ïàäñóìî¢âàþ÷ûÿ âàã³ íà 100 (äàêëàäíà) ïðû ïðàâ³ëüíûõ àäêàçàõ. ͳâîäíû àäêàç íå ìîæà áûöü ïî¢íûì (ã.çí. ïàïÿðýäæàíûì çíàêàì =).

          @@ -202,7 +202,7 @@ p>

          Ó ïåðøûì âûïàäêó êîæíû íåäàêëàäíû àäêàç äàñöü 0 çà ïûòàííå. Ó äðóã³ì âûïàäêó çà íåäàêëàäíûÿ àäêàçû áóäóöü íàë³÷âàööà øòðàôíûÿ áàëû.

          -

          Ñïåöûÿëüíûÿ çíàê³ ~ = # { } :

          +

          Ñïåöûÿëüíûÿ çíàê³ ~ = # { } :

          Ãýòûÿ ñ³ìâàëû ~ = # { } ç’ÿ¢ëÿþööà ôóíêöûÿíàëüíûì³ çíàêàì³ G²FT ³ íå ìîãóöü óæûâàööà íàðìàëüíûì ÷ûíàì ó ïûòàíí³ ö³ àäêàçå. Àäíàê, êàá ³õ âûêàðûñòàöü ó çìåñöå ïûòàííÿ àáî àäêàçó, òðýáà ïåðàä êîæíûì ñïåöûÿëüíûì çíàêàì ïàñòàâ³öü çâàðîòíû ñëýø (\). Íàïðûêëàä:

          @@ -226,7 +226,7 @@ p>

          Ó ïðàöýñå ³ìïàðòó çâàðîòíû ñëýø âûäàëÿþööà.

          -

          ²íøûÿ îïöû³:

          +

          ²íøûÿ îïöû³:

          Ïûòàíí³ òûïó êàðîòê³ àäêàç ìîãóöü áûöü àä÷óâàëüíûì³ äà ðýåñòðó (ïàìåðó ë³òàð). Êàá àòðûìàöü òàê³ âûí³ê, òðýáà çàìÿí³öü 0 íà 1 ó ðàäêó:
          diff --git a/lang/be/help/quiz/grademethod.html b/lang/be/help/quiz/grademethod.html index 0a431e48770..19a1eaa78b0 100644 --- a/lang/be/help/quiz/grademethod.html +++ b/lang/be/help/quiz/grademethod.html @@ -1,23 +1,23 @@ -

          Ìåòàä àöýíüâàííÿ

          +

          Ìåòàä àöýíê³

          -

          Êàë³ ñòóäýíòàì äàçâîëåíà íåêàëüê³ ðàçî¢ ïðàõîäç³öü òýñò, Âû ìîæàöå ïà ðîçíàìó âûë³÷àöü âûí³êîâóþ àäçíàêó çà òýñò.

          +

          Êàë³ ñòóäýíòàì äàçâîëåíà íåêàëüê³ ðàçî¢ ïðàõîäç³öü òýñò, Âû ìîæàöå ïà ðîçíàìó âûë³÷àöü âûí³êîâóþ àäçíàêó çà òýñò. -

          Ëåïøàÿ àäçíàêà

          -
          -

          Êàí÷àòêîâàé àäçíàêàé ë³÷ûööà ëåïøàÿ àäçíàêà ç óñ³õ ñïðîáà¢.

          -
          +

          Ëåïøàÿ àäçíàêà

          +

            +

            Êàí÷àòêîâàé àäçíàêàé ë³÷ûööà ëåïøàÿ àäçíàêà ç óñ³õ ñïðîáà¢. +

          -

          Ñÿðýäíÿÿ àäçíàêà

          -
          -

          Âûë³÷àåööà ñÿðýäíÿÿ àäçíàêà ¢ñ³õ ñïðîáà¢.

          -
          +

          Ñÿðýäíÿÿ àäçíàêà

          +

            +

            Âûë³÷àåööà ñÿðýäíÿÿ àäçíàêà ¢ñ³õ ñïðîáà¢. +

          -

          Ïåðøàÿ ñïðîáà

          -
          -

          Ó ðàçë³ê ïðûìàåööà ïåðøàÿ ñïðîáà (³íøûÿ ñïðîáû - ³ãíàðóþööà).

          -
          +

          Ïåðøàÿ ñïðîáà

          +

            +

            Ó ðàçë³ê ïðûìàåööà ïåðøàÿ ñïðîáà (³íøûÿ ñïðîáû - ³ãíàðóþööà). +

          -

          Àïîøíÿÿ ñïðîáà

          -
          -

          Âûí³êîâàé àäçíàêàé ë³÷ûööà àäçíàêà àïîøíÿé ñïðîáû.

          -
          +

          Àïîøíÿÿ ñïðîáà

          +

            +

            Âûí³êîâàé àäçíàêàé ë³÷ûööà àäçíàêà àïîøíÿé ñïðîáû. +

          diff --git a/lang/be/help/quiz/import.html b/lang/be/help/quiz/import.html index 8c92253ec1f..ff2e4065af2 100644 --- a/lang/be/help/quiz/import.html +++ b/lang/be/help/quiz/import.html @@ -1,113 +1,42 @@ -

          ²ìïàðò íîâûõ ïûòàííÿ¢

          +

          ²ìïàðò íîâûõ ïûòàííÿ¢

          -

          Ãýòàÿ ôóíêöûÿ äàçâàëÿå ³ìïàðòàâàöü ïûòàíí³ ñà çíåøí³õ òýêñòàâûõ ôàéëà¢, øòî çàãðóæàþööà ïðàç ôîðìó. +

          Ãýòàÿ ôóíêöûÿ äàçâàëÿå Âàì ³ìïàðòàâàöü ïûòàíí³ ñà çíåøíÿãà ôàéëà. -

          Ïàäòðûìë³âàþööà íàñòóïíûÿ ôàðìàòû: +

          Ïàäòðûìë³âàåööà íåêàëüê³ ôàðìàòࢠôàéëà¢: -

          Ôàðìàò GIFT

          -
          -

          GIFT ç'ÿ¢ëÿåööà íàéáîëüø ïî¢íûì ôàðìàòàì äàñòóïíûì äëÿ ³ìïàðòàâàííÿ ïûòàííÿ¢ ó òýñòû ñ³ñòýìû Moodle ç òýêñòàâàãà ôàéëà. ¨í áû¢ ðàñïðàöàâàíû äëÿ ìàã÷ûìàñö³ ïàäðûõòî¢ê³ ïûòàííÿ¢ äëÿ òýñòࢠó âûãëÿäçå òýêñòàâàãà ôàéëà. ¨í ïàäòðûìë³âàå Ìíîæíû àäêàç, Àäêàç Òàê/Íå, Êàðîòê³ àäêàç, ˳÷áàâû àäêàç, Àäïàâåäíàñö³, Óñòà¢êà ñëîâà çàìåñò ïðàáåëó ³ ³íøûÿ òûïû ïûòàííÿ¢. Ðîçíûÿ òûïû ïûòàííÿ¢ ìîãóöü áûöü âûêàðûñòàíûÿ ¢ àäíûì òýêñòàâûì ôàéëå. Ôàðìàò ãýòàê æà ïàäòðûìë³âàå Êàìåíòàðû, Íàçâû ïûòàííÿ¢, Çâàðîòíóþ ñóâÿçü ³ Àäçíàêó. ͳæýé ïðûâåäçåíûÿ íåêàëüê³ ïðûêëàäà¢:

          -
          -Õòî ïàõàâàíû ¢ ìàã³ëå Ãðàíòà?{~Ãðàíò ~Äæýôåðñàí =í³õòî}
          +

          Ôàðìàò ç ïðàïóø÷àíûì ñëîâàì

          +
            +

            Ãýòû ôàðìàò ïàäòðûìë³âàå òîëüê³ ïûòàíí³, ÿê³ÿ ïðàäóãëåäæâàþöü íåêàëüê³ âàðûÿíòࢠàäêàçà¢. Êîæíû àäêàç àäëó÷àåööà òûëüäàé(~), à ïåðàä ïðàâ³ëüíûì àäêàçàì ñòà³öü çíàê (=). Ïðûêëàä: -Ãðàíò {~ïàõàâàíû =ïàõàâàíû ~æûâå} ó ìàã³ëå Ãðàíòà. +

            As soon as we begin to explore our body parts as infants +we become students of {=anatomy and physiology ~reflexology +~science ~experiment}, and in a sense we remain students for life. +
            -Ãðàíò ïàõàâàíû ¢ ìàã³ëå Ãðàíòà.{FALSE} - -Õòî ïàõàâàíû ¢ ìàã³ëå Ãðàíòà?{=í³õòî =ìàã³ëà ïóñòàÿ} - -Êàë³ íàðàäç³¢ñÿ Ãðàíò?{#1822} -
          - -

          Äàâåäàööà áîëüø àá ôàðìàöå "GIFT"

          -
          - -

          Ôàðìàò Aiken

          -
          -

          Ôàðìàò Aiken âåëüì³ ïðîñòû ñïîñàá ñòâàðýííÿ ïûòàííÿ¢ òûïó Ìíîæíû àäêàç. ¨í âûêàðûñòî¢âàå âåëüì³ ïðîñòû ñ³íòàêñ³ñ. Ïðûêëàä: -

          -
          -ßêàÿ ìýòà ïåðøàé äàïàìîã³?
          -A. Çàõàâàöü æûöö¸, ïàïÿðýäç³öü äàëåéøàå ïàøêîäæàííå, çàõàâàöü çäàðî¢ÿ
          -b. Çàáÿñïå÷ûöü ìåäûöûíñêóþ äàïàìîãó ïàöÿðïåëàìó
          -C. Ïàïÿðýäç³öü äàëåéøàå ïàøêîäæàííå
          -D. Äàïàìàã÷û ïàöÿðïåëàìó, ÿê³ ïðîñ³öü äàïàìîã³
          -ÀÄÊÀÇ: A
          -

          Äàâåäàööà áîëüø àá ôàðìàöå "Aiken"

          -
          +

          ÿø÷ý...

          + -

          Ôàðìàò Ñëîâà, ÿêîãà áðàêóå

          -
          -

          Ãýòû ôàðìàò ïàäòðûìë³âàå òîëüê³ ïûòàííå òûïó Ìíîæíû àäêàç. Êîæíû àäêàç àääçåëåíû çíàêàì òûëüäû (~), à ïðàâ³ëüíû àäêàç àääçåëåíû çíàêàì ðî¢íà (=). Ïðûêëàä:

          +

          IMS QTI ôàðìàò

          +
            +

            Ïàêóëü íå ïàäòðûìë³âàåööà -

            Ïåðø ÷ûì ïà÷àöü âûâó÷àöü ÷àñòê³ íàøàãà öåëà ÿê íåìà¢ëÿòû, ìû ñòàíåì ñòóäýíòàì³{=àíàòîì³³ ³ ô³ç³ÿëîã³³ ~ðýôëåêòàëîã³³ ~íàâóê³ ~ýêñïåðûìåíòó}, ³ çàñòàíåìñÿ ñòóäýíòàì³ íà ¢ñ¸ æûöö¸. -
            - -

            Äàâåäàööà áîëüø àá ôàðìàöå "Ñëîâà, ÿêîãà áðàêóå"

            -
          +

          ÿø÷ý...

          + -

          Ôàðìàò ÀÎÍ

          -
          -

          Ãýòà òîé æà ñàìû ôàðìàò "Ñëîâà, ÿêîãà áðàêóå", çà âûêëþ÷ýííåì òàãî, øòî ïàñëÿ ³ìïàðòàâàííÿ ¢ñå ïûòàíí³ òûïó Êàðîòê³ àäêàç êàíâåðòóåööà ÷àòûðû çà ðàç ó òûï Àäïàâåäíàñöÿ¢.

          -

          Ó äàïà¢íåííå, àäêàçû àä ïûòàííÿ¢ òûïó Ìíîæíû àäêàç çìåøâàþööà âûïàäêîâûì ÷ûíàì ïàä÷àñ ³ìïàðòó

          -

          Ôàðìàò ìàå íàçâó ¢ ãîíàð àðãàí³çàöû³, ÿêàÿ ñïàíñàâàëà ðàñïðàöî¢êó ìíîñòâà îïöûÿ¢ äëÿ òýñòàâàííÿ.

          -
          +

          WebCT ôàðìàò

          +
            +

            Ïàêóëü íå ïàäòðûìë³âàåööà +

            ÿø÷ý...

            +
          -

          Ôàðìàò Äîøêà

          -
          -

          Ãýòû ìîäóëü ìîæà ³ìïàðòàâàöü ïûòàíí³, çàõàâàíûÿ ¢ ôàðìàöå ýêñïàðòó ç ôàðìàòó Äîøêà. ¨í çàñíàâàíû íà ôóíêöû³ XML ñêàìï³ëÿâàíàé ó pHp

          +

          Êàðûñòàëüí³öê³ ôàðìàò

          +
          +

          Êîëüêàñöü êîäà, ÿê³ íåàáõîäíà áóäçå äàï³ñàöü äîñûöü ìàëà - ðî¢íà ñòîëüê³, êîëüê³ íåàáõîäíà, äëÿ òàãî êàá ïàïðàñ³öü àäç³íî÷íàå ïûòàííå ç òýêñòó. -

          Ôàðìàò WebCT

          -
          -

          Ãýòû ìîäóëü ìîæà ³ìïàðòàâàöü ïûòàíí³ çàõàâàíûÿ ¢ ôàðìàöå WebCT, ÿê³ áàçóåööà íà òýêñòàâûì ôàðìàöå.

          - -

          Äàâåäàööà áîëüø àá ôàðìàöå "WebCT"

          -
          - -

          Ôàðìàò Ìåíåäæýð òýñòà¢

          -
          -

          Ãýòû ìîäóëü ìîæà ³ìïàðòàâàöü ïûòàíí³, çàõàâàíûÿ ¢ ôàðìàöå Course Test Manager. ¨í çàñíàâàíû íà ðîçíûõ øëÿõàõ äîñòóïó ¢ áàíê òýñòà¢, òàê³õ ÿê áàçà äàäçåíûõ Microsoft Access, ó çàëåæíàñö³ àä òàãî, íà ÿêîé ïëàòôîðìå ïðàöóå Moodle-ñýðâåð, íà Windows àáî íà Linux.

          -

          Íà Windows - ãýòà äàå ìàã÷ûìàñöü çàãðóç³öü áàçó äàäçåíûõ ÿê ëþáû äðóã³ ôàéë.

          -

          Íà Linux ìóñ³öü áûöü óñòàëÿâàíû ODbC êàìïàíåíò äëÿ äîñòóïó äà ìàøûíû ç Windows, íà ÿêîé çàõî¢âàåööà ñåòêàâû òýñò

          -

          Ïðà÷ûòàéöå ¢âàæë³âà ðàçäçåë í³æýé ïåðø ÷ûì âûêàðûñòàöü ãýòà ýêñïàðòàâàííå.

          - -

          Äàâåäàööà áîëüø àá ôàðìàöå "Ìåíåäæýð òýñòà¢"

          -
          - -

          Çâÿçàíûÿ ïûòàíí³ (Cloze)

          -
          -

          Ãýòû, âåëüì³ ãíóòê³ òûï ïûòàííÿ¢, ïàäîáíû äà ôàðìàòó, âÿäîìàãà ÿê ôàðìàò Cloze (íàâó÷àëüíû òýêñò, ó ÿê³ì íåêàòîðûÿ ñëîâû çàìåíåíû ïðàáåëàì³).

          - -

          Äàâåäàööà áîëüø àá ôàðìàöå "Çâÿçàíûÿ ïûòàíí³"

          -
          - -

          Learnwise format

          -
          -

          This format can import mblockquotetiple choice questions saved in Learnwise's XML -format.

          -
          - -

          Moodle XML format

          -
          -

          This Moodle specific format imports quiz questions that have previously been -exported in the same format. The format is straightforward and is best demonstrated -by exporting a category in the Moodle XML format.

          -
          - -

          Ôàðìàò Íåñòàíäàðòíû

          -
          -

          Êàë³ Âû ìàåöå óëàñíû ôàðìàò, ÿê³ âû æàäàåöå ³ìïàðòàâàöü, Âû ìîæàöå ¢æûöü ÿãî ñàìàñòîéíà àï³ñà¢øû ¢ mod/quiz/format/custom.php

          - -

          Ïàìåð êîäà äëÿ äàäàâàííÿ âåëüì³ ìàëû, òîëüê³ êàá âûëó÷ûöü ïûòàííå ç àçíà÷àíàãà òýêñòó.

          - -

          Äàâåäàööà áîëüø àá ôàðìàöå "Íåñòàíäàðòíû"

          -
          - - -

          Ìíîñòâà ôàðìàòࢠÿø÷ý íå ¢êàðàí¸íà, óêëþ÷íà WebCT, IMS QTI ³ øýðàã ³íøûõ. Êàðûñòàëüí³ê³ Moodle ìîãóöü çðàá³öü ñâîé óí¸ñàê!

          \ No newline at end of file +

          ÿø÷ý...

          + diff --git a/lang/be/help/quiz/index.html b/lang/be/help/quiz/index.html index c8beaa372c5..46c56193871 100644 --- a/lang/be/help/quiz/index.html +++ b/lang/be/help/quiz/index.html @@ -1,29 +1,24 @@

          Òýñòû

          \ No newline at end of file + + diff --git a/lang/be/help/quiz/match.html b/lang/be/help/quiz/match.html index 9ac3f85f3f6..c05685c70ef 100644 --- a/lang/be/help/quiz/match.html +++ b/lang/be/help/quiz/match.html @@ -1,4 +1,4 @@ -

          Ïûòàíí³ òûïó "Äàïàñóé àäêàç"

          +

          Ïûòàíí³ òûïó "Äàïàñóé àäêàç"

          Àïûòâàåìû àòðûìë³âàå íåêàëüê³ ïàäïûòàííÿ¢ ðàçàì ç íåêàëüê³ì³ àäêàçàì³. Òðýáà âûáðàöü ïðàâ³ëüíû àäêàç íà êîæíàå ïàäïûòàííå.

          Íà êîæíàå ïàäïûòàííå òðýáà âûáðàöü òîëüê³ àäç³í àäêàç.

          Êîæíàå ïàäïûòàííå ìàå òàêóþ ñàìóþ âàãó ïðû êàí÷àòêîâàé àöýíöû àäêàçà¢, ÿê ³ àäêàç íà öýëàå ïûòàííå.

          \ No newline at end of file diff --git a/lang/be/help/quiz/maxgrade.html b/lang/be/help/quiz/maxgrade.html index 0c76901b63a..3ac35de3af9 100644 --- a/lang/be/help/quiz/maxgrade.html +++ b/lang/be/help/quiz/maxgrade.html @@ -1,7 +1,7 @@ -

          Ìàêñ³ìàëüíàÿ àäçíàêà

          +

          Ìàêñ³ìàëüíàÿ àäçíàêà

          -

          Ìàêñ³ìàëüíàÿ àäçíàêà äëÿ òýñòó - àäçíàêà, äà ÿêîé áóäóöü ïðàïàðöûéíà ïðûâåäçåíûÿ àäçíàê³ òýñòàâàííÿ.

          +

          Ìàêñ³ìàëüíàÿ àäçíàêà äëÿ òýñòó - àäçíàêà, äà ÿêîé áóäóöü ïðàïàðöûéíà ïðûâåäçåíûÿ àäçíàê³ òýñòàâàííÿ. -

          Íàïðûêëàä, Âû ¢ñòàëþåöå ìàêñ³ìàëüíóþ àäçíàêó äëÿ òýñòó - 20 (óÿâ³ì Âû ïàë³÷ûë³, øòî òýñò óíÿñå 20% ó àäçíàêó çà ¢âåñü êóðñ).

          +

          Íàïðûêëàä, Âû ¢ñòàëþåöå ìàêñ³ìàëüíóþ àäçíàêó äëÿ òýñòó - 20 (óÿâ³ì Âû ïàë³÷ûë³, øòî òýñò óíÿñå 20% ó àäçíàêó çà ¢âåñü êóðñ). -

          Íå ãëåäçÿ÷û íà òîå, øòî Âàøû òýñò óòðûìî¢âàå 10 ïûòàííÿ¢ ³ ìîæà áûöü àöýíåíû ¢ 50 áàëà¢, âûí³êîâàÿ àäçíàêà áóäçå ïðàïàðöûéíà çìåíåíàÿ ç ðàçë³êó: ìàêñ³ìàëüíàÿ - 20.

          +

          Íå ãëåäçÿ÷û íà òîå, øòî Âàøû òýñò óòðûìî¢âàå 10 ïûòàííÿ¢ ³ ìîæà áûöü àöýíåíû ¢ 50 áàëà¢, âûí³êîâàÿ àäçíàêà áóäçå ïðàïàðöûéíà çìåíåíàÿ ç ðàçë³êó: ìàêñ³ìàëüíàÿ - 20. diff --git a/lang/be/help/quiz/mods.html b/lang/be/help/quiz/mods.html index 31a6c77e9aa..b09d17c22d8 100644 --- a/lang/be/help/quiz/mods.html +++ b/lang/be/help/quiz/mods.html @@ -1,4 +1,5 @@ -

           Òýñòû

          -
          +

           Òýñòû

          +

            Ãýòû ìîäóëü äàå ìàã÷ûìàñöü âÿäî¢öû ñòâàðàöü ³ çàäàâàöü òýñòû ó ôîðìå íàáîðó ïûòàííÿ¢ ìíîæíàãà âûáàðó, ïûòàííÿ¢ òûïó äàêëàäíà/íåäàêëàäíà, à òàêñàìà ïûòàííÿ¢, ÿê³ÿ ïàòðàáóþöü êàðîòê³õ àäêàçà¢. Ãýòûÿ ïûòàíí³, óïàðàäêàâàíûÿ ïàâîäëå êàòýãîðû³, çàõî¢âàþööà ¢ áàçå äàäçåíûõ ³ ìîãóöü áûöü âûêàðûñòàíû çíî¢ ó ìåæàõ äàäçåíàãà êóðñà àáî íàâàò ïåðàíåñåíûÿ ¢ ³íøû êóðñ. Ó òýñòàõ ìîãóöü äàïóñêàööà øìàòðàçîâûÿ ñïðîáû çíàéñö³ ïðàâ³ëüíû àäêàç. Êîæíàÿ òàêàÿ ñïðîáà ïðàâÿðàåööà à¢òàìàòû÷íà ³ âÿäî¢öà ìîæà âûðàøàöü, çðàá³öü ñâàå çà¢âàã³ àáî ïàäêàçàöü ïðàâ³ëüíû àäêàç. Ãýòû ìîäóëü ïðàïàíóå ³íñòðóìåíò, ÿê³ äàå ìàã÷ûìàñöü âûñòàâ³öü àäçíàê³.

            -
          \ No newline at end of file + + diff --git a/lang/be/help/quiz/multianswer.html b/lang/be/help/quiz/multianswer.html index d9832a04fb0..754382a513f 100644 --- a/lang/be/help/quiz/multianswer.html +++ b/lang/be/help/quiz/multianswer.html @@ -10,7 +10,7 @@
          - - -
          - -
          - - - -

          Aquest exemple apareixeria als estudiants d'aquesta manera:

          - - - - - -
          - -
          - -

          3

          - -

          8 punts

          - -
          - -
          - -

          Aquesta pregunta consisteix en un text amb una resposta incrustada - - just aquí - - - - i ara haureu d'enfrontar-vos a aquesta resposta curta - - - - i per acabar un número decimal - - - - .
          - -
          - - Fixeu-vos que les adreces com ara www.moodle.org i les emoticones - - - - funcionen com de costum:
          - - a) T'agrada? - - - -
          - - b) Quina nota li posaries? - - - -
          - -
          - - Bona sort!

          - -
          - -
          - - - -
          - - - + +

          Respostes incrustades (format Cloze)

          + +

          Aquest tipus de pregunta tan flexible és semblant al conegut format + Cloze. +

          Les preguntes consisteixen en un passatge d'un text, en format de Moodle, que + té diferents respostes incrustades, incloent-ne dels tipus elecció + múltiple, resposta curta o resposta numèrica. +

          De moment no hi ha una interfície gràfica per crear aquestes + preguntes de forma que haureu d'especificar el format de pregunta usant un quadre + de text o important-lo d'un fitxer extern. +

          Aquest és un exemple de text d'entrada que especifica una pregunta d'aquest + tipus: +

          +
          + +
          +
          + +

          Aquest exemple apareixeria als estudiants d'aquesta manera:

          + + +
          +
          +

          3

          +

          8 punts

          +
          +
          +

          Aquesta pregunta consisteix en un text amb una resposta incrustada + just aquí + + i ara haureu d'enfrontar-vos a aquesta resposta curta + + i per acabar un número decimal + + .
          +
          + Fixeu-vos que les adreces com ara www.moodle.org i les emoticones + + funcionen com de costum:
          + a) T'agrada? + +
          + b) Quina nota li posaries? + +
          +
          + Bona sort!

          +
          +
          + +
          + diff --git a/lang/ca/help/quiz/multichoice.html b/lang/ca/help/quiz/multichoice.html index 4be839b9a6e..1d3f6656efe 100755 --- a/lang/ca/help/quiz/multichoice.html +++ b/lang/ca/help/quiz/multichoice.html @@ -1 +1,19 @@ -

          Preguntes d'elecció múltiple

          Com a resposta a una pregunta, que pot contenir una imatge, l'estudiant tria entre diferents respostes. Hi ha dos tipus de preguntes d'elecció múltiple: de resposta senzilla i de resposta múltiple.

          Les preguntes de resposta senzilla només ofereixen una i només una resposta per escollir. Generalment totes les notes a aquestes preguntes seran positives.

          Les preguntes de resposta múltiple permeten escollir entre una o més respostes a escollir, i cadascuna pot estar associada a una nota positiva o negativa de manera que escollint TOTES les opcions el resultat no necessàriament serà bo. Si el total de la nota és negatiu aleshores la nota global d'aquesta pregunta serà zero. Aneu amb compte perquè es poden plantejar preguntes que puntuïn per sobre del 100%.

          Finalment cada resposta, correcta o incorrecta, pot incloure retroalimentació. Aquesta retroalimentació li apareixerà a l'estudiant a prop de cadascuna de les seves respostes en el cas que el qüestionari s'hagi configurat per mostrar retroalimentació.

          \ No newline at end of file + +

          Preguntes d'elecció múltiple

          + +

          Com a resposta a una pregunta, que pot contenir una imatge, l'estudiant tria + entre diferents respostes. Hi ha dos tipus de preguntes d'elecció múltiple: + de resposta senzilla i de resposta múltiple. +

          Les preguntes de resposta senzilla només ofereixen una i només + una resposta per escollir. Generalment totes les notes a aquestes preguntes + seran positives.

          +

          Les preguntes de resposta múltiple permeten escollir entre una o més + respostes a escollir, i cadascuna pot estar associada a una nota positiva o + negativa de manera que escollint TOTES les opcions el resultat no necessàriament + serà bo. Si el total de la nota és negatiu aleshores la nota global + d'aquesta pregunta serà zero. Aneu amb compte perquè es poden + plantejar preguntes que puntuïn per sobre del 100%. +

          Finalment cada resposta, correcta o incorrecta, pot incloure retroalimentació. + Aquesta retroalimentació li apareixerà a l'estudiant a prop de + cadascuna de les seves respostes en el cas que el qüestionari s'hagi configurat + per mostrar retroalimentació. diff --git a/lang/ca/help/quiz/numerical.html b/lang/ca/help/quiz/numerical.html index be659c34599..6c6bb4ed2c9 100755 --- a/lang/ca/help/quiz/numerical.html +++ b/lang/ca/help/quiz/numerical.html @@ -1 +1,13 @@ -

          Preguntes numèriques

          Des de la perspectiva de l'estudiant una pregunta numèrica té la mateixa aparença que una pregunta de resposta curta.

          La diferència, però, és que les respostes numèriques que admet permeten acceptar un marge d'error. De manera que s'haurà d'establir un rang de possibles respostes correctes

          Per exemple, si la resposta és 30 amb un error acceptat de 5 aleshores qualsevol número entre 25 i 35 s'acceptarà com a resposta correcta.

          Les preguntes numèriques també poden tenir respostes no numèriques que acceptin qualsevol format de text. Això pot ser útil quan la resposta a una pregunta numèrica sigui +inf, -inf, etc.

          \ No newline at end of file + +

          Preguntes numèriques

          + +

          Des de la perspectiva de l'estudiant una pregunta numèrica té + la mateixa aparença que una pregunta de resposta curta.

          +

          La diferència, però, és que les respostes numèriques + que admet permeten acceptar un marge d'error. De manera que s'haurà d'establir + un rang de possibles respostes correctes

          +

          Per exemple, si la resposta és 30 amb un error acceptat de 5 aleshores + qualsevol número entre 25 i 35 s'acceptarà com a resposta correcta.

          +

          Les preguntes numèriques també poden tenir respostes no numèriques + que acceptin qualsevol format de text. Això pot ser útil quan + la resposta a una pregunta numèrica sigui +inf, -inf, etc.

          diff --git a/lang/ca/help/quiz/questiontypes.html b/lang/ca/help/quiz/questiontypes.html index 51d5f2a4ad4..9fb80d864df 100755 --- a/lang/ca/help/quiz/questiontypes.html +++ b/lang/ca/help/quiz/questiontypes.html @@ -1,164 +1,82 @@ - - -

          Crear una pregunta nova

          - - - -

          Podeu afegir una gran varietat de tipus de pregunta a una categoria:

          - - - -

          Elecció múltiple

          - -
            - -

            En resposta a una pregunta, que pot contenir una imatge, l'estudiant tria - - entre diferents respostes. Hi ha dos tipus de preguntes d'elecció múltiple: - - de resposta senzilla i de resposta múltiple.

            - -

            Més informació sobre preguntes d'elecció múltiple

            - -
          - - - -

          Resposta curta

          - -
            - -

            En resposta a una pregunta, que pot contenir una imatge, l'estudiant escriu - - una paraula o frase. Hi poden haver diferents respostes correctes amb qualificacions - - diferents. El text de les respostes pot ser o no sensible a les majúscules

            - -

            Més informació sobre les preguntes de resposta curta

            - -
          - - - -

          Numèriques

          - -
            - -

            Des de la perspectiva de l'estudiant una pregunta numèrica té - - la mateixa aparença que una pregunta de resposta curta. La diferència, - - però, és que les respostes numèriques que admet permeten - - acceptar un marge d'error. De manera que s'haurà d'establir un rang - - de possibles respostes correctes.

            - -

            - -

            Més informació sobre preguntes numèriques

            - -
          - - - -

          Vertader/Fals

          - - - - - -

          De relació

          - - - - - -

          Respostes incrustades (format Cloze)

          - - - - - -

          Aleatòries de relació amb resposta curta

          - -
            - -

            Des de la perspectiva de l'estudiant s'assemblen a les preguntes de relació. - - La diferència, tanmateix, rau en el fet que les subpreguntes es treuen - - aleatòriament del conjunt de preguntes de resposta curta de la mateixa - - categoria.

            - -

            Més informació sobre les preguntes de relació

            - -
          - - - -

          Aleatòries

          - - - - - -

          Descripció

          - -
            - -

            Aquest tipus de pregunta no és en realitat una pregunta. El que fa - - és escriure un text sense demanar cap resposta. Pot ser utilitzat per - - mostrar un text descriptiu que utilitzarà el següent grup de qüestions.
            - -

            - -

            Més informació sobre les preguntes de descripció

            - -
          - - - + +

          Crear una pregunta nova

          + +

          Podeu afegir una gran varietat de tipus de pregunta a una categoria:

          + +

          Elecció múltiple

          + + +

          Resposta curta

          +
            +

            En resposta a una pregunta, que pot contenir una imatge, l'estudiant escriu + una paraula o frase. Hi poden haver diferents respostes correctes amb qualificacions + diferents. El text de les respostes pot ser o no sensible a les majúscules

            +

            Més informació sobre les preguntes de resposta curta

            +
          + +

          Numèriques

          +
            +

            Des de la perspectiva de l'estudiant una pregunta numèrica té + la mateixa aparença que una pregunta de resposta curta. La diferència, + però, és que les respostes numèriques que admet permeten + acceptar un marge d'error. De manera que s'haurà d'establir un rang + de possibles respostes correctes.

            +

            +

            Més informació sobre preguntes numèriques

            +
          + +

          Vertader/Fals

          + + +

          De relació

          + + +

          Respostes incrustades (format Cloze)

          + + +

          Aleatòries de relació amb resposta curta

          +
            +

            Des de la perspectiva de l'estudiant s'assemblen a les preguntes de relació. + La diferència, tanmateix, rau en el fet que les subpreguntes es treuen + aleatòriament del conjunt de preguntes de resposta curta de la mateixa + categoria.

            +

            Més informació sobre les preguntes de relació

            +
          + +

          Aleatòries

          + + +

          Descripció

          +
            +

            Aquest tipus de pregunta no és en realitat una pregunta. El que fa + és escriure un text sense demanar cap resposta. Pot ser utilitzat per + mostrar un text descriptiu que utilitzarà el següent grup de qüestions.
            +

            +

            Més informació sobre les preguntes de descripció

            +
          + diff --git a/lang/ca/help/quiz/randomsamatch.html b/lang/ca/help/quiz/randomsamatch.html index 7ba12226895..8eabe4fe6b8 100755 --- a/lang/ca/help/quiz/randomsamatch.html +++ b/lang/ca/help/quiz/randomsamatch.html @@ -1 +1,13 @@ -

          Preguntes aleatòries de relació amb resposta curta

          Després d'una introducció opcional se li presenten a l'estudiant diferents subpreguntes amb diferents respostes barrejades. Només hi ha una resposta correcta a cada pregunta. Cal seleccionar una resposta que es relacioni amb cada subpregunta.

          Cada subpregunta és valorada de la mateixa manera a l'hora de contribuir a la nota global de la pregunta.

          Preguntes i respostes es prenen aleatòriament d'un conjunt de preguntes de resposta curta de la mateixa categoria. Cada intent de resoldre el qüestionari tindrà, així, diferents preguntes i respostes.

          \ No newline at end of file + +

          Preguntes aleatòries de relació amb resposta + curta

          + +

          Després d'una introducció opcional se li presenten a l'estudiant + diferents subpreguntes amb diferents respostes barrejades. Només hi ha + una resposta correcta a cada pregunta. Cal seleccionar una resposta que es relacioni + amb cada subpregunta. +

          Cada subpregunta és valorada de la mateixa manera a l'hora de contribuir + a la nota global de la pregunta. +

          Preguntes i respostes es prenen aleatòriament d'un conjunt de preguntes + de resposta curta de la mateixa categoria. Cada intent de resoldre el qüestionari + tindrà, així, diferents preguntes i respostes. diff --git a/lang/ca/help/quiz/review.html b/lang/ca/help/quiz/review.html index 34b4c1e6dd4..fee8091d8c8 100755 --- a/lang/ca/help/quiz/review.html +++ b/lang/ca/help/quiz/review.html @@ -1,7 +1,7 @@ -

          Permetre la revisió un cop el qüestionari està - tancat

          +

          Permetre la revisió un cop el qüestionari està + tancat

          -

          Si activeu aquesta opció els estudiants podran revisar els intents anteriors - del qüestionari.

          -

          Només està activat un cop es tanca el qüestionari.

          +

          Si activeu aquesta opció els estudiants podran revisar els intents anteriors + del qüestionari.

          +

          Només està activat un cop es tanca el qüestionari.

          diff --git a/lang/ca/help/quiz/shortanswer.html b/lang/ca/help/quiz/shortanswer.html index 6c521bce699..10432367439 100755 --- a/lang/ca/help/quiz/shortanswer.html +++ b/lang/ca/help/quiz/shortanswer.html @@ -1 +1,10 @@ -

          Preguntes de resposta curta

          En resposta a una pregunta, que pot contenir imatges, l'estudiant escriu una paraula o una frase curta.

          Hi poden haver diferents respostes correctes, cadascuna amb una qualificació diferent. Si està activada l'opció "sensible a les majúscules" tindreu diferents qualificacions per "Paraula" o per "paraula".

          Es comparen les respostes de forma exacta, així que sigueu curosos amb l'ortografia!

          \ No newline at end of file + +

          Preguntes de resposta curta

          + +

          En resposta a una pregunta, que pot contenir imatges, l'estudiant escriu una + paraula o una frase curta. +

          Hi poden haver diferents respostes correctes, cadascuna amb una qualificació + diferent. Si està activada l'opció "sensible a les majúscules" + tindreu diferents qualificacions per "Paraula" o per "paraula". +

          Es comparen les respostes de forma exacta, així que sigueu curosos amb + l'ortografia! diff --git a/lang/ca/help/quiz/shuffleanswers.html b/lang/ca/help/quiz/shuffleanswers.html index 167ac018492..7cf3961a4cf 100755 --- a/lang/ca/help/quiz/shuffleanswers.html +++ b/lang/ca/help/quiz/shuffleanswers.html @@ -1,5 +1,5 @@ -

          Barrejar respostes

          +

          Barrejar respostes

          Si activeu aquesta opció l'ordre les respostes de cada pregunta es barrejarà a l'atzar cada cop que l'estudiant intenta resoldre el qüestionari.

          diff --git a/lang/ca/help/quiz/shufflequestions.html b/lang/ca/help/quiz/shufflequestions.html index 53c03ed9da0..7120c6bfc7b 100755 --- a/lang/ca/help/quiz/shufflequestions.html +++ b/lang/ca/help/quiz/shufflequestions.html @@ -1,5 +1,5 @@ -

          Barrejar preguntes

          +

          Barrejar preguntes

          Si activeu aquesta opció aleshores l'ordre de les preguntes del qüestionari es barrejarà aleatòriament cada cop que l'estudiant intenta resoldre diff --git a/lang/ca/help/quiz/timeopen.html b/lang/ca/help/quiz/timeopen.html index 66256f6c675..f15898471ae 100755 --- a/lang/ca/help/quiz/timeopen.html +++ b/lang/ca/help/quiz/timeopen.html @@ -1 +1,7 @@ -

          Obrir i tancar el qüestionari

          Podeu especificar les hores o els dies en què es pot accedir a resoldre el qüestionari.

          Abans del moment d'obertura, i després del moment de clausura, no es pot accedir al qüestionari.

          \ No newline at end of file + +

          Obrir i tancar el qüestionari

          + +

          Podeu especificar les hores o els dies en què es pot accedir a resoldre + el qüestionari. +

          Abans del moment d'obertura, i després del moment de clausura, no es + pot accedir al qüestionari. diff --git a/lang/ca/help/quiz/truefalse.html b/lang/ca/help/quiz/truefalse.html index 735cfcc0a1c..a862f9a2a51 100755 --- a/lang/ca/help/quiz/truefalse.html +++ b/lang/ca/help/quiz/truefalse.html @@ -1 +1,12 @@ -

          Preguntes de Vertader/Fals

          Com a resposta a una pregunta, que pot contenir una imatge, l'estudiant tria entre Vertader o Fals.

          Després de respondre al qüestionari, i si està activada la retroalimentació, es mostrarà el corresponent missatge de retroalimentació. Per exemple, si la resposta correcta és "Fals" però es contesta erròniament "Vertader" aleshores es mostrarà la retroalimentació de "Vertader".

          \ No newline at end of file + +

          Preguntes de Vertader/Fals

          +

           

          + + +

          Com a resposta a una pregunta, que pot contenir una imatge, l'estudiant tria + entre Vertader o Fals. +

          Després de respondre al qüestionari, i si està activada + la retroalimentació, es mostrarà el corresponent missatge de retroalimentació. + Per exemple, si la resposta correcta és "Fals" però + es contesta erròniament "Vertader" aleshores es mostrarà + la retroalimentació de "Vertader". diff --git a/lang/ca/help/reading.html b/lang/ca/help/reading.html index 1ab3f245887..34013326975 100644 --- a/lang/ca/help/reading.html +++ b/lang/ca/help/reading.html @@ -1,10 +1,10 @@ -

          Llegir

          +

          Llegir

          -

          Quan es llegeix de pressa tot sovint és molt fàcil malinterpretat allò que l'autor intentava dir.

          +

          Quan es llegeix de pressa tot sovint és molt fàcil malinterpretat allò que l'autor intentava dir.

          -

          Per evitar aquesta problema, llegiu amb cura els textos i proveu a veure les coses des del punt de vista de l'autor.

          +

          Per evitar aquesta problema, llegiu amb cura els textos i proveu a veure les coses des del punt de vista de l'autor.

          -

          També pot ser útil pensar què NO ha dit l'autor o què ha deixat en dubte: això us pot ajudar a formar preguntes pròpies.

          +

          També pot ser útil pensar què NO ha dit l'autor o què ha deixat en dubte: això us pot ajudar a formar preguntes pròpies.

          -

          Més informació sobre escriure

          -

          Més informació sobre fer preguntes

          +

          Més informació sobre escriure

          +

          Més informació sobre fer preguntes

          diff --git a/lang/ca/help/resource/index.html b/lang/ca/help/resource/index.html index bbdd964900a..0c2c627bba2 100755 --- a/lang/ca/help/resource/index.html +++ b/lang/ca/help/resource/index.html @@ -1,16 +1,8 @@

          Mòdul de recursos

          diff --git a/lang/ca/help/resource/mods.html b/lang/ca/help/resource/mods.html index af2981ccb4f..596669f0c19 100755 --- a/lang/ca/help/resource/mods.html +++ b/lang/ca/help/resource/mods.html @@ -1,7 +1,7 @@ -

           Recursos

          +

           Recursos

          -
            +

              Els recursos són contingut: informació que el professor vol incorporar al curs. Es pot tractar de fitxers preparats i penjats al servidor del curs, pàgines editades directament dins de Moodle o pàgines web externes que es fan aparèixer com a part del curs.

              -
            +
          diff --git a/lang/ca/help/resource/program.html b/lang/ca/help/resource/program.html new file mode 100755 index 00000000000..12938dabb8b --- /dev/null +++ b/lang/ca/help/resource/program.html @@ -0,0 +1,16 @@ +

          Recursos de programa

          + +

          Un recurs de programa és un recurs extern que pot acceptar dades que li subministra Moodle.

          + +

          Les dates es passen via HTTP GET (com a part de l'URL) i inclouen:

          + +
            +
          • extern_nav: l'URL des d'on es crida el recurs +
          • extern_usr: el nom d'usuari de l'usuari actual +
          • extern_nam: el nom complet de l'usuari actual +
          • extern_tim: l'hora actual +
          • extern_pwd: una contrasenya única +
          + +

          Tot això s'ha de revisar en un futur pròxim.

          + diff --git a/lang/ca/help/resource/resourcetype.html b/lang/ca/help/resource/resourcetype.html new file mode 100755 index 00000000000..e753695cb79 --- /dev/null +++ b/lang/ca/help/resource/resourcetype.html @@ -0,0 +1,25 @@ +

          Tipus de recursos

          + +

          Els recursos són qualsevol contingut que pugueu imaginar. Aquests són els diferents tipus, que, +bàsicament, especifiquen la manera d'accedir al contingut: +

          + +

          Text: el tipus més senzill. Només cal que escriviu (editeu) la pàgina en el formulari que us sortirà a la pantalla següent. Algunes coses que escriviu +es formataran automàticament igual que passa amb els missatges dels fòrums. Més informació sobre text formatat automàticament

          + +

          Text HTML: per a usuaris avançats. No es produeix cap formatatge automàtic, sinó que cal fer-ho tot a mà usant codi HTML. Més informació sobre text HTML

          + +

          Referència: una referència acadèmica a una revista o un llibre.

          + +

          Fitxer penjat: visualitza qualsevol fitxer que hàgiu penjat al curs. Vegeu la secció "Fitxers".

          + +

          Enllaç web: un URL de qualsevol adreça web. Quan algú fa clic en aquest recurs, es trasllada fora del curs (la pàgina que heu especificat omplirà la finestra del navegador o, si ho especifiqueu així, s'obrirà en una nova finestra).

          + +

          Pàgina web: un URL de qualsevol pàgina web. Igual que el tipus anterior, aquest visualitza una pàgina web. Però la pàgina es visualitza en un marc, com si estigués integrada en el curs.

          + +

          Programa: un programa extern que necessita que Moodle li passi informació sobre el curs i l'usuari. Això permet que aplicacions web externes cooperin amb Moodle . Més +informació sobre recursos de programa

          + +

          Text Wiki: permet més opcions de formatatge que el text normal, però sense necessitat d'aprendre HTML. S'escriu com el text normal i s'hi afegeixen caràcters de formatatge (p. e. *això serà negreta* o bé +/això serà cursiva/) per crear fàcilment un formatatge complex. Més informació sobre text Wiki

          + diff --git a/lang/ca/help/resource/summary.html b/lang/ca/help/resource/summary.html index 4a06018714a..673604ae3ce 100755 --- a/lang/ca/help/resource/summary.html +++ b/lang/ca/help/resource/summary.html @@ -1,7 +1,8 @@ -

          Resum

          +

          Resum

          -

          El resum és una descripció molt breu del recurs. Podeu considerar-lo com unes metadades.

          +

          El resum és una descripció molt breu del recurs.

          -

          Segons les opcions de visualització del recurs, el resum s'imprimeix juntament amb el recurs o apareix a la pàgina índex dels recursos de manera que els estudiants puguin cercar-los més fàcilment.

          +

          No tingueu la temptació d'escriure massa text, o d'incloure el recurs complet aquí.

          + +

          A la pàgina següent tindre l'oportunitat d'especificar el contingut.

          -

          No tingueu la temptació d'escriure massa text, o d'incloure el recurs complet aquí!

          diff --git a/lang/ca/help/resource/window.html b/lang/ca/help/resource/window.html index f6f5fc1de19..7be38af670e 100644 --- a/lang/ca/help/resource/window.html +++ b/lang/ca/help/resource/window.html @@ -35,7 +35,7 @@

          Mostrar la barra d'estat del navegador permet accedir a la informació del navegador: p. ex. quina part del recurs s'ha baixat, o informació de seguretat.

        -
      • +
      • Determineu la mida de la finestra que voleu obrir.
        diff --git a/lang/ca/help/richtext.html b/lang/ca/help/richtext.html index ef5369f4e40..c6571296cb4 100755 --- a/lang/ca/help/richtext.html +++ b/lang/ca/help/richtext.html @@ -1,6 +1,6 @@ -

        Sobre l'editor de text enriquit HTML

        +

        Sobre l'editor de text enriquit HTML

        -

        Disponibilitat: +

        Disponibilitat: htmleditor) { print_string("htmleditordisabledadmin"); } else if (!$USER->htmleditor) { @@ -11,38 +11,38 @@ print_string("htmleditoravailable"); } ?> -

        +

        -

        L'editor de text enriquit HTML ens proporciona una interfície de processador +

        L'editor de text enriquit HTML ens proporciona una interfície de processador de textos incrustada en una pàgina web per permetre-us editar text d'una - forma intuïtiva, i el resultat és codi HTML normal.

        + forma intuïtiva, i el resultat és codi HTML normal. -

        A més de formatar text aquest editor presenta una sèrie de característiques - extra que podeu trobar útils.

        +

        A més de formatar text aquest editor presenta una sèrie de característiques + extra que podeu trobar útils. -

        Copiar text des d'altres aplicacions

        -
          +

          Copiar text des d'altres aplicacions

          +

            Podeu copiar i enganxar-hi directament text enriquit des d'altres aplicacions Windows, com ara Microsoft Word, i es conservarà el formatatge. Només cal que useu els menús habituals de copiar i enganxar del vostre navegador (o les tecles equivalents control-C i control-V).

            -
          +
        -

        Inserir imatges

        -
          -

          Si teniu imatges publicades en un lloc web i accessibles per mitjà d'un URL les podeu incloure en els vostres textos per mitjà del botó "Insereix imatge".

          -
        +

        Inserir imatges

        +
          +

          Si teniu imatges publicades en un lloc web i accessibles per mitjà d'un URL les podeu incloure en els vostres textos per mitjà del botó "Insereix imatge". +

        -

        Inserir taules

        -
          -

          Podeu formatar els textos amb taules utilitzan el botó "Insereix taules" - de la barra de menús.

          -
        +

        Inserir taules

        +
          +

          Podeu formatar els textos amb taules utilitzan el botó "Insereix taules" + de la barra de menús. +

        -

        Inserir enllaços

        -
          +

          Inserir enllaços

          +

            Per crear un nou enllaç primer cal escriure el text on voleu que hi hagi l'¡enllaç. En acabat seleccioneu-lo i feu clic al botó d'enllaç de la barra de menús. Escriviu l'URL que voleu enllaçar i ja ho teniu.

            -
          +
        -

        Inserir emoticones

        -
          +

          Inserir emoticones

          +

            Per incrustar emoticones en els textos feu clic al botó de l'emoticona de la barra de menús. Un diàleg us permetrà triar les diferents emoticones. També podeu escriure directament el codi corresponent a l'emoticona i després quan es mostri el text es convertirà automàticament en l'emoticona.

             

            @@ -50,52 +50,52 @@ - - - - - - - - - - - - - - - - - -
            - + - + - + - + - + - + - + - + - + - + @@ -104,57 +104,57 @@
            somriure :-)
            rialla :-D
            fer l'ullet ;-)
            indecís :-/
            pensarós V-.
            burleta :-P
            guai B-)
            d'acord ^-)
            ulls oberts 8-)
            sorprès 8-o
            - + - + - + - + - + - + - + - + - + - +
            trist :-(
            tímid 8-.
            avergonyit :-I
            petó :-X
            pallasso :o)
            ull tapat P-|
            enfadat 8-[
            mort xx-P
            somnolent |-.
            dolent }-]
            - + diff --git a/lang/ca/help/scheduler/mods.html b/lang/ca/help/scheduler/mods.html index 1c8ab19e05b..2cb15dec420 100644 --- a/lang/ca/help/scheduler/mods.html +++ b/lang/ca/help/scheduler/mods.html @@ -1 +1,5 @@ -

             Planificador

              Aquest mòdul us ajuda a planificar cites un-a-un amb tots els vostres estudiants. Heu d'especificar les hores en les quals esteu disponible per veure els estudiants i la durada de la cita. Aleshores els estudiants poden reservar una d'aquestes ranures de temps que s'obren. El mòdul també us permet registrar l'assistència dels estudiants.

            \ No newline at end of file +

             Planificador

            +
              +

              Aquest mòdul us ajuda a planificar cites un-a-un amb tots els vostres estudiants. Heu d'especificar les hores en les quals esteu disponible per veure els estudiants i la durada de la cita. Aleshores els estudiants poden reservar una d'aquestes ranures de temps que s'obren. El mòdul també us permet registrar l'assistència dels estudiants. +

              +
            diff --git a/lang/ca/help/scorm/mods.html b/lang/ca/help/scorm/mods.html index 30018cf0f5e..a4f2eea9447 100644 --- a/lang/ca/help/scorm/mods.html +++ b/lang/ca/help/scorm/mods.html @@ -1,4 +1,4 @@ -

             Paquets SCORM

            +

             Paquets SCORM

              Un paquet SCORM és un fardell de material web empaquetat d'una manera que segueix l'estàndard SCORM d'objectes d'aprenentatge.

              Aquests paquets poden incloure pàgines web, gràfics, programes Javascript, presentacions Flash i qualsevol altra cosa que funcioni en un navegador web. El mòdul SCORM permet carregar fàcilment qualsevol paquet SCORM estàndard i convertir-lo en part d'un curs.

              diff --git a/lang/ca/help/summaries.html b/lang/ca/help/summaries.html index 92733fcc384..eedc7845b5e 100755 --- a/lang/ca/help/summaries.html +++ b/lang/ca/help/summaries.html @@ -1 +1,8 @@ -

              Resums del tema/setmana

              La idea d'un resum del tema és un text molt breu per preparar als estudiants per a les activitats d'aquest tema (o setmana).

              El resum hauria de ser molt breu de manera que la pàgina principal del curs no es faci massa llarga.

              Si trobeu que no teniu prou amb una frase o dues, considereu l'alternativa d'afegir un recurs al tema (per exemple: la primera activitat podria ser una pàgina titulada Sobre aquest tema).

              \ No newline at end of file + +

              Resums del tema/setmana

              + +

              La idea d'un resum del tema és un text molt breu per preparar als estudiants per a les activitats d'aquest tema (o setmana).

              + +

              El resum hauria de ser molt breu de manera que la pàgina principal del curs no es faci massa llarga.

              + +

              Si trobeu que no teniu prou amb una frase o dues, considereu l'alternativa d'afegir un recurs al tema (per exemple: la primera activitat podria ser una pàgina titulada Sobre aquest tema).

              diff --git a/lang/ca/help/survey/index.html b/lang/ca/help/survey/index.html index 945472d68cf..8a84f592170 100755 --- a/lang/ca/help/survey/index.html +++ b/lang/ca/help/survey/index.html @@ -1,6 +1,6 @@

              Mòdul d'enquestes

              diff --git a/lang/ca/help/survey/mods.html b/lang/ca/help/survey/mods.html index b426ca28e37..849e652d698 100755 --- a/lang/ca/help/survey/mods.html +++ b/lang/ca/help/survey/mods.html @@ -1,5 +1,5 @@ -

               Enquestes

              -
                +

                 Enquestes

                +

                  El mòdul d'enquestes proporciona un cert nombre d'instruments d'investigació que han demostrat ser útils per estimular i avaluar en entorns virtuals d'aprenentatge. El professor pot usar-los per recollir dades dels estudiants que l'ajudaran a conèixer la seva classe i a reflexionar sobre la seva tasca d'ensenyant.

                  -
                +
              diff --git a/lang/ca/help/surveys.html b/lang/ca/help/surveys.html index 77c478c2d84..933d6227d39 100755 --- a/lang/ca/help/surveys.html +++ b/lang/ca/help/surveys.html @@ -1,184 +1,92 @@ -

              Enquestes disponibles

              - - - -

              Ara per ara Moodle només ofereix determinats tipus d'enquestes. En versions futures podreu crear tipus nous.

              - - - -

              Les enquestes disponibles s'han triat per ser les més particularment utils en l'avaluació d'entorns virtuals d'ensenyament basats en una pedagogia constructivista. Són útils per identificar determinades tendències que poden donar-se entre els estudiants (Per veure un article sobre el tema amb una anàlisi detallada aneu a http://dougiamas.com/writing/herdsa2002)

              - -
              - -

              COLLES - Constructivist On-Line Learning Environment Survey (Enquesta sobre un entorn virtual d'aprenentatge constructivista)

              - -
                - -

                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:

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                RelevanceHow relevant is on-line learning to students' professional practices? - -
                Reflection Does on-line learning stimulate students' critical reflective thinking? - -
                Interactivity To what extent do students engage on-line in rich educative dialogue? - -
                Tutor SupportHow well do tutors enable students to participate in on-line learning? - -
                Peer Support Is sensitive and encouraging support provided on-line by fellow students? - -
                Interpretation Do students and tutors make good sense of each other's on-line communications?
                - - - -

                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.

                - - - -

                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.

                - - - -

                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.

                - - - -

                - -(This information has been adapted from the COLLES page. You can find out more about - -COLLES and the authors of it at: - -http://surveylearning.com/colles/)

                - -
              - - - - - -
              - -

              ATTLS - Attitudes to Thinking and Learning Survey (Enquesta sobre les actituds - - de pensament i aprentatge)

              - -
                - - - -

                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.

                - - - -

                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).

                - - - -

                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.

                - - - -

                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.

                - - - -

                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.

                - - - -

                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.

                - - - -

                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.

                - - - - - -
              - +

              Enquestes disponibles

              + +

              Ara per ara Moodle només ofereix determinats tipus d'enquestes. En versions futures podreu crear tipus nous.

              + +

              Les enquestes disponibles s'han triat per ser les més particularment utils en l'avaluació d'entorns virtuals d'ensenyament basats en una pedagogia constructivista. Són útils per identificar determinades tendències que poden donar-se entre els estudiants (Per veure un article sobre el tema amb una anàlisi detallada aneu a http://dougiamas.com/writing/herdsa2002)

              +
              +

              COLLES - Constructivist On-Line Learning Environment Survey (Enquesta sobre un entorn virtual d'aprenentatge constructivista)

              +
                +

                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:

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                RelevanceHow relevant is on-line learning to students' professional practices? +
                Reflection Does on-line learning stimulate students' critical reflective thinking? +
                Interactivity To what extent do students engage on-line in rich educative dialogue? +
                Tutor SupportHow well do tutors enable students to participate in on-line learning? +
                Peer Support Is sensitive and encouraging support provided on-line by fellow students? +
                Interpretation Do students and tutors make good sense of each other's on-line communications?
                + +

                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.

                + +

                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.

                + +

                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.

                + +

                +(This information has been adapted from the COLLES page. You can find out more about +COLLES and the authors of it at: +http://surveylearning.com/colles/)

                +
              + + +
              +

              ATTLS - Attitudes to Thinking and Learning Survey (Enquesta sobre les actituds + de pensament i aprentatge)

              +
                + +

                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. + +

                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). + +

                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. + +

                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. + +

                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.

                + +

                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.

                + +

                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.

                + + +
              diff --git a/lang/ca/help/teachers.html b/lang/ca/help/teachers.html index b0b506becdb..039476f0d04 100755 --- a/lang/ca/help/teachers.html +++ b/lang/ca/help/teachers.html @@ -1 +1,9 @@ -

              Professors

              Aquesta pàgina mostra la llista de persones designades com a "professors" del curs per l'administrador del sistema.

              Podeu utilitzar aquest formulari per assignar a cada persona un "rol" (títol), per exemple "professor", "tutor", "ajudant", etc. Aquests títols apareixen a la llista de cursos del lloc i a la llista de participants del curs. Si deixeu el rol buit s'utilitza el mot per defecte definit a la pàgina de Paràmetres del curs.

              També podeu ordenar la llista (per posar davant el professor principal, per exemple). Només cal que seleccioneu els números de la la columna "Ordre". Després de desar els canvis veureu el nou ordre.

              NOTA: Un cas especial és quan seleccioneu "Oculta". En aquest cas, el nom del professor NO ES MOSTRARA a la llistes de cursos o la llista de participants. Restarà "ocult" per als estudiants (si no és que envia missatges als fòrums, etc.).

              \ No newline at end of file +

              Professors

              + +

              Aquesta pàgina mostra la llista de persones designades com a "professors" del curs per l'administrador del sistema. + +

              Podeu utilitzar aquest formulari per assignar a cada persona un "rol" (títol), per exemple "professor", "tutor", "ajudant", etc. Aquests títols apareixen a la llista de cursos del lloc i a la llista de participants del curs. Si deixeu el rol buit s'utilitza el mot per defecte definit a la pàgina de Paràmetres del curs. + +

              També podeu ordenar la llista (per posar davant el professor principal, per exemple). Només cal que seleccioneu els números de la la columna "Ordre". Després de desar els canvis veureu el nou ordre. + +

              NOTA: Un cas especial és quan seleccioneu "Oculta". En aquest cas, el nom del professor NO ES MOSTRARA a la llistes de cursos o la llista de participants. Restarà "ocult" per als estudiants (si no és que envia missatges als fòrums, etc.). diff --git a/lang/ca/help/text.html b/lang/ca/help/text.html index e594fd206c7..7db54609824 100755 --- a/lang/ca/help/text.html +++ b/lang/ca/help/text.html @@ -1,348 +1,174 @@ -

              Ajuda per a escriure de text

              - - - -Escriure text en Moodle és tan senzill com això, però també teniu algunes possibilitats addicionals com ara incloure emoticones, adreces URL i algunes etiquetes HTML. - - - -

              Emoticones

              - -
                - -

                Per incrustar aquestes petites icones al text només cal que teclegeu el codi associat. Els codis mateixos són com dibuixets si els mireu tombant el cap a l'esquerra.

                - - - - - - - -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                somriure:-)
                rialla:-D
                fer l'ullet;-)
                indecís:-/
                pensarósV-.
                burleta:-P
                guaiB-)
                d'acord^-)
                ulls oberts8-)
                sorprès8-o
                - -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                trist:-(
                tímid8-.
                avergonyit:-I
                petó:-X
                pallasso:o)
                ull tapatP-|
                enfadat8-[
                mortxx-P
                somnolent|-.
                dolent}-]
                - -
                - -
              - - - -

              Enllaços

              - -
                - -

                Qualsevol text que comenci per www. o per http:// es convertirà automàticament en un enllaç on poder fer clic. - -

                Per exemple: www.google.com o http://moodle.org - -

              - - - -

              Etiquetes HTML

              - -
                - -

                Podeu utilitzar un joc reduït d'etiquetes HTML per donar èmfasi als textos: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                Etiqueta HTML - - Produeix - -
                <b> text en negreta</b> - - text en negreta - -
                <i> text en cursiva</i> - - text en cursiva - -
                <u> text subratllat</u> - - text subratllat - -
                <font size="1"> text petit</font> - - text petit - -
                <font size="4"> text gran</font> - - text gran - -
                <font color="green"> exemple en verd</font> - - exemple en verd - -
                <ul><li>un<li>dos</ul> - - - -
                  - -
                • un - -
                • dos - -
                - -
                <hr> - - - -
                - -
                - -

              - - - - - +

              Ajuda per a escriure de text

              + +Escriure text en Moodle és tan senzill com això, però també teniu algunes possibilitats addicionals com ara incloure emoticones, adreces URL i algunes etiquetes HTML. + +

              Emoticones

              +
                +

                Per incrustar aquestes petites icones al text només cal que teclegeu el codi associat. Els codis mateixos són com dibuixets si els mireu tombant el cap a l'esquerra.

                + + + +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                somriure:-)
                rialla:-D
                fer l'ullet;-)
                indecís:-/
                pensarósV-.
                burleta:-P
                guaiB-)
                d'acord^-)
                ulls oberts8-)
                sorprès8-o
                +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                trist:-(
                tímid8-.
                avergonyit:-I
                petó:-X
                pallasso:o)
                ull tapatP-|
                enfadat8-[
                mortxx-P
                somnolent|-.
                dolent}-]
                +
                +
              + +

              Enllaços

              +
                +

                Qualsevol text que comenci per www. o per http:// es convertirà automàticament en un enllaç on poder fer clic. +

                Per exemple: www.google.com o http://moodle.org +

              + +

              Etiquetes HTML

              +
                +

                Podeu utilitzar un joc reduït d'etiquetes HTML per donar èmfasi als textos: + + + + + + + + + + + + + + + + + + + +
                Etiqueta HTML + Produeix +
                <B> text en negreta</B> + text en negreta +
                <I> text en cursiva</I> + text en cursiva +
                <U> text subratllat</U> + text subratllat +
                <FONT SIZE=1> text petit</FONT> + text petit +
                <FONT SIZE=4> text gran</FONT> + text gran +
                <FONT COLOR=green> exemple en verd</FONT> + exemple en verd +
                <UL><LI>un<LI>dos</UL> + +
                  +
                • un +
                • dos +
                +
                <HR> + +
                +
                +

              + + diff --git a/lang/ca/help/textformat.html b/lang/ca/help/textformat.html index 9c30de703e3..951c28f1363 100755 --- a/lang/ca/help/textformat.html +++ b/lang/ca/help/textformat.html @@ -1,114 +1,58 @@ -

              Formatar text

              - - - -

              Quan escriviu en Moodle podeu triar diferents formats per processar el text segons els vostres coneixements tècnics i el tipus de navegador que utilitzeu. -

              - - -

              Normalment si deixeu aquest paràmetre en el valor per defecte les coses funcionaran tal com espereu.. - - - -

              1. Autoformat Moodle

              - - - -
                - -

                Aquest format és millor quan utilitzeu formularis web normals per escriure (en lloc de l'editor de text enriquit HTML). Només cal que escriviu normalment com si estiguéssiu enviant un correu.

                - -

                Quan deseu el text Moodle farà unes quantes coses per formatar-lo automàticament.

                - -

                Per exemple, els URL com ara http://www.google.com - - o http://moodle.org es convertiran en enllaços.

                - -

                Els salts de línia es mantindran i les línies en blanc serviran per començar un nou paràgraf.

                - -

                Les emoticones com ara :-) es convertiran automàticament en els seus - - equivalents gràfics.

                - - Fins i tot podeu introduir codi HTML, si voleu, i es mantindrà. -

                -

                  -

                -

                Més informació sobre l'autoformatatge de Moodle

                - -
              - - - - - -

              2. Format HTML

              - - - -
                - -

                Aquest format pressuposa que el text és pur HTML. Si esteu utilitzant l'editor d'HTML per editar el text aquest és el format per defecte; tots els comandaments de la barra d'eines produeixen codi HTML per vós.

                - - - -

                Encara que no utilitzeu l'editor de text enriquit HTML podeu usar codi HTML - - al text i es mostrarà exactament com voleu.

                - - - -

                A diferència de l'Autoformat Moodle aquí no hi ha formatatge automàtic.

                - -

                - - - - Més informació sobre HTML en Moodle

                - -

                - - - Més informació sobre l'editor de text enriquit HTML

                - - - -
              - - - - - -

              3. Text

              - - - -
                - -

                Aquest format és útil quan necessiteu incloure gran quantitat de codi o d'HTML que voleu que es mostri exactament tal com l'heu escrit. - -

                S'hi tradueixen les emoticones i els salts de línia, però a banda d'això no es toca res.

                - -
              - - - - - -

              4. Format de text Wiki

              - -
                - -

                Aquest format utilitza una forma especial d'escriure text coneguda com format Wiki

                - -

                Aquest format permet escriure text de manera que segueix sent bastant llegible, però que també pot transformar-se automàticament en text HTML amb encapçalaments, llistes i altres formatatges complexos.

                - -

                - - - Més informació sobre el format Wiki

                - -
              - - - +

              Formatar text

              + +

              Quan escriviu en Moodle podeu triar diferents formats per processar el text segons els vostres coneixements tècnics i el tipus de navegador que utilitzeu. + +

              Normalment si deixeu aquest paràmetre en el valor per defecte les coses funcionaran tal com espereu.. + +

              1. Autoformat Moodle

              + +
                +

                Aquest format és millor quan utilitzeu formularis web normals per escriure (en lloc de l'editor de text enriquit HTML). Només cal que escriviu normalment com si estiguéssiu enviant un correu.

                +

                Quan deseu el text Moodle farà unes quantes coses per formatar-lo automàticament.

                +

                Per exemple, els URL com ara http://www.google.com + o http://moodle.org es convertiran en enllaços.

                +

                Els salts de línia es mantindran i les línies en blanc serviran per començar un nou paràgraf.

                +

                Les emoticones com ara :-) es convertiran automàticament en els seus + equivalents gràfics.

                + Fins i tot podeu introduir codi HTML, si voleu, i es mantindrà. +

                  +

                Més informació sobre l'autoformatatge de Moodle

                +
              + + +

              2. Format HTML

              + +
                +

                Aquest format pressuposa que el text és pur HTML. Si esteu utilitzant l'editor d'HTML per editar el text aquest és el format per defecte; tots els comandaments de la barra d'eines produeixen codi HTML per vós.

                + +

                Encara que no utilitzeu l'editor de text enriquit HTML podeu usar codi HTML + al text i es mostrarà exactament com voleu.

                + +

                A diferència de l'Autoformat Moodle aquí no hi ha formatatge automàtic.

                +

                + + Més informació sobre HTML en Moodle

                +

                + + Més informació sobre l'editor de text enriquit HTML

                + +
              + + +

              3. Text

              + +
                +

                Aquest format és útil quan necessiteu incloure gran quantitat de codi o d'HTML que voleu que es mostri exactament tal com l'heu escrit. +

                S'hi tradueixen les emoticones i els salts de línia, però a banda d'això no es toca res.

                +
              + + +

              4. Format de text Wiki

              +
                +

                Aquest format utilitza una forma especial d'escriure text coneguda com format Wiki

                +

                Aquest format permet escriure text de manera que segueix sent bastant llegible, però que també pot transformar-se automàticament en text HTML amb encapçalaments, llistes i altres formatatges complexos.

                +

                + + Més informació sobre el format Wiki

                +
              + diff --git a/lang/ca/help/uploadusers.html b/lang/ca/help/uploadusers.html index 77334d2f753..590cb8c8a86 100644 --- a/lang/ca/help/uploadusers.html +++ b/lang/ca/help/uploadusers.html @@ -26,7 +26,7 @@

              Heus ací un exemple d'un fitxer d'importació vàlid:

              -

              username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1
              -jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, 3663737, 1, Intro101, Section 1
              +

              username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1
              +jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, 3663737, 1, Intro101, Section 1
              reznort, somesecret, Trent, Reznor, reznort@someplace.edu, en_us, 6736733, 0, Advanced202, Section 3

              diff --git a/lang/ca/help/wiki.html b/lang/ca/help/wiki.html index c47258c14a1..0e98eaa25c8 100755 --- a/lang/ca/help/wiki.html +++ b/lang/ca/help/wiki.html @@ -155,10 +155,10 @@ ara) es convertirà en Cerca ara.

              Moltes funcions habitualment utilitzades es converteixen automàticament en els seus equivalents XHTML. Les principals són les següents:

                -
              • Les adreces HTTP es converteixen en enllaços actius.
              • -
              • ..., (C), (R), (TM), 1/4, 1/2, 3/4 es converteixen en els caràcters corresponents.
              • -
              • Dígits x dígits es converteix en el signe de multiplicació correcte.
              • -
              • Una línia que comenci per 4 guions o més es converteix en un filet horitzontal.
              • +
              • Les adreces HTTP es converteixen en enllaços actius. +
              • ..., (C), (R), (TM), 1/4, 1/2, 3/4 es converteixen en els caràcters corresponents. +
              • Dígits x dígits es converteix en el signe de multiplicació correcte. +
              • Una línia que comenci per 4 guions o més es converteix en un filet horitzontal.

              Correcció ortogràfica (experimental)

              diff --git a/lang/ca/help/wiki/checklinks.html b/lang/ca/help/wiki/checklinks.html index 73e76fe1338..7d07b65265b 100644 --- a/lang/ca/help/wiki/checklinks.html +++ b/lang/ca/help/wiki/checklinks.html @@ -1,2 +1,2 @@ -

              Verificar enllaços

              -

              Aquesta eina verifica tots els enllaços http:// i després desa la pàgina amb marques en els enllaços morts de manera que sigui més fàcil editar-los.

              +

              Verificar enllaços

              +

              Aquesta eina verifica tots els enllaços http:// i després desa la pàgina amb marques en els enllaços morts de manera que sigui més fàcil editar-los.

              diff --git a/lang/ca/help/wiki/ewikiacceptbinary.html b/lang/ca/help/wiki/ewikiacceptbinary.html index 4bbbae836fa..b734c77c674 100644 --- a/lang/ca/help/wiki/ewikiacceptbinary.html +++ b/lang/ca/help/wiki/ewikiacceptbinary.html @@ -1,9 +1,9 @@ -

              Permetre fitxers binaris

              +

              Permetre fitxers binaris

              -

              Si permeteu continguts binaris (p. ex. imatges), teniu dues possibilitats:
              -

                -
              1. Podeu penjar les imatges i usar-les dins de les pàgines wiki. Quan editeu una pàgina tindreu un formulari de càrrega d'imatges. Després de penjar una imatge, obtindreu un codi que podreu incrustar a les vostres pàgines entre claudàtors. Per exemple: [internal://foto1.gif].
              2. +

                Si permeteu continguts binaris (p. ex. imatges), teniu dues possibilitats:
                +

                  +
                1. Podeu penjar les imatges i usar-les dins de les pàgines wiki. Quan editeu una pàgina tindreu un formulari de càrrega d'imatges. Després de penjar una imatge, obtindreu un codi que podreu incrustar a les vostres pàgines entre claudàtors. Per exemple: [internal://foto1.gif].
                2. -
                3. Podeu adjuntar fitxers a una pàgina wiki que es visualitzaran per mitjà de l'acció fitxers adjunts. La mida està limitada pels paràmetres de Moodle.
                4. -
                -

                +
              3. Podeu adjuntar fitxers a una pàgina wiki que es visualitzaran per mitjà de l'acció fitxers adjunts. La mida està limitada pels paràmetres de Moodle.
              4. +
              +

              diff --git a/lang/ca/help/wiki/howtowiki.html b/lang/ca/help/wiki/howtowiki.html index 0d557ee6366..261c5055e1f 100644 --- a/lang/ca/help/wiki/howtowiki.html +++ b/lang/ca/help/wiki/howtowiki.html @@ -1,264 +1,132 @@ -

              Ús del Wiki

              - -

              - -El wiki de Moodle està basat en - -l'ErfurtWiki, - -que és una implementació del sistema hipertext - -WikiWikiWeb. Permet una edició i creació col·laborativa senzilla de pàgines web.

              - -

              - -

                - -
              • apreneu a crear pàgines
              • - -
              • feu clic en Edita o seleccioneu "Edita aquest pàgina" en el menú desplegable per modificar el contingut d'una pàgina
              • - -
              • podeu formatar les pàgines amb marques wiki o amb HTML (si el wiki està configurat així)
              • - -
              • cerqueu pàgines o aneu a la llista de novetats
              • - -
              • també hi ha llistes de les pàgines més visitades, les que s'actualitzen més sovint i les que s'han actualitzat més recentment
              • - -
              - -

              - -

              - -Crear pàgines:
              - -Una pàgina es crea donant-li nom dins del text d'una altra pàgina existent. El nom d'una pàgina wiki fa servir l'anomenat CamelCase o si no es posa entre claudàtors [ ].

              - -

              - -Per exemple: - -

                - -
              • PàginaWiki (CamelCase)
              • - -
              • [Pàgina Wiki] (entre claudàtors)
              • - -

              - -

              - -El text que hagi rebut un nom de pàgina wiki portarà un interrogant '?' darrere. Fent clic en l'interrogant '?' entreu en el mode d'edició d'aquesta pàgina. Escriviu el vostre text, el deseu i ja teniu una nova pàgina wiki.

              - -

              Marques wiki:
              - -Totes les pàgines d'un wiki es poden formatar fàcilment utilitzant marques wiki. - -

              - -

              Paràgrafs

              - -
                - -
              • separeu els paràgrafs per mitjà de línies en blanc
              • - -
              • uilitzeu tres signes de percentatge %%% per forçar un salt de línia
              • - -
              • si poseu espais o tabuladors al començament d'una línia, el text se sagnarà
              • - -
              - - - -

              !! Encapçalaments

              - - - -
                - -
              • utilitzeu un signe d'admiració ! al començament de la línia per crear un encapçalament de mida petita
              • - - - -
              • !! més gran
              • - -
              • !!! la mida més gran
              • - -
              - - - -

              Estils

              - - - -
                - - - -
              • si voleu emfasitzar el text, poseu-lo entre cometes simples '' (generalment es visualitza en lletra itàlica)
              • - -
              • la negreta s'aconsegueix amb dos caràcters de subratllat __ (o amb asteriscos **)
              • - -
              • poseu el text gran entre caràcters ##
              • - -
              • podeu aconseguir text petit usant "µµ"
              • - -
              • una pòlissa tipus màquina d'escriure s'obté posant el text entre dos iguals ==
              • - -
              - - - -

              Llistes

              - - - -
                - -
              • comenceu cada línia amb un asterisc * per crear una llista
              • - -
              • utilitzeu # per a llistes numerades - -
                  - -
                1. podeu crear subllistes
                2. - - - -
                3. els ítems de llistes subsegüents han de començar amb la mateixa combinació d'* i #
                4. - -
                - -
              • - -
              - - - -

              Hiperenllaços

              - - - -
                - - - -
              • escriviu un MotWiki dins del text per crear un nou hiperenllaç
              • - -
              • poseu uns mots [entre claudàtors] per crear un hiperenllaç que no sigui un MotWiki
              • - - - -
              • qualsevol adreça web vàlida (que comenci amb http:/) com ara http://www.google.com/ es convertirà en un enllaç automàticament
              • - -
              • poseu una adreça web o un WikiLink entre claudàtors i assigneu-li un títol entre cometes o amb el caràcter | - -
                  - -
                • [títol | http://www.google.com]
                • - -
                • [MotWiki "títol"] or ["títol" WikiLink]
                • - -
                - -
              • - -
              • si no voleu que un MotWiki o una adreça web http:// (o [quelcom] que vagi entre claudàtors) es converteixi en un enllaç, poseu davant un signe d'admiració o una titlla: - -
                  - -
                • !NoEnllaç, ~NoEnllaç/li> - -
                • ![no enllaç], !http://noenllaç.org/
                • - - - -
                - -
              • - -
              - - - -

              Tables with |

              - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              poseu el text entre caràcters de traç vertical
              per construir una estructura de taula
              els navegadors normalment ignoren les cel·les que falten
              - - - - - -

              - -Si us plau deixeu sempre una línia en blanc abans de la taula i una altra després per separar-la dels paràgrafs adjacents. - -

              - - - -

              Imatges

              - - - -
                - - - -
              • per incloure una imatge dins d'una pàgina, poseu la seva adreça entre claudàtors: [http://www.example.com/pics/image.png]
              • - -
              • alternativament podeu fer servir la funció de càrrega d'imatges
              • - -
              - - - -

              Més informació

              - -El llenguatge de marques del Wiki ofereix més possibilitats. Si us plau consulteu l'Erfurt Wiki Homepage per trobar més informació. - - - -

              - -Camel Case:
              - -El CamelCase (lletres camell) descriu l'aparença dels MotsWiki: mots junts, sense espais, separats per majúscules inicials. La combinació de majúscules i minúscules sembla els geps d'un camell.

              - -

              - -Aquesta manera de posar noms fa que els puristes de l'idioma odien els Wikis, però és molt comú en el món de la informàtica i la usen la majoria dels - -programadors.

              - - - - - +

              Ús del Wiki

              +

              +El wiki de Moodle està basat en +l'ErfurtWiki, +que és una implementació del sistema hipertext +WikiWikiWeb. Permet una edició i creació col·laborativa senzilla de pàgines web.

              +

              +

                +
              • apreneu a crear pàgines
              • +
              • feu clic en o seleccioneu "Edita aquest pàgina" en el menú desplegable per modificar el contingut d'una pàgina
              • +
              • podeu formatar les pàgines amb marques wiki o amb HTML (si el wiki està configurat així)
              • +
              • cerqueu pàgines o aneu a la llista de novetats
              • +
              • també hi ha llistes de les pàgines més visitades, les que s'actualitzen més sovint i les que s'han actualitzat més recentment
              • +
              +

              +

              +Crear pàgines:
              +Una pàgina es crea donant-li nom dins del text d'una altra pàgina existent. El nom d'una pàgina wiki fa servir l'anomenat CamelCase o si no es posa entre claudàtors [ ].

              +

              +Per exemple: +

                +
              • PàginaWiki (CamelCase)
              • +
              • [Pàgina Wiki] (entre claudàtors)
              • +

              +

              +El text que hagi rebut un nom de pàgina wiki portarà un interrogant '?' darrere. Fent clic en l'interrogant '?' entreu en el mode d'edició d'aquesta pàgina. Escriviu el vostre text, el deseu i ja teniu una nova pàgina wiki.

              +

              Marques wiki:
              +Totes les pàgines d'un wiki es poden formatar fàcilment utilitzant marques wiki. +

              +

              Paràgrafs

              +
                +
              • separeu els paràgrafs per mitjà de línies en blanc
              • +
              • uilitzeu tres signes de percentatge %%% per forçar un salt de línia
              • +
              • si poseu espais o tabuladors al començament d'una línia, el text se sagnarà
              • +
              + +

              !! Encapçalaments

              + +
                +
              • utilitzeu un signe d'admiració ! al començament de la línia per crear un encapçalament de mida petita
              • + +
              • !! més gran
              • +
              • !!! la mida més gran
              • +
              + +

              Estils

              + +
                + +
              • si voleu emfasitzar el text, poseu-lo entre cometes simples '' (generalment es visualitza en lletra itàlica)
              • +
              • la negreta s'aconsegueix amb dos caràcters de subratllat __ (o amb asteriscos **)
              • +
              • poseu el text gran entre caràcters ##
              • +
              • podeu aconseguir text petit usant "µµ"
              • +
              • una pòlissa tipus màquina d'escriure s'obté posant el text entre dos iguals ==
              • +
              + +

              Llistes

              + +
                +
              • comenceu cada línia amb un asterisc * per crear una llista
              • +
              • utilitzeu # per a llistes numerades +
                  +
                1. podeu crear subllistes
                2. + +
                3. els ítems de llistes subsegüents han de començar amb la mateixa combinació d'* i #
                4. +
                +
              • +
              + +

              Hiperenllaços

              + +
                + +
              • escriviu un MotWiki dins del text per crear un nou hiperenllaç
              • +
              • poseu uns mots [entre claudàtors] per crear un hiperenllaç que no sigui un MotWiki
              • + +
              • qualsevol adreça web vàlida (que comenci amb http:/) com ara http://www.google.com/ es convertirà en un enllaç automàticament
              • +
              • poseu una adreça web o un WikiLink entre claudàtors i assigneu-li un títol entre cometes o amb el caràcter | +
                  +
                • [títol | http://www.google.com]
                • +
                • [MotWiki "títol"] or ["títol" WikiLink]
                • +
                +
              • +
              • si no voleu que un MotWiki o una adreça web http:// (o [quelcom] que vagi entre claudàtors) es converteixi en un enllaç, poseu davant un signe d'admiració o una titlla: +
                  +
                • !NoEnllaç, ~NoEnllaç/li> +
                • ![no enllaç], !http://noenllaç.org/
                • + +
                +
              • +
              + +

              Tables with |

              + + + + + + + + + + + + + +
              poseu el text entre caràcters de traç vertical
              per construir una estructura de taula
              els navegadors normalment ignoren les cel·les que falten
              + + +

              +Si us plau deixeu sempre una línia en blanc abans de la taula i una altra després per separar-la dels paràgrafs adjacents. +

              + +

              Imatges

              + +
                + +
              • per incloure una imatge dins d'una pàgina, poseu la seva adreça entre claudàtors: [http://www.example.com/pics/image.png]
              • +
              • alternativament podeu fer servir la funció de càrrega d'imatges
              • +
              + +

              Més informació

              +El llenguatge de marques del Wiki ofereix més possibilitats. Si us plau consulteu l'Erfurt Wiki Homepage per trobar més informació. + +

              +Camel Case:
              +El CamelCase (lletres camell) descriu l'aparença dels MotsWiki: mots junts, sense espais, separats per majúscules inicials. La combinació de majúscules i minúscules sembla els geps d'un camell.

              +

              +Aquesta manera de posar noms fa que els puristes de l'idioma odien els Wikis, però és molt comú en el món de la informàtica i la usen la majoria dels +programadors.

              + + diff --git a/lang/ca/help/wiki/htmlmode.html b/lang/ca/help/wiki/htmlmode.html index 5102e0275c0..7c70afb560d 100644 --- a/lang/ca/help/wiki/htmlmode.html +++ b/lang/ca/help/wiki/htmlmode.html @@ -1,6 +1,6 @@ -

              Mode HTML

              +

              Mode HTML

              -

              Teniu dues possibilitats: +

              Teniu dues possibilitats:

              Sense HTML
              Les etiquetes HTML es visualitzen tal qual. Tot el formatatge es fa per mitjà de marques wiki. Els filtres funcionen.
              @@ -10,4 +10,4 @@
              Sense marques wiki, només HTML. Aquesta opció permet l'ús de l'editor HTML.
              -

              +

              diff --git a/lang/ca/help/wiki/initialcontent.html b/lang/ca/help/wiki/initialcontent.html index 7df26e17fae..bc870b9625a 100644 --- a/lang/ca/help/wiki/initialcontent.html +++ b/lang/ca/help/wiki/initialcontent.html @@ -1,5 +1,5 @@ -

              Emplenar el contingut inicial

              +

              Emplenar el contingut inicial

              -

              Aquest és el contingut inicial amb què podeu emplenar el wiki.

              -

              Si voleu posar-hi un contingut inicial, l'heu de crear en format fitxers de text i penjar-lo en un directori de l'àrea de fitxers del curs. Després seleccioneu un dels fitxers com a pàgina inicial. Totes les pàgines d'aquest directori es convertiran en el contingut de cada nova estructura wiki que es creï en aquest wiki i la pàgina seleccionada en serà la pàgina incial. -

              +

              Aquest és el contingut inicial amb què podeu emplenar el wiki.

              +

              Si voleu posar-hi un contingut inicial, l'heu de crear en format fitxers de text i penjar-lo en un directori de l'àrea de fitxers del curs. Després seleccioneu un dels fitxers com a pàgina inicial. Totes les pàgines d'aquest directori es convertiran en el contingut de cada nova estructura wiki que es creï en aquest wiki i la pàgina seleccionada en serà la pàgina incial. +

              diff --git a/lang/ca/help/wiki/mods.html b/lang/ca/help/wiki/mods.html index 61a279bf782..aa9391880f4 100644 --- a/lang/ca/help/wiki/mods.html +++ b/lang/ca/help/wiki/mods.html @@ -1,11 +1,11 @@ -

               Wikis

              -
                -

                Un Wiki permet crear documents col·lectivament per mitjà d'un navegador web usant un llenguatge de marques senzill.

                +

                 Wikis

                +
                  +

                  Un Wiki permet crear documents col·lectivament per mitjà d'un navegador web usant un llenguatge de marques senzill.

                  -

                  "Wiki wiki" significa "super ràpid" en l'idioma hawaià. La velocitat de creació i actualització de pàgines és un dels aspectes definitoris de la tecnologia wiki. Generalment les modificacions s'accepten sense revisió prèvia i molts wikis estan oberts al públic en general o almenys a totes les persones que tenen accés al servidor.

                  +

                  "Wiki wiki" significa "super ràpid" en l'idioma hawaià. La velocitat de creació i actualització de pàgines és un dels aspectes definitoris de la tecnologia wiki. Generalment les modificacions s'accepten sense revisió prèvia i molts wikis estan oberts al públic en general o almenys a totes les persones que tenen accés al servidor.

                  -

                  El mòdul Wiki de Moodle capacita els participants per treballar plegats en pàgines web, afegir-hi contingut, ampliar-lo i modificar-lo. Les versions anteriors no se suprimeixen mai i es poden restaurar.

                  +

                  El mòdul Wiki de Moodle capacita els participants per treballar plegats en pàgines web, afegir-hi contingut, ampliar-lo i modificar-lo. Les versions anteriors no se suprimeixen mai i es poden restaurar.

                  -

                  Aquest mòdul està basat en l'Erfurt Wiki.

                  -
                +

                Aquest mòdul està basat en l'Erfurt Wiki.

                +
              diff --git a/lang/ca/help/wiki/removepages.html b/lang/ca/help/wiki/removepages.html index 6d01d503bb2..7cd0d7da03f 100644 --- a/lang/ca/help/wiki/removepages.html +++ b/lang/ca/help/wiki/removepages.html @@ -1,3 +1,3 @@ -

              Suprimir pàgines

              -

              Aquesta funció us permet suprimir pàgines wiki. Es fa una verificació ràpida i es mostren les pàgines que donen errors.

              -

              Si us plau pareu compte i penseu-hi dues vegades abans de suprimir una pàgina. Moltes vegades no és necessari.

              +

              Suprimir pàgines

              +

              Aquesta funció us permet suprimir pàgines wiki. Es fa una verificació ràpida i es mostren les pàgines que donen errors.

              +

              Si us plau pareu compte i penseu-hi dues vegades abans de suprimir una pàgina. Moltes vegades no és necessari.

              diff --git a/lang/ca/help/wiki/revertauthorfieldpattern.html b/lang/ca/help/wiki/revertauthorfieldpattern.html index b8427367926..57e859ba7bb 100644 --- a/lang/ca/help/wiki/revertauthorfieldpattern.html +++ b/lang/ca/help/wiki/revertauthorfieldpattern.html @@ -1,4 +1,4 @@ -

              Desfer canvis en massa

              -

              +

              Desfer canvis en massa

              +

              Ha de ser una cadena fixa (no podeu usar * o expressions regulars). És millor que useu l'adreça IP o el nom de l'ordinador atacant. -

              +

              diff --git a/lang/ca/help/wiki/revertpages.html b/lang/ca/help/wiki/revertpages.html index 429b5117c36..a9c5d6668b4 100644 --- a/lang/ca/help/wiki/revertpages.html +++ b/lang/ca/help/wiki/revertpages.html @@ -1,3 +1,3 @@ -

              Desfer canvis

              +

              Desfer canvis

              -

              Si algú fa malbé un munt de pàgines del wiki, potser us interessarà desfer automàticament aquests canvis suprimint totes les versions que porten certa cadena al camp {author} (generalment l'adreça IP o el nom de l'ordinador).

              +

              Si algú fa malbé un munt de pàgines del wiki, potser us interessarà desfer automàticament aquests canvis suprimint totes les versions que porten certa cadena al camp {author} (generalment l'adreça IP o el nom de l'ordinador).

              diff --git a/lang/ca/help/wiki/setpageflags.html b/lang/ca/help/wiki/setpageflags.html index e4978b7f091..13ec28f3115 100644 --- a/lang/ca/help/wiki/setpageflags.html +++ b/lang/ca/help/wiki/setpageflags.html @@ -1,7 +1,7 @@ -

              Definir senyaladors de pàgina

              -

              Cada pàgina wiki té assignats uns senyaladors que permeten modificar el seu tipus o el seu comportament.

              +

              Definir senyaladors de pàgina

              +

              Cada pàgina wiki té assignats uns senyaladors que permeten modificar el seu tipus o el seu comportament.

              -

              Descripció dels senyaladors:

              +

              Descripció dels senyaladors:

              diff --git a/lang/ca/help/wiki/strippages.html b/lang/ca/help/wiki/strippages.html index 07138241212..b003732a8a8 100644 --- a/lang/ca/help/wiki/strippages.html +++ b/lang/ca/help/wiki/strippages.html @@ -1,3 +1,3 @@ -

              Estripar pàgines

              +

              Estripar pàgines

              -

              Aquesta funció purga les versions velles de totes les pàgines emmagatzemades a la base de dades i conserva únicament les més noves.

              +

              Aquesta funció purga les versions velles de totes les pàgines emmagatzemades a la base de dades i conserva únicament les més noves.

              diff --git a/lang/ca/help/wiki/wikilinkoptions.html b/lang/ca/help/wiki/wikilinkoptions.html index b6d57e7740d..e7829203488 100644 --- a/lang/ca/help/wiki/wikilinkoptions.html +++ b/lang/ca/help/wiki/wikilinkoptions.html @@ -1,6 +1,6 @@ -

              Opcions d'enllaços automàtics al Wiki

              +

              Opcions d'enllaços automàtics al Wiki

              -

              En certes situacions, potser no voldreu que es creïn enllaços automàtics basats en el CamelCase. Si és així, activeu aquest quadre per deshabilitar els enllaços CamelCase.

              +

              En certes situacions, potser no voldreu que es creïn enllaços automàtics basats en el CamelCase. Si és així, activeu aquest quadre per deshabilitar els enllaços CamelCase.

              -NOTA El CamelCase és una característica wiki estàndard i per tant deshabilitar-lo pot fer que un wiki importat no funcioni correctament. Utilitzeu aquesta opció només si n'esteu absolutament segur.

              +NOTA El CamelCase és una característica wiki estàndard i per tant deshabilitar-lo pot fer que un wiki importat no funcioni correctament. Utilitzeu aquesta opció només si n'esteu absolutament segur.

              diff --git a/lang/ca/help/wiki/wikiname.html b/lang/ca/help/wiki/wikiname.html index 0d7e95dae64..4acaa68e57e 100644 --- a/lang/ca/help/wiki/wikiname.html +++ b/lang/ca/help/wiki/wikiname.html @@ -1,7 +1,7 @@ -

              Nom de pàgina inicial del wiki

              -

              -Si voleu que el nom de pàgina inicial sigui quelcom diferent del nom del wiki, podeu especificar-lo aquí. Aquest nom serà el de la primera pàgina del wiki en cada nova instància d'aquest wiki.

              +

              Nom de pàgina inicial del wiki

              +

              +Si voleu que el nom de pàgina inicial sigui quelcom diferent del nom del wiki, podeu especificar-lo aquí. Aquest nom serà el de la primera pàgina del wiki en cada nova instància d'aquest wiki.

              Si deixeu aquest camp en blanc, el nom de pàgina inicial serà el nom del wiki (si no seleccioneu una pàgina en el camp 'pàgina inicial'). -

              +

              diff --git a/lang/ca/help/wiki/wikitype.html b/lang/ca/help/wiki/wikitype.html index 3d6d75afe8f..4ced986a359 100644 --- a/lang/ca/help/wiki/wikitype.html +++ b/lang/ca/help/wiki/wikitype.html @@ -1,11 +1,11 @@ -

              Permetre els estudiants de col·laborar en el wiki

              -

              -

                +

                Permetre els estudiants de col·laborar en el wiki

                +

                +

                • Un professor sempre pot editar tots els wikis del curs
                • Hi ha tres tipus de wiki: del professor, del curs/grup i d'estudiant
                • L'activitat té els estats de grup de Moodle: "Sense grups" "Grups separats" i "Grups visibles"
                • El mateix contingut inicial s'utilitza en tots els grups
                • -
                +
              Heus aquí una matriu:
              TXTLa pàgina conté text.
              BINLa pàgina conté dades binàries.
              @@ -19,7 +19,7 @@ Heus aquí una matriu: - + @@ -35,5 +35,5 @@ Heus aquí una matriu:
              Professor El professor crea i modifica el wiki. Els estudiants poden llegir els continguts. Hi ha un wiki per a cada grup que només pot modificar el professor. Cada estudiant només veu el wiki del seu grup.Hi ha un wiki per a cada grup que només pot modificar el professor. Els estudiants poden veure tots els wikis i poden passar d'un a un altre per mitjà d'un desplegable que conté tots els grups.i ha un wiki per a cada grup que només pot modificar el professor. Els estudiants poden veure tots els wikis i poden passar d'un a un altre per mitjà d'un desplegable que conté tots els grups.
              Curs/grup
              -

              +

              diff --git a/lang/ca/help/wiki/wikiusage.html b/lang/ca/help/wiki/wikiusage.html index c4e99b980de..89d78986156 100644 --- a/lang/ca/help/wiki/wikiusage.html +++ b/lang/ca/help/wiki/wikiusage.html @@ -1,26 +1,28 @@ -

              Ús del Wiki

              +

              Ús del Wiki

              +
              + El Wiki és una plataforma per a treballar plegats en la construcció de pàgines web. Els principis són simples. -

              +

              • Algú escriu un text i el desa.
              • Més tard, una altra persona llegeix aquest text i pensa que es podrien fer certs canvis i afegir algunes coses. Fa clic al botó "Edita" i modifica la pàgina.
              • -
              • Quan desa la nova versió, aquesta està disponible per a tothom.


              • +
              • Quan desa la nova versió, aquesta està disponible per a tothom.


              Amb un wiki, tambés es pot afegir fàcilment una pàgina nova o un enllaç a pàgines existents. -

              +

              • Un ellaç es crea per mitjà d'un MotWiki. Aix_ és un mot amb almenys dues lletres majúscules. Si ja existia una pàgina amb aquest nom, es crearà un enllaç automàticament. Si no, es visualitza un signe d'interrogació.
              • Fent clic en aquest interrogant es crea una pàgina nova en blanc amb aquest nom que es pot editar.
              -

              +

              -


              -Regles de formatatge del wiki

              +


              +Regles de formatatge del wiki

              @@ -80,7 +82,7 @@ Regles de formatatge del wiki

            • si no voleu que un MotWiki o una adreça web http:// (o [quelcom] que vagi entre claudàtors) es converteixi en un enllaç, poseu davant un signe d'admiració o una titlla:
                -
              • !NoEnllaç, ~NoEnllaç
              • +
              • !NoEnllaç, ~NoEnllaç/li>
              • ![no enllaç], !http://noenllaç.org/
              @@ -88,9 +90,9 @@ Regles de formatatge del wiki

            Taules amb |

            -| poseu el text | entre caràcters | de traç vertical |
            -| per construir | una estructura de taula |
            -| els navegadors normalment | ignoren les cel·les | que falten |
            +| poseu el text | entre caràcters | de traç vertical |
            +| per construir | una estructura de taula |
            +| els navegadors normalment | ignoren les cel·les | que falten |

            diff --git a/lang/ca/help/workshop/addingacomment.html b/lang/ca/help/workshop/addingacomment.html index f716ca3083b..242760d442b 100755 --- a/lang/ca/help/workshop/addingacomment.html +++ b/lang/ca/help/workshop/addingacomment.html @@ -1 +1,17 @@ -

            Afegir un comentari

            Es poden afegir comentaris a una avaluació per tal :

            1. Que l'estudiant que avalua un treball pugui afegir una explicació o clarificació addicionals a una avaluació;
            2. Que l'estudiant el treball del qual és avaluat pugui consultar les anotacions fetes en l'avaluació;
            3. Que el professorat provi de resoldre les dificultats que poden sorgir durant la discussió o l'avaluació;

            L'objectiu dels comentaris és mirar d'assolir el consens en l'avaluació o bé persuadir a l'avaluador de revisar la seva avaluació. Aquesta discussió hauria de ser feta de forma raonada.

            Si el treball és tornat a avaluar, aleshores els comentaris antics es descarten i ja no es mostren més en la nova avaluació.

            \ No newline at end of file + +

            Afegir un comentari

            + +

            Es poden afegir comentaris a una avaluació per tal : +

              +
            1. Que l'estudiant que avalua un treball pugui afegir una explicació + o clarificació addicionals a una avaluació; +
            2. Que l'estudiant el treball del qual és avaluat pugui consultar les + anotacions fetes en l'avaluació; +
            3. Que el professorat provi de resoldre les dificultats que poden sorgir durant + la discussió o l'avaluació; +
            +

            L'objectiu dels comentaris és mirar d'assolir el consens en l'avaluació + o bé persuadir a l'avaluador de revisar la seva avaluació. Aquesta + discussió hauria de ser feta de forma raonada. +

            Si el treball és tornat a avaluar, aleshores els comentaris antics es + descarten i ja no es mostren més en la nova avaluació. diff --git a/lang/ca/help/workshop/agreeassessments.html b/lang/ca/help/workshop/agreeassessments.html index 9a39d829417..f87a49cf151 100755 --- a/lang/ca/help/workshop/agreeassessments.html +++ b/lang/ca/help/workshop/agreeassessments.html @@ -1,63 +1,32 @@ - - -

            Acceptació de les avaluacions

            - - - -

            La tasca d'un taller pot tenir aquestes característiques:

            - -
              - -
            1. En les fases d'enviaments i d'avaluació, quan els estudiants veuen - - les avaluacions fetes pels altres estudiants, no hi ha retroalimentació - - dels que enviaren el treball cap als que fan les valoracions. Hi pot haver - - retroalimentació per part del professorat si aquest decideix posar - - una nota a les avaluacions de l'estudiant, perquè aleshores les notes - - i comentaris del professor es mostren tant a l'estudiant autor del treball - - com a l'estudiant que va fer l'avaluació. Hi haurà, tanmateix, - - només una via de retroalimentació entre estudiants per a cada - - treball.
            2. - -
            3. En les fases d'enviaments i d'avaluació els estudiants veuen les - - avaluacions fetes pels altres estudiants i poden comentar-les. Poden estar - - d'acord o en desacord amb l'avaluació dels companys. Si hi estan d'acord - - aleshores l'avaluació roman tal com estava i serveix pels càlculs - - finals quan es determina la nota que els companys han donat a un determinat - - treball. Però si no estan d'acord amb l'avaluació rebuda, l'estudiant - - que la va fer té una oportunitat per revisar-la. El cicle de revisió - - i desacord pot continuar fins arribar a un consens o a la data límit - - de presentació. Una avaluació que encara estigui discutint-se - - en la data límit no s'utilitza pels càlculs finals. Això - - proporciona dues vies de retroalimentació entre companys en cada treball.
            4. - -
            - -Si s'escull el segon mètode de treball hi ha l'opció d'ocultar les - -notes. És a dir, si s'activa l'opció "amaga les notes" - -només es mostraran els comentaris de les avaluacionsa l'estudiant que va - -fer el treball que s'està avaluant. Les notes només es mostren després - -d'assolir el consens. Observeu que aquesta opció només és - + +

            Acceptació de les avaluacions

            + +

            La tasca d'un taller pot tenir aquestes característiques: +

              +
            1. En les fases d'enviaments i d'avaluació, quan els estudiants veuen + les avaluacions fetes pels altres estudiants, no hi ha retroalimentació + dels que enviaren el treball cap als que fan les valoracions. Hi pot haver + retroalimentació per part del professorat si aquest decideix posar + una nota a les avaluacions de l'estudiant, perquè aleshores les notes + i comentaris del professor es mostren tant a l'estudiant autor del treball + com a l'estudiant que va fer l'avaluació. Hi haurà, tanmateix, + només una via de retroalimentació entre estudiants per a cada + treball. +
            2. En les fases d'enviaments i d'avaluació els estudiants veuen les + avaluacions fetes pels altres estudiants i poden comentar-les. Poden estar + d'acord o en desacord amb l'avaluació dels companys. Si hi estan d'acord + aleshores l'avaluació roman tal com estava i serveix pels càlculs + finals quan es determina la nota que els companys han donat a un determinat + treball. Però si no estan d'acord amb l'avaluació rebuda, l'estudiant + que la va fer té una oportunitat per revisar-la. El cicle de revisió + i desacord pot continuar fins arribar a un consens o a la data límit + de presentació. Una avaluació que encara estigui discutint-se + en la data límit no s'utilitza pels càlculs finals. Això + proporciona dues vies de retroalimentació entre companys en cada treball. +
            +Si s'escull el segon mètode de treball hi ha l'opció d'ocultar les +notes. És a dir, si s'activa l'opció "amaga les notes" +només es mostraran els comentaris de les avaluacionsa l'estudiant que va +fer el treball que s'està avaluant. Les notes només es mostren després +d'assolir el consens. Observeu que aquesta opció només és efectiva quan es necessita el consens en les avaluacions \ No newline at end of file diff --git a/lang/ca/help/workshop/anonymous.html b/lang/ca/help/workshop/anonymous.html index 7af26cb214f..6cf0c31dc0b 100755 --- a/lang/ca/help/workshop/anonymous.html +++ b/lang/ca/help/workshop/anonymous.html @@ -1 +1,11 @@ -

            Notes anònimes

            Una tasca avaluada pels companys pot ser avaluada anònimament. In aquest cas els noms i les fotos dels estudiants que avaluen no es mostren. Només l'arxiu de noms dels enviaments s'usa per identificar els treballs que s'avaluen.

            Quan una tasca avaluada pels companys no s'avalua anònimament els treballs es mostren amb els noms i les fotos dels estudiants que enviaren el treball. Això pot conduir a esbiaxar les notes.

            Observeu que si els estudiants veuen les notes del professor aquestes mai es mostraran anònimament.

            \ No newline at end of file + +

            Notes anònimes

            + +

            Una tasca avaluada pels companys pot ser avaluada anònimament. In aquest + cas els noms i les fotos dels estudiants que avaluen no es mostren. Només + l'arxiu de noms dels enviaments s'usa per identificar els treballs que s'avaluen. +

            Quan una tasca avaluada pels companys no s'avalua anònimament els treballs + es mostren amb els noms i les fotos dels estudiants que enviaren el treball. + Això pot conduir a esbiaxar les notes. +

            Observeu que si els estudiants veuen les notes del professor aquestes mai es + mostraran anònimament. diff --git a/lang/ca/help/workshop/assessmentofexamples.html b/lang/ca/help/workshop/assessmentofexamples.html index 344cda9a970..6115f2d389f 100755 --- a/lang/ca/help/workshop/assessmentofexamples.html +++ b/lang/ca/help/workshop/assessmentofexamples.html @@ -1,7 +1,7 @@ -

            Exemples d'avaluació del professorat

            +

            Exemples d'avaluació del professorat

            -

            Un cop el professorat ha enviat els exemples pot ser útil, des del punt +

            Un cop el professorat ha enviat els exemples pot ser útil, des del punt de vista del propi professor, avaluar els exemples ni que sigui parcialment. Aquestes avaluacions són privades pel professor i NO es mostren als estudiants en cap fase de la feina. Són, tanmateix, útils quan el professor @@ -10,4 +10,4 @@ avaluació al capdamunt de la pàgina i les dels estudiants més avall en la mateixa pàgina. L' avaluació "extra" serveix de punt de referència i recordatori dels temes més sobresortints - de l'exemple.

            + de l'exemple.

            diff --git a/lang/ca/help/workshop/assignmenttype.html b/lang/ca/help/workshop/assignmenttype.html index 441cfa282d1..251bbc8fcdb 100755 --- a/lang/ca/help/workshop/assignmenttype.html +++ b/lang/ca/help/workshop/assignmenttype.html @@ -1 +1,19 @@ -

            Tipus d'avaluació puntuada pels companys

            Una avaluació puntuada pels companys pot ser d'un d'aquests dos tipus:

            1. Només s'entra retroalimentació en els elements d'avaluació i el comentari general. La puntuació dels elements d'avaluació no es veu a les pàgines de notes. Les mateixes avaluacions no tenen una nota de conjunt. Tanmateix, el treball puntuador dels estudiants sí que es mesura, de manera que aquesta mesura i només aquesta contribueix a la nota final que es dona a l'estudiant.
            2. Aquí es demana al professorat i als altres estudiants que donin retroalimentació i notes. Les tasques tenen una nota quantitativa de conjunt i una de qualitativa. La nota final d'un estudiant es calcularà ponderadament a partir de les contribucions de la nota del professor, la mitjana de les notes dels companys i el treball puntuador de l'estudiant.
            \ No newline at end of file + +

            Tipus d'avaluació puntuada pels companys

            + +

            Una avaluació puntuada pels companys pot ser d'un d'aquests dos tipus: +

              +
            1. Només s'entra retroalimentació en els elements d'avaluació + i el comentari general. La puntuació dels elements d'avaluació + no es veu a les pàgines de notes. Les mateixes avaluacions no tenen + una nota de conjunt. Tanmateix, el treball puntuador dels estudiants sí + que es mesura, de manera que aquesta mesura i només aquesta contribueix + a la nota final que es dona a l'estudiant. +
            2. Aquí es demana al professorat i als altres estudiants que donin retroalimentació + i notes. Les tasques tenen una nota quantitativa de conjunt i una de qualitativa. + La nota final d'un estudiant es calcularà ponderadament a partir de + les contribucions de la nota del professor, la mitjana de les notes dels companys + i el treball puntuador de l'estudiant. +
            + +

            diff --git a/lang/ca/help/workshop/breakdownoffinalgrade.html b/lang/ca/help/workshop/breakdownoffinalgrade.html index 61706027d2e..d54403e9590 100755 --- a/lang/ca/help/workshop/breakdownoffinalgrade.html +++ b/lang/ca/help/workshop/breakdownoffinalgrade.html @@ -1 +1,24 @@ -

            Obtenció de la nota final

            La taula d'aquesta pantalla mostra la vostra nota final i com s'ha calculat. La nota final es construeix a partir de 3 possibles components:

            1. La nota del professorat sobre el treball que heu enviat.
            2. La mitjana de les notes dels companys sobre el el treball que heu enviat.
            3. Una nota sobre el vostre treball avaluador a la fase d'avaluació dels companys. Aquest treball es basa en (a) l'esbiaxamanet de les vostres notes, és a dir, si eren massa altes o massa baixes comparades en la mitjana de les notes dels altres companys, (b) el grau de confiança que tenen les vostres notes, és a dir, si coincideixen molt o poc en termes estadístics amb les notes dels altres estudiants i (c) en la qualitat dels vostres comentaris sobre els treballs que heu avaluat. Tot això és puntuat pel professorat. Aquestes tres notes es ponderen en una relació de 1:2:3 respectivament per obtenir la nota final de conjunt. Dit en altres paraules, la puntuació del professorat sobre els comentaris fets té el mateix "pes" que l'esbiaxamanet i el grau de confiança combinats.

            Aquests tres components es poden ponderar com es cregui més convenient de cara a la feina. Els "pesos" es mostren a la taula petita.

            \ No newline at end of file + +

            Obtenció de la nota final

            + +

            La taula d'aquesta pantalla mostra la vostra nota final i com s'ha calculat. + La nota final es construeix a partir de 3 possibles components: +

              +
            1. La nota del professorat sobre el treball que heu enviat. +
            2. La mitjana de les notes dels companys sobre el el treball que heu enviat. +
            3. Una nota sobre el vostre treball avaluador a la fase d'avaluació + dels companys. Aquest treball es basa en (a) l'esbiaxamanet de les vostres + notes, és a dir, si eren massa altes o massa baixes comparades en la + mitjana de les notes dels altres companys, (b) el grau de confiança + que tenen les vostres notes, és a dir, si coincideixen molt o poc en + termes estadístics amb les notes dels altres estudiants i (c) en la + qualitat dels vostres comentaris sobre els treballs que heu avaluat. Tot això + és puntuat pel professorat. Aquestes tres notes es ponderen en una + relació de 1:2:3 respectivament per obtenir la nota final de conjunt. + Dit en altres paraules, la puntuació del professorat sobre els comentaris + fets té el mateix "pes" que l'esbiaxamanet i el grau de confiança + combinats. +
            + +

            Aquests tres components es poden ponderar com es cregui més convenient + de cara a la feina. Els "pesos" es mostren a la taula petita.

            diff --git a/lang/ca/help/workshop/calculatingfinalgrade.html b/lang/ca/help/workshop/calculatingfinalgrade.html index 1c373663520..f54abe21954 100755 --- a/lang/ca/help/workshop/calculatingfinalgrade.html +++ b/lang/ca/help/workshop/calculatingfinalgrade.html @@ -1,112 +1,56 @@ - - -

            El càlcul de la nota final

            - - - -

            La taula d'aquesta pantalla mostra com es calculen les notes finals dels estudiants. - - Les notes finals s'obtenen fent una suma ponderada de fins a cinc components:

            - -
              - -
            1. La nota del professorat sobre el treball enviat. És opcional però - - s'utilitzarà si el professorat avalua el treball dels estudiants. Si - - l'estudiant envia més d'un treball es comptarà la millor nota. - - I "millor" significa el treball amb la més alta combinació - - ponderada de nota del professor i de la nota dels companys.
            2. - -
            3. La mitjana de les notes dels companys del treball enviat. Un altre cop, - - si l'estudiant envia més d'un treball s'usa la "millor" nota. - - La nota dels companys pot incloure ocasionalment la nota del professorat. - - Aquesta nota es podria incloure al càlcul si el nombre de notes de - - companys és molt petit o si es considera que les notes dels companys - - estan esbiaixades (normalment cap a dalt) o mereixen poca confiança. - - Si s'inclou la nota del professorat, aquesta es tracta de la mateixa manera - - que les dels companys a l'hora de fer el càlcul de la mitjana.
            4. - -
            5. L'esbiaxament de l'estudiant al puntuar el treball dels companys. Això - - mesura si les notes de l'estudiant són o massa altes o massa baixes. - - No és una mesura absoluta i es basa en la diferència entre les - - notes de l'estudiant i les mitjanes dels companys per cada enviament que avaluen. - - En general no se li hauria de donar massa "pes" a aquest component.
            6. - -
            7. El grau de confiança al puntuar els treballs dels companys. Això - - mesura si les notes d'un estudiant sobre un treball segueixen la mitjana de - - les notes dels companys . Aquesta mesura descompta L'esbiaixament de l'estudiant - - i fa la mitjana de les diferències absolutes entre les seves notes - - i les notes mitjanes dels companys. En teoria, si un estudiant puntua alt - - els treballs bons i puntua baix els no tan bons el seu grau de confiança - - és alt. Si se sospita que els estudiants en general són avaluadors - - pobres aleshores es poden incloure les notes del professorat en la mitjana - - de notes dels companys, cosa que que donarà més sentit al grau - - de confiança.
            8. - -
            9. La nota mitjana donada pel professorat a les avaluacions de l'estudiant. - - Això inclou tant les avaluacions preliminars fetes per l'estudiant - - en els treballs d'exemple com qualsevol nota que posa el professorat a les - - avaluacions fetes durant la fase d'avaluació de la tasca per part dels - - companys.. En general aquest component és, probablement, més - - important que l'esbiaixament i el rau de confiança de manera que, si - - és possible, se li ha de donar un "pes" més gran.
            10. - -
            - - - -

            Aquests cinc components es poden ponderar com es cregui més convenient - - per a la tasca encomanada. Per exemple, se li pot donar un pes més gran - - a la nota del professorat si es considera que la nota dels companys és - - només una petita part del total de l'avaluació. Alternativament, - - si el professorat només puntua una petita part dels enviaments es poden - - ignorar aquestes notes donant-les un pes de zero. Si la tasca deixa que siguin - - els estudiants qui posin notes i proporcionin retroalimentació aleshores - - els dos primers components es poden deixar a zero (o baixos) i qui determinarà - - les notes finals serà l'habilitat puntuadora dels estudiants.

            - -

            Observeu que aquesta pantalla s'utilitza diverses vegades i les notes finals - - no es mostren als estudiants fins la fase final de l'avaluació. Un cop - - el professorat està satisfet amb les notes finals i llurs ponderacions - - ja les pot fer accessibles als estudiants.

            - + +

            El càlcul de la nota final

            + +

            La taula d'aquesta pantalla mostra com es calculen les notes finals dels estudiants. + Les notes finals s'obtenen fent una suma ponderada de fins a cinc components: +

              +
            1. La nota del professorat sobre el treball enviat. És opcional però + s'utilitzarà si el professorat avalua el treball dels estudiants. Si + l'estudiant envia més d'un treball es comptarà la millor nota. + I "millor" significa el treball amb la més alta combinació + ponderada de nota del professor i de la nota dels companys. +
            2. La mitjana de les notes dels companys del treball enviat. Un altre cop, + si l'estudiant envia més d'un treball s'usa la "millor" nota. + La nota dels companys pot incloure ocasionalment la nota del professorat. + Aquesta nota es podria incloure al càlcul si el nombre de notes de + companys és molt petit o si es considera que les notes dels companys + estan esbiaixades (normalment cap a dalt) o mereixen poca confiança. + Si s'inclou la nota del professorat, aquesta es tracta de la mateixa manera + que les dels companys a l'hora de fer el càlcul de la mitjana. +
            3. L'esbiaxament de l'estudiant al puntuar el treball dels companys. Això + mesura si les notes de l'estudiant són o massa altes o massa baixes. + No és una mesura absoluta i es basa en la diferència entre les + notes de l'estudiant i les mitjanes dels companys per cada enviament que avaluen. + En general no se li hauria de donar massa "pes" a aquest component. +
            4. El grau de confiança al puntuar els treballs dels companys. Això + mesura si les notes d'un estudiant sobre un treball segueixen la mitjana de + les notes dels companys . Aquesta mesura descompta L'esbiaixament de l'estudiant + i fa la mitjana de les diferències absolutes entre les seves notes + i les notes mitjanes dels companys. En teoria, si un estudiant puntua alt + els treballs bons i puntua baix els no tan bons el seu grau de confiança + és alt. Si se sospita que els estudiants en general són avaluadors + pobres aleshores es poden incloure les notes del professorat en la mitjana + de notes dels companys, cosa que que donarà més sentit al grau + de confiança. +
            5. La nota mitjana donada pel professorat a les avaluacions de l'estudiant. + Això inclou tant les avaluacions preliminars fetes per l'estudiant + en els treballs d'exemple com qualsevol nota que posa el professorat a les + avaluacions fetes durant la fase d'avaluació de la tasca per part dels + companys.. En general aquest component és, probablement, més + important que l'esbiaixament i el rau de confiança de manera que, si + és possible, se li ha de donar un "pes" més gran. +
            + +

            Aquests cinc components es poden ponderar com es cregui més convenient + per a la tasca encomanada. Per exemple, se li pot donar un pes més gran + a la nota del professorat si es considera que la nota dels companys és + només una petita part del total de l'avaluació. Alternativament, + si el professorat només puntua una petita part dels enviaments es poden + ignorar aquestes notes donant-les un pes de zero. Si la tasca deixa que siguin + els estudiants qui posin notes i proporcionin retroalimentació aleshores + els dos primers components es poden deixar a zero (o baixos) i qui determinarà + les notes finals serà l'habilitat puntuadora dels estudiants. +

            Observeu que aquesta pantalla s'utilitza diverses vegades i les notes finals + no es mostren als estudiants fins la fase final de l'avaluació. Un cop + el professorat està satisfet amb les notes finals i llurs ponderacions + ja les pot fer accessibles als estudiants. diff --git a/lang/ca/help/workshop/editingacomment.html b/lang/ca/help/workshop/editingacomment.html index 4173e50d932..343ad416d05 100755 --- a/lang/ca/help/workshop/editingacomment.html +++ b/lang/ca/help/workshop/editingacomment.html @@ -1 +1,7 @@ -

            Editar un comentari

            Com en d'altres ítems hi ha un curt període de temps en què es pot esmenar el text dels comentaris. Fins que no ha passat aquest temps no es mostrarà el comentari a la tasca.

            \ No newline at end of file + +

            Editar un comentari

            + +

            Com en d'altres ítems hi ha un curt període de temps en què + es pot esmenar el text dels comentaris. Fins que no ha passat aquest temps no + es mostrarà el comentari a la tasca.

            +

             

            diff --git a/lang/ca/help/workshop/elements.html b/lang/ca/help/workshop/elements.html index 4fa932f3e4f..2f939f6ad82 100755 --- a/lang/ca/help/workshop/elements.html +++ b/lang/ca/help/workshop/elements.html @@ -1,124 +1,62 @@ - - -

            Elements d'avaluació

            - - - -

            Per facilitar la puntuació una Tasca de taller ha de tenir un nombre - - raonable d'elements d'avaluació. Cada element hauria de cobrir - - una aspecte particular de la tasca. Típicament una tasca tindrà - - entre 5 i 15 elements per comentar i puntuar; depenent el nombre real de la - - mida i la complexitat de la tasca. S'accepta una tasca en grup de només - - un element i té una estratègia avaluadora similar a les Tasques - - de Moodle.

            - -

            El tipus d'elements depenen de l'estratègia puntuadora de la tasca.

            - -

            No qualificat. Els elements són purament descripcions d'aspectes - - de la tasca. Se li demana a l'avaluador que comenti cadascun d'aquests aspectes. - - De la mateixa manera que a totes les altres estratègies puntuadores aquí - - també hi ha una àrea per a comentaris generals.

            - -

            Acumulatiu. Els elements tenen aquestes tres característiques:

            - -
              - -
            1. La DESCRIPCIÖ de l'element d'avaluació. Aquí s'hauria - - d'aclarir quin aspecte de la tasca és el que s'avalua. Si l'avaluació - - és qualitativa val la pena donar detalls del que es considera Excel·lent, - - Correcte i Pobre.
            2. - -
            3. L'ESCALA de l'element d'avaluació. Hi ha un nombre d'escales predefinit - - que van des de les senzilles escales de Sí/No fins a escales percentuals - - passant per escales multipunts. Cada element té la seva pròpia - - escala que cal escollir per encaixar amb la quantitat possible de variacions - - d'aquest element. Observeu que l'escala NO determina la importància - - de l'element quan es calcula la nota global; per exemple: una escala de dos - - punts té la mateixa "influència" que una altra de - - 100 punts si els elements respectius tenen el mateix "pes"
            4. - -
            5. El PES de l'element d'avaluació. Per defecte els elements tenen la - - mateixa importància quan es calcula la nota global de la tasca. Però - - es pot canviar si es dóna als elements més importants un pes - - més gran que 1, i als menys importants un pes per sota d'1. Canviar - - els pesos NO afecta a la nota màxima perquè aquest valor es - - fixa a través del paràmetre Nota màxima de l'avaluació - - dels companys. Els pesos poden ser valors negatius tot i que aquest aspecte - - és experimental encara.
            6. - -
            - -

            Marge d'error. Els elements d'avaluació descriuran certs aspectes - - que han de ser presents en la tasca. L'avaluació es fa per la presència - - o absència d'aquests aspectes. El professorat ha de establir clarament - - quina nota posar quan tots els aspectes estan presents, quan un és absent, - - quan en manquen dos, etc. Si alguns aspectes són més importants - - que altres se'ls pot donar un pes més gran que 1. Aspectes menors poden - - tenir un pes inferior a 1. El compte global d'errors és la suma dels - - aspectes que manques. L'avaluador sempre pot fer un petit ajustament a aquestes - - notes suggerides.

            - -

            Criteris. Els elements donaran un conjunt de valors de "nivell" - - que s'utilitzaran per a puntuar la tasca. Els valors poden ser acumulatius o - - no. L'avaluador haurà de decidir quin valor correspon millor a cada treball. - - El professorat també ha de relacionar cada valor del criteri amb una - - nota suggerida que hauria de ser ordenada. L'avaluador sempre pot fer un petit - - ajustament a aquestes notes suggerides.

            - -

            Rúbrica. Similar a l'anterior però amb més d'un - - criteri. El nombre de criteris es determina als paràmetres de la tasca. - - En cada criteri hi poden haver fins a cinc valors de "nivell". En - - una tasca determinada el nombre de nivells pot variar d'un criteri a un altre. - - Quan es determina un criteri un valor de nivell en blanc assenyala el final - - dels valors de nivell. Així algun criteri pot tenir dos nivells, un altre - - tres o un màxim de cinc. El criteri es pot ponderar. Els nivell es puntuen - - 0, 1, 2, fins a 4. La nota de l'avaluació és una suma ponderada - - d'aquestes puntuacions.

            - + +

            Elements d'avaluació

            + +

            Per facilitar la puntuació una Tasca de taller ha de tenir un nombre + raonable d'elements d'avaluació. Cada element hauria de cobrir + una aspecte particular de la tasca. Típicament una tasca tindrà + entre 5 i 15 elements per comentar i puntuar; depenent el nombre real de la + mida i la complexitat de la tasca. S'accepta una tasca en grup de només + un element i té una estratègia avaluadora similar a les Tasques + de Moodle. +

            El tipus d'elements depenen de l'estratègia puntuadora de la tasca. +

            No qualificat. Els elements són purament descripcions d'aspectes + de la tasca. Se li demana a l'avaluador que comenti cadascun d'aquests aspectes. + De la mateixa manera que a totes les altres estratègies puntuadores aquí + també hi ha una àrea per a comentaris generals. +

            Acumulatiu. Els elements tenen aquestes tres característiques: +

              +
            1. La DESCRIPCIÖ de l'element d'avaluació. Aquí s'hauria + d'aclarir quin aspecte de la tasca és el que s'avalua. Si l'avaluació + és qualitativa val la pena donar detalls del que es considera Excel·lent, + Correcte i Pobre. +
            2. L'ESCALA de l'element d'avaluació. Hi ha un nombre d'escales predefinit + que van des de les senzilles escales de Sí/No fins a escales percentuals + passant per escales multipunts. Cada element té la seva pròpia + escala que cal escollir per encaixar amb la quantitat possible de variacions + d'aquest element. Observeu que l'escala NO determina la importància + de l'element quan es calcula la nota global; per exemple: una escala de dos + punts té la mateixa "influència" que una altra de + 100 punts si els elements respectius tenen el mateix "pes" +
            3. El PES de l'element d'avaluació. Per defecte els elements tenen la + mateixa importància quan es calcula la nota global de la tasca. Però + es pot canviar si es dóna als elements més importants un pes + més gran que 1, i als menys importants un pes per sota d'1. Canviar + els pesos NO afecta a la nota màxima perquè aquest valor es + fixa a través del paràmetre Nota màxima de l'avaluació + dels companys. Els pesos poden ser valors negatius tot i que aquest aspecte + és experimental encara. +
            +

            Marge d'error. Els elements d'avaluació descriuran certs aspectes + que han de ser presents en la tasca. L'avaluació es fa per la presència + o absència d'aquests aspectes. El professorat ha de establir clarament + quina nota posar quan tots els aspectes estan presents, quan un és absent, + quan en manquen dos, etc. Si alguns aspectes són més importants + que altres se'ls pot donar un pes més gran que 1. Aspectes menors poden + tenir un pes inferior a 1. El compte global d'errors és la suma dels + aspectes que manques. L'avaluador sempre pot fer un petit ajustament a aquestes + notes suggerides. +

            Criteris. Els elements donaran un conjunt de valors de "nivell" + que s'utilitzaran per a puntuar la tasca. Els valors poden ser acumulatius o + no. L'avaluador haurà de decidir quin valor correspon millor a cada treball. + El professorat també ha de relacionar cada valor del criteri amb una + nota suggerida que hauria de ser ordenada. L'avaluador sempre pot fer un petit + ajustament a aquestes notes suggerides.

            +

            Rúbrica. Similar a l'anterior però amb més d'un + criteri. El nombre de criteris es determina als paràmetres de la tasca. + En cada criteri hi poden haver fins a cinc valors de "nivell". En + una tasca determinada el nombre de nivells pot variar d'un criteri a un altre. + Quan es determina un criteri un valor de nivell en blanc assenyala el final + dels valors de nivell. Així algun criteri pot tenir dos nivells, un altre + tres o un màxim de cinc. El criteri es pot ponderar. Els nivell es puntuen + 0, 1, 2, fins a 4. La nota de l'avaluació és una suma ponderada + d'aquestes puntuacions.

            diff --git a/lang/ca/help/workshop/finalgrades.html b/lang/ca/help/workshop/finalgrades.html index 7515bc08903..d3dd8e17e02 100755 --- a/lang/ca/help/workshop/finalgrades.html +++ b/lang/ca/help/workshop/finalgrades.html @@ -1 +1,22 @@ -

            Notes finals

            La taula d'aquesta pantalla mostra les notes finals i llur obtenció tal i com les veuen els estudiants. Si manquen valors en aquesta taula és possible tornar enrera i afegir-los. De fet hi ha dos ajustaments que es poden fer a les notes finals:

            1. Si cal afegir una nota de professor aleshores el treball es pot puntuar tot anant a la pantalla de Gestió de tasques del professorat i clicant a l'enllaç "Enviaments de l'estudiant per avaluar". Es pot valorar qualsevol altra enviament pendent. Un cop s'ha fet es torna la tasca a la fase 3 i es recalculen les notes finals. De forma semblant qualsevol avaluació que no hagi estat puntuada es pot valorar des de la pantalla de Gestió
            2. Si es desitja utilitzar un esquema ponderador diferent cal tornar a la Fase 3 i clicar l'enllaç "Calcula les notes finals" i entrar els nous pesos. Un cop les notes han estat recalculades la tasca passa a la Fase 4 per donar a conèixer les noves notes
            \ No newline at end of file + +

            Notes finals

            + +

            La taula d'aquesta pantalla mostra les notes finals i llur obtenció + tal i com les veuen els estudiants. Si manquen valors en aquesta taula és + possible tornar enrera i afegir-los. De fet hi ha dos ajustaments que es poden + fer a les notes finals: +

              +
            1. Si cal afegir una nota de professor aleshores el treball es pot puntuar + tot anant a la pantalla de Gestió de tasques del professorat i clicant + a l'enllaç "Enviaments de l'estudiant per avaluar". Es pot + valorar qualsevol altra enviament pendent. Un cop s'ha fet es torna la tasca + a la fase 3 i es recalculen les notes finals. De forma semblant qualsevol + avaluació que no hagi estat puntuada es pot valorar des de la pantalla + de Gestió +
            2. Si es desitja utilitzar un esquema ponderador diferent cal tornar a la Fase + 3 i clicar l'enllaç "Calcula les notes finals" i entrar els + nous pesos. Un cop les notes han estat recalculades la tasca passa a la Fase + 4 per donar a conèixer les noves notes +
            + +

            diff --git a/lang/ca/help/workshop/graded.html b/lang/ca/help/workshop/graded.html index 4c268a44893..bfd56032eef 100755 --- a/lang/ca/help/workshop/graded.html +++ b/lang/ca/help/workshop/graded.html @@ -1 +1,14 @@ -

            Tasca puntuada pels companys

            Aquí es mostren les notes i els comentaris fets per cada treball enviat. Si es desitja es pot contestar a les avaluacions i triar de no acceptar-les (en aquesta fase). Si us trobeu en aquest cas aleshores escriviu la vostra rèplica al quadre del capdavall de la pàgina explicant les raons per les que no esteu d'acord amb l'avaluació. En acabat cliqueu el botó del peu de la pàgina i escolliu NO quan s'us demani si esteu d'acord amb aquesta avaluació.

            Però si esteu d'acord amb l'avaluació només cal que cliqueu el botó del peu de la pàgina i trieu SÍ quan s'us demani si esteu d'acord amb l'avaluació.

            \ No newline at end of file + +

            Tasca puntuada pels companys

            + +

              +

            Aquí es mostren les notes i els comentaris fets per cada treball enviat. + Si es desitja es pot contestar a les avaluacions i triar de no acceptar-les + (en aquesta fase). Si us trobeu en aquest cas aleshores escriviu la vostra rèplica + al quadre del capdavall de la pàgina explicant les raons per les que + no esteu d'acord amb l'avaluació. En acabat cliqueu el botó del + peu de la pàgina i escolliu NO quan s'us demani si esteu d'acord amb + aquesta avaluació. +

            Però si esteu d'acord amb l'avaluació només cal que cliqueu + el botó del peu de la pàgina i trieu SÍ quan s'us demani + si esteu d'acord amb l'avaluació. diff --git a/lang/ca/help/workshop/grading.html b/lang/ca/help/workshop/grading.html index 0bb5f691e71..fda1da043ef 100755 --- a/lang/ca/help/workshop/grading.html +++ b/lang/ca/help/workshop/grading.html @@ -1 +1,31 @@ -

            Puntuació de les feines dels companys

            Per tal de facilitar el fet de puntuar les feines dels companys s'ha dividit l'avaluació en un determinat nombre d'elements d'avaluació. Cada element cobreix un aspecte particular de la feina i depenent del tipus d'avaluació, per a cada element haureu de:

            1. Entrar una nota tot fent clic al botó adient o bé seleccionant el número que desitgeu del menús desplegable.
            2. Escriure una explicació al quadre Retroalimentació del perquè heu posat aquesta puntuació. Si penseu que la raó és obvia deixeu el quadre en blanc. Observeu, tanmateix, que el professorat pot veure la vostra avaluació i us pot demanar una puntuació si no hi veu cap explicació.

            En alguns tipus d'avaluació. s'us demanarà si diferents items són presents o absents, en d'altres s'us demanarà d'escollir quines afirmacions encaixen millor amb el treball que s'avalua. En aquests casos podreu ajustar la nota de l'avaluació fins que veieu que s'hi correspongui.

            L'últim quadre del formulari us permet fer un comentari general sobre el treball. Això pot justificar la vostra avaluació. Ha de ser educat i el màxim de constructiu possible. Penseu que la vostra avaluació es mostrarà a l'estudiant que ha fet el treball.

            Teniu un temps limitat, normalment a mitja hora, durant el qual podeu canviar de pensament i alterar les puntuacions o comentaris. Però un cop ha passat aquest temps s'envia una notificació a la persona que havia fet el treball que acabeu d'avaluar. A partir d'ara podreu veure la vostra avaluació, però no podreu canviar-la.

            \ No newline at end of file + +

            Puntuació de les feines dels companys

            + +

            Per tal de facilitar el fet de puntuar les feines dels companys s'ha dividit + l'avaluació en un determinat nombre d'elements d'avaluació. Cada + element cobreix un aspecte particular de la feina i depenent del tipus d'avaluació, + per a cada element haureu de: +

              +
            1. Entrar una nota tot fent clic al botó adient o bé seleccionant + el número que desitgeu del menús desplegable. +
            2. Escriure una explicació al quadre Retroalimentació del perquè + heu posat aquesta puntuació. Si penseu que la raó és + obvia deixeu el quadre en blanc. Observeu, tanmateix, que el professorat pot + veure la vostra avaluació i us pot demanar una puntuació si + no hi veu cap explicació. +
            + +

            En alguns tipus d'avaluació. s'us demanarà si diferents items + són presents o absents, en d'altres s'us demanarà d'escollir quines + afirmacions encaixen millor amb el treball que s'avalua. En aquests casos podreu + ajustar la nota de l'avaluació fins que veieu que s'hi correspongui. +

            L'últim quadre del formulari us permet fer un comentari general sobre + el treball. Això pot justificar la vostra avaluació. Ha de ser + educat i el màxim de constructiu possible. Penseu que la vostra avaluació + es mostrarà a l'estudiant que ha fet el treball. +

            Teniu un temps limitat, normalment a mitja hora, durant el qual podeu canviar + de pensament i alterar les puntuacions o comentaris. Però un cop ha passat + aquest temps s'envia una notificació a la persona que havia fet el treball + que acabeu d'avaluar. A partir d'ara podreu veure la vostra avaluació, + però no podreu canviar-la.

            +

             

            diff --git a/lang/ca/help/workshop/gradingassessments.html b/lang/ca/help/workshop/gradingassessments.html index ef3d77ad6ae..36b97390ce3 100755 --- a/lang/ca/help/workshop/gradingassessments.html +++ b/lang/ca/help/workshop/gradingassessments.html @@ -1,7 +1,7 @@ -

            Puntuar les avaluacions dels estudiants

            +

            Puntuar les avaluacions dels estudiants

            -

            Aquesta pantalla la utilitza el professorat per introduir la nota de l'avaluació +

            Aquesta pantalla la utilitza el professorat per introduir la nota de l'avaluació que ha fet l'estudiant durant les fases d'enviament i avaluació de la tasca. S'utilitza una puntuació relativament senzilla d'un màxim de 20. El professorat pot decidir què s'està avaluant i les puntuacions @@ -10,16 +10,16 @@ facin comentaris crítics, en un nivell intermedi podrien destacar els punts més sobresortints o els menys destacables, i als nivells més baixos els estudiants haurien de dir, simplement, quins errors o inexactituds - detecten.

            -

            Si es desitja es pot mostrar l'avaluació d'exemple del professor per + detecten.

            +

            Si es desitja es pot mostrar l'avaluació d'exemple del professor per tal que els estudiants tinguin un punt de comparació. Els comentaris - del propi professor poden servir com a banc de proves.

            -

            Es pot desar la nota de l'avaluació fent clic en el botó adient + del propi professor poden servir com a banc de proves.

            +

            Es pot desar la nota de l'avaluació fent clic en el botó adient del capdavall de la pàgina. Hi ha la possibilitat de repetir la puntuació durant el temps d'edició. Però un cop ha passat el temps es fa accessible als estudiants els comentaris del professor. La nota de la puntuació, tanmateix, no es revela a l'estudiant fins que no es fan públiques les notes finals. La raó és evitar la confusió entre la nota del treball i la nota per l'AVALUACIÓ d'aquest treball que no és - massa clara entre els estudiants durant les primeres etapes de la tasca.

            + massa clara entre els estudiants durant les primeres etapes de la tasca.

            diff --git a/lang/ca/help/workshop/gradinggrade.html b/lang/ca/help/workshop/gradinggrade.html deleted file mode 100644 index e2ccd2f53d2..00000000000 --- a/lang/ca/help/workshop/gradinggrade.html +++ /dev/null @@ -1,22 +0,0 @@ -

            Qualificació de les avaluacions dels estudiants - -

            És la qualificació màxima que es pot donar a les avaluacions que els estudiants han -fet dels seus propis treballs o dels treballs dels altres estudiants. La nota -d'una avaluació es calcula comparant-la amb la "millor" avaluació dins la -mateixa tramesa. La "millor" avaluació és aquella que ha resultat més propera a -la mitjana de totes les avaluacions (si la del professor té un pes més gran que -les dels estudiants, es fa una mitjana ponderada). Si en una tramesa només hi ha -una avaluació, aquesta avaluació serà considerada com la "millor"; només es -faran distincions entre avaluacions en el cas que hi hagi tres o més.

            - -

            Aquesta puntuació no s'ha de confondre amb la nota màxima que pot tenir el -treball enviat per l'estudiant.

            - -

            La nota final del taller és la suma de la nota que l'estudiant ha obtingut per -les seves avaluacions i la nota que ha obtingut pel treball que ha tramès. Si la -nota màxima per a les avaluacions de l'estudiant és 20 i la nota màxima per al -treball que envia és 80, llavors la nota màxima del taller és 100.

            - -

            El valor de la puntuació màxima de les avaluacions dels estudiants es pot -canviar en qualsevol moment i l'efecte que té el canvi sobre les notes pot ser -visualitzat pels estudiants (i pel professor) de manera immediata.

            diff --git a/lang/ca/help/workshop/gradingstrategy.html b/lang/ca/help/workshop/gradingstrategy.html index 7301813a604..7ba25607d0a 100755 --- a/lang/ca/help/workshop/gradingstrategy.html +++ b/lang/ca/help/workshop/gradingstrategy.html @@ -1,139 +1,72 @@ - - -

            Puntuar l'estratègia

            - - - -

            La tasca d'un Taller és molt flexible en quant al tipus d'esquema de - - puntuació que es pot arribar a utilitzar. Així tenim:

            - -
              - -
            1. Sense puntuar: En aquest tipus de tasca el professorat no s'interessa - - en l'avaluació quantitativa dels estudiants. Els estudiants fan comentaris - - sobre els treballs però no els puntuen. El professorat, tanmateix, - - pot puntuar els comentaris dels estudiants si ho desitja. Aquestes "notes - - de les notes" formen part de la nota final de cada estudiant. Si el professorat - - no puntua les avaluacions dels estudiants aleshores no hi haurà notes - - finals de la tasca.
            2. - -
            3. Puntuació acumulativa: Aquesta és la puntuació - - per defecte. En aquest tipus de tasca la nota de cada avaluació s'obté - - a partir dels "elements d'avaluació". Cada element hauria - - de cobrir un aspecte particular de la tasca. Normalment una tasca tindrà - - entre 5 i 15 elements d'avaluacióper comentar i puntuar, i el nombre - - real dependrà de la mida i la complexitat de la tasca. Es pot fer una - - avaluació pels companys amb només un element i té una - - estratègia avaluadora semblant a la de la Tasca estàndard de - - Moodle. - -

              Els elements tenen aquestes tres característiques:

            4. - -
                - -
              1. La DESCRIPCIÓ de l'element d'avaluació S'hauria d'establir - - molt clarament quins aspectes de la tasca s'han d'avaluar Si l'avaluació - - és qualitativa pot ser molt útil detallar què es - - considera excel·lent, què correcte i què pobre.
              2. - -
              3. L'ESCALA de l'element d'avaluació. Hi ha un cert nombre d'escales - - predefinides que van des del simple Sí/No fins a escales percentuals - - passant per les multipunt.. Cada element té la seva pròpia - - escala que cal triar per tal de cobrir totes les possibles variacions - - de l'element. Observeu que l'escala NO determina la importància - - de l'element quan es calcula la nota global; per exemple: una escala de - - dos punts té la mateixa "influència" que una altra - - de 100 punts si els elements respectius tenen el mateix "pes" - -
                - - El PES de l'element d'avaluació. Per defecte els elements tenen - - la mateixa importància quan es calcula la nota global de la tasca. - - Però es pot canviar si es dóna als elements més importants - - un pes més gran que 1, i als menys importants un pes per sota d'1. - - Canviar els pesos NO afecta a la nota màxima perquè aquest - - valor es fixa a través del paràmetre Nota màxima - - de l'avaluació dels companys. Els pesos poden ser valors negatius - - tot i que aquest aspecte és experimental encara.
                - -
              4. - -
              - -
            5. Marge d'error: En aquest tipus de tasca es puntuen els enviaments - - amb una escala de tipus Sí/No. La nota es determina per la "Taula - - de notes" que ens dona la relació entre el nombre d'errors i la - - nota suggerida. Per exemple, una tasca pot tenir sis items significatius que - - han d'estar presents, la Taula de notes donarà les puntuacions suggerides - - si tots 6 són presents, si un és absent, si en manquen dos, - - etc. Cada ítem, si es desitja, pot tenir factors ponderadors si és - - que n'hi ha uns de més importants que d'altres. El nombre d'errors - - és la suma ponderada dels ítems absents. Per defecte cada ítem - - té un pes de 1. La Taula de notes pot ser no lineal; per exemple, les - - notes suggerides per a una tasca amb 10 ítems poden ser: 90%, 70%, - - 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0%. La persona que avalua pot ajustar les - - notes suggerides fins al 20% de la nota final de l'enviament.
            6. - -
            7. Criteris: El tipus d'avaluació més senzill tot i que - - no necessàriament els més fàcil de plantejar. Els enviaments - - es puntuen segons un joc de criteris. La persona avaluadora tria quin criteri - - defineix millor el treball. La nota es determina per una "Taula de criteris" - - que dona la nota suggerida per a cada criteri. Per exemple, podem establir - - una tasca amb 5 criteris i els avaluadors hauran de triar un d'aquests cinc - - criteris per cadascuna de les seves avaluacions De la mateixa manera que a - - la tasca amb marge d'error l'avaluador pot ajustar la nota suggerida fins - - al 20% per tal de donar la nota final.
            8. - -
            \ No newline at end of file + +

            Puntuar l'estratègia

            + +

            La tasca d'un Taller és molt flexible en quant al tipus d'esquema de + puntuació que es pot arribar a utilitzar. Així tenim: +

              +
            1. Sense puntuar: En aquest tipus de tasca el professorat no s'interessa + en l'avaluació quantitativa dels estudiants. Els estudiants fan comentaris + sobre els treballs però no els puntuen. El professorat, tanmateix, + pot puntuar els comentaris dels estudiants si ho desitja. Aquestes "notes + de les notes" formen part de la nota final de cada estudiant. Si el professorat + no puntua les avaluacions dels estudiants aleshores no hi haurà notes + finals de la tasca. +
            2. Puntuació acumulativa: Aquesta és la puntuació + per defecte. En aquest tipus de tasca la nota de cada avaluació s'obté + a partir dels "elements d'avaluació". Cada element hauria + de cobrir un aspecte particular de la tasca. Normalment una tasca tindrà + entre 5 i 15 elements d'avaluacióper comentar i puntuar, i el nombre + real dependrà de la mida i la complexitat de la tasca. Es pot fer una + avaluació pels companys amb només un element i té una + estratègia avaluadora semblant a la de la Tasca estàndard de + Moodle. +

              Els elements tenen aquestes tres característiques: +

                +
              1. La DESCRIPCIÓ de l'element d'avaluació S'hauria d'establir + molt clarament quins aspectes de la tasca s'han d'avaluar Si l'avaluació + és qualitativa pot ser molt útil detallar què es + considera excel·lent, què correcte i què pobre. +
              2. L'ESCALA de l'element d'avaluació. Hi ha un cert nombre d'escales + predefinides que van des del simple Sí/No fins a escales percentuals + passant per les multipunt.. Cada element té la seva pròpia + escala que cal triar per tal de cobrir totes les possibles variacions + de l'element. Observeu que l'escala NO determina la importància + de l'element quan es calcula la nota global; per exemple: una escala de + dos punts té la mateixa "influència" que una altra + de 100 punts si els elements respectius tenen el mateix "pes" +
                + El PES de l'element d'avaluació. Per defecte els elements tenen + la mateixa importància quan es calcula la nota global de la tasca. + Però es pot canviar si es dóna als elements més importants + un pes més gran que 1, i als menys importants un pes per sota d'1. + Canviar els pesos NO afecta a la nota màxima perquè aquest + valor es fixa a través del paràmetre Nota màxima + de l'avaluació dels companys. Els pesos poden ser valors negatius + tot i que aquest aspecte és experimental encara.
                +
                +
              +
            3. Marge d'error: En aquest tipus de tasca es puntuen els enviaments + amb una escala de tipus Sí/No. La nota es determina per la "Taula + de notes" que ens dona la relació entre el nombre d'errors i la + nota suggerida. Per exemple, una tasca pot tenir sis items significatius que + han d'estar presents, la Taula de notes donarà les puntuacions suggerides + si tots 6 són presents, si un és absent, si en manquen dos, + etc. Cada ítem, si es desitja, pot tenir factors ponderadors si és + que n'hi ha uns de més importants que d'altres. El nombre d'errors + és la suma ponderada dels ítems absents. Per defecte cada ítem + té un pes de 1. La Taula de notes pot ser no lineal; per exemple, les + notes suggerides per a una tasca amb 10 ítems poden ser: 90%, 70%, + 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0%. La persona que avalua pot ajustar les + notes suggerides fins al 20% de la nota final de l'enviament. +
            4. Criteris: El tipus d'avaluació més senzill tot i que + no necessàriament els més fàcil de plantejar. Els enviaments + es puntuen segons un joc de criteris. La persona avaluadora tria quin criteri + defineix millor el treball. La nota es determina per una "Taula de criteris" + que dona la nota suggerida per a cada criteri. Per exemple, podem establir + una tasca amb 5 criteris i els avaluadors hauran de triar un d'aquests cinc + criteris per cadascuna de les seves avaluacions De la mateixa manera que a + la tasca amb marge d'error l'avaluador pot ajustar la nota suggerida fins + al 20% per tal de donar la nota final. +
            + +

            diff --git a/lang/ca/help/workshop/gradingsubmissions.html b/lang/ca/help/workshop/gradingsubmissions.html index 9163f4b1612..3761cf28482 100755 --- a/lang/ca/help/workshop/gradingsubmissions.html +++ b/lang/ca/help/workshop/gradingsubmissions.html @@ -1,12 +1,12 @@ -

            Puntuar els enviaments de l'estudiant

            +

            Puntuar els enviaments de l'estudiant

            -

            En general el professorat voldrà avaluar els treballs enviats pels estudiants. +

            En general el professorat voldrà avaluar els treballs enviats pels estudiants. Aquestes avaluacions es mostren als estudiants i poden oferir-los retroalimentació - pel seu treball.

            -

            Per calcular la nota final es poden fer servir les notes d'aquestes avaluacions + pel seu treball.

            +

            Per calcular la nota final es poden fer servir les notes d'aquestes avaluacions de dues maneres. La primera és que la pròpia nota és un component ponderat de la nota final. I la segona, es poden afegir opcionalment aquestes notes al conjunt de les avaluacions dels companys com a "factor pacificador" si creieu que les avaluacions dels estudiants són o - massa altes o massa baixes.

            + massa altes o massa baixes.

            diff --git a/lang/ca/help/workshop/includeself.html b/lang/ca/help/workshop/includeself.html index 1b0748ae991..d3a0fd235a9 100755 --- a/lang/ca/help/workshop/includeself.html +++ b/lang/ca/help/workshop/includeself.html @@ -1 +1,10 @@ -

            Autoinclusió a l'avaluació

            Una tasca avaluada pels companys, opcionalment, pot incloure el propi treball de l'estudiant en el conjunt de peces que cada estudiant ha de puntuar. Això vol dir que si, per exemple, hi ha 5 companys avaluadors, cada estudiant haurà de puntuar 6 treballs, un dels quals és el seu.

            Si el nombre de companys avaluadors es deixa a 0 i s'activa l'opció Autoinclusió la tasca esdevé una tasca autoavaluada. I podrà incloure, o no, la nota del professorat depenent en si s'ha triat aquesta opció.

            \ No newline at end of file + +

            Autoinclusió a l'avaluació

            + +

            Una tasca avaluada pels companys, opcionalment, pot incloure el propi treball + de l'estudiant en el conjunt de peces que cada estudiant ha de puntuar. Això + vol dir que si, per exemple, hi ha 5 companys avaluadors, cada estudiant haurà + de puntuar 6 treballs, un dels quals és el seu. +

            Si el nombre de companys avaluadors es deixa a 0 i s'activa l'opció + Autoinclusió la tasca esdevé una tasca autoavaluada. I podrà + incloure, o no, la nota del professorat depenent en si s'ha triat aquesta opció. diff --git a/lang/ca/help/workshop/includeteachersgrade.html b/lang/ca/help/workshop/includeteachersgrade.html deleted file mode 100644 index 420f06812e1..00000000000 --- a/lang/ca/help/workshop/includeteachersgrade.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Incloure la qualificació del professor

            - -

            Aquesta opció permet incloure les avaluacions de la tasca realitzades pel professor com si haguessin estat realitzades pels companys. Si el valor és SÍ, llavors les avaluacions realitzades pel professor són, de fet, comptabilitzades dues vegades: la primera com a avaluació del professor i la segona en ser inclosa al conjunt de les valoracions dels companys. -El professor pot decidir activar aquesta opció si (a) el nombre de valoracions dels companys és petit o (b) si vol compensar les valoracions dels companys en aquells casos en els quals preveu que puguin ser esbiaixades o no gaire fiables.

            diff --git a/lang/ca/help/workshop/index.html b/lang/ca/help/workshop/index.html index 1d24169dd0f..9c8f37ffeaa 100755 --- a/lang/ca/help/workshop/index.html +++ b/lang/ca/help/workshop/index.html @@ -1,124 +1,62 @@ - - -

            Mòdul de Taller

            - - - - - - - + +

            Mòdul de Taller

            + + + diff --git a/lang/ca/help/workshop/managing.html b/lang/ca/help/workshop/managing.html index 715a9de85e3..94244f93eff 100755 --- a/lang/ca/help/workshop/managing.html +++ b/lang/ca/help/workshop/managing.html @@ -1,148 +1,74 @@ - - -

            Gestionar la tasca d'un taller

            - - - -

            La Tasca d'un Taller és més complexa que una tasca ordinària - - perquè implica un determinat nombre de passos o fases, que són - - aquests:

            - -
              - -
            1. L'avaluacióde la tasca es descompon en diversos ELEMENTS d'avaluació. - - Això fa que la puntuació d'una tasca sigui menys arbitrària - - i dóna a l'estudiant un marc on fer les avaluacions. El professorat - - té la tasca d'establir els elements d'avaluació.a través - - del full de puntuacions. - - - -

              Un cop establerts els elements d'avaluació el professorat enviarà - - un petit nombre de treballs d'exemple que serveixen per a què els - - estudiants avaluïn abans de fer els seus propis treballs. Tanmateix, - - abans de donar a conèixer la tasca als estudiants el professorat - - hauria d'avaluar aquests treballs. D'aquesta manera els professors tindran - - en la següent fase algunes respostes de mostra per quan revisin les - - avaluacions d'aquests treballs per part dels estudiants.

              - -

              El fet que el professorat enviï treballs és opcional i en alguns - - casos fins i tot és inapropiat.

            2. - -
            3. Ara la tasca ja és accessible als estudiants. Si el professorat ha - - preparat treballs d'exemple els estudiants n'han d'avaluar alguns (El nombre - - d'avaluacions es va fixar quan es creà la tasca). Un cop un estudiant - - ha fet les avaluacions. requerides ja pot enviar el seu propi treball. En - - el cas d'una tasca sense exemples els estudiants poden enviar els seus treballs - - immediatament. - -

              Quan un estudiant ha enviat el seu treball el professorat, si així - - ho desitja, ja pot avaluar-lo. Aquesta avaluació s'incorpora a la - - nota final de l'estudiant. Les avaluacions es poden fer bé durant - - la fase d'enviament o bé un cop ha finalitzat el termini.

              - -

              Si la tasca incorpora avaluació pels companys els estudiants que - - han enviat treballs poden avaluar els treballs d'altres estudiants. Quan - - hagin avaluat als companys aquest podran llegir les avaluacions que els - - han fet. L'estudiant que ha enviat el treball pot comentar l'avaluació - - si s'ha triat aquesta opció al crear la tasca. Si ho desitja, el - - professorat pot puntuar aquestes avaluacions dels companys i les notes van - - a afegir-se a les notes finals dels estudiants, tot i que en molts de casos - - no és necessari, tal com veureu a la fase següent.

            4. - -
            5. Un cop ha passat la data límit el professorat mou la tasca a la fase - - següent on ja no són permesos ni enviaments ni avaluacions. Ara - - el professorat, si vol, pot completar la puntuació de les avaluacions - - fetes sobre els exemples i sobre els enviaments dels estudiants. També - - pot puntuar l'avaluació dels companys feta pels estudiants. Tanmateix - - això no és realment necessari perquè la manera de puntuar - - de cada estudiant es pot determinar a partir de les puntuacions relatives. - -

              Quan ha acabat de puntuar el professorat calcula la nota final dels estudiants. - - Aquestes notes finals es calculen normalment a partir de tres components: - - la nota que el professorat ha posat al treball de l'estudiant, la mitjana - - de les notes que han posat els companys al treball i la manera de puntuar - - de l'estudiants. Aquest darrer component inclou la mitjana de la "nota - - de les notes" entrada pel professorat sobre els comentaris de l'estudiant. - - Els tres components són ponderats pel professor abans del càlcul - - de la nota final.

            6. - -
            7. La fase final de la tasca consisteix en que els estudiants vegin les seves - - notes finals. Si ho desitja el professorat pot tornar a la tasca per permetre - - alguns ajustaments de, per exemple, els pesos que s'utilitzaran per calcular - - la nota final; aleshores les notes revisades es tornen a mostrar als estudiants. - -

              Tant estudiants com professorat poden veure la "Taula comunitària" - - dels enviaments dels estudiants. Aquí hi són llistats, per - - ordre de nota, amb la més alta a dalt de tot. Aquí la nota - - de l'enviament és una combinació de la nota del professorat - - i de la mitjana de les notes dels companys( si així s'havia determinat). - - La ponderació usada és la que s'ha fixat en la fase anterior.

            8. - -
            - -

            En qualsevol fase de la tasca el professorat pot obrir la pàgina d'Administració - - que mostra l'estat actual de la tasca. Mostra la llista d'enviaments del professorat, - - si se n'han fet, les avaluacions dels estudiants (les del treball d'exemple - - del professor, del seu propi treball i dels enviaments dels altres estudiants) - - i els enviaments dels estudiants. El professorat pot fer servir aquesta pàgina - - per avaluar i reavaluar els enviaments, puntuar i tornar a puntuar avaluacions, - - esborrar enviaments i avaluacions i, en general, per mirar el progrés - - de la tasca.

            - + +

            Gestionar la tasca d'un taller

            + +

            La Tasca d'un Taller és més complexa que una tasca ordinària + perquè implica un determinat nombre de passos o fases, que són + aquests: +

              +
            1. L'avaluacióde la tasca es descompon en diversos ELEMENTS d'avaluació. + Això fa que la puntuació d'una tasca sigui menys arbitrària + i dóna a l'estudiant un marc on fer les avaluacions. El professorat + té la tasca d'establir els elements d'avaluació.a través + del full de puntuacions. +

              +

              Un cop establerts els elements d'avaluació el professorat enviarà + un petit nombre de treballs d'exemple que serveixen per a què els + estudiants avaluïn abans de fer els seus propis treballs. Tanmateix, + abans de donar a conèixer la tasca als estudiants el professorat + hauria d'avaluar aquests treballs. D'aquesta manera els professors tindran + en la següent fase algunes respostes de mostra per quan revisin les + avaluacions d'aquests treballs per part dels estudiants. +

              El fet que el professorat enviï treballs és opcional i en alguns + casos fins i tot és inapropiat.

              +
            2. Ara la tasca ja és accessible als estudiants. Si el professorat ha + preparat treballs d'exemple els estudiants n'han d'avaluar alguns (El nombre + d'avaluacions es va fixar quan es creà la tasca). Un cop un estudiant + ha fet les avaluacions. requerides ja pot enviar el seu propi treball. En + el cas d'una tasca sense exemples els estudiants poden enviar els seus treballs + immediatament. +

              Quan un estudiant ha enviat el seu treball el professorat, si així + ho desitja, ja pot avaluar-lo. Aquesta avaluació s'incorpora a la + nota final de l'estudiant. Les avaluacions es poden fer bé durant + la fase d'enviament o bé un cop ha finalitzat el termini.

              +

              Si la tasca incorpora avaluació pels companys els estudiants que + han enviat treballs poden avaluar els treballs d'altres estudiants. Quan + hagin avaluat als companys aquest podran llegir les avaluacions que els + han fet. L'estudiant que ha enviat el treball pot comentar l'avaluació + si s'ha triat aquesta opció al crear la tasca. Si ho desitja, el + professorat pot puntuar aquestes avaluacions dels companys i les notes van + a afegir-se a les notes finals dels estudiants, tot i que en molts de casos + no és necessari, tal com veureu a la fase següent.

              +
            3. Un cop ha passat la data límit el professorat mou la tasca a la fase + següent on ja no són permesos ni enviaments ni avaluacions. Ara + el professorat, si vol, pot completar la puntuació de les avaluacions + fetes sobre els exemples i sobre els enviaments dels estudiants. També + pot puntuar l'avaluació dels companys feta pels estudiants. Tanmateix + això no és realment necessari perquè la manera de puntuar + de cada estudiant es pot determinar a partir de les puntuacions relatives. +

              Quan ha acabat de puntuar el professorat calcula la nota final dels estudiants. + Aquestes notes finals es calculen normalment a partir de tres components: + la nota que el professorat ha posat al treball de l'estudiant, la mitjana + de les notes que han posat els companys al treball i la manera de puntuar + de l'estudiants. Aquest darrer component inclou la mitjana de la "nota + de les notes" entrada pel professorat sobre els comentaris de l'estudiant. + Els tres components són ponderats pel professor abans del càlcul + de la nota final.

              +
            4. La fase final de la tasca consisteix en que els estudiants vegin les seves + notes finals. Si ho desitja el professorat pot tornar a la tasca per permetre + alguns ajustaments de, per exemple, els pesos que s'utilitzaran per calcular + la nota final; aleshores les notes revisades es tornen a mostrar als estudiants. +

              Tant estudiants com professorat poden veure la "Taula comunitària" + dels enviaments dels estudiants. Aquí hi són llistats, per + ordre de nota, amb la més alta a dalt de tot. Aquí la nota + de l'enviament és una combinació de la nota del professorat + i de la mitjana de les notes dels companys( si així s'havia determinat). + La ponderació usada és la que s'ha fixat en la fase anterior.

              +
            +

            En qualsevol fase de la tasca el professorat pot obrir la pàgina d'Administració + que mostra l'estat actual de la tasca. Mostra la llista d'enviaments del professorat, + si se n'han fet, les avaluacions dels estudiants (les del treball d'exemple + del professor, del seu propi treball i dels enviaments dels altres estudiants) + i els enviaments dels estudiants. El professorat pot fer servir aquesta pàgina + per avaluar i reavaluar els enviaments, puntuar i tornar a puntuar avaluacions, + esborrar enviaments i avaluacions i, en general, per mirar el progrés + de la tasca.

            diff --git a/lang/ca/help/workshop/mods.html b/lang/ca/help/workshop/mods.html index 094bfc5feb2..4566be387db 100755 --- a/lang/ca/help/workshop/mods.html +++ b/lang/ca/help/workshop/mods.html @@ -1 +1,9 @@ -

             Taller

              Un taller és una activitat d'avaluació entre companys amb una enorme varietat d'opcions. Permet als participants avaluar de moltes maneres els projectes dels altres companys o els d'exemple. També coordina la recollida i distribució d'aquestes avaluacions de diferent maneres. El mòdul de Taller és una contribució de Ray Kingdon.

            \ No newline at end of file + +

             Taller

            +
              +

              Un taller és una activitat d'avaluació entre companys amb una + enorme varietat d'opcions. Permet als participants avaluar de moltes maneres + els projectes dels altres companys o els d'exemple. També coordina + la recollida i distribució d'aquestes avaluacions de diferent maneres. + El mòdul de Taller és una contribució de Ray Kingdon.

              +
            diff --git a/lang/ca/help/workshop/nassessmentsofstudentsubmissions.html b/lang/ca/help/workshop/nassessmentsofstudentsubmissions.html index 9964644693b..a474e09e142 100755 --- a/lang/ca/help/workshop/nassessmentsofstudentsubmissions.html +++ b/lang/ca/help/workshop/nassessmentsofstudentsubmissions.html @@ -1,7 +1,7 @@ -

            Nombre d'enviaments d'avaluacions d'estudiant

            +

            Nombre d'enviaments d'avaluacions d'estudiant

            -

            Aquest nombre determina si es demana als estudiants que avaluïn els treball +

            Aquest nombre determina si es demana als estudiants que avaluïn els treball dels altres estudiants. Si és diferent de zero se li ofereix a cada estudiant aquest nombre de treballs d'altres estudiants per avaluar. Un cop avaluat l'autor del treball pot veure els comentaris i la nota donada pels seus companys (L'avaluació @@ -9,4 +9,4 @@ "Consens en l'avaluació"). El professorat pot puntuar també, si ho desitja, aquestes avaluacions i les notes es faran servir al càlcul de la nota final. Si es desitja es mostra als estudiants els comentaris del - professorat i la nota de cadascuna de les avaluacions.

            + professorat i la nota de cadascuna de les avaluacions.

            diff --git a/lang/ca/help/workshop/nassessmentsofteachersexamples.html b/lang/ca/help/workshop/nassessmentsofteachersexamples.html index 506df456dba..4fc0e213552 100755 --- a/lang/ca/help/workshop/nassessmentsofteachersexamples.html +++ b/lang/ca/help/workshop/nassessmentsofteachersexamples.html @@ -1,11 +1,11 @@ -

            Nombre d'exemples d'Avaluació del professorat

            +

            Nombre d'exemples d'Avaluació del professorat

            -

            Aquest nombre determina si es demana als estudiants d'avaluar alguns treballs +

            Aquest nombre determina si es demana als estudiants d'avaluar alguns treballs d'exemple abans d'enviar el seu propi treball. Si és diferent de zero cada estudiant haurà d'avaluar aquest nombre de treballs d'exemple. No podran enviar el seu propi treball fins haver fet aquestes avaluacions. El professor, si ho desitja, pot puntuar aquestes avaluacions i usar les notes en el càlcul de la nota final. Es donen a conèixer els comentaris que fa el professorat sobre les avaluacions, però les "notes de les notes" del professorat - no es mostren als estudiants fins que no ha passat la data límit d'enviament.

            + no es mostren als estudiants fins que no ha passat la data límit d'enviament.

            diff --git a/lang/ca/help/workshop/nelements.html b/lang/ca/help/workshop/nelements.html index 9ba924b29f1..3c23871f41a 100755 --- a/lang/ca/help/workshop/nelements.html +++ b/lang/ca/help/workshop/nelements.html @@ -1 +1,13 @@ -

            Nombre de Comentaris, Elements, Marge d'error o Criteris

            El número entrat aquí determina quants ítems s'utilitzaran en les avaluacions. Depenent del tipus d'estratègia de puntuació aquest número donarà el nombre de comentaris, elements d'avaluació, marge d'error o criteris que s'utilitzaran a les avaluacions. Normalment una tasca tindrà entre 5 i 15 ítems d'avaluació, i el nombre real dependrà de la mida i complexitat de la tasca.

            Totes les avaluacions tenen un camp de Comentaris generals. Per a una tasca sense nota el valor que doneu aquí determina el nombre d'àrees de comentaris addicionals. Es pot deixar a zero i s'obtindrà només una única àrea de Comentaris generals.

            \ No newline at end of file + +

            Nombre de Comentaris, Elements, Marge d'error o Criteris

            + +

            El número entrat aquí determina quants ítems s'utilitzaran + en les avaluacions. Depenent del tipus d'estratègia de puntuació + aquest número donarà el nombre de comentaris, elements d'avaluació, + marge d'error o criteris que s'utilitzaran a les avaluacions. Normalment una + tasca tindrà entre 5 i 15 ítems d'avaluació, i el nombre + real dependrà de la mida i complexitat de la tasca. +

            Totes les avaluacions tenen un camp de Comentaris generals. Per a una tasca + sense nota el valor que doneu aquí determina el nombre d'àrees + de comentaris addicionals. Es pot deixar a zero i s'obtindrà només + una única àrea de Comentaris generals. diff --git a/lang/ca/help/workshop/numberofassessors.html b/lang/ca/help/workshop/numberofassessors.html index f4c65f37fae..f150979b20d 100755 --- a/lang/ca/help/workshop/numberofassessors.html +++ b/lang/ca/help/workshop/numberofassessors.html @@ -1 +1,26 @@ -

            Nombre de companys avaluadors

            Una tasca puntuada pels companys normalment tindrà de 3 a 8 estudiants avaluadors. És a dir, a la fase de puntuació pels companys es demanarà a cada estudiant que puntuï aquest nombre de treballs dels altres companys de la classe. Com més gran sigui el contingut de la tasca, més petit ha de ser el nombre d'avaluadors perquè si no la càrrega avaluadora seria massa pesada. Tanmateix cada estudiant haurà de veure un nombre suficient d'exemples per tenir una idea ben clara sobre el que és un bon treball i el que és un treball pobre. I aquest nombre, per ser vàlid, ha de ser com més gran millor, amb tres o quatre no n'hi ha prou.

            Un cop s'han enviat el nombre suficient de treballs, 10 o més, el sistema assignarà a cada estudiant com a mínim un treball "bo" i un de "pobre". Tanmateix això només serà possible si el professorat ha puntuat els treballs ABANS que es faci aquesta assignació. Però el professorat NO ha de puntuar tots els treballs, amb una mostra és suficient. Més endavant les puntuacions del professorat no seran les finals, seran simplement unes puntuació preliminars. Observeu que si s'ha activat l'opció de mostrar les puntuacions del professorat aquestes es mostraran als estudiants al final de la fase d'enviaments.

            El nombre de companys avaluadors pot ser de zero. En aquest cas la tasca esdevé autoavaluada si l'opció està activada o bé és una tasca estàndard puntuada pel professorat

            \ No newline at end of file + +

            Nombre de companys avaluadors

            + +

            Una tasca puntuada pels companys normalment tindrà de 3 a 8 estudiants + avaluadors. És a dir, a la fase de puntuació pels companys es + demanarà a cada estudiant que puntuï aquest nombre de treballs dels + altres companys de la classe. Com més gran sigui el contingut de la tasca, + més petit ha de ser el nombre d'avaluadors perquè si no la càrrega + avaluadora seria massa pesada. Tanmateix cada estudiant haurà de veure + un nombre suficient d'exemples per tenir una idea ben clara sobre el que és + un bon treball i el que és un treball pobre. I aquest nombre, per ser + vàlid, ha de ser com més gran millor, amb tres o quatre no n'hi + ha prou. +

            Un cop s'han enviat el nombre suficient de treballs, 10 o més, el sistema + assignarà a cada estudiant com a mínim un treball "bo" + i un de "pobre". Tanmateix això només serà possible + si el professorat ha puntuat els treballs ABANS que es faci aquesta assignació. + Però el professorat NO ha de puntuar tots els treballs, amb una mostra + és suficient. Més endavant les puntuacions del professorat no + seran les finals, seran simplement unes puntuació preliminars. Observeu + que si s'ha activat l'opció de mostrar les puntuacions del professorat + aquestes es mostraran als estudiants al final de la fase d'enviaments. +

            El nombre de companys avaluadors pot ser de zero. En aquest cas la tasca esdevé + autoavaluada si l'opció està activada o bé és una + tasca estàndard puntuada pel professorat +

              diff --git a/lang/ca/help/workshop/resubmit.html b/lang/ca/help/workshop/resubmit.html index e29301d6a5c..6fb067f9ca4 100755 --- a/lang/ca/help/workshop/resubmit.html +++ b/lang/ca/help/workshop/resubmit.html @@ -1,18 +1,18 @@ -

            Reenviament de tasques

            +

            Reenviament de tasques

            -

            Per defecte els estudiants no poden reenviar les tasques, només se'ls - permet una tramesa.

            -

            Si activeu aquesta opció aleshores els estudiants podran enviar més +

            Per defecte els estudiants no poden reenviar les tasques, només se'ls + permet una tramesa.

            +

            Si activeu aquesta opció aleshores els estudiants podran enviar més d'un treball. Això pot ser útil si el professorat vol encoratjar - als estudiants a millorar els treballs per un procés iteratiu.

            -

            L'avaluació dels enviaments se situa en la base del nombre d'avaluacions + als estudiants a millorar els treballs per un procés iteratiu.

            +

            L'avaluació dels enviaments se situa en la base del nombre d'avaluacions que un treball ha tingut. Així els nous enviaments de l'estudiant poden ser objecte de l'avaluació dels companys. Tanmateix si un estudiant reenvia un nombre de treballs en ràpida successió aleshores tots seran - avaluats igualment. La tasca NO dona prioritat als enviaments més nous.

            -

            Quan es calcula la nota final de l'estudiant s'utilitza l'enviament que té + avaluats igualment. La tasca NO dona prioritat als enviaments més nous.

            +

            Quan es calcula la nota final de l'estudiant s'utilitza l'enviament que té la nota més alta . Aquesta nota més alta aquí significa la combinació ponderada de la nota del professorat i dels companys si - les dues es tenen en compte.

            + les dues es tenen en compte.

            diff --git a/lang/ca/help/workshop/selfassessment.html b/lang/ca/help/workshop/selfassessment.html index c0ff961c9af..810d5d342c3 100755 --- a/lang/ca/help/workshop/selfassessment.html +++ b/lang/ca/help/workshop/selfassessment.html @@ -1 +1,10 @@ -

            Autoavaluació

            Un Taller opcionalment pot incloure el propi treball de l'estudiant en el conjunt de treballs que l'estudiant ha d'avaluar. Això vol dir que si, per exemple, el nombre de treballs que l'estudiant ha d'avaluar es deixa a 5 aleshores cada estudiant haurà d'avaluar-ne 6, un dels quals és el seu.

            Si el nombre de treballs es deixa a zero i s'activa l'opció de l'autoavaluació aleshores la tasca esdevé una tasca autoavaluada. I podrà o no incloure la nota del professorat depenent del que aquest decideixi.

            \ No newline at end of file + +

            Autoavaluació

            + +

            Un Taller opcionalment pot incloure el propi treball de l'estudiant en el conjunt + de treballs que l'estudiant ha d'avaluar. Això vol dir que si, per exemple, + el nombre de treballs que l'estudiant ha d'avaluar es deixa a 5 aleshores cada + estudiant haurà d'avaluar-ne 6, un dels quals és el seu. +

            Si el nombre de treballs es deixa a zero i s'activa l'opció de l'autoavaluació + aleshores la tasca esdevé una tasca autoavaluada. I podrà o no + incloure la nota del professorat depenent del que aquest decideixi. diff --git a/lang/ca/help/workshop/showinggrades.html b/lang/ca/help/workshop/showinggrades.html index 2b74a47d159..dd896dd98b5 100755 --- a/lang/ca/help/workshop/showinggrades.html +++ b/lang/ca/help/workshop/showinggrades.html @@ -1 +1,13 @@ -

            Ocultar les notes

            Es pot usar aquesta opció quan hi ha d'haver consens entre els estudiants sobre una avaluació. El valor per defecte mostra a l'estudiant el treball del qual s'avalua els comentaris i les avaluacions dels companys. Això pot portar a més discussions que quan l'opció està activada i es poden veure les avaluacions però no les notes.

            Si l'opció és amagar les notes en les avaluacions dels companys les puntuacions es revelen un cop s'ha assolit el consens. Aquest consens, naturalment, s'haurà aconseguit només sobre els comentaris. Si aquests no encaixen raonablement amb les puntuacions aleshores l'estudiant el treball del qual s'avalua pot acudir al professorat.

            \ No newline at end of file + +

            Ocultar les notes

            + +

            Es pot usar aquesta opció quan hi ha d'haver consens entre els estudiants + sobre una avaluació. El valor per defecte mostra a l'estudiant el treball + del qual s'avalua els comentaris i les avaluacions dels companys. Això + pot portar a més discussions que quan l'opció està activada + i es poden veure les avaluacions però no les notes. +

            Si l'opció és amagar les notes en les avaluacions dels companys + les puntuacions es revelen un cop s'ha assolit el consens. Aquest consens, naturalment, + s'haurà aconseguit només sobre els comentaris. Si aquests no encaixen + raonablement amb les puntuacions aleshores l'estudiant el treball del qual s'avalua + pot acudir al professorat. diff --git a/lang/ca/help/workshop/specimen.html b/lang/ca/help/workshop/specimen.html index 3be5a25013f..e45e834c5c2 100755 --- a/lang/ca/help/workshop/specimen.html +++ b/lang/ca/help/workshop/specimen.html @@ -1 +1,11 @@ -

            Formulari d'avaluació de mostra

            Aquesta pàgina mostra el detalls del formulari que permet puntuar la vostra tasca. El professorat l'utilitzarà per puntuar el vostre treball. Més endavant, en la tasca avaluada pels companys, tots els estudiants usareu aquest mateix formulari per puntuar els treballs enviats.

            Fixeu-vos que encara que canvieu les notes en aquest formulari els canvis NO es desen. Aquest és simplement un formulari de mostra tot i que un de molt semblant el farà servir el professorat i, possiblement vosaltres mateixos, per fer l'avaluació.

            \ No newline at end of file + +

            Formulari d'avaluació de mostra

            + +

            Aquesta pàgina mostra el detalls del formulari que permet puntuar la + vostra tasca. El professorat l'utilitzarà per puntuar el vostre treball. + Més endavant, en la tasca avaluada pels companys, tots els estudiants + usareu aquest mateix formulari per puntuar els treballs enviats.

            +

            Fixeu-vos que encara que canvieu les notes en aquest formulari els canvis NO + es desen. Aquest és simplement un formulari de mostra tot i que un de + molt semblant el farà servir el professorat i, possiblement vosaltres + mateixos, per fer l'avaluació.

            diff --git a/lang/ca/help/workshop/submissionofexamples.html b/lang/ca/help/workshop/submissionofexamples.html index d944212c2ac..dc7e4af8087 100755 --- a/lang/ca/help/workshop/submissionofexamples.html +++ b/lang/ca/help/workshop/submissionofexamples.html @@ -1,7 +1,7 @@ -

            Enviaments dels exemples del professorat

            +

            Enviaments dels exemples del professorat

            -

            En el cas que s'hagi demanat als estudiants que avaluïn alguns treballs +

            En el cas que s'hagi demanat als estudiants que avaluïn alguns treballs abans d'enviar els seus de propis, el professorat usarà aquest enllaç per enviar-los. El professor pot enviar el nombre de treballs que vulgui. Si aquest nombre és més gran que el nombre d'avaluacions d'exemple @@ -10,11 +10,11 @@ dels exemples sigui presentat als estudiants el mateix nombre de vegades. Aquesta presentació és aleatòria en el sentit de que si, per exemple, s'han enviat deu exemples és altament improbable que el primer estudiant - hagi d'avaluar els enviaments 1, 2 i 3.

            -

            Si el professorat envia un nombre d'exemples més petit que el paràmetre + hagi d'avaluar els enviaments 1, 2 i 3.

            +

            Si el professorat envia un nombre d'exemples més petit que el paràmetre corresponent de la tasca, aleshores els estudiants tenen tots aquests exemples - per avaluar.

            -

            Un cop el professorat ha enviat els exemples és útil que en faci + per avaluar.

            +

            Un cop el professorat ha enviat els exemples és útil que en faci una avaluació, ni que sigui parcial. Aquestes avaluacions només són pel professor i NO es mostren als estudiants en cap fase de la tasca. Tanmateix es mostren al professor quan aquest va a mirar les avaluacions dels @@ -22,5 +22,5 @@ el professorat veu la seva pròpia avaluació al capdamunt de la pantalla de les avaluacions dels estudiants. Aquesta avaluació "extra" fa de punt de referència i de recordatori dels punts més importants - de l'exemple.

            + de l'exemple.

            diff --git a/lang/ca/help/workshop/teachersgradings.html b/lang/ca/help/workshop/teachersgradings.html index 402febd74c2..d753830904a 100755 --- a/lang/ca/help/workshop/teachersgradings.html +++ b/lang/ca/help/workshop/teachersgradings.html @@ -1 +1,12 @@ -

            Exposició de les notes del professorat

            En una tasca puntuada pels companys opcionalment es poden donar a conèixer als estudiants els comentaris del professorat i les notes. Si es desitja, es poden mostrar després de la data límit d'enviament o més tard si les notes encara no estan disponibles. Els comentaris del professorat i les notes poden ajudar als estudiants quan facin les seves pròpies avaluacions dels treballs dels altres estudiants.

            Observeu que fins i tot quan la puntuació pels companys és anònima les notes del professorat sempre es mostren als estudiants amb el nom del professor o professora i, si és possible, la seva foto.

            \ No newline at end of file + +

            Exposició de les notes del professorat

            + +

            En una tasca puntuada pels companys opcionalment es poden donar a conèixer + als estudiants els comentaris del professorat i les notes. Si es desitja, es + poden mostrar després de la data límit d'enviament o més + tard si les notes encara no estan disponibles. Els comentaris del professorat + i les notes poden ajudar als estudiants quan facin les seves pròpies + avaluacions dels treballs dels altres estudiants. +

            Observeu que fins i tot quan la puntuació pels companys és anònima + les notes del professorat sempre es mostren als estudiants amb el nom del professor + o professora i, si és possible, la seva foto. diff --git a/lang/ca/help/workshop/ungradedassessments_student.html b/lang/ca/help/workshop/ungradedassessments_student.html index 58cdbb6e61c..2f2f8ddbf55 100755 --- a/lang/ca/help/workshop/ungradedassessments_student.html +++ b/lang/ca/help/workshop/ungradedassessments_student.html @@ -1 +1,12 @@ -

            Avaluacions sense puntuació dels enviaments dels estudiants

            Avaluació dels enviaments dels estudiants Aquestes són les avaluacions fetes pels companys dels treballs dels altres estudiants. En general aquestes avaluacions NO han de ser puntuades pel professorat. El sistema pot fer un judici raonable del treball individual d'avaluació dels estudiants si els enviaments dels estudiants són avaluats cinc vegades. Quan el nombre d'avaluacions dels companys és baix aleshores el professorat pot desitjar puntuar aquestes avaluacions. Aquestes puntuacions poden servir per calcular la nota final dels estudiants.

            \ No newline at end of file + +

            Avaluacions sense puntuació dels enviaments dels estudiants

            + +

            Avaluació dels enviaments dels estudiants Aquestes són + les avaluacions fetes pels companys dels treballs dels altres estudiants. En + general aquestes avaluacions NO han de ser puntuades pel professorat. El sistema + pot fer un judici raonable del treball individual d'avaluació dels estudiants + si els enviaments dels estudiants són avaluats cinc vegades. Quan el + nombre d'avaluacions dels companys és baix aleshores el professorat pot + desitjar puntuar aquestes avaluacions. Aquestes puntuacions poden servir per + calcular la nota final dels estudiants. +

              diff --git a/lang/ca/help/workshop/ungradedassessments_teacher.html b/lang/ca/help/workshop/ungradedassessments_teacher.html index 15ba5330351..51ad4dd3dc6 100755 --- a/lang/ca/help/workshop/ungradedassessments_teacher.html +++ b/lang/ca/help/workshop/ungradedassessments_teacher.html @@ -1,7 +1,7 @@ -

            Avaluacions sense puntuació dels enviaments del professorat

            +

            Avaluacions sense puntuació dels enviaments del professorat

            -

            Avaluacions dels enviaments del professorat Són avaluacions dels +

            Avaluacions dels enviaments del professorat Són avaluacions dels treballs d'exemple que la tasca exigeix que facin els estudiants abans d'enviar el seu propi treball. En general haurien de ser puntuades pel professorat. Les avaluacions mostraran si l'estudiant ha entès la tasca i proporcionaran @@ -9,7 +9,7 @@ ajustament o acció complementària. A més, si es puntua l'avaluació els comentaris del professorat es donen a conèixer als estudiants. Això pot proporcionar una guia molt valuosa en la preparació - del treball de la tasca.

            -

            No cal que siguin avaluacions amb nota. Tanmateix és recomanable que + del treball de la tasca.

            +

            No cal que siguin avaluacions amb nota. Tanmateix és recomanable que com a míinim una mostra de les avaluacions sigui puntuada per les raons - adduïdes més amunt.

            + adduïdes més amunt.

            diff --git a/lang/ca/help/writing.html b/lang/ca/help/writing.html index 7dd6ff4b2ba..f21e1bf72dd 100755 --- a/lang/ca/help/writing.html +++ b/lang/ca/help/writing.html @@ -1 +1,29 @@ -

            Escriptura

            Quan escriviu text per a ser llegit per altres persones penseu i escriviu pensant en els lectors.

            Expliqueu-vos tan clarament i simple com pugueu per tal d'evitar malentesos. Una cosa que podeu fer és evitar les paraules llargues quan us pugueu explicar amb d'altres de més curtes.

            Això us servirà per fer intervencions curtes al fòrums i no sortir-vos del tema. En lloc d'una intervenció llarga i confusa que toca diferents punts és millor escriure'n de curts en diferents fòrums, si cal.

            Reediteu el text tants cops com us calgui fins que el trobeu correcte del tot. Fins i tot als fòrums teniu maxeditingtime/60) ?> minuts després d'enviar la intervenció per tornar-hi i millorar-la, si calgués.

            Quan contesteu als altres penseu en qüestions interessants que els podeu preguntar. Això us ajudarà a vós i a l'altre persona a pensar i aprendre sobre el tema de discussió.

             

            Més informació sobre fer preguntes

            Més informació sobre com llegir

            \ No newline at end of file + +

            Escriptura

            + +

            Quan escriviu text per a ser llegit per altres persones penseu i escriviu pensant + en els lectors.

            +

            Expliqueu-vos tan clarament i simple com pugueu per tal d'evitar malentesos. + Una cosa que podeu fer és evitar les paraules llargues quan us pugueu + explicar amb d'altres de més curtes.

            + +

            Això us servirà per fer intervencions curtes al fòrums + i no sortir-vos del tema. En lloc d'una intervenció llarga i confusa + que toca diferents punts és millor escriure'n de curts en diferents fòrums, + si cal.

            + +

            Reediteu el text tants cops com us calgui fins que el trobeu correcte del tot. + Fins i tot als fòrums teniu + maxeditingtime/60) ?> + minuts després d'enviar la intervenció per tornar-hi i millorar-la, + si calgués. +

            Quan contesteu als altres penseu en qüestions interessants que els podeu + preguntar. Això us ajudarà a vós i a l'altre persona a + pensar i aprendre sobre el tema de discussió.

            +

             

            + + +

            Més informació + sobre fer preguntes

            +

            Més informació + sobre com llegir

            diff --git a/lang/ca/install.php b/lang/ca/install.php index 28948074203..e6c2f506e12 100644 --- a/lang/ca/install.php +++ b/lang/ca/install.php @@ -1,10 +1,10 @@
            moodleadmin

            +$string['admindirsetting'] = 'Alguns servidors web utilitzen un URL especial /admin per accedir a un tauler de control o quelcom semblant. Malauradament aquesta és també la ubicació estàndard de les pàgines d\'administració de Moodle. Podeu arreglar aquest problema canviant el nom del directori d\'administració de Moodle en la vostra instal·lació i posant el nou nom aquí. Per exemple:
             
            moodleadmin
             
            Això modificarà els enllaços d\'administració de Moodle.'; $string['caution'] = 'Alerta'; $string['chooselanguage'] = 'Trieu un idioma'; @@ -14,7 +14,7 @@ $string['configfilewritten'] = 'S\'ha creat amb $string['configurationcomplete'] = 'S\'ha completat la configuració'; $string['database'] = 'Base de dades'; $string['databasesettings'] = 'Ara heu de configurar la base de dades on s\'emmagatzemaran la major part de les dades de Moodle. Aquesta base de dades s\'ha de crear abans i cal tenir un nom d\'usuari i una contrasenya amb accés a ella.
            -

            +
             
            Tipus: mysql o postgres7
            Ordinador: p. ex. localhost o db.isp.com
            Nom: nom de la base de dades, p. ex. moodle
            @@ -78,12 +78,11 @@ $string['memorylimithelp'] = '

            El l

            És recomanable que configureu el PHP amb un límit superior, com ara 16 MB, sempre que sigui possible. Hi ha diverses maneres de fer això:

            1. Si podeu, recompileu el PHP amb --enable-memory-limit. Això permetrà que Moodle defineixi el límit de memòria per si mateix.
            2. -
            3. Si teniu accés al fitxer php.ini, podeu canviar el paràmetre memory_limit a 16M. Si no hi teniu accés podeu demanar al vostre administrador que ho faci ell.
            4. +
            5. Si teniu accés al fitxer php.ini, podeu canviar el paràmetre memory_limit a 16M. Si no hi teniu accés podeu demanar al vostre administrador que ho faci ell.
            6. En alguns servidors PHP podeu crear un fitxer .htaccess dins del directori de Moodle amb aquesta línia:

              php_value memory_limit 16M

              -

              Tanmateix, en alguns servidors això farà que no funcioni cap pàgina PHP (es visualitzaran errors) en el qual cas hauríeu de suprimir el fitxer .htaccess.

            7. +

              Tanmateix, en alguns servidors això farà que no funcioni cap pàgina PHP (es visualitzaran errors) en el qual cas hauríeu de suprimir el fitxer .htaccess.

            '; -$string['mysqlextensionisnotpresentinphp'] = 'El PHP no s\'ha configurat correctament amb l\'extensió MySQL per tal que es pugui comunicar amb MySQL. Comproveu el fitxer php.ini o recompileu el PHP.'; $string['pass'] = 'Correcte'; $string['phpversion'] = 'Versió PHP'; $string['phpversionerror'] = 'La versió del PHP ha de ser com a mínim la 4.1.0'; diff --git a/lang/ca/lesson.php b/lang/ca/lesson.php index 9e7ab9e4714..fb9b962ff8f 100644 --- a/lang/ca/lesson.php +++ b/lang/ca/lesson.php @@ -1,115 +1,42 @@ firstname {$a->lastname}'; -$string['completed'] = 'Completat'; $string['confirmdeletionofthispage'] = 'Confirma la supressió d\'aquesta pàgina'; $string['congratulations'] = 'Felicitacions: heu arribat al final de la lliçó'; $string['continue'] = 'Continua'; -$string['continuetoanswer'] = 'Continua per canviar respostes.'; -$string['correctanswerjump'] = 'Salt de resposta correcta'; -$string['correctanswerscore'] = 'Puntuació de resposta correcta'; -$string['correctresponse'] = 'Resposta correcta'; -$string['customscoring'] = 'Puntuació personalitzada'; $string['deadline'] = 'Data límit'; -$string['deleteattempts'] = 'Esborra els intents de l\'estudiant per aquesta lliçó (id d\'usuari)'; $string['deleting'] = 'S\'està suprimint'; $string['deletingpage'] = 'S\'està suprimint la pàgina: $a'; $string['description'] = 'Descripció'; -$string['detailedstats'] = 'Estadístiques detallades'; -$string['didnotanswerquestion'] = 'No heu respost aquesta pregunta.'; -$string['didnotreceivecredit'] = 'No heu rebut crèdit'; -$string['displayhighscores'] = 'Mostra les puntuacions més altes'; -$string['displayinleftmenu'] = 'Voleu mostrar-ho al menú esquerre?'; -$string['displayleftmenu'] = 'Mostra el menú esquerre'; $string['displayofgrade'] = 'Visualització de la qualificació (només estudiants)'; -$string['displayreview'] = 'Mostra el botó de revisió'; -$string['displayscorewithessays'] = 'Heu aconseguit $a->score punts de $a->tempmaxgrade per a les preguntes puntuades automàticament.
            Les vostres $a->essayquestions preguntes d\'assaig es puntuaran i s\'afegiran a la puntuació final més endavant.

            La vostra puntuació actual, sense les preguntes d\'assaig, és $a->score de $a->grade'; -$string['displayscorewithoutessays'] = 'La vostra puntuació és $a->score (de $a->grade).'; -$string['editlessonsettings'] = 'Edita els paràmetres de la lliçó'; -$string['editpagecontent'] = 'Edita els continguts d\'aquesta pàgina'; -$string['email'] = 'Correu electrònic'; -$string['emailallgradedessays'] = 'Envia per correu TOTS
            els assaigs puntuats'; -$string['emailgradedessays'] = 'Envia per correu els assaigs puntuats'; -$string['emailsuccess'] = 'Enviat correu satisfactòriament'; $string['endofbranch'] = 'Final de la ramificació'; -$string['endofclustertitle'] = 'Final de clúster'; $string['endoflesson'] = 'Final de la lliçó'; -$string['enteredthis'] = 'ho ha escrit.'; -$string['entername'] = 'Escriviu un àlies a la llista de puntuacions màximes'; -$string['enterpassword'] = 'Escriviu la contrasenya:'; -$string['eolstudentoutoftime'] = 'Heu esgotat el vostre temps per completar aquesta lliçó. És possible que la darrera resposta no s\'hagi comptat si l\'heu donada després que s\'hagi acabat el temps.'; -$string['eolstudentoutoftimenoanswers'] = 'No heu respost cap pregunta. La vostra puntuació és de 0.'; -$string['essay'] = 'Assaig'; -$string['essayemailsubject'] = 'Puntuació de la pregunta $a question'; -$string['essays'] = 'Assaigs'; -$string['essayscore'] = 'Puntuació de l\'assaig'; $string['fileformat'] = 'Format de fitxer'; $string['firstanswershould'] = 'La primera resposta hauria de saltar a la pàgina \"Correcta\"'; -$string['firstwrong'] = 'Com que la resposta no és correcta no aconseguiu cap punt. Encara que no obtingueu cap altre punt, voleu seguir provant-ho, ni que sigui per aprendre?'; -$string['gobacktolesson'] = 'Torna a la lliçó'; -$string['grade'] = 'Qualifica'; -$string['gradeessay'] = 'Qualifica les preguntes d\'assaig'; $string['gradeis'] = 'La qualificació és $a'; $string['handlingofretakes'] = 'Gestió de les repeticions'; -$string['havenotgradedyet'] = 'Encara no qualificat.'; $string['here'] = 'aquí'; -$string['highscore'] = 'Puntuació màxima'; -$string['hightime'] = 'Temps màxim'; $string['importquestions'] = 'Importa preguntes'; $string['jump'] = 'Salt'; -$string['jumptsto'] = 'Salta a'; -$string['leftduringtimed'] = 'Heu abandonat una lliçó cronometrada.
            Feu clic a Continua per tornar-la a començar.'; -$string['leftduringtimednoretake'] = 'Heu abandonat una lliçó cronometrada i no està permès continuar-la o torna-la a fer.'; -$string['lesson'] = ' Lliçó $a'; -$string['lessonclosed'] = 'La lliçó es va tancar el $a.'; -$string['lessondefault'] = 'Usa els paràmetres d\'aquesta lliço com els valors per defecte'; -$string['lessonmenu'] = 'Menú de la lliçó'; -$string['lessonopen'] = 'La lliçó s\'obrirà el $a.'; -$string['lessonstats'] = 'Estadístiques de la lliçó'; -$string['loginfail'] = 'Accés denegat, torneu-ho a provar...'; -$string['lowscore'] = 'Puntuació més baixa'; -$string['lowtime'] = 'Temps més baix'; -$string['mainmenu'] = 'Menú principal'; -$string['matchesanswer'] = 'Coincideix amb la resposta'; -$string['maxhighscores'] = 'Nombre de puntuacions màximes mostrades'; $string['maximumnumberofanswersbranches'] = 'Nombre màxim de respostes/ramificacions'; $string['maximumnumberofattempts'] = 'Nombre màxim d\'intents'; -$string['maxtime'] = 'Límit de temps (minuts)'; -$string['maxtimewarning'] = 'Us queden $a minuts per acabar la lliçó.'; $string['minimumnumberofquestions'] = 'Nombre màxim de preguntes'; -$string['modattempts'] = 'Permet a l\'estudiant la revisió'; -$string['modattemptsnoteacher'] = 'No podeu fer la revisió dels estudiants.'; $string['modulename'] = 'Lliçó'; $string['modulenameplural'] = 'Lliçons'; $string['movepagehere'] = 'Mou la pàgina aquí'; @@ -117,122 +44,46 @@ $string['moving'] = 'S\'est $string['movingtonextpage'] = 'S\'està movent a la pàgina següent'; $string['multianswer'] = 'Multiresposta'; $string['multipleanswer'] = 'Múltiples respostes'; -$string['nameapproved'] = 'Non autoritzat'; -$string['namereject'] = 'El nom que heu escrit ha estat rebutjat.
            Trieu-ne un altre.'; $string['nextpage'] = 'Pàgina següent'; $string['noanswer'] = 'No s\'ha donat cap resposta'; $string['noattemptrecordsfound'] = 'No s\'ha trobat cap registre d\'intents: no hi ha qualificació.'; -$string['nocommentyet'] = 'Encara no comentat.'; -$string['nohighscores'] = 'Sense puntuacions màximes'; -$string['nooneansweredcorrectly'] = 'Ningú ha contestat correctament.'; -$string['nooneansweredthisquestion'] = 'Ningú ha contestat aquesta pregunta.'; -$string['noonecheckedthis'] = 'Ningú ha contestat això.'; -$string['nooneenteredthis'] = 'Ningú ha escrit això.'; -$string['noretake'] = 'No podeu tornar a fer aquesta lliçó.'; $string['normal'] = 'Normal: segueix el camí de la lliçó'; -$string['notcompleted'] = 'No completada'; $string['notdefined'] = 'No està definit'; -$string['nothighscore'] = 'No heu aconseguit la $a posició a la llista de puntuacions màximes.'; $string['notitle'] = 'Sense títol'; $string['numberofcorrectanswers'] = 'Nombre de respostes correctes: $a'; $string['numberofcorrectmatches'] = 'Nombre d\'aparellaments correctes'; $string['numberofpagestoshow'] = 'Nombre de pàgines (targetes) per mostrar'; $string['numberofpagesviewed'] = 'Nombre de pàgines visualitzades: $a'; -$string['ongoing'] = 'Mostra la puntuació acumulada'; -$string['ongoingcustom'] = 'Aquesta lliçó us pot donar $a->grade punts. Fins ara n\'heu aconseguit $a->score de $a->currenthigh.'; -$string['ongoingnormal'] = 'Heu contestat correctament $a->correct preguntes d\'un total de $a->viewed .'; -$string['or'] = 'O'; $string['ordered'] = 'Ordenat'; $string['outof'] = 'de $a'; -$string['outoftime'] = 'Temps esgotat'; -$string['overview'] = 'Revisió'; $string['page'] = 'Pàgina: $a'; $string['pagecontents'] = 'Continguts de la pàgina'; $string['pages'] = 'Pàgines'; $string['pagetitle'] = 'Títol de la pàgina'; -$string['password'] = 'Contrasenya'; -$string['passwordprotectedlesson'] = '$a és una lliçó protegida per contrasenya.'; $string['pleasecheckoneanswer'] = 'Si us plau, marqueu una resposta'; $string['pleasecheckoneormoreanswers'] = 'Si us plau, marqueu una o més respostes'; $string['pleaseenteryouranswerinthebox'] = 'Si us plau, introduïu la resposta al quadre'; $string['pleasematchtheabovepairs'] = 'Si us plau, relacioneu les parelles de dalt'; -$string['pointsearned'] = 'Punts aconseguits'; -$string['postsuccess'] = 'Missatge enviat correctament'; -$string['practice'] = 'Lliçó de pràctica'; -$string['previouspage'] = 'Pàgina anterior'; -$string['question'] = 'Pregunta'; -$string['questionoption'] = 'Opció de pregunta '; +$string['questionoption'] = 'Opció de pregunta'; $string['questiontype'] = 'Tipus de pregunta'; -$string['randombranch'] = 'Pàgina de ramificació aleatòria'; -$string['randompageinbranch'] = 'Pregunta aleatòria en una ramificació'; -$string['rank'] = 'Rang'; $string['reached'] = 'S\'ha aconseguit'; -$string['receivedcredit'] = 'Crèdit aconseguit'; $string['redisplaypage'] = 'Torna a mostrar la pàgina'; -$string['report'] = 'Informe'; $string['response'] = 'Reacció'; -$string['returnmainmenu'] = 'Torna al menú principal'; -$string['returntocourse'] = 'Torna al curs'; -$string['reviewlesson'] = 'Revisa la lliçó'; -$string['reviewquestionback'] = 'Sí, vull tornar-ho a provar'; -$string['reviewquestioncontinue'] = 'No, vull anar a la pregunta següent'; $string['sanitycheckfailed'] = 'La comprovació ha fallat: S\'ha suprimit aquest intent.'; -$string['savechanges'] = 'Desa els canvis'; -$string['savechangesandeol'] = 'Desa tots els canvis i ves al final de la lliçó.'; $string['savepage'] = 'Desa la pàgina'; -$string['score'] = 'Puntuació'; -$string['scores'] = 'Puntuacions'; -$string['secondpluswrong'] = 'Incorrecte de nou. Voleu tornar-ho a provar?'; $string['showanunansweredpage'] = 'Mostra una pàgina no contestada'; $string['showanunseenpage'] = 'Mostra una pàgina no vista'; $string['singleanswer'] = 'Només una resposta'; -$string['slideshow'] = 'Diapositives'; -$string['slideshowbgcolor'] = 'Color de fons de les diapositives'; -$string['slideshowheight'] = 'Alçada de la diapositiva'; -$string['slideshowwidth'] = 'Amplada de la diapositiva'; -$string['startlesson'] = 'Comença la lliçó'; -$string['studentattemptlesson'] = ' Intent número $a->attempt de $a->firstname $a->lastname, '; -$string['studentname'] = 'Nom $a '; -$string['studentoneminwarning'] = 'Avís: us queda un minut o menys per acabar la lliçó.'; -$string['studentoutoftime'] = 'Atenció: heu esgotat el temps d\'aquesta lliçó. No es comptarà la darrera resposta perquè era fora de temps. Premeu el botó Continua per acabar la lliçó.'; -$string['studentresponse'] = 'Resposta de {$a}'; -$string['submitname'] = 'Envia el nom'; -$string['teacherjumpwarning'] = 'En aquesta lliçó s\'utilitza un salt $a->cluster o un salt $a->unseen. Al seu lloc es farà servir un salt a la pàgina següent Entreu com estudiant per comprovar aquests salts.'; -$string['teacherongoingwarning'] = 'La puntuació acumulada només es mostra a l\'estudiant. Entreu com estudiant per comprovar la puntuació acumulada.'; -$string['teachertimerwarning'] = 'El cronòmetre només es mostra als estudiants. Entreu com estudiant per comprovar-ne el funcionament.'; $string['thatsthecorrectanswer'] = 'Aquesta és la resposta correcta'; $string['thatsthewronganswer'] = 'Aquesta resposta és errònia'; $string['thefollowingpagesjumptothispage'] = 'Les pàgines següents salten a aquesta pàgina'; $string['thispage'] = 'Aquesta pàgina'; -$string['timed'] = 'Cronometrat'; -$string['timeremaining'] = 'Temps restant'; -$string['timetaken'] = 'Temps consumit'; -$string['topscorestitle'] = 'Les $a->maxhighscores puntuacions màximes de la lliçó $a->name.'; -$string['treeview'] = 'Vista en arbre'; -$string['unseenpageinbranch'] = 'Pregunta no vista en una ramificació'; -$string['updatefailed'] = 'No s\'ha pogut actualitzar'; -$string['updatesuccess'] = 'Actualització realitzada'; $string['useeditor'] = 'Utilitza l\'editor'; $string['usemaximum'] = 'Utilitza la màxima'; $string['usemean'] = 'Utilitza la mitjana'; -$string['usepassword'] = 'Lliçó protegida per contrasenya'; -$string['viewallpages'] = 'Mostra totes les pàgines'; -$string['viewgrades'] = 'Mostra lesqualificacions'; -$string['viewhighscores'] = 'Mostra la llista de puntuacions màximes.'; -$string['viewlessonstats'] = 'Mostra les estadístiques de la lliçó'; -$string['waitpostscore'] = 'Espereu mentre s\'actualitza la màxima puntuació...'; -$string['welldone'] = 'Molt bé'; -$string['whatdofirst'] = 'Què voleu fer primer?'; -$string['wronganswerjump'] = 'Salt de resposta errònia'; -$string['wronganswerscore'] = 'Puntuació de resposta errònia'; -$string['wrongresponse'] = 'Resposta errònia'; -$string['youhavereceived'] = 'Heu rebut $a->score punts de $a->outof per aquesta pregunta d\'assaig.'; $string['youhaveseen'] = 'Ja heu vist més d\'una pàgina d\'aquesta lliçó.
            Voleu començar a la darrera pàgina que vau veure?'; -$string['youmadehighscore'] = 'Heu aconseguit la posició $a en la llista de puntuacions màximes.'; $string['youranswer'] = 'La vostra resposta'; $string['yourcurrentgradeis'] = 'La vostra puntuació actual és $a'; -$string['yourgradeisnow'] = 'La vostra puntuació de la lliçó és $a'; -$string['yourresponse'] = 'La vostra resposta'; $string['youshouldview'] = 'Hauríeu de veure almenys: $a'; ?> diff --git a/lang/ca/message.php b/lang/ca/message.php deleted file mode 100644 index 76beb0d371f..00000000000 --- a/lang/ca/message.php +++ /dev/null @@ -1,61 +0,0 @@ - diff --git a/lang/ca/moodle.php b/lang/ca/moodle.php index 5a5ce7446b2..d54211a215e 100755 --- a/lang/ca/moodle.php +++ b/lang/ca/moodle.php @@ -1,5 +1,5 @@ (deixeu en blanc per desar-los al directori per defecte del curs)'; -$string['backuptakealook'] = 'Si us plau doneu una ullada al registre de la còpia: -$a'; $string['backupuserfileshelp'] = 'Trieu si voleu que els fitxers dels usuaris (p. e. la imatge del perfil) s\'incloguin a les còpies de seguretat automàtiques'; $string['backupusershelp'] = 'Trieu si voleu incloure tots els usuaris del servidor o només els necessaris per a cada curs.'; $string['backupversion'] = 'Versió de la còpia'; -$string['blockconfiga'] = 'S\'està configurant un bloc $a'; -$string['blockconfigbad'] = 'Aquest bloc no s\'ha implementat correctament i no pot proporcionar una interfície de configuració.'; $string['blockdeleteconfirm'] = 'Aneu a suprimir completament el bloc \'$a\'. Això`suprimira completament tots els registres de la base de dades associats amb aquest bloc. Esteu SEGUR que voleu continuar?'; $string['blockdeletefiles'] = 'S\'han suprimit tots els registres de la base de dades associats amb el bloc \'$a->block\'. Per tal de completar la supressió (i impedir que el bloc es reinstal·li automàticament), ara hauríeu de suprimir aquest directori del servidor: $a->directory'; $string['blocks'] = 'Blocs'; -$string['blocksaddedit'] = 'Afegeix/edita blocs'; $string['blocksetup'] = 'S\'estan configurant les taules de blocs'; $string['blocksuccess'] = 'S\'han configurat correctament les taules $a'; $string['bycourseorder'] = 'Curs'; @@ -142,27 +126,14 @@ $string['checkingcourse'] = 'S\'est $string['checkinginstances'] = 'S\'estan comprovant les instàncies'; $string['checkingsections'] = 'S\'estan comprovant les seccions'; $string['checklanguage'] = 'Comprova l\'idioma'; -$string['childcoursenotfound'] = 'No s\'ha trobat el curs fill'; $string['choose'] = 'Tria'; $string['choosecourse'] = 'Tria un curs'; -$string['chooseenrolmethod'] = 'Mètode d\'inscripció principal'; $string['chooselivelogs'] = 'O observeu els registres en directe'; $string['chooselogs'] = 'Trieu quins registres voleu veure'; $string['choosereportfilter'] = 'Tria un filtre per a l\'informe'; $string['choosetheme'] = 'Tria tema'; $string['chooseuser'] = 'Tria un usuari'; $string['city'] = 'Població'; -$string['clambroken'] = 'L\'administrador ha habilitat la comprovació de virus, però hi ha algun error de configuració.
            El vostre fitxer NO s\'ha pogut penjar. S\'ha enviat un correu de notificació a l\'administrador per tal que pugui arreglar-ho.
            Proveu a penjar el fitxer en un altre moment.'; -$string['clamdeletedfile'] = 'S\'ha suprimit el fitxer'; -$string['clamdeletedfilefailed'] = 'No s\'ha pogut suprimir el fitxer'; -$string['clamemailsubject'] = '$a :: Notificació Clam AV'; -$string['clamfailed'] = 'No s\'ha pogut executar Clam AV. El missatge d\'error retornat es $a. Heus ací la sortida de Clam:'; -$string['clamlost'] = 'Moodle ha estat configurat per executar Clam amb cada fitxer que es pengi, pero el camí de Clam AV proporcionat, $a, no és vàlid.'; -$string['clamlostandactinglikevirus'] = 'A més a més Moodle ha estat configurat de manera que si Clam no es pot executar, els fitxers es tracten com si fossin virus. Això significa que els estudiants no podran penjar cap fitxer mentre no solucioneu el problema. '; -$string['clammovedfile'] = 'S\'ha mogut el fitxer al directori de quarantena especificat. La nova ubicació és $a.'; -$string['clammovedfilebasic'] = 'S\'ha mogut el fitxer a un directori de quarantena.'; -$string['clamquarantinedirfailed'] = 'No es pot moure el fitxer al directori de quarantena especificat $a. Fins que solucioneu aquest problema els fitxers infectats seran suprimits.'; -$string['clamunknownerror'] = 'Error desconegut de Clam.'; $string['cleaningtempdata'] = 'S\'estan netejant les dades temporals'; $string['clicktochange'] = 'feu clic per canviar'; $string['closewindow'] = 'Tanca aquesta finestra'; @@ -170,18 +141,12 @@ $string['comparelanguage'] = 'Compara i edita l\'idioma actual'; $string['complete'] = 'Complet'; $string['configallowunenroll'] = 'Si seleccioneu \"Sí\", aleshores els estudiants poden esborrar-se ells mateixos dels cursos quan vulguin. En cas contrari no els és permès i aquest procés és controlat únicament pels professors i els administradors.'; -$string['configallusersaresitestudents'] = 'En les activitats de la pàgina principal d\'aquest lloc, cal considerar com a estudiants TOTS els usuaris? Si la vostra resposta és \"Sí\", aleshores es permetrà participar com a estudiants en aquestes activitats tots els usuaris que hagin confirmat el seu compte. Si la resposta es \"No\", aleshores només podran prendre part en aquestes activitats aquells usuaris que ja siguin participants d\'algun curs. Només poden actuar com a professors d\'aquestes activitats de la pàgina principal els administradors i aquells professors que hi siguin assignats.'; $string['configautologinguests'] = 'Cal connectar un usuari automàticament com a visitant quan entra en un curs que permet l\'accés als visitants?'; $string['configcachetext'] = 'En llocs grans o llocs que utilitzen filtres de text, aquest paràmetre pot accelerar realment les coses. S\'emmagatzemen còpies del text ja processat durant el temps que s\'especfica aquí. Si configureu un temps massa breu, de fet el funcionament es pot alentir una mica, però si configureu un temps massa llarg pot implicar que els texts triguin massa a refrescar-se (amb nous enllaços, per exemple).'; -$string['configclamactlikevirus'] = 'Tracta els fitxers com si fossin virus'; -$string['configclamdonothing'] = 'Tracta els fitxers com si fossin bons'; -$string['configclamfailureonupload'] = 'Si heu configurat Clam per escanejar els fitxers que es pengin, però la configuració és incorrecta o no es pot executar per alguna raó desconeguda, com s\'hauria de comportar? Si trieu \'Tracta els fitxers com si fossin virus\', els tots els fitxers es mouran a l\'àrea de quarantena o seran suprimits. Si trieu \'Tracta els fitxers com si fossin bons\', els fitxers es mouran al directori de destinació de la manera normal. En tots dos casos, s\'avisarà als administradors que Clam ha fallat. Si trieu \'Tracta els fitxers com si fossin virus\' i per alguna raó Clam no es pot executar (normalment perquè heu introduït un camí incorrecte), TOTS els fitxers que es pengin es mouran a l\'àrea de quarantena o se suprimiran. Tingueu molt de compte amb aquest paràmetre.'; $string['configcountry'] = 'Si definiu aquí un país, quedarà seleccionat per defecte en els nous comptes. Deixeu-lo en blanc per forçar els usuaris a triar un país.'; -$string['configdbsessions'] = 'Si l\'habiliteu, aquest paràmetre farà que la base de dades emmagatzemi información sobre les sessions actives. Això és útil especialment en llocs grans/molt ocupats o en clusters de servidors. En la majoria de llocs probablement és millor deixar-lo inhabilitat, de manera que s\'utilitzi el disc en lloc de la base de dades. Teniu en compte que si canvieu ara aquest paràmetre desconnectareu tots els usuaris (inclòs vós).'; $string['configdebug'] = 'Si l\'activeu, s\'incrementaran els informes d\'errors de PHP i apareixeran més avisos. Això només és útil per a desenvolupadors.'; $string['configdeleteunconfirmed'] = 'Si esteu utilitzant autenticació per correu electronic, aquest es el període de temps durant el qual s\'acceptarà la resposta de l\'usuari. Després d\'aquest períde, els comptes no confirmats se suprimiran.'; $string['configdigestmailtime'] = 'La gent que vulgui els correus en format resum els rebrà una vegada al dia. Aquest paràmetre controla a quina hora s\'enviarà el resum diari (l\'enviarà el següent cron que s\'executi després d\'aquesta hora).'; -$string['configdisplayloginfailures'] = 'Determinats usuaris visualitzaran informació sobre intents d\'entrada fracassats.'; $string['configenablerssfeeds'] = 'Aquest commutador habilitarà l\'RSS en tot el lloc. Per veure realment cap canvi haureu d\'habilitar també l\'RSS en cada mòdul: aneu als paràmetres dels mòduls en el menú de configuració.'; $string['configenablerssfeedsdisabled'] = 'No està disponible perquè l\'RSS està inhabilitat en tot el lloc. Per habilitar-lo, aneu a les variables en el menú de configuració.'; $string['configerrorlevel'] = 'Trieu la quantitat d\'avisos de PHP que voleu visualitzar. La millor elecció sol ser Normal.'; @@ -202,25 +167,16 @@ $string['configlangdir'] = 'La major part d\'idiomes s\'escriuen d\'esquerra a d $string['configlanglist'] = 'Deixeu en blanc per permetre que els usuaris triïn qualsevol dels idiomes d\'aquesta instal·lació de Moodle. També podeu escurçar el menú d\'idiomes introduint una llista separada per comes amb els codis dels idiomes que vulgueu. Per exemple: ca,es_es,en,fr,it.'; $string['configlangmenu'] = 'Trieu si voleu visualitzar o no el menú d\'idioma de propòsit general a la pàgina inicial, pàgina d\'entrada, etc. Això no afecta la possibilitat que l\'usuari especifiqui l\'idioma de preferència al seu perfil.'; $string['configlocale'] = 'Trieu un locale per al lloc - això afectarà el format i idioma de les dates. Heu de tenir les dades d\'aquest locale instal·lades al sistema operatiu. (ex: ca_ES donarà \'dilluns\', en_US donarà \'monday\' o es_ES donarà \'lunes\'). Si no sabeu què triar deixeu-lo en blanc.'; -$string['configloginhttps'] = 'Si activeu aquest paràmetre Moodle farà servir una connexió segura https només a la pagina d\'entrada (per aconseguir una entrada segura) i tot seguit tornarà als URL http normals que són més ràpids. ALERTA: aquest paràmetre requereix que l\'https estigui habilitat en el servidor web; si no està habilitat podríeu restar fora sense opció d\'entrar al lloc.'; $string['configloglifetime'] = 'Especifiqueu aquí el temps que voleu mantenir els registres d\'activitat dels usuaris. Els registres més vells se suprimiran automàticament. És millor mantenir els registres tan de temps com es pugui, per si els necessiteu, però si teniu el servidor molt ocupat i experimenteu problemes de rendiment, val més que escurceu la vida dels registres.'; $string['configlongtimenosee'] = 'Si els estudiants no han entrat durant molt de temps, se\'ls dóna de baixa dels cursos automàticament. Aquest paràmetre especifica el límit de temps.'; $string['configmaxbytes'] = 'Especifiqueu la mida màxima que poden tenir els fitxers que es pengen en aquest lloc. Aquest paràmetre està limitat pel paràmetre de PHP upload_max_filesize i pel paràmetre d\'Apache LimitRequestBody. Al seu torn, maxbytes limita el rang de mides que es poden triar dins de cada curs o per a cada mòdul.'; $string['configmaxeditingtime'] = 'Especifiqueu el temps que tenen els usuaris per revisar els enviaments dels fòrums, la retroacció dels diaris, etc. Generalment 30 minuts és una bona opció.'; -$string['configmessaging'] = 'Cal habilitar el sistema de missatgeria interna per als usuaris del lloc?'; $string['confignoreplyaddress'] = 'Els correus de vegades s\'envien a nom d\'un usuari (p. ex. els missatges dels fòrums). L\'adreça de correu que especifiqueu aquí s\'utilitzarà en el \"From\" en els casos en què els destinataris no haurien de poder contestar directament a l\'usuari (p. ex. quan un usuari tria de mantenir oculta la seva adreça).'; -$string['confignotifyloginfailures'] = 'Si es registren els intents d\'entrada fracassats, se\'n poden enviar notificacions per correu electrònic. Qui hauria de rebre aquestes notificacions.'; -$string['confignotifyloginthreshold'] = 'Si s\'activen les notificacions sobre intents d\'entrada fracassats, quants intents d\'un usuari o adreça IP cal registrar per enviar la notificació.'; $string['configopentogoogle'] = 'Si habiliteu aquest paràmetre, llavors Google podrà entrar al vostre lloc com a Visitant. A més a més, la gent que vagi a parar al vostre lloc a través d\'una recerca en Google, hi entrarà automàticament com a Visitant. Adoneu-vos que això només proporciona accés transparent als cursos que permeten l\'accés als visitants. '; -$string['configpathtoclam'] = 'Camí de Clam AV. Probablement /usr/bin/clamscan o /usr/clamdscan o quelcom semblant. Cal definir aquest paràmetre per tal d\'executar Clam AV.'; -$string['configproxyhost'] = 'Si aquest servidor accedeix a la xarxa a través d\'un intermediari (proxy, p. e. un tallafocs), escriviu aquí el nom del servidor intermediari i el port. En cas contrari deixeu-lo en blanc.'; -$string['configquarantinedir'] = 'Si voleu que Clam AV mogui els fitxers infectats a un directori de quarantena, introduïu-lo aquí. El servidor web ha de tenir-hi permís d\'escriptura. Si deixeu aquest camp en blanc o introduïu un directori inexistent o no s\'hi pot escriure, els fitxers infectats se suprimiran. No poseu la barra final.'; -$string['configrunclamonupload'] = 'Cal executar Clam AV quan es penja un fitxer? Heu de definir un camí correcte en pathtoclam perquè funcioni. (Clam AV és un escanejador de virus gratuït que podeu obtenir en http://www.clamav.net/)'; +$string['configproxyhost'] = 'Si aquest servidor accedeix a la xarxa a través d\'un intermediari (proxy, p. e. un tallafocs), escriviu aquí el nom del servidor intermediari i el port. En cas contrari deixeu-lo en blanc.'; $string['configsecureforms'] = 'Moodle pot fer servir un nivell addicional de seguretat a l\'hora d\'acceptar dades dels formularis web. Si habiliteu aquesta opció, la variable HTTP_REFERER del navegador es compara amb l\'adreça real del formulari. Això pot causar problemes en molt pocs casossi l\'usuari fa servir un tallafocs (p. e. Zonealarm) configurat per eliminar l\'HTTP_REFERER del tràfic web. Els símptomes són que us quedeu encallats en un formulari. Si els vostres usuaris tenen problemes amb la pàgina d\'entrada, per exemple, potser vodreu inhabilitar aquest paràmetre, tot i que això podria deixar el vostre lloc més obert als atacs de força bruta que intenten esbrinar una contrasenya. En cas de dubte deixeu aquest paràmetre configurat com \'Sí\'.'; $string['configsessioncookie'] = 'Aquest paràmetre personalitza el nom de la galeta utilitzada per les sessions de Moodle. Això és opcional, i només resulta útil per evitar que es confonguin les galetes quan hi ha més d\'una còpia de Moodle executant-se dins del mateix lloc web.'; $string['configsessiontimeout'] = 'Quan els usuaris que han entrat en aquest lloc estan inactius molt de temps (no carreguen pàgines) llavors se\'l fa sortir automàticament (se\'ls tanca la sessió). Aquesta variable especifica quant de temps poden estar inactius.'; -$string['configshowsiteparticipantslist'] = 'Tots aquests estudiants i professors apareixeran a la llista de participants del lloc. Qui podrà veure aquesta llista de participants?'; -$string['configsitepolicy'] = 'Si teniu una normativa que tots els usuaris han de veure i signar abans d\'entrar en aquest lloc, especifiqueu l\'URL aquí. Si no, deixeu el camp en blanc. L\'URL pot apuntar enlloc. Una destinació adequada podria ser un fitxer dins de l\'àrea de fitxers del lloc, p. ex. http://yoursite/file.php/1/policy.html'; $string['configslasharguments'] = 'Els fitxers (fitxers d\'imatges, fitxers penjats, etc.) passen a través d\'un script que utilitza arguments separats per barres (la segona opció aquí). Aquest mètode facilita que els fitxers restin més fàcilment a la memòria cau dels navegadors, servidors intermediaris, etc. Malauradament alguns servidors PHP no permeten aquest mètode, així que si teniu problemes per veure fitxers penjats o imatges (p. e. les fotos dels usuaris), poseu aquesta variable en la primera opció.'; $string['configsmtphosts'] = 'Escriviu el nom complet d\'un o més servidors locals de SMTP que Moodle ha d\'utilitzar per enviar correu (ex: \'mail.a.com\' or \'mail.a.com;mail.b.com\'). Si el deixeu en blanc, Moodle utilitzarà el mètode PHP per defecte per enviar correu.'; $string['configsmtpuser'] = 'Si dalt heu especificat un servidor SMTP i aquest requereix autenticació, introduïu aquí el nom d\'usuari i la contrasenya.'; @@ -237,14 +193,12 @@ $string['confirmednot'] = 'Encara no s\'ha confirmat el vostre registre!'; $string['continue'] = 'Continua'; $string['continuetocourse'] = 'Feu clic aquí per entrar al curs'; $string['cookiesenabled'] = 'Les galetes han d\'estar habilitades en el vostre navegador'; -$string['cookiesnotenabled'] = 'Malauradament no teniu les galetes habilitades al navegador'; $string['copy'] = 'copia'; $string['copyingcoursefiles'] = 'S\'estan copiant els fitxers del curs'; $string['copyinguserfiles'] = 'S\'estan copiant els fitxers d\'usuari'; $string['copyingzipfile'] = 'S\'està copiant el fitxer zip'; $string['copyrightnotice'] = 'Copyright'; $string['cost'] = 'Cost'; -$string['costdefault'] = 'Cost per defecte'; $string['country'] = 'País'; $string['course'] = 'Curs'; $string['courseavailable'] = 'Aquest curs està disponible per als estudiants'; @@ -259,29 +213,24 @@ $string['coursegrades'] = 'Qualificacions del curs'; $string['courseinfo'] = 'Informació del curs'; $string['courserestore'] = 'Restauració del curs'; $string['courses'] = 'Cursos'; -$string['coursescategory'] = 'Cursos de la mateixa categoria'; -$string['coursestaught'] = 'Cursos en els quals heu ensenyat'; $string['courseupdates'] = 'Actualitzacions del curs'; $string['courseuploadlimit'] = 'Límit de càrrega del curs'; $string['create'] = 'Crea'; $string['createaccount'] = 'Crea el meu compte'; $string['createfolder'] = 'Crea una carpeta en $a'; $string['createuserandpass'] = 'Crea un nou nom d\'usuari i una contrasenya per entrar-hi'; -$string['createziparchive'] = 'Comprimeix-los en un fitxer zip'; -$string['creatingblocks'] = 'S\'estan creant blocs'; +$string['createziparchive'] = 'crea un fitxer zip'; $string['creatingcategoriesandquestions'] = 'S\'estan creant categories i preguntes'; $string['creatingcoursemodules'] = 'S\'estan creant els mòduls del curs'; $string['creatingevents'] = 'S\'estan creant els esdeveniments'; $string['creatinggroups'] = 'S\'estan creant els grups'; $string['creatinglogentries'] = 'S\'estan creant les entrades de registre'; -$string['creatingmetacoursedata'] = 'S\'està creant la informació de metacurs'; $string['creatingnewcourse'] = 'S\'està creant un curs nou'; $string['creatingscales'] = 'S\'estan creant les escales'; $string['creatingsections'] = 'S\'estan creant les seccions'; $string['creatingtemporarystructures'] = 'S\'estan creant estructures temporals'; $string['creatingusers'] = 'S\'estan creant els usuaris'; $string['creatingxmlfile'] = 'S\'està creant el fitxer XML'; -$string['currency'] = 'Moneda'; $string['currentcourseadding'] = 'Curs actual, s\'hi estan afegint dades'; $string['currentcoursedeleting'] = 'Curs actual, primer se suprimirà'; $string['currentlanguage'] = 'Idioma actual'; @@ -296,7 +245,6 @@ $string['databasesuccess'] = 'La base de dades s\'ha actualitzat amb $string['databaseupgradebackups'] = 'La versió de les còpies de seguretat és ara $a'; $string['databaseupgradeblocks'] = 'La versió dels blocs és ara $a'; $string['databaseupgrades'] = 'S\'està actualitzant la base de dades'; -$string['date'] = 'Data'; $string['datemostrecentfirst'] = 'Data - començant pel més recent'; $string['datemostrecentlast'] = 'Data - el més recent al final'; $string['day'] = 'dia'; @@ -311,7 +259,6 @@ $string['defaultcourseteacher'] = 'Professor'; $string['defaultcourseteachers'] = 'Professors'; $string['delete'] = 'Suprimeix'; $string['deleteall'] = 'Suprimeix-ho tot'; -$string['deletecategorycheck'] = 'Esteu absolutament segur que voleu suprimir completament la categoria \'$a\'?
            Els cursos que contingui aquesta categoria es traslladaran a la categoria pare, si n\'hi ha, o a Miscel·lània.'; $string['deletecheck'] = 'Suprimiu $a ?'; $string['deletecheckfiles'] = 'Esteu absolutament segur que voleu suprimir aquests fitxers?'; $string['deletecheckfull'] = 'Esteu absolutament segur que voleu suprimir completament $a ?'; @@ -329,9 +276,6 @@ $string['deletingexistingcoursedata'] = 'S\'estan suprimint les dades existents $string['deletingolddata'] = 'S\'estan suprimint dades antigues'; $string['department'] = 'Departament'; $string['description'] = 'Descripció'; -$string['detailedless'] = 'Menys detallat'; -$string['detailedmore'] = 'Més detallat'; -$string['directorypaths'] = 'Camins dels directoris'; $string['disable'] = 'Inhabilitar'; $string['displayingfirst'] = 'Només es mostren els primers $a->count $a->things '; $string['displayingrecords'] = 'S\'estan visualitzant $a registres'; @@ -345,35 +289,17 @@ $string['doyouagree'] = 'Heu llegit aquestes condicions i les enteneu?'; $string['duplicate'] = 'Duplica'; $string['duplicatinga'] = 'S\'està duplicant: $a'; $string['duplicatingain'] = 'S\'està duplicant $a->what en $a->in'; -$string['edhelpbgcolor'] = 'Definiu el color de fons de l\'àrea d\'edició
            Exemples de valors vàlids: #ffffff o white.'; -$string['edhelpcleanword'] = 'Aquest paràmetre habilita o inhabilita el filtre específic per a format de Word.'; -$string['edhelpenablespelling'] = 'Habiliteu o inhabiliteu la verificació de l\'ortografia. Si l\'habiliteu, cal tenir instal·lat aspell al servidor.'; -$string['edhelpfontfamily'] = 'La propietat font-family és una llista de noms de famílies de fonts o noms genèrics de famílies. Els noms de famílies s\'han de separar amb comes.'; -$string['edhelpfontlist'] = 'Definiu els tipus de lletra utilitzats en el menú desplegable de l\'editor.'; -$string['edhelpfontsize'] = 'La mida de lletra per defecte defineix la mida d\'un tipus de lletra.
            Per exemple són valors vàlids els següents: medium, large, smaller, larger, 10pt, 11px.'; $string['edit'] = 'Edita $a'; $string['editcoursesettings'] = 'Edita els paràmetres del curs'; $string['editfiles'] = 'Edita fitxers'; $string['editgroupprofile'] = 'Edita el perfil del grup'; $string['editinga'] = 'S\'està editant $a'; -$string['editingteachershort'] = 'Editor'; -$string['editlock'] = 'Aquest valor no es pot editar!'; $string['editmyprofile'] = 'Edita perfil'; -$string['editorbgcolor'] = 'Color de fons'; -$string['editorcleanonpaste'] = 'Neteja l\'HTML del Word en enganxar'; -$string['editorcommonsettings'] = 'Paràmetres comuns'; -$string['editordefaultfont'] = 'Lletra per defecte'; -$string['editorenablespelling'] = 'Activa la verificació de l\'ortografia'; -$string['editorfontlist'] = 'Llista de tipus de lletra'; -$string['editorfontsize'] = 'Mida de lletra per defecte'; -$string['editorresettodefaults'] = 'Restaura valors per defecte'; -$string['editorsettings'] = 'Paràmetres de l\'editor'; $string['editsummary'] = 'Edita un resum'; $string['editthisactivity'] = 'Edita aquesta activitat'; $string['editthiscategory'] = 'Edita aquesta categoria'; $string['edituser'] = 'Edita els comptes d\'usuari'; $string['email'] = 'Correu electrònic'; -$string['emailactive'] = 'Correu electrònic activat'; $string['emailagain'] = 'Correu electrònic (una altra vegada)'; $string['emailconfirm'] = 'Confirmació del compte'; $string['emailconfirmation'] = '$a->firstname, @@ -390,26 +316,22 @@ de la finestra del vostre navegador web. Si necessiteu ajuda, si us plau contacteu amb l\'administrador del lloc, $a->admin,'; $string['emailconfirmationsubject'] = '$a: confirmació de compte'; -$string['emailconfirmsent'] = '

            S\'ha enviat un correu a la vostra adreça $a

            -

            Conté instruccions senzilles per completar el registre.

            -

            Si seguiu tenint problemes, contacteu amb l\'administrador del lloc.

            '; +$string['emailconfirmsent'] = '

            S\'ha enviat un correu a la vostra adreça $a +

            Conté instruccions senzilles per completar el registre. +

            Si seguiu tenint problemes, contacteu amb l\'administrador del lloc.'; $string['emaildigest'] = 'Tipus de resum de correu'; $string['emaildigestcomplete'] = 'Complet (correu diari amb missatges complets)'; $string['emaildigestoff'] = 'Sense resum (un correu per cada missatge dels fòrums)'; $string['emaildigestsubjects'] = 'Assumptes (correu diari només amb els assumptes)'; $string['emaildisable'] = 'Aquesta adreça de correu està inhabilitada.'; -$string['emaildisableclick'] = 'Feu clic aquí per inhabilitar l\'enviament de correu a aquesta adreça'; $string['emaildisplay'] = 'Mostra el correu electrònic'; $string['emaildisplaycourse'] = 'Permet només als altres membres del curs veure la meva adreça de correu'; $string['emaildisplayno'] = 'Oculta a tothom la meva adreça de correu electrònic'; $string['emaildisplayyes'] = 'Permet que tothom vegi la meva adreça de correu'; $string['emailenable'] = 'Aquesta adreça de correu està habilitada.'; -$string['emailenableclick'] = 'Feu clic aquí per tornar a habilitar l\'enviament de correu a aquesta adreça'; $string['emailexists'] = 'Aquesta adreça de correu ja està registrada.'; $string['emailformat'] = 'Format del correu'; $string['emailmustbereal'] = 'Nota: l\'adreça de correu ha de ser una adreça real'; -$string['emailnotallowed'] = 'Les adreces de correu d\'aquests dominis no són permeses ($a)'; -$string['emailonlyallowed'] = 'Aquest correu no és un dels permesos ($a)'; $string['emailpasswordconfirmation'] = '$a->firstname, Algú (probablement vós) ha demanat una nova contrasenya @@ -427,16 +349,14 @@ Si necessiteu ajuda, si us plau contacteu amb l\'administrador del lloc, $a->admin,'; $string['emailpasswordconfirmationsubject'] = '$a: confirmació de canvi de contrasenya'; $string['emailpasswordconfirmsent'] = 'Se us ha enviat un correu a la vostra adreça $a. -
            Conté instruccions molt senzilles per confirmar i completar el canvi de contrasenya. +

            Conté instruccions molt senzilles per confirmar i completar el canvi de contrasenya. Si seguiu tenint problemes, contacteu amb l\'administrador del lloc.'; $string['emailpasswordsent'] = 'Gràcies per confirmar el canvi de contrasenya. -
            Se us ha enviat un correu amb la contrasenya nova a la vostra adreça: $a->email. -
            La contrasenya nova s\'ha generat automàticament - potser voldreu link\">canviar-la per una altra més fàcil de recordar.'; +

            Se us ha enviat un correu amb la contrasenya nova a la vostra adreça: $a->email. +

            La contrasenya nova s\'ha generat automàticament - potser voldreu link>canviar-la per una altra més fàcil de recordar.'; $string['enable'] = 'Habilita'; -$string['encryptedcode'] = 'Codi xifrat'; -$string['enrolledincourse'] = 'Inscrit al curs \"$a\"'; -$string['enrolledincoursenot'] = 'No inscrit al curs \"$a\"'; -$string['enrollfirst'] = 'Per poder usar aquestes activitats del lloc abans heu d\'estar inscrits en algun dels cursos'; +$string['enrolledincourse'] = 'Inscrit al curs '; +$string['enrolledincoursenot'] = 'No inscrit al curs '; $string['enrolmentconfirmation'] = 'Aneu a inscriure-us en aquest curs.
            Esteu segur que voleu fer això?'; $string['enrolmentkey'] = 'Clau d\'inscripció'; $string['enrolmentkeyfrom'] = 'Aquest curs requereix una clau d\'inscripció - una contrasenya
            d\'un sol ús que us ha d\'haver proporcionat $a'; @@ -445,18 +365,13 @@ $string['enrolmentkeyhint'] = 'Aquesta clau d\'inscripci (Una pista: comença per \'$a\''; $string['enrolmentnew'] = 'Nova inscripció en $a'; -$string['enrolmentnewuser'] = '$a->user s\'ha inscrit al curs \"$a->course\"'; $string['enrolmentnointernal'] = 'Les inscripcions manuals no estan habilitades'; -$string['enrolmentnotyet'] = 'No podeu accedir a aquest curs fins
            $a'; $string['enrolments'] = 'Inscripcions'; -$string['enrolperiod'] = 'Durada de la inscripció'; $string['entercourse'] = 'Feu clic per entrar en aquest curs'; $string['enteremailaddress'] = 'Introduïu la vostra adreça de correu per anul·lar la contrasenya anterior i rebre\'n una de nova per correu electrònic.'; -$string['entries'] = 'Entrades'; $string['error'] = 'Error'; $string['errortoomanylogins'] = 'Heu superat el nombre màxim d\'intents d\'entrada. Reinicieu el vostre navegador.'; $string['errorwhenconfirming'] = 'No esteu confirmat perquè s\'ha esdevingut un error. Si heu arribat aquí fent clic en un enllaç d\'un missatge de correu assegureu-vos que la línia del missatge no estava trencada o continuava a sota. En aquest cas probablement ahaureu de copiar i enganxar per reconstruir correctament l\'enllaç.'; -$string['everybody'] = 'Tothom'; $string['executeat'] = 'Executa a'; $string['existing'] = 'Existent'; $string['existingadmins'] = 'Administradors actuals'; @@ -466,11 +381,7 @@ $string['existingcoursedeleting'] = 'Curs existent, primer se suprimir $string['existingcreators'] = 'Creadors de cursos actuals'; $string['existingstudents'] = 'Estudiants inscrits'; $string['existingteachers'] = 'Professors actuals'; -$string['explanation'] = 'Explicació'; -$string['failedloginattempts'] = '$a->attempts intents d\'entrada fracassats des de la darrera vegada'; -$string['failedloginattemptsall'] = '$a->attempts intents d\'entrada fracassats d\'un total de $a->accounts comptes'; $string['feedback'] = 'Retroacció'; -$string['file'] = 'Fitxer'; $string['filemissing'] = 'Falta $a'; $string['files'] = 'Fitxers'; $string['filesfolders'] = 'Fitxers/carpetes'; @@ -485,12 +396,9 @@ $string['force'] = 'Imposa'; $string['forcedmode'] = 'Mode imposat'; $string['forcelanguage'] = 'Imposa idioma'; $string['forceno'] = 'No imposis'; -$string['forcepasswordchange'] = 'Imposa canvi de contrasenya'; -$string['forcepasswordchangehelp'] = 'L\'usuari haurà de canviar-la la pròxima vegada que es connecti'; $string['forgotten'] = 'Heu oblidat el nom d\'usuari o la contrasenya?'; $string['format'] = 'Format'; $string['formathtml'] = 'Format HTML'; -$string['formatmarkdown'] = 'Format Markdown'; $string['formatplain'] = 'Format text'; $string['formatsocial'] = 'Format social'; $string['formattext'] = 'Autoformat Moodle'; @@ -509,12 +417,10 @@ $string['fullname'] = 'Nom complet'; $string['fullnamedisplay'] = '$a->firstname $a->lastname'; $string['fullprofile'] = 'Perfil complet'; $string['fullsitename'] = 'Nom complet del lloc'; -$string['functiondisabled'] = 'Aquesta funcioonalitat està inhabilitada'; $string['gd1'] = 'GD 1.x instal·lada'; $string['gd2'] = 'GD 2.x instal·lada'; $string['gdneed'] = 'GD ha d\'estar instal·lada per veure aquesta imatge'; $string['gdnot'] = 'GD no està instal·lada'; -$string['go'] = 'Vés'; $string['gpl'] = 'Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com) This program is free software; you can redistribute it and/or modify @@ -577,9 +483,7 @@ $string['hiddensections'] = 'Temes ocults'; $string['hiddensectionscollapsed'] = 'Els temes ocults es mostren en format reduït'; $string['hiddensectionsinvisible'] = 'Els temes ocults són completament invisibles'; $string['hide'] = 'Oculta'; -$string['hideadvancedsettings'] = 'Oculta paràmetres avançats'; $string['hidepicture'] = 'Oculta imatge '; -$string['hidesettings'] = 'Oculta paràmetres'; $string['hits'] = 'Peticions'; $string['hitsoncourse'] = 'Peticions en $a->coursename per $a->username'; $string['hitsoncoursetoday'] = 'Peticions d\'avui en $a->coursename per $a->username'; @@ -595,11 +499,6 @@ $string['htmleditordisabledbrowser'] = 'L\'editor HTML no est $string['htmlformat'] = 'Format HTML'; $string['icqnumber'] = 'Número ICQ'; $string['idnumber'] = 'Número ID'; -$string['importdata'] = 'Importa dades del curs'; -$string['importdataexported'] = 'S\'han exportat amb èxit les dades del curs origen.
            Continueu per importar-les al curs de destinació.'; -$string['importdatafinished'] = 'S\'ha completat la importació. Aneu al vostre curs.'; -$string['importdatafrom'] = 'Seleccioneu un curs per importar-ne les dades:'; -$string['importmetacoursenote'] = 'Utilitzeu aquest formulari per afegir cursos al vostre metacurs (això importarà les inscripcions)'; $string['inactive'] = 'Inactiu'; $string['include'] = 'Inclou'; $string['includeallusers'] = 'Inclou tots els usuaris'; @@ -607,16 +506,13 @@ $string['includecoursefiles'] = 'Inclou els fitxers del curs'; $string['includecourseusers'] = 'Inclou els usuaris del curs'; $string['included'] = 'Inclòs'; $string['includelogentries'] = 'Inclou les entrades del registre'; -$string['includemodules'] = 'Inclou Mòduls'; +$string['includemodules'] = 'Inclou Mòduls'; $string['includeneededusers'] = 'Inclou els usuaris necessaris'; $string['includenoneusers'] = 'No incloguis cap usuari'; $string['includeuserfiles'] = 'Inclou els fitxers dels usuaris'; -$string['info'] = 'Informació'; $string['institution'] = 'Institució'; $string['invalidemail'] = 'L\'adreça de correu no és vàlida'; $string['invalidlogin'] = 'Entrada incorrecta, si us plau torneu a intentar-ho'; -$string['ip_address'] = 'Adreça IP'; -$string['jump'] = 'Salta'; $string['jumpto'] = 'Salta a...'; $string['keep'] = 'Manté'; $string['langltr'] = 'Escriptura d\'esquerra a dreta'; @@ -641,41 +537,32 @@ $string['location'] = 'Localitzaci $string['loggedinas'] = 'Heu entrat com $a'; $string['loggedinnot'] = 'No heu entrat'; $string['login'] = 'Entrada'; -$string['login_failure_logs'] = 'Registre d\'entrades fracassades'; $string['loginas'] = 'Entra com'; $string['loginguest'] = 'Entra com a visitant'; $string['loginsite'] = 'Entra en aquest lloc'; $string['loginsteps'] = 'Hola! L\'accés complet als cursos requereix que dediqueu un minut a la creació d\'un nou compte d\'usuari vàlid en aquest lloc web. Cada curs pot requerir també una \"clau d\'inscripció\" que no necessitareu fins més tard. Els passos que heu de donar són els següents: -

              -
            1. Ompliu el formulari de Nou compte amb les vostres dades.
            2. -
            3. Se us enviarà inmediatament un correu a la vostra adreça electrònica.
            4. -
            5. Llegiu el correu i feu clic en l\'enllaç web inclòs.
            6. -
            7. Es confirmarà el vostre compte i podreu entrar-hi.
            8. -
            9. Llavors, seleccioneu el curs en el qual voleu participar.
            10. -
            11. Si se us demana una \"clau d\'inscripció\", utilitzeu la que us ha donat el professor. Amb això quedareu inscrit al curs.
            12. -
            13. En aquest moment ja tindreu accés complet al curs. En endavant només haureu d\'introduir el vostre nom d\'usuari i la contrasenya (en el formulari d\'aquesta pàgina) per tal d\'entrar i tenir accés a qualsevol curs en el qual estigueu inscrit.
            14. -
            '; -$string['loginstepsnone'] = '

            Per tal de tenir accés complet als cursos us heu de crear un compte d\'usuari.

            -

            Consisteix simplement a triar un nom d\'usuari i una contrasenya amb els quals us identificareu, després, en aquesta pàgina.

            -

            Si algú ja ha triat abans el mateix nom d\'usuari, n\'haureu de provar un altre diferent.

            '; +
              +
            1. Ompliu el formulari de Nou compte amb les vostres dades.
            2. +
            3. Se us enviarà inmediatament un correu a la vostra adreça electrònica.
            4. +
            5. Llegiu el correu i feu clic en l\'enllaç web inclòs.
            6. +
            7. Es confirmarà el vostre compte i podreu entrar-hi.
            8. +
            9. Llavors, seleccioneu el curs en el qual voleu participar.
            10. +
            11. Si se us demana una \"clau d\'inscripció\", utilitzeu la que us ha donat el professor. Amb això quedareu inscrit al curs.
            12. +
            13. En aquest moment ja tindreu accés complet al curs. En endavant només haureu d\'introduir el vostre nom d\'usuari i la contrasenya (en el formulari d\'aquesta pàgina) per tal d\'entrar i tenir accés a qualsevol curs en el qual estigueu inscrit.
            14. +
            '; +$string['loginstepsnone'] = '

            Per tal de tenir accés complet als cursos us heu de crear un compte d\'usuari. +

            Consisteix simplement a triar un nom d\'usuari i una contrasenya amb els quals us identificareu, després, en aquesta pàgina. +

            Si algú ja ha triat abans el mateix nom d\'usuari, n\'haureu de provar un altre diferent.

            '; $string['loginto'] = 'Entrar en $a'; $string['loginusing'] = 'Entreu aquí amb el vostre nom d\'usuari i la contrasenya corresponent'; $string['logout'] = 'Sortida'; $string['logs'] = 'Registres'; -$string['logtoomanycourses'] = '[ url\">més ]'; -$string['logtoomanyusers'] = '[ url\">més ]'; -$string['mailadmins'] = 'Informa administradors'; -$string['mailstudents'] = 'Informa estudiantat'; -$string['mailteachers'] = 'Informa professorat'; $string['mainmenu'] = 'Menú principal'; $string['makeafolder'] = 'Crea una carpeta'; $string['makeeditable'] = 'Si feu \'$a\' editable pel procés del servidor web (p.e. apache), aleshores podreu editar aquest fitxer directament en aquesta pàgina'; $string['manageblocks'] = 'Blocs'; $string['managedatabase'] = 'Base de dades'; $string['managefilters'] = 'Filtres'; -$string['managemeta'] = 'Aquest és un metacurs?'; -$string['managemetadisabled'] = 'Inhabilitat perquè ja és un metacurs'; -$string['managemetaexplan'] = '(Això significa que les inscripcions s\'hereten d\'altres cursos)'; $string['managemodules'] = 'Mòduls'; $string['markedthistopic'] = 'Aquest tema està marcat com a tema actual'; $string['markthistopic'] = 'Marca aquest tema com a tema actual'; @@ -684,20 +571,8 @@ $string['maximumgrade'] = 'Qualificaci $string['maximumshort'] = 'Max'; $string['maximumupload'] = 'Mida màxima de càrrega'; $string['maxsize'] = 'Mida màxima: $a'; -$string['metaaddcourse'] = 'Afegeix aquest curs'; -$string['metaalreadycourses'] = 'Cursos ja assignats'; -$string['metaalreadyhascourses'] = 'Aquest metacurs ja té cursos fills.'; -$string['metaalreadyhasenrolments'] = 'Aquest curs ja té inscripcions normals.'; -$string['metaalreadyinmeta'] = 'Aquest curs ja és part d\'un metacurs.'; -$string['metaassigncourses'] = 'Assigna cursos'; -$string['metacourse'] = 'Metacurs'; -$string['metanoalreadycourses'] = 'Encara no heu assignat cursos'; -$string['metanopotentialcourses'] = 'No hi ha cursos disponibles'; -$string['metapotentialcourses'] = 'Cursos disponibles'; -$string['metaremovecourse'] = 'Suprimiu aquest curs'; $string['min'] = 'minut'; $string['mins'] = 'minuts'; -$string['minutes'] = 'minuts'; $string['miscellaneous'] = 'Miscel·lània'; $string['missingcategory'] = 'Heu de triar una categoria'; $string['missingcity'] = 'Falta la població'; @@ -723,10 +598,9 @@ $string['missingusername'] = 'Falta el nom d\'usuari'; $string['modified'] = 'Modificat'; $string['moduledeleteconfirm'] = 'Aneu a suprimir completament el mòdul \'$a\'. Això suprimirà tots els registres de la base de dades associats amb aquest mòdul d\'activitats. Esteu SEGUR que voleu continuar?'; $string['moduledeletefiles'] = 'S\'han suprimit tots els registres de la base de dades associats amb el mòdul \'$a->module\'. Per tal de completar la supressió (i impedir que el mòdul es reinstal·li automàticament), ara hauríeu de suprimir aquest directori del servidor: $a->directory'; -$string['modulesetup'] = 'S\'estan configurant les taules de mòduls'; +$string['modulesetup'] = 'S\'estan configurant les taules del mòdul'; $string['modulesuccess'] = 'S\'han configurat correctament les taules $a'; $string['moodleversion'] = 'Versió de Moodle'; -$string['more'] = 'més'; $string['mostrecently'] = 'més recent'; $string['move'] = 'Mou'; $string['movecategoryto'] = 'Mou categoria a:'; @@ -738,9 +612,8 @@ $string['movehere'] = 'Mou aqu $string['moveleft'] = 'Mou a l\'esquerra'; $string['moveright'] = 'Mou a la dreta'; $string['moveselectedcoursesto'] = 'Mou els cursos seleccionats a...'; -$string['movetoanotherfolder'] = 'Mou-los a una altra carpeta'; +$string['movetoanotherfolder'] = 'Mou a una altra carpeta'; $string['moveup'] = 'amunt'; -$string['mustchangepassword'] = 'La nova contrasenya ha de ser diferent de l\'actual'; $string['mustconfirm'] = 'Necessiteu confirmar el vostre registre'; $string['mycourses'] = 'Els meus cursos'; $string['name'] = 'Nom'; @@ -778,7 +651,6 @@ $string['newuser'] = 'Nou usuari'; $string['newusers'] = 'Nous usuaris'; $string['next'] = 'Següent'; $string['no'] = 'No'; -$string['nobody'] = 'Ningú'; $string['nocoursesfound'] = 'No s\'ha trobat cap curs que contingui les paraules \'$a\''; $string['nocoursesyet'] = 'No hi ha cursos en aquesta categoria'; $string['noexistingadmins'] = 'No hi ha administradors: això és un error seriós i mai no hauríeu d\'haver vist aquest missatge.'; @@ -790,18 +662,11 @@ $string['nofilesyet'] = 'Encara no s\'han penjat fitxers en aquest curs'; $string['nograde'] = 'Sense qualificació'; $string['noimagesyet'] = 'Encara no s\'han penjat imatges en aquest curs'; $string['nomorecourses'] = 'No s\'ha trobat cap altre curs que coincideixi'; -$string['nomoreidnumber'] = 'No s\'està utilitzant un número d\'identificació per evitar conflictes'; $string['none'] = 'Cap'; $string['nopotentialadmins'] = 'No hi ha administradors en potència'; $string['nopotentialcreators'] = 'No hi ha creadors de cursos en potència'; $string['nopotentialstudents'] = 'No hi ha estudiants en potència'; $string['nopotentialteachers'] = 'No hi ha professors en potència'; -$string['noreplybouncemessage'] = 'Heu contestat a una adreça de correu inexistent. Si volíeu contestar un missatge del fòrum, contesteu si us plau utilitzant els fòrums: $a. - -Aquí teniu el contingut del vostre missatge:'; -$string['noreplybouncesubject'] = '$a - missatge retornat'; -$string['noreplyname'] = 'No contesteu a aquest missatge'; -$string['noresults'] = 'Sense resultats'; $string['normal'] = 'Normal'; $string['normalfilter'] = 'Filtre normal'; $string['nostudentsfound'] = 'No s\'ha trobat $a'; @@ -812,17 +677,11 @@ $string['noteachersyet'] = 'Encara no hi ha cap professor en aquest curs'; $string['notenrolled'] = '$a no està inscrit en aquest curs.'; $string['noteuserschangednonetocourse'] = 'Nota: els usuaris d\'un curs s\'han de restaurar quan es restauren les dades d\'usuaris. Aquest paràmetre s\'ha canviat automàticament.'; $string['nothingnew'] = 'Cap novetat des de l\'última entrada'; -$string['noticenewerbackup'] = 'Aquesta còpia de seguretat ha estat creada amb Moodle $a->backuprelease ($a->backupversion) i és més nova que la vostra instal·lació de Moodle $a->serverrelease ($a->serverversion). Això pot donar lloc a algunes inconsistències perquè no es pot garantir la compatibilitat de les còpies cap enrere.'; -$string['notifyloginfailuresmessage'] = '$a->time, IP: $a->ip, usuari: $a->info'; -$string['notifyloginfailuresmessageend'] = 'Podeu veure aquí aquests registres: $a/course/log.php?id=1&chooselog=1&modid=site_errors'; -$string['notifyloginfailuresmessagestart'] = 'Heus ací una llista d\'intents fracassats d\'entrada en $a des de la darrera notificació'; -$string['notifyloginfailuressubject'] = '$a :: Notificació d\'entrades fracassades'; $string['notincluded'] = 'No inclòs'; $string['notingroup'] = 'Heu de ser part d\'un grup per veure aquesta activitat.'; $string['nousersmatching'] = 'No s\'han trobat usuaris que coincideixin amb \'$a\''; $string['nousersyet'] = 'Encara no hi ha usuaris'; $string['now'] = 'ara'; -$string['numattempts'] = '$a intents fracassats d\'entrada'; $string['numberweeks'] = 'Nombre de setmanes/temes'; $string['numdays'] = '$a dies'; $string['numhours'] = '$a hores'; @@ -839,11 +698,7 @@ $string['order'] = 'Ordre'; $string['other'] = 'Altre'; $string['outline'] = 'Esquema'; $string['page'] = 'Pàgina'; -$string['pageheaderconfigablock'] = 'S\'està configurant un bloc en %%fullname%%'; -$string['parentcoursenotfound'] = 'No s\'ha trobat el curs pare'; -$string['parentcoursenotmetacourse'] = 'El curs pare no és un metacurs'; -$string['parentfolder'] = 'Nivell superior'; -$string['parentlanguage'] = ''; +$string['parentlanguage'] = 'es'; $string['participants'] = 'Participants'; $string['password'] = 'Contrasenya'; $string['passwordchanged'] = 'S\'ha canviat la contrasenya'; @@ -851,11 +706,9 @@ $string['passwordconfirmchange'] = 'Confirma el canvi de la contrasenya'; $string['passwordrecovery'] = 'Sí, ajuda\'m a entrar-hi'; $string['passwordsdiffer'] = 'Les contrasenyes no coincideixen'; $string['passwordsent'] = 'S\'ha enviat la contrasenya'; -$string['passwordsenttext'] = '

            S\'ha enviat un correu a la vostra adreça electrònica $a->email.

            -

            Si us plau, busqueu la contrasenya nova al correu

            -

            Aquesta contrasenya nova s\'ha generat automàticament, de manera que potser voldreu link\">canviar-la per una altra més fàcil de recordar.

            '; -$string['pathnotexists'] = 'Aquest camí no existeix al servidor'; -$string['pathslasherror'] = 'El camí no pot acabar amb una barra'; +$string['passwordsenttext'] = '

            S\'ha enviat un correu a la vostra adreça electrònica $a->email. +

            Si us plau, busqueu la contrasenya nova al correu +

            Aquesta contrasenya nova s\'ha generat automàticament, de manera que potser voldreu link>canviar-la per una altra més fàcil de recordar.'; $string['paymentinstant'] = 'Utilitzeu el botó de baix per pagar i inscriure-us.'; $string['paymentrequired'] = 'Aquest curs requereix pagament.'; $string['paymentsorry'] = 'Gràcies per pagar. Dissortadament el pagament encara no ha estat completament processat i encara no podeu entrar al curs \"$a->fullname\". Torneu a intentar-ho d\'aquí a uns segons i si no podeu adreceu-vos al $a->teacher o a l\'administrador del lloc'; @@ -864,9 +717,6 @@ $string['people'] = 'Persones'; $string['personalprofile'] = 'Perfil personal'; $string['phone'] = 'Telèfon'; $string['phpinfo'] = 'informació PHP'; -$string['policyagree'] = 'Heu d\'acceptar la normativa abans d\'entrar en aquest lloc. Hi esteu d\'acord?'; -$string['policyagreement'] = 'Normativa d\'ús del lloc'; -$string['policyagreementclick'] = 'Feu clic aquí per llegir la normativa d\'ús del lloc'; $string['popupwindow'] = 'Obre el fitxer en una altra finestra'; $string['potentialadmins'] = 'Administradors en potència'; $string['potentialcreators'] = 'Creadors de cursos en potència'; @@ -890,10 +740,10 @@ $string['refreshingevents'] = 'S\'estan refrescant els esdeveniments'; $string['registration'] = 'Registre de Moodle'; $string['registrationemail'] = 'Notificacions per correu'; $string['registrationinfo'] = '

            Aquesta pàgina us permet registrar el vostre lloc Moodle en moodle.org. El registre és gratuït. -El principal benefici del registre és que se us afegirà a una llista de correu de poc tràfic per rebre les notificacions més importants, com ara alertes de seguretat o l\'aparició de noves versions de Moodle.

            +El principal benefici del registre és que se us afegirà a una llista de correu de poc tràfic per rebre les notificacions més importants, com ara alertes de seguretat o l\'aparició de noves versions de Moodle.

            Per defecte la vostra informació serà privada i mai no es vendrà o cedirà a ningú més. L\'única raó per recollir aquesta informació és per motius de suport i per ajudar a construir una imatge estadística de la comunitat Moodle com un tot. -

            Si ho trieu així, el nom del vostre lloc, el país i l\'adreça web s\'afegiran a la llista pública de llocs Moodle.

            -

            Tots el registres nous són verificats manualment abans d\'afegir-se a la llista, però un cop afegits podeu modificar el vostre registre i les dades de la llista pública en el moment en què ho desitgeu tot reenviant aquest formulari.

            '; +

            Si ho trieu així, el nom del vostre lloc, el país i l\'adreça web s\'afegiran a la llista pública de llocs Moodle. +

            Tots el registres nous són verificats manualment abans d\'afegir-se a la llista, però un cop afegits podeu modificar el vostre registre i les dades de la llista pública en el moment en què ho desitgeu tot reenviant aquest formulari.'; $string['registrationno'] = 'No, no vull rebre correu electrònic'; $string['registrationsend'] = 'Envia la informació de registre a moodle.org'; $string['registrationyes'] = 'Sí, vull rebre notificacions d\'assumptes importants'; @@ -916,9 +766,7 @@ $string['restoreto'] = 'Restaura a'; $string['returningtosite'] = 'Torneu a aquest lloc?'; $string['revert'] = 'Torna'; $string['role'] = 'Rol'; -$string['rss'] = 'RSS'; $string['rssarticles'] = 'Nombre d\'articles RSS recents'; -$string['rsserror'] = 'Error en la lectura de les dades RSS'; $string['rsstype'] = 'RSS d\'aquesta activitat'; $string['savechanges'] = 'Desa els canvis'; $string['saveto'] = 'Desa en'; @@ -934,7 +782,7 @@ $string['scheduledbackupstatus'] = 'Estat de la c $string['search'] = 'Cerca'; $string['searchagain'] = 'Torna a cercar'; $string['searchcourses'] = 'Cerca cursos'; -$string['searchhelp'] = 'Podeu cercar diverses paraules de cop.

            paraula : cerca qualsevol coincidència d\'aquesta paraula al text.
            +paraula : cerca només coincidències exactes.
            /-paraula : exclou els resultats que continguin aquesta paraula.'; +$string['searchhelp'] = 'Podeu cercar diverses paraules de cop.

            paraula : cerca qualsevol coincidència d\'aquesta paraula al text.+paraula : cerca només coincidències exactes.
            /-paraula : exclou els resultats que continguin aquesta paraula.'; $string['searchresults'] = 'Resultats de la recerca'; $string['sec'] = 'segon'; $string['secs'] = 'segons'; @@ -951,7 +799,6 @@ $string['shortname'] = 'Nom curt'; $string['shortnametaken'] = 'Aquest nom curt ja el fa servir un altre curs ($a)'; $string['shortsitename'] = 'Nom curt del lloc (p. e. una paraula)'; $string['show'] = 'Mostra'; -$string['showadvancedsettings'] = 'Mostra paràmetres avançats'; $string['showall'] = 'Mostra tots $a'; $string['showallcourses'] = 'Mostra tots els cursos'; $string['showalltopics'] = 'Mostra tots els temes'; @@ -963,21 +810,15 @@ $string['showonlytopic'] = 'Mostra nom $string['showonlyweek'] = 'Mostra només la setmana $a'; $string['showrecent'] = 'Mostra l\'activitat recent'; $string['showreports'] = 'Mostra informes d\'activitat'; -$string['showsettings'] = 'Mostra paràmetres'; $string['showtheselogs'] = 'Mostra aquests registres'; $string['since'] = 'Des de'; -$string['sincelast'] = 'des de la darrera entrada'; $string['site'] = 'Lloc'; -$string['siteerrors'] = 'Errors del lloc'; $string['sitefiles'] = 'Fitxers del lloc'; $string['sitelogs'] = 'Registres del lloc'; $string['sitenews'] = 'Notícies del lloc'; -$string['sitepartlist0'] = 'Per veure la llista de participants del lloc heu de ser professor del lloc'; -$string['sitepartlist1'] = 'Per veure la llista de participants del lloc heu de ser professor'; $string['sites'] = 'Llocs'; $string['sitesection'] = 'Inclou una secció de tema'; $string['sitesettings'] = 'Paràmetres del lloc'; -$string['siteteachers'] = 'Professors del lloc'; $string['size'] = 'Mida'; $string['sizeb'] = 'bytes'; $string['sizegb'] = 'Gb'; @@ -987,7 +828,6 @@ $string['socialheadline'] = 'F $string['someallowguest'] = 'Alguns cursos poden permetre l\'accés de visitants'; $string['someerrorswerefound'] = 'Falta informació o és incorrecta. Teniu els detalls més avall.'; $string['sortby'] = 'Ordena per'; -$string['specifyname'] = 'Heu d\'especificar un nom.'; $string['startdate'] = 'Data d\'inici del curs'; $string['startsignup'] = 'Comenceu creant-vos un compte d\'usuari!'; $string['state'] = 'Comarca/Província'; @@ -998,7 +838,6 @@ $string['strftimedatetime'] = '%%d %%B %%Y, %%H:%%M'; $string['strftimedaydate'] = '%%A, %%d %%B %%Y'; $string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%H:%%M'; $string['strftimedayshort'] = '%%A %%B %%d'; -$string['strftimedaytime'] = '%%a, %%H:%%M'; $string['strftimemonthyear'] = '%%B %%Y'; $string['strftimerecent'] = '%%d %%b, %%H:%%M'; $string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%H:%%M'; @@ -1006,7 +845,6 @@ $string['strftimetime'] = '%%H:%%M'; $string['stringsnotset'] = 'Les cadenes següents no estan definides en $a'; $string['studentnotallowed'] = 'No podeu entrar en aquest curs com a \'$a\''; $string['students'] = 'Estudiants'; -$string['studentsandteachers'] = 'Estudiants i professors'; $string['subcategories'] = 'Subcategories'; $string['success'] = 'Èxit'; $string['summary'] = 'Resum'; @@ -1024,13 +862,12 @@ $string['themes'] = 'Temes'; $string['themesaved'] = 'S\'ha desat el nou tema'; $string['thischarset'] = 'iso-8859-1'; $string['thisdirection'] = 'ltr'; -$string['thislanguage'] = 'Català'; +$string['thislanguage'] = 'Català'; $string['time'] = 'Hora'; $string['timezone'] = 'Zona horària'; $string['to'] = 'A'; $string['today'] = 'Avui'; $string['todaylogs'] = 'Registres d\'avui'; -$string['toomanybounces'] = 'Aquesta adreça de correu ha produït massa rebots. L\'heu de canviar obligatòriament abans de continuar.'; $string['toomanytoshow'] = 'Hi ha massa usuaris per mostrar-los tots'; $string['top'] = 'Dalt'; $string['topic'] = 'Tema'; @@ -1038,7 +875,6 @@ $string['topichide'] = 'Oculta aquest tema a $a'; $string['topicoutline'] = 'Esquema per temes'; $string['topicshow'] = 'Mostra aquest tema a $a'; $string['total'] = 'Total'; -$string['trysearching'] = 'Podeu provar a cercar.'; $string['turneditingoff'] = 'Desactiva edició'; $string['turneditingon'] = 'Activa edició'; $string['undecided'] = 'No decidit'; @@ -1047,9 +883,7 @@ $string['unenrolallstudents'] = 'Cancel $string['unenrolallstudentssure'] = 'Esteu segur que voleu cancel·lar la inscripció en aquest curs de tots els estudiants?'; $string['unenrolme'] = 'Cancel·la la meva inscripció en $a'; $string['unenrolsure'] = 'Esteu segur que voleu cancel·lar la inscripció de: $a en aquest curs?'; -$string['unfinished'] = 'Inacabat'; $string['unknowncategory'] = 'Categoria desconeguda'; -$string['unlimited'] = 'Il·limitat'; $string['unpacking'] = 'S\'està desempaquetant $a'; $string['unsafepassword'] = 'Aquesta contrasenya no és segura, proveu-ne una altra'; $string['unusedaccounts'] = 'Als comptes no utilitzats més de $a dies se\'ls cancel·la automàticament la inscripció al curs.'; @@ -1066,21 +900,10 @@ $string['updatinga'] = 'S\'est $string['updatingain'] = 'S\'està actualitzant $a->what en $a->in'; $string['upload'] = 'Penja'; $string['uploadafile'] = 'Penja un fitxer'; -$string['uploadedfile'] = 'El fitxer s\'ha penjat amb èxit'; $string['uploadedfileto'] = 'S\'ha penjat $a->file en $a->directory'; -$string['uploadedfiletoobig'] = 'El fitxer és massa gran (el límit són $a bytes)'; -$string['uploadfailednotrecovering'] = 'La càrrega ha fallat perquè hi ha hagut un problema amb un dels fitxers, $a->name.
            Heus ací un registre dels problemes:
            $a->problema
            Irrecuperable.'; -$string['uploadfilelog'] = 'Registre de càrrega del fitxer $a'; -$string['uploadformlimit'] = 'El fitxer supera la mida màxima definida pel formulari'; -$string['uploadlabel'] = 'Títol:'; $string['uploadnofilefound'] = 'No s\'ha trobat cap fitxer. Segur que n\'havíeu seleccionat un?'; $string['uploadnotallowed'] = 'No es permet penjar fitxers'; -$string['uploadoldfilesdeleted'] = 'S\'ha/n suprimit ell/s fitxer/s vell/s de l\'àrea de càrrega'; -$string['uploadpartialfile'] = 'Només s\'ha penjat una part del fitxer'; $string['uploadproblem'] = 'S\'ha esdevingut un problema desconegut mentre es penjava el fitxer \'$a\' (potser era massa gran?)'; -$string['uploadrenamedchars'] = 'S\'ha canviat el nom del fitxer $a->oldname a $a->newname perquè contenia caràcters no vàlids.'; -$string['uploadrenamedcollision'] = 'S\'ha canviat el nom del fitxer $a->oldname a $a->newname per un conflicte amb el nom del fitxer.'; -$string['uploadserverlimit'] = 'El fitxer supera la mida màxima definida al servidor'; $string['uploadthisfile'] = 'Penja aquest fitxer'; $string['uploadusers'] = 'Carrega usuaris'; $string['usedinnplaces'] = 'Utilitzat en $a llocs'; @@ -1090,7 +913,6 @@ $string['userdata'] = 'Dades d\'usuari'; $string['userdeleted'] = 'S\'ha suprimit aquest compte d\'usuari'; $string['userdescription'] = 'Descripció'; $string['userfiles'] = 'Fitxers d\'usuari'; -$string['userlist'] = 'Llista d\'usuaris'; $string['username'] = 'Nom d\'usuari'; $string['usernameexists'] = 'Aquest nom d\'usuari ja existeix, trieu-ne un altre'; $string['usernotconfirmed'] = 'No s\'ha pogut confirmar $a'; @@ -1098,29 +920,9 @@ $string['userprofilefor'] = 'Perfil d\'usuari per a $a'; $string['users'] = 'Usuaris'; $string['usersnew'] = 'Nous usuaris'; $string['userzones'] = 'Zones d\'usuari'; -$string['usethiscourse'] = 'Utilitza aquest curs'; $string['usingexistingcourse'] = 'S\'està utilitzant un curs existent'; $string['version'] = 'Versió'; $string['view'] = 'Visualització'; -$string['virusfound'] = 'Alerta administrador: Clam AV ha trobat un virus en un fitxer penjat per $a->user en el curs $a->course. Heus ací la sortida de Clamscan:'; -$string['virusfoundlater'] = 'S\'ha trobat un virus en un fitxer anomenat $a->filename que heu penjat el $a->date en el curs $a->course. Heus ací un resum dels esdeveniments: - -$a->action - -Si això era una tasca que havíeu tramès, us caldrà tornar a enviar-la per tal que la vegi el vostre professor.'; -$string['virusfoundlateradmin'] = 'Alerta administrador: s\'ha trobat un virus en un fitxer anomenat $a->filename que heu penjat el $a->date en el curs $a->course. Heus ací un resum dels esdeveniments: - -$a->action - -S\'ha enviat una notificació a l\'usuari.'; -$string['virusfoundlateradminnolog'] = 'Alerta administrador: s\'ha trobat un virus en un fitxer anomenat $a->filename. Moodle ha estat incapaç d\'esbrinar quin usuari el va penjar. - -Heus ací un resum dels esdeveniments: - -$a->action'; -$string['virusfoundsubject'] = '$a: s\'ha trobat un virus'; -$string['virusfounduser'] = 'El fitxer que heu penjat, $a->filename, ha estat escanejat i sembla que conté un virus. El fitxer NO s\'ha penjat.'; -$string['virusplaceholder'] = 'S\'ha trobat un virus en aquest fitxer, el qual ha estat mogut o suprimit. S\'ha enviat una notificació a l\'usuari.'; $string['webpage'] = 'Pàgina web'; $string['week'] = 'Setmana'; $string['weekhide'] = 'Oculta aquesta setmana a $a'; diff --git a/lang/ca/quiz.php b/lang/ca/quiz.php index e821b4bc734..4f6c809a791 100644 --- a/lang/ca/quiz.php +++ b/lang/ca/quiz.php @@ -1,5 +1,5 @@ Voleu tornar enrere i corregir aquesta pregunta?'; +
            Voleu tornar enrere i corregir aquesta pregunta?'; $string['fractionsnomax'] = 'Una de les respostes ha de valer 100%%, de manera que sigui -
            possible obtenir la qualificació màxima en aquesta pregunta.
            Voleu tornar enrere i corregir aquesta pregunta?'; +
            possible obtenir la qualificació màxima en aquesta pregunta.
            Voleu tornar enrere i corregir aquesta pregunta?'; $string['gift'] = 'Format GIFT'; $string['gradeaverage'] = 'Nota mitjana'; $string['gradehighest'] = 'Nota més alta'; @@ -130,7 +130,7 @@ Voleu tornar enrere i arreglar aquesta pregunta?'; $string['numerical'] = 'Numèrica'; $string['paragraphquestion'] = 'Tipus de pregunta no compatible: pregunta de paràgraf a la línia $a. Aquesta pregunta s\'ha ignorat.'; $string['passworderror'] = 'La contrasenya és incorrecta'; -$string['percentcorrect'] = 'Percentatge de correctes'; +$string['percentcorrect'] = 'El percentatge és correcte'; $string['publish'] = 'Publica'; $string['publishedit'] = 'Heu de tenir permisos en el curs per afegir o editar preguntes d\'aquesta categoria'; $string['qti'] = 'Format IMS QTI'; @@ -157,7 +157,7 @@ $string['randomsamatchnumber'] = 'Nombre de preguntes per seleccionar'; $string['readytosend'] = 'Esteu a punt d\'enviar el qüestionari complet perquè sigui qualificat. Esteu segur que voleu continuar?'; $string['recentlyaddedquestion'] = 'Pregunta afegida recentment!'; $string['regrade'] = 'Torna a calcular les qualificacions'; -$string['regradecomplete'] = 'Recalcula les qualificacions'; +$string['regradecomplete'] = 'S\'han recalculat les qualificacions'; $string['regradecount'] = 'S\'han modificat $a->changed de $a->attempt qualificacions'; $string['rename'] = 'Canvia el nom'; $string['report'] = 'Informes'; diff --git a/lang/ca/resource.php b/lang/ca/resource.php index 5199bed2bcc..047d1ca9d94 100644 --- a/lang/ca/resource.php +++ b/lang/ca/resource.php @@ -1,16 +1,14 @@ '; $string['filename'] = 'Nom del fitxer'; $string['filtername'] = 'Enllaços automàtics a recursos'; -$string['frameifpossible'] = 'Posa el recurs en un marc per mantenir visible la navegació local'; $string['fulltext'] = 'Text complet'; $string['htmlfragment'] = 'Fragment HTML'; $string['maindirectory'] = 'Directori principal'; $string['modulename'] = 'Recurs'; $string['modulenameplural'] = 'Recursos'; $string['neverseen'] = 'Mai vist'; -$string['newdirectories'] = 'Mostra la barra d\'enllaços del navegador'; +$string['newdirectories'] = 'Mostra els enllaços del directori del navegador'; $string['newfullscreen'] = 'Omple la pantalla completa'; $string['newheight'] = 'Alçada per defecte de la finestra (en píxels)'; $string['newlocation'] = 'Mostra la barra d\'ubicació'; @@ -54,12 +48,8 @@ $string['newwidth'] = 'Amplada de la finestra (en p $string['newwindow'] = 'Nova finestra'; $string['newwindowopen'] = 'Mostra el material en una nova finestra emergent'; $string['note'] = 'Nota'; -$string['notefile'] = 'Per penjar més fitxers al curs (de manera que apareguin en aquesta llista) feu servir l\'Gestor de fitxers.'; +$string['notefile'] = 'Per penjar més fitxers al curs (de manera que apareguin en aquesta llista) feu servir l\'Gestor de fitxers.'; $string['notypechosen'] = 'Heu de triar un tipus. Torneu enrere i proveu una altra vegada.'; -$string['pagedisplay'] = 'Visualitza aquest recurs dins de la finestra actual'; -$string['pagewindow'] = 'La mateixa finestra'; -$string['parameter'] = 'Paràmetre'; -$string['parameters'] = 'Paràmetres'; $string['popupresource'] = 'Aquest recurs ha d\'aparèixer en una finestra emergent.'; $string['popupresourcelink'] = 'Si no, feu clic aquí: $a'; $string['resourcetype'] = 'Tipus de recurs'; @@ -72,12 +62,5 @@ $string['resourcetype6'] = 'Text HTML'; $string['resourcetype7'] = 'Programa'; $string['resourcetype8'] = 'Text wiki'; $string['resourcetype9'] = 'Directori'; -$string['resourcetypedirectory'] = 'Visualitza un directori'; -$string['resourcetypefile'] = 'Enllaça un fitxer o lloc web'; -$string['resourcetypehtml'] = 'Compon una pàgina web'; -$string['resourcetypelabel'] = 'Insereix una etiqueta'; -$string['resourcetypetext'] = 'Compon una pàgina de text'; -$string['searchweb'] = 'Cerca una pàgina web'; -$string['variablename'] = 'Nom de variable'; ?> diff --git a/lang/ca/scorm.php b/lang/ca/scorm.php index b786d121bdb..beb2ed2556d 100644 --- a/lang/ca/scorm.php +++ b/lang/ca/scorm.php @@ -1,78 +1,36 @@ attr) en l\'etiqueta $a->tag'; $string['autocontinue'] = 'Continuació automàtica'; -$string['badmanifest'] = 'El manifest té errors: vg. el registre d\'errors'; $string['browse'] = 'Explora'; $string['browsed'] = 'Explorat'; $string['browsemode'] = 'Mode d\'exploració'; $string['chooseapacket'] = 'Trieu o actualitzeu un paquet SCORM'; $string['completed'] = 'Completat'; -$string['configframesize'] = 'Aquest valor és la mida en píxels del marc superior (el que conté la navegació) quan es reprodueix un paquet SCORM.'; -$string['configpopup'] = 'Quan s\'afegeix un nou paquet SCORM que es pot visualitzar en una finestra emergent, cal habilitar per defecte aquesta opció?'; -$string['configpopupheight'] = 'Quina alçada per defecte han de tenir les noves finestres emergents?'; -$string['configpopupresizable'] = 'Les finestres emergents s\'han de poder redimensionar per defecte?'; -$string['configpopupscrollbars'] = 'Les finestres emergents han de permetre per defecte el desplaçament?'; -$string['configpopupstatus'] = 'Les finestres emergents han de mostrar per defecte la barra d\'estat?'; -$string['configpopupwidth'] = 'Quina amplada per defecte han de tenir les noves finestres emergents?'; $string['coursepacket'] = 'Paquet de curs'; $string['coursestruct'] = 'Estructura del curs'; $string['datadir'] = 'Error del sistema de fitxers: no s\'ha pogut crear el directori de dades del curs'; -$string['domxml'] = 'Biblioteca externa DOMXML'; $string['entercourse'] = 'Entra al curs SCORM'; -$string['errorlogs'] = 'Registre d\'errors'; $string['failed'] = 'Fallat'; -$string['found'] = 'S\'ha trobat el manifest'; -$string['gradeaverage'] = 'Nota mitjana'; -$string['gradehighest'] = 'Nota més alta'; -$string['grademethod'] = 'Mètode de qualificació'; -$string['gradescoes'] = 'Situació dels Sco'; -$string['gradesum'] = 'Suma de notes'; -$string['guestsno'] = 'Els visitants no poden veure cursos SCORM'; $string['incomplete'] = 'No completat'; -$string['missing_attribute'] = 'Falta l\'atribut $a->attr en l\'etiqueta $a->tag'; -$string['missing_tag'] = 'Falta l\'etiqueta $a->tag'; $string['mode'] = 'Mode'; -$string['modulename'] = 'SCORM'; -$string['modulenameplural'] = 'SCORM'; -$string['newheight'] = 'Alçada per defecte de la finestra (en píxels)'; -$string['newresizable'] = 'Permet redimensionar la finestra'; -$string['newscrollbars'] = 'Permet el desplaçament dins de la finestra'; -$string['newstatus'] = 'Mostra la barra d\'estat'; -$string['newwidth'] = 'Amplada de la finestra (en píxels)'; -$string['newwindow'] = 'Nova finestra'; -$string['newwindowopen'] = 'Mostra el paquet SCORM en una nova finestra emergent'; +$string['modulename'] = 'Scorm'; +$string['modulenameplural'] = 'Scorms'; $string['next'] = 'Continua'; -$string['no_attributes'] = 'L\'etiqueta $a->tag ha de tenir atributs'; -$string['no_children'] = 'L\'etiqueta $a->tag ha de tenir fills'; $string['nomanifest'] = 'No s\'ha trobat el manifest'; $string['noreports'] = 'Cap informe per visualitzar'; $string['normal'] = 'Normal'; -$string['not_corr_type'] = 'El tipus de l\'etiqueta $a->tag no coincideix'; $string['notattempted'] = 'No intentat'; -$string['organizations'] = 'Organitzacions'; $string['packagedir'] = 'Error del sistema de fitxers: no es pot crear el directori del paquet'; $string['passed'] = 'S\'ha passat'; -$string['php5'] = 'PHP 5 (biblioteca nativa DOMXML)'; -$string['position_error'] = 'L\'etiqueta $a->tag no pot ser filla de $a->parent'; $string['prev'] = 'Anterior'; $string['regular'] = 'Manifest normal'; $string['report'] = 'Informe'; $string['review'] = 'Revisa'; -$string['scoes'] = 'SCO'; -$string['score'] = 'Puntuació bruta'; -$string['syntax'] = 'Error de sintaxi'; -$string['tag_error'] = 'Etiqueta desconeguda ($a->tag) amb aquest contingut: $a->value'; -$string['too_many_attributes'] = 'L\'etiqueta $a->tag té massa atributs'; -$string['too_many_children'] = 'L\'etiqueta $a->tag té massa fills'; $string['trackingloose'] = 'ATENCIÓ: les dades de seguiment d\'aquest paquet SCORM es perdran.'; $string['validateascorm'] = 'Valida un paquet scorm'; $string['validation'] = 'Resultat de la validació'; -$string['validationtype'] = 'Aquesta preferència defineix la biblioteca DOMXML utilitzada per validar el manifest SCORM. Si no sabeu, deixeu l\'opció seleccionada per defecte.'; -$string['versionwarning'] = 'La versió del manifest és anterior a la 1.3, advertiment a l\'etiqueta $a->tag'; $string['viewallreports'] = 'Visualitza informes de $a intents'; ?> diff --git a/lang/ca/survey.php b/lang/ca/survey.php index 179a6566831..acced0f8e23 100755 --- a/lang/ca/survey.php +++ b/lang/ca/survey.php @@ -1,5 +1,5 @@ favorita
            (ideal) y la teva experiència real en aquesta unitat. Les teves respostes seran tractades amb alt grau de confidencialitat i no afectaran la teva avaluació. +Cada una de les declaracions següents et demanaran que comparis la teva experiència favorita (ideal) y la teva experiència real en aquesta unitat. Les teves respostes seran tractades amb alt grau de confidencialitat i no afectaran la teva avaluació. Les teves respostes, pensades cuidadosament, ens ajudaran a millorar la manera de presentar aquesta unitat en el futur. Moltes gràcies per la teva col·laboració.'; $string['collesapname'] = 'COLLES (preferit i real)'; @@ -144,7 +144,7 @@ $string['collesm6'] = 'Interpretaci $string['collesm6short'] = 'Interpretació'; $string['collesmintro'] = 'En aquesta unitat en línia...'; $string['collespintro'] = 'El propòsit d’aquesta enquesta es ajudar-nos a entendre el que tu valores en una experiència d’aprenentatge en línia. -Cada una de les 24 declaracions següents l’interroguen sobre la teva experiència favorita (ideal) en aquesta unitat. +Cada una de les 24 declaracions següents l’interroguen sobre la teva experiència favorita (ideal) en aquesta unitat. No existeixen respostes \'correctes\' o \'equivocades\', sòls ens interessa la teva opinió. Les teves respostes seran tractades amb alt grau de confidencialitat i no afectaran la teva avaluació. Les teves respostes, pensades cuidadosament, ens ajudaran a millorar la manera de presentar aquesta unitat en el futur. Moltes gràcies per la teva col·laboració.'; @@ -155,7 +155,7 @@ $string['downloadexcel'] = 'Descarregar com a full de c $string['downloadinfo'] = 'Pots descarregar la informació completa en un format que pugui ser analitzat per un programa de fulls de càlcul'; $string['downloadtext'] = 'Descarregar com a text'; $string['editingasurvey'] = 'S\'està editant la informació'; -$string['guestsnotallowed'] = 'Els visitants no poden participar en les enquestes'; +$string['guestsnotallowed'] = 'Els invitats no poden participar en les enquestes'; $string['helpsurveys'] = 'Ajuda sobre els diferents tipus d’informació'; $string['howlong'] = '¿Quant de temps t’ha portat completar aquest questionari?'; $string['howlongoptions'] = 'menys de 1 min., 1-2 min., 2-3 min., 3-4 min., 4-5 min., 5-10 min., més de 10 minuts.'; diff --git a/lang/ca/wiki.php b/lang/ca/wiki.php index efdb5a7ec2c..8e2db30ca39 100644 --- a/lang/ca/wiki.php +++ b/lang/ca/wiki.php @@ -1,13 +1,9 @@ new_ver i $a->old_ver de: $a->pagename.'; -$string['disablecamel'] = 'Inhabilita els enllaços CamelCase'; $string['disabledpage'] = 'Actualment aquesta pàgina no està disponible.'; $string['doesnotexist'] = 'Aquesta pàgina encara no existeix. Podeu fer clic en el botó Edita si voleu crear-la.'; $string['downloadaszip'] = 'Fitxer zip descarregable'; $string['downloadtimes'] = 'S\'ha baixat $a vegades'; $string['dwnlnofiles'] = 'Encara no s\'han penjat fitxers.'; $string['dwnlsection'] = 'Secció de descàrregues'; -$string['editform1'] = 'No us preocupeu molt pel format: sempre es pot millorar després.'; +$string['editform1'] = 'No us preocupeu molt pel format: sempre es pot millorar despres.'; $string['editform2'] = 'Escriviu amb sensatesa i recordeu que tots els canvis queden registrats.'; $string['editthispage'] = 'Edita aquesta pàgina'; $string['emptypage'] = 'Pàgina buida'; @@ -112,7 +107,6 @@ $string['nothingtostrip'] = 'No hi ha p $string['nowikicreated'] = 'No s\'han creat entrades en aquest wiki'; $string['of'] = 'de'; $string['offline'] = 'OFFLINE'; -$string['optional'] = 'opcional'; $string['orphanedpage'] = 'Pàgina òrfena'; $string['orphanedpages'] = 'Pàgines òrfenes'; $string['otherwikis'] = 'Altres Wikis'; @@ -148,20 +142,15 @@ $string['sitemap'] = 'Mapa del lloc'; $string['smfor'] = 'Mapa del lloc'; $string['status'] = 'Estat'; $string['strippagecheck'] = 'Esteu segur que voleu estripar les versions velles d\'aquestes pàgines:'; -$string['strippages'] = 'Estripa pàgines'; +$string['strippages'] = 'Estripar pàgines'; $string['studentadminoptions'] = 'Opcions d\'administració per als estudiants'; $string['submit'] = 'Tramet'; -$string['tabattachments'] = 'Adjunts'; -$string['tabedit'] = 'Edita'; -$string['tabinfo'] = 'Història'; -$string['tablinks'] = 'Enllaços'; -$string['tabview'] = 'Visualitza'; $string['thanksforcontribution'] = 'Gràcies per la vostra col·laboració'; $string['thispageisntlinkedfromanywhereelse'] = 'No hi ha cap enllaç que meni a aquesta pàgina.'; $string['updatedpages'] = 'Pàgines actualitzades'; $string['uplerror'] = 'Alguna cosa no ha funcionat bé durant la càrrega del fitxer.'; $string['uplinsect'] = 'Penja en'; -$string['uplnewnam'] = 'Desa amb un altre nom'; +$string['uplnewnam'] = 'Desa amb un altre nom de fitxer'; $string['upload0'] = 'Utilitzeu aquest formulari per penjar un fitxer binari al wiki:'; $string['uploadedon'] = 'Penjat'; $string['uploadpicturebutton'] = 'Penja'; diff --git a/lang/ca/workshop.php b/lang/ca/workshop.php index b782df8935f..e1582d272a2 100755 --- a/lang/ca/workshop.php +++ b/lang/ca/workshop.php @@ -1,5 +1,5 @@ Aquest element ha sigut exclós de l\'anàlisi.'; +$string['standarddeviationnote'] = 'Els elements amb desviacions estàndard de cero o valors molt menuts poden distorisonar l\'anàlisi.
            Aquest element ha sigut exclós de l\'anàlisi.'; $string['studentassessments'] = '$a avaluacions'; $string['studentgrades'] = '$a qualificacions'; $string['studentsubmissions'] = '$a trameses'; @@ -199,6 +202,7 @@ $string['teacherscomment'] = 'Comentari del professor'; $string['teachersgrade'] = 'Qualificació del professor'; $string['teachersubmissionsforassessment'] = '$a trameses del professor per a avaluació'; $string['thegradeis'] = 'La qualificació és $a'; +$string['thereisfeedbackfromtheteacher'] = 'Hi ha retroacció del $a'; $string['theseasessmentsaregradedbytheteacher'] = 'Aquestes avaluacions estan qualificades pel $a'; $string['timeassessed'] = 'Temps avaluat'; $string['title'] = 'Títol'; @@ -209,7 +213,7 @@ $string['verypoor'] = 'Molt pobre'; $string['view'] = 'Veu'; $string['viewassessmentofteacher'] = 'Veu avaluació de $a'; $string['viewotherassessments'] = 'Veu altres avaluacions'; -$string['warningonamendingelements'] = 'AVÍS: S\'han tramès avaluacions.
            NO canvieu el nombre d\'elements, els tipus d\'escala o els pesos dels elements.'; +$string['warningonamendingelements'] = 'AVÍS: S\'han tramès avaluacions.
            NO canvieu el nombre d\'elements, els tipus d\'escala o els pesos dels elements.'; $string['weight'] = 'Pes'; $string['weightederrorcount'] = 'Recompte d\'errors ponderat: $a'; $string['weightforbias'] = 'Pes per al biaix'; diff --git a/lang/cs/README b/lang/cs/README index 5294f5234f8..a84f29a252a 100644 --- a/lang/cs/README +++ b/lang/cs/README @@ -66,13 +66,8 @@ diakritiky. Pro pøeklad pou¾íváme na¹e oblíbené editory ViM a PSPad. -DÙLE®ITÉ ZMÌNY +NEJDÙLE®ITÌJ©Í ZMÌNY VE VERZI 1.2 -R1.4 -* Modul "Dotazník" (Survey) pøejmenován na "Prùzkum" -* Modul "Hlasování" (Choice) pøejmenován na "Anketa" - -R1.2 * Dosavadní modul "Písemná práce" (Journal) se zmìnil na "Poznámky" * Modul "Zdroj" (Resource) je od nynìj¹ka pøekládán jako "Studijní materiál" diff --git a/lang/cs/activitynames.php b/lang/cs/activitynames.php index 887391b23c7..ac00d003d44 100644 --- a/lang/cs/activitynames.php +++ b/lang/cs/activitynames.php @@ -1,5 +1,5 @@ Více informací'; $string['upgradelogsinfo'] = 'Ve zpùsobu uchovávání protokolù do¹lo k nìjakým zmìnám. Chcete-li zobrazovat va¹e dosavadní protokoly na základì èinností, musí být v¹echny ulo¾ené protokoly upgradovány. V závislosti na jejich mno¾ství mù¾e toto trvat dlouhou dobu (i nìkolik hodin) a obzvlá¹tì na vìt¹ích stránkách to zatí¾í va¹i databázi. Jakmile jednou proces spustíte, mìli byste jej nechat dokonèit (nechte okno prohlí¾eèe otevøené). Nemusíte mít obavy - va¹e stránky budou v prùbìhu upgradu pro ostatní stále dostupné.

            Chcete teï upgradovat va¹e protokoly?'; -$string['upgradesure'] = 'Soubory Moodlu se zmìnily, tak¾e se pravdìpodobnì chystáte upgradovat vá¹ server na verzi: -

            $a

            -

            Jakmile se toto jednou rozhodnete udìlat, nemù¾ete se ji¾ vrátit.

            -

            Jste si jisti, ¾e chcete upgradovat server na tuto verzi?

            '; $string['upgradinglogs'] = 'Upgradovat protokoly'; ?> diff --git a/lang/cs/auth.php b/lang/cs/auth.php index b174940a656..1557d1e8ca6 100644 --- a/lang/cs/auth.php +++ b/lang/cs/auth.php @@ -1,11 +1,9 @@ polích externí databáze, která urèíte zde.

            Necháte-li tato pole prázdná, budou pou¾ity implicitní hodnoty.

            Tak jako tak si u¾ivatel po pøihlá¹ení mù¾e tato pole mìnit.

            '; +$string['auth_dbextrafields'] = 'Tato pole jsou volitelná. Mù¾ete si zvolit pøednastavení nìkterých informací o u¾ivateli na základì hodnot v polích externí databáze, která urèíte zde.

            Necháte-li tato pole prázdná, budou pou¾ity implicitní hodnoty.

            Tak jako tak si u¾ivatel po pøihlá¹ení mù¾e tato pole mìnit.'; $string['auth_dbfieldpass'] = 'Název pole, které obsahuje hesla'; $string['auth_dbfielduser'] = 'Název pole, které obsahuje u¾ivatelské jména'; $string['auth_dbhost'] = 'Poèítaè hostující databázi'; @@ -13,93 +11,56 @@ $string['auth_dbname'] = 'N $string['auth_dbpass'] = 'Heslo k tomuto u¾ivatelskému jménu'; $string['auth_dbpasstype'] = 'Urèete pou¾itý formát pole s heslem. ©ifrování MD5 je u¾iteèné pøi pøipojování k dal¹ím webovým aplikacím, jako je napøíklad PostNuke'; $string['auth_dbtable'] = 'Název tabulky v databázi'; -$string['auth_dbtitle'] = 'Pou¾ívat externí databázi'; -$string['auth_dbtype'] = 'Typ databáze (Viz ADOdb dokumentaci)'; +$string['auth_dbtitle'] = 'Pou¾ití externí databáze'; +$string['auth_dbtype'] = 'Typ databáze (Viz ADOdb dokumentaci)'; $string['auth_dbuser'] = 'U¾ivatelské jméno s právy èíst externí databázi'; -$string['auth_editlock'] = 'Uzamknout hodnotu'; -$string['auth_editlock_expl'] = '

            Uzamknout hodnotu: Je-li povoleno, zabrání u¾ivatelùm i správcùm mìnit toto pole pøímo. Pou¾ijte tuto volbu, pokud udr¾ujete data v externím systému.

            '; $string['auth_emaildescription'] = 'Potvrzení emailem je pøednastavená metoda ovìøování. Pøi registraci si u¾ivatel vybere vlastní u¾ivatelské jméno a heslo. Poté je na jeho adresu odeslán email obsahující zabezpeèený odkaz na stránku, kde potvrdí zadané údaje. Pøi dal¹ím pøihlá¹ení se ji¾ ovìøuje pouze zadané u¾ivatelské jméno a heslo proti hodnotì ulo¾ené v databázi Moodle.'; $string['auth_emailtitle'] = 'Ovìøení na základì emailu'; -$string['auth_fccreators'] = 'Seznam skupin, jejich¾ èlenové jsou oprávnìni vytváøet nové kurzy. Skupiny oddìlujte støedníkem. Názvy musí být zadány pøesnì jako na FirstClass serveru a zále¾í na malých/VELKÝCH písmenech.'; -$string['auth_fcdescription'] = 'Tato metoda pou¾ívá k ovìøovaní u¾ivatelského jména a hesla FirstClass server.'; -$string['auth_fcfppport'] = 'Port na serveru (nejbì¾nìj¹í je 3333)'; -$string['auth_fchost'] = 'Adresa serveru FirstClass. Vlo¾te IP adresu nebo DNS název.'; -$string['auth_fcpasswd'] = 'Heslo pro úèet uvedený vý¹e.'; -$string['auth_fctitle'] = 'Pou¾ívat FirstClass server'; -$string['auth_fcuserid'] = 'Userid pro FirstClass úèet s nastaveným právem \'Subadministrator\''; -$string['auth_imapdescription'] = 'Tato metoda pou¾ívá server IMAP ke kontrole, zda je zadané u¾ivatelské jméno a heslo platné.'; +$string['auth_imapdescription'] = 'Tato metoda pou¾ívá IMAP server ke kontrole, zda zadané u¾ivatelské jméno a heslo je platné.'; $string['auth_imaphost'] = 'Adresa serveru IMAP. Zadejte IP adresu, nikoliv DNS jméno serveru!'; -$string['auth_imapport'] = 'Èíslo portu IMAP serveru. Vìt¹inou bývá 143 nebo 993.'; -$string['auth_imaptitle'] = 'Pou¾ívat IMAP server'; -$string['auth_imaptype'] = 'Typ IMAP serveru. IMAP servery mohou mít rùzné typy ovìøování a vyjednávání (IMAP authentication and negotiation).'; -$string['auth_ldap_bind_dn'] = 'Chcete-li pou¾ívat nìjaký úèet (bind-user) k vyhledání u¾ivatelù, specifikujte jej zde. Pøíklad: \'cn=ldapuser,ou=public,o=org\''; +$string['auth_imapport'] = 'Èíslo portu IMAP servere. Vìt¹inou bývá 143 nebo 993.'; +$string['auth_imaptitle'] = 'Pou¾ití IMAP serveru'; +$string['auth_imaptype'] = 'Typ IMAP serveru. IMAP servery mohou mít rùzné typy ovìøování a vyjednávání (IMAP authentication and negotiation).'; +$string['auth_ldap_bind_dn'] = 'Chcete-li pou¾ívat metodu bind-user k vyhledání u¾ivatelù, specifikujte ji zde. Pøíklad: \'cn=ldapuser,ou=public,o=org\''; $string['auth_ldap_bind_pw'] = 'Heslo pro bind-user'; -$string['auth_ldap_bind_settings'] = 'Nastavení bind'; $string['auth_ldap_contexts'] = 'Seznam kontextù, ve kterých se nacházejí u¾ivatelé. Jednotlivé kontexty oddìlujte støedníkem. Pøíklad: \'ou=uzivatele,o=naseskola; ou=dalsi,o=naseskola\''; $string['auth_ldap_create_context'] = 'Povolíte-li vytváøení u¾ivatelù (po ovìøení emailem), urèete kontext, ve kterém budou noví u¾ivatelé vytváøeni. Tento kontext by mìl být z bezpeènostních dùvodù odli¹ný od kontextu ostatních u¾ivatelù. Není tøeba pøidávat tento kontext do promìnné auth_ldap_contexts, Moodle automaticky hledá u¾ivatele i v tomto kontextu.'; $string['auth_ldap_creators'] = 'Seznam skupin, jejich¾ èlenové jsou oprávnìni vytváøet nové kurzy. Jednotlivé skupiny oddìlujte støedníkem. Pøíklad: \'cn=ucitele,ou=zamestnanci,o=naseskola\''; -$string['auth_ldap_expiration_desc'] = 'Zvolte Ne, chcete-li zakázat ovìøování vypr¹elých hesel nebo ètení \'passwordexpiration time\' pøímo z LDAP'; -$string['auth_ldap_expiration_warning_desc'] = 'Kolik dní pøed vypr¹ením hesla zobrazovat varování'; -$string['auth_ldap_expireattr_desc'] = 'Volitelné: LDAP atribut, ve kterém je ulo¾en èas vypr¹ení hesla'; -$string['auth_ldap_graceattr_desc'] = 'Volitelné: atribut \'gracelogin\''; -$string['auth_ldap_gracelogins_desc'] = 'Povolit podporu LDAP gracelogin (tzv. pøihlá¹ení z milosti). I poté, co jim vypr¹elo heslo, se mohou u¾ivatelé pøihlásit, dokud jim poèítadlo pøihlá¹ení z milosti neklesne na 0. U¾ivatelé jsou v pøípadì vypr¹ení hesla upozoròováni.'; $string['auth_ldap_host_url'] = 'Zadejte URL serveru LDAP. Napøíklad \'ldap://ldap.naseskola.cz/\' nebo \'ldaps://ldap.naseskola.cz/\' '; -$string['auth_ldap_login_settings'] = 'Nastavení pøihlá¹ení'; -$string['auth_ldap_memberattribute'] = 'Volitelné: pøenastavuje název atributu èlena skupiny (user member attribute), pokud u¾ivatel patøí do skupiny. Vìt¹inou \'member\''; -$string['auth_ldap_objectclass'] = 'Volitelné: parametr objectClass pou¾itý pøi pojmenovávání/vyhledávání u¾ivatelù. Vìt¹inou nemusíte mìnit.'; -$string['auth_ldap_passwdexpire_settings'] = 'Nastavení vypr¹ení hesla LDAP'; -$string['auth_ldap_search_sub'] = 'Zadejte hodnotu <> 0, pokud chcete prohledávat u¾ivatele v subkontextech.'; -$string['auth_ldap_server_settings'] = 'Nastavení serveru LDAP'; -$string['auth_ldap_update_userinfo'] = 'Aktualizovat informace o u¾ivateli (pøíjmení, køestní jméno, adresa...) z LDAP serveru do Moodle. Dle potøeby definujte \'Mapování dat\'.'; -$string['auth_ldap_user_attribute'] = 'Volitelné: atribut pou¾itý pro pojmenování a vyhledávání u¾ivatelù. Vìt¹inou \'cn\'.'; -$string['auth_ldap_user_settings'] = 'Nastavení prohledávání u¾ivatelù'; -$string['auth_ldap_user_type'] = 'Vyberte, jak jsou u¾ivatelé ukládáni v LDAP. Toto nastavení zároveò urèuje, jak se bude chovat vypr¹ení hesla (login expiration), pøihlá¹ení z milosti (grace logins) a tvorba u¾ivatelù.'; +$string['auth_ldap_memberattribute'] = 'Urèete atribut èlena skupiny (user member attribute), pokud u¾ivatel patøí do skupiny. Vìt¹inou \'member\''; +$string['auth_ldap_search_sub'] = 'Zadejte hodnotu <> 0 pokud chcete prohledávat u¾ivatele v subkontextech.'; +$string['auth_ldap_update_userinfo'] = 'Aktualizovat informace o u¾ivateli (pøíjmení, køestní jméno, adresa...) z LDAP serveru do Moodle. Pro mapování viz /auth/ldap/attr_mappings.php'; +$string['auth_ldap_user_attribute'] = 'Atribut pou¾itý pro pojmenování a vyhledávání u¾ivatelù. Vìt¹inou \'cn\'.'; $string['auth_ldap_version'] = 'Verze protokolu LDAP, kterou pou¾ívá vá¹ server.'; -$string['auth_ldapdescription'] = 'Tato metoda poskytuje ovìøení u¾ivatele proti LDAP serveru. Je-li zadané jméno a heslo platné, Moodle si vytvoøí nový záznam o u¾ivateli ve své vlastní databázi. Tento modul umí naèíst informace z LDAP serveru a pøednastavit po¾adované pole v Moodle. Pøi dal¹ím pøihla¹ování se ji¾ pouze ovìøuje u¾ivatelské jméno a heslo.'; -$string['auth_ldapextrafields'] = 'Tato pole jsou volitelná. Mù¾ete vybrat, která pole s informacemi z LDAP serveru budou pou¾ita jako pøednastavená v Moodle.

            Necháte-li pole prázdná, nepøevezmou se ¾ádné údaje z LDAP a Moodle pou¾ije vlastní pøednastavené hodnoty.

            V ka¾dém pøípadì si u¾ivatel mù¾e tyto hodnoty mìnit po pøihlá¹ení sám.

            '; -$string['auth_ldaptitle'] = 'Pou¾ívat LDAP server'; +$string['auth_ldapdescription'] = 'Tato metoda poskytuje ovìøení u¾ivatele proti LDAP serveru. Je-li zadané jméno a heslo platné, Moodle si vytvoøí nový záznam o u¾ivateli ve své vlastní databázi. Tento modul dále umí naèíst informace z LDAP serveru a pøednastavit po¾adované pole v Moodle. Pøi dal¹ím pøihla¹ování se ji¾ pouze ovìøuje u¾ivatelské jméno a heslo.'; +$string['auth_ldapextrafields'] = 'Tato pole jsou volitelná. Mù¾ete vybrat, která pole s informacemi z LDAP serveru budou pou¾ita jako pøednastavená v Moodle.

            Necháte-li pole prázdná, nepøevezmou se ¾ádné údaje z LDAP a Moodle pou¾ije vlastní pøednastavené hodnoty.

            V ka¾dém pøípadì si u¾ivatel mù¾e tyto hodnoty mìnit po pøihlá¹ení sám.'; +$string['auth_ldaptitle'] = 'Pou¾ití LDAP serveru'; $string['auth_manualdescription'] = 'Tato metoda neumo¾òuje u¾ivatelùm zakládat si vlastní úèty. V¹echny úèty musí být ruènì vytvoøeny správcem Moodle (admin).'; $string['auth_manualtitle'] = 'Pouze ruènì vytváøené úèty'; -$string['auth_multiplehosts'] = 'Mù¾ete vlo¾it i více hostitelù NEBO jejich adres (napø. \'server1.cz;server2.cz;server3.com\' nebo \'xxx.xxx.xxx.xxx;xxx.xxx.xxx.xxx\')'; -$string['auth_nntpdescription'] = 'Tato metoda pou¾ívá NNTP server ke kontrole, zda je zadané u¾ivatelské jméno a heslo platné.'; +$string['auth_multiplehosts'] = 'Mù¾ete vlo¾it i více hostitelù (napø. server1.cz;server2.cz;server3.com)'; +$string['auth_nntpdescription'] = 'Tato metoda pou¾ívá NNTP server ke kontrole, zda zadané u¾ivatelské jméno a heslo je platné.'; $string['auth_nntphost'] = 'Adresa NNTP serveru. Zadejte IP adresu, nikoliv DNS název!'; $string['auth_nntpport'] = 'Èíslo portu NNTP serveru (vìt¹inou 119)'; -$string['auth_nntptitle'] = 'Pou¾ívat NNTP serveru'; +$string['auth_nntptitle'] = 'Pou¾ití NNTP serveru'; $string['auth_nonedescription'] = 'U¾ivatelé si mohou vytváøet nová konta pøímo bez ovìøení vùèi externímu serveru nebo potvrzení pøes email. S touto volbou buïte opatrní - zva¾te mo¾né problémy se zabezpeèením a správou u¾ivatelù, které vám tato volba mù¾e zpùsobit.'; $string['auth_nonetitle'] = 'Bez ovìøení'; -$string['auth_pamdescription'] = 'Tato metoda vyu¾ívá modul PAM pro pøístup k nativním u¾ivatelským jménùm na tomto serveru. Chcete-li tuto metodu pou¾ívat, musíte si nainstalovat PHP4 PAM Authentication.'; -$string['auth_pamtitle'] = 'PAM (Pluggable Authentication Modules)'; -$string['auth_passwordisexpired'] = 'Va¹e heslo vypr¹elo. Chcete si jej teï zmìnit?'; -$string['auth_passwordwillexpire'] = 'Poèet dnù do vypr¹ení hesla: $a. Chcete si své heslo zmìnit?'; $string['auth_pop3description'] = 'Tato metoda pou¾ívá POP3 server ke kontrole, zda zadané u¾ivatelské jméno a heslo je platné.'; $string['auth_pop3host'] = 'Adresa POP3 serveru. Zadejte IP adresu, nikoliv DNS název!'; -$string['auth_pop3mailbox'] = 'Název po¹tovní slo¾ky (mailbox), se kterou se má navázat spojení (vìt¹inou INBOX).'; $string['auth_pop3port'] = 'Èíslo portu POP3 serveru (vìt¹inou 110)'; -$string['auth_pop3title'] = 'Pou¾ívat POP3 server'; +$string['auth_pop3title'] = 'Pou¾ití POP3 serveru'; $string['auth_pop3type'] = 'Typ serveru. Pokud vá¹ server pou¾ívá zabezpeèení pomocí certifikátù, zvolte pop3cert.'; -$string['auth_updatelocal'] = 'Aktualizovat lokální data'; -$string['auth_updatelocal_expl'] = '

            Aktualizovat lokální data: Je-li povoleno, budou pole aktualizována (z externího autentizaèního zdroje) po ka¾dém pøihlá¹ení nebo pøi synchronizaci u¾ivatelù. Pole urèená k místní aktualizaci by mìla být uzamknuta.

            '; -$string['auth_updateremote'] = 'Aktualizovat externí data'; -$string['auth_updateremote_expl'] = '

            Aktualizovat externí data: Je-li povoleno, provede se aktualizace externího autentizaèního zdroje po ka¾dém ulo¾ení profilu u¾ivatele. Pole by mìla být odemknuta, aby je bylo mo¾né upravovat.

            '; -$string['auth_updateremote_ldap'] = '

            Pozn.: Aktualizace externího zdroje LDAP vy¾aduje, aby mìl u¾ivatel \'binddn\' (s heslem \'bindpw\') oprávnìní editovat v¹echny záznamy o u¾ivatelích. Tento systém momentálnì nepodporuje atributy s více hodnotami (multi-values) - extra hodnoty budou proto pøi aktualizaci odstranìny.

            '; $string['auth_user_create'] = 'Povolit vytváøení u¾ivatelù'; -$string['auth_user_creation'] = 'Noví (anonymní) u¾ivatelé si mohou zakládat u¾ivatelský úèet v externím zdroji a potvrdit jej pøes email. Pokud toto povolíte, nezapomeòte nakonfigurovat nastavení pro daný externí zdroj týkající se vytváøení nových u¾ivatelù.'; +$string['auth_user_creation'] = 'Noví (anonymní!) u¾ivatelé si mohou zakládat u¾ivatelský úèet v externím zdroji a potvrdit jej pøes email. Pokud toto povolíte, nezapomeòte nakonfigurovat nastavení pro daný externí zdroj týkající se vytváøení nových u¾ivatelù.'; $string['auth_usernameexists'] = 'Zvolené u¾ivatelské jméno ji¾ existuje. Prosím, vyberte si jiné.'; $string['authenticationoptions'] = 'Mo¾nosti ovìøení'; $string['authinstructions'] = 'Zde mù¾ete zadat instrukce pro va¹e u¾ivatele, aby vìdìli, které u¾ivatelské jméno a heslo mají pou¾ít. Tento text se objeví na pøihla¹ovací stránce. Necháte-li toto pole prázdné, nebudou zobrazeny ¾ádné instrukce.'; $string['changepassword'] = 'URL ke zmìnì hesla'; $string['changepasswordhelp'] = 'Zde mù¾ete urèit URL, na kterém si va¹i u¾ivatelé mohou obnovit heslo nebo zmìnit své u¾ivatelské jméno, pokud jej zapomnìli. URL bude u¾ivatelùm poskytnuto jako tlaèitko na pøihla¹ovací a osobní stránce. Necháte-li toto pole prázdné, nebude toto tlaèítko zobrazováno.'; $string['chooseauthmethod'] = 'Vyberte si zpùsob ovìøení u¾ivatelù: '; -$string['forcechangepassword'] = 'Vynutit zmìnu hesla'; -$string['forcechangepassword_help'] = 'Vynutit zmìnu hesla pøi pøí¹tím pøihlá¹ení do Moodlu.'; -$string['forcechangepasswordfirst_help'] = 'Vynutit zmìnu hesla pøi prvním pøihlá¹ení do Moodlu.'; $string['guestloginbutton'] = 'Tlaèítko pro hosta'; $string['instructions'] = 'Pokyny'; $string['md5'] = 'MD5 ¹ifrování'; $string['plaintext'] = 'Èistý text'; $string['showguestlogin'] = 'Na pøihla¹ovací stránce mù¾ete skrýt nebo ukázat tlaèítko pro pøihlá¹ení se jako host.'; -$string['stdchangepassword'] = 'Pou¾ij standardní stránku \'Zmìna hesla\''; -$string['stdchangepassword_expl'] = 'Pokud vá¹ externí autentizaèní systém umo¾òuje zmìnu hesla pøes Moodle, pøepnìte na Ano. Tímto potlaèíte hodnotu \'URL ke zmìnì hesla\''; -$string['stdchangepassword_explldap'] = 'Pozn.: Pokud pou¾íváte vzdálený LDAP server, doporuèujeme vám komunikovat pøes ¹ifrované SSL spojení (ldaps://)'; ?> diff --git a/lang/cs/block_course_summary.php b/lang/cs/block_course_summary.php index fe702da0e90..3a425e7351b 100644 --- a/lang/cs/block_course_summary.php +++ b/lang/cs/block_course_summary.php @@ -1,8 +1,8 @@ diff --git a/lang/cs/calendar.php b/lang/cs/calendar.php index 65e9d425570..81bfd4a4178 100644 --- a/lang/cs/calendar.php +++ b/lang/cs/calendar.php @@ -1,7 +1,9 @@ v¾dy'; -$string['explainmethoddaemon'] = 'Tato nastavení pùsobí pouze pokud máte vybránu chat_method \"Chat démon na serveru\"'; -$string['explainmethodnormal'] = 'Tato nastavení pùsobí pouze pokud máte vybránu chat_method \"Normální metoda\"'; -$string['generalconfig'] = 'Obecná konfigurace'; $string['helpchatting'] = 'Nápovìda k chatování'; $string['idle'] = 'Neèinný'; $string['messagebeepseveryone'] = '$a nìkoho prozvání!'; @@ -33,13 +24,10 @@ $string['messagebeepsyou'] = '$a v $string['messageenter'] = '$a právì vstoupil do tohoto chatu'; $string['messageexit'] = '$a opustil tento chat'; $string['messages'] = 'Zprávy'; -$string['methoddaemon'] = 'Chat démon na serveru'; -$string['methodnormal'] = 'Normální metoda'; $string['modulename'] = 'Chat'; $string['modulenameplural'] = 'Chatování'; $string['neverdeletemessages'] = 'Nikdy neodstraòovat zprávy'; $string['nextsession'] = 'Pøí¹tí naplánované chatování'; -$string['noguests'] = 'Tento chat není otevøen pro hosty'; $string['nomessages'] = 'Zatím ¾ádné zprávy'; $string['repeatdaily'] = 'Ve stejný èas ka¾dý den'; $string['repeatnone'] = 'Bez opakování - zveøejnit pouze urèený èas'; diff --git a/lang/cs/choice.php b/lang/cs/choice.php index 37d50ee1949..74010b99bc7 100644 --- a/lang/cs/choice.php +++ b/lang/cs/choice.php @@ -1,33 +1,32 @@ diff --git a/lang/cs/countries.php b/lang/cs/countries.php index 2c18fcbf5bd..ef173265ced 100644 --- a/lang/cs/countries.php +++ b/lang/cs/countries.php @@ -1,7 +1,245 @@ diff --git a/lang/cs/dialogue.php b/lang/cs/dialogue.php index 1fddd185bf3..27c15431a8e 100644 --- a/lang/cs/dialogue.php +++ b/lang/cs/dialogue.php @@ -1,46 +1,43 @@
            Jste si jisti, ¾e chcete uzavøít tento rozhovor?'; -$string['deleteafter'] = 'Odstranit uzavøené rozhovory po (poèet dnù)'; +$string['closed'] = 'Uzvaøeno'; +$string['confirmclosure'] = 'Chystáte se uzavøít rozhovor s osobou $a. Uzavøené rozhovory nemohou být znovu otevøeny. Po uzavøení si mù¾ete probìhnutý rozhovor prohlédnout, ale nemù¾ete ji¾ do nìj nic pøidávat a pro pokraèování dialogu budete muset zaèít nový rozhovor.

            Jste si jisti, ¾e chcete uzavøít tento rozhovor?'; +$string['deleteafter'] = 'Odstranit uzvaøené rozhovory po (poèet dnù)'; $string['dialogueclosed'] = 'Rozhovor uzavøen'; -$string['dialogueintro'] = 'Úvod do rozhovoru'; -$string['dialoguemail'] = '$a->userfrom vlozil novy prispevek do vaseho rozhovoru \'$a->dialogue\'. +$string['dialogueintro'] = 'Úvod do Rozhovoru'; +$string['dialoguemail'] = '$a->userfrom vlozil novy prispevek do vaseho rozhovoru \'$a->dialogue\' -Muzete si jej prohlednout na strance rozhovoru: +Muzete jej videt pripojeny k vasemu prispevku: $a->url'; -$string['dialoguemailhtml'] = '$a->userfrom vlo¾il nový pøíspìvek do va¹eho rozhovoru \'$a->dialogue\'.

            +$string['dialoguemailhtml'] = '$a->userfrom vlo¾il nový pøíspìvek do va¹eho rozhovoru \'$a->dialogue\'

            -Mù¾ete si jej prohlédnout na stránce url\">rozhovoru.'; +Mù¾ete jej vidìt pøipojený k va¹emu url\">rozhovoru.'; $string['dialoguename'] = 'Název rozhovoru'; -$string['dialogueopened'] = 'Rozhovor s u¾ivatelem $a otevøen'; -$string['dialoguewith'] = 'Rozhovor s u¾ivatelem $a'; +$string['dialogueopened'] = 'Rozhovor otevøen s $a'; +$string['dialoguewith'] = 'Rozhovor s $a'; $string['everybody'] = 'Mezi kýmkoliv'; $string['furtherinformation'] = 'Dal¹í informace'; $string['lastentry'] = 'Poslední pøíspìvek'; -$string['maildefault'] = 'Implicitnì zasílat e-mailem'; -$string['mailnotification'] = 'Upozornìní e-mailem'; +$string['maildefault'] = 'Implicitnì zasílat emailem'; $string['modulename'] = 'Rozhovor'; $string['modulenameplural'] = 'Rozhovory'; -$string['namehascloseddialogue'] = '$a rozhovor uzavøel(a)'; +$string['namehascloseddialogue'] = '$a rozhovor uzavøel'; $string['newdialogueentries'] = 'Nové pøíspìvky do rozhovoru'; $string['newentry'] = 'Nový pøíspìvek'; $string['noavailablepeople'] = 'Není zde nikdo, s kým byste mohli vést rozhovor.'; $string['nopersonchosen'] = 'Není vybrána ¾ádná osoba'; $string['nosubject'] = 'Nebyl vlo¾en ¾ádný pøedmìt'; $string['notextentered'] = 'Nebyl vlo¾en ¾ádný text'; -$string['notstarted'] = 'Zatím jste nepøispìli do tohoto rozhovoru'; +$string['notstarted'] = 'Zatím jste nepøispìl do tohoto rozhovoru'; $string['notyetseen'] = 'Zatím neprohlí¾eno'; $string['numberofentries'] = 'Poèet pøíspìvkù'; $string['numberofentriesadded'] = 'Poèet pøidaných pøíspìvkù: $a'; @@ -51,7 +48,7 @@ $string['open'] = 'Otev $string['openadialoguewith'] = 'Otevøít rozhovor s'; $string['opendialogue'] = 'Otevøít rozhovor'; $string['opendialogueentries'] = 'Otevøít pøíspìvky rozhovoru'; -$string['pane0'] = 'Otevøít rozhovor'; +$string['pane0'] = 'Otevøít Rozhovor'; $string['pane1'] = '$a rozhovorù èeká na va¹e odpovìdi'; $string['pane1one'] = '1 rozhovor èeká na va¹i odpovìï'; $string['pane2'] = '$a rozhovorù èeká na odpovìdi jiné osoby'; @@ -59,7 +56,7 @@ $string['pane2one'] = '1 rozhovor $string['pane3'] = '$a uzavøených rozhovorù'; $string['pane3one'] = '1 uzavøený rozhovor'; $string['seen'] = 'Vidìno pøed $a'; -$string['sendmailmessages'] = 'Zaslat e-mailem zprávu o mých nových pøíspìvcích'; +$string['sendmailmessages'] = 'Poslat po¹tovní zprávy o mých nových pøíspìvcích'; $string['status'] = 'Stav'; $string['studenttostudent'] = 'Mezi studenty'; $string['subject'] = 'Pøedmìt'; diff --git a/lang/cs/docs/background.html b/lang/cs/docs/background.html index b75d9ba4d5b..0f9d47cb315 100644 --- a/lang/cs/docs/background.html +++ b/lang/cs/docs/background.html @@ -1,85 +1,86 @@ - - + + Dokumentace Moodlu: Historie - - + + - + -

            Historie

            +

            Historie

            -
            +
            -

            Moodle je ¾ivý projekt, na kterém se stále pracuje. U jeho zrodu stál Moodle je ¾ivý projekt, na kterém se stále pracuje. U jeho zrodu stál Martin -Dougiamas, který ho øídí dodnes:

            +Dougiamas, který ho øídí dodnes:

            -

            Zabývám se tím problémem u¾ øadu let. Zaèalo to v devadesátých letech, -kdy jsem byl správcem sítì na Curtin University of Technology, a tedy i správcem tamní +

            + +

            Zabývám se tím problémem u¾ øadu let. Zaèalo to v devadesátých letech, +kdy jsem byl správcem sítì na Curtin University of Technology, a tedy i správcem tamní instalace výukového systému WebCT. A právì èetné frustrace, které mi to pøivodilo, mi nasadily brouka do hlavy - to se pøece urèitì dá dìlat lépe! (Ne, -tabuli, køídu ani Blackboard jsem tím nemyslel :-)

            +tabuli, køídu ani Blackboard jsem tím nemyslel :-)

            -

            Znám spoustu lidí ve ¹kolách a men¹ích institucích (ale i velkých), kteøí +

            Znám spoustu lidí ve ¹kolách a men¹ích institucích (ale i velkých), kteøí by rádi vyu¾ívali internet efektivnìji, ale pro nepøehlednost a mno¾ství technologií a pedagogických pøístupù nevìdí, kde zaèít. V¾dy jsem doufal ve vznik bezplatné alternativy, která by tìmto lidem umo¾nila uplatnit jejich -znalosti na síti.

            +znalosti na síti.

            -

            Pøesvìdèení, ¾e výuka na internetu skýtá velké, ale zatím nevyu¾ité +

            Pøesvìdèení, ¾e výuka na internetu skýtá velké, ale zatím nevyu¾ité mo¾nosti, mì vedlo k magisterskému a posléze doktorandskému studiu v oboru výchovy a vzdìlávání, co¾ mi umo¾nilo propojit mou dosavadní profesi v oblasti výpoèetní techniky s poznatky z pedagogiky. Nejsilnìji mì oslovila teorie poznání nazývaná sociální konstruktivismus - která nejen¾e pojímá studium jako spoleèenskou aktivitu, ale zamìøuje se na získávání dovedností a vìdomostí pøi aktivním vytváøení artefaktù (napø. textù) urèených ke ètení nebo -jinému pou¾ití dal¹ím lidem.

            +jinému pou¾ití dal¹ím lidem.

            -

            Je pro mne velmi dùle¾ité, aby práce s tímto systémem byla co -nejsnaz¹í - usiluji o co nejvìt¹í intuitivnost ovládání.

            +

            Je pro mne velmi dùle¾ité, aby práce s tímto systémem byla co +nejsnaz¹í - usiluji o co nejvìt¹í intuitivnost ovládání.

            -

            Jsem odhodlán na Moodlu pracovat dál a zachovat ho otevøený a bezplatný. +

            Jsem odhodlán na Moodlu pracovat dál a zachovat ho otevøený a bezplatný. Hluboce vìøím ve význam vzdìlání bez omezení a ve výuku s podporou nových technologií, a Moodle je zpùsob, jak mohu k naplnìní tìchto tezí nejlépe -pøispìt.

            +pøispìt.

            -
            +
            -

            Po nìkolika zavr¾ených raných prototypech vypustil Martin dne 20. srpna 2002 +

            Po nìkolika zavr¾ených raných prototypech vypustil Martin dne 20. srpna 2002 do svìta verzi 1.0. Ta byla urèena pro intimnìj¹í prostøedí men¹ích tøíd na vysokých ¹kolách a byla pou¾ita pro øadu studií, které podrobnì zkoumaly -spolupráci a reflexi v tìchto malých skupinách dospìlých úèastníkù.

            +spolupráci a reflexi v tìchto malých skupinách dospìlých úèastníkù.

            -

            Od té doby se pravidelnì objevují dal¹í verze obohacené o nové prvky a -nabízející lep¹í ¹kálovatelnost a vy¹¹í výkon.

            +

            Od té doby se pravidelnì objevují dal¹í verze obohacené o nové prvky a +nabízející lep¹í ¹kálovatelnost a vy¹¹í výkon.

            -

            ©íøení Moodlu a rostoucí poèet u¾ivatelù umo¾òují získávat stále více ohlasù +

            ©íøení Moodlu a rostoucí poèet u¾ivatelù umo¾òují získávat stále více ohlasù od lidí z rùzných vzdìlávacích prostøedí. Moodle nyní nepou¾ívají jen univerzity, ale i støední a základní ¹koly, neziskové organizace, soukromé firmy, nezávislí uèitelé a dokonce i rodièe, kteøí se rozhodli vzdìlávat své dìti doma. Na zkvalitòování Moodlu se rùzným zpùsobem podílí èím dál víc lidí z celého svìta; podrobnosti se dozvíte na stránce Podìkování.

            +href="?file=credits.html">Podìkování.

            -

            Dùle¾itou souèástí projektu Moodle je webová stránka moodle.org. Je zdrojem informací a +

            Dùle¾itou souèástí projektu Moodle je webová stránka moodle.org. Je zdrojem informací a místem pro diskusi a spolupráci u¾ivatelù, mezi nì¾ patøí správci systémù, pedagogové, metodici, vìdci, a samozøejmì vývojáøi. Tato stránka se - stejnì jako Moodle sám - neustále vyvíjí, aby vyhovovala potøebám u¾ivatelù, a stejnì -jako Moodle bude v¾dy zdarma.

            +jako Moodle bude v¾dy zdarma.

            -

            V roce 2003 byla zalo¾ena spoleènost moodle.com, která nabízí roz¹íøenou placenou podporu tìm, kteøí -ji potøebují, správu stránek a konzultantské a dal¹í slu¾by.

            +

            V roce 2003 byla zalo¾ena spoleènost moodle.com, která nabízí roz¹íøenou placenou podporu tìm, kteøí +ji potøebují, správu stránek a konzultantské a dal¹í slu¾by.

            -

            Pokud vás zajímá, jaké máme s Moodlem plány do budoucna, podívejte se na -stránku Výhledy.

            +

            Pokud vás zajímá, jaké máme s Moodlem plány do budoucna, podívejte se na +stránku Výhledy.

            -

            Dokumentace Moodlu

            -

            Verze: $Id$

            +

            Dokumentace Moodlu

            +

            Verze: $Id$

            - + diff --git a/lang/cs/docs/credits.html b/lang/cs/docs/credits.html index b978c10c73f..f2d0a84289d 100644 --- a/lang/cs/docs/credits.html +++ b/lang/cs/docs/credits.html @@ -1,12 +1,11 @@ - - + + Dokumentace Moodlu: Podìkování - - + + - +

            Podìkování

            @@ -110,120 +109,120 @@ jednotliv

            ADOdb   -  lib/adodb

            Knihovna pro abstrahovaný pøístup k databázím MySQL, PostgreSQL, MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 a ODBC.

            -

            Verze: 3.60
            - Copyright © 2000-2003 John Lim (jlim@natsoft.com.my)
            - Licence: Duální LGPL a BSD
            - URL:  http://php.weblogs.com/adodb
            +

            Verze: 3.60
            + Copyright © 2000-2003 John Lim (jlim@natsoft.com.my)
            + Licence: Duální LGPL a BSD
            + URL:  http://php.weblogs.com/adodb

            Tøída Graph   -  lib/graphlib.php

            Tøída pro kreslení èárových, bodových, sloupcových a plo¹ných grafù, vèetnì grafù s èíselnou osou x nebo s dvojí osou y.

            -

            Verze: 1.6.3 (s úpravami)
            - Copyright © 2000  Herman Veluwenkamp, hermanV@mindless.com
            - Licence: LGPL
            +

            Verze: 1.6.3 (s úpravami)
            + Copyright © 2000  Herman Veluwenkamp, hermanV@mindless.com
            + Licence: LGPL

            html2text   -  lib/html2text.php

            PHP skript pro pøevod HTML na pøibli¾ný textový ekvivalent.

            -

            Verze: 1.0 (s úpravami)
            - Copyright © 2002  Mark Wilton-Jones
            - Licence: HowToCreate script license s písemným svolením
            - URL: http://www.howtocreate.co.uk/php/
            +

            Verze: 1.0 (s úpravami)
            + Copyright © 2002  Mark Wilton-Jones
            + Licence: HowToCreate script license s písemným svolením
            + URL: http://www.howtocreate.co.uk/php/

            htmlArea   -  lib/editor

            Online editor pro vkládání textu ve www prohlí¾eèích, napsaný v jazycích Javascript a HTML.

            -

            Verze: 3.0 beta (s úpravami)
            - Copyright © 2002  interactivetools.com, inc.
            - Licence: htmlArea License (zalo¾ená na licenci BSD)
            +

            Verze: 3.0 beta (s úpravami)
            + Copyright © 2002  interactivetools.com, inc.
            + Licence: htmlArea License (zalo¾ená na licenci BSD)

            IP-Atlas  -   lib/ipatlas

            -

            PHP skripty pro zobrazení IP adresy na mapì.
            -
            - Verze: 1.0 (s úpravami)
            - Copyright © 2002   Ivan Kozik
            - Licence: GNU GPL
            - URL: http://www.xpenguin.com/ip-atlas.php
            +

            PHP skripty pro zobrazení IP adresy na mapì.
            +
            + Verze: 1.0 (s úpravami)
            + Copyright © 2002   Ivan Kozik
            + Licence: GNU GPL
            + URL: http://www.xpenguin.com/ip-atlas.php

            mimeTeX  -   filter/tex

            -

            Pøelo¾ený program napsaný v jazyce C, slou¾ící pro pøevod TeXu na GIF.
            -
            - Verze: 1.4
            - Copyright © 2002-2004   John Forkosh Associates, Inc
            - Licence: GNU GPL
            +

            Pøelo¾ený program napsaný v jazyce C, slou¾ící pro pøevod TeXu na GIF.
            +
            + Verze: 1.4
            + Copyright © 2002-2004   John Forkosh Associates, Inc
            + Licence: GNU GPL
            URL: http://www.forkosh.com/mimetex.html

            PclZip  -   lib/pclzip

            -

            Tøída pro vytváøení, správu a rozbalování souborù ZIP.
            -
            - Verze: 2.0 RC2
            - Copyright © 2003  Vincent Blavet <vincent@phpconcept.net>
            - Licence: GNU GPL
            - URL: http://www.phpconcept.net
            +

            Tøída pro vytváøení, správu a rozbalování souborù ZIP.
            +
            + Verze: 2.0 RC2
            + Copyright © 2003  Vincent Blavet <vincent@phpconcept.net>
            + Licence: GNU GPL
            + URL: http://www.phpconcept.net

            PHP mailer   -  lib/class.phpmailer.php

            -

            Tøída pro posílání e-mailù prostøednictvím slu¾eb sendmail, PHP mail() nebo SMTP.  Pou¾ité metody jsou zalo¾eny na standardních tøídách AspEmail(tm).
            -
            - Verze: 1.71,
            - Copyright © 2003 Brent R. Matzelle <bmatzelle@yahoo.com>
            - Licence: LGPL
            - URL:   http://phpmailer.sourceforge.net
            +

            Tøída pro posílání e-mailù prostøednictvím slu¾eb sendmail, PHP mail() nebo SMTP.  Pou¾ité metody jsou zalo¾eny na standardních tøídách AspEmail(tm).
            +
            + Verze: 1.71,
            + Copyright © 2003 Brent R. Matzelle <bmatzelle@yahoo.com>
            + Licence: LGPL
            + URL:   http://phpmailer.sourceforge.net

            Snoopy  -   lib/snoopy

            -

            Sí»ový klient napsaný v jazyce PHP.
            -
            - Verze: 1.0
            - Copyright © 1999-2000 Monte Ohrt <monte@ispi.net>
            - Licence: GNU LGPL
            - URL: http://snoopy.sourceforge.com
            +

            Sí»ový klient napsaný v jazyce PHP.
            +
            + Verze: 1.0
            + Copyright © 1999-2000 Monte Ohrt <monte@ispi.net>
            + Licence: GNU LGPL
            + URL: http://snoopy.sourceforge.com

            Spreadsheet::WriteExcel  -   lib/excel

            -

            Knihovna pro vytváøení se¹itù tabulkového procesoru Excel.
            -
            - Verze: 2002-11-28
            - Copyright © 2002  Xavier Noguer <xnoguer@rezebra.com>
            - Licence: GNU LGPL
            - URL: http://jeffn.users.phpclasses.org/browse.html/package/767.html
            +

            Knihovna pro vytváøení se¹itù tabulkového procesoru Excel.
            +
            + Verze: 2002-11-28
            + Copyright © 2002  Xavier Noguer <xnoguer@rezebra.com>
            + Licence: GNU LGPL
            + URL: http://jeffn.users.phpclasses.org/browse.html/package/767.html

            SMTP class   -  lib/class.smtp.php

            -

            Tøída pro spojení a komunikaci s libovolným SMTP serverem.
            - Jsou v ní implementovány ve¹keré funkce protokolu SMTP definované v RFC821 s výjimkou funkce TURN.
            -
            - Verze: 03/26/2001
            +

            Tøída pro spojení a komunikaci s libovolným SMTP serverem.
            + Jsou v ní implementovány ve¹keré funkce protokolu SMTP definované v RFC821 s výjimkou funkce TURN.
            +
            + Verze: 03/26/2001
            Copyright © 2001  Chris Ryan <chris@greatbridge.com>

            -


            +


            -

            Dokumentace Moodlu

            -

            Verze: $Id$

            +

            Dokumentace Moodlu

            +

            Verze: $Id$

            diff --git a/lang/cs/docs/docstyles.css b/lang/cs/docs/docstyles.css index 869ec4641ee..555c6346970 100644 --- a/lang/cs/docs/docstyles.css +++ b/lang/cs/docs/docstyles.css @@ -1,7 +1,6 @@ body, td, th, li { font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - background-color: #ffffff; } th { diff --git a/lang/cs/docs/faq.html b/lang/cs/docs/faq.html index 6613b63239e..e5c0f8311f0 100644 --- a/lang/cs/docs/faq.html +++ b/lang/cs/docs/faq.html @@ -1,13 +1,11 @@ - - + Dokumentace Moodlu: Èasto kladené dotazy (FAQ/ÈKD) - - + + - +

            Èasto kladené dotazy (FAQ/ÈKD)

            Na této stránce najdete odpovìdi na nìkteré nejèastìji @@ -393,10 +391,10 @@ odpov


            -

            Díky Johnu Eyreovi za pomoc pøi správì této +

            Díky Johnu Eyreovi za pomoc pøi správì této stránky.

            -

            Dokumentace +

            Dokumentace Moodlu

            diff --git a/lang/cs/docs/features.html b/lang/cs/docs/features.html index 42b316da237..0bf05799125 100644 --- a/lang/cs/docs/features.html +++ b/lang/cs/docs/features.html @@ -1,13 +1,12 @@ - - + + Dokumentace systému: Vlastnosti - - + + - +

            Vlastnosti

            @@ -266,7 +265,7 @@ najdete seznam n

             

            -

            Dokumentace Moodlu

            -

            Verze: $Id$

            +

            Dokumentace Moodlu

            +

            Verze: $Id$

            diff --git a/lang/cs/docs/future.html b/lang/cs/docs/future.html index 676b56582ff..c9edd1a31cf 100644 --- a/lang/cs/docs/future.html +++ b/lang/cs/docs/future.html @@ -1 +1,42 @@ - Dokumentace Moodlu: Výhledy

            Výhledy do budoucna

            S postupným zráním Moodlu je smìr jeho vývoje stále více ovlivòován komunitou vývojáøù a u¾ivatelù. Na adrese moodle.org/bugs najdete seznam navrhovaných zmìn i stav jejich zpracování. Va¹e pøíspìvky v podobì nápadù, èástí kódu, zpìtné vazby èi propagace jsou více ne¾ vítány; bli¾¹í informace najdete v Pøíruèce vývojáøe.

            Zde pøedkládáme svoji pøedstavu, kudy se dále ubírat. Samozøejmì v¹ak zále¾í také na tom, na èem chtìjí pracovat samotní vývojáøi.

            Verze 2.0 - polovina roku 2004

            Tato podstatnì inovovaná verze bude obsahovat nìkteré zásadní zmìny ve vnitøní struktuøe systému, smìøující k zvý¹ení flexibility a ¹kálovatelnosti v mnoha oblastech. Hlavními zmìnami budou:

            • novì pøepsaná vrstva zobrazení s pou¾itím kódu kompatibilního s XHTML a s úplnou implementací ¹ablon pro zvý¹ení úrovnì standardizace, pru¾nosti a dostupnosti;
            • ¹ir¹í pou¾ití PHP tøíd v klíèových oblastech kódu; to usnadní práci programátorùm pracujícím na nových modulech nebo tìm, kdo se sna¾í zaèlenit systém Moodle do externích systémù;
            • nová architektura pro zápis do kurzù zalo¾ená na doplòkových modulech (shodná s architekturou pou¾itou u ovìøování u¾ivatelù); toto øe¹ení umo¾ní pou¾ít k øízení pøístupu do kurzù externí systémy (napø. Student Records, Paypal, LDAP apod.).

            Verze 2.1 - závìr roku 2004

            Verze 2.1 by mìla více vyu¾ívat výhod nové architektury a roz¹íøit systém o nové mo¾nosti, jako jsou:

            • nový systém kontroly pøístupu, který umo¾ní pøesnìji definovat pøístupová práva a role;
            • lep¹í pedagogická podpora pro uèitele i studenty;
            • základní podpora standardních výukových objektù (SCORM);
            • lep¹í propojení s moodle.org (mo¾nost spolupráce uèitelù a výmìny materiálù).

             

             

            Dokumentace Moodlu

            Version: $Id$

            \ No newline at end of file + +Dokumentace Moodlu: Výhledy + + + + + + +

            Výhledy do budoucna

            +
            +

            S postupným zráním Moodlu je smìr jeho vývoje stále více ovlivòován komunitou vývojáøù a u¾ivatelù. Na adrese moodle.org/bugs najdete seznam navrhovaných zmìn i stav jejich zpracování. Va¹e pøíspìvky v podobì nápadù, èástí kódu, zpìtné vazby èi propagace jsou více ne¾ vítány; bli¾¹í informace najdete v Pøíruèce vývojáøe.

            +

            Zde pøedkládáme svoji pøedstavu, kudy se dále ubírat. Samozøejmì v¹ak zále¾í také na tom, na èem chtìjí pracovat samotní vývojáøi.

            + + +

            Verze 2.0 - polovina roku 2004

            + +
            +

            Tato podstatnì inovovaná verze bude obsahovat nìkteré zásadní zmìny ve vnitøní struktuøe systému, smìøující k zvý¹ení flexibility a ¹kálovatelnosti v mnoha oblastech. Hlavními zmìnami budou: +

              +
            • novì pøepsaná vrstva zobrazení s pou¾itím kódu kompatibilního s XHTML a s úplnou implementací ¹ablon pro zvý¹ení úrovnì standardizace, pru¾nosti a dostupnosti;
            • +
            • ¹ir¹í pou¾ití PHP tøíd v klíèových oblastech kódu; to usnadní práci programátorùm pracujícím na nových modulech nebo tìm, kdo se sna¾í zaèlenit systém Moodle do externích systémù;
            • +
            • nová architektura pro zápis do kurzù zalo¾ená na doplòkových modulech (shodná s architekturou pou¾itou u ovìøování u¾ivatelù); toto øe¹ení umo¾ní pou¾ít k øízení pøístupu do kurzù externí systémy (napø. Student Records, Paypal, LDAP apod.).
            • +
            +
            + +

            Verze 2.1 - závìr roku 2004

            + +
            +

            Verze 2.1 by mìla více vyu¾ívat výhod nové architektury a roz¹íøit systém o nové mo¾nosti, jako jsou:

            +
              +
            • nový systém kontroly pøístupu, který umo¾ní pøesnìji definovat pøístupová práva a role;
            • +
            • lep¹í pedagogická podpora pro uèitele i studenty;
            • +
            • základní podpora standardních výukových objektù (SCORM);
            • +
            • lep¹í propojení s moodle.org (mo¾nost spolupráce uèitelù a výmìny materiálù).
            • +
            +
            +

             

            +
            +

             

            +

            Dokumentace Moodlu

            +

            Version: $Id$

            + diff --git a/lang/cs/docs/install.html b/lang/cs/docs/install.html index dc875d85ca5..324357c0f0f 100644 --- a/lang/cs/docs/install.html +++ b/lang/cs/docs/install.html @@ -1,567 +1,283 @@ - - - - - Moodle: Instalace - - - - - - - - - - - - - -

            Instalace Moodle

            - -
            - -

            Tato pøíruèka popisuje, jak probíhá první instalace Moodle. V nìkterých krocích zabíhá trochu do detailù, aby bylo mo¾no pokrýt drobné rozdíly v nastavování rùzných webových serverù, tak¾e se tento dokument mù¾e jevit zbyteènì dlouhý a komplikovaný. Není tøeba nechávat se odradit - Moodle lze nastavit bìhem nìkolika minut!

            - -

            Dopøejte si èas a projdìte tento dokument peèlivì - u¹etøíte si tím mno¾ství zbyteèné práce pozdìji.

            - -

            Obsah tohoto dokumentu:

            - -
              - -
            1. Po¾adavky
            2. - -
            3. Stahování
            4. - -
            5. Struktura stránek
            6. - -
            7. Vytvoøení datového adresáøe
            8. - -
            9. Vytvoøení databáze
            10. - -
            11. Kontrola nastavení webového serveru
            12. - -
            13. Úprava config.php
            14. - -
            15. Administrátorská stránka
            16. - -
            17. Nastavení cron
            18. - -
            19. Vytvoøení nového kurzu
            20. - -
            - -

             

            - -
            - - - -

            1. Po¾adavky

            - -
            - - - -

            Moodle je vyvíjen pøevá¾nì v Linuxu pomocí PHP, Apache a MySQL. Je pravidlenì testován na PostgreSQL a v prostøedí Windows XP a Mac OS X.

            - -

            Co potøebujete:

            - -
              - -
            1. bì¾ící PHP (verze 4.1.0 nebo vy¹¹í) s následujícími funkcemi (vìt¹ina dne¹ních PHP instalací je má v¹echny): - -
                - -
              • Knihovna GD s podporou formátù JPG a PNG
              • - -
              • Zapnutou zlib knihovnu (pokud chcete zálohovat/obnovovat kurzy na Windows serveru)
              • - -
              • Zapnutou podporu sessions
              • - -
              • Povoleno nahrávání souborù (file uploading)
              • - -
              • Vypnutý Safe Mode (více o problémech s tímto re¾imem v diskusních fórech na moodle.org
              • - -
              - -
            2. - -
            3. bì¾ící databázový server: doporuèuje se MySQL nebo PostgreSQL. Teoreticky je mo¾no pou¾ít té¾ MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 nebo ODBC, ale v tìchto pøípadech budete muset ruènì nastavovat databázové tabulky.
            4. - -
            - -

            Na platformì Windows je nejsnadnìj¹í cestou ke splnìní tìchto po¾adavkù sta¾ení a instalace FoxServ nebo EasyPHP. Tím získáte Apache, PHP i MySQL. Ujistìte se, ¾e máte povolen modul GD - Moodle jinak nebude schopen zpracovávat obrázky. Mo¾ná proto budete muset odstranit komentáø (;) z následující øádky v souboru php.ini: 'extension=php_gd.dll'. Je té¾ mo¾né, ¾e budete muset opravit adresáø session.save_path - namísto standardního "/tmp" pou¾ijte nìjaký adresáø Windows, napøíklad "c:/temp".

            - - - -

            Na platformì Mac OS X se doporuèuje projekt fink. Jeho sta¾ením získáte snadno udr¾ovatelný balík potøebného software. Nerozumíte-li si s pøíkazovou øádkou, bude pro vás nejsnadnìj¹í cestou k fungujícímu PHP na Mac OS X serveru Marc Liyanage's PHP Apache Module.

            - - - -

            Pracujete-li na Linuxu nebo jiném Unixu, pak asi víte, jak v¹echny tyto vìci rozbìhnout. Have a lot of fun... ;-)

            - - - -
            - -

             

            - - - -

            2. Stahování

            - -
            - -

            Moodle si mù¾ete stáhnout buï jako zkomprimovaný balík nebo pomocí CVS. Oba zpùsoby jsou popsány v sekci 'Download' na http://moodle.org/

            - -

            Po sta¾ení a rozbalení archívu (popøípadì po získání souborù pøes CVS) naleznete adresáø nazvaný "moodle" a v nìm mno¾ství souborù a podadresáøù.

            - -

            Nyní musíte celý tento adresáø umístit (tj. zkopírovat nebo pøesunout) na vá¹ server do adresáøe s webovými dokumenty (napøíklad htdocs), èím¾ budou va¹e stránky viditelné na adrese typu http://vasserver.cz/moodle, nebo se mù¾ete rozhodnout zkopírovat celý obsah pøímo do hlavního webového adresáøe a stránky tak budou viset na nìèem jako http://vasserver.cz.

            - -
            - -

             

            - - - -

            3. Struktura stránek

            - -
            - -

            Pro orientaci uvádíme struèný pøehled obsahu adresáøe Moodle:

            - -
            - -

            config.php - jediný soubor, který musíte na zaèátku ruènì upravovat
            - - version.php - definuje verzi zdrojových kódù Moodle
            - - index.php - titulní stránka

            - -
              - -
            • admin/ - kód pro správu (administration) celého Moodle serveru
            • - -
            • auth/ - zásuvné moduly pro ovìøování (authentication) u¾ivatelù
            • - -
            • course/ - kód pro zobrazování a správu kurzù
            • - -
            • doc/ - nápovìda a dokumentace k Moodle (napøíklad tato stránka)
            • - -
            • files/ - kód pro zobrazování a správu nahraných (uploaded) souborù
            • - -
            • lang/ - pou¾ívané texty v rùzných jazycích, na ka¾dou lokalizaci jeden podadresáø
            • - -
            • lib/ - knihovny pou¾ívané jádrem Moodle
            • - -
            • login/ - kód pro zpracování pøihlá¹ení u¾ivatelù a zøizování nových úètù
            • - -
            • mod/ - v¹echny moduly pou¾itelné v Moodle kurzech
            • - -
            • pix/ - grafika pou¾ívaná na stránkách
            • - -
            • theme/ - motivy stránek pro zmìnu jejich vzhledu
            • - -
            • user/ - kód pro zobrazování a správu u¾ivatelù
            • - -
            - -

             

            - -
            - -
            - - - -

            4. Vytvoøení datového adresáøe

            - -
            - -

            Moodle bude potøebovat nìjaké místo na disku, kam bude ukládat nahrané soubory, jako jsou napøíklad studijní materiály èi odevzdané úkoly a dal¹í dokumenty v kurzech nebo fotografie u¾ivatelù.

            - - - -

            Pro tyto úèely vytvoøte nìkde na va¹em serveru adresáø, do nìj¾ bude Moodle tyto soubory ukládat. Z dùvodù vìt¹í bezpeènosti je lep¹í, aby tento adresáø NEBYL pøístupný pøímo pøes web. Toho snadno dosáhnete tím, ¾e jej umístíte mimo strukturu webového adresáøe. Jinak lze té¾ tento datový adresáø ochránit vytvoøením souboru nazvaným .htaccess, který bude obsahovat tuto øádku: - -

            - -
            deny from all
            - -
            - - - -

            Aby mohl Moodle tento adresáø pou¾ívat, ujistìte se, ¾e proces webového serveru (napøíklad Apache) má právo zápisu do tohoto adresáøe. Na Unixových strojích pro to vìt¹inou postaèuje nastavit vlastníka tohoto adresáøe na nìco jako "wwwrun" nebo "apache".

            - - - -

            Na mnoha hostitelských webových serverech budete mo¾ná potøebovat omezit pøístup dal¹ích u¾ivatelù serveru k souborùm (a zabránit jim tak v jejich prohlí¾ení nebo zmìnì) a naopak poskytnout plný pøístup pro ètení a zápis komukoliv dal¹ímu (co¾ umo¾ní webovému serveru pøistupovat k va¹im souborùm). Máte-li problémy s bezpeèným nastavením pøístupu k va¹im datùm, promluvte si se správcem va¹eho webu.

            - - - -
            - -

             

            - - - -

            5. Vytvoøení databáze

            - -
            - -

            Musíte vytvoøit prázdnou databázi (nazvanou napøíklad "moodle") ve va¹em databázovém systému, stejnì jako zvlá¹tního u¾ivatele (napøíklad "moodleuser"), který bude mít k této (a jen této) databázi pøístup. Chcete-li, pou¾ijte i superu¾ivatele "root", ale toto se nedoporuèuje: dojde-li k prozrazení hesla, je ohro¾en celý vá¹ databázový systém a ne pouze jedna databáze. - -

            - -

            Ukázka pøíkazových øádkù pro MySQL:

            - -
            -
            -   # mysql -u root -p
            -
            -   > CREATE DATABASE moodle; 
            -
            -   > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.* 
            -
            -           TO moodleuser@localhost IDENTIFIED BY 'sem_napiste_heslo'; 
            -
            -   > quit 
            -
            -   # mysqladmin -p reload
            -
            -
            - -

            Ukázka pøíkazových øádkù pro PostgreSQL:

            - -
            -
            -   # su - postgres
            -
            -   > psql -c "create user moodleuser createdb;" template1
            -
            -   > psql -c "create database moodle;" -U moodleuser template1
            -
            -   > psql -c "alter user moodleuser nocreatedb;" template1
            -
            -
            - -

            (Pro správu databází MySQL lze doporuèit phpMyAdmin).

            - -

            Od verze 1.0.8 Moodle podporuje pøedpony (prefixes) v názvech tabulek, tak¾e mù¾ete bez problémù sdílet jednu databázi s dal¹ími aplikacemi.

            - -
            - -

             

            - - - -

            6. Kontrola nastavení va¹eho webového serveru

            - -
            - -

            Nejprve se ujistìte, ¾e vá¹ webový server je nastaven tak, aby pou¾íval index.php jako implicitní stránku (mo¾ná v kombinaci s index.html, default.htm a tak podobnì).

            - -

            V Apache se toto dìlá pomocí parametru DirectoryIndex v souboru httpd.conf . Mù¾e vypadat napøíklad takto:

            - -
            - -
            DirectoryIndex index.php index.html index.htm 
            - -
            - -

            Staèí se ujistit, ¾e index.php je na tomto seznamu (a pokud mo¾no co nejvíce vlevo - kvùli výkonu).

            - -

            Dále, pou¾íváte-li Apache 2, zapnìte promìnnou AcceptPathInfo, která povoluje pøedávat skriptùm argumenty ve formì http://server/file.php/arg1/arg2. To je nezbytné, chcete-li u¾ívat relativní odkazy mezi va¹imi zdroji. Zároveò to mù¾e zvý¹it rychlost naèítání va¹ich Moodle stránek. Tuto volbu mù¾ete zapnout pøidáním následujích øádek do httpd.conf:

            - -
            - -
            AcceptPathInfo on 
            - -
            - - - -

            Do tøetice Moodle vy¾aduje, aby bylo zapnuto nìkolik funkcí PHP. Na vìt¹inì serverù jsou tyto funkce zapnuty implicitnì. Nicménì nìkteré PHP servery (a nìkteré star¹í verze PHP) mohou mít tyto vìci nastaveny odli¹nì. Ujistìte se proto, zda vá¹ konfiguraèní soubor PHP (vìt¹inou pojmenovaný php.ini) obsahuje:

            - -
            - -
            magic_quotes_gpc = On
            -
            -   magic_quotes_runtime = Off
            -
            -   file_uploads = On
            -
            -   short_open_tag = On
            -
            -   session.auto_start = Off
            -
            -   session.bug_compat_warn = Off
            -
            -   
            - -
            - -

            Nemáte-li na va¹em serveru pøístup k httpd.conf nebo php.ini, nebo pokud je Moodle na jednom serveru spolu s aplikacemi, které vy¾adují jiné nastavení, mù¾ete tato standardní nastavení POTLAÈIT. - - - -

            K tomu je potøeba vytvoøit soubor .htaccess v hlavním adresáøi Moodle a do nìj napsat tato nastavení. Toto funguje pouze na serveru Apache, pokud má navíc povoleno Overrides. - -

            -
            -DirectoryIndex index.php index.html index.htm
            -
            -
            -
            -<IfDefine APACHE2>
            -
            -     AcceptPathInfo on
            -
            -</IfDefine>
            -
            -
            -
            -php_value magic_quotes_gpc On
            -
            -php_value magic_quotes_runtime Off
            -
            -php_value file_uploads On
            -
            -php_value short_open_tag On
            -
            -php_value session.auto_start Off
            -
            -php_value session.bug_compat_warn Off
            - -

            Zde mù¾ete rovnì¾ nastavit dal¹í vìci, jako napøíklad maximální mo¾nou velikost nahrávaných (tj. na server posílaných) souborù: - -

            -
            -php_value upload_max_filesize 2M
            -
            -php_value post_max_size 2M
            -
            -     
            - - - -

            Nejjednodu¹¹ím zpùsobem bude asi zkopírovat si pøipravený soubor lib/htaccess a upravit jej podle va¹ich potøeb. Sledujte dal¹í pokyny v tomto souboru. - - - -

            - -

             

            - -

            7. Úprava config.php

            - -
            - -

            Nyní ji¾ mù¾ete upravit hlavní konfiguraèní soubor config.php pomocí va¹eho oblíbeného textového editoru. Tento soubor je pou¾íván ostatními skripty v Moodle.

            - -

            Zaènìte tím, ¾e vytvoøíte kopii dodaného souboru config-dist.php a nazvìte ji config.php. Tím máte zaruèeno, ¾e pozdìj¹í aktualizace Moodle na vy¹¹í verzi vá¹ konfiguraèní soubor nepøepí¹e.

            - -

            Upravte config.php tak, aby souhlasily podrobnosti o pou¾ité databázi, kterou jste pro Moodle vytvoøili (vèetnì pøedpony - prefix - tabulek, to je NUTNÉ pøi pou¾ití PostgreSQL), dále údaje o adrese stránek, umístìní instalace v systému souborù a cestì k datovému adresáøi. Soubor config.php obsahuje podrobnìj¹í instrukce.

            - -

            Nadále budeme v tomto dokumentu pøedpokládat, ¾e va¹e instalace Moodle je dostupná na adrese http://napriklad.cz/moodle

            - -
            - -

             

            - -

            8. Administrátorská stránka

            - -
            - -

            Stránka urèená pro správu Moodle by se nyní mìla zobrazit na adrese http://napriklad.cz/moodle/admin. Nicménì i kdy¾ si v této fázi budete chtít zobrazit titulní stránku, systém vás sám po¹le na stránku správy k dokonèení instalace. Pøi prvním naètení administrátorské stránky budete vybídnuti k souhlasu s licenèními podmínkami GPL (General Public License). Nebudete-li s tìmito podmínkami souhlasit, v instalaci nebude mo¾no pokraèovat.

            - -

            (Moodle se rovnì¾ pokusí poslat va¹emu prohlí¾eèi nìjaké cookies. Máte-li vá¹ prohlí¾eè nastavený tak, ¾e si mù¾ete vybrat, zda chcete cookies pøijmout nebo ne, pak cookies od Moodle pøijmout musíte, jinak vám nebude Moodle správnì pracovat.) - -

            Nyní zaène Moodle nastavovat svou databázi a vytváøet v ní potøebné tabulky pro uchovávání svých dat. Nejdøíve jsou nastaveny hlavní databázové tabulky. Mìli byste vidìt mno¾ství SQL povelù a za nimi informaci o tom, zda se povel podaøilo úspì¹nì vykonat (pro pøehlednost v zelené èi èervené barvì), tedy nìco jako tohle:

            - -
            - -

            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

            - -

            SUCCESS

            - -

            ...a tak dále. Na konci pak nìco jako: Hlavní databáze byly úspì¹nì nastaveny.

            - -
            - -

            Pokud nevidíte tohle, pak musí být nìkde problém s databází nebo údaji, které jste nastavili v config.php. Zkontrolujte, zda PHP náhodou nebì¾í v omezeném bezpeèném re¾imu "safe mode" (komerèní hostitelé èasto poskytují web právì v tomto re¾imu). Nastavení PHP mù¾ete snadno zjistit vytvoøením malého souboru, který obsahuje <? phpinfo() ?> a na který se podíváte pomocí va¹eho prohlí¾eèe. Zkontrolujte je¹tì jednou celé nastavení a zkuste se znovu vrátit na stránku správy.

            - -

            Pøesuòte se a¾ na dolní konec stránky a následujte odkaz "Pokraèovat".

            - -

            Dále uvidíte podobnou stránku, která nastavuje v¹echny tabulky potøebné pro jednotlivými moduly. Stejnì jako pøedtím, i nyní by v¹echno mìlo projít na zelenou.

            - - - -

            Opìt sjeïte a¾ na spodní okraj stránky a stisknìte "Pokraèovat".

            - - - -

            Nyní byste mìli vidìt formuláø, ve kterém mù¾ete definovat øadu dal¹ích promìnných, jako napøíklad implicitnì nabízený jazyk va¹ich stránek, SMTP hostitele a tak podobnì. Nemìjte strach z toho, ¾e zde nenastavíte v¹echno napoprvé správnì. Na tuto stránku se mù¾ete kdykoliv pozdìji vrátit pomocí administrátorského rozhraní. Sjeïte na konec stránky a stisknìte "Ulo¾it zmìny".

            - - - -

            Pokud (a pouze pokud) se zaseknete na této nebo dal¹í stránce a nemù¾ete pokraèovat, pak má vá¹ server pravdìpodobnì problém, kterému se øíká "buggy referrer". Odstranit jej je snadné: upravte vá¹ config.php a nastavte promìnnou buggy_referrer na true, pak se znovu vra»te na tuto stránku.

            - - - -

            Dal¹í stránku tvoøí formuláø, kde mù¾ete nastavit parametry va¹ich Moodle stránek, jakými jsou název stránek, jejich popis a podobnì. Vyplòte jej (mù¾ete tyto vìci mìnit i pozdìji) a stisknìte "Ulo¾it zmìny".

            - - - -

            Nakonec budete po¾ádáni o vytvoøení hlavního administrátorského úètu pro dal¹í pøístup ke stránkám správy. Vyplòte podrobnosti o va¹em jménì, emailové adrese apod. a kliknìte na "Ulo¾it zmìny". Ne v¹echna pole jsou povinná, ale pokud nevyplníte nìkteré, které je Moodlem vy¾adováno, budete na nìj znovu dotázáni.

            - -
            - -
            - - - -

            Peèlivì si zapamatujte u¾ivatelské jméno a heslo, které jste pou¾ili pro administrátorský úèet. Budete jej v budoucnu potøebovat pøi pøístupu na stránky správy.

            - - - -
            - -
            - -

            Po úspì¹ném nastavení budete vráceni na hlavní stránku správy, která obsahuje øadu odkazù uspoøádáných do nabídky (tyto polo¾ky se vám rovnì¾ objeví na titulní stránce, jste-li pøihlá¹en jako správce). Celá správa Moodle mù¾e být øízena z této nabídky, to znamená, ¾e odtud mù¾ete zejména:

            - -
              - -
            • vytváøet a odstraòovat kurzy
            • - -
            • vytváøet a upravovat u¾ivatelské úèty
            • - -
            • spravovat úèty uèitelù
            • - -
            • mìnit nastavení stránek (motiv, název apod.)
            • - -
            - -
            - -

             

            - - - -

            9. Nastavení cron

            - -
            - -

            Nìkteré moduly v Moodle vy¾adují prùbì¾nou kontrolu plnìní svých úloh. Systém napøíklad potøebuje zkontrolovat diskusní fóra a odeslat novì vlo¾ené pøíspìvky emailem tìm u¾ivatelùm, kteøí si zøídili jejich odebírání.

            - -

            Skript, který má tohle na starosti, je umístìn v adresáøi admin a jmenuje se cron.php. Tento skript se v¹ak neumí spou¹tìt sám, proto je tøeba nastavit mechanismus pravidelného volání tohoto skriptu (napøíklad ka¾dých pìt minut). Tím systém získá nìco jako "srdeèní tep" a skript mù¾e volat dal¹í funkce v periodách definovaných jednotlivými moduly.

            - -

            Pov¹imnìte si, ¾e stroj volající cron.php nemusí být tentý¾, jako ten, na kterém vám bì¾í Moodle.. Je-li vám tedy poskytována webová schránka bez mo¾nosti nastavení slu¾by cron, mù¾ete pravidelné volání va¹eho skriptu zøídit na jakémkoliv jiném serveru èi dokonce domácím poèítaèi. Hlavní je, aby byl skript cron.php volán asi ka¾dých pìt minut (nebo tak òák).

            - -

            Nejprve si vyzkou¹ejte, zda vám funguje ruèní volání pomocí va¹eho prohlí¾eèe:

            - -
            - -
            http://napriklad.cz/moodle/admin/cron.php
            - -
            - -

            Nyní potøebujte zaøídit, aby se tento skript nìjakým zpùsobem volal automaticky a pravidelnì.

            - -

            Spou¹tìní skriptu z pøíkazové øádky

            - -

            Lze volat stránku z pøíkazové øádky obdobným zpùsobem, jako bylo uvedeno v pøedchozím pøíkladu. Mù¾ete napøíklad pou¾ít Unixový prográmek 'wget':

            - -
            - -
            wget -q -O /dev/null http://napriklad.cz/moodle/admin/cron.php
            - -
            - -

            V¹imnìte si, ¾e v tomto pøíkladu je výstup stránky zahozen (resp. pøesmìrován na /dev/null).

            - -

            Stejným zpùsobem pøi pou¾ití programu 'lynx':

            - -
            - -
            lynx -dump http://napriklad.cz/moodle/admin/cron.php > /dev/null
            - -
            - -

            Pøípadnì mù¾ete pou¾ít nezávislou verzi PHP zkompilovanou tak, aby se spou¹tìla na pøíkazové øádce. Výhodou tohoto zpùsobu je, ¾e protokol va¹eho webového serveru není zaplòován opakujícími se po¾adavky na cron.php. Nevýhodou je, ¾e musíte mít pøístup k øádkové verzi PHP:

            - -
            - -
            /opt/bin/php /web/moodle/admin/cron.php
            -
            -
            -
            -
            -
            -(Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php
            -
            -
            - -
            - -

            Automatické spou¹tìní skriptu ka¾dých 5 minut

            - -

            Na Unixových systémech: Pou¾ijte cron. Upravte va¹e nastavení cron z pøíkazové øádky pomocí "crontab -e" a pøidejte øádku podobnou této:

            - -
            - -
            */5 * * * * wget -q -O /dev/null http://napriklad.cz/moodle/admin/cron.php
            - -
            - -

            Na Windows: Nejsnadnìj¹í cestou je pou¾ít balík moodle-cron-for-windows.zip, který øe¹í celou vìc velice jednodu¹e. Mù¾ete rovnì¾ vyzkou¹et zabudovanou funkci Windows "Naplánované úlohy" (Scheduled Tasks).

            - -
            - - - -

            10. Vytvoøení nového kurzu

            - -
            - -

            Nyní, kdy¾ vám Moodle zdárnì bì¾í, mù¾ete zaèít vytváøet kurzy.

            - -

            Zvolte "Vytvoøit nový kurz" z nabídky na stránce Správa (popøípadì administrátorský odkaz na hlavní stránce).

            - -

            Vyplòte formuláø, pozornost vìnujte zejména polo¾ce uspoøádání kurzu. V této fázi se nemusíte pøíli¹ starat o podrobnosti, v¹echna nastavení kurzu mohou být pozdìji upravena pøiøazeným vyuèujícím.

            - -

            Stisknìte "Ulo¾it zmìny" a ocitnete se na dal¹í stránce, kde k vytvoøenému kurzu pøiøazujte uèitele. K dispozici jsou vám pouze ji¾ existující u¾ivatelé. Chcete-li zalo¾it nový uèitelský úèet, po¾ádejte pøíslu¹ného uèitele, aby si jej na va¹ich stránkách zøídil sám (podle pokynù na pøihla¹ovací stránce) nebo mu jej zalo¾te ruènì z nabídky "Pøidat nového u¾ivatele" na stránce Správa.

            - -

            Je-li v¹e hotovo, je kurz pøipraven k dal¹ím úpravám. Od této chvíle je pøístupný z nabídky "Kurzy" na hlavní stránce.

            - -

            Viz té¾ "Pøíruèku uèitele", kde naleznete dal¹í podrobnosti týkající se výstavby kurzu.

            - -
            - -

             

            - -

            Moodle Dokumentace

            - -

            Èeská verze: $Id$

            - - - - - + + Moodle: Instalace + + + + + + +

            Instalace Moodle

            +
            +

            Tato pøíruèka popisuje, jak probíhá první instalace Moodle. V nìkterých krocích zabíhá trochu do detailù, aby bylo mo¾no pokrýt drobné rozdíly v nastavování rùzných webových serverù, tak¾e se tento dokument mù¾e jevit zbyteènì dlouhý a komplikovaný. Není tøeba nechávat se odradit - Moodle lze nastavit bìhem nìkolika minut!

            +

            Dopøejte si èas a projdìte tento dokument peèlivì - u¹etøíte si tím mno¾ství zbyteèné práce pozdìji.

            +

            Obsah tohoto dokumentu:

            +
              +
            1. Po¾adavky
            2. +
            3. Stahování
            4. +
            5. Struktura stránek
            6. +
            7. Vytvoøení datového adresáøe
            8. +
            9. Vytvoøení databáze
            10. +
            11. Kontrola nastavení webového serveru
            12. +
            13. Úprava config.php
            14. +
            15. Administrátorská stránka
            16. +
            17. Nastavení cron
            18. +
            19. Vytvoøení nového kurzu
            20. +
            +

             

            +
            + +

            1. Po¾adavky

            +
            + +

            Moodle je vyvíjen pøevá¾nì v Linuxu pomocí PHP, Apache a MySQL. Je pravidlenì testován na PostgreSQL a v prostøedí Windows XP a Mac OS X.

            +

            Co potøebujete:

            +
              +
            1. bì¾ící PHP (verze 4.1.0 nebo vy¹¹í) s následujícími funkcemi (vìt¹ina dne¹ních PHP instalací je má v¹echny): +
                +
              • Knihovna GD s podporou formátù JPG a PNG
              • +
              • Zapnutou zlib knihovnu (pokud chcete zálohovat/obnovovat kurzy na Windows serveru)
              • +
              • Zapnutou podporu sessions
              • +
              • Povoleno nahrávání souborù (file uploading)
              • +
              • Vypnutý Safe Mode (více o problémech s tímto re¾imem v diskusních fórech na moodle.org
              • +
              +
            2. +
            3. bì¾ící databázový server: doporuèuje se MySQL nebo PostgreSQL. Teoreticky je mo¾no pou¾ít té¾ MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 nebo ODBC, ale v tìchto pøípadech budete muset ruènì nastavovat databázové tabulky.
            4. +
            +

            Na platformì Windows je nejsnadnìj¹í cestou ke splnìní tìchto po¾adavkù sta¾ení a instalace FoxServ nebo EasyPHP. Tím získáte Apache, PHP i MySQL. Ujistìte se, ¾e máte povolen modul GD - Moodle jinak nebude schopen zpracovávat obrázky. Mo¾ná proto budete muset odstranit komentáø (;) z následující øádky v souboru php.ini: 'extension=php_gd.dll'. Je té¾ mo¾né, ¾e budete muset opravit adresáø session.save_path - namísto standardního "/tmp" pou¾ijte nìjaký adresáø Windows, napøíklad "c:/temp".

            + +

            Na platformì Mac OS X se doporuèuje projekt fink. Jeho sta¾ením získáte snadno udr¾ovatelný balík potøebného software. Nerozumíte-li si s pøíkazovou øádkou, bude pro vás nejsnadnìj¹í cestou k fungujícímu PHP na Mac OS X serveru Marc Liyanage's PHP Apache Module.

            + +

            Pracujete-li na Linuxu nebo jiném Unixu, pak asi víte, jak v¹echny tyto vìci rozbìhnout. Have a lot of fun... ;-)

            + +
            +

             

            + +

            2. Stahování

            +
            +

            Moodle si mù¾ete stáhnout buï jako zkomprimovaný balík nebo pomocí CVS. Oba zpùsoby jsou popsány v sekci 'Download' na http://moodle.org/

            +

            Po sta¾ení a rozbalení archívu (popøípadì po získání souborù pøes CVS) naleznete adresáø nazvaný "moodle" a v nìm mno¾ství souborù a podadresáøù.

            +

            Nyní musíte celý tento adresáø umístit (tj. zkopírovat nebo pøesunout) na vá¹ server do adresáøe s webovými dokumenty (napøíklad htdocs), èím¾ budou va¹e stránky viditelné na adrese typu http://vasserver.cz/moodle, nebo se mù¾ete rozhodnout zkopírovat celý obsah pøímo do hlavního webového adresáøe a stránky tak budou viset na nìèem jako http://vasserver.cz.

            +
            +

             

            + +

            3. Struktura stránek

            +
            +

            Pro orientaci uvádíme struèný pøehled obsahu adresáøe Moodle:

            +
            +

            config.php - jediný soubor, který musíte na zaèátku ruènì upravovat
            + version.php - definuje verzi zdrojových kódù Moodle
            + index.php - titulní stránka

            +
              +
            • admin/ - kód pro správu (administration) celého Moodle serveru
            • +
            • auth/ - zásuvné moduly pro ovìøování (authentication) u¾ivatelù
            • +
            • course/ - kód pro zobrazování a správu kurzù
            • +
            • doc/ - nápovìda a dokumentace k Moodle (napøíklad tato stránka)
            • +
            • files/ - kód pro zobrazování a správu nahraných (uploaded) souborù
            • +
            • lang/ - pou¾ívané texty v rùzných jazycích, na ka¾dou lokalizaci jeden podadresáø
            • +
            • lib/ - knihovny pou¾ívané jádrem Moodle
            • +
            • login/ - kód pro zpracování pøihlá¹ení u¾ivatelù a zøizování nových úètù
            • +
            • mod/ - v¹echny moduly pou¾itelné v Moodle kurzech
            • +
            • pix/ - grafika pou¾ívaná na stránkách
            • +
            • theme/ - motivy stránek pro zmìnu jejich vzhledu
            • +
            • user/ - kód pro zobrazování a správu u¾ivatelù
            • +
            +

             

            +
            +
            + +

            4. Vytvoøení datového adresáøe

            +
            +

            Moodle bude potøebovat nìjaké místo na disku, kam bude ukládat nahrané soubory, jako jsou napøíklad studijní materiály èi odevzdané úkoly a dal¹í dokumenty v kurzech nebo fotografie u¾ivatelù.

            + +

            Pro tyto úèely vytvoøte nìkde na va¹em serveru adresáø, do nìj¾ bude Moodle tyto soubory ukládat. Z dùvodù vìt¹í bezpeènosti je lep¹í, aby tento adresáø NEBYL pøístupný pøímo pøes web. Toho snadno dosáhnete tím, ¾e jej umístíte mimo strukturu webového adresáøe. Jinak lze té¾ tento datový adresáø ochránit vytvoøením souboru nazvaným .htaccess, který bude obsahovat tuto øádku: +

            +
            deny from all
            +
            + +

            Aby mohl Moodle tento adresáø pou¾ívat, ujistìte se, ¾e proces webového serveru (napøíklad Apache) má právo zápisu do tohoto adresáøe. Na Unixových strojích pro to vìt¹inou postaèuje nastavit vlastníka tohoto adresáøe na nìco jako "wwwrun" nebo "apache".

            + +

            Na mnoha hostitelských webových serverech budete mo¾ná potøebovat omezit pøístup dal¹ích u¾ivatelù serveru k souborùm (a zabránit jim tak v jejich prohlí¾ení nebo zmìnì) a naopak poskytnout plný pøístup pro ètení a zápis komukoliv dal¹ímu (co¾ umo¾ní webovému serveru pøistupovat k va¹im souborùm). Máte-li problémy s bezpeèným nastavením pøístupu k va¹im datùm, promluvte si se správcem va¹eho webu.

            + +
            +

             

            + +

            5. Vytvoøení databáze

            +
            +

            Musíte vytvoøit prázdnou databázi (nazvanou napøíklad "moodle") ve va¹em databázovém systému, stejnì jako zvlá¹tního u¾ivatele (napøíklad "moodleuser"), který bude mít k této (a jen této) databázi pøístup. Chcete-li, pou¾ijte i superu¾ivatele "root", ale toto se nedoporuèuje: dojde-li k prozrazení hesla, je ohro¾en celý vá¹ databázový systém a ne pouze jedna databáze. +

            +

            Ukázka pøíkazových øádkù pro MySQL:

            +
            +   # mysql -u root -p
            +   > CREATE DATABASE moodle; 
            +   > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.* 
            +           TO moodleuser@localhost IDENTIFIED BY 'sem_napiste_heslo'; 
            +   > quit 
            +   # mysqladmin -p reload
            +
            +

            Ukázka pøíkazových øádkù pro PostgreSQL:

            +
            +   # su - postgres
            +   > psql -c "create user moodleuser createdb;" template1
            +   > psql -c "create database moodle;" -U moodleuser template1
            +   > psql -c "alter user moodleuser nocreatedb;" template1
            +
            +

            (Pro správu databází MySQL lze doporuèit phpMyAdmin).

            +

            Od verze 1.0.8 Moodle podporuje pøedpony (prefixes) v názvech tabulek, tak¾e mù¾ete bez problémù sdílet jednu databázi s dal¹ími aplikacemi.

            +
            +

             

            + +

            6. Kontrola nastavení va¹eho webového serveru

            +
            +

            Nejprve se ujistìte, ¾e vá¹ webový server je nastaven tak, aby pou¾íval index.php jako implicitní stránku (mo¾ná v kombinaci s index.html, default.htm a tak podobnì).

            +

            V Apache se toto dìlá pomocí parametru DirectoryIndex v souboru httpd.conf . Mù¾e vypadat napøíklad takto:

            +
            +
            DirectoryIndex index.php index.html index.htm 
            +
            +

            Staèí se ujistit, ¾e index.php je na tomto seznamu (a pokud mo¾no co nejvíce vlevo - kvùli výkonu).

            +

            Dále, pou¾íváte-li Apache 2, zapnìte promìnnou AcceptPathInfo, která povoluje pøedávat skriptùm argumenty ve formì http://server/file.php/arg1/arg2. To je nezbytné, chcete-li u¾ívat relativní odkazy mezi va¹imi zdroji. Zároveò to mù¾e zvý¹it rychlost naèítání va¹ich Moodle stránek. Tuto volbu mù¾ete zapnout pøidáním následujích øádek do httpd.conf:

            +
            +
            AcceptPathInfo on 
            +
            + +

            Do tøetice Moodle vy¾aduje, aby bylo zapnuto nìkolik funkcí PHP. Na vìt¹inì serverù jsou tyto funkce zapnuty implicitnì. Nicménì nìkteré PHP servery (a nìkteré star¹í verze PHP) mohou mít tyto vìci nastaveny odli¹nì. Ujistìte se proto, zda vá¹ konfiguraèní soubor PHP (vìt¹inou pojmenovaný php.ini) obsahuje:

            +
            +
            magic_quotes_gpc = On
            +   magic_quotes_runtime = Off
            +   file_uploads = On
            +   short_open_tag = On
            +   session.auto_start = Off
            +   session.bug_compat_warn = Off
            +   
            +
            +

            Nemáte-li na va¹em serveru pøístup k httpd.conf nebo php.ini, nebo pokud je Moodle na jednom serveru spolu s aplikacemi, které vy¾adují jiné nastavení, mù¾ete tato standardní nastavení POTLAÈIT. + +

            K tomu je potøeba vytvoøit soubor .htaccess v hlavním adresáøi Moodle a do nìj napsat tato nastavení. Toto funguje pouze na serveru Apache, pokud má navíc povoleno Overrides. +

            +DirectoryIndex index.php index.html index.htm
            +
            +<IfDefine APACHE2>
            +     AcceptPathInfo on
            +</IfDefine>
            +
            +php_value magic_quotes_gpc On
            +php_value magic_quotes_runtime Off
            +php_value file_uploads On
            +php_value short_open_tag On
            +php_value session.auto_start Off
            +php_value session.bug_compat_warn Off
            +

            Zde mù¾ete rovnì¾ nastavit dal¹í vìci, jako napøíklad maximální mo¾nou velikost nahrávaných (tj. na server posílaných) souborù: +

            +php_value upload_max_filesize 2M
            +php_value post_max_size 2M
            +     
            + +

            Nejjednodu¹¹ím zpùsobem bude asi zkopírovat si pøipravený soubor lib/htaccess a upravit jej podle va¹ich potøeb. Sledujte dal¹í pokyny v tomto souboru. + +

            +

             

            +

            7. Úprava config.php

            +
            +

            Nyní ji¾ mù¾ete upravit hlavní konfiguraèní soubor config.php pomocí va¹eho oblíbeného textového editoru. Tento soubor je pou¾íván ostatními skripty v Moodle.

            +

            Zaènìte tím, ¾e vytvoøíte kopii dodaného souboru config-dist.php a nazvìte ji config.php. Tím máte zaruèeno, ¾e pozdìj¹í aktualizace Moodle na vy¹¹í verzi vá¹ konfiguraèní soubor nepøepí¹e.

            +

            Upravte config.php tak, aby souhlasily podrobnosti o pou¾ité databázi, kterou jste pro Moodle vytvoøili (vèetnì pøedpony - prefix - tabulek, to je NUTNÉ pøi pou¾ití PostgreSQL), dále údaje o adrese stránek, umístìní instalace v systému souborù a cestì k datovému adresáøi. Soubor config.php obsahuje podrobnìj¹í instrukce.

            +

            Nadále budeme v tomto dokumentu pøedpokládat, ¾e va¹e instalace Moodle je dostupná na adrese http://napriklad.cz/moodle

            +
            +

             

            +

            8. Administrátorská stránka

            +
            +

            Stránka urèená pro správu Moodle by se nyní mìla zobrazit na adrese http://napriklad.cz/moodle/admin. Nicménì i kdy¾ si v této fázi budete chtít zobrazit titulní stránku, systém vás sám po¹le na stránku správy k dokonèení instalace. Pøi prvním naètení administrátorské stránky budete vybídnuti k souhlasu s licenèními podmínkami GPL (General Public License). Nebudete-li s tìmito podmínkami souhlasit, v instalaci nebude mo¾no pokraèovat.

            +

            (Moodle se rovnì¾ pokusí poslat va¹emu prohlí¾eèi nìjaké cookies. Máte-li vá¹ prohlí¾eè nastavený tak, ¾e si mù¾ete vybrat, zda chcete cookies pøijmout nebo ne, pak cookies od Moodle pøijmout musíte, jinak vám nebude Moodle správnì pracovat.) +

            Nyní zaène Moodle nastavovat svou databázi a vytváøet v ní potøebné tabulky pro uchovávání svých dat. Nejdøíve jsou nastaveny hlavní databázové tabulky. Mìli byste vidìt mno¾ství SQL povelù a za nimi informaci o tom, zda se povel podaøilo úspì¹nì vykonat (pro pøehlednost v zelené èi èervené barvì), tedy nìco jako tohle:

            +
            +

            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

            +

            SUCCESS

            +

            ...a tak dále. Na konci pak nìco jako: Hlavní databáze byly úspì¹nì nastaveny.

            +
            +

            Pokud nevidíte tohle, pak musí být nìkde problém s databází nebo údaji, které jste nastavili v config.php. Zkontrolujte, zda PHP náhodou nebì¾í v omezeném bezpeèném re¾imu "safe mode" (komerèní hostitelé èasto poskytují web právì v tomto re¾imu). Nastavení PHP mù¾ete snadno zjistit vytvoøením malého souboru, který obsahuje <? phpinfo() ?> a na který se podíváte pomocí va¹eho prohlí¾eèe. Zkontrolujte je¹tì jednou celé nastavení a zkuste se znovu vrátit na stránku správy.

            +

            Pøesuòte se a¾ na dolní konec stránky a následujte odkaz "Pokraèovat".

            +

            Dále uvidíte podobnou stránku, která nastavuje v¹echny tabulky potøebné pro jednotlivými moduly. Stejnì jako pøedtím, i nyní by v¹echno mìlo projít na zelenou.

            + +

            Opìt sjeïte a¾ na spodní okraj stránky a stisknìte "Pokraèovat".

            + +

            Nyní byste mìli vidìt formuláø, ve kterém mù¾ete definovat øadu dal¹ích promìnných, jako napøíklad implicitnì nabízený jazyk va¹ich stránek, SMTP hostitele a tak podobnì. Nemìjte strach z toho, ¾e zde nenastavíte v¹echno napoprvé správnì. Na tuto stránku se mù¾ete kdykoliv pozdìji vrátit pomocí administrátorského rozhraní. Sjeïte na konec stránky a stisknìte "Ulo¾it zmìny".

            + +

            Pokud (a pouze pokud) se zaseknete na této nebo dal¹í stránce a nemù¾ete pokraèovat, pak má vá¹ server pravdìpodobnì problém, kterému se øíká "buggy referrer". Odstranit jej je snadné: upravte vá¹ config.php a nastavte promìnnou buggy_referrer na true, pak se znovu vra»te na tuto stránku.

            + +

            Dal¹í stránku tvoøí formuláø, kde mù¾ete nastavit parametry va¹ich Moodle stránek, jakými jsou název stránek, jejich popis a podobnì. Vyplòte jej (mù¾ete tyto vìci mìnit i pozdìji) a stisknìte "Ulo¾it zmìny".

            + +

            Nakonec budete po¾ádáni o vytvoøení hlavního administrátorského úètu pro dal¹í pøístup ke stránkám správy. Vyplòte podrobnosti o va¹em jménì, emailové adrese apod. a kliknìte na "Ulo¾it zmìny". Ne v¹echna pole jsou povinná, ale pokud nevyplníte nìkteré, které je Moodlem vy¾adováno, budete na nìj znovu dotázáni.

            +
            +
            + +

            Peèlivì si zapamatujte u¾ivatelské jméno a heslo, které jste pou¾ili pro administrátorský úèet. Budete jej v budoucnu potøebovat pøi pøístupu na stránky správy.

            + +
            +
            +

            Po úspì¹ném nastavení budete vráceni na hlavní stránku správy, která obsahuje øadu odkazù uspoøádáných do nabídky (tyto polo¾ky se vám rovnì¾ objeví na titulní stránce, jste-li pøihlá¹en jako správce). Celá správa Moodle mù¾e být øízena z této nabídky, to znamená, ¾e odtud mù¾ete zejména:

            +
              +
            • vytváøet a odstraòovat kurzy
            • +
            • vytváøet a upravovat u¾ivatelské úèty
            • +
            • spravovat úèty uèitelù
            • +
            • mìnit nastavení stránek (motiv, název apod.)
            • +
            +
            +

             

            + +

            9. Nastavení cron

            +
            +

            Nìkteré moduly v Moodle vy¾adují prùbì¾nou kontrolu plnìní svých úloh. Systém napøíklad potøebuje zkontrolovat diskusní fóra a odeslat novì vlo¾ené pøíspìvky emailem tìm u¾ivatelùm, kteøí si zøídili jejich odebírání.

            +

            Skript, který má tohle na starosti, je umístìn v adresáøi admin a jmenuje se cron.php. Tento skript se v¹ak neumí spou¹tìt sám, proto je tøeba nastavit mechanismus pravidelného volání tohoto skriptu (napøíklad ka¾dých pìt minut). Tím systém získá nìco jako "srdeèní tep" a skript mù¾e volat dal¹í funkce v periodách definovaných jednotlivými moduly.

            +

            Pov¹imnìte si, ¾e stroj volající cron.php nemusí být tentý¾, jako ten, na kterém vám bì¾í Moodle.. Je-li vám tedy poskytována webová schránka bez mo¾nosti nastavení slu¾by cron, mù¾ete pravidelné volání va¹eho skriptu zøídit na jakémkoliv jiném serveru èi dokonce domácím poèítaèi. Hlavní je, aby byl skript cron.php volán asi ka¾dých pìt minut (nebo tak òák).

            +

            Nejprve si vyzkou¹ejte, zda vám funguje ruèní volání pomocí va¹eho prohlí¾eèe:

            +
            +
            http://napriklad.cz/moodle/admin/cron.php
            +
            +

            Nyní potøebujte zaøídit, aby se tento skript nìjakým zpùsobem volal automaticky a pravidelnì.

            +

            Spou¹tìní skriptu z pøíkazové øádky

            +

            Lze volat stránku z pøíkazové øádky obdobným zpùsobem, jako bylo uvedeno v pøedchozím pøíkladu. Mù¾ete napøíklad pou¾ít Unixový prográmek 'wget':

            +
            +
            wget -q -O /dev/null http://napriklad.cz/moodle/admin/cron.php
            +
            +

            V¹imnìte si, ¾e v tomto pøíkladu je výstup stránky zahozen (resp. pøesmìrován na /dev/null).

            +

            Stejným zpùsobem pøi pou¾ití programu 'lynx':

            +
            +
            lynx -dump http://napriklad.cz/moodle/admin/cron.php > /dev/null
            +
            +

            Pøípadnì mù¾ete pou¾ít nezávislou verzi PHP zkompilovanou tak, aby se spou¹tìla na pøíkazové øádce. Výhodou tohoto zpùsobu je, ¾e protokol va¹eho webového serveru není zaplòován opakujícími se po¾adavky na cron.php. Nevýhodou je, ¾e musíte mít pøístup k øádkové verzi PHP:

            +
            +
            /opt/bin/php /web/moodle/admin/cron.php
            +
            +
            +(Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php
            +
            +
            +

            Automatické spou¹tìní skriptu ka¾dých 5 minut

            +

            Na Unixových systémech: Pou¾ijte cron. Upravte va¹e nastavení cron z pøíkazové øádky pomocí "crontab -e" a pøidejte øádku podobnou této:

            +
            +
            */5 * * * * wget -q -O /dev/null http://napriklad.cz/moodle/admin/cron.php
            +
            +

            Na Windows: Nejsnadnìj¹í cestou je pou¾ít balík moodle-cron-for-windows.zip, který øe¹í celou vìc velice jednodu¹e. Mù¾ete rovnì¾ vyzkou¹et zabudovanou funkci Windows "Naplánované úlohy" (Scheduled Tasks).

            +

            +
            + +

            10. Vytvoøení nového kurzu

            +
            +

            Nyní, kdy¾ vám Moodle zdárnì bì¾í, mù¾ete zaèít vytváøet kurzy.

            +

            Zvolte "Vytvoøit nový kurz" z nabídky na stránce Správa (popøípadì administrátorský odkaz na hlavní stránce).

            +

            Vyplòte formuláø, pozornost vìnujte zejména polo¾ce uspoøádání kurzu. V této fázi se nemusíte pøíli¹ starat o podrobnosti, v¹echna nastavení kurzu mohou být pozdìji upravena pøiøazeným vyuèujícím.

            +

            Stisknìte "Ulo¾it zmìny" a ocitnete se na dal¹í stránce, kde k vytvoøenému kurzu pøiøazujte uèitele. K dispozici jsou vám pouze ji¾ existující u¾ivatelé. Chcete-li zalo¾it nový uèitelský úèet, po¾ádejte pøíslu¹ného uèitele, aby si jej na va¹ich stránkách zøídil sám (podle pokynù na pøihla¹ovací stránce) nebo mu jej zalo¾te ruènì z nabídky "Pøidat nového u¾ivatele" na stránce Správa.

            +

            Je-li v¹e hotovo, je kurz pøipraven k dal¹ím úpravám. Od této chvíle je pøístupný z nabídky "Kurzy" na hlavní stránce.

            +

            Viz té¾ "Pøíruèku uèitele", kde naleznete dal¹í podrobnosti týkající se výstavby kurzu.

            +
            +

             

            +

            Moodle Dokumentace

            +

            Èeská verze: $Id$

            + + diff --git a/lang/cs/docs/installamp.html b/lang/cs/docs/installamp.html index 0de784065ab..8c3964d741c 100644 --- a/lang/cs/docs/installamp.html +++ b/lang/cs/docs/installamp.html @@ -1,13 +1,10 @@ - - Dokumentace Moodlu: Instalace PHP a MySQL - - + + - +

            Instalace Apache, MySQL a PHP

            Moodle je napsán ve skriptovacím jazyce PHP a vìt¹inu svých dat uchovává v @@ -77,7 +74,7 @@ str podadresáøù v¹echny soubory php4ts.dll a php.ini.

          • Zde si stáhnìte EasyPHP: http://www.easyphp.org/telechargements/dn.php?F=easyphp1-7 - (asi 10 MB).
          • + (asi 10 MB).
          • Spus»te sta¾ený soubor: easyphp1-7_setup.exe. Instalaèní postup je ve francouz¹tinì, ale jinak se podobá instalaci jakéhokoli jiného programu Windows - doporuèujeme pøijmout výchozí @@ -162,6 +159,6 @@ str

             

          • -

            Dokumentace Moodlu

            +

            Dokumentace Moodlu

            \ No newline at end of file diff --git a/lang/cs/docs/intro.html b/lang/cs/docs/intro.html index 66a6d75ea53..f7d4312b042 100644 --- a/lang/cs/docs/intro.html +++ b/lang/cs/docs/intro.html @@ -1 +1,30 @@ - Dokumentace Moodlu: Úvod

            Úvod

            Moodle [èti mùdl] je softwarový balíèek pro tvorbu výukových systémù a elektronických kurzù na internetu. Jedná se o neustále se vyvíjející projekt, navr¾ený na základì sociálnì konstruktivistického pøístupu k vzdìlávání.

            Moodle je poskytován zdarma jako Open Source software (spadající pod obecnou veøejnou licenci GNU). To v zásadì znamená, ¾e je chránìn autorskými právy, ale poskytuje pøitom u¾ivatelùm znaènou svobodu. Moodle mù¾ete kopírovat, pou¾ívat i upravovat, pokud souhlasíte s tím, ¾e: budete tento zdroj poskytovat ostatním; nebudete mìnit ani odstraòovat pùvodní údaje o licencích a autorských právech, a uplatníte stejné licenèní podmínky i u jakýchkoliv odvozených produktù. Pro podrobnìj¹í informace nahlédnìte do plného znìní licence. S pøípadnými dotazy se laskavì obra»te pøímo na dr¾itele autorských práv.

            Moodle lze pou¾ít na jakémkoliv poèítaèi s fungujícím PHP, podporuje øadu typù databází (pøedev¹ím MySQL).

            Slovo Moodle bylo pùvodnì akronymem pro Modular Object-Oriented Dynamic Learning Environment (Modulární objektovì orientované dynamické prostøedí pro výuku); tato informace mù¾e být zajímavá pøedev¹ím pro programátory a teoretické pedagogy.  Lze ho také pova¾ovat za sloveso, které popisuje proces líného bloumání od jednoho k druhému, dìlání vìcí podle svého, hravost, která èasto vede k pochopení problému a podporuje tvoøivost. V tomto smyslu se vztahuje jak k samotnému zrodu Moodlu, tak k pøístupu studenta èi uèitele k výuce v on-line kurzech.

            Neváhejte a pøipojte se s námi k Moodlu!


            Dokumentace Moodlu

            Version: $Id$

            \ No newline at end of file + + + + +Dokumentace Moodlu: Úvod + + + + + + + +

            Úvod

            +
            +

            Moodle [èti mùdl] je softwarový balíèek pro tvorbu výukových systémù a elektronických kurzù na internetu. Jedná se o neustále se vyvíjející projekt, navr¾ený na základì sociálnì konstruktivistického pøístupu k vzdìlávání.

            +

            Moodle je poskytován zdarma jako + Open Source software (spadající pod obecnou veøejnou licenci GNU). To v zásadì znamená, ¾e je chránìn autorskými právy, ale poskytuje pøitom u¾ivatelùm znaènou svobodu. Moodle mù¾ete kopírovat, pou¾ívat i upravovat, pokud souhlasíte s tím, ¾e: budete tento zdroj poskytovat ostatním; nebudete mìnit ani odstraòovat pùvodní údaje o licencích a autorských právech, a uplatníte stejné licenèní podmínky i u jakýchkoliv odvozených produktù. Pro podrobnìj¹í informace nahlédnìte do plného znìní licence. S pøípadnými dotazy se laskavì obra»te pøímo na dr¾itele autorských práv. +

            +

            Moodle lze pou¾ít na jakémkoliv poèítaèi s fungujícím PHP, podporuje øadu typù databází (pøedev¹ím MySQL).

            + +

            Slovo Moodle bylo pùvodnì akronymem pro Modular Object-Oriented Dynamic Learning Environment (Modulární objektovì orientované dynamické prostøedí pro výuku); tato informace mù¾e být zajímavá pøedev¹ím pro programátory a teoretické pedagogy.  + Lze ho také pova¾ovat za sloveso, které popisuje proces líného bloumání od jednoho k druhému, dìlání vìcí podle svého, hravost, která èasto vede k pochopení problému a podporuje tvoøivost. V tomto smyslu se vztahuje jak k samotnému zrodu Moodlu, tak k pøístupu studenta èi uèitele k výuce v on-line kurzech.

            +

            Neváhejte a pøipojte se s námi k Moodlu!

            +
            +


            +

            +

            Dokumentace Moodlu

            +

            Version: $Id$

            + + diff --git a/lang/cs/docs/licence.html b/lang/cs/docs/licence.html index 8a04de1dc18..49d1688fec7 100644 --- a/lang/cs/docs/licence.html +++ b/lang/cs/docs/licence.html @@ -1,108 +1,107 @@ - - + + Dokumentace Moodlu: Licence - + - + - +

            Autorská práva a licenèní podmínky Moodlu

            Název Moodle™ je registrovanou obchodní známkou - spoleènosti The Moodle Trust.
            - Máte povolení pou¾ívat tento název pøi jakékoliv èinnosti spojené
            + spoleènosti The Moodle Trust.
            + Máte povolení pou¾ívat tento název pøi jakékoliv èinnosti spojené
            se softwarem Moodle popsaném dále.

            Dr¾itel autorských práv k softwaru Moodle: Copyright © 1999-2004, Martin Dougiamas.

            -

            Tento program je volný software; mù¾ete jej ¹íøit a/nebo modifikovat
            - podle ustanovení Obecné veøejné licence GNU, vydávané
            - Free Software Foundation; a to buï verze 2 této licence anebo
            +

            Tento program je volný software; mù¾ete jej ¹íøit a/nebo modifikovat
            + podle ustanovení Obecné veøejné licence GNU, vydávané
            + Free Software Foundation; a to buï verze 2 této licence anebo
            (podle va¹eho uvá¾ení) kterékoli pozdìj¹í verze.

            -

            Tento program je roz¹iøován v nadìji, ¾e bude u¾iteèný,
            - av¹ak BEZ JAKÉKOLI ZÁRUKY; neposkytují se ani odvozené záruky
            - PRODEJNOSTI anebo VHODNOSTI PRO URÈITÝ ÚÈEL. Dal¹í podrobnosti
            - hledejte v Obecné veøejné licenci GNU (její èeské znìní pøikládáme,
            - je dostupné té¾ na http://staff.cesnet.cz/~lhotka/gnugpl-cz.html,
            +

            Tento program je roz¹iøován v nadìji, ¾e bude u¾iteèný,
            + av¹ak BEZ JAKÉKOLI ZÁRUKY; neposkytují se ani odvozené záruky
            + PRODEJNOSTI anebo VHODNOSTI PRO URÈITÝ ÚÈEL. Dal¹í podrobnosti
            + hledejte v Obecné veøejné licenci GNU (její èeské znìní pøikládáme,
            + je dostupné té¾ na http://staff.cesnet.cz/~lhotka/gnugpl-cz.html,
            anglický originál na http://www.gnu.org/copyleft/gpl.html).

            -
            -
            -

            Èeský pøeklad Obecné veøejné licence GNU

            -
            Pøelo¾il Lhotka@cesnet.cz
            -

            Tento text je neoficiálním pøekladem Obecné veøejné licence GNU (GNU General
            -Public License, GNU GPL). Nebyl vydán nadací Free Software Foundation a
            -nevyjadøuje právní podstatu podmínek pro ¹íøení softwaru pou¾ívajícího GNU
            -GPL -- tomuto úèelu slou¾í výhradnì pùvodní anglická verze GNU GPL. Pøesto
            -doufáme, ¾e tento pøeklad pomù¾e èeským ètenáøùm lépe porozumìt licenci GNU GPL.

            +
            +
            +

            Èeský pøeklad Obecné veøejné licence GNU

            +
            Pøelo¾il Lhotka@cesnet.cz
            +

            Tento text je neoficiálním pøekladem Obecné veøejné licence GNU (GNU General
            +Public License, GNU GPL). Nebyl vydán nadací Free Software Foundation a
            +nevyjadøuje právní podstatu podmínek pro ¹íøení softwaru pou¾ívajícího GNU
            +GPL -- tomuto úèelu slou¾í výhradnì pùvodní anglická verze GNU GPL. Pøesto
            +doufáme, ¾e tento pøeklad pomù¾e èeským ètenáøùm lépe porozumìt licenci GNU GPL.

            -

            This is an unofficial translation of the GNU General Public License into
            -Czech. It was not published by the Free Software Foundation, and does not
            -legally state the distribution terms for software that uses the GNU GPL--only
            -the original English text of the GNU GPL does that. However, we hope that this
            -translation will help Czech speakers understand the GNU GPL better.

            +

            This is an unofficial translation of the GNU General Public License into
            +Czech. It was not published by the Free Software Foundation, and does not
            +legally state the distribution terms for software that uses the GNU GPL--only
            +the original English text of the GNU GPL does that. However, we hope that this
            +translation will help Czech speakers understand the GNU GPL better.

            -
            -

            Obecná veøejná licence GNU

            +
            +

            Obecná veøejná licence GNU

            Èeský pøeklad verze 2, èerven 1991 -
            -
            Copyright (C) 1989, 1991 Free Software Foundation, Inc.
            +

            +

            Copyright (C) 1989, 1991 Free Software Foundation, Inc.
             675 Mass Ave, Cambridge, MA 02139, USA
             
             Kopírování a distribuce doslovných kopií tohoto licenèního dokumentu jsou
             dovoleny komukoliv, jeho zmìny jsou v¹ak zakázány.
            -
            -

            Preambule

            -

            Softwarové licence jsou vìt¹inou navr¾eny tak, ¾e vám odebírají právo volného +

            +

            Preambule

            +

            Softwarové licence jsou vìt¹inou navr¾eny tak, ¾e vám odebírají právo volného sdílení a úprav programù. Smyslem Obecné veøejné licence GNU je naproti tomu zaruèit volnost ke sdílení a úpravám volného softwaru--pro zaji¹tìní volného pøístupu k tomuto softwaru pro v¹echny jeho u¾ivatele. Tato Obecná veøejná licence GNU se vztahuje na vìt¹inu softwaru nadace Free Software Foundation a na jakýkoli jiný program, jeho¾ autor se pøikloní k jejímu pou¾ívání. (Nìkterý dal¹í software od Free Software Foundation je namísto toho pokryt Obecnou -knihovní veøejnou licencí GNU.) Mù¾ete ji rovnì¾ pou¾ít pro své programy.

            -

            Pokud mluvíme o volném softwaru, máme na mysli volnost, nikoliv cenu. Na¹e +knihovní veøejnou licencí GNU.) Mù¾ete ji rovnì¾ pou¾ít pro své programy.

            +

            Pokud mluvíme o volném softwaru, máme na mysli volnost, nikoliv cenu. Na¹e Obecná veøejná licence je navr¾ena pro zaji¹tìní toho, ¾e mù¾ete volnì ¹íøit kopie volného softwaru (a úètovat si poplatek za tuto slu¾bu, pokud chcete), ¾e obdr¾íte zdrojový kód anebo jej mù¾ete získat, pokud ho chcete, ¾e mù¾ete tento software modifikovat nebo jeho èásti pou¾ít v nových volných programech; a ¾e -víte, ¾e tyto vìci smíte dìlat.

            -

            Abychom mohli va¹e práva chránit, musíme vytvoøit omezení, která zaká¾í +víte, ¾e tyto vìci smíte dìlat.

            +

            Abychom mohli va¹e práva chránit, musíme vytvoøit omezení, která zaká¾í komukoli vám tato práva odepírat nebo vás ¾ádat, abyste se tìchto práv vzdal. Tato omezení se promítají do jistých povinností, kterým musíte dostát, pokud -¹íøíte kopie dotyèného softwaru anebo ho modifikujete.

            -

            Napøíklad, ¹íøíte-li kopie takového programu, a» ji¾ zdarma nebo za poplatek, +¹íøíte kopie dotyèného softwaru anebo ho modifikujete.

            +

            Napøíklad, ¹íøíte-li kopie takového programu, a» ji¾ zdarma nebo za poplatek, musíte poskytnout pøíjemcùm v¹echna práva, která máte sám. Musíte zaruèit, ¾e pøíjemci rovnì¾ dostanou anebo mohou získat zdrojový kód. A musíte jim ukázat -tyto podmínky, aby znali svá práva.

            -

            Va¹e práva chráníme ve dvou krocích: (1) autorizací softwaru, a +tyto podmínky, aby znali svá práva.

            +

            Va¹e práva chráníme ve dvou krocích: (1) autorizací softwaru, a (2) nabídkou této licence, která vám dává právoplatné svolení ke -kopírování, ¹íøení a modifikaci softwaru.

            -

            Kvùli ochranì ka¾dého autora i nás samotných chceme zajistit, aby ka¾dý +kopírování, ¹íøení a modifikaci softwaru.

            +

            Kvùli ochranì ka¾dého autora i nás samotných chceme zajistit, aby ka¾dý chápal skuteènost, ¾e pro volný software neplatí ¾ádné záruky. Je-li software nìkým jiným modifikován a poslán dále, chceme, aby pøíjemci vìdìli, ¾e to, co mají, není originál, tak¾e jakékoliv problémy vnesené jinými se neodrazí na -reputaci pùvodních autorù.

            -

            Koneènì, ka¾dý volný program je neustále ohro¾en softwarovými patenty. +reputaci pùvodních autorù.

            +

            Koneènì, ka¾dý volný program je neustále ohro¾en softwarovými patenty. Pøejeme si zamezit nebezpeèí, ¾e redistributoøi volného programu obdr¾í samostatnì patentová osvìdèení a tím uèiní program vázaným. Abychom tomu zamezili, deklarovali jsme, ¾e ka¾dý patent musí být buï vydán s tím, ¾e -umo¾òuje ka¾dému volné u¾ití, anebo nesmí být vydán vùbec.

            -

            Pøesná ustanovení a podmínky pro kopírování, ¹íøení a modifikaci jsou uvedeny -dále.

            -

            Ustanovení a podmínky pro kopírování, distribuci a modifikaci

            -

            0. Tato licence se vztahuje na kterýkoliv program èi jiné dílo, které +umo¾òuje ka¾dému volné u¾ití, anebo nesmí být vydán vùbec.

            +

            Pøesná ustanovení a podmínky pro kopírování, ¹íøení a modifikaci jsou uvedeny +dále.

            +

            Ustanovení a podmínky pro kopírování, distribuci a modifikaci

            +

            0. Tato licence se vztahuje na kterýkoliv program èi jiné dílo, které obsahuje zmínku, umístìnou v nìm dr¾itelem autorských práv, o tom, ¾e dílo mù¾e být ¹íøeno podle ustanovení Obecné veøejné licence GNU. V dal¹ím textu znamená "program" ka¾dý takový program nebo dílo a "dílo zalo¾ené na programu" znamená @@ -110,32 +109,32 @@ bu autorskému zákonu: tím se míní dílo obsahující program nebo jeho èást, buï doslovnì anebo s modifikacemi, popøípadì v pøekladu do jiného jazyka. (Nadále je pøeklad zahrnován bez omezení pod pojem "modifikace".) Ka¾dý u¾ivatel licence je -oznaèován jako "vy".

            -

            Jiné èinnosti ne¾ kopírování, ¹íøení a modifikace nejsou pokryty touto +oznaèován jako "vy".

            +

            Jiné èinnosti ne¾ kopírování, ¹íøení a modifikace nejsou pokryty touto licencí; sahají mimo její rámec. Akt spu¹tìní programu není omezen a výstup z programu je pokryt pouze tehdy, jestli¾e obsah výstupu tvoøí dílo zalo¾ené na programu (nezávisle na tom, zda bylo vytvoøeno èinností programu). Posouzení -platnosti pøedchozí vìty závisí na tom, co program dìlá.

            -

            1. Smíte kopírovat a ¹íøit doslovné kopie zdrojového kódu programu +platnosti pøedchozí vìty závisí na tom, co program dìlá.

            +

            1. Smíte kopírovat a ¹íøit doslovné kopie zdrojového kódu programu tak, jak jste jej obdr¾el, a na libovolném médiu, za pøedpokladu, ¾e na ka¾dé kopii viditelnì a nále¾itì zveøejníte zmínku o autorských právech a absenci záruky; ponecháte nedotèené v¹echny zmínky vztahující se k této licenci a k absenci záruky; a dáte ka¾dému pøíjemci spolu s programem kopii této -licence.

            -

            Za fyzický akt pøenesení kopie mù¾ete ¾ádat poplatek a podle vlastního -uvá¾ení mù¾ete nabídnout za poplatek záruèní ochranu.

            -

            2. Mù¾ete modifikovat va¹i kopii èi kopie programu anebo kterékoliv +licence.

            +

            Za fyzický akt pøenesení kopie mù¾ete ¾ádat poplatek a podle vlastního +uvá¾ení mù¾ete nabídnout za poplatek záruèní ochranu.

            +

            2. Mù¾ete modifikovat va¹i kopii èi kopie programu anebo kterékoliv jeho èásti, a tak vytvoøit dílo zalo¾ené na programu, a kopírovat a roz¹iøovat takové modifikace èi dílo podle podmínek paragrafu 1 vý¹e, za pøedpokladu, -¾e splníte v¹echny tyto podmínky:

            -
              -
            • a) Modifikované soubory musíte opatøit zøetelnou zmínkou uvádìjící, - ¾e jste soubory zmìnil a datum ka¾dé zmìny.
            • -
            • b) Musíte umo¾nit, aby jakékoliv vámi publikované èi roz¹iøované +¾e splníte v¹echny tyto podmínky:

              +
                +
              • a) Modifikované soubory musíte opatøit zøetelnou zmínkou uvádìjící, + ¾e jste soubory zmìnil a datum ka¾dé zmìny. +
              • b) Musíte umo¾nit, aby jakékoliv vámi publikované èi roz¹iøované dílo, které obsahuje zcela nebo zèásti program nebo jakoukoli jeho èást, popøípadì je z programu nebo jeho èásti odvozeno, mohlo být jako celek - bezplatnì poskytnuto ka¾dé tøetí osobì v souladu s ustanoveními této licence.
              • -
              • c) Pokud modifikovaný program pracuje normálnì tak, ¾e ète + bezplatnì poskytnuto ka¾dé tøetí osobì v souladu s ustanoveními této licence. +
              • c) Pokud modifikovaný program pracuje normálnì tak, ¾e ète interaktivnì povely, musíte zajistit, ¾e pøi nejbì¾nìj¹ím zpùsobu jeho spu¹tìní vytiskne nebo zobrazí hlá¹ení zahrnující pøíslu¹nou zmínku o autorském právu a uvede, ¾e neexistuje ¾ádná záruka (nebo pøípadnì, ¾e záruku @@ -143,9 +142,9 @@ takov redistribuovat, a musí u¾ivateli sdìlit, jakým zpùsobem mù¾e nahlédnout do kopie této licence. (Výjimka: v pøípadì, ¾e sám program je interaktivní, av¹ak ¾ádné takové hlá¹ení nevypisuje, nepo¾aduje se, aby va¹e dílo zalo¾ené na - programu takové hlá¹ení vypisovalo.)
              -
              -

              Tyto po¾adavky se vztahují k modifikovanému dílu jako celku. Pokud lze + programu takové hlá¹ení vypisovalo.)

            +

            +

            Tyto po¾adavky se vztahují k modifikovanému dílu jako celku. Pokud lze identifikovat èásti takového díla, které zøejmì nejsou odvozeny z programu a mohou být samy o sobì rozumnì pova¾ovány za nezávislá a samostatná díla, pak se tato licence a její ustanovení nevztahují na tyto èásti, jsou-li ¹íøeny jako @@ -153,33 +152,33 @@ nez dílo zalo¾ené na programu, musí být roz¹iøování tohoto celku podøízeno ustanovením této licence tak, ¾e povolení poskytnutá dal¹ím u¾ivatelùm se roz¹íøí na celé dílo, tedy na v¹echny jeho èásti bez ohledu na to, kdo kterou -èást napsal.

            -

            Smyslem tohoto paragrafu tedy není získání práv na dílo zcela napsané vámi +èást napsal.

            +

            Smyslem tohoto paragrafu tedy není získání práv na dílo zcela napsané vámi ani popírání va¹ich práv vùèi nìmu; skuteèným smyslem je výkon práva na øízení -distribuce odvozených nebo kolektivních dìl zalo¾ených na programu.

            -

            Pouhé spojení jiného díla, je¾ není na programu zalo¾eno, s programem (anebo +distribuce odvozených nebo kolektivních dìl zalo¾ených na programu.

            +

            Pouhé spojení jiného díla, je¾ není na programu zalo¾eno, s programem (anebo dílem zalo¾eným na programu) na pamì»ovém nebo distribuèním médiu neuvazuje toto -jiné dílo do pùsobnosti této licence.

            -

            3. Mù¾ete kopírovat a roz¹iøovat program (nebo dílo na nìm zalo¾ené, +jiné dílo do pùsobnosti této licence.

            +

            3. Mù¾ete kopírovat a roz¹iøovat program (nebo dílo na nìm zalo¾ené, viz paragraf 2) v objektové anebo spustitelné podobì podle ustanovení paragrafù -1 a 2 vý¹e, pokud splníte nìkterou z následujících nále¾itostí:

            -
              -
            • a) Doprovodíte jej zdrojovým kódem ve strojovì èitelné formì. +1 a 2 vý¹e, pokud splníte nìkterou z následujících nále¾itostí:

              +
                +
              • a) Doprovodíte jej zdrojovým kódem ve strojovì èitelné formì. Zdrojový kód musí být roz¹iøován podle ustanovení paragrafù 1 a 2 vý¹e, a - to na médiu bì¾nì pou¾ívaném pro výmìnu softwaru; nebo
              • -
              • b) Doprovodíte jej písemnou nabídkou s platností nejménì tøi roky, + to na médiu bì¾nì pou¾ívaném pro výmìnu softwaru; nebo +
              • b) Doprovodíte jej písemnou nabídkou s platností nejménì tøi roky, podle ní¾ poskytnete jakékoli tøetí stranì, za poplatek nepøevy¹ující va¹e výdaje vynalo¾ené na fyzickou výrobou zdrojové distribuce, kompletní strojovì èitelnou kopii odpovídajícího zdrojového kódu, jen¾ musí být ¹íøen podle ustanovení paragrafù 1 a 2 vý¹e na médiu bì¾nì pou¾ívaném pro výmìnu softwaru; nebo -
              • c) Doprovodíte jej informacemi, které jste dostal ohlednì nabídky +
              • c) Doprovodíte jej informacemi, které jste dostal ohlednì nabídky na poskytnutí zdrojového kódu. (Tato alternativa je povolena jen pro nekomerèní ¹íøení a jenom tehdy, pokud jste obdr¾el program v objektovém nebo spustitelném tvaru spolu s takovou nabídkou, v souladu s polo¾kou b vý¹e.) -
              -
              -

              Zdrojový kód k dílu je nejvhodnìj¹í formou díla z hlediska jeho pøípadných +

            +

            +

            Zdrojový kód k dílu je nejvhodnìj¹í formou díla z hlediska jeho pøípadných modifikací. Pro dílo ve spustitelném tvaru znamená úplný zdrojový kód ve¹kerý zdrojový kód pro v¹echny moduly, které obsahuje, plus jakékoli dal¹í soubory pro definici rozhraní, plus dávkové soubory potøebné pro kompilaci a instalaci @@ -187,31 +186,31 @@ spustiteln které jsou normálnì ¹íøeny (buï ve zdrojové nebo binární formì) s hlavními souèástmi operaèního systému, na nìm¾ spustitelný program bì¾í (tj. s pøekladaèem, jádrem apod.). Tyto komponenty nemusí být ¹íøeny se zdrojovým -kódem, pokud ov¹em komponenta sama nedoprovází spustitelnou podobu díla.

            -

            Je-li ¹íøení objektového nebo spustitelného kódu èinìno nabídkou pøístupu ke +kódem, pokud ov¹em komponenta sama nedoprovází spustitelnou podobu díla.

            +

            Je-li ¹íøení objektového nebo spustitelného kódu èinìno nabídkou pøístupu ke kopírování z urèitého místa, potom se za distribuci zdrojového kódu poèítá i nabídnutí ekvivalentního pøístupu ke kopírování zdrojového kódu ze stejného místa, by» pøitom nejsou tøetí strany nuceny ke zkopírování zdrojového kódu -spolu s objektovým.

            -

            4. Nesmíte kopírovat, modifikovat, poskytovat sublicence anebo ¹íøit +spolu s objektovým.

            +

            4. Nesmíte kopírovat, modifikovat, poskytovat sublicence anebo ¹íøit program jiným zpùsobem ne¾ výslovnì uvedeným v této licenci. Jakýkoli jiný pokus o kopírování, modifikování, poskytnutí sublicence anebo ¹íøení programu je neplatný a automaticky ukonèí va¹e práva daná touto licencí. Strany, které od vás obdr¾ely kopie anebo práva v souladu s touto licencí, v¹ak nemají své -licence ukonèeny, dokud se jim plnì podøizují.

            -

            5. Není va¹í poviností tuto licenci pøijmout, proto¾e jste ji +licence ukonèeny, dokud se jim plnì podøizují.

            +

            5. Není va¹í poviností tuto licenci pøijmout, proto¾e jste ji nepodepsal. Nic jiného vám v¹ak nedává mo¾nost kopírovat nebo ¹íøit program nebo odvozená díla. V pøípadì, ¾e tuto licenci nepøijmete, jsou tyto èinnosti zákonem zakázány. Tím pádem modifikací anebo ¹íøením programu (anebo ka¾dého díla zalo¾eného na programu) vyjadøujete své podøízení se licenci a v¹em jejím ustanovením a podmínkám pro kopírovaní, modifikování a ¹íøení programu a dìl na -nìm zalo¾ených.

            -

            6. Poka¾dé, kdy¾ redistribuujete program (nebo dílo zalo¾ené na +nìm zalo¾ených.

            +

            6. Poka¾dé, kdy¾ redistribuujete program (nebo dílo zalo¾ené na programu), získává pøíjemce od pùvodního dr¾itele licence právo kopírovat, modifikovat a ¹íøit program v souladu s tìmito ustanoveními a podmínkami. Nesmíte klást ¾ádné dal¹í pøeká¾ky výkonu zde zaruèených pøíjemcových práv. -Nejste odpovìdný za vymáhání dodr¾ování této licence tøetími stranami.

            -

            7. Jsou-li vám z rozhodnutí soudu, obvinìním z poru¹ení patentu nebo z +Nejste odpovìdný za vymáhání dodr¾ování této licence tøetími stranami.

            +

            7. Jsou-li vám z rozhodnutí soudu, obvinìním z poru¹ení patentu nebo z jakéhokoli jiného dùvodu (nejen v souvislosti s patenty) ulo¾eny takové podmínky (a» ji¾ pøíkazem soudu, smlouvou nebo jinak), které se vyluèují s podmínkami této licence, nejste tím osvobozen od podmínek této licence. Pokud nemù¾ete @@ -220,57 +219,57 @@ licence a jin by napøíklad patentové osvìdèení nepovolovalo bezplatnou redistribuci programu v¹emi, kdo va¹ím pøièinìním získají pøímo nebo nepøímo jeho kopie, pak by jediný mo¾ný zpùsob jak vyhovìt zároveò patentovému osvìdèení i této licenci spoèíval v -ukonèení distribuce programu.

            -

            Pokud by se za nìjakých specifických okolností jevila nìkterá èást tohoto +ukonèení distribuce programu.

            +

            Pokud by se za nìjakých specifických okolností jevila nìkterá èást tohoto paragrafu jako neplatná nebo nevynutitelná, pova¾uje se za smìrodatnou rovnováha vyjádøená tímto paragrafem a paragraf jako celek se pova¾uje za smìrodatný za -jiných okolností.

            -

            Smyslem tohoto paragrafu není navádìt vás k poru¹ování patentù èi jiných +jiných okolností.

            +

            Smyslem tohoto paragrafu není navádìt vás k poru¹ování patentù èi jiných ustanovení vlastnického práva, anebo tato ustanovení zpochybòovat; jediným jeho smyslem je ochrana integrity systému ¹íøení volného softwaru, který je podlo¾en veøejnými licenèními pøedpisy. Mnozí lidé poskytli své pøíspìvky do ¹irokého okruhu softwaru ¹íøeného tímto systémem, spolehnuv¹e se na jeho dùsledné uplatòování; zále¾í na autorovi/dárci, aby rozhodl, zda si pøeje ¹íøit software pomocí nìjakého jiného systému a ¾ádný u¾ivatel licence nemù¾e takové rozhodnutí -zpochybòovat.

            -

            Smyslem tohoto paragrafu je zevrubnì osvìtlit to, co je pova¾ováno za -dùsledek plynoucí ze zbytku této licence.

            -

            8. Pokud je ¹íøení èi pou¾ití programu v nìkterých zemích omezeno buï +zpochybòovat.

            +

            Smyslem tohoto paragrafu je zevrubnì osvìtlit to, co je pova¾ováno za +dùsledek plynoucí ze zbytku této licence.

            +

            8. Pokud je ¹íøení èi pou¾ití programu v nìkterých zemích omezeno buï patenty anebo autorsky chránìnými rozhraními, mù¾e dr¾itel pùvodních autorských práv, který svìøuje program do pùsobnosti této licence, pøidat výslovné omezení pro geografické ¹íøení, vyluèující takové zemì, tak¾e ¹íøení je povoleno jen v tìch zemích nebo mezi tìmi zemìmi, které nejsou tímto zpùsobem vylouèeny. Tato licence zahrnuje v tomto pøípadì takové omezení pøesnì tak, jako by bylo zapsáno -v textu této licence.

            -

            9. Free Software Foundation mù¾e èas od èasu vydávat upravené nebo +v textu této licence.

            +

            9. Free Software Foundation mù¾e èas od èasu vydávat upravené nebo nové verze Obecné veøejné licence. Takové nové verze se budou svým duchem podobat souèasné verzi, v jednotlivostech se v¹ak mohou li¹it s ohledem na nové -problémy èi zájmy.

            -

            Ka¾dé verzi je pøidìleno rozli¹ující èíslo verze. Pokud program specifikuje +problémy èi zájmy.

            +

            Ka¾dé verzi je pøidìleno rozli¹ující èíslo verze. Pokud program specifikuje èíslo verze, která se na nìj vztahuje, a "v¹echny následující verze", mù¾ete se podle uvá¾ení øídit ustanoveními a podmínkami buïto oné konkrétní verze anebo kterékoliv následující verze, kterou vydala Free Software Foundation. Jestli¾e program nespecifikuje èíslo verze této licence, mù¾ete si vybrat libovolnou -verzi, kterou kdy Free Software Foundation vydala.

            -

            10. Pokud si pøejete zahrnout èásti programu do jiných volných +verzi, kterou kdy Free Software Foundation vydala.

            +

            10. Pokud si pøejete zahrnout èásti programu do jiných volných programù, jejich¾ distribuèní podmínky jsou odli¹né, za¹lete autorovi ¾ádost o povolení. V pøípadì softwaru, k nìmu¾ vlastní autorská práva Free Software Foundation, napi¹te Free Software Foundation; nìkdy èiníme výjimky ze zde uvedených ustanovení. Na¹e rozhodnutí bude vedeno dvìma cíli: zachováním volné povahy v¹ech odvozenin na¹eho volného softwaru a podporou sdílení a opìtovného -vyu¾ití softwaru obecnì.

            -
            -
            ZÁRUKA SE NEPOSKYTUJE
            -
            -

            11. VZHLEDEM K BEZPLATNÉMU POSKYTNUTÍ LICENCE K PROGRAMU SE NA PROGRAM +vyu¾ití softwaru obecnì.

            +

            +

            ZÁRUKA SE NEPOSKYTUJE
            +

            +

            11. VZHLEDEM K BEZPLATNÉMU POSKYTNUTÍ LICENCE K PROGRAMU SE NA PROGRAM NEVZTAHUJE ®ÁDNÁ ZÁRUKA, A TO V MÍØE POVOLENÉ PLATNÝM ZÁKONEM. POKUD NENÍ PÍSEMNÌ STANOVENO JINAK, POSKYTUJÍ DR®ITELÉ AUTORSKÝCH PRÁV POPØÍPADÌ JINÉ STRANY PROGRAM "TAK, JAK JE", BEZ ZÁRUKY JAKÉHOKOLI DRUHU, A« VÝSLOVNÉ NEBO VYPLÝVAJÍCÍ, VÈETNÌ, ALE NIKOLI JEN, ZÁRUK PRODEJNOSTI A VHODNOSTI PRO URÈITÝ ÚÈEL. POKUD JDE O KVALITU A VÝKONNOST PROGRAMU, LE®Í VE©KERÉ RIZIKO NA VÁS. POKUD BY SE U PROGRAMU PROJEVILY ZÁVADY, PADAJÍ NÁKLADY ZA V©ECHNU POTØEBNOU -ÚDR®BU, OPRAVU ÈI NÁPRAVU NA VÁ© VRUB.

            -

            12. V ®ÁDNÉM PØÍPADÌ, S VÝJIMKOU TOHO, KDY® TO VY®ADUJE PLATNÝ ZÁKON, +ÚDR®BU, OPRAVU ÈI NÁPRAVU NA VÁ© VRUB.

            +

            12. V ®ÁDNÉM PØÍPADÌ, S VÝJIMKOU TOHO, KDY® TO VY®ADUJE PLATNÝ ZÁKON, ANEBO KDY® TO BYLO PÍSEMNÌ ODSOUHLASENO, VÁM NEBUDE ®ÁDNÝ Z DR®ITELÙ AUTORSKÝCH PRÁV ANI ®ÁDNÁ JINÁ STRANA, KTERÁ SMÍ MODIFIKOVAT ÈI ©ÍØIT PROGRAM V SOULADU S PØEDCHOZÍMI USTANOVENÍMI, ODPOVÌDNI ZA ©KODY, VÈETNÌ V©ECH OBECNÝCH, @@ -278,19 +277,19 @@ SPECI NESCHOPNOSTI U®ÍVAT PROGRAMU (VÈETNÌ, ALE NIKOLI JEN, ZTRÁTY NEBO ZKRESLENÍ DAT, NEBO TRVALÝCH ©KOD ZPÙSOBENÝCH VÁM NEBO TØETÍM STRANÁM, NEBO SELHÁNÍ FUNKCE PROGRAMU V SOUÈINNOSTI S JINÝMI PROGRAMY), A TO I V PØÍPADÌ, ®E TAKOVÝ DR®ITEL -AUTORSKÝCH PRÁV NEBO JINÁ STRANA BYLI UPOZORNÌNI NA MO®NOST TAKOVÝCH ©KOD.

            -
            KONEC USTANOVENÍ A PODMÍNEK
            -

            Doplnìk: Jak uplatnit tato ustanovení na va¹e nové programy

            -

            Pokud vyvinete nový program a chcete, aby byl veøejnosti co nejvíce k u¾itku, +AUTORSKÝCH PRÁV NEBO JINÁ STRANA BYLI UPOZORNÌNI NA MO®NOST TAKOVÝCH ©KOD.

            +
            KONEC USTANOVENÍ A PODMÍNEK
            +

            Doplnìk: Jak uplatnit tato ustanovení na va¹e nové programy

            +

            Pokud vyvinete nový program a chcete, aby byl veøejnosti co nejvíce k u¾itku, mù¾ete toho nejlépe dosáhnout tím, ¾e jej prohlásíte za volný software, který -mù¾e kdokoliv redistribuovat a mìnit za zde uvedených podmínek.

            -

            K tomu staèí pøipojit k programu následující údaje. Nejbezpeènìj¹í cestou je +mù¾e kdokoliv redistribuovat a mìnit za zde uvedených podmínek.

            +

            K tomu staèí pøipojit k programu následující údaje. Nejbezpeènìj¹í cestou je jejich pøipojení na zaèátek ka¾dého zdrojového souboru, èím¾ se nejúèinnìji sdìlí vylouèení záruky; a v ka¾dý souboru by pak mìla být prinejmen¹ím øádka s -"copyrightem" a odkaz na místo, kde lze nalézt úplné údaje.

            -
            <øádka se jménem programu a nástinem toho, co dìlá>
            +"copyrightem" a odkaz na místo, kde lze nalézt úplné údaje.

            +
            <øádka se jménem programu a nástinem toho, co dìlá>
             
            -Copyright (C)<rok> <jméno autora>
            +Copyright (C)<rok> <jméno autora>
             
             Tento program je volný software; mù¾ete jej ¹íøit a modifikovat podle
             ustanovení Obecné veøejné licence GNU, vydávané Free Software
            @@ -305,39 +304,39 @@ ve
             Kopii Obecné veøejné licence GNU jste mìl obdr¾et spolu s tímto
             programem; pokud se tak nestalo, napi¹te o ni Free Software Foundation,
             Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
            -
            -

            Pøipojte rovnì¾ informaci o tom, jak je mo¾né se s vámi spojit elektronickou -a papírovou po¹tou.

            -

            Pokud je program interaktivní, zaøiïte, aby se pøi startu v interaktivním -módu vypsalo hlá¹ení podobné tomuto:

            -
            Packal verze 69, Copyright (C) 19xx jméno autora.
            +
            
            +

            Pøipojte rovnì¾ informaci o tom, jak je mo¾né se s vámi spojit elektronickou +a papírovou po¹tou.

            +

            Pokud je program interaktivní, zaøiïte, aby se pøi startu v interaktivním +módu vypsalo hlá¹ení podobné tomuto:

            +
            Packal verze 69, Copyright (C) 19xx jméno autora.
             Program Packal je ABSOLUTNÌ BEZ ZÁRUKY; podrobnosti se dozvíte
             zadáním `show w'. Jde o volný software a jeho¹íøení za jistých
             podmínek je vítáno; podrobnosti získáte zadáním `show c'.
            -
            -

            Hypotetické povely `show w' a `show c' by mìly +

            +

            Hypotetické povely `show w' a `show c' by mìly zobrazit pøíslu¹né pasá¾e Obecné veøejné licence. Odpovídající povely ov¹em -nemusí být právì `show w' a `show c'; mohou to být +nemusí být právì `show w' a `show c'; mohou to být tøeba stisky tlaèítka na my¹i nebo polo¾ky v menu--cokoliv, co se do va¹eho -programu hodí.

            -

            Pokud je to nutné, mìl byste také pøimìt svého zamìstnavatele (jestli¾e +programu hodí.

            +

            Pokud je to nutné, mìl byste také pøimìt svého zamìstnavatele (jestli¾e pracujete jako programátor) nebo pøedstavitele va¹í ¹koly, je-li nìkdo takový, k tomu, aby podepsal "zøeknutí se autorských práv". Zde je vzor; jména pozmìòte: -

            Jojotechna, a.s., se tímto zøíká ve¹kerého zájmu o autorská práva k
            +
            Jojotechna, a.s., se tímto zøíká ve¹kerého zájmu o autorská práva k
             programu `Packal' (pøekladaè s nakladaèem) napsanému Jakubem Bastlem.
             
            -<Tomá¹ Slo¾itý--podpis>, 1. dubna 1989
            +<Tomá¹ Slo¾itý--podpis>, 1. dubna 1989
             
             Tomá¹ Slo¾itý, více ne¾ prezident
            -
            -

            Tato Obecná veøejná licence neumo¾òuje zahrnutí va¹eho programu do jiných ne¾ +

            +

            Tato Obecná veøejná licence neumo¾òuje zahrnutí va¹eho programu do jiných ne¾ volných programù. Je-li vá¹ program knihovnou podprogramù, mù¾ete zvá¾it, zda je u¾iteèné umo¾nit sestavování i vázaných aplikaèních programù s va¹í knihovnou. V takovém pøípadì pou¾ijte Obecnou knihovní licenci GNU namísto této -licence.

            +licence.

            -

            Moodle Dokumentace

            -

            Verze: $Id$

            +

            Moodle Dokumentace

            +

            Verze: $Id$

            - - + + diff --git a/lang/cs/docs/philosophy.html b/lang/cs/docs/philosophy.html index 6c20d65feec..35c07d508d3 100644 --- a/lang/cs/docs/philosophy.html +++ b/lang/cs/docs/philosophy.html @@ -1,219 +1,110 @@ - - - - -Dokumentace Moodlu: Východiska - - - - - - - - - - - -

            Východiska

            - - - -
            - -

            Koncepce a celý vývoj systému Moodle jsou zalo¾eny na jistém smìru v - -teorii uèení, na zpùsobu my¹lení, který bývá nìkdy struènì oznaèován jako - -"sociálnì konstrukcionistická pedagogika". (Teï si mo¾ná - -mnozí øíkáte: "zas nìjaký pedagogický blábol," a u¾ saháte po my¹i; prosím, - -vydr¾te, tento výklad mù¾e být u¾iteèný, a» pracujete v kterémkoliv oboru.)

            - - - -

            Tato stránka se sna¾í jednodu¹e vysvìtlit, co se za tímto pojmem skrývá. - -Pøedstavuje ètyøi základní koncepty, na nich¾ je tato teorie - -postavena. Podotýkám, ¾e jde o velmi struèná shrnutí mnoha rozsáhlých výzkumù, - -tak¾e pokud jste se s touto oblastí ji¾ setkali, na¹e definice vám mo¾ná budou - -pøipadat ponìkud zjednodu¹ené.

            - - - -

            Jestli¾e jsou tyto pojmy pro vás zcela nové, mù¾e se stát, ¾e budou zpoèátku - -tì¾ko pochopitelné. Mohu vám pouze doporuèit, abyste je zkusili porovnat s - -vlastními zku¹enostmi, které jste udìlali, kdy¾ jste se sna¾ili nìèemu nauèit.

            - - - -

            1. Konstruktivismus

            - - - -
            - -

            Konstruktivismus tvrdí, ¾e si lidé nové znalosti aktivnì konstruují, - -vytváøejí pøi interakci se svým okolím.

            - -

            V¹e, co ètete, vidíte, sly¹íte, cítíte a èeho se dotýkáte, je porovnáváno s va¹imi - -dosavadními znalostmi, a pokud je to s va¹ím mentálním svìtem kompatibilní, mù¾e se - -to stát novým poznatkem, který si ponesete s sebou. Znalost se upevòuje, pokud ji - -úspì¹nì pou¾ijete v prostøedí, v nìm¾ ¾ijete. Nejste pouhá pamì»ová banka pasivnì - -pøijímající informace, a znalosti vám nemohou být "pøedány" pouhým pøeètením - -nìèeho nebo nasloucháním nìkomu.

            - - - -

            To neznamená, ¾e se nemù¾ete nic nauèit ètením webové stránky nebo sledováním - -pøedná¹ky. To samozøejmì mù¾ete. Konstruktivismus jen zdùrazòuje, ¾e pøi tom probíhá - -interpretace, nikoliv pouhý pøenos informací z jednoho mozku do druhého.

            - -
            - - - -

            2. Konstrukcionismus

            - - - -
            - -

            Konstrukcionismus vychází z toho, ¾e uèení je zvlá¹tì efektivní, jestli¾e pøi nìm - -tvoøíme nìco pro ostatní. Mù¾e to být cokoli, od mluvené vìty nebo sdìlení na - -internetu a¾ po slo¾itìj¹í výtvory, jakými jsou obraz, dùm nebo softwarový produkt.

            - - - -

            Napøíklad tuto stránku si mù¾ete pøeèíst nìkolikrát a pøesto její obsah do - -zítøka zapomenout - ale kdybyste mìli my¹lenky, které obsahuje, vlastními slovy - -vysvìtlit nìkomu jinému, nebo pøipravit a promítnout sadu obrázkù, které by tyto - -pojmy ilustrovaly, mohu zaruèit, ¾e byste získali hlub¹í porozumìní, které by bylo - -lépe zaèlenìno do va¹eho vlastního my¹lení. Proto si lidé dìlají poznámky bìhem pøedná¹ek, - -i kdy¾ je tøeba nikdy nebudou znovu èíst. - -
            - -

            - -
            - - - -

            3. Sociální konstruktivismus

            - - - -
            - -

            Sociální konstruktivismus roz¹iøuje vý¹e uvedené my¹lenky na sociální skupinu, kde - -se vytváøejí vìci spoleènì a pro v¹echny, tak¾e vzniká malá kultura spoleèných výtvorù - -se spoleènými významy. Kdy¾ je jedinec do takové skupiny zaøazen, nepøetr¾itì se uèí, - -jak být její souèástí, a to na mnoha rovinách.

            - -

            Velmi jednoduchým pøíkladem mù¾e být libovolný pøedmìt, tøeba ¹álek. Lze jej pou¾ít - -ke v¹emu mo¾nému, ale jeho tvar jasnì naznaèuje existenci jakéhosi "povìdomí" - -o skladování tekutin. Komplikovanìj¹ím pøíkladem mù¾e být elektronický kurz - tady u¾ nejen - -¾e "tvar" softwarového nástroje naznaèujr nìco o tom, jak by online kurzy mìly fungovat, ale - -èinnost èlenù skupiny a texty, které vytvoøili, pomáhají utváøet chování ka¾dého èlena skupiny. - -

            - -
            - - - -

            4. Kolektivní a samostatné chování

            - - - -
            - -

            Tento koncept se hloubìji zabývá motivací úèastníkù diskuse. Za individuální - -(separate) se pova¾uje chování, pøi kterém se èlovìk sna¾í zùstat 'objektivní' a 'vìcný', hájí - -své vlastní my¹lenky a hledá logické mezery v argumentech protivníka. Vztahové - -(connected) chování je empatiètìj¹í pøístup, který pøipou¹tí subjektivní postoje, sna¾í se - -naslouchat a klást otázky ve snaze porozumìt názoru druhého. Cílové (constructed) - -chování vzniká tehdy, kdy¾ èlovìk vnímá obì tyto mo¾nosti pøístupu a je schopen si jednu z nich - -vybrat jako vhodnou pro danou situaci.

            - -

            Obecnì vzato, rozumná míra vztahového chování je pøi uèení ve skupinì velmi silným stimulem - -pro studium: vedle sbli¾ování lidí také podporuje hlub¹í reflexi a pøezkoumávání jejich pøesvìdèení.

            - -
            - - - -
            - - - -

            Kdy¾ o tìchto vìcech zaènete pøemý¹let, snáze si ujasníte, jaká zku¹enost by nejlépe podporovala - -uèení z pohledu studenta, a nebudete se pak omezovat jen na zveøejòování informací a na stanovování, - -co mají studenti vìdìt. Také si uvìdomíte, ¾e ka¾dý úèastník kurzu mù¾e být vlastnì uèitelem stejnì - -tak jako ¾ákem. Va¹e práce 'uèitele' se tak mù¾e pøesunout od role 'zdroje znalostí' k roli nìkoho, - -kdo ovlivòuje, pøedstavuje model chování, navazuje se studenty osobní kontakt podle jejich - -individuálních studijních potøeb a upravuje diskuse a èinnost tøídy tak, aby úèastníky kolektivnì - -vedly k naplnìní studijních cílù celé tøídy.

            - -

            Systém Moodle samozøejmì tento styl chování nevynucuje, ale právì takovou výuku podporuje - -nejlépe. V budoucnu, a¾ se technická infrastruktura systému Moodle stabilizuje, budou dal¹í - -zlep¹ení v oblasti pedagogiky hlavním smìrem dal¹ího vývoje systému. - -

            - -
            - -
            - -

            Dokumentace Moodlu

            - -

            Verze: $Id$

            - - - - - + + + +Dokumentace Moodlu: Východiska + + + + + +

            Východiska

            + +
            +

            Koncepce a celý vývoj systému Moodle jsou zalo¾eny na jistém smìru v +teorii uèení, na zpùsobu my¹lení, který bývá nìkdy struènì oznaèován jako +"sociálnì konstrukcionistická pedagogika". (Teï si mo¾ná +mnozí øíkáte: "zas nìjaký pedagogický blábol," a u¾ saháte po my¹i; prosím, +vydr¾te, tento výklad mù¾e být u¾iteèný, a» pracujete v kterémkoliv oboru.)

            + +

            Tato stránka se sna¾í jednodu¹e vysvìtlit, co se za tímto pojmem skrývá. +Pøedstavuje ètyøi základní koncepty, na nich¾ je tato teorie +postavena. Podotýkám, ¾e jde o velmi struèná shrnutí mnoha rozsáhlých výzkumù, +tak¾e pokud jste se s touto oblastí ji¾ setkali, na¹e definice vám mo¾ná budou +pøipadat ponìkud zjednodu¹ené.

            + +

            Jestli¾e jsou tyto pojmy pro vás zcela nové, mù¾e se stát, ¾e budou zpoèátku +tì¾ko pochopitelné. Mohu vám pouze doporuèit, abyste je zkusili porovnat s +vlastními zku¹enostmi, které jste udìlali, kdy¾ jste se sna¾ili nìèemu nauèit.

            + +

            1. Konstruktivismus

            + +
            +

            Konstruktivismus tvrdí, ¾e si lidé nové znalosti aktivnì konstruují, +vytváøejí pøi interakci se svým okolím.

            +

            V¹e, co ètete, vidíte, sly¹íte, cítíte a èeho se dotýkáte, je porovnáváno s va¹imi +dosavadními znalostmi, a pokud je to s va¹ím mentálním svìtem kompatibilní, mù¾e se +to stát novým poznatkem, který si ponesete s sebou. Znalost se upevòuje, pokud ji +úspì¹nì pou¾ijete v prostøedí, v nìm¾ ¾ijete. Nejste pouhá pamì»ová banka pasivnì +pøijímající informace, a znalosti vám nemohou být "pøedány" pouhým pøeètením +nìèeho nebo nasloucháním nìkomu.

            + +

            To neznamená, ¾e se nemù¾ete nic nauèit ètením webové stránky nebo sledováním +pøedná¹ky. To samozøejmì mù¾ete. Konstruktivismus jen zdùrazòuje, ¾e pøi tom probíhá +interpretace, nikoliv pouhý pøenos informací z jednoho mozku do druhého.

            +
            + +

            2. Konstrukcionismus

            + +
            +

            Konstrukcionismus vychází z toho, ¾e uèení je zvlá¹tì efektivní, jestli¾e pøi nìm +tvoøíme nìco pro ostatní. Mù¾e to být cokoli, od mluvené vìty nebo sdìlení na +internetu a¾ po slo¾itìj¹í výtvory, jakými jsou obraz, dùm nebo softwarový produkt.

            + +

            Napøíklad tuto stránku si mù¾ete pøeèíst nìkolikrát a pøesto její obsah do +zítøka zapomenout - ale kdybyste mìli my¹lenky, které obsahuje, vlastními slovy +vysvìtlit nìkomu jinému, nebo pøipravit a promítnout sadu obrázkù, které by tyto +pojmy ilustrovaly, mohu zaruèit, ¾e byste získali hlub¹í porozumìní, které by bylo +lépe zaèlenìno do va¹eho vlastního my¹lení. Proto si lidé dìlají poznámky bìhem pøedná¹ek, +i kdy¾ je tøeba nikdy nebudou znovu èíst. +
            +

            +
            + +

            3. Sociální konstruktivismus

            + +
            +

            Sociální konstruktivismus roz¹iøuje vý¹e uvedené my¹lenky na sociální skupinu, kde +se vytváøejí vìci spoleènì a pro v¹echny, tak¾e vzniká malá kultura spoleèných výtvorù +se spoleènými významy. Kdy¾ je jedinec do takové skupiny zaøazen, nepøetr¾itì se uèí, +jak být její souèástí, a to na mnoha rovinách.

            +

            Velmi jednoduchým pøíkladem mù¾e být libovolný pøedmìt, tøeba ¹álek. Lze jej pou¾ít +ke v¹emu mo¾nému, ale jeho tvar jasnì naznaèuje existenci jakéhosi "povìdomí" +o skladování tekutin. Komplikovanìj¹ím pøíkladem mù¾e být elektronický kurz - tady u¾ nejen +¾e "tvar" softwarového nástroje naznaèujr nìco o tom, jak by online kurzy mìly fungovat, ale +èinnost èlenù skupiny a texty, které vytvoøili, pomáhají utváøet chování ka¾dého èlena skupiny. +

            +
            + +

            4. Kolektivní a samostatné chování

            + +
            +

            Tento koncept se hloubìji zabývá motivací úèastníkù diskuse. Za individuální +(separate) se pova¾uje chování, pøi kterém se èlovìk sna¾í zùstat 'objektivní' a 'vìcný', hájí +své vlastní my¹lenky a hledá logické mezery v argumentech protivníka. Vztahové +(connected) chování je empatiètìj¹í pøístup, který pøipou¹tí subjektivní postoje, sna¾í se +naslouchat a klást otázky ve snaze porozumìt názoru druhého. Cílové (constructed) +chování vzniká tehdy, kdy¾ èlovìk vnímá obì tyto mo¾nosti pøístupu a je schopen si jednu z nich +vybrat jako vhodnou pro danou situaci.

            +

            Obecnì vzato, rozumná míra vztahového chování je pøi uèení ve skupinì velmi silným stimulem +pro studium: vedle sbli¾ování lidí také podporuje hlub¹í reflexi a pøezkoumávání jejich pøesvìdèení.

            +
            + +
            + +

            Kdy¾ o tìchto vìcech zaènete pøemý¹let, snáze si ujasníte, jaká zku¹enost by nejlépe podporovala +uèení z pohledu studenta, a nebudete se pak omezovat jen na zveøejòování informací a na stanovování, +co mají studenti vìdìt. Také si uvìdomíte, ¾e ka¾dý úèastník kurzu mù¾e být vlastnì uèitelem stejnì +tak jako ¾ákem. Va¹e práce 'uèitele' se tak mù¾e pøesunout od role 'zdroje znalostí' k roli nìkoho, +kdo ovlivòuje, pøedstavuje model chování, navazuje se studenty osobní kontakt podle jejich +individuálních studijních potøeb a upravuje diskuse a èinnost tøídy tak, aby úèastníky kolektivnì +vedly k naplnìní studijních cílù celé tøídy.

            +

            Systém Moodle samozøejmì tento styl chování nevynucuje, ale právì takovou výuku podporuje +nejlépe. V budoucnu, a¾ se technická infrastruktura systému Moodle stabilizuje, budou dal¹í +zlep¹ení v oblasti pedagogiky hlavním smìrem dal¹ího vývoje systému. +

            +
            +
            +

            Dokumentace Moodlu

            +

            Verze: $Id$

            + + diff --git a/lang/cs/docs/teacher.html b/lang/cs/docs/teacher.html index 0a768967b3b..50cf6c1657a 100644 --- a/lang/cs/docs/teacher.html +++ b/lang/cs/docs/teacher.html @@ -1,13 +1,11 @@ - - + Dokumentace Moodlu: Pøíruèka uèitele - - + + - +

            Pøíruèka uèitele

            Tato stránka slou¾í jako rychlý prùvodce pro vytváøení on-line kurzù v systému Moodle. Jsou zde nastínìny jeho základní funkce a také nìkterá dùle¾itá @@ -37,14 +35,14 @@ se n

          • Seznamte se s tìmito ikonami a pou¾ívejte je:
            -

              - ikona editace +

              - ikona editace vám umo¾òuje editovat polo¾ku, vedle ní¾ je zobrazena

            -

            - ikona +

            - ikona nápovìdy vám otevøe nové okno s nápovìdou

            -

              - ikona +

              - ikona otevøeného oka umo¾òuje skrýt polo¾ku pøed studenty

            -

              - ikona +

              - ikona zavøeného oka oznaèuje skrytou polo¾ku a umo¾òuje ji zpøístupnit

            @@ -77,13 +75,13 @@ zp rùzných barev; ty ve skuteènosti nastavuje správce a jsou pro v¹echny kurzy v systému stejné):

            Týdenní uspoøádání:

            -

            +

             

            Tematické uspoøádání:

            -

            +

             

            Diskusní uspoøádání:

            -

            +

             

            Jak vidíte, struktura týdenního a tematického uspoøádání je velice podobná. Li¹í se pouze v tom, ¾e v týdenním uspoøádání odpovídá ka¾dé pole právì @@ -104,7 +102,7 @@ v syst editovat a mazat.

            K tomu slou¾í odkaz Soubory v sekci Správa. Stránka pro správu souborù vypadá takto:

            -

            +

             

            Toto rozhraní je pøístupné pouze uèitelùm, studenti k nìmu pøístup nemají. Jednotlivé soubory jsou studentùm zpøístupnìny pozdìji (jako Studijní materiál @@ -148,27 +146,24 @@ v syst splnìným zadáním; datum vlo¾ení souboru bude zaznamenáno. Jako uèitel pak máte k dispozici jednu souhrnnou stránku, ze které mù¾ete nahlí¾et do v¹ech odevzdaných souborù a kde k nim mù¾ete pøipojit hodnocení a komentáø. Pùl - hodiny poté, co práci studenta ohodnotíte, mu systém ode¹le e-mailem upozornìní. -
            -
            - + hodiny poté, co práci studenta ohodnotíte, mu systém ode¹le e-mailem upozornìní. +
            +

            Hlasování
            Èinnost Hlasování je velice jednoduchá - polo¾íte otázku a stanovíte mo¾né odpovìdi. Studenti si vyberou variantu odpovìdi, a vy máte k dispozici pøehlednou stránku se záznamem výsledkù. Hlasování lze vyu¾ít jako rychlého dotazníku èi tøídních voleb nebo napøíklad k získání souhlasu -studentù s jejich zaøazením do výzkumu. -
            -
            -
            +studentù s jejich zaøazením do výzkumu. +
            +
            Fórum
            Tento modul je zdaleka nejdùle¾itìj¹í - právì zde se odehrává diskuse. Kdy¾ pøidáváte nové fórum, máte na výbìr nìkolik mo¾ností: jednoduchou diskusi na jedno téma, volnou diskusi nebo diskusi, do ní¾ smí ka¾dý úèastník pøispìt -pouze jednou. -
            -
            -
            +pouze jednou. +
            +
            Poznámkový deník
            Student si v prùbìhu kurzu mù¾e vést poznámkový deník. Ka¾dý záznam v deníku iniciuje uèitel zaøazením èinnosti Poznámky s uvedením spoleèné otázky pro v¹echny @@ -179,17 +174,15 @@ pouze jednou. pak mù¾e ke ka¾dému zápisu v daném týdnu nebo tématu pøipojit hodnocení èi komentáø; student je na to upozornìn e-mailem. Deník není urèen k prùbì¾nému doplòování ji¾ vlo¾ených zápisù; chcete-li, aby studenti pøispívali do deníku - opakovanì, vlo¾te èinnost Poznámky vícekrát. -
            -
            -
            + opakovanì, vlo¾te èinnost Poznámky vícekrát. +
            +
            Studijní materiály
            Studijní materiály tvoøí vlastní obsah kurzu. Mù¾e jimi být jakýkoliv soubor, který do Moodlu vlo¾íte, nebo odkaz na internet. Mù¾ete si v¹ak také -zalo¾it a udr¾ovat jednoduché textové stránky psané pøímo do pøipraveného okna. -
            -
            -
            +zalo¾it a udr¾ovat jednoduché textové stránky psané pøímo do pøipraveného okna. +
            +
            Test
            Tento modul umo¾òuje vytváøet a zadávat testy sestávající z otázek s rùznými typy odpovìdí: výbìr odpovìdi z daných mo¾ností, odpovìï @@ -197,10 +190,9 @@ zalo databázi a mohou být pou¾ity vícekrát, a to i v rùzných kurzech. U testu lze povolit opakování pokusù. Ka¾dý pokus je automaticky ohodnocen. Uèitel mù¾e nastavit, zda se studentùm zobrazí komentáø k jednotlivým odpovìdím, resp. - správná odpovìï. Modul také obsahuje nástroje pro hodnocení. -
            -
            -
            + správná odpovìï. Modul také obsahuje nástroje pro hodnocení. +
            +
            Dotazník
            Modul Dotazník obsahuje nìkolik pøeddefinovaných dotazníkových nástrojù, které lze pou¾ít napø. k získání pøedstavy o slo¾ení kurzu a oèekávání @@ -208,13 +200,13 @@ zalo je mù¾ete napøíklad na zaèátku kurzu jako diagnostické nástroje a na konci pro evaluaci kurzu (ale podle potøeby i èastìji).
            -
            +

            Èinnosti, které jste do kurzu pøidali, mù¾ete v rozvrhu kurzu pøesouvat - nahoru èi dolù kliknutím na malé smìrové ikony ( ) + nahoru èi dolù kliknutím na malé smìrové ikony ( ) vedle ka¾dé z nich. Èinnosti lze také mazat kliknutím na ikonu køí¾ku - nebo upravovat pomocí - editaèní ikony .

            + nebo upravovat pomocí + editaèní ikony .

             

            @@ -256,17 +248,17 @@ zalo jako úèastníci kurzu "Using Moodle". Budete vítáni - a mù¾ete pomoci Moodle vylep¹it.

            Pokud byste chtìli pomoci s psaním dokumentace nebo kódu pro nové moduly, - kontaktujte mì (Martin Dougiamas) nebo se podívejte na stránku pro "vychytávání much" na moodle.org/bugs.

            A nezapomeòte pou¾ívat ikony nápovìdy - tady je rejstøík v¹ech souborù nápovìdy v Moodlu.

            Dìkujeme, ¾e pou¾íváte Moodle - a hodnì ¹tìstí pøi výuce!

            -
            +

             

            -

            Dokumentace Moodle

            -

            Verze: $Id$

            +

            Dokumentace Moodle

            +

            Verze: $Id$

            diff --git a/lang/cs/docs/upgrade.html b/lang/cs/docs/upgrade.html index b281ab032ae..8e537b0b95e 100644 --- a/lang/cs/docs/upgrade.html +++ b/lang/cs/docs/upgrade.html @@ -1,13 +1,10 @@ - - Dokumentace Moodlu: Aktualizace - - + + - +

            Aktualizace Moodlu

            @@ -112,7 +109,7 @@

             

             

            -

            Dokumentace Moodlu

            +

            Dokumentace Moodlu

            \ No newline at end of file diff --git a/lang/cs/editor.php b/lang/cs/editor.php index feac7b29a1d..abca8d254bb 100644 --- a/lang/cs/editor.php +++ b/lang/cs/editor.php @@ -1,16 +1,12 @@ +?> \ No newline at end of file diff --git a/lang/cs/enrol_flatfile.php b/lang/cs/enrol_flatfile.php index 98da4913a1c..1e1706f9941 100644 --- a/lang/cs/enrol_flatfile.php +++ b/lang/cs/enrol_flatfile.php @@ -1,21 +1,9 @@ -add, student, 5, CF101 -add, teacher, 6, CF101 -add, teacheredit, 7, CF101 -del, student, 8, CF101 -del, student, 17, CF101 -add, student, 21, CF101, 1091115000, 1091215000 -'; $string['enrolname'] = 'Ze souboru'; $string['filelockedmail'] = 'Textovy soubor, ktery pouzivate pro zapisy ($a), nemuze byt odstranen procesem cron. Vetsinou je to zpusobeno spatne nastavenymi pravy. Prosim, opravte prava tak, aby mohl Moodle tento soubor odstranit. Jinak muze dochazet k jeho opakovanemu zpracovani.'; $string['filelockedmailsubject'] = 'Dulezita chyba: Soubor se zapisy'; -$string['location'] = 'Umítìní souboru'; -$string['mailadmin'] = 'Upozornit správce emailem'; -$string['mailusers'] = 'Upozornit u¾ivatele emailem'; ?> diff --git a/lang/cs/enrol_internal.php b/lang/cs/enrol_internal.php index a549cefcc8f..d0866b5660e 100644 --- a/lang/cs/enrol_internal.php +++ b/lang/cs/enrol_internal.php @@ -1,12 +1,7 @@ -
          • Uèitel nebo správce mù¾e studenty zapsat do kurzù ruènì pomocí nabídky Správa v pøíslu¹ných kurzech.
          • -
          • Libovolný kurz mù¾e mít definováno vstupní heslo známé jako \"klíè k zápisu\". Kdokoliv, kdo zná toto heslo, mù¾e se sám stát úèastníkem pøíslu¹eného kurzu.
          • -'; $string['enrolname'] = 'Interní zápis'; ?> diff --git a/lang/cs/enrol_paypal.php b/lang/cs/enrol_paypal.php index 780ed5968f3..f99daf9b508 100644 --- a/lang/cs/enrol_paypal.php +++ b/lang/cs/enrol_paypal.php @@ -1,9 +1,7 @@ modulename\" ($a->moduleversion) nemohl být nainstalován. Vy¾aduje novìj¹í verzi Moodle (pou¾íváte verzi $a->currentmoodle, potøebujete $a->requiremoodle).'; $string['notavailable'] = 'Prozatím není dostupné'; -$string['restricteduser'] = 'Je mi líto, ale stávajícímu úètu \'$a\' bylo zakázáno toto provést.'; -$string['sessionipnomatch'] = 'Je mi líto, ale va¹e IP se v prùbìhu va¹eho pøihlá¹ení zmìnila. Toto bezpeènostní opatøení zabraòuje útoèníkùm vydávat se za pøihlá¹eného u¾ivatele. Bì¾ným u¾ivatelùm by se tato zpráva nemìla zobrazit - spojte se s va¹ím správcem a po¾ádejte jej o pomoc.'; -$string['unknowncourse'] = 'Neznámý kurz s názvem \'$a\''; -$string['usernotaddederror'] = 'U¾ivatel \'$a\' nebyl pøidán - neznámá chyba'; -$string['usernotaddedregistered'] = 'U¾ivatel \'$a\' nebyl pøidán - ji¾ registrován'; -$string['usernotavailable'] = 'Informace o tomto u¾ivateli vám nejsou dostupné.'; +$string['restricteduser'] = 'Je mi líto, ale stávajícímu úètu \"$a\" bylo zakázáno toto provést.'; +$string['unknowncourse'] = 'Neznámý kurz s názvem '; +$string['usernotaddederror'] = 'U¾ivatel nebyl pøidán - neznámá chyba'; +$string['usernotaddedregistered'] = 'U¾ivatel nebyl pøidán - ji¾ registrován'; ?> diff --git a/lang/cs/exercise.php b/lang/cs/exercise.php index c645127e10c..f14229aac63 100644 --- a/lang/cs/exercise.php +++ b/lang/cs/exercise.php @@ -1,15 +1,15 @@ To mù¾ete provést kliknutím na odkaz Pøehodnotit uvedený ní¾e.'; $string['awaitingassessmentbythe'] = 'Èeká se na hodnocení od $a'; +$string['awaitingfeedbackfromthe'] = 'Èeká se na vyjádøení od $a'; $string['clearlateflag'] = 'Smazat pøíznak Zpo¾dìno'; $string['comment'] = 'Komentáø'; -$string['comparisonofassessments'] = 'Srovnání hodnocení'; $string['confirmdeletionofthisitem'] = 'Potvrïte odstranìní tohoto $a'; $string['correct'] = 'Opravte'; -$string['count'] = 'Poèet'; $string['criterion'] = 'Kritérium'; $string['deadline'] = 'Uzávìrka'; $string['deadlineis'] = 'Uzávìrka je $a'; $string['delete'] = 'Odstranit'; -$string['deletesubmissionwarning'] = 'Upozornìní: toto øe¹ení je ji¾ hodnoceno ($a-krát).
            Rozhodnì vám jej doporuèujeme NEODSTRAÒOVAT. '; $string['deleting'] = 'Odstraòuje se'; $string['description'] = 'Popis'; $string['descriptionofexercise'] = 'Pøi zadávání úkolu je popis cvièení @@ -53,28 +51,23 @@ $string['edit'] = 'Upravit'; $string['editingassessmentelements'] = 'Úprava polo¾ek hodnocení'; $string['element'] = 'Polo¾ka'; $string['elementweight'] = 'Váha polo¾ky'; -$string['enterpassword'] = 'Vlo¾te heslo'; $string['entriessaved'] = 'Záznamy ulo¾eny'; $string['errorbanded'] = 'Mno¾ství chyb'; $string['excellent'] = 'Výbornì'; $string['exerciseassessments'] = 'Hodnocení cvièení'; $string['exercisefeedback'] = 'Cvièení - zpìtná vazba'; $string['exercisesubmissions'] = 'Øe¹ení'; -$string['fair'] = 'Uspokojivý'; $string['generalcomment'] = 'Obecný komentáø'; $string['good'] = 'Dobrý'; $string['gradeassessment'] = 'Bodové ohodnocení'; $string['gradeforassessment'] = 'Body pro hodnocení'; $string['gradeforstudentsassessment'] = 'Body za hodnocení, které dìlají $a'; $string['gradeforsubmission'] = 'Body za øe¹ení'; -$string['gradetable'] = 'Bodová tabulka'; -$string['gradinggrade'] = 'Body za bodování'; +$string['gradetable'] = 'Bodovací tabulka'; $string['gradingstrategy'] = 'Bodovací strategie'; $string['handlingofmultiplesubmissions'] = 'Zpracování více øe¹ení'; $string['hidenamesfromstudents'] = 'Skrýt jména pøed studenty'; $string['incorrect'] = 'Nesprávnì'; -$string['late'] = 'Pozdì'; -$string['lax'] = 'Nedbalý'; $string['leaguetable'] = 'Ligová tabulka odevzdaných prací'; $string['mail1'] = 'Vas ukol \'$a\' hodnotil '; $string['mail2'] = 'Poznamky a body lze videt v zadani cviceni \'$a\''; @@ -82,12 +75,7 @@ $string['mail3'] = 'Muzete jej videt v zadani ukolu vaseho cviceni'; $string['mail6'] = 'Vase hodnoceni ukolu \'$a\' bylo posouzeno'; $string['mail7'] = 'Komentare, které uvedl $a, lze videt v zadani tohoto cviceni'; $string['managingassignment'] = 'Správa cvièení'; -$string['maximum'] = 'Maximum'; -$string['maximumgradeforstudentassessments'] = 'Nejvìt¹í mo¾ný poèet bodù za hodnocení studenty: $a'; -$string['maximumgradeforsubmissions'] = 'Nejvìt¹í mo¾ný poèet bodù za øe¹ení: $a'; $string['maximumsize'] = 'Nejvìt¹í mo¾ná velikost'; -$string['mean'] = 'Prùmìr'; -$string['minimum'] = 'Minimum'; $string['modulename'] = 'Cvièení'; $string['modulenameplural'] = 'Cvièení'; $string['movingtophase'] = 'Pøechází se do fáze $a'; @@ -96,20 +84,20 @@ $string['noexercisedescriptionssubmitted'] = 'Nebyl pod $string['nosubmissions'] = '®ádná øe¹ení'; $string['notassessedyet'] = 'Dosud nehodnoceno'; $string['notavailable'] = 'Není k dispozici'; -$string['noteonassessmentelements'] = 'Pov¹imnìte si, ¾e bodování je rozdìleno do nìkolika \"polo¾ek hodnocení\".
            Tím se dosáhne toho, ¾e bodování je snadnìj¹í a celistvìj¹í. Jako uèitel musíte pøidat tyto
            polo¾ky je¹tì pøed zpøístupnìním úkolu studentùm. To udìláte tak,
            ¾e kliknete na úkol v kurzu - budete vyzváni k pøidání
            tìchto polo¾ek hodnocení. Jejich poèet mù¾ete mìnit na obrazovce Upravit úkol,
            samy polo¾ky mohou být upraveny na stránce \"Správa úkolù\".'; -$string['noteongradinggrade'] = 'Tyto body jsou mìøítkem, jak dobøe va¹e hodnocení souhlasí s hodnocením va¹í práce, které vypracoval $a. Èím vy¹¹í je poèet bodù, tím jsou si hodnocení bli¾¹í.'; -$string['noteonstudentassessments'] = '{Body od studenta/Body za bodování}'; +$string['noteonassessmentelements'] = 'Pov¹imnìte si, ¾e bodování je rozdìleno do nìkolika "polo¾ek hodnocení".
            Tím se dosáhne toho, ¾e bodování je snadnìj¹í a celistvìj¹í. Jako uèitel musíte pøidat tyto
            polo¾ky je¹tì pøed zpøístupnìním úkolu studentùm. To udìláte tak,
            ¾e kliknete na úkol v kurzu - budete vyzváni k pøidání
            tìchto polo¾ek hodnocení. Jejich poèet mù¾ete mìnit na obrazovce Upravit úkol,
            samy polo¾ky mohou být upraveny na stránce "Správa úkolù".'; +$string['noteonstudentassessments'] = '{Body od studenta/Body od uèitele}'; $string['notgraded'] = 'Nebodováno'; $string['notitlegiven'] = 'Titulek neuveden'; +$string['nowpleasemakeyourownassessment'] = 'Nyní prosím proveïte vlastní hodnocení èásti práce, kterou odevzdal $a.
            +Hodnotící formuláø zpoèátku obsahuje stejné bodování jako
            +studentský formuláø. Mìli byste provést úpravy a doplnìní, které pova¾ujete za nezbytné,
            +a kliknout na jedno z tlaèítek ve spodní èásti stránky.'; $string['numberofassessmentelements'] = 'Poèet komentáøù, polo¾ek hodnocení, bodù, kritérií nebo kategorií v oddílu'; -$string['numberofcriterionelements'] = 'Poèet kritérií musí být vìt¹í ne¾ jedno.'; $string['numberofentries'] = 'Poèet polo¾ek'; -$string['numberofentriesinleaguetable'] = 'Poèet polo¾ek v ligové tabulce'; $string['numberofnegativeresponses'] = 'Poèet záporných odpovìdí'; $string['onesubmission'] = 'Jedno øe¹ení'; $string['optionaladjustment'] = 'Volitelné nastavení'; $string['overallgrade'] = 'Celkový poèet bodù'; -$string['passwordprotectedexercise'] = 'Heslem chránìné cvièení'; $string['phase'] = 'Fáze'; $string['phase1'] = 'Nastavení cvièení'; $string['phase1short'] = 'Nastavit'; @@ -118,7 +106,6 @@ $string['phase2short'] = 'Otev $string['phase3'] = 'Ukázat celkový poèet bodù v ligové tabulce'; $string['phase3short'] = 'Zobrazit'; $string['pleasegradetheassessment'] = 'Prosím, obodujte hodnocení této èásti práce - zpracoval $a'; -$string['pleasemakeyourownassessment'] = 'Prosím, proveïte hodnocení øe¹ení, které vypracoval $a.
            Pov¹imnìte si, ¾e forma hodnocení je zpoèátku zobrazována spolu s hodnocením studentù.
            Mìli byste vlo¾it dle va¹eho mínìní nezbytné návrhy na zmìny a poté kliknout na jedno z tlaèítek ve spodní èásti stránky.'; $string['pleasesubmityourwork'] = 'Prosím, odevzdejte va¹i práci za pou¾ití tohoto formuláøe'; $string['pleaseusethisform'] = 'Prosím, vyplòte tento formuláø, pokud jste
            dokonèili instrukce v cvièení uvedeném ní¾e.'; @@ -131,7 +118,6 @@ $string['poor'] = 'Slab $string['present'] = 'Obsahuje'; $string['reasonforadjustment'] = 'Dùvod úpravy'; $string['reassess'] = 'Pøehodnotit'; -$string['regradestudentassessments'] = 'Pøebodovat hodnocení studentù'; $string['resubmissionfor'] = 'Znovuodevzdání - $a'; $string['resubmitnote'] = '* znamená, ¾e $a má povolené opakované podání.
            Tento pøíznak mù¾e být pøidìlen jakémukoli odevzdanému úkolu jeho pøehodnocením a @@ -153,8 +139,6 @@ $string['scalegood3'] = '3 bodov $string['scalepresent'] = '2 bodová stupnice Obsahuje/Chybí'; $string['scaleyes'] = '2 bodová stupnice Ano/Ne'; $string['specimenassessmentform'] = 'Ukázkový formuláø hodnocení'; -$string['standarddeviation'] = 'Smìrodatná odchylka'; -$string['strict'] = 'Pøesný'; $string['studentallowedtoresubmit'] = '$a MÙ®E znovudevzdávat'; $string['studentassessments'] = '$a - hodnocení'; $string['studentnotallowed'] = '$a NEMÙ®E znovuodevzdávat'; @@ -180,16 +164,12 @@ Po prohl a kliknìte na jedno z tlaèítek na dolním okraji stránky.'; $string['title'] = 'Název'; $string['typeofscale'] = 'Typ ¹kály'; -$string['unassessed'] = '$a nehodnoceno'; $string['ungradedstudentassessments'] = '$a Nebodovaných studentských hodnocení'; $string['usemaximum'] = 'Pou¾ít maximum'; $string['usemean'] = 'Pou¾ít prùmìr'; -$string['usepassword'] = 'Pou¾ít heslo'; -$string['verylax'] = 'Velmi nedbalý'; $string['verypoor'] = 'Velmi slabý'; -$string['verystrict'] = 'Velmi pøesný'; $string['view'] = 'Zobrazit'; -$string['viewteacherassessment'] = 'Zobrazit $a hodnocení'; +$string['viewassessment'] = 'Zobrazit hodnocení'; $string['warningonamendingelements'] = 'UPOZORNÌNÍ: Bylo nalezeno odevzdané hodnocení
            NEMÌÒTE poèet polo¾ek hodnocení, typ ¹kály nebo váhu jednotlivých polo¾ek.'; $string['weightederrorcount'] = 'Vá¾ený poèet chyb: $a'; $string['weightforgradingofassessments'] = 'Váha pro bodování hodnocení'; @@ -197,7 +177,6 @@ $string['weightforteacherassessments'] = 'V $string['weights'] = 'Váhy'; $string['weightssaved'] = 'Váhy ulo¾eny'; $string['weightsusedforoverallgrade'] = 'Váhy pou¾ité pro celkové bodování'; -$string['wrongpassword'] = 'Neplatné heslo k tomuto cvièení'; $string['yourassessment'] = 'Va¹e hodnocení'; $string['yourfeedbackgoeshere'] = 'Va¹e vyjádøení pøijde SEM'; $string['yoursubmission'] = 'Va¹e odevzdané úkoly'; diff --git a/lang/cs/fonts/README.txt b/lang/cs/fonts/README.txt index 73dee112b9f..7b4b3f98d98 100644 --- a/lang/cs/fonts/README.txt +++ b/lang/cs/fonts/README.txt @@ -1,4 +1,4 @@ -fonty +Fonty ----- Tento adresar obsahuje fonty, ktere jsou pouzivany pri diff --git a/lang/tl/fonts/default.ttf b/lang/cs/fonts/default.ttf similarity index 100% rename from lang/tl/fonts/default.ttf rename to lang/cs/fonts/default.ttf diff --git a/lang/cs/forum.php b/lang/cs/forum.php index 33585197f1f..010035a9bcf 100644 --- a/lang/cs/forum.php +++ b/lang/cs/forum.php @@ -1,5 +1,5 @@ Na pøípadné úpravy máte $a .'; +$string['postadded'] = 'Vá¹ pøíspìvek byl úspì¹nì pøidán.

            Na pøípadné úpravy máte $a .'; $string['postincontext'] = 'Ukázat pøíspìvek v kontextu'; $string['postmailinfo'] = 'Toto je kopie nove zpravy ze stranek $a . Chcete-li na prispevek odpovedet, nasledujte tento odkaz:'; @@ -101,7 +100,6 @@ $string['postrating3'] = 'Vykazuje zejm $string['posts'] = 'Pøíspìvky'; $string['posttoforum'] = 'Poslat do fóra'; $string['postupdated'] = 'Vá¹ pøíspìvek byl aktualizován'; -$string['potentialsubscribers'] = 'Odbìratelé k dispozici'; $string['processingdigest'] = 'Zpracovávám souhrnný email pro u¾ivatele $a'; $string['processingpost'] = 'Zpracovávám pøíspìvek $a'; $string['prune'] = 'Oddìlit'; @@ -149,8 +147,6 @@ $string['subscriptions'] = 'Odeb $string['unsubscribe'] = 'Neodebírat pøíspìvky z tohoto fóra emailem'; $string['unsubscribed'] = 'Neodebíráno'; $string['unsubscribeshort'] = 'Neodebírat'; -$string['yesforever'] = 'Ano, nav¾dy'; -$string['yesinitially'] = 'Ano, na zaèátku'; $string['youratedthis'] = 'Ji¾ jste hodnotili'; $string['yournewtopic'] = 'Va¹e nové téma diskuse'; $string['yourreply'] = 'Va¹e odpovìï'; diff --git a/lang/cs/glossary.php b/lang/cs/glossary.php index a3fa1222bc8..74b05013376 100644 --- a/lang/cs/glossary.php +++ b/lang/cs/glossary.php @@ -1,5 +1,5 @@ Pojem a jeho definice jsou povinná pole.'; +$string['explainaddentry'] = 'Pøidat novou polo¾ku do stávajícího slovníku.
            Pojem a jeho definice jsou povinná pole.'; $string['explainall'] = 'Zobrazit V©ECHNY polo¾ky na jedné stránce'; $string['explainalphabet'] = 'Procházet slovníkem pomocí tohoto rejstøíku'; -$string['explainexport'] = 'Soubor vytvoøen.
            Stáhnìte si jej a uchovejte v bezpeèí. Pozdìji jej kdykoliv mù¾ete importovat do tohoto nebo jiného kurzu.'; +$string['explainexport'] = 'Soubor vytvoøen.
            Stáhnìte si jej a uchovejte v bezpeèí. Pozdìji jej kdykoliv mù¾ete importovat do tohoto nebo jiného kurzu.'; $string['explainimport'] = 'Musíte urèit importovaný soubor a kritéria importu.

            Ode¹lete vá¹ po¾adavek a zkontrolujte si výsledky importu.'; $string['explainspecial'] = 'Ukazuje polo¾ky, které nezaèínají písmenem'; $string['exportedentry'] = 'Exportované polo¾ky'; @@ -102,8 +99,7 @@ $string['exporttomainglossary'] = 'Exportovat do hlavn $string['filetoimport'] = 'Importovat ze souboru'; $string['fillfields'] = 'Pojem a definice jsou povinná pole.'; $string['filtername'] = 'Automatické propojování slovníku'; -$string['fullmatch'] = 'Srovnávat pouze celá slova
            (pøi automatickém propojování)'; -$string['globalglossary'] = 'Globální slovník'; +$string['fullmatch'] = 'Srovnávat pouze celá slova
            (pøi automatickém propojování)'; $string['glossaryleveldefaultsettings'] = 'Výchozí nastavení pro slovník'; $string['glossarytype'] = 'Typ slovníku'; $string['glosssaryexported'] = 'Slovník exportován.'; diff --git a/lang/cs/help/assignment/assignmenttype.html b/lang/cs/help/assignment/assignmenttype.html index e6583f69e8f..c37a96a251c 100644 --- a/lang/cs/help/assignment/assignmenttype.html +++ b/lang/cs/help/assignment/assignmenttype.html @@ -1,13 +1,13 @@ -

            Typy úkolù

            +

            Typy úkolù

            -

            V Moodlu existují dva základní typy úkolù.

            +

            V Moodlu existují dva základní typy úkolù.

            -

            Odevzdat soubor - tento typ úkolu umo¾òuje ka¾dému studentovi odevzdat +

            Odevzdat soubor - tento typ úkolu umo¾òuje ka¾dému studentovi odevzdat (nahrát na server) jeden soubor libovolného formátu. Mù¾e to být textový dokument, obrázek, zazipované webové stránky nebo jakýkoliv jiný soubor - to závisí na -va¹em zadání. Uèitelé mohou odevzdané úkoly on-line hodnotit.

            +va¹em zadání. Uèitelé mohou odevzdané úkoly on-line hodnotit.

            -

            Offline èinnost - urèen pro plnìní úkolù mimo Moodle. Studentùm je +

            Offline èinnost - urèen pro plnìní úkolù mimo Moodle. Studentùm je zobrazeno zadání úkolu, nenahrávají v¹ak ¾ádné soubory ani nic jiného. Uèitelé mají pøesto mo¾nost výkon studentù v systému ohodnotit; studenti jsou o provedeném -hodnocení informováni.

            +hodnocení informováni.

            diff --git a/lang/cs/help/assignment/index.html b/lang/cs/help/assignment/index.html index 312397b005f..064234c318c 100644 --- a/lang/cs/help/assignment/index.html +++ b/lang/cs/help/assignment/index.html @@ -1,5 +1,5 @@

            Úkoly

            diff --git a/lang/cs/help/assignment/mods.html b/lang/cs/help/assignment/mods.html index a1684797e6c..023a567528b 100644 --- a/lang/cs/help/assignment/mods.html +++ b/lang/cs/help/assignment/mods.html @@ -1,7 +1,7 @@ -

             Úkoly

            -
              -

              Úkoly se pou¾ívají pro zadávání takových úloh, jejich¾ splnìní vy¾aduje, aby +

               Úkoly

              +
                +

                Úkoly se pou¾ívají pro zadávání takových úloh, jejich¾ splnìní vy¾aduje, aby student vytvoøil digitální obsah (v libovolném formátu) a elektronicky jej odevzdal (ulo¾il na server). Typickými úkoly jsou eseje, projekty, referáty -atd. Modul obsahuje také nástroje pro bodové a slovní hodnocení.

                -
              +atd. Modul obsahuje také nástroje pro bodové a slovní hodnocení.

              +
            diff --git a/lang/cs/help/assignment/resubmit.html b/lang/cs/help/assignment/resubmit.html index 598d38bba98..6ac0c26bc5f 100644 --- a/lang/cs/help/assignment/resubmit.html +++ b/lang/cs/help/assignment/resubmit.html @@ -1,8 +1,8 @@ -

            Opakované odevzdávání úkolù

            +

            Opakované odevzdávání úkolù

            -

            Ve výchozím nastavení není studentovi umo¾nìno znovu odevzdat vypracování -úkolu, jestli¾e je uèitel ji¾ ohodnotil.

            +

            Ve výchozím nastavení není studentovi umo¾nìno znovu odevzdat vypracování +úkolu, jestli¾e je uèitel ji¾ ohodnotil.

            -

            Pokud znovuodevzdání povolíte, student bude moci odevzdat nové vypracování +

            Pokud znovuodevzdání povolíte, student bude moci odevzdat nové vypracování úkolu i po provedeném hodnocení, a vy je budete moci ohodnotit znovu. Tak mù¾ete -studenty postupnì pøivést ke zdokonalení jejich práce.

            +studenty postupnì pøivést ke zdokonalení jejich práce.

            diff --git a/lang/cs/help/chat/chatting.html b/lang/cs/help/chat/chatting.html index 38cba458324..aa4f3f2685e 100755 --- a/lang/cs/help/chat/chatting.html +++ b/lang/cs/help/chat/chatting.html @@ -1,27 +1,27 @@ -

            Jak pou¾ívat Chat

            +

            Jak pou¾ívat Chat

            -

            Modul Chat obsahuje nìkteré nástroje, které chatování zpøíjemòují.

            +

            Modul Chat obsahuje nìkteré nástroje, které chatování zpøíjemòují.

            -
            -
            Smajlíky
            -
            Stejnì jako jinde v Moodlu, i zde mù¾ete pou¾ívat smajlíky (emotikony) a +
            +
            Smajlíky
            +
            Stejnì jako jinde v Moodlu, i zde mù¾ete pou¾ívat smajlíky (emotikony) a také zde budou správnì zobrazeny, napøíklad :-) = -
            +
            -
            Odkazy
            -
            Internetové adresy budou automaticky pøevedeny na odkazy.
            +
            Odkazy
            +
            Internetové adresy budou automaticky pøevedeny na odkazy.
            Scénické poznámky
            Chcete-li popsat svou èinnost jakoby zvenèí, mù¾ete svùj vzkaz zaèít "/me" nebo ":". Napøíklad jestli¾e se jmenujete Martin a napí¹ete ":se smìje" nebo "/me se smìje", v¹em se zobrazí zpráva "Martin se smìje".
            -
            Prozvánìní
            -
            Kliknutím na odkaz "prozvonit" vedle jména osoby jí po¹lete zvukový signál. -Prozvonit v¹echny úèastníky chatu lze jednodu¹e pøíkazem "beep all".
            +
            Prozvánìní
            +
            Kliknutím na odkaz "prozvonit" vedle jména osoby jí po¹lete zvukový signál. +Prozvonit v¹echny úèastníky chatu lze jednodu¹e pøíkazem "beep all".
            -
            HTML
            -
            Pokud ovládáte jazyk HTML, mù¾ete jej pou¾ít a vlo¾it tak do svého vzkazu +
            HTML
            +
            Pokud ovládáte jazyk HTML, mù¾ete jej pou¾ít a vlo¾it tak do svého vzkazu obrázek, pøehrát v nìm zvukový soubor nebo vytvoøit text rùzných barev a rùzné -velikosti.
            -
            \ No newline at end of file +velikosti. + \ No newline at end of file diff --git a/lang/cs/help/chat/index.html b/lang/cs/help/chat/index.html index 97e8dce0e1b..3be2616646d 100755 --- a/lang/cs/help/chat/index.html +++ b/lang/cs/help/chat/index.html @@ -1 +1,4 @@ -

            Modul Chat

            \ No newline at end of file +

            Modul Chat

            + diff --git a/lang/cs/help/chat/mods.html b/lang/cs/help/chat/mods.html index ed38b0a3865..17c0ac84c6b 100755 --- a/lang/cs/help/chat/mods.html +++ b/lang/cs/help/chat/mods.html @@ -1,8 +1,8 @@ -

             Chat

            -
              -

              Modul Chat umo¾òuje úèastníkùm kurzu diskutovat spolu na internetu v reálném +

               Chat

              +
                +

                Modul Chat umo¾òuje úèastníkùm kurzu diskutovat spolu na internetu v reálném èase. Je to u¾iteèný zpùsob, jak získat jiný pohled na sebe navzájem i na téma, o kterém se diskutuje. Chatovací místnosti nabízejí zcela jiný typ komunikace ne¾ asynchronní diskuse ve fórech. Modul obsahuje øadu nástrojù pro správu -chatování a pro prohlí¾ení probìhlých diskusí.

                -
              \ No newline at end of file +chatování a pro prohlí¾ení probìhlých diskusí.

              +
            \ No newline at end of file diff --git a/lang/cs/help/choice/index.html b/lang/cs/help/choice/index.html index 9d9f97e818d..65e11f4ff35 100755 --- a/lang/cs/help/choice/index.html +++ b/lang/cs/help/choice/index.html @@ -1,7 +1,4 @@ -

            Mo¾nosti

            - -
              - -
            • Mo¾né odpovìdi
            • - +

              Mo¾nosti

              + \ No newline at end of file diff --git a/lang/cs/help/choice/mods.html b/lang/cs/help/choice/mods.html index f9b4626536f..6a1661c5273 100755 --- a/lang/cs/help/choice/mods.html +++ b/lang/cs/help/choice/mods.html @@ -1,8 +1,8 @@ -

               Anketa

              -
                -

                Modul Anketa je velmi jednoduchý – uèitel polo¾í otázku a zadá +

                 Hlasování

                +
                  +

                  Modul Hlasování je velmi jednoduchý – uèitel polo¾í otázku a zadá nìkolik odpovìdí, z nich¾ si studenti mohou vybrat. To umo¾òuje uskuteènit rychlé hlasování, kterým lze napøíklad podnítit studenty k pøemý¹lení o urèitém tématu, nechat je rozhodnout o dal¹ím postupu v kurzu nebo mezi nimi provést prùzkum -mínìní.

                  -
                \ No newline at end of file +mínìní. +
              \ No newline at end of file diff --git a/lang/cs/help/choice/options.html b/lang/cs/help/choice/options.html index 66d6f3cfdd1..ec0263d21fd 100755 --- a/lang/cs/help/choice/options.html +++ b/lang/cs/help/choice/options.html @@ -1,6 +1,6 @@ -

              Mo¾né odpovìdi

              +

              Mo¾né odpovìdi

              -

              Zde uveïte mo¾né odpovìdi, ze kterých si úèastníci ankety mohou vybrat.

              +

              Zde uveïte mo¾né odpovìdi, ze kterých si úèastníci hlasování mohou vybrat.

              -

              Odpovìdí mù¾ete zadat i ménì ne¾ ¹est; pole, která nepotøebujete, mù¾ete -nechat prázdná.

              \ No newline at end of file +

              Odpovìdí mù¾ete zadat i ménì ne¾ ¹est; pole, která nepotøebujete, mù¾ete +nechat prázdná.

              \ No newline at end of file diff --git a/lang/cs/help/cookies.html b/lang/cs/help/cookies.html index 59c594e2150..86761cfd6db 100644 --- a/lang/cs/help/cookies.html +++ b/lang/cs/help/cookies.html @@ -1,5 +1,5 @@ -

              Soubory "cookie"

              -

              Tento systém pou¾ívá dva soubory "cookie".

              +

              Soubory "cookie"

              +

              Tento systém pou¾ívá dva soubory "cookie".

              První soubor cookie, nezbytný pro pohyb po systému, je obvykle pojmenován MoodleSession. MoodleSession musí mít povolen pøístup do va¹eho prohlí¾eèe; zaji¹»uje kontinuitu va¹í práce v systému a udr¾uje informace o diff --git a/lang/cs/help/coursecategory.html b/lang/cs/help/coursecategory.html index 74c8790d335..5d2303b6c9f 100644 --- a/lang/cs/help/coursecategory.html +++ b/lang/cs/help/coursecategory.html @@ -1,10 +1,9 @@ -

              Kategorie kurzù

              +

              Kategorie kurzù

              -

              Vá¹ správce Moodle mù¾e nastavit nìkolik kategorií èili skupin kurzù.

              +

              Vá¹ správce Moodle mù¾e nastavit nìkolik kategorií èili skupin kurzù. -

              Napøíklad "Vìda a technika" nebo "Povinné kurzy" apod.

              +

              Napøíklad "Vìda a technika" nebo "Povinné kurzy" apod. -

              Vyberte nejvhodnìj¹í kategorii pro vá¹ kurz. Tato volba ovlivòuje +

              Vyberte nejvhodnìj¹í kategorii pro vá¹ kurz. Tato volba ovlivòuje umístìní va¹eho kurzu v seznamu kurzù a mù¾e usnadnit studentùm jeho nalezení. -

              \ No newline at end of file diff --git a/lang/cs/help/courseformats.html b/lang/cs/help/courseformats.html index 72d5b847447..e77bd6771e0 100644 --- a/lang/cs/help/courseformats.html +++ b/lang/cs/help/courseformats.html @@ -1,26 +1,26 @@ -

              Uspoøádání Moodle kurzù

              +

              Uspoøádání Moodle kurzù

              -

              Týdenní uspoøádání

              -
                +

                Týdenní uspoøádání

                +
                  Kurz je uspoøádán v týdnech jdoucích po sobì s jasným datem zaèátku a konce. V ka¾dém z nich jsou urèeny èinnosti studentù v daném týdnu. Nìkteré z tìchto èinností, napøíklad "písemná práce", mohou mít urèenu dobu, øeknìme dva týdny, po které se stanou nepøístupnými. -
                +
              -

              Tématické uspoøádání

              -
                +

                Tématické uspoøádání

                +
                  Je velmi podobné týdennímu uspoøádání, pouze "týdnu" øíkáme "téma". Tato témata nejsou vázána ¾ádným èasovým limitem, proto nemusíte urèovat ¾ádné datumy. -
                +
              -

              Diskusní uspoøádání

              -
                +

                Diskusní uspoøádání

                +
                  Toto uspoøádání je zamìøeno na jedno hlavní diskusní fórum - "Spoleèné fórum", které se objevuje v seznamu na hlavní stránce. Toto uspoøádání je vhodné pro volnìj¹í kurzy bez pevné organizace. Dokonce se nemusí jednat ani o kurzy, ale napøíklad o ¹kolní èi tøídní nástìnku. -
                +
              diff --git a/lang/cs/help/coursefullname.html b/lang/cs/help/coursefullname.html index 050325c56b9..c076dce7782 100644 --- a/lang/cs/help/coursefullname.html +++ b/lang/cs/help/coursefullname.html @@ -1,5 +1,5 @@ -

              Celý název kurzu

              +

              Celý název kurzu

              -

              Celý název kurzu je zobrazován nahoøe na stránce kurzu a v seznamech -kurzù.

              +

              Celý název kurzu je zobrazován nahoøe na stránce kurzu a v seznamech +kurzù.

              diff --git a/lang/cs/help/coursegrades.html b/lang/cs/help/coursegrades.html index 13b4ad90947..56f50cb3cd3 100644 --- a/lang/cs/help/coursegrades.html +++ b/lang/cs/help/coursegrades.html @@ -1,6 +1,6 @@

              Body

              -

              Vìt¹inu aktivit v kurzu lze bodovì hodnotit.

              +

              Vìt¹inu aktivit v kurzu lze bodovì hodnotit.

              Ve standardním nastavení lze v¹echna bodová hodnocení v kurzu najít na stránce "Body", dostupné z hlavní stránky kurzu.

              diff --git a/lang/cs/help/coursenewsitems.html b/lang/cs/help/coursenewsitems.html index 92af35903cd..fd58bd6ac08 100644 --- a/lang/cs/help/coursenewsitems.html +++ b/lang/cs/help/coursenewsitems.html @@ -1,12 +1,12 @@ -

              Novinky

              +

              Novinky

              -

              Zvlá¹tní fórum nazývané "Novinky" se objevuje v kurzech s týdenním a +

              Zvlá¹tní fórum nazývané "Novinky" se objevuje v kurzech s týdenním a tématickým uspoøádáním. Je to dobré místo k umis»ování aktuálních zpráv pro v¹echny studenty (Implicitnì je studentùm nastaveno odebírání pøíspìvkù z tohoto -fóra emailem).

              +fóra emailem). -

              Toto nastavení urèuje, kolik nejnovìj¹ích polo¾ek se objeví na -titulní stránce kurzu ve sloupci novinky vpravo dole.

              +

              Toto nastavení urèuje, kolik nejnovìj¹ích polo¾ek se objeví na +titulní stránce kurzu ve sloupci novinky vpravo dole. -

              Pokud toto nastavíte na "0 novinky", sloupec novinek se nebude -zobrazovat.

              \ No newline at end of file +

              Pokud toto nastavíte na "0 novinky", sloupec novinek se nebude +zobrazovat. \ No newline at end of file diff --git a/lang/cs/help/coursenumsections.html b/lang/cs/help/coursenumsections.html index 701a370cc7f..860f3cc04d9 100644 --- a/lang/cs/help/coursenumsections.html +++ b/lang/cs/help/coursenumsections.html @@ -1,12 +1,12 @@ -

              Poèet týdnù/témat

              +

              Poèet týdnù/témat

              -

              Toto nastavení je pou¾itelné pouze pro kurzy s týdenním nebo -tématickým uspoøádáním.

              +

              Toto nastavení je pou¾itelné pouze pro kurzy s týdenním nebo +tématickým uspoøádáním. -

              V týdenním uspoøádání urèuje, kolik týdnù bude kurz trvat. První -týden zaèíná ve stejný den jako kurz.

              +

              V týdenním uspoøádání urèuje, kolik týdnù bude kurz trvat. První +týden zaèíná ve stejný den jako kurz. -

              V tématickém uspoøádání urèuje poèet témat v kurzu.

              +

              V tématickém uspoøádání urèuje poèet témat v kurzu. -

              V obou pøípadech tato hodnota urèuje, do kolika sekcí bude kurz -rozdìlen uprostøed hlavní stránky kurzu.

              +

              V obou pøípadech tato hodnota urèuje, do kolika sekcí bude kurz +rozdìlen uprostøed hlavní stránky kurzu. diff --git a/lang/cs/help/courserecent.html b/lang/cs/help/courserecent.html index 80f5bf3640f..faa80c28032 100644 --- a/lang/cs/help/courserecent.html +++ b/lang/cs/help/courserecent.html @@ -1,15 +1,15 @@ -

              Nedávná èinnost

              +

              Nedávná èinnost

              -

              Moodle mù¾e zobrazovat nedávnou èinnost na hlavní stránce kurzu.

              +

              Moodle mù¾e zobrazovat nedávnou èinnost na hlavní stránce kurzu. -

              Ta ukazuje v¹e, co se v kurzu odehrálo od chvíle, kdy se u¾ivatel +

              Ta ukazuje v¹e, co se v kurzu odehrálo od chvíle, kdy se u¾ivatel naposledy pøihlásil a vstoupil do kurzu (nové diskusní pøíspìvky, nové -u¾ivatele, odeslané písemné práce apod.)

              +u¾ivatele, odeslané písemné práce apod.) -

              Vøele doporuèujeme tuto vlastnost ponechat zapnutou, proto¾e pomáhá +

              Vøele doporuèujeme tuto vlastnost ponechat zapnutou, proto¾e pomáhá udr¾ovat pøehled o dìní v kurzu a mù¾e podporovat spolupráci studentù v -kurzu.

              +kurzu. -

              Mo¾ná budete chtít tuto vlastnost zakázat v kurzech s extrémnì +

              Mo¾ná budete chtít tuto vlastnost zakázat v kurzech s extrémnì velkým poètem studentù nebo v èasto pou¾ívaných kurzech, kde mù¾e -sni¾ovat rychlost zobrazování stránky kurzu.

              +sni¾ovat rychlost zobrazování stránky kurzu. diff --git a/lang/cs/help/courseshortname.html b/lang/cs/help/courseshortname.html index 2af878ee128..9c574cc867e 100644 --- a/lang/cs/help/courseshortname.html +++ b/lang/cs/help/courseshortname.html @@ -1,7 +1,7 @@ -

              Krátký název kurzu

              +

              Krátký název kurzu

              -

              Mnoho institucí pou¾ívá zkratky èi kódová oznaèení svých kurzù +

              Mnoho institucí pou¾ívá zkratky èi kódová oznaèení svých kurzù (napøíklad MAT1 nebo K022). I kdy¾ vá¹ kurz nemá ¾ádnou takovou zkratku, nìjakou mu vytvoøte. Bude pou¾ita na nìkolika místech, kde není vhodné uvádìt celý dlouhý název kurzu (napøíklad v záhlaví -emailu).

              +emailu).

              diff --git a/lang/cs/help/coursestartdate.html b/lang/cs/help/coursestartdate.html index 513ed9fbf0e..779db469c30 100644 --- a/lang/cs/help/coursestartdate.html +++ b/lang/cs/help/coursestartdate.html @@ -1,16 +1,16 @@ -

              Datum zaèátku kurzu

              +

              Datum zaèátku kurzu

              -

              Zde urèujete èas zaèátku va¹eho kurzu (vzhledem k va¹emu èasovému -pásmu).

              +

              Zde urèujete èas zaèátku va¹eho kurzu (vzhledem k va¹emu èasovému +pásmu). -

              Pokud pou¾íváte týdenní uspoøádání kurzu, ovlivòuje toto datum -zobrazování týdnù. První týden zaèíná dnem, který nastavíte zde.

              +

              Pokud pou¾íváte týdenní uspoøádání kurzu, ovlivòuje toto datum +zobrazování týdnù. První týden zaèíná dnem, který nastavíte zde. -

              Toto nastavení neovlivní kurzy s tématickým nebo spoleèenským -uspoøádáním.

              +

              Toto nastavení neovlivní kurzy s tématickým nebo spoleèenským +uspoøádáním. -

              Nicménì toto nastavení ovlivní zobrazování protokolù o kurzu. Datum -zaèátku kurzu je prvním dnem, od kterého je mo¾no zobrazovat protokoly.

              +

              Nicménì toto nastavení ovlivní zobrazování protokolù o kurzu. Datum +zaèátku kurzu je prvním dnem, od kterého je mo¾no zobrazovat protokoly. -

              Má-li tedy vá¹ kurz skuteèný datum svého zaèátku, pak má smysl jej zde -nastavit, nezávisle na typu uspoøádání tohoto kurzu.

              +

              Má-li tedy vá¹ kurz skuteèný datum svého zaèátku, pak má smysl jej zde +nastavit, nezávisle na typu uspoøádání tohoto kurzu. diff --git a/lang/cs/help/courseuploadsize.html b/lang/cs/help/courseuploadsize.html index 18315ca7607..09764dafb55 100644 --- a/lang/cs/help/courseuploadsize.html +++ b/lang/cs/help/courseuploadsize.html @@ -1,7 +1,7 @@ -

              Maximální velikost nahrávaných souborù

              +

              Maximální velikost nahrávaných souborù

              -

              Toto nastavení urèuje maximální velikost souboru, který mohou +

              Toto nastavení urèuje maximální velikost souboru, který mohou do kurzu vlo¾it studenti. Uèitel je pøi jejím stanovování omezen tím, jakou -maximální velikost souboru nastavil správce pro celý systém.

              +maximální velikost souboru nastavil správce pro celý systém.

              -

              Velikost mù¾ete dále omezit nastavením u jednotlivých èinností.

              +

              Velikost mù¾ete dále omezit nastavením u jednotlivých èinností.

              diff --git a/lang/cs/help/dialogue/info.html b/lang/cs/help/dialogue/info.html index 649e3a51969..8d8cbe0547d 100644 --- a/lang/cs/help/dialogue/info.html +++ b/lang/cs/help/dialogue/info.html @@ -1,4 +1,4 @@ - Rozhovory

              + Rozhovory

              Tento modul nabízí jednoduchou metodu komunikace mezi dvojicí u¾ivatelù, a to mezi uèitelem a studentem (pøièem¾ rozhovor mù¾e otevøít kterýkoliv z nich), diff --git a/lang/cs/help/dialogue/mods.html b/lang/cs/help/dialogue/mods.html index e5cf3a1444d..1138d361b83 100644 --- a/lang/cs/help/dialogue/mods.html +++ b/lang/cs/help/dialogue/mods.html @@ -1,4 +1,4 @@ -

               Rozhovory

              +

               Rozhovory

                Tento modul nabízí jednoduchou metodu komunikace mezi dvojicí u¾ivatelù, a to mezi uèitelem a studentem (pøièem¾ rozhovor mù¾e otevøít kterýkoliv z nich), diff --git a/lang/cs/help/dialogue/writing.html b/lang/cs/help/dialogue/writing.html index fae0225755e..bc2c4261aca 100644 --- a/lang/cs/help/dialogue/writing.html +++ b/lang/cs/help/dialogue/writing.html @@ -1,15 +1,15 @@ -

                Psaní

                +

                Psaní

                -

                Pøi psaní textu se sna¾te brát v úvahu, kdo je v rozhovoru va¹ím partnerem.

                +

                Pøi psaní textu se sna¾te brát v úvahu, kdo je v rozhovoru va¹ím partnerem.

                -

                Vyjadøujte své my¹lenky co nejjasnìji a nejjednodu¹eji, abyste se vyhnuli -nedorozumìním.

                +

                Vyjadøujte své my¹lenky co nejjasnìji a nejjednodu¹eji, abyste se vyhnuli +nedorozumìním.

                -

                Rozhovoru skuteènì prospìje, budou-li va¹e pøíspìvky krátké a k vìci. Pokud -chcete zaèít øe¹it nìco jiného, radìji rozhovor uzavøete a zaènìte nový.

                +

                Rozhovoru skuteènì prospìje, budou-li va¹e pøíspìvky krátké a k vìci. Pokud +chcete zaèít øe¹it nìco jiného, radìji rozhovor uzavøete a zaènìte nový. -

                Sna¾te se partnerovi klást zajímavé otázky. Obì strany to pøimìje lépe -promyslet problém, o kterém diskutujete (a tím se nìco nauèit).

                +

                Sna¾te se partnerovi klást zajímavé otázky. Obì strany to pøimìje lépe +promyslet problém, o kterém diskutujete (a tím se nìco nauèit).

                -

                Více o pokládání otázek

                -

                Více o ètení

                +

                Více o pokládání otázek

                +

                Více o ètení

                diff --git a/lang/cs/help/emoticons.html b/lang/cs/help/emoticons.html index 46b1da699b0..b5f94aeb53a 100644 --- a/lang/cs/help/emoticons.html +++ b/lang/cs/help/emoticons.html @@ -1,112 +1,112 @@ -

                Pou¾ívání smajlíkù (emotikon)

                +

                Pou¾ívání smajlíkù (emotikon)

                - + - +
                - - usmívat se - :-) + + + - - zubit se - :-D + + + - - mrknout - ;-) + + + - - smí¹ený pocit - :-/ + + + - - zamy¹lený - V-. + + + - - vyplazený jazyk - :-P + + + - - v pohodì - B-) + + + - - souhlasit - ^-) + + + - - kulit oèi - 8-) + + + - - pøekvapení - 8-o + + +
                usmívat se:-)
                zubit se:-D
                mrknout;-)
                smí¹ený pocit:-/
                zamy¹lenýV-.
                vyplazený jazyk :-P
                v pohodìB-)
                souhlasit^-)
                kulit oèi8-)
                pøekvapení8-o
                - - mrzutost - :-( + + + - - plachost - 8-. + + + - - èervenání - :-I + + + - - pusa - :-X + + + - - klaun - :o) + + + - - monokl - P-| + + + - - hnìv - 8-[ + + + - - bez ¾ivota - xx-P + + + - - ospalost - |-. + + + - - ¹kodolibost - }-] + + +
                mrzutost:-(
                plachost8-.
                èervenání:-I
                pusa:-X
                klaun:o)
                monoklP-|
                hnìv8-[
                bez ¾ivotaxx-P
                ospalost|-.
                ¹kodolibost}-]
                diff --git a/lang/cs/help/enrolmentkey.html b/lang/cs/help/enrolmentkey.html index 7ba1a35ed4f..92d11667372 100644 --- a/lang/cs/help/enrolmentkey.html +++ b/lang/cs/help/enrolmentkey.html @@ -1,21 +1,21 @@ -

                Klíè k zápisu do kurzu

                +

                Klíè k zápisu do kurzu

                -

                Klíè k zápisu do kurzu chrání vá¹ kurz pøed nechtìnými úèástníky. +

                Klíè k zápisu do kurzu chrání vá¹ kurz pøed nechtìnými úèástníky. -

                Necháte-li toto pole prázdné, pak kdokoliv, kdo si vytvoøí na tìchto +

                Necháte-li toto pole prázdné, pak kdokoliv, kdo si vytvoøí na tìchto Moodle stránkách u¾ivatelské jméno a heslo, bude schopen zapsat se do -kurzu prostì tím, ¾e do nìj vstoupí.

                +kurzu prostì tím, ¾e do nìj vstoupí. -

                Pokud zde zadáte nìjakou hodnotu (slovo èi vìtu), budou zájemci, +

                Pokud zde zadáte nìjakou hodnotu (slovo èi vìtu), budou zájemci, kteøí se POPRVÉ pokou¹ejí do kurzu vstoupit, vyzváni k jejímu vlo¾ení -(bude-li klíè odpovídat, k dal¹ím vstupùm do kurzu ji¾ není potøeba).

                +(bude-li klíè odpovídat, k dal¹ím vstupùm do kurzu ji¾ není potøeba). -

                Celý vtip tohoto jednoduchého mechanismu je v tom, ¾e pouze +

                Celý vtip tohoto jednoduchého mechanismu je v tom, ¾e pouze oprávnìným úèastníkùm kurzu sdìlíte tento klíè -(emailem, po¹tovním holubem, telefonem nebo ústnì ve tøídì).

                +(emailem, po¹tovním holubem, telefonem nebo ústnì ve tøídì). -

                Pokud se klíè "provalí" na veøejnost a do kurzu vám vstoupí nechtìné +

                Pokud se klíè "provalí" na veøejnost a do kurzu vám vstoupí nechtìné osoby, mù¾ete je z kurzu vy¹krtnout (podívejte se na jejich stránky s profilem u¾ivatele) a klíè k zápisu zmìnit. Legitimní studenti, kteøí se ji¾ do kurzu zapsali, zmìnu nepoznají, ale nechtìní úèastníci se ji¾ -zpìt do kurzu nedostanou.

                +zpìt do kurzu nedostanou. diff --git a/lang/cs/help/exercise/mods.html b/lang/cs/help/exercise/mods.html index d184c2c2f7e..b1fad13e22f 100644 --- a/lang/cs/help/exercise/mods.html +++ b/lang/cs/help/exercise/mods.html @@ -1,6 +1,6 @@ - Cvièení + Cvièení -
                  +

                    Cvièení je jednoduchý, ale mocný úkol. Ve cvièení uèitel ¾ádá studenty provést praktickou práci. Mù¾e to být sepsání eseje nebo zprávy, pøíprava pøedná¹ky, @@ -10,4 +10,4 @@ m mù¾e poskytnout studentovi zpìtnou vazbu a pøípadnì po¾ádat studenta, aby vylep¹il svou práci a odevzdal ji znovu.

                    -
                  +
                diff --git a/lang/cs/help/forum/allowdiscussions.html b/lang/cs/help/forum/allowdiscussions.html index 74d0c191744..7dfab9511b9 100644 --- a/lang/cs/help/forum/allowdiscussions.html +++ b/lang/cs/help/forum/allowdiscussions.html @@ -1,17 +1,17 @@ -

                Povolení pøispívat do fóra

                +

                Povolení pøispívat do fóra

                -

                Tímto nastavením lze studentùm zabránit ve vkládání nových pøíspìvkù do fóra.

                +

                Tímto nastavením lze studentùm zabránit ve vkládání nových pøíspìvkù do fóra.

                -

                Ve vìt¹inì fór nebudete chtít studenty omezovat a vyberete první mo¾nost, která +

                Ve vìt¹inì fór nebudete chtít studenty omezovat a vyberete první mo¾nost, která jim dovolí zakládat nová diskusní témata (vlákna) a také vkládat odpovìdi v rámci -tìchto témat.

                +tìchto témat.

                -

                Nìkdy v¹ak budete potøebovat jejich úèast v diskusi omezit; napøíklad u fóra +

                Nìkdy v¹ak budete potøebovat jejich úèast v diskusi omezit; napøíklad u fóra Novinky se pøíspìvky zobrazují na hlavní stránce kurzu, tak¾e je vhodné, aby je vkládali pouze uèitelé. V tomto pøípadì tedy mù¾ete vybrat tøetí mo¾nost: "Ani -nová témata, ani odpovìdi nejsou povoleny".

                +nová témata, ani odpovìdi nejsou povoleny".

                -

                Jindy mù¾e být vhodné, aby nové diskuse mohli zaèínat pouze uèitelé, ale aby +

                Jindy mù¾e být vhodné, aby nové diskuse mohli zaèínat pouze uèitelé, ale aby studenti mìli mo¾nost v rámci tìchto diskusí odpovídat (napøíklad ve fóru Novinky na domovské stránce). V tom pøípadì lze vybrat druhou mo¾nost: "Bez témat -diskuse, ale odpovìdi jsou povoleny".

                +diskuse, ale odpovìdi jsou povoleny".

                diff --git a/lang/cs/help/forum/attachment.html b/lang/cs/help/forum/attachment.html index a2973c757c1..4dbbde5944b 100644 --- a/lang/cs/help/forum/attachment.html +++ b/lang/cs/help/forum/attachment.html @@ -1,17 +1,17 @@ -

                Pøílohy k pøíspìvkùm

                +

                Pøílohy k pøíspìvkùm

                -

                Ke ka¾dému pøíspìvku do fóra mù¾ete pøilo¾it JEDEN soubor ze svého poèítaèe. -Tento soubor je pøenesen na server a ulo¾en u va¹eho pøíspìvku.

                +

                Ke ka¾dému pøíspìvku do fóra mù¾ete pøilo¾it JEDEN soubor ze svého poèítaèe. +Tento soubor je pøenesen na server a ulo¾en u va¹eho pøíspìvku.

                -

                Mù¾ete tak sdílet napøíklad obrázek nebo dokument ve Wordu.

                +

                Mù¾ete tak sdílet napøíklad obrázek nebo dokument ve Wordu.

                -

                Pøikládat lze soubory libovolného formátu, doporuèuje se v¹ak pojmenovat +

                Pøikládat lze soubory libovolného formátu, doporuèuje se v¹ak pojmenovat je za pou¾ití standardních tøípísmenných pøípon, jako je .doc pro dokument ve Wordu, .jpg nebo .png pro obrázek atd. Usnadní to stahování a prohlí¾ení va¹í -pøílohy v internetových prohlí¾eèích.

                +pøílohy v internetových prohlí¾eèích.

                -

                Pokud svùj pøíspìvek po prvotním vlo¾ení znovu upravujete a pøilo¾íte k nìmu -nový soubor, døíve pøilo¾ené soubory budou tímto novým nahrazeny.

                +

                Pokud svùj pøíspìvek po prvotním vlo¾ení znovu upravujete a pøilo¾íte k nìmu +nový soubor, døíve pøilo¾ené soubory budou tímto novým nahrazeny.

                -

                Pokud upravujete pøíspìvek s pøílohou, ale nový soubor k nìmu nepøilo¾íte, -zùstane pùvodní pøíloha zachována.

                \ No newline at end of file +

                Pokud upravujete pøíspìvek s pøílohou, ale nový soubor k nìmu nepøilo¾íte, +zùstane pùvodní pøíloha zachována.

                \ No newline at end of file diff --git a/lang/cs/help/forum/forumtype.html b/lang/cs/help/forum/forumtype.html index 4fce783f4a5..53072c4b1e9 100644 --- a/lang/cs/help/forum/forumtype.html +++ b/lang/cs/help/forum/forumtype.html @@ -1,16 +1,16 @@ -

                Typy fór

                +

                Typy fór

                -

                Mù¾ete si vybrat z nìkolika typù fór:

                +

                Mù¾ete si vybrat z nìkolika typù fór:

                -

                Prostá diskuse - pouze jedno téma, v¹e na jedné stránce. Vhodné pro -krátké diskuse s jasným zamìøením.

                +

                Prostá diskuse - pouze jedno téma, v¹e na jedné stránce. Vhodné pro +krátké diskuse s jasným zamìøením.

                -

                Bì¾né fórum pro obecné pou¾ití - otevøené fórum, ve kterém mù¾e kdokoliv -kdykoliv zaèít novou diskusi. Jedná se o fórum s nej¹ir¹ími mo¾nostmi pou¾ití.

                +

                Bì¾né fórum pro obecné pou¾ití - otevøené fórum, ve kterém mù¾e kdokoliv +kdykoliv zaèít novou diskusi. Jedná se o fórum s nej¹ir¹ími mo¾nostmi pou¾ití.

                -

                Ka¾dý mù¾e zahájit jedno téma diskuse - ka¾dý mù¾e zaèít pouze jednu +

                Ka¾dý mù¾e zahájit jedno téma diskuse - ka¾dý mù¾e zaèít pouze jednu novou diskusi na jakékoliv téma (v¹ichni ov¹em mohou reagovat). To je u¾iteèné, jestli¾e chcete, aby ka¾dý student zaèal diskusi napøíklad o svých pøipomínkách -k tématu týdne a aby na nì ostatní reagovali.

                +k tématu týdne a aby na nì ostatní reagovali.

                -

                (V pøí¹tích verzích Moodlu lze oèekávat dal¹í roz¹íøení.)

                \ No newline at end of file +

                (V pøí¹tích verzích Moodlu lze oèekávat dal¹í roz¹íøení.)

                \ No newline at end of file diff --git a/lang/cs/help/forum/index.html b/lang/cs/help/forum/index.html index c11f8435b75..0773efc356d 100644 --- a/lang/cs/help/forum/index.html +++ b/lang/cs/help/forum/index.html @@ -1,8 +1,8 @@

                Fóra

                diff --git a/lang/cs/help/forum/maxattachmentsize.html b/lang/cs/help/forum/maxattachmentsize.html index 24eef808487..f493812a41b 100644 --- a/lang/cs/help/forum/maxattachmentsize.html +++ b/lang/cs/help/forum/maxattachmentsize.html @@ -1,8 +1,8 @@ -

                Maximální velikost pøílohy

                +

                Maximální velikost pøílohy

                -

                Pøi zakládání fóra mù¾ete urèit, jaká bude maximální velikost pøílohy, kterou -lze pøipojit k jednotlivým pøíspìvkùm.

                +

                Pøi zakládání fóra mù¾ete urèit, jaká bude maximální velikost pøílohy, kterou +lze pøipojit k jednotlivým pøíspìvkùm.

                -

                (Nìkdy se zdánlivì podaøí pøilo¾it soubor, který je vìt¹í, ne¾ je stanovené +

                (Nìkdy se zdánlivì podaøí pøilo¾it soubor, který je vìt¹í, ne¾ je stanovené maximum. Tento soubor v¹ak nebude ulo¾en na server; u¾ivatel o tom mù¾e být -informován chybovým hlá¹ením.)

                +informován chybovým hlá¹ením.)

                diff --git a/lang/cs/help/forum/mods.html b/lang/cs/help/forum/mods.html index 483eccc7b4b..07ca470d356 100644 --- a/lang/cs/help/forum/mods.html +++ b/lang/cs/help/forum/mods.html @@ -1,10 +1,10 @@ -

                 Fóra

                -
                  -

                  Tato èinnost mù¾e být tou nejdùle¾itìj¹í - právì zde toti¾ nejèastìji probíhá +

                   Fóra

                  +
                    +

                    Tato èinnost mù¾e být tou nejdùle¾itìj¹í - právì zde toti¾ nejèastìji probíhá diskuse mezi úèastníky kurzu. Fóra mohou být uspoøádána nìkolika rùznými zpùsoby a mohou zahrnovat hodnocení pøíspìvkù ostatními úèastníky kurzu èi uèitelem. Pøíspìvky lze prohlí¾et v nìkolika formátech a je mo¾né k nim pøipojit pøílohu. Úèastníci kurzu mají mo¾nost pøihlásit se k odbìru pøíspìvkù, kopie ka¾dého vlo¾eného pøíspìvku jim v tom pøípadì bude zasílána e-mailem. Uèitel má mo¾nost -vnutit odebírání pøíspìvkù v¹em úèastníkùm.

                    -
                  +vnutit odebírání pøíspìvkù v¹em úèastníkùm. +
                diff --git a/lang/cs/help/forum/ratings.html b/lang/cs/help/forum/ratings.html index 1551a009088..7677af369f2 100644 --- a/lang/cs/help/forum/ratings.html +++ b/lang/cs/help/forum/ratings.html @@ -39,7 +39,7 @@ individualisticky zn pomocí této ¹kály je:
                a) pomoci vám pøi ètení pøíspìvkù pøemý¹let o vztahovosti a individuálnosti -poznávání
                +poznávání
                b) poskytnout autorovi pøíspìvku zpìtnou vazbu s informací o tom, jak jej vidí ostatní
                @@ -47,7 +47,7 @@ ostatn Výsledky nejsou ¾ádným zpùsobem u¾ívány pøi hodnocení studentù, pomáhají pouze zlep¹it komunikaci a proces uèení. -
                +
                Jestli¾e vás tyto problémy zaujaly, uvádíme zde nìkolik odkazù na práce, v nich¾ byly pùvodnì rozvinuty:
                  @@ -69,6 +69,6 @@ byly p
                • 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. -
                  +
                diff --git a/lang/cs/help/forum/subscription.html b/lang/cs/help/forum/subscription.html index 4c82cf72bb0..ed218bf6c1e 100644 --- a/lang/cs/help/forum/subscription.html +++ b/lang/cs/help/forum/subscription.html @@ -1,14 +1,14 @@ -

                Odebírání nových pøíspìvkù e-mailem

                +

                Odebírání nových pøíspìvkù e-mailem

                -

                Jestli¾e je nìkdo pøihlá¹en k odebírání pøíspìvkù z urèitého fóra, bude mu +

                Jestli¾e je nìkdo pøihlá¹en k odebírání pøíspìvkù z urèitého fóra, bude mu e-mailem zaslána kopie ka¾dého pøíspìvku vlo¾eného do tohoto fóra (pøíspìvek je -odeslán asi 15 minut poté, co byl poprvé napsán).

                +odeslán asi 15 minut poté, co byl poprvé napsán).

                -

                Ka¾dý si obvykle mù¾e zvolit, zda chce, nebo nechce odebírat pøíspìvky vlo¾ené -do daného fóra.

                +

                Ka¾dý si obvykle mù¾e zvolit, zda chce, nebo nechce odebírat pøíspìvky vlo¾ené +do daného fóra.

                -

                Uèitel v¹ak mù¾e odebírání pøíspìvkù z libovolného fóra vnutit v¹em úèastníkùm -kurzu, tak¾e jim pak budou zasílány kopie v¹ech pøíspìvkù z tohoto fóra.

                +

                Uèitel v¹ak mù¾e odebírání pøíspìvkù z libovolného fóra vnutit v¹em úèastníkùm +kurzu, tak¾e jim pak budou zasílány kopie v¹ech pøíspìvkù z tohoto fóra.

                -

                To je obzvlá¹tì u¾iteèné ve fóru Novinky a ve fórech na zaèátku kurzu (pøedtím, -ne¾ se v¹ichni nauèí, jak se k odebírání pøíspìvkù pøihlásit).

                +

                To je obzvlá¹tì u¾iteèné ve fóru Novinky a ve fórech na zaèátku kurzu (pøedtím, +ne¾ se v¹ichni nauèí, jak se k odebírání pøíspìvkù pøihlásit).

                diff --git a/lang/cs/help/glossary/aliases.html b/lang/cs/help/glossary/aliases.html index e62c9bb3aa0..8283577e76d 100644 --- a/lang/cs/help/glossary/aliases.html +++ b/lang/cs/help/glossary/aliases.html @@ -1,4 +1,4 @@ -

                Klíèová slova

                +

                Klíèová slova

                Ke ka¾dému heslu ve slovníku lze pøipojit seznam klíèových slov (aliasù). diff --git a/lang/cs/help/glossary/allowduplicatedentries.html b/lang/cs/help/glossary/allowduplicatedentries.html index 6be7c362b5f..4bee12984f3 100755 --- a/lang/cs/help/glossary/allowduplicatedentries.html +++ b/lang/cs/help/glossary/allowduplicatedentries.html @@ -1,4 +1,4 @@ -

                Povolení duplicitních hesel

                +

                Povolení duplicitních hesel

                Pokud tuto volbu zapnete, ve slovníku bude mo¾no vytvoøit více hesel se stejným pojmem (heslovým slovem).

                diff --git a/lang/cs/help/glossary/casesensitive.html b/lang/cs/help/glossary/casesensitive.html index dfa5aa3b919..1e37e628424 100644 --- a/lang/cs/help/glossary/casesensitive.html +++ b/lang/cs/help/glossary/casesensitive.html @@ -1,7 +1,7 @@ -

                Rozli¹ování velkých a malých písmen

                +

                Rozli¹ování velkých a malých písmen

                -

                Toto nastavení urèuje, zda budou pøi vytváøení automatických odkazù na dané -heslo rozli¹ována velká a malá písmena.

                +

                Toto nastavení urèuje, zda budou pøi vytváøení automatických odkazù na dané +heslo rozli¹ována velká a malá písmena.

                -

                Je-li tato volba aktivována, pak napø. ze slova "html" v pøíspìvku do fóra -NEBUDE vytvoøen odkaz k slovníkovému heslu "HTML".

                +

                Je-li tato volba aktivována, pak napø. ze slova "html" v pøíspìvku do fóra +NEBUDE vytvoøen odkaz k slovníkovému heslu "HTML".

                diff --git a/lang/cs/help/glossary/defaultapproval.html b/lang/cs/help/glossary/defaultapproval.html index ea1fa374675..656485a7482 100755 --- a/lang/cs/help/glossary/defaultapproval.html +++ b/lang/cs/help/glossary/defaultapproval.html @@ -1,4 +1,4 @@ -

                Implicitní stav schvalování

                +

                Implicitní stav schvalování

                Toto nastavení umo¾òuje uèiteli urèit, co se stane s novými hesly, která do slovníku pøidají studenti. Hesla mohou být buï automaticky zpøístupnìna v¹em diff --git a/lang/cs/help/glossary/description.html b/lang/cs/help/glossary/description.html index 812cb000731..36a00d40f13 100755 --- a/lang/cs/help/glossary/description.html +++ b/lang/cs/help/glossary/description.html @@ -1,4 +1,4 @@ -

                Popis

                +

                Popis

                -

                Toto pole vám umo¾òuje popsat úèel slovníku a pøípadnì poskytnout instrukce -nebo dal¹í informace, odkazy atd.

                +

                Toto pole vám umo¾òuje popsat úèel slovníku a pøípadnì poskytnout instrukce +nebo dal¹í informace, odkazy atd.

                diff --git a/lang/cs/help/glossary/destination.html b/lang/cs/help/glossary/destination.html index 4850c5afae1..6957c608282 100644 --- a/lang/cs/help/glossary/destination.html +++ b/lang/cs/help/glossary/destination.html @@ -1,6 +1,6 @@ -

                Urèení cíle pro import hesel

                +

                Urèení cíle pro import hesel

                -

                Mù¾ete upøesnit, kam chcete hesla importovat:

                +

                Mù¾ete upøesnit, kam chcete hesla importovat:

                • Stávající slovník: Importovaná hesla se doplní do aktuálního slovníku.
                • diff --git a/lang/cs/help/glossary/displayformat.html b/lang/cs/help/glossary/displayformat.html index 41caea5a844..b6aaf83f5df 100644 --- a/lang/cs/help/glossary/displayformat.html +++ b/lang/cs/help/glossary/displayformat.html @@ -1,6 +1,6 @@ -

                  Zpùsob zobrazení

                  +

                  Zpùsob zobrazení

                  -

                  Toto nastavení upøesòuje, jak se hesla slovníku budou zobrazovat. +

                  Toto nastavení upøesòuje, jak se hesla slovníku budou zobrazovat. Standardní zpùsoby zobrazení jsou tyto:

                  @@ -28,16 +28,16 @@ dotazu) a p
                  -
                  +

                  Správci Moodlu mohou vytváøet nové zpùsoby zobrazení, a to následujícím -postupem:

                  +postupem:
                  1. Nahlédnìte do adresáøe mod/glossary/formats; pro ka¾dý existující zpùsob -zobrazení byste mìli vidìt soubor oznaèený èíslem.
                  2. +zobrazení byste mìli vidìt soubor oznaèený èíslem.
                  3. Vytvoøte kopii jednoho z nich a oznaète ji jiným èíslem N (nezapomeòte, ¾e -0 a 1 jsou rezervovány).
                  4. -
                  5. Editací souboru vytvoøte vlastní formát (vy¾aduje jistou znalost PHP).
                  6. +0 a 1 jsou rezervovány). +
                  7. Editací souboru vytvoøte vlastní formát (vy¾aduje jistou znalost PHP).
                  8. Nakonec vlo¾te do ka¾dého jazykového balíèku, který pou¾íváte, novou promìnnou s názvem displayformatN a pøipojte krátké, ale výsti¾né -jméno pro nový formát.
                  9. +jméno pro nový formát.
                  diff --git a/lang/cs/help/glossary/entbypage.html b/lang/cs/help/glossary/entbypage.html index 7767b8ea988..cd30d3e901e 100755 --- a/lang/cs/help/glossary/entbypage.html +++ b/lang/cs/help/glossary/entbypage.html @@ -1,6 +1,6 @@ -

                  Urèení poètu hesel zobrazovaných na stránce

                  +

                  Urèení poètu hesel zobrazovaných na stránce

                  -

                  U slovníku lze omezit poèet hesel zobrazovaných na stránce.

                  +

                  U slovníku lze omezit poèet hesel zobrazovaných na stránce.

                  -

                  Pøi velkém poètu hesel s automatickými odkazy byste mìli nastavit spí¹e ni¾¹í -hodnotu, abyste pøede¹li dlouhé dobì naèítání.

                  +

                  Pøi velkém poètu hesel s automatickými odkazy byste mìli nastavit spí¹e ni¾¹í +hodnotu, abyste pøede¹li dlouhé dobì naèítání.

                  diff --git a/lang/cs/help/glossary/filetoimport.html b/lang/cs/help/glossary/filetoimport.html index f023ca01e42..895386f1f44 100644 --- a/lang/cs/help/glossary/filetoimport.html +++ b/lang/cs/help/glossary/filetoimport.html @@ -1,3 +1,3 @@ -

                  Importovat ze souboru

                  +

                  Importovat ze souboru

                  -

                  Vyberte na svém poèítaèi soubor XML, který obsahuje hesla k importování.

                  +

                  Vyberte na svém poèítaèi soubor XML, který obsahuje hesla k importování.

                  diff --git a/lang/cs/help/glossary/fullmatch.html b/lang/cs/help/glossary/fullmatch.html index 9514ccffab5..9150879377a 100644 --- a/lang/cs/help/glossary/fullmatch.html +++ b/lang/cs/help/glossary/fullmatch.html @@ -1,7 +1,7 @@ -

                  Srovnávání celých slov

                  +

                  Srovnávání celých slov

                  -

                  Pokud je aktivováno automatické vytváøení odkazù, pak tímto nastavením povolíte -vytváøet odkazy pouze u celých slov.

                  +

                  Pokud je aktivováno automatické vytváøení odkazù, pak tímto nastavením povolíte +vytváøet odkazy pouze u celých slov.

                  -

                  Napøíklad slovníkové heslo "konstrukt" nevytvoøí odkaz ve slovì -"konstruktivismus".

                  +

                  Napøíklad slovníkové heslo "konstrukt" nevytvoøí odkaz ve slovì +"konstruktivismus".

                  diff --git a/lang/cs/help/glossary/globalglossary.html b/lang/cs/help/glossary/globalglossary.html index abe49fcdeff..6c66a698c3e 100755 --- a/lang/cs/help/glossary/globalglossary.html +++ b/lang/cs/help/glossary/globalglossary.html @@ -1,10 +1,10 @@ -

                  Globální slovník

                  +

                  Globální slovník

                  -

                  Uèitel mù¾e jeden slovník v kurzu oznaèit jako globální.

                  +

                  Uèitel mù¾e jeden slovník v kurzu oznaèit jako globální.

                  -

                  Tento slovník se pak mù¾e stát souèástí kteréhokoli kurzu (a také hlavní -stránky systému).

                  +

                  Tento slovník se pak mù¾e stát souèástí kteréhokoli kurzu (a také hlavní +stránky systému).

                  -

                  Rozdíl oproti bì¾nému lokálnímu slovníku spoèívá v tom, ¾e na hesla se +

                  Rozdíl oproti bì¾nému lokálnímu slovníku spoèívá v tom, ¾e na hesla se vytváøejí automatické odkazy ze v¹ech kurzù (a ne pouze z toho, -do nìj¾ slovník patøí).

                  +do nìj¾ slovník patøí).

                  diff --git a/lang/cs/help/glossary/importcategories.html b/lang/cs/help/glossary/importcategories.html index c019ed08818..3fac76ee79d 100644 --- a/lang/cs/help/glossary/importcategories.html +++ b/lang/cs/help/glossary/importcategories.html @@ -1,4 +1,4 @@ -

                  Import kategorií

                  +

                  Import kategorií

                  -

                  V základním nastavení budou importována v¹echna hesla. Mù¾ete upøesnit, +

                  V základním nastavení budou importována v¹echna hesla. Mù¾ete upøesnit, zda chcete importovat také kategorie (k nim pak budou nová hesla pøiøazena).

                  diff --git a/lang/cs/help/glossary/index.html b/lang/cs/help/glossary/index.html index 5525ac6c5a6..314a702ee15 100755 --- a/lang/cs/help/glossary/index.html +++ b/lang/cs/help/glossary/index.html @@ -1,61 +1,31 @@ -

                  Slovník

                  - - - -
                  - - Soubory nápovìdy na úrovni slovníku: - - - -
                  - - - -
                  - -Soubory nápovìdy na úrovni hesel: - - - +

                  Slovník

                  + +
                  + Soubory nápovìdy na úrovni slovníku: + +
                  + +
                  +Soubory nápovìdy na úrovni hesel: +
                  \ No newline at end of file diff --git a/lang/cs/help/glossary/linkcategory.html b/lang/cs/help/glossary/linkcategory.html index 9e9d9da88d0..e23dd90136d 100755 --- a/lang/cs/help/glossary/linkcategory.html +++ b/lang/cs/help/glossary/linkcategory.html @@ -1,5 +1,5 @@ -

                  Automatické vytváøení odkazù kategorií

                  +

                  Automatické vytváøení odkazù kategorií

                  -

                  Mù¾ete upøesnit, zda chcete, aby kategorie mìly automatické vytváøení odkazù nebo ne.

                  +

                  Mù¾ete upøesnit, zda chcete, aby kategorie mìly automatické vytváøení odkazù nebo ne.

                  Pozor: kategorie tvoøí odkazy na základì srovnávání celých slov s ohledem na rozli¹ení velkých a malých písmen.

                  diff --git a/lang/cs/help/glossary/mainglossary.html b/lang/cs/help/glossary/mainglossary.html index 1f8bf75a8dd..e518320788a 100755 --- a/lang/cs/help/glossary/mainglossary.html +++ b/lang/cs/help/glossary/mainglossary.html @@ -1,9 +1,9 @@ -

                  Hlavní slovník kurzu

                  +

                  Hlavní slovník kurzu

                  -

                  Systém slovníku vám umo¾òuje pøená¹et hesla z kteréhokoli vedlej¹ího -slovníku do hlavního slovníku kurzu.

                  +

                  Systém slovníku vám umo¾òuje pøená¹et hesla z kteréhokoli vedlej¹ího +slovníku do hlavního slovníku kurzu.

                  -

                  K tomu je nutné urèit, který slovník je hlavní.

                  +

                  K tomu je nutné urèit, který slovník je hlavní.

                  -

                  Poznámka: V ka¾dém kurzu mù¾e být jako hlavní oznaèen pouze jeden slovník; -aktualizovat jej mohou pouze uèitelé.

                  +

                  Poznámka: V ka¾dém kurzu mù¾e být jako hlavní oznaèen pouze jeden slovník; +aktualizovat jej mohou pouze uèitelé.

                  diff --git a/lang/cs/help/glossary/mods.html b/lang/cs/help/glossary/mods.html index 6840b058595..a24ab971e8a 100755 --- a/lang/cs/help/glossary/mods.html +++ b/lang/cs/help/glossary/mods.html @@ -1,10 +1,10 @@ -

                   Slovník

                  -
                    -

                    Tato èinnost umo¾òuje úèastníkùm kurzu vytváøet a prùbì¾nì spravovat seznam definic, -podobnì jako ve slovníku.

                    -

                    Hesla lze vyhledávat a zobrazovat v mnoha rùzných formátech.

                    -

                    Slovník také umo¾òuje uèitelùm pøená¹et hesla z jednoho slovníku do druhého -(globálního) v rámci jednoho kurzu.

                    -

                    Slovník navíc nabízí funkci, která automaticky vytvoøí odkaz na slovníkové -heslo, pokud se pøíslu¹ný termín objeví v kterémkoliv textu celého kurzu.

                    -
                  +

                   Slovník

                  +
                    +

                    Tato èinnost umo¾òuje úèastníkùm kurzu vytváøet a prùbì¾nì spravovat seznam definic, +podobnì jako ve slovníku.

                    +

                    Hesla lze vyhledávat a zobrazovat v mnoha rùzných formátech.

                    +

                    Slovník také umo¾òuje uèitelùm pøená¹et hesla z jednoho slovníku do druhého +(globálního) v rámci jednoho kurzu.

                    +

                    Slovník navíc nabízí funkci, která automaticky vytvoøí odkaz na slovníkové +heslo, pokud se pøíslu¹ný termín objeví v kterémkoliv textu celého kurzu.

                    +
                  diff --git a/lang/cs/help/glossary/shows.html b/lang/cs/help/glossary/shows.html index 8a21d0f7c51..fc1309ae031 100644 --- a/lang/cs/help/glossary/shows.html +++ b/lang/cs/help/glossary/shows.html @@ -1,6 +1,6 @@ -

                  Nastavení mo¾ností pro abecední procházení slovníku

                  +

                  Nastavení mo¾ností pro abecední procházení slovníku

                  -

                  U¾ivatelé mohou slovník procházet a vyhledávat v nìm. Nastavení tìchto +

                  U¾ivatelé mohou slovník procházet a vyhledávat v nìm. Nastavení tìchto èinností mù¾ete upøesnit následujícími volbami:

                  Zobrazit odkaz "Speciální": umo¾ní procházení slovníku podle diff --git a/lang/cs/help/glossary/studentcanpost.html b/lang/cs/help/glossary/studentcanpost.html index bfc2be9b1e1..62467d5a878 100755 --- a/lang/cs/help/glossary/studentcanpost.html +++ b/lang/cs/help/glossary/studentcanpost.html @@ -1,9 +1,9 @@ -

                  Pøidávání hesel studenty

                  +

                  Pøidávání hesel studenty

                  -

                  Mù¾ete urèit, zda student smí pøidávat, upravovat nebo +

                  Mù¾ete urèit, zda student smí pøidávat, upravovat nebo mazat svá vlastní hesla. Toto nastavení se týká pouze vedlej¹ích slovníkù, proto¾e hesla pøenesená do hlavního slovníku mohou upravovat nebo mazat pouze -uèitelé.

                  +uèitelé.

                  -

                  Poznámka: Uèitel mù¾e kdykoli upravit nebo smazat jakékoli heslo.

                  +

                  Poznámka: Uèitel mù¾e kdykoli upravit nebo smazat jakékoli heslo.

                  diff --git a/lang/cs/help/glossary/usedynalink.html b/lang/cs/help/glossary/usedynalink.html index 5611fb1534f..9b18bf58637 100755 --- a/lang/cs/help/glossary/usedynalink.html +++ b/lang/cs/help/glossary/usedynalink.html @@ -1,11 +1,11 @@ -

                  Automatické odkazy na slovníková hesla

                  +

                  Automatické odkazy na slovníková hesla

                  -

                  Zapnutím této volby umo¾níte vytváøení automatických odkazù na slovníková +

                  Zapnutím této volby umo¾níte vytváøení automatických odkazù na slovníková hesla v¾dy, kdy¾ se heslové slovo nebo fráze v kurzu objeví – v pøíspìvcích -do fóra, studijních materiálech, týdenních shrnutích, poznámkách atd.

                  +do fóra, studijních materiálech, týdenních shrnutích, poznámkách atd.

                  -

                  Pokud v nìkterém textu (napøíklad v pøíspìvku do fóra) automatické odkazy +

                  Pokud v nìkterém textu (napøíklad v pøíspìvku do fóra) automatické odkazy vytváøet nechcete, oznaète jej párovými znaèkami <nolink> a -</nolink>.

                  +</nolink>.

                  -

                  Poznámka: Odkazy se vytváøejí i pro názvy kategorií.

                  +

                  Poznámka: Odkazy se vytváøejí i pro názvy kategorií.

                  diff --git a/lang/cs/help/groupmode.html b/lang/cs/help/groupmode.html index 15f7eb33173..d72c8f88874 100644 --- a/lang/cs/help/groupmode.html +++ b/lang/cs/help/groupmode.html @@ -11,7 +11,7 @@ skupiny, ale vid

                -

                Skupinový re¾im mù¾ete nastavit na dvou úrovních:

                +

                Skupinový re¾im mù¾ete nastavit na dvou úrovních:

                1. Úroveò kurzu
                diff --git a/lang/cs/help/groupmodeforce.html b/lang/cs/help/groupmodeforce.html index f6a94413726..f2e2dd99cac 100644 --- a/lang/cs/help/groupmodeforce.html +++ b/lang/cs/help/groupmodeforce.html @@ -1,6 +1,6 @@

                Vnucovat skupinový re¾im

                -

                Zvolíte-li na úrovni kurzu vnucování skupinového re¾imu, je tento re¾im +

                Zvolíte-li na úrovni kurzu vnucování skupinového re¾imu, je tento re¾im uplatòován u v¹ech èinností v kurzu; samostatná nastavení skupinového re¾imu u jednotlivých èinností jsou ignorována.

                diff --git a/lang/cs/help/guestaccess.html b/lang/cs/help/guestaccess.html index e1dfb811105..3bd573a4808 100644 --- a/lang/cs/help/guestaccess.html +++ b/lang/cs/help/guestaccess.html @@ -1,26 +1,20 @@ -

                Vstup hostù

                - - - -

                Máte mo¾nost nechat "hosty" vstoupit do va¹eho kurzu.

                - - -

                Lidé se do Moodle mohou pøihlásit jako hosté stisknutím tlaèítka -"Pøihlásit se jako host" na pøihla¹ovací stránce.

                - - -

                Hosté mají V®DY pøístup pouze pro ètení. To znamená, ¾e nemohou kurz +

                Vstup hostù

                + +

                Máte mo¾nost nechat "hosty" vstoupit do va¹eho kurzu. + +

                Lidé se do Moodle mohou pøihlásit jako hosté stisknutím tlaèítka +"Pøihlásit se jako host" na pøihla¹ovací stránce. + +

                Hosté mají V®DY pøístup pouze pro ètení. To znamená, ¾e nemohou kurz zaneøádit ¾ádnými svými pøíspìvky. -

                - -

                To se mù¾e hodit, kdy¾ chcete napøíklad kolegùm ukázat svou práci + +

                To se mù¾e hodit, kdy¾ chcete napøíklad kolegùm ukázat svou práci nebo studentùm nabídnete mo¾nost prohlídky kurzu pøedtím, ne¾ se -do nìj rozhodnou zapsat.

                - - -

                Pov¹imnìte si, ¾e máte mo¾nost zvolit si dva typy vstupu hostù: s +do nìj rozhodnou zapsat. + +

                Pov¹imnìte si, ¾e máte mo¾nost zvolit si dva typy vstupu hostù: s klíèem a bez. Povolíte-li vstup hostùm s klíèem, budou tito muset zadávat aktuální klíè k zápisu do kurzu POKA®DÉ, kdy do kurzu budou vstupovat (narozdíl od studentù, kteøí jej zadávají pouze jednou). Povolíte-li vstup hostùm bez klíèe, pak se kdokoliv mù¾e pøihlásit jako host a -podívat se pøímo do va¹eho kurzu.

                +podívat se pøímo do va¹eho kurzu. diff --git a/lang/cs/help/html.html b/lang/cs/help/html.html index 96da6186ae5..fb057eb673a 100644 --- a/lang/cs/help/html.html +++ b/lang/cs/help/html.html @@ -1,13 +1,13 @@ -

                Nápovìda k psaní HTML

                +

                Nápovìda k psaní HTML

                -

                Pí¹ete-li HTML v Moodle, mù¾ete pou¾ívat jakékoliv HTML znaèky -(tagy) a vytvoøit tak po¾adovaný výsledek.

                +

                Pí¹ete-li HTML v Moodle, mù¾ete pou¾ívat jakékoliv HTML znaèky +(tagy) a vytvoøit tak po¾adovaný výsledek. -

                Vá¹ HTML kód bude normálnì zobrazen na stránce uvnitø buòky tabulky. -Z tìchto dùvodù:

                +

                Vá¹ HTML kód bude normálnì zobrazen na stránce uvnitø buòky tabulky. +Z tìchto dùvodù: -

                  -
                • nepou¾ívejte znaèky jako <HEAD> nebo <BODY>
                • -
                • pozor na neodpovídající si znaèky <TABLE>, které -mohou rozbít HTML strukturu stránky.
                • -
                +
                  +
                • nepou¾ívejte znaèky jako <HEAD> nebo <BODY> +
                • pozor na neodpovídající si znaèky <TABLE>, které +mohou rozbít HTML strukturu stránky. +
                diff --git a/lang/cs/help/index.html b/lang/cs/help/index.html index 14960aaa908..d42aa26f627 100644 --- a/lang/cs/help/index.html +++ b/lang/cs/help/index.html @@ -1 +1,47 @@ -

                Rejstøík nápovìdy

                Obecné

                Správa

                Nastavování kurzù

                Ètení a psaní

                \ No newline at end of file +

                Rejstøík nápovìdy

                + +

                Obecné

                + + +

                Správa

                + + +

                Nastavování kurzù

                + + +

                Ètení a psaní

                + diff --git a/lang/cs/help/journal/mods.html b/lang/cs/help/journal/mods.html index 31775829aa2..85881ad0435 100755 --- a/lang/cs/help/journal/mods.html +++ b/lang/cs/help/journal/mods.html @@ -1,8 +1,8 @@ -

                 Poznámky

                -
                  -

                  Tento modul pøedstavuje dùle¾itou reflexivní aktivitu. Uèitel po¾ádá +

                   Poznámky

                  +
                    +

                    Tento modul pøedstavuje dùle¾itou reflexivní aktivitu. Uèitel po¾ádá studenty, aby se zamysleli nad urèitým tématem. Studenti pak vytváøejí záznamy, které mohou prùbì¾nì upravovat a doplòovat. Záznamy jsou dùvìrné a vidí je pouze uèitel, ten na nì také mù¾e reagovat a bodovat je. Osvìdèilo se zaøadit tuto -aktivitu alespoò jednou do ka¾dého týdne/tématu.

                    -
                  \ No newline at end of file +aktivitu alespoò jednou do ka¾dého týdne/tématu.

                  +
                \ No newline at end of file diff --git a/lang/cs/help/label/mods.html b/lang/cs/help/label/mods.html index 9db86501f4f..99492fb002a 100755 --- a/lang/cs/help/label/mods.html +++ b/lang/cs/help/label/mods.html @@ -1,5 +1,5 @@ -

                 Popisky

                -
                  -

                  Popisek vlastnì není skuteèná aktivita; pou¾ívá se tehdy, chceme-li mezi -ostatní aktivity na hlavní stránce kurzu zaèlenit text a obrázky.

                  -
                \ No newline at end of file +

                 Popisky

                +
                  +

                  Popisek vlastnì není skuteèná aktivita; pou¾ívá se tehdy, chceme-li mezi +ostatní aktivity na hlavní stránce kurzu zaèlenit text a obrázky.

                  +
                \ No newline at end of file diff --git a/lang/cs/help/langedit.html b/lang/cs/help/langedit.html index 8f37d621889..09b5e4f8c83 100644 --- a/lang/cs/help/langedit.html +++ b/lang/cs/help/langedit.html @@ -1,12 +1,12 @@ -

                Úprava jazyka

                +

                Úprava jazyka

                -

                Chcete-li upravovat pøeklad pøímo z této stránky, musíte nastavit -právo zápisu k pøíslu¹ným souborùm pro proces webového serveru.

                +

                Chcete-li upravovat pøeklad pøímo z této stránky, musíte nastavit +právo zápisu k pøíslu¹ným souborùm pro proces webového serveru. -

                Uvnitø nìkterých textù si urèitì pov¹imenete $a a $a->nìco.

                +

                Uvnitø nìkterých textù si urèitì pov¹imenete $a a $a->nìco. -

                Tyto znaky zastupují promìnné, které budou nahrazeny jmény èi jinými -slovy v prùbìhu zpracování stránky.

                +

                Tyto znaky zastupují promìnné, které budou nahrazeny jmény èi jinými +slovy v prùbìhu zpracování stránky. -

                Je-li v textu pouze jedna promìnná, pou¾ívá se zápisu $a. V pøípadì -dvou a více promìnných má ka¾dá své jméno.

                +

                Je-li v textu pouze jedna promìnná, pou¾ívá se zápisu $a. V pøípadì +dvou a více promìnných má ka¾dá své jméno. diff --git a/lang/cs/help/lesson/grade.html b/lang/cs/help/lesson/grade.html index ded12fd054a..c55bc196525 100755 --- a/lang/cs/help/lesson/grade.html +++ b/lang/cs/help/lesson/grade.html @@ -1,6 +1,6 @@ -

                Maximální poèet bodù za pøedná¹ku

                +

                Maximální poèet bodù za pøedná¹ku

                -

                Tato hodnota udává maximální poèet bodù, které lze udìlit za absolvování +

                Tato hodnota udává maximální poèet bodù, které lze udìlit za absolvování pøedná¹ky (v rozsahu 0–100). Tuto hodnotu lze pozdìji kdykoliv zmìnit. Ka¾dá zmìna se ihned projeví v celkovém bodování kursu (stránka Body...) a také -v pøehledech výsledkù zobrazovaných studentùm.

                \ No newline at end of file +v pøehledech výsledkù zobrazovaných studentùm.

                \ No newline at end of file diff --git a/lang/cs/help/lesson/handlingofretakes.html b/lang/cs/help/lesson/handlingofretakes.html index 2ae5dde1923..6d03de976ea 100644 --- a/lang/cs/help/lesson/handlingofretakes.html +++ b/lang/cs/help/lesson/handlingofretakes.html @@ -1,7 +1,7 @@ -

                Zpracování opakovaného prùchodu pøedná¹kou

                +

                Zpracování opakovaného prùchodu pøedná¹kou

                -

                Jestli¾e je studentùm povoleno procházet pøedná¹ku opakovanì, umo¾òuje tato -volba urèit, zda se za výsledné hodnocení pøedná¹ky bude pova¾ovat prùmìr -ze v¹ech pokusù, nebo nejlep¹í pokus.

                +

                Jestli¾e je studentùm povoleno procházet pøedná¹ku opakovanì, umo¾òuje tato +volba urèit, zda se za výsledné hodnocení pøedná¹ky bude pova¾ovat prùmìr +ze v¹ech pokusù, nebo nejlep¹í pokus.

                -

                Tuto volbu lze kdykoliv zmìnit.

                +

                Tuto volbu lze kdykoliv zmìnit.

                diff --git a/lang/cs/help/lesson/import.html b/lang/cs/help/lesson/import.html index 5b4a0c6ed04..245d2d6c577 100644 --- a/lang/cs/help/lesson/import.html +++ b/lang/cs/help/lesson/import.html @@ -1,19 +1,19 @@ -

                Importování nových úloh

                -

                Tato funkce umo¾òuje importování úloh z externích textových souborù.

                -

                Moodle podporuje nìkolik formátù:

                +

                Importování nových úloh

                +

                Tato funkce umo¾òuje importování úloh z externích textových souborù.

                +

                Moodle podporuje nìkolik formátù:

                -

                Formát GIFT

                -
                  -

                  GIFT je nejkomplexnìj¹í dostupný formát pro importování testových otázek +

                  Formát GIFT

                  +
                    +

                    GIFT je nejkomplexnìj¹í dostupný formát pro importování testových otázek z textového souboru do Moodlu. Byl navr¾en pro snadný textový zápis testových otázek. Podporuje rùzné typy úloh: úlohy s výbìrem odpovìdí, s krátkou odpovìdí, s odpovìdí pravda/nepravda, numerické úlohy, pøiøazování, a také vlo¾ení _______ pro formát "vynechané slovo". V jednom textovém souboru lze pou¾ít více typù úloh. Formát GIFT dále umo¾òuje zadávat jméno otázky, komentáø k odpovìdím a jejich hodnocení v procentech; pro interní potøebu lze text také -opatøovat poznámkami, které se v testu nezobrazí. Zde je nìkolik pøíkladù:

                    +opatøovat poznámkami, které se v testu nezobrazí. Zde je nìkolik pøíkladù:

                    -
                    Kdo je pohøben v památníku na Vítkovì?{~T.G.M. ~Klement Gottwald =nikdo}
                    +
                    Kdo je pohøben v památníku na Vítkovì?{~T.G.M. ~Klement Gottwald =nikdo}
                           
                     V památníku na Vítkovì byl {~otráven =pohøben ~oddán} Klement Gottwald.
                     
                    @@ -22,75 +22,75 @@ V pam
                     Kdo je pohøben v památníku na Vítkovì?{=nyní ji¾ nikdo =nikdo}
                     
                     Kdy se narodil Klement Gottwald?{#1896}
                    -
                    -

                    Více -o formátu "GIFT"

                  + +

                  Více +o formátu "GIFT"

                -

                Formát Aiken

                -
                  -

                  Formát Aiken umo¾òuje snadnou tvorbu úloh s výbìrem odpovìdí. Pou¾ívá -jednoduchou syntaxi srozumitelnou i pro èlovìka. Napø:

                  -
                  Co je cílem první pomoci?
                  +

                  Formát Aiken

                  +
                    +

                    Formát Aiken umo¾òuje snadnou tvorbu úloh s výbìrem odpovìdí. Pou¾ívá +jednoduchou syntaxi srozumitelnou i pro èlovìka. Napø:

                    +
                    Co je cílem první pomoci?
                     A. Zachránit ¾ivot, zabránit dal¹ímu zranìní
                     B. Poskytnout lékaøské o¹etøení zranìnému
                     C. Zabránit dal¹ímu zranìní
                     D. Pomoci obìtem v nouzi
                    -ANSWER: A
                    -

                    -Více o formátu "AIKEN"

                  +ODPOVÌÏ: A
                  +

                  +Více o formátu "AIKEN"

                -

                Vynechané slovo

                -
                  -

                  Tento formát podporuje pouze úlohy s výbìrem odpovìdí. Chybné varianty -odpovìdi se uvozují vlnovkou (~), správná odpovìï rovnítkem (=). Napø.:

                  -
                  Ji¾ v raném vìku, kdy zaèínáme zkoumat své tìlo, se z nás +

                  Vynechané slovo

                  +
                    +

                    Tento formát podporuje pouze úlohy s výbìrem odpovìdí. Chybné varianty +odpovìdi se uvozují vlnovkou (~), správná odpovìï rovnítkem (=). Napø.:

                    +
                    Ji¾ v raném vìku, kdy zaèínáme zkoumat své tìlo, se z nás stávají studenti {=anatomie a fyziologie ~mechaniky ~teologie ~botaniky}, -a studenty v jistém smyslu zùstáváme a¾ do konce ¾ivota.
                    -

                    -Více o formátu -"Vynechané slovo"

                  +a studenty v jistém smyslu zùstáváme a¾ do konce ¾ivota.
                  +

                  +Více o formátu +"Vynechané slovo"

                -

                AON

                -
                  -

                  Tento formát se od pøedchozího li¹í pouze tím, ¾e po provedení importu se -v¹echny úlohy s krátkou odpovìdí po ètveøicích pøevedou na pøiøazovací úlohy.

                  -

                  Kromì toho se u úloh s výbìrem odpovìdí bìhem vkládání náhodnì zmìní poøadí -odpovìdí.

                  -

                  Formát je pojmenován podle organizace, která sponzorovala vývoj testovacích -nástrojù.

                +

                AON

                +
                  +

                  Tento formát se od pøedchozího li¹í pouze tím, ¾e po provedení importu se +v¹echny úlohy s krátkou odpovìdí po ètveøicích pøevedou na pøiøazovací úlohy.

                  +

                  Kromì toho se u úloh s výbìrem odpovìdí bìhem vkládání náhodnì zmìní poøadí +odpovìdí.

                  +

                  Formát je pojmenován podle organizace, která sponzorovala vývoj testovacích +nástrojù.

                -

                Blackboard

                -
                  -

                  Importovat lze i úlohy z ezportního formátu systému Blackboard. Tento formát -vyu¾ívá funkcí PHP urèených pro práci s jazykem XML.

                  -

                  -Více o -formátu "Blackboard"

                +

                Blackboard

                +
                  +

                  Importovat lze i úlohy z ezportního formátu systému Blackboard. Tento formát +vyu¾ívá funkcí PHP urèených pro práci s jazykem XML.

                  +

                  +Více o +formátu "Blackboard"

                -

                Course Test Manager

                -
                  -

                  Do Moodlu lze importovat úlohy z databáze testovacích otázek systému Course +

                  Course Test Manager

                  +
                    +

                    Do Moodlu lze importovat úlohy z databáze testovacích otázek systému Course Test Manager (CTM). Pro pøístup k testovacím otázkám (ulo¾eným v databázi Microsoft Access) se pou¾ívají rùzné postupy v závislosti na tom, zda je Moodle -provozován v operaèním systému Windows nebo Linux.

                    -

                    Ve Windows mù¾ete importovat databázi formátu Microsoft Access bì¾ným -zpùsobem.

                    -

                    V pøípadì Linuxu potøebujete poèítaè s Windows umístìný na stejné síti. +provozován v operaèním systému Windows nebo Linux.

                    +

                    Ve Windows mù¾ete importovat databázi formátu Microsoft Access bì¾ným +zpùsobem.

                    +

                    V pøípadì Linuxu potøebujete poèítaè s Windows umístìný na stejné síti. Na nìj zkopírujte databázi CTM a spus»te ODBC Socket Server, který pro pøevod -dat do Moodlu na serveru Linux pou¾ije jazyka XML.

                    -

                    Pøed pou¾itím tohoto importního filtru si prosím pøeètìte podrobnìj¹í -nápovìdu.

                    -

                    -Více o formátu "CTM"

                  +dat do Moodlu na serveru Linux pou¾ije jazyka XML.

                  +

                  Pøed pou¾itím tohoto importního filtru si prosím pøeètìte podrobnìj¹í +nápovìdu.

                  +

                  +Více o formátu "CTM"

                -

                U¾ivatelský formát

                -
                  -

                  Pokud máte vlastní formát, který potøebujete importovat, upravte podle potøeby +

                  U¾ivatelský formát

                  +
                    +

                    Pokud máte vlastní formát, který potøebujete importovat, upravte podle potøeby soubor mod/quiz/format/custom.php. -

                    Rozsah nutných zmìn v kódu je opravdu malý – nový kód je potøeba pouze +

                    Rozsah nutných zmìn v kódu je opravdu malý – nový kód je potøeba pouze pro rozpoznání jedné úlohy ve výchozím textu. -

                    -Více o u¾ivatelském formátu

                  +

                  +Více o u¾ivatelském formátu

                -

                Postupnì budou pøibývat dal¹í formáty, napø. WebCT, IMS QTI a jakékoliv jiné, -kterými pøispìjí u¾ivatelé Moodlu.

                +

                Postupnì budou pøibývat dal¹í formáty, napø. WebCT, IMS QTI a jakékoliv jiné, +kterými pøispìjí u¾ivatelé Moodlu.

                diff --git a/lang/cs/help/lesson/maxanswers.html b/lang/cs/help/lesson/maxanswers.html index f6264b5ee38..a65e5cfa6cd 100755 --- a/lang/cs/help/lesson/maxanswers.html +++ b/lang/cs/help/lesson/maxanswers.html @@ -1,8 +1,8 @@ -

                Maximální poèet odpovìdí v otázce

                +

                Maximální poèet odpovìdí v otázce

                -

                Tato hodnota udává maximální poèet odpovìdí, které lze zadat ke kterékoliv +

                Tato hodnota udává maximální poèet odpovìdí, které lze zadat ke kterékoliv otázce pøedná¹ky. Výchozí hodnota je 4. Pokud v pøedná¹ce pou¾íváte výhradnì -otázky typu Pravda/Nepravda, je vhodné nastavit tuto hodnotu na 2.

                +otázky typu Pravda/Nepravda, je vhodné nastavit tuto hodnotu na 2.

                -

                Tuto hodnotu lze bezpeènì mìnit i v pøedná¹ce s ji¾ vlo¾enými materiály.

                \ No newline at end of file +

                Tuto hodnotu lze bezpeènì mìnit i v pøedná¹ce s ji¾ vlo¾enými materiály.

                \ No newline at end of file diff --git a/lang/cs/help/lesson/maxattempts.html b/lang/cs/help/lesson/maxattempts.html index e88354ceb11..23a147ec217 100755 --- a/lang/cs/help/lesson/maxattempts.html +++ b/lang/cs/help/lesson/maxattempts.html @@ -1,21 +1,21 @@ -

                Nejvìt¹í mo¾ný poèet pokusù

                +

                Nejvìt¹í mo¾ný poèet pokusù

                -

                Tato hodnota urèuje nejvy¹¹í mo¾ný poèet pokusù, které má ka¾dý student -k dispozici pro zodpovìzení ka¾dé otázky v pøedná¹ce. V pøípadì +

                Tato hodnota urèuje nejvy¹¹í mo¾ný poèet pokusù, které má ka¾dý student +k dispozici pro zodpovìzení ka¾dé otázky v pøedná¹ce. V pøípadì otázek, u nich¾ se studentovi nenabízejí varianty odpovìdi (otázky s krátkou odpovìdí, numerické otázky apod.), pøedstavuje tato hodnota nezbytný "záchranný -prostøedek" zaji¹»ující pøechod na dal¹í stránku pøedná¹ky.

                +prostøedek" zaji¹»ující pøechod na dal¹í stránku pøedná¹ky.

                -

                Výchozí hodnota je 5. Ni¾¹í hodnota by mohla studenty odradit od dal¹ího -promý¹lení otázek, vy¹¹í by mohla vést k pøíli¹né frustraci.

                +

                Výchozí hodnota je 5. Ni¾¹í hodnota by mohla studenty odradit od dal¹ího +promý¹lení otázek, vy¹¹í by mohla vést k pøíli¹né frustraci.

                -

                Nastavíte-li nejvìt¹í mo¾ný poèet pokusù na 1, bude student na ka¾dou otázku +

                Nastavíte-li nejvìt¹í mo¾ný poèet pokusù na 1, bude student na ka¾dou otázku odpovídat pouze jednou. Vzniká tak podobný re¾im jako u modulu Test, s tím -rozdílem, ¾e ka¾dá otázka je studentùm nabízena na zvlá¹tní stránce.

                +rozdílem, ¾e ka¾dá otázka je studentùm nabízena na zvlá¹tní stránce.

                -

                Mìjte prosím na pamìti, ¾e se jedná o globální parametr, tak¾e se nastavená -hodnota uplatní u v¹ech otázek pøedná¹ky bez ohledu na jejich typ.

                +

                Mìjte prosím na pamìti, ¾e se jedná o globální parametr, tak¾e se nastavená +hodnota uplatní u v¹ech otázek pøedná¹ky bez ohledu na jejich typ.

                -

                Tato hodnota se nevztahuje na uèitele, který provádí kontrolu otázek +

                Tato hodnota se nevztahuje na uèitele, který provádí kontrolu otázek nebo navigace v pøedná¹ce: ovìøování poètu absolvovaných pokusù je zalo¾eno na -údajích ulo¾ených v databázi, v ní¾ se v¹ak pokusy uèitelù nezaznamenávají.

                \ No newline at end of file +údajích ulo¾ených v databázi, v ní¾ se v¹ak pokusy uèitelù nezaznamenávají.

                \ No newline at end of file diff --git a/lang/cs/help/lesson/maxpages.html b/lang/cs/help/lesson/maxpages.html index 428818e3902..fa6f8c3fac7 100755 --- a/lang/cs/help/lesson/maxpages.html +++ b/lang/cs/help/lesson/maxpages.html @@ -1,10 +1,10 @@ -

                Poèet stránek k zobrazení

                +

                Poèet stránek k zobrazení

                -

                Tento parametr se vyu¾ívá pouze u pøedná¹ek typu "Flash Card". Výchozí +

                Tento parametr se vyu¾ívá pouze u pøedná¹ek typu "Flash Card". Výchozí hodnota je 0 – v tom pøípadì budou pou¾ity v¹echny stránky pøedná¹ky. Nenulová hodnota parametru znamená, ¾e pøi procházení pøedná¹ky bude pro ka¾dého studenta náhodnì vybrán nastavený poèet stránek; po jejich prostudování -pøedná¹ka pro studenta skonèí a bude mu zobrazeno hodnocení.

                +pøedná¹ka pro studenta skonèí a bude mu zobrazeno hodnocení.

                -

                Pokud je hodnota parametru vy¹¹í ne¾ celkový poèet stránek pøedná¹ky, dosáhne -student konce pøedná¹ky po prostudování v¹ech stránek.

                \ No newline at end of file +

                Pokud je hodnota parametru vy¹¹í ne¾ celkový poèet stránek pøedná¹ky, dosáhne +student konce pøedná¹ky po prostudování v¹ech stránek.

                \ No newline at end of file diff --git a/lang/cs/help/lesson/minquestions.html b/lang/cs/help/lesson/minquestions.html index c2c6e928283..f5c38eda506 100644 --- a/lang/cs/help/lesson/minquestions.html +++ b/lang/cs/help/lesson/minquestions.html @@ -1,11 +1,11 @@ -

                Minimální poèet otázek

                +

                Minimální poèet otázek

                -

                Tento parametr by mìl uèitel nastavit, jestli¾e pøedná¹ka obsahuje jeden +

                Tento parametr by mìl uèitel nastavit, jestli¾e pøedná¹ka obsahuje jeden nebo více bodù vìtvení. Jeho hodnota udává minimální poèet otázek pro -výpoèet hodnocení. Pøitom v¹ak studenty nenutí takový poèet otázek -skuteènì zodpovìdìt.

                +výpoèet hodnocení. Pøitom v¹ak studenty nenutí takový poèet otázek +skuteènì zodpovìdìt.

                -

                Napøíklad: Jestli¾e tento parametr nastavíte na hodnotu 20, bude se pøi +

                Napøíklad: Jestli¾e tento parametr nastavíte na hodnotu 20, bude se pøi výpoètu hodnocení pøedpokládat, ¾e student pro¹el nejménì dvacet stránek pøedná¹ky. Uva¾ujme pøípad studenta, který absolvuje pouze jednu pìtistránkovou vìtev pøedná¹ky a v¹echny otázky zodpoví správnì. Poté se rozhodne pøedná¹ku @@ -16,17 +16,17 @@ hodnocen parametr nastaven na hodnotu 20, celkové hodnocení bude sní¾eno na "pìt správných odpovìdí z dvaceti", tedy 25 %. Jiný student, který pro¹el v¹echny vìtve pøedná¹ky, zhlédl øeknìme 25 stránek a zodpovìdìl správnì v¹echny otázky a¾ na -dvì, získá hodnocení "23 z 25", tedy 92 %.

                +dvì, získá hodnocení "23 z 25", tedy 92 %.

                -

                V pøípadì, ¾e parametr Minimální poèet otázek pou¾ijete, mìla by úvodní -stránka pøedná¹ky obsahovat zhruba takovouto informaci:

                +

                V pøípadì, ¾e parametr Minimální poèet otázek pou¾ijete, mìla by úvodní +stránka pøedná¹ky obsahovat zhruba takovouto informaci:

                -

                V této pøedná¹ce byste se mìli pokusit zodpovìdìt alespoò n +

                V této pøedná¹ce byste se mìli pokusit zodpovìdìt alespoò n otázek. Chcete-li, mù¾ete jich zodpovìdìt více; pokud jich v¹ak zodpovíte, bude se pøi výpoètu hodnocení pøesto pøedpokládat, ¾e jste jich zodpovìdìli -n.

                +n.

                -

                (Za "n" samozøejmì dosadíme skuteènì nastavenou hodnotu.)

                +

                (Za "n" samozøejmì dosadíme skuteènì nastavenou hodnotu.)

                -

                Jestli¾e je parametr nastaven, studentùm se zobrazuje informace o tom, na -kolik otázek ji¾ odpovídali a na kolik je¹tì odpovìdìt mají.

                \ No newline at end of file +

                Jestli¾e je parametr nastaven, studentùm se zobrazuje informace o tom, na +kolik otázek ji¾ odpovídali a na kolik je¹tì odpovìdìt mají.

                \ No newline at end of file diff --git a/lang/cs/help/lesson/mods.html b/lang/cs/help/lesson/mods.html index 89c140c43df..1b6093d68af 100644 --- a/lang/cs/help/lesson/mods.html +++ b/lang/cs/help/lesson/mods.html @@ -1,9 +1,9 @@ - Pøedná¹ka + Pøedná¹ka -
                  -

                  Pøedná¹ka pøedstavuje zajímavý a interaktivní re¾im výuky. Sestává z nìkolika +

                    +

                    Pøedná¹ka pøedstavuje zajímavý a interaktivní re¾im výuky. Sestává z nìkolika samostatných stránek, obvykle zakonèených otázkou a nabídkou nìkolika variant odpovìdi. Podle své odpovìdi student buï postupuje k dal¹í stránce, nebo se vrací ke stránce pøedcházející. Prùchod pøedná¹kou mù¾e být lineární nebo -libovolnì vìtvený v závislosti na povaze prezentovaného materiálu.

                    -
                  +libovolnì vìtvený v závislosti na povaze prezentovaného materiálu.

                  +
                diff --git a/lang/cs/help/lesson/nextpageaction.html b/lang/cs/help/lesson/nextpageaction.html index 5d379be2e3c..ef48c6962ee 100755 --- a/lang/cs/help/lesson/nextpageaction.html +++ b/lang/cs/help/lesson/nextpageaction.html @@ -1,21 +1,21 @@ -

                Akce po správné odpovìdi

                +

                Akce po správné odpovìdi

                -

                Nejobvyklej¹í akcí je pøechod na dal¹í stránku specifikovanou v odpovìdi, +

                Nejobvyklej¹í akcí je pøechod na dal¹í stránku specifikovanou v odpovìdi, ve vìt¹inì pøípadù tedy na dal¹í stránku pøedná¹ky. Student tak pøedná¹kou -prochází v logickém sledu od zaèátku do konce.

                +prochází v logickém sledu od zaèátku do konce.

                -

                Modul Pøedná¹ka lze v¹ak pou¾ít i jako zadání typu Flash Card. +

                Modul Pøedná¹ka lze v¹ak pou¾ít i jako zadání typu Flash Card. Studentovi se zobrazí úvodní informace (není povinné) a poté náhodnì vybraná -stránka. Neexistuje zde pevnì stanovený zaèátek ani konec, pouze sada karet -zobrazovaných v náhodném poøadí.

                +stránka. Neexistuje zde pevnì stanovený zaèátek ani konec, pouze sada karet +zobrazovaných v náhodném poøadí.

                -

                K dispozici jsou dvì velmi podobné varianty takovéhoto chování. Volba +

                K dispozici jsou dvì velmi podobné varianty takovéhoto chování. Volba "Ukázat neprohlédnuté stránky" nezobrazí nikdy tuté¾ stránku dvakrát (ani v -pøípadì, ¾e student otázku, která je na ní uvedena, nezodpovìdìl správnì). +pøípadì, ¾e student otázku, která je na ní uvedena, nezodpovìdìl správnì). Druhá mo¾nost, "Ukázat nezodpovìzenou stránku", umo¾òuje opakované zobrazení stránky, kterou student ji¾ vidìl, av¹ak pouze v pøípadì, ¾e na její závìreènou -otázku odpovìdìl chybnì.

                +otázku odpovìdìl chybnì.

                -

                V obou tìchto re¾imech mù¾e uèitel rozhodnout, zda se pou¾ijí v¹echny stránky +

                V obou tìchto re¾imech mù¾e uèitel rozhodnout, zda se pou¾ijí v¹echny stránky pøedná¹ky, nebo jen jejich (náhodná) podmno¾ina. Toto nastavení se provádí -pomocí parametru "Poèet stránek k zobrazení".

                +pomocí parametru "Poèet stránek k zobrazení".

                diff --git a/lang/cs/help/lesson/overview.html b/lang/cs/help/lesson/overview.html index 2f2304a87d3..211f9f20db7 100755 --- a/lang/cs/help/lesson/overview.html +++ b/lang/cs/help/lesson/overview.html @@ -1,57 +1,57 @@ -

                Pøehled

                +

                Pøehled

                -
                  -
                1. Pøedná¹ka sestává z urèitého poètu stránek.
                2. -
                3. Stránky podávají vlastní obsah pøedná¹ky a jsou obvykle zakonèeny -otázkou.
                4. -
                5. Ke ka¾dé otázce je obvykle pøipojena sada odpovìdí.
                6. -
                7. Ke ka¾dé odpovìdi je pøiøazen krátký text, tzv. komentáø, který se -zobrazí, jestli¾e student danou odpovìï zvolí.
                8. -
                9. K odpovìdi je také pøiøazen skok. Skok mù¾e být relativní (tato +
                    +
                  1. Pøedná¹ka sestává z urèitého poètu stránek. +
                  2. Stránky podávají vlastní obsah pøedná¹ky a jsou obvykle zakonèeny +otázkou. +
                  3. Ke ka¾dé otázce je obvykle pøipojena sada odpovìdí. +
                  4. Ke ka¾dé odpovìdi je pøiøazen krátký text, tzv. komentáø, který se +zobrazí, jestli¾e student danou odpovìï zvolí. +
                  5. K odpovìdi je také pøiøazen skok. Skok mù¾e být relativní (tato stránka, následující stránka), nebo absolutní (konkrétní stránka nebo konec -pøedná¹ky).
                  6. -
                  7. Ve výchozím nastavení je s první odpovìdí spojen skok na následující -stránku pøedná¹ky. Ostatní odpovìdi vedou zpìt na aktuální stránku – -tj. studentovi je v pøípadì chybné odpovìdi zobrazena tatá¾ stránka.
                  8. -
                  9. "Následující stránka" je urèena lineární posloupností stránek pøedná¹ky. +pøedná¹ky). +
                  10. Ve výchozím nastavení je s první odpovìdí spojen skok na následující +stránku pøedná¹ky. Ostatní odpovìdi vedou zpìt na aktuální stránku – +tj. studentovi je v pøípadì chybné odpovìdi zobrazena tatá¾ stránka. +
                  11. "Následující stránka" je urèena lineární posloupností stránek pøedná¹ky. To je poøadí, ve kterém jednotlivé stránky vidí uèitel; lze je kdykoliv zmìnit -pøesunutím stránek v rámci pøedná¹ky.
                  12. -
                  13. Pøedná¹ka má dále navigaèní posloupnost. To je poøadí, ve kterém +pøesunutím stránek v rámci pøedná¹ky. +
                  14. Pøedná¹ka má dále navigaèní posloupnost. To je poøadí, ve kterém jednotlivé stránky vidí student. Je definováno skoky nastavenými u jednotlivých odpovìdí a od lineární posloupnosti se mù¾e znaènì li¹it. (Pokud jste výchozí nastavení skokù nemìnili, jsou si ov¹em obì posloupnosti velmi podobné.) Uèitel -má mo¾nost navigaèní posloupnost kontrolovat a upravovat.
                  15. -
                  16. Pøi zobrazování studentùm jsou varianty odpovìdi v¾dy zamíchány. Odpovìï, +má mo¾nost navigaèní posloupnost kontrolovat a upravovat. +
                  17. Pøi zobrazování studentùm jsou varianty odpovìdi v¾dy zamíchány. Odpovìï, kterou uèitel vidí jako první, není tedy nutnì uvedena jako první odpovìï nabízená studentovi. (Navíc se odpovìdi pøi ka¾dém pokusu pravdìpodobnì zobrazí -v jiném poøadí.)
                  18. -
                  19. Poèet odpovìdí mù¾e být na ka¾dé stránce pøedná¹ky jiný. Nìkteré otázky tak +v jiném poøadí.) +
                  20. Poèet odpovìdí mù¾e být na ka¾dé stránce pøedná¹ky jiný. Nìkteré otázky tak mohou napøíklad konèit otázkou typu Pravda/Nepravda a dal¹í mít poèet variant -jiný, napøíklad ètyøi.
                  21. -
                  22. Do pøedná¹ky lze zaøadit také stránku bez otázky. Studentùm se místo variant -odpovìdí zobrazí jen odkaz Pokraèovat.
                  23. -
                  24. Pro úèely hodnocení se za správné pova¾ují odpovìdi, z nich¾ vede +jiný, napøíklad ètyøi. +
                  25. Do pøedná¹ky lze zaøadit také stránku bez otázky. Studentùm se místo variant +odpovìdí zobrazí jen odkaz Pokraèovat. +
                  26. Pro úèely hodnocení se za správné pova¾ují odpovìdi, z nich¾ vede skok na stránku umístìnou ní¾e v lineární posloupnosti stránek. Chybné jsou naopak odpovìdi, z nich¾ vede skok na tuté¾ stránku nebo stránku umístìnou v lineární posloupnosti vý¹e. Pokud jste nemìnili výchozí nastavení, první odpovìï bude chápána jako správná a ostatní jako -chybné.
                  27. -
                  28. Otázky mohou mít více ne¾ jednu správnou odpovìï. Vedou-li napøíklad dvì +chybné. +
                  29. Otázky mohou mít více ne¾ jednu správnou odpovìï. Vedou-li napøíklad dvì z odpovìdí na stránku umístìnou v lineární posloupnosti ní¾e, pova¾ují se za správné obì dvì. (Je v¹ak mo¾né pro ka¾dou ze správných odpovìdí nastavit rùzné -reakce, i kdy¾ obì vedou na stejnou stránku.)
                  30. -
                  31. Uèitel v pøedná¹ce u správných odpovìdí vidí odkazy podtr¾enì. -
                  32. Na stránce pøedná¹ky, jak ji vidí uèitel, je nadpis u správné odpovìdi -podtr¾en (napø. Odpovìï 1).
                  33. -
                  34. Na konec pøedná¹ky student dojde buïto explicitnì (pøímým skokem), +reakce, i kdy¾ obì vedou na stejnou stránku.) +
                  35. Uèitel v pøedná¹ce u správných odpovìdí vidí odkazy podtr¾enì. +
                  36. Na stránce pøedná¹ky, jak ji vidí uèitel, je nadpis u správné odpovìdi +podtr¾en (napø. Odpovìï 1). +
                  37. Na konec pøedná¹ky student dojde buïto explicitnì (pøímým skokem), nebo implicitnì, tj. skokem na následující stránku, pokud se právì nachází na poslední stránce v lineární posloupnosti pøedná¹ky. Po dosa¾ení konce pøedná¹ky se studentovi zobrazí blahopøání a hodnocení, kterého dosáhl. Toto hodnocení vznikne vyhodnocením výrazu -(poèet správných odpovìdí / poèet nav¹tívených stránek pøedná¹ky) * bodové ohodnocení kurzu.
                  38. -
                  39. Pokud student nedospìl ke konci pøedná¹ky, dostane pøi pøí¹tí náv¹tìvì +(poèet správných odpovìdí / poèet nav¹tívených stránek pøedná¹ky) * bodové ohodnocení kurzu. +
                  40. Pokud student nedospìl ke konci pøedná¹ky, dostane pøi pøí¹tí náv¹tìvì pøedná¹ky na výbìr, zda chce zaèít od zaèátku nebo zda chce do pøedná¹ky -vstoupit v místì, kde naposledy zodpovìdìl otázku správnì.
                  41. -
                  42. Je-li u pøedná¹ky povoleno její opakované prohlí¾ení, mù¾e ji student -opakovat tak dlouho, dokud nedosáhne maximálního poètu bodù.
                  43. -
                  +vstoupit v místì, kde naposledy zodpovìdìl otázku správnì. +
                10. Je-li u pøedná¹ky povoleno její opakované prohlí¾ení, mù¾e ji student +opakovat tak dlouho, dokud nedosáhne maximálního poètu bodù. +
                diff --git a/lang/cs/help/lesson/questiontype.html b/lang/cs/help/lesson/questiontype.html index 96260a71fe4..817f324f1e3 100644 --- a/lang/cs/help/lesson/questiontype.html +++ b/lang/cs/help/lesson/questiontype.html @@ -1,226 +1,113 @@ -

                Typy otázek

                - - - -

                Modul Pøedná¹ka v souèasnosti podporuje následující typy otázek:

                - - - -
                  - -
                1. Otázky s výbìrem odpovìdí Pøedstavují výchozí typ otázky; - -student vybírá odpovìï z nìkolika variant. Volba správné odpovìdi - -"pustí" studenta na dal¹í stránky pøedná¹ky, volba odpovìdi chybné nikoliv. - -Chybné varianty odpovìdi se nìkdy nazývají distraktory; na jejich - -kvalitì hodnota celé otázky èasto závisí více ne¾ na znìní otázky nebo na - -správné odpovìdi.

                  - - - -

                  Ke ka¾dé odpovìdi mù¾e uèitel pøipojit reakci. Pokud ¾ádnou nepøipojí, - -studentovi se zobrazí výchozí reakce "To je správná odpovìï", resp. - -"To je ¹patná odpovìï".

                  - - - -

                  U otázek s výbìrem odpovìdí mù¾e být správná více ne¾ jedna odpovìï. - -Ka¾dé správné odpovìdi mù¾e být pøiøazena odli¹ná reakce, stejnì jako skok - -na odli¹nou (v lineární posloupnosti ní¾e umístìnou) stránku pøedná¹ky. Bodové - -ohodnocení správných odpovìdí se neli¹í, tj. z hlediska známkování není - -¾ádná odpovìï "správnìj¹í" ne¾ jiná. Otázku je mo¾né sestavit tak, - -¾e správné jsou v¹echny odpovìdi a ka¾dá z nich mù¾e pøenést studenta do jiné - -(ní¾e umístìné) èásti pøedná¹ky.

                  - - - -

                  Podtypem otázky s výbìrem odpovìdí je otázka s výbìrem více správných - -odpovìdí. Zde musí student vybrat v¹echny správné odpovìdi. Souèástí textu - -otázky mù¾e (ale nemusí) být informace o celkovém poètu správných odpovìdí. - -Napøíklad otázka "Která z následujících osobností byla prezidentem USA?" tuto - -informaci neobsahuje, kde¾to otázka "Vyberte ze seznamu dva prezidenty USA" ano. - -Poèet správných odpovìdí mù¾e sahat od 1 a¾ do celkového poètu variant - -odpovìdí. I pøi jedné správné odpovìdi se v¹ak "otázka s výbìrem více správných - -odpovìdí" li¹í od "otázky s výbìrem odpovìdí", proto¾e studentovi dovoluje - -vybrat více ne¾ jednu odpovìï (a dopustit se tak chyby).

                  - - - -

                  Také v tomto pøípadì jsou správné odpovìdi charakterizovány skokem na ní¾e - -umístìné stránky pøedná¹ky a chybné odpovìdi návratem na aktuální stránku nebo - -skokem na stránky umístìné vý¹e. V pøípadì více správných odpovìdí by v¹echny - -odskoky mìly vést na tuté¾ stránku (a u chybných odpovìdí právì tak). Pokud - -tomu tak není, je uèiteli na stránce pøedná¹ky zobrazeno výstra¾né hlá¹ení. - -Reakce ke správným odpovìdím by mìla být uvedena u první správné odpovìdi, - -reakce k chybným odpovìdím potom u první chybné odpovìdi. Reakce u ostatních - -odpovìdí jsou ignorovány (bez upozornìní).

                2. - - - -
                3. Krátká odpovìï Student je vyzván k vlo¾ení krátkého textového - -øetìzce, který se porovnává s jednou nebo více mo¾nými odpovìïmi. Lze zadat - -správné i ¹patné odpovìdi, ke ka¾dé odpovìdi lze pøipojit reakci. Pokud reakce - -není zadána, studentovi se zobrazí výchozí reakce "To je správná - -odpovìï", resp. "To je ¹patná odpovìï". Jestli¾e se studentova - -odpovìï neshoduje s ¾ádnou z definovaných odpovìdí, pova¾uje se odpovìï za - -chybnou a studentovi se zobrazí výchozí reakce na chybnou odpovìï.

                  - - - -

                  Ve výchozím nastavení se pøi kontrole odpovìdi nerozli¹ují malá a velká - -písmena, jejich rozli¹ování v¹ak lze volitelnì aktivovat.

                4. - - - -
                5. Pravda/Nepravda V pøípadì tohoto typu otázky jsou jen dvì mo¾nosti - -odpovìdi: "pravda" a "nepravda". Student je vyzván, aby vybral správnou mo¾nost. - -Tento typ otázky je vlastnì "otázkou s výbìrem odpovìdí", výbìr je v¹ak - -v tomto pøípadì omezen pouze na dvì mo¾nosti.

                6. - - - -
                7. Pøiøazování Pøiøazování je ¹iroce pou¾itelný typ otázky - -sestávající ze seznamu jmen nebo tvrzení, která je tøeba správnì pøiøadit - -k polo¾kám jiného seznamu. Napøíklad otázka "Pøiøaïte hlavní mìsto - -k pøíslu¹nému státu" obsahuje dva seznamy: "Japonsko, Kanada, Itálie" a - -"Tokio, Ottawa, Øím".
                  - -Jeden ze seznamù mù¾e obsahovat duplicitní polo¾ky, je v¹ak tøeba dbát, aby - -opakované polo¾ky byly skuteènì identické. Napøíklad otázka "Zaøaïte tyto - -¾ivoèichy" mù¾e obsahovat seznamy "vrabec, kráva, mravenec, pes" a "pták, - -savec, hmyz, savec".

                  - - - -

                  Pøi vytváøení tohoto typu otázek se polo¾ky prvního seznamu zapisují do pole - -Odpovìï a polo¾ky druhého seznamu do pole Reakce (po vytvoøení otázky budou oba - -seznamy oznaèeny vhodnìji). Pokud student pøiøadí v¹echny polo¾ky správnì, - -provede se skok uvedený u první polo¾ky. Chybné pøiøazení vede k odskoku na - -stránku uvedenou u druhé polo¾ky. Otázka neumo¾òuje zadání reakcí uèitele, - -studentovi je pouze sdìleno, kolik polo¾ek pøiøadil správnì.

                  - - - -

                  Narozdíl od otázek s výbìrem odpovìdí, u nich¾ se varianty odpovìdí zobrazují - -v náhodném poøadí, nejsou v tomto pøípadì polo¾ky prvního seznamu - -zamíchány, ale zobrazují se v poøadí, v jakém byly zadány. To umo¾òuje vytváøet - -otázky s pevným øazením. Pøíkladem mù¾e být otázka "Seøaïte osobnosti vzestupnì - -podle data narození" se seznamy "1., 2., 3., 4." a - -"Longfellow, Lawrence, Lowell, Larkin". Polo¾ky druhého seznamu jsou - -pøed zobrazením pochopitelnì zamíchány.

                8. - - - -
                9. Numerické otázky Tento typ otázky vy¾aduje jako odpovìï èíslo. V - -nejjednodu¹¹í podobì je odpovìdí pouze jediná hodnota, napø. otázka "Kolik - -je 2 plus 2?" mù¾e mít odpovìï 4, které je pøiøazen skok na dal¹í - -stránku. Vhodnìj¹í je v¹ak stanovit jako odpovìï interval, proto¾e - -zaokrouhlování èíselných hodnot pøi výpoètu mù¾e otázku promìnit v hru - -na náhodu. Pokud napøíklad otázka zní "Kolik je 10 / 3?", je tøeba - -zadat odpovìï ve tvaru "Minimum:Maximum" (tj. dvì krajní hodnoty - -oddìlené dvojteèkou). Je-li jako pøijatelný interval zadáno 3.33:3.34, budou za - -správné pøijaty odpovìdi 3.33, 3.333, 3.3333 atd. "Chybné" odpovìdi - -by byly napø. 3.3 (men¹í ne¾ minimální hodnota) nebo 3.4 (vìt¹í ne¾ maximální - -hodnota).

                  - - - -

                  Správných odpovìdí mù¾e být zadáno více a mohou obsahovat jak pøesné hodnoty, - -tak intervaly. Odpovìdi jsou se studentovým øe¹ením porovnávány v poøadí Odpovìï 1, - -Odpovìï 2 atd., tak¾e je tøeba dobøe zvá¾it, v jakém poøadí uvedeme jednotlivé - -varianty odpovìdí, aby se studentovi zobrazila nejpøimìøenìj¹í reakce. Napøíklad - -otázka "Kdy se narodil Larkin?" mù¾e mít jednak pøesnou odpovìï 1922, - -a jednak interval 1920:1929 jako ménì pøesnou odpovìï. Je zøejmé, ¾e tyto - -odpovìdi je tøeba porovnávat v poøadí "1922", "1920:1929". K první odpovìdi mù¾e - -být pøipojena napøíklad reakce "Pøesnì tak!", ke druhé pak "Ano, - -jste ve správném desetiletí (pøesnì 1922)."

                  - - - -

                  Lze uvádìt i chybné varianty odpovìdi, opìt je v¹ak tøeba dát pozor a umístit - -je a¾ za odpovìdi správné. Napøíklad na otázku "Kolik je 10 / 3?" - -je tøeba zaøadit nejprve správnou odpovìï 3.33:3.34 (napø. s reakcí - -"Správnì!"), a pak teprve chybnou odpovìï 3:4; (napø. s reakcí - -"Nejste daleko, ale buïte pøesnìj¹í.").

                10. - -
              - - - +

              Typy otázek

              + +

              Modul Pøedná¹ka v souèasnosti podporuje následující typy otázek:

              + +
                +
              1. Otázky s výbìrem odpovìdí Pøedstavují výchozí typ otázky; +student vybírá odpovìï z nìkolika variant. Volba správné odpovìdi +"pustí" studenta na dal¹í stránky pøedná¹ky, volba odpovìdi chybné nikoliv. +Chybné varianty odpovìdi se nìkdy nazývají distraktory; na jejich +kvalitì hodnota celé otázky èasto závisí více ne¾ na znìní otázky nebo na +správné odpovìdi.

                + +

                Ke ka¾dé odpovìdi mù¾e uèitel pøipojit reakci. Pokud ¾ádnou nepøipojí, +studentovi se zobrazí výchozí reakce "To je správná odpovìï", resp. +"To je ¹patná odpovìï".

                + +

                U otázek s výbìrem odpovìdí mù¾e být správná více ne¾ jedna odpovìï. +Ka¾dé správné odpovìdi mù¾e být pøiøazena odli¹ná reakce, stejnì jako skok +na odli¹nou (v lineární posloupnosti ní¾e umístìnou) stránku pøedná¹ky. Bodové +ohodnocení správných odpovìdí se neli¹í, tj. z hlediska známkování není +¾ádná odpovìï "správnìj¹í" ne¾ jiná. Otázku je mo¾né sestavit tak, +¾e správné jsou v¹echny odpovìdi a ka¾dá z nich mù¾e pøenést studenta do jiné +(ní¾e umístìné) èásti pøedná¹ky.

                + +

                Podtypem otázky s výbìrem odpovìdí je otázka s výbìrem více správných +odpovìdí. Zde musí student vybrat v¹echny správné odpovìdi. Souèástí textu +otázky mù¾e (ale nemusí) být informace o celkovém poètu správných odpovìdí. +Napøíklad otázka "Která z následujících osobností byla prezidentem USA?" tuto +informaci neobsahuje, kde¾to otázka "Vyberte ze seznamu dva prezidenty USA" ano. +Poèet správných odpovìdí mù¾e sahat od 1 a¾ do celkového poètu variant +odpovìdí. I pøi jedné správné odpovìdi se v¹ak "otázka s výbìrem více správných +odpovìdí" li¹í od "otázky s výbìrem odpovìdí", proto¾e studentovi dovoluje +vybrat více ne¾ jednu odpovìï (a dopustit se tak chyby).

                + +

                Také v tomto pøípadì jsou správné odpovìdi charakterizovány skokem na ní¾e +umístìné stránky pøedná¹ky a chybné odpovìdi návratem na aktuální stránku nebo +skokem na stránky umístìné vý¹e. V pøípadì více správných odpovìdí by v¹echny +odskoky mìly vést na tuté¾ stránku (a u chybných odpovìdí právì tak). Pokud +tomu tak není, je uèiteli na stránce pøedná¹ky zobrazeno výstra¾né hlá¹ení. +Reakce ke správným odpovìdím by mìla být uvedena u první správné odpovìdi, +reakce k chybným odpovìdím potom u první chybné odpovìdi. Reakce u ostatních +odpovìdí jsou ignorovány (bez upozornìní).

              2. + +
              3. Krátká odpovìï Student je vyzván k vlo¾ení krátkého textového +øetìzce, který se porovnává s jednou nebo více mo¾nými odpovìïmi. Lze zadat +správné i ¹patné odpovìdi, ke ka¾dé odpovìdi lze pøipojit reakci. Pokud reakce +není zadána, studentovi se zobrazí výchozí reakce "To je správná +odpovìï", resp. "To je ¹patná odpovìï". Jestli¾e se studentova +odpovìï neshoduje s ¾ádnou z definovaných odpovìdí, pova¾uje se odpovìï za +chybnou a studentovi se zobrazí výchozí reakce na chybnou odpovìï.

                + +

                Ve výchozím nastavení se pøi kontrole odpovìdi nerozli¹ují malá a velká +písmena, jejich rozli¹ování v¹ak lze volitelnì aktivovat.

              4. + +
              5. Pravda/Nepravda V pøípadì tohoto typu otázky jsou jen dvì mo¾nosti +odpovìdi: "pravda" a "nepravda". Student je vyzván, aby vybral správnou mo¾nost. +Tento typ otázky je vlastnì "otázkou s výbìrem odpovìdí", výbìr je v¹ak +v tomto pøípadì omezen pouze na dvì mo¾nosti.

              6. + +
              7. Pøiøazování Pøiøazování je ¹iroce pou¾itelný typ otázky +sestávající ze seznamu jmen nebo tvrzení, která je tøeba správnì pøiøadit +k polo¾kám jiného seznamu. Napøíklad otázka "Pøiøaïte hlavní mìsto +k pøíslu¹nému státu" obsahuje dva seznamy: "Japonsko, Kanada, Itálie" a +"Tokio, Ottawa, Øím".
                +Jeden ze seznamù mù¾e obsahovat duplicitní polo¾ky, je v¹ak tøeba dbát, aby +opakované polo¾ky byly skuteènì identické. Napøíklad otázka "Zaøaïte tyto +¾ivoèichy" mù¾e obsahovat seznamy "vrabec, kráva, mravenec, pes" a "pták, +savec, hmyz, savec".

                + +

                Pøi vytváøení tohoto typu otázek se polo¾ky prvního seznamu zapisují do pole +Odpovìï a polo¾ky druhého seznamu do pole Reakce (po vytvoøení otázky budou oba +seznamy oznaèeny vhodnìji). Pokud student pøiøadí v¹echny polo¾ky správnì, +provede se skok uvedený u první polo¾ky. Chybné pøiøazení vede k odskoku na +stránku uvedenou u druhé polo¾ky. Otázka neumo¾òuje zadání reakcí uèitele, +studentovi je pouze sdìleno, kolik polo¾ek pøiøadil správnì.

                + +

                Narozdíl od otázek s výbìrem odpovìdí, u nich¾ se varianty odpovìdí zobrazují +v náhodném poøadí, nejsou v tomto pøípadì polo¾ky prvního seznamu +zamíchány, ale zobrazují se v poøadí, v jakém byly zadány. To umo¾òuje vytváøet +otázky s pevným øazením. Pøíkladem mù¾e být otázka "Seøaïte osobnosti vzestupnì +podle data narození" se seznamy "1., 2., 3., 4." a +"Longfellow, Lawrence, Lowell, Larkin". Polo¾ky druhého seznamu jsou +pøed zobrazením pochopitelnì zamíchány.

              8. + +
              9. Numerické otázky Tento typ otázky vy¾aduje jako odpovìï èíslo. V +nejjednodu¹¹í podobì je odpovìdí pouze jediná hodnota, napø. otázka "Kolik +je 2 plus 2?" mù¾e mít odpovìï 4, které je pøiøazen skok na dal¹í +stránku. Vhodnìj¹í je v¹ak stanovit jako odpovìï interval, proto¾e +zaokrouhlování èíselných hodnot pøi výpoètu mù¾e otázku promìnit v hru +na náhodu. Pokud napøíklad otázka zní "Kolik je 10 / 3?", je tøeba +zadat odpovìï ve tvaru "Minimum:Maximum" (tj. dvì krajní hodnoty +oddìlené dvojteèkou). Je-li jako pøijatelný interval zadáno 3.33:3.34, budou za +správné pøijaty odpovìdi 3.33, 3.333, 3.3333 atd. "Chybné" odpovìdi +by byly napø. 3.3 (men¹í ne¾ minimální hodnota) nebo 3.4 (vìt¹í ne¾ maximální +hodnota).

                + +

                Správných odpovìdí mù¾e být zadáno více a mohou obsahovat jak pøesné hodnoty, +tak intervaly. Odpovìdi jsou se studentovým øe¹ením porovnávány v poøadí Odpovìï 1, +Odpovìï 2 atd., tak¾e je tøeba dobøe zvá¾it, v jakém poøadí uvedeme jednotlivé +varianty odpovìdí, aby se studentovi zobrazila nejpøimìøenìj¹í reakce. Napøíklad +otázka "Kdy se narodil Larkin?" mù¾e mít jednak pøesnou odpovìï 1922, +a jednak interval 1920:1929 jako ménì pøesnou odpovìï. Je zøejmé, ¾e tyto +odpovìdi je tøeba porovnávat v poøadí "1922", "1920:1929". K první odpovìdi mù¾e +být pøipojena napøíklad reakce "Pøesnì tak!", ke druhé pak "Ano, +jste ve správném desetiletí (pøesnì 1922)."

                + +

                Lze uvádìt i chybné varianty odpovìdi, opìt je v¹ak tøeba dát pozor a umístit +je a¾ za odpovìdi správné. Napøíklad na otázku "Kolik je 10 / 3?" +je tøeba zaøadit nejprve správnou odpovìï 3.33:3.34 (napø. s reakcí +"Správnì!"), a pak teprve chybnou odpovìï 3:4; (napø. s reakcí +"Nejste daleko, ale buïte pøesnìj¹í.").

              10. +
            + diff --git a/lang/cs/help/lesson/questiontypes.html b/lang/cs/help/lesson/questiontypes.html index 801b4fb6c21..dac80dbc74d 100644 --- a/lang/cs/help/lesson/questiontypes.html +++ b/lang/cs/help/lesson/questiontypes.html @@ -3,7 +3,7 @@

            Modul Pøedná¹ka v souèasnosti podporuje následující typy otázek:

              -Otázky s výbìrem odpovìdí Pøedstavují výchozí typ otázky; +
            1. Otázky s výbìrem odpovìdí Pøedstavují výchozí typ otázky; student vybírá odpovìï z nìkolika variant. Volba správné odpovìdi "pustí" studenta na dal¹í stránky pøedná¹ky, volba odpovìdi chybné nikoliv. Chybné varianty odpovìdi se nìkdy nazývají distraktory; na jejich @@ -61,7 +61,7 @@ v tomto p sestávající ze seznamu jmen nebo tvrzení, která je tøeba správnì pøiøadit k polo¾kám jiného seznamu. Napøíklad otázka "Pøiøaïte hlavní mìsto k pøíslu¹nému státu" obsahuje dva seznamy: "Japonsko, Kanada, Itálie" a -"Tokio, Ottawa, Øím".
              +"Tokio, Ottawa, Øím".
              Jeden ze seznamù mù¾e obsahovat duplicitní polo¾ky, je v¹ak tøeba dbát, aby opakované polo¾ky byly skuteènì identické. Napøíklad otázka "Zaøaïte tyto ¾ivoèichy" mù¾e obsahovat seznamy "vrabec, kráva, mravenec, pes" a "pták, diff --git a/lang/cs/help/lesson/retake.html b/lang/cs/help/lesson/retake.html index ef9fff12f5c..b65f47e32f1 100755 --- a/lang/cs/help/lesson/retake.html +++ b/lang/cs/help/lesson/retake.html @@ -1,16 +1,16 @@ -

              Student mù¾e projít pøedná¹ku znovu

              +

              Student mù¾e projít pøedná¹ku znovu

              -

              Toto nastavení urèuje, zda student mù¾e projít pøedná¹ku více ne¾ jednou. +

              Toto nastavení urèuje, zda student mù¾e projít pøedná¹ku více ne¾ jednou. Pokud uèitel usoudí, ¾e pøedná¹ka obsahuje materiály, které by mìli studenti prostudovat obzvlá¹tì peèlivì, povolí opakované procházení pøedná¹ky. Pokud má pøedná¹ka naopak spí¹e povahu zkou¹ky, opìtovné procházení by nemìlo být -povoleno.

              +povoleno.

              -

              Jestli¾e studenti mohou procházet pøedná¹ku opakovanì, zobrazí se jim na +

              Jestli¾e studenti mohou procházet pøedná¹ku opakovanì, zobrazí se jim na stránce bodování (Body...) výsledek jejich nejlep¹ího pokusu. Analýza otázek a odpovìdí v¹ak zohledòuje pouze odpovìdi z jejich prvního procházení -pøedná¹ky, dal¹í pokusy jsou ignorovány.

              +pøedná¹ky, dal¹í pokusy jsou ignorovány.

              -

              Ve výchozím nastavení má tento parametr hodnotu Ano, co¾ znamená, ¾e +

              Ve výchozím nastavení má tento parametr hodnotu Ano, co¾ znamená, ¾e studenti mohou procházet pøedná¹ku opakovanì. Nastavení Ne se pøedpokládá -jen ve výjimeèných pøípadech.

              \ No newline at end of file +jen ve výjimeèných pøípadech.

              \ No newline at end of file diff --git a/lang/cs/help/lesson/useeditor.html b/lang/cs/help/lesson/useeditor.html index 54501785221..c87cecc02ad 100644 --- a/lang/cs/help/lesson/useeditor.html +++ b/lang/cs/help/lesson/useeditor.html @@ -1,39 +1,39 @@ -

              Pou¾ívání vestavìného HTML editoru

              +

              Pou¾ívání vestavìného HTML editoru

              -

              Tato volba umo¾ní pøi editaci stránek pøedná¹ky pou¾ívat vestavìný HTML +

              Tato volba umo¾ní pøi editaci stránek pøedná¹ky pou¾ívat vestavìný HTML editor (dále jen "editor") namísto prostého textového pole. Editor nabízí základní mo¾nosti formátování textu, snadné vkládání hypertextových -odkazù, obrázkù apod.

              +odkazù, obrázkù apod.

              -

              Editor se aktivuje zatr¾ením políèka umístìného vedle nápisu Pou¾ít -editor. Pou¾ití editoru se nastavuje u ka¾dého pole zvlá¹», napø. aktivace -editoru pro pole Reakce 1 aktivuje editor pouze pro pole Reakce 1, -nikoliv pro v¹echna pole s reakcemi.

              +

              Editor se aktivuje zatr¾ením políèka umístìného vedle nápisu Pou¾ít +editor. Pou¾ití editoru se nastavuje u ka¾dého pole zvlá¹», napø. aktivace +editoru pro pole Reakce 1 aktivuje editor pouze pro pole Reakce 1, +nikoliv pro v¹echna pole s reakcemi.

              -

              U textových polí, pro která chcete editor aktivovat, nejprve zatrhnìte pøíslu¹né +

              U textových polí, pro která chcete editor aktivovat, nejprve zatrhnìte pøíslu¹né políèko Pou¾ít editor. Poté stisknìte tlaèítko Obnovit stránku na konci stránky; po opìtovném naètení se stránka zobrazí ji¾ s provedenými zmìnami -nastavení.

              +nastavení.

              -

              Pøi pou¾ití editoru je tøeba jisté opatrnosti. Ve vìt¹inì pøípadù by nemìl +

              Pøi pou¾ití editoru je tøeba jisté opatrnosti. Ve vìt¹inì pøípadù by nemìl zpùsobit ¾ádné problémy, nedoporuèuje se v¹ak pro otázky s krátkou odpovìdí a pro numerické otázky; editor mù¾e do textu vkládat "neviditelné" znaèky, které brání správnému porovnávání øetìzcù. Podobnì tomu je v tabulkách vìtvení u polo¾ek Popis, zobrazovaných jako tlaèítka – i zde mohou HTML znaèky pùsobit problémy. Potí¾e naopak nenastávají u reakcí nebo u odpovìdí, u nich¾ student nevpisuje text, jako napø. -u otázek s výbìrem odpovìdi.

              +u otázek s výbìrem odpovìdi.

              -

              Pokud máte podezøení, ¾e u nìkterého textového pole editor zpùsobuje +

              Pokud máte podezøení, ¾e u nìkterého textového pole editor zpùsobuje problémy, je zcela bezpeèné u nìj editor deaktivovat (odstranìním zatr¾ení u políèka Pou¾ít editor). Po obnovení stránky se v textovém poli zobrazí zdrojový text, který lze poté editovat podle potøeby. Obecnì platí, ¾e opakovaná -aktivace a deaktivace editoru by nemìla nijak ovlivnit text dané polo¾ky.

              +aktivace a deaktivace editoru by nemìla nijak ovlivnit text dané polo¾ky.

              -

              Informace o nastavení volby Pou¾ít editor se ukládá pro ka¾dé pole +

              Informace o nastavení volby Pou¾ít editor se ukládá pro ka¾dé pole zvlá¹», tak¾e pøi pozdìj¹í editaci se polo¾ky, u nich¾ byl editor aktivován, -otevøou opìt s aktivovaným editorem.

              +otevøou opìt s aktivovaným editorem.

              -

              Závìrem je tøeba upozornit, ¾e editor klade pomìrnì vysoké nároky na èinnost +

              Závìrem je tøeba upozornit, ¾e editor klade pomìrnì vysoké nároky na èinnost prohlí¾eèe. Pokud tedy dané pole pou¾ití editoru nevy¾aduje, je rychlej¹í a -¹etrnìj¹í pou¾ívat standardní textové pole.

              +¹etrnìj¹í pou¾ívat standardní textové pole.

              diff --git a/lang/cs/help/mods.html b/lang/cs/help/mods.html index b2cc8e1a924..f7961eabc2d 100644 --- a/lang/cs/help/mods.html +++ b/lang/cs/help/mods.html @@ -1,4 +1,66 @@ -

              Moduly èinností

              +

              Moduly èinností

              -

              Moodle obsahuje celou øadu modulù èinností, z nich¾ mù¾ete vystavìt -jakýkoliv typ kurzu.

              \ No newline at end of file +

              Moodle obsahuje celou øadu modulù èinností, z nich¾ mù¾ete vystavìt +jakýkoliv typ kurzu.

              + +

               Fóra

              +
                +

                Ve fórech se odehrává vìt¹ina komunikace úèastníkù kurzu. Fóra mohou být +øízena a zobrazována rùznými zpùsoby. Pøíspìvky mohou být hodnoceny dal¹ími +úèastníky diskuse a mohou obsahovat pøilo¾ené soubory. U¾ivatelé mohou automaticky +odebírat nové pøíspìvky emailem. Uèitel má mo¾nost naøídit odebírání nových +pøíspìvkù v¹em studentùm. +

              + +

               Písemné práce

              +
                +

                Uèitel po¾ádá studenty o vyjádøení se k zadanému tématu èi +problematice. Studenti mohou svou odpovìï upravovat a upøesòovat. Tato +odpovìï je soukromá a je urèena pouze pro uèitele. Ten mù¾e nabídnout +zpìtnou vazbu a hodnocení ka¾dé písemné práce. Není od vìci zadat v +kurzu jednu takovou písemnou práci týdnì.

                +
              + +

               Zdroje

              +
                +

                Zdroje tvoøí obsah kurzu. Jsou to informace, které uèitel do kurzu +pøiná¹í. Jedná se o soubory ulo¾ené na serveru kurzu, stránky upravované +pøímo v Moodle èi odkazy na externí webové stránky, které tvoøí souèást +tohoto kurzu.

                +
              + +

               Úkoly

              +
                +

                Úkoly umo¾òují uèiteli urèit problém, je¾ musí studenti vyøe¹it a +výsledek zaslat jako soubor libovolného formátu na server. Mezi typické +úkoly patøí eseje, zprávy z projektu, obrázky apod. Modul v sobì +zahrnuje mo¾nost hodnocení odeslaného úkolu.

                +
              + +

               Testy

              +
                +

                Tento modul umo¾òuje uèiteli navrhnout a sestavit test sestávající z +výbìrových odpovìdí, odpovìdí ano/ne nebo krátkých písemných odpovìdí. +Otázky jsou ulo¾eny v kategorizované databázi a mohou být znovu pou¾ity +uvnitø kurzu èi ve více kurzech. Lze nastavit více mo¾ných pokusù o +zvládnutí testu. Ka¾dý pokus je automaticky zaznamenán a uèitel si mù¾e +vybrat, zda poskytne zpìtnou vazbu èi uká¾e správné odpovìdi. Modul v +sobì zahrnuje mo¾nost hodnocení testu.

                +
              + +

               Hlasování

              +
                +

                Hlasovnání je velice jednoduché - uèitel polo¾í otázku a urèí mo¾né +odpovìdi. Hodí se napøíklad k motivování studentù, k hlasování o +dal¹ím smìøování výuky nebo k získání individuálního svolení k nìjaké +èinnosti. +

              + +

               Dotazníky

              +
                +

                Modul poskytuje sadu oveøených dotazníkových nástrojù, které byly +shledány u¾iteènými pøi posuzování a stimulování vzdìlávání v online +prostøedí. Uèitelé mohou takto získaná data od svých studentù vyu¾ít k +získání pøedstavy o své tøídì a k reflexi své vlastní vyuèovací +èinnosti.

                +
              diff --git a/lang/cs/help/picture.html b/lang/cs/help/picture.html index 646ffbd4bda..e0e77acdca2 100644 --- a/lang/cs/help/picture.html +++ b/lang/cs/help/picture.html @@ -1,41 +1,33 @@ -

              Pøipojení obrázku

              +

              Pøipojení obrázku

              -

              Zde mù¾ete pøipojit obrázek ulo¾ený na va¹em poèítaèi a odeslat jej na +

              Zde mù¾ete pøipojit obrázek ulo¾ený na va¹em poèítaèi a odeslat jej na server. Tento obrázek vás pak bude reprezentovat na rùzných místech na -tìchto stránkách.

              +tìchto stránkách. +

              Z tohoto dùvodu je nejlep¹í fotografie va¹eho oblièeje, ale samozøejmì +mù¾ete pou¾ít libovolný obrázek. +

              Formát obrázku musí být JPEG nebo PNG (nejèastìji tedy bude mít +pøíponu .jpg nebo .png). +

              Soubor s obrázkem lze získat rùznými zpùsoby: -

              Z tohoto dùvodu je nejlep¹í fotografie va¹eho oblièeje, ale samozøejmì -mù¾ete pou¾ít libovolný obrázek.

              - -

              Formát obrázku musí být JPEG nebo PNG (nejèastìji tedy bude mít -pøíponu .jpg nebo .png).

              - -

              Soubor s obrázkem lze získat rùznými zpùsoby:

              - -
                -
              1. Mù¾ete pou¾ít digitální fotoaparát. Ten ji¾ vìt¹inou ukládá fotografie +
                  +
                1. Mù¾ete pou¾ít digitální fotoaparát. Ten ji¾ vìt¹inou ukládá fotografie v po¾adovaném formátu -
                2. Mù¾ete si naskenovat svoji fotografii. Ujistìte se, ¾e výsledný +
                3. Mù¾ete si naskenovat svoji fotografii. Ujistìte se, ¾e výsledný obrázek ukládáte ve formátu JPEG nebo PNG -
                4. Obrázek mù¾ete nakreslit v nìkterém z grafických editorù -
                5. Nebo mù¾ete pou¾ít nìkterý z obrázkù na webu http://images.google.com +
                6. Obrázek mù¾ete nakreslit v nìkterém z grafických editorù +
                7. Nebo mù¾ete pou¾ít nìkterý z obrázkù na webu http://images.google.com je prima místo k vyhledávání obrázkù. Zalíbí-li vám nìkterý, kliknìte na nìj pravým tlaèítkem my¹i a zvolte v rozbaleném menu "Ulo¾it obrázek jako..." nebo nìco podobného (zále¾í na typu va¹eho prohlí¾eèe). -
                +
              -

              K pøipojení obrázku kliknìte na tlaèítko "Procházet" na této stránce a -vyberte soubor s va¹ím obrázkem.

              - -

              Ujistìte se, ¾e soubor není vìt¹í ne¾ +

              K pøipojení obrázku kliknìte na tlaèítko "Procházet" na této stránce a +vyberte soubor s va¹ím obrázkem. +

              Ujistìte se, ¾e soubor není vìt¹í ne¾ maximální dovolená velikost, jinak nebude moci být na serveru ulo¾en. -

              -

              Poté kliknìte na tlaèítko "Aktualizovat profil". -

              -

              Vá¹ obrázek bude -oøíznut na ètvercový tvar a zmen¹en na velikost 100x100 pixelù. -

              -

              A¾ se vrátíte zpìt na stránku s va¹ím profilem, mo¾ná budete muset kliknout +

              Poté kliknìte na tlaèítko "Aktualizovat profil". +

              Vá¹ obrázek bude +oøíznut na ètvercový tvar a zmen¹en na velikost 100x100 pixelù. +

              A¾ se vrátíte zpìt na stránku s va¹ím profilem, mo¾ná budete muset kliknout na tlaèítko "Obnovit", aby si vá¹ prohlí¾eè znovu naèetl stránku s novou fotografií. -

              \ No newline at end of file diff --git a/lang/cs/help/questions.html b/lang/cs/help/questions.html index baf1e4660af..0df7f3015fb 100644 --- a/lang/cs/help/questions.html +++ b/lang/cs/help/questions.html @@ -1,169 +1,96 @@ -

              Otázky

              - - - -

              Kladení správných otázek je dobrý zpùsob, jak nenásilnì pøinutit +

              Otázky

              + +

              Kladení správných otázek je dobrý zpùsob, jak nenásilnì pøinutit ostatní pøemý¹let o dané vìci. Je-li nám polo¾en dobrý dotaz, musíme spojovat my¹lenky dohromady, vyhodnocovat je a pøicházet s novými -nápady.

              - - - -

              Kladení otázek za úèelem pomoci ostatním pøi uèení se øíká -Sokratovská, nìkdy té¾ dialogická metoda. Spoèívá v +nápady.

              + +

              Kladení otázek za úèelem pomoci ostatním pøi uèení se øíká +Sokratovská, nìkdy té¾ dialogická metoda. Spoèívá v prezentaci pøesnì formulovaných otázek uèitele ¾ákùm, kteøí jsou jimi -vedeni k vytváøení vlastních, logicky vyvozovaných poznatkù.

              - - -

              Sokratovská metoda vy¾aduje, aby jste ostatní peèlivì poslouchali. +vedeni k vytváøení vlastních, logicky vyvozovaných poznatkù. + +

              Sokratovská metoda vy¾aduje, aby jste ostatní peèlivì poslouchali. Otázky je tøeba promyslet a formulovat v souladu s konstruktivistickým -pøístupem k vyuèování a tak, aby nevyvolávali zbyteènou konfrontaci.

              - -

              Zde uvádíme pøíklady takových otázek:

              - - - -

              Dotazy smìøující k vyjasnìní/objasnìní

              - -
                - -
              • Co myslí¹ tím, kdy¾ øíká¹ ______?
              • - -
              • Co je podle tebe podstatné?
              • - -
              • Jak souvisí _____ s _____?
              • - -
              • Mù¾e¹ to øíct je¹tì nìjak jinak?
              • - -
              • Tak¾e - jestli ti rozumím - myslí¹ to tak, ¾e _____ nebo _____?
              • - -
              • Jak to souvisí s na¹ím problémem/tématem?
              • +pøístupem k vyuèování a tak, aby nevyvolávali zbyteènou konfrontaci. +

                Zde uvádíme pøíklady takových otázek:

                + +

                Dotazy smìøující k vyjasnìní/objasnìní

                +
                  +
                • Co myslí¹ tím, kdy¾ øíká¹ ______?
                • +
                • Co je podle tebe podstatné?
                • +
                • Jak souvisí _____ s _____?
                • +
                • Mù¾e¹ to øíct je¹tì nìjak jinak?
                • +
                • Tak¾e - jestli ti rozumím - myslí¹ to tak, ¾e _____ nebo _____?
                • +
                • Jak to souvisí s na¹ím problémem/tématem?
                • Pepíèku, mù¾e¹ vlastními slovy shrnout, co øíká Maøenka? ... -Maøenko, myslela's to tak?
                • - -
                • Mù¾e¹ mi dát pøíklad?
                • - -
                • Mù¾e být _____ typickým pøíkladem?
                • - -
                - -

                Dotazy smìøující k nalezení pøedpokladu

                - -
                  - -
                • Co musí¹ pøedpokládat?
                • - -
                • Co pøedpokládá Maøenka?
                • - -
                • Co bychom mohli pøedpokládat místo toho?
                • - -
                • To vypadá, ¾e pøedpokládá¹ _____. Rozumím tomu dobøe?
                • - +Maøenko, myslela's to tak? +
                • Mù¾e¹ mi dát pøíklad?
                • +
                • Mù¾e být _____ typickým pøíkladem?
                • +
                +

                Dotazy smìøující k nalezení pøedpokladu

                +
                  +
                • Co musí¹ pøedpokládat?
                • +
                • Co pøedpokládá Maøenka?
                • +
                • Co bychom mohli pøedpokládat místo toho?
                • +
                • To vypadá, ¾e pøedpokládá¹ _____. Rozumím tomu dobøe?
                • Tvoje argumenty spoèívají v my¹lence, ¾e _____. Proè jsi své -závìry zdùvodnil _____ a ne tím, ¾e _____?
                • - +závìry zdùvodnil _____ a ne tím, ¾e _____?
                • To vypadá, ¾e pøedpokládá¹ _____. Je-li tomu tak, jaké to mù¾e -mít dal¹í následky?
                • +mít dal¹í následky? +
                • Platí to v¾dy?
                • +
                • Proè si mù¾e nìkdo myslet, ¾e _____?
                • +
                -
              • Platí to v¾dy?
              • +

                Dotazy smìøujcí k nalezení pøíèin a dùkazù

                +
                  +
                • Mù¾e¹ nám vysvìtlit své dùvody?
                • +
                • Proè to v na¹em pøípadì platí?
                • +
                • Máme dùvod pochybovat o tomto dùkazu?
                • +
                • Kdo z nás mù¾e øíct, ¾e to tak opravdu je?
                • +
                • Co bychom odvìtili nìkomu, kdo øíká, ¾e ____?
                • +
                • Mù¾e je¹tì nìkdo podpoøit tento pohled na vìc?
                • +
                • Na základì èeho jsi do¹el k tìmto závìrùm?
                • +
                • Jak bychom mohli zjistit, je li to pravda?
                • +
                -
              • Proè si mù¾e nìkdo myslet, ¾e _____?
              • +

                Dotazy na rùzná hlediska a perspektivy

                +
                  +
                • Co z toho vyplývá?
                • +
                • Kdy¾ øíká¹ _____, vyplývá z toho _____?
                • +
                • Co v¹echno by se je¹tì mohlo stát? Proè?
                • +
                • Jaké dal¹í úèinky to mù¾e mít?
                • +
                • Stane se to urèitì, nebo jen mo¾ná/pravdìpodobnì?
                • +
                • Jaká je druhá mo¾nost?
                • +
                • Platí-li _____ i _____, co je¹tì mù¾e platit?
                • +
                • Øíkáme-li, ¾e ____ je etické, pak co kdy¾ _____?
                • +
                -
              - - -

              Dotazy smìøujcí k nalezení pøíèin a dùkazù

              - -
                - -
              • Mù¾e¹ nám vysvìtlit své dùvody?
              • - -
              • Proè to v na¹em pøípadì platí?
              • - -
              • Máme dùvod pochybovat o tomto dùkazu?
              • - -
              • Kdo z nás mù¾e øíct, ¾e to tak opravdu je?
              • - -
              • Co bychom odvìtili nìkomu, kdo øíká, ¾e ____?
              • - -
              • Mù¾e je¹tì nìkdo podpoøit tento pohled na vìc?
              • - -
              • Na základì èeho jsi do¹el k tìmto závìrùm?
              • - -
              • Jak bychom mohli zjistit, je li to pravda?
              • - -
              - - -

              Dotazy na rùzná hlediska a perspektivy

              - -
                - -
              • Co z toho vyplývá?
              • - -
              • Kdy¾ øíká¹ _____, vyplývá z toho _____?
              • - -
              • Co v¹echno by se je¹tì mohlo stát? Proè?
              • - -
              • Jaké dal¹í úèinky to mù¾e mít?
              • - -
              • Stane se to urèitì, nebo jen mo¾ná/pravdìpodobnì?
              • - -
              • Jaká je druhá mo¾nost?
              • - -
              • Platí-li _____ i _____, co je¹tì mù¾e platit?
              • - -
              • Øíkáme-li, ¾e ____ je etické, pak co kdy¾ _____?
              • - -
              - - -

              Dotazy smìøující k nalezení dùsledkù a významù

              - -
                - -
              • Jak to mù¾eme zjistit?
              • - -
              • Co tato otázka pøedpokládá?
              • - -
              • Mù¾e se _____ zeptat na tuto otázku i jinak?
              • - -
              • Jak by se dala tato otázka pochopit?
              • - -
              • Mù¾eme ji¾ tuto otázku uzavøít?
              • - -
              • Je tato otázka správná? Rozumíme jí v¹ichni?
              • - -
              • Je lehké na tuto otázku odpovìdìt? Proè?
              • - -
              • Souhlasíme v¹ichni s tím, ¾e toto je otázka?
              • - -
              • Ne¾ odpovíme na tuto otázku, co si musíme nejdøív vyjasnit?
              • - -
              • Proè je tato otázka dùle¾itá?
              • - -
              • Je toto ta nejdùle¾itìj¹í otázka?
              • - -
              • Vidíte, jak toto mù¾e souviset s ________?
              • - -
              - - - -
              - - +

              Dotazy smìøující k nalezení dùsledkù a významù

              +
                +
              • Jak to mù¾eme zjistit?
              • +
              • Co tato otázka pøedpokládá?
              • +
              • Mù¾e se _____ zeptat na tuto otázku i jinak?
              • +
              • Jak by se dala tato otázka pochopit?
              • +
              • Mù¾eme ji¾ tuto otázku uzavøít?
              • +
              • Je tato otázka správná? Rozumíme jí v¹ichni?
              • +
              • Je lehké na tuto otázku odpovìdìt? Proè?
              • +
              • Souhlasíme v¹ichni s tím, ¾e toto je otázka?
              • +
              • Ne¾ odpovíme na tuto otázku, co si musíme nejdøív vyjasnit?
              • +
              • Proè je tato otázka dùle¾itá?
              • +
              • Je toto ta nejdùle¾itìj¹í otázka?
              • +
              • Vidíte, jak toto mù¾e souviset s ________?
              • +
              + +
              + Pozn.: Martin pøevzal tyto otázky z publikace PAUL, R. -Critical Thinking: How To Prepare Students for a Rapidly Changing -World. Foundation for Critical Thinking : Santa Rosa, CA, 1993. -
              Èeským zájemcùm lze doporuèit napøíklad MARE©, J., KØIVOHLAVÝ, J. -Sociální a pedagogická komunikace ve ¹kole. Praha : SPN, 1990. -
              - - - -

              - -

              - +Critical Thinking: How To Prepare Students for a Rapidly Changing +World. Foundation for Critical Thinking : Santa Rosa, CA, 1993. +
              Èeským zájemcùm lze doporuèit napøíklad MARE©, J., KØIVOHLAVÝ, J. +Sociální a pedagogická komunikace ve ¹kole. Praha : SPN, 1990. +
              + +

              +

              diff --git a/lang/cs/help/quiz/attempts.html b/lang/cs/help/quiz/attempts.html index e36b08e3d69..02892d15923 100644 --- a/lang/cs/help/quiz/attempts.html +++ b/lang/cs/help/quiz/attempts.html @@ -1,4 +1,4 @@ -

              Poèet pokusù o øe¹ení testu

              -

              Pro vykonání testu mù¾ete studentùm povolit více pokusù.

              -

              Tím se test mìní zároveò i ve studijní aktivitu, a není pouhým nástrojem -hodnocení.

              +

              Poèet pokusù o øe¹ení testu

              +

              Pro vykonání testu mù¾ete studentùm povolit více pokusù.

              +

              Tím se test mìní zároveò i ve studijní aktivitu, a není pouhým nástrojem +hodnocení.

              diff --git a/lang/cs/help/quiz/categories.html b/lang/cs/help/quiz/categories.html index 8a7441b9d82..06245c81563 100755 --- a/lang/cs/help/quiz/categories.html +++ b/lang/cs/help/quiz/categories.html @@ -1,11 +1,11 @@ -

              Kategorie úloh

              -

              Pro správu vìt¹ího poètu úloh mù¾e být výhodné jejich tøídìní do kategorií.

              +

              Kategorie úloh

              +

              Pro správu vìt¹ího poètu úloh mù¾e být výhodné jejich tøídìní do kategorií.

              -

              Kategorie je definována jménem a krátkým popisem.

              -

              Kategorii mù¾ete také "zveøejnit"; zveøejnìná kategorie pak bude k dispozici +

              Kategorie je definována jménem a krátkým popisem.

              +

              Kategorii mù¾ete také "zveøejnit"; zveøejnìná kategorie pak bude k dispozici ve v¹ech kurzech v dané instalaci Moodlu a v¹echny úlohy, které obsahuje, bude -mo¾né zaøadit i do testù v jiných kurzech.

              +mo¾né zaøadit i do testù v jiných kurzech.

              -

              Kategorie mù¾ete libovolnì vytváøet i mazat. Pokud se ale pokusíte smazat +

              Kategorie mù¾ete libovolnì vytváøet i mazat. Pokud se ale pokusíte smazat neprázdnou kategorii, budete po¾ádáni, abyste úlohy v ní obsa¾ené pøesunuli -do jiné kategorie.

              \ No newline at end of file +do jiné kategorie.

              \ No newline at end of file diff --git a/lang/cs/help/quiz/correctanswers.html b/lang/cs/help/quiz/correctanswers.html index 9f5cad9cfa6..6b84b6cc4e4 100644 --- a/lang/cs/help/quiz/correctanswers.html +++ b/lang/cs/help/quiz/correctanswers.html @@ -1,3 +1,3 @@ -

              Ukázat v hodnocení správnou odpovìï

              -

              Umo¾níte-li zobrazení správných odpovìdí, bude studentùm u ka¾dé otázky -zobrazena správná odpovìï (zvýraznìná svìtlou barvou).

              \ No newline at end of file +

              Ukázat v hodnocení správnou odpovìï

              +

              Umo¾níte-li zobrazení správných odpovìdí, bude studentùm u ka¾dé otázky +zobrazena správná odpovìï (zvýraznìná svìtlou barvou).

              \ No newline at end of file diff --git a/lang/cs/help/quiz/createmultiple.html b/lang/cs/help/quiz/createmultiple.html index a60f8028116..f9591b7f368 100755 --- a/lang/cs/help/quiz/createmultiple.html +++ b/lang/cs/help/quiz/createmultiple.html @@ -1,5 +1,5 @@ -

              Vytvoøit více úloh najednou

              -

              Na této stránce mù¾ete vytvoøit více úloh najednou.

              -

              Prozatím stránka umo¾òuje vytvoøit nìkolik Náhodnì vybraných úloh a -zaøadit je do aktuálního testu.

              -

              Èasem bude stránka roz¹íøena a bude zde k dispozici více mo¾ností.

              \ No newline at end of file +

              Vytvoøit více úloh najednou

              +

              Na této stránce mù¾ete vytvoøit více úloh najednou.

              +

              Prozatím stránka umo¾òuje vytvoøit nìkolik Náhodnì vybraných úloh a +zaøadit je do aktuálního testu.

              +

              Èasem bude stránka roz¹íøena a bude zde k dispozici více mo¾ností.

              \ No newline at end of file diff --git a/lang/cs/help/quiz/description.html b/lang/cs/help/quiz/description.html index 1797c934f48..d159fe904b4 100644 --- a/lang/cs/help/quiz/description.html +++ b/lang/cs/help/quiz/description.html @@ -1,5 +1,5 @@ -

              Popis

              -

              Popis vlastnì není skuteèná úloha. Slou¾í pouze k zobrazení textu, ani¾ by -vy¾adoval odpovìï.

              -

              Lze jej pou¾ít napøíklad k zobrazení informací spoleèných pro -následující skupinu otázek.

              +

              Popis

              +

              Popis vlastnì není skuteèná úloha. Slou¾í pouze k zobrazení textu, ani¾ by +vy¾adoval odpovìï.

              +

              Lze jej pou¾ít napøíklad k zobrazení informací spoleèných pro +následující skupinu otázek.

              diff --git a/lang/cs/help/quiz/discrimination.html b/lang/cs/help/quiz/discrimination.html index 71e85410fe1..66e89a54efd 100755 --- a/lang/cs/help/quiz/discrimination.html +++ b/lang/cs/help/quiz/discrimination.html @@ -1,23 +1,23 @@ -

              Diskriminaèní hodnota

              -

              Diskriminaèní hodnota slou¾í jako hrubý ukazatel výkonu ka¾dé polo¾ky. +

              Diskriminaèní hodnota

              +

              Diskriminaèní hodnota slou¾í jako hrubý ukazatel výkonu ka¾dé polo¾ky. Stanovuje se následujícím zpùsobem: (1) vyhodnotíme test jako celek a studenty rozdìlíme na tøetiny podle dosa¾eného výsledku; (2) pro ka¾dou otázku urèíme, kolik z jejích úspì¹ných øe¹itelù patøí do první tøetiny øe¹itelù celého testu a kolik do poslední; (3) podíl tìchto dvou hodnot pøedstavuje diskriminaèní -hodnotu dané otázky.

              +hodnotu dané otázky.

              -

              Pøíklad: Testu se zúèastnilo 30 studentù, tak¾e první i poslední tøetinu +

              Pøíklad: Testu se zúèastnilo 30 studentù, tak¾e první i poslední tøetinu øe¹itelù tvoøí 10 studentù. Jestli¾e otázku èíslo 1 vyøe¹ilo správnì 9 studentù z první tøetiny a 3 studenti z poslední tøetiny, bude diskriminaèní hodnota pro -tuto otázku 9/3 = 3,0.

              +tuto otázku 9/3 = 3,0.

              -

              Pokud je diskriminaèní hodnota men¹í ne¾ 1,0, znamená to, ¾e polo¾ku vyøe¹ilo +

              Pokud je diskriminaèní hodnota men¹í ne¾ 1,0, znamená to, ¾e polo¾ku vyøe¹ilo správnì více slab¹ích studentù ne¾ dobrých. Takové otázky by mìly být vyøazeny -jako bezcenné, proto¾e sni¾ují pøesnost celkového výsledku testu.

              +jako bezcenné, proto¾e sni¾ují pøesnost celkového výsledku testu.

              -

              Èísla v závorkách na stránce "Podrobná statistika" mají tento význam: (správné -odpovìdi první tøetiny/správné odpovìdi poslední tøetiny).

              +

              Èísla v závorkách na stránce "Podrobná statistika" mají tento význam: (správné +odpovìdi první tøetiny/správné odpovìdi poslední tøetiny).

              -

              Pokud ¾ádný slabý student nevyøe¹il otázku správnì, mìl by jmenovatel +

              Pokud ¾ádný slabý student nevyøe¹il otázku správnì, mìl by jmenovatel hodnotu 0, co¾ by vedlo k nepøípustné matematické operaci. V takovém pøípadì -dosadí program pro danou otázku diskriminaèní hodnotu 10.

              \ No newline at end of file +dosadí program pro danou otázku diskriminaèní hodnotu 10.

              \ No newline at end of file diff --git a/lang/cs/help/quiz/feedback.html b/lang/cs/help/quiz/feedback.html index 2038c09e8cd..2f6b3a1a332 100644 --- a/lang/cs/help/quiz/feedback.html +++ b/lang/cs/help/quiz/feedback.html @@ -1,3 +1,3 @@ -

              Zobrazit po odpovìdi komentáø

              -

              Pokud zvolíte ANO, studentùm se ke ka¾dé odpovìdi zobrazí komentáø (a» byla -odpovìï správná, èi chybná).

              \ No newline at end of file +

              Zobrazit po odpovìdi komentáø

              +

              Pokud zvolíte ANO, studentùm se ke ka¾dé odpovìdi zobrazí komentáø (a» byla +odpovìï správná, èi chybná).

              \ No newline at end of file diff --git a/lang/cs/help/quiz/formataiken.html b/lang/cs/help/quiz/formataiken.html index c9385f317d0..90051f4f2d1 100755 --- a/lang/cs/help/quiz/formataiken.html +++ b/lang/cs/help/quiz/formataiken.html @@ -1,8 +1,8 @@ -

              Import souborù ve formátu Aiken

              -

              Formát Aiken poskytuje mo¾nost, jak jednodu¹e vytváøet úlohy s výbìrem -odpovìdí, a to ve snadno srozumitelném formátu. Napø:

              +

              Import souborù ve formátu Aiken

              +

              Formát Aiken poskytuje mo¾nost, jak jednodu¹e vytváøet úlohy s výbìrem +odpovìdí, a to ve snadno srozumitelném formátu. Napø:

              -
              Která odpovìï na tuto otázku je správná?
              +
              Která odpovìï na tuto otázku je správná?
               A. Je to tato?
               B. Nebo tahle?
               C. Mo¾ná dokonce tato?
              @@ -17,10 +17,10 @@ D) Blackboard
               E) WebCT
               F) Ilias
               ANSWER: A
              -
              +
              -

              Otázka musí být napsána celá na jednom øádku.

              -

              Ka¾dá varianta odpovìdi musí být uvozena jedním písmenem (A, B, C...), po -nìm¾ následuje teèka "." nebo závorka ")", a za nimi mezera.

              -

              Pak musí bezprostøednì následovat øádek se správnou odpovìdí; na jeho zaèátku -musí stát "ANSWER:" a poté pøíslu¹né písmeno.

              \ No newline at end of file +

              Otázka musí být napsána celá na jednom øádku.

              +

              Ka¾dá varianta odpovìdi musí být uvozena jedním písmenem (A, B, C...), po +nìm¾ následuje teèka "." nebo závorka ")", a za nimi mezera.

              +

              Pak musí bezprostøednì následovat øádek se správnou odpovìdí; na jeho zaèátku +musí stát "ANSWER:" a poté pøíslu¹né písmeno.

              \ No newline at end of file diff --git a/lang/cs/help/quiz/formatblackboard.html b/lang/cs/help/quiz/formatblackboard.html index 958e22d51ec..06eea16d072 100755 --- a/lang/cs/help/quiz/formatblackboard.html +++ b/lang/cs/help/quiz/formatblackboard.html @@ -1,3 +1,3 @@ -

              Import souborù z formátu "Blackboard"

              +

              Import souborù z formátu "Blackboard"

              Dokumentace zatím není k dispozici.

              \ No newline at end of file diff --git a/lang/cs/help/quiz/formatctm.html b/lang/cs/help/quiz/formatctm.html index 5f8dd541e78..28ff95ee334 100755 --- a/lang/cs/help/quiz/formatctm.html +++ b/lang/cs/help/quiz/formatctm.html @@ -1,82 +1,82 @@ -

              Import souborù z formátu Course Test Manager

              -

              Course Test Manager je softwarový balíèek, jeho¾ ¾ivotní cyklus se +

              Import souborù z formátu Course Test Manager

              +

              Course Test Manager je softwarový balíèek, jeho¾ ¾ivotní cyklus se chýlí ke konci. Spoleènost Course Technology u¾ v jeho vývoji nepokraèuje – byl nahrazen novým systémem ExamView. Pøesto jsme se rozhodli tento filtr vytvoøit, proto¾e a¾ doposud neexistoval zpùsob, jak exportovat úlohy -z formátu CTM do jiného bì¾nì u¾ívaného testového formátu.

              +z formátu CTM do jiného bì¾nì u¾ívaného testového formátu.

              -

              Pro import otázek z CTM musíte mít CTM nainstalován na poèítaèi s Windows a +

              Pro import otázek z CTM musíte mít CTM nainstalován na poèítaèi s Windows a mít na tomto poèítaèi pøístup k souborùm databáze MS Access. Pro pøístup k datùm -potøebujete dva datové soubory:

              -
                -
              • system.mda – tento soubor se nachází v koøenovém adresáøi va¹í - instalace CTM a v øeèi MS Access je obvykle nazýván "System Database".
              • -
              • ctm.mdb – databáze obsahující testovací otázky. V CTM je pro ka¾dý +potøebujete dva datové soubory:

                +
                  +
                • system.mda – tento soubor se nachází v koøenovém adresáøi va¹í + instalace CTM a v øeèi MS Access je obvykle nazýván "System Database". +
                • ctm.mdb – databáze obsahující testovací otázky. V CTM je pro ka¾dý kurz nainstalována jedna databáze. Nachází se v adresáøi umístìném o jednu úroveò ní¾e ne¾ instalaèní adresáø CTM. -
                +
              -

              Import souborù CTM se li¹í v závislosti na tom, zda je Moodle provozován +

              Import souborù CTM se li¹í v závislosti na tom, zda je Moodle provozován v operaèním systému Windows nebo Linux. Bez ohledu to, v jakém operaèním systému pracujete, potøebujete poèítaè s Windows (Windows 2000 nebo Windows XP) umístìný na stejné síti jako systém Moodle; na tomto poèítaèi jsou bìhem -importu umístìny databáze otázek (v MS Access).

              +importu umístìny databáze otázek (v MS Access).

              -

              Celý proces je o nìco jednodu¹¹í, pokud je Moodle provozován ve Windows. -Pro import z CTM zde staèí provést tyto kroky:

              -
                -
              1. Nahrajte soubor system.mda do Moodlu pomocí správce souborù. Nezále¾í na - tom, do jakého kurzu soubor system.mda nahrajete, Moodle si jej najde kdekoliv.
              2. -
              3. Zalo¾te v Moodlu test a pou¾ijte funkci "Importovat úlohy ze souboru". +

                Celý proces je o nìco jednodu¹¹í, pokud je Moodle provozován ve Windows. +Pro import z CTM zde staèí provést tyto kroky:

                +
                  +
                1. Nahrajte soubor system.mda do Moodlu pomocí správce souborù. Nezále¾í na + tom, do jakého kurzu soubor system.mda nahrajete, Moodle si jej najde kdekoliv. +
                2. Zalo¾te v Moodlu test a pou¾ijte funkci "Importovat úlohy ze souboru". Vyberte pøíslu¹ný soubor ctm.mdb a pokraèujte v importu. Pokud jste postupovali správnì, zobrazí se vám stránka, na které si budete moci vybrat kategorii otázek, z ní¾ chcete importovat. Tento krok je sem zaøazen proto, ¾e databáze úloh v CTM jsou vzhledem k velkému mno¾ství otázek èasto èlenìny do kategorií (napø. podle kapitol uèebnice nebo oddílù kurzu). -
                +
              -

              Pokud Moodle provozujete v operaèním systému Linux, bude import -úloh vy¾adovat instalaci speciálního softwaru ODBC Socket Server. Ten si musíte stáhnout a nainstalovat -na poèítaè s Windows, ve kterém je ulo¾ena databáze CTM. Nepostupujte +

              Pokud Moodle provozujete v operaèním systému Linux, bude import +úloh vy¾adovat instalaci speciálního softwaru ODBC Socket Server. Ten si musíte stáhnout a nainstalovat +na poèítaè s Windows, ve kterém je ulo¾ena databáze CTM. Nepostupujte podle instalaèních pokynù uvedených v balíèku ODBC Socket Server. Jsou zbyteènì -komplikované! Postupujte radìji takto:

              -
                -
              1. Stáhnìte si instalaèní soubor z této stránky a rozbalte ho v poèítaèi s Windows. -
              2. Zkopírujte soubor ODBCSocketServer.exe na vhodné místo, napø. do systémového +komplikované! Postupujte radìji takto:

                +
                  +
                1. Stáhnìte si instalaèní soubor z této stránky a rozbalte ho v poèítaèi s Windows. +
                2. Zkopírujte soubor ODBCSocketServer.exe na vhodné místo, napø. do systémového adresáøe (pravdìpodobnì C:\WINNT\ nebo C:\Windows) nebo do adresáøe Program Files. -
                3. Nainstalujte ODBC Socket Server jako slu¾bu, a to pøíkazem
                  - <cesta k souboru – viz pøedchozí krok>/ODBCSocketServer.exe /Service
                  +
                4. Nainstalujte ODBC Socket Server jako slu¾bu, a to pøíkazem
                  + <cesta k souboru – viz pøedchozí krok>/ODBCSocketServer.exe /Service
                  To mù¾ete provést v menu Start->Spustit... nebo v pøíkazovém øádku - operaèního systému.
                5. + operaèního systému. -
                6. Otevøete správu slu¾eb jedním z tìchto tøí zpùsobù: (a) +
                7. Otevøete správu slu¾eb jedním z tìchto tøí zpùsobù: (a) Start->Nastavení->Ovládací panely->Nástroje pro správu->Slu¾by; - (b) pravým tlaèítkem kliknìte na Tento poèítaè, v nabídce vyberte - Spravovat->Slu¾by a aplikace->Slu¾by; (c) pøíkazem services.msc - v menu Start->Spustit...
                8. + (b) pravým tlaèítkem kliknìte na Tento poèítaè, v nabídce vyberte + Spravovat->Slu¾by a aplikace->Slu¾by; (c) pøíkazem services.msc + v menu Start->Spustit... -
                9. Ve správì slu¾eb kliknìte pravým tlaèítkem na ikonu ODBC Socket Server a - vyberte polo¾ku Start. Jeho "stav" by se mìl zmìnit na Spu¹tìno - (Started). Po dokonèení importu mù¾ete slu¾bu zase zastavit nebo zakázat.
                10. +
                11. Ve správì slu¾eb kliknìte pravým tlaèítkem na ikonu ODBC Socket Server a + vyberte polo¾ku Start. Jeho "stav" by se mìl zmìnit na Spu¹tìno + (Started). Po dokonèení importu mù¾ete slu¾bu zase zastavit nebo zakázat. -
                12. Pøesvìdète se, zda se na poèítaèi nacházejí oba datové soubory system.mda +
                13. Pøesvìdète se, zda se na poèítaèi nacházejí oba datové soubory system.mda a ctm.mdb a také ODBC ovladaè pro MS Access, který by mìl být souèástí ka¾dé instalace Windows (jeho pøítomnost ovìøíte tak, ¾e otevøete panel "Nástroje pro správu", poté panel "Datové zdroje" a na nìm kliknete na zálo¾ku - "Ovladaèe").
                  + "Ovladaèe").
                  Dále zjistìte, kde je nainstalován CTM a kde jsou umístìny soubory system.mda a ctm.mdb, ze kterých chcete importovat data. Poznamenejte si úplnou pøístupovou cestu k tìmto souborùm a také IP adresu nebo jméno poèítaèe - s Windows. Obì tyto informace budete pøi importování potøebovat.
                14. + s Windows. Obì tyto informace budete pøi importování potøebovat. -
                15. Nyní ji¾ mù¾ete zaèít s importováním databází úloh do Moodlu. Zalo¾te - v Moodlu test a pou¾ijte funkci "Importovat úlohy ze souboru". V TOMTO BODÌ - SE POSTUP PRO LINUX LI©Í! V POLI "Vlo¾it" MUSÍTE UVÉST - ZÁSTUPNÝ SOUBOR. TENTO SOUBOR SE NEBUDE ZPRACOVÁVAT, SLOU®Í POUZE JAKO +
                16. Nyní ji¾ mù¾ete zaèít s importováním databází úloh do Moodlu. Zalo¾te + v Moodlu test a pou¾ijte funkci "Importovat úlohy ze souboru". V TOMTO BODÌ + SE POSTUP PRO LINUX LI©Í! V POLI "Vlo¾it" MUSÍTE UVÉST + ZÁSTUPNÝ SOUBOR. TENTO SOUBOR SE NEBUDE ZPRACOVÁVAT, SLOU®Í POUZE JAKO "©IDÍTKO" PRO IMPORTOVACÍ FORMULÁØ (MUSÍ V©AK SKUTEÈNÌ EXISTOVAT A MÍT NENULOVOU VELIKOST). INFORMACE O POU®ÍVANÉM SERVERU WINDOWS BUDETE MOCI UVÉST V DAL©ÍM KROKU. Otevøe se vám stránka, na které vyplníte IP adresu nebo jméno @@ -85,10 +85,10 @@ komplikovan "Pøipojit k serveru". Pokud bylo v¹e nastaveno správnì, zobrazí se dal¹í formuláø, ve kterém budete moci vybrat kategorii úloh k importu. POKUD JSTE DOSPÌLI A® SEM, JE V©E NASTAVENO SPRÁVNÌ A MÙ®ETE ZAÈÍT IMPORTOVAT! -
                +
              -

              Pokud se bìhem importu zobrazila chybová hlá¹ení, mo¾ná oceníte následující +

              Pokud se bìhem importu zobrazila chybová hlá¹ení, mo¾ná oceníte následující technickou informaci: k otevøení zásuvky (socket) i k výmìnì dotazu a výsledku dotazu ve formátu XML pou¾ívá ODBC Socket Server port 9628. Tøída pro import zpracuje výsledek dotazu ve formátu XML stejnì, jako by byl -zpracováván místní dotaz.

              \ No newline at end of file +zpracováván místní dotaz.

              \ No newline at end of file diff --git a/lang/cs/help/quiz/formatcustom.html b/lang/cs/help/quiz/formatcustom.html index 83ce46f8b8c..b769ea2718d 100755 --- a/lang/cs/help/quiz/formatcustom.html +++ b/lang/cs/help/quiz/formatcustom.html @@ -1,3 +1,3 @@ -

              Import souborù z u¾ivatelského formátu

              +

              Import souborù z u¾ivatelského formátu

              Dokumentace zatím není k dispozici.

              \ No newline at end of file diff --git a/lang/cs/help/quiz/formatgift.html b/lang/cs/help/quiz/formatgift.html index a792e19f4e6..43801a16cd2 100755 --- a/lang/cs/help/quiz/formatgift.html +++ b/lang/cs/help/quiz/formatgift.html @@ -1,12 +1,12 @@ -

              Import souborù z formátu GIFT

              -

              GIFT je nejkomplexnìj¹í dostupný formát pro importování testových otázek +

              Import souborù z formátu GIFT

              +

              GIFT je nejkomplexnìj¹í dostupný formát pro importování testových otázek z textového souboru do Moodlu. Podporuje rùzné typy úloh: úlohy s výbìrem odpovìdí, s krátkou odpovìdí, s odpovìdí pravda/nepravda, numerické úlohy, pøiøazování a doplòovací úlohy (cloze test), a také vlo¾ení _______ pro formát "vynechané slovo". V jednom textovém souboru lze pou¾ít více typù úloh. Formát GIFT dále umo¾òuje zadávat jméno otázky, komentáø k odpovìdím a jejich hodnocení v procentech; pro interní potøebu lze text také opatøovat poznámkami, které se -v testu nezobrazí.

              +v testu nezobrazí.

              Kódování importovaného souboru se musí shodovat s kódováním pou¾itým ve va¹í instalaci Moodlu. Pøíklad souboru s úlohami pro import najdete zde: @@ -14,27 +14,27 @@ instalaci Moodlu. P

              TYPY ÚLOH

              -

              Úloha s výbìrem odpovìdí
              +

              Úloha s výbìrem odpovìdí
              U úlohy tohoto typu jsou chybné odpovìdi uvozeny vlnovkou/tildou (~), správné -odpovìdi rovnítkem (=).

              +odpovìdi rovnítkem (=).

              -
                   Kdo je pohøben v památníku na Vítkovì?{~T.G.M. ~Klement Gottwald =nikdo}
              +
                   Kdo je pohøben v památníku na Vítkovì?{~T.G.M. ~Klement Gottwald =nikdo}
              -

              Zvlá¹tní pøípad úlohy s výbìrem odpovìdi pøedstavuje formát vynechané -slovo, který na místo libovolného slova ve vìtì automaticky vlo¾í znaèku +

              Zvlá¹tní pøípad úlohy s výbìrem odpovìdi pøedstavuje formát vynechané +slovo, který na místo libovolného slova ve vìtì automaticky vlo¾í znaèku vynechávky (_____). Varianty odpovìdí se v zápisu úlohy uvádìjí na místì, kde se má tato znaèka objevit. -

                   V památníku na Vítkovì byl {~otráven =pohøben ~oddán}Klement Gottwald.
              +
                   V památníku na Vítkovì byl {~otráven =pohøben ~oddán}Klement Gottwald.
              -

              Formát "vynechané slovo" bude pou¾it v¾dy, kdy¾ jsou odpovìdi v závorce +

              Formát "vynechané slovo" bude pou¾it v¾dy, kdy¾ jsou odpovìdi v závorce uvedeny kdekoliv pøed závìreèným interpunkèním znaménkem. Na jejich místo se automaticky vlo¾í znaèka vynechávky (____). V tomto formátu lze zapsat v¹echny -typy úloh.

              -

              Jednotlivé otázky musí být v¾dy oddìleny prázdným øádkem (dvojité CR). Pro +typy úloh.

              +

              Jednotlivé otázky musí být v¾dy oddìleny prázdným øádkem (dvojité CR). Pro vìt¹í srozumitelnost mù¾ete napsat ka¾dou odpovìï na zvlá¹tní øádek a pøípadnì -odsadit:

              -
                   Americký Den díkùvzdání se slaví {
              +odsadit:

              +
                   Americký Den díkùvzdání se slaví {
                        ~druhý
                        ~tøetí
                        =ètvrtý
              @@ -47,31 +47,31 @@ odsadit:

              ~Korea ~Egypt}
              -

              Úloha s krátkou odpovìdí
              +

              Úloha s krátkou odpovìdí
              U tohoto typu úlohy jsou v¹echny odpovìdi oznaèeny rovnítkem (=), které signalizuje, ¾e jsou v¹echny správné. ®ádná odpovìï nesmí obsahovat znak -vlnovka/tilda.

              +vlnovka/tilda.

              -
                   	Kdo je pohøben v památníku na Vítkovì?{=nyní ji¾ nikdo =nikdo}
              +
                   	Kdo je pohøben v památníku na Vítkovì?{=nyní ji¾ nikdo =nikdo}
               	Dvì a dvì se rovnají {=ètyøem =4}.
              -

              Pokud je mo¾ná jen jedna správná odpovìï, pak nemusí být oznaèena -rovnítkem. Pozor ale na zámìnu s úlohou typu "pravda/nepravda".

              +

              Pokud je mo¾ná jen jedna správná odpovìï, pak nemusí být oznaèena +rovnítkem. Pozor ale na zámìnu s úlohou typu "pravda/nepravda".

              -

              Úloha pravda/nepravda
              +

              Úloha pravda/nepravda
              U tohoto typu úlohy student v odpovìdi rozhoduje, zda je urèité tvrzení pravdivé. V zápisu úlohy uvádíme odpovìï v podobì {TRUE} nebo {FALSE}, pøíp. zkrácenì {T} -nebo {F}.

              +nebo {F}.

              -
                   V památníku na Vítkovì je pohøben Klement Gottwald. {F}
              +
                   V památníku na Vítkovì je pohøben Klement Gottwald. {F}
               
                    Slunce vychází na východì. {T}
              -

              Pøiøazování
              +

              Pøiøazování
              Dvojice správných odpovìdí zaèínají rovnítkem (=) a jsou oddìleny symbolem "->". -Musíte vytvoøit alespoò tøi páry správných odpovìdí.

              +Musíte vytvoøit alespoò tøi páry správných odpovìdí.

              -
                   Zadání úlohy. {
              +
                   Zadání úlohy. {
               	=otázka1 -> odpovìï1
               	=otázka2 -> odpovìï2
               	=otázka3 -> odpovìï3
              @@ -84,71 +84,71 @@ Mus
               	=Rakousko -> Vídeò
               	}
              -

              U tohoto typu úloh nelze k odpovìdím pøipojovat komentáø ani stanovovat -procentní hodnocení odpovìdi.

              +

              U tohoto typu úloh nelze k odpovìdím pøipojovat komentáø ani stanovovat +procentní hodnocení odpovìdi.

              -

              Numerická úloha
              +

              Numerická úloha
              Odpovìï u tohoto typu úlohy se oznaèuje køí¾kem (#). Lze u ní stanovit i odchylku, která se uvádí za správnou odpovìdí a oddìluje se dvojteèkou. Pokud napøíklad správná odpovìï le¾í kdekoliv v intervalu 1,5–2,5, zapí¹eme ji {#2:0.5}. Tím stanovujeme, ¾e správná odpovìï je 2 s odchylkou 0,5 (tzn. interval od 1,5 do 2,5). Pokud není odchylka uvedena, pøedpokládá se, ¾e je nulová. Poznámka: èíselné hodnoty je tøeba zadávat s -øádovou teèkou, nikoliv èárkou (systém pracuje s anglosaským zápisem).

              +øádovou teèkou, nikoliv èárkou (systém pracuje s anglosaským zápisem).

              -
                   Kdy se narodil T.G.M.? {#1850}
              +
                   Kdy se narodil T.G.M.? {#1850}
               
                    Jaká je hodnota pí (na tøi desetinná místa)? {#3.1415:0.0005}
              -

              Odpovìï na numerickou úlohu mù¾e být zapsána také jako interval -v následujícím formátu: {#MinimálníHodnota..MaximálníHodnota}

              +

              Odpovìï na numerickou úlohu mù¾e být zapsána také jako interval +v následujícím formátu: {#MinimálníHodnota..MaximálníHodnota}

              -
                   Jaká je hodnota pí (na tøi desetinná místa)? {#3.141..3.142}
              +
                   Jaká je hodnota pí (na tøi desetinná místa)? {#3.141..3.142}
              -

              U¾ivatelské rozhraní Moodlu nedoká¾e pracovat s více variantami odpovìdi na +

              U¾ivatelské rozhraní Moodlu nedoká¾e pracovat s více variantami odpovìdi na numerickou úlohu. Programový kód Moodlu i formát GIFT to v¹ak dovedou; toho lze vyu¾ít pro zadání nìkolika èíselných intervalù v rámci jedné odpovìdi, zvlá¹tì pak v kombinaci s procentním hodnocením jednotlivých variant odpovìdi. Pokud pou¾ijeme více správných odpovìdí, je tøeba je v zápise oddìlit rovnítkem -(stejnì jako u otázek s krátkou odpovìdí).

              +(stejnì jako u otázek s krátkou odpovìdí).

              -
                   Kdy se narodil T.G.M.? {#
              +
                   Kdy se narodil T.G.M.? {#
                        =1850:0
                        =%50%1850:2}
              -

              Vzhledem k tomu, ¾e u¾ivatelské rozhraní Moodlu nedoká¾e pracovat s více +

              Vzhledem k tomu, ¾e u¾ivatelské rozhraní Moodlu nedoká¾e pracovat s více variantami odpovìdi na numerickou úlohu, nelze je v Moodlu ani prohlí¾et, ani upravovat. Chceme-li zmìnit druhou a dal¹í variantu odpovìdi, nezbývá ne¾ otázku vymazat a znovu ji importovat s novou, roz¹íøenou odpovìdí (nebo pou¾ít nástroj -pro správu databáze, napø. phpMyAdmin).

              +pro správu databáze, napø. phpMyAdmin).

              NASTAVENÍ

              -

              Kromì tìchto základních typù úloh nabízí filtr formátu GIFT dal¹í nastavení: +

              Kromì tìchto základních typù úloh nabízí filtr formátu GIFT dal¹í nastavení: jméno otázky, komentáø k odpovìdím a jejich hodnocení v procentech; pro interní -potøebu lze text také opatøovat poznámkami, které se v testu nezobrazí.

              +potøebu lze text také opatøovat poznámkami, které se v testu nezobrazí.

              -

              Poznámky k otázce
              +

              Poznámky k otázce
              Textový soubor mù¾e obsahovat i informace, které se nebudou vkládat do Moodlu, napø. mezinadpisy nebo poznámky k otázkám. Filtr ignoruje v¹echny øádky -zaèínající dvìma lomítky (tabulátory a mezery pøed nimi se neuva¾ují).

              +zaèínající dvìma lomítky (tabulátory a mezery pøed nimi se neuva¾ují).

              -
                   // Mezinadpis: Èíselné otázky
              +
                   // Mezinadpis: Èíselné otázky
                    Kolik je 2 plus 2? {#4}
              -

              Jméno úlohy
              -Na zaèátku úlohy mù¾eme uvést její jméno, které uzavøeme do dvojitých dvojteèek.

              +

              Jméno úlohy
              +Na zaèátku úlohy mù¾eme uvést její jméno, které uzavøeme do dvojitých dvojteèek.

              -
                   ::Pùvod kand¾i:: Z které zemì pùvodnì pochází japonské písmo? {=Èína}
              +
                   ::Pùvod kand¾i:: Z které zemì pùvodnì pochází japonské písmo? {=Èína}
               
                    ::Díkùvzdání:: Americký Den díkùvzdání se slaví {~druhý ~tøetí =ètvrtý} ètvrtek v listopadu.
              -

              Jestli¾e otázka není pojmenována, pou¾ije se jako jméno celé její znìní.

              +

              Jestli¾e otázka není pojmenována, pou¾ije se jako jméno celé její znìní.

              -

              Komentáø
              +

              Komentáø
              Komentáø lze pøipojit ke ka¾dé odpovìdi; pøipojuje se za odpovìï a uvozuje se -køí¾kem (#).

              +køí¾kem (#).

              -
                   Která z tìchto mo¾ností je správná?{ 
              +
                   Která z tìchto mo¾ností je správná?{ 
                    ~chybná odpovìï#komentáø k chybné odpovìdi
                    ~dal¹í chybná odpovìï#komentáø k této chybné odpovìdi
                    =správná odpovìï#komentáø ke správné odpovìdi}
              @@ -159,20 +159,20 @@ k
               
                    V památníku na Vítkovì je pohøben T.G.M. {FALSE#Není a nikdy nebyl.}
              -

              U úloh s výbìrem odpovìdí se zobrazí pouze komentáø k té variantì, kterou +

              U úloh s výbìrem odpovìdí se zobrazí pouze komentáø k té variantì, kterou student zvolil. U krátkých odpovìdí se komenáø zobrazí jen v pøípadì, ¾e student odpovìdìl správnì. U úloh typu pravda/nepravda se komentáø zobrazí pouze tehdy, jestli¾e student odpovìdìl chybnì. Proto by se komentáø v posledním uvedeném -pøíkladì zobrazil, jenom kdyby student odpovìdìl "pravda".

              +pøíkladì zobrazil, jenom kdyby student odpovìdìl "pravda".

              -

              Procentní hodnocení odpovìdí
              +

              Procentní hodnocení odpovìdí
              Procentní hodnocení odpovìdí je k dispozici jak pro úlohy s výbìrem odpovìdí, tak pro úlohy s krátkou odpovìdí. Procentní hodnocení se vkládá za vlnovku (u úloh s výbìrem odpovìdí) nebo za rovnítko (u úloh s krátkou odpovìdí), pøièem¾ údaj o procentech je uzavøen mezi dvìma znaky "%" (napø. %50%). Toto nastavení -lze kombinovat s komentáøi k odpovìdím.

              +lze kombinovat s komentáøi k odpovìdím.

              -
                   Slo¾itá otázka.{~chybná odpovìï ~%50%témìø správná odpovìï =zcela správná odpovìï}
              +
                   Slo¾itá otázka.{~chybná odpovìï ~%50%témìø správná odpovìï =zcela správná odpovìï}
                         
                    ::Je¾í¹ovo mìsto::Je¾í¹ Kristus byl z {
                    ~Jeruzaléma#Jeruzalém je sice významné mìsto, ale odpovìï zní jinak.
              @@ -186,36 +186,36 @@ lze kombinovat s koment
                    =%25%Betléma#Zde se narodil, ale nevyrùstal.
               
              -

              Pov¹imnìte si, ¾e poslední dva uvedené pøíklady obsahují tuté¾ otázku – -poprvé jako úlohu s výbìrem odpovìdí, podruhé jako úlohu s krátkou odpovìdí.

              +

              Pov¹imnìte si, ¾e poslední dva uvedené pøíklady obsahují tuté¾ otázku – +poprvé jako úlohu s výbìrem odpovìdí, podruhé jako úlohu s krátkou odpovìdí.

              -

              Systém umo¾òuje zadat u variant odpovìdi i jiné procentní hodnoty, ne¾ které +

              Systém umo¾òuje zadat u variant odpovìdi i jiné procentní hodnoty, ne¾ které nabízí u¾ivatelské rozhraní Moodlu. S takovýmito hodnotami zachází modul Test správnì, a správnì se také budou zobrazovat studentùm pøi øe¹ení testu. Nebudou se v¹ak zobrazovat správnì uèiteli, pokud bude úlohu upravovat prostøednictvím u¾ivatelského rozhraní (Úprava úlohy v modulu Test). Rozbalovací menu toti¾ nabízí k vlo¾ení pouze nìkolik pevných hodnot, a pokud poèet procent pøesnì neodpovídá ani jedné z nich, nezobrazí se správnì – na jeho -místo bude dosazena nìkterá z pøednastavených hodnot.

              +místo bude dosazena nìkterá z pøednastavených hodnot.

              -

              Více správných odpovìdí
              +

              Více správných odpovìdí
              Tato volba se pou¾ívá u úloh s výbìrem odpovìdí tehdy, je-li správná více ne¾ jedna mo¾nost a k získání plného poètu bodù je nutno zvolit v¹echny správné varianty. Volba se aktivuje, jestli¾e ka¾dé ze správných variant pøiøadíte -dílèí procentní hodnocení a za ¾ádnou veriantu neudìlíte plných 100 %.

              +dílèí procentní hodnocení a za ¾ádnou veriantu neudìlíte plných 100 %.

              -
                   Kdo byl pohøben v památníku na Vítkovì? {
              +
                   Kdo byl pohøben v památníku na Vítkovì? {
               	~Nikdo
               	~%50%Klement Gottwald
               	~%50%Pøedstavitelé komunistického re¾imu
               	~T.G.M. }
              -

              Pov¹imnìte si, ¾e ¾ádná odpovìï není uvozena rovnítkem. Souèet bodù by se mìl +

              Pov¹imnìte si, ¾e ¾ádná odpovìï není uvozena rovnítkem. Souèet bodù by se mìl rovnat pøesnì 100 %, jinak Moodle nahlásí chybu. Aby student automaticky nezískal 100 % jen proto, ¾e si pro¹el v¹echny odpovìdi, je dobré nastavit -ke ¹patným odpovìdím záporné procentní hodnoty.

              +ke ¹patným odpovìdím záporné procentní hodnoty.

              -
                   Kdo byl pohøben v památníku na Vítkovì? {
              +
                   Kdo byl pohøben v památníku na Vítkovì? {
                         ~%-50%Nikdo
                         ~%50%Klement Gottwald
                         ~%50%Pøedstavitelé komunistického re¾imu
              @@ -249,23 +249,23 @@ Nap
               

              Pøi zpracování otázky se zpìtné lomítko odstraní a neulo¾í se do textu úlohy.

              -

              Dal¹í nastavení
              -Dal¹í nastavení lze mìnit úpravou importního filtru gift/format.php.

              +

              Dal¹í nastavení
              +Dal¹í nastavení lze mìnit úpravou importního filtru gift/format.php.

              -

              Napøíklad u krátkých odpovìdí mù¾ete nastavit rozli¹ování malých -a velkých písmen zmìnou "0" na "1" v následujícím øádku:
              +

              Napøíklad u krátkých odpovìdí mù¾ete nastavit rozli¹ování malých +a velkých písmen zmìnou "0" na "1" v následujícím øádku:
              -$question->usecase = 0; // Ignore case

              +$question->usecase = 0; // Ignore case

              -

              +

              PODÌKOVÁNÍ

              -

              Formát GIFT a filtr pro jeho pøevod do Moodlu byl vytvoøen díky spolupráci +

              Formát GIFT a filtr pro jeho pøevod do Moodlu byl vytvoøen díky spolupráci øady moodlovských nad¹encù. Jeho základem je formát "vynechané slovo", na jeho¾ tvorbì se podíleli Martin Dougiamas, Thomas Robb a dal¹í. GIFT vytvoøil v prosinci 2003 Paul Tsuchido Shew a zakomponoval do nìj i pøipomínky ostatních, které se týkaly hlavnì rozsahu mo¾ností formátu. Jméno GIFT vzniklo jako zkratka pro "General Import Format Technology"; to by ov¹em byl pøíli¹ dlouhý název pro -tak jednoduchý filtr, proto se mu øíká prostì GIFT.

              +tak jednoduchý filtr, proto se mu øíká prostì GIFT.

              -

              Dokumentaci k formátu GIFT vypracoval Paul Tsuchido Shew, -http://ac.shew.jp (poslední aktualizace 27. února 2004).

              \ No newline at end of file +

              Dokumentaci k formátu GIFT vypracoval Paul Tsuchido Shew, +http://ac.shew.jp (poslední aktualizace 27. února 2004).

              \ No newline at end of file diff --git a/lang/cs/help/quiz/formatmissingword.html b/lang/cs/help/quiz/formatmissingword.html index fb180b11ec2..0e5f8c9799c 100755 --- a/lang/cs/help/quiz/formatmissingword.html +++ b/lang/cs/help/quiz/formatmissingword.html @@ -1,3 +1,3 @@ -

              Import souborù ve formátu "Vynechané slovo"

              +

              Import souborù ve formátu "Vynechané slovo"

              Dokumentace zatím není k dispozici.

              \ No newline at end of file diff --git a/lang/cs/help/quiz/grademethod.html b/lang/cs/help/quiz/grademethod.html index 83f07a3e15b..77db250b78c 100644 --- a/lang/cs/help/quiz/grademethod.html +++ b/lang/cs/help/quiz/grademethod.html @@ -1,28 +1,28 @@ -

              Metoda bodování

              +

              Metoda bodování

              -

              Jestli¾e studentovi povolíte pøi testu více pokusù, mù¾ete jeho koneèné -hodnocení v testu vypoèítat nìkolika zpùsoby.

              +

              Jestli¾e studentovi povolíte pøi testu více pokusù, mù¾ete jeho koneèné +hodnocení v testu vypoèítat nìkolika zpùsoby.

              -

              Nejvy¹¹í poèet bodù

              -

                -

                Jako koneèné hodnocení se pou¾ije výsledek pokusu, ve kterém student dosáhl -nejvy¹¹ího poètu bodù.

                -
              +

              Nejvy¹¹í poèet bodù

              +

                +

                Jako koneèné hodnocení se pou¾ije výsledek pokusu, ve kterém student dosáhl +nejvy¹¹ího poètu bodù.

                +
              -

              Prùmìrný poèet bodù

              -

                -

                Jako koneèné hodnocení se pou¾ije prùmìrný poèet bodù vypoètený ze v¹ech -pokusù.

                -
              +

              Prùmìrný poèet bodù

              +

                +

                Jako koneèné hodnocení se pou¾ije prùmìrný poèet bodù vypoètený ze v¹ech +pokusù.

                +
              -

              První pokus

              -

                -

                Jako koneèné hodnocení se pou¾ije poèet bodù, kterého student dosáhl pøi -prvním pokusu (ostatní pokusy budou ignorovány).

                -
              +

              První pokus

              +

                +

                Jako koneèné hodnocení se pou¾ije poèet bodù, kterého student dosáhl pøi +prvním pokusu (ostatní pokusy budou ignorovány).

                +
              -

              Poslední pokus

              -
                -

                Jako koneèné hodnocení se pou¾ije poèet bodù, kterého student dosáhl pøi -posledním pokusu.

                -
              +

              Poslední pokus

              +

                +

                Jako koneèné hodnocení se pou¾ije poèet bodù, kterého student dosáhl pøi +posledním pokusu.

                +
              diff --git a/lang/cs/help/quiz/import.html b/lang/cs/help/quiz/import.html index af1c461365c..245d2d6c577 100644 --- a/lang/cs/help/quiz/import.html +++ b/lang/cs/help/quiz/import.html @@ -1,19 +1,19 @@ -

              Importování nových úloh

              -

              Tato funkce umo¾òuje importování úloh z externích textových souborù.

              -

              Moodle podporuje nìkolik formátù:

              +

              Importování nových úloh

              +

              Tato funkce umo¾òuje importování úloh z externích textových souborù.

              +

              Moodle podporuje nìkolik formátù:

              -

              Formát GIFT

              -
                -

                GIFT je nejkomplexnìj¹í dostupný formát pro importování testových otázek +

                Formát GIFT

                +
                  +

                  GIFT je nejkomplexnìj¹í dostupný formát pro importování testových otázek z textového souboru do Moodlu. Byl navr¾en pro snadný textový zápis testových otázek. Podporuje rùzné typy úloh: úlohy s výbìrem odpovìdí, s krátkou odpovìdí, s odpovìdí pravda/nepravda, numerické úlohy, pøiøazování, a také vlo¾ení _______ pro formát "vynechané slovo". V jednom textovém souboru lze pou¾ít více typù úloh. Formát GIFT dále umo¾òuje zadávat jméno otázky, komentáø k odpovìdím a jejich hodnocení v procentech; pro interní potøebu lze text také -opatøovat poznámkami, které se v testu nezobrazí. Zde je nìkolik pøíkladù:

                  +opatøovat poznámkami, které se v testu nezobrazí. Zde je nìkolik pøíkladù:

                  -
                  Kdo je pohøben v památníku na Vítkovì?{~T.G.M. ~Klement Gottwald =nikdo}
                  +
                  Kdo je pohøben v památníku na Vítkovì?{~T.G.M. ~Klement Gottwald =nikdo}
                         
                   V památníku na Vítkovì byl {~otráven =pohøben ~oddán} Klement Gottwald.
                   
                  @@ -22,75 +22,75 @@ V pam
                   Kdo je pohøben v památníku na Vítkovì?{=nyní ji¾ nikdo =nikdo}
                   
                   Kdy se narodil Klement Gottwald?{#1896}
                  -
                  -

                  Více -o formátu "GIFT"

                +
              +

              Více +o formátu "GIFT"

              -

              Formát Aiken

              -
                -

                Formát Aiken umo¾òuje snadnou tvorbu úloh s výbìrem odpovìdí. Pou¾ívá -jednoduchou syntaxi srozumitelnou i pro èlovìka. Napø:

                -
                Co je cílem první pomoci?
                +

                Formát Aiken

                +
                  +

                  Formát Aiken umo¾òuje snadnou tvorbu úloh s výbìrem odpovìdí. Pou¾ívá +jednoduchou syntaxi srozumitelnou i pro èlovìka. Napø:

                  +
                  Co je cílem první pomoci?
                   A. Zachránit ¾ivot, zabránit dal¹ímu zranìní
                   B. Poskytnout lékaøské o¹etøení zranìnému
                   C. Zabránit dal¹ímu zranìní
                   D. Pomoci obìtem v nouzi
                  -ANSWER: A
                  -

                  -Více o formátu "AIKEN"

                +ODPOVÌÏ: A
                +

                +Více o formátu "AIKEN"

              -

              Vynechané slovo

              -
                -

                Tento formát podporuje pouze úlohy s výbìrem odpovìdí. Chybné varianty -odpovìdi se uvozují vlnovkou (~), správná odpovìï rovnítkem (=). Napø.:

                -
                Ji¾ v raném vìku, kdy zaèínáme zkoumat své tìlo, se z nás +

                Vynechané slovo

                +
                  +

                  Tento formát podporuje pouze úlohy s výbìrem odpovìdí. Chybné varianty +odpovìdi se uvozují vlnovkou (~), správná odpovìï rovnítkem (=). Napø.:

                  +
                  Ji¾ v raném vìku, kdy zaèínáme zkoumat své tìlo, se z nás stávají studenti {=anatomie a fyziologie ~mechaniky ~teologie ~botaniky}, -a studenty v jistém smyslu zùstáváme a¾ do konce ¾ivota.
                  -

                  -Více o formátu -"Vynechané slovo"

                +a studenty v jistém smyslu zùstáváme a¾ do konce ¾ivota.
                +

                +Více o formátu +"Vynechané slovo"

              -

              AON

              -
                -

                Tento formát se od pøedchozího li¹í pouze tím, ¾e po provedení importu se -v¹echny úlohy s krátkou odpovìdí po ètveøicích pøevedou na pøiøazovací úlohy.

                -

                Kromì toho se u úloh s výbìrem odpovìdí bìhem vkládání náhodnì zmìní poøadí -odpovìdí.

                -

                Formát je pojmenován podle organizace, která sponzorovala vývoj testovacích -nástrojù.

              +

              AON

              +
                +

                Tento formát se od pøedchozího li¹í pouze tím, ¾e po provedení importu se +v¹echny úlohy s krátkou odpovìdí po ètveøicích pøevedou na pøiøazovací úlohy.

                +

                Kromì toho se u úloh s výbìrem odpovìdí bìhem vkládání náhodnì zmìní poøadí +odpovìdí.

                +

                Formát je pojmenován podle organizace, která sponzorovala vývoj testovacích +nástrojù.

              -

              Blackboard

              -
                -

                Importovat lze i úlohy z ezportního formátu systému Blackboard. Tento formát -vyu¾ívá funkcí PHP urèených pro práci s jazykem XML.

                -

                -Více o -formátu "Blackboard"

              +

              Blackboard

              +
                +

                Importovat lze i úlohy z ezportního formátu systému Blackboard. Tento formát +vyu¾ívá funkcí PHP urèených pro práci s jazykem XML.

                +

                +Více o +formátu "Blackboard"

              -

              Course Test Manager

              -
                -

                Do Moodlu lze importovat úlohy z databáze testovacích otázek systému Course +

                Course Test Manager

                +
                  +

                  Do Moodlu lze importovat úlohy z databáze testovacích otázek systému Course Test Manager (CTM). Pro pøístup k testovacím otázkám (ulo¾eným v databázi Microsoft Access) se pou¾ívají rùzné postupy v závislosti na tom, zda je Moodle -provozován v operaèním systému Windows nebo Linux.

                  -

                  Ve Windows mù¾ete importovat databázi formátu Microsoft Access bì¾ným -zpùsobem.

                  -

                  V pøípadì Linuxu potøebujete poèítaè s Windows umístìný na stejné síti. +provozován v operaèním systému Windows nebo Linux.

                  +

                  Ve Windows mù¾ete importovat databázi formátu Microsoft Access bì¾ným +zpùsobem.

                  +

                  V pøípadì Linuxu potøebujete poèítaè s Windows umístìný na stejné síti. Na nìj zkopírujte databázi CTM a spus»te ODBC Socket Server, který pro pøevod -dat do Moodlu na serveru Linux pou¾ije jazyka XML.

                  -

                  Pøed pou¾itím tohoto importního filtru si prosím pøeètìte podrobnìj¹í -nápovìdu.

                  -

                  -Více o formátu "CTM"

                +dat do Moodlu na serveru Linux pou¾ije jazyka XML.

                +

                Pøed pou¾itím tohoto importního filtru si prosím pøeètìte podrobnìj¹í +nápovìdu.

                +

                +Více o formátu "CTM"

              -

              U¾ivatelský formát

              -
                -

                Pokud máte vlastní formát, který potøebujete importovat, upravte podle potøeby +

                U¾ivatelský formát

                +
                  +

                  Pokud máte vlastní formát, který potøebujete importovat, upravte podle potøeby soubor mod/quiz/format/custom.php. -

                  Rozsah nutných zmìn v kódu je opravdu malý – nový kód je potøeba pouze +

                  Rozsah nutných zmìn v kódu je opravdu malý – nový kód je potøeba pouze pro rozpoznání jedné úlohy ve výchozím textu. -

                  -Více o u¾ivatelském formátu

                +

                +Více o u¾ivatelském formátu

              -

              Postupnì budou pøibývat dal¹í formáty, napø. WebCT, IMS QTI a jakékoliv jiné, -kterými pøispìjí u¾ivatelé Moodlu.

              +

              Postupnì budou pøibývat dal¹í formáty, napø. WebCT, IMS QTI a jakékoliv jiné, +kterými pøispìjí u¾ivatelé Moodlu.

              diff --git a/lang/cs/help/quiz/index.html b/lang/cs/help/quiz/index.html index dafe3fcd56d..b4757e14444 100755 --- a/lang/cs/help/quiz/index.html +++ b/lang/cs/help/quiz/index.html @@ -1,31 +1,31 @@ -P>Testy

              - +

              Testy

              + \ No newline at end of file diff --git a/lang/cs/help/quiz/match.html b/lang/cs/help/quiz/match.html index 0652eaae01c..36b1dca4f6c 100644 --- a/lang/cs/help/quiz/match.html +++ b/lang/cs/help/quiz/match.html @@ -1,9 +1,9 @@ -

              Pøiøazování +

              Pøiøazování -

              Úloha mù¾e obsahovat krátký úvodní text, poté je studentovi pøedlo¾eno -nìkolik otázek a seznam mo¾ných odpovìdí.

              +

              Úloha mù¾e obsahovat krátký úvodní text, poté je studentovi pøedlo¾eno +nìkolik otázek a seznam mo¾ných odpovìdí.

              -

              Ke ka¾dé otázce musí student pøiøadit správnou odpovìï (existuje v¾dy jen -jedna).

              +

              Ke ka¾dé otázce musí student pøiøadit správnou odpovìï (existuje v¾dy jen +jedna).

              -

              V¹echny otázky mají pøi výpoètu celkového skóre za úlohu stejnou váhu.

              \ No newline at end of file +

              V¹echny otázky mají pøi výpoètu celkového skóre za úlohu stejnou váhu.

              \ No newline at end of file diff --git a/lang/cs/help/quiz/maxgrade.html b/lang/cs/help/quiz/maxgrade.html index 67b83b1abc8..123d8b3ee1b 100644 --- a/lang/cs/help/quiz/maxgrade.html +++ b/lang/cs/help/quiz/maxgrade.html @@ -1,9 +1,9 @@ -

              Maximální poèet bodù za test

              +

              Maximální poèet bodù za test

              -

              Maximální poèet bodù za celý test je hodnota, vùèi které budou pøepoèítány body -získané v testu.

              +

              Maximální poèet bodù za celý test je hodnota, vùèi které budou pøepoèítány body +získané v testu.

              -

              Pøíklad: Maximální poèet bodù nastavíte na 20, proto¾e test má hodnotu +

              Pøíklad: Maximální poèet bodù nastavíte na 20, proto¾e test má hodnotu 20 % z celého kurzu. Máte-li v testu 10 otázek s celkovou hodnotou 50 bodù, body získané na této padesátibodové ¹kále budou pøepoèteny "dolù" v pomìru -k maximálnímu poètu 20 bodù za test.

              +k maximálnímu poètu 20 bodù za test.

              diff --git a/lang/cs/help/quiz/mods.html b/lang/cs/help/quiz/mods.html index 4652011e519..07058338c5d 100644 --- a/lang/cs/help/quiz/mods.html +++ b/lang/cs/help/quiz/mods.html @@ -1,6 +1,6 @@ -

               Testy

              -
                -

                Tento modul umo¾òuje vytváøet a zadávat testy. Testy se mohou skládat +

                 Testy

                +
                  +

                  Tento modul umo¾òuje vytváøet a zadávat testy. Testy se mohou skládat z otázek nìkolika typù: výbìr z více mo¾ností, pravda/nepravda, krátká odpovìï, numerická úloha, pøiøazování, popis, doplòovací úloha (cloze test). Otázky jsou ukládány do databáze, kde je lze podle potøeby seskupovat do @@ -8,5 +8,5 @@ kategori lze povolit pro øe¹ení testu více pokusù. Ka¾dý pokus je automaticky obodován a podle nastavení mù¾e být studentùm zobrazena správná odpovìï, pøípadnì podrobnìj¹í komentáø. Souèástí modulu jsou také nástroje pro hodnocení v rámci -celého kurzu.

                  -
                +celého kurzu.

                +
              diff --git a/lang/cs/help/quiz/multianswer.html b/lang/cs/help/quiz/multianswer.html index f70d521957d..9e1e0df0135 100644 --- a/lang/cs/help/quiz/multianswer.html +++ b/lang/cs/help/quiz/multianswer.html @@ -11,9 +11,9 @@ tak pomocí vestavìného editoru, nebo z pøedem pøipravených souborù.

              Pøíklad zadání úlohy:

              -
              +
              -
              -
              -

              Dieses Beispiel wird für Teilnehmer/Innen so aussehen:
              -

              -
              - - - - - - -
              - - - - - - - -
              -

              3

              -

              8 Punkte

              -
              -
              -

              Dieser Fragentext enthält eine Antwort genau hier
              -  - -und direkt danach müssen Sie mit dieser Frage mit kurzer Antwort -umgehen und zum -Schluß eine Dezimalzahl -.
              -
              -Beachten Sie, dass Adressen wie www.moodle.org und smileys :-) gewohnt funktionieren:
              -a) Wie gut ist es? - -
              -b) Welche Bewertung würde Sie abgeben ?
              -
              -Viel Glück!

              -
              -
              -
              - + + + + + + +

              Eingebaute Antworten (Cloze)

              +

              Dieser sehr flexible Fragentyp ist identisch mit einem beliebten +Format, das als Cloze Format bekannt ist.

              +

              Die Fragen bestehen aus einer Textpassage (im Moodle Format) in der +verschiedene Antworten verschiedenster Fragetypen (multiple-choice, +numerische Antworten und Fragen mit kurzen Antworten) eingebaut +sind.  +

              +

              Es gibt zur Zeit keine graphische Oberfläche, um diese Fragen +zu erstellen - Sie müssen den Fragentyp mit Hilfe des Textfeldes +erstellen oder Sie importieren Fragen aus externen Dateien.

              +

              Hier ist ein Beispiel eines Eingabetextes, der solch ein Frage +spezifiziert: +

              +
              +
              +
              +

              Dieses Beispiel wird für Schüler so aussehen:
              +

              +
              + + + + + + +
              + + + + + + + +
              +

              3

              +

              8 Marks

              +
              +
              +

              Dieser Fragentext enthält eine Antwort genau hier
              +  + +und direkt danach müssen Sie mit dieser Frage mit kurzer Antwort +umgehen und zum +Schluß eine Dezimalzahl +.
              +
              +Beachten Sie, dass Adressen wie www.moodle.org und smileys :-) gewohnt funktionieren:
              +a) Wie gut ist es? + +
              +b) Welche Bewertung würde Sie abgeben ?
              +
              +Viel Glück!

              +
              +
              +
              +
              + + diff --git a/lang/de/help/quiz/multichoice.html b/lang/de/help/quiz/multichoice.html index ede6da7871d..b79a654c7af 100644 --- a/lang/de/help/quiz/multichoice.html +++ b/lang/de/help/quiz/multichoice.html @@ -1,20 +1,28 @@ -

              Multiple Choice Fragen

              -

              Um auf eine Frage (die ein Bild enthalten kann) einzugehen, -wählt der Teilnehmer/die Teilnehmerin aus verschiedenen Antworten. Es gibt zwei -Arten von multiple-choice Fragen  - eine richtige Antwort und mehrere -richtige Antworten -

              -

              Bei Fragen mit einer Antwort darf eine und nur eine Antwort -ausgewählt werden. Normalerweise sollten alle Bewertungen für -solch eine Frage positiv sein. -

              -

              Bei Fragen mit mehreren Antworten darf eine und mehr Antworten -ausgewählt werden - jede Antwort könnte eine positive oder -negative Bewertung haben, so dass  die Auswahl ALLER -Möglichkeiten nicht unbedingt in einer guten Bewertung endet. Wenn -die Bewertung negativ ist, wird diese Frage mit 0 gewertet. -

              -

              Zu guter letzt sollte jede Antwort ein Feedback enthalten - dieses -Feedback wird dem Teilnehmer/der Teilnehmerin neben jeder Antwort von ihm angezeigt -(wenn der Test selber so eingestellt ist, dass er ein Feedback anzeigt) -

              \ No newline at end of file + + + + + + +

              Multiple Choice Fragen

              +

              Um auf eine Frage (die ein Bild enthalten kann) einzugehen, +wählt der Teilnehmer aus verschiedenen Antworten. Es gibt zwei +Arten von multiple-choice Fragen  - eine Antwort und mehrere +Antworten +

              +

              Bei Fragen mit einer Antwort darf eine und nur eine Antwort +ausgewählt werden. Normalerweise sollten alle Bewertungen für +solch eine Frage positiv sein. +

              +

              Bei Fragen mit mehreren Antworten darf eine und mehr Antworten +ausgewählt werden - jede Antwort könnte eine positive oder +negative Bewertung haben, so dass  die Auswahl ALLER +Möglichkeiten nicht unbedingt in einer guten Bewertung endet. Wenn +die totale Bewertung negativ ist, wird diese Frage mit 0 gewertet. +

              +

              Zu guter letzt sollte jede Antwort ein Feedback enthalten - dieses +Feedback wird dem Teilnehmer neben jeder Antwort von ihm angezeigt +(wenn der Test selber so eingestellt ist, dass er ein Feedback anzeigt) +

              + + diff --git a/lang/de/help/quiz/numerical.html b/lang/de/help/quiz/numerical.html index dfe5dc39a39..7a4d1c8964b 100644 --- a/lang/de/help/quiz/numerical.html +++ b/lang/de/help/quiz/numerical.html @@ -1,13 +1,21 @@ -

              Numerische Fragen

              -

              Aus der Teilnehmer/Innenperspektive sieht eine numerische -Frage aus wie eine Frage mit einer kurzen Antwort.

              -

              Der Unterschied ist, dass numerische Antworten die -Möglichkeit eines akzeptierten Fehlers bieten. Dies -ermöglicht ein weites Antwortenspektrum festzusetzen.

              -

              Wenn zum Beispiel die Antwort 30 mit einem akzeptierten Fehler -von 5 ist, dann wird jede Zahl zwischen 25 und 35 als richtig -akzeptiert.

              -

              Numerische Fragen können auch nicht-numerische Antworten -haben, bei denen auf die Groß- und Kleinschreibung geachtet -wird. Dies ist hilfreich, wann immer die Antwort auf eine -numerische Frage so etwas wie N/A, +inf, -inf, NaN etc. ist.

              + + + + + + +

              Numerische Fragen
              +

              +

              Aus der Schülerperspektive sieht eine numerische Frage aus wie +eine Frage mit einer kurzen Antwort.

              +

              Der Unterschied ist, dass numerische Antworten die Möglichkeit +eines akzeptierten Fehlers bieten. Dies ermöglicht ein weites +Antwortenspektrum festzusetzen.

              +

              Wenn zum Beispiel die Antwort 30 mit einem akzeptierten Fehler von 5 +ist, dann wird jede Zahl zwischen 25 und 35 als richtig akzeptiert.

              +

              Numerische Fragen können auch nicht-numerische Antworten haben, +bei denen auf die Groß- und Kleinschreibung geachtet wird. Dies +ist hilfreich, wann immer die Antwort auf eine numerische Frage so +etwas wie N/A, +inf, -inf, NaN etc. ist.

              + + diff --git a/lang/de/help/quiz/questiontypes.html b/lang/de/help/quiz/questiontypes.html index 14822ae623a..941b4bda4e9 100644 --- a/lang/de/help/quiz/questiontypes.html +++ b/lang/de/help/quiz/questiontypes.html @@ -1,96 +1,115 @@ -

              Eine neue Frage erstellen

              -

              Sie können eine Mischung verschiedenster Fragetypen einer -Kategorie zuordnen:

              -

              Multiple Choice

              -
              -

              Um auf eine Frage (die ein Bild enthalten kann) einzugehen, -wählt der/die Teilnehmer/in aus verschiedenen Antworten. Es gibt -zwei Arten von multiple-choice Fragen  - eine Antwort und mehrere -Antworten

              -

              Mehr -Informationen über Multiple Choice Fragen

              -
              -

              Fragen mit kurzen Antworten

              -
              -

              Um auf eine Frage (die ein Bild enthalten kann) einzugehen, -tippt der/die Teilnehmer/in ein Wort oder kurzen Satz ein. Es kann -mehrere möglicherweise richtige Antworten geben mit -verschiedenen Bewertungen. Bei Antworten muss oder muss nicht auf -die Groß- und Kleinschreibung geachtet werden. 

              -

              Mehr -Informationen über Fragen mit kurzen Antworten

              -
              -

              Numerische Fragen
              -
                       Aus der Teilnehmer/innenperspektive sieht eine -numerische Frage aus wie eine Frage mit einer kurzen Antwort. Der -Unterschied ist, dass numerische Antworten die                  -Möglichkeit eines akzeptierten Fehlers bieten. Dies -ermöglicht ein weites Antwortenspektrum festzusetzen.

              - -

              Wahr/Falsch

              -
              -

              Um auf eine Frage (die ein Bild enthalten kann) einzugehen, -wählt der Teilnehmer/die Teilnehmerin aus zwei -Möglichkeiten: Wahr oder Falsch.

              -

              Mehr Informationen -über Wahr/Falsch Fragen

              -
              -

              Zuordnungsfragen

              -
              -

              Eine Liste von Fragen ist neben einer Liste von Antworten -angeordnet.Der Teilnehmer/die Teilnehmerin muss die richtige -Antwort zu jeder Frage zuordnen.

              -

              Mehr Informationen -über Zuordnungsfragen

              -
              -

              Eingebaute Antworten (Cloze)

              -
              -

              Die Fragen bestehen aus einer Textpassage (im Moodle Format) -in der verschiedene Antworten verschiedenster Fragetypen -(multiple-choice, numerische Antworten und Fragen mit kurzen -Antworten) eingebaut sind.

              -

              Mehr -Informationen über Eingebaute Antworten Fragen

              -
              -

              Zufällige Zuordnungsfragen mit kurzen -Antworten

              -
              -

              Aus der Sicht des/der Teilnehmers/in sieht diese Frage wie eine -Zuordnungsfrage aus. Der Unterschied ist, dass die Unterfragen -zufällig aus den Fragen mit kurzen Antworten in der -aktuellen Kategorie gezogen werden.

              -

              Mehr -Informationen über Zuordnungsfragen mit kurzen -Antworten

              -
              -

              Zufällig

              -
              -

              Eine zufällige Frage in einem Test wird durch eine -zufällig ausgesuchte Frage aus der gewählten Kategorie -ersetzt.

              -

              Mehr Informationen -über zufällige Fragen

              -
              -

              Beschreibung
              -
                      Dieser Fragentyp ist nicht wirklich eine Frage. -Alles was er macht, ist einen Text (und vielleicht Graphiken) -zu drucken ohne irgendwelche Antworten zu                 -erfordern. Dieser Typ kann zum Beispiel dazu benutzt werden, -einen beschreibenden Text zu drucken, der sich auf eine folgende -Fragengruppe bezieht.

              - + + + + + + +

              Eine neue Frage erstellen

              +

              Sie können eine Mischung verschiedenster Fragetypen einer +Kategorie zuordnen:

              +

              Multiple Choice

              +
                +

                Um auf eine Frage (die ein Bild enthalten kann) einzugehen, +wählt der Teilnehmer aus verschiedenen Antworten. Es gibt zwei +Arten von multiple-choice Fragen  - eine Antwort und mehrere +Antworten +

                +

                Mehr +Informationen über Multiple Choice Fragen

                +
              +

              Fragen mit kurzen Antworten
              +

              +
                +

                Um auf eine Frage (die ein Bild enthalten kann) einzugehen, tippt +der Teilnehmer ein Wort oder kurzen Satz ein. Es kann mehrere +möglicherweise richtige Antworten geben mit verschiedenen +Bewertungen. Bei Antworten muss oder muss nicht auf die Groß- und +Kleinschreibung geachtet werden. 
                +

                +

                Mehr +Informationen über Fragen mit kurzen Antworten
                +

                +
              +
                +
              +

              Numerische Fragen
              +
              +
                       Aus der +Schülerperspektive sieht eine numerische Frage aus wie +eine Frage mit einer kurzen Antwort. Der Unterschied ist, dass +numerische Antworten die         +         Möglichkeit +eines akzeptierten Fehlers bieten. Dies ermöglicht ein weites +Antwortenspektrum festzusetzen.

              + +

              Wahr/Falsch

              + +

              Zuordnungsfragen

              + +

              Eingebaute Antworten (Cloze)

              +
                +

                Die Fragen bestehen aus einer Textpassage (im Moodle Format) in +der +verschiedene Antworten verschiedenster Fragetypen (multiple-choice, +numerische Antworten und Fragen mit kurzen Antworten) eingebaut +sind. +

                +

                Mehr +Informationen über Eingebaute Antworten Fragen

                +
              +

              Zufällige Zuordnungsfragen mit kurzen Antworten

              + +

              Zufällig

              + +
                +
              +

              Beschreibung
              +
              +
                      Dieser Fragentyp ist nicht +wirklich eine Frage. Alles was er macht, ist einigen Text (und +vielleicht Graphiken) zu drucken ohne irgendwelche +Antworten zu             +    erfordern. Dieser Typ kann zum Beispiel dazu benutzt +werden, einen beschreibenden Text zu +drucken, der sich auf eine folgende Fragengruppe bezieht. +

              + + + diff --git a/lang/de/help/quiz/random.html b/lang/de/help/quiz/random.html index 4c284ee0649..c67b0d02e1e 100644 --- a/lang/de/help/quiz/random.html +++ b/lang/de/help/quiz/random.html @@ -1,15 +1,21 @@ -

              Zufällige Fragen

              -

              Zufällige Fragen sind ein spezieller Fragentyp.

              -

              Wenn Sie eine zufällige Frage in einem Test einsetzen, -wird in jedem Versuch eine Frage zufällig aus der gesamten -Kategorie ausgewählt.

              -

              Die maximale Bewertung wird immer bestehen, wenn Sie sie als -Bewertung für zufällige Fragen ausgewählt -haben.

              -

              Wenn Sie einen Test mit, sagen wir, 10 zufälligen Fragen -erstellen, dann wird möglicherweise jeder -Teilnehmer/Teilnehmerinnen ein komplett anderes Set von 10 Fragen -bei jedem Testversuch vorfinden.

              -

              Beachten Sie, dass Sie zufällige und nicht-zufällige -Fragen mischen können, wenn Sie sicherstellen möchten, -dass bestimmte Fragen immer enthalten sind.

              + + + + + + +

              Zufällige Fragen

              +

              Zufällige Fragen sind ein spezieller Fragentyp.

              +

              Wenn Sie eine zufällige Frage in einem Test einsetzen, wird in +jedem Versuch eine Frage zufällig aus der gesamten Kategorie +ausgewählt.

              +

              Die maximale Bewertung wird immer bestehen, wenn Sie sie als +Bewertung für zufällige Fragen ausgewählt haben.

              +

              Wenn Sie einen Test mit, sagen wir, 10 zufälligen Fragen +erstellen, dann wird möglicherweise jeder Schüler ein +komplett anderes Set von 10 Fragen bei jedem Testversuch vorfinden.

              +

              Beachten Sie, dass Sie zufällige und nicht-zufällige +Fragen mischen können, wenn Sie sicherstellen möchten, dass +bestimmte Fragen immer enthalten sind.

              + + diff --git a/lang/de/help/quiz/randomsamatch.html b/lang/de/help/quiz/randomsamatch.html index e97add725d0..662681e7725 100644 --- a/lang/de/help/quiz/randomsamatch.html +++ b/lang/de/help/quiz/randomsamatch.html @@ -1,16 +1,24 @@ -

              Zufällige Zuordnungsfragen mit kurzen -Antworten

              -

              Nach einer optionalen Einführung wird dem Teilnehmer/der Teilnehmerin eine Liste -verschiedener Unterfragen und eine Liste durchgewürfelter -Antworten präsentiert. Für jede Frage gibt es eine korrekte -Antwort.

              -

              Der Teilnehmer/die Teilnehmerin muss eine Antwort zu jeder Unterfrage zuordnen. -

              -

              Jede Unterfrage wird gleich gewichtet, um die Bewertung der gesamten -Frage zu errechnen. -

              -

              Die Fragen und Antworten werden zufällig aus dem Pool der -"Fragen mit kurzen Antworten" der aktuellen Kategorie gezogen. Jeder -Versuch eines Tests wird unterschiedliche Fragen und Antworten -enthalten. -

              \ No newline at end of file + + + + + + +

              Zufällige Zuordnungsfragen mit kurzen +Antworten

              +

              Nach einer optionalen Einführung wird dem Teilnehmer eine Liste +verschiedener Unterfragen und eine Liste durchgewürfelter +Antworten präsentiert. Für jede Frage ginbt es eine korrekte +Antwort.

              +

              Der Teilnehmer muss eine Antwort zu jeder Unterfrage zuordnen. +

              +

              Jede Unterfrage wird gleich gewichtet, um die Bewertung der gesamten +Frage zu errechnen. +

              +

              Die Fragen und Antworten werden zufällig aus dem Pool der +"Fragen mit kurzen Antworten" der aktuellen Kategorie gezogen. Jeder +Versuch eines Tests wird unterschiedliche Fragen und Antworten +enthalten. +

              + + diff --git a/lang/de/help/quiz/repeatattempts.html b/lang/de/help/quiz/repeatattempts.html index 3f7e02b6fb6..b54cc889ba7 100644 --- a/lang/de/help/quiz/repeatattempts.html +++ b/lang/de/help/quiz/repeatattempts.html @@ -1,7 +1,16 @@ -

              Jeder Versuch baut auf dem letzten Versuch auf

              -

              Sind mehrere Versuche erlaubt und bei dieser Einstellung ist Ja gewählt, so enthält -jeder neue Versuch das Ergebnis des vorherigen Versuchs. Dies erlaubt -die Fertigstellung eines Tests mit Hilfe verschiedener Versuche.

              -

              Um einen neuen Test bei jedem Versuch bereit zu stellen, wählen -Sie für diese Einstellung Nein. -

              + + + + + + +

              Jeder Versuch baut auf dem letzten auf

              +

              Sind mehrere Versuche erlaubt und bei dieser Einstellung ist Ja gewählt, so enthält +jeder neue Versuch das Ergebnis des vorherigen Versuchs. Dies erlaubt +die Fertigstellung eines Tests mit Hilfe verschiedener Versuche.

              +

              Um einen neuen Test bei jedem Versuch bereit zu stellen, wählen +Sie für diese Einstellung Nein. +

              + + diff --git a/lang/de/help/quiz/review.html b/lang/de/help/quiz/review.html index 8a729043811..01232d203a7 100644 --- a/lang/de/help/quiz/review.html +++ b/lang/de/help/quiz/review.html @@ -1,5 +1,12 @@ - -

              Ansehen von bereits geschlossenen Tests erlauben

              -

              Wenn Sie diese Möglichkeit aktivieren, sind Teilnehmer/ Teilnehmerinnen in -der Lage ihre letzten Versuche dieses Tests einzusehen.

              -

              Dies ist nur aktiviert, wenn der Test einmal geschlossen ist.

              + + + + + + +

              Ansehen von bereits geschlossenen Tests erlauben

              +

              Wenn Sie diese Möglichkeit aktivieren, sind die Schüler in +der Lage ihre letzten Versuche dieses Tests einzusehen.

              +

              Dies ist nur aktiviert, wenn der Test einmal geschlossen ist.

              + + diff --git a/lang/de/help/quiz/shortanswer.html b/lang/de/help/quiz/shortanswer.html index fad01842e3e..42b18a6f05c 100644 --- a/lang/de/help/quiz/shortanswer.html +++ b/lang/de/help/quiz/shortanswer.html @@ -1,11 +1,20 @@ -

              Fragen mit kurzen Antworten

              -

              Um auf eine Frage (die ein Bild enthalten kann) einzugehen, tippt -der Teilnehmer/die Teilnehmerin ein Wort oder kurzen Satz ein. -

              -

              Es kann mehrere möglicherweise richtige Antworten geben mit -verschiedenen Bewertungen. Wenn die "Groß-/Kleinschreibung" -Option ausgewählt ist, können Sie unterschiedliche -Bewertungen für "Wort" und "wort" erhalten. -

              -

              Die Antworten werden genauestens verglichen, achten Sie also auf -IhrenRechtschreibung!

              + + + + + + +

              Fragen mit kurzen Antworten

              +

              Um auf eine Frage (die ein Bild enthalten kann) einzugehen, tippt +der Teilnehmer ein Wort oder kurzen Satz ein. +

              +

              Es kann mehrere möglicherweise richtige Antworten geben mit +verschiedenen Bewertungen. Wenn die "Groß-/Kleinschreibung" +Option ausgewählt ist, können Sie unterschiedliche +Bewertungen für "Wort" und "wort" erhalten. +

              +

              Die Antworten werden genauestens verglichen, achte Sie also auf +IhreRechtschreibung! 
              +

              + + diff --git a/lang/de/help/quiz/shuffleanswers.html b/lang/de/help/quiz/shuffleanswers.html index faca169c0ce..723bc4bdb2e 100644 --- a/lang/de/help/quiz/shuffleanswers.html +++ b/lang/de/help/quiz/shuffleanswers.html @@ -1,12 +1,20 @@ -

              Antworten mischen

              -

              Wenn Sie diese Option aktivieren, wird die Anordnung der Antworten -bei jeder Frage bei jedem Versuch eines Teilnehmer/einer Teilnehmerin zufällig -verschoben.

              -

              Natürlich bezieht sich dies nur auf Fragen, die mehrere -Antwortmöglichkeiten anzeigen, wie z.B. Multiple-Choice oder -Zuordnungsfragen.

              -

              Die Intention bei dieser Möglichkeit ist einfach das Kopieren -untereinander zu erschweren und den Schwierigkeitsgrad so zu -erhöhen.

              -

              Diese Option ist nicht in Verbindung mit zufälligen Fragen zu -bringen.

              \ No newline at end of file + + + + + + +

              Antworten schieben

              +

              Wenn Sie diese Option aktivieren, wird die Anordnung der Antworten +bei jeder Frage bei jedem Versuch eines Schülers zufällig +verschoben.

              +

              Natürlich bezieht sich dies nur auf Fragen, die mehrere +Antwortmöglichkeiten anzeigen, wie z.B. Multiple-Choice oder +Zuordnungsfragen.

              +

              Die Intention bei dieser Möglichkeit ist einfach das Kopieren +untereinander zu erschweren und den Schwierigkeitsgrad so zu +erhöhen.

              +

              Diese Option ist nicht in Verbindung mit zufälligen Fragen zu +bringen.

              + + diff --git a/lang/de/help/quiz/shufflequestions.html b/lang/de/help/quiz/shufflequestions.html index a52d1524aef..42e12c32cc2 100644 --- a/lang/de/help/quiz/shufflequestions.html +++ b/lang/de/help/quiz/shufflequestions.html @@ -1,7 +1,15 @@ -

              Fragenmischen

              -

              Wenn Sie diese Option aktivieren, wird die Reihenfolge der Fragen -bei jedem Versuch eines Teilnehmer/einer Teilnehmerin zufällig gemischt.

              -

              Dies ist nicht in Verbindung mit zufälligen Fragen zu setzen. -Diese Option ändert nur die angezeigte Reihenfolge der Fragen.

              -

              Die Intention hierbei liegt darin, das Kopieren der Schüler -untereinander zu erschweren.

              \ No newline at end of file + + + + + + +

              Fragen schieben

              +

              Wenn Sie diese Option aktivieren, wird die Reihenfolge der Fragen +bei jedem Versuch eines Schülers zufällig verschoben.

              +

              Dies ist nicht in Verbindung mit zufälligen Fragen zu setzen. +Diese Option ändert nur die angezeigte Reihenfolge der Fragen.

              +

              Die Intention hierbei liegt darin, das Kopieren der Schüler +untereinander zu erschweren.

              + + diff --git a/lang/de/help/quiz/timeopen.html b/lang/de/help/quiz/timeopen.html index d378fa07e51..af37299da47 100644 --- a/lang/de/help/quiz/timeopen.html +++ b/lang/de/help/quiz/timeopen.html @@ -1,7 +1,15 @@ -

              Zeitpunkt der Bearbeitung von Tests

              -

              Sie können Zeiten festlegen, zu denen der Test für -Versuche verfügbar ist. -

              -

              Vor der Öffnungszeit und nach der Schließzeit ist der -Test nicht verfügbar. -

              \ No newline at end of file + + + + + + +

              Tests öffnen und schließen

              +

              Sie können Zeiten festlegen, zu denen der Test für +Versuche verfügbar ist. +

              +

              Vor der Öffnungszeit und nach der Schließzeit ist der +Test nicht verfügbar. +

              + + diff --git a/lang/de/help/quiz/truefalse.html b/lang/de/help/quiz/truefalse.html index 28faaf135c0..711e1c3368b 100644 --- a/lang/de/help/quiz/truefalse.html +++ b/lang/de/help/quiz/truefalse.html @@ -1,10 +1,18 @@ -

              Wahr/Falsch Fragen

              -

              Um auf eine Frage (die ein Bild enthalten kann) einzugehen, -wählt der Teilnehmer/die Teilnehmerin aus zwei Möglichkeiten: Wahr oder Falsch. -

              -

              Wenn das Feedback aktiviert ist, wird dem Teilnehmer/der Teilnehmerin die -entsprechende Feedback Nachricht nach Beantwortung des Tests angezeigt. -Wenn zum Beispiel die richtige Antwort "Falsch" ist, aber es wurde mit -"Wahr" geantwortet (die Frage wurde falsch beantwortet), wird das -"Wahr" Feedback angezeigt. -

              \ No newline at end of file + + + + + + +

              Wahr/Falsch Fragen

              +

              Um auf eine Frage (die ein Bild enthalten kann) einzugehen, +wählt der Teilnahmer aus zwei Möglichkeiten: Wahr oder Falsch. +

              +

              Wenn das Feedback aktiviert ist, wird dem Teilnehmer die +entsprechende Feedback Nachricht nach Beantwortung des Tests angezeigt. +Wenn zum Beispiel die richtige Antwort "Falsch" ist, aber es wurde mit +"Wahr" geantwortet (die Frage wurde falsch beantwortet), wird das +"Wahr" Feedback angezeigt. +

              + + diff --git a/lang/de/help/reading.html b/lang/de/help/reading.html index 1de67bdfc11..c18c89b78ed 100644 --- a/lang/de/help/reading.html +++ b/lang/de/help/reading.html @@ -1,15 +1,10 @@ -

              Lesen der Texte

              -

              Werden Texte schnell gelesen, kommt es häufig ganz leicht -zu Missverständnissen darüber, was der Autor uns zu -sagen versucht.

              -

              Um Missverständnisse zu verhindern, lesen Sie die Worte -sorgfältig und versuchen Sie, die Dinge von Standpunkt des -Autors zu sehen.

              -

              Es kann auch helfen darüber nachzudenken, was uns der -Autor NICHT sagen wollte oder worüber er uns im Zweifel -ließ. Das kann Ihnen helfen, eigene Fragen an den Text zu -entwickeln.

              -

              -

              -

              -

              +

              Lesen

              + +

              Werden Texte schnell gelesen, kommt es sehr oft ganz leicht zu Missverständnissen darüber, was der Autor uns zu sagen versucht.

              + +

              Um Missverständnisse zu verhindern, lesen Sie die Worte sorgfältig und versuchen Sie, die Dinge von Standpunkt des Autors zu sehen.

              + +

              Es kann auch helfen darüber nachzudenken, was uns der Autor NICHT sagen wollte oder worüber er uns im Zweifel ließ. Das kann Ihnen helfen, Fragen in Ihrem eigenen Kopf zu bilden.

              + +

              +

              diff --git a/lang/de/help/resource/index.html b/lang/de/help/resource/index.html index 5d7a0375bd7..7a66572104a 100644 --- a/lang/de/help/resource/index.html +++ b/lang/de/help/resource/index.html @@ -1,10 +1 @@ - -

              Ressourcenmodul

              - \ No newline at end of file +

              Ressourcenmodul

              \ No newline at end of file diff --git a/lang/de/help/resource/mods.html b/lang/de/help/resource/mods.html index 05afc45f277..a6c009c017d 100644 --- a/lang/de/help/resource/mods.html +++ b/lang/de/help/resource/mods.html @@ -1,8 +1 @@ -

               Ressourcen

              -
              -

              Ressourcen sind Inhalte: Information, die der/die Trainer/in im Kurs -zur Verfügung stellen möchte. Es können fertig -vorbereitete Dateien sein, die auf den Kursserver geladen werden, -Seiten, die direkt in Moodle bearbeitet wurden oder auch externe -Webseiten, die aussehen als wären sie Teil des Kurses.

              -
              \ No newline at end of file +

               Ressourcen

                Ressourcen sind Inhalte: Information, die der Lehrer im Kurs zur Verfügung stellen möchte. Es können fertig vorbereitete Dateien sein, die auf den Kursserver geladen werden, Seiten, die direkt in Moodle bearbeitet wurden oder auch externe Webseiten, die aussehen als wären sie Teil des Kurses.

              \ No newline at end of file diff --git a/lang/de/help/resource/program.html b/lang/de/help/resource/program.html index 4e44a71cba9..b8ffe0f16bb 100644 --- a/lang/de/help/resource/program.html +++ b/lang/de/help/resource/program.html @@ -1,16 +1 @@ - -

              Programm Ressourcen

              -

              Eine Programm-Ressource ist eine externe Ressource, die von -Moodle Daten übernehmen kann.

              -

              Die Daten werden per HTTP GET (als Teil der URL) -übergeben und beinhalten:

              -
                -
              • extern_nav: die URL von der aus die Ressource aufgerufen -wurde
              • -
              • extern_usr: den Usernamen des aktuellen Benutzers
              • -
              • extern_nam: den vollen Name des aktuellen Benutzers
              • -
              • extern_tim: die aktulle Zeit
              • -
              • extern_pwd: ein eindeutiges Passwort
              • -
              -

              All dies wird in nächster Zukunft überarbeitet -werden.

              \ No newline at end of file +

              Programm Ressourcen

              Eine Programm-Ressource ist eine externe Ressource, die von Moddle Daten übernehmen kann.

              Die Daten werden per HTTP GET (als Teil der URL) übergeben und beinhalten:

              • extern_nav: die URL von der aus die Ressource aufgerufen wurde
              • extern_usr: den Usernamen des aktuellen Benutzers
              • extern_nam: den vollen Name des aktuellen Benutzers
              • extern_tim: die aktulle Zeit
              • extern_pwd: ein eindeutiges Passwort

              All dies wird in nächster Zukunft überarbeitet werden.

              \ No newline at end of file diff --git a/lang/de/help/resource/resourcetype.html b/lang/de/help/resource/resourcetype.html index 14cff8eafd3..3c49824fd73 100644 --- a/lang/de/help/resource/resourcetype.html +++ b/lang/de/help/resource/resourcetype.html @@ -1,45 +1,2 @@ +

              Arten von Ressourcen

              Ressourcen sind jeder beliebige Inhalt. Im Folgenden sind die verschiedenen Arten von Ressourcen erklärt, die sich eigentlich nur durch die Art, wie die Informationen bereitgestellt werden unterscheiden.

              Reiner Text - die einfachste Art. Man kann die Informationen einfach in dem Formular auf der nächsten Seite eingeben (editieren). Einige Elemente werden automatisch formatiert, so wie man es von Postings in Foren kennt. Weitere Informationen zu auto-formatiertem Text

              HTML Text - für den etwas fortgeschrittenen Anwender. Keinerlei automatische Formatierung, d.h. man muss alles händisch mit Hilfe von HTML-Codes formatieren. Weitere Informationen zu HTML Text

              Referenz - eine wissenschaftliche Referenz auf eine Zeitschrift oder ein Buch

              Bereitgestellte Datei - zeigt jede beliebige Datei, die im Kurs durch Upload bereitgestellt wurde. Siehe auch im Abschnitt "Dateien".

              Internet-Link - Eine URL (Adresse) irgendwo im Internet. Klickt jemand auf diese Ressource, verläßt er den Kurs (Dabei kann man angeben, ob die neue Seite das gesamte Browser-Fenster ausfüllen soll, oder ob sie in einem völlig neuem Fenster angezeigt werden soll.).

              Web-Seite - Wieder eine URL irgendwo im Internet. Wie bereits beim vorhergehenden Typ wird beim Klick auf diese Ressource eine Web-Seite angezeigt. Im Unterschied zur vorhergehenden Art allerdings innerhalb eines Frames, ganz so als ob die Seite teil des Kurses wäre.

              Programm - ein externes Programm, dem man Informationen über den aktuellen Moodle-Benutzer und Kurs übergeben muss. Dies erlaubt es externen Webanwendungen mit Moodle zusammenzuarbeiten.Weitere Informationen zu Programm-Ressourcen

              Wiki-Text - erlaubt mehr Formatierungen als reiner Text, ohne dass man gleich HTML lernen muss. Man gibt einfach reinen Text ein und kann eine große Auswahl an Zeichen benutzen, die eine spezielle Formatierung bewirken. (z.B: *dies ist fett* /dies ist hervorgehoben/) Weitere Informationen zu Wiki-Text

              -

              Arten von Ressourcen

              -

              Ressourcen sind jeder beliebige Inhalt. Im Folgenden sind die -verschiedenen Arten von Ressourcen erklärt, die sich -eigentlich nur durch die Art, wie die Informationen -bereitgestellt werden unterscheiden.

              -

              Reiner Text - die einfachste Art. Man kann die -Informationen einfach in dem Formular auf der nächsten Seite -eingeben (editieren). Einige Elemente werden automatisch -formatiert, so wie man es von Postings in Foren kennt. Weitere Informationen zu -auto-formatiertem Text

              -

              HTML Text - für etwas fortgeschrittene -Anwender/innen. Keinerlei automatische Formatierung, d.h. man muss -alles händisch mit Hilfe von HTML-Codes formatieren. -Weitere Informationen zu HTML -Text

              -

              Referenz - eine wissenschaftliche Referenz auf eine -Zeitschrift oder ein Buch

              -

              Bereitgestellte Datei - zeigt jede beliebige Datei, die -im Kurs durch Upload bereitgestellt wurde. Siehe auch -Abschnitt "Dateien".

              -

              Internet-Link - Eine URL (Adresse) irgendwo im -Internet. Klickt jemand auf diese Ressource, verläßt -er den Kurs (Dabei kann man angeben, ob die neue Seite das -gesamte Browser-Fenster ausfüllen soll, oder ob sie in einem -völlig neuem Fenster angezeigt werden soll.).

              -

              Web-Seite - Wieder eine URL irgendwo im Internet. Wie -bereits beim vorhergehenden Typ wird beim Klick auf diese -Ressource eine Web-Seite angezeigt. Im Unterschied zur -vorhergehenden Art allerdings innerhalb eines Frames, ganz -so als ob die Seite Teil des Kurses wäre.

              -

              Programm - ein externes Programm, dem man Informationen -über den aktuellen Moodle-Benutzer und Kurs übergeben -muss. Dies erlaubt es, externen Webanwendungen mit Moodle -zusammenzuarbeiten.Weitere -Informationen zu Programm-Ressourcen

              -

              Wiki-Text - erlaubt mehr Formatierungen als reiner -Text, ohne dass man gleich HTML lernen muss. Man gibt einfach -reinen Text ein und kann eine große Auswahl an Zeichen -benutzen, die eine spezielle Formatierung bewirken. (z.B: *dies -ist fett* /dies ist hervorgehoben/) Weitere Informationen zu -Wiki-Text

              \ No newline at end of file diff --git a/lang/de/help/resource/summary.html b/lang/de/help/resource/summary.html index f9485964996..251e7229a36 100644 --- a/lang/de/help/resource/summary.html +++ b/lang/de/help/resource/summary.html @@ -1,9 +1 @@ - -

              Zusammenfassung

              -

              Die Zusammenfassung soll eine kurze Beschreibung der Ressource -sein.

              -

              Man sollte nicht in Versuchung kommen, hier zu viel zu -schreiben, oder sogar praktisch die gesamte Ressource zu -wiederholen.

              -

              Die nächste Seite bietet die Möglichkeit die -Resource genauer zu spezifizieren.

              \ No newline at end of file +

              Zusammenfassung

              Die Zusammenfassung soll eine kurze Beschreibung der Ressource sein.

              Man sollte nicht in Versuchung kommen hier zu viel zu schreiben, oder sogar praktisch die gesamte Ressource zu wiederholen.

              Die nächste Seite bietet die Möglichkeit die Resource genauer zu spezifizieren. \ No newline at end of file diff --git a/lang/de/help/resource/window.html b/lang/de/help/resource/window.html index 152c21dfe07..891a578a635 100644 --- a/lang/de/help/resource/window.html +++ b/lang/de/help/resource/window.html @@ -1,60 +1,66 @@

              Einstellung der Fenster

              -

              Diese Einstellung können durch Anklicken aufgeklappt oder -wieder geschlossen werden.

              -

              In der Regel sollten Ressourcen in einem normalen Fenster mit -den moodle-Navigationselementen angezeigt werden. Wenn Sie -wollen, können Sie diese Anzeigen ausblenden, damit die -Ressource das komplette Fenster ausfüllt.

              -

              Sie können jedoch auch die Ressource in einem neuen -Pop-Up-Fenster öffnen. Beachten Sie dass viele -Teilnehmer/innen einen Pop-Up-Blocker verwenden, um störende -Werbeeinblendungen zu unterbinden. So gehen Sie vor:

              + +

              Diese Einstellung können durch Anklicken aufgeklappt oder wieder geschlossen werden. +

              + +

              In der Regel sollten ressourcen in einem normalen Fenster mit den moodle-Navigationselementen +angezeigt werden. Wenn Sie wollen, können Sie diese Anzeigen ausblenden, damit die Ressource +das komplette Fenster ausfüllt.

              + +

              Sie können jedoch auch die Ressource in einem neuen Pop-Up-Fenster +öffnen. Beachten Sie dass viele Teilnehmer/innen einen Pop-Up-Blocker verwenden, +um störende Werbeeinblendungen zu unterbinden. + So gehen Sie vor:

              +
                -
              1. Im Fenster: Auswahl: wählen Sie 'Neues -Fenster'.
              2. -
              3. Deaktivieren Sie die Optionen, die Sie nicht verwenden -wollen.
                -
                Darf das Fenster in der Größe angepasst -werden? -

                Wenn Sie die Option wählen, können die -Teilnehmer/innen selber die Größe des Fensters -anpassen. Manchmal kann es aber auch sinnvoll sein, die -Größe als unveränderlich festzulegen.

                -Darf das Fenster gescrollt werden? -

                Diese Option ermöglicht dem/der Teilnehmer/in durch die -Ressource zu scrollen. Wenn die Option deaktiviert wird, kann -der/die Teilnehmer/in evtl. nicht die ganze Ressource sehen.

                -Sollen die Verzeichnislinks im Browser angezeigt werden? -

                Die Option aktiviert die Anzeige der Link Bar (beim Internet -Explorer) oder der Favoriten/Bookmarks (bei Mozilla/Firefox).

                -Soll das URL-Fenster (location bar) gezeigt werden? -

                Aktivieren Sie dazu diese Einstellung. Ansonsten wird das -Fenster ausgeblendet.

                -Sollen die Menus angezeigt werden? -

                Wenn die Teilnehmer/innen Zugriff auf die Menus haben sollen, -lassen Sie die Option aktiv. Für einige graphische -Präsentationen kann es sinnvoll sein, diese Option zu -deaktivieren.

                -Soll die Toolbar angezeigt werden? -

                Die Toolbar umfasst die Optionen -vorwärts-rückwärts-aktualisieren. Sie bleibt -sichtbar, wenn die Option aktiv ist.

                -Soll die Statusanzeige sichtbar sein? -

                Die Statusanzeige gibt einen Überblick, zeigt wie viel -von der Ressource bereits geladen wurde oder welche -Sicherheitseinstellungen aktiv sind. Entscheiden Sie, ob diese -sichtbar sein soll oder nicht.

                -
                -
              4. -
              5. Festlegen der Größe des Fensters, das -geöffnet wird.
                +
              6. Im Fenster: Auswahl: wählen Sie 'Neues Fenster'.
              7. +
              8. Deaktivieren Sie die Optionen, die Sie nicht verwenden wollen.
                +
                -

                Viele Menschen nutzen eine Bildschirmauflösung von -800x600. Zumeist ist es am besten, die Auflösung etwas -kleiner zu wählen z.B. 600 breit und 480 hoch.

                -

                Wenn Sie die Felder leer lassen, wird die gleiche -Größe gewählt, wie bei dem Fenster von dem aus -das Pop-Up-Fenster geöffnet wird.

                + Darf das Fenster in der Größe angepasst werden? +

                Wenn Sie die Option wählen, können die Teilnehmer/innen selber die Größe + des Fensters anpassen. Manchmal kann es aber auch sinnvoll sein, die Größe + als unveränderlich festzulegen.

                + + Darf das Fenster gescrollt werden? +

                Diese Option ermöglicht dem/der Teilnehmer/in durch die Ressourcezu scrollen. + Wenn die Option deaktiviert wird, kann der/die Teilnehmer/in evtl. nicht die + ganze Ressource sehen. +

                + + Sollen die Verzeichnislinks im Browser angezeigt werden? +

                Die Option aktiviert die Anzeige der Link Bar (beim Internet Explorer) + oder der Favoriten/Bookmarks (bei Mozilla/Firefox).

                + + Soll das URL-Fenster (location bar) gezeigt werden? +

                Aktivieren Sie dazu diese Einstellung. Ansonsten wird das Fenster ausgeblendet.

                + + Sollen die Menus angezeigt werden? +

                Wenn die Teilknehmer/inne Zugriff auf die Menus haben sollen, + lassen Sie die Option aktiv. Für einige graphische Präsentationen kann es + sinnvoll sein, diese Option zu deaktivieren.

                + + Soll die Toolbar angezeigt werden? +

                Die Toolbar umfasst die Optionen vorwärts-rückwärts-aktualisieren. Sie bleibt + sichtbar, wenn die Option aktiv ist.

                + + Soll die Statusanzeige sichtbar sein? +

                Die Statusanzeige gibt einen Überblick, zeigt wie viel von der Ressource + bereits geladen wurde oder welche Sicherheitseinstellungen aktiv sind. + Entscheiden Sie, ob diese sichtbar sein soll oder nicht.

                + +
                + +
              9. Festlegen der Größe des Fensters, das geöffnet wird.
                + +
                +

                Viele Menschen nutzen eine Bildschirmauflösung von 800x600. Zumeist ist es am besten, + die Auflösung etwas kleiner zu wählen z.B. 600 breit und 480 hoch.

                + +

                Wenn Sie die Felder leer lassen, wird die gleiche Größe gewählt, wie bei dem Fenster + von dem aus das Pop-Up-Fenster geöffnet wird. +

                +
              10. -
              \ No newline at end of file +
            diff --git a/lang/de/help/richtext.html b/lang/de/help/richtext.html index 24ed5017170..1bf7d0e8a74 100644 --- a/lang/de/help/richtext.html +++ b/lang/de/help/richtext.html @@ -1,187 +1,173 @@ -

            Über den Richtext-HTML-Editor

            -

            Verfügbarkeit: htmleditor) { - print_string("htmleditordisabledadmin"); - } else if (!$USER->htmleditor) { - print_string("htmleditordisabled"); - } else if (!can_use_richtext_editor()) { - print_string("htmleditordisabledbrowser"); - } else { - print_string("htmleditoravailable"); - } -?>

            -

            Der Richtext HTML Editor ist eine Schnittstelle zur -Textverarbeitung. Er ist eingebettet in Ihre Webseite und erlaubt -Ihnen, Text in einer intuitiven Weise zu editieren und normalen -HTML-Code daraus zu machen.

            -

            Zusätzlich zur Funktion „Textformatierung“ -hat dieser Editor eine Reihe von Extrafunktionen, die für -Sie nützlich sein können.

            -

            Einfügen von Text aus anderen Anwendungen

            -
            -

            Sie können Text aus anderen Windows-Anwendungen wie -Microsoft Word direkt durch copy&paste in den Editor -übertragen und Ihre Formatierung wird umgesetzt. Benutzen -Sie dazu die Befehle unter „Datei“ in Ihrem Browser -oder benutzen Sie die Shortcuts ctrl-C und ctrl-V.

            -
            -

            Bilder einfügen

            -
            -

            Falls Sie Bilder haben, die bereits auf einer Webseite -publiziert sind und per URL verfügbar sind, können Sie -diese Bilder in Ihren Text einfügen, indem Sie den Button -„Bild einfügen“ benutzen.

            -
            -

            Einfügen von Tabellen

            -
            -

            Um Ihrem Text ein Layout hinzuzufügen, können Sie den -Button “Tabellen einfügen” in der Toolbar -benutzen.

            -
            -

            Einfügen von Links

            -
            -

            Um einen neuen Link zu erstellen schreiben Sie zuerst den -Textstring, den Sie später als Link verwenden möchten. Dann markieren -Sie ihn und klicken mit der linken Maustaste auf die Toolbar. -Tippen Sie die URL, welche Sie verlinken möchten und damit -ist es geschafft.

            -
            -

            Smileys einfügen (emoticons)

            -
            -

            Um diese kleinen Smileys in Ihren Text einzubetten klicken Sie -auf den Smiley-Button in der Toolbar. Ein Fenster wird sich -öffnen und Sie können zwischen den angezeigten Icons -wählen. (Alternativ können Sie den entsprechenden Code -direkt in den Text tippen, dieser wird später konvertiert -und die Smilieys werden dargestellt.)

            - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            lächeln:-)
            breites Grinsen:-D
            zwinkernd;-)
            gemischt:-/
            denkendV-.
            Zunge zeigen:-P
            coolB-)
            einverstanden^-)
            grosse Augen8-)
            überrascht8-o
            traurig:-(
            schüchtern8-.
            errötend:-I
            küssen:-X
            Clown:o)
            schwarzes AugeP-|
            wütend8-[
            mattxx-P
            schläfrig|-.
            übel}-]
            -
            -
            - +

            Über den Richtext-HTML-Editor

            + +

            Availability: +htmleditor) { + print_string("htmleditordisabledadmin"); + } else if (!$USER->htmleditor) { + print_string("htmleditordisabled"); + } else if (!can_use_richtext_editor()) { + print_string("htmleditordisabledbrowser"); + } else { + print_string("htmleditoravailable"); + } +?> +

            + +

            Der Richtext HTML Editor ist eine Schnittstelle zur Textverarbeitung. Er ist eingebettet +in Ihre Webseite und erlaubt Ihnen, Text in einer intuitiven Weise zu editieren +und normalen HTML-Code daraus zu machen. + +

            Zusätzlich zur Funktion „Textformatierung“ hat dieser Editor eine Reihe von +Extrafunktionen, die für Sie nützlich sein können. + +

            Einfügen von Text aus anderen Anwendungen

            +
              +

              Sie können Text aus anderen Windows-Anwendungen +wie Microsoft Word direkt durch copy&paste in den Editor übertragen und +Ihre Formatierung wird aufbewahrt. Benutzen Sie dazu die Befehle unter „Datei“ +in Ihrem Browser oder benutzen Sie die Shortcuts ctrl-C und ctrl-V. +

            + +

            Bilder einfügen

            +
              +

              Falls Sie Bilder haben, die bereits auf einer +Webseite publiziert sind und per URL verfügbar sind, können Sie diese Bilder in +Ihren Text einfügen, indem Sie den Button „Bild einfügen“ benutzen. +

            + +

            Einfügen von Tabellen

            +
              +

              Um Ihrem Text ein Layout hinzuzufügen können Sie +den Button “Tabellen einfügen” in der Toolbar benutzen. +

            + +

            Einfügen von Links

            +
              +

              Um ein neues Link zu erstellen schreiben Sie +zuerst den Textstring, den Sie als Link haben möchten. Dann markieren Sie ihn +und klicken mit der linken Maustaste auf die Toolbar. Tippen Sie die URL, +welche Sie verlinken möchten und damit ist es geschafft. +

            + + +

            Smileys einfügen (emoticons)

            +
              +

              Um diese kleinen Smileys in Ihren Text +einzubetten klicken Sie auf den Smiley-Button in der Toolbar. Ein Fenster wird +sich öffnen und sie können zwischen den angezeigten Icons wählen. (Alternativ +können Sie den entsprechenden Code direkt in den Text tippen, dieser wird +später konvertiert und die Smilieys werden dargestellt.) + + + + +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              lächeln:-)
              breites grinsen:-D
              zwinkernd;-)
              gemischt:-/
              denkendV-.
              Zunge zeigen:-P
              coolB-)
              einverstanden^-)
              grosse Augen8-)
              überrascht8-o
              +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              traurig:-(
              schüchtern8-.
              errötend:-I
              kisses:-X
              clown:o)
              schwarzes AugeP-|
              wütend8-[
              mattxx-P
              schläfrig|-.
              übel}-]
              +
              + +

            + diff --git a/lang/de/help/scales.html b/lang/de/help/scales.html index 2fdcc103594..396b95c982d 100644 --- a/lang/de/help/scales.html +++ b/lang/de/help/scales.html @@ -1,17 +1,15 @@

            Bewertungsskalen

            -

            Dozent/innen können neue Bewertungskalen erstellen, die -in allen Bewertungsaktivitäten eingesetzt werden können.

            -

            Der Name der Skala sollte ein einfacher Satz oder Begriff -sein, der den Charakter eindeutig beschreibt: dieser wird in -Auswahllisten und in der Kontexthilfe verwandt.

            -

            Die Skala wird durch eine geordnete Liste von Werten -definiert, die vom negativen zum positiven Wert geordnet ist. Die -einzelnen Werte werden durch Kommas getrennt. Zum Beispiel:

            -
            enttäuschend, nicht gut genug, -durschnittlich, gut, sehr gut, ausgezeichnet!
            -

            Skalen sollten eine gute Beschreibung ihrer Bedeutung und -ihrer Verwendung umfassen. Diese Beschreibung wird verwandt in -Hilfeseiten für Trainer/innen und Teilnehmer/innen.

            -

            Am Schluß haben Sie eine oder mehrere -Standard-Bewertungsskalen auf der Systemverwaltungsseite -festgelegt, die in allen Kursen genutzt werden können.

            \ No newline at end of file + +

            Dozent/innen können neue Bewertungskalen erstellen, die in allen Bewerungsaktivitäten verwandt werden.

            + +

            Der Name der Skala sollte ein einfacher Satz oder Begriff sein, der den Charakter eindeutig beschreibt: dieser wird in Auswahllisten und in der Kontexthilfe verwandt werden.

            + +

            Die Skala wird durch eine geordnete Liste von Werten definiert, die vom negativen zum positiven Wert geordnet ist. Die einzelnen Werte werden durch Kommas getrennt. Zum Beispiel:

            + +
            +Enttäuschend, nicht gut genug, durschnittlich, gut, sehr gut, ausgezeichnet! +
            + +

            Skalen sollten eine gute Beschreibung ihrer Bedeutung und ihrer Verwendung umfassen. Diese Beschreibung wird verwandt in Hilfeseiten für Dozent/innen und Teilnehmer/innen.

            + +

            Am Schluß haben Sie eine oder mehrere Standard-Bewertungsskalen auf der Systemverwaltungsseite festgelegt, die in allen Kursen genutzt werden können.

            diff --git a/lang/de/help/scheduler/mods.html b/lang/de/help/scheduler/mods.html index e2d723fa762..9339b738fba 100644 --- a/lang/de/help/scheduler/mods.html +++ b/lang/de/help/scheduler/mods.html @@ -1,8 +1,5 @@ -

               -Sprechstunden

            -
            -

            Dieses Modul hilft Ihnen, Sprechstunden mit Teilnehmer/innen zu -vereinbaren. Sie definieren einen Zeitrahmen und die -Sprechstundenlänge. Aus diesem Angebot können -Teilnehmer/innen frei wählen.

            -
            \ No newline at end of file +

             Scheduler

            +
              +

              This module helps you to schedule one-on-one appointments with all your students. You specify the periods during which you are available to see the students and the length of each appointment. The students then book themselves into one of the available timeslots. The module also lets you record the attendance. +

              +
            diff --git a/lang/de/help/summaries.html b/lang/de/help/summaries.html index 0a75831691e..0ff23af9749 100644 --- a/lang/de/help/summaries.html +++ b/lang/de/help/summaries.html @@ -1,9 +1,8 @@ -

            Themen-/Wochenzusammenfassungen

            -

            Die Idee einer Themenzusammenfassung besteht in einem sehr -kurzen Text, der die Kursteilnehmer auf die Tätigkeiten -innerhalb dieses Themas (oder der Woche) vorbereitet.

            -

            Die Zusammenfassung sollte sehr kurz sein, damit die -Kursseite nicht zu lang wird.

            -

            Wenn Sie meinen, mehr sagen zu müssen als ein, zwei -Sätze, dann fügen Sie stattdessen eine Arbeitsunterlage zu diesem -Thema bei.

            \ No newline at end of file +

            Themen/Wochenzusammenfassungen

            + +

            Die Idee einer Themenzusammenfassung besteht in einem sehr kurzer Text, der die Kursteilnehmer für die Tätigkeiten innerhalb dieses Themas (oder der Woche) vorzubereiten soll.

            + +

            Jede Zusammenfassung sollte sehr kurz sein, damit die Kursseite nicht zu lang wird.

            + +

            Wenn Sie denken mehr sagen zu müssen als ein, zwei Sätze, dann fügen Sie stattdessen eine Quelle zu diesem Thema bei (z.B. könnte die erste Tätigkeit eine Seite sein, die Über dieses Thema) genannt wird.

            + diff --git a/lang/de/help/survey/index.html b/lang/de/help/survey/index.html index 6c8864e9bc7..41aec5010d1 100644 --- a/lang/de/help/survey/index.html +++ b/lang/de/help/survey/index.html @@ -1,5 +1,4 @@ -

            Umfragemodul

            +

            Umfrage-Modul

            \ No newline at end of file +
          • Verfügbare Umfragen + diff --git a/lang/de/help/survey/mods.html b/lang/de/help/survey/mods.html index 6b22f711542..4190b58cdd2 100644 --- a/lang/de/help/survey/mods.html +++ b/lang/de/help/survey/mods.html @@ -1,9 +1,8 @@ -

             Umfragen

            -
            -

            Das Umfrage-Modul bietet eine Reihe geprüfter -Umfrageinstrumente, die als sinnvoll erachtet werden, um das Lernen -in Online-Umgebungen anzuregen und zu überprüfen. -Trainer/innen können Daten von Ihren Teilnehmer/innen erheben, die -Ihnen helfen, die Gruppe besser kennenzulernen und ein Feedback -auf ihren eigenen Lehrstil zu erhalten.

            -
            \ No newline at end of file +

             Umfragen

            +
              +

              Das Umfrage-Modul bietet eine Reihe geprüfter Umfrageinstrumente, + die als sinnvoll erachtet werden, das Lernen in Online-Umgebungen + anzuregen und zu überprüfen. Lehrer können Daten von Ihren Schülern erheben, + die Ihnen helfen, die Klasse besser kennenzulernen und ein Feedback auf ihren + eigenen Lehrstil zu erhalten.

              +
            \ No newline at end of file diff --git a/lang/de/help/surveys.html b/lang/de/help/surveys.html index cfac5e17c5a..816bca102ee 100644 --- a/lang/de/help/surveys.html +++ b/lang/de/help/surveys.html @@ -1,156 +1,171 @@ -Vorhandene Befragungen -

            Momentan bietet Moodle nur spezielle Arten von Befragungen an -(zukünftige Versionen werden dagegen selbsterstellte -Befragungen erlauben)

            -

            Die verfügbaren Befragungen sind gewählt worden, -um für die Auswertung von Online-Lern-Umgebungen möglichst nützlich -zu sein, die eine aktivierende -Pädagogik nutzen. Sie sind nützlich um bestimmte -Tendenzen zu erkennen, die sich unter Ihren Teilnehmern -entwickeln können.

            -

            Eine Veröffentlichung in englischer Sprache, wo dies -für detaillierte Analysen benutzt wurde, findet man unter -folgender URL: http://dougiamas.com/writing/herdsa2002

            -
            -
            -

            COLLES - Constructivist On-Line -Learning Environment Survey ( Konstruktivische Bewertung der -Online-Lern-Umgebung)

            -

            Colles enthält 24 - Aussagen, die in 6 Gruppen eingeteilt werden, -jede davon hilft uns die Qualität einer Online-Lern-Ungebung -zu hinterfragen:

            - - - - - - - - - - - - - - - - - - - - - - - - - -
            -

            Bedeutung

            -
            -

            Wie bedeutend ist das Online-Lernen für -die Berufspraxis der Studenten?

            -
            -

            Widerspiegelung

            -
            -

            Stimuliert das Online-Lernen das -studentische kritisch-reflektive Denken?

            -
            -

            Interaktivität

            -
            -

            In welchem Maße engagieren sich -Studenten online in Bildungs-Dialogen?

            -
            -

            Trainer/innen und ihre Unterstützung

            -
            -

            Wie gut ermöglichen es Trainer/innen den -Studenten online am Lernen teilzunehmen?

            -
            -

            Gruppenunterstützung

            -
            -

            Wird von Kommilitonen eine feinfühlige -und anspornende Unterstützung gegeben?

            -
            -

            Interpretation

            -
            -

            Haben Teilnehmer/innen und Trainer/innen einen guten -Spürsinn für die gegenseitige Online-Kommunikation?

            -
            -

            Das dynamische Wesen des Lernens zu -untermauern ist eine neue Theorie des Wissens: -Sozialkonstruktivismus, welcher den Lernenden als einen aktiven, -begrifflich Denkenden innerhalb einer gesellschaftlich -wechselwirkenden Lernumgebung darstellt. Gesellschaftlicher -Konstrukivismus ist eine Erkenntnistheorie und eine Art des -Wissens, bei der Lernende zusammenarbeiten, um gemeinsam -neue Erkenntnisse zu erarbeiten, vor allem im Zusammenhang der -gegenseitigen Hinterfragung und begründet durch -persönliche Erfahrung.

            -

            Mittelpunkt dieser Zusammenarbeit -ist die Entwicklung der kommunikativen Kompetenz der -Kursteilnehmer, d.h. die Fähigkeit sich in einer offenen und -kritischen Diskussion mit dem Trainer/innen und den Kommilitonen zu -engagieren. Diese Gespräche sind gekennzeichnet durch eine -einfühlsame Erfassung der Situation und durch ein -gegenseitiges Verständnis und eine kritische Einstellung zu -den zu prüfenden Annahmen.

            -

            COLLES ist entworfen worden, um -Ihnen zu gestatten die Möglichkeiten zu erfassen, welche die -interaktive Kapazität des World Wide Web zur Engagierung von -Studenten in dynamischen Lern-Aktivitäten bietet.

            -

            (Diese Informationen sind der -COLLES-Webseite entnomen worden . Mehr über COLLES und den -Autor können Sie unter: http://surveylearning.com/colles/ in englischer -Sprache erfahren.)

            -
            -
            -

            ATTLS - Attitudes to Thinking -and Learning Survey – Einstellung zur Denk- und -Lern-Bewertung

            -

            - 

            -

            Die Theorie der “Arten des -Denkens” stammt ursprünglich aus der Sphäre -der Geschlechtsforschung (Belenky et al., 1986) versorgt uns mit -einem Bewertungswerkzeug, um die Qualität der Gespräche -innerhalb einer Gemeinschaft zu überprüfen. - 

            -

            Die Einstellung der Lernenden gegenüber -Denken- und Lernen mitHilfe der Online Lernumgebung (ATTLS) sind ein Instrument, entwickelt -von Galotti et al. (1999), um die präferierte Haltung zu messen, welche eine -Person einnimmt: Ein mit anderen verbundener Wissender (CK) oder ein -separater Wissender (SK).

            -

            Leute mit höheren CK-Mengen -neigen dazu, Lernen erfreulich zu finden und sind oft -kooperativer, symphatisch und bereiter, ihre Ideen anderen zu -vermitteln, während solche mit höheren SK-Eigenschaften -dazu tendieren, eine kritischere und argumentative Position zum -Lernen einzunehmen.

            -

            Studien haben gezeigt, daß -diese zwei Lernarten voneinander unabhängig sind (Galotti et -al., 1999; Galotti et al., 2001). Außerdem sind sie nur -eine Widerspiegelung der Einstellung zum Lernen und kein Indiz -für Lern-Leistungsvermögen oder die intellektuelle -Kraft.

            -

            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.

            -

            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.

            -

            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.

            + +

            Vorhandene Bewertungen

            + +

            Momentan bietet Moodle nur spezielle Arten von Bewertungen +an (zukünftige Versionen werden dagegen selbsterstellte Bewertungen erlauben)

            + +

            Die verfügbaren Bewertungen sind so gewählt worden, um +möglichst nützlich für die Auswertung von Online-Lern-Umgebungen zu sein, die diese +aufbauende Pädagogik nutzen. Sie sind nützlich, bestimmte Tendenzen zu erkennen, +die sich unter Ihren Teilnehmern entwickeln können.

            + +

            Eine Veröffentlichung in englischer Sprache, wo dies für detaillierte +Analysen benutzt wurde, findet man unter folgender URL: http://dougiamas.com/writing/herdsa2002

            + + +
            + +
            + +
            + + +

            COLLES - Constructivist On-Line Learning +Environment Survey ( Konstruktivische Bewertung der Online-Lern-Umgebung)

            + +

            Colles enthält 24 ökonomische Aussagen, die in 6 +Gruppen eingeteilt werden, jede davon hilft uns die Qualität einer +Online-Lern-Ungebung zu hinterfragen:

            + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +

            Bedeutung

            +
            +

            Wie bedeutend ist das Online-Lernen für die Berufspraxis + der Studenten?

            +
            +

            Widerspiegelung

            +
            +

            Stimuliert das Online-Lernen das studentische kritisch-reflektive + Denken?

            +
            +

            Interaktivität

            +
            +

            In welchem Maße engagieren sind Studenten online in + Bildungs-Dialogen?

            +
            +

            Lehrer Unterstützung

            +
            +

            Wie gut ermöglichen es Lehrer den Studenten, online am + Lernen teilzunehmen?

            +
            +

            Gruppenunterstützung

            +
            +

            Wird von Komilitonen eine feinfühlige und anspornende Unterstützung + gegeben?

            +
            +

            Interpretation +

            +
            +

            Haben Studenten und Lehrer einen guten Spürsinn für die + gegenseitige Online-Kommunikation?

            +
            + +

            Das dynamische Wesen des Lernens zu untermauern +ist eine neue Theorie des Wissens: Sozialkonstruktivismus, welcher den +Lernenden als einen aktiven, begrifflich Denkenden innerhalb einer gesellschaftlich +wechselwirkenden Lernumgebung darstellt. Gesellschaftlicher Konstrukivismus ist +eine Erkenntnistheorie oder eine Art des Wissens, bei der Lernende denkend +zusammenarbeiten, um gemeinsam neue Erkenntnisse zu erarbeiten, vor allem im Zusammenhang +der gegenseitigen Hinterfragung und begründet durch persönliche Erfahrung.

            + +

            Mittelpunkt dieser Zusammenarbeit ist die +Entwicklung der kommunikativen Kompetenz der Kursteilnehmer, d.h. die Fähigkeit +sich in einer offenen und kritischen Diskussion mit dem Lehrer und den +Kommilitonen zu engagieren. Diese Gespräche sind gekennzeichnet durch eine +einfühlsame Erfassung der Situation und durch ein gegenseitiges Verständnis und +eine kritische Einstellung zu den zu prüfenden Annahmen.

            + +

            COLLES ist entworfen worden, um Ihnen zu gestatten +die Möglichkeiten zu erfassen, welche die interaktive Kapazität des World Wide +Web zur Engagierung von Studenten in dynamischen Lern-Aktivitäten bietet.

            + +

            (Diese Informationen sind der COLLES-Webseite +entnomen worden . Mehr über COLLES und den Autor können Sie unter: http://surveylearning.com/colles/ +in englische Sprache erfahren.)

            + + +
            + +
            + +
            + + +

            ATTLS - Attitudes to Thinking and Learning +Survey – Einstellung zur Denk-und Lern-Bewertung

            + +

             

            + +

            Die Theorie der “Arten des Denkens”, ursprünglich +stammend aus der Sphäre der Geschlechtsforschung (Belenky et al., 1986) +versorgt uns mit einem Bewertungswerkzeug, um die Qualität der Gespräche +innerhalb einer Gemeinschaft zu überprüfen.  

            + +

            Die Einstellung gegenüber Denk- und +Lernbewertungen (ATTLS) sind ein Instrument, entwickelt von Galotti et al. (1999), +um die Art zu messen, welche eine Person ist: Ein mit anderen verbundener Wissender +(CK) oder ein separater Wissender (SK).

            + +

            Leute mit höheren CK-Mengen neigen dazu, Lernen erfreulich +zu finden, und sind oft kooperativer, symphatisch und bereiter, ihre Ideen +anderen zu vermitteln, während solche mit höheren SK-Eigenschaften dazu +tendieren, eine kritischere und argumentative Position zum Lernen einzunehmen.

            + +

            Studien haben gezeigt, daß diese zwei Lernarten voneinander +unabhängig sind (Galotti et al., 1999; Galotti et al., 2001). Außerdem sind sie +nur eine Widerspiegelung der Einstellung zum Lernen und kein Indiz für +Lern-Leistungsvermögen oder die intellektuelle Kraft.

            + +

            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.

            + +

            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.

            + +

            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.

            + + + + + + \ No newline at end of file diff --git a/lang/de/help/teachers.html b/lang/de/help/teachers.html index b11ec1edf62..e9b84cfed36 100644 --- a/lang/de/help/teachers.html +++ b/lang/de/help/teachers.html @@ -1,21 +1,10 @@ -

            Trainer/innen

            -

            Diese Seite zeigt eine Liste der Leute, denen durch den -Systemadministrator der Status "Trainer/in" zugewiesen wurde.

            -

            Sie können dieses Formblatt benutzen, um jeder Person -Titel wie "Professor", "Tutor", "Assistenten" usw. zuzuweisen. -Diese erscheinen auf der Kursliste der Seite und ebenfalls auf -der Teilnehmerliste Ihres Kurses. Lässt man die -entsprechenden Funktionskästchen leer, erscheint das -vorgegebene Wort "Trainer/in" (das Sie auf der -Kurs-Einstellungsseite gewählt haben).

            -

            Sie können diese Liste auch nutzen (z.B. um den -Haupttrainer/in an die erste Stelle der Liste zu setzen). Dazu wählen Sie -einfach eine Zahl aus dem Menü. -Nach dem Bestätigen des Buttons "Änderungen speichern" -werden Sie die neue Einstellung sehen.

            -

            NOTE:Ein spezieller Fall tritt auf, wenn Sie -"Verbergen" für einen Trainer wählen. In diesem Fall -wird der Trainer nicht mehr in der Kursliste und der -Teilnehmerliste angezeigt. Diese Trainer werden den -Kursteilnehmern verborgen bleiben, es sei denn, sie -veröffentlichen Meldungen in den Foren.

            +

            Lehrer

            + +

            Diese Seite zeigt eine Liste der Leute, denen durch den Systemadministrator der Status "Lehrer" zugewiesen wurde. + +

            Sie können dieses Formblatt benutzen, um jeder Person Titel wie "Professor", "Tutor", "Assistenten" usw. zuzuweisen. Diese erscheinen auf der Kursusliste der Seite und ebenfalls auf der Teilnehmerliste Ihres Kurses. Lässt man die entsprechenden Funktionskästchen leer, erscheint das vorgegebene Wort "Lehrer" (das welches Sie auf der Kurs-Einstellungsseite gewählt haben). + +

            Sie können diese Liste auch anfordern (z.B. um den Hauptlehrer an die Spitze zu setzen). Dazu wählen Sie einfach eine Zahl aus dem Menü der "Aufträge"-Spalte. Nach dem Betätigen des Buttons "Änderungen speichern" werden Sie den neuen Auftrag sehen. + +

            NOTE:Ein spezieller Fall tritt auf, wenn Sie "Verbergen" für einen Lehrer wählen. In diesem Fall wird der Lehrer nicht mehr in der Kursliste und der Teilnehmerliste angezeigt. Diese Lehrer werden den Kursteilnehmern verborgen bleiben, es sei denn, sie veröffentlichen Meldungen in den Foten o.ä. + diff --git a/lang/de/help/text.html b/lang/de/help/text.html index c5b6a51729d..5832d735d58 100644 --- a/lang/de/help/text.html +++ b/lang/de/help/text.html @@ -1,451 +1,402 @@ -

            -

            So erstellen Sie Smilies und URL-Adressen in Ihren -Texten

            -

            Sie können in Moodle Ihre Texte so -schreiben, wie Sie es mit der Textverarbeitung gewohnt sind. An -vielen Stellen steht Ihnen ein Editor zur Verfügung mit dem -Sie Formatierungen vornehmen, Links zu Internetadressen eingeben -oder direkt HTML-Code eintragen können. Um die -Interpretation Ihres Textes zu erleichtern, können Sie -kleine Smilies einfügen. So können Sie Freude oder -Verärgerung deutlich machen. Das ist besonders bei -Beiträgen im Forum eine gute Hilfe für die -Leser/innen.

            -

             

            -

            Smilies (emoticons)

            -

            Die Smilies werden mit einer Kombination aus -3-4 Zeichen Ihrer Tastatur erstellt und automatisch in ein -Symbolumgewandelt. Wenn Sie den Kopf nach links drehen, -können Sie die Bedeutung des Smilies leicht erkennen..

            -

            - 

            - - - - - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + +
            + +

            So erstellen Sie Smilies und URL-Adressen in Ihren Texten

            + +

            Sie können in Moodle Ihre Texte so schreiben, wie Sie es mit der Textverarbeitung gewohnt sind. An vielen Stellen steht Ihnen ein Editor zur Verfügung mit dem Sie Formatierungen vornehmen, Links zu Internetadressen eingeben oder direkt HTML-Code eintragen können. Um die Interpretation Ihres Textes zu erleichtern, können Sie kleine Smilies einfügen. So können Sie Freude oder Verärgerung deutlich machen. Das ist besonders bei Beiträgen im Forum eine gute Hilfe für die Leser/innen.

            + +

            Smilies (emoticons)

            + +

            Die Smilies werden mit einer Kombination aus 3-4 Zeichen Ihrer Tastatur erstellt und automatisch in ein Symbolumgewandelt. Wenn Sie den Kopf nach links drehen, können Sie die Bedeutung des Smilies leicht erkennen..

            + +

             

            + +
            -

            -
            -

            smile

            -
            -

            :-)

            -
            -

            -
            -

            breites Grinsen

            -
            -

            :-D

            -
            -

            -
            -

            zwinkern

            -
            -

            ;-)

            -
            -

            -
            -

            gemischt

            -
            -

            :-/

            -
            -

            -
            -

            nachdenkend

            -
            -

            V-.

            -
            -

            -
            -

            Zunge zeigen

            -
            -

            :-P

            -
            -

            -
            -

            cool

            -
            -

            B-)

            -
            -

            -
            -

            einverstanden

            -
            -

            ^-)

            -
            -

            -
            -

            große Augen

            -
            -

            8-)

            -
            -

            -
            -

            überrascht

            -
            -

            8-o

            -
            + + + +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +

            +
            +

            smile

            +
            +

            :-)

            +
            +

            +
            +

            breites + Grinsen

            +
            +

            :-D

            +
            +

            +
            +

            zwinkern

            +
            +

            ;-)

            +
            +

            +
            +

            gemischt

            +
            +

            :-/

            +
            +

            +
            +

            nachdenkend

            +
            +

            V-.

            +
            +

            +
            +

            Zunge zeigen

            +
            +

            :-P

            +
            +

            +
            +

            cool

            +
            +

            B-)

            +
            +

            +
            +

            einverstanden

            +
            +

            ^-)

            +
            +

            +
            +

            große Augen

            +
            +

            8-)

            +
            +

            +
            +

            überrascht

            +
            +

            8-o

            +
            +
            +

            +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +

            +
            +

            traurig

            +
            +

            :-(

            +
            +

            +
            +

            schüchtern

            +
            +

            8-.

            +
            +

            +
            +

            errötend

            +
            +

            :-I

            +
            +

            +
            +

            kisses

            +
            +

            :-X

            +
            +

            +
            +

            clown

            +
            +

            :o)

            +
            +

            +
            +

            schwarzes + Auge

            +
            +

            P-|

            +
            +

            +
            +

            wütend

            +
            +

            8-[

            +
            +

            +
            +

            tot

            +
            +

            xx-P

            +
            +

            +
            +

            schläfrig

            +
            +

            |-.

            +
            +

            +
            +

            übel

            +
            +

            }-]

            +
            +
            +

            +
            + +

            URLs

            + +

            Jedes “Wort”, das mit www. oder http:// +beginnt, wird automatisch in einen anklickbaren Link umgewandelt.

            + +

             

            + +

            Zum Beispiel: www.google.de oder http://moodle.org + 

            + +

            HTML Befehle

            + +

            Sie können eine begrenzte Anzahl von +HTML-Befehlen Ihrem Text hinzufügen. An vielen Stellen können Sie dazu den komfortablen Richtext-Editor benutzen.

            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +

            HTMLBefehl

            +
            +

            Ergebnis

            +
            +

            <B> fett </B>

            +
            +

            fetter + Text

            +
            +

            <I> + kursiv </I>

            +
            +

            kursiver Text

            +
            +

            <U> unterstrichen </U>

            +
            +

            unterstrichener Text

            +
            +

            <FONT SIZE=1> klein </FONT>

            +
            +

            klein

            +
            +

            <FONT SIZE=4> groß </FONT>

            +
            +

            groß

            +
            +

            <FONT COLOR=green> Beispiel </FONT>

            +
            +

            Beispiel

            +
            +

            <UL><LI>Eins + <LI>Zwei </UL>

            +
            +

            o                                + Eins

            +

            o                                + Zwei

            +
            +

            <HR>

            +
            +
            +
            +
            +

            +
            + +

             

            +
            -

             

            -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            -

            -
            -

            traurig

            -
            -

            :-(

            -
            -

            -
            -

            schüchtern

            -
            -

            8-.

            -
            -

            -
            -

            errötend

            -
            -

            :-I

            -
            -

            -
            -

            kisses

            -
            -

            :-X

            -
            -

            -
            -

            clown

            -
            -

            :o)

            -
            -

            -
            -

            schwarzes Auge

            -
            -

            P-|

            -
            -

            -
            -

            wütend

            -
            -

            8-[

            -
            -

            -
            -

            tot

            -
            -

            xx-P

            -
            -

            -
            -

            schläfrig

            -
            -

            |-.

            -
            -

            -
            -

            übel

            -
            -

            }-]

            -
            -
            -

             

            -
            -

            URLs

            -

            Jedes “Wort”, das mit -www. oder http:// beginnt, wird automatisch in -einen anklickbaren Link umgewandelt.

            -

             

            -

            Zum Beispiel: -www.google.de oder http://moodle.org  

            -

             

            -

            HTML Befehle

            -

            Sie können eine begrenzte -Anzahl von HTML-Befehlen Ihrem Text hinzufügen. An vielen -Stellen können Sie dazu den komfortablen Richtext-Editor -benutzen.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            -

            -HTMLBefehl

            -
            -

            -Ergebnis

            -
            -

            <B> fett </B>

            -
            -

            fetter Text

            -
            -

            <I> kursiv </I>

            -
            -

            kursiver Text

            -
            -

            <U> unterstrichen </U>

            -
            -

            unterstrichener Text

            -
            -

            <FONT SIZE=1> klein </FONT>

            -
            -

            klein

            -
            -

            <FONT SIZE=4> groß -</FONT>

            -
            -

            groß

            -
            -

            <FONT COLOR=green> Beispiel -</FONT>

            -
            -

            Beispiel

            -
            -

            <UL><LI>Eins <LI>Zwei -</UL>

            -
            -

            - -o                                -Eins

            -

            - -o                                -Zwei

            -
            -

            <HR>

            -
            -
            -
            -

             

            -
            -

             

            + + + + \ No newline at end of file diff --git a/lang/de/help/textformat.html b/lang/de/help/textformat.html index 75ca60c6aa6..e09dd51da09 100644 --- a/lang/de/help/textformat.html +++ b/lang/de/help/textformat.html @@ -1,70 +1,34 @@ -

            Text formatieren

            -

            Schreibt man in Moodle einen Text, gibt es -mehrere Formate, welche man wählen kann, um diesen Text zu -erstellen. Die Wahl dieser Formate hängt von Ihrer -Fachkenntnis und dem Browsertyp ab, den Sie verwenden.

            -

            Normalerweise können Sie die Einstellungen so belassen -wie sie sind, und das System liefert die Ergebnisse, die Sie -erwarten..

            -

            1. Moodle Auto-Format

            -
              -

              Dieses Format verwendet man am besten, wenn man normale -Web-Formblätter für Eintragungen benutzt (anstatt den -Rich-Text-Editor). Dazu tippen Sie den Text einfach so, als -würden Sie eine normale E-Mail versenden.

              -

              Wenn Sie Ihren Text speichern wird Moodle in den meisten -Fällen Ihren Text automatisch formatieren.

              -

              Zum Beispiel, URLs wie http://yahoo.com oder sogar www.yahoo.com werden in Links -umgewandelt.

              -

              Ihre unterbrochenen Linien werden erhalten und Leerzeilen -starten neue Absätze.

              -

              Smileys wie :) bekommen automatisch ihr grafisches -Aussehen.

              -

              Sie können sogar HTML-Code einbetten falls Sie es -wünschen und er wird beibehalten.

              -

              Mehr -Informationen über Moodle Auto-Formatierung.

              -
            +

            Text formatieren

            -

            2. HTML Format

            -
              -

              Dieses Format setzt den Text in reinem HTML voraus. Wenn Sie -den HTML-Editor verwenden, um Text zu bearbeiten, dann ist es das -Vorgabe-Format- alle Kommandos in der Toolbar zu erstellen in HTML.

              -

              Selbst wenn Sie nicht den Richtext HTML-Editor benutzen, -können Sie HTML-Code in Ihrem Text benutzen und es kommt -genau das heraus, was sie beabsichtigen.

              -

              Anders als beim Moodle Auto-Format wird keine automatische -Formatierung durchgeführt.

              -

              Mehr -Informationen über HTML

              -

              Mehr -Informationen über den Richtext HTML-Editor

              -
            +

            Schreibt man in Moodle einen Text gibt es gegenwärtig zwei Formate, welche man wählen kann, um diesen Text zu erstellen. Die Wahl dieser Formate hängt von Ihrer Fachkenntnis und dem Browsertyp ab, den Sie verwenden. -

            3. Plain Textformat

            +

            Normalerweise können Sie die Einstellungen so belassen wie sie sind, und das System liefert die Ergebnisse, die Sie erwarten.. -

              -

              Dieses Format empfiehlt sich, um große Mengen an Code oder HTML einzugeben, -die genau so angezeigt werden sollen, wie Sie sie eingegeben haben.

              +

              1. Moodle Auto-Format

              -

              Leerzeichen und neue Zeilen werden umgesetzt. Sonst bleibt Ihr Text aber -unberührt.

              -
            +
              +

              Dieses Format verwendet man am besten, wenn man normale Web-Formblätter für Eintragungen benutzt (anstatt den Rich-Text-Editor). Dazu tippen Sie den Text einfach so, als würden Sie eine normale eMail versenden. +

              Wenn Sie Ihren Text speichern wird Moodle in den meisten Fällen Ihren Text automatisch formatieren. -

              4. Markdown Textformat

              +

              Zum Beispiel, URLs wie + http://yahoo.com oder sogar + www.yahoo.com werden in Links umgewandelt. +

              Ihre unterbrochenen Linien werden erhalten und Leerzeilen starten neue Absätze. +

              Smileys wie :) bekommen automatisch ihr grafisches Aussehen. +

              Sie können sogar HTML-Code einbetten falls Sie es wünschen und er wird beibehalten. +

              Mehr Informationen über Moodle Auto-Formatierung.

              +
            -
              -

              Das Markdown-Format erlaubt es recht einfach - sauber formatierte XHTML Seiten zu erfassen. Sie können Text einfach schreiben - in der Art und Weise wie Sie z.B. auch E-Mails schreiben.

              +

              2. HTML Format

              -

              Es eignet sich gut um Text mit wenigen Formatierungen (Überschriften und -Litsen), aber ohne Bilder und Links zu erstellen.

              +
                +

                Dieses Format setzt den Text in reinem HTML voraus. Wenn Sie den HTML-Editor verwenden um Text zu bearbeiten, dann ist es das Vorgabe-Format- alle Kommandos in der Toolbar erstellen HTML für Sie. + +

                Selbst wenn Sie nicht den Richtext HTML-Editor benutzen, können Sie HTML-Code in Ihrem Text benutzen, und es kommt genau das heraus, was sie beabsichtigen. + +

                Anders als beim Moodle Auto-Format wird keine automatische Formatierung durchgeführt. +

                Mehr Informationen über HTML

                +

                Mehr Informationen über den Richtext HTML-Editor

                +
              -

              Mehr Informationen zum - Markdown-Format

              -
            \ No newline at end of file diff --git a/lang/de/help/uploadusers.html b/lang/de/help/uploadusers.html index 06750e105a2..795624ce1ff 100644 --- a/lang/de/help/uploadusers.html +++ b/lang/de/help/uploadusers.html @@ -1,67 +1,31 @@ -

            Teilnehmerimport (bulk upload)

            -

            Beachten Sie bitte: es ist normalerweise nicht -erforderlich Anwender in großen Mengen nach Moodle zu -importieren - um den eigenen Arbeitsaufwand zu begrenzen -sollten andere Formen der Bestätigung von Teilnehmern -geprüft werden, die keine manuelle Erfassung erfordern, wie -die Verbindung zu bestehenden externen Datenbanken oder die -Einrichtung von Zugängen durch die Teilnehmer selber. -Weitere Hinweise dazu finden Sie im Bereich Anmeldung -/Authentifikation im Administrationsmenu.

            -

            Wenn Sie dennoch eine große Zahl von Anwendern aus einer -Textdatei importieren wollen, müssen Sie die Textdatei -folgendermaßen aufbauen:

            +

            Upload users

            + +

            Beachten Sie bitte: es ist normalerweise nicht erforderlich Anwender in großen Mengen nach Moodle zu importieren - um den eigenen Arbeitsaufwand zu begrenzen sollten anderre Formen der Bestätigung von Teilnehmern geprüft werden, die keine manuelle Erfassung erfordern, wie die Verbindung zu bestehenden externen Datenbanken oder die Einrichtung von Zugängen durch die Teilnehmer selber. Weitere Hinweise dazu finden Sie im Bereich Anmeldung /Authentifikation im Administrationsmenu.

            +

            Wenn Sie dennoch eine große Zahl von Anwendern aus einer Textdatei importieren wollen, müssen Sie die Textdatei folgendermaßen aufbauen:

            +
              -
            • Jede Zeile der Datei enthält einen einzelnen -Datensatz
            • -
            • Jeder Datensatz besteht aus einer Reihe von Datenfeldern, die -durch Kommas getrennt sind
            • -
            • Der erste Datensatz der Datei (erste Zeile) enthält eine -Liste der Feldnamen. Diese Zeile legt das Format der restlichen -Zeilen fest. Die Feldnamen entsprechen den Datensätzen, die -im Anmeldeformular in der Datenbank genutzt werden. -
              -

              Erforderliche Datenfeldnamen: diese -Datenfeldnamen müssen in der ersten Zeile eingetragen werden -und für jeden Nutzer definiert werden

              -username, -password, firstname, lastname, email -

              Default Datenfeldnamen: diese sind optional - -wenn diese nicht eingebunden werden, werden die Werte für -diese Felder vom Basiseintrag übernommen, die bei jeder -Neuanmeldung voreingestellt sind. (Der Spracheintrag für -Deutsch lautet 'de'.

              -

              institution, department, city, -country, lang, timezone

              -

              Optionale Datenfeldnamen: all diese -Einträge sind völlig freigestellt. Als Kursname -(course1,2, etc) werden die Kurzbezeichnungen der Kurse genutzt - -wenn die Kurse angelegt sind, werden die Teilnehmer dann in den -Kursen automatisch angemeldet.

              -

              idnumber, icq, phone1, phone2, -address, url, description, mailformat, maildisplay, htmleditor, -autosubscribe, course1, course2, course3, course4, -course5

              -
              -
            • -
            • Wenn Sie Kommas in den Datenfeldern verwenden müssen, -nutzen Sie die Eingabe &#44 - das Skript wird diese dann -automatisch in ein Komma umwandeln.
            • -
            • Für Boole-sche Felder verwenden Sie 0 für falsch -und 1 für richtig/wahr.
            • -
            • Anmerkung: Wenn ein Nutzer bereits in der Moodle -Nutzerdatenbank registriert ist, wird er für die neuen Kurse -als Teilnehmer eingetragen ohne die anderen Daten zu -aktualisieren.
            • +
            • Jede Zeile der Datei enthält einen einzelnen Datensatz
            • +
            • Jeder Datensatz besteht aus einer Reihe von Datenfeldern, die durch Kommas getrennt sind
            • +
            • Der erste Datensatz der Datei (erste Zeile) enthält eine Liste der Feldnamen. Diese Zeile legt das Format der restlichen Zeilen fest. Die Feldnamen entsprechen den Datensätzen, die im Anmeldeformular in der Datenbank genutzt werden. +
              +

              Erforderliche Datenfeldnamen: diese Datenfeldnamen müssen in der ersten Zeile eingetragen werden und für jeden Nutzer definiert werden

              +

              + username, password, firstname, lastname, email

              +

              +

              Default Datenfeldnamen: diese sind optional - wenn diese nicht eingebunden werden, werden die Werte für diese Felder vom Basiseintrag übernommen, die bei jeder Neuanmeldung voreingestellt sind. (Der Spracheintrag für Deutsch lautet 'de'.

              +

              institution, department, city, country, lang, timezone

              +

              Optionale Datenfeldnamen: all diese Einträge sind völlig freigestellt. Als Kursname (course1,2, etc) werden die Kurzbezeichnungen der Kurse genutzt - wenn die Kurse angelegt sind, werden die Teilnehmer dann in den Kursen automatisch angemeldet.

              +

              idnumber, icq, phone1, phone2, address, url, description, mailformat, maildisplay, htmleditor, autosubscribe, course1, course2, course3, course4, course5

              +
              +
            • +
            • Wenn Sie Kommas in den Datenfeldern verwenden müssen, nutzen Sie die Eingabe &#44 - das Skript wird diese dann automatisch in ein Komma umwandeln.
            • +
            • Für Boole-sche Felder verwenden Sie 0 für falssch und 1 für richtig/wahr.
            • +
            • Anmerkung: Wenn ein Nutzer bereits in der Moodle Nutzerdatenbank registriert ist, wird er für die neuen Kurse als Teilnehmer eingetragen ohne die anderen Daten zu aktualisieren.
            -

            Hier ist ein Beispiel für eine gültige -Importdatei:

            -

            username, -password, firstname, lastname, email, lang, idnumber, -maildisplay, course1
            -jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, -3663737, 1, Intro101
            -reznort, somesecret, Trent, Reznor, reznort@someplace.edu, en_us, -6736733, 0, Advanced202

            + + +

            Hier ist ein Beispiel für eine gültige Importdatei:
            +

            +

            username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1
            +jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, 3663737, 1, Intro101
            +reznort, somesecret, Trent, Reznor, reznort@someplace.edu, en_us, 6736733, 0, Advanced202

            diff --git a/lang/de/help/wiki.html b/lang/de/help/wiki.html index 3608c2f37af..58dd59f0569 100644 --- a/lang/de/help/wiki.html +++ b/lang/de/help/wiki.html @@ -1,99 +1,311 @@ -

            So schreiben Sie Texte im Wiki-Format

            -

            Mit Wiki-Formatierungen können Sie viele einfache -Formatierungen erstellen, die beim Seitenaufruf automatisch in -XHTML umgewandelt werden. Sie müssen dazu kein HTML erlernen -und können trotzdem ansehnliche Ergebnisse erzielen. Der -Text sieht anschließend genau so aus, wie Sie ihn erstellt -haben.

            -

            Mit einigen wenigen Sonderzeichen formatieren Sie Ihren -Text.

            + + + + + + +
            + +

            So schreiben Sie Texte im Wiki-Format

            + +

            Mit Wiki-Formatierungen können Sie viele einfache Formatierungen vornehmen, die beim Seitenaufruf automatisch in XHTML umgewandelt werden. Sie müssen dazu kein HTML erlernen und können trotzdem ansehnliche Ergebnisse erzielen. Der Text sieht anschließend genau so aus, wie Sie ihn erstellt haben.

            + +

            Mit einigen wenigen Sonderzeichen formatieren Sie Ihren Text.

            +

            Formatieren eines Absatzes

            -

            Absätze werden durch mindestens eine Leerzeile getrennt. -Um einem Absatz eine spezielle Formatierung zuzuweisen, -fügen Sie eines der folgenden Sonderzeichen zum ersten -Buchstaben in der ersten Zeile des Absatzes, gefolgt durch ein -Leerzeichen:

            - - - - - - - - - - - - - - - - +

            Absätze werden durch mindestens eine Leerzeile getrennt. Um einem Absatz +eine spezielle Formatierung zuzuweisen fügen Sie eines der folgenden +Sonderzeichen zum ersten Buchstaben in der ersten Zeile des Absatzes, gefolgt +durch ein Leerzeichen:

            +
            CharacterBlock Type
            No characterOrdinary paragraph
            >Quotation
            SpacePreformatted Text (Monospaced)
            %Preformatted and Wikki formatting is ignored
            !#Heading - where # is 1-6, the heading level (1 is biggest)
            Q.Question - styling info added to paragraph to improve question/answer presentation (in theme)
            A.Answer - as above but answer
            + + + + + + + + + + + + + + + + + + + + + + + +
            +

            Zeichen

            +
            +

            Absatzformatierung

            +
            +

            Kein Buchstabe

            +
            +

            gewöhnlicher Absatz

            +
            +

            >

            +
            +

            Bezugnahme

            +
            +

            Leerzeichen

            +
            +

            Vorformatierter Text (festes Leerzeichen)

            +
            +

            %

            +
            +

            Vorformatiert and Wiki-Formatierung wird ignoriert

            +
            +

            !#

            +
            +

            Überschrift - wobei # 1-6 ist, Größe der Überschrift  (1 ist am größten)

            +
            +

            Formatierung einer Aufzählung

            -

            Einfache Listen können schnell entworfen werden indem man -eine Sonderzeichen am Beginn jeder Linie platziert, gefolgt von -einem Leerzeichen. Die Aufzählung wird durch eine Leerzeile -beendet. Momentan können Aufzählungen nicht vermischt -oder verschachtelt werden. Begriffsdefinitionen und Schriftarten -können frei vermischt werden, um den gewünschten Effekt -zu erhalten.

            + +

            Einfache Listen können schnell entworfen werden, indem man eine +Sonderzeichen am Beginn jeder Linie platziert, gefolgt von einem Leerzeichen. Die +Aufzählung wird durch eine Leerzeile beendet. Momentan können Aufzählungen +nicht vermischt oder verschachtelt werden. Begriffsdefinitionen und Schriftarten +können frei vermischt werden, um den gewünschten Effekt zu erhalten.

            +

            Die Sonderzeichen wie folgt:

            - - - - - + +
            BuchstabeAufzählungsformat
            *Ungeordnete Aufzählung (Kugelpunkte)
            #Geordnete Aufzählung (1,2,3 usw.)
            ;Definition list, Text
            + + + + + + + + + + + + + + + + + + + +
            +

            Buchstabe

            +
            +

            Aufzählungsformat

            +
            +

            *

            +
            +

            Ungeordnete Aufzählung (Kugelpunkte)

            +
            +

            #

            +
            +

            Geordnete Aufzählung (1,2,3 usw.)

            +
            +

            :

            +
            +

            Definition list, definition

            +
            +

            ;

            +
            +

            Definition + list, Text

            +
            +

            Textformatierungen

            -

            Sie können jederzeit mitten im Text eine Formatierung der -eingegebenen Zeichen vornehmen. Die zu formatierenden Zeichen -(Buchstaben) werden mit einem der folgenden Zeichen begonnen und -beendet. Eine Formatierung (z.B. unterstrichen) ist auf einen -Absatz begrenzt. Für einen neuen Absatz muß sie erneut -werden. Diese Codes stehen zur Verfügung:

            - +

            Sie können jederzeit mitten im Text eine Formatierung der eingegebenen Zeichen vornehmen. Die zu formatierenden Zeichen (Buchstaben) werden mit einem der im folgenden dargestellten Zeichen begonnen und beendet. Eine Formatierung (z.B. unterstrichen) ist auf einen Absatz begrenzt. Für einen neuen Absatz muß sie erneut werden. Diese Codes stehen zur Verfügung:

            - +
            ExampleExampleFormatting
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +

            Eingabe

            +
            +

            Ergebnis

            +
            +

            Beschreibung

            +
            +

            *hello + world*

            +
            +

            hello + world

            +
            +

            stark oder fett

            +
            +

            /hello + world/

            +
            +

            hello + world

            +
            +

            Hervorhebung oder kursiv

            +
            +

            +hello + world+

            +
            +

            hello world

            +
            +

            einefügter + Text

            +
            +

            -hello + world-

            +
            +

            hello world

            +
            +

            gelöscht oder “durchgeschlagen”

            +
            +

            hello + ~world~

            +
            +

            hello world

            +
            +

            tiefgestellt

            +
            +

            hello + ^world^

            +
            +

            hello world

            +
            +

            hochgestellt

            +
            +

            "hello + world"

            +
            +

            hello + world

            +
            +

            zitiert

            +
            +

            %hello + world%

            +
            +

            hello world

            +
            +

            festes + Leerzeichen

            +
            +

            @hello + world@

            +
            +

            hello + world

            +
            +

            Anführung

            +
            -
          • *hello world*hello worldStrong or Bold
            /hello world/hello worldEmphasis or Italics
            +hello world+hello worldInserted text
            -hello world-hello worldDeleted or Strikethrough
            hello ~world~hello worldSubscript
            hello ^world^hello worldSuperscript
            "hello world"“hello world”Quoted
            %hello world%hello worldCode or Monospaced
            @hello world@hello worldCite

            Abkürzungen

            -

            Abkürzungen können geschrieben werden, indem man die -Abkürzung in großen Buchstaben schreibt, gefolgt von -der Erklärung in Klammern. Es muss kein Leerzeichen zwischen -Abkürzung und Klammern sein. Beispiel:

            -

            HTML(Hypertext Markup Language)
            + +

            Abkürzungen können geschrieben werden, indem man die Abkürzung in großen +Buchstaben schreibt, gefolgt von der Erklärung in Klammern. Es muss kein +Leerzeichen zwischen Abkürzung und Klammern sein. Beispiel:

            + +

            HTML(Hypertext Markup Language)
            HTML

            +

            Automatische Umwandlung

            -

            Viele allgemein verwendet Funktionen werden automatisch in -ihre XHTML Äquivalente umgewandelt:

            -
              -
            • HTTP-Links werden in aktive Links umgewandelt
            • -
            • ..., (R), (TM), (C), 1/4, 1/2, 3/4 werden alle umgewandelt in korrekte -Buchstaben
            • -
            • Ziffer x Ziffer wird umgewandelt in ein korrektes -Multiplikationssymbol
            • -
            • Eine Linie welche mit mindestens 4 Anschlägen beginnt, wir -in eine volle horizontale Linie umgewandelt
            • -
            \ No newline at end of file + +

            Viele allgemein verwendet Funktionen werden automatisch in ihre XHTML +Äquivalente umgewandelt:

            + +
              +
            • HTTP-Link werden in active Links + umgewandelt
            • +
            • ..., (R), (TM), (C), 1/4, + 1/2, 3/4 werden alle  umgewandelt + in korrekte Buchstaben
            • +
            • Ziffer x Ziffer wird + umgewandelt in ein korretes Multiplikationssymbol
            • +
            • Eine Linie welche mit + mindestens 4 Anschlägen beginnt, wir in eine volle horizontale Linie + umgewandelt
            • +
            + + + + + + \ No newline at end of file diff --git a/lang/de/help/wiki/checklinks.html b/lang/de/help/wiki/checklinks.html index cc15d8e3631..e6391a58d86 100644 --- a/lang/de/help/wiki/checklinks.html +++ b/lang/de/help/wiki/checklinks.html @@ -1,6 +1,3 @@ -

            Links prüfen

            -
            -

            Dieses Tool prüft alle http:// Links auf Ihre -Verfügbarkeit. Anschließend werden die Wikiseite -gespeichert und die 'toten' Links für die weitere -Berarbeitung markiert.

            \ No newline at end of file +

            Links prüfen

            +
            +

            Dieses Tool prüft alle http:// Links auf Ihre Verfügbarkeit. Anschließend wird die Wikiseite gespeichert und die 'toten' Links für die weitere Berarbeitung markiert.

            \ No newline at end of file diff --git a/lang/de/help/wiki/ewikiacceptbinary.html b/lang/de/help/wiki/ewikiacceptbinary.html index fb75d95b016..aa7ddc821ff 100644 --- a/lang/de/help/wiki/ewikiacceptbinary.html +++ b/lang/de/help/wiki/ewikiacceptbinary.html @@ -1,16 +1,7 @@ - -

            Binäre Dateien zulassen

            -

            Wenn Sie binären Inhalt zulassen, haben Sie folgende -Möglichkeiten:

            -
              -
            1. Sie können Bilder in Wikiseiten einfügen. Beim -Bearbeiten einer Seite wird ein Feld zum Hochladen von Bildern -gezeigt. Nach dem Hochladen wird ein Datenbankdateiname -angezeigt, den Sie in eckigen Klammern in die Seite einfügen -können. Zum Beispiel: -[internal://c34f7af3a29b17dc2ff4b74ccd5c750f.gif].
            2. -
            3. Sie können Dateien zur Wikiseite hinzufügen. Die -Dateigröße ist begrenzt auf die -Größenbeschränkung, die für Ihren Kurs -festgelegt sind.
            4. -
            \ No newline at end of file +

            Binäre Dateien zulassen

            + +

            Wenn Sie binären Inhalt zulassen, haben Sie folgende Möglichkeiten:
            +

              +
            1. Sie können Bilder in Wikiseiten einfügen. Beim Bearbeiten einer Seite wird ein Feld zum Hochladen von Bildern gezeigt. Nach dem Hochladen wird ein Datenbankdateiname angezeigt, den Sie in eckigen Klammern in die Seite einfügen können. Zum Beispiel: [internal://c34f7af3a29b17dc2ff4b74ccd5c750f.gif].
            2. +
            3. Sie können Dateien zur Wikiseite hinzufügen. Die Dateigröße ist begrenzt auf die Größenbeschränkung, die für Ihren Kurs festgelegt sind.
            4. +

            \ No newline at end of file diff --git a/lang/de/help/wiki/htmlmode.html b/lang/de/help/wiki/htmlmode.html index 7fff042d08e..eae2032d904 100644 --- a/lang/de/help/wiki/htmlmode.html +++ b/lang/de/help/wiki/htmlmode.html @@ -1,14 +1,13 @@ -

            HTML Modi

            -

            Sie haben die folgenden Möglichkeiten HTML-Code zu -verwenden:

            -
            -
            Kein HTML
            -
            Keine HTML-Tags. Formatierung erfolgt ausschließlich -nach den Formatierunsgregeln des Wiki.
            -
            Sicheres HTML
            -
            Einige HTML-Tags sind zugelassen und werden richtig -angezeigt.
            -
            Nur HTML
            -
            Keine WikiWörter, nur HTML. Diese Option erlaubt den -Gebrauch des HTML-Editors.
            -
            +

            HTML Mode

            + +

            Sie haben die folgenden Möglichkeiten HTML-Code zu verwenden: +

            +
            Kein HTML
            +
            Keine HTML-Tags. Formatierung erfolgt ausschließlich nach den Formatierunsgregeln des Wiki.
            +
            Sicheres HTML
            +
            Einige HTML-Tags sind zugelassen und werden richtig angezeigt.
            +
            Nur HTML
            +
            Keine WikiWörter, nur HTML. Diese Option erlaubt den Gebrauch des HTML-Editors.
            +
            + +

            \ No newline at end of file diff --git a/lang/de/help/wiki/mods.html b/lang/de/help/wiki/mods.html index 4852a721333..67ee1028740 100644 --- a/lang/de/help/wiki/mods.html +++ b/lang/de/help/wiki/mods.html @@ -1,22 +1,10 @@ -

             Wikis

            -
            -

            Wiki-Texte können leicht gemeinsam von allen Teilnehmer/inenn bearbeitet werden. Sie -verwenden einfache Formate zur Gestaltung des Textes.

            -

            "Wiki wiki" bedeutet "ungeheuer schnell" in der Hawaianischen -Sprache. Die Möglichkeit schnell und einfach Texte zu -erstellen und zu bearbeiten ist einer der Vorzüge der Wiki -Technologie. Niemand überprüft Ihre Veränderungen -oder Ergänzungen zu einem Text bevor er veröffentlicht -wird. In einem Wiki steht Ihr Text allen Teilnehmer/innen sofort zum -Lesen und Weiterbearbeiten zur Verfügung, wenn Sie ihn -gespeichert haben.

            -

            Wikis ermöglichen das gemeinsame Arbeiten an Texten und -Konzepten in der Gruppe. Die Mitglieder arbeiten gemeinsam an -einem Text, lesen, diksutieren, erweitern, ergänzen und -kürzen den Text. Frühere Versionen werden nicht -gelöscht. Sie können einfach wieder hergestellt -werden.

            -

            Moodle nutzt das Wiki-Programm Erfurt -Wiki.

            -
            \ No newline at end of file +

             Wikis

            +
              +

              Wiki-Texte können leicht gemeinsam bearbeitet werden. Sie verwenden einfache Formate zur Gestaltung des Textes.

              + +

              "Wiki wiki" bedeutet "ungeheuer schnell" in der Hawaianischen Sprache. Die Möglichkeit schnell und einfach Texte zu erstellen und zu bearbeiten ist einer der Vorzüge der Wiki Technologie. Niemand überprüft Ihre Veränderungen oder Ergänzungen zu einem Text bevor er veröffentlicht wird. In einem Wiki steht Ihr Text allen Teilnehmern sofort zum Lesen und Weiterbearbeiten zur Verfügung, wenn Sie ihn gespeichert haben.

              + +

              Wikis ermöglichen das gemeinsame Arbeiten an Texten und Konzepten in der Gruppe. Die Mitglieder arbeiten gemeinsam an einem Text, lesen, diksutieren, erweitern, ergänzen und kürzen den Text. Frühere Versionen werden nicht gelöscht. Sie können einfach wieder hergestellt werden.

              + +

              Moodle nutzt das Wiki-Programm Erfurt Wiki.

              +
            diff --git a/lang/de/help/wiki/removepages.html b/lang/de/help/wiki/removepages.html index 26bbb84cc2a..2bdbc3a9443 100644 --- a/lang/de/help/wiki/removepages.html +++ b/lang/de/help/wiki/removepages.html @@ -1,7 +1,3 @@ -

            Seiten entfernen

            -

            Diese Funktion ermöglicht es Ihnen, Seiten aus Ihrem Wiki -komplett zu entfernen. Eine grober Check wird durchgeführt -und Fehler werden ggfs. angezeigt.

            -

            Bitte seien Sie vorsichtig. Überlegen Sie zweimal, ob Sie -eine Seite wirklich entfernen wollen. Meist ist dieser Vorgang -nicht erforderlich.

            +

            Seiten entfernen

            +

            Diese Funktion ermöglicht es Ihnen Seiten aus Ihrem Wiki komplett zu entfernen. Eine grober Check wird durchgeführt und Fehler werden ggfs. angezeigt.

            +

            Bitte seien Sie vorsichtig. Überlegen Sie zweimal, ob Sie eine Seite wirklich entfernen wollen. Meist ist dieser Vorgang nicht erforderlich.

            \ No newline at end of file diff --git a/lang/de/help/wiki/revertauthorfieldpattern.html b/lang/de/help/wiki/revertauthorfieldpattern.html index dc2772e9aed..5de03adbca2 100644 --- a/lang/de/help/wiki/revertauthorfieldpattern.html +++ b/lang/de/help/wiki/revertauthorfieldpattern.html @@ -1,8 +1,5 @@ - -

            Eine große Anzahl von -Veränderungen rückgängig machen

            -

            Sie müssen hier einen eindeutigen Ausdruck (string) -verwenden. Sie können keinen Platzhalter "*" oder "regex" -verwenden. Am besten verwenden Sie die IP-Adresse oder den -Hostnamen des Angreifers. Verwenden Sie nicht die Port-Nummer, -weil diese sich mit jedem HTTP Zugriff verändert.

            +

            Eine große Anzahl von Veränderungen rückgängig machen

            +

            +Sie müssen hier einen eindeutigen Ausdruck (string) verwenden. Sie können keinen Platzhalter "*" oder "regex" verwenden. Am besten verwenden Sie die IP-Adresse oder den Hostnamen des Angreifers.. Verwenden Sie nicht die Port-Nummer, weil diese sich mit jedem HTTP Zugriff verändert. + +

            \ No newline at end of file diff --git a/lang/de/help/wiki/revertpages.html b/lang/de/help/wiki/revertpages.html index 1a1eb3838c0..f7834d0ade9 100644 --- a/lang/de/help/wiki/revertpages.html +++ b/lang/de/help/wiki/revertpages.html @@ -1,9 +1,3 @@ - -

            Seiten wieder herstellen

            -

            Wenn jemand viele Seiten in Ihrem Wiki gelöscht hat, -können Sie diese Veränderungen automatisch -rückgängig machen. Dieses Script (kleines Programm) -löscht alle Versionen in deren Autoreneintrag {author} ein -bestimmter Eintrag vorliegt. Sie können statt des -Autorennamens auch die IP-Adresse oder den Hostnamen -verwenden.

            \ No newline at end of file +

            Seiten wieder herstellen

            +

            Wenn jemand viele Seiten in Ihrem Wiki gelöscht hat, können sie diese Veränderungen automatisch rückgängig machen. Dieses Script (kleines Programm) löscht alle Versionen in deren Autoreneintrag {author} ein bestimmter Eintrag vorliegt. Sie können statt des Autorennamens auch die IP-adresse oder den Hostnamen verwenden. +

            \ No newline at end of file diff --git a/lang/de/help/wiki/setpageflags.html b/lang/de/help/wiki/setpageflags.html index 97f79df3619..9f69ab91752 100644 --- a/lang/de/help/wiki/setpageflags.html +++ b/lang/de/help/wiki/setpageflags.html @@ -1,35 +1,12 @@ -

            Seiteneinstellungen ändern

            -

            Flags (Auszeichnungen, Markierungen) sind einer Wikiseite -zugewiesen und ermöglichen, den Seitentyp zu verändern -oder das Verhalten der Seite anzupassen.

            -

            Flag Beschreibungen:

            -/td> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            TXTDiese Seite enthält Text.
            BINDiese Seiten enthält binäre Daten.
            OFFDiese Seite ist abgeschaltet.
            HTMHTML-Codes sind auf dieser Seite erlaubt. (Wiki-Einstellungen -werden vorrangig behandelt)
            ROSeite ist nur lesbar.
            WRSeite kann überschrieben werden.
            \ No newline at end of file +

            Seiteneinstellungen ändern

            +

            Flags (Auszeichnungen, Markierungen) sind einer Wikiseite zugewiesen und ermöglichen den Seitentyp zu verändern oder das Verhalten der Seite anzupassen.

            + +

            Flag Beschreibungen:

            + + + + + + + /td> +
            TXTDiese Seite enthält Text.
            BINDiese Seiten enthält binäre Daten.
            OFFDiese Seite ist abgeschaltet.
            HTMHTML-Codes sind auf dieser Seite erlaubt. (Wiki-Einstellungen werden vorrangig behandelt)
            ROSeite ist nur lesbar.
            WRSeite kann überschrieben werden.
            diff --git a/lang/de/help/wiki/strippages.html b/lang/de/help/wiki/strippages.html index ee422997a70..47d2460e398 100644 --- a/lang/de/help/wiki/strippages.html +++ b/lang/de/help/wiki/strippages.html @@ -1,5 +1,2 @@ - -

            Ältere Versionen der Seiten -entfernen

            -

            Diese Funktion beseitigt ältere Versionen einer Seite aus -der Datenbank. Nur die neuesten Versionen bleiben erhalten.

            +

            Ältere Versionen der Seiten entfernen

            +

            Diese Funktion beseitigt ältere Versionen einer Seite aus der Datenbank. Nur die neuesten Versionen bleiben erhalten.

            \ No newline at end of file diff --git a/lang/de/help/wiki/wikiname.html b/lang/de/help/wiki/wikiname.html index a6a64605bf5..41b2b607e32 100644 --- a/lang/de/help/wiki/wikiname.html +++ b/lang/de/help/wiki/wikiname.html @@ -1,16 +1,8 @@ - -

            Name der Startseite des Wiki

            -

            Legen Sie den Namen der Startseite Ihres Wikis fest. Er wird -immer dann angezeigt, wenn die erste Seite des Wikis aufgerufen -wird. Wenn Sie hier kein Wiki-Wort eingeben, wird Ihr Begriff -automatisch in ein Wiki-Wort umgewandelt. Wiki Worte dienen der -Verlinkung von Wiki-Seiten. Sie bestehen aus einem Wort mit zwei -Großbuchstaben. Diese sog. Wiki 'Kamelhöcker' sind -typisch für die Arbeit mit Wikis. Die Großbuchstaben -dürfen nicht direkt aufeinander folgen. Zwischen ihnen -muß mindestens ein klein geschriebener Buchstabe sein. -Wikis erkennen diese Wörter als Links zu anderen Seiten.
            -
            -Wenn Sie dieses Feld leer lassen wird ein Eintrag aus der -Einstellung 'wikidefaultpagename' in der Sprachdatei verwandt. -Dieser lautet zur Zeit "WikiIndex".

            \ No newline at end of file +

            Name der Startseite des Wiki

            +

            +Legen Sie den Namen der Startseite Ihres Wikis fest. Er wird immer dann angezeigt, wenn die erste Seite des Wikis aufgerufen wird. Wenn Sie hier kein Wiki-Wort eingeben, wird Ihr Begriff automatisch in ein Wiki-Wort umgewandelt. +Wiki Worte dienen der Verlinkung von Wiki-Seiten. Sie bestehen aus einem Wort mit zwei Großbuchstaben. Diese sog. Wiki 'Kamelhöcker' sind typisch für die Arbeit mit Wikis. Die Großbuchstaben dürfen nicht direkt aufeinander folgen. Zwischen ihnen muß mindestens ein klein geschriebener Buchstabe sein. Wikis erkennen diese Wörter als Links zu anderen Seiten. +

            +Wenn Sie dieses Feld leer lassen wird ein Eintrag aus der Einstellung +'wikidefaultpagename' in der Sprachdatei verwandt. Dieser lautet zur Zeit "WikiIndex". +

            diff --git a/lang/de/help/wiki/wikitype.html b/lang/de/help/wiki/wikitype.html index 427bd3ad411..1d4be5ab931 100644 --- a/lang/de/help/wiki/wikitype.html +++ b/lang/de/help/wiki/wikitype.html @@ -1,64 +1,38 @@ -

            Zugriffsberechtigung auf das Wiki -festlegen

            -
              -
            • Der/die Trainer/in kann jederzeit das Wiki innerhalb des Kurses bearbeiten -
            • -
            • Es gibt drei Einstellungen für die Wikis: Trainer/in, -Kurs/Gruppe, Teilnehmer/innen
            • -
            • Die Aktivität hat den Moodle-Gruppenstatus: "Keine -Gruppen" "Getrennte Gruppen" und "Sichtbare Gruppen"
            • -
            • Der gleiche Basisinhalt wird für alle Gruppen -genutzt
            • -
            -In dieser Tabelle finden Sie alle Informationen zu den einzelnen -Einstellungen: - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Keine GruppenGetrennte GruppenSichtbare Gruppen
            Trainer/inTrainer/innen erstellen und -bearbeiten das Wiki. Teilnehmer/innen können die Texte des -Wiki lesen, aber nicht bearbeiten.Jede Gruppe hat ein eigenes Wiki, -das nur von der Trainer/in bearbeitet werden kann. Die -Teilnehmer/innen können nur das Wiki der eigenen Gruppe -sehen.Jede Gruppe hat ein eigenes Wiki, -das nur von der Trainer/in bearbeitet werden kann. Die -Teilnehmer/innen können alle Wikis aller Gruppen sehen. Mit -einer Auswahlbox wählen sie welches Wiki sie sich -ansehen.
            Kurs/GruppeTrainer/in und Teilnehmer/innen -können das Wiki lesen, ergänzen und bearbeiten.Teilnehmer/innen können nur das -Wiki der eigenen Gruppe sehen und bearbeiten.Jede Gruppe hat ein eigenes Wiki, -das von ihr gesehen und bearbeitet werden kann. Die -Teilnehmer/innen können alle Wikis aller Gruppen sehen. Mit -einer Auswahlbox wählen sie welches Wiki sie sich -ansehen.
            Teilnehmer/innenJede/r Teilnehmer/in hat ein eigenes -Wiki und kann es bearbeiten.Jede/r Teilnehmer kann ein eigenes -Wiki bearbeiten und die Wikis der anderen Teilnehmer/innen der -eigenen Gruppe sehen. Eine Auswahlbox wechselt zwischen den -Wikis.Jede/r Teilnehmer/in hat ein eigenes -Wiki und kann die Wikis aller anderen Teilnehmer/innen einsehen. -Eine Auswahlbox ermöglicht den Wechsel zwischen den -Wikis.
            \ No newline at end of file +

            Zugriffsberechtigung auf das Wiki festlegen

            +

            +

              +
            • Der/die Trainer/in kann jederzeit das Wiki bearbeite innerhalb des Kurses
            • +
            • Es gibt drei Einstellungen für die Wikis: Trainer/in, Kurs/Gruppe, Teilnehmer/innen
            • +
            • Die Aktivität hat den Moodle-Gruppenstatus: "Keine Gruppen" "Getrennte Gruppen" und "Sichtbare Gruppen"
            • +
            • Der gleiche Basisinhalt wird für alel Gruppen genutzt
            • +
            + +In dieser Tabelle finden Sie alle Informationen zu den einzelnen Einstellungen: + + + + + + + + + + + + + + + + + + + + + + + + +
            + Keine GruppenGetrennte GruppenSichtbare Gruppen
            Trainer/inTrainer/innen erstellen und bearbeiten das Wiki. Teilnehmer/innen können die Texte des Wiki lesen, aber nicht bearbeiten.Jede Gruppe hat ein eigenes Wiki, das nur von der Trainer/in bearbeitet werden kann. Die Teilnehmer/innen können nur das Wiki der eigenen Gruppe sehen.Jede Gruppe hat ein eigenes Wiki, das nur von der Trainer/in bearbeitet werden kann. Die Teilnehmer/innen können alle Wikis aller Gruppen sehen. Mit einer Auswahlbox wählen sie welches Wiki sie sich ansehen.
            Kurs/GruppeTrainer/in und Teilnehmer/innen können das Wiki lesen, ergänzen und bearbeiten.Teilnehmer/innen können nur das Wiki der eigenen Gruppe sehen und bearbeiten..Jede Gruppe hat ein eigenes Wiki, das von ihr gesehen und bearbeitet werden kann. Die Teilnehmer/innen können alle Wikis aller Gruppen sehen. Mit einer Auswahlbox wählen sie welches Wiki sie sich ansehen.
            Teilnehmer/innenJede/r Teilnehmer/in hat ein eigenes Wiki und kann es bearbeiten.Jede/r Teilnehmer kann ein eigenes Wiki bearbeiten und die Wikis der anderen Teilnehmer/innen der eigenen Gruppe sehen. Eine Auswahlbox wechselt zwischen den Wikis.Jed/r Teilnehmner/in hat ein eigenes Wiki und kann die Wikis aller anderen Teilnehmer/innen einsehen. Eine Auswahlbox ermöglicht den Wechsel zwischen den Wikis.
            + +

            diff --git a/lang/de/help/wiki/wikiusage.html b/lang/de/help/wiki/wikiusage.html index 49dd6d5342b..022adc7b6bc 100644 --- a/lang/de/help/wiki/wikiusage.html +++ b/lang/de/help/wiki/wikiusage.html @@ -1,133 +1,118 @@ -

            Was ist ein Wiki?

            -


            -Wiki ist eine Plattform zur schnellen Erstellung von Texten und -zur gemeinsamen Bearbeitung der Texte. Das Prinzip ist -einfach.
            -

            -
              -
            • Ein Text wird geschrieben und gespeichert.
            • -
            • Der/die Nächste liest diesen Text und sagt, ich will ihn -bearbeiten und ergänzen. Dazu klickt er/sie auf 'bearbeiten', - und verändert den Text.
            • -
            • Mit 'speichern' wird der Text gespeichert und steht allen zur -Verfügung. Mit 'Änderungen verwerfen' werden die -Änderungen wieder rückgängug gemacht.
            • -

            • -
              -Ein Wiki macht es zudem einfach, neue Seiten einzufügen oder -zu anderen Seiten zu verlinken.
              -
            • -
            • Ein Link entsteht durch ein sog. Wikiwort. Das ist ein Wort -mit zwei Großbuchstaben, die jedoch nicht direkt -aufeinanderfolgen. Wenn man solch ein Wort in den Text eingibt, -wird nach dem Abspeichern das Wort mit einem ?-Zeichen nach dem -Speichern angezeigt.
            • -
            • Klickt man nun auf das Fragezeichen wird eine neue leere -Seite geöffnet. Nach dem Speichern dieser Seite ist in dem -ersten Text das Wikiwort als Link farbig gekennzeichnet. Durch -einen Klick auf das markierte Wort, landet man automatisch auf -der neu erstellten Seite.
            • -
            • An Stelle der Wiki-Wörter kann ein Begriff auch in eckige Klammern gesetzt -werden. Diese werden im Wiki ebenfalls als Link zu einer neuen Seite erkannt.<(li> -

            • -
            • -
            -


            -Wiki Formatierungen

            -

            Jede Seite innerhalb eines WikiWikiWeb soll schnell und -einfach zu ändern sein, daher gibt es auch nur einige wenige -Regeln, wie der Text eingegeben werden sollte (Diese sind nicht -so umständlich wie HTML).

            -

            Absätze

            -
              -
            • Absätze werden durch Leerzeilen von einander -abgegrenzt
            • -
            • mit drei Prozentzeichen %%% erzwingt man einen -Zeilenumbruch
            • -
            • um deinen Text einzurücken füge man einige -Leerzeichen (oder Tabulatoren) an den Anfang der Zeile ein
            • -
            -

            Überschriften

            -
              -
            • Mit einem Ausrufezeichen ! am Beginn einer Zeile erzeugt man -eine kleine Überschrift
            • -
            • mit zwei !! eine mittelgroße
            • -
            • und mit drei !!! wird aus dem dahinterstehenden Text eine -richtig große Überschrift
            • -
            -

            Textstil

            -
              -
            • Wenn man Text betonen möchte, schließt -man ihn in zwei einfache Anführungszeichen ein '' (wird -meistens kursiv angezeigt)
            • -
            • Text wird fett mit zwei Unterstrichen __ -(oder wenn er in zwei Sternchen ** eingeschlossen wird)
            • -
            • um großen Text zu bekommen verwendet man -zwei Rautenzeichen ##
            • -
            • kleiner Text wird einfach in zwei Mikrozeichen -µµ eingeschlossen
            • -
            • eine Schreibmaschinen-ähliche Schrift -erhält Text, der von zwei Gleichheitszeichen == -eingeschlossen wird.
            • -
            -

            Listen

            -
              -
            • Beginnt eine Zeile mit einem Sternchen * wird eine Liste -begonnen
            • -
            • Ein Rautenzeichen # startet eine nummerierte Liste -
                -
              1. Untergeordnete Listen erzeugen
              2. -
              3. Unterlisten sollten mit dem selben Mix von * und # -beginnen
              4. -
              -
            • -
            -

            Hyperlinks (Verweise)

            -
              -
            • Gibt man einfach ein WikiWort im Text ein, wird ein neuer -Verweis erzeugt
            • -
            • Oder man umschließt Wörter mit eckigen Klammern, um -einen Verweis innerhalb des WikiWikiWeb zu erzeugen, der kein -echtes WikiWord ist
            • -
            • Jede gültige Internetadresse (beginnend mit http://) wie -z.B. http://www.example.com/ wird -automatisch anklickbar angezeigt (ebenso E-Mail-Adressen)
            • -
            • Schließt man eine WWW-Adresse in eckige Klammern ein, -um ihr dann links von einem | Zeichen einen Titel zu geben
            • -
            • -
                -
              • [Beispiel | http://example.com]
              • -
              • [WikiWord "titel"] oder ["titel für" WikiLink]
              • -
              -
            • -
            • Wenn ein WikiWort oder eine http://www-Adresse (oder -[irgendetwas] innerhalb von eckigen Klammern) kein -Verweis/HyperLink werden soll, dann schreibe einfach ein -Ausrufezeichen oder ein Tilde-Zeiden (Schlängelchen) direkt -davor -
                -
              • z.B. !KeinHyperLink, [DiesIstAuchKeinLink]
              • -
              • oder http://www.nolink.org/
              • -
              -
            • -
            -

            Tabellen anlegen |

            -| Einfach Text | mit dem Längsstrich | einschließen -|
            -| für eine einfache | Tabellenstruktur |
            -| die Browser | lassen leere Felder | meistens weg |
            -

            Bilder

            -
              -
            • Um eine Graphik in eine Seite einzufügen, schreibt man -einfach ihre absolute www-Adresse in eckige Klammern, wie -[http://www.example.com/pics/image.png]
            • -
            • oder verwendet stattdessen einfach BildHochladen
            • -
            • um ein Bild auszurichten (zu bestimmen wie der Text -herumfließt) fügt man in den eckigen Klammern zwei -Leerzeichen vor und/oder nach der http://-Adresse ein
            • -
            -

            Mehr Funktionen

            -

            Weitere Möglichkeiten sind auf der Erfurt Wiki Homepage beschrieben.

            \ No newline at end of file +

            Was ist ein Wiki?

            +

            +
            + +Wiki ist eine Plattform zur schnellen Erstellung von Texten und zur gemeinsamen Bearbeitung der Texte. Das Prinzip ist einfach. +

            + + +

          • Ein Text wird geschrieben und gespeichert.
          • +
          • Der Nächste liest diesen Text und sagt, ich will ihn bearbeiten und ergänzen. Dazu klickt er auf 'bearbeiten', d.h. auf "action" und verändert den Text.
          • +
          • Mit 'speichern' wird der Text gespeichert und steht allen zur Verfügung. Mit 'Änderungenverwerfen' werden die Änderungen wieder rückgängug gemacht.


          • + + +Ein Wiki macht es zudem einfach, neue Seiten einzufügen oder zu anderen Seiten zu verlinken. +

            + + +
          • Ein Link entsteht durch ein sog. Wikiwort. Das ist ein Wort mit zwei Großbuchstaben, die jedoch nicht direkt aufeinanderfolgen. Wenn man solch ein Wort in den Text eingibt, wird nach dem Abspeichern das Wort mit einem ?-Zeichen nach dem Speichern angezeigt.
          • +
          • Klickt man nun auf das Fragezeichen wird eine neue leere Seite geöffnet. Nach dem Speichern dieser Seite ist in dem ersten Text das Wikiwort als Link farbig gekennzeichnet. Durch einen Klick auf das markierte Wort, landet man automatisch auf der neu erstellten Seite.
          • + +

            + + +


            +Wiki Formatierungen

            +

            + +Jede Seite innerhalb eines WikiWikiWeb soll schnell und einfach zu ändern +sein, daher gibt es auch nur einige wenige Regeln, wie der Text eingegeben +werden sollte (Diese sind nicht so umständlich wie HTML). +

            + + +

            Absätze

            + +
              +
            • Absätze werden durch Leerzeilen voneinander abgegrenzt
            • +
            • mit drei Prozentzeichen %%% erzwingt man einen Zeilenumbruch
            • + +
            • um deinen Text einzurücken füge man einige Leerzeichen (oder Tabulatoren) an den Anfang der Zeile ein
            • +
            + +

            Überschriften

            + +
              +
            • Mit einem Ausrufezeichen ! am Beginn einer Zeile erzeugt man eine kleine Überschrift
            • +
            • mit zwei !! eine mittelgroße
            • +
            • und mit drei !!! wird aus dem dahinterstehenden Text eine richtig große Überschrift
            • +
            + +

            Textstil

            + +
              + +
            • Wenn man text betonen möchtest, schließt man ihn in zwei einfache Anführungszeichen ein '' (wird meistens kursiv angezeigt)
            • +
            • Text wird fett mit zwei Unterstrichen __ (oder wenn er in zwei Sternchen ** eingeschlossen wird)
            • +
            • um großen Text zu bekommen verwendet man zwei Rautenzeichen ##
            • + +
            • kleiner Text wird einfach in zwei Mikrozeichen µµ eingeschlossen
            • +
            • eine Schreibmaschinen-ähliche Schrift erhält Text, der von zwei Gleicheitszeichen == eingeschlossen wird
            • +
            + +

            Listen

            + +
              +
            • Beginnt eine Zeile mit einem Sternchen * wird eine Liste begonnen
            • +
            • Ein Rautenzeichen # startet eine nummerierte Liste +
                +
              1. Untergeordnete Listen erzeugen
              2. +
              3. Unterlisten sollten aber mit dem selben Mix von * und # beginnen
              4. + +
              +
            • +
            + +

            HyperLinks (Verweise)

            + +
              +
            • Gibt man einfach ein WikiWort im Text ein, wird ein neuer Verweis erzeugt
            • + +
            • Oder man umschließt Wörter mit eckigen Klammern um einen Verweis innerhalb des WikiWikiWeb zu erzeugen, der kein echtes WikiWord ist
            • +
            • Jede gültige Internetadresse (beginnend mit http://) wie z.B. http://www.example.com/ wird automatisch anklickbar angezeigt (ebenso EMail-Adressen)
            • + +
            • Schließt man eine WWW-Adresse in eckige Klammern ein, um ihr dann links von einem | Zeichen einen Titel zu geben
            • +
                +
              • [Beispiel | http://example.com]
              • + +
              • [WikiWord "titel"] oder ["titel für" WikiLink]
              • +
              + +
            • Wenn ein WikiWort oder eine http://www-Adresse (oder [irgendetwas] innerhalb von eckigen Klammern) kein Verweis/HyperLink werden soll, dann schreibe einfach ein Ausrufezeichen oder ein Tilde-Zeiden (Schlängelchen) direkt davor +
                +
              • z.B. !KeinHyperLink, [DiesIstAuchKeinLink]
              • +
              • oder http://www.nolink.org/
              • + +
              +
            • +
            + +

            Tabellen anlegen |

            +| Einfach Text | mit dem Längsstrich | einschließen |
            +| für eine einfache | Tabellenstruktur |
            +| die Browser | lassen leere Felder | meistens weg |
            + + + +

            Bilder

            + +
              +
            • Um eine Graphik in eine Seite einzufügen, schreibt man einfach ihre absolute www-Adresse in eckige Klammern, wie [http://www.example.com/pics/image.png]
            • +
            • oder verwendet stattdessen einfach BildHochladen +
            • um ein Bild auszurichten (zu bestimmen wie der Text herumfließt) fügt man in den eckigen Klammern zwei Leerzeichen vor und/oder nach der http://-Adresse ein
            • +
            + +

            Mehr Funktionen

            +

            +Weitere Möglichkeiten sind auf der Erfurt Wiki Homepage beschrieben. +

            \ No newline at end of file diff --git a/lang/de/help/workshop/Overview.html b/lang/de/help/workshop/Overview.html index d7bc7ee6771..e1d8c932559 100644 --- a/lang/de/help/workshop/Overview.html +++ b/lang/de/help/workshop/Overview.html @@ -1,205 +1,78 @@ - -
            "Beurteilungen sind der -einflußreichste Hebel, mit dem Trainer/innen die Bearbeitungsweise -von Kursen und das Lernverhalten der Teilnehmer/innen -beeinflußen können."
            -
            -
            von -Graham Gibbs, "Using Assessment Strategically to Change the Way -Students Learn" in "Asessment Matter in Higher Education, -herausgegeben von Sally Brown und Angela Glasner, OU Press, -1999
            -
            -

            Überblick

            -Dieses neue Modul ermöglicht es Trainer/innen, eine kontrollierte -Aufgabenstellung einzurichten, die die Teilnehmer/innen -ermuntert, kritisch mit ihren eigenen Arbeitsergebnissen und -denen der anderen Teilnehmer/innen umzugehen. In der -Standardanwendung dieses Moduls beginnt man mit der -Vorbereitungsphase und der Festlegung von Beurteilungskriterien. -Diese ergeben sich aus der Beurteilungsstrategie des/der Trainers/in. -Vier verschiedene Strategien können angewandt werden:
            -
              -
            1. Keine Bewertung: Bei dieser Form der Aufgabenstellung -erfolgt keine quantitative Benotung durch die Teilnehmer/innen. -Sie kommentieren die vorgelegten Antworten der anderen -Teilnehmer/innen, vergeben jedoch keine Noten. Die/der Trainer/in kann - -sofern sie/er dies will - die Kommentare der Teilnehmer/innen -bewerten. Solche "bewerteten Kommentare" können eine -Grundlage für die Benotung der Teilnehmerleistungen sein. -Wenn der/die Trainer/in die bearbeiteten Aufgaben nicht benotet, kann auch -keine Gesamtnote erstellt werden.
            2. -
            3. Zusammengefasste Bewertung: Dies ist die -Grundeinstellung des Moduls. Bei dieser Aufgabenstellung setzt -sich jede einzelne Bewertung aus einer Reihe von -"Beurteilungselementen" zusammen. Jedes Element sollte einen -Teilaspekt der Gesamtaufgabenstellung abdecken. Die meisten -Aufgabenstellungen werden zwischen 5 und 15 Einzelelmente -bewerten und kommentieren. Die genaue Zahl wird immer -abhängig sein vom Umfang und der Komplexität der -Aufgabenstellung. Eine Peer-Aufgabe mit nur einem Element ist -möglich und verfolgt dann eine ähnliche -Beurteilungsstrategie wie das Standard-Moodle-Modul -'Assignment'.
            4. -
            5. Zusammenfassende Fehlerbewertung: Bei dieser -Bewertungsstrategie werden die Arbeiten auf der Grundlage einer -Reihe von Ja/Nein-Kriterien bewertet. Die Gesamtbeurteilung -ergibt sich aus einer "Notentabelle ", die die Relation zwischen -"Fehlern" und richtigen Antworten verdeutlicht. Bei einer -Aufgabenstellung bei der sechs Kriterien erfüllt sein -müssen, um eine optimale Note zu erzielen, zeigt die -Notentabelle, welche Note erzielt wird wenn alle Kriterien -erfüllt sind, wenn ein Kriterium fehlt, wenn zwei Kriterien -fehlen usw.
            6. -
            7. Kriterienbewertung: Dies ist die einfachste Form, eine -Beurteilung vorzunehmen, aber nicht unbedingt einfach -einzurichten. Die eingereichten Arbeiten werden anhand einer -Reihe von Bewertungskategorien bewertet. Der Bewerter prüft, -welche dieser Aussagen am beste auf die Arbeit zutrifft. (z.B. -'entwickelt eigene Ideen' 'hat das Vorgehensprinzip verstanden'. -Die Note ergibt sich aus einer "Kriterientabelle" für jede -Note.
            8. -
            -Zunächst nimmt der/die Trainer/in eine kleine Anzahl von Arbeiten. -(vielleicht 5 oder 10). Diese könenn von früheren -Gruppen genommen werden und sollten gute und schwache Arbeiten -umfassen.
            -
            -Dann beurteilt er/sie diese Arbeiten unter Verwendung des -"Notenformulars", das sie/er für diese Arbeit erstellt hat. -Seine/ihre Bewertung ist eine Orientierungshilfe für -die Teilnehmer/innen wenn sie mit ihrer Arbeit beginnen.
            -
            -Mit diesen drei Vorbereitungsschritten (Beurteilungselemente und -evtl. einer Notentabelle), den Beispiellösungen und den -Musteraufgaben) kann die Beurteilung für die -Teilnehmer/innen gestartet werden. Die Teilnehmer/innen sollten -nun zuerst die Musteraufgaben einschätzen. Wenn der/die Trainer/in -diese durchgesehen hat und mit den Resultaten zufrieden ist, kann -er/sie dennächsten Schritt frei geben. Er/sie kann nun die -Teilnehmer/innen bitten, diese Musterlösungen -einzuschätzen. Dies sollte leicht fallen, wenn die -Teilnehmer/innen die Anforderungen der Aufgabenstellung begriffen -haben. Dieser Schritt dient insbesondere dazu, dass -schwächere Teilnehmer/innen die Aufgabenstellungen und -Herausforderungen besser verstehen und nachvollziehen -können.
            -
            -Am Ende dieser Phase sollten alle Teilnehmer/innen verstanden -haben, worum es bei der Aufgabenstellung geht und wie sie -gelöst werden kann. Dazu bedarf es keines einheitlichen -Zeitpunkts. Jeder kann diesen Punkt unabhängig vom -Lernfortschritt anderer erreichen. Die/der Trainer/in kann sich nun -zurücklehnen und die weiteren Aufgabenstellungen bis zum -definierten Endzeitpunkt ablaufen lassen.
            -
            -Das Modul, kann für eine einzelne Teilaufgabenstellung oder -ein ganzes Bündel von Prüfungsaufgaben eingesetzt -werden. Wenn die Teilnehmer/innen ihre Arbeit eingereicht haben, -werden sie aufgefordert, die Arbeiten anderer Teilnehmer/innen -einzuschätzen. Ihre eigene Arbeit steht auch anderen -Teilnehmer/innen zur Verfügung. Erst wenn sie selber eine -Einschätzung zu der Arbeit eines anderen Teilnehmers -abgegeben haben, werden sie für die anderen Teilnehmer/innen -sichtbar. Wenn die gewählte Beurteilungsstrategie eine -Beurteilung durch die Teilnehmer/innen zulässt, können -die Autor/innen der jeweiligen Arbeit vor dem Hintergrund der -Beurteilung ihrer Arbeit, eine Überarbeitung anfertigen und -erneut zu einer Bewertung bereitstellen. Diese Form der -gegenseitigen Einschätzungen kann bis zu einem definierten -Endabgabezeitpunkt fortgesetzt werden.
            -
            -Die/der Trainer/in hat nun verschiedene Möglichkeiten. Das Modul -ermöglicht verschiedene Berechnungsformen der Endnote -für die Teilnehmer/innen. Der Lehrer kann eine Kombination -folgender Kriterien verwenden:
            -
              -
            1. Die Bewertung der/des Trainers/in für die am Ende abgegebene -Arbeit
            2. -
            3. Die durchschnittliche Bewertung der anderen Teilnehmer/innen -für diese Arbeit
            4. -
            5. Die Leistung des/der Teilnehmers/in beim Bewerten anderer -Arbeiten
            6. -
            -Es ist klar, dass der/die Trainer/in nach dem Abgabeschluß die -Arbeiten der Teilnehmer/innen bewerten muß. Es ist nicht -unbedingt erforderlich, die Leistungen bei der gegenseitigen -Bewertung der Teilnehmer/innen bei der Notenbildung zu -berücksichtigen. Durch einen internen Vergleich kann dieses -Kriterium jedoch in der Berechnung der Endnote -berücksichtigt werden (Grad der realistischen -Einschätzung der Arbeit). Die gegenseitige Bewertung sollte -jedoch nur dann berücksichtigt werden, wenn die Zahl der -bewertenden Teilnehmer/innen ausreichend hoch ist und eine -angemessene Einschätzung erfolgt. Zu kleine Bewertungszahlen -könne zu Ergebnisverfälschungen führen. Die letzte -Phase in der Arbeit in diesem Modul besteht in der Bekanntgabe -der Abschlußnoten an die Teilnehmner/innen.
            -
            -Dieses Modul verwendet in der Regel folgende Ablaufschritte:
            -
              -
            1. Einrichtung der Grundeinstellungen
            2. -
            3. Bearbeitung von Musteraufgaben durch die Teilnehmer/innen, -Einsendung der eigenen Arbeiten und die gegenseitige -Bewertung
            4. -
            5. Ermittlung der Abschlußnote
            6. -
            7. Bekanntgabe der Noten
            8. -
            -Bei der Bearbeitung muß lediglich ein Endzeitpunkt zwischen -Phase 2 und 3 festgelegt werden. Die Teilnehmer/innen können -sich ihre Zeit frei einteilen..
            -
            -

            Varianten

            -Die vorhergehende Darstellung stellt lediglich den -Standardeinsatz des Moduls dar. Mit Hilfe des Moduls sind auch -ganz andere Einsatzmöglichkeiten realisierbar. Eine -Fallstudienarbeit kann z.B. durchgeführt werden indem der/die -Trainer/in eine Reihe von Szenarien bereitstellt, die von den -Teilnehmer/innen eingeschätzt werden sollen. Die -Teilnehmer/innen reichen dann keine eigenen Arbeiten ein. Der/die -Trainer/in beurteilt 'lediglich' die Kommentierungen der -Teilnehmer/innen zu den verschiedenen Szenarien und verwendet sie -zur Ermittlung der Abschlußnote.
            -
            -Eine andere Einsatzmöglichkeit besteht in der -Verkürzung. Dabei werden keine Beispielaufgaben -bereitgestellt. Die Teilnehmer/innen geben ihre Arbeiten ab und -diese werden von anderen Teilnehmer/innen kommentiert.
            -
            -Es kann bei manchen Prüfungen vorkommen, dass die Gefahr -besteht, dass Teilnehmer/innen einfach Musterlösungen -für ihre eigene Arbeit kopieren. Dann sollten die -Musteraufgaben so gestaltet sein, dass sie das -Lösungsprinzip verdeutlichen, nicht aber direkt für die -Lösung der Prüfungsaufgaben verwandt werden -können. Es ist sicher nötig, den Arbeitsprozess -sorgfältig zu beobachten, da es vorkommen kann, dass den -Übungsaufgaben eine größere Aufmerksamkeit -gewidmet wird und die Prüfungsaufgaben nicht mehr so genau -gelesen werden.
            -
            -Das Modul kann ebenfalls genutzt werden, damit die -Teilnehmer/innen ihre eigene Arbeit einschätzen. An die -Stelle der Bewertung durch andere Teilnehmer/innen tritt dann die -Selbstbewertung. Der/die Trainer/in kann in der zweiten Phase von Phase 2 -eine Bewertung der (Selbst-)Bewertung vornehmen und diese auch bei -der abschließenden Bewertung berücksichtigen.
            -
            -

            Schlußbemerkung

            -Dieses Modul ist sehr flexibel durch seine einfachen Einstell- -und Ablaufmöglichkeiten. Während der Bewertungsphase -können die Teilnehmer/innen nicht in den weiteren -Bewertungsprozess eingreifen. Wenn die Erfahrung der -Teilnehmer/innen genutzt/herausgefordert werden soll, kann -gezielt die Selbstbewertungsoption der Teilnehmner/innen genutzt -werden. Eine technische Beschränkung besteht darin, dass die -Arbeiten als eine eizelne Datei eingereicht werden müssen. -Die Datei unterliegt einstellbaren -Größenbeschränkungen. Nicht unterstützt -werden Verlinkungen mit anderen externen Dateien.

            -Original von Ray Kingdon
            -April 2003
            -
            -Die deutsche Übersetzung erlaubt sich einige Freiheiten in -der Anpassung. [Ralf Hilgenstock]
            \ No newline at end of file + + + + + Ein anderes Aufgaben-Modul - Überblick + + +
            "Beurteilungen sind der einflußreichste Hebel, mit dem Lehrer +die Bearbeitungsweise von Kursen und das Lernverhalten der Teilnehmer/innen beeinflußen können."
            +
            +
            +
            von Graham +Gibbs, "Using Assessment Strategically to Change the Way Students Learn" +in "Asessment Matter in Higher Education, herausgegeben von Sally Brown und +Angela Glasner, OU Press, 1999
            +
            +
            +

            Überblick

            +Dieses neue Modul ermöglicht es Lehrern, eine kontrollierte Aufgabenstellung einzurichten, +die die Teilnehmer/innen ermuntert, kritisch mit ihren eigenen Arbeitsergebnissen und denen der anderen Teilnehmer/innen umzugehen. In der Standardanwendung dieses Moduls beginnt man mit der Vorbereitungsphase und der Festlegung von Beurteilungskriterien. Diese ergeben sich aus der Beurteilungsstrategie des Lehrers. Vier verschiedene Strategien können angewandt werden:
            +
              +
            1. Keine Bewertung: Bei dieser Form der Aufgabenstellung erfolgt keine quantitative Benotung durch die Teilnehmer/innen. Sie kommentieren die vorgelegten Antworten der anderen Teilnehmer/innen, vergeben jedoch keine Noten. Der Lehrer kann - sofern er dies will - die Kommentare der Teilnehmer/innen bewerten. +Solche "bewerteten Kommentare" können eine Grundlage für die Benotung der Teilnehmerleistungen sein. + Wenn der Lehrer die bearbeiteten Aufgaben nicht benotet kann auch keine Gesamtnote erstellt werden.
            2. +
            3. Zusammengefasste Bewertung: Dies ist die Grundeinstellung dedes Moduls. + Bei dieser Aufgabenstellung setzt sich jede einzelne Bewertung aus einer Reihe von "Beurteilungselementen" zusammen. Jedes Element sollte einen teilaspekt der Gesamtaufgabenstellung abdecken. Die meisten Aufgabenstellungen werden zwischen 5 und 15 Einzelelmente bewerten und kommentieren. Die genaue Zahl wird immer abhängig sein vom Umfang und der Komplexität der Aufgabenstellung. Eine Peer-Aufgabe mit nur einem Element ist möglich und verfolgt dann eine ähnliche Beurteilungsstrategie wie das Standard-Moodle-Modul 'Assignment'.
            4. +
            5. Zusammenfassende Fehlerbewertung: Bei dieser Bewertungsstrategie werden die Arbeiten auf der Grundlage einer Reihe von Ja/Nein-Kriterien bewertet. Die Gesamtbeurteilung ergibt sich aus einer "Notentabelle ", die die Relation zwischen "Fehlern" und richtigen Antworten verdeutlicht. Bei einer Aufgabenstellung bei der sechs Kriterien erfüllt sein müssen, um eine optimale Note zu erzielen, zeigt die Notentabelle, welche Note erzielt wird wenn alle Kriterien erfüllt sind, wenn ein Kriterium fehlt, wenn zwei Kriterien fehlen usw.
            6. +
            7. Kriterienbewertung: Dies ist die einfachste Form, eine Beurteilung vorzunehmen, aber nicht unbedingt einfach einzurichten. +Die eingereichten Arbeiten werden anhand einer Reihe von Bewertungskategorien bewertet. Der Bewerter prüft, welche dieser Aussagen am beste auf die Arbeit zutrifft. (z.B. 'entwickelt eigene Ideen' 'hat das Vorgehensprinzip verstanden'. Die Note +ergibt sich aus einer "Kriterientabelle" für jede Note.
            8. +
            +Zunächst nimmt der Lehrer eine kleine Anzahl von Arbeiten. (vielleicht 5 oder 10). Diese könenn von früheren Gruppen genommen werden und sollten gute und schwache Arbeiten umfassen.
            +
            +Dann beurteilt er diese Arbeiten unter Verwendung des "Notenformulars", das er für diese Arbeit erstellt hat. Diese Bewertung des Lehrers sind eine Orientierungshilfe für die Teilnehmer/inen wenn sie mit ihrer Arbeit beginnen.
            +
            +Mit diesen drei Vorbereitungsschritten (Beurteilungselemente (und evtl. einer Notentabelle), den Beispiellösungen und den Musteraufgaben) kann die Beurteilung für die Teilnehmer/innen gestartet werden. Die Teilnehmer/innen sollten nun zuerst die Musteraufgaben einschätzen. Wenn der Lehrer diese durchgesehen hat und mit den Resultaten zufrieden ist, kann er dennächsten Schritt frei geben. Der Lehrer kann nun die Teilnehmer/innen bitten, diese Musterlösungen einzuschätzen. Dies sollte leicht fallen, wenn die Teilnehmer/innen die Anforderungen der Aufgabenstellung begriffen haben. Dieser Schritt dient insbesondere dazu, dass schwächere Teilnehmer/innen die Aufgabenstellungen und Herausforderungen besser verstehen und nachvollziehen können.
            +
            +Am Ende dieser Phase sollten alle Teilnehmer/innen verstanden haben, worum es bei der Aufgabenstellung geht und wie sie gelöst werden kann. Dazu bedarf es keines einheitlichen Zeitpunkts. Jeder kann diesen Punkt unabhängig vom Lernfortschritt anderer erreichen. Der Lehrer kann sich nun zurücklehnen und die weiteren Aufgabenstellungen bis zum definierten Endzeitpunkt ablaufen lassen.
            +
            +Das Modul, kann für eine einzelne Teilaufgabenstellung oder ein ganzes Bündel von Prüfungsaufgaben eingesetzt werden. Wenn die Teilnehmer/innen ihre Arbeit eingereicht haben, werden sie aufgefordert, die Arbeiten anderer Teilnehmer/innen einzuschätzen. +Ihre eigene Arbeit steht auch anderen Teilnehmer/inenn zur Verfügung. Erst wenn sie selber eine Einschätzung zu der Arbeit eines anderen Teilnehmers abgegeben haben, werden sie für die anderen Teilnehmer/innen sichtbar. Wenn die gewählte Beurteilungsstrategie eine Beurteilung durch die Teilnehmer/innen zulässt, können die Autoren der jeweiligen Arbeit vor dem Hintergrund der Beurteilung ihrer Arbeit, eine Überarbeitung anfertigen und erneut zu einer Bewertung bereitstellen. Diese Form der gegenseitigen Einschätzungen kann bis zu einem definierten Endabgabezeitpunkt fortgesetzt werden.
            +
            +Der Lehrer hat nun verschiedene Möglichkeiten. Das Modul ermöglicht verschiedene Berechnungsformen der Endnote für die Teilnehmer/innen. Der Lehrer kann eine Kombination folgender Kriterien verwenden:
            +
              +
            1. Die Bewertung des Lehrers für die am Ende abgegebene Arbeit
            2. +
            3. Die durchschnittliche Bewertung der anderen Teilnehmer/innen für diese Arbeit
            4. +
            5. Die Leistung des Teilnehmers beim Bewerten anderer Arbeiten
            6. +
            +Es ist klar, dass der Lehrer nach dem Abgabeschluß die Arbeiten der Teilnehmer/innen bewerten muß. Es ist nicht unbedingt erforderlich, die Leistungen bei der gegenseitigen Bewertung der Schüler bei der Notenbildung zu berücksichtigen. Durch einen internen Vergleich kann dieses Kriterium jedoch in der Berechnung der Endnote berücksichtigt werden (Grad der realistischen Einschätzung der Arbeit). Die gegenseitige Bewertung sollte jedoch nur dann berücksichtigt werden, wenn die Zahl der Bewertenden Teilnehmer/innen ausreichend hoch ist und eine angemessene Einschätzung erfolgt. Zu kleine Bewertungszahlen könne zu Ergebnisverfälschungen führen. Die letzte Phase in der Arbeit in diesem Modulk besteht in der Bekanntgabe der Abschlußnoten an die Teilnehmner/innen.
            +
            +Dieses Modul verwendet in der Regel folgende Ablaufschritte:
            +
              +
            1. Einrichtung der Grundeinstellungen
            2. +
            3. Bearbeitung von Musteraufgaben durch die Teilnehmer/innen, Einsendung der eigenen Arbeiten und die gegenseitige Bewertung
            4. +
            5. Ermittlung der Abschlußnote
            6. +
            7. Bekanntgabe der Noten
            8. +
            +Bei dr Bearbeitung muß lediglich ein Endzeitpunkt zwiscehn Pahse 2 und 3 festgelegt werden. Die Teilnehmer/innen können sich ihre Zeit frei einteilen..
            +
            +

            Varianten

            +Die vorhergehende Darstellung stellt lediglich den Standardeinsatz des Moduls dar. Mit Hilfe des Moduls sind auch ganz andere Einsatzmöglichkeiten realisierbar. Eine Fallstudienartbeit kann z.B. durchgeführt werden indem der Lehrer eine Reihe von Szenarien bereitstellt, die von den Teilnehmer/innen eingeschätzt werden sollen. Die Teilnehmer/innen reichen dann keine eigenen Arbeiten ein. Der Lehrer beurteilt 'lediglich' die Kommentierungen der Teilnehmer/innen zu den verschiedenen Szenarien und verwendet sie zur Ermittlung der Abschlußnote.
            +
            +Eine andere Einsatzmöglichkeit besteht in der Verkürzung. Dabei werden keine Beispielaufgaben bereitgestellt. Die Teilnehmer/innen geben ihre Arbeiten ab und diese erden von anderen Teilnehmer/innen kommentiert.
            +
            +Es kann bei manchen Prüfungen vorkommen, dass die Gefahr besteht, dass Teilnehmer/innen einfach Musterlösungen für ihre eigene Arbeit kopieren. Dann sollten die Musteraufgaben so gestaltet sein, dass sie das Lösungsprinzip verdeutlichen, nicht aber direkt für die Lösung der Prüfungsaufgaben verwandt werden können. Es ist sicher nötig, den Arbeitsprozess sorgfältig zu beobachten, da es vorkommen kann, dass den Übungsaufgaben eine größere Aufmerksamkeit gewidmet wird und die Prüfungsaufgaben nicht mehr so genau gelesen werden.
            +
            +Das Modul kann ebenfalls genutzt werden, damit die Teilnehmer/innen ihre eigene Arbeit einschätzen. An die Stelle der Bewertung durch andere Teilnehmer/innen tritt dann die Selbstbewertung. Der Lehrer kann in der zweiten Phase von Phase 2 eine Bewertung der (Selbst-)Bewertug vornehmen und diese auch bei der abschließenden Bewertung berücksichtigen.
            +
            +

            Schlußbemerkung

            +Dieses Modul ist sehr flexibil durch seine einfachen Einstell- und Ablaufmöglichkeiten. Während der Bewertungsphase können die Teilnehmer/innen nicht in den weiteren Bewertungsprozess eingreifen.  Wenn die Erfahrung der Teilnehmer/innen genutzt/herausgefordert werden soll, kann gezielt die Selbstbewertungsoption der Teilnehmner/innen genutzt werden. Eine technische Beschränkung besteht darin, dass die Arbeiten als eine einzige Datei eingereicht werden müssen. Die Datei unterliegt einstellbaren Größenbeschränkungen. Nicht unterstützt werden Verlinkungen mit anderen externen Dateien.

            +Original von Ray Kingdon
            +April 2003
            +
            Die deutsche Übersetzung erlaubt sich einige Freiheiten in der Anpassung. [Ralf Hilgenstock] +
            + + \ No newline at end of file diff --git a/lang/de/help/workshop/addingacomment.html b/lang/de/help/workshop/addingacomment.html index ed3257dce66..075adb237fb 100644 --- a/lang/de/help/workshop/addingacomment.html +++ b/lang/de/help/workshop/addingacomment.html @@ -1,21 +1,16 @@ -

            Einen Kommentar abgeben

            -

            Ein Kommentar zu einer Beurteilung kann abgegeben werden, -um:

            -
              -
            1. Zusätzliche Erklärungen oder Klarstellungen zu -einer Beurteilung abzugen (durch eine/n Teilnehmer/in der/die -eine Arbeit bewertet);
            2. -
            3. Ausagen der Bewertung zu hinterfragen (durch die/den -Teilnehmer/in, die die Arbeit erstellt hat);
            4. -
            5. Schwierigkeietn aufzuklären, die bei der Diskussion -entstanden sind (durch den/die Trainer/in);
            6. -
            -

            Ziel der Kommentierung ist es, von jedem ein -Einverständnis mit der Bewertung zu erzielen oder den/die -Bewerter/in davon zu überzeugen, seine/ihre Bewertung zu -überarbeiten. Bei der Diskussion sollte ein besonders -Augenmerk auf die nachvollziehbare Begründung gelegt -werden.

            -

            Wenn die Arbeit neu bewertet wird, werden alte Kommentare, die -sich dadurch überholt haben, abgelegt und nicht weiter -angezeigt.

            +

            Einen Kommentar abgeben

            + +

            Ein Kommentar zu einer Beurteilung kann abgegeben werden, um: + +

              +
            1. Zusätzliche Erklärungen oder Klarstellungen zu einer Beurteilung abzugen (durch eine/n Teilnehmer/in + der/die eine Arbeit bewertet); +
            2. Ausagen der Bewertung zu hinterfragen (durch die/den Teilnehmer/in, die die Arbeit erstellt hat); +
            3. Schwierigkeietn aufzuklären, die bei der Diskussion entstanden sind (durch den Lehrer); +
            +

            Ziel der Kommentierung ist es, von jedem ein Einverständnis mit der Bewertung zu erzielen oder den Bewerter davon zu überzeugen, seine/ihre Bewertung zu überarbeiten. + Bei der Diskussion sollte ein besonders Augenmerk auf die nachvollziehbare Begründung gelegt werden. + +

            Wenn die Arbeit neu bewertet wird, werden alte Kommentare, die sich dadurch überholt haben, abgelegt und nicht weiter angezeigt. + +

            \ No newline at end of file diff --git a/lang/de/help/workshop/agreeassessments.html b/lang/de/help/workshop/agreeassessments.html index 35a72a27fc0..9d1a15e366b 100644 --- a/lang/de/help/workshop/agreeassessments.html +++ b/lang/de/help/workshop/agreeassessments.html @@ -1,41 +1,14 @@ - -

            Übereinstimmung über die -Bewertung

            -

            Eine Workshopaufgabe kann jede der nachfolgenden -Charakteristiken haben:

            -
              -
            1. In der Phase des Einreichens und der Bewertung gibt es keine -Rückmeldung von den Einreichern zu den Beurteilern unter den -Teilnehmer/innen. Feedback von den Trainer/innen ist möglich, wenn -diese eine Bewertung der Arbeiten vorgesehen haben. Die Bewertung -kann sichtbar gemacht werden für den/die Teilnehmer/in, dessen -Arbeit bewertet wird und für die Teilnehmer/inenn, die diese -Arbeit mitbewertet haben. Es gibt dabei diesen einen Weg der -Rückmeldung unter den Teilnehmer/innen über die eingereichten -Arbeiten.
            2. -
            3. In dieser Phase können aber auch Einstellungen so -vorgenommen werden, dass die Teilnehmer/innen die Bewertungen -sehen und kommentieren können. Sie können ihre -Zustimmung oder auch ihre abweichende Meinung zu der Bewertung -anderer Teilnehmer/innen äußern. Wenn sie der -Bewertung zustimmen, bleibt diese bestehen und fließt in -die Abschlußnote ein, sofern eine Auswetung der -gegenseitigen Bewertungen als Bestandteil der Gesamtbeurteilung -vorgenommen wird. Wenn die Bewertung keine Zustimmung findet, -kann sie überarbeitet werden. Dieser Prozess der -Überarbeitung kann so lange fortgesetzt werden, bis alle der -Bewertung zustimmen oder bis der vordefinierte Endzeitpunkt -erreicht ist. Eine Bewertung, für die bis zum -Schlußzeitpunkt keine Zustimmung erzielt wurde, -fließt nicht in die Endbewertung ein. Hierbei ergibt sich -die Möglichkeit zu einem Dialog über die Bewertung -unter den Teilnehmer/innen für jede eingereichte -Arbeit.
            4. -
            -

            Wenn die zweite Methode gewählt wird, gibt es die -Möglichkeit, die Anzeige der Benotungen auszublenden. Die -Teilnehmer/innen sehen dann nur die Kommentare, die als Bewertung -abgegeben wurden. Die Note werden erst angezeigt, wenn eine -Übereinstimmung über die Bewertung erzielt wurde. Diese -Option ist jedoch nur dann sinnvoll wenn eine Übereinstimmug -über die Bewertungen von besonderer Bedeutung ist.

            +

            Übereinstimmung über die Bewertung

            + +

            Eine Workshopaufgabe kann jede der nachfolgenden Charakteriksen haben: + +

              +
            1. In der Phase des Einreichens und der Bewertung gibt es keine Rückmeldung von den Einreichern zu den Beurteilern unter den Teilnehmer/innen. Feedback von den Lehrern ist möglich, wenn diese eine Bewertung der Arbeiten vorgesehen haben. Die Bewertung kann sichtbar gemacht werden für den Teilnehmer, dessen Arbeit bewertet wird und für die Teilnehmer, die diese Arbeit mitbewertet haben. Es gibt dabei diesen einen Weg der Rückmeldung unter den Teilnehmer über die eingereichten Arbeiten. + +
            2. In dieser Phase können aber auch Einstellungen so vorgenommen werden, dass die Teilnehmer/innen die Bewertungen sehen und kommentieren können. Sie können ihre Zustimmung oder auch ihre abweichende Meinung zu der Bewertung anderer Teilnehmer/innen äußern. + Wenn sie der Bewertung zustimmen, bleibt diese bestehen und fließt in die Abschlußnote ein, sofern eine Auswetung der gegenseitigen Bewertungen als Bestandteil der Gesamtbeurteilung vorgenommen wird. Wenn die Bewertung keine Zustimmung findet, kann sie überarbeitet werden. Dieser Prozess der Überarbeitug kann solange fortgesetzt werden, bis alle der Bewertung zustimmen oder bis der vordefinierte Endzeitpunkt erreicht ist. Eine Bewertung, für die bis zum Schlußzeitpunkt keine Zustimmung erzielt wurde, fließt nicht in die Endbewertung ein. Hierbei ergibt sich die Möglichkeit zu einem Dialog über die Bewertung unter den Teilnehmer/innen für jede eingereichte Arbeit. +
            +

            Wenn die zweite Methode gewählt wird, gibt es die Möglichkeit, die Anzeige der Benotungen auszublenden. Die Teilnehmer/innen sehen dann nur die Kommentare, die als Bewertung abgegeben wurden. + Die Note werden erst angezeigt, wenn eine Übereinstimmung über die Bewetung erzielt wurde. Diese Option ist jedoch nur dann sinnvoll wenn eine Übereinstimmug über die Bewertungen von besonderer Bedeutung ist. + +

            \ No newline at end of file diff --git a/lang/de/help/workshop/analysisofassessments.html b/lang/de/help/workshop/analysisofassessments.html index 8f409d1ed48..0a566677174 100644 --- a/lang/de/help/workshop/analysisofassessments.html +++ b/lang/de/help/workshop/analysisofassessments.html @@ -1,108 +1,24 @@ -

            Analyse der Bewertungen

            -

            Diese Analyse befasst sich gleichermaßen mit den -Bewertungen der Beispielaufgaben, wie mit den Bewertungen -während der Selbstbewertungsphase durch die anderen -Teilnehmer/innen. Es berücksichtigt die besseren Bewertungen -aus den Bewertungen der Trainer/innen und der Teilnehmer/innen -Diese "guten" Bewertungen werden dann für die Berechnung der -Gesamtnote verwandt.

            -

            Die Analyse wird am besten erst dann durchgeführt, wenn -die Bewertungen der Trainer/innen vorliegen. Diese Bewertung kann -als Maßstab (Benchmark) für die Einschätzungen -der Bewertungen der Teilnehmer/innen genutzt werden. Der/die -Trainer/in muß nicht alle Übungsaufgaben und -alle eingereichten Arbeiten bewerten. Damit die Analyse nun aber -aussagekräftig ist, sollte der/die Trainer/in mehr Arbeiten -bewertet haben als die Teilnehmer/innen dies im Durchschnitt -getan haben. Je mehr Bewertungen des/der Trainers/in vorliegen, -desto verlässlicher wird auch das Ergebnis dieser Analyse -sein.

            -

            Die Analyse wird sinnvollerweise mehrfach durchgeführt, -jedesmal wenn eine oder mehrere der verfügbaren Optionen -geändert wurde. Die verschiedenen Optionen werden durch die -Einstellungen oben auf der Seite gesteuert.

            -
              -
            1. Auf der Ebene der Fehleranalyse wird beim Laden der -Bewertungen der Trainer/innen die Gewichtung ihrer Bewertungen im -Vergleich mit den Bewertungen anderer Teilnehmer/inen definiert. -Wenn das Gewicht der Trainert/innen-Bewertung hoch sein soll, dann -sollte er/sie über den niedrigsten durchschnittlichen Fehler -in der Tabelle verfügen. Wenn er/die Trainer/in nicht als -erstes in der Liste aufgeführt wird, sollte der Wert -fürt den/die Trainer/in erhöht werden, bis er/sie die -niedrigste Rate hat. Das führt dazu, dass die -Trainer/innen-Bewertungen dominieren und gleichlautende -Bewertungen der Teilnehmer/innen ebenfalls an der Spitze der -Tabelle aufgeführt werden. Bewertungen anderer -Teilnehmer/innen, die sich am Ende der Tabelle befinden, -verweisen darauf, dass sie Bewertungen abgegeben haben, die von -der Bewertung des/der Trainer/in abweichen. Je mehr Bewertungen -des/der Trainer/in vorhanden sind, desto weniger ist es -erforderlich die Gewichtung zu korrigieren. Diese Option nimmt -keinen Einfluß auf die Berechnung der Schlußnote. In -dieser Berechnung der Note wird ein Durchschnittswert aller -vorhandenen Noten ermittelt, gleich ob sie von den Trainer/innen -oder den Teilnehmer/innen stammen.
            2. -
            3. Die Gewichtung für die Benotung der Aufgaben wird in der -Berechnung der Schlußnote berücksichtigt. Ein -einfaches Formular dient der Berechnung der Leistung der -Teilnehmer/innen. Es ist das Verhältbis guter Beurteilungen -im Vergleich zur maximalen Zahl der möglichen -Einschätzungen. Wenn z.B. 3 Einschätzunge zu den -Übungsaufgaben und 5 Einschätzungen zu den -eingereichten Arbeiten abgegeben werden sollen und ein/e -Teilnehmer/in hat 7 Beurteilungen vorgenommen und eine ist -herausgenommen worden (siehe unten), dann wird ihre -Bewertungsleistung mit (7-1)/8, also 75 % ermittelt. Die -Gesamtnote wird nun aus der gewichteten Kombination der -Bewertungsleistungen und den Bewertungen der eigenen -Aufgabenstellung errechnet. Die Gewichtungen der beiden Faktoren -sind immer zunächst auf 1 gesetzt. Beide Teile werden danach -gleich stark gewichtet. Wenn Sie nun die Gewichtung für die -eigene Lösung der Aufgabe auf 0,5 setzen zählt diese 33 -% der Gesamtbewertung, da die Gewichtung für die Bewertungen -anderer Arbeiten weiterhin bei 1 steht. 0,5 + 1 = 33% / 66 -%
            4. -
            5. Der Prozentsatz der Bewertungen, der bei der Berechnung der -Gesamtnote nicht berücksichtigt wird, kann auf zwei -verschiedene Arten festgelegt werden. -
                -
              • Wenn die Teilnehmer/innen alle Bewertungen vorgenommen haben, -können sie die volle Punktzahl nur dann erreichen wenn keine -Bewertungen bei der Berechnung herausfallen. Wenn diese Option -auf 30 % eingestellt wird, wird erreicht, dass die -durchschnittliche Bewertungsleistung aus 70% der Bewertungen -errechnet wird (30 % fallen für die Bewertung weg).
              • -
              • Alternativ kann die Zahl der nicht berücksichtigten -Bewertungen in der vierten Spalte der Tabelle eingestellt -werden.
              • -
              +

              Analyse der Bewertungen

              + +

              Diese Analyse befasst sich gleichermaßen mit den Bewertungen der Beispielaufgaben, wie mit den Bewertungen während der Selbstbewertungsphase durch die anderen Teilnehmer/innen. Es berücksichtigt die besseren Bewertungen aus den Bewertungen der Dozent/innen und der Teilnehmer/innen Diese "guten" Bewertungen werden dann für die Berechnung der Gesamtnote verwandt.

              + +

              Die Analyse wird am besten erst dann durchgeführt, wenn die Bewertungen der Dozent/innen vorliegen. Diese Bewertung kann als Maßstab (Benchmark) für die Einschätzungen der Bewertungen der Teilnehmer/innen genutzt werden. Der/die Dozent/in muß nicht alle Übungsaufgaben und alle eingereichten Arbeiten bewerten. Damit die Analyse nun aber aussagekräftig ist, sollte der/die Dozent/in mehr Arbeiten bewertet haben als die Teilnehmer/innen dies im Durchschnitt getan haben. Je mehr Bewertungen des/der Dozent/in vorliegen, desto verlässlicher wird auch das Ergebnis dieser Analyse sein.

              + +

              Die Analyse wird sinnvollerweie mehrfach durchgeführt, jedesmal wenn eine oder mehrere der verfügbaren Optionen geändert wurde. Die verschiedenen Optionen werden durch die Einstellungen oben auf der Seite gesteuert.

              + +
              1. Auf der Ebene der Fehleranalyse wird beim Laden der Bewertungen der Dozent/innen die Gewichtung ihrer Bewertungen im Vergleich mit den Bewertungen anderer Teilnehmer/inen definiert. Wenn das Gewicht der Dozent/innen-Bewertung hoch sein soll,, dann sollte er/sie über den niedrigsten durchschnittlichen Fehler in der Tabelle verfügen. Wenn er/die Dozent/in nicht als erstes in der Liste aufgeführt wird, sollte der Wert fürt den/die Dozent/in erhöht werden, bis er/sie die niedrigste Rate hat. Das führt dazu, dass die Dozent/innen-Bewertungen dominieren und gleichlautende Bewertungen der Teilnehmer/innen ebenfalls an der Spitze der Tabelle aufgeführt werden. Bewertungen anderer Teilnehmer/innen, die sich am Ende der Tabelle befinden, verweisen darauf, dass sie Bewertungen abgegeben haben, die von der Bewertung des/der Dozent/in abweichen. Je mehr Bewertungen des/der Dozent/in vorhanden sind, desto weniger ist es erforderlich die Gewichtung zu korrigieren. Diese Option nimmt keinen Einfluß auf die Berechnung der Schlußnote. In dieser Berechnung der Note wird ein Durchschnittswert aller vorhandenen Noten ermittelt, gleich ob sie von den Dozent/innen oder den Teilnehmer/innen stammen.
              2. + +
              3. Die Gewichtung für die Benotung der Aufgaben wird in der Berechnung der Schlußnote berücksichtigt. Ein einfaches Formular dient der Berechnung der Leistung der Teilnehmer/innen. Es ist das Verhältbis guter Beurteilungen im Vergleich zur maximalen Zahl der möglichen Einschätzungen. Wenn z.B. 3 Einschätzunge zu den Übungsaufgaben und 5 Einschätzungen zu den eingereichten Arbeiten abgegeben werden sollen und ein/e Teilnehmer/in hat 7 Beurteilungen vorgenommen und eine ist herausgenommen worden (siehe unten), dann wird ihre Bewertungsleistung mit (7-1)/8, also 75 % ermittelt. Die Gesamtnote wird nun aus der gewichteten Kombination der Bewertungsleistungen und den Bewertungen der eigenen Aufgabenstellung errechnet. Die Gewichtungen der ebiden Faktoren sind immer zunächst auf 1 gesetzt. Beide Teile werden danach gleich stark gewichtet. Wenn Sie nun die Gewichtung für die eigene Lösung der Aufgabe auf 0,5 setzen zählt diese 33 % der Gesamtbewertung, da die Gewichtung für die Bewertunegn an derer Arbeiten weiterhin bei 1 steht. 0,5 + 1 = 33% / 66 %
              4. +
              5. Der Prozentsatz der Bewertungen, der bei der Berechnung der Gesamtnote nicht berücksichtigt wird, kann auf zwei verschiedene Arten festgelegt werden. +
                • Wenn die Teilnehmer/innen alle Bewertungen vorgenommen haben, können sie die volle Punktzahl nur dann erreichen wenn keine Bewertungen bei der Berechnung herausfallen. Wenn diese Option auf 30 % eingestellt wird, wird erreicht, dass die durchschnittliche Bewertungsleistung aus 70% der Bewertungen errechnet wird (30 % fallen für die Bewertung weg)..
                • +
                • Alternativ kann die Zahl der nicht berücksichtigten Bewertungen in der vierten Spalte der Tabelle eingestellt werden. +
              -

              Zusätzlich zur Fehlertabelle listet die Analyse die -Bewertungen aller Bewertungen und Noten auf. Diese Tabelle sollte -durchgesehen werden, um festzustellen, ob die Noten -nachvollziehbar sind. Wenn viele Bewertungen herausfallen, kann -es sein, dass einige Arbeiten gar nicht bewertet werden und die -Basis für die Errechnung der Schlußnote sehr niedrig -ist. Die Analyse zeigt die Zahl der eingereichten Arbeiten am -Anfang der Tabelle und kurz vor der Notentabelle an. Diese beiden -Zahlen sollten identisch sein. Wenn eine oder mehrere Arbeiten -unbewertet sind und der /die Trainer/in die Zahl der nicht -berücksichtigten Arbeiten nicht verändern will, -muß er/sie die Arbeit selbst bewerten und die Analyse -wiederholen. Es ist unbedingt erforderlich, dass alle Arbeiten -bewertet werden, bevor die Schlußnote veröffentlicht -wird.

              -

              Berücksichtigen Sie das Gleichgewicht zwischen der Zahl -der herausfallenden Bewertungen und der Gesamtbenotung. Je mehr -Bewertungen herausfallen, desto niedriger wird die Punktzahl der -Gesamtnote bei der Addition ausfallen. Wenn schlechte Bewertungen -nicht aus der Gesamtnote herausgenommen werden, werden die -Teilnehmer/innen sich über Qualität der Bewertungen -beschweren. Vorausgesetzt, dass ausreichend Arbeiten von dem/der -Trainer/in bewertet wurden, ist ein Wert von 15 % bis 30 % an -herausfallenden Bewertungen begründbar.

              -

              Hinweis: Diese Analysen benötigen einige Zeit und -erfordern einen iterativen Prozess. Mit Verzögerungen -muß daher gerechnet werden.

              +

              Zusätzlich zur Fehlertabelle listet die Analyse die Bewertungen aller Bewertungen und Noten auf. Diese Tabelle sollte durchgesehen werden, um festzustellen, ob die Noten nachvollziehbar sind. Wenn viele Bewertungen herausfallen, kann es sein, dass einige Arbeiten gar nicht bewertet werden und die Basis für die Errechnung der Schlußnote sehr niedrig ist. Die Analyse zeigt die Zahl der eingereichten Arbeiten am Anfang der Tabelle und kurz vor der Notentabelle an. Diese beiden Zahlen sollten identisch sein. Wenn eine oder mehrere Arbeiten unbewertet sind und der /die Dozent/in die Zhal der nicht berücksichtigten Arbeiten nicht verändern will, muß er/sie die Arbeit selbst bewerten und die Analyse wiederholen. Es ist unbedingt erforderlich, dass alle Arbeiten bewertet werden, bevor die Schlußnote veröffentlicht wird. +

              +

              Berücksichtigen Sie das Gleichgewicht zwischen der Zahl der herausfallenden Bewertungen und der Gesamtbenotung. Je mehr Bewertungen herausfallen, desto niedriger wird die Punktzahl der Gesamtnote bei der Addition ausfallen. Wenn schlechte Bewertungen nicht aus der Gesamtnote herausgenommen werden, werden die Teilnehmer/innen sich über Qualität der Bewertungen beschweren. Vorausgesetzt, dass ausreichend Arbeiten von dem/der Dozent/in bewertet wurden, ist ein Wert von 15 % bis 30 % an herausfallenden Bewertungen begründbar. + +

              +

              Hinweis: Diese Analysen benötigen einige Zeit und erfordern einen iterativen Prozess. Mit Verzögerungen muß daher gerechnet werden. +

              diff --git a/lang/de/help/workshop/anonymous.html b/lang/de/help/workshop/anonymous.html index 4761c50adfb..8cd025af548 100644 --- a/lang/de/help/workshop/anonymous.html +++ b/lang/de/help/workshop/anonymous.html @@ -1,11 +1,8 @@ - -

              Anonyme Bewertung

              -

              Die Bewertung unter den Teilnehmer/innen kann anonym erfolgen. -In diesem Falle werden die Namen und Fotos der Bewerter/innen -nicht angezeigt. Lediglich die Dateinamen der eingereichten -Lösungen dienen der Identifikation.

              -

              Wenn die Bewertung nicht anonym erfolgt, werden die Nqmen und -Bilder der einreichenden Teilnehmer/innen angezeigt. Dies kann zu -Verzerrungen bei der Bewertung führen.

              -

              Die Bewertungen der Trainer/innen werden jedoch niemals anonym -vorgenommen.

              +

              Anonyme Bewertung

              + +

              Die Bewertung unter den Teilnehmer/innen kann anonym erfolgen. In diesem Falle werden die Namen und Fotos der Bewerter nicht angezeigt. Lediglich die Dateinamen der eingereichten Lösungen dienen der Identifikation. + +

              Wenn die Bewertung nicht anonym erfolgt, werden die Nmaen und Blder der einreichenden Teilnehmer/innen angezeigt. Dies kann zu Verzerrungen bei der Bewertung führen. + +

              Die Bewertungen der Lehrer werden jedoch niemals anonym vorgenommen. +

              \ No newline at end of file diff --git a/lang/de/help/workshop/assessmentofexamples.html b/lang/de/help/workshop/assessmentofexamples.html index 4b61892e389..7aabd564e40 100644 --- a/lang/de/help/workshop/assessmentofexamples.html +++ b/lang/de/help/workshop/assessmentofexamples.html @@ -1,15 +1,5 @@ - -

              Bewertung der Trainer/innenbeispiele

              -

              Nachdem der/die Trainer/in Beispielarbeiten (z.B. aus -früheren Lehrgängen) bereitgestellt hat, ist es -hilfreich, wenn er/sie diese auch bewertet, ggfs. auch nur in -Teilbereichen. Diese Bewertungen stehen nur dem/der Trainer/in -zur Verfügung. Die Teilnehmer/innen können sie NICHT -sehen. Sie dienen als Referenz für den Lehrer und zum -Vergleich mit den Bewertungen der Teilnehmer/innen in dieser -Einübungsphase. Die Lehrer sehen ihre eigene Bewertung oben -auf der Seite und die Bewertungen durch die Teilnejmer/innen zu -der gleichen Übungsaufgabe unten auf der Seite. Die "Extra" -Bewertung stellt eine Referenzquelle und Erinnerungsanker -für die herausragenden Aspekte dar, die in dem Beispiel zu -berücksichtigen sind.

              +

              Bewertung der Lehrerbeispiele

              + +

              Nachdem der Lehrer Beispielarbeiten (z.B. aus früheren Lehrgängen) bereitgestellt hat, ist es hilfreich, wenn er diese auch bewertet, ggfs. auch nur in Teilbereichen. + Diese Bewertungen stehen nur dem Lehrer zur Verfügung. Die Teilnehmer können sie NICHT sehen. Sie dienen als Referenz für den Lehrer und zum Vergleich mit den Bewertungen der Teilnehmer/innen in dieser Einübungsphase. Die Lehrer sehen ihre eigene Bewertung oben auf der Seite und die Bewertungen durch die Teilnejmer/innen zu der gleichen Übungsaufgabe unten auf der Seite. Die "Extra" Bewertung stellt eine Referenzquelle und Erinnerungsanker für die herausragenden Aspekte dar, die in dem Beispiel zu berücksichtigen sind. +

              \ No newline at end of file diff --git a/lang/de/help/workshop/assignmenttype.html b/lang/de/help/workshop/assignmenttype.html index 7c3e63d9bc0..cf78e22a7f7 100644 --- a/lang/de/help/workshop/assignmenttype.html +++ b/lang/de/help/workshop/assignmenttype.html @@ -1,22 +1,13 @@ - -

              Arten der Bewertung durch die -Teilnehmer/innen

              -

              Es gibt zwei unterschiedliche Arten der Bewertung durch die -Teilnehmer/innen:

              -
                -
              1. Nur die Feedback-Meldungen zu den Bewertungsaspekten und ein -allgemeiner Kommentar werden gezeigt. Die Benotung selber wird -auf den Bewertungsseiten nicht angezeigt. Die Aufgaben erhalten -keine Gesamtnote. Die Benotungsleistung der anderen Teilnehmer/innen -wird gemessen und ausschließlich dieser gemessene Beitrag -fließt in die von den Teilnehmer/innen vergebene Endnote -ein.
              2. -
              3. Bei der zweiten Variante sind die Trainer/innen und die anderen -Teilnehmer/inenn aufgefordert, Rückmeldungen und eine Note -abzugeben. Die Aufgaben erhalten somit eine Gesamtnote und eine -qualitative Bewertung. Die abschließende Gesamtnote -für dei Arbeit eines/r Teilnehmers/in errechnet sich aus den -gewichteten Beiträgen der Benotung des/der Trainers/in, der -Einschätzung der anderen Teilnehmer/innen und der Leistung -bei der Bewertung anderer Teilnehmer/innen.
              4. -
              +

              Arten der Bewertung durch die Teilnehmer/innen

              + +

              Es gibt zwei unterschiedliche Arten der Bewertung durch die Teilnehmer/innen: + +

                +
              1. Nur die Feedback-Meldungen zu den Bewertungsaspekten und ein allgemeiner Kommentar werden gezeigt. Die Benotung selber wird auf den Bewertungsseiten nicht angezeigt. Die Aufgaben erhalten keine Gesamtnote. + Die Benotungsleistung der anderen Teilnehmer wird gemessen und ausschließlich dieser gemessene Beitrag fließt in die von den Teilnehmern vergebene Endnote ein. + +
              2. Bei der zweiten Variante sind die Lehrer und die anderen Teilnehmer aufgefordert Rückmeldungen und eine Note abzugeben. Die Aufgaben erhalten somit eine Gesamtnote und eine qualitative Bewertung. Die abschließende Gesamtnote für dei Arbeit eines Teilnehmers errechnet sich aus den gewichteten Beiträgen der Benotung des Lehrers, der Einschätzung der anderen Teilnehmer/innen und der Leistung bei der Bewertung anderer Teilnehmer/innen. + +
              + +

              \ No newline at end of file diff --git a/lang/de/help/workshop/breakdownoffinalgrade.html b/lang/de/help/workshop/breakdownoffinalgrade.html index 0014c3cdeb4..db8ba01da81 100644 --- a/lang/de/help/workshop/breakdownoffinalgrade.html +++ b/lang/de/help/workshop/breakdownoffinalgrade.html @@ -1,27 +1,16 @@ -

              Die Zusammensetzung der -Schlußnote

              -

              Die Tabelle auf dieser Bildschirmansicht zeigt die -Abschlußnote und wie sie sich zusammensetzt. Sie kann sich -aus drei verschiedenen Elementen zusammensetzen.:

              -
                -
              1. Die Bewertung des/der Trainers/in für die eingereichte -Arbeit.
              2. -
              3. Der Durchschnitt der Bewertung durch andere -Teilnehmer/innen.
              4. -
              5. Eine Note für die eigene Leistung in der Phase der -Bewertung unter den Teilnehmer/innen. Diese Leistung basiert auf -(a) ob die eigenen Bewertungen zu hoch oder zu niedrig waren im -Vergleich mit dem Durchschnitt der anderen Teilnehmer/innen -(Tendenz), (b) ob Ihre Bewertungen den Bewertungen - wieder im -Durchschnitt - denen der anderen Teilnehmer/innen folgen -(Zuverlässigkeit = reliability) und (c) der Qualität -der Kommentare, die Sie zu anderen Arbeiten abgegeben haben. Dies -wird von dem/der Trainer/in bewertet. Diese drei Leistungskriterien werden -von dem/der Trainer/in gewichtet (z.B. 1:2:3) und ergeben eine -Schlußnote. Mit anderen Worten: die Bewertung der -Kommentare wird genauso stark in unserem Beispiel gewichtet, wie -die Tendenz und die Zuverlässigkeit zusammengezählt.
              6. -
              -

              Die Gewichtung der Komponenten kann so erfolgen, wie Sie es -für die Aufgabenstellung für geeignet gehalten wird. -Die Gewichtungen werden in der kleineren Tabele angezeigt.

              +

              Die Zusammensetzung der Schlußnote

              + +

              Die Tabelle auf dieser Bildschirmansicht zeigt dei Abschlußnote und wie sie sich zusammensetzt. + Sie kann sich aus drei verschiedenen Elementen zusammensetzen.: + +

                +
              1. Die Bewertung des Lehrere für die eingereichte Arbeit. +
              2. Der Durchschnitt der Bewertung durch andere Teilnehmer/innen. +
              3. Eine Note für die eigene Leistung in der Phase der Bewertung unter den Teilnehmer/innen. Diese Leistung basiert auf (a) ob die eigenen Bewertungen zu hoch oder zu niedrig waren im Vergleich mit dem Durchschnitt der anderen Teilnehmer/innen (Tendenz), + (b) ob Ihre Bewertungen den Bewertungen - wieder im Durchschnitt - denen der anderen Teilnehmer/innen folgen (Zuverlässigkeit = reliability) + und (c) der Qualität der Kommentare, die Sie zu anderen Arbeiten abgegeben haben. + Dies wird vom Lehrer bewertet. Diese drei Leistungskriterien werden vom Lehrer gewichtet (z.B. 1:2:3) und ergeben eine Schlußnote. Mit anderedn Worten: die Bewertung der Kommentare wird genauso stark in unserem Beispiel gewichtet, wie die Tendenz und die Gültigkeit zusammengezählt. +
              + +

              Die Gewichtung der Komponenten kann so erfolgen, wie es für die Aufgabenstellung für geeignet gehalten wird. Die Gewichtungen werden in der kleineren Tabele angezeigt. +

              \ No newline at end of file diff --git a/lang/de/help/workshop/calculatingfinalgrade.html b/lang/de/help/workshop/calculatingfinalgrade.html index c14f298ec59..ea7b2960f76 100644 --- a/lang/de/help/workshop/calculatingfinalgrade.html +++ b/lang/de/help/workshop/calculatingfinalgrade.html @@ -1,67 +1,17 @@ -

              Berechnung der Schlußnoten

              -

              Die Tabelle zeigt wie die Schlußnote berechnet wird. Die -Note kann sich aus bis zu fünf verschiedenen Teilen -zusammensetzen.

              -
                -
              1. Die Trainer/innenbewertung für die eingereichte Aufgabe. Diese -Option wird genutzt, wenn der/die Trainer/in die Aufgabe bewerten soll. -Wenn die/der Teilnehmer/in mehr als eine Arbeit einreicht, wird -die "beste" Bewertung verwendet. Die beste Arbeit ist in diesem -Zusammenhang, die Arbeit mit der besten Gesamtnote aus den -verschiedenen Kriterien (z.B. Trainer/innennote, -Teilnehmer/innenbewertung)
              2. -
              3. Der Durschnitt aus den Bewertung durch die anderen -Teilnehmer/innen. Auch hier wird, wenn mehr als eine Arbeit -des/der Teilnehmers/in eingereicht wurde, die "best"bewerteteste -verwandt. Die Bewertung der anderen Teilnehmer/innen kann auch die -Bewertung des/der Trainer/in umfassen. Dies kann sinnvoll sein, wenn die -Zahl der Bewertungen sehr gering ist oder Zweifel an der -angemessenen Bewertung durch die Teilnehmer/innen besteht. Wenn -die Note des/der Trainer/in an dieser Stelle mit berücksichtigt -wird, geht sie als einfache Bewertung mit in die Ermittlung der -Durchschnittsbewertung ein.
              4. -
              5. Die Tendenz der Teilnehmer/innenbewertung. Hier wird bewertet, ob -die Teilnehmer/innen sich gegenseitig zu hoch oder zu niedrig -bewertet haben. Die Messung berüht auf der Differenz -zwischen der Teilnehmer/innennote und dem Durchschnitt aus der -Bewertung der anderen Teilnehmer/innen für jede Aufgabenstellung, die sie bewertet haben. Diese Komponente sollte bei der -Zusammensetzung der Schlußnote nicht allzu hoch gewichtet -werden.
              6. -
              7. Die Zuverlässigkeit der Bewertung durch die -Teilnehmer/innen. Dieser Maßstab verdeutlicht wie -groß die 'Streuung' der Bewertung durch die -Teilnehmer/innen ist. Theoretisch ausgedrückt: die -Zuverlässigkeit ist hoch, wenn gute Arbeiten gut und weniger -gute Arbeiten schlechter bewertet werden. Wenn Zweifel daran -bestehen, dass die Bewertung durch die Teilnehmer/innen -angemessen ausfällt, sollte die Bewertung des/der Trainers/in in die -Durchschnittsnote der Teilnehmer/innen einberechnet werden. -Dadurch werden die angemessenen Bewertungen stärker -bedeutungsvoller.
              8. -
              9. Die durchschnittliche Bewertung des/der Trainers/in für die -Teilnehmer/innen. Dieser Wert berücksichtigt sowohl die -vorläufigen Bewertungen durch die Teilnehmer/innen für -die Beispielarbeiten und die Bewertungen des/der Trainer/in während -der Beurteilung durch die Teilnehmer/innen für die -eingereichte Arbeit. Grundsätzlich sollte diese Komponente -wichtiger sein als die Tendenz- und die -Zuverlässigkeitskomponente und sollte daher auch -entsprechend höher bei der Berechnung der Gesamtnote -bewichtet werden.
              10. -
              -

              Diese fünf Komponenten können so gewichtet werden, -wie es für die Aufgabenstellung für hilfreich gehalten -wird. Z.B. sollte die Gewichtung der Trainer/innennote höher sein, -wenn der Bewertung der Teilnehmer/innen untereinander, eine -geringere Bedeutung bei der Bearbeitung der Aufgabenstellung -zugemessen wird. Andererseits kann, wenn der/die Trainer/in nur -einige Teile der Aufgabenstellung bewertet, diesem kein Gewicht -beigemessen werden. Wenn die Aufgabenstellung jedoch die -Bewertung der Teilnehmer/innen untereinander besonders betonen -soll, kann die Gewichtung der ersten beiden o.g. Komponenten -niedrig oder mit Null bei der Berechnung der Schlußnote -festgelegt werden.

              -

              Diese Übersicht wird nach und nach angelegt. Die -Abschlußnoten sind für die Teilnehmer/innen -üblicherweise erst nach Abschluß der Aufgaben und der -Benotung sichtbar.N

              \ No newline at end of file +

              Berechnung der Schlußnoten

              + +

              Die Tabelle zeigt wie die Schlußnote berechnet wird. Die Note kann sich aus bis zu fünf verschiedenen Teilen zusammensetzen. + +

                +
              1. Die Lehrerbewertung für die eingereichte Aufgabe. Diese Option wird genutzt, wenn der Lehrer die Aufgabe bewerten soll. Wenn die/der Teilnehmer/in mehr als eine Arbeit einreicht, wird die "beste" Bewertung verwendet. Die beste Arbeit ist in diesem Zusammenhang, die Arbeit mit der besten Gesamtnote aus den verschiedenen Kriterien (z.B. Lehrernote, Teilnehmerbewertung) +
              2. Der Durschnitt aus den Bewertung durch die anderen Teilnehmer/innen. Auch hier wird, wenn mehr als eine Arbeit des/der Teilnehmers/in eingereicht wurde, die "best"bewerteteste verwandt. Die Bewertung der andeen Teilnehmer/innen kann auch die Bewertung des Lehrers umfassen. Dies kann sinnvoll sein, wenn die Zhal der Bewertungen sehr gering ist oder Zweifel an der angemessenen Bewertung durch die Teilnehmer/innen besteht. Wenn die Note des Lehrers an dieser Stelle mit berücksichtigt wird, geht sie als einfache Bewertung mit in die Ermittlung der Durchschnittsbewertung ein. +
              3. Die Tendenz der Teilnehmerbewertung. Hier wird bewertet, ob die Teilnehmer/innen sich gegenseitig zu hoch oder zu niedrig bewertet haben. Die Messung berüht auf der Differenz zwischen der Teilnehmernote und dem Durchschnitt aus der Bewertung der anderen Teilnehmer/innen für jede Aufgaben stellung, die sie bewertet haben. Diese Komponente sollte bei der Zusammensetzung der Schlußnote nicht allzu hoch gewichtet werden. +
              4. Die Zuverlässigkeit der Bewertung durch die Teilnehmer/innen. Dieser Maßstab verdeutlicht wie groß die 'Streuung' der Bewertung durch die Teilnehmer/innen ist. Theoretisch ausgedrückt: die Zuverlässigkeit ist hoch, wenn gute Arbeiten gut und weniger gute Arbeiten schlechter bewertet werden. Wenn Zweifel daran bestehen, dass die Bewertung durch die Teilnehmer/innen angemessen ausfällt, sollte die Bewertung des Lehrers in die Durchschnittsnote der Teilnehmer/innen einberechnet werden. Dadurch werden die angemessenen Bewertungen stärker bedeutungsvoller. +
              5. Die durchschnittliche Bewertung des Lehrers für die Teilnehmer/innen. Dieser Wert berücksichtigt sowohl die vorläufigen Bewertungen durch die Teilnehmer/innen für die Beispielarbeiten und die Bewertungen des Lehrers während der Beurteilung durch die Teilnehmer/innen für die eingereichte Arbeit. + Grundsätzlich sollte diese Komponente wichtiger sein als die Tendenz- und die Zuverlässigkeitskomponente und sollte daher auch entsprechend höher bei der Berechnung der Gesamtnote bewichtet werden. +
              + +

              Diese fünf Komponenten können so gewichtet werden, wie es für die Aufgabenstellung für hilfreich gehalten wird. Z.B. sollte die Gewichtung der Lehrernote höher sein, wenn der Bewertung der Teilnehmer/innen untereinander, eine geringere Bedeutung bei der Bearbeitung der Aufgabenstellung zugemessen wird. Andererseits kann, wenn der der Lehrer nur einige Teile der Aufgabenstellung bewertet, diesem kein Gewicht beigemessen werden. Wenn die Aufgabenstellung jedoch die Bewertung der Teilnehmer/innen untereinander besonders betonen soll, kann die Gewichtung der ersten beiden o.g. Komponenten niedrig oder mit Null bei der Berechnung der Schlußnote festgelegt werden. + +

              Diese Übersicht wird nach und nach angelegt. Die Abschlußnoten sind für die Teilnehmer/innen üblicherweise erst nach Abschluß der Aufgaben und der Benotung sichtbar.N +

              \ No newline at end of file diff --git a/lang/de/help/workshop/comparisonofassessments.html b/lang/de/help/workshop/comparisonofassessments.html index 1d62ca9ccbb..19b8c711a40 100644 --- a/lang/de/help/workshop/comparisonofassessments.html +++ b/lang/de/help/workshop/comparisonofassessments.html @@ -1,68 +1,54 @@ -

              Vergleich von Bewertungen

              -

              Im Workshop wird üblicherweise die Arbeit gleichermassen -von dem/der Trainer/in und den TN bewertet. Wenn -Musterlösungen verwandt werden, werden diese zuerst von -dem/der Trainer/in bewertet und danach einzelne -Musterlösungen den TN vorgelegt. Die Arbeiten der TN werden -sorgfältig von dem/der Trainer/in kommentiert und bewertet -und möglicherweise auch von einer kleinen Zahl anderer TN. -Der/die Trainer/in kann die Gewichtung der Bewertung einer Arbeit -durch andere TN festlegen. Der Rest der Benotung besteht aus der -Bewertung durch den/die Trainer/in. Die Gewichtung kann am Ende -des Workshops festgelegt werden. Die Bewertungen, die die TN -durchführen können ebenfalls bewertet werden. Dabei -richtet sich die Bewertung nach der Übereinstimmung mit der -Bewertung des/der Trainers/in. Wenn er/sie keine Note vergibt -wird die durchschnittliche Bewertung der Teilnehmer/innen zu -Grunde gelegt.

              -

              Der Grad der Übereinstimmung zwischen der Bewertung durch -die TN und dem/der Trainer/in basiert auf den Unterschieden -zwischen den vergebenen Punkten bei den einzelnen -Bewertungskriterien. Diese müssen noch in eine -nachvollziehbare Benotung übertragen werden. Dazu erlaubt -die Option "Vergleich der Bewertungen" dem Trainer eine genaue -Kontrolle wie die Vergleiche in Benotungen umgesetzt werden.

              -

              Damit Sie eine ungefähre Vorstellung der Wirkung dieser -Option erhalten, sei es mit einem (wirklich einfachen) Beispiel -demonstriert. In unserem Beispiel erfolgt die Bewertung anhand -von 10 Ja/Nein Fragen. (z.B.: Ist das Chart richtig formatiert? -Oder: Ist der errechnete Gewinn 100,66 $?) Wenn die Einstellung -"Sehr lax"" gewählt wurde, ergibt die vollständige -Übereinstimmung zwischen den Bewertungen der TN und des/der -Trainers/in einen Ergebniswert von 100 %, ist nur eine Frage -abweichend bewertet lautet das Ergebnis 90 %, für jede -weitere abweichend bewertete Frage sinkt der Wert um jeweils 10 -%. Diese Bewertung erscheint sehr logisch, aber warum wird sie -als sehr lax bezeichnet? Stellen Sie sich vor, ein TN vergibt die -Bewertung nach dem Zufallsprinzip. Dann wird er wahrscheinlich -50% richtige Bewertungen vornehmen und erhält eine Bewertung -von 50 % als Basis für die Note. Wenn die Einstellung auf -lax geändert wird, wird der Zufallsfaktor mit 20 % gesetzt. -Mit der Fair Option auf 0 in den meisten Fällen. In diesem -Level wird eine 50 % Bewertung vergeben, wenn zwei Bewertungen -von zehn nicht übereinstimmen. Bei drei nicht -übereinstimmenden Bewertungen wird eine 25 % Bewertung -vergeben. Die Einstellung strickt führt bei zwei -Nicht-Übereinstimmung zu einer Bewertung von 40%, sehr -strickt zu einer Bewertung von 35% bei einer -Nichtübereinstimmung.

              -

              Dieses Beispiel ist sicher ein wenig künstlich, da -zumeist Bewertungsskalen mit einer stärkeren Abstufung -verwandt werden als nur Ja/Nein. Die Berechnung des Ergebnisses -des Vergleichs erfolgt jedoch in gleicher Weise. Die -verschiedenen Level (sehr lax, lax, fair,...) dienen nun dazu, -die Bewertung fein abzustimmen. Wenn Sie den Eindruck haben, die -Bewertung ist zu niedrig, ändern Sie einfach den Level in -Richtung sehr lax. Wenn Sie den Eindruck haben, die Bewertung ist -insgesamt zu postiv, ändern Sie den Level in Richtung sehr -strickt. Es ist eine Frage des Ausprobierens. Ein guter + +

              Im Workshop wird üblicherweise die Arbeit gleichermassen vom Trainer und den TN +bewertet. Wenn Musterlösungen verwandt werden, werden diese zuerst vom Trainer bewertet + und danach einzelne Musterlösungen den Tn vorgelegt. Die Arbeiten der Tn werden + sorgfältig vom Trainer kommentiert und bewertet und möglicherweise auch von + einer kleinen Zahl anderer Tn. Der Trainer kann die Gewichtung der Bewertung einer + Arbeit durch andere Tn festlegen. Der Rest der Benotung besteht aus der Bewertung durch den + Trainer. Die Gewichtung kann am Ende des Workshops festgelegt werden. Die Bewertungen, + die die Tn durchführen können ebenfalls bewertet werden. Dabei richtet sich die Bewertung nach der + Übereinstimmung mit der Bewertung des Trainers. Wenn der Trainer keine Note vergibt wird die durchschnittliche Bewertung + der Teilnehmer/inen zu Grunde gelegt.

              + +

              Der Grad der Übereinstimmung zwischen der Bewertung durch die Tn und dem Trainer +basiert auf den Unterschieden zwischen den vergebenen Punkten bei den einzelnen +Bewertungskriterien. Diese müssen noch in eine nachvollziehbare Benotung übertragen werden. +Dazu erlaubt die Option "Vergleich der Bewertungen" dem Trainer eine genaue Kontrolle +wie die Vergleiche in Benotungen umgesetzt werden.

              + +

              Damit Sie eine ungefähre Vorstellung der Wirkung dieser Option erhalten, sei + es mit einem (wirklich einfachen) Beispiel demonstriert. + In unserem Beispiel erfolgt die Bewertung anhand von 1ß Ja/Nein Fragen. + (z.B.: Die das Chart richtig formatiert? Oder: Ist der errechnete Gewinn 100,66 $?) +Wenn die Einstellung "Sehr lax"" gewählt wurde, ergibt die völlständige +Übereinstimmung zwischen den Bewertungen der Tn und des Trainers einen +Ergebniswert von 100 %, ist nur eine Frage abweichend bewertet lautet das Ergebnis 90 %, +für jede weitere abweichend bewertete Frage sinkt der Wert um jeweils 10 %. +Diese Bewertung erscheint sehr logisch, aber warum wird sie als sehr lax bezeichent? +Stellen sie sich vor ein Tn vergibt die Bewertung nach dem Zufallsprinzip. Dann +wird er wahrscheinlich 50% richtige Bewertungen vornehmen und erhält eine Bewertung +von 50 % als Basis für die Note. +Wenn die Einstellung auf lax geändert wird, wird der Zufallsfaktor mit 20 % gesetzt. +Mit der Fair Option auf 0 in den meisten Fällen. +In diesem Level wird eine 50 % Bewertung vergeben, wenn zwei Bewertungen von zehn +nicht übereinstimmen. Bei drei nicht übereinstimmenden Bewertungen wird eine 25 % +Bewertung vergeben. Die Einstellung strickt führt bei zwei Nicht-Übereinstimmung +zu einer Bewertung von 40%, sehr strickt zu einer Bewertung von 35% bei einer Nichtübereinstimmung.

              + +

              Dieses Beispeil ist sicher ein wenig künstlich, da zumeist Bewertungsskalen +mit einer stärkeren Abstufung verwandt werden als nur Ja/Nein. Die berechnung des Ergebnisses des +Vergleichs erfolgt jedoch in gleicher Weise. Die verschiedenen Level (sehr lax, +lax, fair,...) dienen nun dazu die Bewertung fein abzustimmen. Wenn Sie den Eindruck +haben, die Bewertung ist zu niedrig, ändern Sie einfach den Level in Richtung +sehr lax. Wenn Sie den Eindruck haben, die Bewertung ist insgesamt zu postiv, ändern Sie +den Level in Richtung sehr strickt. Es ist eine Frage des Ausprobierrens. Ein guter Startpunkt ist die mittlere Einstellung fair.

              -

              Während des Ablaufs des Workshops bekommen Sie einen -eindruck davon, ob die Bewertungen zu hoch oder zu niedrig sind. -Die Benotungen sind in der Administrationsseite des Workshops -ersichtlich. Sie können dann die Einstellungen anpassen und -die Benotungen neu errechnen lassen. Die Neuberechnung erfolgt -durch Klick auf den Link Neubenotung der Arbeiten der TN auf der -Administrationsseite. Dies kann jederzeit im Verlauf des -Workshops vorgenommen werden.

              \ No newline at end of file + +

              Während des Ablaufs des Workshops bekommen sie einen eindruck davon, ob die +Bewertungen zu hoch oder zu niedrig sind. Die Benotungen sind in der Administrationsseite +des Workshops ersichtlich. Sie können dann die Einstellungen anpassen und die +Benotungen neu errechnen lassen. Die Neuberechnung erfolgt durch Klick auf den Link +Neubenotung der Arbeiten der Tn auf der Administrationsseite. Dies kann jederzeit im Verlauf des +Workshops vorgenommen werden.

              + diff --git a/lang/de/help/workshop/editingacomment.html b/lang/de/help/workshop/editingacomment.html index b79199a3171..b06df7abd81 100644 --- a/lang/de/help/workshop/editingacomment.html +++ b/lang/de/help/workshop/editingacomment.html @@ -1,5 +1,4 @@ - -

              Einen Kommentar erstellen

              -

              Für eine kurze Zeit kann ein Kommentar noch -verändert werden. Während dieser Zeit wird er nicht -angezeigt.

              +

              Einen Kommentar erstellen

              + +

              Für eine kurze Zeit kann ein Kommentar noch verändert werden. Während dieser Zeit wird er nicht angezeigt. +

              \ No newline at end of file diff --git a/lang/de/help/workshop/elements.html b/lang/de/help/workshop/elements.html index 4332b4414db..8b9f077a64a 100644 --- a/lang/de/help/workshop/elements.html +++ b/lang/de/help/workshop/elements.html @@ -1,68 +1,26 @@ -

              Bewertungselemente

              -

              Eine Workshopprüfung sollte eine begründete Anzahl -von "Bewertungselementen" umfassen. Jedes Element sollte -Teilaspekte der Prüfung abdecken. Jedes Element sollte einen -Teilaspekt der Gesamtaufgabenstellung abdecken. Die meisten -Aufgabenstellungen werden zwischen 5 und 15 Einzelelemente -bewerten und kommentieren. Die genaue Zahl wird immer -abhängig sein vom Umfang und der Komplexität der -Aufgabenstellung. Eine Peer-Aufgabe mit nur einem Element ist -möglich und verfolgt dann eine ähnliche -Beurteilungsstrategie wie das Standard-Moodle-Modul -'Assignment'.

              -

              Die Elemente sind abhängig von der gewählten -Bewertungsstrategie.

              -

              Keine Bewertung Die Elemente beschreiben die -geprüften Aspekte. Der/die Trainer/in kommentiert jeden Aspekt. Wie -bei allen anderen Bewertungsstrategien gibt es ein Feld für -generelle Kommentare.

              -

              Elemente haben die folgenden Features:

              -
                -
              1. Die BESCHREIBUNG der Prüfungselemente. Dies legt klar -fest, welche Aspekte geprüft werden. Bei einer qualitativen -Prüfung sollten Details festgelegt werden, was eine -hervorragende, eine durchschnittliche und eine schlechte -Lösung darstellt.
              2. -
              3. Die BEWERTUNGSSKALEN für die Prüfungselemente. Eine -Reihe von Skalen sind bereits vordefiniert. Sie können -einfach ausgewählt werden. Sie reichen von einfachen -Ja/Nein-Skalen über Mehrpunkt-Skalen zu Prozentpunkt-Skalen. -Jedes Element der Prüfung hat seine eignen Skalen zur -Bewertung und muß vor Beginn der Prüfung festgelegt -werden. Jede verwandte Skala hat zunächst das gleiche -Gewicht bei der Festlegung der Schlußnote.
              4. -
              5. Die GEWICHTUNG der Prüfungselemente. In der -Grundeinstellung haben alle Prüfungselemente die gleiche -Bedeutung für die Note. Dies kann individuell eingestellt -werden. Die Gewichtung kann auch negative Werte umfassen. Diese -Möglichkeit befindet sich zur Zeit noch in der -Erprobung.
              6. -
              -
                -
              • Zusammenfassende Fehlerbewertung: Bei dieser -Bewertungsstrategie werden die Arbeiten auf der Grundlage einer -Reihe von Ja/Nein-Kriterien bewertet. Die Gesamtbeurteilung -ergibt sich aus einer "Notentabelle", die die Relation zwischen -"Fehlern" und richtigen Antworten verdeutlicht. Bei einer -Aufgabenstellung bei der sechs Kriterien erfüllt sein -müssen, um eine optimale Note zu erzielen, zeigt die -Notentabelle, welche Note erzielt wird wenn alle Kriterien -erfüllt sind, wenn ein Kriterium fehlt, wenn zwei Kriterien -fehlen usw. Die individuellen Werte können unterschiedlichen -Gewichtungsfaktoren erhalten. Die "Fehlerquot;zahl ist als -gewichtete Summe der Werte nicht verfügbar. In der -Grundeinstellung hat jeder Wert den Wert 1. Die -Bewertungstabelle muß nicht linear sein., z.B. könnten -sie 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0% für eine -Bewertung mit 10 Kategorien sein.
              • -
              • Kriterienbewertung: Dies ist die einfachste Form, eine -Beurteilung vorzunehmen, aber nicht unbedingt einfach -einzurichten. Die eingereichten Arbeiten werden anhand einer -Reihe von Bewertungskategorien bewertet. Der/die Trainer/in prüft, -welche dieser Aussagen am besten auf die Arbeit zutrifft. (z.B. -'entwickelt eigene Ideen' 'hat das Vorgehensprinzip verstanden'. -Die Note ergibt sich aus einer "Kriterientabelle" für jede -Note. Zum Beispiel kann eine Bewertung fünf Kriterien -umfassen. Der/die Trainer/in muß nun eine Aussage auswählen -zur Bewertung.
              • -
              \ No newline at end of file +

              Bewertungselemente

              + +

              Eine WorkshopPrüfung sollte eine begründete Anzahl von "Bewertungselementen" umfassen. Jedes Element sollte Teilaspekte der Prüfung abdecken. Jedes Element sollte einen teilaspekt der Gesamtaufgabenstellung abdecken. Die meisten Aufgabenstellungen werden zwischen 5 und 15 Einzelelmente bewerten und kommentieren. Die genaue Zahl wird immer abhängig sein vom Umfang und der Komplexität der Aufgabenstellung. Eine Peer-Aufgabe mit nur einem Element ist möglich und verfolgt dann eine ähnliche Beurteilungsstrategie wie das Standard-Moodle-Modul 'Assignment'. + +

              Die Elemente sind abhängig von der gewählten Bewertungsstrategie. + +

              Keine Bewertung Die Elemente beschreiben die geprüften Aspekte. Der Lehrer kommentiert jeden Aspekt. Wie bei allen anderen Bewertungsstrategien gibt es ein Feld für generelle Kommentare. + + +

              Elemente haben die folgenden Features: +

                +
              1. Die BESCHREIBUNG der Prüfungselemente. Dies legt klar fest, welche Aspekte geprüft werden. Bei einer qualitativen Prüfung sollten Details festgelegt werden, was eine hervorragende, eine durchschnittliche und eine schlechte Lösung darstellt. + +
              2. Die BEWERTUNGSSKALEN für die Prüfungselemente. Eine Reihe von Skalen sind bereits vordefiniert. Sie können einfach ausgewählt werden. Sie reichen von einfachen Ja/Nein-Skalen über Mehrpunkt-Skalen zu Prozentpunkt-Skalen. Jedes Element der Prüfung hat seine eignen Skalen zur Bewertung und muß vor Beginn der Prüfung festgelegt werden. Jede verwandte Skala hat zunächst das gleiche Gewicht bei der Festlegung der Schlußnote. + +
              3. Die GEWICHTUNG der Prüfungselemente. In der Grundeinstellung haben alle Prüfungselemente die gleiceh Bedeutung für die Note. Dies kann individuell eingestellt werden. Die Gewichtung kann auch negative Werte umfassen. Diese Möglichkeit befindet sich zur Zeit noch in der Erprobung. +
              + +
            6. Zusammenfassende Fehlerbewertung: Bei dieser Bewertungsstrategie werden die Arbeiten auf der Grundlage einer Reihe von Ja/Nein-Kriterien bewertet. Die Gesamtbeurteilung ergibt sich aus einer "Notentabelle ", die die Relation zwischen "Fehlern" und richtigen Antworten verdeutlicht. Bei einer Aufgabenstellung bei der sechs Kriterien erfüllt sein müssen, um eine optimale Note zu erzielen, zeigt die Notentabelle, welche Note erzielt wird wenn alle Kriterien erfüllt sind, wenn ein Kriterium fehlt, wenn zwei Kriterien fehlen usw. Die individuellen Werte können unterschiedlichen Gewichtungsfaktoren erhalten. Die "Fehlerquot;zahl ist als gewichtete Summe der Werte nicht verfügbar. In der Grundeinstellung hat jeder Wert den Wert eins. Die Bewertungstabelle muß nicht linear sein., z.B. + könnten sie 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0% für eine Bewerung mit 10 Kategorien sein. + +
            7. Kriterienbewertung: Dies ist die einfachste Form, eine Beurteilung vorzunehmen, aber nicht unbedingt einfach einzurichten. +Die eingereichten Arbeiten werden anhand einer Reihe von Bewertungskategorien bewertet. Der Bewerter prüft, welche dieser Aussagen am beste auf die Arbeit zutrifft. (z.B. 'entwickelt eigene Ideen' 'hat das Vorgehensprinzip verstanden'. Die Note +ergibt sich aus einer "Kriterientabelle" für jede Note. Zum Beispiel kann eine Bewertung fünf Kriterien umfassen. Der Bewerter muß nun eine Aussgae auswählen zur Bewertung. +
            +

            \ No newline at end of file diff --git a/lang/de/help/workshop/finalgrades.html b/lang/de/help/workshop/finalgrades.html index ef92650068f..eb3caa7f3c7 100644 --- a/lang/de/help/workshop/finalgrades.html +++ b/lang/de/help/workshop/finalgrades.html @@ -1,24 +1,11 @@ - -

            Die Schlußbewertung

            -

            Die Tabelle auf dieser Bildschirmansicht zeigt die -Schlußbewertung und ihre Zusammensetzung, wie sie auch die -Teilnehmer/innen sehen können. Falls in dieser Ansicht Werte -fehlen, können Sie "zurück gehen" und diese -ergänzen. Falls erforderlich, können Sie zwei -Korrekturen in der Schlußbewertung vornehmen.

            -
              -
            1. Wenn die Trainer/innenbenotung zu einer Arbeit hinzugefügt -werden soll, geht man zum Bildschirm mit der Verwaltung für -Trainer/innen und klickt auf den Link für "Teilnehmer/innenarbeiten zur -Bewertung". Jede eingereichte Arbeit kann hier bewertet werden. -Wenn dies erfolgt ist, kann die Abschlußnote neu berechnet -werden. In der gleichen Art und Weise können alle noch nicht -bewerteten Aufgaben von der Verwaltung für Trainer/innen aus -bearbeitet werden.
            2. -
            3. Wenn Sie vorhaben, ein verändertes Bewertungsschema -einzusetzen, gehen Sie in Phase 3 zurück und nehmen Sie den -Link "Berechnung der Schlußnoten". Tragen Sie die neuen -Bewertungen ein. Nachdem die Noten neu berechnet wurden, -können Sie in Phase 4 den Teilnehmer/innen zugänglich -gemacht werden.
            4. -
            +

            Die Schlußbewertung

            + +

            Die Tabelle auf dieser Bildschirmansicht zeigt die Schlußbewertung und ihre Zusammensetzung, wie sie auch die Teilnehmer/innen sehen können. Falls in dieser Ansicht Werte fehlen, können Sie "zurück gehen" + und diese ergänzen. Falls erforderlich, können Sie zwei Korrekturen in der Schlußbewertung vornehmen. + +

              +
            1. Wenn die Lehrerbenotung zu einer Arbeit hinzugefügt werden soll, geht man zum Bildschirm mit der Verwaltung für Lehrer und klickt auf den Link für "Teilnehmerarbeiten zur Bewertung". Jede eingereichte Arbeit kann hier bewertet werden. Wenn dies erfolgt ist, kann die Abschlußnote neu berechnet werden. In der gleichen Art und Weise können alle noch nicht bewertet Aufgbaen von der Verwaltung für Lehrer aus bearbeitet werden. +
            2. Wenn Sie vorhaben ein verändertes Bewertungsschema einzusetzen, gehen Sie in Phase 3 zurück und nehmen Sie den Link "Berechnung der Schlußnoten" tragen Sie die neuen Bewertungen ein. Nachdem die Noten neu berechnet wurden, können sie in Phase 4 den Teilnehmer/innen zugänglich gemacht werden. +
            + +

            \ No newline at end of file diff --git a/lang/de/help/workshop/grade.html b/lang/de/help/workshop/grade.html index f609d8e440c..5fad697a196 100644 --- a/lang/de/help/workshop/grade.html +++ b/lang/de/help/workshop/grade.html @@ -4,11 +4,11 @@ werden kann, fest.

            Die Gesamtnote für den Workshop ist die Summe aus der (durchschnittlichen) -Note der Bewertungen, die der/die TN durchgeführt hat, und der Bewertung der von ihm/ihr +Note der Bewertungen, die der TN durchgeführt hat, und der Bewertung der von ihm eingereichten Arbeit(en). Wenn der höchste Wert für die Bewertungen des TN mit 30 festgelegt wurde und der höchste Wert für die eingereichten Arbeiten mit 70, so ergibt sich eine Höchstbewertung des Workshops von 100.

            Dieser Wert kann jederzeit angepasst werden und wirkt sich sofort auf die -angezeigte Bewertung aus.

            +angezeigte Bewertung aus..

            diff --git a/lang/de/help/workshop/graded.html b/lang/de/help/workshop/graded.html index df02f21b2c4..e2544c96bb6 100644 --- a/lang/de/help/workshop/graded.html +++ b/lang/de/help/workshop/graded.html @@ -1,13 +1,7 @@ - -

            Eine bewertete Aufgabenstellung

            -

            Hier werden die Bewertungen und Kommentare für eine -Aufgabe angezeigt. Wen Sie wünschen können Sie -Antworten hierzu erstellen oder anzeigen, dass Sie eine -Einschätzung (zu diesem Zeitpunkt)nicht akzeptieren. In -diesem Fall, tragen Sie Ihre Antwort im Feld an unteren Ende der -Seite ein und begründen Sie, warum Sie mit der -Einschätzung nicht zufrieden sind. Betätigen Sie danach -den Button am Ende der Seite und wählen Sie NEIN, wenn Sie -gefragt werden, ob Sie mit der Bewerung einverstanden sind.

            -

            Wenn Sie jedoch mit der Einschätzung zufrieden sind, -geben Sie JA sein.

            +

            Eine bewertete Aufgabenstellung

            + +

            Hier werden die Bewertungen und Kommentare für eine Aufgabe angezeigt. Wen Sie wünschen können Sie Ant2worten hierzu erstellen oder anzeigen, dass Sie eine Einschätzung (zu diesem Zeitpunkt)nicht akzeptieren. In diesem Fall, tragen Sie Ihre Antwort im Feld an unteren Ende der Seite ein und begründen Sie, warum Sie mit der Einschätzung nicht zufrieden sind. Betätigen Sie danach den Button am Ende der Seite und wählen Sie NEIN, wenn Sie gefragt werden, ob Sie mit der Bewerung einverstanden sind. + +

            Wenn Sie jedoch mit der Einschätzung zufrieden sind, geben Sie JA sein. + +

            \ No newline at end of file diff --git a/lang/de/help/workshop/grading.html b/lang/de/help/workshop/grading.html index 25dfb6634f1..0d82e28cf78 100644 --- a/lang/de/help/workshop/grading.html +++ b/lang/de/help/workshop/grading.html @@ -1,32 +1,17 @@ - -

            Bewertung der Teilnehmer/innenbewertung

            -

            Jede Teilnehmer/innenbewertung ist in verschiedene Bewertungs- -"elemente" aufgeteilt. Jedes Element deckt einen Teilsapekt der -Prüfung ab. Je nach Art der Prüfung sollte für -jedes Element

            -
              -
            1. eine Note festgelegt werden durch Auswahl geeigneter Buttons -oder einer geeigneten Zahl im Drop-Down-Menu.
            2. -
            3. eine Erläuterung im Feedbackfeld vergeben werden. Wenn -Sie der Ansicht sind, die Note sei offensichtlich, lassen Sie das -Feld leer. Beachten Sie, dass der/die Trainer/in Ihre Bewertungen -betrachtet und Sie auf der Basis der Note und ggfs. des -Kommentars bewertet.
            4. -
            -

            In manchen Prüfungsformen sind Sie aufgefordert -festzustellen, ob verschiedene Aspekte berücksichtigt wurden -oder nicht. In einer anderen Form sind Sie aufgefordert -festzulegen, welche Aussage am besten zu der vorlegten Arbeit -passt. In beiden Fällen können Sie mit Ihrer Note festlegen, wie Sie die Arbeit einschätzen.

            -

            Der letzte Abschnitt dieses Formulars steht für einen -generellen Kommentar über die Arbeit zur Verfügung. -Dieser sollte Ihre Bewertung begründen. Er sollte -höflich und weitgehend konstruktiv sein. Denken Sie daran, -auch Ihre eigene Arbeit wird anderen Teilnehmer/innen zur -Bewertung vorgelegt.

            -

            Innerhalb eines begrenzten Zeitraums (meist eine halbe Stunde) -können Sie Ihre Meinung ändern und die vergebene Note -und Ihre Kommentare verändern. Danach wird die bewertete -Teilnehmer/in darüber informiert, dass eine Bewertung -vorliegt. Sie selber können dann Ihre Bewertung einsehen, -aber nicht mehr verändern.

            \ No newline at end of file +

            Bewertung der Teilnehmerbewertung

            + +

            JedeTeilnehmerbewertung ist in verschiedene Bewertungs- "elemente" aufgeteilt. Jedes Element deckt einen Teilsapekt der Prüfung ab. Je nach Art der Prüfung sollte für jedes Element +

              +
            1. eine Note festgelegt werden durch Auswahl geeigneter Buttons oder einer geeigneten Zahl im Drop-Down-Menu. + +
            2. eine Erläuterung im Feedbackfeld vergeben werden. Wenn Sie der Ansicht sind, die Note sei offensichtlich, lassen Sie das Feld leer. Beachten Sie, dass der Lehrer Ihre Bewertungen betrachtet und Sie auf der Basis der Note und ggfs. des Kommentars bewertet. + +
            + +

            In anderen Prüfungsformen sind Sie aufgefordert festzustellen, ob verschiedene Aspekte berücksichtigt wurden oder nicht. In einer anderen Form sind Sie aufgefordert festzulegen, welche Aussage am besten zu der vorlegten Arbeit passt. In beiden Fällen können Sie Ihre Note zu festlegen, wie Sie die Arbeit einschätzen. + +

            Der letzte Abschnitt dieses Formulars steht für einen generellen Kommentar über die Arbeit zur Verfügung. Dieser sollte Ihre Bewerung begründen. Er sollte höflich und weitgehend konstruktiv sein. Denken Sie daran, auch Ihre eigene Arbeit wird anderen Teilnehmer/innen zur Bewertung vorgelegt. + +

            Innerhalb eines begrenzten Zeitraums (meist eine halbe Stunde) könne Sie Ihre Meinung ändern und die vergebene Note und Ihre Kommentare verändern. Danach wird die bewertete Teilnehmer/in darüber informiert, dass eine Bewertung vorliegt. Sie selber könenn dann Ihre Bewertung einsehen, aber nicht mehr verändern. + +

            \ No newline at end of file diff --git a/lang/de/help/workshop/gradingassessments.html b/lang/de/help/workshop/gradingassessments.html index 8f5baf20bb9..989c6d35f7c 100644 --- a/lang/de/help/workshop/gradingassessments.html +++ b/lang/de/help/workshop/gradingassessments.html @@ -1,21 +1,8 @@ - -

            Bewertung der Teilnehmerbewertungen

            -

            Auf diesem Bildschirm werden die Bewertungen des/der Trainers/in -für die Einschätzungen der Teilnehmer/innen in der -Phase der Teilnehmer/innenbewertung erfasst. Eine relativ einfache -Punktebewertung mit einer 20 Punkte-Skala wird verwandt. Der/die -Trainer/in legt fest, was bewertet wird und wie die Punkte zugeordnet -werden. Basis ist die Anweisung an die Bearbeitung der Aufgaben -zu Beginn der Prüfung. Zum Beispiel kann auf einem -höheren Level festgelegt werden, kritische Kommentare -abzugeben und Stärken und Schwächen herauszuarbeiten. -Auf einer niedrigeren Ebene werden Fehler und Ungenauigkeiten -bemerkt.

            -

            Wenn verfügbar, kann die Bewertung des/der Trainers/in gezeigt -werden, damit die/der Teilnehmer/in leichter vergleichen kann. -Die Kommentare des/der Trainers/in können als Benchmark genutzt -werden.

            -

            Die Bewertungen werden durch den Button am Ende der Seite -gespeichert. Innerhalb des Bearbeitungszeitraums kann die Note -verändert werden. Danach wird sie den Teilnehmr/innen -angezeigt.

            \ No newline at end of file +

            Bewertung der Teilnehmerbewertungen

            + +

            Auf diesem Bildschirm werden die Bewertungen des Lehrers für die Einschätzungen der Teilnehmer/innen in der Phase der Teilnehmerbewertung erfasst. Eine relativ einfache Punktebewertung mit einer 20 Punkte-Skala wird verwandt. Der Lehrer legt fest, was bewertet wird und wie die Punkte zugeordnet werden. Basis ist die Anweisung an die Bearbeitung der Aufgaben zu Beginn der Prüfung. Zum Beispiel kann auf einem höheren Level festgelegt werden, kritische Kommentare abzugeben und Stärken und Schwächen herauszuarbeiten. Auf einer niedrigeren Ebene werden Fehler und Ungenauigkeiten bemerkt. + +

            Wenn verfügbar kann die Bewertung des Lehrers gezeigt werden, damit die/der Teilnehmer/in leichter vergleichen kann. Die Kommentare des Lehers können als Benchmark genutzt werden. + +

            Die Bewertungen werden durch den Button am Ende der Seite gespeichert. Innerhalb des Bearbeitunsgzeitraums kann die Note verändert werden. Danach wird sie den Teilnehmr/innen angezeigt. +

            \ No newline at end of file diff --git a/lang/de/help/workshop/gradinggrade.html b/lang/de/help/workshop/gradinggrade.html index d737c33d40b..270a3369692 100644 --- a/lang/de/help/workshop/gradinggrade.html +++ b/lang/de/help/workshop/gradinggrade.html @@ -1,23 +1,18 @@ +

            Benotung der Bewertungen der Teilnehmer/innen

            -

            Benotung der Bewertungen der -Teilnehmer/innen

            -

            Dies ist die Höchstbenotung für die Bewertungen der -TN für ihre eigene Arbeit und die der anderen TN. Dies ist -also die Benotung für ihre Bewertungen. Die aktuelle Note -für eine Bewertung wird berechnet aus dem Vergleich der -Bewertung mit der besten Bewertung für die gleiche Arbeit. -Die beste Bewertung ist diejenige, die dem Mittelwert aller -Bewertungen am nächsten kommt. Wenn nur eine Bewertung -vorliegt, wird diese als beste angenommen. Wenn zwei Bewertungen -vorliegen, werden beide als beste angenommen. Nur wenn drei oder -mehr Bewertungen vorliegen greift der Berechnungsmodus.

            -

            Diese Note wird manchmal als benotete Note ("grading grade") -bezeichnet und ist nicht die maximale Benotung der -Arbeit, diese wird als "Note für die Arbeit" bezeichnet.

            -

            Die Note des TN für die Arbeit setzt sich aus dieser Note und -der Note für die Arbeit(en) zusammen. Wenn die maximale -Bewertung für die TN-Bewertung bei 20 liegt und die -Bewertung der Arbeit bei 80 liegt, sind insgesamt 100 Punkte zu -erreichen.

            -

            Der Wert kann jederzeit geändert werden. Die Auswirkungen -in der Bewertung sind direkt sichtbar.

            \ No newline at end of file +

            Dies ist die Höchstbenotung für die Bewertungen der Tn für ihre eigene Arbeit und die der anderen Tn. +Dies ist also die Benotung für ihre Bewertungen Die aktuelle Note für eine Bewertung wird +Berechnet aus dem Vergleich der Bewertung mit der besten Bewertung für die gleiche Arbeit +Die beste Bewertung ist diejenige, die dem Mittelwert aller Bewertungen am nächsten kommt. +Wenn nur eine Bewertung vorliegt, wird diese als beste angenommen. Wen zwei Bewertungen vorliegen werden beide als beste angenommen. Nur wenn drei oder mehr Bewertungen vorliegen greift der Berechnungsmodus. + .

            + +

            Diese Note wird manchmal als benotete Note ("grading grade") bezeichnet und ist + nicht die maximale Benotung der Arbeit, diese wird als + "Note für die Arbeit" bezeichnet.

            + +

            Die Note des Tn für die Arbeit setzt sich dieser Note und der Note für die Arbeit(en) zusammen. +Wenn die maximale Bewertung für die Tn-Bewertung bei 20 liegt und die Bewertung der Arbeit bei 80 liegt, sind insgesamt 100 Punkte zu erreichen. .

            + +

            Der Wert kann jederzeit geändert werden. Die Auswirkungen in der Bewertung sind direkt sichtbar.

            + \ No newline at end of file diff --git a/lang/de/help/workshop/gradingstrategy.html b/lang/de/help/workshop/gradingstrategy.html index 98ef7f519f0..b705eaa47c4 100644 --- a/lang/de/help/workshop/gradingstrategy.html +++ b/lang/de/help/workshop/gradingstrategy.html @@ -1,74 +1,30 @@ -

            Bewertungsstrategien

            -

            Die Workshopprüfung ist bei der Wahl der -Bewertungsstrategien sehr flexibel.

            -
              -
            1. Keine Bewertung: Bei dieser Form der Aufgabenstellung -erfolgt keine quantitative Benotung durch die Teilnehmer/innen. -Sie kommentieren die vorgelegten Antworten der anderen -Teilnehmer/innen, vergeben jedoch keine Noten. Der/die Trainer/in kann - -sofern sie/er dies will - die Kommentare der Teilnehmer/innen -bewerten. Solche "bewerteten Kommentare" können eine -Grundlage für die Benotung der Teilnehmer/innenleistungen sein. -Wenn der/die Trainer/in die bearbeiteten Aufgaben nicht benotet, kann auch -keine Gesamtnote erstellt werden.
            2. -
            3. Zusammengefasste Bewertung: Dies ist die -Grundeinstellung des Moduls. Bei dieser Aufgabenstellung setzt -sich jede einzelne Bewertung aus einer Reihe von -"Beurteilungselementen" zusammen. Jedes Element sollte einen -Teilaspekt der Gesamtaufgabenstellung abdecken. Die meisten -Aufgabenstellungen werden zwischen 5 und 15 Einzelelmente -bewerten und kommentieren. Die genaue Zahl wird immer -abhängig sein vom Umfang und der Komplexität der -Aufgabenstellung. Eine Peer-Aufgabe mit nur einem Element ist -möglich und verfolgt dann eine ähnliche -Beurteilungsstrategie wie das Standard-Moodle-Modul 'Assignment'. -

              Elemente haben die folgenden Features:

              -
                -
              1. Die BESCHREIBUNG der Prüfungselemente. Dies legt klar -fest, welche Aspekte geprüft werden. Bei einer qualitativen -Prüfung sollten Details festgelegt werden, was eine -hervorragende, eine durchschnittliche und eine schlechte -Lösung darstellt.
              2. -
              3. Die BEWERTUNGSSKALEN für die Prüfungselemente. Eine -Reihe von Skalen sind bereits vordefiniert. Sie können -einfach ausgewählt werden. Sie reichen von einfachen -Ja/Nein-Skalen über Mehrpunkt-Skalen zu Prozentpunkt-Skalen. -Jedes Element der Prüfung hat seine eignen Skalen zur -Bewertung und muß vor Beginn der Prüfung festgelegt -werden. Jede verwandte Skala hat zunächst das gleiche -Gewicht bei der Festlegung der Schlußnote.
              4. -
              5. Die GEWICHTUNG der Prüfungselemente. In der -Grundeinstellung haben alle Prüfungselemente die gleiche -Bedeutung für die Note. Dies kann individuell eingestellt -werden. Die Gewichtung kann auch negative Werte umfassen. Diese -Möglichkeit befindet sich zur Zeit noch in der -Erprobung.
              6. -
              -
            4. -
            5. Zusammenfassende Fehlerbewertung: Bei dieser -Bewertungsstrategie werden die Arbeiten auf der Grundlage einer -Reihe von Ja/Nein-Kriterien bewertet. Die Gesamtbeurteilung -ergibt sich aus einer "Notentabelle ", die die Relation zwischen -"Fehlern" und richtigen Antworten verdeutlicht. Bei einer -Aufgabenstellung bei der sechs Kriterien erfüllt sein -müssen, um eine optimale Note zu erzielen, zeigt die -Notentabelle welche Note erzielt wird wenn alle Kriterien -erfüllt sind, wenn ein Kriterium fehlt, wenn zwei Kriterien -fehlen usw. Die individuellen Werte können unterschiedlichen -Gewichtungsfaktoren erhalten. Die "Fehlerzahl/quote ist als -gewichtete Summe der Werte nicht verfügbar. In der -Grundeinstellung hat jeder Wert den Wert 1. Die -Bewertungstabelle muß nicht linear sein., z.B. könnten -sie 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0% für eine -Bewertung mit 10 Kategorien sein.
            6. -
            7. Kriterienbewertung: Dies ist die einfachste Form, eine -Beurteilung vorzunehmen, aber nicht unbedingt einfach -einzurichten. Die eingereichten Arbeiten werden anhand einer -Reihe von Bewertungskategorien bewertet. Der/die Trainer/in prüft, -welche dieser Aussagen am besten auf die Arbeit zutrifft. (z.B. -'entwickelt eigene Ideen' 'hat das Vorgehensprinzip verstanden'. -Die Note ergibt sich aus einer "Kriterientabelle" für jede -Note. Zum Beispiel kann eine Bewertung fünf Kriterien -umfassen. Der/die Trainer/in muß nun eine Aussgae auswählen -zur Bewertung.
            8. -
            \ No newline at end of file +

            Bewertungstsrategien

            + +

            Die Workshopprüfung ist bei der Wahl der Bewertungsstrategien sehr flexibel. + +

              +
            1. Keine Bewertung: Bei dieser Form der Aufgabenstellung erfolgt keine quantitative Benotung durch die Teilnehmer/innen. Sie kommentieren die vorgelegten Antworten der anderen Teilnehmer/innen, vergeben jedoch keine Noten. Der Lehrer kann - sofern er dies will - die Kommentare der Teilnehmer/innen bewerten. +Solche "bewerteten Kommentare" können eine Grundlage für die Benotung der Teilnehmerleistungen sein. + Wenn der Lehrer die bearbeiteten Aufgaben nicht benotet kann auch keine Gesamtnote erstellt werden. + +
            2. Zusammengefasste Bewertung: Dies ist die Grundeinstellung des Moduls. + Bei dieser Aufgabenstellung setzt sich jede einzelne Bewertung aus einer Reihe von "Beurteilungselementen" zusammen. Jedes Element sollte einen teilaspekt der Gesamtaufgabenstellung abdecken. Die meisten Aufgabenstellungen werden zwischen 5 und 15 Einzelelmente bewerten und kommentieren. Die genaue Zahl wird immer abhängig sein vom Umfang und der Komplexität der Aufgabenstellung. Eine Peer-Aufgabe mit nur einem Element ist möglich und verfolgt dann eine ähnliche Beurteilungsstrategie wie das Standard-Moodle-Modul 'Assignment'. + +

              Elemente haben die folgenden Features: +

                +
              1. Die BESCHREIBUNG der Prüfungselemente. Dies legt klar fest, welche Aspekte geprüft werden. Bei einer qualitativen Prüfung sollten Details festgelegt werden, was eine hervorragende, eine durchschnittliche und eine schlechte Lösung darstellt. + +
              2. Die BEWERTUNGSSKALEN für die Prüfungselemente. Eine Reihe von Skalen sind bereits vordefiniert. Sie können einfach ausgewählt werden. Sie reichen von einfachen Ja/Nein-Skalen über Mehrpunkt-Skalen zu Prozentpunkt-Skalen. Jedes Element der Prüfung hat seine eignen Skalen zur Bewertung und muß vor Beginn der Prüfung festgelegt werden. Jede verwandte Skala hat zunächst das gleiche Gewicht bei der Festlegung der Schlußnote. + +
              3. Die GEWICHTUNG der Prüfungselemente. In der Grundeinstellung haben alle Prüfungselemente die gleiceh Bedeutung für die Note. Dies kann individuell eingestellt werden. Die Gewichtung kann auch negative Werte umfassen. Diese Möglichkeit befindet sich zur Zeit noch in der Erprobung. +
              + +
            3. Zusammenfassende Fehlerbewertung: Bei dieser Bewertungsstrategie werden die Arbeiten auf der Grundlage einer Reihe von Ja/Nein-Kriterien bewertet. Die Gesamtbeurteilung ergibt sich aus einer "Notentabelle ", die die Relation zwischen "Fehlern" und richtigen Antworten verdeutlicht. Bei einer Aufgabenstellung bei der sechs Kriterien erfüllt sein müssen, um eine optimale Note zu erzielen, zeigt die Notentabelle, welche Note erzielt wird wenn alle Kriterien erfüllt sind, wenn ein Kriterium fehlt, wenn zwei Kriterien fehlen usw. Die individuellen Werte können unterschiedlichen Gewichtungsfaktoren erhalten. Die "Fehlerquot;zahl ist als gewichtete Summe der Werte nicht verfügbar. In der Grundeinstellung hat jeder Wert den Wert eins. Die Bewertungstabelle muß nicht linear sein., z.B. + könnten sie 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0% für eine Bewerung mit 10 Kategorien sein. + +
            4. Kriterienbewertung: Dies ist die einfachste Form, eine Beurteilung vorzunehmen, aber nicht unbedingt einfach einzurichten. +Die eingereichten Arbeiten werden anhand einer Reihe von Bewertungskategorien bewertet. Der Bewerter prüft, welche dieser Aussagen am beste auf die Arbeit zutrifft. (z.B. 'entwickelt eigene Ideen' 'hat das Vorgehensprinzip verstanden'. Die Note +ergibt sich aus einer "Kriterientabelle" für jede Note. Zum Beispiel kann eine Bewertung fünf Kriterien umfassen. Der Bewerter muß nun eine Aussgae auswählen zur Bewertung. +
            + +

            \ No newline at end of file diff --git a/lang/de/help/workshop/gradingsubmissions.html b/lang/de/help/workshop/gradingsubmissions.html index e6745373df7..11f982fa09f 100644 --- a/lang/de/help/workshop/gradingsubmissions.html +++ b/lang/de/help/workshop/gradingsubmissions.html @@ -1,11 +1,5 @@ -

            Bewertung der abgegebenen Arbeiten der Teilnehmer/innen

            -

            Im Regelfall will der/die Trainer/in die Arbeiten der Teilnehmer/innen -bewerten. Diese Bewertungen werden den Teilnehmer/innen gezeigt -und liefern ihnen Feedback zu ihrer Arbeit.

            -

            Die Noten der Bewertung können in der Schlußnote in -zweierlei Weise berücksichtigt werden. Zunächst kann -die Note selbst als eine gewichtete Komponente genutzt werden. -Zusätzlich kann sie den Bewertungen der Teilnehmer/innen als -"ausgleichender Faktor" hinzugefügt werden; wenn die -Bewertungen der Teilnehmer/innen in der Tendenz zu hoch oder zu -niedrig sind.

            \ No newline at end of file +

            Grading of Student Submissions

            + +

            Im Regelfall will der Lehrer die Arbeiten der Teilnehmer/inen bewerten. Diese Bewertungen werden den TeilnehmerInnen gezeigt und liefern ihnen Feedback zu ihrer Arbeit.

            +

            Die Noten der Bewertung können in der Schlußnote in zweierlei Weise berücksichtigt werden. Zunächst kann die Note selbst als eine gewichtete Komponente genutzt werden. Zusätzlich kann sie den Bewertungen der Teilnehmer/innen als "ausgleichender Faktor" hinzugefügt werden; wenn die Bewertungen der Teilnehmer/innen in der Tendenz zu hoch oder zu niedrig sind. +

            \ No newline at end of file diff --git a/lang/de/help/workshop/includeself.html b/lang/de/help/workshop/includeself.html index b8f9158bb17..813b52e5ca4 100644 --- a/lang/de/help/workshop/includeself.html +++ b/lang/de/help/workshop/includeself.html @@ -1,8 +1,8 @@ -

            Selbstbewertung

            - -

            Eine Teilnehmerbewertung kann auch die Bewertung der eighenen Arbeit umfassen. Dies bedeutet, wenn jede/r Teilnehmner/in FÜNF Arbeiten anderer Teilnehmer/innen bewerten soll, er/sie aufgefordert wird sechs Arbeiten (einschließlich der eigenen Arbeit) zu bewerten. -

            - -

            Wenn die Zhal der Teilnehmerbewerrtungsn auf NULL gesetzt und die Selbstbewertung aktiviert ist, erfolgt ausschließlich eine Selbstbewertung. Eine Bewertung durch den Lehrer kann gesondert aktiviert werden oder weggelassen werden. - -

            \ No newline at end of file +

            Selbstbewertung

            + +

            Eine Teilnehmerbewertung kann auch die Bewertung der eighenen Arbeit umfassen. Dies bedeutet, wenn jede/r Teilnehmner/in FÜNF Arbeiten anderer Teilnehmer/innen bewerten soll, er/sie aufgefordert wird sechs Arbeiten (einschließlich der eigenen Arbeit) zu bewerten. + + +

            Wenn die Zhal der Teilnehmerbewerrtungsn auf NULL gesetzt und die Selbstbewertung aktiviert ist, erfolgt ausschließlich eine Selbstbewertung. Eine Bewertung durch den Lehrer kann gesondert aktiviert werden oder weggelassen werden. + +

            \ No newline at end of file diff --git a/lang/de/help/workshop/includeteachersgrade.html b/lang/de/help/workshop/includeteachersgrade.html index 48f46bd58dd..9eae996ccd4 100644 --- a/lang/de/help/workshop/includeteachersgrade.html +++ b/lang/de/help/workshop/includeteachersgrade.html @@ -1,12 +1,4 @@ - -

            Die Bewertung des/der Trainers/in -einbeziehen

            -

            Diese Option ermöglicht es, die Bewertung des/der Trainers/in in -die Teilnehmer/innenbewertung einzufügen, als wäre er/sie -eine Teilnehmer/in. Wenn die Option JA gewählt wird, wird -seine/ihre die Bewertung doppelt berücksichtigt: als -normale Trainer/innenbewertung und als Teil der Teilnehmer/innenbewertung. Der/die -Trainer/in kann dies tun, wenn (a) die Zahl der Teilnehmer/innenbewertungen -zu jeder Arbeit niedrig ist oder (b) um der Bewertung der -Teilnehmer/innen eine angemessene Richtung zu geben, wenn diese -tendenziös sind oder fehlerhaft.

            \ No newline at end of file +

            Die Bewertung des Lehrers einbeziehen

            + +

            Diese Option ermöglicht es, die Bewertung des Lehrers in die Teilnehmerbeweertung einzufügen, als wäre er/sie eine Teilnehmer/in. Wenn die Option JA gewählt wird, wird die Bewertrung des Lehrers doppelt berücksichtigt: als normale Lehrerbewertung und als Teil der Teilnehmerbewertung. +Der Lehrer kann dies tun, wenn (a) die Zahl der Teilnehmerbewertungen zu jeder Arbeit niedrig ist oder (b) um der Bewertung der Teilnehmer eine angemessene Richtung zu geben, wenn diese tendenziös sind oder fehlerhaft.

            diff --git a/lang/de/help/workshop/index.html b/lang/de/help/workshop/index.html index e1c02fa18e6..816ba18bcad 100644 --- a/lang/de/help/workshop/index.html +++ b/lang/de/help/workshop/index.html @@ -1,79 +1,31 @@ -

            Workshop

            -
              -
            • Eine -bewertete Aufgabenstellung
            • -
            • Einen -Kommentar abgeben
            • -
            • Anonyme -Bewertung
            • -
            • Bewertung -der Trainer/innenbeispiele
            • -
            • Bewertungselemente
            • -
            • Anzeige der -Trainer/innenbewertungen
            • -
            • Einen -Kommentar bearbeiten
            • -
            • Bewertung von -Teilnehmer/innenbewertungen
            • -
            • Bewertungsstrategie
            • -
            • Bewertung -von Teilnehmer/innenaufgaben
            • -
            • Bewertung -der Teilnehmer/innenbewertungen
            • -
            • Anzeige der -Bewertungen verbergen
            • -
            • Selbstbewertung -einbeziehen
            • -
            • Eine -Workshopaufgabe managen
            • -
            • -Zahl der von Teilnehmern zu bewertenden Arbeiten
            • -
            • -Zahl der zu bewertende Übungsaufgaben des/der -Trainers/in
            • -
            • Zahl -der Kommentare, Elemente, Bands oder Kriterien
            • -
            • Anzahl der -Bewertungen durch Teilnehmer/innen
            • -
            • Arten der -Bewertung durch die Teilnehmer/innen
            • -
            • Abgabe -mehrere Arbeiten
            • -
            • Selbstbewertung
            • -
            • Muster-Bewertungsformular
            • -
            • Übungsaufgaben -bearbeiten
            • -
            • Die -Zusammensetzung der Schlußnote
            • -
            • Die -Berechnung der Schlußnote
            • -
            • Die -Schlußnote
            • -
            • Unbewertete -Arbeiten (Teilnehmer/in)
            • -
            • Unbewertete -Arbeiten (Trainer/in)
            • +

              Workshop-Modul

              + \ No newline at end of file diff --git a/lang/de/help/workshop/leaguetable.html b/lang/de/help/workshop/leaguetable.html index 58940ebf73c..0a27f967a72 100644 --- a/lang/de/help/workshop/leaguetable.html +++ b/lang/de/help/workshop/leaguetable.html @@ -1,14 +1,6 @@ - -

              Die Leistungsübersicht

              -

              Die Leistungsübersicht zeigt die besten Arbeiten dieser -Aufgabenstellung. Die Zahl der Einträge kann zwischen Null, -der besten, den besten 3,5 oder 20 oder "allen" Arbeiten -gewählt werden. Wenn die Einstellung Null gewählt wird, -wird die Leistungsübersicht nicht angezeigt. Wenn sie -auf eine bestimmte Zahl eingestellt ist, werden die besten Arbeit -bis zu dieser Anzahl angezeigt. Bei der Einstellung "alle" zeigt -die Tabelle die Ergebnisse für alle Arbeiten an.

              -

              Die zweite Möglichkeit ermöglicht die Auswahl, ob -die Teilnehmner/innen auch die Namen zu der jeweiligen Bewertng -einsehen können. Die/der Trainer/in haben diesen Einblick zu jeder -Zeit.

              +

              Die Leistungsübersicht

              + +

              Die Leistungsübersicht zeigt die besten Arbeiten dieser Aufgabenstellung. Die Zhal der Einträge kann zwischen Null, der besten, den besten 3,5 oder 20 oder "allen" Arbeiten gewählt werden. Wenn die Einstellung Null gewählt wird, wird die Leistungsübersicht nicht angezeigt. Wenn sie auf eine bestimmte Zahl eingestellt ist, werden die besten Arbeit bis zu diesr Anzhal angezeigt. Bei der Einstellung + "alle" zeigt die Tabelle die Ergebnisse für alle Arbeiten an.

              + +

              Die zweite Möglichkeit ermöglicht die Auswahl, ob die Teilnehmner/innen auch die Namen zu der jeweiligen Bewertng einsehen können. Die Lehrer haben diesen Einblick zu jeder Zeit.

              diff --git a/lang/de/help/workshop/managing.html b/lang/de/help/workshop/managing.html index 14b3260859c..d036423e6ee 100644 --- a/lang/de/help/workshop/managing.html +++ b/lang/de/help/workshop/managing.html @@ -1,69 +1,22 @@ -

              Eine Workshopaufgabe managen

              -

              Eine Workshopaufgabe ist weitaus komplexer als eine normale -Aufgabenstellung. Sie umfasst eine ganze Reihe von Schritten und -Phasen. Dies sind:

              -
                -
              1. Die Beurteilung der Aufgabe sollte mehrere -Beurteilungselemente umfassen. Diese machen die Bewertung -wesentlich weniger willkürlich und geben den -Teilnehmer/innen eine Grundlage für ihre -Einschätzungen. Der Trainer/in hat die Aufgabe, die -Prüfungselememte festzulegen und ein Bewertungsblatt -bereitzustellen. -

                Mit der Festlegung der Prüfungselememnte wird der Trainer/in -normalerweise eine Reihe von Beispielarbeiten zur Verfügung -stellen. Diese dienen den TeilnehmerInnen als Übungsbeispiel -zur Abgabe einer Einschätzung (Bewertng), bevor sie ihre -eigene Arbeit beginnen. Die Beispielarbeiten können aus -früheren Prüfungen stammen. Die Einschätzungen -werden vom Trainer/in bewertet, bevor die Teilnehmer/innen ihre -Prüfungsaufgabe bearbeiten. Die Teilnehmer/innen sehen somit -nicht nur Beispiellösungen, sondern auch Beispielbewertungen -und gewinnen mehr klarheit über die Anforderungen.

                -

                Die Beispielaufgaben sind eine Option. Es kann -Prüfungssituationen geben in denen dieser Schritt nicht -geeignet ist. Er kann dann einfach ausgelassen werden.

                -
              2. -
              3. Die Prüfung hat nun für die Teilnehmer/innnen -begonnen. Wenn der Trainer/in eine Reihe von Beispielarbeiten -bereitgestellt hat, werden die Teilnehmer/innen aufgefordert -einige dieser Arbeit zu bewerten. Der Trainer/in benotet diese -Bewertungen. Die Teilnehmer/innen müssen bei ihrer Bewertung -erst einen zufriedenstellenden Standard erreichen, bevor sie ihre -eigenen Arbeit beginnen. Wenn als "zufriedenstellender Standard" -40% festgelegt wurde, kann ein/e Teilnehmer/in ihre eigene Arbeit -beginnen, wnen diese Quote ereicht wurde. -

                Wenn der/die Teilnehmer/in eine eigenen Arbeit eingereicht -hat, kann er Trainer/in diese bewerten (falls vorgesehen). Diese -Bewertung kann in die Endbewertung einbezogen werden. Die -Bewertung kann noch während der Bearbeitungszeit erstellt -werden oder erst nach dem Abgabezeitpunkt für die -Arbeiten.

                -

                Wenn eine Teilnehmerbewertung in der Prüfung vorgesehen -ist, erhalten Teilnehmer/innen ,die ihre eigene Arbeit -abgeschlossen haben, die Arbeiten anderer Teilnemer/innen zur -Bewertung einsehen. Nach ihrer Bewertung kann der bewertete -Teilnehmer diese einsehen. Der Trainer/in kann wenn gewünscht -auch diese Bewertung benoten und diese Note bei der -Abschlußnote berücksichtigen.

                -
              4. -
              5. Nachdem der Abgabetermin verstrichen ist, startet de/dier Trainer/in -die nächste Phase. Die weitere Abgabe von Arbeiten oder von -Kommentaren durch die Teilnehmer/innen ist nun nicht mehr -möglich. Die/der Trainer/in kann nun die Teilnehmer/innenbewertungen -benoten. Dies ist jedoch nicht unbedingt erforderlich. Die -"Bewertungsleistung" jeder/s Teilnehmers/in kann durch die -vergebenen Punktewerte ermittelt werden. Die/der Trainer/in berechnet nun -die Endnote für alle Teilnehmer/innen. Sie setzen sich -normalerweise aus drei Teilen zusammen, die Bewertung des/der Trainers/in -für die Arbeit des/der Teilnehmers/in, die mittlere -Bewertung durch die Teilnehmer/innen für die Arbeit und die -Leistung des Teilnehmers/in bei der Bewertung anderer Arbeiten. -Diese drei Bewertungskriterien können von dem/der Trainer/in -unterschiedlich gewichtet werden, um die Gesamtnote zu -ermitteln.
              6. -
              7. Die abschließende Phase der Prüfung besteht in der -Freigabe der Noten zur Einsicht durch die Teilnehmer/innen. Die/der -Trainer/in kann auch jetzt noch Veränderungen an den Bewertungen -vornehmen und die Schlußnote neu berechnen.
              8. -
              \ No newline at end of file +

              Eine Workshopaufgabe managen

              + +

              Eine Workshopaufgabe ist weitaus komplexer als eine normale Aufgabenstellung. Sie umfasst eine ganze Reihe von Schritten und Phasen. Dies sind: +

                +
              1. Die Beurteilung der Aufgabe sollte mehrere Beurteilungselemente umfassen. Diese machen die Bewertung wesentlich weniger willkürlich und geben den Teilnehmer/innen eine Grundlage für ihre Einschätzungen. Der Lehrer hat die Aufgabe, die Prüfungselememte festzulegen und ein Bewertungsblatt bereitzustellen. + +

                Mit der Festlegung der Prüfungselememnte wird der Lehrer normalerweise eine Reihe von Beispielarbeiten zur Verfügung stellen. Diese dienen den TeilnehmerInnen als Übungsbeispiel zur Abgabe einer Einschätzung (Bewertng), bevor sie ihre eigene Arbeit beginnen. Die Beispielarbeiten können aus früheren Prüfungen stammen. Die Einschätzungen werden vom Lehrer bewertet, bevor die Teilnehmer/innen ihre Prüfungsaufgabe bearbeiten. Die Teilnehmer/innen sehen somit nicht nur Beispiellösungen, sondern auch Beispielbewertungen und gewinnen mehr klarheit über die Anforderungen. +

                Die Beispielaufgaben sind eine Option. Es kann Prüfungssituationen geben in denen dieser Schritt nicht geeignet ist. Er kann dann einfach ausgelassen werden. + +

              2. Die Prüfung hat nun für die Teilnehmer/innnen begonnen. Wenn der Lehrer eine Reihe von Beispielarbeiten bereitgestellt hat, werden die Teilnehmer/innen aufgefordert einige dieser Arbeit zu bewerten. Der Lehrer benotet diese Bewertungen. Die Teilnehmer/innen müssen bei ihrer Bewertung erst einen zufriedenstellenden Standard erreichen, bevor sie ihre eigenen Arbeit beginnen. + Wenn als "zufriedenstellender Standard" 40% festgelegt wurde, kann ein/e Teilnehmer/in ihre eigene Arbeit beginnen, wnen diese Quote ereicht wurde. +

                Wenn der/die Teilnehmer/in eine eigenen Arbeit eingereicht hat, kann er Lehrer diese bewerten (falls vorgesehen). Diese Bewertung kann in die Endbewertung einbezogen werden. Die Bewertung kann noch während der Bearbeitungszeit erstellt werden oder erst nach dem Abgabezeitpunkt für die Arbeiten. +

                Wenn eine Teilnehmerbewertung in der Prüfung vorgesehen ist, erhalten Teilnehmer/innen ,die ihre eigene Arbeit abgeschlossen haben, die Arbeiten anderer Teilnemer/innen zur Bewertung einsehen. Nach ihrer Bewertung kann der bewertete Teilnehmer diese einsehen. Der Lehrer kann wenn gewünscht auch diese Bewertung benoten und diese Note bei der Abschlußnote berücksichtigen. + +

              3. Nachdem der Abgabetermin verstrichen ist, startet der Lehrer die nächste Phase. Die weitere Abgabe von Arbeiten oder von Kommentaren durch die Teilnehmer/innen ist nun nicht mehr möglich. Der Lehrer kann nun die Teilnehmerbewertungen benoten. Dies ist jedoch nicht unbedingt erforderlich. Die "Bewertungsleistung" jeder/s Teilnehmers/in kann durch die vergebenen Punktewerte ermittelt werden. Der Lehrer berechnet nun die Endnote für alle Teilnehmer/innen. Sie setzen sich normalerweise aus drei Teilen zusammen, + die Bewertung des Lehrers für die Arbeit des/der Teilnehmers/in, die mittlere Bewertung durch die Teilnehmer/innen für die Arbeit und die Leistung des Teilnehmers/in bei der Bewertung anderer Arbeiten. + Diese drei Brewertungskriterien können vom Lehrer unterschiedlich gewichtet werden, um die Gesamtnote zu ermitteln. + +
              4. Die abschließende Phase der Prüfung besteht in der Freigabe der Noten zur Einsicht durch die Teilnehmer/innen. Der Lehrer kann auch jetzt noch Veränderungen an den Bewertungen vornehmen und die Schlußnote neu berechnen. +
              + +

              \ No newline at end of file diff --git a/lang/de/help/workshop/managing2.html b/lang/de/help/workshop/managing2.html index e28f5de8c7f..6c934fe8c4e 100644 --- a/lang/de/help/workshop/managing2.html +++ b/lang/de/help/workshop/managing2.html @@ -1,108 +1,102 @@ -

              Eine Workshopaufgabe managen

              -

              Eine Workshopaufgabe ist weitaus komplexer als eine normale -Aufgabenstellung. Sie umfasst eine ganze Reihe von Schritten und -Phasen. Dies sind:

              -
                -
              1. -

                Beurteilung einrichten Die Beurteilung der Aufgabe -sollte mehrere Beurteilungselemente umfassen. Diese machen die -Bewertung wesentlich weniger willkürlich und geben den -Teilnehmer/innen eine Grundlage für ihre -Einschätzungen. Der/die Trainer/in hat die Aufgabe, die -Prüfungselememte festzulegen und ein Bewertungsblatt +

                Eine Workshopaufgabe managen

                + +

                Eine Workshopaufgabe ist weitaus komplexer als eine normale +Aufgabenstellung. Sie umfasst eine ganze Reihe von Schritten und Phasen. +Dies sind: +

                  +
                1. Beurteilung einrichten Die Beurteilung der Aufgabe sollte mehrere Beurteilungselemente +umfassen. Diese machen die Bewertung wesentlich weniger +willkürlich und geben den Teilnehmer/innen eine Grundlage +für ihre Einschätzungen. Der Lehrer hat die Aufgabe, +die Prüfungselememte festzulegen und ein Bewertungsblatt bereitzustellen.

                  -

                  Mit der Festlegung der Prüfungselemente wird der/die Trainer/in -normalerweise eine Reihe von Beispielarbeiten zur Verfügung -stellen. Diese dienen den Teilnehmer/innen als Übungsbeispiel -zur Abgabe einer Einschätzung (Bewertung), bevor sie ihre -eigene Arbeit beginnen. Die Beispielarbeiten können aus -früheren Prüfungen stammen. Die Einschätzungen -werden von der/dem Trainer/in bewertet, bevor die Teilnehmer/innen ihre -Prüfungsaufgabe bearbeiten. Die Teilnehmer/innen sehen somit -nicht nur Beispiellösungen, sondern auch Beispielbewertungen -und gewinnen mehr Klarheit über die Anforderungen (in der -nächsten Phase).

                  -

                  ie Beispielaufgaben sind eine Option. Es kann -Prüfungssituationen geben in denen dieser Schritt nicht -geeignet ist. Er kann dann einfach ausgelassen werden.

                  -
                2. -
                3. -

                  Einreichen erlauben Die Prüfung hat nun für -die Teilnehmer/innen begonnen. Wenn die/der Trainer/in eine Reihe von -Beispielarbeiten bereitgestellt hat, werden die Teilnehmer/innen -aufgefordert, einige dieser Arbeit zu bewerten. (Die Zahl der -Bewertungen wird beim Einrichten der Aufgabe festgelegt.) Wenn -ein/e Teilnehmer/in die vorgebene Zahl von Testaufgaben bewertet hat, kann -er/sie eine eigene Aufgabe bearbeiten und einreichen. Im Falle -eines Workshops ohne vorherige Einschätzung von -Musterlösungen kann der/die Teilnehmer/in die eigene Arbeit sofort -bearbeiten und einreichen.

                  -

                  Es ist vorteilhaft, das Einreichen von Arbeiten über einen längeren Zeitraum -zuzulassen. Dadurch kann die Arbeit kontinuierlich bearbeitet und -ergänzt werden. So kann stückweise (iterativ) an der Arbeit -gearbeitet werden. Wenn Sie die Einstellung direkt nach der -Einrichtung des Workshops auf "Einreichen und Bewerten erlaubt" -setzen, können schnell voranschreitende TN sofort durch die -verschiedenen Schritte gehen, während TN, die erst -später eine Arbeit abgeben, auch dann weiter arbeiten -können. Wenn erst alle TN ihre Arbeit abgegeben haben -müssen, bevor Sie die Bewertung durch TN zulassen, kommt es -zu Verzögerungen, die für manche TN ärgerlich -sind, weil sie nicht weiter arbeiten können.

                  -

                  Wenn der/die Teilnehmer/in eine eigenen Arbeit eingereicht -hat, kann der/die Trainer/in diese bewerten (falls vorgesehen). Diese -Bewertung kann in die Endbewertung einbezogen werden. Die -Bewertung kann noch während der Bearbeitungszeit erstellt -werden oder erst nach dem Abgabezeitpunkt für die -Arbeiten.

                  -
                4. -
                5. -

                  Einreichen und Bewerten für TN erlaubt Wenn eine -Teilnehmerbewertung in der Prüfung vorgesehen ist, werden -Teilnehmer/innen, die ihre eigene Arbeit abgeschlossen haben, die -Arbeiten anderer Teilnehmer/innen zur Bewertung vorgelegt. Nach -ihrer Bewertung kann der/die bewertete Teilnehmer/in diese einsehen. Der -Trainer/in kann - wenn gewünscht - auch diese Bewertung benoten und -diese Note bei der Abschlußnote berücksichtigen (z.B. Angemessenheit der Bewertung).

                  -

                  Wenn Sie diesen Schritt in zwei Phasen aufteilen wollen -("Aufgaben abgeben erlaubt" und "Bewertung durch TN erlaubt"), -wird die Phase "Einreichen und Bewerten für TN erlaubt" -nicht verwandt. Sie können dann einen Abgabeteremin -für die Abgabe von Arbeiten festlegen. Danach wird dann die -Phase "Bewerten durch TN erlaubt" automatisch freigegeben.

                  -

                  Wenn Sie die beiden Schritte (Abgabe und Bewertung) zugleich -durchführen, sollten Sie die Einstellung auf a (oder -evtl. 1) setzen, damut die Zuteilung nahtlos von zu -bewertenden Arbeiten erfolgt. Es kommt dann jedoch zu dem Effekt, -dass früher eingereichte Arbeiten häufiger zur -Bewertung anderen Tn zur Verfügung gestellt werden als -später eingereichte Arbeiten.

                  -

                  Wenn ein/e Teilnehmer/in eine Bewertung vorgenommen hat, wird diese auch -dem bewerteten TN angezeigt. Dieser kann die Bewertung -kommentieren, wenn Sie diese Option aktivieren.

                  -
                6. -
                7. -

                  Bewertungen durch TN zulassen In dieser Phase -können Bewertungen vorgenommen, aber keine Arbeiten mehr -abgegeben werden, einschließlich Neueinreichungen der -Arbeiten. TN, die bis zu diesem Zeitpunkt keinen Arbeiten -abgegeben haben, erhalten auch keine Arbeiten anderer TN -zur Bewertung.

                  -
                8. -
                9. -

                  Abschlußbewertung anzeigen Mit dieser Phase wird -den TN ihre Abschlußbewertung detailliert angezeigt. Die -verschiedenen Bewertungen aus den einzelnen Teilschritten -können auch im Detail eingesehen werden.

                  -

                  Die TN und Trainer/innen können optional auch eine -Tabelle der Ergebnisse einsehen. Die Tabelle ist nach den -Bewertungen sortiert. Die beste Arbeit wird ganz oben -angezeigt.

                  -
                10. + +

                  Mit der Festlegung der Prüfungselememnte wird der + Lehrer normalerweise eine Reihe von Beispielarbeiten zur + Verfügung stellen. Diese dienen den TeilnehmerInnen + als Übungsbeispiel zur Abgabe einer Einschätzung + (Bewertng), bevor sie ihre eigene Arbeit beginnen. + Die Beispielarbeiten können aus früheren + Prüfungen stammen. Die Einschätzungen werden + vom Lehrer bewertet, bevor die Teilnehmer/innen ihre + Prüfungsaufgabe bearbeiten. Die Teilnehmer/innen + sehen somit nicht nur Beispiellösungen, sondern auch + Beispielbewertungen und gewinnen mehr Klarheit über + die Anforderungen (in der nächsten Phase).

                  + +

                  ie Beispielaufgaben sind eine Option. Es kann + Prüfungssituationen geben in denen dieser Schritt + nicht geeignet ist. Er kann dann einfach ausgelassen werden. +

                  + +
                11. Einreichen erlauben Die Prüfung hat nun für die Teilnehmer/innnen begonnen. +Wenn der Lehrer eine Reihe von Beispielarbeiten bereitgestellt hat, +werden die Teilnehmer/innen aufgefordert einige dieser Arbeit zu +bewerten. (Die Zahl der Bewertungen wird beim Einrichten der Aufgabe festgelegt.) +Wenn ein Tn die vorgebene Zahl von Testaufgaben bewertet hat, kann er/sie eine eigene + Aufgabe bearbeietn und einreichen. Im Falle eines Workshops ohne vorherieg Einschätzung von + Musterlösungen kann der TN dieeigenen Arbeit sofort bearbeiten und einreichen.

                  + +

                  Es ist vorteilhaft, das Einreichen von Arbeiten länger zuzulassen. Dadurch kann +die Arbeit kontinuierlich bearbeitet und ergänzt werden. Dadurch kann stückweise an der Arbeit +gearbeitet werden. +Wenn Sie die Einstellung direkt nach der Einrichtung des Workshops auf "Einreichen und Bewerten erlaubt" +setzen können schnell voranschreitende TN sofort durch die verschiedenen Schritte gehen, +während TN, die erst später eine Arbeit abgeben,auch dann weiter arbeiten können. +Wenn erst alel TN ihre Arbveit abgegeben haben müssen, bevor Sie die Bewertung +durch Tn zulassen, kommt es zu Verzögerungen, die für manche Tn ärgerlich sind, +weil sie nicht weiter arbeiten können.

                  + + +

                  Wenn der/die Teilnehmer/in eine eigenen Arbeit + eingereicht hat, kann er Lehrer diese bewerten + (falls vorgesehen). Diese Bewertung kann in die + Endbewertung einbezogen werden. Die Bewertung kann + noch während der Bearbeitungszeit erstellt werden + oder erst nach dem Abgabezeitpunkt für die Arbeiten.

                  + +
                12. Einreichen und Bewerten für TN erlaubtWenn eine Teilnehmerbewertung in der Prüfung + vorgesehen ist, erhalten Teilnehmer/innen ,die ihre eigene + Arbeit abgeschlossen haben, die Arbeiten anderer + Teilnemer/innen zur Bewertung einsehen. Nach ihrer Bewertung + kann der bewertete Teilnehmer diese einsehen. Der Lehrer + kann wenn gewünscht auch diese Bewertung benoten und + diese Note bei der Abschlußnote berücksichtigen.

                  + +

                  Wenn Sie diesen Schritt in zwei Phasen aufteilen wollen ("Aufgaben abgeben erlaubt" und " + Bewertung durch Tn erlaubt"), wird die Phase "Einreichen und Bewerten für Tn erlaubt" + nicht verwendet. Sie können dann einen Abgabeteremin für die Abgabe von Arbeiten festlegen. + Danach wird dann die Phase "Bewerten durch Tn erlaubt" automatisch freigegeben. +

                  + +

                  Wenn Sie die beiden Schritte (Abgabe und Bewertung) zugleich durchführen, +sollten Sie die Einstellung +auf Eins (oder evtl. Zwei) setzen, damut die Zuteilung nahtlos von zu bewertenden +Arbeiten erfolgt. Es kommt dann jedoch zu dem Effekt, dass früher eingereichte +Arbeiten häufiger zur Bewertung anderen Tn zur Verfügung gestellt werden +als später eingereichte Arbeiten. +

                  + +

                  Wenn ein Tn eine Bewertung vorgenommen hat, wird diese auch dem bewerteten TN + angezeigt. Dieser kann die Bewertung kommentieren, wenn Sie diese Option aktivieren. +

                  + +
                13. Bewertungen durch Tn zulassen In dieser Phase können Bewertungen +vorgenommen, aber keine Arbeiten mehr abgegeben werden, einschließlich Neueinreichungen der Arbeiten. +TN, die bis zu diesem Zeitpunkt keinen Arbeiten abgegeben haben, erhalten auch keine Arbeiten +anderer Tn zur Bewertung.

                  + +
                14. Abschlußbewertung anzeigen Mit dieser Phase wird den Tn ihre Abschlußbewertung detailliert angezeigt. +Die verschiedenen Bewertungen aus den einzelnen Teilschritten können auch im Detail eingesehen werden. +

                  + +

                  Die Tn und Trainer/innen können optional auch eine Tabelle der Arbeiten +einsehen. Die Tabelle ist nach den Bewertungen sortiert. Die beste Arbeit wird + ganz oben angezeigt.

                -

                In jeder Phase des Workshops kann der Trainer, die -Administration/Verwaltung öffnen. Hier wird der aktuelle -Stand der Bearbeitung angezeigt. Der Trainer kann die vorhandenen -Arbeiten einsehen, bewerten und die Bewertung korrigieren, -Arbeiten und Bewertungen löschen und natürlich den -Fortschritt überwachen.

                \ No newline at end of file + +

                In jeder Phase des Workshops kann der Trainer, die Administration/Verwaltung öffnen. +Hier wird der aktuelle Stand der Bearbeitung angezeigt. +Der Trainer kann die vorhandenen Arbeiten einsehen, bewerten und die Bewertung korrigieren, Arbeiten und Bewertungen löschen +und natürlich den Fortschritt überwachen.

                + diff --git a/lang/de/help/workshop/mods.html b/lang/de/help/workshop/mods.html index c1dcea6513c..2ebef7fb0c8 100644 --- a/lang/de/help/workshop/mods.html +++ b/lang/de/help/workshop/mods.html @@ -1,10 +1,6 @@ -

                  Workshop

                -
                -

                Ein Workshop ist eine Prüfungskonstellation mit einer Vielzahl -von Optionen, die variiert werden können. Es erlaubt den -Teilnehmer/innen sich gegenseitig mit den Arbeiten zu bewerten, -genauso können Übungsprojekte in vielfältiger -Weise bewertet werden. Das Modul organisiert die Sammlung und -Verteilung der zu bewertenden Arbeiten. Das Workshop-Modul wurde -von Ray Kingdon entwickelt.

                -
                +

                 Workshop

                +
                  +

                  Ein Workshop ist eine Teilnehmerbewertung mit einer Vielzahl von Optionen, die variiert werden können. + Es erlaubt den Teilnehmern sich gegenseitig mit den Arbeiten zu bewerten, genauso können Übungsprojekte in vielfältiger Weise bewertet werden. Das Modul organiosiert die Sammlung und Verteilung der zu bewertenden Arbeiten. Das Workshop-Modul wurde von Ray Kingdon entwickelt. +

                  +
                \ No newline at end of file diff --git a/lang/de/help/workshop/nassessmentsofstudentsubmissions.html b/lang/de/help/workshop/nassessmentsofstudentsubmissions.html index 20d7162a590..26e3d8b1fe3 100644 --- a/lang/de/help/workshop/nassessmentsofstudentsubmissions.html +++ b/lang/de/help/workshop/nassessmentsofstudentsubmissions.html @@ -1,13 +1,4 @@ - -

                Zahl der von Teilnehmer/innen zu bewertenden -Arbeiten

                -

                Diese Zahl legt fest, ob die Teilnehmer/innen aufgefordert -werden, die Arbeiten anderer Teilnehmer/innen zu bewerten. Wenn -die Zahl nicht NULL ist, wird jede/r Teilnehmer/in aufgefordert, -die angezeigte Zahl von Arbeiten anderer Teilnehmer/innen zu -bewerten. Nach der Bewertung kann die/der Autor/in die Kommentare -und Bewertungen anderer Teilnehmer/innen zu seiner Arbeit -einsehen. Der/die Trainer/in kann, wenn gewünscht, ebenfalls die -Arbeit bewerten. Diese Noten können bei der Berechnung der -Abschlußnote berücksichtigt werden. Auch diese -Bewertung und Note ist für den/die Autor/in einsehbar.

                +

                Zahl der von Teilnehmern zu bewertenden Arbeiten

                + +

                Diese Zahl legt fest, ob die Teilnehmer/innen aufgefordert werden, die Arbeiten anderer Teilnehmer/innen zu bewerten. Wenn die Zahl nich NULL ist, wird jede/r Teilnehmer/in aufgefordert, die angezeigte Zahl von Arbeiten anderer Teilnehmer/innen zu bewerten. Nach der Bewertung kann die/der Autor/in die Kommentare und Bewertungen anderer Teilnehmer/innen zu seiner Arbeit einsehen. Der Lehrer kann, wenn gewünscht, ebenfalls die Arbeit bewerten. Diese Noten können bei der Berechnung der Abschlußnote berücksichtigt werden. Auch diese Bewertung und Note ist für den Autor einsehbar. +

                \ No newline at end of file diff --git a/lang/de/help/workshop/nassessmentsofteachersexamples.html b/lang/de/help/workshop/nassessmentsofteachersexamples.html index 6c213c29f21..b49e944680c 100644 --- a/lang/de/help/workshop/nassessmentsofteachersexamples.html +++ b/lang/de/help/workshop/nassessmentsofteachersexamples.html @@ -1,12 +1,4 @@ - -

                Zahl der Beispielaufgaben des/der Trainers/in -

                -

                Diese Zahl legt fest, ob die Teilnehmer/innen bevor sie ihre -eigene Arbeit beginnen, eine Beispielaufgabe durcharbeiten -müssen. Wenn die Zahl nicht NULL ist, muß die -eingesetzte Zahl von Beispielaufgaben erst bearbeitet werden, -bevor die eigenen Arbeit begonnen werden kann. Diese Arbeiten -müssen von dem/der Trainer/in bewertet werden, bevor die Teilnehmer/inen -mit ihrer Aufgabe die Prüfung fortsetzen können. Die -Kommentare und Noten des/der Trainers/in werden den Teilnehmer/innen -angezeigt.

                +

                Zahl der Beispielaufgaben des Lehrers

                + +

                Diese Zahl legt fest, ob die Teilnehmer/innen bevor sie ihre eigene Arbeit beginnen eine Beispielaufgabe durcharbeiten müssen. Wenn die Zahl nicht NULL ist, muß die eingesetzte Zahl von Beispielaufgaben erst bearbeitet werden, bevor die eigenen Arbeit begonnen werden kann. Diese Arbeiren müssen vom Lehrer bewertet werden, bevor die Teilnehmer/inen mit ihrer Aufgabe die Prüfung fortsetzen können. Die Kommentare und Noten des Lehrers werden den Teilnehmer/innen angezeigt. +

                \ No newline at end of file diff --git a/lang/de/help/workshop/nelements.html b/lang/de/help/workshop/nelements.html index 88bfc860f34..a89ff61e6d4 100644 --- a/lang/de/help/workshop/nelements.html +++ b/lang/de/help/workshop/nelements.html @@ -1,15 +1,7 @@ - -

                Anzahl der Kommentare, Elemente, bands oder -Kriterien

                -

                Die hier eingegebene Anzahl legt die Zahl der Gegenstände -fest, die in der Prüfung benutzt werden sollen. -Abhängig von der Bewertungstrategie gibt die Zahl, die -Anzahl der Kommentare, Beurteilungselemente (Aufgaben), bands -(engl.) oder Kriterien wieder. In de Regel hat eine Prüfung -5 bis 15 Elemente. Die Anzahl variiert in Abhängigkeit von -Größe und Komplexität der Aufgabenstellung.

                -

                Alle Bewertungen verfügen über ein Kommentarfeld. -Bei einer "unbewerteten" Aufgabenstellung legt die hier -eingetragene Zahl, die Anzahl der zusätzlichen -Kommentarfelder fest. Bei Eingabe der Zahl NULL wird nur das -grundlegende Kommentarfeld eingerichtet.

                +

                Anzahl der Kommentrae, Elemente, bands oder Kriterien

                + +

                Die hier eingegebene Anzahl legt die Zahl der Gegenstände fest, die in der Prüfung benutzt werden sollen. Abhängig von der Bewertungstrategie gibt die Zahl, die Anzahl der Kommentare, Beurteilungselemente (Aufgaben), bands (engl.) oder Kriterien wieder. In de Regel hat eine Prüfung 5 bis 15 Elemente. Die Anzahl variiert in Abhängigkeit von Größe und Komplexität der Aufgabenstellung. + +

                Alle Bewertungen verfügen über ein Kommentarfeld. Bei einer "unbewerteten" Aufgabenstellung legt die hier eingetargene Zhal, die Anzahl der zusätzlichen Kommentarfelder fest. Bei Eingabe der Zahl NULL wird nur das grundlegende Kommentarfeld eingerichtet. + +

                \ No newline at end of file diff --git a/lang/de/help/workshop/numberofassessors.html b/lang/de/help/workshop/numberofassessors.html index 9c93b092fc3..a3bcc594a72 100644 --- a/lang/de/help/workshop/numberofassessors.html +++ b/lang/de/help/workshop/numberofassessors.html @@ -1,31 +1,10 @@ - -

                Anzahl der Bewertungen durch -Teilnehmer/innen

                -

                Eine Teilnehmer/innenbewertung wird zumeist durch drei bis acht -Teilnehmer/innen vorgenommen. In der Phase der -Teilnehmer/innenbewertungen wird jede/r Teilnehmer/in aufgefordert, die -entsprechende Zahl von Arbeiten anderer Teilnehmer/innen in der -Gruppe einzuschätzen. Je umfangreicher die Prüfung ist, -desto geringer sollte diese Zahl sein (Zeitbedarf). Die Belastung -für die Teilnehmer/innen würde sonst zu hoch. Jede/r -Teilnehmer/in sollte zunächst eine geringe Zahl von -Beispielen sehen, um einschätzen zu können was eine -gute von einer weniger guten Arbeit unterscheidet. Für die -Bewertungsleistung der Teilnehmer/innen ist jedoch eine -größere Anzhal von Arbeiten sinnvoll. Die Bewertungen -könenn kaum verlässlich sein, wenn jede/r Teilnehmer/in -nur drei oder vier Arbeiten bewerten soll.

                -

                Vorausgesetzt, es stehen genügend Arbeiten zur -Verfügung, wird das System jeder/m Teilnehmer/in wenigstens -eine "gute" und zumindest eine "schlechte" Arbeit zuweisen. Dies -ist jedoch nur möglich, wenn der/die Trainer/in zuvor eine Bewertung -vergeben hat. Der/die Trainer/in muß nicht unbedingt alle Arbeiten -bewerten. Beispiele sind ausreichend. Außerdem ist keine -endgültige Bewertung des/de Trainers/in erforderlich, eine -vorläufige Note ist hinreichend. Beachten Sie bitte, dass -die Bewertungen des/der Trainers/in nach dem Zeitraum für die Abgabe -der Arbeiten für die Teilnehmr/innen sichtbar sind.

                -

                Die Zahl der Teilnehmer/innenbewertungen kann auf NULL gesetzt -werden. In diesem Fall erfolgt ausschließlich eine -Selbstbewertung (wenn aktiviert) oder eine normale -Trainer/innenbewertung.

                +

                Anzahl der Bewertungen durch Teilnehmer/innen

                + +

                Eine Teilnehmerbewertung wird zumeist durch drei bis acht Teilnehmer/nnen vorgenommen. In der Phase der Teiolnehmerberwerrtungen wird jeder Teilnehmer aufgefordert, die entsprechende Zahl von Arbeiten anderer Teilnehmer/innen in der Gruppe einzuschätzen. Je umfangeicher die Prüfung ist, desto geringer sollte diese Zahl sein (Zeitbedarf). Die Belastung für die Studenten würde sonst zu hoch. Jede/r Teilnehmer/in sollte zunächst eine geringe Zahl von Beispielen sehen, um einschätzen zu können was eine gute von einer weniger guten Arbeit unterscheidet. Für die Bewertungsleistung der Teilnehmer/innen ist jedoch eine größere Anzhal von Arbeiten sinnvoll. Die Bewertungen könenn kaum verlässlich sein, wenn jede/r Teilnehmer/in nur drei oder vier Arbeiten bewerten soll. + +

                Vorausgesetzt, es stehen genügend Arbeiten zur Verfügung, wird das System jeder/m Teilnehmer/in wenigstens eine "gute" und + zumindest eine "schlechte" Arbeit zuweisen. Dies ist jedoch nur möglich, wenn der Lehrer zuvor eine Bewertung vergeben hat. Der Lehrer muß nicht unbedingt alle Arbeiten bewerten. Beispiele sind ausreichend. Außerdem ist keine endgültige Bewertung des Lehers erforderlich, eine vorläufige Note ist hinreichend. Beachten Sie bitte, dass die Bewertungen des Lehrers nach dem Zeitraum für die Abgabe der Arbeiten für die Teilnehmr/innen sichtbar sind. + +

                Die Zahl der Teilnehmerbewertungen kann auf NULL gesetzt werden. In diesem Fall erfolgt ausschließlich eine Selbstbewertung (wenn aktiviert) oder eine normale Lehrerbewertung. + +

                \ No newline at end of file diff --git a/lang/de/help/workshop/overallocation.html b/lang/de/help/workshop/overallocation.html index 61699e88795..b9255d94f5a 100644 --- a/lang/de/help/workshop/overallocation.html +++ b/lang/de/help/workshop/overallocation.html @@ -1,25 +1,8 @@ - -

                Der Gesamtverteilungslevel

                -

                Dieser Level bestimmt, ob die Verteilung der -Teilnehmer/innenbewertungen ausbalanciert ist oder nicht. Der Begriff -"balanciert" meint, dass die Zahl der Bewertungen ausgewogen ist. -Wenn der Wert auf NULL gesetzt wird, ist es erforderlich, dass -alle Arbeiten gleich häufig bewertet werden. Wird der Wert -EINS beträgt bedeutet dies, dass die Arbeit einmal mehr oder -weniger als andere Arbeiten bewertet werden. Die Zahl der -Bewertungen ist dann nicht ausbalanciert. Ähnliches gilt -wenn der Wert ZWEI oder mehr beträgt.

                -

                Idelatypischer Weise sollte der Wert ausbalanciert sein. Die -Arbeitsgeschwindigkeit der Teilnehmer/innen wird unterschiedlich -sein. Es kann passieren, dass einige Teilnehmer/innen die von -ihnen erwartete Zahl der Bewertungen von Arbeiten anderer -Teilnehmer/innen noch nicht erfüllt hat bis die letzte -Arbeit eingereicht wurde. Wenn ein Ungleichgewicht in der Zahl -der Bewertungen zugelassen wird, muss ein/e Teilnehmer/in nicht -unbedingt abwarten, bis der/die letzte Teilnehmer/in die eigene Arbeiten -eingereicht hat, um die vorgesehene Zahl von Bewertungen zu erreichen.

                -

                Wenn in einer Aufgabenstellung die Zahl der -Teilnehmer/innenbewertungen auf FÜNF eingestellt ist, besteht kein -Problem wenn manche Arbeiten 4-mal, 5-mal oder 6-mal bewertet werden -und die Gesamtbewertung kann weitergehen, sofern der Level von -NULL auf EINs gestellt wurde.

                +

                Der Gesamtverteilungslevel

                + +

                Dieser Level bestimmt, ob die Verteilung der Teilnehmerbewertungen ausbalanciert ist oder nicht. Der Begriff "balanciert" meint, dass die Zahl der Bewertungen ausgewogen ist. Wenn der Wert auf NULL gesetzt wird, ist es erforderlich, dass alle Arbeiten gleich häufig bewertet werden. Wird der Wert EINS beträgt bedeutet dies, dass die Arbeit einmal mehr oder weniger als andere Arbeiten bewertet werden. Die Zahl der Bewertungen ist dann nicht ausbalanciert. Ähnliches gilt wenn der Wert ZWEI oder mehr beträgt.

                + +

                Idelatypischer Weise sollte der Wert ausbalanciert sein. Die Arbeitsgeschwindigkeit der Teilnehmer/innen wird unterschiedlich sein. Es kann passieren, dass einige TeilnehmerInnnen die von ihnen erwartete Zahl der Bewertungen von Arbeiten anderer Teilnehmer/innen noch nicht erfüllt hat, bis die letzte Arbeit eingereicht wurde. Wenn ein Ungleichgewicht in der Zhal der Bewertungen zugelassen wird, muss ein Teilnehmer nicht unbedingt abwarten, bis der letzte Teilnehmer sein Arbeiten eingereicht hat, um seine Zahl von Bewertungen zu erreichen.

                + +

                Wenn in einer Aufgabenstellung die Zahl der Teilnehmerbewertungen auf FÜNF eingestellt ist, besteht kein Problem wenn manche Arbeiten 4mal, 5mal oder 6mal bewertet werden und die Gesamtbewertung kann weitergehen, sofern der Level von NULL auf EINs gestellt wurde. +

                \ No newline at end of file diff --git a/lang/de/help/workshop/resubmit.html b/lang/de/help/workshop/resubmit.html index 3931a6a949b..0617918648a 100644 --- a/lang/de/help/workshop/resubmit.html +++ b/lang/de/help/workshop/resubmit.html @@ -1,15 +1,11 @@ - -

                Abgabe mehrere Fassungen

                -

                In der Grundeinstellung kann ein/e Teilnehmer/in nur eine Arbeit -einreichen.

                -

                Wenn diese Option jedoch aktiviert wird, kann ein/e -Teilnehmer/in mehr als eine Arbeit einreichen. Diese Option ist -sinnvoll, wenn der/die Trainer/in in einem iterativen Prozess eine -laufende Verbesserung der Arbeit erzielen will.

                -

                Alle eingereichten Arbeiten werden auch für die -Teilnehmer/innenbewertung verwandt. Es gibt hier keine Priorität -für die letzte eingereichte Arbeit einer/s Teilnehmers/in.

                -

                Wenn die Abschlußnote ermittelt wird, wird die beste -Benotung zu Grunde gelegt. Die beste Benotung meint -die beste Note aus der Benotung die durch den/die Trainer/inr und die -Teilnehmer/innen erfolgte.

                +

                Abgabe mehrere Arbeiten

                + +

                In der rundeinstellung kann ein Teilnehmer/in nur eine Arbeit einreichen.

                + +

                Wenn diese Option jedoch aktiviertt wird, kann ein/e Teilnehmer/in mehr als eine Arbeit einreichen. Diese Option ist sinnvoll, wenn der Lehrer in einem iterativen Prozess eine laufende Verbeseeung der Arbeit erzielen will.

                + +

                Alle eingereichten Arbeiten werden auch für die Teilnehmerbewertung verwandt. Es gibt hier keine Priorität für die letzte eingereichte Arbeit eines Teilnehmers. + +

                Wenn die Abschlußnote ermittelt wird, wird die beste Benotung des Studenten zu Grunde gelegt. Die beste Benotung meint die beste Note aus der Benotung die durch den Lehrer und die TeilnehmerInnen erfolgte. + +

                \ No newline at end of file diff --git a/lang/de/help/workshop/selfassessment.html b/lang/de/help/workshop/selfassessment.html index 0510fe0cd76..a63c5d5a0ed 100644 --- a/lang/de/help/workshop/selfassessment.html +++ b/lang/de/help/workshop/selfassessment.html @@ -1,12 +1,7 @@ - -

                Selbstbewertung

                -

                Sie können eine Selbstbewertung der eigenen Arbeit durch -den/die Teilnehmer/in einstellen. Wenn die Zahl der zu bewertenden -Arbeiten anderer Teilnehmer/innen auf FÜNF eingestellt wird, hat -de/r Teilnehmer/in dann sechs Arbeiten zu bewerten: die eigene (Selbstbewertung) und -fünf Arbeiten anderer Teilnehmer/innen.

                -

                Wenn die Zahl der zu bewertenden Arbeiten anderer Teilnehmer/innen -auf NULL gesetzt und die Selbstbewertungsoption auf AN -gesetzt wird, erfolgt eine reine Selbstbewertung. Der/die Trainer/in kann -entscheiden, ob er/sie darüber hinaus eine Bewertung -vorgenimmt oder nicht.

                +

                Selbstbewertung

                + +

                Es ist möglich eine Bewertung der eigenen Arbeit durch den Teilnehmer vorzusehen. Wenn die Zahl der zu bewertenden Arbeiten anderer Teilnehmer auf FÜNF eingestellt wird, hat der Teilnehmer dann sechs Arbeiten zu bwerten: seine eigene und fünf Arbeiten anderer Teilnehmer/innen. + +

                Wenn die Zhal der zu bewertenden Arbeiten anderer Teilnehmer auf NULL gesetzt wird und die Selbstbewertungsoption auf AN gesetzt wird, erfolgt eine reine Selbstbewertung. Der Lehrer kann entscheiden, ob darüber hinaus eine Lehrerbewertung vorgenommen wird oder nicht. + +

                \ No newline at end of file diff --git a/lang/de/help/workshop/showinggrades.html b/lang/de/help/workshop/showinggrades.html index 5724507630a..a5c6f80e125 100644 --- a/lang/de/help/workshop/showinggrades.html +++ b/lang/de/help/workshop/showinggrades.html @@ -1,19 +1,11 @@ - -

                Anzeige der Bewertungen

                -

                Eine Teilnehmer/innenbewertung kann folgende Formen aufweisen:

                -
                  -
                1. In der Phase der Teilnehmer/innenbewertungen sind die Bewertungen -(Kommentare und Noten) für die Teilnehmer/innen sichtbar. -Sie können die Einzelbewertungen und die sich daraus -ergebende Gesamtnote. Dies kann zu mehr Auseinandersetzungen -führen als bei der zweiten Art der Teilnehmer/innenbewertung.
                2. -
                3. In der Phase der Teilnehmer/innenbewertungen sehen die -Teilnehmer/innen ausschließlich die Kommentare der -anderen Teilnehmer/innen. Die individuellen Bewertungen werden -nicht angezeigt, gleichwohl aber im System gespeichert. Die -Teilnehmer/innen können auch die Gesamtnote, die sie von den -anderen Teilnehmer/innen erhalten haben, einsehen. Erst wenn sie die -Kommentare anerkannt haben werden ihnen auch die Einzelnoten und -die Gesamtnote gezeigt. Diese Art der Teilnehmerbewertung -erzeugt weniger Streitfälle als die oben dargestellte.
                4. -
                +

                When to display Grades

                + +

                Eine Teilnehmerbewertung kann folgende Formen aufweisen: + +

                  +
                1. In der Phase der Teilnehmerbewertungen sind die Bewertungen (Kommnetare und Noten) für die Teilnehmer/innen sichtbar. Sie können die Einzelbewertungen und die sich daraus ergebende Gesamtnote. Dies kann zu mehr Auseinandersetzungen führen als bei der zweiten Art der Teilnehmerbewertung. + +
                2. In der Phase der Teilnehmerbewertungen sehen die Teilnehmner/innen ausschließlich die Kommentaree der anderen Teilnehmer/innen. Die individuellen Bewertungen werden nicht angezeigt, gleichwohl aber im System gespeichert. Die Teilnehmer/inenn können auch die Gesamtnote, die sie von den anderen Teilnehmer/innen erhalten haben. Erst wenn sie die Kommentare anerkannt haben werden ihnen auch die Einzelnoten und die Gesamtnote gezeigt. Diese Art der Teilnehmnerbewertung erzeugt weniger Streifälle als die oben dargestellte. +
                + +

                \ No newline at end of file diff --git a/lang/de/help/workshop/specimen.html b/lang/de/help/workshop/specimen.html index 508ac9244e0..aedf509b11b 100644 --- a/lang/de/help/workshop/specimen.html +++ b/lang/de/help/workshop/specimen.html @@ -1,11 +1,8 @@ - -

                Muster Bewertungsformular

                -

                Diese Seite zeigt die Details des Bewertungsformulars für -die Arbeit. Es wird von dem/derTrainer/in bei der Bewertung benutzt. Bei -einer Teilnehmer/innenbewertung wird das gleiche Formblatt für die -Bewertung verwandt.

                -

                Bitte beachten Sie, dass dieses Formular hier lediglich als -Muster dient. Änderungen, die Sie hier vornehmen werden -nicht gespeichert. Ein ganz ähnliches Formular wird bei der -Bewertung verwandt.

                -< \ No newline at end of file +

                Muster-Bewertungsformular

                + +

                Diese Seite zeigt die Details des Bewertungsformulars für die Arbeit. Es wird vom Lehrer bei der Bewertung benutzt. Bei einer Teilnehmerbewertung wird das gleiche Formblatt für die Bewertung benutzt. + +

                Bitte beachten Sie, dass dieses Formular hier lediglich als muster dient. Änderungen, die Sie hier vornehmen werden nicht gespeichert. Ein ganz ähnliches Formular wird bei der Bewertung verwandt. + + +

                \ No newline at end of file diff --git a/lang/de/help/workshop/submissionofexamples.html b/lang/de/help/workshop/submissionofexamples.html index 3c9f06ce056..f42e48e58c5 100644 --- a/lang/de/help/workshop/submissionofexamples.html +++ b/lang/de/help/workshop/submissionofexamples.html @@ -1,19 +1,9 @@ - -

                Übungsaufgaben bearbeiten

                -

                Wenn die Teilnemer/innen aufgefordert werden, einige -Beispielarbeiten zu bewerten, bevor sie ihre eigene Arbeit -beginnen, wird dieser Link aktiviert. Der/die Trainer/in kann eine -beliebige Zahl von zu bearbeitenden Übungsaufgaben -einstellen. Ist die Zahl der zur Verfügung stehenden -Übungsaufgaben höher als die eingestellte Zahl der zu -bearbeitenden Aufgaben, erfolgt eine Auswhal nach dem -Zufallsprinzip.

                -

                Wenn weniger Übungsaufgaben zur Verfügung stehen als -ausgewählt, werden die verfügbaren Aufgaben -gestellt.

                -

                Wir empfehlen, die Übungsaufgaben von dem/der Trainer/in bewerten zu -lassen. Diese Bewertungen sind privat und für die -Teilnehmer/innen nicht verfügbar. Sie werden jedoch dem/der Trainer/in -angezeigt, wenn er die Bewerungen der Teilnehmer/innen -durchsieht. Sie dienen als Referenzlösung und erinnern an -wichtige Aspekte der Beispiellösung. A

                +

                Übungsaufgaben bearbeiten

                + +

                Wenn die Teilnemer/innen aufgefordert werden, einige Beispielarbeiten zu bewerten, bevor sie ihre eigene Arbeit beginnen, wird dieser Link aktiviert. Der Lehrer kann eine beliebige Zahl von zu bearbeitenden Übungsaufgaben einstellen. Ist die Zahl der zur Verfügung stehenden Übungsaufgaben höher als die eingestellte Zahl der zu bearbeitenden Aufgaben, erfolgt eine Auswhal nach dem Zufallsprinzip.

                + +

                Wenn weniger Übungsaufgaben zur Verfügung stehen als ausgewählt, werden die verfügbaren Aufgaben gestellt.

                + +

                Wir empfhlen, die Übungsaufgaben vom Lehrer bewerten zu lassen. Diese Bewertungen sind privat und für die Teilnehmer/innen nicht verfügbar. Sie werden jedoch dem Lehrer angezeigt, wenn er die Bewerungen der Schüler durchsieht. Sie dienen als Referenzlösung und erinnern an wichtige Aspekte der Beispiellösung. +A +

                \ No newline at end of file diff --git a/lang/de/help/workshop/teachersgradings.html b/lang/de/help/workshop/teachersgradings.html index 1f006a0e9ef..a83bac504dd 100644 --- a/lang/de/help/workshop/teachersgradings.html +++ b/lang/de/help/workshop/teachersgradings.html @@ -1,12 +1,7 @@ - -

                Übersicht der Trainer/innenbewertungen

                -

                Als Option kann die Bewertung und Kommentierung des/der Trainer/in -den Teilnehmer/innen gezeigt werden. Wenn gewünscht können -diese nach dem Abschlußtermin für die Abgabe der -Arbeiten angezeigt werden oder auch später, wenn sie zu -diesem Termin noch nicht zur Verfügung stehen. Die -Kommentare und Bewertungen können den Teilnemer/innen bei -der eigenen Bewertung der Arbeiten anderer Teilnehmer/innen -behilflich sein.

                -

                Gerade wenn die Teilnehmerbewertungen anonym erfolgen, werden -die Bewertungen und Kommentare des/der Trainers/in angezeigt.

                +

                Übersicht der Lehrerbewertungen

                + +

                Als Option kann die Bewertung und Kommentierung des Lehrers den Studenten gezeigt werden. Wenn gewünscht können diese nach dem Abschlußtermin für die Abgabe der Arbeiten angezeigt werden oder auch später, wenn sie zu diesem Termin noch nicht zur Verfügung stehen. Die Kommentare und Bewertungen können den Teilnemer/innen bei der eigenen Bewertung der Arbeiten anderer Teilnehmer/innen behilflich sein. + +

                Gerade wenn die Teilnehmerbewertungen anonym erfolgen, werden die Bewertungen und Kommentare des Lehrers angezeigt. Sofern vorhanden wird auch das Bild des Lehrers angezeigt. + +

                \ No newline at end of file diff --git a/lang/de/help/workshop/teacherweight.html b/lang/de/help/workshop/teacherweight.html index 16f6e7e139e..f9b08b1825b 100644 --- a/lang/de/help/workshop/teacherweight.html +++ b/lang/de/help/workshop/teacherweight.html @@ -1,22 +1,22 @@ +

                Gewichtung der Bewertungen des/der Trainer/in

                + +

                Diese Option wird üblicherweise auf 1 gesetzt. Damit hat die Bewertung des/ +der Trainer/in, das gleiche Gewicht, wie die Bewertung der anderen Teilnehmer/innen. +Die Bewertung des Trainers kann jedoch auch höher gewichtet werden als die der +anderen Teilnehmer/innen.

                + + +

                Es mag Situationen geben, in denen die Teilnehmer/innen zu gute Bewertungen +abgeben, manchmal auch zu schlechte. +Die schlechte Bewertung durch die Tn kompensiert werden, in einem Maß, das durch +den Wert dieses Eintrages steigt. +Ein Wert von 5 z.B. bedeutet, dass bei 5 Bewertungen der TN zu jeder eingereichten +Arbeit die Bewertungen aller 5 TN das gleiceh Gewicht erhalten, wie die Bewertung +des Trainers. +Wenn die Option größer als 1 ist, werden Bewertungen der Tn, die von der des Trainers +stark abweichen nicht berücksichtigt Die berückschtigten Bewertungen liegen +damit näher an der Bewertung des Trainers und somit gewinnt dessen Bewertung + ein höheres Gewicht.

                + +

                Diese Option kann jederzeit während der Prüfung geändert werden.

                -

                Gewichtung der Bewertungen des/der -Trainer/in

                -

                Diese Option wird üblicherweise auf 1 gesetzt. Damit hat -die Bewertung des/ der Trainer/in, das gleiche Gewicht, wie die -Bewertung der anderen Teilnehmer/innen. Die Bewertung des/der -Trainers/in kann jedoch auch höher gewichtet werden als die -der anderen Teilnehmer/innen.

                -

                Es mag Situationen geben, in denen die Teilnehmer/innen zu -gute Bewertungen abgeben, manchmal auch zu schlechte. Die -schlechte Bewertung durch die TN kompensiert werden, in einem -Maß, das durch den Wert dieses Eintrages steigt. Ein Wert -von 5 z.B. bedeutet, dass bei 5 Bewertungen der TN zu jeder -eingereichten Arbeit die Bewertungen aller 5 TN das gleiche -Gewicht erhalten, wie die Bewertung des/der Trainers/in. Wenn die -Option größer als 1 ist, werden Bewertungen der TN, -die von der des Trainers stark abweichen, nicht -berücksichtigt Die berücksichtigten Bewertungen liegen -damit näher an der Bewertung des/der Trainers/in und somit -gewinnt dessen Bewertung ein höheres Gewicht.

                -

                Diese Option kann jederzeit während der Prüfung -geändert werden.

                diff --git a/lang/de/help/workshop/ungradedassessments.html b/lang/de/help/workshop/ungradedassessments.html index a8a951175b3..18bc6b867ed 100644 --- a/lang/de/help/workshop/ungradedassessments.html +++ b/lang/de/help/workshop/ungradedassessments.html @@ -1,24 +1,22 @@ -

                Nicht berücksichtigte -Bewertungen

                -

                In der Regel werden die Bewertungen mit einem geringen Gewicht -in die Gesamtnote einbezogen. Die Berechnung der Bewertungen der -Teilnehmer/innen und des/der Trainer/in wird im Hintergrund des -Workshop-Moduls erstellt. Wenn eine eingereichte Arbeit dreimal -oder öfter eingeschätzt wurde kann eine begründete -Einschätzung des Wertes der Arbeit vorgenommen werden. -Für Arbeiten, die nur zweimal bewertet wurden wird der -höchste Wert angenommen. Wenn die Bewertung regelmässig -durchgeführt wird die Zahl der unbewerteten Arbeiten -normalerweise Null sein.

                -

                Die Funktion des Links ist eine Neuberechnung der Bewertungen -der Benotungen, der Bewertungen der Arbeiten. Trainer/innen -sollten dies tun, wenn eine der beiden Option geändert -wurde:

                +

                Nicht bewertete Bewertungen

                + +

                In der Regel werden die Bewertungen mit einem geringen Gewicht in die Gesamtnote +einbezogen. Die Berechnung der Bewertungen der Teilnehmer/innen und des/der Trainer/in +wird im Hintergrund des Workshop-Moduls erstellt. enn eine eingereichte Arbeit +dreimal oder öfter eingeschätzt wurde, kann eine begründete Einschätzung +des Wertes der Arbeit vorgenommen werden. Für Arbeiten, die nur zweimal bewertet + wurden wird der höchste Wert angenommen. Wenn die Bewertung regelmässig durchgeführt + wird die Zahl der unbewerteten Arbeiten normalerweise Null sein.

                + +

                Die Funktion des Links ist eine Neuberechnung der Bewertungen der Benotungen, +der Bewertungen der Arbeiten. Trainer/inen sollten die stun, wenn eine der +beiden Option geändert wurde: +

                  -
                1. Die Option "Vergleich der Bewertungen";
                2. -
                3. Die Gewichtung der Bewertung des/der Trainers/in.
                4. -
                -Der Klick auf diesen Link aktualisiert die Bewertung der -Benotungen und berücksichtigt dabei die Einstellungen der -Parameter. Änderungen an anderen Stellen des Workshop Moduls -machen eine Neuberechnung an dieser Stelle nicht erforderlich. +
              2. Die Option "Vergleich der Bewertungen";
              3. +
              4. Die Gewichtung der Bewertung des/der Trainers/in.
              5. +
              Der Klick auf diesen Link aktualisiert die Bewertung der Benotungen und +berücksichtigt dabei die Einstellungen der Parameter. Änderungen an anderen +Stellen des Workshop Moduls machen eine Neuberechnung an dieser Stelle nicht erforderlich. +

              + diff --git a/lang/de/help/workshop/ungradedassessments_student.html b/lang/de/help/workshop/ungradedassessments_student.html index 263ae5ef1ad..25a360e8374 100644 --- a/lang/de/help/workshop/ungradedassessments_student.html +++ b/lang/de/help/workshop/ungradedassessments_student.html @@ -1,13 +1,4 @@ -

              Unbewertete Arbeiten (Teilnehmer/innen)

              -

              Bewertung der Teilnehmerarbeiten Dies sind -Teilnehmer/innenbewertungen, die von den Teilnehmer/innen gegenseitig -vorgenommen werden. Grundsätzlich müssen die Arbeiten -nicht von einem/r Trainer/in bewertet werden. Unter der Voraussetzung, -dass jede Arbeit einer/s Teilnehmerin/s öfter als fünf Mal -bewertet wurden, erstellt das System eine nachvollziehbare -individuelle Leistungsbewertung. Wenn die Zahl der -Teilnehmerbewertungen niedriger ist, sollte der/dieTrainer/in selber -eine Bewertung dieser Arbeit vornehmen. Alle Bewertungen, die zu -einer Arbeit abgegeben werden, können in der -Schlußbewertung der Teilnehmer/innen berücksichtigt -werden.

              \ No newline at end of file +

              Unbewertete Arbeiten (Teilnehmer)

              + +

              Bewertung der Teilnehmerarbeiten Dies sind Teilnehmerbewertungen, die von den Teilnehmer/innen gegenseitig vorgenommen werden. Grundsätzlich müssen die Arbeiten nicht von einem Lehrer bewertet werden. Unter der Voraussetzung, dass jede Arbeit eines Teilnehmers öfter als fünf Mal bewertet worden erstellt das System eine nachvollziehbare individuelle leistungsbewertung. Wenn die Zahl der Teilnehmerbewertungen niedriger ist, sollte der Lehrer selber eine bewertung dieser Arbeit vornehmen. Alle Bewertungen, die zu einer Arbeit abgegeben werden, können in der Schlußbewertung der Teilnehmer/innen berücksichtigt werden. + \ No newline at end of file diff --git a/lang/de/help/workshop/ungradedassessments_teacher.html b/lang/de/help/workshop/ungradedassessments_teacher.html index e2504b66c73..6987554622b 100644 --- a/lang/de/help/workshop/ungradedassessments_teacher.html +++ b/lang/de/help/workshop/ungradedassessments_teacher.html @@ -1,16 +1,7 @@ - -

              Unwertete Arbeiten (Trainer/innen)

              -

              Bewertung von Trainer/innenvorgaben Dies sind Bewertungen von -Übungsaufgaben, die die Teilnehmer/innen vornehmen -müssen, bevor sie mit ihrer eigentlichen Arbeit beginnen -können. Sie dienen der Selbsteinschätzung der -Teilnehmer/innen. Sie werden in der Regel von dem/der Trainer/in kommentiert. -Sie zeigen, ob die Aufgabenstellung verstanden wurde -und ermöglichen, die Aufgabenstellung der -Prüfung anzupassen. Wenn die Übungsarbeit bewertet -wird, erhalten die Teilnehmer/innen wertvolle Hinweise zur -Vorbereitung auf ihre eigene Arbeit.

              -

              Diese Arbeiten müssen nicht bewertet werden. Dies kann -vom Lernstand der Teilnehmer/innen abhängig gemacht werden. -Im Normalfall wird empfohlen, dass wenigstens eine -Beispielbewertung kommentiert wird.

              +

              Unwertete Arbeiten (Lehrer)

              + +

              Bewertung von Lehrervorgaben Dies sind Bewertungen von Übungsaufgaben, die die Teilnehmer/innen vornehmen müssen, bevor sie mit ihrer eigentlichen Arbeit beginnen können. +Sie dienen der Selbsteinschätzung der Teilnehmer/innen. Sie werden in der Regel vom Lehrer kommentiert. Sie zeigen, ob der Teilnehmer die Aufgabenstellung verstnaden hat und ermöglicchen dem Lehrer die Aufgabenstellung der Prüfung anzupassen. Wenn die Übungsarbeit bewertet wird, erhalten die Teilnehmer/innen wertvolle Hinweise zur Vorbereitung auf ihre eigene Arbeit.

              + +

              Diese Arbeiten müssen nicht bewertet werden. Dies kann vom Lernstand der Teilnehmer/innen abhängig gemacht werden. Im Normalfall wird empfohlen, dass wenigstens eine Beispielbewertung kommentiert wird.

              + \ No newline at end of file diff --git a/lang/de/help/writing.html b/lang/de/help/writing.html index 6fbad9bf550..3c11473513d 100644 --- a/lang/de/help/writing.html +++ b/lang/de/help/writing.html @@ -1,26 +1,15 @@ -

              Texte verfassen

              -

              Wenn man einen Text für andere zum Lesen schreibt, -versuchen Sie es direkt Ihrem Publikum zu schreiben.

              -

              Legen Sie Ihre Ideen klar und einfach dar, um -Missverständnisse zu vermeiden. Vermeiden Sie lange -Wörter, kurze tun es auch.

              -

              In den Foren hilft es, Ihre Texte kurz und -prägnant zu halten. Anstelle von langen abschweifenden -Beiträgen zu verschiedensten Punkten ist es besser, einzelne kurze -(sie können auch zu unterschiedliche Foren gehören) -einzustellen.

              -

              Bearbeiten Sie Ihren Text soviel wie notwendig, bis Sie ihn -für gut erachten. In den Veröffentlichungsforen habe -Sie sogar maxeditingtime/60) ?> - Zeit zurück zu gehen und den Text zu verbessern, falls -notwendig.

              -

              Wenn Sie Anderen antworten, versuchen Sie ihnen möglichst -interessante Fragen zu stellen. Das hilft Ihnen und der anderen -Person über das über das Diskussionsthema besser -nachzudenken (und besser zu lernen).

              -

              -

              -

              -

              -

              -

              \ No newline at end of file +

              Schreiben

              + +

              Wenn man einen Text für andere zum Lesen schreibt, versuchen Sie es direkt Ihrem Publikum zu schreiben.

              + +

              Legen Sie Ihre Ideen klar und einfach dar, um Missverständnisse zu vermeiden. Vermeiden Sie lange Wörter, kurze tun es auch.

              + +

              In den Foren hilft es, Ihre gesamten Postings kurz und prägnant zu halten. Anstelle von langen abschweifenden Postings zu verschiedensten Punkten ist es besser, einzelne kurze (sie können auch unterschiedliche Foren gehören) einzustellen. + +

              Bearbeiten Sie Ihren Text soviel wie notwendig, bis Sie ihn für gut erachten. In den Veröffentlichungsforen habe Sie sogar maxeditingtime/60) ?> Zeit zurück zu gehen und den Text zu verbessern, falls notwendig.

              + +

              Wenn Sie anderen antworten, versuchen Sie ihnen möglichst interessante Fragen zu stellen. Das hilft Ihnen und der anderen Person über das über das Diskussionsthema besser nachzudenken (und besser zu lernen).

              + +

              +

              +

              diff --git a/lang/de/install.php b/lang/de/install.php index a3140715d6b..52832d1f930 100755 --- a/lang/de/install.php +++ b/lang/de/install.php @@ -1,11 +1,11 @@
              moodleadmin
              +Zum Beispiel:

              moodleadmin
              Dies ändert die Links für das Admin-Verzeichnis in moodle.'; $string['caution'] = 'Warnung'; $string['chooselanguage'] = 'Eine Sprache wählen'; @@ -49,8 +49,7 @@ $string['fileuploads'] = 'Dateien hochladen'; $string['fileuploadserror'] = 'Dies sollte auf \'on\' stehen'; $string['fileuploadshelp'] = '

              Dateien hochladen ist auf diesem Server abgestellt.

              -

              Moodle kann installiert werden. Es ist aber nicht möglich, Dateien für Kurse oder Bilder in den Profilen hochzuladen.

              - +

              Moodle kann installiert werden. Es ist aber nicht möglich, Dateien für Kurse oder Bilder in den Profilen hochzuladen.

              Um das Hochladen von Dateien zu ermöglichen, müssen Sie oder der Adminstrator des Servers die Datei php.ini anpassen und die Einstellungen fürfile_uploads ändern auf \'1\'.

              '; $string['gdversion'] = 'GD Version'; $string['gdversionerror'] = 'Die GD Bibliothek sollte verfügbar sein, um Bilder zu erzeugen und anzuzeigen.'; @@ -73,19 +72,18 @@ $string['memorylimithelp'] = '

              Die Einstellung der PHP memory limit f

            • Wenn Sie PHP neu kompilieren können, nehmen Sie die Einstellung --enable-memory-limit. Dann kann moodle die Einstellung selber vornehmen.
            • Wenn Sie Zugriff auf die Datei php.ini haben, können Sie die Einstellung memory_limit selber auf z.B. 16M anpassen. Wenn Sie selber keinen Zugriff haben, fragen Sie den/die Administrator/in, dies für Sie zu tun.
            • Auf einigen PHP-Servern können Sie eine .htaccess-Datei im moodle-Verzeichnis einrichten. Tragen Sie darin die folgende Zeile ein:

              php_value memory_limit 16M

              -

              Achtung: auf einigen Servern hindert diese Einstellung alle PHP-Seiten und Sie erhalten Fehlermeldungen. Entfernen Sie dann den Eintrag in der .htaccess-Datei wieder.

            • +

              Achtung: auf einigen Servern hindert diese Einstellung alle PHP-Seiten und Sie erhalten Fehlermeldungen. Entfernen Sie dann den Eintrag in der .htaccess-Datei wieder.

              '; -$string['mysqlextensionisnotpresentinphp'] = 'PHP wurde noch nicht richtig für diese MySQL Erweiterung konfiguriert. Daher kann es nicht mit MySQL kommunizieren. Prüfen Sie bitte die php.ini-Einstellungen oder kompilieren Sie PHP neu.'; $string['pass'] = 'Durchgang'; $string['phpversion'] = 'PHP Version'; $string['phpversionerror'] = 'PHP muss mindestens in der Version 4.1.0 installiert sein.'; $string['phpversionhelp'] = '

              moodle erwartet PHP mit der Version 4.1.0 oderhöher.

              -

              Sie nutzen zur Zeit die Version $a.

              +

              Sie nutzen zur Zeit die Version $a

              Sie müssen Ihre PHP-Verson aktualisieren oder auf einen Rechner wechseln, der eine neuere Version von PHP nutzt.

              '; $string['safemode'] = 'Safe Mode'; $string['safemodeerror'] = 'Die Nutzung von moodle im safe mode kann zu Schwierigkeiten führen.'; $string['safemodehelp'] = '

              moodle kann beim Betrieb im safe mode verschiedene Probleme haben, nicht zuletzt kann es unmöglich sein, neue Dateien zu erzeugen.

              -

              Safe Mode ist zumeist nur auf einigen öffentlichen Webservern eingestellt. Suchen Sie sich einen Anbieter, der auf diese Einstellung verzichtet oder bitten Sie Ihren Dienstleister, dass Sie auf einen Server \'umziehen\' können, der diese Einstellung nicht verwendet.

              +

              Safe Mode ist zumeist nur auf einigen öffentlichen Webservern eingestellt. Suchen Sie sich einen Anbieter, der auf diese Einstellung verzichtet oder bitten Sie Ihren Dienstleister, dass Sie auf einen Server \'umziehen\' können der diese Einstellung nicht verwendet.

              Sie können versuchen, die Installation fortzusetzen. Sie müssen aber später mit Problemen rechnen.

              '; $string['sessionautostart'] = 'Session Auto Start'; $string['sessionautostarterror'] = 'Dies Option sollte abgestellt sein.'; diff --git a/lang/de/journal.php b/lang/de/journal.php index ed95fc6504f..1cc1361f846 100644 --- a/lang/de/journal.php +++ b/lang/de/journal.php @@ -1,5 +1,5 @@ teacher hat einen Feedback zu Ihrem Journal \'$a->journal\' abgegeben. Sie können dieses angehängt an Ihr Journal sehen: $a->url +$string['journalmail'] = '$a->Trainer/in hat einen Kommentar zu Ihrem Journal \'$a->Journal\' abgegeben. Sie können dieses angehängt an Ihr Journal sehen: $a->url'; -$string['journalmailhtml'] = '$a->teacher hat ein Feedback zu Ihrem $a->journal \' abgegeben

              Sie können diesen angehängt an Ihren url\"> Journaleintrag einsehen.'; -$string['journalname'] = 'Link (Kursseite)'; -$string['journalquestion'] = 'Zusammenfassung'; +$string['journalmailhtml'] = '$a->Trainer/in hat einen Kommentar zu Ihrem ->Journal \' abgegeben

              Sie können diesen angehängt an Ihr url\"> Journal sehen.'; +$string['journalname'] = 'Name des Journals'; +$string['journalquestion'] = 'Journal-Frage'; $string['journalrating1'] = 'nicht zufriedenstellend'; $string['journalrating2'] = 'zufriedenstellend'; $string['journalrating3'] = 'hervorragend'; @@ -23,7 +23,7 @@ $string['modulenameplural'] = 'Journale'; $string['newjournalentries'] = 'Neue Journal-Einträge'; $string['noentry'] = 'Kein Eintrag'; $string['noratinggiven'] = 'Keine Beurteilung abgegeben'; -$string['notopenuntil'] = 'Diese Journal ist geschlossen bis'; +$string['notopenuntil'] = 'Diese Journal wird geschlossen sein bis'; $string['notstarted'] = 'Sie haben mit Ihrem Journal noch nicht begonnen'; $string['overallrating'] = 'Allgemeine Beurteilung'; $string['rate'] = 'Beurteilung'; diff --git a/lang/de/label.php b/lang/de/label.php index a47ac936742..13fb847571f 100644 --- a/lang/de/label.php +++ b/lang/de/label.php @@ -1,9 +1,9 @@ diff --git a/lang/de/lesson.php b/lang/de/lesson.php index bc383ea2a58..95112d2897b 100644 --- a/lang/de/lesson.php +++ b/lang/de/lesson.php @@ -1,256 +1,89 @@ firstname {$a->lastname}\'s Anmerkungen'; -$string['completed'] = 'Vollständig'; $string['confirmdeletionofthispage'] = 'Bitte bestätigen Sie das Löschen dieser Seite'; $string['congratulations'] = 'Herzlichen Glückwunsch. Sie haben das Ende dieser Lektion erreicht.'; $string['continue'] = 'Fortsetzen'; -$string['continuetoanswer'] = 'Fortsetzen, um die Antworten zu ändern'; -$string['correctanswerjump'] = 'Sprung bei richtiger Antwort'; -$string['correctanswerscore'] = 'Punkte für richtige Antwort'; -$string['correctresponse'] = 'Rückmeldung bei richtiger Antwort'; -$string['customscoring'] = 'Normale Bewertung (Punktzahl)'; $string['deadline'] = 'Abgabezeitpunkt'; -$string['defaultessayresponse'] = 'Ihr Text wird von dem/der Trainer/in bewertet.'; -$string['deleteattempts'] = 'Zurücksetzen der Versuche für diese Lektion (user id)'; -$string['deletedpage'] = 'GelöschteSeite'; $string['deleting'] = 'Löschen'; $string['deletingpage'] = 'Löschen der Seite: $a'; $string['description'] = 'Beschreibung'; -$string['detailedstats'] = 'Detaillstatistik'; -$string['didnotanswerquestion'] = 'Hat diese Frage nicht beantwortet.'; -$string['didnotreceivecredit'] = 'Hat kein Guthaben (Kredit) erhalten'; -$string['displayhighscores'] = 'Punktetabelle anzeigen'; -$string['displayinleftmenu'] = 'Anzeige im linken Menu?'; -$string['displayleftmenu'] = 'Anzeige linkes Menu'; $string['displayofgrade'] = 'Anzeige der Bewertungen für Teilnehmer/innen:'; -$string['displayreview'] = 'Button für Rückschau anzeigen'; -$string['displayscorewithessays'] = 'Sie haben $a->score Punkte von $a->tempmaxgrade maximal möglichen Punkten bei der automatischen Bewertung erzielt.
              Ihre $a->essayquestions Textantwort(en) werden noch bewertet und zur Gesamtpunktzahl später hinzugefügt.

              Ihre derzeitige Bewertung/Punktzahl ist $a->score Punkte bzw. $a->grade Bewertung.'; -$string['displayscorewithoutessays'] = 'Ihre Bewertung/Punktzahl lautet $a->score (§a->grade Bewertung).'; -$string['editlessonsettings'] = 'Einstellungen für diese Lektion bearbeiten'; -$string['editpagecontent'] = 'Inhalt dieser Seite bearbeiten'; -$string['email'] = 'E-Mail'; -$string['emailallgradedessays'] = 'E-Mail an alle
              deren Texte bewertet wurden'; -$string['emailgradedessays'] = 'E-Mail zur Bewertung der Texte'; -$string['emailsuccess'] = 'E-Mail(s) erfolgreich versandt'; $string['endofbranch'] = 'Ende der Verzweigung'; -$string['endofclustertitle'] = 'Ende des Clusters'; $string['endoflesson'] = 'Ende der Lektion'; -$string['enteredthis'] = 'gaben dies ein.'; -$string['entername'] = 'Geben Sie einen Aliasnamen (nickname) für die Punktetabelle'; -$string['enterpassword'] = 'Bitte geben Sie ein Passwort ein:'; -$string['eolstudentoutoftime'] = 'Achtung: Die zur Verfügung stehende Zeit läuft ab. Die letzte Frage wird nicht bewertet, wenn sie nach Zeitablauf abgegeben wird.'; -$string['eolstudentoutoftimenoanswers'] = 'Sie haben keine Fragen bearbeitet. Sie erhalten daher 0 Punkte/keine Bewertung für die Lektion.'; -$string['essay'] = 'Text'; -$string['essayemailsubject'] = 'Ihre Bewertung für $a Frage'; -$string['essays'] = 'Texte'; -$string['essayscore'] = 'Punkte fürText'; $string['fileformat'] = 'Dateiformat'; $string['firstanswershould'] = 'Die richtige Antwort sollte an der ersten Stelle stehen und zur nächsten Seite führen.'; -$string['firstwrong'] = 'Ihre Antwort ist falsch. Sie erhalten leider keinen Punkt für diese Antwort. Wollen Sie die Antwort erraten? Sie erhalten dann jedoch keinen Punkt für die Beantwortung.'; -$string['flowcontrol'] = 'Ablaufkontrolle'; -$string['general'] = 'Generell'; -$string['gobacktolesson'] = 'Zurück zur Lektion'; -$string['grade'] = 'Bewertung'; -$string['gradeessay'] = 'Bewertung Textfragen'; $string['gradeis'] = 'Ihre Note ist $a'; -$string['gradeoptions'] = 'Bewertungsoptionen'; $string['handlingofretakes'] = 'Benotung bei Wiederholungen'; -$string['havenotgradedyet'] = 'Noch nicht bewertet'; -$string['here'] = 'hier'; -$string['highscore'] = 'Höchste Punktzahl'; -$string['hightime'] = 'maximale Zeit'; +$string['here'] = ''; $string['importquestions'] = 'Fragen importieren'; -$string['insertedpage'] = 'Eingefügte Seite'; $string['jump'] = 'Sprung'; -$string['jumptsto'] = 'springt zu'; -$string['leftduringtimed'] = 'Sie haben die Lektion verlassen. Diese Lektion ist für die Bearbeitung zeitgesteuert.
              Klicken Sie auf Fortsetzen, um die Lektion erneut zu beginnen.'; -$string['leftduringtimednoretake'] = 'Sie haben die Lektion verlassen. Diese Lektion ist für die Bearbeitung zeitgesteuert.
              Sie können nicht in diese Lektion zurückkehren oder von Anfang an neu beginnen.'; -$string['lesson'] = '§a Lektion'; -$string['lessonclosed'] = 'Diese Lektion schließt am $a.'; -$string['lessoncloses'] = 'Geschlossene Lektionen'; -$string['lessondefault'] = 'Grundeinstellungen für Lektionen verwenden'; -$string['lessonformating'] = 'Lektionsformatierung'; -$string['lessonmenu'] = 'Lektionenmenu'; -$string['lessonopen'] = 'Diese Lektion startet am $a.'; -$string['lessonopens'] = 'Lektion verfügbar'; -$string['lessonstats'] = 'Lektionen-Statistik'; -$string['loginfail'] = 'Der Login ist gescheitert. Bitte versuchen Sie es noch einmal.'; -$string['lowscore'] = 'Niedrige Bewertung'; -$string['lowtime'] = 'Wenig Zeit (low time)'; -$string['mainmenu'] = 'Hauptmenu'; -$string['matchesanswer'] = 'Zuordnung zu Antworten'; -$string['maxhighscores'] = 'Zahl der besten Bewertungen, die angezeigt werden sollen'; $string['maximumnumberofanswersbranches'] = 'Höchstzahl der Antworten/Verzweigungen'; $string['maximumnumberofattempts'] = 'Höchstzulässige Zahl der Versuche'; -$string['maxtime'] = 'Zeitbegrenzung (Minuten)'; -$string['maxtimewarning'] = 'Sie haben $a Minute(n), um die Lektion zu beenden.'; $string['minimumnumberofquestions'] = 'Mindestzahl der Fragen'; -$string['modattempts'] = 'Teilnehmer/innen können überprüfen'; -$string['modattemptsnoteacher'] = 'Überprüfung durch Teilnehmer/innen nur für Teilnehmer/innen möglich.'; $string['modulename'] = 'Lektion'; $string['modulenameplural'] = 'Lektionen'; -$string['movedpage'] = 'Verschobene Seite'; $string['movepagehere'] = 'Verschieben der Seite an diese Stelle'; $string['moving'] = 'Seite $a verschieben'; $string['movingtonextpage'] = 'Zur nächsten Seite gehen'; -$string['multianswer'] = 'Mehrere richtige Antworten'; +$string['multianswer'] = 'Mehrere Antworten'; $string['multipleanswer'] = 'Mehrere Antworten'; -$string['nameapproved'] = 'Namen bestätigen'; -$string['namereject'] = 'Der eingegebene Name wurde bei der Prüfung zurückgewiesen.
              Bitte versuchen Sie es mit einem anderem Namen noch einmal.'; $string['nextpage'] = 'Nächste Seite'; $string['noanswer'] = 'Sie haben keine Antwort abgegeben'; $string['noattemptrecordsfound'] = 'Keine aufgezeichneten Daten gefunden: Keine Bewertung vorgenommen'; -$string['nocommentyet'] = 'Bisher keine Anmerkung'; -$string['nohighscores'] = 'Keine Höchstbewertungen'; -$string['nooneansweredcorrectly'] = 'Niemand hat richtig beantwortet.'; -$string['nooneansweredthisquestion'] = 'Niemand hat diese Frage beantwortet.'; -$string['noonecheckedthis'] = 'Niemand hat dies geprüft.'; -$string['nooneenteredthis'] = 'Niemand hat dies bisher gesehen.'; -$string['noretake'] = 'Sie können diese Lektion nicht wiederholen.'; $string['normal'] = 'Normal - folgt dem Pfad der Lektion'; -$string['notcompleted'] = 'Nicht beendet'; $string['notdefined'] = 'Nicht definiert'; -$string['nothighscore'] = 'Sie haben keine $a Liste mit den besten Bewertungen angelegt.'; $string['notitle'] = 'Kein Titel'; $string['numberofcorrectanswers'] = 'Anzahl der richtigen Antwort(en): $a'; $string['numberofcorrectmatches'] = 'Anzahl der passenden Paare: $a'; -$string['numberofpagestoshow'] = 'Anzahl der angezeigten Seiten (Karten): $a'; +$string['numberofpagestoshow'] = 'Anzahl der angezeigten Seiten (Karten) $a'; $string['numberofpagesviewed'] = 'Anzahl der bisher angesehenen Seiten: $a'; -$string['ongoing'] = 'Aktuellen Punktestand anzeigen'; -$string['ongoingcustom'] = 'Sie haben bisher $a->score Punkt(e) von bisher $a->currenthigh Punkt(en) erreicht.'; -$string['ongoingnormal'] = 'Sie haben bisher §a->correct von $a->viewed Frage(n) richtige beantwortet.'; -$string['or'] = 'ODER'; $string['ordered'] = 'Geordnet'; -$string['other'] = 'Andere'; $string['outof'] = 'Außerhalb von $a'; -$string['outoftime'] = 'Zeit abgelaufen'; -$string['overview'] = 'Überblick'; +$string['questiontype'] = "Fragentyp"; +$string['questionoption'] = "Fragenoptionen"; $string['page'] = 'Seite: $a'; -$string['pagecontents'] = 'Inhalt der Seite'; $string['pages'] = 'Seiten'; +$string['pagecontents'] = 'Inhalt der Seite'; $string['pagetitle'] = 'Seitentitel'; -$string['password'] = 'Passwort'; -$string['passwordprotectedlesson'] = '$a ist eine mit einem Passwort geschützte Lektion.'; -$string['pleasecheckoneanswer'] = 'Bitte überprüfen Sie Ihre Antwort noch einmal'; -$string['pleasecheckoneormoreanswers'] = 'Bitte überprüfen Sie Ihre Antwort(en)'; +$string['pleasecheckoneanswer'] = 'Bitte wählen Sie eine Antwort aus'; +$string['pleasecheckoneormoreanswers'] = 'Bitte wählen Sie eine oder mehrere Antworten aus'; $string['pleaseenteryouranswerinthebox'] = 'Bitte tragen Sie Ihre Antwort in das entsprechende Feld ein.'; $string['pleasematchtheabovepairs'] = 'Bitte vergleichen Sie die obigen Paare'; -$string['pointsearned'] = 'Erreichte Punkte'; -$string['postsuccess'] = 'Erfolgreich übertragen'; -$string['practice'] = 'Praxislektion'; -$string['previouspage'] = 'Vorherige Seite'; -$string['question'] = 'Frage'; -$string['questionoption'] = 'Zusatzoption aktivieren
              (bei Multiple-Choice: mehrere richtige Antworten;
              bei Kurzantwortfrage: Groß-/Kleinschreibung berücksichtigen)'; -$string['questiontype'] = 'Fragentyp'; -$string['randombranch'] = 'Zufällige Verzweigungsseite'; -$string['randompageinbranch'] = 'Zufallsfrage innerhalb einer Verzweigung'; -$string['rank'] = 'Rang'; $string['reached'] = 'erreicht'; -$string['receivedcredit'] = 'Erhaltener Kredit'; $string['redisplaypage'] = 'Seite erneut anzeigen'; -$string['report'] = 'Bericht'; $string['response'] = 'Reaktion'; -$string['returnmainmenu'] = 'Zurück zum Hauptmenu'; -$string['returntocourse'] = 'Zurück zum Kurs'; -$string['reviewlesson'] = 'Lektion überprüfen'; -$string['reviewquestionback'] = 'Ja, ich will es noch einmal versuchen'; -$string['reviewquestioncontinue'] = 'Nein, ich will zur nächsten Frage weiter gehen'; $string['sanitycheckfailed'] = 'Verständlichkeitsprüfung gescheitert: Der Versuch wurde gelöscht.'; -$string['savechanges'] = 'Änderungen speichern'; -$string['savechangesandeol'] = 'Alle Änderungen speichern und danach zum Ende der Lektion gehen.'; $string['savepage'] = 'Seite speichern'; -$string['score'] = 'Punkt'; -$string['scores'] = 'Punkte'; -$string['secondpluswrong'] = 'Nicht ganz. Wollen Sie es noch einmal versuchen?'; $string['showanunansweredpage'] = 'Zeige eine unbearbeitete Seite'; $string['showanunseenpage'] = 'Zeige eine noch nicht gesehene Seite'; -$string['singleanswer'] = 'Einzelne Antwort'; -$string['slideshow'] = 'Slideshow'; -$string['slideshowbgcolor'] = 'Slideshow Hintergrundfarbe'; -$string['slideshowheight'] = 'Slideshow Höhe'; -$string['slideshowwidth'] = 'Slideshow Breite'; -$string['startlesson'] = 'Start der Lektion'; -$string['studentattemptlesson'] = '$a->lastname, $a->firstname\'s Versuch Nummer $a->attempt'; -$string['studentname'] = '$a Name'; -$string['studentoneminwarning'] = 'Warnung: Sie haben noch eine Minute oder weniger Zeit, um die Lektion abzuschließen.'; -$string['studentoutoftime'] = 'Achtung: Die vorgegebene Zeit für die Bearbeitung der Lektion ist abgelaufen. Die letzte Frage wurde nach dem Zeitablauf bearbeitet und wird nicht gezählt. Bitte drücken Sie den Fortsetzen Button, um die Lektion abzuschließen.'; -$string['studentresponse'] = '{$a}\'s Antwort'; -$string['submitname'] = 'Namen eintragen'; -$string['teacherjumpwarning'] = 'Ein $a->cluster Sprung oder ein $a->unseen Sprung wird in dieser Lektion verwandt. Der Sprung zur nächsten Seite wird statt dessen genutzt. Loggen Sie sich als Teilnehmer/in ein, um diese Sprünge zu testen.'; -$string['teacherongoingwarning'] = 'Die fortgeschriebene aktuelle Punktzahl wird nur bei Teilnehmer/innen angezeigt. Loggen Sie sich als Teilnehmer/in ein, um diese Funktion zu testen.'; -$string['teachertimerwarning'] = 'Die Zeitvorgabe wird nur bei Teilnehmer/innen angezeigt. Loggen Sie sich als Teilnehmer/in ein, um diese Funktion zu testen.'; +$string['singleanswer'] = 'Eine Antwort'; $string['thatsthecorrectanswer'] = 'Dies ist die richtige Antwort'; $string['thatsthewronganswer'] = 'Dies ist eine falsche Antwort'; $string['thefollowingpagesjumptothispage'] = 'Die folgenden Seiten springen auf diese Seite'; $string['thispage'] = 'Diese Seite'; -$string['timed'] = 'Zeitlich festgelegt'; -$string['timeremaining'] = 'Verbleibende Zeit'; -$string['timetaken'] = 'Benötigte Zeit'; -$string['topscorestitle'] = 'Die besten Ergebnisse in Punkten für diese Lektion $a->name $a->maxhighscores.'; -$string['treeview'] = 'Baumansicht'; -$string['unseenpageinbranch'] = 'Nicht gesehene Fragen in einer Verzweigung'; -$string['updatedpage'] = 'Aktualisierte Seiten'; -$string['updatefailed'] = 'Update ist gescheitert'; -$string['updatesuccess'] = 'Update erfolgreich'; $string['useeditor'] = 'HTML Editor benutzen'; $string['usemaximum'] = 'Benotung nach bestem Versuch'; $string['usemean'] = 'Benotung nach Durchschnitt'; -$string['usepassword'] = 'Passwortgeschützte Lektion'; -$string['viewallpages'] = 'Alle Seiten anzeigen'; -$string['viewgrades'] = 'Bewertungen anzeigen'; -$string['viewhighscores'] = 'Liste der besten Bewertungen anzeigen'; -$string['viewlessonstats'] = 'Statistik der Lektion anzeigen'; -$string['waitpostscore'] = 'Bitte haben Sie ein wenig Geduld während die Bestenliste erstellt wird ...'; -$string['welldone'] = 'Gut gemacht!'; -$string['whatdofirst'] = 'Was wollen Sie zuerst tun?'; -$string['wronganswerjump'] = 'Sprung bei falscher Antwort'; -$string['wronganswerscore'] = 'Punkt(e) bei falscher Antwort'; -$string['wrongresponse'] = 'Rückantwort für falsche Beantwortung'; -$string['youhavereceived'] = 'Sie haben $a->score von $a->outof möglichen Punkten für diese Textfrage erhalten.'; $string['youhaveseen'] = 'Sie haben einige Seiten bereits früher besucht.
              Wollen Sie an der Stelle fortsetzen an der Sie damals aufgehört haben?'; -$string['youmadehighscore'] = 'Sie haben die Liste der besten $a Bewertungen erreicht.'; $string['youranswer'] = 'Ihre Antwort'; $string['yourcurrentgradeis'] = 'Ihre derzeitige Bewertung ist $a'; -$string['yourgradeisnow'] = 'Die Bewertung für die Lektion wurde verändert auf $a.'; -$string['yourresponse'] = 'Ihre Antwort'; $string['youshouldview'] = 'Sie sollten sich folgendes ansehen: $a'; ?> diff --git a/lang/de/moodle.php b/lang/de/moodle.php index 018da31d801..bd77cb36b35 100644 --- a/lang/de/moodle.php +++ b/lang/de/moodle.php @@ -1,5 +1,5 @@ -what\' in $a->to einfügen'; +$string['addinganewto'] = 'Füge $a->what ein zu $a->to'; $string['addingdatatoexisting'] = 'Daten zu bestehenden hinzufügen'; $string['addnewcategory'] = 'Neue Kategorie hinzufügen'; $string['addnewcourse'] = 'Neuen Kurs anlegen'; $string['addnewuser'] = 'Neue/n Benutzer/in anlegen'; -$string['addresource'] = 'Arbeitsunterlage hinzufügen'; $string['address'] = 'Adresse'; $string['addstudent'] = 'Teilnehmer/in hinzufügen'; $string['addteacher'] = 'Trainer/in anlegen'; $string['admin'] = 'Admin'; $string['adminhelpaddnewuser'] = 'Neue Nutzerzugänge manuell anlegen'; $string['adminhelpassignadmins'] = 'Administratoren haben vollen Zugriff auf die Seite'; -$string['adminhelpassigncreators'] = 'Kursverwalter/innen können neue Kurse anlegen und dort unterrichten'; +$string['adminhelpassigncreators'] = 'Ersteller/innen können neue Kurse anlegen und dort unterrichten'; $string['adminhelpassignstudents'] = 'Wählen Sie einen Kurs und fügen Sie Teilnehmer/innen über das Administrationsmenü hinzu'; $string['adminhelpassignteachers'] = 'Wählen Sie einen Kurs und verwenden Sie das Icon, um Trainer/innen hinzuzufügen'; $string['adminhelpauthentication'] = 'Sie können die interne Nutzerverwaltung oder externe Datenbanken verwenden'; @@ -41,10 +39,7 @@ $string['adminhelpbackup'] = 'Backup-Funktionen einrichten'; $string['adminhelpconfiguration'] = 'Aussehen und Aufbau der Webseite konfigurieren'; $string['adminhelpconfigvariables'] = 'Allgemeine Variablen der Website konfigurieren'; $string['adminhelpcourses'] = 'Kurse und Kategorien definieren und ihnen Personen zuordnen'; -$string['adminhelpeditorsettings'] = 'Einstellungen für HTML-Editor festlegen'; $string['adminhelpedituser'] = 'Zugänge durchsuchen und bearbeiten'; -$string['adminhelpenrolments'] = 'Wählen Sie interne oder externe Wege zur Kontrolle der Zugänge.'; -$string['adminhelpfailurelogs'] = 'Log-Daten und gescheiterte Anmeldungen durchsehen'; $string['adminhelplanguage'] = 'Aktuelles Sprachpaket überprüfen und bearbeiten'; $string['adminhelplogs'] = 'Logfiles der Aktivitäten der Seite durchsuchen'; $string['adminhelpmanageblocks'] = 'Verwaltung der installierten Blöcke und ihrer Einstellungen'; @@ -53,16 +48,13 @@ $string['adminhelpmanagefilters'] = 'Textfilter und damit verbundene Einstellung $string['adminhelpmanagemodules'] = 'Installierte Module und deren Einstellungen verwalten'; $string['adminhelpsitefiles'] = 'Allgemeine Dateien veröffentlichen oder externe Backups hochladen'; $string['adminhelpsitesettings'] = 'Aufbau der Startseite festlegen'; -$string['adminhelpthemes'] = 'Ein optisches Thema/Skin (Farben, Schriften usw.) für die Site wählen'; +$string['adminhelpthemes'] = 'Ein Thema (Farben, Schriften usw.) für die Site wählen'; $string['adminhelpuploadusers'] = 'Import neuer Nutzer/innen aus Textdatei'; $string['adminhelpusers'] = 'Nutzer anlegen und Authentifizierung festlegen'; $string['administration'] = 'Administration'; $string['administrator'] = 'Administrator/in'; $string['administrators'] = 'Administrator/innen'; -$string['administratorsall'] = 'Alle Administrator/innen'; -$string['administratorsandteachers'] = 'Administrator/innen und Trainer/innen'; $string['advancedfilter'] = 'Weitere Filter'; -$string['advancedsettings'] = 'Weitere Einstellungen'; $string['again'] = 'nochmal'; $string['all'] = 'Alle'; $string['allactivities'] = 'Alle Aktivitäten'; @@ -72,11 +64,9 @@ $string['allgroups'] = 'Alle Gruppen'; $string['alllogs'] = 'Alle Statistiken'; $string['allow'] = 'Zulassen'; $string['allowguests'] = 'In diesem Kurs sind Gäste zugelassen'; -$string['allowinternal'] = 'Interne Verfahren auch zulassen'; $string['allownot'] = 'Nicht zulassen'; $string['allparticipants'] = 'Alle Teilnehmer/innen'; -$string['allteachers'] = 'Alle Trainer/innen'; -$string['alphabet'] = 'A,Ä,B,C,D,E,F,G,H,I,J,K,L,M,N,O,Ö,P,Q,R,S,T,U,Ü,V,W,X,Y,Z'; +$string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; $string['alphanumerical'] = 'Darf nur Buchstaben und Zahlen enthalten'; $string['alreadyconfirmed'] = 'Die Registrierung wurde bereits bestätigt'; $string['always'] = 'Immer'; @@ -84,11 +74,11 @@ $string['answer'] = 'Antwort'; $string['areyousuretorestorethis'] = 'Wollen Sie wirklich fortsetzen?'; $string['areyousuretorestorethisinfo'] = 'Sie haben später die Möglichkeit, diese Sicherung einem bestehenden Kurs hinzuzufügen oder einen völlig neuen Kurs anzulegen.'; $string['assessment'] = 'Beurteilung'; -$string['assignadmins'] = 'Administrator/in eintragen'; -$string['assigncreators'] = 'Kursverwalter/in eintragen'; -$string['assignstudents'] = 'Teilnehmer/innen eintragen'; -$string['assignstudentsnote'] = 'Anmerkung: Es ist eigentlich nicht notwendig, diese Seite zu verwenden, da sich Kursteilnehmer/innen selbst in diesen Kurs einschreiben können.'; -$string['assignstudentspass'] = 'Sie brauchen den Teilnehmer/innen nur den Schlüssel dieses Kurses mitzuteilen. Er lautet gegenwärtig: \'$a\'. Dann können sie sich selber zu diesem Kurs eintragen.'; +$string['assignadmins'] = 'Administrator/inzuweisen'; +$string['assigncreators'] = 'Kursersteller/in zuweisen'; +$string['assignstudents'] = 'Teilnehmer/in eintragen'; +$string['assignstudentsnote'] = 'Anmerkung: Es ist vielleicht nicht notwendig, diese Seite zu verwenden, da sich Kursteilnehmer/innen selbst in diesen Kurs einschreiben können.'; +$string['assignstudentspass'] = 'Sie brauchen den Teilnehmer/innen nur den Schlüssel dieses Kurses mitzuteilen. Er lautet gegenwärtig: \'$a\''; $string['assignteachers'] = 'Trainer/in zuweisen'; $string['authentication'] = 'Authentifizierung'; $string['autosubscribe'] = 'Automatische Anmeldung beim Forum'; @@ -100,29 +90,23 @@ $string['backup'] = 'Sicherung'; $string['backupcoursefileshelp'] = 'Wenn Sie diese Option aktivieren, werden die Kursdateien in die automatische Sicherung integriert.'; $string['backupdate'] = 'Sicherungsdatum'; $string['backupdetails'] = 'Sicherungsdetails'; -$string['backupfailed'] = 'Einige Kurse konnten nicht gesichert werden!'; $string['backupfilename'] = 'Sicherung'; $string['backupfinished'] = 'Sicherung erfolgreich abgeschlossen'; -$string['backupincludemoduleshelp'] = 'Wählen Sie, ob die Kursmodule mit oder ohne Nutzerdaten in die automatische Sicherung einbezogen werden sollen.'; -$string['backupkeephelp'] = 'Wieviele Sicherungsversionen von jedem Kurs wollen Sie aufbewahren? (ältere Sicherungen werden dann automatisch gelöscht)'; +$string['backupincludemoduleshelp'] = 'Wählen Sie, ob die Kursmodule mit oder ohne Nutzerdaten in die automatische Sicherung einbezogen werden sollen'; +$string['backupkeephelp'] = 'Wieviele Sicherungsstufen von jedem Kurs wollen Sie aufbewahren? (ältere Sicherungen werden dann automatisch gelöscht)'; $string['backuplogdetailed'] = 'Ausführliche Loginformationen'; $string['backuploglaststatus'] = 'Zuletzt erfolgte Logs'; $string['backuplogshelp'] = 'Die Log-Daten des Kurses werden in die automatische Sicherung integriert, wenn Sie diese Option aktivieren'; -$string['backupmetacoursehelp'] = 'Beim Aktivieren der Option werden Metakursinformationen (übernommene Teilnehmer/innen) in das automatische Backup übernommen.'; $string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['backupnoneusersinfo'] = 'Hinweis: Sie haben eine Sicherung \"ohne\" Teilnehmer/innen ausgewählt. Alle Module werden dadurch umgestellt auf \"ohne Nutzerdaten\". Beachten Sie bitte besonders, dass diese Einstellungen nicht mit den Modulen \"Übung\" und \"Workshop\" kompatibel ist. Diese Module werden daher nicht mit gesichert.'; +$string['backupnoneusersinfo'] = 'Hinweis: Sie haben eine Sicherung \"ohne\" Teilnehmer/inenn ausgewählt. Alle Module werden dadurch umgestellt auf \"ohne Nutzerdaten\". Beachten Sie bitte besonders, dass diese Einstellungen nicht mit den Modulen \"Übung\" und \"Workshop\" kompatibel ist. Diese Module werden daher nicht mit gesichert.'; $string['backuporiginalname'] = 'Name der Sicherung'; -$string['backupsavetohelp'] = 'Vollständiger Pfad in dem die Sicherungsdateien angelegt werden sollen
              (leer lassen, um sie im Standardverzeichnis des Kurses zu speichern)'; -$string['backuptakealook'] = 'Bitte prüfen Sie Ihre Backup-Log Aufzeichnungen in: $a'; +$string['backupsavetohelp'] = 'Vollständiger Pfad in dem die Sicherungsdateien angelegt werden sollen
              (leer lassen, um sie im Standardverzeichnis des Kurses zu speichern)'; $string['backupuserfileshelp'] = 'Wählen Sie, ob die Dateien der Teilnehmer/innen (z.B. die Bilder aus den Profilen) in die automatischen Sicherungen einbezogen werden sollen'; $string['backupusershelp'] = 'Wählen Sie, ob alle Nutzer/innen auf dem Server oder nur die Teilnehmer/innen von Kursen einbezogen werden sollen'; $string['backupversion'] = 'Sicherungsversion'; -$string['blockconfiga'] = 'Konfiguration Block $a'; -$string['blockconfigbad'] = 'Dieser Block wurde nicht richtig implementiert. Daher kann das Einstellungsmenu nicht angezeigt werden.'; -$string['blockdeleteconfirm'] = 'Sie wollen den Block $a vollständig löschen. Damit löschen Sie alle Datenbankeinträge, die mit diesem Block in Verbindung stehen. Wollen Sie diesen Vorgang wirklich fortsetzen?'; -$string['blockdeletefiles'] = 'Alle Daten, die mit \'$a->block\' verbunden sind, wurden in der Datenbank gelöscht. Um den Vorgang abzuschließen und sicherzustellen, dass keine Neuinstallation erfolgt, sollten Sie das Verzeichnis $a->directory auf dem Server löschen.'; +$string['blockdeleteconfirm'] = 'Sie wollen den Block $a volständig löschen. Damit löscehn Sie alel Datenbankeinträge, die mit diesm Block in Verbindung stehen.Wollen Sie diesen Vorgang wirklich fortsetzen?'; +$string['blockdeletefiles'] = 'Alle Daten, die mit \'$a->block\' verbunden sind, wurden in der Datenbank gelöscht. Um den Vorgang abzuschließen, und sicherzustellen, dass keine Neuinstallation erfolgt, sollten Sie das Verzeichnis $a->directory auf dem server löschen.'; $string['blocks'] = 'Blöcke'; -$string['blocksaddedit'] = 'Hinzufügen/Bearbeiten von Blöcken'; $string['blocksetup'] = 'Blocktabellen einrichten'; $string['blocksuccess'] = '$a Tabellen wurden richtig angelegt'; $string['bycourseorder'] = 'Sortiert nach Kursen'; @@ -133,162 +117,122 @@ $string['category'] = 'Bereiche'; $string['categoryadded'] = 'Die Kategorie \'$a\' wurde angelegt'; $string['categorydeleted'] = 'Die Kategorie \'$a\' wurde gelöscht'; $string['categoryduplicate'] = 'Eine Kategorie mit dem Namen \'$a\' existiert bereits!'; -$string['changedpassword'] = 'Kennwort geändert'; -$string['changepassword'] = 'Kennwort ändern'; +$string['changedpassword'] = 'Passwort geändert'; +$string['changepassword'] = 'Passwort ändern'; $string['changessaved'] = 'Änderungen gespeichert'; $string['checkingbackup'] = 'Überprüfe Sicherung'; $string['checkingcourse'] = 'Überprüfe Kurs'; $string['checkinginstances'] = 'Überprüfe Instanzen'; $string['checkingsections'] = 'Überprüfe Abschnitte'; $string['checklanguage'] = 'Sprache prüfen'; -$string['childcoursenotfound'] = 'Child-Kurs nicht gefunden'; $string['choose'] = 'Auswahl'; $string['choosecourse'] = 'Kurs auswählen'; -$string['chooseenrolmethod'] = 'Bevorzugtes Anmeldeverfahren'; $string['chooselivelogs'] = 'Oder momentane Aktivität beobachten'; $string['chooselogs'] = 'Wählen Sie die anzuzeigende Statistik aus'; $string['choosereportfilter'] = 'Wählen Sie einen Filter für den Bericht'; $string['choosetheme'] = 'Thema auswählen'; -$string['chooseuser'] = 'Nutzer/innen auswählen'; +$string['chooseuser'] = 'Nutzer auswählen'; $string['city'] = 'Stadt/Ort'; -$string['clambroken'] = 'Warnung! Die Virenüberprüfung für hochgeladene Dateien wurde vom Administrator aktiviert. Dabei ist ein Fehler aufgetreten. Der Upload Ihrer Datei war daher nicht erfolgreich. Der Administrator wurde per E-Mail benachrichtigt und gebeten den Fehler zu überprüfen. Versuchen Sie den Upload später noch einmal.'; -$string['clamdeletedfile'] = 'Die Datei wurde gelöscht'; -$string['clamdeletedfilefailed'] = 'Die Datei konnte nicht gelöscht werden.'; -$string['clamemailsubject'] = '$a:: Clam AV Benachrichtigung'; -$string['clamfailed'] = 'Bei Clam AV ist ein Fehler aufgetreten. Die Fehlerbezeichnung lautet: $a. Die Nachricht von Clam lautet: '; -$string['clamlost'] = 'Für moodle wurde Clam beim Dateienupload aktiviert. Der eingetragene Pfad zu Clam AV $a, ist jedoch ungültig.'; -$string['clamlostandactinglikevirus'] = 'moodle wurde so konfiguriert, dass beim Auftreten von Fehlern durch Clam, jede Datei, die hochgeladen wird, als Virus behandelt wird. Das bedeutet: niemand kann Dateien hochladen, bis Sie den Fehler korrigiert haben!'; -$string['clammovedfile'] = 'Die Datei wurde in das Quarantäne-Verzeichnis verschoben. Sie finden die Datei hier: $a'; -$string['clammovedfilebasic'] = 'Die Datei wurde in das Quarantäne-Verzeichnis verschoben.'; -$string['clamquarantinedirfailed'] = 'Die Datei konnte nicht in das Quarantäne-Verzeichnis $a verschoben werden. Sie müssen den Fehler überprüfen, da solange alle Dateien, die als infiziert erkannt und gelöscht werden.'; -$string['clamunknownerror'] = 'Es gibt einen unbekannten Fehler mit Clam'; $string['cleaningtempdata'] = 'Lösche temporäre Dateien'; $string['clicktochange'] = 'Klicken um zu ändern'; $string['closewindow'] = 'Dieses Fenster schließen'; $string['comparelanguage'] = 'Sprache vergleichen und bearbeiten'; -$string['complete'] = 'Details'; +$string['complete'] = 'Fertig'; $string['configallowunenroll'] = 'Wenn Sie \'Ja\' wählen, haben Teilnehmer/innen die Möglichkeit, sich jederzeit selbst aus ihren Kursen auszutragen; andernfalls liegt das allein in der Hand der Kursleiter/innen oder Administrator/innen.'; -$string['configallusersaresitestudents'] = 'Einstellung für Lernaktivitäten auf der Startseite: Wenn Sie \'Ja\' auswählen können alle Personen, die als Nutzer registriert wurden, die Lernaktivitäten ausführen. Wenn Sie \'Nein\' auswählen, können nur Nutzer, die aktuell auch in einem Kurs registriert sind, die Aktivitäten nutzen. Nur Administratoren und speziell eingetragene Trainer/innen können die Aktivitäten auf der Startseite wie Trainer/innen bearbeiten.'; -$string['configautologinguests'] = 'Sollen Gäste automatisch eingeloggt werden, wenn der Kurs den Zugang für Gäste erlaubt?'; $string['configcachetext'] = 'Diese Einstellung kann größere Sites (oder bei Verwendung von Textfiltern) erheblich beschleunigen. Textkopien werden in ihrer verarbeiteten Fassung für die festgelegte Zeit vorgehalten. Eine zu niedrige Einstellung kann sogar zu einer leichten Verlangsamung führen, bei einer zu hohen Einstellung kann die Aktualisierung der Texte (z.B. mit neuen Links) allerdings zu lange brauchen.'; -$string['configclamactlikevirus'] = 'Behandle Dateien als mit Viren befallen.'; -$string['configclamdonothing'] = 'Behandle Dateien als OK'; -$string['configclamfailureonupload'] = 'Fehlerbehandlung wenn Clam konfiguriert wurde: Was soll passieren wenn ein Konfigurationsproblem aufgetaucht ist oder ein unbekannter Fehler auftrat? Wenn Sie die Option \"Behandle Dateien als mit Viren befallen\" auswählen, wird die Datei in das Quarantäne-Verzeichnis verschoben oder gelöscht. Wenn Sie die Option \"Behandle Dateien als OK\" auswählen, wird die Datei normal hochgeladen. In jedem Fall wird der Administrator benachrichtigt, dass ein Problem vorliegt. Wenn Sie die Option \"Behandle Dateien als mit Viren befallen\" auswählen und es treten aus irgendeinem Grunde Fehler auf, dann werden ALLE Dateien in das Quarantäne-Verzeichnis verschoben oder gelöscht. Gehen Sie mit dieser Einstellung vorsichtig um.'; -$string['configcountry'] = 'Das hier eingestellte Land wird Land als Vorgabe für neue Zugänge gewählt. Wenn die Nutzer/innen ein Land aktiv wählen sollen, lassen Sie das Feld einfach leer.'; -$string['configdbsessions'] = 'Bei Aktivierung nutzt dies Einstellung die Datenbank, um Sitzungsinformationen abzulegen. Dies ist besonders nützlich für große oder stark genutzte Seite oder wenn Server-Cluster genutzt werden. Bei den meisten Installationen kann diese Einstellung abgeschaltet bleiben. Dann wird die Festplatte des Servers statt dessen genutzt. Achtung: wenn Sie die Einstellung verändern, werden alle Nutzer sofort ausgeloggt (auch Administratoren).'; +$string['configcountry'] = 'Wenn Sie hier ein Land einstellen, wird dieses Land als Vorgabe für neue Zugänge gewählt. Wenn die Nutzer/innen ein Land aktiv wählen sollen, lassen Sie das Feld einfach leer.'; $string['configdebug'] = 'Wenn Sie dies einschalten, werden die Fehlermeldungen von PHP erweitert, so dass mehr Warnungen ausgegeben werden. Dies ist nur nützlich für Entwickler.'; $string['configdeleteunconfirmed'] = 'Wenn Sie die Authentifikation per E-Mail verwenden, geben Sie hier den Zeitraum an, innerhalb dessen die Nutzer ihre Registrierung bestätigen müssen. Unbestätigte Zugänge verfallen danach und werden gelöscht.'; -$string['configdigestmailtime'] = 'Personen, die E-Mails als Digest (Zusammenfassung) eingerichtet haben, erhalten diese Zusammenfassung einmal täglich. Mit dieser Einstellung legen Sie fest zu welchem Zeitpunkt. Beim darauf folgenden Cron-Aufruf werden die Zusammenfassungen mit versandt.'; -$string['configdisplayloginfailures'] = 'Anzeige von Informationen über frühere gescheiterte Logins der ausgewählten Nutzer.'; $string['configenablerssfeeds'] = 'Diese Einstellung aktiviert RSS-Feeds für die gesamte Seite. Es ist zusätzlich erforderlich, RSS-Feeds in den einzelnen Modulen zu aktivieren. Gehen Sie dazu zu den Modul-Einstellungen in der Administration.'; -$string['configenablerssfeedsdisabled'] = 'Diese Option ist nicht verfügbar, weil die RSS-Feeds für alle Seiten deaktiviert sind. Um diese zu aktivieren, gehen Sie zu den Variablen in der Administration'; +$string['configenablerssfeedsdisabled'] = 'Diese Option ist nicht verfügbar, weil die RSS-Ffeds für alle Seiten deaktiviert sind. Um diese zu aktivieren, gehen sie zu den Variablen in der Administration'; $string['configerrorlevel'] = 'Wählen Sie die Menge der PHP Warnungen, die Sie angezeigt bekommen möchten. \'Normal\' ist meist eine gute Wahl.'; $string['configextendedusernamechars'] = 'Aktivieren Sie diese Einstellung, damit jedes Zeichen im Nutzernamen zulässig ist (Dies beeinflusst bereits vorhandene Namen nicht). In der Grundeinstellung sind nur alphanumerische Zeichen zulässig.'; $string['configfilteruploadedfiles'] = 'Beim Aktivieren dieser Option werden alle hochgeladenen HTML- und Textdateien über den Filter bearbeitet bevor sie angezeigt werden.'; -$string['configforcelogin'] = 'Normalerweise können die Startseite und die Kursübersicht (nicht jedoch die Kurse) eingesehen werden, ohne sich einzuloggen. Aktivieren Sie diese Option, wenn ein Login zwingend sein soll, um IRGENDETWAS auf dieser Site ausführen zu können.'; -$string['configforceloginforprofiles'] = 'Wenn Sie diese Einstellung aktivieren, müssen Teilnehmer/innen sich erst anmelden, um die Profile der Trainer/innen einsehen zu können. In der Grundeinstellung (\'Nein\') können die Teilnehmer/innen sich vor der Anmeldung zum Kurs über die Trainer/innen informieren. Zugleich können auch Suchmaschinen auf diese Profile zugreifen.'; +$string['configforcelogin'] = 'Normalerweise können die Startseite und die Kursübersicht (nicht jedoch die Kurse) eingesehen werden ohne sich einzuloggen. Aktivieren Sie diese Option, wenn ein Login zwingend sein soll, um IRGENDETWAS auf dieser Site ausführen zu können.'; +$string['configforceloginforprofiles'] = 'Wenn Sie diese Einstellung aktivieren, müssen Teilnehmer/inenn sich erst anmelden, um die Profile der Trainer/innen einsehen zu können. In der Grundeinstellung (\'Nein\') können die Teilnehmer/innen sich vor der AnmeldungzumKurs über die Trainer/inenn informieren. Zugleich können auch Suchmaschinen auf diese Profile zugreifen.'; $string['configframename'] = 'Sofern Sie Moodle innerhalb eines Frames einbinden, tragen Sie hier den Namen des Frames ein. Anderenfalls sollte dieser Wert auf \'_top\' stehen.'; $string['configfullnamedisplay'] = 'Hier können Sie festlegen, wie Namen in Ihrer Vollform angezeigt werden. In den meisten Fällen wird die Grundeinstellung \"Vorname + Nachname\" geeignet sein. Sie können jedoch auch die Nachnamen ausblenden, ganz nach Ihren Konventionen.'; $string['configgdversion'] = 'Zeigt Ihnen die installierte Version von GD an. Die angezeigte Version wurde automatisch ermittelt. Ändern Sie diese nicht, es sei denn Sie wissen wirklich, was Sie tun. '; $string['confightmleditor'] = 'Wählen Sie aus, ob Sie die Verwendung des Text-Editors prinzipiell zulassen möchten. Der Editor ist allerdings auf kompatible Browser angewiesen; sonst bleibt er unsichtbar. Die Nutzer können die Verwendung auch individuell ablehnen.'; $string['configidnumber'] = 'Diese Option legt fest, ob (a) Nutzer nicht nach einer ID Nummer gefragt werden, (b) Nutzer zwar nach einer ID Nummer gefragt werden, das Feld aber leer lassen können oder (c) Nutzer nach einer ID Nummer gefragt werden und dieses Feld nicht leer lassen können. Die ID Nummer des Nutzers wird in seinem Profil angezeigt.'; -$string['configintro'] = 'Auf dieser Seite können Sie eine Anzahl von Konfigurations-Variablen spezifizieren, die Ihnen helfen, dass Moodle auf Ihrem Server zuverlässig arbeitet. Sorgen Sie sich nicht grossartig. Die Standard-Einstellungen funktionieren normalerweise sehr gut. Sie können jederzeit auf diese Seite zurückkommen und Einstellungen ändern.'; -$string['configintroadmin'] = 'Auf dieser Seite sollten Sie den/die Hauptadminstrator/in einrichten, der/die die vollständige Kontrolle über die Site hat. Achten Sie darauf, hier einen sicheren Anmeldenamen samt Kennwort sowie eine gültige E-Mail-Adresse anzugeben. Weitere Administrator/innen können Sie später festlegen.'; +$string['configintro'] = 'Auf dieser Seite können Sie eine Anzahl von Konfigurations-Variablen spezifizieren, die Ihnen helfen, dass Moodle auf Ihrem Server zuverlässig arbeitet. Sorgen Sie sich nicht grossartig - die Standard-Einstellungen funktionieren normalerweise sehr gut.S ie können jederzeit auf diese Seite zurückkommen und Einstellungen ändern.'; +$string['configintroadmin'] = 'Auf dieser Seite sollten Sie den/die Hauptadminstrator/in einrichten, der/die die vollständige Kontrolle über die Site hat. Achten Sie darauf, hier einen sicheren Benutzernamen samt Passwort sowie eine gültige E-Mail-Adresse anzugeben. Weitere Administrator/innen können Sie später festlegen.'; $string['configintrosite'] = 'Diese Seite erlaubt es Ihnen, die Startseite und den Namen der neuen Site einzurichten. Sie können später über die Startseite (Konfiguration > Seiteneinstellungen) hierher zurückkehren und die Einstellungen jederzeit bearbeiten.'; $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['configlanglist'] = 'Lassen Sie dieses Feld leer, um allen Nutzern zu erlauben, aus jeder installierten Sprache auszuwählen. Sie können ebenso das Sprachmenü verkürzen, indem Sie eine durch Kommas getrennte Liste der Spachcodes angeben, die Sie für die Auswahl möchten. Zum Beispiel en, es_es, fr, it.'; -$string['configlangmenu'] = 'Wählen Sie aus, ob Sie generell das Sprach-Auswahlmenü auf Ihrer Startseite angezeigt haben möchten, auf der Anmeldeseite etc. Dies betrifft nicht die Möglichkeit des Nutzers, seine bevorzugte Sprache in seinem Profil einzustellen.'; +$string['configlangmenu'] = 'Wählen Sie aus, ob Sie generell das Sprach-Auswahlmenü auf Ihrer Startseite angezeigt haben möchten, auf der Anmeldungsseite etc. Dies betrifft nicht die Möglichkeit des Nutzers, seine bevorzugte Sprache in seinem Profil einzustellen.'; $string['configlocale'] = 'Wählen Sie eine für die gesamte Seite gültige Region (Zeitzone) - diese wird die Anzeige jedes Datums beeinflussen. Sie müssen die Daten dieser Region auf Ihrem Betriebssystem installiert haben. Sofern Sie nicht wissen, was Sie auswählen sollen, lassen Sie dieses Feld leer.'; -$string['configloginhttps'] = 'Mit der Aktivierung der Option nutzt moodle eine sichere https-Verbindung für das Login und kehrt danach zu einer normalen hhtp Verbindung zurück. ACHTUNG: die Einstellung erfordert die Aktvierung von https auf dem Server. Wenn dies nicht erfolgt, können Sie selber nicht mehr auf Ihre moodle Seite zugreifen.'; -$string['configloglifetime'] = 'Diese Einstellung definiert die Zeitdauer, für die die Statistiken der Nutzer-Aktivitäten gespeichert werden. Ältere Statistiken werden automatisch gelöscht. Speichern Sie diese Daten nur so lange, wie sie unbedingt benötigt werden. Wenn Sie einen ausgelasteten Server haben und Geschwindigkeitseinbrüche feststellen, sollten Sie den Statistik-Zeitraum reduzieren.'; +$string['configloglifetime'] = 'Dies definiert die Zeitdauer, für die die Statistiken der Nutzer-Aktivitäten gespeichert werden. Ältere Statistiken werden automatisch gelöscht. Speichern Sie diese Daten nur so lange, wie sie unbedingt benötigt werden. Wenn Sie einen ausgelasteten Server haben und Geschwindigkeitseinbrüche feststellen, sollten Sie den Statistik-Zeitraum reduzieren.'; $string['configlongtimenosee'] = 'Wenn sich Teilnehmer/innen nach einer sehr langen Zeit nicht mehr angemeldet haben, werden Sie automatisch nach dieser Zeit aus dem Kurs ausgetragen.'; $string['configmaxbytes'] = 'Dieser Wert legt für die gesamte Site die maximale Größe für das Hochladen von Dateien fest. Der Eintrag wird begrenzt durch die PHP-Einstellung \'upload_max_filesize\' und die Apache-Einstellung \'LimitRequestBody\'. Diese Rahmeneinstellung begrenzt also auch die maximal wählbare Größe auf Kurs- oder Modulebene.'; $string['configmaxeditingtime'] = 'Hier bestimmen Sie die Zeitspanne, in der die Teilnehmer/innen die Foren-Beiträge, Journal-Antworten usw. erneut bearbeiten dürfen. Normalerweise sind 30 Minuten ein guter Wert. '; -$string['configmessaging'] = 'Sollen das Messaging unter Teilnehmer/innen aktiviert werden?'; -$string['confignoreplyaddress'] = 'Tragen Sie hier die E-Mail-Adresse ein, die als Absender beim Versand von Nachrichten (z.B. aus Foren) genutzt werden soll, wenn die E-Mailadresse des Trainers nicht für Rückantworten genutzt werden kann.'; -$string['confignotifyloginfailures'] = 'E-Mail Benachrichtigungen können versandt werden, wenn Login-Fehler aufgezeichnet wurden. Wer sollte die Nachrichten sehen?'; -$string['confignotifyloginthreshold'] = 'Nach wie vielen gescheiterten Anmeldeversuchen soll eine Benachrichtigung erfolgen (nur wenn diese auch aufgezeichnet werden)?'; $string['configopentogoogle'] = 'Wenn Sie diese Option aktivieren, wird Google erlaubt, Ihre Seite als Gast zu besuchen. Außerdem werden Besucher, die über einen Link von Google kommen, automatisch als \'Gäste\' eingeloggt. Dies gilt natürlich nur für Kurse, die Gäste (ohne Schlüssel) zulassen.'; -$string['configpathtoclam'] = 'Pfad zu CLAM AV. Meist /usr/bin/clamscan oder /usr/bin/clamdscan. Die Eingabe ist notwendig, damit Clam AV genutzt werden kann.'; -$string['configproxyhost'] = 'Wenn dieser Server 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['configquarantinedir'] = 'Wenn Clam AV infizierte Dateien in ein Quarantäne-Verzeichnis verschieben soll, geben sie es hier an. Das Verzeichnis auf dem Server muß eine Schreibfreigabe erhalten. Wenn das Feld leer bleibt, ein nicht bestehendes, nicht beschreibbares oder falsches Verzeichnis angegeben wird, werden infizierte Dateien gelöscht. Geben Sie keinen abschließenden Slash ein.'; -$string['configrunclamonupload'] = 'Soll Clam AV zur Virenprüfung bei hochgeladenen Dateien genutzt werden? Geben Sie dazu einen korrekten Pfad in pathtoclam ein. (Clam AV ist ein freier Virenscanner. http://www.clamav.net)'; +$string['configproxyhost'] = 'Wenn dieser Server 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['configsecureforms'] = 'Moodle kann einen zusätzlichen Grad an Sicherheit verwenden, wenn es Daten von Web-Formularen erhält. Sofern dies eingeschaltet ist, dann wird die Variable HTTP_REFERER gegen die Adresse des aktuellen Formulars geprüft. In einigen wenigen Fällen kann das Probleme verursachen, wenn der Nutzer eine Firewall benutzt (z.B. Zonealarm), die so konfiguriert ist, das der HTTP_REFERER nicht mitgesendet wird. -Das Ergebnis ist, dass Sie bei einem Formular nicht weiter kommen. +Das Ergebnis ist, dass Sie bei einem Formular nicht weiterkommen. Sofern Nutzer z.B. Probleme mit der Zugangsseite haben, sollten Sie diese Einstellung deaktivieren, so ist Ihre Seite allerdings offener für Brute-Force-Attacken. Im Zweifelsfall, belassen Sie es auf \'ja\'.'; -$string['configsessioncookie'] = 'Diese Einstellung legt den Namen des Cookies, der für Moodle Zugriffe benutzt wird fest. Dieser Eintrag ist optional und nur sinnvoll, um zu verhindern dass mehrere Cookies sich überlagern. Dies kann der Fall sein, wenn mehrere Moodle-Systeme auf der gleichen Webseite installiert sind. '; +$string['configsessioncookie'] = 'Diese Einstellung legt den Namen des Cookies, der für Moodle Zugriffe benutzt wird fest. Dieser Eintrag ist optional und nur sinnvoll, um zu verhindern das mehrere Cookies sich überlagern. Dies kann der Fall sein, wenn mehrere Moodle-Systeme auf der gleichen Webseite installiert sind. '; $string['configsessiontimeout'] = 'Wenn eingeloggte Benutzer länger keine Aktionen ausführen (Seiten laden), werden sie automatisch ausgeloggt. Diese Variable legt die betreffende Zeitspanne fest.'; -$string['configshowsiteparticipantslist'] = 'Alle Teilnehmer/innen und Trainer/innen werden auf der Teilnehmer/innenliste angezeigt. Wer soll diese Liste ansehen dürfen?'; -$string['configsitepolicy'] = 'Sie können eine Seite mit Nutzungsbedigungen (policy) anlegen, die alle Teilnehmer/innen einsehen und bestätigen müssen, bevor sie die Kurse nutzen können. Tragen Sie hier die URL-Adresse für diese Seite ein oder lassen Sie die Seite leer. Die Seite kann als HTML-Seite überall abgelegt sein. Eine Möglichkeit ist innerhalb der Startseite z.B. http://yoursite.de/file.php/1/policy.html'; -$string['configslasharguments'] = 'Dateien (Bilder, Dokumente usw.) können über ein Skript, das \'Slash-Argumente\' benutzt (zweite Option hier) einfacher in Internet-Browsern, Proxy-Servern usw. zwischengespeichert werden. +$string['configslasharguments'] = 'Dateien (Bilder, Dokumente usw.) können über ein Skript, das \'Slash-Argumente\' benutzt (zweite Option) einfacher in Internet-Browsern, Proxy-Servern usw. zwischengespeichert 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 E-Mail-Versand benutzen soll (beispielsweise \'E-Mail.a.de\' oder \'E-Mail.a.de;E-Mail.b.de\'). Wenn Sie dieses frei lassen, wird Moodle die Standard-Methode von PHP zum Senden von E-Mails verwenden.'; -$string['configsmtpuser'] = 'Sofern Sie einen SMTP-Server angegeben haben und der Server Zugangsdaten erfordert, dann geben Sie hier Anmeldenamen und Kennwort an.'; -$string['configteacherassignteachers'] = 'Sollen Trainer/innen ihren Kursen selbst weitere Kolleg/innen zuordnen können=? Falls \'Nein\', können nur die/der Kursverwalter/in und Administrator/innen den Kursen Trainer/innen zuordnen.'; +$string['configsmtpuser'] = 'Sofern Sie einen SMTP-Server angegeben haben und der Server Zugangsdaten erfordert, dann geben Sie hier Benutzernamen und Passwort an.'; +$string['configteacherassignteachers'] = 'Sollen Trainer/innen ihren Kursen selbst weitere Kolleg/innen zuordnen können=? Falls \'Nein\', können nur der Kursersteller und Administrator/innen den Kursen Trainer/innen zuordnen.'; $string['configtimezone'] = 'Stellen Sie hier die bevorzugte Zeitzone ein. Sie steuert die Zeitanzeige in Ihren Kursen. Jeder Teilnehmer kann selbst in seinem Profil eine eigene Zeitzone einstellen und damit Ihre Voreinstellung für sich aufheben. Die Einstellung \"Serverzeit\" verwendet hier die Zeiteinstellung Ihres Internetservers. Die Einstellung \"Serverzeit\" im Nutzerprofil hingegen greift auf die Einstellung Ihres Moodleprogramms an dieser Stelle zurück.'; $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['configuration'] = 'Konfiguration'; $string['configvariables'] = 'Variablen konfigurieren'; -$string['configwarning'] = 'Vorsicht bei der Veränderung dieser Einstellungen. Ungeeignete Werte können zu Problemen führen.'; +$string['configwarning'] = 'Vorsicht bei der Veränderung dieser Einstellungen, ungeeignete Werte können zu Problemen führen.'; $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['confirm'] = 'Bestätigen'; $string['confirmed'] = 'Ihre Registrierung wurde bestätigt'; $string['confirmednot'] = 'Ihre Registrierung wurde noch nicht bestätigt!'; $string['continue'] = 'Weiter'; -$string['continuetocourse'] = 'Klicken Sie hier, um den Kurs zu betreten'; $string['cookiesenabled'] = 'Cookies müssen in Ihrem Browser eingeschaltet sein'; -$string['cookiesnotenabled'] = 'Cookies sind derzeit von Ihrem Browser nicht zugelassen.'; $string['copy'] = 'Kopiere'; $string['copyingcoursefiles'] = 'Kopiere Kursdateien'; $string['copyinguserfiles'] = 'Kopiere Benutzerdateien'; $string['copyingzipfile'] = 'Kopiere zip-Datei'; $string['copyrightnotice'] = 'Urheberrechtshinweis'; -$string['cost'] = 'Kosten'; -$string['costdefault'] = 'Festgelegte Kosten'; $string['country'] = 'Land'; $string['course'] = 'Kurs'; -$string['courseavailable'] = 'Dieser Kurs ist für Kursteilnehmer/innen verfügbar'; -$string['courseavailablenot'] = 'Dieser Kurs ist nicht für Kursteilnehmer/innen verfügbar'; +$string['courseavailable'] = 'Dieser Kurs ist für Kursteilnehmer verfügbar'; +$string['courseavailablenot'] = 'Dieser Kurs ist nicht für Kursteilnehmer verfügbar'; $string['coursebackup'] = 'Kurssicherung'; $string['coursecategories'] = 'Kurskategorien'; $string['coursecategory'] = 'Kurskategorie'; -$string['coursecreators'] = 'Kursverwalter/innen'; +$string['coursecreators'] = 'Kursersteller/in'; $string['coursefiles'] = 'Kursdateien'; $string['courseformats'] = 'Kurs-Format'; $string['coursegrades'] = 'Kursbenotung'; $string['courseinfo'] = 'Kurs-Information'; $string['courserestore'] = 'Kurs-Rücksetzung'; $string['courses'] = 'Kurse'; -$string['coursescategory'] = 'Kurse der gleichen Kategorie'; -$string['coursestaught'] = 'Kurse, die ich unterrichte'; $string['courseupdates'] = 'Kurse aktuell'; $string['courseuploadlimit'] = 'Maximale Größe der Dateien für den Upload'; $string['create'] = 'Erstelle'; $string['createaccount'] = 'Meinen neuen Zugang einrichten'; $string['createfolder'] = 'Erstelle einen Ordner in $a'; -$string['createuserandpass'] = 'Gewünschter Anmeldename und Kennwort für das Login'; +$string['createuserandpass'] = 'Gewünschter Benutzername und Passwort für das Login'; $string['createziparchive'] = 'ZIP-Archiv erstellen'; -$string['creatingblocks'] = 'Blöcke erstellen'; $string['creatingcategoriesandquestions'] = 'Erstelle Kategorien und Fragen'; $string['creatingcoursemodules'] = 'Erstelle Kurs-Module'; $string['creatingevents'] = 'Termine erstellen'; $string['creatinggroups'] = 'Gruppen einrichten'; $string['creatinglogentries'] = 'Erstelle Log-Einträge'; -$string['creatingmetacoursedata'] = 'Metakursinformationen erstellen'; $string['creatingnewcourse'] = 'Erstelle neuen Kurs'; $string['creatingscales'] = 'Erstelle Skalen'; $string['creatingsections'] = 'Erstelle Abschnitte'; $string['creatingtemporarystructures'] = 'Erstelle vorübergehende Strukturen'; $string['creatingusers'] = 'Erstelle Nutzer'; $string['creatingxmlfile'] = 'Erstelle XML-Datei'; -$string['currency'] = 'Währung'; $string['currentcourseadding'] = 'Aktueller Kurs, Daten hinzufügen'; $string['currentcoursedeleting'] = 'Aktueller Kurs, zunächst löschen'; $string['currentlanguage'] = 'Aktuelle Sprache'; -$string['currentlocaltime'] = 'die aktuelle lokale Zeit'; +$string['currentlocaltime'] = 'die lokale Zeit'; $string['currentpicture'] = 'Derzeitiges Bild'; $string['currentrelease'] = 'Letze Veröffentlichungsinformation'; $string['currentversion'] = 'Letzte Version'; @@ -299,7 +243,6 @@ $string['databasesuccess'] = 'Datenbank wurde erfolgreich aktualisiert'; $string['databaseupgradebackups'] = 'Backupversion ist jetzt $a'; $string['databaseupgradeblocks'] = 'Blockversion ist jetzt $a'; $string['databaseupgrades'] = 'Aktualisiere Datenbank'; -$string['date'] = 'Datum'; $string['datemostrecentfirst'] = 'Daten - jüngste zuerst'; $string['datemostrecentlast'] = 'Daten - älteste zuerst'; $string['day'] = 'Tag'; @@ -318,14 +261,13 @@ $string['defaultcourseteacher'] = 'Trainer/in'; $string['defaultcourseteachers'] = 'Trainer/innen'; $string['delete'] = 'Löschen'; $string['deleteall'] = 'Alles löschen'; -$string['deletecategorycheck'] = 'Sind Sie sich wirklich sicher, dass Sie diese Kategorie $a löschen wollen? Damit werden alle enthaltenen Kurse in die davor liegende Kategorie verschoben oder in die Kategorie Verschiedenes.'; $string['deletecheck'] = '$a löschen?'; $string['deletecheckfiles'] = 'Sind Sie sich wirklich sicher, dass Sie diese Dateien löschen möchten?'; $string['deletecheckfull'] = 'Sind Sie sich wirklich sicher, dass Sie $a löschen wollen?'; $string['deletecheckwarning'] = 'Sie sind dabei, diese Dateien zu löschen'; $string['deletecompletely'] = 'Vollständig löschen'; $string['deletecourse'] = 'Einen Kurs löschen'; -$string['deletecoursecheck'] = 'Sind Sie sich wirklich sicher, dass Sie diesen Kurs und alle dazugehörenden Daten löschen wollen?'; +$string['deletecoursecheck'] = 'Sind Sie sich wirklich sicher, dass sie diesen Kurs und alle dazugehörenden Daten löschen wollen?'; $string['deleted'] = 'Gelöscht'; $string['deletedactivity'] = '$a gelöscht'; $string['deletedcourse'] = '$a wurde erfolgreich gelöscht'; @@ -335,15 +277,12 @@ $string['deletingcourse'] = 'L $string['deletingexistingcoursedata'] = 'Lösche vorhandene Kursdaten'; $string['deletingolddata'] = 'Lösche alte Daten'; $string['department'] = 'Abteilung'; -$string['description'] = 'Zusammenfassung'; -$string['detailedless'] = 'Weniger detailliert'; -$string['detailedmore'] = 'Mehr Details'; -$string['directorypaths'] = 'Verzeichnispfade'; +$string['description'] = 'Beschreibung'; $string['disable'] = 'Abschalten'; $string['displayingfirst'] = 'Nur die ersten $a->count $a->things werden angezeigt'; $string['displayingrecords'] = 'Zeige $a Einträge'; $string['displayingusers'] = 'Benutzer anzeigen von $a->start bis $a->end'; -$string['documentation'] = 'Moodle Basisdokumentation'; +$string['documentation'] = 'Moodle Dokumentation'; $string['donotask'] = 'Fragen Sie nicht'; $string['down'] = 'Abwärts'; $string['downloadexcel'] = 'Im Excel-Format herunterladen'; @@ -352,38 +291,21 @@ $string['doyouagree'] = 'Haben Sie diese Bedingungen gelesen und verstanden?'; $string['duplicate'] = 'Kopieren'; $string['duplicatinga'] = 'Kopie von $a'; $string['duplicatingain'] = 'Kopie von $a->what nach $a->in'; -$string['edhelpbgcolor'] = 'Hintergrundfarbe im Bearbeitungsfeld des Editors festlegen.
              Gültige Werte sind z.B. #ffffff oder white'; -$string['edhelpcleanword'] = 'Die Einstellung (de-)aktiviert Word spezifische Formatfilter.'; -$string['edhelpenablespelling'] = '(De-)Aktivierung der Rechtschreibprüfung (nur Englisch). Wenn die Rechtschreibprüfung aktiviert wird, muss aspell auf dem Server installiert sein.'; -$string['edhelpfontfamily'] = 'Die Schriftfamilien-Eigenschaften sind eine Liste von Schriftarten-Namen und ähnlicher Schriftfamilien. Schriftfamilienbezeichnungen müssen durch ein Komma voneinander getrennt werden.'; -$string['edhelpfontlist'] = 'Festlegung der Schriften, die im Editor-Dropdown-Menu angezeigt werden.'; -$string['edhelpfontsize'] = 'Eingestellte Schriftgrößen
              Gültige Werte sind z.B.: medium, large, smaller, larger, 10pt, 11px.'; $string['edit'] = 'Bearbeite $a'; $string['editcoursesettings'] = 'Kurseinstellungen bearbeiten'; $string['editfiles'] = 'Dateien bearbeiten'; $string['editgroupprofile'] = 'Bearbeiten Sie die Gruppenprofile'; $string['editinga'] = 'Bearbeite $a'; -$string['editingteachershort'] = 'Editor'; -$string['editlock'] = 'Dieser Wert kann nicht bearbeitet werden!'; $string['editmyprofile'] = 'Profil bearbeiten'; -$string['editorbgcolor'] = 'Hintergrundfarbe'; -$string['editorcleanonpaste'] = 'Word-Texte beim Einfügen in sauberes HTML umwandeln'; -$string['editorcommonsettings'] = 'Zusammengesetzte Einträge'; -$string['editordefaultfont'] = 'Eingestellte Schrift'; -$string['editorenablespelling'] = 'Rechtschreibprüfung deaktivieren'; -$string['editorfontlist'] = 'Schriftenliste'; -$string['editorfontsize'] = 'Eingestellte Schriftgröße'; -$string['editorresettodefaults'] = 'Zurückstellen der Grundeinstellungen'; -$string['editorsettings'] = 'Einstellungen für den Editor'; $string['editsummary'] = 'Zusammenfassung bearbeiten'; $string['editthisactivity'] = 'Diese Aktivität bearbeiten'; $string['editthiscategory'] = 'Diese Kategorie bearbeiten'; $string['edituser'] = 'Nutzer-Zugang bearbeiten'; $string['email'] = 'E-Mail-Adresse'; -$string['emailactive'] = 'E-Mail aktiviert'; -$string['emailagain'] = 'E-Mail (wiederholen)'; +$string['emailagain'] = 'Email (wiederholen)'; $string['emailconfirm'] = 'Bestätigen Sie Ihren Zugang'; -$string['emailconfirmation'] = 'Guten Tag $a->firstname $a->lastname,

              +$string['emailconfirmation'] = 'Guten Tag $a->firstname $a->lastname, + unter Verwendung Ihrer E-Mail-Adresse ist ein neuer Zugang zum Lernmanagementsystem angemeldet worden. Bitte bestätigen Sie die Anmeldung über den folgenden Link: $a->link @@ -391,8 +313,8 @@ unter Verwendung Ihrer E-Mail-Adresse ist ein neuer Zugang zum Lernmanagementsys In den meisten E-Mail-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 -Browser-Fensters.
              -Nach Ablauf einer Woche wird der vorbereitete Zugang wieder gelöscht, wenn Sie ihn nicht bestätigen sollten; Sie müssten sich dann nochmal neu registrieren. Sollte die Anmeldung nicht von Ihnen stammen, können Sie diese Mail ignorieren.

              +Browser-Fensters.
              +Nach Ablauf einer Woche wird der vorbereitete Zugang wieder gelöscht, wenn Sie ihn nicht bestätigen sollten; Sie müssten sich dann nochmal neu registrieren. Sollte die Anmeldung nicht von Ihnen stammen, können Sie diese Mail ignorieren.

              Viel Erfolg! Grüße von der \'$a->sitename\'-Verwaltung, $a->admin'; @@ -400,23 +322,15 @@ $string['emailconfirmationsubject'] = '$a: Zugangsbest $string['emailconfirmsent'] = '

              Um sicherzugehen, dass sich nicht jemand unberechtigt über Ihre E-Mail anmeldet, wird eine automatische Benachrichtigung an die angegebene Adresse $a geschickt. Je nach Netzlast trifft sie sofort oder auch etwas später bei Ihnen ein.

              Die Benachrichtigung enthält einen Link, mit dem Sie Ihre Anmeldung innerhalb einer Woche bestätigen sollten (andernfalls müssten Sie sich nochmal neu anmelden). Danach sind Sie registriert und können sofort loslegen.

              Bei eventuellen Problemen kontaktieren Sie bitte den Verwalter dieser Seite.'; -$string['emaildigest'] = 'E-Mail Zusammenfassung (Digest)'; -$string['emaildigestcomplete'] = 'Vollständig (tägliche E-Mail mit allen Beiträgen)'; -$string['emaildigestoff'] = 'Keine Zusammenfassung (jeden Beitrag einzeln als E-Mail)'; -$string['emaildigestsubjects'] = 'Überschriften (tägliche E-Mail nur mit Überschriften)'; $string['emaildisable'] = 'Diese E-Mail Adresse ist abgeschaltet.'; -$string['emaildisableclick'] = 'Vollständige Deaktivierung des E-Mail Versands an diese Adresse'; $string['emaildisplay'] = 'E-Mail-Anzeige'; -$string['emaildisplaycourse'] = 'Nur Kurs-Mitglieder dürfen meine E-Mail-Adresse sehen'; +$string['emaildisplaycourse'] = 'Nur Kurs-Mitgliedern dürfen meine E-Mail-Adresse sehen'; $string['emaildisplayno'] = 'Niemand darf meine E-Mail-Adresse sehen'; $string['emaildisplayyes'] = 'Alle dürfen meine E-Mail-Adresse sehen'; $string['emailenable'] = 'Diese E-Mail Adresse ist aktiv.'; -$string['emailenableclick'] = 'Reaktivierung des E-Mail-Versands an diese Adresse'; $string['emailexists'] = 'Diese E-Mail-Adresse ist bereits registriert.'; $string['emailformat'] = 'E-Mail-Format'; $string['emailmustbereal'] = 'Anmerkung: Geben Sie eine gültige E-Mail-Adresse an. Sie erhalten per E-Mail eine Bestätigung Ihrer Anmeldung.'; -$string['emailnotallowed'] = 'E-Mailadressen sind an dieser Stelle nicht erlaubt (§a)'; -$string['emailonlyallowed'] = 'Diese E-Mailadresse ist nicht zulässig ($a)'; $string['emailpasswordconfirmation'] = 'Hallo $a->firstname $a->lastname, jemand (wahrscheinlich Sie) hat ein neues Kennwort für Ihren Zugang auf \'$a->sitename\' angefordert. @@ -430,37 +344,27 @@ Sofern das nicht funktioniert, kopieren Sie die Adresse bitte in die Adresszeile Sofern Sie Hilfe benötigen, wenden Sie sich bitte an den Verwalter der Seite, $a->admin'; -$string['emailpasswordconfirmationsubject'] = '$a: Kennwort-Bestätigung ändern'; -$string['emailpasswordconfirmsent'] = 'Eine E-Mail zur Bestätigung der Kennwortänderung sollte an Ihre Adresse $a verschickt worden sein. +$string['emailpasswordconfirmationsubject'] = '$a: Passwort-Bestätigung ändern'; +$string['emailpasswordconfirmsent'] = 'Eine E-Mail zur Bestätigung der Passwortänderung sollte an Ihre Adresse $a verschickt worden sein.

              Sie enthält einfache Anweisungen und einen Link, um die Änderung abzuschließen. Bei weiteren Problemen kontaktieren Sie bitte die Moodle-Administration.'; -$string['emailpasswordsent'] = 'Danke für Ihre Bestätigung der Kennwortänderung. -

              Eine E-Mail mit Ihrem neuen Kennwort wurde an Ihre Adresse $a->email verschickt. -

              Das Kennwort wurde automatisch generiert - -Sie werden wahrscheinlich dieses link>Kennwort ändern wollen, um es sich besser merken zu können.'; +$string['emailpasswordsent'] = 'Danke für Ihre Bestätigung der Passwortänderung. +

              Eine Email mit Ihrem neuen Passwort wurde an Ihre Adresse $a->email verschickt. +

              Das Passwort wurde automatisch generiert - +Sie werden wahrscheinlich dieses link>Passwort ändern wollen, um es sich besser merken zu können.'; $string['enable'] = 'Aktivieren'; -$string['encryptedcode'] = 'Verschlüsselter Code'; $string['enrolledincourse'] = 'Eingeschrieben in Kurs '; $string['enrolledincoursenot'] = 'Nicht in Kurs '; -$string['enrollfirst'] = 'Sie müssen zu einem Kurs angemeldet sein, bevor Sie diese Aktivität nutzen können.'; $string['enrolmentconfirmation'] = 'Sie sind dabei, sich in diesen Kurs einzuschreiben.
              Sind Sie sicher?'; $string['enrolmentkey'] = 'Zugangs-Schlüssel'; -$string['enrolmentkeyfrom'] = 'Für diesen Kurs benötigen Sie einen \'Zugangs-Schlüssel\' - ein einmaliges Kennwort,
              das Sie von $a bekommen haben sollten
              '; -$string['enrolmentkeyhint'] = 'Der Zugangs-Schlüssel war falsch, bitte versuchen Sie es erneut
              -(Hier ist ein Hinweis - Er startet mit \'$a\')'; -$string['enrolmentnew'] = 'Neue Anmeldungen in $a'; -$string['enrolmentnewuser'] = '$a->user wurde im Kurs \"$a->course\" angemeldet'; -$string['enrolmentnointernal'] = 'Individuelle Anmeldungen sind zur Zeit nicht möglich.'; -$string['enrolmentnotyet'] = 'Sie können diesen Kursraum erst am $a betreten. Haben Sie noch ein wenig Geduld.'; -$string['enrolments'] = 'Anmeldungen'; -$string['enrolperiod'] = 'Teilnahmedauer'; +$string['enrolmentkeyfrom'] = 'Für diesen Kurs benötigen Sie einen \'Zugangs-Schlüssel\' - ein einmaliges Kennwort,
              das Sie von $a bekommen haben sollten
              '; +$string['enrolmentkeyhint'] = 'Der Zugangs-Schlüssel war falsch, bitte versuchen Sie es erneut
              +(Hier ist ein Hinweis - Er startet mit \'$a\''; $string['entercourse'] = 'Hier klicken, um den Kurs zu betreten'; -$string['enteremailaddress'] = 'Geben Sie hier Ihre E-Mail-Adresse ein, um Ihr Kennwort zurückzusetzen. Ein neues Kennwort wird Ihnen per E-Mail zugesendet.'; -$string['entries'] = 'Eintragungen'; +$string['enteremailaddress'] = 'Geben Sie hier Ihre E-Mail-Adresse ein, um Ihr Kennwort zurückzusetzen. Ein neues Passwort wird Ihnen per E-Mail zugesendet.'; $string['error'] = 'Fehler'; $string['errortoomanylogins'] = 'Entschuldigung, aber Sie haben die Anzahl erlaubter Zugangs-Versuche erreicht. Starten Sie Ihren Browser neu.'; -$string['errorwhenconfirming'] = 'Sie wurden nicht bestätigt, da ein Fehler aufgetreten ist. Wenn Sie auf einen Link in einer E-Mail geklickt haben, um hierher zu gelangen, überprüfen Sie bitte dass dieser Link nicht defekt ist. Sie können in diesem Fall durch Kopieren und Einfügen den Link korrigieren, um so die Bestätigung durchzuführen.'; -$string['everybody'] = 'Jede/r'; +$string['errorwhenconfirming'] = 'Sie wurden nicht bestätigt, da ein Fehler aufgetreten ist. Wenn Sie auf einen Link in einer e-mail geklickt haben, um hierher zu gelangen, überprüfen Sie bitte das dieser Link nicht defekt ist. Sie können in diesem Fall durch Kopieren und Einfügen den Link korrigieren, um so die Bestätigung durchzuführen.'; $string['executeat'] = 'Ausführen am'; $string['existing'] = 'Bestehende'; $string['existingadmins'] = 'Vorhandene Administrator/innen'; @@ -470,11 +374,7 @@ $string['existingcoursedeleting'] = 'Vorhandener Kurs, zun $string['existingcreators'] = 'Vorhandener Kursersteller/in'; $string['existingstudents'] = 'Eingeschriebene Kursteilnehmer/in'; $string['existingteachers'] = 'Vorhandene Trainer/innen'; -$string['explanation'] = 'Erläuterung'; -$string['failedloginattempts'] = '$a->attempts gescheiterte Logins seit Ihrem letzten Besuch.'; -$string['failedloginattemptsall'] = '$a->attempts gescheiterte Logins von $a->accounts Nutzern.'; $string['feedback'] = 'Rückmeldung'; -$string['file'] = 'Datei'; $string['filemissing'] = '$a fehlt'; $string['files'] = 'Dateien'; $string['filesfolders'] = 'Dateien/Ordner'; @@ -482,19 +382,16 @@ $string['filloutallfields'] = 'Bitte f $string['findmorecourses'] = 'Weitere Kurse finden...'; $string['firstdayofweek'] = 'O'; $string['firstname'] = 'Vorname'; -$string['firsttime'] = 'Sind Sie das erste Mal hier?
              Bitte registrieren Sie sich:'; +$string['firsttime'] = 'Sind Sie das erste Mal hier?
              Bitte registrieren Sie sich:'; $string['followingoptional'] = 'Die folgenden Angaben sind optional'; $string['followingrequired'] = 'Die folgenden Angaben sind zwingend'; $string['force'] = 'Übergreifend'; $string['forcedmode'] = 'festgelegter Modus'; $string['forcelanguage'] = 'Festgelegte Sprache'; $string['forceno'] = 'Keine'; -$string['forcepasswordchange'] = 'Änderung des Kennwortes ist erforderlich'; -$string['forcepasswordchangehelp'] = 'Fordert den Nutzer auf, beim nächsten Login das Kennwort zu ändern.'; -$string['forgotten'] = 'Anmeldename und Kennwort vergessen?'; +$string['forgotten'] = 'Benutzername und Kennwort vergessen?'; $string['format'] = 'Format'; $string['formathtml'] = 'HTML-Format'; -$string['formatmarkdown'] = 'Markdown-Format'; $string['formatplain'] = 'Reines Textformat'; $string['formatsocial'] = 'Offenes Kommunikationsforum'; $string['formattext'] = 'Moodle Text-Format'; @@ -502,7 +399,7 @@ $string['formattexttype'] = 'Formatierung'; $string['formattopics'] = 'Themen-Format'; $string['formatweeks'] = 'Wöchentliches Format'; $string['formatwiki'] = 'Wiki-Format'; -$string['from'] = 'Von (Datum, Uhrzeit)'; +$string['from'] = 'Von'; $string['frontpagecategorynames'] = 'Kategorienliste anzeigen'; $string['frontpagecourselist'] = 'Kursliste anzeigen'; $string['frontpagedescription'] = 'Beschreibung auf Eingangsseite'; @@ -513,14 +410,12 @@ $string['fullname'] = 'Vollst $string['fullnamedisplay'] = '$a->Vorname $a-> Nachname'; $string['fullprofile'] = 'Ganzes Profil'; $string['fullsitename'] = 'Name der gesamten Seite'; -$string['functiondisabled'] = 'Diese Funktion ist derzeit abgeschaltet.'; $string['gd1'] = 'GD 1.x ist installiert'; $string['gd2'] = 'GD 2.x ist installiert'; $string['gdneed'] = 'GD muss installiert sein, um diese Grafik zu sehen'; $string['gdnot'] = 'GD ist nicht installiert'; -$string['go'] = 'Start'; -$string['gpl'] = 'Copyright (C) 2001-2005 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 (sofern 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'] = 'Punkte/Bewertung'; +$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'] = 'Punkt'; $string['grades'] = 'Punkte'; $string['group'] = 'Gruppe'; $string['groupadd'] = 'Neue Gruppe hinzufügen'; @@ -548,7 +443,7 @@ $string['guestsno'] = 'G $string['guestsnotallowed'] = '\'$a\' erlaubt Gästen keinen Zugang'; $string['guestsyes'] = 'Zugang für Gäste ohne Schlüssel'; $string['guestuser'] = 'Gast-Nutzer/in'; -$string['guestuserinfo'] = 'Gäste haben nur Lesezugriff auf Kurse mit Gastzugang. Das Ausführen von Lernaktivitäten ist für Gäste nicht möglich.'; +$string['guestuserinfo'] = 'Dieser Benutzer ist ein besonderer Benutzer, der nur Lesezugriff auf einige Kurse erlaubt.'; $string['help'] = 'Hilfe'; $string['helpemoticons'] = 'Emoticons benutzen'; $string['helpformatting'] = 'Über formatierten Text'; @@ -564,11 +459,9 @@ $string['helpwiki'] = 'Wie man einen Wiki-Text schreibt'; $string['helpwriting'] = 'Gewissenhaft schreiben'; $string['hiddensections'] = 'Verborgene Abschnitte'; $string['hiddensectionscollapsed'] = 'Verborgene Abschnitte werden in unterbrochener Form angezeigt'; -$string['hiddensectionsinvisible'] = 'Verborgene Abschnitte sind vollständig unsichtbar'; +$string['hiddensectionsinvisible'] = 'Verborgene Abschnite sind vollständig unsichtbar'; $string['hide'] = 'Verbergen'; -$string['hideadvancedsettings'] = 'Zusätzliche Einstellungen verbergen'; $string['hidepicture'] = 'Das Bild verbergen'; -$string['hidesettings'] = 'Einstellungen verbergen'; $string['hits'] = 'Treffer'; $string['hitsoncourse'] = 'Treffer bei $a->coursename von $a->username'; $string['hitsoncoursetoday'] = 'Heutige Treffer bei $a->Kurstitel von $a->Nutzername'; @@ -584,11 +477,6 @@ $string['htmleditordisabledbrowser'] = 'Der Text-Editor ist nicht verf $string['htmlformat'] = 'Sauberes HTML-Format'; $string['icqnumber'] = 'ICQ-Nummer'; $string['idnumber'] = 'Identifizierungsnummer'; -$string['importdata'] = 'Kursdaten importieren'; -$string['importdataexported'] = 'Daten vom exportierenden Kurs erfolgreich entnommen.
              Fortsetzen mit dem Import in den Kurs.'; -$string['importdatafinished'] = 'Import vollständig! Fortsetzen im Kurs'; -$string['importdatafrom'] = 'Kurs aus dem Daten importiert werden sollen:'; -$string['importmetacoursenote'] = 'Formular zur Auswahl von Kursen, die dem Metakurs hinzugefügt werden sollen (Import der Nutzer/innendaten).'; $string['inactive'] = 'Inaktiv'; $string['include'] = 'Einbeziehen'; $string['includeallusers'] = 'Alle Nutzer/innen einbeziehen'; @@ -600,13 +488,10 @@ $string['includemodules'] = 'Aktivit $string['includeneededusers'] = 'Notwendige Nutzer einbeziehen'; $string['includenoneusers'] = 'Nicht-Nutzer einbeziehen'; $string['includeuserfiles'] = 'Nutzer-Dateien einbeziehen'; -$string['info'] = 'Information'; $string['institution'] = 'Institution'; $string['invalidemail'] = 'Ungültige E-Mail-Adresse'; $string['invalidlogin'] = 'Ungültiger Login, bitte versuchen Sie es erneut'; -$string['ip_address'] = 'IP-Adresse'; -$string['jump'] = 'Jump/Sprung'; -$string['jumpto'] = 'Direkt zu ...'; +$string['jumpto'] = 'Direkt zu:'; $string['keep'] = 'Halten'; $string['langltr'] = 'Sprach-Richtung von links nach rechts'; $string['langrtl'] = 'Sprach-Richtung von rechts nach links'; @@ -619,55 +504,46 @@ $string['lastmodified'] = 'Zuletzt ge $string['lastname'] = 'Nachname'; $string['latestlanguagepack'] = 'Prüfe auf aktuelle Sprachpakete auf moodle.org'; $string['latestnews'] = 'Neueste Nachrichten'; -$string['leavetokeep'] = 'Feld leer lassen, um gegenwärtiges Kennwort zu behalten'; +$string['leavetokeep'] = 'Feld leer lassen, um gegenwärtiges Passwort zu behalten'; $string['license'] = 'GPL-Lizenz'; $string['list'] = 'Liste'; $string['listfiles'] = 'Liste der Dateien in $a'; $string['listofallpeople'] = 'Liste aller Personen'; $string['livelogs'] = 'Aktuelle Statistiken der letzten Stunde'; -$string['locale'] = 'en'; +$string['locale'] = 'de_DE'; $string['location'] = 'Ort'; $string['loggedinas'] = 'Sie sind angemeldet als $a'; $string['loggedinnot'] = 'Sie sind nicht angemeldet.'; $string['login'] = 'Login'; -$string['login_failure_logs'] = 'Login-Fehler Daten'; $string['loginas'] = 'Login als'; $string['loginguest'] = 'Gast-Login'; $string['loginsite'] = 'Login'; -$string['loginsteps'] = 'Guten Tag,

              -hier können Sie sich anmelden, um an den verschiedenen Kursen teilzunehmen. Es sind dazu nur einige Informationen erforderlich.

              +$string['loginsteps'] = 'Guten Tag,

              +hier können Sie sich anmelden, um an den verschiedenen Kursen teilzunehmen. Es sind dazu nur einige Informationen erforderlich.

              Gehen Sie bitte wie folgt vor:

              1. Füllen Sie das Formular Neuer Zugang -mit Ihren Angaben aus. -
              2. Sie erhalten anschließend eine E-Mail an Ihre angegebene E-Mail-Adresse. -
              3. Lesen Sie diese E-Mail und klicken Sie den darin enthaltenen Link an. -
              4. Ihr Zugang wird dadurch bestätigt und Sie werden automatisch mit Ihren zuvor angegebenen Zugangsdaten auf der Startseite eingeloggt. -
              5. Jetzt wählen Sie bitte den Kurs aus, an dem Sie teilnehmen möchten. -
              6. Für einige Kurse ist ein Zugangsschlüssel notwendig. Benutzen Sie dazu bitte den Zugangsschlüssel, den Ihnen Ihr/e Trainer/in mitgeteilt hat. Dieser Zugangsschlüssel ermöglicht Ihnen sich für den entsprechenden Kurs \"einzuschreiben\". -
              7. Nun können Sie auf den gesamten Kurs zugreifen. Zukünftig brauchen Sie nur den bei Ihrer Anmeldung gewählten Anmeldenamen und das Kennwort im Formular auf dieser Seite links eingeben, um sich einzuloggen und Zugang zu den verschiedenen Kursen zu erhalten. - +mit Ihren Angaben aus. +
              8. Sie erhalten anschließend eine E-Mail an Ihre angegebene E-Mail-Adresse. +
              9. Lesen Sie diese E-Mail und klicken Sie den darin enthaltenen Link an. +
              10. Ihr Zugang wird dadurch bestätigt und Sie werden automatisch mit Ihren zuvor angegebenen Zugangsdaten auf der Startseite eingeloggt. +
              11. Jetzt wählen Sie bitte den Kurs aus, an dem Sie teilnehmen möchten. +
              12. Für einige Kurse ist ein Zugangsschlüssel notwendig. Benutzen Sie dazu bitte den Zugangsschlüssel, den Ihnen Ihr/e Trainer/in mitgeteilt hat. Dieser Zugangsschlüssel ermöglicht Ihnen sich für den entsprechenden Kurs \"einzuschreiben\". +
              13. Nun können Sie auf den gesamten Kurs zugreifen. Zukünftig brauchen Sie nur den bei Ihrer Anmeldung gewählten Benutzernamen und das Passwort im Formular auf dieser Seite links eingeben, um sich einzuloggen und Zugang zu den verschiedenen Kursen zu erhalten. +
              '; -$string['loginstepsnone'] = 'Guten Tag!

              Für den vollen Zugang zu den Kursen müssen Sie sich einen Zugang anlegen.

              Alles, was Sie tun müssen, ist einen Anmeldenamen und ein Kennwort zu wählen, das Sie im Formular auf dieser Seite eintragen!

              Sofern jemand anderes bereits Ihren Anmeldenamen gewählt hat, müssen Sie einen anderen Anmeldenamen verwenden.'; +$string['loginstepsnone'] = 'Guten Tag!

              Für den vollen Zugang zu den Kursen müssen Sie sich einen Zugang anlegen.

              Alles, was Sie tun müssen, ist einen Benutzernamen und ein Kennwort zu wählen, das Sie im Formular auf dieser Seite eintragen!

              Sofern jemand anderes bereits Ihren Benutzernamen gewählt hat, müssen Sie einen anderen Benutzernamen verwenden.'; $string['loginto'] = 'Angemeldet bei $a'; $string['loginusing'] = 'Bitte beachten Sie, dass es notwendig ist, sich vor dem ersten Moodle-Login einmalig zu registrieren'; $string['logout'] = 'LogOut'; $string['logs'] = 'Statistiken'; -$string['logtoomanycourses'] = ' [ url\">more ]'; -$string['logtoomanyusers'] = ' [ url\">more ]'; -$string['mailadmins'] = 'Administrator/innen informieren'; -$string['mailstudents'] = 'Teilnehmer/innen informieren'; -$string['mailteachers'] = 'Trainer/innen informieren'; $string['mainmenu'] = 'Hauptmenü'; $string['makeafolder'] = 'Verzeichnis erstellen'; $string['makeeditable'] = 'Sofern Sie \'$a\' durch den Webserver (beispielsweise Apache) bearbeitbar machen, können Sie die Datei direkt über diese Seite bearbeiten'; $string['manageblocks'] = 'Blöcke'; $string['managedatabase'] = 'Datenbank verwalten'; $string['managefilters'] = 'Filter'; -$string['managemeta'] = 'Soll dieser Kurs ein Metakurs sein?'; -$string['managemetadisabled'] = 'Die Funktion ist deaktiviert, da der Kurs ein Metakurs ist.'; -$string['managemetaexplan'] = '(Das bedeutet: Nutzer/innendaten werden aus anderen Kursen übernommen)'; $string['managemodules'] = 'Module verwalten'; $string['markedthistopic'] = 'Dieses Thema ist als aktuelles Thema gekennzeichnet'; $string['markthistopic'] = 'Dieses Thema als das gegenwärtige Thema kennzeichnen'; @@ -676,20 +552,8 @@ $string['maximumgrade'] = 'Beste Note'; $string['maximumshort'] = 'Höchstens'; $string['maximumupload'] = 'Maximale Größe der Datei für den Upload'; $string['maxsize'] = 'Maximale Größe: $a'; -$string['metaaddcourse'] = 'Diesen Kurs hinzufügen'; -$string['metaalreadycourses'] = 'Dieser Kurs ist bereits ausgewählt'; -$string['metaalreadyhascourses'] = 'Dieser Metakurs verfügt bereits über Child-Kurse'; -$string['metaalreadyhasenrolments'] = 'Dieser Kurs erlaubt normale Eintragungen von Nutzer/innen'; -$string['metaalreadyinmeta'] = 'Dieser Kurs ist bereits Teil eines Metakurses'; -$string['metaassigncourses'] = 'Kurse zuweisen'; -$string['metacourse'] = 'Metakurse'; -$string['metanoalreadycourses'] = 'Bisher wurden keine Kurse zugewiesen'; -$string['metanopotentialcourses'] = 'Keine Kurse verfügbar'; -$string['metapotentialcourses'] = 'Verfügbare Kurse'; -$string['metaremovecourse'] = 'Diesen Kurs entfernen'; $string['min'] = 'Minute'; $string['mins'] = 'Minuten'; -$string['minutes'] = 'Minuten'; $string['miscellaneous'] = 'Verschiedenes'; $string['missingcategory'] = 'Sie müssen einen Rubrik auswählen'; $string['missingcity'] = 'Stadt fehlt'; @@ -700,8 +564,8 @@ $string['missingfirstname'] = 'Vorname fehlt'; $string['missingfullname'] = 'Name fehlt'; $string['missinglastname'] = 'Nachname fehlt'; $string['missingname'] = 'Fehlender Name'; -$string['missingnewpassword'] = 'Neues Kennwort fehlt'; -$string['missingpassword'] = 'Kennwort fehlt'; +$string['missingnewpassword'] = 'Neues Passwort fehlt'; +$string['missingpassword'] = 'Passwort fehlt'; $string['missingshortname'] = 'Kurzer Name fehlt'; $string['missingshortsitename'] = 'Kurzer Seitenname fehlt'; $string['missingsitedescription'] = 'Seitenbeschreibung fehlt'; @@ -711,14 +575,13 @@ $string['missingstudent'] = 'Teilnehmer/in fehlt'; $string['missingsummary'] = 'Zusammenfassung fehlt'; $string['missingteacher'] = 'Sie müssen etwas auswählen'; $string['missingurl'] = 'Fehlende URL'; -$string['missingusername'] = 'Anmeldename fehlt'; +$string['missingusername'] = 'Benutzername fehlt'; $string['modified'] = 'Geändert'; $string['moduledeleteconfirm'] = 'Sie sind dabei, das Modul \'$a\' vollständig zu löschen. Dies löscht alles in der Datenbank, das mit der Modul-Aktivität verknüpft ist. Sind Sie SICHER, dass Sie fortfahren möchten?'; -$string['moduledeletefiles'] = 'Alle mit dem Modul \'$a->module\' verknüpften Daten wurden aus der Datenbank gelöscht. Um diese Löschung zu vervollständigen (und das Modul daran hindern, sich selbst erneut zu installieren), sollten Sie nun dieses Verzeichnis auf dem Server entfernen: $a->directory'; +$string['moduledeletefiles'] = 'Alle mit dem Modul \'$a->module\' verknüpften Daten wurden aus der Datenbank gelöscht. Um diese Löschung zu vervollständigen (und das Modul daran hindern, sich selbst erneut zu installieren), sollten Sie nun dieses Veruzeichnis auf dem Server entfernen: $a->directory'; $string['modulesetup'] = 'Lege Modul-Tabellen an'; $string['modulesuccess'] = '$a Tabellen wurden korrekt angelegt'; $string['moodleversion'] = 'Moodle-Version'; -$string['more'] = 'mehr'; $string['mostrecently'] = 'neueste'; $string['move'] = 'Verschieben'; $string['movecategoryto'] = 'Verschiebe Kategorie nach:'; @@ -732,10 +595,9 @@ $string['moveright'] = 'Einzug rechts'; $string['moveselectedcoursesto'] = 'Gewählte Kurse verschieben nach ...'; $string['movetoanotherfolder'] = 'In einen anderen Ordner verschieben'; $string['moveup'] = 'Nach oben verschieben'; -$string['mustchangepassword'] = 'Das neue Kennwort darf nicht mit dem alten Kennwort übereinstimmen.'; $string['mustconfirm'] = 'Sie müssen Ihren Zugang bestätigen'; $string['mycourses'] = 'Meine Kurse'; -$string['name'] = 'Link (Kursseite)'; +$string['name'] = 'Name'; $string['namesocial'] = 'Abschnitt'; $string['nametopics'] = 'Thema'; $string['nameweeks'] = 'Woche'; @@ -751,10 +613,10 @@ $string['newpasswordtext'] = 'Hallo $a->firstname $a->lastname, Ihr Kennwort auf \'$a->sitename\' wurde zurückgesetzt. Ihnen ist ein neues, temporäres Kennwort zugewiesen worden. Ihre Zugangsdaten lauten jetzt: - Anmeldename: $a->username + Benutzername: $a->username Kennwort: $a->newpassword -Bitte folgen Sie diesem Link und ändern Ihr Kennwort: +Bitte folgen Sie diesem Link und ändern Ihr Passwort: $a->link [Sollte der Link in Ihrem Mail-Programm nicht klickbar sein, können Sie ihn auch direkt in die Adresszeile Ihres Webbrowsers kopieren.] @@ -768,7 +630,6 @@ $string['newuser'] = 'Neue/r Benutzer/in'; $string['newusers'] = 'Neue Benutzer/innen'; $string['next'] = 'Nächste'; $string['no'] = 'Nein'; -$string['nobody'] = 'Niemand'; $string['nocoursesfound'] = 'Keine Kurse gefunden mit dem Begriff \'$a\''; $string['nocoursesyet'] = 'Keine Kurse in dieser Rubrik'; $string['noexistingadmins'] = 'Kein/e Administrator/in vorhanden. Dies ist ein schwerwiegender Fehler - diese Nachricht sollten Sie lieber nicht gesehen haben.'; @@ -780,18 +641,11 @@ $string['nofilesyet'] = 'Bislang wurden keine Dateien f $string['nograde'] = 'Keine Note'; $string['noimagesyet'] = 'Bislang wurden keine Grafiken für Ihren Kurs hochgeladen'; $string['nomorecourses'] = 'Keine weiteren entsprechenden Kurse gefunden'; -$string['nomoreidnumber'] = 'idnumber nicht verwenden, um Kollisionen zu vermeiden'; $string['none'] = 'Nichts'; $string['nopotentialadmins'] = 'Keine potenziellen Administrator/innen vorhanden'; $string['nopotentialcreators'] = 'Keine potenziellen Kursersteller/innen vorhanden '; $string['nopotentialstudents'] = 'Keine potenziellen Kursteilnehmer/innen vorhanden'; $string['nopotentialteachers'] = 'Keine potenziellen Trainer/innen vorhanden'; -$string['noreplybouncemessage'] = 'Sie haben eine Antwort an eine gesperrte E-Mail-Adresse (no-reply) gesandt. Wenn Sie auf einen Forenbeitrag anworten wollten, nutzen Sie dazu bitte direkt das Forum $a. -
              -Hier ist der Inhalt Ihrer E-Mail:
              '; -$string['noreplybouncesubject'] = '§a - zurückgesandte E-Mail'; -$string['noreplyname'] = 'Nutzen Sie nicht die \"Antwort\"-Funktion zum Beantworten dieser E-Mail'; -$string['noresults'] = 'Keine Ergebnisse'; $string['normal'] = 'Normal'; $string['normalfilter'] = 'Normalfilter'; $string['nostudentsfound'] = 'Kein $a gefunden'; @@ -802,17 +656,11 @@ $string['noteachersyet'] = 'Dieser Kurs hat noch keine/n Trainer/in'; $string['notenrolled'] = '$a ist nicht in diesen Kurs eingeschrieben.'; $string['noteuserschangednonetocourse'] = 'Anmerkung: Kursnutzer müssen bei der Wiederherstellung von Nutzerdaten wiederhergestellt werden. Diese Einstellung wurde für Sie geändert.'; $string['nothingnew'] = 'Nichts Neues seit Ihrem letzten Besuch'; -$string['noticenewerbackup'] = 'Diese Backup-Datei wurde erstellt mit moodle $a->backuprelease ($a->backupversion) und ist aktueller als die derzeit installierte moodle-Version $a->serverrelease ($a->serverversion). Das kann zu Fehlern führen, da ein abwärtskompatibles Backup nicht garantiert wird.'; -$string['notifyloginfailuresmessage'] = '$a->time, IP: $a->ip, User: $a->info'; -$string['notifyloginfailuresmessageend'] = 'Sie können diese Logs unter $a/course/log.php?id=1&chooselog=1&modid=site_errors einsehen.'; -$string['notifyloginfailuresmessagestart'] = 'Dies ist eine Übersicht über gescheiterte Anmeldeversuche auf $a seit der letzten Benachrichtigung '; -$string['notifyloginfailuressubject'] = '$a: Nachrichten von gescheiterten Logins'; $string['notincluded'] = 'Nicht eingebunden'; $string['notingroup'] = 'Diese Aktivität ist nur für Gruppenmitglieder zugänglich. Sie sind nicht Mitglied in dieser Gruppe.'; $string['nousersmatching'] = 'Keine Nutzer bezüglich \'$a\' wurden gefunden'; $string['nousersyet'] = 'Bislang keine Benutzer/in'; $string['now'] = 'jetzt'; -$string['numattempts'] = '$a gescheiterte(r) Login-Versuch(e)'; $string['numberweeks'] = 'Anzahl der Wochen/Themen'; $string['numdays'] = '$a Tage'; $string['numhours'] = '$a Stunden'; @@ -827,43 +675,30 @@ $string['opentoguests'] = 'Gast-Zugriff'; $string['optional'] = 'nicht zwingend'; $string['order'] = 'Reihenfolge'; $string['other'] = 'Sonstige'; -$string['outline'] = 'Zusammenfassung'; +$string['outline'] = 'Ausstehend'; $string['page'] = 'Seite'; -$string['pageheaderconfigablock'] = 'Anlegen eins Blocks in %%fullname%%'; -$string['parentcoursenotfound'] = 'Parent-Kurs nicht gefunden'; -$string['parentcoursenotmetacourse'] = 'Parent-Kurs ist kein Metakurs!'; -$string['parentfolder'] = 'Parent Ordner'; $string['parentlanguage'] = 'Muttersprache'; $string['participants'] = 'Teilnehmer/innen'; -$string['password'] = 'Kennwort'; -$string['passwordchanged'] = 'Kennwort wurde geändert'; -$string['passwordconfirmchange'] = 'Kennwortänderung bestätigen'; +$string['password'] = 'Passwort'; +$string['passwordchanged'] = 'Passwort wurde geändert'; +$string['passwordconfirmchange'] = 'Passwortänderung bestätigen'; $string['passwordrecovery'] = 'Ja, bitte beim Login helfen'; $string['passwordsdiffer'] = 'Die Passwörter stimmen nicht überein'; -$string['passwordsent'] = 'Kennwort wurde verschickt'; +$string['passwordsent'] = 'Passwort wurde verschickt'; $string['passwordsenttext'] = '

              Eine E-Mail wurde an Ihre Adresse $a->email gesendet.

              Schauen Sie bitte in Ihrer E-Mail nach Ihrem neuen Kennwort

              Das Kennwort wurde automatisch erzeugt. Sicherlich möchten Sie es link>ändern, um es sich leichter zu merken.'; -$string['pathnotexists'] = 'Der eingegebene Pfad existiert auf dem Server nicht'; -$string['pathslasherror'] = 'Pfadbezeichnung darf nicht mit einem slash enden!!'; -$string['paymentinstant'] = 'Klicken Sie auf den Button, um die Teilnahmegebühr zu bezahlen und sich innerhalb kürzester Zeit anzumelden.'; -$string['paymentrequired'] = 'Dieser Kurs ist gebührenpflichtig. Bitte bezahlen Sie vor der Anmeldung.'; -$string['paymentsorry'] = 'Vielen Dank für Ihren Beitrag. Der Bezahlvorgang wurde jedoch noch nicht vollständig abgeschlossen. Sie sind noch nicht als Teilnehmer/in im Kurs \"$a->fullname\" registriert. Bitte versuchen Sie es in einigen Minuten noch einmal. Wenn weiterhin Probleme auftauchen wenden Sie sich bitte an den/die Trainer/in $a->teacher oder den Administrator.'; -$string['paymentthanks'] = 'Vielen Dank für Ihre Teilnahmegebühr. Sie sind nun im Kurs \"$a\" eingetragen.'; $string['people'] = 'Personen'; $string['personalprofile'] = 'Persönliches Profil'; $string['phone'] = 'Telefon'; $string['phpinfo'] = 'PHP-Info'; -$string['policyagree'] = 'Sie müssen den Nutzungsbestimmungen zustimmen, bevor Sie die Seite weiter nutzen können. Stimmen Sie den Nutzungsbestimmungen zu?'; -$string['policyagreement'] = 'Nutzungsbestimmungen'; -$string['policyagreementclick'] = 'Klicken Sie hier, um die Nutzungsbestimmungen zu lesen'; $string['popupwindow'] = 'Datei in neuem Fenster öffnen'; -$string['potentialadmins'] = 'Auswahlliste potenzieller Administrator/innen'; -$string['potentialcreators'] = 'Auswahlliste potenzieller Kursverwalter/innen'; -$string['potentialstudents'] = 'Auswahlliste potenzieller Kursteilnehmer/innen'; -$string['potentialteachers'] = 'Auswahlliste potenzieller Trainer/innen'; +$string['potentialadmins'] = 'Potenzielle Administrator/innen'; +$string['potentialcreators'] = 'Potenzielle Kursersteller/innen'; +$string['potentialstudents'] = 'Potenzielle Kursteilnehmer/innen'; +$string['potentialteachers'] = 'Potenzielle Trainer/innen'; $string['preferredlanguage'] = 'Bevorzugte Sprache'; $string['preview'] = 'Vorschau'; $string['previeworchoose'] = 'Vorschau oder Aussehen auswählen'; @@ -892,14 +727,13 @@ $string['registrationno'] = 'Nein, ich m $string['registrationsend'] = 'Sende Registrierungsinformation an moodle.org'; $string['registrationyes'] = 'Ja, benachrichtigen Sie mich über wichtige Hinweise'; $string['removeadmin'] = 'Administrator/in entfernen'; -$string['removecreator'] = 'Kursverwalter/in löschen'; +$string['removecreator'] = 'Kursersteller /in löschen'; $string['removestudent'] = 'Kursteilnehmer/in löschen'; $string['removeteacher'] = 'Trainer/in löschen'; $string['rename'] = 'Umbenennen'; $string['renamefileto'] = 'Umbenennen $a in'; $string['required'] = 'Erforderlich'; $string['requireskey'] = 'Dieser Kurs setzt einen Zugangs-Schlüssel voraus'; -$string['requirespayment'] = 'Dieser Kurs setzt die Bezahlung der Teilnahmegebühr voraus.'; $string['resortcoursesbyname'] = 'Kurse neu sortieren nach Name'; $string['resources'] = 'Arbeitsunterlagen'; $string['restore'] = 'Wiederherstellung'; @@ -910,9 +744,7 @@ $string['restoreto'] = 'Wiederherstellen auf'; $string['returningtosite'] = 'Hier kommen Sie zu Ihrer Kursseite'; $string['revert'] = 'Zurückkehren'; $string['role'] = 'Rolle'; -$string['rss'] = 'RSS'; $string['rssarticles'] = 'Zahl der neuesten RSS Artikel'; -$string['rsserror'] = 'Fehler beim Lesen der RSS-Daten'; $string['rsstype'] = 'RSS-Feed für diese Aktivität'; $string['savechanges'] = 'Änderungen speichern'; $string['saveto'] = 'Speichern bei'; @@ -928,7 +760,7 @@ $string['scheduledbackupstatus'] = 'Vorgesehener Backupstatus'; $string['search'] = 'Suchen'; $string['searchagain'] = 'Erneut Suchen'; $string['searchcourses'] = 'Kurse suchen'; -$string['searchhelp'] = 'Sie können nach mehreren Begriffen gleichzeitig suchen.

              word : findet jeden Treffer des Worts im gesamten Text.
              +word : nur exakte Treffer werden gefunden .
              -word : schließt Ergebnisse, die dieses Wort beinhalten, aus den Treffern aus.'; +$string['searchhelp'] = 'Sie können nach mehreren Begriffen gleichzeitig suchen.

              word : findet jeden Treffer des Worts im gesamten Text.
              +word : nur exakte Treffer werden gefunden .
              -word : schließt Ergebnisse, die dieses Wort beinhalten, aus den Treffern aus.'; $string['searchresults'] = 'Suchergebnisse'; $string['sec'] = 'Sekunde'; $string['secs'] = 'Sekunden'; @@ -945,7 +777,6 @@ $string['shortname'] = 'Kurzname'; $string['shortnametaken'] = 'Der Kurzname wird bereits für einen anderen Kurs ($a) verwendet'; $string['shortsitename'] = 'Kurzname der Seite (z.B. ein einziges Wort)'; $string['show'] = 'Anzeigen'; -$string['showadvancedsettings'] = 'Zusätzliche Einstellungen anzeigen'; $string['showall'] = 'Alle $a anzeigen'; $string['showallcourses'] = 'Alle Kurse anzeigen'; $string['showalltopics'] = 'Alle Themen Anzeigen'; @@ -957,22 +788,14 @@ $string['showonlytopic'] = 'Nur Thema $a anzeigen'; $string['showonlyweek'] = 'Nur Woche $a anzeigen'; $string['showrecent'] = 'Neue Aktivitäten anzeigen'; $string['showreports'] = 'Auswertung über die Aktivitäten anzeigen'; -$string['showsettings'] = 'Einstellungen anzeigen'; $string['showtheselogs'] = 'Diese Statistiken anzeigen'; $string['since'] = 'Seit'; -$string['sincelast'] = 'seit dem letzten Login'; $string['site'] = 'Seite'; -$string['sitedefault'] = 'Grundeinstellungen der Seite'; -$string['siteerrors'] = 'Fehler auf der Seite'; $string['sitefiles'] = 'Dateien der Seite'; $string['sitelogs'] = 'Statistiken der Seite'; $string['sitenews'] = 'Nachrichten der Seite'; -$string['sitepartlist0'] = 'Die Teilnehmerliste kann nur von Trainer/innen für die Startseite (Kurs 1) eingesehen werden'; -$string['sitepartlist1'] = 'Sie müssen als Trainer/in registriert sein, um die Teilnehmer/innenliste anzusehen'; $string['sites'] = 'Seiten'; -$string['sitesection'] = 'Themenabschnitt einbeziehen'; $string['sitesettings'] = 'Seiteneinstellungen'; -$string['siteteachers'] = 'Bearbeiter/innen (für Kurs) der Startseite'; $string['size'] = 'Größe'; $string['sizeb'] = 'Bytes'; $string['sizegb'] = 'Gb'; @@ -982,30 +805,27 @@ $string['socialheadline'] = 'Soziales Forum - letzte Themen'; $string['someallowguest'] = 'Einige Kurse ermöglichen Gästen den Zugang'; $string['someerrorswerefound'] = 'Eine Information fehlte oder war unzutreffend. Beachten Sie auf die Hinweise weiter unten. '; $string['sortby'] = 'Sortiert nach'; -$string['specifyname'] = 'Sie müssen einen Namen festlegen.'; $string['startdate'] = 'Datum des Kursbeginns'; $string['startsignup'] = 'Jetzt einen neuen Zugang anlegen!'; $string['state'] = 'Bundesland/Kanton'; $string['status'] = 'Status'; -$string['strftimedate'] = '%%d. %%B %%Y'; -$string['strftimedateshort'] = '%%d. %%B'; -$string['strftimedatetime'] = '%%d. %%B %%Y, %%H:%%M'; -$string['strftimedaydate'] = '%%A, %%d. %%B %%Y'; -$string['strftimedaydatetime'] = '%%A, %%d. %%B %%Y, %%H:%%M'; -$string['strftimedayshort'] = '%%A, %%d.%%B'; -$string['strftimedaytime'] = '%%a, %%H:%%M'; +$string['strftimedate'] = '%%d %%B %%Y'; +$string['strftimedateshort'] = '%%d %%B'; +$string['strftimedatetime'] = '%%d %%B %%Y, %%H:%%M'; +$string['strftimedaydate'] = '%%A, %%d %%B %%Y'; +$string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%H:%%M'; +$string['strftimedayshort'] = '%%A, %%d %%B'; $string['strftimemonthyear'] = '%%B %%Y'; -$string['strftimerecent'] = '%%d. %%b, %%H:%%M'; -$string['strftimerecentfull'] = '%%a, %%d. %%b %%Y, %%H:%%M'; +$string['strftimerecent'] = '%%d %%b, %%H:%%M'; +$string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%H:%%M'; $string['strftimetime'] = '%%H:%%M'; $string['stringsnotset'] = 'Folgende Textteile sind nicht vorhanden in $a'; $string['studentnotallowed'] = 'Entschuldigung, aber Sie können diesem Kurs nicht als \'$a\' beitreten'; $string['students'] = 'Teilnehmer/innen'; -$string['studentsandteachers'] = 'Teilnehmer/innen und Trainer/innen'; $string['subcategories'] = 'Unterkategorien'; $string['success'] = 'Erfolg'; -$string['summary'] = 'Zusammenfassung'; -$string['summaryof'] = 'Zusammenfassung von $a'; +$string['summary'] = 'Beschreibung'; +$string['summaryof'] = 'Beschreibung von $a'; $string['supplyinfo'] = 'Persönliche Angaben'; $string['teacheronly'] = 'nur für $a'; $string['teacherroles'] = '$a Rollen'; @@ -1022,33 +842,29 @@ $string['thisdirection'] = 'diese Richtung'; $string['thislanguage'] = 'Deutsch'; $string['time'] = 'Zeit'; $string['timezone'] = 'Zeitzone'; -$string['to'] = 'Bis (Datum, Uhrzeit)'; +$string['to'] = 'An'; $string['today'] = 'Heute'; $string['todaylogs'] = 'Die heutigen Statistiken'; -$string['toomanybounces'] = 'Die E-Mail-Adresse hattte zu viele fehlerhafte Rückläufe. Sie sie ändern, bevor Sie weiter arbeiten können. '; -$string['toomanytoshow'] = 'Es sind zuviele Benutzer, um sie alle anzuzeigen'; +$string['toomanytoshow'] = 'Es sind zuviele Benutzer um sie alle anzuzeigen'; $string['top'] = 'Oben'; $string['topic'] = 'Thema'; $string['topichide'] = 'Diese Thema vor $a verbergen'; $string['topicoutline'] = 'Themen dieses Kurses'; $string['topicshow'] = 'Dieses Thema für $a anzeigen'; $string['total'] = 'Insgesamt'; -$string['trysearching'] = 'Versuchen Sie es mit der Suchfunktion'; $string['turneditingoff'] = 'Bearbeiten ausschalten'; $string['turneditingon'] = 'Jetzt bearbeiten '; $string['undecided'] = 'Unbestimmt'; $string['unenrol'] = 'Aus diesem Kurs endgültig löschen'; $string['unenrolallstudents'] = 'Alle Teilnehmer/innen aus diesem Kurs LÖSCHEN !! Alle Daten werden dann gelöscht.'; -$string['unenrolallstudentssure'] = 'Sind Sie sicher, dass Sie alle Teilnehmer/in dieses Kurses löschen möchten? Alle Daten werden dann gelöscht!!!'; -$string['unenrolme'] = 'Teilnahme an diesem Kurs endgültig beenden. '; -$string['unenrolsure'] = 'Sie löschen $a aus der Teilnahmeliste dieses Kurses. Dabei werden Daten endgültig gelöscht. Sind Sie sicher, dass Sie diesen Vorgang fortsetzen wollen?'; -$string['unfinished'] = 'Nicht abgeschlossen'; +$string['unenrolallstudentssure'] = 'Sind Sie sicher, dass Sie alle Teilnehmer/in dieses Kurses löschen möchten? Alle Daten werden dann gelöscht!!!\"'; +$string['unenrolme'] = 'Ich will mich bei diesem Kurs LÖSCHEN !! Alle Daten werden dann gelöscht.'; +$string['unenrolsure'] = 'Sind Sie sicher, dass Sie $a als Teilnehmer/in dieses Kurses löschen möchten? Alle Daten werden dann gelöscht!!!\"'; $string['unknowncategory'] = 'Unbekannte Kategorie'; -$string['unlimited'] = 'Unbegrenzt'; $string['unpacking'] = 'Entpacke $a'; $string['unsafepassword'] = 'Unsicheres Kennwort - probieren Sie ein anderes'; $string['unusedaccounts'] = 'Mehr als $a Tage lang unbenutzte Zugänge werden automatisch entfernt.'; -$string['unzip'] = 'Entpacken'; +$string['unzip'] = 'Eröffnen'; $string['unzippingbackup'] = 'Entpacke Sicherung'; $string['up'] = 'Aufwärts'; $string['update'] = 'Aktualisieren'; @@ -1058,24 +874,13 @@ $string['updatesevery'] = 'Aktualisiere alle $a Sekunden'; $string['updatethis'] = '$a bearbeiten'; $string['updatethiscourse'] = 'Diesen Kurs aktualisieren'; $string['updatinga'] = '$a bearbeiten'; -$string['updatingain'] = 'Bearbeite $a->what in $a->in'; +$string['updatingain'] = 'bearbeite $a->what in $a->in'; $string['upload'] = 'Hochladen'; $string['uploadafile'] = 'Eine Datei hochladen'; -$string['uploadedfile'] = 'Upload der Datei erfolgreich'; $string['uploadedfileto'] = '$a->file hochgeladen nach $a->directory'; -$string['uploadedfiletoobig'] = 'Diese Datei ist zu groß (Dateien dürfen maxinmal $a Byte groß sein)'; -$string['uploadfailednotrecovering'] = 'Der Upload der Datei $a->name hat zu einem Problem geführt. Hier eine kurze Information über die Ursache des Problems: $a->problem. '; -$string['uploadfilelog'] = 'Upload des Log-Berichts für Datei $a'; -$string['uploadformlimit'] = 'Die hochgeladene Datei war größer als für diese Aktivität zugelassen'; -$string['uploadlabel'] = 'Titel:'; $string['uploadnofilefound'] = 'Es wurde keine Datei gefunden. Sind Sie sicher, dass Sie eine zum Hochladen ausgewählt haben?'; $string['uploadnotallowed'] = 'Das Hochladen von Dateien ist nicht erlaubt'; -$string['uploadoldfilesdeleted'] = 'Die alte(n) Datei(en) im Uploadbereich wurden gelöscht'; -$string['uploadpartialfile'] = 'Die Datei wurde nur teilweise hochgeladen'; $string['uploadproblem'] = 'Ein unbekanntes Problem ist beim Hochladen der Datei \'$a\' aufgetreten (war sie vielleicht zu groß?) '; -$string['uploadrenamedchars'] = 'Die Datei wurde von $a->oldname umbenannt nach $a->newname, weil nicht zugelassene Zeichen im Dateinamen verwandt wurden.'; -$string['uploadrenamedcollision'] = 'Die Datei wurde von $a->oldname umbenannt nach $a->newname, weil es zu einem Konflikt beim Dateinamen gekommen ist.'; -$string['uploadserverlimit'] = 'Die hochgeladene Datei war größer als dies vom Server zugelasse ist.'; $string['uploadthisfile'] = 'Diese Datei hochladen'; $string['uploadusers'] = 'Nutzer hochladen'; $string['usedinnplaces'] = 'Genutzt an $a Stellen'; @@ -1083,40 +888,30 @@ $string['user'] = 'Nutzer'; $string['userconfirmed'] = 'Bestätigt $a'; $string['userdata'] = 'Nutzerdaten'; $string['userdeleted'] = 'Dieser Zugang wurde gelöscht'; -$string['userdescription'] = 'Zusammenfassung'; +$string['userdescription'] = 'Beschreibung'; $string['userfiles'] = 'Nutzer-Dateien'; -$string['userlist'] = 'Teilnehmer/innenliste'; -$string['username'] = 'Benutzer/innenname'; -$string['usernameexists'] = 'Dieser Name ist bereits vergeben, probieren Sie bitte einen anderen'; +$string['username'] = 'Benutzername'; +$string['usernameexists'] = 'Dieser Benutzername ist bereits vergeben, probieren Sie bitte einen anderen'; $string['usernotconfirmed'] = 'Kann $a nicht bestätigen'; $string['userprofilefor'] = 'Benutzer-Profil für $a'; $string['users'] = 'Benutzer/innen'; $string['usersnew'] = 'Neue Nutzer/innen'; $string['userzones'] = 'Nutzerzonen'; -$string['usethiscourse'] = 'Diesen Kurs verwenden'; $string['usingexistingcourse'] = 'Verwende bestehenden Kurs'; $string['version'] = 'Version'; $string['view'] = 'Ansicht'; -$string['virusfound'] = 'Achtung Administrator: Clam AV hat einen Virus in einer Datei gefunden. Die Datei wurde von $a->user im Kurs $a->course hochgeladen. Hier ist der Bericht von Clamscan:'; -$string['virusfoundlater'] = 'Eine Datei wurde am $a->date mit dem Dateinamen $a->filename für den Kurs $a->course hochgeladen. In der Datei wurde ein Virus gefunden. Hier ist eine Zusammenfassung des Berichts über diese Datei: $a->action. Wenn die Datei dennoch genutzt werden soll, können Sie sie erneut dem Kurs zur Verfügung stellen.'; -$string['virusfoundlateradmin'] = 'Achtung Administrator! Eine Datei wurde am $a->date mit dem Dateinamen $a->filename für den Kurs $a->course hochgeladen. In der Datei wurde ein Virus gefunden. Hier ist eine Zusammenfassung des Berichts über diese Datei: $a->action. -Der Nutzer wurde bereits benachrichtigt.'; -$string['virusfoundlateradminnolog'] = 'Achtung Administrator! Eine Datei wurde mit dem Namen $a->filename hochgeladen. In der Datei wurde ein Virus entdeckt. moodle konnte den Fehler/die Datei nicht an den Nutzer zurück geben. Hier ist ein Kurzbericht über den Hintergrund: $a->action'; -$string['virusfoundsubject'] = '$a: Virus entdeckt!'; -$string['virusfounduser'] = 'Die von Ihnen hochgeladene Datei §a->filename wurde von einem Virenprüfprogramm überprüft. In der Datei wurde ein Virus gemeldet. Der Upload der Datei konnte daher nicht abgeschlossen werden.'; -$string['virusplaceholder'] = 'Die hochgeladene Datei scheint einen Virus zu enthalten. Sie wurde verschoben oder gelöscht. Der Nutzer wurde benachrichtigt.'; $string['webpage'] = 'Internet-Seite'; $string['week'] = 'Woche'; $string['weekhide'] = 'Diese Woche vor $a verbergen'; $string['weeklyoutline'] = 'Themen für jede Woche'; $string['weekshow'] = 'Diese Woche für $a anzeigen'; $string['welcometocourse'] = 'Willkommen zu $a'; -$string['welcometocoursetext'] = 'Willkommen zum Kurs \"$a->coursename\"! +$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['whattocallzip'] = 'Wie möchten Sie die zip-Datei nennen?'; +$string['whattocallzip'] = 'Wie möchten sie die zip-Datei nennen?'; $string['withchosenfiles'] = 'Mit ausgewählten Dateien'; $string['withoutuserdata'] = 'Ohne Nutzer-Daten'; $string['withuserdata'] = 'Mit Nutzer-Daten'; @@ -1138,13 +933,13 @@ $string['writingloginfo'] = 'Schreibe Log-Info'; $string['writingmoduleinfo'] = 'Schreibe Modulinformation'; $string['writingscalesinfo'] = 'Schreibe Skaleninformation'; $string['writinguserinfo'] = 'Schreibe Nutzerinformation'; -$string['wrongpassword'] = 'Falsches Kennwort oder Anmeldename'; +$string['wrongpassword'] = 'Falsches Kennwort oder Benutzername'; $string['yes'] = 'Ja'; $string['youareabouttocreatezip'] = 'Sie sind dabei, eine zip-Datei anzulegen mit diesem Inhalt '; -$string['youaregoingtorestorefrom'] = 'Sie stellen wieder her von:'; +$string['youaregoingtorestorefrom'] = 'Sie stellen wieder her vom:'; $string['yourlastlogin'] = 'Ihre letzte Anmeldung war'; $string['yourself'] = 'selbst'; $string['yourteacher'] = 'Ihr $a'; $string['zippingbackup'] = 'Komprimiere Sicherung'; -?> \ No newline at end of file +?> diff --git a/lang/de/pix.php b/lang/de/pix.php index e93059595fe..126580fdb30 100644 --- a/lang/de/pix.php +++ b/lang/de/pix.php @@ -1,10 +1,10 @@ Sie müssen die Befragung jetzt vollständig ausfüllen, damit Ihre Daten gespeichert werden können. Sie können die Befragung nicht zu einem späteren Zeitpunkt wiederholen.


              '; -$string['notavail'] = 'Die Befragung steht z. Zt. nicht zur Verfügung. Versuchen Sie es bitte später noch einmal.'; -$string['qmanage'] = 'Befragungen bearbeiten
              Zur Zeit keine deutsche Fassung verfügbar
              Vorhandene User in phpESP nicht löschen!
              Achtung: Befragungen sind für alle Trainer/innen sichtbar und bearbeitbar.'; -$string['qmanagetitle'] = 'Management der Befragungen mit phpESP.
              phpESP ist ein externes Programm, das an moodle angebunden ist.'; +$string['mustcomplete'] = 'Sie müssen die Befragung jetzt vollständig aufüllen, damit Ihre Daten gespeichert werden können. Sie können die Befragung nicht zu einem späteredn Zeitpunkt wiederholen.

              '; +$string['notavail'] = 'DieBefragung steht z. Zt. nicht zur Verfügung. Versuchen Sie es bitte später noch einmal.'; +$string['parentlanguage'] = 'en'; +$string['qmanage'] = 'Befragungen bearbeiten
              Zur Zeit keine deutsche Fassung verfügbar
              Vorhandene User in phpESP nicht löschen!
              Achtung: Befragungen sind für alle Trainer/innen sichtbar und bearbeitbar.'; +$string['qmanagetitle'] = 'Management der Befragungen mit phpESP
              phpESP ist ein externes Programm, das an moodle angebunden ist.'; $string['qtype'] = 'Wiederholungsoption'; $string['questionnaireid'] = 'Befragung auswählen'; $string['respondenttype'] = 'Anonyme Antworten'; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'de'; ?> diff --git a/lang/de/quiz.php b/lang/de/quiz.php index 008d84f2300..22b2aab335e 100644 --- a/lang/de/quiz.php +++ b/lang/de/quiz.php @@ -1,21 +1,15 @@
              Nachdem Sie eine Kategorie eingerichtet haben, können Sie Fragen erzeugen oder bearbeiten. Sie können jede einzelne dieser Fragen auswählen und Ihrem Test in der anderen Spalte hinzufügen.'; +$string['addingquestions'] = 'Diese Spalte der Seite ist zum Verwalten von Testfragen. Fragen werden in Kategorien gespeichert, um sie besser organisieren zu können, und können von jedem Test Ihres Kurses oder sogar von anderen Kursen (Wenn man \'veröffentlichen\' ausgewählt hat) benutzt werden.

              Nachdem Sie eine Kategorie erzeugt haben, können Sie Fragen erzeugen oder bearbeiten. Sie können jede dieser Fragen auswählen und Ihrem Test in der anderen Spalte hinzufügen.'; $string['addquestions'] = 'Fragen hinzufügen'; $string['addquestionstoquiz'] = 'Frage zu aktuellem Test hinzufügen'; -$string['addrandom1'] = 'Hinzufügen'; -$string['addrandom2'] = 'Zufallsfrage'; $string['addselectedtoquiz'] = 'Auswahl zum Test hinzufügen'; -$string['addtoquiz'] = 'Zum Test hinzufügen'; -$string['aiken'] = 'AIKEN Format'; -$string['allinone'] = 'Unbegrenzt'; -$string['allowreview'] = 'Ergebnisbericht erlauben'; +$string['aiken'] = 'Aiken Format'; +$string['allowreview'] = 'Bericht erlauben'; $string['alreadysubmitted'] = 'Es sieht so aus, als hätten Sie diesen Versuch schon eingetragen'; -$string['alternativeunits'] = 'Alternative Einheiten'; $string['alwaysavailable'] = 'Immer verfügbar'; $string['answer'] = 'Antwort'; $string['answerhowmany'] = 'Eine oder mehrere Antworten?'; @@ -25,79 +19,48 @@ $string['answerswithacceptederrormarginmustbenumeric'] = 'Antworten mit akzeptie $string['answertoolong'] = 'Die Antwort ist nach Zeile $a zu lang (Sie können bis zu 255 Zeichen eingeben).'; $string['aon'] = 'AON Format'; $string['attempt'] = 'Versuch $a'; -$string['attemptduration'] = 'Verbrauchte Zeit'; -$string['attemptedon'] = 'Versucht am'; $string['attemptfirst'] = 'Erster Versuch'; $string['attemptincomplete'] = 'Dieser Versuch von $a ist noch nicht vollständig abgeschlossen.'; $string['attemptlast'] = 'Letzter Versuch'; -$string['attemptquiznow'] = 'Test jetzt durchführen'; +$string['attemptquiznow'] = 'Test jetzt probieren'; $string['attempts'] = 'Versuche'; $string['attemptsallowed'] = 'Erlaubte Versuche'; $string['attemptsexist'] = 'Dieser Test wurde bereits von Ihnen durchgeführt.'; $string['attemptsunlimited'] = 'Unbegrenzte Versuche'; -$string['back'] = 'Zurück zur vorherigen Antwort'; $string['backtoquiz'] = 'Zurück zur Testbearbeitung'; -$string['bestgrade'] = 'Beste Punkte'; +$string['bestgrade'] = 'Bestnote'; $string['blackboard'] = 'Blackboard (Lernmanagementsystem)'; -$string['calculated'] = 'Berechnung'; $string['calculatedquestion'] = 'Die berechnete Frage in Zeile $a wird nicht unterstützt. Die Frage wird ignoriert.'; $string['caseno'] = 'Nein, Schreibweise ist unwichtig'; $string['casesensitive'] = 'Schreibweise'; $string['caseyes'] = 'Ja, Schreibweise muss stimmen'; $string['categories'] = 'Kategorien'; $string['category'] = 'Kategorie'; -$string['categoryadded'] = 'Kategorie \'$a\' angelegt'; -$string['categorydeleted'] = 'Kategorie \'$a\' gelöscht'; $string['categoryinfo'] = 'Kategorie-Information'; $string['categorymove'] = 'Die Kategorie \'$a->name\' enthält $a->count Fragen. Bitte wählen Sie eine andere Kategorie, um sie zu verschieben.'; $string['categorymoveto'] = 'In diese Kategorie verschieben'; -$string['categorynoedit'] = 'Sie haben keinen Bearbeitungszugriff auf Kategorie \'$a\'.'; -$string['categoryupdated'] = 'Die Kategorie wurde erfolgreich aktualisiert'; -$string['checkanswer'] = 'Prüfen'; $string['choice'] = 'Auswahl'; $string['choices'] = 'Verfügbare Auswahl'; -$string['choosedatasetproperties'] = 'Datensatzeigenschaften auswählen'; -$string['close'] = 'Vorschau schließen'; -$string['confirmstartattempt'] = 'Der Test muss in einer festgelegten Zeit abgeschlossen werden. Sind Sie sicher, dass Sie jetzt beginnen wollen?'; -$string['copyingfrom'] = 'Erstellen einer Kopie der Frage \'$a\''; -$string['copyingquestion'] = 'Eine Frage kopieren'; $string['correctanswer'] = 'Richtige Antwort'; -$string['correctanswerformula'] = 'Formel für richtige Antwort'; -$string['correctanswerlength'] = 'Signifikante Zahlen'; $string['correctanswers'] = 'Richtige Antworten'; -$string['correctanswershows'] = 'Die richtige Antwort zeigt '; -$string['corrresp'] = 'Richtige Rückantwort'; +$string['corrresp'] = 'richtige Rückantwort'; $string['countdown'] = 'Countdown'; -$string['countdownfinished'] = 'Das Test wird beendet, Sie sollten Ihre Antworten jetzt sofort absenden.'; +$string['countdownfinished'] = 'Das Test ist beendet, Sie sollten Ihre Antworten jetzt absenden.'; $string['countdowntenminutes'] = 'Das Test endet in 10 Minuten.'; $string['coursetestmanager'] = 'Kurstest Managerformat'; -$string['createfirst'] = 'Sie müssen zuerst einige Kurzantwort-Fragen anlegen'; $string['createmultiple'] = 'Mehrere Fragen erstellen'; $string['createnewquestion'] = 'Eine neue Frage anlegen'; $string['custom'] = 'Eigenes Format'; -$string['datasetdefinitions'] = 'Wiederverwendbare Datensatzdefinitionen für Kategorie $a'; -$string['datasetnumber'] = 'Anzahl'; $string['daysavailable'] = 'Tage verfügbar'; -$string['decimalformat'] = 'Dezimalen'; -$string['decimalpoints'] = 'Dezimalpunkte'; -$string['decimals'] = 'mit $a'; $string['default'] = 'Standard'; $string['defaultgrade'] = 'Standard-Note der Frage'; $string['defaultinfo'] = 'Die Standard-Kategorie für diese Frage'; $string['deleteattemptcheck'] = 'Sind Sie wirklich sicher, dass Sie diese Versuche löschen wollen?'; $string['deletequestioncheck'] = 'Sind Sie sich absolut sicher, dass Sie \'$a\' löschen möchten?'; -$string['deletequestionscheck'] = 'Sind Sie sich wirklich sicher, dass Sie diese Frage löscehn wollen?

              $a
              '; -$string['deleteselected'] = 'Ausgewählte löschen'; $string['description'] = 'Beschreibung'; $string['discrimination'] = 'Index für die Abgrenzung'; -$string['displayoptions'] = 'Anzeigeoptionen'; -$string['download'] = 'Klick zum Download der exportierten Kategorien'; -$string['downloadextra'] = '(Datei ist im Kursverzeichnis im Ordner /quiz abgelegt)'; $string['eachattemptbuildsonthelast'] = 'Jeder Versuch basiert auf dem Letzten'; $string['editcategories'] = 'Kategorien bearbeiten'; -$string['editcategory'] = 'Kategorien bearbeiten'; -$string['editdatasets'] = 'Datensatz bearbeiten'; -$string['editingcalculated'] = 'Bearbeiten einer Berechnungs-Frage'; $string['editingdescription'] = 'Eine Beschreibung bearbeiten'; $string['editingmatch'] = 'Eine Zuordnungsfrage bearbeiten'; $string['editingmultianswer'] = 'Eine Frage mit Lückentext bearbeiten'; @@ -111,69 +74,36 @@ $string['editingshortanswer'] = 'Kurzantwort der Frage bearbeiten'; $string['editingtruefalse'] = 'Ja/Nein-Frage bearbeiten'; $string['editquestions'] = 'Fragen bearbeiten'; $string['errorsdetected'] = '$a Fehler entdeckt'; -$string['existingcategory1'] = 'Eine Schreibweise aus einer bereits existierenden Menge von Schreibweisen, die auch von anderen Fragen in dieser Kategorie genutzt werden'; -$string['existingcategory2'] = 'Eine Datei aus einer bereits existierenden Menge von Dateien, die auch von anderen Fragen in dieser Kategorie genutzt werden'; -$string['existingcategory3'] = 'Ein Link aus einer bereits existierenden Menge von Links, die auch von anderen Fragen in dieser Kategorie genutzt werden'; -$string['exportfilename'] = 'Test'; -$string['exportname'] = 'Dateiname'; -$string['exportnameformat'] = '%%J%%M%%T-%%H%%M'; -$string['exportquestions'] = 'Fragen in Datei exportieren'; $string['false'] = 'Falsch'; $string['feedback'] = 'Rückmeldung'; -$string['file'] = 'Datei'; $string['fileformat'] = 'Dateiformat'; $string['filloutoneanswer'] = 'Sie müssen mindestens eine mögliche Antwort geben. Leere Antworten werden ignoriert.'; -$string['filloutthreequestions'] = 'Sie müssen mindestens drei Fragen auswählen. Leere Fragen werden nicht verwendet'; -$string['fillouttwochoices'] = 'Sie müssen mindestens zwei mögliche Antworten geben. Leere Antworten werden ignoriert.'; -$string['forceregeneration'] = 'erzwungene Wiederherstellung'; -$string['fractionsaddwrong'] = 'Ihre positiven gewählten Punktzahlen ergeben keine 100%%. +$string['filloutthreequestions'] = 'Sie müssen mindestens 3 Fragen auswählen. Leere Fragen werden nicht verwendet'; +$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%% -
              Statt dessen ergeben Sie $a%% +
              Statt dessen ergeben Sie $a%% -
              Möchten Sie zurück gehen und diese Frage korrigieren?'; +
              Möchten Sie zurück gehen und diese Frage korrigieren?'; $string['fractionsnomax'] = 'Eine dieser Antworten sollte 100%% sein, so dass -
              es möglich ist, die volle Punktzahl für diese Frage zu bekommen. +
              es möglich ist, die volle Punktzahl für diese Frage zu bekommen. -
              Möchten Sie zurück gehen und diese Frage korrigieren?'; -$string['functiontakesatleasttwo'] = 'Die Funktion $a erfordert mindestens zwei Einträge'; -$string['functiontakesnoargs'] = 'Die Funktion $a hat keine Einträge'; -$string['functiontakesonearg'] = 'Die Funktion $a erfordert genau einen Eintrag'; -$string['functiontakesoneortwoargs'] = 'Die Funktion $a erfordert entweder einen oder zwei Einträge'; -$string['functiontakestwoargs'] = 'Die Funktion $a erfordert genau zwei Einträge'; -$string['generatevalue'] = 'Erstelle einen neuen Wert zwischen'; -$string['geometric'] = 'Geometrisch'; +
              Möchten Sie zurück gehen und diese Frage korrigieren?'; $string['gift'] = 'GIFT Format'; -$string['grade'] = 'Punkte'; -$string['gradeaverage'] = 'Durchschnittspunkte'; -$string['gradehighest'] = 'Maximal erzielte Punkte'; -$string['grademethod'] = 'Bewertungsmethode'; +$string['gradeaverage'] = 'Durchschnittsnote'; +$string['gradehighest'] = 'Beste Note'; +$string['grademethod'] = 'Bewertungsschema'; $string['guestsno'] = 'Entschuldigung, aber Gäste können den Test nicht sehen oder probieren.'; -$string['illegalformulasyntax'] = 'Fehlerhafte Formel-Syntax beginnend mit $a'; $string['imagedisplay'] = 'Bild für die Anzeige'; $string['imagemissing'] = 'Bild in Zeile $a nicht verfügbar. Der Dateiname wird ignoriert'; $string['importquestions'] = 'Eine Frage aus einer Datei importieren'; $string['indivresp'] = 'Rückantwort für jeden zu jeder Position'; -$string['introduction'] = 'Zusammenfassung'; +$string['introduction'] = 'Einleitung'; $string['itemanal'] = 'Antwortanalyse des Elements'; -$string['itemdefinition'] = 'Definition'; -$string['keptcategory1'] = 'Eine Schreibweise derselben Kategorie wiederverwendbare Menge von Schreibweisen wie vorher (a literal from the same category reusable set of literals as before)'; -$string['keptcategory2'] = 'Eine Datei derselben Kategorie wiederverwendbare Menge von Dateien wie vorher (a file from the same category reusable set of files as before)'; -$string['keptcategory3'] = 'Ein Link derselben Kategorie wiederverwendbare Menge von Links wie vorher (a link from the same category reusable set of links as before)'; -$string['keptlocal1'] = 'Eine Schreibweise derselben Frage nicht öffentliche Menge von Schreibweisen wie zuvor (a literal from the same question private set of literals as before)'; -$string['keptlocal2'] = 'Eine Datei derselben Frage nicht öffentliche Menge von Schreibweisen wie zuvor (a file from the same question private set of files as before)'; -$string['keptlocal3'] = 'Ein Link derselben Frage nicht öffentliche Menge von Links wie zuvor (a link from the same question private set of links as before)'; -$string['learnwise'] = 'Learnwise Format'; -$string['link'] = 'Link'; -$string['listitems'] = 'Liste der Elemente des Tests'; -$string['literal'] = 'Schreibweise'; -$string['loguniform'] = 'Ziffern von einer loguniform Distribution'; -$string['makecopy'] = 'Als neue Frage abspeichern'; +$string['listitems'] = 'Liste der Elementes des Tests'; $string['marks'] = 'Punkte'; $string['match'] = 'Zuordnung'; $string['matchanswer'] = 'zugeordnete Antwort'; -$string['max'] = 'Max'; -$string['min'] = 'Min'; -$string['minutes'] = 'Minuten'; $string['missinganswer'] = 'Zu wenig :Antworten, :Lx, :Rx Antworten für Zeile $a. Sie müssen mindestens zwei mögliche Antworten eingeben'; $string['missingcorrectanswer'] = 'Die korrekte Antwort muss angegeben werden'; $string['missingname'] = 'Der Name der Frage fehlt'; @@ -182,149 +112,86 @@ $string['missingquestiontext'] = 'Der Text der Frage fehlt'; $string['missingword'] = 'Das Wortformat fehlt'; $string['modulename'] = 'Test'; $string['modulenameplural'] = 'Tests'; -$string['moveto'] = 'Verschieben nach >>'; $string['multianswer'] = 'Lückentext'; -$string['multichoice'] = 'Multiple-Choice'; -$string['multiplier'] = 'Multiplikator'; +$string['multichoice'] = 'Mehrfachauswahl'; $string['name'] = 'Name'; -$string['newcategory1'] = 'Eine Schreibweise von einer neuen Menge von Schreibweisen, die auch von anderen Fragen dieser Kategorie genutzt werden kann'; -$string['newcategory2'] = 'Eine Datei von einer neuen Menge von Dateien, die auch von anderen Fragen dieser Kategorie genutzt werden kann'; -$string['newcategory3'] = 'Ein Link von einer neuen Menge von Links, der auch von anderen Fragen dieser Kategorie genutzt werden kann'; -$string['newlocal1'] = 'Eine Schreibweise von einer neuen Menge von Schreibweisen, die nur von dieser Frage genutzt werden kann'; -$string['newlocal2'] = 'Eine Datei von einer neuen Menge von Dateien, die nur von dieser Frage genutzt werden kann'; -$string['newlocal3'] = 'Ein Link von einer neuen Menge von Links, der nur von dieser Frage genutzt werden kann'; $string['noanswers'] = 'Es wurden keine Antworten ausgewählt!'; -$string['noattempts'] = 'Diesen Test hat niemand ausgefüllt'; -$string['nodataset'] = 'nichts - es gibt keine Wild-Card'; -$string['nominal'] = 'Nominal'; +$string['noattempts'] = 'Diesen Test hat keiner ausgefüllt'; $string['nomoreattempts'] = 'Kein Versuch mehr zugelassen'; -$string['nopossibledatasets'] = 'Keine Datensätze möglich'; -$string['noquestionintext'] = 'Der Fragentext enthält keine Frageformulierung'; $string['noquestions'] = 'Es wurden noch keine Fragen eingetragen'; $string['noresponse'] = 'Keine Rückantwort'; $string['noreview'] = 'Sie dürfen diesen Test nicht überprüfen'; $string['noreviewuntil'] = 'Sie dürfen diesen Test bis $a nicht überprüfen'; -$string['noscript'] = 'JavaScript muss aktiviert sein, um fortzusetzen'; $string['notenoughanswers'] = 'Diese Art von Fragen erfordert zumindest $a Antworten'; -$string['notenoughsubquestions'] = 'Es wurden noch nicht genügend Unter-Fragen definiert\'
              +$string['notenoughsubquestions'] = 'Nicht genügend Unter-Fragen wurden definiert\'
              Möchten Sie zurück gehen und diese Frage korrigieren?'; $string['numerical'] = 'Numerisch'; -$string['optional'] = 'optional'; -$string['overdue'] = 'Überfällig'; $string['paragraphquestion'] = 'Fragezeichen in Zeile $a wird nicht unterstützt. Die Frage wird ignoriert.'; -$string['parent'] = 'Hauptkategorie'; -$string['passworderror'] = 'Das eingegebene Passwort war falsch'; $string['percentcorrect'] = 'Richtig in Prozent'; -$string['popup'] = 'Test in einem \"sicheren\" Fenster zeigen'; -$string['preview'] = 'Vorschau'; -$string['previewquestion'] = 'Vorschau der Frage'; $string['publish'] = 'Veröffentlichen'; -$string['publishedit'] = 'Um Fragen in dieser Kategorie zu bearbeiten, müssen Sie über die erforderlichen Rechte verfügen'; $string['qti'] = 'IMS QTI Format'; $string['question'] = 'Frage'; $string['questioninuse'] = 'Die Frage \'$a\' wird momentan benutzt:'; $string['questionname'] = 'Titel der Frage'; -$string['questionnametoolong'] = 'Bezeichnung der Frage in Zeile $a ist zu lang (max 255 Zeichen). Sie wurde gekürzt.'; +$string['questionnametoolong'] = 'Bezeichnung der Frage in Zeile $a ist zu lang (max 255 Zeichen). Er wurde gekürzt.'; $string['questions'] = 'Fragen'; -$string['questionsperpage'] = 'Höchstzahl der Fragen / Seite'; -$string['questiontypesetupoptions'] = 'Setup-Optionen für Fragentypen'; $string['quizavailable'] = 'Dieser Test ist verfügbar bis: $a'; -$string['quizclose'] = 'Test beenden (Datum, Uhrzeit)'; +$string['quizclose'] = 'Diesen Test schließen'; $string['quizclosed'] = 'Dieser Test schließt am $a'; $string['quizcloses'] = 'Test endet'; $string['quiznotavailable'] = 'Dieser Test ist nicht verfügbar bis: $a'; -$string['quizopen'] = 'Test beginnen (Datum, Uhrzeit)'; +$string['quizopen'] = 'Ein Test beginnen'; $string['quizopens'] = 'Test hat begonnen'; -$string['quiztimelimit'] = 'Zeitbegrenzung:$a'; -$string['quiztimer'] = 'Testuhr'; $string['random'] = 'Zufällig setzen'; $string['randomcreate'] = 'Eine Zufallsfrage erstellen'; $string['randomsamatch'] = 'Zufällige Kurzantwort-Zuordnungsfrage'; $string['randomsamatchcreate'] = 'Erzeuge zufällige Kurzantwort-Zuordnungsfragen'; $string['randomsamatchintro'] = 'Wählen Sie für jede der folgenden Fragen die passende Antwort aus dem Menü aus'; $string['randomsamatchnumber'] = 'Nummer auszuwählender Fragen'; -$string['readytosend'] = 'Sie sind dabei, Ihren ganzen Test zu senden, um beurteilt zu werden. Sind Sie sicher, dass Sie weitermachen wollen?'; -$string['reattemptquiz'] = 'Wiederholter Test'; +$string['readytosend'] = 'Sie sind dabei, Ihr ganzes Test zu senden, um benotet zu werden. Sind Sie sicher, dass Sie weitermachen wollen?'; $string['recentlyaddedquestion'] = 'Aktuell hinzugefügte Frage!'; -$string['recurse'] = 'Unterkategorien einbeziehen'; -$string['regrade'] = 'Alle Versuche neu bewerten'; -$string['regradecomplete'] = 'Alle Versuche wurden neu bewertet'; +$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['relative'] = 'Relativ'; -$string['remove'] = 'Entfernen'; $string['rename'] = 'Umbenennen'; -$string['replace'] = 'Ersetze'; -$string['replacementoptions'] = 'Ersetze in'; $string['report'] = 'Berichte'; $string['reportfullstat'] = 'Ausführliche Statistik'; $string['reportmulti_percent'] = 'Mehrere Prozentsätze'; $string['reportmulti_q_x_student'] = 'Mehrere Teilnehmer/innen Auswahl'; $string['reportmulti_resp'] = 'Individuelle Rückantwort'; $string['reportoverview'] = 'Übersicht'; -$string['reportregrade'] = 'Testversuche löschen'; +$string['reportregrade'] = 'Versuche zurücksetzen'; $string['reportsimplestat'] = 'Einfache Statistik'; -$string['requirepassword'] = 'Erfordert Passwort'; -$string['requirepasswordmessage'] = 'Zur Teilnahme am Test benötigen Sie ein Passwort'; -$string['requiresubnet'] = 'Netzwerk-Adresse erforderlich'; -$string['reuseifpossible'] = 'Wiederverwendung kürzlich entfernt'; $string['review'] = 'Bericht'; -$string['reviewafter'] = 'Rückschau zulassen, wenn der Test abgeschlossen ist'; -$string['reviewalways'] = 'Rückschau zu jeder Zeit zulassen'; -$string['reviewbefore'] = 'Rückschau zulassen, so lange der Test bearbeitet werden kann'; -$string['reviewnever'] = 'Rückschau nicht zu lassen'; $string['save'] = 'Speichern'; -$string['saveandedit'] = 'Änderungen speichern und Fragen bearbeiten'; -$string['savegrades'] = 'Beurteilungen speichern'; +$string['savegrades'] = 'Noten speichern'; $string['savemyanswers'] = 'Meine Antworten auswerten'; -$string['savequiz'] = 'Diesen gesamten Test speichern'; -$string['score'] = 'Grobe Punktezahl'; +$string['savequiz'] = 'Dieses gesamte Test speichern'; +$string['score'] = 'Grobe Punktzahl'; $string['select'] = 'Auswählen'; $string['selectall'] = 'Alles auswählen'; $string['selectcategoryabove'] = 'Wählen Sie eine obige Kategorie'; -$string['selectedattempts'] = 'Ausgewählte Versuche ...'; -$string['selectnone'] = 'Ausgewählte abwählen'; $string['shortanswer'] = 'Kurzantwort'; $string['show'] = 'Zeigen'; $string['showcorrectanswer'] = 'Nach dem Antworten richtige Antwort anzeigen?'; -$string['showdetailedmarks'] = 'Detials für markierte anzeigen'; $string['showfeedback'] = 'Nach dem Antworten Rückmeldung anzeigen?'; -$string['showhidden'] = 'Auch alte Fragen anzeigen'; -$string['shownoattempts'] = 'Teilnehmer/innen, die keine Versuche durchgeführt haben anzeigen'; -$string['showteacherattempts'] = 'Versucheder Trainer/innen anzeigen'; $string['shuffleanswers'] = 'Antworten mischen'; $string['shufflequestions'] = 'Fragen mischen'; -$string['significantfigures'] = 'mit $a'; -$string['significantfiguresformat'] = 'signifikante Ziffern'; -$string['subneterror'] = 'Entschuldigung, der Zugriff auf den Test ist nur von bestimmten Rechnern möglich. Ihr Computer kann den Test zur Zeit nicht starten.'; -$string['substitutedby'] = 'wird ersetzt durch'; $string['time'] = 'Zeit'; $string['timecompleted'] = 'Beendet'; -$string['timeleft'] = 'Verbleibende Zeit'; -$string['timelimit'] = 'Zeitbegrenzung (in Minuten)'; -$string['timelimitexeeded'] = 'Die Zeitbegrenzung für den Test ist abgelaufen.'; -$string['timesup'] = 'Zeit ist abgelaufen'; $string['timetaken'] = 'Verbrauchte Zeit'; -$string['tolerance'] = 'Toleranz'; -$string['tolerancetype'] = 'Toleranz Typ'; $string['toomanyrandom'] = 'Die Anzahl der benötigten Zufallsfragen ist größer als die, die die Kategorie enthält! ($a)'; -$string['top'] = 'Spitze'; $string['true'] = 'Wahr'; $string['truefalse'] = 'Wahr/Falsch'; $string['type'] = 'Typ'; -$string['uniform'] = 'Dezimalen, von einer einheitlichen Verteilung'; -$string['unit'] = 'Einheit'; $string['unknowntype'] = 'Fragentyp in Zeile $a wird nicht unterstützt. Die Frage wird ignoriert.'; -$string['unsupportedformulafunction'] = 'Die Funktion $a wird nicht unterstützt'; -$string['viewallanswers'] = 'Zeige $a ausgefüllte Tests'; +$string['viewallanswers'] = 'Zeige $a ausgefüllte Test'; $string['viewallreports'] = 'Berichte ansehen für $a Versuche'; $string['warningsdetected'] = '$a Warnung(en) entdeckt'; $string['webct'] = 'WebCT Format'; -$string['wildcard'] = 'Wild Card'; -$string['withsummary'] = 'mit zusammenfassender Statistik'; +$string['withsummary'] = 'mit zusammfassender Statistik'; $string['wronggrade'] = 'Falsche Bewertung (nach Zeile $a):'; -$string['xml'] = 'moodle XML Format'; $string['yourfinalgradeis'] = 'Ihre Gesamtnote für diesen Test ist $a'; -$string['zerosignificantfiguresnotallowed'] = 'Die richtige Antwort kann nicht null signifikante Ziffern haben!'; ?> diff --git a/lang/de/resource.php b/lang/de/resource.php index 5af8932e685..3f62cb76550 100644 --- a/lang/de/resource.php +++ b/lang/de/resource.php @@ -1,49 +1,37 @@ '; $string['filename'] = 'Dateiname'; $string['filtername'] = 'Automatische Verlinkung von Arbeitsunterlagen'; -$string['frameifpossible'] = 'Zeigt das Arbeitsmaterial in einem Frame. Die Seitennavigation bleibt sichtbar'; -$string['fulltext'] = 'Text-/Webseite'; +$string['fulltext'] = 'Voller Text'; $string['htmlfragment'] = 'HTML-Teil'; -$string['localfile'] = 'Lokale Datei'; -$string['localfilechoose'] = 'Wählen Sie eine lokale Datei aus (z.B. CD-ROM Laufwerk)'; -$string['localfilehelp'] = 'Hilfe zur Anzeige lokaler Dateien'; -$string['localfileinfo'] = '

              Wählen Sie eine lokale Datei von Ihrem Computer(-netzwerk). Die Datei wird nicht in das Kursverzeichnis hochgeladen. Beim Aufruf dieser Arbeitsunterlage wird die Datei an dem angegebenen Ort aufgerufen.

              Dies ist sehr nützlich wenn Sie große Dateien verwenden, die Sie auf CD-ROM an alle Teilnehmer/innen verteilen. Jede/r Teilnehmer/in kann für den Zugriff einen eigenen Pfad für solche Dateien im Nutzerprofil definieren. -Nutzerprofil bearbeiten.

              '; -$string['localfilepath'] = 'Legen Sie den Pfad zu den Arbeitsmaterialien auf Ihrem PC (z.B. CD-Rom-Laufwerk) fest. Wählen Sie dazu irgendeine Datei auf diesem Laufwerk aus. Die Datei wird nicht hochgeladen, aber die Verzeichnisinformation wird abgespeichert und für alle lokalen Dateiressourcen verwandt.'; $string['maindirectory'] = 'Hauptverzeichnis für Dateien'; $string['modulename'] = 'Arbeitsmaterial'; $string['modulenameplural'] = 'Arbeitsmaterialien'; @@ -60,17 +48,12 @@ $string['newtoolbar'] = 'Die Werkzeugleiste anzeigen'; $string['newwidth'] = 'Standard Fensterbreite (in Pixeln)'; $string['newwindow'] = 'Neues Fenster'; $string['newwindowopen'] = 'Dieses Quelle in einem neuen Popup-Fenster anzeigen'; -$string['notallowedlocalfileaccess'] = 'Der Zugriff auf lokale Dateiressourcen ist zur Zeit nicht aktiviert. Daher sind die Materialien nicht verfügbar.'; $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 -Datei-Manager.'; +Datei-Manager.'; $string['notypechosen'] = 'Sie müssen einen Typ auswählen. Verwenden Sie den Zurück-Knopf und probieren Sie es erneut'; -$string['pagedisplay'] = 'Zeigt das Arbeitsmaterial im derzeitigen Fenster'; -$string['pagewindow'] = 'Gleiches Fenster'; -$string['parameter'] = 'Einstellung'; -$string['parameters'] = 'Einstellungen'; $string['popupresource'] = 'Diese Quelle erscheint in einem Pop-Up-Fenster'; -$string['popupresourcelink'] = 'Wenn es nicht klappt, klicken Sie hier $a'; +$string['popupresourcelink'] = 'Wenn es nicht klappt, klicken sie hier $a'; $string['resourcetype'] = 'Typ der Quelle'; $string['resourcetype1'] = 'Referenz'; $string['resourcetype2'] = 'Internet-Seite'; @@ -81,13 +64,5 @@ $string['resourcetype6'] = 'HTML-Text'; $string['resourcetype7'] = 'Programm'; $string['resourcetype8'] = 'Wiki-Text'; $string['resourcetype9'] = 'Verzeichnis'; -$string['resourcetypedirectory'] = 'Ein Verzeichnis anzeigen'; -$string['resourcetypefile'] = 'Link auf Datei oder Webseite'; -$string['resourcetypehtml'] = 'Erstellen einer Webseite'; -$string['resourcetypelabel'] = 'Bezeichnung einfügen'; -$string['resourcetypetext'] = 'Erstellen einer Textseite'; -$string['searchweb'] = 'Suche nach einer Webseite'; -$string['serverurl'] = 'Server URL ($a->wwwroot)'; -$string['variablename'] = 'Name der Variable'; ?> diff --git a/lang/de/scheduler.php b/lang/de/scheduler.php index 9864b24dc26..1853d14c6ee 100644 --- a/lang/de/scheduler.php +++ b/lang/de/scheduler.php @@ -1,5 +1,5 @@ diff --git a/lang/de/scorm.php b/lang/de/scorm.php index 491f6aed0bb..e741787d1f4 100644 --- a/lang/de/scorm.php +++ b/lang/de/scorm.php @@ -1,81 +1,37 @@ attr) in Tag $a->tag'; $string['autocontinue'] = 'Automatische Fortsetzung'; -$string['badmanifest'] = 'Einige dauerhafte Fehler: siehe Fehlerprotokoll'; $string['browse'] = 'Durchsuchen'; $string['browsed'] = 'Durchsucht'; $string['browsemode'] = 'Durchsuchen Einstellung'; $string['chooseapacket'] = 'Auswählen oder aktualisieren eines SCORM Pakets'; $string['completed'] = 'Abgeschlossen'; -$string['configframesize'] = 'Dieser Wert ist die Größe (in Pixeln) des Topframes (mit der Navigation) wenn ein Scormpaket ausgeführt wird.'; -$string['configpopup'] = 'Wenn ein neues SCORM-Paket ergänzt wird, das in einem Popup-Fenster angezeigt werden kann, soll diese Option als Grundeinstellung gewählt werden?'; -$string['configpopupheight'] = 'Welche Höhe sollte ein Popup-Fenster als Grundeinstellung haben?'; -$string['configpopupresizable'] = 'Sollen Popup-Fenster normalerweise in der Größe anpassbar sein?'; -$string['configpopupscrollbars'] = 'Sollten Popup-Fenster normalerweise scrollbar sein?'; -$string['configpopupstatus'] = 'Sollen Popup-Fenster normalerweise den Status anzeigen? '; -$string['configpopupwidth'] = 'Welche Breite sollte ein Popup-Fenster normalerweise haben?'; $string['coursepacket'] = 'Kurspaket'; $string['coursestruct'] = 'Kursstruktur'; $string['datadir'] = 'Dateisystemfehler: Verzeichnis für Kursdaten konnte nicht erstellt werden'; -$string['display'] = 'Anzeige'; -$string['domxml'] = 'DOMXML externe Bibliothek'; $string['entercourse'] = 'SCORM Kurs starten'; -$string['errorlogs'] = 'Fehlerprotokoll'; -$string['exit'] = 'SCORM-Kurs beenden'; -$string['expcoll'] = 'Entfalten/Zusammensetzen'; $string['failed'] = 'Fehlgeschlagen'; -$string['found'] = 'Manifest gefunden'; -$string['gradeaverage'] = 'Durchschnittsnote'; -$string['gradehighest'] = 'Höchstnote'; -$string['grademethod'] = 'Bewertungsmethode'; -$string['gradescoes'] = 'Scoes Situation'; -$string['gradesum'] = 'Summe der Bewertungen'; -$string['guestsno'] = 'Gäste können Scorm-Kurse nicht ansehen'; $string['incomplete'] = 'Unvollständig'; -$string['missing_attribute'] = 'Fehlende Attribute $a->attr in Tag $a->tag'; -$string['missing_tag'] = 'Fehlendes Tag $a->tag'; $string['mode'] = 'Einstellung'; $string['modulename'] = 'SCORM'; $string['modulenameplural'] = 'SCORMS'; -$string['newheight'] = 'Voreingestellte Höhe der Fenster (in Pixeln)'; -$string['newresizable'] = 'Fenster kann in der Größe angepasst werden'; -$string['newscrollbars'] = 'Fenster kann gescrollt werden'; -$string['newstatus'] = 'Statusanzeige zeigen'; -$string['newwidth'] = 'Voreingestellte Größe der Fenster (in Pixeln)'; -$string['newwindow'] = 'Neues Fenster'; -$string['newwindowopen'] = 'Das Scorm-Paket in einem neuen Popup-Fenster anzeigen'; $string['next'] = 'Fortsetzen'; -$string['no_attributes'] = 'Tag $a->tag muss Attribute haben'; -$string['no_children'] = 'Tag $a->tag muss Kinder (children) haben'; $string['nomanifest'] = 'Zeichen nicht gefunden'; $string['noreports'] = 'Kein Bericht zum Anzeigen vorhanden'; $string['normal'] = 'Normal'; -$string['not_corr_type'] = 'Falsche Schreibweise im Tag $a->tag'; $string['notattempted'] = 'Nicht versucht'; -$string['organizations'] = 'Organisationen'; $string['packagedir'] = 'Dateisystemfehler: Verzeichnis für Paket kann nicht erstellt werden'; $string['passed'] = 'Abgeschlossen'; -$string['php5'] = 'PHP 5 (DOMXML native library)'; -$string['position_error'] = 'Der $a-tag Tag kann nicht Kind/Child des $a->parent Tag sein'; $string['prev'] = 'Vorheriges'; $string['regular'] = 'Reguläres Zeichen'; $string['report'] = 'Bericht'; $string['review'] = 'Rückblick'; -$string['scoes'] = 'Scoes'; $string['score'] = 'Bewertung'; -$string['syntax'] = 'Schreibfehler'; -$string['tag_error'] = 'Unbekannter Tag ($a->tag) mit dem Inhalt: $a->value'; -$string['too_many_attributes'] = 'Tag $a->tag hat zu viele Attribute'; -$string['too_many_children'] = 'Tag $a->tag hat zu viele Kinder/children'; $string['trackingloose'] = 'WARNUNG: Trackingdaten dieses SCORM Paketes gehen verloren!'; $string['validateascorm'] = 'Überprüfen eines SCORM Pakets'; $string['validation'] = 'Prüfergebnis'; -$string['validationtype'] = 'Die Einstellungen der DOMXML Library werden zur Prüfung des SCORM Manifests verwandt. Wenn Sie sich nicht genau auskennen, lassen Sie die Einstellungen unverändert stehen.'; -$string['versionwarning'] = 'Die Version des Manifests ist älter als 1.3, Warnung beim $a->tag Tag'; $string['viewallreports'] = 'Berichte für $a Versuche anzeigen'; ?> diff --git a/lang/de/survey.php b/lang/de/survey.php index a45a3463ed9..8c13e2d692e 100644 --- a/lang/de/survey.php +++ b/lang/de/survey.php @@ -1,116 +1,116 @@ Es gibt keine \'richtigen\' oder \'falschen\' Antworten; wir sind nur an Ihrer Meinung interessiert.
              Wir versichern Ihnen, dass Ihre Antworten vertraulich behandelt werden und keine Auswirkung auf die Beurteilung ihres Lernerfolgs im Kurs haben. '; -$string['attlsm1'] = 'Einstellung gegenüber Denken und Lernen'; -$string['attlsm2'] = 'Gebundenes Lernen '; -$string['attlsm3'] = 'Abgelöstes Lernen'; -$string['attlsmintro'] = 'In einer Diskussion verhalte ich mich so:'; +$string['attls8'] = 'Ich bin immer daran interessiert, zu wissen, warum die Leute die Dinge sagen und glauben, die sie von sich geben. '; +$string['attls8short'] = 'Wissen, warum Leute Sachen von sich geben'; +$string['attls9'] = 'Ich ertappe mich oft dabei, mit den Autoren von Büchern zu diskutieren, die ich lese und versuche, logisch zu begreifen, warum sie Unrecht haben. '; +$string['attls9short'] = 'Mit Autoren diskutieren'; +$string['attlsintro'] = 'Der Zweck dieses Fragebogens ist, Ihre Denkweise und Einstellungen zum Lernen zu eruieren. Es gibt keine \'richtigen\' oder \'falschen\' Antworten; wir sind nur an Ihrer Meinung interessiert. Wir versichern Ihnen, dass Ihre Antworten vertraulich behandelt werden und Ihre Beurteilung nicht beeinflussen. '; +$string['attlsm1'] = 'Denkweise und Einstellung zum Lernen '; +$string['attlsm2'] = 'Gemeinsames Lernen '; +$string['attlsm3'] = 'Getrenntes Lernen'; +$string['attlsmintro'] = 'In der Diskussion...'; $string['attlsname'] = 'ATTLS (20 Punkte Version)'; -$string['ciq1'] = 'Wann haben Sie sich in diesem Kurs als Lernende/r am meisten engagiert?'; -$string['ciq1short'] = 'Stark beteiligt'; -$string['ciq2'] = 'Wann hatten Sie als Lernende/r zu diesem Kurs die meiste Distanz?'; -$string['ciq2short'] = 'stark distanziert'; -$string['ciq3'] = 'Welche Aktivität im Forum fanden Sie besonders bestätigend oder hilfreich?'; +$string['ciq1'] = 'Zu welchem Zeitpunkt waren Sie am meisten engagiert in der Klasse als Lernender?'; +$string['ciq1short'] = 'Stark beteiligt/engagiert'; +$string['ciq2'] = 'Zu welchem Zeitpunkt waren Sie am meisten distanziert in der Klasse als Lernender?'; +$string['ciq2short'] = 'Desinteressiert/distanziert'; +$string['ciq3'] = 'Welche Aktion von allen im Forum fanden Sie am meisten bestätigend oder hilfreich?'; $string['ciq3short'] = 'Hilfreiche Momente'; -$string['ciq4'] = 'Welche Aktivität im Forum fanden Sie besonders merkwürdig oder verwirrend?'; -$string['ciq4short'] = 'Verwirrende Momente'; +$string['ciq4'] = 'Welche Aktion von allen im Forum fanden Sie am meisten verwirrend oder irritierend?'; +$string['ciq4short'] = 'Irritierende Momente'; $string['ciq5'] = 'Was hat Sie am meisten überrascht?'; $string['ciq5short'] = 'Überraschende Momente'; -$string['ciqintro'] = 'Bitte denken Sie daran zurück, was in letzter Zeit in diesem Modul oder Kurs geschehen ist, und beantworten Sie die folgenden Fragen. '; +$string['ciqintro'] = 'Während Sie über die Ereignisse in dieser Klasse in den vergangenen Wochen nachdenken, beantworten Sie die folgenden Fragen.'; $string['ciqname'] = 'Kritische Ereignisse'; $string['clicktocontinue'] = 'Klicken Sie hier, um weiterzumachen '; -$string['clicktocontinuecheck'] = 'Klicken Sie hier, um die bisherigen Antworten zu überprüfen und weiterzumachen '; -$string['colles1'] = 'Mein Lernen ist auf Themen konzentriert, die mich interessieren. '; +$string['clicktocontinuecheck'] = 'Klicken Sie hier, um zu überprüfen und weiterzumachen '; +$string['colles1'] = 'Mein Lernschwerpunkt zielt auf Angelegenheiten, die mich interessieren. '; $string['colles10'] = 'Ich bitte andere Teilnehmer/innen darum, ihre Ideen zu erklären. '; $string['colles10short'] = 'Ich bitte um Erklärungen '; -$string['colles11'] = 'Andere Teilnehmer/innen bitten mich darum, meine Ideen zu erklären. '; +$string['colles11'] = 'Andere Teilnemer/innen bitten mich darum, meine Ideen zu erklären. '; $string['colles11short'] = 'Ich werde darum gebeten zu erklären '; -$string['colles12'] = 'Andere Teilnehmer/innen setzen sich mit meinen Ideen auseinander. '; -$string['colles12short'] = 'Teilnehmer/innen setzen sich mit mir auseiander'; -$string['colles13'] = 'Der/die Trainer/in regt mich zum Denken an. '; -$string['colles13short'] = 'Trainer/in regt Denken an '; -$string['colles14'] = 'Der /die Trainer/in ermutigt mich, teilzunehmen. '; -$string['colles14short'] = 'Trainer/in ermutigt mich'; -$string['colles15'] = 'Der/die Trainer/in gibt ein Modell für guten Diskurs vor.'; -$string['colles15short'] = 'Trainer/in modelliert Diskurs'; -$string['colles16'] = 'Der/die Trainer/in modelliert kritische Selbstreflexion. '; -$string['colles16short'] = 'Trainer/in modelliert Selbstreflexion'; -$string['colles17'] = 'Andere Teilnehmer/innen ermutigen mich zur Beteiligung. '; +$string['colles12'] = 'Andere Teilnehmer/innen antworten auf meine Ideen. '; +$string['colles12short'] = 'Teilnehmer/innen antworten mir '; +$string['colles13'] = 'Der/die Tutor/in regt mein Denken an. '; +$string['colles13short'] = 'Der/dieTutor/in regt Denken an '; +$string['colles14'] = 'Der /die Tutor(in ermutigt mich, teilzunehmen. '; +$string['colles14short'] = 'Der/die Tutor/in ermutigt mich'; +$string['colles15'] = 'Der/die Tutor/in modelliert guten Diskurs. '; +$string['colles15short'] = 'Der/die Tutor/in modelliert Diskurs'; +$string['colles16'] = 'Dr /die Tutor/in modelliert kritische Selbstspiegelung. '; +$string['colles16short'] = 'Der/dieTutor/in modelliert Selbstspiegelung '; +$string['colles17'] = 'Andere Teilnehmer/innen ermutigen zu meiner Beteiligung. '; $string['colles17short'] = 'Teilnehmer/innen ermutigen mich '; $string['colles18'] = 'Andere Teilnehmer/innen loben meinen Beitrag. '; $string['colles18short'] = 'Teilnehmer/innen loben mich '; $string['colles19'] = 'Andere Teilnehmer/innen schätzen meinen Beitrag. '; $string['colles19short'] = 'Teilnehmer/innen schätzen mich '; -$string['colles1short'] = 'Auf interessante Angelegenheiten konzentrieren'; +$string['colles1short'] = 'Auf interessante Angelegenheiten hinweisen'; $string['colles2'] = 'Was ich lerne, ist für meine berufliche Praxis wichtig. '; -$string['colles20'] = 'Andere Teilnehmer/innen sympathisieren mit meinen Lernbemühungen.'; -$string['colles20short'] = 'Teilnehmer/innen sympathisieren'; -$string['colles21'] = 'Es gelingt mir gut, die Mitteilungen der anderen Teilnehmer/innen zu verstehen.'; +$string['colles20'] = 'Andere Teilnehmer/innen fühlen mit, bei meinen Anstrengungen zu lernen. '; +$string['colles20short'] = 'Teilnehmer/innen fühlen mit'; +$string['colles21'] = 'Ich profitiere von den Mitteilungen der anderen Teilnehmer/innen. '; $string['colles21short'] = 'Ich verstehe andere Teilnehmer/innen '; -$string['colles22'] = 'Anderen Teilnehmer/innen gelingt es gut, meine Mitteilungen zu verstehen.'; +$string['colles22'] = 'Andere Teilnehmer/inneen machen guten Gebrauch von meinen Mitteilungen.'; $string['colles22short'] = 'Teilnehmer/innen verstehen mich '; -$string['colles23'] = 'Es gelingt mir gut, die Mitteilungen des/der Trainer/in zu verstehen. '; -$string['colles23short'] = 'Ich verstehe den/die Trainer/in '; -$string['colles24'] = 'Der/die Trainer/in versteht meine Mitteilungen gut. '; -$string['colles24short'] = 'Der /dieTrainer/in versteht mich '; -$string['colles2short'] = 'Wichtig für meine Berufspraxis'; -$string['colles3'] = 'Ich lerne, wie ich meine berufliche Praxis verbessern kann. '; -$string['colles3short'] = 'Berufspraxis verbessern'; -$string['colles4'] = 'Was ich lerne, lässt sich gut mit meiner Berufspraxis verbinden. '; -$string['colles4short'] = 'Verbindet sich mit meiner Praxis'; -$string['colles5'] = 'Ich denke kritisch darüber nach, wie ich lerne. '; -$string['colles5short'] = 'Ich stehe meinem Lernen selbstkritisch gegenüber. '; -$string['colles6'] = 'Ich stehe meinen Ideen selbstkritisch gegenüber.'; +$string['colles23'] = 'Ich profitiere von den Aussagen des/der Tutors/in. '; +$string['colles23short'] = 'Ich verstehe den/die Tutor/in '; +$string['colles24'] = 'Der/die Tutor/in profitiert von meinen Nachrichten '; +$string['colles24short'] = 'Der /dieTutor/in versteht mich '; +$string['colles2short'] = 'Für meine Übung wichtig '; +$string['colles3'] = 'Ich erfahre, wie meine professionelle Übung zu verbessern ist. '; +$string['colles3short'] = 'Meine Übung verbessern '; +$string['colles4'] = 'Was ich lerne, verbindet sich gut mit meiner professionellen Übung. '; +$string['colles4short'] = 'Verbindet sich mit meiner Übung '; +$string['colles5'] = 'Ich denke kritisch darüber, wie ich lerne. '; +$string['colles5short'] = 'Ich bin gegenüber meinem Erlernen kritisch '; +$string['colles6'] = 'Ich denke kritisch über meine eigenen Ideen nach. '; $string['colles6short'] = 'Ich bin gegenüber meinen eigenen Ideen kritisch '; $string['colles7'] = 'Ich denke kritisch über die Ideen der anderen Teilnehmer/innen nach. '; $string['colles7short'] = 'Ich bin gegenüber anderen Teilnehmer/innen kritisch. '; @@ -118,14 +118,10 @@ $string['colles8'] = 'Ich denke kritisch $string['colles8short'] = 'Ich bin gegenüber dem Material kritisch '; $string['colles9'] = 'Ich erkläre anderen Teilnehmer/innen meine Ideen. '; $string['colles9short'] = 'Ich erkläre meine Ideen '; -$string['collesaintro'] = 'Diese Umfrage soll uns herausfinden helfen, wie gut dieser Kurs Sie in Ihrem Lernen unterstützt hat.
              -Jede der folgenden 24 Aussagen fragt nach Ihren Erfahrungen als Teilnehmer/in bei der Bearbeitung dieses Moduls.
              -Es gibt keine \'richtigen\' oder \'falschen\' Antworten; wir sind nur an Ihrer Meinung interessiert. Wir versichern Ihnen, dass Ihre Antworten mit größtmöglicher Vertraulichkeit behandelt werden und keinen Einfluss auf die Beurteilung Ihres Lernerfolgs haben werden. '; -$string['collesaname'] = 'COLLES (tatsächlich)'; -$string['collesapintro'] = 'Diese Umfrage soll uns herausfinden helfen, wie gut dieser Kurs Sie in Ihrem Lernen unterstützt hat.
              Bei jeder der folgenden 24 Aussagen vergleichen Sie bitte Ihre bevorzugten (idealen) Lernweisen mit Ihren tatsächlichen Erfahrungen in diesem Modul.
              -Es gibt keine \'richtigen\' oder \'falschen\' Antworten; wir sind nur an Ihrer Meinung interessiert. Wir versichern Ihnen, dass Ihre Antworten mit größtmöglicher Vertraulichkeit behandelt werden und keinen Einfluss auf die Beurteilung Ihres Lernerfolgs haben werden.
              -Wir werden Ihre Antworten sorgfältig durchdenken und daraus Schlüsse für die künftige Online-Präsentation dieses Themenbereichs ziehen.
              Herzlichen Dank!'; -$string['collesapname'] = 'COLLES (bevorzugt und tatsächlich) '; +$string['collesaintro'] = 'Zweck dieser Studie ist, die Lernqualität dieser Online-Einheit zu beurteilen. Jede der 24 Fragen unten fragt nach Ihrer Erfahrung in dieser Einheit. Es gibt keine \'richtigen\' oder \'falschen\' Antworten; wir sind nur an Ihrer Meinung interessiert. Bitte seien Sie versichert, dass Ihre Antworten vertraulich behandelt werden und Ihre Beurteilung nicht beeinflussen. Ihre Antworten helfen uns, die zukünftige Qualität der Online-Einheiten zu verbessern. Vielen Dank. '; +$string['collesaname'] = 'PÄSSE (tatsächlich)'; +$string['collesapintro'] = 'Zweck dieser Studie ist, die Lernqualität dieser Online-Einheit zu beurteilen. Jede der 24 Fragen unten fragt nach Ihrer Erfahrung in dieser Einheit. Es gibt keine \'richtigen\' oder \'falschen\' Antworten; wir sind nur an Ihrer Meinung interessiert. Bitte seien Sie versichert, dass Ihre Antworten vertraulich behandelt werden und Ihre Beurteilung nicht beeinflussen. Ihre Antworten helfen uns, die zukünftige Qualität der Online-Einheiten zu verbessern. Vielen Dank. '; +$string['collesapname'] = 'PÄSSE (bevorzugt und tatsächlich) '; $string['collesm1'] = 'Relevanz '; $string['collesm1short'] = 'Relevanz '; $string['collesm2'] = 'Reflektierendes Denken '; @@ -138,53 +134,50 @@ $string['collesm5'] = 'Unterst $string['collesm5short'] = 'Unterstützung durch andere Teilnehmer/innen'; $string['collesm6'] = 'Interpretation'; $string['collesm6short'] = 'Interpretation'; -$string['collesmintro'] = 'In Bezug auf diesen Online-Kurs denke ich folgendes:'; -$string['collespintro'] = 'Diese Umfrage soll uns herausfinden helfen, wie gut dieser Kurs Sie in Ihrem Lernen unterstützt hat.
              -Jede der folgenden 24 Aussagen fragt nach Ihren bevorzugten (idealen) Lernweisen.
              -Es gibt keine \'richtigen\' oder \'falschen\' Antworten; wir sind nur an Ihrer Meinung interessiert. Wir versichern Ihnen, dass Ihre Antworten mit größtmöglicher Vertraulichkeit behandelt werden und keinen Einfluss auf die Beurteilung Ihres Lernerfolgs haben werden.
              -Wir werden Ihre Antworten sorgfältig durchdenken und daraus Schlüsse für die künftige Online-Präsentation dieses Themenbereichs ziehen.
              Herzlichen Dank!'; -$string['collespname'] = 'COLLES (bevorzugt) '; +$string['collesmintro'] = 'In dieser Online-Einheit ... '; +$string['collespintro'] = 'Zweck dieser Studie ist, die Lernqualität dieser Online-Einheit zu beurteilen. Jede der 24 Fragen unten fragt nach Ihrer Erfahrung in dieser Einheit. Es gibt keine \'richtigen\' oder \'falschen\' Antworten; wir sind nur an Ihrer Meinung interessiert. Bitte seien Sie versichert, dass Ihre Antworten vertraulich behandelt werden und Ihre Beurteilung nicht beeinflussen. Ihre Antworten helfen uns, die zukünftige Qualität der Online-Einheiten zu verbessern. Vielen Dank. '; +$string['collespname'] = 'PÄSSE (bevorzugt) '; $string['done'] = 'Erledigt'; $string['download'] = 'Herunterladen'; $string['downloadexcel'] = 'Daten als Excel-Tabelle herunterladen'; -$string['downloadinfo'] = 'Sie können die Rohdaten dieser Umfrage vollständig in einer weiterverwendbaren Form für die Analyse in Excel, SPSS oder anderen Programmen herunterladen.'; +$string['downloadinfo'] = 'Sie können die Rohdaten dieser Umfrage vollständig in einer weiterverwendbaren Form herunterladen für die Analyse in Excel, SPSS oder anderen Programmen'; $string['downloadtext'] = 'Daten als reine Text-Datei herunterladen'; $string['editingasurvey'] = 'Eine Umfrage bearbeiten'; $string['guestsnotallowed'] = 'Gäste dürfen nicht an Umfragen teilnehmen'; $string['helpsurveys'] = 'Hilfe zu den verschiedenen Typen der Umfragen'; -$string['howlong'] = 'Wie lange haben Sie für das Ausfüllen dieser Umfrage gebraucht? '; +$string['howlong'] = 'Wie lange brauchten Sie für das Ausfüllen dieser Umfrage? '; $string['howlongoptions'] = 'unter 1 Min, 1-2 Min, 2-3 Min, 3-4 Min, 4-5 Min, 5-10 Min, mehr als 10 Min '; -$string['ifoundthat'] = 'Dies findet statt:'; +$string['ifoundthat'] = 'Ich habe dieses gefunden'; $string['introtext'] = 'Einführungstext'; -$string['ipreferthat'] = 'Ich bevorzuge es so:'; +$string['ipreferthat'] = 'Ich bevorzuge '; $string['modulename'] = 'Umfrage'; $string['modulenameplural'] = 'Umfragen'; $string['name'] = 'Name'; $string['newsurveyresponses'] = 'Neue Antworten zu den Umfragen'; -$string['nobodyyet'] = 'Niemand hat diese Umfrage bis jetzt beantwortet'; +$string['nobodyyet'] = 'Niemand hat bis jetzt diese Umfrage beantwortet'; $string['notdone'] = 'Noch nicht durchgeführt'; $string['notes'] = 'Ihre persönliche Analyse und Anmerkungen'; $string['othercomments'] = 'Haben Sie noch andere Kommentare? '; -$string['peoplecompleted'] = '$a Leute haben diese Umfrage bereits ausgefüllt'; +$string['peoplecompleted'] = '$a Leute haben bereits diese Umfrage verfasst'; $string['preferred'] = 'Bevorzugt'; -$string['preferredclass'] = 'Ansprüche der Lerngruppe'; -$string['preferredstudent'] = 'Ansprüche des/der $a'; +$string['preferredclass'] = 'Bevorzugte Klasse'; +$string['preferredstudent'] = '$a bevozugt'; $string['question'] = 'Frage'; $string['questions'] = 'Fragen'; $string['questionsnotanswered'] = 'Manche der Fragen mit Mehrfachantworten sind nicht beantwortet worden.'; -$string['report'] = 'Bericht zur Umfrage'; +$string['report'] = 'Bericht der Umfrage'; $string['savednotes'] = 'Ihre Anmerkungen wurden gespeichert'; -$string['scaleagree5'] = 'Lehne ich vollständig ab, lehne ich überwiegend ab, kaum Ablehnung, kaum Zustimmung, stimme überwiegend zu, bin völlig einverstanden'; +$string['scaleagree5'] = 'Überhaupt nicht einverstanden, kaum einverstanden, Weder einverstanden, noch einverstanden, eher einverstanden, Völlig einverstanden'; $string['scales'] = 'Skalen '; -$string['scaletimes5'] = 'Fast nie, selten, manchmal, oft, fast immer'; -$string['seemoredetail'] = 'Hier klicken, um weitere Details sichtbar zu machen'; -$string['selectedquestions'] = 'Ausgewählte Fragen aus einer Skala, alle Teilnehmer/innen'; +$string['scaletimes5'] = 'Überhaupt nicht, selten, manchmal, oft, fast immer'; +$string['seemoredetail'] = 'Hier klicken für weitere Details'; +$string['selectedquestions'] = 'Ausgewählte Fragen aus einem Rang, alle Studenten'; $string['summary'] = 'Zusammenfassung'; -$string['surveycompleted'] = 'Sie haben die Umfrage beendet. Das folgende Diagramm zeigt Ihre Ergebnisse im Vergleich zum Durchschnitt Ihrer Lerngruppe.'; +$string['surveycompleted'] = 'Sie haben diese Umfrage ausgfeüllt. Das folgende Diagramm zeigt eine Zusammenfassung Ihrer Ergebnisse im Vergleich zu den Kursdurchschnitten. '; $string['surveyname'] = 'Name der Umfrage'; $string['surveysaved'] = 'Umfrage gespeichert'; $string['surveytype'] = 'Typ der Umfrage'; -$string['thanksforanswers'] = 'Danke, dass Sie sich an dieser Umfrage beteiligt haben$a'; +$string['thanksforanswers'] = 'Danke für die Antworten zu dieser Umfrage, $a'; $string['time'] = 'Zeit'; $string['viewsurveyresponses'] = 'Zeige $a Antworten zur Umfrage'; diff --git a/lang/de/text.html b/lang/de/text.html new file mode 100644 index 00000000000..1d21cdd26d7 --- /dev/null +++ b/lang/de/text.html @@ -0,0 +1,529 @@ + + + + + + + + + + + + + + + +
              + +

              Hilfe zum +Schreiben von Text

              + +

              Im Moodle einen Text zu schreiben funktioniert so Wie Sie es +meist gewöhnt sind, jedoch haben Sie auch die Möglichkeit, Smilies, +Web-Adressen und einige HTML-Befehle in den Text einzubinden.

              + +

              Smilies (emoticons)

              + +

              Um diese kleinen Smileys in Ihren Text einzubetten tippen +Sie einfach den zugehörigen Code. Diese Codes selbst sind wie kleine +Abbildungen, wenn Sie Ihren Kopf nach links drehen, können Sie Sie betrachten.

              + +

               

              + + + + + + +
              +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +

              +
              +

              smile

              +
              +

              :-)

              +
              +

              +
              +

              breites + Grinsen

              +
              +

              :-D

              +
              +

              +
              +

              zwinkern

              +
              +

              ;-)

              +
              +

              +
              +

              gemischt

              +
              +

              :-/

              +
              +

              +
              +

              nachdenkend

              +
              +

              V-.

              +
              +

              +
              +

              Zunge zeigen

              +
              +

              :-P

              +
              +

              +
              +

              cool

              +
              +

              B-)

              +
              +

              +
              +

              einverstanden

              +
              +

              ^-)

              +
              +

              +
              +

              große Augen

              +
              +

              8-)

              +
              +

              +
              +

              überrascht

              +
              +

              8-o

              +
              +
              +

              +
              +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +

              +
              +

              traurig

              +
              +

              :-(

              +
              +

              +
              +

              schüchtern

              +
              +

              8-.

              +
              +

              +
              +

              errötend

              +
              +

              :-I

              +
              +

              +
              +

              kisses

              +
              +

              :-X

              +
              +

              +
              +

              clown

              +
              +

              :o)

              +
              +

              +
              +

              schwarzes + Auge

              +
              +

              P-|

              +
              +

              +
              +

              wütend

              +
              +

              8-[

              +
              +

              +
              +

              tot

              +
              +

              xx-P

              +
              +

              +
              +

              schläfrig

              +
              +

              |-.

              +
              +

              +
              +

              übel

              +
              +

              }-]

              +
              +
              +

              +
              + +

              URLs

              + +

              Jedes “Wort” welches mit www. oder http:// +beginnt, wird automatisch in ein anklickbares Link umgewandelt.

              + +

               

              + +

              Zum Beispiel: www.google.de oder http://wirab50.de + 

              + +

              HTML Befehle

              + +

              Sie können eine begrenzte Anzahl von +HTML-Befehlen Ihrem Text hinzufügen.

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +

              HTMLBefehl

              +
              +

              Ergebnis

              +
              +

              <B> fett </B>

              +
              +

              fetter + Text

              +
              +

              <I> + kursiv </I>

              +
              +

              kursiver Text

              +
              +

              <U> unterstrichen </U>

              +
              +

              unterstrichener Text

              +
              +

              <FONT SIZE=1> klein </FONT>

              +
              +

              klein

              +
              +

              <FONT SIZE=4> groß </FONT>

              +
              +

              groß

              +
              +

              <FONT COLOR=green> Beispiel </FONT>

              +
              +

              Beispiel

              +
              +

              <UL><LI>Eins + <LI>Zwei </UL>

              +
              +

              o                                + Eins

              +

              o                                + Zwei

              +
              +

              <HR>

              +
              +
              +
              +
              +

              +
              + +

               

              + +
              + + + + diff --git a/lang/de/webquest.php b/lang/de/webquest.php index 82e2fb0a0fa..c2c9c364b32 100644 --- a/lang/de/webquest.php +++ b/lang/de/webquest.php @@ -1,8 +1,8 @@ - + diff --git a/lang/de/wiki.php b/lang/de/wiki.php index b2caaaf51e6..c51f322f029 100644 --- a/lang/de/wiki.php +++ b/lang/de/wiki.php @@ -1,31 +1,26 @@ new_ver und $a->old_ver von $a->pagename'; -$string['disablecamel'] = 'KamelHöcker (CamelCase)-Verlinkung abstellen'; $string['disabledpage'] = 'Diese Seite ist derzeit nicht verfügbar'; $string['doesnotexist'] = 'Diese Seite existiert nicht. Klicken Sie auf den \'Bearbeiten\'-Button um die Seite zu erstellen.'; -$string['downloadaszip'] = 'Downloadbare Zip-Datei'; $string['downloadtimes'] = '$a mal heruntergeladen'; $string['dwnlnofiles'] = 'Bisher wurden keine Dateien hochgeladen'; $string['dwnlsection'] = 'Download-Bereich'; @@ -54,18 +46,15 @@ $string['errornotype'] = 'Fehler: Seitentyp weder BIN noch TXT'; $string['errororreason'] = 'Fehler oder Grund'; $string['errorroandwr'] = 'Fehler: Seite schreib- und lesbar'; $string['errorsize'] = 'Seite ist größer als 64K'; -$string['errversionsave'] = 'Entschuldigung. Während Sie Ihren Text bearbeitet haben, hat jemand anders die gleiche Seite aktualisiert. Gehen Sie bitte zum vorherigen Bildschirm zurück, kopieren Sie den Text in die Zwischenablage und fügen Sie die Änderungen erneut ein, nachdem Sie die Seite neu geladen haben. Beachten Sie bitte auch die inzwischen vorgenommenen Änderungen.'; +$string['errversionsave'] = 'Entschuldigung. Während Sie Ihren Text bearbeitet haben, hat jemand anders die gleiche Seite aktualisiert. Gehen Sie bitte zum vorherigen Bildschirm zurück, kopieren Sie den Text in die Zwischenablage und fügen Sie die Änderungen erneut ein, nachdem Sie die Seite neu geladen haben.'; $string['ewikiacceptbinary'] = 'Binäre Dateien zulassen'; +$string['ewikidefault'] = 'Grunddateien'; $string['ewikiprinttitle'] = 'Den Wikinamen auf jeder Seite anzeigen'; -$string['export'] = 'Export'; -$string['exportformats'] = 'Exportformate'; -$string['exportsuccessful'] = 'Export erfolgreich'; -$string['exportto'] = 'Export nach'; $string['fetchback'] = 'Zurück holen'; $string['file'] = 'Datei'; $string['filedownload'] = 'Download von Dateien'; $string['fileisoftype'] = 'Dateiart'; -$string['filtername'] = 'Automatische Verlinkung von Wikiseiten '; +$string['filtername'] = 'Automatische verlinkung von Wikiseiten '; $string['flagbin'] = 'BIN'; $string['flaghtm'] = 'HTM'; $string['flagoff'] = 'OFF'; @@ -78,15 +67,11 @@ $string['for'] = 'f $string['forbidden'] = 'Sie sind nicht berechtigt, diese Seite zu bearbeiten.'; $string['groups'] = 'Gruppen'; $string['hits'] = '$a Zugriffe'; -$string['howtooperate'] = 'Wie Sie Seiten bearbeiten können'; -$string['howtowiki'] = 'Wie Sie Wikis bearbeiten'; -$string['html'] = 'HTML-Format'; +$string['howtooperate'] = 'Wie Seiten bearbeiten'; $string['htmlmode'] = 'HTML-Modus'; -$string['htmlonly'] = 'WYSIWIG-Editor'; -$string['index'] = 'Index'; +$string['htmlonly'] = 'nur HTML'; $string['infoaboutpage'] = 'Informationen über die Seite'; $string['initialcontent'] = 'Einführende Wiki Texte'; -$string['invalidroot'] = 'Die Sitemap kann nicht erstellt werden, weil Sie nicht berechtigt diese Seite zu bearbeiten'; $string['lastchanged'] = 'Letzte Bearbeitung am $a'; $string['lastmodified'] = 'Letzte Veränderung'; $string['linkdead'] = 'Gescheitert'; @@ -95,14 +80,13 @@ $string['linkschecked'] = 'Links gepr $string['listall'] = 'Alle auflisten'; $string['listcandidates'] = 'Kandidaten anzeigen'; $string['meta'] = 'Metadaten'; -$string['moduledirectory'] = 'Modulverzeichnis'; $string['modulename'] = 'Wiki'; $string['modulenameplural'] = 'Wikis'; $string['mostoftenchangedpages'] = 'Meist veränderte Seiten'; $string['mostvisitedpages'] = 'Meist besuchte Seiten'; $string['newestpages'] = 'Neueste Seiten'; $string['noadministrationaction'] = 'Keine Administrationsmöglichkeit vorhanden'; -$string['nocandidatestoremove'] = 'Keine Seiten zum Entfernen vorhanden, wählen Sie §a, um alle Seiten anzuzeigen.'; +$string['nocandidatestoremove'] = 'Keine ??? zum entfernen, wählen Sie §a, um alle Seiten anzuzeigen.'; $string['nochangestorevert'] = 'Keine Veränderung vorhanden, die rückgängig gemacht werden können'; $string['nohtml'] = 'Kein HTML'; $string['nolinksfound'] = 'Keine Links auf der Seite gefunden.'; @@ -112,21 +96,17 @@ $string['nothingtostrip'] = 'Es gibt keine Seiten mit mehreren Versionen.'; $string['nowikicreated'] = 'In diesem Wiki sind noch keine Seiten bearbeitet worden.'; $string['of'] = 'von'; $string['offline'] = 'OFFLINE'; -$string['optional'] = 'Option'; $string['orphanedpage'] = 'Isolierte Seite (keine Verlinkung)'; $string['orphanedpages'] = 'Isolierte Seiten (keine Verlinkungen)'; $string['otherwikis'] = 'Andere Wikis'; -$string['ownerunknown'] = 'unbekannt'; $string['pageactions'] = 'Seitenaktivitäten'; $string['pageindex'] = 'Seitenindex'; $string['pageinfo'] = 'Seiteninformationen'; $string['pagename'] = 'Seitenname'; -$string['pagenamechoice'] = '- oder - '; $string['pageslinkingto'] = 'Seiten die auf diese Seite verweisen'; $string['pagesremoved'] = 'Gelöschte Seiten'; $string['pagesreverted'] = 'Veränderungen rückgängig gemacht.'; $string['pagesstripped'] = 'Herausgenommene Seiten'; -$string['plaintext'] = 'Einfacher Text'; $string['preview'] = 'Vorschau'; $string['readonly'] = 'Seite kann nur gelesen werden'; $string['refs'] = 'Referenzen'; @@ -137,54 +117,37 @@ $string['removeselectedpages'] = 'Ausgew $string['revertallsince'] = 'Versionsvergleich mit späteren Veränderungen'; $string['revertchanges'] = 'Veränderungen rückgängig machen'; $string['revertlastonly'] = 'Nur die letzte Veränderung'; -$string['revertpages'] = 'Mehrere Veränderungen rückgängig machen'; -$string['revertpagescheck'] = 'Wollen Sie diese Veränderunegn wirklich rückgängig machen?'; -$string['revertthe'] = 'In die Tiefe der Seitenversionen gehen und nur die Veränderten löschen'; +$string['revertpages'] = 'Massenveränderungen rückgängig machen'; +$string['revertpagescheck'] = 'Wollen Sie diese Veränderunegn wirklich rückgängig machen:'; +$string['revertthe'] = 'In die Tiefe der Seitenversionen gehen und nur die veränderten löschen'; $string['safehtml'] = 'Sicheres HTML'; $string['save'] = 'Speichern'; $string['searchwiki'] = 'Wiki durchsuchen'; $string['setpageflags'] = 'Seiteneinstellungen setzen'; -$string['sitemap'] = 'Sitemap'; -$string['smfor'] = 'Sitemap für'; $string['status'] = 'Status'; $string['strippagecheck'] = 'Sind Sie sicher, dass Sie ältere Versionen dieser Seite entfernen wollen?'; $string['strippages'] = 'Seiten entfernen'; -$string['studentadminoptions'] = 'Teilnehmerverwaltungsoption'; $string['submit'] = 'Ausführen'; -$string['tabattachments'] = 'Anhänge'; -$string['tabedit'] = 'Bearbeiten'; -$string['tabinfo'] = 'Info'; -$string['tablinks'] = 'Links'; -$string['tabview'] = 'Anzeigen'; $string['thanksforcontribution'] = 'Danke für Ihre Mitwirkung'; -$string['thispageisntlinkedfromanywhereelse'] = 'Diese Seite ist mit keiner anderen Seite verbunden'; $string['updatedpages'] = 'Aktualisierte Seiten'; -$string['updatedwikipages'] = 'Aktualisierte Wikiseiten'; -$string['uplerror'] = 'Es tut uns leid. Irgend etwas hat beim Upload Ihrer Datei nicht funktioniert.'; -$string['uplinsect'] = 'Hochladen nach'; +$string['uplerror'] = 'Es tut uns leid. Irgendetwas hat beim Upload Ihrer Datei nicht funktioniert.'; $string['uplnewnam'] = 'Unter einem anderen Dateinamen abspeichern'; $string['upload0'] = 'Verwenden Sie dieses Formular, um eine Datei vorläufig ins Wiki einzufügen:'; $string['uploadedon'] = 'Hochgeladen am'; $string['uploadpicturebutton'] = 'Upload'; $string['uplok'] = 'Ihre Datei wurde korrekt hochgeladen.'; $string['version'] = 'Version'; -$string['versionrangetoobig'] = 'Sie können nicht alle Versionen dieser Datei löschen! Die letzte Version muß erhalten bleiben.'; +$string['versionrangetoobig'] = 'Sie können nicht alle Versionen dieser Datei löschen! Die letzte Version muss erhalten bleiben.'; $string['versions'] = 'Versionen'; $string['versionstodelete'] = 'Version(en) zum löschen'; $string['viewpage'] = 'Seite anzeigen'; -$string['viewsmfor'] = 'Sitemap anzeigen für'; $string['wantedpages'] = 'Gesuchte Seiten'; $string['wikidefaultpagename'] = 'WikiIndex'; -$string['wikiexport'] = 'Seitenexport'; -$string['wikiexportcomment'] = 'Hier können Sie den Export nach Ihren Bedürfnissen einrichten'; -$string['wikilinkoptions'] = 'Einstellung der automatischen Verlinkung von Wikis'; $string['wikilinks'] = 'Wiki Links'; $string['wikiname'] = 'Seitenname'; -$string['wikistartederror'] = 'Im Wiki wurden bereits Daten eingetragen. Die Einstellungen des Wikis können nicht mehr geändert werden.'; +$string['wikistartederror'] = 'Die Einstellungen des Wikis können nicht mehr geändert werden.'; $string['wikitype'] = 'Typ'; $string['wikiusage'] = 'Wiki Anleitung'; -$string['withbinaries'] = 'Binäre Inhalte einbinden'; -$string['withvirtualpages'] = 'Wiki-Links einbinden'; $string['wrongversionrange'] = '$a ist kein zulässiger Wert'; ?> diff --git a/lang/de/workshop.php b/lang/de/workshop.php index 6968b616a75..cb908fbf8f5 100644 --- a/lang/de/workshop.php +++ b/lang/de/workshop.php @@ -1,131 +1,89 @@ Beurteilung'; -$string['agreetothisassessment'] = 'Diesem Assessment zustimmen'; +$string['agreetothisassessment'] = 'Dieser Bewertung zustimmen'; $string['allgradeshaveamaximumof'] = 'Maximale Gesamtpunktzahl: $a'; $string['allowresubmit'] = 'Mehrfaches Abgeben erlauben'; -$string['allsubmissions'] = 'Alle Einreichungen'; $string['alreadyinphase'] = 'Schon in Phase $a'; -$string['amendassessmentelements'] = 'Assessment-Bewertungskriterien ändern'; +$string['amendassessmentelements'] = 'Bewertungskriterien ändern'; $string['amendtitle'] = 'Titel ändern'; -$string['analysis'] = 'Auswertung'; -$string['analysisofassessments'] = 'Auswertung der Bewertungen'; +$string['analysisofassessments'] = 'Analyse der Bewertungen'; $string['assess'] = 'Bewerte'; $string['assessedon'] = 'Bewertet am $a'; $string['assessment'] = 'Bewertung'; $string['assessmentby'] = 'Bewertung von $a'; -$string['assessmentdropped'] = 'Herausgefallene Assessments'; -$string['assessmentend'] = 'Ende des Peer-Assessments'; -$string['assessmentendevent'] = 'Ende des Assessments für $a'; -$string['assessmentgrade'] = 'Assessment-Bewertung: $a'; -$string['assessmentnotyetagreed'] = 'Assessment noch nicht zugestimmt'; -$string['assessmentnotyetgraded'] = 'Assessment noch nicht beurteilt'; -$string['assessmentof'] = 'Bewertung von $a'; -$string['assessmentofresubmission'] = 'Dies ist ein Assessment einer wiederholt eingereichten Arbeit.
              Das Formular gibt die Kommentare und Bewertungen einer früheren Arbeit wieder.
              Bitte berichtigen Sie diese nach der Korrektur der neuen Arbeit.'; -$string['assessmentofthissubmission'] = 'Bewertungen dieser Lösung'; +$string['assessmentdropped'] = 'Herausgefallene Bewertungen'; +$string['assessmentgrade'] = 'Bewertungs: $a'; +$string['assessmentnotyetagreed'] = 'Bewertung noch nicht zugestimmt'; +$string['assessmentofresubmission'] = 'Dies ist eine Bewertung einer wiederholt eingereichten Arbeit.
              Das Formular gibt die Kommentare und Bewertungen einer früheren Arbeit wieder.
              Bitte berichtigen Sie diese nach der Korrektur der neuen Arbeit.'; +$string['assessmentofthissubmission'] = 'Bewertung dieses Beitrages'; $string['assessments'] = 'Bewertungen'; -$string['assessmentsareok'] = 'Assessment-Bewertungen sind OK'; -$string['assessmentsby'] = 'Bewertung von $a'; -$string['assessmentsdone'] = 'Assessments erledigt'; +$string['assessmentsareok'] = 'Bewertungen sind OK'; +$string['assessmentsby'] = 'Bewertungen von $a'; +$string['assessmentsdone'] = 'Bewertungen erledigt'; $string['assessmentsexcluded'] = 'Zahl der Bewertungen, die nicht berücksichtigt wurden für $a'; -$string['assessmentsmustbeagreed'] = 'Peer-Assessment-Bewertungen muss zugestimmt werden'; -$string['assessmentstart'] = 'Beginn des Peer-Assessments'; -$string['assessmentstartevent'] = 'Beginn des Assessments für $a'; -$string['assessmentwasagreedon'] = 'Assessment-Bewertung wurde zugestimmt von $a'; -$string['assessor'] = 'Assessor/Bewerter'; -$string['assessthisassessment'] = 'Beurteile dieses Assessment'; -$string['assessthissubmission'] = 'Bewerten Sie diese Lösung'; +$string['assessmentsmustbeagreed'] = 'Bewertungen muss zugestimmt werden'; +$string['assessmentwasagreedon'] = 'Bewertung wurde zugestimmt von $a'; +$string['assessor'] = 'Bewerter'; +$string['assessthissubmission'] = 'Bewerte diesen Beitrag'; $string['assignmentnotinthecorrectphase'] = 'Bewertung nicht in der richtigen Phase'; -$string['assmnts'] = 'Bewertungen'; -$string['attachment'] = 'Anhang'; -$string['attachments'] = 'Anhänge'; $string['authorofsubmission'] = 'Autor des Beitrages'; -$string['automaticgradeforassessment'] = 'Automatische Beurteilung des Assessments'; $string['averageerror'] = 'Durchschnittlicher Fehler'; $string['awaitinggradingbyteacher'] = 'Erwarte Benotung von $a'; $string['beforedeadline'] = 'Vor dem Stichtag: $a'; -$string['by'] = 'Eingereicht von'; -$string['calculationoffinalgrades'] = 'Berechnung der Endbeurteilung'; -$string['clearlateflag'] = 'Verspätungskennzeichen löschen'; +$string['calculationoffinalgrades'] = 'Berechnung der Endnote'; $string['closeassignment'] = 'Aufgabe schliessen'; $string['comment'] = 'Kommentar'; -$string['commentbank'] = 'Kommentarsammlung'; $string['commentby'] = 'Kommentiert von'; -$string['comparisonofassessments'] = 'Bewertungsvergleich'; $string['confirmdeletionofthisitem'] = 'Löschen dieses Items bestätigen $a'; $string['correct'] = 'Richtig'; -$string['count'] = 'Zählen'; -$string['criterion'] = 'Bewertungskriterium'; -$string['currentphase'] = 'Aktuelle Phase'; -$string['date'] = 'Datum'; -$string['datestr'] = '%%d/%%m/%%y
              %%H:%%M'; +$string['criterion'] = 'Kriterium'; $string['deadline'] = 'Stichtag'; $string['deadlineis'] = 'Der Stichtag ist $a'; $string['delete'] = 'Löschen'; $string['deleting'] = 'Lösche'; -$string['description'] = 'Zusammenfassung'; -$string['detailsofassessment'] = 'Assessmentdetails'; -$string['disagreewiththisassessment'] = 'Dieser Assessmentbewertung nicht zustimmen'; -$string['displayofcurrentgrades'] = 'Anzeigen der derzeitigen Bewertungen'; -$string['displayoffinalgrades'] = 'Anzeige der Endbewertung'; -$string['displayofgrades'] = 'Anzeigen der Bewertungen'; -$string['dontshowgrades'] = 'Keine Bewertungen anzeigen'; +$string['description'] = 'Beschreibung'; +$string['detailsofassessment'] = 'Bewertungsdetails'; +$string['disagreewiththisassessment'] = 'Dieser Bewertung nicht zustimmen'; +$string['displayoffinalgrades'] = 'Anzeige der Endnoten'; +$string['dontshowgrades'] = 'Keine Noten anzeigen'; $string['edit'] = 'Bearbeiten'; $string['editacomment'] = 'Einen Kommentar bearbeiten'; $string['editingassessmentelements'] = 'Bewertungskriterien bearbeiten'; -$string['editsubmission'] = 'Abgegebene Lösung bearbeiten'; $string['element'] = 'Kriterium'; -$string['elementweight'] = 'Gewichtung'; -$string['enterpassword'] = 'Passwort eingeben'; +$string['elementweight'] = 'Kriteriumsgewichtung'; $string['errorbanded'] = 'Summer der Fehler'; $string['errortable'] = 'Fehlertabelle'; -$string['examplesubmissions'] = 'Musterlösungen'; $string['excellent'] = 'Ausgezeichnet'; -$string['excludingdroppedassessments'] = 'ohne herausgefallene Assessments'; +$string['excludingdroppedassessments'] = 'ohne herausgefallene Bewertungen'; $string['expectederror'] = 'Erwartete Fehlerwerte: $a'; -$string['fair'] = 'Fair/günstig'; $string['feedbackgoeshere'] = 'Rückmeldung hier'; -$string['firstname'] = 'Vorname'; $string['generalcomment'] = 'Allgemeiner Kommentar'; $string['good'] = 'Gut'; $string['grade'] = 'Bewertung'; -$string['gradeassessment'] = 'Bewerte Assessment'; -$string['graded'] = 'Bewertet'; -$string['gradedbyteacher'] = 'Bewertet von $a'; -$string['gradeforassessments'] = 'Höchstbewertung für das Assessment'; -$string['gradeforbias'] = 'Bewertung für Tendenz'; -$string['gradeforreliability'] = 'Bewertung für Zuverlässigkeit'; -$string['gradeforstudentsassessment'] = 'Bewertung für Assessments des Kursteilnehmers'; -$string['gradeforsubmission'] = 'Bewertung für abgegebene Arbeiten'; -$string['gradegiventoassessment'] = 'Bewertung(en) die Assessment bekommen hat'; -$string['gradeofsubmission'] = 'Bewertung der Einreichung: $a'; -$string['grades'] = 'Bewertungen'; -$string['gradesforassessmentsare'] = 'Bewertungen für Assessments sind außerhalb von $a '; -$string['gradesforstudentsassessment'] = 'Bewertungen für $a`s Assessment'; -$string['gradesforsubmissionsare'] = 'Bewertungen für Beiträge sind außerhalb von $a '; +$string['gradeassessment'] = 'Bewertungsnote'; +$string['graded'] = 'Benotet'; +$string['gradedbyteacher'] = 'Benotet von $a'; +$string['gradeforassessments'] = 'Note für Bewertung'; +$string['gradeforbias'] = 'Note für Tendenz'; +$string['gradeforreliability'] = 'Note für Zuverlässigkeit'; +$string['gradeforstudentsassessment'] = 'Note für Bewertung des Kursteilnehmers'; +$string['gradeforsubmission'] = 'Note für Arbeit'; +$string['gradeofsubmission'] = 'Note des Beitrages: $a'; $string['gradetable'] = 'Bewertungstabelle'; -$string['gradingallassessments'] = 'Alle Assessments bewerten'; -$string['gradinggrade'] = 'Bewertungs-'; $string['gradingstrategy'] = 'Bewertungsstrategie'; $string['hidegradesbeforeagreement'] = 'Bewertungen vor der Zustimmung verbergen'; $string['hidenamesfromstudents'] = 'Namen von $a verbergen'; $string['includeteachersgrade'] = 'Bewertung des/der Trainer/in einbeziehen'; $string['incorrect'] = 'Falsch'; -$string['info'] = 'Info'; -$string['invaliddates'] = 'Das eingegebene Datum ist nicht gültig.
              Verwenden Sie den Zurückbutton Ihres Browsers, um ein richtiges Datum einzugeben. '; $string['iteration'] = 'Wiederholung $a abgeschlossen'; -$string['lastname'] = 'Nachname'; -$string['lax'] = 'Lax/locker'; -$string['leaguetable'] = 'Zahl der Eintragungen in der Bestenliste'; +$string['leaguetable'] = 'Notenübersicht'; $string['listassessments'] = 'Erhaltene Bewertungen'; $string['listofallsubmissions'] = 'Liste aller Beiträge'; $string['liststudentsassessments'] = 'Bewertungen, die er/sie durchgeführt hat'; @@ -141,83 +99,64 @@ $string['mail7'] = 'Die Kommentare von $a finden Sie in der Workshop Anweisung'; $string['mail8'] = 'Die eingereichte Aufgabenlösung von $a ist eine überarbeitete Fassung.'; $string['mail9'] = 'Bitte bewerten Sie in der Workshop-Aufgabe $a'; $string['managingassignment'] = 'Verwaltung der Aufgaben'; -$string['maximum'] = 'Maximum'; $string['maximumsize'] = 'Maximale Größe'; -$string['mean'] = 'Mittelwert'; -$string['minimum'] = 'Minimum'; $string['modulename'] = 'Workshop'; $string['modulenameplural'] = 'Workshops'; $string['movingtophase'] = 'Verschieben zu Phase $a'; $string['namesnotshowntostudents'] = 'Namen werde $a nicht angezeigt'; $string['newassessments'] = 'Neue Workshopbewertung'; -$string['newattachment'] = 'Neue Anhänge'; $string['newgradings'] = 'Neue Benotungen'; $string['newsubmissions'] = 'Neue Workshop Einreichung'; $string['noassessments'] = 'Keine Bewertungen'; $string['noassessmentsdone'] = 'Keine Bewertung durchgeführt'; -$string['noattachments'] = 'Keine Anhänge'; $string['nosubmission'] = 'Keine Arbeit eingereicht'; $string['nosubmissionsavailableforassessment'] = 'Keine Beiträge für die Bewertung vorhanden'; -$string['notallowed'] = 'Für diese Seite haben Sie zur Zeit keine Berechtigung '; $string['notavailable'] = 'Nicht verfügbar'; -$string['notenoughexamplessubmitted'] = 'Nicht genügend Beispiele zur Verfügung gestellt'; -$string['noteonassessmentelements'] = 'Beachten Sie, dass das Assessment in mehrere \'Assessmentkriterien\' aufgeteilt ist.
              -Dies macht die Bewertung einfacher und plausibler. Als Trainer/in müssen Sie diese
              -Kriterien hinzufügen, bevor Sie die Aufgabe dem/der Teilnehmer/in zugänglich machen. Dies geschieht durch das
              Klicken auf die Aufgabe im Kurs. Sofern keine Kriterien vorhanden sind, werden Sie gebeten
              diese hinzuzufügen. Sie können die Anzahl der Kriterien ändern, indem Sie die Seite der Aufgabenbearbeitung benutzen.
              +$string['noteonassessmentelements'] = 'Beachten Sie, dass die Benotung in mehrere \'Bewertungskriterien\' aufgeteilt ist.
              +Dies macht die Benotung einfacher und plausibler. Als Kursleiter müssen Sie diese
              +Kriterien hinzufügen, bevor Sie die Aufgabe dem Kursteilnehmer zugänglich machen. Dies geschieht durch das
              Klicken auf die Aufgabe im Kurs. Sofern keine Kriterien vorhanden sind, werden Sie gefragt
              diese hinzuzufügen. Sie können die Anzahl der Kriterien ändern, indem Sie die Seite der Aufgabenbearbeitung benutzen.
              Die Kriterien selbst können über die Seite \"Aufgabenverwaltung\" bearbeitet werden.'; -$string['noteonstudentassessments'] = '{Teilnehmer/innen Beurteilung/ Grading Grade for Assessment}'; $string['notgraded'] = 'Nicht bewertet'; -$string['notitle'] = 'Kein Titel'; $string['notitlegiven'] = 'Kein Titel angegeben'; -$string['nowork'] = 'Die Einreichungsfrist ist beendet.
              Sie haben keinen Beitrag eingereicht.'; -$string['numberofassessmentelements'] = 'Anzahl der Bewertungskriterien'; -$string['numberofassessments'] = 'Anzahl der Assessments'; -$string['numberofassessmentschanged'] = 'Zahl der veränderten Assessments: $a'; -$string['numberofassessmentsdropped'] = 'Zahl der herausgefallenen Assessments: $a'; -$string['numberofassessmentsofstudentsubmissions'] = 'Anzahl Peer-Assessments '; -$string['numberofassessmentsofteachersexamples'] = 'Anzahl der Assessments von Beispielen des Kursleiters'; -$string['numberofassessmentsweighted'] = 'Anzahl von Assessments (gewichtet): $a'; -$string['numberofattachments'] = 'Anzahl der erwarteten Anhänge der Beiträge'; +$string['numberofassessmentelements'] = 'Anzahl der Kommentare, Bewertungskriterien, Fehlersumme oder Kriterien in einer Rubrik'; +$string['numberofassessments'] = 'Anzahl der Bewertungen'; +$string['numberofassessmentschanged'] = 'Zahl der veränderten Bewertungen: $a'; +$string['numberofassessmentsofstudentsubmissions'] = 'Anzahl Bewertungen der Kursteilnehmer-Beiträge'; +$string['numberofassessmentsofteachersexamples'] = 'Anzahl der Bewertungen von Beispielen des Kursleiters'; $string['numberofentries'] = 'Anzahl der Einträge'; $string['numberofnegativeresponses'] = 'Anzahl der negativen Antworten'; $string['numberofsubmissions'] = 'Zahl der eingereichten Arbeiten: $a'; -$string['ograde'] = 'Gesamt
              Beurteilung'; $string['on'] = 'von $a'; $string['openassignment'] = 'Aufgabe öffnen'; -$string['optionaladjustment'] = 'Optionale Bewertung'; -$string['optionforpeergrade'] = 'Auswahl für Durchschnittsbewertung'; +$string['optionaladjustment'] = 'Optinnale Bewertung'; +$string['optionforpeergrade'] = 'Auswahl für Durchschnittsbewerung'; $string['optionsusedinanalysis'] = 'Für die Analyse genutzte Optionen'; $string['overallgrade'] = 'Gesamtbewertung'; $string['overallocation'] = 'Gesamtverteilung'; $string['overallpeergrade'] = 'Gesamtdurchschnittsbewertung von anderer Teilnehmer/innen: $a'; $string['overallteachergrade'] = 'Gesamtbewertung des/der Trainer/in: $a'; $string['ownwork'] = 'Eigene Arbeit'; -$string['passmnts'] = 'Peer
              Assessments'; -$string['passwordprotectedworkshop'] = 'Passwortgeschützter Workshop'; -$string['percentageofassessments'] = 'Prozent der Assessments, die herausfallen'; +$string['percentageofassessments'] = 'Prozent der Bewertungen, die herausfallen'; $string['phase'] = 'Phase'; -$string['phase0'] = 'Inaktiv'; -$string['phase0short'] = 'Inaktiv'; $string['phase1'] = 'Aufgabe einrichten'; -$string['phase1short'] = 'Einrichten'; -$string['phase2'] = '$a Aufgabe bearbeiten und abgeben'; -$string['phase2short'] = 'Eingereichte Arbeiten'; -$string['phase3'] = 'Erlaube $a Arbeiten abzugeben und zu bewerten'; +$string['phase1short'] = 'einrichten'; +$string['phase2'] = '$a Beiträge und Aufgaben'; +$string['phase2short'] = 'eingereichte Arbeiten'; +$string['phase3'] = 'Erlaube $a Arbeiten einzureichen und zu bewerten'; $string['phase3short'] = 'Beides'; -$string['phase4'] = 'Erlaube $a Bewertungen vorzunehmen'; +$string['phase4'] = 'Erlaube $a Bewertungen vorzunehmen'; $string['phase4short'] = 'Bewertungen'; -$string['phase5'] = 'Berechnung des Abschlußbewertung'; -$string['phase5short'] = 'Zeige Bewertungen'; +$string['phase5'] = 'Berechnung des Abschlussbewertung'; +$string['phase5short'] = 'Berechnung'; +$string['phase6'] = 'Zeige die Abschlussbewertung'; +$string['phase6short'] = 'Zeige die Bewertungen'; $string['pleaseassesstheseexamplesfromtheteacher'] = 'Bitte bewerten Sie dieses Beispiel von $a'; $string['pleaseassessthesestudentsubmissions'] = 'Bitte bewerten Sie diese $a Beiträge'; $string['pleaseassessyoursubmissions'] = 'Bitte bewerten Sie Ihre Einreichung(en)'; $string['poor'] = 'Schlecht'; $string['present'] = 'Aktuell'; -$string['reasonforadjustment'] = 'Gründe für Bewertung'; +$string['reasonforadjustment'] = 'Gründe der Bewertung'; $string['reassess'] = 'Erneut bewerten'; -$string['regradestudentassessments'] = 'Nochmalige Beurteilung der TeilnehmerInnen Assessments'; -$string['releaseteachergrades'] = 'Veröffentlichung der Bewertung des/der Trainers/in'; -$string['removeallattachments'] = 'Alle Anhänge entfernen'; $string['repeatanalysis'] = 'Wiederhole Analyse'; $string['reply'] = 'Antworten'; $string['returnto'] = 'Zurückkehren zu'; @@ -227,96 +166,74 @@ $string['savedok'] = 'Gespeichert OK'; $string['saveleaguetableoptions'] = 'Speichern der Optionen für die Bestenliste'; $string['savemyassessment'] = 'Meine Bewertung speichern'; $string['savemycomment'] = 'Meinen Kommentar speichern'; -$string['savemygrading'] = 'Meine Bewertung speichern'; -$string['savemysubmission'] = 'Meinen Beitrag speichern'; +$string['savemygrading'] = 'Meine Benotung speichern'; $string['saveoverallocation'] = 'Speichern Verteilungslevel'; $string['scale10'] = 'Punkte von 10'; $string['scale100'] = 'Punkte von 100'; $string['scale20'] = 'Punkte von 20'; -$string['scalecorrect'] = '2 Punkte: Richtig/Falsch-Skala'; -$string['scaleexcellent4'] = '4 Punkte: Sehr Gut/Ungenügend-Skala'; -$string['scaleexcellent5'] = '5 Punkte: Sehr Gut/Ungenügend-Skala'; -$string['scaleexcellent7'] = '7 Punkte: Sehr Gut/Ungenügend-Skala'; -$string['scalegood3'] = '3 Punkte: Gut/Mangelhaft-Skala'; -$string['scalepresent'] = '2 Punkte: Vorhanden-/Nichtvorhanden-Skala'; -$string['scaleyes'] = '2 Punkte: Ja/Nein-Skala'; +$string['scalecorrect'] = '2 Punkt Richtig/Falsch-Skala'; +$string['scaleexcellent4'] = '4 Punkt Sehr Gut/Ungenügend-Skala'; +$string['scaleexcellent5'] = '5 Punkt Sehr Gut/Ungenügend-Skala'; +$string['scaleexcellent7'] = '7 Punkt Sehr Gut/Ungenügend-Skala'; +$string['scalegood3'] = '3 Punkt Gut/Mangelhaft-Skala'; +$string['scalepresent'] = '2 Punkt Anwesenheits-/Abwesenheitsskala'; +$string['scaleyes'] = '2 Punkt Ja/Nein Skala'; $string['select'] = 'Auswahl'; $string['selfassessment'] = 'Selbsteinschätzung'; -$string['sgrade'] = 'Beitrag
              Beurteilung'; -$string['showdescription'] = 'Workshopaufgabe anzeigen'; +$string['setoverallocation'] = 'Gesamtbewertung einrichten'; $string['showgrades'] = 'Bewertungen anzeigen'; -$string['showsubmission'] = 'Beiträge anzeigen: $a'; -$string['specimenassessmentform'] = 'Bewertungskriterien (Übersicht)'; +$string['specimenassessmentform'] = 'Bezeichnung der Bewertungsform'; $string['standarddeviation'] = 'Standardabweichung des Elements $a:'; -$string['standarddeviationnote'] = 'Elemente mit einer Standardabweichung von Null oder sehr kleinen Werten können die Analyse verzerren.
              Dieses Element wurde von der Analyse ausgeschlossen.'; -$string['standarddeviationofelement'] = 'Standardabweichung des Elements $a:'; -$string['strict'] = 'strict/streng'; -$string['studentassessments'] = '$a Assessments'; +$string['standarddeviationnote'] = 'Elemente mit einer Standardabweichung von Null oder sehr kleinen Werten können die Analyse verzerren.
              Dieses Element wurde von der Analyse ausgeschlossen.'; +$string['studentassessments'] = 'Arbeiten die von diesem $a bewertet wurden'; $string['studentgrades'] = '$a Bewertungen'; -$string['studentsubmissions'] = '$a Beiträge'; -$string['studentsubmissionsforassessment'] = '$a Beiträge der Teilnehmer/innen fürs Assessment'; +$string['studentsubmissions'] = 'Diese/r $a hat folgende Beurteilungen bekommen'; +$string['studentsubmissionsforassessment'] = '$a Beiträge der Teilnehmer/innen zur Bewertung'; $string['submission'] = 'Beitrag'; -$string['submissionend'] = 'Abgabetermin für Aufgabe'; -$string['submissionendevent'] = 'Ende der Einreichung für $a'; $string['submissions'] = 'Beiträge'; $string['submissionsnolongerallowed'] = 'Es sind keine Beiträge mehr erlaubt.'; -$string['submissionstart'] = 'Beginn der Aufgabenbearbeitung'; -$string['submissionstartevent'] = 'Beginn der Einreichung für $a'; $string['submissionsused'] = '$a\'s Einreichungen in dieser Tabelle'; -$string['submitassignment'] = 'Lösung einfügen'; +$string['submitassignment'] = 'Aufgabe einreichen'; $string['submitassignmentusingform'] = 'Reichen Sie ihre Aufgabe ein, unter Verwendung dieser Vorlage'; -$string['submitexample'] = 'Muster einreichen'; -$string['submitexampleassignment'] = 'Musterlösung eingeben'; +$string['submitexampleassignment'] = 'Beispielaufgabe einreichen'; $string['submitrevisedassignment'] = 'Reichen Sie Ihre überarbeitete Aufgabe, unter Verwendung dieser Vorlage, ein'; -$string['submitted'] = 'eingereicht'; -$string['submittedby'] = 'eingereicht von'; +$string['submitted'] = 'Eingereicht'; +$string['submittedby'] = 'Eingereicht von'; $string['suggestedgrade'] = 'Vorgeschlagene Bewertung'; -$string['tassmnt'] = 'Trainer/innen
              Bewertung'; -$string['teacherassessments'] = '$a Trainer/in-Bewertung'; -$string['teachergradeforassessment'] = '$a TrainerIn-Beurteilung des Assessments'; -$string['teacherscomment'] = 'Kommentar des/der Trainer/in'; -$string['teachersgrade'] = 'Bewertung des/der Trainer/in'; +$string['teacherassessments'] = '$a Aufgaben des/der Kursleiter/in'; +$string['teacherscomment'] = 'Kommentar des/der Kursleiter/in'; +$string['teachersgrade'] = 'Bewertung der/des Kursleiters/in'; $string['teachersubmissionsforassessment'] = '$a Beiträge des/der Trainer/in zur Bewertung'; -$string['thegradeforthisassessmentis'] = 'Die Bewertung für dieses Assessment ist $a'; -$string['thegradeis'] = 'Die Bewertung ist $a'; -$string['theseasessmentsaregradedbytheteacher'] = 'Dieses Assessment wurde beurteilt durch $a'; -$string['thisisadroppedassessment'] = 'Das ist ein verworfenes Assessment'; +$string['thegradeis'] = 'Die Note ist $a'; +$string['thereisfeedbackfromtheteacher'] = 'Es gibt eine Rückmeldung von $a'; +$string['theseasessmentsaregradedbytheteacher'] = 'Diese Bewertung wurde benotet durch $a'; $string['timeassessed'] = 'Angesetzte Zeit'; $string['title'] = 'Titel'; $string['typeofscale'] = 'Skalentyp'; -$string['unassessed'] = '$a noch nicht assessiert'; -$string['ungradedassessments'] = '$a noch nicht beurteiltes Assessment'; -$string['ungradedassessmentsofstudentsubmissions'] = '$a unbewertetet Assessments von Teilnehmer/innen-Beiträgen'; +$string['ungradedassessmentsofstudentsubmissions'] = '$a unbenotete Bewertungen von Kursteilnehmer-Beiträgen'; $string['ungradedassessmentsofteachersubmissions'] = '$a unbenotete Bewertungen von Kursleiter-Beiträgen'; -$string['uploadsuccess'] = 'Abgabe erfolgreich'; -$string['usepassword'] = 'Verwende Passwort'; -$string['verylax'] = 'Sehr lax/locker'; $string['verypoor'] = 'Sehr schlecht'; -$string['verystrict'] = 'Sehr strict/streng'; $string['view'] = 'Ansicht'; -$string['viewassessment'] = 'Assessment anzeigen'; -$string['viewassessmentofteacher'] = 'Assessment anzeigen von $a'; -$string['viewotherassessments'] = 'Andere Assessments anzeigen'; -$string['warningonamendingelements'] = 'WARNUNG: Es existieren eingereichte Assessments
              Ändern Sie nicht die Anzahl der Kriterien, den Skalentyp oder die Kriteriengewichtung'; +$string['viewassessmentofteacher'] = 'Bewertung anzeigen von $a'; +$string['viewotherassessments'] = 'Andere Bewertungen anzeigen'; +$string['warningonamendingelements'] = 'WARNUNG: Es existieren eingereichte Bewertungen
              Ändern Sie nicht die Anzahl der Kriterien, den Skalentyp oder die Kriteriengewichtung'; $string['weight'] = 'Gewichtung'; $string['weightederrorcount'] = 'Durchnittsfehlerzahl: $a'; -$string['weightforbias'] = 'Gewichtung für Abweichung'; -$string['weightforgradingofassessments'] = 'Gewichtung der Bewertungen der Assessments'; -$string['weightforpeerassessments'] = 'Gewichtung für Peer-Assessment'; +$string['weightforbias'] = 'Gewichtung für Tendenz'; +$string['weightforgradingofassessments'] = 'Gewichtung der Benotung der Bewertungen'; +$string['weightforpeerassessments'] = 'Gewichtung für Durchschnittsbewertung'; $string['weightforreliability'] = 'Gewichtung der Zuverlässigkeit'; -$string['weightforteacherassessments'] = 'Gewichtung für Trainer/innenbewertungen'; +$string['weightforteacherassessments'] = 'Gewichtung für Trainerbewertungen'; $string['weights'] = 'Gewichtungen'; $string['weightsusedforfinalgrade'] = 'Gewichtung, die für die Endnote verwendet wird'; $string['weightsusedforsubmissions'] = 'Gewichtung, die für die Beiträge verwenden wird'; -$string['workshopagreedassessments'] = 'Bewertungen, denen zugestimmt wurde'; +$string['workshopagreedassessments'] = 'Festgelegte Bewertung des Workshop'; $string['workshopassessments'] = 'Bewertungen des Workshop'; $string['workshopcomments'] = 'Kommentare des Workshop'; $string['workshopfeedback'] = 'Anmerkungen zum Workshop'; $string['workshopsubmissions'] = 'Ausführungen zum Workshop'; -$string['wrongpassword'] = 'Falsches Passwort für diesen Workshop'; -$string['yourassessments'] = 'Ihre Assessmentbewertungen'; -$string['yourassessmentsofexamplesfromtheteacher'] = 'Ihre Assessment z.B. von $a'; -$string['yourfeedbackgoeshere'] = 'Ihr Feedback beginnt hier'; -$string['yoursubmissions'] = 'Ihre eingereichten Lösungen'; +$string['yourassessments'] = 'Ihre Bewertung'; +$string['yourassessmentsofexamplesfromtheteacher'] = 'Ihre Bewertung z.B. von $a'; +$string['yourfeedbackgoeshere'] = 'Ihre Bewertung beginnt hier'; ?> diff --git a/lang/de_du/README.txt b/lang/de_du/README.txt index 6cd1c52e9b8..66b86ab4977 100644 --- a/lang/de_du/README.txt +++ b/lang/de_du/README.txt @@ -1,4 +1,3 @@ Personal form of German. Adapted from "de" translation by Franz Horvath -Now by C.Borowski diff --git a/lang/de_du/activitynames.php b/lang/de_du/activitynames.php deleted file mode 100755 index 69fbc366600..00000000000 --- a/lang/de_du/activitynames.php +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/lang/de_du/admin.php b/lang/de_du/admin.php deleted file mode 100755 index be76c9d3cc6..00000000000 --- a/lang/de_du/admin.php +++ /dev/null @@ -1,14 +0,0 @@ -More information'; -$string['upgradelogsinfo'] = 'Die Art und Weise in der Log-Daten gespeichert werden wurde verändert. Damit du deine alten Log-Daten mit den Einzelaktivitäten einsehen kannst, müssen die alten Log-Daten aktualisiert werden. Je nachdem wie viele Daten auf deiner Seite gespeichert sind, kann dieser Vorgang eine längere Zeit beanspruchen (u.U. mehrere Stunden). Der Vorgang beansprucht die Datenbank bei umfangreichen Seiten stark. Wenn du den Vorgang einmal gestartet hast, musst du ihn ohne Unterbrechung abschließen lassen. Das Browserfenster darf nicht geschlossen und die Internetverbindung nicht unterbrochen werden in dieser Zeit. Der Zugriff auf deine Seite durch andere Anwender ist dadurch nicht beeinträchtigt.

              Willst du nun deine Log-Daten aktualisieren?'; -$string['upgradinglogs'] = 'Log-Daten aktualisieren'; - -?> diff --git a/lang/de_du/auth.php b/lang/de_du/auth.php index 13b2478123f..bafcd87d99d 100644 --- a/lang/de_du/auth.php +++ b/lang/de_du/auth.php @@ -1,35 +1,69 @@ externen Datenbank-Feldes
              vorauszufüllen, das Sie hier angeben. -

              Wenn Sie dieses leer lassen, dann werden Standardwerte benutzt.

              Im anderen Fall wird der Nutzer befähigt, alle diese Felder nach der Anmeldung zu bearbeiten.

              '; -$string['auth_dbfieldpass'] = 'Name des Feldes, das das Kennwort enthält'; -$string['auth_dbfielduser'] = 'Name des Feldes, das den Nutzernamen enthält'; -$string['auth_dbhost'] = 'Der Computer, der die Datenbank bereitstellt'; -$string['auth_dbname'] = 'Name der Datenbank selbst'; -$string['auth_dbpass'] = 'Das Passwort, das zum Nutzernamen gehört'; -$string['auth_dbpasstype'] = 'Spezifizieren Sie das Format, das das Kennwortfeld benutzt. MD5-Verschlüsselung ist nützlich dafür, mit anderen üblichen Netzanwendungen Verbindung aufzunehmen wie z.B. PostNuke'; -$string['auth_dbtable'] = 'Name of the table in the database'; -$string['auth_dbtitle'] = 'Eine externe Datenbank benutzen'; -$string['auth_dbtype'] = 'Der Datenbank-Typ (Siehe ADOdb Anleitung für Einzelheiten)'; -$string['auth_dbuser'] = 'Nutzername mit Schreibzugriff auf die Datenbank'; -$string['auth_emaildescription'] = 'Email confirmation is the default authentication method. When the user signs up, choosing their own new username and password, a confirmation email is sent to the user\'s email address. This email contains a secure link to a page where the user can confirm their account. Future logins just check the username and password against the stored values in the Moodle database.'; -$string['auth_emailtitle'] = 'Email-based authentication'; -$string['auth_ldap_create_context'] = 'Wenn Sie die Nutzer-Erstellung mit Email-Bestätigung aktivieren, geben Sie die Umgebung an, wo die Nutzer erstellt werden sollen. Diese Umgebung sollte sich von der anderere Nutzer unterscheiden, um Sicherheitsrisiken zu vermeiden. Sie brauchen diese Umgebung nicht zur ldap_context Variable hinzuzufügen, Moodle sucht in dieser Umgebung automatisch nach Nutzern '; -$string['auth_ldap_creators'] = 'Einen Liste von Gruppen, denen es erlaubt ist, neue Kurse zu erstellen. Trennen Sie mehrere Gruppen durch \';\'. Normalerweise etwas wie \'cn=teachers,ou=staff, o=myorg\''; -$string['auth_ldap_host_url'] = 'Geben Sie einen ldap Server in URL-form an wie \'ldap://ldap.myorg.de/\' oder \'ldaps://ldap.myorg.de/\' '; -$string['auth_ldap_memberattribute'] = 'Geben Sie die Mitgliedsoptionen an, wenn Nutzer zu einer Gruppe gehören. Normalereise \'member\''; -$string['auth_ldap_update_userinfo'] = 'on'; -$string['auth_manualdescription'] = 'Diese Methode verhindert, dass Nutzer Ihre eigenen Zugänge anlegen können. Jeder Zugang muss manuell vom Administrator selbst eingerichtet werden.'; -$string['auth_manualtitle'] = 'Nur manuelle Zugänge'; -$string['auth_user_create'] = 'Nutzer-Erstellung aktivieren'; -$string['auth_user_creation'] = 'Neue (anonyme) Nutzer können Nutzer-Accounts erstellen außerhalb der Autentisierungsquelle und per Email bestätigen. Sofern Sie dies aktivieren, achten Sie darauf, ebenso modulspezifische optionen für die Modulerstellung zu konfigurieren.'; -$string['auth_usernameexists'] = 'Ausgewählter Nutzername existiert bereits. Bitte wählen Sie einen neuen.'; -$string['changepassword'] = 'Kennwort-URL ändern'; -$string['changepasswordhelp'] = 'Hier können Sie einen Ort angeben, an dem Ihre Benutzer ihren Nutzernamen/Kennwort ändern können, sofern Sie es vergessen haben. Diese Option wird den Nutzern als Schaltfläche auf Anmeldungsseite angeboten.Wenn Sie dieses Feld leer lassen, wird er nicht angezeigt.'; -$string['chooseauthmethod'] = 'Choose an authentication method: '; -$string['md5'] = 'MD5-Verschlüsselung'; -$string['plaintext'] = 'Reiner Text'; +$string['auth_dbdescription'] = "This method uses an external database table to check whether a given username and password is valid. If the account is a new one, then information from other fields may also be copied across into Moodle."; +$string['auth_dbextrafields'] = "Diese Felder sind optional. Sie können auswählen, einige Moodle Nutzer-Felder mit Informationen des externen Datenbank-Feldes vorauszufüllen, das Sie hier angeben. +

              Wenn Sie dieses leer lassen, dann werden Standardwerte benutzt.

              Im anderen Fall wird der Nutzer befähigt, alle diese Felder nach der Anmeldung zu bearbeiten."; +$string['auth_dbfieldpass'] = "Name des Feldes, das das Kennwort enthält"; +$string['auth_dbfielduser'] = "Name des Feldes, das den Nutzernamen enthält"; +$string['auth_dbhost'] = "Der Computer, der die Datenbank bereitstellt"; +$string['auth_dbname'] = "Name der Datenbank selbst"; +$string['auth_dbpass'] = "Das Passwort, das zum Nutzernamen gehört"; +$string['auth_dbpasstype'] = "Spezifizieren Sie das Format, das das Kennwortfeld benutzt. MD5-Verschlüsselung ist nützlich dafür, mit anderen üblichen Netzanwendungen Verbindung aufzunehmen wie z.B. PostNuke"; +$string['auth_dbtable'] = "Name of the table in the database"; +$string['auth_dbtitle'] = "Eine externe Datenbank benutzen"; +$string['auth_dbtype'] = "Der Datenbank-Typ (Siehe ADOdb Anleitung für Einzelheiten)"; +$string['auth_dbuser'] = "Nutzername mit Schreibzugriff auf die Datenbank"; +$string['auth_emaildescription'] = "Email confirmation is the default authentication method. When the user signs up, choosing their own new username and password, a confirmation email is sent to the user's email address. This email contains a secure link to a page where the user can confirm their account. Future logins just check the username and password against the stored values in the Moodle database."; +$string['auth_emailtitle'] = "Email-based authentication"; +$string['auth_imapdescription'] = "This method uses an IMAP server to check whether a given username and password is valid."; +$string['auth_imaphost'] = "The IMAP server address. Use the IP number, not DNS name."; +$string['auth_imapport'] = "IMAP server port number. Usually this is 143 or 993."; +$string['auth_imaptitle'] = "Use an IMAP server"; +$string['auth_imaptype'] = "The IMAP server type. IMAP servers can have different types of authentication and negotiation."; +$string['auth_ldap_bind_dn'] = "If you want to use bind-user to search users, specify it here. Someting like 'cn=ldapuser,ou=public,o=org'"; +$string['auth_ldap_bind_pw'] = "Password for bind-user."; +$string['auth_ldap_contexts'] = "List of contexts where users are located. Separate different contexts with ';'. For example: 'ou=users,o=org; ou=others,o=org'"; +$string['auth_ldap_create_context'] = "Wenn Sie die Nutzer-Erstellung mit Email-Bestätigung aktivieren, geben Sie die Umgebung an, wo die Nutzer erstellt werden sollen. Diese Umgebung sollte sich von der anderere Nutzer unterscheiden, um Sicherheitsrisiken zu vermeiden. Sie brauchen diese Umgebung nicht zur ldap_context Variable hinzuzufügen, Moodle sucht in dieser Umgebung automatisch nach Nutzern "; +$string['auth_ldap_creators'] = "Einen Liste von Gruppen, denen es erlaubt ist, neue Kurse zu erstellen. Trennen Sie mehrere Gruppen durch ';'. Normalerweise etwas wie 'cn=teachers,ou=staff, o=myorg'"; +$string['auth_ldap_host_url'] = "Geben Sie einen ldap Server in URL-form an wie 'ldap://ldap.myorg.de/' oder 'ldaps://ldap.myorg.de/' "; +$string['auth_ldap_memberattribute'] = "Geben Sie die Mitgliedsoptionen an, wenn Nutzer zu einer Gruppe gehören. Normalereise 'member'"; +$string['auth_ldap_search_sub'] = "Put value <> 0 if you like to search users from subcontexts."; +$string['auth_ldap_update_userinfo'] = "Update user information (firstname, lastname, address..) from LDAP to Moodle. Look at /auth/ldap/attr_mappings.php for mapping information"; +$string['auth_ldap_user_attribute'] = "The attribute used to name/search users. Usually 'cn'."; +$string['auth_ldapdescription'] = "This method provides authentication against an external LDAP server. + If the given username and password are valid, Moodle creates a new user + entry in its database. This module can read user attributes from LDAP and prefill + wanted fields in Moodle. For following logins only the username and + password are checked."; +$string['auth_ldapextrafields'] = "These fields are optional. You can choose to pre-fill some Moodle user fields with information from the LDAP fields that you specify here.

              If you leave these fields blank, then nothing will be transferred from LDAP and Moodle defaults will be used instead.

              In either case, the user will be able to edit all of these fields after they log in."; +$string['auth_ldaptitle'] = "Use an LDAP server"; +$string['auth_manualdescription'] = "Diese Methode verhindert, dass Nutzer Ihre eigenen Zugänge anlegen können. Jeder Zugang muss manuell vom Administrator selbst eingerichtet werden."; +$string['auth_manualtitle'] = "Nur manuelle Zugänge"; +$string['auth_nntpdescription'] = "This method uses an NNTP server to check whether a given username and password is valid."; +$string['auth_nntphost'] = "The NNTP server address. Use the IP number, not DNS name."; +$string['auth_nntpport'] = "Server port (119 is the most common)"; +$string['auth_nntptitle'] = "Use an NNTP server"; +$string['auth_nonedescription'] = "Users can sign in and create valid accounts immediately, with no authentication against an external server and no confirmation via email. Be careful using this option - think of the security and administration problems this could cause."; +$string['auth_nonetitle'] = "No authentication"; +$string['auth_pop3description'] = "This method uses a POP3 server to check whether a given username and password is valid."; +$string['auth_pop3host'] = "The POP3 server address. Use the IP number, not DNS name."; +$string['auth_pop3port'] = "Server port (110 is the most common)"; +$string['auth_pop3title'] = "Use a POP3 server"; +$string['auth_pop3type'] = "Server type. If your server uses certificate security, choose pop3cert."; +$string['auth_user_create'] = "Nutzer-Erstellung aktivieren"; +$string['auth_user_creation'] = "Neue (anonyme) Nutzer können Nutzer-Accounts erstellen außerhalb der Autentisierungsquelle und per Email bestätigen. Sofern Sie dies aktivieren, achten Sie darauf, ebenso modulspezifische optionen für die Modulerstellung zu konfigurieren."; +$string['auth_usernameexists'] = "Ausgewählter Nutzername existiert bereits. Bitte wählen Sie einen neuen."; +$string['authenticationoptions'] = "Authentication options"; +$string['authinstructions'] = "Here you can provide instructions for your users, so they know which username and password they should be using. The text you enter here will appear on the login page. If you leave this blank then no instructions will be printed."; +$string['changepassword'] = "Kennwort-URL ändern"; +$string['changepasswordhelp'] = "Hier können Sie einen Ort angeben, an dem Ihre Benutzer ihren Nutzernamen/Kennwort ändern können, sofern Sie es vergessen haben. Diese Option wird den Nutzern als Schaltfläche auf Anmeldungsseite angeboten.Wenn Sie dieses Feld leer lassen, wird er nicht angezeigt."; +$string['chooseauthmethod'] = "Choose an authentication method: "; +$string['guestloginbutton'] = "Guest login button"; +$string['instructions'] = "Instructions"; +$string['md5'] = "MD5-Verschlüsselung"; +$string['plaintext'] = "Reiner Text"; +$string['showguestlogin'] = "You can hide or show the guest login button on the login page."; ?> diff --git a/lang/de_du/calendar.php b/lang/de_du/calendar.php index 451cb232ef2..6eeba99df16 100644 --- a/lang/de_du/calendar.php +++ b/lang/de_du/calendar.php @@ -13,6 +13,7 @@ $string['courseevents'] = 'Kurstermine'; $string['dayview'] = 'Tagesansicht'; $string['daywithnoevents'] = 'Es gibt heute keine Termine'; $string['december'] = 'Dezember'; +$string['default']; $string['deleteevent'] = 'Termin löschen'; $string['detailedmonthview'] = 'Monatsgesamtansicht'; $string['durationnone'] = 'Ohne Zeitangabe'; diff --git a/lang/de_du/moodle.php b/lang/de_du/moodle.php index 8e6ce662d19..e33627f1458 100644 --- a/lang/de_du/moodle.php +++ b/lang/de_du/moodle.php @@ -1,130 +1,44 @@ $a'; -$string['activityiscurrentlyhidden'] = 'Entschuldigung, diese Aktivität ist momentan verborgen'; -$string['activitymodule'] = 'Aktive Module'; $string['activityreport'] = 'Übersicht der Aktivitäten'; -$string['activityselect'] = 'Wähle eine Aktivität aus, um sie zu verschieben.'; -$string['activitysince'] = 'Aktivität seit $a'; $string['add'] = 'Hinzufügen'; -$string['addactivity'] = 'Lernaktivität hinzufügen'; $string['addadmin'] = 'Verwalter hinzufügen'; $string['addcreator'] = 'Kursersteller hinzufügen'; $string['added'] = 'Hinzugefügt $a'; -$string['addedtogroup'] = 'Zur Gruppe $a hinzugefügt'; -$string['addedtogroupnot'] = 'Nicht zur Gruppe $a hinzugefügt'; -$string['addedtogroupnotenrolled'] = 'Nicht zur Gruppe $a hinzugefügt, da nicht im Kurs eingeschrieben'; $string['addinganew'] = 'Füge ein $a'; $string['addinganewto'] = 'Füge $a->what ein zu $a->to'; -$string['addingdatatoexisting'] = 'Daten zu bestehenden hinzufügen'; -$string['addnewcategory'] = 'Neue Kategorie hinzufügen'; $string['addnewcourse'] = 'Neuen Kurs anlegen'; $string['addnewuser'] = 'Neuen Benutzer anlegen'; -$string['addresource'] = 'Arbeitsunterlage hinzufügen'; $string['address'] = 'Addresse'; -$string['addstudent'] = 'Teilnehmer/in hinzufügen'; -$string['addteacher'] = 'Trainer/in anlegen'; +$string['addteacher'] = 'Lehrer anlegen'; $string['admin'] = 'Verwalter'; -$string['adminhelpaddnewuser'] = 'Neue Nutzerzugänge manuell anlegen'; -$string['adminhelpassignadmins'] = 'Administratoren haben vollen Zugriff auf die Seite'; -$string['adminhelpassigncreators'] = 'Ersteller/innen können neue Kurse anlegen und dort unterrichten'; -$string['adminhelpassignstudents'] = 'Wähle einen Kurs und füge Teilnehmer/innen über das Administrationsmenü hinzu'; -$string['adminhelpassignteachers'] = 'Wähle einen Kurs und verwenden das Icon, um Trainer/innen hinzuzufügen'; -$string['adminhelpauthentication'] = 'Du kannst die interne Nutzerverwaltung oder eine externe Datenbanken verwenden'; -$string['adminhelpbackup'] = 'Backup-Funktionen einrichten'; -$string['adminhelpconfiguration'] = 'Aussehen und Aufbau der Webseite konfigurieren'; -$string['adminhelpconfigvariables'] = 'Allgemeine Variablen der Website konfigurieren'; -$string['adminhelpcourses'] = 'Kurse und Kategorien definieren und ihnen Personen zuordnen'; -$string['adminhelpeditorsettings'] = 'Einstellungen für HTML-Editor festlegen'; -$string['adminhelpedituser'] = 'Zugänge durchsuchen und bearbeiten'; -$string['adminhelpenrolments'] = 'Wähle interne oder externe Wege zur Kontrolle der Zugänge.'; -$string['adminhelpfailurelogs'] = 'Log-Daten und gescheiterte Anmeldungen durchsehen'; -$string['adminhelplanguage'] = 'Aktuelles Sprachpaket überprüfen und bearbeiten'; -$string['adminhelplogs'] = 'Logfiles der Aktivitäten der Seite durchsuchen'; -$string['adminhelpmanageblocks'] = 'Verwaltung der installierten Blöcke und ihrer Einstellungen'; -$string['adminhelpmanagedatabase'] = 'Direkt auf die Datenbank zugreifen (Vorsicht!)'; -$string['adminhelpmanagefilters'] = 'Textfilter und damit verbundene Einstellungen auswählen'; -$string['adminhelpmanagemodules'] = 'Installierte Module und deren Einstellungen verwalten'; -$string['adminhelpsitefiles'] = 'Allgemeine Dateien veröffentlichen oder externe Backups hochladen'; -$string['adminhelpsitesettings'] = 'Aufbau der Startseite festlegen'; -$string['adminhelpthemes'] = 'Ein Thema (Farben, Schriften usw.) für die Site wählen'; -$string['adminhelpuploadusers'] = 'Import neuer Nutzer/innen aus Textdatei'; -$string['adminhelpusers'] = 'Nutzer anlegen und Authentifizierung festlegen'; -$string['administration'] = 'Administration'; -$string['administrator'] = 'Administrator/in'; -$string['administrators'] = 'Administrator/in'; -$string['administratorsall'] = 'Alle Administrator/innen'; -$string['administratorsandteachers'] = 'Administrator/innen und Trainer/innen'; -$string['advancedfilter'] = 'Weitere Filter'; -$string['advancedsettings'] = 'Weitere Einstellungen'; +$string['administration'] = 'Verwaltung'; $string['again'] = 'nochmal'; $string['all'] = 'Alle'; -$string['allactivities'] = 'Alle Aktivitäten'; $string['alldays'] = 'Jeden Tag'; $string['allfieldsrequired'] = 'Alle Felder sind zwingend'; -$string['allgroups'] = 'Alle Gruppen'; $string['alllogs'] = 'Alle Statistiken'; $string['allow'] = 'Zulassen'; $string['allowguests'] = 'Diesen Kurs dürfen Gäste besuchen'; -$string['allowinternal'] = 'Interne Verfahren auch zulassen'; $string['allownot'] = 'Nicht zulassen'; $string['allparticipants'] = 'Alle Teilnehmer'; -$string['allteachers'] = 'Alle Trainer/innen'; -$string['alphabet'] = 'A,Ä,B,C,D,E,F,G,H,I,J,K,L,M,N,O,Ö,P,Q,R,S,T,U,Ü,V,W,X,Y,Z'; $string['alphanumerical'] = 'Kann nur Buchstaben und Zahlen haben'; $string['alreadyconfirmed'] = 'Die Registrierung wurde bereits bestätigt'; -$string['always'] = 'Immer'; $string['answer'] = 'Antwort'; -$string['areyousuretorestorethis'] = 'Willst du wirklich weiter machen?'; -$string['areyousuretorestorethisinfo'] = 'Du hast später die Möglichkeit, diese Sicherung einem bestehenden Kurs hinzuzufügen oder einen völlig neuen Kurs anzulegen.'; $string['assessment'] = 'Beurteilung'; $string['assignadmins'] = 'Verwalter zuweisen'; $string['assigncreators'] = 'Kursersteller zuweisen'; -$string['assignstudents'] = 'Teilnehmer/in eintragen'; -$string['assignstudentsnote'] = 'Anmerkung: Es ist vielleicht nicht notwendig, diese Seite zu verwenden, da sich Kursteilnehmer/innen selbst in diesen Kurs einschreiben können.'; -$string['assignstudentspass'] = 'Du brauchst den Teilnehmer/innen nur den Schlüssel dieses Kurses mitzuteilen. Er lautet gegenwärtig: \'$a\''; $string['assignteachers'] = 'Lehrer zuweisen'; $string['authentication'] = 'Bestätigung'; -$string['autosubscribe'] = 'Automatische Anmeldung beim Forum'; -$string['autosubscribeno'] = 'Nein: Melde mich nicht automatisch beim Forum an'; -$string['autosubscribeyes'] = 'Ja: Wenn ich Beiträge schreibe, melde mich zum Forum an'; -$string['availability'] = 'Verfügbarkeit'; $string['availablecourses'] = 'Verfügbare Kurse'; $string['backup'] = 'Sicherung'; -$string['backupcoursefileshelp'] = 'Wenn du diese Option aktivierst, werden die Kursdateien in die automatische Sicherung integriert.'; -$string['backupdate'] = 'Sicherungsdatum'; $string['backupdetails'] = 'Sicherungsdetails'; -$string['backupfailed'] = 'Einige Kurse konnten nicht gesichert werden!'; -$string['backupfilename'] = 'Sicherung'; -$string['backupfinished'] = 'Sicherung erfolgreich abgeschlossen'; -$string['backupincludemoduleshelp'] = 'Wähle aus, ob die Kursmodule mit oder ohne Nutzerdaten in die automatische Sicherung einbezogen werden sollen'; -$string['backupkeephelp'] = 'Wieviele Sicherungsstufen von jedem Kurs willst du aufbewahren? (ältere Sicherungen werden dann automatisch gelöscht)'; -$string['backuplogdetailed'] = 'Ausführliche Loginformationen'; -$string['backuploglaststatus'] = 'Zuletzt erfolgte Logs'; -$string['backuplogshelp'] = 'Die Log-Daten des Kurses werden in die automatische Sicherung integriert, wenn Sie diese Option aktivieren'; $string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['backupnoneusersinfo'] = 'Hinweis: Du habst eine Sicherung \"ohne\" Teilnehmer/innen ausgewählt. Alle Module werden dadurch umgestellt auf \"ohne Nutzerdaten\". Beachte bitte besonders, dass diese Einstellungen nicht mit den Modulen \"Übung\" und \"Workshop\" kompatibel sind. Diese Module werden daher nicht mit gesichert.'; -$string['backuporiginalname'] = 'Name der Sicherung'; -$string['backupsavetohelp'] = 'Vollständiger Pfad in dem die Sicherungsdateien angelegt werden sollen
              (leer lassen, um sie im Standardverzeichnis des Kurses zu speichern)'; -$string['backuptakealook'] = 'Bitte prüfe deine Backup-Log Aufzeichnungen in: $a'; -$string['backupuserfileshelp'] = 'Wähle aus, ob die Dateien der Teilnehmer/innen (z.B. die Bilder aus den Profilen) in die automatischen Sicherungen einbezogen werden sollen'; -$string['backupusershelp'] = 'Wähle aus, ob alle Nutzer/innen auf dem Server oder nur die Teilnehmer/innen von Kursen einbezogen werden sollen'; -$string['backupversion'] = 'Sicherungsversion'; -$string['blockconfiga'] = 'Konfiguration Block $a'; -$string['blockconfigbad'] = 'Dieser Block wurde nicht richtig implementiert. Daher kann das Einstellungsmenu nicht angezeigt werden.'; -$string['blockdeleteconfirm'] = 'Du willst den Block $a vollständig löschen. Damit löschst du alle Datenbankeinträge, die mit diesem Block in Verbindung stehen. Willst du diesen Vorgang wirklich fortsetzen?'; -$string['blockdeletefiles'] = 'Alle Daten, die mit \'$a->block\' verbunden sind, wurden in der Datenbank gelöscht. Um den Vorgang abzuschließen, und sicherzustellen, dass keine Neuinstallation erfolgt, solltest du das Verzeichnis $a->directory auf dem Server löschen.'; -$string['blocks'] = 'Blöcke'; -$string['blocksetup'] = 'Blocktabellen einrichten'; -$string['blocksuccess'] = 'a Tabellen wurden richtig angelegt'; -$string['bycourseorder'] = 'Sortiert nach Kursen'; -$string['byname'] = 'von $a'; $string['cancel'] = 'Abbrechen'; $string['categories'] = 'Kurs-Kategorie'; $string['category'] = 'Kategorie'; @@ -134,62 +48,24 @@ $string['categoryduplicate'] = 'Eine Kategorie mit dem Namen \'$a\' existiert be $string['changedpassword'] = 'Kennwort geändert'; $string['changepassword'] = 'Kennwort ändern'; $string['changessaved'] = 'Änderungen gespeichert'; -$string['checkingbackup'] = 'Überprüfe Sicherung'; -$string['checkingcourse'] = 'Überprüfe Kurs'; -$string['checkinginstances'] = 'Überprüfe Instanzen'; -$string['checkingsections'] = 'Überprüfe Abschnitte'; $string['checklanguage'] = 'Sprache prüfen'; $string['choose'] = 'Auswahl'; $string['choosecourse'] = 'Kurs auswählen'; -$string['chooseenrolmethod'] = 'Bevorzugtes Anmeldeverfahren'; $string['chooselivelogs'] = 'Oder momentane Aktivität beobachten'; $string['chooselogs'] = 'Wählen Sie die anzuzeigende Statistik aus'; -$string['choosereportfilter'] = 'Wähle einen Filter für den Bericht'; $string['choosetheme'] = 'Thema auswählen'; $string['chooseuser'] = 'Nutzer auswählen'; $string['city'] = 'Stadt/Ort'; -$string['clambroken'] = 'Warnung! Die Virenüberprüfung für hochgeladene Dateien wurde vom Administrator aktiviert. Dabei ist ein Fehler aufgetreten. Der Upload deiner Datei war daher nicht erfolgreich. Der Administrator wurde per E-Mail benachrichtigt und gebeten den Fehler zu überprüfen. Versuche den Upload später noch einmal.'; -$string['clamdeletedfile'] = 'Die Datei wurde gelöscht'; -$string['clamdeletedfilefailed'] = 'Die Datei konnte nicht gelöscht werden.'; -$string['clamemailsubject'] = '$a:: Clam AV Benachrichtigung'; -$string['clamfailed'] = 'Bei Clam AV ist ein Fehler aufgetreten. Die Fehlerbezeichnung lautet: $a. Die Nachricht von Clam lautet: '; -$string['clamlost'] = 'Für moodle wurde Clam beim Dateienupload aktiviert. Der eingetragene Pfad zu Clam AV $a, ist jedoch ungültig.'; -$string['clamlostandactinglikevirus'] = 'moodle wurde so konfiguriert, dass beim Auftreten von Fehlern durch Clam, jede Datei, die hochgeladen wird, als Virus behandelt wird. Das bedeutet: niemand kann Dateien hochladen, bis du den Fehler korrigiert habst!'; -$string['clammovedfile'] = 'Die Datei wurde in das Quarantäne-Verzeichnis verschoben. Du findst die Datei hier: $a'; -$string['clammovedfilebasic'] = 'Die Datei wurde in das Quarantäne-Verzeichnis verschoben.'; -$string['clamquarantinedirfailed'] = 'Die Datei konnte nicht in das Quarantäne-Verzeichnis $a verschoben werden. Du musst den Fehler überprüfen, da solange alle Dateien, die als infiziert erkannt und gelöscht werden.'; -$string['clamunknownerror'] = 'Es gibt einen unbekannten Fehler mit Clam'; -$string['cleaningtempdata'] = 'Lösche temporäre Dateien'; -$string['clicktochange'] = 'Klicken um zu ändern'; $string['closewindow'] = 'Dieses Fenster schließen'; $string['comparelanguage'] = 'Sprache vergleichen und bearbeiten'; $string['complete'] = 'Fertig'; -$string['configallowunenroll'] = 'Wenn du \'Ja\' wählst, haben Teilnehmer/innen die Möglichkeit, sich jederzeit selbst aus ihren Kursen auszutragen; andernfalls liegt das allein in der Hand der Kursleiter/innen oder Administrator/innen.'; -$string['configallusersaresitestudents'] = 'Einstellung für Lernaktivitäten auf der Startseite: Wenn du \'Ja\' auswählst können alle Personen, die als Nutzer registriert wurden, die Lernaktivitäten ausführen. Wenn du \'Nein\' auswählst, können nur Nutzer, die aktuell auch in einem Kurs registriert sind, die Aktivitäten nutzen. Nur Administratoren und speziell eingetragene Trainer/innen können die Aktivitäten auf der Startseite wie Trainer/innen bearbeiten.'; -$string['configautologinguests'] = 'Sollen Gäste automatisch eingeloggt werden, wenn der Kurs den Zugang für Gäste erlaubt?'; -$string['configcachetext'] = 'Diese Einstellung kann größere Sites (oder bei Verwendung von Textfiltern) erheblich beschleunigen. Textkopien werden in ihrer verarbeiteten Fassung für die festgelegte Zeit vorgehalten. Eine zu niedrige Einstellung kann sogar zu einer leichten Verlangsamung führen, bei einer zu hohen Einstellung kann die Aktualisierung der Texte (z.B. mit neuen Links) allerdings zu lange brauchen.'; -$string['configclamactlikevirus'] = 'Behandle Dateien als mit Viren befallen.'; -$string['configclamdonothing'] = 'Behandle Dateien als OK'; -$string['configclamfailureonupload'] = 'Fehlerbehandlung wenn Clam konfiguriert wurde: Was soll passieren wenn ein Konfigurationsproblem aufgetaucht ist oder ein unbekannter Fehler auftrat? Wenn du die Option \"Behandle Dateien als mit Viren befallen\" auswählst, wird die Datei in das Quarantäne-Verzeichnis verschoben oder gelöscht. Wenn du die Option \"Behandle Dateien als OK\" auswählst, wird die Datei normal hochgeladen. In jedem Fall wird der Administrator benachrichtigt, dass ein Problem vorliegt. Wenn du die Option \"Behandle Dateien als mit Viren befallen\" auswählen und es treten aus irgendeinem Grunde Fehler auf, dann werden ALLE Dateien in das Quarantäne-Verzeichnis verschoben oder gelöscht. Gehe mit dieser Einstellung vorsichtig um.'; -$string['configcountry'] = 'Wenn du hier ein Land einstellen, wird dieses Land als Vorgabe für neue Benutzerkonten gewählt. Um Benutzer zu zwingen, ein Land zu wählen, lasse dieses Feld leer.'; -$string['configdbsessions'] = 'Bei Aktivierung nutzt dies Einstellung die Datenbank, um Sitzungsinformationen abzulegen. Dies ist besonders nützlich für große oder stark genutzte Seite oder wenn Server-Cluster genutzt werden. Bei den meisten Installationen kann diese Einstellung abgeschaltet bleiben. Dann wird die Festplatte des Servers statt dessen genutzt. Achtung: wenn du die Einstellung veränderst, werden alle Nutzer sofort ausgeloggt (auch Administratoren).'; -$string['configdebug'] = 'Wenn du dies einschalten, wird das error_reporting von PHP erweitert, so dass mehr Warnungen ausgegeben werden. Dies ist nur nützlich für Entwickler.'; -$string['configdeleteunconfirmed'] = 'Wenn du die Authentifikation per E-Mail verwendest, gieb hier den Zeitraum an, innerhalb dessen die Nutzer ihre Registrierung bestätigen müssen. Unbestätigte Zugänge verfallen danach und werden gelöscht.'; -$string['configdigestmailtime'] = 'Personen, die E-Mails als Digest (Zusammenfassung) eingerichtet haben, erhalten diese Zusammenfassung einmal täglich. Mit dieser Einstellung legst du fest zu welchem Zeitpunkt. Beim darauf folgenden Cron-Aufruf werden die Zusammenfassungen mit versandt.'; -$string['configdisplayloginfailures'] = 'Anzeige von Informationen über frühere gescheiterte Logins der ausgewählten Nutzer.'; -$string['configenablerssfeeds'] = 'Diese Einstellung aktiviert RSS-Feeds für die gesamte Seite. Es ist zusätzlich erforderlich, RSS-Feeds in den einzelnen Modulen zu aktivieren. Gehen Sie dazu zu den Modul-Einstellungen in der Administration.'; -$string['configenablerssfeedsdisabled'] = 'Diese Option ist nicht verfügbar, weil die RSS-Feeds für alle Seiten deaktiviert sind. Um diese zu aktivieren, gehe zu den Variablen in der Administration'; -$string['configerrorlevel'] = 'Wähle die Menge der PHP Warnungen, die du angezeigt bekommen möchtest. Normal ist gebräuchlicherweise die beste Wahl.'; -$string['configextendedusernamechars'] = 'Aktiviere diese Einstellung, damit jedes Zeichen im Nutzernamen zulässig ist (Dies beeinflusst bereits vorhandene Namen nicht). In der Grundeinstellung sind nur alphanumerische Zeichen zulässig.'; -$string['configfilteruploadedfiles'] = 'Beim Aktivieren dieser Option werden alle hochgeladenen HTML- und Textdateien über den Filter bearbeitet bevor sie angezeigt werden.'; -$string['configforcelogin'] = 'Normalerweise können die Startseite und die Kursübersicht (nicht jedoch die Kurse) eingesehen werden ohne sich einzuloggen. Aktiviere diese Option, wenn ein Login zwingend sein soll, um IRGENDETWAS auf dieser Site ausführen zu können.'; -$string['configforceloginforprofiles'] = 'Wenn du diese Einstellung aktivierst, müssen Teilnehmer/innen sich erst anmelden, um die Profile der Trainer/innen einsehen zu können. In der Grundeinstellung (\'Nein\') können die Teilnehmer/innen sich vor der Anmeldung zum Kurs über die Trainer/innen informieren. Zugleich können auch Suchmaschinen auf diese Profile zugreifen.'; -$string['configframename'] = 'Sofern du Moodle innerhalb eines Frames einbindest, trage Sie hier den Namen des Frames ein. Anderenfalls sollte dieser Wert auf \'_top\' stehen.'; -$string['configfullnamedisplay'] = 'Hier kannst du festlegen, wie Namen in ihrer Vollform angezeigt werden. In den meisten Fällen wird die Grundeinstellung \"Vorname + Nachname\" geeignet sein. Du kannst jedoch auch die Nachnamen ausblenden, ganz nach deinen Wünschen.'; -$string['configgdversion'] = 'Zeigt dir die Version von GD an, die installiert ist. Die Version, die als Standard angezeigt wird, ist die, die automatisch ermittelt worden ist. Ändere diese nicht, es sei denn du weißt wirklich, was du tust. '; -$string['confightmleditor'] = 'Wähle aus, ob du die Verwendung der HTML Text-Eingabe zulassen möchten. Selbst, wenn du es zulässt, erscheint diese Text-Eingabe nur, wenn der Benutzer einen geeigneten Browser (wie z.B. den IE 5.5 oder höher) benutzt. +$string['configcountry'] = 'Wenn Sie hier ein Land einstellen, wird dieses Land als Vorgabe für neue Benutzerkonten gewählt. Um Benutzer zu zwingen, ein Land zu wählen, lassen Sie dieses Feld leer.'; +$string['configdebug'] = 'Wenn Sie dies einschalten, wird das error_reporting von PHP erweitert, so dass mehr Warnungen ausgegeben werden. Dies ist nur nützlich für Entwickler.'; +$string['configerrorlevel'] = 'Wählen Sie die Menge der PHP Warnungen, die Sie angezeigt bekommen möchten. Normal ist gebräuchlicherweise die beste Wahl.'; +$string['configframename'] = 'Sofern Sie Moodle innerhalb eines Frames einbinden, tragen Sie hier den Namen des Frames ein. Anderenfalls sollte dieser Wert auf \'_top\' stehen.'; +$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['configidnumber'] = 'Diese Option legt fest, ob (a) Nutzer nicht nach einer ID Nummer gefragt werden, (b) Nutzer zwar nach einer ID Nummer gefragt werden, das Feld aber leer lassen können oder (c) Nutzer nach einer ID Nummer gefragt werden und dieses Feld nicht leer lassen können. Die ID Nummer des Nutzers wird in seinem Profil angezeigt.'; $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 normalerweise sehr gut und Sie können jederzeit auf diese Seite zurückkommen und diese ändern.'; $string['configintroadmin'] = 'Auf dieser Seite sollten Sie den Zugang des Hauptverwalters eintichten, der die vollständige Kontrolle über siw Seite hat. Achten Sie datauf, dass Sie hier einen sicheren Benutzernamen samt Kennwort, sowie eine gültige Email-Adresse angeben. Sie können sppäter auch noch mehr Verwalter einrichten.'; $string['configintrosite'] = 'Diese Seite erlaubt es Ihnen, die Startseite und den Namen der neuen Seite einzurichten. Sie können später hierher zurückkehren und diese Einstellungen jederzeit ändern, indem Sie die Verknüpfung \'Seiteneinstellungen\' auf der Startseite benutzen.'; @@ -198,125 +74,56 @@ $string['configlangdir'] = 'In den meisten Sprachen schreibt man von links nach $string['configlanglist'] = 'Lassen Sie dies leer, um allen Nutzern zu erlauben, aus jeder Sprache installierten Sprache auszuwählen. Sie können ebenso das Sprachmenü verkürzen, indem Sie eine durch Kommas getrennte Liste der Spachcodes angeben, die Sie für die Auswahl möchten. Zum Beispiel en, es_es, fr, it'; $string['configlangmenu'] = 'Wählen Sie aus, ob Sie generell das Sprach-Auswahlmenü auf Ihrer Startseite angezeigt haben möchten, auf der Anmeldungsseite, etc. Dies betrifft nicht die Möglichkeit des Nutzers, seine bevorzugte Sprache in seinem Profil einzustellen.'; $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['configloginhttps'] = 'Mit der Aktivierung der Option nutzt moodle eine sichere https-Verbindung für das Login und kehrt danach zu einer normalen hhtp Verbindung zurück. ACHTUNG: die Einstellung erfordert die Aktvierung von https auf dem Server. Wenn dies nicht erfolgt, kannst du selber nicht mehr auf deine moodle Seite zugreifen.'; $string['configloglifetime'] = 'Dies definiert die Länge der Zeit, über die Sie die Staistiken der User-Aktivität behalten möchten. Statistiken, die veralted sind, werden automatisch gelöscht. Am besten ist es, diese so lang wie möglich zu behalten, falls Sie diese benötigen. Wenn Sie einen ausgelasteten Server haben und Geschwindigkeitseinbrüche feststellen, solten Sie den Statistik-Zeitraum reduzieren.'; $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['configmaxbytes'] = 'Dieser Wert legt für die gesamte Site die maximale Größe für das Hochladen von Dateien fest. Der Eintrag wird begrenzt durch die PHP-Einstellung \'upload_max_filesize\' und die Apache-Einstellung \'LimitRequestBody\'. Diese Rahmeneinstellung begrenzt also auch die maximal wählbare Größe auf Kurs- oder Modulebene.'; $string['configmaxeditingtime'] = 'Hier bestimmen Sie die Zeitspanne, in der die Leute die Foren-Beiträge, Jounal-Antworten, usw. erneut bearbeiten dürfen. Normalerweise sind 30 Minuten ein guter Wert. '; -$string['confignoreplyaddress'] = 'Trage hier die E-Mail-Adresse ein, die als Absender beim Versand von Nachrichten (z.B. aus Foren) genutzt werden soll, wenn die E-Mailadresse des Trainers nicht für Rückantworten genutzt werden kann.'; -$string['confignotifyloginfailures'] = 'E-Mail Benachrichtigungen können versandt werden, wenn Login-Fehler aufgezeichnet wurden. Wer sollte die Nachrichten sehen?'; -$string['confignotifyloginthreshold'] = 'Nach wie vielen gescheiterten Anmeldeversuchen soll eine Benachrichtigung erfolgen (nur wenn diese auch aufgezeichnet werden)?'; -$string['configopentogoogle'] = 'Wenn du diese Option aktivieren, wird Google erlaubt, deine Seite als Gast zu besuchen. Außerdem werden Besucher, die über einen Link von Google kommen, automatisch als \'Gäste\' eingeloggt. Dies gilt natürlich nur für Kurse, die Gäste (ohne Schlüssel) zulassen.'; -$string['configpathtoclam'] = 'Pfad zu CLAM AV. Meist /usr/bin/clamscan oder /usr/bin/clamdscan. Die Eingabe ist notwendig, damit Clam AV genutzt werden kann.'; $string['configproxyhost'] = 'Wenn dieser Server 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['configquarantinedir'] = 'Wenn Clam AV infizierte Dateien in ein Quarantäne-Verzeichnis verschieben soll, geben sie es hier an. Das Verzeichnis auf dem Server muß eine Schreibfreigabe erhalten. Wenn das Feld leer bleibt, ein nicht bestehendes, nicht beschreibbares oder falsches Verzeichnis angegeben wird, werden infizierte Dateien gelöscht. Gebe keinen abschließenden Slash ein.'; -$string['configrunclamonupload'] = 'Soll Clam AV zur Virenprüfung bei hochgeladenen Dateien genutzt werden? Gebe dazu einen korrekten Pfad in pathtoclam ein. (Clam AV ist ein freier Virenscanner. http://www.clamav.net)'; -$string['configsecureforms'] = 'Moodle kann einen zusätzlichen Grad an Sicherheit verwenden, wenn es Daten von Web-Formularen erhält. Sofern dies eingeschaltet ist, dann wird die Variable HTTP_REFERER gegen -die Adresse des aktuellen Formulars geprüft. -In einigen wenigen Fällen kann das Probleme verursachen, wenn der Nutzer eine Firewall benutzt (z.B. Zonealarm), die so konfiguriert ist, das der HTTP_REFERER nicht mitgesendet wird. -Das Ergebnis ist, dass Sie bei einem Formular nicht weiter kommen. -Sofern Nutzer z.B. Probleme mit der Zugangsseite haben, solltest du diese Einstellung deaktivieren, so ist deine Seite allerdings offener für Brute-Force-Attacken. Im Zweifelsfall, belasse es auf \'ja\'.'; -$string['configsessioncookie'] = 'Diese Einstellung legt den Namen des Cookies, der für Moodle Zugriffe benutzt wird fest. Dieser Eintrag ist optional und nur sinnvoll, um zu verhindern dass mehrere Cookies sich überlagern. Dies kann der Fall sein, wenn mehrere Moodle-Systeme auf der gleichen Webseite installiert sind.'; $string['configsessiontimeout'] = 'Wenn angemeldete Benutzer eine lange Zeit fern bleiben (ohne Seiten zu laden), dann werden diese automatisch abgemeldet (Ihre Session/Sitzung wird beendet). Diese Variable gibt an, wie lange diese Zeit sein soll.'; -$string['configshowsiteparticipantslist'] = 'Alle Teilnehmer/innen und Trainer/innen werden auf der Teilnehmer/innenliste angezeigt. Wer soll diese Liste ansehen dürfen?'; -$string['configsitepolicy'] = 'Du kannst eine Seite mit Nutzungsbedigungen (policy) anlegen, die alle Teilnehmer/innen einsehen und bestätigen müssen, bevor sie die Kurse nutzen können. Trage hier die URL-Adresse für diese Seite ein oder lassen Sie die Seite leer. Die Seite kann als HTML-Seite überall abgelegt sein. Eine Möglichkeit ist innerhalb der Startseite z.B. http://yoursite.de/file.php/1/policy.html'; -$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. +$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['configsmtpuser'] = 'Sofern Sie einen SMTP-Server angegeben haben und der Server erfordert Zugangsdaten, dann geben Sie hier den Benutzernamen und das Kennwort an.'; -$string['configteacherassignteachers'] = 'Sollen Trainer/innen ihren Kursen selbst weitere Kolleg/innen zuordnen können=? Falls \'Nein\', können nur die/der Kursverwalter/in und Administrator/innen den Kursen Trainer/innen zuordnen.'; -$string['configtimezone'] = 'Stelle hier die bevorzugte Zeitzone ein. Sie steuert die Zeitanzeige in deinen Kursen. Jeder Teilnehmer kann selbst in seinem Profil eine eigene Zeitzone einstellen und damit deine Voreinstellung für sich aufheben. Die Einstellung \"Serverzeit\" verwendet hier die Zeiteinstellung deines Internetservers. Die Einstellung \"Serverzeit\" im Nutzerprofil hingegen greift auf die Einstellung deines Moodleprogramms an dieser Stelle zurück.'; $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['configuration'] = 'Konfiguration'; $string['configvariables'] = 'Variablen konfigurieren'; -$string['configwarning'] = 'Vorsicht bei der Veränderung dieser Einstellungen. Ungeeignete Werte können zu Problemen führen.'; $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['confirm'] = 'Bestätigen'; -$string['confirmed'] = 'Deine Registrierung wurde bestätigt'; -$string['confirmednot'] = 'Deine Registrierung wurde noch nicht bestätigt!'; +$string['confirmed'] = 'Ihre Registrierung wurde bestätigt'; $string['continue'] = 'Weiter'; -$string['continuetocourse'] = 'Klicke hier, um den Kurs zu betreten'; $string['cookiesenabled'] = 'Cookies müssen in Ihrem Browser eingeschaltet sein'; -$string['cookiesnotenabled'] = 'Cookies sind derzeit von deinem Browser nicht zugelassen.'; -$string['copy'] = 'Kopiere'; -$string['copyingcoursefiles'] = 'Kopiere Kursdateien'; -$string['copyinguserfiles'] = 'Kopiere Benutzerdateien'; -$string['copyingzipfile'] = 'Kopiere zip-Datei'; $string['copyrightnotice'] = 'Urheberrechtsvermerk'; -$string['cost'] = 'Kosten'; -$string['costdefault'] = 'Festgelegte Kosten'; $string['country'] = 'Land'; $string['course'] = 'Kurs'; -$string['courseavailable'] = 'Dieser Kurs ist für Kursteilnehmer/innen verfügbar'; -$string['courseavailablenot'] = 'Dieser Kurs ist nicht für Kursteilnehmer/innen verfügbar'; $string['coursebackup'] = 'Kurssicherung'; -$string['coursecategories'] = 'Kurskategorien'; -$string['coursecategory'] = 'Kurskategorie'; -$string['coursecreators'] = 'Kursverwalter/innen'; $string['coursefiles'] = 'Kursdateien'; $string['courseformats'] = 'Kurs-Format'; -$string['coursegrades'] = 'Kursbenotung'; -$string['courseinfo'] = 'Kurs-Information'; -$string['courserestore'] = 'Kurs-Rücksetzung'; $string['courses'] = 'Kurse'; $string['courseupdates'] = 'Kurse aktuell'; -$string['courseuploadlimit'] = 'Maximale Größe der Dateien für den Upload'; -$string['create'] = 'Erstelle'; $string['createaccount'] = 'Meinen neuen Zugang einrichten'; -$string['createfolder'] = 'Erstelle einen Ordner in $a'; $string['createuserandpass'] = 'Einen neuen Benutzernamen und Kennwort für den Zugang anlegen'; $string['createziparchive'] = 'ZIP-Archiv erstellen'; -$string['creatingblocks'] = 'Blöcke erstellen'; -$string['creatingcategoriesandquestions'] = 'Erstelle Kategorien und Fragen'; -$string['creatingcoursemodules'] = 'Erstelle Kurs-Module'; -$string['creatingevents'] = 'Termine erstellen'; -$string['creatinggroups'] = 'Gruppen einrichten'; -$string['creatinglogentries'] = 'Erstelle Log-Einträge'; -$string['creatingnewcourse'] = 'Erstelle neuen Kurs'; -$string['creatingscales'] = 'Erstelle Skalen'; -$string['creatingsections'] = 'Erstelle Abschnitte'; -$string['creatingtemporarystructures'] = 'Erstelle vorübergehende Strukturen'; -$string['creatingusers'] = 'Erstelle Nutzer'; -$string['creatingxmlfile'] = 'Erstelle XML-Datei'; -$string['currency'] = 'Währung'; -$string['currentcourseadding'] = 'Aktueller Kurs, Daten hinzufügen'; -$string['currentcoursedeleting'] = 'Aktueller Kurs, zunächst löschen'; $string['currentlanguage'] = 'Aktuelle Sprache'; $string['currentlocaltime'] = 'Die lokale Zeit'; -$string['currentpicture'] = 'Derzeitiges Bild'; $string['currentrelease'] = 'Letze Veröffentlichungsinformation'; $string['currentversion'] = 'Letzte Version'; $string['databasechecking'] = 'Moodle Datenbank von Version $a->oldversion auf $a->newversion aktualisieren...'; -$string['databaseperformance'] = 'Datenbankperformance'; $string['databasesetup'] = 'Datenbank einspielen'; $string['databasesuccess'] = 'Datenbank wurde erfolgreich aktualisiert'; -$string['databaseupgradebackups'] = 'Backupversion ist jetzt $a'; -$string['databaseupgradeblocks'] = 'Blockversion ist jetzt $a'; $string['databaseupgrades'] = 'Aktualisiere Datenbank'; -$string['date'] = 'Datum'; -$string['datemostrecentfirst'] = 'Daten - jüngste zuerst'; -$string['datemostrecentlast'] = 'Daten - älteste zuerst'; $string['day'] = 'Tag'; $string['days'] = 'Tage'; -$string['decodinginternallinks'] = 'Interne Links decoden'; $string['defaultcoursefullname'] = 'Course Fullname 101'; $string['defaultcourseshortname'] = 'CF101'; $string['defaultcoursestudent'] = 'Student'; $string['defaultcoursestudents'] = 'Studenten'; -$string['defaultcoursesummary'] = 'Viele Menschen würden gerne etwas dazulernen. -Warum soll es im Internet keine Plattform geben, -die dieses Manko beseitigt. - +$string['defaultcoursesummary'] = 'Viele Menschen würden gerne etwas dazulernen. +Warum soll es im Internet keine Plattform geben, +die dieses Manko beseitigt. + Wissen ist Macht, kämpft gemeinsam gegen die Ohnmacht.'; $string['defaultcourseteacher'] = 'Lehrer'; $string['defaultcourseteachers'] = 'Lehrer'; $string['delete'] = 'Löschen'; -$string['deleteall'] = 'Alles löschen'; -$string['deletecategorycheck'] = 'Bist du dir wirklich sicher, dass du diese Kategorie $a löschen wollen? Damit werden alle enthaltenen Kurse in die davor liegende Kategorie verschoben oder in die Kategorie Verschiedenes.'; $string['deletecheck'] = '$a löschen?'; -$string['deletecheckfiles'] = 'Bist du dir wirklich sicher, dass du diese Dateien löschen möchtest?'; -$string['deletecheckfull'] = 'Bist du dir wirklich sicher, dass du $a löschen willst?'; -$string['deletecheckwarning'] = 'Du bist dabei, diese Dateien zu löschen'; +$string['deletecheckfull'] = 'Sind Sie sich wirklich sicher, dass Sie $a löschen wollen?'; $string['deletecompletely'] = 'Vollständig löschen'; $string['deletecourse'] = 'Einen Kurs löschen'; $string['deletecoursecheck'] = 'Sind Sie sich wirklich sicher, dass sie diesen Kurs und alle dazugehörenden Daten löschen wollen?'; @@ -324,174 +131,95 @@ $string['deleted'] = 'Gel $string['deletedactivity'] = '$a gelöscht'; $string['deletedcourse'] = '$a wurde erfolgreich gelöscht'; $string['deletednot'] = 'Kann $a nicht löschen!'; -$string['deleteselected'] = 'Ausgewählte löschen'; $string['deletingcourse'] = 'Lösche $a'; -$string['deletingexistingcoursedata'] = 'Lösche vorhandene Kursdaten'; -$string['deletingolddata'] = 'Lösche alte Daten'; $string['department'] = 'Abteilung'; $string['description'] = 'Beschreibung'; -$string['detailedless'] = 'Weniger detailliert'; -$string['detailedmore'] = 'Mehr Details'; -$string['directorypaths'] = 'Verzeichnispfade'; -$string['disable'] = 'Abschalten'; $string['displayingfirst'] = 'Nur die ersten $a->count $a->things werden angezeigt'; $string['displayingrecords'] = 'Zeige $a Einträge'; $string['displayingusers'] = 'Benutzer anzeigen von $a->start bis $a->end'; $string['documentation'] = 'Moodle Dokumentation'; -$string['donotask'] = 'Frage nicht'; -$string['down'] = 'Abwärts'; $string['downloadexcel'] = 'Im Excel-Format herunterladen'; $string['downloadtext'] = 'Im Text-Format herunterladen'; $string['doyouagree'] = 'Haben Sie diese Bedingungen gelesen und verstanden?'; -$string['duplicate'] = 'Kopieren'; -$string['duplicatinga'] = 'Kopie von $a'; -$string['duplicatingain'] = 'Kopie von $a->what nach $a->in'; -$string['edhelpbgcolor'] = 'Hintergrundfarbe im Bearbeitungsfeld des Editors festlegen.
              Gültige Werte sind z.B. #ffffff oder white'; -$string['edhelpcleanword'] = 'Die Einstellung (de-)aktiviert Word spezifische Formatfilter.'; -$string['edhelpenablespelling'] = '(De-)Aktivierung der Rechtschreibprüfung (nur Englisch). Wenn die Rechtschreibprüfung aktiviert wird, muss aspell auf dem Server installiert sein.'; -$string['edhelpfontfamily'] = 'Die Schriftfamilien-Eigenschaften sind eine Liste von Schriftarten-Namen und ähnlicher Schriftfamilien. Schriftfamilienbezeichnungen müssen durch ein Komma voneinander getrennt werden.'; -$string['edhelpfontlist'] = 'Festlegung der Schriften, die im Editor-Dropdown-Menu angezeigt werden.'; -$string['edhelpfontsize'] = 'Eingestellte Schriftgrößen
              Gültige Werte sind z.B.: medium, large, smaller, larger, 10pt, 11px.'; $string['edit'] = 'Bearbeite $a'; $string['editcoursesettings'] = 'Kurseinstellungen bearbeiten'; -$string['editfiles'] = 'Dateien bearbeiten'; -$string['editgroupprofile'] = 'Bearbeite die Gruppenprofile'; $string['editinga'] = 'Bearbeite $a'; -$string['editingteachershort'] = 'Editor'; -$string['editlock'] = 'Dieser Wert kann nicht bearbeitet werden!'; $string['editmyprofile'] = 'Profil bearbeiten'; -$string['editorbgcolor'] = 'Hintergrundfarbe'; -$string['editorcleanonpaste'] = 'Word-Texte beim Einfügen in sauberes HTML umwandeln'; -$string['editorcommonsettings'] = 'Zusammengesetzte Einträge'; -$string['editordefaultfont'] = 'Eingestellte Schrift'; -$string['editorenablespelling'] = 'Rechtschreibprüfung deaktivieren'; -$string['editorfontlist'] = 'Schriftenliste'; -$string['editorfontsize'] = 'Eingestellte Schriftgröße'; -$string['editorresettodefaults'] = 'Zurückstellen der Grundeinstellungen'; -$string['editorsettings'] = 'Einstellungen für den Editor'; $string['editsummary'] = 'Zusammenfassung bearbeiten'; $string['editthisactivity'] = 'Diese Aktivität bearbeiten'; -$string['editthiscategory'] = 'Diese Kategorie bearbeiten'; $string['edituser'] = 'Nutzer-Zugang bearbeiten'; $string['email'] = 'Email-Adresse'; -$string['emailactive'] = 'E-Mail aktiviert'; -$string['emailagain'] = 'E-Mail (wiederholen)'; $string['emailconfirm'] = 'Bestätigen Sie Ihren Zugang'; -$string['emailconfirmation'] = 'Hallo $a->firstname, - -ein neuer Zugang wurde auf \'$a->sitename\' -unter Verwendung Deiner Email-Adresse beantragt. - -Um Deinen neuen Zugang zu bestätigen, -gehe bitte auf folgende Internet-Adresse: - - $a->link - -In den meisten Email-Programmen erscheint dieser Link blau, so dass Du diesen anklicken kannst. -Sofern dies nicht funktioniert, -kopiere bitte diese Adresse in die obere Zeile des -Browsers-Fensters. +$string['emailconfirmation'] = 'Hallo $a->firstname, + +ein neuer Zugang wurde auf \'$a->sitename\' +unter Verwendung Deiner Email-Adresse beantragt. + +Um Deinen neuen Zugang zu bestätigen, +gehe bitte auf folgende Internet-Adresse: + + $a->link + +In den meisten Email-Programmen erscheint dieser Link blau, so dass Du diesen anklicken kannst. +Sofern dies nicht funktioniert, +kopiere bitte diese Adresse in die obere Zeile des +Browsers-Fensters. Grüße von der \'$a->sitename\'-Verwaltung, $a->admin'; $string['emailconfirmationsubject'] = '$a: Zugangsinformation'; -$string['emailconfirmsent'] = '

              Eine Email sollte an Deine Adresse $a -gesendet worden sein. -

              Sie enthält einfache Anweisungen, um Deine Registrierung zu vervollständigen. +$string['emailconfirmsent'] = '

              Eine Email sollte an Deine Adresse $a +gesendet worden sein. +

              Sie enthält einfache Anweisungen, um Deine Registrierung zu vervollständigen.

              Bei weiteren Problemen kontaktiere den Verwalter dieser Seite.'; -$string['emaildigest'] = 'E-Mail Zusammenfassung (Digest)'; -$string['emaildigestcomplete'] = 'Vollständig (tägliche E-Mail mit allen Beiträgen)'; -$string['emaildigestoff'] = 'Keine Zusammenfassung (jeden Beitrag einzeln als E-Mail)'; -$string['emaildigestsubjects'] = 'Überschriften (tägliche E-Mail nur mit Überschriften)'; -$string['emaildisable'] = 'Diese E-Mail Adresse ist abgeschaltet.'; -$string['emaildisableclick'] = 'Vollständige Deaktivierung des E-Mail Versands an diese Adresse'; $string['emaildisplay'] = 'Email-Anzeige'; $string['emaildisplaycourse'] = 'Nur Kurs-Mitgliedern meine Email-Adresse sichtbar machen'; $string['emaildisplayno'] = 'Meine Email-Adresse vor jedem verbergen'; $string['emaildisplayyes'] = 'Jeder darf meine Emailadresse sehen'; -$string['emailenable'] = 'Diese E-Mail Adresse ist aktiv.'; -$string['emailenableclick'] = 'Reaktivierung des E-Mail-Versands an diese Adresse'; $string['emailexists'] = 'Diese Email-Adresse ist bereits registriert.'; $string['emailformat'] = 'Email-Format'; $string['emailmustbereal'] = 'Anmerkung: Deine Email-Adresse muss existieren'; -$string['emailnotallowed'] = 'E-Mailadressen sind an dieser Stelle nicht erlaubt (§a)'; -$string['emailonlyallowed'] = 'Diese E-Mailadresse ist nicht zulässig ($a)'; -$string['emailpasswordconfirmation'] = 'Hallo $a->firstname, - -Jemand (wahrscheinlich Du) hat ein neues Kennwort für Deinen Zugang auf \'$a->sitename\' angefordert. - -Um dieses zu bestätigen und ein neues Kennwort per Email zugestellt zu bekommen, gehe bitte auf folgende Internet-Seite: - -$a->link - -In den meisten Mail-Programmen sollte diese Verknüpfung blau erscheinen, welche Du nur anzuklicken brauchst. -Sofern das nicht funktioniert, kopiere bitte diese Adresse in die obere Zeile des -Browsers-Fensters. -Wenn Du Hilfe benötigst, wende dich bitte an den Verwalter der Seite, +$string['emailpasswordconfirmation'] = 'Hallo $a->firstname, + +Jemand (wahrscheinlich Du) hat ein neues Kennwort für Deinen Zugang auf \'$a->sitename\' angefordert. + +Um dieses zu bestätigen und ein neues Kennwort per Email zugestellt zu bekommen, gehe bitte auf folgende Internet-Seite: + +$a->link + +In den meisten Mail-Programmen sollte diese Verknüpfung blau erscheinen, welche Du nur anzuklicken brauchst. +Sofern das nicht funktioniert, kopiere bitte diese Adresse in die obere Zeile des +Browsers-Fensters. +Wenn Du Hilfe benötigst, wende dich bitte an den Verwalter der Seite, $a->admin'; $string['emailpasswordconfirmationsubject'] = '$a: Kennwort-Bestätigung ändern'; -$string['emailpasswordconfirmsent'] = 'Eine Email sollte an Deine Adresse $a versendet worden sein. -

              Sie enthält einfache Anweisungen zur Bestätigung und der Kennwort-Änderung. +$string['emailpasswordconfirmsent'] = 'Eine Email sollte an Deine Adresse $a versendet worden sein. +

              Sie enthält einfache Anweisungen zur Bestätigung und der Kennwort-Änderung. Wenn Du weiterhin Schwierigkeiten hast, kontaktiere bitte den Verwalter.'; -$string['emailpasswordsent'] = 'Danke für Deine Bestätigung des neuen Kennworts. -

              Eine Email mit dem Inhalt Deines neuen Kennwortes wurde an Deine Adresse $a->email versendet. -

              Das Kennwort wurde automatisch generiert - +$string['emailpasswordsent'] = 'Danke für Deine Bestätigung des neuen Kennworts. +

              Eine Email mit dem Inhalt Deines neuen Kennwortes wurde an Deine Adresse $a->email versendet. +

              Das Kennwort wurde automatisch generiert - Vielleicht möchtest Du Dein link>Kennwort ändern, um es Dir leichter zu merken.'; -$string['enable'] = 'Aktivieren'; -$string['encryptedcode'] = 'Verschlüsselter Code'; -$string['enrolledincourse'] = 'Eingeschrieben in Kurs'; -$string['enrolledincoursenot'] = 'Nicht in Kurs'; -$string['enrollfirst'] = 'Du musst zu einem Kurs angemeldet sein, bevor du diese Aktivität nutzen kannst.'; -$string['enrolmentconfirmation'] = 'Du bist dabei, dich in diesen Kurs einzuschreiben.
              Bist du sicher?'; $string['enrolmentkey'] = 'Zugangs-Schlüssel'; $string['enrolmentkeyfrom'] = 'Für diesen Kurs benötigst Du einen \'Zugangs-Schlüssel\' - ein einmaliges Kennwort,
              den Du von $a bekommen haben solltest
              '; -$string['enrolmentkeyhint'] = 'Der Zugangs-Schlüssel war falsch, bitte versuche es erneut
              +$string['enrolmentkeyhint'] = 'Der Zugangs-Schlüssel war falsch, bitte versuche es erneut
              (Hier ist ein Hinweis - Er startet mit \'$a\''; -$string['enrolmentnew'] = 'Neue Anmeldungen in $a'; -$string['enrolmentnewuser'] = '$a->user wurde im Kurs \"$a->course\" angemeldet'; -$string['enrolmentnointernal'] = 'Individuelle Anmeldungen sind zur Zeit nicht möglich.'; -$string['enrolmentnotyet'] = 'Du kannst diesen Kursraum erst am $a betreten. Habe noch ein wenig Geduld.'; -$string['enrolments'] = 'Anmeldungen'; -$string['enrolperiod'] = 'Teilnahmezeitraum'; $string['entercourse'] = 'Hier klicken, um den Kurs zu betreten'; $string['enteremailaddress'] = 'Gebe hier Deine Email-Adresse ein, um Dein Kennwort zurückzusetzen. Ein neues Kennwort wird Dir via Email zugesendet.'; -$string['entries'] = 'Eintragungen'; $string['error'] = 'Fehler'; $string['errortoomanylogins'] = 'Entschuldigung, aber Du hast die Anzahl erlaubter Zugangs-Versucher erreicht. Starte Sie Deinen Browser neu.'; -$string['errorwhenconfirming'] = 'Du wurdest nicht bestätigt, da ein Fehler aufgetreten ist. Wenn du auf einen Link in einer E-Mail geklickt haben, um hierher zu gelangen, überprüfe bitte ob dieser Link nicht defekt ist. Du kannst in diesem Fall durch Kopieren und Einfügen den Link korrigieren, um so die Bestätigung durchzuführen.'; -$string['everybody'] = 'Jede/r'; -$string['executeat'] = 'Ausführen am'; -$string['existing'] = 'Bestehende'; $string['existingadmins'] = 'Vorhandene Verwalter'; -$string['existingcourse'] = 'Vorhandener Kurs'; -$string['existingcourseadding'] = 'Vorhandener Kurs, Daten hinzufügen'; -$string['existingcoursedeleting'] = 'Vorhandener Kurs, zunächst löschen'; $string['existingcreators'] = 'Vorhandener Kursersteller'; -$string['existingstudents'] = 'Eingeschriebene Kursteilnehmer/in'; $string['existingteachers'] = 'Vorhandene Lehrer'; -$string['explanation'] = 'Erläuterung'; -$string['failedloginattempts'] = '$a->attempts gescheiterte Logins seit deinem letzten Besuch.'; -$string['failedloginattemptsall'] = '$a->attempts gescheiterte Logins von $a->accounts Nutzern.'; $string['feedback'] = 'Rückmeldung'; -$string['file'] = 'Datei'; $string['filemissing'] = '$a fehlt'; $string['files'] = 'Dateien'; -$string['filesfolders'] = 'Dateien/Ordner'; $string['filloutallfields'] = 'Bitte fülle alle Formular-Felder aus'; -$string['findmorecourses'] = 'Weitere Kurse finden...'; -$string['firstdayofweek'] = 'O'; $string['firstname'] = 'Vorname'; $string['firsttime'] = 'Bist Du das erste Mal hier?'; $string['followingoptional'] = 'Die folgenden Angaben sind optional'; $string['followingrequired'] = 'Die folgenden Angaben sind zwingend'; -$string['force'] = 'Übergreifend'; -$string['forcedmode'] = 'festgelegter Modus'; -$string['forcelanguage'] = 'Festgelegte Sprache'; -$string['forceno'] = 'Keine'; -$string['forcepasswordchange'] = 'Änderung des Passwortes ist erforderlich'; -$string['forcepasswordchangehelp'] = 'Fordert den Nutzer auf, beim nächsten Login das Passwort zu ändern.'; $string['forgotten'] = 'Benutzername und Kennwort vergessen?'; $string['format'] = 'Format'; $string['formathtml'] = 'HTML-Format'; -$string['formatmarkdown'] = 'Markdown-Format'; $string['formatplain'] = 'Reines Textformat'; $string['formatsocial'] = 'Soziales Format'; $string['formattext'] = 'Moodle Text-Format'; @@ -499,47 +227,19 @@ $string['formattexttype'] = 'Formatierung'; $string['formattopics'] = 'Themen-Format'; $string['formatweeks'] = 'Wöchentliches Format'; $string['formatwiki'] = 'Wiki-Format'; -$string['from'] = 'Von (Datum, Uhrzeit)'; -$string['frontpagecategorynames'] = 'Kategorienliste anzeigen'; -$string['frontpagecourselist'] = 'Kursliste anzeigen'; $string['frontpagedescription'] = 'Beschreibung auf Eingangsseite'; $string['frontpageformat'] = 'Format der Eingangsseite'; -$string['frontpagenews'] = 'News anzeigen'; $string['fulllistofcourses'] = 'Alle Kurse'; $string['fullname'] = 'Nachname'; -$string['fullnamedisplay'] = '$a->Vorname $a-> Nachname'; $string['fullprofile'] = 'Ganzes Profil'; $string['fullsitename'] = 'Name der gesamten Seite'; -$string['functiondisabled'] = 'Diese Funktion ist derzeit abgeschaltet.'; $string['gd1'] = 'GD 1.x ist installiert'; $string['gd2'] = 'GD 2.x ist installiert'; $string['gdneed'] = 'GD muss installiert sein, um diese Grafik zu sehen'; $string['gdnot'] = 'GD ist nicht installiert'; -$string['go'] = 'Start'; $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['group'] = 'Gruppe'; -$string['groupadd'] = 'Neue Gruppe hinzufügen'; -$string['groupaddusers'] = 'Die Ausgewählten zur Gruppe hinzufügen'; -$string['groupfor'] = 'für Gruppe'; -$string['groupinfo'] = 'Info über die ausgewählte Gruppe'; -$string['groupinfomembers'] = 'Info über die ausgewählten Mitglieder'; -$string['groupinfopeople'] = 'Info über die ausgewählten Leute'; -$string['groupmemberssee'] = 'Gruppenmitglieder sichtbar'; -$string['groupmembersselected'] = 'Mitglieder der ausgewählten Gruppe'; -$string['groupmode'] = 'Gruppenmodus'; -$string['groupmodeforce'] = 'Übergreifender Gruppenmodus'; -$string['groupmy'] = 'Meine Gruppe'; -$string['groupnonmembers'] = 'Teilnehmer/innen, die keiner Gruppe zugeordnet sind'; -$string['groupnotamember'] = 'ntschuldigung, du bist kein Mitglied dieser Gruppe'; -$string['grouprandomassign'] = 'Zufallsverteilung auf die Gruppen'; -$string['groupremove'] = 'Entfernen der ausgewählten Gruppe'; -$string['groupremovemembers'] = 'Entfernen der ausgewählten Mitglieder'; -$string['groups'] = 'Gruppen'; -$string['groupsnone'] = 'Keine Gruppen'; -$string['groupsseparate'] = 'Getrennte Gruppen'; -$string['groupsvisible'] = 'Sichtbare Gruppen'; $string['guestskey'] = 'Gäste zulassen, die einen Schlüssel haben'; $string['guestsno'] = 'Gäste nicht erlaubt'; $string['guestsnotallowed'] = '\'$a\' erlaubt Gästen keinen Zugang'; @@ -550,7 +250,6 @@ $string['help'] = 'Hilfe'; $string['helpemoticons'] = 'Emoticons benutzen'; $string['helpformatting'] = 'Über formattierten Text'; $string['helphtml'] = 'Wie man HTML schreibt'; -$string['helpindex'] = 'Index aller Hilfe-Dateien'; $string['helppicture'] = 'Wie man ein Foto hochlädt'; $string['helpquestions'] = 'Wie man fragen stellt'; $string['helpreading'] = 'Gewissenhaft lesen'; @@ -559,13 +258,7 @@ $string['helpsummaries'] = ' $string['helptext'] = 'Wie man Text schreibt'; $string['helpwiki'] = 'Wie man einen Wiki-Text schreibt'; $string['helpwriting'] = 'Gewissenhaft schreiben'; -$string['hiddensections'] = 'Verborgene Abschnitte'; -$string['hiddensectionscollapsed'] = 'Verborgene Abschnitte werden in unterbrochener Form angezeigt'; -$string['hiddensectionsinvisible'] = 'Verborgene Abschnitte sind vollständig unsichtbar'; $string['hide'] = 'Verstecken'; -$string['hideadvancedsettings'] = 'Zusätzliche Einstellungen verbergen'; -$string['hidepicture'] = 'Das Bild verbergen'; -$string['hidesettings'] = 'Einstellungen verbergen'; $string['hits'] = 'Treffer'; $string['hitsoncourse'] = 'Treffer bei $a->coursename von $a->username'; $string['hitsoncoursetoday'] = 'Heutige Treffer bei $a->coursename von $a->username'; @@ -581,34 +274,24 @@ $string['htmleditordisabledbrowser'] = 'Die Rich-Text-Eingabe ist nicht verf $string['htmlformat'] = 'Sauberes HTML-Format'; $string['icqnumber'] = 'ICQ-Nummer'; $string['idnumber'] = 'Identifizierungsnummer'; -$string['inactive'] = 'Inaktiv'; $string['include'] = 'Einbeziehen'; $string['includeallusers'] = 'Alle Nutzer einbeziehem'; $string['includecoursefiles'] = 'Kurs-Dateien einbeziehen'; $string['includecourseusers'] = 'Kurz-Teilnehmer einbeziehen'; -$string['included'] = 'Einbezogen'; $string['includelogentries'] = 'Statistik-Einträge einbeziehen'; -$string['includemodules'] = 'Aktivitäten (Module) einbeziehen'; $string['includeneededusers'] = 'Notwendige Nutzer einbeziehen'; -$string['includenoneusers'] = 'Nicht-Nutzer einbeziehen'; $string['includeuserfiles'] = 'Nutzer-Dateien einbeziehen'; -$string['institution'] = 'Institution'; $string['invalidemail'] = 'Ungültige Email-Adresse'; $string['invalidlogin'] = 'Ungültiger Zugang, bitte versuche es erneut'; -$string['ip_address'] = 'IP-Adresse'; -$string['jump'] = 'Jump/Sprung'; $string['jumpto'] = 'Springen zu...'; -$string['keep'] = 'Halten'; $string['langltr'] = 'Sprach-Richtung von links nach rechts'; $string['langrtl'] = 'Sprach-Richtung von rechts nach links'; $string['language'] = 'Sprache'; $string['languagegood'] = 'Dieses Sprachpaket ist auf dem aktuellen Stand! :-)'; $string['lastaccess'] = 'Letzter Zugriff'; $string['lastedited'] = 'Zuletzt bearbeitet'; -$string['lastlogin'] = 'Letzter Zugang'; $string['lastmodified'] = 'Zuletzt geändert'; $string['lastname'] = 'Nachname'; -$string['latestlanguagepack'] = 'Prüfe auf aktuelle Sprachpakete auf moodle.org'; $string['latestnews'] = 'Neueste Nachrichten'; $string['leavetokeep'] = 'Kennwort-Feld leer lassen, um momentanes Kennwort zu behalten'; $string['license'] = 'GPL-Lizenz'; @@ -621,49 +304,38 @@ $string['location'] = 'Ort'; $string['loggedinas'] = 'Du bist angemeldet als $a'; $string['loggedinnot'] = 'Du bist nicht angemeldet.'; $string['login'] = 'Anmelden'; -$string['login_failure_logs'] = 'Login-Fehler Daten'; $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 wirst Du Dir 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 \"Zugangsschlüssel\" haben, -den Du später nicht mehr brauchen wirst. Hier sind die -Schritte: -

                -
              1. Fülle das Formular Neuer Zugang -mit Deinen Angaben aus. -
              2. Umgehend geht eine Email an Deine Adresse raus. +$string['loginsteps'] = 'Hallo! Für den vollen Zugang zu +den Kursen wirst Du Dir 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 \"Zugangsschlüssel\" haben, +den Du später nicht mehr brauchen wirst. Hier sind die +Schritte: +
                  +
                1. Fülle das Formular Neuer Zugang +mit Deinen Angaben aus. +
                2. Umgehend geht eine Email an Deine Adresse raus.
                3. Lese die Email und klicke den darin enthaltenen Internetverweis an.
                4. Dein Zugang wird bestätigt, und Du wirst angemeldet sein.
                5. Jetzt wähle den Kurs aus, an dem Du teilnehmen möchtest.
                6. Solltest Du nach einen \"Zugangsschlüssel\" gefragt werden, benutze den, den Dir Dein Lehrer gegeben hat. Dieser schaltet Dich für diesen Kurs frei.
                7. Nun kannst Du auf den vollen Kurs zugreifen. Zukünftig brauchst Du nur Deinen eigenen Benutzernamen und das Kennwort im Formular auf dieser Seite einzugeben, um dich anzumelden und Zugang zu jedem Kurs, bei dem Du dich angemeldet hast, zu bekommen.
                '; $string['loginstepsnone'] = 'Hallo!

                Für vollen Zugang zu den Kursen musst Du Dir einen Zugang anlegen.

                Alles, was Du tun musst, ist einen Benutzernamen und ein Kennwort zu wählen, das Du im Formular auf dieser Seite einträgst!

                Wenn jemand anderes bereits Deinen Benutzernamen gewählt hat, musst Du einen anderen Benutzernamens verwenden.'; $string['loginto'] = 'Angemeldet bei $a'; $string['loginusing'] = 'Melde Dich hier mit Benutzernamen und Kennwort an'; $string['logout'] = 'Abmelden'; $string['logs'] = 'Statistiken'; -$string['logtoomanycourses'] = '[ url\">more ]'; -$string['logtoomanyusers'] = '[ url\">more ]'; -$string['mailadmins'] = 'Administrator/innen informieren'; -$string['mailstudents'] = 'Teilnehmer/innen informieren'; -$string['mailteachers'] = 'Trainer/innen informieren'; $string['mainmenu'] = 'Hauptmenü'; $string['makeafolder'] = 'Verzeichnis erstellen'; -$string['makeeditable'] = 'Wenn Du \'$a\' durch den Internet-Server bearbeitbar machst (beispielsweise Apache) kannst du diese Datei direkt auf dieser Seite bearbeiten'; -$string['manageblocks'] = 'Blöcke'; +$string['makeeditable'] = 'Wenn 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['managefilters'] = 'Filter'; -$string['managemodules'] = 'Module verwalten'; $string['markedthistopic'] = 'Dieses Thema ist als aktuelles Thema gekennzeichnet'; $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['maximumupload'] = 'Maximale Größe der Datei für den Upload'; $string['maxsize'] = 'Maximale Größe: $a'; $string['min'] = 'Minute'; $string['mins'] = 'Minuten'; -$string['minutes'] = 'Minuten'; $string['miscellaneous'] = 'Verschiedenes'; $string['missingcategory'] = 'Du musst einen Rubrik auswählen'; $string['missingcity'] = 'Stadt fehlt'; @@ -671,9 +343,8 @@ $string['missingcountry'] = 'Land fehlt'; $string['missingdescription'] = 'Beschreibung fehlt'; $string['missingemail'] = 'Email-Adresse fehlt'; $string['missingfirstname'] = 'Vorname fehlt'; -$string['missingfullname'] = 'Name fehlt'; +$string['missingfullname'] = 'Voller Name fehlt'; $string['missinglastname'] = 'Nachname fehlt'; -$string['missingname'] = 'Fehlender Name'; $string['missingnewpassword'] = 'Neues Kennwort fehlt'; $string['missingpassword'] = 'Kennwort fehlt'; $string['missingshortname'] = 'Kurzer Name fehlt'; @@ -684,29 +355,15 @@ $string['missingstrings'] = 'Auf fehlende Textpassagen pr $string['missingstudent'] = 'Schüler fehlt'; $string['missingsummary'] = 'Zusammenfassung fehlt'; $string['missingteacher'] = 'Du musst etwas auswählen'; -$string['missingurl'] = 'Fehlende URL'; $string['missingusername'] = 'Benutzername fehlt'; $string['modified'] = 'Geändert'; -$string['moduledeleteconfirm'] = 'Du bist dabei, das Modul \'$a\' vollständig zu löschen. Dies löscht alles in der Datenbank, das mit der Modul-Aktivität verknüpft ist. Bist du SICHER, dass du fortfahren möchten?'; -$string['moduledeletefiles'] = 'Alle mit dem Modul \'$a->module\' verknüpften Daten wurden aus der Datenbank gelöscht. Um diese Löschung zu vervollständigen (und das Modul daran hindern, sich selbst erneut zu installieren), solltest du nun dieses Verzeichnis auf dem Server entfernen: $a->directory'; $string['modulesetup'] = 'Leg Modul-Tabellen an'; $string['modulesuccess'] = '$a Tabellen wurden korrekt angelegt'; -$string['moodleversion'] = 'Moodle-Version'; -$string['more'] = 'mehr'; $string['mostrecently'] = 'neueste'; -$string['move'] = 'Verschieben'; -$string['movecategoryto'] = 'Verschiebe Kategorie nach:'; -$string['movecourseto'] = 'Verschiebe Kurs nach:'; $string['movedown'] = 'Nach unten verschieben'; $string['movefilestohere'] = 'Dateien hierhin verschieben'; -$string['movefull'] = '$a an diese Stelle verschieben'; -$string['movehere'] = 'Hierhin verschieben'; -$string['moveleft'] = 'Einzug links'; -$string['moveright'] = 'Einzug rechts'; -$string['moveselectedcoursesto'] = 'Gewählte Kurse verschieben nach ...'; $string['movetoanotherfolder'] = 'In einen anderen Ordner verschieben'; $string['moveup'] = 'Nach oben verschieben'; -$string['mustchangepassword'] = 'Das neue Passwort darf nicht mit dem alten Passwort übereinstimmen.'; $string['mustconfirm'] = 'Sie müssen Ihren Zugang bestätigen'; $string['mycourses'] = 'Meine Kurse'; $string['name'] = 'Name'; @@ -718,22 +375,21 @@ $string['never'] = 'Nie'; $string['neverdeletelogs'] = 'Niemals die Statistiken löschen'; $string['new'] = 'Neu'; $string['newaccount'] = 'Neuer Zugang'; -$string['newcourse'] = 'Neues Kennwort'; $string['newpassword'] = 'Neues Kennwort'; -$string['newpasswordtext'] = 'Hallo $a->firstname, - -Dein Kennwort auf \'$a->sitename\' wurde zurückgesetzt und Dir ist ein neues, temporäres Kennwort zugewiesen worden. - -Deine Zugangsdaten sind jetzt: - Benutzername: $a->username - Kennwort: $a->newpassword - -Bitte gehe auf diese Seite und ändere Ihr Kennwort: - $a->link - - -In den meisten Email-Programmen erscheint dieser Link blau, so dass Du diesen anklicken kannst. Sofern dies nicht funktioniert, kopiere bitte diese Adresse in die obere Zeile des Browser-Fensters. - +$string['newpasswordtext'] = 'Hallo $a->firstname, + +Dein Kennwort auf \'$a->sitename\' wurde zurückgesetzt und Dir ist ein neues, temporäres Kennwort zugewiesen worden. + +Deine Zugangsdaten sind jetzt: + Benutzername: $a->username + Kennwort: $a->newpassword + +Bitte gehe auf diese Seite und ändere Ihr Kennwort: + $a->link + + +In den meisten Email-Programmen erscheint dieser Link blau, so dass Du diesen anklicken kannst. Sofern dies nicht funktioniert, kopiere bitte diese Adresse in die obere Zeile des Browser-Fensters. + Grüße von der \'$a->sitename\'-Verwaltung, $a->signoff'; $string['newpicture'] = 'Neues Foto'; $string['newsitem'] = 'Nachricht '; @@ -741,52 +397,32 @@ $string['newsitems'] = 'Nachrichten'; $string['newsitemsnumber'] = 'Anzuzeigende Nachrichten'; $string['newuser'] = 'Neuer Benutzer'; $string['newusers'] = 'Neue Benutzer'; -$string['next'] = 'Nächste'; $string['no'] = 'Nein'; -$string['nobody'] = 'Niemand'; -$string['nocoursesfound'] = 'Keine Kurse gefunden mit dem Begriff \'$a\''; $string['nocoursesyet'] = 'Keine Kurse in dieser Rubrik'; $string['noexistingadmins'] = 'Kein Verwalter vorhanden, dies ist ein schwerwiegender Fehler und diese Nachricht solltest Du niemals sehen.'; $string['noexistingcreators'] = 'Keine Ersteller angelegt'; -$string['noexistingstudents'] = 'Keine Kursteilnehmer/innen vorhanden'; $string['noexistingteachers'] = 'Keine Lehrer angelegt'; -$string['nofilesselected'] = 'Du hast keine Dateien zur Wiederherstellung ausgewählt'; $string['nofilesyet'] = 'Bislang wurden keine Dateien für Deinen Kurs hochgeladen'; $string['nograde'] = 'Keine Note'; $string['noimagesyet'] = 'Bislang wurden keine Grafiken für Deinen Kurs hochgeladen'; -$string['nomorecourses'] = 'Keine weiteren entsprechenden Kurse gefunden'; -$string['nomoreidnumber'] = 'idnumber nicht verwenden, um Kollisionen zu vermeiden'; $string['none'] = 'Nichts'; $string['nopotentialadmins'] = 'Keine potentiellen Verwalter'; $string['nopotentialcreators'] = 'Keinen potentiellen Kursersteller'; -$string['nopotentialstudents'] = 'Keine potenziellen Kursteilnehmer/innen vorhanden'; $string['nopotentialteachers'] = 'Keine potentiellen Lehrer'; $string['normal'] = 'Normal'; -$string['normalfilter'] = 'Normalfilter'; -$string['nostudentsfound'] = 'Kein $a gefunden'; $string['nostudentsyet'] = 'Kein Schüler nimmt bislang an diesem Kurs teil'; $string['nosuchemail'] = 'Keine solche Email-Adresse'; $string['notavailable'] = 'Nicht verfügbar'; $string['noteachersyet'] = 'Kein Lehrer bislang in diesem Kurs teil'; $string['notenrolled'] = '$a nimmt nicht an diesem Kurs teil.'; -$string['noteuserschangednonetocourse'] = 'Anmerkung: Kursnutzer müssen bei der Wiederherstellung von Nutzerdaten wiederhergestellt werden. Diese Einstellung wurde für dich geändert.'; $string['nothingnew'] = 'Nichts Neues seit Deinem letzten Besuch'; -$string['noticenewerbackup'] = 'Diese Backup-Datei wurde erstellt mit moodle $a->backuprelease ($a->backupversion) und ist aktueller als die derzeit installierte moodle-Version $a->serverrelease ($a->serverversion). Das kann zu Fehlern führen, da ein abwärtskompatibles Backup nicht garantiert wird.'; -$string['notifyloginfailuresmessage'] = '$a->time, IP: $a->ip, User: $a->info'; -$string['notifyloginfailuresmessageend'] = 'Du kannst diese Logs unter $a/course/log.php?id=1&chooselog=1&modid=site_errors einsehen.'; -$string['notifyloginfailuresmessagestart'] = 'Dies ist eine Übersicht über gescheiterte Anmeldeversuche auf $a seit der letzten Benachrichtigung'; -$string['notifyloginfailuressubject'] = '$a: Nachrichten von gescheiterten Logins'; -$string['notincluded'] = 'Nicht eingebunden'; -$string['notingroup'] = 'Diese Aktivität ist nur für Gruppenmitglieder zugänglich. Du bist nicht Mitglied in dieser Gruppe.'; $string['nousersmatching'] = 'Keine Nutzer bezüglich \'$a\' wurden gefunden'; $string['nousersyet'] = 'Bislang keine Benutzer'; $string['now'] = 'jetzt'; -$string['numattempts'] = '$a gescheiterte(r) Login-Versuch(e)'; $string['numberweeks'] = 'Anzahl der Wochen/Themen'; $string['numdays'] = '$a Tage'; $string['numhours'] = '$a Stunden'; $string['numminutes'] = '$a Minuten'; -$string['numseconds'] = '$a Sekunden'; $string['numviews'] = '$a Einsichten'; $string['numweeks'] = '$a Wochen'; $string['numwords'] = '$a Wörter'; @@ -795,11 +431,7 @@ $string['ok'] = 'OK'; $string['opentoguests'] = 'Gast-Zugriff'; $string['optional'] = 'nicht zwingend'; $string['order'] = 'Reihenfolge'; -$string['other'] = 'Sonstige'; $string['outline'] = 'Ausstehend'; -$string['page'] = 'Seite'; -$string['pageheaderconfigablock'] = 'Anlegen eins Blocks in %%fullname%%'; -$string['parentlanguage'] = 'de'; $string['participants'] = 'Teilnehmer'; $string['password'] = 'Kennwort'; $string['passwordchanged'] = 'Kennwort wurde geändert'; @@ -807,103 +439,42 @@ $string['passwordconfirmchange'] = 'Kennwort $string['passwordrecovery'] = 'Ja, hilf mir bei der Anmeldung'; $string['passwordsdiffer'] = 'Dieses Kennwort ist falsch'; $string['passwordsent'] = 'Kennwort wurde gesendet'; -$string['passwordsenttext'] = ' -

                Eine Email wurde an Deine Adresse $a->email gesendet. -

                Suche in Deiner Email nach Deinem neuen Kennwort - -

                Das Kennwort wurde automatisch erzeugt. +$string['passwordsenttext'] = ' +

                Eine Email wurde an Deine Adresse $a->email gesendet. +

                Suche in Deiner Email nach Deinem neuen Kennwort + +

                Das Kennwort wurde automatisch erzeugt. Sicherlich möchtest Du es link>ändern, um es Dir leichter zu merken.'; -$string['pathnotexists'] = 'Der eingegebene Pfad existiert auf dem Server nicht'; -$string['pathslasherror'] = 'Pfadbezeichnung darf nicht mit einem slash enden!!'; -$string['paymentinstant'] = 'Klicke auf den Button, um die Teilnahmegebühr zu bezahlen und dich innerhalb kürzester Zeit anzumelden.'; -$string['paymentrequired'] = 'Dieser Kurs ist gebührenpflichtig. Bitte bezahle vor der Anmeldung.'; -$string['paymentsorry'] = 'Vielen Dank für deine Beitrag. Der Bezahlvorgang wurde jedoch noch nicht vollständig abgeschlossen. Du bist noch nicht als Teilnehmer/in im Kurs \"$a->fullname\" registriert. Bitte versuche es in einigen Minuten noch einmal. Wenn weiterhin Probleme auftauchen wende dich bitte an den/die Trainer/in $a->teacher oder den Administrator.'; -$string['paymentthanks'] = 'Vielen Dank für deine Teilnahmegebühr. Du bist nun im Kurs \"$a\" eingetragen.'; $string['people'] = 'Leute'; $string['personalprofile'] = 'Eigenes Profil'; $string['phone'] = 'Telefon'; -$string['phpinfo'] = 'PHP-Info'; -$string['policyagree'] = 'Du musst den Nutzungsbestimmungen zustimmen, bevor du die Seite weiter nutzen kannst. Stimmst du den Nutzungsbestimmungen zu?'; -$string['policyagreement'] = 'Nutzungsbestimmungen'; -$string['policyagreementclick'] = 'Klicken hier, um die Nutzungsbestimmungen zu lesen'; $string['popupwindow'] = 'Datei in neuem Fenster öffnen'; $string['potentialadmins'] = 'Potentielle Verwalter'; $string['potentialcreators'] = 'Potentielle Kursersteller'; -$string['potentialstudents'] = 'Auswahlliste potenzieller Kursteilnehmer/innen'; $string['potentialteachers'] = 'Potentielle Lehrer'; $string['preferredlanguage'] = 'Bevorzugte Sprache'; $string['preview'] = 'Vorschau'; $string['previeworchoose'] = 'Vorschau oder Aussehen auswählen'; -$string['previous'] = 'Frühere'; -$string['publicdirectory'] = 'Öffentliches Verzeichnis'; -$string['publicdirectory0'] = 'Bitte veröffentliche diese Seite nicht'; -$string['publicdirectory1'] = 'Nur den Seitennamen veröffentlichen'; -$string['publicdirectory2'] = 'Nur den Namen der Website mit einem Link veröffentlichen'; -$string['publicsitefileswarning'] = 'Anmerkung: Jeder kann auf die Dateien, die sich hier befinden, zugreifen. Die Dateien sind vor einem Zugriff nicht geschützt'; $string['question'] = 'Frage'; -$string['readinginfofrombackup'] = 'Lese Information vom Backup'; $string['readme'] = 'LIESMICH'; $string['recentactivity'] = 'Neueste Aktivtäten'; -$string['recentactivityreport'] = 'Alle Aktivitäten der letzten Zeit'; -$string['refreshingevents'] = 'Termine aktualisieren'; -$string['registration'] = 'Moodle Anmeldung'; -$string['registrationemail'] = 'E-Mail Benachrichtigung'; -$string['registrationinfo'] = '

                Diese Seite ermöglicht es dir, deine Moodle-Seite auf moodle.org zu registrieren. -Die Registrierung ist kostenlos. -Der Haupt-Vorteil besteht darin, dass du in einer kleinen Mailingliste aufgenommen wirst, -um wichtige sicherheitsrelevante Informationen und Nachrichten über neue Versionen bekommen. -

                Standardmäßig werden deine Informationen nicht veröffentlicht oder an dritte Personen weiterverkauft. Der einzige Grund, diese Informationen zu sammeln, besteht aus Gründen des Supports dazu beizutragen, ein statistisches Bild von der Moodle-Gemeinschaft als Ganzheit aufzubauen. -

                Wenn du es auswählst, kannst du den Seitennamen, das Land und die URL zur öffenlichen Liste der Moodle Seiten hinzufügen. -

                Jede neue Registrierung wird manuell geprüft, bevor sie der Liste hinzugefügt wird, aber sofern du hinzugefügt wirst, kannst du deine Registrierung (und Ihren Eintrag in der öffentlichen Liste)jederzeit aktualisieren, indem du dieses Formular erneut absenden.'; -$string['registrationno'] = 'Nein, ich möchte keine E-Mail erhalten'; -$string['registrationsend'] = 'Sende Registrierungsinformation an moodle.org'; -$string['registrationyes'] = 'Ja, benachrichtige mich über wichtige Hinweise'; $string['removeadmin'] = 'Verwalter löschen'; $string['removecreator'] = 'Kursersteller löschen'; -$string['removestudent'] = 'Kursteilnehmer/in löschen'; $string['removeteacher'] = 'Lehrer löschen'; $string['rename'] = 'Umbenennen'; -$string['renamefileto'] = 'Umbenennen $a in'; -$string['required'] = 'Erforderlich'; $string['requireskey'] = 'Dieser Kurs setzt einen Zugangs-Schlüssel voraus'; -$string['requirespayment'] = 'Dieser Kurs setzt die Bezahlung der Teilnahmegebühr voraus.'; -$string['resortcoursesbyname'] = 'Kurse neu sortieren nach Name'; $string['resources'] = 'Arbeitsmittel'; -$string['restore'] = 'Wiederherstellung'; -$string['restorecancelled'] = 'Wiederherstellung abgebrochen'; -$string['restorecoursenow'] = 'Diesen Kurs wiederherstellen!'; -$string['restorefinished'] = 'Wiederherstellung erfolgreich beendet'; -$string['restoreto'] = 'Wiederherstellen auf'; $string['returningtosite'] = 'Auf diese Internet-Seite zurückkehren?'; $string['revert'] = 'Zurückkehren'; $string['role'] = 'Abmelden'; -$string['rss'] = 'RSS'; -$string['rssarticles'] = 'Zahl der neuesten RSS Artikel'; -$string['rsserror'] = 'Fehler beim Lesen der RSS-Daten'; -$string['rsstype'] = 'RSS-Feed für diese Aktivität'; $string['savechanges'] = 'Änderungen speichern'; -$string['saveto'] = 'Speichern bei'; -$string['scale'] = 'Bewertungsskala'; -$string['scales'] = 'Bewertungsskalen'; -$string['scalescustom'] = 'Benutzerdefinierte Skalen'; -$string['scalescustomcreate'] = 'Neue Skala anlegen'; -$string['scalescustomno'] = 'Es wurden noch keine benutzerdefinierten Skalen angelegt'; -$string['scalesstandard'] = 'Standard Skalen'; -$string['scalestip'] = 'Um benutzdefinierte Skalen zu erzeugen, benutze bitte den Link \'Scales...\' im Menü für die Administration des Kurses.'; -$string['schedule'] = 'Planung'; -$string['scheduledbackupstatus'] = 'Vorgesehener Backupstatus'; $string['search'] = 'Suchen'; $string['searchagain'] = 'Erneut Suchen'; -$string['searchcourses'] = 'Kurse suchen'; -$string['searchhelp'] = 'Du kannst nach mehreren Begriffen gleichzeitig suchen.

                word : findet jeden Treffer des Worts im gesamten Text.
                +word : nur exakte Treffer werden gefunden .
                -word : schließt Ergebnisse, die dieses Wort beinhalten, aus den Treffern aus.'; $string['searchresults'] = 'Suchergebnisse'; $string['sec'] = 'Sekunde'; $string['secs'] = 'Sekunden'; $string['section'] = 'Abschnitt'; -$string['sections'] = 'Abschnitte'; -$string['select'] = 'Auswählen'; $string['selectacountry'] = 'Land auswählen'; -$string['selectednowmove'] = '$a Dateien zum Verschieben ausgewählt. Wählei jetzt das Ziel und klicke \'Files hierhin verschieben\''; $string['senddetails'] = 'Senden Sie meine Details per Email zu'; $string['separateandconnected'] = 'Getrennte und gemeinsame Art des Wissens'; $string['serverlocaltime'] = 'Die Lokalzeit des Servers'; @@ -912,111 +483,70 @@ $string['shortname'] = 'Kurzname'; $string['shortnametaken'] = 'Der Kurzname wird bereits für einen anderen Kurs ($a) verwendet'; $string['shortsitename'] = 'Kurzname der Seite (z.B. ein einziges Wort)'; $string['show'] = 'Anzeigen'; -$string['showadvancedsettings'] = 'Zusätzliche Einstellungen anzeigen'; $string['showall'] = 'Alle $a anzeigen'; $string['showallcourses'] = 'Alle Kurse anzeigen'; $string['showalltopics'] = 'Alle Themen Anzeigen'; $string['showallusers'] = 'Alle Nutzer anzeigen'; $string['showallweeks'] = 'Alle Wochen anzeigen'; -$string['showgrades'] = 'Noten anzeigen'; $string['showlistofcourses'] = 'Die Liste der Kurse anzeigen'; $string['showonlytopic'] = 'Nur Thema $a anzeigen'; $string['showonlyweek'] = 'Nur Woche $a anzeigen'; $string['showrecent'] = 'Neue Aktivitäten anzeigen'; -$string['showreports'] = 'Auswertung über die Aktivitäten anzeigen'; -$string['showsettings'] = 'Einstellungen anzeigen'; $string['showtheselogs'] = 'Diese Statiken anzeigen'; -$string['since'] = 'Seit'; -$string['sincelast'] = 'seit dem letzten Login'; $string['site'] = 'Seite'; -$string['sitedefault'] = 'Grundeinstellungen der Seite'; -$string['siteerrors'] = 'Fehler auf der Seite'; -$string['sitefiles'] = 'Dateien der Seite'; $string['sitelogs'] = 'Statistiken der Seite'; $string['sitenews'] = 'Nachrichten der Site'; -$string['sitepartlist0'] = 'Die Teilnehmerliste kann nur von Trainer/innen für die Startseite (Kurs 1) eingesehen werden'; -$string['sitepartlist1'] = 'Sie müssen als Trainer/in registriert sein, um die Teilnehmer/innenliste anzusehen'; $string['sites'] = 'Seiten'; -$string['sitesection'] = 'Themenabschnitt einbeziehen'; $string['sitesettings'] = 'Seiteneinstellungen'; -$string['siteteachers'] = 'Bearbeiter/innen (für Kurs) der Startseite'; $string['size'] = 'Größe'; -$string['sizeb'] = 'Bytes'; -$string['sizegb'] = 'Gb'; -$string['sizekb'] = 'Kb'; -$string['sizemb'] = 'Mb'; $string['socialheadline'] = 'Soziales Forum - letzte Themen'; $string['someallowguest'] = 'Einige Kurse können auch Gast-Zugang erlauben'; $string['someerrorswerefound'] = 'Eine Information fehlte oder war falsch. Schauen Sie auf die Details weiter unten. '; -$string['sortby'] = 'Sortiert nach'; -$string['specifyname'] = 'Sie müssen einen Namen festlegen.'; $string['startdate'] = 'Datum des Kursbeginns'; $string['startsignup'] = 'Jetzt einen neuen Zugang anlegen!'; -$string['state'] = 'Bundesland/Kanton'; $string['status'] = 'Status'; $string['strftimedate'] = '%%d %%B %%Y'; $string['strftimedateshort'] = '%%d %%B'; $string['strftimedatetime'] = '%%d %%B %%Y, %%H:%%M'; $string['strftimedaydate'] = '%%A, %%d %%B %%Y'; $string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%H:%%M'; -$string['strftimedayshort'] = '%%A, %%d.%%B'; -$string['strftimedaytime'] = '%%a, %%H:%%M'; -$string['strftimemonthyear'] = '%%B %%Y'; $string['strftimerecent'] = '%%d %%b, %%H:%%M'; $string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%H:%%M'; $string['strftimetime'] = '%%H:%%M'; $string['stringsnotset'] = 'Folgende Textteile sind nicht vorhanden in $a'; $string['studentnotallowed'] = 'Entschuldigung, aber Du kannst diesem Kurs nicht als \'$a\' beitreten'; -$string['students'] = 'Teilnehmer/innen'; -$string['studentsandteachers'] = 'Teilnehmer/innen und Trainer/innen'; -$string['subcategories'] = 'Unterkategorien'; $string['success'] = 'Erfolg'; $string['summary'] = 'Zusammenfassung'; $string['summaryof'] = 'Zusammenfassung von $a'; $string['supplyinfo'] = 'Gebe bitte ein paar Informationen über Dich selbst an'; $string['teacheronly'] = 'für $a nur'; -$string['teacherroles'] = '$a Rollen'; -$string['teachers'] = 'Trainer/innen'; $string['textediting'] = 'Wenn Du einen Text bearbeitest'; $string['texteditor'] = 'Standard Internet-Formulare benutzen'; $string['textformat'] = 'Reines Textformat'; $string['thanks'] = 'Danke'; $string['theme'] = 'Thema'; -$string['themes'] = 'Themen'; $string['themesaved'] = 'Neues Thema gespeichert'; $string['thischarset'] = 'iso-8859-1'; -$string['thisdirection'] = 'ltr'; $string['thislanguage'] = 'Deutsch - Du'; -$string['time'] = 'Zeit'; $string['timezone'] = 'Zeitzone'; -$string['to'] = 'Bis (Datum, Uhrzeit)'; $string['today'] = 'Heute'; $string['todaylogs'] = 'Die heutigen Statistiken'; $string['toomanytoshow'] = 'Es sind zuviele Benutzer um sie alle anzuzeigen'; -$string['top'] = 'Oben'; $string['topic'] = 'Thema'; $string['topichide'] = 'Diese Thema vor $a verbergen'; $string['topicoutline'] = 'Ausstehendes Thema'; $string['topicshow'] = 'Dieses Thema für $a anzeigen'; $string['total'] = 'Insgesamt'; -$string['trysearching'] = 'Versuchen Sie es mit der Suchfunktion'; $string['turneditingoff'] = 'Bearbeiten ausschalten'; $string['turneditingon'] = 'Bearbeiten einschalten'; $string['undecided'] = 'Unbestimmt'; $string['unenrol'] = 'Abmelden'; -$string['unenrolallstudents'] = 'Alle Teilnehmer/innen aus diesem Kurs LÖSCHEN !! Alle Daten werden dann gelöscht.'; -$string['unenrolallstudentssure'] = 'Bist du sicher, dass du alle Teilnehmer/in dieses Kurses löschen möchtest? Alle Daten werden dann gelöscht!!!\"'; $string['unenrolme'] = 'Abmelden von $a'; $string['unenrolsure'] = 'Bist Du sicher, dass Du $a von diesem Kurs abmelden möchtest?'; -$string['unfinished'] = 'Nicht abgeschlossen'; -$string['unknowncategory'] = 'Unbekannte Kategorie'; -$string['unlimited'] = 'Unbegrenzt'; $string['unpacking'] = 'Entpacke $a'; $string['unsafepassword'] = 'Unsicheres Kennwort - probiere ein anderes'; $string['unusedaccounts'] = 'Mehr als $a Tage lang unbenutzte Zugänge werden automatisch entfernt.'; $string['unzip'] = 'Eröffnen'; -$string['unzippingbackup'] = 'Entpacke Sicherung'; -$string['up'] = 'Aufwärts'; $string['update'] = 'Aktualisieren'; $string['updated'] = '$a aktualisiert'; $string['updatemyprofile'] = 'Profil aktualisieren'; @@ -1027,62 +557,30 @@ $string['updatinga'] = 'Aktualisiere $a'; $string['updatingain'] = 'Aktualisiere $a->what in $a->in'; $string['upload'] = 'Hochladen'; $string['uploadafile'] = 'Eine Datei hochladen'; -$string['uploadedfile'] = 'Upload der Datei erfolgreich'; $string['uploadedfileto'] = '$a->file hochgeladen nach $a->directory'; -$string['uploadedfiletoobig'] = 'Diese Datei ist zu groß (Dateien dürfen maxinmal $a Byte groß sein)'; -$string['uploadfailednotrecovering'] = 'Der Upload der Datei $a->name hat zu einem Problem geführt. Hier eine kurze Information über die Ursache des Problems: $a->problem. '; -$string['uploadfilelog'] = 'Upload des Log-Berichts für Datei $a'; -$string['uploadformlimit'] = 'Die hochgeladene Datei war größer als für diese Aktivität zugelassen'; -$string['uploadlabel'] = 'Titel:'; $string['uploadnofilefound'] = 'Es wurde keine Datei gefunden - Bist Du sicher, dass Du eine zum Hochladen ausgewählt hast?'; -$string['uploadnotallowed'] = 'Das Hochladen von Dateien ist nicht erlaubt'; -$string['uploadoldfilesdeleted'] = 'Die alte(n) Datei(en) im Uploadbereich wurden gelöscht'; -$string['uploadpartialfile'] = 'Die Datei wurde nur teilweise hochgeladen'; -$string['uploadproblem'] = 'Ein unbekanntes Problem ist während dem Hochladen der Datei aufgetreten +$string['uploadproblem'] = 'Ein unbekanntes Problem ist während dem Hochladen der Datei aufgetreten \'$a\' (Vielleicht war diese zu groß?)) '; -$string['uploadrenamedchars'] = 'Die Datei wurde von $a->oldname umbenannt nach $a->newname, weil nicht zugelassene Zeichen im Dateinamen verwandt wurden.'; -$string['uploadrenamedcollision'] = 'Die Datei wurde von $a->oldname umbenannt nach $a->newname, weil es zu einem Konflikt beim Dateinamen gekommen ist.'; -$string['uploadserverlimit'] = 'Die hochgeladene Datei war größer als dies vom Server zugelasse ist.'; $string['uploadthisfile'] = 'Diese Datei hochladen'; -$string['uploadusers'] = 'Nutzer hochladen'; -$string['usedinnplaces'] = 'Genutzt an $a Stellen'; $string['user'] = 'Nutzer'; -$string['userconfirmed'] = 'Bestätigt $a'; -$string['userdata'] = 'Nutzerdaten'; $string['userdeleted'] = 'Dieser Benutzer-Zugang wurde gelöscht'; $string['userdescription'] = 'Beschreibung'; $string['userfiles'] = 'Nutzer-Dateien'; -$string['userlist'] = 'Teilnehmer/innenliste'; $string['username'] = 'Benutzername'; $string['usernameexists'] = 'Dieser Benutzername existiert, probiere einen anderen'; -$string['usernotconfirmed'] = 'Kann $a nicht bestätigen'; $string['userprofilefor'] = 'Benutzer-Profil für $a'; $string['users'] = 'Benutzer'; -$string['usersnew'] = 'Neue Nutzer/innen'; -$string['userzones'] = 'Nutzerzonen'; -$string['usingexistingcourse'] = 'Verwende bestehenden Kurs'; -$string['version'] = 'Version'; -$string['view'] = 'Ansicht'; -$string['virusfound'] = 'Achtung Administrator: Clam AV hat einen Virus in einer Datei gefunden. Die Datei wurde von $a->user im Kurs $a->course hochgeladen. Hier ist der Bericht von Clamscan:'; -$string['virusfoundlater'] = 'Eine Datei wurde am $a->date mit dem Dateinamen $a->filename für den Kurs $a->course hochgeladen. In der Datei wurde ein Virus gefunden. Hier ist eine Zusammenfassung des Berichts über diese Datei: $a->action. Wenn die Datei dennoch genutzt werden soll, kannst du sie erneut dem Kurs zur Verfügung stellen.'; -$string['virusfoundlateradmin'] = 'Achtung Administrator! Eine Datei wurde am $a->date mit dem Dateinamen $a->filename für den Kurs $a->course hochgeladen. In der Datei wurde ein Virus gefunden. Hier ist eine Zusammenfassung des Berichts über diese Datei: $a->action. -Der Nutzer wurde bereits benachrichtigt.'; -$string['virusfoundlateradminnolog'] = 'Achtung Administrator! Eine Datei wurde mit dem Namen $a->filename hochgeladen. In der Datei wurde ein Virus entdeckt. moodle konnte den Fehler/die Datei nicht an den Nutzer zurück geben. Hier ist ein Kurzbericht über den Hintergrund: $a->action'; -$string['virusfoundsubject'] = '$a: Virus entdeckt!'; -$string['virusfounduser'] = 'Die von dir hochgeladene Datei §a->filename wurde von einem Virenprüfprogramm überprüft. In der Datei wurde ein Virus gemeldet. Der Upload der Datei konnte daher nicht abgeschlossen werden.'; -$string['virusplaceholder'] = 'Die hochgeladene Datei scheint einen Virus zu enthalten. Sie wurde verschoben oder gelöscht. Der Nutzer wurde benachrichtigt.'; $string['webpage'] = 'Internet-Seite'; $string['week'] = 'Woche'; $string['weekhide'] = 'Diese Woche vor $a verbergen'; $string['weeklyoutline'] = 'Wöchentlich ausstehend'; $string['weekshow'] = 'Diese Woche für $a anzeigen'; $string['welcometocourse'] = 'Willkommen zu $a'; -$string['welcometocoursetext'] = 'Willkommen zu $a->coursename! - -Einer der ersten Schritte, die Du erledigen solltest, ist, Deine Profil-Seite innerhalb des Kurses zu bearbeiten, damit wir mehr über Dich erfahren können: - +$string['welcometocoursetext'] = 'Willkommen zu $a->coursename! + +Einer der ersten Schritte, die Du erledigen solltest, ist, Deine Profil-Seite innerhalb des Kurses zu bearbeiten, damit wir mehr über Dich erfahren können: + $a->profileurl'; -$string['whattocallzip'] = 'Wie möchten du die zip-Datei nennen?'; $string['withchosenfiles'] = 'Mit ausgewählten Dateien'; $string['withoutuserdata'] = 'Ohne Nutzer-Daten'; $string['withuserdata'] = 'Mit Nutzer-Daten'; @@ -1094,23 +592,10 @@ $string['wordforteacher'] = 'Ihre Bezeichnung f $string['wordforteachereg'] = 'z.B. Tutor, Professor, usw.'; $string['wordforteachers'] = 'Ihre Bezeichnung für mehrere Lehrer'; $string['wordforteacherseg'] = 'z.B. Tutoren, Professoren, usw.'; -$string['writingcategoriesandquestions'] = 'Schreibe Kategorien und Fragen'; -$string['writingcoursedata'] = 'Schreibe Kursdaten'; -$string['writingeventsinfo'] = 'Termininformationen eintragen'; -$string['writinggeneralinfo'] = 'Schreibe allgemeine Information'; -$string['writinggroupsinfo'] = 'Schreibe Gruppeninformation'; -$string['writingheader'] = 'Schreibe Header'; -$string['writingloginfo'] = 'Schreibe Log-Info'; -$string['writingmoduleinfo'] = 'Schreibe Modulinformation'; -$string['writingscalesinfo'] = 'Schreibe Skaleninformation'; -$string['writinguserinfo'] = 'Schreibe Nutzerinformation'; $string['wrongpassword'] = 'Falsches Kennwort oder Benutzername'; $string['yes'] = 'Ja'; -$string['youareabouttocreatezip'] = 'Du bist dabei, eine zip-Datei anzulegen mit diesem Inhalt'; -$string['youaregoingtorestorefrom'] = 'Du stellst wieder her vom:'; $string['yourlastlogin'] = 'Ihre letzte Anmeldung war'; $string['yourself'] = 'selbst'; $string['yourteacher'] = 'Ihr $a'; -$string['zippingbackup'] = 'Komprimiere Sicherung'; ?> diff --git a/lang/de_du/quiz.php b/lang/de_du/quiz.php index 61a6acebf92..9e0024addcd 100644 --- a/lang/de_du/quiz.php +++ b/lang/de_du/quiz.php @@ -1,138 +1,139 @@ name\' enthält $a->count Fragen. Bitte wählen Sie eine andere Kategorie, um sie zu verschieben.'; -$string['categorymoveto'] = 'In diese Kategorie verschieben'; -$string['choice'] = 'Auswahl'; -$string['choices'] = 'Verfügbare Auswahl'; -$string['correctanswer'] = 'Richtige Antwort'; -$string['correctanswers'] = 'Richtige Antworten'; -$string['createmultiple'] = 'Mehrere Fragen erstellen'; -$string['createnewquestion'] = 'Eine neue Frage anlegen'; -$string['custom'] = 'Eigenes Format'; -$string['daysavailable'] = 'Tage verfügbar'; -$string['default'] = 'Standard'; -$string['defaultgrade'] = 'Standard-Note der Frage'; -$string['defaultinfo'] = 'Die Standard-Kategorie für diese Frage'; -$string['deletequestioncheck'] = 'Sind Sie sich absolut sicher, dass Sie \'$a\' löschen möchten?'; -$string['editcategories'] = 'Kategorien bearbeiten'; -$string['editingmatch'] = 'Eine Zuordnungsfrage bearbeiten'; -$string['editingmultichoice'] = 'Eine Frage mit Mehrfachauswahl bearbeiten'; -$string['editingquestion'] = 'Eine Frage bearbeiten'; -$string['editingquiz'] = 'Ein Quiz bearbeiten'; -$string['editingrandom'] = 'Eine zufällige Frage bearbeiten'; -$string['editingrandomsamatch'] = 'Eine zufällige Kurzantwort-Zuordnung bearbeiten '; -$string['editingshortanswer'] = 'Kurzantwort der Frage bearbeiten'; -$string['editingtruefalse'] = 'Ja/Nein-Frage bearbeiten'; -$string['false'] = 'Falsch'; -$string['feedback'] = 'Rückmeldung'; -$string['fileformat'] = 'Dateiformat'; -$string['filloutoneanswer'] = 'Sie müssen mindestens eine mögliche Antwort geben. Leere Antworten werden ignoriert.'; -$string['filloutthreequestions'] = 'Sie müssen mindestens 2 Sachen auswählen. Leere Fragen werden nicht verwendet'; -$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%% -
                Statt dessen ergeben Sie $a%% -
                Möchten Sie zurück gehen und diese Frage korrigieren?'; -$string['fractionsnomax'] = 'Eine dieser Antworten sollte 100%% sein, so dass -
                es möglich ist, die volle Punktzahl für diese Frage zu bekommen. -
                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 das Quiz nicht sehen oder probieren.'; -$string['imagedisplay'] = 'Bild für die Anzeige'; -$string['importquestions'] = 'Eine Datei aus einer Datei importieren'; -$string['introduction'] = 'Einleitung'; -$string['marks'] = 'Anmerkungen'; -$string['match'] = 'Zuordnung'; -$string['matchanswer'] = 'zugeordnete Antwort'; -$string['missingname'] = 'Der Name der Frage fehlt'; -$string['missingquestiontext'] = 'Der Text der Frage fehlt'; -$string['missingword'] = 'Das Wortformat fehlt'; -$string['modulename'] = 'Quiz'; -$string['modulenameplural'] = 'Quiz'; -$string['multichoice'] = 'Mehrfachauswahl'; -$string['noanswers'] = 'Es wurden 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['noreview'] = 'Du darfst dieses Quiz nicht überprüfen'; -$string['noreviewuntil'] = 'Du darfst dieses Quiz bis $a nicht überprüfen'; -$string['notenoughsubquestions'] = 'Nicht genügend Unter-Fragen wurden definiert\'
                -Möchten Sie zurück gehen und diese Frage korrigieren?'; -$string['publish'] = 'Veröffentlichen'; -$string['qti'] = 'IMS QTI Format'; -$string['question'] = 'Frage'; -$string['questioninuse'] = 'Die Frage \'$a\' wird momentan benutzt:'; -$string['questionname'] = 'Title der Frage'; -$string['questions'] = 'Fragen'; -$string['quizavailable'] = 'Dieses Quiz ist verfügbar bis: $a'; -$string['quizclose'] = 'Dieses Quiz schließen'; -$string['quizclosed'] = 'Dieses Quiz schließt am $a'; -$string['quiznotavailable'] = 'Dieses Quiz ist nicht verfügbar bis: $a'; -$string['quizopen'] = 'Ein Quiz beginnen'; -$string['random'] = 'Zufällig setzen'; -$string['randomcreate'] = 'Eine Zufallsfrage erstellen'; -$string['randomsamatch'] = 'Zufällige Kurzantwort-Zuordnungsfrage'; -$string['randomsamatchcreate'] = 'Erzeuge zufällige Kurzantwort-Zuordnungsfragen'; -$string['randomsamatchintro'] = 'Wähle für jede der folgenden Fragen die passende Antwort aus dem Menü aus'; -$string['randomsamatchnumber'] = 'Nummer auszuwählender Fragen'; -$string['readytosend'] = 'Damit sendest Du Deine Quiz-Antworten, die beurteilt werden. Bist Du sicher, daß Du weitermachen wollen?'; -$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['selectall'] = 'Alles auswählen'; -$string['selectcategoryabove'] = 'Wähle eine obige Kategorie'; -$string['shortanswer'] = 'Kurzantwort'; -$string['show'] = 'Zeigen'; -$string['showcorrectanswer'] = 'Nach dem Antworten richtige Antwort anzeigen?'; -$string['showfeedback'] = 'Nach dem Antworten Rückmeldung anzeigen?'; -$string['shuffleanswers'] = 'Antworten mischen'; -$string['shufflequestions'] = 'Fragen mischen'; -$string['time'] = 'Zeit'; -$string['timecompleted'] = 'Beendet'; -$string['timetaken'] = 'Verbrauchte Zeit'; -$string['toomanyrandom'] = 'Die Anzahl der benötigten Zufallsfragen ist größer als die, die die Kategorie enthält! ($a)'; -$string['true'] = 'Wahr'; -$string['truefalse'] = 'Wahr/Falsch'; -$string['type'] = 'Typ'; -$string['viewallanswers'] = 'Zeige $a ausgefüllte Quiz'; -$string['webct'] = 'WebCT Format'; -$string['yourfinalgradeis'] = 'Deine Gesamtnote für dieses Quiz ist $a'; +$string['addquestions'] = "Fragen hinzufügen"; +$string['addquestionstoquiz'] = "Frage zu aktuellem Quiz hinzufügen"; +$string['addselectedtoquiz'] = "Auswahl zum Quiz hinzufügen"; +$string['allowreview'] = "Bericht erlauben"; +$string['alreadysubmitted'] = "Es sieht so aus, als hättest Du 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['attemptquiznow'] = "Quiz jetzt probieren"; +$string['attempts'] = "Versuche"; +$string['attemptsallowed'] = "Erlaubte Versuche"; +$string['attemptsunlimited'] = "Unbegrenzte Versuche"; +$string['backtoquiz'] = "Zurück zur Quiz-Bearbeitung"; +$string['bestgrade'] = "Höchstnote"; +$string['blackboard'] = "Schwarzes Brett"; +$string['caseno'] = "Nein, Schreibweise ist unwichtig"; +$string['casesensitive'] = "Schreibweise"; +$string['caseyes'] = "Ja, Schreibweise muss stimmen"; +$string['categories'] = "Kategorien"; +$string['category'] = "Kategorie"; +$string['categoryinfo'] = "Kategorie-Information"; +$string['categorymove'] = "Die Kategorie '\$a->name' enthält \$a->count Fragen. Bitte wählen Sie eine andere Kategorie, um sie zu verschieben."; +$string['categorymoveto'] = "In diese Kategorie verschieben"; +$string['choice'] = "Auswahl"; +$string['choices'] = "Verfügbare Auswahl"; +$string['correctanswer'] = "Richtige Antwort"; +$string['correctanswers'] = "Richtige Antworten"; +$string['createmultiple'] = "Mehrere Fragen erstellen"; +$string['createnewquestion'] = "Eine neue Frage anlegen"; +$string['custom'] = "Eigenes Format"; +$string['daysavailable'] = "Tage verfügbar"; +$string['default'] = "Standard"; +$string['defaultgrade'] = "Standard-Note der Frage"; +$string['defaultinfo'] = "Die Standard-Kategorie für diese Frage"; +$string['deletequestioncheck'] = "Sind Sie sich absolut sicher, dass Sie '\$a' löschen möchten?"; +$string['editcategories'] = "Kategorien bearbeiten"; +$string['editingmatch'] = "Eine Zuordnungsfrage bearbeiten"; +$string['editingmultichoice'] = "Eine Frage mit Mehrfachauswahl bearbeiten"; +$string['editingquestion'] = "Eine Frage bearbeiten"; +$string['editingquiz'] = "Ein Quiz bearbeiten"; +$string['editingrandom'] = "Eine zufällige Frage bearbeiten"; +$string['editingrandomsamatch'] = "Eine zufällige Kurzantwort-Zuordnung bearbeiten "; +$string['editingshortanswer'] = "Kurzantwort der Frage bearbeiten"; +$string['editingtruefalse'] = "Ja/Nein-Frage bearbeiten"; +$string['false'] = "Falsch"; +$string['feedback'] = "Rückmeldung"; +$string['fileformat'] = "Dateiformat"; +$string['filloutoneanswer'] = "Sie müssen mindestens eine mögliche Antwort geben. Leere Antworten werden ignoriert."; +$string['filloutthreequestions'] = "Sie müssen mindestens 2 Sachen auswählen. Leere Fragen werden nicht verwendet"; +$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%% +
                Statt dessen ergeben Sie \$a%% +
                Möchten Sie zurück gehen und diese Frage korrigieren?"; +$string['fractionsnomax'] = "Eine dieser Antworten sollte 100%% sein, so dass +
                es möglich ist, die volle Punktzahl für diese Frage zu bekommen. +
                Möchten Sie zurück gehen und diese Frage korrigieren?"; +$string['gradeaverage'] = "Durchschnittsnote"; +$string['gradehighest'] = "Beste Note"; +$string['grademethod'] = "Bewertungsschema"; +$string['grades'] = "Noten"; +$string['guestsno'] = "Entschuldigung, aber Gäste können das Quiz nicht sehen oder probieren."; +$string['imagedisplay'] = "Bild für die Anzeige"; +$string['importquestions'] = "Eine Datei aus einer Datei importieren"; +$string['introduction'] = "Einleitung"; +$string['marks'] = "Anmerkungen"; +$string['match'] = "Zuordnung"; +$string['matchanswer'] = "zugeordnete Antwort"; +$string['missingname'] = "Der Name der Frage fehlt"; +$string['missingquestiontext'] = "Der Text der Frage fehlt"; +$string['missingword'] = "Das Wortformat fehlt"; +$string['modulename'] = "Quiz"; +$string['modulenameplural'] = "Quiz"; +$string['multichoice'] = "Mehrfachauswahl"; +$string['noanswers'] = "Es wurden 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['noreview'] = "Du darfst dieses Quiz nicht überprüfen"; +$string['noreviewuntil'] = "Du darfst dieses Quiz bis \$a nicht überprüfen"; +$string['notenoughsubquestions'] = "Nicht genügend Unter-Fragen wurden definiert'
                +Möchten Sie zurück gehen und diese Frage korrigieren?"; +$string['publish'] = "Veröffentlichen"; +$string['qti'] = "IMS QTI Format"; +$string['question'] = "Frage"; +$string['questioninuse'] = "Die Frage '\$a' wird momentan benutzt:"; +$string['questionname'] = "Title der Frage"; +$string['questions'] = "Fragen"; +$string['quizavailable'] = "Dieses Quiz ist verfügbar bis: \$a"; +$string['quizclose'] = "Dieses Quiz schließen"; +$string['quizclosed'] = "Dieses Quiz schließt am \$a"; +$string['quiznotavailable'] = "Dieses Quiz ist nicht verfügbar bis: \$a"; +$string['quizopen'] = "Ein Quiz beginnen"; +$string['random'] = "Zufällig setzen"; +$string['randomcreate'] = "Eine Zufallsfrage erstellen"; +$string['randomsamatch'] = "Zufällige Kurzantwort-Zuordnungsfrage"; +$string['randomsamatchcreate'] = "Erzeuge zufällige Kurzantwort-Zuordnungsfragen"; +$string['randomsamatchintro'] = "Wähle für jede der folgenden Fragen die passende Antwort aus dem Menü aus"; +$string['randomsamatchnumber'] = "Nummer auszuwählender Fragen"; +$string['readytosend'] = "Damit sendest Du Deine Quiz-Antworten, die beurteilt werden. Bist Du sicher, daß Du weitermachen wollen?"; +$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['selectall'] = "Alles auswählen"; +$string['selectcategoryabove'] = "Wähle eine obige Kategorie"; +$string['shortanswer'] = "Kurzantwort"; +$string['show'] = "Zeigen"; +$string['showcorrectanswer'] = "Nach dem Antworten richtige Antwort anzeigen?"; +$string['showfeedback'] = "Nach dem Antworten Rückmeldung anzeigen?"; +$string['shuffleanswers'] = "Antworten mischen"; +$string['shufflequestions'] = "Fragen mischen"; +$string['time'] = "Zeit"; +$string['timecompleted'] = "Beendet"; +$string['timetaken'] = "Verbrauchte Zeit"; +$string['toomanyrandom'] = "Die Anzahl der benötigten Zufallsfragen ist größer als die, die die Kategorie enthält! (\$a)"; +$string['true'] = "Wahr"; +$string['truefalse'] = "Wahr/Falsch"; +$string['type'] = "Typ"; +$string['viewallanswers'] = "Zeige \$a ausgefüllte Quiz"; +$string['webct'] = "WebCT Format"; +$string['yourfinalgradeis'] = "Deine Gesamtnote für dieses Quiz ist \$a"; ?> diff --git a/lang/de_du/resource.php b/lang/de_du/resource.php index d2d68656aa3..516ddbde964 100644 --- a/lang/de_du/resource.php +++ b/lang/de_du/resource.php @@ -1,29 +1,32 @@ Datei-Manager.'; -$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'; -$string['resourcetype7'] = 'Programm'; -$string['resourcetype8'] = 'Wiki-Text'; +$string['addresource'] = "Arbeitsmittel hinzufügen"; +$string['editingaresource'] = "Arbeitsmittel 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'] = "Arbeitsmittel"; +$string['modulenameplural'] = "Arbeitsmittel"; +$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 +Datei-Manager."; +$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"; +$string['resourcetype7'] = "Programm"; +$string['resourcetype8'] = "Wiki-Text"; ?> diff --git a/lang/de_du/wiki.php b/lang/de_du/wiki.php deleted file mode 100755 index d48ea1304fc..00000000000 --- a/lang/de_du/wiki.php +++ /dev/null @@ -1,152 +0,0 @@ - diff --git a/lang/de_du/workshop.php b/lang/de_du/workshop.php index c16296b18cd..f6c7ff6e01d 100644 --- a/lang/de_du/workshop.php +++ b/lang/de_du/workshop.php @@ -1,146 +1,152 @@ -Dies macht die Benotung einfacher und plausibeler. Als Kursleiter musst Du diese
                -Kriterien hinzufügen, bevor Du die Aufgabe dem Kursteilnehmer zugänglich machst. Dies geschieht durch das
                Klicken auf die Aufgabe im Kurs. Wenn keine Kriterien vorhanden sind, wirst Du gebeten
                diese hinzuzufügen. Du kannst die Anzahl der Kriterien ändern, indem Du die Seite der Aufgabenbearbeitung benutzt,
                -die Kriterien selbst können über die Seite \"Aufgabenverwaltung\" bearbeitet werden'; -$string['notgraded'] = 'Nicht benotet'; -$string['notitlegiven'] = 'Kein Titel angegeben'; -$string['numberofassessmentelements'] = 'Anzahl der Kommentare, Bewertungskriterien, Note des Verbunds oder Kriteriumsaussage'; -$string['numberofassessments'] = 'Anzahl der Bewertungen'; -$string['numberofassessmentsofstudentsubmissions'] = 'Anzahl Bewertungen der Kursteilnehmer-Beiträge'; -$string['numberofassessmentsofteachersexamples'] = 'Anzahl der Bewertungen von Beispielen vom Kursleiter'; -$string['on'] = 'von $a'; -$string['openassignment'] = 'Aufgabe öffnen'; -$string['optionforpeergrade'] = 'Auswahl fürDurchschnittsnote'; -$string['overallgrade'] = 'Gesamtnote'; -$string['overallpeergrade'] = 'Gesamtdurchschnittsnote: $a'; -$string['overallteachergrade'] = 'Gesamtnote des Lehrers: $a'; -$string['ownwork'] = 'Eigene Arbeit'; -$string['phase'] = 'Phase'; -$string['phase1'] = 'Aufgabe erzeugen'; -$string['phase2'] = '$a Beiträge und Aufgaben'; -$string['phase3'] = 'Berechnung der Gesamtnote'; -$string['phase4'] = 'Gesamtnoten anzeigen'; -$string['pleaseassesstheseexamplesfromtheteacher'] = 'Bitte bewerte dieses Beispiel von $a'; -$string['pleaseassessthesestudentsubmissions'] = 'Bitte bewerte diese $a Beiträge'; -$string['reply'] = 'Antworten'; -$string['returnto'] = 'Zurückkehren zu'; -$string['returntosubmissionpage'] = 'Zur Beitragsseite zurückkehren'; -$string['savedok'] = 'Gespeichert OK'; -$string['savemyassessment'] = 'Meine Bewertung speichern'; -$string['savemycomment'] = 'Meinen Kommentar speichern'; -$string['savemygrading'] = 'Meine Benotung speichern'; -$string['scale10'] = 'Punkte von 10'; -$string['scale100'] = 'Punkte von 100'; -$string['scale20'] = 'Punkte von 20'; -$string['scalecorrect'] = '2 Punkt Richtig/Falsch-Skala'; -$string['scaleexcellent4'] = '4 Punkt Sehr Gut/Ungenügend-Skala'; -$string['scaleexcellent5'] = '5 Punkt Sehr Gut/Ungenügend-Skalae'; -$string['scaleexcellent7'] = '7 Punkt Sehr Gut/Ungenügend-Skalae'; -$string['scalegood3'] = '3 Punkt Gut/Mangelhaft-Skala'; -$string['scalepresent'] = '2 Punkt Anwesenheits/Abwesenheitsskala'; -$string['scaleyes'] = '2 Punkt Ja/Nein Skala'; -$string['selfassessment'] = 'Selbsteinschätzung'; -$string['showgrades'] = 'Noten anzeigen'; -$string['specimenassessmentform'] = 'Bezeichnung der Bewerungsform'; -$string['studentgrades'] = '$a Noten'; -$string['studentsubmissions'] = '$a Beiträge'; -$string['studentsubmissionsforassessment'] = '$a Beiträge der Studenten zur Bewertung'; -$string['submissions'] = 'Beiträge'; -$string['submitassignment'] = 'Aufgabe einreichen'; -$string['submitexampleassignment'] = 'Beispielufgabe einreichen'; -$string['submitted'] = 'Eingereicht'; -$string['teacherscomment'] = 'Kommentar des Kursleiters'; -$string['teachersgrade'] = 'Note des Kursleiters'; -$string['teachersubmissionsforassessment'] = '$a Beiträge des Lehrers zur Bewertung'; -$string['thegradeis'] = 'Die Note ist $a'; -$string['theseasessmentsaregradedbytheteacher'] = 'Diese Bewertung wurde benotet durch den $a'; -$string['timeassessed'] = 'Angesetzte Zeit'; -$string['title'] = 'Titel'; -$string['typeofscale'] = 'Skalentyp'; -$string['ungradedassessmentsofstudentsubmissions'] = '$a unbenotete Bewertungen von Kursteilnehmer-Beiträgen'; -$string['ungradedassessmentsofteachersubmissions'] = '$a unbenotete Bewertungen von Kursleiter-Beiträgen'; -$string['view'] = 'Ansicht'; -$string['viewassessmentofteacher'] = 'Bewertung anzeigen von $a'; -$string['viewotherassessments'] = 'Andere Bewertungen anzeigen'; -$string['warningonamendingelements'] = 'WARNUNG: Es existieren eingereichte Bewertungen
                Ändern Sie nicht die Anzahl der Kriterien, den Skalentyp oder die Kriterienwichtung'; -$string['weightederrorcount'] = 'Durchnittsfehlerzahl: $a'; -$string['weightforbias'] = 'Wichtung für Vorbereitung'; -$string['weightforgradingofassessments'] = 'Wichtung der Benotung der Bewertungen'; -$string['weightforpeerassessments'] = 'Wichtung für Durchschnittsbewertung'; -$string['weightforreliability'] = 'Wichtung der Zuverlässigkeit'; -$string['weights'] = 'Wichtungen'; -$string['weightsusedforfinalgrade'] = 'Wichtungen, die ifür die Endnote verwendet werdem'; -$string['weightsusedforsubmissions'] = 'Wichtungen, die für die Beiträge verwenden werden'; -$string['yourassessments'] = 'Deine Bewertung'; +$string['accumulative'] = "Wachsend"; +$string['action'] = "Aktion"; +$string['addacomment'] = "Einen Kommentar hinzufügen"; +$string['afterdeadline'] = "Nach dem Stichtag: \$a"; +$string['agreetothisassessment'] = "Dieser Bewertungzustimmen"; +$string['allgradeshaveamaximumof'] = "Alle Noten haben ein Maximum von: \$a"; +$string['allowresubmit'] = "Wiedereinträge erlauben"; +$string['alreadyinphase'] = "Schon in Phase \$a"; +$string['amendassessmentelements'] = "Bewertungskriterien ändern"; +$string['assess'] = "Bewerte"; +$string['assessedon'] = "Bewertet von \$a"; +$string['assessment'] = "Bewertung"; +$string['assessmentgrade'] = "Bewertungsnote: \$a"; +$string['assessmentnotyetagreed'] = "Bewertung noch nicht zugestimmt"; +$string['assessmentofthissubmission'] = "Bewertung dieses Beitrages"; +$string['assessments'] = "Bewertungen"; +$string['assessmentsareok'] = "Bewertungen sind OK"; +$string['assessmentsby'] = "Bewertungen von \$a"; +$string['assessmentsdone'] = "Bewertungen erledigt"; +$string['assessmentsmustbeagreed'] = "Bewertungen muss zugestimmt werden"; +$string['assessmentwasagreedon'] = "Bewertung wurde zugestimmt von \$a"; +$string['assessor'] = "Bewerter"; +$string['assessthissubmission'] = "Bewerte diesen Beitrag"; +$string['assignmentnotinthecorrectphase'] = "Bewertung nicht in der richtigern Phase"; +$string['authorofsubmission'] = "Autor des Beitrages"; +$string['awaitinggradingbyteacher'] = "Erwarte Benotung von \$a"; +$string['beforedeadline'] = "Vor dem Stichtag: \$a"; +$string['calculationoffinalgrades'] = "Berechnung der Endnote"; +$string['closeassignment'] = "Aufgabe schliessen"; +$string['comment'] = "Kommentar"; +$string['commentby'] = "Kommentiert von"; +$string['criteria'] = "Kriterien"; +$string['deadline'] = "Stichtag"; +$string['deadlineis'] = "Der Stichtag ist \$a"; +$string['description'] = "Beschreibung"; +$string['detailsofassessment'] = "Bewertungsdetails"; +$string['disagreewiththisassessment'] = "Dieser Bewertung nicht zustimmen"; +$string['displayoffinalgrades'] = "Anzeige der Endnoten"; +$string['dontshowgrades'] = "Keine Noten anzeigen"; +$string['edit'] = "Bearbeiten"; +$string['editacomment'] = "Einen Kommentar bearbeiten"; +$string['editingassessmentelements'] = "Bewertungskriterien bearbeiten"; +$string['element'] = "Kriterium"; +$string['elementweight'] = "Kriteriumswichtung"; +$string['errorbanded'] = "Fehlermarkierung"; +$string['feedbackgoeshere'] = "Rückmeldung hier"; +$string['generalcomment'] = "Allgemeiner Kommentar"; +$string['grade'] = "Note"; +$string['gradeassessment'] = "Bewertungsnote"; +$string['graded'] = "Benotet"; +$string['gradedbyteacher'] = "Benotet von \$a"; +$string['gradeforassessments'] = "Note für Bewertung"; +$string['gradeforbias'] = "Note für Vorbereitung"; +$string['gradeforreliability'] = "Note für Zuverlässigkeit"; +$string['gradeforstudentsassessment'] = "Note für Bewertung des Kurteilnehmers"; +$string['gradeofsubmission'] = "Note des Beitrages: \$a"; +$string['gradingstrategy'] = "Benotungsstrategie"; +$string['hidegradesbeforeagreement'] = "Noten vor Zustimmung verbergen"; +$string['includeteachersgrade'] = "Note des Lehrers einbeziehen"; +$string['listofallsubmissions'] = "Liste aller Beiträge"; +$string['managingassignment'] = "Handhabung der Aufgaben"; +$string['maximumsize'] = "Maximale Größe"; +$string['modulename'] = "Workshop"; +$string['modulenameplural'] = "Workshops"; +$string['movedtophase'] = "Verschoben in Phase \$a"; +$string['moveonto'] = "Weiterverschieben nach"; +$string['noassessmentsdone'] = "Keine Bewertung durchgeführt"; +$string['nosubmissionsavailableforassessment'] = "Keine Beiträge für die Bewertung vorhanden"; +$string['notavailable'] = "Nicht verfügbar"; +$string['noteonassessmentelements'] = "Beachte, dass die Benotung aufgeteilt ist in eine Anzahl von 'Bewertungskriterien'.
                +Dies macht die Benotung einfacher und plausibeler. Als Kursleiter musst Du diese
                +Kriterien hinzufügen, bevor Du die Aufgabe dem Kursteilnehmer zugänglich machst. Dies geschieht durch das
                Klicken auf die Aufgabe im Kurs. Wenn keine Kriterien vorhanden sind, wirst Du gebeten
                diese hinzuzufügen. Du kannst die Anzahl der Kriterien ändern, indem Du die Seite der Aufgabenbearbeitung benutzt,
                +die Kriterien selbst können über die Seite "Aufgabenverwaltung" bearbeitet werden"; +$string['notgraded'] = "Nicht benotet"; +$string['notitlegiven'] = "Kein Titel angegeben"; +$string['numberofassessmentelements'] = "Anzahl der Kommentare, Bewertungskriterien, Note des Verbunds oder Kriteriumsaussage"; +$string['numberofassessments'] = "Anzahl der Bewertungen"; +$string['numberofassessmentsofstudentsubmissions'] = "Anzahl Bewertungen der Kursteilnehmer-Beiträge"; +$string['numberofassessmentsofteachersexamples'] = "Anzahl der Bewertungen von Beispielen vom Kursleiter"; +$string['on'] = "von \$a"; +$string['openassignment'] = "Aufgabe öffnen"; +$string['optionforpeergrade'] = "Auswahl fürDurchschnittsnote"; +$string['overallgrade'] = "Gesamtnote"; +$string['overallpeergrade'] = "Gesamtdurchschnittsnote: \$a"; +$string['overallteachergrade'] = "Gesamtnote des Lehrers: \$a"; +$string['ownwork'] = "Eigene Arbeit"; +$string['phase'] = "Phase"; +$string['phase1'] = "Aufgabe erzeugen"; +$string['phase2'] = "\$a Beiträge und Aufgaben"; +$string['phase3'] = "Berechnung der Gesamtnote"; +$string['phase4'] = "Gesamtnoten anzeigen"; +$string['pleaseassesstheseexamplesfromtheteacher'] = "Bitte bewerte dieses Beispiel von \$a"; +$string['pleaseassessthesestudentsubmissions'] = "Bitte bewerte diese \$a Beiträge"; +$string['reply'] = "Antworten"; +$string['returnto'] = "Zurückkehren zu"; +$string['returntosubmissionpage'] = "Zur Beitragsseite zurückkehren"; +$string['savedok'] = "Gespeichert OK"; +$string['savemyassessment'] = "Meine Bewertung speichern"; +$string['savemycomment'] = "Meinen Kommentar speichern"; +$string['savemygrading'] = "Meine Benotung speichern"; +$string['scale10'] = "Punkte von 10"; +$string['scale100'] = "Punkte von 100"; +$string['scale20'] = "Punkte von 20"; +$string['scalecorrect'] = "2 Punkt Richtig/Falsch-Skala"; +$string['scaleexcellent4'] = "4 Punkt Sehr Gut/Ungenügend-Skala"; +$string['scaleexcellent5'] = "5 Punkt Sehr Gut/Ungenügend-Skalae"; +$string['scaleexcellent7'] = "7 Punkt Sehr Gut/Ungenügend-Skalae"; +$string['scalegood3'] = "3 Punkt Gut/Mangelhaft-Skala"; +$string['scalepresent'] = "2 Punkt Anwesenheits/Abwesenheitsskala"; +$string['scaleyes'] = "2 Punkt Ja/Nein Skala"; +$string['selfassessment'] = "Selbsteinschätzung"; +$string['showgrades'] = "Noten anzeigen"; +$string['specimenassessmentform'] = "Bezeichnung der Bewerungsform"; +$string['studentgrades'] = "\$a Noten"; +$string['studentsassessment'] = "Bewertung der Kursteilnehmer"; +$string['studentsubmissions'] = "\$a Beiträge"; +$string['studentsubmissionsforassessment'] = "\$a Beiträge der Studenten zur Bewertung"; +$string['submissions'] = "Beiträge"; +$string['submitassignment'] = "Aufgabe einreichen"; +$string['submitexampleassignment'] = "Beispielufgabe einreichen"; +$string['submitted'] = "Eingereicht"; +$string['teachersassessment'] = "Aufgabe des Kursleiters"; +$string['teacherscomment'] = "Kommentar des Kursleiters"; +$string['teachersgrade'] = "Note des Kursleiters"; +$string['teachersubmissionsforassessment'] = "\$a Beiträge des Lehrers zur Bewertung"; +$string['thegradeis'] = "Die Note ist \$a"; +$string['theseasessmentsaregradedbytheteacher'] = "Diese Bewertung wurde benotet durch den \$a"; +$string['timeassessed'] = "Angesetzte Zeit"; +$string['title'] = "Titel"; +$string['typeofscale'] = "Skalentyp"; +$string['ungradedassessmentsofstudentsubmissions'] = "\$a unbenotete Bewertungen von Kursteilnehmer-Beiträgen"; +$string['ungradedassessmentsofteachersubmissions'] = "\$a unbenotete Bewertungen von Kursleiter-Beiträgen"; +$string['view'] = "Ansicht"; +$string['viewassessmentofteacher'] = "Bewertung anzeigen von \$a"; +$string['viewotherassessments'] = "Andere Bewertungen anzeigen"; +$string['warningonamendingelements'] = "WARNUNG: Es existieren eingereichte Bewertungen
                Ändern Sie nicht die Anzahl der Kriterien, den Skalentyp oder die Kriterienwichtung"; +$string['weightederrorcount'] = "Durchnittsfehlerzahl: \$a"; +$string['weightforbias'] = "Wichtung für Vorbereitung"; +$string['weightforgradingofassessments'] = "Wichtung der Benotung der Bewertungen"; +$string['weightforpeerassessments'] = "Wichtung für Durchschnittsbewertung"; +$string['weightforreliability'] = "Wichtung der Zuverlässigkeit"; +$string['weightforteachersassessment'] = "Wichtung der Kursleiter-Bewertung"; +$string['weights'] = "Wichtungen"; +$string['weightsusedforfinalgrade'] = "Wichtungen, die ifür die Endnote verwendet werdem"; +$string['weightsusedforsubmissions'] = "Wichtungen, die für die Beiträge verwenden werden"; +$string['yourassessments'] = "Deine Bewertung"; ?> diff --git a/lang/el/block_course_list.php b/lang/el/block_course_list.php deleted file mode 100644 index 16b70f1cb62..00000000000 --- a/lang/el/block_course_list.php +++ /dev/null @@ -1,9 +0,0 @@ - - diff --git a/lang/el/block_course_summary.php b/lang/el/block_course_summary.php deleted file mode 100644 index 91b315df069..00000000000 --- a/lang/el/block_course_summary.php +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/lang/el/block_online_users.php b/lang/el/block_online_users.php deleted file mode 100644 index 25f5bc56470..00000000000 --- a/lang/el/block_online_users.php +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/lang/el/block_section_links.php b/lang/el/block_section_links.php deleted file mode 100644 index 901c19471be..00000000000 --- a/lang/el/block_section_links.php +++ /dev/null @@ -1,9 +0,0 @@ - - diff --git a/lang/el/block_social_activities.php b/lang/el/block_social_activities.php deleted file mode 100644 index 86d86a959c8..00000000000 --- a/lang/el/block_social_activities.php +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/lang/el/docs/background.html b/lang/el/docs/background.html index 3da450d7ea0..a728a0b98f4 100644 --- a/lang/el/docs/background.html +++ b/lang/el/docs/background.html @@ -1,76 +1,43 @@ - - - - Ôåêìçñßùóç ôïõ Moodle: Õðüâáèñï - - - - - - - -

                Õðüâáèñï

                - - -

                Ôï Moodle åßíáé Ýíá åíåñãü êáé áíáðôõóóüìåíï project ðïõ âñßóêåôáé óå åîÝëéîç.

                - -

                Äïõëåýù ðÜíù óå áõôü, ìå ôïí Ýíá ôñüðï Þ ôïí Üëëï, ãéá áñêåôÜ ÷ñüíéá. ¢ñ÷éóå - - ôç äåêáåôßá ôïõ 1990 üôáí Þìïõí õðåýèõíïò áíÜðôõîçò êáé óõíôÞñçóçò ôïõ äéêôõáêïý ôüðïõ Curtin University - - of Technology êáé äéá÷åéñéóôÞò óõóôÞìáôïò óôçí åãêáôÜóôáóç ôïõ WebCT. Áíôéìåôþðéóá - - áñêåôÝò áðïãïçôåýóåéò ìå ôï èçñßï ðïõ ëÝãåôáé WebCT êáé áíÜðôõîá ìéá ðëçãÞ - - ðïõ ÷ñåéÜæåôáéîýóéìï - Ýðñåðå íá õðÜñ÷åé Ýíáò êáëýôåñïò ôñüðïò (ü÷é êÜðïéïò ìáõñïðßíáêáò :-)

                - -

                Ãíþñéæá åðßóçò áñêåôïýò áíèñþðïõò óå ó÷ïëåßá êáé ìéêñüôåñá éäñýìáôá (êáé óå ìåñéêÜ - - ìåãáëýôåñá!) ïé ïðïßïé Þèåëáí íá ÷ñçóéìïðïéÞóïõí êáëýôåñá ôï äéáäßêôõï, áëëÜ äåí Þîåñáí áðï ðïý íá áñ÷ßóïõí - - ìÝóá óôïí ëáâýñéíèï ôùí ôå÷íïëïãéþí êáé ôùí ðáéäáãùãéêþí ëýóåùí ðïõ õðÜñ÷ïõí óôï äéáäýêôéï. Åß÷á ðÜíôá ôçí åëðßäá - - üôé èá õðÜñîåé ìéá åíáëëáêôéêÞ ëýóç ÷ùñßò êüóôïò, üðïõ èá ìðïñïýóå íá ÷ñçóéìïðïéåéèåß áðï áõôïýò ôïõò áíèñþðïõò - - êáé íá ôïõó âïçèÞóåé íá ìåôáäþóïõí ôéò äéäáêôéêÝò ôïõò éêáíüôçôåò óå Ýíá äéáäéêôõáêü ðåñéâÜëëïí.

                - -

                Ïé éó÷õñÝò ðåðïéèÞóåéò ìïõ óôéò ôåñÜóôéåò êáé áíåêìåôÜëåõôåò äõíáôüôçôåò ôçò åêðáßäåõóçò ìÝóï ôïõ äéáäéêôýïõ - - ìå ïäÞãçóáí íá áðïêôÞóù Ýíá Master êáé ìåôÜ ìåôÜ Ýíá äéäáêôïñéêü óôçí Åêðáßäåõóç, óõíäõÜæïíôáò ôçí ðñïçãïýìåíç - - êáñéÝñá óôçí ÅðéóôÞìç ôùí Õðïëïãéóôþí ìå ôéò êáéíïýñãéá ïéêïäïìçìÝíåò ãíþóåéò ãéá ôçí öýóç - - ôçò ìÜèçóçò êáé ôçò óõíåñãáóßáò.

                - -

                Áðü ôüôå ôï Moodle Ý÷åé ðñï÷ùñÞóåé ìÝóá áðü áñêåôÜ êáé äéáöïñåôéêÜ ìåôáîý ôïõò ðñùôüôõðá - - ìÝ÷ñé ôçí ðáñïõóßáóç ôçò Ýêäïóçò 1.0, ðÜíù óå Ýíá áíõðïøßáóôï êáôá ôï ìåãáëýôåñï ìÝñïò ôïõ êüóìï, - - óôéò 20 Áõãïýóôïõ ôïõ 2002, êáé óå ìßá óåéñÜ óôáèåñþí êáé âåëôéùìÝíùí åêäüóåùí áðï ôüôå. - -

                Ôï ÷ñçóéìïðïéþ ðÜíù óå áñêåôÜ ìáèÞìáôá êáé âñßóêù ïôé åßíáé Ýíá ðïëý ÷ñÞóéìï êáé áîéüðéóôï åñãáëåßï - - ãéá ôçí ðñáãìáôïðïßçóç õøçëÞò ðïéüôçôáò äéáäéêôõáêþí ìáèçìÜôùí - êáé Üëëïé áíáöÝñïõí ôï ßäéï. - - Ìå äåäïìÝíï ôï ðåñéâÜëëïí ðÜíù óôï ïðïßï Ý÷åé ó÷åäéáóôåß, äïõëåýåé éäáßôåñá êáëÜ ãéá ìéêñüôåñá éíóôéôïýôá, - - Þ ãéá ìéêñüôåñá, ðåñéóóüôåñï êëåéóôÜ ôìÞìáôá.

                - -

                'Ïôáí óõíäéÜæåôáé ìå ôá ìåãÜëá åìðïñéêÜ åñãáëåßá üðùò ôï WebCT Þ ôï Blackboard íïìßæù üôé - - Ý÷åé êÜðïéåò åëåßøåéò óå êÜðïéïõò ôïìåßò (üðùò as êëéìÜêùóç êáé õðïóôÞñéîç), - - áëëÜ åßíáé êáëýôåñï óå êÜðïéïõò Üëëïõò ôïìåßò (äåò ×áñáêôçñéóôéêÜ). - -

                - -
                - -

                Ôåêìçñßùóç ôïõ Moodle

                - -

                Version: $Id$

                - - - - \ No newline at end of file + + + + Ôåêìçñßùóç ôïõ Moodle: Õðüâáèñï + + + + +

                Õðüâáèñï

                + +

                Ôï Moodle åßíáé Ýíá åíåñãü êáé áíáðôõóóüìåíï project ðïõ âñßóêåôáé óå åîÝëéîç.

                +

                Äïõëåýù ðÜíù óå áõôü, ìå ôïí Ýíá ôñüðï Þ ôïí Üëëï, ãéá áñêåôÜ ÷ñüíéá. ¢ñ÷éóå + ôç äåêáåôßá ôïõ 1990 üôáí Þìïõí õðåýèõíïò áíÜðôõîçò êáé óõíôÞñçóçò ôïõ äéêôõáêïý ôüðïõ Curtin University + of Technology êáé äéá÷åéñéóôÞò óõóôÞìáôïò óôçí åãêáôÜóôáóç ôïõ WebCT. Áíôéìåôþðéóá + áñêåôÝò áðïãïçôåýóåéò ìå ôï èçñßï ðïõ ëÝãåôáé WebCT êáé áíÜðôõîá ìéá ðëçãÞ + ðïõ ÷ñåéÜæåôáéîýóéìï - Ýðñåðå íá õðÜñ÷åé Ýíáò êáëýôåñïò ôñüðïò (ü÷é êÜðïéïò ìáõñïðßíáêáò :-)

                +

                Ãíþñéæá åðßóçò áñêåôïýò áíèñþðïõò óå ó÷ïëåßá êáé ìéêñüôåñá éäñýìáôá (êáé óå ìåñéêÜ + ìåãáëýôåñá!) ïé ïðïßïé Þèåëáí íá ÷ñçóéìïðïéÞóïõí êáëýôåñá ôï äéáäßêôõï, áëëÜ äåí Þîåñáí áðï ðïý íá áñ÷ßóïõí + ìÝóá óôïí ëáâýñéíèï ôùí ôå÷íïëïãéþí êáé ôùí ðáéäáãùãéêþí ëýóåùí ðïõ õðÜñ÷ïõí óôï äéáäýêôéï. Åß÷á ðÜíôá ôçí åëðßäá + üôé èá õðÜñîåé ìéá åíáëëáêôéêÞ ëýóç ÷ùñßò êüóôïò, üðïõ èá ìðïñïýóå íá ÷ñçóéìïðïéåéèåß áðï áõôïýò ôïõò áíèñþðïõò + êáé íá ôïõó âïçèÞóåé íá ìåôáäþóïõí ôéò äéäáêôéêÝò ôïõò éêáíüôçôåò óå Ýíá äéáäéêôõáêü ðåñéâÜëëïí.

                +

                Ïé éó÷õñÝò ðåðïéèÞóåéò ìïõ óôéò ôåñÜóôéåò êáé áíåêìåôÜëåõôåò äõíáôüôçôåò ôçò åêðáßäåõóçò ìÝóï ôïõ äéáäéêôýïõ + ìå ïäÞãçóáí íá áðïêôÞóù Ýíá Master êáé ìåôÜ ìåôÜ Ýíá äéäáêôïñéêü óôçí Åêðáßäåõóç, óõíäõÜæïíôáò ôçí ðñïçãïýìåíç + êáñéÝñá óôçí ÅðéóôÞìç ôùí Õðïëïãéóôþí ìå ôéò êáéíïýñãéá ïéêïäïìçìÝíåò ãíþóåéò ãéá ôçí öýóç + ôçò ìÜèçóçò êáé ôçò óõíåñãáóßáò.

                +

                Áðü ôüôå ôï Moodle Ý÷åé ðñï÷ùñÞóåé ìÝóá áðü áñêåôÜ êáé äéáöïñåôéêÜ ìåôáîý ôïõò ðñùôüôõðá + ìÝ÷ñé ôçí ðáñïõóßáóç ôçò Ýêäïóçò 1.0, ðÜíù óå Ýíá áíõðïøßáóôï êáôá ôï ìåãáëýôåñï ìÝñïò ôïõ êüóìï, + óôéò 20 Áõãïýóôïõ ôïõ 2002, êáé óå ìßá óåéñÜ óôáèåñþí êáé âåëôéùìÝíùí åêäüóåùí áðï ôüôå. +

                Ôï ÷ñçóéìïðïéþ ðÜíù óå áñêåôÜ ìáèÞìáôá êáé âñßóêù ïôé åßíáé Ýíá ðïëý ÷ñÞóéìï êáé áîéüðéóôï åñãáëåßï + ãéá ôçí ðñáãìáôïðïßçóç õøçëÞò ðïéüôçôáò äéáäéêôõáêþí ìáèçìÜôùí - êáé Üëëïé áíáöÝñïõí ôï ßäéï. + Ìå äåäïìÝíï ôï ðåñéâÜëëïí ðÜíù óôï ïðïßï Ý÷åé ó÷åäéáóôåß, äïõëåýåé éäáßôåñá êáëÜ ãéá ìéêñüôåñá éíóôéôïýôá, + Þ ãéá ìéêñüôåñá, ðåñéóóüôåñï êëåéóôÜ ôìÞìáôá.

                +

                'Ïôáí óõíäéÜæåôáé ìå ôá ìåãÜëá åìðïñéêÜ åñãáëåßá üðùò ôï WebCT Þ ôï Blackboard íïìßæù üôé + Ý÷åé êÜðïéåò åëåßøåéò óå êÜðïéïõò ôïìåßò (üðùò as êëéìÜêùóç êáé õðïóôÞñéîç), + áëëÜ åßíáé êáëýôåñï óå êÜðïéïõò Üëëïõò ôïìåßò (äåò ×áñáêôçñéóôéêÜ). +

                +

                 

                + +

                Ôåêìçñßùóç ôïõ Moodle

                +

                Version: $Id$

                + + + diff --git a/lang/el/docs/coding.html b/lang/el/docs/coding.html index a9366475116..fed65eb1798 100755 --- a/lang/el/docs/coding.html +++ b/lang/el/docs/coding.html @@ -1,341 +1,171 @@ - - - - -Moodle Docs: Coding Guidelines - - - - - - - - - - - - - - - - - - - - - - - -

                Ïäçãßåò Êùäéêïðïßçóçò Moodle

                - - - -

                Ãåíéêïß Êáíüíåò

                - - - -
                  - -
                1. ¼ëá ôá áñ÷åßá ðñÝðåé íá ÷ñçóéìïðïéïýí ôçí êáôÜëçîç .php.
                2. - -
                3. ¼ëåò ïé ãíùóôïðïéÞóåéò copyright ðñÝðåé íá äéáôçñçèïýí. Áí ÷ñåéáóôåß ìðïñåßò - - íá ðñïóèÝóåéò êáé ôç äéêÞ óïõ.
                4. - -
                5. ÊÜèå áñ÷åßï ðñÝðåé íá ðåñéëáìâÜíåé ôï êõñßùò áñ÷åßï config.php.
                6. - -
                7. ÊÜèå áñ÷åßï ðñÝðåé íá åëÝã÷åé áí ï ÷ñÞóôçò ôáõôïðïéåßôáé óùóôÜ, ÷ñçóéìïðïéþíôáò - - require_login() êáé isadmin(), isteacher(), iscreator() Þ isstudent(). - -
                    - -
                  1. ¼ëåò ïé ðñïóâÜóåéò óôéò âÜóåéò äåäïìÝíùí ðñÝðåé íá ÷ñçóéìïðïéïýí ôéò - - óõíáñôÞóåéò óôï lib/datalib.php üðïõ åßíáé äõíáôü - áõôü åðéôñÝðåé óõìâáôüôçôá - - áíÜìåóá óå ðïëëÝò âÜóåéò äåäïìÝíùí. Èá äéáðéóôþóåéò üôé ó÷åäüí üëá åßíáé - - ðéèáíÜ ÷ñçóéìïðïéþíôáò áõôÝò ôéò óõíáñôÞóåéò. ÏðïéåóäÞðïôå Üëëåò äçëþóåéò - - SQL èá ðñÝðåé íá åßíáé : cross-platform; ðåñéïñéóìÝíåò óå óõãêåêñéìÝíåò - - óõíáñôÞóåéò ìÝóá óôïí êþäéêÜ óïõ (óõíÞèùò Ýíá áñ÷åßï a lib.php ) êáé êáèáñÜ - - ìáñêáñéóìÝíåò.
                  2. - -
                  - -
                8. - -
                9. ¼ëåò ïé óõìâïëïóåéñÝò ðñÝðåé íá åßíáé ìåôáöñÜóéìåò - äçìéïýñãçóå íÝá êåßìåíá - - óôá áñ÷åßá "lang/en" êáé ïíüìáóÝ ôá ÷ñçóéìïðïéþíôáò get_string() - - Þ print_string().
                10. - -
                11. ¼ëá ôá áñ÷åßá âïÞèåéáò ðñÝðåé íá åßíáé ìåôáöñÜóéìá - äçìéïýñãçóå íÝá êåßìåíá - - óôïí êáôÜëïãï "en/help" êáé ïíüìáóÝ ôá ÷ñçóéìïðïéþíôáò helpbutton().
                12. - -
                - -

                 

                - -

                Óôõë Êùäéêïðïßçóçò

                - - - -
                  - -
                1. Ìç ÷ñçóéìïðïéåßò êáèüëïõ tab. ×ñçóéìïðïßçóå 4 êåíÜ ãéá ìéá óõíå÷üìåíç åóï÷Þ.
                2. - -
                3. Ôá Üãêéóôñá ðñÝðåé ðÜíôá íá ÷ñçóéìïðïéïýíôáé óå Ýíáí êþäéêá (áêüìá êé áí - - åßíáé ôçò ìéáò ãñáììÞò). Ôï Moodle ÷ñçóéìïðïéåß áõôü ôï óôõë: - -

                  if ($quiz->attempts) - - {
                  - -     if (
                  $numattempts > - - $quiz->attempts) - - {
                  - -         
                  error($strtoomanyattempts, - - "view.php?id=$cm->id");
                  - -     }
                  - - }

                  - -
                4. - -
                5. Áõôü ôï Ýããñáöï äåí Ý÷åé ôåëåéþóåé áêüìá!
                6. - -
                - - - - - - - -

                 

                - - - -
                - -

                Moodle Documentation

                - - - -

                Version: $Id: faq.html,v 1.6 2003/03/30 13:54:28 - - - - moodler Exp $

                - - - - - - - - - - - - - - - + + + +Moodle Docs: Coding Guidelines + + + + + + + + + + + +

                Ïäçãßåò Êùäéêïðïßçóçò Moodle

                + +

                Ãåíéêïß Êáíüíåò

                + +
                  +
                1. ¼ëá ôá áñ÷åßá ðñÝðåé íá ÷ñçóéìïðïéïýí ôçí êáôÜëçîç .php.
                2. +
                3. ¼ëåò ïé ãíùóôïðïéÞóåéò copyright ðñÝðåé íá äéáôçñçèïýí. Áí ÷ñåéáóôåß ìðïñåßò + íá ðñïóèÝóåéò êáé ôç äéêÞ óïõ.
                4. +
                5. ÊÜèå áñ÷åßï ðñÝðåé íá ðåñéëáìâÜíåé ôï êõñßùò áñ÷åßï config.php.
                6. +
                7. ÊÜèå áñ÷åßï ðñÝðåé íá åëÝã÷åé áí ï ÷ñÞóôçò ôáõôïðïéåßôáé óùóôÜ, ÷ñçóéìïðïéþíôáò + require_login() êáé isadmin(), isteacher(), iscreator() Þ isstudent(). +
                    +
                  1. ¼ëåò ïé ðñïóâÜóåéò óôéò âÜóåéò äåäïìÝíùí ðñÝðåé íá ÷ñçóéìïðïéïýí ôéò + óõíáñôÞóåéò óôï lib/datalib.php üðïõ åßíáé äõíáôü - áõôü åðéôñÝðåé óõìâáôüôçôá + áíÜìåóá óå ðïëëÝò âÜóåéò äåäïìÝíùí. Èá äéáðéóôþóåéò üôé ó÷åäüí üëá åßíáé + ðéèáíÜ ÷ñçóéìïðïéþíôáò áõôÝò ôéò óõíáñôÞóåéò. ÏðïéåóäÞðïôå Üëëåò äçëþóåéò + SQL èá ðñÝðåé íá åßíáé : cross-platform; ðåñéïñéóìÝíåò óå óõãêåêñéìÝíåò + óõíáñôÞóåéò ìÝóá óôïí êþäéêÜ óïõ (óõíÞèùò Ýíá áñ÷åßï a lib.php ) êáé êáèáñÜ + ìáñêáñéóìÝíåò.
                  2. +
                  +
                8. +
                9. ¼ëåò ïé óõìâïëïóåéñÝò ðñÝðåé íá åßíáé ìåôáöñÜóéìåò - äçìéïýñãçóå íÝá êåßìåíá + óôá áñ÷åßá "lang/en" êáé ïíüìáóÝ ôá ÷ñçóéìïðïéþíôáò get_string() + Þ print_string().
                10. +
                11. ¼ëá ôá áñ÷åßá âïÞèåéáò ðñÝðåé íá åßíáé ìåôáöñÜóéìá - äçìéïýñãçóå íÝá êåßìåíá + óôïí êáôÜëïãï "en/help" êáé ïíüìáóÝ ôá ÷ñçóéìïðïéþíôáò helpbutton().
                12. +
                +

                 

                +

                Óôõë Êùäéêïðïßçóçò

                + +
                  +
                1. Ìç ÷ñçóéìïðïéåßò êáèüëïõ tab. ×ñçóéìïðïßçóå 4 êåíÜ ãéá ìéá óõíå÷üìåíç åóï÷Þ.
                2. +
                3. Ôá Üãêéóôñá ðñÝðåé ðÜíôá íá ÷ñçóéìïðïéïýíôáé óå Ýíáí êþäéêá (áêüìá êé áí + åßíáé ôçò ìéáò ãñáììÞò). Ôï Moodle ÷ñçóéìïðïéåß áõôü ôï óôõë: +

                  if ($quiz->attempts) + {
                  +     if (
                  $numattempts > + $quiz->attempts) + {
                  +         
                  error($strtoomanyattempts, + "view.php?id=$cm->id");
                  +     }
                  + }

                  +
                4. +
                5. Áõôü ôï Ýããñáöï äåí Ý÷åé ôåëåéþóåé áêüìá!
                6. +
                + + + +

                 

                + +
                +

                Moodle Documentation

                + +

                Version: $Id: faq.html,v 1.6 2003/03/30 13:54:28 + + moodler Exp $

                + + + + + + + diff --git a/lang/el/docs/credits.html b/lang/el/docs/credits.html index cee05770019..3261f1bd554 100644 --- a/lang/el/docs/credits.html +++ b/lang/el/docs/credits.html @@ -1,84 +1,83 @@ - - - - Ôåêìçñßùóç ôïõ Moodle:: Åõ÷áñéóôßåò - - - + + + + Ôåêìçñßùóç ôïõ Moodle:: Åõ÷áñéóôßåò + + + -

                Åõ÷áñéóôßåò

                +

                Åõ÷áñéóôßåò

                -

                Ôá äéêáéþìáôá äçìéïõñãßáò ôïõ Moodle © 2001-2002, - áíÞêïõí óôïí Martin Dougiamas.  ÄéáíÝìåôáé õðü ôçí - GNU Äçìüóéá ¢äåéá ×ñÞóçò.

                +

                Ôá äéêáéþìáôá äçìéïõñãßáò ôïõ Moodle © 2001-2002, + áíÞêïõí óôïí Martin Dougiamas.  ÄéáíÝìåôáé õðü ôçí + GNU Äçìüóéá ¢äåéá ×ñÞóçò.

                -


                ÉäáéÝôåñåò Åõ÷áñéóôßåò

                -
                  - Dr Peter C. Taylor, +


                  ÉäáéÝôåñåò Åõ÷áñéóôßåò

                  +
                    + Dr Peter C. Taylor, óôï ðáíåðéóôÞìéï ôïõ Curtin óôï Perth, ôçò Áõóôñáëßáò, ãéá ôçí äïõëåßá ôïõ ìå ôá ôåëåõôáßá ðñïôüôõðá - êáé ôéò ðïëý ÷ñÞóéìåò ðñïôÜóåéò ôïõ êáèüëç ôç äéÜñêåéá -
                  + êáé ôéò ðïëý ÷ñÞóéìåò ðñïôÜóåéò ôïõ êáèüëç ôç äéÜñêåéá +
                -


                ÌåôáöñÜóåéò

                -
                -

                ÐïëëÜ åõ÷áñéóôþ óôïõò åîåßò áíèñþðïõò - êÜèå ìåôÜöñáóç ðáßñíåé ðïëëÝò þñåò äïõëåßáò , áöïý åßíáé ðåñßðïõ +


                ÌåôáöñÜóåéò

                +
                +

                ÐïëëÜ åõ÷áñéóôþ óôïõò åîåßò áíèñþðïõò - êÜèå ìåôÜöñáóç ðáßñíåé ðïëëÝò þñåò äïõëåßáò , áöïý åßíáé ðåñßðïõ 900 öñÜóåéò ðïõ ÷ñåéÜæïíôáé ìåôÜöñáóç (óõí üëá ôá áñ÷åßá âïÞèåéáò!). ÁíáöÝñïíôáé ìå ôçí óåéñÜ ðïõ óõììåôåß÷áí óôï Ýñãï: -

                  -
                • en - ÁããëéêÜ, áðü ôïí Martin Dougiamas -
                • fr - ÃáëëéêÜ, áðü ôïí Sébastien Namèche, seb@gaia.anet.fr, http://gaia.anet.fr/ -
                • fi - ÖéëáíäéêÜ, áðü ôïí Petri Asikainen (paca@sci.fi), êáé ôïí Jaana Tolvanen (jaanat@cedunet.com) -
                • it - ÉôáëéêÜ, áðü ôïí Davide Suraci, icarused@tiscalinet.it -
                • pt_br - ÐïñôïãáëéêÜ (Âñáæéëßáò), áðü ôïí Fabricio Valadares, webdesigner@unincor.br -
                • de - ÃåñìáíéêÜ, áðü ôïí Holger Schadeck, Holger.Schadeck@webdesign-forum.de -
                • es_mx - ÉóðáíéêÜ (Ìåîéêü), áðü ôïí Claudio Tavares, enlaceacademico.com -
                • es_es - ÉóðáíéêÜ , áðü ôïí Antonio J. Navarro Vergara, anavarro@sextaisla.com, www.sextaisla.com -
                • ca - ÊáôáëáíéêÜ, áðü ôïí Carles Bellver ìáæß ìå ç âïÞèåéá ôïõ Mercè Renau, - ôïõ Clara Andrés êáé ôïõ Jordi Adell, cent@uji.es, Centre d'Educació i Noves Tecnologies -
                • no - ÍïñâçãéêÜ, áðü ôïí Jøran Sørbø, joran.sorbo@teleweb.no -
                • id - ÉíäïíçóéáêÜ, áðü ôïí Arfan Hidayat, ivanh@telkom.net, http://www.kursusmaya.com -
                • ja - ÃéáðùíÝæéêá, áðü ôïí Mitsuhiro Yoshida, mits@mitstek.com, http://mitstek.com -
                • tr - Ôïýñêéêá, áðü ôïí M. Cüneyt Birkök, cuneyt@birkok.net, http://birkok.net -
                • zh_cn - ÊéíÝæéêá, áðü ôïí Zhang Dexuan, cncoolbit@hotmail.com -
                • ar - ÁñáâéêÜ, áðü ôïí Ahmed Nabil, ana@harf.com -
                • sv - ÓïõçäéêÜ, áðü ôïí Set Lonnert, set@setlonnert.com, http://setlonnert.com -
                • th - ÔáúëÜíäéêÜ, áðü ôïí Wim Singhanart, minkowski@ntlworld.com, www.suthira.net -
                • nl - ÏëëáíäéêÜ, áðü ôïí Hans Zwart (hans@hansdezwart.info) êáé ôïí Jacob Romeyn (jromeyn@thekingsschool.net) +
                    +
                  • en - ÁããëéêÜ, áðü ôïí Martin Dougiamas +
                  • fr - ÃáëëéêÜ, áðü ôïí Sébastien Namèche, seb@gaia.anet.fr, http://gaia.anet.fr/ +
                  • fi - ÖéëáíäéêÜ, áðü ôïí Petri Asikainen (paca@sci.fi), êáé ôïí Jaana Tolvanen (jaanat@cedunet.com) +
                  • it - ÉôáëéêÜ, áðü ôïí Davide Suraci, icarused@tiscalinet.it +
                  • pt_br - ÐïñôïãáëéêÜ (Âñáæéëßáò), áðü ôïí Fabricio Valadares, webdesigner@unincor.br +
                  • de - ÃåñìáíéêÜ, áðü ôïí Holger Schadeck, Holger.Schadeck@webdesign-forum.de +
                  • es_mx - ÉóðáíéêÜ (Ìåîéêü), áðü ôïí Claudio Tavares, enlaceacademico.com +
                  • es_es - ÉóðáíéêÜ , áðü ôïí Antonio J. Navarro Vergara, anavarro@sextaisla.com, www.sextaisla.com +
                  • ca - ÊáôáëáíéêÜ, áðü ôïí Carles Bellver ìáæß ìå ç âïÞèåéá ôïõ Mercè Renau, + ôïõ Clara Andrés êáé ôïõ Jordi Adell, cent@uji.es, Centre d'Educació i Noves Tecnologies +
                  • no - ÍïñâçãéêÜ, áðü ôïí Jøran Sørbø, joran.sorbo@teleweb.no +
                  • id - ÉíäïíçóéáêÜ, áðü ôïí Arfan Hidayat, ivanh@telkom.net, http://www.kursusmaya.com +
                  • ja - ÃéáðùíÝæéêá, áðü ôïí Mitsuhiro Yoshida, mits@mitstek.com, http://mitstek.com +
                  • tr - Ôïýñêéêá, áðü ôïí M. Cüneyt Birkök, cuneyt@birkok.net, http://birkok.net +
                  • zh_cn - ÊéíÝæéêá, áðü ôïí Zhang Dexuan, cncoolbit@hotmail.com +
                  • ar - ÁñáâéêÜ, áðü ôïí Ahmed Nabil, ana@harf.com +
                  • sv - ÓïõçäéêÜ, áðü ôïí Set Lonnert, set@setlonnert.com, http://setlonnert.com +
                  • th - ÔáúëÜíäéêÜ, áðü ôïí Wim Singhanart, minkowski@ntlworld.com, www.suthira.net +
                  • nl - ÏëëáíäéêÜ, áðü ôïí Hans Zwart (hans@hansdezwart.info) êáé ôïí Jacob Romeyn (jromeyn@thekingsschool.net) -
                  -
                +
            +
        -


        ÈÝìáôá

        -
        -

        Ôá èÝìáôá äßíïõí óôéò éóôïóåëßäåò ôïõ Moodle ìåñéêÜ ÷ñþìáôá êáé æùÞ. Åäþ áíáöÝñïíôáé üëá ôá èÝìáôá óáí ìÝñïò ôçò äéáíïìÞò ôïõ Moodle, ìáæß ìå ôïõò äçìéïõñãïýò ôïõò: -

        -
        +


        ÈÝìáôá

        +
        +

        Ôá èÝìáôá äßíïõí óôéò éóôïóåëßäåò ôïõ Moodle ìåñéêÜ ÷ñþìáôá êáé æùÞ. Åäþ áíáöÝñïíôáé üëá ôá èÝìáôá óáí ìÝñïò ôçò äéáíïìÞò ôïõ Moodle, ìáæß ìå ôïõò äçìéïõñãïýò ôïõò: +

        +
        -


        ¢ëëïé ÓõíåñãÜôåò

        -
        -

        Åíá åõ÷áñéóôþ óå üëïõò åóÜò ðïõ Ý÷åôå

        - +


        ¢ëëïé ÓõíåñãÜôåò

        +
        +

        Åíá åõ÷áñéóôþ óå üëïõò åóÜò ðïõ Ý÷åôå +

        +

        - -

        Éäéáßôåñåò åõ÷áñéóôßåò, óå üëïõò åóÜò ðïõ Ý÷åôå áíá ðåñéüäïõò óõíåéóöÝñåé +

        Éäéáßôåñåò åõ÷áñéóôßåò, óå üëïõò åóÜò ðïõ Ý÷åôå áíá ðåñéüäïõò óõíåéóöÝñåé ìå ìåãÜëåò áðïéêïäïìéôéêÝò óõæçôÞóåéò êáé éäáßôåñá ìå êÜðïéá êïììÜôéá êþäéêá. ÁõôÞ ç ëßóôá åßíáé ìåãÜëç - êáé áëÜæåé óõíå÷þò, áëëÜ ìåñéêÜ ïíüìáô ðåñéÝ÷ïíôáé (ìå ôçí óåéñÜ ðïõ ôá Ýâáëá):

        -
          + êáé áëÜæåé óõíå÷þò, áëëÜ ìåñéêÜ ïíüìáô ðåñéÝ÷ïíôáé (ìå ôçí óåéñÜ ðïõ ôá Ýâáëá): +
            Art Lader, Matt Hope, Tom Murdock, @@ -94,122 +93,121 @@ Mark Kimes, Greg Barnett, Mary Hunter -
          +
        +

        - -

        Óõãíþìç åáí ãéá êÜðïéï ëüãï ôï üíïìá óáò äåí åßíáé óôçí ëßóôá - åßíáé ðïëý äýóêïëï +

        Óõãíþìç åáí ãéá êÜðïéï ëüãï ôï üíïìá óáò äåí åßíáé óôçí ëßóôá - åßíáé ðïëý äýóêïëï íá óõíôçñçèåß! Óôåßëôå ìïõ Ýíá e-mail êáé áðáéôÞóôå íá ìðåßôå óôçí ëßóôá. :-) -

        +

        -
        +
        -


        ÂéâëéïèÞêåò ôïõ Moodle

        +


        ÂéâëéïèÞêåò ôïõ Moodle

        -
        -

        ÌåñéêÝò áðï ôéò âéâëéïèÞêåò ôïõ Moodle Ý÷ïõí ãñáöôåß áðï Üëëïõò áíèñþðïõò, êáé áíáäéáíÝìïíôáé +

        +

        ÌåñéêÝò áðï ôéò âéâëéïèÞêåò ôïõ Moodle Ý÷ïõí ãñáöôåß áðï Üëëïõò áíèñþðïõò, êáé áíáäéáíÝìïíôáé óáí ìÝñïò ôïõ Moodle êÜôù áðï ôï LGPL. Ïé åõ÷áñéóôßåò ìïõ ðÜíå óôïõò óõããñáöåßò üëùí áõôþí ôùí èáõìÜóéùí ðñïúüíôùí - ÷ùñßò áõôïýò ôï Moodle èá Ý÷áíå áñêåôÜ óõìáíôéêÞ ëåéôïõñãéêüôçôá -. Ðëçñïöïñßåò ãéá ôá ðíåõìáôéêÜ äéêáéþìáôá êÜèå ðáêÝôïõ ðåñéÝ÷ïíôáé ðáñáêÜôù:

        -
        +. Ðëçñïöïñßåò ãéá ôá ðíåõìáôéêÜ äéêáéþìáôá êÜèå ðáêÝôïõ ðåñéÝ÷ïíôáé ðáñáêÜôù:

        -

        ADOdb   -  lib/adodb
        -

        +

        ADOdb   -  lib/adodb
        +

        -
        -

        ÂéâëéïèÞêåò ãéá ôéò áêüëïõèåò âÜóåéò äåäïìÝíùí MySQL, PostgreSQL, MSSQL, Oracle, -Interbase, Foxpro, Access, ADO, Sybase, DB2 and ODBC.

        +
        +

        ÂéâëéïèÞêåò ãéá ôéò áêüëïõèåò âÜóåéò äåäïìÝíùí MySQL, PostgreSQL, MSSQL, Oracle, +Interbase, Foxpro, Access, ADO, Sybase, DB2 and ODBC.

        -

        ¸êäïóç: 2.00 14 May 2002 
        - Copyright © 2000, 2001 John Lim (jlim@natsoft.com.my)
        - ¢äåéá: Dual LGPL and BSD-style
        - Äéêôõáêüò Ôüðïò:  http://php.weblogs.com/adodb
        -

        -
        +

        ¸êäïóç: 2.00 14 May 2002 
        + Copyright © 2000, 2001 John Lim (jlim@natsoft.com.my)
        + ¢äåéá: Dual LGPL and BSD-style
        + Äéêôõáêüò Ôüðïò:  http://php.weblogs.com/adodb
        +

        +
        -

        ÊëÜóåéò Ãñáöéêþí   -  lib/graphlib.php

        +

        ÊëÜóåéò Ãñáöéêþí   -  lib/graphlib.php

        -
        -

        ÊëÜóåéò ãéá íá æùãñáößæïíôáé ãñáììÝò, óçìåßá, ìðÜñåò êáé ãñáöéêÜ ðåñéï÷þí, óõìðåñéëáìâáíïìÝíïõ áñéèìçôéêþí - x-axis êáé äéðëþí y-axis.

        +
        +

        ÊëÜóåéò ãéá íá æùãñáößæïíôáé ãñáììÝò, óçìåßá, ìðÜñåò êáé ãñáöéêÜ ðåñéï÷þí, óõìðåñéëáìâáíïìÝíïõ áñéèìçôéêþí + x-axis êáé äéðëþí y-axis.

        -

        ¸êäïóç: 1.6.3 (ìå ôñïðïðïéÞóåéò)
        - Copyright © 2000  Herman Veluwenkamp, hermanV@mindless.com
        - ¢äåéá: LGPL
        -

        -
        +

        ¸êäïóç: 1.6.3 (ìå ôñïðïðïéÞóåéò)
        + Copyright © 2000  Herman Veluwenkamp, hermanV@mindless.com
        + ¢äåéá: LGPL
        +

        +
        -

        IP-Atlas  -   lib/ipatlas

        +

        IP-Atlas  -   lib/ipatlas

        -
        Êþäéêáò PHP ãéá íá äåß÷íåé ôçí ôïðïèåóßá ìéáò IP äéåýèõíóçò óôï ÷Üñôç.
        -
        - ¸êäïóç: 1.0 (ìå ôñïðïðïéÞóåéò)
        - Copyright © 2002   Ivan Kozik
        - ¢äåéá: GNU GPL
        - Äéêôõáêüò Ôüðïò: http://www.xpenguin.com/ip-atlas.php
        -
        +
        Êþäéêáò PHP ãéá íá äåß÷íåé ôçí ôïðïèåóßá ìéáò IP äéåýèõíóçò óôï ÷Üñôç.
        +
        + ¸êäïóç: 1.0 (ìå ôñïðïðïéÞóåéò)
        + Copyright © 2002   Ivan Kozik
        + ¢äåéá: GNU GPL
        + Äéêôõáêüò Ôüðïò: http://www.xpenguin.com/ip-atlas.php
        +
        -

        PHP mailer   -  lib/class.phpmailer.php
        -

        +

        PHP mailer   -  lib/class.phpmailer.php
        +

        -
        ÊëÜóç ãéá íá óôÝëíåé e-mails ÷ñçóéìïðïéþíôáò åßôå ôçí sendmail, åßôå ôçí PHP mail(), -Þ SMTP.  Ïé ìÝèïäïé âáóßæïíôáé ðÜíù óôéò âáóéêÝò êëÜóåéò AspEmail(tm).
        -
        - ¸êäïóç 1.60, ÄçìéïõñãÞèçêå óôéò 03/30/2002
        - Copyright © 2001 Brent R. Matzelle <bmatzelle@yahoo.com>
        - ¢äåéá: LGPL
        - Äéêôõáêüò Ôüðïò:   http://phpmailer.sourceforge.net
        -
        -
        +
        ÊëÜóç ãéá íá óôÝëíåé e-mails ÷ñçóéìïðïéþíôáò åßôå ôçí sendmail, åßôå ôçí PHP mail(), +Þ SMTP.  Ïé ìÝèïäïé âáóßæïíôáé ðÜíù óôéò âáóéêÝò êëÜóåéò AspEmail(tm).
        +
        + ¸êäïóç 1.60, ÄçìéïõñãÞèçêå óôéò 03/30/2002
        + Copyright © 2001 Brent R. Matzelle <bmatzelle@yahoo.com>
        + ¢äåéá: LGPL
        + Äéêôõáêüò Ôüðïò:   http://phpmailer.sourceforge.net
        +
        +
        -

        ÁðëÞ ãåííÞôñéá äçìéïõñãßáò áñ÷åßùí Excel öôéáãìÝíç óå PHP  -   lib/psxlsgen.php

        +

        ÁðëÞ ãåííÞôñéá äçìéïõñãßáò áñ÷åßùí Excel öôéáãìÝíç óå PHP  -   lib/psxlsgen.php

        -
        ÊëÜóç ãéá íá äçìéïõñãåß ðïëý áðëÜ MS Excel áñ÷åßá (xls) ìÝóù PHP.
        -
        - ¸êäïóç: 0.3b
        - Copyright © 2001  Erol Ozcan <eozcan@superonline.com>
        - ¢äåéá: GNU LGPL
        - Äéêôõáêüò Ôüðïò: http://psxlsgen.sourceforge.net
        -
        +
        ÊëÜóç ãéá íá äçìéïõñãåß ðïëý áðëÜ MS Excel áñ÷åßá (xls) ìÝóù PHP.
        +
        + ¸êäïóç: 0.3b
        + Copyright © 2001  Erol Ozcan <eozcan@superonline.com>
        + ¢äåéá: GNU LGPL
        + Äéêôõáêüò Ôüðïò: http://psxlsgen.sourceforge.net
        +
        -

        ÅìðëïõôéóìÝíïò ÊåéìåíïãñÜöïò  -   lib/rte

        +

        ÅìðëïõôéóìÝíïò ÊåéìåíïãñÜöïò  -   lib/rte

        -
        ÄéïñèùôÞò êåéìÝíïõ HTML ãéá åìðÝäùóç óôéò éóôïóåëßäåò.
        -
        - ¸êäïóç: 0.30 beta 1 (ìå ôñïðïðïéÞóåéò)
        +
        ÄéïñèùôÞò êåéìÝíïõ HTML ãéá åìðÝäùóç óôéò éóôïóåëßäåò.
        +
        + ¸êäïóç: 0.30 beta 1 (ìå ôñïðïðïéÞóåéò)
        Copyright © 2001 Ramesys (Contracting Services) Limited <Austin.France@Ramesys.com> - ¢äåéá: GNU LGPL
        - Äéêôõáêüò Ôüðïò: http://richtext.sourceforge.net
        -
        + ¢äåéá: GNU LGPL
        + Äéêôõáêüò Ôüðïò: http://richtext.sourceforge.net
        +
        -

        ÊëÜóç SMTP   -  lib/class.smtp.php
        -

        +

        ÊëÜóç SMTP   -  lib/class.smtp.php
        +

        -
        ÊëÜóç ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá óýíäåóç êáé åðéêïéíùíßá ìå -ïðïéïíäÞðïôå SMTP server.
        - Õëïðïéåß üëåò ôéò SMTP óõíáñôÞóåéò ðïõ ïñßæïíôáé óôï RFC821 åêôüò ôçò TURN.
        -
        - ¸êäïóç: 03/26/2001
        - Copyright © 2001  Chris Ryan <chris@greatbridge.com>
        -
        -
        +
        ÊëÜóç ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá óýíäåóç êáé åðéêïéíùíßá ìå +ïðïéïíäÞðïôå SMTP server.
        + Õëïðïéåß üëåò ôéò SMTP óõíáñôÞóåéò ðïõ ïñßæïíôáé óôï RFC821 åêôüò ôçò TURN.
        +
        + ¸êäïóç: 03/26/2001
        + Copyright © 2001  Chris Ryan <chris@greatbridge.com>
        +
        +
        -

        -
        +

        +
        -

        Ôåêìçñßùóç ôïõ Moodle

        -

        Version: $Id$

        +

        Ôåêìçñßùóç ôïõ Moodle

        +

        Version: $Id$

        - + diff --git a/lang/el/docs/cvs.html b/lang/el/docs/cvs.html index 6fa2afff7a8..22bd6c40020 100644 --- a/lang/el/docs/cvs.html +++ b/lang/el/docs/cvs.html @@ -1,11 +1,9 @@ - - + Ôåêìçñßùóç ôïõ Moodle: Ðùò ÷ñçóéìïðïéåßôáé ôï CVS - + - +

        ×ñçóéìïðïéþíôáò ôï CVS ãéá ðñüóâáóç êáé áíáâÜèìéóç ôïõ source êþäéêá ôïõ Moodle

        Ôá áñ÷éêÜ CVS óçìáßíïõí Concurrent Versioning System (ÐÁñÜëëçëï Óýóôçìá Åêäüóåùí). Åßíáé Ýíáò êïéíÜ ÷ñçóéìïðïéïýìåíïò ôñüðïò ãéá áðïèÞêåõóç @@ -97,20 +95,20 @@ update -dP

        Åðüìåíï âÞìá, ðáñáìåôñïðïéÞóôå ôï WinCVS. Âñåßôå ôï, êáé äéáëÝøôå Admin -> Preferences. ÌåôÜ áëëÜîôå ôá üðùò öáßíïíôáé ðáñáêÜôù:

        -

        [General]
        - CVSROOT data:
        - Authentication: ssh
        - Path: /cvsroot/moodle
        - Host address: cvs.sourceforge.net
        - User name: myusername
        +

        [General]
        + CVSROOT data:
        + Authentication: ssh
        + Path: /cvsroot/moodle
        + Host address: cvs.sourceforge.net
        + User name: myusername
        CVSROOT: myusername@cvs.sourceforge.net:/cvsroot/moodle

        -

        [Globals]
        - Checkout read-only: uncheck
        - Supply control when adding files: check
        - Quiet mode: uncheck
        - TCP/IP compression: check and select 9
        - Dirty files support: check
        - Prune(remove) empty directories: check
        +

        [Globals]
        + Checkout read-only: uncheck
        + Supply control when adding files: check
        + Quiet mode: uncheck
        + TCP/IP compression: check and select 9
        + Dirty files support: check
        + Prune(remove) empty directories: check
        Disable splash screen: uncheck

        Óõã÷áñçôÞñéá, ôï WinCVS åßíáé Ýôïéìï. Ôþñá, èá ðñÝðåé íá äïêéìÜóåôå Ýíá ïëïêëçñùìÝíï áíôßãñáöï @@ -145,8 +143,8 @@ update -dP

        ÊáëÞ Ôý÷ç!

         

        -

        Ôåêìçñßùóç ôïõ Moodle

        -

        Version: $Id: features.html,v 1.2 2001/12/09 +

        Ôåêìçñßùóç ôïõ Moodle

        +

        Version: $Id: features.html,v 1.2 2001/12/09 10:34:19 martin Exp $

        diff --git a/lang/el/docs/developer.html b/lang/el/docs/developer.html index 9300bd16d39..e38114d0745 100644 --- a/lang/el/docs/developer.html +++ b/lang/el/docs/developer.html @@ -1,9 +1,6 @@ - - Ôåêìçñßùóç ôïõ Moodle: Åã÷åéñßäéï ÁíÜðôõîçò - + @@ -28,18 +25,18 @@

        1. Áñ÷éôåêôïíéêÞ ôïõ Moodle

        Áðï ôçí ïðôéêÞ ãùíßá ôïõ äéá÷åéñéóôÞ, ôï Moodle Ý÷åé ó÷åäéáóôåß óýìöùíá ìå ôá ðáñáêÜôù êñéôÞñéá:

          -
        1. Ôï Moodle ðñÝðåé íá ôñÝ÷åé óå ìéá åõñåßá ãêÜìá áðï ðëáôöüñìåò
          -
          +
        2. Ôï Moodle ðñÝðåé íá ôñÝ÷åé óå ìéá åõñåßá ãêÜìá áðï ðëáôöüñìåò
          +
          Ç ðëáôöüñìá ôçò äéêôõáêÞò åöáñìïãÞò ðïõ ôñÝ÷åé óôá ðåñéóóüôåñá óõóôÞìáôá åßíáé õëïðïéçìÝíç ìå PHP óå óõíäéáóìü ìå MySQL, êáé áõôü åßíáé ôï ðåñéâÜëëïí ðÜíù óôï ïðïßï Ý÷åé áíáðôõ÷èåß ôï Moodle (ãéá Linux, Windows, êáé Mac OS X). Ôï Moodle ÷ñçóéìïðïéåß åðßóçò êáé ôçí âéâëéïèÞêç ADOdb ãéá áöáßñåóç âÜóçò äåäïìÝíùí, ðïõ óçìáßíåé ïôé ôï Moodle ìðïñåß íá ÷ñçóéìïðïéÞóåé ðåñéóóüôåñåò áðï äÝêá äéáöïñåôéêÝò âÜóåéò äåäïìÝíùí (äõóôç÷þò, áí êáé, äåí ìðïñåß áêüìá íá äçìéïõñãÞóåé ðßíáêåò óå üëåò áõôÝò ôéò âÜóåéò äåäïìÝíùí - ðåñéóóüôåñá - ãéá áõôü áñãüôåñá).

          + ãéá áõôü áñãüôåñá).

        3. -
        4. Ôï Moodle åßíáé åýêïëï íá ôï åãêáôáóôÞóåéò, íá ôï ìÜèåéò êáé íá ôï ôñïðïðïéÞóåéò
          -
          +
        5. Ôï Moodle åßíáé åýêïëï íá ôï åãêáôáóôÞóåéò, íá ôï ìÜèåéò êáé íá ôï ôñïðïðïéÞóåéò
          +
          Ôá ðñþôá ðñïôüôõðá ôïõ Moodle (1999) åß÷áí ÷ôéóôåß ÷ñçóéìïðïéüíôáò ôïZope - å´íá ðñï÷ùñçìÝíï object-oriented server ãéá äéêôõáêÝò åöáñìïãÝò. Äõóôç÷þò áíáêÜëõøá ïôé íá êáé ç ôå÷íïëïãßá Þôáí áñêåôÜ êáëÞ, åß÷å ìéá ðïëëÞ áðüôïìç êáìðýëç ìÜèçóçò @@ -51,26 +48,26 @@ ìå êáèáñÜ ïíüìáôá óõíáñôÞóåùí êáé óýìöùíç äéÜôáîç áðï áñ÷åßá êþäéêá. Ç PHP åßíáé åðßóçò åýêïëï íá åãêáôáóôáèåß (binaries åßíáé äéáèÝóéìá ãéá êÜèå ðëáôöüñìá) êáé åßíáé åõñÝùò äéáèÝóéìç, óå óçìåßï üðïõ ðïëëÝò õðçñåóßåò öéëïîåíßáò äéêôõáêþí ôüðùí - ôçí ðáñÝ÷ïõí óáí ìéá âáóéêÞ õðçñåóßá.

          + ôçí ðáñÝ÷ïõí óáí ìéá âáóéêÞ õðçñåóßá.

        6. -
        7. ÐñÝðåé íá åßíáé åýêïëï íá ãßíåé áíáâÜèìéóç áðï ôçí ìéá Ýêäïóç óôçí Üëëç
          -
          +
        8. ÐñÝðåé íá åßíáé åýêïëï íá ãßíåé áíáâÜèìéóç áðï ôçí ìéá Ýêäïóç óôçí Üëëç
          +
          Ôï Moodle îÝñåé ôç Ýêäïóç åßíáé (åðéðñüóèåôá êáé ïé åêäüóåéò áðï üëá ôá plug-in modules) êáé ìç÷áíéóìüò Ý÷åé åíóïìáôùèåß Ýôóé þóôå ôï Moodle íá ìðïñåß íá áíáâáèìßæåôáé ìüíï ôïõ ÷ùñßò ëÜèç óå ðïéï êáéíïýñãéá Ýêäïóç (ãéá ðáñÜäåéãìá ìðïñåß íá ìåôïíïìÜóåé ðßíáêåò óå ìéá âÜóç äåäïìÝíùí Þ íá ðñïóèÝóåé êáéíïýñãéá ðåäßá). Åáí ÷ñçóéìïðïéåßôáé CVS óôï Unix ãéá ðáñÜäåéãìá, ìðïñåß êÜðïéïò íá êÜíåé áðëÜ Ýíá "cvs update -d" êáé ìåôÜ íá åðéóêåöôåß ôïí áñ÷éêÞ óåëßäá ôïõ äéêôõáêïý ôüðïõ - þóôå íá ïëïêëçñþóåé ôçí áíáâÜèìéóç.

          + þóôå íá ïëïêëçñþóåé ôçí áíáâÜèìéóç.

        9. -
        10. ÐñÝðåé íá áðïôåëåßôå áðï õðïìïíÜäåò þóôå íá åðéôñÝðåôå ç åðÝêôáóç ôïõ
          -
          +
        11. ÐñÝðåé íá áðïôåëåßôå áðï õðïìïíÜäåò þóôå íá åðéôñÝðåôå ç åðÝêôáóç ôïõ
          +
          Ôï Moodle Ý÷åé Ýíáí áñéèìü áðï ÷áñáêôçñéóôéêÜ ôá ïðïßá áðïôåëïýíôáé áðï õðïìïíÜäåò, ôá ïðïßá åßíáé ôá èÝìáôá, äñáóôçñéüôçôåò, ãëþóóåò, ó÷Þìá âÜóåùí äåäïìÝíùí êáé ôõðïðïßçóç ìáèçìÜôùí. Áõôü åðéôñÝðåé óå üëïõò íá ðñïóèÝôïõí ÷áñáêôçñéóôéêÜ óôï êýñéï êïììÜôé ôïõ êþäéêá Þ áêüìá êáé íá äéáíÝìïíôáé áõôÜ îå÷ùñéóôÜ. - Ðåñéóóüôåñá áðï áõôÜ óôïí åðüìåíï ôïìÝá.

          + Ðåñéóóüôåñá áðï áõôÜ óôïí åðüìåíï ôïìÝá.

        12. -
        13. ÐñÝðåé íá ìðïñåß íá ÷ñçóéìïðïåßôå êáé íá óõíäÝåôáé ìå Üëëá óõóôÞìáôá
          -
          +
        14. ÐñÝðåé íá ìðïñåß íá ÷ñçóéìïðïåßôå êáé íá óõíäÝåôáé ìå Üëëá óõóôÞìáôá
          +
          ¸íá ðñÜãìá ðïõ êÜíåé ôï Moodle åßíáé ïôé êñáôÜåé üëá ôá áñ÷åßá åíüò ìáèÞìáôïò ìÝóá óå Ýíá directory ðÜíù óôï server. Áõôü åðéôñÝðåé óå Ýíá äéá÷åéñéóôÞ óõóôÞìáôïò íá ðáñÝ÷åé seamless öüñìåò ãéá ðñüóâáóç óå åðßðåäï öáêÝëïõ ãéá êÜèå êáèçãçôÞ, üðùò ïé Appletalk, SMB, @@ -105,7 +102,7 @@
        15. widget_update_instance() - êþäéêáò ãéá íá áíáâáèìßæåé Ýíá õðÜñ÷ïí âÞìá
        16. widget_delete_instance() - êþäéêáò ãéá íá äéáãñÜöåé Ýíá âÞìá
        17. widget_user_outline() - äùèÝíôïò åíüò âÞìáôïò, åðéóôñÝöåé ìéá ðåñßëçøç áðï ôçí óõíåéóöïñÜ ôïõ ÷ñÞóôç
        18. -
        19. widget_user_complete() - äùèÝíôïò åíüò âÞìáôïò, ôõðþíåé ëåðôïìÝñåéåò ãéá ôçí óõíåéóöïñÜ ôïõ ÷ñÞóôç
          +
        20. widget_user_complete() - äùèÝíôïò åíüò âÞìáôïò, ôõðþíåé ëåðôïìÝñåéåò ãéá ôçí óõíåéóöïñÜ ôïõ ÷ñÞóôç
        21. Ãéá ôçí áðïöõãÞ ðéèáíþí óõãêñïýóåùí, ïðïéáäÞðïôå óõíÜñôçóç ôïõ module ðñÝðåé ôï üíïìá ôçò íá áñ÷ßæåé ìå widget_ êáé ïðïéáäÞðïôå óôáèåñÜ ïñßæåôáé ðñÝðåé íá áñ÷ßæåé ìå WIDGET_ @@ -157,7 +154,7 @@ (óõìðåñéëáìâáíùìÝíïõ íá êåéíïýíôáé ôá óôïé÷åßá ìéáò óåëßäáò åëÝõèåñá ìÝóá óå áõôÞ).

          Ðåñéóóüôåñç óõæÞôçóç ãéá áõôü óôï ÏìÜäá ÓõæçôÞóåùí ÈÝìáôùí óôçí ÷ñçóéìïðïßçóç ôïõ Moodle. Åáí äçìéïõñãÞóåôå Ýíá ùñáßï èÝìá ðïõ ðéóôåýåôå ïôé ìðïñïýí íá ôï ÷ñçóéìïðïéÞóïõí êáé - Üëëïé, ðáñáêáëïýìå óôåßëôå ôï ìáò óå Ýíá óõìðéåóìÝíï áñ÷åßï óôçí ïìÜäá óõæçôÞóåùí ãéá èÝìáôá!
          + Üëëïé, ðáñáêáëïýìå óôåßëôå ôï ìáò óå Ýíá óõìðéåóìÝíï áñ÷åßï óôçí ïìÜäá óõæçôÞóåùí ãéá èÝìáôá!

        @@ -179,15 +176,15 @@
      • quiz.php - strings ãéá ôï module ôùí åñùôçìÜôùí
      • resource.php - strings ãéá ôï module ôùí ðçãþí
      • survey.php - strings ãéá ôï module ôçò Ýñåõíáò
      • -
      • .... óõí Üëëá modules áí õðÜñ÷ïõí.
        -
        - ¸íá string êáëåßôáé áðï áõôÜ ôá áñ÷åßá ÷ñçóéìïðïéüíôáò ôçí óõíÜñôçóç get_string() - Þ ôçí print_string() . ÊÜèå string õðïóôçñßæåé - áíôéêáôÜóôáóç ìåôáâëçôþí, ãéá íá õðïóôçñßæåé ôçí áðïóôïëÞ ìåôáâëçôþí óå äéáöïñåôéêÝò ãëþóóåò.
        -
        +
      • .... óõí Üëëá modules áí õðÜñ÷ïõí.
        +
        + ¸íá string êáëåßôáé áðï áõôÜ ôá áñ÷åßá ÷ñçóéìïðïéüíôáò ôçí óõíÜñôçóç get_string() + Þ ôçí print_string() . ÊÜèå string õðïóôçñßæåé + áíôéêáôÜóôáóç ìåôáâëçôþí, ãéá íá õðïóôçñßæåé ôçí áðïóôïëÞ ìåôáâëçôþí óå äéáöïñåôéêÝò ãëþóóåò.
        +
        ð.÷. $strdueby = get_string("assignmentdueby", "assignment", - userdate($date));
        -
        + userdate($date));
        +
        ÅÜí êÜðïéï string äåí õðÜñ÷åé óå ìéá óõãêåêñéìÝíç ãëþóóá, ôüôå áõôüìáôá èá ÷ñçóéìïðïéçèåß ôï áíôßóôïé÷ï óôá ÁããëéêÜ áíôß ãéá áõôü.
      • @@ -204,12 +201,12 @@ äéá÷åéñéóôÞ êÜôù áðü ôçí åðéëïãÞ "ÅëÝãîôå ÁõôÞ Ôçí Ãëþóóá". Áõôü êÜíåé åýêïëï ü÷é ìüíï ôï íá äçìéïõñãÞóåôå êáéíïýñãéåó ãëþóóåò áëëÜ êáé íá âåëôéþóåôå ôéò åßäç õðÜñ÷ïõóåò. Åáí îåêéíÜôå ìéá êáéíïýñãéá ãëþóóá, ðáñáêáëþ áðéêïéíùíÞóôå ìáæß ìïõ, Martin Dougiamas.

        -

        Åðßóçò ìðïñåßôå íá ôçí äçìïóéåýóôå êáé óôçí ÏìÜäá +

        Åðßóçò ìðïñåßôå íá ôçí äçìïóéåýóôå êáé óôçí ÏìÜäá ÓõæçôÞóåùí ãéá Ãëþóóåò ×ñçóéìïðïéüíôáò ôï Moodle.

        ÅÜí óõíôçñåßôáé ìéá ãëþóóá óå Ýíá åîåëéóüìåíç âÜóç, ìðïñþ íá óáò äþóù CVS äéáêéþìáôá åããñáöÞò óôïí ðçãáßï êþäéêá ôïõ Moodle Ýôóé þóôå íá ìðïñåßôå íá áëëÜæåôå áðåõèåßáò ôá áñ÷åßá.

        -


        +


        Ó÷Þìá ÂÜóçò ÄåäïìÝíùí

        ¸÷ïíôáò ìéá âÜóç äåäïìÝíùí ðïõ äïõëåýåé ìå ïñéóìÝíïõò ðßíáêåò, ç óêüðéìá áðëÞ SQL ðïõ Ý÷åé ÷ñçóéìïðïéçèåß @@ -225,7 +222,7 @@

        Ðñïò ôï ðáñþí, ìüíï ç MySQL êáé ç PostgreSQL õðïóôçñßæïíôáé ðëÞñùò ìå áõôü ôïí ôñüðï. Åáí åßóôå åîïéêïéùìÝíïò ìå êÜðïéï Üëëï óýóôçìá âÜóåùí äåäïìÝíùí(åéäéêüôåñá open source âÜóç äåäïìÝíùí) êáé Ýéóôå ðñüèõìïò íá âïçèÞóåôå íá åéóÜãïõìå ôï õðÜñ÷ïí - ó÷Þìá, ðáñáêáëþ åðéêïéíùíÞóôå ìáæß ìïõ (Martin + ó÷Þìá, ðáñáêáëþ åðéêïéíùíÞóôå ìáæß ìïõ (Martin Dougiamas).

         

        @@ -243,13 +240,13 @@

        Áí áéóèÜíåóôå ïôé èÝëåôå íá ãñÜøåôå Ýíá Ýããñáöï åêðáéäåõôéêïý ðåñéå÷ïìÝíïõ, Ýíá Üñèñï, ìéá áêáäçìáúêÞ äéáôñéâÞ Þ ïôéäÞðïôå Üëëï ãýñù áðï ôï Moodle, ðáñáêáëþ íá ôï êÜíåôå!

        -

        ÂÜëôå ôï óôï äßêôõï êáé âåâáéùèåßôå ïôß óõìðåñéëÜâáôå óõíäÝóìïõò óôï http://moodle.com/

        +

        ÂÜëôå ôï óôï äßêôõï êáé âåâáéùèåßôå ïôß óõìðåñéëÜâáôå óõíäÝóìïõò óôï http://moodle.com/

         

        Ðáßñíïíôáò ÌÝñïò Óôïí ÅíôïðéóôÞ ÐñïâëçìÜôùí

        ÔÝëïò, èá Þèåëá íá óáò êáëÝóù íá ãñáöôåßôå óôïí "åíôïðéóôÞ ðñïâëçìÜôùí" - óôçí äéåýèõíóç bugs.moodle.org Ýôóé þóôå íá ìáò åíçìåñþíåôå ãéá ïðïéïäÞðïôå + óôçí äéåýèõíóç bugs.moodle.org Ýôóé þóôå íá ìáò åíçìåñþíåôå ãéá ïðïéïäÞðïôå ëÜèïò âñßóêåôáé êáé ðéèáíÜ íá óõììåôÝ÷åô êáé óôçí ëýóç ôïõ.

        Ôá "ëÜèç" äåí ðåñéëáìâÜíïõí ìüíï ëÜèç ëïãéóìéêïý óôçí ôñÝ÷ïõóá Ýêäïóç ôïõ Moodle, áëëÜ åðßóçò êáéíïýñãéåò éäÝåò, @@ -262,8 +259,8 @@

        Åõ÷áñéóôþ ðïõ ÷ñçóéìïðïéÞóáôå ôï Moodle!

        -

        ×áéñåôßóìáôá,
        - Martin Dougiamas

        +

        ×áéñåôßóìáôá,
        + Martin Dougiamas

        @@ -272,8 +269,8 @@

         

        -

        Ôåêìçñßùóç ôïõ Moodle

        -

        Version: $Id: developer.html,v 1.2 2001/12/09 +

        Ôåêìçñßùóç ôïõ Moodle

        +

        Version: $Id: developer.html,v 1.2 2001/12/09 10:34:19 martin Exp $

        diff --git a/lang/el/docs/docstyles.css b/lang/el/docs/docstyles.css deleted file mode 100644 index 0af1b88cdb6..00000000000 --- a/lang/el/docs/docstyles.css +++ /dev/null @@ -1,134 +0,0 @@ -body, td, th, li { - font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - background-color: #FFFFFF; -} - -th { - font-weight: bold; -} - -a:link { - text-decoration: none; - color: blue; -} - -a:visited { - text-decoration: none; - color: blue; -} - -a:hover { - text-decoration: underline; - color: red; -} - -form { - margin-bottom: 0; -} - - -li { - margin-bottom: 10px; - -} - -.question { - font-size: medium; - font-weight: bold; - font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - border: 1px dotted; - padding: 10px; - background-color: #EEEEEE; -} - -.answer { - font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - font-size: medium; - border: none; - padding-left: 40px; -} - -.normaltext { - font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - font-size: medium; - border: none; - margin-left: 30px; - -} - -.answercode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: none; - padding-left: 60px; -} - -.questionlink { - font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - font-size: medium; - border: none; - padding-left: 40px; -} - -.examplecode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: thin dashed #999999; - background-color: #FBFBFB; - margin: auto; - padding: 30px; - height: auto; - width: auto; -} -h1 { - font-weight: bold; - color: #000000; - background-color: #CCCCCC; - padding: 5px; - font-size: large; - border-width: 1px; - border-color: #CCCCCC; - -moz-border-radius: 10px; -} -h2 { - font-weight: bold; - color: #FFFFFF; - background-color: #666666; - padding: 5px; - font-size: medium; - border-width: 1px; - border-color: #666666; - -moz-border-radius: 10px; -} -h3 { - font-weight: normal; - color: #FFFFFF; - background-color: #666666; - padding: 5px; - font-size: medium; - -moz-border-radius: 10px; -} -.spaced { - - margin-bottom: 30px; -} - -ul { - margin-top: 10px; - -} -.commandline { - font-family: "Courier New", Courier, mono; - font-size: x-small; - background-color: #FBFBFB; - margin: auto auto 20px 30px; - padding: 5px; - height: auto; - width: auto; - font-weight: bold; - border: 1px solid #999999; - white-space: nowrap; - display: compact; - clear: both; - float: none; -} diff --git a/lang/el/docs/faq.html b/lang/el/docs/faq.html index a4ae11afaa1..84ba8e46c4a 100755 --- a/lang/el/docs/faq.html +++ b/lang/el/docs/faq.html @@ -1,1041 +1,521 @@ - - - - - - -Moodle Docs: Frequently Asked Questions (FAQ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

        Ðñüóöáôåò ÅñùôÞóåéò (FAQ)

        - - - -

        ÁõôÞ ç óåëßäá ðåñéÝ÷åé áðáíôÞóåéò óå ìåñéêÝò áðü ôéò ðéï - - óõ÷íÝò åñùôÞóåéò áíèñþðùí ðïõ åãêáèéóôïýí ôï Moodle. Áí Ý÷åéò áêïëïõèÞóåé ôéò - - ïäçãßåò åãêáôÜóôáóçò áëëÜ åîáêïëïõèåßò íá - - Ý÷åéò ðñüâëçìá, ôüôå áõôÞ ç óåëßäá èá óå âïçèÞóåé ðïëý.

        - - - -

        Áí äåí âñåéò ôçí áðÜíôçóÞ óïõ åäþ ðñïóðÜèçóå óôï ìÜèçìá - - ×ñçóéìïðïéþíôáò - - ôï Moodle óôï moodle.org. Îåêßíá øÜ÷íïíôáò óôá forums ÷ñçóéìïðïéþíôáò êÜðïéåò - - ëÝîåéò êëåéäéÜ, óå ðåñßðôùóç ðïõ ôï ðñüâëçìÜ óïõ Ý÷åé Þäç óõæçôçèåß. Áí äå âñßóêåéò - - ôßðïôá, ôüôå ðñïóðÜèçóå íá õðïâÜëëåéò ôçí åñþôçóÞ óïõ óôï êáôÜëëçëï forum - - - êÜðïéïò èá ìðïñÝóåé íá óå âïçèÞóåé.

        - - - -

        Áí Ý÷åéò äïêéìÜóåé êÜðïéåò ëýóåéò ÷ùñßò íá ôá Ý÷åéò êáôáöÝñåé, - - êáé Ý÷åéò firewall, èá Þôáí åíäåäåéãìÝíï íá ðñïóðáèÞóåéò íá îáíáäéáìïñöþóåéò - - ôï firewall óïõ ãéá íá äéáóöáëßóåéò üôé äå èá ìðëïêÜñåé ìéá áðáéôïýìåíç ëåéôïõñãßá - - Þ ìéá óçìáíôéêÞ åðéêïéíùíßá. Ôá Firewalls ðïëý óðÜíéá äçìéïõñãïýí ðñüâëçìá ìå - - ôï Moodle áëëÜ åßíáé óõ÷íÜ õðåýèõíá ãéá ôç ìåéùìÝíç ëåéôïõñãéêüôçôá åîáéôßáò - - ëáèåìÝíùí ñõèìßóåùí firewall. - -

        ×ñçóéìïðïßçóå áõôÞ ôç ëßóôá ãéá íá ìåôáâåßò óôçí êáôÜëëçëç - - áðÜíôçóç ðáñáêÜôù:

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

        ¼ðïôå ðñïóðáèþ íá ìðù Þ íá äù - - Ýíá áñ÷åßï ôï ïðïßï öüñôùóá, ëáìâÜíù ôï ìÞíõìá "Ôï áñ÷åßï äåí âñÝèçêå"

        - - - -

        Ãéá ðáñÜäåéãìá: Äåí ÂñÝèçêå: Ôï áðáéôïýìåíï URL /moodle/file.php/2/myfile.jpg - - äåí âñÝèçêå ó' áõôüí ôïí server.

        - - - -

        Ï web server óïõ ÷ñåéÜæåôáé äéáìüñöùóç ãéá íá åðéôñÝøåé ôï ìÝñïò - - ôïõ URL ìåôÜ áðü ôï üíïìá åíüò script ãéá íá ðåñÜóåé êáôåõèåßáí ó' áõôü. Áõôü - - óõíÞèùò åßíáé åíåñãü óôïí Apache 1, áëëÜ åßíáé ðñïêáèïñéóìÝíá áíåíåñãü óôïí - - Apache 2. Ãéá íá ôï åíåñãïðïéÞóåéò, ðñüóèåóå áõôÞ ôç ãñáììÞ óôï httpd.conf, - - Þ óôï áñ÷åßï a .htaccess óôïí ôïðéêü óïõ êáôÜëïãï (äåò óôï Ïäçãßåò - - ÅãêáôÜóôáóçò ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò):

        - - - -

        AcceptPathInfo on

        - - - -

        Óçìåßùóå, áõôü èá äïõëÝøåé ÌÏÍÏ ãéá ôéò åêäüóåéò Apache 2.x. - -

        - - - -

        Áí äåí ÷ñçóéìïðïéåßò Apache 2 êáé óõíå÷ßóåéò íá Ý÷åéò áõôü ôï - - ðñüâëçìá (áðßèáíï) ôüôå ìðïñåßò íá ìåôáôñÝøåéò ôï Moodle íá ÷ñçóéìïðïéåß ìéá - - åíáëëáêôéêÞ ìÝèïäï. Ôá ìåéïíåêôÞìáôá åßíáé ìéá ìéêñÞ áðþëåéá áðüäïóçò ãéá ôïõò - - ÷ñÞóôåò óïõ êáé ç áäõíáìßá ÷ñÞóçò ôùí ó÷åôéêþí links ìÝóá óôï HTML êþäéêá.

        - - - -

        Ãéá íá ÷ñçóéìïðïéÞóåéò áõôÞ ôçí åíáëëáêôéêÞ ìÝèïäï: óõíäÝóïõ - - óáí Admin, ìðåò óôçí óåëßäá "Äéáìüñöùóç Ìåôáâëçôþí" êáé Üëëáîå ôç ñýèìéóç óå - - "slasharguments". Ôþñá èá ðñÝðåé íá ìðïñåßò íá Ý÷åéò ðñüóâáóç óôá öïñôùìÝíá - - áñ÷åßá óïõ.

        - - - -

         

        - - - - - - - - - -

        PHP - åßíáé åãêáôåóôçìÝíï êáé ðïéÜ Ýêäïóç - - Ý÷ù;

        - - - - - -

        Äçìéïýñãçóå Ýíá íÝï áñ÷åßï óôï web site óïõ ìå üíïìá info.php, - - ðïõ íá ðåñéÝ÷åé ôï ðáñáêÜôù êåßìåíï êáé øÜîå ôï áðü ôïí browser:

        - - - - - - - -

        <?PHP phpinfo() ?>

        - - - -

        Áí äåí óõìâáßíåé ôßðïôá ôüôå äåí Ý÷åéò åãêáôáóôÞóåé ôï PHP. - - Äåò ôéò ïäçãßåò åãêáôÜóôáóçò ãéá ìåñéêÝò ðëçñïöïñßåò ó÷åôéêÜ ìå ôï ðïõ íá ôá - - öïñôþóåéò óôïí õðïëïãéóôÞ óïõ.

        - - - -

         

        - - - -

        Ãéáôß åßíáé üëåò ìïõ ïé óåëßäåò - - êåíÝò;

        - - - -

        ¸ëåãîå ôç ìåôáâëçôÞ dirroot óôï config.php. ÐñÝðåé íá ÷ñçóéìïðïéåßò - - ïëïêëçñùìÝíá, áêñéâÞ ïíüìáôá äéáäñïìþí, ð.÷.:

        - - - -

        $CFG->dirroot = "d:\inetpub\sites\www.yoursite.com\web\moodle";

        - - - -

         

        - - - -

        Äåßôå Redhat Linux platform: Redhat - - Linux

        - - - -

         

        - - - -

        Ïé óåëßäåò ìïõ åìöáíßæïõí óïâáñÜ - - ëÜèç üðùò: ìç ðñïóäéïñéóìÝíç ëåéôïõñãßá: get_string()

        - - - -

        Áí äåéò ëÜèç üðùò:

        - - - -

        Parse error: parse error, unexpected T_VARIABLE in c:\program - - - - files\easyphp\www\moodle\config.php on line 94
        - - - - Fatal error: Call to undefined function: get_string() in c:\program files\easyphp\www\moodle\mod\resource\lib.php - - - - on line 11

        - - - -

        ôüôå åßíáé ðéèáíü íá Ý÷åéò ðáñáëåßøåé Ýíá ; Þ Ýíá åéóáãùãéêü - - áðü ìéá ãñáììÞ óôï config.php (ðñïçãïõìÝíùò óôç ãñáììÞ 94).

        - - - -

        ¶ëëïò Ýíáò ëüãïò ìðïñåß íá åßíáé üôé Ý÷åéò áíïßîåé ôï config.php - - óå Ýíá ðñüãñáììá üðùò ôï Word ãéá íá ôï åðåîåñãáóôåßò êáé ôï Ýóùóåò óáí ìéá - - óåëßäá HTML áíôß ãéá Ýíá áíÜëïãï áñ÷åßï êåéìÝíïõ.

        - - - -

         

        - - - -

        Ãéáôß åîáêïëïõèþ íá ëáìâÜíù ìçíýìáôá - - ëÜèïõò ãéá "êåöáëßäåò ðïõ Ý÷ïõí Þäç óôáëåß";

        - - - -

        Áí äåéò ëÜèç óáí áõôÜ:

        - - - -

        Warning: Cannot add header information - headers already - - - - sent by (output started at /webs/moodle/config.php:87) in /webs/moodle/lib/moodlelib.php - - - - on line 1322

        - - - -

        Warning: Cannot add header information - headers already - - - - sent by (output started at /webs/moodle/config.php:87) in /webs/moodle/lib/moodlelib.php - - - - on line 1323

        - - - -

        Warning: Cannot add header information - headers already - - - - sent by (output started at /webs/moodle/config.php:87) in /webs/moodle/login/index.php - - - - on line 54

        - - - -

        ¸÷åéò êåíÝò ãñáììÝò Þ äéáóôÞìáôá ìåôÜ ôï ôåëéêü ?> óôï áñ÷åßï - - óïõ config.php. ÌåñéêÝò öïñÝò ïé åðåîåñãáóôÝò êåéìÝíùí ôá ðñïóèÝôïõí áõôÜ - - - üðùò ãéá ðáñÜäåéãìá ôï ÓçìåéùìáôÜñéï ôùí Windows - þóôå áí èåò íá äïêéìÜóåéò - - Ýíáí äéáöïñåôéêü åðåîåñãáóôÞ êåéìÝíïõ ãéá íá äéáãñÜøåéò áõôÜ ôá äéáóôÞìáôá Þ - - ôéò êåíÝò ãñáììÝò ïëïêëçñùôéêÜ.

        - - - -

         

        - - - -

        Åîáêïëïõèþ íá ëáìâÜíù áõôü ôï ëÜèïò: - - ÁðÝôõ÷å íá áíïßîåé ôï '/web/moodle/lib/setup.php'

        - - - -

        Óôï config.php, ç ñýèìéóç ðïõ ÷ñçóéìïðïéåßò ãéá ôç ìåôáâëçôÞ - - dirroot ðñÝðåé íá åßíáé ìéá ïëïêëçñùìÝíç äéáäñïìÞ áðü ôïí óêëçñü äßóêï - - ôïõ server óïõ.

        - - - -

        ÌåñéêÝò öïñÝò ïé Üíèñùðïé ÷ñçóéìïðïéïýí ìüíï ôç äéáäñïìÞ áðü - - ôïí äéêü ôïõò êáôÜëïãï Þ êÜðïéá ó÷åôéêÞ ôïõ êáôáëüãïõ ôïõ web server.

        - - - -

         

        - - - -

        ¼ôé êåßìåíï êáé íá ðñïóèÝóù - - ìå ìéá áðüóôñïöï (') Þ åéóáãùãéêÜ (") ðñïêáëåß ðñïâëÞìáôá Þ åìöáíßæåôáé - - ìå ôçí ðñïóèÞêç ìéáò êáèÝôïõ

        - - - -

        Ôá ðñïâëÞìáôá ðïõ äçìéïõñãïýí ïé áðüóôñïöïé ðñïêáëïýíôáé áðü - - ëÜèïò ñõèìßóåéò ôùí "magic quotes". Ôï Moodle áðáéôåß ôéò ðáñáêÜôù - - ñõèìßóåéò (ðïõ åßíáé óõíÞèùò ðñïåðéëåãìÝíåò):

        - - - -

        magic_quotes_gpc = On
        - - - - magic_quotes_runtime = Off

        - - - -

        Äåò ôï êåöÜëáéï äéáìüñöùóç - - webserver óôï åã÷åéñßäéï ÅãêáôÜóôáóçò ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò.

        - -

         

        - - - - - - - - - - - - - - - -

        Åîáêïëïõèþ íá ëáìâÜíù ìçíýìáôá ëÜèïõò - - ó÷åôéêÜ ìå ôï session_start

        - - - -

        Áí âëÝðåéò ëÜèç óáí áõôÜ:

        - - - -

        Warning: session_start() [function.session-start]: open(/tmp\sess_d40f380d37d431fc1516e9a895ad9ce0, O_RDWR) failed: No such file or directory (2) in G:\web\moodle\lib\setup.php on line 123

        - - - -

        Warning: session_start() [function.session-start]: open(/tmp\sess_d40f380d37d431fc1516e9a895ad9ce0, O_RDWR) failed: No such file or directory (2) in G:\web\moodle\lib\setup.php on line 123

        - - - -

        Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at G:\web\moodle\lib\setup.php:1) in G:\web\moodle\lib\setup.php on line 123

        - - - - - - - -

        ... üëá áõôÜ óõíäÝïíôáé ìå ôï ãåãïíüò üôé ôï PHP áðïôõã÷Üíåé - - íá óþóåé ôá áñ÷åßá "session" óôï óêëçñü äßóêï (óå Ýíáí êáôÜëïãï ìå ôï üíïìá - - /tmp). ÓõíÞèùò ï ëüãïò åßíáé üôé äåí ÕÐÁÑ×ÅÉ êáôÜëïãïò ìå áõôü ôï üíïìá óôïí - - õðïëïãéóôÞ óïõ. Áõôü åßíáé óõíÞèùò ôï ðñüâëçìá ìå ôçí åãêáôÜóôáóç ôùí Windows. - -

        Ç ëýóç åßíáé íá äéïñèþóåéò ôç ñýèìéóç ôïõ PHP ãéá íá ðçãáßíåé - - óå Ýíáí ðñáãìáôéêü êáôÜëïãï. Ìðïñåßò íá ôï êÜíåéò áõôü óôï php.ini áñ÷åßï:

        - - - -

        session.save_path = C:\temp

        - - - -

        Þ áëëéþò óôï áñ÷åßï .htaccess óôïí êõñßùò êáôÜëïãï ôïõ moodle:

        - - - -

        php_value session.save_path "/home/moodle/sessions"

        - -

         

        - - - - - - - -

        ¼ôáí ðçãáßíù óôç óåëßäá äéá÷åéñéóôÞ, - - êáëïýìáé íá êÜíù ôï dirroot êåíü!

        - - - -

        Áí äåéò ëÜèç óáí áõôÜ óôï Moodle 1.0.9:

        - - - - - - - - - - - - - - - - - - - -
        Please fix your settings in config.php: - - - -

        You have: - - - -

        $CFG->dirroot = "/home/users/fred/public_html/moodle"; - - - -

        but it should be: - - - -

        $CFG->dirroot = "";

        - - - - - - - -

        ôüôå áíôéìåôùðßæåéò Ýíá ìéêñü ðñüâëçìá ðïõ óõìâáßíåé óå ìåñéêïýò - - servers. Ôï ðñüâëçìá åßíáé ìå ôï ìç÷áíéóìü åëÝã÷ïõ ëáèþí, ü÷é ìå ôçí ðñáãìáôéêÞ - - äéáäñïìÞ. Ãéá íá ôï äéïñèþóåéò áõôü, âñåò áõôÞ ôç ãñáììÞ (ãñáììÞ 66) óôï áñ÷åßï - - admin/index.php:

        - - - -

        if ($dirroot != $CFG->dirroot) {

        - - - -

        êáé ÜëëáîÝ ôï óå:

        - - - -

        if (!empty($dirroot) and $dirroot != $CFG->dirroot) {

        - -

         

        - - - - - -

        ÓõíäÝïìáé áëëÜ äåí öáßíåôáé íá - - åßìáé óõíäåäåìÝíïò. Ìðïñþ íá ðëïçãïýìáé åëåýèåñá.

        - - - -

        Âåâáéþóïõ üôé ôï URL óôçí ðáñÜìåôñï $CFG->wwwroot åßíáé áêñéâþò - - ôï ßäéï üðùò áõôü ðïõ ÷ñçóéìïðïéåßò ãéá ôçí ðñüóâáóç ó' áõôü ôï site.

        - -

         

        - - - -

        ¼ôáí ðñïóðáèþ íá ðñïóèÝóù êÜôé ëáìâÜíù - - ìçíýìáôá ëÜèïõò.

        - - - -

        Áí õðïèÝóïõìå üôé ÷ñçóéìïðïéåßò Apache, ôüôå åßíáé ðïëý ðéèáíü - - ç ðáñÜìåôñïò config.php for $CFG->wwwroot íá åßíáé äéáöïñåôéêÞ áðü ôï URL ðïõ - - ÷ñçóéìïðïéåßò ãéá ôçí ðñüóâáóç ó' áõôü ôï site. Áêüìá ðñïóðÜèçóå íá áðåíåñãïðïéÞóåéò - - ôï "secureforms" óôéò ðáñáìÝôñïõò ôïõ äéá÷åéñéóôÞ.

        - -

         

        - - - - - - - -

        ÊáôÜ ôç äéÜñêåéá ôçò áñ÷éêÞò åãêáôÜóôáóçò, - - ðïôÝ äå ìïõ æçôåßôáé íá äçìéïõñãÞóù Ýíáí ëïãáñéáóìü äéá÷åéñéóôÞ!

        - - - -

        Áõôü åßíáé Ýíá ãíùóôü ðñüâëçìá óôéò åêäüóåéò ôïõ Moodle ìåôÜ - - ôï 1.0.9, ðïõ ôþñá Ý÷åé äéïñèùèåß óôïí êýñéï êþäéêá êáé óôçí Ýêäïóç 1.1.

        - - - -

        Äåí åðçñåÜæåé üëïõò ôïõò áíèñþðïõò, óõìâáßíåé ìüíï üôáí ôï Üôïìï - - ðïõ åãêáèéóôÜ ôï Moodle Ý÷åé Ýíá cookie óôïí browser áðü êÜðïéï Üëëï ðñüãñáììá - - óôï ßäéï site, ìå ôï üíïìá "÷ñÞóôçò", "äéá÷åéñéóôÞò", Þ "êáèçãçôÞò".

        - - - -

        Ìéá ãñÞãïñç äéüñèùóç ðåñéëáìâÜíåé ôç äéáãñáöÞ áõôþí ôùí cookies - - áðü ôïí browser ðñéí ôçí åãêáôÜóôáóç, ÷ñçóéìïðïéþíôáò Ýíáí äéáöïñåôéêü browser, - - Þ åðåîåñãÜæïíôáò ôï áñ÷åßï moodle/admin/user.php ãéá íá åéóÜãåéò áõôÝò ôéò ãñáììÝò - - êïíôÜ óôçí êïñõöÞ:

        - - - -

        unset($user);
        unset($admin);
        unset($teacher);

        - - - -

        Áöïý êÜíåôå áõôÝò ôéò áëëáãÝò ìéá êáëÞ éäÝá åßíáé íá äéáãñÜøåôå - - üëïõò ôïõò ðßíáêåò óôç âÜóç äåäïìÝíùí êáé íá ôï åðáíåãêáôáóôÞóåôå.

        - -

         

        - - - - - - - -

        Äåí ìðïñþ íá óõíäåèþ - áðëþò ìÝíù êïëëçìÝíïò - - óôçí ïèüíç óýíäåóçò.

        - - - -

        Ç ðéï óõíçèéóìÝíç áéôßá ãé' áõôü åßíáé üôé ï äéêüò óïõ õðïëïãéóôÞò - - (ü÷é ï server ôïõ Moodle) Ý÷åé Ýíá firewall ðïõ áöáéñåß ðëçñïöïñßåò áðü ôïí - - browser.

        - - - -

        Áõôü ìðïñåß íá äéïñèùèåß ãéá ïðïéïíäÞðïôå ÷ñçóéìïðïéåß ôïí server - - åðåîåñãÜæïíôáò ôç óåëßäá äéáìüñöùóçò ôïõ Moodle êáé áëëÜæïíôáò ôç ìåôáâëçôÞ - - "secureforms" óå "¼÷é".

        - - - -

        Ìéá áêüìá ðéèáíÞ áéôßá áõôïý ôïõ ðñïâëÞìáôïò åßíáé üôé ôá êåöÜëáéá - - äåí óõíôïíßæïíôáé óôïí server. Ìðïñåßò íá ôï ôåóôÜñåéò áõôü ïíïìÜæïíôáò ôï script - - http://yourserver/moodle/lib/session-test.php.

        - -

         

        - - - - - - - -

        Ðþò ìðïñþ íá êÜíù backup óôï site ôïõ - - Moodle;

        - - - -

        ÐñÝðåé íá Ý÷åéò áíôßãñáöá äýï âáóéêþí ðñáãìÜôùí: ôçò âÜóçò äåäïìÝíùí - - êáé ôùí öïñôùìÝíùí áñ÷åßùí. Ôá Moodle scripts äåí åßíáé ôüóï óçìáíôéêÜ, åöüóïí - - ìðïñåßò ðÜíôá íá öïñôþóåéò Ýíá êáéíïýñéï áñ÷åßï.

        - - - -

        ÕðÜñ÷ïõí ðïëëïß ôñüðïé ãéá íá êÜíåéò ôÝôïéá backups. Åäþ åßíáé - - Ýíá äéÜãñáììá åíüò ìéêñïý script ðïõ ìðïñåßò íá ôñÝîåéò óôï Unix ãéá íá Ý÷åéò - - backup ôçò âÜóçò äåäïìÝíùí (åßíáé êáëü íá Ý÷åéò Ýíá ôÝôïéï script íá ôñÝ÷åé - - êáèçìåñéíÜ ìÝóù åíüò cron task)

        - -

        cd /my/backup/directory

        - -

        mv moodle-database.sql.gz moodle-database-old.sql.gz

        - -

        mysqldump -h example.com -u myusername --password=mypassword -C -Q -e -a mydatabasename > moodle-database.sql

        - -

        gzip moodle-database.sql

        - -

        Ãéá ôá áñ÷åßá, ìðïñåßò íá ÷ñçóéìïðïéåßò rsync ôáêôéêÜ ãéá íá - - áíôéãñÜøåéò ìüíï ôá áëëáãìÝíá áñ÷åßá óå Ýíáí Üëëï host:

        - -

        rsync -auvtz --delete -e ssh mysshusername@example.com:/my/server/directory - - /my/backup/directory/

        - -

         

        - - - - - -

        Ãéáôß ôï site ôïõ Moodle äåí ìïõ åìöáíßæåé - - óùóôÜ þñá & çìåñïìçíßá;

        - - - -

        ÊÜèå ãëþóóá áðáéôåß Ýíáí óõãêåêñéìÝíï êþäéêá (ðïõ ïíïìÜæåôáé - - locale êþäéêáò) ãéá íá ìðïñïýí ïé çìåñïìçíßåò íá åìöáíßæïíôáé - - óùóôÜ. Ôá ãëùóóéêÜ ðáêÝôá ðåñéÝ÷ïõí ðñïåðéëåãìÝíïõò êþäéêåò, áëëÜ ìåñéêÝò öïñÝò - - áõôïß äåí äïõëåýïõí óôïõò servers ôùí Windows.

        - -

        Ìðïñåßò íá âñåéò ôïõò óùóôïýò locale êþäéêåò ãéá ôá Windows - - ó' áõôÝò ôéò äýï óåëßäåò: Êùäéêïß - - ãëþóóáò êáé Êùäéêïß - - ×þñáò/ðåñéï÷Þò.(ð.÷. "esp_esp" ãéá éóðáíéêÜ)

        - -

        Áõôïß ïé íÝïé locale êþäéêåò ìðïñïýí íá åéóá÷èïýí áðü ôç óåëßäá - - Admin -> Configure -> Variables, üðïõ áíôéêáèéóôïýí áõôïýò óôï Þäç åðéëåãìÝíï - - ãëùóóéêü ðáêÝôï.

        - -

         

        - -

        Áíôßãñáöá ôùí email ìïõ äåí óôÝëíïíôáé - - áðü ôá forums ìïõ.

        - -

        ÐñÝðåé íá ñõèìßóåéò ôï cron óùóôÜ áí èåò ôï - - Moodle íá óôÝëíåé áõôüìáôá email áðü forums, çìåñÞóéåò äñáóôçñéüôçôåò, áíáèÝóåéò - - åñãáóéþí ê.ëð. ÁõôÞ ç ßäéá äéáäéêáóßá ðñáãìáôïðïéåß Ýíáí áñéèìü åêêáèáñéóôéêþí - - åñãáóéþí üðùò äéáãñáöÞ ðáëéþí áíåðéâåâáßùôùí ÷ñçóôþí, äéáãñáöÞ ðáëéþí ìáèçôþí - - ê.ëð.

        - -

        ÂáóéêÜ, ÷ñåéÜæåôáé ìéá äéáäéêáóßá ãéá ôï script http://yoursite/admin/cron.php. - - Äåßôå ôï êåöÜëáéï cron óôï åã÷åéñßäéï ÅãêáôÜóôáóçò.

        - -

         

        - -

         

        - - - - - - - -
        - - - -

        Suggest - - - - a new FAQ (include the answer!)

        - - - -
        - - - -

        Thanks to John Eyre for helping to maintain this - - - - FAQ.

        - - - -

        Moodle Documentation

        - - - -

        Version: $Id: faq.html,v 1.6 2003/03/30 13:54:28 - - - - moodler Exp $

        - - - - - - - - - - - - - + + + + +Moodle Docs: Frequently Asked Questions (FAQ) + + + + + + + + + + + + + + + +

        Ðñüóöáôåò ÅñùôÞóåéò (FAQ)

        + +

        ÁõôÞ ç óåëßäá ðåñéÝ÷åé áðáíôÞóåéò óå ìåñéêÝò áðü ôéò ðéï + óõ÷íÝò åñùôÞóåéò áíèñþðùí ðïõ åãêáèéóôïýí ôï Moodle. Áí Ý÷åéò áêïëïõèÞóåé ôéò + ïäçãßåò åãêáôÜóôáóçò áëëÜ åîáêïëïõèåßò íá + Ý÷åéò ðñüâëçìá, ôüôå áõôÞ ç óåëßäá èá óå âïçèÞóåé ðïëý.

        + +

        Áí äåí âñåéò ôçí áðÜíôçóÞ óïõ åäþ ðñïóðÜèçóå óôï ìÜèçìá + ×ñçóéìïðïéþíôáò + ôï Moodle óôï moodle.org. Îåêßíá øÜ÷íïíôáò óôá forums ÷ñçóéìïðïéþíôáò êÜðïéåò + ëÝîåéò êëåéäéÜ, óå ðåñßðôùóç ðïõ ôï ðñüâëçìÜ óïõ Ý÷åé Þäç óõæçôçèåß. Áí äå âñßóêåéò + ôßðïôá, ôüôå ðñïóðÜèçóå íá õðïâÜëëåéò ôçí åñþôçóÞ óïõ óôï êáôÜëëçëï forum - + êÜðïéïò èá ìðïñÝóåé íá óå âïçèÞóåé.

        + +

        Áí Ý÷åéò äïêéìÜóåé êÜðïéåò ëýóåéò ÷ùñßò íá ôá Ý÷åéò êáôáöÝñåé, + êáé Ý÷åéò firewall, èá Þôáí åíäåäåéãìÝíï íá ðñïóðáèÞóåéò íá îáíáäéáìïñöþóåéò + ôï firewall óïõ ãéá íá äéáóöáëßóåéò üôé äå èá ìðëïêÜñåé ìéá áðáéôïýìåíç ëåéôïõñãßá + Þ ìéá óçìáíôéêÞ åðéêïéíùíßá. Ôá Firewalls ðïëý óðÜíéá äçìéïõñãïýí ðñüâëçìá ìå + ôï Moodle áëëÜ åßíáé óõ÷íÜ õðåýèõíá ãéá ôç ìåéùìÝíç ëåéôïõñãéêüôçôá åîáéôßáò + ëáèåìÝíùí ñõèìßóåùí firewall. +

        ×ñçóéìïðïßçóå áõôÞ ôç ëßóôá ãéá íá ìåôáâåßò óôçí êáôÜëëçëç + áðÜíôçóç ðáñáêÜôù:

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        ¼ðïôå ðñïóðáèþ íá ìðù Þ íá äù + Ýíá áñ÷åßï ôï ïðïßï öüñôùóá, ëáìâÜíù ôï ìÞíõìá "Ôï áñ÷åßï äåí âñÝèçêå"

        + +

        Ãéá ðáñÜäåéãìá: Äåí ÂñÝèçêå: Ôï áðáéôïýìåíï URL /moodle/file.php/2/myfile.jpg + äåí âñÝèçêå ó' áõôüí ôïí server.

        + +

        Ï web server óïõ ÷ñåéÜæåôáé äéáìüñöùóç ãéá íá åðéôñÝøåé ôï ìÝñïò + ôïõ URL ìåôÜ áðü ôï üíïìá åíüò script ãéá íá ðåñÜóåé êáôåõèåßáí ó' áõôü. Áõôü + óõíÞèùò åßíáé åíåñãü óôïí Apache 1, áëëÜ åßíáé ðñïêáèïñéóìÝíá áíåíåñãü óôïí + Apache 2. Ãéá íá ôï åíåñãïðïéÞóåéò, ðñüóèåóå áõôÞ ôç ãñáììÞ óôï httpd.conf, + Þ óôï áñ÷åßï a .htaccess óôïí ôïðéêü óïõ êáôÜëïãï (äåò óôï Ïäçãßåò + ÅãêáôÜóôáóçò ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò):

        + +

        AcceptPathInfo on

        + +

        Óçìåßùóå, áõôü èá äïõëÝøåé ÌÏÍÏ ãéá ôéò åêäüóåéò Apache 2.x. +

        + +

        Áí äåí ÷ñçóéìïðïéåßò Apache 2 êáé óõíå÷ßóåéò íá Ý÷åéò áõôü ôï + ðñüâëçìá (áðßèáíï) ôüôå ìðïñåßò íá ìåôáôñÝøåéò ôï Moodle íá ÷ñçóéìïðïéåß ìéá + åíáëëáêôéêÞ ìÝèïäï. Ôá ìåéïíåêôÞìáôá åßíáé ìéá ìéêñÞ áðþëåéá áðüäïóçò ãéá ôïõò + ÷ñÞóôåò óïõ êáé ç áäõíáìßá ÷ñÞóçò ôùí ó÷åôéêþí links ìÝóá óôï HTML êþäéêá.

        + +

        Ãéá íá ÷ñçóéìïðïéÞóåéò áõôÞ ôçí åíáëëáêôéêÞ ìÝèïäï: óõíäÝóïõ + óáí Admin, ìðåò óôçí óåëßäá "Äéáìüñöùóç Ìåôáâëçôþí" êáé Üëëáîå ôç ñýèìéóç óå + "slasharguments". Ôþñá èá ðñÝðåé íá ìðïñåßò íá Ý÷åéò ðñüóâáóç óôá öïñôùìÝíá + áñ÷åßá óïõ.

        + +

         

        + + + + +

        PHP - åßíáé åãêáôåóôçìÝíï êáé ðïéÜ Ýêäïóç + Ý÷ù;

        + + +

        Äçìéïýñãçóå Ýíá íÝï áñ÷åßï óôï web site óïõ ìå üíïìá info.php, + ðïõ íá ðåñéÝ÷åé ôï ðáñáêÜôù êåßìåíï êáé øÜîå ôï áðü ôïí browser:

        + + + +

        <?PHP phpinfo() ?>

        + +

        Áí äåí óõìâáßíåé ôßðïôá ôüôå äåí Ý÷åéò åãêáôáóôÞóåé ôï PHP. + Äåò ôéò ïäçãßåò åãêáôÜóôáóçò ãéá ìåñéêÝò ðëçñïöïñßåò ó÷åôéêÜ ìå ôï ðïõ íá ôá + öïñôþóåéò óôïí õðïëïãéóôÞ óïõ.

        + +

         

        + +

        Ãéáôß åßíáé üëåò ìïõ ïé óåëßäåò + êåíÝò;

        + +

        ¸ëåãîå ôç ìåôáâëçôÞ dirroot óôï config.php. ÐñÝðåé íá ÷ñçóéìïðïéåßò + ïëïêëçñùìÝíá, áêñéâÞ ïíüìáôá äéáäñïìþí, ð.÷.:

        + +

        $CFG->dirroot = "d:\inetpub\sites\www.yoursite.com\web\moodle";

        + +

         

        + +

        Äåßôå Redhat Linux platform: Redhat + Linux

        + +

         

        + +

        Ïé óåëßäåò ìïõ åìöáíßæïõí óïâáñÜ + ëÜèç üðùò: ìç ðñïóäéïñéóìÝíç ëåéôïõñãßá: get_string()

        + +

        Áí äåéò ëÜèç üðùò:

        + +

        Parse error: parse error, unexpected T_VARIABLE in c:\program + + files\easyphp\www\moodle\config.php on line 94
        + + Fatal error: Call to undefined function: get_string() in c:\program files\easyphp\www\moodle\mod\resource\lib.php + + on line 11

        + +

        ôüôå åßíáé ðéèáíü íá Ý÷åéò ðáñáëåßøåé Ýíá ; Þ Ýíá åéóáãùãéêü + áðü ìéá ãñáììÞ óôï config.php (ðñïçãïõìÝíùò óôç ãñáììÞ 94).

        + +

        ¶ëëïò Ýíáò ëüãïò ìðïñåß íá åßíáé üôé Ý÷åéò áíïßîåé ôï config.php + óå Ýíá ðñüãñáììá üðùò ôï Word ãéá íá ôï åðåîåñãáóôåßò êáé ôï Ýóùóåò óáí ìéá + óåëßäá HTML áíôß ãéá Ýíá áíÜëïãï áñ÷åßï êåéìÝíïõ.

        + +

         

        + +

        Ãéáôß åîáêïëïõèþ íá ëáìâÜíù ìçíýìáôá + ëÜèïõò ãéá "êåöáëßäåò ðïõ Ý÷ïõí Þäç óôáëåß";

        + +

        Áí äåéò ëÜèç óáí áõôÜ:

        + +

        Warning: Cannot add header information - headers already + + sent by (output started at /webs/moodle/config.php:87) in /webs/moodle/lib/moodlelib.php + + on line 1322

        + +

        Warning: Cannot add header information - headers already + + sent by (output started at /webs/moodle/config.php:87) in /webs/moodle/lib/moodlelib.php + + on line 1323

        + +

        Warning: Cannot add header information - headers already + + sent by (output started at /webs/moodle/config.php:87) in /webs/moodle/login/index.php + + on line 54

        + +

        ¸÷åéò êåíÝò ãñáììÝò Þ äéáóôÞìáôá ìåôÜ ôï ôåëéêü ?> óôï áñ÷åßï + óïõ config.php. ÌåñéêÝò öïñÝò ïé åðåîåñãáóôÝò êåéìÝíùí ôá ðñïóèÝôïõí áõôÜ - + üðùò ãéá ðáñÜäåéãìá ôï ÓçìåéùìáôÜñéï ôùí Windows - þóôå áí èåò íá äïêéìÜóåéò + Ýíáí äéáöïñåôéêü åðåîåñãáóôÞ êåéìÝíïõ ãéá íá äéáãñÜøåéò áõôÜ ôá äéáóôÞìáôá Þ + ôéò êåíÝò ãñáììÝò ïëïêëçñùôéêÜ.

        + +

         

        + +

        Åîáêïëïõèþ íá ëáìâÜíù áõôü ôï ëÜèïò: + ÁðÝôõ÷å íá áíïßîåé ôï '/web/moodle/lib/setup.php'

        + +

        Óôï config.php, ç ñýèìéóç ðïõ ÷ñçóéìïðïéåßò ãéá ôç ìåôáâëçôÞ + dirroot ðñÝðåé íá åßíáé ìéá ïëïêëçñùìÝíç äéáäñïìÞ áðü ôïí óêëçñü äßóêï + ôïõ server óïõ.

        + +

        ÌåñéêÝò öïñÝò ïé Üíèñùðïé ÷ñçóéìïðïéïýí ìüíï ôç äéáäñïìÞ áðü + ôïí äéêü ôïõò êáôÜëïãï Þ êÜðïéá ó÷åôéêÞ ôïõ êáôáëüãïõ ôïõ web server.

        + +

         

        + +

        ¼ôé êåßìåíï êáé íá ðñïóèÝóù + ìå ìéá áðüóôñïöï (') Þ åéóáãùãéêÜ (") ðñïêáëåß ðñïâëÞìáôá Þ åìöáíßæåôáé + ìå ôçí ðñïóèÞêç ìéáò êáèÝôïõ

        + +

        Ôá ðñïâëÞìáôá ðïõ äçìéïõñãïýí ïé áðüóôñïöïé ðñïêáëïýíôáé áðü + ëÜèïò ñõèìßóåéò ôùí "magic quotes". Ôï Moodle áðáéôåß ôéò ðáñáêÜôù + ñõèìßóåéò (ðïõ åßíáé óõíÞèùò ðñïåðéëåãìÝíåò):

        + +

        magic_quotes_gpc = On
        + + magic_quotes_runtime = Off

        + +

        Äåò ôï êåöÜëáéï äéáìüñöùóç + webserver óôï åã÷åéñßäéï ÅãêáôÜóôáóçò ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò.

        +

         

        + + + + + + + +

        Åîáêïëïõèþ íá ëáìâÜíù ìçíýìáôá ëÜèïõò + ó÷åôéêÜ ìå ôï session_start

        + +

        Áí âëÝðåéò ëÜèç óáí áõôÜ:

        + +

        Warning: session_start() [function.session-start]: open(/tmp\sess_d40f380d37d431fc1516e9a895ad9ce0, O_RDWR) failed: No such file or directory (2) in G:\web\moodle\lib\setup.php on line 123

        + +

        Warning: session_start() [function.session-start]: open(/tmp\sess_d40f380d37d431fc1516e9a895ad9ce0, O_RDWR) failed: No such file or directory (2) in G:\web\moodle\lib\setup.php on line 123

        + +

        Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at G:\web\moodle\lib\setup.php:1) in G:\web\moodle\lib\setup.php on line 123

        + + + +

        ... üëá áõôÜ óõíäÝïíôáé ìå ôï ãåãïíüò üôé ôï PHP áðïôõã÷Üíåé + íá óþóåé ôá áñ÷åßá "session" óôï óêëçñü äßóêï (óå Ýíáí êáôÜëïãï ìå ôï üíïìá + /tmp). ÓõíÞèùò ï ëüãïò åßíáé üôé äåí ÕÐÁÑ×ÅÉ êáôÜëïãïò ìå áõôü ôï üíïìá óôïí + õðïëïãéóôÞ óïõ. Áõôü åßíáé óõíÞèùò ôï ðñüâëçìá ìå ôçí åãêáôÜóôáóç ôùí Windows. +

        Ç ëýóç åßíáé íá äéïñèþóåéò ôç ñýèìéóç ôïõ PHP ãéá íá ðçãáßíåé + óå Ýíáí ðñáãìáôéêü êáôÜëïãï. Ìðïñåßò íá ôï êÜíåéò áõôü óôï php.ini áñ÷åßï:

        + +

        session.save_path = C:\temp

        + +

        Þ áëëéþò óôï áñ÷åßï .htaccess óôïí êõñßùò êáôÜëïãï ôïõ moodle:

        + +

        php_value session.save_path "/home/moodle/sessions"

        +

         

        + + + +

        ¼ôáí ðçãáßíù óôç óåëßäá äéá÷åéñéóôÞ, + êáëïýìáé íá êÜíù ôï dirroot êåíü!

        + +

        Áí äåéò ëÜèç óáí áõôÜ óôï Moodle 1.0.9:

        + + + + + + + + + +
        Please fix your settings in config.php: + +

        You have: + +

        $CFG->dirroot = "/home/users/fred/public_html/moodle"; + +

        but it should be: + +

        $CFG->dirroot = "";

        + + + +

        ôüôå áíôéìåôùðßæåéò Ýíá ìéêñü ðñüâëçìá ðïõ óõìâáßíåé óå ìåñéêïýò + servers. Ôï ðñüâëçìá åßíáé ìå ôï ìç÷áíéóìü åëÝã÷ïõ ëáèþí, ü÷é ìå ôçí ðñáãìáôéêÞ + äéáäñïìÞ. Ãéá íá ôï äéïñèþóåéò áõôü, âñåò áõôÞ ôç ãñáììÞ (ãñáììÞ 66) óôï áñ÷åßï + admin/index.php:

        + +

        if ($dirroot != $CFG->dirroot) {

        + +

        êáé ÜëëáîÝ ôï óå:

        + +

        if (!empty($dirroot) and $dirroot != $CFG->dirroot) {

        +

         

        + + +

        ÓõíäÝïìáé áëëÜ äåí öáßíåôáé íá + åßìáé óõíäåäåìÝíïò. Ìðïñþ íá ðëïçãïýìáé åëåýèåñá.

        + +

        Âåâáéþóïõ üôé ôï URL óôçí ðáñÜìåôñï $CFG->wwwroot åßíáé áêñéâþò + ôï ßäéï üðùò áõôü ðïõ ÷ñçóéìïðïéåßò ãéá ôçí ðñüóâáóç ó' áõôü ôï site.

        +

         

        + +

        ¼ôáí ðñïóðáèþ íá ðñïóèÝóù êÜôé ëáìâÜíù + ìçíýìáôá ëÜèïõò.

        + +

        Áí õðïèÝóïõìå üôé ÷ñçóéìïðïéåßò Apache, ôüôå åßíáé ðïëý ðéèáíü + ç ðáñÜìåôñïò config.php for $CFG->wwwroot íá åßíáé äéáöïñåôéêÞ áðü ôï URL ðïõ + ÷ñçóéìïðïéåßò ãéá ôçí ðñüóâáóç ó' áõôü ôï site. Áêüìá ðñïóðÜèçóå íá áðåíåñãïðïéÞóåéò + ôï "secureforms" óôéò ðáñáìÝôñïõò ôïõ äéá÷åéñéóôÞ.

        +

         

        + + + +

        ÊáôÜ ôç äéÜñêåéá ôçò áñ÷éêÞò åãêáôÜóôáóçò, + ðïôÝ äå ìïõ æçôåßôáé íá äçìéïõñãÞóù Ýíáí ëïãáñéáóìü äéá÷åéñéóôÞ!

        + +

        Áõôü åßíáé Ýíá ãíùóôü ðñüâëçìá óôéò åêäüóåéò ôïõ Moodle ìåôÜ + ôï 1.0.9, ðïõ ôþñá Ý÷åé äéïñèùèåß óôïí êýñéï êþäéêá êáé óôçí Ýêäïóç 1.1.

        + +

        Äåí åðçñåÜæåé üëïõò ôïõò áíèñþðïõò, óõìâáßíåé ìüíï üôáí ôï Üôïìï + ðïõ åãêáèéóôÜ ôï Moodle Ý÷åé Ýíá cookie óôïí browser áðü êÜðïéï Üëëï ðñüãñáììá + óôï ßäéï site, ìå ôï üíïìá "÷ñÞóôçò", "äéá÷åéñéóôÞò", Þ "êáèçãçôÞò".

        + +

        Ìéá ãñÞãïñç äéüñèùóç ðåñéëáìâÜíåé ôç äéáãñáöÞ áõôþí ôùí cookies + áðü ôïí browser ðñéí ôçí åãêáôÜóôáóç, ÷ñçóéìïðïéþíôáò Ýíáí äéáöïñåôéêü browser, + Þ åðåîåñãÜæïíôáò ôï áñ÷åßï moodle/admin/user.php ãéá íá åéóÜãåéò áõôÝò ôéò ãñáììÝò + êïíôÜ óôçí êïñõöÞ:

        + +

        unset($user);
        unset($admin);
        unset($teacher);

        + +

        Áöïý êÜíåôå áõôÝò ôéò áëëáãÝò ìéá êáëÞ éäÝá åßíáé íá äéáãñÜøåôå + üëïõò ôïõò ðßíáêåò óôç âÜóç äåäïìÝíùí êáé íá ôï åðáíåãêáôáóôÞóåôå.

        +

         

        + + + +

        Äåí ìðïñþ íá óõíäåèþ - áðëþò ìÝíù êïëëçìÝíïò + óôçí ïèüíç óýíäåóçò.

        + +

        Ç ðéï óõíçèéóìÝíç áéôßá ãé' áõôü åßíáé üôé ï äéêüò óïõ õðïëïãéóôÞò + (ü÷é ï server ôïõ Moodle) Ý÷åé Ýíá firewall ðïõ áöáéñåß ðëçñïöïñßåò áðü ôïí + browser.

        + +

        Áõôü ìðïñåß íá äéïñèùèåß ãéá ïðïéïíäÞðïôå ÷ñçóéìïðïéåß ôïí server + åðåîåñãÜæïíôáò ôç óåëßäá äéáìüñöùóçò ôïõ Moodle êáé áëëÜæïíôáò ôç ìåôáâëçôÞ + "secureforms" óå "¼÷é".

        + +

        Ìéá áêüìá ðéèáíÞ áéôßá áõôïý ôïõ ðñïâëÞìáôïò åßíáé üôé ôá êåöÜëáéá + äåí óõíôïíßæïíôáé óôïí server. Ìðïñåßò íá ôï ôåóôÜñåéò áõôü ïíïìÜæïíôáò ôï script + http://yourserver/moodle/lib/session-test.php.

        +

         

        + + + +

        Ðþò ìðïñþ íá êÜíù backup óôï site ôïõ + Moodle;

        + +

        ÐñÝðåé íá Ý÷åéò áíôßãñáöá äýï âáóéêþí ðñáãìÜôùí: ôçò âÜóçò äåäïìÝíùí + êáé ôùí öïñôùìÝíùí áñ÷åßùí. Ôá Moodle scripts äåí åßíáé ôüóï óçìáíôéêÜ, åöüóïí + ìðïñåßò ðÜíôá íá öïñôþóåéò Ýíá êáéíïýñéï áñ÷åßï.

        + +

        ÕðÜñ÷ïõí ðïëëïß ôñüðïé ãéá íá êÜíåéò ôÝôïéá backups. Åäþ åßíáé + Ýíá äéÜãñáììá åíüò ìéêñïý script ðïõ ìðïñåßò íá ôñÝîåéò óôï Unix ãéá íá Ý÷åéò + backup ôçò âÜóçò äåäïìÝíùí (åßíáé êáëü íá Ý÷åéò Ýíá ôÝôïéï script íá ôñÝ÷åé + êáèçìåñéíÜ ìÝóù åíüò cron task)

        +

        cd /my/backup/directory

        +

        mv moodle-database.sql.gz moodle-database-old.sql.gz

        +

        mysqldump -h example.com -u myusername --password=mypassword -C -Q -e -a mydatabasename > moodle-database.sql

        +

        gzip moodle-database.sql

        +

        Ãéá ôá áñ÷åßá, ìðïñåßò íá ÷ñçóéìïðïéåßò rsync ôáêôéêÜ ãéá íá + áíôéãñÜøåéò ìüíï ôá áëëáãìÝíá áñ÷åßá óå Ýíáí Üëëï host:

        +

        rsync -auvtz --delete -e ssh mysshusername@example.com:/my/server/directory + /my/backup/directory/

        +

         

        + + +

        Ãéáôß ôï site ôïõ Moodle äåí ìïõ åìöáíßæåé + óùóôÜ þñá & çìåñïìçíßá;

        + +

        ÊÜèå ãëþóóá áðáéôåß Ýíáí óõãêåêñéìÝíï êþäéêá (ðïõ ïíïìÜæåôáé + locale êþäéêáò) ãéá íá ìðïñïýí ïé çìåñïìçíßåò íá åìöáíßæïíôáé + óùóôÜ. Ôá ãëùóóéêÜ ðáêÝôá ðåñéÝ÷ïõí ðñïåðéëåãìÝíïõò êþäéêåò, áëëÜ ìåñéêÝò öïñÝò + áõôïß äåí äïõëåýïõí óôïõò servers ôùí Windows.

        +

        Ìðïñåßò íá âñåéò ôïõò óùóôïýò locale êþäéêåò ãéá ôá Windows + ó' áõôÝò ôéò äýï óåëßäåò: Êùäéêïß + ãëþóóáò êáé Êùäéêïß + ×þñáò/ðåñéï÷Þò.(ð.÷. "esp_esp" ãéá éóðáíéêÜ)

        +

        Áõôïß ïé íÝïé locale êþäéêåò ìðïñïýí íá åéóá÷èïýí áðü ôç óåëßäá + Admin -> Configure -> Variables, üðïõ áíôéêáèéóôïýí áõôïýò óôï Þäç åðéëåãìÝíï + ãëùóóéêü ðáêÝôï.

        +

         

        +

        Áíôßãñáöá ôùí email ìïõ äåí óôÝëíïíôáé + áðü ôá forums ìïõ.

        +

        ÐñÝðåé íá ñõèìßóåéò ôï cron óùóôÜ áí èåò ôï + Moodle íá óôÝëíåé áõôüìáôá email áðü forums, çìåñÞóéåò äñáóôçñéüôçôåò, áíáèÝóåéò + åñãáóéþí ê.ëð. ÁõôÞ ç ßäéá äéáäéêáóßá ðñáãìáôïðïéåß Ýíáí áñéèìü åêêáèáñéóôéêþí + åñãáóéþí üðùò äéáãñáöÞ ðáëéþí áíåðéâåâáßùôùí ÷ñçóôþí, äéáãñáöÞ ðáëéþí ìáèçôþí + ê.ëð.

        +

        ÂáóéêÜ, ÷ñåéÜæåôáé ìéá äéáäéêáóßá ãéá ôï script http://yoursite/admin/cron.php. + Äåßôå ôï êåöÜëáéï cron óôï åã÷åéñßäéï ÅãêáôÜóôáóçò.

        +

         

        +

         

        + + + +
        + +

        Suggest + + a new FAQ (include the answer!)

        + +
        + +

        Thanks to John Eyre for helping to maintain this + + FAQ.

        + +

        Moodle Documentation

        + +

        Version: $Id: faq.html,v 1.6 2003/03/30 13:54:28 + + moodler Exp $

        + + + + + + diff --git a/lang/el/docs/features.html b/lang/el/docs/features.html index 78e7b98fb26..3f6d16eac36 100644 --- a/lang/el/docs/features.html +++ b/lang/el/docs/features.html @@ -1,164 +1,163 @@ - - - - Ôåêìçñßùóç ôïõ Moodle: Õðüâáèñï - - - + + + + Ôåêìçñßùóç ôïõ Moodle: Õðüâáèñï + + + -

        ×áñÜêôçñéóôéêÜ

        +

        ×áñÜêôçñéóôéêÜ

        Ôï Moodle åßíáé Ýíá åíåñãü êáé áíáðôõóóüìåíï ðñïúüí. ÁõôÞ ç óåëßäá ðåñéÝ÷åé ìéá ëßóôá ìå ôá ðïëëÜ ÷áñáêôçñéóôéêÜ ðïõ ðåñéÝ÷åé:

        ÃåíéêÞ Ó÷åäßáóç

        -
          -
        • Promotes a social constructionist pedagogy (collaboration, activities, critical - reflection, etc)
        • -
        • ÊáôÜëëçëï ãéá 100% äéáäéêôõáêÜ ìáèÞìáôá êáèþò êáé ãéá óõìðëÞñùóç ôçò äéáäéêáóßáò ìÜèçóçò ðñüóùðï ìå ðñüóùðï -
        • Áðëü, åëáöñý, áðïäïôéêü, óõìâáôü, low-tech browser interface
        • -
        • Åýêïëï íá åãêáôáóôáèåß ó÷åäüí óå üëåò ôéò ðëáôöüñìåò ðïõ õðïóôçñßæïõí PHP. ÈÝëåé ìüíï ìéá âÜóç äåäïìÝíùí.
        • -
        • Full database abstraction supports all major brands of database (except - for initial table definition)
        • -
        • Ç ëßóôá ìáèçìÜôùí äåß÷íåé ðåñéãñáöÞ ãéá êÜèå ìÜèçìá ðïõ õðÜñ÷åé óôïí server, óõìðåñéëáìâáíïìÝíïõ - êáé ðñüóâáóçò óôïõò åðéóêÝðôåò.
        • -
        • ¸ìöáóç óôçí áóöÜëåéá óå üëá ôá óçìåßá. Ïé öüñìåò åëÝã÷ïíôáé üëåò, ôá äåäïìÝíá åðéêõñþíïíôáé, - ôá cookies êñõðôïãñáöïýíôáé êëð.
        • -
        +
          +
        • Promotes a social constructionist pedagogy (collaboration, activities, critical + reflection, etc)
        • +
        • ÊáôÜëëçëï ãéá 100% äéáäéêôõáêÜ ìáèÞìáôá êáèþò êáé ãéá óõìðëÞñùóç ôçò äéáäéêáóßáò ìÜèçóçò ðñüóùðï ìå ðñüóùðï +
        • Áðëü, åëáöñý, áðïäïôéêü, óõìâáôü, low-tech browser interface
        • +
        • Åýêïëï íá åãêáôáóôáèåß ó÷åäüí óå üëåò ôéò ðëáôöüñìåò ðïõ õðïóôçñßæïõí PHP. ÈÝëåé ìüíï ìéá âÜóç äåäïìÝíùí.
        • +
        • Full database abstraction supports all major brands of database (except + for initial table definition)
        • +
        • Ç ëßóôá ìáèçìÜôùí äåß÷íåé ðåñéãñáöÞ ãéá êÜèå ìÜèçìá ðïõ õðÜñ÷åé óôïí server, óõìðåñéëáìâáíïìÝíïõ + êáé ðñüóâáóçò óôïõò åðéóêÝðôåò.
        • +
        • ¸ìöáóç óôçí áóöÜëåéá óå üëá ôá óçìåßá. Ïé öüñìåò åëÝã÷ïíôáé üëåò, ôá äåäïìÝíá åðéêõñþíïíôáé, + ôá cookies êñõðôïãñáöïýíôáé êëð.
        • +

        Äéá÷åßñéóç ôçò Éóôïóåëßäáò

        -
          -
        • Ç éóôïóåëßäá äéá÷åéñßæåôáé áðü Ýíá äéá÷åéñéóôÞ ï ïðïßïò ïñßæåôáé êáôÜ ôçí äéÜñêåéá ôçò åãêáôÜóôáóçò
        • -
        • ÅíóùìáôùìÝíá èÝìáôá åðéôñÝðïõí óôïí äéá÷åéñéóôÞ íá áëëÜæåé ôá ÷ñþìáôá ôçò éóôïóåëßäáò, ôéò ãñáììáôïóåéñÝò, ôçí åìöÜíéóç - êôë. ãéá íá ôáéñéÜæïõí óôéò ôïðéêÝò áíÜãêåò
        • -
        • ÖôéáãìÝíá modules äñáóôçñéïôÞôùí ìðïñïýí íá ðñïóôåèïýí óôá õðÜñ÷ïíôá ôïõ Moodle
        • -
        • ÖôéáãìÝíá ðáêÝôá ãëùóóþí åðéôñÝðïõí ðëÞñç ðñïóáñìïãÞ óå êÜèå ôïðéêÞ ãëþóóá. ÁõôÜ ìðïñïýí íá áëëá÷ôïýí +
            +
          • Ç éóôïóåëßäá äéá÷åéñßæåôáé áðü Ýíá äéá÷åéñéóôÞ ï ïðïßïò ïñßæåôáé êáôÜ ôçí äéÜñêåéá ôçò åãêáôÜóôáóçò
          • +
          • ÅíóùìáôùìÝíá èÝìáôá åðéôñÝðïõí óôïí äéá÷åéñéóôÞ íá áëëÜæåé ôá ÷ñþìáôá ôçò éóôïóåëßäáò, ôéò ãñáììáôïóåéñÝò, ôçí åìöÜíéóç + êôë. ãéá íá ôáéñéÜæïõí óôéò ôïðéêÝò áíÜãêåò
          • +
          • ÖôéáãìÝíá modules äñáóôçñéïôÞôùí ìðïñïýí íá ðñïóôåèïýí óôá õðÜñ÷ïíôá ôïõ Moodle
          • +
          • ÖôéáãìÝíá ðáêÝôá ãëùóóþí åðéôñÝðïõí ðëÞñç ðñïóáñìïãÞ óå êÜèå ôïðéêÞ ãëþóóá. ÁõôÜ ìðïñïýí íá áëëá÷ôïýí ÷ñçóéìïðïéþíôáò êåéìåíïöñÜöï âáóéóìÝíï óôï äßêôõï. Åðß ôïõ ðáñüíôïò õðÜñ÷ïõí ðáêÝôá ãëùóóþí - ãéá ðåñéóóüôåñåò áðï 19 ãëþóóåò.
          • -
          • Ï êþäéêáò åßíáé ãñáììÝíïò êáèáñÜ óå PHP êÜôù áðï GPL Üäåéá - åýêïëï íá ôñïðïðïéçèåß - ãéá íá êáëýøåé ôéò áíÜãêåò óáò
          • -
          + ãéá ðåñéóóüôåñåò áðï 19 ãëþóóåò.
        • +
        • Ï êþäéêáò åßíáé ãñáììÝíïò êáèáñÜ óå PHP êÜôù áðï GPL Üäåéá - åýêïëï íá ôñïðïðïéçèåß + ãéá íá êáëýøåé ôéò áíÜãêåò óáò
        • +

        Äéá÷åßñéóç ×ñçóôþí

        -
          -
        • Óêïðüò åßíáé íá ìåéùèåß ç åìðëïêÞ ôïõ äéá÷åéñéóôÞ óôï åëÜ÷éóôï, åíþ íá äéáôçñåßôáé õøçëÞ áóöÜëåéá
        • -
        • Õðïóôçñßæåé Ýíá åýñïò áðï ìç÷áíéóìïýò ðéóôïðïßçóçò ìÝóù åíóùìáôïìÝíùí modules ðéóôïðïßçóçò, - ðïõ åðéôñÝðïõí åýêïëç åíïðïßçóç ìå õðÜñ÷ïíôá óõóôÞìáôá.
        • -
        • ÂáóéêÞ ìÝèïäïò ãéá email: ïé ìáèçôÝò ìðïñïýí íá äçìéïõñãïýí ôïõò äéêïýò ôïõò ëïãáñéáóìïýò ÷ñçóôþí. Ïé Email - äéåõèýíóåéò åðáëçèåýïíôáé óôÝëíïíôáò åðéâåâáßùóç.
        • -
        • ÌÝèïäïò LDAP: ïé ëïãáñéáóìïß ÷ñçóôþí ìðïñïýí íá åëåã÷ôïýí ìÝóá áðï Ýíá LDAP server. Ï äéá÷åéñéóôÞò ìðïñåß - íá êáèïñßóåé ðïéá ðåäßá èá ÷ñçóéìïðïéçèïýí.
        • -
        • IMAP, POP3, NNTP: ëïãáñéáóìïß ÷ñçóôþí åëÝã÷ïíôáé ãéá mail Þ news server. - SSL, ðïéóôïðïéÞóåéò êáé TLS õðïóôçñßæïíôáé.
        • -
        • ÅîùôåñéêÝò ÂÜóåéò ÄåäïìÝíùí: êÜèå âÜóç äåäïìÝíùí ðïõ ðåñéÝ÷åé ôïõëÜ÷éóôïí äõï ðåäßá ìðïñåß íá ÷ñçóéìïðïéçèåß - óáí ìéá åîùôåñéêÞ ðçãÞ ðéóôïðïßçóçò.
        • -
        • ÊÜèå ðñüóùðï ÷ñåéÜæåôáé ìüíï Ýíá ëïãáñéáóìü ãéá ïëüêëçñï ôï server - ÊÜèå ëïãáñéáóìüò ìðïñåß íá Ý÷åé - äéáöïñåôéêÜ äéêáéþìáôá
        • -
        • ¸íáò ëïãáñéáóìüò äéá÷åéñéóôÞ åëÝã÷åé ôçí äçìéïõñãßá ìáèçìÜôùí êáé äçìéïõñãåß êáèçãçôÝò áíáèÝôïíôáò - ÷ñÞóôåò óôá ìáèÞìáôá
        • -
        • ÁóöÜëåéá - Ïé êáèçãçôÝò ìðïñïýí íá ðñïóèÝóïõí Ýíá "enrolment key" óôï ìÜèçìá ôïõò ãéá íá êüâïõí ôçí ðñüóâáóç óå - üóïõò äåí åßíáé ìáèçôÝò. Ìðïñïýí íá äþóïõí áõôü ôï êëåéäß åßôå ðñïóùðéêÜ åßôå ìÝóù ôïõ ðñïóùðéêïý e-mail êôë
        • -
        • Ïé êáèçãçôÝò ìðïñïýí ùá äéáãñÜøïõí ìáèçôÝò åÜí ôï åðéèõìïýí, äéáöïñåôéêÜ äéáãñÜöïíôáé áõôüìáôá áöïý ðåñÜóåé ìéá - óõãêåêñéìÝíç ðåñßïäïò üðïõ ïé ìáèçôÝò åßíáé áíåíåñãïß (êáèïñßæåôáé áðï ôïí äéá÷åéñéóôÞ)
        • -
        • Ïé ìáèçôÝò åíèáññýíïíôáé íá öôéÜîïõí Ýíá äéáäéêôõáêü ðñïóùðéêü ðñïößë ðïõ íá ðåñéÝ÷åé öùôïãñáößá, ðåñéãñáöÞ êôë. - Ïé äéåõèýíóåéò e-mail ìðïñïýí íá ìçí åìöáíßæïíôáé áí ÷ñåéÜæåôáé.
        • -
        • ÊÜèå ÷ñÞóôçò ìðïñåß íá êáèïñßóåé óå ðïßá æþíç-þñáò áíÞêåé. ÊÜèå çìåñïìçíßá óôï Moodle ìåôáöñÜæåôáé óôçí óõãêåêñéìÝíç - æþíç-þñáò (ð.÷. çìåñïìçíßåò áðïóôïëÞò, áíÜèåóç çìåñïìçíéþí ïöåéëþí êôë)
        • -
        • ÊÜèå ÷ñÞóôçò ìðïñåß íá äéáëÝãåé ôçí ãëþóóá ðïõ èá ÷ñçóéìïðïéåß ãéá ôçí åðéöÜíåéá åñãáóßáò ôïõ Moodle (ÁããëéêÜ, - ÃáëëéêÜ, ÃåñìáíéêÜ, ÉóðáíéêÜ, ÐïñôïãáëéêÜ etc)
        • -
        +
          +
        • Óêïðüò åßíáé íá ìåéùèåß ç åìðëïêÞ ôïõ äéá÷åéñéóôÞ óôï åëÜ÷éóôï, åíþ íá äéáôçñåßôáé õøçëÞ áóöÜëåéá
        • +
        • Õðïóôçñßæåé Ýíá åýñïò áðï ìç÷áíéóìïýò ðéóôïðïßçóçò ìÝóù åíóùìáôïìÝíùí modules ðéóôïðïßçóçò, + ðïõ åðéôñÝðïõí åýêïëç åíïðïßçóç ìå õðÜñ÷ïíôá óõóôÞìáôá.
        • +
        • ÂáóéêÞ ìÝèïäïò ãéá email: ïé ìáèçôÝò ìðïñïýí íá äçìéïõñãïýí ôïõò äéêïýò ôïõò ëïãáñéáóìïýò ÷ñçóôþí. Ïé Email + äéåõèýíóåéò åðáëçèåýïíôáé óôÝëíïíôáò åðéâåâáßùóç.
        • +
        • ÌÝèïäïò LDAP: ïé ëïãáñéáóìïß ÷ñçóôþí ìðïñïýí íá åëåã÷ôïýí ìÝóá áðï Ýíá LDAP server. Ï äéá÷åéñéóôÞò ìðïñåß + íá êáèïñßóåé ðïéá ðåäßá èá ÷ñçóéìïðïéçèïýí.
        • +
        • IMAP, POP3, NNTP: ëïãáñéáóìïß ÷ñçóôþí åëÝã÷ïíôáé ãéá mail Þ news server. + SSL, ðïéóôïðïéÞóåéò êáé TLS õðïóôçñßæïíôáé.
        • +
        • ÅîùôåñéêÝò ÂÜóåéò ÄåäïìÝíùí: êÜèå âÜóç äåäïìÝíùí ðïõ ðåñéÝ÷åé ôïõëÜ÷éóôïí äõï ðåäßá ìðïñåß íá ÷ñçóéìïðïéçèåß + óáí ìéá åîùôåñéêÞ ðçãÞ ðéóôïðïßçóçò.
        • +
        • ÊÜèå ðñüóùðï ÷ñåéÜæåôáé ìüíï Ýíá ëïãáñéáóìü ãéá ïëüêëçñï ôï server - ÊÜèå ëïãáñéáóìüò ìðïñåß íá Ý÷åé + äéáöïñåôéêÜ äéêáéþìáôá
        • +
        • ¸íáò ëïãáñéáóìüò äéá÷åéñéóôÞ åëÝã÷åé ôçí äçìéïõñãßá ìáèçìÜôùí êáé äçìéïõñãåß êáèçãçôÝò áíáèÝôïíôáò + ÷ñÞóôåò óôá ìáèÞìáôá
        • +
        • ÁóöÜëåéá - Ïé êáèçãçôÝò ìðïñïýí íá ðñïóèÝóïõí Ýíá "enrolment key" óôï ìÜèçìá ôïõò ãéá íá êüâïõí ôçí ðñüóâáóç óå + üóïõò äåí åßíáé ìáèçôÝò. Ìðïñïýí íá äþóïõí áõôü ôï êëåéäß åßôå ðñïóùðéêÜ åßôå ìÝóù ôïõ ðñïóùðéêïý e-mail êôë
        • +
        • Ïé êáèçãçôÝò ìðïñïýí ùá äéáãñÜøïõí ìáèçôÝò åÜí ôï åðéèõìïýí, äéáöïñåôéêÜ äéáãñÜöïíôáé áõôüìáôá áöïý ðåñÜóåé ìéá + óõãêåêñéìÝíç ðåñßïäïò üðïõ ïé ìáèçôÝò åßíáé áíåíåñãïß (êáèïñßæåôáé áðï ôïí äéá÷åéñéóôÞ)
        • +
        • Ïé ìáèçôÝò åíèáññýíïíôáé íá öôéÜîïõí Ýíá äéáäéêôõáêü ðñïóùðéêü ðñïößë ðïõ íá ðåñéÝ÷åé öùôïãñáößá, ðåñéãñáöÞ êôë. + Ïé äéåõèýíóåéò e-mail ìðïñïýí íá ìçí åìöáíßæïíôáé áí ÷ñåéÜæåôáé.
        • +
        • ÊÜèå ÷ñÞóôçò ìðïñåß íá êáèïñßóåé óå ðïßá æþíç-þñáò áíÞêåé. ÊÜèå çìåñïìçíßá óôï Moodle ìåôáöñÜæåôáé óôçí óõãêåêñéìÝíç + æþíç-þñáò (ð.÷. çìåñïìçíßåò áðïóôïëÞò, áíÜèåóç çìåñïìçíéþí ïöåéëþí êôë)
        • +
        • ÊÜèå ÷ñÞóôçò ìðïñåß íá äéáëÝãåé ôçí ãëþóóá ðïõ èá ÷ñçóéìïðïéåß ãéá ôçí åðéöÜíåéá åñãáóßáò ôïõ Moodle (ÁããëéêÜ, + ÃáëëéêÜ, ÃåñìáíéêÜ, ÉóðáíéêÜ, ÐïñôïãáëéêÜ etc)
        • +

        Äéá÷åßñéóç ÌáèçìÜôùí

        -
          -
        • Ï êáèçãçôÞò Ý÷åé ôïí ðëÞñç Ýëåã÷ï ðÜíù óå üëåò ôéò ñõèìßóåéò åíüò ìáèÞìáôïò
        • -
        • Ç åðéëïãÞ ôïõ ó÷Þìáôïò ôùí ìáèçìÜôùí üðùò êÜèå åâäïìÜäá, ìå âÜóç ôï èÝìá Þ êïéíùíéêü ó÷Þìá åóôéáæüìåíï óôçí óõæÞôçóç
        • -
        • Åýêáìðôïò ðßíáêáò äñáóôçñéïôÞôùí ôùí ìáèçìÜôùí - ÏìÜäåò ÓõæçôÞóåùí, Journals, ÅñùôÞìáôá, ÐçãÝò, - ÅðéëïãÝò, ¸ñåõíåò, ÁíáèÝóåéò.
        • -
        • Ðñüóöáôåò áëëáãÝò óôï ìÜèçìá áðü ôçí ôåëåõôáßá ðéóôïðïéçìÝíç åßóïäï ìðïñïýí íá ðáñïõóéÜæïíôáé óôçí áñ÷éêÞ óåëßäá - ôïõ ìáèÞìáôïò - ç âïÞèåéá äßíåé ôçí áßóèçóç ôçò êïéíüôçôáò
        • -
        • Ïé ðåñéóóüôåñåò ðåñéï÷Ýò åéóáãùãÞò êåéìÝíïõ (ðçãÝò, ïìÜäåò óõæçôÞóåùí êáé áíáñôÞóåùí, journal entries etc) ìðïñïýí íá áëëá÷ôïýí - ÷ñçóéìïðïéüíôáò Ýíá åìðåäùìÝíï êåéìåíïãñÜöï WYSIWYG HTML
        • -
        • ¼ëïé ïé âáèìïß ãéá ôéò ïìÜäåò óõæçôÞóåùí, ôá Journals, ôá ÅñùôÞìáôá êáé ôéò áíáèÝóåéò ìðïñïýí íá åìöáíéóôïýí óå - ìéá óåëßäá (êáé íá ãßíïõí download óáí Ýíá áñ÷åßï ðñïãñÜììáôïò ëïãéóôéêþí öýëëùí)
        • -
        • ÐëÞñçò êáôáíïìç êáé logging ôùí ÷ñçóôþí - áíáöïñÝò äñáóôçñéïôÞôùí ãéá êáèå ÷ñÞóôç åßíáé äéáèÝóéìåò ìå ãñáöéêÝò áðåéêïíßóåéò +
            +
          • Ï êáèçãçôÞò Ý÷åé ôïí ðëÞñç Ýëåã÷ï ðÜíù óå üëåò ôéò ñõèìßóåéò åíüò ìáèÞìáôïò
          • +
          • Ç åðéëïãÞ ôïõ ó÷Þìáôïò ôùí ìáèçìÜôùí üðùò êÜèå åâäïìÜäá, ìå âÜóç ôï èÝìá Þ êïéíùíéêü ó÷Þìá åóôéáæüìåíï óôçí óõæÞôçóç
          • +
          • Åýêáìðôïò ðßíáêáò äñáóôçñéïôÞôùí ôùí ìáèçìÜôùí - ÏìÜäåò ÓõæçôÞóåùí, Journals, ÅñùôÞìáôá, ÐçãÝò, + ÅðéëïãÝò, ¸ñåõíåò, ÁíáèÝóåéò.
          • +
          • Ðñüóöáôåò áëëáãÝò óôï ìÜèçìá áðü ôçí ôåëåõôáßá ðéóôïðïéçìÝíç åßóïäï ìðïñïýí íá ðáñïõóéÜæïíôáé óôçí áñ÷éêÞ óåëßäá + ôïõ ìáèÞìáôïò - ç âïÞèåéá äßíåé ôçí áßóèçóç ôçò êïéíüôçôáò
          • +
          • Ïé ðåñéóóüôåñåò ðåñéï÷Ýò åéóáãùãÞò êåéìÝíïõ (ðçãÝò, ïìÜäåò óõæçôÞóåùí êáé áíáñôÞóåùí, journal entries etc) ìðïñïýí íá áëëá÷ôïýí + ÷ñçóéìïðïéüíôáò Ýíá åìðåäùìÝíï êåéìåíïãñÜöï WYSIWYG HTML
          • +
          • ¼ëïé ïé âáèìïß ãéá ôéò ïìÜäåò óõæçôÞóåùí, ôá Journals, ôá ÅñùôÞìáôá êáé ôéò áíáèÝóåéò ìðïñïýí íá åìöáíéóôïýí óå + ìéá óåëßäá (êáé íá ãßíïõí download óáí Ýíá áñ÷åßï ðñïãñÜììáôïò ëïãéóôéêþí öýëëùí)
          • +
          • ÐëÞñçò êáôáíïìç êáé logging ôùí ÷ñçóôþí - áíáöïñÝò äñáóôçñéïôÞôùí ãéá êáèå ÷ñÞóôç åßíáé äéáèÝóéìåò ìå ãñáöéêÝò áðåéêïíßóåéò êáé ëåðôïìÝñåéåò ãéá êÜèå module (ôåëåõôáßá ðñüóâáóç, ðüóåò öïñÝò Ý÷åé äéáâáóôåß) êáèþò êáé Ýíá ëåðôïìåñÝò éóôïñéêü ãéá êÜèå ÷ñÞóôç ðïõ åìðëÝêåôå óôï ìÜèçìá üðùò äçìïóéåýóåéò, åéóáãùãÝò õìåñïëïãßïõ êôë - óå ìéá óåëßäá.
          • -
          • Åíïðïßçóç Mail - áíôßãñáöá áðï ôéò äçìïóéåýóåéò óôéò ïìÜäåò óõæçôÞóåùí, áíÜäñáóç ôïõ êáèçãçôÞ êôë ìðïñïýí íá óôáëïýí ìå maill - ìïñöÞò HTML Þ êáèáñïý êåéìÝíïõ.
          • -
          -Module Åñãáóéþí -
            -
          • Ïé åñãáóßåò ìðïñïýí íá êáèïñéóôïýí ìå ìéá áñìüäéá çìåñïìçíßá êáé Ýíá ìÝãéóôï âáèìü.
          • -
          • Ïé ìáèçôÝò ìðïñïýí íá áíåâÜóïõí (upload) ôéò åñãáóßåò ôïõò (ïðïéïõäÞðïôå ôýðïõ áñ÷åßï) óôïí server - - óçìåéþíåôáé ç áêñéâÞò þñá êáé çìåñïìçíßá üðïõ áíÝâçêáí.
          • -
          • ÁñãïðïñçìÝíåò åñãáóßåò åðéôñåüðïíôáé, áëëÜ ç äéÜñêåéá ôçò êáèõóôÝñçóçò öáßíåôáé êáèáñÜ óôïí êáèçãçôÞ
          • -
          • Ãéá êÜèå åñãáóßá îå÷ùñéóôÜ, üëç ç ôÜîç ìðïñåß íá êáèïñéóôåß (âáèìüò êáé ó÷üëåéá) - óå ìéá öïñìá ìéáò óåëßäáò.
          • -
          • Ç áíÜäñáóç ôïõ êáèçãçôÞ ðñïóáñôåßôå óôçí óåëßäá ôùí åñãáóéþí ãéá êÜèå ìáèçôÞ, êáé ç - åéäïðïßçóç óôÝëíåôáé ìå maill.
          • -
          • Ï êáèçãçôÞò ìðïñåß íá åðéëÝîåé íá åðéôñáðåß íá îáíáóôáëëïýí åñãáóßåò áöïý Ý÷ïõí âáèìïëïãçèåß - (ãéá áíáâáèìïëüãçóç)
          • -
          -

          Module ÅðéëïãÞò

          -
            -
          • ¼ðùò Ýíá äçìïøÞöéóìá. Ìðïñåß íá ÷ñçóéìïðïéåéèåß åßôå ãéá íá øçöéóôåß êÜôé, Þ ãéá íá ðÜñåé áíÜäñáóç - ï êáèçãçôÞò áðï üëïõò ôïõò ìáèçôÝò (ð.÷. óõãêáôÜèåóç Ýñåõíáò)
          • -
          • Ï êáèçãçôÞò âëÝðåé äéáéóèçôéêÜ üøåéò ðéíÜêùí ìå áõôÜ ðïõ åðéëÝãåé
          • -
          -

          Module ÏìÜäùí ÓõæçôÞóåùí

          -
            -
          • Äéáöïñåôéêïß ôýðï áðï ïìÜäåò óõæçôÞóåùí åßíáé äéáèÝóéìåò, üðùò ìüíï ãéá êáèçãçôÝò, íÝá êÜèå ìáèÞìáôïò, - áíïé÷ôÝò ãéá üëïõò, êáé ãéá ìéá óõæÞôçóç áíÜ ÷ñÞóôç.
          • -
          • ¼ëåò ïé äçìïóéåýóåéò Ý÷ïõí óáí óõíçììÝíï ôçí öïôùãñáößá ôïõ áðïóôïëÝá.
          • -
          • Ïé óõæçôÞóåéò ìðïñïýí íá åìöáíéóôïýí åìöùëåõìÝíåò, åðßðåäá Þ ìéá óõæÞôçóç áíá ÷ñÞóôç, ïé ðáëéüôåñåò Þ - ïé ðéï êáéíïýñãéåò ðñþôá.
          • -
          • ÁíåîÜñôçôåò ïìÜäåò óõæçôÞóåùí ìðïñïýí íá ðñïóçðïãñáöïýí áðï ïðïéïíäÞðïôå Ýôóé þóôå ôá áíôßãñáöá - íá ðñïùèïýíôáé ìÝóù email, Þ ï êáèçãçôÞò ìðïñåß íá áðáéôÞóåé åããñáöÞ áðï üëïõò
          • -
          • Ï êáèçãçôÞò ìðïñåß íá äéáëÝîåé íá ìçí åðéôñÝðåé áðáíôÞóåéò (ð.÷. ãéá ìéá ïìÜäá óõæçôÞóåùí - ðïõ åßíáé ìüíï ãéá áíáêïéíþóåéò)
          • -
          -Journal Module -
            -
          • Ôá Journals åßíáé éäéáßôåñá ìáôåîý ìáèçôÞ êáé êáèçãçôÞ.
          • -
          • ÊÜèå åããñáöÞ óôï journal ìðïñåß íá êáôåõèõíèåß áðï ìéá áíïéêôÞ åñþôçóç.
          • -
          • Ãéá êÜèå åéäéêÞ åããñáöÞ óôï journal,üëç ç ôÜîç ìðïñåß íá êáèïñéóôåß óå ìéá - öüñìá ìéáò óåëßäáò the whole class can be assessed on one
          • -
          • Ç áíÜäñáóç ôùí êáèçãçôþí ðñïóáñôÜôáé óôçí óåëßäá åããñáöþí ôïõ journal, êáé ìéá åéäïðïßçóç - óôÝëíåôáé ìå e-mail.
          • -
          -

          Module ÅñùôçìÜôùí

          -
            -
          • Ïé êáèçãçôÝò ìðïñïýí íá ïñßóïõí ìéá âÜóç äåäïìÝíùí ìå åñùôÞóåéò ãéá íá åðáíá÷ñçóéìïðïéåßôáé - óå äéáöïñåôéêÝò ïìÜäåò åñùôçìÜôùí
          • -
          • Ôá åñùôÞìáôá âáèìïëïãïýíôáé áõôüìáôá, êáé ìðïñïýí íá áíáâáèìïëïãçèïýí åÜí ïé åñùôÞóåéò - áëëá÷ôïýí
          • -
          • Ôá åñùôÞìáôá ðñ[åðåé íá Ý÷ïõí Ýíá ðåñéïñéóìÝíï ÷ñïíéêü ðáñÜèõñï Ýîù áðï ôï ïðïßï äåí èá åßíáé äéáèÝóéìá
          • -
          • Ï êáèçãçôÞò Ý÷åé ôçí åðéëïãÞ, ôá åñùôÞìáôá íá ðñïóðáèïýíôáé ðïëëÝò öïñÝò êáé ìðïñåß íá åìöáíßæåé ó÷üëåéá - Þ êáé ôéò áðáíôÞóåéò
          • -
          • Ïé åñùôÞóåéò åðéôñÝðïõí HTML êáé åéêüíåò
          • -
          • ÅñùôÞóåéò ðïëëáðëÞò åðéëïãÞò õðïóôçñßæïõí ìïíÝò Þ ðïëëáðëÝò áðáíôÞóåéò
          • -
          • ÌéêñÝò áðáíôÞóåéò óôéò åñùôÞóåéò (ìåñéêÝò ëÝîåéò Þ öñÜóåéò)
          • -
          • ÅñùôÞóåéò óùóôïý - ëÜèïõò
          • -
          -

          Module Ðçãþí

          -
            -
          • Õðïóôçñßæåé ôçí åìöÜíéóç çëåêôñïíéêïý ðåñéå÷ïìÝíïõ
          • -
          • Ôá áñ÷åßá ìðïñïýí íá áíåâïýí êáé íá äéá÷åéñßæïíôáé óôïí server, Þ íá äçìéïõñãçèïýí "óôïí áÝñá" - ÷ñçóéìïðïéüíôáò äéêôõáêÝò öüñìåòs (êåßìåíï Þ HTML)
          • -
          • Åîùôåñéêü ðåñéå÷üìåíï óôï äéáäßêôõï ìðïñåß íá óõíäåèåß óõíäåèåß ìÝóù links Þ íá åíóùìáôùèåß óôçí - åìöÜíéóç ôïõ ìáèÞìáôïò.
          • -
          -Module ¸ñåõíáò -
            -
          • Built-in Ýñåõíåò üðùò ïé (COLLES, ATTLS) Ý÷ïõí áðïäåé÷ôåß óáí åñãáëåßá ãéá áíÜëõóç äéáäéêôõáêþí ìáèçìÜôùí
          • -
          • ÄéáäéêôõáêÝò áíáöïñÝò åñåõíþí åßíáé ðÜíôá äéáèÝóéìåò, óõìðåñéëáìâáíïìÝíïõ êáé ðïëëþí ãñáöéêþí. Ôá äåäïìÝíá ìðïñïýí - íá ãßíïõí download óáí öýëëï åñãáóßáò Excel Þ óáí CSV áñ÷åßï êåéìÝíïõ.
          • -
          • Ôï ãñáöéêü ðåñéâÜëëïí ôçò Ýñåõíáò áðïôñÝðåé ìéóïôåëåéùìÝíåò Ýñåõíåò.
          • -
          • ÁíÜäñáóç ðáñÝ÷åôáé óôïõò ìáèçôÝò âÜóç ôùí áðïôåëåóìÜôùí ôïõò óõãêñéíüìåíá ìå ôï ìÝóï üñï ôçò ôÜîçò
          • -
          + óå ìéá óåëßäá.
        • +
        • Åíïðïßçóç Mail - áíôßãñáöá áðï ôéò äçìïóéåýóåéò óôéò ïìÜäåò óõæçôÞóåùí, áíÜäñáóç ôïõ êáèçãçôÞ êôë ìðïñïýí íá óôáëïýí ìå maill + ìïñöÞò HTML Þ êáèáñïý êåéìÝíïõ.
        • +
        +Module Åñãáóéþí +
          +
        • Ïé åñãáóßåò ìðïñïýí íá êáèïñéóôïýí ìå ìéá áñìüäéá çìåñïìçíßá êáé Ýíá ìÝãéóôï âáèìü.
        • +
        • Ïé ìáèçôÝò ìðïñïýí íá áíåâÜóïõí (upload) ôéò åñãáóßåò ôïõò (ïðïéïõäÞðïôå ôýðïõ áñ÷åßï) óôïí server - + óçìåéþíåôáé ç áêñéâÞò þñá êáé çìåñïìçíßá üðïõ áíÝâçêáí.
        • +
        • ÁñãïðïñçìÝíåò åñãáóßåò åðéôñåüðïíôáé, áëëÜ ç äéÜñêåéá ôçò êáèõóôÝñçóçò öáßíåôáé êáèáñÜ óôïí êáèçãçôÞ
        • +
        • Ãéá êÜèå åñãáóßá îå÷ùñéóôÜ, üëç ç ôÜîç ìðïñåß íá êáèïñéóôåß (âáèìüò êáé ó÷üëåéá) + óå ìéá öïñìá ìéáò óåëßäáò.
        • +
        • Ç áíÜäñáóç ôïõ êáèçãçôÞ ðñïóáñôåßôå óôçí óåëßäá ôùí åñãáóéþí ãéá êÜèå ìáèçôÞ, êáé ç + åéäïðïßçóç óôÝëíåôáé ìå maill.
        • +
        • Ï êáèçãçôÞò ìðïñåß íá åðéëÝîåé íá åðéôñáðåß íá îáíáóôáëëïýí åñãáóßåò áöïý Ý÷ïõí âáèìïëïãçèåß + (ãéá áíáâáèìïëüãçóç)
        • +
        +

        Module ÅðéëïãÞò

        +
          +
        • ¼ðùò Ýíá äçìïøÞöéóìá. Ìðïñåß íá ÷ñçóéìïðïéåéèåß åßôå ãéá íá øçöéóôåß êÜôé, Þ ãéá íá ðÜñåé áíÜäñáóç + ï êáèçãçôÞò áðï üëïõò ôïõò ìáèçôÝò (ð.÷. óõãêáôÜèåóç Ýñåõíáò)
        • +
        • Ï êáèçãçôÞò âëÝðåé äéáéóèçôéêÜ üøåéò ðéíÜêùí ìå áõôÜ ðïõ åðéëÝãåé
        • +
        +

        Module ÏìÜäùí ÓõæçôÞóåùí

        +
          +
        • Äéáöïñåôéêïß ôýðï áðï ïìÜäåò óõæçôÞóåùí åßíáé äéáèÝóéìåò, üðùò ìüíï ãéá êáèçãçôÝò, íÝá êÜèå ìáèÞìáôïò, + áíïé÷ôÝò ãéá üëïõò, êáé ãéá ìéá óõæÞôçóç áíÜ ÷ñÞóôç.
        • +
        • ¼ëåò ïé äçìïóéåýóåéò Ý÷ïõí óáí óõíçììÝíï ôçí öïôùãñáößá ôïõ áðïóôïëÝá.
        • +
        • Ïé óõæçôÞóåéò ìðïñïýí íá åìöáíéóôïýí åìöùëåõìÝíåò, åðßðåäá Þ ìéá óõæÞôçóç áíá ÷ñÞóôç, ïé ðáëéüôåñåò Þ + ïé ðéï êáéíïýñãéåò ðñþôá.
        • +
        • ÁíåîÜñôçôåò ïìÜäåò óõæçôÞóåùí ìðïñïýí íá ðñïóçðïãñáöïýí áðï ïðïéïíäÞðïôå Ýôóé þóôå ôá áíôßãñáöá + íá ðñïùèïýíôáé ìÝóù email, Þ ï êáèçãçôÞò ìðïñåß íá áðáéôÞóåé åããñáöÞ áðï üëïõò
        • +
        • Ï êáèçãçôÞò ìðïñåß íá äéáëÝîåé íá ìçí åðéôñÝðåé áðáíôÞóåéò (ð.÷. ãéá ìéá ïìÜäá óõæçôÞóåùí + ðïõ åßíáé ìüíï ãéá áíáêïéíþóåéò)
        • +
        +Journal Module +
          +
        • Ôá Journals åßíáé éäéáßôåñá ìáôåîý ìáèçôÞ êáé êáèçãçôÞ.
        • +
        • ÊÜèå åããñáöÞ óôï journal ìðïñåß íá êáôåõèõíèåß áðï ìéá áíïéêôÞ åñþôçóç.
        • +
        • Ãéá êÜèå åéäéêÞ åããñáöÞ óôï journal,üëç ç ôÜîç ìðïñåß íá êáèïñéóôåß óå ìéá + öüñìá ìéáò óåëßäáò the whole class can be assessed on one
        • +
        • Ç áíÜäñáóç ôùí êáèçãçôþí ðñïóáñôÜôáé óôçí óåëßäá åããñáöþí ôïõ journal, êáé ìéá åéäïðïßçóç + óôÝëíåôáé ìå e-mail.
        • +
        +

        Module ÅñùôçìÜôùí

        +
          +
        • Ïé êáèçãçôÝò ìðïñïýí íá ïñßóïõí ìéá âÜóç äåäïìÝíùí ìå åñùôÞóåéò ãéá íá åðáíá÷ñçóéìïðïéåßôáé + óå äéáöïñåôéêÝò ïìÜäåò åñùôçìÜôùí
        • +
        • Ôá åñùôÞìáôá âáèìïëïãïýíôáé áõôüìáôá, êáé ìðïñïýí íá áíáâáèìïëïãçèïýí åÜí ïé åñùôÞóåéò + áëëá÷ôïýí
        • +
        • Ôá åñùôÞìáôá ðñ[åðåé íá Ý÷ïõí Ýíá ðåñéïñéóìÝíï ÷ñïíéêü ðáñÜèõñï Ýîù áðï ôï ïðïßï äåí èá åßíáé äéáèÝóéìá
        • +
        • Ï êáèçãçôÞò Ý÷åé ôçí åðéëïãÞ, ôá åñùôÞìáôá íá ðñïóðáèïýíôáé ðïëëÝò öïñÝò êáé ìðïñåß íá åìöáíßæåé ó÷üëåéá + Þ êáé ôéò áðáíôÞóåéò
        • +
        • Ïé åñùôÞóåéò åðéôñÝðïõí HTML êáé åéêüíåò
        • +
        • ÅñùôÞóåéò ðïëëáðëÞò åðéëïãÞò õðïóôçñßæïõí ìïíÝò Þ ðïëëáðëÝò áðáíôÞóåéò
        • +
        • ÌéêñÝò áðáíôÞóåéò óôéò åñùôÞóåéò (ìåñéêÝò ëÝîåéò Þ öñÜóåéò)
        • +
        • ÅñùôÞóåéò óùóôïý - ëÜèïõò
        • +
        +

        Module Ðçãþí

        +
          +
        • Õðïóôçñßæåé ôçí åìöÜíéóç çëåêôñïíéêïý ðåñéå÷ïìÝíïõ
        • +
        • Ôá áñ÷åßá ìðïñïýí íá áíåâïýí êáé íá äéá÷åéñßæïíôáé óôïí server, Þ íá äçìéïõñãçèïýí "óôïí áÝñá" + ÷ñçóéìïðïéüíôáò äéêôõáêÝò öüñìåòs (êåßìåíï Þ HTML)
        • +
        • Åîùôåñéêü ðåñéå÷üìåíï óôï äéáäßêôõï ìðïñåß íá óõíäåèåß óõíäåèåß ìÝóù links Þ íá åíóùìáôùèåß óôçí + åìöÜíéóç ôïõ ìáèÞìáôïò.
        • +
        +Module ¸ñåõíáò +
          +
        • Built-in Ýñåõíåò üðùò ïé (COLLES, ATTLS) Ý÷ïõí áðïäåé÷ôåß óáí åñãáëåßá ãéá áíÜëõóç äéáäéêôõáêþí ìáèçìÜôùí
        • +
        • ÄéáäéêôõáêÝò áíáöïñÝò åñåõíþí åßíáé ðÜíôá äéáèÝóéìåò, óõìðåñéëáìâáíïìÝíïõ êáé ðïëëþí ãñáöéêþí. Ôá äåäïìÝíá ìðïñïýí + íá ãßíïõí download óáí öýëëï åñãáóßáò Excel Þ óáí CSV áñ÷åßï êåéìÝíïõ.
        • +
        • Ôï ãñáöéêü ðåñéâÜëëïí ôçò Ýñåõíáò áðïôñÝðåé ìéóïôåëåéùìÝíåò Ýñåõíåò.
        • +
        • ÁíÜäñáóç ðáñÝ÷åôáé óôïõò ìáèçôÝò âÜóç ôùí áðïôåëåóìÜôùí ôïõò óõãêñéíüìåíá ìå ôï ìÝóï üñï ôçò ôÜîçò
        • +
        -

         

        +

         

        -

        Ôåêìçñßùóç ôïõ Moodle

        -

        Version: $Id: features.html,v 1.2 2001/12/09 - 10:34:19 martin Exp $

        +

        Ôåêìçñßùóç ôïõ Moodle

        +

        Version: $Id: features.html,v 1.2 2001/12/09 + 10:34:19 martin Exp $

        - + diff --git a/lang/el/docs/future.html b/lang/el/docs/future.html index f2aa506e803..33aef52de47 100644 --- a/lang/el/docs/future.html +++ b/lang/el/docs/future.html @@ -1,46 +1,43 @@ - - - - Ôåêìçñßùóç ôïõ Moodle: ÌåëëïíôéêÜ Ó÷Ýäéá - - + + Ôåêìçñßùóç ôïõ Moodle: ÌåëëïíôéêÜ Ó÷Ýäéá + + - + -

        ÌåëëïíôéêÜ Ó÷Ýäéá

        -

        Äåóìåýïìáé íá óõíå÷ßóù ôçí äïõëåßá ìïõ ðÜíù óôï Moodle êáé íá ôï êñáôÞóù áíïéêôü êáé ÷ùñßò êüóôïò ãéá üëïõò. +

        ÌåëëïíôéêÜ Ó÷Ýäéá

        +

        Äåóìåýïìáé íá óõíå÷ßóù ôçí äïõëåßá ìïõ ðÜíù óôï Moodle êáé íá ôï êñáôÞóù áíïéêôü êáé ÷ùñßò êüóôïò ãéá üëïõò. Å÷ù âáèåßá ðßóôç óôçí óçìáóßá ôçò ìüñöùóçò ÷ùñßò öñáãìïýò êáé óôçí åíäõíÜìùóç ôçò äéäáóêáëßáò, - êáé ôï Moodle åßíáé ï êýñéïò ôñüðïò ìå ôïí ïðïßï ìðïñþ íá óõíåéóöÝñù óôçí ðñáãìáôïðïßçóç áõôþí ôùí éäåþí.

        + êáé ôï Moodle åßíáé ï êýñéïò ôñüðïò ìå ôïí ïðïßï ìðïñþ íá óõíåéóöÝñù óôçí ðñáãìáôïðïßçóç áõôþí ôùí éäåþí. -

        ¼óï ôï Moodle ïñéìÜæåé, åëðßæù ïé êáôåõèýíóåéò ôïõ íá åðçñåÜæïíôáé áðï ôçí êïéíüôçôá +

        ¼óï ôï Moodle ïñéìÜæåé, åëðßæù ïé êáôåõèýíóåéò ôïõ íá åðçñåÜæïíôáé áðï ôçí êïéíüôçôá ôùí ÷ñçóôþí êáé ôùí áíèñþðùí ðïõ óõíåéóöÝñïõí óôçí áíÜðôõîç ôïõ. Ìéá äõíáìéêÞ âÜóç äåäïìÝíùí áðï ðñïôÜóåéò ãéá ìåëëïíôéêÜ ÷áñáêôçñéóôéêÜ ìðïñåß íá âñåèåß óôçí äéåýèõíóç - bugs.moodle.org. - Ïé óõíåéóöïñÜ óáò óå éäÝåò, êþäéêá üðùò åðßóçò êáé êÜèå ìïñöÞ - áëëçëåðßäñáóçò êáé ðñïþèçóçò åßíáé êáëïäå÷ïýìåíç.

        + bugs.moodle.org. + Ïé óõíåéóöïñÜ óáò óå éäÝåò, êþäéêá üðùò åðßóçò êáé êÜèå ìïñöÞ + áëëçëåðßäñáóçò êáé ðñïþèçóçò åßíáé êáëïäå÷ïýìåíç. -

        ÌÝ÷ñé ôïí Áðñßëéï ôïõ 2003, ç äéêÞ ìïõ óõíåéóöïñÜ èá åßíáé ëéãüôåñç ëüãù ôùí õðï÷ñåþóåùí ìïõ ìå ôï äéäáêôïñéêü ìïõ. +

        ÌÝ÷ñé ôïí Áðñßëéï ôïõ 2003, ç äéêÞ ìïõ óõíåéóöïñÜ èá åßíáé ëéãüôåñç ëüãù ôùí õðï÷ñåþóåùí ìïõ ìå ôï äéäáêôïñéêü ìïõ. ¼ëï áõôü ôïí êáéñü èá õðÜñ÷ïõí åêäüóåéò, áëëÜ èá ðåñéÝ÷ïõí ìüíï ìéêñüôåñçò óçìáóßáò êáéíïýñãéá ÷áñáêôçñéóôéêÜ êáé - äéïñèþóåéò êÜðïéùí ëáèþí. Èá ðåñéëáìâÜíïíôáé åðßóåéò modules áëëÜ êáé êþäéêáò ðïõ Ý÷åé áíáðôõ÷èåß áðï Üëëïõò.

        + äéïñèþóåéò êÜðïéùí ëáèþí. Èá ðåñéëáìâÜíïíôáé åðßóåéò modules áëëÜ êáé êþäéêáò ðïõ Ý÷åé áíáðôõ÷èåß áðï Üëëïõò. -

        ÌåôÜ áðï áõôü ôï ÷ñïíéêü äéÜóôçìá, êÜðïõ ìÝóá óôïí Éïýíéï Þ Éïýëéï ôïõ 2003, åõåëðéóôþ óå ìéá - ìåãÜëç Ýêäïóç ç ïðïßá èá ëÝãåôå Moodle 2.0 êáé èá ðåñéëáìâÜíåé êáéíïýñãéá ÷áñáêôçñéóôéêÜ üðùò:

        -
          -
        • Éó÷õñüôåñç ðáéäáãùãéêÞ õðïóôÞñéîç ãéá ôïõò êáèçãçôÝò áëëÜ êáé ôïõò ìáèçôÝò -
        • ÕðïóôÞñéîç ãéá ïìÜäåò êáé ïìáäéêÝò åñãáóßåò -
        • Åðáíáäéáôýðùóç åìöÜíéóç êáé åíóùìÜôùóç ôùí ôå÷íïëïãéþí XML, XSL êáé CSS ãéá ðåñéóóüôåñç åõëõãéóßá +

          ÌåôÜ áðï áõôü ôï ÷ñïíéêü äéÜóôçìá, êÜðïõ ìÝóá óôïí Éïýíéï Þ Éïýëéï ôïõ 2003, åõåëðéóôþ óå ìéá + ìåãÜëç Ýêäïóç ç ïðïßá èá ëÝãåôå Moodle 2.0 êáé èá ðåñéëáìâÜíåé êáéíïýñãéá ÷áñáêôçñéóôéêÜ üðùò: +

            +
          • Éó÷õñüôåñç ðáéäáãùãéêÞ õðïóôÞñéîç ãéá ôïõò êáèçãçôÝò áëëÜ êáé ôïõò ìáèçôÝò +
          • ÕðïóôÞñéîç ãéá ïìÜäåò êáé ïìáäéêÝò åñãáóßåò +
          • Åðáíáäéáôýðùóç åìöÜíéóç êáé åíóùìÜôùóç ôùí ôå÷íïëïãéþí XML, XSL êáé CSS ãéá ðåñéóóüôåñç åõëõãéóßá êáé óõìâáôüôçôá ìå üëïåò ôéò êáéíïýñãéåò äéêôõáêÝò ôå÷íïëïãßåò. -
          • ÂáóéêÞ õðïóôÞñéîç ãéá IMS êáé SCORM -
          • Ìéá ðïéêéëßá íÝùí modules (chat, tracker etc) -
          • ÏôéäÞðïôå Üëëï öáßíåôáé ïôé Ý÷åé ðåñéóóüôåñç óçìáóßá áõôüí ôïí êáéñü :-) -
          +
        • ÂáóéêÞ õðïóôÞñéîç ãéá IMS êáé SCORM +
        • Ìéá ðïéêéëßá íÝùí modules (chat, tracker etc) +
        • ÏôéäÞðïôå Üëëï öáßíåôáé ïôé Ý÷åé ðåñéóóüôåñç óçìáóßá áõôüí ôïí êáéñü :-) +
        -

        ÁõôÞ ôçí ðåñßïäï èá ðåéñáìáôéóôþ ìå ìåèüäïõò ðïõ èá êÜíïõí ôçí áíÜðôõîç ôïõ Moodle +

        ÁõôÞ ôçí ðåñßïäï èá ðåéñáìáôéóôþ ìå ìåèüäïõò ðïõ èá êÜíïõí ôçí áíÜðôõîç ôïõ Moodle ðéï õðïöåñôÞ ãéá ðåñéóóüôåñï êáéñü. Áõôü ìðïñåß íá ðåñéëáìâÜíåé ðñïóöïñÜ õðçñåóéþí åðé ðëçñùìÞ - áí êáé ôï ëïãéóìéêü èá ðáñáìÝíåé ðÜíôá äùñåÜí.

        + áí êáé ôï ëïãéóìéêü èá ðáñáìÝíåé ðÜíôá äùñåÜí. - -

        Ôåêìçñßùóç ôïõ Moodle

        -

        Version: $Id$

        - +

         

        +

        Ôåêìçñßùóç ôïõ Moodle

        +

        Version: $Id$

        + diff --git a/lang/el/docs/glossary.html b/lang/el/docs/glossary.html index a4b88e1221f..f2060d53a95 100644 --- a/lang/el/docs/glossary.html +++ b/lang/el/docs/glossary.html @@ -1,381 +1,190 @@ - - -Moodle Docs: Glossary - - - - - - - - - - - - - - - -

        Glossary

        - -

        This page contains a number of definitions for many of the words and - -expressions you may encounter while working with Moodle.

        - -

        If you don't find the answer here try the Using - - Moodle course on moodle.org, and search the forums for keywords. You may - - have to try a few different search phrases before you find a resolution.

        - -

        If you still can't find any answers then we can recommend Google, or try posting your question - - on the appropriate forum in Using - - Moodle - someone should be able to help you.

        - - - - - -

        Active-X

        - -

        A method of scripting (controlling) certain functions in a web page, used only by Microsoft Internet Explorer.

        - - - -

        applet

        - -

        Most recent browsers can run these small programs if the Java feature in the browser has been enabled.

        - - - -

        ASCII

        - -

        American Standard Code for Information Interchange

        - -

        Certain file types require that you upload in ASCII mode when using your FTP program. - -It's usually best to choose " AUTO " in your FTP settings.

        - - - -

        binary

        - -

        Certain file types require that you upload in binary mode when - -using your FTP program. It's usually best to choose " AUTO " in your FTP settings.

        - - - -

        Cascading Style Sheets

        - -

        Please see CSS below.

        - - - -

        CSS

        - -

        Abbreviation for "Cascading Style Sheets". - -CSS is used as a template to make it easier to update the look (style) of many - -web pages at the same time and CSS also makes it possible to have several pages - -that all follow a similar theme.

        - - - -

        CVS

        - -

        Concurrent Versioning System is simply a method of storing files - -on a server that helps coordinate many people working on those files. To "check out" files from a CVS server means to copy the very latest versions to your own computer.

        - - - -

        database

        - -

        An electronic collection of information, stored in tables of data. For example, Moodle contains a table of all users in a site. MySQL is a brand of database software.

        - - - -

        dataroot

        - -

        The place where Moodle can save uploaded files. This - -directory should be readable and writeable by the web server user - -but it should not be accessible directly via the web.

        - - - -

        domain name

        - -

        A name given to a computer or a group of computers. eg moodle.org You can buy new domain names on the Internet.

        - - - -

        download

        - -

        To move your files from a - -server "down" to your personal computer. Also see FTP and upload.

        - - - -

        directory

        - -

        Please see dirroot

        - - - -

        dirroot

        - -

        A root directory has content and a name. This root directory may contain - -several sub-directories and the name is the location on your server - -where your Moodle files will reside after you upload them.

        - - - -

        FTP

        - -

        File Transfer Protocol - a method a copying files from one - -computer to another. For example, you might FTP your Moodle files from your - -home computer to your web server

        - - - -

        hosting provider

        - -

        A business that will host your web site for a monthly fee. - -You provide a domain name that you own, and after they've set - -it up for you, then you can copy your files to their server and set up your site.

        - - - -

        html

        - -

        HyperText Markup Language - a language used to create web pages.

        - - - -

        index

        - -

        When a web address specifies a directory (eg http://yoursite.com/moodle/) instead of a file (eg http://yoursite.com/moodle/index.php), then the web server needs to assume the name of the file. The files it looks for to use in this case are called the index files.

        - - - -

        Java

        - -

        A programming language that can be used to write applets that may run within web pages. Moodle doesn't use any of it.

        - - - -

        javascript

        - -

        A scripting language that can be used to write small programs in web pages, such as popup menus. Moodle uses a little Javascript.

        - - - -

        Moodle

        - -

        The word Moodle is an acronym for - -Modular Object-Oriented Dynamic Learning Environment

        - - - -

        MySQL

        - -

        MySQL is the world's most popular open source database, - - recognized for its speed and reliability.

        - - - -

        nightly

        - -

        A Moodle Nightly is built automatically every day from the most recent code, and is available from the Moodle web site. It can be useful if you don't have CVS, but you want to try the latest features. It can also contain bugs, since they haven't been well-tested.

        - - - -

        PHP

        - -

        PHP is a server-side scripting language which executes commands on - -the server side then delivers dynamic HTML pages to the web browser. Your server - -must be PHP enabled in order to run Moodle.

        - - - -

        server

        - -

        This is where your web site or database, - -or both, resides. You may choose to run your own server or have a - -hosting provider look after this for you.

        - - - -

        style sheet

        - -

        Please see CSS above.

        - - - -

        upload

        - -

        To upload is simply to move your files from your computer - -to a server. Also see FTP.

        - - - -

        URL

        - -

        A Uniform Resource Locator is the address that is used to - -reach a website.

        - - - -

        XHTML - Extensible Hypertext Markup Language

        - -

        XHTML will, eventually, replace HTML as the language used - -to program web pages for display in your web browser. XHTML will, hopefully, - -make writing code for browsers easier as XHTML code will cause the page to display - -exactly the same in any web browser.

        - - - -

        XML

        - -

        Extensible Mark-up Language is just what the name implies, extensible. - -The programmer has a very wide latitude when writing XML as the programmer may - -choose to add instructions as she/he writes. This is in direct opposition to - -HTML which has a clearly defined and documented set of instructions available and - -no freedom exists to " extend " this set of rules. Due to its' extreme - -versatility XML may be the end of the evolutionary path for HTML. also see - -XHTML - - - - - - - -

        Page Top

        - - - -
        - -

        Maintained by John Eyre. Please send suggestions to captain@eyrespace.com.

        - -
        - - - -

        Moodle Documentation

        - -

        Version: $Id$

        - - - - - + +Moodle Docs: Glossary + + + + + + + +

        Glossary

        +

        This page contains a number of definitions for many of the words and +expressions you may encounter while working with Moodle.

        +

        If you don't find the answer here try the Using + Moodle course on moodle.org, and search the forums for keywords. You may + have to try a few different search phrases before you find a resolution.

        +

        If you still can't find any answers then we can recommend Google, or try posting your question + on the appropriate forum in Using + Moodle - someone should be able to help you.

        + + +

        Active-X

        +

        A method of scripting (controlling) certain functions in a web page, used only by Microsoft Internet Explorer.

        + +

        applet

        +

        Most recent browsers can run these small programs if the Java feature in the browser has been enabled.

        + +

        ASCII

        +

        American Standard Code for Information Interchange

        +

        Certain file types require that you upload in ASCII mode when using your FTP program. +It's usually best to choose " AUTO " in your FTP settings.

        + +

        binary

        +

        Certain file types require that you upload in binary mode when +using your FTP program. It's usually best to choose " AUTO " in your FTP settings.

        + +

        Cascading Style Sheets

        +

        Please see CSS below.

        + +

        CSS

        +

        Abbreviation for "Cascading Style Sheets". +CSS is used as a template to make it easier to update the look (style) of many +web pages at the same time and CSS also makes it possible to have several pages +that all follow a similar theme.

        + +

        CVS

        +

        Concurrent Versioning System is simply a method of storing files +on a server that helps coordinate many people working on those files. To "check out" files from a CVS server means to copy the very latest versions to your own computer.

        + +

        database

        +

        An electronic collection of information, stored in tables of data. For example, Moodle contains a table of all users in a site. MySQL is a brand of database software.

        + +

        dataroot

        +

        The place where Moodle can save uploaded files. This +directory should be readable and writeable by the web server user +but it should not be accessible directly via the web.

        + +

        domain name

        +

        A name given to a computer or a group of computers. eg moodle.org You can buy new domain names on the Internet.

        + +

        download

        +

        To move your files from a +server "down" to your personal computer. Also see FTP and upload.

        + +

        directory

        +

        Please see dirroot

        + +

        dirroot

        +

        A root directory has content and a name. This root directory may contain +several sub-directories and the name is the location on your server +where your Moodle files will reside after you upload them.

        + +

        FTP

        +

        File Transfer Protocol - a method a copying files from one +computer to another. For example, you might FTP your Moodle files from your +home computer to your web server

        + +

        hosting provider

        +

        A business that will host your web site for a monthly fee. +You provide a domain name that you own, and after they've set +it up for you, then you can copy your files to their server and set up your site.

        + +

        html

        +

        HyperText Markup Language - a language used to create web pages.

        + +

        index

        +

        When a web address specifies a directory (eg http://yoursite.com/moodle/) instead of a file (eg http://yoursite.com/moodle/index.php), then the web server needs to assume the name of the file. The files it looks for to use in this case are called the index files.

        + +

        Java

        +

        A programming language that can be used to write applets that may run within web pages. Moodle doesn't use any of it.

        + +

        javascript

        +

        A scripting language that can be used to write small programs in web pages, such as popup menus. Moodle uses a little Javascript.

        + +

        Moodle

        +

        The word Moodle is an acronym for +Modular Object-Oriented Dynamic Learning Environment

        + +

        MySQL

        +

        MySQL is the world's most popular open source database, + recognized for its speed and reliability.

        + +

        nightly

        +

        A Moodle Nightly is built automatically every day from the most recent code, and is available from the Moodle web site. It can be useful if you don't have CVS, but you want to try the latest features. It can also contain bugs, since they haven't been well-tested.

        + +

        PHP

        +

        PHP is a server-side scripting language which executes commands on +the server side then delivers dynamic HTML pages to the web browser. Your server +must be PHP enabled in order to run Moodle.

        + +

        server

        +

        This is where your web site or database, +or both, resides. You may choose to run your own server or have a +hosting provider look after this for you.

        + +

        style sheet

        +

        Please see CSS above.

        + +

        upload

        +

        To upload is simply to move your files from your computer +to a server. Also see FTP.

        + +

        URL

        +

        A Uniform Resource Locator is the address that is used to +reach a website.

        + +

        XHTML - Extensible Hypertext Markup Language

        +

        XHTML will, eventually, replace HTML as the language used +to program web pages for display in your web browser. XHTML will, hopefully, +make writing code for browsers easier as XHTML code will cause the page to display +exactly the same in any web browser.

        + +

        XML

        +

        Extensible Mark-up Language is just what the name implies, extensible. +The programmer has a very wide latitude when writing XML as the programmer may +choose to add instructions as she/he writes. This is in direct opposition to +HTML which has a clearly defined and documented set of instructions available and +no freedom exists to " extend " this set of rules. Due to its' extreme +versatility XML may be the end of the evolutionary path for HTML. also see +XHTML + + + +

        Page Top

        + +
        +

        Maintained by John Eyre. Please send suggestions to captain@eyrespace.com.

        +
        + +

        Moodle Documentation

        +

        Version: $Id$

        + + diff --git a/lang/el/docs/install.html b/lang/el/docs/install.html index 1ce872e8fd7..7fd6b6a2bf2 100644 --- a/lang/el/docs/install.html +++ b/lang/el/docs/install.html @@ -1,53 +1,50 @@ - - - - Ôåêìçñßùóç ôïõ Moodle: ÅãêáôÜóôáóç - - + + Ôåêìçñßùóç ôïõ Moodle: ÅãêáôÜóôáóç + + - -

        Åãêáèéóôüíôáò ôï Moodle

        -

        Áõôüò ï ïäçãüò åîçãåß ðùò íá åãêáôáóôÞóåôå ôï Moodle ãéá ðñþôç öïñÜ. ÐåñéãñÜöåé ìå áñêåôÝò ëåðôïìÝñåéåò + +

        Åãêáèéóôüíôáò ôï Moodle

        +

        Áõôüò ï ïäçãüò åîçãåß ðùò íá åãêáôáóôÞóåôå ôï Moodle ãéá ðñþôç öïñÜ. ÐåñéãñÜöåé ìå áñêåôÝò ëåðôïìÝñåéåò ìåñéêÜ áðï ôá âÞìáôá åãêáôÜóôáóçò, óôçí ðñïóðÜèåéá íá êáëõöèåß ìéá ìåãÜëç ðïéêéëßá áðï ìéêñïäéáöïñÝò ðïõ õðÜñ÷ïõí ìåôáîý ôùí ñõèìßóåùí ôùí web server, ãéáõôü ôï ëüãï áõôü ôï Ýããñáöï ìðïñåß íá öáßíåôáé ìåãÜëï êáé - ðïëýðëïêï. Ìçí áðïãïçôåýåóôå áðï áõôü. ÅãþóõíÞèùò óôåßíù ôï Moodle óå ìåñéêÜ ëåðôÜ!

        -

        ÊïéôÜîôå ìå ôçí çóõ÷ßá óáò áõôü ôï Ýããñáöï ðñïóåêôéêÜ - áõôü èá óáò åîïéêïíïìÞóåé ÷ñüíï áñãüôåñá.

        -

        Ôïìåßò áõôïý ôïõ åããñÜöïõ:

        -
          -
        1. ÁðáéôÞóåéò
        2. -
        3. Öüñôùóç
        4. -
        5. ÄïìÞ ôïõ äéêôõáêïý ôüðïõ
        6. -
        7. Äçìéïõñãþíôáò Ýíá êáôÜëïãï äåäïìÝíùí
        8. -
        9. Äçìéïõñãþíôáò ôçí âÜóç äåäïìÝíùí
        10. -
        11. ÅëÝã÷ïíôáò ôéò ñõèìßóåéò ôïõ web server
        12. -
        13. ÁëëÜæïíôáò ôï config.php
        14. -
        15. Ðçãáßíïíôáò óôçí óåëßäá ôïõ äéá÷åéñéóôÞ
        16. -
        17. Ñõèìßæïíôáò ôï cron
        18. -
        19. Äçìéïõñãßá åíüò êáéíïýñãéïõ ìáèÞìáôïò
        20. -
        -

        1. ÁðáéôÞóåéò

        + ðïëýðëïêï. Ìçí áðïãïçôåýåóôå áðï áõôü. ÅãþóõíÞèùò óôåßíù ôï Moodle óå ìåñéêÜ ëåðôÜ!

        +

        ÊïéôÜîôå ìå ôçí çóõ÷ßá óáò áõôü ôï Ýããñáöï ðñïóåêôéêÜ - áõôü èá óáò åîïéêïíïìÞóåé ÷ñüíï áñãüôåñá.

        +

        Ôïìåßò áõôïý ôïõ åããñÜöïõ:

        +
          +
        1. ÁðáéôÞóåéò
        2. +
        3. Öüñôùóç
        4. +
        5. ÄïìÞ ôïõ äéêôõáêïý ôüðïõ
        6. +
        7. Äçìéïõñãþíôáò Ýíá êáôÜëïãï äåäïìÝíùí
        8. +
        9. Äçìéïõñãþíôáò ôçí âÜóç äåäïìÝíùí
        10. +
        11. ÅëÝã÷ïíôáò ôéò ñõèìßóåéò ôïõ web server
        12. +
        13. ÁëëÜæïíôáò ôï config.php
        14. +
        15. Ðçãáßíïíôáò óôçí óåëßäá ôïõ äéá÷åéñéóôÞ
        16. +
        17. Ñõèìßæïíôáò ôï cron
        18. +
        19. Äçìéïõñãßá åíüò êáéíïýñãéïõ ìáèÞìáôïò
        20. +
        +

        1. ÁðáéôÞóåéò

        Ôï Moodle áñ÷éêÜ äçìéïõñãÞèçêå óå Linux ÷ñçóéìïðïéüíôáò PHP, Apache êáé MySQL, êáé åëÝ÷èçêå óõóôçìáôéêÜ ìå ôçí PostgreSQL êáé óå ðåñéâÜëëïíôá Windows XP êáé Mac OS X.

        ¼ëá üóá ÷ñåéÜæåóôáé åßíáé:

          -
        1. ¸íá ðåñéâÜëëïí ðïõ íá äïõëåýåé ôçò PHP (Ýêäïóç +
        2. ¸íá ðåñéâÜëëïí ðïõ íá äïõëåýåé ôçò PHP (Ýêäïóç 4.1.0 Þ ìåôáãåíÝóôåñç), ìå ôá áêüëïõèá ÷áñáêôçñéóôéêÜ åíåñãïðïçìÝíá (ïé ðåñéóóüôåñåò åãêáôáóôÜóåéò ôçò PHP áõôü ôïí êáéñü èá ðñÝðåé íá ôá Ý÷ïõí üëá áõôá):
            -
          • ÂéâëéïèÞêç GD ìå õðïóôÞñéîç ãéá JPG êáé PNG formats
          • -
          • ÕðïóôÞñéîç ãéá Sessions
          • -
          • Íá åðéôñÝðåôáé ôï upload áñ÷åßùí
          • -
          -
        3. -
        4. ¸íá server âÜóåùí äåäïìÝíùí ðïõ äïõëåýåé: Ðñïôåéìïýíôå MySQL Þ - PostgreSQL. (MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 Þ ODBC +
        5. ÂéâëéïèÞêç GD ìå õðïóôÞñéîç ãéá JPG êáé PNG formats
        6. +
        7. ÕðïóôÞñéîç ãéá Sessions
        8. +
        9. Íá åðéôñÝðåôáé ôï upload áñ÷åßùí
        10. + + +
        11. ¸íá server âÜóåùí äåäïìÝíùí ðïõ äïõëåýåé: Ðñïôåéìïýíôå MySQL Þ + PostgreSQL. (MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 Þ ODBC èåùñçôéêÜ õðïóôçñßæïíôáé áëëá áðáéôïýí áðï åóáò íá öôéÜîåôå "ìå ôï ÷Ýñé" ôïõò ðßíáêåò ôçò âÜóçò äåäïìÝíùí ðïõ ÷ñåéÜæïíôáé).

        Óå ìéá ðëáôöüñìá Windows, ï ãñçãïñüôåñïò ôñüðïò ãéá íá éêáíïðïéçèïýí áõôÝò ïé áðáéôÞóåéò åßíáé íá - êáôåâÜóåôå ôï FoxServ, - Þ EasyPHP ôá ïðïßá èá åãêáôáóôÞóïõí ôïí Apache, + êáôåâÜóåôå ôï FoxServ, + Þ EasyPHP ôá ïðïßá èá åãêáôáóôÞóïõí ôïí Apache, ôçí PHP, êáé ôçí MySQL ãéá åóÜò. Óéãïõñåõôåßôå üôé Ý÷åôå åíåñãïðïéÞóåé ôï GD module ãéá íá ìðïñåß ôï Moodle íá åðåîåñãÜæåôáé åéêüíåò - èá ðñÝðåé íá áëëÜîåôå ôï áñ÷åßï php.ini êáé íá áöáéñÝóåôå ôá ó÷üëåéá (;) áðü áõôÞ ôçí ãñáììÞ : 'extension=php_gd.dll'. Èá ðñÝðåé íá äéïñèþóåôå êáé ôïí êáôÜëïãï ãéá ôá session.save_path - áíôß ãéá ôï ðñïåðéëåãìÝíï "/tmp" @@ -55,31 +52,31 @@

        Óôá Mac OS X óõíåéóôþ áíåðéöýëáêôá ôï fink project óáí Ýíá ôñüðï ãéá íá êáôåâÜæåôå åýêïëá óõíôçñßóéìá ðáêÝôá ãéá üëá áõôÜ. Áí äåí åßóôå ôüóï åîïéêåéùìÝíïò ìå ôçí ãñáììÞ - åíôïëþí ôüôå ôï íá êáôåâÜóôå ôï Marc Liyanage's PHP Apache Module + åíôïëþí ôüôå ôï íá êáôåâÜóôå ôï Marc Liyanage's PHP Apache Module åßíáé ï åõêïëüôåñïò ôñüðïò ãéá íá êÜíåôå ôçí PHP íá ôñÝ÷åé óå Ýíá íÝï Mac OS X server.

        Áí åßóôå óå Linux Þ êÜðïéïÜëëï Unix tôüôå õðïèÝôù ïôé ìðïñåßôå íá êÜíåôå üëá áõôÜ ìïíïé óáò! ;-)

        -

         

        -

        2. Download

        +

         

        +

        2. Download

        ÕðÜñ÷ïõí äõï ôñüðïé ãéá íá ðÝñåôå ôï Moodle, óáí Ýíá óõìðéåóìÝíï áñ÷åßï Þ ìÝóù ôïõ CVS. Áõôá åîçãïýíôáé - ìå ëåðôïìÝñåéåò óôçí óåëßäá ãéá ôï download óôïí óýíäåóìï http://moodle.com/

        + ìå ëåðôïìÝñåéåò óôçí óåëßäá ãéá ôï download óôïí óýíäåóìï http://moodle.com/

        Áöïý êáôåâÜóåôå êáé áðïóõìðéÝóåôå ôï áñ÷åßï, Þ åëÝã÷îåôå ôá áñ÷åßá ìÝóù ôïõ CVS, èá Ý÷åôå Ýíá êáôÜëïãï ìå ôï üíïìá "moodle", íá ðåñéÝ÷åé Ýíá áñéèìü áðï áñ÷åßá êáé öáêÝëïõò.

        Ìðïñåßôå åßôå íá ôïðïèåôÞóåôå üëï ôïí êáôÜëïãï óôï êáôÜëïãï ôùí åããñÜöùí ôïõ web server óáò, üðïõ óå áõôÞ ôçí ðåñßðôùóç - ç éóôïóåëßäá èá âñßóêåôáé óôçí äéåýèõíóç http://yourwebserver.com/moodle, Þ íá áíôéãñÜøåôå üëï ôï ðåñéå÷üìåíï áðåõèåßáò + ç éóôïóåëßäá èá âñßóêåôáé óôçí äéåýèõíóç http://yourwebserver.com/moodle, Þ íá áíôéãñÜøåôå üëï ôï ðåñéå÷üìåíï áðåõèåßáò óôïí êáôÜëïãï ôùí åããñÜöùí ôïõ web server óáò, ïðüôå óå áõôÞ ôçí ðåñßðôùóç ç éóôïóåëßäá èá âñßóêåôáé óôçí äéåýèõíóç - http://yourwebserver.com.

        + http://yourwebserver.com.

        -

         

        -

        3. ÄïìÞ ôïõ äéêôõáêïý ôüðïõ

        -
        +

         

        +

        3. ÄïìÞ ôïõ äéêôõáêïý ôüðïõ

        +

        ÁõôÞ ìéá ãñÞãïñç ðåñßëçøç ôùí ðåñéå÷ïìÝíùí ôïõ êáôáëüãïõ ôïõ Moodle, ãéá íá óáò âïçèÞóåé íá ðñïóáíáôïëéóôåßôå :

        -

        config.php - Ôï ìüíï áñ÷åßï ðïõ ÷ñåéÜæåôáé íá áëëÜîåôå ãéá íá áñ÷ßóåôå
        - version.php - êáèïñßæåé ôçí ôñÝ÷ïõóá Ýêäïóç ôïõ êþäéêá ôïõ Moodle
        +

        config.php - Ôï ìüíï áñ÷åßï ðïõ ÷ñåéÜæåôáé íá áëëÜîåôå ãéá íá áñ÷ßóåôå
        + version.php - êáèïñßæåé ôçí ôñÝ÷ïõóá Ýêäïóç ôïõ êþäéêá ôïõ Moodle
        index.php - Ç ðñþôç óåëßäá ôïõ äéêôõáêïý ôüðïõ

        • admin/ - êþäéêáò ãéá íá äéá÷åéñßæåóôå üëï ôïí server
        • @@ -97,8 +94,8 @@

         

        -
        -

        4. Äçìéïõñãþíôáò Ýíá êáôÜëïãï äåäïìÝíùí

        +
        +

        4. Äçìéïõñãþíôáò Ýíá êáôÜëïãï äåäïìÝíùí

        Ôï Moodle ÷ñåéÜæåôå åðßóçò ÷þñï óôï óêëçñü óáò äßóêï ãéá íá áðïèçêåýåé ôá áñ÷åßá ðïõ ãßíïíôáé upload, üðùò Ýããñáöá ãéá ôá ìáèÞìáôá êáé öùôïãñáößåò ÷ñçóôþí.

        @@ -108,7 +105,7 @@ Ýîù áðü ôï web directory, áëëßùò ðñïóôáôÝøôå ôï äçìéïõñãüíôáò Ýíá áñ÷åßï ìÝóá óôïí êáôÜëïãï ðïõ íá ïíïìÜæåôáé .htaccess, êáé íá ðåñéÝ÷åé áõôÞ ôçí ãñáììÞ:
        -
        deny from all
        +
        deny from all

        Ãéá íá âåâáéùèåßôáé ïôé ôï Moodle ìðïñåß íá áðïèçêåýåé ôá áñ÷åßá ðïõ ãßíïíôáé upload óå áõôü ôïí êáôÜëïãï, åëÝãîôå üôé @@ -121,8 +118,8 @@ óáò). ÌéëÞóôå ìå ôïí äéá÷åéñéóôÞ ôïõ server áí Ý÷åôå ðñïâëÞìôá þóôå íá ñõèìßóåôå üëá áõôÜ ìå áóöÜëåéá.

        -

         

        -

        5. Äçìéïñãþíôáò ôçí ÂÜóç ÄåäïìÝíùí

        +

         

        +

        5. Äçìéïñãþíôáò ôçí ÂÜóç ÄåäïìÝíùí

        ×ñåéÜæåôå íá äçìéïõñãÞóåôå ìéá Üäåéá âÜóç äåäïìÝíùí (ð.÷. "moodle") óôï óýóôçìá âÜóçò äåäïìÝíùí ðïõ Ý÷åôå ìáæß ìå åíá åéäéêü ÷ñÞóôç (ð.÷. "moodleuser") ï ïðïßïò èá Ý÷åé ðñüóâáóç óôçí âÜóç äåäïìÝíùí @@ -131,28 +128,28 @@ óýóôçìá ôçò âÜóçò äåäïìÝíùí óáò âñßóêåôáé óå êßíäõíï, êáé ü÷é ìüíï ìéá âÜóç äåäïìÝíùí.

        Ðáñáäåßãìáôá óå command line ãéá MySQL:

        -
        +  
            # mysql -u root -p
            > CREATE DATABASE moodle; 
            > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.* 
                    TO moodleuser@localhost IDENTIFIED BY 'yourpassword'; 
            > quit 
            # mysqladmin -p reload
        -
        +

        Ðáñáäåßãìáôá óå command line ãéá PostgreSQL:

        -
        +  
            # su - postgres
            > psql -c "create user moodleuser createdb;" template1
            > psql -c "create database moodle;" -U moodleuser template1
            > psql -c "alter user moodleuser nocreatedb;" template1
        -
        +

        (Ãéá ôçí MySQL óõóôÞíù áíåðéöýëáêôá ôçí ÷ñÞóç ôïõ phpMyAdmin ãéá íá äéá÷åéñßæåóôå ôéò âÜóåéò äåäïìÝíùí óáò).

        Áðü ôçí Ýêäïóç 1.0.8, ôï Moodle õðïóôçñßæåé ðëÝïí ðñïèÝìáôá ðéíÜêùí, ïðüôå Ýôóé ìðïñåßôå íá ìïéñÜóåôå ìå áóöÜëåéá ìéá âÜóç äåäïìÝíùí ìå ðßíáêåò áðï Üëëç åöáñìïãÞ.

        -

         

        -

        6. ÅëÝã÷ïíôáò ôéò ñõèìßóåéò ôïõ web server

        +

         

        +

        6. ÅëÝã÷ïíôáò ôéò ñõèìßóåéò ôïõ web server

        Êáôáñ÷ßí, âåâáéùèåßôáé ïôé ï web server óáò åßíáé ñõèìéóìÝíïò íá ÷ñçóéìïðïéåß ôï index.php óáí ôçí ðñïåðéëåãìÝíç óåëßäá (ßóùò ìáæß ìå ôçí index.html, default.htm êôë).

        @@ -163,7 +160,7 @@

        ÁðëÜ âåâáéùèåßôáé üôé ôï index.php åßíáé óôçí ëßóôá (åßíáé ðñïôéìüôåñï íá åßíáé óôçí áñ÷Þ ôçò ëßóôáò, ãéá áðïäïôéêüôçôá).

        ¸ðåéôá, ôï Moodle áðáéôÝé Ýíá áñéèìü áðï ñõèìßóåéò ôçò PHP íá åßíáé åíåñãÝò ãéá íá äïõëÝøåé. - Óôïõò ðåñéóóüôåñïõò servers áõôÝò èá åßíáé åßäç ïé ðñïåðéëåãìÝíåò ñõèìßóåéò. Ðáñüëáõôá ìåñéêïé PHP servers + Óôïõò ðåñéóóüôåñïõò servers áõôÝò èá åßíáé åßäç ïé ðñïåðéëåãìÝíåò ñõèìßóåéò. Ðáñüëáõôá ìåñéêïé PHP servers (êáé ìåñéêÝò áðï ôéò ðéï ðñüóöáôåò åêäüóåéò ôéò PHP) ìðïñåß íá Ý÷ïõí ñõèìßóåé ôá ðñÜãìáôá ëßãï äéáöïñåôéêÜ. ÁõôÜ ïñßæïíôáé óôï áñ÷åßï ñõèìßóåùí ôçò PHP (óõíÞèùò ïíïìÜæåôáé php.ini):

        @@ -176,20 +173,20 @@

        Áí äåí Ý÷åôå ðñüóâáóç óôï áñ÷åßï httpd.conf Þ óôï php.ini óôïí server óáò, Þ áí Ý÷åôå ôï Moodle óå Ýíá server ìáæß ìå Üëëåò åöáñìïãÝò ðïõ áðáéôïýí äéáöïñåôéêÝò ñõèìßóåéò, ôüôå ìðïñåßôå íá ÁÃÍÏÅÉÓÅÔÅ üëåò ôéò ðñïåðéëåãìÝíåò ñõèìßóåéò. -

        Ãéá íá êÜíåôå áõôü, ÷ñåéÜæåôáé íá äçìéïõñãÞóåôå Ýíá áñ÷åßï ðïõ íá ïíïìÜæåôáé .htaccess óôï êåíôñéêü êáôÜëïãï ôïõ Moodle +

        Ãéá íá êÜíåôå áõôü, ÷ñåéÜæåôáé íá äçìéïõñãÞóåôå Ýíá áñ÷åßï ðïõ íá ïíïìÜæåôáé .htaccess óôï êåíôñéêü êáôÜëïãï ôïõ Moodle ôï ïðïßï èá ðåñéÝ÷åé ïñéóìïýò ãéá áõôÝò ôéò ñõèìßóåéò. Áõôü äïõëåýåé ìüíï óôïõò Apache servers êáé ìüíï üôáí Ý÷ïõí åðéôñÝðïíôáé Overrides . -

        +     
         DirectoryIndex index.php index.html index.htm
         php_value magic_quotes_gpc 1
         php_value file_uploads 1
         php_value short_open_tag 1
        -php_value session.auto_start 0
        -

        Ìðïñåßôå åðßóçò íá êÜíåôå êáé Üëëá ðñÜãìáôá üðùò íá êáèïñßóåôå ôï ìåãéóôï ìÝãåèïò ãéá ôá áñ÷åßá ðïõ ãßíïíôáé upload:

        -
        +php_value session.auto_start 0
        +

        Ìðïñåßôå åðßóçò íá êÜíåôå êáé Üëëá ðñÜãìáôá üðùò íá êáèïñßóåôå ôï ìåãéóôï ìÝãåèïò ãéá ôá áñ÷åßá ðïõ ãßíïíôáé upload: +

         php_value upload_max_filesize 2M
         php_value post_max_size 2M
        -     
        +

        Ôï ðéï åýêïëï ðïõ ìðïñåßôáé íá êÜíåôå åßíáé áðëÜ íá áíôéãñÜøåôáé ôï ðáñÜäåéãìá áñ÷åßïõ áðï ôïí êáôÜëïãï lib/htaccess êáé íá ôï áëëÜîåôå Ýôóé þóôå íá éêáíïðïéåß ôéò áíÜãêåò óáò. ÐåñéÝ÷åé ðåñéóóüôåñåò ðëçñïöïñßåò. Ãéá ðáñÜäåéãìá, @@ -200,7 +197,7 @@ php_value post_max_size 2M

         

        -

        7. ÁëëÜæïíôáò ôï config.php

        +

        7. ÁëëÜæïíôáò ôï config.php

        Ôþñá ìðïñåßôå íá áëëÜîåôå ôï áñ÷åßï ôùí ñõèìßóåùí, config.php, ÷ñçóéìïðïéüíôáò Ýíá êåéìåíïãñáöï. Áõôü ôï áñ÷åßï ÷ñçóéìïðïéåßôáé áðü üëá ôá Üëëá áñ÷åßá ôïõ Moodle.

        @@ -214,15 +211,15 @@ php_value post_max_size 2M

        Ãéá ôï õðüëïéðï áõôïý ôïõ åããñÜãïõ ãéá ôçí åãêáôÜóôáóç èá èåùñÞóïõìå üôé ôï äéêôõáêïý ôüðïõ óáò åßíáé óôçí äéåýèõíóç: http://example.com/moodle

        -

         

        -

        8. Ðçãáßíïíôáò óôçí óåëßäá ôïõ äéá÷åéñéóôÞ

        +

         

        +

        8. Ðçãáßíïíôáò óôçí óåëßäá ôïõ äéá÷åéñéóôÞ

        Ç óåëßäá ôïõ äéá÷åéñéóôÞ èá ðñÝðåé íá åìöáíßæåôáé óôçí äéåýèõíóç: http://example.com/moodle/admin. Áí ðñïóðáèÞóåôå íá ðñïóðåëÜóåôáé ôçí áñ÷éêÞ óåëßäá ôïõ äéêôõáêïý ôüðïõ èá ìåôáöåñèåßôáé åêåß áõôüìáôá åôóé êáé áëëßùò. Ôçí ðñþôç öïñÜ ðïõ èá ðñïóðåëÜóåôå ôçí óåëßäá ôïõ äéá÷åéñéóôÞ, èá äåßôå ìéá GPL óõìöùíßá ìå ôçí ïðïßá èá ðñÝðåé íá óõìöùíåßóåôáé ðñéí ðñï÷ùñÞóåôáé ìå ôéò ñõèìßóåéò.

        -

        (Ôï Moodle èá ðñïóðáèÞóåé åðßóçò íá öÝñåé ìåñéêÜ cookies óôïí browser óáò. Áí Ý÷åôå ñõèìßóåé ôïí browser - óáò Ýôóé þóôå íá åðéëÝãåôå åóåßò áí èá äÝ÷åóôáé cookies, ôüôå èá ÐÑÅÐÅÉ +

        (Ôï Moodle èá ðñïóðáèÞóåé åðßóçò íá öÝñåé ìåñéêÜ cookies óôïí browser óáò. Áí Ý÷åôå ñõèìßóåé ôïí browser + óáò Ýôóé þóôå íá åðéëÝãåôå åóåßò áí èá äÝ÷åóôáé cookies, ôüôå èá ÐÑÅÐÅÉ íá äå÷ôåßôå ôá cookies ôïõ Moodle, áëëßùò ôï Moodle äåí èá äïõëåýåé óùóôÜ.)

        Ôþñá ôï Moodle èá áñ÷ßóåé íá ñõèìßæåé ôçí âÜóç äåäïìÝíùí óáò êáé íá äçìéïõñãåß ôïõò ðßíáêåò üðïõ èá áðïèçêåýåé ôá äåäïìÝíá. Ðñþôá äçìéïõñãïýíôáé ïé êýñéïé ðßíáêåò ôçò âÜóçò äåäïìÝíùí. Èá äåßôå Ýíá áñéèìü áðü SQL ðñïôÜóåéò @@ -244,7 +241,7 @@ php_value post_max_size 2M Þ ìå ôçí äéáìüñöùóç ôùí ñõèìßóåùí ðïõ ïñßóáôáé óôï áñ÷åßï config.php. ÅëÝãîôå üôé ç PHP äåí åßíáé óôçí ðåñéïñéóôéêÞ êáôÜóôáóç "safe mode" (åìðïñéêïß web hosts óõ÷íÜ Ý÷ïõí åíåñãïðïéçìÝíç ôçí êáôÜóôáóç "safe mode"). Ìðïñåßôå íá åëÝãîåôå ôéò ìåôáâëçôÝò ôçò PHP variables äçíéïõñãþíôáò - Ýíá ìéêñü áñ÷åßï ðïõ íá ðåñéÝ÷åé <? phpinfo() ?> êáé íá ôï êïéôÜîåôå ìÝóá áðü Ýíá browser. + Ýíá ìéêñü áñ÷åßï ðïõ íá ðåñéÝ÷åé <? phpinfo() ?> êáé íá ôï êïéôÜîåôå ìÝóá áðü Ýíá browser. ÅëÝãîôå üëá õôÜ êáé ðñïóðáèåßóôå îáíÜ ìå ôçí óåëßäá.

        Êáôåâåßôå óôï êÜôù ìÝñïò ôçò óåëßäáò êáé ðáôÞóôå ôïí óýíäåóìï "Continue".

        Óôï åðüìåíï âÞìá èá äåßôå ìéá ðáñüìïéá óåëßäá üðïõ èÝôåé üëïõò ôïõò ðßíáêåò ðïõ áðáéôïýíôáé ãéá @@ -298,8 +295,8 @@ php_value post_max_size 2M

      • íá áëëÜîåôå ÷áñáêôçñéóôéêÜ ôïõ äéêôõáêïý ôüðïõ üðùò èÝìáôá êôë
      • -

         

        -

        9. Ñõèìßæïíôáò ôï cron

        +

         

        +

        9. Ñõèìßæïíôáò ôï cron

        ÌåñéêÜ áðï ôá modules ôïõ Moodle áðáéôïýí óõíå÷üìåíïõò åëÝã÷ïõò ãéá íá ðñáãìáôïðïéïýí áõôÜ ðïõ ðñÝðåé íá êÜíïõí. Ãéá ðáñÜäåéãìá, ôï Moodle ÷ñåéÜæåôáé íá åëÝã÷åé ôéò ïìÜäåò óõæçôÞóåùí þóôå íá ìðïñåß íá óôÝëíåé mail áíôßãñáöá ôùí @@ -309,20 +306,20 @@ php_value post_max_size 2M üðïõ áõôü ôï script ìðïñåß íá ôñÝ÷åé óõ÷íÜ (ð.÷. êÜèå ðÝíôå ëåðôÜ). Áõôü ðáñÝ÷åé Ýíá "heartbeat" Ýôóé þóôå ôï script íá ìðïñåß íá åêôåëåß ëåéôïõñãßåò óå ðåñéüäïõò ðïõ ïñßæïíôáé áðü ôï êÜèå module.

        -

        Óçìåéþóôå üôé ç ìç÷áíÞ ðïõèá åêôåëåßé ôï cron äåí ÷ñåéÜæåôáé íá åßíáé ç ßäéá ìç÷áíÞ ðïõ ôñÝ÷åé ôï - Moodle. Ãéá ðáñÜäåéãìá, åáí Ý÷åôå Ýíá ðåñéïñéóìÝíï ìéá ðåñéïñéóìÝíç õðçñåóßá öéëïîåíßáò éóôïóåëßäùí +

        Óçìåéþóôå üôé ç ìç÷áíÞ ðïõèá åêôåëåßé ôï cron äåí ÷ñåéÜæåôáé íá åßíáé ç ßäéá ìç÷áíÞ ðïõ ôñÝ÷åé ôï + Moodle. Ãéá ðáñÜäåéãìá, åáí Ý÷åôå Ýíá ðåñéïñéóìÝíï ìéá ðåñéïñéóìÝíç õðçñåóßá öéëïîåíßáò éóôïóåëßäùí ç ïðïßá äåí Ý÷åé ôï cron, ôüôå ßóùò íá åðéëÝîåôå íá ôñÝøåôå ôï cron óå Ýí Üëëï server Þ óôïí õðïëïãéóôÞ óôï óðßôé óáò. Áõôü ðïõ ÷ñåéÜæåôáé åßíáé ôï áñ÷åßï cron.php íá êáëåßôáé êÜèå ðÝíôå ëåðôÜ ðåñßðïõ.

        Ðñþôá, åëÝãîôå üôé ôï script äïõëåýåé ôñÝ÷ïíôáò ôï áðåõèåßáò áðï ôïí browser óáò:

        -
        http://example.com/moodle/admin/cron.php
        +
        http://example.com/moodle/admin/cron.php

        Ôþñá, èá ðñÝðåé íá ñõèìßóåôå ôïí ôñüðï ìå ôïí ïðïßï èá ôñÝ÷åé ôï script áõôüìáôá êáé ìå ìéá óõãêåêñéìÝíç óõ÷íüôçôá.

        ÔñÝ÷ïíôáò ôï script áðü ôçí ãñáììÞ åíôïëþí

        ÊáëÝéôáé ôçí óåëßäá áðï ôçí ãñáììÞ åíôïëþí üðùò êÜíáôå êáé óôï ðáñÜäåéãìá ðáñáðÜíù. Ãéá ðáñÜäåéãìá, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ìéá åöáñìïãÞ ôïõ Unix üðùò ç 'wget':

        -
        wget -q -O /dev/null http://example.com/moodle/admin/cron.php
        +
        wget -q -O /dev/null http://example.com/moodle/admin/cron.php

        Óçìåéþóôå ïôé óå áõôü ôï ðáñÜäåéãìá ç åîïäüò èá ðåôáãåôå ìáêñéÜ (óôï /dev/null).

        Ôï ßäéï ðñÜãìá ÷ñçóéìïðïéþíôáò ôï lynx:

        @@ -334,25 +331,26 @@ php_value post_max_size 2M äåí ãåìßæïõí ìå óõíå÷åßò êëÞóåéò ðñïò ôï cron.php. Ôï ìåéïíÝêôçìá åßíáé üôé èá ðñÝðåé íá áðïêôÞóåôå ðñüóâáóç óå Ýêäïóç ôçò PHP ðïõ íá ôñÝ÷åé óå ãñáììÞ åíôïëþí.

        -
        /opt/bin/php /web/moodle/admin/cron.php
        +    
        /opt/bin/php /web/moodle/admin/cron.php
         
         
         (Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php
         
        -
        +

        Áõôüìáôïò êáèïñéóìüò ãéá íáôñÝ÷åé ôï script êÜèå ðÝíôå ëåðôÜ

        -

        Óå óõóôÞìáôá Unix: ×ñçóéìïðïéåßóôå cron. ÁëëÜîôå ôéò ñõèìßóåéò ôïõ cron settings áðü ôçí ãñáììÞ åíôïëþí +

        Óå óõóôÞìáôá Unix: ×ñçóéìïðïéåßóôå cron. ÁëëÜîôå ôéò ñõèìßóåéò ôïõ cron settings áðü ôçí ãñáììÞ åíôïëþí ÷ñçóéìïðïéþíôáò "crontab -e" êáé ðñïóèÝóôå ìéá ãñáììÞ óáí:

        -
        */5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php
        +
        */5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php

        Óå óõóôÞìáôá Windows: Ï áðëïýóôåñïò ôñüðïò åßíáé íá ÷ñçóéìïðïéÞóåôå ôï ðáêÝôï ìïõ - - moodle-cron-for-windows.zip ôï ïðïßï êÜíåé üëç áõôÞ ôçí äéáäéêáóßá ðïëý ðéï Ýõêïëç. Ìðïñåßôå åðßóçò íá + + moodle-cron-for-windows.zip ôï ïðïßï êÜíåé üëç áõôÞ ôçí äéáäéêáóßá ðïëý ðéï Ýõêïëç. Ìðïñåßôå åðßóçò íá ðåéñáìáôçóôåßôå ÷ñçóéìïðïéüíôáò ôï built-in ÷áñáêôçñéóôéêü ôùí Windows ãéá "Scheduled Tasks".

        +

        -

        10. Äçìéïõñãßá åíüò êáéíïýñãéïõ ìáèÞìáôïò

        +

        10. Äçìéïõñãßá åíüò êáéíïýñãéïõ ìáèÞìáôïò

        Ôþñá ðïõ ôï Moodle ôñÝ÷åé êáíïíéêÜ, ìðïñåßôå íá äçìéïõñãÞóåôå Ýíá ìÜèçìá.

        ÅðéëÝîôå "Create a new course" áðü ôçí óåëßäá ôïõ äéá÷åéñéóôÞ (Þ áðï ôïõò óõíäÝóìïõå @@ -366,12 +364,11 @@ php_value post_max_size 2M "Add a new user" óôçí óåëßäá ôïõ äéá÷åéñéóôÞ.

        Ìþëéò ãßíåé, ôï ìÜèçìá åßíáé Ýôïéìï íá ðñïóáñìïóôåß óôéò áðáéôÞóåéò óáò, êáé åßíáé ðñïóâÜóéìï ìÝóù ôïõ óõíäÝóìïõ "Courses" óôçí áñ÷éêÞ óåëßäá.

        -

        Äåßôå ôï "Åã÷åéñßäéï ôïõ Äáóêáëïý" ãéá ðåñéóóüôåñåò ðëçñïöïñßåò óôçí +

        Äåßôå ôï "Åã÷åéñßäéï ôïõ Äáóêáëïý" ãéá ðåñéóóüôåñåò ðëçñïöïñßåò óôçí êáôáóêåõÞ ôùí ìáèçìÜôùí.

        -

         

        -

        Ôåêìçñßùóç ôïõ Moodle

        -

        Version: $Id$

        +

         

        +

        Ôåêìçñßùóç ôïõ Moodle

        +

        Version: $Id$

        - - \ No newline at end of file + diff --git a/lang/el/docs/installamp.html b/lang/el/docs/installamp.html index 33bef9c22fe..93936c6d61d 100755 --- a/lang/el/docs/installamp.html +++ b/lang/el/docs/installamp.html @@ -1,370 +1,184 @@ - - - - - Moodle Docs: Installing PHP and MySQL - - - - - - - - - - - - - -

        ÅãêáôÜóôáóç ôùí Apache, MySQL êáé PHP

        - -

        Ôï Moodle óå ìéá ãëþóóá script ðïõ ëÝãåôáé PHP, êáé áðïèçêåýåé ôá ðåñéóóüôåñá - - áðü ôá äåäïìÝíá óå ìéá âÜóç äåäïìÝíùí. Ç âÜóç äåäïìÝíùí ðïõ óõóôÞíïõìå åßíáé - - ç MySQL. Ðñéí ôçí åãêáôÜóôáóç ôïõ Moodle ðñÝðåé íá Ý÷åéò åãêáôáóôÞóåé ôï PHP - - êáé ìéá âÜóç äåäïìÝíùí ðïõ íá åßíáé óå ëåéôïõñãßá ãéá íá ìåôáôñÝøåéò ôïí õðïëïãéóôÞ - - óïõ óå ëåéôïõñãéêÞ ðëáôöüñìá web server. ÁõôÜ ôá ðáêÝôá ìðïñåß íá åßíáé ðåñßðëïêá - - óôçí åãêáôÜóôáóç ãéá ôïí ìÝóï ÷ñÞóôç, ïðüôå áõôÞ ç óåëßäá Ý÷åé ãñáöôåß óôçí - - ðñïóðÜèåéá íá ãßíåé ç äéáäéêáóßá áõôÞ üóï ôï äõíáôüí ðéï áðëÞ ãéá ôéò äéÜöïñåò - - ðëáôöüñìåò.

        - - - - - -

        Õðçñåóßá Hosting

        - -
        - -

        Äõóôõ÷þò ïé õðçñåóßåò hosting äéáöÝñïõí áñêåôÜ óôïí ôñüðï ëåéôïõñãßáò. ÊÜðïéåò - - åãêáèéóôïýí áêüìá êáé ôï Moodle ãéá óÝíá.

        - -

        Ïé ðåñéóóüôåñåò ðñïóöÝñïõí Ýíá control panel âáóéóìÝíï óôï web ãéá íá åëÝã÷åéò - - ôï site óïõ, íá äçìéïõñãåßò âÜóåéò äåäïìÝíùí êáé íá åãêáèéóôÜò cron. ÌåñéêÜ - - ìðïñïýí áêüìç íá ðñïóöÝñïõí ôåëéêÞ ðñüóâáóç ìÝóù ssh, Ýôóé þóôå íá ìðïñåßò - - íá ÷ñçóéìïðïéåßò ôéò åíôïëÝò ãéá íá êÜíåéò äéÜöïñá ðñÜãìáôá.

        - -

        ÐñÝðåé íá äïõëåýåéò ìå ôïí äéêü óïõ ôñüðï ìÝóá óôïí Ïäçãü - - åãêáôÜóôáóçò êáé íá êÜíåéò Ýíá âÞìá êÜèå öïñÜ. Ñþôçóå ôïí hosting provider - - áí êïëëÞóåéò ðïõèåíÜ.

        - -

         

        - -
        - -

        Mac OS X

        - -
        - -

        Ï åõêïëüôåñïò ôñüðïò íá ôï êÜíåéò áõôü åßíáé ç ÷ñÞóç ôïõ Apache server ðïõ - - ðáñÝ÷åé ç Apple êáé ç ðñïóèÞêç PHP êáé MySQL ìå ôç ÷ñÞóç ôùí ðáêÝôùí Marc - - Liyanage's. Êáé ïé äýï óåëßäåò ðáñáêÜôù Ý÷ïõí êáëÝò ïäçãßåò:

        - -
        - -

        PHP: ÊáôåâÜóôå áðü åäþ: http://www.entropy.ch/software/macosx/php/

        - -

        MySQL: ÊáôåâÜóôå áðü åäþ: http://www.entropy.ch/software/macosx/mysql/

        - -
        - -

        ÌåôÜ ôçí åãêáôÜóôáóç áõôþí ï Ïäçãüò åãêáôÜóôáóçò - - ðñÝðåé íá åßíáé óáöÞò.

        - -

        ¸íá ðéï ëåðôïìåñÝò ðÝñáóìá åßíáé åäþ: http://moodle.org/wiki/index.php/InstallingMoodle

        - -

         

        - -
        - -

        Redhat Linux

        - -
        - -

        ÐñÝðåé íá åãêáôáóôÞóåéò üëá ôá äéáèÝóéìá RPM ãéá Apache, PHP êáé MySQL. ¸íá - - ðáêÝôï ðïõ óõ÷íÜ îå÷íïýí ïé Üíèñùðïé åßíáé ôï php-mysql ôï ïðïßï åßíáé áðáñáßôçôï - - ãéá PHP MySQL.

        - -

        Åöüóïí åãêáôáóôáèïýí áõôÜ ï Ïäçãüò åãêáôÜóôáóçò - - ðñÝðåé íá åßíáé óáöÞò.

        - -

        ¸íá ðéï ëåðôïìåñÝò ðÝñáóìá åßíáé åäþ: http://moodle.org/wiki/index.php/InstallingMoodle

        - -
        - -

         

        - -

        Windows

        - -
        - -

        Ï åõêïëüôåñïò ôñüðïò ãéá íá ôï êÜíåéò áõôü åßíáé íá ÷ñçóéìïðïéÞóåéò EasyPHP, - - Ýíá ðáêÝôï ðïõ óõóóùñåýåé üëï ôï ëïãéóìéêü ðïõ ÷ñåéÜæåóáé, óå ìéá ìüíï åöáñìïãÞ - - ôùí Windows. Åäþ åßíáé ôá âÞìáôá áðü ôçí áñ÷Þ ùò ôï ôÝëïò:

        - -
          - -
        1. Ðñþôá, áí Ý÷åéò îáíáåãêáôáóôÞóåé ôç MySQL (áêüìá êáé óáí ìÝñïò åíüò Üëëïõ - - ðáêÝôïõ), áðåãêáôÝóôçóÝ ôï, äéÝãñáøå üëá ôá áñ÷åßá MySQL êáé âåâáéþóïõ üôé - - äéÝãñáøåò ôá c:\my.cnf êáé c:\windows\my.ini. - - ºóùò íá èåò íá åñåõíÞóåéò êáé íá äéáãñÜøåéò ÏËÁ ôá áñ÷åßá ìå ôï üíïìá my.cnf - - Þ my.ini.
        2. - -
        3. Áí Ý÷åéò ðïôÝ åãêáôáóôÞóåé ôï PHP äéÝãñáøå üëá ôá áñ÷åßá ìå ôï üíïìá - - php4ts.dll áðü ôïí êáôÜëïãï ôùí Windows, êáèþò êáé ôá áñ÷åßá - - ìå üíïìá php.ini.
        4. - -
        5. ÊáôÝâáóå ôï EasyPHP áðü åäþ: http://www.easyphp.org/telechargements/dn.php?F=easyphp1-6.php3 - - (ðåñßðïõ 10 Mb)
        6. - -
        7. ÔñÝîå ôï áñ÷åßï: easyphp1-6_setup.exe. Ç äéáäéêáóßá - - åãêáôÜóôáóçò åßíáé óôá ÃáëëéêÜ áëëÜ åßíáé Ýôóé êé áëëéþò óáí ôçí åãêáôÜóôáóç - - ïðïéïõäÞðïôå Üëëïõ ðñïãñÜììáôïò ôùí Windows - ç óõìâïõëÞ åßíáé íá äÝ÷åóå - - üôé åßíáé ðñïåðéëåãìÝíï êáé íá áöÞíåéò íá åãêáôáóôáèåß üëï. Óçìåßùóå üôé - - "Suivant" óçìáßíåé Åðüìåíï êáé "Oui" óçìáßíåé Íáé.
        8. - -
        9. Óôï ôÝëïò ôçò åãêáôÜóôáóçò Üöçóå ôï checkbox åðéëåãìÝíï óôï "Lancer - - EasyPHP" (Åêêßíçóç ôïõ EasyPHP) êáé êÜíå êëéê óôï êïõìðß 'Terminer". - - ºóùò óå óôåßëåé óå êÜðïéá éóôïóåëßäá ìå ðëçñïöïñßåò ôçí ïðïßá ìðïñåßò íá - - áãíïÞóåéò.
        10. - -
        11. Áí üëá ðÞãáí êáëÜ - óõã÷áñçôÞñéá! Ôá Apache, PHP êáé MySQL åãêáôáóôÜèçêáí - - êáé ëåéôïõñãïýí! ÐñÝðåé íá âëÝðåéò Ýíá ìáýñï E óôç ãñáììÞ åñãáëåßùí óáò. - - Ìðïñåßò íá êÜíåéò äåîß êëéê ó' áõôü ãéá íá ëÜâåéò Ýíá ìåíïý ôï ïðïßï èá - - óïõ åðéôñÝøåé íá åëÝã÷åéò ôá ôñÝ÷ïíôá ðñïãñÜììáôá, áëëÜ äåí èá ôï ÷ñåéáóôåßò - - áõôü ðñïò ôï ðáñüí.
        12. - -
        13. Ôï åðüìåíï ðñÜãìá ðïõ ÷ñåéÜæåôáé íá êÜíåéò åßíáé ç åãêáôÜóôáóç ìéáò âÜóçò - - äåäïìÝíùí ãéá ÷ñÞóç ôïõ Moodle. ×ñçóéìïðïéþíôáò Ýíáí browser, ðÞãáéíå óôï - - http://localhost/mysql/ - - (ðñüóåîå ôçí ôåëåõôáßá êÜèåôï).
        14. - -
        15. Áí óïõ æçôçèåß Ýíá üíïìá ÷ñÞóôç, ÷ñçóéìïðïßçóå ôï "root" ìå - - êåíü êùäéêü ðñüóâáóçò. ÐñÝðåé íá äåéò Ýíá phpMyAdmin web interface ðïõ óïõ - - åðéôñÝðåé íá äçìéïõñãåßò íÝåò âÜóåéò äåäïìÝíùí êáé ëïãáñéáóìïýò ÷ñçóôþí.
        16. - -
        17. Äçìéïýñãçóå ìéá íÝá âÜóç äåäïìÝíùí ðëçêôñïëïãþíôáò "moodle" - - óôï ðåäßï êáé êÜíïíôáò êëéê óôï êïõìðß "Äçìéïõñãßá". Åýêïëï!
        18. - -
        19. Ìðïñåßò áêüìá íá äçìéïõñãÞóåéò Ýíáí íÝï ÷ñÞóôç ãéá íá Ý÷åéò ðñüóâáóç óôç - - âÜóç äåäïìÝíùí óïõ áí ôï èåò. Áõôü ìðïñåß íá åßíáé ëßãï ðåñßðëïêï ãéá Ýíáí - - áñ÷Üñéï ÷ñÞóôç êé Ýôóé ìðïñåß áðëþò íá èåò íá ÷ñçóéìïðïéÞóåéò ôïí õðÜñ÷ïíôá - - ÷ñÞóôç "root" ÷ùñßò êùäéêü ðñüóâáóçò óôï Moodle ãéá ôþñá, êáé - - íá ôï äéïñèþóåéò áñãüôåñá.
        20. - -
        21. Åßóáé Ýôïéìïò íá åãêáôáóôÞóåéò ôï Moodle! ÊáôÝâáóå ôçí ôåëåõôáßá Ýêäïóç - - ôïõ Moodle áðü ôï http://moodle.org/download, - - Ýðåéôá êÜíå unzip óôï áñ÷åßï.
        22. - -
        23. ÁíôÝãñáøå ôá áñ÷åßá ôïõ moodle óôï C:\Program Files\EasyPHP\www. - - Ìðïñåßò åßôå íá áíôéãñÜøåéò ïëüêëçñï ôïí êáôÜëïãï moodle (ð.÷. - - C:\Program Files\EasyPHP\www\moodle) Þ íá áíôéãñÜøåéò üëá ôá ðåñéå÷üìåíá - - ôïõ êáôáëüãïõ ôïõ moodle. Áí åðéëÝîåéò ôç äåýôåñç åðéëïãÞ ôüôå èá ìðïñåßò - - íá Ý÷åéò ðñüóâáóç óôçí áñ÷éêÞ óåëßäá ôïõ Moodle ÷ñçóéìïðïéþíôáò http://localhost/ - - áíôß ãéá http://localhost/moodle/.
        24. - -
        25. Äçìéïýñãçóå Ýíáí íÝï êåíü öÜêåëï êÜðïõ áëëïý ãéá íá áðïèçêåýåéò öïñôùìÝíá - - áñ÷åßá ôïõ Moodle, ð.÷.: C:\moodledata
        26. - -
        27. Ìðåò óôïí öÜêåëï ôïõ Moodle. Äçìéïýñãçóå Ýíá áíôßãñáöï ôïõ config-dist.php, - - êáé ïíüìáóÝ ôï config.php
        28. - -
        29. ÅðåîåñãÜóïõ ôï Edit config.php ÷ñçóéìïðïéþíôáò Ýíáí åðåîåñãáóôÞ êåéìÝíïõ - - (Ôï ÓçìåéùìáôÜñéï êÜíåé, áðëþò íá åßóáé ðñïóåêôéêüò ãéáôß äåí ðñïóèÝôåé - - áíåðéèýìçôá êåíÜ óôï ôÝëïò).
        30. - -
        31. ÅéóÞãáãå üëåò ôéò ðëçñïöïñßåò ôçò íÝáò óïõ âÜóçò äåäïìÝíùí:
          - - $CFG->dbtype = 'mysql';
          - - $CFG->dbhost = 'localhost';
          - - $CFG->dbname = 'moodle';
          - - $CFG->dbuser = 'root';
          - - $CFG->dbpass = '';
          - - $CFG->dbpersist = true;
          - - $CFG->prefix = 'mdl_';
          - -
        32. - -
        33. Êáé üëåò ôéò äéáäñïìÝò áñ÷åßùí:
          - - $CFG->wwwroot = 'http://localhost/moodle'; // Use an external address - - if you know it.
          - - $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
          - - $CFG->dataroot = 'C:\moodledata';
          - -
        34. - -
        35. ÁðïèÞêåõóå ôï config.php - ìðïñåßò íá áãíïÞóåéò ôéò Üëëåò ñõèìßóåéò áí - - õðÜñ÷ïõí.
        36. - -
        37. Ó÷åäüí ôåëåßùóåò! Ç õðüëïéðç åãêáôÜóôáóç âáóßæåôáé üëç óôï web. Ìðåò óôï - - http://localhost/moodle/admin/ - - ãéá íá óõíå÷ßóåéò ôçí åãêáôÜóôáóç ìÝóù ôïõ browser.
        38. - -
        39. Ãéá íá ÷ñçóéìïðïéÞóåéò zip áñ÷åßá ìå ôï Moodle (ãéá ðáñÜäåéãìá ôá backups - - ÷ñçóéìïðïéïýí zip) ßóùò ÷ñåéáóôåß íá åíåñãïðïéÞóåéò ôï "zlib". - - Ìðïñåßò íá ôï êÜíåéò áõôü ðçãáßíïíôáò óôïí êáôÜëïãï EasyPHP (C:\Program - - Files\EasyPHP), êáé ôñÝ÷ïíôáò ôï ðñüãñáììá phpini.exe åêåß. ÔóåêÜñéóå - - ôï checkbox äßðëá óôï "zlib.dll". Êëåßóå áõôü ôï ðáñÜèõñï, Ýðåéôá - - ðÞãáéíå óôï ìáýñï E óôç ãñáììÞ åñãáëåßùí êáé êÜíå äåîß êëéê ãéá íá ëÜâåéò - - Ýíá ìåíïý - åðÝëåîå "Åðáíåêêßíçóç" áðü áõôü ôï ìåíïý.
        40. - -
        41. ÔÝëïò, ÷ñåéÜæåôáé íá åãêáôáóôÞóåéò êÜðïéïõ åßäïõò cron. Äåò ôïí Ïäçãü - - åãêáôÜóôáóçò ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò.
        42. - -
        - -

        Áí äåí ÷ñçóéìïðïéåßò Þ äåí ìðïñåßò íá ÷ñçóéìïðïéÞóåéò ôï EasyPHP, åäþ õðÜñ÷ïõí - - ìåñéêÝò óõìâïõëÝò ãéá íá äéáóöáëßóåéò üôé ôï PHP Ý÷åé åãêáôáóôáèåß óùóôÜ êáé - - íá áðïöýãåéò óõíçèéóìÝíá ðñïâëÞìáôá:

        - -
          - -
        • Âåâáéþóïõ üôé åßíáé åíåñãïðïéçìÝíç ç åíüôçôá GD þóôå ôï Moodle íá ìðïñåß - - íá åðåîåñãáóôåß åéêüíåò - ßóùò íá ÷ñåéáóôåß íá åðåîåñãáóôåßò ôï php.ini - - êáé íá áöáéñÝóåéò ôï ó÷üëéï (;) áðü ôç ãñáììÞ: 'extension=php_gd2.dll'. - -
        • - -
        • Âåâáéþóïõ üôé åßíáé åíåñãïðïéçìÝíç ç åíüôçôá Zlib þóôå íá ìðïñåßò íá äçìéïõñãÞóåéò - - êáé íá áíïßîåéò ôá áñ÷åßá zip ìÝóá áðü ôï Moodle.
        • - -
        • Âåâáéþóïõ üôé åìöáíßæïíôáé ïé óõíåäñßåò - ßóùò ÷ñåéóôåß íá åðåîåñãáóôåßò - - ôï php.ini êáé íá äéïñèþóåéò ôïí êáôÜëïãï session.save_path - - - áíôß ãéá ôï ðñïêáèïñéóìÝíï "/tmp" ÷ñçóéìïðïßçóå Ýíáí êáôÜëïãï ôùí Windows - - üðùò ôïí "c:/temp".
        • - -
        - -
        - -

         

        - -

        Moodle Documentation

        - -

        Version: $Id$

        - - - - - + + Moodle Docs: Installing PHP and MySQL + + + + + + +

        ÅãêáôÜóôáóç ôùí Apache, MySQL êáé PHP

        +

        Ôï Moodle óå ìéá ãëþóóá script ðïõ ëÝãåôáé PHP, êáé áðïèçêåýåé ôá ðåñéóóüôåñá + áðü ôá äåäïìÝíá óå ìéá âÜóç äåäïìÝíùí. Ç âÜóç äåäïìÝíùí ðïõ óõóôÞíïõìå åßíáé + ç MySQL. Ðñéí ôçí åãêáôÜóôáóç ôïõ Moodle ðñÝðåé íá Ý÷åéò åãêáôáóôÞóåé ôï PHP + êáé ìéá âÜóç äåäïìÝíùí ðïõ íá åßíáé óå ëåéôïõñãßá ãéá íá ìåôáôñÝøåéò ôïí õðïëïãéóôÞ + óïõ óå ëåéôïõñãéêÞ ðëáôöüñìá web server. ÁõôÜ ôá ðáêÝôá ìðïñåß íá åßíáé ðåñßðëïêá + óôçí åãêáôÜóôáóç ãéá ôïí ìÝóï ÷ñÞóôç, ïðüôå áõôÞ ç óåëßäá Ý÷åé ãñáöôåß óôçí + ðñïóðÜèåéá íá ãßíåé ç äéáäéêáóßá áõôÞ üóï ôï äõíáôüí ðéï áðëÞ ãéá ôéò äéÜöïñåò + ðëáôöüñìåò.

        + + +

        Õðçñåóßá Hosting

        +
        +

        Äõóôõ÷þò ïé õðçñåóßåò hosting äéáöÝñïõí áñêåôÜ óôïí ôñüðï ëåéôïõñãßáò. ÊÜðïéåò + åãêáèéóôïýí áêüìá êáé ôï Moodle ãéá óÝíá.

        +

        Ïé ðåñéóóüôåñåò ðñïóöÝñïõí Ýíá control panel âáóéóìÝíï óôï web ãéá íá åëÝã÷åéò + ôï site óïõ, íá äçìéïõñãåßò âÜóåéò äåäïìÝíùí êáé íá åãêáèéóôÜò cron. ÌåñéêÜ + ìðïñïýí áêüìç íá ðñïóöÝñïõí ôåëéêÞ ðñüóâáóç ìÝóù ssh, Ýôóé þóôå íá ìðïñåßò + íá ÷ñçóéìïðïéåßò ôéò åíôïëÝò ãéá íá êÜíåéò äéÜöïñá ðñÜãìáôá.

        +

        ÐñÝðåé íá äïõëåýåéò ìå ôïí äéêü óïõ ôñüðï ìÝóá óôïí Ïäçãü + åãêáôÜóôáóçò êáé íá êÜíåéò Ýíá âÞìá êÜèå öïñÜ. Ñþôçóå ôïí hosting provider + áí êïëëÞóåéò ðïõèåíÜ.

        +

         

        +
        +

        Mac OS X

        +
        +

        Ï åõêïëüôåñïò ôñüðïò íá ôï êÜíåéò áõôü åßíáé ç ÷ñÞóç ôïõ Apache server ðïõ + ðáñÝ÷åé ç Apple êáé ç ðñïóèÞêç PHP êáé MySQL ìå ôç ÷ñÞóç ôùí ðáêÝôùí Marc + Liyanage's. Êáé ïé äýï óåëßäåò ðáñáêÜôù Ý÷ïõí êáëÝò ïäçãßåò:

        +
        +

        PHP: ÊáôåâÜóôå áðü åäþ: http://www.entropy.ch/software/macosx/php/

        +

        MySQL: ÊáôåâÜóôå áðü åäþ: http://www.entropy.ch/software/macosx/mysql/

        +
        +

        ÌåôÜ ôçí åãêáôÜóôáóç áõôþí ï Ïäçãüò åãêáôÜóôáóçò + ðñÝðåé íá åßíáé óáöÞò.

        +

        ¸íá ðéï ëåðôïìåñÝò ðÝñáóìá åßíáé åäþ: http://moodle.org/wiki/index.php/InstallingMoodle

        +

         

        +
        +

        Redhat Linux

        +
        +

        ÐñÝðåé íá åãêáôáóôÞóåéò üëá ôá äéáèÝóéìá RPM ãéá Apache, PHP êáé MySQL. ¸íá + ðáêÝôï ðïõ óõ÷íÜ îå÷íïýí ïé Üíèñùðïé åßíáé ôï php-mysql ôï ïðïßï åßíáé áðáñáßôçôï + ãéá PHP MySQL.

        +

        Åöüóïí åãêáôáóôáèïýí áõôÜ ï Ïäçãüò åãêáôÜóôáóçò + ðñÝðåé íá åßíáé óáöÞò.

        +

        ¸íá ðéï ëåðôïìåñÝò ðÝñáóìá åßíáé åäþ: http://moodle.org/wiki/index.php/InstallingMoodle

        +
        +

         

        +

        Windows

        +
        +

        Ï åõêïëüôåñïò ôñüðïò ãéá íá ôï êÜíåéò áõôü åßíáé íá ÷ñçóéìïðïéÞóåéò EasyPHP, + Ýíá ðáêÝôï ðïõ óõóóùñåýåé üëï ôï ëïãéóìéêü ðïõ ÷ñåéÜæåóáé, óå ìéá ìüíï åöáñìïãÞ + ôùí Windows. Åäþ åßíáé ôá âÞìáôá áðü ôçí áñ÷Þ ùò ôï ôÝëïò:

        +
          +
        1. Ðñþôá, áí Ý÷åéò îáíáåãêáôáóôÞóåé ôç MySQL (áêüìá êáé óáí ìÝñïò åíüò Üëëïõ + ðáêÝôïõ), áðåãêáôÝóôçóÝ ôï, äéÝãñáøå üëá ôá áñ÷åßá MySQL êáé âåâáéþóïõ üôé + äéÝãñáøåò ôá c:\my.cnf êáé c:\windows\my.ini. + ºóùò íá èåò íá åñåõíÞóåéò êáé íá äéáãñÜøåéò ÏËÁ ôá áñ÷åßá ìå ôï üíïìá my.cnf + Þ my.ini.
        2. +
        3. Áí Ý÷åéò ðïôÝ åãêáôáóôÞóåé ôï PHP äéÝãñáøå üëá ôá áñ÷åßá ìå ôï üíïìá + php4ts.dll áðü ôïí êáôÜëïãï ôùí Windows, êáèþò êáé ôá áñ÷åßá + ìå üíïìá php.ini.
        4. +
        5. ÊáôÝâáóå ôï EasyPHP áðü åäþ: http://www.easyphp.org/telechargements/dn.php?F=easyphp1-6.php3 + (ðåñßðïõ 10 Mb)
        6. +
        7. ÔñÝîå ôï áñ÷åßï: easyphp1-6_setup.exe. Ç äéáäéêáóßá + åãêáôÜóôáóçò åßíáé óôá ÃáëëéêÜ áëëÜ åßíáé Ýôóé êé áëëéþò óáí ôçí åãêáôÜóôáóç + ïðïéïõäÞðïôå Üëëïõ ðñïãñÜììáôïò ôùí Windows - ç óõìâïõëÞ åßíáé íá äÝ÷åóå + üôé åßíáé ðñïåðéëåãìÝíï êáé íá áöÞíåéò íá åãêáôáóôáèåß üëï. Óçìåßùóå üôé + "Suivant" óçìáßíåé Åðüìåíï êáé "Oui" óçìáßíåé Íáé.
        8. +
        9. Óôï ôÝëïò ôçò åãêáôÜóôáóçò Üöçóå ôï checkbox åðéëåãìÝíï óôï "Lancer + EasyPHP" (Åêêßíçóç ôïõ EasyPHP) êáé êÜíå êëéê óôï êïõìðß 'Terminer". + ºóùò óå óôåßëåé óå êÜðïéá éóôïóåëßäá ìå ðëçñïöïñßåò ôçí ïðïßá ìðïñåßò íá + áãíïÞóåéò.
        10. +
        11. Áí üëá ðÞãáí êáëÜ - óõã÷áñçôÞñéá! Ôá Apache, PHP êáé MySQL åãêáôáóôÜèçêáí + êáé ëåéôïõñãïýí! ÐñÝðåé íá âëÝðåéò Ýíá ìáýñï E óôç ãñáììÞ åñãáëåßùí óáò. + Ìðïñåßò íá êÜíåéò äåîß êëéê ó' áõôü ãéá íá ëÜâåéò Ýíá ìåíïý ôï ïðïßï èá + óïõ åðéôñÝøåé íá åëÝã÷åéò ôá ôñÝ÷ïíôá ðñïãñÜììáôá, áëëÜ äåí èá ôï ÷ñåéáóôåßò + áõôü ðñïò ôï ðáñüí.
        12. +
        13. Ôï åðüìåíï ðñÜãìá ðïõ ÷ñåéÜæåôáé íá êÜíåéò åßíáé ç åãêáôÜóôáóç ìéáò âÜóçò + äåäïìÝíùí ãéá ÷ñÞóç ôïõ Moodle. ×ñçóéìïðïéþíôáò Ýíáí browser, ðÞãáéíå óôï + http://localhost/mysql/ + (ðñüóåîå ôçí ôåëåõôáßá êÜèåôï).
        14. +
        15. Áí óïõ æçôçèåß Ýíá üíïìá ÷ñÞóôç, ÷ñçóéìïðïßçóå ôï "root" ìå + êåíü êùäéêü ðñüóâáóçò. ÐñÝðåé íá äåéò Ýíá phpMyAdmin web interface ðïõ óïõ + åðéôñÝðåé íá äçìéïõñãåßò íÝåò âÜóåéò äåäïìÝíùí êáé ëïãáñéáóìïýò ÷ñçóôþí.
        16. +
        17. Äçìéïýñãçóå ìéá íÝá âÜóç äåäïìÝíùí ðëçêôñïëïãþíôáò "moodle" + óôï ðåäßï êáé êÜíïíôáò êëéê óôï êïõìðß "Äçìéïõñãßá". Åýêïëï!
        18. +
        19. Ìðïñåßò áêüìá íá äçìéïõñãÞóåéò Ýíáí íÝï ÷ñÞóôç ãéá íá Ý÷åéò ðñüóâáóç óôç + âÜóç äåäïìÝíùí óïõ áí ôï èåò. Áõôü ìðïñåß íá åßíáé ëßãï ðåñßðëïêï ãéá Ýíáí + áñ÷Üñéï ÷ñÞóôç êé Ýôóé ìðïñåß áðëþò íá èåò íá ÷ñçóéìïðïéÞóåéò ôïí õðÜñ÷ïíôá + ÷ñÞóôç "root" ÷ùñßò êùäéêü ðñüóâáóçò óôï Moodle ãéá ôþñá, êáé + íá ôï äéïñèþóåéò áñãüôåñá.
        20. +
        21. Åßóáé Ýôïéìïò íá åãêáôáóôÞóåéò ôï Moodle! ÊáôÝâáóå ôçí ôåëåõôáßá Ýêäïóç + ôïõ Moodle áðü ôï http://moodle.org/download, + Ýðåéôá êÜíå unzip óôï áñ÷åßï.
        22. +
        23. ÁíôÝãñáøå ôá áñ÷åßá ôïõ moodle óôï C:\Program Files\EasyPHP\www. + Ìðïñåßò åßôå íá áíôéãñÜøåéò ïëüêëçñï ôïí êáôÜëïãï moodle (ð.÷. + C:\Program Files\EasyPHP\www\moodle) Þ íá áíôéãñÜøåéò üëá ôá ðåñéå÷üìåíá + ôïõ êáôáëüãïõ ôïõ moodle. Áí åðéëÝîåéò ôç äåýôåñç åðéëïãÞ ôüôå èá ìðïñåßò + íá Ý÷åéò ðñüóâáóç óôçí áñ÷éêÞ óåëßäá ôïõ Moodle ÷ñçóéìïðïéþíôáò http://localhost/ + áíôß ãéá http://localhost/moodle/.
        24. +
        25. Äçìéïýñãçóå Ýíáí íÝï êåíü öÜêåëï êÜðïõ áëëïý ãéá íá áðïèçêåýåéò öïñôùìÝíá + áñ÷åßá ôïõ Moodle, ð.÷.: C:\moodledata
        26. +
        27. Ìðåò óôïí öÜêåëï ôïõ Moodle. Äçìéïýñãçóå Ýíá áíôßãñáöï ôïõ config-dist.php, + êáé ïíüìáóÝ ôï config.php
        28. +
        29. ÅðåîåñãÜóïõ ôï Edit config.php ÷ñçóéìïðïéþíôáò Ýíáí åðåîåñãáóôÞ êåéìÝíïõ + (Ôï ÓçìåéùìáôÜñéï êÜíåé, áðëþò íá åßóáé ðñïóåêôéêüò ãéáôß äåí ðñïóèÝôåé + áíåðéèýìçôá êåíÜ óôï ôÝëïò).
        30. +
        31. ÅéóÞãáãå üëåò ôéò ðëçñïöïñßåò ôçò íÝáò óïõ âÜóçò äåäïìÝíùí:
          + $CFG->dbtype = 'mysql';
          + $CFG->dbhost = 'localhost';
          + $CFG->dbname = 'moodle';
          + $CFG->dbuser = 'root';
          + $CFG->dbpass = '';
          + $CFG->dbpersist = true;
          + $CFG->prefix = 'mdl_';
          +
        32. +
        33. Êáé üëåò ôéò äéáäñïìÝò áñ÷åßùí:
          + $CFG->wwwroot = 'http://localhost/moodle'; // Use an external address + if you know it.
          + $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
          + $CFG->dataroot = 'C:\moodledata';
          +
        34. +
        35. ÁðïèÞêåõóå ôï config.php - ìðïñåßò íá áãíïÞóåéò ôéò Üëëåò ñõèìßóåéò áí + õðÜñ÷ïõí.
        36. +
        37. Ó÷åäüí ôåëåßùóåò! Ç õðüëïéðç åãêáôÜóôáóç âáóßæåôáé üëç óôï web. Ìðåò óôï + http://localhost/moodle/admin/ + ãéá íá óõíå÷ßóåéò ôçí åãêáôÜóôáóç ìÝóù ôïõ browser.
        38. +
        39. Ãéá íá ÷ñçóéìïðïéÞóåéò zip áñ÷åßá ìå ôï Moodle (ãéá ðáñÜäåéãìá ôá backups + ÷ñçóéìïðïéïýí zip) ßóùò ÷ñåéáóôåß íá åíåñãïðïéÞóåéò ôï "zlib". + Ìðïñåßò íá ôï êÜíåéò áõôü ðçãáßíïíôáò óôïí êáôÜëïãï EasyPHP (C:\Program + Files\EasyPHP), êáé ôñÝ÷ïíôáò ôï ðñüãñáììá phpini.exe åêåß. ÔóåêÜñéóå + ôï checkbox äßðëá óôï "zlib.dll". Êëåßóå áõôü ôï ðáñÜèõñï, Ýðåéôá + ðÞãáéíå óôï ìáýñï E óôç ãñáììÞ åñãáëåßùí êáé êÜíå äåîß êëéê ãéá íá ëÜâåéò + Ýíá ìåíïý - åðÝëåîå "Åðáíåêêßíçóç" áðü áõôü ôï ìåíïý.
        40. +
        41. ÔÝëïò, ÷ñåéÜæåôáé íá åãêáôáóôÞóåéò êÜðïéïõ åßäïõò cron. Äåò ôïí Ïäçãü + åãêáôÜóôáóçò ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò.
        42. +
        +

        Áí äåí ÷ñçóéìïðïéåßò Þ äåí ìðïñåßò íá ÷ñçóéìïðïéÞóåéò ôï EasyPHP, åäþ õðÜñ÷ïõí + ìåñéêÝò óõìâïõëÝò ãéá íá äéáóöáëßóåéò üôé ôï PHP Ý÷åé åãêáôáóôáèåß óùóôÜ êáé + íá áðïöýãåéò óõíçèéóìÝíá ðñïâëÞìáôá:

        +
          +
        • Âåâáéþóïõ üôé åßíáé åíåñãïðïéçìÝíç ç åíüôçôá GD þóôå ôï Moodle íá ìðïñåß + íá åðåîåñãáóôåß åéêüíåò - ßóùò íá ÷ñåéáóôåß íá åðåîåñãáóôåßò ôï php.ini + êáé íá áöáéñÝóåéò ôï ó÷üëéï (;) áðü ôç ãñáììÞ: 'extension=php_gd2.dll'. +
        • +
        • Âåâáéþóïõ üôé åßíáé åíåñãïðïéçìÝíç ç åíüôçôá Zlib þóôå íá ìðïñåßò íá äçìéïõñãÞóåéò + êáé íá áíïßîåéò ôá áñ÷åßá zip ìÝóá áðü ôï Moodle.
        • +
        • Âåâáéþóïõ üôé åìöáíßæïíôáé ïé óõíåäñßåò - ßóùò ÷ñåéóôåß íá åðåîåñãáóôåßò + ôï php.ini êáé íá äéïñèþóåéò ôïí êáôÜëïãï session.save_path + - áíôß ãéá ôï ðñïêáèïñéóìÝíï "/tmp" ÷ñçóéìïðïßçóå Ýíáí êáôÜëïãï ôùí Windows + üðùò ôïí "c:/temp".
        • +
        +
        +

         

        +

        Moodle Documentation

        +

        Version: $Id$

        + + \ No newline at end of file diff --git a/lang/el/docs/intro.html b/lang/el/docs/intro.html index 47d02e8b411..6072d06a91d 100644 --- a/lang/el/docs/intro.html +++ b/lang/el/docs/intro.html @@ -1,39 +1,38 @@ - - - - Ôåêìçñßùóç ôïõ Moodle: ÅéóáãùãÞ - - - + + + + Ôåêìçñßùóç ôïõ Moodle: ÅéóáãùãÞ + + + -

        ÅéóáãùãÞ

        +

        ÅéóáãùãÞ

        -

        Ôï Moodle åßíáé Ýíá ðáêÝôï ëïãéóìéêïý ãéá ðáñáãùãÞ äéáäéêôõáêþí ìáèçìÜôùí êáé éóôïóåëßäùí. +

        Ôï Moodle åßíáé Ýíá ðáêÝôï ëïãéóìéêïý ãéá ðáñáãùãÞ äéáäéêôõáêþí ìáèçìÜôùí êáé éóôïóåëßäùí. Åßíáé åÜí áíåñ÷üìåíï, áíáðôõóüììåíï Ýñãï ôï ïðïßï ó÷åäéÜóôçêå ãéá íá õðïóôçñßæåé ôçí - êïéíùíéêÞ óõíôáãìáôïëïãßá óôï ðëáßóéï åñãáóßáò ôçò åêðáßäåõóçò.

        + êïéíùíéêÞ óõíôáãìáôïëïãßá óôï ðëáßóéï åñãáóßáò ôçò åêðáßäåõóçò.

        -

        Ôï Moodle ðáñÝ÷åôå äùñåÜí óáí ëïãéóìéêü - Open Source (êÜôù áðü ôçí - GNU Public License). ÂáóéêÜ áõôü óçìáßíåé ïôé ôï Moodle Ý÷åé ðíåõìáôéêÜ äéêáéþìáôá, áëëÜ Ý÷åôå êÜðïéåò - åðéðëÝïí åëåõèåñßåò. ÅðéôñÝðåôáé íá áíôéãñÜöåôå, íá ÷ñçóéìïðïéåßôå êáé íá áëëÜæåôå ôï Moodle õðü ôïí üñï üôé +

        Ôï Moodle ðáñÝ÷åôå äùñåÜí óáí ëïãéóìéêü + Open Source (êÜôù áðü ôçí + GNU Public License). ÂáóéêÜ áõôü óçìáßíåé ïôé ôï Moodle Ý÷åé ðíåõìáôéêÜ äéêáéþìáôá, áëëÜ Ý÷åôå êÜðïéåò + åðéðëÝïí åëåõèåñßåò. ÅðéôñÝðåôáé íá áíôéãñÜöåôå, íá ÷ñçóéìïðïéåßôå êáé íá áëëÜæåôå ôï Moodle õðü ôïí üñï üôé óõìöùíåßôå: íá ðáñÝ÷åôáé ôïí ðçãáßï êþäéêá êáé óå Üëëïõò, íá ìçí ôñïðïðïéÞóåôå Þ áöáéñÝóåôå ôçí åðßóçìç Üäåéá, êáé íá åöïäéÜæåôå ìå áõôÞ ôçí ßäéá Üäåéá ïðïéáäÞðïôå ðáñÜãùãç äïõëåßá. -

        Ôï Moodle ìðïñåß íá ôñÝ÷åé óå ïðïéäÞðïôå óýóôçìá ðïõ ìðïñåß íá ôñÝîåé - PHP, êáé ìðïñåß íá õðïóôçñßæåé ðïëëïýò ôýðïõò âÜóåùí äåäïìÝíùí (éäéáßôåñá MySQL).

        +

        Ôï Moodle ìðïñåß íá ôñÝ÷åé óå ïðïéäÞðïôå óýóôçìá ðïõ ìðïñåß íá ôñÝîåé + PHP, êáé ìðïñåß íá õðïóôçñßæåé ðïëëïýò ôýðïõò âÜóåùí äåäïìÝíùí (éäéáßôåñá MySQL).

        -

        Ç ëÝîç Moodle åßíáé Ýíá áêñùíýìéï áðï ôá Modular Object-Oriented Dynamic Learning +

        Ç ëÝîç Moodle åßíáé Ýíá áêñùíýìéï áðï ôá Modular Object-Oriented Dynamic Learning Environment, ôï ïðïßï åßíáé ðïëý ÷ñÞóéìï ãéá ðñïãñáììáôéóôÝò êáé èåùñéôéêïýò ðÜíù óôçí åêðáßäåõóç.   Åßíáé åðßóçò Ýíá ñÞìá ôï ïðïßï ðåñéãñÜöåé ôçí ðñüïäï ôçò ôåìðåëßáò, óáí ößäé, ìÝóá áðü êÜôé, êÜíïíôáò ôá ðñÜãìáôá üðùò óáò óõìâáßíåé íá ôá êÜíåôå, Ýíá áðïëáõóôéêü êáé áäÝîéï ðåñéâÜëëïí ðïõ óõ÷íÜ ïäçãåß óôçí åíþñáóç êáé ôçí äçìéïõñãßá. Ìå áõôü ôïí ôñüðï áðåõèåßíåôå êáé óôïí ôñüðï ìå ôï ïðïßï áíáðôý÷èçêå ôï Moodle, áëëÜ êáé óôïí ôñüðï ðïõ Ýíáò ìáèçôÞò Þ äÜóêáëïò ìðïñåß íá ðëçóéÜóåé ôçí åêìÜèçóç Þ - ôçí äéäáóêáëßá ìÝóá áðü Ýíá äéáäéêôõáêü ìÜèçìá.

        -


        -

        -

        Ôåêìçñßùóç ôïõ Moodle

        -

        Version: $Id$

        + ôçí äéäáóêáëßá ìÝóá áðü Ýíá äéáäéêôõáêü ìÜèçìá.

        +


        +

        +

        Ôåêìçñßùóç ôïõ Moodle

        +

        Version: $Id$

        - - + + diff --git a/lang/el/docs/licence.html b/lang/el/docs/licence.html index 4465539d724..64ddb685cac 100755 --- a/lang/el/docs/licence.html +++ b/lang/el/docs/licence.html @@ -1,65 +1,33 @@ - - - - - Moodle Docs: Copyright License - - - - - - - - - - - -

        ¶äåéá Copyright for Moodle

        - - - -

        Moodle is Copyright © 2001-2003, Martin - - Dougiamas.

        - -

        Áõôü ôï ðñüãñáììá åßíáé äùñåÜí ëïãéóìéêü, ìðïñåßôå íá ôï áíáðáñÜãåôå êáé/Þ - - íá ôï ôñïðïðïéÞóåôå õðü ôïõò üñïõò ôçò GNU General Public License üðùò åêäüèçêå - - áðü ôï Free Software Foundation. Åßôå ç Ýêäïóç 2 ôçò ¶äåéáò Þ (êáôÜ ôç äéêÞ - - óïõ åðéëïãÞ) ïðïéáäÞðïôå åðüìåíç Ýêäïóç.

        - -

        Áõôü ôï ðñüãñáììá äéáíÝìåôáé ìå ôçí åëðßäá üôé èá öáíåß ÷ñÞóéìï, áëëÜ ÷ùñßò - - ÊÁÌÉÁ ÅÃÃÕÇÓÇ, áêüìá êáé ôçò õðïíïïýìåíçò åããýçóçò MERCHANTABILITY or FITNESS - - FOR A PARTICULAR PURPOSE. Äåò óôï GNU General Public License ãéá ðåñéóóüôåñåò - - ëåðôïìÝñåéåò (åðéóõíÜðôåôáé ðáñáêÜôù).
        - -

        - - - -

        - - - -
        		    GNU GENERAL PUBLIC LICENSE
        Version 2, June 1991

        Copyright (C) 1989, 1991 Free Software Foundation, Inc.
        59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
        Everyone is permitted to copy and distribute verbatim copies
        of this license document, but changing it is not allowed.

        Preamble

        The licenses for most software are designed to take away your
        freedom to share and change it. By contrast, the GNU General Public
        License is intended to guarantee your freedom to share and change free
        software--to make sure the software is free for all its users. This
        General Public License applies to most of the Free Software
        Foundation's software and to any other program whose authors commit to
        using it. (Some other Free Software Foundation software is covered by
        the GNU Library General Public License instead.) You can apply it to
        your programs, too.

        When we speak of free software, we are referring to freedom, not
        price. Our General Public Licenses are designed to make sure that you
        have the freedom to distribute copies of free software (and charge for
        this service if you wish), that you receive source code or can get it
        if you want it, that you can change the software or use pieces of it
        in new free programs; and that you know you can do these things.

        To protect your rights, we need to make restrictions that forbid
        anyone to deny you these rights or to ask you to surrender the rights.
        These restrictions translate to certain responsibilities for you if you
        distribute copies of the software, or if you modify it.

        For example, if you distribute copies of such a program, whether
        gratis or for a fee, you must give the recipients all the rights that
        you have. You must make sure that they, too, receive or can get the
        source code. And you must show them these terms so they know their
        rights.

        We protect your rights with two steps: (1) copyright the software, and
        (2) offer you this license which gives you legal permission to copy,
        distribute and/or modify the software.

        Also, for each author's protection and ours, we want to make certain
        that everyone understands that there is no warranty for this free
        software. If the software is modified by someone else and passed on, we
        want its recipients to know that what they have is not the original, so
        that any problems introduced by others will not reflect on the original
        authors' reputations.

        Finally, any free program is threatened constantly by software
        patents. We wish to avoid the danger that redistributors of a free
        program will individually obtain patent licenses, in effect making the
        program proprietary. To prevent this, we have made it clear that any
        patent must be licensed for everyone's free use or not licensed at all.

        The precise terms and conditions for copying, distribution and
        modification follow.

        GNU GENERAL PUBLIC LICENSE
        TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

        0. This License applies to any program or other work which contains
        a notice placed by the copyright holder saying it may be distributed
        under the terms of this General Public License. The "Program", below,
        refers to any such program or work, and a "work based on the Program"
        means either the Program or any derivative work under copyright law:
        that is to say, a work containing the Program or a portion of it,
        either verbatim or with modifications and/or translated into another
        language. (Hereinafter, translation is included without limitation in
        the term "modification".) Each licensee is addressed as "you".

        Activities other than copying, distribution and modification are not
        covered by this License; they are outside its scope. The act of
        running the Program is not restricted, and the output from the Program
        is covered only if its contents constitute a work based on the
        Program (independent of having been made by running the Program).
        Whether that is true depends on what the Program does.

        1. You may copy and distribute verbatim copies of the Program's
        source code as you receive it, in any medium, provided that you
        conspicuously and appropriately publish on each copy an appropriate
        copyright notice and disclaimer of warranty; keep intact all the
        notices that refer to this License and to the absence of any warranty;
        and give any other recipients of the Program a copy of this License
        along with the Program.

        You may charge a fee for the physical act of transferring a copy, and
        you may at your option offer warranty protection in exchange for a fee.

        2. You may modify your copy or copies of the Program or any portion
        of it, thus forming a work based on the Program, and copy and
        distribute such modifications or work under the terms of Section 1
        above, provided that you also meet all of these conditions:

        a) You must cause the modified files to carry prominent notices
        stating that you changed the files and the date of any change.

        b) You must cause any work that you distribute or publish, that in
        whole or in part contains or is derived from the Program or any
        part thereof, to be licensed as a whole at no charge to all third
        parties under the terms of this License.

        c) If the modified program normally reads commands interactively
        when run, you must cause it, when started running for such
        interactive use in the most ordinary way, to print or display an
        announcement including an appropriate copyright notice and a
        notice that there is no warranty (or else, saying that you provide
        a warranty) and that users may redistribute the program under
        these conditions, and telling the user how to view a copy of this
        License. (Exception: if the Program itself is interactive but
        does not normally print such an announcement, your work based on
        the Program is not required to print an announcement.)

        These requirements apply to the modified work as a whole. If
        identifiable sections of that work are not derived from the Program,
        and can be reasonably considered independent and separate works in
        themselves, then this License, and its terms, do not apply to those
        sections when you distribute them as separate works. But when you
        distribute the same sections as part of a whole which is a work based
        on the Program, the distribution of the whole must be on the terms of
        this License, whose permissions for other licensees extend to the
        entire whole, and thus to each and every part regardless of who wrote it.

        Thus, it is not the intent of this section to claim rights or contest
        your rights to work written entirely by you; rather, the intent is to
        exercise the right to control the distribution of derivative or
        collective works based on the Program.

        In addition, mere aggregation of another work not based on the Program
        with the Program (or with a work based on the Program) on a volume of
        a storage or distribution medium does not bring the other work under
        the scope of this License.

        3. You may copy and distribute the Program (or a work based on it,
        under Section 2) in object code or executable form under the terms of
        Sections 1 and 2 above provided that you also do one of the following:

        a) Accompany it with the complete corresponding machine-readable
        source code, which must be distributed under the terms of Sections
        1 and 2 above on a medium customarily used for software interchange; or,

        b) Accompany it with a written offer, valid for at least three
        years, to give any third party, for a charge no more than your
        cost of physically performing source distribution, a complete
        machine-readable copy of the corresponding source code, to be
        distributed under the terms of Sections 1 and 2 above on a medium
        customarily used for software interchange; or,

        c) Accompany it with the information you received as to the offer
        to distribute corresponding source code. (This alternative is
        allowed only for noncommercial distribution and only if you
        received the program in object code or executable form with such
        an offer, in accord with Subsection b above.)

        The source code for a work means the preferred form of the work for
        making modifications to it. For an executable work, complete source
        code means all the source code for all modules it contains, plus any
        associated interface definition files, plus the scripts used to
        control compilation and installation of the executable. However, as a
        special exception, the source code distributed need not include
        anything that is normally distributed (in either source or binary
        form) with the major components (compiler, kernel, and so on) of the
        operating system on which the executable runs, unless that component
        itself accompanies the executable.

        If distribution of executable or object code is made by offering
        access to copy from a designated place, then offering equivalent
        access to copy the source code from the same place counts as
        distribution of the source code, even though third parties are not
        compelled to copy the source along with the object code.

        4. You may not copy, modify, sublicense, or distribute the Program
        except as expressly provided under this License. Any attempt
        otherwise to copy, modify, sublicense or distribute the Program is
        void, and will automatically terminate your rights under this License.
        However, parties who have received copies, or rights, from you under
        this License will not have their licenses terminated so long as such
        parties remain in full compliance.

        5. You are not required to accept this License, since you have not
        signed it. However, nothing else grants you permission to modify or
        distribute the Program or its derivative works. These actions are
        prohibited by law if you do not accept this License. Therefore, by
        modifying or distributing the Program (or any work based on the
        Program), you indicate your acceptance of this License to do so, and
        all its terms and conditions for copying, distributing or modifying
        the Program or works based on it.

        6. Each time you redistribute the Program (or any work based on the
        Program), the recipient automatically receives a license from the
        original licensor to copy, distribute or modify the Program subject to
        these terms and conditions. You may not impose any further
        restrictions on the recipients' exercise of the rights granted herein.
        You are not responsible for enforcing compliance by third parties to
        this License.

        7. If, as a consequence of a court judgment or allegation of patent
        infringement or for any other reason (not limited to patent issues),
        conditions are imposed on you (whether by court order, agreement or
        otherwise) that contradict the conditions of this License, they do not
        excuse you from the conditions of this License. If you cannot
        distribute so as to satisfy simultaneously your obligations under this
        License and any other pertinent obligations, then as a consequence you
        may not distribute the Program at all. For example, if a patent
        license would not permit royalty-free redistribution of the Program by
        all those who receive copies directly or indirectly through you, then
        the only way you could satisfy both it and this License would be to
        refrain entirely from distribution of the Program.

        If any portion of this section is held invalid or unenforceable under
        any particular circumstance, the balance of the section is intended to
        apply and the section as a whole is intended to apply in other
        circumstances.

        It is not the purpose of this section to induce you to infringe any
        patents or other property right claims or to contest validity of any
        such claims; this section has the sole purpose of protecting the
        integrity of the free software distribution system, which is
        implemented by public license practices. Many people have made
        generous contributions to the wide range of software distributed
        through that system in reliance on consistent application of that
        system; it is up to the author/donor to decide if he or she is willing
        to distribute software through any other system and a licensee cannot
        impose that choice.

        This section is intended to make thoroughly clear what is believed to
        be a consequence of the rest of this License.

        8. If the distribution and/or use of the Program is restricted in
        certain countries either by patents or by copyrighted interfaces, the
        original copyright holder who places the Program under this License
        may add an explicit geographical distribution limitation excluding
        those countries, so that distribution is permitted only in or among
        countries not thus excluded. In such case, this License incorporates
        the limitation as if written in the body of this License.

        9. The Free Software Foundation may publish revised and/or new versions
        of the General Public License from time to time. Such new versions will
        be similar in spirit to the present version, but may differ in detail to
        address new problems or concerns.

        Each version is given a distinguishing version number. If the Program
        specifies a version number of this License which applies to it and "any
        later version", you have the option of following the terms and conditions
        either of that version or of any later version published by the Free
        Software Foundation. If the Program does not specify a version number of
        this License, you may choose any version ever published by the Free Software
        Foundation.

        10. If you wish to incorporate parts of the Program into other free
        programs whose distribution conditions are different, write to the author
        to ask for permission. For software which is copyrighted by the Free
        Software Foundation, write to the Free Software Foundation; we sometimes
        make exceptions for this. Our decision will be guided by the two goals
        of preserving the free status of all derivatives of our free software and
        of promoting the sharing and reuse of software generally.

        NO WARRANTY

        11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
        FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
        OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
        PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
        OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
        MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
        TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
        PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
        REPAIR OR CORRECTION.

        12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
        WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
        REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
        INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
        OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
        TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
        YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
        PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
        POSSIBILITY OF SUCH DAMAGES.

        END OF TERMS AND CONDITIONS
        - - - - - -

        Moodle Documentation

        - -

        Version: $Id$

        - - - - - - - + + + + Moodle Docs: Copyright License + + + + + +

        ¶äåéá Copyright for Moodle

        + +

        Moodle is Copyright © 2001-2003, Martin + Dougiamas.

        +

        Áõôü ôï ðñüãñáììá åßíáé äùñåÜí ëïãéóìéêü, ìðïñåßôå íá ôï áíáðáñÜãåôå êáé/Þ + íá ôï ôñïðïðïéÞóåôå õðü ôïõò üñïõò ôçò GNU General Public License üðùò åêäüèçêå + áðü ôï Free Software Foundation. Åßôå ç Ýêäïóç 2 ôçò ¶äåéáò Þ (êáôÜ ôç äéêÞ + óïõ åðéëïãÞ) ïðïéáäÞðïôå åðüìåíç Ýêäïóç.

        +

        Áõôü ôï ðñüãñáììá äéáíÝìåôáé ìå ôçí åëðßäá üôé èá öáíåß ÷ñÞóéìï, áëëÜ ÷ùñßò + ÊÁÌÉÁ ÅÃÃÕÇÓÇ, áêüìá êáé ôçò õðïíïïýìåíçò åããýçóçò MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Äåò óôï GNU General Public License ãéá ðåñéóóüôåñåò + ëåðôïìÝñåéåò (åðéóõíÜðôåôáé ðáñáêÜôù).
        +

        + +

        + +
        		    GNU GENERAL PUBLIC LICENSE
        Version 2, June 1991

        Copyright (C) 1989, 1991 Free Software Foundation, Inc.
        59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
        Everyone is permitted to copy and distribute verbatim copies
        of this license document, but changing it is not allowed.

        Preamble

        The licenses for most software are designed to take away your
        freedom to share and change it. By contrast, the GNU General Public
        License is intended to guarantee your freedom to share and change free
        software--to make sure the software is free for all its users. This
        General Public License applies to most of the Free Software
        Foundation's software and to any other program whose authors commit to
        using it. (Some other Free Software Foundation software is covered by
        the GNU Library General Public License instead.) You can apply it to
        your programs, too.

        When we speak of free software, we are referring to freedom, not
        price. Our General Public Licenses are designed to make sure that you
        have the freedom to distribute copies of free software (and charge for
        this service if you wish), that you receive source code or can get it
        if you want it, that you can change the software or use pieces of it
        in new free programs; and that you know you can do these things.

        To protect your rights, we need to make restrictions that forbid
        anyone to deny you these rights or to ask you to surrender the rights.
        These restrictions translate to certain responsibilities for you if you
        distribute copies of the software, or if you modify it.

        For example, if you distribute copies of such a program, whether
        gratis or for a fee, you must give the recipients all the rights that
        you have. You must make sure that they, too, receive or can get the
        source code. And you must show them these terms so they know their
        rights.

        We protect your rights with two steps: (1) copyright the software, and
        (2) offer you this license which gives you legal permission to copy,
        distribute and/or modify the software.

        Also, for each author's protection and ours, we want to make certain
        that everyone understands that there is no warranty for this free
        software. If the software is modified by someone else and passed on, we
        want its recipients to know that what they have is not the original, so
        that any problems introduced by others will not reflect on the original
        authors' reputations.

        Finally, any free program is threatened constantly by software
        patents. We wish to avoid the danger that redistributors of a free
        program will individually obtain patent licenses, in effect making the
        program proprietary. To prevent this, we have made it clear that any
        patent must be licensed for everyone's free use or not licensed at all.

        The precise terms and conditions for copying, distribution and
        modification follow.

        GNU GENERAL PUBLIC LICENSE
        TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

        0. This License applies to any program or other work which contains
        a notice placed by the copyright holder saying it may be distributed
        under the terms of this General Public License. The "Program", below,
        refers to any such program or work, and a "work based on the Program"
        means either the Program or any derivative work under copyright law:
        that is to say, a work containing the Program or a portion of it,
        either verbatim or with modifications and/or translated into another
        language. (Hereinafter, translation is included without limitation in
        the term "modification".) Each licensee is addressed as "you".

        Activities other than copying, distribution and modification are not
        covered by this License; they are outside its scope. The act of
        running the Program is not restricted, and the output from the Program
        is covered only if its contents constitute a work based on the
        Program (independent of having been made by running the Program).
        Whether that is true depends on what the Program does.

        1. You may copy and distribute verbatim copies of the Program's
        source code as you receive it, in any medium, provided that you
        conspicuously and appropriately publish on each copy an appropriate
        copyright notice and disclaimer of warranty; keep intact all the
        notices that refer to this License and to the absence of any warranty;
        and give any other recipients of the Program a copy of this License
        along with the Program.

        You may charge a fee for the physical act of transferring a copy, and
        you may at your option offer warranty protection in exchange for a fee.

        2. You may modify your copy or copies of the Program or any portion
        of it, thus forming a work based on the Program, and copy and
        distribute such modifications or work under the terms of Section 1
        above, provided that you also meet all of these conditions:

        a) You must cause the modified files to carry prominent notices
        stating that you changed the files and the date of any change.

        b) You must cause any work that you distribute or publish, that in
        whole or in part contains or is derived from the Program or any
        part thereof, to be licensed as a whole at no charge to all third
        parties under the terms of this License.

        c) If the modified program normally reads commands interactively
        when run, you must cause it, when started running for such
        interactive use in the most ordinary way, to print or display an
        announcement including an appropriate copyright notice and a
        notice that there is no warranty (or else, saying that you provide
        a warranty) and that users may redistribute the program under
        these conditions, and telling the user how to view a copy of this
        License. (Exception: if the Program itself is interactive but
        does not normally print such an announcement, your work based on
        the Program is not required to print an announcement.)

        These requirements apply to the modified work as a whole. If
        identifiable sections of that work are not derived from the Program,
        and can be reasonably considered independent and separate works in
        themselves, then this License, and its terms, do not apply to those
        sections when you distribute them as separate works. But when you
        distribute the same sections as part of a whole which is a work based
        on the Program, the distribution of the whole must be on the terms of
        this License, whose permissions for other licensees extend to the
        entire whole, and thus to each and every part regardless of who wrote it.

        Thus, it is not the intent of this section to claim rights or contest
        your rights to work written entirely by you; rather, the intent is to
        exercise the right to control the distribution of derivative or
        collective works based on the Program.

        In addition, mere aggregation of another work not based on the Program
        with the Program (or with a work based on the Program) on a volume of
        a storage or distribution medium does not bring the other work under
        the scope of this License.

        3. You may copy and distribute the Program (or a work based on it,
        under Section 2) in object code or executable form under the terms of
        Sections 1 and 2 above provided that you also do one of the following:

        a) Accompany it with the complete corresponding machine-readable
        source code, which must be distributed under the terms of Sections
        1 and 2 above on a medium customarily used for software interchange; or,

        b) Accompany it with a written offer, valid for at least three
        years, to give any third party, for a charge no more than your
        cost of physically performing source distribution, a complete
        machine-readable copy of the corresponding source code, to be
        distributed under the terms of Sections 1 and 2 above on a medium
        customarily used for software interchange; or,

        c) Accompany it with the information you received as to the offer
        to distribute corresponding source code. (This alternative is
        allowed only for noncommercial distribution and only if you
        received the program in object code or executable form with such
        an offer, in accord with Subsection b above.)

        The source code for a work means the preferred form of the work for
        making modifications to it. For an executable work, complete source
        code means all the source code for all modules it contains, plus any
        associated interface definition files, plus the scripts used to
        control compilation and installation of the executable. However, as a
        special exception, the source code distributed need not include
        anything that is normally distributed (in either source or binary
        form) with the major components (compiler, kernel, and so on) of the
        operating system on which the executable runs, unless that component
        itself accompanies the executable.

        If distribution of executable or object code is made by offering
        access to copy from a designated place, then offering equivalent
        access to copy the source code from the same place counts as
        distribution of the source code, even though third parties are not
        compelled to copy the source along with the object code.

        4. You may not copy, modify, sublicense, or distribute the Program
        except as expressly provided under this License. Any attempt
        otherwise to copy, modify, sublicense or distribute the Program is
        void, and will automatically terminate your rights under this License.
        However, parties who have received copies, or rights, from you under
        this License will not have their licenses terminated so long as such
        parties remain in full compliance.

        5. You are not required to accept this License, since you have not
        signed it. However, nothing else grants you permission to modify or
        distribute the Program or its derivative works. These actions are
        prohibited by law if you do not accept this License. Therefore, by
        modifying or distributing the Program (or any work based on the
        Program), you indicate your acceptance of this License to do so, and
        all its terms and conditions for copying, distributing or modifying
        the Program or works based on it.

        6. Each time you redistribute the Program (or any work based on the
        Program), the recipient automatically receives a license from the
        original licensor to copy, distribute or modify the Program subject to
        these terms and conditions. You may not impose any further
        restrictions on the recipients' exercise of the rights granted herein.
        You are not responsible for enforcing compliance by third parties to
        this License.

        7. If, as a consequence of a court judgment or allegation of patent
        infringement or for any other reason (not limited to patent issues),
        conditions are imposed on you (whether by court order, agreement or
        otherwise) that contradict the conditions of this License, they do not
        excuse you from the conditions of this License. If you cannot
        distribute so as to satisfy simultaneously your obligations under this
        License and any other pertinent obligations, then as a consequence you
        may not distribute the Program at all. For example, if a patent
        license would not permit royalty-free redistribution of the Program by
        all those who receive copies directly or indirectly through you, then
        the only way you could satisfy both it and this License would be to
        refrain entirely from distribution of the Program.

        If any portion of this section is held invalid or unenforceable under
        any particular circumstance, the balance of the section is intended to
        apply and the section as a whole is intended to apply in other
        circumstances.

        It is not the purpose of this section to induce you to infringe any
        patents or other property right claims or to contest validity of any
        such claims; this section has the sole purpose of protecting the
        integrity of the free software distribution system, which is
        implemented by public license practices. Many people have made
        generous contributions to the wide range of software distributed
        through that system in reliance on consistent application of that
        system; it is up to the author/donor to decide if he or she is willing
        to distribute software through any other system and a licensee cannot
        impose that choice.

        This section is intended to make thoroughly clear what is believed to
        be a consequence of the rest of this License.

        8. If the distribution and/or use of the Program is restricted in
        certain countries either by patents or by copyrighted interfaces, the
        original copyright holder who places the Program under this License
        may add an explicit geographical distribution limitation excluding
        those countries, so that distribution is permitted only in or among
        countries not thus excluded. In such case, this License incorporates
        the limitation as if written in the body of this License.

        9. The Free Software Foundation may publish revised and/or new versions
        of the General Public License from time to time. Such new versions will
        be similar in spirit to the present version, but may differ in detail to
        address new problems or concerns.

        Each version is given a distinguishing version number. If the Program
        specifies a version number of this License which applies to it and "any
        later version", you have the option of following the terms and conditions
        either of that version or of any later version published by the Free
        Software Foundation. If the Program does not specify a version number of
        this License, you may choose any version ever published by the Free Software
        Foundation.

        10. If you wish to incorporate parts of the Program into other free
        programs whose distribution conditions are different, write to the author
        to ask for permission. For software which is copyrighted by the Free
        Software Foundation, write to the Free Software Foundation; we sometimes
        make exceptions for this. Our decision will be guided by the two goals
        of preserving the free status of all derivatives of our free software and
        of promoting the sharing and reuse of software generally.

        NO WARRANTY

        11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
        FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
        OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
        PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
        OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
        MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
        TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
        PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
        REPAIR OR CORRECTION.

        12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
        WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
        REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
        INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
        OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
        TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
        YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
        PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
        POSSIBILITY OF SUCH DAMAGES.

        END OF TERMS AND CONDITIONS
        + + +

        Moodle Documentation

        +

        Version: $Id$

        + + + diff --git a/lang/el/docs/other.html b/lang/el/docs/other.html index 0b306bc0348..ea804977eca 100755 --- a/lang/el/docs/other.html +++ b/lang/el/docs/other.html @@ -1 +1,65 @@ - Moodle Docs: Frequently Asked Questions (FAQ)

        ¶ëëá êåßìåíá

        Åäþ õðÜñ÷ïõí êÜðïéá links ãéá Üëëåò ðçãÝò ôùí êåéìÝíùí ôïõ Moodle:

        Ðåñéå÷üìåíá üëùí ôùí óåëßäùí âïÞèåéáò ôïõ Moodle - ìéá ëßóôá üëùí ôùí åõáßóèçôùí ðåñéå÷ïìÝíùí áñ÷åßùí âïÞèåéáò ìÝóá óôï Moodle.

        Êåßìåíï ìå ôç óõìâïëÞ ôïõ ÷ñÞóôç - áõôÞ ç óåëßäá Ý÷åé ìéá ëßóôá êåéìÝíùí óôá ïðïßá ïé ÷ñÞóôåò ôïõ Moodle Ý÷ïõí óõìâÜëëåé.

         


        Moodle Documentation

        Version: $Id$

        \ No newline at end of file + + +Moodle Docs: Frequently Asked Questions (FAQ) + + + + + + + +

        ¶ëëá êåßìåíá

        +

        Åäþ õðÜñ÷ïõí êÜðïéá links ãéá Üëëåò ðçãÝò ôùí êåéìÝíùí ôïõ + Moodle:

        +

        Ðåñéå÷üìåíá üëùí ôùí + óåëßäùí âïÞèåéáò ôïõ Moodle - ìéá ëßóôá üëùí ôùí åõáßóèçôùí ðåñéå÷ïìÝíùí + áñ÷åßùí âïÞèåéáò ìÝóá óôï Moodle.

        +

        Êåßìåíï ìå ôç óõìâïëÞ + ôïõ ÷ñÞóôç - áõôÞ ç óåëßäá Ý÷åé ìéá ëßóôá êåéìÝíùí óôá ïðïßá ïé ÷ñÞóôåò + ôïõ Moodle Ý÷ïõí óõìâÜëëåé.

        +

         

        +
        + +

        Moodle Documentation

        +

        Version: $Id$

        + + + diff --git a/lang/el/docs/release.html b/lang/el/docs/release.html new file mode 100644 index 00000000000..9a814ddc39d --- /dev/null +++ b/lang/el/docs/release.html @@ -0,0 +1,414 @@ + + Ôåêìçñßùóç ôïõ Moodle: Óçìåéþóåéò ¸êäïóçò + + + + + +

        Óçìåéþóåéò ¸êäïóçò

        + +

        Êáéíïýñãéá óôçí Ýêäïóç ôïõ Moodle 1.0.8.1 (12 Éáíïõáñéïý, 2003) :

        +
          +
          ÊáíÝíá êáéíïýñãéï ÷áñáêôçñéóôéêü, ìüíï äéüñèùóç ëáèþí:
          +
          +
        • Äéïñèþèçêå Ýíá ëÜèïò ðïõ åìöáíéæüôáí ìéá óôï åêáôïììýñéï ìå åðéâåâáßùóåéò email +
        • Ç áíÜäñáóç óôï êåßìåíï ôùí ÅñùôçìÜôùí (Quiz) ìðïñåß íá ìðåß óå Ýíá style +
        • ÓõíåñãÜæåôáé êáëýôåñá ìå Ýíá íÝï module ôï ïðïßï äåí åßíáé áíáãíþóéìï +
        • Äéïñèþèçêå ôï ëÜèïò ðïõ Ýèåôå çìåñïìçíßåò ãéá ôéò Åñãáóßåò, êáé ôá ÅñùôÞìáôá (quizzes) üôáí ï êáèçãçôÞò åßíáé óå äéáöïñåôéêÞ æþíç - þñáò áðï ôïí server +
        • Äéïñèþèçêå ç ëßóôá ôùí çìåñïëïãéáêþí ìçíþí óå êÜðïéïõò servers +
        • Ï åìðëïõôéóìÝíïò êåéìÝíïãñÜöïò ôþñá äïõëåýåé ôÝëåéá óôï module åðéëïãÞò +
        • Ðåñéóóüôåñç äýíáìç üôáí êïéôÜôå ãéá êÜðïéåò ìåôáâëçôÝò ôïõ ðåñéâÜëëïíôïò +
        • Ôï ðñüãñáììá åãêáôÜóôáóçò åëÝã÷åé üôé ï öÜêåëïò ôùí sessions ìðïñåß íá ãñáöôåß +
        • ÐñïóáôÝèçêå Ýíá ìéêñü ðñüãñáììá åëÝã÷ïõ ãéá íá ôåóôÜñåé ôçí õðïóôÞñéîç sessions +
        • +
        + +
        + + +

        Êáéíïýñãéá óôçí Ýêäïóç ôïõ Moodle 1.0.8 (6th Éáíïõáñßïõ, 2003) :

        +
          +
          ÂÜóåéò ÄåäïìÝíùí
          +
          Ôï Moodle ôåëåéïðïßçóå ôçí åìöùëåõìÝíç õðïóôÞñéîç ãéá ôçí PostgreSQL 7 âÜóç äåäïìÝíùí (Åõ÷áñéóôþ + ôïí Mary Hunter ãéá ôá SQL áñ÷åßá êáé ôéò Üëëåò éäåÝò!). + Ôï Moodle ðëÝïí õðïóôçñßæåé ðñïèÝìáôá ðéíÜêùí, ôï ïðïßïóçìáßíåé üôé ìðïñåßôå íá åãêáôáóôåßóåôå ôï + Moodle óå êÜèå âÜóçò äåäïìÝíùí, áêüìá êáé áí ðåñéÝ÷åé ðßíáêåò áðü ìéá Üëëç äéêôõáêÞ åöáñìïãÞ. + ¸íáò áñéèìüò áðï Üëëåò áëëáãÝò Ý÷ïõí ãßíåé óôçí äïìÞ ôïõ êþäéêá ðïõ êÜíïõí ðïëý åýêïëï ðëÝïí ôï íá ðñïóôåèåß + ðëÞñç õðïóôÞñéîç ãéá Üëëïõ ôýðïõ âÜóåéò äåäïìÝíùí.
          + +
          Ãëþóóåò
          +
          ¸îé êáéíïýñãéåò ãëþóóåò ðñïóôÝèçêáí! ÊéíÝæéêá (áðü ôïí Zhang Dexuan), + ÁñáâéêÜ (áðü ôïí Ahmed Nabil), ÔïõñêéêÜ (áðü ôïí M. Cüneyt Birkök), ÓïõçäéêÜ (áðü ôïí Set Lonnert), + ÔáûëáíäéêÜ (áðü ôïí Wim Singhanart) êáé ÏëëáíäéêÜ (áðü ôïí Hans Zwart êáé ôïí Jacob Romeyn). ÐïëëÜ åõ÷áñéóôþ + óå üëïõò áõôïýò ôïõò áíèñþðïõò ðïõ äïýëåøáí óêëçñÜ! Ïé ðåñéóóüôåñåò áðï ôéò õðüëïéðåò ãëþóóåò Ý÷ïõí áíáâáìßóåéò + êáé äéïñèþóåéò áðï ôçí Ýêäïóç 1.0.7. Ï äéïñèùôÞò êåéìÝíïõ Ý÷åé âåëôéùèåß áéóèçôÜ, êÜíïíôáò åõêïëüôåñï íá äåßôå + Üäåéá Þ êáéíïýñãéá strings ôá ïðïßá ÷ñåéÜæïíôáé ìåôÜöñáóç. Ôï êýñéï ìÝñïò ôçò ôåêìçñßùóçò ìðïñåß ðëÝïí íá + ðáñáìåôñïðïéçèåß áíÜëïãá ìå ôéò ôïðéêÝò áíÜãêåò ôçò ãëþóóáò êáé íá åìöáíßæåôáé óôçí ôñÝ÷ïõóá ãëþóóá áí õðÜñ÷åé ç ìåôÜöñáóç.
          + +
          ÅìöÜíéóç
          +
          ¸íáò áñéèìüò áðü ìéêñÝò âåëôéþóåéò Ý÷åé ãßíåé óôçí åìöÜíéóç ðïëëþí óåëßäùí (üðùò óôçí ïèüíç äçìïóßåõóçò ôùí ïìÜäùí óõæçôÞóåùí) + þóôå íá ãßíïõí ðéï êáèáñÝò, ôáêôïêüôåñåò êáé ìéêñüôåñåò. Ó÷åäüí üëåò ïé ïèüíåòåéóáãùãÞò êåéìÝíïõ Ý÷ïõí ðëÝïí óõãêåêñéìÝíá + áíôéêåßìåíá âïÞèåéáò ðáñÜðëåõñá (åîáñôÜôáé áðï ôçí ðáéäáãùãéêÞ ãùíßá ðïõ åóôéÜæïõìå). Ïé ïìÜäåò óõæçôÞóåùí Ý÷ïõí ðëÝïí ìéá + ãñÞãïñç öüñìá áíáæÞôçóçò óå êÜèå óåëßäá.
          + +
          ÈÝìáôá
          +
          Ç õðïóôÞñéîç èåìÜôùí êáé CSS Ý÷åé åðåêôáèåßè þóôå íá äþóåé óå áõôïýò ðïõ öôéÜ÷íïõí èÝìáôá ðåñéóóüôåñï Ýëåã÷ï + óôï ðåñéóóüôåñï ìÝñïò ôçò éóôïóåëßäáò ôïõe Moodle. Ìéá ðïéêéëßá íÝùí èåìÜôùí Ý÷åé ðñïóôåèåß óôçí äéáíïìÞ.
          + +
          ÐçãÝò
          +
          ¸íáò íÝïò ôýðïò ðçãþí, ðïõ ïíïìÜæåôáé "Program" Ý÷åé ðñïóôåèåß, ï ïðïßïò åðéôñÝðåé óôï Moodle íá óõíåñãÜæåôå ìå åîùôåñéêÝò + äéêôõáêÝò åöáñìïãÝò ðáéñíüíôáò ðëçñïöïñßåò ó÷åôéêÜ ìå ôïí ôñÝ÷ïí ÷ñÞóôç and session to them. + Áñ÷åßá HTML ðïõ áíåâáßíïõí óôïí server ìðïñïýí ðëÝïí íá áëëá÷ôïýí ÷ñçóéìïðïéüíôáò ôïí äéïñèùôÞ êåéìÝíïõ WYSIWYG HTML.
          + +
          ÅðéëïãÝò
          +
          Ôá áðïôåëÝóìáôá ìðïñïýí íá äçìïóéïðïéçèïýí (åßôå ìå ïíüìáôá åßôå áíþíõìáe) Ýôóé þóôå üëïé íá ìðïñïýí íá äïýí ôá óôáôéóôéêÜ. + Ôï êåßìåíï ôùí åðéëïãþí ìðïñåß íá ôñïðïðïéçèåß ÷ñçóéìïðïéüíôáò Ýíá äéïñèùôÞ êåéìÝíïõ HTML.
          + +
          Âáèìïëïãßá
          +
          Ïé ìáèçôÝò ðëÝïí ìðïñïýí íá âëÝðïõí üëïõò ôïõò âáèìïýò ôïõò ãéá Ýíá ìÜèçìá óå ìéá óåëßäá, ç ïðïßá åßíáé ðñïóâÜóéìç áðï ôçí + ôçí êåíôñéêÞ óåëßäá ôïõ ìáèÞìáôïò.
          + +
          ÅñùôÞìáôá
          +
          Ïé ìáèçôÝò ìðïñïýí íá äïýí óõíïðôéêÜ üëåò ôéò ðñïçãïýìåíåò ôïõò ðñïóðÜèåéåò ó÷åôéêÜ ìå ôá åñùôÞìáôá ðïõ ðñïóðÜèçóáí íá + áðáíôÞóïõí, áëëÜ ìüíï åáí ôï åñþôçìá Ý÷åé êëåßóåé êáé áí ôï åðéôñÝðåé ï êáèçãçôÞò.
          + +
          Ðéóôïðïßçóç
          +
          Ôï module ôçò âÜóçò äåäïìÝíùí ðëÝïí õðïóôçñßæåé âÜóåéò äåäïìÝíùí ïé ïðïßåò ðåñéÝ÷ïõí md5-êñõðôïãñáöçìÝíïõò êùäéêïýò ðñüóâáóçò, + ðïõ óçìáßíåé ïôé ðëÝïí èá õðÜñ÷åé óõìâáôüôçôá ìå óõóôÞìáôá üðùò ôï PostNuke. ¼ôáí ïé ìáèçôÝò ÷ñåéóéìïðïéïýí åîùôåñéêç + ðéóôïðïßçóç åßíáé ðëÝïí áíáãêáóìÝíïé íá äþóïõí üëåò ôéò ðëçñïöïñßåò ðïõ æçôÜåé ç åöáñìïãÞ ðñéí ðñïóðáèÞóïõí íá ìðïõí óå êÜðïéï + ìÜèçìá. ¸íá ADOdb ëÜèïò ðñïêáëïýóå êÜðïéá ðñïâëÞìáôá üôáí ï ôýðïò ôçò åîùôåñéêÞò âÜóçò äåäïìÝíùí Þôáí ßäéïò ìå ôçí âÜóç + äåäïìÝíùí ôïõ Moodle. ÃåíéêÜ ðëÝïí åßíáé ðïëý ÷ñÞóéìï.
          + +
          Äéá÷åßñéóç
          +
          Ï äéá÷åéñéóôÞò ìðïñåß ðëÝïí íá áíáèÝôåé êá óå Üëëïõò áíèñþðïõò íá ãßíïíôáé äéá÷åéñéóôÝò. Ç åìöÜíéóç ôïõ Äéá÷åéñéóôÞ ôçò ÂÜóçò + ÄåäïìÝíùí Ý÷åé êáèáñéóôåß, êáé ðëÝïí ÷ñçóéìïðïéåß ôçí ßäéá ãëþóóá ìå ôçí ôñÝ÷ïí ãëþóóá ôïõ Moodle (äåßôå ôï îå÷ùñéóôü download + ãéá moodle-1.0.8-mysql-admin.zip).
          + +
          ÌÝèïäïò Äéüñèùóçò Ëáèþí
          +
          Äéá÷åéñéóôÝò êáé Üíèñùðïé ðïõ ãñÜöïõí êþäéêá ìðïñïýí íá ÷ñçóéìïðïéÞóïõí ôçí "ÌÝèïäï Äéüñèùóçò Ëáèþí" ç ïðïßá ôõðþíåé ðåñéóóüôåñåò + ðëçñïöïñßåò êáé ìõíÞìáôá ðñïåéäïðïßçóçò ãéá ìåôáâëçôÝò ðïõ äåí Ý÷ïõí ôåèåß êôë. - êÜíïíôáò åõêïëüôåñï ôï Ýñãï ôïõ íá âñåèïýí + ôá ëÜèç. Ãéá íá äïõëÝøåé áõôü êáèáñßóôçêå áñêåôÜ ï õðÜñ÷ïí êþäéêáò ôïõ Moodle þóôå íá ãßíåé ðåñéóóüôåñï óôéâáñüò.
          + +
          ¢ëëá ðñÜãìáôá
          +
          +
        • Ôï óõìðéåóìåíï module ãéá ôï ðåñßãñáììá (template) áãíïåßôáé áðï ôï Moodle. +
        • Ìéá ðñïåðéëÝãìÝíç ÷þñá ìðïñåß íá ôåèåß áðï ôïí äéá÷åéñéóôÞ +
        • Ôï êïõìðß åìöÜíéóçò ôçò ðçãÞò (view source button) óå Ýíá åìðëïõôéóìÝíï äéïñèùôÞ êåéìÝíïõ ëÝéðåé ãéá êÜðïéåò ãëþóóåò +
        • ¸íá ëÜèïò ðïõ åðéñÝáæáé ôçí óåëßäá ôïùí âáèìïëïãéþí óå êÜðïéåò åãêáôáóôÜóåéò äéïñèþèçêå +
        • Ôá ðñïâëÞìáôá ãéá ôï áíÝâáóìá (upload) áñ÷åßùí ôçò 4.3.0 äéïñèþèçêáí +
        • ÊÜðïéá ðïëý ìéêñÜ ðñïâëÞìáôá ó÷åôéêÜ ìå ôçí åìöÜíéóç ôùí logs äéïñèþèçêáí +
        • ÂåëôéùìÝíç áíáæÞôçóç GD ðïõ äïõëåýåé ìå ôçí PHP 4.3.0 +
        • ¸áí äåí õðÜñ÷åé GD ôüôå ôï Moodle åßíáé ðëÝïí ðïëý ÷ñÞóéìï (áðëÜ ëåéãüôåñï éêáíü) +
        • ¸íá ëÜèïò ðïõ åß÷å óáí áðïôÝëåóìá ôçí ëáíèáóìÝíç åìöÜíéóç ôçò çìåñïìçíßóò äéïñèþèçêå +
        • Ôá ïíüìáôá ôùí ÷ñçóôþí (Usernames) ìðïñïýí ðëÝïí íá ðåñéÝ÷ïõí ôïõò ÷áñáêôÞñåò "." êáé "-" +
        • Ôá Cookies ðëÝïí ÷ñçóéìïðïéïýí ôá ðñïèÝìáôá ôùí ðéíÜêùí ãéá ìïíáäéêÞ ïíïìáôïëïãßá, Ýôóé þóôå ðïëëÝò äéáöïñåôéêÝò + éóôïóåëßäåò ôïõ moodle íá ìðïñïýí íá ôñÝ÷ïõí óôçí ßäéá êåíôñéêÞ óåëßäá êáé óôçí êåíôñéêÞ âÜóç äåäïìÝíùí +
        • Ç åðéêåöáëßóá ôçò ïìÜäáò óõæçôÞóåùí ó÷åôéêÜ ìå ôçí éóôóåëßäáìðïñåß íá áëëá÷ôåß (áëëÜ÷ôå ôçí ïìÜäá óõæçôÞóåùí) +
        • ÂåëôéùìÝíïå êþäéêáò ðïõ íá óõëëÝãåé ôéò ðëçñïöïñßåò áðï ôçí öüñìá åéóáãùãÞò +
        • Ç ìåôáâëçôÞ buggy_referrer öôéÜ÷ôåéêå êáé ìðïñåß ðëÝïí íá äïõëåýåé üðùò áíáìåíüôáí +
        • ÌåñéêÝò ìéêñÝò âåëôéþóåéò óôçí áðüäïóç +
        • ¢ëëåò âåëôéþóåéò ðïõ ðéèáíüôáôá Ý÷ù îå÷Üóåé +
        • Êáèáñéóìüò ôïõ êåíôñéêïý êþäéêá +
        • + +
        + + +
        +

        Êáéíïýñãéá óôçí Ýêäïóç ôïõ Moodle 1.0.7 (10 Äåêåìâñßïõ, 2002):

        +
          +
          Áðëüé Áñéèìïß Åêäüóåùí!
          +
          Ïé ôåôñáøÞöéïé áñéèìïß åêäüóåùí ãéíüíôïõóáí ëßãï ãåëïßïé (ðïëý ðïëýðëïêïé), + ãéáõôü ôïõò Üëëáîá ðßóù óå ðéï áðëüõò ôñéøÞãéïõò áñéèìïýò. Ôï ðñþôïøçößï åßíáé ç êýñéá Ýêäïóç, + ôï äåýôåñï øçößï åßíáé ãéá ìåóáßïõ ìåãÝèïõò áíáâáèìßóåéò êáé ôï ôñßôï øçößï åßíáé ãéá ðïëý ìéêñÝò + áíáâáèìßóåéò.
          + +
          Ãëþóóåò
          +
          Äýï ïëïêáßíïõñãéåò ãëþóóåò ðñïóôÝèçêáí: ÉíäïíçóéáêÜ (áðü ôïí Arfan Hidayat) + êáé ÃéáðùíÝæéêá (áðü ôïí Mitsuhiro Yoshida). ÐñïóôÝèçêå åðßóçá êáé ìéá ÁìåñéêÜíéêç Ýêäïóç. + Ïé ðåñéóóüôåñåò áðï ôéò õðüëïéðåò ãëþóóåò ðåñéÝ÷ïõí êÜðïéá áíáâÜèìéóç. ¼ëåò ïé ãëþóóåò + ðëÝïí ðåñéÝ÷ïõí ôïðéêÝò ðëçñïöïñßåò, ðïõ óçìáßíåé üôé áí êÜðïéïò ÷ñÞóôçò áëëÜîåé ôçí ãëþóóá + üëåò ïé çìåñïìçíßåò èá åìöáíéóôïýí óùóôÜ.
          + +
          Ðñüóâáóç óôçí ÂÜóç ÄåäïìÝíùí
          +
          ¸ãéíå áíáâÜèìéóç ôïõ ADOdb óôçí Ýêäïóç 2.50 ç ïðïßá èá äéïñèþóåé êÜðïéá ðñïâëÞìáôá ìå ôéò íÝåò åêäüóåéò ôçò PHP (4.3.0).
          + +
          Âåëôéþóåéò ôçò ÅìöÜíéóçò
          +
          Êáèáñßóôçêå ç åìöÜíéóç ôùí ðëÜãéùí êïõôéþí êáé ðñïóôÝèçêáí CSS åëåãêôÝò óôýë óå ðåñéóóüôåñá óôïé÷åßá óôçí éóôïóåëßäá êáé + óôéò óåëßäåò ôùí ìáèçìÜôùí. Ìðïñåß íá ÷ñåéÜæåôáé íá áíáâáèìßóåôå ôá èÝìáôá ðïõ Ý÷åôå öôéÜîåé ïé ßäéïé ãéá íá äåßôå ôá + áðïôåëÝóìáôá óå üëç ôïõò ôçí ìïñöÞ. Ïé áëëáãÝò Ýãéíáí óôá áñ÷åßá styles.php, + config.php êáé óå ìéá ãñáììÞ óôï header.html. + +

          Ç åìöÜíéóç üôáí ôá ìáèÞìáôá âñßóêïíôáé óôçí ìðñïóôéíÞ óåëßäá êáé õðÜñ÷ïõí ðåñéóóüôåñåò áðï ìéá êáôçãïñßåò ðïõ Ý÷ïõí + âåëôéùèåß (Äåí äåß÷íåé ðëÝïí ìüíï ôá ìéêñÜ ïíüìáôá ôùí ìáèçìÜôùí).

          + +
          + +
          ÅìöÜíéóç ÔÜîçò
          +
          ¸íá wrapper áñ÷åßï ðáñÝ÷åé ôçí åìöÜíéóç ìéáò ôÜîçò óôçí êåíôñéêÞ âéâëéïèÞêç ôïõ Moodle + (Ãéá åîùôåñéêÜ ðñïãñÜììáôá ðïõ åìöáíßæïíôáé óôï Moodle) - moodle/lib/makeclass.php
          + +
          ÌéêñÝò âåëôéþóåéò êáé äéïñèþóåéò ëáèþí
          +
          +
        • Ôá åñùôÞìáôá ðëÝïí Ý÷ïõí ´íá êïõôß åðéâåâáßùóçò üôáí åðé÷åéñåßôå ìéá ðñïóðÜèåéá +
        • Ôá ìáèÞìáôá ðëÝïí Ý÷ïõí õðï÷ñåùôéêÜ ôï "show recent activity" åíåñãü +
        • ÊáôáñãÞèçêáí ôá ìçäåíéêÜ ðïõ õðÞñ÷áí ìðñïóôÜ ðáï ôéò çìåñïìçíßåò +
        • ÊÜðïéåò äéïñèþóåéò óôï ó÷Þìá ãéá ôá ÃéáðùíÝæéêÜ êáé ðáëßåò åêäüóåéò ôïõ Netscape +
        • Ïé êáèçãçôÝò ìðïñïýí íá åðéôñÝøïõí ìåãáëýôåñåò åñãáóßåò íá Ýñèïõí óôïí server (upload) +
        • Ôï êïõìðß áëëáãÞò ôïõ êùäéêïý ðñüóâáóçò óôçí óåëßäá ôïõ ÷ñÞóôç ðëÝïí ëåéôïõñãåß óáí áõôü óôçí óåëßäá åéóüäïõ (login page) +
        • Ç áíáæÞôçóç óôéò ïìÜäåò óõæçôÞóåùí ôþñá øÜ÷íåé êáé èÝìáôá ðÝñá áðï ìõíÞìáôá +
        • ÄéÜöïñåò äéïñèþóåéò óôçí HTML +
        • Fixes to grades display when there are no grades, also no forum ratings +
        • Óôá ïíüìáôá áñ÷åßùí ðïõ æÞôïýóáí ôï óýìâïëï "/" áðáîéþèçêå +
        • UÁíáâÜèìéóç óôçí Ôáêìçñßùóç +
        • + + +
        + + + +
        +

        Êáéíïýñãéá óôçí Ýêäïóç ôïõ Moodle 1.0.6.4 (24 Íïåìâñßïõ, 2002) :

        +
          + +
          Ðéóôïðïßçóç
          +
          Ôï Moodle õðïóôçñßæåé ðëÝïí åöôÜ äéáöïñåôéêïýò ìç÷áíéóìïýò ðéóôïðïßçóçò, + êÜíïíôáò ðéï åýêïëï íá óõíäÝóåôå ôï Moodle ó÷åäüí ìå ïðïéáäÞðïôå åîùôåñéêÞ + ëßóôá ìå ÷ñÞóôåò!

          +

          ÍÝåò ìÝèïäïé ìþëéò ðñïóôÝèçêáí óõìðåñéëáìâáíùìÝíïõ ôùí IMAP, POP3 êáé NNTP + servers (ìáæß ìå áõôÝò ðïõ ÷ñçóéìïðïéïýí SSL Þ ðéóôïðïßçóç ðïõ âáóßæåôáé óå + ðéóôïðïéçôéêÜ), êáèþò åðßóçò êáé ðéóôïðïßçóç åíáíôß ðåäßùí ðïõ ïñßæïíôáé + áðï ôïõò ÷ñÞóôåò óå ïðïéïíäÞðïôå ðßíáêá åîùôåñéêÞò âÜóçò äåäïìÝíùí.

          +

          Ç óåëßäá åéóüäïõ (login page) ìðïñåß ðëÝïí íá ðñïóáñìïóôåß ìåñéêÜ áðü ôïí + äéá÷åéñéóôÞ ìå åîáôïìéêåõìÝíåò åíôïëÝò, åíþ ç óåëßäá åéóüäïõ ôùí åðéóêåðôþí + ìðïñåß êáé íá êñõöôåß áí ôï åðéèõìåß ï äéá÷åéñéóôÞò.

          +

          Ìðïñïýí íá ïñéóôïýí êáé "Mappings" Ýôóé þóôå êáé Üëëá ðåäßá (üðùò ôá email, üíïìá, + åðþíõìï, ôìÞìá, ãëþóóá êôë) íá ìðïñïýí íá áíôéãñáöïýí áðï ôïí LDAP Þ áðü + ìéá åîùôåñéêÞ âÜóç äåäïìÝíùí üôáí ÷ñçóéìïðïéïýíôáé ãéá ðñþôç öïñÜ ïé ëïãáñéáóìïß.

          + +

          ÔÝëïò, ôï Moodle ðëÝïí ðáñïõóéÜæåé ìéá íÝò GUI äéá÷åéñéóôþí ãéá íá ðáñáìåôñïðïéïýíôáé + üëá áõôÜ, Ýôóé èá åßíáé ðïëý áðëü ôþñá íá åöáñìïóôåß ìéá åîùôåñéêÞ ðéóôïðïßçóç. + ÐïëëÝò åõ÷áñéóôßåò óôïí óõíåñãÜôç Petri Asikainen ãéá ôçí ðïëýôéìç âïÞèåéá ôïõ óôï GUI + äéá÷åéñéóôÞ.

          + +
          Ãëþóóåò
          +
          Ïëïêëçñþèçêå ç ìåôÜöñáóç ãéá ôá ÍïñâçãéêÜ (áðü ôïí Jøran Sørbø), êáé áíáâáèìßóåéò ãéá áñêåôÝò Üëëåò.
          + +
          Åñãáóßåò
          +
          Ïé ìáèçôÝò ìðïñïýí ðëÝïí íá îáíáóôåßëïõí ôéò åñãáóßåò ôïõò ìåôÜ ôçí âáèìïëüãçóç áí ï êáèçãçôÞò ôïõò ôï åðéôñÝøåé
          + +
          Óõíåñãáôéêüò Êþäéêáò
          +
          Áõôüíïìïò êþäéêáò ÷ñçóôþí - óõíåñãáôþí ðëÝïí äéáíÝìåôáé êÜôù áðï ôïí öÜêåëï /contrib. Áõôüò ï + öÜêåëïò ìðïñåß íá ãßíåé áñêåôÜ ìåãÜëïò, êáé ç ðïéüôçôá áëëÜ êáé ç áóöÜëåéá ôïõ êþäéáêá óõíÞèùò + äåí Ý÷åé åëåã÷ôåß áðï åìÝíá, êáé ãéá áõôü ï êþäéêáò ðïõ õðÜñ÷åé åêåß äåí ðåñéëáìâÜíåôáé óôéò + âáóéêÝò åêäüóåéò êáé óôéò íõ÷ôåñéíÝò. Ðáñüëáõôá, üóïé åíäéáöÝñïíôáé ãéá áõôÜ ìðïñïýí íá áðïêôÞóïõí + ðñüóâáóç ìÝóù ôïõ CVS (Þ êïéôÜîôå + ÄéêôõáêÞ üøç CVS). + ¼óï áõôÜ ôá íÝá ÷áñáêôçñéóôéêÜ ôåëåéïðïéïýíôáé Þ ç áðßôçóç ãéá áõôÜ ìåãáëþíåé, ôüôå èá ôá åíóùìáôþóù + óôçí êýñéá äéáíïìÞ ôïõ Moodle. +

          + Ï ðñþôïò óõíåñãÜôçò åßíáé ï Holger Schadeck (compuproggy), ï ïðïßïò Ýãñáøå áñêåôÜ + åíäéáöÝñïí êþäéêá + êáèþò âïçèïýóå íá ìåôáöñáóôïýí üëá ôá áñ÷åßá âïÞèåéáò ôïõ Moodle. Ñß÷ôå ôïõ ìéá ìáôéÜ!
          + +
          Äéüñèùóç Ëáèþí
          +
          +
        • Ç "ôéìÞ" ôçò çìÝñáò óôéò çìåñïìçíßåò (ð.÷. óôéò äçìïóéåýóåéò óôéò ïìÜäåò óõæçôÞóåùí, óôéò åâäïìáäéáßåò + ëßóôåò) ðëÝïí åìöáíßæåôáé óùóôÜ êáé óôïõ Windows servers. +
        • Ôá áñ÷åßá config-dist.php êáé README.txt åßíáé ðëÝïí óå ó÷Þìá DOS þóôå íá åßíáé åõêïëüôåñï ãéá ÷ñÞóôåò + ôùí Windows íá áñ÷ßóïõí (Ïé ÷ñÞóôåò ôïõ Unix äåí èá åðéññåáóôïýí). +
        • ÐñïóôÝèçêå ìéá ëýóç (êáé íÝïé äéáêüðôåò äéáìüñöùóçò óôï áñ÷åßï config-dist.php) ãéá ìåñéêÜ óõóôÞìáôá + ôá ïðïßá Ý÷ïõí áíáöïñÝò óå ìåôáâëçôÝò ìå áñêåôÜ ëÜèç. Áõôü èá âïçèÞóåé üóïõò êïëÜíå óå ìéá öüñìá êáôÜ ôçí + äéáäéêáóßá ôçò åãêáôÜóôáóçò. +
        • Ç Ýîïäïò ðëÝïí ðçãáßíåé ôïõò ÷ñÞóôåò óôçí áñ÷éêÞ óåëßäá êáé êáèáñßæåé ðëÞñùò ôá session. +
        • Ïé æþíåò-þñáò ðëÝïí êõìáßíïíôáé áðü -13 ìÝ÷ñé êáé 13 þñåò (Ãéá ïéêïíïìßá óôï öþò ôçò ìÝñáò). +
        • Ôï óåô ÷áñáêôÞñùí óôï email ðëÝïí ôáéñéÜæåé ìå ôçí ãëþóóá ðïõ ÷ñçóéìïðïéåßôáé. +
        • Ïé öùôïãñáößåò ôøí ÷ñçóôþí áíåâáßíïõí óôïí server áêüìá êáé áí õðÜñ÷ïõí ëÜèç óå Üëëá ðåäßá. +
        • Ïé ïëüóùìåò öùôïãñáößåò ôùí ÷ñçóôþí óôá ðñïößë ôïõò äåí ìðïñïýí ðëÝïí íá ìåãáëþóïõí. +
        • Ïé ìáêñßåò ëßóôåò ÷ñçóôþí Ý÷ïõí ðëÝïí ìéá ìéêñÞ óçìåßùóç óôï êÜôù Üêñï ôïõò ó÷åôéêÜ ìå áõôüìáôï unenrolment +
        • Ôá êïõìðßá ãéá Unenrol êáé ãéá ôçí áëëÜãÞ ôïõ êùäéêïý ðñüóâáóçò äåí åìöáíßæïíôáé óôïõò åðéóêÝðôåò ìáèçôÝò +
        • Äéïñèþèçêå ôï ëÜèïò üðïõ óðÜíéá üôáí å÷ñüíôïõóáí åñãáóßåò áëëáæå ôï üíïìá ôïõ éäéïêôÞôç ôïõò +
        • Ôá ãñáöéêÜ áñ÷åßá åíçìÝñùóçò ôùí ÷ñçóôþí åßíáé ðëÝïí ãñçãïñüôåñá, êáèáñüôåñá êáé ðåñéóóüôåñï ìåôáöñÜóéìá +
        • Äéïñèþèçêå ôï ëÜèïò ðïõ áöïñïýóå ôçí åìöÜíéóç ôçò HTML ìå ìáèÞìáôá óôá êïõôéÜ ôùí êáôçãïñéþí óôçí ìðñïóôéíÞ óåëßäá +
        • Ïé ëïãáñéáóìïß ôùí åðéóêåðôþí êáé ôùí äéá÷åéñéóôþí ðëÝïí ëåéôïõñãïýí ðÜíôá, Áêüìá êáé üôáí Ý÷åé åíåñãïðïéåéèåß åîùôåñéêÞ ðéóôïðïßçóç +
        • Ðåñéóóüôåñç áóöÜëåéá üôáí ãñÜöïíôáé/äéáâÜæïíôáé áñ÷åßá (ðëåüí ãßíåôáé Ýëåã÷ïò ãéá embedded scripting). +
        • Ï ßäéïò ÷ñÞóôçò ðëÝïí ìðïñåß íá äéáãñáöåß ðåñéóóüôåñåò áðü ìéá öïñÝò (äçìéïñãßá, äéáãñáöÞ, åðáíáäçìéïõñãßá, äéáãñáöÞ ðñïêáëïýóå ëÜèïò) +
        • Ï êåéìåíïãñÜöïò ãëùóó'ùí ðëÝïí äïõëåõåé êáé ìå multibyte ãëþóóåò (åõ÷áñéóôþ, Mits) +
        • + +
        + + +
        +

        Êáéíïýñãéá óôçí Ýêäïóç ôïõ Moodle 1.0.6.3 (14 Íïåìâñßïõ, 2002) :

        +
          + +
          Äéïñèþèçêå ôï ëÜèïò ãéá ôéò áíþíõìåò ïìÜäåò óõæçôÞóåùí.
          +
          Êáéíïýñãéåò óåëßäåò ðïõ äçìéïõñãïýíôáí ìå ôçí Ýêäïóç 1.0.6.2 Ýé÷áí êÜðïéåò ïìÜäåò óõæçôÞóåùí ðïõ + åìöáíßæïíôáí ÷ùñßò üíïìáôá (ãéá ðáñÜäåéãìá ç ïìÜäá óõæçôÞóåùí ãéá ôá ÍÝá óôçí áñ÷éêÞ óåëßäá). + Ìéá ëýóç åßíáé íá ðñïóôåèåß ìéá êáéíïýñãéá äñáóôçñéüôçôá óå áõôü ôïí ôïìÝá (üëá ôá ïíüìáôá + èá áíáíåùèïýí), áëëÜ áõôÞ ç Ýêäïóç èá äéïñèþóåé êáé áõôü.
          + +
          ÍÝåò Ãëþóóåò!
          +
          ÊáôáëáíéêÜ êáé ÉóðáíéêÜ ìþëéò Ýöèáóáí!
          + +
          ÌåñéêÝò âåëôéþóåéò óôçí åìöÜíéóç ãéá ðáë´éüôåñåò åêäüóåéò ôïõ Netscape (åðéêáöáëßäåò êáé åñùôÞìáôá)
          + +
          Ç ãëþóóá ãéá ôïõò åðéóêÝðôåò ðëÝïí åßíáé ðÜíôá ßäéá ìå ôçí ôñÝ÷ïõóá ãëþóóá ôçò éóôïóåëßäáò
          + +
          Ç Ðñüóöáôç Äñáóôçñéüôçôá "Recent Activity" ìðïñåß ðëÝïí íá áðåíåñãïðïéçèåß ðëÞñùò áí ôï åðéèõìïýìå
          + +
          Ãéá ðïëý ìåãÜëá ôìÞìáôá (ìåãáëýôåñá áðï 500 Üôïìá) ç ëßóôá áõôþí ðïõ ðáßñíïýí ìÝñïò äåí åìöáíßæåôáé
          + +
        + +
        + +

        Êáéíïýñãéá óôçí Ýêäïóç ôïõ Moodle 1.0.6.2 (11 Íïåìâñßïõ, 2002) :

        +
          +
          Âåëôéþóåéò óôï Ó÷Þìá ôùí ÌáèçìÜôùí
          +
          Ôï åâäïìáäéáßï ó÷Þìá êáé ôï ó÷Þìá ôùí èåìÜôùí ðëÝïí Ý÷ïõí ìéá åðéðëÝïí "ãåíéêÞ" ðåñéï÷Þ óôçí êïñõöÞ + üðïõ ðáñïõóéÜæïíôáé "ãåíéêÝò" äñáóôçñéüôçôåò - áõôá åßíáé ðñÜãìáôá ðïõ éó÷ýïõí äéáìÝóù ôïõ ìáèÞìáôïò, + êáé ü÷é ìüíï ãéá Ýíá óõãêåêñéìÝíï èÝìá Þ åâäïìÜäá.ÁõôÞ ç ãåíéêÞ ðåñéï÷Þ äåí öáßíåôáé áí åßíáé ôåëåßùò + Üäåéá.
          + +
          Popup "jump" menu.
          +
          Ìðïñåßôå ðëÝïí íá ðáéñíÜôå áðï ôçí ìéá äñáóôçñéüôçôá áðåõèåßáò óå ìéá Üëëç ÷ñçóéìïðïéüíôáò + Ýíá popup ìåíïý óôçí ðÜíù äåîéÜ ãùíßá ôçò óåëßäáò
          + +
          Âåëôéþóåéò óôçí Ôá÷ýôçôá
          +
          Ïé ëåðôïìÝñéåò ãéá ôçí äñáóôçñéüôçôá ôïõ ìáèÞìáôïò êñáôïýíôáé ðëÝïí óôçí cache ãéá êÜèå ìÜèçìá, ôï ïðïßï + ìåéþíåé óçìáíôéêÜ ôçí áëëçëåðßäñáóç ìå ôçí âÜóç äåäïìÝíùí ðïõ ÷ñåßæåôáé ãéá íá ðáñïõóéÜæåôáé ìéá óåëßäá + åíüò ìáèÞìáôïò. Óå óõóôÞìáôá ìå ðïëý êßíçóç áõôü èá âåëôéþóåé ôçí ôá÷ýôçôá.
          + +
          Ãëþóóåò
          +
          ÏÉ Ýñåõíåò åßíáé ðëÝïí ïëïêëçñùôéêÜ ìáôáöñÜóéìåò.
          + +
          Âåëôéþóåéò Äéá÷åéñéóôþí
          +
          ÐñïóôÝèçêå óåëéäïðïßçóç óôçí óåëßäá ôçò äéá÷åßñéóçò ÷ñçóôþí, Ýôóé þóôå ï äéá÷åéñéóôÞò íá ìðïñåß ðëÝïí + íá âëÝðåé ìåãáëýôåñï áñéèìü ÷ñçóôþí.
          + +
          Äéïñèþóåéò êáé ÓôñïöÝò
          +
          ÐïëëÝò Üëëåò ìéêñÝò äéïñèþóåéò óôï ó÷Þìá
          +
        + + +
        + +

        Êáéíïýñãéá óôçí Ýêäïóç ôïõ Moodle 1.0.6.1 (6 Íïåìâñßïõ, 2002) :

        +
          +
          ÍÝïò ôýðïò åñãáóéþí: Åñãáóßåò offline
          +
          Ìáæß ìå ôéò åñãáóßåò "upload a file", ðëÝïí ìðïñïýí íá õðÜñ÷ïõí êáé "offline" + åñãôáóßåò. ÁõôÝò äåí áðéôïýí íá êÜíïõí êÜôé ïé ìáèçôÝò online. + Åßíáé ÷ñÞóéìåò ãéá íá âáèìïëïãïýíôáé äñáóôçñéüôçôåò ðïõ äåí åßíáé óôï Moodle, üðùò + åðßóçò åßíáé ÷ñÞóéìåò ãéá ôçí ðñüóèåóç ðåäßùí ìå ôï ÷Ýñé óôçí óåëßäá ôùí âáèìþí.
          + +
          Ãëþóóåò
          +
          ÐñïóôÝèçêáí ÌåîéêáíéêÜ êáé Ýãéíá âåëôéþóåéò óôéò õðüëïéðåò ãëþóóåò.
          + +
          Ðéóôïðïßçóç SMTP
          +
          Ôï SMTP mail ðëÝïí õðïóôçñßæåé SMTP ïíüìáôá ÷ñçóôþí êáé êùäéêïýò ðñüóâáóçò åáí ÷ñåéÜæåôáé
          + +
          Ôåêìçñßùóç
          +
          ÌåñéêÜ ìÝñç îáíáãñÜöôçêáí, êáé ãåíéêÜ ôá Ýããñáöá ôçò ôåêìçñßùóçò êáèáñßóôçêáí (ðëçñïöïñßåò áíáâÜèìéóçò + Ýãéíáí ðëÝïí ìÝñïò ôùí âáóéêþí åããñÜöùí)
          + +
          ¢ëëåò Äéïñèþóåéò
          +
          • Êáëýôåñïò Ýëåã÷ïò óôïõò êáèçãçôÝò ÷ñçóéìïðïéüíôáò ôï "loginas" ãéá íá ôïõò óôáìáôÞóïõí íá âëÝðïõí Üëëá ìáèÞìáôá + óáí ìáèçôÝò +
          • ¼óï ÷ñçóéìïðïéåßôáé ôï "loginas", ïé êáèçãçôÝò ìðïñïýí íá åðéóôñÝöïõí óôçí äéêßá ôïõò ôáõôüôçôá ÷ñçóéìïðïéüíôáò + Ýíá óýíäåóìï óôï êÜôù ìÝñïò ôçò óåëßäáò +
          • Äéïñèþèçêáí ìåñéêÜ strings óôéò åñãáóßåò, óôá journals, êáé óôéò ïìÜäåò óõæçôÞóåùí. +
          • Ç ãëþóóáôùí åðéóêåðôþí åßíáé ðëÝïí ç ßäéá ìå áõôÞ ôçò éóôïóåëßäáò +
          • êôë +
          + +
        + + +
        +

        Êáéíïýñãéá óôçí Ýêäïóç ôïõ Moodle 1.0.6 (26 Ïêôùâñßïõ, 2002) :

        + +
          +
          ÍÝï ÷áñáêôçñéóôéêü - WYSIWYG Text êåéìåíïãñÜöïò!
          +
          ¸íáò WYSIWYG äéïñèùôÞò êåéìÝíïõ ðñïóôÝèçêå óå áñêåôÝò áðï ôéò öüñìåò ôïõ Moodle. ÁõôÝò öáßíïíôáé + ðñïò ôï ðáñþí ìüíï üôáí ÷ñçóéìïðïéåßôáé Microsoft Internet Explorer 5.5 Þ ðéï êáéíïýñãéá Ýêäïóç - + ïé Üëëïé browsers âëÝðïõí ôéò êáíïíéêÝò öüñìåò áêñéâþò üðùò êáé ðñéí.
          + +
          ÍÝï ÷áñáêôçñéóôéêü - Quiz module!
          +
          ÔåëéêÜ, ôï ðéï ðïëõæçôçìÝíï êáéíïýñãéï module Þñèå! ÅñùôÞìáôá ðïëëáðëÞò åðéëïãÞò, ìéêñÝò áðáíôÞóåéò, êáé + åñùôÞóåéò óùóôïý ëÜèïõò ìå áõôüìáôç óçìåßùóç, ðïëëáðëÝò ðñïóðÜèåéåò, êáé ðïëëÜ Üëëá ÷áñáêôçñéóôéêÜ. + Ïé åñùôÞóåéò áðïèçêåýïíôáé óå ìéá êáôçãïñïðïéçìÝíç âÜóç äåäïìÝíùí, êáé ìðïñåß íá ÷ñçóéìïðïéçèïýí êáé + óå Üëëá ìáèÞìáôá.
          + +
          ÍÝï ÷áñáêôçñéóôéêü - Äéá÷åéñéóôÞò Âáèìïëïãéþí!
          +
          ¸íá íåü åñãáëåßï ðñïóôÝèçêå ãéá ôïõò êáèçãçôÝò Ýôóé þóôå íá âëÝðïõí üëïõò ôïõò âáèìïýò ãéá Ýíá ìÜèçìá + óå ìéá óåëßäá. Ìðïñåßôå åðßóçò íá êáôåâÜóåôå Þ íá óôåßëåôå ôïõò âáèìïýò ÷ùñéóìÝíïõò ìå Ýíá tab óå Ýíá + áñ÷åßï êåéìÝíïõ Þ áñ÷åßï Excel. Óôï ìÝëëïí ðåñéóóüôåñá ÷áñêôçñéóôéêÜ èá ðñïóôåèïýí óå áõôÞ ôçí óåëßäá üðùò + êáôáíïìÞ, ÷åéñéêßíçôá ðåäßá êáé õðïëïãéóìïß áëëÜ åßíáé áñêåôÜ ÷ñÞóéìç áêüìá êáé ôþñá.
          + +
          ÍÝï ×áñáêôçñéóôéêü - Ðéóôïðïßçóç LDAP!
          +
          Ôï Moodle ìðïñåß ðëÝïí íá êÜíåé ðéóôïðïßçóç ìÝ åîùôåñéêÜ directories ôá ïðïßá ÷ñçóéìïðïéïýí ôï ðñïôüêïëï + LDAP (óõìðåñéëáìâáíùìÝíïõ ôïõ Novell etc). ÐïëëÜ åõ÷áñéóôþ óôïí Petri Asikainen ðïõ áíÜðôõîå áõôü ôï + plug-in ðéóôïðïßçóçò!
          + +
          Íåü ÷áñáêôçñéóôéêü - ÍÝá ÷áìüãëá
          +
          ÐïëëÜ íÝá ÷áìüãåëá ðñïóôÝèçêáí,êáé åßíáé ðëÝïí ðñïóâÜóéìá ìÝóù GUI óå Ýíá äéïñèùôÞ êåéìÝíïõ.
          + +
          ÂåëôéùìÝíç Åðåîåñãáóßá ÊåéìÝíïõ
          +
          Ìðïñåßôå ðëÝïí íá Ý÷åôå üëá ôá âáóéêüôåñá HTML tags óå üëá ôá êåßìåíá. Áõôü åßíáé ðëÝïí áóöáëÝò + åîáéôßáò ôçò íÝáò ëåéôïõñãßáò ðïõ ðñïóôÝèçêå ðñüóöáôá êáé áöáéñåß üëá ôá åëëáôùìáôéêÜ tags êáèþò + êáé ôá Javascript tags áðï ôá êåßìåíá ðñéí ðñïêáëÝóïõí ðñïâëÞìáôá óôçí áóöÜëåéá Þ óôçí åìöÜíéóç.
          + +
          Ãëþóóåò
          +
          ÐñïóôÝèçêáí ÃåñìáíéêÜ êáé ÉôáëéêÜ! ÐïëëÜ åõ÷áñéóôþ óôïõò ìåôáöñáóôÝò (äåßôå óôá credits).
          + +
          Ìodule ÁíÜãíùóçò=> Ìodule Ðçãþí
          +
          ÌåôÜ áðï ðïëý óêÝøç êáé ìé øÞöï õðïóôÞñéîçò (21 "íáé" êáé 6 "ü÷é") óôçí éóôïóåëßäá "Using Moodle", + Üëëáîá ôï üíïìá ôïõ Module ÁíÜãíùóçò óå Module Ðçãþí (êáé óå åðßðåäï êþäéêá áëëÜ êáé óôá ãëùóóéêÜ ðáêÝôá). + ¹ôáí êáëýôåñï íá ôï êÜíù áõôü íùñßò ðáñÜ ðéï áñãÜ. Áõôü ôï ðåñéóóüôåñï ãåíéêü ðñüâëçìá èá Ý÷åé ðåñéóóüôåñç óçìáóßá + ãéá ðåñéóóüôåñïõò áíèñþðïõò êáé áíïßãåé ôï äñüìï ãéá ðñáãìáôéêÞ áíÜðôõîç óå Ýíá âéâëéïèÞêç ðçãþí. + ÁëëÜ äåí èÝëù íá áëëÜîù üíïìá óå êÜðïéï Üëëï module îáíÜ! :-) + Áí Ý÷åôå êÜðïéïò óõíäÝóìïõò ðïõ hard-coded äåß÷íïõí óôá ðáëßá ïíüìáôá êáé äåí èÝëåôå íá ôá óðÜóåôå, + ìðïñåßôå íá ðñïóèÝóåôå ìéá ãñáììÞ êþäéêá óáí áõôÞ óôï áñ÷åßï ôïõ Apache httpd.conf ãéá íá ôá áíáäñïìïëïãåßôáé: +

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

          + Óçìåßùóç: ÅÜí Áíáâáèìßóôå óôçí Ýêäïóç 1.0.6 ìðïñåß íá Ý÷åôå ëÜèç "reading" óôéò "Recent activity" + ... ÊÜíïíôáò áðïóýíäåóç êáé áí ìåôÜ óõíäåèåßôå îáíÜ èá äéïñèùèåß áõôü ôï ðñüâëçìá
          + +
          ¢ëëåò ðñïóèÝóåéò
          +
          ¸íá script ãéá ôïõò äéá÷åéñéóôÝò ðñïóôÝèçêå þóôå íá ìðïñïýí íá äéáãñÜöïõí ðëÞñùò ôï öÜêåëï ôùí äåäïìÝíùí ôïõ Moodle + (admin/delete.php), ãéá áíèñþðïõò ðïõ ÷ñåßáæïíôáé íá äéáëýóïõí ìéá åãêáôÜóôáóç ôïõ Moodle áëëÜ äåí Ý÷ïõí root + ðñüóâáóç óôïí server.
          + +
          ÄéÜöïñá
          +
          ÐïëëÝò ìéêñÝò äéïñèþóåéò Ý÷ïõí ãßíåé óôçí åìöÜíéóç, êáé ðïëëÜ ìéêñÜ ëÜèç äéïñèþèçêáí. + ÌåñéêÜ ðáñáäåßãìáôá: +
            +
          • ÌåãÜëá "Edit this page" êïõìðéá óôçí êïñõöÞ ôçò óåëßäáò (áíôéêáôÝóôçóáí ôá ìéêñÜ åéêïíßäéá) +
          • Module LDAP ðéóôïðïßçóçò (åõ÷áñéóôþ ôïí Petri) +
          • Ðéóôïðïßçóçò áðï åîùôåñéêÝò ðçãÝò ìðïñïýí ðëÝïí íá åéóÜãïõí ïðïéïäÞðïôå ðåäßá +
          • Ç ëéóôá ìå ôéò åñãáóßåò ôùí ìáèçôþí äåß÷íåé ðëÝïí ôï status ôùí ðáñáäüóåùí êáíïíéêÜ +
          • Ç default ãëþóóá ãéá ôïõò ÷ñÞóôåò åßíáé ðëÝïí ç ãëþóóá ôçò éóôïóåëßäáò +
          • Ïé ÷ñÞóôåò Ý÷ïõí Ýíá êïõìðß 'ÁëëáãÞò Êùäéêïý Ðñüóâáóçò' óôçí óåëßäá ìå ôï ðñïößë ôïõò +
          • Ôá Journals ðïõ ÷ñåßáæïíôáé áíÜäñáóç áðï ôïõò êáèçãçôÝò öùôßæïíôáé ðéï Ýíôïíá +
          • Ðåñéóóüôåñç ôåêìçñßùóç êáé ðåñéóóüôåñá êïõìðßá âïÞèåéáò ðåñéå÷ïìÝíïõ +
          • Êþäéêáò áíáâÜèìéóçò ãéá óõãêåêñéìåíïðïßçóç âÜóåùí äåäïìÝíùí +
          • Ôï üíáì ÷ñçóôþí óôï êÜôù ìåñïò ôçò óåëßäáò åßíáé ðëÝïí óýíäåóìïò +
          • Ôá íÝá êáé ïé êïéíùíéêÝò ïìÜäåò óõæçôÞóåùí ìðïñïýí ðëÝïí íá áëëÜæïíôáé +
          • Ïé ïìÜäåò óõæçôÞóåùí ðïõ äåí åðéôñÝðïõí äçìïóéåýóåéò äåí Ý÷ïõí ìç ÷ñÞóéìïõò óõíäÝóìïõò óõæÞôçóçò +
          • ÂåëôéïìÝíïò áëãüñéèìüò ãéá ôçí êáôáíïìÞ ôùí äçìïóéåýóåùí óôéò ëßóôåò ôùí ïìÜäùí óõæçôÞóåùí +
          • Ôï module ôùí åðéëïãþí åðéôñÝðåé ðëÝïí ìÝ÷ñé êáé Ýîé åðéëïãÝò +
          +
          +
        + +

        Ðáëßïôåñåò åêäüóåéò õðÜñ÷ïõí óôï Moodle.com announcement forum. + + +

         

        +

        Ôåêìçñßùóç ôïõ Moodle

        +

        Version: $Id$

        diff --git a/lang/el/docs/teacher.html b/lang/el/docs/teacher.html index f1801a07c7c..570045a2c43 100644 --- a/lang/el/docs/teacher.html +++ b/lang/el/docs/teacher.html @@ -1,28 +1,25 @@ - - - - Ôåêìçñßùóç ôïõ Moodle: Åã÷åéñßäéï ÊáèçãçôÞ - - + + Ôåêìçñßùóç ôïõ Moodle: Åã÷åéñßäéï ÊáèçãçôÞ + + - + -

        Åã÷åéñßäéï ÊáèçãçôÞ

        -

        ÁõôÞ ç óåëßäá åßíáé åßíáé Ýíáò ãñÞãïñïò ïäçãüò ãéá ôç äçìéïõñãßá online ìáèçìÜôùí ìå ôï Moodle. +

        Åã÷åéñßäéï ÊáèçãçôÞ

        +

        ÁõôÞ ç óåëßäá åßíáé åßíáé Ýíáò ãñÞãïñïò ïäçãüò ãéá ôç äçìéïõñãßá online ìáèçìÜôùí ìå ôï Moodle. Óå ãåíéêÝò ãñáììÝò ðáñïõóéÜæïíôáé ïé êýñéåò óõíáñôÞóåéò ðïõ åßíáé äéáèÝóéìåò, êáèþò êáé ìåñéêÝò - áðï ôéò âáóéêÝò áðïöÜóåéò ðïõ èá ÷ñåéáóôåß íá ðÜñåôå.

        + áðï ôéò âáóéêÝò áðïöÜóåéò ðïõ èá ÷ñåéáóôåß íá ðÜñåôå.

        -

        ÔìÞìáôá áõôïý åããñÜöïõ:

        -
          -
        1. Ðùò íá Áñ÷ßóåôå
        2. -
        3. Ñõèìßóåéò ÌáèÞìáôïò
        4. -
        5. ÖÝñíïíôáò Áñ÷åßá (upload files)
        6. -
        7. Ñõèìßæïíôáò Äñáóôçñéüôçôåò
        8. -
        9. ÔñÝ÷ïíôáò ôï ÌÜèçìá
        10. -
        11. Ðåñéóóüôåñåò Ðëçñïöïñßåò
        12. -
        -

        Ðùò íá Áñ÷ßóåôå

        +

        ÔìÞìáôá áõôïý åããñÜöïõ:

        +
          +
        1. Ðùò íá Áñ÷ßóåôå
        2. +
        3. Ñõèìßóåéò ÌáèÞìáôïò
        4. +
        5. ÖÝñíïíôáò Áñ÷åßá (upload files)
        6. +
        7. Ñõèìßæïíôáò Äñáóôçñéüôçôåò
        8. +
        9. ÔñÝ÷ïíôáò ôï ÌÜèçìá
        10. +
        11. Ðåñéóóüôåñåò Ðëçñïöïñßåò
        12. +
        +

        Ðùò íá Áñ÷ßóåôå

        Ôï Ýããñáöï áõôü õðïèÝôåé ïôé ï äéá÷åéñéóôÞò ôïõ äéêôéáêïý ôüðïõ Ý÷åé åãêáôáóôÞóåé ôï Moodle êáé Ý÷åé äþóåé óå åóÜò êáéíïýñãéá, êåíÜ ìáèÞìáôá íá áñ÷ßóåôå. Åðßóçò õðïèÝôïõìå ïôß Ý÷åôå ðéóôïðïéçèåß óáí êáèçãçôÞò @@ -35,9 +32,9 @@

      • ÐñïóÝîôå êáé ÷ñçóéìïðïéÞóôå áõôÜ ôá ìéêñÜ åéêïíßäéá:
        -

          - Ôï åéêïíßäéï áëëáãÞò +

          - Ôï åéêïíßäéï áëëáãÞò óáò åðéôñÝðåé íá áëëÜæåôå üôé åßíáé ìåôÜ áðï áõôü.

        -

        - Ôï åéêïíßäéï +

        - Ôï åéêïíßäéï âïÞèåéáò óáò åöïäéÜæåé ìå Ýíá êáéíïýñãéï ðáñÜèõñï ìå áíáëõôéêÝò ïäçãßåò

      • @@ -46,9 +43,9 @@ ôï ðïõ áêñßâùò âñßóêåóôáé êáé èá óáò áðïôñÝðåé íá ÷áèåßôå. -
        +
        -

        Ñõèìßóåéò ÌáèÞìáôïò

        +

        Ñõèìßóåéò ÌáèÞìáôïò

        Ôï ðñþôï ðñÜãìá ðïõ ðñÝðåé íá êÜíåôå åßíáé íá êïéôÜîåôå êÜôù áðü ôçí åðéëïãÞ "Administration" óôçí áñ÷éêÞ óåëßäá ôïõ ìáèÞìáôïò óáò êáé íá ðáôÞóåôå ôçí åðéëïãÞ "Settings..." @@ -66,13 +63,13 @@ (formats) ðïõ õðÜñ÷ïõí (áãíïÝéóôå ôá äéáöïñåôéêÜ ÷ñþìáôá, ôá ïðïßá åßíáé Ýíá óåô ãéá ïëüêëçñï ôï äéêôõáêïý ôüðïõ áðï ôïí äéá÷åéñéóôÞ ôïõ):

        Åäâïìáäéáßï Ó÷Þìá:

        -

        +

         

        Ó÷Þìá ÈåìÜôùí:

        -

        +

         

        Êïéíùíéêü Ó÷Þìá:

        -

        +

         

        Óçìåéþóôå üôé ôï Åâäïìáäéáßï Ó÷Þìá áëëÜ êáé ôï Ó÷Þìá ÈåìÜôùí åßíáé ðáíïìïéüôõðá óôçí äïìÞ. Ç êýñéá äéáöïñÜ ôïõò åßíáé üôé êÜèå êïõôß óôï Åâäïìáäéáßï Ó÷Þìá êáëýðôåé áêñéâþò ìéá åâäïìÜäá, @@ -80,9 +77,9 @@ ÷ñçóéìïðïéåß ðïëý ðåñéå÷üìåíï êáé åßíáé âáóéóìÝíï ãýñù áðü Ýíá ìüíï forum - ôï ïðïßï öáßíåôáé óôçí êåíôñéêÞ óåëßäá.

        ÊïéôÜîôå ôá êïõìðéÜ ôçò âïÞèåéáò óôçí Óåëßäá ôùí Ñõèìßóåùí ÌáèÞìáôïò ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò.

        -
        +
        -

        ÖÝñíïíôáò Áñ÷åßá (upload files)

        +

        ÖÝñíïíôáò Áñ÷åßá (upload files)

        Ìðïñåß íá Ý÷åôå åßäç êÜðïéï ðåñéå÷üìåíï ôï ïðïßï íá èÝëåôå íá ðñïóèÝóåôå óôï ìÜèçìá óáò, üðùò éóôïóåëßäåò, áñ÷åßá Þ÷ïõ, video, êåßìåíá Þ áêüìá êáé ðáñïõóéÜóåéò óå Flash. @@ -91,7 +88,7 @@ áëëÜîåôå üíïìá, íá ôá áëëÜîåôå áêüìá êáé íá ôá óâÞóåôå.

        ¼ëá áõôÜ åðéôõãùÜíïíôáé ìÝóù ôïõ óõíäÝóìïõ ìå ôï üíïìá Files ðïõ õðÜñ÷åé óôï Administration ìåíïý. Ï ôïìÝáò ìå ôá áñ÷åßá åßíáé êÜðùò Ýôóé:

        -

        +

         

        Áõôï ôï interface åßíáé äéáèÝóéìï ìüíï óôïõò êáèçãçôÝò - äåí Ý÷ïõí ðñüóâáóç ïé ìáèçôÝò. Îå÷ùñéóôÜ áñ÷åßá ãßíïíôáé äéáèÝóéìá óôïõò ìáèçôÝò áñãüôåñá (ùò "ðçãÝò" @@ -113,9 +110,9 @@

        Ìéá ôåëåõôáßá óçìåßùóç: Åáí ôï ðåñéå÷üìåíï óáò âñßóêåôáé êÜðïõ óôï äßêôõï ôüôå äåí ÷åéÜæåôáé íá öÝñåôå ôá áñ÷åßá óáò - ìðïñåßôå íá ôá óõíäÝóåôå áðåõèåßáò ìÝóá óôï ìÜèçìá (äåßôå ôï module ãéá ôéò ðçãÝò êáé ôï åðüìåíï ôìÞìá).

        -
        +
        -

        Ñõèìßæïíôáò Äñáóôçñéüôçôåò

        +

        Ñõèìßæïíôáò Äñáóôçñéüôçôåò

        Ç êáôáóêåõÞ åíüò ìáèÞìáôïò åìðëÝêåé ôçí ðñüóèåóç åíüò module ó÷åôéêü ìå äñáóôçñéüôçôåò ìáèÞìáôïò óôçí êåíôñéêÞ óåëßäá Ýôóé þóôå ïé ìáèçôÝò íá ìðïñïýí íá ôï ÷ñçóéìïðïéïýí. Ìðïñåßôå íá ìåôáêéíÞóåôå @@ -134,22 +131,22 @@ ôéò áðáéôÞóåéò ôïõ ìáèÞìáôïò. Ç çìåñïìçíßá ðïõ áíåâÜæïõí ôï áñ÷åßï ôïõò êáôáãñÜöåôáé. Êáôüðéí, èá Ý÷åôå ìéá óåëßäá óôçí ïðïßá èá ìðïñåßôå íá âñåßôå êÜèå áñ÷åßï (êáé ðüóï áñãïðïñçìÝíá Þ ü÷é Þñèå), êáé ìåôÜ èá ìðïñåßôå íá âÜëåôå Ýíá âáèìü êáé êÜðïéï ó÷üëåéï. ÌéóÞ þñá ìåôÜ áðï üôáí âÜëåôå âáèìü óå êÜðïéï ìáèçôÞ ôï - Moodle èá óôåßëåé áõôüìáôá Ýíá e-mail óôïí ìáèçôÞ ìå ìéá åéäïðïßçóç.
        -
        + Moodle èá óôåßëåé áõôüìáôá Ýíá e-mail óôïí ìáèçôÞ ìå ìéá åéäïðïßçóç.
        +

        ÅðéëïãÞ
        Ìéá äñáóôçñéüôçôá åðéëïãÞò åßíáé ðïëý áðëÞ - ñùôÜò ìéá åñþôçóç êáé êáèïñßæåéò ìéá åðéëïãÞ áðÜíôçóåùí Ïé ìáèçôÝò ìðïñïýí íá êÜíïõí ôéò åðéëïãÝò ôïõò, êáé åóåßò Ý÷åôå ìéá ïèüíç áíáöïñþí üðïõ ìðïñåßôå íá äåßôå ôá áðïôåëÝóìáôá. Åãþ ôï ÷ñçóéìïðïéïýóá ãéá íá ìáæåýù óõãêáôáèÝóåéò ãéá Ýñåõíá áðï ôïõò ìáèçôÝò ìïõ, áëëá - åóåéò ìðïñåßôå íá ôï ÷ñçóéìïðïéÞóåôå ãéá ãñÞãïñá ãêÜëïð Þ øçöïöïñßåò óôçí ôÜîç. -
        -
        + åóåéò ìðïñåßôå íá ôï ÷ñçóéìïðïéÞóåôå ãéá ãñÞãïñá ãêÜëïð Þ øçöïöïñßåò óôçí ôÜîç. +
        +
        Forum
        Áõôü ôï module åßíáé ìáêñÜí ôï ðéï óõìáíôéêü - åßíáé åäþ üðïõ ëáìâÜíïõí ìÝñïò ïé óõæçôÞóåéò Ìþëéò ðñïóèÝóåôå Ýíá êáéíïõñãéï forum, èá ìðïñÝóåôå íá åðéëÝîåôå áðï äéáöïñåôéêïýò ôýðïõò - Ýíá áðëü forum ãéá óõæÞôçóç åíüò èÝìáôïò, Ýíá åëÝõèåñï ãéá üëïõò êáé ãåíéêü - forum, Þ Ýíá forum one-discussion-thread-per-user. -
        -
        + forum, Þ Ýíá forum one-discussion-thread-per-user. +
        +
        Áñ÷åßï êáôáãñáöÞò ãåãïíüôùí (Journal)
        ÊÜèå äñáóôçñßïôçôá êáôáãñáöÞå ãåãïíþôùí áðïôåëåß ìéá êáôá÷þñçóç óôï óõíïëéêü áñ÷åßï êáôáãñáöÞò ãåãïíþôùí ôïõ ìáèÞìáôïò. Ãéá êÜèå Ýíá ìðïñåßôå íá êáèïñßóåôå ìéá áíïé÷ôïý ôÝëïõò åñþôçóç ç ïðïß áïäçãåß ôï ôé ãñÜöïõí @@ -157,15 +154,15 @@ ìáèÞìáôïò ìüíï). Íá åíèáñåßíåôå ôïõò ìáèçôÝò íá ãñÜöïõí óôï÷áóôéêÜ êáé ìå êñéôéêü ðíåýìá óå áõôÜ ôá journals, êáèþò åßíáé äéáèÝóéìá ìüíï óå áõôïýò êáé åóÜò. Êáôüðéí, èá ìðïñåßôå íá âáèìïëïãÞóåôå êáé íá ó÷ïëéÜóåôå üëåò ôéò êáôá÷ùñÞóåéò ãéá áõôÞ ôçí åâäïìÜäá Þ ôï èÝìá, êáé ïé ìáèçôÝò èá ëáìâÜíïõí áõôüìáôá Ýíá e-mail ðïõ èá ôïõò - ðëçñïöïñåß ó÷åôéêÜ ìå ôçí áíÜäñáóç óáò. -
        -
        + ðëçñïöïñåß ó÷åôéêÜ ìå ôçí áíÜäñáóç óáò. +
        +
        ÐçãÞResource
        Ïé ðçãÝò åßíáé ôï ðåñéå÷üìåíï ôïõ ìáèÞìáôïò óáò. ÊÜèå ðçãÞ ìðïñåß íá åßíáé åíá ïðïéäÞðïôå áñ÷åßï Ý÷åôå áíåâÜóåé Þ Ý÷åôå óõíäÝóåé óå êáðïéï URL. Ìðïñåßôå åðßóçò íá äéáôçñÞóåôå áðëÝò, âáóéóìÝíåò óå êåßìåíï, óåëßäåò ðëçêôñïëïãþíôáò - ôåò áðåõèåßáò óå ìéá öüñìá. -
        -
        + ôåò áðåõèåßáò óå ìéá öüñìá. +
        +
        ÅñùôÞìáôá - Quiz
        Áõôü ôï module óáò åðéôñÝðåé íá ó÷åäéÜæåôå êáé íá åöáñìüæåôå ôåóô åñùôçìÜôùí, ðïõ ïé áðáíôÞóåéò ôùí åñùôÞóåùí íá áðïôåëïýíôáé áðï ðïëëáðëÝò åðéëïãÝò, óùóôü Þ ëÜèïò, Þ ìéêñÝò áðáíôÞóåéò. ÁõôÝò ïé åñùôÞóåéò êñáôïýíôáé óå ìéá @@ -173,27 +170,27 @@ Ôá åñùôÞìáôá ìðïñïýí íá åðéôñÝðïõí ðåñéóóüôåñåò áðï ìéá ðñïóðÜèåéåò. ÊÜèå ðñïóðÜèåéá óçìåéþíåôå áõôüìáôá, êáé ï êáèçãçôÞò ìðïñåß íá äéáëÝîåé Þ íá äþóåé êÜðïéá óôïé÷åßá Þ íá äåßîåé ôéò óùóôÝò áðáíôÞóåéò. Áõôü ôï module ðåñéëáìâÜíåé âáèìïëïãéêÝò äéåõêïëýíóåéò. - -
        -
        + +
        +
        Survey
        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 course as an evaluation tool (I use one every week in my courses).
        -
        +

        ÁöïýðñïóèÝóåôå ôéò äñáóôçñéüôçôåò óáò ìðïñåßôå íá ôéò ìåôáêéíåßôå ðÜíù êÜôù óôï ðåñéâÜëëïí ôïõ ìÜèçìáôïò óáò - êëéêÜñïíôáò óôá ìéêñÜ åéêïíßäéá ìå ôá âåëÜêéá ( - ) äßðëá óôï êÜèå Ýíá. Ìðïñåßôå åðßóçò íá ôá - äéáãñÜøåôå ÷ñçóéìïðïéþíôáòôï åéêïíßäéï ìå ôï óôáõñü , - êáé íá ôá îáíá-áëëÜîåôå ÷ñçóéìïðïéþíôáò ôï åéêïíßäéï ôçò áëëáãÞò .

        -
        + êëéêÜñïíôáò óôá ìéêñÜ åéêïíßäéá ìå ôá âåëÜêéá ( + ) äßðëá óôï êÜèå Ýíá. Ìðïñåßôå åðßóçò íá ôá + äéáãñÜøåôå ÷ñçóéìïðïéþíôáòôï åéêïíßäéï ìå ôï óôáõñü , + êáé íá ôá îáíá-áëëÜîåôå ÷ñçóéìïðïéþíôáò ôï åéêïíßäéï ôçò áëëáãÞò .

        +
        -

        ÔñÝ÷ïíôáò ôï ÌÜèçìá

        +

        ÔñÝ÷ïíôáò ôï ÌÜèçìá

        Èá ìðïñïýóá íá ãñÜøù ìéá äéáôñéâÞ ó÷åôéêÜ ìå áõôü. Óôçí ðñáãìáôéêüôçôá ãñÜöù ìéá äéáôñéâÞ - ó÷åôéêÜ ìå áõôü.

        + ó÷åôéêÜ ìå áõôü.

        ÌÝ÷ñé ôüôå åäþ åßíáé ìåñéêÜ êåíôñéêÜ óçìåßá:

        1. Íá ãñáöôåßôå óå üëá ôá forums.
        2. @@ -214,25 +211,25 @@ Åßíáé êáé ðïëý åýêïëï íá âñåèÞôå ðïëý ðéåóìÝíïé áðï ôïí üãêï ôùí áðïñéþí ðïõ ìðïñåß íá ìáæåõôåß, áëëÜ åßíáé êáé êïìâéêü óçìåßï ãéá íá áíáðôýîåôå Ýíá áßóèçìá êïéíüôçôáò óôï ìÜèçìáò óáò.
        -
        +
        -

        Ðåñéóóüôåñåò Ðëçñïöïñßåò

        +

        Ðåñéóóüôåñåò Ðëçñïöïñßåò

        ÅÜí Ý÷åôå êÜðïéåò óõãêåêñéìÝíåò äõóêïëßåò ìå ôï äéêôõáêü ôüðï, èá ðñÝðåé íá åðéêïéíùíÞóåôå ìå ôïí ôïðéêü äéá÷åéñéóôÞ ôïõ äéêôõáêïý ôüðïõ.

        Åáí Ý÷åôå êáëÝò éäÝåò ãéá ôçí âåëôßùóç ôïõ Moodle, Þ áêüìá êáé êáëÝò éóôïñßåò, åëÜôå óôï moodle.com êáé ãñáöôåßôå óôï ìÜèçìá ðïõ ëÝãåôáé - "×ñçóéìïðïéüíôáò ôï Moodle". + "×ñçóéìïðïéüíôáò ôï Moodle". Èá ÷áñïýìå ðïëý íá áêïýóïõìå íÝá óáò, êáé èá âïçèÞóåôå íá âåëôéùèåß ôï Moodle.

        Åáí èÝëåôå íá óõíåéóöÝñåôáé ãñÜöïíôáò êþäéêá ãéá êÜðïéï êáéíïýñãéï modules, Þ öñÜöïíôáò êÜðïéï êåßìåíï, Þ äçìïóßåõóç, åðéêïéíùíÞóôå ìáæß ìïõ: Martin Dougiamas Þ óåñöÝñåôå óôçí óåëßäá "Åíôïðéóìïý Ëáèùír" ôïõ Moodle, óôçí äéåýèõíóç bugs.moodle.com

        Åõ÷áñéóôþ ðïõ ÷ñçóéìïðïéÞóáôå ôï Moodle - êáëÞ ôý÷ç!

        -
        +

         

        -

        Ôåêìçñßùóç ôïõ Moodle

        -

        Version: $Id: teacher.html,v 1.4 2002/08/18 10:00:01 - martin Exp $

        +

        Ôåêìçñßùóç ôïõ Moodle

        +

        Version: $Id: teacher.html,v 1.4 2002/08/18 10:00:01 + martin Exp $

        - + diff --git a/lang/el/docs/upgrade.html b/lang/el/docs/upgrade.html index a9de14ad792..df50fa5b8ee 100644 --- a/lang/el/docs/upgrade.html +++ b/lang/el/docs/upgrade.html @@ -1,13 +1,10 @@ - - - - Ôåêìçñßùóç Moodle: ÁíáâÜèìéóç - - + + Ôåêìçñßùóç Moodle: ÁíáâÜèìéóç + + - -

        Áíáâáèìßæïíôáò ôï Moodle

        + +

        Áíáâáèìßæïíôáò ôï Moodle

        Ôï Moodle Ý÷åé ó÷åäéáóôåß íá áíáâáèìßæåôáé êáèáñÜ áðü ïðïéáäÞðïôå ðñïçãïýìåíç Ýêäïóç óå ïðïéáäÞðïôå åðüìåíç.

        ¼ôáí áíáâáèìßæåôå ìéá åãêáôÜóôáóç Moodle èá ðñÝðåé íá áêïëïõèÞóåôå ôá ðáñáêÜôù âÞìáôá:

        @@ -24,7 +21,7 @@

        ÄçìéïõñãÞóôå Ýíá îå÷ùñéóôü áíôßãñáöï ôùí áñ÷åßùí ðñéí ôçí áíáâÜèìéóç Ýôóé þóôå íá åßíáé äõíáôÞ ç áíÜêôçóç ôïõ config.php êáé ïðïéïõäÞðïôå module Ý÷åé ðñïóôåèåß - üðùò èÝìáôá, ãëþóóåò êôë.
        + üðùò èÝìáôá, ãëþóóåò êôë.

        2. Ï öÜêåëïò äåäïìÝíùí.

        @@ -32,7 +29,7 @@

        Åêåß âñßóêåôáé ôï ðåñéå÷üìåíï ðïõ Ý÷åé öïñôùèåß (üðùò áñ÷åßá ìáèçìÜôùí êáé åñãáóßåò öïéôçôþí) êáé Ýôóé åßíáé ðïëý óçìáíôéêü íá õðÜñ÷ïõí áíôßãñáöá áóöáëåßáò áõôþí ôùí áñ÷åßùí ïýôùò Þ Üëëùò. ÌåñéêÝò öïñÝò ïé áíáâáèìßóåéò åíäÝ÷åôáé - íá ìåôáêéíÞóïõí Þ íá ìåôïíïìÜóïõí öáêÝëïõò ìÝóá óôï öÜêåëï äåäïìÝíùí.
        + íá ìåôáêéíÞóïõí Þ íá ìåôïíïìÜóïõí öáêÝëïõò ìÝóá óôï öÜêåëï äåäïìÝíùí.

        3. Ç âÜóç äåäïìÝíùí

        @@ -61,12 +58,12 @@ ðñïâëÞìáôá óå íÝåò åãêáôáóôÜóåéò. Ï êáëýôåñïò ôñüðïò åßíáé íá ìåôïíïìÜóåôå ôïí ôñÝ÷ïíôá öÜêåëï Moodle êáé íá áðïóõìðéÝóåôå ôï Moodle óôçí ðáëéÜ èÝóç.

        -

        mv moodle moodle.backup
        +

        mv moodle moodle.backup
        tar xvzf moodle-1.0.6.tgz

        ÌåôÜ, áíôéãñÜøôå ôï config.php êáé ïðïéïäÞðïôå plugin:

        -

        cp moodle.backup/config.php moodle
        +

        cp moodle.backup/config.php moodle
        cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme

        @@ -97,8 +94,8 @@ êáé áðïóôåßëôå Ýíá ìÞíõìá óôï Installation Support Forum.

         

        -

         

        -

        Ôåêìçñßùóç Moodle

        -

        Version: $Id$

        +

         

        +

        Ôåêìçñßùóç Moodle

        +

        Version: $Id$

        - + diff --git a/lang/el/help/assignment/assignmenttype.html b/lang/el/help/assignment/assignmenttype.html index ec6878853b3..e121e7345a2 100644 --- a/lang/el/help/assignment/assignmenttype.html +++ b/lang/el/help/assignment/assignmenttype.html @@ -1,14 +1,14 @@ -

        Ôýðïé Åñãáóéþí

        +

        Ôýðïé Åñãáóéþí

        -

        ÕðÜñ÷ïõí äéáöïñåôéêïß ôýðïé åñãáóéþí

        +

        ÕðÜñ÷ïõí äéáöïñåôéêïß ôýðïé åñãáóéþí

        -

        Äñáóôçñéüôçôá óå êáôÜóôáóç åêôüò óýíäåóçò äéêôýïõ - áõôüò ï ôýðïò åßíáé ÷ñÞóéìïò üôáí ç åñãáóßá ðñáãìáôïðïéåßôáé +

        Äñáóôçñéüôçôá óå êáôÜóôáóç åêôüò óýíäåóçò äéêôýïõ - áõôüò ï ôýðïò åßíáé ÷ñÞóéìïò üôáí ç åñãáóßá ðñáãìáôïðïéåßôáé åêôüò ôïõ Moodle. Ïé ìáèçôÝò ìðïñïýí íá äïõí ìéá ðåñéãñáöÞ ôçò åñãáóßáò, áëëÜ äåí ìðïñïýí íá îáíáöïñôþóïõí áñ÷åßá Þ ïôéäÞðïôå Üëëï. Ùóôüóï, ïé êáèçãçôÝò ìðïñüõí íá âáèìïëïãåßóïõí üëïõò ôïõò ìáèçôÝò êáé áõôïß ìðïñïýí íá äïõí ôçí -êïéíïðïßçóç ôùí âáèìþí ôïõò.

        +êïéíïðïßçóç ôùí âáèìþí ôïõò. -

        Åðáíáöüñôùìá åíüò áðëïý áñ÷åßïõ - áõôüò ï ôýðïò ôçò åñãáóßáò åðéôñÝðåé óå üëïõò ôïõò ìáèçôÝò íá îáíáöïñôþóïõí Ýíá +

        Åðáíáöüñôùìá åíüò áðëïý áñ÷åßïõ - áõôüò ï ôýðïò ôçò åñãáóßáò åðéôñÝðåé óå üëïõò ôïõò ìáèçôÝò íá îáíáöïñôþóïõí Ýíá áðëü áñ÷åßï, ïðïéïýäÞðïôå ôýðïõ. Áõôü ìðïñåß íá åßíáé Ýíá áñ÷åßï åðåîåñãáóßáò êåéìÝíïõ, Þ ìéá åéêüíá, ìéá óõìðéåóìÝíç éóôïóåëßäá, Þ ïôéäÞðïôå Üëëï ôïõò æçôÞèåé íá ðáñáäþóïõí. Ïé êáèçãçôÝò ìðïñïýí íá âáèìïëïãåßóïõí ôéò -ðáñáäïôÝåò åñãáóßåò üôáí åßíáé óõíäåäåìÝíïé óôï äßêôõï.

        +ðáñáäïôÝåò åñãáóßåò üôáí åßíáé óõíäåäåìÝíïé óôï äßêôõï. diff --git a/lang/el/help/assignment/index.html b/lang/el/help/assignment/index.html index 4276848e541..4f8cf9e6fe1 100755 --- a/lang/el/help/assignment/index.html +++ b/lang/el/help/assignment/index.html @@ -1 +1,5 @@ -

        ÁíáèÝóåéò

        \ No newline at end of file +

        ÁíáèÝóåéò

        + diff --git a/lang/el/help/assignment/mods.html b/lang/el/help/assignment/mods.html index 76bf9a2144a..12eb3414844 100755 --- a/lang/el/help/assignment/mods.html +++ b/lang/el/help/assignment/mods.html @@ -1 +1,8 @@ -

         ÁíáèÝóåéò

          Ïé áíáèÝóåéò äßíïõí ôç äõíáôüôçôá óôïí êáèçãçôÞ íá êáèïñßóåé ìéá åñãáóßá ðïõ áðáéôåß áðü ôïõò ìáèçôÝò íá äçìéïõñãÞóïõí Ýíá øçöéáêü ìÞíõìá (ïðïéáóäÞðïôå ìïñöÞò) êáé íá ôï õðïâÜëëïõí öïñôþíïíôÜò ôï óôïí åîõðçñåôçôÞ (server). Ïé óõíçèéóìÝíåò áíáèÝóåéò ðåñéëáìâÜíïõí äïêßìéá, åñãáóßåò, åêèÝóåéò ê.ëð. ÁõôÞ ç åíüôçôá ðåñéëáìâÜíåé åõêïëßåò âáèìïëüãçóçò.

        \ No newline at end of file +

         ÁíáèÝóåéò

        +
          +

          Ïé áíáèÝóåéò äßíïõí ôç äõíáôüôçôá óôïí êáèçãçôÞ íá êáèïñßóåé ìéá åñãáóßá + ðïõ áðáéôåß áðü ôïõò ìáèçôÝò íá äçìéïõñãÞóïõí Ýíá øçöéáêü ìÞíõìá (ïðïéáóäÞðïôå + ìïñöÞò) êáé íá ôï õðïâÜëëïõí öïñôþíïíôÜò ôï óôïí åîõðçñåôçôÞ (server). Ïé + óõíçèéóìÝíåò áíáèÝóåéò ðåñéëáìâÜíïõí äïêßìéá, åñãáóßåò, åêèÝóåéò ê.ëð. ÁõôÞ + ç åíüôçôá ðåñéëáìâÜíåé åõêïëßåò âáèìïëüãçóçò.

          +
        diff --git a/lang/el/help/assignment/resubmit.html b/lang/el/help/assignment/resubmit.html index 9583d839d7f..64a0920984c 100644 --- a/lang/el/help/assignment/resubmit.html +++ b/lang/el/help/assignment/resubmit.html @@ -1,10 +1,10 @@ -

        ÅðáíáðáñÜäùóç åñãáóéþí

        +

        ÅðáíáðáñÜäùóç åñãáóéþí

        -

        ¸÷åé êáèïñéóôåß, ïé ìáèçôÝò íá ìç ìðïñïýí íá îáíáäþóïõí ôéò åñãáóßåòó ôïõò áðü ôç óôéãìÞ ðïõ -ï êáèçãçôÞò ôéò Ý÷åé âáèìïëïãßóåé.

        +

        ¸÷åé êáèïñéóôåß, ïé ìáèçôÝò íá ìç ìðïñïýí íá îáíáäþóïõí ôéò åñãáóßåòó ôïõò áðü ôç óôéãìÞ ðïõ +ï êáèçãçôÞò ôéò Ý÷åé âáèìïëïãßóåé.

        -

        ÅÜí åíåñãïðïéÞóåôáé áõôÞ ôçí åðéëïãÞ, ôüôå ïé ìáèçôÝò èá ìðïñïýí íá îáíáðáñáäþóïõí ôéò åñãáóßåò +

        ÅÜí åíåñãïðïéÞóåôáé áõôÞ ôçí åðéëïãÞ, ôüôå ïé ìáèçôÝò èá ìðïñïýí íá îáíáðáñáäþóïõí ôéò åñãáóßåò åíþ áõôÝò Ý÷ïõí âáèìïëïãçèåß (Ýôóé þóôå íá åðéôý÷åôå áíáâáèìïëüãçóç). Áõôü ìðïñåß íá åßíáé ÷ñÞóéìï, åÜí ï - êáèçãçôÞò èÝëåé íá åíèáññýíåé ôïõò ìáèçôÝò íá êÜíïõí êáëýôåñç äïõëåéÜ óå ìéá åðáíáëçðôéêÞ äéáäéêáóßá.

        + êáèçãçôÞò èÝëåé íá åíèáññýíåé ôïõò ìáèçôÝò íá êÜíïõí êáëýôåñç äïõëåéÜ óå ìéá åðáíáëçðôéêÞ äéáäéêáóßá.

        -

        Ðñïöáíþò, áõôÞ ç åðéëïãÞ äåí Ý÷åé êáìßá ó÷Ýóç ìå ôéò åñãáóßåò óå êáôÜóôáóç åêôüò óýíäåóçò äéêôýïõ.

        +

        Ðñïöáíþò, áõôÞ ç åðéëïãÞ äåí Ý÷åé êáìßá ó÷Ýóç ìå ôéò åñãáóßåò óå êáôÜóôáóç åêôüò óýíäåóçò äéêôýïõ.

        diff --git a/lang/el/help/chat/chatting.html b/lang/el/help/chat/chatting.html index 3c9759e8cd4..8130c344c44 100755 --- a/lang/el/help/chat/chatting.html +++ b/lang/el/help/chat/chatting.html @@ -1 +1,31 @@ -

        ×ñÞóç ôïõ Chat

        Ç åíüôçôá chat ðåñéÝ÷åé ìåñéêÜ ÷áñáêôçñéóôéêÜ ãéá íá êÜíåé ôç óõæÞôçóç ðéï åõ÷Üñéóôç.

        ×áìüãåëá
        Ôá ÷áìïãåëáóôÜ ðñüóùðá (emoticons) ðïõ ìðïñåßò íá ðëçêôñïëïãÞóåéò óôï Moodle ìðïñïýí íá ðëçêôñïëïãçèïýí êé åäþ êáé íá åìöáíßæïíôáé óùóôÜ. Ãéá ðáñÜäåéãìá, , :-) =
        Links
        Ïé äéåõèýíóåéò ôïõ Internet èá ìåôáôñáðïýí óå links áõôüìáôá.
        Emoting
        Ìðïñåßò íá îåêéíÞóåéò ìéá ãñáììÞ ìå "/åãþ" Þ ":". Ãéá ðáñÜäåéãìá, áí ôï üíïìÜ óïõ åßíáé Kim êáé ðëçêôñïëïãÞóåéò ":ãåëÜåé!" Þ "/åãþ ãåëÜù!" ôüôå üëïé èá êáôáëÜâïõí "ç Kim ãåëÜåé!".
        ¹÷ïé
        Ìðïñåßò íá óôåßëåéò Ýíáí Þ÷ï óå êÜðïéïí êÜíïíôáò êëéê óôï link "beep" äßðëá óôï üíïìÜ ôïõ. Ìéá ÷ñÞóéìç óõíôüìåõóç ãéá íá óôåßëåéò Ýíáí Þ÷ï óå üëá ôá Üôïìá ôçò óõæÞôçóçò ìáæß åßíáé íá ðëçêôñïëïãÞóåéò "beep all".
        HTML
        Áí îÝñåéò ëßãï ôïí êþäéêá HTML, ìðïñåßò íá ôïí ÷ñçóéìïðïéÞóåéò óôï êåßìåíü óïõ ãéá íá êÜíåéò äéÜöïñá ðñÜãìáôá üðùò åéóáãùãÞ åéêüíùí, ìïõóéêÞ Þ äçìéïõñãßá äéáöïñåôéêïý, óå ÷ñþìá êáé ìÝãåèïò, êåéìÝíïõ.
        \ No newline at end of file +

        ×ñÞóç ôïõ Chat

        + +

        Ç åíüôçôá chat ðåñéÝ÷åé ìåñéêÜ ÷áñáêôçñéóôéêÜ ãéá íá êÜíåé ôç óõæÞôçóç ðéï + åõ÷Üñéóôç.

        + +
        +
        ×áìüãåëá
        +
        Ôá ÷áìïãåëáóôÜ ðñüóùðá (emoticons) ðïõ ìðïñåßò íá ðëçêôñïëïãÞóåéò óôï Moodle + ìðïñïýí íá ðëçêôñïëïãçèïýí êé åäþ êáé íá åìöáíßæïíôáé óùóôÜ. Ãéá ðáñÜäåéãìá, + , :-) =
        + +
        Links
        +
        Ïé äéåõèýíóåéò ôïõ Internet èá ìåôáôñáðïýí óå links áõôüìáôá.
        + +
        Emoting
        +
        Ìðïñåßò íá îåêéíÞóåéò ìéá ãñáììÞ ìå "/åãþ" Þ ":". Ãéá + ðáñÜäåéãìá, áí ôï üíïìÜ óïõ åßíáé Kim êáé ðëçêôñïëïãÞóåéò ":ãåëÜåé!" + Þ "/åãþ ãåëÜù!" ôüôå üëïé èá êáôáëÜâïõí "ç Kim ãåëÜåé!".
        + +
        ¹÷ïé
        +
        Ìðïñåßò íá óôåßëåéò Ýíáí Þ÷ï óå êÜðïéïí êÜíïíôáò êëéê óôï link "beep" + äßðëá óôï üíïìÜ ôïõ. Ìéá ÷ñÞóéìç óõíôüìåõóç ãéá íá óôåßëåéò Ýíáí Þ÷ï óå üëá + ôá Üôïìá ôçò óõæÞôçóçò ìáæß åßíáé íá ðëçêôñïëïãÞóåéò "beep all".
        + +
        HTML
        +
        Áí îÝñåéò ëßãï ôïí êþäéêá HTML, ìðïñåßò íá ôïí ÷ñçóéìïðïéÞóåéò óôï êåßìåíü + óïõ ãéá íá êÜíåéò äéÜöïñá ðñÜãìáôá üðùò åéóáãùãÞ åéêüíùí, ìïõóéêÞ Þ äçìéïõñãßá + äéáöïñåôéêïý, óå ÷ñþìá êáé ìÝãåèïò, êåéìÝíïõ.
        + +
        + diff --git a/lang/el/help/chat/index.html b/lang/el/help/chat/index.html index 215a5980847..327fa031e67 100755 --- a/lang/el/help/chat/index.html +++ b/lang/el/help/chat/index.html @@ -1 +1,4 @@ -

        Åíüôçôá Chat

        \ No newline at end of file +

        Åíüôçôá Chat

        + diff --git a/lang/el/help/chat/mods.html b/lang/el/help/chat/mods.html index 85ed7b92762..a70d512a699 100755 --- a/lang/el/help/chat/mods.html +++ b/lang/el/help/chat/mods.html @@ -1 +1,9 @@ -

         Chats

          Ç åíüôçôá Chat åðéôñÝðåé óôïõò óõììåôÝ÷ïíôåò íá Ý÷ïõí ìéá óõã÷ñïíéóìÝíç óõæÞôçóç óå ðñáãìáôéêü ÷ñüíï óôï Äéáäßêôõï. Áõôüò åßíáé Ýíáò ÷ñÞóéìïò ôñüðïò ãéá íá êáôáíïÞóåé ï Ýíáò ôïí Üëëïí êáé ôï èÝìá ôï èÝìá ðïõ óõæçôïýí - ï ôñüðïò ÷ñÞóçò åíüò chat room åßíáé áñêåôÜ äéáöïñåôéêüò áðü ôéò áóýã÷ñïíåò ïìÜäåò óõæçôÞóåùí. Ç åíüôçôá Chat ðåñéÝ÷åé êÜðïéá ÷áñáêôçñéóôéêÜ ãéá ôç äéá÷åßñéóç êáé åðéèåþñçóç ôùí óõæçôÞóåùí.

        \ No newline at end of file +

         Chats

        +
          +

          Ç åíüôçôá Chat åðéôñÝðåé óôïõò óõììåôÝ÷ïíôåò íá Ý÷ïõí ìéá óõã÷ñïíéóìÝíç óõæÞôçóç + óå ðñáãìáôéêü ÷ñüíï óôï Äéáäßêôõï. Áõôüò åßíáé Ýíáò ÷ñÞóéìïò ôñüðïò ãéá íá + êáôáíïÞóåé ï Ýíáò ôïí Üëëïí êáé ôï èÝìá ôï èÝìá ðïõ óõæçôïýí - ï ôñüðïò ÷ñÞóçò + åíüò chat room åßíáé áñêåôÜ äéáöïñåôéêüò áðü ôéò áóýã÷ñïíåò ïìÜäåò óõæçôÞóåùí. + Ç åíüôçôá Chat ðåñéÝ÷åé êÜðïéá ÷áñáêôçñéóôéêÜ ãéá ôç äéá÷åßñéóç êáé åðéèåþñçóç + ôùí óõæçôÞóåùí.

          +
        diff --git a/lang/el/help/choice/index.html b/lang/el/help/choice/index.html index eba78f01df7..12a55f615f3 100755 --- a/lang/el/help/choice/index.html +++ b/lang/el/help/choice/index.html @@ -1 +1,4 @@ -

        ÅðéëïãÝò

        \ No newline at end of file +

        ÅðéëïãÝò

        + diff --git a/lang/el/help/choice/mods.html b/lang/el/help/choice/mods.html index 989e9e55054..bb34a09ac48 100755 --- a/lang/el/help/choice/mods.html +++ b/lang/el/help/choice/mods.html @@ -1 +1,8 @@ -

         ÅðéëïãÝò

          Ìéá äñáóôçñéüôçôá åðéëïãÞò åßíáé ðïëý áðëÞ - ï êáèçãçôÞò êÜíåé ìéá åñþôçóç êáé êáèïñßæåé ìéá åðéëïãÞ ðïëëáðëþí áðáíôÞóåùí.Ìðïñåß íá öáíåß ÷ñÞóéìç óáí ìéá ãñÞãïñç øçöïöïñßá ãéá íá õðïêéíÞóåé ôç óêÝøç ãéá Ýíá èÝìá, ãéá íá åðéôñÝøåé óôçí ôÜîç íá øçößóåé ìéá êáôåýèõíóç ãéá ôï ìÜèçìá Þ ãéá íá óõãêåíôñþóåé ôç óõãêáôÜèåóç ãéá ôçí Ýñåõíá.

        \ No newline at end of file +

         ÅðéëïãÝò

        +
          +

          Ìéá äñáóôçñéüôçôá åðéëïãÞò åßíáé ðïëý áðëÞ - ï êáèçãçôÞò êÜíåé ìéá åñþôçóç + êáé êáèïñßæåé ìéá åðéëïãÞ ðïëëáðëþí áðáíôÞóåùí.Ìðïñåß íá öáíåß ÷ñÞóéìç óáí + ìéá ãñÞãïñç øçöïöïñßá ãéá íá õðïêéíÞóåé ôç óêÝøç ãéá Ýíá èÝìá, ãéá íá åðéôñÝøåé + óôçí ôÜîç íá øçößóåé ìéá êáôåýèõíóç ãéá ôï ìÜèçìá Þ ãéá íá óõãêåíôñþóåé ôç + óõãêáôÜèåóç ãéá ôçí Ýñåõíá. +

        diff --git a/lang/el/help/choice/options.html b/lang/el/help/choice/options.html index 381c561e59e..7746a95f406 100644 --- a/lang/el/help/choice/options.html +++ b/lang/el/help/choice/options.html @@ -1,6 +1,6 @@ -

        Äõíáôüôçôåò åðéëïãÞò

        +

        Äõíáôüôçôåò åðéëïãÞò

        -

        Åäþ, êáèïñßæåôå ôéò åðéëïãÝò áðï ôéò ïðïßåò ðñÝðåé íá åðéëÝîïõí ïé óõììåôÝ÷ïíôåò.

        +

        Åäþ, êáèïñßæåôå ôéò åðéëïãÝò áðï ôéò ïðïßåò ðñÝðåé íá åðéëÝîïõí ïé óõììåôÝ÷ïíôåò.

        -

        Ìðïñåßôå íá óõìðëçñþóåôå ïðïéïäÞðïôå áñéèìü áðü áõôÝò: äåí õðÜñ÷åé ðñüâëçìá íá áöÞóåôå -ìåñéêÝò åðéëïãÝò êåíÝò åÜí äåí ÷ñåéÜæåóôå êáé ôéò 6.

        +

        Ìðïñåßôå íá óõìðëçñþóåôå ïðïéïäÞðïôå áñéèìü áðü áõôÝò: äåí õðÜñ÷åé ðñüâëçìá íá áöÞóåôå +ìåñéêÝò åðéëïãÝò êåíÝò åÜí äåí ÷ñåéÜæåóôå êáé ôéò 6.

        diff --git a/lang/el/help/cookies.html b/lang/el/help/cookies.html index b6cba19b8e4..41e4009684b 100755 --- a/lang/el/help/cookies.html +++ b/lang/el/help/cookies.html @@ -1 +1,17 @@ -

        Cookies

        Äýï cookies ÷ñçóéìïðïéïýíôáé áð' áõôü ôï site.

        Ôï ðéï âáóéêü åßíáé ôï cookie óõíåäñßáò, ðïõ óõíÞèùò êáëåßôáé MoodleSession. ÐñÝðåé íá åðéôñÝøåéò ó' áõôü ôï cookie íá ðáñÝ÷åé óôïí öõëëïìåôñçôÞ óïõ óõíï÷Þ êáé íá äéáôçñåß ôç óýíäåóÞ óïõ áðü óåëßäá óå óåëßäá. ¼ôáí áðïóõíäÝåóáé Þ êëåßíåéò ôï öõëëïìåôñçôÞ áõôü êáôáóôñÝöåôáé (êáé áðü ôïí öõëëïìåôñçôÞ êáé áðü ôïí åîõðçñåôçôÞ).

        Ôï Üëëï cookie õðÜñ÷åé áðëÜ ãéá åõêïëßá, óõíÞèùò ïíïìÜæåôáé MOODLEID. Áðëþò èõìÜôáé ôï äéêü óïõ üíïìá ÷ñÞóôç üôáí åßóáé ìÝóá óôïí öõëëïìåôñçôÞ. Áõôü óçìáßíåé ðùò üôáí åðéóôñÝöåéò ó' áõôü ôï site, ôï ðåäßï ìå ôï üíïìá ÷ñÞóôç óôç óåëßäá óýíäåóçò èá åßíáé Þäç óõìðëçñùìÝíï. Åßíáé áóöáëÝóôåñï íá áñíçèåßò áõôü ôï cookie - áðëþò èá ðñÝðåé íá îáíáðëçêôñïëïãåßò ôï üíïìá ÷ñÞóôç êÜèå öïñÜ ðïõ óõíäÝåóáé.

        \ No newline at end of file +

        Cookies

        + +

        Äýï cookies ÷ñçóéìïðïéïýíôáé áð' áõôü ôï site.

        + +

        Ôï ðéï âáóéêü åßíáé ôï cookie óõíåäñßáò, ðïõ óõíÞèùò êáëåßôáé MoodleSession. + ÐñÝðåé íá åðéôñÝøåéò ó' áõôü ôï cookie íá ðáñÝ÷åé óôïí öõëëïìåôñçôÞ óïõ óõíï÷Þ + êáé íá äéáôçñåß ôç óýíäåóÞ óïõ áðü óåëßäá óå óåëßäá. ¼ôáí áðïóõíäÝåóáé Þ êëåßíåéò + ôï öõëëïìåôñçôÞ áõôü êáôáóôñÝöåôáé (êáé áðü ôïí öõëëïìåôñçôÞ êáé áðü ôïí åîõðçñåôçôÞ). +

        + +

        Ôï Üëëï cookie õðÜñ÷åé áðëÜ ãéá åõêïëßá, óõíÞèùò ïíïìÜæåôáé MOODLEID. + Áðëþò èõìÜôáé ôï äéêü óïõ üíïìá ÷ñÞóôç üôáí åßóáé ìÝóá óôïí öõëëïìåôñçôÞ. Áõôü + óçìáßíåé ðùò üôáí åðéóôñÝöåéò ó' áõôü ôï site, ôï ðåäßï ìå ôï üíïìá ÷ñÞóôç óôç + óåëßäá óýíäåóçò èá åßíáé Þäç óõìðëçñùìÝíï. Åßíáé áóöáëÝóôåñï íá áñíçèåßò áõôü + ôï cookie - áðëþò èá ðñÝðåé íá îáíáðëçêôñïëïãåßò ôï üíïìá ÷ñÞóôç êÜèå öïñÜ ðïõ + óõíäÝåóáé.

        + diff --git a/lang/el/help/courseavailability.html b/lang/el/help/courseavailability.html index 7627571b24a..c837d299212 100755 --- a/lang/el/help/courseavailability.html +++ b/lang/el/help/courseavailability.html @@ -1 +1,10 @@ -

        Äéáèåóéìüôçôá ÌáèÞìáôïò

        ÁõôÞ ç åðéëïãÞ óïõ åðéôñÝðåé íá "áðïêñýøåéò" ôï ìÜèçìÜ óïõ åíôåëþò.

        Äåí èá åìöáíéóôåß óå êáìßá ëßóôá ìáèçìÜôùí, åêôüò áðü ôùí êáèçãçôþí ôïõ ìáèÞìáôïò êáé ôùí äéá÷åéñéóôþí.

        Áêüìá êé áí ïé ìáèçôÝò ðñïóðáèÞóïõí íá ìðïõí óôç äéåýèõíóç ôïõ ìáèÞìáôïò áðåõèåßáò, äåí èá ôïõò åðéôñáðåß ç åßóïäïò.

        \ No newline at end of file +

        Äéáèåóéìüôçôá ÌáèÞìáôïò

        + +

        ÁõôÞ ç åðéëïãÞ óïõ åðéôñÝðåé íá "áðïêñýøåéò" ôï ìÜèçìÜ óïõ åíôåëþò.

        + +

        Äåí èá åìöáíéóôåß óå êáìßá ëßóôá ìáèçìÜôùí, åêôüò áðü ôùí êáèçãçôþí ôïõ ìáèÞìáôïò + êáé ôùí äéá÷åéñéóôþí.

        + +

        Áêüìá êé áí ïé ìáèçôÝò ðñïóðáèÞóïõí íá ìðïõí óôç äéåýèõíóç ôïõ ìáèÞìáôïò áðåõèåßáò, + äåí èá ôïõò åðéôñáðåß ç åßóïäïò.

        + diff --git a/lang/el/help/coursecategory.html b/lang/el/help/coursecategory.html index 180cb6498c1..269c4e9486c 100644 --- a/lang/el/help/coursecategory.html +++ b/lang/el/help/coursecategory.html @@ -1,10 +1,10 @@ -

        Êáôçãïñßåò ìáèçìÜôùí

        +

        Êáôçãïñßåò ìáèçìÜôùí

        -

        O äéá÷åéñçóôÞò ôïõ Moodle óáò ìðïñåß íá Ý÷åé ïñßóåé äéÜöïñåò - êáôçãïñßåò ìáèçìÜôùí.

        +

        O äéá÷åéñçóôÞò ôïõ Moodle óáò ìðïñåß íá Ý÷åé ïñßóåé äéÜöïñåò + êáôçãïñßåò ìáèçìÜôùí. -

        Ãéá ðáñÜãåéãìá: "ÅðéóôÞìç", "ÊëáóéêÝò ìåëÝôåò", "Äçìüóéá Õãåßá" ê.á.

        +

        Ãéá ðáñÜãåéãìá: "ÅðéóôÞìç", "ÊëáóéêÝò ìåëÝôåò", "Äçìüóéá Õãåßá" ê.á. -

        ÅðéëÝîôå ìéá êáôçãïñßá ðïõ åßíáé êáôÜëëçëç ãéá ôá ìáèÞìáôÜ óáò. ÁõôÞ +

        ÅðéëÝîôå ìéá êáôçãïñßá ðïõ åßíáé êáôÜëëçëç ãéá ôá ìáèÞìáôÜ óáò. ÁõôÞ ç åðéëïãÞ óáò èá åðçñåÜóåé ôï ðïý èá åìöáíßæïíôáé ôá ìáèÞìáôÜ óáò íá óôç - ëßóôá ìáèçìÜôùí êáé èá åßíáé ðéï åýêïëï ãéá ôïõò ìáèçôÝò íá ôá âñïõí.

        + ëßóôá ìáèçìÜôùí êáé èá åßíáé ðéï åýêïëï ãéá ôïõò ìáèçôÝò íá ôá âñïõí. diff --git a/lang/el/help/courseformats.html b/lang/el/help/courseformats.html index 202a4282657..3be07e54a81 100644 --- a/lang/el/help/courseformats.html +++ b/lang/el/help/courseformats.html @@ -1,22 +1,22 @@ -

        Ïé ìïñöÝò ìáèçìÜôùí ôïõ Moodle

        +

        Ïé ìïñöÝò ìáèçìÜôùí ôïõ Moodle

        -

        Åâäïìáäéáßá ìïñöÞ

        -
          +

          Åâäïìáäéáßá ìïñöÞ

          +
            Ôï ìÜèçìá åßíáé ïñãáíùìÝíï áíÜ åâäïìÜäá, ìå óáöÞ çìåñïìçíßá Ýíáñîçò êáé ëÞîçò. ÊÜèå åâäïìÜäá áðïôåëåßôáé áðü äñáóôçñéüôçôåò. ÌåñéêÝò, üðùò ôá çìåñïëüãéá, ìðïñåß íá Ý÷ïõí "áíïé÷ôÜ ðáñÜèõñá", ð÷. äýï åâäïìÜäùí, ìå ôï ðÝñáò ôùí ïðïßùí ðáýïõí íá åßíáé äéáèÝóéìá. -
          +
        -

        ÈåìáôéêÞ ìïñöÞ

        -
          +

          ÈåìáôéêÞ ìïñöÞ

          +
            Ðáñüìïéá ìå ôçí åâäïìáäéáßá ìïñöÞ, ìüíï ðïõ êÜèå "åâäïìÜäá" ïíïìÜæåôáé "èÝìá". ¸íá "èÝìá" äåí Ý÷åé êáíÝíá ÷ñïíéêü ðåñéïñéóìü. Äå ÷ñåéÜæåôáé íá ïñéóôïýí êÜðïéåò çìåñïìçíßåò -
          +
        -

        ÊïéíùíéêÞ ìïñöÞ

        -
          +

          ÊïéíùíéêÞ ìïñöÞ

          +
            ÁõôÞ ç ìïñöÞ ðñïóáíáôïëßæåôáé ãýñù áðü ìéá åíéáßá ïìÜäá óõæçôÞóåùí, ôçí ÊïéíùíéêÞ ïìÜäá óõæçôÞóåùí, ç ïðïßï åìöáíßæåôáé óôçí êýñéá óåëßäá. Åßíáé ÷ñÞóéìç óå ðåñéðôþóåéò ïé ïðïßåò áðáßôïýí ìéá ðéï ÷áëáñÞ ìïñöÞ. Äåí åßíáé êáí áðáñáßôçôï íá ðåñéÝ÷åé ìáèÞìáôá. Ãéá ðáñÜäåéãìá, ìðïñåß íá ÷ñçóéìïðïéçèåß óáí ðßíáêáò áíáêïéíþóåùí åíüò ôìÞìáôïò óå ìéá åôáéñßá. -
          +
        diff --git a/lang/el/help/coursefullname.html b/lang/el/help/coursefullname.html index 9752aebf2b1..9c179b301fa 100644 --- a/lang/el/help/coursefullname.html +++ b/lang/el/help/coursefullname.html @@ -1,4 +1,4 @@ -

        ÐëÞñåò üíïìá ìáèÞìáôïò

        +

        ÐëÞñåò üíïìá ìáèÞìáôïò

        -

        Ôï ðëÞñåò üíïìá ìáèÞìáôïò öáßíåôáé óôçí êïñõöÞ ôçò ïèüíçò êáé óôç ëßóôá ìáèçìÜôùí.

        +

        Ôï ðëÞñåò üíïìá ìáèÞìáôïò öáßíåôáé óôçí êïñõöÞ ôçò ïèüíçò êáé óôç ëßóôá ìáèçìÜôùí.

        diff --git a/lang/el/help/coursegrades.html b/lang/el/help/coursegrades.html index 253a02d3a20..ef39d449e4c 100755 --- a/lang/el/help/coursegrades.html +++ b/lang/el/help/coursegrades.html @@ -1 +1,17 @@ -

        Âáèìïß

        ÐïëëÝò áðü ôéò äñáóôçñéüôçôåò åðéôñÝðïõí ôç ñýèìéóç ôùí âáèìþí.

        Åî ïñéóìïý, ôá áðïôåëÝóìáôá üëùí ôùí âáèìþí ôïõ ìáèÞìáôïò ìðïñïýí íá öáíïýí óôç óåëßäá ôùí âáèìþí, ðïõ åßíáé äéáèÝóéìç áðü ôçí êõñßùò óåëßäá ôïõ ìáèÞìáôïò.

        Áí Ýíáò êáèçãçôÞò äåí åíäéáöÝñåôáé íá ÷ñçóéìïðïéåß âáèìïýò óå Ýíá ìÜèçìá Þ áðëþò èÝëåé íá êñýâåé ôïõò âáèìïýò áðü ôïõò ìáèçôÝò, ôüôå ìðïñåß íá áðåíåñãïðïéÞóåé ôçí åìöÜíéóç ôùí âáèìþí áðü ôéò Ñõèìßóåéò ÌáèÞìáôïò. Áõôü äåí ðåñéïñßæåé ôç ÷ñçóéìïðïßçóç Þ ñýèìéóç ôùí âáèìþí, áðëþò äåí åðéôñÝðåé íá åßíáé ôá áðïôåëÝóìáôá åìöáíÞ áðü ôïõò ìáèçôÝò. If a teacher is not interested in using grades in a course, or just wants to hide grades from students, then they can disable the display of grades in the Course Settings. This does not prevent individual activities from using or setting grades, it just disables the results being displayed to students.

        \ No newline at end of file +

        Âáèìïß

        + +

        ÐïëëÝò áðü ôéò äñáóôçñéüôçôåò åðéôñÝðïõí ôç ñýèìéóç ôùí âáèìþí.

        + +

        Åî ïñéóìïý, ôá áðïôåëÝóìáôá üëùí ôùí âáèìþí ôïõ ìáèÞìáôïò ìðïñïýí íá öáíïýí + óôç óåëßäá ôùí âáèìþí, ðïõ åßíáé äéáèÝóéìç áðü ôçí êõñßùò óåëßäá ôïõ ìáèÞìáôïò. +

        + +

        Áí Ýíáò êáèçãçôÞò äåí åíäéáöÝñåôáé íá ÷ñçóéìïðïéåß âáèìïýò óå Ýíá ìÜèçìá Þ + áðëþò èÝëåé íá êñýâåé ôïõò âáèìïýò áðü ôïõò ìáèçôÝò, ôüôå ìðïñåß íá áðåíåñãïðïéÞóåé + ôçí åìöÜíéóç ôùí âáèìþí áðü ôéò Ñõèìßóåéò ÌáèÞìáôïò. Áõôü äåí ðåñéïñßæåé ôç + ÷ñçóéìïðïßçóç Þ ñýèìéóç ôùí âáèìþí, áðëþò äåí åðéôñÝðåé íá åßíáé ôá áðïôåëÝóìáôá + åìöáíÞ áðü ôïõò ìáèçôÝò. If a teacher is not interested in using grades in a + course, or just wants to hide grades from students, then they can disable the + display of grades in the Course Settings. This does not prevent individual activities + from using or setting grades, it just disables the results being displayed to + students.

        diff --git a/lang/el/help/coursenewsitems.html b/lang/el/help/coursenewsitems.html index ea72aef5e20..21cc030181b 100644 --- a/lang/el/help/coursenewsitems.html +++ b/lang/el/help/coursenewsitems.html @@ -1,15 +1,15 @@ -

        ÍÝá ó÷åôéêÜ ìå ôá ìáèÞìáôá"

        +

        ÍÝá ó÷åôéêÜ ìå ôá ìáèÞìáôá"

        -

        Ìéá åéäéêÞ ïìÜäá óõæçôÞóåùí ðïõ ïíïìÜæåôáé "NÝá" åìöáíßæåôáé óôçí +

        Ìéá åéäéêÞ ïìÜäá óõæçôÞóåùí ðïõ ïíïìÜæåôáé "NÝá" åìöáíßæåôáé óôçí åâäïìáäéáßá êáé ôç èåìáôéêÞ ìïñöÞ ôùí ìáèçìÜôùí. Åßíáé Ýíá êáëü ìÝñïò ãéá áíÜñôçóç óçìåéþóåùí, ðñïêåéìÝíïõ íá ìðïñïýí íá ôéò äïõí üëïé ïé ìáèçôÝò. (¼ëïé ïé ìáèçôÝò íá åßíáé ìÝëç óå áõôÞ ôçí ïìÜäá óõæçôÞóåùí êáé ëáìâÜíïõí - üëåò ôéò áíáêïéíþóåéò ìå email).

        + üëåò ôéò áíáêïéíþóåéò ìå email). -

        ÁõôÞ ç ñýèìéóç êáèïñßæåé ðüóá ðñüóöáôá áíôéêåßìåíá +

        ÁõôÞ ç ñýèìéóç êáèïñßæåé ðüóá ðñüóöáôá áíôéêåßìåíá èá åìöáíßæïíôáé óôçí áñ÷éêÞ óåëßäá ôïõ ìáèÞìáôïò, - óôçí ðåñéï÷Þ íÝùí óôçí êÜôù äåîéÜ ðëåõñÜ.

        + óôçí ðåñéï÷Þ íÝùí óôçí êÜôù äåîéÜ ðëåõñÜ. -

        Åáí ñõèìóôåé óôï "0 íÝá áíôéêåßìåíá" ôüôå ç ðåñéï÷Þ íÝùí - äåí åìöáíßæåôáé êáèüëïõ.

        +

        Åáí ñõèìóôåé óôï "0 íÝá áíôéêåßìåíá" ôüôå ç ðåñéï÷Þ íÝùí + äåí åìöáíßæåôáé êáèüëïõ. diff --git a/lang/el/help/coursenumsections.html b/lang/el/help/coursenumsections.html index 691a77dd8af..33718cc3f2a 100644 --- a/lang/el/help/coursenumsections.html +++ b/lang/el/help/coursenumsections.html @@ -1,14 +1,14 @@ -

        Áñéèìüò ìáèçìÜôùí ãéá Åâäïìáäéáßá/ÈåìáôéêÞ ìïñöÞ

        +

        Áñéèìüò ìáèçìÜôùí ãéá Åâäïìáäéáßá/ÈåìáôéêÞ ìïñöÞ

        -

        ÁõôÞ ç ñýèìéóç ÷ñçóéìïðïéåßôáé ìüíï áðï ôçí "Åâäïìáäéáßá" êáé ôç - "ÈåìáôéêÞ" ìïñöÞ ìáèçìÜôùí.

        +

        ÁõôÞ ç ñýèìéóç ÷ñçóéìïðïéåßôáé ìüíï áðï ôçí "Åâäïìáäéáßá" êáé ôç + "ÈåìáôéêÞ" ìïñöÞ ìáèçìÜôùí. -

        Óôçí "Åâäïìáäéáßá" ìïñöÞ, êáèïñßæåé ôïí áñéèìü ôùí åâäïìÜäùí +

        Óôçí "Åâäïìáäéáßá" ìïñöÞ, êáèïñßæåé ôïí áñéèìü ôùí åâäïìÜäùí ðïõ èá ôñÝ÷åé ôï ìÜèçìá, áñ÷ßæïíôáò áðï ôçí çìåñïìçíßá - Ýíáñîçò ôùí ìáèçìÜôùí.

        + Ýíáñîçò ôùí ìáèçìÜôùí. -

        Óôç "ÈåìáôéêÞ" ìïñöÞ, êáèïñßæåé ôïí áñéèìü ôùí èåìÜôùí óôï - ìÜèçìá.

        +

        Óôç "ÈåìáôéêÞ" ìïñöÞ, êáèïñßæåé ôïí áñéèìü ôùí èåìÜôùí óôï + ìÜèçìá. -

        Êáé ôá äõï áðï áõôÜ ïñßæïõí ôïí áñéèìü "êïõôéþí" êÜôù óôç - ìÝóç ôçò óåëßäáò ìáèçìÜôùí.

        +

        Êáé ôá äõï áðï áõôÜ ïñßæïõí ôïí áñéèìü "êïõôéþí" êÜôù óôç + ìÝóç ôçò óåëßäáò ìáèçìÜôùí. diff --git a/lang/el/help/courserecent.html b/lang/el/help/courserecent.html index 91f1a76b41b..8628e3b633a 100644 --- a/lang/el/help/courserecent.html +++ b/lang/el/help/courserecent.html @@ -1,17 +1,16 @@ -

        Ðñüóöáôç äñáóôçñéüôçôá

        +

        Ðñüóöáôç äñáóôçñéüôçôá

        -

        Ôï Moodle ìðïñåß íá åìöáíßóåé "ðñüóöáôç äñáóôçñéüôçôá" óôçí áñ÷éêÞ óåëßäá ìáèçìÜôùí.

        +

        Ôï Moodle ìðïñåß íá åìöáíßóåé "ðñüóöáôç äñáóôçñéüôçôá" óôçí áñ÷éêÞ óåëßäá ìáèçìÜôùí. -

        Áõôü äåß÷íåé ïôéäÞðïôå Ý÷åé óõìâåß óôá ìáèÞìáôá áðï ôüôå ðïõ +

        Áõôü äåß÷íåé ïôéäÞðïôå Ý÷åé óõìâåß óôá ìáèÞìáôá áðï ôüôå ðïõ ï ÷ñÞóôçò Ýêáíå ãéá ôåëåõôáßá öïñÜ óýíäåóç ìå ôç óåëßäá ìáèçìÜôùí, -óõìðåñéëáìâáíïìÝíùí íÝùí ìçíõìÜôùí, íÝùí ÷ñçóôþí, åíäå÷ïìÝíùí åêäñïìþí ê.á.

        +óõìðåñéëáìâáíïìÝíùí íÝùí ìçíõìÜôùí, íÝùí ÷ñçóôþí, åíäå÷ïìÝíùí åêäñïìþí ê.á. -

        Óõíßóôáôå íá ìÝíåé áõôÞ ôçí åðéëïãÞ åíåñãïðïéçìÝíç êáôÜ ôç äéÜñêåéá ôùí +

        Óõíßóôáôå íá ìÝíåé áõôÞ ôçí åðéëïãÞ åíåñãïðïéçìÝíç êáôÜ ôç äéÜñêåéá ôùí ìáèçìÜôùí, êáèþò áõôÞ äßíåé Ýíáí áÝñá äñáóôçñéüôçôáò óôá ìáèÞìáôÜ óáò. Ãíùñßæïíôáò åðßóçò ôé êÜíåé ï êáèÝíáò, ìáò âïçèÜåé óôï íá äçìéïõñãçèåß ìéá áôìüóöáéñá -óõíåñãáóßáò óôçí áßèïõóá.

        +óõíåñãáóßáò óôçí áßèïõóá. -

        Ç åðéëïãÞ áõôÞ ìðïñåß íá åðéâñáäýíåé ôçí åìöÜíéóç ôçò óåëßäáò ìáèçìÜôùí +

        Ç åðéëïãÞ áõôÞ ìðïñåß íá åðéâñáäýíåé ôçí åìöÜíéóç ôçò óåëßäáò ìáèçìÜôùí ãéá õðåñâïëéêÜ ìåãÜëá ìáèÞìáôá êáé Ýôóé ßóùò åßíáé ðñïôéìüôåñï íá áðåíåñãïðïéåßôáé ãéá ôÝôïéá ìáèÞìáôá. -

        \ No newline at end of file diff --git a/lang/el/help/courseshortname.html b/lang/el/help/courseshortname.html index 7c490710346..a8be1042833 100644 --- a/lang/el/help/courseshortname.html +++ b/lang/el/help/courseshortname.html @@ -1,7 +1,7 @@ -

        Óýíôïìï üíïìá ìáèçìÜôùí

        +

        Óýíôïìï üíïìá ìáèçìÜôùí

        -

        Ðïëëïß ïñãáíéóìïß Ý÷ïõí Ýíáí ðéï óýíôïìï ôñüðï íá áíáöÝñïíôå óå Ýíá ìÜèçìá, üðùò ïé +

        Ðïëëïß ïñãáíéóìïß Ý÷ïõí Ýíáí ðéï óýíôïìï ôñüðï íá áíáöÝñïíôå óå Ýíá ìÜèçìá, üðùò ïé BP102 Þ COMMS. Áêüìá êáé áí äåí Ý÷åôå Þäç Ýíá ôÝôïéï üíïìá ãéá ôï ìÜèçìÜ óáò, äçìéïýñãçóôå Ýíá ôÝôïéï åäþ. Èá ÷ñçóéìïðïéçèåß óå áñêåôÝò ðåñéðôþóåéò üðïõ ôá - ðëÞñç ïíüìáôá äåí åßíáé êáôÜëëçëá (ãéá ðáñÜäåéãìá óôçí ðåñéï÷Þ èÝìáôïò óôï email).

        + ðëÞñç ïíüìáôá äåí åßíáé êáôÜëëçëá (ãéá ðáñÜäåéãìá óôçí ðåñéï÷Þ èÝìáôïò óôï email).

        diff --git a/lang/el/help/coursestartdate.html b/lang/el/help/coursestartdate.html index a84062f7361..17932981e7e 100644 --- a/lang/el/help/coursestartdate.html +++ b/lang/el/help/coursestartdate.html @@ -1,18 +1,18 @@ -

        Çìåñïìçíßá Ýíáñîçò ìáèçìÜôùí

        +

        Çìåñïìçíßá Ýíáñîçò ìáèçìÜôùí

        -

        Åäþ åßíáé ðïõ êáèïñßæåôå ç çìåñïìçíßá Ýíáñîçò ôùí - ìáèçìÜôùí (óôï äéêü óáò ÷ñïíïäéÜãñáììá).

        +

        Åäþ åßíáé ðïõ êáèïñßæåôå ç çìåñïìçíßá Ýíáñîçò ôùí + ìáèçìÜôùí (óôï äéêü óáò ÷ñïíïäéÜãñáììá). -

        Åáí ÷ñçóéìïðïéåßôå ôçí åâäïìáäéáßá ìïñöÞ ìáèçìÜôùí, èá åðéäñÜóåé +

        Åáí ÷ñçóéìïðïéåßôå ôçí åâäïìáäéáßá ìïñöÞ ìáèçìÜôùí, èá åðéäñÜóåé óôçí åìöÜíéóç ôùí åâäïìÜäùí. Ç ðñþôç åâäïìÜäá èá áñ÷ßóåé áðü ôçí - çìÝñá ðïõ ïñßæåôáé åäþ.

        + çìÝñá ðïõ ïñßæåôáé åäþ. -

        ÁõôÞ ç ñýèìéóç äå èá åðçñåÜóåé ôá ìáèÞìáôá ðïõ ÷ñçóéìïðïéïýí ôçí - êïéíùíéêÞ Þ èåìáôéêÞ ìïñöÞ.

        +

        ÁõôÞ ç ñýèìéóç äå èá åðçñåÜóåé ôá ìáèÞìáôá ðïõ ÷ñçóéìïðïéïýí ôçí + êïéíùíéêÞ Þ èåìáôéêÞ ìïñöÞ. -

        Ùóôüóï, ç ðñïâïëÞ ôùí áñ÷åßùí êáôáãñáöÞò èá åðçñåáóôåß, êáèþò èá ÷ñçóéìïðïéçèåß -áõôÞ ç çìåñïìçíßá ùò ç ìéêñüôåñç äõíáôÞ ðïõ ìðïñåß íá ðñïâëçèåß.

        +

        Ùóôüóï, ç ðñïâïëÞ ôùí áñ÷åßùí êáôáãñáöÞò èá åðçñåáóôåß, êáèþò èá ÷ñçóéìïðïéçèåß +áõôÞ ç çìåñïìçíßá ùò ç ìéêñüôåñç äõíáôÞ ðïõ ìðïñåß íá ðñïâëçèåß. -

        ÃåíéêÜ, åáí ôï ìÜèçìÜ óáò Ý÷åé ìéá ðñáãìáôéêÞ çìåñïìçíßá Ýíáñîçò +

        ÃåíéêÜ, åáí ôï ìÜèçìÜ óáò Ý÷åé ìéá ðñáãìáôéêÞ çìåñïìçíßá Ýíáñîçò ôüôå åßíáé ëïãéêü íá ïñéóôåß áõôÞ óáí çìåñïìçíßá Ýíáñîçò, áíåîÜñôçôá - áðü ôïí ôýðï ôùí ìáèçìÜôùí ðïõ ÷ñçóéìïðïéåßôå.

        + áðü ôïí ôýðï ôùí ìáèçìÜôùí ðïõ ÷ñçóéìïðïéåßôå. diff --git a/lang/el/help/enrolmentkey.html b/lang/el/help/enrolmentkey.html index 7d2504f2706..6099851ef56 100644 --- a/lang/el/help/enrolmentkey.html +++ b/lang/el/help/enrolmentkey.html @@ -1,22 +1,22 @@ -

        Êëåéäß åããñáöÞò ìáèÞìáôïò

        +

        Êëåéäß åããñáöÞò ìáèÞìáôïò

        -

        ¸íá êëåéäß åããñáöÞò ìáèçìÜôùí êñáôÜåé ôïõò áíåðéèýìçôïõò - áíèñþðïõò ìáêñéÜ áðï ôá ìáèÞìáôÜ óáò.

        +

        ¸íá êëåéäß åããñáöÞò ìáèçìÜôùí êñáôÜåé ôïõò áíåðéèýìçôïõò + áíèñþðïõò ìáêñéÜ áðï ôá ìáèÞìáôÜ óáò. -

        Åáí ÷ñçóéìïðïéÞóåôå êëåéäß, ôüôå êáèÝíáò ðïõ Ý÷åé äçìéïõñãÞóåé +

        Åáí ÷ñçóéìïðïéÞóåôå êëåéäß, ôüôå êáèÝíáò ðïõ Ý÷åé äçìéïõñãÞóåé Ýíá Moodle üíïìá ÷ñÞóôç óå áõôÞ ôç ôïðïèåóßá, èá åßíáé éêáíüò íá åããñáöåß - óôï ìáèÞìÜ óáò áðëÜ ðçãáßíïíôáò óå áõôü.

        + óôï ìáèÞìÜ óáò áðëÜ ðçãáßíïíôáò óå áõôü. -

        ÅÜí äå ÷ñçóéìïðïéÞóåôå êëåéäß åããñáöÞò, ïé ìáèçôÝò ðïõ èá ðñïóðáèÞóïõí íá ðÜíå +

        ÅÜí äå ÷ñçóéìïðïéÞóåôå êëåéäß åããñáöÞò, ïé ìáèçôÝò ðïõ èá ðñïóðáèÞóïõí íá ðÜíå óå áõôü ôï ìÜèçìá ôçí ÐÑÙÔÇ ÖÏÑÁ ÌÏÍÏ, èá ðñÝðåé íá óõìðëçñþóïõí ôï êëåéäß þóôå - íá ôïõò åðéôñáðåß ç ðñüóâáóç.

        + íá ôïõò åðéôñáðåß ç ðñüóâáóç. -

        Ç éäÝá åßíáé íá äéáäþóåôå ôïí êùäéêü áõôü óå óõãêåêñéìÝíïõò +

        Ç éäÝá åßíáé íá äéáäþóåôå ôïí êùäéêü áõôü óå óõãêåêñéìÝíïõò áíèñþðïõò ÷ñçóéìïðïéþíôáò Üëëá ìÝóá üðùò ðñïóùðéêü ìÞíõìá çëåêôñïíéêïý ôá÷õäñïìåßïõ, - ðáñáäïóéáêü ôá÷õäñïìåßï, ìÝóù ôçëåöþíïõ Þ áêüìá ðñüóùðï ìå ðñüóùðï óå ìßá áßèïõóá.

        + ðáñáäïóéáêü ôá÷õäñïìåßï, ìÝóù ôçëåöþíïõ Þ áêüìá ðñüóùðï ìå ðñüóùðï óå ìßá áßèïõóá. -

        ÅÜí ï êùäéêüò áõôüò "äéáññåýóåé" êáé Ý÷åôå åããñáöÝò áíåðéèýìçôùí áíèñþðùí, +

        ÅÜí ï êùäéêüò áõôüò "äéáññåýóåé" êáé Ý÷åôå åããñáöÝò áíåðéèýìçôùí áíèñþðùí, ìðïñåßôå íá ôïõò äéáãñÜøåôå (äåßôå ôç óåëßäá ìå ôï ðñùóïðéêü ôïõò ðñïößë) êáé íá áëëÜîåôå ôïí êùäéêü áõôü. ÊÜèå åãêåêñéìÝíïò ìáèçôÞò ðïõ Ý÷åé Þäç åããñáöåß - äå èá åðçñåáóôåß, áëëÜ ôá áíåðéèýìçôá Üôïìá äå èá ìðïñïýí íá Ý÷ïõí ðñüóâáóç.

        + äå èá åðçñåáóôåß, áëëÜ ôá áíåðéèýìçôá Üôïìá äå èá ìðïñïýí íá Ý÷ïõí ðñüóâáóç. diff --git a/lang/el/help/forum/allowdiscussions.html b/lang/el/help/forum/allowdiscussions.html index 081e025dde8..30a3f3a700d 100644 --- a/lang/el/help/forum/allowdiscussions.html +++ b/lang/el/help/forum/allowdiscussions.html @@ -1,21 +1,21 @@ -

        ÅðéôñÝðïíôáò íÝåò áíáêïéíþóåéò

        +

        ÅðéôñÝðïíôáò íÝåò áíáêïéíþóåéò

        -

        Ìå áõôÞ ôçí åðéëïãÞ ìðïñåßôå íá ðåñéïñßóåôå ôïõò ìáèçôÝò áðï ôï íá óôÝëíïõí +

        Ìå áõôÞ ôçí åðéëïãÞ ìðïñåßôå íá ðåñéïñßóåôå ôïõò ìáèçôÝò áðï ôï íá óôÝëíïõí íÝï ðåñéå÷üìåíï óå áõôÞ ôçí ïìÜäá óõæçôÞóåùí. -

        -

        Ãéá ôéò ðåñéóóüôåñåò ïìÜäåò óõæçôÞóåùí èá èÝëåôå íá áöÞíåôå ôïõò ìáèçôÝò ÷ùñßò ðåñéïñéóìïýò + +

        Ãéá ôéò ðåñéóóüôåñåò ïìÜäåò óõæçôÞóåùí èá èÝëåôå íá áöÞíåôå ôïõò ìáèçôÝò ÷ùñßò ðåñéïñéóìïýò êáé íá åðéëÝîåôå ôçí ðñþôç åðéëïãÞ ðïõ èá åðéôñÝðåé óå áõôïýò íá îåêéíÞóïõí íÝá èÝìáôá óõæÞôçóåùí, üðùò åðßóçò êáé íá óôÝëíïõí ôéò áðáíôÞóåéò ôïõò ìÝóá óå áõôÝò ôéò ïìÜäåò óõæçôÞóåùí. -

        -

        Ðáñüëáõôá, ìåñéêÝò öïñÝò èá èÝëåôå íá áðåíåñãïðïßçóåôå áõôÞ ôçí äõíáôüôçôá. + +

        Ðáñüëáõôá, ìåñéêÝò öïñÝò èá èÝëåôå íá áðåíåñãïðïßçóåôå áõôÞ ôçí äõíáôüôçôá. Ãéá ðáñÜäåéãìá, áõôü åßíáé ÷ñÞóéìï ãéá ôçí ïìÜäá óõæçôÞóåùí ôùí ÍÝùí üôáí èÝëåôå ìüíï ïé êáèçãçôÝò íá óôÝëíïõí êáéíïýñãéá èÝìáôá ðïõ èá åìöáíßæïíôáé óôçí êåíôñéêÞ óåëßäá ôïõ ìáèÞìáôïò. Óå áõôÞ ôçí ðåñßðôùóç ìðïñåßôå íá åðéëÝîåôå ôçí ôñßôç äõíáôüôçôá "êáìßá óõæÞôçóç, êáìßá áðÜíôçóç". -

        -

        ÌåñéêÝò öïñÝò ìðïñåß íá èÝëåôå íá åðéôñÝøåôå ìüíï óôïõò êáèçãçôÝò íá áñ÷ßóïõí ìéá êáéíïýñãéá óõæÞôçóç, + +

        ÌåñéêÝò öïñÝò ìðïñåß íá èÝëåôå íá åðéôñÝøåôå ìüíï óôïõò êáèçãçôÝò íá áñ÷ßóïõí ìéá êáéíïýñãéá óõæÞôçóç, áëëÜ íá åðéôñÝðåôå êáé óôïõò ìáèçôÝò íá áðáíôÜíå ìÝóá óå åêåßíåò ôéò ïìÜäåò óõæçôÞóåùí. (ðáñáäåßãìáôïò ÷Üñéí ìÝóá óôçí ïìÜäá óõæçôÞóåùí ôùí íÝùí óôçí áñ÷éêÞ óåëßäá) Óå áõôÞí ôçí ðåñßðôùóç ìðïñåßôå íá åðéëÝîåôå ôç äåýôåñç äõíáôüôçôá, "êáìßá óõæÞôçóç, áëëÜ åðéôÝðïíôáé áðáíôÞóåéò". -

        + diff --git a/lang/el/help/forum/attachment.html b/lang/el/help/forum/attachment.html index a29dea6bd63..9a03943ce2f 100644 --- a/lang/el/help/forum/attachment.html +++ b/lang/el/help/forum/attachment.html @@ -1,22 +1,21 @@ -

        Åðéóõíáðôüìåíá ãéá äçìïóßåõóç

        +

        Åðéóõíáðôüìåíá ãéá äçìïóßåõóç

        -

        Ìðïñåßôå ðñïáéñåôéêÜ íá åðéóõíÜøåôå ÅÍÁ áñ÷åßï áðü ôïí õðïëïãéóôÞ óáò +

        Ìðïñåßôå ðñïáéñåôéêÜ íá åðéóõíÜøåôå ÅÍÁ áñ÷åßï áðü ôïí õðïëïãéóôÞ óáò óå ïðïéáäÞðïôå äçìïóßåõóç óôéò ïìÜäåò óõæçôÞóåùí. Áõôü ôï áñ÷åßï Ýñ÷åôáé óôïí server êáé áðïèçêåýåôáé ìå ôï ìÞíõìÜ óáò. -

        -

        Áõôü åßíáé ÷ñÞóéìï, üôáí ãéá ðáñÜäåéãìá èÝëåôå íá ìïéñÜóåôå ìéá åéêüíá, + +

        Áõôü åßíáé ÷ñÞóéìï, üôáí ãéá ðáñÜäåéãìá èÝëåôå íá ìïéñÜóåôå ìéá åéêüíá, Þ Ýíá Ýããñáöï Word. -

        -

        Áõôü ôï áñ÷åßï ìðïñåß íá åßíáé ïðïéïõäÞðïôå ôýðïõ, óõíßóôáôáé üìùò + +

        Áõôü ôï áñ÷åßï ìðïñåß íá åßíáé ïðïéïõäÞðïôå ôýðïõ, óõíßóôáôáé üìùò ôï áñ÷åßï áõôü íá ïíïìáóôåß ÷ñçóéìïðïéþíôáò ôéò êáèïñéóìÝíåò äéêôõáêÝò êáôáëÞîåéò ôñéþí ãñáììÜôùí üðùò .doc ãéá Ýããñáöá ôïõ Word, .jpg Þ .png ãéá ôéò åéêüíåò, êáé Üëëá. Áõôü èá Ýêáíå åõêïëüôåñï ãéá ôïõò Üëëïõò íá êáôåâÜóïõí êáé íá äïýí ôá åðéóõíáðôüìåíá áõôÜ óôïí õðïëïãéóôÞ ôïõò. -

        -

        ÅÜí áëëÜîåôå îáíÜ Ýíá ìÞíõìá êáé åðéóõíÜøåôå Ýíá íåï áñ÷åßï, ôüôå êÜèå + +

        ÅÜí áëëÜîåôå îáíÜ Ýíá ìÞíõìá êáé åðéóõíÜøåôå Ýíá íåï áñ÷åßï, ôüôå êÜèå ðñïçãïýìåíï áñ÷åßï ãéá áõôÞ ôçí äçìïóéÝõóç èá áíôéêáôáóôáèåß. -

        ÅÜí áëëÜîåôå îáíÜ Ýíá ìÞíõìá ìå Ýíá åðéóõíáðôüìåíï êáé áöÞóåôå êåíü áõôü ôï ÷þñï, +

        ÅÜí áëëÜîåôå îáíÜ Ýíá ìÞíõìá ìå Ýíá åðéóõíáðôüìåíï êáé áöÞóåôå êåíü áõôü ôï ÷þñï, ôüôå ôï áñ÷éêü åðéóõíáðôüìåíï èá äéáôçñçèåß. -

        \ No newline at end of file diff --git a/lang/el/help/forum/forumtype.html b/lang/el/help/forum/forumtype.html index d6747e601b5..261142712a9 100644 --- a/lang/el/help/forum/forumtype.html +++ b/lang/el/help/forum/forumtype.html @@ -1,18 +1,18 @@ -

        Ôýðïé ôùí ïìÜäùí óõæçôÞóåùí

        +

        Ôýðïé ôùí ïìÜäùí óõæçôÞóåùí

        -

        ÕðÜñ÷ïõí áñêåôïß äéáöïñåôéêïß ôýðïé ïìÜäùí óõæçôÞóåùí ãéá íá åðéëÝîåôå: -

        -

        Ìéá áðëÞ óõæÞôçóç - åßíáé áðëÜ Ýíá ìüíï èÝìá, üëï óå ìßá óåëßäá. +

        ÕðÜñ÷ïõí áñêåôïß äéáöïñåôéêïß ôýðïé ïìÜäùí óõæçôÞóåùí ãéá íá åðéëÝîåôå: + +

        Ìéá áðëÞ óõæÞôçóç - åßíáé áðëÜ Ýíá ìüíï èÝìá, üëï óå ìßá óåëßäá. Ï ôýðïò áõôüò åßíáé ÷ñÞóéìïò ãéá óýíôïìåò óõæçôÞóåéò ðïõ åóôéÜæïíôáé óå Ýíá èÝìá. -

        -

        ÂáóéêÞ ïìÜäá óõæçôÞóåùí ãéá ãåíéêÞ ÷ñÞóç - åßíáé ìéá áíïéêôÞ ïìÜäá óõæçôÞóåùí üðïõ ïðïéïóäÞðïôå ìðïñåß + +

        ÂáóéêÞ ïìÜäá óõæçôÞóåùí ãéá ãåíéêÞ ÷ñÞóç - åßíáé ìéá áíïéêôÞ ïìÜäá óõæçôÞóåùí üðïõ ïðïéïóäÞðïôå ìðïñåß íá áñ÷ßóåé Ýíá íÝï èÝìá ïðïéáäÞðïôå óôéãìÞ. ÁõôÞ åßíáé ç êáëýôåñç ïìÜäá óõæÞôçóçò ãåíéêÞò ÷ñÞóçò. -

        -

        ÊÜèå ðñüóùðï äçìïóéåýåé ìéá óõæÞôçóç - êÜèå ðñüóùðï ìðïñåß íá äçìïóéåýóåé áêñéâþò Ýíá + +

        ÊÜèå ðñüóùðï äçìïóéåýåé ìéá óõæÞôçóç - êÜèå ðñüóùðï ìðïñåß íá äçìïóéåýóåé áêñéâþò Ýíá íÝï èÝìá óõæÞôçóçò (êáèÝíáò ìðïñåß íá áðáíôÞóåé óå áõôü åí ôïýôïéò). Áõôü åßíáé ÷ñÞóéìï üôáí èÝëåôå ï êÜèå ìáèçôÞò íá áñ÷ßóåé ìéá óõæÞôçóç ãéá, áò ðïýìå, ôéò óêÝøåéò ôïõ ó÷åôéêÜ ìå ôï èÝìá ôçò åâäïìÜäáò, êáé êáèÝíáò íá áðïêñßíåôáé óå áõôÝò. -

        -

        (Ðåñéóüôåñç áíÜðôõîç èá Ýñèåé óå ìåëëïíôéêÝò åêäüóåéò ôïõ Moodle) -

        + +

        (Ðåñéóüôåñç áíÜðôõîç èá Ýñèåé óå ìåëëïíôéêÝò åêäüóåéò ôïõ Moodle) + diff --git a/lang/el/help/forum/index.html b/lang/el/help/forum/index.html index ad502ab4043..55a8f2b8ba9 100755 --- a/lang/el/help/forum/index.html +++ b/lang/el/help/forum/index.html @@ -1 +1,9 @@ -

        ÏìÜäåò ÓõæçôÞóåùí

        \ No newline at end of file +

        ÏìÜäåò ÓõæçôÞóåùí

        + diff --git a/lang/el/help/forum/mods.html b/lang/el/help/forum/mods.html index d1285369a49..109a179a3cb 100755 --- a/lang/el/help/forum/mods.html +++ b/lang/el/help/forum/mods.html @@ -1 +1,11 @@ -

         ÏìÜäåò óõæçôÞóåùí

          ÁõôÞ ç äñáóôçñéüôçôá Ýéíáé ç ðéï óçìáíôéêÞ - åäþ óõìâáßíïõí ïé ðåñéóóüôåñåò óõæçôÞóåéò. Ïé ïìÜäåò óõæçôÞóåùí ìðïñïýí íá äïìçèïýí ìå äéÜöïñïõò ôñüðïõò êáé íá óõìðåñéëÜâïõí üìïéåò åêôéìÞóåéò ãéá êÜèå ìÞíõìá. Ôá ìçíýìáôá ìðïñïýí íá åìöáíéóôïýí ìå ðïéêéëßá ìïñöþí êáé ìðïñïýí íá ðåñéÝ÷ïõí óõíçììÝíá. Ìå ôç óõíäñïìÞ óå ìéá ïìÜäá óõæçôÞóåùí, ïé óõììåôÝ÷ïíôåò ëáìâÜíïõí áíôßãñáöá êÜèå íÝïõ ìçíýìáôïò óôï email ôïõò. ¸íáò êáèçãçôÞò ìðïñåß íá åðéâÜëëåé ôç óõíäñïìÞ óå üëïõò áí ôï èÝëåé.

        \ No newline at end of file +

         ÏìÜäåò + óõæçôÞóåùí

        +
          +

          ÁõôÞ ç äñáóôçñéüôçôá Ýéíáé ç ðéï óçìáíôéêÞ - åäþ óõìâáßíïõí ïé ðåñéóóüôåñåò + óõæçôÞóåéò. Ïé ïìÜäåò óõæçôÞóåùí ìðïñïýí íá äïìçèïýí ìå äéÜöïñïõò ôñüðïõò + êáé íá óõìðåñéëÜâïõí üìïéåò åêôéìÞóåéò ãéá êÜèå ìÞíõìá. Ôá ìçíýìáôá ìðïñïýí + íá åìöáíéóôïýí ìå ðïéêéëßá ìïñöþí êáé ìðïñïýí íá ðåñéÝ÷ïõí óõíçììÝíá. Ìå ôç + óõíäñïìÞ óå ìéá ïìÜäá óõæçôÞóåùí, ïé óõììåôÝ÷ïíôåò ëáìâÜíïõí áíôßãñáöá êÜèå + íÝïõ ìçíýìáôïò óôï email ôïõò. ¸íáò êáèçãçôÞò ìðïñåß íá åðéâÜëëåé ôç óõíäñïìÞ + óå üëïõò áí ôï èÝëåé. +

        diff --git a/lang/el/help/forum/ratings.html b/lang/el/help/forum/ratings.html index c7116cae82c..82f4de592d0 100644 --- a/lang/el/help/forum/ratings.html +++ b/lang/el/help/forum/ratings.html @@ -16,7 +16,7 @@ b) Ôá áðïôåëÝóìáôá äåí ÷ñçóéìïðïéïýíôáé ðñïò ôçí áîéïëüãçóç óðïõäáóôþí áðü êáìéÜ Üðïøç, âïçèïýí ìüíï óôçí âåëôßùóç ôçò åðéêïéíùíßáò êáé ôçò ìÜèçóçò. -
        +
        Óå ðåñßðôùóç ðïõ åíäéáöÝñåóôå, åäþ åßíáé ìåñéêÝò áíáöïñÝò óå êåßìåíá óõããñáöÝùí áðü ôïõò ïðïßïõò áñ÷éêÜ áíáðôý÷èçêáí áõôÝò ïé éäÝåò:
        • Belenky, M.F., Clinchy, B.M., Goldberger, N.R., & Tarule, J.M. (1986). @@ -36,6 +36,6 @@ b) Thinking and Learning Survey (ATTLS). Sex Roles, 40(9/10), 745-766.
        • 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. -
          +
        diff --git a/lang/el/help/forum/subscription.html b/lang/el/help/forum/subscription.html index 75d3053c61e..95470f8f979 100644 --- a/lang/el/help/forum/subscription.html +++ b/lang/el/help/forum/subscription.html @@ -1,20 +1,20 @@ -

        ÅããñáöÞ óå ìéá ïìÜäá óõæçôÞóåùí

        +

        ÅããñáöÞ óå ìéá ïìÜäá óõæçôÞóåùí

        -

        ¼ôáí Ýíá ðñüóùðï åããñÜöåôå óå ìéá ïìÜäá óõæçôÞóåùí óçìáßíåé üôé èá ôïõ +

        ¼ôáí Ýíá ðñüóùðï åããñÜöåôå óå ìéá ïìÜäá óõæçôÞóåùí óçìáßíåé üôé èá ôïõ óôÝëíïíôáé áíôßãñáöá êÜèå ìçíýìáôïò ðïõ äçìïóéåýïíôáé óôçí ïìÜäá óõæçôÞóåùí ìå email (ôá ìçíýìáôá óôÝëíïíôáé ðåñßðïõ óå 30 ëåðôÜ áöüôïõ ôï ìÞíõìá ãñÜöôçêå áñ÷éêÜ). -

        -

        Ïé ÷ñÞóôåò ìðïñïýí óõíÞèùò íá åðéëÝîïõí åÜí èÝëïõí Þ ü÷é íá åããñÜöïíôáé + +

        Ïé ÷ñÞóôåò ìðïñïýí óõíÞèùò íá åðéëÝîïõí åÜí èÝëïõí Þ ü÷é íá åããñÜöïíôáé óå êÜèå ïìÜäá óõæçôÞóåùí. -

        -

        Ðáñüëáõôá, åÜí Ýíáò êáèçãçôÞò õðï÷ñåþóåé íá åããñáöïýí õðï÷ñåùôéêÜ óå ìéá ïìÜäá óõæÞôçóçò + +

        Ðáñüëáõôá, åÜí Ýíáò êáèçãçôÞò õðï÷ñåþóåé íá åããñáöïýí õðï÷ñåùôéêÜ óå ìéá ïìÜäá óõæÞôçóçò ôüôå áõôÞ ç åðéëïãÞ áðïìáêñýíåôáé êáé êáèÝíáò óôçí ôÜîç èá ëáìâÜíåé áíôßãñáöá ôùí email. -

        -

        Áõôü åßíáé ÷ñÞóéìï, åéäéêÜ óôéò ïìÜäåò óõæçôÞóåùí ôùí ÍÝùí êáé óôéò ïìÜäåò óõæçôÞóåùí + +

        Áõôü åßíáé ÷ñÞóéìï, åéäéêÜ óôéò ïìÜäåò óõæçôÞóåùí ôùí ÍÝùí êáé óôéò ïìÜäåò óõæçôÞóåùí ðñïò ôçí áñ÷Þ ôçò óåéñÜò ôùí ìáèçìÜôùí (ðñéí êÜðïéïò âñåß üôé ìðïñåß íá åããñáöôåß ìåìïíïìÝíá óå áõôá ôá emails). -

        + diff --git a/lang/el/help/guestaccess.html b/lang/el/help/guestaccess.html index 55951bb1cc3..e16b1468dc3 100644 --- a/lang/el/help/guestaccess.html +++ b/lang/el/help/guestaccess.html @@ -1,23 +1,23 @@ -

        Ðñüóâáóç åðéóêåðôþí

        +

        Ðñüóâáóç åðéóêåðôþí

        -

        ¸÷åôå ôçí äõíáôüôçôá íá åðéôÝøåôå ðñüóâáóç óå ïñéóìÝíïõò åðéóêÝðôåò - óôá ìÜèçìáôÜ óáò.

        +

        ¸÷åôå ôçí äõíáôüôçôá íá åðéôÝøåôå ðñüóâáóç óå ïñéóìÝíïõò åðéóêÝðôåò + óôá ìÜèçìáôÜ óáò. -

        Ïé Üíèñùðïé áõôïß ìðïñïýí íá Ý÷ïõí ðñüóâáóç óáí åðéóêÝðôåò ÷ñçóéìïðïéþíôáò - ôï óýíäåóìï "Ðñüóâáóç óáí åðéóêÝðôçò" óôçí ïèüíç ðñüóâáóçò.

        +

        Ïé Üíèñùðïé áõôïß ìðïñïýí íá Ý÷ïõí ðñüóâáóç óáí åðéóêÝðôåò ÷ñçóéìïðïéþíôáò + ôï óýíäåóìï "Ðñüóâáóç óáí åðéóêÝðôçò" óôçí ïèüíç ðñüóâáóçò. -

        Ïé åðéóêÝðôåò Ý÷ïõí ÐÁÍÔÁ ðñüóâáóç áíÜãíùóçò ìüíï - ðïõ óçìáßíåé ïôé äåí +

        Ïé åðéóêÝðôåò Ý÷ïõí ÐÁÍÔÁ ðñüóâáóç áíÜãíùóçò ìüíï - ðïõ óçìáßíåé ïôé äåí ìðïñïýí íá áöÞóïõí êáìßá áíáêïßíùóç Þ íá åðçñåÜóïõí ôï ìÜèçìá ãéá ôïõò êáíïíéêïõò - ìáèçôÝò ìå êáíÝíá ôñüðï.

        + ìáèçôÝò ìå êáíÝíá ôñüðï. -

        Áõôü ìðïñåß íá åßíáé ÷ñÞóéìï üôáí èÝëåôå íá áöÞóåôå Ýíá óõíÜäåëöï íá +

        Áõôü ìðïñåß íá åßíáé ÷ñÞóéìï üôáí èÝëåôå íá áöÞóåôå Ýíá óõíÜäåëöï íá äåß ôç äïõëåéÜ óáò, Þ íá åðéôñÝøåôå óå ìáèçôÝò íá äïýí Ýíá ìÜèçìá ðñßí - áðïöáóßóïõí íá åããñáöïýí.

        + áðïöáóßóïõí íá åããñáöïýí. -

        Íá óçìåéþóïõìå ïôé Ý÷åôå íá åðéëÝîåôå áíÜìåóá óå äõï ôýðïõò ðñüóâáóçò åðéóêåðôþí: +

        Íá óçìåéþóïõìå ïôé Ý÷åôå íá åðéëÝîåôå áíÜìåóá óå äõï ôýðïõò ðñüóâáóçò åðéóêåðôþí: ìå êëåéäß åãñáöÞò Þ ÷ùñßò. ÅÜí åðéëÝîåôå ðñüóâáóç óå åðéóêÝðôåò ðïõ Ý÷ïõí êëåéäß, ôüôå áõôïß ðñÝðåé íá ðáñÝ÷ïõí ôï êáôÜëëçëï êëåéäß åããñáöÞò ÊÁÈÅ ÖÏÑÁ ðïõ èá åðéèõìïýí íá ìðïýí óôá ìáèÞìáôÜ óáò (áíôßèåôá ìå ôïõò ìáèçôÝò ïé ïðïßïé ÷ñåéÜæåôáé íá ôï êÜíïõí áõôü ìüíï ìßá öïñÜ). Áõôü óáò åðéôñÝðåé íá ðåñéïñßóåôå ôïí áñéèìü ôùí åðéóêåðôþí. ÅÜí åðéëÝîåôå ôçí ðñüóâáóç ôùí åðéóêåðôþí ÷ùñßò êëåéäß, ôüôå êáèÝíáò ìðïñåß êáôåõèåßáí íá - ìðåß óôá ìáèÞìáôÜ óáò óáò åðéóêÝðôçò.

        + ìðåß óôá ìáèÞìáôÜ óáò óáò åðéóêÝðôçò. diff --git a/lang/el/help/html.html b/lang/el/help/html.html index 50c0cbff5dc..52801f698ee 100644 --- a/lang/el/help/html.html +++ b/lang/el/help/html.html @@ -1,11 +1,11 @@ -

        ÂïÞèåéá ãéá ôç óõããñáöÞ HTML

        +

        ÂïÞèåéá ãéá ôç óõããñáöÞ HTML

        -

        ¼ôáí ãñÜöåôå HTML óôï Moodle, åßóôå åëåýèåñïò íá ÷ñçóéìïðïéÞóåôå ïðïéïäÞðïôå HTML tag èÝëåôå, ðñïêåéìÝíïõ íá ðáñá÷èåß ôï åðéèõìçôü áðïôÝëåóìá.

        +

        ¼ôáí ãñÜöåôå HTML óôï Moodle, åßóôå åëåýèåñïò íá ÷ñçóéìïðïéÞóåôå ïðïéïäÞðïôå HTML tag èÝëåôå, ðñïêåéìÝíïõ íá ðáñá÷èåß ôï åðéèõìçôü áðïôÝëåóìá. -

        Ï êþäéêáò èá ôõðþíåôáé êáíïíéêÜ óôç óåëßäá ìÝóá óå Ýíá êåëß ðßíáêá, - Ýôóé:

        -
          -
        • Äåí õðÜñ÷åé ëüãïò íá ÷ñçóéìïðïéÞóåéò ôá tags <HEAD> Þ <BODY>.
        • -
        • Íá ðñïóÝ÷åéò ãéá ôá tag ðïõ äåí ôáéñéÜæïõí </TABLE> tags ãéáôß ìðïñïýí íá êáôáóôñÝøïõí ôçí ðñïâïëÞ.
        • -
        +

        Ï êþäéêáò èá ôõðþíåôáé êáíïíéêÜ óôç óåëßäá ìÝóá óå Ýíá êåëß ðßíáêá, + Ýôóé: +

          +
        • Äåí õðÜñ÷åé ëüãïò íá ÷ñçóéìïðïéÞóåéò ôá tags <HEAD> Þ <BODY>. +
        • Íá ðñïóÝ÷åéò ãéá ôá tag ðïõ äåí ôáéñéÜæïõí </TABLE> tags ãéáôß ìðïñïýí íá êáôáóôñÝøïõí ôçí ðñïâïëÞ. +
        diff --git a/lang/el/help/index.html b/lang/el/help/index.html index 767b560eb2e..111761160a7 100755 --- a/lang/el/help/index.html +++ b/lang/el/help/index.html @@ -1 +1,48 @@ -

        Ðåñéå÷üìåíá ôùí áñ÷åßùí ÂïÞèåéáò

        ÃåíéêÜ

        Äéá÷åßñéóç

        Ñýèìéóç ÌáèçìÜôùí

        ÁíÜãíùóç êáé ÃñáöÞ

        \ No newline at end of file + +

        Ðåñéå÷üìåíá ôùí áñ÷åßùí ÂïÞèåéáò

        + +

        ÃåíéêÜ

        + + +

        Äéá÷åßñéóç

        + + +

        Ñýèìéóç ÌáèçìÜôùí

        + + +

        ÁíÜãíùóç êáé ÃñáöÞ

        + diff --git a/lang/el/help/journal/mods.html b/lang/el/help/journal/mods.html index 3940e626396..6e71e748146 100755 --- a/lang/el/help/journal/mods.html +++ b/lang/el/help/journal/mods.html @@ -1 +1,11 @@ -

         ÊáôáãñáöÞ Äñáóôçñéüôçôáò

          ÁõôÞ ç åíüôçôá åßíáé ìéá ðïëý óçìáíôéêÞ êáôïðôñéêÞ äñáóôçñéüôçôá. Ï êáèçãçôÞò æçôÜ áðü ôï ìáèçôÞ íá óêåöôåß ðÜíù ó' Ýíá óõãêåêñéìÝíï èÝìá êáé íá åðåîåñãáóôåß êáé íá ôåëåéïðïéÞóåé ôçí áðÜíôçóÞ ôïõ ìå ôïí êáéñü. ÁõôÞ ç áðÜíôçóç åßíáé áðüññçôç êáé ìüíï ï êáèçãçôÞò ìðïñåß íá ôçí äåé, ï ïðïßïò ìðïñåß íá äþóåé áðáíôÞóåéò êáé íá âáèìïëïãÞóåé êÜèå äñáóôçñéüôçôá. ÓõíÞèùò åßíáé êáëü íá ãßíåôáé ìéá ôÝôïéá äñáóôçñéüôçôá êÜèå åâäïìÜäá.

        \ No newline at end of file +

         ÊáôáãñáöÞ + Äñáóôçñéüôçôáò

        +
          +

          ÁõôÞ ç åíüôçôá åßíáé ìéá ðïëý óçìáíôéêÞ êáôïðôñéêÞ äñáóôçñéüôçôá. Ï êáèçãçôÞò + æçôÜ áðü ôï ìáèçôÞ íá óêåöôåß ðÜíù ó' Ýíá óõãêåêñéìÝíï èÝìá êáé íá åðåîåñãáóôåß + êáé íá ôåëåéïðïéÞóåé ôçí áðÜíôçóÞ ôïõ ìå ôïí êáéñü. ÁõôÞ ç áðÜíôçóç åßíáé + áðüññçôç êáé ìüíï ï êáèçãçôÞò ìðïñåß íá ôçí äåé, ï ïðïßïò ìðïñåß íá äþóåé + áðáíôÞóåéò êáé íá âáèìïëïãÞóåé êÜèå äñáóôçñéüôçôá. ÓõíÞèùò åßíáé êáëü íá ãßíåôáé + ìéá ôÝôïéá äñáóôçñéüôçôá êÜèå åâäïìÜäá.

          +
        + diff --git a/lang/el/help/langedit.html b/lang/el/help/langedit.html index 3cd93cae415..e32494d07f8 100644 --- a/lang/el/help/langedit.html +++ b/lang/el/help/langedit.html @@ -1,13 +1,13 @@ -

        Åðåîåñãáóßá ãëþóóáò

        +

        Åðåîåñãáóßá ãëþóóáò

        -

        Ãéá íá åðåîåñãáóôåßôå ãëþóóåò óå áõôÞ ôç óåëßäá ôá äéêáéþìáôá ôùí áñ÷åßùí èá ðñÝðåé íá - åðéôñÝðïõí óôç äéåñãáóßá ôïõ åîõðçñåôçôÞ íá ôá ìåôáôñÝøåé.

        +

        Ãéá íá åðåîåñãáóôåßôå ãëþóóåò óå áõôÞ ôç óåëßäá ôá äéêáéþìáôá ôùí áñ÷åßùí èá ðñÝðåé íá + åðéôñÝðïõí óôç äéåñãáóßá ôïõ åîõðçñåôçôÞ íá ôá ìåôáôñÝøåé. -

        ÌÝóá óå ìåñéêïýò áðü ôïõò ÷áñáêôÞñåò èá áíôéëçöèåßôå ôïõò óõìâïëéóìïýò $a êáé - $a->êÜôé.

        +

        ÌÝóá óå ìåñéêïýò áðü ôïõò ÷áñáêôÞñåò èá áíôéëçöèåßôå ôïõò óõìâïëéóìïýò $a êáé + $a->êÜôé. -

        ÁõôÜ áíáðáñáóôïýí ìåôáâëçôÝò ïé ïðïßåò èá áíôéêôáóôáèïýí áðü ïíüìáôá Þ Üëëåò ëÝîåéò - ìÝóá óôï Moodle.

        +

        ÁõôÜ áíáðáñáóôïýí ìåôáâëçôÝò ïé ïðïßåò èá áíôéêôáóôáèïýí áðü ïíüìáôá Þ Üëëåò ëÝîåéò + ìÝóá óôï Moodle. -

        ¼ôáí õðÜñ÷åé ìüíï ìéá ìåôáâëçôÞ, ÷ñçóéìïðïéåßôáé ï ôýðïò $a. ¼ôáí õðÜñ÷ïõí äýï Þ - ðåñéóóüôåñåò ìåôáâëçôÝò, ôüôå êÜèå ìéá Ý÷åé Ýíá üíïìá.

        +

        ¼ôáí õðÜñ÷åé ìüíï ìéá ìåôáâëçôÞ, ÷ñçóéìïðïéåßôáé ï ôýðïò $a. ¼ôáí õðÜñ÷ïõí äýï Þ + ðåñéóóüôåñåò ìåôáâëçôÝò, ôüôå êÜèå ìéá Ý÷åé Ýíá üíïìá. diff --git a/lang/el/help/mods.html b/lang/el/help/mods.html index 62e3f810e1c..e2a84fa9167 100644 --- a/lang/el/help/mods.html +++ b/lang/el/help/mods.html @@ -1,3 +1,57 @@ -

        ÌïíÜäåò Äñáóôçñéüôçôáò

        +

        ÌïíÜäåò Äñáóôçñéüôçôáò

        + +

        Ôï Moodle ðåñéÝ÷åé ìéá ìåãÜëç êëßìáêá ìïíÜäùí äñáóôçñéüôçôáò ïé ïðïßåò ìðïñïýí íá ÷ñçóéìïðïéçèïýí óôç óôáäéáêÞ áíÜðôõîç êÜèå ôýðïõ ìáèÞìáôïò.

        + +

         ÏìÜäåò óõæçôÞóåùí

        +
          +

          ÁõôÞ ç äñáóôçñéüôçôá ìðïñåß íá åßíáé êáé ç ðéï óçìáíôéêÞ - åäþ ðñáãìáôïðïéïýíôáé ïé + ðåñéóóüôåñåò óõæçôÞóåò. + Ïé ïìÜäåò óõæçôÞóåùí ìðïñïýí íá äïìçèïýí ìå äéáöïñåôéêïýò ôñüðïõò êáé óõìðåñéëáìâÜíïõí êáé âáèìïëüãçóç êÜèå ìÝëïõò ãéá êÜèå èÝìá óõæÞôçóçò. + Ôá èÝìáôá ìðïñïýí íá ðñïâëçèïýí ìå ðïëëÝò äéáöïñåôéêÝò ìïñöÝò ïé ïðïßåò ìðïñïýí íá óõìðåñéëáìâÜíïõí óõíçììÝíá. + Ìå ôçí åããñáöÞ óå ìéá ïìÜäá óõæçôÞóåùí, ïé óõììåôÝ÷ïíôåò èá ëÜâïõí áíôßãñáöá ãéá êÜèå íÝá áíáêïßíùóç ìÝóù çëåêôñïíéêïý ôá÷õäñïìåßïõ. + ¸íáò åêðáéäåõôÞò ìðïñåß íá åðéâÜëåé ôçí åããñáöÞ óå üëïõò. +

        + +

         Çìåñïëüãéá

        +
          +

          ÁõôÞ ç ìïíÜäá åßíáé ìéá ðïëý óçìáíôéêÞ äñáóôçñéüôçôá. + Ï åêðáéäåõôÞò æçôÜåé áðï ôï ìáèçôÞ íá åêöñáóôåß óå Ýíá óõãêåêñéìÝíï èÝìá êáé ï ìáèçôÞò ìðïñåß íá åðåîåñãáóôåß êáé íá âåëôéþóåé ôçí áðÜíôçóÞ ôïõ ìå ôï ÷ñüíï. + ÁõôÞ ç áðÜíôçóç åßíáé ðñïóùðéêÞ êáé ìðïñåß íá ôç äåß ìüíï ï åêðáéäåõôÞò, ï ïðïßïò ìðïñåß íá ðñïóöÝñåé õðïóôÞñéîç êáé íá âáèìïëïãÞóåé êÜèå åããñáöÞ óôï çìåñïëüãéï. + Åßíáé óõíÞèùò êáëÞ éäÝá íá Ý÷åôå ìéá äñáóôçñéüôçôá Çìåñïëïãßïõ êÜèå åâäïìÜäá.

          +
        + +

         Ðüñïé

        +
          +

          Ïé ðüñïé åßíáé ðåñéå÷üìåíï: ðëçñïöïñßá ôçí ïðïßá ï åêðáéäåõôÞò èÝëåé íá åéóÜãåé óôï ìÜèçìá. + ÁõôÞ ìðïñåß íá åßíáé ðñïåôïéìáóìÝíá áñ÷åßá ðïõ öïñôþíïíôáé óôï ìÜèçìá, óåëßäåò ðïõ Ý÷ïõí ãñáöôåß ìå ôï Moodle Þ åîùôåñéêÝò óåëßäåò ðïõ êáôáóêåõÜóôçêáí þóôå íá åßíáé ìÝñïò ôïõ ìáèÞìáôïò.

          +
        + +

         Åñãáóßåò

        +
          +

          Ïé åñãáóßåò åðéôñÝðïõí óôïí åêðáéäåõôÞ íá êáèïñßóåé ìéá äñáóôçñéüôçôá ç ïðïßá èá áðáéôåß áðü ôïõò ìáèçôÝò íá ðñïåôïéìÜóïõí øçöéáêü ðåñéå÷üìåíï (ïðïéáóäÞðïôå ìïñöÞò) êáé íá ôï õðïâÜëïõí öïñôþíïíôÜò ôï óôïí åîõðçñåôçôÞ. + ÓõíÞèåéò åñãáóßåò åßíáé åêèÝóåéò, áíáöïñÝò, áóêÞóåéò êôë. + ÁõôÞ ç ìïíÜäá Ý÷åé êáé äõíáôüôçôåò âáèìïëüãçóçò.

          +
        + +

         Êïõßæ

        +
          +

          ÁõôÞ ç ìïíÜäá åðéôñÝðåé óôïí åêðáéäåõôÞ íá ó÷åäéÜóåé êïõßæ, ôá ïðïßá áðïôåëïýíôáé áðü åñùôÞóåéò ðïëëáðëþí áðáíôÞóåùí, åñùôÞóåéò íáé-ü÷é êáé åñùôÞóåéò óýíôïìùí áðáíôÞóåùí. + ÁõôÝò ïé åñùôÞóåéò ôçñïýíôáé óå ìéá êáôçãïñéïðïéçìÝíç âÜóç äåäïìÝíùí êáé ìðïñïýí íá ÷ñçóéìïðïéçèïýí îáíÜ. + Ôá êïõßæ ìðïñïõí íá åðéôñÝðïõí ðïëëáðëÝò ðñïóðÜèåéåò. + ÊÜèå ðñïóðÜèåéá óçìåéþíåôáé áõôüìáôá, êáé ï åêðáéäåõôÞò ìðïñåß íá åðéëÝîåé áí èÝëåé íá ðáñÝ÷åé õðïóôÞñéîç Þ íá áðïêáëýøåé ôéò óùóôÝò áðáíôÞóåéò. + ÁõôÞ ç ìïíÜäá Ý÷åé êáé äõíáôüôçôåò âáèìïëüãçóçò.

          +
        + +

         ÅðéëïãÝò

        +
          +

          Ç äñáóôçñéüôçôá áõôÞ åßíáé ðïëý áðëÞ - ï åêðáéäåõôÞò õðïâÜëåé ìéá åñþôçóç êáé ïñßæåé Ýíá óýíïëï ðïëëáðëþí áðáíôÞóåùí. + Ìðïñåß íá åßíáé ÷ñÞóéìï óáí ãñÞãïñç äçìïóêüðçóç þóôå áí ðñïêáëÝóåé ôïí ðñïâëçìáôéóìü ðÜíù óå Ýíá èÝìá Þ íá äþóåé óôçí ôÜîç ôç äõíáôüôçôá íá øçößóåé ìéá êáôåýèõíóç ãéá ôï ìÜèçìá Þ íá óõëëÝîåé óõãêáôÜèåóç ãéá ìéá Ýñåõíá.

          +
        + +

         ¸ñåõíåò

        +
          +

          Ç ìïíÜäá ¸ñåõíáò ðáñÝ÷åé Ýíáí áñéèìü áðü åñãáëåßá Ýñåõíáò ôá ïðïßá Ý÷åé äéáðéóôùèåß ðùò åßíáé ÷ñÞóéìá óôçí åêôßìçóç êáé äéåãåñóç ôçò ìÜèçóçò óå äéêôõáêÜ ðåñéâÜëëïíôá. + Ïé åêðáéäåõôÝò ìðïñïýí íá ôá ÷ñçóéìïðïéÞóïõí ãéá íá óõëëÝîïõí äåäïìÝíá áðü ôïõò ìáèçôÝò ôïõò ôá ïðïßá èá ôïõò âïçèÞóïõí íá âåëôéþóïõí ôçí åêðáéäåõôéêÞ äñáóôçñéüôçôá.

          +
        + -

        Ôï Moodle ðåñéÝ÷åé ìéá ìåãÜëç êëßìáêá ìïíÜäùí äñáóôçñéüôçôáò ïé ïðïßåò ìðïñïýí íá ÷ñçóéìïðïéçèïýí óôç óôáäéáêÞ áíÜðôõîç êÜèå ôýðïõ ìáèÞìáôïò.

        diff --git a/lang/el/help/picture.html b/lang/el/help/picture.html index b4840fddc33..d33ab6a5eba 100644 --- a/lang/el/help/picture.html +++ b/lang/el/help/picture.html @@ -1,17 +1,17 @@ -

        Öïñôþíïíôáò ìéá åéêüíá

        +

        Öïñôþíïíôáò ìéá åéêüíá

        -

        Ìðïñåßôå íá öïñôþóåôå ìéá åéêüíá áðü ôïí õðïëïãéóôÞ óáò óå áõôü ôïí åîõðçñåôçôÞ êáé áõôÞ èá ÷ñçóéìïðïéçèåß óå äéÜöïñá óçìåßá ãéá íá áíôéðñïóùðåýóåé åóÜò.

        -

        Ãéá áõôü ôï ëüãï ïé êáëýôåñåò åéêüíåò åßíáé êïíôéíÝò öùôïãñáößåò ôïõ ðñïóþðïõ óáò, áëëÜ ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå üðïéá åéêüíá åðéèõìÞôå.

        -

        Ç åéêüíá ðñÝðåé íá åßíáé ìïñöÞò JPG Þ PNG (äçë. ôá ïíüìáôá èá ôåëåéþíïõí óå .jpg Þ .png).

        -

        Ìðïñåßôå íá áðïêôÞóåôå ìéá ôÝôïéá åéêüíá ÷ñçóéìïðïéþíôáò ìßá áðü ôéò ôÝóóåñéò áêüëïõèåò ìåèüäïõò:

        -
          -
        1. Ìå ìéá øçöéáêÞ öùôïãñáöéêÞ ìç÷áíÞ ïé öùôïãñáößåò èá åßíáé ðéèáíüôçôá Þäç óôïí õðïëïãéóôÞ óáò êáé óôçí êáôÜëëçëç ìïñöÞ.
        2. -
        3. Ìðïñåßôå íá óáñþóåôå (scan) ìéá åêôõðùìÝíç öùôïãñáößá. ÂåâáéùèÞôå ðùò ôçí áðïèçêåýåôå óå ìïñöÞ JPG Þ PNG.
        4. -
        5. Áí åßóôå êáëëéôÝ÷íçò ßóùò íá èÝëåôå íá æùãñáößóåôå ìéá åéêüíá ÷ñçóéìïðïéþíôáò Ýíá ðñüãñáììá æùãñáöéêÞò.
        6. -
        7. ÔÝëïò, ìðïñåßôå íá "êëÝøåôå" åéêüíåò áðü ôï äéáäßêôõï. Ôï http://images.google.com åßíáé ìéá ðïëý êáëÞ áñ÷Þ. Áöïý âñåßôå ìéá åéêüíá, ìðïñåßôå íá ôçí áðïèçêåýóåôå ìå äåîß êëéê ðÜíù óå áõôÞ êáé ìåôÜ íá åðéëÝîôå "ÁðïèÞêåõóç åéêüíáò ùò" Þ "Save image as" áðü ôï ìåíïõ (óå äéáöïñåôéêïýò õðïëïãéóôÝò ìðïñåß íá äéáöÝñåé ôï ìÞíõìá).
        8. -
        +

        Ìðïñåßôå íá öïñôþóåôå ìéá åéêüíá áðü ôïí õðïëïãéóôÞ óáò óå áõôü ôïí åîõðçñåôçôÞ êáé áõôÞ èá ÷ñçóéìïðïéçèåß óå äéÜöïñá óçìåßá ãéá íá áíôéðñïóùðåýóåé åóÜò. +

        Ãéá áõôü ôï ëüãï ïé êáëýôåñåò åéêüíåò åßíáé êïíôéíÝò öùôïãñáößåò ôïõ ðñïóþðïõ óáò, áëëÜ ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå üðïéá åéêüíá åðéèõìÞôå. +

        Ç åéêüíá ðñÝðåé íá åßíáé ìïñöÞò JPG Þ PNG (äçë. ôá ïíüìáôá èá ôåëåéþíïõí óå .jpg Þ .png). +

        Ìðïñåßôå íá áðïêôÞóåôå ìéá ôÝôïéá åéêüíá ÷ñçóéìïðïéþíôáò ìßá áðü ôéò ôÝóóåñéò áêüëïõèåò ìåèüäïõò: +

          +
        1. Ìå ìéá øçöéáêÞ öùôïãñáöéêÞ ìç÷áíÞ ïé öùôïãñáößåò èá åßíáé ðéèáíüôçôá Þäç óôïí õðïëïãéóôÞ óáò êáé óôçí êáôÜëëçëç ìïñöÞ. +
        2. Ìðïñåßôå íá óáñþóåôå (scan) ìéá åêôõðùìÝíç öùôïãñáößá. ÂåâáéùèÞôå ðùò ôçí áðïèçêåýåôå óå ìïñöÞ JPG Þ PNG. +
        3. Áí åßóôå êáëëéôÝ÷íçò ßóùò íá èÝëåôå íá æùãñáößóåôå ìéá åéêüíá ÷ñçóéìïðïéþíôáò Ýíá ðñüãñáììá æùãñáöéêÞò. +
        4. ÔÝëïò, ìðïñåßôå íá "êëÝøåôå" åéêüíåò áðü ôï äéáäßêôõï. Ôï http://images.google.com åßíáé ìéá ðïëý êáëÞ áñ÷Þ. Áöïý âñåßôå ìéá åéêüíá, ìðïñåßôå íá ôçí áðïèçêåýóåôå ìå äåîß êëéê ðÜíù óå áõôÞ êáé ìåôÜ íá åðéëÝîôå "ÁðïèÞêåõóç åéêüíáò ùò" Þ "Save image as" áðü ôï ìåíïõ (óå äéáöïñåôéêïýò õðïëïãéóôÝò ìðïñåß íá äéáöÝñåé ôï ìÞíõìá). +
        -

        Ãéá íá öïñôþóåôå ôçí åéêüíá óôï Moodle ðáôÞóôå ôï êïõìðß "ÁíáæÞôçóç" óå áõôÞ ôç óåëßäá êáé åðéëÝîôå Ýíá áñ÷åßï åéêüíáò áðü ôïí õðïëïãéóôÞ óáò.

        -

        Óçìåßùóç: Âåâáéùèåßôå ðùò ôï áñ÷åßï åéêüíáò äåí åßíáé ìåãáëýôåñï áðü ôï üñéï ðïõ ïñßæåôáé åäþ áëëéþò äå èá öïñôùèåß ôï áñ÷åßï.

        -

        ÌåôÜ ðáôÞóôå "ÅíçìÝñùóç ôïõ ðñïößë ìïõ" óôï êÜôù ìÝñïò - ôï áñ÷åßï åéêüíáò èá êïðåß óå ôåôñÜãùíç ìïñöÞ óôá 100x100 pixels.

        -

        ¼ôáí åðéóôñÝøåôå óôç óåëßäá ôïõ ðñïößë óáò, ç åéêüíá ßóùò íá ìç öáßíåôáé íá Ý÷åé áëëÜîç. Áí óõìâáßíåé áõôü áðëÜ ðáôÞóôå ôï êïõìðß "ÁíáíÝùóç" (Þ "Reload" Þ "Refresh", áíÜëïãá ìå ôïí õðïëïãéóôÞ óáò) óôï öõëëïìåôñçôÞ óáò.

        \ No newline at end of file +

        Ãéá íá öïñôþóåôå ôçí åéêüíá óôï Moodle ðáôÞóôå ôï êïõìðß "ÁíáæÞôçóç" óå áõôÞ ôç óåëßäá êáé åðéëÝîôå Ýíá áñ÷åßï åéêüíáò áðü ôïí õðïëïãéóôÞ óáò. +

        Óçìåßùóç: Âåâáéùèåßôå ðùò ôï áñ÷åßï åéêüíáò äåí åßíáé ìåãáëýôåñï áðü ôï üñéï ðïõ ïñßæåôáé åäþ áëëéþò äå èá öïñôùèåß ôï áñ÷åßï. +

        ÌåôÜ ðáôÞóôå "ÅíçìÝñùóç ôïõ ðñïößë ìïõ" óôï êÜôù ìÝñïò - ôï áñ÷åßï åéêüíáò èá êïðåß óå ôåôñÜãùíç ìïñöÞ óôá 100x100 pixels. +

        ¼ôáí åðéóôñÝøåôå óôç óåëßäá ôïõ ðñïößë óáò, ç åéêüíá ßóùò íá ìç öáßíåôáé íá Ý÷åé áëëÜîç. Áí óõìâáßíåé áõôü áðëÜ ðáôÞóôå ôï êïõìðß "ÁíáíÝùóç" (Þ "Reload" Þ "Refresh", áíÜëïãá ìå ôïí õðïëïãéóôÞ óáò) óôï öõëëïìåôñçôÞ óáò. \ No newline at end of file diff --git a/lang/el/help/questions.html b/lang/el/help/questions.html index a3f8157b418..799180959d3 100644 --- a/lang/el/help/questions.html +++ b/lang/el/help/questions.html @@ -1,15 +1,15 @@ -

        ÅñùôÞóåéò

        +

        ÅñùôÞóåéò

        -

        ¸íáò êáëüò ôñüðïò íá êÜíåôå Üëëïõò áíèñþðïõò íá óêåöôïýí ãéá Ýíá èÝìá åßíáé íá ôïõò êÜíåôå ìéá ó÷åôéêÞ åñþôçóç. - Ôï íá åñùôçèïýìå ìéá êáëÞ åñþôçóç ìðïñåß íá ìáò âïçèÞóåé ðñáãìáôéêÜ íá âÜëïõìå ôçí ðëçñïöïñßá óå ìéá óåéñÜ, íá åêôéìÞóïõìå ôéò éäÝåò ìáò êáé íá ðáñÜãïõìå íÝåò éäÝåò.

        +

        ¸íáò êáëüò ôñüðïò íá êÜíåôå Üëëïõò áíèñþðïõò íá óêåöôïýí ãéá Ýíá èÝìá åßíáé íá ôïõò êÜíåôå ìéá ó÷åôéêÞ åñþôçóç. + Ôï íá åñùôçèïýìå ìéá êáëÞ åñþôçóç ìðïñåß íá ìáò âïçèÞóåé ðñáãìáôéêÜ íá âÜëïõìå ôçí ðëçñïöïñßá óå ìéá óåéñÜ, íá åêôéìÞóïõìå ôéò éäÝåò ìáò êáé íá ðáñÜãïõìå íÝåò éäÝåò.

        -

        ÁõôÞ ç ìÝèïäïò åßíáé ãíùóôÞ þò ÌáéåõôéêÞ ìÝèïäïò, üíïìá ðïõ ðÞñå áðü ôçí ðñáêôéêÞ ôïõ ÓùêñÜôç óôçí Áñ÷áßá ÅëëÜäá.

        +

        ÁõôÞ ç ìÝèïäïò åßíáé ãíùóôÞ þò ÌáéåõôéêÞ ìÝèïäïò, üíïìá ðïõ ðÞñå áðü ôçí ðñáêôéêÞ ôïõ ÓùêñÜôç óôçí Áñ÷áßá ÅëëÜäá.

        -

        Óôç ÌáéåõôéêÞ ìÝèïäï ðñÝðåé íá áêïýôå ôï óõíïìéëçôÞ óáò ìå ðñïóï÷Þ þóôå íá +

        Óôç ÌáéåõôéêÞ ìÝèïäï ðñÝðåé íá áêïýôå ôï óõíïìéëçôÞ óáò ìå ðñïóï÷Þ þóôå íá ìðïñåßôå íá êñßíåôå êáé íá äéáôõðþóåôå ôçí åñþôçóÞ óáò ìå ôñüðï ôÝôïéï þóôå - íá âïçèÜ ôï óõíïìéëéôÞ óáò, íá åßíáé äçìéïõñãéêÞ êáé íá ìçí ïäçãåß óå áíôéðáñáèÝóåéò.

        + íá âïçèÜ ôï óõíïìéëéôÞ óáò, íá åßíáé äçìéïõñãéêÞ êáé íá ìçí ïäçãåß óå áíôéðáñáèÝóåéò. -

        ÌåñéêÜ ðáñáäåßãìáôá ôÝôïéùí åñùôÞóåùí:

        +

        ÌåñéêÜ ðáñáäåßãìáôá ôÝôïéùí åñùôÞóåùí:

        @@ -75,8 +75,8 @@
      • Ìðïñåßôå íá äåßôå ðþò áõôü ìðïñåß íá óõó÷åôéóôåß ìå ________;
      • -
        -Ç åñùôÞóåéò äéáóêåõÜóôçêáí áðü ôï Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking ôïõ Paul, R. (1993)., Santa Rosa, CA. +
        +Ç åñùôÞóåéò äéáóêåõÜóôçêáí áðü ôï Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking ôïõ Paul, R. (1993)., Santa Rosa, CA. -

        -

        +

        +

        diff --git a/lang/el/help/quiz/attempts.html b/lang/el/help/quiz/attempts.html index aa9b9b91d38..c2be86d7132 100644 --- a/lang/el/help/quiz/attempts.html +++ b/lang/el/help/quiz/attempts.html @@ -1,7 +1,7 @@ -

        ÐñïóðÜèåéåò äéáãùíéóìïý åñùôÞóåùí

        +

        ÐñïóðÜèåéåò äéáãùíéóìïý åñùôÞóåùí

        -

        Ìðïñåß íá åðéôñÝðåôáé óôïõò ìáèçôÝò íá Ý÷ïõí ðïëëÝò ðñïóðÜèåéåò óå ìßá åñþôçóç. -

        -

        Áõôü ìðïñåß íá âïçèÞóåé óôï íá ãßíåé ç äéáäéêÜóßá ôùí åñùôçìÜôùí ìéá ðåñéóóüôåñï +

        Ìðïñåß íá åðéôñÝðåôáé óôïõò ìáèçôÝò íá Ý÷ïõí ðïëëÝò ðñïóðÜèåéåò óå ìßá åñþôçóç. + +

        Áõôü ìðïñåß íá âïçèÞóåé óôï íá ãßíåé ç äéáäéêÜóßá ôùí åñùôçìÜôùí ìéá ðåñéóóüôåñï åêðáéäåõôéêÞ äñáóôçñéüôçôá, ðáñÜ óáí ìéá áðëÞ åñãáóßá. -

        + diff --git a/lang/el/help/quiz/categories.html b/lang/el/help/quiz/categories.html index 3aade7659c0..9024694e1ab 100644 --- a/lang/el/help/quiz/categories.html +++ b/lang/el/help/quiz/categories.html @@ -1,21 +1,21 @@ -

        Êáôçãïñßåò åñùôÞóåùí

        +

        Êáôçãïñßåò åñùôÞóåùí

        -

        Ìðïñåßôå, áíôß íá êñáôÞóåôå üëåò ôéò åñùôÞóåéò óáò óå Ýíáí ìåãÜëï êáôÜëïãï, +

        Ìðïñåßôå, áíôß íá êñáôÞóåôå üëåò ôéò åñùôÞóåéò óáò óå Ýíáí ìåãÜëï êáôÜëïãï, íá äçìéïõñãÞóåôå êáôçãïñßåò, þóôå íá êñáôÜôå ôéò åñùôÞóåéò åêåß. -

        -

        ÊÜèå êáôçãïñßá áðïôåëåßôáé áðü Ýíá üíïìá êáé ìéá óýíôïìç ðåñéãñáöÞ. -

        -

        ÊÜèå êáôçãïñßá ìðïñåß åðßóçò íá "äçìïóéåõèåß", ôï ïðïßï óçìáßíåé + +

        ÊÜèå êáôçãïñßá áðïôåëåßôáé áðü Ýíá üíïìá êáé ìéá óýíôïìç ðåñéãñáöÞ. + +

        ÊÜèå êáôçãïñßá ìðïñåß åðßóçò íá "äçìïóéåõèåß", ôï ïðïßï óçìáßíåé ïôé ç êáôçãïñßá áõôÞ (êáèþò êáé üëåò ïé åñùôÞóåéò ôçò) èá åßíáé äéáèÝóéìåò óå üëá ôá ìáèÞìáôá óôï óõãêåêñéìÝíï server, Ýôóé þóôå Üëëá ìáèÞìáôá íá ìðïñïýí íá ÷ñçóéìïðïéÞóïõí ôéò åñùôÞóåéò óáò óôéò äéêÜ ôïõò quiz. -

        -

        Ïé êáôçãïñßåò ìðïñïýí åðßóçò íá äçìéïõñãïýíôáé Þ íá äéáãñÜöïíôáé. + +

        Ïé êáôçãïñßåò ìðïñïýí åðßóçò íá äçìéïõñãïýíôáé Þ íá äéáãñÜöïíôáé. Ðáñüëáõôá, åÜí ðñïóðáèÞóåôå íá äéáãñÜøåôå ìéá êáôçãïñßá ðïõ ðåñéÝ÷åé åñùôÞóåéò, èá êëçèåßôå íá êáèïñßóåôå ìéá Üëëç êáôçãïñßá ãéá íá ôéò ìåôáöÝñåôå. -

        + diff --git a/lang/el/help/quiz/correctanswers.html b/lang/el/help/quiz/correctanswers.html index bdfbe868c73..1eb0ff1cbc8 100644 --- a/lang/el/help/quiz/correctanswers.html +++ b/lang/el/help/quiz/correctanswers.html @@ -1,7 +1,7 @@ -

        ÅìöÜíéóå ôéò óùóôÝò áðáíôÞóåéò

        +

        ÅìöÜíéóå ôéò óùóôÝò áðáíôÞóåéò

        -

        ÅÜí åíåñãïðïéÞóåéò ôçí åìöÜíéóç ôùí óùóôþí áðáíôÞóåùí, Ýíá +

        ÅÜí åíåñãïðïéÞóåéò ôçí åìöÜíéóç ôùí óùóôþí áðáíôÞóåùí, Ýíá ìÞíõìá èá åìöáíéóôåß êáé èá óïõ äåßîåé ôç óùóôÞ áðÜíôçóç ãéá êÜèå åñþôçóç (ôïíéóìÝíç ìå Ýíá öùôåéíü ÷ñþìá). -

        +

        diff --git a/lang/el/help/quiz/description.html b/lang/el/help/quiz/description.html index 520e68d9188..fb17e7b49ff 100755 --- a/lang/el/help/quiz/description.html +++ b/lang/el/help/quiz/description.html @@ -1 +1,8 @@ -

        ÐåñéãñáöÞ

        ÁõôÞ ç åñþôçóç äåí åßíáé ðñáãìáôéêÜ ìéá åñþôçóç.

        Ôï ìüíï ðïõ êÜíåé åßíáé íá ôõðþíåé êåßìåíï ÷ùñßò íá áðáéôåß áðáíôÞóåéò.

        Ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá ôõðþóåé Ýíá ðåñéãñáöéêü êåßìåíï ðïõ èá ÷ñçóéìïðïéçèåß áðü Ýíá áêüëïõèï ãêñïõð åñùôÞóåùí.

        \ No newline at end of file +

        ÐåñéãñáöÞ

        + +

        ÁõôÞ ç åñþôçóç äåí åßíáé ðñáãìáôéêÜ ìéá åñþôçóç.

        + +

        Ôï ìüíï ðïõ êÜíåé åßíáé íá ôõðþíåé êåßìåíï ÷ùñßò íá áðáéôåß áðáíôÞóåéò.

        + +

        Ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá ôõðþóåé Ýíá ðåñéãñáöéêü êåßìåíï ðïõ èá ÷ñçóéìïðïéçèåß + áðü Ýíá áêüëïõèï ãêñïõð åñùôÞóåùí.

        diff --git a/lang/el/help/quiz/feedback.html b/lang/el/help/quiz/feedback.html index 953814ff85b..eb51a0afcfa 100644 --- a/lang/el/help/quiz/feedback.html +++ b/lang/el/help/quiz/feedback.html @@ -1,5 +1,5 @@ -

        ÁðáíôÞóåéò

        +

        ÁðáíôÞóåéò

        -

        ÅÜí åíåñãïðïéÞóåôå ôçí åðéëïãÞ ôçò áðÜíôçóçò, ôüôå ïé ìáèçôÝò èá -äÝ÷ïíôáé ãéá êÜèå åñþôçóç áðÜíôçóç ìå Ýíá ìÞíõìá ãéá óùóôü Þ ëÜèïò .

        +

        ÅÜí åíåñãïðïéÞóåôå ôçí åðéëïãÞ ôçò áðÜíôçóçò, ôüôå ïé ìáèçôÝò èá +äÝ÷ïíôáé ãéá êÜèå åñþôçóç áðÜíôçóç ìå Ýíá ìÞíõìá ãéá óùóôü Þ ëÜèïò .

        diff --git a/lang/el/help/quiz/formatblackboard.html b/lang/el/help/quiz/formatblackboard.html index 97f3f900515..ea09538b249 100755 --- a/lang/el/help/quiz/formatblackboard.html +++ b/lang/el/help/quiz/formatblackboard.html @@ -1 +1,4 @@ -

        ÅéóáãùãÞ Áñ÷åßùí "ÌïñöÞ Êïõßæ ÐéíÜêùí"

        ÅéóÜãïíôáò Áñ÷åßá "ÌïñöÞò Êïõßæ ÐéíÜêùí"

        Ôï Ýããñáöï äåí Ý÷åé ïëïêëçñùèåß

        \ No newline at end of file +

        ÅéóáãùãÞ Áñ÷åßùí "ÌïñöÞ Êïõßæ ÐéíÜêùí"

        +

        ÅéóÜãïíôáò Áñ÷åßá "ÌïñöÞò Êïõßæ ÐéíÜêùí"

        + +

        Ôï Ýããñáöï äåí Ý÷åé ïëïêëçñùèåß

        diff --git a/lang/el/help/quiz/formatcustom.html b/lang/el/help/quiz/formatcustom.html index 28814b1f4c9..b0d441389cd 100755 --- a/lang/el/help/quiz/formatcustom.html +++ b/lang/el/help/quiz/formatcustom.html @@ -1 +1,3 @@ -

        ÅéóÜãïíôáò Áñ÷åßá ÌïñöÞò Custom

        Ôï Ýããñáöï äåí Ý÷åé ïëïêëçñùèåß

        \ No newline at end of file +

        ÅéóÜãïíôáò Áñ÷åßá ÌïñöÞò Custom

        + +

        Ôï Ýããñáöï äåí Ý÷åé ïëïêëçñùèåß

        diff --git a/lang/el/help/quiz/formatmissingword.html b/lang/el/help/quiz/formatmissingword.html index 5664ea0ffda..9b185cd11f0 100755 --- a/lang/el/help/quiz/formatmissingword.html +++ b/lang/el/help/quiz/formatmissingword.html @@ -1 +1,3 @@ -

        ÅéóÜãïíôáò Áñ÷åßá ÌïñöÞò "Åëëåßðïõóáò ËÝîçò"

        Ôï Ýããñáöï äåí Ý÷åé ïëïêëçñùèåß

        \ No newline at end of file +

        ÅéóÜãïíôáò Áñ÷åßá ÌïñöÞò "Åëëåßðïõóáò ËÝîçò"

        + +

        Ôï Ýããñáöï äåí Ý÷åé ïëïêëçñùèåß

        diff --git a/lang/el/help/quiz/grademethod.html b/lang/el/help/quiz/grademethod.html index 41332e0ffb6..a52fec01fab 100644 --- a/lang/el/help/quiz/grademethod.html +++ b/lang/el/help/quiz/grademethod.html @@ -1,27 +1,27 @@ -

        ÌÝèïäïò âáèìïëüãéóçò

        +

        ÌÝèïäïò âáèìïëüãéóçò

        -

        ¼ôáí åðéôñÝðïíôáé ïé ðïëëáðëÝò áðáíôÞóåéò, õðÜñ÷ïõí äéáöïñåôéêïß +

        ¼ôáí åðéôñÝðïíôáé ïé ðïëëáðëÝò áðáíôÞóåéò, õðÜñ÷ïõí äéáöïñåôéêïß ôñüðïé ðïõ ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôïõò âáèìïýò ãéá íá õðïëïãßóåôå -ôïí ôåëéêü âáèìü ôïõ ìáèçôÞ ãéá ôï äéáãùíéóìü åñùôÞóåùí.

        +ôïí ôåëéêü âáèìü ôïõ ìáèçôÞ ãéá ôï äéáãùíéóìü åñùôÞóåùí. -

        Ï ìåãáëýôåñïò âáèìüò

        -

          -

          Ï ôåëéêüò âáèìüò åßíáé ï õøçëüôåñïò (êáëýôåñïò) âáèìüò óå êÜèå ðñïóðÜèåéá.

          -
        +

        Ï ìåãáëýôåñïò âáèìüò

        +

          +

          Ï ôåëéêüò âáèìüò åßíáé ï õøçëüôåñïò (êáëýôåñïò) âáèìüò óå êÜèå ðñïóðÜèåéá. +

        -

        ÌÝóç ôéìÞ âáèìïý

        -

          -

          Ï ôåëéêüò âáèìüò åßíáé ï ìÝóïò âáèìüò (ìÝóïò üñïò) üëùí ôùí ðñïóðáèåéþí.

          -
        +

        ÌÝóç ôéìÞ âáèìïý

        +

          +

          Ï ôåëéêüò âáèìüò åßíáé ï ìÝóïò âáèìüò (ìÝóïò üñïò) üëùí ôùí ðñïóðáèåéþí. +

        -

        Ðñþôïò âáèìüò

        -

          -

          Ï ôåëéêüò âáèìüò åßíáé ï âáèìüò ðïõ áðïêôÜôáé êáôÜ ôçí ðñþôç ðñïóðÜèåéá (ïé Üëëåò ðñïóðÜèåéåò áãíïïýíôå).

          -
        +

        Ðñþôïò âáèìüò

        +

          +

          Ï ôåëéêüò âáèìüò åßíáé ï âáèìüò ðïõ áðïêôÜôáé êáôÜ ôçí ðñþôç ðñïóðÜèåéá (ïé Üëëåò ðñïóðÜèåéåò áãíïïýíôå). +

        -

        Ôåëéêüò âáèìüò

        -

          -

          Ï ôåëéêüò âáèìüò åßíáé ï âáèìüò ìüíï áðü ôç ðéï ðñüóöáôç ðñïóðÜèåéá.

          -
        +

        Ôåëéêüò âáèìüò

        +

          +

          Ï ôåëéêüò âáèìüò åßíáé ï âáèìüò ìüíï áðü ôç ðéï ðñüóöáôç ðñïóðÜèåéá. +

        diff --git a/lang/el/help/quiz/index.html b/lang/el/help/quiz/index.html index 5eda722dec7..babfe8aac06 100755 --- a/lang/el/help/quiz/index.html +++ b/lang/el/help/quiz/index.html @@ -1 +1,42 @@ -

        Êïõßæ

        \ No newline at end of file +

        Êïõßæ

        + + diff --git a/lang/el/help/quiz/maxgrade.html b/lang/el/help/quiz/maxgrade.html index c7df874ec19..0f37fd66cd4 100644 --- a/lang/el/help/quiz/maxgrade.html +++ b/lang/el/help/quiz/maxgrade.html @@ -1,15 +1,15 @@ -

        ÌÝãéóôïò âáèìüò

        +

        ÌÝãéóôïò âáèìüò

        -

        Ï ìÝãéóôïò âáèìüò ðïõ ïñßæåôå ãéá Ýíá äéáãùíéóìü åñùôÞóåùí åßíáé áõôüò óôïí ïðïßï +

        Ï ìÝãéóôïò âáèìüò ðïõ ïñßæåôå ãéá Ýíá äéáãùíéóìü åñùôÞóåùí åßíáé áõôüò óôïí ïðïßï áíáöÝñïíôáé êáé üëïé ïé Üëëïé âáèìïß. -

        -

        Ãéá ðáñÜäåéãìá, ìðïñåß ðéèáíþí íá ïñßóåôå óá ìÝãéóôï âáèìü ôï 20, åðåéäÞ ï + +

        Ãéá ðáñÜäåéãìá, ìðïñåß ðéèáíþí íá ïñßóåôå óá ìÝãéóôï âáèìü ôï 20, åðåéäÞ ï ï äéáãùíéóìüò åñùôÞóåùí áîßæåé ôï 20% üëïõ ôïõ ìáèÞìáôïò. -

        -

        Áêüìá êé áí íá Ý÷åôå 10 åñùôÞóåéò óôï äéáãùíéóìü óáò, áîßáò + +

        Áêüìá êé áí íá Ý÷åôå 10 åñùôÞóåéò óôï äéáãùíéóìü óáò, áîßáò óõíïëéêÜ 50 âáèìþí, üëïé ïé âáèìïß áðü ôï 50 "èá ìåéùèïýí" óôïí áíþôáôï âáèìü äéáãùíéóìïõ åñùôÞóåùí ðïõ Ý÷åôå ïñßóåé, óôçí ðñïêåéìÝíç ðåñßðôùóç óôïõò 20. -

        + diff --git a/lang/el/help/quiz/mods.html b/lang/el/help/quiz/mods.html index 50bed54cced..ee2274519ca 100755 --- a/lang/el/help/quiz/mods.html +++ b/lang/el/help/quiz/mods.html @@ -1 +1,11 @@ -

         Êïõßæ

          ÁõôÞ ç åíüôçôá äßíåé ôç äõíáôüôçôá óôïí êáèçãçôÞ íá ó÷åäéÜóåé êáé íá äçìéïõñãÞóåé ôåóô, ðïõ íá ðåñéÝ÷ïõí åñùôÞóåéò ðïëëáðëÞò åðéëïãÞò, óùóôü-ëÜèïò êáé åñùôÞóåéò ìå óýíôïìåò áðáíôÞóåéò. ÁõôÝò ïé åñùôÞóåéò öõëÜóóïíôáé óå ìéá êáôçãïñéïðïéçìÝíç âÜóç äåäïìÝíùí êáé ìðïñïýí íá îáíá÷ñçóéìïðïéçèïýí óôï ìÜèçìá áêüìá êé áíÜìåóá óå äýï ìáèÞìáôá. Ôá êïõßæ åðéôñÝðïõí ôéò ðïëëáðëÝò ðñïóðÜèåéåò. ÊÜèå ðñïóðÜèåéá ìáñêÜñåôáé áõôüìáôá êáé ï êáèçãçôÞò ìðïñåß íá åðéëÝîåé áí èá äþóåé âïÞèåéá Þ áí èá äåßîåé ôç óùóôÞ áðÜíôçóç. ÁõôÞ ç åíüôçôá ðåñéëáìâÜíåé åõêïëßåò âáèìïëüãçóçò.

        \ No newline at end of file +

         Êïõßæ

        +
          +

          ÁõôÞ ç åíüôçôá äßíåé ôç äõíáôüôçôá óôïí êáèçãçôÞ íá ó÷åäéÜóåé êáé íá äçìéïõñãÞóåé + ôåóô, ðïõ íá ðåñéÝ÷ïõí åñùôÞóåéò ðïëëáðëÞò åðéëïãÞò, óùóôü-ëÜèïò êáé åñùôÞóåéò + ìå óýíôïìåò áðáíôÞóåéò. ÁõôÝò ïé åñùôÞóåéò öõëÜóóïíôáé óå ìéá êáôçãïñéïðïéçìÝíç + âÜóç äåäïìÝíùí êáé ìðïñïýí íá îáíá÷ñçóéìïðïéçèïýí óôï ìÜèçìá áêüìá êé áíÜìåóá + óå äýï ìáèÞìáôá. Ôá êïõßæ åðéôñÝðïõí ôéò ðïëëáðëÝò ðñïóðÜèåéåò. ÊÜèå ðñïóðÜèåéá + ìáñêÜñåôáé áõôüìáôá êáé ï êáèçãçôÞò ìðïñåß íá åðéëÝîåé áí èá äþóåé âïÞèåéá + Þ áí èá äåßîåé ôç óùóôÞ áðÜíôçóç. ÁõôÞ ç åíüôçôá ðåñéëáìâÜíåé åõêïëßåò âáèìïëüãçóçò.

          +
        + diff --git a/lang/el/help/quiz/multianswer.html b/lang/el/help/quiz/multianswer.html index 816ba1bb5b7..ead6a72e6da 100755 --- a/lang/el/help/quiz/multianswer.html +++ b/lang/el/help/quiz/multianswer.html @@ -1,79 +1,41 @@ -

        Embedded answers (Cloze)

        - - - -

        This very flexible question type is similar to a - - popular format known as the Cloze format.

        - - - -

        Ïé åñùôÞóåéò áðïôåëïýíôáé áðü Ýíá êåßìåíï (óå ìïñöÞ Moodle) ðïõ Ý÷åé äéÜöïñåò - - åíóùìáôùìÝíåò áðáíôÞóåéò, óõìðåñéëáìâáíïìÝíùí ôùí ðïëëáðëÞò åðéëïãÞò, óýíôïìùí - - áðáíôÞóåùí êáé áñéèìçôéêþí áðáíôÞóåùí.

        - -

        Äåí õðÜñ÷åé ðñïò ôï ðáñüí ãñáöéêü interface ãéá ôç äçìéïõñãßá áõôþí ôùí åñùôÞóåùí - - - ðñÝðåé íá êáèïñßóåéò ôç ìïñöÞ ôçò åñþôçóçò ÷ñçóéìïðïéþíôáò ôï ðëáßóéï êåéìÝíïõ - - Þ åéóÜãùíôÜò ôåò áðü åîùôåñéêÜ áñ÷åßá.

        - -

        Åäþ õðÜñ÷åé Ýíá ðáñÜäåéãìá:

        - -
        - -
        -
        - -
        - - - -

        Áõôü ôï ðáñÜäåéãìá èá åìöáíéóôåß óôïõò ìáèçôÝò üðùò ðáñáêÜôù:

        - - - - - -
        - -

        3

        8 Marks


        - -

        ÁõôÞ ç åñþôçóç áðïôåëåßôáé áðü êÜðïéï êåßìåíï êáé ç áðÜíôçóç åßíáé åíóùìáôùìÝíç åäþ êáé áìÝóùò ìåôÜ áð' áõôü Ý÷åéò ìéá ìéêñÞ áðÜíôçóç êáé ôÝëïò Ý÷ïõìå Ýíáí áñéèìü êéíçôÞò õðïäéáóôïëÞò .
        - -
        - -Óçìåßùóå üôé äéåõèýíóåéò üðùò ôï www.moodle.org êáé ôá ÷áìüãåëá ëåéôïõñãïýí üðùò óõíÞèùò:
        - -a) Ðüóï êáëü åßíáé áõôü;
        - -b) Ôé âáèìü èá ôïõ Ýäéíåò;
        - -
        - -ÊáëÞ Åðéôõ÷ßá!

        - -
        - - - -
        - - - +

        Embedded answers (Cloze)

        + +

        This very flexible question type is similar to a + popular format known as the Cloze format. + +

        Ïé åñùôÞóåéò áðïôåëïýíôáé áðü Ýíá êåßìåíï (óå ìïñöÞ Moodle) ðïõ Ý÷åé äéÜöïñåò + åíóùìáôùìÝíåò áðáíôÞóåéò, óõìðåñéëáìâáíïìÝíùí ôùí ðïëëáðëÞò åðéëïãÞò, óýíôïìùí + áðáíôÞóåùí êáé áñéèìçôéêþí áðáíôÞóåùí. +

        Äåí õðÜñ÷åé ðñïò ôï ðáñüí ãñáöéêü interface ãéá ôç äçìéïõñãßá áõôþí ôùí åñùôÞóåùí + - ðñÝðåé íá êáèïñßóåéò ôç ìïñöÞ ôçò åñþôçóçò ÷ñçóéìïðïéþíôáò ôï ðëáßóéï êåéìÝíïõ + Þ åéóÜãùíôÜò ôåò áðü åîùôåñéêÜ áñ÷åßá. +

        Åäþ õðÜñ÷åé Ýíá ðáñÜäåéãìá: +

        +
        + +ter> + + +

        Áõôü ôï ðáñÜäåéãìá èá åìöáíéóôåß óôïõò ìáèçôÝò üðùò ðáñáêÜôù:

        + + +
        +

        3

        8 Marks


        +

        ÁõôÞ ç åñþôçóç áðïôåëåßôáé áðü êÜðïéï êåßìåíï êáé ç áðÜíôçóç åßíáé åíóùìáôùìÝíç åäþ êáé áìÝóùò ìåôÜ áð' áõôü Ý÷åéò ìéá ìéêñÞ áðÜíôçóç êáé ôÝëïò Ý÷ïõìå Ýíáí áñéèìü êéíçôÞò õðïäéáóôïëÞò .
        +
        +Óçìåßùóå üôé äéåõèýíóåéò üðùò ôï www.moodle.org êáé ôá ÷áìüãåëá ëåéôïõñãïýí üðùò óõíÞèùò:
        +a) Ðüóï êáëü åßíáé áõôü;
        +b) Ôé âáèìü èá ôïõ Ýäéíåò;
        +
        +ÊáëÞ Åðéôõ÷ßá!

        +
        + +
        + diff --git a/lang/el/help/quiz/multichoice.html b/lang/el/help/quiz/multichoice.html index bf96c1545f7..8c5a80d40a3 100644 --- a/lang/el/help/quiz/multichoice.html +++ b/lang/el/help/quiz/multichoice.html @@ -1,19 +1,19 @@ -

        ÅñùôÞóåéò ðïëëáðëÞò åðéëïãÞò

        +

        ÅñùôÞóåéò ðïëëáðëÞò åðéëïãÞò

        -

        Óå áðÜíôçóç ìéáò åñþôçóçò (ðïõ ìðïñåß íá ðåñéÝ÷åé ìéá öùôïãñáößá) ï áíôáðïêñéíüìåíïò +

        Óå áðÜíôçóç ìéáò åñþôçóçò (ðïõ ìðïñåß íá ðåñéÝ÷åé ìéá öùôïãñáößá) ï áíôáðïêñéíüìåíïò åðéëÝãåé áðü ðïëëÝò áðáíôÞóåéò. ÕðÜñ÷ïõí äõï ôýðïé åñùôÞóåùí ðïëëáðëÞò åðéëïãÞò - ÁðëÞ áðÜíôçóç êáé ðïëëáðëÞ áðÜíôçóç. -

        -

        Ïé åñùôÞóåéò ðïõ äÝ÷ïíôáé áðëÞ áðÜíôçóç åðéôñÝðïõí íá åðéëåãåß ÌÏÍÏ ìéá áðÜíôçóç. + +

        Ïé åñùôÞóåéò ðïõ äÝ÷ïíôáé áðëÞ áðÜíôçóç åðéôñÝðïõí íá åðéëåãåß ÌÏÍÏ ìéá áðÜíôçóç. ÃåíéêÜ üëïé ïé âáèìïß ãéá ôÝôïéïõ ôýðïõ åñùôÞóåéò èá ðñÝðåé íá åßíáé èåôéêïß. -

        -

        ÅñùôÞóåéò ìå ðïëëÝò áðáíôÞóåéò åðéôñÝðïõí ìéá Þ ðåñéóóüôåñåò áðáíôÞóåéò íá äéáëå÷ôïýí - êÜèå áðÜíôçóç + +

        ÅñùôÞóåéò ìå ðïëëÝò áðáíôÞóåéò åðéôñÝðïõí ìéá Þ ðåñéóóüôåñåò áðáíôÞóåéò íá äéáëå÷ôïýí - êÜèå áðÜíôçóç ìðïñåß íá ðåßñíåé Ýíá èåôéêü Þ áñíçôéêü âáèìü, Ýôóé ìå ôï íá åðéëÝîåé êÜðïéïò ¼ËÅÓ ôéò áðáíôÞóåéò äåí èá Ý÷åé óáí áðïôÝëåóìá íá ðÜñåé êáëü âáèìü. Áí ï óõíïëéêüò âáèìüò åßíáé áñíçôéêüò ôüôå ï óõíïëéêüò âáèìüò ãéá áõôÞ ôçí åñþôçóç èá åßíáé ìçäÝí. Ðñïóï÷Þ, åßíáé ðéèáíü íá äçìéïõñãåßôå åñùôÞóåéò ðïõ íá Ý÷ïõí áðïôåëÝóìáôá ìåãáëýôåñá áðü 100%. -

        -

        ÔåëéêÜ, êÜèå áðÜíôçóç (óùóôÞ Þ ëÜèïò) èá ðåñéëáìâÜíåé áíÜäñáóç - Ç áíÜäñáóç áõôÞ èá åìöáíßæåôáé + +

        ÔåëéêÜ, êÜèå áðÜíôçóç (óùóôÞ Þ ëÜèïò) èá ðåñéëáìâÜíåé áíÜäñáóç - Ç áíÜäñáóç áõôÞ èá åìöáíßæåôáé óôïí áíôáðïêñéíüìåíï äßðëá óå êÜèå ìéá áðï ôéò áðáíôÞóåéò ôïõ (ÅÜí ôï quiz Ý÷åé ïñéóôåß Ýôóé þóôå íá åìöáíßæåé ôçí áíÜäñáóç). -

        +

        diff --git a/lang/el/help/quiz/numerical.html b/lang/el/help/quiz/numerical.html index 329f2c9f9eb..be3fc44c773 100755 --- a/lang/el/help/quiz/numerical.html +++ b/lang/el/help/quiz/numerical.html @@ -1 +1,12 @@ -

        ÁñéèìçôéêÝò ÅñùôÞóåéò

        Áðü ôçí ïðôéêÞ ôïõ ìáèçôÞ, ìéá áñéèìçôéêÞ åñþôçóç ìïéÜæåé ìå ìéá åñþôçóç óýíôïìçò áðÜíôçóçò.

        Ç äéáöïñÜ åßíáé üôé ïé áñéèìçôéêÝò áðáíôÞóåéò Ý÷ïõí Ýíá ðåñéèþñéï ëÜèïõò. Áõôü äßíåé ôç äõíáôüôçôá íá äïèåß ìéá óåéñÜ áðáíôÞóåùí.

        Ãéá ðáñÜäåéãìá, áí ç áðÜíôçóç åßíáé 30 ìå ðåñéèþñéï ëÜèïõò 5, ôüôå ïðïéïóäÞðïôå áñéèìüò ìåôáîý 25 êáé 35 èá ëçöèåß ùò óùóôü.

        Ïé áñéèìçôéêÝò åñùôÞóåéò, üôáí ïé áðáíôÞóåéò äåí åßíáé áñéèìçôêÝò, äåí äéáêñßíïõí êåöáëáßá êáé ìéêñÜ ãñÜììáôá. Áõôü åßíáé ÷ñÞóéìï üôáí ç áðÜíôçóç óå ìéá áñéèìçôéêÞ åñþôçóç åßíáé êÜðïéá óáí áõôÝò N/A, +inf, -inf, NaN etc

        \ No newline at end of file +

        ÁñéèìçôéêÝò ÅñùôÞóåéò

        + +

        Áðü ôçí ïðôéêÞ ôïõ ìáèçôÞ, ìéá áñéèìçôéêÞ åñþôçóç ìïéÜæåé ìå ìéá åñþôçóç óýíôïìçò + áðÜíôçóçò.

        +

        Ç äéáöïñÜ åßíáé üôé ïé áñéèìçôéêÝò áðáíôÞóåéò Ý÷ïõí Ýíá ðåñéèþñéï ëÜèïõò. Áõôü + äßíåé ôç äõíáôüôçôá íá äïèåß ìéá óåéñÜ áðáíôÞóåùí.

        +

        Ãéá ðáñÜäåéãìá, áí ç áðÜíôçóç åßíáé 30 ìå ðåñéèþñéï ëÜèïõò 5, ôüôå ïðïéïóäÞðïôå + áñéèìüò ìåôáîý 25 êáé 35 èá ëçöèåß ùò óùóôü.

        +

        Ïé áñéèìçôéêÝò åñùôÞóåéò, üôáí ïé áðáíôÞóåéò äåí åßíáé áñéèìçôêÝò, äåí äéáêñßíïõí + êåöáëáßá êáé ìéêñÜ ãñÜììáôá. Áõôü åßíáé ÷ñÞóéìï üôáí ç áðÜíôçóç óå ìéá áñéèìçôéêÞ + åñþôçóç åßíáé êÜðïéá óáí áõôÝò N/A, +inf, -inf, NaN etc

        + diff --git a/lang/el/help/quiz/questiontypes.html b/lang/el/help/quiz/questiontypes.html index 96d4ffc03e7..c12804fd3d4 100644 --- a/lang/el/help/quiz/questiontypes.html +++ b/lang/el/help/quiz/questiontypes.html @@ -1,39 +1,39 @@ -

        ÄçìéïõñãÞóôå ìéá íÝá åñþôçóç

        +

        ÄçìéïõñãÞóôå ìéá íÝá åñþôçóç

        -

        Ìðïñåßôå íá ðñïóèÝóåôå ìéá ðïéêéëßá áðü äéáöïñåôéêïýò ôýðïõò åñùôÞóåùí óå ìéá êáôçãïñßá:

        +

        Ìðïñåßôå íá ðñïóèÝóåôå ìéá ðïéêéëßá áðü äéáöïñåôéêïýò ôýðïõò åñùôÞóåùí óå ìéá êáôçãïñßá:

        -

        ÐïëëáðëÞò åðéëïãÞò

        -
          -

          Ðñïò áðÜíôçóç óå Ýíá åñþôçìá (ðïõ ìðïñåß íá ðåñéëáìâÜíåé ìéá åéêüíá) ï +

          ÐïëëáðëÞò åðéëïãÞò

          +
            +

            Ðñïò áðÜíôçóç óå Ýíá åñþôçìá (ðïõ ìðïñåß íá ðåñéëáìâÜíåé ìéá åéêüíá) ï áíôáðïêñéíüìåíïò åðéëÝãåé ôçí áðÜíôçóç áðü ìéá óåéñÜ ðïëëáðëþí áðáíôÞóåùí. ÕðÜñ÷ïõí äõï ôýðïé åñùôÞóåùí ðïëëáðëÞò åðéëïãÞò - áðëÞ áðÜíôçóç êáé ðïëëáðëÞ. -

            Ðåñéóóüôåñò ðëçñïöïñßåò:

            -
          +

          Ðåñéóóüôåñò ðëçñïöïñßåò:

          +
        -

        Óýíôïìç áðÜíôçóç

        -
          -

          Ðñïò áðÜíôçóç óå Ýíá åñþôçìá (ðïõ ìðïñåß íá ðåñéëáìâÜíåé ìéá åéêüíá) ï +

          Óýíôïìç áðÜíôçóç

          +
            +

            Ðñïò áðÜíôçóç óå Ýíá åñþôçìá (ðïõ ìðïñåß íá ðåñéëáìâÜíåé ìéá åéêüíá) ï áíôáðïêñéíüìåíïò ãñÜöåé ìéá ëÝîç Þ öñÜóç. Ìðñïñåß íá õðÜñ÷ïõí áñêåôÝò ðéèáíÝò óùóôÝò áðáíôÞóåéò, ìå äéáöïñåôéêïýò âáèìïýò âáèìïýò. Ïé áðáíôÞóåéò ìðïñïýí Þ äå ìðïñïýí íá be sensitive to case. -

            -

            Ðåñéóóüôåñåò ðëçñïöïñßåò:

            -
          +

          +

          Ðåñéóóüôåñåò ðëçñïöïñßåò:

          +
        -

        ÁëÞèåéá/ØÝìá

        -
          -

          Ðñïò áðÜíôçóç óå Ýíá åñþôçìá (ðïõ ìðïñåß íá ðåñéëáìâÜíåé ìéá åéêüíá) ï +

          ÁëÞèåéá/ØÝìá

          +
            +

            Ðñïò áðÜíôçóç óå Ýíá åñþôçìá (ðïõ ìðïñåß íá ðåñéëáìâÜíåé ìéá åéêüíá) ï áíôáðïêñéíüìåíïò åðéëÝãåé ìåôáîý: ÁëÞèåéá/ØÝìá. -

            -

            Ðåñéóóüôåñåò ðëçñïöïñßåò:

            -
          +

          +

          Ðåñéóóüôåñåò ðëçñïöïñßåò:

          +
        -

        Ôõ÷áßá

        -
          -

          (Äåí Ý÷åé åöáñìïóôåß áêüìá). ÅðéôñÝðåé ôçí åðéëïãÞ åíüò áñéèìïý áðü Üëëåò ôéò Üëëåò áñùôÞóåéò ìéá åê ôùí +

          Ôõ÷áßá

          +
            +

            (Äåí Ý÷åé åöáñìïóôåß áêüìá). ÅðéôñÝðåé ôçí åðéëïãÞ åíüò áñéèìïý áðü Üëëåò ôéò Üëëåò áñùôÞóåéò ìéá åê ôùí ïðïßùí äéáëÝãåôáé ôõ÷áßá êÜèå öïñ´áðïõ Ýíáò ìáèçôÞò ðñïóðáèåß ôï quiz. -

            -

            Ðåñéóóüôåñåò ðëçñïöïñßåò:

            -
          +

          +

          Ðåñéóóüôåñåò ðëçñïöïñßåò:

          +
        diff --git a/lang/el/help/quiz/random.html b/lang/el/help/quiz/random.html index 9f35a0d7218..2b4bc2bf03d 100644 --- a/lang/el/help/quiz/random.html +++ b/lang/el/help/quiz/random.html @@ -1,3 +1,3 @@ -

        Ôõ÷áßá åñþôçóç

        +

        Ôõ÷áßá åñþôçóç

        diff --git a/lang/el/help/quiz/repeatattempts.html b/lang/el/help/quiz/repeatattempts.html index 96d54ba194d..c1839787a4d 100755 --- a/lang/el/help/quiz/repeatattempts.html +++ b/lang/el/help/quiz/repeatattempts.html @@ -1 +1,8 @@ -

        ÊÜèå ðñïóðÜèåéá âáóßæåôáé óôçí ðñïçãïýìåíç

        Áí ïé ðïëëáðëÝò ðñïóðÜèåéåò åðéôñÝðïíôáé êáé áõôÞ ç ðáñÜìåôñïò åßíáé êáèïñéóìÝíç óôï Íáé, ôüôå êÜèå íÝá ðñïóðÜèåéá èá ðåñéÝ÷åé ôá áðïôåëÝóìáôá ôçò ðñïçãïýìåíçò. Áõôü åðéôñÝðåé ó' Ýíá êïõßæ íá ïëïêëçñùèåß Ýðåéôá áðü ìåñéêÝò ðñïóðÜèåéåò.

        Ãéá íá áíáíåþíåôáé ôï êïõßæ ìå êÜèå ðñïóðÜèåéá, åðÝëåîå ¼÷é ãé' áõôÞ ôçí ðáñÜìåôñï.

        \ No newline at end of file +

        ÊÜèå ðñïóðÜèåéá âáóßæåôáé óôçí ðñïçãïýìåíç

        + +

        Áí ïé ðïëëáðëÝò ðñïóðÜèåéåò åðéôñÝðïíôáé êáé áõôÞ ç ðáñÜìåôñïò åßíáé êáèïñéóìÝíç + óôï Íáé, ôüôå êÜèå íÝá ðñïóðÜèåéá èá ðåñéÝ÷åé ôá áðïôåëÝóìáôá + ôçò ðñïçãïýìåíçò. Áõôü åðéôñÝðåé ó' Ýíá êïõßæ íá ïëïêëçñùèåß Ýðåéôá áðü ìåñéêÝò + ðñïóðÜèåéåò.

        +

        Ãéá íá áíáíåþíåôáé ôï êïõßæ ìå êÜèå ðñïóðÜèåéá, åðÝëåîå ¼÷é + ãé' áõôÞ ôçí ðáñÜìåôñï.

        diff --git a/lang/el/help/quiz/review.html b/lang/el/help/quiz/review.html index 3fcbac78042..851e1d96103 100644 --- a/lang/el/help/quiz/review.html +++ b/lang/el/help/quiz/review.html @@ -1,9 +1,9 @@ -

        ÅðéôñÝðåé åðéóêüðçóç ìþëéò ôï quiz ôåëåéþóå

        +

        ÅðéôñÝðåé åðéóêüðçóç ìþëéò ôï quiz ôåëåéþóå

        + +

        ÅÜí åíåñãïðïéÞóåôå áõôÞ ôçí åðéëïãÞ, ôüôå ïé ìáèçôÝò èá åßíáé éêáíïß + íá îáíáäïýí ôéò ðñïçãïýìåíåò ðñïóðÜèåßò ôïõò ãéá áõôÞ ôçí åñþôçóç.

        + +

        Áõôü åíåñãïðïéåßôáé, ìüíï üôáí ï äéáãùíéóìüò åñùôÞóåùí ôåëåéþóåé.

        -

        ÅÜí åíåñãïðïéÞóåôå áõôÞ ôçí åðéëïãÞ, ôüôå ïé ìáèçôÝò èá åßíáé éêáíïß - íá îáíáäïýí ôéò ðñïçãïýìåíåò ðñïóðÜèåßò ôïõò ãéá áõôÞ ôçí åñþôçóç.

        -

        -

        Áõôü åíåñãïðïéåßôáé, ìüíï üôáí ï äéáãùíéóìüò åñùôÞóåùí ôåëåéþóåé.

        -

        diff --git a/lang/el/help/quiz/shortanswer.html b/lang/el/help/quiz/shortanswer.html index 25879ff5954..5a65d69e5cf 100644 --- a/lang/el/help/quiz/shortanswer.html +++ b/lang/el/help/quiz/shortanswer.html @@ -1,13 +1,13 @@ -

        ÅñùôÞóåéò óýíôïìçò áðÜíôçóçò

        +

        ÅñùôÞóåéò óýíôïìçò áðÜíôçóçò

        -

        Ðñïò áðÜíôçóç óå Ýíá åñþôçìá (ðïõ ìðïñåß íá ðåñéëáìâÜíåé ìéá åéêüíá) ï +

        Ðñïò áðÜíôçóç óå Ýíá åñþôçìá (ðïõ ìðïñåß íá ðåñéëáìâÜíåé ìéá åéêüíá) ï áíôáðïêñéíüìåíïò ãñÜöåé ìéá ëÝîç Þ ìéá óýíôïìç öñÜóç. -

        -

        Ìðïñåß íá õðÜñ÷ïõí áñêåôÝò ðéèáíÝò óùóôÝò áðáíôÞóåéò, êÜèå ìßá ìå äáöïñåôéêü + +

        Ìðïñåß íá õðÜñ÷ïõí áñêåôÝò ðéèáíÝò óùóôÝò áðáíôÞóåéò, êÜèå ìßá ìå äáöïñåôéêü âáèìü. ÅÜí Ý÷åé åðéëå÷èåß ç "ÄéáöïñÜ Ðåæþí / Êåöáëáßùí", ôüôå ìðïñåß íá Ý÷åéò äéáöïñåôéêïýò ðüíôïõò áí áðáíôÞóåéò "ËÝîç" Þ "ëÝîç". -

        -

        Ïé áðáíôÞóåéò óáò óõãêñßíïíôáé áêñéâþò, ãé' áõôü íá åßóôå ðïëý ðñïóåêôéêïß ìå ôç óýíôáîÞ óáò! -

        + +

        Ïé áðáíôÞóåéò óáò óõãêñßíïíôáé áêñéâþò, ãé' áõôü íá åßóôå ðïëý ðñïóåêôéêïß ìå ôç óýíôáîÞ óáò! + diff --git a/lang/el/help/quiz/timeopen.html b/lang/el/help/quiz/timeopen.html index 5a90dafa863..3a70eaa2454 100644 --- a/lang/el/help/quiz/timeopen.html +++ b/lang/el/help/quiz/timeopen.html @@ -1,7 +1,7 @@ -

        ¢íïéãìá êáé êëåßóéìï ôïõ äéáãùíéóìïý åñùôÞóåùí

        +

        ¢íïéãìá êáé êëåßóéìï ôïõ äéáãùíéóìïý åñùôÞóåùí

        + +

        Ìðïñåßò íá êáèïñßóåéò ôï ÷ñüíï üðïõ ïé ìáèçôÝò èá ìðïñïýí íá êÜíïõí ðñïóðÜèåéåò óôï äéáãùíéóìüò åñùôÞóåùí. + +

        Ðñßí ôçí Ýíáñîç êáé ìåôÜ ôï êëåßóéìï ôïõ äéáãùíéóìïý , ïé åñùôÞóåéò äåí èá åßíáé äéáèÝóéìåò. -

        Ìðïñåßò íá êáèïñßóåéò ôï ÷ñüíï üðïõ ïé ìáèçôÝò èá ìðïñïýí íá êÜíïõí ðñïóðÜèåéåò óôï äéáãùíéóìüò åñùôÞóåùí. -

        -

        Ðñßí ôçí Ýíáñîç êáé ìåôÜ ôï êëåßóéìï ôïõ äéáãùíéóìïý , ïé åñùôÞóåéò äåí èá åßíáé äéáèÝóéìåò. -

        diff --git a/lang/el/help/quiz/truefalse.html b/lang/el/help/quiz/truefalse.html index c12685d1fc7..0800c5bf4d3 100644 --- a/lang/el/help/quiz/truefalse.html +++ b/lang/el/help/quiz/truefalse.html @@ -1,13 +1,13 @@ -

        ÅñùôÞóåéò ÁëÞèåéá/ØÝìá

        +

        ÅñùôÞóåéò ÁëÞèåéá/ØÝìá

        -

        Ðñïò áðÜíôçóç óå Ýíá åñþôçìá (ðïõ ìðïñåß íá ðåñéëáìâÜíåé ìéá åéêüíá) ï +

        Ðñïò áðÜíôçóç óå Ýíá åñþôçìá (ðïõ ìðïñåß íá ðåñéëáìâÜíåé ìéá åéêüíá) ï áíôáðïêñéíüìåíïò åðéëÝãåé ìåôáîý ÁëÞèåéá/ØÝìá. -

        -

        ÅÜí åßíáé åíåñãïðïéçìÝíç ç åðéóôñïöÞ ìçíýìáôïò åñþôçóçò, ôüôå Ýíá êáôÜëëçëï + +

        ÅÜí åßíáé åíåñãïðïéçìÝíç ç åðéóôñïöÞ ìçíýìáôïò åñþôçóçò, ôüôå Ýíá êáôÜëëçëï ìÞíõìá åìöáíßæåôáé ìåôÜ ôçí áðÜíôçóç ôçò åñþôçóçò. Ãéá ðáñÜäåéãìá, åÜí ç óùóôÞ áðÜíôçóç åßíáé "ØÝìá" áëëÜ Ý÷åôå áðáíôÞóåé "ÁëÞèåéá" ôüôå åìöáíßæåôáé ôï ìÞíõìá åðéóôñïöÞò "ÁëÞèåéá". -

        +

        diff --git a/lang/el/help/reading.html b/lang/el/help/reading.html index 32981e32bf8..354270e4a23 100644 --- a/lang/el/help/reading.html +++ b/lang/el/help/reading.html @@ -1,13 +1,13 @@ -

        ÄéáâÜæïíôáò

        +

        ÄéáâÜæïíôáò

        -

        ¼ôáí äéáâÜæåôå êåßìåíá ðïý ãñÞãïñá åßíáé óõ÷íü öáéíüìåíï íá êáôáëáâÝíåôå ëÜèïò áõôÜ - ðïõ ðñïóðáèåß íá ðåß ï óõããñáöÝáò.

        +

        ¼ôáí äéáâÜæåôå êåßìåíá ðïý ãñÞãïñá åßíáé óõ÷íü öáéíüìåíï íá êáôáëáâÝíåôå ëÜèïò áõôÜ + ðïõ ðñïóðáèåß íá ðåß ï óõããñáöÝáò.

        -

        Ãéá íá áðïöåýãïíôáé ïé ðáñåîçãÞóåéò, äéáâÜóôå ðñïóåêôéêÜ áõôÜ ðïõ ëÝåé ï óõããñáöÝáò êáé ðñïóðáèåßóôå - íá äåßôå ôá ðñÜãìáôá áðï ôçí äéêÞ ôïõ ïðôéêÞ ãùíßá.

        +

        Ãéá íá áðïöåýãïíôáé ïé ðáñåîçãÞóåéò, äéáâÜóôå ðñïóåêôéêÜ áõôÜ ðïõ ëÝåé ï óõããñáöÝáò êáé ðñïóðáèåßóôå + íá äåßôå ôá ðñÜãìáôá áðï ôçí äéêÞ ôïõ ïðôéêÞ ãùíßá.

        -

        Ìðïñåß íá óáò âïçèÞóåé, áí óêåöôåßôå ôé ÄÅÍ åßðå ï óõããñáöÝáò Þ ôé Üöçóå õðï áìöéóâÞôçóç - - áõôü ìðïñåß íá óáò âïçèÞóåé íá ó÷çìáôßóåôå åñùôÞóåéò óôï ìõáëü óáò.

        +

        Ìðïñåß íá óáò âïçèÞóåé, áí óêåöôåßôå ôé ÄÅÍ åßðå ï óõããñáöÝáò Þ ôé Üöçóå õðï áìöéóâÞôçóç + - áõôü ìðïñåß íá óáò âïçèÞóåé íá ó÷çìáôßóåôå åñùôÞóåéò óôï ìõáëü óáò.

        -

        -

        +

        +

        diff --git a/lang/el/help/resource/index.html b/lang/el/help/resource/index.html index bb2a0f2a33f..3d867022052 100755 --- a/lang/el/help/resource/index.html +++ b/lang/el/help/resource/index.html @@ -1 +1,7 @@ -

        Åíüôçôá Ðüñùí

        \ No newline at end of file +

        Åíüôçôá Ðüñùí

        + + diff --git a/lang/el/help/resource/mods.html b/lang/el/help/resource/mods.html index cd18d5ea774..ca931ce7458 100755 --- a/lang/el/help/resource/mods.html +++ b/lang/el/help/resource/mods.html @@ -1 +1,8 @@ -

         Ðüñïé

          Ïé ðüñïé åßíáé ðåñéå÷üìåíï: ðëçñïöïñßåò ðïõ èÝëåé íá ðåñÜóåé óôï ìÜèçìá ï êáèçãçôÞò. ÁõôÜ ìðïñåß íá åßíáé ðñïêáèïñéóìÝíá áñ÷åßá öïñôùìÝíá óôïí åîõðçñåôçôÞ ôïõ ìáèÞìáôïò, óåëßäåò åðåîåñãáóìÝíåò áðåõèåßáò óôï Moodle Þ åîùôåñéêÝò éóôïóåëßäåò äçìéïõñãçìÝíåò ãéá íá áðïôåëïýí ìÝñïò áõôïý ôïõ ìáèÞìáôïò.

        \ No newline at end of file +

         Ðüñïé

        +
          +

          Ïé ðüñïé åßíáé ðåñéå÷üìåíï: ðëçñïöïñßåò ðïõ èÝëåé íá ðåñÜóåé óôï ìÜèçìá ï + êáèçãçôÞò. ÁõôÜ ìðïñåß íá åßíáé ðñïêáèïñéóìÝíá áñ÷åßá öïñôùìÝíá óôïí åîõðçñåôçôÞ + ôïõ ìáèÞìáôïò, óåëßäåò åðåîåñãáóìÝíåò áðåõèåßáò óôï Moodle Þ åîùôåñéêÝò éóôïóåëßäåò + äçìéïõñãçìÝíåò ãéá íá áðïôåëïýí ìÝñïò áõôïý ôïõ ìáèÞìáôïò.

          +
        + diff --git a/lang/el/help/resource/program.html b/lang/el/help/resource/program.html index 1e32db9da11..64d7842442b 100755 --- a/lang/el/help/resource/program.html +++ b/lang/el/help/resource/program.html @@ -1 +1,17 @@ -

        Ðüñïé ÐñïãñÜììáôïò

        ¸íáò ðüñïò ÐñïãñÜììáôïò åßíáé Ýíáò åîùôåñéêüò ðüñïò ðïõ ìðïñåß íá äÝ÷åôáé äåäïìÝíá áðü ôï Moodle.

        Ôá äåäïìÝíá ðåñíïýí ìÝóá áðü ôï HTTP GET (óáí ìÝñïò ôïõ URL) êáé ðåñéëáìâÜíïõí:

        • extern_nav: ôï URL áðü ôï ïðïßï êáëïýíôáé ïé ðüñïé
        • extern_usr: ôï üíïìá ÷ñÞóôç ôïõ ôñÝ÷ïíôïò ÷ñÞóôç
        • extern_nam: ôï ðëÞñåò üíïìá ôïõ ôñÝ÷ïíôïò ÷ñÞóôç
        • extern_tim: ç ôñÝ÷ïõóá þñá
        • extern_pwd: Ýíáò ìïíáäéêüò êùäéêüò ðñüóâáóçò

        ¼ëá áõôÜ ìå óêïðü íá îáíáåëåã÷èïýí êáðïéá óôéãìÞ óôï Üìåóï ìÝëëïí.

        \ No newline at end of file +

        Ðüñïé ÐñïãñÜììáôïò

        + +

        ¸íáò ðüñïò ÐñïãñÜììáôïò åßíáé Ýíáò åîùôåñéêüò ðüñïò ðïõ ìðïñåß íá äÝ÷åôáé äåäïìÝíá + áðü ôï Moodle.

        + +

        Ôá äåäïìÝíá ðåñíïýí ìÝóá áðü ôï HTTP GET (óáí ìÝñïò ôïõ URL) êáé ðåñéëáìâÜíïõí:

        + +
          +
        • extern_nav: ôï URL áðü ôï ïðïßï êáëïýíôáé ïé ðüñïé +
        • extern_usr: ôï üíïìá ÷ñÞóôç ôïõ ôñÝ÷ïíôïò ÷ñÞóôç +
        • extern_nam: ôï ðëÞñåò üíïìá ôïõ ôñÝ÷ïíôïò ÷ñÞóôç +
        • extern_tim: ç ôñÝ÷ïõóá þñá +
        • extern_pwd: Ýíáò ìïíáäéêüò êùäéêüò ðñüóâáóçò +
        + +

        ¼ëá áõôÜ ìå óêïðü íá îáíáåëåã÷èïýí êáðïéá óôéãìÞ óôï Üìåóï ìÝëëïí.

        + diff --git a/lang/el/help/resource/resourcetype.html b/lang/el/help/resource/resourcetype.html index 6a595fd320f..0404f4d4634 100644 --- a/lang/el/help/resource/resourcetype.html +++ b/lang/el/help/resource/resourcetype.html @@ -1,28 +1,27 @@ -

        Ôýðïò ðëçñïöïñéáò

        +

        Ôýðïò ðëçñïöïñéáò

        -

        Ïé ðçãÝò ðëçñïöïñéþí åßíáé ïðïéïõäÞðïôå ðåñéå÷ïìÝíïõ ìðïñåßôå íá öáíôáóôåßôå. Áõôïß åßíáé ïé äéÜöïñåôéêïß ôýðïé, +

        Ïé ðçãÝò ðëçñïöïñéþí åßíáé ïðïéïõäÞðïôå ðåñéå÷ïìÝíïõ ìðïñåßôå íá öáíôáóôåßôå. Áõôïß åßíáé ïé äéÜöïñåôéêïß ôýðïé, ïé ïðïßïé êáèïñßæïõí êõñßùò ôïí ôñüðï ìå ôï ïðïßï èá ðñïóðåëáýíïíôáé ôá ðåñéå÷üìåíá: -

        -

        Áðëü êåßìåíï - Ï åõêïëüôåñïò ôýðïò. Ìðïñåßôå áðëÜ íá ãñÜøåôå (åðåîåñãáóôåßôå) ôç óåëßäá ìÝóá óå ìßá öüñìá + +

        Áðëü êåßìåíï - Ï åõêïëüôåñïò ôýðïò. Ìðïñåßôå áðëÜ íá ãñÜøåôå (åðåîåñãáóôåßôå) ôç óåëßäá ìÝóá óå ìßá öüñìá óôçí åðüìåíç óåëßäá. ÌåñéêÜ áðü áõôÜ ðïõ èá ãñÜøåôå èá îáíáó÷çìáôéóôïýí áõôüìáôá, üðùò áêñéâþò êáé óôéò äçìïóéåýóåéò óôéò ïìÜäåò óõæçôÞóåùí. Äåßôå ôçí âïÞèåéá ãéá ôçí ðëçêñïëüãçóç êåéìÝíïõ: -

        -

        HTML êåßìåíï - ãéá ðßï ðñï÷ùñçìÝíïõò ÷ñÞóôåò. Êáìßá áõôüìáôç äéÜôáîç äåí åêôåëåßôáé, + +

        HTML êåßìåíï - ãéá ðßï ðñï÷ùñçìÝíïõò ÷ñÞóôåò. Êáìßá áõôüìáôç äéÜôáîç äåí åêôåëåßôáé, ðñÝðåé íá ôá êÜíåôå üëá ìüíïé óáò ÷ñçóéìïðïéþíôáò HTML êþäéêá. -

        -

        ÁíáöïñÜ - ìéá áêáäçìáúêÞ áíáöïñÜ óå Ýíá ðåñéïäéêü Þ Ýíá âéâëßï. -

        -

        ÅðáíáöïñôùìÝíï áñ÷åßï - åìöáíßæåé ïðïéïäÞðïôå áñ÷åßï Ý÷åôå öÝñåé óôï ìÜèçìá. ÄÝò ôï ôìÞìá "Áñ÷åßá". -

        -

        Óýíäåóìïò äéêôýïõ - ¸íáò óýíäåóìïò êÜðïõ óôï äéáäßêôõï. ¼ôáí êÜðïéïò êÜíåé êëßê óå áõôÞ ôçí ðçãÞ ðëçñïöïñéþí + +

        ÁíáöïñÜ - ìéá áêáäçìáúêÞ áíáöïñÜ óå Ýíá ðåñéïäéêü Þ Ýíá âéâëßï. + +

        ÅðáíáöïñôùìÝíï áñ÷åßï - åìöáíßæåé ïðïéïäÞðïôå áñ÷åßï Ý÷åôå öÝñåé óôï ìÜèçìá. ÄÝò ôï ôìÞìá "Áñ÷åßá". + +

        Óýíäåóìïò äéêôýïõ - ¸íáò óýíäåóìïò êÜðïõ óôï äéáäßêôõï. ¼ôáí êÜðïéïò êÜíåé êëßê óå áõôÞ ôçí ðçãÞ ðëçñïöïñéþí èá ìåôáöåñèåß Ýîá áðü ôï ìÜèçìá (ç óåëßäá ðïõ èÝëåôå èá ãåìßóåé ôï ðáñÜèõñï ôïõ browser). -

        -

        Éóôïóåëßäá - ¸íáò óýíäåóìïò êÜðïõ óôï äéáäßêôõï. ¼ðùò ï ðñïçãïýìåíïò ôýðïò, áõôü + +

        Éóôïóåëßäá - ¸íáò óýíäåóìïò êÜðïõ óôï äéáäßêôõï. ¼ðùò ï ðñïçãïýìåíïò ôýðïò, áõôü èá åìöáíßóåé ìéá éóôïóåëßäá. Áíôßèåôá ìå ôïí ðñïçãïýìåíï ôýðï üìùò, ç óåëßäá èá åìöáíéóôåß ìÝóá óå Ýíá frame, óáí íá Þôáí åíïðïéçìÝíç ìå ôï ìÜèçìá. -

        -

        Ðñüãñáììá - Ýíá åîùôåñéêü ðñüãñáììá ðïõ èÝëåé íá ôïõ ðåñáóôïýí ðëçñïöïñßåò ó÷åôéêÜ ìå ôï + +

        Ðñüãñáììá - Ýíá åîùôåñéêü ðñüãñáììá ðïõ èÝëåé íá ôïõ ðåñáóôïýí ðëçñïöïñßåò ó÷åôéêÜ ìå ôï ìå ôïí ôñÝ÷ïíôá ÷ñÞóôç ôïõ Moodle êáé ôï ôñÝ÷ïí ìÜèçìá. Áõôü åðéôñÝðåé óå åîùôåñéêÝò åöáñìïãÝò ôïõ äéêôýïõ íá óõíåñãÜæïíôáé ìå ôï Moodle. -

        \ No newline at end of file diff --git a/lang/el/help/resource/scales.html b/lang/el/help/resource/scales.html index 756ab55e85f..156b05b4e45 100755 --- a/lang/el/help/resource/scales.html +++ b/lang/el/help/resource/scales.html @@ -1 +1,21 @@ -

        Êëßìáêåò

        Ïé êáèçãçôÝò ìðïñïýí íá äçìéïõñãÞóïõí íÝåò êëßìáêåò ãéá íá ôéò ÷ñçóéìïðïéÞóïõí óå Ýíá ìÜèçìá ãéá ïðïéáäÞðïôå äñáóôçñéüôçôá âáèìïëüãçóçò.

        Ôï üíïìá ôçò êëßìáêáò ðñÝðåé íá åßíáé ìéá öñÜóç ðïõ íá ôï ðñïóäéïñßæåé êáèáñÜ: áõôü èá åìöáíßæåôáé óôéò ëßóôåò åðéëïãÞò êëßìáêáò, üðùò êáé óôá êïõìðéÜ âïÞèåéáò åõáßóèçôïõ ðåñéå÷ïìÝíïõ.

        Ç ßäéá ç êëßìáêá êáèïñßæåôáé áðü ìéá ôáîéíïìçìÝíç ëßóôá ôéìþí, áðü ôéò áñíçôéêÝò ùò ôéò èåôéêÝò, ÷ùñéóìÝíç ìå êüììáôá. Ãéá ðáñÜäåéãìá:

        Áðïãïçôåõôéêüò, ¼÷é áñêåôÜ êáëüò, ÌÝôñéïò, Êáëüò, Ðïëý Êáëüò, ¶ñéóôïò!

        Ïé êëßìáêåò ðñÝðåé åðßóçò íá ðåñéëáìâÜíïõí ìéá êáëÞ ðåñéãñáöÞ ôïõ ôé óçìáßíåé êáé ðþò áíáìÝíåôáé íá ÷ñçóéìïðïéçèåß. ÁõôÞ ç ðåñéãñáöÞ èá åìöáíßæåôáé óôéò óåëßäåò âïÞèåéáò ãéá êáèçãçôÝò êáé ìáèçôÝò.

        ÔÝëïò, ìðïñåß íá õðÜñ÷ïõí ìéá Þ ðåñéóóüôåñåò "ÓôáèåñÝò" êëßìáêåò êáèïñéóìÝíåò óôï site óïõ áðü ôï äéá÷åéñéóôÞ ôïõ óõóôÞìáôïò. ÁõôÝò èá åßíáé äéáèÝóéìåò óå üëá ôá ìáèÞìáôá.

        \ No newline at end of file +

        Êëßìáêåò

        + +

        Ïé êáèçãçôÝò ìðïñïýí íá äçìéïõñãÞóïõí íÝåò êëßìáêåò ãéá íá ôéò ÷ñçóéìïðïéÞóïõí + óå Ýíá ìÜèçìá ãéá ïðïéáäÞðïôå äñáóôçñéüôçôá âáèìïëüãçóçò.

        + +

        Ôï üíïìá ôçò êëßìáêáò ðñÝðåé íá åßíáé ìéá öñÜóç ðïõ íá ôï ðñïóäéïñßæåé êáèáñÜ: + áõôü èá åìöáíßæåôáé óôéò ëßóôåò åðéëïãÞò êëßìáêáò, üðùò êáé óôá êïõìðéÜ âïÞèåéáò + åõáßóèçôïõ ðåñéå÷ïìÝíïõ.

        +

        Ç ßäéá ç êëßìáêá êáèïñßæåôáé áðü ìéá ôáîéíïìçìÝíç ëßóôá ôéìþí, áðü ôéò áñíçôéêÝò + ùò ôéò èåôéêÝò, ÷ùñéóìÝíç ìå êüììáôá. Ãéá ðáñÜäåéãìá:

        + +
        Áðïãïçôåõôéêüò, ¼÷é áñêåôÜ êáëüò, ÌÝôñéïò, Êáëüò, Ðïëý Êáëüò, + ¶ñéóôïò!
        + +

        Ïé êëßìáêåò ðñÝðåé åðßóçò íá ðåñéëáìâÜíïõí ìéá êáëÞ ðåñéãñáöÞ ôïõ ôé óçìáßíåé + êáé ðþò áíáìÝíåôáé íá ÷ñçóéìïðïéçèåß. ÁõôÞ ç ðåñéãñáöÞ èá åìöáíßæåôáé óôéò óåëßäåò + âïÞèåéáò ãéá êáèçãçôÝò êáé ìáèçôÝò.

        + +

        ÔÝëïò, ìðïñåß íá õðÜñ÷ïõí ìéá Þ ðåñéóóüôåñåò "ÓôáèåñÝò" êëßìáêåò + êáèïñéóìÝíåò óôï site óïõ áðü ôï äéá÷åéñéóôÞ ôïõ óõóôÞìáôïò. ÁõôÝò èá åßíáé + äéáèÝóéìåò óå üëá ôá ìáèÞìáôá.

        diff --git a/lang/el/help/resource/summary.html b/lang/el/help/resource/summary.html index 7c3872d2ecc..d7a1065338e 100644 --- a/lang/el/help/resource/summary.html +++ b/lang/el/help/resource/summary.html @@ -1,9 +1,9 @@ -

        ÄéáâÜæïíôáò ôç ðåñßëçøç

        +

        ÄéáâÜæïíôáò ôç ðåñßëçøç

        -

        Ç ðåñßëçøç åßíáé ìéá ðïëý óýíôïìç ðåñéãñáöÞ ôçò ðçãÞò ðëçñïöïñéþí.

        +

        Ç ðåñßëçøç åßíáé ìéá ðïëý óýíôïìç ðåñéãñáöÞ ôçò ðçãÞò ðëçñïöïñéþí. -

        Ìç ðñïóðáèÞóåôå íá ãñÜøåôå ðïëëÜ åäþ Þ íá óõìðåñéëáìâÜíåôå ôçí ßäéá ôç ðçãÞ -ðëçñïöïñéþí!

        +

        Ìç ðñïóðáèÞóåôå íá ãñÜøåôå ðïëëÜ åäþ Þ íá óõìðåñéëáìâÜíåôå ôçí ßäéá ôç ðçãÞ +ðëçñïöïñéþí! -

        Èá Ý÷åôå ìéá åõêáéñßá íá êáèïñßóåôå ôï ðåñéå÷üìåíï óôçí åðüìåíç óåëßäá.

        +

        Èá Ý÷åôå ìéá åõêáéñßá íá êáèïñßóåôå ôï ðåñéå÷üìåíï óôçí åðüìåíç óåëßäá. diff --git a/lang/el/help/richtext.html b/lang/el/help/richtext.html index 48cee84604e..9fb42754612 100644 --- a/lang/el/help/richtext.html +++ b/lang/el/help/richtext.html @@ -1,6 +1,6 @@ -

        Ãéá ôïí åìðëïõôéóìÝíï êåéìåíïãñÜöï ôçò HTML

        +

        Ãéá ôïí åìðëïõôéóìÝíï êåéìåíïãñÜöï ôçò HTML

        -

        Äéáèåóéìüôçôá: +

        Äéáèåóéìüôçôá: htmleditor) { print_string("htmleditordisabledadmin"); } else if (!$USER->htmleditor) { @@ -11,100 +11,100 @@ print_string("htmleditoravailable"); } ?> -

        +

        -

        Ï åìðëïõôéóìÝíïò êåéìåíïãñÜöïò ôçò HTML ðáñÝ÷åé Ýíá ðåñéâÜëëïí åðåîåñãáóßáò êåéìÝíïõ åìðåäùìÝíï óôçí - éóôïóåëßäá óáò ãéá íá óáò åðéôñÝðåé íá åðåîåñãÜæåóôå êåßìåíï ìå Ýíá äéáéóèçôéêü ôñüðï, êáé íá ðáñÜãåôáé HTML êþäéêá.

        +

        Ï åìðëïõôéóìÝíïò êåéìåíïãñÜöïò ôçò HTML ðáñÝ÷åé Ýíá ðåñéâÜëëïí åðåîåñãáóßáò êåéìÝíïõ åìðåäùìÝíï óôçí + éóôïóåëßäá óáò ãéá íá óáò åðéôñÝðåé íá åðåîåñãÜæåóôå êåßìåíï ìå Ýíá äéáéóèçôéêü ôñüðï, êáé íá ðáñÜãåôáé HTML êþäéêá. -

        Åêôüò áðü ôï íá ìïñöïðïéåß êåßìåíï , áõôüò ï êåéìåíïãñÜöïò ðáñÝ÷åé Ýíáí áñéèìü åðéðëÝïí ÷áñáêôçñéóôéêþí ðïõ ìðïñåß íá - âñåßôå åîáéñåôéêÜ ÷ñÞóéìá.

        +

        Åêôüò áðü ôï íá ìïñöïðïéåß êåßìåíï , áõôüò ï êåéìåíïãñÜöïò ðáñÝ÷åé Ýíáí áñéèìü åðéðëÝïí ÷áñáêôçñéóôéêþí ðïõ ìðïñåß íá + âñåßôå åîáéñåôéêÜ ÷ñÞóéìá. -

        ÅðéêïëëÞóôå êåßìåíï áðü Üëëåò ÅöáñìïãÝò

        -
          -

          Ìðïñåßôå íá êüøåôå êáé íá åðéêïëëÞóåôå åìðëïõôéóìÝíï êåßìåíï áðü Üëëåò åöáñìïãÝò ôùí Windows üðùò ôï Microsoft Word +

          ÅðéêïëëÞóôå êåßìåíï áðü Üëëåò ÅöáñìïãÝò

          +
            +

            Ìðïñåßôå íá êüøåôå êáé íá åðéêïëëÞóåôå åìðëïõôéóìÝíï êåßìåíï áðü Üëëåò åöáñìïãÝò ôùí Windows üðùò ôï Microsoft Word áðåõèåßáò óå áõôü ôïí åðåîåñãáóôÞ êåéìÝíïõ, êáé ï ó÷çìáôéóìüò ôïõ êåéìÝíïõ èá êñáôçèåß. ÁðëÜ ÷ñçóéìïðïéåßóôå ôá êáíïíéêÜ êïõìðßá - ãéá êüøéìï êáé åðéêüëëçóç óôïí browser óáò (Þ Control-C êáé Control-V).

            -
          + ãéá êüøéìï êáé åðéêüëëçóç óôïí browser óáò (Þ Control-C êáé Control-V). +
        -

        ÅéóÜãïíôáò åéêüíåò

        -
          -

          Åáí Ý÷åôå åéêüíåò ðïõ åìöáíßæïíôáé åßäç óå êÜðïéá éóôïóåëßäá êáé åßíáé ðñïóâÜóéìåò ìÝóù åíüò óõíäÝóìïõ, ìðïñåßôå íá -óõìðåñéëÜâåôå áõôÝò ôéò åéêüíåò óôá êåßìåíá óáò ÷ñçóéìïðïéþíôáò ôï êïõìðß "Insert Image".

          -
        +

        ÅéóÜãïíôáò åéêüíåò

        +
          +

          Åáí Ý÷åôå åéêüíåò ðïõ åìöáíßæïíôáé åßäç óå êÜðïéá éóôïóåëßäá êáé åßíáé ðñïóâÜóéìåò ìÝóù åíüò óõíäÝóìïõ, ìðïñåßôå íá +óõìðåñéëÜâåôå áõôÝò ôéò åéêüíåò óôá êåßìåíá óáò ÷ñçóéìïðïéþíôáò ôï êïõìðß "Insert Image". +

        -

        ÅéóÜãïíôáò ðßíáêåò

        -
          -

          Ãéá íá ðñïóèÝóåôå äéÜôáîç óôá êåßìåíá óáò, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï êïõìðß "Insert Tables"áðü ôçí ãñáììÞ åñãáëåßùí.

          -
        +

        ÅéóÜãïíôáò ðßíáêåò

        +
          +

          Ãéá íá ðñïóèÝóåôå äéÜôáîç óôá êåßìåíá óáò, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï êïõìðß "Insert Tables"áðü ôçí ãñáììÞ åñãáëåßùí. +

        -

        ÅéóÜãïíôáò óõíäÝóìïõò

        -
          -

          Ãéá íá äçìéïõñãÞóåôå Ýíá êáéíïýãñéï óýíäåóìï, êáôáñ÷ßí åéóÜãåôå ôï êåßìåíï ðïõ èÝëåôå íá ãßíåé óýíäåóìïò. +

          ÅéóÜãïíôáò óõíäÝóìïõò

          +
            +

            Ãéá íá äçìéïõñãÞóåôå Ýíá êáéíïýãñéï óýíäåóìï, êáôáñ÷ßí åéóÜãåôå ôï êåßìåíï ðïõ èÝëåôå íá ãßíåé óýíäåóìïò. Óôçí óõíÝ÷åéá åðéëÝîôå ôï êáé ðáôÞóôå óôï êïõìðß ôùí óõíäÝóìùí óôçí ãñáììÞ åñãáëåßùí. ÃñÜøôå ôçí äéêôõáêÞ äéåýèõíóç -ðïõ èÝëåôå íá åßíáé ï óýíäåóìïò óáò êáé Ýãéíå!

            -
          +ðïõ èÝëåôå íá åßíáé ï óýíäåóìïò óáò êáé Ýãéíå! +
        -

        ÅéóÜãïíôáò öáôóïýëåò (emoticons)

        -
          -

          Ãéá íá åéóÜãåôå áõôÜ ôá ìéêñÜ åéêïíßäéá óôá êåßìåíá óáò, ðáôÞóôå óå Ýíá áðü áõôÜ óôçí ãñáììÞ åñãáëåßùí. +

          ÅéóÜãïíôáò öáôóïýëåò (emoticons)

          +
            +

            Ãéá íá åéóÜãåôå áõôÜ ôá ìéêñÜ åéêïíßäéá óôá êåßìåíá óáò, ðáôÞóôå óå Ýíá áðü áõôÜ óôçí ãñáììÞ åñãáëåßùí. Èá åìöáíéóôåß ìéá ëßóôá ðïõ óáò ðéôñÝðåé íá äéáëÝîåôå áðü ôá áêüëïõèá åéêïíßäéá. (ÅíáëëáêôéêÜ, ìðïñåßôå íá ðëçêôñïëïãÞóåôå ôïí áíôßóôïé÷ï êþäéêá áðåõèåßò óôï êåßìåíï óáò êáé èá ìåôáó÷çìáôéóôåß -áñãüôåñá üôáí ôï êåßìåíï óáò èá åìöáíéóôåß).

            +áñãüôåñá üôáí ôï êåßìåíï óáò èá åìöáíéóôåß). @@ -113,56 +113,56 @@ - + - + - + - + - + - + - + - + - + - +
            - + - + - + - + - + - + - + - + - + - + - +
            ÷áìüãåëï:-):-)
            ìåãáëï ÷áìüãåëï - ãÝëéï:-D:-D
            êëåßóéìï ìáôéïý;-);-)
            áíÜìåéêôï:-/:-/
            óêåðôéêüV-.V-.
            ãëþóóá Ýîù:-P:-P
            ÷áëáñüB-)B-)
            Ýãêñéóç^-)^-)
            ïñèÜíïéêôá ìÜôéá8-)8-)
            Ýêðëçîç8-o8-o
            ëýðç:-(:-(
            óôåíï÷þñéá8-.8-.
            êïêêßíéóìá áðü íôñïðÞ:-I:-I
            öéëßá:-X:-X
            êëüïõí:o):o)
            ìáýñï ìÜôéP-|P-|
            èõìüò8-[8-[
            íåêñüòxx-Pxx-P
            íïéóôáãìÝíïò|-.|-.
            äéáâïëéêüò}-]}-]
            -
          +
        diff --git a/lang/el/help/survey/index.html b/lang/el/help/survey/index.html index eac3574c2de..445623a8937 100755 --- a/lang/el/help/survey/index.html +++ b/lang/el/help/survey/index.html @@ -1 +1,5 @@ -

        Åíüôçôá ¸ñåõíáò

        \ No newline at end of file +

        Åíüôçôá ¸ñåõíáò

        + + diff --git a/lang/el/help/survey/mods.html b/lang/el/help/survey/mods.html index c1ca98cb5f1..2bfa69918dd 100755 --- a/lang/el/help/survey/mods.html +++ b/lang/el/help/survey/mods.html @@ -1 +1,8 @@ -

         ¸ñåõíåò

          Ç åíüôçôá ¸ñåõíáò ðáñÝ÷åé Ýíáí áñéèìü åëåãìÝíùí ïñãÜíùí åñåõíþí ðïõ åßíáé ÷ñÞóéìá óôçí áîéïëüãçóç êáé ðáñáêßíçóç ôçò ìÜèçóçò óå online ðåñéâÜëëïíôá. Ïé êáèçãçôÝò ìðïñïýí íá ôá ÷ñçóéìïðïéÞóïõí ãéá íá óõëëÝîïõí äåäïìÝíá áðü ôïõò ìáèçôÝò ôïõò ôá ïðïßá ìðïñïýí íá ôïõò âïçèÞóïõí íá ìÜèïõí ôçí ôÜîç ôïõò êáé ôïí ôñüðï ðïõ äéäÜóêïõí.

        \ No newline at end of file +

         ¸ñåõíåò

        +
          +

          Ç åíüôçôá ¸ñåõíáò ðáñÝ÷åé Ýíáí áñéèìü åëåãìÝíùí ïñãÜíùí åñåõíþí ðïõ åßíáé + ÷ñÞóéìá óôçí áîéïëüãçóç êáé ðáñáêßíçóç ôçò ìÜèçóçò óå online ðåñéâÜëëïíôá. + Ïé êáèçãçôÝò ìðïñïýí íá ôá ÷ñçóéìïðïéÞóïõí ãéá íá óõëëÝîïõí äåäïìÝíá áðü ôïõò + ìáèçôÝò ôïõò ôá ïðïßá ìðïñïýí íá ôïõò âïçèÞóïõí íá ìÜèïõí ôçí ôÜîç ôïõò êáé + ôïí ôñüðï ðïõ äéäÜóêïõí.

          +
        diff --git a/lang/el/help/surveys.html b/lang/el/help/surveys.html index 12d6b03a48b..00c825cf4e2 100644 --- a/lang/el/help/surveys.html +++ b/lang/el/help/surveys.html @@ -1,48 +1,48 @@ -

        ÄéáèÝóéìåò ¸ñåõíåò

        +

        ÄéáèÝóéìåò ¸ñåõíåò

        -

        Ðñïò ôï ðáñüí, ôï Moodle ðñïóöÝñåé ìüíï óõãêåêñéìÝíïõò ôýðïõò Ýñåõíáò (ìåëëïíôéêÝò åêäüóåéò èá óáò åðéôñÝðïõí íá äçìéïõñãÞóåôå ôïõò äéêïýò óáò).

        +

        Ðñïò ôï ðáñüí, ôï Moodle ðñïóöÝñåé ìüíï óõãêåêñéìÝíïõò ôýðïõò Ýñåõíáò (ìåëëïíôéêÝò åêäüóåéò èá óáò åðéôñÝðïõí íá äçìéïõñãÞóåôå ôïõò äéêïýò óáò).

        -

        Ïé äéáèÝóéìåò Ýñåõíåò Ý÷ïõí åðéëåãåß óáí éäéáßôåñá ÷ñÞóéìåò ãéá ôçí áðïôßìçóç +

        Ïé äéáèÝóéìåò Ýñåõíåò Ý÷ïõí åðéëåãåß óáí éäéáßôåñá ÷ñÞóéìåò ãéá ôçí áðïôßìçóç äéêôõáêþí ðåñéâÜëëïíôùí ìÜèçóçò ôá ïðïßá ÷ñçóéìïðïéïýí ìéá äçìéïõñãéêÞ ðáéäáãùãéêÞ. Åßíáé ÷ñÞóéìá ãéá íá áíáãíùñßæïõí óõãêåêñéìÝíåò ôÜóåéò ïé ïðïßåò ìðïñïýí íá áíáðôýóóïíôáé ìåôáîý ôùí óõììåôå÷üíôùí. (Ãéá íá äåßôå ìéá äçìïóßåõóç üðïõ üëá áõôÜ ÷ñçóéìïðïéïýíôáé óå ðïëëÝò ëåðôïìÝñåéåò, äåßôå: -http://dougiamas.com/writing/herdsa2002)

        +http://dougiamas.com/writing/herdsa2002)

        -
        -

        COLLES - Constructivist On-Line Learning Environment Survey

        -
          +
          +

          COLLES - Constructivist On-Line Learning Environment Survey

          +

            Ôï COLLES áðïôåëåßôáé áðü 24 äçëþóåéò ïñãáíùìÝíåò óå 6 ïìÜäåò, êÜèå ìéá áðü ôéò ïðïßåò ìáò âïçèÜ íá áíáöåñèïýìå ìéá åñþôçóç êëåéäß ó÷åôéêÜ ìå ôçí ðïéüôçôá ôïõ äéêôõáêïý ìáèçóéáêïý ðåñéâÜëëïíôïò:

            - +
            - + - + - + - + - + - +
            ÓõíÜöåéáÓõíÜöåéá Ðüóï ó÷åôéêÞ (óõíáöÞò) åßíáé ç äéêôõáêÞ ìÜèçóç óå ó÷Ýóç ìå ôéò ðñáêôéêÝò ôùí êáèçãçôþí ðñïò ôïõò ìáèçôÝò;
            ÁìöéóâÞôçóç ÁìöéóâÞôçóç Ìðïñåß Ýíá äéêôõáêü ìáèçóéáêü ðåñéâÜëëïí íá åñåèßóåé ôçí êñéôéêÞ óêÝøç áìöéóâÞôçóçò ôùí ðáéäéþí;
            Áëëçëåðßäñáóç Áëëçëåðßäñáóç Óå ôé âáèìü ïé ìáèçôÝò óå åíá äéêôõáêü ìáèçóéáêü ðåñéâÜëëïí, åìðëÝêïíôáé óå Ýíá ðëïýóéï åêðáéäåõôéêü äéÜëïãï;
            ÕðïóôÞñéîç êáèçãçôþíÕðïóôÞñéîç êáèçãçôþí Ðüóï êáëÜ ïé êáèçãçôÝò åðéôñÝðïõí óôïõò ìáèçôÝò íá óõììåôÝ÷ïõí óå ìéá äéêôõáêÞ äéáäéêáóßá ìÜèçóçò;
            ÕðïóôÞñéîç áðü ôïõò óõììåôÝ÷ïíôåò ìáèçôÝòÕðïóôÞñéîç áðü ôïõò óõììåôÝ÷ïíôåò ìáèçôÝò ÐáñÝ÷åôáé åõáßóèçôç êáé åíèáñõíôéêÞ õðïóôÞñéîç áðü ôïõò óõììáèçôÝò;
            Åñìçíåßá Åñìçíåßá Êáôáëáâáßíïõí ðñáãìáôéêÜ ïé ìáèçôÝò êáé ïé êáèçãçôÝò ï Ýíá; ôïí Üëëïí óôç äéêôõáêÞ åðéêïéíùíßá?
            @@ -53,29 +53,29 @@

            Ôï COLLES Ý÷åé ó÷åäéáóôåß ãéá íá óáò åðéôñÝøåé íá åðéâëÝøåôå ôï åýñïò ìå ôï ïðïßï åßóôå óå èÝóç íá åêìåôáëëåõôåßôå ôéò äõíáôüôçôåò áëëçëåðßäñáóçò ôïõ ðáãêüóìéïõ éóôïý ãéá ôçí åìðëïêÞ ìáèçôþí óå äõíáìéêÝò ðñáêôéêÝò ìÜèçóçò.

            -

            +

            (ÁõôÝò ïé ðëçñïöïñßåò Ý÷ïõí äéáóêåõáóôåß áðü ôç óåëßäá COLLES. Ìðïñåßôå íá ìÜèåôå ðåñéóóüôåñá ó÷åôéêÜ ìå ôï COLLES êáé ôïõò óõããñáöåßò ôïõ óôï: -http://surveylearning.com/colles/)

            -
          +http://surveylearning.com/colles/)

          +
        -
        -

        ATTLS - Attitudes to Thinking and Learning Survey

        -
          +
          +

          ATTLS - Attitudes to Thinking and Learning Survey

          +
            -

            Ç èåùñßá ôùí 'äñüìùí ìÜèçóçò', ðïõ ðñïÝñ÷åôáé áðï ôçí Ýñåõíá ðÜíù óôá öýëá, (Belenky et al., 1986) ìáò äßíåé Ýíá åñãáëåßï ãéá ôïí Ýëåã÷ï ôçò ðïéüôçôáò ôïõ äéáëüãïõ ìÝóá óå Ýíá óõíåñãáôéêü ðåñéâÜëëïí.

            +

            Ç èåùñßá ôùí 'äñüìùí ìÜèçóçò', ðïõ ðñïÝñ÷åôáé áðï ôçí Ýñåõíá ðÜíù óôá öýëá, (Belenky et al., 1986) ìáò äßíåé Ýíá åñãáëåßï ãéá ôïí Ýëåã÷ï ôçò ðïéüôçôáò ôïõ äéáëüãïõ ìÝóá óå Ýíá óõíåñãáôéêü ðåñéâÜëëïí. -

            Ôï Attitudes Towards Thinking and Learning Survey (ATTLS) åßíáé Ýíá åñãáëåßï ðïõ Ý÷åé áíáðôõ÷èåß áðü ôïõò Galotti et al. (1999) ãéá íá ìåôñÞóåé ôï ðüóï êÜðïéï Üôïìï åßíáé Ýíáò 'óõíäåäåìÝíïò ãíþóôçò' (ÓÃ) or a 'áõôüíïìïò ãíþóôçò' (ÁÃ). +

            Ôï Attitudes Towards Thinking and Learning Survey (ATTLS) åßíáé Ýíá åñãáëåßï ðïõ Ý÷åé áíáðôõ÷èåß áðü ôïõò Galotti et al. (1999) ãéá íá ìåôñÞóåé ôï ðüóï êÜðïéï Üôïìï åßíáé Ýíáò 'óõíäåäåìÝíïò ãíþóôçò' (ÓÃ) or a 'áõôüíïìïò ãíþóôçò' (ÁÃ). -

            ¢íèñùðïé ìå õøçëÞ âáèìïëïãßá Óà óõíÞèùò âñßóêïõí ôç ìÜèçóç ðéï äéáóêåäáóôéêÞ êáé åßíáé ðéï óõíåñãÜóéìïé, êïéíùíéêïß êáé ðñüèõìïé íá ÷ôßóïõí ðÜíù óôéò éäÝåò Üëëùí. Áõôïß ðïõ Ý÷ïõí õøçëÞ âáèìïëïãßá Áà óõíÞèùò åßíáé ðéï åðéöõëáêôéêïß êáé Ý÷ïõí áíôéññÞóåéò óôç ìÜèçóç.

            +

            ¢íèñùðïé ìå õøçëÞ âáèìïëïãßá Óà óõíÞèùò âñßóêïõí ôç ìÜèçóç ðéï äéáóêåäáóôéêÞ êáé åßíáé ðéï óõíåñãÜóéìïé, êïéíùíéêïß êáé ðñüèõìïé íá ÷ôßóïõí ðÜíù óôéò éäÝåò Üëëùí. Áõôïß ðïõ Ý÷ïõí õøçëÞ âáèìïëïãßá Áà óõíÞèùò åßíáé ðéï åðéöõëáêôéêïß êáé Ý÷ïõí áíôéññÞóåéò óôç ìÜèçóç. -

            ¸ñåõíåò Ý÷ïõí äåßîåé ðùò áõôÝò ïé äýï ìïñöÝò ìÜèçóçò åßíáé áíåîÜñôçôåò ç ìßá áðü ôçí Üëëç (Galotti et al., 1999; Galotti et al., 2001). ÅðéðëÝïí, áíôéêáôïðôñßæïõí ìüíï ôç óôÜóç áðÝíáíôé óôç ìÜèçóç êáé ü÷é ôéò äõíáôüôçôåò ìÜèçóç Þ äéáíïçôéêÞ éêáíüôçôá.

            +

            ¸ñåõíåò Ý÷ïõí äåßîåé ðùò áõôÝò ïé äýï ìïñöÝò ìÜèçóçò åßíáé áíåîÜñôçôåò ç ìßá áðü ôçí Üëëç (Galotti et al., 1999; Galotti et al., 2001). ÅðéðëÝïí, áíôéêáôïðôñßæïõí ìüíï ôç óôÜóç áðÝíáíôé óôç ìÜèçóç êáé ü÷é ôéò äõíáôüôçôåò ìÜèçóç Þ äéáíïçôéêÞ éêáíüôçôá. -

            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.

            +

            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.

            -

            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.

            +

            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.

            -

            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.

            +

            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.

            -
          +
        diff --git a/lang/el/help/teachers.html b/lang/el/help/teachers.html index 0b67a6101df..c74436f489b 100644 --- a/lang/el/help/teachers.html +++ b/lang/el/help/teachers.html @@ -1,10 +1,10 @@ -

        ÅêðáéäåõôÝò

        +

        ÅêðáéäåõôÝò

        -

        ÁõôÞ ç óåëßäá äåß÷íåé Ýíáí êáôÜëïãï áíèñþðùí ðïõ Ý÷ïõí ïñéóôåß óáí "åêðáéäåõôÝò" óå áõôü ôï ìÜèçìá (áðü ôïí äéá÷åéñéóôÞ ôïõ óõóôÞìáôïò).

        +

        ÁõôÞ ç óåëßäá äåß÷íåé Ýíáí êáôÜëïãï áíèñþðùí ðïõ Ý÷ïõí ïñéóôåß óáí "åêðáéäåõôÝò" óå áõôü ôï ìÜèçìá (áðü ôïí äéá÷åéñéóôÞ ôïõ óõóôÞìáôïò). -

        Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå áõôÞ ôç öüñìá ãéá íá ïñßóåôå Ýíá ñüëï (ôßôëï) óå êÜèå Üôïìï, üðùò "ÊáèçãçôÞò", "ÅðéâëÝðùí", "Âïçèüò" êïê. ÁõôÜ èá åìöáíéóôïýí óôïí êáôÜëïãï ìáèçìÜôùí ôïõ äéêôõáêïý ôüðïõ êáé óôïí êáôÜëïãï áõôþí ðïõ óõììåôÝ÷ïõí. - Áí áöÞóåôå ôï ñüëï êåíü ôüôå èá ÷ñçóéìïðïéçèåß ç ðñïêáèïñéóìÝíç ëÝîç ãéá ôïí åêðáéäåõôÞ (áõôÞ ðïõ ïñßóôéêå óôç óåëßäá ñõèìßóåùí ôïõ ìáèÞìáôïò).

        +

        Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå áõôÞ ôç öüñìá ãéá íá ïñßóåôå Ýíá ñüëï (ôßôëï) óå êÜèå Üôïìï, üðùò "ÊáèçãçôÞò", "ÅðéâëÝðùí", "Âïçèüò" êïê. ÁõôÜ èá åìöáíéóôïýí óôïí êáôÜëïãï ìáèçìÜôùí ôïõ äéêôõáêïý ôüðïõ êáé óôïí êáôÜëïãï áõôþí ðïõ óõììåôÝ÷ïõí. + Áí áöÞóåôå ôï ñüëï êåíü ôüôå èá ÷ñçóéìïðïéçèåß ç ðñïêáèïñéóìÝíç ëÝîç ãéá ôïí åêðáéäåõôÞ (áõôÞ ðïõ ïñßóôéêå óôç óåëßäá ñõèìßóåùí ôïõ ìáèÞìáôïò). -

        Ìðïñåßôå íá ôáîéíïìÞóåôå áõôü ôïí êáôÜëïãï (íá ôïðïèåôÞóåôå ôïí êýñéï åêðáéäåõôÞ óôçí êïñõöÞ ôïõ êáôáëüãïõ ãéá ðáñÜäåéãìá). ÁðëÜ åðéëÝîôå áñéèìïýò áðü ôç óôÞëç "Ôáîéíüìçóç". Áöïý ðáôÞóåôå "ÁðïèÞêåõóç áëëáãþí" èá äåßôå ôç íÝá ôáîéíüìçóç.

        +

        Ìðïñåßôå íá ôáîéíïìÞóåôå áõôü ôïí êáôÜëïãï (íá ôïðïèåôÞóåôå ôïí êýñéï åêðáéäåõôÞ óôçí êïñõöÞ ôïõ êáôáëüãïõ ãéá ðáñÜäåéãìá). ÁðëÜ åðéëÝîôå áñéèìïýò áðü ôç óôÞëç "Ôáîéíüìçóç". Áöïý ðáôÞóåôå "ÁðïèÞêåõóç áëëáãþí" èá äåßôå ôç íÝá ôáîéíüìçóç. -

        ÓÇÌÅÉÙÓÇ:Ìéá åéäéêÞ ðåñßðôùóç åßíáé ç åðéëïãÞ "Áðüêñõøç" ãéá êÜðïéïí åêðáéäåõôÞ. Óå áõôÞ ôçí ðåñßðôùóç ï åêðáéäåõôÞò ÄÅ ÈÁ ÅÌÖÁÍÉÆÅÔÁÉ óôïí êáôÜëïãï ôùí ìáèçìÜôùí ç ôïí êáôÜëëïãï áõôþí ðïõ óõììåôÝ÷ïõí. Èá åßíáé "êñõììÝíïé" áðü ôïõò ìáèçôÝò (åêôüò êáé áí áíáñôÞóïõí ìçíýìáôá óôéò ïìÜäåò óõæçôÞóåùí êôë)

        +

        ÓÇÌÅÉÙÓÇ:Ìéá åéäéêÞ ðåñßðôùóç åßíáé ç åðéëïãÞ "Áðüêñõøç" ãéá êÜðïéïí åêðáéäåõôÞ. Óå áõôÞ ôçí ðåñßðôùóç ï åêðáéäåõôÞò ÄÅ ÈÁ ÅÌÖÁÍÉÆÅÔÁÉ óôïí êáôÜëïãï ôùí ìáèçìÜôùí ç ôïí êáôÜëëïãï áõôþí ðïõ óõììåôÝ÷ïõí. Èá åßíáé "êñõììÝíïé" áðü ôïõò ìáèçôÝò (åêôüò êáé áí áíáñôÞóïõí ìçíýìáôá óôéò ïìÜäåò óõæçôÞóåùí êôë) diff --git a/lang/el/help/text.html b/lang/el/help/text.html index fa25992d0f6..7220d894b7c 100644 --- a/lang/el/help/text.html +++ b/lang/el/help/text.html @@ -1,67 +1,67 @@ -

        ÂïÞèåéá óôçí óõããñáöÞ êåéìÝíïõ

        +

        ÂïÞèåéá óôçí óõããñáöÞ êåéìÝíïõ

        Ôï íá ãñÜöåôå êåßìåíï óôï Moodle äïõëåýåé ó÷åäüí ìå ôïí ôñüðï ðïõ èá ðåñéìÝíáôå, áëëÜ Ý÷åôå åðßóçò êáé ôçí äõíáôüôçôá íá óõìðåñéëÜâåôå "öáôóïýëåò", "äéåõèýíóåéò URL" êáé ìåñéêÝò HTML åôéêÝôåò óôï êåßìåíï óáò. -

        Öáôóïýëåò (emoticons)

        -
          -

          Ãéá íá åéóÜãåôå áõôÜ ôá ìéêñÜ åéêïíßäéá óôá êåßìåíá óáò, áðëÜ ãñÜøôå ôïí áíôßóôïé÷ï êþäéêá. Áõôïé ïé êþäéêåò -áðü ìüíïé ôïõò åßíáé óáí ìéêñÝò åéêüíåò åÜí ãõñßóåôå ôï êåöÜëé óáò áñéóôåñÜ êáèþò ôïõò êïéôÜôå.

          +

          Öáôóïýëåò (emoticons)

          +
            +

            Ãéá íá åéóÜãåôå áõôÜ ôá ìéêñÜ åéêïíßäéá óôá êåßìåíá óáò, áðëÜ ãñÜøôå ôïí áíôßóôïé÷ï êþäéêá. Áõôïé ïé êþäéêåò +áðü ìüíïé ôïõò åßíáé óáí ìéêñÝò åéêüíåò åÜí ãõñßóåôå ôï êåöÜëé óáò áñéóôåñÜ êáèþò ôïõò êïéôÜôå.

            @@ -70,78 +70,78 @@ HTML - + - + - + - + - + - + - + - + - + - +
            - + - + - + - + - + - + - + - + - + - + - +
            ÷áìüãåëï:-):-)
            ìåãáëï ÷áìüãåëï - ãÝëéï:-D:-D
            êëåßóéìï ìáôéïý;-);-)
            áíÜìåéêôï:-/:-/
            óêåðôéêüV-.V-.
            ãëþóóá Ýîù:-P:-P
            ÷áëáñüB-)B-)
            Ýãêñéóç^-)^-)
            ïñèÜíïéêôá ìÜôéá8-)8-)
            Ýêðëçîç8-o8-o
            ëýðç:-(:-(
            óôåíï÷þñéá8-.8-.
            êïêêßíéóìá áðü íôñïðÞ:-I:-I
            öéëßá:-X:-X
            êëüïõí:o):o)
            ìáýñï ìÜôéP-|P-|
            èõìüò8-[8-[
            íåêñüòxx-Pxx-P
            íïéóôáãìÝíïò|-.|-.
            äéáâïëéêüò}-]}-]
            -
          +
        -

        URLs

        -
          -

          ÊÜèå "ëÝîç" ðïõ áñ÷ßæåé ìå www. Þ http:// áõôüìáôá èá ìåôáôñÝðåôáé óå óýíäåóìü ðïõ ìðïñåß íá ðáôçèåß. -

          Ãéá ðáñÜäåéãìá: www.yahoo.com Þ http://curtin.edu -

        +

        URLs

        +
          +

          ÊÜèå "ëÝîç" ðïõ áñ÷ßæåé ìå www. Þ http:// áõôüìáôá èá ìåôáôñÝðåôáé óå óýíäåóìü ðïõ ìðïñåß íá ðáôçèåß. +

          Ãéá ðáñÜäåéãìá: www.yahoo.com Þ http://curtin.edu +

        -

        ÅôéêÝôåò HTML

        -
          -

          Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå Ýíá ðåñéïñéóìÝíï õðïóýíïëï áðü åôéêÝôåò ôçò HTML ãéá íá äþóåôå Ýìöáóç óôï êåßìåíï óáò. - - - - - - - - - - -
          ÅôéêÝôåò HTMLÐáñÜãïõí
          <B> bold </B> bold êåßìåíï
          <I> italic </I> italic êåßìåíï
          <U> underline </U> underlined êåßìåíï
          <FONT SIZE=1> ìéêñü </FONT> ìéêñü
          <FONT SIZE=4> ìåãÜëï </FONT> ìåãÜëï
          <FONT COLOR=green> ðáñÜäåéãìá </FONT> ðáñÜäåéãìá
          <UL><LI>Ýíá <LI>äýï </UL>
          • Ýíá
          • äõï
          <HR>
          -

        +

        ÅôéêÝôåò HTML

        +
          +

          Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå Ýíá ðåñéïñéóìÝíï õðïóýíïëï áðü åôéêÝôåò ôçò HTML ãéá íá äþóåôå Ýìöáóç óôï êåßìåíï óáò. + + + + + + + + + + +
          ÅôéêÝôåò HTMLÐáñÜãïõí
          <B> bold </B> bold êåßìåíï
          <I> italic </I> italic êåßìåíï
          <U> underline </U> underlined êåßìåíï
          <FONT SIZE=1> ìéêñü </FONT> ìéêñü
          <FONT SIZE=4> ìåãÜëï </FONT> ìåãÜëï
          <FONT COLOR=green> ðáñÜäåéãìá </FONT> ðáñÜäåéãìá
          <UL><LI>Ýíá <LI>äýï </UL>
          • Ýíá
          • äõï
          <HR>
          +

        diff --git a/lang/el/help/textformat.html b/lang/el/help/textformat.html index 890338a8777..9581f77f083 100644 --- a/lang/el/help/textformat.html +++ b/lang/el/help/textformat.html @@ -1,41 +1,41 @@ -

        Ìïñöïðïéüíôáò ôï êåßìåíï

        +

        Ìïñöïðïéüíôáò ôï êåßìåíï

        -

        ¼ôáí ãñÜöåôå êåßìåíï óôï Moodle õðÜñ÷ïõí ðñïò ôï ðáñüí äõï ó÷Þìáôá ðïõ ìðïñåßôå íá äéáëÝîåôå +

        ¼ôáí ãñÜöåôå êåßìåíï óôï Moodle õðÜñ÷ïõí ðñïò ôï ðáñüí äõï ó÷Þìáôá ðïõ ìðïñåßôå íá äéáëÝîåôå ãéá íá ðáñÜãåôå ôï êåßìåíï óáò, åîáñôÜôáé áðü ôçí åìðåéñßá óáò êáé áðü ôïí ôýðï ôïõ browser - ðïõ ÷ñçóéìïðïéåßôå.

        + ðïõ ÷ñçóéìïðïéåßôå. -

        ÓõíÞèùò ìðïñåßôå áðëÜ íá áöÝéíåôå áõôÝò ôéò ñõèìßóåéò ìüíåò ôïõò êáé ôá ðñÜãìáôá èá ðñÝðåé - íá äïõëÝõïõí üðùò ôá ðåñéìÝíåôå.

        +

        ÓõíÞèùò ìðïñåßôå áðëÜ íá áöÝéíåôå áõôÝò ôéò ñõèìßóåéò ìüíåò ôïõò êáé ôá ðñÜãìáôá èá ðñÝðåé + íá äïõëÝõïõí üðùò ôá ðåñéìÝíåôå. -

        1. Áõôüìáôï Ó÷Þìá ôïõ Moodle

        +

        1. Áõôüìáôï Ó÷Þìá ôïõ Moodle

        -
          -

          Áõôü ç ìïñöÞ åßíáéêáëýôåñç üôáí ÷ñçóéìïðïéåßôáé áðëÝò äéêôõáêÝò öüñìåò ãéá ôçí åéóáãùãÞ +

            +

            Áõôü ç ìïñöÞ åßíáéêáëýôåñç üôáí ÷ñçóéìïðïéåßôáé áðëÝò äéêôõáêÝò öüñìåò ãéá ôçí åéóáãùãÞ (áíôß ôïõ åìðëïõôéóìÝíïõ êåéìåíïãñÜöïõ ôçò HTML). ÁðëÜ ðëçêôñïëïãÞóôå êáíïíéêÜ ôï êåßìåíï, óáí íá - óôÝëíáôå Ýíá email.

            + óôÝëíáôå Ýíá email. -

            ¼ôáí áðïèçêåýóåôå ôï êåßìåíï óáò, ôï Moodle èá êÜíåé ìåñéêÜ ðñÜãìáôá áõôüìáôá - ãéá íá ìïñöïðïéÞóåé ôï êåßìåíï ãéá óáò.

            -

            Ãéá ðáñÜäåéãìá, URLs üðùò - http://yahoo.com Þ áêüìá êáé - www.yahoo.com èá áëëÜîïõí óå óõíäÝóìïõò. -

            Ôï ôÝëïò êÜèå ãñáììÞò ôïõ êåéìÝíïõ óáò èá äéáôçñçèåß, êáé êåíÝò ãñáììÝò èá áñ÷ßóïõí êáéíïýñãéåò ðáñáãñÜöïõò.

            -

            Öáôóïýëåò üðùò :-) èá ãßíïõí áõôüìáôá ôï ãñáöéêü ôïõò áíôßóôïé÷ï.

            -

            Ìðïñåßôå áêüìá êáé íá óõìðåñéëÜâåôå HTML êþäéêÜ åáí èÝëåôå êáé èá åìöáíéóôåß êáíïíéêÜ.

            -

            Ðåñéóóüôåñåò ðëçñïöïñßåò ãéáôçí áõôüìáôç ìïñöïðïßçóç ôïõ Moodle.

            -
          +

          ¼ôáí áðïèçêåýóåôå ôï êåßìåíï óáò, ôï Moodle èá êÜíåé ìåñéêÜ ðñÜãìáôá áõôüìáôá + ãéá íá ìïñöïðïéÞóåé ôï êåßìåíï ãéá óáò. +

          Ãéá ðáñÜäåéãìá, URLs üðùò + http://yahoo.com Þ áêüìá êáé + www.yahoo.com èá áëëÜîïõí óå óõíäÝóìïõò. +

          Ôï ôÝëïò êÜèå ãñáììÞò ôïõ êåéìÝíïõ óáò èá äéáôçñçèåß, êáé êåíÝò ãñáììÝò èá áñ÷ßóïõí êáéíïýñãéåò ðáñáãñÜöïõò. +

          Öáôóïýëåò üðùò :-) èá ãßíïõí áõôüìáôá ôï ãñáöéêü ôïõò áíôßóôïé÷ï. +

          Ìðïñåßôå áêüìá êáé íá óõìðåñéëÜâåôå HTML êþäéêÜ åáí èÝëåôå êáé èá åìöáíéóôåß êáíïíéêÜ. +

          Ðåñéóóüôåñåò ðëçñïöïñßåò ãéáôçí áõôüìáôç ìïñöïðïßçóç ôïõ Moodle.

          +
        -

        2. Ìïñöïðïßçóç HTML

        +

        2. Ìïñöïðïßçóç HTML

        -
          -

          ÁõôÞ ç ìïñöïðïßçóç õðïèÝôåé üôé ôï êåßìåíï åßíáé êáèáñÜ HTML. ÅÜí ÷ñçóéìïðïéåßôå ôïí êåéìåíïãñÜöï ôçò +

            +

            ÁõôÞ ç ìïñöïðïßçóç õðïèÝôåé üôé ôï êåßìåíï åßíáé êáèáñÜ HTML. ÅÜí ÷ñçóéìïðïéåßôå ôïí êåéìåíïãñÜöï ôçò HTML ãéá íá áëëÜîåôå ôï êåßìåíï óáò ôüôå áõôÞ åßíáé ç ðñïåðéëåãìÝíç ìïñöÞ - üëåò ïé åíôïëÝò óôçí ãñáììÞ - åñãáëåßùí ðáñÜãïõí HTML ãéá óáò.

            + åñãáëåßùí ðáñÜãïõí HTML ãéá óáò. -

            Áêüìá êáé áí äåí ÷ñçóéìïðïéåßôáé ôïí åìðëïõôéóìÝíï êåéìåíïãñÜöï ôçò HTML, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå HTML êþäéêá - óôï êåßìåíï óáò êáé èá ðáñïõóéáóôåß áêñéâþò üðùò óêïðåýåôáé.

            +

            Áêüìá êáé áí äåí ÷ñçóéìïðïéåßôáé ôïí åìðëïõôéóìÝíï êåéìåíïãñÜöï ôçò HTML, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå HTML êþäéêá + óôï êåßìåíï óáò êáé èá ðáñïõóéáóôåß áêñéâþò üðùò óêïðåýåôáé. -

            Áíôßèåôá ðñïó ôçí áõôüìáôç ìïñöïðïßçóç ôïõ Moodle, êáíÝíáò áõôïìáôéóìüò ìïñöïðïßçóçò äåí åêôåëåßôå. -

            Ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí HTML

            -

            Ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôïí åìðëïõôéóìÝíï êåéìåíïãñÜöï ôçò HTML

            -
          +

          Áíôßèåôá ðñïó ôçí áõôüìáôç ìïñöïðïßçóç ôïõ Moodle, êáíÝíáò áõôïìáôéóìüò ìïñöïðïßçóçò äåí åêôåëåßôå. +

          Ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí HTML

          +

          Ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôïí åìðëïõôéóìÝíï êåéìåíïãñÜöï ôçò HTML

          +
        diff --git a/lang/el/help/workshop/assessmentofexamples.html b/lang/el/help/workshop/assessmentofexamples.html index 840db207e2f..82cbecc0bcf 100755 --- a/lang/el/help/workshop/assessmentofexamples.html +++ b/lang/el/help/workshop/assessmentofexamples.html @@ -1 +1,10 @@ -

        Áîéïëüãçóç ôùí ðáñáäåéãìÜôùí ôùí êáèçãçôþí

        Áöïý ï êáèçãçôÞò õðïâÜëëåé ôá ðáñáäåßãìáôá åßíáé åõêïëüôåñï, áðü ôçí Üðïøç ôïõ êáèçãçôÞ, íá áîéïëïãÞóåé áõôÜ ôá ðáñáäåßãìáôá îå÷ùñéóôÜ. ÁõôÝò ïé áîéïëïãÞóåéò åßíáé éäéùôéêÝò ãéá ôïí êáèçãçôÞ, ÄÅÍ åßíáé åìöáíåßò óôïõò ìáèçôÝò êáôÜ ôç äéÜñêåéá ôçò áíÜèåóçò. Åßíáé, ùóôüóï, ÷ñÞóéìåò üôáí ï êáèçãçôÞò åîåôÜæåé ôéò áîéïëïãÞóåéò ôùí ðáñáäåéãìÜôùí ôùí ìáèçôþí. ¼ôáí âáèìïëïãåß, ï êáèçãçôÞò âëÝðåé ôç äéêÞ ôïõ åêôßìçóç óôï ðÜíù ìÝñïò ôçò óåëßäáò êáé ôçí åêôßìçóç ôïõ ìáèçôÞ óôï êÜôù ìÝñïò ôçò ßäéáò óåëßäáò. Ç "åðéðëÝïí" åêôßìçóç ëåéôïõñãåß óáí ðçãÞ áíáöïñÜò êáé ìéá õðåíèýìéóç ôùí âáóéêþí óçìåßùí ôïõ ðáñáäåßãìáôïò.

        \ No newline at end of file +

        Áîéïëüãçóç ôùí ðáñáäåéãìÜôùí ôùí êáèçãçôþí

        + +

        Áöïý ï êáèçãçôÞò õðïâÜëëåé ôá ðáñáäåßãìáôá åßíáé åõêïëüôåñï, áðü ôçí Üðïøç + ôïõ êáèçãçôÞ, íá áîéïëïãÞóåé áõôÜ ôá ðáñáäåßãìáôá îå÷ùñéóôÜ. ÁõôÝò ïé áîéïëïãÞóåéò + åßíáé éäéùôéêÝò ãéá ôïí êáèçãçôÞ, ÄÅÍ åßíáé åìöáíåßò óôïõò ìáèçôÝò êáôÜ ôç äéÜñêåéá + ôçò áíÜèåóçò. Åßíáé, ùóôüóï, ÷ñÞóéìåò üôáí ï êáèçãçôÞò åîåôÜæåé ôéò áîéïëïãÞóåéò + ôùí ðáñáäåéãìÜôùí ôùí ìáèçôþí. ¼ôáí âáèìïëïãåß, ï êáèçãçôÞò âëÝðåé ôç äéêÞ ôïõ + åêôßìçóç óôï ðÜíù ìÝñïò ôçò óåëßäáò êáé ôçí åêôßìçóç ôïõ ìáèçôÞ óôï êÜôù ìÝñïò + ôçò ßäéáò óåëßäáò. Ç "åðéðëÝïí" åêôßìçóç ëåéôïõñãåß óáí ðçãÞ áíáöïñÜò + êáé ìéá õðåíèýìéóç ôùí âáóéêþí óçìåßùí ôïõ ðáñáäåßãìáôïò.

        diff --git a/lang/el/help/workshop/gradingsubmissions.html b/lang/el/help/workshop/gradingsubmissions.html index 38e7479481f..11eec643994 100755 --- a/lang/el/help/workshop/gradingsubmissions.html +++ b/lang/el/help/workshop/gradingsubmissions.html @@ -1 +1,11 @@ -

        Âáèìïëüãçóç ôùí Õðïâïëþí ôùí Ìáèçôþí

        ÃåíéêÜ ï êáèçãçôÞò èÝëåé íá áîéïëïãÞóåé ôç äïõëåéÜ ðïõ Ý÷åé õðïâëçèåß áðü ôïõò ìáèçôÝò. Ïé åêôéìÞóåéò åßíáé åìöáíåßò óôïõò ìáèçôÝò êáé ðñÝðåé íá ðáñÝ÷ïõí ðëçñïöïñßåò ó÷åôéêÜ ìå ôï áðïôÝëåóìá ôçò äïõëåéÜò ôïõò.

        Ïé âáèìïß áõôþí ôùí åêôéìÞóåùí ìðïñïýí íá ÷ñçóéìïðïéçèïýí ìå äýï ôñüðïõò óôïí ôåëéêü õðïëïãéóìü. Ðñþôïí, ï ßäéïò ï âáèìüò ìðïñåß íá ÷ñçóéìïðïéçèåß óáí Ýíá (óçìáíôéêü) óõóôáôéêü óôïí ôåëéêü âáèìü. Äåýôåñïí, áõôïß ïé âáèìïß ìðïñïýí ðñïáéñåôéêÜ íá ðñïóôåèïýí óôçí ïìÜäá ôùí üìïéùí áîéïëïãÞóåùí êáé íá ÷ñçóéìïðïéçèïýí óáí Ýíáò "ñõèìéóôéêüò ðáñÜãïíôáò" áí ïé åêôéìÞóåéò ðéóôåýåôáé üôé åßíáé ðïëý øçëÝò Þ ðïëý ÷áìçëÝò.

        \ No newline at end of file +

        Âáèìïëüãçóç ôùí Õðïâïëþí ôùí Ìáèçôþí

        + +

        ÃåíéêÜ ï êáèçãçôÞò èÝëåé íá áîéïëïãÞóåé ôç äïõëåéÜ ðïõ Ý÷åé õðïâëçèåß áðü ôïõò + ìáèçôÝò. Ïé åêôéìÞóåéò åßíáé åìöáíåßò óôïõò ìáèçôÝò êáé ðñÝðåé íá ðáñÝ÷ïõí ðëçñïöïñßåò + ó÷åôéêÜ ìå ôï áðïôÝëåóìá ôçò äïõëåéÜò ôïõò.

        +

        Ïé âáèìïß áõôþí ôùí åêôéìÞóåùí ìðïñïýí íá ÷ñçóéìïðïéçèïýí ìå äýï ôñüðïõò óôïí + ôåëéêü õðïëïãéóìü. Ðñþôïí, ï ßäéïò ï âáèìüò ìðïñåß íá ÷ñçóéìïðïéçèåß óáí Ýíá + (óçìáíôéêü) óõóôáôéêü óôïí ôåëéêü âáèìü. Äåýôåñïí, áõôïß ïé âáèìïß ìðïñïýí ðñïáéñåôéêÜ + íá ðñïóôåèïýí óôçí ïìÜäá ôùí üìïéùí áîéïëïãÞóåùí êáé íá ÷ñçóéìïðïéçèïýí óáí + Ýíáò "ñõèìéóôéêüò ðáñÜãïíôáò" áí ïé åêôéìÞóåéò ðéóôåýåôáé üôé åßíáé + ðïëý øçëÝò Þ ðïëý ÷áìçëÝò.

        diff --git a/lang/el/help/workshop/index.html b/lang/el/help/workshop/index.html index af30b621f28..f921b25da53 100755 --- a/lang/el/help/workshop/index.html +++ b/lang/el/help/workshop/index.html @@ -1,106 +1,53 @@ -

        Åíüôçôá Åñãáóôçñßïõ

        - - - +

        Åíüôçôá Åñãáóôçñßïõ

        + diff --git a/lang/el/help/workshop/mods.html b/lang/el/help/workshop/mods.html index 4bb8945ab24..9f6d50a5f5c 100755 --- a/lang/el/help/workshop/mods.html +++ b/lang/el/help/workshop/mods.html @@ -1 +1,8 @@ -

         ÅñãáóôÞñéï

          Ôï ÅñãáóôÞñéï åßíáé Ýíá åßäïò áîéïëüãçóçò ìå ìéá ôåñÜóôéá ãêÜìá åðéëïãþí. ÅðéôñÝðåé óôïõò óõììåôÝ÷ïíôåò íá áîéïëïãÞóïõí ôéò ìåôáîý ôïõò åñãáóßåò, êáèþò êáé ôá õðïäåßãìáôá ôùí åñãáóéþí, ìå ðïëëïýò ôñüðïõò. Åðßóçò, óõíôïíßæåé ôç óõëëïãÞ êáé êáôáíïìÞ áõôþí ôùí åêôéìÞóåùí ìå äéÜöïñïõò ôñüðïõò. Óôçí åíüôçôá ÅñãáóôÞñéï óõìâÜëëåé ï Ray Kingdon.

        \ No newline at end of file +

         ÅñãáóôÞñéï

        +
          +

          Ôï ÅñãáóôÞñéï åßíáé Ýíá åßäïò áîéïëüãçóçò ìå ìéá ôåñÜóôéá ãêÜìá åðéëïãþí. + ÅðéôñÝðåé óôïõò óõììåôÝ÷ïíôåò íá áîéïëïãÞóïõí ôéò ìåôáîý ôïõò åñãáóßåò, êáèþò + êáé ôá õðïäåßãìáôá ôùí åñãáóéþí, ìå ðïëëïýò ôñüðïõò. Åðßóçò, óõíôïíßæåé ôç + óõëëïãÞ êáé êáôáíïìÞ áõôþí ôùí åêôéìÞóåùí ìå äéÜöïñïõò ôñüðïõò. Óôçí åíüôçôá + ÅñãáóôÞñéï óõìâÜëëåé ï Ray Kingdon.

          +
        diff --git a/lang/el/help/workshop/submissionofexamples.html b/lang/el/help/workshop/submissionofexamples.html index 0f189f676f6..86440e05aa0 100755 --- a/lang/el/help/workshop/submissionofexamples.html +++ b/lang/el/help/workshop/submissionofexamples.html @@ -1 +1,23 @@ -

        ÕðïâïëÞ ÐáñáäåéãìÜôùí Êáèçãçôþí

        Áí ïé ìáèçôÝò ÷ñåéÜæåôáé íá áîéïëïãÞóïõí êÜðïéá ðáñáäåßãìáôá åñãáóéþí ðñéí ôçí õðïâïëÞ ôùí äéêþí ôïõò åñãáóéþí, ï êáèçãçôÞò ÷ñçóéìïðïéåß áõôü ôï link ãéá íá õðïâÜëëåé áõôÞ ôçí åñãáóßá. Ï êáèçãçôÞò ìðïñåß íá õðïâÜëëåé üóåò åñãáóßåò èÝëåé. Áí ï áñéèìüò ôùí åñãáóéþí åßíáé ìåãáëýôåñïò áðü ôïí áñéèìü ôùí ðáñáäåéãìÜôùí ðïõ ðñÝðåé íá áîéïëïãÞóåé ï ìáèçôÞò, ôüôå ç åñãáóßá äéáôßèåôáé ìå Ýíáí ôõ÷áßï áëëÜ éóïññïðçìÝíï ôñüðï. Ôï óýóôçìá ðñïóðáèåß íá åîáóöáëßóåé üôé êÜèå ðáñÜäåéãìá äéáíÝìåôáé óôïõò ìáèçôÝò éóÜñéèìåò öïñÝò. Ç äéáíïìÞ åßíáé ôõ÷áßá ó' áõôÜ ôá, áò ðïýìå, äÝêá ðáñáäåßãìáôá ðïõ õðïâÜëëïíôáé, ôüôå åßíáé ó÷åäüí áðßèáíï óôïí ðñþôï ìáèçôÞ íá äïèïýí ïé õðïâïëÝò 1, 2 êáé 3 ãéá áîéïëüãçóç.

        Áí ï êáèçãçôÞò õðïâÜëëåé ëéãüôåñá ðáñáäåßãìáôá áð' áõôÜ ðïõ åßíáé äïóìÝíá óôçí áíôßóôïé÷ç ðáñÜìåôñï ôçò áíÜèåóçò, äßíïíôáé óôïõò ìáèçôÝò ìüíï áõôÜ ôá ðáñáäåßãìáôá ãéá áîéïëüãçóç.

        Áöïý ï êáèçãçôÞò õðïâÜëëåé ôá ðáñáäåßãìáôá åßíáé êáëýôåñï ãé' áõôüí íá ôá áîéïëïãÞóåé îå÷ùñéóôÜ. ÁõôÝò ïé åêôéìÞóåéò åßíáé éäéùôéêÝò ãéá ôïí êáèçãçôÞ, ÄÅÍ åßíáé åìöáíåßò ãéá ôïõò ìáèçôÝò êáôÜ ôç äéÜñêåéá ôçò áíÜèåóçò. Åßíáé, ùóôüóï, åìöáíåßò óôïõò êáèçãçôÝò üôáí åîåôÜæïõí ôéò áîéïëïãÞóåéò ôùí ðáñáäåéãìÜôùí ôùí ìáèçôþí. ¼ôáí âáèìïëïãåß, ï êáèçãçôÞò âëÝðåé ôç äéêÞ ôïõ åêôßìçóç óôï ðÜíù ìÝñïò ôçò óåëßäáò êáé ôçí åêôßìçóç ôïõ ìáèçôÞ óôï êÜôù ìÝñïò ôçò ßäéáò óåëßäáò. Ç "åðéðëÝïí" åêôßìçóç ëåéôïõñãåß óáí ðçãÞ áíáöïñÜò êáé ìéá õðåíèýìéóç ôùí âáóéêþí óçìåßùí ôïõ ðáñáäåßãìáôïò.

        \ No newline at end of file +

        ÕðïâïëÞ ÐáñáäåéãìÜôùí Êáèçãçôþí

        + +

        Áí ïé ìáèçôÝò ÷ñåéÜæåôáé íá áîéïëïãÞóïõí êÜðïéá ðáñáäåßãìáôá åñãáóéþí ðñéí + ôçí õðïâïëÞ ôùí äéêþí ôïõò åñãáóéþí, ï êáèçãçôÞò ÷ñçóéìïðïéåß áõôü ôï link ãéá + íá õðïâÜëëåé áõôÞ ôçí åñãáóßá. Ï êáèçãçôÞò ìðïñåß íá õðïâÜëëåé üóåò åñãáóßåò + èÝëåé. Áí ï áñéèìüò ôùí åñãáóéþí åßíáé ìåãáëýôåñïò áðü ôïí áñéèìü ôùí ðáñáäåéãìÜôùí + ðïõ ðñÝðåé íá áîéïëïãÞóåé ï ìáèçôÞò, ôüôå ç åñãáóßá äéáôßèåôáé ìå Ýíáí ôõ÷áßï + áëëÜ éóïññïðçìÝíï ôñüðï. Ôï óýóôçìá ðñïóðáèåß íá åîáóöáëßóåé üôé êÜèå ðáñÜäåéãìá + äéáíÝìåôáé óôïõò ìáèçôÝò éóÜñéèìåò öïñÝò. Ç äéáíïìÞ åßíáé ôõ÷áßá ó' áõôÜ ôá, + áò ðïýìå, äÝêá ðáñáäåßãìáôá ðïõ õðïâÜëëïíôáé, ôüôå åßíáé ó÷åäüí áðßèáíï óôïí + ðñþôï ìáèçôÞ íá äïèïýí ïé õðïâïëÝò 1, 2 êáé 3 ãéá áîéïëüãçóç.

        +

        Áí ï êáèçãçôÞò õðïâÜëëåé ëéãüôåñá ðáñáäåßãìáôá áð' áõôÜ ðïõ åßíáé äïóìÝíá óôçí + áíôßóôïé÷ç ðáñÜìåôñï ôçò áíÜèåóçò, äßíïíôáé óôïõò ìáèçôÝò ìüíï áõôÜ ôá ðáñáäåßãìáôá + ãéá áîéïëüãçóç.

        +

        Áöïý ï êáèçãçôÞò õðïâÜëëåé ôá ðáñáäåßãìáôá åßíáé êáëýôåñï ãé' áõôüí íá ôá áîéïëïãÞóåé + îå÷ùñéóôÜ. ÁõôÝò ïé åêôéìÞóåéò åßíáé éäéùôéêÝò ãéá ôïí êáèçãçôÞ, ÄÅÍ åßíáé åìöáíåßò + ãéá ôïõò ìáèçôÝò êáôÜ ôç äéÜñêåéá ôçò áíÜèåóçò. Åßíáé, ùóôüóï, åìöáíåßò óôïõò + êáèçãçôÝò üôáí åîåôÜæïõí ôéò áîéïëïãÞóåéò ôùí ðáñáäåéãìÜôùí ôùí ìáèçôþí. ¼ôáí + âáèìïëïãåß, ï êáèçãçôÞò âëÝðåé ôç äéêÞ ôïõ åêôßìçóç óôï ðÜíù ìÝñïò ôçò óåëßäáò + êáé ôçí åêôßìçóç ôïõ ìáèçôÞ óôï êÜôù ìÝñïò ôçò ßäéáò óåëßäáò. Ç "åðéðëÝïí" + åêôßìçóç ëåéôïõñãåß óáí ðçãÞ áíáöïñÜò êáé ìéá õðåíèýìéóç ôùí âáóéêþí óçìåßùí + ôïõ ðáñáäåßãìáôïò.

        + diff --git a/lang/el/help/workshop/ungradedassessments_student.html b/lang/el/help/workshop/ungradedassessments_student.html index e6d0aa5da06..ffc78c7a25f 100755 --- a/lang/el/help/workshop/ungradedassessments_student.html +++ b/lang/el/help/workshop/ungradedassessments_student.html @@ -1 +1,9 @@ -

        Ìç ÂáèìïëïãçìÝíåò ÁîéïëïãÞóåéò (ÕðïâïëÝò Ìáèçôþí)

        Áîéïëüãçóç ôùí Õðïâïëþí ôùí Ìáèçôþí ÁõôÝò åßíáé ïé áîéïëïãÞóåéò ðïõ êÜíïõí ïé ìáèçôÝò óôéò ìåôáîý ôïõò åñãáóßåò. ÃåíéêÜ, áõôÝò ÄÅÍ åßíáé áðáñáßôçôï íá âáèìïëïãçèïýí áðü ôïí êáèçãçôÞ. Ìå ôçí ðñïûðüèåóç üôé ïé õðïâïëÝò êÜèå ìáèçôÞ áîéïëïãïýíôáé ðåñßðïõ ðÝíôå öïñÝò, ôï óýóôçìá ìðïñåß íá êÜíåé ìéá ëïãéêÞ áîéïëüãçóç êÜèå åñãáóßáò îå÷ùñéóôÜ ãéá êÜèå ìáèçôÞ. ¼ôáí ï áñéèìüò áõôþí ôùí áîéïëïãÞóåùí åßíáé ìéêñüò ôüôå ï êáèçãçôÞò ìðïñåß íá èÝëåé íá ôéò âáèìïëïãÞóåé. Ïé âáèìïß áõôïß ìðïñïýí íá ëçöèïýí õðüøç êáôÜ ôïí õðïëïãéóìü ôùí ôåëéêþí âáèìþí ôùí ìáèçôþí.

        \ No newline at end of file +

        Ìç ÂáèìïëïãçìÝíåò ÁîéïëïãÞóåéò (ÕðïâïëÝò Ìáèçôþí)

        + +

        Áîéïëüãçóç ôùí Õðïâïëþí ôùí Ìáèçôþí ÁõôÝò åßíáé ïé áîéïëïãÞóåéò ðïõ + êÜíïõí ïé ìáèçôÝò óôéò ìåôáîý ôïõò åñãáóßåò. ÃåíéêÜ, áõôÝò ÄÅÍ åßíáé áðáñáßôçôï + íá âáèìïëïãçèïýí áðü ôïí êáèçãçôÞ. Ìå ôçí ðñïûðüèåóç üôé ïé õðïâïëÝò êÜèå ìáèçôÞ + áîéïëïãïýíôáé ðåñßðïõ ðÝíôå öïñÝò, ôï óýóôçìá ìðïñåß íá êÜíåé ìéá ëïãéêÞ áîéïëüãçóç + êÜèå åñãáóßáò îå÷ùñéóôÜ ãéá êÜèå ìáèçôÞ. ¼ôáí ï áñéèìüò áõôþí ôùí áîéïëïãÞóåùí + åßíáé ìéêñüò ôüôå ï êáèçãçôÞò ìðïñåß íá èÝëåé íá ôéò âáèìïëïãÞóåé. Ïé âáèìïß + áõôïß ìðïñïýí íá ëçöèïýí õðüøç êáôÜ ôïí õðïëïãéóìü ôùí ôåëéêþí âáèìþí ôùí ìáèçôþí. diff --git a/lang/el/help/workshop/ungradedassessments_teacher.html b/lang/el/help/workshop/ungradedassessments_teacher.html index 9a0c66cb1e0..40fd57e4fd3 100755 --- a/lang/el/help/workshop/ungradedassessments_teacher.html +++ b/lang/el/help/workshop/ungradedassessments_teacher.html @@ -1 +1,17 @@ -

        Ìç ÂáèìïëïãçìÝíåò ÁîéïëïãÞóåéò (ÕðïâïëÝò Êáèçãçôþí)

        Áîéïëüãçóç ôùí Õðïâïëþí ôùí Êáèçãçôþí ÁõôÝò åßíáé åêôéìÞóåéò äåéãìÜôùí åñãáóéþí ôùí ìáèçôþí, ðïõ ìðïñåß íá áðáéôïýíôáé ðñéí ôçí õðïâïëÞ ôùí äéêþí ôïõò. ÁõôÝò ïé åêôéìÞóåéò ðñÝðåé, ãåíéêÜ, íá âáèìïëïãïýíôáé áðü ôïí êáèçãçôÞ. Äåß÷íïõí êáôÜ ðüóï ï ìáèçôÞò Ý÷åé êáôáíïÞóåé ôçí áíÜèåóç ôçò åñãáóßáò êáé ðéèáíþò ðáñÝ÷ïõí êáé óôïí êáèçãçôÞ ÷ñÞóéìåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôï áí åßíáé áðáñáßôçôç êÜðïéá äéüñèùóç Þ êÜðïéïò óõíôïíéóìüò ôçò åñãáóßáò. ÅðéðëÝïí, áí ìéá áíÜèåóç âáèìïëïãçèåß, ôá ó÷üëéá ôïõ êáèçãçôÞ åßíáé äéáèÝóéìá óôïí ìáèçôÞ. ÁõôÝò ìðïñåß íá ðáñÝ÷ïõí óçìáíôéêÞ âïÞèåéá óôïí ìáèçôÞ óôçí ðñïåôïéìáóßá ôçò åñãáóßáò ôïõ.

        ÁõôÝò ïé åêôéìÞóåéò äåí ÷ñåéÜæåôáé íá âáèìïëïãçèïýí. ÁöÞíïíôáò áâáèìïëüãçôç ôçí åêôßìçóç ôùí äåéãìÜôùí åñãáóéþí åíüò ìáèçôÞ ÄÅÍ óçìáßíåé üôé áõôüò ï ìáèçôÞò äåí ìðïñåß íá õðïâÜëëåé ôç äéêÞ ôïõ åñãáóßá. ÓõóôÞíåôáé, ùóôüóï, íá âáèìïëïãçèåß ôïõëÜ÷éóôïí Ýíá äåßãìá åñãáóéþí ãéá ôïõò ëüãïõò ðïõ áíáöÝñèçêáí ðéï ðÜíù.

        \ No newline at end of file +

        Ìç ÂáèìïëïãçìÝíåò ÁîéïëïãÞóåéò (ÕðïâïëÝò Êáèçãçôþí)

        + +

        Áîéïëüãçóç ôùí Õðïâïëþí ôùí Êáèçãçôþí ÁõôÝò åßíáé åêôéìÞóåéò äåéãìÜôùí + åñãáóéþí ôùí ìáèçôþí, ðïõ ìðïñåß íá áðáéôïýíôáé ðñéí ôçí õðïâïëÞ ôùí äéêþí ôïõò. + ÁõôÝò ïé åêôéìÞóåéò ðñÝðåé, ãåíéêÜ, íá âáèìïëïãïýíôáé áðü ôïí êáèçãçôÞ. Äåß÷íïõí + êáôÜ ðüóï ï ìáèçôÞò Ý÷åé êáôáíïÞóåé ôçí áíÜèåóç ôçò åñãáóßáò êáé ðéèáíþò ðáñÝ÷ïõí + êáé óôïí êáèçãçôÞ ÷ñÞóéìåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôï áí åßíáé áðáñáßôçôç êÜðïéá + äéüñèùóç Þ êÜðïéïò óõíôïíéóìüò ôçò åñãáóßáò. ÅðéðëÝïí, áí ìéá áíÜèåóç âáèìïëïãçèåß, + ôá ó÷üëéá ôïõ êáèçãçôÞ åßíáé äéáèÝóéìá óôïí ìáèçôÞ. ÁõôÝò ìðïñåß íá ðáñÝ÷ïõí + óçìáíôéêÞ âïÞèåéá óôïí ìáèçôÞ óôçí ðñïåôïéìáóßá ôçò åñãáóßáò ôïõ.

        + + +

        ÁõôÝò ïé åêôéìÞóåéò äåí ÷ñåéÜæåôáé íá âáèìïëïãçèïýí. ÁöÞíïíôáò áâáèìïëüãçôç + ôçí åêôßìçóç ôùí äåéãìÜôùí åñãáóéþí åíüò ìáèçôÞ ÄÅÍ óçìáßíåé üôé áõôüò ï ìáèçôÞò + äåí ìðïñåß íá õðïâÜëëåé ôç äéêÞ ôïõ åñãáóßá. ÓõóôÞíåôáé, ùóôüóï, íá âáèìïëïãçèåß + ôïõëÜ÷éóôïí Ýíá äåßãìá åñãáóéþí ãéá ôïõò ëüãïõò ðïõ áíáöÝñèçêáí ðéï ðÜíù.

        + diff --git a/lang/el/help/writing.html b/lang/el/help/writing.html index 81e6c4e8ac8..f95b20dc2bf 100644 --- a/lang/el/help/writing.html +++ b/lang/el/help/writing.html @@ -1,23 +1,23 @@ -

        ÃñÜöïíôáò

        +

        ÃñÜöïíôáò

        -

        ¼ôáí ãñÜöåôáé êåßìåíï ãéá íá ôï äéáâÜóïõí Üëëïé, ðñïóðáèÞóôå êáé ãñÜøôå áðåõèåßáò óôï êïéíü óáò.

        +

        ¼ôáí ãñÜöåôáé êåßìåíï ãéá íá ôï äéáâÜóïõí Üëëïé, ðñïóðáèÞóôå êáé ãñÜøôå áðåõèåßáò óôï êïéíü óáò.

        -

        ÅîåéãÞóôå ôéò éäÝåò óáò üóï ðéï êáèáñÜ êáé ðéï áðëÜ ìðïñåßôå þóôå íá âïçèÞóåôå íá áðïöåõ÷èïýí ðáñåîçãÞóåéò. - ¸íá ðñÜãìá ðïõ ìðïñåßôå íá êÜíåôå åßíáé áðïöåýãåôáé ìáêñßåò ëÝîåéò üôáí ìéá ðéï ìéêñÞ èá êÜíåé ôçí äïõëåßá.

        +

        ÅîåéãÞóôå ôéò éäÝåò óáò üóï ðéï êáèáñÜ êáé ðéï áðëÜ ìðïñåßôå þóôå íá âïçèÞóåôå íá áðïöåõ÷èïýí ðáñåîçãÞóåéò. + ¸íá ðñÜãìá ðïõ ìðïñåßôå íá êÜíåôå åßíáé áðïöåýãåôáé ìáêñßåò ëÝîåéò üôáí ìéá ðéï ìéêñÞ èá êÜíåé ôçí äïõëåßá.

        -

        Óôéò ïìÜäåò óõæçôÞóåùí èá âïçèÞóåé ðñáãìáôéêÜ íá êñáôÜôå üëåò ôéò äçìïóéåýóåéò óáò êáôáíïìçìÝíåò êáé áíÜ èÝìá. +

        Óôéò ïìÜäåò óõæçôÞóåùí èá âïçèÞóåé ðñáãìáôéêÜ íá êñáôÜôå üëåò ôéò äçìïóéåýóåéò óáò êáôáíïìçìÝíåò êáé áíÜ èÝìá. Áíôß ãéá ìéá ìáêñéÜ öëýáñç ÷ùñßò èÝìá äçìïóßåõóç ç ïðïßá åóôéÜæåé óå ðïëëÜ äéáöïñåôéêÜ óçìáåßá,ßóùò åßíáé êáëýôåñï - íá ãñÜøåôå ðåñéóóüôåñåò ìéêñüôåñïõ ìåãÝèïõò (ìðïñåß íá áíÞêïõí áêüìá êáé óå äéáöïñåôéêåò ïìÜäåò óõæçôÞóåùí).

        + íá ãñÜøåôå ðåñéóóüôåñåò ìéêñüôåñïõ ìåãÝèïõò (ìðïñåß íá áíÞêïõí áêüìá êáé óå äéáöïñåôéêåò ïìÜäåò óõæçôÞóåùí). -

        ÁëëÜîôå îáíÜ ôï êåßìåíï óáò, üóåò öïñÝò åßíáé áðáñáßôçôï ìÝ÷ñé íá ôï öôÜóåôå óôçí óùóôÞ ìïñöÞ. +

        ÁëëÜîôå îáíÜ ôï êåßìåíï óáò, üóåò öïñÝò åßíáé áðáñáßôçôï ìÝ÷ñé íá ôï öôÜóåôå óôçí óùóôÞ ìïñöÞ. Áêüìá êáé óôéò äçìïóéåýóåéò óôéò ïìÜäåò óõæçôÞóåùí Ý÷åôå maxeditingtime/60) ?> ëåðôÜ - áðü üôáí ôï äçìïóéåýóåôå ãéá íá ðÜôå ðßóù êáé íá ôï âåëôéþóåôå áí åßíáé áðáñáßôçôï.

        + áðü üôáí ôï äçìïóéåýóåôå ãéá íá ðÜôå ðßóù êáé íá ôï âåëôéþóåôå áí åßíáé áðáñáßôçôï.

        -

        ¼ôáí áðáíôÜôå óå Üëëïõò, ðñïóðáèåßóôå íá óêåöôåßôå åíäéáöÝñïõóåò åñùôÞóåéò ãéá íá ôïõò êÜíåôå. +

        ¼ôáí áðáíôÜôå óå Üëëïõò, ðñïóðáèåßóôå íá óêåöôåßôå åíäéáöÝñïõóåò åñùôÞóåéò ãéá íá ôïõò êÜíåôå. Áõôü èá âïçèÞóåé êáé åóÜò áëëÜ êáé ôï Üëëï ðñüóùðï ìáæß íá óêåöôåßôå (êáé íá ìÜèåôå!) - ó÷åôéêÜ ìå ôá èÝìáôá ðïõ óõæçôÜôå.

        + ó÷åôéêÜ ìå ôá èÝìáôá ðïõ óõæçôÜôå.

        -

        -

        -

        +

        +

        +

        diff --git a/lang/el/moodle.php b/lang/el/moodle.php index 23562080398..b1762afbde9 100644 --- a/lang/el/moodle.php +++ b/lang/el/moodle.php @@ -1,236 +1,234 @@ -\$a
        "; -$string['activityiscurrentlyhidden'] = "Äõóôõ÷þò áõôÞ ç äñáóôçñéüôçôá åßíáé ðñïò ôï ðáñüí êñõöÞ"; -$string['activitymodule'] = "Åíüôçôá äñáóôçñéüôçôáò"; -$string['activityreport'] = "ÁíáöïñÜ äñáóôçñéüôçôáò"; -$string['activityselect'] = "ÅðÝëåîå áõôÞ ôç äñáóôçñéüôçôá íá ìåôáêéíçèåß êÜðïõ áëëïý"; -$string['activitysince'] = "Äñáóôçñéüôçôá áðü \$a"; -$string['add'] = "ÐñïóèÞêç"; -$string['addadmin'] = "ÐñïóèÞêç äéá÷åéñéóôÞ"; -$string['addcreator'] = "ÐñïóèÞêç äçìéïõñãïý"; -$string['added'] = "ÐñïóôÝèçêå \$a"; -$string['addinganew'] = "ÐñïóèÞêç íÝáò \$a"; -$string['addinganewto'] = "ÐñïóèÝôåé íÝá \$a->óå ìéá \$a->óå"; -$string['addingdatatoexisting'] = "ÐñïóèÞêç äåäïìÝíùí óôá õðÜñ÷ïíôá"; -$string['addnewcategory'] = "ÐñïóèÞêç íÝáò êáôçãïñßáò"; -$string['addnewcourse'] = "ÐñïóèÞêç íÝïõ ìáèÞìáôïò"; -$string['addnewuser'] = "ÐñïóèÞêç íÝïõ ÷ñÞóôç"; -$string['address'] = "Äéåýèõíóç"; -$string['addstudent'] = "ÐñïóèÞêç ìáèçôÞ"; -$string['addteacher'] = "ÐñïóèÞêç åêðáéäåõôÞ"; -$string['admin'] = "Äéá÷åéñéóôÞò"; -$string['adminhelpaddnewuser'] = "Äçìéïõñãßá ëïãáñéáóìïý åíüò íÝïõ ÷ñÞóôç ÷åéñïêßíçôá"; -$string['adminhelpassignadmins'] = "Ïé äéá÷åéñéóôÝò ìðïñïýí íá êÜíïõí ïôéäÞðïôå êáé íá ðÜíå ïðïõäÞðïôå ó' áõôü ôï äéêôõáêü ôüðï"; -$string['adminhelpassigncreators'] = "Ïé äçìéïõñãïß ìðïñïýí íá äçìéïõñãÞóïõí íÝá ìáèÞìáôá êáé íá äéäÜîïõí ó' áõôÜ"; -$string['adminhelpassignstudents'] = "Ìðåßôå óå Ýíá ìÜèçìá êáé ðñïóèÝóôå ìáèçôÝò áðü ôï ìåíïý ôïõ äéá÷åéñéóôÞ"; -$string['adminhelpassignteachers'] = "Âñåò Ýíá ìÜèçìá êé Ýðåéôá ÷ñçóéìïðïßçóå ôï åéêïíßäéï ãéá íá ðñïóèÝóåéò êáèçãçôÝò"; -$string['adminhelpauthentication'] = "Ìðïñåßò íá ÷ñçóéìïðïéÞóåéò åóùôåñéêïýò ëïãáñéáóìïýò ÷ñçóôþí Þ åîùôåñéêÝò âÜóåéò äåäïìÝíùí"; -$string['adminhelpconfiguration'] = "Äéáìüñöùóç ôçò åìöÜíéóçò êáé ôçò ëåéôïõñãßáò ôïõ site"; -$string['adminhelpconfigvariables'] = "Äéáìüñöùóç ôùí ìåôáâëçôþí ðïõ åðçñåÜæïõí ôç ãåíéêÞ ëåéôïõñãßá ôïõ site"; -$string['adminhelpcourses'] = "¼ñéóå ìáèÞìáôá êáé êáôçãïñßåò êáé åê÷þñéóå Üôïìá ó' áõôÝò"; -$string['adminhelpedituser'] = "Îåöýëëéóå ôç ëßóôá ôùí ëïãáñéáóìþí ÷ñçóôþí êáé åðåîåñãÜóïõ êÜðïéåò áð' áõôÝò"; -$string['adminhelplanguage'] = "Ãéá Ýëåã÷ï êáé åðåîåñãáóßá ôïõ ôñÝ÷ïíôïò ãëùóóéêïý ðáêÝôïõ"; -$string['adminhelplogs'] = "Îåöýëëéóå ôéò óõíäÝóåéò üëùí ôùí äñáóôçñéïôÞôùí ó' áõôü ôï site"; -$string['adminhelpmanagedatabase'] = "Áðåõèåßáò ðñüóâáóç óôç âÜóç äåäïìÝíùí (ðñüóå÷å!)"; -$string['adminhelpmanagemodules'] = "Äéá÷åéñßóïõ ôéò åãêáôåóôçìÝíåò åíüôçôåò êáé ôéò ñõèìßóåéò ôïõò"; -$string['adminhelpsitefiles'] = "Ãéá Ýêäïóç ãåíéêþí áñ÷åßùí Þ öüñôùóç åîùôåñéêþí áíôéãñÜöùí áóöáëåßáò"; -$string['adminhelpsitesettings'] = "Ðñïóäéïñßóôå ðþò èá öáßíåôáé ç áñ÷éêÞ óåëßäá ôïõ site"; -$string['adminhelpthemes'] = "ÅðéëÝîôå ðþò èá öáßíåôáé ôï site (÷ñþìáôá, öüíôï êëð)"; -$string['adminhelpusers'] = "ÐéóôïðïéÞóôå ôïõò ÷ñÞóôåò êáé ôéò ñõèìßóåéò óáò"; -$string['administration'] = "Äéá÷åßñéóç"; -$string['administrator'] = "Äéá÷åéñéóôÞò"; -$string['administrators'] = "Äéá÷åéñéóôÝò"; -$string['again'] = "ðÜëé"; -$string['all'] = "¼ëá"; -$string['alldays'] = "üëåò ôéò çìÝñåò"; -$string['allfieldsrequired'] = "Áðáéôïýíôáé üëá ôá ðåäßá"; -$string['alllogs'] = "¼ëåò ïé óõíäÝóåéò"; -$string['allow'] = "ÅðéôñÝðåôáé"; -$string['allowguests'] = "ÁõôÞ ç åíüôçôá åðéôñÝðåé ôçí åßóïäï óå åðéóêÝðôåò"; -$string['allownot'] = "Äåí åðéôñÝðåôáé"; -$string['allparticipants'] = "¼ëïé ïé óõììåôÝ÷ïíôåò"; -$string['alphanumerical'] = "Ìðïñåß ìüíï íá ðåñéÝ÷åé ãñÜììáôá ôçò áëöáâÞôïõ Þ íïýìåñá"; -$string['alreadyconfirmed'] = "Ç êáôá÷þñçóç Ý÷åé Þäç åðéâåâáéùèåß"; -$string['answer'] = "ÁðÜíôçóç"; -$string['areyousuretorestorethis'] = "ÈÝëåôå íá óõíå÷ßóåôå;"; -$string['areyousuretorestorethisinfo'] = "Áñãüôåñá ó' áõôÞ ôç äéáäéêáóßá èá Ý÷åôå ôçí åðéëïãÞ ôçò ðñïóèÞêçò áõôïý ôïõ áíôéãñÜöïõ áóöáëåßáò óå Ýíá õðÜñ÷ïí ìÜèçìá Þ ôçò äçìéïõñãßáò åíüò åíôåëþò íÝïõ ìáèÞìáôïò."; -$string['assessment'] = "Áðïôßìçóç"; -$string['assignadmins'] = "Ðñïóäéïñéóìüò äéá÷åéñéóôþí"; -$string['assigncreators'] = "Ðñïóäéïñéóìüò äçìéïõñãþí"; -$string['assignstudents'] = "ÅããñáöÞ ìáèçôþí"; -$string['assignstudentsnote'] = "Óçìåßùóç: ìðïñåß íá ìçí åßíáé áðáñáßôçôï íá ÷ñçóéìïðïéÞóåôå áõôÞ ôç óåëßäá, åöüóïí åßíáé ðéèáíü ãéá ôïõò ìáèçôÝò íá åããñÜøïõí ôïõò åáõôïýò ôïõò ó' áõôü ôï ìÜèçìá."; -$string['assignstudentspass'] = "Ôï ìüíï ðïõ ÷ñåéÜæåôáé íá êÜíåéò åßíáé íá ãíùóôïðïéÞóåéò óôïõò ìáèçôÝò óïõ ôï ðëÞêôñï åããñáöÞò ãé' áõôü ôï ìÜèçìá, ôï ïðïßï Ý÷åé ðñïò ôï ðáñüí ñõèìéóôåß óå: '\$a'"; -$string['assignteachers'] = "Ðñïóäéïñéóìüò åêðáéäåõôþí"; -$string['authentication'] = "Ðéóôïðïßçóç"; -$string['autosubscribe'] = "Áõôüìáôç åããñáöÞ óôéò ïìÜäåò óõæçôÞóåùí"; -$string['autosubscribeno'] = "¼÷é: íá ìçí åããñÜöïìáé áõôüìáôá óå ïìÜäåò óõæçôÞóåùí"; -$string['autosubscribeyes'] = "Íáé: üôáí áíáñôþ áíáêïéíþóåéò óå ìéá ïìÜäá óõæçôÞóåùí íá åããñÜöïìáé áõôüìáôá óå áõôÞ"; -$string['availability'] = "Äéáèåóéìüôçôá"; -$string['availablecourses'] = "ÄéáèÝóéìá ÌáèÞìáôá"; -$string['backup'] = "Áíôßãñáöï áóöáëåßáò"; -$string['backupdate'] = "Çìåñïìçíßá áíôßãñáöïõ áóöáëåßáò"; -$string['backupdetails'] = "ËåðôïìÝñåéåò áíôßãñáöïõ áóöáëåßáò"; -$string['backupfilename'] = "áíôßãñáöï áóöáëåßáò"; -$string['backupfinished'] = "Ôï áíôßãñáöï áóöáëåßáò ïëïêëçñþèçêå åðéôõ÷þò"; -$string['backupnameformat'] = "%%Y%%m%%d-%%H%%M"; -$string['backuporiginalname'] = "¼íïìá áíôßãñáöïõ áóöáëåßáò"; -$string['backupversion'] = "¸êäïóç áíôßãñáöïõ áóöáëåßáò"; -$string['cancel'] = "Áêýñùóç"; -$string['categories'] = "Êáôçãïñßåò åíïôÞôùí"; -$string['category'] = "Êáôçãïñßá "; -$string['categoryadded'] = "Ç êáôçãïñßá '\$a' ðñïóôÝèçêå"; -$string['categorydeleted'] = "Ç êáôçãïñßá '\$a' äéáãñÜöçêå"; -$string['categoryduplicate'] = "ÕðÜñ÷åé Þäç êáôçãïñßá ìå ôï üíïìá '\$a'!"; -$string['changedpassword'] = "Ï êùäéêüò ðñüóâáóçò Üëëáîå"; -$string['changepassword'] = "ÁëëáãÞ ôïõ êùäéêïý ðñüóâáóçò"; -$string['changessaved'] = "Ïé áëëáãÝò áðïèçêåýôçêáí"; -$string['checkingbackup'] = "¸ëåã÷ïò áíôéãñÜöïõ áóöáëåßáò"; -$string['checkingcourse'] = "¸ëåã÷ïò ìáèÞìáôïò"; -$string['checkinginstances'] = "¸ëåã÷ïò ðåñéðôþóåùí"; -$string['checkingsections'] = "¸ëåã÷ïò ôìçìÜôùí"; -$string['checklanguage'] = "ÅëÝãîôå ôçí ãëþóóá"; -$string['choose'] = "ÅðéëÝîôå"; -$string['choosecourse'] = "ÅðéëÝîôå Ýíá ìÜèçìá"; -$string['chooselivelogs'] = "Þ ðáñáêïëïõèÞóôå ôçí ôñÝ÷ïõóá äñáóôçñéüôçôá"; -$string['chooselogs'] = "ÅðéëÝîôå ðïéÝò êáôá÷ùñÞóåéò èÝëåôå íá äåßôå"; -$string['choosetheme'] = "ÅðéëÝîôå Ýíá èÝìá"; -$string['chooseuser'] = "ÅðéëÝîôå Ýíá ÷ñÞóôç"; -$string['city'] = "Ðüëç/÷ùñéü"; -$string['cleaningtempdata'] = "Êáèáñéóìüò äåäïìÝíùí"; -$string['closewindow'] = "Êëåßóôå áõôü ôï ðáñÜèõñï"; -$string['comparelanguage'] = "Óýãêñéíåôå êáé åðåîåñãáóôåßôå ôçí ÷ñçóéìïðïéïýìåíç ãëþóóá"; -$string['complete'] = "ÏëïêëÞñùóç"; -$string['configcountry'] = "ÅÜí èÝóåôå ìßá ÷þñá åäþ, ôüôå áõôÞ ç ÷þñá èá ôåèåß óáí ðñïêáèïñéóìÝíç óå íÝïõò ëïãáñéáóìïýò ÷ñçóôþí. Ãéá íá áíáãêÜóåôå ôïõò ÷ñÞóôåò íá äéáëÝîïõí ÷þñá, áðëÜ áöÞóôå ôï êåíü."; -$string['configdebug'] = "ÅÜí áõôü ôåèåß óå ëåéôïõñãßá, ôüôå áíáöïñÝò ëáèþí ôçò php èá åßíáé ðéü ëåðôïìåñåßò êáé ðéï ðïëëÝò ðñïåéäïðïéÞóåéò èá ôõðùèïýí. Áõôü ÷ñçóéìåýåé ìüíï óå õðåõèýíïõò ãéá ôçí áíÜðôõîç."; -$string['configerrorlevel'] = "ÅðéëÝîôå ôçí ðïóüôçôá ôùí ðñïåéäïðïéÞóåùí php ðïõ èÝëåôå íá åìöáíßæïíôáé. Ôï êáíïíéêü åßíáé óõíÞèùò ç êáëýôåñç åðéëïãÞ."; -$string['configframename'] = "Áí åìâõèßæåôå ôï Moodle óå Ýíá frame, ôüôå âÜëôå ôï üíïìá ôïõ frame åäþ. Áëëéþò áõôÞ ç ôéìÞ èá ðñÝðåé íá ðáñáìåßíåé '_top'"; -$string['configgdversion'] = "Õðïäåßîôå ôçí Ýêäïóç ôïõ GD ðïõ åßíáé åãêáôåóôçìÝíç. Ç Ýêäïóç ðïõ Ý÷åé ðñïêáèïñéóôåß åßíáé áõôÞ ðïõ Ý÷åé áõôüìáôá åðéëåãåß. Ìçí ôï áëëÜîåôå áõôü åêôüò êé áí îÝñåôå ðñáãìáôéêÜ ôé êÜíåôå."; -$string['confightmleditor'] = "ÅðéëÝîôå åáí ðñÝðåé íá åðéôñáðåß ç ÷ñÞóç ôïõ åíóùìáôùìÝíïõ åðåîåñãáóôÞ êåéìÝíùí HTML. Áêüìá êé áí åðéëÝîåôå íá åðéôñáðåß, áõôüò ï åðåîåñãáóôÞò èá åìöáíéóôåß ìüíï åÜí ï ÷ñÞóôçò ÷ñçóéìïðïéåß Ýíáí óõìâáôü ðëïçãü (Äçë. IE 5.5 Þ åðüìåíç Ýêäïóç). Ïé ÷ñÞóôåò ìðïñïýí åðßóçò íá åðéëÝîïõí íá ìçí ôï ÷ñçóéìïðïéÞóïõí."; -$string['configidnumber'] = "ÁõôÞ ç åðéëïãÞ ðñïóäéïñßæåé áí (á)Äåí æçôåßôáé êáèüëïõ óôïõò ÷ñÞóôåò áñéèìüò ID, (â)Æçôåßôáé áðü ôïõò ÷ñÞóôåò Ýíáò áñéèìüò ID áëëÜ ìðïñïýí íá ôï áöÞóïõí êåíü Þ (ã)Æçôåßôáé áðü ôïõò ÷ñÞóôåò Ýíáò áñéèìüò ID êáé äåí ìðïñïýí íá ôï áöÞóïõí êåíü. Áí äïèåß, ï áñéèìüò ID ôïõ ÷ñÞóôç åìöáíßæåôáé óôï Ðñïößë."; -$string['configintro'] = "Óå áõôÞ ôç óåëßäá ìðïñåßôå íá äéåõêñéíÞóåôå Ýíáí áñéèìü ìåôáâëçôþí ðïõ âïçèïýí ôï Moodle íá äïõëÝøåé êáëýôåñá. Ìçí áíçóõ÷åßôå éäéáßôåñá ãéá áõôÝò - ïé ðñïêáèáñéóìÝíåò ôéìÝò äïõëåýïõí êáëÜ êáé ìðïñåßôå ðÜíôá íá åðéóôñÝøåôå óå áõôÞ ôç óåëßäá êáé íá ôéò ôñïðïðïéÞóåôå."; -$string['configintroadmin'] = "Óå áõôÞ ôç óåëßäá ìðïñåßôå íá ñõèìßóåôå ôïí êýñéï ëïãáñéáóìü äéá÷åßñéóçò ï ïðïßïò èá Ý÷åé ðëÞñç Ýëåã÷ï ðÜíù óôï äéêôõáêü ôüðï. Âåâáéùèåßôå ðùò ôïõ áíôéóôïé÷åßôå áóöáëÝò üíïìá ÷ñÞóôç êáé êùäéêü ðñüóâáóçò êáèþò êáé Ýãêõñç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ. Ìðïñåßôå íá äçìéïõñãÞóåôå ðåñéóóüôåñïõò ëïãáñéáóìïýò äéá÷åßñéóçò áñãüôåñá."; -$string['configintrosite'] = "Óå áõôÞ ôç óåëßäá ìðïñåßôå íá ñõèìßóåôå ôçí áñ÷éêÞ óåëßäá êáé ôï üíïìá áõôïý ôïõ íÝïõ äéêôõáêïý ôüðïõ. Ìðïñåßôå íá åðéóôñÝøåôå åäþ áñãüôåñá êáé íá áëëÜîåôå áõôÝò ôéò ñõèìßóåéò ÷ñçóéìïðïéþíôáò ôï óýíäåóìï 'Ñõèìßóåéò äéêôõáêïý ôüðïõ' óôçí áñ÷éêÞ óåëßäá."; -$string['configlang'] = "ÅðéëÝîôå ìéá ãëþóóá ãéá ôï óýíïëï ôïõ äéêôõáêïý ôüðïõ. Ïé ÷ñÞóôåò ìðïñïýí íá áãíïÞóïõí áñãüôåñá áõôÞ ôçí åðéëïãÞ."; -$string['configlangdir'] = "Ïé ðåñéóóüôåñò ãëþóóåò ãñÜöïíôáé áðü áñéóôåñÜ ðñïò äåîéÜ, áëëÜ ìåñéêÝò, üðùò ç ÁñáâéêÞ êáé ç ÅâñáúêÞ, ãñÜöïíôáé áðü äåîéÜ ðñïò áñéóôåñÜ."; -$string['configlanglist'] = "ÁöÞóôå ôï êåíü ãéá íá åðéôñÝøåôå óôïõò ÷ñÞóôåò íá åðéëÝîïõí áðü ïðïéáäÞðïôå ãëþóóá åßíáé äéáèÝóéìç óå áõôÞ ôçí åãêáôÜóôáóç ôïõ Moodle. Ùóôüóï, ìðïñåßôå íá ðåñéïñßóåôå ôçí åðéëïãÞ åéóÜãïíôáò ìéá ëßóôá êùäéêþí ãëùóóþí ÷ùñéóìÝíïõò ìå êüììá. Ãéá ðáñÜäåéãìá: en,es_es,fr,it"; -$string['configlangmenu'] = "ÅðéëÝîôå áí èÝëåôå íá åìöáíßæåôáé Þ ü÷é ôï ãåíéêü ìåíïý åðéëïãÞò ãëþóóáò óôçí áñ÷éêÞ óåëßäá, óôç óåëßäá óýíäåóçò êôë. Áõôü äåí åðçñåÜæåé ôç äõíáôüôçôá ôùí ÷ñçóôþí íá ïñßæïõí ôçí ðñïôéìþìåíç ãëþóóá óôï äéêü ôïõò ðñïößë ."; -$string['configlocale'] = "ÅðéëÝîôå ìéá ÷þñá ãéá ôï óýíïëï ôïõ äéêôõáêïý ôüðïõ. Áõôü èá åðçñåÜóåé ôç ìïñöÞ êáé ôç ãëþóóá ôùí çìåñïìçíéþí. Ôá äåäïìÝíá ãéá ôç ÷þñá áõôÞ èá ðñÝðåé íá åßíáé åãêáôçóôçìÝíá óôï ëåéôïõñãéêü óýóôçìá. (ð÷. en_US Þ es_ES Þ el_GR). Áí äåí åßóôå âÝâáéïé áöÞóôå ôï êåíü."; -$string['configloglifetime'] = "Áõôü êáèïñßæåé ôï åýñïò ÷ñüíïõ ãéá ôï ïðïßï èÝëåôå íá ôçñåßôå áñ÷åßá êáôáãñáöÞò ó÷åôéêÜ ìå ôç äñáóôçñéüôçôá ôùí ÷ñçóôþí. Áñ÷åßá êáôáãñáöÞò ìåãáëýôåñá áðü áõôü äéáãñÜöïíôáé áõôüìáôá. Ôï êáëýôåñï åßíáé íá ôçñåßôå áñ÷åßá êáôáãñáöÞò ãéá ôï ìåãáëýôåñï äõíáôü äéÜóôçìá, ãéá ôçí ðåñßðôùóç ðïõ ôá ÷ñåéáóôåßôå, áëëÜ áí ï äéáêïìéóôÞò åßíáé ðïëý áðáó÷ïëçìÝíïò êáé Ý÷åôå ðñïâëÞìáôá áðüäïóçò ßóùò íá èÝëåôå íá ìåéþóåôå ôï ÷ñüíï æùÞò ôùí áñ÷åßùí êáôáãñáöÞò."; -$string['configlongtimenosee'] = "Áí ïé ìáèçôÝò êÜíïõí ðïëý êáéñü íá ÷ñçóéìïðïéÞóïõí ôï óýóôçìá, ôüôå áõôüìáôá èá äéáãñáöïýí áðü ôá ìáèÞìáôá. ÁõôÞ ç ðáñÜìåôñïò êáèïñßæåé áõôü ôï ÷ñïíéêü üñéï."; -$string['configmaxeditingtime'] = "Áõôü êáèïñßæåé ôï ÷ñüíï ìÝóá óôïí ïðïßï êÜðïéïò ðñÝðåé íá åðåîåñãáóôåß îáíÜ áíáêïéíþóåéò, çìåñïëüãéá êôë. 30 ëåðôÜ åßíáé óõíÞèùò ìéá êáëÞ ôéìÞ."; -$string['configproxyhost'] = "Áí áõôüò ï åîõðçñåôçôÞò ÷ñåéÜæåôáé Ýíáí äéáêïìéóôÞ ìåóïëÜâçóçò (proxy, ð÷ Ýíá firewall) ãéá íá Ý÷åé ðñüóâáóç óôï Äéáäßêôõï, ôüôå äçëþóôå ôç äéåýèõíóç êáé ôç èýñá ôïõ åäþ. Áëëéþò áöÞóôå ôï êåíü."; -$string['configsecureforms'] = "Ôï Moodle ìðïñåß íá ÷ñçóéìïðïéÞóåé Ýíá åðéðëÝïí åðßðåäï áóöÜëåéáò üôáí äÝ÷åôáé äåäïìÝíá áðü öüñìåò. Áí áõôü åíåñãïðïéçèåß ôüôå ç ìåôáâëçôÞ HTTP_REFERER ôïõ öõëëïìåôñçôÞ èá åëÝã÷åôáé áí åßíáé ßäéá ìå ôç äéåýèõíóç ôçò öüñìáò. Óå ìåñéêÝò ðåñéðôþóåéò, áí ï ÷ñÞóôçò ÷ñçóéìïðïéåß firewall (ð.÷. Zonealarm) ôï ïðïßï íá áöáéñåß ôï HTTP_REFERER áðü ôá äåäïìÝíá ðïõ äéáêéíïýíôáé, áõôü ìðïñåß íá ðñïêáëÝóåé ðñïâëÞìáôá. Ôï óýìðôùìá ðïõ èá åìöáíéóôåß èá åßíáé íá 'êïëëÜåé' Ýíáò ÷ñÞóôçò óå ìéá öüñìá. Áí ïé ÷ñÞóôåò óáò Ý÷ïõí ðñüâëçìá ìå ôç óåëßäá óýíäåóçò (ãéá ðáñÜäåéãìá) ôüôå ßóùò èá èÝëåôå íá áðåíåñãïðïéÞóåôå áõôÞ ôçí åðéëïãÞ, áí êáé áõôü èá áöÞóåé ôï äéêôõáêü óáò ôüðï ðéï áíïé÷ôü óå åðéèÝóåéò brute force. Áí äåí åßóôå óßãïõñïé áöÞóôå ôï óôç èÝóç 'Íáé'."; -$string['configsessiontimeout'] = "Áí ïé ÷ñÞóôåò ðïõ Ý÷ïõí óõíäåèåß äåí åêôåëïýí êáìéÜ äñáóôçñéüôçôá óå áõôü ôï äéêôõáêü ôüðï, ôüôå áðïóõíäÝïíôáé áõôüìáôá (ç óõíåäñßá ôïõò ëÞãåé). ÁõôÞ ç ìåôáâëçôÞ êáèïñßæåé ðüóï èá åßíáé áõôü ôï äéÜóôçìá."; -$string['configslasharguments'] = "Áñ÷åßá (öïñôþóåéò åéêüíùí, áñ÷åßùí êôë) ðáñÝ÷ïíôáé áðü Ýíá ìéêñü ðñüãñáììá ÷ñçóéìïðïéþíôáò 'ðáñáìÝôñïõò slash' (åäþ ç äåýôåñç åðéëïãÞ). ÁõôÞ ç ìÝèïäïò åðéôñÝðåé óå áñ÷åßá íá áðïèçêåýïíôáé ðéï åýêïëá óôçí åíäéÜìåóç ìíÞìç ôïõ öõëëïìåôñçôÞ Þ ôïõ äéáêïìéóôÞ ìåóïëÜâçóçò êôë. Äõóôõ÷þò, ïñéóìÝíïé åîõðçñåôçôÝò PHP äåí åðéôñÝðïõí áõôÞ ôç ìÝèïäï êáé Ýôóé áí Ý÷åôå ðñüâëçìá óôçí ðñïâïëÞ áñ÷åßùí Þ åéêüíùí ðïõ Ý÷ïõí öïñôùèåß åðéëÝîôå ôçí ðñþôç ôéìÞ ãéá áõôÞ ôç ìåôáâëçôÞ."; -$string['configsmtphosts'] = "Äþóôå ôï ðëÞñåò üíïìá åíüò Þ ðåñéóóïôÝñùí ôïðéêþí åîõðçñåôçôþí SMTP ôïõò ïðïßïõò èá ðñÝðåé íá ÷ñçóéìïðïéÞóåé ôï Moodle þóôå íá óôåßëåé ìçíýìáôá çëåêôñïíéêïý ôá÷õäñïìåßïõ (ð÷. 'mail.a.com' Þ 'mail.a.com;mail.b.com'). Áí ôï áöÞóåôå êåíü, ôï Moodle èá ÷ñçóéìïðïéÞóåé ôçí ðñïêáèïñéóìÝíç ìÝèïäï ôçò PHP ãéá ôçí áðïóôïëÞ ôùí ìçíõìÜôùí."; -$string['configsmtpuser'] = "Áí Ý÷åôå êáèïñßóåé åîõðçñåôçôÞ SMTP ðéï ðÜíù êáé ï åîõðçñåôçôÞò áðáéôåß ðéóôïðïßçóç ôüôå åéóÜãåôå ôï üíïìá ÷ñÞóôç êáé ôïí êùäéêü ðñüóâáóçò åäþ."; -$string['configteacherassignteachers'] = "Èá ðñÝðåé íá åðéôñÝðåôáé óôïõò óõíÞèåéò êáèçãçôÝò íá êáèïñßæïõí Üëëïõò êáèçãçôÝò óôá ìáèÞìáôá; Áí '¼÷é', ôüôå ìüíï ïé äçìéïõñãïß êáé ïé äéá÷åéñéóôÝò ìðïñïýí íá êáèïñßóïõí êáèçãçôÝò."; -$string['configunzip'] = "Õðïäåßîôå ôç èÝóç ôïõ ðñïãñÜììáôïò áðïóõìðßåóçò (unzip, ìüíï óå Unix). Áí ðñïóäéïñéóôåß, èá ÷ñçóéìïðïéçèåß ãéá íá áðïóõìðéÝæïíôáé óôïí åîõðçñåôçôÞ óõìðéåóìÝíá áñ÷åßá. Áí ôï áöÞóåôå êåíü, ôüôå ôï Moodle èá ÷ñçóéìïðïéÞóåé åóùôåñéêÝò ñïõôßíåò."; -$string['configuration'] = "Äéáìüñöùóç"; -$string['configvariables'] = "ÌåôáâëçôÝò"; -$string['configwarning'] = "Íá åßóôå ðñïóåêôéêïß óôç äéáìüñöùóç áõôþí ôùí ìåôáâëçôþí - ïé ðåñßåñãåò ôéìÝò ìðïñåß íá ðñïêáëÝóïõí ðñïâëÞìáôá"; -$string['configzip'] = "Õðïäåßîôå ôç èÝóç ôïõ ðñïãñÜììáôïò óõìðßåóçò (zip, ìüíï óå Unix). Áí êáèïñéóôåß, èá ÷ñçóéìïðïéçèåß ãéá íá óõìðéÝæïíôáé óôïí åîõðçñåôçôÞ áñ÷åßá. Áí ôï áöÞóåéò êåíü, ôüôå ôï Moodle èá ÷ñçóéìïðïéÞóåé åóùôåñéêÝò ñïõôßíåò."; -$string['confirmed'] = "Ç åããñáöÞ óáò åðéâåâáéþèçêå"; -$string['confirmednot'] = "Ç åããñáöÞ óáò äåí Ý÷åé åðéâåâáéùèåß áêüìç!"; -$string['continue'] = "ÓõíÝ÷åéá"; -$string['cookiesenabled'] = "Ôá cookies ðñÝðåé íá åßíáé åíåñãïðïéçìÝíá óôï öõëëïìåôñçôÞ óáò"; -$string['copy'] = "áíôéãñáöÞ"; -$string['copyingcoursefiles'] = "ÁíôéãñáöÞ áñ÷åßùí ìáèçìÜôùí"; -$string['copyinguserfiles'] = "ÁíôéãñáöÞ áñ÷åßùí ÷ñÞóôç"; -$string['copyingzipfile'] = "ÁíôéãñáöÞ óõìðéåóìÝíïõ áñ÷åßïõ"; -$string['copyrightnotice'] = "Óçìåßùóç ðíåõìáôéêþí äéêáéùìÜôùí"; -$string['country'] = "×þñá"; -$string['course'] = "ÌÜèçìá"; -$string['courseavailable'] = "Áõôü ôï ìÜèçìá åßíáé äéáèÝóéìï óå ìáèçôÝò"; -$string['courseavailablenot'] = "Áõôü ôï ìÜèçìá äåí åßíáé äéáèÝóéìï óå ìáèçôÝò"; -$string['coursebackup'] = "Áíôßãñáöï áóöáëåßáò ìáèÞìáôïò"; -$string['coursecategories'] = "Êáôçãïñßåò ìáèÞìáôïò"; -$string['coursecategory'] = "Êáôçãïñßá ìáèÞìáôïò"; -$string['coursecreators'] = "Äçìéïõñãïß ìáèÞìáôïò"; -$string['coursefiles'] = "Áñ÷åßá ìáèÞìáôïò"; -$string['courseformats'] = "Ôýðïé ìáèÞìáôïò"; -$string['coursegrades'] = "Âáèìïß ìáèÞìáôïò"; -$string['courseinfo'] = "Ðëçñïöïñßåò ìáèÞìáôïò"; -$string['courserestore'] = "ÅðáíáöïñÜ ìáèÞìáôïò"; -$string['courses'] = "ÌáèÞìáôá"; -$string['courseupdates'] = "Åíçìåñþóåéò ìáèÞìáôïò"; -$string['create'] = "Äçìéïõñãßá"; -$string['createaccount'] = "Äçìéïõñãßá ôïõ íÝïõ ìïõ ëïãáñéáóìïý"; -$string['createfolder'] = "Äçìéïýñãçóå Ýíáí öÜêåëï óôï \$a"; -$string['createuserandpass'] = "Äçìéïõñãßá åíüò íÝïõ ïíüìáôïò ÷ñÞóôç êáé êùäéêïý ðñüóâáóçò ãéá åßóïäï óôï óýóôçìá"; -$string['createziparchive'] = "Äçìéïõñãßá óõìðéåóìÝíïõ áñ÷åßïõ"; -$string['creatingcategoriesandquestions'] = "Äçìéïõñãßá êáôçãïñéþí êáé åñùôÞóåùí"; -$string['creatingcoursemodules'] = "Äçìéïõñãßá åíïôÞôùí ìáèÞìáôïò"; -$string['creatinglogentries'] = "Äçìéïõñãßá óõíäÝóåùí"; -$string['creatingnewcourse'] = "Äçìéïõñãßá íÝïõ ìáèÞìáôïò"; -$string['creatingscales'] = "Äçìéïõñãßá âáèìßäùí"; -$string['creatingsections'] = "Äçìéïõñãßá ôïìÝùí"; -$string['creatingtemporarystructures'] = "Äçìéïõñãßá ðñïóùñéíþí äïìþí"; -$string['creatingusers'] = "Äçìéïõñãßá ÷ñçóôþí"; -$string['creatingxmlfile'] = "Äçìéïõñãßá áñ÷åßïõ XML"; -$string['currentcourseadding'] = "ÔñÝ÷ïí ìÜèçìá, ðñïóèÞêç äåäïìÝíùí ó' áõôü"; -$string['currentcoursedeleting'] = "ÔñÝ÷ïí ìÜèçìá, äéáãñáöÞ ôïõ ðñþôá"; -$string['currentlanguage'] = "ÅðéëåãìÝíç ãëþóóá"; -$string['currentlocaltime'] = "ç ôùñéíÞ ôïðéêÞ þñá"; -$string['currentrelease'] = "Ðëçñïöïñßåò ôñÝ÷ïõóáò Ýêäïóçò"; -$string['currentversion'] = "ÔñÝ÷ïõóá Ýêäïóç"; -$string['databasechecking'] = "ÁíáâÜèìéóç ôçò âÜóçò äåäïìÝíùí ôïõ Moodle database áðü ôçí Ýêäïóç \$a->oldversion óôçí \$a->newversion..."; -$string['databasesetup'] = "Ñýèìéóç ôçò âÜóçò äåäïìÝíùí"; -$string['databasesuccess'] = "Ç âÜóç äåäïìÝíùí áíáâáèìßóôçêå åðéôõ÷þò"; -$string['databaseupgradebackups'] = "Ç Ýêäïóç áíôéãñÜöïõ áóöáëåßáò åßíáé ôþñá \$a"; -$string['databaseupgrades'] = "ÁíáâÜèìéóç ôçò âÜóçò äåäïìÝíùí"; -$string['day'] = "çìÝñá"; -$string['days'] = "çìÝñåò"; -$string['defaultcoursefullname'] = "¼íïìá ÌáèÞìáôïò 101"; -$string['defaultcourseshortname'] = "ÌÏ101"; -$string['defaultcoursestudent'] = "ÌáèçôÞò"; -$string['defaultcoursestudents'] = "ÌáèçôÝò"; -$string['defaultcoursesummary'] = "ÃñÜøôå ìéá ðåñéåêôéêÞ êáé åíäéáöÝñïõóá ðáñÜãñáöï ç ïðïßá íá åîçãåß ðåñß ôßíïò ðñüêåéôáé óå áõôü ôï ìÜèçìá"; -$string['defaultcourseteacher'] = "ÅêðáéäåõôÞò"; -$string['defaultcourseteachers'] = "ÅêðáéäåõôÝò"; -$string['delete'] = "ÄéáãñáöÞ"; -$string['deletecheck'] = "\$a - íá äéáãñáöåß;"; -$string['deletecheckfiles'] = "Åßóôå áðïëýôùò âÝâáéïé üôé èÝëåôå íá äéáãñÜøåôå áõôÜ ôá áñ÷åßá;"; -$string['deletecheckfull'] = "Åßóôå áðïëýôùò âÝâáéïé ðùò èÝëåôå íá äéáãñáöåß ôï \$a;"; -$string['deletecheckwarning'] = "Ðñüêåéôáé íá äéáãñáöïýí áõôÜ ôá áñ÷åßá"; -$string['deletecompletely'] = "Áðüëõôç äéáãñáöÞ"; -$string['deletecourse'] = "ÄéáãñáöÞ åíüò ìáèÞìáôïò"; -$string['deletecoursecheck'] = "Åßóôå áðïëýôùò âÝâáéïé ðùò èÝëåôå íá äéáãñÜøåôå åíôåëþò áõôü ôï ìÜèçìá êáé üëá ôá äåäïìÝíá ðïõ ðåñéÝ÷åé;"; -$string['deleted'] = "ÄéáãñÜöçêå"; -$string['deletedactivity'] = "\$a - äéáãñÜöçêå"; -$string['deletedcourse'] = "\$a äéáãñÜöçêå åíôåëþò"; -$string['deletednot'] = "\$a - äåí Þôáí äõíáôÞ ç äéáãñáöÞ!"; -$string['deletingcourse'] = "\$a - äéáãñáöÞ óå åîÝëéîç"; -$string['deletingexistingcoursedata'] = "ÄéáãñáöÞ õðáñ÷üíôùí äåäïìÝíùí ìáèÞìáôïò"; -$string['deletingolddata'] = "ÄéáãñáöÞ ðáëáéþí äåäïìÝíùí"; -$string['department'] = "ÔìÞìá"; -$string['description'] = "ÐåñéãñáöÞ"; -$string['detailedmore'] = 'ËåðôïìåñÞò'; -$string['detailedless'] = 'ÓõíïðôéêÞ'; -$string['displayingfirst'] = "Ìüíï ôá ðñþôá \$a->count \$a->things ðñïâÜëëïíôáé"; -$string['displayingrecords'] = "ÐñïâïëÞ \$a åããñáöþí"; -$string['displayingusers'] = "ÐñïâïëÞ ÷ñçóôþí \$a->start ìÝ÷ñé \$a->end"; -$string['documentation'] = "Ôåêìçñßùóç ôïõ Moodle"; -$string['donotask'] = "Ìçí ÑùôÜôå"; -$string['downloadexcel'] = "ÁðïèÞêåõóç óå ìïñöÞ Excel"; -$string['downloadtext'] = "ÁðïèÞêåõóç óå ìïñöÞ êåéìÝíïõ"; -$string['doyouagree'] = "¸÷åôå äéáâÜóåé êáé êáôáíïÞóåé áõôïýò ôïõò üñïõò;"; -$string['edit'] = "Åðåîåñãáóßá \$a"; -$string['editcoursesettings'] = "Åðåîåñãáóßá ôùí ñõèìßóåùí ôïõ ìáèÞìáôïò"; -$string['editinga'] = "Åðåîåñãáóßá åíüò \$a"; -$string['editmyprofile'] = "Åðåîåñãáóßá ôïõ ðñïößë"; -$string['editsummary'] = "Åðåîåñãáóßá ôçò óýíïøçò"; -$string['editthisactivity'] = "Åðåîåñãáóßá áõôÞò ôçò äñáóôçñéüôçôáò"; -$string['editthiscategory'] = "Åðåîåñãáóßá áõôÞò ôçò êáôçãïñßáò"; -$string['edituser'] = "Åðåîåñãáóßá ôùí ëïãáñéáóìþí ôùí ÷ñçóôþí"; -$string['email'] = "Äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ"; -$string['emailconfirm'] = "Åðéâåâáéþóôå ôï ëïãáñéáóìü óáò"; +\$a"; +$string['activityiscurrentlyhidden'] = "Äõóôõ÷þò áõôÞ ç äñáóôçñéüôçôá åßíáé ðñïò ôï ðáñüí êñõöÞ"; +$string['activitymodule'] = "Åíüôçôá äñáóôçñéüôçôáò"; +$string['activityreport'] = "ÁíáöïñÜ äñáóôçñéüôçôáò"; +$string['activityselect'] = "ÅðÝëåîå áõôÞ ôç äñáóôçñéüôçôá íá ìåôáêéíçèåß êÜðïõ áëëïý"; +$string['activitysince'] = "Äñáóôçñéüôçôá áðü \$a"; +$string['add'] = "ÐñïóèÞêç"; +$string['addadmin'] = "ÐñïóèÞêç äéá÷åéñéóôÞ"; +$string['addcreator'] = "ÐñïóèÞêç äçìéïõñãïý"; +$string['added'] = "ÐñïóôÝèçêå \$a"; +$string['addinganew'] = "ÐñïóèÞêç íÝáò \$a"; +$string['addinganewto'] = "ÐñïóèÝôåé íÝá \$a->óå ìéá \$a->óå"; +$string['addingdatatoexisting'] = "ÐñïóèÞêç äåäïìÝíùí óôá õðÜñ÷ïíôá"; +$string['addnewcategory'] = "ÐñïóèÞêç íÝáò êáôçãïñßáò"; +$string['addnewcourse'] = "ÐñïóèÞêç íÝïõ ìáèÞìáôïò"; +$string['addnewuser'] = "ÐñïóèÞêç íÝïõ ÷ñÞóôç"; +$string['address'] = "Äéåýèõíóç"; +$string['addstudent'] = "ÐñïóèÞêç ìáèçôÞ"; +$string['addteacher'] = "ÐñïóèÞêç åêðáéäåõôÞ"; +$string['admin'] = "Äéá÷åéñéóôÞò"; +$string['adminhelpaddnewuser'] = "Äçìéïõñãßá ëïãáñéáóìïý åíüò íÝïõ ÷ñÞóôç ÷åéñïêßíçôá"; +$string['adminhelpassignadmins'] = "Ïé äéá÷åéñéóôÝò ìðïñïýí íá êÜíïõí ïôéäÞðïôå êáé íá ðÜíå ïðïõäÞðïôå ó' áõôü ôï äéêôõáêü ôüðï"; +$string['adminhelpassigncreators'] = "Ïé äçìéïõñãïß ìðïñïýí íá äçìéïõñãÞóïõí íÝá ìáèÞìáôá êáé íá äéäÜîïõí ó' áõôÜ"; +$string['adminhelpassignstudents'] = "Ìðåßôå óå Ýíá ìÜèçìá êáé ðñïóèÝóôå ìáèçôÝò áðü ôï ìåíïý ôïõ äéá÷åéñéóôÞ"; +$string['adminhelpassignteachers'] = "Âñåò Ýíá ìÜèçìá êé Ýðåéôá ÷ñçóéìïðïßçóå ôï åéêïíßäéï ãéá íá ðñïóèÝóåéò êáèçãçôÝò"; +$string['adminhelpauthentication'] = "Ìðïñåßò íá ÷ñçóéìïðïéÞóåéò åóùôåñéêïýò ëïãáñéáóìïýò ÷ñçóôþí Þ åîùôåñéêÝò âÜóåéò äåäïìÝíùí"; +$string['adminhelpconfiguration'] = "Äéáìüñöùóç ôçò åìöÜíéóçò êáé ôçò ëåéôïõñãßáò ôïõ site"; +$string['adminhelpconfigvariables'] = "Äéáìüñöùóç ôùí ìåôáâëçôþí ðïõ åðçñåÜæïõí ôç ãåíéêÞ ëåéôïõñãßá ôïõ site"; +$string['adminhelpcourses'] = "¼ñéóå ìáèÞìáôá êáé êáôçãïñßåò êáé åê÷þñéóå Üôïìá ó' áõôÝò"; +$string['adminhelpedituser'] = "Îåöýëëéóå ôç ëßóôá ôùí ëïãáñéáóìþí ÷ñçóôþí êáé åðåîåñãÜóïõ êÜðïéåò áð' áõôÝò"; +$string['adminhelplanguage'] = "Ãéá Ýëåã÷ï êáé åðåîåñãáóßá ôïõ ôñÝ÷ïíôïò ãëùóóéêïý ðáêÝôïõ"; +$string['adminhelplogs'] = "Îåöýëëéóå ôéò óõíäÝóåéò üëùí ôùí äñáóôçñéïôÞôùí ó' áõôü ôï site"; +$string['adminhelpmanagedatabase'] = "Áðåõèåßáò ðñüóâáóç óôç âÜóç äåäïìÝíùí (ðñüóå÷å!)"; +$string['adminhelpmanagemodules'] = "Äéá÷åéñßóïõ ôéò åãêáôåóôçìÝíåò åíüôçôåò êáé ôéò ñõèìßóåéò ôïõò"; +$string['adminhelpsitefiles'] = "Ãéá Ýêäïóç ãåíéêþí áñ÷åßùí Þ öüñôùóç åîùôåñéêþí áíôéãñÜöùí áóöáëåßáò"; +$string['adminhelpsitesettings'] = "Ðñïóäéïñßóôå ðþò èá öáßíåôáé ç áñ÷éêÞ óåëßäá ôïõ site"; +$string['adminhelpthemes'] = "ÅðéëÝîôå ðþò èá öáßíåôáé ôï site (÷ñþìáôá, öüíôï êëð)"; +$string['adminhelpusers'] = "ÐéóôïðïéÞóôå ôïõò ÷ñÞóôåò êáé ôéò ñõèìßóåéò óáò"; +$string['administration'] = "Äéá÷åßñéóç"; +$string['administrator'] = "Äéá÷åéñéóôÞò"; +$string['administrators'] = "Äéá÷åéñéóôÝò"; +$string['again'] = "ðÜëé"; +$string['all'] = "¼ëá"; +$string['alldays'] = "üëåò ôéò çìÝñåò"; +$string['allfieldsrequired'] = "Áðáéôïýíôáé üëá ôá ðåäßá"; +$string['alllogs'] = "¼ëåò ïé óõíäÝóåéò"; +$string['allow'] = "ÅðéôñÝðåôáé"; +$string['allowguests'] = "ÁõôÞ ç åíüôçôá åðéôñÝðåé ôçí åßóïäï óå åðéóêÝðôåò"; +$string['allownot'] = "Äåí åðéôñÝðåôáé"; +$string['allparticipants'] = "¼ëïé ïé óõììåôÝ÷ïíôåò"; +$string['alphanumerical'] = "Ìðïñåß ìüíï íá ðåñéÝ÷åé ãñÜììáôá ôçò áëöáâÞôïõ Þ íïýìåñá"; +$string['alreadyconfirmed'] = "Ç êáôá÷þñçóç Ý÷åé Þäç åðéâåâáéùèåß"; +$string['answer'] = "ÁðÜíôçóç"; +$string['areyousuretorestorethis'] = "ÈÝëåôå íá óõíå÷ßóåôå;"; +$string['areyousuretorestorethisinfo'] = "Áñãüôåñá ó' áõôÞ ôç äéáäéêáóßá èá Ý÷åôå ôçí åðéëïãÞ ôçò ðñïóèÞêçò áõôïý ôïõ áíôéãñÜöïõ áóöáëåßáò óå Ýíá õðÜñ÷ïí ìÜèçìá Þ ôçò äçìéïõñãßáò åíüò åíôåëþò íÝïõ ìáèÞìáôïò."; +$string['assessment'] = "Áðïôßìçóç"; +$string['assignadmins'] = "Ðñïóäéïñéóìüò äéá÷åéñéóôþí"; +$string['assigncreators'] = "Ðñïóäéïñéóìüò äçìéïõñãþí"; +$string['assignstudents'] = "ÅããñáöÞ ìáèçôþí"; +$string['assignstudentsnote'] = "Óçìåßùóç: ìðïñåß íá ìçí åßíáé áðáñáßôçôï íá ÷ñçóéìïðïéÞóåôå áõôÞ ôç óåëßäá, åöüóïí åßíáé ðéèáíü ãéá ôïõò ìáèçôÝò íá åããñÜøïõí ôïõò åáõôïýò ôïõò ó' áõôü ôï ìÜèçìá."; +$string['assignstudentspass'] = "Ôï ìüíï ðïõ ÷ñåéÜæåôáé íá êÜíåéò åßíáé íá ãíùóôïðïéÞóåéò óôïõò ìáèçôÝò óïõ ôï ðëÞêôñï åããñáöÞò ãé' áõôü ôï ìÜèçìá, ôï ïðïßï Ý÷åé ðñïò ôï ðáñüí ñõèìéóôåß óå: '\$a'"; +$string['assignteachers'] = "Ðñïóäéïñéóìüò åêðáéäåõôþí"; +$string['authentication'] = "Ðéóôïðïßçóç"; +$string['autosubscribe'] = "Áõôüìáôç åããñáöÞ óôéò ïìÜäåò óõæçôÞóåùí"; +$string['autosubscribeno'] = "¼÷é: íá ìçí åããñÜöïìáé áõôüìáôá óå ïìÜäåò óõæçôÞóåùí"; +$string['autosubscribeyes'] = "Íáé: üôáí áíáñôþ áíáêïéíþóåéò óå ìéá ïìÜäá óõæçôÞóåùí íá åããñÜöïìáé áõôüìáôá óå áõôÞ"; +$string['availability'] = "Äéáèåóéìüôçôá"; +$string['availablecourses'] = "ÄéáèÝóéìá ÌáèÞìáôá"; +$string['backup'] = "Áíôßãñáöï áóöáëåßáò"; +$string['backupdate'] = "Çìåñïìçíßá áíôßãñáöïõ áóöáëåßáò"; +$string['backupdetails'] = "ËåðôïìÝñåéåò áíôßãñáöïõ áóöáëåßáò"; +$string['backupfilename'] = "áíôßãñáöï áóöáëåßáò"; +$string['backupfinished'] = "Ôï áíôßãñáöï áóöáëåßáò ïëïêëçñþèçêå åðéôõ÷þò"; +$string['backupnameformat'] = "%%Y%%m%%d-%%H%%M"; +$string['backuporiginalname'] = "¼íïìá áíôßãñáöïõ áóöáëåßáò"; +$string['backupversion'] = "¸êäïóç áíôßãñáöïõ áóöáëåßáò"; +$string['cancel'] = "Áêýñùóç"; +$string['categories'] = "Êáôçãïñßåò åíïôÞôùí"; +$string['category'] = "Êáôçãïñßá "; +$string['categoryadded'] = "Ç êáôçãïñßá '\$a' ðñïóôÝèçêå"; +$string['categorydeleted'] = "Ç êáôçãïñßá '\$a' äéáãñÜöçêå"; +$string['categoryduplicate'] = "ÕðÜñ÷åé Þäç êáôçãïñßá ìå ôï üíïìá '\$a'!"; +$string['changedpassword'] = "Ï êùäéêüò ðñüóâáóçò Üëëáîå"; +$string['changepassword'] = "ÁëëáãÞ ôïõ êùäéêïý ðñüóâáóçò"; +$string['changessaved'] = "Ïé áëëáãÝò áðïèçêåýôçêáí"; +$string['checkingbackup'] = "¸ëåã÷ïò áíôéãñÜöïõ áóöáëåßáò"; +$string['checkingcourse'] = "¸ëåã÷ïò ìáèÞìáôïò"; +$string['checkinginstances'] = "¸ëåã÷ïò ðåñéðôþóåùí"; +$string['checkingsections'] = "¸ëåã÷ïò ôìçìÜôùí"; +$string['checklanguage'] = "ÅëÝãîôå ôçí ãëþóóá"; +$string['choose'] = "ÅðéëÝîôå"; +$string['choosecourse'] = "ÅðéëÝîôå Ýíá ìÜèçìá"; +$string['chooselivelogs'] = "Þ ðáñáêïëïõèÞóôå ôçí ôñÝ÷ïõóá äñáóôçñéüôçôá"; +$string['chooselogs'] = "ÅðéëÝîôå ðïéÝò êáôá÷ùñÞóåéò èÝëåôå íá äåßôå"; +$string['choosetheme'] = "ÅðéëÝîôå Ýíá èÝìá"; +$string['chooseuser'] = "ÅðéëÝîôå Ýíá ÷ñÞóôç"; +$string['city'] = "Ðüëç/÷ùñéü"; +$string['cleaningtempdata'] = "Êáèáñéóìüò äåäïìÝíùí"; +$string['closewindow'] = "Êëåßóôå áõôü ôï ðáñÜèõñï"; +$string['comparelanguage'] = "Óýãêñéíåôå êáé åðåîåñãáóôåßôå ôçí ÷ñçóéìïðïéïýìåíç ãëþóóá"; +$string['complete'] = "ÏëïêëÞñùóç"; +$string['configcountry'] = "ÅÜí èÝóåôå ìßá ÷þñá åäþ, ôüôå áõôÞ ç ÷þñá èá ôåèåß óáí ðñïêáèïñéóìÝíç óå íÝïõò ëïãáñéáóìïýò ÷ñçóôþí. Ãéá íá áíáãêÜóåôå ôïõò ÷ñÞóôåò íá äéáëÝîïõí ÷þñá, áðëÜ áöÞóôå ôï êåíü."; +$string['configdebug'] = "ÅÜí áõôü ôåèåß óå ëåéôïõñãßá, ôüôå áíáöïñÝò ëáèþí ôçò php èá åßíáé ðéü ëåðôïìåñåßò êáé ðéï ðïëëÝò ðñïåéäïðïéÞóåéò èá ôõðùèïýí. Áõôü ÷ñçóéìåýåé ìüíï óå õðåõèýíïõò ãéá ôçí áíÜðôõîç."; +$string['configerrorlevel'] = "ÅðéëÝîôå ôçí ðïóüôçôá ôùí ðñïåéäïðïéÞóåùí php ðïõ èÝëåôå íá åìöáíßæïíôáé. Ôï êáíïíéêü åßíáé óõíÞèùò ç êáëýôåñç åðéëïãÞ."; +$string['configframename'] = "Áí åìâõèßæåôå ôï Moodle óå Ýíá frame, ôüôå âÜëôå ôï üíïìá ôïõ frame åäþ. Áëëéþò áõôÞ ç ôéìÞ èá ðñÝðåé íá ðáñáìåßíåé '_top'"; +$string['configgdversion'] = "Õðïäåßîôå ôçí Ýêäïóç ôïõ GD ðïõ åßíáé åãêáôåóôçìÝíç. Ç Ýêäïóç ðïõ Ý÷åé ðñïêáèïñéóôåß åßíáé áõôÞ ðïõ Ý÷åé áõôüìáôá åðéëåãåß. Ìçí ôï áëëÜîåôå áõôü åêôüò êé áí îÝñåôå ðñáãìáôéêÜ ôé êÜíåôå."; +$string['confightmleditor'] = "ÅðéëÝîôå åáí ðñÝðåé íá åðéôñáðåß ç ÷ñÞóç ôïõ åíóùìáôùìÝíïõ åðåîåñãáóôÞ êåéìÝíùí HTML. Áêüìá êé áí åðéëÝîåôå íá åðéôñáðåß, áõôüò ï åðåîåñãáóôÞò èá åìöáíéóôåß ìüíï åÜí ï ÷ñÞóôçò ÷ñçóéìïðïéåß Ýíáí óõìâáôü ðëïçãü (Äçë. IE 5.5 Þ åðüìåíç Ýêäïóç). Ïé ÷ñÞóôåò ìðïñïýí åðßóçò íá åðéëÝîïõí íá ìçí ôï ÷ñçóéìïðïéÞóïõí."; +$string['configidnumber'] = "ÁõôÞ ç åðéëïãÞ ðñïóäéïñßæåé áí (á)Äåí æçôåßôáé êáèüëïõ óôïõò ÷ñÞóôåò áñéèìüò ID, (â)Æçôåßôáé áðü ôïõò ÷ñÞóôåò Ýíáò áñéèìüò ID áëëÜ ìðïñïýí íá ôï áöÞóïõí êåíü Þ (ã)Æçôåßôáé áðü ôïõò ÷ñÞóôåò Ýíáò áñéèìüò ID êáé äåí ìðïñïýí íá ôï áöÞóïõí êåíü. Áí äïèåß, ï áñéèìüò ID ôïõ ÷ñÞóôç åìöáíßæåôáé óôï Ðñïößë."; +$string['configintro'] = "Óå áõôÞ ôç óåëßäá ìðïñåßôå íá äéåõêñéíÞóåôå Ýíáí áñéèìü ìåôáâëçôþí ðïõ âïçèïýí ôï Moodle íá äïõëÝøåé êáëýôåñá. Ìçí áíçóõ÷åßôå éäéáßôåñá ãéá áõôÝò - ïé ðñïêáèáñéóìÝíåò ôéìÝò äïõëåýïõí êáëÜ êáé ìðïñåßôå ðÜíôá íá åðéóôñÝøåôå óå áõôÞ ôç óåëßäá êáé íá ôéò ôñïðïðïéÞóåôå."; +$string['configintroadmin'] = "Óå áõôÞ ôç óåëßäá ìðïñåßôå íá ñõèìßóåôå ôïí êýñéï ëïãáñéáóìü äéá÷åßñéóçò ï ïðïßïò èá Ý÷åé ðëÞñç Ýëåã÷ï ðÜíù óôï äéêôõáêü ôüðï. Âåâáéùèåßôå ðùò ôïõ áíôéóôïé÷åßôå áóöáëÝò üíïìá ÷ñÞóôç êáé êùäéêü ðñüóâáóçò êáèþò êáé Ýãêõñç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ. Ìðïñåßôå íá äçìéïõñãÞóåôå ðåñéóóüôåñïõò ëïãáñéáóìïýò äéá÷åßñéóçò áñãüôåñá."; +$string['configintrosite'] = "Óå áõôÞ ôç óåëßäá ìðïñåßôå íá ñõèìßóåôå ôçí áñ÷éêÞ óåëßäá êáé ôï üíïìá áõôïý ôïõ íÝïõ äéêôõáêïý ôüðïõ. Ìðïñåßôå íá åðéóôñÝøåôå åäþ áñãüôåñá êáé íá áëëÜîåôå áõôÝò ôéò ñõèìßóåéò ÷ñçóéìïðïéþíôáò ôï óýíäåóìï 'Ñõèìßóåéò äéêôõáêïý ôüðïõ' óôçí áñ÷éêÞ óåëßäá."; +$string['configlang'] = "ÅðéëÝîôå ìéá ãëþóóá ãéá ôï óýíïëï ôïõ äéêôõáêïý ôüðïõ. Ïé ÷ñÞóôåò ìðïñïýí íá áãíïÞóïõí áñãüôåñá áõôÞ ôçí åðéëïãÞ."; +$string['configlangdir'] = "Ïé ðåñéóóüôåñò ãëþóóåò ãñÜöïíôáé áðü áñéóôåñÜ ðñïò äåîéÜ, áëëÜ ìåñéêÝò, üðùò ç ÁñáâéêÞ êáé ç ÅâñáúêÞ, ãñÜöïíôáé áðü äåîéÜ ðñïò áñéóôåñÜ."; +$string['configlanglist'] = "ÁöÞóôå ôï êåíü ãéá íá åðéôñÝøåôå óôïõò ÷ñÞóôåò íá åðéëÝîïõí áðü ïðïéáäÞðïôå ãëþóóá åßíáé äéáèÝóéìç óå áõôÞ ôçí åãêáôÜóôáóç ôïõ Moodle. Ùóôüóï, ìðïñåßôå íá ðåñéïñßóåôå ôçí åðéëïãÞ åéóÜãïíôáò ìéá ëßóôá êùäéêþí ãëùóóþí ÷ùñéóìÝíïõò ìå êüììá. Ãéá ðáñÜäåéãìá: en,es_es,fr,it"; +$string['configlangmenu'] = "ÅðéëÝîôå áí èÝëåôå íá åìöáíßæåôáé Þ ü÷é ôï ãåíéêü ìåíïý åðéëïãÞò ãëþóóáò óôçí áñ÷éêÞ óåëßäá, óôç óåëßäá óýíäåóçò êôë. Áõôü äåí åðçñåÜæåé ôç äõíáôüôçôá ôùí ÷ñçóôþí íá ïñßæïõí ôçí ðñïôéìþìåíç ãëþóóá óôï äéêü ôïõò ðñïößë ."; +$string['configlocale'] = "ÅðéëÝîôå ìéá ÷þñá ãéá ôï óýíïëï ôïõ äéêôõáêïý ôüðïõ. Áõôü èá åðçñåÜóåé ôç ìïñöÞ êáé ôç ãëþóóá ôùí çìåñïìçíéþí. Ôá äåäïìÝíá ãéá ôç ÷þñá áõôÞ èá ðñÝðåé íá åßíáé åãêáôçóôçìÝíá óôï ëåéôïõñãéêü óýóôçìá. (ð÷. en_US Þ es_ES Þ el_GR). Áí äåí åßóôå âÝâáéïé áöÞóôå ôï êåíü."; +$string['configloglifetime'] = "Áõôü êáèïñßæåé ôï åýñïò ÷ñüíïõ ãéá ôï ïðïßï èÝëåôå íá ôçñåßôå áñ÷åßá êáôáãñáöÞò ó÷åôéêÜ ìå ôç äñáóôçñéüôçôá ôùí ÷ñçóôþí. Áñ÷åßá êáôáãñáöÞò ìåãáëýôåñá áðü áõôü äéáãñÜöïíôáé áõôüìáôá. Ôï êáëýôåñï åßíáé íá ôçñåßôå áñ÷åßá êáôáãñáöÞò ãéá ôï ìåãáëýôåñï äõíáôü äéÜóôçìá, ãéá ôçí ðåñßðôùóç ðïõ ôá ÷ñåéáóôåßôå, áëëÜ áí ï äéáêïìéóôÞò åßíáé ðïëý áðáó÷ïëçìÝíïò êáé Ý÷åôå ðñïâëÞìáôá áðüäïóçò ßóùò íá èÝëåôå íá ìåéþóåôå ôï ÷ñüíï æùÞò ôùí áñ÷åßùí êáôáãñáöÞò."; +$string['configlongtimenosee'] = "Áí ïé ìáèçôÝò êÜíïõí ðïëý êáéñü íá ÷ñçóéìïðïéÞóïõí ôï óýóôçìá, ôüôå áõôüìáôá èá äéáãñáöïýí áðü ôá ìáèÞìáôá. ÁõôÞ ç ðáñÜìåôñïò êáèïñßæåé áõôü ôï ÷ñïíéêü üñéï."; +$string['configmaxeditingtime'] = "Áõôü êáèïñßæåé ôï ÷ñüíï ìÝóá óôïí ïðïßï êÜðïéïò ðñÝðåé íá åðåîåñãáóôåß îáíÜ áíáêïéíþóåéò, çìåñïëüãéá êôë. 30 ëåðôÜ åßíáé óõíÞèùò ìéá êáëÞ ôéìÞ."; +$string['configproxyhost'] = "Áí áõôüò ï åîõðçñåôçôÞò ÷ñåéÜæåôáé Ýíáí äéáêïìéóôÞ ìåóïëÜâçóçò (proxy, ð÷ Ýíá firewall) ãéá íá Ý÷åé ðñüóâáóç óôï Äéáäßêôõï, ôüôå äçëþóôå ôç äéåýèõíóç êáé ôç èýñá ôïõ åäþ. Áëëéþò áöÞóôå ôï êåíü."; +$string['configsecureforms'] = "Ôï Moodle ìðïñåß íá ÷ñçóéìïðïéÞóåé Ýíá åðéðëÝïí åðßðåäï áóöÜëåéáò üôáí äÝ÷åôáé äåäïìÝíá áðü öüñìåò. Áí áõôü åíåñãïðïéçèåß ôüôå ç ìåôáâëçôÞ HTTP_REFERER ôïõ öõëëïìåôñçôÞ èá åëÝã÷åôáé áí åßíáé ßäéá ìå ôç äéåýèõíóç ôçò öüñìáò. Óå ìåñéêÝò ðåñéðôþóåéò, áí ï ÷ñÞóôçò ÷ñçóéìïðïéåß firewall (ð.÷. Zonealarm) ôï ïðïßï íá áöáéñåß ôï HTTP_REFERER áðü ôá äåäïìÝíá ðïõ äéáêéíïýíôáé, áõôü ìðïñåß íá ðñïêáëÝóåé ðñïâëÞìáôá. Ôï óýìðôùìá ðïõ èá åìöáíéóôåß èá åßíáé íá 'êïëëÜåé' Ýíáò ÷ñÞóôçò óå ìéá öüñìá. Áí ïé ÷ñÞóôåò óáò Ý÷ïõí ðñüâëçìá ìå ôç óåëßäá óýíäåóçò (ãéá ðáñÜäåéãìá) ôüôå ßóùò èá èÝëåôå íá áðåíåñãïðïéÞóåôå áõôÞ ôçí åðéëïãÞ, áí êáé áõôü èá áöÞóåé ôï äéêôõáêü óáò ôüðï ðéï áíïé÷ôü óå åðéèÝóåéò brute force. Áí äåí åßóôå óßãïõñïé áöÞóôå ôï óôç èÝóç 'Íáé'."; +$string['configsessiontimeout'] = "Áí ïé ÷ñÞóôåò ðïõ Ý÷ïõí óõíäåèåß äåí åêôåëïýí êáìéÜ äñáóôçñéüôçôá óå áõôü ôï äéêôõáêü ôüðï, ôüôå áðïóõíäÝïíôáé áõôüìáôá (ç óõíåäñßá ôïõò ëÞãåé). ÁõôÞ ç ìåôáâëçôÞ êáèïñßæåé ðüóï èá åßíáé áõôü ôï äéÜóôçìá."; +$string['configslasharguments'] = "Áñ÷åßá (öïñôþóåéò åéêüíùí, áñ÷åßùí êôë) ðáñÝ÷ïíôáé áðü Ýíá ìéêñü ðñüãñáììá ÷ñçóéìïðïéþíôáò 'ðáñáìÝôñïõò slash' (åäþ ç äåýôåñç åðéëïãÞ). ÁõôÞ ç ìÝèïäïò åðéôñÝðåé óå áñ÷åßá íá áðïèçêåýïíôáé ðéï åýêïëá óôçí åíäéÜìåóç ìíÞìç ôïõ öõëëïìåôñçôÞ Þ ôïõ äéáêïìéóôÞ ìåóïëÜâçóçò êôë. Äõóôõ÷þò, ïñéóìÝíïé åîõðçñåôçôÝò PHP äåí åðéôñÝðïõí áõôÞ ôç ìÝèïäï êáé Ýôóé áí Ý÷åôå ðñüâëçìá óôçí ðñïâïëÞ áñ÷åßùí Þ åéêüíùí ðïõ Ý÷ïõí öïñôùèåß åðéëÝîôå ôçí ðñþôç ôéìÞ ãéá áõôÞ ôç ìåôáâëçôÞ."; +$string['configsmtphosts'] = "Äþóôå ôï ðëÞñåò üíïìá åíüò Þ ðåñéóóïôÝñùí ôïðéêþí åîõðçñåôçôþí SMTP ôïõò ïðïßïõò èá ðñÝðåé íá ÷ñçóéìïðïéÞóåé ôï Moodle þóôå íá óôåßëåé ìçíýìáôá çëåêôñïíéêïý ôá÷õäñïìåßïõ (ð÷. 'mail.a.com' Þ 'mail.a.com;mail.b.com'). Áí ôï áöÞóåôå êåíü, ôï Moodle èá ÷ñçóéìïðïéÞóåé ôçí ðñïêáèïñéóìÝíç ìÝèïäï ôçò PHP ãéá ôçí áðïóôïëÞ ôùí ìçíõìÜôùí."; +$string['configsmtpuser'] = "Áí Ý÷åôå êáèïñßóåé åîõðçñåôçôÞ SMTP ðéï ðÜíù êáé ï åîõðçñåôçôÞò áðáéôåß ðéóôïðïßçóç ôüôå åéóÜãåôå ôï üíïìá ÷ñÞóôç êáé ôïí êùäéêü ðñüóâáóçò åäþ."; +$string['configteacherassignteachers'] = "Èá ðñÝðåé íá åðéôñÝðåôáé óôïõò óõíÞèåéò êáèçãçôÝò íá êáèïñßæïõí Üëëïõò êáèçãçôÝò óôá ìáèÞìáôá; Áí '¼÷é', ôüôå ìüíï ïé äçìéïõñãïß êáé ïé äéá÷åéñéóôÝò ìðïñïýí íá êáèïñßóïõí êáèçãçôÝò."; +$string['configunzip'] = "Õðïäåßîôå ôç èÝóç ôïõ ðñïãñÜììáôïò áðïóõìðßåóçò (unzip, ìüíï óå Unix). Áí ðñïóäéïñéóôåß, èá ÷ñçóéìïðïéçèåß ãéá íá áðïóõìðéÝæïíôáé óôïí åîõðçñåôçôÞ óõìðéåóìÝíá áñ÷åßá. Áí ôï áöÞóåôå êåíü, ôüôå ôï Moodle èá ÷ñçóéìïðïéÞóåé åóùôåñéêÝò ñïõôßíåò."; +$string['configuration'] = "Äéáìüñöùóç"; +$string['configvariables'] = "ÌåôáâëçôÝò"; +$string['configwarning'] = "Íá åßóôå ðñïóåêôéêïß óôç äéáìüñöùóç áõôþí ôùí ìåôáâëçôþí - ïé ðåñßåñãåò ôéìÝò ìðïñåß íá ðñïêáëÝóïõí ðñïâëÞìáôá"; +$string['configzip'] = "Õðïäåßîôå ôç èÝóç ôïõ ðñïãñÜììáôïò óõìðßåóçò (zip, ìüíï óå Unix). Áí êáèïñéóôåß, èá ÷ñçóéìïðïéçèåß ãéá íá óõìðéÝæïíôáé óôïí åîõðçñåôçôÞ áñ÷åßá. Áí ôï áöÞóåéò êåíü, ôüôå ôï Moodle èá ÷ñçóéìïðïéÞóåé åóùôåñéêÝò ñïõôßíåò."; +$string['confirmed'] = "Ç åããñáöÞ óáò åðéâåâáéþèçêå"; +$string['confirmednot'] = "Ç åããñáöÞ óáò äåí Ý÷åé åðéâåâáéùèåß áêüìç!"; +$string['continue'] = "ÓõíÝ÷åéá"; +$string['cookiesenabled'] = "Ôá cookies ðñÝðåé íá åßíáé åíåñãïðïéçìÝíá óôï öõëëïìåôñçôÞ óáò"; +$string['copy'] = "áíôéãñáöÞ"; +$string['copyingcoursefiles'] = "ÁíôéãñáöÞ áñ÷åßùí ìáèçìÜôùí"; +$string['copyinguserfiles'] = "ÁíôéãñáöÞ áñ÷åßùí ÷ñÞóôç"; +$string['copyingzipfile'] = "ÁíôéãñáöÞ óõìðéåóìÝíïõ áñ÷åßïõ"; +$string['copyrightnotice'] = "Óçìåßùóç ðíåõìáôéêþí äéêáéùìÜôùí"; +$string['country'] = "×þñá"; +$string['course'] = "ÌÜèçìá"; +$string['courseavailable'] = "Áõôü ôï ìÜèçìá åßíáé äéáèÝóéìï óå ìáèçôÝò"; +$string['courseavailablenot'] = "Áõôü ôï ìÜèçìá äåí åßíáé äéáèÝóéìï óå ìáèçôÝò"; +$string['coursebackup'] = "Áíôßãñáöï áóöáëåßáò ìáèÞìáôïò"; +$string['coursecategories'] = "Êáôçãïñßåò ìáèÞìáôïò"; +$string['coursecategory'] = "Êáôçãïñßá ìáèÞìáôïò"; +$string['coursecreators'] = "Äçìéïõñãïß ìáèÞìáôïò"; +$string['coursefiles'] = "Áñ÷åßá ìáèÞìáôïò"; +$string['courseformats'] = "Ôýðïé ìáèÞìáôïò"; +$string['coursegrades'] = "Âáèìïß ìáèÞìáôïò"; +$string['courseinfo'] = "Ðëçñïöïñßåò ìáèÞìáôïò"; +$string['courserestore'] = "ÅðáíáöïñÜ ìáèÞìáôïò"; +$string['courses'] = "ÌáèÞìáôá"; +$string['courseupdates'] = "Åíçìåñþóåéò ìáèÞìáôïò"; +$string['create'] = "Äçìéïõñãßá"; +$string['createaccount'] = "Äçìéïõñãßá ôïõ íÝïõ ìïõ ëïãáñéáóìïý"; +$string['createfolder'] = "Äçìéïýñãçóå Ýíáí öÜêåëï óôï \$a"; +$string['createuserandpass'] = "Äçìéïõñãßá åíüò íÝïõ ïíüìáôïò ÷ñÞóôç êáé êùäéêïý ðñüóâáóçò ãéá åßóïäï óôï óýóôçìá"; +$string['createziparchive'] = "Äçìéïõñãßá óõìðéåóìÝíïõ áñ÷åßïõ"; +$string['creatingcategoriesandquestions'] = "Äçìéïõñãßá êáôçãïñéþí êáé åñùôÞóåùí"; +$string['creatingcoursemodules'] = "Äçìéïõñãßá åíïôÞôùí ìáèÞìáôïò"; +$string['creatinglogentries'] = "Äçìéïõñãßá óõíäÝóåùí"; +$string['creatingnewcourse'] = "Äçìéïõñãßá íÝïõ ìáèÞìáôïò"; +$string['creatingscales'] = "Äçìéïõñãßá âáèìßäùí"; +$string['creatingsections'] = "Äçìéïõñãßá ôïìÝùí"; +$string['creatingtemporarystructures'] = "Äçìéïõñãßá ðñïóùñéíþí äïìþí"; +$string['creatingusers'] = "Äçìéïõñãßá ÷ñçóôþí"; +$string['creatingxmlfile'] = "Äçìéïõñãßá áñ÷åßïõ XML"; +$string['currentcourseadding'] = "ÔñÝ÷ïí ìÜèçìá, ðñïóèÞêç äåäïìÝíùí ó' áõôü"; +$string['currentcoursedeleting'] = "ÔñÝ÷ïí ìÜèçìá, äéáãñáöÞ ôïõ ðñþôá"; +$string['currentlanguage'] = "ÅðéëåãìÝíç ãëþóóá"; +$string['currentlocaltime'] = "ç ôùñéíÞ ôïðéêÞ þñá"; +$string['currentrelease'] = "Ðëçñïöïñßåò ôñÝ÷ïõóáò Ýêäïóçò"; +$string['currentversion'] = "ÔñÝ÷ïõóá Ýêäïóç"; +$string['databasechecking'] = "ÁíáâÜèìéóç ôçò âÜóçò äåäïìÝíùí ôïõ Moodle database áðü ôçí Ýêäïóç \$a->oldversion óôçí \$a->newversion..."; +$string['databasesetup'] = "Ñýèìéóç ôçò âÜóçò äåäïìÝíùí"; +$string['databasesuccess'] = "Ç âÜóç äåäïìÝíùí áíáâáèìßóôçêå åðéôõ÷þò"; +$string['databaseupgradebackups'] = "Ç Ýêäïóç áíôéãñÜöïõ áóöáëåßáò åßíáé ôþñá \$a"; +$string['databaseupgrades'] = "ÁíáâÜèìéóç ôçò âÜóçò äåäïìÝíùí"; +$string['day'] = "çìÝñá"; +$string['days'] = "çìÝñåò"; +$string['defaultcoursefullname'] = "¼íïìá ÌáèÞìáôïò 101"; +$string['defaultcourseshortname'] = "ÌÏ101"; +$string['defaultcoursestudent'] = "ÌáèçôÞò"; +$string['defaultcoursestudents'] = "ÌáèçôÝò"; +$string['defaultcoursesummary'] = "ÃñÜøôå ìéá ðåñéåêôéêÞ êáé åíäéáöÝñïõóá ðáñÜãñáöï ç ïðïßá íá åîçãåß ðåñß ôßíïò ðñüêåéôáé óå áõôü ôï ìÜèçìá"; +$string['defaultcourseteacher'] = "ÅêðáéäåõôÞò"; +$string['defaultcourseteachers'] = "ÅêðáéäåõôÝò"; +$string['delete'] = "ÄéáãñáöÞ"; +$string['deletecheck'] = "\$a - íá äéáãñáöåß;"; +$string['deletecheckfiles'] = "Åßóôå áðïëýôùò âÝâáéïé üôé èÝëåôå íá äéáãñÜøåôå áõôÜ ôá áñ÷åßá;"; +$string['deletecheckfull'] = "Åßóôå áðïëýôùò âÝâáéïé ðùò èÝëåôå íá äéáãñáöåß ôï \$a;"; +$string['deletecheckwarning'] = "Ðñüêåéôáé íá äéáãñáöïýí áõôÜ ôá áñ÷åßá"; +$string['deletecompletely'] = "Áðüëõôç äéáãñáöÞ"; +$string['deletecourse'] = "ÄéáãñáöÞ åíüò ìáèÞìáôïò"; +$string['deletecoursecheck'] = "Åßóôå áðïëýôùò âÝâáéïé ðùò èÝëåôå íá äéáãñÜøåôå åíôåëþò áõôü ôï ìÜèçìá êáé üëá ôá äåäïìÝíá ðïõ ðåñéÝ÷åé;"; +$string['deleted'] = "ÄéáãñÜöçêå"; +$string['deletedactivity'] = "\$a - äéáãñÜöçêå"; +$string['deletedcourse'] = "\$a äéáãñÜöçêå åíôåëþò"; +$string['deletednot'] = "\$a - äåí Þôáí äõíáôÞ ç äéáãñáöÞ!"; +$string['deletingcourse'] = "\$a - äéáãñáöÞ óå åîÝëéîç"; +$string['deletingexistingcoursedata'] = "ÄéáãñáöÞ õðáñ÷üíôùí äåäïìÝíùí ìáèÞìáôïò"; +$string['deletingolddata'] = "ÄéáãñáöÞ ðáëáéþí äåäïìÝíùí"; +$string['department'] = "ÔìÞìá"; +$string['description'] = "ÐåñéãñáöÞ"; +$string['displayingfirst'] = "Ìüíï ôá ðñþôá \$a->count \$a->things ðñïâÜëëïíôáé"; +$string['displayingrecords'] = "ÐñïâïëÞ \$a åããñáöþí"; +$string['displayingusers'] = "ÐñïâïëÞ ÷ñçóôþí \$a->start ìÝ÷ñé \$a->end"; +$string['documentation'] = "Ôåêìçñßùóç ôïõ Moodle"; +$string['donotask'] = "Ìçí ÑùôÜôå"; +$string['downloadexcel'] = "ÁðïèÞêåõóç óå ìïñöÞ Excel"; +$string['downloadtext'] = "ÁðïèÞêåõóç óå ìïñöÞ êåéìÝíïõ"; +$string['doyouagree'] = "¸÷åôå äéáâÜóåé êáé êáôáíïÞóåé áõôïýò ôïõò üñïõò;"; +$string['edit'] = "Åðåîåñãáóßá \$a"; +$string['editcoursesettings'] = "Åðåîåñãáóßá ôùí ñõèìßóåùí ôïõ ìáèÞìáôïò"; +$string['editinga'] = "Åðåîåñãáóßá åíüò \$a"; +$string['editmyprofile'] = "Åðåîåñãáóßá ôïõ ðñïößë"; +$string['editsummary'] = "Åðåîåñãáóßá ôçò óýíïøçò"; +$string['editthisactivity'] = "Åðåîåñãáóßá áõôÞò ôçò äñáóôçñéüôçôáò"; +$string['editthiscategory'] = "Åðåîåñãáóßá áõôÞò ôçò êáôçãïñßáò"; +$string['edituser'] = "Åðåîåñãáóßá ôùí ëïãáñéáóìþí ôùí ÷ñçóôþí"; +$string['email'] = "Äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ"; +$string['emailconfirm'] = "Åðéâåâáéþóôå ôï ëïãáñéáóìü óáò"; $string['emailconfirmation'] = "ÃåéÜ óáò, ¸÷åé ãßíåé áßôçóç åíüò íÝïõ ëïãáñéáóìïý óôï '\$a->sitename' @@ -244,18 +242,18 @@ $string['emailconfirmation'] = " ÖéëéêÜ, ï äéá÷åéñéóôÞò ôïõ '\$a->sitename', -\$a->admin"; -$string['emailconfirmationsubject'] = "\$a: åðéâåâáßùóç ëïãáñéáóìïý"; +\$a->admin"; +$string['emailconfirmationsubject'] = "\$a: åðéâåâáßùóç ëïãáñéáóìïý"; $string['emailconfirmsent'] = "

        ¸íá ìÞíõìá çëåêôñïíéêïý ôá÷õäñïìåßïõ èá ðñÝðåé íá Ý÷åé óôáëåß óôç äéåýèõíóÞ óáò, \$a

        ÐåñéÝ÷åé áðëÝò ïäçãßåò ãéá ôçí ïëïêëÞñùóç ôçò åããñáöÞò óáò. -

        Áí óõíå÷ßæåôå íá áíôéìåôùðßæåôáé äõóêïëßåò, åðéêïéíùíÞóôå ìå ôï äéá÷åéñéóôÞ ôïõ äéêôõáêïý ôüðïõ."; -$string['emaildisplay'] = "Áðüêñõøç ôçò äéåýèõíóçò çëåêôñïíéêïý ôá÷õäñïìåßïõ"; -$string['emaildisplaycourse'] = "Ç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ ìïõ åßíáé ïñáôÞ ìüíï óôá Üëëá ìÝëç ôïõ ìáèÞìáôïò"; -$string['emaildisplayno'] = "Áðüêñõøç ôçò ðñáãìáôéêÞò äéåýèõíóçò çëåêôñïíéêïý ôá÷õäñïìåßïõ ìïõ ãéá üëïõò"; -$string['emaildisplayyes'] = "Ç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ ìïõ åßíáé ïñáôÞ óå üëïõò ôïõò ÷ñÞóôåò"; -$string['emailexists'] = "ÁõôÞ ç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ Ý÷åé Þäç åããñáöåß."; -$string['emailformat'] = "ÌïñöÞ ìçíýìáôïò çëåêôñïíéêïý ôá÷õäñïìåßïõ"; -$string['emailmustbereal'] = "Óçìåßùóç: ç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ óáò ðñÝðåé íá åßíáé ðñáãìáôéêÞ"; +

        Áí óõíå÷ßæåôå íá áíôéìåôùðßæåôáé äõóêïëßåò, åðéêïéíùíÞóôå ìå ôï äéá÷åéñéóôÞ ôïõ äéêôõáêïý ôüðïõ."; +$string['emaildisplay'] = "Áðüêñõøç ôçò äéåýèõíóçò çëåêôñïíéêïý ôá÷õäñïìåßïõ"; +$string['emaildisplaycourse'] = "Ç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ ìïõ åßíáé ïñáôÞ ìüíï óôá Üëëá ìÝëç ôïõ ìáèÞìáôïò"; +$string['emaildisplayno'] = "Áðüêñõøç ôçò ðñáãìáôéêÞò äéåýèõíóçò çëåêôñïíéêïý ôá÷õäñïìåßïõ ìïõ ãéá üëïõò"; +$string['emaildisplayyes'] = "Ç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ ìïõ åßíáé ïñáôÞ óå üëïõò ôïõò ÷ñÞóôåò"; +$string['emailexists'] = "ÁõôÞ ç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ Ý÷åé Þäç åããñáöåß."; +$string['emailformat'] = "ÌïñöÞ ìçíýìáôïò çëåêôñïíéêïý ôá÷õäñïìåßïõ"; +$string['emailmustbereal'] = "Óçìåßùóç: ç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ óáò ðñÝðåé íá åßíáé ðñáãìáôéêÞ"; $string['emailpasswordconfirmation'] = "ÃåéÜ óáò \$a->firstname, ÊÜðïéïò (ðéèáíüôáôá åóåßò ï ßäéïò) Ý÷åé æçôÞóåé Ýíá íÝï êùäéêü ðñüóâáóçò @@ -272,68 +270,68 @@ $string['emailpasswordconfirmation'] = " ôïõ öõëëïìåôñçôÞ óáò. Áí ÷ñåéÜæåóôå âïÞèåéá, ðáñáêáëþ åðéêïéíùíÞóôå ìå ôï äéá÷åéñéóôÞ ôïõ äéêôõáêïý ôüðïõ, -\$a->admin"; -$string['emailpasswordconfirmationsubject'] = "\$a: áëëáãÞ êùäéêïý ðñüóâáóçò"; +\$a->admin"; +$string['emailpasswordconfirmationsubject'] = "\$a: áëëáãÞ êùäéêïý ðñüóâáóçò"; $string['emailpasswordconfirmsent'] = "¸íá ìÞíõìá çëåêñïíéêïý ôá÷õäñïìåßïõ Ý÷åé óôáëåß óôçí çëåêôñïíéêÞ óïõ äéåýèõíóç óôï \$a.

        ÐåñéÝ÷åé åýêïëåò ïäçãßåò ãéá åðéâåâáßùóç êáé ïëïêëÞñùóç ôçò áëëáãÞò ôïõ êùäéêïý ðñüóâáóçò. -Áí óõíå÷ßóåéò íá áíôéìåôùðßæåéò äõóêïëßá, åðéêïéíþíçóå ìå ôï äéá÷åéñéóôÞ ôïõ äéêôõáêïý ôüðïõ."; +Áí óõíå÷ßóåéò íá áíôéìåôùðßæåéò äõóêïëßá, åðéêïéíþíçóå ìå ôï äéá÷åéñéóôÞ ôïõ äéêôõáêïý ôüðïõ."; $string['emailpasswordsent'] = "Åõ÷áñéóôïýìå ãéá ôçí åðéâåâáßùóç ôçò áëëáãÞò ôïõ êùäéêïý ðñüóâáóçò. //FIX

        ¸íá ìÞíõìá çëåêôñïíéêïý ôá÷õäñïìåßïõ ðïõ ðåñéÝ÷åé ôï íÝï óïõ êùäéêü ðñüóâáóçò Ý÷åé óôáëåß óôçí çëåêôñïíéêÞ óïõ äéåýèõíóç óôï \$a->email.

        Ï íÝïò êùäéêüò ðñüóâáóçò äçìéïõñãÞèçêå áõôüìáôá - ðéèáíþò íá èÝëåéò -link>íá áëëÜîåéò ôïí êùäéêü óïõ ìå êÜðïéïí ðïõ íá ìðïñåßò íá èõìçèåßò ðéï åýêïëá."; -$string['enrolmentconfirmation'] = "Èá åããñáöåßò óáí ìÝëïò áõôïý ôïõ ìáèÞìáôïò.
        Åßóôå âÝâáéïé üôé èÝëåôå íá ôï êÜíåôå;"; -$string['enrolmentkey'] = "Êëåéäß åããñáöÞò"; -$string['enrolmentkeyfrom'] = "Áõôü ôï ìÜèçìá áðáéôåß Ýíá 'êëåéäß åããñáöÞò' - Ýíáí êùäéêü ìéáò ÷ñÞóçò
        -ôï ïðïßï èá Ýðñåðå íá ôïí Ý÷åôå ðáñáëÜâåé áðü ôïí \$a"; -$string['enrolmentkeyhint'] = "Áõôü ôï êëåéäß åããñáöÞò Þôáí ëÜèïò, ðáñáêáëþ äïêéìÜóôå îáíÜ
        -(ÓõìâïõëÞ - îåêéíÜ ìå '\$a')"; -$string['entercourse'] = "ÐáôÞóôå ãéá íá åéóÝëèåôå óå áõôü ôï ìÜèçìá"; +link>íá áëëÜîåéò ôïí êùäéêü óïõ ìå êÜðïéïí ðïõ íá ìðïñåßò íá èõìçèåßò ðéï åýêïëá."; +$string['enrolmentconfirmation'] = "Èá åããñáöåßò óáí ìÝëïò áõôïý ôïõ ìáèÞìáôïò.
        Åßóôå âÝâáéïé üôé èÝëåôå íá ôï êÜíåôå;"; +$string['enrolmentkey'] = "Êëåéäß åããñáöÞò"; +$string['enrolmentkeyfrom'] = "Áõôü ôï ìÜèçìá áðáéôåß Ýíá 'êëåéäß åããñáöÞò' - Ýíáí êùäéêü ìéáò ÷ñÞóçò
        +ôï ïðïßï èá Ýðñåðå íá ôïí Ý÷åôå ðáñáëÜâåé áðü ôïí \$a"; +$string['enrolmentkeyhint'] = "Áõôü ôï êëåéäß åããñáöÞò Þôáí ëÜèïò, ðáñáêáëþ äïêéìÜóôå îáíÜ
        +(ÓõìâïõëÞ - îåêéíÜ ìå '\$a')"; +$string['entercourse'] = "ÐáôÞóôå ãéá íá åéóÝëèåôå óå áõôü ôï ìÜèçìá"; $string['enteremailaddress'] = "ÅéóÜãåôå ôç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ óáò þóôå íá áëëÜîåé -ï êùäéêüò ðñüóâáóÞò óáò - ï íÝïò êùäéêüò ðñüóâáóçò èá óáò áðïóôáëåß ìÝóù çëåêôñïíéêïý ôá÷õäñïìåßïõ"; -$string['error'] = "ÓöÜëìá"; -$string['errortoomanylogins'] = "Äõóôõ÷þò ïé áðüðåéñåò óýíäåóÞò óáò Ý÷ïõí õðåñâåß ôïí åðéôñåðôü áñéèìü. ÅðáíåêêéíÞóôå, ôï öõëëïìåôñçôÞ óáò."; -$string['existing'] = "ÕðÜñ÷åé"; -$string['existingadmins'] = "ÕðÜñ÷ïíôåò äéá÷åéñéóôÝò"; -$string['existingcourse'] = "ÕðÜñ÷ïõóá åíüôçôá"; -$string['existingcourseadding'] = "ÕðÜñ÷ïí ìÜèçìá, ðñïóèÞêç äåäïìÝíùí ó' áõôü"; -$string['existingcoursedeleting'] = "ÕðÜñ÷ïí ìÜèçìá, äéáãñáöÞ ôïõ ðñþôá"; -$string['existingcreators'] = "ÕðÜñ÷ïíôåò äçìéïõñãïß ìáèçìÜôùí"; -$string['existingstudents'] = "ÅããåãñáìÝíïé ìáèçôÝò"; -$string['existingteachers'] = "ÕðÜñ÷ïíôåò åêðáéäåõôÝò"; -$string['feedback'] = "ÁðáíôÞóåéò"; -$string['filemissing'] = "\$a - ëåßðåé"; -$string['files'] = "Áñ÷åßá"; -$string['filesfolders'] = "Áñ÷åßá/öÜêåëïé"; -$string['filloutallfields'] = "Ðáñáêáëþ óõìðëçñþóôå üëá ôá ðåäßá"; -$string['findmorecourses'] = "Åýñåóç ðåñéóóüôåñùí ìáèçìÜôùí..."; -$string['firstname'] = "¼íïìá"; -$string['firsttime'] = "Åßíáé ç ðñþôç óáò öïñÜ åäþ;"; -$string['followingoptional'] = "Ôá åðüìåíá åßíáé ðñïáéñåôéêÜ"; -$string['followingrequired'] = "Ôá åðüìåíá åßíáé áðáñáßôçôá"; -$string['forgotten'] = "Îå÷Üóáôå ôï üíïìá ÷ñÞóôç Þ ôïí êùäéêü ðñüóâáóçò;"; -$string['format'] = "ÌïñöÞ"; -$string['formathtml'] = "ÌïñöÞ HTML"; -$string['formatplain'] = "ÌïñöÞ áðëïý êåéìÝíïõ"; -$string['formatsocial'] = "ÊïéíùíéêÞ ìïñöÞ"; -$string['formattext'] = "Áõôüìáôç ìïñöÞ áðü ôï Moodle"; -$string['formattexttype'] = "Ìïñöïðïßçóç"; -$string['formattopics'] = "ÌïñöÞ èåìÜôùí"; -$string['formatweeks'] = "Åâäïìáäéáßá ìïñöÞ"; -$string['formatwiki'] = "ÌïñöÞ Wiki "; -$string['from'] = "Áðü"; -$string['frontpagecategorynames'] = "ÅìöÜíéóç ìéáò ëßóôáò êáôçãïñéþí"; -$string['frontpagecourselist'] = "ÅìöÜíéóç ìéáò ëßóôáò ìáèçìÜôùí"; -$string['frontpagedescription'] = "ÐåñéãñáöÞ ôçò áñ÷éêÞò óåëßäáò"; -$string['frontpageformat'] = "ÌïñöÞ ôçò áñ÷éêÞò óåëßäáò"; -$string['frontpagenews'] = "ÅìöÜíéóç åéäÞóåùí"; -$string['fulllistofcourses'] = "¼ëá ôá ìáèÞìáôá"; -$string['fullname'] = "ÐëÞñåò üíïìá"; -$string['fullprofile'] = "ÐëÞñåò ðñïößë"; -$string['fullsitename'] = "ÐëÞñåò üíïìá äéêôõáêïý ôüðïõ"; -$string['gd1'] = "Ôï GD 1.x åßíáé åãêáôåóôçìÝíï"; -$string['gd2'] = "Ôï GD 2.x is åßíáé åãêáôåóôçìÝíï"; -$string['gdneed'] = "Ôï GD ðñÝðåé íá åßíáé åãêáôåóôçìÝíï þóôå íá äåßôå áõôü ôï ãñÜöï"; -$string['gdnot'] = "Ôï GD äåí åßíáé åãêáôåóôçìÝíï"; +ï êùäéêüò ðñüóâáóÞò óáò - ï íÝïò êùäéêüò ðñüóâáóçò èá óáò áðïóôáëåß ìÝóù çëåêôñïíéêïý ôá÷õäñïìåßïõ"; +$string['error'] = "ÓöÜëìá"; +$string['errortoomanylogins'] = "Äõóôõ÷þò ïé áðüðåéñåò óýíäåóÞò óáò Ý÷ïõí õðåñâåß ôïí åðéôñåðôü áñéèìü. ÅðáíåêêéíÞóôå, ôï öõëëïìåôñçôÞ óáò."; +$string['existing'] = "ÕðÜñ÷åé"; +$string['existingadmins'] = "ÕðÜñ÷ïíôåò äéá÷åéñéóôÝò"; +$string['existingcourse'] = "ÕðÜñ÷ïõóá åíüôçôá"; +$string['existingcourseadding'] = "ÕðÜñ÷ïí ìÜèçìá, ðñïóèÞêç äåäïìÝíùí ó' áõôü"; +$string['existingcoursedeleting'] = "ÕðÜñ÷ïí ìÜèçìá, äéáãñáöÞ ôïõ ðñþôá"; +$string['existingcreators'] = "ÕðÜñ÷ïíôåò äçìéïõñãïß ìáèçìÜôùí"; +$string['existingstudents'] = "ÅããåãñáìÝíïé ìáèçôÝò"; +$string['existingteachers'] = "ÕðÜñ÷ïíôåò åêðáéäåõôÝò"; +$string['feedback'] = "ÁðáíôÞóåéò"; +$string['filemissing'] = "\$a - ëåßðåé"; +$string['files'] = "Áñ÷åßá"; +$string['filesfolders'] = "Áñ÷åßá/öÜêåëïé"; +$string['filloutallfields'] = "Ðáñáêáëþ óõìðëçñþóôå üëá ôá ðåäßá"; +$string['findmorecourses'] = "Åýñåóç ðåñéóóüôåñùí ìáèçìÜôùí..."; +$string['firstname'] = "¼íïìá"; +$string['firsttime'] = "Åßíáé ç ðñþôç óáò öïñÜ åäþ;"; +$string['followingoptional'] = "Ôá åðüìåíá åßíáé ðñïáéñåôéêÜ"; +$string['followingrequired'] = "Ôá åðüìåíá åßíáé áðáñáßôçôá"; +$string['forgotten'] = "Îå÷Üóáôå ôï üíïìá ÷ñÞóôç Þ ôïí êùäéêü ðñüóâáóçò;"; +$string['format'] = "ÌïñöÞ"; +$string['formathtml'] = "ÌïñöÞ HTML"; +$string['formatplain'] = "ÌïñöÞ áðëïý êåéìÝíïõ"; +$string['formatsocial'] = "ÊïéíùíéêÞ ìïñöÞ"; +$string['formattext'] = "Áõôüìáôç ìïñöÞ áðü ôï Moodle"; +$string['formattexttype'] = "Ìïñöïðïßçóç"; +$string['formattopics'] = "ÌïñöÞ èåìÜôùí"; +$string['formatweeks'] = "Åâäïìáäéáßá ìïñöÞ"; +$string['formatwiki'] = "ÌïñöÞ Wiki "; +$string['from'] = "Áðü"; +$string['frontpagecategorynames'] = "ÅìöÜíéóç ìéáò ëßóôáò êáôçãïñéþí"; +$string['frontpagecourselist'] = "ÅìöÜíéóç ìéáò ëßóôáò ìáèçìÜôùí"; +$string['frontpagedescription'] = "ÐåñéãñáöÞ ôçò áñ÷éêÞò óåëßäáò"; +$string['frontpageformat'] = "ÌïñöÞ ôçò áñ÷éêÞò óåëßäáò"; +$string['frontpagenews'] = "ÅìöÜíéóç åéäÞóåùí"; +$string['fulllistofcourses'] = "¼ëá ôá ìáèÞìáôá"; +$string['fullname'] = "ÐëÞñåò üíïìá"; +$string['fullprofile'] = "ÐëÞñåò ðñïößë"; +$string['fullsitename'] = "ÐëÞñåò üíïìá äéêôõáêïý ôüðïõ"; +$string['gd1'] = "Ôï GD 1.x åßíáé åãêáôåóôçìÝíï"; +$string['gd2'] = "Ôï GD 2.x is åßíáé åãêáôåóôçìÝíï"; +$string['gdneed'] = "Ôï GD ðñÝðåé íá åßíáé åãêáôåóôçìÝíï þóôå íá äåßôå áõôü ôï ãñÜöï"; +$string['gdnot'] = "Ôï GD äåí åßíáé åãêáôåóôçìÝíï"; $string['gpl'] = "Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com) Áõôü ôï ðñüãñáììá åßíáé äùñåÜí ëïãéóìéêü; ìðïñåßôå íá ôï áíáêáôáíåßìåôå êáé/Þ íá ôï ôñïðïðïéÞóåôå õðü ôïõò üñïõò ôïõ GNU General Public Licence üðùò äçìïóéåýåôáé óôï Free Software Foundation, åßôå ôçí Ýêäïóç 2 Þ (êáôÜ äéêÞ óáò åðéëïãÞ) ìéá åðüìåíç Ýêäïóç. @@ -341,79 +339,79 @@ $string['gpl'] = "Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.c Áõôü ôï ðñüãñáììá êáôáíÝìåôáé åëðßæïíôáò üôé èá öáíåß ÷ñÞóéìï,üìùò ×ÙÑÉÓ ÊÁÌÉÁ ÅÃÃÕÇÓÇ, ÷ùñßò áêüìá êáé ôçí õðïíïýìåíç åããýçóç MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Äåßôå ôï GNU General Public License ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò: -http://www.gnu.org/copyleft/gpl.html"; -$string['grade'] = "Âáèìüò"; -$string['grades'] = "Âáèìïß"; -$string['guestskey'] = "ÅðéôñÝðïíôáé åðéóêÝðôåò ðïõ Ý÷ïõí ôï êëåéäß"; -$string['guestsno'] = "Íá ìçí åðéôñÝðïíôáé åðéóêÝðôåò"; -$string['guestsnotallowed'] = "Äõóôõ÷þò, ï/ç '\$a' äåí åðéôñÝðåé ôçí ðñüóâáóç óôïõò åðéóêÝðôåò."; -$string['guestsyes'] = "ÅðéôñÝðïíôáé åðéóêÝðôåò ðïõ äåí Ý÷ïõí ôï êëåéäß"; -$string['guestuser'] = "ÅðéóêÝðôçò"; -$string['guestuserinfo'] = "Áõôüò åßíáé Ýíáò åéäéêüò ÷ñÞóôçò ðïõ Ý÷åé ðñüóâáóç ìüíï ãéá áíÜãíùóç óå ìåñéêÜ ìáèÞìáôá."; -$string['help'] = "ÂïÞèåéá"; -$string['helpemoticons'] = "×ñÞóôç ôùí emoticons"; -$string['helpformatting'] = "Ó÷åôéêÜ ìå ôç ìïñöïðïßçóç êåéìÝíïõ"; -$string['helphtml'] = "Ðþò íá ãñÜøåôå HTML"; -$string['helpindex'] = "Ôáîéíüìçóç üëùí áñ÷åßùí âïÞèåéáò"; -$string['helppicture'] = "Ðþò íá öïñôþóåôå ìéá åéêüíá"; -$string['helpquestions'] = "ÑùôÞóôå êáëÝò åñùôÞóåéò"; -$string['helpreading'] = "ÄéáâÜóôå ðñïóåêôéêÜ"; -$string['helprichtext'] = "Ó÷åôéêÜ ìå ôïí åðååîåñãáóôÞ êåéìÝíïõ Richtext"; -$string['helpsummaries'] = "Ó÷åôéêÜ ìå áõôÝò ôéò ðåñéëÞøåéò"; -$string['helptext'] = "Ðþò íá ãñÜøåôå êåßìåíï"; -$string['helpwiki'] = "Ðþò íá ãñÜøåôå êåßìåíï Wiki"; -$string['helpwriting'] = "ÃñÜøôå ðñïóåêôéêÜ"; -$string['hide'] = "Áðüêñõøç"; -$string['hits'] = "ÅðéóêÝøåéò"; -$string['hitsoncourse'] = "ÅðéóêÝøåéò óôï \$a->coursename áðü ôçí/ôïí \$a->username"; -$string['hitsoncoursetoday'] = "ÓçìåñéíÝò åðéóêÝøåéò óôï \$a->coursename áðü ôçí/ôïí \$a->username"; -$string['home'] = "Áñ÷Þ"; -$string['hour'] = "þñá"; -$string['hours'] = "þñåò"; -$string['howtomakethemes'] = "Ðþò íá äçìéïõñãÞóåôå íÝá èÝìáôá"; -$string['htmleditor'] = "×ñçóéìïðïéÞóôå ôïí åðåîåñãáóôÞ êåéìÝíïõ Richtext (IE 5.5 êáé Ýðåéôá)"; -$string['htmleditoravailable'] = "Ï åðåîåñãáóôÞò êåéìÝíïõ Richtext åßíáé äéáèÝóéìïò"; -$string['htmleditordisabled'] = "¸÷åôå áðåíåñãïðïéÞóåé ôïí åðåîåñãáóôÞ êåéìÝíïõ Richtext óôï ðñïößë óáò"; -$string['htmleditordisabledadmin'] = "Ï äéá÷åéñéóôÞò Ý÷åé áðåíåñãïðïéÞóåé ôïí åðåîåñãáóôÞ êåéìÝíïõ Richtext óå áõôü ôï äéêôõáêü ôüðï"; -$string['htmleditordisabledbrowser'] = "Ï åðåîåñãáóôÞò êåéìÝíïõ Richtext äåí åßíáé äéáèÝóéìïò åðåéäÞ äåí ÷ñçóéìïðïéåßôå Internet Explorer 5.5 Þ ìåãáëýôåñï"; -$string['htmlformat'] = "ÌïñöÞ Pretty HTML"; -$string['icqnumber'] = "Áñéèìüò ICQ"; -$string['idnumber'] = "Áñéèìüò ôáõôüôçôáò"; -$string['include'] = "Óõìðåñßëçøç"; -$string['includeallusers'] = "Óõìðåñßëçøç üëùí ôùí ÷ñçóôþí"; -$string['includecoursefiles'] = "Óõìðåñßëçøç áñ÷åßùí ìáèÞìáôïò"; -$string['includecourseusers'] = "Óõìðåñßëçøç ôùí ÷ñçóôþí ôïõ ìáèÞìáôïò"; -$string['included'] = "ÓõìðåñéëÞöèçêå/ÓõìðåñéëÞöèçêáí"; -$string['includelogentries'] = "Óõìðåñßëçøç åããñáöþí êáôáãñáöÞò"; -$string['includeneededusers'] = "Óõìðåñßëçøç áðáñáßôçôùí ÷ñçóôþí"; -$string['includeuserfiles'] = "Óõìðåñßëçøç áñ÷åßùí ÷ñçóôþí"; -$string['invalidemail'] = "¶êõñç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ"; -$string['invalidlogin'] = "¶êõñç åßóïäïò, ðáñáêáëþ äïêéìÜóôå îáíÜ"; -$string['jumpto'] = "ÌåôÜâáóç óå..."; -$string['langltr'] = "Ç ãëþóóá ãñÜöåôáé áðü áñéóôåñÜ ðñïò ôá äåîéÜ"; -$string['langrtl'] = "Ç ãëþóóá ãñÜöåôáé áðü äåîéÜ ðñïò ôá áñéóôåñÜ"; -$string['language'] = "Ãëþóóá"; -$string['languagegood'] = "Áõôü ôï ðáêÝôï ãëþóóáò åßíáé åíçìåñùìÝíï! :-)"; -$string['lastaccess'] = "Ôåëåõôáßá ðñüóâáóç"; -$string['lastedited'] = "Ôåëåõôáßá åðåîåñãáóßá"; -$string['lastmodified'] = "Ôåëåõôáßá ìåôáôñïðÞ"; -$string['lastname'] = "Åðþíõìï"; -$string['latestlanguagepack'] = "¸ëåã÷ïò ãéá ôï ðéï åíçìåñùìÝíï ðáêÝôï ãëùóóþí óôï moodle.org"; -$string['latestnews'] = "Ôåëåõôáßá íÝá"; -$string['leavetokeep'] = "ÁöÞóôå êåíü ãéá íá äéáôçñÞóåôå ôïí õðÜñ÷ïí êùäéêü ðñüóâáóçò"; -$string['license'] = "¶äåéá GPL"; -$string['list'] = "ÊáôÜëïãïò"; -$string['listfiles'] = "ÊáôÜëïãïò áñ÷åßùí óôï \$a"; -$string['listofallpeople'] = "ÊáôÜëïãïò üëùí ôùí áôüìùí"; -$string['livelogs'] = "ÆùíôáíÜ áñ÷åßá êáôáãñáöÞò ôçò ôåëåõôáßáò þñáò"; -$string['locale'] = "el"; -$string['location'] = "Ôüðïò"; -$string['loggedinas'] = "¸÷åôå åéóÝëèåé ùò \$a "; -$string['loggedinnot'] = "Äåí Ý÷åôå åéóÝëèåé."; -$string['login'] = "Åßóïäïò"; -$string['loginas'] = "Åßóïäïò ùò"; -$string['loginguest'] = "Åßóïäïò ùò åðéóêÝðôçò"; -$string['loginsite'] = "Åßóïäïò óôï äéêôõáêü ôüðï"; +http://www.gnu.org/copyleft/gpl.html"; +$string['grade'] = "Âáèìüò"; +$string['grades'] = "Âáèìïß"; +$string['guestskey'] = "ÅðéôñÝðïíôáé åðéóêÝðôåò ðïõ Ý÷ïõí ôï êëåéäß"; +$string['guestsno'] = "Íá ìçí åðéôñÝðïíôáé åðéóêÝðôåò"; +$string['guestsnotallowed'] = "Äõóôõ÷þò, ï/ç '\$a' äåí åðéôñÝðåé ôçí ðñüóâáóç óôïõò åðéóêÝðôåò."; +$string['guestsyes'] = "ÅðéôñÝðïíôáé åðéóêÝðôåò ðïõ äåí Ý÷ïõí ôï êëåéäß"; +$string['guestuser'] = "ÅðéóêÝðôçò"; +$string['guestuserinfo'] = "Áõôüò åßíáé Ýíáò åéäéêüò ÷ñÞóôçò ðïõ Ý÷åé ðñüóâáóç ìüíï ãéá áíÜãíùóç óå ìåñéêÜ ìáèÞìáôá."; +$string['help'] = "ÂïÞèåéá"; +$string['helpemoticons'] = "×ñÞóôç ôùí emoticons"; +$string['helpformatting'] = "Ó÷åôéêÜ ìå ôç ìïñöïðïßçóç êåéìÝíïõ"; +$string['helphtml'] = "Ðþò íá ãñÜøåôå HTML"; +$string['helpindex'] = "Ôáîéíüìçóç üëùí áñ÷åßùí âïÞèåéáò"; +$string['helppicture'] = "Ðþò íá öïñôþóåôå ìéá åéêüíá"; +$string['helpquestions'] = "ÑùôÞóôå êáëÝò åñùôÞóåéò"; +$string['helpreading'] = "ÄéáâÜóôå ðñïóåêôéêÜ"; +$string['helprichtext'] = "Ó÷åôéêÜ ìå ôïí åðååîåñãáóôÞ êåéìÝíïõ Richtext"; +$string['helpsummaries'] = "Ó÷åôéêÜ ìå áõôÝò ôéò ðåñéëÞøåéò"; +$string['helptext'] = "Ðþò íá ãñÜøåôå êåßìåíï"; +$string['helpwiki'] = "Ðþò íá ãñÜøåôå êåßìåíï Wiki"; +$string['helpwriting'] = "ÃñÜøôå ðñïóåêôéêÜ"; +$string['hide'] = "Áðüêñõøç"; +$string['hits'] = "ÅðéóêÝøåéò"; +$string['hitsoncourse'] = "ÅðéóêÝøåéò óôï \$a->coursename áðü ôçí/ôïí \$a->username"; +$string['hitsoncoursetoday'] = "ÓçìåñéíÝò åðéóêÝøåéò óôï \$a->coursename áðü ôçí/ôïí \$a->username"; +$string['home'] = "Áñ÷Þ"; +$string['hour'] = "þñá"; +$string['hours'] = "þñåò"; +$string['howtomakethemes'] = "Ðþò íá äçìéïõñãÞóåôå íÝá èÝìáôá"; +$string['htmleditor'] = "×ñçóéìïðïéÞóôå ôïí åðåîåñãáóôÞ êåéìÝíïõ Richtext (IE 5.5 êáé Ýðåéôá)"; +$string['htmleditoravailable'] = "Ï åðåîåñãáóôÞò êåéìÝíïõ Richtext åßíáé äéáèÝóéìïò"; +$string['htmleditordisabled'] = "¸÷åôå áðåíåñãïðïéÞóåé ôïí åðåîåñãáóôÞ êåéìÝíïõ Richtext óôï ðñïößë óáò"; +$string['htmleditordisabledadmin'] = "Ï äéá÷åéñéóôÞò Ý÷åé áðåíåñãïðïéÞóåé ôïí åðåîåñãáóôÞ êåéìÝíïõ Richtext óå áõôü ôï äéêôõáêü ôüðï"; +$string['htmleditordisabledbrowser'] = "Ï åðåîåñãáóôÞò êåéìÝíïõ Richtext äåí åßíáé äéáèÝóéìïò åðåéäÞ äåí ÷ñçóéìïðïéåßôå Internet Explorer 5.5 Þ ìåãáëýôåñï"; +$string['htmlformat'] = "ÌïñöÞ Pretty HTML"; +$string['icqnumber'] = "Áñéèìüò ICQ"; +$string['idnumber'] = "Áñéèìüò ôáõôüôçôáò"; +$string['include'] = "Óõìðåñßëçøç"; +$string['includeallusers'] = "Óõìðåñßëçøç üëùí ôùí ÷ñçóôþí"; +$string['includecoursefiles'] = "Óõìðåñßëçøç áñ÷åßùí ìáèÞìáôïò"; +$string['includecourseusers'] = "Óõìðåñßëçøç ôùí ÷ñçóôþí ôïõ ìáèÞìáôïò"; +$string['included'] = "ÓõìðåñéëÞöèçêå/ÓõìðåñéëÞöèçêáí"; +$string['includelogentries'] = "Óõìðåñßëçøç åããñáöþí êáôáãñáöÞò"; +$string['includeneededusers'] = "Óõìðåñßëçøç áðáñáßôçôùí ÷ñçóôþí"; +$string['includeuserfiles'] = "Óõìðåñßëçøç áñ÷åßùí ÷ñçóôþí"; +$string['invalidemail'] = "¶êõñç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ"; +$string['invalidlogin'] = "¶êõñç åßóïäïò, ðáñáêáëþ äïêéìÜóôå îáíÜ"; +$string['jumpto'] = "ÌåôÜâáóç óå..."; +$string['langltr'] = "Ç ãëþóóá ãñÜöåôáé áðü áñéóôåñÜ ðñïò ôá äåîéÜ"; +$string['langrtl'] = "Ç ãëþóóá ãñÜöåôáé áðü äåîéÜ ðñïò ôá áñéóôåñÜ"; +$string['language'] = "Ãëþóóá"; +$string['languagegood'] = "Áõôü ôï ðáêÝôï ãëþóóáò åßíáé åíçìåñùìÝíï! :-)"; +$string['lastaccess'] = "Ôåëåõôáßá ðñüóâáóç"; +$string['lastedited'] = "Ôåëåõôáßá åðåîåñãáóßá"; +$string['lastmodified'] = "Ôåëåõôáßá ìåôáôñïðÞ"; +$string['lastname'] = "Åðþíõìï"; +$string['latestlanguagepack'] = "¸ëåã÷ïò ãéá ôï ðéï åíçìåñùìÝíï ðáêÝôï ãëùóóþí óôï moodle.org"; +$string['latestnews'] = "Ôåëåõôáßá íÝá"; +$string['leavetokeep'] = "ÁöÞóôå êåíü ãéá íá äéáôçñÞóåôå ôïí õðÜñ÷ïí êùäéêü ðñüóâáóçò"; +$string['license'] = "¶äåéá GPL"; +$string['list'] = "ÊáôÜëïãïò"; +$string['listfiles'] = "ÊáôÜëïãïò áñ÷åßùí óôï \$a"; +$string['listofallpeople'] = "ÊáôÜëïãïò üëùí ôùí áôüìùí"; +$string['livelogs'] = "ÆùíôáíÜ áñ÷åßá êáôáãñáöÞò ôçò ôåëåõôáßáò þñáò"; +$string['locale'] = "el"; +$string['location'] = "Ôüðïò"; +$string['loggedinas'] = "¸÷åôå åéóÝëèåé ùò \$a "; +$string['loggedinnot'] = "Äåí Ý÷åôå åéóÝëèåé."; +$string['login'] = "Åßóïäïò"; +$string['loginas'] = "Åßóïäïò ùò"; +$string['loginguest'] = "Åßóïäïò ùò åðéóêÝðôçò"; +$string['loginsite'] = "Åßóïäïò óôï äéêôõáêü ôüðï"; $string['loginsteps'] = "ÃåéÜ óáò! Ãéá ðëÞñç ðñüóâáóç óôá ìáèÞìáôá èá ÷ñåéáóôåßôå Ýíá ëåðôü ãéá íá äçìéïõñãÞóåôå íÝï ëïãáñéáóìü ãéá ôïí åáõôü óáò óå áõôü ôï äéêôõáêü ôüðï. @@ -431,78 +429,78 @@ $string['loginsteps'] = " ÷ñåéÜæåôå íá äþóåôå ìüíï ôï ïíüìá ÷ñÞóôç êáé ôïí êùäéêü ðñüóâáóçò (üðùò åßíáé óå áõôÞ ôç óåëßäá) ãéá íá åéóÝëèåôå êáé íá ðñïóðåëÜóåôå ôá ìáèÞìáôá óôá ïðïßá Ý÷åôå åããñáöåß. - "; + "; $string['loginstepsnone'] = "ÃåéÜ óáò!

        Ãéá ðëÞñç ðñüóâáóç óôá ìáèÞìáôá èá ðñÝðåé íá äçìéïõñãÞóåôå Ýíáí ëïãáñéáóìü.

        ×ñåéÜæåôáé íá óêåöôåßôå Ýíá üíïìá ÷ñÞóôç êáé Ýíáí êùäéêü ðñüóâáóçò êáé íá ôá ÷ñçóéìïðïéÞóåôå ìå ôç ìïñöÞ ðïõ õðÜñ÷ïõí óå áõôÞ ôç óåëßäá!

        Áí ôï üíïìá ÷ñÞóôç ðïõ óêåöôÞêáôå Ý÷åé Þäç åðéëåãåß áðü êÜðïéïí Üëëï, -ôüôå èá ðñÝðåé íá äïêéìÜóåôå îáíÜ ìå Ýíá íÝï üíïìá ÷ñÞóôç."; -$string['loginto'] = "Åßóïäïò óôï \$a"; -$string['loginusing'] = "ÅéóÝëèåôå åäþ ÷ñçóéìïðïéþíôáò üíïìá ÷ñÞóôç êáé êùäéêü ðñüóâáóçò"; -$string['logout'] = "¸îïäïò"; -$string['logs'] = "Áñ÷åßá êáôáãñáöÞò"; -$string['mainmenu'] = "Êýñéï ìåíïý"; -$string['makeafolder'] = "Äçìéïõñãßá öáêÝëïõ"; -$string['makeeditable'] = "Áí êáôáóôÞóåôå ôï '\$a' ðñïóâÜóéìï ãéá åããñáöÞ áðü ôç äéáäéêáóßá ôïõ åîõðçñåôçôÞ (ð÷. apache) ôüôå èá ìðïñåßôå íá åðåîåñãáóôåßôå áõôü ôï áñ÷åßï áðåõèåßáò áðü áõôÞ ôç óåëßäá."; -$string['managedatabase'] = "Äéá÷åßñéóç âÜóçò äåäïìÝíùí"; -$string['managemodules'] = "Äéá÷åßñéóç ôùí modules"; -$string['markedthistopic'] = "Áõôü ôï èÝìá ðñïâÜëëåôáé ùò ôñÝ÷ïí èÝìá"; -$string['markthistopic'] = "Óçìåßùóç áõôïý ôïõ èÝìáôïò óáí ôñÝ÷ïí èÝìá"; -$string['maximumchars'] = "Ôï ðïëý \$a ÷áñáêôÞñåò"; -$string['maximumgrade'] = "ÌÝãéóôïò âáèìüò"; -$string['maximumshort'] = "ÌÝãéóôï"; -$string['maxsize'] = "ÌÝãéóôï ìÝãåèïò: \$a"; -$string['min'] = "ëåðôü"; -$string['mins'] = "ëåðôÜ"; -$string['miscellaneous'] = "Ðïéêßëïò"; -$string['missingcategory'] = "ÐñÝðåé íá åðéëÝîåôå êáôçãïñßá"; -$string['missingcity'] = "Ëåßðåé ç ðüëç/÷ùñéü"; -$string['missingcountry'] = "Ëåßðåé ç ÷þñá"; -$string['missingdescription'] = "Ëåßðåé ç ðåñéãñáöÞ"; -$string['missingemail'] = "Ëåßðåé ç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ"; -$string['missingfirstname'] = "Ëåßðåé ôï üíïìá"; -$string['missingfullname'] = "Ëåßðåé ôï ðëÞñåò üíïìá"; -$string['missinglastname'] = "Ëåßðåé ôï åðþíõìï"; -$string['missingnewpassword'] = "Ëåßðåé ï íÝïò êùäéêüò ðñüóâáóçò"; -$string['missingpassword'] = "Ëåßðåé ï êùäéêüò ðñüóâáóçò"; -$string['missingshortname'] = "Ëåßðåé ôï óýíôïìï üíïìá"; -$string['missingshortsitename'] = "Ëåßðåé ôï óýíôïìï üíïìá ôïõ äéêôõáêïý ôüðïõ"; -$string['missingsitedescription'] = "Ëåßðåé ç ðåñéãñáöÞ ôïõ äéêôõáêïý ôüðïõ"; -$string['missingsitename'] = "Ëåßðåé ôï üíïìá ôïõ äéêôõáêïý ôüðïõ"; -$string['missingstrings'] = "¸ëåã÷ïò ãéá óõìâïëïóåéñÝò ðïõ ëåßðïõí"; -$string['missingstudent'] = "ÐñÝðåé íá åðéëåãåß êÜôé"; -$string['missingsummary'] = "Ëåßðåé ç óýíïøç"; -$string['missingteacher'] = "ÐñÝðåé íá åðéëåãåß êÜôé"; -$string['missingurl'] = "Ëåßðåé ôï URL"; -$string['missingusername'] = "Ëåßðåé ôï üíïìá ÷ñÞóôç"; -$string['modified'] = "ÁëëáãìÝíï"; -$string['moduledeleteconfirm'] = "Èá äéáãñÜøåôå ôåëåßùò ôçí åíüôçôá '\$a'. Áõôü èá äéáãñÜøåé áðü ôç âÜóç äåäïìÝíùí ïôéäÞðïôå ó÷åôßæåôáé ìå áõôÞ ôçí åíüôçôá. Åßóôå ÂÅÂÁÉÏÉ ðùò èÝëåôå íá óõíå÷ßóåôå;"; -$string['moduledeletefiles'] = "¼ëá ôá äåäïìÝíá ðïõ ó÷åôßæïíôáé ìå ôçí åíüôçôá '\$a->module' äéáãñÜöçêáí áðü ôç âÜóç äåäïìÝíùí. Ãéá íá ïëïêëçñùèåß ç äéáãñáöÞ (êáé ãéá íá ìçí åðáíåãêáôáóôáèåß ç åíüôçôá áõôüìáôá), èá ðñÝðåé ôþñá íá óâÞóåôå áõôü ôïí êáôÜëïãï áðü ôïí åîõðçñåôçôÞ óáò: \$a->directory"; -$string['modulesetup'] = "Ñýèìéóç ôùí ðéíÜêùí ôçò åíüôçôáò"; -$string['modulesuccess'] = "\$a Ý÷ïõí ñõèìéóôåß óùóôÜ"; -$string['moodleversion'] = "¸êäïóç ôïõ Moodle"; -$string['mostrecently'] = "ðéï ðñüóöáôá"; -$string['move'] = "Ìåôáêßíçóç"; -$string['movecategoryto'] = "Ìåôáêßíçóç êáôçãïñßáò óå:"; -$string['movecourseto'] = "Ìåôáêßíçóç ìáèÞìáôïò óå:"; -$string['movedown'] = "Ìåôáêßíçóç êÜôù"; -$string['movefilestohere'] = "Ìåôáêßíçóç áñ÷åßùí åäþ"; -$string['movefull'] = "Ìåôáêßíçóç \$a ó' áõôÞ ôçí ôïðïèåóßá"; -$string['movehere'] = "Ìåôáêßíçóç åäþ"; -$string['moveselectedcoursesto'] = "Ìåôáêßíçóç åðéëåãìÝíùí ìáèçìÜôùí óå..."; -$string['movetoanotherfolder'] = "Ìåôáêßíçóç óå Üëëï öÜêåëï"; -$string['moveup'] = "Ìåôáêßíçóç ðÜíù"; -$string['mustconfirm'] = "ÐñÝðåé íá åðéâåâáéþóåôå ôç óýíäåóÞ óáò"; -$string['mycourses'] = "Ôá ìáèÞìáôÜ ìïõ"; -$string['name'] = "¼íïìá"; -$string['namesocial'] = "ôïìÝáò"; -$string['nametopics'] = "èÝìá"; -$string['nameweeks'] = "åâäïìÜäá"; -$string['needed'] = "Áðáñáßôçôï"; -$string['never'] = "ÐïôÝ"; -$string['neverdeletelogs'] = "ÐïôÝ íá ìç äéáãñÜöïíôáé áñ÷åßá êáôáãñáöÞò"; -$string['new'] = "ÍÝï"; -$string['newaccount'] = "ÍÝïò ëïãáñéáóìüò"; -$string['newcourse'] = "ÍÝï ìÜèçìá"; -$string['newpassword'] = "ÍÝïò êùäéêüò ðñüóâáóçò"; +ôüôå èá ðñÝðåé íá äïêéìÜóåôå îáíÜ ìå Ýíá íÝï üíïìá ÷ñÞóôç."; +$string['loginto'] = "Åßóïäïò óôï \$a"; +$string['loginusing'] = "ÅéóÝëèåôå åäþ ÷ñçóéìïðïéþíôáò üíïìá ÷ñÞóôç êáé êùäéêü ðñüóâáóçò"; +$string['logout'] = "¸îïäïò"; +$string['logs'] = "Áñ÷åßá êáôáãñáöÞò"; +$string['mainmenu'] = "Êýñéï ìåíïý"; +$string['makeafolder'] = "Äçìéïõñãßá öáêÝëïõ"; +$string['makeeditable'] = "Áí êáôáóôÞóåôå ôï '\$a' ðñïóâÜóéìï ãéá åããñáöÞ áðü ôç äéáäéêáóßá ôïõ åîõðçñåôçôÞ (ð÷. apache) ôüôå èá ìðïñåßôå íá åðåîåñãáóôåßôå áõôü ôï áñ÷åßï áðåõèåßáò áðü áõôÞ ôç óåëßäá."; +$string['managedatabase'] = "Äéá÷åßñéóç âÜóçò äåäïìÝíùí"; +$string['managemodules'] = "Äéá÷åßñéóç ôùí modules"; +$string['markedthistopic'] = "Áõôü ôï èÝìá ðñïâÜëëåôáé ùò ôñÝ÷ïí èÝìá"; +$string['markthistopic'] = "Óçìåßùóç áõôïý ôïõ èÝìáôïò óáí ôñÝ÷ïí èÝìá"; +$string['maximumchars'] = "Ôï ðïëý \$a ÷áñáêôÞñåò"; +$string['maximumgrade'] = "ÌÝãéóôïò âáèìüò"; +$string['maximumshort'] = "ÌÝãéóôï"; +$string['maxsize'] = "ÌÝãéóôï ìÝãåèïò: \$a"; +$string['min'] = "ëåðôü"; +$string['mins'] = "ëåðôÜ"; +$string['miscellaneous'] = "Ðïéêßëïò"; +$string['missingcategory'] = "ÐñÝðåé íá åðéëÝîåôå êáôçãïñßá"; +$string['missingcity'] = "Ëåßðåé ç ðüëç/÷ùñéü"; +$string['missingcountry'] = "Ëåßðåé ç ÷þñá"; +$string['missingdescription'] = "Ëåßðåé ç ðåñéãñáöÞ"; +$string['missingemail'] = "Ëåßðåé ç äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ"; +$string['missingfirstname'] = "Ëåßðåé ôï üíïìá"; +$string['missingfullname'] = "Ëåßðåé ôï ðëÞñåò üíïìá"; +$string['missinglastname'] = "Ëåßðåé ôï åðþíõìï"; +$string['missingnewpassword'] = "Ëåßðåé ï íÝïò êùäéêüò ðñüóâáóçò"; +$string['missingpassword'] = "Ëåßðåé ï êùäéêüò ðñüóâáóçò"; +$string['missingshortname'] = "Ëåßðåé ôï óýíôïìï üíïìá"; +$string['missingshortsitename'] = "Ëåßðåé ôï óýíôïìï üíïìá ôïõ äéêôõáêïý ôüðïõ"; +$string['missingsitedescription'] = "Ëåßðåé ç ðåñéãñáöÞ ôïõ äéêôõáêïý ôüðïõ"; +$string['missingsitename'] = "Ëåßðåé ôï üíïìá ôïõ äéêôõáêïý ôüðïõ"; +$string['missingstrings'] = "¸ëåã÷ïò ãéá óõìâïëïóåéñÝò ðïõ ëåßðïõí"; +$string['missingstudent'] = "ÐñÝðåé íá åðéëåãåß êÜôé"; +$string['missingsummary'] = "Ëåßðåé ç óýíïøç"; +$string['missingteacher'] = "ÐñÝðåé íá åðéëåãåß êÜôé"; +$string['missingurl'] = "Ëåßðåé ôï URL"; +$string['missingusername'] = "Ëåßðåé ôï üíïìá ÷ñÞóôç"; +$string['modified'] = "ÁëëáãìÝíï"; +$string['moduledeleteconfirm'] = "Èá äéáãñÜøåôå ôåëåßùò ôçí åíüôçôá '\$a'. Áõôü èá äéáãñÜøåé áðü ôç âÜóç äåäïìÝíùí ïôéäÞðïôå ó÷åôßæåôáé ìå áõôÞ ôçí åíüôçôá. Åßóôå ÂÅÂÁÉÏÉ ðùò èÝëåôå íá óõíå÷ßóåôå;"; +$string['moduledeletefiles'] = "¼ëá ôá äåäïìÝíá ðïõ ó÷åôßæïíôáé ìå ôçí åíüôçôá '\$a->module' äéáãñÜöçêáí áðü ôç âÜóç äåäïìÝíùí. Ãéá íá ïëïêëçñùèåß ç äéáãñáöÞ (êáé ãéá íá ìçí åðáíåãêáôáóôáèåß ç åíüôçôá áõôüìáôá), èá ðñÝðåé ôþñá íá óâÞóåôå áõôü ôïí êáôÜëïãï áðü ôïí åîõðçñåôçôÞ óáò: \$a->directory"; +$string['modulesetup'] = "Ñýèìéóç ôùí ðéíÜêùí ôçò åíüôçôáò"; +$string['modulesuccess'] = "\$a Ý÷ïõí ñõèìéóôåß óùóôÜ"; +$string['moodleversion'] = "¸êäïóç ôïõ Moodle"; +$string['mostrecently'] = "ðéï ðñüóöáôá"; +$string['move'] = "Ìåôáêßíçóç"; +$string['movecategoryto'] = "Ìåôáêßíçóç êáôçãïñßáò óå:"; +$string['movecourseto'] = "Ìåôáêßíçóç ìáèÞìáôïò óå:"; +$string['movedown'] = "Ìåôáêßíçóç êÜôù"; +$string['movefilestohere'] = "Ìåôáêßíçóç áñ÷åßùí åäþ"; +$string['movefull'] = "Ìåôáêßíçóç \$a ó' áõôÞ ôçí ôïðïèåóßá"; +$string['movehere'] = "Ìåôáêßíçóç åäþ"; +$string['moveselectedcoursesto'] = "Ìåôáêßíçóç åðéëåãìÝíùí ìáèçìÜôùí óå..."; +$string['movetoanotherfolder'] = "Ìåôáêßíçóç óå Üëëï öÜêåëï"; +$string['moveup'] = "Ìåôáêßíçóç ðÜíù"; +$string['mustconfirm'] = "ÐñÝðåé íá åðéâåâáéþóåôå ôç óýíäåóÞ óáò"; +$string['mycourses'] = "Ôá ìáèÞìáôÜ ìïõ"; +$string['name'] = "¼íïìá"; +$string['namesocial'] = "ôïìÝáò"; +$string['nametopics'] = "èÝìá"; +$string['nameweeks'] = "åâäïìÜäá"; +$string['needed'] = "Áðáñáßôçôï"; +$string['never'] = "ÐïôÝ"; +$string['neverdeletelogs'] = "ÐïôÝ íá ìç äéáãñÜöïíôáé áñ÷åßá êáôáãñáöÞò"; +$string['new'] = "ÍÝï"; +$string['newaccount'] = "ÍÝïò ëïãáñéáóìüò"; +$string['newcourse'] = "ÍÝï ìÜèçìá"; +$string['newpassword'] = "ÍÝïò êùäéêüò ðñüóâáóçò"; $string['newpasswordtext'] = "ÃåéÜ óáò, \$a->firstname, Ï êùäéêüò ðñüóâáóçò ôïõ ëïãáñéáóìïý óáò óôï '\$a->sitename' Ý÷åé ïñéóôåß îáíÜ @@ -518,290 +516,288 @@ $string['newpasswordtext'] = " Óôá ðåñéóóüôåñá ðñïãñÜììáôá çëåêôñïíéêïý ôá÷õäñïìåßïõ áõôü èá ðñÝðåé íá åìöáíßæåôáé óáí ìðëå óýíäåóìïò óôï ïðïßï ìðïñåßôå íá ðáôÞóåôå ìå ôï ðïíôßêé. Áí áõôü äå ëåéôïõñãåß ôüôå áíôéãñÜøôå êáé åðéêïëëÞóôå áõôÞ ôç äéåýèõíóç óôç ãñáììÞ äéåõèýíóåùí óôï ðÜíù ìÝñïò ôïõ öõëëïìåôñçôÞ. ÃåéÜ óáò áðü ôïí äéá÷åéñéóôÞ ôïõ '\$a->sitename', -\$a->admin"; -$string['newpicture'] = "ÍÝá åéêüíá"; -$string['newsitem'] = "áíôéêåßìåíï íÝùí"; -$string['newsitems'] = "áíôéêåßìåíá íÝùí"; -$string['newsitemsnumber'] = "Áíôéêåßìåíá íÝùí ðñïò ðñïâïëÞ"; -$string['newuser'] = "ÍÝïò ÷ñÞóôçò"; -$string['newusers'] = "ÍÝïé ÷ñÞóôåò"; -$string['next'] = "Åðüìåíïò"; -$string['no'] = "¼÷é"; -$string['nocoursesfound'] = "Äåí âñÝèçêáí ìáèÞìáôá ìå ôéò ëÝîåéò '\$a'"; -$string['nocoursesyet'] = "Äåí õðÜñ÷ïõí ìáèÞìáôá óå áõôÞ ôçí êáôçãïñßá"; -$string['noexistingadmins'] = "Äåí õðÜñ÷ïõí äéá÷åéñéóôÝò, áõôü åßíáé Ýíá óïâáñü óöÜëìá êáé äå èá Ýðñåðå íá Ý÷åé óõìâåß ðïôå."; -$string['noexistingcreators'] = "Äåí õðÜñ÷ïõí äçìéïõãïß"; -$string['noexistingstudents'] = "Äåí õðÜñ÷ïõí ìáèçôÝò"; -$string['noexistingteachers'] = "Äåí õðÜñ÷ïõí åêðáéäåõôÝò"; -$string['nofilesselected'] = "Äåí Ý÷ïõí åðéëåãåß áñ÷åßá ãéá åðáíáöïñÜ"; -$string['nofilesyet'] = "Äåí Ý÷ïõí öïñôùèåß áñ÷åßá óôï ìÜèçìÜ óáò áêüìá"; -$string['nograde'] = "Äåí õðÜñ÷åé âáèìüò"; -$string['noimagesyet'] = "Äåí Ý÷ïõí öïñôùèåß åéêüíåò óôï ìÜèçìÜ óáò áêüìá"; -$string['nomorecourses'] = "Äåí âñßóêïíôáé ìáèÞìáôá ðïõ íá ôáéñéÜæïõí"; -$string['none'] = "ÊáíÝíá"; -$string['nopotentialadmins'] = "ÊáíÝíáò ðéèáíüò äéá÷åéñéóôÞò"; -$string['nopotentialcreators'] = "ÊáíÝíáò ðéèáíüò äçìéïõñãüò"; -$string['nopotentialstudents'] = "ÊáíÝíáò ðéèáíüò ìáèçôÞò"; -$string['nopotentialteachers'] = "ÊáíÝíáò ðéèáíüò åêðáéäåõôÞò"; -$string['normal'] = "ÊáíïíéêÜ"; -$string['nostudentsyet'] = "Äåí Ý÷ïõí åããñáöåß ìáèçôÝò óå áõôü ôï ìÜèçìá áêüìç"; -$string['nosuchemail'] = "Äåí õðÜñ÷åé ôÝôïéá äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ"; -$string['notavailable'] = "Äåí åßíáé äéáèÝóéìï"; -$string['noteachersyet'] = "Äåí õðÜñ÷ïõí åêðáéäåõôÝò óå áõôü ôï ìÜèçìá áêüìç"; -$string['notenrolled'] = "\$a - äåí åßíáé åããåãñáììÝíïò óå áõôü ôï ìÜèçìá."; -$string['noteuserschangednonetocourse'] = "Óçìåßùóç: ïé ÷ñÞóôåò ôïõ ìáèÞìáôïò ðñÝðåé íá áðïêáôáóôáèïýí üôáí áðïêáôáóôáèïýí êáé ôá äåäïìÝíá ôïõ ÷ñÞóôç. ÁõôÞ ç ñýèìéóç Ý÷åé áëëÜîåé ãéá óÝíá."; -$string['nothingnew'] = "Ôßðïôå íÝï áðü ôçí ôåëåõôáßá óýíäåóÞ óáò"; -$string['notincluded'] = "Äåí Ý÷åé óõìðåñéëçöèåß"; -$string['nousersmatching'] = "Äå âñÝèçêå ÷ñÞóôçò ðïõ íá ôáéñéÜæåé ìå '\$a'"; -$string['nousersyet'] = "Äåí õðÜñ÷ïõí ÷ñÞóôåò áêüìç"; -$string['now'] = "ôþñá"; -$string['numberweeks'] = "Áñéèìüò åâäïìÜäùí/èåìÜôùí"; -$string['numdays'] = "\$a çìÝñåò"; -$string['numhours'] = "\$a þñåò"; -$string['numminutes'] = "\$a ëåðôÜ"; -$string['numviews'] = "\$a üøåéò"; -$string['numweeks'] = "\$a åâäïìÜäåò"; -$string['numwords'] = "\$a ëÝîåéò"; -$string['numyears'] = "\$a Ýôç"; -$string['ok'] = "OK"; -$string['opentoguests'] = "Ðñüóâáóç åðéóêÝðôç"; -$string['optional'] = "ðñïáéñåôéêü"; -$string['order'] = "Ôáîéíüìçóç"; -$string['other'] = "¶ëëï"; -$string['outline'] = "ÐåñéãñáöÞ"; -$string['page'] = "Óåëßäá"; -$string['participants'] = "ÓõììåôÝ÷ïíôåò"; -$string['password'] = "Êùäéêüò ðñüóâáóçò"; -$string['passwordchanged'] = "Ï êùäéêüò ðñüóâáóçò Ý÷åé áëëÜîåé"; -$string['passwordconfirmchange'] = "Åðéâåâáßùóç áëëáãÞò êùäéêïý ðñüóâáóçò"; -$string['passwordrecovery'] = "Íáé, âïÞèçóÝ ìå íá åéóÝëèù"; -$string['passwordsdiffer'] = "Ïé êùäéêïß ðñüóâáóçò åßíáé äéáöïñåôéêïß"; -$string['passwordsent'] = "Ï êùäéêüò ðñüóâáóçò Ý÷åé áðïóôáëåß"; +\$a->admin"; +$string['newpicture'] = "ÍÝá åéêüíá"; +$string['newsitem'] = "áíôéêåßìåíï íÝùí"; +$string['newsitems'] = "áíôéêåßìåíá íÝùí"; +$string['newsitemsnumber'] = "Áíôéêåßìåíá íÝùí ðñïò ðñïâïëÞ"; +$string['newuser'] = "ÍÝïò ÷ñÞóôçò"; +$string['newusers'] = "ÍÝïé ÷ñÞóôåò"; +$string['next'] = "Åðüìåíïò"; +$string['no'] = "¼÷é"; +$string['nocoursesfound'] = "Äåí âñÝèçêáí ìáèÞìáôá ìå ôéò ëÝîåéò '\$a'"; +$string['nocoursesyet'] = "Äåí õðÜñ÷ïõí ìáèÞìáôá óå áõôÞ ôçí êáôçãïñßá"; +$string['noexistingadmins'] = "Äåí õðÜñ÷ïõí äéá÷åéñéóôÝò, áõôü åßíáé Ýíá óïâáñü óöÜëìá êáé äå èá Ýðñåðå íá Ý÷åé óõìâåß ðïôå."; +$string['noexistingcreators'] = "Äåí õðÜñ÷ïõí äçìéïõãïß"; +$string['noexistingstudents'] = "Äåí õðÜñ÷ïõí ìáèçôÝò"; +$string['noexistingteachers'] = "Äåí õðÜñ÷ïõí åêðáéäåõôÝò"; +$string['nofilesselected'] = "Äåí Ý÷ïõí åðéëåãåß áñ÷åßá ãéá åðáíáöïñÜ"; +$string['nofilesyet'] = "Äåí Ý÷ïõí öïñôùèåß áñ÷åßá óôï ìÜèçìÜ óáò áêüìá"; +$string['nograde'] = "Äåí õðÜñ÷åé âáèìüò"; +$string['noimagesyet'] = "Äåí Ý÷ïõí öïñôùèåß åéêüíåò óôï ìÜèçìÜ óáò áêüìá"; +$string['nomorecourses'] = "Äåí âñßóêïíôáé ìáèÞìáôá ðïõ íá ôáéñéÜæïõí"; +$string['none'] = "ÊáíÝíá"; +$string['nopotentialadmins'] = "ÊáíÝíáò ðéèáíüò äéá÷åéñéóôÞò"; +$string['nopotentialcreators'] = "ÊáíÝíáò ðéèáíüò äçìéïõñãüò"; +$string['nopotentialstudents'] = "ÊáíÝíáò ðéèáíüò ìáèçôÞò"; +$string['nopotentialteachers'] = "ÊáíÝíáò ðéèáíüò åêðáéäåõôÞò"; +$string['normal'] = "ÊáíïíéêÜ"; +$string['nostudentsyet'] = "Äåí Ý÷ïõí åããñáöåß ìáèçôÝò óå áõôü ôï ìÜèçìá áêüìç"; +$string['nosuchemail'] = "Äåí õðÜñ÷åé ôÝôïéá äéåýèõíóç çëåêôñïíéêïý ôá÷õäñïìåßïõ"; +$string['notavailable'] = "Äåí åßíáé äéáèÝóéìï"; +$string['noteachersyet'] = "Äåí õðÜñ÷ïõí åêðáéäåõôÝò óå áõôü ôï ìÜèçìá áêüìç"; +$string['notenrolled'] = "\$a - äåí åßíáé åããåãñáììÝíïò óå áõôü ôï ìÜèçìá."; +$string['noteuserschangednonetocourse'] = "Óçìåßùóç: ïé ÷ñÞóôåò ôïõ ìáèÞìáôïò ðñÝðåé íá áðïêáôáóôáèïýí üôáí áðïêáôáóôáèïýí êáé ôá äåäïìÝíá ôïõ ÷ñÞóôç. ÁõôÞ ç ñýèìéóç Ý÷åé áëëÜîåé ãéá óÝíá."; +$string['nothingnew'] = "Ôßðïôå íÝï áðü ôçí ôåëåõôáßá óýíäåóÞ óáò"; +$string['notincluded'] = "Äåí Ý÷åé óõìðåñéëçöèåß"; +$string['nousersmatching'] = "Äå âñÝèçêå ÷ñÞóôçò ðïõ íá ôáéñéÜæåé ìå '\$a'"; +$string['nousersyet'] = "Äåí õðÜñ÷ïõí ÷ñÞóôåò áêüìç"; +$string['now'] = "ôþñá"; +$string['numberweeks'] = "Áñéèìüò åâäïìÜäùí/èåìÜôùí"; +$string['numdays'] = "\$a çìÝñåò"; +$string['numhours'] = "\$a þñåò"; +$string['numminutes'] = "\$a ëåðôÜ"; +$string['numviews'] = "\$a üøåéò"; +$string['numweeks'] = "\$a åâäïìÜäåò"; +$string['numwords'] = "\$a ëÝîåéò"; +$string['numyears'] = "\$a Ýôç"; +$string['ok'] = "OK"; +$string['opentoguests'] = "Ðñüóâáóç åðéóêÝðôç"; +$string['optional'] = "ðñïáéñåôéêü"; +$string['order'] = "Ôáîéíüìçóç"; +$string['other'] = "¶ëëï"; +$string['outline'] = "ÐåñéãñáöÞ"; +$string['page'] = "Óåëßäá"; +$string['participants'] = "ÓõììåôÝ÷ïíôåò"; +$string['password'] = "Êùäéêüò ðñüóâáóçò"; +$string['passwordchanged'] = "Ï êùäéêüò ðñüóâáóçò Ý÷åé áëëÜîåé"; +$string['passwordconfirmchange'] = "Åðéâåâáßùóç áëëáãÞò êùäéêïý ðñüóâáóçò"; +$string['passwordrecovery'] = "Íáé, âïÞèçóÝ ìå íá åéóÝëèù"; +$string['passwordsdiffer'] = "Ïé êùäéêïß ðñüóâáóçò åßíáé äéáöïñåôéêïß"; +$string['passwordsent'] = "Ï êùäéêüò ðñüóâáóçò Ý÷åé áðïóôáëåß"; $string['passwordsenttext'] = "

        ¸íá ìÞíõìá çëåêôñïíéêïý ôá÷õäñïìåßïõ Ý÷åé óôáëåß óôç äéåýèõíóç \$a->email.

        Ðáñáêáëþ åëÝãîôå ôï çëåêôñïíéêü óáò ôá÷õäñïìåßï ãéá íá ìÜèåôå ôïí êùäéêü ðñüóâáóçò

        Ï íÝïò êùäéêüò ðñüóâáóçò Ý÷åé äçìéïõñãçèåß áõôüìáôá. ºóùò íá èÝëåôå íá ôï - link>áëëÜîåôå óå êÜôé ðéï åõêïëïìíçìüíåõôï."; -$string['people'] = "¶ôïìá"; -$string['personalprofile'] = "Ðñïóùðéêü ðñïößë"; -$string['phone'] = "ÔçëÝöùíï"; -$string['phpinfo'] = "PHP info"; -$string['popupwindow'] = "¶íïéãìá ôïõ áñ÷åßïõ óå íÝï ðáñÜèõñï"; -$string['potentialadmins'] = "Ðéèáíïß äéá÷åéñéóôÝò"; -$string['potentialcreators'] = "Ðéèáíïß äçìéïõñãïß ìáèçìÜôùí"; -$string['potentialstudents'] = "Ðéèáíïß ìáèçôÝò"; -$string['potentialteachers'] = "Ðéèáíïß åêðáéäåõôÝò"; -$string['preferredlanguage'] = "Ðñïôåéíüìåíç ãëþóóá"; -$string['preview'] = "Ðñïåðéóêüðéóç"; -$string['previeworchoose'] = "Ðñïåðéóêüðçóç Þ åðéëïãÞ èÝìáôïò"; -$string['publicdirectory'] = "Äçìüóéïò êáôÜëïãïò"; -$string['publicdirectory0'] = "Ðáñáêáëþ ìç äçìïóéåýóåôå áõôü ôï äéêôõáêü ôüðï"; -$string['publicdirectory1'] = "Äçìïóßåõóç ôïõ ïíüìáôïò ôïõ äéêôõáêïý ôüðïõ ìüíï"; -$string['publicdirectory2'] = "Äçìïóßåõóç ôïõ ïíüìáôïò ôïõ äéêôõáêïý ôüðïõ ìå Ýíáí óýíäåóìï"; -$string['publicsitefileswarning'] = "Óçìåßùóç: ôá áñ÷åßá ðïõ ôïðïèåôïýíôáé åäþ ìðïñïýí íá ðñïóðåëáóôïýí áðü ïðïéïíäÞðïôå"; -$string['question'] = "Åñþôçóç"; -$string['readinginfofrombackup'] = "ÁíÜãíùóç ðëçñïöïñéþí áðü ôï áíôßãñáöï áóöáëåßáò"; -$string['readme'] = "ÄÉÁÂÁÓÅ ÌÅ"; -$string['recentactivity'] = "Ðñüóöáôç äñáóôçñéüôçôá"; -$string['registration'] = "Êáôá÷þñçóç ôïõ Moodle"; -$string['registrationemail'] = "ÅéäïðïéÞóåéò ìÝóù çëåêôñïíéêïý ôá÷õäñïìåßïõ"; + link>áëëÜîåôå óå êÜôé ðéï åõêïëïìíçìüíåõôï."; +$string['people'] = "¶ôïìá"; +$string['personalprofile'] = "Ðñïóùðéêü ðñïößë"; +$string['phone'] = "ÔçëÝöùíï"; +$string['phpinfo'] = "PHP info"; +$string['popupwindow'] = "¶íïéãìá ôïõ áñ÷åßïõ óå íÝï ðáñÜèõñï"; +$string['potentialadmins'] = "Ðéèáíïß äéá÷åéñéóôÝò"; +$string['potentialcreators'] = "Ðéèáíïß äçìéïõñãïß ìáèçìÜôùí"; +$string['potentialstudents'] = "Ðéèáíïß ìáèçôÝò"; +$string['potentialteachers'] = "Ðéèáíïß åêðáéäåõôÝò"; +$string['preferredlanguage'] = "Ðñïôåéíüìåíç ãëþóóá"; +$string['preview'] = "Ðñïåðéóêüðéóç"; +$string['previeworchoose'] = "Ðñïåðéóêüðçóç Þ åðéëïãÞ èÝìáôïò"; +$string['publicdirectory'] = "Äçìüóéïò êáôÜëïãïò"; +$string['publicdirectory0'] = "Ðáñáêáëþ ìç äçìïóéåýóåôå áõôü ôï äéêôõáêü ôüðï"; +$string['publicdirectory1'] = "Äçìïóßåõóç ôïõ ïíüìáôïò ôïõ äéêôõáêïý ôüðïõ ìüíï"; +$string['publicdirectory2'] = "Äçìïóßåõóç ôïõ ïíüìáôïò ôïõ äéêôõáêïý ôüðïõ ìå Ýíáí óýíäåóìï"; +$string['publicsitefileswarning'] = "Óçìåßùóç: ôá áñ÷åßá ðïõ ôïðïèåôïýíôáé åäþ ìðïñïýí íá ðñïóðåëáóôïýí áðü ïðïéïíäÞðïôå"; +$string['question'] = "Åñþôçóç"; +$string['readinginfofrombackup'] = "ÁíÜãíùóç ðëçñïöïñéþí áðü ôï áíôßãñáöï áóöáëåßáò"; +$string['readme'] = "ÄÉÁÂÁÓÅ ÌÅ"; +$string['recentactivity'] = "Ðñüóöáôç äñáóôçñéüôçôá"; +$string['registration'] = "Êáôá÷þñçóç ôïõ Moodle"; +$string['registrationemail'] = "ÅéäïðïéÞóåéò ìÝóù çëåêôñïíéêïý ôá÷õäñïìåßïõ"; $string['registrationinfo'] = "

        ÁõôÞ ç óåëßäá óáò åðéôñÝðåé íá êáôá÷ùñÞóåôå ôï Moodle óáò óôï moodle.org. Ç êáôá÷þñçóç åßíáé äùñåÜí. Ôï êýñéï ðëåïíÝêôçìá åßíáé üôé èá ðñïóôåèåßôå óå ìéá mailing list ÷áìçëÞò êßíçóçò ãéá óçìáíôéêÝò åéäïðïéÞóåéò üðùò èÝìáôá áóöáëåßáò êáé íÝåò åêäüóåéò ôïõ Moodle.

        Åî ïñéóìïý, ïé ðëçñïöïñßåò óáò èá åßíáé åìðéóôåõôéêÝò êáé äå èá ðùëçèïýí Þ èá ðñïùèçèïýí óå êáíÝíáí Üëëï. Ï ìüíïò ëüãïò ãéá ôç óõëëïãÞ áõôÞò ôçò ðëçñïöïñßáò åßíáé ãéá ëüãïõò õðïóôÞñéîçò êáé ãéá íá äçìéïõñãçèåß ìéá óôáôéóôéêÞ åéêüíá ôçò êïéíüôçôáò ôïõ Moodle.

        Áí èÝëåôå, ìðïñåßôå íá åðéëÝîåôå ôï üíïìá ôïõ äéêôõáêïý óáò ôüðïõ, ôçò ÷þñáò êáé ôï URL íá ðñïóôåèïýí óôï äçìüóéï êáôÜëïãï äéêôõáêþí ôüðùò Moodle. -

        ¼ëåò ïé íÝåò êáôá÷ùñÞóåéò åëÝã÷ïíôáé ðñéí ðñïóôåèïýí óôç ëßóôá, áëëÜ ìðïñåßôå íá åíçìåñþíåôå ôçí êáôá÷þñçóç (êáé óôï äçìüóéï êáôÜëïãï) ïðïéáäÞðïôå óôéãìÞ áðëÜ óõìðëçñþíïíôáò áõôÞ ôç öüñìá."; -$string['registrationno'] = "¼÷é, äå èÝëù íá ëáìâÜíù ìçíýìáôá çëåêôñïíéêïý ôá÷õäñïìåßïõ"; -$string['registrationsend'] = "ÁðïóôïëÞ ðëçñïöïñéþí åããñáöÞò óôï moodle.org"; -$string['registrationyes'] = "Íáé, ðáñáêáëþ åéäïðïßçóÝ ìå ó÷åôéêÜ ìå óçìáíôéêÜ èÝìáôá"; -$string['removeadmin'] = "Áöáßñåóç äéá÷åéñéóôÞ"; -$string['removecreator'] = "Áöáßñåóç äçìéïõñãïý ìáèçìÜôùí"; -$string['removestudent'] = "Áöáßñåóç ìáèçôÞ"; -$string['removeteacher'] = "Áöáßñåóç åêðáéäåõôÞ"; -$string['rename'] = "Ìåôïíïìáóßá"; -$string['renamefileto'] = "Ìåôïíïìáóßá \$a óå"; -$string['required'] = "Áðáéôåßôáé"; -$string['requireskey'] = "Áõôü ôï ìÜèçìá áðáéôåß êëåéäß åããñáöÞò"; -$string['resortcoursesbyname'] = "Åðáíáôáîéíüìçóç ìáèçìÜôùí êáôÜ üíïìá"; -$string['resources'] = "Ðüñïé"; -$string['restore'] = "ÅðáíáöïñÜ"; -$string['restorecancelled'] = "Ç åðáíáöïñÜ áêõñþèçêå"; -$string['restorecoursenow'] = "ÅðáíáöïñÜ ôïõ ìáèÞìáôïò ôþñá!"; -$string['restorefinished'] = "Ç åðáíáöïñÜ ïëïêëçñþèçêå åðéôõ÷þò"; -$string['restoreto'] = "ÅðáíáöïñÜ óå"; -$string['returningtosite'] = "ÅðéóôñÝöåôå óå áõôü ôï äéêôõáêü ôüðï;"; -$string['revert'] = "Áíáßñåóç"; -$string['role'] = "Ñüëïò"; -$string['savechanges'] = "ÁðïèÞêåõóç áëëáãþí"; -$string['scale'] = "Êëßìáêá"; -$string['scales'] = "Êëßìáêåò"; -$string['scalescustom'] = "Êëßìáêåò óõíÞèåéáò"; -$string['scalescustomcreate'] = "ÐñïóèÞêç ìéáò êëßìáêáò"; -$string['scalescustomno'] = "Äåí Ý÷ïõí äçìéïõñãçèåß êëßìáêåò óõíÞèåéáò áêüìá"; -$string['scalesstandard'] = "ÔõðïðïéçìÝíåò êëßìáêåò"; -$string['search'] = "ÁíáæÞôçóç"; -$string['searchagain'] = "ÁíáæÞôçóç îáíÜ"; -$string['searchcourses'] = "ÁíáæÞôçóç ìáèçìÜôùí"; -$string['searchhelp'] = "Ìðïñåßò íá áíáæçôÞóåéò ðïëëÝò ëÝîåéò ìå ìéá öïñÜ.

        word: åýñåóç ôáéñéÜóìáôïò áõôÞò ôçò ëÝîçò ìÝóá óôï êåßìåíï.
        +word: ìüíï áêñéâåßò ëÝîåéò èá âñåèïýí.
        -word: ìçí óõìðåñéëÜâåôå ôá áðïôåëÝóìáôá ðïõ ðåñéÝ÷ïõí áõôÞ ç ëÝîç."; -$string['searchresults'] = "ÁíáæÞôçóç áðïôåëåóìÜôùí"; -$string['sec'] = "äåõôåñüëåðôï"; -$string['secs'] = "äåõôåñüëåðôá"; -$string['section'] = "ÔïìÝáò"; -$string['sections'] = "Ôïìåßò"; -$string['select'] = "ÅðéëïãÞ"; -$string['selectacountry'] = "ÅðéëÝîôå ìéá ÷þñá"; -$string['selectednowmove'] = "\$a áñ÷åßá åðéëÝ÷èçêáí ãéá ìåôáêßíçóç. Ôþñá ðÞãáéíå óôïí ðñïïñéóìü êáé ðÜôá 'Ìåôáêßíçóå ôá áñ÷åßá åäþ'"; -$string['senddetails'] = "ÁðïóôïëÞ ôùí óôïé÷åßùí ìïõ ìÝóù çëåêôñïíéêïý ôá÷õäñïìåßïõ"; -$string['separateandconnected'] = "Îå÷ùñéóôïß êáé Óõããåíåßò ôñüðïé ãíþóçò"; -$string['serverlocaltime'] = "ÔïðéêÞ þñá ôïõ åîõðçñåôçôÞ"; -$string['settings'] = "Ñõèìßóåéò"; -$string['shortname'] = "Óýíôïìï üíïìá"; -$string['shortnametaken'] = "Ôï óýíôïìï üíïìá ÷ñçóéìïðïéåßôáé Þäç ãéá Üëëï ìÜèçìá (\$a)"; -$string['shortsitename'] = "Óýíôïìï üíïìá ôïõ äéêôõáêïý ôüðïõ (ð÷. ìïíáäéêÞ ëÝîç)"; -$string['show'] = "ÐñïâïëÞ"; -$string['showall'] = "ÐñïâïëÞ üëùí \$a"; -$string['showallcourses'] = "ÐñïâïëÞ üëùí ôùí ìáèçìÜôùí"; -$string['showalltopics'] = "ÐñïâïëÞ üëùí ôùí èåìÜôùí"; -$string['showallusers'] = "ÐñïâïëÞ üëùí ôùí ÷ñçóôþí"; -$string['showallweeks'] = "ÐñïâïëÞ üëùí ôùí åâäïìÜäùí"; -$string['showgrades'] = "ÐñïâïëÞ âáèìþí"; -$string['showlistofcourses'] = "ÐñïâïëÞ êáôáëüãïõ ìáèçìÜôùí"; -$string['showonlytopic'] = "ÐñïâïëÞ ìüíï ôïõ èÝìáôïò \$a"; -$string['showonlyweek'] = "ÐñïâïëÞ ìüíï ôçò åâäïìÜäáò \$a"; -$string['showrecent'] = "ÐñïâïëÞ ðñüóöáôçò äñáóôçñéüôçôáò"; -$string['showtheselogs'] = "ÐñïâïëÞ áñ÷åßùí êáôáãñáöÞò"; -$string['site'] = "Äéêôõáêüò ôüðïò"; -$string['sitefiles'] = "Áñ÷åßá äéêôõáêïý ôüðïõ"; -$string['sitelogs'] = "Áñ÷åßá êáôáãñáöÞò ôïõ äéêôõáêïý ôüðïõ"; -$string['sitenews'] = "ÍÝá ôïõ äéêôõáêïý ôüðïõ"; -$string['sites'] = "Äéêôõáêïß ôüðïé"; -$string['sitesettings'] = "Ñõèìßóåéò äéêôõáêïý ôüðïõ"; -$string['size'] = "ÌÝãåèïò"; -$string['socialheadline'] = "Êïéíùíéêü öüñïõì - ôåëåõôáßá èÝìáôá"; -$string['someallowguest'] = "ÌåñéêÜ ìáèÞìáôá ìðïñåß íá åðéôñÝðïõí ðñüóâáóç åðéóêåðôþí"; -$string['someerrorswerefound'] = "ÊÜðïéá ðëçñïöïñßá Ýëåéðå Þ Þôáí åóöáëìÝíç. ÊïéôÜîôå êÜôù ãéá ëåðôïìÝñåéåò."; -$string['startdate'] = "Çìåñïìçíßá Ýíáñîçò ìáèÞìáôïò"; -$string['startsignup'] = "ÎåêéíÞóôå ôþñá äçìéïõñãþíôáò íÝï ëïãáñéáóìü!"; -$string['state'] = "Ðåñéï÷Þ"; -$string['status'] = "ÊáôÜóôáóç"; -$string['strftimedate'] = "%%d %%B %%Y"; -$string['strftimedateshort'] = "%%d %%B"; -$string['strftimedatetime'] = "%%d %%B %%Y, %%I:%%M %%p"; -$string['strftimedaydate'] = "%%A, %%d %%B %%Y"; -$string['strftimedaydatetime'] = "%%A, %%d %%B %%Y, %%I:%%M %%p"; -$string['strftimemonthyear'] = '%%B %%Y'; -$string['strftimerecent'] = "%%d %%b, %%H:%%M"; -$string['strftimerecentfull'] = "%%a, %%d %%b %%Y, %%I:%%M %%p"; -$string['strftimetime'] = "%%I:%%M %%p"; -$string['stringsnotset'] = "Ôá áêüëïõèá áëöáñéèìçôéêÜ äåí åßíáé ïñéóìÝíá óôï \$a"; -$string['studentnotallowed'] = "Äõóôõ÷þò äåí ìðïñåßôå íá åéóÝëèåôå óå áõôü ôï ìÜèçìá ùò '\$a'"; -$string['students'] = "ÌáèçôÝò"; -$string['subcategories'] = "Õðïêáôçãïñßåò"; -$string['success'] = "Åðéôõ÷ßá"; -$string['summary'] = "Óýíïøç"; -$string['summaryof'] = "\$a - óýíïøç"; -$string['supplyinfo'] = "Ðáñáêáëþ äþóôå êÜðïéåò ðëçñïöïñßåò ó÷åôéêÝò ìå åóÜò"; -$string['teacheronly'] = "ãéá ôïí/ôçí \$a ìüíï"; -$string['teacherroles'] = "\$a ñüëïé"; -$string['teachers'] = "ÊáèçãçôÝò"; -$string['textediting'] = "Óôçí åðåîåñãáóßá êåéìÝíïõ"; -$string['texteditor'] = "×ñÞóç ôõðïðïéçìÝíùí öïñìþí web"; -$string['textformat'] = "ÌïñöÞ áðëïý êåéìÝíïõ"; -$string['thanks'] = "Åõ÷áñéóôþ"; -$string['theme'] = "ÈÝìá"; -$string['themes'] = "ÈÝìáôá"; -$string['themesaved'] = "Ôï íÝï èÝìá áðïèçêåýôçêå"; -$string['thischarset'] = "windows-1253"; -$string['thislanguage'] = "Ελληνικά"; -$string['time'] = "¿ñá"; -$string['timezone'] = "Æþíç þñáò"; -$string['to'] = "¸ùò"; -$string['today'] = "ÓÞìåñá"; -$string['todaylogs'] = "ÓçìåñéíÜ áñ÷åßá êáôáãñáöÞò"; -$string['toomanytoshow'] = "Ïé ÷ñÞóôåò åßíáé ðÜñá ðïëëïß ãéá íá ðñïâëçèïýí"; -$string['top'] = "ÌÝãéóôï"; -$string['topic'] = "ÈÝìá"; -$string['topichide'] = "ÁðÝêñõøå áõôü ôï èÝìá áðü ôïí/ôçí \$a"; -$string['topicoutline'] = "ÐåñéãñáöÞ èÝìáôïò"; -$string['topicshow'] = "Äåßîå áõôü ôï èÝìá óôïí/óôçí \$a"; -$string['total'] = "ÓõíïëéêÜ"; -$string['turneditingoff'] = "ÔÝëïò åðåîåñãáóßáò"; -$string['turneditingon'] = "Åðåîåñãáóßá"; -$string['undecided'] = "Äåí Ý÷åé áðïöáóéóôåß"; -$string['unenrol'] = "Áêýñùóç åããñáöÞò"; -$string['unenrolme'] = "\$a - áêýñùóç ôçò åããñáöÞò ìïõ"; -$string['unenrolsure'] = "Åßóôå óßãïõñïé ãéá ôçí áêýñùóç ôçò åããñáöÞò ôçò/ôïõ \$a áðü áõôü ôï ìÜèçìá;"; -$string['unknowncategory'] = "¶ãíùóôç êáôçãïñßá"; -$string['unpacking'] = "Áðïóõìðßåóç ôïõ \$a"; -$string['unsafepassword'] = "Ï êùäéêüò ðñüóâáóçò äåí åßíáé áóöáëÞò - äïêéìÜóôå êÜôé Üëëï"; -$string['unusedaccounts'] = "Ãéá ëïãáñéáóìïýò ðïõ äåí Ý÷ïõí ÷ñçóéìïðïéçèåß ãéá ðåñéóóüôåñï áðü \$a çìÝñåò áêõñþíåôáé áõôüìáôá ç åããñáöÞ"; -$string['unzip'] = "Áðïóõìðßåóç"; -$string['unzippingbackup'] = "Áðïóõìðßåóç áíôéãñÜöïõ áóöáëåßáò"; -$string['update'] = "ÅíçìÝñùóç"; -$string['updated'] = "\$a - åíçìåñþèçêå"; -$string['updatemyprofile'] = "ÅíçìÝñùóç ðñïößë"; -$string['updatesevery'] = "Åíçìåñþíåé êÜèå \$a äåõôåñüëåðôá"; -$string['updatethis'] = "ÅíçìÝñùóç áõôïý: \$a"; -$string['updatethiscourse'] = "ÅíçìÝñùóç áõôïý ôïõ ìáèÞìáôïò"; -$string['updatinga'] = "ÅíçìÝñùóç åíüò \$a"; -$string['updatingain'] = "ÅíçìÝñùóç åíüò \$a->what óå \$a->in"; -$string['upload'] = "Öüñôùóç"; -$string['uploadafile'] = "Öüñôùóç åíüò áñ÷åßïõ"; -$string['uploadedfileto'] = "Öïñôþèêå ôï \$a->file óôï \$a->directory"; -$string['uploadnofilefound'] = "ÊáíÝíá áñ÷åßï äå âñÝèçêå - åßóôå óßãïõñïé ðùò åðéëÝîáôå êÜðïéï ãéá öüñôùóç;"; -$string['uploadproblem'] = "¸íá Üãíùóôï ðñüâëçìá ðáñïõóéÜóôçêå êáôÜ ôç öüñôùóç ôïõ áñ÷åßïõ '\$a' (ìÞðùò Þôáí ðïëý ìåãÜëï;)"; -$string['uploadthisfile'] = "Öüñôùóç áõôïý ôïõ áñ÷åßïõ"; -$string['user'] = "×ñÞóôçò"; -$string['userdeleted'] = "Áõôüò ï ëïãáñéáóìüò ÷ñÞóôç Ý÷åé äéáãñáöåß"; -$string['userdescription'] = "ÐåñéãñáöÞ"; -$string['userfiles'] = "Áñ÷åßá ÷ñçóôþí"; -$string['userlist'] = 'Ëßóôá ÷ñçóôþí'; -$string['username'] = "¼íïìá ÷ñÞóôç"; -$string['usernameexists'] = "Áõôü ôï üíïìá ÷ñÞóôç õðÜñ÷åé Þäç, åðéëÝîôå Üëëï"; -$string['userprofilefor'] = "\$a - ðñïößë ÷ñÞóôç"; -$string['users'] = "×ñÞóôåò"; -$string['userzones'] = "Æþíåò ÷ñçóôþí"; -$string['usingexistingcourse'] = "×ñÞóç õðÜñ÷ïíôïò ìáèÞìáôïò"; -$string['view'] = "ÐñïâïëÞ"; -$string['webpage'] = "Éóôïóåëßäá"; -$string['week'] = "ÅâäïìÜäá"; -$string['weekhide'] = "ÁðÝêñõøå áõôÞ ôçí åâäïìÜäá áðü ôïí/ôçí \$a"; -$string['weeklyoutline'] = "Åâäïìáäéáßá ðåñéãñáöÞ"; -$string['weekshow'] = "Äåßîå áõôÞ ôçí åâäïìÜäá óôïí/óôçí \$a"; -$string['welcometocourse'] = "ÊáëùóÞëèáôå óôï \$a"; +

        ¼ëåò ïé íÝåò êáôá÷ùñÞóåéò åëÝã÷ïíôáé ðñéí ðñïóôåèïýí óôç ëßóôá, áëëÜ ìðïñåßôå íá åíçìåñþíåôå ôçí êáôá÷þñçóç (êáé óôï äçìüóéï êáôÜëïãï) ïðïéáäÞðïôå óôéãìÞ áðëÜ óõìðëçñþíïíôáò áõôÞ ôç öüñìá."; +$string['registrationno'] = "¼÷é, äå èÝëù íá ëáìâÜíù ìçíýìáôá çëåêôñïíéêïý ôá÷õäñïìåßïõ"; +$string['registrationsend'] = "ÁðïóôïëÞ ðëçñïöïñéþí åããñáöÞò óôï moodle.org"; +$string['registrationyes'] = "Íáé, ðáñáêáëþ åéäïðïßçóÝ ìå ó÷åôéêÜ ìå óçìáíôéêÜ èÝìáôá"; +$string['removeadmin'] = "Áöáßñåóç äéá÷åéñéóôÞ"; +$string['removecreator'] = "Áöáßñåóç äçìéïõñãïý ìáèçìÜôùí"; +$string['removestudent'] = "Áöáßñåóç ìáèçôÞ"; +$string['removeteacher'] = "Áöáßñåóç åêðáéäåõôÞ"; +$string['rename'] = "Ìåôïíïìáóßá"; +$string['renamefileto'] = "Ìåôïíïìáóßá \$a óå"; +$string['required'] = "Áðáéôåßôáé"; +$string['requireskey'] = "Áõôü ôï ìÜèçìá áðáéôåß êëåéäß åããñáöÞò"; +$string['resortcoursesbyname'] = "Åðáíáôáîéíüìçóç ìáèçìÜôùí êáôÜ üíïìá"; +$string['resources'] = "Ðüñïé"; +$string['restore'] = "ÅðáíáöïñÜ"; +$string['restorecancelled'] = "Ç åðáíáöïñÜ áêõñþèçêå"; +$string['restorecoursenow'] = "ÅðáíáöïñÜ ôïõ ìáèÞìáôïò ôþñá!"; +$string['restorefinished'] = "Ç åðáíáöïñÜ ïëïêëçñþèçêå åðéôõ÷þò"; +$string['restoreto'] = "ÅðáíáöïñÜ óå"; +$string['returningtosite'] = "ÅðéóôñÝöåôå óå áõôü ôï äéêôõáêü ôüðï;"; +$string['revert'] = "Áíáßñåóç"; +$string['role'] = "Ñüëïò"; +$string['savechanges'] = "ÁðïèÞêåõóç áëëáãþí"; +$string['scale'] = "Êëßìáêá"; +$string['scales'] = "Êëßìáêåò"; +$string['scalescustom'] = "Êëßìáêåò óõíÞèåéáò"; +$string['scalescustomcreate'] = "ÐñïóèÞêç ìéáò êëßìáêáò"; +$string['scalescustomno'] = "Äåí Ý÷ïõí äçìéïõñãçèåß êëßìáêåò óõíÞèåéáò áêüìá"; +$string['scalesstandard'] = "ÔõðïðïéçìÝíåò êëßìáêåò"; +$string['search'] = "ÁíáæÞôçóç"; +$string['searchagain'] = "ÁíáæÞôçóç îáíÜ"; +$string['searchcourses'] = "ÁíáæÞôçóç ìáèçìÜôùí"; +$string['searchhelp'] = "Ìðïñåßò íá áíáæçôÞóåéò ðïëëÝò ëÝîåéò ìå ìéá öïñÜ.

        word: åýñåóç ôáéñéÜóìáôïò áõôÞò ôçò ëÝîçò ìÝóá óôï êåßìåíï.
        +word: ìüíï áêñéâåßò ëÝîåéò èá âñåèïýí.
        -word: ìçí óõìðåñéëÜâåôå ôá áðïôåëÝóìáôá ðïõ ðåñéÝ÷ïõí áõôÞ ç ëÝîç."; +$string['searchresults'] = "ÁíáæÞôçóç áðïôåëåóìÜôùí"; +$string['sec'] = "äåõôåñüëåðôï"; +$string['secs'] = "äåõôåñüëåðôá"; +$string['section'] = "ÔïìÝáò"; +$string['sections'] = "Ôïìåßò"; +$string['select'] = "ÅðéëïãÞ"; +$string['selectacountry'] = "ÅðéëÝîôå ìéá ÷þñá"; +$string['selectednowmove'] = "\$a áñ÷åßá åðéëÝ÷èçêáí ãéá ìåôáêßíçóç. Ôþñá ðÞãáéíå óôïí ðñïïñéóìü êáé ðÜôá 'Ìåôáêßíçóå ôá áñ÷åßá åäþ'"; +$string['senddetails'] = "ÁðïóôïëÞ ôùí óôïé÷åßùí ìïõ ìÝóù çëåêôñïíéêïý ôá÷õäñïìåßïõ"; +$string['separateandconnected'] = "Îå÷ùñéóôïß êáé Óõããåíåßò ôñüðïé ãíþóçò"; +$string['serverlocaltime'] = "ÔïðéêÞ þñá ôïõ åîõðçñåôçôÞ"; +$string['settings'] = "Ñõèìßóåéò"; +$string['shortname'] = "Óýíôïìï üíïìá"; +$string['shortnametaken'] = "Ôï óýíôïìï üíïìá ÷ñçóéìïðïéåßôáé Þäç ãéá Üëëï ìÜèçìá (\$a)"; +$string['shortsitename'] = "Óýíôïìï üíïìá ôïõ äéêôõáêïý ôüðïõ (ð÷. ìïíáäéêÞ ëÝîç)"; +$string['show'] = "ÐñïâïëÞ"; +$string['showall'] = "ÐñïâïëÞ üëùí \$a"; +$string['showallcourses'] = "ÐñïâïëÞ üëùí ôùí ìáèçìÜôùí"; +$string['showalltopics'] = "ÐñïâïëÞ üëùí ôùí èåìÜôùí"; +$string['showallusers'] = "ÐñïâïëÞ üëùí ôùí ÷ñçóôþí"; +$string['showallweeks'] = "ÐñïâïëÞ üëùí ôùí åâäïìÜäùí"; +$string['showgrades'] = "ÐñïâïëÞ âáèìþí"; +$string['showlistofcourses'] = "ÐñïâïëÞ êáôáëüãïõ ìáèçìÜôùí"; +$string['showonlytopic'] = "ÐñïâïëÞ ìüíï ôïõ èÝìáôïò \$a"; +$string['showonlyweek'] = "ÐñïâïëÞ ìüíï ôçò åâäïìÜäáò \$a"; +$string['showrecent'] = "ÐñïâïëÞ ðñüóöáôçò äñáóôçñéüôçôáò"; +$string['showtheselogs'] = "ÐñïâïëÞ áñ÷åßùí êáôáãñáöÞò"; +$string['site'] = "Äéêôõáêüò ôüðïò"; +$string['sitefiles'] = "Áñ÷åßá äéêôõáêïý ôüðïõ"; +$string['sitelogs'] = "Áñ÷åßá êáôáãñáöÞò ôïõ äéêôõáêïý ôüðïõ"; +$string['sitenews'] = "ÍÝá ôïõ äéêôõáêïý ôüðïõ"; +$string['sites'] = "Äéêôõáêïß ôüðïé"; +$string['sitesettings'] = "Ñõèìßóåéò äéêôõáêïý ôüðïõ"; +$string['size'] = "ÌÝãåèïò"; +$string['socialheadline'] = "Êïéíùíéêü öüñïõì - ôåëåõôáßá èÝìáôá"; +$string['someallowguest'] = "ÌåñéêÜ ìáèÞìáôá ìðïñåß íá åðéôñÝðïõí ðñüóâáóç åðéóêåðôþí"; +$string['someerrorswerefound'] = "ÊÜðïéá ðëçñïöïñßá Ýëåéðå Þ Þôáí åóöáëìÝíç. ÊïéôÜîôå êÜôù ãéá ëåðôïìÝñåéåò."; +$string['startdate'] = "Çìåñïìçíßá Ýíáñîçò ìáèÞìáôïò"; +$string['startsignup'] = "ÎåêéíÞóôå ôþñá äçìéïõñãþíôáò íÝï ëïãáñéáóìü!"; +$string['state'] = "Ðåñéï÷Þ"; +$string['status'] = "ÊáôÜóôáóç"; +$string['strftimedate'] = "%%d %%B %%Y"; +$string['strftimedateshort'] = "%%d %%B"; +$string['strftimedatetime'] = "%%d %%B %%Y, %%I:%%M %%p"; +$string['strftimedaydate'] = "%%A, %%d %%B %%Y"; +$string['strftimedaydatetime'] = "%%A, %%d %%B %%Y, %%I:%%M %%p"; +$string['strftimerecent'] = "%%d %%b, %%H:%%M"; +$string['strftimerecentfull'] = "%%a, %%d %%b %%Y, %%I:%%M %%p"; +$string['strftimetime'] = "%%I:%%M %%p"; +$string['stringsnotset'] = "Ôá áêüëïõèá áëöáñéèìçôéêÜ äåí åßíáé ïñéóìÝíá óôï \$a"; +$string['studentnotallowed'] = "Äõóôõ÷þò äåí ìðïñåßôå íá åéóÝëèåôå óå áõôü ôï ìÜèçìá ùò '\$a'"; +$string['students'] = "ÌáèçôÝò"; +$string['subcategories'] = "Õðïêáôçãïñßåò"; +$string['success'] = "Åðéôõ÷ßá"; +$string['summary'] = "Óýíïøç"; +$string['summaryof'] = "\$a - óýíïøç"; +$string['supplyinfo'] = "Ðáñáêáëþ äþóôå êÜðïéåò ðëçñïöïñßåò ó÷åôéêÝò ìå åóÜò"; +$string['teacheronly'] = "ãéá ôïí/ôçí \$a ìüíï"; +$string['teacherroles'] = "\$a ñüëïé"; +$string['teachers'] = "ÊáèçãçôÝò"; +$string['textediting'] = "Óôçí åðåîåñãáóßá êåéìÝíïõ"; +$string['texteditor'] = "×ñÞóç ôõðïðïéçìÝíùí öïñìþí web"; +$string['textformat'] = "ÌïñöÞ áðëïý êåéìÝíïõ"; +$string['thanks'] = "Åõ÷áñéóôþ"; +$string['theme'] = "ÈÝìá"; +$string['themes'] = "ÈÝìáôá"; +$string['themesaved'] = "Ôï íÝï èÝìá áðïèçêåýôçêå"; +$string['thischarset'] = "windows-1253"; +$string['thislanguage'] = "Ελληνικά"; +$string['time'] = "¿ñá"; +$string['timezone'] = "Æþíç þñáò"; +$string['to'] = "¸ùò"; +$string['today'] = "ÓÞìåñá"; +$string['todaylogs'] = "ÓçìåñéíÜ áñ÷åßá êáôáãñáöÞò"; +$string['toomanytoshow'] = "Ïé ÷ñÞóôåò åßíáé ðÜñá ðïëëïß ãéá íá ðñïâëçèïýí"; +$string['top'] = "ÌÝãéóôï"; +$string['topic'] = "ÈÝìá"; +$string['topichide'] = "ÁðÝêñõøå áõôü ôï èÝìá áðü ôïí/ôçí \$a"; +$string['topicoutline'] = "ÐåñéãñáöÞ èÝìáôïò"; +$string['topicshow'] = "Äåßîå áõôü ôï èÝìá óôïí/óôçí \$a"; +$string['total'] = "ÓõíïëéêÜ"; +$string['turneditingoff'] = "ÔÝëïò åðåîåñãáóßáò"; +$string['turneditingon'] = "Åðåîåñãáóßá"; +$string['undecided'] = "Äåí Ý÷åé áðïöáóéóôåß"; +$string['unenrol'] = "Áêýñùóç åããñáöÞò"; +$string['unenrolme'] = "\$a - áêýñùóç ôçò åããñáöÞò ìïõ"; +$string['unenrolsure'] = "Åßóôå óßãïõñïé ãéá ôçí áêýñùóç ôçò åããñáöÞò ôçò/ôïõ \$a áðü áõôü ôï ìÜèçìá;"; +$string['unknowncategory'] = "¶ãíùóôç êáôçãïñßá"; +$string['unpacking'] = "Áðïóõìðßåóç ôïõ \$a"; +$string['unsafepassword'] = "Ï êùäéêüò ðñüóâáóçò äåí åßíáé áóöáëÞò - äïêéìÜóôå êÜôé Üëëï"; +$string['unusedaccounts'] = "Ãéá ëïãáñéáóìïýò ðïõ äåí Ý÷ïõí ÷ñçóéìïðïéçèåß ãéá ðåñéóóüôåñï áðü \$a çìÝñåò áêõñþíåôáé áõôüìáôá ç åããñáöÞ"; +$string['unzip'] = "Áðïóõìðßåóç"; +$string['unzippingbackup'] = "Áðïóõìðßåóç áíôéãñÜöïõ áóöáëåßáò"; +$string['update'] = "ÅíçìÝñùóç"; +$string['updated'] = "\$a - åíçìåñþèçêå"; +$string['updatemyprofile'] = "ÅíçìÝñùóç ðñïößë"; +$string['updatesevery'] = "Åíçìåñþíåé êÜèå \$a äåõôåñüëåðôá"; +$string['updatethis'] = "ÅíçìÝñùóç áõôïý: \$a"; +$string['updatethiscourse'] = "ÅíçìÝñùóç áõôïý ôïõ ìáèÞìáôïò"; +$string['updatinga'] = "ÅíçìÝñùóç åíüò \$a"; +$string['updatingain'] = "ÅíçìÝñùóç åíüò \$a->what óå \$a->in"; +$string['upload'] = "Öüñôùóç"; +$string['uploadafile'] = "Öüñôùóç åíüò áñ÷åßïõ"; +$string['uploadedfileto'] = "Öïñôþèêå ôï \$a->file óôï \$a->directory"; +$string['uploadnofilefound'] = "ÊáíÝíá áñ÷åßï äå âñÝèçêå - åßóôå óßãïõñïé ðùò åðéëÝîáôå êÜðïéï ãéá öüñôùóç;"; +$string['uploadproblem'] = "¸íá Üãíùóôï ðñüâëçìá ðáñïõóéÜóôçêå êáôÜ ôç öüñôùóç ôïõ áñ÷åßïõ '\$a' (ìÞðùò Þôáí ðïëý ìåãÜëï;)"; +$string['uploadthisfile'] = "Öüñôùóç áõôïý ôïõ áñ÷åßïõ"; +$string['user'] = "×ñÞóôçò"; +$string['userdeleted'] = "Áõôüò ï ëïãáñéáóìüò ÷ñÞóôç Ý÷åé äéáãñáöåß"; +$string['userdescription'] = "ÐåñéãñáöÞ"; +$string['userfiles'] = "Áñ÷åßá ÷ñçóôþí"; +$string['username'] = "¼íïìá ÷ñÞóôç"; +$string['usernameexists'] = "Áõôü ôï üíïìá ÷ñÞóôç õðÜñ÷åé Þäç, åðéëÝîôå Üëëï"; +$string['userprofilefor'] = "\$a - ðñïößë ÷ñÞóôç"; +$string['users'] = "×ñÞóôåò"; +$string['userzones'] = "Æþíåò ÷ñçóôþí"; +$string['usingexistingcourse'] = "×ñÞóç õðÜñ÷ïíôïò ìáèÞìáôïò"; +$string['view'] = "ÐñïâïëÞ"; +$string['webpage'] = "Éóôïóåëßäá"; +$string['week'] = "ÅâäïìÜäá"; +$string['weekhide'] = "ÁðÝêñõøå áõôÞ ôçí åâäïìÜäá áðü ôïí/ôçí \$a"; +$string['weeklyoutline'] = "Åâäïìáäéáßá ðåñéãñáöÞ"; +$string['weekshow'] = "Äåßîå áõôÞ ôçí åâäïìÜäá óôïí/óôçí \$a"; +$string['welcometocourse'] = "ÊáëùóÞëèáôå óôï \$a"; $string['welcometocoursetext'] = "ÊáëùóÞëèáôå óôï \$a->coursename! ¸íá áðü ôá ðñþôá ðñÜãìáôá ðïõ èá ðñÝðåé íá êÜíåôå åßíáé íá åðåîåñãáóôåßôå ôç óåëßäá ìå ôï ðñïößë óáò ìÝóá óå áõôü ôï ìÜèçìá þóôå íá ìÜèïõìå ðåñéóóüôåñá ãéá åóÜò: - \$a->profileurl"; -$string['whattocallzip'] = "Ðùò èÝëåôå íá ëÝãåôáé ôï áñ÷åßï zip óáò;"; -$string['withchosenfiles'] = "Ìå åðéëåãìÝíá áñ÷åßá"; -$string['withoutuserdata'] = "÷ùñßò ôá äåäïìÝíá ôïõ ÷ñÞóôç"; -$string['withuserdata'] = "ìå ôá äåäïìÝíá ôïõ ÷ñÞóôç"; -$string['wordforstudent'] = "Ç ëÝîç óáò ãéá ÌáèçôÞò"; -$string['wordforstudenteg'] = "ð÷. ÌáèçôÞò, ÓõììåôÝ÷ùí êôë."; -$string['wordforstudents'] = "Ç ëÝîç óáò ãéá ÌáèçôÝò"; -$string['wordforstudentseg'] = "ð÷. ÌáèçôÝò, ÓõììåôÝ÷ïíôåò êôë."; -$string['wordforteacher'] = "Ç ëÝîç óáò ãéá ÅêðáéäåõôÞò"; -$string['wordforteachereg'] = "ð÷. ÅêðáéäåõôÞò, ÊáèçãçôÞò, ÄÜóêáëïò êôë."; -$string['wordforteachers'] = "Ç ëÝîç óáò ãéá ÅêðáéäåõôÝò"; -$string['wordforteacherseg'] = "ð÷. ÅêðáéäåõôÝò, ÊáèçãçôÝò, ÄÜóêáëïé êôë."; -$string['writingcategoriesandquestions'] = "ÅããñáöÞ êáôçãïñéþí êáé åñùôÞóåùí"; -$string['writingcoursedata'] = "ÅããñáöÞ äåäïìÝíùí ìáèÞìáôïò"; -$string['writinggeneralinfo'] = "ÅããñáöÞ ãåíéêþí ðëçñïöïñéþí"; -$string['writingheader'] = "ÅããñáöÞ åðéêåöáëßäáò"; -$string['writingloginfo'] = "ÅããñáöÞ ðëçñïöïñéþí åéóüäùí"; -$string['writingmoduleinfo'] = "ÅããñáöÞ ðëçñïöïñéþí åíïôÞôùí"; -$string['writingscalesinfo'] = "ÅããñáöÞ ðëçñïöïñéþí êëßìáêáò"; -$string['writinguserinfo'] = "ÅããñáöÝò ðëçñïöïñéþí ÷ñçóôþí"; -$string['wrongpassword'] = "ËÜèïò êùäéêüò ðñüóâáóçò ãéá áõôü ôï üíïìá ÷ñÞóôç"; -$string['yes'] = "Íáé"; -$string['youareabouttocreatezip'] = "Èá äçìéïõñãÞóåéò Ýíá áñ÷åßï zip ðïõ èá ðåñéÝ÷åé"; -$string['youaregoingtorestorefrom'] = "Èá åðáíáöÝñåôå áðü:"; -$string['yourlastlogin'] = "Ç ôåëåõôáßá óáò åßóïäïò Þôáí"; -$string['yourself'] = "åóåßò ï ßäéïò"; -$string['yourteacher'] = "ç/ï \$a óáò"; -$string['zippingbackup'] = "Óõìðßåóç áíôéãñÜöïõ áóöáëåßáò"; - -?> + \$a->profileurl"; +$string['whattocallzip'] = "Ðùò èÝëåôå íá ëÝãåôáé ôï áñ÷åßï zip óáò;"; +$string['withchosenfiles'] = "Ìå åðéëåãìÝíá áñ÷åßá"; +$string['withoutuserdata'] = "÷ùñßò ôá äåäïìÝíá ôïõ ÷ñÞóôç"; +$string['withuserdata'] = "ìå ôá äåäïìÝíá ôïõ ÷ñÞóôç"; +$string['wordforstudent'] = "Ç ëÝîç óáò ãéá ÌáèçôÞò"; +$string['wordforstudenteg'] = "ð÷. ÌáèçôÞò, ÓõììåôÝ÷ùí êôë."; +$string['wordforstudents'] = "Ç ëÝîç óáò ãéá ÌáèçôÝò"; +$string['wordforstudentseg'] = "ð÷. ÌáèçôÝò, ÓõììåôÝ÷ïíôåò êôë."; +$string['wordforteacher'] = "Ç ëÝîç óáò ãéá ÅêðáéäåõôÞò"; +$string['wordforteachereg'] = "ð÷. ÅêðáéäåõôÞò, ÊáèçãçôÞò, ÄÜóêáëïò êôë."; +$string['wordforteachers'] = "Ç ëÝîç óáò ãéá ÅêðáéäåõôÝò"; +$string['wordforteacherseg'] = "ð÷. ÅêðáéäåõôÝò, ÊáèçãçôÝò, ÄÜóêáëïé êôë."; +$string['writingcategoriesandquestions'] = "ÅããñáöÞ êáôçãïñéþí êáé åñùôÞóåùí"; +$string['writingcoursedata'] = "ÅããñáöÞ äåäïìÝíùí ìáèÞìáôïò"; +$string['writinggeneralinfo'] = "ÅããñáöÞ ãåíéêþí ðëçñïöïñéþí"; +$string['writingheader'] = "ÅããñáöÞ åðéêåöáëßäáò"; +$string['writingloginfo'] = "ÅããñáöÞ ðëçñïöïñéþí åéóüäùí"; +$string['writingmoduleinfo'] = "ÅããñáöÞ ðëçñïöïñéþí åíïôÞôùí"; +$string['writingscalesinfo'] = "ÅããñáöÞ ðëçñïöïñéþí êëßìáêáò"; +$string['writinguserinfo'] = "ÅããñáöÝò ðëçñïöïñéþí ÷ñçóôþí"; +$string['wrongpassword'] = "ËÜèïò êùäéêüò ðñüóâáóçò ãéá áõôü ôï üíïìá ÷ñÞóôç"; +$string['yes'] = "Íáé"; +$string['youareabouttocreatezip'] = "Èá äçìéïõñãÞóåéò Ýíá áñ÷åßï zip ðïõ èá ðåñéÝ÷åé"; +$string['youaregoingtorestorefrom'] = "Èá åðáíáöÝñåôå áðü:"; +$string['yourlastlogin'] = "Ç ôåëåõôáßá óáò åßóïäïò Þôáí"; +$string['yourself'] = "åóåßò ï ßäéïò"; +$string['yourteacher'] = "ç/ï \$a óáò"; +$string['zippingbackup'] = "Óõìðßåóç áíôéãñÜöïõ áóöáëåßáò"; + +?> diff --git a/lang/el/quiz.php b/lang/el/quiz.php index 97d08057362..0a5eec60335 100644 --- a/lang/el/quiz.php +++ b/lang/el/quiz.php @@ -3,7 +3,7 @@ $string['acceptederror'] = "Áðïäåêôü óöÜëìá"; -$string['addingquestions'] = "ÁõôÞ ç ðëåõñÜ ôçò óåëßäáò åßíáé üðïõ äéá÷åéñßæåóôå ôç âÜóç äåäïìÝíùí ôùí åñùôçìÜôùí. Ôá åñùôÞìáôá áðïèçêåýïíôáé óå êáôçãïñßåò þóôå íá ôçñïýíôáé ïñãáíùìÝíá êáé ìðïñïýí íá ÷ñçóéìïðïéçèïýí óôï ìÜèçìÜ óáò Þ áêüìç êáé óå Üëëá ìáèÞìáôá áí åðéëÝîåôå íá ôá 'äçìïóéïðïéÞóåôå'.

        Áöïý åðéëÝîåôå Þ äçìéïõñãÞóåôå ìéá êáôçãïñßá åñùôçìÜôùí ôüôå èá åßóôå óå èÝóç íá äçìéïõñãÞóåôå Þ íá åðåîåñãáóôåßôå åñùôÞìáôá. Ìðïñåßôå íá åðéëÝîåôå ïðïéïäÞðïôå áðü áõôÜ ôá åñùôÞìáôá ãéá íá ôï ðñïóèÝóåôå óôï êïõßæ óáò óôçí ðÜíù ðëåõñÜ áõôÞò ôçò óåëßäáò"; +$string['addingquestions'] = "ÁõôÞ ç ðëåõñÜ ôçò óåëßäáò åßíáé üðïõ äéá÷åéñßæåóôå ôç âÜóç äåäïìÝíùí ôùí åñùôçìÜôùí. Ôá åñùôÞìáôá áðïèçêåýïíôáé óå êáôçãïñßåò þóôå íá ôçñïýíôáé ïñãáíùìÝíá êáé ìðïñïýí íá ÷ñçóéìïðïéçèïýí óôï ìÜèçìÜ óáò Þ áêüìç êáé óå Üëëá ìáèÞìáôá áí åðéëÝîåôå íá ôá 'äçìïóéïðïéÞóåôå'.

        Áöïý åðéëÝîåôå Þ äçìéïõñãÞóåôå ìéá êáôçãïñßá åñùôçìÜôùí ôüôå èá åßóôå óå èÝóç íá äçìéïõñãÞóåôå Þ íá åðåîåñãáóôåßôå åñùôÞìáôá. Ìðïñåßôå íá åðéëÝîåôå ïðïéïäÞðïôå áðü áõôÜ ôá åñùôÞìáôá ãéá íá ôï ðñïóèÝóåôå óôï êïõßæ óáò óôçí ðÜíù ðëåõñÜ áõôÞò ôçò óåëßäáò"; $string['addquestions'] = "ÐñïóèÞêç åñùôÞìáôïò"; $string['addquestionstoquiz'] = "ÐñïóèÞêç åñùôçìÜôùí óå õðÜñ÷ïí êïõßæ"; $string['addselectedtoquiz'] = "ÐñïóèÞêç åðéëåãìÝíùí óôï êïõßæ"; @@ -69,11 +69,11 @@ $string['filloutoneanswer'] = " $string['filloutthreequestions'] = "ÐñÝðåé íá óõìðëçñþóåôå ôïõëÜ÷éóôïí ôñåéò åñùôÞóåéò. ÅñùôÞóåéò ðïõ ìÝíïõí êåíÝò äå èá ÷ñçóéìïðïéçèïýí."; $string['fillouttwochoices'] = "ÐñÝðåé íá óõìðëçñþóåéò ôïõëÜ÷éóôï äõï åðéëïãÝò. Ïé êåíÝò åðéëïãÝò äå èá ÷ñçóéìïðïéçèïýí."; $string['fractionsaddwrong'] = "Ïé èåôéêÝò âáèìïëïãßåò ðïõ åðéëÝîáôå äåí áèñïßæïíôáé óôï 100%% -
        Áíôßèåôá, áèñïßæïíôáé óôï \$a%% -
        Èåò íá ãõñßóåéò ðßóù êáé íá ôñïðïðïéÞóåéò ôçí åñþôçóç;"; +
        Áíôßèåôá, áèñïßæïíôáé óôï \$a%% +
        Èåò íá ãõñßóåéò ðßóù êáé íá ôñïðïðïéÞóåéò ôçí åñþôçóç;"; $string['fractionsnomax'] = "Ìéá áðü ôéò åñùôÞóåéò èá Ýðñåðå íá åßíáé 100%%, Ýôóé þóôå íá åßíáé äõíáôü -
        íá ðÜñåé êÜðïéïò ôï óýíïëï ôçò âáèìïëïãßáò óå áõôÞ ôçí åñþôçóç. -
        ÈÝëåôå íá åðéóôñÝøåôå êáé íá ôñïðïðïéÞóåôå ôçí åñþôçóç;"; +
        íá ðÜñåé êÜðïéïò ôï óýíïëï ôçò âáèìïëïãßáò óå áõôÞ ôçí åñþôçóç. +
        ÈÝëåôå íá åðéóôñÝøåôå êáé íá ôñïðïðïéÞóåôå ôçí åñþôçóç;"; $string['gradeaverage'] = "ÌÝóïò âáèìüò"; $string['gradehighest'] = "Ï õøçëüôåñïò âáèìüò"; $string['grademethod'] = "ÌÝèïäïò âáèìïëüãçóçò"; @@ -99,7 +99,7 @@ $string['nomoreattempts'] = " $string['noquestions'] = "Êáìßá åñþôçóç äåí Ý÷åé ðñïóôåèåß áêüìá"; $string['noreview'] = "Äå óáò åðéôñÝðåôáé íá áíáóêïðÞóåôå áõôü ôï êïõßæ"; $string['noreviewuntil'] = "Äå óáò åðéôñÝðåôáé íá áíáóêïðÞóåôå áõôü ôï êïõßæ ìÝ÷ñé \$a"; -$string['notenoughsubquestions'] = "Äåí Ý÷ïõí ïñéóôåß áñêåôÜ õðïåñùôÞìáôá!
        +$string['notenoughsubquestions'] = "Äåí Ý÷ïõí ïñéóôåß áñêåôÜ õðïåñùôÞìáôá!
        ÈÝëåôå íá åðéóôñÝøåôå êáé íá äéïñèþóåôå áõôÞ ôçí åñþôçóç;"; $string['numerical'] = "Áñéèìçôéêü"; $string['publish'] = "Äçìïóßåõóç"; diff --git a/lang/el/workshop.php b/lang/el/workshop.php index ab00952f2b3..8c78bf10c86 100644 --- a/lang/el/workshop.php +++ b/lang/el/workshop.php @@ -93,8 +93,8 @@ $string['newsubmissions'] = " $string['noassessmentsdone'] = "Äåí Ýãéíáí ÁíáèÝóåéò"; $string['nosubmissionsavailableforassessment'] = "Äåí õðÜñ÷ïõí äéáèÝóéìåò ÕðïâïëÝò ãéá áîéïëüãçóç"; $string['notavailable'] = "Äåí åßíáé ÄéáèÝóéìï"; -$string['noteonassessmentelements'] = "Óçìåßùóå üôé ç âáèìïëïãßá ÷ùñßæåôáé óå êÜðïéá 'Óôïé÷åßá Áîéïëüãçóçò'.
        -Áõôü êÜíåé ôç âáèìïëüãçóç åõêïëüôåñçêáé ðéï óõíåðÞ. Óáí êáèçãçôÞò ðñÝðåé íá ðñïóèÝóåéò áõôÜ ôá
        Óôïé÷åßá ðñéí êÜíåéò ôçí áíÜèåóç äéáèÝóéìç ãéá ôïõò ìáèçôÝò. Áõôü ãßíåôáé
        êÜíïíôáò êëéê óôçí áíÜèåóç ôïõ ìáèÞìáôïò, áí äåí õðÜñ÷ïõí óôïé÷åßá èá óïõ æçôçèåß
        íá ôá ðñïóèÝóåéò. Ìðïñåßò íá áëëÜîåéò ôïí áñéèìü ôùí óôïé÷åßùí ÷ñçóéìïðïéþíôáò ôçí ïèüíç Åðåîåñãáóßá ÁíÜèåóçò,
        ôá óôïé÷åßá ìðïñïýí íá ôñïðïðïéçèïýí áðü ôï "Äéá÷åßñéóç ÁíÜèåóçò" ïèüíç."; +$string['noteonassessmentelements'] = "Óçìåßùóå üôé ç âáèìïëïãßá ÷ùñßæåôáé óå êÜðïéá 'Óôïé÷åßá Áîéïëüãçóçò'.
        +Áõôü êÜíåé ôç âáèìïëüãçóç åõêïëüôåñçêáé ðéï óõíåðÞ. Óáí êáèçãçôÞò ðñÝðåé íá ðñïóèÝóåéò áõôÜ ôá
        Óôïé÷åßá ðñéí êÜíåéò ôçí áíÜèåóç äéáèÝóéìç ãéá ôïõò ìáèçôÝò. Áõôü ãßíåôáé
        êÜíïíôáò êëéê óôçí áíÜèåóç ôïõ ìáèÞìáôïò, áí äåí õðÜñ÷ïõí óôïé÷åßá èá óïõ æçôçèåß
        íá ôá ðñïóèÝóåéò. Ìðïñåßò íá áëëÜîåéò ôïí áñéèìü ôùí óôïé÷åßùí ÷ñçóéìïðïéþíôáò ôçí ïèüíç Åðåîåñãáóßá ÁíÜèåóçò,
        ôá óôïé÷åßá ìðïñïýí íá ôñïðïðïéçèïýí áðü ôï "Äéá÷åßñéóç ÁíÜèåóçò" ïèüíç."; $string['notgraded'] = "Äåí âáèìïëïãÞèçêå"; $string['notitlegiven'] = "Äåí äüèçêå ôßôëïò"; $string['numberofassessmentelements'] = "Áñéèìüò Ó÷ïëßùí, Óôïé÷åßá Áîéïëüãçóçò, Åýñç Âáèìþí, ÊñéôÞñéï Statments Þ Êáôçãïñßåò óå ìéá Êåöáëßäá"; @@ -168,7 +168,7 @@ $string['verypoor'] = " $string['view'] = "ÅìöÜíéóç"; $string['viewassessmentofteacher'] = "ÅìöÜíéóç Áîéïëüãçóçò áðü \$a"; $string['viewotherassessments'] = "ÅìöÜíéóç Üëëùí ÁîéïëïãÞóåùí"; -$string['warningonamendingelements'] = "ÐÑÏÅÉÄÏÐÏÉÇÓÇ: ÕðÜñ÷ïõí õðïâáëëüìåíåò áîéïëïãÞóåéò.
        ÌÇÍ áëëÜæåôå ôïí áñéèìü ôùí óôïé÷åßùí, ôïõò ôýðïõò êëßìáêáò Þ ôç óôÜèìéóç ôùí óôïé÷åßùí"; +$string['warningonamendingelements'] = "ÐÑÏÅÉÄÏÐÏÉÇÓÇ: ÕðÜñ÷ïõí õðïâáëëüìåíåò áîéïëïãÞóåéò.
        ÌÇÍ áëëÜæåôå ôïí áñéèìü ôùí óôïé÷åßùí, ôïõò ôýðïõò êëßìáêáò Þ ôç óôÜèìéóç ôùí óôïé÷åßùí"; $string['weightederrorcount'] = "ÓôáèìéóìÝíç Áñßèìçóç ËÜèïõò: \$a"; $string['weightforbias'] = "ÌÝôñï ãéá Ìåñïëçøßá"; $string['weightforgradingofassessments'] = "ÌÝôñï ãéá ôç Âáèìïëüãçóç ôùí ÁîéïëïãÞóåùí"; diff --git a/lang/en/admin.php b/lang/en/admin.php index 5f11ed4da89..1308c24106e 100755 --- a/lang/en/admin.php +++ b/lang/en/admin.php @@ -1,126 +1,12 @@ -ourcollege.edu.au .gov.au
        '; -$string['configdenyemailaddresses'] = 'To deny email addresses from particular domains list them here in the same way. All other domains will be accepted. eg hotmail.com yahoo.co.uk'; -$string['configallowunenroll'] = 'If this is set \'Yes\', then students are allowed to unenroll themselves from courses whenever they like. Otherwise they are not allowed, and this process will be solely controlled by the teachers and administrators.'; -$string['configthemelist'] = 'Leave this blank to allow any valid theme to be used. If you want to shorten the theme menu, you can specify a comma-separated list of names here. For example: standard,orangewhite'; -$string['configallowcoursethemes'] = 'If you enable this, then courses will be allowed to set their own themes. Course themes override all other theme choices (site, user, or session themes)'; -$string['configallowuserthemes'] = 'If you enable this, then users will be allowed to set their own themes. User themes override site themes (but not course themes)'; -$string['configallusersaresitestudents'] = 'For activities on the front page of the site, should ALL users be considered as students? If you answer \"Yes\", then any confirmed user account will be allowed to participate as a student in those activities. If you answer \"No\", then only users who are already a participant in at least one course will be able to take part in those front page activities. Only admins and specially assigned teachers can act as teachers for these front page activities.'; -$string['configautologinguests'] = 'Should visitors be logged in as guests automatically when entering courses with guest access?'; -$string['configcachetext'] = 'For larger sites or sites that use text filters, this setting can really speed things up. Copies of texts will be retained in their processed form for the time specified here. Setting this too small may actually slow things down slightly, but setting it too large may mean texts take too long to refresh (with new links, for example).'; -$string['configclamactlikevirus'] = 'Treat files like viruses'; -$string['configclamdonothing'] = 'Treat files as OK'; -$string['configclamfailureonupload'] = 'If you have configured clam to scan uploaded files, but it is configured incorrectly or fails to run for some unknown reason, how should it behave? If you choose \'Treat files like viruses\', they\'ll be moved into the quarantine area, or deleted. If you choose \'Treat files as OK\', the files will be moved to the desination directory like normal. Either way, admins will be alerted that clam has failed. If you choose \'Treat files like viruses\' and for some reason clam fails to run (usually because you have entered an invalid pathtoclam), ALL files that are uploaded will be moved to the given quarantine area, or deleted. Be careful with this setting.'; -$string['configcountry'] = 'If you set a country here, then this country will be selected by default on new user accounts. To force users to choose a country, just leave this unset.'; -$string['configdbsessions'] = 'If enabled, this setting will use the database to store information about current sessions. This is especially useful for large/busy sites or sites built on cluster of servers. For most sites this should probably be left disabled so that the server disk is used instead. Note that changing this setting now will log out all current users (including you).'; -$string['configdebug'] = 'If you turn this on, then PHP\'s error_reporting will be increased so that more warnings are printed. This is only useful for developers.'; -$string['configdeleteunconfirmed'] = 'If you are using email authentication, this is the period within which a response will be accepted from users. After this period, old unconfirmed accounts are deleted.'; -$string['configdigestmailtime'] = 'People who choose to have emails sent to them in digest form will be emailed the digest daily. This setting controls which time of day the daily mail will be sent (the next cron that runs after this hour will send it).'; -$string['configdisplayloginfailures'] = 'This will display information to selected users about previous failed logins.'; -$string['configenablerssfeeds'] = 'This switch will enable RSS feeds from across the site. To actually see any change you will need to enable RSS feeds in the individual modules too - go to the Modules settings under Admin Configuration.'; -$string['configenablerssfeedsdisabled'] = ' It is not available because RSS feeds are disabled in all the Site. To enable them, go to the Variables settings under Admin Configuration.'; -$string['configerrorlevel'] = 'Choose the amount of PHP warnings that you want to be displayed. Normal is usually the best choice.'; -$string['configextendedusernamechars'] = 'Enable this setting to allow students to use any characters in their usernames (note this does not affect their actual names). The default is \"false\" which restricts usernames to be alphanumeric characters only'; -$string['configfilterall'] = 'Filter all strings, including headings, titles, navigation bar and so on. This is mostly useful when using the multilang filter, otherwise it will just create extra load on your site for little gain.'; -$string['configfilteruploadedfiles'] = 'Enabling this setting will cause Moodle to process all uploaded HTML and text files with the filters before displaying them.'; -$string['configforcelogin'] = 'Normally, the front page of the site and the course listings (but not courses) can be read by people without logging in to the site. If you want to force people to log in before they do ANYTHING on the site, then you should enable this setting.'; -$string['configforceloginforprofiles'] = 'Enable this setting to force people to login as a real (non-guest) account before being allowed to see the user profile pages. By default this is disabled (\"false\") so that prospective students can read about the teachers of each course, but this also means that web search engines can see them.'; -$string['configframename'] = 'If you are embedding Moodle within a web frame, then put the name of this frame here. Otherwise this value should remain as \'_top\''; -$string['configfullnamedisplay'] = 'This defines how names are shown when they are displayed in full. For most mono-lingual sites the most efficient setting is the default \"Given names + Surname\", but you may choose to hide surnames altogether, or to leave it up to the current language pack to decide (some languages have different conventions).'; -$string['configgdversion'] = 'Indicate the version of GD that is installed. The version shown by default is the one that has been auto-detected. Don\'t change this unless you really know what you\'re doing.'; -$string['confightmleditor'] = 'Choose whether or not to allow use of the embedded HTML text editor. Even if you choose allow, this editor will only appear when the user is using a compatible web browser. Users can also choose not to use it.'; -$string['configidnumber'] = 'This option specifies whether (a) Users are not be asked for an ID number at all, (b) Users are asked for an ID number but can leave it blank or (c) Users are asked for an ID Number and cannot leave it blank. If given the User\'s ID number is displayed in their Profile.'; -$string['configintro'] = 'On this page you can specify a number of configuration variables that help make Moodle work properly on your server. Don\'t worry too much about it - the defaults will usually work fine and you can always come back to this page later and change these settings.'; -$string['configintroadmin'] = 'On this page you should configure your main administrator account which will have complete control over the site. Make sure you give it a secure username and password as well as a valid email address. You can create more admin accounts later on.'; -$string['configintrosite'] = 'This page allows you to configure the front page and name of this new site. You can come back here later to change these settings any time using the \'Site Settings\' link on the home page.'; -$string['configintrotimezones'] = 'This page will search for new information about world timezones (including daylight savings time rules) and update your local database with this information. These locations will be checked, in order: $a This procedure is generally very safe and can not break normal installations. Do you wish to update your timezones now?'; -$string['configlang'] = 'Choose a default language for the whole site. Users can override this setting later.'; -$string['configlangdir'] = 'Most languages are printed left-to-right, but some, like Arabic and Hebrew, are printed right-to-left.'; -$string['configlanglist'] = 'Leave this blank to allow users to choose from any language you have in this installation of Moodle. However, you can shorten the language menu by entering a comma-separated list of language codes that you want. For example: en,es_es,fr,it'; -$string['configlangmenu'] = 'Choose whether or not you want to display the general-purpose language menu on the home page, login page etc. This does not affect the user\'s ability to set the preferred language in their own profile.'; -$string['configlocale'] = 'Choose a sitewide locale - this will affect the format and language of dates. You need to have this locale data installed on your operating system. (eg en_US or es_ES). If you don\'t know what to choose leave it blank.'; -$string['configloginhttps'] = 'Turning this on will make Moodle use a secure https connection just for the login page (providing a secure login), and then afterwards revert back to the normal http URL for general speed. CAUTION: this setting REQUIRES https to be specifically enabled on the web server - if it is not then YOU COULD LOCK YOURSELF OUT OF YOUR SITE.'; -$string['configloglifetime'] = 'This specifies the length of time you want to keep logs about user activity. Logs that are older than this age are automatically deleted. It is best to keep logs as long as possible, in case you need them, but if you have a very busy server and are experiencing performance problems, then you may want to lower the log lifetime.'; -$string['configlongtimenosee'] = 'If students haven\'t logged in for a very long time, then they are automatically unsubscribed from courses. This parameter specifies that time limit.'; -$string['configmaxbytes'] = 'This specifies a maximum size that uploaded files can be throughout the whole site. This setting is limited by the PHP setting upload_max_filesize and the Apache setting LimitRequestBody. In turn, maxbytes limits the range of sizes that can be chosen at course level or module level.'; -$string['configmaxeditingtime'] = 'This specifies the amount of time people have to re-edit forum postings, journal feedback etc. Usually 30 minutes is a good value.'; -$string['configmessaging'] = 'Should the messaging system between site users be enabled?'; -$string['confignoreplyaddress'] = 'Emails are sometimes sent out on behalf of a user (eg forum posts). The email address you specify here will be used as the \"From\" address in those cases when the recipients should not be able to reply directly to the user (eg when a user chooses to keep their address private).'; -$string['confignotifyloginfailures'] = 'If login failures have been recorded, email notifications can be sent out. Who should see these notifications?'; -$string['confignotifyloginthreshold'] = 'If notifications about failed logins are active, how many failed login attempts by one user or one IP address is it worth notifying about?'; -$string['configopentogoogle'] = 'If you enable this setting, then Google will be allowed to enter your site as a Guest. In addition, people coming in to your site via a Google search will automatically be logged in as a Guest. Note that this only provides transparent access to courses that already allow guest access.'; -$string['configpathtoclam'] = 'Path to clam AV. Probably something like /usr/bin/clamscan or /usr/bin/clamdscan. You need this in order for clam AV to run.'; -$string['configproxyhost'] = 'If this server needs to use a proxy computer (eg a firewall) to access the Internet, then provide the proxy hostname and port here. Otherwise leave it blank.'; -$string['configquarantinedir'] = 'If you want clam AV to move infected files to a quarantine directory, enter it here. It must be writable by the webserver. If you leave this blank, or if you enter a directory that doesn\'t exit or isn\'t writable, infected files will be deleted. Do not include a trailing slash.'; -$string['configrunclamonupload'] = 'Run clam AV on file upload? You will need a correct path in pathtoclam for this to work. (Clam AV is a free virus scanner that you can get from http://www.clamav.net/)'; -$string['configsectioninterface'] = 'Interface'; -$string['configsectionmail'] = 'Mail'; -$string['configsectionmaintenance'] = 'Maintenance'; -$string['configsectionmisc'] = 'Miscellaneous'; -$string['configsectionoperatingsystem'] = 'Operating System'; -$string['configsectionpermissions'] = 'Permissions'; -$string['configsectionsecurity'] = 'Security'; -$string['configsectionuser'] = 'User'; -$string['configsecureforms'] = 'Moodle can use an additional level of security when accepting data from web forms. If this is enabled, then the browser\'s HTTP_REFERER variable is checked against the current form address. In a very few cases this can cause problems if the user is using a firewall (eg Zonealarm) configured to strip HTTP_REFERER from their web traffic. Symptoms are getting \'stuck\' on a form. If your users are having problems with the login page (for example) you might want to disable this setting, although it might leave your site more open to brute-force password attacks. If in doubt, leave this set to \'Yes\'.'; -$string['configsessioncookie'] = 'This setting customises the name of the cookie used for Moodle sessions. This is optional, and only useful to avoid cookies being confused when there is more than one copy of Moodle running within the same web site.'; -$string['configsessiontimeout'] = 'If people logged in to this site are idle for a long time (without loading pages) then they are automatically logged out (their session is ended). This variable specifies how long this time should be.'; -$string['configshowblocksonmodpages'] = 'Some activity modules support blocks on their pages. If you turn this on, then teachers will be able to add side blocks on those pages, otherwise the interface does not show this feature.'; -$string['configshowsiteparticipantslist'] = 'All of these site students and site teachers will be listed on the site participants list. Who shall be allowed to see this site participants list?'; -$string['configsitepolicy'] = 'If you have a site policy that all users must see and agree to before using this site, then specify the URL to it here, otherwise leave this field blank. The URL can point to anywhere - one convenient place would be a file in the site files. eg http://yoursite/file.php/1/policy.html'; -$string['configslasharguments'] = 'Files (images, uploads etc) are provided via a script using \'slash arguments\' (the second option here). This method allows files to be more easily cached in web browsers, proxy servers etc. Unfortunately, some PHP servers don\'t allow this method, so if you have trouble viewing uploaded files or images (eg user pictures), set this variable to the first option.'; -$string['configsmtphosts'] = 'Give the full name of one or more local SMTP servers that Moodle should use to send mail (eg \'mail.a.com\' or \'mail.a.com;mail.b.com\'). If you leave it blank, Moodle will use the PHP default method of sending mail.'; -$string['configsmtpuser'] = 'If you have specified an SMTP server above, and the server requires authentication, then enter the username and password here.'; -$string['configteacherassignteachers'] = 'Should ordinary teachers be allowed to assign other teachers within courses they teach? If \'No\', then only course creators and admins can assign teachers.'; -$string['configtimezone'] = 'You can set the default timezone here. This is the only the DEFAULT timezone for displaying dates - each user can override this by setting their own in their profile. \"Server time\" here will make Moodle default to the server\'s operating system setting, but \"Server time\" in the user profile will make the user default to this timezone setting.'; -$string['configunzip'] = 'Indicate the location of your unzip program (Unix only, optional). If specified, this will be used to unpack zip archives on the server. If you leave this blank, then Moodle will use internal routines.'; -$string['configallowuserblockhiding'] = 'Do you want to allow users to hide/show side blocks throughout this site? This feature uses Javascript and cookies to remember the state of each collapsible block, and only affects the user\'s own view.'; -$string['configvariables'] = 'Variables'; -$string['configwarning'] = 'Be careful modifying these settings - strange values could cause problems.'; -$string['configzip'] = 'Indicate the location of your zip program (Unix only, optional). If specified, this will be used to create zip archives on the server. If you leave this blank, then Moodle will use internal routines.'; -$string['confirmation'] = 'Confirmation'; -$string['cronwarning'] = 'The cron.php maintenance script has not been run for at least 24 hours.
        The installation documentation explains how you can automate this.'; -$string['edithelpdocs'] = 'Edit help documents'; -$string['editstrings'] = 'Edit strings'; -$string['filterall'] = 'Filter all strings'; $string['filteruploadedfiles'] = 'Filter uploaded files'; -$string['helpadminseesall'] = 'Do admins see all calendar events or just those that apply to themselves?'; -$string['helpcalendarsettings'] = 'Configure various calendar and date/time-related aspects of Moodle'; -$string['helpforcetimezone'] = 'You can allow users to individually select their timezone, or force a timezone for everyone.'; -$string['helpsitemaintenance'] = 'For upgrades and other work'; -$string['helpstartofweek'] = 'Which day starts the week in the calendar?'; -$string['helpupcominglookahead'] = 'How many days in the future does the calendar look for upcoming events by default?'; -$string['helpupcomingmaxevents'] = 'How many (maximum) upcoming events are shown to users by default?'; -$string['helpweekenddays'] = 'Which days of the week are treated as \"weekend\" and shown with a different colour?'; -$string['importtimezones'] = 'Update complete list of timezones'; -$string['importtimezonescount'] = '$a->count entries imported from $a->source'; -$string['importtimezonesfailed'] = 'No sources found! (Bad news)'; -$string['nodstpresetsexist'] = 'DST support is disabled for all users because there are no DST presets defined. You can define some presets using the button below.'; -$string['optionalmaintenancemessage'] = 'Optional maintenance messsage'; -$string['sitemaintenance'] = 'The site is undergoing maintenance and is currently not available'; -$string['sitemaintenancemode'] = 'Maintenance mode'; -$string['sitemaintenanceon'] = 'Your site is currently in maintenance mode (only admins can log in or use the site).'; -$string['sitemaintenanceoff'] = 'Maintenance mode has been disabled and the site is running normally again'; -$string['sitemaintenancewarning'] = 'Your site is currently in maintenance mode (only admins can log in). To return this site to normal operation, disable maintenance mode.'; -$string['tabselectedtofront'] = 'On tables with tabs, should the row with the currently selected tag be placed at the front'; -$string['timezonenotforced'] = 'Users can choose their own timezone'; -$string['timezoneforced'] = 'This is forced by the site administrator'; -$string['timezoneisforcedto'] = 'Force all users to use'; -$string['therewereerrors'] = 'There were errors in your data'; $string['upgradelogs'] = 'For full functionality, your old logs need to be upgraded. More information'; $string['upgradelogsinfo'] = 'Some changes have recently been made in the way logs are stored. To be able to view all of your old logs on a per-activity basis, your old logs need to be upgraded. Depending on your site this can take a long time (eg several hours) and can be quite taxing on the database for large sites. Once you start this process you should let it finish (by keeping the browser window open). Don\'t worry - your site will work fine for other people while the logs are being upgraded.

        Do you want to upgrade your logs now?'; -$string['upgradesure'] = 'Your Moodle files have been changed, and you are about to automatically upgrade your server to this version: -

        $a

        -

        Once you do this you can not go back again.

        -

        Are you sure you want to upgrade this server to this version?

        '; + $string['upgradinglogs'] = 'Upgrading logs'; ?> diff --git a/lang/en/appointment.php b/lang/en/appointment.php index 5913da2b07b..afb75181be6 100755 --- a/lang/en/appointment.php +++ b/lang/en/appointment.php @@ -1,4 +1,4 @@ -$a->assignment
        \'

        You can see it appended to your url\">assignment submission.'; $string['assignmentname'] = 'Assignment name'; $string['assignmenttype'] = 'Assignment type'; -$string['availabledate'] = 'Available from'; $string['configmaxbytes'] = 'Default maximum assignment size for all assignments on the site (subject to course limits and other local settings)'; $string['description'] = 'Description'; $string['duedate'] = 'Due date'; $string['duedateno'] = 'No due date'; $string['early'] = '$a early'; -$string['emailteachers'] = 'Email alerts to teachers'; -$string['emailteachermail'] = ' -$a->username has updated their assignment submission -for \'$a->assignment\' - -It is available here: - - $a->url'; -$string['emailteachermailhtml'] = '$a->username has updated their assignment submission -for \'$a->assignment\'

        -It is url\">available on the web site.'; $string['existingfiledeleted'] = 'Existing file has been deleted: $a'; $string['failedupdatefeedback'] = 'Failed to update submission feedback for user $a'; $string['feedback'] = 'Feedback'; @@ -42,7 +30,6 @@ $string['maximumsize'] = 'Maximum size'; $string['modulename'] = 'Assignment'; $string['modulenameplural'] = 'Assignments'; $string['newsubmissions'] = 'Assignments submitted'; -$string['noassignments'] = 'There are no assignments yet'; $string['notgradedyet'] = 'Not graded yet'; $string['notsubmittedyet'] = 'Not submitted yet'; $string['overwritewarning'] = 'Warning: uploading again will REPLACE your current submission'; @@ -52,7 +39,6 @@ $string['submissions'] = 'Submissions'; $string['submitassignment'] = 'Submit your assignment using this form'; $string['submitted'] = 'Submitted'; $string['typeoffline'] = 'Offline activity'; -$string['typeonline'] = 'Online activity'; $string['typeuploadsingle'] = 'Upload a single file'; $string['uploadbadname'] = 'This filename contained strange characters and couldn\'t be uploaded'; $string['uploadedfiles'] = 'uploaded files'; diff --git a/lang/en/attendance.php b/lang/en/attendance.php index d2c1b3308d1..9c136096b04 100755 --- a/lang/en/attendance.php +++ b/lang/en/attendance.php @@ -1,4 +1,4 @@ -\'$a\' and return fields username and password.
        Be careful not to enter an incorrect URL as you may lock yourself out of this site.
        Leave this setting blank to use the default login page.'; -$string['alternateloginurl'] = 'Alternate Login URL'; -$string['auth_cas_logincas'] = 'Secure connection access'; -$string['auth_cas_invalidcaslogin'] = 'Sorry, your login has failed - you could not be authorised'; -$string['auth_cas_server_settings'] = 'CAS server configuration'; -$string['auth_castitle'] = 'Use a CAS server (SSO)'; -$string['auth_cas_hostname'] = 'Hostname of the CAS server
        eg: host.domain.fr'; -$string['auth_cas_baseuri'] = 'URI of the server (nothing if no baseUri)
        For example, if the CAS server responds to host.domaine.fr/CAS/ then
        cas_baseuri = CAS/'; -$string['auth_cas_port'] = 'Port of the CAS server'; -$string['auth_cas_version'] = 'Version of CAS'; -$string['auth_cas_language'] = 'Selected language'; -$string['auth_casdescription'] = 'This method uses a CAS server (Central Authentication Service) to authenticate users in a Single Sign On environment (SSO). You can also use a simple LDAP authentication. If the given username and password are valid according to CAS, Moodle creates a new user entry in its database, taking user attributes from LDAP if required. On following logins only the username and password are checked.'; -$string['auth_cas_enabled'] = 'Turn this on if you want to use CAS authentication.'; -$string['auth_cas_text'] = 'Secure connection'; -$string['auth_cas_create_user'] = 'Turn this on if you want to insert CAS-authenticated users in Moodle database. If not then only users who already exist in the Moodle database can log in.'; -$string['auth_common_settings'] = 'Common settings'; -$string['auth_data_mapping'] = 'Data mapping'; $string['auth_dbdescription'] = 'This method uses an external database table to check whether a given username and password is valid. If the account is a new one, then information from other fields may also be copied across into Moodle.'; -$string['auth_dbextrafields'] = 'These fields are optional. You can choose to pre-fill some Moodle user fields with information from the external database fields that you specify here.

        If you leave these blank, then defaults will be used.

        In either case, the user will be able to edit all of these fields after they log in.

        '; +$string['auth_dbextrafields'] = 'These fields are optional. You can choose to pre-fill some Moodle user fields with information from the external database fields that you specify here.

        If you leave these blank, then defaults will be used.

        In either case, the user will be able to edit all of these fields after they log in.'; $string['auth_dbfieldpass'] = 'Name of the field containing passwords'; $string['auth_dbfielduser'] = 'Name of the field containing usernames'; $string['auth_dbhost'] = 'The computer hosting the database server.'; @@ -31,17 +14,15 @@ $string['auth_dbtable'] = 'Name of the table in the database'; $string['auth_dbtitle'] = 'Use an external database'; $string['auth_dbtype'] = 'The database type (See the ADOdb documentation for details)'; $string['auth_dbuser'] = 'Username with read access to the database'; -$string['auth_editlock'] = 'Lock value'; -$string['auth_editlock_expl'] = '

        Lock value: If enabled, will prevent Moodle users and admins from editing the field directly. Use this option if you are maintaining this data in the external auth system.

        '; $string['auth_emaildescription'] = 'Email confirmation is the default authentication method. When the user signs up, choosing their own new username and password, a confirmation email is sent to the user\'s email address. This email contains a secure link to a page where the user can confirm their account. Future logins just check the username and password against the stored values in the Moodle database.'; $string['auth_emailtitle'] = 'Email-based authentication'; -$string['auth_fccreators'] = 'List of groups whose members are allowed to create new courses. Separate multiple groups with \';\'. Names must be spelled exactly as on FirstClass server. System is case-sensitive.'; -$string['auth_fcdescription'] = 'This method uses a FisrtClass server to check whether a given username and password is valid.'; -$string['auth_fcfppport'] = 'Server port (3333 is the most common)'; -$string['auth_fchost'] = 'The FirstClass server address. Use the IP number or DNS name.'; -$string['auth_fcpasswd'] = 'Password for the account above.'; $string['auth_fctitle'] = 'Use a FirstClass server'; -$string['auth_fcuserid'] = 'Userid for FirstClass account with privilege \'Subadministrator\' set.'; +$string['auth_fcdescription'] = 'This method uses a FisrtClass server to check whether a given username and password is valid.'; +$string['auth_fchost'] = 'The FirstClass server address. Use the IP number or DNS name.'; +$string['auth_fcfppport'] = 'Server port (3333 is the most common)'; +$string['auth_fcuserid'] = "Userid for FirstClass account with privilege 'Subadministrator' set."; +$string['auth_fcpasswd'] = 'Password for the account above.'; +$string['auth_fccreators'] = "List of groups whose members are allowed to create new courses. Separate multiple groups with ';'. Names must be spelled exactly as on FirstClass server. System is case-sensitive."; $string['auth_imapdescription'] = 'This method uses an IMAP server to check whether a given username and password is valid.'; $string['auth_imaphost'] = 'The IMAP server address. Use the IP number, not DNS name.'; $string['auth_imapport'] = 'IMAP server port number. Usually this is 143 or 993.'; @@ -49,38 +30,22 @@ $string['auth_imaptitle'] = 'Use an IMAP server'; $string['auth_imaptype'] = 'The IMAP server type. IMAP servers can have different types of authentication and negotiation.'; $string['auth_ldap_bind_dn'] = 'If you want to use bind-user to search users, specify it here. Someting like \'cn=ldapuser,ou=public,o=org\''; $string['auth_ldap_bind_pw'] = 'Password for bind-user.'; -$string['auth_ldap_bind_settings'] = 'Bind settings'; $string['auth_ldap_contexts'] = 'List of contexts where users are located. Separate different contexts with \';\'. For example: \'ou=users,o=org; ou=others,o=org\''; -$string['auth_ldap_create_context'] = 'If you enable user creation with email confirmation, specify the context where users are created. This context should be different from other users to prevent security issues. You don\'t need to add this context to ldap_context-variable, Moodle will search for users from this context automatically.
        Note! You have to modify function auth_user_create() in file auth/ldap/lib.php to make user creation work'; +$string['auth_ldap_create_context'] = 'If you enable user creation with email confirmation, specify the context where users are created. This context should be different from other users to prevent security issues. You don\'t need to add this context to ldap_context-variable, Moodle will search for users from this context automatically.'; $string['auth_ldap_creators'] = 'List of groups whose members are allowed to create new courses. Separate multiple groups with \';\'. Usually something like \'cn=teachers,ou=staff,o=myorg\''; -$string['auth_ldap_expiration_desc'] = 'Select No to disable expired password checking or LDAP to read passwordexpiration time directly from LDAP'; -$string['auth_ldap_expiration_warning_desc'] = 'Number of days before password expiration warning is issued.'; -$string['auth_ldap_expireattr_desc'] = 'Optional: overrides ldap-attribute what stores password expiration time asswordAxpirationTime'; -$string['auth_ldap_graceattr_desc'] = 'Optional: Overrides gracelogin attribute'; -$string['auth_ldap_gracelogins_desc'] = 'Enable LDAP gracelogin support. After password has expired user can login until gracelogin count is 0. Enabling this setting displays grace login message if password is exprired.'; -$string['auth_ldap_host_url'] = 'Specify LDAP host in URL-form like \'ldap://ldap.myorg.com/\' or \'ldaps://ldap.myorg.com/\' Separate multipleservers with \';\' to get failover support. '; -$string['auth_ldap_login_settings'] = 'Login settings'; -$string['auth_ldap_memberattribute'] = 'Optional: Overrides user member attribute, when users belongs to a group. Usually \'member\''; -$string['auth_ldap_objectclass'] = 'Optional: Overrides objectClass used to name/search users on ldap_user_type. Usually you dont need to chage this.'; -$string['auth_ldap_opt_deref'] = 'Determines how aliases are handled during search. Select one of the following values: \"No\" (LDAP_DEREF_NEVER) or \"Yes\" (LDAP_DEREF_ALWAYS) '; -$string['auth_ldap_passwdexpire_settings'] = 'LDAP password expiration settings.'; -$string['auth_ldap_search_sub'] = 'Put value <> 0 if you like to search users from subcontexts.'; -$string['auth_ldap_server_settings'] = 'LDAP server settings'; -$string['auth_ldap_update_userinfo'] = 'Update user information (firstname, lastname, address..) from LDAP to Moodle. Specify \"Data mapping\" settings as you need.'; -$string['auth_ldap_user_attribute'] = 'Optional: Overrides the attribute used to name/search users. Usually \'cn\'.'; -$string['auth_ldap_user_settings'] = 'User lookup settings'; -$string['auth_ldap_user_type'] = 'Select how users are stored in LDAP. This setting also specifies how login expiration, grace logins and user creation will work. '; +$string['auth_ldap_host_url'] = 'Specify LDAP host in URL-form like \'ldap://ldap.myorg.com/\' or \'ldaps://ldap.myorg.com/\' '; +$string['auth_ldap_memberattribute'] = 'Specify user member attribute, when users belongs to a group. Usually \'member\''; +$string['auth_ldap_search_sub'] = 'Put value <> 0 if you like to search users from subcontexts.'; +$string['auth_ldap_update_userinfo'] = 'Update user information (firstname, lastname, address..) from LDAP to Moodle. Look at /auth/ldap/attr_mappings.php for mapping information'; +$string['auth_ldap_user_attribute'] = 'The attribute used to name/search users. Usually \'cn\'.'; +$string['auth_ldap_objectclass'] = 'The filter used to name/search users. Usually you will set it to something like objectClass=posixAccount . Defaults to objectClass=* what will return all objects from LDAP.'; $string['auth_ldap_version'] = 'The version of the LDAP protocol your server is using.'; -$string['auth_ldapdescription'] = 'This method provides authentication against an external LDAP server. - - If the given username and password are valid, Moodle creates a new user - - entry in its database. This module can read user attributes from LDAP and prefill - - wanted fields in Moodle. For following logins only the username and - +$string['auth_ldapdescription'] = 'This method provides authentication against an external LDAP server. + If the given username and password are valid, Moodle creates a new user + entry in its database. This module can read user attributes from LDAP and prefill + wanted fields in Moodle. For following logins only the username and password are checked.'; -$string['auth_ldapextrafields'] = 'These fields are optional. You can choose to pre-fill some Moodle user fields with information from the LDAP fields that you specify here.

        If you leave these fields blank, then nothing will be transferred from LDAP and Moodle defaults will be used instead.

        In either case, the user will be able to edit all of these fields after they log in.

        '; +$string['auth_ldapextrafields'] = 'These fields are optional. You can choose to pre-fill some Moodle user fields with information from the LDAP fields that you specify here.

        If you leave these fields blank, then nothing will be transferred from LDAP and Moodle defaults will be used instead.

        In either case, the user will be able to edit all of these fields after they log in.'; $string['auth_ldaptitle'] = 'Use an LDAP server'; $string['auth_manualdescription'] = 'This method removes any way for users to create their own accounts. All accounts must be manually created by the admin user.'; $string['auth_manualtitle'] = 'Manual accounts only'; @@ -91,23 +56,12 @@ $string['auth_nntpport'] = 'Server port (119 is the most common)'; $string['auth_nntptitle'] = 'Use an NNTP server'; $string['auth_nonedescription'] = 'Users can sign in and create valid accounts immediately, with no authentication against an external server and no confirmation via email. Be careful using this option - think of the security and administration problems this could cause.'; $string['auth_nonetitle'] = 'No authentication'; -$string['auth_pamdescription'] = 'This method uses PAM to access the native usernames on this server. You have to install PHP4 PAM Authentication in order to use this module.'; -$string['auth_pamtitle'] = 'PAM (Pluggable Authentication Modules)'; -$string['auth_passwordisexpired'] = 'Your password is expired. Do you want change your password now?'; -$string['auth_passwordwillexpire'] = 'Your password will expire in $a days. Do you want change your password now?'; $string['auth_pop3description'] = 'This method uses a POP3 server to check whether a given username and password is valid.'; $string['auth_pop3host'] = 'The POP3 server address. Use the IP number, not DNS name.'; $string['auth_pop3mailbox'] = 'Name of the mailbox to attempt a connection with. (usually INBOX)'; $string['auth_pop3port'] = 'Server port (110 is the most common, 995 is common for SSL)'; $string['auth_pop3title'] = 'Use a POP3 server'; $string['auth_pop3type'] = 'Server type. If your server uses certificate security, choose pop3cert.'; -$string['auth_shibbolethdescription'] = 'Using this method you can connect to an existing Shibboleth server to check and create new accounts'; -$string['auth_shibbolethtitle'] = 'Shibboleth'; -$string['auth_updatelocal'] = 'Update local data'; -$string['auth_updatelocal_expl'] = '

        Update local data: If enabled, the field will be updated (from external auth) every time the user logs in or there is a user synchronization. Fields set to update locally should be locked.

        '; -$string['auth_updateremote'] = 'Update external data'; -$string['auth_updateremote_expl'] = '

        Update external data: If enabled, the external auth will be updated when the user record is updated. Fields should be unlocked to allow edits.

        '; -$string['auth_updateremote_ldap'] = '

        Note: Updating external LDAP data requires that you set binddn and bindpw to a bind-user with editing privileges to all the user records. It currently does not preserve multi-valued attributes, and will remove extra values on update.

        '; $string['auth_user_create'] = 'Enable user creation'; $string['auth_user_creation'] = 'New (anonymous) users can create user accounts on the external authentication source and confirmed via email. If you enable this , remember to also configure module-specific options for user creation.'; $string['auth_usernameexists'] = 'Selected username already exists. Please choose a new one.'; @@ -116,16 +70,10 @@ $string['authinstructions'] = 'Here you can provide instructions for your users, $string['changepassword'] = 'Change password URL'; $string['changepasswordhelp'] = 'Here you can specify a location at which your users can recover or change their username/password if they\'ve forgotten it. This will be provided to users as a button on the login page and their user page. if you leave this blank the button will not be printed.'; $string['chooseauthmethod'] = 'Choose an authentication method: '; -$string['forcechangepassword'] = 'Force change password'; -$string['forcechangepassword_help'] = 'Force users to change password on their next login to Moodle.'; -$string['forcechangepasswordfirst_help'] = 'Force users to change password on their first login to Moodle.'; $string['guestloginbutton'] = 'Guest login button'; $string['instructions'] = 'Instructions'; $string['md5'] = 'MD5 encryption'; $string['plaintext'] = 'Plain text'; $string['showguestlogin'] = 'You can hide or show the guest login button on the login page.'; -$string['stdchangepassword'] = 'Use standard Change Password Page'; -$string['stdchangepassword_expl'] = 'If the external authentication system allows password changes through Moodle, switch this to Yes. This setting overrides \'Change Password URL\'.'; -$string['stdchangepassword_explldap'] = 'NOTE: It is recommended that you use LDAP over an SSL encrypted tunnel (ldaps://) if the LDAP server is remote.'; ?> diff --git a/lang/en/block_course_list.php b/lang/en/block_course_list.php index 0d95ab8ada8..570f6794c2a 100644 --- a/lang/en/block_course_list.php +++ b/lang/en/block_course_list.php @@ -1,8 +1,8 @@ - diff --git a/lang/en/block_course_summary.php b/lang/en/block_course_summary.php index 5980a98fffd..defab8573f9 100644 --- a/lang/en/block_course_summary.php +++ b/lang/en/block_course_summary.php @@ -1,6 +1,5 @@ - diff --git a/lang/en/block_glossary_random.php b/lang/en/block_glossary_random.php deleted file mode 100644 index 5fe470e1db2..00000000000 --- a/lang/en/block_glossary_random.php +++ /dev/null @@ -1,23 +0,0 @@ -Last modified entry will always display the entry that was last modified, and Random entry will choose a new one at random every time. The option Next entry will cycle through the entries in order. This last option is especially useful when a number of days is also chosen, allowing you to make a Quote of the week or a Tip of the day that everyone sees.'; -$string['type'] = 'How a new entry is chosen'; -$string['viewglossary'] = 'More quotes...'; -$string['whichfooter'] = 'You can display links to actions of the glossary this block is associated with. The block will only display links to actions which are enabled for that glossary.'; -?> diff --git a/lang/en/block_html.php b/lang/en/block_html.php index 82faf765255..35ec4c97175 100755 --- a/lang/en/block_html.php +++ b/lang/en/block_html.php @@ -4,6 +4,5 @@ $string['html'] = 'HTML'; $string['configtitle'] = 'Block Title'; $string['configcontent'] = 'Content'; $string['leaveblanktohide'] = 'leave blank to hide the title'; -$string['newhtmlblock'] = '(new HTML block)'; ?> \ No newline at end of file diff --git a/lang/en/block_online_users.php b/lang/en/block_online_users.php index 924f6549364..bae12c3feea 100644 --- a/lang/en/block_online_users.php +++ b/lang/en/block_online_users.php @@ -1,6 +1,6 @@ - diff --git a/lang/en/block_rss_client.php b/lang/en/block_rss_client.php index 82dc694baaa..d37c4959a6e 100755 --- a/lang/en/block_rss_client.php +++ b/lang/en/block_rss_client.php @@ -5,23 +5,15 @@ $string['block_rss_feeds_add_edit'] = 'Add/Edit Feeds'; $string['block_rss_remote_news_feed'] = 'Remote News Feed'; $string['block_rss_feed_updated'] = 'News feed updated'; $string['block_rss_feed_added'] = 'News feed added'; -$string['block_rss_update_feed'] = 'Update a news feed URL: '; -$string['block_rss_add_feed'] = 'Add a news feed URL: '; - $string['block_rss_feed_deleted'] = 'News feed deleted'; -$string['block_rss_client_num_entries'] = 'The default number of entries to show per feed.'; -$string['block_rss_submitters'] = 'Who will be allowed to define new rss feeds? Defined feeds are available for any page on your site.'; -$string['block_rss_choose_feed_label'] = 'Choose the feeds which you would like to make available in this block:'; -$string['block_rss_client_show_channel_link_label'] = 'Should a link to the original site (channel link) be displayed? (Note that if no feed link is supplied in the news feed then no link will be shown) :'; -$string['block_rss_client_show_image_label'] = 'Show channel image if available :'; -$string['block_rss_client_channel_link'] = 'Source site...'; -$string['block_rss_custom_title_label'] = 'Custom title (leave blank to use title supplied by feed):'; -$string['validate_feed'] = 'Validate feed'; +$string['block_rss_num_entries'] = 'Number of rss links to show per block.'; +$string['block_rss_submitters'] = 'Who can define new rss feeds? Feeds are made available for any member of your site to add to their own pages.'; +$string['block_rss_choose_feed'] = 'Choose an feed to display in this block:'; $string['block_rss_no_feeds'] = 'There are no RSS feeds defined for this site.'; $string['block_rss_edit_news_feeds'] = 'Edit news feeds'; -$string['block_rss_shownumentries_label'] = 'Max number entries to show per block.'; -$string['block_rss_display_description_label'] = 'Display each link\'s description?'; +$string['block_rss_shownumentries'] = 'Max number entries to show per block.'; +$string['block_rss_display_description'] = 'Display each link\'s description?'; $string['block_rss_could_not_find_feed'] = 'Could not find feed with id'; $string['block_rss_feed'] = 'Feed'; @@ -39,4 +31,6 @@ $string['block_rss_see_all_feeds'] = 'See all feeds'; $string['block_rss_edit_rss_block'] = 'Edit RSS Headline Block'; $string['block_rss_add_new'] = 'Add New'; +$string['block_rss_word_title'] = 'Title'; + ?> \ No newline at end of file diff --git a/lang/en/block_section_links.php b/lang/en/block_section_links.php index cfd854e2d86..a48383d243d 100644 --- a/lang/en/block_section_links.php +++ b/lang/en/block_section_links.php @@ -1,6 +1,6 @@ - diff --git a/lang/en/calendar.php b/lang/en/calendar.php index 6dc56cce604..cc4f3a25622 100644 --- a/lang/en/calendar.php +++ b/lang/en/calendar.php @@ -36,7 +36,6 @@ $string['eventview'] = 'Event Details'; $string['expired'] = 'Expired'; $string['explain_lookahead'] = 'This sets the (maximum) number of days in the future that an event has to start in in order to be displayed as an upcoming event. Events that start beyond this will never be displayed as upcoming. Please note that there is no guarantee that all events starting in this time frame will be displayed; if there are too many (more than the \"Maximum upcoming events\" preference) then the most distant events will not be shown.'; $string['explain_maxevents'] = 'This sets the maximum number of upcoming events that can be displayed. If you pick a large number here it is possible that upcoming events displays will take up a lot of space on your screen.'; -$string['explain_persistflt'] = 'If this is enabled, then Moodle will remember your last event filter settings and automatically restore them each time you login.'; $string['explain_startwday'] = 'Calendar weeks will be shown as starting on the day that you select here.'; $string['explain_timeformat'] = 'You can choose to see times in either 12 or 24 hour format. If you choose \"default\", then the format will be automatically chosen according to the language you use in the site.'; $string['globalevents'] = 'Global events'; @@ -50,7 +49,6 @@ $string['noupcomingevents'] = 'There are no upcoming events'; $string['oneevent'] = '1 event'; $string['pref_lookahead'] = 'Upcoming events look-ahead'; $string['pref_maxevents'] = 'Maximum upcoming events'; -$string['pref_persistflt'] = 'Remember filter settings'; $string['pref_startwday'] = 'First day of week'; $string['pref_timeformat'] = 'Time display format'; $string['preferences'] = 'Preferences'; diff --git a/lang/en/chat.php b/lang/en/chat.php index d82b00d3798..1d058a4f191 100644 --- a/lang/en/chat.php +++ b/lang/en/chat.php @@ -1,4 +1,6 @@ -never set this lower than 2 * chat_refresh_room.'; +$string['configoldping'] = 'After how long of not hearing from a user should we consider them gone?'; $string['configrefreshroom'] = 'How often should the chat room itself be refreshed? (in seconds). Setting this low will make the chat room seem quicker, but it may place a higher load on your web server when many people are chatting'; $string['configrefreshuserlist'] = 'How often should the list of users be refreshed? (in seconds)'; $string['configserverhost'] = 'The hostname of the computer where the server daemon is'; @@ -20,10 +22,6 @@ $string['deletesessionsure'] = 'Are you sure you want to delete this session?'; $string['donotusechattime'] = 'Don\'t publish any chat times'; $string['enterchat'] = 'Click here to enter the chat now'; $string['errornousers'] = 'Could not find any users!'; -$string['explaingeneralconfig'] = 'These settings are always into effect'; -$string['explainmethoddaemon'] = 'These settings matter only if you have selected \"Chat server daemon\" for chat_method'; -$string['explainmethodnormal'] = 'These settings matter only if you have selected \"Normal method\" for chat_method'; -$string['generalconfig'] = 'General configuration'; $string['helpchatting'] = 'Help with chatting'; $string['idle'] = 'Idle'; $string['messagebeepseveryone'] = '$a beeps everyone!'; diff --git a/lang/en/choice.php b/lang/en/choice.php index bf83bdefa2b..c7ea7d678d1 100644 --- a/lang/en/choice.php +++ b/lang/en/choice.php @@ -1,28 +1,20 @@ diff --git a/lang/en/countries.php b/lang/en/countries.php index a531b6aa22d..9e1a0dc3013 100644 --- a/lang/en/countries.php +++ b/lang/en/countries.php @@ -1,4 +1,4 @@ -userfrom has posted a new entry in your - -dialogue entry for \'$a->dialogue\' - - - -You can see it appended to your dialogue entry: - - - +$string['dialoguemail'] = '$a->userfrom has posted a new entry in your +dialogue entry for \'$a->dialogue\' + +You can see it appended to your dialogue entry: + $a->url'; -$string['dialoguemailhtml'] = '$a->userfrom has posted a new entry in your - -dialogue entry for \'$a->dialogue\'

        - +$string['dialoguemailhtml'] = '$a->userfrom has posted a new entry in your +dialogue entry for \'$a->dialogue\'

        You can see it appended to your url\">dialogue.'; $string['dialoguename'] = 'Dialogue name'; $string['dialogueopened'] = 'Dialogue opened with $a'; @@ -36,7 +29,6 @@ $string['everybody'] = 'Everybody'; $string['furtherinformation'] = 'Further Information'; $string['lastentry'] = 'Last Entry'; $string['maildefault'] = 'Mail Default'; -$string['mailnotification'] = 'Mail Notification'; $string['modulename'] = 'Dialogue'; $string['modulenameplural'] = 'Dialogues'; $string['namehascloseddialogue'] = '$a has closed dialogue'; diff --git a/lang/en/docs/background.html b/lang/en/docs/background.html index bbe2ef4b60c..da03dd07b60 100644 --- a/lang/en/docs/background.html +++ b/lang/en/docs/background.html @@ -1,22 +1,21 @@ - - + + Moodle Docs: Background - - + + - +

        Background

        Moodle is an active and evolving work in progress. Development was started - by Martin + by Martin Dougiamas who continues to lead the project:

        I've been working on it, in some way or other, for several years. It - started in the 90's when I was webmaster at Curtin + started in the 90's when I was webmaster at Curtin University of Technology and a system administrator of their WebCT installation. I encountered many frustrations with the WebCT beast and developed an itch that needed scratching - there had to be a better way (no, not Blackboard @@ -73,8 +72,8 @@

        For more about our future plans for Moodle, see the Future roadmap.

        -

        Moodle Documentation

        -

        Version: $Id$

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/coding.html b/lang/en/docs/coding.html index 072c25a6643..a64537b73ab 100755 --- a/lang/en/docs/coding.html +++ b/lang/en/docs/coding.html @@ -1,12 +1,10 @@ - - + Moodle Docs: Coding Guidelines - - + + - +

        Moodle Coding Guidelines

        Any collaborative project needs consistency and stability to stay strong.

        @@ -41,7 +39,7 @@ from your code using get_string() or print_string().
      • All help files should be translatable - create new texts in the "en/help" directory and call them using helpbutton(). -

        If you need to update a help file:

        +

        If you need to update a help file:

        • with a minor change, where an old translation of the file would still make sense, then it's OK to make the change @@ -52,7 +50,7 @@ new code and the help index files should also be modified to point to the newest versions.
        - +

      • Incoming data from the browser (sent via GET or POST) automatically has magic_quotes applied (regardless of the PHP settings) so that you can safely @@ -76,13 +74,13 @@ meaningful lowercase English words. If you really need more than one word then run them together, but keep them short as possible. Use plural names for arrays of objects. -

        GOOD: $quiz
        - GOOD: $errorstring
        -GOOD: $assignments (for an array of objects)
        - GOOD: $i (but only in little loops)
        +

        GOOD: $quiz
        + GOOD: $errorstring
        +GOOD: $assignments (for an array of objects)
        + GOOD: $i (but only in little loops)

        - BAD: $Quiz
        - BAD: $aReallyLongVariableNameWithoutAGoodReason
        + BAD: $Quiz
        + BAD: $aReallyLongVariableNameWithoutAGoodReason
        BAD: $error_string

      • Constants should always be in upper case, @@ -95,7 +93,7 @@ GOOD: $assignments (for an array of objects)
        lowercase words, and start with the name of the module to avoid conflicts between modules. Words should be separated by underscores. Parameters should always have sensible defaults if possible. Note there is no space between the function name and - the following (brackets).
        + the following (brackets).

        function forum_set_display_mode($mode=0) {
            global
        $USER, @@ -125,11 +123,11 @@ GOOD: $assignments (for an array of objects)
        }

      • Strings should be defined using single quotes - where possible, for increased speed.
        + where possible, for increased speed.

        $var = 'some text without any - variables';
        - $var = "with special characters like a new line \n";
        - $var = 'a very, very long string with a '.$single.' variable in it';
        + variables';
        + $var = "with special characters like a new line \n";
        + $var = 'a very, very long string with a '.$single.' variable in it';
        $var = "some $text with $many variables $within it";

      • Comments should use two or three slashes @@ -150,37 +148,37 @@ GOOD: $assignments (for an array of objects)
                if (
        $rates = get_records("forum_ratings", "post", $postid)) - {
        + {
                    
        // Process each rating in turn
                    foreach (
        $rates as $rate) - {
        + {

        ....etc

      • Space should be used liberally - don't be afraid to spread things out a little to gain some clarity. Generally, there should be one space between brackets and normal statements, but no space between - brackets and variables or functions:
        + brackets and variables or functions:

        foreach ($objects as $key => - $thing) {
        + $thing
        ) {
            process($thing); -
        - }
        -
        +
        + }
        +
        if ($x == $y) - {
        + {
            $a - = $b;
        +
        = $b;
        } else if (
        $x == - $z) {
        +
        $z) {
            $a - = $c;
        - } else {
        +
        = $c;
        + } else {
            $a - = $d;
        +
        = $d;
        }

      • @@ -201,8 +199,8 @@ GOOD: $assignments (for an array of objects)
      • Boolean fields should be implemented as small integer fields (eg INT4) containing 0 or 1, to allow for later expansion of values if necessary.
      • Most tables should have a timemodified field (INT10) which is updated with a current timestamp obtained with the PHP time() function.
      • -
        -

        Moodle Documentation

        -

        Version: $Id$

        +
        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/credits.html b/lang/en/docs/credits.html index 3c475f987ec..272e7a24444 100644 --- a/lang/en/docs/credits.html +++ b/lang/en/docs/credits.html @@ -1,12 +1,11 @@ - - + + Moodle Docs: Credits - - + + - +

        Credits

        Overall guidance

        @@ -21,7 +20,7 @@ to writing Moodle code and helping it grow. These are people who "get" what developing Moodle is all about and without whom Moodle would be a far lesser thing:

        - Eloy Lafuente (stronk7), Ray Kingdon, Williams Castillo, Petri Asikainen, Henrik Kaipe, Zbigniew Fiedorowicz, Gustav Delius, Thomas Robb, Janne Mikkonen, Jon Papaioannou, Scott Elliott, Shane Elliott, Roberto Pinna (Bobo), Mike Churchward, Petr Škoda (skodak), Penny Leach, Martin Langhoff

        + Eloy Lafuente (stronk7), Ray Kingdon, Williams Castillo, Petri Asikainen, Henrik Kaipe, Zbigniew Fiedorowicz, Gustav Delius, Thomas Robb, Janne Mikkonen, Jon Papaioannou, Scott Elliott, Shane Elliott, Roberto Pinna (Bobo), Mike Churchward

         

        @@ -38,20 +37,20 @@ Yoshida, Greg Barnett, Mark Kimes, Mary Hunter, Russell Jungwirth, Przemyslaw Stencel, John "Captain" Eyre, Paula Edmiston, Howard Miller, Claudio Tavares, P. Timothy Ervin, Bob Calder, Ursula Raab, David Delgado, Mad Alex, Gaëtan Frenoy, Bernard Boucher, - Bryan Williams, Rob Butner, Koen Roggemans, David Scotson, Torsten Anderson, Eamon Costello, Hannes Gassert, Andrew Walker.

        + Bryan Williams, Rob Butner, Koen Roggemans, David Scotson, Torsten Anderson, Eamon Costello.

        Sorry if we've forgotten to include your name here - the Moodle community is large and active so this list is difficult to maintain! Please email Martin and make your suggestions! :-)

        Thanks also to everyone of you who have

        @@ -62,7 +61,7 @@ over 1000 phrases to translate (plus hundreds of help files!). Many of the languages have more than one contributor, sometimes working together and sometimes working serially.

        -

        Maintaining a list of all these wonderful people is too difficult, so please look at the Language +

        Maintaining a list of all these wonderful people is too difficult, so please look at the Language download page for names and details.

        The Translation Coordinator is Koen Roggemans (translation@moodle.org).

         

        @@ -75,11 +74,11 @@

         

        @@ -91,170 +90,151 @@ allow us to do so. My thanks go out to the authors of all these excellent products - without them Moodle would be missing important functionality. Copyright information for each package is included below:

        -

        ADOdb   -  lib/adodb

        Database abstraction library for MySQL, PostgreSQL, MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 and ODBC.

        -

        Version: 4.50
        - Copyright © 2000-2004 John Lim (jlim@natsoft.com.my)
        - License: Dual LGPL and BSD-style
        - URL:  http://adodb.sourceforge.net +

        Version: 4.50
        + Copyright © 2000-2004 John Lim (jlim@natsoft.com.my)
        + License: Dual LGPL and BSD-style
        + URL:  http://adodb.sourceforge.net

        -

        Graph Class   -  lib/graphlib.php

        Class to draw line, point, bar, and area graphs, including numeric x-axis and double y-axis.

        -

        Version: 1.6.3 (with modifications)
        - Copyright © 2000  Herman Veluwenkamp, hermanV@mindless.com
        - License: LGPL +

        Version: 1.6.3 (with modifications)
        + Copyright © 2000  Herman Veluwenkamp, hermanV@mindless.com
        + License: LGPL

        html2text   -  lib/html2text.php

        PHP script to convert HTML into an approximate text equivalent

        -

        Version: 1.0 (with modifications)
        - Copyright © 2002  Mark Wilton-Jones
        - License: HowToCreate script license with written permission
        - URL: http://www.howtocreate.co.uk/php/
        +

        Version: 1.0 (with modifications)
        + Copyright © 2002  Mark Wilton-Jones
        + License: HowToCreate script license with written permission
        + URL: http://www.howtocreate.co.uk/php/

        htmlArea   -  lib/editor

        Javascript/HTML script to put a GUI editor in textareas on Internet Explorer and Mozilla

        -

        Version: 3.0 beta (with modifications)
        - Copyright © 2002  interactivetools.com, inc.
        - License: htmlArea License (based on BSD license)
        +

        Version: 3.0 beta (with modifications)
        + Copyright © 2002  interactivetools.com, inc.
        + License: htmlArea License (based on BSD license)

        IP-Atlas  -   lib/ipatlas

        -

        PHP scripts to show the location of an IP address on a map.
        -
        - Version: 1.0 (with modifications)
        - Copyright © 2002   Ivan Kozik
        - License: GNU GPL
        - URL: http://www.xpenguin.com/ip-atlas.php -

        +

        PHP scripts to show the location of an IP address on a map.
        +
        + Version: 1.0 (with modifications)
        + Copyright © 2002   Ivan Kozik
        + License: GNU GPL
        + URL: http://www.xpenguin.com/ip-atlas.php

        kses   -  lib/kses.php

        HTML/XHTML filter that only allows some elements and attributes

        -

        Version: 0.2.1
        +

        Version: 0.2.1
        Copyright © 2002,2003  Ulf Harnhammar
        - License: GNU GPL
        + License: GNU GPL
        URL: http://sourceforge.net/projects/kses

        mimeTeX  -   filter/tex

        -

        Compiled C program to convert TeX into GIFs
        -
        - Version: 1.4
        - Copyright © 2002-2004   John Forkosh Associates, Inc
        - License: GNU GPL
        - URL: http://www.forkosh.com/mimetex.html
        - URL: http://moodle.org/download/mimetex -

        +

        Compiled C program to convert TeX into GIFs
        +
        + Version: 1.4
        + Copyright © 2002-2004   John Forkosh Associates, Inc
        + License: GNU GPL
        + URL: http://www.forkosh.com/mimetex.html
        +URL: http://moodle.org/download/mimetex

        - -

        mp3player  -   lib/mp3player

        -
        -

        Flash movie to play streaming MP3s
        -
        - Copyright © 2005   Andrew Walker
        - License: GNU GPL

        -
        -

        overlibmws  -   lib/overlib.js

        -

        Javascript library to enable DHTML popups, floating windows, events etc
        -
        - Version: July 2004
        - Copyright © 2002-2004   Foteos Macrides
        - Copyright © 1998-2004   Erik Bosrup
        - License: Artistic Open Source License
        - URL: http://www.macridesweb.com/oltest/ -

        +

        Javascript library to enable DHTML popups, floating windows, events etc
        +
        + Version: July 2004
        + Copyright © 2002-2004   Foteos Macrides
        + Copyright © 1998-2004   Erik Bosrup
        + License: Artistic Open Source License
        + URL: http://www.macridesweb.com/oltest/

        -

        PclZip  -   lib/pclzip

        -

        Class to create, manage and unpack zip files.
        -
        - Version: 2.4 RC1
        - Copyright © 2004  Vincent Blavet <vincent@phpconcept.net>
        - License: GNU GPL
        - URL: http://www.phpconcept.net
        -

        +

        Class to create, manage and unpack zip files.
        +
        + Version: 2.0 RC2
        + Copyright © 2003  Vincent Blavet <vincent@phpconcept.net>
        + License: GNU GPL
        + URL: http://www.phpconcept.net
        +

        -

        PHP mailer   -  lib/class.phpmailer.php

        Class for sending email using either sendmail, PHP mail(), or SMTP.  - Methods are based upon the standard AspEmail(tm) classes.
        -
        - Version 1.71,
        - Copyright © 2003 Brent R. Matzelle <bmatzelle@yahoo.com>
        - License: LGPL
        - URL:   http://phpmailer.sourceforge.net
        + Methods are based upon the standard AspEmail(tm) classes.
        +
        + Version 1.71,
        + Copyright © 2003 Brent R. Matzelle <bmatzelle@yahoo.com>
        + License: LGPL
        + URL:   http://phpmailer.sourceforge.net

        -

        PHP Markdown   -  lib/markdown.php

        Functions to convert from the Markdown text format into clean XHTML.

        -

        Version: 1.0b9 (with modifications)
        - Copyright © 2003-2004 , John Gruber
        - Copyright © 2004 , Michel Fortin
        - License: LGPL
        - URL: http://www.michelf.com/projects/php-markdown/
        +

        Version: 1.0b9 (with modifications)
        + Copyright © 2003-2004 , John Gruber
        + Copyright © 2004 , Michel Fortin
        + License: LGPL
        + URL: http://www.michelf.com/projects/php-markdown/

        - +

        Snoopy  -   lib/snoopy

        -

        A PHP net client
        -
        - Version: 1.0
        - Copyright © 1999-2000 Monte Ohrt <monte@ispi.net>
        - License: GNU LGPL
        - URL: http://snoopy.sourceforge.com
        +

        A PHP net client
        +
        + Version: 1.0
        + Copyright © 1999-2000 Monte Ohrt <monte@ispi.net>
        + License: GNU LGPL
        + URL: http://snoopy.sourceforge.com

        -

        Spreadsheet::WriteExcel  -   lib/excel

        -

        A library for generating Excel Spreadsheets.
        -
        - Version: 2002-11-28
        - Copyright © 2002  Xavier Noguer <xnoguer@rezebra.com>
        - License: GNU LGPL
        - URL: http://jeffn.users.phpclasses.org/browse.html/package/767.html
        +

        A library for generating Excel Spreadsheets.
        +
        + Version: 2002-11-28
        + Copyright © 2002  Xavier Noguer <xnoguer@rezebra.com>
        + License: GNU LGPL
        + URL: http://jeffn.users.phpclasses.org/browse.html/package/767.html

        -

        SMTP class   -  lib/class.smtp.php

        Class that can be used to connect and communicate with any SMTP - server.
        - It implements all the SMTP functions defined in RFC821 except TURN.
        -
        - Version: 03/26/2001
        + server.
        + It implements all the SMTP functions defined in RFC821 except TURN.
        +
        + Version: 03/26/2001
        Copyright © 2001  Chris Ryan <chris@greatbridge.com>

        -


        +


        -

        Moodle Documentation

        -

        Version: $Id$

        - +

        Moodle Documentation

        +

        Version: $Id$

        + diff --git a/lang/en/docs/cvs.html b/lang/en/docs/cvs.html index 7f0074feb9c..26381268588 100644 --- a/lang/en/docs/cvs.html +++ b/lang/en/docs/cvs.html @@ -1,13 +1,10 @@ - - + Moodle Docs: How to use CVS - - + + - +

        CVS for Moodle Developers

        CVS is the Concurrent Versioning System, a commonly-used way of managing source code for large software projects. CVS keeps all versions of all files so that nothing is ever lost, and usage by different people is tracked. It also provides ways to merge code if two or more people are working on the same file. All code and all versions are stored on a central server (in the case of Moodle, at Sourceforge).

        If you just want to download Moodle using CVS to run a site, then you probably don't need this page - just follow the simpler CVS instructions on the Moodle download page.

         

          -
        1. Joining the project as a developer
        2. -
        3. CVS Modules
        4. -
        5. Basic CVS Commands
          - 3.1. CVS on Unix
          - 3.2. CVS on Windows
        6. -
        7. Working with Branches
          - 4.1. Trunk development
          - 4.2. Stable branches for each release
          - 4.3. Feature branches for large changes
        8. +
        9. Joining the project as a developer
        10. +
        11. CVS Modules
        12. +
        13. Basic CVS Commands
          + 3.1. CVS on Unix
          + 3.2. CVS on Windows
        14. +
        15. Working with Branches
          + 4.1. Trunk development
          + 4.2. Stable branches for each release
          + 4.3. Feature branches for large changes
        -
        -
        -

        1. Joining the project as a developer

        +

         

        +

        1. Joining the project as a developer

        So, you've been offered CVS write access to help us develop and maintain Moodle! Welcome aboard!

        -

        To be able to write changes into Moodle's CVS archive, you first need to have an account at Sourceforge (registration is free and easy). For the examples on this page, let's assume your username is myusername and your password is mypassword. Take special note of the sourceforge instructions to create your CVS home directory - something you have to do with every new account to "enable" it for CVS. Basically you just have to use ssh to interactively connect to cvs.sourceforge.net.

        +

        To be able to write changes into Moodle's CVS archive, you first need to have an account at Sourceforge (registration is free and easy). For the examples on this page, let's assume your username is myusername and your password is mypassword. Take special note of the sourceforge instructions to create your CVS home directory - something you have to do with every new account to "enable" it for CVS. Basically you just have to use ssh to interactively connect to cvs.sourceforge.net.

        Once you have a working Sourceforge account, contact Martin Dougiamas so he can set up your account with write access to particular Moodle directories.

        + target="_top" href="http://moodle.org/user/view.php?id=1&course=1">Martin Dougiamas so he can set up your account with write access to particular Moodle directories.

        To avoid being prompted for mypassword every time you run a CVS command, follow the Sourceforge directions for using authorized keys. This step is optional, but it can make your CVS experience a lot nicer.

        With that done, you should have all the permissions you need, so you just need to set up your machine and download the current sources so you can start working on them.

         

        -

        2. CVS Modules

        +

        2. CVS Modules

        Within CVS, the word "modules" refers to separate collections of code. In Moodle we have the following modules within our repository:

        @@ -59,9 +55,9 @@ style ol {margin-left:40px;}

        Most people are working on the existing features in the moodle module, but many are also contributing new ideas in the contrib modules. Once code reaches a certain level of maturity in the contrib area, it can be migrated over into the main moodle tree.

         

        -

        3. Basic CVS Commands

        +

        3. Basic CVS Commands

        -

        3.1 CVS on Unix

        +

        3.1 CVS on Unix

        Sourceforge CVS uses ssh as a transport layer for security, so you will have to set a CVS_RSH environment variable in your Unix shell. It's best to put these commands in your .bashrc or .cshrc so you don't have to type it all the time:

        setenv CVS_RSH ssh (for csh, tcsh etc)
        @@ -89,10 +85,12 @@ update -dP

        Try 'cvs help' for more details ...

         

        -

        3.2 CVS on Windows

        +

        3.2 CVS on Windows

        First, you need to download a completely fresh copy of Moodle using your developer account.

        +
          +
            1. Get TortoiseCVS from tortoisecvs.org and install it, then reboot.
            2. Find or create a new folder somewhere where you want Moodle to be downloaded to.
            3. @@ -101,32 +99,42 @@ update -dP
               :ext:myusername@cvs.sourceforge.net:/cvsroot/moodle
            4. Under the "Module" field, type "moodle" to get the latest development version of Moodle, "contrib" to get the contributions directory, or "mysql" to get the MySQL Admin module.
            5. -
            6. Press the button: "OK" and everything should be downloaded.
              +
            7. Press the button: "OK" and everything should be downloaded.
            +
          +

        A dialog box should show all the files being downloaded, and after a while you should have a complete copy of Moodle. After this first checkout, you can fetch the latest updated files from the CVS server:

        +
          +
            1. Right-mouse-click on your Moodle folder (or any file) and select "CVS Update".
            2. -
            3. Sit back and watch the logs scroll by. Take note of conflicts that may occur if your local code has changes that conflict with the incoming versions - you will need to edit these files and resolve the conflicts manually.
              +
            4. Sit back and watch the logs scroll by. Take note of conflicts that may occur if your local code has changes that conflict with the incoming versions - you will need to edit these files and resolve the conflicts manually.
            +
          +

        After modifying files (you will notice their icons change from green to red!), you can commit them back to the CVS server like this:

        +
          +
            1. Right-mouse-click on your Moodle folder (or any file) and select "CVS Commit...".
            2. In the dialog box, type a clear description of the changes you are committing.
            3. -
            4. Click "OK". Your changes will be sent to the server.
              +
            5. Click "OK". Your changes will be sent to the server.
            -
            +
          +
        +

         

        -

        4. Working with Branches

        +

        4. Working with Branches

        This diagram shows how the main moodle module branches into different versions over time.

        -

        +

        To see all the current tags and branches that are available, use this command on any old file (such as index.php in the top moodle directory):

        cvs status -v index.php

        Some tagging guidelines:

        @@ -135,9 +143,10 @@ update -dP
      • Tags and branches should ALWAYS be applied to the entire module (all of Moodle). Don't tag individual files or directories.
      • We don't allow renaming of tags because people may be relying on them, so get them right the first time!
      • -
        -
        -

        4.1 Trunk development

        +


        +

        +

         

        +

        4.1 Trunk development

        The Trunk of CVS is the main development version of Moodle. In CVS it is also known as the HEAD, or default branch.

        Moodle developers try to keep this stable as possible, but as it usually contains new code it probably has bugs and small instabilities.

        @@ -145,7 +154,7 @@ update -dP

        A Beta package is also released at this point - it's for testers who don't use CVS but want to test the latest features and report bugs.

         

        -

        4.2 Stable branches for each release

        +

        4.2 Stable branches for each release

        As soon as the stable branch MOODLE_XX_STABLE is created, development efforts will fork into two streams for a while. Some people may continue working on new features in the trunk for the next release, but most developers should be concentrating on using the current STABLE branch and fixing bugs that are found in it.

        You can switch your local copy of Moodle to the STABLE version using the following command in Unix from the root directory:

        @@ -155,62 +164,69 @@ update -dP

        On Windows clients you should have a menu from which you can choose the branch.

        Once the new STABLE branch really stabilises, a release can be declared. Packages are created for distribution and the branch will be tagged (by Martin) with a tag named: MOODLE_XXX

        Periodically, bug fixes in the STABLE branch should be merged into the trunk so that they become available in future versions of Moodle. A floating tag called MOODLE_XX_MERGED will be maintained to keep track of the last merge. The procedure for such a merge is as follows:

        +
            -
          1. Get out the very latest trunk version.
            -
            +
          2. Get out the very latest trunk version.
            +
            cvs update -dPA
          3. -
          4. Merge everything on the branch since the last merge, into your trunk version

            +
          5. Merge everything on the branch since the last merge, into your trunk version

            cvs update -kk -j MOODLE_13_MERGED -j MOODLE_13_STABLE
          6. Carefully watch the update logs for conflicts, and fix every file that you see with a conflict
          7. -
          8. Check the merged copy back into CVS trunk version
            -
            +
          9. Check the merged copy back into CVS trunk version
            +
            cvs commit
          10. -
          11. Go back to the branch version

            +
          12. Go back to the branch version

            cvs update -dPr MOODLE_13_STABLE
          13. -
          14. Update the floating merge tag so that this process can be repeated next time

            +
          15. Update the floating merge tag so that this process can be repeated next time

            cvs tag -RF MOODLE_13_MERGED
          -


          +

        +


        Finally, the values for $version in all the Moodle version.php files within the stable branch should not be updated at all if possible (except the last digit if necessary). The reason is that someone updating from a very stable version to the next very stable version could miss database upgrades that happened on the trunk.

        -
        -

        4.3 Feature branches for large changes

        +

         

        +

        4.3 Feature branches for large changes

        Occasionally, there may be a very large feature that needs to be checked in so several people can work on it, but it is too unstable to be included in the main development trunk.

        In these cases a short-term branch can be created to work on the feature, and then merged back into the main trunk as soon as possible. An example called MOODLE_14_WIDGET branch can be seen in the above diagram.

        If you need to do this for your new WIDGET feature, follow these steps:

        + +
          1. Discuss with other developers to make sure it's necessary!
          2. Make a new tag on the trunk (for all of moodle) called MOODLE_XX_WIDGET_PRE -

            +

            cvs tag -R MOODLE_XX_WIDGET_PRE
          3. Create your branch called MOODLE_XX_WIDGET -

            -
            cvs tag -Rb MOODLE_XX_WIDGET
          4. +

            +
            cvs tag -Rb MOODLE_XX_WIDGET
          5. Work in that branch until the feature is reasonably stable. Commit as necessary. -

            +

            cvs commit
          6. When ready, merge the whole branch into the trunk, fix conflicts, commit it to the trunk and then abandon the branch. -
            -
            +
            +
            cvs update -dPA
            cvs update -kk -j MOODLE_XX_WIDGET
            cvs commit
          -
        -
        -
        + +
        +
        +

         

        +
        +

        Good luck, be careful and have fun!

        +

         

        -
        -

        Moodle Documentation

        -

        Version: $Id$

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/developer.html b/lang/en/docs/developer.html index 3331bfabeb6..16a511b8c83 100644 --- a/lang/en/docs/developer.html +++ b/lang/en/docs/developer.html @@ -1,13 +1,10 @@ - - Moodle Docs: Developers Manual - - + + - +

        Developers Manual

        This document describes some of Moodle's design and how you can contribute.

        @@ -34,20 +31,20 @@

        From a system administrator's perspective, Moodle has been designed according to the following criteria:

          -
        1. Moodle should run on the widest variety of platforms
          -
          +
        2. Moodle should run on the widest variety of platforms
          +
          The web application platform that runs on most platforms is PHP combined with MySQL, and this is the environment that Moodle has been developed in (on Linux, Windows, and Mac OS X). Moodle also uses the ADOdb library for database abstraction, which means Moodle can use more than ten different brands of database (unfortunately, though, it can not yet set up tables in all these databases - - more on this later).
          -
          + more on this later).
          +
        3. -
        4. Moodle should be easy to install, learn and modify
          -
          - Early prototypes of Moodle (1999) were built using Zope +
        5. Moodle should be easy to install, learn and modify
          +
          + Early prototypes of Moodle (1999) were built using Zope - an advanced object-oriented web application server. Unfortunately I found that although the technology was pretty cool, it had a very steep learning curve and was not very flexible in terms of system administration. The PHP @@ -58,28 +55,28 @@ by libraries of clearly-named functions and consistent layout of script files. PHP is also easy to install (binaries are available for every platform) and is widely available to the point that most web hosting services provide - it as standard.
          -
          + it as standard.
          +
        6. -
        7. It should be easy to upgrade from one version to the next
          -
          +
        8. It should be easy to upgrade from one version to the next
          +
          Moodle knows what version it is (as well as the versions of all plug-in modules) and a mechanism has been built-in so that Moodle can properly upgrade itself to new versions (for example it can rename database tables or add new fields). If using CVS in Unix for example, one can just do a "cvs - update -d" and then visit the site home page to complete an upgrade.
          -
          + update -d" and then visit the site home page to complete an upgrade.
          +
        9. -
        10. It should be modular to allow for growth
          -
          +
        11. It should be modular to allow for growth
          +
          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.
          -
          + More on this below in the next section.
          +
        12. -
        13. It should be able to be used in conjunction with other systems
          -
          +
        14. It should be able to be used in conjunction with other systems
          +
          One thing Moodle does is keep all files for one course within a single, normal directory on the server. This would allow a system administrator to provide seamless forms of file-level access for each teacher, such as @@ -120,7 +117,7 @@
        15. widget_user_outline() - given an instance, return a summary of a user's contribution
        16. widget_user_complete() - given an instance, print details of a user's - contribution
          + contribution
        17. To avoid possible conflict, any module functions should be named starting with widget_ and any constants you define should start with @@ -171,9 +168,9 @@ the themes for this will be a completely different format, but the advantage will be a much higher possible degree of customisation (including moving elements around the page).

          -

          More discussion about this in the Themes +

          More discussion about this in the Themes forum on Using Moodle. If you create a nice theme that you think others - might want to use, please post your zip file on the themes forum!
          + might want to use, please post your zip file on the themes forum!

        Languages

        @@ -193,15 +190,16 @@
      • quiz.php - strings for quiz module
      • resource.php - strings for resource module
      • survey.php - strings for survey module
      • -
      • .... plus other modules if any.
        -
        - A string is called from these files using the get_string() or print_string() functions. Each string +
      • .... plus other modules if any.
        +
        + A string is called from these files using the get_string() + or print_string() functions. Each string supports variable substitution, to support variable ordering in different - languages.
        -
        + languages.
        +
        eg $strdueby = get_string("assignmentdueby", "assignment", - userdate($date));
        -
        + userdate($date));
        +
        If a string doesn't exist in a particular language, then the equivalent in English will automatically be used instead.
      • @@ -218,9 +216,9 @@

        Note that you can edit languages online, using the administration web tools under "Check this language". This makes it easy to not to only create new languages but to refine existing ones. If you are starting a - new language, please contact me, Martin + new language, please contact me, Martin Dougiamas.

        -

        You might also like to post in the Languages +

        You might also like to post in the Languages forum on Using Moodle.

        If you are maintaining a language an ongoing basis, I can give you CVS write access to the Moodle source code so that you can directly maintain @@ -258,13 +256,13 @@

        If you feel like writing a tutorial, an article, an academic paper or anything else about Moodle, please do!

        -

        Put it on the web and make sure you include links to http://moodle.org/

        +

        Put it on the web and make sure you include links to http://moodle.org/

         

        Participating in the bug tracker

        Finally, I would like to invite you to register on the "bug tracker" - at http://moodle.org/bugs + at http://moodle.org/bugs so you can file any bugs that you find and perhaps participate in discussing and fixing them.

        "Bugs" not only includes software bugs with current versions @@ -278,9 +276,9 @@

        -

        Thanks for using Moodle!
        -
        - Martin Dougiamas, Lead +

        Thanks for using Moodle!
        +
        + Martin Dougiamas, Lead Developer

        @@ -289,7 +287,7 @@

         

        -

        Moodle Documentation

        -

        Version: $Id$

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/docstyles.css b/lang/en/docs/docstyles.css index 0af1b88cdb6..319597299dd 100755 --- a/lang/en/docs/docstyles.css +++ b/lang/en/docs/docstyles.css @@ -1,6 +1,5 @@ body, td, th, li { font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - background-color: #FFFFFF; } th { diff --git a/lang/en/docs/faq.html b/lang/en/docs/faq.html index 9e7e60fb223..52d94b4c0bd 100644 --- a/lang/en/docs/faq.html +++ b/lang/en/docs/faq.html @@ -1,13 +1,11 @@ - - + Moodle Docs: Frequently Asked Questions (FAQ) - - + + - +

        Frequently Asked Questions (FAQ)

        This page contains answers to some of the most frequently asked questions by people installing Moodle. If you have @@ -83,7 +81,7 @@ reduced functionality due to a mis-configuration in the firewall settings.

        + time & date correctly?

        magic_quotes_gpc = On
        +

        magic_quotes_gpc = On
        @@ -523,7 +521,7 @@ reduced functionality due to a mis-configuration in the firewall settings. - +
        @@ -653,7 +651,7 @@ reduced functionality due to a mis-configuration in the firewall settings. has a firewall that is stripping referrer information from the browser. Here are - some instructions for fixing Norton firewall products.

        + some instructions for fixing Norton firewall products.

        @@ -707,7 +705,7 @@ reduced functionality due to a mis-configuration in the firewall settings. -

        Why doesn't my Moodle site display the time & date correctly?

        +

        Why doesn't my Moodle site display the time & date correctly?

        @@ -758,7 +756,7 @@ This will be acceptable for the majority of users.

          -


        +
        @@ -770,7 +768,7 @@ This will be acceptable for the majority of users. -
        +
        @@ -782,11 +780,11 @@ This will be acceptable for the majority of users. -

        Moodle Documentation

        +

        Moodle Documentation

        -

        Version: $Id: faq.html,v 1.6 2003/03/30 13:54:28 +

        Version: $Id: faq.html,v 1.6 2003/03/30 13:54:28 diff --git a/lang/en/docs/features.html b/lang/en/docs/features.html index 0c0705fc2af..9bd2063c01b 100644 --- a/lang/en/docs/features.html +++ b/lang/en/docs/features.html @@ -1,15 +1,14 @@ - - + + Moodle Docs: Background - + - + - +

        Features

        @@ -214,7 +213,7 @@

         

        -

        Moodle Documentation

        -

        Version: $Id$

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/future.html b/lang/en/docs/future.html index 1a7baf9956c..8672f8df0b2 100644 --- a/lang/en/docs/future.html +++ b/lang/en/docs/future.html @@ -1,61 +1,53 @@ - - Moodle Docs: Future - + - + - +

        Future

        As Moodle gains in maturity, its directions are increasingly influenced by the community of developers and users. A dynamic database of proposed features - and their status can be found at moodle.org/bugs. + and their status can be found at moodle.org/bugs. Your contributions in the form of ideas, code, feedback and promotion are all very welcome - see the Developers - manual and the community forums for more details. You can also pay to have certain features developed sooner- see moodle.com/development for information and a quote.

        -

        Here is the current roadmap of the future, though this is always subject to change depending on sponsors and developers.

        -

        Version 1.5 - February 2005

        + manual for more details. You can also pay to have certain features developed sooner- see moodle.com/development for information and a quote.

        +

        Here is our current vision of the future, though this is always subject to change depending on sponsors and developers.

        +

        Version 1.4 - August 31st

        -

        Moodle 1.5 aims to make Moodle fully compliant with important web accessibility standards such as WAI (W3C), SENDA (UK) and Section 508 (US).

        -

        The display code will conform to XHTML Transitional 1.0, and the CSS has also been cleaned up and extended to give designers more complete control over the look and feel of their sites. This release will not yet use templates.

        -

        There is also a long list of new features such as:

        +

        This release contains a lot of structural improvements and refactoring in key modules. It also includes many interface improvements. Some highlights include:

          -
        • Integrated instant Messaging feature for direct communication
        • -
        • Big improvements to the Quiz module, including: paged quizzes with a certain number of questions per page; improved interface for building quizzes; heirarchical question categories;
        • -
        • New block format, allowing multiple copies of blocks and better block configuration (old third-party blocks need to be upgraded, see the docs in the blocks directory)
        • -
        • Extended LDAP integration, so that LDAP can now control course creation, group assignments, user synchronisation etc
        • -
        • Certain user fields can be locked by the admin
        • -
        • Improved uploading, with support for automated Virus scanning of new documents using ClamAV.
        • -
        • Streamlined interface for the Workshop and Lesson modules
        • -
        • New Tidy filter to convert all user-supplied texts into XHTML
        • -
        • PAM authentication module
        • -
        • Sessions can now be stored in the database (useful for Moodle clusters)
        • -
        • Site Policy Agreements for users
        • -
        • Many other improvements and bug fixes
        • +
        • New Enrolments architecture allows all manner of new automated enrolment processes. Included are a Paypal system (for paid courses) with instant access, arbitrary external database usage, parsing of flatfiles dumped from legay systems and so on.
        • +
        • Improved Resource handling with a new one step process and better control over display format. New resource types can be developed as plugins.
        • +
        • Refactored Quiz module allows new question types as plugins. A new question type called Calculated Questions allows questions to be presented uniquely to each student.
        • +
        • Chat module now supports an optional chat daemon as a backend, providing near-instant response to hundreds of users.
        • +
        • Improved Glossary module makes it easier to develop new glossary formats.
        • +
        • Improved Backup handles the translation of user content (such as links) better than ever.
        • +
        • Improved SCORM module handling an ever-wider range of SCORM content.
        • +
        • Improved interfaces for adding students, course creators and administrators.
        -

         

        -

        Version 1.6 - middle of 2005

        -
        -

        Many of the main pages in this version will be customisable using HTML templates.

        -

        Support for user blogs (replacing Journals).

        -

        My Moodle page

        -

        Improvements in structuring and maintaining the flow of courses

        -

         

        +

        Version 1.5 - Later in 2004

        +
        +

        This release will focus mainly on the display layer and making Moodle fully compliant with important web accessibility standards such as WAI (W3C), SENDA (UK) and Section 508 (US).

        +
          +
        • Completely rewritten display layer that completely separates presentation from application logic
        • +
        • Templating system with templates conforming to XHTML 1.0 for accessibility
        • +
        • Powerful system of Cascading Style Sheets designed for cross-platform compatibility.
        • +
        +

        As with most Moodle releases there will also be an array of new community-developed features and modules.

        -

        Version 2.0 - later in 2005

        +

        Version 2.0

        This major release will contain some exciting developments in making Moodle more network-aware, with a natural evolution of Moodle's focus on collaboration. More on this here later.

        -
        -

         

        -

        Moodle Documentation

        -

        Version: $Id$

        +
        +

         

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/install.html b/lang/en/docs/install.html index 2812e7cfcdb..fcda4394a13 100644 --- a/lang/en/docs/install.html +++ b/lang/en/docs/install.html @@ -1,48 +1,33 @@ - - -Moodle Docs: Basic Installation +Moodle Docs: Installation - + - - + - +

        Installing Moodle

        -

        Dont panic!

        -

        This guide explains how to install Moodle for the first time. For some of these steps it goes into a lot of detail to try and cover the majority of possible - web server setups, so this document may look long and complicated. Don't panic, once you know how to do it you can install Moodle in minutes!

        -

        If you have problems please read this document carefully - most common issues are answered in here. - If you still have trouble, you can seek help from - Moodle Help

        -

        Another option is to contact a web hosting company - who can completely maintain Moodle for you, so that you can ignore all this and get straight into educating! -

        -

         

        +

        This guide explains how to install Moodle for the first time. It goes into some detail + about some of the steps, in order to cover the wide variety of small differences between + web server setups, so this document may look long and complicated. Don't be put off by this + - I usually set Moodle up in a few minutes!

        +

        Take your time and work through this document carefully - it will save you time later on.

        Sections in this document:

        1. Requirements
        2. -
        3. Download and copy files into place
        4. +
        5. Download
        6. Site structure
        7. -
        8. Run the installer script to create config.php -
        9. -
        10. Go to the admin page to continue configuration
        11. +
        12. Create a data directory
        13. +
        14. Create a database
        15. +
        16. Check web server settings
        17. +
        18. Edit config.php
        19. +
        20. Go to the admin page
        21. Set up cron
        22. Create a new course
        23. -
        +

         

        1. Requirements

        @@ -56,10 +41,21 @@ but Moodle should work fine under any web server that supports PHP, such as IIS on Windows platforms.
      • PHP scripting language (version 4.1.0 - or later). PHP 5 is supported as of Moodle 1.4.
      • + or later), with the following settings: +
          +
        • GD library + turned ON, with support for JPG and PNG formats
        • +
        • zlib library turned ON (if you want to use backup/restore on Windows)
        • +
        • Sessions support turned ON
        • +
        • File uploading turned ON
        • +
        • Safe Mode must be turned OFF (see the forums on moodle.org for problems + caused by Safe Mode)
        • +
        +
      • a working database server: MySQL or PostgreSQL are - completely supported and recommended for use with Moodle.
      • + completely supported and recommended for use with Moodle 1.1. Other + databases will be supported fully in a future release.

        Most web hosts support all of this by default. If you are signed up with one of the few webhosts that does not support these features ask them why, @@ -70,36 +66,31 @@ all this on most popular platforms.

         

        -

        2. Download and copy files into place

        +

        2. Download

        There are two ways to get Moodle, as a compressed package and via CVS. These are explained in detail on the download page: http://moodle.org/download/

        After downloading and unpacking the archive, or checking out the files via CVS, you will be left with a directory called "moodle", containing - a number of files and folders.

        + a number of files and folders.

        You can either place the whole folder in your web server documents directory, in which case the site will be located at http://yourwebserver.com/moodle, or you can copy all the contents straight into the main web server documents directory, in which case the site will be simply http://yourwebserver.com.

        -

        If you are downloading Moodle to your local computer and then uploading it to your web site, it is usually better to upload the whole archive as one file, and then do the unpacking on the server. Even web hosting interfaces like Cpanel allow you to uncompress archives in the "File Manager".

         

        3. Site structure

        -

        You can safely skip this section, but here is a quick summary of the contents of the Moodle folder, to help get +

        Here is a quick summary of the contents of the Moodle folder, to help get you oriented:

        -
        - +

        config.php
        + - - - - - - + you will later make a copy of this and save it as config.php. + This will be the ONLY file you need to edit to get started. +
        config-dist.php - - contains basic settings. This file does not come with Moodle - you will create it.
        install.php-the script you will run to create config.php
        version.php - @@ -110,18 +101,17 @@ the front page of the site
        +

        • admin/ - code to administrate the whole server
        • -
        • auth/ - plugin modules to authenticate users
        • -
        • blocks/ - plugin modules for the little side blocks on many pages
        • -
        • calendar/ - all the code for managing and displaying calendars
        • +
        • auth/ - plugin modules to authenticate users
        • course/ - code to display and manage courses
        • doc/ - help documentation for Moodle (eg this page)
        • files/ - code to display and manage uploaded files
        • lang/ - texts in different languages, one directory per language
        • lib/ - libraries of core Moodle code
        • login/ - code to handle login and account creation
        • -
        • mod/ - all the main Moodle course modules are in here
        • +
        • mod/ - all Moodle course modules
        • pix/ - generic site graphics
        • theme/ - theme packs/skins to change the look of the site.
        • user/ - code to display and manage users
        • @@ -129,57 +119,102 @@

           

        -

        4. Run the Installer script to create config.php

        +

        4. Create a data directory

        -

        To run the installer script (install.php), just try to access your Moodle main URL using a web browser, or access http://yourserver/install.php directly.

        -

        (The Installer will try to set a session cookie. If you get a popup warning in your browser make sure you accept that cookie!)

        -

        Moodle will detect that configuration is necessary and will lead you through some screens to help you create a new configuration file called config.php. At the end of the process Moodle will try and write the file into the right location, otherwise you can press a button to download it from the installer and then upload config.php into the main Moodle directory on the server.

        -

        Along the way the installer will test your server environment and give you suggestions about how to fix any problems. For most common issues these suggestions should be sufficient, but if you get stuck, look below for more information about some of common things that might be holding you up.
        -

        -
        -
        - -

        4.1 General web server settings

        +

        Moodle will also need some space on your hard disk to store uploaded files, + such as course documents and user pictures.

        +

        Create a directory for this purpose somewhere. For security, it's best that + this directory is NOT accessible directly via the web. The easiest way to do this + is to simply locate it OUTSIDE the web directory, otherwise protect it + by creating a file in the data directory called .htaccess, containing this line:

        -

        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).

        -

        In Apache, this is done using a DirectoryIndex parameter in your httpd.conf - file. Mine usually looks like this:

        -
        -
        DirectoryIndex index.php index.html index.htm 
        -
        -

        Just make sure index.php is in the list (and preferably towards the start - of the list, for efficiency).

        -

        Secondly, if you are using Apache 2, then you should turn on the AcceptPathInfo - variable, which allows scripts to be passed arguments like http://server/file.php/arg1/arg2. - This is essential to allow relative links between your resources, and also - provides a performance boost for people using your Moodle web site. You can - turn this on by adding these lines to your httpd.conf file.

        -
        -
        AcceptPathInfo on 
        -
        -

        Thirdly, Moodle requires a number of PHP settings to be active for it to - work. On most servers these will already be the default settings. - However, some PHP servers (and some of the more recent PHP versions) may - have things set differently. These are defined in PHP's configuration - file (usually called php.ini):

        -
        -
        magic_quotes_gpc = 1    (preferred but not necessary)
        +     
        +    
        deny from all
        +
        +

        To make sure that Moodle can save uploaded files in this directory, check that + the web server software (eg Apache) has permission to write + to this directory. On Unix machines, this means setting the owner of the directory + to be something like "nobody" or "apache".

        +

        On many shared hosting servers, you will probably need to restrict all file access + to your "group" (to prevent other webhost customers from looking at or changing your files), + but provide full read/write access to everyone else (which will allow the web server + to access your files). Speak to your server administrator if you are having + trouble setting this up securely.

        +
        +

         

        +

        5. Create a database

        +
        +

        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). You could use the "root" user if you wanted to, but + this is not recommended for a production system: if hackers manage to discover + the password then your whole database system would be at risk, rather than + just one database. +

        +

        Example command lines for MySQL:

        +
        +   # mysql -u root -p
        +   > CREATE DATABASE moodle; 
        +   > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.* 
        +           TO moodleuser@localhost IDENTIFIED BY 'yourpassword'; 
        +   > quit 
        +   # mysqladmin -p reload
        +
        +

        Example command lines for PostgreSQL:

        +
        +   # su - postgres
        +   > psql -c "create user moodleuser createdb;" template1
        +   > psql -c "create database moodle;" -U moodleuser template1
        +   > psql -c "alter user moodleuser nocreatedb;" template1
        +
        +

        (For MySQL I highly recommend the use of phpMyAdmin + to manage your databases - you can do all this via a web interface).

        +

        As of version 1.0.8, Moodle now supports table prefixes, and so can safely share + a database with tables from other applications.

        +
        +

         

        +

        6. Check your web server settings

        +
        +

        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).

        +

        In Apache, this is done using a DirectoryIndex parameter in your httpd.conf + file. Mine usually looks like this:

        +
        +
        DirectoryIndex index.php index.html index.htm 
        +
        +

        Just make sure index.php is in the list (and preferably towards the start + of the list, for efficiency).

        +

        Secondly, if you are using Apache 2, then you should turn on the AcceptPathInfo + variable, which allows scripts to be passed arguments like http://server/file.php/arg1/arg2. + This is essential to allow relative links between your resources, and also + provides a performance boost for people using your Moodle web site. You can + turn this on by adding these lines to your httpd.conf file.

        +
        +
        AcceptPathInfo on 
        +
        +

        Thirdly, Moodle requires a number of PHP settings to be active for it to + work. On most servers these will already be the default settings. + However, some PHP servers (and some of the more recent PHP versions) may + have things set differently. These are defined in PHP's configuration + file (usually called php.ini):

        +
        + +
        magic_quotes_gpc = 1    (preferred but not necessary)
         magic_quotes_runtime = 0    (necessary)
         file_uploads = 1
         session.auto_start = 0
         session.bug_compat_warn = 0
        -  
        -
        -

        If you don't have access to httpd.conf or php.ini on your server, or you - have Moodle on a server with other applications that require different settings, - then don't worry, you can often still OVERRIDE the default settings. -

        -

        To do this, you need to create a file called .htaccess in Moodle's - main directory that contains lines like the following. - This only works on Apache servers and only when Overrides have been allowed in the main configuration.

        -
        -
        +
        +
        +

        If you don't have access to httpd.conf or php.ini on your server, or you + have Moodle on a server with other applications that require different settings, + then don't worry, you can still OVERRIDE all of the default settings. +

        To do this, you need to create a file called .htaccess in Moodle's + main directory that contains definitions for these settings. + This only works on Apache servers and only when Overrides have been allowed. + +

        +
         DirectoryIndex index.php index.html index.htm
         
         <IfDefine APACHE2>
        @@ -191,86 +226,50 @@ php_flag magic_quotes_runtime 0
         php_flag file_uploads 1
         php_flag session.auto_start 0
         php_flag session.bug_compat_warn 0
        -
        -

        You can also do things like define the maximum size for uploaded files: - -

        -
        -
        +  
        +

        You can also do things like define the maximum size for uploaded files: + +

        +
         LimitRequestBody 0
         php_value upload_max_filesize 2M
         php_value post_max_size 2M
              
        -
        -

        The easiest thing to do is just copy the sample file from lib/htaccess and edit it to suit your needs. It contains further instructions. For - example, in a Unix shell: -

        -
        -
        cp lib/htaccess .htaccess
        -
        -

         

        -

        4.2 Creating a database

        - +

        The easiest thing to do is just copy the sample file from lib/htaccess + and edit it to suit your needs. It contains further instructions. For + example, in a Unix shell:

        -

        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). You could use the "root" user if you wanted to for a test server, but - this is not recommended for a production system: if hackers manage to discover - the password then your whole database system would be at risk, rather than - just one database.

        -

        If you are using a webhost, they will probably have a control panel web interface for you to create your database.

        -

        The Cpanel system is one of the most popular of these. To create a database in Cpanel,

        -
          -
        1. Click on the "MySQL Databases" icon.
        2. -
        3. Type "moodle" in the database field and click "Add Database".
        4. -
        5. Type a username and password (not one you use elsewhere) in the respective fields and click "Add User".
        6. -
        7. Now use the "Add User to Database" button to give this new user account "ALL" rights to the new database.
        8. -
        9. Note that the username and database names may be prefixed by your Cpanel account name. When entering this information into the Moodle installer - use the full names.
        10. -
        -

        If you have access to Unix command lines then you can do the same sort of thing by typing commands.

        -

        Here are some example Unix command lines for MySQL:

        -
        -   # mysql -u root -p
        -   > CREATE DATABASE moodle; 
        -   > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.* 
        -           TO moodleuser@localhost IDENTIFIED BY 'yourpassword'; 
        -   > quit 
        -   # mysqladmin -p reload
        -    
        -

        And some example command lines for PostgreSQL:

        -
        -   # su - postgres
        -   > psql -c "create user moodleuser createdb;" template1
        -   > psql -c "create database moodle;" -U moodleuser template1
        -   > psql -c "alter user moodleuser nocreatedb;" template1
        +
        cp lib/htaccess .htaccess
        -

         

        - -

        4.3 Creating a data directory

        - -
        -

        Moodle will also need some space on your server's hard disk to store uploaded files, such as course documents and user pictures.

        -

        The Moodle installer tries hard to create this directory for you but if it fails then you will have to create a directory for this purpose manually.

        -

        For security, it's best that this directory is NOT accessible directly via the web. The easiest way to do this is to simply locate it OUTSIDE the web directory, but if you must have it in the web directory then protect it by creating a file in the data directory called .htaccess, containing this line:

        -
        -
        deny from all
        -
        -

        To make sure that Moodle can save uploaded files in this directory, check that the web server software (eg Apache) has permission to read, write and execute in this directory.

        -

        On Unix machines, this means setting the owner of the directory to be something like "nobody" or "apache", and then giving that user read, write and execute permissions.

        -

        On Cpanel systems you can use the "File Manager" to find the folder, click on it, then choose "Change Permissions". On many shared hosting servers, you will probably need to restrict all file access to your "group" (to prevent other webhost customers from looking at or changing your files), but provide full read/write access to everyone else (which will allow the web server to access your files).

        -

        Speak to your server administrator if you are having trouble setting this up securely. In particular some sites that use a PHP feature known as "Safe Mode" may require the administrator to create this directory properly for you.

        -
        -
        - - -

        5. Go to the admin page to continue configuration

        +

         

        +

        7. Edit config.php

        +
        +

        Now you can create and edit the configuration file, config.php, using a + text editor. This file is used by all other files in Moodle.

        +

        To start with, make a copy of config-dist.php and name it + config.php. We do this so that your config.php won't be overwritten in case + you upgrade Moodle later on.

        +

        Edit config.php to specify the database details that you + just defined (including a table prefix - notice that this is REQUIRED for + PostgreSQL), as well as the site address, file system directory and data directory. + The config file itself has detailed directions and examples.

        +

        Once you have done this the rest of the installation is via a web interface. + For the rest of this installation document we will assume your site is at: + http://example.com/moodle

        +
        +

         

        +

        8. Go to the admin page

        -

        Once the basic config.php has been correctly created in the previous step, trying to access the front page of your site will take you the "admin" page for the rest of the configuration.

        -

        The first time you access this admin page, you will be presented with - a GPL "shrinkwrap" agreement with which you must agree before you - can continue with the setup.

        +

        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 "shrinkwrap" agreement with which you must agree before you + can continue with the setup.

        +

        (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 must accept + the Moodle cookies, or Moodle won't work properly.)

        Now Moodle will start setting up your database and creating tables to store data. 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 @@ -285,31 +284,30 @@ php_value post_max_size 2M '0', timemodified int(10) unsigned NOT NULL default '0', PRIMARY KEY (id)) TYPE=MyISAM

        SUCCESS

        -
        -

        ...and so on, followed by: Main databases set up +

        ...and so on, followed by: Main databases set up successfully.

        -
        -

        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 sometimes have safe mode - turned on). You can check PHP variables by creating a little file containing <?php phpinfo() ?> and looking at it through a browser. Check all these and - try this page again.

        +

        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 sometimes have safe mode + turned on). You can check PHP variables by creating a little file containing + <? phpinfo() ?> and looking at it through a browser. Check all these and + try this page again.

        +

        Scroll down the very bottom of the page and press the "Continue" + link.

        +

        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.

        Scroll down the very bottom of the page and press the "Continue" link.

        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. The defaults are designed to be useful and secure for most sites. Scroll down to + come back and edit these later on using the admin interface. Scroll down to the bottom and click "Save changes".

        -
        -

        If (and only if) you find yourself getting stuck on this page, unable to - continue, then your server probably has what I call the "buggy referrer" problem. - This is easy to fix: just turn off the "secureforms" setting, then - try to continue again.

        -
        -

        Next you will see more pages that print lots of status messages as they set up all the tables required by the various Moodle module. As before, they should all be green.

        -

        Scroll down the very bottom of the page and press the "Continue" link.

        +

        If (and only if) you find yourself getting stuck on this page, unable to + continue, then your server probably has what I call the "buggy referrer" problem. + This is easy to fix: just turn off the "secureforms" setting, then + try to continue again.

        The next page 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 come back and change these later) and then press @@ -331,12 +329,12 @@ php_value post_max_size 2M -

        (If for any reason your install is interrupted, or there is a system error - of some kind that prevents you from logging in using the admin account, you - can usually log in using the default username of "admin", - with password "admin".)

        -

        Once successful, you will be returned to the home page of your new site! Note the +

        (If for any reason your install is interrupted, or there is a system error + of some kind that prevents you from logging in using the admin account, you + can usually log in using the default username of "admin", + with password "admin".)

        +

        Once successful, you will be returned to home page of your site. Note the administration links that appear down the left hand side of the page (these items also appear on a separate Admin page) - these items are only visible to you because you are logged in as the admin user. All your further administration @@ -347,10 +345,9 @@ php_value post_max_size 2M

      • administering teacher accounts
      • changing site-wide settings like themes etc
      • -

        But you are not done installing yet! There is one very important thing still to do (see the next section on cron).

         

        -

        6. Set up cron -- IMPORTANT!

        +

        9. Set up cron

        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 @@ -359,10 +356,10 @@ php_value post_max_size 2M 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 or ten minutes). This provides a "heartbeat" so that the script can perform functions at periods - defined by each module. This kind of regular mechanism is known as a cron service.

        + defined by each module.

        Note that the machine performing the cron does not need to be the same machine that is running Moodle. For example, if you have a limited web - hosting service that does not have a cron service, then you can might choose to run + hosting service that does not have cron, then you can might choose to run cron on another server or on your home computer. All that matters is that the cron.php file is called regularly.

        The load of this script is not very high, so 5 minutes is usually reasonable, @@ -374,61 +371,55 @@ php_value post_max_size 2M

        http://example.com/moodle/admin/cron.php

        Now, you need to set up some of way of running the script automatically and - regularly.

        -

        On Windows systems

        + regularly.

        +

        Running the script from a command line

        +

        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':

        -

        The simplest way is to use this little package moodle-cron-for-windows.zip which makes this whole thing very easy by installing a small Windows service. Run it and forget about it!

        +
        wget -q -O /dev/null http://example.com/moodle/admin/cron.php
        -

        On web hosting services

        +

        Note in this example that the output is thrown away (to /dev/null).

        +

        The same thing using lynx:

        -

        Your web-based control panel may have a web page that allows you to set up this cron process. For example, on Cpanel system, look for a button called "Cron jobs". In there you can put the same sort of Unix commands as listed below.

        +
        lynx -dump http://example.com/moodle/admin/cron.php > /dev/null
        -

        Using the command line on Unix

        +

        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.

        -

        There are different command line programs you can use to call the page from the command line. Not all of them may be available on a given server.

        -

        For example, you can use a Unix utility like 'wget':

        -
        -
        wget -q -O /dev/null http://example.com/moodle/admin/cron.php
        -
        -

        Note in this example that the output is thrown away (to /dev/null).

        -

        The same thing using lynx:

        -
        -
        lynx -dump http://example.com/moodle/admin/cron.php > /dev/null
        -
        -

        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.

        -
        -
        /opt/bin/php /web/moodle/admin/cron.php
        +    
        /opt/bin/php /web/moodle/admin/cron.php
         
        -    
        -
        + +(Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php + +
        -

        Using the crontab program on Unix

        +

        Automatically running the script every 5 minutes

        +

        On Unix systems: Use cron. Edit your cron settings from the commandline + using "crontab -e" and add a line like:

        -

        All that Cpanel does is provide a web interface to a Unix utility known as crontab. If you have a command line, you can set up crontab yourself using the command:

        -
        -
        crontab -e
        -
        -

        and then adding one of the above commands like:

        -
        -
        */5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php
        -
        -

        Usually, the "crontab" command will put you into the 'vi' editor. You enter - "insert mode" by pressing "i", then type in the line as above, then exit insert mode by - pressing ESC. You save and exit by typing ":wq", or quit without saving using ":q!" (without the quotes).

        +
        */5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php
        -

         

        +

        Usually, the "crontab" command will put you into the 'vi' editor. You enter + "insert mode" by pressing "i", then type in the line as above, then exit insert mode by + pressing ESC. You save and exit by typing ":wq", or quit without saving using ":q!" (without the quotes).

        +

        On Windows systems: The simplest way is to use this little package moodle-cron-for-windows.zip + which makes this whole thing very easy. You can also explore using the built-in + Windows feature for "Scheduled Tasks".

        +

        On web hosts: Your web-based control panel may have a web page that allows + you to set up this cron process. Ask your administrator for details on how + it works.

        +

        -

        7. Create a new course

        +

        10. Create a new course

        -

        Now that Moodle is running properly, you can try creating a new course to play with.

        +

        Now that Moodle is running properly, you can create a course.

        Select "Create a new course" from the Admin page (or the admin links on the home page).

        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. Note that the yellow help icons are everywhere to provide contextual help on any aspect.

        + be changed later by the teacher.

        Press "Save changes", 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 @@ -438,11 +429,8 @@ php_value post_max_size 2M link on the home page.

        See the "Teacher Manual" for more details on course-building.

        -

         

        -

        Happy exploring and happy Moodling!

        -

        If you like Moodle, please consider donating to help us cover our costs!

         

        -

        Moodle Documentation

        -

        Version: $Id$

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/installamp.html b/lang/en/docs/installamp.html index ad769e2a9c4..76d87174fbb 100755 --- a/lang/en/docs/installamp.html +++ b/lang/en/docs/installamp.html @@ -1,13 +1,10 @@ - - Moodle Docs: Installing PHP and MySQL - - + + - +

        Installing Apache, MySQL and PHP

        Moodle is written in a scripting language called PHP, and stores most of its @@ -110,18 +107,18 @@ it config.php

      • Edit config.php using a text editor (Notepad will do, just be careful that it doesn't add unwanted spaces at the end).
      • -
      • Put in all your new database info:
        - $CFG->dbtype = 'mysql';
        - $CFG->dbhost = 'localhost';
        - $CFG->dbname = 'moodle';
        - $CFG->dbuser = 'root';
        - $CFG->dbpass = '';
        - $CFG->dbpersist = true;
        +
      • Put in all your new database info:
        + $CFG->dbtype = 'mysql';
        + $CFG->dbhost = 'localhost';
        + $CFG->dbname = 'moodle';
        + $CFG->dbuser = 'root';
        + $CFG->dbpass = '';
        + $CFG->dbpersist = true;
        $CFG->prefix = 'mdl_';
      • -
      • And put in all your file paths:
        +
      • And put in all your file paths:
        $CFG->wwwroot = 'http://localhost/moodle'; // Use an external address - if you know it.
        - $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
        + if you know it.
        + $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
        $CFG->dataroot = 'C:\moodledata';
      • Save config.php - you can ignore the other settings if there are any.
      • You're nearly there now! The rest of the setup is all web-based. Visit @@ -151,8 +148,8 @@

         

      • -

        Moodle Documentation

        -

        Version: $Id$

        +

        Moodle Documentation

        +

        Version: $Id$

        \ No newline at end of file diff --git a/lang/en/docs/intro.html b/lang/en/docs/intro.html index 29bb73d065f..11308951de3 100644 --- a/lang/en/docs/intro.html +++ b/lang/en/docs/intro.html @@ -1,15 +1,14 @@ - - + + Moodle Docs: Introduction - + - + - +

        Introduction

        @@ -22,7 +21,7 @@ provided that you agree to: provide the source to others; not modify or remove the original license and copyrights, and apply this same license to any derivative work. Read the license for full - details and please contact the copyright + details and please contact the copyright holder directly if you have any questions.

        Moodle will run on any computer that can run @@ -36,9 +35,9 @@ an online course. Anyone who uses Moodle is a Moodler.

        Come moodle with us!

        -


        +


        -

        Moodle Documentation

        -

        Version: $Id$

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/licence.html b/lang/en/docs/licence.html index db9becc65ae..bcb1d82c665 100644 --- a/lang/en/docs/licence.html +++ b/lang/en/docs/licence.html @@ -1,40 +1,39 @@ - - + + Moodle Docs: Copyright License - + - + - +

        Copyright License for Moodle

        -

        The name Moodle™ is a registered trademark of The Moodle Trust.
        - You have permission to use this name for any activity related to the
        +

        The name Moodle™ is a registered trademark of The Moodle Trust.
        + You have permission to use this name for any activity related to the
        Moodle software described below.

        Moodle software is Copyright © 1999-2004, Martin Dougiamas.

        -

        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
        +

        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 (attached below).
        +

        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 (attached below).

        -
        -
        +
        +
        -
        		    GNU GENERAL PUBLIC LICENSE
        Version 2, June 1991

        Copyright (C) 1989, 1991 Free Software Foundation, Inc.
        59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
        Everyone is permitted to copy and distribute verbatim copies
        of this license document, but changing it is not allowed.

        Preamble

        The licenses for most software are designed to take away your
        freedom to share and change it. By contrast, the GNU General Public
        License is intended to guarantee your freedom to share and change free
        software--to make sure the software is free for all its users. This
        General Public License applies to most of the Free Software
        Foundation's software and to any other program whose authors commit to
        using it. (Some other Free Software Foundation software is covered by
        the GNU Library General Public License instead.) You can apply it to
        your programs, too.

        When we speak of free software, we are referring to freedom, not
        price. Our General Public Licenses are designed to make sure that you
        have the freedom to distribute copies of free software (and charge for
        this service if you wish), that you receive source code or can get it
        if you want it, that you can change the software or use pieces of it
        in new free programs; and that you know you can do these things.

        To protect your rights, we need to make restrictions that forbid
        anyone to deny you these rights or to ask you to surrender the rights.
        These restrictions translate to certain responsibilities for you if you
        distribute copies of the software, or if you modify it.

        For example, if you distribute copies of such a program, whether
        gratis or for a fee, you must give the recipients all the rights that
        you have. You must make sure that they, too, receive or can get the
        source code. And you must show them these terms so they know their
        rights.

        We protect your rights with two steps: (1) copyright the software, and
        (2) offer you this license which gives you legal permission to copy,
        distribute and/or modify the software.

        Also, for each author's protection and ours, we want to make certain
        that everyone understands that there is no warranty for this free
        software. If the software is modified by someone else and passed on, we
        want its recipients to know that what they have is not the original, so
        that any problems introduced by others will not reflect on the original
        authors' reputations.

        Finally, any free program is threatened constantly by software
        patents. We wish to avoid the danger that redistributors of a free
        program will individually obtain patent licenses, in effect making the
        program proprietary. To prevent this, we have made it clear that any
        patent must be licensed for everyone's free use or not licensed at all.

        The precise terms and conditions for copying, distribution and
        modification follow.

        GNU GENERAL PUBLIC LICENSE
        TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

        0. This License applies to any program or other work which contains
        a notice placed by the copyright holder saying it may be distributed
        under the terms of this General Public License. The "Program", below,
        refers to any such program or work, and a "work based on the Program"
        means either the Program or any derivative work under copyright law:
        that is to say, a work containing the Program or a portion of it,
        either verbatim or with modifications and/or translated into another
        language. (Hereinafter, translation is included without limitation in
        the term "modification".) Each licensee is addressed as "you".

        Activities other than copying, distribution and modification are not
        covered by this License; they are outside its scope. The act of
        running the Program is not restricted, and the output from the Program
        is covered only if its contents constitute a work based on the
        Program (independent of having been made by running the Program).
        Whether that is true depends on what the Program does.

        1. You may copy and distribute verbatim copies of the Program's
        source code as you receive it, in any medium, provided that you
        conspicuously and appropriately publish on each copy an appropriate
        copyright notice and disclaimer of warranty; keep intact all the
        notices that refer to this License and to the absence of any warranty;
        and give any other recipients of the Program a copy of this License
        along with the Program.

        You may charge a fee for the physical act of transferring a copy, and
        you may at your option offer warranty protection in exchange for a fee.

        2. You may modify your copy or copies of the Program or any portion
        of it, thus forming a work based on the Program, and copy and
        distribute such modifications or work under the terms of Section 1
        above, provided that you also meet all of these conditions:

        a) You must cause the modified files to carry prominent notices
        stating that you changed the files and the date of any change.

        b) You must cause any work that you distribute or publish, that in
        whole or in part contains or is derived from the Program or any
        part thereof, to be licensed as a whole at no charge to all third
        parties under the terms of this License.

        c) If the modified program normally reads commands interactively
        when run, you must cause it, when started running for such
        interactive use in the most ordinary way, to print or display an
        announcement including an appropriate copyright notice and a
        notice that there is no warranty (or else, saying that you provide
        a warranty) and that users may redistribute the program under
        these conditions, and telling the user how to view a copy of this
        License. (Exception: if the Program itself is interactive but
        does not normally print such an announcement, your work based on
        the Program is not required to print an announcement.)

        These requirements apply to the modified work as a whole. If
        identifiable sections of that work are not derived from the Program,
        and can be reasonably considered independent and separate works in
        themselves, then this License, and its terms, do not apply to those
        sections when you distribute them as separate works. But when you
        distribute the same sections as part of a whole which is a work based
        on the Program, the distribution of the whole must be on the terms of
        this License, whose permissions for other licensees extend to the
        entire whole, and thus to each and every part regardless of who wrote it.

        Thus, it is not the intent of this section to claim rights or contest
        your rights to work written entirely by you; rather, the intent is to
        exercise the right to control the distribution of derivative or
        collective works based on the Program.

        In addition, mere aggregation of another work not based on the Program
        with the Program (or with a work based on the Program) on a volume of
        a storage or distribution medium does not bring the other work under
        the scope of this License.

        3. You may copy and distribute the Program (or a work based on it,
        under Section 2) in object code or executable form under the terms of
        Sections 1 and 2 above provided that you also do one of the following:

        a) Accompany it with the complete corresponding machine-readable
        source code, which must be distributed under the terms of Sections
        1 and 2 above on a medium customarily used for software interchange; or,

        b) Accompany it with a written offer, valid for at least three
        years, to give any third party, for a charge no more than your
        cost of physically performing source distribution, a complete
        machine-readable copy of the corresponding source code, to be
        distributed under the terms of Sections 1 and 2 above on a medium
        customarily used for software interchange; or,

        c) Accompany it with the information you received as to the offer
        to distribute corresponding source code. (This alternative is
        allowed only for noncommercial distribution and only if you
        received the program in object code or executable form with such
        an offer, in accord with Subsection b above.)

        The source code for a work means the preferred form of the work for
        making modifications to it. For an executable work, complete source
        code means all the source code for all modules it contains, plus any
        associated interface definition files, plus the scripts used to
        control compilation and installation of the executable. However, as a
        special exception, the source code distributed need not include
        anything that is normally distributed (in either source or binary
        form) with the major components (compiler, kernel, and so on) of the
        operating system on which the executable runs, unless that component
        itself accompanies the executable.

        If distribution of executable or object code is made by offering
        access to copy from a designated place, then offering equivalent
        access to copy the source code from the same place counts as
        distribution of the source code, even though third parties are not
        compelled to copy the source along with the object code.

        4. You may not copy, modify, sublicense, or distribute the Program
        except as expressly provided under this License. Any attempt
        otherwise to copy, modify, sublicense or distribute the Program is
        void, and will automatically terminate your rights under this License.
        However, parties who have received copies, or rights, from you under
        this License will not have their licenses terminated so long as such
        parties remain in full compliance.

        5. You are not required to accept this License, since you have not
        signed it. However, nothing else grants you permission to modify or
        distribute the Program or its derivative works. These actions are
        prohibited by law if you do not accept this License. Therefore, by
        modifying or distributing the Program (or any work based on the
        Program), you indicate your acceptance of this License to do so, and
        all its terms and conditions for copying, distributing or modifying
        the Program or works based on it.

        6. Each time you redistribute the Program (or any work based on the
        Program), the recipient automatically receives a license from the
        original licensor to copy, distribute or modify the Program subject to
        these terms and conditions. You may not impose any further
        restrictions on the recipients' exercise of the rights granted herein.
        You are not responsible for enforcing compliance by third parties to
        this License.

        7. If, as a consequence of a court judgment or allegation of patent
        infringement or for any other reason (not limited to patent issues),
        conditions are imposed on you (whether by court order, agreement or
        otherwise) that contradict the conditions of this License, they do not
        excuse you from the conditions of this License. If you cannot
        distribute so as to satisfy simultaneously your obligations under this
        License and any other pertinent obligations, then as a consequence you
        may not distribute the Program at all. For example, if a patent
        license would not permit royalty-free redistribution of the Program by
        all those who receive copies directly or indirectly through you, then
        the only way you could satisfy both it and this License would be to
        refrain entirely from distribution of the Program.

        If any portion of this section is held invalid or unenforceable under
        any particular circumstance, the balance of the section is intended to
        apply and the section as a whole is intended to apply in other
        circumstances.

        It is not the purpose of this section to induce you to infringe any
        patents or other property right claims or to contest validity of any
        such claims; this section has the sole purpose of protecting the
        integrity of the free software distribution system, which is
        implemented by public license practices. Many people have made
        generous contributions to the wide range of software distributed
        through that system in reliance on consistent application of that
        system; it is up to the author/donor to decide if he or she is willing
        to distribute software through any other system and a licensee cannot
        impose that choice.

        This section is intended to make thoroughly clear what is believed to
        be a consequence of the rest of this License.

        8. If the distribution and/or use of the Program is restricted in
        certain countries either by patents or by copyrighted interfaces, the
        original copyright holder who places the Program under this License
        may add an explicit geographical distribution limitation excluding
        those countries, so that distribution is permitted only in or among
        countries not thus excluded. In such case, this License incorporates
        the limitation as if written in the body of this License.

        9. The Free Software Foundation may publish revised and/or new versions
        of the General Public License from time to time. Such new versions will
        be similar in spirit to the present version, but may differ in detail to
        address new problems or concerns.

        Each version is given a distinguishing version number. If the Program
        specifies a version number of this License which applies to it and "any
        later version", you have the option of following the terms and conditions
        either of that version or of any later version published by the Free
        Software Foundation. If the Program does not specify a version number of
        this License, you may choose any version ever published by the Free Software
        Foundation.

        10. If you wish to incorporate parts of the Program into other free
        programs whose distribution conditions are different, write to the author
        to ask for permission. For software which is copyrighted by the Free
        Software Foundation, write to the Free Software Foundation; we sometimes
        make exceptions for this. Our decision will be guided by the two goals
        of preserving the free status of all derivatives of our free software and
        of promoting the sharing and reuse of software generally.

        NO WARRANTY

        11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
        FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
        OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
        PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
        OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
        MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
        TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
        PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
        REPAIR OR CORRECTION.

        12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
        WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
        REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
        INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
        OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
        TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
        YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
        PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
        POSSIBILITY OF SUCH DAMAGES.

        END OF TERMS AND CONDITIONS
        +
        		    GNU GENERAL PUBLIC LICENSE
        Version 2, June 1991

        Copyright (C) 1989, 1991 Free Software Foundation, Inc.
        59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
        Everyone is permitted to copy and distribute verbatim copies
        of this license document, but changing it is not allowed.

        Preamble

        The licenses for most software are designed to take away your
        freedom to share and change it. By contrast, the GNU General Public
        License is intended to guarantee your freedom to share and change free
        software--to make sure the software is free for all its users. This
        General Public License applies to most of the Free Software
        Foundation's software and to any other program whose authors commit to
        using it. (Some other Free Software Foundation software is covered by
        the GNU Library General Public License instead.) You can apply it to
        your programs, too.

        When we speak of free software, we are referring to freedom, not
        price. Our General Public Licenses are designed to make sure that you
        have the freedom to distribute copies of free software (and charge for
        this service if you wish), that you receive source code or can get it
        if you want it, that you can change the software or use pieces of it
        in new free programs; and that you know you can do these things.

        To protect your rights, we need to make restrictions that forbid
        anyone to deny you these rights or to ask you to surrender the rights.
        These restrictions translate to certain responsibilities for you if you
        distribute copies of the software, or if you modify it.

        For example, if you distribute copies of such a program, whether
        gratis or for a fee, you must give the recipients all the rights that
        you have. You must make sure that they, too, receive or can get the
        source code. And you must show them these terms so they know their
        rights.

        We protect your rights with two steps: (1) copyright the software, and
        (2) offer you this license which gives you legal permission to copy,
        distribute and/or modify the software.

        Also, for each author's protection and ours, we want to make certain
        that everyone understands that there is no warranty for this free
        software. If the software is modified by someone else and passed on, we
        want its recipients to know that what they have is not the original, so
        that any problems introduced by others will not reflect on the original
        authors' reputations.

        Finally, any free program is threatened constantly by software
        patents. We wish to avoid the danger that redistributors of a free
        program will individually obtain patent licenses, in effect making the
        program proprietary. To prevent this, we have made it clear that any
        patent must be licensed for everyone's free use or not licensed at all.

        The precise terms and conditions for copying, distribution and
        modification follow.

        GNU GENERAL PUBLIC LICENSE
        TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

        0. This License applies to any program or other work which contains
        a notice placed by the copyright holder saying it may be distributed
        under the terms of this General Public License. The "Program", below,
        refers to any such program or work, and a "work based on the Program"
        means either the Program or any derivative work under copyright law:
        that is to say, a work containing the Program or a portion of it,
        either verbatim or with modifications and/or translated into another
        language. (Hereinafter, translation is included without limitation in
        the term "modification".) Each licensee is addressed as "you".

        Activities other than copying, distribution and modification are not
        covered by this License; they are outside its scope. The act of
        running the Program is not restricted, and the output from the Program
        is covered only if its contents constitute a work based on the
        Program (independent of having been made by running the Program).
        Whether that is true depends on what the Program does.

        1. You may copy and distribute verbatim copies of the Program's
        source code as you receive it, in any medium, provided that you
        conspicuously and appropriately publish on each copy an appropriate
        copyright notice and disclaimer of warranty; keep intact all the
        notices that refer to this License and to the absence of any warranty;
        and give any other recipients of the Program a copy of this License
        along with the Program.

        You may charge a fee for the physical act of transferring a copy, and
        you may at your option offer warranty protection in exchange for a fee.

        2. You may modify your copy or copies of the Program or any portion
        of it, thus forming a work based on the Program, and copy and
        distribute such modifications or work under the terms of Section 1
        above, provided that you also meet all of these conditions:

        a) You must cause the modified files to carry prominent notices
        stating that you changed the files and the date of any change.

        b) You must cause any work that you distribute or publish, that in
        whole or in part contains or is derived from the Program or any
        part thereof, to be licensed as a whole at no charge to all third
        parties under the terms of this License.

        c) If the modified program normally reads commands interactively
        when run, you must cause it, when started running for such
        interactive use in the most ordinary way, to print or display an
        announcement including an appropriate copyright notice and a
        notice that there is no warranty (or else, saying that you provide
        a warranty) and that users may redistribute the program under
        these conditions, and telling the user how to view a copy of this
        License. (Exception: if the Program itself is interactive but
        does not normally print such an announcement, your work based on
        the Program is not required to print an announcement.)

        These requirements apply to the modified work as a whole. If
        identifiable sections of that work are not derived from the Program,
        and can be reasonably considered independent and separate works in
        themselves, then this License, and its terms, do not apply to those
        sections when you distribute them as separate works. But when you
        distribute the same sections as part of a whole which is a work based
        on the Program, the distribution of the whole must be on the terms of
        this License, whose permissions for other licensees extend to the
        entire whole, and thus to each and every part regardless of who wrote it.

        Thus, it is not the intent of this section to claim rights or contest
        your rights to work written entirely by you; rather, the intent is to
        exercise the right to control the distribution of derivative or
        collective works based on the Program.

        In addition, mere aggregation of another work not based on the Program
        with the Program (or with a work based on the Program) on a volume of
        a storage or distribution medium does not bring the other work under
        the scope of this License.

        3. You may copy and distribute the Program (or a work based on it,
        under Section 2) in object code or executable form under the terms of
        Sections 1 and 2 above provided that you also do one of the following:

        a) Accompany it with the complete corresponding machine-readable
        source code, which must be distributed under the terms of Sections
        1 and 2 above on a medium customarily used for software interchange; or,

        b) Accompany it with a written offer, valid for at least three
        years, to give any third party, for a charge no more than your
        cost of physically performing source distribution, a complete
        machine-readable copy of the corresponding source code, to be
        distributed under the terms of Sections 1 and 2 above on a medium
        customarily used for software interchange; or,

        c) Accompany it with the information you received as to the offer
        to distribute corresponding source code. (This alternative is
        allowed only for noncommercial distribution and only if you
        received the program in object code or executable form with such
        an offer, in accord with Subsection b above.)

        The source code for a work means the preferred form of the work for
        making modifications to it. For an executable work, complete source
        code means all the source code for all modules it contains, plus any
        associated interface definition files, plus the scripts used to
        control compilation and installation of the executable. However, as a
        special exception, the source code distributed need not include
        anything that is normally distributed (in either source or binary
        form) with the major components (compiler, kernel, and so on) of the
        operating system on which the executable runs, unless that component
        itself accompanies the executable.

        If distribution of executable or object code is made by offering
        access to copy from a designated place, then offering equivalent
        access to copy the source code from the same place counts as
        distribution of the source code, even though third parties are not
        compelled to copy the source along with the object code.

        4. You may not copy, modify, sublicense, or distribute the Program
        except as expressly provided under this License. Any attempt
        otherwise to copy, modify, sublicense or distribute the Program is
        void, and will automatically terminate your rights under this License.
        However, parties who have received copies, or rights, from you under
        this License will not have their licenses terminated so long as such
        parties remain in full compliance.

        5. You are not required to accept this License, since you have not
        signed it. However, nothing else grants you permission to modify or
        distribute the Program or its derivative works. These actions are
        prohibited by law if you do not accept this License. Therefore, by
        modifying or distributing the Program (or any work based on the
        Program), you indicate your acceptance of this License to do so, and
        all its terms and conditions for copying, distributing or modifying
        the Program or works based on it.

        6. Each time you redistribute the Program (or any work based on the
        Program), the recipient automatically receives a license from the
        original licensor to copy, distribute or modify the Program subject to
        these terms and conditions. You may not impose any further
        restrictions on the recipients' exercise of the rights granted herein.
        You are not responsible for enforcing compliance by third parties to
        this License.

        7. If, as a consequence of a court judgment or allegation of patent
        infringement or for any other reason (not limited to patent issues),
        conditions are imposed on you (whether by court order, agreement or
        otherwise) that contradict the conditions of this License, they do not
        excuse you from the conditions of this License. If you cannot
        distribute so as to satisfy simultaneously your obligations under this
        License and any other pertinent obligations, then as a consequence you
        may not distribute the Program at all. For example, if a patent
        license would not permit royalty-free redistribution of the Program by
        all those who receive copies directly or indirectly through you, then
        the only way you could satisfy both it and this License would be to
        refrain entirely from distribution of the Program.

        If any portion of this section is held invalid or unenforceable under
        any particular circumstance, the balance of the section is intended to
        apply and the section as a whole is intended to apply in other
        circumstances.

        It is not the purpose of this section to induce you to infringe any
        patents or other property right claims or to contest validity of any
        such claims; this section has the sole purpose of protecting the
        integrity of the free software distribution system, which is
        implemented by public license practices. Many people have made
        generous contributions to the wide range of software distributed
        through that system in reliance on consistent application of that
        system; it is up to the author/donor to decide if he or she is willing
        to distribute software through any other system and a licensee cannot
        impose that choice.

        This section is intended to make thoroughly clear what is believed to
        be a consequence of the rest of this License.

        8. If the distribution and/or use of the Program is restricted in
        certain countries either by patents or by copyrighted interfaces, the
        original copyright holder who places the Program under this License
        may add an explicit geographical distribution limitation excluding
        those countries, so that distribution is permitted only in or among
        countries not thus excluded. In such case, this License incorporates
        the limitation as if written in the body of this License.

        9. The Free Software Foundation may publish revised and/or new versions
        of the General Public License from time to time. Such new versions will
        be similar in spirit to the present version, but may differ in detail to
        address new problems or concerns.

        Each version is given a distinguishing version number. If the Program
        specifies a version number of this License which applies to it and "any
        later version", you have the option of following the terms and conditions
        either of that version or of any later version published by the Free
        Software Foundation. If the Program does not specify a version number of
        this License, you may choose any version ever published by the Free Software
        Foundation.

        10. If you wish to incorporate parts of the Program into other free
        programs whose distribution conditions are different, write to the author
        to ask for permission. For software which is copyrighted by the Free
        Software Foundation, write to the Free Software Foundation; we sometimes
        make exceptions for this. Our decision will be guided by the two goals
        of preserving the free status of all derivatives of our free software and
        of promoting the sharing and reuse of software generally.

        NO WARRANTY

        11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
        FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
        OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
        PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
        OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
        MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
        TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
        PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
        REPAIR OR CORRECTION.

        12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
        WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
        REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
        INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
        OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
        TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
        YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
        PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
        POSSIBILITY OF SUCH DAMAGES.

        END OF TERMS AND CONDITIONS
        -

        Moodle Documentation

        -

        Version: $Id$

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/other.html b/lang/en/docs/other.html index fb0bcebbf7c..5999d14739f 100755 --- a/lang/en/docs/other.html +++ b/lang/en/docs/other.html @@ -1,13 +1,11 @@ - - + Moodle Docs: Frequently Asked Questions (FAQ) - - + + - +

        Other documentation

        Here are some links to other sources of Moodle documentation:

        Index of all Moodle @@ -15,7 +13,7 @@

        User-contributed documentation - this page lists documentation contributed by Moodle users

         

        -
        +

        Moodle Documentation

        Version: $Id$

        diff --git a/lang/en/docs/philosophy.html b/lang/en/docs/philosophy.html index 9ebebb4f487..a0a8af5ac15 100755 --- a/lang/en/docs/philosophy.html +++ b/lang/en/docs/philosophy.html @@ -1,40 +1,39 @@ - - + + Moodle Docs: Philosophy - + - + - +

        Philosophy

        The design and development of Moodle is guided by a particular philosophy of learning, a way of thinking that you may see referred to in shorthand as a "social constructionist pedagogy". (Some of you scientists may already be thinking "soft education mumbo jumbo" and reaching for your mouse, but please read on - this is useful for every subject area!)

        This page tries to explain in simple terms what that phrase means by unpacking four main concepts behind it. Note that each of these is summarising one view of an immense amount of diverse research so these definitions may seem thin if you have read about these before.

        -

        If these concepts are completely new to you then it is likely that these ideas will be hard to understand at first - all I can recommend is that you read it carefully, while thinking about your own experiences of trying to learn something.
        +

        If these concepts are completely new to you then it is likely that these ideas will be hard to understand at first - all I can recommend is that you read it carefully, while thinking about your own experiences of trying to learn something.

        1. Constructivism

        This point of view maintains that people actively construct new knowledge as they interact with their environment.

        Everything you read, see, hear, feel, and touch is tested against your prior knowledge and if it is viable within your mental world, may form new knowledge you carry with you. Knowledge is strengthened if you can use it successfully in your wider environment. You are not just a memory bank passively absorbing information, nor can knowledge be "transmitted" to you just by reading something or listening to someone.

        -

        This is not to say you can't learn anything from reading a web page or watching a lecture, obviously you can, it's just pointing out that there is more interpretation going on than a transfer of information from one brain to another.
        +

        This is not to say you can't learn anything from reading a web page or watching a lecture, obviously you can, it's just pointing out that there is more interpretation going on than a transfer of information from one brain to another.

        2. Constructionism

        Constructionism asserts that learning is particularly effective when constructing something for others to experience. This can be anything from a spoken sentence or an internet posting, to more complex artifacts like a painting, a house or a software package.

        -

        For example, you might read this page several times and still forget it by tomorrow - but if you were to try and explain these ideas to someone else in your own words, or produce a slideshow that explained these concepts, then I can guarantee you'd have a better understanding that is more integrated into your own ideas. This is why people take notes during lectures, even if they never read the notes again.
        +

        For example, you might read this page several times and still forget it by tomorrow - but if you were to try and explain these ideas to someone else in your own words, or produce a slideshow that explained these concepts, then I can guarantee you'd have a better understanding that is more integrated into your own ideas. This is why people take notes during lectures, even if they never read the notes again.

        3. Social Constructivism

        This extends the above ideas into a social group constructing things for one another, collaboratively creating a small culture of shared artifacts with shared meanings. When one is immersed within a culture like this, one is learning all the time about how to be a part of that culture, on many levels.

        -

        A very simple example is an object like a cup. The object can be used for many things, but its shape does suggest some "knowledge" about carrying liquids. A more complex example is an online course - not only do the "shapes" of the software tools indicate certain things about the way online courses should work, but the activities and texts produced within the group as a whole will help shape how each person behaves within that group.
        +

        A very simple example is an object like a cup. The object can be used for many things, but its shape does suggest some "knowledge" about carrying liquids. A more complex example is an online course - not only do the "shapes" of the software tools indicate certain things about the way online courses should work, but the activities and texts produced within the group as a whole will help shape how each person behaves within that group.

        4. Connected and Separate

        @@ -42,12 +41,12 @@

        This idea looks deeper into the motivations of individuals within a discussion. Separate behaviour is when someone tries to remain 'objective' and 'factual', and tends to defend their own ideas using logic to find holes in their opponent's ideas. Connected behaviour is a more empathic approach that accepts subjectivity, trying to listen and ask questions in an effort to understand the other point of view. Constructed behaviour is when a person is sensitive to both of these approaches and is able to choose either of them as appropriate to the current situation.

        In general, a healthy amount of connected behaviour within a learning community is a very powerful stimulant for learning, not only bringing people closer together but promoting deeper reflection and re-examination of their existing beliefs.

        -
        +

        Once you are thinking about all these issues, it helps you to focus on the experiences that would be best for learning from the learner's point of view, rather than just publishing and assessing the information you think they need to know. It can also help you realise how each participant in a course can be a teacher as well as a learner. Your job as a 'teacher' can change from being 'the source of knowledge' to being an influencer and role model of class culture, connecting with students in a personal way that addresses their own learning needs, and moderating discussions and activities in a way that collectively leads students towards the learning goals of the class.

        Obviously Moodle doesn't force this style of behaviour, but this is what it is best at supporting. In future, as the technical infrastructure of Moodle stabilises, further improvements in pedagogical support will be a major direction for Moodle development.

        -
        -

        Moodle Documentation

        -

        Version: $Id$

        +
        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/release.html b/lang/en/docs/release.html index c9863f50430..41a6fb7d14d 100644 --- a/lang/en/docs/release.html +++ b/lang/en/docs/release.html @@ -1,231 +1,34 @@ - - Moodle Docs: Current Release notes - - + + - + - +

        Latest Release notes

        -

        Moodle 1.4.3 (17 December, 2004)

        +

        Moodle 1.4 BETA TEST (23rd August, 2004)

        -

        (Because this release contains important security fixes, we highly advise that sites using any - previous version of Moodle upgrade to this version as soon as possible.)

        +
          + +

          + This is a test release to help you help us. It's pretty stable, but probably contains a few + bugs here and there especially in more recently-added code. The final release will be August 31st - please + report bugs you find as soon as possible + so we can make the final release of Moodle 1.4 strong and reliable. +

          -
          Some important security fixes
          -
          -
            -
          • Better checking/cleaning of cookie data
          • -
          • Preventative measures for session fixation
          • -
          • Better checking/cleaning of parameters for RSS feeds, ip atlas parameters, glossary, forum, theme selection, SCORM module, document viewer
          • -
          • Added protection in viewing of uploaded files
          • -
          • Added protection against directory traversal
          • -
          • Fix for variable $FULLME necessary for cron
          • -
          • Prevention against internal libraries being called directly.
          • -
          • Prevent viewing of glossary if it's a hidden activity
          • -
          • Hidden sections hidden from students in recent activity
          • -
          • Fixed problem with guest user being able to see events in the calendar
          • -
          • Fixed encoding of TEX expressions
          • -
          -
          - -
          A few new things
          -
          -
            -
          • Enforced enrolment uniqueness, this is also a performance fix.
          • -
          • Added transaction support for PostgreSQL
          • -
          • Logging in and logging out are now logged
          • -
          • Wiki and SCORM now both use new zipping code - this fixes reported SCORM issues
          • -
          • New paging system for glossary
          • -
          • User info from LDAP truncated for insertion into moodle to prevent data loss
          • -
          • Updated pclzip to new version
          • -
          • Memory_limit can be overriden by higher config settings from php.ini, commandline, httpd.conf, .htaccess
          • -
          • New translations started: Maori, Kannada, Albanian and Vietnamese
          • -
          • Many additions to other language packs
          • -
          • Teachers can now always try quizzes, even if they're not open yet
          • -
          • Glossary print view is now different for each format.
          • -
          • Glossary search now also searches aliases
          • -
          • Vastly improved multilang filter with more forgiving syntax
          • -
          -
          - -
          Performance improvements
          -
          -
            -
          • Better caching headers mean improved performance on all pages when using back button
          • -
          • Database indexes added in many places to enhance performance in large scale deployments
          • -
          • Performance improvements throughout moodle where courses were being listed.
          • -
          • Various optimizations by removing unnecessary database retrievals and sorting.
          • -
          -
          - -
          Other bug fixes
          -
          -
            -
          • Fixed restoring into a new course generating duplicate course idnumbers
          • -
          • Fixed many small Postgres issues
          • -
          • Fixed unnecessary notices when debug mode on
          • -
          • Fixed some more PHP5 Notices
          • -
          • Fixed support for apostrophes, quotes and backslashes in LDAP user data
          • -
          • Fix for pagination of search course results for Postgres
          • -
          • Fixed bug with whitespace in user search
          • -
          • Fixed chatroom bug where all chat users listed in multiple chatrooms
          • -
          • Fix for installation script bug
          • -
          • Case sensitive usernames in bulk user import fixed
          • -
          • Fixed bug in redirection after rating forum post
          • -
          • Fixed bug in quiz with matching questions
          • -
          • Fixed bug in quiz preview
          • -
          • Fixed bug in language editing
          • -
          • Multiple small fixes in SCORM module
          • -
          • SCORM module shows user pictures properly
          • -
          • Activity names sorted by name in activity filter
          • -
          • Glossary search will search aliases as well
          • -
          • Any RSS errors will result in a valid RSS error file rather than invalid RSS.
          • -
          • Fixed problem with SCORM package validation and PHP5
          • -
          • Fixed problem with backup/restore and empty categories
          • -
          • Better XHTML in wiki
          • -
          • Bug fix in chat reports for first chat session
          • -
          • Fixed a problem with SCORM when deleting a lot of files, or very large files
          • -
          • Fixed some problems with encyclopedia format in glossary
          • -
          • Fixed bug in SCORM integration with zipping code
          • -
          • Fixed bug in dialogue plain text email notifications
          • -
          • Fixed missing sesskey variables in social activity block
          • -
          • Excess sections for a course are now hidden in the navmenu
          • -
          • Added daylight savings time fixes for the calendar
          • -
          • First quiz edit in a new course has a default category assigned
          • -
          • Fixed bug in paypal module when accepting payment amount
          • -
          • Fixed bug in course files with loss of choose mode
          • -
          -
          - - - -
          - - -

           

          - - - -

          Moodle 1.4.2 (5th November, 2004)

          - -

          (Because this release contains important security fixes, we highly advise that sites using any - previous version of Moodle upgrade to this version as soon as possible.)

          - - -
          -
          Some important security fixes
          -
          -
            -
          • Better checking/cleaning of script parameters used in quite a few areas - throughout Moodle (a BIG thanks to Petr Skoda for his recent security audit!)
          • -
          • Quoted some SQL parameters in the glossary module to prevent possible injection
          • -
          -
          - -
          A few small new things
          -
          -
            -
          • New PAM authentication module for direct authentication on Unix/Linux
          • -
          • Course creators can now restore to new or existing courses
          • -
          • Forum posts now include detailed headers to allow correct threading in mail clients
          • -
          -
          - -
          And a bunch of other bug fixes
          -
          -
            -
          • Backup is now more able to cope with errors (eg if backup is interrupted) - and can clean up uncompleted files
          • -
          • Fix for database authentication against a PostgreSQL database
          • -
          • Fixes for some parts of installation to PostgreSQL
          • -
          • Forum subject lines are now only broken up in recent activity display
          • -
          • Database-based enrolments now actually work :-)
          • -
          • SQL fixes for creation of RSS feeds from PostgreSQL
          • -
          • Added rtsp to the list of allowed protocols in cleaned HTML text
          • -
          • User profile and profile editing page can be called without parameters
          • -
          • Upgraded xmlize library to latest version
          • -
          • Upgraded phpmailer library to latest version
          • -
          • Various small code-only cleanups
          • -
          • Admin menu now allows backup/restore of the "site course" (front page)
          • -
          • Fixed a display bug in the forums index which only showed in PHP5
          • -
          • Highlighting function (eg after search) was stripping backslashes
          • -
          • Info from LDAP is now decoded from utf8
          • -
          • Course listings now work better with very large amounts of courses
          • -
          • Two SCORM bugs fixed (a typo and a problem with onbeforeunload)
          • -
          • Some cleanups when printing text, headers and variables in Lesson
          • -
          • Calendar now functions as expected even when you login as someone else
          • -
          • Fixed a few remaining short PHP tags
          • -
          • Better randomness for random questions (fix for bug introduced in 1.4)
          • -
          • When a teacher is removed from a course, they are now also removed from all groups in that course
          • -
          • Fixed strip_pages bug in Wiki
          • -
          • Fixes for charset detection in backups and multilang filter under PHP5
          • -
          -
          - -
          -
          - -

          Moodle 1.4.1 (12th September, 2004)

          - -
          -
          A few little new things
          -
          -
            -
          • New "Email Protection" filter will obfuscate all email addresses within all texts - (to help prevent automated address-harvesting)
          • -
          • Allowed email addresses can now be restricted (see config-dist.php for details)
          • -
          • Extra instructions for translators embedded in translation interface
          • -
          • New help page for Directory Paths
          • -
          -
          -
          And some bug fixes
          -
          -
            -
          • Improved performance when viewing site logs
          • -
          • Improved paging and performance in glossary
          • -
          • Glossary entries are now shown correctly if they belong to multiple categories
          • -
          • Do not redeclare auth_user_login upon failed login
          • -
          • Fixed two missing icons in the cordoroyblue theme
          • -
          • Fixed missing "New event" button on Upcoming Events page
          • -
          • Always addslashes on chat messages from daemon users before inserting into db.
          • -
          • Fixes for handling of fixed enrollment periods when this is set for a course
          • -
          • Site course ID (defined as SITEID) is no longer assumed to be always 1
          • -
          • Default memory limits are increased beyond 16M, to help Moodle continue - working even when there is some unplanned memory problem
          • -
          • Smilies are now rendered as pictures in Markdown format texts
          • -
          • Workshops work under Recent Activity again
          • -
          • file.php can now only be used to access data within courses
          • -
          • Improved behaviour of calendar blocks on home page
          • -
          • Fixed quotes bug with PostgreSQL database specification produced by installer
          • -
          • Fixed sometimes-missing display of correct answers during quiz review
          • -
          • <tt> and <code> are now allowed tags
          • -
          • Section summaries, course summaries and labels are again no longer cleaned of Javascript
          • -
          • Fixed a rare LDAP bug that could cause new accounts not to be created
          • -
          -
          -
          -
          -

          Moodle 1.4 (31st August, 2004)

          - -
          Headlines
            @@ -267,7 +70,6 @@
          • Moodle can override the default character set in Apache, making languages more reliable
          • Multibyte languages now wrap properly
          • Better handling of locales and encodings on very multilingual sites (like moodle.org)
          • -
          • New languages: Slovenian and Hebrew!
          @@ -276,10 +78,10 @@
          • Fixed a number of possible XSS entry points and path disclosures
          • Attributes of tags in HTML are now parsed even more thoroughly for naughty scripts
          • -
          • User profile pages are no longer available by default to strangers
          • +
          • User profile pages are no longer availble by default to strangers
          • All text is now cleaned on output (not just input)
          • Email addresses are not used on outgoing mail if the user requests that
          • -
          • New setting loginhttps will use secure https for the login, then switch back to http
          • +
          • New setting $CFG->loginhttps will use secure https for the login, then switch back to http
          @@ -289,9 +91,16 @@
        • Spiffy new interfaces for adding/removing students, creators and admins
        • Failed logins are now logged, and can be displayed to users upon a successful login
        • Logs now support viewing by group, and by errors
        • -
        • Modules now behave more consistently on the site front page
        • -
        • Front page "students" can be all users on site, or all users in at least one course on the site
        • +
        + + +
        Administration
        +
        +
        • Email-sending can now be enabled/disabled on any user's profile page
        • +
        • Visitors can be automatically logged in as guest
        • +
        • Jump menu now always shows "Jump to" to help distribute clues about what it does
        • +
        • Jump menu now has a much clearer way of grouping activities into sections
        @@ -304,15 +113,6 @@ -
        Navigation
        -
        -
          -
        • Visitors can be automatically logged in as guest
        • -
        • Jump menu now always shows "Jump to" to help distribute clues about what it does
        • -
        • Jump menu now has a much clearer way of grouping activities into sections
        • -
        -
        -
        Blocks
          @@ -341,10 +141,19 @@
          Choice
            -
          • Significantly revamped to make a lot more sense, with more option
          • +
          • Significantly revamped to make a lot more sense, with more options
          +
          Exercise
          +
          +
            +
          • Now supports groups
          • +
          • Many other changes
          • +
          +
          + +
          Forum
            @@ -377,7 +186,8 @@
          • Attempts may now be restricted to specific computers
          • Quizzes can now require a special password
          • New question type for Calculated Questions
          • -
          • Numerical questions now support units
          • Questions can be previewed in the editing pages
          • +
          • Numerical questions now support units
          • +
          • Questions can be previewed in the editing pages
          • Questions can now be exported in several formats
          • More intelligent handling of category listing when editing questions
          • New (and incomplete) XML export format, will eventually be quiz-feature-complete
          • @@ -390,8 +200,6 @@
            • Adding resources is now a one-step process with more control
            • Web page, Web link, Uploaded file and Program resource all combined into one type!
            • -
            • Program resources replaced by Parameters that allow a lot of of interesting interaction with external resources, both remote and uploaded into Moodle.
            • -
            • Collapsible forms with memory to make forms less daunting for beginners without slowing down experienced users
          @@ -399,22 +207,19 @@
          • Many fixes and improvements - works with an even wider variety of packages
          • -
          • Optional extra verification of the manifest file
          - -
          -
          Finally, don't forget to look at some of the many optional and innovative modules under development. -
          -
          -
          -
          If you experience any bugs in this release, please report them moodle.org/bugs so we can fix them in the next release.
          + + + +
        +

        Old release information

        -
        -

        Moodle Documentation

        -

        Version: $Id$

        +

         

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/releaseold.html b/lang/en/docs/releaseold.html index 05fed99a966..d3017cc8c36 100644 --- a/lang/en/docs/releaseold.html +++ b/lang/en/docs/releaseold.html @@ -1,26 +1,23 @@ - - Moodle Docs: Old Release notes - + - + - +

        Old Release notes

        New in Moodle 1.3.4 (11th August, 2004)

        -
        -
        Updates
        +
          +
          +
          Updates
          • Some compatibility was added for handling glossaries and resources from Moodle 1.4.
          • @@ -38,12 +35,14 @@
          • Fixed some documentation links
          -
          +
        +

        New in Moodle 1.3.3 (16th July, 2004)

        -
        +
          +
          Updates
            @@ -61,14 +60,16 @@
          • Some minor issues fixed in the Scorm module
          -
          +
        +

        New in Moodle 1.3.2 (9th July, 2004)

        -
        -
        Updates
        +
          +
          +
          Updates
          • The SCORM module is now included as standard
          • @@ -88,13 +89,16 @@
          • Other small fixes here and there
          -
          +
        + +

        New in Moodle 1.3.1 (4th June, 2004)

        -
        -
        Bug fixes
        +
          +
          +
          Bug fixes
          • Some HTML code affecting stability of HTML editor under IE6 on some pages was fixed
          • @@ -108,11 +112,14 @@
          • Language updates
          -
          +
        + +

        New in Moodle 1.3 (25th May, 2004)

        -
        +
          +
          Major new features
            @@ -159,11 +166,17 @@

             

          Finally, don't forget to look at some of the many optional modules under development, including the SCORM module, the Wiki module, the Hot Potatoes module and many other innovations.
          -
          -
          -
          +
        + + +

         

        +


        + + +

        New in Moodle 1.2.1 (25th March, 2004)

        -
        +
          +
          Various small bug fixes
            @@ -182,12 +195,15 @@
          • Various polishing and improvements in many language packs
          -
          +
        + +

        New in Moodle 1.2 (20th March, 2004)

        -
        +
        Major new features
          @@ -385,11 +401,16 @@
        • Upgraded ADOdb (database layer)
        -
        -
        +
        + +

        New in Moodle 1.1.1 (10 September, 2003):

        -
        -
        General Fixes
        +
          +
          +
           
          +
          General Fixes
          +
          +
          • Translation improvements in many languages
          • @@ -425,14 +446,19 @@
          • Several bugs fixed in Workshop module
          -
          -
          +
        + +

        New in Moodle 1.1 (28 August, 2003):

        -
        -
        Major Changes
        +
          +
          +
           
          +
          Major Changes
          +
          +
          • A completely new backup system for backup and restore @@ -446,7 +472,11 @@
          • Performance improvements in many areas
          +
          +
          General
          +
          +
          • Clean up of the whole admin menu organisation to make it clearer
          • @@ -476,7 +506,12 @@
          • Library (Mark Kimes' add-on) is now supported if it is installed (see Moodle contrib for Library source)
          +
          +
          +
          Courses
          +
          +
          • Teachers can now have their course editing privileges removed
          • @@ -491,7 +526,12 @@
          • Grades can be hidden from students if not needed
          +
          +
          +
          Languages
          +
          +
          • Hungarian and Greek have been added, @@ -505,7 +545,12 @@ Spanish)
          +
          +
          +
          Forum
          +
          +
          • Much improved searching, with multiple keywords, paging etc
          • @@ -518,7 +563,11 @@
          • Email copies in plain text format now print URLs nicely
          +
          +
          Quiz
          +
          +
          • New question type: Embedded Answers (Cloze) - allows text passages @@ -537,7 +586,12 @@ new question types
          +
          +
          +
          Resources
          +
          +
          • Web links can now be in very customisable pop-up windows.
          • @@ -545,7 +599,11 @@ Resources
          +
          +
          Some of the more annoying bugs recently fixed
          +
          +
          • Moving posts now also moves attachments
          • @@ -560,14 +618,19 @@
          • Excel files now work on non-Intel machines
          -
          -
          +
        +
        +
         
        +
        +
         
        + +

        New in Moodle 1.0.9 (29th May, 2003) :

        -
        +
          +
          General
          -
          • Various optimisations and significant performance enhancements
          • Several obscure security fixes
          • Moodle is now well-behaved when enclosed within a frame
          • @@ -581,11 +644,9 @@
          • Various fixes for PostgreSQL 7.3 compatibility
          • Started migration of HTML code towards XHTML Transitional
          • Countless other little fixes all over the place
          • -
          Languages
          -
          • 10 new language packs! Argentinian Spanish, Czech, Portuguese, Slovakian, Romanian, Danish, Russian, Polish, Chinese Traditional and French Canadian.
          • Fixes and upgrades to almost all language packs
          • Language can be specified for the current session (see menu on home page and login page) and can be changed on any page by something to the url, eg: http://moodle.org/?lang=ru
          • @@ -593,19 +654,15 @@
          • Truetype fonts are now part of the language packs
          • ALL dates/times can now be reformatted as part of the language pack
          • A small but annoying bug was fixed with the web-based language editor on Windows servers that caused language files to grow
          • -
          Developers
          -
            Global debug variable gives more feedback about uninitialised variables and the like
          • Various fixes to tidy up and further standardise some of the PHP code
          • Various fixes for robustness (ensuring variables are always initialised)
          • -
          Admin
          -
          • Some changed options and code in config-dist.php (if upgrading, compare with your current config.php or rebuild your config.php from scratch)
          • Many changes to themes - authors of custom themes should read theme/UPGRADE.txt
          • New moodle.org registration function for security notifications etc
          • @@ -615,37 +672,29 @@
          • Improvements to the language editing page
          • Better checking of PHP environment during installation, with warnings
          • Cleaner installation procedure.
          • -
          User management
          -
          • New role: Course creator - just like teacher but can also create new courses
          • New authentication plug-in named "manual", prevents users from creating their own accounts
          • "Forgot Password" routine now uses an email confirmation before resetting password
          • -
          Courses
          -
          • Activities on the course page now have a little button to hide/show that activity to students
          • Whole topics/weeks can also now be hidden or shown
          • The list of participants now has some paging, to cope with very large classes
          • Zip/Unzip is now supported by an internal zip library, removing the dependence on external programs to do this. This also means that zip/unzip now works on Windows.
          • -
          Assignments
          -
          • Assignment submissions can be sorted
          • Assignment notification mail isn't sent to unenrolled students
          • -
          Forums
          -
          -
            +
          • Display of forum discussions list is greatly improved
          • Whole discussions can be moved to any other forum with a single click
          • Date/time of posts is now "last modified", not "created"
          • @@ -654,20 +703,16 @@
          • Force Subscribe now works on the "Site News" forum (mails all active students/teachers)
          • Better handling of mailouts to prevent the possibility of double copies that sometimes happened with very large classes
          • -
          Workshop Assignment module (not included: available soon as a separate download)
          -
          • A very interesting new module contributed by Ray Kingdon,
          • A flexible tool that implements a variety of peer-grading and example-setting schemes that involve a whole group in examining and grading pieces of work.
          • -
          Quizzes
          -
          • New question type, Random Question (selects from all questions in the same category)
          • New question type, Matching Question (student must match answers to questions)
          • New question type, Random Matching Short-Answers (randomly creates Matching Questions @@ -680,19 +725,15 @@
          • Regrading works properly if the quiz has been changed
          • Editing a question after it's already been used in a quiz no longer affects quiz results
          • Multiple choice answers are labelled a,b,c not 1,2,3
          • -
          Resources
          -
          -
            +
          • Better performance when editing large text or HTML resources
          • Plain images are now display centered within a proper web page (not raw).
          • Wiki format added as a new option for Resource pages
          • -
          Custom Themes
          -
          • A number of new styles have been added to all built-in themes. Some of these are ESSENTIAL to viewing some of the new features. PLEASE SEE theme/UPGRADE.txt @@ -700,15 +741,15 @@
          • Custom themes now have the capability to re-define all the little button graphics. There is a new entry in theme/x/config.php ($THEME->custompix) and a new optional subdirectory "pix". See the theme cordoroyblue for an example.
          • -
          -
          +
        +

        Older releases can be seen in the Moodle.org announcement forum.

         

        -

        Moodle Documentation

        -

        Version: $Id$

        +

        Moodle Documentation

        +

        Version: $Id$

        diff --git a/lang/en/docs/teacher.html b/lang/en/docs/teacher.html index 092d2474c22..6726f5ee3f8 100644 --- a/lang/en/docs/teacher.html +++ b/lang/en/docs/teacher.html @@ -1,13 +1,10 @@ - - Moodle Docs: Teachers Manual - - + + - +

        Teacher Manual

        This page is a very quick guide to creating online courses with Moodle. It outlines the main functions that are available, as well as some of the main @@ -34,13 +31,13 @@

      • Notice and use these little icons:
        -

          - the edit icon +

          - the edit icon lets you edit whatever it is next to.

        -

        - the help +

        - the help icon will provide you with a popup help window

        -

          - the open-eye +

          - the open-eye icon will let you hide something from students

        -

          - the closed-eye +

          - the closed-eye icon will make a hidden item available

      • @@ -71,13 +68,13 @@ formats (ignore the different colours, which are set for a whole site by the site administrator):

        Weekly format:

        -

        +

         

        Topics format:

        -

        +

         

        Social format:

        -

        +

         

        Note that the weekly and topics formats are very similar in structure. The main difference is that each box in the weekly format covers exactly one week, @@ -96,7 +93,7 @@ or delete them.

        All of this is achieved through the Files link in your Administration menu. The Files section looks like this:

        -

        +

         

        This interface is only available to teachers - it is not accessible by students. Individual files are made available to students later on (as "Resources" @@ -138,23 +135,23 @@ date they upload their file is recorded. Afterwards, you will have a single page on which you can view each file (and how late or early it is), and then record a grade and a comment. Half an hour after you grade any particular - student, Moodle will automatically email that student a notification. -
        -
        + student, Moodle will automatically email that student a notification. +
        +

        Choice
        A choice activity is very simple - you ask a question and specify a choice 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. -
        -
        + my students, but you could use it for quick polls or class votes. +
        +
        Forum
        This module is by far the most important - it is here that discussion takes place. When you add a new forum, yu will presented with a choice of different types - a simple single-topic discussion, a free-for-all general - forum, or a one-discussion-thread-per-user. -
        -
        + forum, or a one-discussion-thread-per-user. +
        +
        Journal
        Each journal activity is an entry in the whole course journal. For each one you can specify an open-ended question that guides what students write, @@ -165,24 +162,24 @@ to grade and comment all the entries for that week or topic, and students will receive an automatic email informing them of your feedback. Journals are not designed to be continually added to - if you need to do that then - add more journal activities. -
        -
        + add more journal activities. +
        +
        Resource
        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. -
        -
        + text-based pages by typing them directly into a form. +
        +
        Quiz
        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. -
        -
        + answers. This module includes grading facilities. +
        +
        Survey
        The survey module provides a number of predefined survey instruments that are useful in evaluating and understanding your class. Currently they include @@ -190,12 +187,12 @@ in the course as a diagnostic tool and at the end of the course as an evaluation tool (I use one every week in my courses).
        -
        +

        After adding your activities you can move them up and down in your course - layout by clicking on the little arrow icons ( - ) next to each one. You - can also delete them using the cross icon , - and re-edit them using the edit icon .

        + layout by clicking on the little arrow icons ( + ) next to each one. You + can also delete them using the cross icon , + and re-edit them using the edit icon .

         

        Running the course

        @@ -231,17 +228,17 @@ local site administrator.

        If you have some great ideas for improvements to Moodle, or even some good stories, come over to moodle.org - and join us in the course called "Using + and join us in the course called "Using Moodle". We'd love to hear from you, and you can help Moodle improve.

        If you want to contribute to coding new modules, or writing documentation, - or papers, contact me: Martin + or papers, contact me: Martin Dougiamas or browse the "bug tracker" site for Moodle, at moodle.org/bugs

        Finally, remember to use the help icons - here is an index of all the help files in Moodle.

        Thanks for using Moodle - and good luck with your teaching!

        -
        +

         

        -

        Moodle Documentation

        -

        Version: $Id: teacher.html,v 1.4 2002/08/18 10:00:01 +

        Moodle Documentation

        +

        Version: $Id: teacher.html,v 1.4 2002/08/18 10:00:01 martin Exp $

        diff --git a/lang/en/docs/translation.html b/lang/en/docs/translation.html index 48ef0cf66b3..5beafbfab81 100755 --- a/lang/en/docs/translation.html +++ b/lang/en/docs/translation.html @@ -1,13 +1,11 @@ - - - + + Moodle translation guide - - + + - +

        Moodle Translation Guide

        @@ -36,7 +34,7 @@ These files contains short phrases, often called "pt for Portuguese and pt_br for Brasilian variation of the Portuguese language pack).  If you are making a Unicode version add _utf8 at the end (eg sr_utf8).
        +an underscore and a meaningful two letter extension (e.g. pt for Portuguese and pt_br for Brasilian variation of the Portuguese language pack).  If you are making a Unicode version add _utf8 at the end (eg sr_utf8).

        -

        Next, create in your new language folder the file "moodle.php", containing the folowing lines:

        - -<?PHP
        -$string['thischarset'] = 'iso-8859-1';
        -$string['thisdirection'] = 'ltr';
        -$string['thislanguage'] = 'new language pack';
        -?> -
        -

        -or copy the moodle.php from another +

        Next, copy the moodle.php from another language into your new directory.  The one from the "en" folder is usually best but it doesn't really matter as you are going to rewrite -it anyway. Creating moodle.php yourself has the advantage of starting with a completely clean and empty language pack.
        +it anyway.

        @@ -104,12 +93,12 @@ change that string, save the moodle.php file, then Making small customisations
        +

        Making small customisations

        -

        If you just want to change a few things in the interface to suit your own site better, don't start editing one of the standard language packs.  If you do then your changes will be overwritten next time you upgrade to a new Moodle.
        +

        If you just want to change a few things in the interface to suit your own site better, don't start editing one of the standard language packs.  If you do then your changes will be overwritten next time you upgrade to a new Moodle.

        Instead, use the instructions above for making a brand new language pack, and set the parent language (in @@ -117,21 +106,24 @@ moodle.php) to be the language that is most similar to yours.  For example, a good name for a local english version would be "en_local", and the parent language would be "en" or "en_us".

        Note that for everyone on your site to see this new pack you have to select it as the site language and -restrict the available languages on Admin >> Configuration >> Variables.
        -
        +restrict the available languages on Admin >> Configuration >> Variables.
        +

        -

        Translating the Moodle interface language files (the "string" files)
        +

        Translating the Moodle interface language files (the "string" files)

        +
          + + -
            +
            1. Log on to your Moodle server as an administrator.
            2. Go to Administration >> Configuration >> Language, which is the language administration page.
            3. On this page you can choose your language from the menu, then choose "Compare and Edit Language".
            4. @@ -146,8 +138,8 @@ remembering to hit the "Save changes" button at the end of each form.
            5. It's OK to leave strings empty - Moodle will simply use the parent language for that string instead. You can define the parent language in moodle.php, otherwise English is always used by default.
            6. -
            7. A quick way to see all the missing strings is by using the button to "Check for missing strings". Leave the untranslated strings completely empty or this handy tool won't work.
              -
              +
            8. A quick way to see all the missing strings is by using the button to "Check for missing strings".
              +
            9. @@ -155,7 +147,9 @@ language in moodle.php, otherwise English is always used by default. - + + +
          @@ -170,29 +164,13 @@ the en language pack and paste it on the same location in your own language pack. Then use a plain text editor to translate the file, making sure not to modify any code in the file (there usually is no code, just HTML-tags). (DON'T USE A WORDPROCESSOR to write the -help-files because these programs add too much rubbish to the files). -
          Don't leave untranslated help files in your language pack.

          - -

          Take care to write the helpfiles XHTML-compliant. This means in short:

          -
            -
          • All tags should be closed: <p>lalala</p>
          • -
          • All elements should be nested: <p> lalala <em>lalala</em> </p>
          • -
          • All elements and attributes must be lower case
          • -
          • All atributes should be written in full and with quotes : <p align="right"> lalala </p>
          • -
          • Empty elements must end with />: <br /> <hr />. You should add an extra space before the "/" symbol.
          • -
          • An <img should have an alt="" (it can be empty) en must be closed like other empty elements with a space and /> like <img alt="" src="picture.gif" />
          • -
          • <?= and <? should be <?php
          • -
          • There should not be ANY font tags at all. <p><em> <h1> <h2> etc should be enough for the language files ...
          • -
          • The language name in the languagepack ($string['thislanguage'] in moodle.php) should generally use Unicode Numeric Character References (NCR) if possible, because this allows the name to work within ANY encoding context (see the Chinese pack for example).
          • -
          -

          None of the files in the help folder need a doc type, html, body, head opening and closing tags - these files are included with help.php. The script will take care of welforming the pages. This means also there is not much room for HTML creativity! Please stick to the English example.

          -

          The files in the docs folder must be completely XHTML compliant, including doc type, header etc.

          +help-files because these programs add too much rubbish to the files).

          Clicking on "Check for missing strings" in the language administration screen will also show you what files you are missing. If you have missing files then Moodle will use the parent -language instead, so don't leave copies of untranslated help files in your language pack or this handy tool won't work.

          +language instead, so there is no need to leave copies of untranslated help files in your language pack.

           

          @@ -203,30 +181,20 @@ language instead, so don't leave copies of untranslated help fi

          Sharing your translation with Moodle will ensure that you help other people who speak your language.   -Your interface language will be available in future versions of Moodle.
          +Your interface language will be available in future versions of Moodle.

          -

          Simply archive your whole new language directory as a zip file and email it to translation@moodle.org.
          +

          Simply archive your whole new language directory as a zip file and email it to translation@moodle.org.

          -

          We will get back to you with further details.
          +

          We will get back to you with further details.

          -

          Checklist you can use before committing::

          -
            -
          • No empty files?
          • -
          • No untranslated files or strings?
          • -
          • Help files not edited with a wordprocessor?
          • -
          • README file contains language, name and emailadress of the translator?
          • -
          • Foldername is the right language code (check moodle\lib\languages.php)?
          • -
          • Does the language pack run errorfree on a testsite?
          • -
          • When "thislanguage" contains other then latin letters, is it written in NCR notation?
          • -
          • Are the strings and files XHTML compliant?
          • -
          +

           

          -

          Maintenance of a standard language pack
          +

          Maintenance of a standard language pack

          @@ -234,16 +202,16 @@ Your interface language will be available in future versions of Moodle.

          If you are committed to maintaining a language in Moodle, it's best to use Moodle CVS so that you have an up-to-date version of Moodle, and can easily "check in" your changes directly into the Moodle project. Contact translation@moodle.org if you need help setting this up.

          -

          You must also subscribe to the Languages Forum for news and discussion about issues that affect translations.
          +

          You must also subscribe to the Languages Forum for news and discussion about issues that affect translations.

          Finally, to keep in touch with changes in the project on a day-to-day basis it is a very good idea to subscribe to the CVS mailing list.  This helps to keep your -translation as close to the English text as possible.
          +translation as close to the English text as possible.

          -


          +


          -

          Moodle Documentation

          -

          Version: $Id$

          +

          Moodle Documentation

          +

          Version: $Id$

          diff --git a/lang/en/docs/upgrade.html b/lang/en/docs/upgrade.html index a7104e6012d..a8d54803549 100644 --- a/lang/en/docs/upgrade.html +++ b/lang/en/docs/upgrade.html @@ -1,13 +1,10 @@ - - Moodle Docs: Upgrading - - + + - +

          Upgrading Moodle

          @@ -27,7 +24,7 @@

          Make a separate copy of these files before the upgrade, so that you can retrieve your config.php and any modules you have added like themes, languages - etc
          + etc

          2. Your data directory.

          @@ -35,7 +32,7 @@

          This is where uploaded content resides (such as course resources and student assignments) so it is very important to have a backup of these files anyway. Sometimes upgrades may move or rename directories within - your data directory.
          + your data directory.

          3. Your database

          @@ -62,13 +59,13 @@ way it to rename the current Moodle directory to something else, then unpack the new Moodle archive into the old location.

          -

          mv moodle moodle.backup
          +

          mv moodle moodle.backup
          tar xvzf moodle-1.1.tgz

          Next, copy across your config.php and any other plugins such as custom themes:

          -

          cp moodle.backup/config.php moodle
          +

          cp moodle.backup/config.php moodle
          cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme

          @@ -90,7 +87,7 @@

          3. Finishing the upgrade

          The last step is to trigger the upgrade processes within Moodle.

          -

          To do this just visit the admin page of your +

          To do this just visit the admin page of your installation.

          http://example.com/moodle/admin

          @@ -104,14 +101,14 @@

           

          Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!

          -

          If you have trouble with the upgrade, visit moodle.org - and post on the Installation +

          If you have trouble with the upgrade, visit moodle.org + and post on the Installation Support Forum in the Using Moodle course.

           

           

          -

          Moodle Documentation

          -

          Version: $Id$

          +

          Moodle Documentation

          +

          Version: $Id$

          \ No newline at end of file diff --git a/lang/en/editor.php b/lang/en/editor.php index cd6350c8945..13cce077990 100644 --- a/lang/en/editor.php +++ b/lang/en/editor.php @@ -1,10 +1,10 @@ - diff --git a/lang/en/enrol_database.php b/lang/en/enrol_database.php index cee2833370e..9576a383c00 100755 --- a/lang/en/enrol_database.php +++ b/lang/en/enrol_database.php @@ -1,4 +1,4 @@ -modulename\" ($a->moduleversion) could not be installed. It requires a newer version of Moodle (currently you are using $a->currentmoodle, you need $a->requiremoodle).'; $string['notavailable'] = 'That is not currently available'; -$string['onlyeditown'] = 'You can only edit your own information'; -$string['processingstops'] = 'Processing stops here. Remaining records ignored.'; $string['restricteduser'] = 'Sorry, but your current account \"$a\" is restricted from doing that.'; -$string['sessionipnomatch'] = 'Sorry, but your IP number seems to have changed from when you first logged in. This security feature prevents crackers stealing your identity while logged in to this site. Normal users should not be seeing this message - please ask the site administrator for help.'; $string['unknowncourse'] = 'Unknown course named \"$a\"'; $string['usernotaddederror'] = 'User \"$a\" not added - unknown error'; $string['usernotaddedregistered'] = 'User \"$a\" not added - already registered'; diff --git a/lang/en/exercise.php b/lang/en/exercise.php index f2eafd8c7b0..741786b6094 100644 --- a/lang/en/exercise.php +++ b/lang/en/exercise.php @@ -1,190 +1,186 @@ You may want to revise your work in the light of that assessment.
          If you do that please remember to also revise your assessment.
          You can do this by clicking on the Re-assess link given below.'; -$string['awaitingassessmentbythe'] = 'Awaiting Assessment by the $a'; -$string['clearlateflag'] = 'Clear Late Flag'; -$string['comment'] = 'Comment'; -$string['comparisonofassessments'] = 'Comparison of Assessments'; -$string['confirmdeletionofthisitem'] = 'Confirm Deletion of this $a'; -$string['correct'] = 'Correct'; -$string['count'] = 'Count'; -$string['criterion'] = 'Criterion'; -$string['deadline'] = 'Deadline'; -$string['deadlineis'] = 'The Deadline is $a'; -$string['delete'] = 'Delete'; -$string['deletesubmissionwarning'] = 'Warning: there $a assessments associated with this submission.
          - It is strongly suggested that this submission is NOT deleted.'; -$string['deleting'] = 'Deleting'; -$string['description'] = 'Description'; -$string['descriptionofexercise'] = 'In an Exercise Assignment the description of the exercise or task to be done by the $a is put into a Word document or HTML file. This file is uploaded into the exercise before the assignment is opened up to the $a. It is also possible to create a set of variants on the same exercise or task, again as Word documents or HTML files, and upload these into the exercise before it is opened up to the $a.'; -$string['detailsofassessment'] = 'Details of Assessment'; -$string['displayoffinalgrades'] = 'Display of Final Grades'; -$string['doubleupload'] = 'Warning: this submission has probably been sent twice. Go to the Administration page, check for two submissions from this user within a short time period. Delete one of these submissions before proceeding.'; -$string['duedate'] = 'Due Date'; -$string['edit'] = 'Edit'; -$string['editingassessmentelements'] = 'Editing Assessment Elements'; -$string['element'] = 'Element'; -$string['elementweight'] = 'Element Weight'; -$string['enterpassword'] = 'Enter Password'; -$string['entriessaved'] = 'Entries Saved'; -$string['errorbanded'] = 'Error Banded'; -$string['excellent'] = 'Excellent'; -$string['exerciseassessments'] = 'Exercise Assessments'; -$string['exercisefeedback'] = 'Exercise Feedback'; -$string['exercisesubmissions'] = 'Exercise Submissions'; -$string['fair'] = 'Fair'; -$string['generalcomment'] = 'General comment'; -$string['good'] = 'Good'; -$string['gradeassessment'] = 'Grade Assessment'; -$string['gradeforassessment'] = 'Grade for Assessment'; -$string['gradeforstudentsassessment'] = 'Grade for $a Assessment'; -$string['gradeforsubmission'] = 'Grade for Submission'; -$string['gradetable'] = 'Grade Table'; -$string['gradinggrade'] = 'Grading Grade'; -$string['gradingstrategy'] = 'Grading Strategy'; -$string['handlingofmultiplesubmissions'] = 'Handling of Multiple Submissions'; -$string['hidenamesfromstudents'] = 'Hide Names from Students'; -$string['incorrect'] = 'Incorrect'; -$string['late'] = 'Late'; -$string['lax'] = 'Lax'; -$string['leaguetable'] = 'League Table of Submitted Work'; -$string['mail1'] = 'Your assignment \'$a\' has been assessed by'; -$string['mail2'] = 'The comments and grade can be seen in the Exercise Assignment \'$a\''; -$string['mail3'] = 'You can see it in your Exercise Assignment'; -$string['mail6'] = 'Your assessment of the assignment \'$a\' has by reviewed'; -$string['mail7'] = 'The comments given by the $a can be seen in the Exercise Assignment '; -$string['managingassignment'] = 'Managing the Exercise'; -$string['maximum'] = 'Maximum'; -$string['maximumgradeforstudentassessments'] = 'Maximum Grade for Student Assessments: $a'; -$string['maximumgradeforsubmissions'] = 'Maximum Grade for Submissions: $a'; -$string['maximumsize'] = 'Maximum Size'; -$string['mean'] = 'Mean'; -$string['minimum'] = 'Minumum'; -$string['modulename'] = 'Exercise'; -$string['modulenameplural'] = 'Exercises'; -$string['movingtophase'] = 'Moving to Phase $a'; -$string['multiplesubmissions'] = 'Multiple Submissions'; -$string['noexercisedescriptionssubmitted'] = 'No Exercise Descriptions Submitted'; -$string['nosubmissions'] = 'No Submissions'; -$string['notassessedyet'] = 'Not Assessed Yet'; -$string['notavailable'] = 'Not Available'; -$string['noteonassessmentelements'] = 'Note that grading is broken down into a number of \'Assessment Elements\'.
          +$string['absent'] = "Absent"; +$string['accumulative'] = "Accumulative"; +$string['action'] = "Action"; +$string['ago'] = "\$a ago"; +$string['amend'] = "Amend"; +$string['amendassessmentelements'] = "Amend Assessment Elements"; +$string['amendtitle'] = "Amend Title"; +$string['analysis'] = "Analysis"; +$string['assess'] = "Assess"; +$string['assessed'] = "Assessed"; +$string['assessment'] = "Assessment"; +$string['assessmentby'] = "Assessment by \$a"; +$string['assessmentform'] = "Assessment Form"; +$string['assessmentmadebythe'] = "Assessment made by the \$a"; +$string['assessments'] = "Assessments"; +$string['assessmentofthissubmission'] = "Assessment of this submission"; +$string['atthisstageyou'] = "At this stage you have completed an assessment.
          You may want to revise your work in the light of that assessment.
          If you do that please remember to also revise your assessment.
          You can do this by clicking on the Re-assess link given below."; +$string['awaitingassessmentbythe'] = "Awaiting Assessment by the \$a"; +$string['clearlateflag'] = "Clear Late Flag"; +$string['comment'] = "Comment"; +$string['comparisonofassessments'] = "Comparison of Assessments"; +$string['confirmdeletionofthisitem'] = "Confirm Deletion of this \$a"; +$string['correct'] = "Correct"; +$string['count'] = "Count"; +$string['criterion'] = "Criterion"; +$string['deadline'] = "Deadline"; +$string['deadlineis'] = "The Deadline is \$a"; +$string['deletesubmissionwarning'] = "Warning: there \$a assessments associated with this submission.
          + It is strongly suggested that this submission is NOT deleted."; +$string['description'] = "Description"; +$string['descriptionofexercise'] = "In an Exercise Assignment the description of the exercise or task to be done by the \$a is put into a Word document or HTML file. This file is uploaded into the exercise before the assignment is opened up to the \$a. It is also possible to create a set of variants on the same exercise or task, again as Word documents or HTML files, and upload these into the exercise before it is opened up to the \$a."; +$string['delete'] = "Delete"; +$string['deleting'] = "Deleting"; +$string['detailsofassessment'] = "Details of Assessment"; +$string['displayoffinalgrades'] = "Display of Final Grades"; +$string['doubleupload'] = "Warning: this submission has probably been sent twice. Go to the Administration page, check for two submissions from this user within a short time period. Delete one of these submissions before proceeding."; +$string['duedate'] = "Due Date"; +$string['edit'] = "Edit"; +$string['editingassessmentelements'] = "Editing Assessment Elements"; +$string['element'] = "Element"; +$string['elementweight'] = "Element Weight"; +$string['entriessaved'] = "Entries Saved"; +$string['errorbanded'] = "Error Banded"; +$string['excellent'] = "Excellent"; +$string['exerciseassessments'] = "Exercise Assessments"; +$string['exercisefeedback'] = "Exercise Feedback"; +$string['exercisesubmissions'] = "Exercise Submissions"; +$string['fair'] = "Fair"; +$string['generalcomment'] = "General comment"; +$string['good'] = "Good"; +$string['gradeassessment'] = "Grade Assessment"; +$string['gradeforassessment'] = "Grade for Assessment"; +$string['gradeforstudentsassessment'] = "Grade for \$a Assessment"; +$string['gradeforsubmission'] = "Grade for Submission"; +$string['gradetable'] = "Grade Table"; +$string['gradinggrade'] = "Grading Grade"; +$string['gradingstrategy'] = "Grading Strategy"; +$string['handlingofmultiplesubmissions'] = "Handling of Multiple Submissions"; +$string['hidenamesfromstudents'] = "Hide Names from Students"; +$string['incorrect'] = "Incorrect"; +$string['late'] = "Late"; +$string['lax'] = "Lax"; +$string['leaguetable'] = "League Table of Submitted Work"; +$string['managingassignment'] = "Managing the Exercise"; +$string['mail1'] = "Your assignment '\$a' has been assessed by"; +$string['mail2'] = "The comments and grade can be seen in the Exercise Assignment '\$a'"; +$string['mail3'] = "You can see it in your Exercise Assignment"; +$string['mail6'] = "Your assessment of the assignment '\$a' has by reviewed"; +$string['mail7'] = "The comments given by the \$a can be seen in the Exercise Assignment "; +$string['maximum'] = "Maximum"; +$string['maximumgradeforstudentassessments'] = "Maximum Grade for Student Assessments: \$a"; +$string['maximumgradeforsubmissions'] = "Maximum Grade for Submissions: \$a"; +$string['maximumsize'] = "Maximum Size"; +$string['mean'] = "Mean"; +$string['minimum'] = "Minumum"; +$string['modulename'] = "Exercise"; +$string['modulenameplural'] = "Exercises"; +$string['movingtophase'] = "Moving to Phase \$a"; +$string['multiplesubmissions'] = "Multiple Submissions"; +$string['noexercisedescriptionssubmitted'] = "No Exercise Descriptions Submitted"; +$string['nosubmissions'] = "No Submissions"; +$string['notassessedyet'] = "Not Assessed Yet"; +$string['notavailable'] = "Not Available"; +$string['noteonassessmentelements'] = + "Note that grading is broken down into a number of 'Assessment Elements'.
          This makes the grading easier and more consistent. As teacher you must add these
          Elements before making the assignment available to students. This is done by
          clicking on the assignment in the course, if no elements are present you will be asked
          to add them. You can change the number of elements using the Edit Assignment screen,
          - the elements themselves can be amended from the \"Managing Assignment\" screen. '; -$string['noteongradinggrade'] = 'This grade is a measure of how well your assessment agrees with the assessment of
          - your work by the $a. The higher the grade the closer the agreement.'; -$string['noteonstudentassessments'] = '{Grade from student / Grading Grade for assessment}'; -$string['notgraded'] = 'Not Graded'; -$string['notitlegiven'] = 'No Title Given'; -$string['numberofassessmentelements'] = 'Number of Comments, Assessment Elements, Grade Bands, Criterion Statments or Categories in a Rubric'; -$string['numberofcriterionelements'] = 'Number of Criterion Elements must be greater than one.'; -$string['numberofentries'] = 'Number of Entries'; -$string['numberofentriesinleaguetable'] = 'Number of Entries in League Table'; -$string['numberofnegativeresponses'] = 'Number of Negative Responses'; -$string['onesubmission'] = 'One Submission'; -$string['optionaladjustment'] = 'Optional Adjustment'; -$string['overallgrade'] = 'Overall Grade'; -$string['passwordprotectedexercise'] = 'Password Protected Exercise'; -$string['phase'] = 'Phase'; -$string['phase1'] = 'Set Up Exercise'; -$string['phase1short'] = 'Set Up'; -$string['phase2'] = 'Allow $a Assessments and Submissions'; -$string['phase2short'] = 'Open'; -$string['phase3'] = 'Show Overall Grades and League Table'; -$string['phase3short'] = 'Display'; -$string['pleasegradetheassessment'] = 'Please Grade the Assessment of this Piece of Work by $a'; -$string['pleasemakeyourownassessment'] = 'Please make your own Assessment of the Piece of Work from $a.
          Note that the Assessment Form is initially displayed with the Student\'s assessment.
          You should make any amendments you think necessary and then click on one
          of the buttons at the foot of the page.'; -$string['pleasesubmityourwork'] = 'Please submit your Work using this Form'; -$string['pleaseusethisform'] = 'Please complete this form when you have
          finished the instructions in the exercise shown below.'; -$string['pleaseviewtheexercise'] = 'Please view the exercise given below by clicking on it\'s title.
          You should follow the instructions in this exercise.
          When you are happy that you have completed the exercise
          successfully you should click on Assess (or Re-assess) link in
          the box below. When you have done this assessment you will
          be shown further instructions on submitting your work.'; -$string['poor'] = 'Poor'; -$string['present'] = 'Present'; -$string['reasonforadjustment'] = 'General Comment/Reason for Adjustment'; -$string['reassess'] = 'Re-assess'; -$string['regradestudentassessments'] = 'Re-grade Student assessments'; -$string['resubmissionfor'] = 'Resubmission for $a'; -$string['resubmitnote'] = '* means that the $a is allowed to redo this submission.
          This flag can be given to any submission by re-assessing it and clicking
          on the Allow $a to Re-submit button.
          The student can resubmit when this flag is present on any of their submissions.'; -$string['rubric'] = 'Rubric'; -$string['savedok'] = 'Saved OK'; -$string['saveentries'] = 'Save Entries'; -$string['savemyassessment'] = 'Save my Assessment'; -$string['saveweights'] = 'Save Weights'; -$string['scale10'] = 'Score out of 10'; -$string['scale100'] = 'Score out of 100'; -$string['scale20'] = 'Score out of 20'; -$string['scalecorrect'] = '2 point Correct/Incorrect scale'; -$string['scaleexcellent4'] = '4 point Excellent/Very Poor scale'; -$string['scaleexcellent5'] = '5 point Excellent/Very Poor scale'; -$string['scaleexcellent7'] = '7 point Excellent/Very Poor scale'; -$string['scalegood3'] = '3 point Good/Poor scale'; -$string['scalepresent'] = '2 point Present/Absent scale'; -$string['scaleyes'] = '2 point Yes/No scale'; -$string['specimenassessmentform'] = 'Specimen Assessment Form'; -$string['standarddeviation'] = 'Standard Deviation'; -$string['strict'] = 'Strict'; -$string['studentallowedtoresubmit'] = '$a ALLOWED to re-submit'; -$string['studentassessments'] = '$a Assessments'; -$string['studentnotallowed'] = '$a NOT allowed to re-submit (or not needed)'; -$string['studentsubmissions'] = '$a Submissions'; -$string['studentsubmissionsforassessment'] = '$a Student Submissions for Assessment'; -$string['submission'] = 'Submission'; -$string['submissions'] = 'Submissions'; -$string['submissionsnowclosed'] = 'Submissions now closed - Submission deadline has passed'; -$string['submitexercisedescription'] = 'Submit Exercise Description'; -$string['submitted'] = 'Submitted'; -$string['submittedby'] = 'Submitted by'; -$string['suggestedgrade'] = 'Suggested Grade'; -$string['teacherassessment'] = '$a Assessment'; -$string['teacherassessmenttable'] = '$a Assessment Table'; -$string['teacherscomment'] = 'Teacher\'s Comment'; -$string['theexercise'] = 'The Exercise'; -$string['theexerciseandthesubmissionby'] = 'The Exercise and the Submission by $a'; -$string['thegradeis'] = 'The Grade is $a'; -$string['thereisfeedbackfromthe'] = 'There is feedback from the $a'; -$string['thisisaresubmission'] = 'This is a Re-submission by $a.
          Your assessment of their previous submission is shown.
          After looking at the new submission, please Amend this assessment
          and click on one of the buttons at the foot of the page.'; -$string['title'] = 'Title'; -$string['typeofscale'] = 'Type of Scale'; -$string['unassessed'] = '$a Unassessed'; -$string['ungradedstudentassessments'] = '$a Ungraded Student Assessments'; -$string['usemaximum'] = 'Use Maximum'; -$string['usemean'] = 'Use Mean'; -$string['usepassword'] = 'Use Password'; -$string['verylax'] = 'Very Lax'; -$string['verypoor'] = 'Very Poor'; -$string['verystrict'] = 'Very Strict'; -$string['view'] = 'View'; -$string['viewteacherassessment'] = 'View $a Assessment'; -$string['warningonamendingelements'] = 'WARNING: There are submitted assessments.
          Do NOT change the number of elements, the scale types or the element weights.'; -$string['weightederrorcount'] = 'Weighted Error Count: $a'; -$string['weightforgradingofassessments'] = 'Weight for Grading of Assessments'; -$string['weightforteacherassessments'] = 'Weight for $a Assessments'; -$string['weights'] = 'Weights'; -$string['weightssaved'] = 'Weights Saved'; -$string['weightsusedforoverallgrade'] = 'Weights used for Overall Grade'; -$string['wrongpassword'] = 'Incorrect password for this Exercise'; -$string['yourassessment'] = 'Your Assessment'; -$string['yourfeedbackgoeshere'] = 'Your Feedback goes Here'; -$string['yoursubmission'] = 'Your Submission'; - + the elements themselves can be amended from the "Managing Assignment" screen. "; +$string['noteongradinggrade'] = + "This grade is a measure of how well your assessment agrees with the assessment of
          + your work by the \$a. The higher the grade the closer the agreement."; +$string['noteonstudentassessments'] = "{Grade from student / Grading Grade for assessment}"; +$string['notgraded'] = "Not Graded"; +$string['notitlegiven'] = "No Title Given"; +$string['pleasemakeyourownassessment'] = "Please make your own Assessment of the Piece of Work from \$a.
          Note that the Assessment Form is initially displayed with the Student's assessment.
          You should make any amendments you think necessary and then click on one
          of the buttons at the foot of the page."; +$string['numberofassessmentelements'] = "Number of Comments, Assessment Elements, Grade Bands, Criterion Statments or Categories in a Rubric"; +$string['numberofcriterionelements'] = "Number of Criterion Elements must be greater than one."; +$string['numberofentries'] = "Number of Entries"; +$string['numberofentriesinleaguetable'] = "Number of Entries in League Table"; +$string['numberofnegativeresponses'] = "Number of Negative Responses"; +$string['onesubmission'] = "One Submission"; +$string['optionaladjustment'] = "Optional Adjustment"; +$string['overallgrade'] = "Overall Grade"; +$string['phase'] = "Phase"; +$string['phase1'] = "Set Up Exercise"; +$string['phase1short'] = "Set Up"; +$string['phase2'] = "Allow \$a Assessments and Submissions"; +$string['phase2short'] = "Open"; +$string['phase3'] = "Show Overall Grades and League Table"; +$string['phase3short'] = "Display"; +$string['pleasegradetheassessment'] = "Please Grade the Assessment of this Piece of Work by \$a"; +$string['pleasesubmityourwork'] = "Please submit your Work using this Form"; +$string['pleaseusethisform'] = "Please complete this form when you have
          finished the instructions in the exercise shown below."; +$string['pleaseviewtheexercise'] = "Please view the exercise given below by clicking on it's title.
          You should follow the instructions in this exercise.
          When you are happy that you have completed the exercise
          successfully you should click on Assess (or Re-assess) link in
          the box below. When you have done this assessment you will
          be shown further instructions on submitting your work."; +$string['poor'] = "Poor"; +$string['present'] = "Present"; +$string['reasonforadjustment'] = "General Comment/Reason for Adjustment"; +$string['reassess'] = "Re-assess"; +$string['regradestudentassessments'] = "Re-grade Student assessments"; +$string['resubmissionfor'] = "Resubmission for \$a"; +$string['resubmitnote'] = "* means that the \$a is allowed to redo this submission.
          This flag can be given to any submission by re-assessing it and clicking
          on the Allow \$a to Re-submit button.
          The student can resubmit when this flag is present on any of their submissions."; +$string['rubric'] = "Rubric"; +$string['savemyassessment'] = "Save my Assessment"; +$string['savedok'] = "Saved OK"; +$string['saveentries'] = "Save Entries"; +$string['saveweights'] = "Save Weights"; +$string['scaleyes'] = "2 point Yes/No scale"; +$string['scalepresent'] = "2 point Present/Absent scale"; +$string['scalecorrect'] = "2 point Correct/Incorrect scale"; +$string['scalegood3'] = "3 point Good/Poor scale"; +$string['scaleexcellent4'] = "4 point Excellent/Very Poor scale"; +$string['scaleexcellent5'] = "5 point Excellent/Very Poor scale"; +$string['scaleexcellent7'] = "7 point Excellent/Very Poor scale"; +$string['scale10'] = "Score out of 10"; +$string['scale20'] = "Score out of 20"; +$string['scale100'] = "Score out of 100"; +$string['specimenassessmentform'] = "Specimen Assessment Form"; +$string['standarddeviation'] = "Standard Deviation"; +$string['strict'] = "Strict"; +$string['studentallowedtoresubmit'] = "\$a ALLOWED to re-submit"; +$string['studentassessments'] = "\$a Assessments"; +$string['studentnotallowed'] = "\$a NOT allowed to re-submit (or not needed)"; +$string['studentsubmissionsforassessment'] = "\$a Student Submissions for Assessment"; +$string['studentsubmissions'] = "\$a Submissions"; +$string['submitexercisedescription'] = "Submit Exercise Description"; +$string['submitted'] = "Submitted"; +$string['submittedby'] = "Submitted by"; +$string['submission'] = "Submission"; +$string['submissions'] = "Submissions"; +$string['submissionsnowclosed'] = "Submissions now closed - Submission deadline has passed"; +$string['suggestedgrade'] = "Suggested Grade"; +$string['teacherassessment'] = "\$a Assessment"; +$string['teacherassessmenttable'] = "\$a Assessment Table"; +$string['teacherscomment'] = "Teacher's Comment"; +$string['theexercise'] = "The Exercise"; +$string['theexerciseandthesubmissionby'] = "The Exercise and the Submission by \$a"; +$string['thegradeis'] = "The Grade is \$a"; +$string['thereisfeedbackfromthe'] = "There is feedback from the \$a"; +$string['thisisaresubmission'] = "This is a Re-submission by \$a.
          Your assessment of their previous submission is shown.
          After looking at the new submission, please Amend this assessment
          and click on one of the buttons at the foot of the page."; +$string['title'] = "Title"; +$string['typeofscale'] = "Type of Scale"; +$string['unassessed'] = "\$a Unassessed"; +$string['ungradedstudentassessments'] = "\$a Ungraded Student Assessments"; +$string['usemaximum'] = "Use Maximum"; +$string['usemean'] = "Use Mean"; +$string['verylax'] = "Very Lax"; +$string['verypoor'] = "Very Poor"; +$string['verystrict'] = "Very Strict"; +$string['view'] = "View"; +$string['viewteacherassessment'] = "View \$a Assessment"; +$string['warningonamendingelements'] = "WARNING: There are submitted assessments.
          Do NOT change the number of elements, the scale types or the element weights."; +$string['weightederrorcount'] = "Weighted Error Count: \$a"; +$string['weightforgradingofassessments'] = "Weight for Grading of Assessments"; +$string['weightforteacherassessments'] = "Weight for \$a Assessments"; +$string['weights'] = "Weights"; +$string['weightssaved'] = "Weights Saved"; +$string['weightsusedforoverallgrade'] = "Weights used for Overall Grade"; +$string['yourassessment'] = "Your Assessment"; +$string['yourfeedbackgoeshere'] = "Your Feedback goes Here"; +$string['yoursubmission'] = "Your Submission"; ?> diff --git a/lang/en/fonts/default.ttf b/lang/en/fonts/default.ttf index 58cd6b5e61eff273e920942e28041f8ddcf1e1b5..7e28e414bb237fc7f295e08b545f749070487299 100755 GIT binary patch literal 134188 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 z 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 literal 65932 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

          B-* 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 zx*forum\' $string['nowsubscribed'] = '$a->name will receive copies of \'$a->forum\' by email.'; $string['numposts'] = '$a posts'; $string['olderdiscussions'] = 'Older discussions'; -$string['oldertopics'] = 'Older topics'; $string['openmode0'] = 'No discussions, no replies'; $string['openmode1'] = 'No discussions, but replies are allowed'; $string['openmode2'] = 'Discussions and replies are allowed'; $string['parent'] = 'Show parent'; $string['parentofthispost'] = 'Parent of this post'; -$string['postadded'] = '

          Your post was successfully added.

          -

          You have $a to edit it if you want to make any changes.

          '; +$string['postadded'] = 'Your post was successfully added.

          You have $a to edit it if you want to make any changes.'; $string['postincontext'] = 'See this post in context'; $string['postmailinfo'] = 'This is a copy of a message posted on the $a website. @@ -116,11 +103,11 @@ $string['posts'] = 'Posts'; $string['posttoforum'] = 'Post to forum'; $string['postupdated'] = 'Your post was updated'; $string['potentialsubscribers'] = 'Potential subscribers'; -$string['processingdigest'] = 'Processing email digest for user $a'; $string['processingpost'] = 'Processing post $a'; +$string['processingdigest'] = 'Processing email digest for user $a'; $string['prune'] = 'Split'; -$string['prunedpost'] = 'A new discussion has been created from that post'; $string['pruneheading'] = 'Split the discussion and move this post to a new discussion'; +$string['prunedpost'] = 'A new discussion has been created from that post'; $string['rate'] = 'Rate'; $string['rating'] = 'Rating'; $string['ratingeveryone'] = 'Everyone can rate posts'; @@ -142,21 +129,9 @@ $string['replyforum'] = 'Reply to forum'; $string['rsssubscriberssdiscussions'] = 'Display the RSS feed for \'$a\' discussions'; $string['rsssubscriberssposts'] = 'Display the RSS feed for \'$a\' posts'; $string['search'] = 'Search'; -$string['searchdatefrom'] = 'Posts must be newer than this'; -$string['searchdateto'] = 'Posts must be older than this'; -$string['searchforumintro'] = 'Please enter search terms into one or more of the following fields:'; $string['searchforums'] = 'Search forums'; -$string['searchfullwords'] = 'These words should appear as whole words'; -$string['searchnotwords'] = 'These words should NOT be included'; -$string['searchphrase'] = 'This exact phrase must appear in the post'; -$string['searchsubject'] = 'These words should be in the subject'; -$string['searchuser'] = 'This name should match the author'; -$string['searchuserid'] = 'The Moodle ID of the author'; -$string['searchwords'] = 'These words can appear anywhere in the post'; $string['searcholderposts'] = 'Search older posts...'; $string['searchresults'] = 'Search results'; -$string['searchwhichforums'] = 'Choose which forums to search'; -$string['seeallposts'] = 'See all posts made by this user'; $string['sendinratings'] = 'Send in my latest ratings'; $string['showsubscribers'] = 'Show/edit current subscribers'; $string['singleforum'] = 'A single simple discussion'; @@ -172,15 +147,9 @@ $string['subscribestart'] = 'Send me email copies of posts to this forum'; $string['subscribestop'] = 'I don\'t want email copies of posts to this forum'; $string['subscription'] = 'Subscription'; $string['subscriptions'] = 'Subscriptions'; -$string['unread'] = 'Unread'; -$string['unreadposts'] = 'Unread posts'; -$string['unreadpostsnumber'] = '$a unread posts'; -$string['unreadpostsone'] = '1 unread post'; $string['unsubscribe'] = 'Unsubscribe from this forum'; $string['unsubscribed'] = 'Unsubscribed'; $string['unsubscribeshort'] = 'Unsubscribe'; -$string['yesforever'] = 'Yes, forever'; -$string['yesinitially'] = 'Yes, initially'; $string['youratedthis'] = 'You rated this'; $string['yournewtopic'] = 'Your new discussion topic'; $string['yourreply'] = 'Your reply'; diff --git a/lang/en/glossary.php b/lang/en/glossary.php index 40df7c58c6d..d95528d8361 100644 --- a/lang/en/glossary.php +++ b/lang/en/glossary.php @@ -1,5 +1,5 @@ Concept and definition are mandatory fields.'; +$string['explainaddentry'] = 'Add a new entry to the current glossary.
          Concept and definition are mandatory fields.'; $string['explainall'] = 'Shows ALL entries on one page'; $string['explainalphabet'] = 'Browse the glossary using this index'; -$string['explainexport'] = 'A file has been generated.
          Download it and keep it safe. You can import it anytime you wish in this or other course.'; -$string['explainimport'] = 'You must specify the file to import and define the criteria of the process.

          Submit your request and review the results.

          '; +$string['explainexport'] = 'A file has been generated.
          Download it and keep it safe. You can import it anytime you wish in this or other course.'; +$string['explainimport'] = 'You must specify the file to import and define the criteria of the process.

          Submit your request and review the results.'; $string['explainspecial'] = 'Shows entries that do not begin with a letter'; $string['exportedentry'] = 'Exported entry'; $string['exportedfile'] = 'Exported file'; $string['exportentries'] = 'Export entries'; $string['exportglossary'] = 'Export glossary'; +$string['exportentries'] = 'Export entries'; $string['exporttomainglossary'] = 'Export to main glossary'; $string['filetoimport'] = 'File to import'; -$string['fillfields'] = 'Concept and definition are mandatory fields.'; $string['filtername'] = 'Glossary Auto-linking'; +$string['fillfields'] = 'Concept and definition are mandatory fields.'; $string['fullmatch'] = 'Match whole words only'; $string['globalglossary'] = 'Global glossary'; $string['glossaryleveldefaultsettings'] = 'Glossary Level Default Settings'; @@ -131,7 +129,6 @@ $string['notcategorised'] = 'Not categorised'; $string['numberofentries'] = 'Number of entries'; $string['onebyline'] = '(one per line)'; $string['printerfriendly'] = 'Printer-friendly version'; -$string['printviewnotallowed'] = 'Print view isn\'t allowed'; $string['question'] = 'Question'; $string['rate'] = 'Rate'; $string['rating'] = 'Rating'; diff --git a/lang/en/grades.php b/lang/en/grades.php deleted file mode 100755 index 5e4c6e56f9d..00000000000 --- a/lang/en/grades.php +++ /dev/null @@ -1,125 +0,0 @@ - three text areas for that letter and click submit.'; -$string['gradepreferenceshelp'] = 'Grade Preferences Help'; -$string['grades'] = 'Grades'; -$string['gradeweighthelp'] = 'Grade Weight Help'; -$string['hidecategory'] = 'Hidden'; -$string['highgradeascending'] = 'Sort by high grade ascending'; -$string['highgradedescending'] = 'Sort by high grade descending'; -$string['highgradeletter'] = 'High'; -$string['incorrectcourseid'] = 'Course ID was incorrect'; -$string['item'] = 'Item'; -$string['items'] = 'Items'; -$string['lettergrade'] = 'Letter Grade'; -$string['lettergradenonnumber'] = 'Low and/or High grade were non-numeric for'; -$string['letters'] = 'Letters'; -$string['lowest'] = 'Lowest'; -$string['lowgradeletter'] = 'Low'; -$string['max'] = 'Highest'; -$string['maxgrade'] = 'Max Grade'; -$string['median'] = 'Median'; -$string['min'] = 'Lowest'; -$string['mode'] = 'Mode'; -$string['no'] = 'No'; -$string['nocategories'] = 'Grade categories could not be added or found for this course'; -$string['nocategoryview'] = 'No category to view by'; -$string['nogradeletters'] = 'No grade letters set'; -$string['nogradesreturned'] = 'No grades returned'; -$string['nolettergrade'] = 'No letter grade for'; -$string['nomode'] = 'NA'; -$string['nonnumericweight'] = 'Received non-numeric value for '; -$string['nonweightedpct'] = 'non-weighted %%'; -$string['pctoftotalgrade'] = '%% of total grade'; -$string['percent'] = 'Percent'; -$string['percentascending'] = 'Sort by percent ascending'; -$string['percentdescending'] = 'Sort by percent descending'; -$string['percentshort'] = '%%'; -$string['points'] = 'points'; -$string['pointsascending'] = 'Sort by points ascending'; -$string['pointsdescending'] = 'Sort by points descdending'; -$string['preferences'] = 'Preferences'; -$string['rawpct'] = 'Raw %%'; -$string['reprintheaders'] = 'Reprint Headers'; -$string['savechanges'] = 'Save Changes'; -$string['savepreferences'] = 'Save Preferences'; -$string['scaledpct'] = 'Scaled %%'; -$string['setcategories'] = 'Set Categories'; -$string['setcategorieserror'] = 'You must first set the categories for your course before you can give weights to them.'; -$string['setgradeletters'] = 'Set Grade Letters'; -$string['setpreferences'] = 'Set Preferences'; -$string['setting'] = 'Setting'; -$string['settings'] = 'Settings'; -$string['setweights'] = 'Set Weights'; -$string['showallstudents'] = 'Show All Students'; -$string['showhiddenitems'] = 'Show Hidden Items'; -$string['sort'] = 'sort'; -$string['sortbyfirstname'] = 'Sort by Firstname'; -$string['sortbylastname'] = 'Sort by Lastname'; -$string['standarddeviation'] = 'Standard Deviation'; -$string['stats'] = 'Statistics'; -$string['statslink'] = 'Stats'; -$string['student'] = 'Student'; -$string['total'] = 'Total'; -$string['totalweight100'] = 'The total weight is equal to 100'; -$string['totalweightnot100'] = 'The total weight is not equal to 100'; -$string['uncategorised'] = 'Uncategorised'; -$string['useadvanced'] = 'Use Advanced Features'; -$string['usepercent'] = 'Use Percent'; -$string['useweighted'] = 'Use Weighted'; -$string['viewbygroup'] = 'Group'; -$string['viewgrades'] = 'View Grades'; -$string['weight'] = 'weight'; -$string['weightedascending'] = 'Sort by weighted percent ascending'; -$string['weighteddescending'] = 'Sort by weighted percent descending'; -$string['weightedpct'] = 'weighted %%'; -$string['weightedpctcontribution'] = 'weighted %% contribution'; -$string['writinggradebookinfo'] = 'Writing Gradebook settings'; -$string['yes'] = 'Yes'; - -?> diff --git a/lang/en/help/advanced_markdown.html b/lang/en/help/advanced_markdown.html deleted file mode 100644 index c1a8f3e6ee4..00000000000 --- a/lang/en/help/advanced_markdown.html +++ /dev/null @@ -1,140 +0,0 @@ -

          Advanced Use of Markdown

          - -
          - -
          -

          This section expands upon the basic information given in the section titled 'Enhancing Text With Markdown' to give those with special requirements the information needed to make the most of Markdown. If you don't recognise, or don't need, the formatting listed below then you should feel free to skip this section and return to it as and when needed.

          - - - -

          Line Breaks

          - -

          In some texts, for instance in poetry and verse, it is often necessary to insert line breaks. Trying to do so with the return key will not give the intended effect as by default the lines will be run together to create a paragraph.

          - -

          The best laid schemes o' Mice an' Men,
          -Gang aft agley,
          -An' lea'e us nought but grief an' pain,
          -For promis'd joy!

          - -

          The above input, using the enter key to insert line breaks will give the following output as such breaks are ignored:

          - -

          The best laid schemes o' Mice an' Men, -Gang aft agley, -An' lea'e us nought but grief an' pain, -For promis'd joy!

          - -

          But by ending each line with two spaces you can force a line break as follows:

          - -

          The best laid schemes o' Mice an' Men,
          -Gang aft agley,
          -An' lea'e us nought but grief an' pain,
          -For promis'd joy!

          - -

          Horizontal Rules

          - -

          Horizontal rules can be created by placing three or more asterisks (*), hyphens (-) or underscores (_) on a line by themselves.

          - -

          This will work:

          - -

          ***

          - -

          but you can add spaces or further characters to make it more obviously a section break in the text editing window e.g.

          - -

          * * * * *

          - -

          -------------------------

          - -

          _ _ _ _ _

          - -

          All of these methods give the exact same result:

          - -
          - -

          Hyperlinked Images

          - -

          The Enhancing Text With Markdown document gives instructions for creating web links and inserting images. It may not be obvious that these can be combined to create images that are also clickable links.

          - -

          [the google search engine][google]

          - -

          ![the google logo][logo]

          - -

          Above are a standard web link and image. By placing the image where the link text would be found you end up with this:

          - -

          [![the google logo][logo]][google]

          - -

          This line above, in combination with the following link definitions elsewhere in the document:

          - -

          [logo]: http://www.google.com/images/logo.gif
          -[google]: http://www.google.com/ "click to visit Google.com"

          - -

          combine to produce the following clickable image link (with tooltip if you hover over it):

          - -

          the google logo

          - -

          An example of where this technique might be handy is in linking small 'thumbnail' images to downloads of the larger photos.

          - -

          Embedding HTML

          - -

          If you are already proficient in HTML then there may be occasions when Markdown does not allow you as much control as you are used to. Luckily Markdown is designed for this eventuality and allows you to embed HTML directly within Markdown formatted text.

          - -

          * <small>small text</small>
          - -* <big>big text</big>

          - -
            -
          • small text
          • -
          • big text
          • -
          - -

          Note that the HTML markup co-exists with the Markdown code for bullet lists. This frees you from the mundane task of writing complex HTML for basic formatting features such as paragraphs and lists while still allowing you to access the full power of HTML in specific situations.

          - -

          Displaying HTML or Preformatted Text

          - -

          If, unlike in the section above, you wish the HTML you enter to be displayed exactly as you typed it, rather than processed as HTML then you can start each line with four space characters.

          - -
          <p>A paragraph in <b>HTML</b> displayed as code</p>
          -
          - -

          This also works for displaying computer code:

          - -
          print "Command-line arguments: (@ARGV)\n";
          -
          - -

          As this formatting is often used for computer program listings and other text which may plausibly contain the characters that Markdown uses to indicate different types of formatting, Markdown's formatting is switched off for these lines:

          - -
          Normally this word would be **bold**.
          -
          - -

          To include such characters within normal text, see the section below.

          - -

          Using Special Characters

          - -

          If you wish to use any of the special characters that trigger Markdown formatting without them being processed simply precede them with a backslash character (\). This is known as 'escaping' a character. The backslash is not displayed but the character immediately following it is shown, exactly as entered.

          - -

          \*asterisks, not emphasis\*

          - -

          becomes

          - -

          *asterisks, not emphasis*

          - -

          rather than

          - -

          *emphasis, not asterisks*

          - -

          which gives

          - -

          emphasis, not asterisks

          - -

          Further Reading

          - -

          The Markdown system is not unique to Moodle, it is used in an ever increasing number of web publishing tools. You can find out more about it at http://daringfireball.net/projects/markdown/

          -
          diff --git a/lang/en/help/advancedsettings.html b/lang/en/help/advancedsettings.html deleted file mode 100644 index 75c59df7e19..00000000000 --- a/lang/en/help/advancedsettings.html +++ /dev/null @@ -1,8 +0,0 @@ -

          Advanced settings

          - -

          Selecting any of these check boxes will cause the corresponding options - to be hidden from teachers by default.

          - -

          However, they will still be able to access these "Advanced settings" - using a button on the editing page for this module. -

          diff --git a/lang/en/help/assignment/assignmenttype.html b/lang/en/help/assignment/assignmenttype.html index 58ea3637a03..6b3689764fa 100644 --- a/lang/en/help/assignment/assignmenttype.html +++ b/lang/en/help/assignment/assignmenttype.html @@ -1,13 +1,13 @@ -

          Assignment Type

          +

          Assignment Type

          -

          There are different types of assignments

          +

          There are different types of assignments

          -

          Offline activity - this is useful when the assignment is performed outside +

          Offline activity - this is useful when the assignment is performed outside of Moodle. Students can see a description of the assignment, but can't upload files or anything. -Teachers can grade all students though, and students will see notifications of their grades.

          +Teachers can grade all students though, and students will see notifications of their grades. -

          Upload a single file - this type of assignment allows all students to upload a +

          Upload a single file - this type of assignment allows all students to upload a single file, of any type. This might be a Word processor document, or an image, a zipped web site, or anything you ask them to submit. Teachers can grade submitted -assignments online.

          +assignments online. diff --git a/lang/en/help/assignment/index.html b/lang/en/help/assignment/index.html index 12b7b01985a..4bcff27b45d 100644 --- a/lang/en/help/assignment/index.html +++ b/lang/en/help/assignment/index.html @@ -1 +1,5 @@ -

          Assignments

          \ No newline at end of file +

          Assignments

          + diff --git a/lang/en/help/assignment/mods.html b/lang/en/help/assignment/mods.html index eb91c905e40..7946305782b 100644 --- a/lang/en/help/assignment/mods.html +++ b/lang/en/help/assignment/mods.html @@ -1,7 +1,7 @@ -

           Assignments

          -
          -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. -
          +

           Assignments

          +
            +

            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.

            +
          diff --git a/lang/en/help/assignment/resubmit.html b/lang/en/help/assignment/resubmit.html index 853ffc7b6f4..1d4d3b178ed 100644 --- a/lang/en/help/assignment/resubmit.html +++ b/lang/en/help/assignment/resubmit.html @@ -1,9 +1,9 @@ -

          Resubmitting assignments

          +

          Resubmitting assignments

          -

          By default, students cannot resubmit assignments once the teacher has graded them

          +

          By default, students cannot resubmit assignments once the teacher has graded them

          -

          If you turn this option on, then students will be allowed to resubmit assignments +

          If you turn this option on, then students will be allowed to resubmit assignments after they have been graded (for you to re-grade). This may be useful if the - teacher wants to encourage students to do better work in an iterative process.

          + teacher wants to encourage students to do better work in an iterative process.

          -

          Obviously, this option is not relevant for offline assignments.

          +

          Obviously, this option is not relevant for offline assignments.

          diff --git a/lang/en/help/attendance/index.html b/lang/en/help/attendance/index.html index 0a06a075120..dec3631f45a 100644 --- a/lang/en/help/attendance/index.html +++ b/lang/en/help/attendance/index.html @@ -1 +1 @@ -

          Attendance

          \ No newline at end of file +

          Attendance

          \ No newline at end of file diff --git a/lang/en/help/attendance/mods.html b/lang/en/help/attendance/mods.html index 13804a0470e..5f0e4a307cc 100644 --- a/lang/en/help/attendance/mods.html +++ b/lang/en/help/attendance/mods.html @@ -1,5 +1,5 @@ -

           Attendance

          -
          -This module allows you to record the attendance of each participant in an on-site or on-line class session. Attendance can be logged manually by any teacher in the course, or automatically based on participant activity within the twenty-four hour period of the attendance date. -
          +

           Attendance

          +
            +

            This module allows you to record the attendance of each participant in an on-site or on-line class session. Attendance can be logged manually by any teacher in the course, or automatically based on participant activity within the twenty-four hour period of the attendance date.

            +
          diff --git a/lang/en/help/chat/chatting.html b/lang/en/help/chat/chatting.html index ffd255a2c1f..0f36f4c09c4 100644 --- a/lang/en/help/chat/chatting.html +++ b/lang/en/help/chat/chatting.html @@ -5,7 +5,7 @@
          Smilies
          Any smiley faces (emoticons) that you can type elsewhere in Moodle - can also be typed in here and they will be displayed correctly. For example, :-) =
          + can also be typed in here and they will be displayed correctly. For example, :-) =
          Links
          Internet addresses will be turned into links automatically.
          diff --git a/lang/en/help/chat/index.html b/lang/en/help/chat/index.html index b9aeb82e22d..f0646db4600 100644 --- a/lang/en/help/chat/index.html +++ b/lang/en/help/chat/index.html @@ -1,4 +1,4 @@

          Chat module

          diff --git a/lang/en/help/chat/mods.html b/lang/en/help/chat/mods.html index 02772dea386..1bc9dc0483a 100644 --- a/lang/en/help/chat/mods.html +++ b/lang/en/help/chat/mods.html @@ -1,9 +1,9 @@ -

           Chats

          -
          -The Chat module allows participants to have a real-time synchronous -discussion via the web. This is a useful way to get a different -understanding of each other and the topic being discussed - the mode -of using a chat room is quite different from the asynchronous forums. -The Chat module contains a number of features for managing and -reviewing chat discussions. -
          +

           Chats

          +
            +

            The Chat module allows participants to have a real-time synchronous + discussion via the web. This is a useful way to get a different + understanding of each other and the topic being discussed - the mode + of using a chat room is quite different from the asynchronous forums. + The Chat module contains a number of features for managing and + reviewing chat discussions.

            +
          diff --git a/lang/en/help/choice/index.html b/lang/en/help/choice/index.html index de85dbc9d0a..009f5c67e74 100644 --- a/lang/en/help/choice/index.html +++ b/lang/en/help/choice/index.html @@ -1 +1,4 @@ -

          Choices

          \ No newline at end of file +

          Choices

          + diff --git a/lang/en/help/choice/limit.html b/lang/en/help/choice/limit.html deleted file mode 100644 index 7cffcf78154..00000000000 --- a/lang/en/help/choice/limit.html +++ /dev/null @@ -1,11 +0,0 @@ -

          Choice Limit

          - -

          This option allows you to limit the number of participants - that can select each particular option.

          - -

          Once Limits have been enabled, each option can set a limit. - When the limit is reached then no-one else can select that option. - A limit of zero (0) means that no-one can select that choice.

          - -

          If Limits are disabled then any number of participants can - select any of the options.

          diff --git a/lang/en/help/choice/mods.html b/lang/en/help/choice/mods.html index d991e31c1e4..942278ab6b9 100644 --- a/lang/en/help/choice/mods.html +++ b/lang/en/help/choice/mods.html @@ -1,7 +1,7 @@ -

           Choices

          -
          -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. -
          +

           Choices

          +
            +

            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. +

          diff --git a/lang/en/help/choice/options.html b/lang/en/help/choice/options.html index 30779adc564..adf2e81fed0 100644 --- a/lang/en/help/choice/options.html +++ b/lang/en/help/choice/options.html @@ -1,6 +1,7 @@ -

          Choice options

          +

          Choice options

          -

          Here is where you specify the options that participants - have to choose from.

          +

          Here is where you specify the options that participants + have to choose from. -

          You can fill in any number of these: it's OK to leave some blank.

          +

          You can fill in any number of these: it's OK to leave some blank + if you don't need the full 6 options. diff --git a/lang/en/help/choice/timerestrict.html b/lang/en/help/choice/timerestrict.html index c58b4540858..5134714c330 100644 --- a/lang/en/help/choice/timerestrict.html +++ b/lang/en/help/choice/timerestrict.html @@ -1,6 +1,6 @@

          Restrict times

          -

          This setting allows you to define a time window within which +

          This setting allows you to define a time window within which participants are allowed to make a choice.

          To set an open-ended close date just set the time very far in the future.

          diff --git a/lang/en/help/courseavailability.html b/lang/en/help/courseavailability.html index 2be7ee5c528..e2419299a52 100644 --- a/lang/en/help/courseavailability.html +++ b/lang/en/help/courseavailability.html @@ -1,6 +1,6 @@

          Course availability

          -

          This option allows you to "hide" your course +

          This option allows you to "hide" your course completely.

          It will not appear on any course listings, except to diff --git a/lang/en/help/coursecategory.html b/lang/en/help/coursecategory.html index a28a222ccb3..4c776f230ee 100644 --- a/lang/en/help/coursecategory.html +++ b/lang/en/help/coursecategory.html @@ -1,11 +1,11 @@ -

          Course Categories

          +

          Course Categories

          -

          Your Moodle administrator may have set up several - course categories.

          +

          Your Moodle administrator may have set up several + course categories. -

          For example, "Science", "Humanities", "Public Health" etc

          +

          For example, "Science", "Humanities", "Public Health" etc -

          Choose the one most applicable for your course. This +

          Choose the one most applicable for your course. This choice will affect where your course is displayed on the course listing and may make it easier for students to - find your course.

          + find your course. diff --git a/lang/en/help/courseformats.html b/lang/en/help/courseformats.html index 77f4ab8934c..2cc26c4ac05 100644 --- a/lang/en/help/courseformats.html +++ b/lang/en/help/courseformats.html @@ -1,24 +1,24 @@ -

          Moodle course formats

          +

          Moodle course formats

          -

          Weekly format

          -
            +

            Weekly format

            +
              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. -
            +
          -

          Topics format

          -
            +

            Topics format

            +
              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. -
            +
          -

          Social format

          -
            +

            Social format

            +
              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. -
            +
          diff --git a/lang/en/help/coursefullname.html b/lang/en/help/coursefullname.html index 74a58f12e7a..171de93fac5 100644 --- a/lang/en/help/coursefullname.html +++ b/lang/en/help/coursefullname.html @@ -1,4 +1,4 @@ -

          Course Full name

          +

          Course Full name

          -

          The full name of the course is displayed at the top of the screen and in the course listings.

          +

          The full name of the course is displayed at the top of the screen and in the course listings.

          diff --git a/lang/en/help/coursegrades.html b/lang/en/help/coursegrades.html index 1d5d82c285d..1e4a70ba9ca 100644 --- a/lang/en/help/coursegrades.html +++ b/lang/en/help/coursegrades.html @@ -1,6 +1,6 @@

          Grades

          -

          Many of the activities allow grades to be set.

          +

          Many of the activities allow grades to be set.

          By default, the results of all grades within the course can be seen in the Grades page, available diff --git a/lang/en/help/coursehiddensections.html b/lang/en/help/coursehiddensections.html index 046eee2a586..624032e6c73 100644 --- a/lang/en/help/coursehiddensections.html +++ b/lang/en/help/coursehiddensections.html @@ -1,6 +1,6 @@

          Course hidden sections

          -

          This option allows you to decide how the hidden sections in your course +

          This option allows you to decide how the hidden sections in your course are displayed to students.

          By default, a small area is shown (in collapsed form, usually gray) to diff --git a/lang/en/help/courseidnumber.html b/lang/en/help/courseidnumber.html index 90ac5d82150..fa91bb9330f 100644 --- a/lang/en/help/courseidnumber.html +++ b/lang/en/help/courseidnumber.html @@ -1,6 +1,6 @@ -

          Course ID Number

          +

          Course ID Number

          -

          The ID number of a course is only used when matching this course against +

          The ID number of a course is only used when matching this course against external systems - it is never displayed within Moodle. If you have an official code name for this course then use it here ... otherwise you can leave it blank.

          diff --git a/lang/en/help/coursenewsitems.html b/lang/en/help/coursenewsitems.html index 95bfb5460f6..a9c18ea8e10 100644 --- a/lang/en/help/coursenewsitems.html +++ b/lang/en/help/coursenewsitems.html @@ -1,15 +1,15 @@ -

          Course News Items

          +

          Course News Items

          -

          A special forum called "News" appears in the +

          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.)

          + email.) -

          This setting determines how many recent items +

          This setting determines how many recent items appear on your course home page, in a news box - down the right-hand side.

          + down the right-hand side. -

          If you set it to "0 news items" then the news - box won't even appear.

          +

          If you set it to "0 news items" then the news + box won't even appear. diff --git a/lang/en/help/coursenumsections.html b/lang/en/help/coursenumsections.html index 6bd24d779f9..c117bb77e39 100644 --- a/lang/en/help/coursenumsections.html +++ b/lang/en/help/coursenumsections.html @@ -1,14 +1,14 @@ -

          Course Number of Weeks/Topics

          +

          Course Number of Weeks/Topics

          -

          This setting is only used by the 'weekly' and 'topics' - course formats.

          +

          This setting is only used by the 'weekly' and 'topics' + course formats. -

          In the 'weekly' format, it specifies the number of weeks +

          In the 'weekly' format, it specifies the number of weeks that the course will run for, starting from the - course starting date.

          + course starting date. -

          In the 'topics' format, it specifies the number of topics - in the course.

          +

          In the 'topics' format, it specifies the number of topics + in the course. -

          Both of these translate to the number of "boxes" down the - middle of the course page.

          +

          Both of these translate to the number of "boxes" down the + middle of the course page. diff --git a/lang/en/help/courserecent.html b/lang/en/help/courserecent.html index d0a3d440830..19add5ac72e 100644 --- a/lang/en/help/courserecent.html +++ b/lang/en/help/courserecent.html @@ -1,16 +1,16 @@ -

          Recent Activity

          +

          Recent Activity

          -

          Moodle can display "recent activity" on the course home page.

          +

          Moodle can display "recent activity" on the course home page. -

          This shows the everything that has happened in the course since +

          This shows the everything that has happened in the course since the last time the viewer logged in to the course, including -new posts, new users, submitted journals etc.

          +new posts, new users, submitted journals etc. -

          It is highly recommended you leave this feature enabled in +

          It is highly recommended you leave this feature enabled in your courses, as it helps give a sense of activity in the course. Knowing what everyone else is doing also helps to promote a -collaborative atmosphere in the class.

          +collaborative atmosphere in the class. -

          You might want to disable this feature for extremely large or +

          You might want to disable this feature for extremely large or heavily used courses, as it may slow down the display of -the course page.

          +the course page. diff --git a/lang/en/help/coursereports.html b/lang/en/help/coursereports.html index 4a0146c19c3..69ae4bb4972 100644 --- a/lang/en/help/coursereports.html +++ b/lang/en/help/coursereports.html @@ -1,6 +1,6 @@

          Activity Reports

          -

          Activity reports are available for each participant +

          Activity reports are available for each participant that show their activity in the current course. As well as listings of their contributions, these reports include detailed access logs.

          diff --git a/lang/en/help/courseshortname.html b/lang/en/help/courseshortname.html index 584fcff5d44..8c3bda062d4 100644 --- a/lang/en/help/courseshortname.html +++ b/lang/en/help/courseshortname.html @@ -1,7 +1,7 @@ -

          Course short name

          +

          Course short name

          -

          Many institutions have a shorthand way of referring to a course, such as +

          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).

          + isn't appropriate (such us in the subject line of email).

          diff --git a/lang/en/help/coursestartdate.html b/lang/en/help/coursestartdate.html index 030a8a19afd..b843fdb383d 100644 --- a/lang/en/help/coursestartdate.html +++ b/lang/en/help/coursestartdate.html @@ -1,19 +1,19 @@ -

          Course Start Date

          +

          Course Start Date

          -

          This is where you specify the starting time of the - course (in your own timezone).

          +

          This is where you specify the starting time of the + course (in your own timezone). -

          If you are using a 'weekly' course format, this will +

          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.

          + start on the date you set here. -

          This setting will not affect courses using the - 'social' or 'topics' formats.

          +

          This setting will not affect courses using the + 'social' or 'topics' formats. -

          However, one place this setting will be affect is +

          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.

          + possible date you can display. -

          In general, if your course does have a real starting date +

          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.

          + what course formats you are using. diff --git a/lang/en/help/courseuploadsize.html b/lang/en/help/courseuploadsize.html index 573c0ce3bd6..ae4ab3b0b4f 100644 --- a/lang/en/help/courseuploadsize.html +++ b/lang/en/help/courseuploadsize.html @@ -1,8 +1,8 @@ -

          Course upload size

          +

          Course upload size

          -

          This setting defines the largest size of file that can be +

          This setting defines the largest size of file that can be uploaded by students in this course, limited by the site - wide setting created by the administrator.

          + wide setting created by the administrator. -

          It is possible to further restrict this size through - settings within each activity module.

          +

          It is possible to further restrict this size through + settings within each activity module. diff --git a/lang/en/help/dialogue/index.html b/lang/en/help/dialogue/index.html index c4d56bef213..73a65e6cafb 100644 --- a/lang/en/help/dialogue/index.html +++ b/lang/en/help/dialogue/index.html @@ -1,12 +1,10 @@ -

          Dialogues

          - - - +

          Dialogues

          + diff --git a/lang/en/help/dialogue/info.html b/lang/en/help/dialogue/info.html index 0fac46b6aaa..e5c19ef9e5c 100644 --- a/lang/en/help/dialogue/info.html +++ b/lang/en/help/dialogue/info.html @@ -1,4 +1,4 @@ - Dialogues

          + Dialogues

          This module provides a simple communication method between pairs of users. A teacher can open an dialogue with a student, a student can open @@ -30,6 +30,5 @@ students in their own group (assuming the dialogue allows student-to-student dialogues). In this mode students who are not in any group do not see any other students. -

          diff --git a/lang/en/help/dialogue/maildefault.html b/lang/en/help/dialogue/maildefault.html index aae9c441545..b0c1b34184c 100644 --- a/lang/en/help/dialogue/maildefault.html +++ b/lang/en/help/dialogue/maildefault.html @@ -1,4 +1,4 @@ -

          Set Mail Notification

          +

          Set Mail Default

          This option controls whether notification messages are sent. If this option is set to "Yes" a short email is sent to the recipient of a new entry. The email message does not contain the text of the entry, diff --git a/lang/en/help/dialogue/mods.html b/lang/en/help/dialogue/mods.html index 538b445ec1c..43c3800db30 100644 --- a/lang/en/help/dialogue/mods.html +++ b/lang/en/help/dialogue/mods.html @@ -1,8 +1,8 @@ -

           Dialogues

          -
          -This module provides a simple communication method between pairs of users. -teacher can open an dialogue with a student, a student can open -dialogue with a teacher, and (optionally) a student can open a -dialogue with another student. A teacher or student can be involved -in many on-going dialogues at any time. -
          +

           Dialogues

          +
            +

            This module provides a simple communication method between pairs of users. + A teacher can open an dialogue with a student, a student can open + a dialogue with a teacher, and (optionally) a student can open a + dialogue with another student. A teacher or student can be involved + in many on-going dialogues at any time.

            +
          diff --git a/lang/en/help/directorypaths.html b/lang/en/help/directorypaths.html index 79e4a394c1b..4ff2285b2a4 100644 --- a/lang/en/help/directorypaths.html +++ b/lang/en/help/directorypaths.html @@ -6,15 +6,15 @@

          In Windows Systems use something like:

            -
          • c:\program files\data\moodle
          • -
          • c:\documents and settings\moodle\temp\saved
          • +
          • c:\program files\data\moodle +
          • c:\documents and settings\moodle\temp\saved

          In Unix Systems use something like:

            -
          • /usr/data/moodle
          • -
          • /home/moodle/tmp/saved
          • +
          • /usr/data/moodle +
          • /home/moodle/tmp/saved

          diff --git a/lang/en/help/emoticons.html b/lang/en/help/emoticons.html index 8affc80edd1..97a5ee8be1f 100644 --- a/lang/en/help/emoticons.html +++ b/lang/en/help/emoticons.html @@ -1,120 +1,120 @@ -

          Using Smilies (emoticons)

          +

          Using Smilies (emoticons)

          - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
          smile:-):-)
          big grin:-D:-D
          wink;-);-)
          mixed:-/:-/
          thoughtful V-.
          tongue out:-P:-P
          coolB-)B-)
          approve^-)^-)
          wide eyes8-)8-)
          surprise8-o8-o
          - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
          sad:-(:-(
          shy8-.8-.
          blush:-I:-I
          kisses:-X:-X
          clown:o):o)
          black eyeP-|P-|
          angry8-[8-[
          deadxx-Pxx-P
          sleepy|-.|-.
          evil}-]}-]
          -

          When writing online, it can sometimes difficult to express emotion with plain text. - These little icons can help.

          +

          When writing online, it can sometimes difficult to express emotion with plain text. + These little icons can help. -

          To insert these icons in your text: just click the icon above, or type the associated text code directly in your text.

          +

          To insert these icons in your text: just click the icon above, or type the associated text code directly in your text.

          -

          Note that the codes themselves are like little pictures - just turn your head to the left when looking at them

          +

          Note that the codes themselves are like little pictures - just turn your head to the left when looking at them

          diff --git a/lang/en/help/enrolmentkey.html b/lang/en/help/enrolmentkey.html index a31358a9f2a..609bcaaf76f 100644 --- a/lang/en/help/enrolmentkey.html +++ b/lang/en/help/enrolmentkey.html @@ -1,23 +1,23 @@ -

          Course Enrolment Key

          +

          Course Enrolment Key

          -

          A course enrolment key is what keeps unwanted people - out of your course.

          +

          A course enrolment key is what keeps unwanted people + out of your course. -

          If you leave this blank, then anyone who has created +

          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.

          + in your course simply by going in to it. -

          If you put something here, then students who are trying +

          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.

          + this word or phrase. -

          The idea is that you will supply the key to authorised +

          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.

          + on the phone or even verbally in a face to face class. -

          If this password "gets out" and you have unwanted people +

          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.

          + able to get back in. diff --git a/lang/en/help/enrolperiod.html b/lang/en/help/enrolperiod.html index 33f993f1c1b..c55f4aec63d 100644 --- a/lang/en/help/enrolperiod.html +++ b/lang/en/help/enrolperiod.html @@ -11,5 +11,3 @@ in this course until they are manually unenrolled or the clean-up function to remove defunct students takes effect.

          -

          If you have selected to manage this course as a meta course, - your enrolment period will not be used.

          \ No newline at end of file diff --git a/lang/en/help/exercise/administration.html b/lang/en/help/exercise/administration.html index 5b9f89cf22f..cd3dab9bfb7 100644 --- a/lang/en/help/exercise/administration.html +++ b/lang/en/help/exercise/administration.html @@ -1,33 +1,33 @@ -

          Administration Page

          +

          Administration Page

          -

          This page allows the teacher to see the one or more descriptions for the +

          This page allows the teacher to see the one or more descriptions for the Exercise, the student assessments and the student submissions. These items can be retitled, viewed or deleted by using the various links on the page. - The page also shows which piece of works have been submitted after the + The page also shows which piece of works have been submitted after the deadline, that is those submitted late.

          The first table on this screen shows the teacher's submission(s). Normally - there is only one. This is the description of the exercise, it will + there is only one. This is the decsription of the exercise, it will normally contain instructions on what work should be done. If the teacher - has submitted more then one description they are listed here. Note that - once the Exercise is underway these submissions should NOT be + has submitted more then one description they are listed here. Note that + once the Exercise is underway these submissions should NOT be deleted. It is, however, safe to delete the teacher submissions while the Exercise is still in the Set Up phase.

          -

          The second table shows the student's (initial) assessment of their own work. - It shows the grade the student has given their work. If the teacher has - assessed the work, this table will also contain the "grading - grade" awarded to his assessment. This grade reflects how well the - student's assessment agrees with the teacher's assessment. The student's - assessment can be viewed. There is link on that page to change the grading +

          The second table shows the student's (initial) assessment of their own work. + It shows the grade the student has given their work. If the teacher has + assessed the work, this table will also contain the "grading + grade" awarded to his assessment. This grade reflects how well the + student's assessment agrees with the teacher's assessment. The student's + assessment can be viewed. There is link on that page to change the grading grade should the teacher wish to do so.

          -

          The third table lists the submissions and their grades if the teacher has - assessed them. Submissions can be regraded or safely deleted. An asterisk - (*) against a submission means that the student is allow to submit another - piece of work. For a particular student, this option can be easily changed - by simply re-assessing their submission and clicking on the appropriate - button at the foot of the assessment page, the assessment itself need not - be changed. Late work is shown with the date submitted in red. The late +

          The third table lists the submissions and their grades if the teacher has + assessed them. Submissions can be regraded or safely deleted. An asterix + (*) against a submission means that the student is allow to submit another + piece of work. For a particular student, this option can be easily changed + by simply re-assessing their submission and clicking on the appropriate + button at the foot of the assessment page, the assessment itself need not + be changed. Late work is shown with the date submitted in red. The late flag can be cleared by clicking on the link.

          diff --git a/lang/en/help/exercise/comparisonofassessments.html b/lang/en/help/exercise/comparisonofassessments.html index e8f2f91829e..46c215db5b2 100644 --- a/lang/en/help/exercise/comparisonofassessments.html +++ b/lang/en/help/exercise/comparisonofassessments.html @@ -1,68 +1,68 @@

          Comparison of Assessments

          -

          In an exercise it is usual for a piece of work to be assessed twice. A - student assesses their work before submitting it and the teacher then - (re)assesses the work. The teacher's assessment uses the student's +

          In an exercise it is usual for a piece of work to be assessed twice. A + student assesses their work before submitting it and the teacher then + (re)assesses the work. The teacher's assessment uses the student's assessment as the starting point. An exercise allows the teacher to award - a proportion of the grade to the student's assessment, the remainder of - the grade is allocated to the teacher's assessment of the work. (The - maximum grades for these are called "Grade for Student + a proportion of the grade to the student's assessment, the remainder of + the grade is allocated to the teacher's assessment of the work. (The + maximum grades for these are called "Grade for Student Assessments" and "Grade for Submissions" respectively.) Note - that the grade from the student's assessment is not used. The student's - assessment is given a grade based on how well it matches the teacher's + that the grade from the student's assessment is not used. The student's + assessment is given a grade based on how well it matches the teacher's assessment.

          -

          The degree of agreement between the student's and teacher's assessment is - based on the differences between the scores in individual elements +

          The degree of agreement between the student's and teacher's assessment is + based on the differences between the scores in individual elements (actually the squared differences are used). The mean of these differences - must to converted into a meaningful grade. The "Comparison of - Assessments" option allows the teacher a degree of control on how + must to converted into a meaningful grade. The "Comparison of + Assessments" option allows the teacher a degree of control on how these comparisons are converted into grades.

          -

          To get some idea on what effect this option has, take the (fairly simple) - case of an assessment which has ten Yes/No questions. For example the - assessment might use questions like "Is the chart correctly formatted?", - "Is the calculated profit $100.66?", etc. Assume there are ten such - questions. When the "Very Lax" setting is chosen, prefect +

          To get some idea on what effect this option has, take the (fairly simple) + case of an assessment which has ten Yes/No questions. For example the + assessment might use questions like "Is the chart correctly formatted?", + "Is the calculated profit $100.66?", etc. Assume there are ten such + questions. When the "Very Lax" setting is chosen, prefect agreement between the student's and teacher's assessment gives a grade of - 100%, if there is only one question which does not match the grade is 90%, - two disagreements give a grade of 80%, three - disagreements 70%, etc.. That might seem very reasonable and you might be thinking - why is this option called a "Very Lax" comparison. Well, consider - the case of a student doing a completely random assessment where the - answers of the ten questions are simply - guessed. On average this would result in five of the ten questions being + 100%, if there is only one question which does not match the grade is 90%, + two disagreements give a grade of 80%, three + disagreements 70%, etc.. That might seem very reasonable and you might be thinking + why is this option called a "Very Lax" comparison. Well, consider + the case of a student doing a completely random assessment where the + answers of the ten questions are simply + guessed. On average this would result in five of the ten questions being matched. So the "monkey's" assessment would get a grade of around - 50%. The situation gets a little more sensible with the "Lax" - option, then - the random assessment gets around 20%. When the "Fair" option is - chosen, random guessing will result in a zero grade most of the - time. At this level, a grade of 50% is given when the two assessments agree - on eight questions of the ten. If three questions are in disagreement then - the grade given is 25%. When the option is set to "Strict" having - two questions out of sync gives a grade of 40%. Moving into the "Very - Strict" territory a disagreement in just two questions drops the grade to + 50%. The situation gets a little more sensible with the "Lax" + option, then + the random assessment gets around 20%. When the "Fair" option is + chosen, random guessing will result in a zero grade most of the + time. At this level, a grade of 50% is given when the two assessments agree + on eight questions of the ten. If three questions are in disagreement then + the grade given is 25%. When the option is set to "Strict" having + two questions out of sync gives a grade of 40%. Moving into the "Very + Strict" territory a disagreement in just two questions drops the grade to 35% and having a single question in disagreement gives a grade of 65%.

          -

          This example is sightly artificial as most assessments usually have elements - which have a range of values rather than just Yes or No. In those cases the +

          This example is sightly artifical as most assessments usually have elements + which have a range of values rather than just Yes or No. In those cases the comparison is likely to result in somewhat higher grades then the values - indicated above. The various levels (Very Lax, Lax, Fair...) are given so + indicated above. The various levels (Very Lax, Lax, Fair...) are given so that the teacher can fine tune the comparisons. If they feel that the grades - being given for assessments are too low then this option should be moved - towards the "Lax" or even "Very Lax" choices. And - alternatively, if the grades for the student's assessments are, in general, - felt to be too high this option should be moved to either the - "Strict" or "Very Strict" choices. It is really a - matter of trial and error with the best starting point being the + being given for assessments are too low then this option should be moved + towards the "Lax" or even "Very Lax" choices. And + alternatively, if the grades for the student's assessments are, in general, + felt to be too high this option should be moved to either the + "Strict" or "Very Strict" choices. It is really a + matter of trial and error with the best starting point being the "Fair" option.

          During the course of the exercise the teacher may feel that the grades given to the student assessments are either too high or too low. These grades are shown on the exercise's Administration Page. In this case, the teacher can change the setting of this option and re-calculate the student assessment - grades (the "Grading Grades"). The re-calculation is done by + grades (the "Grading Grades"). The re-calculation is done by clicking the "Re-grade Student Assessments" link found on the - administration page of the exercise. This can be safely performed at any + administration page of the exercise. This can be safely performed at any time in the exercise.

          diff --git a/lang/en/help/exercise/elements.html b/lang/en/help/exercise/elements.html index 1ce1033be93..95ed8dacdf0 100644 --- a/lang/en/help/exercise/elements.html +++ b/lang/en/help/exercise/elements.html @@ -1,71 +1,71 @@ -

          Assessment Elements

          +

          Assessment Elements

          -

          For ease of grading, a Exercise Assessment should have a reasonable - number of "Assessment Elements". Each element should cover - a particular aspect of the assessment. Typically an assessment will have - something between 5 to 15 elements for comments and grading, the - actual number depending on the size and complexity of the assignment. A peer - assignment with only one element is allowed and has a similar assessment - strategy to the standard Moodle Assignment.

          +

          For ease of grading, a Exercise Assessment should have a reasonable + number of "Assessment Elements". Each element should cover + a particular aspect of the assessment. Typically an assessment will have + something between 5 to 15 elements for comments and grading, the + actual number depending on the size and complexity of the assignment. A peer + assignment with only one element is allowed and has a similar assessment + strategy to the standard Moodle Assignment. + +

          The type of elements dependent on the assignment's grading strategy. -

          The type of elements dependent on the assignment's grading strategy.

          - -

          Not Graded. The elements are descriptions of aspects of the assignment. - The assessor is asked to comment on each of these aspects. As with all the grading - strategies, there is also an area for general comments.

          +

          Not Graded. The elements are descriptions of aspects of the assignment. + The assessor is asked to comment on each of these aspects. As with all the grading + strategies, there is also an area for general comments. -

          Accumulative Grading. The elements have the following three features:

          -
            -
          1. The DESCRIPTION of the assessment element. This should clearly state what - aspect of the assignment is being assessed. If the assessment is qualitative - it is helpful to give details of what is considered excellent, average - and poor.
          2. +

            Accumulative Grading. The elements have the following three features: +

              +
            1. The DESCRIPTION of the assessment element. This should clearly state what + aspect of the assignment is being assessed. If the assessment is qualatative + it is helpful to give details of what is considered excellent, average + and poor. + +
            2. The SCALE of the assessment element. There are a number of prefined + scales. These range from simple Yes/No scales, through multipoint scales to + a full percentage scale. Each element has its own scale which should be choosen + to fit the number of possible variations for that element. Note that the scale + does NOT determine the element's importance when calculating the overall + grade, a two point scale has the same "influence" as a 100 point + scale if the respective elements have the same weight...

              -
            3. The SCALE of the assessment element. There are a number of predefined - scales. These range from simple Yes/No scales, through multipoint scales to - a full percentage scale. Each element has its own scale which should be chosen - to fit the number of possible variations for that element. Note that the scale - does NOT determine the element's importance when calculating the overall - grade, a two point scale has the same "influence" as a 100 point - scale if the respective elements have the same weight...

              - -

              If custom scales are set up in the course, these can be used. Note, +

              If custom scales are set up in the course, these can be used. Note, however, that this type of scale is used as a multi-point scale and that - only the first and last items of the scale are shown. For example, if the + only the first and last items of the scale are shown. For example, if the custom scale "Very Wet, Wet, Damp, Dry" is created in the course, - this can be used and it will be shown as a four point scale labeled - "Very Wet" at one end of the scale and "Dry" at the - other.

            4. + this can be used and it will be shown as a four point scale labeled + "Very Wet" at one end of the scale and "Dry" at the + other.

              -
            5. The WEIGHT of the assessment element. By default the elements are given the same - importance when calculating the overall grade of the assignment. Weights can - be assigned negative values, this is an experimental feature.
            6. -
            -

            Error Banded Grading. The elements will normally describe certain items - or aspects which must be present in the assignment. The assessment is made on +

          3. The WEIGHT of the assessment element. By default the elements are given the same + importance when calculating the overall grade of the assignment. Weights can + be assigned negative values, this is an experimental feature. +
          +

          Error Banded Grading. The elements will normally describe certain items + or aspects which must be present in the assignment. The assessment is made on the present or absence of these items or aspects. The teacher must all set of - grade table which give the suggested grades when all the items are present, - when one is absent, when two are absent, etc. If certain items are more + grade table which give the suggested grades when all the items are present, + when one is absent, when two are absent, etc. If certain items are more important than others then those items can be given a weighting greater than - one. Minor items can be given a weighting less than one. The overall - "error count" is a weighted sum of the missing items. The assessor - can always make a minor adjustment to these suggested grades.

          + one. Minor items can be given a weighting less than one. The overall + "error count" is a weighted sum of the missing items. The assessor + can always make a minor adjustment to these suggested grades. -

          Criterion Grading. The elements will give a set of "level" +

          Criterion Grading. The elements will give a set of "level" statements which can be used to rank the assignment. The statements may be cumulative or they may each be self contained. The assessor must decide which - statement best fits each piece of work. The teacher must also relate each + statement best fits each piece of work. The teacher must also relate each criterion statement with a suggested grade. These should normally be in order. - The assessor can make a minor adjustment to these suggested grades.

          + The assessor can make a minor adjustment to these suggested grades.

          -

          Rubric Grading. This is similar to Criterion Grading but there is more - than one criteria. The number of criteria is given in the assignment - parameters. Within each criterion there can be up to five "level" +

          Rubric Grading. This is similar to Criterion Grading but there is more + than one criteria. The number of criteria is given in the assignment + parameters. Within each criterion there can be up to five "level" statements. In a given assignment the number of levels can vary from criterion to criterion. When setting up a criterion a blank level statement signals the - end of the level statements. Thus some criteria may have two levels, others - have three, up to five levels. The criteria can be weighted. The levels are - scored 0, 1, 2, up to 4. The grade for the assessment is a weighted sum of + end of the level statements. Thus some criteria may have two levels, others + have three, up to five levels. The criteria can be weighted. The levels are + scored 0, 1, 2, up to 4. The grade for the assessment is a weighted sum of these scores. -

          +

          diff --git a/lang/en/help/exercise/finalgrades.html b/lang/en/help/exercise/finalgrades.html index e02132076f3..b32408925d2 100644 --- a/lang/en/help/exercise/finalgrades.html +++ b/lang/en/help/exercise/finalgrades.html @@ -1,11 +1,11 @@ -

          The Final Grades

          +

          The Final Grades

          The table on this screen lists the overall grades and their breakdown. The first grade is - the grade for the (initial) assessment. This is added to the grades given to each - submission. The final grade given for this assignment will either be - the average of these overall grades or the overall grade of the best submission.

          + the grade for the (inital) assessment. This is added to the grades given to each + submission. The final grade given for this assignment will either be + the average of these overall grades or the overall grade of the best submission. -

          The League table optionally lists the best submissions. The number of entries in - the table is set as one of the Exercise parameters. If that number is set to zero then - the League Table is not displayed. The table is in grade order with the best submission +

          The League table optionally lists the best submissions. The number of entries in + the table is set as one of the Exercise parameters. If that number is set to zero then + the League Table is not displayed. The table is in grade order with the best submission first. Only a student's best submission is shown in the table.

          diff --git a/lang/en/help/exercise/grading.html b/lang/en/help/exercise/grading.html index 7ae7818db14..23d376dffc8 100644 --- a/lang/en/help/exercise/grading.html +++ b/lang/en/help/exercise/grading.html @@ -1,46 +1,46 @@ -

          Grading of Assignments

          +

          Grading of Assignments

          In this Exercise the same Assessment Form is used by Students and Teachers - to assess the work produced. The form is used at different stages of the - exercise by the two groups, thus the explanation given here is divided into - two parts.

          - + to assess the work produced. The form is used at different stages of the + exercise by the two groups, thus the explaination given here is divided into + two parts.

          +

          For Students

          - -

          The assessment form is used mainly to show you how your work will be - assessed by the teacher. You are required to complete this form before - you can submit your work. You can use it as a checklist. The form is not - sent to the teacher when you save it. You can return to this form and amend it - (and your piece of work) as many times as you like provided you have - not submitted the work. Note that although you are allowed to, there - is no need to submit your work immediately after you have completely this form. - However, the contents of your assessment are frozen and made available to the - teacher when you submit your work.

          - -

          If the teacher requests that you make changes to your work and to re-submit - it, you will not be asked to re-assess your "new" piece of - work. You only make this assessment "first time round".

          - -

          This (initial) assessment of your work is compared to the teacher's + +

          The assessment form is used mainly to show you how your work will be + assessed by the teacher. You are required to complete this form before + you can submit your work. You can use it as a checklist. The form is not + sent to the teacher when you save it. You can return to this form and amend it + (and your piece of work) as many times as you like provided you have + not submitted the work. Note that although you are allowed to, there + is no need to submit your work immediately after you have completely this form. + However, the contents of your assessment are frozen and made available to the + teacher when you submit your work.

          + +

          If the teacher requests that you make changes to your work and to re-submit + it, you will not be asked to re-assess your "new" piece of + work. You only make this assessment "first time round".

          + +

          This (initial) assessment of your work is compared to the teacher's assessment of your work. The closer the two assessments match the higher - will be your "grading grade". This grade is usually a smaller + will be your "grading grade". This grade is usually a smaller grade than the grade you are given for your work. The final grade for the exercise is these two grades added together.

          -

          Once you have submitted your own work the teacher will grade it using the - same assessment form. You will be able to see their scores for your work - and their comments. Their grade will normally form the main part of the +

          Once you have submitted your own work the teacher will grade it using the + same assessment form. You will be able to see their scores for your work + and their comments. Their grade will normally form the main part of the final grade you receive from this Exercise.

          For the Teacher

          -

          The assessment form is used to grade the submissions of the students. - These grades normally form the major component of the students' final grade - for the exercise. The assessment, it's grade and any comments you make can - be viewed by the student who submitted the work. Once you have made the - assessment you should decide whether to allow the student to change and - re-submit their work, hopefully with improvements, or not.

          - -

          When you save an assessment you given a short period of time in which to - make any amendments before the assessment to "released" to - the student.

          +

          The assessment form is used to grade the submissions of the students. + These grades normally form the major component of the students' final grade + for the exercise. The assessment, it's grade and any comments you make can + be viewed by the student who submitted the work. Once you have made the + assessment you should decide whether to allow the student to change and + re-submit their work, hopefully with improvements, or not.

          + +

          When you save an assessment you given a short period of time in which to + make any amendments before the assessment to "released" to + the student.

          diff --git a/lang/en/help/exercise/gradinggrade.html b/lang/en/help/exercise/gradinggrade.html index 82adc022d2a..0f0bb1da83b 100644 --- a/lang/en/help/exercise/gradinggrade.html +++ b/lang/en/help/exercise/gradinggrade.html @@ -1,4 +1,4 @@ -

          Grade of Student Assessments

          +

          Grade of Student Assessments

          This is the maximum grade given to the assessments make by students of their own work. That is, the grade for their self assessments. The actual grades diff --git a/lang/en/help/exercise/gradingstrategy.html b/lang/en/help/exercise/gradingstrategy.html index fd872ec40cb..b563d99b96e 100644 --- a/lang/en/help/exercise/gradingstrategy.html +++ b/lang/en/help/exercise/gradingstrategy.html @@ -1,85 +1,86 @@ -

          Grading Strategy

          +

          Grading Strategy

          -

          An Exercise assignment is quite flexible in the type of grading scheme used. This can be:

          +

          An Exercise assignment is quite flexible in the type of grading scheme used. This can be: -

            -
          1. No grading: In this type of assignment the teacher is not - interested in quantitative assessment from the students at all. The students - make comments of the pieces of works but do not grade them. The teacher, - however, can, if desired, grade the student comments. These - "grading grades" form the basis of the students' final grades. - If the teacher does not grade the student assessments then the assignment - does not have any final grades.
          2. - -
          3. Accumulative grading: This is the default type of grading. - In this type of assignment the grade of each - assessment is made up of a number of "assessment elements". - Each element should cover - a particular aspect of the assignment. Typically an assignment will have - something between 5 to 15 elements for comments and grading, the - actual number depending on the size and complexity of the assignment. An - exercise assignment with only one element is allowed and has a similar assessment - strategy to the standard Moodle Assignment.
          4. - -

            Elements have the following three features:

            -
              -
            1. The DESCRIPTION of the assessment element. This should clearly state what - aspect of the assignment is being assessed. If the assessment is qualitative - it is helpful to give details of what is considered excellent, average - and poor.
            2. - -
            3. The SCALE of the assessment element. There are a number of predefined - scales. These range from simple Yes/No scales, through multipoint scales to - a full percentage scale. Each element has its own scale which should be chosen - to fit the number of possible variations for that element. Note that the scale - does NOT determine the element's importance when calculating the overall - grade, a two point scale has the same "influence" as a 100 point - scale if the respective elements have the same weight...

              - -

              If custom scales are set up in the course, these can be used. Note, +

                +
              1. No grading: In this type of assignment the teacher is not + interested in quantative assessment from the students at all. The students + make comments of the pieces of works but do not grade them. The teacher, + however, can, if desired, grade the student comments. These + "grading grades" form the basis of the students' final grades. + If the teacher does not grade the student assessments then the assignment + does not have any final grades. + +
              2. Accumulative grading: This is the default type of grading. + In this type of assignment the grade of each + assessment is made up of a number of "assessment elements". + Each element should cover + a particular aspect of the assignment. Typically an assignment will have + something between 5 to 15 elements for comments and grading, the + actual number depending on the size and complexity of the assignment. An + exercise assignment with only one element is allowed and has a similar assessment + strategy to the standard Moodle Assignment. + +

                Elements have the following three features: +

                  +
                1. The DESCRIPTION of the assessment element. This should clearly state what + aspect of the assignment is being assessed. If the assessment is qualatative + it is helpful to give details of what is considered excellent, average + and poor. + +
                2. The SCALE of the assessment element. There are a number of prefined + scales. These range from simple Yes/No scales, through multipoint scales to + a full percentage scale. Each element has its own scale which should be choosen + to fit the number of possible variations for that element. Note that the scale + does NOT determine the element's importance when calculating the overall + grade, a two point scale has the same "influence" as a 100 point + scale if the respective elements have the same weight...

                  + +

                  If custom scales are set up in the course, these can be used. Note, however, that this type of scale is used as a multi-point scale and that - only the first and last items of the scale are shown. For example, if the + only the first and last items of the scale are shown. For example, if the custom scale "Very Wet, Wet, Damp, Dry" is created in the course, - this can be used and it will be shown as a four point scale labeled - "Very Wet" at one end of the scale and "Dry" at the - other.

                3. + this can be used and it will be shown as a four point scale labeled + "Very Wet" at one end of the scale and "Dry" at the + other.

                  -
                4. The WEIGHT of the assessment element. By default the elements are given the same - importance when calculating the overall grade of the assignment. This can be - changed by giving the more importance elements a weight greater than one, and - the less important elements a weight below one. Changing the weights does NOT - effect the maximum grade, that value is fixed by the Maximum Grade parameter - of the peer assignment. Weights can be assigned negative values, this is an - experimental feature.
                5. -
                -
                -
              3. Error Banded Grading: In this type of assignment the submissions are - graded on a set of Yes/No scales. The grade is determined by the "Grade - Table " which gives the relationship between the number of - "errors" and the suggested grade. For example an assignment may have six - significant items which should be present, the Grade Table will give suggested - grades if all are present, one is absent, if two are absent, etc. The individual - items can, if desired, be given weighting factors if some items are more important - than others. The number of "errors" is a weighted sum of the items not - present. By default each item is given a weight of one. The grading table is likely - to be non-linear, for example - the suggested grades may be 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0% for - an assignment with 10 items.The assessor can adjust the suggested grade by up - to 20% either way to give the submission's final grade.
              4. +
              5. The WEIGHT of the assessment element. By default the elements are given the same + importance when calculating the overall grade of the assignment. This can be + changed by giving the more importance elements a weight greater than one, and + the less important elements a weight below one. Changing the weights does NOT + effect the maximum grade, that value is fixed by the Maximum Grade parameter + of the peer assignment. Weights can be assigned negative values, this is an + experimental feature. +
              -
            4. Criterion Grading: This is the simplest type of assessment to grade (although - not necessarily the most straightforward to set up). The submissions are - graded against a set of criteria statements. The assessor chooses which statement - best fits the piece of work. The grade is determined by a "Criteria - Table" which gives the suggested grade for each criterion. For example - an assignment may be set up with, say, five criteria statements and the assessors - must then choose one of the five statements for each of their assessments. As with - the Banded assignment the assessor can adjust the suggested grade by up to - 20% to give the final grade.
            5. +
            6. Error Banded Grading: In this type of assignment the submissions are + graded on a set of Yes/No scales. The grade is determined by the "Grade + Table " which gives the relationship between the number of + "errors" and the suggested grade. For example an assignment may have six + significant items which should be present, the Grade Table will give suggested + grades if all are present, one is absent, if two are absent, etc. The individual + items can, if desired, be given weighting factors if some items are more important + than others. The number of "errors" is a weighted sum of the items not + present. By default each item is given a weight of one. The grading table is likely + to be non-linear, for example + the sugested grades may be 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0% for + an assignment with 10 items.The assessor can adjust the suggested grade by up + to 20% either way to give the submission's final grade. + +
            7. Criterion Grading: This is simpliest type of assessment to grade (although + not necessarily the most straightforward to set up). The submissions are + graded against a set of criteria statments. The assessor choses which statement + best fits the piece of work. The grade is determined by a "Criteria + Table" which gives the suggested grade for each criterion. For example + an assignment may be set up with, say, five criteria statements and the assessors + must then choose one of the five statements for each of their assessments. As with + the Banded assignment the assessor can adjust the suggested grade by up to + 20% to give the final grade.
            8. Rubric This is a similar to Criterion Grading except there are multiple - sets of criteria. Each set covering a particular "Category", can have - up to five statements. The sets are given individual - weights and the grade is a weighted combination of the scores from each set. There - is no adjustment option in this assessment type.
            9. -
            + sets of criteria. Each set covering a particular "Category", can have + up to five statements. The sets are given individual + weights and the grade is a weighted combination of the scores from each set. There + is no adjustment option in this assessment type. +
          +

          diff --git a/lang/en/help/exercise/index.html b/lang/en/help/exercise/index.html index e754df1e954..ded7c42d1b5 100644 --- a/lang/en/help/exercise/index.html +++ b/lang/en/help/exercise/index.html @@ -1 +1,21 @@ -

          Exercises

          \ No newline at end of file +

          Exercises

          + diff --git a/lang/en/help/exercise/leaguetable.html b/lang/en/help/exercise/leaguetable.html index 9fb3472d142..7a34a713a8a 100644 --- a/lang/en/help/exercise/leaguetable.html +++ b/lang/en/help/exercise/leaguetable.html @@ -1,4 +1,4 @@ -

          League Table

          +

          League Table

          This option controls the display of a League Table at the end of the exercise. If displayed, the league table displays a list of the best pieces diff --git a/lang/en/help/exercise/leaguetablenames.html b/lang/en/help/exercise/leaguetablenames.html index 6adb1b57f60..fdc4188e5c0 100644 --- a/lang/en/help/exercise/leaguetablenames.html +++ b/lang/en/help/exercise/leaguetablenames.html @@ -1,4 +1,4 @@ -

          League Table Names

          +

          League Table Names

          This option controls whether the student's names are displayed in the League Table shown at the end of the exercise. By default names are not shown, diff --git a/lang/en/help/exercise/managing.html b/lang/en/help/exercise/managing.html index 7bbfae39e05..e0b6611dfa5 100644 --- a/lang/en/help/exercise/managing.html +++ b/lang/en/help/exercise/managing.html @@ -1,85 +1,85 @@ -

          Managing an Exercise Assignment

          +

          Managing an Exercise Assignment

          -

          An Exercise Assignment is slightly more complex than an ordinary assignment. - It involves three steps or phases. These are

          -
            -
          1. Set up Exercise The assessment of the work produced in the - exercise is made easier if it is broken into a number of assessment ELEMENTS. - This makes the grading of an assignment less - arbitrary and gives the students a framework on which to make assessments. - The teacher has the role of setting up the assessment elements thus making a - grading sheet. (See that page for more details.)

            +

            An Exercise Assignment is slightly more complex than an ordinary assignment. + It involves three steps or phases. These are +

              +
            1. Set up Exercise The assessment of the work produced in the + exercise is made easier if it is broken into a number of assessment ELEMENTS. + This makes the grading of an assignment less + arbitary and gives the students a framework on which to make assessments. + The teacher has the role of setting up the assessment elements thus making a + grading sheet. (See that page for more details.)

              + +

              With the assessment elements set up the teacher must submit a + Word Document or HTML file which describes the exercise or task to be done + by the students. This file is shown to the students in the second phase of + the exercise.

              + +

              Teachers can, if they wish, prepare a set of similar exercies, again as + Word Documents or HTML files, and upload those into the Exercise. Note that + these exercises must be quite similar as the same Assessment Form is used + for all of these variants. The submission of a multiple set of exercises by + the teacher is optional and for certain assignments may not be appropriate.

              + +
            2. Allow Students Assessments and Submissions The assignment + is now opened to the students. If the teacher has set up multiple exercises then + the students see different exercises, otherwise all the students see the same + exercise.

              -

              With the assessment elements set up the teacher must submit a - Word Document or HTML file which describes the exercise or task to be done - by the students. This file is shown to the students in the second phase of - the exercise.

              +

              Before the students can submit their work they must complete the assessment + form. Once they have completed the assessment they are shown the upload form. + The students can revise their work in the light of their self assessment. + +

              Once student work has been submitted the teacher can begin assessing it. The link "Student Submissions for Assessment" displays a page showing those peices of work which have not been assessed. The oldest submission is at the top of the page. The assessment form for each of these submissions is initially based on the student's own assessment of their work. The teacher can change those assessments and add any comments. At the end of the two buttons let the teacher decide whether the student can re-submit the work or not.

              -

              Teachers can, if they wish, prepare a set of similar exercise, again as - Word Documents or HTML files, and upload those into the Exercise. Note that - these exercises must be quite similar as the same Assessment Form is used - for all of these variants. The submission of a multiple set of exercises by - the teacher is optional and for certain assignments may not be appropriate.

            3. - -
            4. Allow Students Assessments and Submissions The assignment - is now opened to the students. If the teacher has set up multiple exercises then - the students see different exercises, otherwise all the students see the same - exercise.

              - -

              Before the students can submit their work they must complete the assessment - form. Once they have completed the assessment they are shown the upload form. - The students can revise their work in the light of their self assessment.

              - -

              Once student work has been submitted the teacher can begin assessing it. The link "Student Submissions for Assessment" displays a page showing those pieces of work which have not been assessed. The oldest submission is at the top of the page. The assessment form for each of these submissions is initially based on the student's own assessment of their work. The teacher can change those assessments and add any comments. At the end of the two buttons let the teacher decide whether the student can re-submit the work or not.

              - -

              If the teacher has decided to allow the student to re-submit and they have done so, the teacher is how the new piece of work. In this case the assessment form will contain the teacher's old assessment. The - same option, re-submit or not, allows the teacher to control this cycle of - re-submission and assessment. If students are allowed to put in multiple pieces - of work into the Exercise, the teacher should decide whether the final grades - are based on the student's maximum grade or their average grade over the - set of submissions. This option can be changed at any time during the Exercise - by updating the Exercise, it's effect is seen immediately in the Grade page. +

              If the teacher has decided to allow the student to re-submit and they have done so, the teacher is how the new piece of work. In this case the assessment form will contain the teacher's old assessment. The + same option, re-submit or not, allows the teacher to control this cycle of + re-submission and assessment. If students are allowed to put in multiple pieces + of work into the Exercise, the teacher should decide whether the final grades + are based on the student's maximum grade or their average grade over the + set of submissions. This option can be changed at any time during the Exercise + by updating the Exercise, it's effect is seen immediately in the Grade page.

              When the assignment's deadline is reached a student can submit or re-submit work. The work is flagged as "late". The work appears in the list of work to be assessed and the teacher can, if desired, assess the work in the normal way. - In the various lists of pieces of work the submission date is shown as red (and - in the list of work to be marked the period since submission is also shown in - red). If graded, the grade of late work is shown in red and in brackets. Such - grades are not used in the calculation of final grades and are not counted - in the Grades pages. The teacher can clear the late flag by going into in the - Administration page and clicking on the appropriate link. The work will then be - used in the calculation of the final grade.

            5. - -
            6. Show Overall Grades and League Table In this final phase of - the Exercise the students can see their "final" grades. In all - phases of the Exercise (except the first phase), grades are available to - the students, they are, however, only "partial" grades as they are - calculated on the fly from the assessments available at the time.

              - -

              In this final phase, students cannot make any further submissions. - In effect the assignment is closed and the teacher has the option of showing + In the various lists of peices of work the submission date is shown as red (and + in the list of work to be be marked the period since submission is also shown in + red). If graded, the grade of late work is shown in red and in brackets. Such + grades are not used in the calculation of final grades and are not counted + in the Grades pages. The teacher can clear the late flag by going into in the + Administration page and clicking on the appropriate link. The work will then be + used in the calculation of the final grade.

              + +
            7. Show Overall Grades and League Table In this final phase of + the Exercise the students can see their "final" grades. In all + phases of the Exercise (except the first phase), grades are available to + the students, they are, however, only "partial" grades as they are + calculated on the fly from the assessments available at the time.

              + +

              In this final phase, students cannot make any further submissions. + In effect the assignment is closed and the teacher has the option of showing the students examples of the best pieces of work submitted...

              - +

              The students (and the teacher) can also be shown a "League Table" - of the student submissions. These are listed in order of grade, the top + of the student submissions. These are listed in order of grade, the top submission is first. Here the grade given to the submission is teacher's - grade. If a student submitted more than one piece of work only their best + grade. If a student submitted more than one piece of work only their best piece of work is shown in this table. If the number of entries in the table - is set to zero then this table is not displayed.

            8. + is set to zero then this table is not displayed.

            -

            The student's grade for the Exercise is the sum of their grading grade of - their (initial) assessment and the grade for their submission(s). The - maximum values for these grades are given when the Exercise are set up. +

            The student's grade for the Exercise is the sum of their grading grade of + their (initial) assessment and the grade for their submission(s). The + maximum values for these grades are given when the Exercise are set up. However, these maximum values can be changed (by updating the Exercise) - at any time during the exercise and the grades shown both the students + at any time during the exercise and the grades shown both the students and the teacher always reflect the current maximum values.

            - +

            At any phase of the assignment the teacher can open the "Administration" - page. It lists the students' assessments (of their own work) and the - submissions of the students. The teacher can use this page to assess and re-assess - submissions, re-grade assessments, delete submissions and assessments, - and generally watch the progress of the assignment.

            + page. It lists the students' assessments (of their own work) and the + submissions of the students. The teacher can use this page to assess and re-assess + submissions, re-grade assessments, delete submissions and assessments, + and generally watch the progress of the assignment.

            diff --git a/lang/en/help/exercise/mods.html b/lang/en/help/exercise/mods.html index 8f632dc222d..88299b81779 100644 --- a/lang/en/help/exercise/mods.html +++ b/lang/en/help/exercise/mods.html @@ -1,4 +1,6 @@ -

             Exercise

            -
            -An Exercise is a simple but powerful assignment. In an exercise the teacher asks the students to do a piece of practical work. It could be writing an essay or a report, preparing a presentation, etc. When the student has done the task they must first self-assess their work before submitting it to the teacher. Once submitted the teacher assesses the piece of work itself. The teacher can give feedback to the student and ask the student to improve the work and re-submit it or not. The final grade is based on how well the student assessed their own work and the work itself. -
            + Exercise + +
              +

              An Exercise is a simple but powerful assignment. In an exercise the teacher asks the students to do a piece of practical work. It could be writing an essay or a report, preparing a presentation, etc. When the student has done the task they must first self-assess their work before submitting it to the teacher. Once submitted the teacher assesses the piece of work itself. The teacher can give feedback to the student and ask the student to improve the work and re-submit it or not. The final grade is based on how well the student assessed their own work and the work itself.

              +
            + diff --git a/lang/en/help/exercise/moreinfo.html b/lang/en/help/exercise/moreinfo.html index 0306c1aa020..4f12a880f82 100644 --- a/lang/en/help/exercise/moreinfo.html +++ b/lang/en/help/exercise/moreinfo.html @@ -1,87 +1,87 @@ - Exercise + Exercise -

            An Exercise is a simple but powerful assignment. In an exercise the teacher +

            An Exercise is a simple but powerful assignment. In an exercise the teacher asks the students to do a piece of practical work. It could be writing an - essay or a report, preparing a presentation, or setting out a spreadsheet, - etc. When the student has done the task they must first self-assess their - work before submitting it to the teacher. Once submitted the teacher - assesses the student's piece of work using the same assessment form. The + essay or a report, preparing a presentation, or setting out a spreadsheet, + etc. When the student has done the task they must first self-assess their + work before submitting it to the teacher. Once submitted the teacher + assesses the student's piece of work using the same assessment form. The teacher can give feedback to the student and ask the student to improve the work and re-submit it or not as the case may be. The final grade is based on how well the student assessed their own work and the work itself.

            Before the start of the exercise the teacher sets up the exercise by -

            1. Creating a Word document or HTML file which introduces the exercise - and tells the students what they have to produce. This file is uploaded - into the exercise by the teacher.
            2. - +
              1. Creating a Word document or HTML file which introduces the exercise + and tells the students what they have to produce. This file is uploaded + into the exercise by the teacher. +
              2. Adding the textual elements and choosing the options in the Assessment - Form. This form is used by both the students and the teacher to assess the - work produced in the exercise. There are various types of assessment - which can be used (see the help on "Grading Strategy")
              3. + Form. This form is used by both the students and the teacher to assess the + work produced in the exercise. There are various types of assessment + which can be used (see the help on "Grading Stratgey")

              - +

              In large classes, the teacher may find to helpful to create more than one version - of the exercise. These variants add a degree of variety to the exercise and - ensure that students are doing different tasks in the exercise. They - are allocated to the students in a random but balanced way. Each student - receives only one exercise but the number of - times each variant is allocated in a class is approximately the same. Note - the variants should not be too different as the same assessment form is used for - all of the variants.

              + of the exercise. These variants add a degree of variety to the exercise and + ensure that students are doing different tasks in the exercise. They + are allocated to the students in a random but balanced way. Each student + receives only one exercise but the the number of + times each variant is allocated in a class is approximately the same. Note + the variants should not be too different as the same assessment form is used for + all of the variants.

              With the description(s) of the exercise and the assessment form in place, - the assignment is opened to the students. They are shown a description - of the exercise or task. When they have done the exercise they must assess - their own work (using the pre-prepared assessment form) before they can - submit their work to the teacher. The assessment form can be used as a - "checklist" by the students. They can, if they wish, revise both - their work and the assessment before they actually submit their work, and - probably they should be encouraged to do so!

              - -

              Once a student has submitted their work both their assessment and the piece + the assignment is opened to the students. They are shown a description + of the exercise or task. When they have done the exercise they must assess + their own work (using the pre-prepared assessment form) before they can + submit their work to the teacher. The assessment form can be used as a + "checklist" by the students. They can, if they wish, revise both + their work and the assessment before they actually submit their work, and + probably they should be encouraged to do so!

              + +

              Once a student has submitted their work both their assessment and the piece of work itself becomes available to the teacher. The teacher accesses the - pieces of work (using the student's assessment as a starting point) and - make a decision whether to ask the student to re-submit an improved + pieces of work (using the student's assessment as a starting point) and + make a decision whether to ask the student to re-submit an improved version of the work or not.

              - -

              If the teacher feels that the student's piece of work could be improved, the - student can be given the opportunity to re-submit. If this is taken up the - teacher re-assesses the work using an assessment form which contains - the grades and comments they gave to the student's previous submission. - Thus, the re-assessment is then a matter of updating the form in the light - of the student revised work rather than undertaking an assessment from - scratch.

              - -

              When the deadline for the exercise is reached students can continue to submit. - However, such work is flagged as "late". The teacher can, if - desired, grade the work and give feedback to the student. The grades of - late work are held back and are not used in the calculation of final - grades. If, for whatever reason, the teacher wishes to accept a piece of - late work as a normal piece of work the late flag can be cleared by going - into the Administration page, finding the submission and clicking on the - appropriate link. The grade for that work will then be used in the calculation - of a final grades.

              - -

              When all the submissions have been graded, the exercise is moved to the + +

              If the teacher feels that the student's piece of work could be improved, the + student can be given the opprtunity to re-submit. If this is taken up the + teacher re-assesses the work using an assessment form which contains + the grades and comments they gave to the student's previous submission. + Thus, the re-assessment is then a matter of updating the form in the light + of the student revised work rather than undertaking an assessment from + scratch.

              + +

              When the deadline for the exercise is reached students can continue to submit. + However, such work is flagged as "late". The teacher can, if + desired, grade the work and give feedback to the student. The grades of + late work are held back and are not used in the calculation of final + grades. If, for whatever reason, the teacher wishes to accept a piece of + late work as a normal piece of work the late flag can be cleared by going + into the Administration page, finding the submission and clicking on the + appropriate link. The grade for that work will then be used in the calculation + of a final grades.

              + +

              When all the submissions have been graded, the exercise is moved to the final phase. Further student submissions are now not allowed. The students - can now see their final grades together with the grades given to their - submission(s). A student's grade for the exercise is the sum of the - student's "grading grade", a measure of the agreement between - the student's assessment and the teacher's assessment of the student's - (first) submission, and the teacher's grade(s) for the student's - submission(s). (The grade given by the student in their assessment is + can now see their final grades together with the grades given to their + submission(s). A student's grade for the exercise is the sum of the + student's "grading grade", a measure of the agreement between + the student's assessment and the teacher's assessment of the student's + (first) submission, and the teacher's grade(s) for the student's + submission(s). (The grade given by the student in their assesment is not used.)

              - -

              When the teacher allows students to resubmit work, the teacher should - consider how to set the option which controls how the student's final grade - is calculated from multiple submissions. This option allows the teacher to - choose between using the mean grade of the student's submissions or their - best submission. This option can changed at any time and it has an immediate - effect in the grades screen.

              + +

              When the teacher allows students to resubmit work, the teacher should + consider how to set the option which controls how the student's final grade + is calculated from multiple submissions. This option allows the teacher to + choose between using the mean grade of the student's submissions or their + best submission. This option can changed at any time and it has an immediate + effect in the grades screen.

              In the final phase of the exercise the students can also see a "League - Table" of submissions. This an ordered list of the submissions, the - submission which received the highest grade is at the top. When there are - multiple submissions only the student's best submission is show in this list.

              - + Table" of submissions. This an ordered list of the submissions, the + submission which received the highest grade is at the top. When there are + multiple submissions only the student's best submission is show in this list.

              + diff --git a/lang/en/help/exercise/nelements.html b/lang/en/help/exercise/nelements.html index c934328b763..4414690cc46 100644 --- a/lang/en/help/exercise/nelements.html +++ b/lang/en/help/exercise/nelements.html @@ -1,19 +1,19 @@ -

              Number of Comments, Elements, Bands, Criteria or Rubrics

              +

              Number of Comments, Elements, Bands, Criteria or Rubrics

              The number entered here determines how many items will be used in - the assessments. Depending on the type of grading strategy, this number - gives the number of comments, assessments elements, bands, criteria or - categories (sets) of criteria in a rubric. Typically an assignment will have - something between 5 to 15 assessment items, the actual number depending on + the assessments. Depending on the type of grading strategy, this number + gives the number of comments, assessments elements, bands, criteria or + categories (sets) of criteria in a rubric. Typically an assignment will have + something between 5 to 15 assessment items, the actual number depending on the size and complexity of the assignment.

              - -

              During the set up phase of the exercise this number can safely be adjusted. - Increasing this number will cause extra blank elements to be displayed in the - assessment form. Reducing this number will remove elements from the end - of the assessment form.

              - -

              All assessments have a General Comments field. For a "No - Grading" assignment the value given here determines the - number of additional comment areas. It can be specified as zero and results - in the assessment having only a single General Comments area.

              + +

              During the set up phase of the exercise this number can safely be adjusted. + Increasing this number will cause extra blank elements to be displayed in the + asessemnt form. Reducing this number will remove elements from the end + of the assessment form.

              + +

              All assessments have a General Comments field. For a "No + Grading" assignment the value given here determines the + number of additional comment areas. It can be specified as zero and results + in the assessment having only a single General Comments area.

              diff --git a/lang/en/help/exercise/password.html b/lang/en/help/exercise/password.html index d0b3b82c3ab..68978303540 100644 --- a/lang/en/help/exercise/password.html +++ b/lang/en/help/exercise/password.html @@ -1,6 +1,6 @@ -

              Passwords

              +

              Passwords

              -

              This field sets the "access" password for this exercise. The +

              This field sets the "access" password for this exercise. The password can be up to 10 characters long. The password can be reset at any time during the exercise. Whether students are asked for the password to - enter the exercise is determined by the "Use Password" option.

              + enter the exercise is determined by the "Use Password" option.

              diff --git a/lang/en/help/exercise/regrading.html b/lang/en/help/exercise/regrading.html index 3d891b30f94..405b9af1444 100644 --- a/lang/en/help/exercise/regrading.html +++ b/lang/en/help/exercise/regrading.html @@ -1,23 +1,23 @@ -

              Re-grading Student Assessments

              +

              Re-grading Student Assessments

              -

              This link re-calculates the "Grading grades" of all the student - assessments. Normally it is not necessary to action this - re-calculation. New student assessments are automatically graded after the - teacher has assessed the relevant piece of work from the student.

              +

              This link re-calculates the "Grading grades" of all the student + assessments. Normally it is not necessary to action this + re-calculation. New student assessments are automatically graded after the + teacher has assessed the relavant piece of work from the student.

              -

              If, however, the Grading grades are felt to be too high or too low the - teacher may wish to change the "Comparison of Assessments" option - (by Updating the Exercise). The default value of this option is - "Fair". If the grading grades are too high then setting the +

              If, however, the Grading grades are felt to be too high or too low the + teacher may wish to change the "Comparison of Assessments" option + (by Updating the Exercise). The default value of this option is + "Fair". If the grading grades are too high then setting the option to either "Strict" or "Very Strict" will reduce - the grades. Or alternatively if the grades are too low, setting the option + the grades. Or alternatively if the grades are too low, setting the option to " Lax" or "Very Lax" will increase the grades.

              If a change to the Grading grades is required the steps are:

              1. Update the Exercise with the new value of the Comparison of Assessments option;
              2. -
              3. Go to the Exercise's Administration page and click on the +
              4. Go to to the Exercise's Administration page and click on the "Re-grade Student Assessments" link.
              The new grades will be displayed. These process can be safely repeated.

              diff --git a/lang/en/help/exercise/specimen.html b/lang/en/help/exercise/specimen.html index 59f28559338..0a7736e2530 100644 --- a/lang/en/help/exercise/specimen.html +++ b/lang/en/help/exercise/specimen.html @@ -1,10 +1,10 @@

              Specimen Assessment Form

              -

              This page shows the details of the actual form used to grade - your assignment. It will be used by yourself and the teacher to grade your - work.

              - -

              Please note that although you can change the grades on - this form these changes are NOT saved. This is simply a specimen form, - but a very similar form will be used by yourself and the teacher - during this assignment.

              +

              This page shows shows the details of the actual form used to grade + your assignment. It will be used by yourself and the teacher to grade your + work.

              + +

              Please note that although you can change the grades on + this form these changes are NOT saved. This is simply a specimen form, + but a very similar form will be used by yourself and the teacher + during this assignment.

              diff --git a/lang/en/help/exercise/submissionofdescriptions.html b/lang/en/help/exercise/submissionofdescriptions.html index 13d70dc363f..825f8808905 100644 --- a/lang/en/help/exercise/submissionofdescriptions.html +++ b/lang/en/help/exercise/submissionofdescriptions.html @@ -1,12 +1,12 @@ -

              Submission of Exercise Descriptions

              +

              Submission of Exercise Descriptions

              -

              The teacher must submit at least one description of the exercise or task. +

              The teacher must submit at least one description of the exercise or task. The description can be held in a Word document or HTML file (or any other file type that will display satisfactorily in a browser). This file will be displayed to the students and should contain instructions for them to successfully complete the exercise.

              -

              It is permissible for the teacher to submit more than one description of +

              It is permissible for the teacher to submit more than one description of the exercise. These will be used at random and different students will see different versions of the exercise. These variants should be similar as the same Assessment Form is used to assess the work from these instructions.

              diff --git a/lang/en/help/exercise/takeownership.html b/lang/en/help/exercise/takeownership.html index 65b9b9f6643..3cc3f5d778f 100644 --- a/lang/en/help/exercise/takeownership.html +++ b/lang/en/help/exercise/takeownership.html @@ -1,11 +1,11 @@ -

              Take Ownership of the Exercises

              +

              Take Ownership of the Exercises

              -

              This link allows the teacher to take ownership of the current set of exercise - submissions. You will need to do this if you have imported an exercise from a - backup of another course. This link allows you to "claim" - all the exercise submissions. In the current course these imported submissions - could belong to anyone, even a student. This procedure avoids any problems - that this may cause and makes you their owner.

              - -

              Apart from ownership, the submissions themselves are unchanged by this - procedure.

              \ No newline at end of file +

              This link allows the teacher to take ownership of the current set of exercise + submissions. You will need to do this if you have imported an exercise from a + backup of another course. This link allows you to "claim" + all the exercise submissions. In the current course these imported submissions + could belong to anyone, even a student. This procedure avoids any problems + that this may cause and makes you their owner. + +

              Apart from onwership, the submissions themselves are unchanged by this + procedure.

              \ No newline at end of file diff --git a/lang/en/help/exercise/usepassword.html b/lang/en/help/exercise/usepassword.html index d7665e97ab7..bb7faa2f703 100644 --- a/lang/en/help/exercise/usepassword.html +++ b/lang/en/help/exercise/usepassword.html @@ -1,6 +1,6 @@ -

              Use Password

              +

              Use Password

              -

              Normal an exercise is open, that is if an Exercise is visible, students can +

              Normal an exercise is open, that is if an Exercise is visible, students can see the contains of the exercise. The availability of an exercise within the course is normally best controlled through the Visible/Hide activity feature.

              @@ -12,4 +12,4 @@ course and each group is set the exercise at different times. The access password is used to prevent the "second" group of students, say, from doing the exercise once the exercise has been opened up for the - "first" group.

              + "first" group.

              diff --git a/lang/en/help/forum/allowdiscussions.html b/lang/en/help/forum/allowdiscussions.html index ef64f090a5c..fac7554c56d 100644 --- a/lang/en/help/forum/allowdiscussions.html +++ b/lang/en/help/forum/allowdiscussions.html @@ -1,20 +1,20 @@ -

              Allowing new posts

              +

              Allowing new posts

              -

              This option allows you to restrict students from posting - new content in this forum.

              +

              This option allows you to restrict students from posting + new content in this forum. -

              For most forums you will want to leave students unrestricted +

              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.

              + topics (threads), and also to post replies within those threads. -

              Sometimes, however, you will want to disable this ability. For +

              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".

              + In this case you might choose the third option "No discussions, no replies". -

              Sometimes you might want to only allow teachers to start new +

              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".

              + replies are allowed". diff --git a/lang/en/help/forum/attachment.html b/lang/en/help/forum/attachment.html index d8f9a06df7a..24c190f821b 100644 --- a/lang/en/help/forum/attachment.html +++ b/lang/en/help/forum/attachment.html @@ -1,21 +1,21 @@ -

              Attachments for posts

              +

              Attachments for posts

              -

              You can optionally attach ONE file from your own computer +

              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.

              + server and stored with your post. -

              This is useful when you want to share a picture, for example, - or a Word document.

              +

              This is useful when you want to share a picture, for example, + or a Word document. -

              This file can be of any type, however it is highly recommended +

              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.

              + to download and view your attachment in their browsers. -

              If you re-edit a posting and attach a new file, then any - previous attached files for that post will be replaced.

              +

              If you re-edit a posting and attach a new file, then any + previous attached files for that post will be replaced. -

              If you re-edit a posting with an attachment and leave +

              If you re-edit a posting with an attachment and leave this space blank, then the original attachment will be - retained.

              + retained. diff --git a/lang/en/help/forum/forumtype.html b/lang/en/help/forum/forumtype.html index feca4331b98..86eec26df87 100644 --- a/lang/en/help/forum/forumtype.html +++ b/lang/en/help/forum/forumtype.html @@ -1,16 +1,16 @@ -

              Forum Types

              +

              Forum Types

              -

              There are several different types of forum to choose from:

              +

              There are several different types of forum to choose from: -

              A single simple discussion - is just a single topic, all on one page. -Useful for short, focussed discussions.

              +

              A single simple discussion - is just a single topic, all on one page. +Useful for short, focussed discussions. -

              Standard forum for general use - is an open forum where any one can -start a new topic at any time. This is the best general-purpose forum.

              +

              Standard forum for general use - is an open forum where any one can +start a new topic at any time. This is the best general-purpose forum. -

              Each person posts one discussion - Each person can post exactly one +

              Each person posts one discussion - 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.

              +the week's topic, and everyone else responds to these. -

              (More development to come in future versions of Moodle)

              +

              (More development to come in future versions of Moodle) diff --git a/lang/en/help/forum/index.html b/lang/en/help/forum/index.html index 945ffd0afde..a15698dbff1 100644 --- a/lang/en/help/forum/index.html +++ b/lang/en/help/forum/index.html @@ -1 +1 @@ -

              Forums

              \ No newline at end of file +

              Forums

              \ No newline at end of file diff --git a/lang/en/help/forum/maxattachmentsize.html b/lang/en/help/forum/maxattachmentsize.html index 8df47f9087f..9cbc10a4165 100644 --- a/lang/en/help/forum/maxattachmentsize.html +++ b/lang/en/help/forum/maxattachmentsize.html @@ -1,8 +1,8 @@ -

              Maximum attachment size

              +

              Maximum attachment size

              -

              Attachments can be limited to a certain size file, - chosen by the person who set up the forum.

              +

              Attachments can be limited to a certain size file, + chosen by the person who set up the forum. -

              Sometimes it is possible to upload a file larger than +

              Sometimes it is possible to upload a file larger than this size, but the file will not be saved on the - server and you might see an error.

              + server and you might see an error. diff --git a/lang/en/help/forum/mods.html b/lang/en/help/forum/mods.html index b8c96548666..957bfd73c8e 100644 --- a/lang/en/help/forum/mods.html +++ b/lang/en/help/forum/mods.html @@ -1,8 +1,8 @@ -

               Forums

              -
              -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. -
              +

               Forums

              +
                +

                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. +

              diff --git a/lang/en/help/forum/ratings.html b/lang/en/help/forum/ratings.html index c284dd3d05c..9348dd09f05 100644 --- a/lang/en/help/forum/ratings.html +++ b/lang/en/help/forum/ratings.html @@ -1,88 +1,44 @@ -Individual posts can be rated using a scale based on the theory of separate and connected knowing. - - - -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. - - - -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). - -
                - -
              • 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 separate knower. - -
              • - -
              • 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 "understand things from their point of view". 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 connected knower.
              • - -
              - -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. - - - -For a collaborative and effective group of learners it may be best if everyone were able to use BOTH ways of knowing. - - - -In a particular situation like an online forum, a single post by a person may exhibit either of these characteristics, or even both. Someone who is generally very connected may post a very separate-sounding message, and vice versa. The purpose of rating each post using this scale is to: - -
              - -a) help you think about these issues when reading other posts - -b) provide feedback to each author on how they are being seen by others - -
              - -The results are not used towards student assessment in any way, they are just to help improve communication and learning. - -
              - -In case you're interested, here are some references to papers by the authors who originally developed these ideas: - -
                - -
              • 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, - - NY: Basic Books.
              • - -
              • Clinchy, B.M. (1989a). The development of thoughtfulness in college women: - - Integrating reason and care. American Behavioural Scientist, 32(6), 647-657.
              • - -
              • Clinchy, B.M. (1989b). On critical thinking & connected knowing. Liberal - - education, 75(5), 14-19.
              • - -
              • Clinchy, B.M. (1996). Connected and separate knowing; Toward a marriage - - of two minds. In N.R. Goldberger, Tarule, J.M., Clinchy, B.M. &
              • - -
              • Belenky, M.F. (Eds.), Knowledge, Difference, and Power; Essays inspired - - by “Women’s Ways of Knowing” (pp. 205-247). New York, NY: - - Basic Books.
              • - -
              • 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.
              • - -
              • 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. - -
                - -
              • - -
              - - - +Individual posts can be rated using a scale based on the theory of separate and connected knowing. + +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. + +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). +
                +
              • 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 separate knower. +
              • +
              • 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 "understand things from their point of view". 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 connected knower.
              • +
              +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. + +For a collaborative and effective group of learners it may be best if everyone were able to use BOTH ways of knowing. + +In a particular situation like an online forum, a single post by a person may exhibit either of these characteristics, or even both. Someone who is generally very connected may post a very separate-sounding message, and vice versa. The purpose of rating each post using this scale is to: +
              +a) help you think about these issues when reading other posts +b) provide feedback to each author on how they are being seen by others +
              +The results are not used towards student assessment in any way, they are just to help improve communication and learning. +
              +In case you're interested, here are some references to papers by the authors who originally developed these ideas: +
                +
              • 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, + NY: Basic Books.
              • +
              • Clinchy, B.M. (1989a). The development of thoughtfulness in college women: + Integrating reason and care. American Behavioural Scientist, 32(6), 647-657.
              • +
              • Clinchy, B.M. (1989b). On critical thinking & connected knowing. Liberal + education, 75(5), 14-19.
              • +
              • Clinchy, B.M. (1996). Connected and separate knowing; Toward a marriage + of two minds. In N.R. Goldberger, Tarule, J.M., Clinchy, B.M. &
              • +
              • Belenky, M.F. (Eds.), Knowledge, Difference, and Power; Essays inspired + by “Women’s Ways of Knowing” (pp. 205-247). New York, NY: + Basic Books.
              • +
              • 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.
              • +
              • 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. +
                +
              • +
              + diff --git a/lang/en/help/forum/rssarticles.html b/lang/en/help/forum/rssarticles.html index 8ce01cbc631..bcea4bd6433 100644 --- a/lang/en/help/forum/rssarticles.html +++ b/lang/en/help/forum/rssarticles.html @@ -1,8 +1,8 @@ -

              Number of RSS recent articles

              +

              Number of RSS recent articles

              -

              This option allows you to select the number of articles - to include in the RSS Feed.

              +

              This option allows you to select the number of articles + to include in the RSS Feed. -

              A number between 5 and 20 should be appropriate for - most forums. Increase it if the forum is very used.

              +

              A number between 5 and 20 should be appropiate for + most forums. Increase it if the forum is very used. diff --git a/lang/en/help/forum/rsstype.html b/lang/en/help/forum/rsstype.html index 294fa596cf7..bfa4e5d8c0f 100644 --- a/lang/en/help/forum/rsstype.html +++ b/lang/en/help/forum/rsstype.html @@ -1,14 +1,14 @@ -

              RSS feed for this forum

              +

              RSS feed for this forum

              -

              This option allows you to enable RSS feeds in this forum.

              +

              This option allows you to enable RSS feeds in this forum. -

              You can select between two types of forums:

              +

              You can select between two types of forums: -

                -
              • Discussions: Using this, generated feeds will include - new discussions in the forum with their initial post.
              • +
                  +
                • Discussions: Using this, generated feeds will include + new discussions in the forum with their initial post. -
                • Posts: Using this, generated feeds will include - every new post in the forum.
                • -
                +
              • Posts: Using this, generated feeds will include + every new post in the forum. +
              diff --git a/lang/en/help/forum/subscription.html b/lang/en/help/forum/subscription.html index 29848a28ac1..1a368bd4d9e 100644 --- a/lang/en/help/forum/subscription.html +++ b/lang/en/help/forum/subscription.html @@ -1,18 +1,18 @@ -

              Forum Subscription

              +

              Forum Subscription

              -

              When a person is subscribed to a forum it means that +

              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 maxeditingtime/60 ?> minutes -after the post was first written).

              +(posts are sent about maxeditingtime/60 ?> minutes +after the post was first written). -

              People can usually choose whether or not they want to be -subscribed to each forum.

              +

              People can usually choose whether or not they want to be +subscribed to each forum. -

              However, if a teacher forces subscription on a particular forum +

              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.

              +email copies. -

              This is especially useful in the News forum and in forums +

              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).

              +worked out that they can subscribe to these emails themselves). diff --git a/lang/en/help/forum/subscription2.html b/lang/en/help/forum/subscription2.html index 7c6b35707eb..c85c8744d06 100644 --- a/lang/en/help/forum/subscription2.html +++ b/lang/en/help/forum/subscription2.html @@ -1,24 +1,24 @@ -

              Forum Subscription

              +

              Forum Subscription

              -

              When a person is subscribed to a forum it means that +

              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 maxeditingtime/60 ?> minutes +(posts are sent about maxeditingtime/60 ?> minutes after the post was first written). -

              +

              -

              People can usually choose whether or not they want to be +

              People can usually choose whether or not they want to be subscribed to each forum. -

              +

              -

              However, if you choose to force subscription on a particular forum +

              However, if you choose to force subscription on a particular forum then all course users will be subscribed automatically, even those that enrol at a later time. -

              +

              -

              This is especially useful in the News forum and in forums -towards the beginning of the course (before everyone has +

              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). -

              +

              If you choose the option "Yes, initially" then all current and future course users will be subscribed initially but @@ -26,10 +26,10 @@ they can unsubscribe themselves at any time. If you choose "Yes, forever" then they will not be able to unsubscribe themselves.

              -

              Note how the "Yes, initially" option behaves when you update an existing +

              Note how the "Yes, initially" option behaves when you update an exisitng forum: Changing from "Yes, initially" to "No" will not unsubscribe existing users, it will only affect future course users. Similarly changing later to "Yes, initially" will not subscribe existing course users -but only those enrolling later. +but only those enrolling later.

              diff --git a/lang/en/help/glossary/aliases.html b/lang/en/help/glossary/aliases.html index c5a0a6a7bf8..293e35c7acd 100644 --- a/lang/en/help/glossary/aliases.html +++ b/lang/en/help/glossary/aliases.html @@ -1,6 +1,6 @@ -

              Keywords

              +

              Keywords

              -

              Each entry in the glossary can have an associated list of keywords (or aliases).

              +

              Each entry in the glossary can have an associated list of keywords (or aliases).

              These words can be used as alternative ways to refer to the entry. For example, they will be used when creating automatic links.

              diff --git a/lang/en/help/glossary/aliases2.html b/lang/en/help/glossary/aliases2.html deleted file mode 100644 index cc7008310bf..00000000000 --- a/lang/en/help/glossary/aliases2.html +++ /dev/null @@ -1,9 +0,0 @@ -

              Keywords

              - -

              Each entry in the glossary can have an associated list of keywords (or aliases).

              - -

              Enter each alias on a new line (not separated by commas).

              - -

              The aliased words and phrases can be used as alternative ways to refer to the entry. - For example, if you are using the glossary auto-linking filter then the aliases will be used - (as well as the main name of the entry) when deciding what words to link to this entry.

              diff --git a/lang/en/help/glossary/allowcomments.html b/lang/en/help/glossary/allowcomments.html index 51c2eff05c3..16a6ee614fa 100644 --- a/lang/en/help/glossary/allowcomments.html +++ b/lang/en/help/glossary/allowcomments.html @@ -1,7 +1,6 @@

              Allow comments on entries

              -

              Students can be allowed to add comments to glossary entries.

              +

              It is possible to allow others to add comments to glossary entries.

              You can choose whether this feature is enabled or disabled.

              -

              Teachers always can add comments to glossary entries.

              diff --git a/lang/en/help/glossary/allowduplicatedentries.html b/lang/en/help/glossary/allowduplicatedentries.html index a0bee4fa762..693881d09a7 100644 --- a/lang/en/help/glossary/allowduplicatedentries.html +++ b/lang/en/help/glossary/allowduplicatedentries.html @@ -1,4 +1,4 @@ -

              Allow duplicated entries

              +

              Allow duplicated entries

              If you turn this option on, then multiple entries are allowed to use the same concept name.

              diff --git a/lang/en/help/glossary/casesensitive.html b/lang/en/help/glossary/casesensitive.html index 108188ce72d..c0b7801f2b7 100644 --- a/lang/en/help/glossary/casesensitive.html +++ b/lang/en/help/glossary/casesensitive.html @@ -1,6 +1,6 @@ -

              Case sensitive matching

              +

              Case sensitive matching

              -

              This setting specifies whether matching exact upper and lower case is +

              This setting specifies whether matching exact upper and lower case is necessary when performing automatic linking to these entries.

              For example, if this is turned on, then a word like "html" in a forum diff --git a/lang/en/help/glossary/defaultapproval.html b/lang/en/help/glossary/defaultapproval.html index 158a0816817..f89f81625b5 100644 --- a/lang/en/help/glossary/defaultapproval.html +++ b/lang/en/help/glossary/defaultapproval.html @@ -1,4 +1,4 @@ -

              Approved by default

              +

              Default approval status

              This setting allows the teacher to define what happens to new entries added by students. They can be automatically made available to everyone, otherwise the teacher will have to approve each one.

              diff --git a/lang/en/help/glossary/description.html b/lang/en/help/glossary/description.html index b773a87ac2f..dfb3da974a1 100644 --- a/lang/en/help/glossary/description.html +++ b/lang/en/help/glossary/description.html @@ -1,4 +1,4 @@ -

              Description

              +

              Description

              -

              This field allows you to describe the purpose of the glossary, and +

              This field allows you to describe the purpose of the glossary, and to possibly provide instructions or background information, links etc.

              diff --git a/lang/en/help/glossary/destination.html b/lang/en/help/glossary/destination.html index 1c2b49503e1..8f3e3b42ad3 100644 --- a/lang/en/help/glossary/destination.html +++ b/lang/en/help/glossary/destination.html @@ -1,6 +1,6 @@ -

              Defining the destination of imported entries

              +

              Defining the destination of imported entries

              -

              You can specify where you want to import entries to:

              +

              You can specify where you want to import entries to:

              • Current Glossary: Will append the imported entries to the currently open glossary.
              • New Glossary: Will create a new glossary based on the information found in the selected import file and will insert the new entries into it.
              • diff --git a/lang/en/help/glossary/displayformat.html b/lang/en/help/glossary/displayformat.html index 68f6b1489f8..738c0844a42 100644 --- a/lang/en/help/glossary/displayformat.html +++ b/lang/en/help/glossary/displayformat.html @@ -1,6 +1,6 @@ -

                Display format

                +

                Display format

                -

                This setting specifies the way that each entry will be shown within the glossary. The default formats are:

                +

                This setting specifies the way that each entry will be shown within the glossary. The default formats are:

                Simple Dictionary:
                @@ -18,6 +18,11 @@
                -
                -

                Moodle Administrators can create new formats following the instructions in - mod/glossary/formats/README.txt.

                +
                +

                Moodle Administrators can create new formats as follows: +

                  +
                1. Look in mod/glossary/formats ... you should see a numbered file for every existing format. +
                2. Copy one of these and call it another number N (note that 0 and 1 are reserved). +
                3. Edit this file accordingly to create your own format (some PHP knowledge required). +
                4. Finally, insert a new entry in every language pack you use called displayformatN, and give it a short but meaningful name. +
                diff --git a/lang/en/help/glossary/editalways.html b/lang/en/help/glossary/editalways.html index bee64234375..5a54e19d89b 100644 --- a/lang/en/help/glossary/editalways.html +++ b/lang/en/help/glossary/editalways.html @@ -1,13 +1,13 @@ -

                Edit always

                +

                Edit always

                -

                This option allows you to decide if students can edit their entries -at any time.

                +

                This option allows you to decide if students can edit their entries +at any time. -

                You can select:

                +

                You can select: -

                  -
                • Yes: Entries are always editable.
                • +
                    +
                  • Yes: Entries are always editable. -
                  • No: Entries are editable for configured editing time.
                  • -
                  +
                • No: Entries are editable for configured editing time. +
                diff --git a/lang/en/help/glossary/entbypage.html b/lang/en/help/glossary/entbypage.html index 9eb0e0f8c9f..075a539b023 100644 --- a/lang/en/help/glossary/entbypage.html +++ b/lang/en/help/glossary/entbypage.html @@ -1,5 +1,5 @@ -

                Defining the number of entries shown per page

                +

                Defining the number of entries shown per page

                -

                The glossary can be configured to restrict the number of entries shown per page.

                +

                The glossary can be configured to restrict the number of entries shown per page.

                If you have a large number of automatically-linked entries you should set this number lower to prevent long loading times.

                diff --git a/lang/en/help/glossary/filetoimport.html b/lang/en/help/glossary/filetoimport.html index faa4f987c23..bf2de07b209 100644 --- a/lang/en/help/glossary/filetoimport.html +++ b/lang/en/help/glossary/filetoimport.html @@ -1,3 +1,3 @@ -

                File to import

                +

                File to import

                -

                Select the XML file on your own computer which contains the entries to import.

                +

                Select the XML file on your own computer which contains the entries to import.

                diff --git a/lang/en/help/glossary/fullmatch.html b/lang/en/help/glossary/fullmatch.html index db764ce2946..c5151812b23 100644 --- a/lang/en/help/glossary/fullmatch.html +++ b/lang/en/help/glossary/fullmatch.html @@ -1,6 +1,6 @@ -

                Whole words matching

                +

                Whole words matching

                If automatic linking is enabled, then turning this setting on will force only - whole words to be linked.

                + whole words to be linked.

                For example, a glossary entry named "construct" will not create a link inside the word "constructivism".

                diff --git a/lang/en/help/glossary/globalglossary.html b/lang/en/help/glossary/globalglossary.html index 0af7e0a8569..f662d7833fc 100644 --- a/lang/en/help/glossary/globalglossary.html +++ b/lang/en/help/glossary/globalglossary.html @@ -1,4 +1,4 @@ -

                Defining a global glossary

                +

                Defining a global glossary

                Administrators can define a glossary to be global.

                diff --git a/lang/en/help/glossary/importcategories.html b/lang/en/help/glossary/importcategories.html index fb5e4e826c6..2430a1d813b 100644 --- a/lang/en/help/glossary/importcategories.html +++ b/lang/en/help/glossary/importcategories.html @@ -1,3 +1,3 @@ -

                Importing categories

                +

                Importing categories

                -

                By default, all the entries will be imported. You can specify if you want the categories to be imported as well (and the new entries will be assigned to these).

                +

                By default, all the entries will be imported. You can specify if you want the categories to be imported as well (and the new entries will be assigned to these).

                diff --git a/lang/en/help/glossary/index.html b/lang/en/help/glossary/index.html index aee5532e5cf..afab820062d 100644 --- a/lang/en/help/glossary/index.html +++ b/lang/en/help/glossary/index.html @@ -3,31 +3,31 @@
                Glossary level help files:
                Entry level help files:
                diff --git a/lang/en/help/glossary/linkcategory.html b/lang/en/help/glossary/linkcategory.html index d8bd6794b29..f312a9091cf 100644 --- a/lang/en/help/glossary/linkcategory.html +++ b/lang/en/help/glossary/linkcategory.html @@ -1,5 +1,5 @@ -

                Automatically linking categories

                +

                Automatically linking categories

                -

                You can specify if you want the categories to be automatically linked or not.

                +

                You can specify if you want the categories to be automatically linked or not.

                Note: Categories are linked based on a case sensitive, whole match.

                diff --git a/lang/en/help/glossary/mainglossary.html b/lang/en/help/glossary/mainglossary.html index 3171c59383a..b4afe623bc3 100644 --- a/lang/en/help/glossary/mainglossary.html +++ b/lang/en/help/glossary/mainglossary.html @@ -1,6 +1,6 @@ -

                Defining the main glossary of the course

                +

                Defining the main glossary of the course

                -

                The glossary system allows you to export entries from any secondary glossary to the main one of the course.

                +

                The glossary system allows you to export entries from any secondary glossary to the main one of the course.

                In order to do this, you should specify which glossary is the main one.

                diff --git a/lang/en/help/glossary/mods.html b/lang/en/help/glossary/mods.html index af9c3f0bf2c..ccb277f6ac0 100644 --- a/lang/en/help/glossary/mods.html +++ b/lang/en/help/glossary/mods.html @@ -1,7 +1,7 @@ -

                 Glossary

                -
                -

                This activity allows participants to create and maintain a list of definitions, like a dictionary.

                -

                The entries can be searched or browsed in many different formats.

                -

                The glossary also allows teachers to export entries from one glossary to another (the main one) within the same course.

                -

                Finally, it is possible to automatically create links to these entries from throughout the course.

                -
                +

                 Glossary

                +
                  +

                  This activity allows participants to create and maintain a list of definitions, like a dictionary. +

                  The entries can be searched or browsed in many different formats. +

                  The glossary also allows teachers to export entries from one glossary to another (the main one) within the same course. +

                  Finally, it is possible to automatically create links to these entries from throughout the course.

                  +
                diff --git a/lang/en/help/glossary/rssarticles.html b/lang/en/help/glossary/rssarticles.html index d5cbeec41e4..f6621f8c6d8 100644 --- a/lang/en/help/glossary/rssarticles.html +++ b/lang/en/help/glossary/rssarticles.html @@ -1,8 +1,8 @@

                Number of RSS recent articles

                -

                This option allows you to select the number of articles - to include in the RSS Feed.

                +

                This option allows you to select the number of articles + to include in the RSS Feed. -

                A number between 5 and 20 would be normal for most glossaries. - Increase the number if the glossary is updated frequently.

                +

                A number between 5 and 20 would be normal for most glossaries. + Increase the number if the glossary is updated frequently. diff --git a/lang/en/help/glossary/rsstype.html b/lang/en/help/glossary/rsstype.html index ad57815b6a4..9a8add489d0 100644 --- a/lang/en/help/glossary/rsstype.html +++ b/lang/en/help/glossary/rsstype.html @@ -1,14 +1,14 @@

                RSS feed for this glossary

                -

                This option allows you to enable RSS feeds from this glossary.

                +

                This option allows you to enable RSS feeds from this glossary. -

                You can select between two types of feeds:

                +

                You can select between two types of feeds: -

                  -
                • With author: Generated feeds will include - the name of the author in every article.
                • +
                    +
                  • With author: Generated feeds will include + the name of the author in every article. -
                  • Without author: Generated feeds won't include - the name of the author in every article.
                  • -
                  +
                • Without author: Generated feeds won't include + the name of the author in every article. +
                diff --git a/lang/en/help/glossary/shows.html b/lang/en/help/glossary/shows.html index 7157cda35e3..7c8d1cc7172 100644 --- a/lang/en/help/glossary/shows.html +++ b/lang/en/help/glossary/shows.html @@ -1,6 +1,6 @@ -

                Browsing options in Alphabet Display

                +

                Browsing options in Alphabet Display

                -

                You can customize the way a user can browse a glossary. Browsing and searching are always available, but you can define three more options:

                +

                You can customize the way a user can browse a glossary. Browsing and searching are always available, but you can define three more options:

                SHOW SPECIAL Enable or disable browsing by special characters like @, #, etc.

                diff --git a/lang/en/help/glossary/studentcanpost.html b/lang/en/help/glossary/studentcanpost.html index ba8d606a157..942b1d35ca0 100644 --- a/lang/en/help/glossary/studentcanpost.html +++ b/lang/en/help/glossary/studentcanpost.html @@ -1,6 +1,6 @@ -

                Students can post entries

                +

                Students can post entries

                -

                You can specify whether a student can or cannot add, edit or delete his/her own entries. +

                You can specify whether a student can or cannot add, edit or delete his/her own entries. Entries exported to a main glossary can be updated or deleted by teachers only, so this setting only applies to secondary glossaries.

                diff --git a/lang/en/help/glossary/usedynalink.html b/lang/en/help/glossary/usedynalink.html index 1b6098bc908..0b735e226d9 100644 --- a/lang/en/help/glossary/usedynalink.html +++ b/lang/en/help/glossary/usedynalink.html @@ -1,12 +1,10 @@ -

                Enabling automatic linking in a glossary

                +

                Automatically link glossary entries

                -

                Turning this feature on will allow individual entries in this glossary to be automatically linked whenever +

                Turning this feature on will allow the entries in this glossary to be automatically linked whenever the concept words and phrases appear throughout the rest of the same course. This includes forum postings, internal resources, week summaries, journals and so on.

                -

                Note that enabling linking for the glossary does not automatically turn on linking for each entry - - linking needs to be set for each entry individually.

                - -

                If you do not want particular text to be linked (in a forum posting, say) then you should add <nolink> and </nolink> tags around the text.

                +

                If you do not want particular text to be linked (in a forum posting, say) then you should add <nolink> and </nolink> tags around the text.

                Note that category names are also linked.

                + diff --git a/lang/en/help/glossary/usedynalinkentry.html b/lang/en/help/glossary/usedynalinkentry.html deleted file mode 100644 index 6452edd248f..00000000000 --- a/lang/en/help/glossary/usedynalinkentry.html +++ /dev/null @@ -1,9 +0,0 @@ -

                Enabling automatic linking in a entry

                - -

                Turning this feature on will allow the entry to be automatically linked, whenever - the concept words and phrases appear throughout the rest of the same course. This includes forum - postings, internal resources, week summaries, journals and so on.

                - -

                If you do not want particular text to be linked (in a forum posting, say) then you should add <nolink> and </nolink> tags around the text.

                - -

                To be able to turn on this feature, auto linking must be enabled at glossary level.

                diff --git a/lang/en/help/groupmode.html b/lang/en/help/groupmode.html index b46186ef028..65d2fdd23a9 100644 --- a/lang/en/help/groupmode.html +++ b/lang/en/help/groupmode.html @@ -8,7 +8,7 @@

              -

              The group mode can be defined at two levels:

              +

              The group mode can be defined at two levels:

              1. Course level
              @@ -19,3 +19,6 @@ grouping mode. If the course is set to "force group mode" then the setting for each activity is ignored.
              + +

              + diff --git a/lang/en/help/groupmodeforce.html b/lang/en/help/groupmodeforce.html index c84e9ffd2e0..002510105ea 100644 --- a/lang/en/help/groupmodeforce.html +++ b/lang/en/help/groupmodeforce.html @@ -1,6 +1,6 @@

              Force Group Mode

              -

              If the group mode is "forced" at a course-level, then +

              If the group mode is "forced" at a course-level, then the course group mode is applied to every activity in that course. Individual group settings in each activity are then ignored.

              diff --git a/lang/en/help/guestaccess.html b/lang/en/help/guestaccess.html index ddd4ea3202f..23b4a31e5ac 100644 --- a/lang/en/help/guestaccess.html +++ b/lang/en/help/guestaccess.html @@ -1,42 +1,21 @@ -

              Guest Access

              - - - -

              You have the choice of allowing "guests" into your course.

              - - - -

              People can log in as guests using the "Login as a guest" button - - on the login screen.

              - - - -

              Guests ALWAYS have "read-only" access - meaning they can't leave - - any posts or otherwise mess up the course for real students.

              - - - -

              This can be handy when you want to let a colleague in to - - look around at your work, or to let students see a course before - - they have decided to enrol.

              - - - -

              Note that you have a choice between two types of guest access: - - with the enrolment key or without. If you choose to allow - - guests who have the key, then the guest will need to provide - - the current enrolment key EVERY TIME they log in (unlike - - students who only need to do it once). This lets you restrict - - your guests. If you choose to allow guests without a key, then - - anyone can get straight into your course.

              - +

              Guest Access

              + +

              You have the choice of allowing "guests" into your course. + +

              People can log in as guests using the "Login as a guest" button + on the login screen. + +

              Guests ALWAYS have "read-only" access - meaning they can't leave + any posts or otherwise mess up the course for real students. + +

              This can be handy when you want to let a colleague in to + look around at your work, or to let students see a course before + they have decided to enrol. + +

              Note that you have a choice between two types of guest access: + with the enrolment key or without. If you choose to allow + guests who have the key, then the guest will need to provide + the current enrolment key EVERY TIME they log in (unlike + students who only need to do it once). This lets you restrict + your guests. If you choose to allow guests without a key, then + anyone can get straight into your course. diff --git a/lang/en/help/hideoptions.html b/lang/en/help/hideoptions.html new file mode 100644 index 00000000000..e25206ef76b --- /dev/null +++ b/lang/en/help/hideoptions.html @@ -0,0 +1,7 @@ +

              Hide options

              + +

              If you tick these boxes then the corresponding options will be +hidden from the teacher by default. However the teacher can access +these options by choosing "" on the quiz setup +page.

              diff --git a/lang/en/help/html.html b/lang/en/help/html.html index cccb8dea333..37c550fa28b 100644 --- a/lang/en/help/html.html +++ b/lang/en/help/html.html @@ -1,18 +1,18 @@ -

              Help on writing html

              +

              Help on writing html

              -

              When writing HTML in Moodle, you are free to use almost any HTML tags you like +

              When writing HTML in Moodle, you are free to use almost any HTML tags you like to produce the effect you want.

              -

              Note that scripting (eg Javascript or VB Script) is not allowed, and will be removed - automatically.

              +

              Note that scripting (eg Javascript or VB Script) is not allowed, and will be removed + automatically.

              -

              Your code will normally be printed on the page within a table cell, - so:

              +

              Your code will normally be printed on the page within a table cell, + so: -

                -
              • there is no need to use any <HEAD> or <BODY> tags -
              • be careful about unmatched </TABLE> tags that may mess up the display. -
              +
                +
              • there is no need to use any <HEAD> or <BODY> tags +
              • be careful about unmatched </TABLE> tags that may mess up the display. +

              Smilies (emoticons) will be converted into their graphical equivalent, and bare URLs will be converted into links.

              diff --git a/lang/en/help/index.html b/lang/en/help/index.html index 62e526e66bf..0578bee766e 100755 --- a/lang/en/help/index.html +++ b/lang/en/help/index.html @@ -3,52 +3,50 @@

              General

              Administration

              Setting up courses

              Reading and Writing

              diff --git a/lang/en/help/journal/mods.html b/lang/en/help/journal/mods.html index da928f00e8c..66d07f5a236 100644 --- a/lang/en/help/journal/mods.html +++ b/lang/en/help/journal/mods.html @@ -1,10 +1,10 @@ -

               Journals

              -
              -This module is a very important reflective activity. The teacher +

               Journals

              +
                +

                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. -

              + Journal activity per week.

              + diff --git a/lang/en/help/label/mods.html b/lang/en/help/label/mods.html index 4acc0af5728..725e45aace0 100644 --- a/lang/en/help/label/mods.html +++ b/lang/en/help/label/mods.html @@ -1,5 +1,6 @@ -

               Labels

              -
              -This is a not a true activity - it is a "dummy" activity that allows you -to insert text and graphics among the other activities on the course page. -
              +

               Labels

              +
                +

                This is a not a true activity - it is a "dummy" activity that allows you + to insert text and graphics among the other activities on the course page.

                +
              + diff --git a/lang/en/help/langedit.html b/lang/en/help/langedit.html index 1dc19b219f5..1e5b171f785 100644 --- a/lang/en/help/langedit.html +++ b/lang/en/help/langedit.html @@ -1,12 +1,12 @@ -

              Language Editing

              +

              Language Editing

              -

              To edit languages on this page the files need to be writable - by the web server process.

              +

              To edit languages on this page the files need to be writable + by the web server process. -

              Within some of the strings you will notice $a and $a->something.

              +

              Within some of the strings you will notice $a and $a->something. -

              These represent variables that will be replaced by names or other words from - within Moodle.

              +

              These represent variables that will be replaced by names or other words from + within Moodle. -

              When there is only one variable, the $a form is used. When there are two or - more variables, then each one has a name.

              +

              When there is only one variable, the $a form is used. When there are two or + more variables, then each one has a name. diff --git a/lang/en/help/lesson/bgcolor.html b/lang/en/help/lesson/bgcolor.html index 522ae93fc9b..c8905911b6f 100644 --- a/lang/en/help/lesson/bgcolor.html +++ b/lang/en/help/lesson/bgcolor.html @@ -1,3 +1 @@ -

              Slide Show Background Color

              - -

              Type in a 6 letter code for the color of the slides.

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/custom.html b/lang/en/help/lesson/custom.html index 78ccd8f29ae..c8905911b6f 100644 --- a/lang/en/help/lesson/custom.html +++ b/lang/en/help/lesson/custom.html @@ -1,6 +1 @@ -

              Custom Scoring

              - -

              This will allow you to put a numerical point value on each answer. Answers may have -negative values or positive values. Imported questions will automatically be -assigned 1 point for correct answers and 0 for incorrect, though you may change this -after the import.

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/deleteattempts.html b/lang/en/help/lesson/deleteattempts.html index 821e4a36a0e..c8905911b6f 100644 --- a/lang/en/help/lesson/deleteattempts.html +++ b/lang/en/help/lesson/deleteattempts.html @@ -1,3 +1 @@ -

              Delete student attempts for this lesson (user id)

              - -

              Type a username in here and click "Save Changes" to delete all attempts and grades for that user.

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/displayleft.html b/lang/en/help/lesson/displayleft.html index ebb04caa0bb..c8905911b6f 100644 --- a/lang/en/help/lesson/displayleft.html +++ b/lang/en/help/lesson/displayleft.html @@ -1,5 +1 @@ -

              Display Left Menu

              - -

              This will show a list of the pages (Branch Tables) in the lesson. Question pages, -cluster pages, etc. will not be shown by default (you may choose to show question -pages by checking that option on the question).

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/height.html b/lang/en/help/lesson/height.html index 235cdcea9da..c8905911b6f 100644 --- a/lang/en/help/lesson/height.html +++ b/lang/en/help/lesson/height.html @@ -1,3 +1 @@ -

              Slide Show Height

              - -

              Type a number for how many pixels high the slides will be.

              +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/highscores.html b/lang/en/help/lesson/highscores.html index dcefded714b..c8905911b6f 100644 --- a/lang/en/help/lesson/highscores.html +++ b/lang/en/help/lesson/highscores.html @@ -1,5 +1 @@ -

              Display High Scores

              - -

              A list of the high scores for the lesson will be shown. Students who get a high -score can choose a custom name to list their score by. There is a 'badwords' filter -which checks for naughty names.

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/import.html b/lang/en/help/lesson/import.html index 7c703bb9c8d..6e4292c4e3c 100644 --- a/lang/en/help/lesson/import.html +++ b/lang/en/help/lesson/import.html @@ -1,11 +1,11 @@ -

              Importing new questions

              +

              Importing new questions

              -

              This function allows you to import questions from - external text files, uploaded through a form.

              +

              This function allows you to import questions from + external text files, uploaded through a form. -

              A number of file formats are supported:

              +

              A number of file formats are supported: -

              GIFT format

              +

              GIFT format

              -

              Aiken format

              +

              Aiken format

              -

              Missing Word

              -
                -

                This format only supports multiple choice questions. +

                Missing Word

                +
                  +

                  This format only supports multiple choice questions. Each answer is separated with a tilde (~), and the correct answer is -prefixed with an equals sign (=). Here is an example:

                  +prefixed with an equals sign (=). Here is an example: -
                  As soon as we begin to explore our body parts as infants +
                  As soon as we begin to explore our body parts as infants we become students of {=anatomy and physiology ~reflexology ~science ~experiment}, and in a sense we remain students for life. -
                  +
                  -

                  More info about the "Missing Word" format

                  -
                +

                More info about the "Missing Word" format

                +
              -

              AON

              -
                -

                This is the same as Missing Word Format, except that after importing +

                AON

                +
                  +

                  This is the same as Missing Word Format, except that after importing the questions all Short-Answer questions are converted four at a time - into Matching Questions.

                  + into Matching Questions.

                  Additionally, the answers of multiple-choice questions are randomly - shuffled during the import.

                  + shuffled during the import.

                  It's named after an organisation that sponsored the development of many quiz features

                  -
                +
              -

              Blackboard

              - -

              Course Test Manager

              -
                -

                This module can import questions saved in a Course Test Manager test bank. +

                Course Test Manager

                +
                  +

                  This module can import questions saved in a Course Test Manager test bank. It relies on different ways of accessing the test bank, which is in a Microsoft Access -database, depending on whether Moodle is running on a Windows or Linux web server.

                  +database, depending on whether Moodle is running on a Windows or Linux web server.

                  On Windows it lets you upload the access database just like any other data import file.

                  On Linux, you must set up a windows machine on the same network with the Course Test Manager database and a piece of software called the ODBC Socket Server, which uses XML -to transfer data to moodle on the Linux server.

                  - -

                  Please read the full help file below before +to transfer data to moodle on the Linux server.

                  Please read the full help file below before using this import class.

                  -

                  More info about the "CTM" format

                  -
                +

                More info about the "CTM" format

                +
              -

              Custom

              -
                -

                If you have your own format that you need to import, you can - implement it yourself by editing mod/quiz/format/custom.php

                +

                Custom

                +
                  +

                  If you have your own format that you need to import, you can + implement it yourself by editing mod/quiz/format/custom.php -

                  The amount of new code needed is quite small - just enough - to parse a single question from given text.

                  +

                  The amount of new code needed is quite small - just enough + to parse a single question from given text. -

                  More info about the "Custom" format

                  -
                +

                More info about the "Custom" format

                +
              -

              More formats are yet to come, including WebCT, IMS QTI and whatever else +

              More formats are yet to come, including WebCT, IMS QTI and whatever else Moodle users can contribute!

              diff --git a/lang/en/help/lesson/index.html b/lang/en/help/lesson/index.html deleted file mode 100644 index 93f95a441ce..00000000000 --- a/lang/en/help/lesson/index.html +++ /dev/null @@ -1 +0,0 @@ -

              Lessons

              \ No newline at end of file diff --git a/lang/en/help/lesson/jumpto.html b/lang/en/help/lesson/jumpto.html index 0388df30522..de7fc2e27ba 100644 --- a/lang/en/help/lesson/jumpto.html +++ b/lang/en/help/lesson/jumpto.html @@ -1,29 +1,13 @@

              The Jump-to Link

              -

              Each Answer (for questions) or Description (for Branch pages) has a Jump-to link. - When this answer is chosen, the answer's response - is shown to the student. After that the student sees the page given in the Jump-to - link. This link can be either relative or absolute. Relative links are This - page and Next page. This page means that the student sees the +

              Each answer has a Jump-to link. When this answer is chosen, the answer's response + is shown to the student. Atfer that the student sees the page given in the Jump-to + link. This link can be either relative or absolute. Relative links are This + page and Next page. This page means that the student sees the current page again. Next page shows the page which follows this page in the - logical order of pages. An absolute page link is specified by choosing the page's + logical order of pages. An absolute page link is specified by choosing the page's title.

              -

              Note that a (relative) Next page Jump-to link may show a different page +

              Note that a (relative) Next page Jump-to link may show a different page after pages have been moved. Whereas Jump-to links which use page titles always show the same page after pages have been moved.

              -

              Special Jumps

              -

              Unseen Question within a Branch

              -

              This will link to a randomly chosen unseen (by the student in this attempt) question - between this branch table and the End of the Lesson or the next End of Branch.

              - -

              Random Question within a Branch

              -

              This will link to a randomly chosen question between the current branch table and - the End of Lesson or the next End of Branch. If the student has already seen the - question and attempts are greater than 1, they will get another chance to earn the - point(s) for that question. If attempts are set to 1, the question will be skipped - and another random question shown.

              - -

              Random Branch Table

              -

              This will jump to a random Branch Table between the current Branch Table and the End - of Lesson or the next End of Branch.

              diff --git a/lang/en/help/lesson/lessondefault.html b/lang/en/help/lesson/lessondefault.html index 2a14821975e..c8905911b6f 100644 --- a/lang/en/help/lesson/lessondefault.html +++ b/lang/en/help/lesson/lessondefault.html @@ -1,5 +1 @@ -

              Use this lesson's settings as defaults

              - -

              Select yes before Saving the lesson, and the settings you have chosen for this -lesson will be the default settings for the next time you create a lesson for this -course.

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/maxattempts.html b/lang/en/help/lesson/maxattempts.html index 54bba1125d5..f2be730daa3 100644 --- a/lang/en/help/lesson/maxattempts.html +++ b/lang/en/help/lesson/maxattempts.html @@ -1,7 +1,7 @@

              The Maximum Number of Attempts (by a Student)

              This value determines the maximum number of attempts a Student has - in answering any of the questions in the lesson. In the case of questions + in aswering any of the questions in the lesson. In the case of questions which do not provide the answer, for example Short Answer and Numerical questions, this value provides a necessary escape routine to the next page in the lesson.

              @@ -16,7 +16,7 @@

              Note that this value is global parameter and that it applies to all the questions in the lesson regardless of their type.

              - +

              Note that this parameter does not apply to teachers checking of questions or navigating through the lesson. Checking the number of attempts relies on values stored in the database and question attempts by teachers are diff --git a/lang/en/help/lesson/maxhighscores.html b/lang/en/help/lesson/maxhighscores.html index 9e03294a3ba..c8905911b6f 100644 --- a/lang/en/help/lesson/maxhighscores.html +++ b/lang/en/help/lesson/maxhighscores.html @@ -1,3 +1 @@ -

              Number of High Scores Displayed

              - -

              Type a number to limit how many of the top scores are displayed.

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/maxtime.html b/lang/en/help/lesson/maxtime.html index 636d05af7d2..c8905911b6f 100644 --- a/lang/en/help/lesson/maxtime.html +++ b/lang/en/help/lesson/maxtime.html @@ -1,3 +1 @@ -

              Time Limit

              - -

              Type a number in minutes here for the time limit.

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/minquestions.html b/lang/en/help/lesson/minquestions.html index dd68b37a8b3..f7c16597317 100644 --- a/lang/en/help/lesson/minquestions.html +++ b/lang/en/help/lesson/minquestions.html @@ -1,31 +1,31 @@

              The Minimum Number of Questions in a Lesson

              -

              When a lesson contains one or more Branch Tables the teacher should +

              When a lesson contains one or more Branch Tables the teacher should normally set this parameter. Its value sets a lower limit on the number of - questions seen when a grade is calculated. It does not force students + quesions seen when a grade is calculated. It does not force students to answer that many questions in the lesson

              For example, setting this parameter to, say, 20, will ensure that grades are - given as though the students have seen at least this number of + given as though the students have seen at least this number of questions. Take the case of a student who only looks at a single branch in - a lesson with, say, 5 pages and answers all the associated questions + a lesson with, say, 5 pages and answers all the associated questions correctly. They then choose to end the lesson (assuming there is that option - in the "top level"Branch Table, a reasonable enough assumption). + in the "top level"Branch Table, a reasonable enough assumption). If this parameter were left unset their grade would be 5 out of 5, that is - 100%. However, with it set to 20 their grade would be reduced to 5 out of - 20, that is 25%. In the case of another student who goes through all the + 100%. However, with it set to 20 their grade would be reduced to 5 out of + 20, that is 25%. In the case of another student who goes through all the branches and sees, say, 25 pages and answers all but two of the questions correctly, then their grade would be 23 out of 25, that is 92%.

              If this parameter is used, then the opening page of the lesson should say - something like:

              + something like:

              In this lesson you are expected to attempt at least n questions. - You can attempt more if you wish. However, if you attempt less than n + You can attempt more if you wish. However, if you attempt less than n questions your grade will be calculated as though you attempted n.

              Where obviously "n" is replaced by the actual value this parameter has been given.

              When this parameter is set students are told how many questions they - have attempted and how many they are expected to attempt.

              + have attempted and how many they are expected to attempt. diff --git a/lang/en/help/lesson/modattempts.html b/lang/en/help/lesson/modattempts.html index c07360aa213..c8905911b6f 100644 --- a/lang/en/help/lesson/modattempts.html +++ b/lang/en/help/lesson/modattempts.html @@ -1,3 +1 @@ -

              Allow Student Review

              - -

              This will let the student navigate back through the lesson to change their answers.

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/mods.html b/lang/en/help/lesson/mods.html index bf2db494242..c1c6988410b 100644 --- a/lang/en/help/lesson/mods.html +++ b/lang/en/help/lesson/mods.html @@ -1,10 +1,11 @@ -

               Lesson

              + Lesson + +
                +

                A lesson delivers content in an interesting and flexible way. It consists of a + number of pages. Each page normally ends with a question and a number of + possible answers. Depending on the student's choice of answer they either + progress to the next page or are taken back to a previous page. Navigation + through the lesson can be straight forward or complex, depending largely + on the structure of the material being presented.

                +
              -
              -A lesson delivers content in an interesting and flexible way. It consists of a -number of pages. Each page normally ends with a question and a number of -possible answers. Depending on the student's choice of answer they either -progress to the next page or are taken back to a previous page. Navigation -through the lesson can be straight forward or complex, depending largely -on the structure of the material being presented. -
              diff --git a/lang/en/help/lesson/overview.html b/lang/en/help/lesson/overview.html index d49e9d7a933..9c0acedec66 100644 --- a/lang/en/help/lesson/overview.html +++ b/lang/en/help/lesson/overview.html @@ -2,122 +2,98 @@
              1. A lesson is made up of a number of pages and optionally branch - tables.
              2. -
              3. A page contains some content and it normally ends with a - question. Thus the term Question Page.
              4. -
              5. For Essay Questions, there is no answer, just a score, feedback, and a page jump.
              6. + tables. +
              7. A page contains some content and it normally ends with a + question. Thus the term Question Page. +
              8. Each page normally has a set of answers.
              9. Each answer can have a short piece of text which is displayed if the answer is - chosen. This piece of text is called the response.
              10. -
              11. Also associated with each answer is a jump. The jump can be relative - - this page, next page - or absolute - specifying any one of the pages in the - lesson or the end of the lesson.
              12. -
              13. By default, the first answer jumps to the next page in the lesson. The subsequent - answers jump to the same page. That is, the student is shown the same page of the - lesson again if they do not chose the first answer. If you have already created a - cluster with an end of cluster, and the question is within it, you can also choose - to jump to an Unseen Question within the cluster. This option will not be shown if - you are not in a cluster. You can surround a set of questions with cluster and end - of cluster at any time.
              14. -
              15. The next page is determined by the lesson's logical order. This is - the order of the pages as seen by the teacher. This order can be altered - by moving pages within the lesson.
              16. -
              17. The lesson also has a navigation order. This is the order of the + chosen. This piece of text is called the response. +
              18. Also associated with each answer is a jump. The jump can be relative - + this page, next page - or absolute - specifying any one of the pages in the + lesson or the end of the lesson. +
              19. By default, the first answer jumps to the next page in the lesson. + The subsequent answers jump to the same page. That is, the student is shown + the same page of the lesson again if they do not chose the first answer. +
              20. The next page is determined by the lesson's logical order. This is + the order of the pages as seen by the teacher. This order can be altered + by moving pages within the lesson. +
              21. The lesson also has a navigation order. This is the order of the pages as seen by the students. This is determined by the jumps specified for individual answers and it can be very different from the logical order. (Although if the jumps are not changed from their default values - the two are strongly related.) The teacher has the option to check the - navigation order.
              22. -
              23. When displayed to the students, the answers are usually shuffled. That is, - the first answer from the teacher's point of view will not necessarily be + the two are strongly related.) The teacher has the option to check the + navigation order. +
              24. When displayed to the students, the answers are usually shuffled. That is, + the first answer from the teacher's point of view will not necessarily be the first answer in the list shown to the students. (Further, each time the same set of answers is displayed they are likely to appear in a different order.) The exception is sets of answers for matching-type questions, here - the answers are shown in the same order as input by the teacher.
              25. + the answers are shown in the same order as input by the teacher.
              26. The number of answers can vary from page to page. For example, it is allowed that some pages can end with a true/false question while others have questions - with one correct answer and three, say, distractors.
              27. + with one correct answer and three, say, distractors.
              28. It is possible to set up a page without any answers. The students are shown - a Continue link instead of the set of shuffled answers.
              29. -
              30. If custom scoring is off: for the purposes of grading the lessons, correct answers are ones which - jump to a page which is further down the logical order than the current page. + a Continue link instead of the set of shuffled answers. +
              31. For the purposes of grading the lessons, correct answers are ones which + jump to a page which is further down the logical order than the current page. Wrong answers are ones which either jump to the same page or to a page further up the logical order than the current page. Thus, if the jumps are - not changed, the first answer is a correct answer and the other answers are + not changed, the first answer is a correct answer and the other answers are wrong answers. -

                - If custom scoring is on: grading of an answer is determined by the point value - of the answer, the total points earned serves as a fraction of the total point value - of the lesson, up to 100%.
              32. Questions can have more than one correct answer. For example, if two of the answers jump to the next page then either answer is taken as a correct answer. (Although - the same destination page is shown to the students, the responses shown on the way + the same destination page is shown to the students, the responses shown on the way to that page may well be different for the two answers.) -
              33. In the teacher's view of the lesson the correct answers have underlined Answer - Labels.
              34. -
              35. Branch tables are simply pages which have a set of links to other +
              36. In the teacher's view of the lesson the correct answers have underlined Answer + Labels. +
              37. Branch tables are simply pages which have a set of links to other pages in the lesson. Typically a lesson may start with a branch table which - acts as a Table of Contents.
              38. + acts as a Table of Contents.
              39. Each link in a branch table has two components, a description and the title - of the page to jump to.
              40. -
              41. A branch table effectively divides the lesson into a number of - branches (or sections). Each branch can contain a number of pages - (probably all related to the same topic). The end of a branch is usually - marked by an End of Branch page. This is a special page which, by - default, returns the student back to the preceding branch table. (The - "return" jump in an End of Branch page can be changed, if - required, by editing the page.)
              42. + of the page to jump to. +
              43. A branch table effectively divides the lesson into a number of + branches (or sections). Each branch can contain a number of pages + (probably all related to the same topic). The end of a branch is usually + marked by an End of Branch page. This is a special page which, by + default, returns the student back to the preceeding branch table. (The + "return" jump in an End of Branch page can be changed, if + required, by editing the page.)
              44. There can be more than one branch table in a lesson. For example, a lesson might usefully be structured so that specialist points are sub-branches - within the main subject branches.
              45. + within the main subject branches.
              46. It is important to give students a means of ending the lesson. This might - be done by including an "End Lesson" link in the main branch + be done by including an "End Lesson" link in the main branch table. This jumps to the (imaginary) End of Lesson page. Another option is for the last branch in the lesson (here "last" is used in the logical ordering sense) to simply continue to the end of the lesson, - that is, it is not terminated by an End of Branch page.
              47. -
              48. With custom scoring off, when a lesson includes one or more branch tables it is - advisable to set the "Minimum number of Questions" parameter to some reasonable - value. This sets a lower limit on the number of pages seen when the grade is - calculated. Without this parameter a student might visit a single branch in the - lesson, answer all its questions correctly and leave the lesson with the maximum - grade. -

                - With custom scoring on, a student is graded based on the number of points they have - earned as a percentage of the total points for the lesson.
              49. -
              50. Further, with custom scoring off, when a branch table is present a student has - the opportunity of re-visiting the same branch more than once. However, the grade is - calculated using the number of unique questions answered. So repeatedly answering - the same set of questions does not increase the grade. (In fact, the reverse is - true, it lowers the grade as the count of the number of pages seen is used in the - denominator when calculating grades does include repeats.) In order to give students - a fair idea of their progress in the lesson, they are shown details of how many - questions they are answered correctly, number of pages seen, and their current grade - on every branch table page. -

                - With custom scoring on, a student may revisit a question if the navigation path - allows it, and re-earn the point(s) for that question, if attempts is greater than - 1. To prevent this, set attempts to 1.
              51. -
              52. The end of the lesson is reached by either jumping to that location explicitly - or by jumping to the next page from the last (logical) page of the lesson. With - custom scoring off, when the end of the lesson is reached, the student receives a - congratulations message and is shown their grade. The grade is (the number of - questions correctly answered / number of pages seen) * the grade of the lesson. - With custom scoring on, the grade is the points earned as a % of the total points - (e.g. 3 points earned for a 3 point lesson = 100% of 3 points).
              53. + that is, it is not terminated by an End of Branch page. +
              54. When a lesson includes one or more branch tables it is advisable to set the + "Minimum number of Questions" parameter to some reasonable value. + This sets a lower limit on the number of pages seen when the grade is + calculated. Without this parameter a student might visit a single branch + in the lesson, answer all its questions correctly and leave the lesson + with the maximum grade. +
              55. Further, when a branch table is present a student has the opportunity of + re-visiting the same branch more than once. However, the grade is + calculated using the number of unique questions answered. So + repeatedly answering the same set of questions does not increase + the grade. (In fact, the reverse is true, it lowers the grade as the count + of the number of pages seen is used in the denominator when calculating + grades does include repeats.) In order to give students a fair idea of + their progress in the lesson, they are shown details of how many questions + they are answered correctly, number of pages seen, and their current grade + on every branch table page. +
              56. The end of the lesson is reached by either jumping to that location explicitly + or by jumping to the next page from the last (logical) page of the lesson. When the + end of the lesson is reached, the student receives a congratulations message and is + shown their grade. The grade is (the number of questions correctly answered / number of + pages seen) * the grade of the lesson.
              57. If the end of the lesson is not reached and the student just leaves, - when the student goes into the lesson again they are given the choice of - starting at the beginning or picking up the lesson where they answered their - last correct answer.
              58. -
              59. For a lesson which allow re-takes, the teacher has the choice of using the + when the student goes into the lesson again they are given the choice of + starting at the begining or picking up the lesson where they answered their + last correct answer. +
              60. For a lesson which allow re-takes, the teacher has the choice of using the best grade or the average of the grades as the "final" grade from - the lesson. That grade is shown on the Grades page, for example.
              61. -
              62. Cluster pages: a cluster represents a set of questions from which one or more - may be randomly chosen. Clusters should be completed with an End of Cluster page for - best results (otherwise they treat the End of Lesson as the EOC). Questions within a - cluster are randomly selected by choosing "Random Question within a Cluster" as a - jump. Questions within a cluster may either link to the EOC to exit the cluster, or - jump to an unseen question within the cluster, or jump to any other page in the - lesson. This also enables the creation of scenarios with a random element using the - lesson module.
              63. + the lesson. That grade is shown on the Grades page, for example.
              diff --git a/lang/en/help/lesson/password.html b/lang/en/help/lesson/password.html index c77133439b5..c8905911b6f 100644 --- a/lang/en/help/lesson/password.html +++ b/lang/en/help/lesson/password.html @@ -1,3 +1 @@ -

              Password

              - -

              If you have set Password Protected Lesson to "Yes", type a password here.

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/practice.html b/lang/en/help/lesson/practice.html index 363e5d7a69a..c8905911b6f 100644 --- a/lang/en/help/lesson/practice.html +++ b/lang/en/help/lesson/practice.html @@ -1,3 +1 @@ -

              Practice Lesson

              - -

              A practice lesson will not show up in the Gradebook.

              \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/questionoption.html b/lang/en/help/lesson/questionoption.html index e6f2e1508cc..4b2fa789651 100644 --- a/lang/en/help/lesson/questionoption.html +++ b/lang/en/help/lesson/questionoption.html @@ -2,7 +2,7 @@

              A few of the Question Types have an option which is activated by clicking on the checkbox. The question types and the meaning of the options are - detailed below.

              + detailed below.
              1. Multichoice There is variant of Multichoice questions called diff --git a/lang/en/help/lesson/questiontypes.html b/lang/en/help/lesson/questiontypes.html index 798327dde80..33a7493fd77 100644 --- a/lang/en/help/lesson/questiontypes.html +++ b/lang/en/help/lesson/questiontypes.html @@ -3,133 +3,126 @@

                The types of Questions currently supported by the Lesson module are:

                  -
                1. Multichoice This is the default question type. Multichoice questions - are popular questions where the student is asked to choose one answer from a - set of alternatives. The correct answer takes the student further into the - lesson, the wrong answers do not. The wrong answers are sometimes called the - "distractors" and the utility of these questions often rely more +

                2. Multichoice This is the default question type. Multichoice questions + are popular questions where the student is asked to choose one answer from a + set of alternatives. The correct answer takes the student further into the + lesson, the wrong answers do not. The wrong answers are sometimes called the + "distractors" and the utility of these questions often rely more on the quality of the distractors than either the questions themselves or their correct answers.

                  -

                  Each answer can optionally have a response. If no response is - entered for an answer then the default response "That's the Correct +

                  Each answer can optionally have a response. If no response is + entered for an answer then the default reponse "That's the Correct Answer" or "That's the Wrong Answer" is shown to the student.

                  -

                  It is possible to have more than one correct answer to a multichoice question. - The different correct answers may give the student different responses and - jump to different (forward) pages in the lesson but +

                  It is possible to have more than one correct answer to a multichoice question. + The different correct answers may give the student different responses and + jump to different (forward) pages in the lesson but do not vary in their grades, (that is, some answers are not more correct - than others, at least in terms of grade.) It is possible for all the answers - to be correct and they might take the student to different (forward) parts of - the lesson depending on which one is chosen.

                  + than others, at least in terms of grade.) It is possible for all the answers + to be correct and they might take the student to different (forward) parts of + the lesson depending on which one is choosen.

                  -

                  There is variant of Multichoice questions called "Multichoice - Multianswer" questions. These require the student to select all the - correct answers from the set of answers. The question may or may not tell - the student how many correct answers there are. For example "Which of the - following were US Presidents?" does not, while "Select the two US - presidents from the following list." does. The actual number of correct - answers can be from one up to the number of choices. (A Multichoice - Multianswer question with one correct answer is different from a - Multichoice question as the former allows the student the possibility of +

                  There is variant of Multichoice questions called "Multichoice + Multianswer" questions. These require the student to select all the + correct answers from the set of answers. The question may or may not tell + the student how many correct answers there are. For example "Which of the + following were US Presidents?" does not, while "Select the two US + presidents from the following list." does. The actual number of correct + answers can be from one up to the number of choices. (A Multichoice + Multianswer question with one correct answer is different from a + Multichoice question as the former allows the student the possibility of choosing more than one answer while the latter does not.)

                  -

                  Again the correct answers are flagged using forward jumps, the wrong answers - by same page or backward jumps. When there is more than one correct answer - the jumps should all go to the same page, similarly with the wrong answers. +

                  Again the correct answers are flagged using forward jumps, the wrong answers + by same page or backward jumps. When there is more than one correct answer + the jumps should all go to the same page, similarily with the wrong answers. If that is not the case a warning is given on the teacher's view of the lesson. The correct response, if required, should be given on the first correct answer and the wrong response, if required, should be on the first wrong answer. Responses on the other answers are ignored (without warning).

                3. -
                4. Short Answer The student is prompted for a short piece of text. - This is checked against one or more answers. Answers can be either correct - or wrong. Each answer can optionally have a response. If no response is - entered for an answer then the default response "That's the Correct +

                5. Short Answer The student is prompted for a short piece of text. + This is checked against one or more answers. Answers can be either correct + or wrong. Each answer can optionally have a response. If no response is + entered for an answer then the default reponse "That's the Correct Answer" or "That's the Wrong Answer" is shown to the student. If the text entered does not match any of the answers the question is wrong - and the student is shown the default wrong response. + and the student is shown the default wrong response.

                  -

                  By default the comparisons ignore the case of the text. There is an option - to make the comparisons case sensitive.

                  +

                  By default the comparisons ignore the case of the text. There is an option +to make the comparisons case sensitive.

                  -

                  The asterisk (*) character can be used in answers as a "wild card" - character. It stands for any number of characters (including no characters - at all). For example, the answer "Long*" will match - "longer", "longest" and "long". If one of - the answers is just "*" (a single *) this answer will match - anything, it is normally used as the last "catch-all" answer. The - matching process goes through the answers in the order they appear on the - screen. Once a match is found the process stops and the corresponding - result (and response, if present) is returned. So, if for example the - answers are Longest, Long* and * (in that order), the input - "longer" will match the second answer and, in this case, the - third answer, although a match, is ignored.

                  +

                  The asterix (*) character can be used in answers as a "wild card" + character. It stands for any number of characters (including no charcters + at all). For example, the answer "Long*" will match + "longer", "longest" and "long". If one of + the answers is just "*" (a single *) this anwser will match + anything, it is normally used as the last "catch-all" answer. + (If an asterix (*) is actually needed in an answer, it should be entered as + \*, backslash asterix)

                6. -

                  If an asterisk (*) is actually needed in an answer, it should be entered as - \*, backslash asterisk.

                  - -
                7. True/False The answer to this type of question only has two options, - true or false. The student is prompted to choose which is the correct +

                8. True/False The answer to this type of question only has two options, + true or false. The student is prompted to choose which is the correct option. This type of question is basically a Multichoice question with just two choices.

                9. Matching These are quite powerful and flexible questions. They - consist of a list of names or statements which must be correctly matched - against other list of names or statements. For example "Match the + consist of a list of names or statements which must be correctly matched + against other list of names or statements. For example "Match the Capital with the Country" with the two lists Japan, Canada, Italy and Tokyo, Ottawa, Rome. It is possible to have repeated entries in one of the - lists but care should be taken to make the repeats identical. For example - "Identify the type of these creatures" with the lists Sparrow, + lists but care should be taken to make the repeats identical. For example + "Identify the type of these creatures" with the lists Sparrow, Cow, Ant, Dog and Bird, Animal, Insect, Animal.

                  When creating this type of question the items for the first list go into the - Answer boxes and items for the second list go into the Response boxes. Once - created a more sensible labeling scheme is shown. When the student - successfully matches the items the jump on the first answer is used. An - unsuccessful answer jumps to the page on the second answer. The question does - not support custom responses, the student is told how many matches + Answer boxes and items for the second list go into the Response boxes. Once + created a more sensible labelling scheme is shown. When the student + successfully matches the items the jump on the first answer is used. An + unsuccess answer jumps to the page on the second answer. The question does + not support custom responses, the student is told how many matches are correct or if all the matches are correct.

                  -

                  Unlike the Multichoice question where the choices are shown in a random +

                  Unlike the Multichoice question where the choices are shown in a random order, the first list of items is not shuffled but shown in the same order as entered. This allows for "Ordered" questions to be - constructed. Consider the question " Put the following into the order - they were born, the earliest first" with the lists 1., 2., 3., 4. and - Longfellow, Lawrence, Lowell, Larkin. The second list is shuffed before + constructed. Consider the question " Put the following into the order + they were born, the earliest first" with the lists 1., 2., 3., 4. and + Longfellow, Lawrence, Lowell, Larkin. The second list is shuffed before being used in the question, of course.

                10. -
                11. Numerical This type of question requires a number as the answer. - In it's simplest form it requires just one answer to be specified. For - example "What is 2 plus 2?" with the answer 4 given a forward +

                12. Numerical This type of question requires a number as the answer. + In it's simplest form it requires just one answer to be specified. For + example "What is 2 plus 2?" with the answer 4 given a forward jump. However, it is better to specify a range because the internal rounding - of numerical values can make single numeric comparisons rather hit or miss. + of numerical values can make single numeric comparisons rather hit or miss. Thus, if the question were "What is 10 divided by 3" it would be - necessary to give the answer as "Minimum:Maximum", that - is two values separated by a colon (:). Thus if 3.33:3.34 is given as the - acceptable range for the answer, then the answers 3.33, 3.333, 3.3333... - would all be taken as correct answers. "Wrong" answers would + necessary to give the answer as "Minimum:Maximum", that + is two values separated by a colon (:). Thus if 3.33:3.34 is given as the + acceptible range for the answer, then the answers 3.33, 3.333, 3.3333... + would all be taken as correct answers. "Wrong" answers would include 3.3 (less than the minimum) and 3.4 (greater than the maximum).

                  More than one correct answer is allowed and the answers can be either single - or pair of values. Note that the order in which the answers are tested is - Answer 1, Answer 2... so some care needs to taken if the desired response - is to appear. For example the question "When was Larkin born?" - could have the single value of 1922, the exact answer, and the pair of - values 1920:1929, the 20's, as the less exact answer.The order in which - these values should be tested is, obviously, 1922 then 1920:1929. The - first answer might have the response "That's exactly right" - while the other answer's response might be "That's close, you've got + or pair of values. Note that the order in which the answers are tested is + Answer 1, Answer 2... so some care needs to taken if the desired response + is to appear. For example the question "When was Larkin born?" + could have the single value of 1922, the exact answer, and the pair of + values 1920:1929, the 20's, as the less exact answer.The order in which + these values should be tested is, obviously, 1922 then 1920:1929. The + first answer might have the response "That's exactly right" + while the other answer's response might be "That's close, you've got the right decade"

                  - +

                  Wrong answers can be given but depending on their actual range, care should - be taken to place them after the correct answers. For example in adding the + be taken to place them after the correct answers. For example in adding the wrong answer 3:4 to the "10 divided by 3" question it needs to come - after the correct answer. That is the answers are ordered 3.33:3.34 (the - "correct" answer) then 3:4 (the "wrong" answer, but + after the correct answer. That is the answers are ordered 3.33:3.34 (the + "correct" answer) then 3:4 (the "wrong" answer, but not wildly wrong answer!).

                13. diff --git a/lang/en/help/lesson/retake.html b/lang/en/help/lesson/retake.html index dc709260f1a..cf89d35df78 100644 --- a/lang/en/help/lesson/retake.html +++ b/lang/en/help/lesson/retake.html @@ -2,18 +2,18 @@

                  This setting determines whether the students can take the lesson more than once or only once. The teacher may decide that the lesson contains material which - the students ought to know thoroughly. In which case repeated viewing of the + the students ought to know throughly. In which case repeated viewings of the lesson should be allowed. If, however, the material is used more like an exam then the students should not be allowed to re-take the lesson.

                  -

                  When the students are allowed to re-take the lesson, the grades shown - in the Grades page are either their average grade over the re-takes - or their best grade for the lesson. The next parameter determines +

                  When the students are allowed to re-take the lesson, the grades shown + in the Grades page are either their average grade over the re-takes + or their best grade for the lesson. The next parameter determines which of these two grading alternatives is used.

                  - -

                  Note that the Question Analysis always uses the answers from the + +

                  Note that the Question Analysis always uses the answers from the first tries of the lesson, subsequent re-takes by students are ignored.

                  -

                  By default this option is Yes, meaning that students are allowed to +

                  By default this option is Yes, meaning that students are allowed to re-take the lesson. It is expected that only in exceptional circumstances - will this option be set to No.

                  + will this option be set to No. diff --git a/lang/en/help/lesson/review.html b/lang/en/help/lesson/review.html index a0f9f2a23c0..c8905911b6f 100644 --- a/lang/en/help/lesson/review.html +++ b/lang/en/help/lesson/review.html @@ -1,5 +1 @@ -

                  Display Review Button

                  - -

                  This will display a button after an incorrectly answered question, allowing a -student to re-attempt it. It is not compatible with essay questions, so leave this -off if you are using essay questions.

                  \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/slideshow.html b/lang/en/help/lesson/slideshow.html index 79f59df5956..c8905911b6f 100644 --- a/lang/en/help/lesson/slideshow.html +++ b/lang/en/help/lesson/slideshow.html @@ -1,9 +1 @@ -

                  Slide Show

                  - -

                  This enables the display of the lesson as a slide show, with a fixed width, height, -and custom background color. A CSS based scroll bar will be displayed if the width -or height of the slide is exceeded by the content of a page. Questions will 'break -out' of the slide show mode, only pages (branch tables) will be shown in a slide by -default. Buttons labeled with the lang default for "Next" and "Back" will be shown -at the far right and left of the slide if that option is chosen on the page. Other -buttons will be centered below the slide.

                  \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/timed.html b/lang/en/help/lesson/timed.html index a212a698c34..c8905911b6f 100644 --- a/lang/en/help/lesson/timed.html +++ b/lang/en/help/lesson/timed.html @@ -1,7 +1 @@ -

                  Timed

                  - -

                  This puts a time limit on the lesson. Students are shown a JavaScript counter and -the time is recorded in the database. Due to the inconsistent nature of JavaScript, -the timer does not evict a student from the lesson when the time is up, however a -question answered after the time limit is not counted. The time in the database is -checked each time a student submits a question.

                  \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/tree.html b/lang/en/help/lesson/tree.html index 52ca1cdde64..c8905911b6f 100644 --- a/lang/en/help/lesson/tree.html +++ b/lang/en/help/lesson/tree.html @@ -1,5 +1 @@ -

                  Tree View

                  - -

                  This will show a list of the pages and questions in the lesson as links. Pages will -be in blue and questions in red. This is handy for navigating lessons with many -pages.

                  \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/usepassword.html b/lang/en/help/lesson/usepassword.html index 60cb7411ae6..c8905911b6f 100644 --- a/lang/en/help/lesson/usepassword.html +++ b/lang/en/help/lesson/usepassword.html @@ -1,3 +1 @@ -

                  Password Protected Lesson

                  - -

                  This will not allow a student to access the lesson unless they type the password.

                  \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/lesson/width.html b/lang/en/help/lesson/width.html index 137f82c0157..c8905911b6f 100644 --- a/lang/en/help/lesson/width.html +++ b/lang/en/help/lesson/width.html @@ -1,3 +1 @@ -

                  Slide Show Width

                  - -

                  Type a number for how many pixels wide the slides will be.

                  \ No newline at end of file +Under Construction \ No newline at end of file diff --git a/lang/en/help/markdown.html b/lang/en/help/markdown.html index 3896bcda22a..458d5c18691 100644 --- a/lang/en/help/markdown.html +++ b/lang/en/help/markdown.html @@ -1,219 +1,926 @@ -

                  Enhancing Text With Markdown

                  - -
                  - -
                  -

                  Markdown expands upon the simple text entry format available in Moodle by allowing you to easily add emphasis (bold, italics), structure (bullet points and headings) and links (to images or other web resources). You can use Markdown in many places in Moodle, simply select it from the formatting drop down list which is found below the text entry area wherever you have the choice.

                  - - - -

                  Basic Concepts

                  - -

                  To enter text simply type into the text entry area or text box, pressing the return key twice at the end of a paragraph to leave a blank line between the end of one paragraph and the start of the next.

                  - -

                  Emphasising Text

                  - -

                  You can add three levels of emphasis with Markdown, italic text, bold text, or bold and italic text. This is achieved by surrounding the text you wish to emphasise with asterisks e.g.

                  - -

                  *italic* -> italic
                  -**bold** -> bold
                  -***bold italic*** -> bold italic

                  - -

                  Emphasis can be added to single words, a sequence of words, or even parts of words:

                  - -

                  a *single* word -> a single word
                  -***a sequence of words*** -> a sequence of words
                  -in**distinguish**able -> indistinguishable

                  - -

                  Underscores (_) can be used interchangeably with asterisks for this purpose.

                  - -

                  Headings

                  - -

                  Markdown allows you to subdivide your text with headings; six different levels are available though it is unusual for a normal text to use more than three. For example, there are three levels of heading used in the text you are currently reading.

                  - -

                  You can create a heading by starting a line with one or more hash characters (#). One hash is the largest and most important heading, and six hashes gives you the least important or smallest heading.

                  - -

                  # section heading
                  -## sub-section heading
                  -### sub-sub-section heading
                  -etc.

                  - -

                  The first two levels of headings are most common and can be created in alternative ways that make them stand out more in the text version (though the output is identical to the previous method). This alternative uses a line of equal signs (=) or hyphens (-) under the title as follows:

                  - -

                  section heading
                  -===============

                  - -

                  subsection heading
                  -------------------

                  - -

                  Lists

                  - -

                  bullet point lists

                  - -

                  Bullet point lists can be created by starting each line with an asterisk followed by a space before the content of the bullet point. Note that the space is important and should not be forgotten.

                  - -

                  * first point
                  -* second point
                  -* third point

                  - -

                  becomes

                  - -
                    -
                  • first point
                  • -
                  • second point
                  • -
                  • third point
                  • -
                  - -

                  Numbered Lists

                  - -

                  Similarly, numbered lists can be created by starting each line with a number followed by a space and then the relevant text.

                  - -

                  1. first point
                  -2. second point
                  -3. third point

                  - -

                  becomes

                  - -
                    -
                  1. first point
                  2. -
                  3. second point
                  4. -
                  5. third point
                  6. -
                  - -

                  Indented Lists

                  - -

                  You can nest or indent bullet and numbered lists, even mixing bullet point and numbered lists in one structure: -

                  - -
                  -    * top level bullet one
                  -      * sub-bullet  
                  -      * sub-bullet 2 
                  -    * top level bullet two  
                  -    1. numbered point one
                  -       1. nested numbered point  
                  -    2. numbered point two
                  -
                  - -

                  -becomes

                  - -
                    -
                  • top level bullet one -
                      -
                    • sub-bullet
                    • -
                    • sub-bullet 2
                    • -
                  • -
                  • top level bullet two -
                      -
                    1. numbered point one -
                        -
                      1. nested numbered point
                      2. -
                    2. -
                    3. numbered point two
                    4. -
                  • -
                  - -

                  quoted paragraphs

                  - -

                  You can indicate a quoted section of text by beginning each line with an angle bracket (>). This character was chosen as many email programs use it to indicate quoted sections. The output will generally indent the quoted section in from both margins.

                  - -

                  > This is a quoted paragraph
                  -> spread over two lines

                  - -

                  becomes

                  - -
                  -

                  This is a quoted paragraph - spread over two lines

                  -
                  - -

                  You can save some typing by only using a a single angle bracket at the beginning of the first line of the paragraph

                  - -

                  > this is all one single quoted
                  -paragraph even though it is spread
                  -over several lines.

                  - -

                  becomes

                  - -
                  -

                  this is all one single quoted - paragraph even though it is spread over - several lines.

                  -
                  - -

                  Web Links

                  - -

                  There are two ways to create links to web resources: the first is to include the link inline, placing the text you wish readers to click on in square brackets, and the URL of the page they will be taken to immediately afterwards in parentheses with no space or gap between the two sets of brackets; you can also add an optional title for the link in quotes after the URL.

                  - -

                  An [example link](http://example.com/ "Optional Title") in a sentence.

                  - -

                  becomes

                  - -

                  An example link in a sentence.

                  - -

                  The title, if supplied, is displayed in a 'tooltip' which appears when the user hovers their mouse over the link text. Try it on the link that appears above.

                  - -

                  For longer links you can avoid disrupting the flow of text by using a footnote style, attaching a short identifying name to the link in a second set of square brackets (either using a short explanatory word, phrase or simply a number).

                  - -

                  An [example link][ex] in a sentence.

                  - -

                  Then, anywhere else in the document, but preferably either directly after the paragraph with the link, or collected with other link URLs at the bottom of the document, you can define the URL associated with the id:

                  - -

                  [ex]: http://example.com/ "Optional Title"

                  - -

                  The output of this second example would be indistinguishable from the first. It is simply a matter of keeping the working document neatly organised to aid further editing (particularly if you are working with others).

                  - -

                  A final shortcut, if you wish your linked text to be the same as the URL, is to place the URL within angled brackets like so:

                  - -

                  <http://moodle.org/>

                  - -

                  which becomes

                  - -

                  http://moodle.org

                  - -

                  Images

                  - -

                  Images are included in a very similar manner to web links, but are preceded by an exclamation mark. The 'alt text' (alt meaning alternative) is provided to users that cannot see the image for various reasons, thus the text should make sense without any visual cues. Doing this will also provide a reminder or hint to those editing the text in Markdown as to the purpose of the image.

                  - -

                  The 'title' is displayed in a small pop up when the user hovers over the image and so can provide additional information.

                  - -

                  ![alt text](/path/img.jpg "Optional Title")

                  - -

                  And, like web links, you can organise your document by keeping all the URLs together with 'footnote' style references. Just give the image a short, unique name:

                  - -

                  ![alt text][photo]

                  - -

                  and anywhere else in your document, associate that name with an image file:

                  - -

                  [photo]: /url/to/img.jpg "Optional Title"

                  - -

                  Here is an example followed by its output:

                  - -

                  ![Google logo](http://www.google.com/images/logo.gif "The Google logo")

                  - -

                  Google logo

                  - -

                  The 'alt text', which is also important for accessibility reasons, will often be used by browsers when links to images are broken or temporarily unavailable:

                  - -

                  ![alt text for broken image](http://example.com/intentionally.broken.link "This image will never display")

                  - -

                  becomes (exact output dependant upon your browser)

                  - -

                  alt text for broken image

                  - -

                  Advanced Topics

                  - -

                  This short introduction covers the features of Markdown that are used in the vast majority of cases. It is possible to achieve far more complex results, particularly if you already know how to write HTML, but these are covered in a separate document on the Advanced Use of Markdown

                  -

                  More info about advanced use of Markdown

                  -
                  -
                  +

                  Using Markdown format to write web pages

                  + +

                  (This text is a copy of the original Markdown syntax page)

                  + +
                  +
                  + +
                  + + + +
                  + +

                  Overview

                  + +

                  Philosophy

                  + +

                  Markdown is intended to be as easy-to-read and easy-to-write as is feasible.

                  + +

                  Readability, however, is emphasized above all else. A Markdown-formatted +document should be publishable as-is, as plain text, without looking +like it’s been marked up with tags or formatting instructions. While +Markdown’s syntax has been influenced by several existing text-to-HTML +filters — including Setext, atx, Textile, reStructuredText, +Grutatext, and EtText — the single biggest source of +inspiration for Markdown’s syntax is the format of plain text email.

                  + +

                  To this end, Markdown’s syntax is comprised entirely of punctuation +characters, which punctuation characters have been carefully chosen so +as to look like what they mean. E.g., asterisks around a word actually +look like *emphasis*. Markdown lists look like, well, lists. Even +blockquotes look like quoted passages of text, assuming you’ve ever +used email.

                  + +

                  Inline HTML

                  + +

                  Markdown’s syntax is intended for one purpose: to be used as a +format for writing for the web.

                  + +

                  Markdown is not a replacement for HTML, or even close to it. Its +syntax is very small, corresponding only to a very small subset of +HTML tags. The idea is not to create a syntax that makes it easier +to insert HTML tags. In my opinion, HTML tags are already easy to +insert. The idea for Markdown is to make it easy to read, write, and +edit prose. HTML is a publishing format; Markdown is a writing +format. Thus, Markdown’s formatting syntax only addresses issues that +can be conveyed in plain text.

                  + +

                  For any markup that is not covered by Markdown’s syntax, you simply +use HTML itself. There’s no need to preface it or delimit it to +indicate that you’re switching from Markdown to HTML; you just use +the tags.

                  + +

                  The only restrictions are that block-level HTML elements — e.g. <div>, +<table>, <pre>, <p>, etc. — must be separated from surrounding +content by blank lines, and the start and end tags of the block should +not be indented with tabs or spaces. Markdown is smart enough not +to add extra (unwanted) <p> tags around HTML block-level tags.

                  + +

                  For example, to add an HTML table to a Markdown article:

                  + +
                  This is a regular paragraph.
                  +
                  +<table>
                  +    <tr>
                  +        <td>Foo</td>
                  +    </tr>
                  +</table>
                  +
                  +This is another regular paragraph.
                  +
                  + +

                  Note that Markdown formatting syntax is not processed within block-level +HTML tags. E.g., you can’t use Markdown-style *emphasis* inside an +HTML block.

                  + +

                  Span-level HTML tags — e.g. <span>, <cite>, or <del> — can be +used anywhere in a Markdown paragraph, list item, or header. If you +want, you can even use HTML tags instead of Markdown formatting; e.g. if +you’d prefer to use HTML <a> or <img> tags instead of Markdown’s +link or image syntax, go right ahead.

                  + +

                  Unlike block-level HTML tags, Markdown syntax is processed within +span-level tags.

                  + +

                  Automatic Escaping for Special Characters

                  + +

                  In HTML, there are two characters that demand special treatment: < +and &. Left angle brackets are used to start tags; ampersands are +used to denote HTML entities. If you want to use them as literal +characters, you must escape them as entities, e.g. &lt;, and +&amp;.

                  + +

                  Ampersands in particular are bedeviling for web writers. If you want to +write about ‘AT&T’, you need to write ‘AT&amp;T’. You even need to +escape ampersands within URLs. Thus, if you want to link to:

                  + +
                  http://images.google.com/images?num=30&q=larry+bird
                  +
                  + +

                  you need to encode the URL as:

                  + +
                  http://images.google.com/images?num=30&amp;q=larry+bird
                  +
                  + +

                  in your anchor tag href attribute. Needless to say, this is easy to +forget, and is probably the single most common source of HTML validation +errors in otherwise well-marked-up web sites.

                  + +

                  Markdown allows you to use these characters naturally, taking care of +all the necessary escaping for you. If you use an ampersand as part of +an HTML entity, it remains unchanged; otherwise it will be translated +into &amp;.

                  + +

                  So, if you want to include a copyright symbol in your article, you can write:

                  + +
                  &copy;
                  +
                  + +

                  and Markdown will leave it alone. But if you write:

                  + +
                  AT&T
                  +
                  + +

                  Markdown will translate it to:

                  + +
                  AT&amp;T
                  +
                  + +

                  Similarly, because Markdown supports inline HTML, if you use +angle brackets as delimiters for HTML tags, Markdown will treat them as +such. But if you write:

                  + +
                  4 < 5
                  +
                  + +

                  Markdown will translate it to:

                  + +
                  4 &lt; 5
                  +
                  + +

                  However, inside Markdown code spans and blocks, angle brackets and +ampersands are always encoded automatically. This makes it easy to use +Markdown to write about HTML code. (As opposed to raw HTML, which is a +terrible format for writing about HTML syntax, because every single < +and & in your example code needs to be escaped.)

                  + +
                  + +

                  Block Elements

                  + +

                  Paragraphs and Line Breaks

                  + +

                  A paragraph is simply one or more consecutive lines of text, separated +by one or more blank lines. (A blank line is any line that looks like a +blank line — a line containing nothing but spaces or tabs is considered +blank.) Normal paragraphs should not be intended with spaces or tabs.

                  + +

                  The implication of the “one or more consecutive lines of text” rule is +that Markdown supports “hard-wrapped” text paragraphs. This differs +significantly from most other text-to-HTML formatters (including Movable +Type’s “Convert Line Breaks” option) which translate every line break +character in a paragraph into a <br /> tag.

                  + +

                  When you do want to insert a <br /> break tag using Markdown, you +end a line with two or more spaces, then type return.

                  + +

                  Yes, this takes a tad more effort to create a <br />, but a simplistic +“every line break is a <br />” rule wouldn’t work for Markdown. +Markdown’s email-style blockquoting and multi-paragraph list items +work best — and look better — when you format them with hard breaks.

                  + + + +

                  Markdown supports two styles of headers, Setext and atx.

                  + +

                  Setext-style headers are “underlined” using equal signs (for first-level +headers) and dashes (for second-level headers). For example:

                  + +
                  This is an H1
                  +=============
                  +
                  +This is an H2
                  +-------------
                  +
                  + +

                  Any number of underlining =’s or -’s will work.

                  + +

                  Atx-style headers use 1-6 hash characters at the start of the line, +corresponding to header levels 1-6. For example:

                  + +
                  # This is an H1
                  +
                  +## This is an H2
                  +
                  +###### This is an H6
                  +
                  + +

                  Optionally, you may “close” atx-style headers. This is purely +cosmetic — you can use this if you think it looks better. The +closing hashes don’t even need to match the number of hashes +used to open the header. (The number of opening hashes +determines the header level.) :

                  + +
                  # This is an H1 #
                  +
                  +## This is an H2 ##
                  +
                  +### This is an H3 ######
                  +
                  + +

                  Blockquotes

                  + +

                  Markdown uses email-style > characters for blockquoting. If you’re +familiar with quoting passages of text in an email message, then you +know how to create a blockquote in Markdown. It looks best if you hard +wrap the text and put a > before every line:

                  + +
                  > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
                  +> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
                  +> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
                  +> 
                  +> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
                  +> id sem consectetuer libero luctus adipiscing.
                  +
                  + +

                  Markdown allows you to be lazy and only put the > before the first +line of a hard-wrapped paragraph:

                  + +
                  > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
                  +consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
                  +Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
                  +
                  +> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
                  +id sem consectetuer libero luctus adipiscing.
                  +
                  + +

                  Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by +adding additional levels of >:

                  + +
                  > This is the first level of quoting.
                  +>
                  +> > This is nested blockquote.
                  +>
                  +> Back to the first level.
                  +
                  + +

                  Blockquotes can contain other Markdown elements, including headers, lists, +and code blocks:

                  + +
                  > ## This is a header.
                  +> 
                  +> 1.   This is the first list item.
                  +> 2.   This is the second list item.
                  +> 
                  +> Here's some example code:
                  +> 
                  +>     return shell_exec("echo $input | $markdown_script");
                  +
                  + +

                  Any decent text editor should make email-style quoting easy. For +example, with BBEdit, you can make a selection and choose Increase +Quote Level from the Text menu.

                  + +

                  Lists

                  + +

                  Markdown supports ordered (numbered) and unordered (bulleted) lists.

                  + +

                  Unordered lists use asterisks, pluses, and hyphens — interchangably +— as list markers:

                  + +
                  *   Red
                  +*   Green
                  +*   Blue
                  +
                  + +

                  is equivalent to:

                  + +
                  +   Red
                  ++   Green
                  ++   Blue
                  +
                  + +

                  and:

                  + +
                  -   Red
                  +-   Green
                  +-   Blue
                  +
                  + +

                  Ordered lists use numbers followed by periods:

                  + +
                  1.  Bird
                  +2.  McHale
                  +3.  Parish
                  +
                  + +

                  It’s important to note that the actual numbers you use to mark the +list have no effect on the HTML output Markdown produces. The HTML +Markdown produces from the above list is:

                  + +
                  <ol>
                  +<li>Bird</li>
                  +<li>McHale</li>
                  +<li>Parish</li>
                  +</ol>
                  +
                  + +

                  If you instead wrote the list in Markdown like this:

                  + +
                  1.  Bird
                  +1.  McHale
                  +1.  Parish
                  +
                  + +

                  or even:

                  + +
                  3. Bird
                  +1. McHale
                  +8. Parish
                  +
                  + +

                  you’d get the exact same HTML output. The point is, if you want to, +you can use ordinal numbers in your ordered Markdown lists, so that +the numbers in your source match the numbers in your published HTML. +But if you want to be lazy, you don’t have to.

                  + +

                  If you do use lazy list numbering, however, you should still start the +list with the number 1. At some point in the future, Markdown may support +starting ordered lists at an arbitrary number.

                  + +

                  List markers typically start at the left margin, but may be indented by +up to three spaces. List markers must be followed by one or more spaces +or a tab.

                  + +

                  To make lists look nice, you can wrap items with hanging indents:

                  + +
                  *   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
                  +    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
                  +    viverra nec, fringilla in, laoreet vitae, risus.
                  +*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
                  +    Suspendisse id sem consectetuer libero luctus adipiscing.
                  +
                  + +

                  But if you want to be lazy, you don’t have to:

                  + +
                  *   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
                  +Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
                  +viverra nec, fringilla in, laoreet vitae, risus.
                  +*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
                  +Suspendisse id sem consectetuer libero luctus adipiscing.
                  +
                  + +

                  If list items are separated by blank lines, Markdown will wrap the +items in <p> tags in the HTML output. For example, this input:

                  + +
                  *   Bird
                  +*   Magic
                  +
                  + +

                  will turn into:

                  + +
                  <ul>
                  +<li>Bird</li>
                  +<li>Magic</li>
                  +</ul>
                  +
                  + +

                  But this:

                  + +
                  *   Bird
                  +
                  +*   Magic
                  +
                  + +

                  will turn into:

                  + +
                  <ul>
                  +<li><p>Bird</p></li>
                  +<li><p>Magic</p></li>
                  +</ul>
                  +
                  + +

                  List items may consist of multiple paragraphs. Each subsequent +paragraph in a list item must be intended by either 4 spaces +or one tab:

                  + +
                  1.  This is a list item with two paragraphs. Lorem ipsum dolor
                  +    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
                  +    mi posuere lectus.
                  +
                  +    Vestibulum enim wisi, viverra nec, fringilla in, laoreet
                  +    vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
                  +    sit amet velit.
                  +
                  +2.  Suspendisse id sem consectetuer libero luctus adipiscing.
                  +
                  + +

                  It looks nice if you indent every line of the subsequent +paragraphs, but here again, Markdown will allow you to be +lazy:

                  + +
                  *   This is a list item with two paragraphs.
                  +
                  +    This is the second paragraph in the list item. You're
                  +only required to indent the first line. Lorem ipsum dolor
                  +sit amet, consectetuer adipiscing elit.
                  +
                  +*   Another item in the same list.
                  +
                  + +

                  To put a blockquote within a list item, the blockquote’s > +delimiters need to be indented:

                  + +
                  *   A list item with a blockquote:
                  +
                  +    > This is a blockquote
                  +    > inside a list item.
                  +
                  + +

                  To put a code block within a list item, the code block needs +to be indented twice — 8 spaces or two tabs:

                  + +
                  *   A list item with a code block:
                  +
                  +        <code goes here>
                  +
                  + +

                  It’s worth noting that it’s possible to trigger an ordered list by +accident, by writing something like this:

                  + +
                  1986. What a great season.
                  +
                  + +

                  In other words, a number-period-space sequence at the beginning of a +line. To avoid this, you can backslash-escape the period:

                  + +
                  1986\. What a great season.
                  +
                  + +

                  Code Blocks

                  + +

                  Pre-formatted code blocks are used for writing about programming or +markup source code. Rather than forming normal paragraphs, the lines +of a code block are interpreted literally. Markdown wraps a code block +in both <pre> and <code> tags.

                  + +

                  To produce a code block in Markdown, simply indent every line of the +block by at least 4 spaces or 1 tab. For example, given this input:

                  + +
                  This is a normal paragraph:
                  +
                  +    This is a code block.
                  +
                  + +

                  Markdown will generate:

                  + +
                  <p>This is a normal paragraph:</p>
                  +
                  +<pre><code>This is a code block.
                  +</code></pre>
                  +
                  + +

                  One level of indentation — 4 spaces or 1 tab — is removed from each +line of the code block. For example, this:

                  + +
                  Here is an example of AppleScript:
                  +
                  +    tell application "Foo"
                  +        beep
                  +    end tell
                  +
                  + +

                  will turn into:

                  + +
                  <p>Here is an example of AppleScript:</p>
                  +
                  +<pre><code>tell application "Foo"
                  +    beep
                  +end tell
                  +</code></pre>
                  +
                  + +

                  A code block continues until it reaches a line that is not indented +(or the end of the article).

                  + +

                  Within a code block, ampersands (&) and angle brackets (< and >) +are automatically converted into HTML entities. This makes it very +easy to include example HTML source code using Markdown — just paste +it and indent it, and Markdown will handle the hassle of encoding the +ampersands and angle brackets. For example, this:

                  + +
                      <div class="footer">
                  +        &copy; 2004 Foo Corporation
                  +    </div>
                  +
                  + +

                  will turn into:

                  + +
                  <pre><code>&lt;div class="footer"&gt;
                  +    &amp;copy; 2004 Foo Corporation
                  +&lt;/div&gt;
                  +</code></pre>
                  +
                  + +

                  Regular Markdown syntax is not processed within code blocks. E.g., +asterisks are just literal asterisks within a code block. This means +it’s also easy to use Markdown to write about Markdown’s own syntax.

                  + +

                  Horizontal Rules

                  + +

                  You can produce a horizontal rule tag (<hr />) by placing three or +more hyphens or asterisks on a line by themselves. If you wish, you +may use spaces between the hyphens or asterisks. Each of the following +lines will produce a horizontal rule:

                  + +
                  * * *
                  +
                  +***
                  +
                  +*****
                  +
                  +- - -
                  +
                  +---------------------------------------
                  +
                  + +
                  + +

                  Span Elements

                  + + + +

                  Markdown supports two style of links: inline and reference.

                  + +

                  In both styles, the link text is delimited by [square brackets].

                  + +

                  To create an inline link, use a set of regular parentheses immediately +after the link text’s closing square bracket. Inside the parentheses, +put the URL where you want the link to point, along with an optional +title for the link, surrounded in quotes. For example:

                  + +
                  This is [an example](http://example.com/ "Title") inline link.
                  +
                  +[This link](http://example.net/) has no title attribute.
                  +
                  + +

                  Will produce:

                  + +
                  <p>This is <a href="http://example.com/" title="Title">
                  +an example</a> inline link.</p>
                  +
                  +<p><a href="http://example.net/">This link</a> has no
                  +title attribute.</p>
                  +
                  + +

                  If you’re referring to a local resource on the same server, you can +use relative paths:

                  + +
                  See my [About](/about/) page for details.
                  +
                  + +

                  Reference-style links use a second set of square brackets, inside +which you place a label of your choosing to identify the link:

                  + +
                  This is [an example][id] reference-style link.
                  +
                  + +

                  You can optionally use a space to separate the sets of brackets:

                  + +
                  This is [an example] [id] reference-style link.
                  +
                  + +

                  Then, anywhere in the document, you define your link label like this, +on a line by itself:

                  + +
                  [id]: http://example.com/  "Optional Title Here"
                  +
                  + +

                  That is:

                  + +
                    +
                  • Square brackets containing the link identifier (optionally +indented from the left margin using spaces or tabs);
                  • +
                  • followed by a colon;
                  • +
                  • followed by one or more spaces (or tabs);
                  • +
                  • followed by the URL for the link;
                  • +
                  • optionally followed by a title attribute for the link, enclosed +in double or single quotes.
                  • +
                  + +

                  The link URL may, optionally, be surrounded by angle brackets:

                  + +
                  [id]: <http://example.com/>  "Optional Title Here"
                  +
                  + +

                  You can put the title attribute on the next line and use extra spaces +or tabs for padding, which tends to look better with longer URLs:

                  + +
                  [id]: http://example.com/longish/path/to/resource/here
                  +    "Optional Title Here"
                  +
                  + +

                  Link definitions are only used for creating links during Markdown +processing, and are stripped from your document in the HTML output.

                  + +

                  Link definition names may constist of letters, numbers, spaces, and punctuation — but they are not case sensitive. E.g. these two links:

                  + +
                  [link text][a]
                  +[link text][A]
                  +
                  + +

                  are equivalent.

                  + +

                  The implicit link name shortcut allows you to omit the name of the +link, in which case the link text itself is used as the name. +Just use an empty set of square brackets — e.g., to link the word +“Google” to the google.com web site, you could simply write:

                  + +
                  [Google][]
                  +
                  + +

                  And then define the link:

                  + +
                  [Google]: http://google.com/
                  +
                  + +

                  Because link names may contain spaces, this shortcut even works for +multiple words in the link text:

                  + +
                  Visit [Daring Fireball][] for more information.
                  +
                  + +

                  And then define the link:

                  + +
                  [Daring Fireball]: http://daringfireball.net/
                  +
                  + +

                  Link definitions can be placed anywhere in your Markdown document. I +tend to put them immediately after each paragraph in which they’re +used, but if you want, you can put them all at the end of your +document, sort of like footnotes.

                  + +

                  Here’s an example of reference links in action:

                  + +
                  I get 10 times more traffic from [Google] [1] than from
                  +[Yahoo] [2] or [MSN] [3].
                  +
                  +  [1]: http://google.com/        "Google"
                  +  [2]: http://search.yahoo.com/  "Yahoo Search"
                  +  [3]: http://search.msn.com/    "MSN Search"
                  +
                  + +

                  Using the implicit link name shortcut, you could instead write:

                  + +
                  I get 10 times more traffic from [Google][] than from
                  +[Yahoo][] or [MSN][].
                  +
                  +  [google]: http://google.com/        "Google"
                  +  [yahoo]:  http://search.yahoo.com/  "Yahoo Search"
                  +  [msn]:    http://search.msn.com/    "MSN Search"
                  +
                  + +

                  Both of the above examples will produce the following HTML output:

                  + +
                  <p>I get 10 times more traffic from <a href="http://google.com/"
                  +title="Google">Google</a> than from
                  +<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
                  +or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
                  +
                  + +

                  For comparison, here is the same paragraph written using +Markdown’s inline link style:

                  + +
                  I get 10 times more traffic from [Google](http://google.com/ "Google")
                  +than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
                  +[MSN](http://search.msn.com/ "MSN Search").
                  +
                  + +

                  The point of reference-style links is not that they’re easier to +write. The point is that with reference-style links, your document +source is vastly more readable. Compare the above examples: using +reference-style links, the paragraph itself is only 81 characters +long; with inline-style links, it’s 176 characters; and as raw HTML, +it’s 234 characters. In the raw HTML, there’s more markup than there +is text.

                  + +

                  With Markdown’s reference-style links, a source document much more +closely resembles the final output, as rendered in a browser. By +allowing you to move the markup-related metadata out of the paragraph, +you can add links without interrupting the narrative flow of your +prose.

                  + +

                  Emphasis

                  + +

                  Markdown treats asterisks (*) and underscores (_) as indicators of +emphasis. Text wrapped with one * or _ will be wrapped with an +HTML <em> tag; double *’s or _’s will be wrapped with an HTML +<strong> tag. E.g., this input:

                  + +
                  *single asterisks*
                  +
                  +_single underscores_
                  +
                  +**double asterisks**
                  +
                  +__double underscores__
                  +
                  + +

                  will produce:

                  + +
                  <em>single asterisks</em>
                  +
                  +<em>single underscores</em>
                  +
                  +<strong>double asterisks</strong>
                  +
                  +<strong>double underscores</strong>
                  +
                  + +

                  You can use whichever style you prefer; the lone restriction is that +the same character must be used to open and close an emphasis span.

                  + +

                  Emphasis can be used in the middle of a word:

                  + +
                  un*fucking*believable
                  +
                  + +

                  But if you surround an * or _ with spaces, it’ll be treated as a +literal asterisk or underscore.

                  + +

                  To produce a literal asterisk or underscore at a position where it +would otherwise be used as an emphasis delimiter, you can backslash +escape it:

                  + +
                  \*this text is surrounded by literal asterisks\*
                  +
                  + +

                  Code

                  + +

                  To indicate a span of code, wrap it with backtick quotes (`). +Unlike a pre-formatted code block, a code span indicates code within a +normal paragraph. For example:

                  + +
                  Use the `printf()` function.
                  +
                  + +

                  will produce:

                  + +
                  <p>Use the <code>printf()</code> function.</p>
                  +
                  + +

                  To include a literal backtick character within a code span, you can +backslash escape it:

                  + +
                  `There is a literal backtick (\`) here.`
                  +
                  + +

                  Or, if you prefer, you can use multiple backticks as the opening and +closing delimiters:

                  + +
                  ``There is a literal backtick (`) here.``
                  +
                  + +

                  Both of the previous two examples will produce this:

                  + +
                  <p><code>There is a literal backtick (`) here.</code></p>
                  +
                  + +

                  With a code span, ampersands and angle brackets are encoded as HTML +entities automatically, which makes it easy to include example HTML +tags. Markdown will turn this:

                  + +
                  Please don't use any `<blink>` tags.
                  +
                  + +

                  into:

                  + +
                  <p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
                  +
                  + +

                  You can write this:

                  + +
                  `&#8212;` is the decimal-encoded equivalent of `&mdash;`.
                  +
                  + +

                  to produce:

                  + +
                  <p><code>&amp;#8212;</code> is the decimal-encoded
                  +equivalent of <code>&amp;mdash;</code>.</p>
                  +
                  + +

                  Images

                  + +

                  Admittedly, it’s fairly difficult to devise a “natural” syntax for +placing images into a plain text document format.

                  + +

                  Markdown uses an image syntax that is intended to resemble the syntax +for links, allowing for two styles: inline and reference.

                  + +

                  Inline image syntax looks like this:

                  + +
                  ![Alt text](/path/to/img.jpg)
                  +
                  +![Alt text](/path/to/img.jpg "Optional title")
                  +
                  + +

                  That is:

                  + +
                    +
                  • An exclamation mark: !;
                  • +
                  • followed by a set of square brackets, containing the alt +attribute text for the image;
                  • +
                  • followed by a set of parentheses, containing the URL or path to +the image, and an optional title attribute enclosed in double +or single quotes.
                  • +
                  + +

                  Reference-style image syntax looks like this:

                  + +
                  ![Alt text][id]
                  +
                  + +

                  Where “id” is the name of a defined image reference. Image references +are defined using syntax identical to link references:

                  + +
                  [id]: url/to/image  "Optional title attribute"
                  +
                  + +

                  As of this writing, Markdown has no syntax for specifying the +dimensions of an image; if this is important to you, you can simply +use regular HTML <img> tags.

                  + +
                  + +

                  Miscellaneous

                  + + + +

                  Markdown supports a shortcut style for creating “automatic” links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:

                  + +
                  <http://example.com/>
                  +
                  + +

                  Markdown will turn this into:

                  + +
                  <a href="http://example.com/">http://example.com/</a>
                  +
                  + +

                  Automatic links for email addresses work similarly, except that +Markdown will also perform a bit of randomized decimal and hex +entity-encoding to help obscure your address from address-harvesting +spambots. For example, Markdown will turn this:

                  + +
                  <address@example.com>
                  +
                  + +

                  into something like this:

                  + +
                  <a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
                  +&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
                  +&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
                  +&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
                  +
                  + +

                  which will render in a browser as a clickable link to “address@example.com”.

                  + +

                  (This sort of entity-encoding trick will indeed fool many, if not +most, address-harvesting bots, but it definitely won’t fool all of +them. It’s better than nothing, but an address published in this way +will probably eventually start receiving spam.)

                  + +

                  Backslash Escapes

                  + +

                  Markdown allows you to use backslash escapes to generate literal +characters which would otherwise have special meaning in Markdown’s +formatting syntax. For example, if you wanted to surround a word with +literal asterisks (instead of an HTML <em> tag), you can backslashes +before the asterisks, like this:

                  + +
                  \*literal asterisks\*
                  +
                  + +

                  Markdown provides backslash escapes for the following characters:

                  + +
                  \   backslash
                  +`   backtick
                  +*   asterisk
                  +_   underscore
                  +{}  curly braces
                  +[]  square brackets
                  +()  parentheses
                  +#   hash mark
                  +.   dot
                  +!   exclamation mark
                  +
                  + +
                  diff --git a/lang/en/help/mods.html b/lang/en/help/mods.html index 090eee82d7f..fe899937f94 100644 --- a/lang/en/help/mods.html +++ b/lang/en/help/mods.html @@ -1,4 +1,4 @@ -

                  Activity Modules

                  +

                  Activity Modules

                  -

                  Moodle contains a wide range of activity modules that can be used to - build up any type of course.

                  +

                  Moodle contains a wide range of activity modules that can be used to + build up any type of course.

                  diff --git a/lang/en/help/picture.html b/lang/en/help/picture.html index 20ba1f1669d..f98f63a44a6 100644 --- a/lang/en/help/picture.html +++ b/lang/en/help/picture.html @@ -1,18 +1,18 @@ -

                  Uploading a picture

                  +

                  Uploading a picture

                  -

                  You can upload a picture from your computer to this server, and this picture will be used in various places to represent you.

                  -

                  For this reason, the best images to use are a close-up of your face, but you can use any image you like.

                  -

                  The picture must be in JPG or PNG format (ie the names will usually end in .jpg or .png).

                  -

                  You can get a picture file using one of four methods:

                  +

                  You can upload a picture from your computer to this server, and this picture will be used in various places to represent you. +

                  For this reason, the best images to use are a close-up of your face, but you can use any image you like. +

                  The picture must be in JPG or PNG format (ie the names will usually end in .jpg or .png). +

                  You can get a picture file using one of four methods: -

                    -
                  1. Using a digital camera, your photos will most likely already be on your computer in the right format.
                  2. -
                  3. You can use a scanner to scan a printed photograph. Make sure you save it as JPG or PNG format.
                  4. -
                  5. If you're artistic, you might draw a picture using a paint program.
                  6. -
                  7. Lastly, you can "steal" images from the web. http://images.google.com 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).
                  8. -
                  +
                    +
                  1. Using a digital camera, your photos will most likely already be on your computer in the right format. +
                  2. You can use a scanner to scan a printed photograph. Make sure you save it as JPG or PNG format. +
                  3. If you're artistic, you might draw a picture using a paint program. +
                  4. Lastly, you can "steal" images from the web. http://images.google.com 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). +
                  -

                  To upload the image, click the "Browse" button on this editing page, and select the image from your hard disk.

                  -

                  NOTE: Make sure that the file is not larger than the maximum size listed, or it will not be uploaded.

                  -

                  Then click "Update my Profile" at the bottom - the image file will be cropped to a square and resized down to 100x100 pixels.

                  -

                  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.

                  +

                  To upload the image, click the "Browse" button on this editing page, and select the image from your hard disk. +

                  NOTE: Make sure that the file is not larger than the maximum size listed, or it will not be uploaded. +

                  Then click "Update my Profile" at the bottom - the image file will be cropped to a square and resized down to 100x100 pixels. +

                  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. diff --git a/lang/en/help/questionnaire/qmanage.html b/lang/en/help/questionnaire/qmanage.html index e2a95d58364..d3447f00bdb 100755 --- a/lang/en/help/questionnaire/qmanage.html +++ b/lang/en/help/questionnaire/qmanage.html @@ -1,5 +1,5 @@ -

                  Manage Surveys using phpESP

                  -

                  +

                  Manage Surveys using phpESP

                  +

                  The questionnaire module uses phpESP to create and manage surveys. Use this link to manage your surveys. -

                  +

                  diff --git a/lang/en/help/questionnaire/qtype.html b/lang/en/help/questionnaire/qtype.html index 92502105a4f..a10602fe3b8 100755 --- a/lang/en/help/questionnaire/qtype.html +++ b/lang/en/help/questionnaire/qtype.html @@ -1,6 +1,6 @@ -

                  Survey response type

                  -

                  +

                  Survey response type

                  +

                  If you want your users to only be able to fill out the survey once, choose "respond once".
                  If you want them to be able to fill it out multiple times, choose "respond many". -

                  +

                  diff --git a/lang/en/help/questionnaire/questionnaireid.html b/lang/en/help/questionnaire/questionnaireid.html index 1373542cc0f..73652d6db53 100755 --- a/lang/en/help/questionnaire/questionnaireid.html +++ b/lang/en/help/questionnaire/questionnaireid.html @@ -1,6 +1,6 @@ -

                  Choose a survey

                  -

                  +

                  Choose a survey

                  +

                  Select the survey from the list of available active surveys available from phpESP. If your survey isn't listed, its probably not active. -

                  +

                  diff --git a/lang/en/help/questionnaire/respondenttype.html b/lang/en/help/questionnaire/respondenttype.html index f5559b66107..e085d5232a8 100755 --- a/lang/en/help/questionnaire/respondenttype.html +++ b/lang/en/help/questionnaire/respondenttype.html @@ -1,6 +1,6 @@ -

                  Survey response type

                  -

                  +

                  Survey response type

                  +

                  You can display your users' full names with each response by setting this to "fullname".
                  - You can hide your users' identities from the responses by setting this to "anonymous". -

                  + You can hide your users' identities from the respones by setting this to "anonymous". +

                  diff --git a/lang/en/help/questions.html b/lang/en/help/questions.html index 0701bfd87d7..7012be8109b 100644 --- a/lang/en/help/questions.html +++ b/lang/en/help/questions.html @@ -1,172 +1,86 @@ -

                  Questions

                  - - - -

                  A good way to help other people think about a subject is to - - ask them a question about it. Being asked a good question - - can really help us put information together, evaluate our - - existing ideas and create new ideas.

                  - - - -

                  Asking questions that are specifically intended to help - - others learn is known as Socratic questioning, named - - after Socrates in Ancient Greece.

                  - - - -

                  Socratic questions require you to listen very carefully - - to the other person to help you judge and phrase your question - - in a helpful, constructive, and hopefully non-confrontational way. - - - -

                  Here are some examples of such questions:

                  - - - - - - - -

                  Questions of clarification

                  - -
                    - -
                  • What do you mean when you say ______?
                  • - -
                  • What is your main point?
                  • - -
                  • How does _____ relate to _____?
                  • - -
                  • Could you put that another way?
                  • - -
                  • Let me see if I understand you; do you mean _____ or _____?
                  • - -
                  • How does this relate to our problem/discussion/issue?
                  • - -
                  • Jane, can you summarize in your own words what Richard said? ... Richard, is this what you meant?
                  • - -
                  • Could you give me an example?
                  • - -
                  • Would _____ be a good example of that?
                  • - -
                  - -

                  Questions that probe assumptions

                  - -
                    - -
                  • What are you assuming here?
                  • - -
                  • What is Jenny assuming?
                  • - -
                  • What could we assume instead?
                  • - -
                  • You seem to be assuming _____. Do I understand you correctly?
                  • - -
                  • All of your reasoning depends on the idea that _____. Why have you based your reasoning on _____ instead of _____?
                  • - -
                  • You seem to be assuming _____. How do you justify taking that for granted?
                  • - -
                  • Is that always the case? Why do you think the assumption holds here?
                  • - -
                  • Why would someone make that assumption?
                  • - -
                  - -

                  Questions that probe reasons and evidence

                  - -
                    - -
                  • Could you explain your reasons to us?
                  • - -
                  • How does that apply to this case?
                  • - -
                  • Is there a reason to doubt that evidence?
                  • - -
                  • Who is in a position to know that is true?
                  • - -
                  • What would you say to someone who said that ____?
                  • - -
                  • Can someone else give evidence to support that view?
                  • - -
                  • By what reasoning did you come to that conclusion?
                  • - -
                  • How could we find out if that is true?
                  • - -
                  - -

                  Questions about viewpoints or perspectives

                  - -
                    - -
                  • What are you implying by that?
                  • - -
                  • When you say _____, are you implying _____?
                  • - -
                  • But, if that happened, what else would happen as a result? Why?
                  • - -
                  • What effect would that have?
                  • - -
                  • Would that necessarily happen or only possibly/probably happen?
                  • - -
                  • What is an alternative?
                  • - -
                  • If _____ and _____ are the case, then what might also be true?
                  • - -
                  • If we say that ____ is ethical, how about _____?
                  • - -
                  - -

                  Questions that probe implications and consequences

                  - -
                    - -
                  • How can we find out?
                  • - -
                  • What does this question assume?
                  • - -
                  • Would _____ ask this question differently?
                  • - -
                  • How could someone settle this question?
                  • - -
                  • Can we break this question down at all?
                  • - -
                  • Is this question clear? Do we understand it?
                  • - -
                  • Is this question easy or hard to answer? Why?
                  • - -
                  • Do we all agree that this is the question?
                  • - -
                  • To answer this question, what other questions must we answer first?
                  • - -
                  • How would _____ state the issue?
                  • - -
                  • Why is this issue important?
                  • - -
                  • Is this the most important question, or is there an underlying question?
                  • - -
                  • Can you see how this might relate to ________?
                  • - -
                  - - - -
                  - -Questions adapted from Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA. - - - -

                  More info about writing

                  - -

                  More info about reading

                  - +

                  Questions

                  + +

                  A good way to help other people think about a subject is to + ask them a question about it. Being asked a good question + can really help us put information together, evaluate our + existing ideas and create new ideas.

                  + +

                  Asking questions that are specifically intended to help + others learn is known as Socratic questioning, named + after Socrates in Ancient Greece.

                  + +

                  Socratic questions require you to listen very carefully + to the other person to help you judge and phrase your question + in a helpful, constructive, and hopefully non-confrontational way. + +

                  Here are some examples of such questions:

                  + + + +

                  Questions of clarification

                  +
                    +
                  • What do you mean when you say ______?
                  • +
                  • What is your main point?
                  • +
                  • How does _____ relate to _____?
                  • +
                  • Could you put that another way?
                  • +
                  • Let me see if I understand you; do you mean _____ or _____?
                  • +
                  • How does this relate to our problem/discussion/issue?
                  • +
                  • Jane, can you summarize in your own words what Richard said? ... Richard, is this what you meant?
                  • +
                  • Could you give me an example?
                  • +
                  • Would _____ be a good example of that?
                  • +
                  +

                  Questions that probe assumptions

                  +
                    +
                  • What are you assuming here?
                  • +
                  • What is Jenny assuming?
                  • +
                  • What could we assume instead?
                  • +
                  • You seem to be assuming _____. Do I understand you correctly?
                  • +
                  • All of your reasoning depends on the idea that _____. Why have you based your reasoning on _____ instead of _____?
                  • +
                  • You seem to be assuming _____. How do you justify taking that for granted?
                  • +
                  • Is that always the case? Why do you think the assumption holds here?
                  • +
                  • Why would someone make that assumption?
                  • +
                  +

                  Questions that probe reasons and evidence

                  +
                    +
                  • Could you explain your reasons to us?
                  • +
                  • How does that apply to this case?
                  • +
                  • Is there a reason to doubt that evidence?
                  • +
                  • Who is in a position to know that is true?
                  • +
                  • What would you say to someone who said that ____?
                  • +
                  • Can someone else give evidence to support that view?
                  • +
                  • By what reasoning did you come to that conclusion?
                  • +
                  • How could we find out if that is true?
                  • +
                  +

                  Questions about viewpoints or perspectives

                  +
                    +
                  • What are you implying by that?
                  • +
                  • When you say _____, are you implying _____?
                  • +
                  • But, if that happened, what else would happen as a result? Why?
                  • +
                  • What effect would that have?
                  • +
                  • Would that necessarily happen or only possibly/probably happen?
                  • +
                  • What is an alternative?
                  • +
                  • If _____ and _____ are the case, then what might also be true?
                  • +
                  • If we say that ____ is ethical, how about _____?
                  • +
                  +

                  Questions that probe implications and consequences

                  +
                    +
                  • How can we find out?
                  • +
                  • What does this question assume?
                  • +
                  • Would _____ ask this question differently?
                  • +
                  • How could someone settle this question?
                  • +
                  • Can we break this question down at all?
                  • +
                  • Is this question clear? Do we understand it?
                  • +
                  • Is this question easy or hard to answer? Why?
                  • +
                  • Do we all agree that this is the question?
                  • +
                  • To answer this question, what other questions must we answer first?
                  • +
                  • How would _____ state the issue?
                  • +
                  • Why is this issue important?
                  • +
                  • Is this the most important question, or is there an underlying question?
                  • +
                  • Can you see how this might relate to ________?
                  • +
                  + +
                  +Questions adapted from Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA. + +

                  More info about writing

                  +

                  More info about reading

                  diff --git a/lang/en/help/quiz/attempts.html b/lang/en/help/quiz/attempts.html index f9cb9df416a..a912d92b526 100644 --- a/lang/en/help/quiz/attempts.html +++ b/lang/en/help/quiz/attempts.html @@ -1,6 +1,6 @@ -

                  Quiz attempts

                  +

                  Quiz attempts

                  -

                  Students may be allowed to have multiple attempts at a quiz.

                  +

                  Students may be allowed to have multiple attempts at a quiz. -

                  This can help make the process of taking the quiz more of - an educational activity rather than simply an assessment.

                  +

                  This can help make the process of taking the quiz more of + an educational activity rather than simply an assessment. diff --git a/lang/en/help/quiz/calculated.html b/lang/en/help/quiz/calculated.html index c84eef1037f..abeeb184285 100644 --- a/lang/en/help/quiz/calculated.html +++ b/lang/en/help/quiz/calculated.html @@ -1,6 +1,6 @@ -

                  Calculated questions

                  +

                  Calculated questions

                  Calculated questions offers a way to create individual numerical question by the use of wildcards that are substituted with individual values when the quiz is taken. -
                  Below is a shrunken view of the main editing page with some example inputs:
                  +
                  Below is a shrunken view of the main editing page with some example inputs:
                  @@ -44,24 +44,24 @@ Calculated questions offers a way to create individual numerical question by the
                  -
                  +
                  In the question text input and "Correct Answer Formula" {a} and {b} can be seen. These and any other {name} can be used as a wildcard that is substituted by some value when the quiz is taken. Also, the correct answer is calculated when the quiz is submitted using the expression in "Correct Answer Formula", which is calculated as a numerical expression after the substitution of the wildcards. The possible wildcard values are set or generated on a later page in "editing wizard" for calculated questions... -
                  The example formula uses the operator +. Other accepted operators are -*/ and % where % is the modulo operator. It is also possible to use some PHP-style mathematical function. Among these there are 24 single-argument function:
                  +
                  The example formula uses the operator +. Other accepted operators are -*/ and % where % is the modulo operator. It is also possible to use some PHP-style mathematical function. Among these there are 24 single-argument function:
                  abs, acos, acosh, asin, asinh, atan, atanh, ceil, cos, cosh, deg2rad, exp, expm1, floor, log, log10, log1p, rad2deg, round, sin, sinh, sprt, tan, tanh -
                  and two two-argument functions
                  +
                  and two two-argument functions
                  atan2, pow -
                  and the functions min and max that can take two or more arguments. It is also possible to use the function pi that takes no arguments but do not forget the use the parentheses - the correct usage is pi(). Similarly the other function must have their argument(s) within parentheses. Possible usage is for example sin({a}) + cos({b}) * 2. It should not be any problem to wrap functions within each other like cos(deg2rad({a} + 90)) etc. -
                  More details on how to use these PHP-style functions can be found in the documentation at the PHP web site -

                  +

                  and the functions min and max that can take two or more arguments. It is also possible to use the function pi that takes no arguments but do not forget the use the parentheses - the correct usage is pi(). Similary the other function must have their argument(s) within parentheses. Possible usage is for example sin({a}) + cos({b}) * 2. It should not be any problem to wrap functions within eachother like cos(deg2rad({a} + 90)) etc. +
                  More details on how to use these PHP-style functions can be found in the documentation at the PHP web site +

                  As for numerical questions it is possible to allow a margin within which all responses are accepted as correct. The "Tolerance" field is used for this. However, there are three different types of tolerances. These are Relative, Nominal and Geometric. If we say that the correct answer at quiz time is calculated to 200 and the tolerance is set to 0.5 then the different tolerance types work like this: -

                  Relative: A tolerance interval is calculated by multiplying the correct answer with 0.5, ie in this case we get 100 so for this tolerance the correct response must be between 100 and 300. (200 ± 100)
                  +

                  Relative: A tolerance interval is calculated by multiplying the correct answer with 0.5, ie in this case we get 100 so for this tolerance the correct response must be between 100 and 300. (200 ± 100)
                  This is useful if the magnitude of the correct answer can differ greatly between different wildcard values. -

                  Nominal: This is the simplest tolerance type but not very powerful. The correct response must be between 199.5 and 200.5 (200 ± 0.5)
                  +

                  Nominal: This is the simpliest tolerance type but not very powerful. The correct response must be between 199.5 and 200.5 (200 ± 0.5)
                  This tolerance type can be useful if the differences between different correct answers are small. -

                  Geometric: The upper limit of the tolerance interval is calculated as 200 + 0.5*200 and is the same as for the relative case. The lower limit is calculated as 200/(1 + 0.5). The correct response must then be between 133.33 and 300.
                  +

                  Geometric: The upper limit of the tolerance interval is calculated as 200 + 0.5*200 and is the same as for the relative case. The lower limit is calculated as 200/(1 + 0.5). The correct response must then be between 133.33 and 300.
                  This is useful for complex calculation that must have great tolerances where relative tolerances of 1 or more would be used for the upper limit but clearly not acceptable for the lower limit as it would make zero a correct answer for all cases. -

                  +

                  The field Significant Figures does only relate to how the correct answer should be presented in the review or the reports. Examples: If it is set to 3 then the correct answer 13.333 would be presented as 13.3; 1236 would be presented as 1240; 23 would be presented as 23.0 etc. -

                  +

                  The feedback field and the optional unit fields work just like they do for numerical questions. -
                  \ No newline at end of file +
                  \ No newline at end of file diff --git a/lang/en/help/quiz/categories.html b/lang/en/help/quiz/categories.html index ae9b054a3d6..f0a21f987f4 100644 --- a/lang/en/help/quiz/categories.html +++ b/lang/en/help/quiz/categories.html @@ -1,23 +1,17 @@ -

                  Question categories

                  +

                  Question categories

                  -

                  Rather than keeping all your questions in one big list, - you can create categories to keep them in.

                  +

                  Rather than keeping all your questions in one big list, + you can create categories to keep them in. -

                  Each category consists of a name and a short description.

                  +

                  Each category consists of a name and a short description. -

                  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.

                  +

                  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. -

                  Categories can also be created or deleted at will. +

                  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.

                  + category to move them to. -

                  You can also arrange the categories in a hierarchy so - that they are easier to manage. The 'Move category to' - field lets you move a category to another category.

                  - -

                  By clicking on the arrows in the 'Order' field, you - can change the order in which the categories are listed.

                  \ No newline at end of file diff --git a/lang/en/help/quiz/correctanswers.html b/lang/en/help/quiz/correctanswers.html index 3cd8bf97f08..3a42e9efa41 100644 --- a/lang/en/help/quiz/correctanswers.html +++ b/lang/en/help/quiz/correctanswers.html @@ -1,6 +1,6 @@ -

                  Show correct answers

                  +

                  Show correct answers

                  -

                  If you enable correct answers, then the +

                  If you enable correct answers, then the feedback will show also show the correct answer for each question (highlighted in a bright colour). -

                  +

                  diff --git a/lang/en/help/quiz/createmultiple.html b/lang/en/help/quiz/createmultiple.html index 511d84a4c2d..ead4c555f97 100644 --- a/lang/en/help/quiz/createmultiple.html +++ b/lang/en/help/quiz/createmultiple.html @@ -1,10 +1,10 @@ -

                  Create multiple questions

                  +

                  Create multiple questions

                  -

                  This page allows you to create multiple questions at once.

                  +

                  This page allows you to create multiple questions at once.

                  -

                  Currently it will only allow you to create a number of +

                  Currently it will only allow you to create a number of Random Questions and (optionally) add them to the current - quiz.

                  + quiz.

                  -

                  Eventually this page will evolve into a larger wizard that - will have more options.

                  +

                  Eventually this page will evolve into a larger wizard that + will have more options.

                  diff --git a/lang/en/help/quiz/decimalpoints.html b/lang/en/help/quiz/decimalpoints.html deleted file mode 100644 index 750c5a40345..00000000000 --- a/lang/en/help/quiz/decimalpoints.html +++ /dev/null @@ -1,4 +0,0 @@ -

                  Decimal points

                  - -

                  By using this setting you can select the number of decimals -to be showed in the grade of every attempt.

                  diff --git a/lang/en/help/quiz/description.html b/lang/en/help/quiz/description.html index cfc52491a8f..f15c672f8e1 100644 --- a/lang/en/help/quiz/description.html +++ b/lang/en/help/quiz/description.html @@ -1,14 +1,7 @@ -

                  Description

                  - - - -

                  This type of question is not really a question.

                  - - - -

                  All it does is print some text without requiring any answers.

                  - - - -

                  It can be used to print a descriptive text to be used by a following group of questions.

                  - +

                  Description

                  + +

                  This type of question is not really a question.

                  + +

                  All it does is print some text without requiring any answers.

                  + +

                  It can be used to print a descriptive text to be used by a following group of questions.

                  diff --git a/lang/en/help/quiz/discrimination.html b/lang/en/help/quiz/discrimination.html index 300974d3383..33d82e798d5 100755 --- a/lang/en/help/quiz/discrimination.html +++ b/lang/en/help/quiz/discrimination.html @@ -1,10 +1,10 @@ -

                  Discrimination Index

                  +

                  Discrimination Index

                  -

                  This provides a rough indicator of the performance of each item. It is calculated by counting the number of students who scored in top third on this quiz for each question and dividing this figure by the number of students who scored in the bottom third.

                  +

                  This provides a rough indicator of the performance of each item. It is calculated by counting the number of students who scored in top third on this quiz for each question and dividing this figure by the number of students who scored in the bottom third.

                  -

                  For example, if 30 students took the quiz, there would be 10 students each in the top third and bottom third. If, on item #1, 9 of the best students got it right, but only 3 of the poorest third got it right, the discrimination index would be 9/3 = 3.0. The numbers in parentheses are: (top third correct responses/bottom third correct responses).

                  +

                  For example, if 30 students took the quiz, there would be 10 students each in the top third and bottom third. If, on item #1, 9 of the best students got it right, but only 3 of the poorest third got it right, the discrimination index would be 9/3 = 3.0. The numbers in parentheses are: (top third correct responses/bottom third correct responses).

                  -

                  If the index goes below 1.0 it means that more of the weaker students got the item right than the stronger students. Such items should be discarded as worthless. In fact, they reduce the accuracy of the overall score for the quiz.

                  +

                  If the index goes below 1.0 it means that more of the weaker students got the item right than the stronger students. Such items should be discarded as worthless. In fact, they reduce the accuracy of the overall score for the quiz.

                  -

                  If no weak students got the item correct, the denominator would be 0 which would yield a result of infinity. The program substitutes a '10' for any such items.

                  +

                  If no weak students got the item correct, the denominator would be 0 which would yield a result of infinity. The program substitutes a '10' for any such items.

                  diff --git a/lang/en/help/quiz/export.html b/lang/en/help/quiz/export.html index e2dd603a822..3b9d4651498 100644 --- a/lang/en/help/quiz/export.html +++ b/lang/en/help/quiz/export.html @@ -1,7 +1,7 @@ -

                  Exporting questions from a Category

                  +

                  Exporting questions from a Category

                  -

                  This function allows you to export a complete category of questions to - a text file.

                  +

                  This function allows you to export a complete category of questions to + a text file.

                  Please note that in many file formats some information is lost when the questions are exported. This is because many formats do @@ -11,9 +11,9 @@ You are advised to check exported data before using it in a production environment.

                  -

                  The format(s) currently supported are:

                  +

                  The format(s) currently supported are:

                  -

                  GIFT format

                  +

                  GIFT format

                  - -

                  Moodle XML format

                  -
                    -

                    This Moodle specific format exports quiz questions in a simple XML format. They -can then be imported into another quiz category or used in some other process such as -an XSLT transformation

                    -
                  - -

                  IMS QTI

                  - - - -

                  More formats are yet to come, including WebCT, IMS QTI and whatever else +

                  More formats are yet to come, including WebCT, IMS QTI and whatever else Moodle users can contribute!

                  diff --git a/lang/en/help/quiz/feedback.html b/lang/en/help/quiz/feedback.html index d5f1acf8743..8d16da6f654 100644 --- a/lang/en/help/quiz/feedback.html +++ b/lang/en/help/quiz/feedback.html @@ -1,5 +1,5 @@ -

                  Feedback

                  +

                  Feedback

                  -

                  If you enable quiz feedback, then students will receive - question feedback on every answer (right or wrong).

                  +

                  If you enable quiz feedback, then students will receive + question feedback on every answer (right or wrong).

                  diff --git a/lang/en/help/quiz/formataiken.html b/lang/en/help/quiz/formataiken.html index 1a53d14e605..b3ae2264321 100644 --- a/lang/en/help/quiz/formataiken.html +++ b/lang/en/help/quiz/formataiken.html @@ -1,4 +1,4 @@ -

                  Importing "Aiken" format files

                  +

                  Importing "Aiken" format files

                  The Aiken format is a very simple way of creating multiple choice questions using a clear human-readable format. Here is an example of the format:

                  diff --git a/lang/en/help/quiz/formatblackboard.html b/lang/en/help/quiz/formatblackboard.html
                  index 13e1f174a54..512ffb5a60e 100644
                  --- a/lang/en/help/quiz/formatblackboard.html
                  +++ b/lang/en/help/quiz/formatblackboard.html
                  @@ -1,3 +1,3 @@
                  -

                  Importing "Blackboard Quiz Format" files

                  +

                  Importing "Blackboard Quiz Format" files

                  Documentation not completed

                  diff --git a/lang/en/help/quiz/formatctm.html b/lang/en/help/quiz/formatctm.html index 1736a97b0be..63c33070726 100755 --- a/lang/en/help/quiz/formatctm.html +++ b/lang/en/help/quiz/formatctm.html @@ -1,23 +1,23 @@ -

                  Importing "Course Test Manager" files

                  +

                  Importing "Course Test Manager" files

                  -

                  Course Test Manager is an "End of Lifetime" software package from Course Technology. -It is no longer being actively developed by Course Technology. It has been replaced by +

                  Course Test Manager is an "End of Lifetime" software package from Course Technology. +It is no longer being actively developed by Course Technology. It has been replaced by a new test manager called ExamView. However, there has never been a migration path to allow -this format to be exported from CTM test banks to any other common test format. This is why this +this format to be exported from CTM testbanks to any other common test format. This is why this module has been written.

                  -

                  In order to import questions from CTM, you must have CTM installed on a Windows machine, and +

                  In order to import questions from CTM, you must have CTM installed on a Windows machine, and have access to the MS Access data files on that machine. Two data files are required in order to access the data files:

                  • System.mda - This file is in the top directory of your CTM installation, and is referred to in MS access parlance as the "System Database".
                  • ctm.mdb - this is the database that contains the test bank questions. There is one of these databases -for each course installed in CTM. It is located in a directory one level bellow your CTM installation +for each course installed in CTM. It is located in a directory one level bellow your CTM installation directory.
                  -

                  The import process is somewhat different based on whether you're running moodle on Windows or Linux. -Regardless of what platform moodle is running on, you must have a Windows system (Windows 2000 or Windows XP) +

                  The import process is somewhat different based on whether you're running moodle on Windows or Linux. +Regardless of what platfom moodle is running on, you must have a Windows system (Windows 2000 or Windows XP) on the same network as your moodle system in order to host the Access database while importing test banks.

                  The process is somewhat easier on a Windows-based moodle system. All you need to do to use the CTM import @@ -25,59 +25,59 @@ class is:

                  1. upload the system.mda system database to moodle using the file manager. It doesn't matter what course you upload the system.mda file to. Moodle will find it regardless.
                  2. -
                  3. Crete your quiz and go into the "import questions from file" process. Upload your chosen ctm.mdb -database as the file to import. If you did this correctly, you will see another screen that allows you -to choose the sub-category of questions to import from the database. The reason this step is here is that -CTM test banks often contain a large number of categorized questions, based on the chapters of the book or +
                  4. Crete your quiz and go into the "import questions from file" process. Upload your chosen ctm.mdb +database as the file to import. If you did this correctly, you will see another screen that allows you +to choose the sub-category of questions to import from the database. The reason this step is here is that +CTM test banks often contain a large number of categorized questions, based on the chapters of the book or sections of the course.

                  The process on a Linux-based moodle system includes a third-party software component called the ODBC Socket Server. In order to import CTM databases on Linux, you must first download and install this small network program on the Windows system that hosts your CTM databases. Do not follow the installation -steps outlined in the ODBC Socket Server Installation. They're more complicated than they need to be! -Instead, follow these steps to install this program on your Windows system:

                  +steps outlined in the ODBC Socket Server Installation. They're more complicated than they need to be! +Instead, follow these steps to install this program on your Windows system:

                  -
                  1. Go to the windows system and unzip the install file you downloaded from +
                    1. Go to the windows system and unzip the install file you downloaded from this site on the system.
                    2. -
                    3. Copy the binary ODBCSocketServer.exe to a permanent location, such as your system directory -(probably C:\WINNT\ or C:\Windows) or your Program Files directory.
                    4. +
                    5. Copy the binary ODBCSocketServer.exe to a permanent location, such as your system directory +(probably C:\WINNT\ or C:\Windows) or your Program Files directory.
                    6. Install the ODBC Socket Server as a Service on the system with this command:
                      <path you copied the file to in the step above>ODBCSocketServer.exe /Service
                      You may do this by typing this command from Start->Run... dialog, or from a command prompt.
                    7. -
                    8. Open the Service Manager by either going to +
                    9. Open the Service Manager by either going to Start->Settings->Control Panels->Administrative Tools->Services or by right-clicking on -My Computer, choosing Manage, then choosing Services and Applications->Services from -the right panel. You may also access the Service manager by typing services.msc in the Start->Run... +My Computer, choosing Manage, then choosing Services and Applications->Services from +the right panel. You may also access the Service manager by typing services.msc in the Start->Run... dialog
                    10. -
                    11. In the Service manager, right-click the ODBC Socket Server item and choose the Start item. It's status +
                    12. In the Service manager, right-click the ODBC Socket Server item and choose the Start item. It's status should change to "started" when you do this. Note that you may stop and/or disable this service completely after you've completed the import process.
                    13. -
                    14. Make sure that the system.mda and ctm.mdb access data files are on the machine, +
                    15. Make sure that the system.mda and ctm.mdb access data files are on the machine, and that the MS Access ODBC driver is present. It is installed in a standard Windows installation. You can determine if it installed by opening the "Data Sources" item in "Administrative Tools" and referring to the "Drivers" -tab. You're going to have to determine where CTM is installed and locate the system.mda file and the ctm.mdb database -or databases you're interested in importing data from. Make note of the full local paths to these files as well +tab. You're going to have to determine where CTM is installed and locate the system.mda file and the ctm.mdb database +or databases you're interested in importing data from. Make note of the full local paths to these files as well as the IP address or hostname of the Windows server. You're going to need this information for the import process.
                    16. -
                    17. Now you may import the testbank or testbanks into moodle. Crete your quiz and go into the -"import questions from file" process. NOW HERE'S WHERE THINGS ARE DIFFERENT FOR LINUX - +
                    18. Now you may import the testbank or testbanks into moodle. Crete your quiz and go into the +"import questions from file" process. NOW HERE'S WHERE THINGS ARE DIFFERENT FOR LINUX - YOU MUST SPECIFY A DUMMY FILE IN THE UPLOAD FIELD TO GET THE IMPORT PROCESS STARTED. THIS FILE WILL NOT BE PROCESSED, IT'S JUST A PLACEHOLDER FOR THE IMPORT FORM. YOU WILL GET A PLACE TO SPECIFY THE WINDOWS SERVER INFORMATION NEXT. Next, you will get a screen where you can type in the hostname for the Windows ODBC Socket Server -machine as well as the paths to the system and testbank databases. Type in the information you wrote down from the +machine as well as the paths to the system and testbank databases. Type in the information you wrote down from the previous step here and click "Connect to Server". If everything was set up correctly, you'll get another form to allow -you to choose the sub-category of questions to import from the database. The reason this step is here is that -CTM test banks often contain a large number of categorized questions, based on the chapters of the book or +you to choose the sub-category of questions to import from the database. The reason this step is here is that +CTM test banks often contain a large number of categorized questions, based on the chapters of the book or sections of the course. IF YOU GET TO THIS STEP WITHOUT ERROR MESSAGES, YOU HAVE SET UP THE SOCKET SERVER CORRECTLY AND YOU'RE ABOUT TO IMPORT QUESTIONS TO MOODLE!
                    -

                    If you received error messages during this process, you may find this technical information useful. -The ODBC Socket server uses port 9628 to open a socket and trade and XML query for an XML result table of -the query results. The import class parses that XML and use it just like I use a local query to do the importing. +

                    If you received error messages during this process, you may find this technical information useful. +The ODBC Socket server uses port 9628 to open a socket and trade and XML query for an XML result table of +the query results. The import class parses that XML and use it just like I use a local query to do the importing.

                    \ No newline at end of file diff --git a/lang/en/help/quiz/formatcustom.html b/lang/en/help/quiz/formatcustom.html index 956b8571bec..c62d20ff134 100644 --- a/lang/en/help/quiz/formatcustom.html +++ b/lang/en/help/quiz/formatcustom.html @@ -1,3 +1,3 @@ -

                    Importing custom format files

                    +

                    Importing custom format files

                    Documentation not completed

                    diff --git a/lang/en/help/quiz/formatgift.html b/lang/en/help/quiz/formatgift.html index c80e654a371..3b1a55ded36 100644 --- a/lang/en/help/quiz/formatgift.html +++ b/lang/en/help/quiz/formatgift.html @@ -1,4 +1,4 @@ -

                    Importing "GIFT" format files

                    +

                    Importing "GIFT" format files

                    GIFT is the most comprehensive import format available for importing Moodle quiz questions from a text file. It supports Multiple-Choice, True-False, Short Answer, Matching and Numerical questions, as well as insertion @@ -42,7 +42,7 @@ Two plus two equals {=four =4}.

                  If there is only one correct Short Answer, it may be written without the equal sign prefix, - as long as it cannot be confused as True-False.

                  + as long as it cannot be confused as True-False.

                  True-False:
                  In this question-type the answer indicates whether the statement is true or false. diff --git a/lang/en/help/quiz/formatmissingword.html b/lang/en/help/quiz/formatmissingword.html index 8b1be9a48aa..1de0715fda1 100644 --- a/lang/en/help/quiz/formatmissingword.html +++ b/lang/en/help/quiz/formatmissingword.html @@ -1,3 +1,3 @@ -

                  Importing "Missing Word" format files

                  +

                  Importing "Missing Word" format files

                  Documentation not completed

                  diff --git a/lang/en/help/quiz/formatwebct.html b/lang/en/help/quiz/formatwebct.html index f2f3172a9f7..97138f2f3af 100644 --- a/lang/en/help/quiz/formatwebct.html +++ b/lang/en/help/quiz/formatwebct.html @@ -1,9 +1,9 @@ -

                  Importing "WebCT Quiz Format" files

                  +

                  Importing "WebCT Quiz Format" files

                  The WebCT import filter is in development and does not support all of the WebCT question types.

                  -

                  At the time of writing this, only Multiple Choice and Short answer +

                  At the time of writing this, only Multiple Choice and Short answer questions are supported.

                  Here are some examples of these questions in a text file:

                  @@ -14,7 +14,7 @@ :TITLE:Short Answer Question :QUESTION:H What is the name of the WebCT Learning Hub? -<br /> +<br /> :IMAGE:dotcomLogoc.gif :ANSWERS:1 :CASE:0 @@ -30,7 +30,7 @@ Be sure to visit the Learning Hub\: www.WebCT.com :TYPE:MC:1:0:C :TITLE:Multiple Choice Question :FEEDBACK -Darwin invented the theory of evolution and created Darwinism. +Darwin invented the theory of evolution and created darwinism. :QUESTION:H Where is the Darwin Research Center? :IMAGE: diff --git a/lang/en/help/quiz/grademethod.html b/lang/en/help/quiz/grademethod.html index 221fdbe029f..fe5289c8574 100644 --- a/lang/en/help/quiz/grademethod.html +++ b/lang/en/help/quiz/grademethod.html @@ -1,25 +1,25 @@ -

                  Grading method

                  +

                  Grading method

                  -

                  When multiple attempts are allowed, there are different ways +

                  When multiple attempts are allowed, there are different ways you can use the grades to calculate the student's final - grade for the quiz.

                  + grade for the quiz. -

                  Highest grade

                  -

                    -

                    The final grade is the highest (best) grade in any attempt.

                    -
                  +

                  Highest grade

                  +

                    +

                    The final grade is the highest (best) grade in any attempt. +

                  -

                  Average grade

                  -

                    -

                    The final grade is the average (simple mean) grade of all attempts.

                    -
                  +

                  Average grade

                  +

                    +

                    The final grade is the average (simple mean) grade of all attempts. +

                  -

                  First grade

                  -

                    -

                    The final grade is the grade gained on the first attempt (other attempts are ignored).

                    -
                  +

                  First grade

                  +

                    +

                    The final grade is the grade gained on the first attempt (other attempts are ignored). +

                  -

                  Last grade

                  -

                    -

                    The final grade is the grade gained on the most recent attempt only.

                    -
                  +

                  Last grade

                  +

                    +

                    The final grade is the grade gained on the most recent attempt only. +

                  diff --git a/lang/en/help/quiz/import.html b/lang/en/help/quiz/import.html index 70939ae07c4..1ee36da0ea4 100644 --- a/lang/en/help/quiz/import.html +++ b/lang/en/help/quiz/import.html @@ -1,11 +1,11 @@ -

                  Importing new questions

                  +

                  Importing new questions

                  -

                  This function allows you to import questions from - external text files, uploaded through a form.

                  +

                  This function allows you to import questions from + external text files, uploaded through a form. -

                  A number of file formats are supported:

                  +

                  A number of file formats are supported: -

                  GIFT format

                  +

                  GIFT format

                  -

                  Aiken format

                  +

                  Aiken format

                  -

                  Missing Word

                  -
                    -

                    This format only supports multiple choice questions. +

                    Missing Word

                    +
                      +

                      This format only supports multiple choice questions. Each answer is separated with a tilde (~), and the correct answer is -prefixed with an equals sign (=). Here is an example:

                      +prefixed with an equals sign (=). Here is an example: -
                      As soon as we begin to explore our body parts as infants +
                      As soon as we begin to explore our body parts as infants we become students of {=anatomy and physiology ~reflexology ~science ~experiment}, and in a sense we remain students for life. -
                      +
                      -

                      More info about the "Missing Word" format

                      -
                    +

                    More info about the "Missing Word" format

                    +
                  -

                  AON

                  -
                    -

                    This is the same as Missing Word Format, except that after importing +

                    AON

                    +
                      +

                      This is the same as Missing Word Format, except that after importing the questions all Short-Answer questions are converted four at a time - into Matching Questions.

                      + into Matching Questions.

                      Additionally, the answers of multiple-choice questions are randomly - shuffled during the import.

                      + shuffled during the import.

                      It's named after an organisation that sponsored the development of many quiz features

                      -
                    +
                  -

                  Blackboard

                  - -

                  WebCT

                  - -

                  Course Test Manager

                  -
                    -

                    This module can import questions saved in a Course Test Manager test bank. +

                    Course Test Manager

                    +
                      +

                      This module can import questions saved in a Course Test Manager test bank. It relies on different ways of accessing the test bank, which is in a Microsoft Access -database, depending on whether Moodle is running on a Windows or Linux web server.

                      +database, depending on whether Moodle is running on a Windows or Linux web server.

                      On Windows it lets you upload the access database just like any other data import file.

                      On Linux, you must set up a windows machine on the same network with the Course Test Manager database and a piece of software called the ODBC Socket Server, which uses XML -to transfer data to moodle on the Linux server.

                      -

                      Please read the full help file below before +to transfer data to moodle on the Linux server.

                      Please read the full help file below before using this import class.

                      -

                      More info about the "CTM" format

                      -
                    +

                    More info about the "CTM" format

                    +
                  -

                  Embedded answers (Cloze)

                  -
                    -

                    This special purpose format imports just one type of question, the +

                    Embedded answers (Cloze)

                    + - -

                    Learnwise format

                    -
                      -

                      This format can import multiple choice questions saved in Learnwise's XML -format.

                      -
                    - -

                    Moodle XML format

                    -
                      -

                      This Moodle specific format imports quiz questions that have previously been -exported in the same format. The format is straightforward and is best demonstrated -by exporting a category in the Moodle XML format.

                      -
                    - -

                    Custom

                    -
                      -

                      If you have your own format that you need to import, you can - implement it yourself by editing mod/quiz/format/custom.php

                      - -

                      The amount of new code needed is quite small - just enough - to parse a single question from given text.

                      - -

                      More info about the "Custom" format

                      -
                    +

                    More info about the "Cloze" format

                    +
                  -

                  More formats are yet to come, including WebCT, IMS QTI and whatever else + +

                  Custom

                  +
                    +

                    If you have your own format that you need to import, you can + implement it yourself by editing mod/quiz/format/custom.php + +

                    The amount of new code needed is quite small - just enough + to parse a single question from given text. + +

                    More info about the "Custom" format

                    +
                  + + +

                  More formats are yet to come, including WebCT, IMS QTI and whatever else Moodle users can contribute!

                  diff --git a/lang/en/help/quiz/index.html b/lang/en/help/quiz/index.html index f1454d8a230..4c7a6adec06 100644 --- a/lang/en/help/quiz/index.html +++ b/lang/en/help/quiz/index.html @@ -1,35 +1,34 @@

                  Quizzes

                  diff --git a/lang/en/help/quiz/match.html b/lang/en/help/quiz/match.html index 1673413b2ba..00bdfcdb2cd 100644 --- a/lang/en/help/quiz/match.html +++ b/lang/en/help/quiz/match.html @@ -1,11 +1,11 @@ -

                  Matching questions

                  +

                  Matching questions

                  After an optional introduction, the respondent is presented with several sub-questions and several jumbled answers. There is one - correct answer for each question.

                  + correct answer for each question. -

                  The respondent must select an answer to match each sub-question.

                  +

                  The respondent must select an answer to match each sub-question.

                  Each sub-question is equally weighted to contribute towards the - grade for the total question.

                  + grade for the total question. diff --git a/lang/en/help/quiz/maxgrade.html b/lang/en/help/quiz/maxgrade.html index a4c9d3ad6db..d3841862d4a 100644 --- a/lang/en/help/quiz/maxgrade.html +++ b/lang/en/help/quiz/maxgrade.html @@ -1,11 +1,11 @@ -

                  Maximum grade

                  +

                  Maximum grade

                  -

                  The maximum grade you set for a quiz is what all grades - are scaled to.

                  +

                  The maximum grade you set for a quiz is what all grades + are scaled to. -

                  For example, you might set the max grade to 20, because the - quiz is worth 20% of the whole course.

                  +

                  For example, you might set the max grade to 20, because the + quiz is worth 20% of the whole course. -

                  Even though you might have 10 questions in your quiz +

                  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.

                  + "scaled down" to the quiz max grade of 20. diff --git a/lang/en/help/quiz/mods.html b/lang/en/help/quiz/mods.html index 00b89f6da57..744fc5551fc 100644 --- a/lang/en/help/quiz/mods.html +++ b/lang/en/help/quiz/mods.html @@ -1,11 +1,11 @@ -

                   Quizzes

                  -
                  -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. -
                  +

                   Quizzes

                  +
                    +

                    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.

                    +
                  diff --git a/lang/en/help/quiz/multianswer.html b/lang/en/help/quiz/multianswer.html index 8e68421986d..30f2139150f 100644 --- a/lang/en/help/quiz/multianswer.html +++ b/lang/en/help/quiz/multianswer.html @@ -1,21 +1,21 @@

                  Embedded answers (Cloze)

                  -

                  This very flexible question type is similar to a - popular format known as the Cloze format.

                  +

                  This very flexible question type is similar to a + popular format known as the Cloze format. + +

                  Questions consist of a passage of text (in Moodle format) that + has various answers embedded within it, including multiple choice, + short answers and numerical answers. -

                  Questions consist of a passage of text (in Moodle format) that - has various answers embedded within it, including multiple choice, - short answers and numerical answers.

                  +

                  There is currently no graphical interface to create these questions - + you need to specify the question format using the text box or by + importing them from external files. + +

                  Here is an example of the input text used to specify such a question: -

                  There is currently no graphical interface to create these questions - - you need to specify the question format using the text box or by - importing them from external files.

                  - -

                  Here is an example of the input text used to specify such a question:

                  - -
                  +
                  - +
                  +
                  + +

                  This example will appear to students as follows:

                  + + +
                  +

                  3

                  8 Marks


                  +

                  This question consists of some text with an answer embedded right here and right after that you will have to deal with this short answer and finally we have a floating point number .
                  +
                  +Note that addresses like www.moodle.org and smileys :-) all work as normal:
                  +a) How good is this?
                  +b) What grade would you give it?
                  +
                  +Good luck!

                  +
                  + +
                  + diff --git a/lang/et/help/quiz/multichoice.html b/lang/et/help/quiz/multichoice.html new file mode 100644 index 00000000000..5fa624d82a0 --- /dev/null +++ b/lang/et/help/quiz/multichoice.html @@ -0,0 +1,19 @@ +

                  Multiple Choice questions

                  + +

                  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. + +

                  Single-answer questions allow one and only one answer to be chosen. + Generally all the grades for such a question should be positive. + +

                  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%. + +

                  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). +

                  diff --git a/lang/et/help/quiz/numerical.html b/lang/et/help/quiz/numerical.html new file mode 100644 index 00000000000..b53e7fb18c4 --- /dev/null +++ b/lang/et/help/quiz/numerical.html @@ -0,0 +1,16 @@ +

                  Numerical questions

                  + +

                  From the student perspective, a numerical question looks just + like a short-answer question.

                  + +

                  The difference is that numerical answers are allowed + to have an accepted error. This allows a continuous range of answers + to be set.

                  + +

                  For example, if the answer is 30 with an accepted error of 5, + then any number between 25 and 35 will be accepted as correct.

                  + +

                  Numerical questions can also have case-insensitive non-numerical answers. + This is useful whenever the answer for a numerical question + is something like N/A, +inf, -inf, NaN etc

                  + diff --git a/lang/et/help/quiz/questiontypes.html b/lang/et/help/quiz/questiontypes.html index 733a7969eee..a2c640c32bf 100644 --- a/lang/et/help/quiz/questiontypes.html +++ b/lang/et/help/quiz/questiontypes.html @@ -1,26 +1,26 @@ -Uue küsimuse loomine
                  -
                  -Võid lisada kategooriasse terve hulga erinevat tüüpi küsimusi -:
                  -
                  -Valikvastustega
                  -Vastuseks küsimusele (mis võib sisaldada kujutist) valib vastaja valikvastuste -hulgast. Valikvastustega küsimusi on kahte tüüpi – ühe -ja mitme vastusega.
                  -
                  -Lühivastus
                  -Vastuseks küsimusele (mis võib sisaldada kujutist) trükib vastaja -sõna või fraasi. Õigeid vastuseid võib olla mitu, -erinevate hinnetega. Vastused võivad suurtähti arvesse võtta -või mitte võtta.
                  -
                  -Õige/vale
                  -Vastuseks küsimusele (mis võib sisaldada kujutist) valib vastaja kahe -võimaluse vahel: õige või vale.
                  -
                  -Juhuslik
                  -(Veel rakendamata) Võimaldab sul ette valmistada rea teisi küsimusi, -mille hulgast üks juhuslikult valitakse, kui õpilane küsimustikku -täita proovib.
                  -
                  +Uue küsimuse loomine
                  +
                  +Võid lisada kategooriasse terve hulga erinevat tüüpi küsimusi +:
                  +
                  +Valikvastustega
                  +Vastuseks küsimusele (mis võib sisaldada kujutist) valib vastaja valikvastuste +hulgast. Valikvastustega küsimusi on kahte tüüpi – ühe +ja mitme vastusega.
                  +
                  +Lühivastus
                  +Vastuseks küsimusele (mis võib sisaldada kujutist) trükib vastaja +sõna või fraasi. Õigeid vastuseid võib olla mitu, +erinevate hinnetega. Vastused võivad suurtähti arvesse võtta +või mitte võtta.
                  +
                  +Õige/vale
                  +Vastuseks küsimusele (mis võib sisaldada kujutist) valib vastaja kahe +võimaluse vahel: õige või vale.
                  +
                  +Juhuslik
                  +(Veel rakendamata) Võimaldab sul ette valmistada rea teisi küsimusi, +mille hulgast üks juhuslikult valitakse, kui õpilane küsimustikku +täita proovib.
                  +
                  \ No newline at end of file diff --git a/lang/et/help/quiz/random.html b/lang/et/help/quiz/random.html new file mode 100644 index 00000000000..76a5280bbf1 --- /dev/null +++ b/lang/et/help/quiz/random.html @@ -0,0 +1,18 @@ +

                  Random Question

                  + +

                  Random questions are a special question type.

                  + +

                  When you put a Random Question into a quiz, then a question + will be chosen randomly from the whole category, on each attempt.

                  + +

                  The maximum grade for the question will always be when you have chosen + as the grade for the Random Question.

                  + +

                  If you make a quiz with, say, 10 random questions, then each student + may get a completely different set of 10 questions each time they + attempt the quiz.

                  + +

                  Note that you can mix random and non-random questions if you want to + ensure that particular questions are always included.

                  + + diff --git a/lang/et/help/quiz/randomsamatch.html b/lang/et/help/quiz/randomsamatch.html new file mode 100644 index 00000000000..ba272bea2da --- /dev/null +++ b/lang/et/help/quiz/randomsamatch.html @@ -0,0 +1,14 @@ +

                  Random Short-Answer Matching questions

                  + +

                  After an optional introduction, the respondent is presented with + several sub-questions and several jumbled answers. There is one + correct answer for each question. + +

                  The respondent must select an answer to match each sub-question. + +

                  Each sub-question is equally weighted to contibute towards the + grade for the total question. + +

                  The questions and answers are randomly drawn from the pool of + "Short Answer" questions in the current category. Each attempt + on a quiz will have different questions and answers. diff --git a/lang/et/help/quiz/repeatattempts.html b/lang/et/help/quiz/repeatattempts.html new file mode 100644 index 00000000000..d6b89d62913 --- /dev/null +++ b/lang/et/help/quiz/repeatattempts.html @@ -0,0 +1,5 @@ +

                  Each attempt builds on the last

                  + +

                  If multiple attempts are allowed and this setting is set to Yes, then each new attempt contains the results of the previous attempt. This allows a quiz to be completed over several attempts.

                  + +

                  To show a fresh quiz on every attempt, select No for this setting. diff --git a/lang/et/help/quiz/review.html b/lang/et/help/quiz/review.html new file mode 100644 index 00000000000..1eee8a3a7ca --- /dev/null +++ b/lang/et/help/quiz/review.html @@ -0,0 +1,6 @@ +

                  Allow review once quiz is closed

                  + +

                  If you enable this option, then students will be able to + review their past attempts at this quiz.

                  + +

                  This is only enabled once the quiz is closed.

                  diff --git a/lang/et/help/quiz/shortanswer.html b/lang/et/help/quiz/shortanswer.html new file mode 100644 index 00000000000..8ebd03112b3 --- /dev/null +++ b/lang/et/help/quiz/shortanswer.html @@ -0,0 +1,10 @@ +

                  Short Answer questions

                  + +

                  In response to a question (that may include a image) the respondent + types a word or short phrase. + +

                  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". + +

                  Answers are compared exactly, so be careful with your spelling! diff --git a/lang/et/help/quiz/shuffleanswers.html b/lang/et/help/quiz/shuffleanswers.html new file mode 100644 index 00000000000..ff81cff7ad1 --- /dev/null +++ b/lang/et/help/quiz/shuffleanswers.html @@ -0,0 +1,13 @@ +

                  Shuffle answers

                  + +

                  If you enable this option, then the order of answers within + each question will be randomly shuffled each time a student + attempts this quiz.

                  + +

                  Of course, this only applies to questions that have multiple + answers displayed, such as Multiple Choice or Matching Questions.

                  + +

                  The intention is simply to make it a little harder for students + to copy from each other.

                  + +

                  This option is not related to the use of Random Questions.

                  diff --git a/lang/et/help/quiz/shufflequestions.html b/lang/et/help/quiz/shufflequestions.html new file mode 100644 index 00000000000..65e577a76d7 --- /dev/null +++ b/lang/et/help/quiz/shufflequestions.html @@ -0,0 +1,11 @@ +

                  Shuffle questions

                  + +

                  If you enable this option, then the order of questions in + the quiz will be randomly shuffled each time a student attempts + the quiz.

                  + +

                  This is not related to the use of Random Questions, this is only + about the displayed order of questions.

                  + +

                  The intention is to make it a little harder for students to copy from + each other.

                  diff --git a/lang/et/help/quiz/timeopen.html b/lang/et/help/quiz/timeopen.html new file mode 100644 index 00000000000..c817ef8857f --- /dev/null +++ b/lang/et/help/quiz/timeopen.html @@ -0,0 +1,5 @@ +

                  Opening and closing the quiz

                  + +

                  You can specify times when the quiz is accessible for people to make attempts. + +

                  Before the opening time, and after the closing time, the quiz will be unavailable. diff --git a/lang/et/help/quiz/truefalse.html b/lang/et/help/quiz/truefalse.html new file mode 100644 index 00000000000..2f19b6db0cb --- /dev/null +++ b/lang/et/help/quiz/truefalse.html @@ -0,0 +1,11 @@ +

                  True/False questions

                  + + +

                  In response to a question (that may include a image) the respondent + chooses from True or False. + +

                  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. +

                  diff --git a/lang/et/help/reading.html b/lang/et/help/reading.html index b8d2cd7b046..d9c8dbadceb 100644 --- a/lang/et/help/reading.html +++ b/lang/et/help/reading.html @@ -1,17 +1,17 @@ -

                  Reading

                  - -

                  When reading texts quickly it is often very easy to misunderstand what the - author was trying to say.

                  - -

                  To avoid misunderstanding, read their words carefully and try to see things - from the author's point of view.Lugemine - -

                  Tekste väga kiiresti lugedes on lihtne sellest valesti aru saada, mida - autor silmas peab.

                  -

                  Valestimõistmise vältimiseks lugege tekste väga tähelepanelikult - ja püüdke mõista autori seisukohta.

                  -

                  Abiks võib olla seegi, kui nuputate, mille autor on ütlemata jätnud - või milles ta kahtleb. See aitab teil endal mõttes küsimusi - moodustada.
                  -

                  +

                  Reading

                  + +

                  When reading texts quickly it is often very easy to misunderstand what the + author was trying to say.

                  + +

                  To avoid misunderstanding, read their words carefully and try to see things + from the author's point of view.Lugemine + +

                  Tekste väga kiiresti lugedes on lihtne sellest valesti aru saada, mida + autor silmas peab.

                  +

                  Valestimõistmise vältimiseks lugege tekste väga tähelepanelikult + ja püüdke mõista autori seisukohta.

                  +

                  Abiks võib olla seegi, kui nuputate, mille autor on ütlemata jätnud + või milles ta kahtleb. See aitab teil endal mõttes küsimusi + moodustada.
                  +

                  \ No newline at end of file diff --git a/lang/et/help/resource/index.html b/lang/et/help/resource/index.html new file mode 100644 index 00000000000..b918aea01e9 --- /dev/null +++ b/lang/et/help/resource/index.html @@ -0,0 +1,7 @@ +

                  Resource module

                  + + diff --git a/lang/et/help/resource/mods.html b/lang/et/help/resource/mods.html new file mode 100644 index 00000000000..fce1be28dca --- /dev/null +++ b/lang/et/help/resource/mods.html @@ -0,0 +1,8 @@ +

                   Resources

                  +
                    +

                    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.

                    +
                  + diff --git a/lang/et/help/resource/program.html b/lang/et/help/resource/program.html new file mode 100644 index 00000000000..0a07a5f4d4e --- /dev/null +++ b/lang/et/help/resource/program.html @@ -0,0 +1,17 @@ +

                  Program Resources

                  + +

                  A Program resource is an external resource that is able to accept data + passed to it from Moodle.

                  + +

                  The data is passed via HTTP GET (as part of the URL) and includes:

                  + +
                    +
                  • extern_nav: the URL from which the resource is being called +
                  • extern_usr: the username of the current user +
                  • extern_nam: the full name of the current user +
                  • extern_tim: the current time +
                  • extern_pwd: a unique password +
                  + +

                  All this is due to be revised sometime in the near future.

                  + diff --git a/lang/et/help/resource/resourcetype.html b/lang/et/help/resource/resourcetype.html index cb75736fa39..bef9d3af577 100644 --- a/lang/et/help/resource/resourcetype.html +++ b/lang/et/help/resource/resourcetype.html @@ -1,32 +1,32 @@

                  Ressurside tüübid

                  -

                  Ressursidel võib olla mistahes sisu. Nende erinevad tüübid - määravad enamasti ära, kuidas sisule juurde pääseb.
                  -
                  - Lihttekst – kõige tavalisem tüüp. Võid - lihtsalt trükkida (redigeerida) lehe blanketile, mis on järgmisel - lehel. Osa sinu trükitud tekstist formaaditakse automaatselt, nagu foorumi - postitused. Abi teksti trükkimisel leiad siit:
                  -
                  - HTML tekst – edasijõudnud kasutajatele. Automaatset - formaatimist ei toimu, kõik tuleb teha käsitsi, kasutades HTML koode.
                  -
                  - Viide – õpetlik viide päevikule/ajakirjale - või raamatule
                  -
                  - Üleslaaditud fail – kuvab mistahes faili, mille - oled kursusele üles laadinud. Vaata sktsiooni “Failid”.
                  -
                  - Veebilink – veebiaadress, mis osutab mingile kohale veebis. - Kui keegi klikib sellele ressursitegevusele, siis võetakse see kursusest - välja (sinu osutatud lehte näidatakse nii, et see täidab brauseri - akna).
                  -
                  - Veebileht – veebiaadress, mis osutab mingile kohale veebis. - Nagu eelmisegi tüübi puhul, näidatakse veebilehte. Erinevalt - eelmisest näidatakse seda lehte raami sees, nagu ta oleks kursusesse integreeritud.
                  -
                  - Programm – välisprogramm, mis nõuab, et edastataks - infot Moodle’i kasutaja ja kursuse kohta. See lubab välistel veebirakendustel - Moodle’iga koostööd teha.
                  -

                  +

                  Ressursidel võib olla mistahes sisu. Nende erinevad tüübid + määravad enamasti ära, kuidas sisule juurde pääseb.
                  +
                  + Lihttekst – kõige tavalisem tüüp. Võid + lihtsalt trükkida (redigeerida) lehe blanketile, mis on järgmisel + lehel. Osa sinu trükitud tekstist formaaditakse automaatselt, nagu foorumi + postitused. Abi teksti trükkimisel leiad siit:
                  +
                  + HTML tekst – edasijõudnud kasutajatele. Automaatset + formaatimist ei toimu, kõik tuleb teha käsitsi, kasutades HTML koode.
                  +
                  + Viide – õpetlik viide päevikule/ajakirjale + või raamatule
                  +
                  + Üleslaaditud fail – kuvab mistahes faili, mille + oled kursusele üles laadinud. Vaata sktsiooni “Failid”.
                  +
                  + Veebilink – veebiaadress, mis osutab mingile kohale veebis. + Kui keegi klikib sellele ressursitegevusele, siis võetakse see kursusest + välja (sinu osutatud lehte näidatakse nii, et see täidab brauseri + akna).
                  +
                  + Veebileht – veebiaadress, mis osutab mingile kohale veebis. + Nagu eelmisegi tüübi puhul, näidatakse veebilehte. Erinevalt + eelmisest näidatakse seda lehte raami sees, nagu ta oleks kursusesse integreeritud.
                  +
                  + Programm – välisprogramm, mis nõuab, et edastataks + infot Moodle’i kasutaja ja kursuse kohta. See lubab välistel veebirakendustel + Moodle’iga koostööd teha.
                  +

                  \ No newline at end of file diff --git a/lang/et/help/resource/summary.html b/lang/et/help/resource/summary.html index baa3cb6e944..de523ca9a22 100644 --- a/lang/et/help/resource/summary.html +++ b/lang/et/help/resource/summary.html @@ -1,11 +1,11 @@ -

                  Reading Summary

                  - -

                  The summary is a very short description of the resource. - -Kokkuvõte loetavast -

                  Kokkuvõte on väga lühike ressursi kirjeldus.

                  -

                  Ära püüa siia liiga pikka teksti kirjutada ega ressurssi ennast - lisada.

                  -

                  Sisu täpsustamiseks on sul võimalus järgmisel lehel.
                  -

                  +

                  Reading Summary

                  + +

                  The summary is a very short description of the resource. + +Kokkuvõte loetavast +

                  Kokkuvõte on väga lühike ressursi kirjeldus.

                  +

                  Ära püüa siia liiga pikka teksti kirjutada ega ressurssi ennast + lisada.

                  +

                  Sisu täpsustamiseks on sul võimalus järgmisel lehel.
                  +

                  \ No newline at end of file diff --git a/lang/et/help/richtext.html b/lang/et/help/richtext.html index 1b0a68c0372..ac21cd5bd43 100644 --- a/lang/et/help/richtext.html +++ b/lang/et/help/richtext.html @@ -1,168 +1,168 @@ -

                  About the Richtext HTML editor

                  - -

                  Availability: -htmleditor) { - print_string("htmleditordisabledadmin"); - } else if (!$USER->htmleditor) { - print_string("htmleditordisabled"); - } else if (!can_use_richtext_editor()) { - print_string("htmleditordisabledbrowser"); - } else { - print_string("htmleditoravailable"); - } -?> -

                  - -

                  The Richtext HTML editor 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. - -

                  Richtext HTML redaktor annab - tekstitöötlusliidese, mis on manustatud sinu veebilehte, võimaldamaks - sul teksti intuitiivselt redigeerida ning tekitab normaalse HTML koodi.
                  - Lisaks teksti formaatimisele annab see redaktor rea kasulikke lisavõimalusi. -
                  -

                  Kleebi teksti teistest - rakendusprogrammidest
                  -

                  - Võid lõigata ja kleepida rich text teistest Windowsi rakendusprogrammidest - nagu Microsoft Word, otse sellesse redaktorisse ning sinu vormingud jäävad - alles. Kasuta tavalist lõikamise ja kleepimise menüüd oma veebilehitsejas - (või Control-C ja Control-V).

                  -

                  Kujutiste lisamine

                  -
                    -

                    Kui sul on kujutisi, mis - on juba veebilehel ilmunud ja veebiaadressi kaudu kättesaadavad, võid - lisada neid kujutisi tekstidesse, kasutades klahvi ”Lisa kujutis”. - -

                  -

                  Tabelite lisamine

                  -
                    -

                    Et oma tekstide paigutust - muuta, võid kasutada tööribal klahvi “Lisa tabelid”. - -

                  -

                  Linkide lisamine

                  -
                    -

                    Uue lingi tegemiseks trüki - kõigepealt tekst, mida lingiks soovid. Siis tee see aktiivseks ja klõpsa - lingi klahvi tööribal. Trüki veebiaadress, millega tahad seda - linkida ja ongi valmis! -

                  -

                  Emotikonide lisamine

                  -
                    -

                    Nende väikeste ikoonide - teksti paigutamiseks klõpsa smaili ikoonile tööribal. Avaneb - dialoogikast, mis võimaldab valida järgmiste smaili ikoonide hulgast. - (Alternatiivina võid trükkida vastava koodi otse oma teksti sisse - ja see muudetakse hiljem ära teksti kuvamise käigus). - - - -
                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    naeratab:-)
                    lai irve:-D
                    pilgutab ilma;-)
                    segaduses:-/
                    mõtlik - V-.
                    näitab - keelt :-P
                    laheB-)
                    nõustub^-)
                    silmad pärani8-)
                    üllatunud8-o
                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    kurvastab:-(
                    häbeneb8-.
                    punastab:-I
                    musid:-X
                    kloun:o)
                    sinikasP-|
                    tige8-[
                    surnudxx-P
                    unine|-.
                    õel}-]
                    -
                    -

                  - - +

                  About the Richtext HTML editor

                  + +

                  Availability: +htmleditor) { + print_string("htmleditordisabledadmin"); + } else if (!$USER->htmleditor) { + print_string("htmleditordisabled"); + } else if (!can_use_richtext_editor()) { + print_string("htmleditordisabledbrowser"); + } else { + print_string("htmleditoravailable"); + } +?> +

                  + +

                  The Richtext HTML editor 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. + +

                  Richtext HTML redaktor annab + tekstitöötlusliidese, mis on manustatud sinu veebilehte, võimaldamaks + sul teksti intuitiivselt redigeerida ning tekitab normaalse HTML koodi.
                  + Lisaks teksti formaatimisele annab see redaktor rea kasulikke lisavõimalusi. +
                  +

                  Kleebi teksti teistest + rakendusprogrammidest
                  +

                  + Võid lõigata ja kleepida rich text teistest Windowsi rakendusprogrammidest + nagu Microsoft Word, otse sellesse redaktorisse ning sinu vormingud jäävad + alles. Kasuta tavalist lõikamise ja kleepimise menüüd oma veebilehitsejas + (või Control-C ja Control-V).

                  +

                  Kujutiste lisamine

                  +
                    +

                    Kui sul on kujutisi, mis + on juba veebilehel ilmunud ja veebiaadressi kaudu kättesaadavad, võid + lisada neid kujutisi tekstidesse, kasutades klahvi ”Lisa kujutis”. + +

                  +

                  Tabelite lisamine

                  +
                    +

                    Et oma tekstide paigutust + muuta, võid kasutada tööribal klahvi “Lisa tabelid”. + +

                  +

                  Linkide lisamine

                  +
                    +

                    Uue lingi tegemiseks trüki + kõigepealt tekst, mida lingiks soovid. Siis tee see aktiivseks ja klõpsa + lingi klahvi tööribal. Trüki veebiaadress, millega tahad seda + linkida ja ongi valmis! +

                  +

                  Emotikonide lisamine

                  +
                    +

                    Nende väikeste ikoonide + teksti paigutamiseks klõpsa smaili ikoonile tööribal. Avaneb + dialoogikast, mis võimaldab valida järgmiste smaili ikoonide hulgast. + (Alternatiivina võid trükkida vastava koodi otse oma teksti sisse + ja see muudetakse hiljem ära teksti kuvamise käigus). + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    naeratab:-)
                    lai irve:-D
                    pilgutab ilma;-)
                    segaduses:-/
                    mõtlik + V-.
                    näitab + keelt :-P
                    laheB-)
                    nõustub^-)
                    silmad pärani8-)
                    üllatunud8-o
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    kurvastab:-(
                    häbeneb8-.
                    punastab:-I
                    musid:-X
                    kloun:o)
                    sinikasP-|
                    tige8-[
                    surnudxx-P
                    unine|-.
                    õel}-]
                    +
                    +

                  + + diff --git a/lang/et/help/scales.html b/lang/et/help/scales.html new file mode 100644 index 00000000000..f7ba31ca25c --- /dev/null +++ b/lang/et/help/scales.html @@ -0,0 +1,18 @@ +

                  Scales

                  + +

                  Teachers can create new custom scales to be used in a course for any grading activities.

                  + +

                  The name of the scale should be a phrase that identifies it clearly: this will appear + in scale-selection lists, as well as on context-sensitive help buttons.

                  + +

                  The scale itself is defined by an ordered list of values, ranging from negative to positive, separated by commas. For example:

                  + +
                  + Disappointing, Not good enough, Average, Good, Very good, Excellent! +
                  + +

                  Scales should also include a good description of what it means and how it is + expected to be used. This description will appear in help pages for teachers and students.

                  + +

                  Finally, there may be one or more "Standard" scales defined on your site by the + system administrator. These will be available in all courses.

                  diff --git a/lang/et/help/summaries.html b/lang/et/help/summaries.html new file mode 100644 index 00000000000..1b720b8ec01 --- /dev/null +++ b/lang/et/help/summaries.html @@ -0,0 +1,10 @@ +

                  Topic/Week summaries

                  + +

                  The idea of a topic summary is a very short text to prepare students + for the activities within this topic (or week).

                  + +

                  Each summary should be very short so that the course page doesn't become too long.

                  + +

                  If you find yourself wanting to say more than a sentence or two then + consider adding a resource to this topic instead (for example, the first activity + might be a page called About This Topic).

                  diff --git a/lang/et/help/survey/index.html b/lang/et/help/survey/index.html new file mode 100644 index 00000000000..018229e6ad9 --- /dev/null +++ b/lang/et/help/survey/index.html @@ -0,0 +1,5 @@ +

                  Survey module

                  + + diff --git a/lang/et/help/survey/mods.html b/lang/et/help/survey/mods.html new file mode 100644 index 00000000000..55af69a3789 --- /dev/null +++ b/lang/et/help/survey/mods.html @@ -0,0 +1,8 @@ +

                   Surveys

                  +
                    +

                    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.

                    +
                  diff --git a/lang/et/help/surveys.html b/lang/et/help/surveys.html index 5b1425de164..1f3aa233aea 100644 --- a/lang/et/help/surveys.html +++ b/lang/et/help/surveys.html @@ -1,110 +1,110 @@ -

                  Saadaval - olevad uurimused

                  -


                  - Hetkel pakub Moodle üksnes paari konkreetset uurimuse tüüpi (tulevased - versioonid võimaldavad sul ka oma isikliku tüübi luua).
                  - Saadaval olevad uurimused on valitud seetõttu, et neid on peetud eriti - kasulikuks online õpikeskkondade hindamisel, mis põhinevad konstruktivistlikul - pedagoogikal. Neist on kasu konkreetsete trendide tuvastamisel, mis võivad - osalejate hulgas välja areneda. (Detailse analüüsi sel teemal - leiad teadustööst http://dougiamas.com/writing/herdsa2002).

                  -
                  -

                  COLLES – Konstruktivistlik - online õpikeskkonna uuring

                  -


                  - COLLES hõlmab 24 ökonoomset väidet, mis on grupeeritud kuue - skaala kaupa, millest igaüks aitab meil esitada võtmeküsimusi - online õpikeskkonna kvaliteedi kohta.

                  -
                    - - - - - - - - - - - - - - - - - - - - - - - - - -
                    AsjakohasusKui asjakohane on - online õppimine õpilase professionaalse praktika seisukohalt?
                    Mõtisklemine/
                    - kaalutlemine
                    -
                    Kas online õppimine - stimuleerib õpilaste kriitilist kaalutlevat mõtlemisoskust?
                    InteraktiivsusMil määral - kasutavad õpilased online suhtlemist rikastavaks ja harivaks dialoohiks?
                    Juhendaja - tugiKui hästi võimaldavad - juhendajad õpilastel osaleda online õpiprotsessis?
                    Kaaslaste - tugi Kas õpilane - saab kaaslastelt online õppimisel julgustavat tuge?
                    Tõlgendamine - Kas õpilased - ja juhendajad mõistavad hästi üksteise sõnumeid - online suheldes ?
                    -

                    Dünaamilist suhtumist - õppimisse toetab uus teadmiste teooria: sotsiaalne konstruktivism, - mis kujutab õppijat aktiivse kontseptsiooni pooldajana sotsiaalses - interaktiivses õpikeskkonnas. Sotsiaalne konstruktivism on tunnetusteooria - ehk teadmise viis, kus õppijad teevad koostööd mõtiskledes - ja arutledes, et koos konstrueerida uusi arusaamu, eriti üksteise vastastikuse - küsitlemise teel isiklike kogemuste kohta.
                    - Selle koostöö keskmeks on õpilase kommunikatiivsete oskuste - arendamine, siin peetakse silmas võimet pidada avatud ja kriitilist - diskursust nii õpetaja kui kaaslastega. Seda diskursust iseloomustab - empaatiline orientatsioon vastastikuse mõistmise ülesehitamisele - ja kriitiline suhtumine selle aluspõhjaks olevate oletuste uurimisse.
                    - COLLES on välja töötatud selleks, et võimaldada sul - jälgida , mil määral sa oled võimeline kasutama WWW - interaktiivseid võimalusi selleks, et pakkuda õpilastele dünaamilise - õpipraktika võimalust.
                    - (See info pärineb lühendatud kujul COLLES kodulehelt. Loe rohkem - COLLES ja selle autorite kohta siit: http://surveylearning.com/colles/)
                    -

                    -
                  -
                  -

                  ATTLS – Hoiakud - õppimise ja mõtlemise uurimise suhtes.

                  -


                  - “Teadmise viisi” teooria, mis algselt pärineb soouuringute - valdkonnast (Belenky jt., 1986) pakub meile uurimisvahendi diskursuse analüüsimiseks - koostöö kekkonnas.

                  -


                  - Uurimus “Hoiakud õppimise ja mõtlemise suhtes” (ATTLS) - on vahend, mille töötasid välja Galotti koos kolleegidega (1999), - et mõõta, mil määral on inimese teadmised “seostatud” - (CK) või “eraldatud” (SK).

                  -


                  - Kõrgema CK näitajaga inimesed kalduvad enam arvama, et õppimine - on nauditav ning on pigem altimad tegema koostööd ja toetuma teiste - ideedele, samal ajal kui kõrgema SK näitajaga inimesed kalduvad - võtma õppimise suhtes kriitlise ja argumentatiivse seisukoha.

                  -


                  - Uuringud on näidanud, et need kaks õppimisstiili on teineteisest - sõltumatud (Galotti et al., 1999; Galotti et al., 2001). Lisaks peab - rõhutama, et neid tuleb üksnes võtta kui kaalutlevaid suhtumisviise - õppimisse, mitte kui õpivõimekust ega intellektuaalsust.

                  -


                  - 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.

                  -


                  - 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.

                  -


                  - 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.
                  -

                  +

                  Saadaval + olevad uurimused

                  +


                  + Hetkel pakub Moodle üksnes paari konkreetset uurimuse tüüpi (tulevased + versioonid võimaldavad sul ka oma isikliku tüübi luua).
                  + Saadaval olevad uurimused on valitud seetõttu, et neid on peetud eriti + kasulikuks online õpikeskkondade hindamisel, mis põhinevad konstruktivistlikul + pedagoogikal. Neist on kasu konkreetsete trendide tuvastamisel, mis võivad + osalejate hulgas välja areneda. (Detailse analüüsi sel teemal + leiad teadustööst http://dougiamas.com/writing/herdsa2002).

                  +
                  +

                  COLLES – Konstruktivistlik + online õpikeskkonna uuring

                  +


                  + COLLES hõlmab 24 ökonoomset väidet, mis on grupeeritud kuue + skaala kaupa, millest igaüks aitab meil esitada võtmeküsimusi + online õpikeskkonna kvaliteedi kohta.

                  +
                    + + + + + + + + + + + + + + + + + + + + + + + + + +
                    AsjakohasusKui asjakohane on + online õppimine õpilase professionaalse praktika seisukohalt?
                    Mõtisklemine/
                    + kaalutlemine
                    +
                    Kas online õppimine + stimuleerib õpilaste kriitilist kaalutlevat mõtlemisoskust?
                    InteraktiivsusMil määral + kasutavad õpilased online suhtlemist rikastavaks ja harivaks dialoohiks?
                    Juhendaja + tugiKui hästi võimaldavad + juhendajad õpilastel osaleda online õpiprotsessis?
                    Kaaslaste + tugi Kas õpilane + saab kaaslastelt online õppimisel julgustavat tuge?
                    Tõlgendamine + Kas õpilased + ja juhendajad mõistavad hästi üksteise sõnumeid + online suheldes ?
                    +

                    Dünaamilist suhtumist + õppimisse toetab uus teadmiste teooria: sotsiaalne konstruktivism, + mis kujutab õppijat aktiivse kontseptsiooni pooldajana sotsiaalses + interaktiivses õpikeskkonnas. Sotsiaalne konstruktivism on tunnetusteooria + ehk teadmise viis, kus õppijad teevad koostööd mõtiskledes + ja arutledes, et koos konstrueerida uusi arusaamu, eriti üksteise vastastikuse + küsitlemise teel isiklike kogemuste kohta.
                    + Selle koostöö keskmeks on õpilase kommunikatiivsete oskuste + arendamine, siin peetakse silmas võimet pidada avatud ja kriitilist + diskursust nii õpetaja kui kaaslastega. Seda diskursust iseloomustab + empaatiline orientatsioon vastastikuse mõistmise ülesehitamisele + ja kriitiline suhtumine selle aluspõhjaks olevate oletuste uurimisse.
                    + COLLES on välja töötatud selleks, et võimaldada sul + jälgida , mil määral sa oled võimeline kasutama WWW + interaktiivseid võimalusi selleks, et pakkuda õpilastele dünaamilise + õpipraktika võimalust.
                    + (See info pärineb lühendatud kujul COLLES kodulehelt. Loe rohkem + COLLES ja selle autorite kohta siit: http://surveylearning.com/colles/)
                    +

                    +
                  +
                  +

                  ATTLS – Hoiakud + õppimise ja mõtlemise uurimise suhtes.

                  +


                  + “Teadmise viisi” teooria, mis algselt pärineb soouuringute + valdkonnast (Belenky jt., 1986) pakub meile uurimisvahendi diskursuse analüüsimiseks + koostöö kekkonnas.

                  +


                  + Uurimus “Hoiakud õppimise ja mõtlemise suhtes” (ATTLS) + on vahend, mille töötasid välja Galotti koos kolleegidega (1999), + et mõõta, mil määral on inimese teadmised “seostatud” + (CK) või “eraldatud” (SK).

                  +


                  + Kõrgema CK näitajaga inimesed kalduvad enam arvama, et õppimine + on nauditav ning on pigem altimad tegema koostööd ja toetuma teiste + ideedele, samal ajal kui kõrgema SK näitajaga inimesed kalduvad + võtma õppimise suhtes kriitlise ja argumentatiivse seisukoha.

                  +


                  + Uuringud on näidanud, et need kaks õppimisstiili on teineteisest + sõltumatud (Galotti et al., 1999; Galotti et al., 2001). Lisaks peab + rõhutama, et neid tuleb üksnes võtta kui kaalutlevaid suhtumisviise + õppimisse, mitte kui õpivõimekust ega intellektuaalsust.

                  +


                  + 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.

                  +


                  + 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.

                  +


                  + 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.
                  +

                  diff --git a/lang/et/help/teachers.html b/lang/et/help/teachers.html index dd51326bb74..f5326164571 100644 --- a/lang/et/help/teachers.html +++ b/lang/et/help/teachers.html @@ -1,27 +1,27 @@ -

                  Teachers

                  - -

                  This page shows the list of people who are assigned to be - "teachers" in this course (by the system administrator). - -

                  Õpetajad
                  -

                  - See leht annab loendi inimestest, kes on süsteemi administraatori poolt - määratud sellel kursusel „õpetajateks .
                  -
                  - Võid kasutada seda vormi, et määrata roll (tiitel) igale inimesele, - nagu „Professor“, „Juhendaja“, „Assistent“ - jne. Need ilmuvad saidi kursuste loendis ning samuti sinu kursusel osalejate - loendis. Kui jätad rolli märkimata, siis vaikimisi kasutatakse õpetajast - rääkides sõna, mille sina määrad ära Kursuse - Seadete lehel.
                  -
                  - Sa võid selle loendi ka ise järjestada (näiteks et paigutada - põhiline õpetaja loendi algusesse). Lihtsalt vali „Telli“ - veerus olevates menüüdes numbrid. Kui vajutad klahvile „Salvesta - muudatused“, näed uut järjestust.
                  -
                  - MÄRKUS: Erandjuhtumina tuleb käsitleda seda, kui teed õpetaja - kohta valiku „Peida“ . Sel juhul õpetaja nime EI NÄIDATA - ei kursuse loendites ega osalejate loendis. Nad on õpilaste eest „peidetud“ - (kuni nad foorumitele posti ei saada jne.)

                  -

                  +

                  Teachers

                  + +

                  This page shows the list of people who are assigned to be + "teachers" in this course (by the system administrator). + +

                  Õpetajad
                  +

                  + See leht annab loendi inimestest, kes on süsteemi administraatori poolt + määratud sellel kursusel „õpetajateks .
                  +
                  + Võid kasutada seda vormi, et määrata roll (tiitel) igale inimesele, + nagu „Professor“, „Juhendaja“, „Assistent“ + jne. Need ilmuvad saidi kursuste loendis ning samuti sinu kursusel osalejate + loendis. Kui jätad rolli märkimata, siis vaikimisi kasutatakse õpetajast + rääkides sõna, mille sina määrad ära Kursuse + Seadete lehel.
                  +
                  + Sa võid selle loendi ka ise järjestada (näiteks et paigutada + põhiline õpetaja loendi algusesse). Lihtsalt vali „Telli“ + veerus olevates menüüdes numbrid. Kui vajutad klahvile „Salvesta + muudatused“, näed uut järjestust.
                  +
                  + MÄRKUS: Erandjuhtumina tuleb käsitleda seda, kui teed õpetaja + kohta valiku „Peida“ . Sel juhul õpetaja nime EI NÄIDATA + ei kursuse loendites ega osalejate loendis. Nad on õpilaste eest „peidetud“ + (kuni nad foorumitele posti ei saada jne.)

                  +

                  diff --git a/lang/et/help/text.html b/lang/et/help/text.html index 65d0baa0747..e29a378b022 100644 --- a/lang/et/help/text.html +++ b/lang/et/help/text.html @@ -1,175 +1,175 @@ -

                  Abi - teksti kirjutamisel
                  - Teksti kirjutamine Moodle’is toimib üsna ootuspäraselt, kuid - sul on võimalus teksti sisse lisada ka emotikone, veebiaadresse, ja mõnesid - HTML manuseid.

                  -


                  - Smailid (emotikonid)
                  - Et paigutada teksti sisse neid pisikesi ikoone, trüki lihtsalt sobiv kood. - Need koodid on ise nagu väikesed pildid, kui pöörad pea neid - vaadates vasakule.
                  -

                  - - - -
                  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                  naeratab:-)
                  lai irve:-D
                  pilgutab ilma;-)
                  segaduses:-/
                  mõtlik - V-.
                  näitab keelt - :-P
                  laheB-)
                  nõustub^-)
                  silmad pärani8-)
                  üllatunud8-o
                  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                  kurvastab:-(
                  häbeneb8-.
                  punastab:-I
                  musid:-X
                  kloun:o)
                  sinikasP-|
                  tige8-[
                  surnudxx-P
                  unine|-.
                  õel}-]
                  -
                  -

                  URL e. veebiaadressid

                  -
                    -

                    Mistahes „sõna“, - mis algab www. või http:// muudetakse automaatselt klikitavaks lingiks.
                    - Näiteks : www.neti.ee või http://ametikool.ee
                    -
                    -

                  -

                  HTML tag-id
                  - Võid kasutada piiratud komplekti HTML tag-e, et oma tekstis midagi rõhutada. -

                  -
                    - - - - - - - - - - - - - - - - - - - -
                    HTML tag-id - Tulemus
                    <B> rasvane - </B> - rasvane - tekst
                    <I> kursiiv - </I> - Kursiivis tekst -
                    <U> alla joonitud - </U> - Allajoonitud - tekst
                    <FONT SIZE=1> - väike </FONT> - väike
                    <FONT SIZE=4> - suur </FONT> - suur
                    <FONT COLOR green> - näide </FONT> - näide
                    <UL><LI>üks - <LI>kaks </UL> -
                      -
                    • ükd -
                    • kaks
                    <HR> -
                    -
                  - - +

                  Abi + teksti kirjutamisel
                  + Teksti kirjutamine Moodle’is toimib üsna ootuspäraselt, kuid + sul on võimalus teksti sisse lisada ka emotikone, veebiaadresse, ja mõnesid + HTML manuseid.

                  +


                  + Smailid (emotikonid)
                  + Et paigutada teksti sisse neid pisikesi ikoone, trüki lihtsalt sobiv kood. + Need koodid on ise nagu väikesed pildid, kui pöörad pea neid + vaadates vasakule.
                  +

                  + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  naeratab:-)
                  lai irve:-D
                  pilgutab ilma;-)
                  segaduses:-/
                  mõtlik + V-.
                  näitab keelt + :-P
                  laheB-)
                  nõustub^-)
                  silmad pärani8-)
                  üllatunud8-o
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  kurvastab:-(
                  häbeneb8-.
                  punastab:-I
                  musid:-X
                  kloun:o)
                  sinikasP-|
                  tige8-[
                  surnudxx-P
                  unine|-.
                  õel}-]
                  +
                  +

                  URL e. veebiaadressid

                  +
                    +

                    Mistahes „sõna“, + mis algab www. või http:// muudetakse automaatselt klikitavaks lingiks.
                    + Näiteks : www.neti.ee või http://ametikool.ee
                    +
                    +

                  +

                  HTML tag-id
                  + Võid kasutada piiratud komplekti HTML tag-e, et oma tekstis midagi rõhutada. +

                  +
                    + + + + + + + + + + + + + + + + + + + +
                    HTML tag-id + Tulemus
                    <B> rasvane + </B> + rasvane + tekst
                    <I> kursiiv + </I> + Kursiivis tekst +
                    <U> alla joonitud + </U> + Allajoonitud + tekst
                    <FONT SIZE=1> + väike </FONT> + väike
                    <FONT SIZE=4> + suur </FONT> + suur
                    <FONT COLOR green> + näide </FONT> + näide
                    <UL><LI>üks + <LI>kaks </UL> +
                      +
                    • ükd +
                    • kaks
                    <HR> +
                    +
                  + + diff --git a/lang/et/help/textformat.html b/lang/et/help/textformat.html index 5eaed82c02b..9c170b49a42 100644 --- a/lang/et/help/textformat.html +++ b/lang/et/help/textformat.html @@ -1,43 +1,43 @@ -

                  Formatting text

                  - -

                  When writing text in Moodle there are several formats you can choose - to produce your text, depending on your expertise and the type of browser - you are using. - -

                  Teksti formaatiminet. -

                  Kirjutades Moodle’s teksti, on jooksvalt kaks formaati, mille vahel valida, - sõltuvalt sinu oskustest ja brauseri tüübist, mida kasutad. -

                  Tavaliselt võid jätta need seaded lihtsalt puutumata ja - kõik peaks kukkuma välja just nii, nagu eeldad. -

                  1. Moodle auto-formaat

                  - -
                    -

                    See formaat on sobivaim, kui kasutad sisestamiseks normaalseid veebivorme - (mitte Richtext HTML redaktorit). Lihtsalt trüki nagu alati, nagu saadaksid - emaili.
                    -
                    - Kui salvestad oma teksti, siis Moodle teeb ise automaatselt terve rea toiminguid, - et su teksti formaatida.
                    - Näiteks veebiaadressid nagu http://yahoo.com või isegi www.yahoo.com - muudetakse linkideks.
                    -
                    - Säilivad sinu reakatkestused ja uued lõigud algavad tühja - reaga.
                    - Smailid nagu :-) muutuvad automaatselt vastavateks graafilisteks kujunditeks.
                    - Soovi korral võid teksti paigutada koguni HTML koode ja ka need säilitatakse.
                    -

                  - - -

                  2. HTML formaat

                  - -
                    -

                    See formaat eeldab, et kogu tekst on täienisti HTML. Kui kasutad HTML - redaktorit teksti redigeerimiseks, siis on see vaikeseade formaat – - kõik käsud tööribal annavad sulle HTML-i. -

                    Isegi kui sa ei kasuta Richtext HTML redaktorit, võid sa kasutada - oma tekstis HTML koode ja need peaks välja kukkuma täpselt nagu - kavatsesid. -

                    Erinevalt Moodle auto-formaadist ei teostata mingit automaatset formaatimist. -

                  - - +

                  Formatting text

                  + +

                  When writing text in Moodle there are several formats you can choose + to produce your text, depending on your expertise and the type of browser + you are using. + +

                  Teksti formaatiminet. +

                  Kirjutades Moodle’s teksti, on jooksvalt kaks formaati, mille vahel valida, + sõltuvalt sinu oskustest ja brauseri tüübist, mida kasutad. +

                  Tavaliselt võid jätta need seaded lihtsalt puutumata ja + kõik peaks kukkuma välja just nii, nagu eeldad. +

                  1. Moodle auto-formaat

                  + +
                    +

                    See formaat on sobivaim, kui kasutad sisestamiseks normaalseid veebivorme + (mitte Richtext HTML redaktorit). Lihtsalt trüki nagu alati, nagu saadaksid + emaili.
                    +
                    + Kui salvestad oma teksti, siis Moodle teeb ise automaatselt terve rea toiminguid, + et su teksti formaatida.
                    + Näiteks veebiaadressid nagu http://yahoo.com või isegi www.yahoo.com + muudetakse linkideks.
                    +
                    + Säilivad sinu reakatkestused ja uued lõigud algavad tühja + reaga.
                    + Smailid nagu :-) muutuvad automaatselt vastavateks graafilisteks kujunditeks.
                    + Soovi korral võid teksti paigutada koguni HTML koode ja ka need säilitatakse.
                    +

                  + + +

                  2. HTML formaat

                  + +
                    +

                    See formaat eeldab, et kogu tekst on täienisti HTML. Kui kasutad HTML + redaktorit teksti redigeerimiseks, siis on see vaikeseade formaat – + kõik käsud tööribal annavad sulle HTML-i. +

                    Isegi kui sa ei kasuta Richtext HTML redaktorit, võid sa kasutada + oma tekstis HTML koode ja need peaks välja kukkuma täpselt nagu + kavatsesid. +

                    Erinevalt Moodle auto-formaadist ei teostata mingit automaatset formaatimist. +

                  + + diff --git a/lang/et/help/wiki.html b/lang/et/help/wiki.html new file mode 100644 index 00000000000..5fb630ad24b --- /dev/null +++ b/lang/et/help/wiki.html @@ -0,0 +1,146 @@ +

                  Help on Writing Wiki Formatted Pages

                  + +

                  + Wiki formatted pages provide a facility for marking up plain text with intuitive, human readable + formatting that will be converted to XHTML when displayed. The big advantages are that you + do not need to learn HTML to produce quite complex results, and that the text you write + looks good to the eye even before conversion. It is a real alternative to + saving Word files as HTML retaining the ability to edit the resource online. +

                  + +

                  You should enter basically plain text. There are a number of special characters you +can add to insert formatting

                  + +

                  Block level formatting

                  + +

                  + Paragraph blocks are separated by at least one blank line. To add special formatting to a paragraph + add one of the following special characters in the first character of the first line of the block followed + by a space... +

                  + + + + + + + + + + +
                  CharacterBlock Type
                  No characterOrdinary paragraph
                  >Quotation
                  SpacePreformatted Text (Monospaced)
                  %Preformatted and Wikki formatting is ignored
                  !#Heading - where # is 1-6, the heading level (1 is biggest)
                  Q.Question - styling info added to paragraph to improve question/answer presentation (in theme)
                  A.Answer - as above but answer
                  + +

                  List Formatting

                  + +

                  Simple lists can be constructed easily by placing a special character at the start of each line in the list followed by a space. +The list is terminated by a blank line. Lists may be freely nested - and nested lists may change list type. Definition list +definitions and text types may be freely intermixed to obtain the desired effect. The special characters +are as follows...

                  + + + + + + + +
                  CharacterList item type
                  *Unordered List (bullet points)
                  #Ordered List (1,2,3 etc)
                  :Definition list, definition
                  ;Definition list, text
                  + +

                  Nested lists example:

                  +

                  +  * First Bullet
                  +  * Second Bullet
                  +  ## nested line 1
                  +  ## nested line 2
                  +  * Third Bullet
                  +

                  +

                  Produces: +

                  • First Bullet
                  • +
                  • Second Bullet
                  • +
                    1. nested line 1
                    2. +
                    3. nested line 2
                    +
                  • Third Bullet +

                  + +

                  Inline formatting

                  + +

                  Inline formmating allows part of a line to be marked as having a particular style. The special +characters used can appear anywhere on a line, but note that the formatting cannot +cross lines. Codes are as follows...

                  + + + + + + + + + + + + +
                  ExampleExampleFormatting
                  *hello world*hello worldStrong or Bold
                  /hello world/hello worldEmphasis or Italics
                  +hello world+hello worldInserted text
                  -hello world-hello worldDeleted or Strikethrough
                  hello ~world~hello worldSubscript
                  hello ^world^hello worldSuperscript
                  "hello world"hello worldQuoted
                  %hello world%hello worldCode or Monospaced
                  @hello world@hello worldCite
                  + +

                  Acronyms

                  + +

                  Acronym tagging is acheived by placing the acronym in capital letters followed by the description +is parenthesis. There must be no space between the acronym and the parenthesis. Example...

                  + +

                  HTML(Hypertext Markup Language)
                  HTML

                  + +

                  Hyper Links

                  + +

                  Links can be placed in the text and are followed (with no spaces) by the text to be displayed in brackets. Example: http://www.google.com/(Search Now) will be converted to +Search Now.

                  + +

                  Mail links can be acheived the same way, e.g.,

                  +

                  nobody@example.com(Test User) will be converted to +Test User

                  + +

                  Moodle Module Links

                  + +

                  If you know the Moodle id number (look for ?id=nn at the end of a module address) and +the module name, you can link directly to that resource using the syntax:

                  + +

                  ModuleName:nn(Description Text)

                  +

                  eg, resource:36(My New Page) forum:10(Jump to forum)

                  + +

                  Moodle Picture Links

                  + +

                  Inline graphics can be placed on wiki pages. You need to upload the graphic and note its path within the file upload area. The syntax is:

                  + +

                  /..path to file..(alt text)

                  + +

                  for example, /mypics/graphic.jpg(Staff picture)

                  + +

                  Automatic reformating

                  + +

                  Many commonly used functions are converted into their XHTML equivalents automatically.. The main ones are as +follows...

                  + +
                    +
                  • HTTP links are converted into active links +
                  • ..., (R), (TM), (C), 1/4, 1/2, 3/4 are all converted to the correct character +
                  • digits x digits converts to correct multiply symbol +
                  • A line starting with at least four dashes is converted into a horizontal line +
                  + +

                  Spelling Checker (Experimental)

                  + +

                  The wiki formatter can be switched into a spell checking mode. Place the following on +a line by itself in the text. Everything after this will be checked... + +

                  +!SPELL:language_code:language_variant
                  +
                  +Examples:
                  +!SPELL:en:british
                  +!SPELL:sp
                  +
                  + +

                  "language_code" should be replaced by the appropriate code (e.g., EN, FR etc), "language_variant" (along with the colon) is optional and can be one of "american", "british", or "canadian" if the language code is EN.

                  + +

                  When displayed any unknown words are highlighted and you can see suggestions by holding the mouse over +the word

                  + +

                  NOTE: spelling uses the pspell libraries. These and the required dictionaries must be present on your server for the spell checker to work. In particular the Windows platform is not supported. +

                  diff --git a/lang/et/help/workshop/addingacomment.html b/lang/et/help/workshop/addingacomment.html new file mode 100644 index 00000000000..e1a51d6ed8e --- /dev/null +++ b/lang/et/help/workshop/addingacomment.html @@ -0,0 +1,20 @@ +

                  Adding a Comment

                  + +

                  Comments can be added to an assessment to: + +

                    +
                  1. Add additional explaination or clarification to the assessment (by + the student who assessed the piece of work); +
                  2. Query the statements made in the assessment (by the student whose + piece of work is being assessed; +
                  3. Try to resolve difficulties which may have arisen during the discussion + on the assessment (by the teacher); +
                  +

                  The aim of the comments is to try either reach agreement on the + current assessment or persuade the assessor to revise their assessment. + This discussion should be undertaken in a reasonable way. + +

                  If the work is reassessed then the old comments are discarded and + are no longer shown with the new assessment. + +

                  diff --git a/lang/et/help/workshop/agreeassessments.html b/lang/et/help/workshop/agreeassessments.html new file mode 100644 index 00000000000..51aa4b8589c --- /dev/null +++ b/lang/et/help/workshop/agreeassessments.html @@ -0,0 +1,35 @@ +

                  Agreement of Assessments

                  + +

                  A workshop assignment can have either of these characteristics: + +

                    +
                  1. In the submission and assessment phase when the students see the + assessments made by other students there is no feedback + from the students who submitted the work to the students who made + the assessment. There may be feedback from the teacher if the teacher + choses to grade the student assessments and then the teacher's grades and + comments will be available to both the student whose work it is and + to the student who made the assessment. There will be, however, + be only one way feedback between peers on any one piece of work. + +
                  2. In the submission and assessment phase the students see the + assessments made by other students and they are allowed to comment + on these assessments. They may agree or disagree with the (peer) assessment. + If they agree with the assessment then the assessment stands and is + used in the final calculations when determining the peer grade given to + the particular piece of work. If, however, they do not agree with an + assessment the student who made the assessment is given an + opportunity to revise it. The revise/disagree loop can continue until + either agreement is reached or the deadline is reached. An assessment + which is still in "dispute" when the deadline is reached + is not used in the final calculations. This gives two way feedback + between peers on each piece of work. +
                  +

                  If the second method of working is chosen there is the option of switching off the display + of grades. That is, if this "hide grades" option is exercised, only the comments + in the assessment are shown to the student who work is being assessed. + The grades are shown only after agreement has been reached (on the + comments alone). Note that this option only effective when agreement on + assessments is required. + +

                  diff --git a/lang/et/help/workshop/anonymous.html b/lang/et/help/workshop/anonymous.html new file mode 100644 index 00000000000..03cc72fddee --- /dev/null +++ b/lang/et/help/workshop/anonymous.html @@ -0,0 +1,14 @@ +

                  Anonymous Grading

                  + +

                  A peer graded assignment can be graded anonymously. In this + case the names (and any photos) of the students doing the grading + are not shown. Only the (file) names of the submissions are used to identify + the peices of work being graded. + +

                  When the peer graded assignment is not graded anonymously, the + pieces of work are shown with the names (and any photos) of the + students who submitted the work. This may lead to bias in the gradings. + +

                  Note that if the teacher's grades are shown to the students these are + never shown anonymously. +

                  diff --git a/lang/et/help/workshop/assessmentofexamples.html b/lang/et/help/workshop/assessmentofexamples.html new file mode 100644 index 00000000000..367f9843b0f --- /dev/null +++ b/lang/et/help/workshop/assessmentofexamples.html @@ -0,0 +1,13 @@ +

                  Assessment of Teacher's Examples

                  + +

                  After the teacher has submitted the examples it is useful from the + teacher's point of view to assess these examples, if only partially. + These assessments are private to the teacher, they are NOT shown + to the students at any stage during the assignment. They are, + however, useful when the teacher looks at the student assessments + of the examples. When grading a student assessment, the teacher + sees their own assessment at the top of the page and the + student's assessment of the same piece of work at the bottom of + the page. The "extra" assessment acts as a reference + source and a reminder of the salient points held in the example. +

                  diff --git a/lang/et/help/workshop/assignmenttype.html b/lang/et/help/workshop/assignmenttype.html new file mode 100644 index 00000000000..ad6456cbe33 --- /dev/null +++ b/lang/et/help/workshop/assignmenttype.html @@ -0,0 +1,21 @@ +

                  Peer Graded Assignment Type

                  + +

                  A peer graded assignment can have one of two types: + +

                    +
                  1. Only feedback on the assessment elements and the general comment + is entered. The grading of assessment elements is not seen in the + grading pages. Assignments themselves are not given an overall grade. + However, the grading performance of the students is measured and + this, and only this measure contributes towards the final grades given + to the students. + +
                  2. Here the teacher and peers are asked to provide both feedback and + grades. The assignments are given an overall quantative grade as well + as the qualative data. The final grade for a student will be calculated + from the (weighted) contributions of the teacher's grade, the mean + peers' grade and the student's grading performance. + +
                  + +

                  diff --git a/lang/et/help/workshop/breakdownoffinalgrade.html b/lang/et/help/workshop/breakdownoffinalgrade.html new file mode 100644 index 00000000000..8562145ea1c --- /dev/null +++ b/lang/et/help/workshop/breakdownoffinalgrade.html @@ -0,0 +1,23 @@ +

                  The Breakdown of the Final Grade

                  + +

                  The table on this screen shows your final grade and how it was calculated. + The final grade is made up from three possible components. + +

                    +
                  1. The teacher's grade for your submitted work. +
                  2. The average of the peer grades for your submitted work. +
                  3. A grade for your performance in the peer grading phase. This + performance was based by (a) whether your grades were too high or too low + when compared with the average grade of the other students (this is called bias), + (b) whether your grades follow, again on average, the grades given by + the other students (this is called reliability) + and (c) on the quality of your comments on the other pieces of work you graded. + This was graded by the teacher. These three performance grades were weighted + by the factors 1:2:3 respectively to give an overall "grading" + grade. In other words the teacher's grading of the comments is given the + same weight as the Bias and Reliability factors combined. +
                  + +

                  These three components can be weighted as deemed appropriate for the + assignment. These weights are shown in the smaller table. +

                  diff --git a/lang/et/help/workshop/calculatingfinalgrade.html b/lang/et/help/workshop/calculatingfinalgrade.html new file mode 100644 index 00000000000..c31a1bd1a63 --- /dev/null +++ b/lang/et/help/workshop/calculatingfinalgrade.html @@ -0,0 +1,54 @@ +

                  The Calculation of the Final Grade

                  + +

                  The table on this screen shows how the the final grades for the students + are calculated. The final grades are a weighted sum of up to five components. + +

                    +
                  1. The teacher's grade for their submitted work. This is optional and will be + used if the teacher actually assesses the student's work. If the student submits + more than one peice of work the "best" grade is used. Here, best + means the piece of work with the highest weighted combination of teacher's + grade and peer grade... +
                  2. The average of the peer grades for their submitted work. Again if the student + submits more than one peice of work the "best" grade is used. The + peer grade can optionally + include the teacher's grade. This grade would be included if the number of + peer gradings is very low or it is thought that the peer gradings are suspect + either because of bias (usually on the high side) or for not being reliable. + If included the teacher's grade is treated in the same way as a peer grade in + the calculation of the average. +
                  3. The student's bias in grading peer work. This is measure of whether the + student grades work either too high or too low. It is not an absolute measure + as it is based on the difference between the student's grade and the peer + averages for each of the submissions they assessed. In general this component + should NOT be given a high weighting. +
                  4. The student's reliability in grading peer work. This is a measure on how well + a students grades follow the peer average for the peices of work they + assessed. The measure discounts the student bias and averages the absolute + differences between their grades and the peer average grades. In theory if + the students gives high marks for good peices of work and low marks for poor + pieces of work their reliability will be high. If it is suspected that the students in + general are poor assessors then the teacher's grades should be included into + the ppeer averages, this should make the reliability values more meaningful. +
                  5. The average grade given by the teacher for the student's assessments. + This includes both the preliminary assessments made by the student on the + example pieces of work and any grading the teacher makes on the asessments + produced during the peer assessement phase of the assignment. In general this + component is probably more important than both the Bias and Reliability + components and thus, if available, should be weighted higher. +
                  + +

                  These five components can be weighted as deemed appropriate for the + assignment. For example the teacher's grade might be weighted strongly + if the peer grading part of the assignment is only considered a minor part + of the assignment as a whole. Alternatively, if the teacher only grades a few + of the submissions these grades can be ignored by giving them a zero weighting. + If the assignment is all about the students as judges and the providing of feedback + then first two components may be set to zero (or low) and the students' + grading abilities will determine the final grades. + +

                  Note that this screen is used iteratively and the final grades are not normally + made available to the students until the final phase of the assignment. Once the + the teacher is happy with the final grades and their weightings then they can + be made available to the students. +

                  diff --git a/lang/et/help/workshop/editingacomment.html b/lang/et/help/workshop/editingacomment.html new file mode 100644 index 00000000000..bfd38208073 --- /dev/null +++ b/lang/et/help/workshop/editingacomment.html @@ -0,0 +1,6 @@ +

                  Editing a Comment

                  + +

                  As with other items there is a short period of time allowed when + the text of comments can be amended. The comment is not shown + on the assessment until this period has elapsed. +

                  diff --git a/lang/et/help/workshop/elements.html b/lang/et/help/workshop/elements.html new file mode 100644 index 00000000000..0aef68799de --- /dev/null +++ b/lang/et/help/workshop/elements.html @@ -0,0 +1,65 @@ +

                  Assignment Elements

                  + +

                  For ease of grading, a Workshop Assignment should have a reasonable + number of "Assessment Elements". Each element should cover + a particular aspect of the assignment. Typically an assignment will have + something between 5 to 15 elements for comments and grading, the + actual number depending on the size and complexity of the assignment. A peer + assignment with only one element is allowed and has a similar assessment + strategy to the standard Moodle Assignment. + +

                  The type of elements dependent of the assignment's grading strategy. + +

                  Not Graded. The elements are descriptions of aspects of the assignment. + The assessor is asked to comment on each of these aspects. As with all the grading + strategies, there is also an area for general comments. + + +

                  Accumulative Grading. The elements have the following three features: +

                    +
                  1. The DESCRIPTION of the assessment element. This should clearly state what + aspect of the assignment is being assessed. If the assessment is qualatative + it is helpful to give details of what is considered excellent, average + and poor. + +
                  2. The SCALE of the assessment element. There are a number of prefined + scales. These range from simple Yes/No scales, through multipoint scales to + a full percentage scale. Each element has its own scale which should be choosen + to fit the number of possible variations for that element. Note that the scale + does NOT determine the element's importance when calculating the overall + grade, a two point scale has the same "influence" as a 100 point + scale if the respective elements have the same weight... + +
                  3. The WEIGHT of the assessment element. By default the elements are given the same + importance when calculating the overall grade of the assignment. This can be + changed by giving the more importance elements a weight greater than one, and + the less important elements a weight below one. Changing the weights does NOT + effect the maximum grade, that value is fixed by the Maximum Grade parameter + of the peer assignment. Weights can be assigned negative values, this is an + experimental feature. +
                  +

                  Error Banded Grading. The elements will normally describe certain items + or aspects which must be present in the assignment. The assessment is made on the + present or absence of these items or aspects. The teacher must all set of grade table which + give the suggested grades when all the items are present, when one is absent, when two are + absent, etc. If certain items are more important than others then those items can be given + a weighting greater than one. Minor items can be given a weighting less than one. The + overall "error count" is a weighted sum of the missing items. The assessor + can always make a minor adjustment to these suggested grades. + +

                  Criterion Grading. The elements will give a set of "level" statements +which can be used to rank the assignment. The statements may be cumulative or they may +each be self contained. The assessor must decide which statement best fits each piece of +work. The teacher must also relate each criterion statement with a suggested grade. These +should normally be in order. The assessor can make a minor adjustment to these +suggested grades.

                  + +

                  Rubric Grading. This is similar to Criterion Grading but there is more than +one criteria. The number of criteria is given in the assignment parameters. Within each +criterion there can be up to five "level" statements. In a given assignment +the number of levels can vary from criterion to criterion. When setting up a criterion a +blank level statement signals the end of the level statements. Thus some criteria may have +two levels, others have three, up to five levels. The criteria can be weighted. The levels +are scored 0, 1, 2, up to 4. The grade for the assessment is a weighted sum of these +scores. +

                  \ No newline at end of file diff --git a/lang/et/help/workshop/finalgrades.html b/lang/et/help/workshop/finalgrades.html new file mode 100644 index 00000000000..5d67ae58ed5 --- /dev/null +++ b/lang/et/help/workshop/finalgrades.html @@ -0,0 +1,21 @@ +

                  The Final Grades

                  + +

                  The table on this screen lists the final grades and their breakdown as shown to + the students. If there are missing values in the table then it is possible to "go back" + and add these. In fact, there are two adjustments which can be made to the Final Grades. + +

                    +
                  1. If a teacher's grade needs to be added then the piece of work can be + graded by going + to the teacher's Management screen for assignment and clicking on the link "Student + Submissions for Assessment". Any otherstanding submissions can be graded. Once this has + been done then move the assignment back to Phase 3 and re-calculate the Final grades. In a + similar way any assessments which have not been graded can be graded from the Management + screen. +
                  2. If it is desired to use a different weighting scheme then the assignment should be moved + back to Phase 3 and link "Calculate Final Grades" can be clicked and the new + weights entered. After the grades have been re-calcualted the assignment should be moved + to Phase 4 to make the new grades available. +
                  + +

                  diff --git a/lang/et/help/workshop/graded.html b/lang/et/help/workshop/graded.html new file mode 100644 index 00000000000..97d5c710f97 --- /dev/null +++ b/lang/et/help/workshop/graded.html @@ -0,0 +1,14 @@ +

                  A Graded Peer Assignment

                  + +

                  This shows the grades and comments made on the submitted piece of + work. You can if you wish reply to this assessment and choose not to + accept it (at this stage). If that is the case, please enter your reply in the + box at the foot of the page giving the reason why you are not happy with + the assessment. Then click on the button at the foot of the page and + choose NO when asked whether you are happy with this assessment. + +

                  If, on the other hand. you are happy with the assessment simply + click on the button at the foot of the page and then click on YES when + asked whether you are happy with this assessment. + +

                  diff --git a/lang/et/help/workshop/grading.html b/lang/et/help/workshop/grading.html new file mode 100644 index 00000000000..0c6e9af0266 --- /dev/null +++ b/lang/et/help/workshop/grading.html @@ -0,0 +1,32 @@ +

                  Grading of Peer Assignments

                  + +

                  For ease of grading a Peer Assignment is divided into a number of + assessment "elements". Each element covers + a particular aspect of the assignment. Depending on the type of assessment, + for each element you should +

                    +
                  1. Enter a Grade by clicking in the appropriate button or selecting an appropriate + number from the drop down menu. + +
                  2. Enter an explaination of why you gave that grade in the Feedback box. If + you feel that the reason is obvious then leave the box empty. Note, however, + that the teacher may look at your assessment and may well query a grade + if there is no explaination. +
                  + +

                  In other type of asessments, you are asked to determine if various items + are present or absent, in others you are asked to choose which statement best + fits the peice of work. In both of these assignments you can adjust the grade + somewhat as you see fit. + +

                  The last box on this form allows you to make a general comment on the + work. This should justify your assessment. It should be polite and as far as + possible constructive. Your assessment will be shown to the student who + produced the piece of work. + +

                  You have a limited period of time, typically half an hour, in which to + change your mind and alter your grades or comments. Once that period + is over the person whose work you are assessing is notified about the assessment. + At that stage you can view your assessment but you cannot change it. + +

                  diff --git a/lang/et/help/workshop/gradingassessments.html b/lang/et/help/workshop/gradingassessments.html new file mode 100644 index 00000000000..0838557e123 --- /dev/null +++ b/lang/et/help/workshop/gradingassessments.html @@ -0,0 +1,24 @@ +

                  Grading the Student Assessments

                  + +

                  This screen is used to enter the teacher's grade for the assessment made + by the student during the submission and assessment phase of the assignment. A relatively + simple grading is used, the score out of 20. The treacher can decide what is + being graded and the relative scores from the instructions given to the students + before the assignment started. For example, at a higher level the students may be + required to give critical comments, at an intermediate level the students may be + required to point out strengths and weaknesses, and at a lower level the students + may be simply pointing out errors and inaccuracies.

                  + +

                  If available the Teacher's own assessment is shown before that of the + student so an easy comparison can be made. The teacher's own + comments can act as a kind of benchmark.

                  + +

                  The grade for the assessment is + saved by clicking on the apprpriate button at the foot of the page. There is a + chance to repeat the grading within the "editing" period. Once that + time has elapsed the teacher's comment is made available to the student. The + "grading grade", however, is not revealed to the student until the + final grades are made available. (The reason for this is the likely confusion + between the grade for the peice of work and the grade for the ASSESSMENT + of that work, at an early stage of an assignment the distinction will not be + clear to students.)

                  diff --git a/lang/et/help/workshop/gradingstrategy.html b/lang/et/help/workshop/gradingstrategy.html new file mode 100644 index 00000000000..c09e3a08b43 --- /dev/null +++ b/lang/et/help/workshop/gradingstrategy.html @@ -0,0 +1,73 @@ +

                  Grading Strategy

                  + +

                  A workshop assignment is quite flexible in the type of grading scheme used. This can be: + +

                    +
                  1. No grading: In this type of assignment the teacher is not + interested in quantative assessment from the students at all. The students + make comments of the pieces of works but not grade them. The teacher, + however, can, if desired, grade the student comments. These + "grading grades" form the basis of the students' final grades. + If the teacher does not grade the student assessments then the assignment + does not have any final grades. + +
                  2. Accumulative grading: This is the default type of grading. + In this type of assignment the grade of each + assessment is made up of a number of "assessment elements". + Each element should cover + a particular aspect of the assignment. Typically an assignment will have + something between 5 to 15 elements for comments and grading, the + actual number depending on the size and complexity of the assignment. A peer + assignment with only one element is allowed and has a similar assessment + strategy to the standard Moodle Assignment. + +

                    Elements have the following three features: +

                      +
                    1. The DESCRIPTION of the assessment element. This should clearly state what + aspect of the assignment is being assessed. If the assessment is qualatative + it is helpful to give details of what is considered excellent, average + and poor. + +
                    2. The SCALE of the assessment element. There are a number of prefined + scales. These range from simple Yes/No scales, through multipoint scales to + a full percentage scale. Each element has its own scale which should be choosen + to fit the number of possible variations for that element. Note that the scale + does NOT determine the element's importance when calculating the overall + grade, a two point scale has the same "influence" as a 100 point + scale if the respective elements have the same weight... + +
                    3. The WEIGHT of the assessment element. By default the elements are given the same + importance when calculating the overall grade of the assignment. This can be + changed by giving the more importance elements a weight greater than one, and + the less important elements a weight below one. Changing the weights does NOT + effect the maximum grade, that value is fixed by the Maximum Grade parameter + of the peer assignment. Weights can be assigned negative values, this is an + experimental feature. +
                    + +
                  3. Error Banded Grading: In this type of assignment the submissions are + graded on a set of Yes/No scales. The grade is determined by the "Grade + Table " which gives the relationship between the number of + "errors" and the suggested grade. For example an assignment may have six + significant items which should be present, the Grade Table will give suggested + grades if all are present, one is absent, if two are absent, etc. The individual + items can, if desired, be given weighting factors if some items are more important + than others. The number of "errors" is a weighted sum of the items not + present. By default each item is given a weight of one. The grading table is likely + to be non-linear, for example + the sugested grades may be 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0% for + an assignment with 10 items.The assessor can adjust the suggested grade by up + to 20% either way to give the submission's final grade. + +
                  4. Criteria Grading: This is simpliest type of assessment to grade (although + not necessarily the most straightforward to set up). The submissions are + graded against a set of criteria statments. The assessor choses which statement + best fits the piece of work. The grade is determined by a "Criteria + Table" which gives the suggested grade for each criterion. For example + an assignment may be set up with, say, five criteria statements and the assessors + must then choose one of the five statements for each of their assessments. As with + the Banded assignment the assessor can adjust the suggested grade by up to + 20% to give the final grade. +
                  + +

                  diff --git a/lang/et/help/workshop/gradingsubmissions.html b/lang/et/help/workshop/gradingsubmissions.html new file mode 100644 index 00000000000..e986ba306d2 --- /dev/null +++ b/lang/et/help/workshop/gradingsubmissions.html @@ -0,0 +1,12 @@ +

                  Grading of Student Submissions

                  + +

                  In general the teacher will want to assess the work submitted by the + students. The assessments are shown to the students and should provide + feedback on their work.

                  +

                  The grades from these assessments can be used + in two ways in the final grade calculation. Firstly, the grade itself can be + used as a (weighted) component in the final grade. Secondly, these + grades can optionally be added into the pool of peer assessments and + used as a "calming factor" if it felt that the student + assessments are too high or too low. +

                  diff --git a/lang/et/help/workshop/includeself.html b/lang/et/help/workshop/includeself.html new file mode 100644 index 00000000000..c5cd28dd222 --- /dev/null +++ b/lang/et/help/workshop/includeself.html @@ -0,0 +1,13 @@ +

                  Including Self in the Assignment

                  + +

                  A peer graded assignment can optionally include the student's own work + in the set of pieces each student is asked to grade. This will mean that if, say, the + number of peer assessors is 5, then each student will be asked to grade 6 + pieces of work, one of them being their own work. + +

                  If the number of peer assessors is set to zero and the include self option + is turned on then the assignment becomes a self-graded assignment. This + may or may not include the teacher's grading depending on whether that + option is set or not. + +

                  diff --git a/lang/et/help/workshop/index.html b/lang/et/help/workshop/index.html new file mode 100644 index 00000000000..6dce1eb3beb --- /dev/null +++ b/lang/et/help/workshop/index.html @@ -0,0 +1,31 @@ +

                  Workshop module

                  + diff --git a/lang/et/help/workshop/managing.html b/lang/et/help/workshop/managing.html new file mode 100644 index 00000000000..1648f598a66 --- /dev/null +++ b/lang/et/help/workshop/managing.html @@ -0,0 +1,72 @@ +

                  Managing a Workshop Assignment

                  + +

                  A Workshop Assignment is more complex than an ordinary assignment. + It involves a number of steps or phases. These are +

                    +
                  1. The assessment of the assignment should be broken into a number + of assessment ELEMENTS. This makes the grading of an assignment less + arbitary and gives the students a framework on which to make assessments. + The teacher has the role of setting up the assessment elements thus making a + grading sheet. (See that page for more details.) + +

                    With the assessment elements set up the teacher will normally submit a + small number of example pieces of work. These are practice pieces for the + students to assess before preparing their own pieces of work. However, + before the assignment is made available to students, these example + pieces should be assessed by the teacher. This provides the teacher + with specimen "answers" when reviewing the students' assessments + of those examples (produced in the next phase). +

                    The submission of example pieces of work by the teacher is optional + and for certain assignments may not be appropriate.

                    + +
                  2. The assignment is now opened to the students. If the teacher has set up + example pieces of work the students are required to assess a specified number + of these. (The number of assessments was given when the assignment was + created.) Once a student has made the required number of assessments + they can then submit their own work. In the case of an assignment with no + examples, the students are free to submit their own work without any delay. +

                    When a student submits a piece of work the teacher can, if desired, assess that + work. This assessment can be incorporated into the student's final grade. These + assessments can take place either during the submission phase of the + assignment or after the submission deadline.

                    +

                    If the assignment incorporates peer assessment, students who have submitted + work are shown other students' work to assess. When they have made an assessment + their peer can see that assessment. The student who submitted the work can + comment on the assessment if that option was chosen for this assignment. + The teacher can, if desired, grade these peer assessments and + these scores can be taken forward towards the students' final grades (but that + is not really necessary in many cases, see the next phase).

                    + +
                  3. After the deadline has passed, the teacher moves the assignment to the next phase + where further submissions and assessments by students are not allowed. The teacher + can, if wished, complete the grading of assessments made on the examples and the + grading of the student submissions. They can also grade the peer assessments made + by the students. This is NOT really necessary as, provided a reason number of + assessments have been made on each submission, the "grading + performance" of each student can be determined from the relative scores. +

                    When the grading has been completed, the teacher calculates the final grades + of the students. These final grades are normally made up of three components, + teacher's grade of the student's work, mean peer grade of the student's work + and the student's grading performance. The last can include the mean "grading + grade" entered by the teacher against a student's comments. These three + components are given weights by the teacher before the calculation of the final + grades takes place. + +

                  4. The final phase of the assignment is entered to allow the students to see their + final grades. The teacher can, if desired, backtrack the assignment to allow some + adjustment of, say, the weights used in the final grade calculation, the revised + grades can then be shown to the students. +

                    The students (and the teacher) are also shown a "League Table" + of the student submissions. These are listed in order of grade, the top submission + is first. Here the grade given to the submission is a combination of the teacher's + grade and the average of the peer grades (if they are available). The weighting + used is that given during the previous phase.

                    +
                  +

                  At any phase of the assignment the teacher can open the "Administration" +page. This shows the current state of the assignment. It lists the Teacher's example +submissions (if any), the students' assessments (of the teacher's examples, their own +work, and of other students' submissions), and the submissions of the students. +The teacher can use this page to assess and re-assess submissions, grade and +re-grade assessments, delete submissions and assessments, and generally watch +the progress of the assignment.

                  +

                  diff --git a/lang/et/help/workshop/mods.html b/lang/et/help/workshop/mods.html new file mode 100644 index 00000000000..686079855bd --- /dev/null +++ b/lang/et/help/workshop/mods.html @@ -0,0 +1,9 @@ +

                   Workshop

                  +
                    +

                    A Workshop is a peer assessment activity with a huge array of options. + It allows participants to assess each other's projects, as well as + exemplar projects, in a number of ways. It also coordinates the + collection and distribution of these assessments in a variety of ways. + The Workshop module is contributed by Ray Kingdon. +

                    +
                  diff --git a/lang/et/help/workshop/nassessmentsofstudentsubmissions.html b/lang/et/help/workshop/nassessmentsofstudentsubmissions.html new file mode 100644 index 00000000000..6ab754de1ad --- /dev/null +++ b/lang/et/help/workshop/nassessmentsofstudentsubmissions.html @@ -0,0 +1,13 @@ +

                  Number of Assessments of Student submissions

                  + +

                  This number determines whether the students are asked to peer assess + other students' work. If it is + not zero then each student is offered that number of pieces + of work from other students. After assessment the originator of the work + can view the comments and possibly the grade given by their peer. + (The peer assessment process may be iterative depending on the setting of + "Agree Assessments" option.) The teacher can also, + if desired, grade these assessments and those grades can be used in the calculation of + the final marks. The student is shown the teacher's comments and grade + for each of their assessments if available. +

                  diff --git a/lang/et/help/workshop/nassessmentsofteachersexamples.html b/lang/et/help/workshop/nassessmentsofteachersexamples.html new file mode 100644 index 00000000000..84f090998db --- /dev/null +++ b/lang/et/help/workshop/nassessmentsofteachersexamples.html @@ -0,0 +1,12 @@ +

                  Number of Assessments of Teacher's Examples

                  + +

                  This number determines whether the students are asked to assess + any example pieces of work before submitting their own work. If it is + non-zero then each student must assess that number of example pieces + of work. They cannot submit their own work until these assessments + have been made. The teacher can, if wished, grade these assessments + and use those grades in the students' final grade. Any comments from + the teacher on these assessments are made available to the student but + the teacher's "grading grades" are not shown to the student + until after the deadline for submissions has passed. +

                  diff --git a/lang/et/help/workshop/nelements.html b/lang/et/help/workshop/nelements.html new file mode 100644 index 00000000000..cafced055a8 --- /dev/null +++ b/lang/et/help/workshop/nelements.html @@ -0,0 +1,15 @@ +

                  Number of Comments, Elements, Bands or Criteria

                  + +

                  The number entered here determines how many items will be used in + the assessments. Depending on the type of grading strategy, this number + gives the number of comments, assessments elements, bands or criteria + to be used in the assessments. Typically an assignment will have + something between 5 to 15 assessment items, the + actual number depending on the size and complexity of the assignment. + +

                  All assessments have a General Comments field. For a "No + Grading" assignment the value given here determines the + number of additional comment areas. It can be specified as zero and results + in the assessment having only a single General Comments area. + +

                  diff --git a/lang/et/help/workshop/numberofassessors.html b/lang/et/help/workshop/numberofassessors.html new file mode 100644 index 00000000000..c928346d32a --- /dev/null +++ b/lang/et/help/workshop/numberofassessors.html @@ -0,0 +1,30 @@ +

                  Number of Peer Assessors

                  + +

                  A peer graded assignment will normally have around 3 to 8 peer + assessors. That is, in the peer grading phase, each student will be + asked to grade this number of pieces of work from the other students + in the class. The larger the assignment is, in terms of content, the + smaller this number should be, else the grading burden on the + students becomes onerous. However, each student should see sufficient + examples to gain an insight into what constitutes a good piece of work + and a poor piece of work. Further for the grading performance of a + student to be assessed meaningfully the greater the number of peer + gradings the better. This performance is unlikely to be valid if only three + or four gradings are done by each student. + +

                  Provided there is enough pieces of work submitted (actually 10 or + more), the system will allocate each student at least one "good" and + at least one "poor" piece of work. However, this can only be done if the + teacher has graded the pieces of work BEORE the allocation of (peer) grading + work is done. The teacher does NOT, however, have to grade all the + pieces of work, a sample is sufficient. Further, the teacher's gradings need + NOT be the final gradings, a preliminary grading is good enough. Note, + however, that if the option to show teacher's gradings is turned on, + these gradings will be shown to the students at the end of the submission + phase. + +

                  The number of peer assesors can be zero. In which case the assignment + becomes either a self-graded assignment if that option is turned on, or + a normal teacher-graded assignment. + +

                  diff --git a/lang/et/help/workshop/resubmit.html b/lang/et/help/workshop/resubmit.html new file mode 100644 index 00000000000..253ad47afe8 --- /dev/null +++ b/lang/et/help/workshop/resubmit.html @@ -0,0 +1,19 @@ +

                  Resubmitting assignments

                  + +

                  By default, students cannot resubmit assignments, they are allowed only one submission.

                  + +

                  If you turn this option on, then students will be allowed to submit more than one piece of work + to this assignment. This may be useful if the teacher wants to encourage students to do better + work by an iterative process.

                  + +

                  The assessment of submissions is allocated on the basis of the number of assessments a piece + of work has had. Thus new submissions from a student are likely to be candidates for peer + assessment. However, if a student resubmits a number of pieces of work in quick succession then + they are all equally likely to be assessed. The assignment does NOT give priority to the newest + submission. + +

                  When the student's final grade is calculated the submission with the highest grade is used. Here + highest grade means the weighted combination of the teacher's grade and the peer grade if + both are available. + +

                  diff --git a/lang/et/help/workshop/selfassessment.html b/lang/et/help/workshop/selfassessment.html new file mode 100644 index 00000000000..1e7badf3900 --- /dev/null +++ b/lang/et/help/workshop/selfassessment.html @@ -0,0 +1,12 @@ +

                  Self Assessment

                  + +

                  A workshop assignment can optionally include the student's own work + in the set of pieces each student is asked to assess. This will mean that if, say, the + number of student pieces of work each student has to assess is set at 5, then + each student will be asked to assess 6 pieces of work, one of them being their own work. + +

                  If the number of student pieces of work is set to zero and the self assessment option + is turned on then the assignment becomes a self-graded assignment. This + may or may not include the teacher's grading depending on the teacher's decision. + +

                  diff --git a/lang/et/help/workshop/showinggrades.html b/lang/et/help/workshop/showinggrades.html new file mode 100644 index 00000000000..0e050f81808 --- /dev/null +++ b/lang/et/help/workshop/showinggrades.html @@ -0,0 +1,15 @@ +

                  Hiding the Display of Grades

                  + +

                  This option can be used in a workshop assignment where there + must be agreement between the students on each assessment . + The default value is to show the student whose work is being + assessed both the comments and the grades in the peer assessments. This + may lead to more disputes than when the option is turned on and the + assessments are shown without the grades. + +

                  If the option is taken to hide grades in the peer assessments the + grades are revealed once agreement has been reached. This agreement + will, of course, have been made only on the comments. If these comments + do not reasonably match the grades then the student whose work is being + assessed may well appeal to the teacher. +

                  diff --git a/lang/et/help/workshop/specimen.html b/lang/et/help/workshop/specimen.html new file mode 100644 index 00000000000..3047702fa87 --- /dev/null +++ b/lang/et/help/workshop/specimen.html @@ -0,0 +1,11 @@ +

                  Specimen Assessment Form

                  + +

                  This page shows shows the details of the actual form used to grade + your assignment. It will be used by the teacher to grade your work. Further, + in a peer graded asignment, the same form will be used by yourself and + your fellow students to grade the submitted pieces of work.

                  + +

                  Please note that although you can change the grades on + this form these changes are NOT saved. This is simply a specimen form, + but a very similar form will be used by the teacher and possibly by you + during this assignment.

                  diff --git a/lang/et/help/workshop/submissionofexamples.html b/lang/et/help/workshop/submissionofexamples.html new file mode 100644 index 00000000000..3a43c82f567 --- /dev/null +++ b/lang/et/help/workshop/submissionofexamples.html @@ -0,0 +1,28 @@ +

                  Submission of Teacher's Examples

                  + +

                  If the students are required to assess some example pieces of work + before submitting their own work, the teacher uses this link to submit + that work. The teacher can submit any number of pieces of work. If the + number of pieces of work is greater than the number of example + assessments each student must make, then the work is allocated in a + random but balanced fashion. The system tries to assure that each of + the examples is allocated to the students the same number of times. + The allocation is random in that if, say, ten examples are submitted then + it is highly unlikely that the first student is allocated submissions + 1, 2 and 3 to assess.

                  + +

                  If the teacher submits a fewer number of examples than given + in the corresponding parameter of the assignment, the students + are given just those examples to assess.

                  + +

                  After the teacher has submitted the examples it is useful for the + teacher to assess these examples, if only partially. These assessments + are private to the teacher, they are NOT show to the students at any + stage during the assignment. They are, however, shown to the teacher + when the teacher looks at the student assessments of the examples. + When grading the student assessment the teacher sees their own + assessment at the top of the screen and the student's assessment + of the same piece of work at the bottom. The "extra" + assessment acts as a reference source and a reminder of the + salient points in the example. +

                  diff --git a/lang/et/help/workshop/teachersgradings.html b/lang/et/help/workshop/teachersgradings.html new file mode 100644 index 00000000000..6fb5dcda7ac --- /dev/null +++ b/lang/et/help/workshop/teachersgradings.html @@ -0,0 +1,13 @@ +

                  Display of Teacher's Grades

                  + +

                  A peer graded assignment can optionally make the teacher's comments + and grades available to the student's. If desired, these are shown after the + submission deadline, or later if the grades are not available then. The teacher's + comments and grades may well help the students when making their own + (peer) assessments on other student's work. + +

                  Note that even when the peer grading is done anonymously, the + teacher's grades are always shown to the students with the teacher's + name and, if available, their photo. + +

                  diff --git a/lang/et/help/workshop/ungradedassessments_student.html b/lang/et/help/workshop/ungradedassessments_student.html new file mode 100644 index 00000000000..403b44234a6 --- /dev/null +++ b/lang/et/help/workshop/ungradedassessments_student.html @@ -0,0 +1,11 @@ +

                  UnGraded Assessments (Student Submissions)

                  + +

                  Assessment of Student Submissions These are the peer assessments + made by students on eachother's work. In general, these assessments do NOT + have to be graded by the teacher. Provided each of the student submissions is + assessed about five times, the system can make a reasonable judgement on + the inidivual assessment performance of the students. When the number of + peer assessments is low then the teacher may want to grade these + assessments. Any grades given to the assessments can be taken into account + when calculating the final grades for the students. +

                diff --git a/lang/et/help/workshop/ungradedassessments_teacher.html b/lang/et/help/workshop/ungradedassessments_teacher.html new file mode 100644 index 00000000000..4a4267d67a4 --- /dev/null +++ b/lang/et/help/workshop/ungradedassessments_teacher.html @@ -0,0 +1,18 @@ +

                UnGraded Assessments (Teacher Submissions)

                + +

                Assessments of Teacher Submissions These are assessments of + the example pieces of work which the assignment may require the students + to make before they can submit their own work. These assessments should, + in general, be graded by the teacher. The assessments will show whether the + student understand the assignment and will provide possibly useful feedback + to the teacher on whether any remedial action or fine tuning of the + assignment is necessary. Further, if an assessment is graded the teacher's + comments are made available to the student. These may provide valuable + guidance to the student in the preparation of their own piece of work for + the assignment.

                + +

                These assessments do not have to be graded. Leaving a student's + assessment of the examples ungraded when NOT stop that student from + submitting their own work. It is recommended, however, that all least a + sample of the assessments are graded for the reasons mentioned above.

                + diff --git a/lang/et/help/writing.html b/lang/et/help/writing.html index 92d4b838194..36a1fa5b656 100644 --- a/lang/et/help/writing.html +++ b/lang/et/help/writing.html @@ -1,33 +1,33 @@ -

                Writing

                - -

                When writing text for others to read, try and write directly to your audience.

                - -

                Explain your ideas as clearly and simply as you can to help avoid misunderstandings. - One thing you can do is to avoid long words when a short one will do.

                - -

                In the forums it will really help to keep your whole posts short and on-topic. - Instead of one long rambling post that makes many different points, it may be - better to write several shorter ones (they may even belong in separate forums). - -

                Kirjutamine
                -
                - Kui kirjutad teksti teistele lugemiseks, püüa kirjutada otse lugejate - poole pöördudes.
                - Selgita oma ideid nii lihtsalt ja arusaadavalt kui võimalik, et vältida - arusaamatusi. Soovitav on vältida pikki sõnu, kui lühikestega - hakkama saab.
                -
                - Foorumil tuleb tõepoolest kasuks, kui sinu postitused on lühidad - ja teemakohased. Pika ja lohiseva kirja asemel, mis sisaldab mitut erinevat - seisukohta, on mõistlikum kirjutada mitu lühemat kirja (need võivad - koguni kuuluda erinevatesse foorumitesse).

                -

                Redigeeri oma teksti nii - palju kui vajalik, kuni see on täpne. Isegi foorumi postituste puhul on - maksimaalne redigeerimisaeg maxeditingtime/60) ?> minutit - pärast postitamist, et minna tagasi ja teha vajalikud parandused.

                -

                Teistele vastates püüa - välja mõelda huvitavaid küsimusi, mida neile esitada. See on - abiks kõigile, et mõelda arutletavate teemade üle ja neist - ka õppida..

                - - +

                Writing

                + +

                When writing text for others to read, try and write directly to your audience.

                + +

                Explain your ideas as clearly and simply as you can to help avoid misunderstandings. + One thing you can do is to avoid long words when a short one will do.

                + +

                In the forums it will really help to keep your whole posts short and on-topic. + Instead of one long rambling post that makes many different points, it may be + better to write several shorter ones (they may even belong in separate forums). + +

                Kirjutamine
                +
                + Kui kirjutad teksti teistele lugemiseks, püüa kirjutada otse lugejate + poole pöördudes.
                + Selgita oma ideid nii lihtsalt ja arusaadavalt kui võimalik, et vältida + arusaamatusi. Soovitav on vältida pikki sõnu, kui lühikestega + hakkama saab.
                +
                + Foorumil tuleb tõepoolest kasuks, kui sinu postitused on lühidad + ja teemakohased. Pika ja lohiseva kirja asemel, mis sisaldab mitut erinevat + seisukohta, on mõistlikum kirjutada mitu lühemat kirja (need võivad + koguni kuuluda erinevatesse foorumitesse).

                +

                Redigeeri oma teksti nii + palju kui vajalik, kuni see on täpne. Isegi foorumi postituste puhul on + maksimaalne redigeerimisaeg maxeditingtime/60) ?> minutit + pärast postitamist, et minna tagasi ja teha vajalikud parandused.

                +

                Teistele vastates püüa + välja mõelda huvitavaid küsimusi, mida neile esitada. See on + abiks kõigile, et mõelda arutletavate teemade üle ja neist + ka õppida..

                + + diff --git a/lang/et/journal.php b/lang/et/journal.php index 172957b5169..1897bb9f273 100644 --- a/lang/et/journal.php +++ b/lang/et/journal.php @@ -1,35 +1,36 @@ -Õpetaja on saatnud sinu päevikukandele tagasiside \'$a->päevikusse - -Seda saab näha sinu päevikukande lisana: $a->url'; -$string['journalmailhtml'] = '$a-> Õpetaja on saatnud sinu päevikukandele tagasiside \'$a-> päevikusse \'

                - Seda saab näha sinu päevikukande url\"> lisana .'; -$string['journalname'] = 'Päeviku nimi'; -$string['journalquestion'] = 'Päeviku küsimus'; -$string['journalrating1'] = 'Mitterahuldav'; -$string['journalrating2'] = 'Rahuldav'; -$string['journalrating3'] = 'Suurepärane'; -$string['modulename'] = 'Päevik'; -$string['modulenameplural'] = 'Päevikud'; -$string['newjournalentries'] = 'Uued kanded päevikusse'; -$string['noentry'] = 'Kanded puuduvad'; -$string['noratinggiven'] = 'Hinnang puudub'; -$string['notopenuntil'] = 'See päevik ei avane enne'; -$string['notstarted'] = 'Sa pole seda päevikut veel alustanud'; -$string['overallrating'] = 'Üldhinnang'; -$string['rate'] = 'Reiting'; -$string['saveallfeedback'] = 'Salvesta kogu tagasiside'; -$string['startoredit'] = 'Alusta või redigeeri päeviku kannet'; -$string['viewallentries'] = 'Vaata $a päeviku kandeid'; - -?> +Õpetaja on saatnud sinu päevikukandele tagasiside '\$a->päevikusse + +Seda saab näha sinu päevikukande lisana: \$a->url"; +$string['journalmailhtml'] = "\$a-> Õpetaja on saatnud sinu päevikukandele tagasiside '\$a-> päevikusse '

                + Seda saab näha sinu päevikukande url\\\"> lisana ."; +$string['journalname'] = "Päeviku nimi"; +$string['journalquestion'] = "Päeviku küsimus"; +$string['journalrating1'] = "Mitterahuldav"; +$string['journalrating2'] = "Rahuldav"; +$string['journalrating3'] = "Suurepärane"; +$string['modulename'] = "Päevik"; +$string['modulenameplural'] = "Päevikud"; +$string['newjournalentries'] = "Uued kanded päevikusse"; +$string['noentry'] = "Kanded puuduvad"; +$string['noratinggiven'] = "Hinnang puudub"; +$string['notopenuntil'] = "See päevik ei avane enne"; +$string['notstarted'] = "Sa pole seda päevikut veel alustanud"; +$string['overallrating'] = "Üldreiting"; +$string['rate'] = "Reiting"; +$string['saveallfeedback'] = "Salvesta kogu tagasiside"; +$string['startoredit'] = "Alusta või redigeeri päeviku kannet"; +$string['viewallentries'] = "Vaata \$a päeviku kandeid"; + +?> + diff --git a/lang/et/label.php b/lang/et/label.php index fa5d1703fd7..125f669be1d 100644 --- a/lang/et/label.php +++ b/lang/et/label.php @@ -1,9 +1,9 @@ - + diff --git a/lang/et/lesson.php b/lang/et/lesson.php index 7b33f38bd98..9713670c854 100644 --- a/lang/et/lesson.php +++ b/lang/et/lesson.php @@ -1,88 +1,69 @@ -Kas tahad alustada viimasest nähtud lehest?'; -$string['youranswer'] = 'Sinu vastus'; -$string['yourcurrentgradeis'] = 'Sinu praegune hinne on $a'; -$string['youshouldview'] = 'Sa peaks vaatama vähemalt: $a'; - -?> +Kas tahad alustada viimasest nähtud lehest?'; +$string['youranswer'] = 'Sinu vastus'; + +?> diff --git a/lang/et/mediaplugin.php b/lang/et/mediaplugin.php index 309c95b5ec3..e72a1c31ac9 100644 --- a/lang/et/mediaplugin.php +++ b/lang/et/mediaplugin.php @@ -1,7 +1,7 @@ - + diff --git a/lang/et/moodle.php b/lang/et/moodle.php index 1a597def973..f4414336f4e 100644 --- a/lang/et/moodle.php +++ b/lang/et/moodle.php @@ -1,893 +1,894 @@ -$a'; -$string['activityiscurrentlyhidden'] = 'Kahjuks on see tegevus hetkel peidetud'; -$string['activitymodule'] = 'Tegevuse moodul'; -$string['activityreport'] = 'Tegevuse raport'; -$string['activityselect'] = 'Vali see tegevus, et viia see mujale'; -$string['activitysince'] = 'Tegevus alates $a'; -$string['add'] = 'Lisa'; -$string['addadmin'] = 'Lisa admin'; -$string['addcreator'] = 'Lisa õppeaine autor'; -$string['added'] = 'Lisatud $a'; -$string['addedtogroup'] = 'Lisatud gruppi $a'; -$string['addedtogroupnot'] = 'Ei lisatud gruppi $a'; -$string['addedtogroupnotenrolled'] = 'Ei lisatud gruppi $a, kuna te ei ole aine nimekirjas'; -$string['addinganew'] = 'Lisan uue $a'; -$string['addinganewto'] = 'Lisan uue $a->what -> $a->to'; -$string['addingdatatoexisting'] = 'Lisan andmed olemasolevasse'; -$string['addnewcategory'] = 'Lisa uus kategooria'; -$string['addnewcourse'] = 'Lisa uus õppeaine'; -$string['addnewuser'] = 'Lisa uus kasutaja'; -$string['address'] = 'Aadress'; -$string['addstudent'] = 'Lisa õpilane'; -$string['addteacher'] = 'Lisa õpetaja'; -$string['admin'] = 'Admin'; -$string['adminhelpaddnewuser'] = 'Loob käsitsi uue kasutajakonto'; -$string['adminhelpassignadmins'] = 'Administraatorid saavad sellel saidil teha kõike ja minna igale poole'; -$string['adminhelpassigncreators'] = 'Autorid saavad luua uusi õppeaineid ja neis õpetada'; -$string['adminhelpassignstudents'] = 'Mine kursusele ja lisa õpilasi administraatori menüüst'; -$string['adminhelpassignteachers'] = 'Vali kursus ja kasuta õpetaja määramiseks vastavat ikooni'; -$string['adminhelpauthentication'] = 'Sa saad kasutada süsteemi kasutajaid ja välist andmebaasi'; -$string['adminhelpbackup'] = 'Seadistab automaatse varunduse ja ajastab selle'; -$string['adminhelpconfiguration'] = 'Seadistab kuidas see leht välja näeb ja töötab'; -$string['adminhelpconfigvariables'] = 'Seadistab muutujaid mis mõjutavad süsteemi üldist tööd'; -$string['adminhelpcourses'] = 'Määrab õppeained ja kategooriad ning kasutajad nendesse'; -$string['adminhelpedituser'] = 'Sirvi kasutajakontode nimekirja ja muuda ükskõik millist neist'; -$string['adminhelpenrolments'] = 'Määra sisemisi või väliseid meetodeid registreerumiseks'; -$string['adminhelplanguage'] = 'Keelefailide kontroll ja muutmine'; -$string['adminhelplogs'] = 'Sirvi logisid saidi kõigist tegevustest'; -$string['adminhelpmanageblocks'] = 'Halda installeeritud blokke ja nende seadeid'; -$string['adminhelpmanagedatabase'] = 'Otsene ligipääs andmebaasile (ole ettevaatlik!)'; -$string['adminhelpmanagefilters'] = 'Teksti filtrid ja selle seadistused'; -$string['adminhelpmanagemodules'] = 'Paigaldatud moodulite ja nende seadete haldamine'; -$string['adminhelpsitefiles'] = 'Üldiste failide publitseerimine või välise varukoopia üleslaadimine'; -$string['adminhelpsitesettings'] = 'Määrab esilehe välimuse'; -$string['adminhelpthemes'] = 'Määrab lehe välimuse (värvid, tähestiilid jne)'; -$string['adminhelpuploadusers'] = 'Impordib uue(d) kasutajakonto(d) tekstifailist'; -$string['adminhelpusers'] = 'Määra kasutajad ja seadista autentimine'; -$string['administration'] = 'Administreerimine'; -$string['administrator'] = 'Administraator'; -$string['administrators'] = 'Administraatorid'; -$string['advancedfilter'] = 'Täpsem otsing'; -$string['again'] = 'uuesti'; -$string['all'] = 'Kõik'; -$string['allactivities'] = 'Kõik tegevused'; -$string['alldays'] = 'Kõik päevad'; -$string['allfieldsrequired'] = 'Kõik lahtrid tuleb täita'; -$string['allgroups'] = 'Kõik grupid'; -$string['alllogs'] = 'Kõik logid'; -$string['allow'] = 'Luba'; -$string['allowguests'] = 'Selle aine lehele on külalistel sisenemine lubatud'; -$string['allownot'] = 'Keeldu'; -$string['allparticipants'] = 'Kõik osalejad'; -$string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; -$string['alphanumerical'] = 'Võib sisaldada üksnes tähestiku tähti ja numbreid'; -$string['alreadyconfirmed'] = 'Registreerumine on juba kinnitatud'; -$string['always'] = 'Alati'; -$string['answer'] = 'Vasta'; -$string['areyousuretorestorethis'] = 'Kas soovid jätkata?'; -$string['areyousuretorestorethisinfo'] = 'Hiljem avaneb võimalus lisada see varundus olemasolevale õppeainele või luua täiesti uus kursus.'; -$string['assessment'] = 'Hindamine'; -$string['assignadmins'] = 'Määra administraatorid'; -$string['assigncreators'] = 'Määra kursuse autorid'; -$string['assignstudents'] = 'Registreeri õpilased osalejaks'; -$string['assignstudentsnote'] = 'Märkus: selle lehe kasutamine ei ole vajalik kuna õpilased saavad end ise osalejaks määrata'; -$string['assignstudentspass'] = 'Te peate vaid õpilastele teada andma kursuse registreerimise võtme, mis on praegu \'$a\''; -$string['assignteachers'] = 'Määra õpetajad'; -$string['authentication'] = 'Autentimine'; -$string['autosubscribe'] = 'Liitu automaatselt foorumiga '; -$string['autosubscribeno'] = 'Ei, ma ei liitu automaatselt foorumiga '; -$string['autosubscribeyes'] = 'Jah, kui postitan, siis liitun selle foorumiga'; -$string['availability'] = 'Saadavus'; -$string['availablecourses'] = 'Saadaolevad õppeained'; -$string['backup'] = 'Varunda'; -$string['backupcoursefileshelp'] = 'Kui on lubatud siis kursuse failid lisatakse automaatsele varundamisele'; -$string['backupdate'] = 'Varundamise kuupäev'; -$string['backupdetails'] = 'Varunduse detailid'; -$string['backupfilename'] = 'varunda'; -$string['backupfinished'] = 'Varundamine edukalt tehtud'; -$string['backupincludemoduleshelp'] = 'Vali, kas soovid õppeaine mooduleid lisada automaatsesse varundusse, koos kasutajainfoga või ilma'; -$string['backupkeephelp'] = 'Kui mitut hiljutist varundust iga õppeaine kohta soovid talletada? (vanemad kustutatakse automaatselt)'; -$string['backuplogdetailed'] = 'Detailne täitmislogi'; -$string['backuploglaststatus'] = 'Viimane täitmislogi'; -$string['backuplogshelp'] = 'Kui lubatud, siis õppeaine logid lisatakse automaatsele varundusele'; -$string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['backuporiginalname'] = 'Varunduse nimi'; -$string['backupsavetohelp'] = 'Varundusfailide salvestuskoha täisaadress
                (jätke tühjaks kui soovite salvestada vaikimisi määratud kataloogi)'; -$string['backupuserfileshelp'] = 'Kas kasutajate failid (nt profiili pildid) lisatakse automaatsele varundusele'; -$string['backupusershelp'] = 'Kas soovite lisada kõiki kasutajaid serveris või ainult iga kursuse jaoks vajalikke'; -$string['backupversion'] = 'Varunduse versioon'; -$string['blocks'] = 'Blokid'; -$string['blocksetup'] = 'Bloki tabelite seadistamine'; -$string['blocksuccess'] = '$a tabelite seadistamine oli edukas'; -$string['bycourseorder'] = 'Õppeainete järjekorras'; -$string['byname'] = '$a poolt'; -$string['cancel'] = 'Tühista'; -$string['categories'] = 'Õppeainete kategooriad'; -$string['category'] = 'Kategooria'; -$string['categoryadded'] = 'Kategooria \'$a\' lisati'; -$string['categorydeleted'] = 'Kategooria \'$a\' kustutati'; -$string['categoryduplicate'] = 'Kategooria nimega \'$a\' on juba olemas!'; -$string['changedpassword'] = 'Muudetud salasõna'; -$string['changepassword'] = 'Muuda salasõna'; -$string['changessaved'] = 'Muudatused salvestatud'; -$string['checkingbackup'] = 'Kontrollin varundust'; -$string['checkingcourse'] = 'Kontrollin õppeainet'; -$string['checkinginstances'] = 'Kontrollin näiteid'; -$string['checkingsections'] = 'Kontrollin sektsioone'; -$string['checklanguage'] = 'Kontrolli keelt'; -$string['choose'] = 'Vali'; -$string['choosecourse'] = 'Vali õppeaine'; -$string['chooselivelogs'] = 'Või jälgi jooksvat tegevust'; -$string['chooselogs'] = 'Vali, milliseid logisid soovid näha'; -$string['choosereportfilter'] = 'Vali filter kokkuvõttele'; -$string['choosetheme'] = 'Vali teema'; -$string['chooseuser'] = 'Vali kasutaja'; -$string['city'] = 'Linn'; -$string['cleaningtempdata'] = 'Puhasta ajutised andmed'; -$string['clicktochange'] = 'muutmiseks kliki'; -$string['closewindow'] = 'Sulge aken'; -$string['comparelanguage'] = 'Võrdle ja redigeeri kasutatavat keelt'; -$string['complete'] = 'Lõpeta'; -$string['configuration'] = 'Konfiguratsioon'; -$string['confirm'] = 'Kinnitan'; -$string['confirmed'] = 'Teie registreerumine on kinnitatud'; -$string['confirmednot'] = 'Teie registreerumist pole veel kinnitatud!'; -$string['continue'] = 'Jätka'; -$string['continuetocourse'] = 'Oma õppeaine lehele sisenemiseks klõpsa siin'; -$string['cookiesenabled'] = 'Teie brauser peab lubama küpsised'; -$string['copy'] = 'kopeeri'; -$string['copyingcoursefiles'] = 'Kopeeri õppeaine failid'; -$string['copyinguserfiles'] = 'Kopeeri kasutaja failid'; -$string['copyingzipfile'] = 'Kopeeri zip fail'; -$string['copyrightnotice'] = 'Autorikaitse märge'; -$string['cost'] = 'Maksumus'; -$string['country'] = 'Riik'; -$string['course'] = 'Õppeaine'; -$string['courseavailable'] = 'See õppeaine on õpilasele saadaval'; -$string['courseavailablenot'] = 'See õppeaine ei ole õpilastele saadaval'; -$string['coursebackup'] = 'Õppeaine varundamine'; -$string['coursecategories'] = 'Õppeaine kategooriad'; -$string['coursecategory'] = 'Õppeaine kategooria'; -$string['coursecreators'] = 'Õppeaine loojad'; -$string['coursefiles'] = 'Õppeaine failid'; -$string['courseformats'] = 'Õppeaine formaadid'; -$string['coursegrades'] = 'Õppeaine hinded'; -$string['courseinfo'] = 'Õppeaine info'; -$string['courserestore'] = 'Õppeaine taastamine'; -$string['courses'] = 'Õppeained'; -$string['courseupdates'] = 'Õppeaine värskendused'; -$string['courseuploadlimit'] = 'Õppeaine üleslaadimise limiit'; -$string['create'] = 'Loo'; -$string['createaccount'] = 'Tekita mulle uus konto'; -$string['createfolder'] = 'Loo uus kaust asukohta $a'; -$string['createuserandpass'] = 'Tekita uus kasutajanimi ja salasõna, millega sisse logida'; -$string['createziparchive'] = 'Tekita pakitud arhiiv'; -$string['creatingcategoriesandquestions'] = 'Loon kategooriaid ja küsimusi'; -$string['creatingcoursemodules'] = 'Loon õppeaine mooduleid'; -$string['creatingevents'] = 'Loon sündmuseid'; -$string['creatinggroups'] = 'Loon gruppe'; -$string['creatinglogentries'] = 'Loon logi sisestusi'; -$string['creatingnewcourse'] = 'Loon uue õppeaine'; -$string['creatingscales'] = 'Loon skaalasid'; -$string['creatingsections'] = 'Loon sektsioone'; -$string['creatingtemporarystructures'] = 'Loon esialgseid struktuure'; -$string['creatingusers'] = 'Loon kasutajaid'; -$string['creatingxmlfile'] = 'Loon XML faili'; -$string['currentcourseadding'] = 'Lisan andmeid praegusele õppeaine'; -$string['currentcoursedeleting'] = 'Kustutan praegust õppeainet'; -$string['currentlanguage'] = 'Kasutatav keel'; -$string['currentlocaltime'] = 'Teie kehtiv aeg'; -$string['currentpicture'] = 'Kasutatav pilt'; -$string['currentrelease'] = 'Kehtiv väljalaske info'; -$string['currentversion'] = 'Kehtiv versioon'; -$string['databasechecking'] = 'Moodle\'i andmebaasi värskendus versioonist$a->vanast versioonist $a->uueks versiooniks...'; -$string['databaseperformance'] = 'Andmebaasi jõudlus'; -$string['databasesetup'] = 'Andmebaasi seadete loomine'; -$string['databasesuccess'] = 'Andmebaasi värskendamine läks edukalt'; -$string['databaseupgradebackups'] = 'Varundusversioon on praegu $a'; -$string['databaseupgradeblocks'] = 'Blokkide versioon on $a'; -$string['databaseupgrades'] = 'Andmebaasi värskendamine'; -$string['datemostrecentfirst'] = 'Kuupäev - uusimad alguses'; -$string['datemostrecentlast'] = 'Kuupäev - uusimad lõpus'; -$string['day'] = 'päev'; -$string['days'] = 'päeva'; -$string['defaultcoursefullname'] = 'Õppeaine täielik nimetus'; -$string['defaultcourseshortname'] = 'KTN101'; -$string['defaultcoursestudent'] = 'Õpilane'; -$string['defaultcoursestudents'] = 'Õpilased'; -$string['defaultcoursesummary'] = 'Kirjuta siia kokkuvõtlik ja huvitav lõik, mis iseloomustab õppeainet'; -$string['defaultcourseteacher'] = 'Õpetaja'; -$string['defaultcourseteachers'] = 'Õpetajad'; -$string['delete'] = 'Kustuta'; -$string['deleteall'] = 'Kustuta kõik'; -$string['deletecheck'] = 'Kustuta $a ?'; -$string['deletecheckfiles'] = 'Kas oled täiesti kindel et soovid neid faile kustutada'; -$string['deletecheckfull'] = 'Kas oled täiesti veendunud, et soovid lõplikult kustutada $a ?'; -$string['deletecheckwarning'] = 'Oled kustutamas neid faile'; -$string['deletecompletely'] = 'Kustuta lõplikult'; -$string['deletecourse'] = 'Kustuta õppeaine'; -$string['deletecoursecheck'] = 'Kas oled täiesti veendunud, et soovid lõplikult kustutada selle kursuse ja kõik selles sisalduvad andmed?'; -$string['deleted'] = 'Kustutatud'; -$string['deletedactivity'] = 'Kustutatud $a'; -$string['deletedcourse'] = '$a on lõplikult kustutatud'; -$string['deletednot'] = 'Ei saa kustutada $a !'; -$string['deleteselected'] = 'Kustuta valitud'; -$string['deletingcourse'] = 'Kustutan $a'; -$string['deletingexistingcoursedata'] = 'Kustuta olemasolevad õppeaine andmed'; -$string['deletingolddata'] = 'Kustuta vanad andmed'; -$string['department'] = 'Osakond'; -$string['description'] = 'Kirjeldus'; -$string['disable'] = 'Keela'; -$string['displayingfirst'] = 'Ainult esimese $a->count $a->things on kuvatud'; -$string['displayingrecords'] = 'Kuvan $a salvestust'; -$string['displayingusers'] = 'Kuvan kasutajad $a->start $a->end'; -$string['documentation'] = 'Moodle\'i dokumentatsioon'; -$string['donotask'] = 'Ära küsi'; -$string['down'] = 'Alla'; -$string['downloadexcel'] = 'Lae alla Exceli formaadis'; -$string['downloadtext'] = 'Lae alla tekstiformaadis'; -$string['doyouagree'] = 'Kas oled lugenud ja mõistnud kõiki tingimusi?'; -$string['duplicate'] = 'Duplikaat'; -$string['duplicatinga'] = 'Dubleerin: $a'; -$string['duplicatingain'] = 'Dubleerin: $a->what $a->in'; -$string['edit'] = 'Redigeeri $a'; -$string['editcoursesettings'] = 'Redigeeri õppeaine seadeid'; -$string['editfiles'] = 'Redigeeri faile'; -$string['editgroupprofile'] = 'Muuda grupi profiili'; -$string['editinga'] = 'Redigeerin a $a'; -$string['editmyprofile'] = 'Redigeeri profiili'; -$string['editsummary'] = 'Redigeeri kokkuvõtet'; -$string['editthisactivity'] = 'Redigeeri seda tegevust'; -$string['editthiscategory'] = 'Muuda seda kategooriat'; -$string['edituser'] = 'Redigeeri kasutajate kontosid'; -$string['email'] = 'E-maili aadress'; -$string['emailagain'] = 'E-maili aadress (uuesti)'; -$string['emailconfirm'] = 'Kinnita oma kontot'; -$string['emailconfirmation'] = 'Tere $a->firstname, - -meiliaadressi on taotletud uut kontot saidilt \'$a->sitename\' -Uue konto kinnitamiseks mine palun järgmisele veebiaadressile: - - $a->link - -Enamikus meiliprogrammides peaks see ilmuma veebilingi kujul, millele võib lihtsalt klikkida. Kui see ei tööta, siis kopeeri ja kleebi aadress aadressireale oma veebibrauseri akna ülaosas. - -Kui vajad abi, võta kontakti saidi administraatoriga, -$a->admin'; -$string['emailconfirmationsubject'] = '$a: konto kinnitus'; -$string['emailconfirmsent'] = '

                Teie meiliaadressile $a -saadeti kiri mis sisaldab lihtsaid juhendeid, kuidas registreeruda.

                -

                Kui olete jätkuvalt raskustes, võtke kontakti saidi administraatoriga.

                '; -$string['emaildisable'] = 'See emaili aadress on keelatud'; -$string['emaildisplay'] = 'Emaili kuva'; -$string['emaildisplaycourse'] = 'Luba ainult teistel kursusel osalejatel mu emaili aadressi näha'; -$string['emaildisplayno'] = 'Peida mu tegelik emaili aadress kõigi eest '; -$string['emaildisplayyes'] = 'Luba kõigil mu emaili aadressi näha '; -$string['emailenable'] = 'See emaili aadress on lubatud'; -$string['emailexists'] = 'Selline emaili aadress on juba kasutusel.'; -$string['emailformat'] = 'Emaili formaat'; -$string['emailmustbereal'] = 'Märkus: teie emaili aadress peab olema reaalne '; -$string['emailpasswordconfirmation'] = 'Tere $a->firstname, - -Keegi (tõenäoliselt teie ise) on soovinud uut salasõna teie kontole \'$a->sitename\'. - -Selle kinnitamiseks ja uue salasõna saamiseks maili teel mine järgmisele veebiaadressile: - - $a->link - -Enamikus meiliprogrammides peaks see ilmuma sinise lingi kujul, millele võib lihtsalt klikkida. Kui see ei tööta, siis lõika ja kleebi aadress aadressireale oma veebibrauseri akna ülaosas. - -Kui vajad abi, võta kontakti saidi administraatoriga, - $a->admin'; -$string['emailpasswordconfirmationsubject'] = '$a: muuda salasõna kinnitus '; -$string['emailpasswordconfirmsent'] = 'Teie meiliaadressile $a saadeti kiri mis sisaldab lihtsaid juhiseid, kuidas kinnitada ja lõpetada selle salasõna muutmist. -Kui teil on jätkuvalt probleeme, võtke kontakti saidi administraatoriga.'; -$string['emailpasswordsent'] = 'Täname, et kinnitasite salasõna muutmise.. -
                Teie aadressile $a->email.on saadetud email, mis sisaldab teie uut salasõna -
                Uus salasõna tekitati automaatselt - ehk meeldib teile - link\">muuda salasõna millekski lihtsamini meeldejäävaks.'; -$string['enable'] = 'Lubatud'; -$string['enrolledincourse'] = 'Registreeritud õppeainele $a'; -$string['enrolledincoursenot'] = 'Registreeritud õppeainele $a'; -$string['enrolmentconfirmation'] = 'Sa oled end registreerimas sellele õppeainele
                Oled sa kindel, et soovid seda teha?'; -$string['enrolmentkey'] = 'Õppeaine liikme võti'; -$string['enrolmentkeyfrom'] = 'Sellel kursusel on vajalik \"Õppeaine liikme võti\" - salasõna
                -mille andis Sulle $a'; -$string['enrolmentkeyhint'] = 'Õppeaine liikme võti oli vale, palun proovi uuesti
                -(Vihje - see algab nii \'$a\')'; -$string['enrolmentnew'] = 'Uus registreerumine $a'; -$string['enrolmentnointernal'] = 'Käsitsi registreerumised pole hetkel lubatud'; -$string['enrolments'] = 'Registreerumised'; -$string['entercourse'] = 'Kliki õppeaine lehele sisenemiseks'; -$string['enteremailaddress'] = 'Sisene oma emaili aadressi, et teha uus seade oma salasõna ja lasta uus salasõna saata omale emaili teel.'; -$string['entries'] = 'Postitused'; -$string['error'] = 'Viga'; -$string['errortoomanylogins'] = 'Kahjuks, te olete ületanud oma logimiskatsete limiidi. Tehke oma brauserile restart.'; -$string['errorwhenconfirming'] = 'Ei ole veel kinnitatud, kuna esines viga. Kui vajutasid linki emaili sees tee kindlaks, et link ei olnud vigane ega mitmel real. Vajadusel kasuta lõika-kleebi meetodit lingi taastamiseks'; -$string['executeat'] = 'Käivita'; -$string['existing'] = 'Olemasolev'; -$string['existingadmins'] = 'Olemasolevad administraatorid'; -$string['existingcourse'] = 'Olemasolev õppeaine'; -$string['existingcourseadding'] = 'Lisan andmeid olemasolevale õppeainele'; -$string['existingcoursedeleting'] = 'Kustutan olemasoleva õppeaine'; -$string['existingcreators'] = 'Olemasolevad õppeaine autorid'; -$string['existingstudents'] = 'Registreerinud õpilased'; -$string['existingteachers'] = 'Olemasolevad õpetajad'; -$string['feedback'] = 'Tagasiside'; -$string['filemissing'] = '$a puudub'; -$string['files'] = 'Failid'; -$string['filesfolders'] = 'Failid/kaustad'; -$string['filloutallfields'] = 'Palun täida selle blanketi kõik väljad '; -$string['findmorecourses'] = 'Otsi õppeaineid ...'; -$string['firstdayofweek'] = 'E'; -$string['firstname'] = 'Eesnimi'; -$string['firsttime'] = 'Kas oled siin esimest korda?'; -$string['followingoptional'] = 'Järgnevad punktid on valikulised '; -$string['followingrequired'] = 'Järgnevad punktid on kohustuslikud'; -$string['force'] = 'Sunni'; -$string['forcedmode'] = 'Sunnitud töörežiim'; -$string['forcelanguage'] = 'Sunni keel'; -$string['forceno'] = 'Ära sunni'; -$string['forgotten'] = 'Oled unustanud oma kasutajanime või salasõna?'; -$string['format'] = 'Formaat'; -$string['formathtml'] = 'HTML formaat'; -$string['formatplain'] = 'Lihtteksti formaat'; -$string['formatsocial'] = 'Sotsiaalne formaat'; -$string['formattext'] = 'Moodle auto-formaat'; -$string['formattexttype'] = 'Formaatimine'; -$string['formattopics'] = 'Teemade formaat'; -$string['formatweeks'] = 'Nädalakava formaat'; -$string['formatwiki'] = 'Wiki formaat'; -$string['from'] = ' '; -$string['frontpagecategorynames'] = 'Näita kategooriate nimekirja'; -$string['frontpagecourselist'] = 'Näita õppeainete nimekirja'; -$string['frontpagedescription'] = 'Esilehe kirjeldus'; -$string['frontpageformat'] = 'Esilehe formaat'; -$string['frontpagenews'] = 'Näita uudiseid'; -$string['fulllistofcourses'] = 'Kõik õppeained'; -$string['fullname'] = 'Täielik nimi'; -$string['fullnamedisplay'] = '$a->firstname $a->lastname'; -$string['fullprofile'] = 'Täielik profiil'; -$string['fullsitename'] = 'Saidi täielik nimi'; -$string['gd1'] = 'GD 1.x on installeeritud'; -$string['gd2'] = 'GD 2.x on installeeritud'; -$string['gdneed'] = 'GD tuleb installeerida, et seda graafikut näha'; -$string['gdnot'] = 'GD pole installeeritud'; -$string['gpl'] = 'Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com) - -See programm on vabavara, seda võib levitada ja /või kohandada vastavalt GNU General Public Litsentsile, nagu avaldatud Vabavara Fondi poolt; kas vastavalt Litsentsi versioonile 2 või teie omal valikul mõnele hilisemale versioonile. - -Seda programmi levitatakse lootuses, et ta on kasulik, kuid ILMA MINGI GARANTIITA, isegi ilma mingi vihjeta TURUSTATAVUSE või KONKREETSEKS EESMÄRGIKS SOBIVUSE garantiile. Vaata GNU General Public License, et rohkem teada saada: - -http://www.gnu.org/copyleft/gpl.html'; -$string['grade'] = 'Hinne'; -$string['grades'] = 'Hinded'; -$string['group'] = 'Grupp'; -$string['groupadd'] = 'Lisa uus grupp'; -$string['groupaddusers'] = 'Lisa valitud gruppi'; -$string['groupfor'] = 'grupile'; -$string['groupinfo'] = 'Info valitud grupi kohta'; -$string['groupinfomembers'] = 'Info valitud kasutajate kohta'; -$string['groupinfopeople'] = 'Info valitud inimeste kohta'; -$string['groupmemberssee'] = 'Vaata grupi liikmeid'; -$string['groupmembersselected'] = 'Valitud grupi liikmed'; -$string['groupmode'] = 'Grupi režiim'; -$string['groupmodeforce'] = 'Sunni grupirežiim'; -$string['groupmy'] = 'Minu grupp'; -$string['groupnonmembers'] = 'Inimesed, kes ei ole grupis'; -$string['groupnotamember'] = 'Vabandust! Sa ei ole selle grupi liige'; -$string['grouprandomassign'] = 'Määra juhuslikult kõikidesse gruppidesse'; -$string['groupremove'] = 'Eemalda valitud grupp'; -$string['groupremovemembers'] = 'Eemalda valitud kasutajad'; -$string['groups'] = 'Gruppi'; -$string['groupsnone'] = 'Grupid puuduvad'; -$string['groupsseparate'] = 'Eralda grupid'; -$string['groupsvisible'] = 'Nähtavad grupid'; -$string['guestskey'] = 'Luba külalisi, kes omavad võtit'; -$string['guestsno'] = 'Ära luba külalisi'; -$string['guestsnotallowed'] = 'Kahju, \'$a\' ei luba külalistel siseneda.'; -$string['guestsyes'] = 'Luba külalisi, kellel puudub võti'; -$string['guestuser'] = 'Külaliskasutaja'; -$string['guestuserinfo'] = 'See on eriline külastaja, kellel on luba üksnes kirjutuskaitsega ja vaid mõnele õppeainele.'; -$string['help'] = 'Abi'; -$string['helpemoticons'] = 'Kasuta emotikone'; -$string['helpformatting'] = 'Teksti formaatimisest'; -$string['helphtml'] = 'Kuidas kirjutada html'; -$string['helpindex'] = 'Kõikide abifailide indeks'; -$string['helppicture'] = 'Kuidas pilti üles laadida'; -$string['helpquestions'] = 'Esita asjalikke küsimusi'; -$string['helpreading'] = 'Loe hoolikalt'; -$string['helprichtext'] = 'HTML redaktorist'; -$string['helpsummaries'] = 'Kokkuvõtetest '; -$string['helptext'] = 'Kuidas teksti kirjutada'; -$string['helpwiki'] = 'Kuidas Wiki teksti kirjutada'; -$string['helpwriting'] = 'Kirjuta hoolikalt'; -$string['hiddensections'] = 'Peidetud sektsioonid'; -$string['hiddensectionscollapsed'] = 'Peidetud sektsioone näidatakse kollapseerunud kujul'; -$string['hiddensectionsinvisible'] = 'Peidetud sektsioonid on täiesti nähtamatud'; -$string['hide'] = 'Peida'; -$string['hidepicture'] = 'Peida pilt'; -$string['hits'] = 'Klikid'; -$string['hitsoncourse'] = 'Klikke $a->coursename $a->username kohta'; -$string['hitsoncoursetoday'] = 'Tänased klikid kursuses $a->coursename $a->username poolt'; -$string['home'] = 'Koju'; -$string['hour'] = 'tund'; -$string['hours'] = 'tundi'; -$string['howtomakethemes'] = 'Kuidas teha uusi teemasid'; -$string['htmleditor'] = 'Kasuta HTML redaktorit (ainult IE, 5.5 või hilisem)'; -$string['htmleditoravailable'] = 'HTML redaktor on saadaval'; -$string['htmleditordisabled'] = 'Sa pole oma kasutajaprofiilis võimaldanud HTML redaktorit'; -$string['htmleditordisabledadmin'] = 'Administraator pole võimaldanud HTML redaktorit sellel saidil'; -$string['htmleditordisabledbrowser'] = 'HTML redaktor pole saadaval, kuna te ei kasuta Internet Explorer 5.5 või paremat versiooni'; -$string['htmlformat'] = 'Pretty HTML formaat'; -$string['icqnumber'] = 'ICQ number'; -$string['idnumber'] = 'ID number'; -$string['inactive'] = 'Mitteaktiivne'; -$string['include'] = 'Lisa'; -$string['includeallusers'] = 'Lisa kõik kasutajad'; -$string['includecoursefiles'] = 'Lisa õppeaine failid'; -$string['includecourseusers'] = 'Lisa õppeaine kasutajad'; -$string['included'] = 'Lisatud'; -$string['includelogentries'] = 'Lisa logi kirjed'; -$string['includemodules'] = 'Lisa moodulid'; -$string['includeneededusers'] = 'Lisa vajalikud kasutajad'; -$string['includeuserfiles'] = 'Lisa kasutajate failid'; -$string['institution'] = 'Institutsioon'; -$string['invalidemail'] = 'Vigane emaili aadress'; -$string['invalidlogin'] = 'Vigaselt logitud, palun proovi uuesti'; -$string['jumpto'] = 'Hüppa …'; -$string['keep'] = 'Hoia alles'; -$string['langltr'] = 'Teksti suund vasakult paremale'; -$string['langrtl'] = 'Teksti suund paremalt vasakule'; -$string['language'] = 'Keel'; -$string['languagegood'] = 'See keelepakett on ajakohane! :-)'; -$string['lastaccess'] = 'Viimane külastusaeg'; -$string['lastedited'] = 'Viimati redigeeritud'; -$string['lastlogin'] = 'Viimati logitud'; -$string['lastmodified'] = 'Viimati muudetud'; -$string['lastname'] = 'Perekonnanimi'; -$string['latestlanguagepack'] = 'Kontrolli/otsi viimast keelepaketti moodle.org-is'; -$string['latestnews'] = 'Värsked uudised'; -$string['leavetokeep'] = 'Jäta tühjaks, kui soovid säilitada praeguse salasõna'; -$string['license'] = 'GPL Litsents'; -$string['list'] = 'Loend'; -$string['listfiles'] = 'Failide loend $a'; -$string['listofallpeople'] = 'Kõigi inimeste loend'; -$string['livelogs'] = 'Logimised viimase tunni jooksul'; -$string['locale'] = 'et_EE'; -$string['location'] = 'Asukoht'; -$string['loggedinas'] = 'Olete sisse logitud kui $a '; -$string['loggedinnot'] = 'Te pole sisse logitud.'; -$string['login'] = 'Logi sisse'; -$string['loginas'] = 'Logi kui'; -$string['loginguest'] = 'Logi kui külaline'; -$string['loginsite'] = 'Logi saidile'; -$string['loginsteps'] = 'Tere! Et kursustele pääseda, võta minut aega,et tekitada omale konto sellele veebilehele. Igal eraldi kursusel võib samuti olla ühekordne \", osalejaks registreerimise võti key\", mida läheb vaja alles hiljem. Tee järgmised sammud: -
                  -
                1. Täida lüngad Uue Konto blanketil oma isikuandmetega.
                2. -
                3. Sinu aadressile saadetakse kohe email. -
                4. Loe email läbi ja kliki selles sisalduvale lingile.
                5. -
                6. Sinu konto kinnitatakse ja sind logitakse sisse.
                7. -
                8. Nüüd vali kursus, millel soovid osaleda.
                9. -
                10. Kui sinult küsitakse \"osalejaks registreerimise võtit\" - kasuta seda, mille õpetaja sulle andis. See \"registreerib su \" kursusel osalejaks.
                11. -
                12. Nüüd on sul juurdepääs tervele kursusele.Edaspidi pead sisetama üksnes oam kasutajanime ja salasõna (sellel leheküljel asuval blanketil), et logida sisse ja pääseda mistahes kursusele, kus kavatsed osaleda.
                13. -
                '; -$string['loginstepsnone'] = '

                Tere!

                -

                Et pääseda kõigile kursustele, pead tekitama omale konto.

                -

                Sul tuleb vaid mõelda välja kasutajanime ja salasõna, mida sellel leheküljel blanketil kasutada.!

                -

                Kui keegi on sellise kasutajanime juba valinud, siis proovi uut kasutajanime varianti.

                '; -$string['loginto'] = 'Logi sisse $a'; -$string['loginusing'] = 'Logi sisse oma kasutajanime ja salasõna abil '; -$string['logout'] = 'Logi välja'; -$string['logs'] = 'Logid'; -$string['mainmenu'] = 'Peamenüü'; -$string['makeafolder'] = 'Tee kaust'; -$string['makeeditable'] = 'Kui sa teed \'$a\' redigeeritavaks veebiserveri protsessi kaudu (nt apache), siis saad seda faili redigeerida otse sellelt leheküljelt'; -$string['manageblocks'] = 'Blokid'; -$string['managedatabase'] = 'Halda andmebaasi'; -$string['managefilters'] = 'Filtrid'; -$string['managemodules'] = 'Halda mooduleid'; -$string['markedthistopic'] = 'See teema on esile tõstetud jooksva teemana'; -$string['markthistopic'] = 'Märgi see teema jooksvaks teemaks'; -$string['maximumchars'] = 'Maksimaalselt $a tähemärki'; -$string['maximumgrade'] = 'Maksimumhinne'; -$string['maximumshort'] = 'Maksimum'; -$string['maximumupload'] = 'Maksimaalne üleslaadimise suurus'; -$string['maxsize'] = 'Maksimaalne suurus: $a'; -$string['min'] = 'minut'; -$string['mins'] = 'minutit'; -$string['miscellaneous'] = 'Muud'; -$string['missingcategory'] = 'Pead valima kategooria'; -$string['missingcity'] = 'Puudub linna nimi'; -$string['missingcountry'] = 'Puudub riigi nimi'; -$string['missingdescription'] = 'Puudub kirjeldus'; -$string['missingemail'] = 'Puudub emaili aadress'; -$string['missingfirstname'] = 'Puudub eesnimi'; -$string['missingfullname'] = 'Puudub kogu nimi'; -$string['missinglastname'] = 'Puudub perekonnanimi'; -$string['missingname'] = 'Puudub nimi'; -$string['missingnewpassword'] = 'Puudub uus salasõna'; -$string['missingpassword'] = 'Puudub salasõna'; -$string['missingshortname'] = 'Puudub lühendnimi'; -$string['missingshortsitename'] = 'Puudub saidi lühendnimi'; -$string['missingsitedescription'] = 'Puudub saidi kirjeldus'; -$string['missingsitename'] = 'Puudub saidi nimi'; -$string['missingstrings'] = 'Kontrolli puuduvate stringide olemasolu'; -$string['missingstudent'] = 'Pead midagi valima'; -$string['missingsummary'] = 'Puudub kokkuvõte '; -$string['missingteacher'] = 'Pead midagi valima'; -$string['missingurl'] = 'Puudub URL'; -$string['missingusername'] = 'Puudub kasutajanimi'; -$string['modified'] = 'Modifitseeritud'; -$string['moduledeleteconfirm'] = 'Kas kavatsed mooduli \'$a\' lõplikult kustutada? Nii kustutad lõplikult kogu andmebaasi, mis on seotud antud tegevuse mooduliga. Kas soovid TÕEPOOLEST jätkata?'; -$string['moduledeletefiles'] = 'Kõik mooduliga \'$a->module\' seotud andmed on andmebaasist kustutatud. Et kustutamist lõpule viia (ja vältida mooduli taasinstalleerumist), peaksid nüüd kustutama oma serverist selle kataloogi: $a->directory'; -$string['modulesetup'] = 'Mooduli tabelite seadistamine'; -$string['modulesuccess'] = '$a tabelid on õigesti seadistatud'; -$string['moodleversion'] = 'Moodle Versioon'; -$string['mostrecently'] = 'kõige viimane'; -$string['move'] = 'Liiguta'; -$string['movecategoryto'] = 'Liiguta kategooria asukohta:'; -$string['movecourseto'] = 'Liiguta õppeaine asukohta:'; -$string['movedown'] = 'Liiguta alla'; -$string['movefilestohere'] = 'Tõsta failid siia'; -$string['movefull'] = 'Liiguta $a siia'; -$string['movehere'] = 'Liiguta siia'; -$string['moveleft'] = 'Liiguta vasakule'; -$string['moveright'] = 'Liiguta paremale'; -$string['moveselectedcoursesto'] = 'Liiguta valitud õppeained asukohta'; -$string['movetoanotherfolder'] = 'Tõsta teise kausta'; -$string['moveup'] = 'Liiguta üles'; -$string['mustconfirm'] = 'Pead kinnitama oma kasutajakonto'; -$string['mycourses'] = 'Minu õppeained'; -$string['name'] = 'Nimi'; -$string['namesocial'] = 'sektsioon'; -$string['nametopics'] = 'teema'; -$string['nameweeks'] = 'nädal'; -$string['needed'] = 'Vaja'; -$string['never'] = 'Mitte kunagi'; -$string['neverdeletelogs'] = 'Ära kunagi kustuta logisid'; -$string['new'] = 'Uus'; -$string['newaccount'] = 'Uus konto'; -$string['newcourse'] = 'Uus õppeaine'; -$string['newpassword'] = 'Uus salasõna'; -$string['newpasswordtext'] = 'Tere $a->firstname, - -Sinu konto salasõna saidil \'$a->sitename\' on ümber seadistatud ning sulle on antud uus ajutine salasõna. - -Sinu praegune logimisinfo on selline.: - kasutajanimi: $a->username - salasõna: $a->newpassword - -Palun mine sellele lehele, et salasõna muuta: - $a->link -Enamikus meiliprogrammides peaks see ilmuma sinise lingi kujul, millele võib lihtsalt klikkida. Kui see ei tööta, siis lõika ja kleebi aadress aadressireale oma veebibrauseri akna ülaosas. - -Tervitustega \'$a->sitename\' administraator, -$a->signoff'; -$string['newpicture'] = 'Uus pilt'; -$string['newsitem'] = 'uudis'; -$string['newsitems'] = 'uudised'; -$string['newsitemsnumber'] = 'Mitu uudist näitatakse'; -$string['newuser'] = 'Uus kasutaja'; -$string['newusers'] = 'Uued kasutajad'; -$string['next'] = 'Järgmine'; -$string['no'] = 'Ei'; -$string['nocoursesfound'] = 'Sõnale \'$a\' ei leidunud ühtegi õppeainet'; -$string['nocoursesyet'] = 'Selles kategoorias õppeaineid ei ole'; -$string['noexistingadmins'] = '(Olemasolevaid) administraatoreid pole, see on tõsine viga ja seda teadet ei tohiks sa üldse näha.'; -$string['noexistingcreators'] = 'Autoreid pole'; -$string['noexistingstudents'] = 'Õpilasi pole'; -$string['noexistingteachers'] = 'Õpetajaid pole'; -$string['nofilesselected'] = 'Taastamiseks pole vaitud ühtegi faili '; -$string['nofilesyet'] = 'Sinu õppeainele pole üles laetud veel ühtegi faili'; -$string['nograde'] = 'Hinne puudub'; -$string['noimagesyet'] = 'Sinu õppeainele pole üles laetud veel ühtegi kujundit '; -$string['nomorecourses'] = 'Rohkem sarnaseid õppeaineid ei leidunud'; -$string['none'] = 'Mitte ühtegi'; -$string['nopotentialadmins'] = 'Potsentsiaalseid admine pole '; -$string['nopotentialcreators'] = 'Potentsiaalseid kursuse autoreid pole'; -$string['nopotentialstudents'] = 'Potensiaalseid õpilasi pole'; -$string['nopotentialteachers'] = 'Potentsiaalseid õpetajaid pole'; -$string['normal'] = 'Normaalne'; -$string['normalfilter'] = 'Tavaotsing'; -$string['nostudentsfound'] = '$a ei leidunud'; -$string['nostudentsyet'] = 'Sellele õppeainele pole veel registreerunud ühtegi õpilast '; -$string['nosuchemail'] = 'Sellist emaili aadressi pole '; -$string['notavailable'] = 'Ei ole saadaval'; -$string['noteachersyet'] = 'Selle õppeainel pole veel õpetajaid '; -$string['notenrolled'] = '$a pole sellele õppeainele registreerunud.'; -$string['noteuserschangednonetocourse'] = 'Märkus: kasutajate andmeid taastades peab taastama ka õppeaine kasutajad. See seade on nüüd muudetud.'; -$string['nothingnew'] = 'Viimasest logimisest saadik pole mingeid uudiseid '; -$string['notincluded'] = 'Pole kaasatud'; -$string['notingroup'] = 'Vabandust, kuid pead olema grupi liige, et näha seda tegevust'; -$string['nousersmatching'] = 'Ei leitud sobivaid kasutajaid \'$a\' '; -$string['nousersyet'] = 'Kasutajaid veel pole '; -$string['now'] = 'Praegu'; -$string['numberweeks'] = 'Nädalate/teemade arv'; -$string['numdays'] = '$a päeva'; -$string['numhours'] = '$a tundi'; -$string['numminutes'] = '$a minutit'; -$string['numseconds'] = '$a sekundit'; -$string['numviews'] = '$a korda vaadatud'; -$string['numweeks'] = '$a nädalat'; -$string['numwords'] = '$a sõna'; -$string['numyears'] = '$a aastat'; -$string['ok'] = 'OK'; -$string['opentoguests'] = 'Külalise juurdepääs'; -$string['optional'] = 'Valikuline'; -$string['order'] = 'Järjekord'; -$string['other'] = 'Muud'; -$string['outline'] = 'Liigendus / kava / sisukord'; -$string['page'] = 'Leht'; -$string['parentlanguage'] = 'en'; -$string['participants'] = 'Osalejad'; -$string['password'] = 'Salasõna'; -$string['passwordchanged'] = 'Salasõna on muudetud'; -$string['passwordconfirmchange'] = 'Kinnita salasõna muutmine '; -$string['passwordrecovery'] = 'Jah, aita mul sisse logida'; -$string['passwordsdiffer'] = 'Need salasõnad ei sobi omavahel'; -$string['passwordsent'] = 'Salasõna on saadetud'; -$string['passwordsenttext'] = '

                Teie aadressile $a->email.on saadetud email

                -

                Palun kontrolli uut salasõna oma meili aadressilt

                -

                uus salasõna tekitati automaatselt , te võite muuta selle mõneks kergemini meelde jäävaks link\"> - .

                '; -$string['paymentrequired'] = 'See kursus on tasuline.'; -$string['people'] = 'Inimesed'; -$string['personalprofile'] = 'Personaalne profiil'; -$string['phone'] = 'Telefon'; -$string['phpinfo'] = 'PHP informatsioon'; -$string['popupwindow'] = 'Ava fail uues aknas'; -$string['potentialadmins'] = 'Potentsiaalsed adminid'; -$string['potentialcreators'] = 'Potentsiaalsed õppeaine autorid'; -$string['potentialstudents'] = 'Potensiaalsed õpilased'; -$string['potentialteachers'] = 'Potentsiaalsed õpetajad'; -$string['preferredlanguage'] = 'Eelistatud keel'; -$string['preview'] = 'Eelvaade'; -$string['previeworchoose'] = 'Eelvaade või vali teema'; -$string['previous'] = 'Eelmine'; -$string['publicdirectory'] = 'Avalik kataloog'; -$string['publicdirectory0'] = 'Palun ära avalda seda saiti'; -$string['publicdirectory1'] = 'Avalda ainult saidi nimi'; -$string['publicdirectory2'] = 'Avalda saidi nimi koos lingiga'; -$string['publicsitefileswarning'] = 'Märkus: siia pandud faile saab kasutada igaüks'; -$string['question'] = 'Küsimus'; -$string['readinginfofrombackup'] = 'Loen infot varukoopiast'; -$string['readme'] = 'README'; -$string['recentactivity'] = 'Viimane tegevus'; -$string['recentactivityreport'] = 'Viimaste tegevuste täielik kokkuvõte'; -$string['refreshingevents'] = 'Sündmuste värskendamine'; -$string['registration'] = 'Moodle registreerumine'; -$string['registrationemail'] = 'Emaili teated'; -$string['registrationinfo'] = '

                See leht võimaldab registreeruda oma Moodle\'i saidi moodle.org. Registreerumine on tasuta. - Registreerumise põhihüveks on see, et liitute väikesemahulise meililistiga oluliste teadete edastamiseks, nagu turvahoiatused ja teated Moodle\'i uute versioonide kohta.

                -

                Vaikimisi hoitakse teie informatsiooni privaatselt ega jagata ega müüda kunagi kellelegi teisele. Ainus põhjus seda infot koguda on toetus eeesmärgil ning et aidata konstrueerida terviklikku pilti Moodle\'I kooslusest.

                -

                Soovi korral võite lubada oam saidi nime, riiki ja URL lisada Moodle\'I saitide avalikku loendisse.

                -

                Kõiki uued registreerumisi kontrollitakse ükshaaval enne, kui nad loendisse lisatakse, kuid juba loendis olles võite täpsustada oma registreerumisandmeid (ning oma sissekannet avalikus loendis)suvalisel ajal, kui esitate uuesti selle blanketi.

                '; -$string['registrationno'] = 'Ei, ma ei soovi posti saada'; -$string['registrationsend'] = 'Saada registreerumisinfo aadressil moodle.org'; -$string['registrationyes'] = 'Jah, palun teatage mulle tähtsatest asjaoludest'; -$string['removeadmin'] = 'Eemalda admin'; -$string['removecreator'] = 'Eemalda õppeaine autor'; -$string['removestudent'] = 'Eemalda õpilane'; -$string['removeteacher'] = 'Eemalda õpetaja'; -$string['rename'] = 'Nimeta ümber'; -$string['renamefileto'] = 'Nimeta ringi $a - '; -$string['required'] = 'Kohustuslik'; -$string['requireskey'] = 'Selle kursuse puhul on vaja osalejaks registreerumise võtit'; -$string['requirespayment'] = 'Sellele õppeainele juurdepääs on tasuline'; -$string['resortcoursesbyname'] = 'Sorteeri õppeained uuesti nime järgi'; -$string['resources'] = 'Õppematerjalid'; -$string['restore'] = 'Taasta'; -$string['restorecancelled'] = 'Taastamine tühistatud'; -$string['restorecoursenow'] = 'Taasa see õppeaine kohe!'; -$string['restorefinished'] = 'Taastamine edukalt lõpuni viidud'; -$string['restoreto'] = 'Taasta kuni'; -$string['returningtosite'] = 'Tagasi sellele veebilehele?'; -$string['revert'] = 'Pööra ümber'; -$string['role'] = 'Roll'; -$string['savechanges'] = 'Salvesta muudatused'; -$string['saveto'] = 'Salvesta asukohta'; -$string['scale'] = 'Skaala'; -$string['scales'] = 'Skaalad'; -$string['scalescustom'] = 'Kohandatavad skaalad'; -$string['scalescustomcreate'] = 'Lisa skaala'; -$string['scalescustomno'] = 'Kohandatavaid skaalasid ei ole veel tehtud'; -$string['scalesstandard'] = 'Standardskaala'; -$string['scalestip'] = 'Kohandatavate skaalade tegemiseks kasuta \'Skaalad...\' linki kursuse administreerimise menüüs'; -$string['schedule'] = 'Ajastamine'; -$string['scheduledbackupstatus'] = 'Ajastatud varundamise olek'; -$string['search'] = 'Otsi'; -$string['searchagain'] = 'Otsi uuesti'; -$string['searchcourses'] = 'Otsi õppeaineid'; -$string['searchhelp'] = 'Sa saad otsida mitmeid sõnu korraga.

                sõna: otsi igat vastet sellele sõnale teksti seast.
                +sõna: leitakse ainult täpne vaste otsitavale sõnale.
                -sõna: ei lisata vastet mis sisaldab seda sõna.'; -$string['searchresults'] = 'Otsingutulemused'; -$string['sec'] = 'sekund'; -$string['secs'] = 'sekundit'; -$string['section'] = 'Sektsioon'; -$string['sections'] = 'Sektsioonid'; -$string['select'] = 'Vali'; -$string['selectacountry'] = 'Vali riik'; -$string['selectednowmove'] = '$a valitud faili liigutamiseks. Nüüd mine sihtkohta ja vajuta \'Liiguta failid siia\''; -$string['senddetails'] = 'Saada mu andmed emaili teel'; -$string['separateandconnected'] = 'Eraldatud ja ühendatud teadmise teed '; -$string['serverlocaltime'] = 'Serveri kohalik aeg'; -$string['settings'] = 'Seaded'; -$string['shortname'] = 'Lühendnimi'; -$string['shortnametaken'] = 'Lühendnimi on juba teisel kursusel kellegi poolt kasutusele võetud ($a)'; -$string['shortsitename'] = 'Saidi lühendnimi (näit. üks sõna)'; -$string['show'] = 'Kuva'; -$string['showall'] = 'Kuva kõik $a'; -$string['showallcourses'] = 'Kuva kõik õppeained'; -$string['showalltopics'] = 'Kuva kõik teemad'; -$string['showallusers'] = 'Kuva kõik kasutajad'; -$string['showallweeks'] = 'Kuva kõik nädalad'; -$string['showgrades'] = 'Näita hindeid'; -$string['showlistofcourses'] = 'Kuva õppeainete loend'; -$string['showonlytopic'] = 'Kuva ainult teema $a'; -$string['showonlyweek'] = 'Kuva ainult nädalat $a'; -$string['showrecent'] = 'Kuva viimane tegevus'; -$string['showreports'] = 'Kuva tegevuse reportid'; -$string['showtheselogs'] = 'Kuva need logid'; -$string['since'] = 'Alates'; -$string['site'] = 'Sait'; -$string['sitefiles'] = 'Saidi failid'; -$string['sitelogs'] = 'Saidi logid'; -$string['sitenews'] = 'Saidi uudised'; -$string['sites'] = 'Saidid'; -$string['sitesection'] = 'Kaasa pealkirja sektsioon'; -$string['sitesettings'] = 'Saidi seaded'; -$string['size'] = 'Suurus /maht'; -$string['sizeb'] = 'baiti'; -$string['sizegb'] = 'Gb'; -$string['sizekb'] = 'Kb'; -$string['sizemb'] = 'Mb'; -$string['socialheadline'] = 'Sotsiaalne foorum - viimased teemad'; -$string['someallowguest'] = 'Mõnel õppeainel on külalistele juurdepääs lubatud '; -$string['someerrorswerefound'] = 'Osa informatsiooni puudus või oli ebatäielik. Vaata järgnevat täpsustust.'; -$string['sortby'] = 'Sorteeritud'; -$string['startdate'] = 'Õppeaine alguskuupäev'; -$string['startsignup'] = 'Alusta nüüd uue konto tekitamisega!'; -$string['state'] = 'Riik/maakond'; -$string['status'] = 'Staatus'; -$string['strftimedate'] = '%%d %%B %%Y'; -$string['strftimedateshort'] = '%%d %%B'; -$string['strftimedatetime'] = '%%d %%B %%Y, %%I:%%M %%p'; -$string['strftimedaydate'] = '%%A, %%d %%B %%Y'; -$string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%I:%%M %%p'; -$string['strftimedayshort'] = '%%A, %%d %%B'; -$string['strftimemonthyear'] = '%%B %%Y'; -$string['strftimerecent'] = '%%d %%b, %%H:%%M'; -$string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%I:%%M %%p'; -$string['strftimetime'] = '%%I:%%M %%p'; -$string['stringsnotset'] = 'Järgnevad stringid pole defineeritud $a'; -$string['studentnotallowed'] = 'Kahjuks Sa ei tohi sellele kursusele siseneda kui \'$a\''; -$string['students'] = 'Õpilased'; -$string['subcategories'] = 'Alakategooriad'; -$string['success'] = 'Edukus'; -$string['summary'] = 'Kokkuvõte'; -$string['summaryof'] = '$a kokkuvõte'; -$string['supplyinfo'] = 'Palun anna enda kohta pisut infot '; -$string['teacheronly'] = 'ainult $a jaoks'; -$string['teacherroles'] = '$a roll'; -$string['teachers'] = 'Õpetajad'; -$string['textediting'] = 'Teksti redigeerides'; -$string['texteditor'] = 'Kasuta standardseid veebiformaate'; -$string['textformat'] = 'Lihtteksti formaat'; -$string['thanks'] = 'Tänan'; -$string['theme'] = 'Teema'; -$string['themes'] = 'Teemad'; -$string['themesaved'] = 'Uus teema salvestatud'; -$string['thischarset'] = 'iso-8859-1'; -$string['thisdirection'] = 'ltr'; -$string['thislanguage'] = 'Eesti'; -$string['time'] = 'Aeg'; -$string['timezone'] = 'Ajavöönd'; -$string['to'] = 'Kellele'; -$string['today'] = 'Täna'; -$string['todaylogs'] = 'Tänased logid'; -$string['toomanytoshow'] = 'Kasutajaid on kuvamiseks liiga palju '; -$string['top'] = 'Tipp'; -$string['topic'] = 'Teema'; -$string['topichide'] = 'Peida see teema $a eest'; -$string['topicoutline'] = 'Teema ülevaade'; -$string['topicshow'] = 'Näita teemat $a'; -$string['total'] = 'Kokku'; -$string['turneditingoff'] = 'Keela redigeerimine '; -$string['turneditingon'] = 'Luba redigeerimist '; -$string['undecided'] = 'Otsustamata'; -$string['unenrol'] = 'Kustuta osalejate hulgast'; -$string['unenrolallstudents'] = 'Kustuta kõik õpilased osalejate nimekirjast'; -$string['unenrolallstudentssure'] = 'Kas oeld kindel, et kustutada kõik õpilased selle kursuse osalejate nimekirjast?'; -$string['unenrolme'] = 'Kustuta mind õppeainelt $a'; -$string['unenrolsure'] = 'Kas oled veendunud, et soovid kustutada $a sellel õppeainel osalejate hulgast?'; -$string['unknowncategory'] = 'Tundmatu kategooria'; -$string['unpacking'] = 'Pakin lahti $a'; -$string['unsafepassword'] = 'Ebaturvaline salasõna - proovi mõnda muud'; -$string['unusedaccounts'] = 'Kontod, mida ei kasutata kauem kui $a päeva, kustutatakse automaatselt nimekirjast '; -$string['unzip'] = 'Paki lahti'; -$string['unzippingbackup'] = 'Paki lahti varukoopia'; -$string['up'] = 'Üles'; -$string['update'] = 'Värskenda'; -$string['updated'] = 'Värskendatud $a'; -$string['updatemyprofile'] = 'Värskenda profiili'; -$string['updatesevery'] = 'Värskendab iga $a sekundi tagant'; -$string['updatethis'] = 'Värskenda see $a'; -$string['updatethiscourse'] = 'Värskenda see õppeaine'; -$string['updatinga'] = 'Värskendan $a'; -$string['updatingain'] = 'Värskendan a $a->what in $a->in'; -$string['upload'] = 'Laadi üles'; -$string['uploadafile'] = 'Laadi fail üles'; -$string['uploadedfileto'] = 'Üles laaditud $a->file kataloogi $a->directory'; -$string['uploadnofilefound'] = 'Ühtegi faili ei leitud - kas olete veendunud, et ikka valisite mõne üleslaadimiseks?'; -$string['uploadnotallowed'] = 'Üleslaadimised on keelatud'; -$string['uploadproblem'] = 'Faili üleslaadimisel tekkis probleem\'$a\' (võibolla oli fail liiga suur?)'; -$string['uploadthisfile'] = 'Laadi see fail üles'; -$string['uploadusers'] = 'Laadi üles kasutajad'; -$string['usedinnplaces'] = 'Kasutatud $a kohas'; -$string['user'] = 'Kasutaja'; -$string['userconfirmed'] = 'Kinnitatud $a'; -$string['userdata'] = 'Kasutaja andmed'; -$string['userdeleted'] = 'See kasutajakonto on kustutatud'; -$string['userdescription'] = 'Kirjeldus'; -$string['userfiles'] = 'Kasutaja failid'; -$string['username'] = 'Kasutajanimi'; -$string['usernameexists'] = 'See kasutajanimi on juba olemas, vali mõni teine'; -$string['usernotconfirmed'] = 'Ei saa kinnitada $a'; -$string['userprofilefor'] = 'Kasutaja profiil $a'; -$string['users'] = 'Kasutajad'; -$string['usersnew'] = 'Uued kasutajad'; -$string['userzones'] = 'Kasutajatsoonid'; -$string['usingexistingcourse'] = 'Kasuta olemasolevat õppeainet'; -$string['version'] = 'Versioon'; -$string['view'] = 'Vaade'; -$string['webpage'] = 'Veebileht'; -$string['week'] = 'Nädal'; -$string['weekhide'] = 'Peida see nädal $a eest'; -$string['weeklyoutline'] = 'Nädala liigendus / kava'; -$string['weekshow'] = 'Näita seda nädalat $a'; -$string['welcometocourse'] = 'Tere tulemast $a'; -$string['welcometocoursetext'] = 'Tere tulemast $a->coursename! - -Esimene asi, mida peaksid tegema, on redigeerida oma profiili lehte kursuse jooksul, et me saaksime sinust rohkem teada - - $a->profileurl'; -$string['whattocallzip'] = 'Mis pakitud faili nimeks saab?'; -$string['withchosenfiles'] = 'Valitud failidega'; -$string['withoutuserdata'] = 'ilma kasutaja andmeteta'; -$string['withuserdata'] = 'koos kasutaja andmetega'; -$string['wordforstudent'] = 'Teie sõnum Õpilasele'; -$string['wordforstudenteg'] = ' või Õpilasele, Osalejale jne'; -$string['wordforstudents'] = 'Teie sõnum Õpilastele'; -$string['wordforstudentseg'] = 'või Õpilastele, Osalejatele jne'; -$string['wordforteacher'] = 'Teie sõnum Õpetajale'; -$string['wordforteachereg'] = 'või Õpetajale, Juhendajale, Abistajale jne'; -$string['wordforteachers'] = 'Teie sõnum Õpetajatele'; -$string['wordforteacherseg'] = 'või Õpetajatele, Juhendajatele, Abistajatele jne'; -$string['writingcategoriesandquestions'] = 'Kirjuta kategooriad ja küsimused'; -$string['writingcoursedata'] = 'Kirjuta õppeaine info'; -$string['writingeventsinfo'] = 'Kirjuta sündmuste info'; -$string['writinggeneralinfo'] = 'Kirjuta üldinfo'; -$string['writinggroupsinfo'] = 'Kirjuta grupiinfo'; -$string['writingheader'] = 'Kirjuta päis'; -$string['writingloginfo'] = 'Kirjuta logi info'; -$string['writingmoduleinfo'] = 'Kirjuta moodulite info'; -$string['writingscalesinfo'] = 'Kirjuta kaalu info'; -$string['writinguserinfo'] = 'Kirjuta kasutajainfo'; -$string['wrongpassword'] = 'Vale salasõna selle kasutajanime juures'; -$string['yes'] = 'Jah'; -$string['youareabouttocreatezip'] = 'Sa lood Zip arhiivi järgnevatest failidest'; -$string['youaregoingtorestorefrom'] = 'Te taastate sealt:'; -$string['yourlastlogin'] = 'Teie viimane logimine toimus'; -$string['yourself'] = 'teie ise'; -$string['yourteacher'] = 'teie $a'; -$string['zippingbackup'] = 'Pakin kokku varukoopia'; - -?> +$a'; +$string['activityiscurrentlyhidden'] = 'Kahjuks see tegevus on hetkel peidetud'; +$string['activitymodule'] = 'Tegevuse moodul'; +$string['activityreport'] = 'Tegevuse raport'; +$string['activityselect'] = 'Vali see tegevus, et viia see mujale'; +$string['activitysince'] = 'Tegevus alates $a'; +$string['add'] = 'Lisa'; +$string['addadmin'] = 'Lisa admin'; +$string['addcreator'] = 'Lisa kursuse autor'; +$string['added'] = 'Lisatud $a'; +$string['addedtogroup'] = 'Lisatud gruppi $a'; +$string['addedtogroupnot'] = 'Ei lisatud gruppi $a'; +$string['addedtogroupnotenrolled'] = 'Ei lisatud gruppi $a, kuna te ei ole kursuse nimekirjas'; +$string['addinganew'] = 'Lisan uue $a'; +$string['addinganewto'] = 'Lisan uue $a->what -> $a->to'; +$string['addingdatatoexisting'] = 'Lisan andmed olemasolevasse'; +$string['addnewcategory'] = 'Lisa uus kategooria'; +$string['addnewcourse'] = 'Lisa uus kursus'; +$string['addnewuser'] = 'Lisa uus kasutaja'; +$string['address'] = 'Aadress'; +$string['addstudent'] = 'Lisa õpilane'; +$string['addteacher'] = 'Lisa õpetaja'; +$string['admin'] = 'Admin'; +$string['adminhelpaddnewuser'] = 'Loob uue kasutajakonto'; +$string['adminhelpassignadmins'] = 'Administraatorid saavad teha kõike ja minna igale poole sellel saidil'; +$string['adminhelpassigncreators'] = 'Autorid saavad luua uusi kursuseid ja õpetada neis'; +$string['adminhelpassignstudents'] = 'Mine kursusele ja lisa õpilasi administraatori menüüst'; +$string['adminhelpassignteachers'] = 'Vali kursus ja kasuta õpetaja määramiseks ikooni'; +$string['adminhelpauthentication'] = 'Sa saad kasutada süsteemi kasutajaid ja välist andmebaasi'; +$string['adminhelpbackup'] = 'Seadistab automaatse varunduse ja ajastab selle'; +$string['adminhelpconfiguration'] = 'Seadistab kuidas see leht välja näeb ja töötab'; +$string['adminhelpconfigvariables'] = 'Seadistab muutujaid mis mõjutavad süsteemi üldist tööd'; +$string['adminhelpcourses'] = 'Määrab kursused ja kategooriad ning kasutajad nendesse'; +$string['adminhelpedituser'] = 'Sirvi kasutajakontode nimekirja ja muuda ükskõik millist neist'; +$string['adminhelplanguage'] = 'Keelefailide kontroll ja muutmine'; +$string['adminhelplogs'] = 'Sirvi logisid saidi kõigist tegevustest'; +$string['adminhelpmanagedatabase'] = 'Otsene ligipääs andmebaasile (ole ettevaatlik!)'; +$string['adminhelpmanagefilters'] = 'Teksti filtrid ja selle seadistused'; +$string['adminhelpmanagemodules'] = 'Paigaldatud moodulite ja nende seadete haldamine'; +$string['adminhelpsitefiles'] = 'Üldiste failide publitseerimine või välise varukoopia üleslaadimine'; +$string['adminhelpsitesettings'] = 'Määrab esilehe välimuse'; +$string['adminhelpthemes'] = 'Määrab lehe välimuse (värvid, tähestiilid jne...)'; +$string['adminhelpuploadusers'] = 'Impordib uue kasutajakonto tekstifailist'; +$string['adminhelpusers'] = 'Määra kasutajad ja seadista autentimine'; +$string['administration'] = 'Administratsioon'; +$string['administrator'] = 'Administraator'; +$string['administrators'] = 'Administraatorid'; +$string['advancedfilter'] = 'Täpsem otsing'; +$string['again'] = 'uuesti'; +$string['all'] = 'Kõik'; +$string['allactivities'] = 'Kõik tegevused'; +$string['alldays'] = 'Kõik päevad'; +$string['allfieldsrequired'] = 'Tuleb täita kõik lahtrid'; +$string['allgroups'] = 'Kõik grupid'; +$string['alllogs'] = 'Kõik logid'; +$string['allow'] = 'Luba'; +$string['allowguests'] = 'Sellele kursusele on külalistel lubatud siseneda'; +$string['allownot'] = 'Keeldu'; +$string['allparticipants'] = 'Kõik osalejad'; +$string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; +$string['alphanumerical'] = 'Võib sisaldada üksnes tähestiku tähti ja numbreid'; +$string['alreadyconfirmed'] = 'Registreerumine on juba kinnitatud'; +$string['always'] = 'Alati'; +$string['answer'] = 'Vasta'; +$string['areyousuretorestorethis'] = 'Kas soovite jätkata?'; +$string['areyousuretorestorethisinfo'] = 'Hiljem avaneb võimalus lisada see varundus olemasolevasse kursusesse või luua täiesti uus kursus.'; +$string['assessment'] = 'Hindamine'; +$string['assignadmins'] = 'Määra administraatorid'; +$string['assigncreators'] = 'Määra kursuse autorid'; +$string['assignstudents'] = 'Registreeri õpilased osalejaks'; +$string['assignstudentsnote'] = 'Märkus: selle lehe kasutamine ei ole vajalik kuna õpilased saavad end ise osalejaks määrata'; +$string['assignstudentspass'] = 'Te peate vaid õpilastele teada andma kursuse registreerimise võtme, mis on praegu \'$a\''; +$string['assignteachers'] = 'Määra õpetajad'; +$string['authentication'] = 'Autentsuse tõendamine'; +$string['autosubscribe'] = 'Liitu automaatselt foorumiga '; +$string['autosubscribeno'] = 'Ei, ma ei liitu automaatselt foorumiga '; +$string['autosubscribeyes'] = 'Jah, kui postitan, siis nõustun selle foorumiga liitumisega'; +$string['availability'] = 'Saadavus'; +$string['availablecourses'] = 'Saadaolevad kursused'; +$string['backup'] = 'Varunda'; +$string['backupcoursefileshelp'] = 'Kui on lubatud siis kursuse failid lisatakse automaatsele varundamisele'; +$string['backupdate'] = 'Varundamise kuupäev'; +$string['backupdetails'] = 'Varunduse detailid'; +$string['backupfilename'] = 'varunda'; +$string['backupfinished'] = 'Varundamine edukalt tehtud'; +$string['backupincludemoduleshelp'] = 'Vali kas soovid kursuse mooduleid lisada automaatsesse varundusse, koos kasutajainfoga või ilma'; +$string['backupkeephelp'] = 'Kui mitut hiljutist varundust iga kursuse kohta soovid talletada? (vanemad kustutatakse automaatselt)'; +$string['backuplogshelp'] = 'Kui lubatud siis kursuse logid lisatakse automaatsele varundusele'; +$string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; +$string['backuporiginalname'] = 'Varunduse nimi'; +$string['backupsavetohelp'] = 'Varundusfailide salvestuskoha täisaadress
                (jätke tühjaks kui soovite salvestada vaikimisi määratud kataloogi)'; +$string['backupuserfileshelp'] = 'Kas kasutajate failid (nt profiili pildid) lisatakse automaatsele varundusele'; +$string['backupusershelp'] = 'Kas soovite lisada kõiki kasutajaid serveris või ainult iga kursuse jaoks vajalikke'; +$string['backupversion'] = 'Varunduse versioon'; +$string['bycourseorder'] = 'Kursuse järjekorras'; +$string['cancel'] = 'Tühista'; +$string['categories'] = 'Kursuse kategooriad'; +$string['category'] = 'Kategooria'; +$string['categoryadded'] = 'See kategooria \'$a\' lisati'; +$string['categorydeleted'] = 'See kategooria \'$a\' kustutati'; +$string['categoryduplicate'] = 'Kategooria nimega \'$a\' on juba olemas!'; +$string['changedpassword'] = 'Muudetud salasõna'; +$string['changepassword'] = 'Muuda salasõna'; +$string['changessaved'] = 'Muudatused salvestatud'; +$string['checkingbackup'] = 'Kontrollin varundust'; +$string['checkingcourse'] = 'Kontrollin kursust'; +$string['checkinginstances'] = 'Kontrollin näiteid'; +$string['checkingsections'] = 'Kontrollin sektsioone'; +$string['checklanguage'] = 'Kontrolli keelt'; +$string['choose'] = 'Vali'; +$string['choosecourse'] = 'Vali kursus'; +$string['chooselivelogs'] = 'Või jälgi jooksvat tegevust'; +$string['chooselogs'] = 'Vali, milliseid logisid soovid näha'; +$string['choosereportfilter'] = 'Vali filter kokkuvõttele'; +$string['choosetheme'] = 'Vali teema'; +$string['chooseuser'] = 'Vali kasutaja'; +$string['city'] = 'Linn'; +$string['cleaningtempdata'] = 'Puhasta ajutised andmed'; +$string['clicktochange'] = 'muutmiseks kliki'; +$string['closewindow'] = 'Sulge aken'; +$string['comparelanguage'] = 'Võrdle ja redigeeri kasutatavat keelt'; +$string['complete'] = 'Lõpeta'; +$string['configallowunenroll'] = 'Kui see on seatud \'Jah\' peale on õpilastel lubatud end kursustest välja kirjutada igal ajal. Vastasel juhul on see protsess vaid õpetajate ja administraatorite kontrollida.'; +$string['configcachetext'] = 'Suurematel lehtedel, mis kasutavad tekstifiltreid võib see seade asju kiirendada. Teksti koopiaid hoitakse töödeldavas vormis siin määratud aja jooksul. Seades aja liiga väikseks võib see asju isegi veidi aeglustada, kuid liiga suureks määrates võtab teksti uuendus liiga kaua aega (nt uute linkide puhul)'; +$string['configcountry'] = 'Kui siia sisestada riik, siis saab seda riiki vaikimisi valida uutele kasutajakontodele. Et kasutajat sundida riiki valima, jäta see sisestamata.'; +$string['configdebug'] = ' Kui see sisse lülida, siis PHP\'s error_reporting veateade suureneb, nii et trükitakse rohkem hoiatusi. See on vajalik üksnes tarkvaraarendajale.'; +$string['configdeleteunconfirmed'] = 'Kui kasutusel on emaili kaudu autentimine siis siin määratud ajavahemiku jooksul aksepteeritakse kasutajate vastuseid. Peale seda aega vanad kinnitamata kontod kustutatakse'; +$string['configerrorlevel'] = 'Vali PHP hoiatuste hulk, mida soovid kuvada. Parim valik on enamasti Normal.'; +$string['configfilteruploadedfiles'] = 'Selle seade lubamisel laseb Moodle enne näitamist kõik üleslaetud HTML ja tekstifailid läbi filtrite'; +$string['configforcelogin'] = 'Tavaliselt on avaleht ja kursuste nimekirjad (mitte kurused ise) nähatavad ka sisselogimata. Kui tahad, et kasutajad enne ÜKSKÕIK mis tegevust sisse logiksid, luba see seade'; +$string['configframename'] = 'Kui sisestad Moodle\'i veebilehe freimis, siis pane selle freimi nimi siia. Vastasel juhul peaks selle väärtuseks jääma \'_top\''; +$string['configfullnamedisplay'] = 'See määrab ära kuidas kuvatakse täielikud nimed. Enamustele üks-keelsetele lehtedele on parim valik vaikeväärtus \"Eesnimi + Perenimi\", kuid võid peita perenimed või jätta selle keelepaketi otsustada (mõnedel keeltel on erinevad viisid)'; +$string['configgdversion'] = 'Osuta installeeritud GD versioonile. Vaikimisi näha olev versioon on see, mis on automaatselt tuvastatud. Ära seda muuda, kui pole kindlalt veendunud selles, mida teed.'; +$string['confightmleditor'] = 'Vali, kas lubada või mitte manustatud HTML tekstiredaktorit. Isegi kui seda lubad, ilmub see redaktor üksnes siis, kui kasutaja kasutab ühilduvat brauserit (IE 5.5 või uuemat). Kasutajatel on võimalus seda ka mitte kasutada.'; +$string['configidnumber'] = 'See seade määrab kas (a) Kasutajatelt ei küsita ID numbrit üldse,(b) Kasutajatelt küsitakse ID numbrit, kuid nad saavad selle tühjaks jätta või (c) Kasutajatelt küsitakse ID numbrit ja välja ei saa tühjaks jätta. Kasutajate ID numbrit näidatakse tema profiilis, kui nii on seadistatud.'; +$string['configintro'] = ' Sellel lehel võid täpsustada konfiguratsioonide muutujate hulka, mis panevad Moodle\'i sinu serveris korralikult tööle. Ära liialt pabista - vaikeseaded töötavad enamasti hästi sa võid alati sellele lehele tagasi tulla ja seadeid muuta.'; +$string['configintroadmin'] = ' Sellel lehel sa peaksid konfigureerima peamise administraatori konto, mis kontrollib kogu saiti. Veendu, et kasutajanimi ja salasõna on turvalised ning meiliaadress kehtib. Hiljem võid administraatori kontosid veel luua.'; +$string['configintrosite'] = 'See leht võimaldab konfigureerida selle uue saidi esilehte ja nime. Võid hiljem siia igal ajal tagasi tulla, et seadeid muuta, klikkides kodulehel lingile \"Saidi seaded\".'; +$string['configlang'] = 'Vali vaikeseade keel kogu saidi jaoks. Kasutajad võivad seda seadet hiljem oma äranägemise järgi muuta.'; +$string['configlangdir'] = 'Enamikes keeltes kirjutatakse vasakult paremale, kuid mõnedes, nagu araabia ja heebrea keeles kirjutatakse paremalt vasakule.'; +$string['configlanglist'] = 'Jäta see lünk tühjaks, et võimaldada kasutajal valida keelte hulgast, mis on sinu Moodle\'i installatsioonis. Keelte menüüd võid siiski lühendada, sisestades komaga eraldatud nimekirja keelte koodidest, mida soovid kasutada. Näiteks: en,es_es,fr,it'; +$string['configlangmenu'] = 'Vali, kas üldist keelte menüüd kodulehel, logimislehel jne kuvada või mitte. See valik ei mõjuta kasutajate võimalust valida eelistatud keelt nende oma profiilis.'; +$string['configlocale'] = 'Vali kogu saidi geograafiline asukoht - see mõjutab kuupäevade formaati ja keelt. Sul peab olema see lokaalandmestik installeeritud operatsioonisüsteemi. (nt en_US või es_ES). Kui sa ei tea, mida valida, jäta see tühjaks.'; +$string['configloglifetime'] = 'See määrab ajavahemiku pikkuse, mille jooksul soovid säilitada logifaili kasutaja tegevuse kohta. Logimisandmed, mis on sellest varasemad, kustutatakse automaatselt. Parim lahendus on hoida logifaile nii kaua kui võimalik, juhuks, kui neid vaja läheb, kuid väga koormatud serveri ja toimimisprobleemide puhul võiks logifailide eluiga lühendada.'; +$string['configlongtimenosee'] = 'Kui õpilased pole pikka aega sisse loginud, siis nad kustutatakse automaatselt kursuste nimekirjast. See parameeter seab ajapiirangu.'; +$string['configmaxbytes'] = 'Määrab üleslaaditavate failide maksimaalse suuruse üle terve lehe. See seade on piiratud PHP seade upload_max_filesize ja Apache seade LimitRequestBody poolt. \'maxbytes\' omakorda piirab kursuse ja mooduli juures valitavat suuruste vahemikku.'; +$string['configmaxeditingtime'] = 'Määrab aja, mille jooksul peavad inimesed redigeerima foorumi postitusi, päeviku tagasisidet jne. Enamasti on 30 minutit sobiv väärtus .'; +$string['configopentogoogle'] = 'Google\'l lubatakse leheküljele siseneda kui külaline. Lisaks logitakse kõik Google otsingu kaudu leheni jõudnud inimesed sisse külalistena. See pakub vaid ligipääsu juba külaliste juurdepääsuga kursustele'; +$string['configproxyhost'] = 'Kui sellel serveril on tarvis kasutada puhverarvutit (näiteks tulemüüri) internetti pääsemiseks, siis varusta see puhver-kasutajanime ja pordiga. Vastasel juhul jäta tühjaks.'; +$string['configsecureforms'] = 'Moodle saab kasutada lisaturvatasandit, võttes vastu andmeid erinevatelt veebiblankettidelt. Kui see on lubatud, siis brauseri HTTP_REFERER muutujat kontrollitakse praeguse blanketi aadressiga võrreldes. Mõnel üksikul juhul võib see põhjustada probleeme, kui kasutaja kasutab tulemüüri (näiteks Zonealarm) , mis on konfigureeritud HTTP_REFERER oma võrguliiklusest vöötima/maha võtma. Sümptomiteks on vormi \"kinni kiilumine\". Kui sinu kasutajatel on selliseid probleeme (näiteks) logimislehega, siis võid sa tahta seda seadet ilmselt blokeeerida, ehkki see võib jätta sinu saidi kaitsetuks jõulistele salasõna-rünnakutele. Kui kahtled, jäta siia seadeks \"Jah\".'; +$string['configsessioncookie'] = 'See seade kohandab Moodle\'i sessiooni küpsiste nime. Valikuline ja kasulik vaid siis kui samal lehel jookseb mitu Moodle\'i koopiat ja küpsised võivad segamini minna.'; +$string['configsessiontimeout'] = 'Kui saidile sisse loginud inimesed on kauemat aega tegevuseta (lehti ei laadi), siis nad logitakse automaatselt välja (nende seanss lõpetatakse). See muutuja määrab, kui pika aja jooksul see peaks juhtuma '; +$string['configslasharguments'] = 'Failide (kujutistr, üleslaaditud materjali jne)hankimine toimub läbi skripti, mis kasutab slash arguments \"kärbitud väiteid\" (siin teine valik). See meetod võimaldab faile lihtsamalt veebibrauserite, puhverserverite jne vahemällu salvestada. Kahjuks mõned PHP serverid seda meetodit ei võimalda, nii et kui esineb probleeme üleslaetud failide või kujutiste (näiteks kasutaja piltide) vaatamisel, säti see muutuja esimeseks variandiks.'; +$string['configsmtphosts'] = 'Anna ühe või mitme kohaliku SMTP serveri täielik nimi, mida Moodle peaks kasutama, et saata meile (näit. \'mail.a.com\' või \'mail.a.com;mail.b.com\'). Kui jätad selle tühjaks, kasutab Moodle PHP vaikeseadet meilide saatmiseks.'; +$string['configsmtpuser'] = 'Kui oled täpsustanud ülalnimetatud SMPT serveri ja server nõuab autentsuse tõendamist, siis sisesta siia kasutajanimi ja salasõna.'; +$string['configteacherassignteachers'] = 'Kas tavalistel õpetajatel on õigus määrata õpetajaid oma kursusele? Kui \'Ei\', siis saavad õpetajaid määrata vaid kursuse looja ja administraatorid'; +$string['configtimezone'] = 'Määra vaikimisi seatud ajavöönd siin. See on vaid vaikeväärtus kuupäevade näitamiseks. Iga kasutaja saab määrata oma profiilis sobiva ajavööndi. \"Server time\" siin määrab Moodle\'i kella vastavalt operatsioonisüsteemi seadele, kuid \"Server time\" kasutaja profiilis seab kasutajale selle sama ajavööndi mis serveris'; +$string['configunzip'] = 'Osuta oma lahtipakkimisprogrammi asukoht (ainult Unix). Seda läheb vaja serveris kokku pakitud arhiivide lahtipakkimisel..'; +$string['configuration'] = 'Konfiguratsioon'; +$string['configvariables'] = 'Konfigureeri muutujad'; +$string['configwarning'] = 'Ole ettevaatlik nende seadistuste muutmisel - valed väärtused võivad tekitada tõsiseid probleeme.'; +$string['configzip'] = 'Määratle oma pakkimisprogrammi asukoht (ainult Unix). Seda läheb vaja serverisse pakitud arhiivi tekitamiseks.'; +$string['confirm'] = 'Kinnitan'; +$string['confirmed'] = 'Teie registreerumine on kinnitatud.'; +$string['confirmednot'] = 'Teie registreerumist pole veel kinnitatud!'; +$string['continue'] = 'Jätka'; +$string['cookiesenabled'] = 'Teie brauseris peavad olema võimaldatud ka präänikfailid'; +$string['copy'] = 'kopeeri'; +$string['copyingcoursefiles'] = 'Kopeeri kursuse failid'; +$string['copyinguserfiles'] = 'Kopeeri kasutaja failid'; +$string['copyingzipfile'] = 'Kopeeri zip fail'; +$string['copyrightnotice'] = 'Autorikaitse märge'; +$string['country'] = 'Riik'; +$string['course'] = 'Kursus'; +$string['courseavailable'] = 'See kursus on õpilasele saadaval'; +$string['courseavailablenot'] = 'See kursus ei ole õpilastele saadaval'; +$string['coursebackup'] = 'Kursuse varundamine'; +$string['coursecategories'] = 'Kursuse kategooriad'; +$string['coursecategory'] = 'Kursuse kategooria'; +$string['coursecreators'] = 'Kursuse loojad'; +$string['coursefiles'] = 'Kursuse failid'; +$string['courseformats'] = 'Kursuse formaadid'; +$string['coursegrades'] = 'Kursuse hinded'; +$string['courseinfo'] = 'Kursuse info'; +$string['courserestore'] = 'Kursuse taastamine'; +$string['courses'] = 'Kursused'; +$string['courseupdates'] = 'Kursuse värskendused'; +$string['courseuploadlimit'] = 'Kursuse üleslaadimise limiit'; +$string['create'] = 'Loo'; +$string['createaccount'] = 'Tekita mulle uus konto'; +$string['createfolder'] = 'Loo uus kaust asukohta $a'; +$string['createuserandpass'] = 'Tekita uus kasutajanimi ja salasõna, millega sisse logida'; +$string['createziparchive'] = 'Tekita pakitud arhiiv'; +$string['creatingcategoriesandquestions'] = 'Loon kategooriaid ja küsimusi'; +$string['creatingcoursemodules'] = 'Loon kursuse mooduleid'; +$string['creatingevents'] = 'Loon sündmuseid'; +$string['creatinggroups'] = 'Loon gruppe'; +$string['creatinglogentries'] = 'Loon logi sisestusi'; +$string['creatingnewcourse'] = 'Loon uue kursuse'; +$string['creatingscales'] = 'Loon skaalasid'; +$string['creatingsections'] = 'Loon sektsioone'; +$string['creatingtemporarystructures'] = 'Loon esialgseid struktuure'; +$string['creatingusers'] = 'Loon kasutajaid'; +$string['creatingxmlfile'] = 'Loon XML faili'; +$string['currentcourseadding'] = 'Lisan andmeid praegusele kursusele'; +$string['currentcoursedeleting'] = 'Kustutan praegust kursust'; +$string['currentlanguage'] = 'Kasutatav keel'; +$string['currentlocaltime'] = 'Teie kehtiv aeg'; +$string['currentrelease'] = 'Kehtiv väljalaske info'; +$string['currentversion'] = 'Kehtiv versioon'; +$string['databasechecking'] = 'Moodle\'i andmebaasi värskendus versioonist$a->vanast versioonist $a->uueks versiooniks...'; +$string['databaseperformance'] = 'Andmebaasi jõudlus'; +$string['databasesetup'] = 'Andmebaasi seadete loomine'; +$string['databasesuccess'] = 'Andmebaasi värskendamine läks edukalt'; +$string['databaseupgradebackups'] = 'Varundusversioon on praegu $a'; +$string['databaseupgrades'] = 'Andmebaasi värskendamine'; +$string['datemostrecentfirst'] = 'Kuupäev - uusimad alguses'; +$string['datemostrecentlast'] = 'Kuupäev - uusimad lõpus'; +$string['day'] = 'päev'; +$string['days'] = 'päeva'; +$string['defaultcoursefullname'] = 'Kursuse täielik nimetus 101'; +$string['defaultcourseshortname'] = 'KTN101'; +$string['defaultcoursestudent'] = 'Õpilane'; +$string['defaultcoursestudents'] = 'Õpilased'; +$string['defaultcoursesummary'] = 'Kirjuta siia kokkuvõtlik ja huvitav lõik, mis iseloomustab kursust'; +$string['defaultcourseteacher'] = 'Õpetaja'; +$string['defaultcourseteachers'] = 'Õpetajad'; +$string['delete'] = 'Kustuta'; +$string['deleteall'] = 'Kustuta kõik'; +$string['deletecheck'] = 'Kustuta $a ?'; +$string['deletecheckfiles'] = 'Kas oled täiesti kindel et soovid neid faile kustutada'; +$string['deletecheckfull'] = 'Kas oled täiesti veendunud, et soovid lõplikult kustutada$a ?'; +$string['deletecheckwarning'] = 'Oled kustutamas neid faile'; +$string['deletecompletely'] = 'Kustuta lõplikult'; +$string['deletecourse'] = 'Kustuta kursus'; +$string['deletecoursecheck'] = ' Kas oled täiesti veendunud, et soovid lõplikult kustutada selle kursuse ja kõik selles sisalduvad andmed?'; +$string['deleted'] = 'Kustutatud'; +$string['deletedactivity'] = 'Kustutatud $a'; +$string['deletedcourse'] = '$a on lõplikult kustutatud'; +$string['deletednot'] = 'Ei saa kustutada $a !'; +$string['deleteselected'] = 'Kustuta valitud'; +$string['deletingcourse'] = 'Kustutan $a'; +$string['deletingexistingcoursedata'] = 'Kustuta olemasolevad kursuse andmed'; +$string['deletingolddata'] = 'Kustuta vanad andmed'; +$string['department'] = 'Osakond'; +$string['description'] = 'Kirjeldus'; +$string['disable'] = 'Keelatud'; +$string['displayingfirst'] = 'Ainult esimese $a->loenduse $a->asjad on kuvatud'; +$string['displayingrecords'] = 'Kuvan $a rsalvestused'; +$string['displayingusers'] = 'Kuvan kasutajad $a->alates $a->lõpuni'; +$string['documentation'] = 'Moodle\'i documentatsioon'; +$string['donotask'] = 'Ära küsi'; +$string['down'] = 'Alla'; +$string['downloadexcel'] = 'Lae alla Exceli formaadis'; +$string['downloadtext'] = 'Laadi alla tekstiformaadis'; +$string['doyouagree'] = 'Kas oled lugenud ja mõistnud kõiki tingimusi?'; +$string['edit'] = 'Redigeeri $a'; +$string['editcoursesettings'] = 'Redigeeri kursuse seadeid'; +$string['editgroupprofile'] = 'Muuda grupi profiili'; +$string['editinga'] = 'Redigeerin a $a'; +$string['editmyprofile'] = 'Redigeeri profiili'; +$string['editsummary'] = 'Redigeeri kokkuvõtet'; +$string['editthisactivity'] = 'Redigeeri seda tegevust'; +$string['editthiscategory'] = 'Muuda seda kategooriat'; +$string['edituser'] = 'Redigeeri kasutajate kontosid'; +$string['email'] = 'E-maili aadress'; +$string['emailagain'] = 'E-maili aadress (uuesti)'; +$string['emailconfirm'] = 'Kinnita oma kontot'; +$string['emailconfirmation'] = 'Tere $a->eesnimi, + +meiliaadressi on taotletud uut kontot saidilt \'$a->sitename\' +Uue konto kinnitamiseks mine palun järgmisele veebiaadressile: + + $a->link + +Enamikus meiliprogrammides peaks see ilmuma veebilingi kujul, millele võib lihtsalt klikkida. Kui see ei tööta, siis kopeeri ja kleebi aadress aadressireale oma veebibrauseri akna ülaosas. + +Kui vajad abi, võta kontakti saidi administraatoriga, +$a->admin'; +$string['emailconfirmationsubject'] = '$a: konto kinnitus'; +$string['emailconfirmsent'] = '

                Teie meiliaadressile $a +saadeti kiri mis sisaldab lihtsaid juhendeid, kuidas registreeruda. +

                Kui olete jätkuvalt raskustes, võtke kontakti saidi administraatoriga.'; +$string['emaildisable'] = 'See emaili aadress on keelatud'; +$string['emaildisplay'] = 'Emaili kuva'; +$string['emaildisplaycourse'] = 'Luba ainult teistel kursusel osalejatel mu emaili aadressi näha'; +$string['emaildisplayno'] = 'Peida mu tegelik emaili aadress kõigi eest '; +$string['emaildisplayyes'] = 'Luba kõigil mu emaili aadressi näha '; +$string['emailenable'] = 'See emaili aadress on lubatud'; +$string['emailexists'] = 'Selline emaili aadress on juba kasutusel.'; +$string['emailformat'] = 'Emaili formaat'; +$string['emailmustbereal'] = 'Märkus: teie emaili aadress peab olema reaalne '; +$string['emailpasswordconfirmation'] = 'Tere $a->eesnimi, + +Keegi (tõenäoliselt teie ise) on soovinud uut salasõna teie kontole \'$a->saidi nimi\'. + +Selle kinnitamiseks ja uue salasõna saamiseks maili teel mine järgmisele veebiaadressile: + + $a->link + +Enamikus meiliprogrammides peaks see ilmuma sinise lingi kujul, millele võib lihtsalt klikkida. Kui see ei tööta, siis lõika ja kleebi aadress aadressireale oma veebibrauseri akna ülaosas. + +Kui vajad abi, võta kontakti saidi administraatoriga, + $a->admin'; +$string['emailpasswordconfirmationsubject'] = '$a: muuda salasõna kinnitus '; +$string['emailpasswordconfirmsent'] = ' Teie meiliaadressile $a saadeti kiri mis sisaldab lihtsaid juhiseid, kuidas kinnitada ja lõpetada selle salasõna muutmist. + Kui teil on jätkuvalt probleeme, võtke kontakti saidi administraatoriga..'; +$string['emailpasswordsent'] = 'Täname, et kinnitasite salasõna muutmise.. +

                Teie aadressile $a->email.on saadetud email, mis sisaldab teie uut salasõna +

                Uus salasõna tekitati automaatselt - ehk meeldib teile + link>muuda salasõna millekski lihtsamini meeldejäävaks.'; +$string['enable'] = 'Lubatud'; +$string['enrolledincourse'] = 'Registreeritud kursusele $a'; +$string['enrolledincoursenot'] = 'Registreeritud kursusele $a'; +$string['enrolmentconfirmation'] = 'Sa oled end registreerimas sellele kursusele
                Oled sa kindel, et soovid seda teha?'; +$string['enrolmentkey'] = 'Kursuse liikme võti'; +$string['enrolmentkeyfrom'] = 'Sellel kursusel on vajalik \"Kuresuse liikme võti\" - salasõna
                +mille andis sulle $a'; +$string['enrolmentkeyhint'] = 'Kursuse liikme võti oli vale, palun proovi uuesti
                +(Vihje - see algab nii \'$a\')'; +$string['entercourse'] = 'Kliki kursuse sisestamiseks'; +$string['enteremailaddress'] = 'Sisene oma emaili aadressi, et teha uus seade oma salasõna ja lasta uus salasõna saata omale emaili teel.'; +$string['error'] = 'Viga'; +$string['errortoomanylogins'] = 'Kahjuks, te olete ületanud oma logimiskatsete limiidi. Tehke oma brausesris restart.'; +$string['errorwhenconfirming'] = 'Ei ole veel kinnitatud, kuna esines viga. Kui vajutasid linki emaili sees tee kindlaks, et link ei olnud vigane ega mitmel real. Vajadusel kasuta lõika-kleebi meetodit lingi taastamiseks'; +$string['executeat'] = 'Käivita'; +$string['existing'] = 'Olemasolev'; +$string['existingadmins'] = 'Olemasolevad administraatorid'; +$string['existingcourse'] = 'Olemasolev kursus'; +$string['existingcourseadding'] = 'Lisan andmeid olemasolevasse kursusesse'; +$string['existingcoursedeleting'] = 'Kustutan olemasoleva kursuse'; +$string['existingcreators'] = 'Olemasolevad kursuse autorid'; +$string['existingstudents'] = 'Registreerinud õpilased'; +$string['existingteachers'] = 'Olemasolevad õpetajad'; +$string['feedback'] = 'Tagasiside'; +$string['filemissing'] = '$a puudub'; +$string['files'] = 'Failid'; +$string['filesfolders'] = 'Failid/kaustad'; +$string['filloutallfields'] = 'Palun täida selle blanketi kõik väljad '; +$string['findmorecourses'] = 'Otsi veel kursusi...'; +$string['firstdayofweek'] = 'E'; +$string['firstname'] = 'Eesnimi'; +$string['firsttime'] = 'Kas oled siin esimest korda?'; +$string['followingoptional'] = 'Järgnevad punktid on valikulised '; +$string['followingrequired'] = 'Järgnevad punktid on nõutavad'; +$string['force'] = 'Sunni'; +$string['forcedmode'] = 'Sunnitud töörežiim'; +$string['forcelanguage'] = 'Sunni keel'; +$string['forceno'] = 'Ära sunni'; +$string['forgotten'] = ' Oled unustanud oma kasutajanime või salasõna?'; +$string['format'] = 'Formaat'; +$string['formathtml'] = 'HTML formaat'; +$string['formatplain'] = 'Lihtteksti formaat'; +$string['formatsocial'] = 'Sotsiaalne formaat'; +$string['formattext'] = 'Moodle auto-formaat'; +$string['formattexttype'] = 'Formaatimine'; +$string['formattopics'] = 'Teemade formaat'; +$string['formatweeks'] = 'Nädalakava formaat'; +$string['formatwiki'] = 'Wiki formaat'; +$string['from'] = ' '; +$string['frontpagecategorynames'] = 'Näita kategooriate nimekirja'; +$string['frontpagecourselist'] = 'Näita kursuste nimekirja'; +$string['frontpagedescription'] = 'Esilehe kirjeldus'; +$string['frontpageformat'] = 'Esilehe formaat'; +$string['frontpagenews'] = 'Näita uudiseid'; +$string['fulllistofcourses'] = 'Kõik kursused'; +$string['fullname'] = 'Täielik nimi'; +$string['fullnamedisplay'] = '$a->firstname $a->lastname'; +$string['fullprofile'] = 'Täielik profiil'; +$string['fullsitename'] = 'Saidi täielik nimi'; +$string['gd1'] = 'GD 1.x on installeeritud'; +$string['gd2'] = 'GD 2.x on installeeritud'; +$string['gdneed'] = 'GD tuleb installeerida, et seda graafikut näha'; +$string['gdnot'] = 'GD pole installeeritud'; +$string['gpl'] = 'Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com) + +See programm on vabavara, seda võib levitada ja /või kohandada vastavalt GNU General Public Litsentsile, nagu avaldatud Vabavara Fondi poolt; kas vastavalt Litsentsi versioonile 2 või teie omal valikul mõnele hilisemale versioonile. + +Seda programmi levitatakse lootuses, et ta on kasulik, kuid ILMA MINGI GARANTIITA, isegi ilma mingi vihjeta TURUSTATAVUSE või KONKREETSEKS EESMÄRGIKS SOBIVUSE garantiile. Vaata GNU General Public License, et rohkem teada saada: + +http://www.gnu.org/copyleft/gpl.html'; +$string['grade'] = 'Hinne'; +$string['grades'] = 'Hinded'; +$string['group'] = 'Grupp'; +$string['groupadd'] = 'Lisa uus grupp'; +$string['groupaddusers'] = 'Lisa valitud gruppi'; +$string['groupinfo'] = 'Info valitud grupi kohta'; +$string['groupinfomembers'] = 'Info valitud kasutajate kohta'; +$string['groupinfopeople'] = 'Info valitud inimeste kohta'; +$string['groupmemberssee'] = 'Vaata grupi liikmeid'; +$string['groupmembersselected'] = 'Valitud grupi liikmed'; +$string['groupmode'] = 'Grupi mood'; +$string['groupmodeforce'] = 'Sunni grupirežiim'; +$string['groupmy'] = 'Minu grupp'; +$string['groupnonmembers'] = 'Inimesed, kes ei ole grupis'; +$string['groupnotamember'] = 'Vabandust! Sa ei ole selle grupi liige'; +$string['grouprandomassign'] = 'Määra juhuslikult kõikidesse gruppidesse'; +$string['groupremove'] = 'Eemalda valitud grupp'; +$string['groupremovemembers'] = 'Eemalda valitud kasutajad'; +$string['groups'] = 'Gruppi'; +$string['groupsnone'] = 'Grupid puuduvad'; +$string['groupsseparate'] = 'Eralda grupid'; +$string['groupsvisible'] = 'Nähtavad grupid'; +$string['guestskey'] = 'Luba külalisi, kes omavad võtit'; +$string['guestsno'] = 'Ära luba külalisi'; +$string['guestsnotallowed'] = 'Kahjuks, \'$a\' ei luba külalistel siseneda.'; +$string['guestsyes'] = 'Luba külalisi, kellel puudub võti'; +$string['guestuser'] = 'Külaliskasutaja'; +$string['guestuserinfo'] = 'See on eriline külastaja, kellel on luba üksnes kirjutuskaitsega ja vaid mõnele kursusele.'; +$string['help'] = 'Abi'; +$string['helpemoticons'] = 'Kasuta emotikone'; +$string['helpformatting'] = 'Teksti formaatimisest'; +$string['helphtml'] = 'Kuidas kirjutada html'; +$string['helpindex'] = 'Kõikide abi failide indeks'; +$string['helppicture'] = 'Kuidas pilti üles laadida'; +$string['helpquestions'] = 'Esita asjalikke küsimusi'; +$string['helpreading'] = 'Loe hoolikalt'; +$string['helprichtext'] = 'Richtext redaktorist'; +$string['helpsummaries'] = 'Nendest kokkuvõtetest '; +$string['helptext'] = 'Kuidas teksti kirjutada'; +$string['helpwiki'] = 'Kuidas Wiki teksti kirjutada'; +$string['helpwriting'] = 'Kirjuta hoolikalt'; +$string['hide'] = 'Peida'; +$string['hidepicture'] = 'Peida pilt'; +$string['hits'] = 'Klikid'; +$string['hitsoncourse'] = 'Klikke $a->coursename $a->username kohta'; +$string['hitsoncoursetoday'] = 'Tänased klikid kursuses $a->coursename $a->username poolt'; +$string['home'] = 'Koju'; +$string['hour'] = 'tund'; +$string['hours'] = 'tundi'; +$string['howtomakethemes'] = 'Kuidas teha uusi teemasid'; +$string['htmleditor'] = 'Kasuta HTML redaktorit (ainult IE, 5.5 või hilisem)'; +$string['htmleditoravailable'] = 'HTML redaktor on saadaval'; +$string['htmleditordisabled'] = 'Sa pole oma kasutajaprofiilis võimaldanud HTML redaktorit'; +$string['htmleditordisabledadmin'] = 'Administraator pole võimaldanud HTML redaktorit sellel saidil'; +$string['htmleditordisabledbrowser'] = 'HTML redaktor pole saadaval, kuna te ei kasuta Internet Explorer 5.5 või paremat versiooni'; +$string['htmlformat'] = 'Pretty HTML formaat'; +$string['icqnumber'] = 'ICQ number'; +$string['idnumber'] = 'ID number'; +$string['inactive'] = 'Mitteaktiivne'; +$string['include'] = 'Lisa'; +$string['includeallusers'] = 'Lisa kõik kasutajad'; +$string['includecoursefiles'] = 'Lisa kursuse failid'; +$string['includecourseusers'] = 'Lisa kursuse kasutajad'; +$string['included'] = 'Lisatud'; +$string['includelogentries'] = 'Lisa logi kirjed'; +$string['includemodules'] = 'Lisa moodulid'; +$string['includeneededusers'] = 'Lisa vajalikud kasutajad'; +$string['includeuserfiles'] = 'Lisa kasutajate failid'; +$string['institution'] = 'Institutsioon'; +$string['invalidemail'] = 'Vigane emaili aadress'; +$string['invalidlogin'] = 'Vigaselt logitud,palun proovi uuesti'; +$string['jumpto'] = 'Hüppa …'; +$string['keep'] = 'Hoia alles'; +$string['langltr'] = 'Teksti suund vasakult paremale'; +$string['langrtl'] = 'Teksti suund paremalt vasakule'; +$string['language'] = 'Keel'; +$string['languagegood'] = 'See keelepakett on ajakohane! :-)'; +$string['lastaccess'] = 'Viimane külastusaeg'; +$string['lastedited'] = 'Viimati redigeeritud'; +$string['lastlogin'] = 'Viimati logitud'; +$string['lastmodified'] = 'Viimati muudetud'; +$string['lastname'] = 'Perekonnanimi'; +$string['latestlanguagepack'] = 'Kontrolli/otsi viimast keelepaketti moodle.org-is'; +$string['latestnews'] = 'Värsked uudised'; +$string['leavetokeep'] = 'Jäta tühjaks, kui soovid säilitada praeguse salasõna'; +$string['license'] = 'GPL Litsents'; +$string['list'] = 'Loend'; +$string['listfiles'] = 'Failide loend $a'; +$string['listofallpeople'] = 'Kõigi inimeste loend'; +$string['livelogs'] = 'Logimised viimase tunni jooksul'; +$string['locale'] = 'et_EE'; +$string['location'] = 'Asukoht'; +$string['loggedinas'] = 'Olete sisse logitud kui $a '; +$string['loggedinnot'] = 'Te pole sisse logitud.'; +$string['login'] = 'Logi sisse'; +$string['loginas'] = 'Logi kui'; +$string['loginguest'] = 'Logi kui külaline'; +$string['loginsite'] = 'Logi saidile'; +$string['loginsteps'] = 'Tere! Et kursustele pääseda, võta minut aega,et tekitada omale konto sellele veebilehele. Igal eraldi kursusel võib samuti olla ühekordne ", osalejaks registreerimise võti key", mida läheb vaja alles hiljem. Tee järgmised sammud: +

                  +
                1. Täida lüngad Uue Konto blanketil oma isikuandmetega. +
                2. Sinu aadressile saadetakse kohe email. +
                3. Loe email läbi ja kliki selles sisalduvale lingile. +
                4. Sinu konto kinnitatakse ja sind logitakse sisse. +
                5. Nüüd vali kursus, millel soovid osaleda. +
                6. Kui sinult küsitakse "osalejaks registreerimise võtit" - kasuta seda, mille õpetaja sulle andis. See "registreerib su " kursusel osalejaks. +
                7. Nüüd on sul juurdepääs tervele kursusele.Edaspidi pead sisetama üksnes oam kasutajanime ja salasõna (sellel leheküljel asuval blanketil), et logida sisse ja pääseda mistahes kursusele, kus kavatsed osaleda. +
                '; +$string['loginstepsnone'] = 'Tere!

                Et pääseda kõigile kursustele, pead tekitama omale konto.

                Sul tuleb vaid mõelda välja kasutajanime ja salasõna, mida sellel leheküljel blanketil kasutada.!

                Kui keegi on sellise kasutajanime juba valinud, siis proovi uut kasutajanime varianti.'; +$string['loginto'] = 'Logi sisse $a'; +$string['loginusing'] = 'Logi sisse oma kasutajanime ja salasõna abil '; +$string['logout'] = 'Logi välja'; +$string['logs'] = 'Logid'; +$string['mainmenu'] = 'Peamenüü'; +$string['makeafolder'] = 'Tee kaust'; +$string['makeeditable'] = 'Kui sa teed \'$a\' redigeeritavaks veebiserveri protsessi kaudu (nt apache), siis saad seda faili redigeerida otse sellelt leheküljelt'; +$string['managedatabase'] = 'Halda andmebaasi'; +$string['managefilters'] = 'Filtrid'; +$string['managemodules'] = 'Halda mooduleid'; +$string['markedthistopic'] = 'See teema on esile tõstetud jooksva teemana'; +$string['markthistopic'] = 'Märgi see teema jooksvaks teemaks'; +$string['maximumchars'] = 'Maksimaalselt $a characters'; +$string['maximumgrade'] = 'Maksimumhinne'; +$string['maximumshort'] = 'Maksimum'; +$string['maximumupload'] = 'Maksimum üleslaadimise suurus'; +$string['maxsize'] = 'Maksimum suurus: $a'; +$string['min'] = 'minut'; +$string['mins'] = 'minutit'; +$string['miscellaneous'] = 'Muud'; +$string['missingcategory'] = 'Pead valima kategooria'; +$string['missingcity'] = 'Puudub linna nimi'; +$string['missingcountry'] = 'Puudub riigi nimi'; +$string['missingdescription'] = 'Puudub kirjeldus'; +$string['missingemail'] = 'Puudub emaili aadress'; +$string['missingfirstname'] = 'Puudub eesnimi'; +$string['missingfullname'] = 'Puudub kogu nimi'; +$string['missinglastname'] = 'Puudub perekonnanimi'; +$string['missingname'] = 'Puudub nimi'; +$string['missingnewpassword'] = 'Puudub uus salasõna'; +$string['missingpassword'] = 'Puudub salasõna'; +$string['missingshortname'] = 'Puudub lühendnimi'; +$string['missingshortsitename'] = 'Puudub saidi lühendnimi'; +$string['missingsitedescription'] = 'Puudub saidi kirjeldus'; +$string['missingsitename'] = 'Puudub saidi nimi'; +$string['missingstrings'] = 'Kontrolli puuduvate stringide olemasolu'; +$string['missingstudent'] = 'Pead midagi valima'; +$string['missingsummary'] = 'Puudub kokkuvõte '; +$string['missingteacher'] = 'Pead midagi valima'; +$string['missingurl'] = 'Puudub URL'; +$string['missingusername'] = 'Puudub kasutajanimi'; +$string['modified'] = 'Modifitseeritud'; +$string['moduledeleteconfirm'] = 'Kas kavatsed mooduli \'$a\' lõplikult kustutada? Nii kustutad lõplikult kogu andmebaasi, mis on seotud antud tegevuse mooduliga. Kas soovid TÕEPOOLEST jätkata?'; +$string['moduledeletefiles'] = 'Kõik mooduliga \'$a->module\' seotud andmed on andmebaasist kustutatud. Et kustutamist lõpule viia (ja vältida mooduli taasinstalleerumist), peaksid nüüd kustutama oma serverist selle kataloogi: $a->directory'; +$string['modulesetup'] = 'Mooduli tabelite seadistamine'; +$string['modulesuccess'] = '$a tabelid on õigesti seadistatud'; +$string['moodleversion'] = 'Moodle Versioon'; +$string['mostrecently'] = 'kõige viimane'; +$string['move'] = 'Liiguta'; +$string['movecategoryto'] = 'Liiguta kategooria asukohta:'; +$string['movecourseto'] = 'Liiguta kursuse asukohta:'; +$string['movedown'] = 'Liigu / tõsta alla'; +$string['movefilestohere'] = 'Tõsta failid siia'; +$string['movefull'] = 'Liiguta $a siia'; +$string['movehere'] = 'Liiguta siia'; +$string['moveleft'] = 'Liiguta vasakule'; +$string['moveright'] = 'Liiguta paremale'; +$string['moveselectedcoursesto'] = 'Liiguta valitud kursused asukohta'; +$string['movetoanotherfolder'] = 'Tõsta teise kausta'; +$string['moveup'] = 'Liigu / tõsta üles'; +$string['mustconfirm'] = 'Pead kinnitama oma kasutajakonto'; +$string['mycourses'] = 'Minu kursused'; +$string['name'] = 'Nimi'; +$string['namesocial'] = 'sektsioon'; +$string['nametopics'] = 'teema'; +$string['nameweeks'] = 'nädal'; +$string['needed'] = 'Vaja'; +$string['never'] = 'Mitte kunagi'; +$string['neverdeletelogs'] = 'Ära kunagi kustuta logisid'; +$string['new'] = 'Uus'; +$string['newaccount'] = 'Uus konto'; +$string['newcourse'] = 'Uus kursus'; +$string['newpassword'] = 'Uus salasõna'; +$string['newpasswordtext'] = 'Tere $a->firstname, + +Sinu konto salasõna saidil \'$a->sitename\' on ümber seadistatud ning sulle on antud uus ajutine salasõna. + +Sinu praegune logimisinfo on selline.: + kasutajanimi: $a->username + salasõna: $a->newpassword + +Palun mine sellele lehele, et salasõna muuta: + $a->link +Enamikus meiliprogrammides peaks see ilmuma sinise lingi kujul, millele võib lihtsalt klikkida. Kui see ei tööta, siis lõika ja kleebi aadress aadressireale oma veebibrauseri akna ülaosas. + +Tervitustega \'$a->sitename\' administraator, +$a->signoff +'; +$string['newpicture'] = 'Uus pilt'; +$string['newsitem'] = 'uudis'; +$string['newsitems'] = 'uudised'; +$string['newsitemsnumber'] = 'uudis kuvamiseks'; +$string['newuser'] = 'Uus kasutaja'; +$string['newusers'] = 'Uued kasutajad'; +$string['next'] = 'Järgmine'; +$string['no'] = 'Ei'; +$string['nocoursesfound'] = 'Sõnale \'$a\' ei leidunud ühtegi kursust'; +$string['nocoursesyet'] = 'Selles kategoorias kursuseid ei leidu '; +$string['noexistingadmins'] = '(Olemasolevaid) administraatoreid pole, see on tõsine viga ja seda teadet ei tohiks sa üldse näha.'; +$string['noexistingcreators'] = 'Autoreid pole'; +$string['noexistingstudents'] = 'Õpilasi pole'; +$string['noexistingteachers'] = 'Õpetajaid pole'; +$string['nofilesselected'] = 'Taastamiseks pole vaitud ühtegi faili '; +$string['nofilesyet'] = 'Sinu kursusele pole üles laetud veel ühtegi faili yet'; +$string['nograde'] = 'Hinne puudub'; +$string['noimagesyet'] = 'Sinu kursusele pole üles laetud veel ühtegi kujundit '; +$string['nomorecourses'] = 'Rohkem sarnaseid kursuseid ei leidunud'; +$string['none'] = 'Mitte ühtegi'; +$string['nopotentialadmins'] = 'Potsentsiaalseid admine pole '; +$string['nopotentialcreators'] = 'Potentsiaalseid kursuse autoreid pole'; +$string['nopotentialstudents'] = 'Potensiaalseid õpilasi pole'; +$string['nopotentialteachers'] = 'Potentsiaalseid õpetajaid pole'; +$string['normal'] = 'Normaalne'; +$string['normalfilter'] = 'Tavaotsing'; +$string['nostudentsfound'] = '$a ei leidunud'; +$string['nostudentsyet'] = 'Sellele kursusele pole veel registreerunud ühtegi õpilast '; +$string['nosuchemail'] = 'Sellist emaili aadressi pole '; +$string['notavailable'] = 'Ei ole saadaval'; +$string['noteachersyet'] = 'Selle kursusel pole veel õpetajaid '; +$string['notenrolled'] = '$a pole sellele kursusele registreerunud.'; +$string['noteuserschangednonetocourse'] = 'Märkus: kasutajate andmeid taastades peab taastama ka kursuse kasutajad. See seade on nüüd muudetud'; +$string['nothingnew'] = 'Viimasest logimisest saadik pole mingeid uudiseid '; +$string['notincluded'] = 'Pole suletud'; +$string['notingroup'] = 'Vabandust, kuid pead olema grupi liige, et näha seda tegevust'; +$string['nousersmatching'] = 'Ei leitud sobivaid kasutajaid \'$a\' '; +$string['nousersyet'] = 'Kasutajaid veel pole '; +$string['now'] = 'Praegu'; +$string['numberweeks'] = 'Nädalate/teemade arv'; +$string['numdays'] = '$a päeva'; +$string['numhours'] = '$a tundi'; +$string['numminutes'] = '$a minutit'; +$string['numseconds'] = '$a sekundit'; +$string['numviews'] = '$a korda vaadatud'; +$string['numweeks'] = '$a nädalat'; +$string['numwords'] = '$a sõna'; +$string['numyears'] = '$a aastat'; +$string['ok'] = 'OK'; +$string['opentoguests'] = 'Külalise juurdepääs'; +$string['optional'] = 'Valikuline'; +$string['order'] = 'Tellimus'; +$string['other'] = 'Muud'; +$string['outline'] = 'Liigendus / kava / sisukord'; +$string['page'] = 'Leht'; +$string['parentlanguage'] = 'en'; +$string['participants'] = 'Osalejad'; +$string['password'] = 'Salasõna'; +$string['passwordchanged'] = 'Salasõna on muudetud'; +$string['passwordconfirmchange'] = 'Kinnita salasõna muutmine '; +$string['passwordrecovery'] = 'Jah, aita mul sisse logida'; +$string['passwordsdiffer'] = 'Need salasõnad ei sobi'; +$string['passwordsent'] = 'Salasõna on saadetud'; +$string['passwordsenttext'] = '

                Teie aadressile $a->email.on saadetud email +

                Palun kontrolli uut salasõna oma meili aadressilt +

                uus salasõna tekitati automaatselt , te võite muuta selle mõneks kergemini meelde jäävaks link> + .'; +$string['people'] = 'Inimesed'; +$string['personalprofile'] = 'Personaalne profiil'; +$string['phone'] = 'Telefon'; +$string['phpinfo'] = 'PHP informatsioon'; +$string['popupwindow'] = 'Ava fail uues aknas'; +$string['potentialadmins'] = 'Potentsiaalsed adminid'; +$string['potentialcreators'] = 'Potentsiaalsed kursuse autorid'; +$string['potentialstudents'] = 'Potensiaalsed õpilased'; +$string['potentialteachers'] = 'Potentsiaalsed õpetajad'; +$string['preferredlanguage'] = 'Eelistatud keel'; +$string['preview'] = 'Eelvaade'; +$string['previeworchoose'] = 'Eelvaade või vali teema'; +$string['previous'] = 'Eelmine'; +$string['publicdirectory'] = 'Avalik kataloog'; +$string['publicdirectory0'] = 'Palun ära avalda seda saiti'; +$string['publicdirectory1'] = 'Avalda ainult saidi nimi'; +$string['publicdirectory2'] = 'Avalda saidi nimi koos lingiga'; +$string['publicsitefileswarning'] = 'Märkus: siia pandud faile saab kasutada igaüks'; +$string['question'] = 'Küsimus'; +$string['readinginfofrombackup'] = 'Leon infot varukoopiast'; +$string['readme'] = 'README'; +$string['recentactivity'] = 'Viimane tegevus'; +$string['recentactivityreport'] = 'Viimaste tegevuste täielik kokkuvõte'; +$string['registration'] = 'Moodle registreerumine'; +$string['registrationemail'] = 'Emaili teated'; +$string['registrationinfo'] = '

                See leht võimaldab registreeruda oma Moodle\'i saidi moodle.org. Registreerumine on tasuta. + Registreerumise põhihüveks on see, et liitute väikesemahulise meililistiga oluliste teadete edastamiseks, nagu turvahoiatused ja teated Moodle\'i uute versioonide kohta. +

                Vaikimisi hoitakse teie informatsiooni privaatselt ega jagata ega müüda kunagi kellelegi teisele. Ainus põhjus seda infot koguda on toetus eeesmärgil ning et aidata konstrueerida terviklikku pilti Moodle\'I kooslusest. +

                Soovi korral võite lubada oam saidi nime, riiki ja URL lisada Moodle\'I saitide avalikku loendisse. +

                Kõiki uued registreerumisi kontrollitakse ükshaaval enne, kui nad loendisse lisatakse, kuid juba loendis olles võite täpsustada oma registreerumisandmeid (ning oma sissekannet avalikus loendis)suvalisel ajal, kui esitate uuesti selle blanketi.'; +$string['registrationno'] = 'Ei, ma ei soovi posti saada'; +$string['registrationsend'] = 'Saada registreerumisinfo aadressil moodle.org'; +$string['registrationyes'] = 'Jah, palun teatage mulle tähtsatest asjaoludest'; +$string['removeadmin'] = 'Potentsiaalsed adminid'; +$string['removecreator'] = 'Eemalda kursuse autor'; +$string['removestudent'] = 'Eemalda õpilane'; +$string['removeteacher'] = 'Eemalda õpetaja'; +$string['rename'] = 'Nimeta ümber'; +$string['renamefileto'] = 'Nimeta ringi $a - '; +$string['required'] = 'Kohustuslik'; +$string['requireskey'] = 'Selle kursuse puhul on vaja osalejaks registreerumise võtit'; +$string['resortcoursesbyname'] = 'Sorteeri kursused uuesti nime järgi'; +$string['resources'] = 'Ressursid'; +$string['restore'] = 'Taasta'; +$string['restorecancelled'] = 'Taastamine tühistatud'; +$string['restorecoursenow'] = 'Taasa see kursus kohe'; +$string['restorefinished'] = 'Taastamine edukalt lõpuni viidud'; +$string['restoreto'] = 'Taasta kuni'; +$string['returningtosite'] = 'Tagasi sellele veebilehele?'; +$string['revert'] = 'Pööra ümber'; +$string['role'] = 'Roll'; +$string['savechanges'] = 'Salvesta muudatused'; +$string['saveto'] = 'Salvesta asukohta'; +$string['scale'] = 'Skaala'; +$string['scales'] = 'Skaalad'; +$string['scalescustom'] = 'Kohandatavad skaalad'; +$string['scalescustomcreate'] = 'Lisa skaala'; +$string['scalescustomno'] = 'Kohandatavaid skaalasid ei ole veel tehtud'; +$string['scalesstandard'] = 'Standardskaala'; +$string['scalestip'] = 'Kohandatavate skaalade tegemiseks kasuta \'Skaalad...\' linki kursuse administreerimise menüüs'; +$string['schedule'] = 'Ajastamine'; +$string['scheduledbackupstatus'] = 'Ajastatud varundamise olek'; +$string['search'] = 'Otsi'; +$string['searchagain'] = 'Otsi uuesti'; +$string['searchcourses'] = 'Otsi kursuseid'; +$string['searchhelp'] = 'Sa saad otsida mitmeid sõnu korraga.

                sõna: otsi igat vastet sellele sõnale teksti seast.
                +sõna: leitakse ainult täpne vaste otsitavale sõnale.
                -sõna: ei lisata vastet mis sisaldab seda sõna.'; +$string['searchresults'] = 'Otsi tulemusi'; +$string['sec'] = 'sekund'; +$string['secs'] = 'sekundit'; +$string['section'] = 'Sektsioon'; +$string['sections'] = 'Sektsioonid'; +$string['select'] = 'Vali'; +$string['selectacountry'] = 'Vali riik'; +$string['selectednowmove'] = '$a valitud failid liigutamiseks. Nüüd mine sihtkohta ja vajuta \'Liiguta failid siia\''; +$string['senddetails'] = 'Saada mu andmed emaili teel'; +$string['separateandconnected'] = 'Eraldatud ja ühendatud teadmise teed '; +$string['serverlocaltime'] = 'Serveri kohalik aeg'; +$string['settings'] = 'Seaded'; +$string['shortname'] = 'Lühendnimi'; +$string['shortnametaken'] = 'Lühendnimi on juba teisel kursusel kellegi poolt kasutusele võetud ($a)'; +$string['shortsitename'] = 'Saidi lühendnimi(näit. üks sõna)'; +$string['show'] = 'Kuva'; +$string['showall'] = 'Kuva kõik $a'; +$string['showallcourses'] = 'Kuva kõik kursused'; +$string['showalltopics'] = 'Kuva kõik teemad'; +$string['showallusers'] = 'Kuva kõik kasutajad'; +$string['showallweeks'] = 'Kuva kõik nädalad'; +$string['showgrades'] = 'Näita hindeid'; +$string['showlistofcourses'] = 'Kuva kursuste loend'; +$string['showonlytopic'] = 'Kuva ainult teema $a'; +$string['showonlyweek'] = 'Kuva ainult nädalat $a'; +$string['showrecent'] = 'Kuva viimane tegevus'; +$string['showreports'] = 'Kuva tegevuse reportid'; +$string['showtheselogs'] = 'Kuva need logid'; +$string['since'] = 'Alates'; +$string['site'] = 'Sait'; +$string['sitefiles'] = 'Saidi failid'; +$string['sitelogs'] = 'Saidi logid'; +$string['sitenews'] = 'Saidi uudised'; +$string['sites'] = 'Saidid'; +$string['sitesettings'] = 'Saidi seaded'; +$string['size'] = 'Suurus /maht'; +$string['sizeb'] = 'baiti'; +$string['sizegb'] = 'Gb'; +$string['sizekb'] = 'Kb'; +$string['sizemb'] = 'Mb'; +$string['socialheadline'] = 'Sotsiaalne foorum - viimased teemad'; +$string['someallowguest'] = 'Mõnel kursusel on külalistele juurdepääs lubatud '; +$string['someerrorswerefound'] = 'Osa informatsiooni puudus või oli ebatäielik. Vaata järgnevat täpsustust.'; +$string['sortby'] = 'Sorteeritud'; +$string['startdate'] = 'Kursuse alguskuupäev'; +$string['startsignup'] = 'Alusta nüüd uue konto tekitamisega!'; +$string['state'] = 'Riik/maakond'; +$string['status'] = 'Staatus'; +$string['strftimedate'] = '%%d %%B %%Y'; +$string['strftimedateshort'] = '%%d %%B'; +$string['strftimedatetime'] = '%%d %%B %%Y, %%I:%%M %%p'; +$string['strftimedaydate'] = '%%A, %%d %%B %%Y'; +$string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%I:%%M %%p'; +$string['strftimerecent'] = '%%d %%b, %%H:%%M'; +$string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%I:%%M %%p'; +$string['strftimetime'] = '%%I:%%M %%p'; +$string['stringsnotset'] = 'Järgnevad stringid pole defineeritud $a'; +$string['studentnotallowed'] = 'Kahjuks sa ei tohi sellele kursusele siseneda kui \'$a\''; +$string['students'] = 'Õpilased'; +$string['subcategories'] = 'Alakategooriad'; +$string['success'] = 'Edukus'; +$string['summary'] = 'Kokkuvõte'; +$string['summaryof'] = ' $a kokkuvõte'; +$string['supplyinfo'] = 'Palun anna enda kohta pisut infot '; +$string['teacheronly'] = 'ainult $a jaoks'; +$string['teacherroles'] = '$a roll'; +$string['teachers'] = 'Õpetajad'; +$string['textediting'] = 'Teksti redigeerides'; +$string['texteditor'] = 'Kasuta standardseid veebiformaate'; +$string['textformat'] = 'Lihtteksti formaat'; +$string['thanks'] = 'Tänan'; +$string['theme'] = 'Teema'; +$string['themes'] = 'Teemad'; +$string['themesaved'] = 'Uus teema salvestatud'; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'Eesti'; +$string['time'] = 'Aeg'; +$string['timezone'] = 'Ajavöönd'; +$string['to'] = 'Kellele'; +$string['today'] = 'Täna'; +$string['todaylogs'] = 'Tänased logid'; +$string['toomanytoshow'] = 'Kasutajaid on kuvamiseks liiga palju '; +$string['top'] = 'Tipp'; +$string['topic'] = 'Teema'; +$string['topichide'] = 'Peida see teema $a\";eest'; +$string['topicoutline'] = 'Topic outline'; +$string['topicshow'] = 'Näita seda teemat $a'; +$string['total'] = 'Kokku'; +$string['turneditingoff'] = 'Keela redigeerimine '; +$string['turneditingon'] = 'Luba redigeerimist '; +$string['undecided'] = 'Otsustamata'; +$string['unenrol'] = 'Kustuta osalejate hulgast'; +$string['unenrolme'] = 'Kustuta mind $a'; +$string['unenrolsure'] = 'Kas oled veendunud, et soovid kustutada $a sellel kursusel osalejate hulgast?'; +$string['unknowncategory'] = 'Tundmatu kategooria'; +$string['unpacking'] = 'Pakin lahti $a'; +$string['unsafepassword'] = 'Ebaturvaline salasõna - proovi mõnda muud'; +$string['unusedaccounts'] = 'Kontod, mida ei kasutata kauem kui $a päeva, kustutatakse automaatselt nimekirjast '; +$string['unzip'] = 'Paki lahti'; +$string['unzippingbackup'] = 'Paki lahti varukoopia'; +$string['up'] = 'Üles'; +$string['update'] = 'Värskenda'; +$string['updated'] = 'Värskendatud $a'; +$string['updatemyprofile'] = 'Värskenda profiili'; +$string['updatesevery'] = 'Värskendab iga $a sekundi tagant'; +$string['updatethis'] = 'Värskenda see $a'; +$string['updatethiscourse'] = 'Värskenda see kursus'; +$string['updatinga'] = 'Värskendan $a'; +$string['updatingain'] = 'Värskendan a $a->what in $a->in'; +$string['upload'] = 'Laadi üles'; +$string['uploadafile'] = 'Laadi fail üles'; +$string['uploadedfileto'] = 'Üles laaditud $a->file to $a->directory'; +$string['uploadnofilefound'] = 'Ühtegi faili ei leitud - kas olete veendunud, et ikka valisite mõne üleslaadimiseks?'; +$string['uploadproblem'] = 'Faili üleslaadimisel tekkis probleem\'$a\' (võibolla oli fail liiga suur?)'; +$string['uploadthisfile'] = 'Laadi see fail üles'; +$string['uploadusers'] = 'Laadi üles kasutajad'; +$string['user'] = 'Kasutaja'; +$string['userconfirmed'] = 'Kinnitatud $a'; +$string['userdeleted'] = 'See kasutajakonto on kustutatud'; +$string['userdescription'] = 'Kirjeldus'; +$string['userfiles'] = 'Kasutaja failid'; +$string['username'] = 'Kasutajanimi'; +$string['usernameexists'] = 'See kasutajanimi on juba olemas, vali mõni teine'; +$string['usernotconfirmed'] = 'Ei saa kinnitada $a'; +$string['userprofilefor'] = 'Kasutaja profiil $a'; +$string['users'] = 'Kasutajad'; +$string['usersnew'] = 'Uued kasutajad'; +$string['userzones'] = 'Kasutajatsoonid'; +$string['usingexistingcourse'] = 'Kasuta olemasolevat kursust'; +$string['version'] = 'Versioon'; +$string['view'] = 'Vaade'; +$string['webpage'] = 'Veebileht'; +$string['week'] = 'Nädal'; +$string['weekhide'] = 'Peida see nädal$a\";eest'; +$string['weeklyoutline'] = 'Nädala liigendus / kava'; +$string['weekshow'] = 'Näita seda nädalat $a'; +$string['welcometocourse'] = 'Tere tulemast $a'; +$string['welcometocoursetext'] = 'Tere tulemast $a->coursename! + +Esimene asi, mida peaksid tegema, on redigeerida oma profiili lehte kursuse jooksul, et me saaksime sinust rohkem teada + + $a->profileurl'; +$string['whattocallzip'] = 'Mida panna pakidud failinimeks?'; +$string['withchosenfiles'] = 'Valitud failidega'; +$string['withoutuserdata'] = 'ilma kasutaja andmeteta'; +$string['withuserdata'] = 'koos kasutaja andmetega'; +$string['wordforstudent'] = 'Teie sõnum Õpilasele'; +$string['wordforstudenteg'] = ' või Õpilasele, Osalejale jne'; +$string['wordforstudents'] = 'Teie sõnum Õpilastele'; +$string['wordforstudentseg'] = 'või Õpilastele, Osalejatele jne'; +$string['wordforteacher'] = 'Teie sõnum Õpetajale'; +$string['wordforteachereg'] = 'või Õpetajale, Juhendajale, Abistajale jne'; +$string['wordforteachers'] = 'Teie sõnum Õpetajatele'; +$string['wordforteacherseg'] = 'või Õpetajatele, Juhendajatele, Abistajatele jne'; +$string['writingcategoriesandquestions'] = 'Kirjuta kategooriad ja küsimused'; +$string['writingcoursedata'] = 'Kirjuta kursuste info'; +$string['writingeventsinfo'] = 'Kirjuta sündmuste info'; +$string['writinggeneralinfo'] = 'Kirjuta üldinfo'; +$string['writinggroupsinfo'] = 'Kirjuta grupiinfo'; +$string['writingheader'] = 'Kirjuta päis'; +$string['writingloginfo'] = 'Kirjuta logi info'; +$string['writingmoduleinfo'] = 'Kirjuta moodulite info'; +$string['writingscalesinfo'] = 'Kirjuta kaalu info'; +$string['writinguserinfo'] = 'Kirjuta kasutajainfo'; +$string['wrongpassword'] = 'Vale salasõna selle kasutajanime juures'; +$string['yes'] = 'Jah'; +$string['youareabouttocreatezip'] = 'Sa lood Zip arhiivi järgnevatest failidest'; +$string['youaregoingtorestorefrom'] = 'Te taastate sealt:'; +$string['yourlastlogin'] = 'Teie viimane logimine toimus'; +$string['yourself'] = 'teie ise'; +$string['yourteacher'] = 'teie $a'; +$string['zippingbackup'] = 'Pakin kokku varukoopia'; + +?> diff --git a/lang/et/multilang.php b/lang/et/multilang.php index 4ff7b575ba8..3abd4241a57 100644 --- a/lang/et/multilang.php +++ b/lang/et/multilang.php @@ -1,7 +1,7 @@ - + diff --git a/lang/et/pix.php b/lang/et/pix.php index 386b74800fc..13b7484190c 100644 --- a/lang/et/pix.php +++ b/lang/et/pix.php @@ -1,26 +1,26 @@ - + diff --git a/lang/et/quiz.php b/lang/et/quiz.php index b237ae0cd66..de4726f4ef9 100644 --- a/lang/et/quiz.php +++ b/lang/et/quiz.php @@ -1,211 +1,190 @@ -
                .Pärast seda, kui olete valinud või lisanud küsimuse kategooria, saate küsimusi lisada või redigeerida. Võite valida antud küsimustest millise tahes, et see lisada oma küsimustikku, mis paikneb lehekülje teisel poolel. '; -$string['addquestions'] = 'Lisa küsimusi'; -$string['addquestionstoquiz'] = 'Lisa küsimusi käesolevasse küsimustikku'; -$string['addselectedtoquiz'] = 'Lisa valitud punktid küsimustikku'; -$string['aiken'] = 'Aikeni formaat'; -$string['allowreview'] = 'Luba ülevaadet teha'; -$string['alreadysubmitted'] = 'Tõenäoliselt olete selle katse kord juba esitanud'; -$string['alwaysavailable'] = 'Alati saadaval'; -$string['answer'] = 'Vasta '; -$string['answerhowmany'] = 'Üks vastus või valikvastused?'; -$string['answersingleno'] = 'Lubatud valikvastused'; -$string['answersingleyes'] = 'Ainult üks vastus'; -$string['answerswithacceptederrormarginmustbenumeric'] = 'Lubatud veaga vastused peavad olema numbrilises vormis'; -$string['answertoolong'] = 'Vastus on liiga pikk peale rida $a (255 tähemärki max.)'; -$string['aon'] = 'AON formaat'; -$string['attempt'] = 'Katse $a'; -$string['attemptfirst'] = 'Esimene katse'; -$string['attemptincomplete'] = 'Katse ($a poolt) pole veel lõpetatud'; -$string['attemptlast'] = 'Viimane katse'; -$string['attemptquiznow'] = 'Katseta küsimustikule vastamist'; -$string['attempts'] = 'Katsed'; -$string['attemptsallowed'] = 'Katsed lubatud'; -$string['attemptsexist'] = 'Seda küsitlust on juba proovitud täita'; -$string['attemptsunlimited'] = 'Piiramata katsete arv'; -$string['backtoquiz'] = 'Tagasi küsimustikku redigeerima'; -$string['bestgrade'] = 'Kõrgeim hinne'; -$string['blackboard'] = 'Tahvel'; -$string['calculatedquestion'] = 'Küsimust real $a ei ole toetatud. Seda küsimust ignoreeritakse'; -$string['caseno'] = 'Ei, suured/väikesed tähed pole olulised'; -$string['casesensitive'] = 'Tundlikkus suurtele/väikestele tähtedele'; -$string['caseyes'] = 'Jah, suur/väike täht on oluline '; -$string['categories'] = 'Kategooria'; -$string['category'] = 'Kategooriad'; -$string['categoryinfo'] = 'Kategooriainfo'; -$string['categorymove'] = 'Kategooria \'$a->name\' sisaldab $a->count küsimusi. Palun vali teine kategooria, et need teisldada.'; -$string['categorymoveto'] = 'Teisalda need sellesse kategooriasse'; -$string['choice'] = 'Valik'; -$string['choices'] = 'Saadaval olevad valikud'; -$string['confirmstartattempt'] = 'Sellel testil on ajapiirang. Kas oled kindel, et soovid alustada?'; -$string['correctanswer'] = 'Õige vastus'; -$string['correctanswers'] = 'Õiged vastused'; -$string['corrresp'] = 'Õige vastus'; -$string['countdown'] = 'stardiloendus'; -$string['countdownfinished'] = 'Küsimustik sulgub, sa peaksid oma vastuse nüüd saatma.'; -$string['countdowntenminutes'] = 'Küsimustik sulgub 10 minuti pärast.'; -$string['coursetestmanager'] = 'Kursuse testide juhataja formaat'; -$string['createmultiple'] = 'Loo valikvastused'; -$string['createnewquestion'] = 'Loo uus küsimus'; -$string['custom'] = 'Kohanda formaati/formaadi kohandus'; -$string['daysavailable'] = 'Saadavalolevad päevad'; -$string['default'] = 'Vaikevalik/vaikeseade'; -$string['defaultgrade'] = 'Vaikimisi küsimuse hinne'; -$string['defaultinfo'] = 'Vaikeseade küsimuste kategooriate kohta.'; -$string['deleteattemptcheck'] = 'Kas oled täiesti kindel, et soovid need proovid täielikult kustutada'; -$string['deletequestioncheck'] = 'Kas olete täiesti veendunud, et soovite kustutada \'$a\'?'; -$string['description'] = 'Kirjeldus'; -$string['discrimination'] = 'Kirjaklamber'; -$string['eachattemptbuildsonthelast'] = 'Iga proov põhineb eelmisel'; -$string['editcategories'] = 'Redigeeri kategooriaid'; -$string['editingdescription'] = 'Kirjelduse muutmine'; -$string['editingmatch'] = 'Sobiva küsimuse redigeerimine'; -$string['editingmultianswer'] = 'Seesolevate vastuste redigeerimine (Sulge)'; -$string['editingmultichoice'] = 'Valikvastusega küsimuse redigeerimine'; -$string['editingnumerical'] = 'Numbrilise küsimuse redigeerimine'; -$string['editingquestion'] = 'Küsimuse redigeerimine'; -$string['editingquiz'] = 'Küsimustiku redigeerimine'; -$string['editingrandom'] = 'Juhusliku küsimuse redigeerimine'; -$string['editingrandomsamatch'] = 'Juhusliku lühivastusega sobiva küsimuse redigeerimine'; -$string['editingshortanswer'] = 'Lühivastusega küsimuse redigeerimine'; -$string['editingtruefalse'] = 'Õige/vale küsimuse redigeerimine'; -$string['editquestions'] = 'Muuda küsimust'; -$string['errorsdetected'] = 'leiti $a viga'; -$string['exportfilename'] = 'küsitlus'; -$string['exportname'] = 'Faili nimi'; -$string['exportnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['exportquestions'] = 'Ekspordi küsimused faili'; -$string['false'] = 'Vale'; -$string['feedback'] = 'Tagasiside'; -$string['fileformat'] = 'Faili formaat'; -$string['filloutoneanswer'] = 'Vähemalt üks vastuse variant peab olema antud. Tühjaks jäetud lünki ei võeta arvesse.'; -$string['filloutthreequestions'] = 'Peate vastama vähemalt kolmele küsimusele Tühjaks jäetud lünki ei võeta arvesse.'; -$string['fillouttwochoices'] = 'Vähemalt kaks valikuvarianti peab olems antud. Tühjad lüngad ei lähe arvesse.'; -$string['fractionsaddwrong'] = 'Teie poolt valitud positiivsete hinnete summa ei ulatu 100%% -
                See ulatub aga $a%% -
                Kas soovite minna tagasi ja parandada küsimust?'; -$string['fractionsnomax'] = 'Üks vastustest peaks olema 100%%, nii et oleks -
                võimalik saada selle küsimuse eest täishinne. -
                Kas soovite minna tagasi ja parandada küsimust?'; -$string['gift'] = 'KINKE formaat'; -$string['gradeaverage'] = 'Keskmine hinne'; -$string['gradehighest'] = 'Kõrgeim hinne'; -$string['grademethod'] = 'Hindamismetoodika'; -$string['guestsno'] = 'Vabandust, külalised ei saa küsimustikke näha ega neile vastata'; -$string['imagedisplay'] = 'Pilt kuvamiseks'; -$string['imagemissing'] = 'Pilt pole kättesaadav real $a. Faili nime ignoreeritakse'; -$string['importquestions'] = 'Impordi küsimus(ed) failist'; -$string['indivresp'] = 'Igale elemendile antud individuaalsed vastused'; -$string['introduction'] = 'Sissejuhatus'; -$string['itemanal'] = 'Elementide vastuste analüüs'; -$string['listitems'] = 'Küsitluse elementide nimekiri'; -$string['marks'] = 'Hinded'; -$string['match'] = 'Sobiv'; -$string['matchanswer'] = 'Sobiv vastus'; -$string['minutes'] = 'Minutit'; -$string['missinganswer'] = 'Liiga vähe :ANSWER, :Lx, :Rx vasteid küsimusele real $a. Pead andma vähemalt 2 võimalikku vastet'; -$string['missingcorrectanswer'] = 'Õige vastus peab olema antud'; -$string['missingname'] = 'Puuduv küsimuse nimi'; -$string['missingquestion'] = 'Puuduv küsimuse silt peale rida $a'; -$string['missingquestiontext'] = 'Puuduv küsimuse tekst'; -$string['missingword'] = 'Puuduv sõna formaat'; -$string['modulename'] = 'Küsimustik'; -$string['modulenameplural'] = 'Küsimustikud'; -$string['multianswer'] = 'Seesolevad vastused (Sulge)'; -$string['multichoice'] = 'Valikvastused'; -$string['name'] = 'Nimi'; -$string['noanswers'] = 'Ühtegi vastust pole valitud!'; -$string['noattempts'] = 'Seda küsimustikku pole keegi proovinud täita'; -$string['nomoreattempts'] = 'Rohkem katseid pole lubatud'; -$string['noquestions'] = 'Ühtegi küsimust pole veel lisatud'; -$string['noresponse'] = 'Ei vasta'; -$string['noreview'] = 'Teil pole lubatud seda küsimustikku vaadata'; -$string['noreviewuntil'] = 'Teil pole lubatud seda küsimustikku vaadata enne $a'; -$string['noscript'] = 'Jätkamiseks peab JavaScript olema lubatud!'; -$string['notenoughanswers'] = 'Seda tüüpi küsimus vajab vähemalt $a vastust'; -$string['notenoughsubquestions'] = 'Alaküsimusi pole piisavalt defineeritud!
                -Kas soovite tagasi minna ja küsimusele uuesti vastata?'; -$string['numerical'] = 'Numbriline'; -$string['paragraphquestion'] = 'Lõigu küsimus real $a ei ole toetatud. Seda küsimust ignoreeritakse '; -$string['passworderror'] = 'Sisestatud parool on vale'; -$string['percentcorrect'] = 'Täpsusprotsent'; -$string['publish'] = 'Avalda'; -$string['qti'] = 'IMS QTI formaat'; -$string['question'] = 'Küsimus'; -$string['questioninuse'] = 'See küsimus \'$a\' on hetkel kasutusel:'; -$string['questionname'] = 'Küsimuse nimetus'; -$string['questionnametoolong'] = 'Küsimuse nimi on liiga pikk real $a (255 tähemärki max). Seda kärbiti.'; -$string['questions'] = 'Küsimused'; -$string['quizavailable'] = 'Küsimustik on saadaval kuni: $a'; -$string['quizclose'] = 'Sulge küsimustik'; -$string['quizclosed'] = 'See küsimustik suletakse $a'; -$string['quizcloses'] = 'Küsimustik sulgub'; -$string['quiznotavailable'] = 'see küsimustik pole saadaval: $a'; -$string['quizopen'] = 'Ava küsimustik'; -$string['quizopens'] = 'Küsimustik avaneb'; -$string['quiztimelimit'] = 'Aega on: $a'; -$string['quiztimer'] = 'Küsimustiku taimer'; -$string['random'] = 'Juhuslik küsimus'; -$string['randomcreate'] = 'Tekita juhuslikke küsimusi'; -$string['randomsamatch'] = 'Juhuslike lühivastuste sobitamine'; -$string['randomsamatchcreate'] = 'Tekitage juhuslike lühivastustega sobitamise küsimusi'; -$string['randomsamatchintro'] = 'Igale järgnevale küsimusele vastamiseks valige menüüst sobiv vastus.'; -$string['randomsamatchnumber'] = 'Valida olevate küsimuste arv'; -$string['readytosend'] = 'Olete jõudnud selleni, et saadad kogu oma küsimustiku hindamiseks. Kas olete veendunud, et soovite jätkata ?'; -$string['recentlyaddedquestion'] = 'Hiljuti lisatud küsimus!'; -$string['regrade'] = 'Hinda kõik vastused uuesti'; -$string['regradecomplete'] = 'Kõik katsed on uuesti hinnatud'; -$string['regradecount'] = '$a->muudetud on $a->hinnet …katsest '; -$string['rename'] = 'Nimeta ümber'; -$string['report'] = 'Raportid'; -$string['reportfullstat'] = 'Detailne statistika'; -$string['reportmulti_percent'] = 'Multiprotsentuaalne'; -$string['reportmulti_q_x_student'] = 'Mitme-Õpilase valikud'; -$string['reportmulti_resp'] = 'Üksikvastused'; -$string['reportoverview'] = 'Ülevaade'; -$string['reportregrade'] = 'Kordushindamisi'; -$string['reportsimplestat'] = 'Lihtne statistika'; -$string['requirepassword'] = 'Nõua parooli'; -$string['requirepasswordmessage'] = 'Selleks, et seda küsitlust täita, peab Sul olema parool'; -$string['requiresubnet'] = 'Nõua võrguaadressi'; -$string['review'] = 'Ülevaade'; -$string['save'] = 'Salvesta'; -$string['savegrades'] = 'Salvesta hinded'; -$string['savemyanswers'] = 'Salvesta mu vastused'; -$string['savequiz'] = 'Salvesta kogu käesolev küsimustik'; -$string['score'] = 'Raw score Punktide algsumma'; -$string['select'] = 'Vali'; -$string['selectall'] = 'Vali kõik'; -$string['selectcategoryabove'] = 'Vali ülalt kategooria'; -$string['shortanswer'] = 'Lühivastus'; -$string['show'] = 'Näita'; -$string['showcorrectanswer'] = 'Kas näitan tagasisides õigeid vastuseid?'; -$string['showfeedback'] = 'Kas näitan pärast vastamist tagasisidet?'; -$string['shuffleanswers'] = 'Sega vastuseid'; -$string['shufflequestions'] = 'Sega küsimusi'; -$string['subneterror'] = 'Kahjuks saab sellele küsimusele ligi ainult teatud arvutite tagant. Sinu praegune arvuti pole lubatud nimekirjas.'; -$string['time'] = 'Aeg'; -$string['timecompleted'] = 'Lõpetatud'; -$string['timeleft'] = 'Aega jäänud'; -$string['timelimit'] = 'Aja piirang'; -$string['timelimitexeeded'] = 'Sorri! Aeg ületatud!'; -$string['timesup'] = 'Aeg on läbi!'; -$string['timetaken'] = 'Aega võetud'; -$string['toomanyrandom'] = 'Vajaminev juhuslike /huupi küsimuste hulk on suurem kui selles kategoorias sisalduv! ($a)'; -$string['true'] = 'Õige'; -$string['truefalse'] = 'Õige/Vale'; -$string['type'] = 'Trüki'; -$string['unknowntype'] = 'Küsimuse tüüp real $a ei ole toetatud. Küsimust ignoreeritakse'; -$string['viewallanswers'] = 'Vaata $a täidetud küsimustikke'; -$string['viewallreports'] = 'Vaata $a proovide kokkuvõtet'; -$string['warningsdetected'] = '$a hoiatus(ed) leitud'; -$string['webct'] = 'WebCT formaat'; -$string['withsummary'] = 'koos kokkuvõtte statistikaga'; -$string['wronggrade'] = 'Vale hinne (peale $a rida) :'; -$string['yourfinalgradeis'] = 'Teie lõpphinne selle küsimustiku eest on $a'; - -?> +
                .Pärast seda, kui olete valinud või lisanud küsimuse kategooria, saate küsimusi lisada või redigeerida. Võite valida antud küsimustest millise tahes, et see lisada oma küsimustikku, mis paikneb lehekülje teisel poolel. '; +$string['addquestions'] = 'Lisa küsimusi'; +$string['addquestionstoquiz'] = 'Lisa küsimusi käesolevasse küsimustikku'; +$string['addselectedtoquiz'] = 'Lisa valitud punktid küsimustikku'; +$string['aiken'] = 'Aikeni formaat'; +$string['allowreview'] = ' Luba ülevaadet teha'; +$string['alreadysubmitted'] = 'Tõenäoliselt olete selle katse kord juba esitanud'; +$string['alwaysavailable'] = 'Alati saadaval'; +$string['answer'] = 'Vasta '; +$string['answerhowmany'] = 'Üks vastus või valikvastused?'; +$string['answersingleno'] = 'Lubatud valikvastused'; +$string['answersingleyes'] = 'Ainult üks vastus'; +$string['answerswithacceptederrormarginmustbenumeric'] = 'Lubatud veaga vastused peavad olema numbrilises vormis'; +$string['answertoolong'] = 'Vastus on liiga pikk peale rida $a (255 tähemärki max.)'; +$string['aon'] = 'AON formaat'; +$string['attempt'] = 'Katse $a'; +$string['attemptfirst'] = 'Esimene katse'; +$string['attemptincomplete'] = 'Katse ($a poolt) pole veel lõpetatud'; +$string['attemptlast'] = 'Viimane katse'; +$string['attemptquiznow'] = 'Katseta küsimustikule vastamist'; +$string['attempts'] = 'Katsed'; +$string['attemptsallowed'] = 'Katsed lubatud'; +$string['attemptsunlimited'] = 'Piiramata katsed'; +$string['backtoquiz'] = 'Tagasi küsimustikku redigeerima'; +$string['bestgrade'] = 'Kõrgeim hinne'; +$string['blackboard'] = 'Tahvel'; +$string['calculatedquestion'] = 'Küsimust real $a ei ole toetatud. Seda küsimust ignoreeritakse'; +$string['caseno'] = 'Ei, suured/väikesed tähed pole olulised'; +$string['casesensitive'] = 'Tundlikkus suurtele/väikestele tähtedele'; +$string['caseyes'] = 'Jah,suur/väike täht on oluline '; +$string['categories'] = 'Kategooria'; +$string['category'] = 'Kategooriad'; +$string['categoryinfo'] = 'Kategooriainfo'; +$string['categorymove'] = 'Kategooria \'$a->name\' sisaldab $a->count küsimusi. Palun vali teine kategooria, et need teisldada .'; +$string['categorymoveto'] = 'Teisalda need sellesse kategooriasse'; +$string['choice'] = 'Valik'; +$string['choices'] = 'Saadaval olevad valikud'; +$string['correctanswer'] = 'Õige vastus'; +$string['correctanswers'] = 'Õiged vastused'; +$string['corrresp'] = 'Õige vastus'; +$string['countdown'] = 'stardiloendus'; +$string['countdownfinished'] = 'Küsimustik sulgub, sa peaksid oma vastuse nüüd saatma.'; +$string['countdowntenminutes'] = 'Küsimustik sulgub 10.minuti pärast.'; +$string['coursetestmanager'] = 'Kursuse testide juhataja formaat'; +$string['createmultiple'] = 'Loo valikvastused'; +$string['createnewquestion'] = 'Loo uus küsimus'; +$string['custom'] = 'Custom format Kohanda formaati/formaadi kohandus'; +$string['daysavailable'] = 'Saadavalolevad päevad'; +$string['default'] = 'Vaikevalik/vaikeseade'; +$string['defaultgrade'] = 'Default question grade Vaikeseade …….'; +$string['defaultinfo'] = 'Vaikeseade küsimuste kategooriate kohta .'; +$string['deleteattemptcheck'] = 'Kas oled täiesti kindel, et soovid need proovid täielikult kustutada'; +$string['deletequestioncheck'] = 'Kas olete täiesti veendunud, et soovite kustutada \'$a\'?'; +$string['description'] = 'Kirjeldus'; +$string['discrimination'] = 'Kirjaklamber'; +$string['eachattemptbuildsonthelast'] = 'Iga proov põhineb eelmisel'; +$string['editcategories'] = 'Redigeeri kategooriaid'; +$string['editingdescription'] = 'Kirjelduse muutmine'; +$string['editingmatch'] = 'Sobiva küsimuse redigeerimine'; +$string['editingmultianswer'] = 'Seesolevate vastuste redigeerimine (Sulge)'; +$string['editingmultichoice'] = 'Valikvastusega küsimuse redigeerimine'; +$string['editingnumerical'] = 'Numbrilise küsimuse redigeerimine'; +$string['editingquestion'] = 'Küsimuse redigeerimine'; +$string['editingquiz'] = 'Küsimustiku redigeerimine'; +$string['editingrandom'] = 'Juhusliku küsimuse redigeerimine'; +$string['editingrandomsamatch'] = 'Juhusliku lühivastusega sobiva küsimuse redigeerimine'; +$string['editingshortanswer'] = 'Lühivastusega küsimuse redigeerimine'; +$string['editingtruefalse'] = 'Õige/vale küsimuse redigeerimine'; +$string['editquestions'] = 'Muuda küsimust'; +$string['errorsdetected'] = 'leiti $a viga'; +$string['false'] = 'Vale'; +$string['feedback'] = 'Tagasiside'; +$string['fileformat'] = 'Faili formaat'; +$string['filloutoneanswer'] = 'Peate vastama vähemalt ühele küsimusele. Tühjaks jäetud lünki ei võeta arvesse.'; +$string['filloutthreequestions'] = 'Peate vastama vähemalt kolmele küsimusele Tühjaks jäetud lünki ei võeta arvesse.'; +$string['fillouttwochoices'] = 'Peate valima vähemalt ühe vastuse. Tühjad lüngad ei lähe arvesse.'; +$string['fractionsaddwrong'] = 'Teie poolt valitud positiivsete hinnete summa ei ulatu 100%% +
                See ulatub aga $a%% +
                Kas soovite minna tagasi ja vastata küsimusele uuesti?'; +$string['fractionsnomax'] = 'Üks vastustest peaks olema 100%%, nii et oleks +
                võimalik saada selle küsimuse eest täishinne. +
                Kas soovite minna tagasi ja vastata uuesti?'; +$string['gift'] = 'KINKE formaat'; +$string['gradeaverage'] = 'Keskmine hinne'; +$string['gradehighest'] = 'Kõrgeim hinne'; +$string['grademethod'] = 'Hindamismetoodika'; +$string['guestsno'] = 'Vabandust, külalised ei saa küsimustikke näha ega ka neile vastata'; +$string['imagedisplay'] = 'Kujund kuvamiseks'; +$string['imagemissing'] = 'Pilt pole kättesaadav real $a. Faili nime ignoreeritakse'; +$string['importquestions'] = 'Teisenda küsimus failist'; +$string['indivresp'] = 'Igale elemendile antud individuaalsed vastused'; +$string['introduction'] = 'Sissejuhatus'; +$string['itemanal'] = 'Elementide vastuste analüüs'; +$string['listitems'] = 'Küsitluse elementide nimekiri'; +$string['marks'] = 'Hinded'; +$string['match'] = 'Sobiv'; +$string['matchanswer'] = 'Sobiv vastus'; +$string['missinganswer'] = 'Liiga vähe :ANSWER, :Lx, :Rx vasteid küsimusele real $a. Pead andma vähemalt 2 võimalikku vastet'; +$string['missingcorrectanswer'] = 'Õige vastus peab olema täpselt määratletud'; +$string['missingname'] = 'Puuduv küsimuse nimi'; +$string['missingquestion'] = 'Puuduv küsimuse sil peale rida $a'; +$string['missingquestiontext'] = 'Puuduv küsimuse tekst'; +$string['missingword'] = 'Puuduv sõna formaat'; +$string['modulename'] = 'Küsimustik'; +$string['modulenameplural'] = 'Küsimustikud'; +$string['multianswer'] = 'Seesolevad vastused (Sulge)'; +$string['multichoice'] = 'Valikvastused'; +$string['name'] = 'Nimi'; +$string['noanswers'] = 'Ühtegi vastust pole valitud!'; +$string['noattempts'] = 'Seda küsimustikku pole keegi proovinud täita'; +$string['nomoreattempts'] = 'Rohkem katseid pole lubatud'; +$string['noquestions'] = 'Ühtegi küsimust pole veel lisatud'; +$string['noresponse'] = 'Ei vasta'; +$string['noreview'] = 'Teil pole lubatud seda küsimustikku vaadata'; +$string['noreviewuntil'] = 'Teil pole lubatud seda küsimustikku vaadata enne $a'; +$string['notenoughsubquestions'] = 'Alaküsimusi pole piisavalt defineeritud!
                +Kas soovite tagasi minna ja küsimusele uuesti vastata?'; +$string['numerical'] = 'Numbriline'; +$string['paragraphquestion'] = 'Lõigu küsimus real $a ei ole toetatud. Seda küsimust ignoreeritakse '; +$string['percentcorrect'] = 'Täpsusprotsent'; +$string['publish'] = 'Avalda'; +$string['qti'] = 'IMS QTI formaat'; +$string['question'] = 'Küsimus'; +$string['questioninuse'] = 'See küsimus \'$a\' on hetkel kasutusel:'; +$string['questionname'] = 'Küsimuse nimetus'; +$string['questionnametoolong'] = 'Küsimuse nimi on liiga pikk real $a (255 tähemärki max.). Seda kärbiti.'; +$string['questions'] = 'Küsimused'; +$string['quizavailable'] = 'Küsimustik on saadaval kuni: $a'; +$string['quizclose'] = 'Sulge küsimustik'; +$string['quizclosed'] = 'See küsimustik suletakse $a'; +$string['quizcloses'] = 'Küsimustik sulgub'; +$string['quiznotavailable'] = 'see küsimustik pole saadaval: $a'; +$string['quizopen'] = 'Avage küsimustik'; +$string['random'] = 'Random set Juhuslik/huupi valik/komplekt??????'; +$string['randomcreate'] = 'Create Random Questions Tekitage juhuslikke küsimusi'; +$string['randomsamatch'] = 'Juhuslike lühivastuste sobitamine'; +$string['randomsamatchcreate'] = 'Tekitage juhuslike lühivastustega sobitamise küsimusi'; +$string['randomsamatchintro'] = 'Igale järgnevale küsimusele vastamiseks valige menüüst sobiv vastus.'; +$string['randomsamatchnumber'] = 'Valida olevate küsimuste arv'; +$string['readytosend'] = 'Olete jõudnud selleni, et saadad kogu oma küsimustiku hindamiseks. Kas olete veendunud, et soovite jätkata ?'; +$string['recentlyaddedquestion'] = 'Hiljuti lisatud küsimus!'; +$string['regrade'] = 'Hinda kõik vastused uuesti'; +$string['regradecomplete'] = 'Kõik katsed on uuesti hinnatud'; +$string['regradecount'] = '$a->muudetud on $a->hinnet …katsest '; +$string['rename'] = 'Nimeta ümber'; +$string['report'] = 'Raportid'; +$string['reportfullstat'] = 'Detailne statistika'; +$string['reportmulti_percent'] = 'Multiprotsentuaalne'; +$string['reportmulti_q_x_student'] = 'Mitme-Õpilase valikud'; +$string['reportmulti_resp'] = 'Üksikvastused'; +$string['reportoverview'] = 'Ülevaade'; +$string['reportregrade'] = 'Kordushindamisi'; +$string['reportsimplestat'] = 'Lihtne statistika'; +$string['review'] = 'Ülevaade'; +$string['save'] = 'Salvesta'; +$string['savegrades'] = 'Salvesta hinded'; +$string['savemyanswers'] = 'Salvesta mu vastused'; +$string['savequiz'] = 'Salvesta kogu käesolev küsimustik'; +$string['score'] = 'Raw score Punktide algsumma'; +$string['select'] = 'Vali'; +$string['selectall'] = 'Vali kõik'; +$string['selectcategoryabove'] = 'Vali ülalt kategooria'; +$string['shortanswer'] = 'Lühivastus'; +$string['show'] = 'Näita'; +$string['showcorrectanswer'] = 'Kas näitan tagasisides õigeid vastuseid?'; +$string['showfeedback'] = 'Kas näitan pärast vastamist tagasisidet?'; +$string['shuffleanswers'] = 'Sega vastuseid'; +$string['shufflequestions'] = 'Sega küsimusi'; +$string['time'] = 'Aeg'; +$string['timecompleted'] = 'Lõpetatud'; +$string['timetaken'] = 'Aega võetud'; +$string['toomanyrandom'] = 'Vajaminev juhuslike /huupi küsimuste hulk on suurem kui selles kategoorias sisalduv! ($a)'; +$string['true'] = 'Õige'; +$string['truefalse'] = 'Õige/Vale'; +$string['type'] = 'Trüki'; +$string['unknowntype'] = 'Küsimuse tüüp real $a ei ole toetatud. Küsimust ignoreeritakse'; +$string['viewallanswers'] = 'Vaata $a täidetud küsimustikke'; +$string['viewallreports'] = 'Vaata $a proovide kokkuvõtet'; +$string['warningsdetected'] = '$a hoiatus(ed) leitud'; +$string['webct'] = 'WebCT formaat'; +$string['withsummary'] = 'koos kokkuvõtte statistikaga'; +$string['wronggrade'] = 'Vale hinne (peale $a rida) :'; +$string['yourfinalgradeis'] = 'Teie lõpphinne selle küsimustiku eest on $a'; + +?> diff --git a/lang/et/resource.php b/lang/et/resource.php index 61ccb805bb7..acb4b910585 100644 --- a/lang/et/resource.php +++ b/lang/et/resource.php @@ -1,65 +1,63 @@ -File Manager.'; -$string['notypechosen'] = 'Pead valima tüübi. Vajuta \"tagasi\" klahvile ja proovi uuesti.'; -$string['popupresource'] = 'See õppematerjal avaneb hüpikaknas'; -$string['popupresourcelink'] = 'Kui ei saanud, kliki siia: $a'; -$string['resourcetype'] = 'Õppematerjali tüüp'; -$string['resourcetype1'] = 'Viide'; -$string['resourcetype2'] = 'Veebilehekülg'; -$string['resourcetype3'] = 'Üles laaditud fail'; -$string['resourcetype4'] = 'Lihttekst'; -$string['resourcetype5'] = 'Veebilink'; -$string['resourcetype6'] = 'HTML tekst'; -$string['resourcetype7'] = 'Programm'; -$string['resourcetype8'] = 'Wiki tekst'; -$string['resourcetype9'] = 'Kataloog'; - -?> +'; +$string['filename'] = 'Faili nimi'; +$string['fulltext'] = 'Kogu tekst'; +$string['htmlfragment'] = 'HTML fragment'; +$string['modulename'] = 'Ressurss'; +$string['modulenameplural'] = 'Ressursid'; +$string['neverseen'] = 'Tundmatu'; +$string['newdirectories'] = 'Kuva kaustade lingid'; +$string['newfullscreen'] = 'Täisekraanis'; +$string['newheight'] = 'Akna kõrgus vaikimisi (pikslites)'; +$string['newlocation'] = 'Kuva asukohariba'; +$string['newmenubar'] = 'Kuva menüüriba'; +$string['newresizable'] = 'Akna suuruse muutmine lubatud'; +$string['newscrollbars'] = 'Akna kerimine lubatud'; +$string['newstatus'] = 'Kuva olekuriba'; +$string['newtoolbar'] = 'Kuva tööriistariba'; +$string['newwidth'] = 'Aknalaius (pikslites)'; +$string['newwindow'] = 'Uus aken'; +$string['newwindowopen'] = 'Ava resurss hüpikaknas'; +$string['note'] = 'Märkus'; +$string['notefile'] = 'Kui soovid kursusele rohkem faile üles laadida (nagu nad listis esinevad), kasuta +File Manager.'; +$string['notypechosen'] = 'Pead valima tüübi. Vajuta \"tagasi\" klahvile ja proovi uuesti.'; +$string['popupresource'] = 'See resurss avaneb hüpikaknas'; +$string['popupresourcelink'] = 'Kui ei saanud, kliki siia: $a'; +$string['resourcetype'] = 'Ressursi tüüp'; +$string['resourcetype1'] = 'Viide'; +$string['resourcetype2'] = 'Veebilehekülg'; +$string['resourcetype3'] = 'Üles laaditud fail'; +$string['resourcetype4'] = 'Lihttekst'; +$string['resourcetype5'] = 'Veebilink'; +$string['resourcetype6'] = 'HTML tekst'; +$string['resourcetype7'] = 'Programm'; +$string['resourcetype8'] = 'Wiki tekst'; + +?> diff --git a/lang/et/survey.php b/lang/et/survey.php index 3e5a151b232..4af1b22d496 100644 --- a/lang/et/survey.php +++ b/lang/et/survey.php @@ -1,209 +1,209 @@ - eelistatud (ideaalset) ja tegelikku kogemust käesolevas peatükis. - -Siin pole \"õigeid\" ja \"valesid\" vastuseid, meid huvitab üksnes teie arvamus - -Kinnitame, et teie vastused jäävad konfidentsiaalinfoks ja teie hinnet need ei mõjuta - -Teie läbimõeldud vastused aitavad meil selle peatüki online edastust tulevikus täiustada. - -Palju tänu.'; -$string['collesapname'] = 'COLLES (Eelistatud ja Tegelik)'; -$string['collesm1'] = 'Asjakohasus'; -$string['collesm1short'] = 'Asjakohasus'; -$string['collesm2'] = 'Mõtisklemine'; -$string['collesm2short'] = 'Mõtisklemine'; -$string['collesm3'] = 'Interaktiivsus'; -$string['collesm3short'] = 'interaktiivsus'; -$string['collesm4'] = 'Nõustaja toetus'; -$string['collesm4short'] = 'Nõustaja toetus'; -$string['collesm5'] = 'Grupi toetus'; -$string['collesm5short'] = 'Grupi toetus'; -$string['collesm6'] = 'Tõlgendus'; -$string['collesm6short'] = 'Tõlgendus'; -$string['collesmintro'] = 'Selles online peatükis...'; -$string['collespintro'] = 'Selle küsitluse eesmärk on aidata meil mõista, kuidas te hindate online õppimiskogemust - -Kõik allpool esitatud 24 väidet paluvad võrrelda teie eelistatud (ideaalset) ja tegelikku kogemust käesolevas peatükis. - -Siin pole \"õigeid\" ja \"valesid\" vastuseid, meid huvitab üksnes teie arvamus -Kinnitame, et teie vastused jäävad konfidentsiaalinfoks ja teie hinnet need ei mõjuta - -Teie läbimõeldud vastused aitavad meil selle peatüki online esitust tulevikus täiustada. - -Palju tänu.'; -$string['collespname'] = 'COLLES (Eelistatud)'; -$string['done'] = 'Valmis'; -$string['download'] = 'Laadi alla'; -$string['downloadexcel'] = 'Laadi andmed alla Exceli tabeli kujul'; -$string['downloadinfo'] = 'Võite laadida kogu algandmete hulga selle küsitluse tarvis, analüüsimiseks Exceli, SPSS või mõne muu paketi abil.'; -$string['downloadtext'] = ' Laadi andmed lihttektifailina'; -$string['editingasurvey'] = 'Küsitluse toimetamine'; -$string['guestsnotallowed'] = 'Külalisel pole lubatud küsitluses osaleda'; -$string['helpsurveys'] = 'Abi küsitluse erinevate tüüpide osas'; -$string['howlong'] = 'Kui kaua aega kulus küsitluse täitmiseks?'; -$string['howlongoptions'] = 'vähem kui 1 min,1-2 min,2-3 min,3-4 min,4-5-min,5-10 min,rohkem kui 10'; -$string['ifoundthat'] = 'Leidsin, et'; -$string['introtext'] = 'Sissejuhatus'; -$string['ipreferthat'] = 'Eelistan, et'; -$string['modulename'] = 'Küsitlus'; -$string['modulenameplural'] = 'Küsitlused'; -$string['name'] = 'Nimi'; -$string['newsurveyresponses'] = 'Uued küsitluste vastused'; -$string['nobodyyet'] = 'Seda küsitlust pole veel keegi täitnud'; -$string['notdone'] = 'Pole veel tehtud'; -$string['notes'] = 'Teie isiklik analüüs ja märkused'; -$string['othercomments'] = 'On teil veel mingeid kommentaare?'; -$string['peoplecompleted'] = '$a inimest on selle küsitluse praeguseks täitnud'; -$string['preferred'] = 'Eelistused'; -$string['preferredclass'] = 'Eelistatud klass'; -$string['preferredstudent'] = '$a eelistatud'; -$string['question'] = 'Küsimus'; -$string['questions'] = 'Küsimused'; -$string['questionsnotanswered'] = 'Osad valikvastustega küsimused on vastamata.'; -$string['report'] = 'Küsitluse raport'; -$string['savednotes'] = 'teie märkused on salvestatud'; -$string['scaleagree5'] = 'Olen täiesti vastu, Olen kuigivõrd vastu; Pole ei poolt ega vastu, Olen kuigivõrd poolt, Olen täiesti poolt'; -$string['scales'] = 'Skaala'; -$string['scaletimes5'] = 'Peaaegu mitte kunagi, Harva, Mõnikord, Sageli, Peaaegu alati'; -$string['seemoredetail'] = 'Kliki siia, et täpsemalt näha'; -$string['selectedquestions'] = 'Valitud küsimused skaalalt, kõik õpilased'; -$string['summary'] = 'Kokkuvõte'; -$string['surveycompleted'] = 'Olete küsitluse lõpetanud. Allpool olev graafik kujutab teie tulemuste kokkuvõtte võrdlust klassi keskmisega.'; -$string['surveyname'] = 'Küsitluse nimi'; -$string['surveysaved'] = 'Küsitlus salvestatud'; -$string['surveytype'] = 'Küsitluse tüüp'; -$string['thanksforanswers'] = 'Täname küsitlusele vastamast, $a'; -$string['time'] = 'Aeg'; -$string['viewsurveyresponses'] = 'Vaata $a küsitluse vastused'; - -?> + eelistatud (ideaalset) ja tegelikku kogemust käesolevas peatükis. + +Siin pole \"õigeid\" ja \"valesid\" vastuseid, meid huvitab üksnes teie arvamus + +Kinnitame, et teie vastused jäävad konfidentsiaalinfoks ja teie hinnet need ei mõjuta + +Teie läbimõeldud vastused aitavad meil selle peatüki online edastust tulevikus täiustada. + +Palju tänu.'; +$string['collesapname'] = 'COLLES (Eelistatud ja Tegelik)'; +$string['collesm1'] = 'Asjakohasus'; +$string['collesm1short'] = 'Asjakohasus'; +$string['collesm2'] = 'Mõtisklemine'; +$string['collesm2short'] = 'Mõtisklemine'; +$string['collesm3'] = 'Interaktiivsus'; +$string['collesm3short'] = 'interaktiivsus'; +$string['collesm4'] = 'Nõustaja toetus'; +$string['collesm4short'] = 'Nõustaja toetus'; +$string['collesm5'] = 'Grupi toetus'; +$string['collesm5short'] = 'Grupi toetus'; +$string['collesm6'] = 'Tõlgendus'; +$string['collesm6short'] = 'Tõlgendus'; +$string['collesmintro'] = 'Selles online peatükis...'; +$string['collespintro'] = 'Selle küsitluse eesmärk on aidata meil mõista, kuidas te hindate online õppimiskogemust + +Kõik allpool esitatud 24 väidet paluvad võrrelda teie eelistatud (ideaalset) ja tegelikku kogemust käesolevas peatükis. + +Siin pole \"õigeid\" ja \"valesid\" vastuseid, meid huvitab üksnes teie arvamus +Kinnitame, et teie vastused jäävad konfidentsiaalinfoks ja teie hinnet need ei mõjuta + +Teie läbimõeldud vastused aitavad meil selle peatüki online esitust tulevikus täiustada. + +Palju tänu.'; +$string['collespname'] = 'COLLES (Eelistatud)'; +$string['done'] = 'Valmis'; +$string['download'] = 'Laadi alla'; +$string['downloadexcel'] = 'Laadi andmed alla Exceli tabeli kujul'; +$string['downloadinfo'] = 'Võite laadida kogu algandmete hulga selle küsitluse tarvis, analüüsimiseks Exceli, SPSS või mõne muu paketi abil.'; +$string['downloadtext'] = ' Laadi andmed lihttektifailina'; +$string['editingasurvey'] = 'Küsitluse toimetamine'; +$string['guestsnotallowed'] = 'Külalisel pole lubatud küsitluses osaleda'; +$string['helpsurveys'] = 'Abi küsitluse erinevate tüüpide osas'; +$string['howlong'] = 'Kui kaua aega kulus küsitluse täitmiseks?'; +$string['howlongoptions'] = 'vähem kui 1 min,1-2 min,2-3 min,3-4 min,4-5-min,5-10 min,rohkem kui 10'; +$string['ifoundthat'] = 'Leidsin, et'; +$string['introtext'] = 'Sissejuhatus'; +$string['ipreferthat'] = 'Eelistan, et'; +$string['modulename'] = 'Küsitlus'; +$string['modulenameplural'] = 'Küsitlused'; +$string['name'] = 'Nimi'; +$string['newsurveyresponses'] = 'Uued küsitluste vastused'; +$string['nobodyyet'] = 'Seda küsitlust pole veel keegi täitnud'; +$string['notdone'] = 'Pole veel tehtud'; +$string['notes'] = 'Teie isiklik analüüs ja märkused'; +$string['othercomments'] = 'On teil veel mingeid kommentaare?'; +$string['peoplecompleted'] = '$a inimest on selle küsitluse praeguseks täitnud'; +$string['preferred'] = 'Eelistused'; +$string['preferredclass'] = 'Eelistatud klass'; +$string['preferredstudent'] = '$a eelistatud'; +$string['question'] = 'Küsimus'; +$string['questions'] = 'Küsimused'; +$string['questionsnotanswered'] = 'Osad valikvastustega küsimused on vastamata.'; +$string['report'] = 'Küsitluse raport'; +$string['savednotes'] = 'teie märkused on salvestatud'; +$string['scaleagree5'] = 'Olen täiesti vastu, Olen kuigivõrd vastu; Pole ei poolt ega vastu, Olen kuigivõrd poolt, Olen täiesti poolt'; +$string['scales'] = 'Skaala'; +$string['scaletimes5'] = 'Peaaegu mitte kunagi, Harva, Mõnikord, Sageli, Peaaegu alati'; +$string['seemoredetail'] = 'Kliki siia, et täpsemalt näha'; +$string['selectedquestions'] = 'Valitud küsimused skaalalt, kõik õpilased'; +$string['summary'] = 'Kokkuvõte'; +$string['surveycompleted'] = 'Olete küsitluse lõpetanud. Allpool olev graafik kujutab teie tulemuste kokkuvõtte võrdlust klassi keskmisega.'; +$string['surveyname'] = 'Küsitluse nimi'; +$string['surveysaved'] = 'Küsitlus salvestatud'; +$string['surveytype'] = 'Küsitluse tüüp'; +$string['thanksforanswers'] = 'Täname küsitlusele vastamast, $a'; +$string['time'] = 'Aeg'; +$string['viewsurveyresponses'] = 'Vaata $a küsitluse vastused'; + +?> diff --git a/lang/et/tex.php b/lang/et/tex.php index 526abe65bf9..869c980f27f 100644 --- a/lang/et/tex.php +++ b/lang/et/tex.php @@ -1,7 +1,7 @@ - + diff --git a/lang/et/webquest.php b/lang/et/webquest.php index fd4e9e1c997..2492c07a334 100644 --- a/lang/et/webquest.php +++ b/lang/et/webquest.php @@ -1,8 +1,8 @@ - + diff --git a/lang/et/workshop.php b/lang/et/workshop.php index 4bf4c90f143..aaaae5a9b4a 100644 --- a/lang/et/workshop.php +++ b/lang/et/workshop.php @@ -1,237 +1,241 @@ -Vorm on täidetud eelmiste hinnete ja kommentaaridega.
                Palun lisa neile andmeid peale parandatud töö vaatamist'; -$string['assessmentofthissubmission'] = 'Käesoleva töö hinne'; -$string['assessments'] = 'Hinded'; -$string['assessmentsareok'] = 'Hinded on OK'; -$string['assessmentsby'] = 'Hindaja $a'; -$string['assessmentsdone'] = 'Hinded antud'; -$string['assessmentsexcluded'] = 'Selle $a jaoks välja jäetud hinnangute arv'; -$string['assessmentsmustbeagreed'] = 'Hinded tuleb kokku leppida'; -$string['assessmentwasagreedon'] = 'Hinne anti $a'; -$string['assessor'] = 'Hindaja'; -$string['assessthissubmission'] = 'Hinda esitatud töö'; -$string['assignmentnotinthecorrectphase'] = 'Hindamine pole õiges faasis'; -$string['authorofsubmission'] = 'Töö esitaja'; -$string['averageerror'] = 'Keskmine viga'; -$string['awaitinggradingbyteacher'] = 'Ootab hinnet õpetajalt $a'; -$string['beforedeadline'] = 'Enne tähtaega: $a'; -$string['calculationoffinalgrades'] = 'Lõpphinnete kalkulatsioon'; -$string['closeassignment'] = 'Lõpeta ülesanne'; -$string['comment'] = 'Kommentaar'; -$string['commentby'] = 'Kommentaari autor'; -$string['confirmdeletionofthisitem'] = 'Kinnita $a kustutamine'; -$string['correct'] = 'Õige'; -$string['criterion'] = 'Kriteerium'; -$string['deadline'] = 'Tähtaeg'; -$string['deadlineis'] = 'Tähtaeg on $a'; -$string['delete'] = 'Kustuta'; -$string['deleting'] = 'Kustutamine'; -$string['description'] = 'Kirjeldus'; -$string['detailsofassessment'] = 'Hindamise detailid'; -$string['disagreewiththisassessment'] = 'Ära nõustu selle hindega'; -$string['displayoffinalgrades'] = 'Lõpphinnete esitus'; -$string['dontshowgrades'] = 'Ära näita hindeid'; -$string['edit'] = 'Toimeta'; -$string['editacomment'] = 'Toimeta kommentaari'; -$string['editingassessmentelements'] = 'Hindamiselementide toimetamine'; -$string['element'] = 'Element'; -$string['elementweight'] = 'Elemendi kaal'; -$string['errorbanded'] = 'Viga märgistatud'; -$string['errortable'] = 'Vigade tabel'; -$string['excellent'] = 'Väga hea'; -$string['excludingdroppedassessments'] = 'jätan välja peatatud hinnangud'; -$string['expectederror'] = 'Eeldatav vea väärtus: $a'; -$string['feedbackgoeshere'] = 'Tagasiside siit'; -$string['generalcomment'] = 'Üldine kommentaar'; -$string['good'] = 'Hea'; -$string['grade'] = 'Hinne'; -$string['gradeassessment'] = 'Hinde hinnang'; -$string['graded'] = 'Hinnatud'; -$string['gradedbyteacher'] = 'Hindas õpetaja $a'; -$string['gradeforassessments'] = 'Hinnangute hinne'; -$string['gradeforbias'] = 'Kõrvalekalde hinne'; -$string['gradeforreliability'] = 'Usaldusväärsuse hinne'; -$string['gradeforstudentsassessment'] = 'Grade for Student\'s Assessment Õpilaste hinnangute hinne'; -$string['gradeforsubmission'] = 'Esituse hinne'; -$string['gradeofsubmission'] = 'Esitamise hinne: $a'; -$string['gradetable'] = 'Hinnete tabel'; -$string['gradingstrategy'] = 'Hindamisstrateegia'; -$string['hidegradesbeforeagreement'] = 'Peida hinded enne kokkulepet'; -$string['hidenamesfromstudents'] = 'Kaalukus'; -$string['includeteachersgrade'] = 'Sisaldab õpetaja hinnet'; -$string['incorrect'] = 'Vale'; -$string['iteration'] = '$a kordus valmis'; -$string['leaguetable'] = 'Sisestatud tööde Liiga Tabel'; -$string['listassessments'] = 'Hinnangute loend'; -$string['listofallsubmissions'] = 'Kõigi esitatud tööde loend'; -$string['liststudentsassessments'] = 'Kuva õpilase hinnangud'; -$string['loadingforteacherassessments'] = 'Laen $a hinnanguid'; -$string['mail1'] = 'Sinu hinnangu \'$a\' vaatas üle'; -$string['mail10'] = 'Võid seda hinnata oma töötoa ülesandes'; -$string['mail2'] = 'Kommentaarid ja hinne on nähtavad töötoa ülesandes \'$a\''; -$string['mail3'] = 'Võid seda näha oma töötoa ülesandes'; -$string['mail4'] = 'Ülesandesse \'$a\' lisas oma kommentaari'; -$string['mail5'] = 'Uus kommentaar on nähtav töötoa ülesandes \'$a\''; -$string['mail6'] = 'Sinu hinnang ülesandele \'$a\' on üle vaadatud'; -$string['mail7'] = 'Kommentaarid $a poolt on nähtavad töötoa ülesandes'; -$string['mail8'] = 'Ülesanne $a on parandatud töö'; -$string['mail9'] = 'Palun hinda seda töötoa ülesandes $a'; -$string['managingassignment'] = 'Ülesande haldamine'; -$string['maximumsize'] = 'Maksimumsuurus'; -$string['modulename'] = 'Kaalukus'; -$string['modulenameplural'] = 'Kaalukus'; -$string['movingtophase'] = 'Liigun faasi $a'; -$string['namesnotshowntostudents'] = 'Kaalukus'; -$string['newassessments'] = 'Uued hinnangud'; -$string['newgradings'] = 'Uued hindamised'; -$string['newsubmissions'] = 'Uued esitused'; -$string['noassessments'] = 'Pole hinnanguid'; -$string['noassessmentsdone'] = 'Hinnanguid pole antud'; -$string['nosubmission'] = 'Pole esitust'; -$string['nosubmissionsavailableforassessment'] = 'Ühtegi tööd pole hindamiseks esitatud'; -$string['notavailable'] = 'Pole saadaval'; -$string['noteonassessmentelements'] = 'Pane tähele: hinnang on lahutatud hulgaks \"hindamiselementideks\".
                - See lihtsustab hindamist ja on loogilisem. Õpetaja peab need lisama
                - Elemendid on enne ülesande andmist õpilastele saadaval. Seda saab teha
                - Klikkides kursuse ülesandele, kui elemente pole näidatud, siis teil palutakse
                - need lisada. Võite muuta elementide arvu, kasutades menüüs Redigeeri Assigneeringuid,
                - elemente saab muuta \"Managing Assessment\" ekraanil. '; -$string['notgraded'] = 'Hindamata'; -$string['notitlegiven'] = 'Pealkiri'; -$string['numberofassessmentelements'] = 'Kommentaaride, hinnanguelementide, hindeBands või kriteeriumiväidete arv'; -$string['numberofassessments'] = 'Hinnangute arv'; -$string['numberofassessmentschanged'] = 'Muudetud hinnangute arv: $a'; -$string['numberofassessmentsofstudentsubmissions'] = 'Õpilaste esitatud tööde hinnangute arv'; -$string['numberofassessmentsofteachersexamples'] = 'Õpetaja esitatud näidete hinnangute arv'; -$string['numberofentries'] = 'Kirjete arv'; -$string['numberofnegativeresponses'] = 'Negatiivsete vastuste arv'; -$string['numberofsubmissions'] = 'Esituste arv: $a'; -$string['on'] = '$a'; -$string['openassignment'] = 'Avatud ülesanne'; -$string['optionaladjustment'] = 'Valikuline muutmine'; -$string['optionforpeergrade'] = 'Võimalus hinnata õpilasgrupi poolt'; -$string['optionsusedinanalysis'] = 'Analüüsis kasutatud valikud'; -$string['overallgrade'] = 'Koondhinne'; -$string['overallocation'] = 'Üle-määramine'; -$string['overallpeergrade'] = 'Koondhinne õpilasgrupi poolt: $a'; -$string['overallteachergrade'] = 'Õpetaja koondhinne: $a'; -$string['ownwork'] = 'Oma töö'; -$string['percentageofassessments'] = 'Eemaldatavate hinnangute protsent'; -$string['phase'] = 'Faas'; -$string['phase1'] = 'Püstita ülesanne'; -$string['phase1short'] = 'Seadista'; -$string['phase2'] = '$a Esitatud tööd ja hinnangud'; -$string['phase2short'] = 'Esitused'; -$string['phase3'] = 'Lõpphinnete arvutamine'; -$string['phase3short'] = 'Mõlemad'; -$string['phase4'] = 'Näita lõpphindeid'; -$string['phase4short'] = 'Hinnangud'; -$string['phase5'] = 'Lõpphinnete arvutamine'; -$string['phase5short'] = 'Arvutamine'; -$string['pleaseassesstheseexamplesfromtheteacher'] = 'Palun hinda neid näiteid õpetajalt $a'; -$string['pleaseassessthesestudentsubmissions'] = 'Palun hinda neid $a esitatud töid'; -$string['pleaseassessyoursubmissions'] = 'Palun hinda oma esitust'; -$string['poor'] = 'Halb'; -$string['present'] = 'Olemas'; -$string['reasonforadjustment'] = 'Muutmise põhjus'; -$string['reassess'] = 'Hinda uuesti'; -$string['repeatanalysis'] = 'Korda analüüsi'; -$string['reply'] = 'Vasta'; -$string['returnto'] = 'Mine tagasi'; -$string['returntosubmissionpage'] = 'Mine tagasi esitamise lehele'; -$string['rubric'] = 'Rubriik'; -$string['savedok'] = 'Salvestatud OK'; -$string['saveleaguetableoptions'] = 'Salvesta liiga tabeli valikud'; -$string['savemyassessment'] = 'Salvesta minu hinnang'; -$string['savemycomment'] = 'Salvesta minu kommentaar'; -$string['savemygrading'] = 'Salvesta minu hinded'; -$string['saveoverallocation'] = 'Salvesta üle-määramise tase'; -$string['scale10'] = 'Punkte kümnest'; -$string['scale100'] = 'Punkte sajast'; -$string['scale20'] = 'Punkte kahekümnest'; -$string['scalecorrect'] = '2 punkti skaala Õige/Vale'; -$string['scaleexcellent4'] = '4 punkti skaala Väga hea/Väga vilets'; -$string['scaleexcellent5'] = '5 punkti skaala Vähga hea/väga vilets'; -$string['scaleexcellent7'] = '7 punkti skaala Väga hea/väga vilets'; -$string['scalegood3'] = '3 punkti skala Hea/vilets'; -$string['scalepresent'] = '2 punkti skaala kohal/puudub'; -$string['scaleyes'] = '2 punkti skaala Jah/Ei'; -$string['select'] = 'Vali'; -$string['selfassessment'] = 'Enesehinnang'; -$string['showgrades'] = 'Näita hindeid'; -$string['specimenassessmentform'] = 'Näidisblanketi hinnang '; -$string['standarddeviation'] = 'Keskmine elemendi $a kõrvalekalle:'; -$string['standarddeviationnote'] = 'Väga väikese või puuduva erinevusega elemendid võivad moondada analüüsi.
                See element on analüüsist kõrvale jäetud'; -$string['studentassessments'] = '$a hinnangud'; -$string['studentgrades'] = '$a Hinded'; -$string['studentsubmissions'] = '$a Esitatud'; -$string['studentsubmissionsforassessment'] = '$a Õpilaste esitatud tööd hindamiseks'; -$string['submission'] = 'Esitus'; -$string['submissions'] = 'Esitused'; -$string['submissionsnolongerallowed'] = 'Esitused ei ole enam lubatud'; -$string['submissionsused'] = '$a esitusi kasutatakse selles tabelis'; -$string['submitassignment'] = 'Esita ülesanne'; -$string['submitassignmentusingform'] = 'Esita oma ülesanne kasutades seda vormi'; -$string['submitexampleassignment'] = 'Esita näidisülesanne'; -$string['submitrevisedassignment'] = 'Esita oma muudetud ülesanne'; -$string['submitted'] = 'Esitatud'; -$string['submittedby'] = 'Esitas'; -$string['suggestedgrade'] = 'Eeldatav hinne'; -$string['teacherassessments'] = '$a hinnangud'; -$string['teacherscomment'] = 'Õpetaja kommentaar'; -$string['teachersgrade'] = 'Õpetaja hinne'; -$string['teachersubmissionsforassessment'] = '$a Õpetaja poolt esitatud tööd hindamiseks'; -$string['thegradeis'] = 'Hindeks on $a'; -$string['theseasessmentsaregradedbytheteacher'] = 'Need hinnangud on andnud õpetja'; -$string['timeassessed'] = 'Hinnatud aeg'; -$string['title'] = 'Pealkiri'; -$string['typeofscale'] = 'Skaala tüüp'; -$string['ungradedassessmentsofstudentsubmissions'] = '$ Õpilaste saadetud mittehindelised hinnangud'; -$string['ungradedassessmentsofteachersubmissions'] = '$a Õpetajate saadetud mittehindelised hinnangud'; -$string['verypoor'] = 'Väga halb'; -$string['view'] = 'Vaata'; -$string['viewassessmentofteacher'] = 'Vaata õpetaja…hinnet $a'; -$string['viewotherassessments'] = 'Vaata teisi hindeid'; -$string['warningonamendingelements'] = 'HOIATUS: on saadetud hinnaguid.
                Ära muuda elementide arvu, skaala tüüpe ega elementide kaalukust'; -$string['weight'] = 'Kaalukus'; -$string['weightederrorcount'] = 'Vealoenduse kaalukus: $a'; -$string['weightforbias'] = 'Kõrvalekande kaalukus'; -$string['weightforgradingofassessments'] = 'Hinnangute kaal'; -$string['weightforpeerassessments'] = 'Õpilasgrupi hinnangute kaalukus'; -$string['weightforreliability'] = 'Usaldusväärsuse kaalukus'; -$string['weightforteacherassessments'] = 'Õpetaja hinnagute kaalukus'; -$string['weights'] = 'Kaalukus'; -$string['weightsusedforfinalgrade'] = 'Lõpphinde panemisel arvesse võetud kaalukus'; -$string['weightsusedforsubmissions'] = 'Esitamise kaal'; -$string['workshopagreedassessments'] = 'Töötoa kokkulepitud hinnangud'; -$string['workshopassessments'] = 'Töötoa hinnangud'; -$string['workshopcomments'] = 'Töötoa kommentaarid'; -$string['workshopfeedback'] = 'Töötoa tagasiside'; -$string['workshopsubmissions'] = 'Töötoa Esitused'; -$string['yourassessments'] = 'teie hinnang'; -$string['yourassessmentsofexamplesfromtheteacher'] = 'Teie esitused $a näidiste kohta'; -$string['yourfeedbackgoeshere'] = 'Teie tagasiside on siin'; - -?> +Vorm on täidetud eelmiste hinnete ja kommentaaridega.
                Palun lisa neile andmeid peale parandatud töö vaatamist'; +$string['assessmentofthissubmission'] = 'Käesoleva töö hinne'; +$string['assessments'] = 'Hinded'; +$string['assessmentsareok'] = 'Hinded on OK'; +$string['assessmentsby'] = 'Hindaja $a'; +$string['assessmentsdone'] = 'Hinded antud'; +$string['assessmentsexcluded'] = 'Selle $a jaoks välja jäetud hinnangute arv'; +$string['assessmentsmustbeagreed'] = 'Hinded tuleb kokku leppida'; +$string['assessmentwasagreedon'] = 'Hinne anti $a'; +$string['assessor'] = 'Hindaja'; +$string['assessthissubmission'] = 'Hinda esitatud töö'; +$string['assignmentnotinthecorrectphase'] = 'Hindamine pole õiges faasis'; +$string['authorofsubmission'] = 'Töö esitaja'; +$string['averageerror'] = 'Keskmine viga'; +$string['awaitinggradingbyteacher'] = 'Ootab hinnet õpetajalt $a'; +$string['beforedeadline'] = 'Enne tähtaega: $a'; +$string['calculationoffinalgrades'] = 'Lõpphinnete kalkulatsioon'; +$string['closeassignment'] = 'Lõpeta ülesanne'; +$string['comment'] = 'Kommentaar'; +$string['commentby'] = 'Kommentaari autor'; +$string['confirmdeletionofthisitem'] = 'Kinnita $a kustutamine'; +$string['correct'] = 'Õige'; +$string['criterion'] = 'Kriteerium'; +$string['deadline'] = 'Tähtaeg'; +$string['deadlineis'] = 'Tähtaeg on $a'; +$string['delete'] = 'Kustuta'; +$string['deleting'] = 'Kustutamine'; +$string['description'] = 'Kirjeldus'; +$string['detailsofassessment'] = 'Hindamise detailid'; +$string['disagreewiththisassessment'] = 'Ära nõustu selle hindega'; +$string['displayoffinalgrades'] = 'Lõpphinnete esitus'; +$string['dontshowgrades'] = 'Ära näita hindeid'; +$string['edit'] = 'Toimeta'; +$string['editacomment'] = 'Toimeta kommentaari'; +$string['editingassessmentelements'] = 'Hindamiselementide toimetamine'; +$string['element'] = 'Element'; +$string['elementweight'] = 'Elemendi kaal'; +$string['errorbanded'] = 'Viga märgistatud'; +$string['errortable'] = 'Vigade tabel'; +$string['excellent'] = 'Väga hea'; +$string['excludingdroppedassessments'] = 'jätan välja peatatud hinnangud'; +$string['expectederror'] = 'Eeldatav vea väärtus: $a'; +$string['feedbackgoeshere'] = 'Tagasiside siit'; +$string['generalcomment'] = 'Üldine kommentaar'; +$string['good'] = 'Hea'; +$string['grade'] = 'Hinne'; +$string['gradeassessment'] = 'Hinde hinnang'; +$string['graded'] = 'Hinnatud'; +$string['gradedbyteacher'] = 'Hindas õpetaja $a'; +$string['gradeforassessments'] = 'Hinnangute hinne'; +$string['gradeforbias'] = 'Kõrvalekalde hinne'; +$string['gradeforreliability'] = 'Usaldusväärsuse hinne'; +$string['gradeforstudentsassessment'] = 'Grade for Student\'s Assessment Õpilaste hinnangute hinne'; +$string['gradeforsubmission'] = 'Esituse hinne'; +$string['gradeofsubmission'] = 'Esitamise hinne: $a'; +$string['gradetable'] = 'Hinnete tabel'; +$string['gradingstrategy'] = 'Hindamisstrateegia'; +$string['hidegradesbeforeagreement'] = 'Peida hinded enne kokkulepet'; +$string['hidenamesfromstudents'] = 'Kaalukus'; +$string['includeteachersgrade'] = 'Sisaldab õpetaja hinnet'; +$string['incorrect'] = 'Vale'; +$string['iteration'] = '$a kordus valmis'; +$string['leaguetable'] = 'Sisestatud tööde Liiga Tabel'; +$string['listassessments'] = 'Hinnangute loend'; +$string['listofallsubmissions'] = 'Kõigi esitatud tööde loend'; +$string['liststudentsassessments'] = 'Kuva õpilase hinnangud'; +$string['loadingforteacherassessments'] = 'Laen $a hinnanguid'; +$string['mail1'] = 'Sinu hinnangu \'$a\' vaatas üle'; +$string['mail10'] = 'Võid seda hinnata oma töötoa ülesandes'; +$string['mail2'] = 'Kommentaarid ja hinne on nähtavad töötoa ülesandes \'$a\''; +$string['mail3'] = 'Võid seda näha oma töötoa ülesandes'; +$string['mail4'] = 'Ülesandesse \'$a\' lisas oma kommentaari'; +$string['mail5'] = 'Uus kommentaar on nähtav töötoa ülesandes \'$a\''; +$string['mail6'] = 'Sinu hinnang ülesandele \'$a\' on üle vaadatud'; +$string['mail7'] = 'Kommentaarid $a poolt on nähtavad töötoa ülesandes'; +$string['mail8'] = 'Ülesanne $a on parandatud töö'; +$string['mail9'] = 'Palun hinda seda töötoa ülesandes $a'; +$string['managingassignment'] = 'Ülesande haldamine'; +$string['maximumsize'] = 'Maksimumsuurus'; +$string['modulename'] = 'Kaalukus'; +$string['modulenameplural'] = 'Kaalukus'; +$string['movingtophase'] = 'Liigun faasi $a'; +$string['namesnotshowntostudents'] = 'Kaalukus'; +$string['newassessments'] = 'Uued hinnangud'; +$string['newgradings'] = 'Uued hindamised'; +$string['newsubmissions'] = 'Uued esitused'; +$string['noassessments'] = 'Pole hinnanguid'; +$string['noassessmentsdone'] = 'Hinnanguid pole antud'; +$string['nosubmission'] = 'Pole esitust'; +$string['nosubmissionsavailableforassessment'] = 'Ühtegi tööd pole hindamiseks esitatud'; +$string['notavailable'] = 'Pole saadaval'; +$string['noteonassessmentelements'] = 'Pane tähele: hinnang on lahutatud hulgaks \"hindamiselementideks\".
                + See lihtsustab hindamist ja on loogilisem. Õpetaja peab need lisama
                + Elemendid on enne ülesande andmist õpilastele saadaval. Seda saab teha
                + Klikkides kursuse ülesandele, kui elemente pole näidatud, siis teil palutakse
                + need lisada. Võite muuta elementide arvu, kasutades menüüs Redigeeri Assigneeringuid,
                + elemente saab muuta "Managing Assessment" ekraanil. '; +$string['notgraded'] = 'Hindamata'; +$string['notitlegiven'] = 'Pealkiri'; +$string['numberofassessmentelements'] = 'Kommentaaride, hinnanguelementide, hindeBands või kriteeriumiväidete arv'; +$string['numberofassessments'] = 'Hinnangute arv'; +$string['numberofassessmentschanged'] = 'Muudetud hinnangute arv: $a'; +$string['numberofassessmentsofstudentsubmissions'] = 'Õpilaste esitatud tööde hinnangute arv'; +$string['numberofassessmentsofteachersexamples'] = 'Õpetaja esitatud näidete hinnangute arv'; +$string['numberofentries'] = 'Kirjete arv'; +$string['numberofnegativeresponses'] = 'Negatiivsete vastuste arv'; +$string['numberofsubmissions'] = 'Esituste arv: $a'; +$string['on'] = '$a'; +$string['openassignment'] = 'Avatud ülesanne'; +$string['optionaladjustment'] = 'Valikuline muutmine'; +$string['optionforpeergrade'] = 'Võimalus hinnata õpilasgrupi poolt'; +$string['optionsusedinanalysis'] = 'Analüüsis kasutatud valikud'; +$string['overallgrade'] = 'Koondhinne'; +$string['overallocation'] = 'Üle-määramine'; +$string['overallpeergrade'] = 'Koondhinne õpilasgrupi poolt: $a'; +$string['overallteachergrade'] = 'Õpetaja koondhinne: $a'; +$string['ownwork'] = 'Oma töö'; +$string['percentageofassessments'] = 'Eemaldatavate hinnangute protsent'; +$string['phase'] = 'Faas'; +$string['phase1'] = 'Püstita ülesanne'; +$string['phase1short'] = 'Seadista'; +$string['phase2'] = '$a Esitatud tööd ja hinnangud'; +$string['phase2short'] = 'Esitused'; +$string['phase3'] = 'Lõpphinnete arvutamine'; +$string['phase3short'] = 'Mõlemad'; +$string['phase4'] = 'Näita lõpphindeid'; +$string['phase4short'] = 'Hinnangud'; +$string['phase5'] = 'Lõpphinnete arvutamine'; +$string['phase5short'] = 'Arvutamine'; +$string['phase6'] = 'Näita lõpphindeid'; +$string['phase6short'] = 'Näita hindeid'; +$string['pleaseassesstheseexamplesfromtheteacher'] = 'Palun hinda neid näiteid õpetajalt $a'; +$string['pleaseassessthesestudentsubmissions'] = 'Palun hinda neid $a esitatud töid'; +$string['pleaseassessyoursubmissions'] = 'Palun hinda oma esitust'; +$string['poor'] = 'Halb'; +$string['present'] = 'Olemas'; +$string['reasonforadjustment'] = 'Muutmise põhjus'; +$string['reassess'] = 'Hinda uuesti'; +$string['repeatanalysis'] = 'Korda analüüsi'; +$string['reply'] = 'Vasta'; +$string['returnto'] = 'Mine tagasi'; +$string['returntosubmissionpage'] = 'Mine tagasi esitamise lehele'; +$string['rubric'] = 'Rubriik'; +$string['savedok'] = 'Salvestatud OK'; +$string['saveleaguetableoptions'] = 'Salvesta liiga tabeli valikud'; +$string['savemyassessment'] = 'Salvesta minu hinnang'; +$string['savemycomment'] = 'Salvesta minu kommentaar'; +$string['savemygrading'] = 'Salvesta minu hinded'; +$string['saveoverallocation'] = 'Salvesta üle-määramise tase'; +$string['scale10'] = 'Punkte kümnest'; +$string['scale100'] = 'Punkte sajast'; +$string['scale20'] = 'Punkte kahekümnest'; +$string['scalecorrect'] = '2 punkti skaala Õige/Vale'; +$string['scaleexcellent4'] = '4 punkti skaala Väga hea/Väga vilets'; +$string['scaleexcellent5'] = '5 punkti skaala Vähga hea/väga vilets'; +$string['scaleexcellent7'] = '7 punkti skaala Väga hea/väga vilets'; +$string['scalegood3'] = '3 punkti skala Hea/vilets'; +$string['scalepresent'] = '2 punkti skaala kohal/puudub'; +$string['scaleyes'] = '2 punkti skaala Jah/Ei'; +$string['select'] = 'Vali'; +$string['selfassessment'] = 'Enesehinnang'; +$string['setoverallocation'] = 'Vali üle-määramise tase'; +$string['showgrades'] = 'Näita hindeid'; +$string['specimenassessmentform'] = 'Näidisblanketi hinnang '; +$string['standarddeviation'] = 'Keskmine elemendi $a kõrvalekalle:'; +$string['standarddeviationnote'] = 'Väga väikese või puuduva erinevusega elemendid võivad moondada analüüsi.
                See element on analüüsist kõrvale jäetud'; +$string['studentassessments'] = '$a hinnangud'; +$string['studentgrades'] = '$a Hinded'; +$string['studentsubmissions'] = '$a Esitatud'; +$string['studentsubmissionsforassessment'] = '$a Õpilaste esitatud tööd hindamiseks'; +$string['submission'] = 'Esitus'; +$string['submissions'] = 'Esitused'; +$string['submissionsnolongerallowed'] = 'Esitused ei ole enam lubatud'; +$string['submissionsused'] = '$a esitusi kasutatakse selles tabelis'; +$string['submitassignment'] = 'Esita ülesanne'; +$string['submitassignmentusingform'] = 'Esita oma ülesanne kasutades seda vormi'; +$string['submitexampleassignment'] = 'Esita näidisülesanne'; +$string['submitrevisedassignment'] = 'Esita oma muudetud ülesanne'; +$string['submitted'] = 'Esitatud'; +$string['submittedby'] = 'Esitas'; +$string['suggestedgrade'] = 'Eeldatav hinne'; +$string['teacherassessments'] = '$a hinnangud'; +$string['teacherscomment'] = 'Õpetaja kommentaar'; +$string['teachersgrade'] = 'Õpetaja hinne'; +$string['teachersubmissionsforassessment'] = '$a Õpetaja poolt esitatud tööd hindamiseks'; +$string['thegradeis'] = 'Hindeks on $a'; +$string['thereisfeedbackfromtheteacher'] = 'On tagasisidet kasutajalt $a'; +$string['theseasessmentsaregradedbytheteacher'] = 'Need hinnangud on andnud õpetja'; +$string['timeassessed'] = 'Hinnatud aeg'; +$string['title'] = 'Pealkiri'; +$string['typeofscale'] = 'Skaala tüüp'; +$string['ungradedassessmentsofstudentsubmissions'] = '$ Õpilaste saadetud mittehindelised hinnangud'; +$string['ungradedassessmentsofteachersubmissions'] = '$a Õpetajate saadetud mittehindelised hinnangud'; +$string['verypoor'] = 'Väga halb'; +$string['view'] = 'Vaata'; +$string['viewassessmentofteacher'] = 'Vaata õpetaja…hinnet $a'; +$string['viewotherassessments'] = 'Vaata teisi hindeid'; +$string['warningonamendingelements'] = 'HOIATUS: on saadetud hinnaguid.
                Ära muuda elementide arvu, skaala tüüpe ega elementide kaalukust'; +$string['weight'] = 'Kaalukus'; +$string['weightederrorcount'] = 'Vealoenduse kaalukus: $a'; +$string['weightforbias'] = 'Kõrvalekande kaalukus'; +$string['weightforgradingofassessments'] = 'Hinnangute kaal'; +$string['weightforpeerassessments'] = 'Õpilasgrupi hinnangute kaalukus'; +$string['weightforreliability'] = 'Usaldusväärsuse kaalukus'; +$string['weightforteacherassessments'] = 'Õpetaja hinnagute kaalukus'; +$string['weights'] = 'Kaalukus'; +$string['weightsusedforfinalgrade'] = 'Lõpphinde panemisel arvesse võetud kaalukus'; +$string['weightsusedforsubmissions'] = 'Esitamise kaal'; +$string['workshopagreedassessments'] = 'Töötoa kokkulepitud hinnangud'; +$string['workshopassessments'] = 'Töötoa hinnangud'; +$string['workshopcomments'] = 'Töötoa kommentaarid'; +$string['workshopfeedback'] = 'Töötoa tagasiside'; +$string['workshopsubmissions'] = 'Töötoa Esitused'; +$string['yourassessments'] = 'teie hinnang'; +$string['yourassessmentsofexamplesfromtheteacher'] = 'Teie esitused $a näidiste kohta'; +$string['yourfeedbackgoeshere'] = 'Teie tagasiside on siin'; + +?> diff --git a/lang/eu/activitynames.php b/lang/eu/activitynames.php index ff4940a297b..10cd8b0cfcc 100644 --- a/lang/eu/activitynames.php +++ b/lang/eu/activitynames.php @@ -2,5 +2,10 @@ // activitynames.php - created with Moodle 1.4.1 (2004083101) +$string['filtername'] = 'Automatikoki lotutako aktibitateak'; +$string['parentlanguage'] = 'es'; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'Euskara'; ?> diff --git a/lang/eu/assignment.php b/lang/eu/assignment.php index 6de39774fa1..98ba3116e58 100644 --- a/lang/eu/assignment.php +++ b/lang/eu/assignment.php @@ -1,5 +1,5 @@ diff --git a/lang/eu/auth.php b/lang/eu/auth.php index 8a87bb8e896..7340d7706b1 100644 --- a/lang/eu/auth.php +++ b/lang/eu/auth.php @@ -1,60 +1,60 @@ kanpoko datu-base eremuetatik aurrez betetzea erabaki dezakezu.

                Hutsik uzten badituzu, lehenetsitako balioak erabiliko dira.

                Edozein kasutan, erabiltzaileek eremu guztiak editazeko aukera izango dute behin saioa hasita.

                '; -$string['auth_dbfieldpass'] = 'Pasahitzak dituen eremuaren izena'; -$string['auth_dbfielduser'] = 'Erabiltzaile-izenak dituen eremuaren izena'; -$string['auth_dbhost'] = 'Datu-base zerbitzaria ostatatzen duen ordenagailua.'; -$string['auth_dbname'] = 'Datu-basearen izena'; -$string['auth_dbpass'] = 'Goiko erabiltzaile izenarekin bat datorren pasahitza'; -$string['auth_dbpasstype'] = 'Pasahitza eremuak erabiltzen duen formatua zehaztu. MD5 enkiptazioa beste web aplikazio orokorrekin konektatzeko erabilgarria da, PostNuke adibidez'; -$string['auth_dbtable'] = 'Datu-baseko taulak duen izena'; -$string['auth_dbtitle'] = 'Kanpoko datu-base bat erabili'; -$string['auth_dbtype'] = 'Datu-base mota (Ikus ADOdb documentation xehetasun gahiagorako)'; -$string['auth_dbuser'] = 'Datu-basean irakurtzeko baimena duen erabiltzaile izena'; -$string['auth_emaildescription'] = 'ePostaz berrestea da lehenetsitako autentifikazio metodoa. Erabiltzaileak izena ematen duenean, bere izen eta pasahitza aukeratuz, konfirmazio ePosta mezu bat bidaltzen zaio erabiltzailearen ePostara. ePosta Mezu honek, erabiltzaileei kontua berresteko aukera emango dien orri batera lotura zihur bat du. Hurrengoetan saioa hasteko izen eta pasahitza Moodle datu-basean dauden balioekin konparatzea nahikoa da.'; -$string['auth_emailtitle'] = 'E-posta bitarteko autentifikazioa'; -$string['auth_imapdescription'] = 'Metodo honek IMAP zerbitzari bat erabiltzen du emandako erabiltzaile izen eta pasahitza baliozkoak diren egiaztatzeko.'; -$string['auth_imaphost'] = 'IMAP zerbitzariaren helbidea. IP helbidea erabili ezazu, ez DNS izena.'; -$string['auth_imapport'] = 'IMAP zerbitzariaren kaia zenbakia. 143 edo 993 izan ohi da.'; -$string['auth_imaptitle'] = 'IMAP zerbitzari bat erabili'; -$string['auth_imaptype'] = 'IMAP zerbitzari mota. IMAP zerbitzariak autentifikazio eta negoziazio mota ezberdinak izan ditzazkete.'; -$string['auth_ldap_bind_dn'] = 'Erabiltzaileak bilatzeko bind-user erabili nahi baduzu, hemen zehaztu. Honen antzeko zerbait: \'cn=ldapuser,ou=public,o=org\''; -$string['auth_ldap_bind_pw'] = 'bind-user erabiltzaile pasahitza.'; -$string['auth_ldap_contexts'] = 'Erabiltzaileak kokatzen diren testuinguru zerrenda. Testuinguruak \';\' erabiliz banatu. Adibidez: \'ou=users,o=org; ou=others,o=org\''; -$string['auth_ldap_host_url'] = 'LDAP ostatua URL bidez zehaztu, adibidez \'ldap://ldap.zerbitzaria.com/\' edo \'ldaps://ldap.zerbitzaria.com/\' '; -$string['auth_ldap_search_sub'] = '<> 0 balioa jarri erabiltzaileak azpi-testuinguruneetan bilatu nahi badituzu.'; -$string['auth_ldap_update_userinfo'] = 'Erabiltzaile informazioa (izena, abizena, helbidea..) LDAP-tik Moodle-ra eguneratu. /auth/ldap/attr_mappings.php fitxategian begira ezazu mapa informazioa'; -$string['auth_ldap_user_attribute'] = 'Erbiltzaileak izendatzeko edo bilatzeko atributua. \'cn\' izan ohi da.'; -$string['auth_ldapdescription'] = 'Metodo honek kanpo LDAP zerbitzari baten aurkako autentifikazioa eskeintzen du. +$string['auth_dbdescription'] = "Metodo honek kanpoko datu-base taula bat erabiltzen du emandako erabiltzaile izen eta pasahitz bat baliozkoa den egiaztatzeko. kontua berria bada, beste eremuetako informazioa ere zeharka kopiatu daiteke Moddlen."; +$string['auth_dbextrafields'] = "Eremu hauek aukerazkoak dira. Moddle erabiltzaileen eremu batzuk hemen zehaztutako kanpoko datu-base eremuetatik aurrez betetzea erabaki dezakezu.

                Hutsik uzten badituzu, lehenetsitako balioak erabiliko dira.

                Edozein kasutan, erabiltzaileek eremu guztiak editazeko aukera izango dute behin saioa hasita."; +$string['auth_dbfieldpass'] = "Pasahitzak dituen eremuaren izena"; +$string['auth_dbfielduser'] = "Erabiltzaile izenak dituen eremuaren izena"; +$string['auth_dbhost'] = "Datu-base zerbitzaria ostatatzen duen ordenagailua."; +$string['auth_dbname'] = "Datu-base izena"; +$string['auth_dbpass'] = "Goiko erabiltzaile izenarekin bat datorren pasahitza"; +$string['auth_dbpasstype'] = "Pasahitza eremuak erabiltzen duen formatua zehaztu. MD5 enkiptazioa beste web aplikazio orokorrekin konektatzeko erabilgarria da, PostNuke adibidez"; +$string['auth_dbtable'] = "Datu-baseko taulak duen izena"; +$string['auth_dbtitle'] = "Kanpoko datu-base bat erabili"; +$string['auth_dbtype'] = "Datu-base mota (Ikus ADOdb documentation xehetasun gahiagorako)"; +$string['auth_dbuser'] = "Datu-basean irakurtzeko baimena duen erabiltzaile izena"; +$string['auth_emaildescription'] = "ePostaz berrestea da lehenetsitako autentifikazio metodoa. Erabiltzaileak izena ematen duenean, bere izen eta pasahitza aukeratuz, konfirmazio ePosta mezu bat bidaltzen zaio erabiltzailearen ePostara. ePosta Mezu honek, erabiltzaileei kontua berresteko aukera emango dien orri batera lotura zihur bat du. Hurrengoetan saioa hasteko izen eta pasahitza Moodle datu-basean dauden balioekin konparatzea nahikoa da."; +$string['auth_emailtitle'] = "ePosta bitarteko autentifikazioa"; +$string['auth_imapdescription'] = "Metodo honek IMAP zerbitzari bat erabiltzen du emandako erabiltzaile izen eta pasahitza baliozkoak diren egiaztatzeko."; +$string['auth_imaphost'] = "IMAP zerbitzariaren helbidea. IP helbidea erabili ezazu, ez DNS izena."; +$string['auth_imapport'] = "IMAP zerbitzariaren kaia zenbakia. 143 edo 993 izan ohi da."; +$string['auth_imaptitle'] = "IMAP zerbitzari bat erabili"; +$string['auth_imaptype'] = "IMAP zerbitzari mota. IMAP zerbitzariak autentifikazio eta negoziazio mota ezberdinak izan ditzazkete."; +$string['instructions'] = "Argibideak"; +$string['auth_ldap_bind_dn'] = "Erabiltzaileak bilatzeko bind-user erabili nahi baduzu, hemen zehaztu. Honen antzeko zerbait: 'cn=ldapuser,ou=public,o=org'"; +$string['auth_ldap_bind_pw'] = "bind-user erabiltzaile pasahitza."; +$string['auth_ldap_contexts'] = "Erabiltzaileak kokatzen diren testuinguru zerrenda. Testuinguruak ';' erabiliz banatu. Adibidez: 'ou=users,o=org; ou=others,o=org'"; +$string['auth_ldap_host_url'] = "LDAP ostatua URL bidez zehaztu, adibidez 'ldap://ldap.zerbitzaria.com/' edo 'ldaps://ldap.zerbitzaria.com/' "; +$string['auth_ldap_search_sub'] = "<> 0 balioa jarri erabiltzaileak azpi-testuinguruneetan bilatu nahi badituzu."; +$string['auth_ldap_update_userinfo'] = "Erabiltzaile informazioa (izena, abizena, helbidea..) LDAP-tik Moodle-ra eguneratu. /auth/ldap/attr_mappings.php fitxategian begira ezazu mapa informazioa"; +$string['auth_ldap_user_attribute'] = "Erbiltzaileak izendatzeko edo bilatzeko atributua. 'cn' izan ohi da."; +$string['auth_ldapdescription'] = "Metodo honek kanpo LDAP zerbitzari baten aurkako autentifikazioa eskeintzen du. Emandako erabiltzaile izen eta pasahitza baliozkoak badira, Moodlek erabiltzaile sarrera berri bat sortuko du bere datu-basean. Modulu honek erabiltzaile atributuak LDAP zerbitzaritik irakurri ditzazke eta eremuak Moodlen bete. Hurrengo saio hasieretan - soilik izen eta pasahitza egiaztatuko dira.'; -$string['auth_ldapextrafields'] = 'Eremu hauek aukerazkoak dira. Moodle erabiltzaile eremu batzuk hemen zehaztutako LDAP eremuetako informazioz betetzea aukeratu dezakezu.

                Zurian uzten badituzu, ez da ezer transferituko LDAP-tik eta Moodlek lehenetsitako balioak erabiliko dira ordez.>/p>

                Edozein kasutan, erabiltzaileak eremu guzti hauek editatzeko gaitasuna izango du behin saioa hasita.

                '; -$string['auth_ldaptitle'] = 'LDAP zerbitzari bat erabili'; -$string['auth_nntpdescription'] = 'Metodo honek NNTP zerbitzari bat erabiltzen du emandako erabiltzaile izen eta pasahitza baliozkoak diren egiaztatzeko.'; -$string['auth_nntphost'] = 'NNTP zerbitzariaren helbidea. IP zenbakia erabili ezazu, ez DNS izena.'; -$string['auth_nntpport'] = 'Zerbitzari kaia (119 arruntena da)'; -$string['auth_nntptitle'] = 'NNTP zerbitzari bat erabili'; -$string['auth_nonedescription'] = 'Erabiltzaileen berehala eman dezakete izena eta baliozko kontuak sortu, kanpo zerbitzari baten aurkako autentifikaziorik gabe eta ePosta bidez berretsi gabe. Aukera hau erabiltzeerekin kontuz - honek sor ditzazkeen segurtasun eta administrazio arazoak kontutan hartu.'; -$string['auth_nonetitle'] = 'Autentifikaziorik ez'; -$string['auth_pop3description'] = 'Metodo honek POP3 zerbitzari bat erabiltzen du emandako erabiltzaile izen eta pasahitza baliozkoak diren egiaztatzeko.'; -$string['auth_pop3host'] = 'POP3 zerbitzariaren helbidea. IP zenbakia erabili, ez DNS izena.'; -$string['auth_pop3port'] = 'Zerbitzari kaia (110 izan ohi da)'; -$string['auth_pop3title'] = 'POP3 zerbitzari bat erabili'; -$string['auth_pop3type'] = 'Zerbitzari mota. Zure zerbitzariak zertifikatu segurtasuna erabiltzen badu, pop3cert aukeratu ezazu.'; -$string['authenticationoptions'] = 'Autentifikazio aukerak'; -$string['authinstructions'] = 'Hemen zure erabiltzaileentzat argibideak eman ditzazkezu, erabili behar duten erabiltzaile eta pasahitza zeintzu diren jakin dezaten. Hemen sartutako testua saio hasiera pantailan agertuko da. Zurian uzten baduzu ez da argibiderik emango.'; -$string['changepassword'] = 'Pasahitz URL-a aldatu'; -$string['changepasswordhelp'] = 'Hemen zure erabiltzaileek bere izen edo pasahitza aldatzeko, edo ahaztekotan berreskuratzeko, erabili dezaketen helbide bat zehaztu dezakezu. Hau erabiltzaileei saio hasiera pantailan eta erabiltzaile orrian botoi gisa aurkeztuko zaie. Zurian uzten baduzu ez zaie botoirik aurkeztuko.'; -$string['chooseauthmethod'] = 'Autentifikazio metodoa aukeratu: '; -$string['guestloginbutton'] = 'Bisitariek saioa hasteko botoia'; -$string['instructions'] = 'Argibideak'; -$string['md5'] = 'MD5 enkriptazioa'; -$string['plaintext'] = 'Testu arrunta'; -$string['showguestlogin'] = 'Bisitariek saioa hasteko botoia bistaratu edo ezkutatu dezakezu saio hasiera pantailan.'; + soilik izen eta pasahitza egiaztatuko dira."; +$string['auth_ldapextrafields'] = "Eremu hauek aukerazkoak dira. Moodle erabiltzaile eremu batzuk hemen zehaztutako LDAP eremuetako informazioz betetzea aukeratu dezakezu.

                Zurian uzten badituzu, ez da ezer transferituko LDAP-tik eta Moodlek lehenetsitako balioak erabiliko dira ordez.

                Edozein kasutan, erabiltzaileak eremu guzti hauek editatzeko gaitasuna izango du behin saioa hasita."; +$string['auth_ldaptitle'] = "LDAP zerbitzari bat erabili"; +$string['auth_nntpdescription'] = "Metodo honek NNTP zerbitzari bat erabiltzen du emandako erabiltzaile izen eta pasahitza baliozkoak diren egiaztatzeko."; +$string['auth_nntphost'] = "NNTP zerbitzariaren helbidea. IP zenbakia erabili ezazu, ez DNS izena."; +$string['auth_nntpport'] = "Zerbitzari kaia (119 arruntena da)"; +$string['auth_nntptitle'] = "NNTP zerbitzari bat erabili"; +$string['auth_nonedescription'] = "Erabiltzaileen berehala eman dezakete izena eta baliozko kontuak sortu, kanpo zerbitzari baten aurkako autentifikaziorik gabe eta ePosta bidez berretsi gabe. Aukera hau erabiltzeerekin kontuz - honek sor ditzazkeen segurtasun eta administrazio arazoak kontutan hartu."; +$string['auth_nonetitle'] = "Autentifikaziorik ez"; +$string['auth_pop3description'] = "Metodo honek POP3 zerbitzari bat erabiltzen du emandako erabiltzaile izen eta pasahitza baliozkoak diren egiaztatzeko."; +$string['auth_pop3host'] = "POP3 zerbitzariaren helbidea. IP zenbakia erabili, ez DNS izena."; +$string['auth_pop3port'] = "Zerbitzari kaia (110 izan ohi da)"; +$string['auth_pop3title'] = "POP3 zerbitzari bat erabili"; +$string['auth_pop3type'] = "Zerbitzari mota. Zure zerbitzariak zertifikatu segurtasuna erabiltzen badu, pop3cert aukeratu ezazu."; +$string['authenticationoptions'] = "Autentifikazio aukerak"; +$string['authinstructions'] = "Hemen zure erabiltzaileentzat argibideak eman ditzazkezu, erabili behar duten erabiltzaile eta pasahitza zeintzu diren jakin dezaten. Hemen sartutako testua saio hasiera pantailan agertuko da. Zurian uzten baduzu ez da argibiderik emango."; +$string['changepassword'] = "Pasahitz URL-a aldatu"; +$string['changepasswordhelp'] = "Hemen zure erabiltzaileek bere izen edo pasahitza aldatzeko, edo ahaztekotan berreskuratzeko, erabili dezaketen helbide bat zehaztu dezakezu. Hau erabiltzaileei saio hasiera pantailan eta erabiltzaile orrian botoi gisa aurkeztuko zaie. Zurian uzten baduzu ez zaie botoirik aurkeztuko."; +$string['chooseauthmethod'] = "Autentifikazio metodoa aukeratu: "; +$string['guestloginbutton'] = "Bisitariek saioa hasteko botoia"; +$string['md5'] = "MD5 enkriptazioa"; +$string['plaintext'] = "Testu arrunta"; +$string['showguestlogin'] = "Bisitariek saioa hasteko botoia bistaratu edo ezkutatu dezakezu saio hasiera pantailan."; ?> diff --git a/lang/eu/block_course_list.php b/lang/eu/block_course_list.php index 312e9dd02f9..c2292149fca 100644 --- a/lang/eu/block_course_list.php +++ b/lang/eu/block_course_list.php @@ -2,6 +2,12 @@ // block_course_list.php - created with Moodle 1.4.1 (2004083101) -$string['blockname'] = 'Ikastaroen zerrenda'; +$string['allcourses'] = 'Administrariak kurtso guzitak ikusten ditu'; +$string['blockname'] = 'Kurtso zerrenda'; +$string['owncourses'] = 'Administrariak bere kurtsoak ikusten ditu'; +$string['parentlanguage'] = 'es'; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'euskara'; ?> diff --git a/lang/eu/block_online_users.php b/lang/eu/block_online_users.php index 041446c29d9..def69a43d41 100644 --- a/lang/eu/block_online_users.php +++ b/lang/eu/block_online_users.php @@ -2,7 +2,12 @@ // block_online_users.php - created with Moodle 1.4.1 (2004083101) -$string['blockname'] = 'Online-erabiltzaileak'; -$string['periodnminutes'] = 'azkeneko $a minutuetan'; +$string['blockname'] = 'Konektatutakoak'; +$string['configtimetosee'] = 'Erabiltzaile bat linean dagoen detektatzeko minutu kopurua'; +$string['parentlanguage'] = 'es'; +$string['periodnminutes'] = 'azken $a minutuetan'; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'euskara'; ?> diff --git a/lang/eu/block_section_links.php b/lang/eu/block_section_links.php index 3b69cb61ba5..0fa26b311f4 100644 --- a/lang/eu/block_section_links.php +++ b/lang/eu/block_section_links.php @@ -2,8 +2,13 @@ // block_section_links.php - created with Moodle 1.4.1 (2004083101) -$string['jumptocurrenttopic'] = 'Gai hau ikusi'; -$string['jumptocurrentweek'] = 'Aste hau ikusi'; +$string['blockname'] = 'Enlaces de Sección'; +$string['jumptocurrenttopic'] = 'Oraingo gaira joan'; +$string['jumptocurrentweek'] = 'Aste honetara joan'; +$string['parentlanguage'] = 'es'; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'Euskara'; $string['topics'] = 'Gaiak'; $string['weeks'] = 'Asteak'; diff --git a/lang/eu/calendar.php b/lang/eu/calendar.php index 11fc60d9ff1..77c997e6ea1 100644 --- a/lang/eu/calendar.php +++ b/lang/eu/calendar.php @@ -1,18 +1,18 @@ diff --git a/lang/eu/choice.php b/lang/eu/choice.php index 35168839e38..271f6e018e1 100644 --- a/lang/eu/choice.php +++ b/lang/eu/choice.php @@ -1,32 +1,32 @@ diff --git a/lang/eu/countries.php b/lang/eu/countries.php index 52e9dcb2f92..479d8b8889e 100644 --- a/lang/eu/countries.php +++ b/lang/eu/countries.php @@ -3,37 +3,248 @@ $string['AD'] = 'Andorra'; +$string['AE'] = 'Emiratos Árabes Unidos'; +$string['AF'] = 'Afganistán'; +$string['AG'] = 'Antigua y Barbuda'; +$string['AI'] = 'Anguila'; $string['AL'] = 'Albania'; $string['AM'] = 'Armenia'; +$string['AN'] = 'Antillas Holandesas'; $string['AO'] = 'Angola'; +$string['AQ'] = 'Antártida'; $string['AR'] = 'Argentina'; +$string['AS'] = 'Samoa Americana'; +$string['AT'] = 'Austria'; $string['AU'] = 'Australia'; +$string['AW'] = 'Aruba'; +$string['AZ'] = 'Azerbaiyán'; +$string['BA'] = 'Bosnia y Herzegovina'; +$string['BB'] = 'Barbados'; +$string['BD'] = 'Bangladesh'; +$string['BE'] = 'Bélgica'; $string['BF'] = 'Burkina Faso'; $string['BG'] = 'Bulgaria'; +$string['BH'] = 'Bahrein'; $string['BI'] = 'Burundi'; $string['BJ'] = 'Benin'; -$string['CM'] = 'Kamerun'; +$string['BM'] = 'Bermuda'; +$string['BN'] = 'Brunei Darussalam'; +$string['BO'] = 'Bolivia'; +$string['BR'] = 'Brasil'; +$string['BS'] = 'Bahamas'; +$string['BT'] = 'Bután'; +$string['BV'] = 'Islas Bouvet'; +$string['BW'] = 'Botswana'; +$string['BY'] = 'Bielorrusia'; +$string['BZ'] = 'Belice'; +$string['CA'] = 'Canadá'; +$string['CC'] = 'Islas Cocos'; +$string['CF'] = 'República Centroafricana'; +$string['CG'] = 'Congo'; +$string['CH'] = 'Suiza'; +$string['CI'] = 'Costa de Marfil'; +$string['CK'] = 'Islas Cook'; +$string['CL'] = 'Chile'; +$string['CM'] = 'Camerún'; +$string['CN'] = 'China'; +$string['CO'] = 'Colombia'; +$string['CR'] = 'Costa Rica'; +$string['CS'] = 'Serbia y Montenegro'; +$string['CU'] = 'Cuba'; +$string['CV'] = 'Cabo Verde'; +$string['CX'] = 'Islas de Navidad'; +$string['CY'] = 'Chipre'; +$string['CZ'] = 'República Checa'; $string['DE'] = 'Alemania'; -$string['ES'] = 'Espainia'; -$string['FR'] = 'Frantzia'; -$string['GA'] = 'Gabon'; +$string['DJ'] = 'Djibouti'; +$string['DK'] = 'Dinamarca'; +$string['DM'] = 'Dominica'; +$string['DO'] = 'República Dominicana'; +$string['DZ'] = 'Argelia'; +$string['EC'] = 'Ecuador'; +$string['EE'] = 'Estonia'; +$string['EG'] = 'Egipto'; +$string['EH'] = 'Sahara Occidental'; +$string['ER'] = 'Eritrea'; +$string['ES'] = 'España'; +$string['ET'] = 'Etiopía'; +$string['FI'] = 'Finlandia'; +$string['FJ'] = 'Fiji'; +$string['FK'] = 'Islas Malvinas'; +$string['FM'] = 'Micronesia'; +$string['FO'] = 'Islas Faroe'; +$string['FR'] = 'Francia'; +$string['FX'] = 'Francia Metropolitana'; +$string['GA'] = 'Gabón'; +$string['GB'] = 'Reino Unido'; +$string['GD'] = 'Granada'; +$string['GE'] = 'Georgia'; +$string['GF'] = 'Guyana Francesa'; +$string['GH'] = 'Ghana'; +$string['GI'] = 'Gibraltar'; +$string['GL'] = 'Groenlandia'; +$string['GM'] = 'Gambia'; +$string['GN'] = 'Guinea'; +$string['GP'] = 'Guadalupe'; +$string['GQ'] = 'Guinea Ecuatorial'; +$string['GR'] = 'Grecia'; $string['GT'] = 'Guatemala'; +$string['GU'] = 'Guam'; +$string['GW'] = 'Guinea-Bissau'; +$string['GY'] = 'Guyana'; +$string['HK'] = 'Hong Kong'; +$string['HM'] = 'Islas Heard y McDonald'; $string['HN'] = 'Honduras'; +$string['HR'] = 'Croacia'; +$string['HT'] = 'Haití'; +$string['HU'] = 'Hungría'; $string['ID'] = 'Indonesia'; +$string['IE'] = 'Irlanda'; +$string['IL'] = 'Israel'; $string['IN'] = 'India'; +$string['IO'] = 'Territorio Británico del Océano Índico'; +$string['IQ'] = 'Irak'; +$string['IR'] = 'Irán'; +$string['IS'] = 'Islandia'; $string['IT'] = 'Italia'; +$string['JM'] = 'Jamaica'; +$string['JO'] = 'Jordania'; +$string['JP'] = 'Japón'; +$string['KE'] = 'Kenia'; +$string['KG'] = 'Kirguistán'; +$string['KH'] = 'Camboya'; +$string['KI'] = 'Kiribati'; +$string['KM'] = 'Comoras'; +$string['KN'] = 'San Cristóbal Nevis'; +$string['KO'] = 'Kosovo'; +$string['KP'] = 'Corea del Norte'; +$string['KR'] = 'Corea del Sur'; +$string['KW'] = 'Kuwait'; +$string['KY'] = 'Islas Caimán'; +$string['KZ'] = 'Kazajstán'; +$string['LA'] = 'Laos'; +$string['LB'] = 'Líbano'; +$string['LC'] = 'Santa Lucía'; +$string['LI'] = 'Liechtenstein'; +$string['LK'] = 'Sri Lanka'; $string['LR'] = 'Liberia'; +$string['LS'] = 'Lesotho'; +$string['LT'] = 'Lituania'; +$string['LU'] = 'Luxemburgo'; +$string['LV'] = 'Latvia'; +$string['LY'] = 'Jamahiriya Árabe Libia'; +$string['MA'] = 'Marruecos'; +$string['MC'] = 'Mónaco'; +$string['MD'] = 'Moldovia'; +$string['MG'] = 'Madagascar'; +$string['MH'] = 'Islas Marshall'; +$string['MK'] = 'Macedonia'; +$string['ML'] = 'Mali'; +$string['MM'] = 'Myanmar'; +$string['MN'] = 'Mongolia'; +$string['MO'] = 'Macao'; +$string['MP'] = 'Islas Marianas del Norte'; +$string['MQ'] = 'Martinica'; $string['MR'] = 'Mauritania'; +$string['MS'] = 'Montserrat'; $string['MT'] = 'Malta'; +$string['MU'] = 'Mauricio'; +$string['MV'] = 'Maldivas'; +$string['MW'] = 'Malawi'; +$string['MX'] = 'México'; +$string['MY'] = 'Malasia'; +$string['MZ'] = 'Mozambique'; $string['NA'] = 'Namibia'; +$string['NC'] = 'Nueva Caledonia'; +$string['NE'] = 'Níger'; +$string['NF'] = 'Islas Norfolk'; +$string['NG'] = 'Nigeria'; +$string['NI'] = 'Nicaragua'; +$string['NL'] = 'Holanda'; +$string['NO'] = 'Noruega'; $string['NP'] = 'Nepal'; -$string['PA'] = 'Panama'; -$string['PE'] = 'Peru'; +$string['NR'] = 'Naurú'; +$string['NU'] = 'Niue'; +$string['NZ'] = 'Nueva Zelandia'; +$string['OM'] = 'Omán'; +$string['PA'] = 'Panamá'; +$string['PE'] = 'Perú'; +$string['PF'] = 'Polinesia Francesa'; +$string['PG'] = 'Papúa Nueva Guinea'; +$string['PH'] = 'Filipinas'; +$string['PK'] = 'Pakistán'; $string['PL'] = 'Polonia'; +$string['PM'] = 'San Pedro y Miquelon'; +$string['PN'] = 'Pitcairn'; +$string['PR'] = 'Puerto Rico'; +$string['PS'] = 'Palestina'; $string['PT'] = 'Portugal'; -$string['SD'] = 'Sudan'; +$string['PW'] = 'Palau'; +$string['PY'] = 'Paraguay'; +$string['QA'] = 'Qatar'; +$string['RE'] = 'Reunión'; +$string['RO'] = 'Rumania'; +$string['RU'] = 'Federación Rusa'; +$string['RW'] = 'Ruanda'; +$string['SA'] = 'Arabia Saudita'; +$string['SB'] = 'Islas Salomón'; +$string['SC'] = 'Seychelles'; +$string['SD'] = 'Sudán'; +$string['SE'] = 'Suecia'; +$string['SG'] = 'Singapur'; +$string['SH'] = 'Santa Helena'; +$string['SI'] = 'Eslovenia'; +$string['SJ'] = 'Islas Svalbard y Jan Mayen'; +$string['SK'] = 'Eslovaquia'; +$string['SL'] = 'Sierra Leona'; +$string['SM'] = 'San Marino'; +$string['SN'] = 'Senegal'; +$string['SO'] = 'Somalía'; +$string['SR'] = 'Surinam'; +$string['ST'] = 'Santo Tomé y Príncipe'; +$string['SV'] = 'El Salvador'; +$string['SY'] = 'Siria'; +$string['SZ'] = 'Swazilandia'; +$string['TC'] = 'Islas Turcas y Caicos'; +$string['TD'] = 'Chad'; +$string['TF'] = 'Territorios Franceses del Sur'; $string['TG'] = 'Togo'; +$string['TH'] = 'Tailandia'; +$string['TJ'] = 'Tayikistán'; +$string['TK'] = 'Tokelau'; +$string['TM'] = 'Turkmenistán'; +$string['TN'] = 'Túnez'; +$string['TO'] = 'Tonga'; +$string['TP'] = 'Timor Oriental'; +$string['TR'] = 'Turquía'; +$string['TT'] = 'Trinidad y Tobago'; +$string['TV'] = 'Tuvalu'; +$string['TW'] = 'Taiwán'; +$string['TZ'] = 'Tanzania'; +$string['UA'] = 'Ucrania'; $string['UG'] = 'Uganda'; -$string['US'] = 'Estatu Batuak'; +$string['US'] = 'Estados Unidos'; +$string['UY'] = 'Uruguay'; +$string['UZ'] = 'Uzbekistan'; +$string['VA'] = 'El Vaticano'; +$string['VC'] = 'San Vincente y Las Granadinas'; +$string['VE'] = 'Venezuela'; +$string['VG'] = 'Islas Vírgenes (Británícas)'; +$string['VI'] = 'Islas Vírgenes (Americanas)'; +$string['VN'] = 'Vietnam'; +$string['VU'] = 'Vanuatu'; +$string['WA'] = 'Gales'; +$string['WF'] = 'Islas Wallis y Futuna'; +$string['WS'] = 'Samoa'; +$string['YE'] = 'Yemen'; +$string['YT'] = 'Mayotte'; +$string['ZA'] = 'Sudáfrica'; +$string['ZM'] = 'Zambia'; +$string['ZR'] = 'Zaire'; +$string['ZW'] = 'Zimbawe'; +$string['parentlanguage'] = 'es'; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'Euskara'; ?> diff --git a/lang/eu/docs/teacher.html b/lang/eu/docs/teacher.html deleted file mode 100644 index c326857f469..00000000000 --- a/lang/eu/docs/teacher.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - Moodle Dokumentuak: Irakasle manuala - - - - - -

                - Irakasle manuala -

                -

                - Orri hau Moodle erabiliz ikastaroak sortzeko gida azkar bat da. Eskuragarri dauden funtzio nagusiak laburbiltzen ditu, eta egin behar dituzun erabaki arruntak. -

                -

                - Dokumentu honen atalak: -

                -
                  -
                1. - Hasiera -
                2. -
                3. - Ikastaroaren ezarpenak -
                4. -
                5. - Fitxategiak igo -
                6. -
                7. - Aktibidadeak ezarri -
                8. -
                9. - Ikastaroa martxan jarri -
                10. -
                11. - Informazio gehiago -
                12. -
                -

                - Hasiera -

                -
                -

                - Dokumentu honetan guneraren administratzaileak hasteko ikastaro huts bat eman dizula suposatzen da. Ikastaroan irakasle konturekin sartu zarela ere suposatzen da ere. -

                -

                - Hone hemen hasteko hiru truko. -

                -
                  -
                1. - Ez izan siakaren bildurrik: -
                  - Askatasunez ikutu eta ladatu itzazu gauzak. Moodle ikataro batean zaila da zerbait apurtzea, eta egiten baduzu ere konponketa erreza izan ohi da. -
                  -
                2. -
                3. - Ikonotxo hauek erabili: -
                  -

                  -   - edizio ikonoa ondoan duena editatzeko aukera emango dizu. -

                  -

                  - - laguntza ikonoa laguntza leiho bat irekiko du -

                  -
                  -
                4. -
                5. - Orrialde bakoitzaren goikaldean dagoen nabigazio barra erabili -
                  - non zauden gogoraraziko dizu eta galtzea ekidin. -
                  -
                6. -
                -
                -
                -

                - Ikastaro ezarpenak -

                -
                -

                - Egin behar duzun lehenbiziko gauza zure ikataroaren hasiera orriko "Administrazio" ataleko "Ezarpenak..." loturan klik egitea da. (Lotura hau, eta administrazio atal osoa, zuk eta gune administratzaileek besterik ezin dute ikusi. Ikasleek ez dute lotura ezta ikusiko ere). -

                -

                - Ezarpen orrian zure ikastaroeren hainbat ezarpen aldatu ditzazkezu, bere izena eta hasiera data adibidez. Ez ditut guztiak hemen azalduko, atal bakoitzak bere laguntza ikonoa duelako, eta bertan ondo azalduta daude. Hala ere, hauetatik garrantzitsuenari buruz bi hitz esango dizkizut - ikastaro formatua. -

                -

                - Ikastaro formatuak ikastaroaren oinarrizko estruktura erabakitzeko aukera ematen dizu, txantiloi bat gisa. Moodle 1.0 bertsioak hiru formatu ditu - etorkizunean askoz gehiago egongo dira zihurrenez (mesedez ideia berriak ingelesez niri bidali: martin@moodle.com!) -

                -

                - Hauek adibidezko hiru ikastaroen irudiak dituzu, (koloreei ez egin jaramonik, gune osoarentzat ezartzen ditu gune administratzaileak): -

                -

                - Aste formatua: -

                -

                - -

                -

                -   -

                -

                - Gai formatua: -

                -

                - -

                -

                -   -

                -

                - Formatu irekia: -

                -

                - -

                -

                -   -

                -

                - Kontutan har ezazu aste eta gai formatuak oso estruktura antzekoa dutela. Ezberdintasun nagusia zera da, aste formatuan, kutxatxo bakoitzak zehazki astebeteko edukia dituela, gai formatuan ordea, kutxaxo bakoitzaren edukia zuk nahi duzuna izan daiteke. Formatu irekia ez die edukiei garrantzi berezirik emeten, eta foro bakarraren inguruan antolatuta dago - foro hau hasiera orrian bistaratzen da. -

                -

                - Ikastaroaren ezarpen orrian laguntza botoiak ikusi xehetasun gehiagorako. -

                -
                -
                -

                - Fitxategiak igo -

                -
                -

                - Ikastaroan erabili nahi duzun materiala izan dezakezu, web guneak, audio edo bideo fitxategiak, word dokumentuak, edo flash animazioak adibidez. Edozein motako fitxategiak ikastarora igo daitzeke, eta zerbitzarian gordeko dira. Fitxategiak zerbitzarian daudela, hauek mugitu izenez aldatu editatu edo ezabatu ditzazkezu. -

                -

                - Hau guztia Administrazio menuko Fitzategiak lotura jarraituz egin dezakezu. Fitxategi atalak irura ha du: -

                -

                - -

                -

                -   -

                -

                - Tresna hau irakasleek soilik ikus dezakete - ez dago ikasleentzat eskuragarri. Fitxategiak ikasleek (as "Baliabideak" atalean ikusten ditzute - hurengo kapitulua ikusi). -

                -

                - Irudian ikusi dezakezunez, fitxategiak azpidirektorietan antolatzen dira. Nahibeste azpidirektorio sor ditzazkezu zure fitxategiak antolatzeko eta fitxategiak batetik bestera mugitu ditzazkezu. -

                -

                - Web bitartez fitxategiak igotzerakoan banan banan egin beharko duzu. Fitxategi asko aldi berean igo nahi badituzu (adibidez webgune oso bat), errezagoa izan daiteke zip programa bat erabiltzea guztiak fitxategi bakarrean konprimitzeko, zip fitxategia igo eta zerbitzarian deskonprimitu ("unzip" lotura bat ikusiko duzu zip fitxategien ondoan). -

                -

                - Igotako edozein fitxategi ikusteko bere izenburuan egin klik . Zure nabigatzaileak ireki edo ordenagailura deskargatuko dizu. -

                -

                - HTML esta testu fitxategiak zuzenean editatu daitezke. Beste motako fitxategiak zure ordenagailuan editatu eta berriz igo beharko dituzu. Aurretik dagoen fitxategi baten izen berberarekin igotzen baduzu berriak zaharra ordezkatuko du . -

                -

                - Azken ohar bat: Zure edukia webean badago aurretik ez duzu zertan hona igo behar - ikastaro barrutik lotura bat ezarri dezakezu (ikusi hurrengo kapituluko baliabideak atala). -

                -
                -
                -

                - Aktibidadeak ezarri -

                -
                -

                - Ikastaro bat eraikitzean ikastaro aktibidade moduluak gehitu beharko dituzu ikastaroaren orri nagusira, ikasleek erabili ditzaten. Ordena nahi duzunean aldatu dezakezu. -

                -

                - Edizioa aktibatzeko, Administrazioko "Edizioa aktibatu" botoia zapaldu. Honek zure ikastaro orri nagusia editatzea baimentzen dizun kontrol gehigarriak bistaratu edo ezkutatzen ditu. Goiko irudian (Aste formatodun ikastaroarena) edizio kontrolak aktibatuta daude. -

                -

                - Aktibidade berria gehitzeko, dagokion aste, gai edo atalera joan, eta menutik zeregin mota aukeratu. Hona hemen Moodle 1.0ren aktibidade estandarren zerrenda: -

                -
                -
                - Zeregina -
                -
                - Zeregin bati, eginbehar bat epe bat eta gehienezko kalifikazio bat ezartzen diozu. Ikasleek fitxategi bat igo ahal izango dute, eskatutakoa betetzeko. Fitxategia noiz igo duten gordetzen da. Ondoren, orri bakar batean fitxategi guztiak ikusi ahal izango dituzu (eta goiz edo berandu ibili den), eta orduan kalifikazio eta iruzkin bat ezarri. Ikasle bati kalifikazioa jarri eta ordu erdira Moodlek ePosta bat bidaliko dio ikasleari. -
                -
                -
                -
                -
                -
                - Aukera -
                -
                - Aukera aktibidadea oso sinplea da - galdera bat egiten duzu eta erantzun posibleak ezarri. Ikasleek bere aukera egin dezakete, eta zuk emaitzen txosten bat jaso dezakezu. Iritzien inkesta gisa, edo bozketarako erabili dezakezu. -
                -
                -
                -
                -
                -
                - Foroa -
                -
                - Modulu hau garrantzitsuena da - eztabaida hemen ematen da. Foro berria gehitzerakoan, mota ezberdinak izango dituzu aukeran - Gai bakarreko eztabaida , guztientzat libre den foro orokor bat, edo ikasleko eztabaida gaoi bakarreko foroa . -
                -
                -
                -
                -
                -
                - Egunkaria -
                -
                - Egunkari aktibidade bakoitza ikastaro osoaren egunkarian sarrera bat da. Bakoitzeko erantzun libreko galdera bat ezarri dezakezu ikasleei gaia bideratzeko, eta egunkaria irekita dagoen epearen leiho bat ere (Aste formatodun ikastaroan soilik). Ikasleek egunkarietan erreflexiboki eta kritikoki idatz dezaten bultzatu ezazu, beraiek eta zuk zeuk besterik ez duzue ikusten. Ondoren, aste edo goi horretako sarrera guztiak kalifikatu ditzazkezu eta iruzkina egin ere, eta ikasleek automatikoki ePostaz zure erantzunen berri jasoko dute. -
                -
                -
                -
                -
                -
                - Baliabidea -
                -
                - Baliabideak zure ikastaroaren edukiak dira. Balibaide bat igo duzun edo URL baten bidez kokatu dezakezun edozein fitxategi da. Testu arrunteko orrian mantendu ditzazkezu ere formularioan zuzenean idatziz. -
                -
                -
                -
                -
                -
                - Azterketa -
                -
                - Modulu honek test moduko azterketak sortu eta jartzea baimentzen dizu, galderak aukera anitzekoak, egia/gezurra motakoak edo erantzun laburrekoak izan daitezke. Galdera hauek kategorietan datub-basean gordetzen dira, eta ikastaroan bertan edo beste ikastaro batean berrerabili daitezke. Azkertetan saiakera bat baino gehiago baimendu dezakezu. Saiakera bakoitza gordetzen da, eta irakasleak erabakitzen du erantzunen inguruko iruzkinak bueltatuko dizkion edo, erantzun zuzenak bistaratuko dizkion. Modulu honek kalifikazioak jartzeko aukera ematen du. -
                -
                -
                -
                -
                -
                - Inkesta -
                -
                - Inkesta moduluak aldez aurretik prestatutako inkesta batzuk ditu, hauek zure klasea ulertu eta ebaluatzeko baliogarriak dira. Gaur egun COLLES eta ATTLS instrumentuak ditu. Ikasleei ikastaro hasieran al zizkie eman diagnosi tresna gisa eta ikastaroaren bukaeran ebaluaketa tresna gisa (Nik nire ikastaroetan astero bat erabiltzen dut). -
                -

                -

                - Zure aktibidadeak gehitu eta gero gora eta behera mugitu ditzazkezu zure ikastaroaren estrukturan bakoitzaren ondoan dauden fletxatxoen ikonoak erbiliz ( ). X iruditxoarekin ezabatu ditzazkezu , eta edizio ikonoarekin editatzu ditzazkezu . -

                -
                -
                -

                - Ikastaroa martxan jarri -

                -
                -

                - Honen inguruko tesi bat idatzi nezake. Izatez banago honen inguruko tesi bat idazten. -

                -

                - Ordurarte hone puntu pare bat: -

                -
                  -
                1. Zure burua foro guztietara harpidetu. -
                2. -
                3. Ikasleei bere erabiltzaile soslaia betetzera animatu (argazkia barne) eta guztiak irakurri itzazu - honek berain ondorengo idazkiei testuinguru bat emango die. -
                4. -
                5. Zure oharrak "Irakaslearen foro" pribatuan gorde (Administrazioan). Taldean irakasterakoan bereziki erabilgarria da hau. -
                6. -
                7. "Log-ak" lotura erabili (Administrazioan) log gordin eta osoak irakurtzeko. Hor 60 segunduero eguneratzen den leiho bat agertzen da eta azken orduan egondako aktibidadea bistaratzen du. Egunean zehar irekita mantzentzean ikastaroaren mugimenduaren goraberak ikus ditzazkezu eta gertatzen denarekin kontaktuan mantendu. -
                8. -
                9. "Aktibidade Txostenak erabili " (jende guztiaren zerrendan, izen bakoitzaren ondoan, edo edozein erabiltzaileren soslaian). Honen bidez pertsona zehatz bat ikastaroan zertan aritu den jakiteko erabilgarria da. -
                10. -
                11. Ikasleei azkar erantzun. Ez utzi geroko - berehala egin. Egin ezean sortu daiteken mezu atzeratuekin bolumenarekin itotzea erreza izateaz gain, zure ikastaroan komunitate sentzazioa sortu eta mantentzeko ezinbestekoa da. -
                12. -
                -
                -
                -

                - Informazio gehiago -

                -
                -

                - Arazo berezirik baduzu zure gune administratzailearekin jarri beharko zinateke kontaktuan . -

                -

                - Moodle hobetzeko ideiarik baduzu, edo istorio onen bat kontatzeko, moodle.com gunera etorri eta "Using Moodle" ikastaroan sartu. Esan behar dituzunak entzuteko irrikiaz gaude, eta Moodle hobetzen lagundu dezakezu. -

                -

                - Modulu berriren bat gehitu, dokumentazioa idatzi edo antzekoak egin nahi badituzu, nirekin kontaktuan jarri Martin Dougiamas edo Moodle guneko "bug tracker" atala arakatu, bugs.moodle.com -

                -

                - Eskerrink asko Moodle erabiltzeagatik, sorte on! -

                -
                -

                -   -

                -
                -

                - Moodle Documentazioa -

                -

                - Version: $Id$ -

                - - diff --git a/lang/eu/forum.php b/lang/eu/forum.php index e5d452a4e9e..bf57143df85 100644 --- a/lang/eu/forum.php +++ b/lang/eu/forum.php @@ -1,141 +1,105 @@ -name - $a->date'; -$string['couldnotadd'] = 'Ezin izan da zure mezua gehitu; errore bat gertatu da nonbait.'; -$string['couldnotdeleteratings'] = 'Barkatu, hori ezin da ezabatu norbaitek dagoeneko baloratu duelako'; -$string['couldnotdeletereplies'] = 'Barkatu, hori ezin da ezabatu norbaitek dagoeneko erantzun diolako'; -$string['couldnotupdate'] = 'Ezin izan da zure mezua eguneratu; errore bat gertatu da nonbait.'; -$string['delete'] = 'Ezabatu'; -$string['deleteddiscussion'] = 'Mezua ezabatu da'; -$string['deletedpost'] = 'Mezua ezabatu da'; -$string['deletesure'] = 'Ziur al zaude mezu hau ezabatu nahi duzula?'; -$string['digestmailheader'] = '$a->sitename-eko foroetako mezu berrien banaketa da hau. Foroetako zure ezarpenak editatzeko zoaz hona: $a->userprefs'; -$string['digestmailprefs'] = 'Zure erabiltzaile-profila'; -$string['discussion'] = 'Mezuaren gaia'; -$string['discussionmoved'] = 'Gai hau hona mugitu da: $a'; -$string['discussionname'] = 'Mezuaren izena'; -$string['discussions'] = 'Mezuak'; -$string['discussionsstartedby'] = '$a(e)k hasitako eztabaidak'; -$string['discussionsstartedbyrecent'] = '$a(e)k orain gutxi hasitako eztabaidak'; -$string['discussthistopic'] = 'Gai hau eztabaidatu'; -$string['eachuserforum'] = 'Pertsona bakoitzak eztabaida bat bidaltzen du'; -$string['edit'] = 'Editatu'; -$string['editing'] = 'Editatzen'; -$string['emptymessage'] = 'Zerbait oker dabil zure mezuarekin. Agian zurian utzi duzu, edo eranskina handiegia da. Zure aldaketak EZ dira gorde.'; -$string['everyonecanchoose'] = 'Edonork aukera dezake harpidetzea '; -$string['everyoneissubscribed'] = 'Denak daude foro honetara harpidetuta'; -$string['existingsubscribers'] = 'Dauden harpidedunak'; -$string['forcesubscribe'] = 'Denak harpidetzera behartu'; -$string['forcesubscribeq'] = 'Denak harpidetzera behartu?'; -$string['forum'] = 'Foroa'; -$string['forumintro'] = 'Fororako sarrera'; -$string['forumname'] = 'Foroaren izena'; -$string['forums'] = 'Foroak'; -$string['forumtype'] = 'Foro-mota'; -$string['generalforum'] = 'Foro arruntak erabilpen orokorrerako'; -$string['generalforums'] = 'Foro orokorrak'; -$string['inforum'] = 'Non: $a'; -$string['intronews'] = 'Berri orokorrak eta iragarpenak'; -$string['introsocial'] = 'Foro ireki bat nahi duzun edozertaz aritzeko'; -$string['introteacher'] = 'Irakasleek bakarrik erabiliko duten ohar eta eztabaida foroa'; -$string['lastpost'] = 'Azken mezua'; -$string['learningforums'] = 'Ikasteko foroak'; -$string['maxattachmentsize'] = 'Eranskinaren gehienezko tamaina'; -$string['maxtimehaspassed'] = 'Barkatu, mezu hau($a)editatzeko gehienezko denbora amaitu da!'; -$string['message'] = 'Mezua'; -$string['modeflatnewestfirst'] = 'Erantzunak era lauean erakutsi, berrienak lehen'; -$string['modeflatoldestfirst'] = 'Erantzunak era lauean erakutsi, zaharrenak lehen'; -$string['modenested'] = 'Erantzunak hariaren arabera erakutsi'; -$string['modethreaded'] = 'Erantzunak gaika erakutsi'; -$string['modulename'] = 'Foroa'; -$string['modulenameplural'] = 'Foroak'; -$string['more'] = 'Gehiago'; -$string['movethisdiscussionto'] = 'Mugitu eztabaida hau hona:'; -$string['namenews'] = 'Berrien foroa'; -$string['namesocial'] = 'Foro irekia'; -$string['nameteacher'] = 'Irakasleen foroa'; -$string['newforumposts'] = 'Mezu berriak'; -$string['nodiscussions'] = 'Ez dago eztabaidagairik oraindik foro honetan'; -$string['noguestpost'] = 'Barkatu, bisitariek ezin dute mezurik bidali'; -$string['nomorepostscontaining'] = 'Ez dago \'$a\' duen mezu gehiago'; -$string['nonews'] = 'Ez dago mezu berririk'; -$string['noposts'] = 'Mezurik ez'; -$string['nopostscontaining'] = 'Ez da \'$a\' duen mezurik aurkitu'; -$string['nosubscribers'] = 'Oraindik inor ez da foro honetara harpidetu'; -$string['notingroup'] = 'Barkatu, baina talde honetako partaidea izan behar duzu foro hau ikusteko'; -$string['nownotsubscribed'] = '$a->name erabiltzaileak EZ du \'$a->forum\' foroko kopiarik jasoko e-postaz.'; -$string['nowsubscribed'] = '$a->name erabiltzaileak \'$a->forum\' foroko kopiak jasoko ditu e-postaz.'; -$string['numposts'] = '$a mezu'; -$string['olderdiscussions'] = 'Eztabaida zaharragoak'; -$string['openmode0'] = 'Mezurik ez, erantzunik ez'; -$string['openmode1'] = 'Eztabaida berriak ez daude onartuta, baina erantzunak bai'; -$string['openmode2'] = 'Eztabaida berriak eta erantzunak onartuta daude'; -$string['parent'] = 'Erakutsi abiapuntua'; -$string['parentofthispost'] = 'Mezu honen abiapuntua'; -$string['postadded'] = 'Zure bidalketa ongi gehitu da.Aldaketaren bat egin nahi baduzu

                $a dituzu berau editatzeko.'; -$string['postincontext'] = 'Mezu hau testuinguruan ikusi'; -$string['postmailinfo'] = 'Hau $a web gunean argitaratutako mezu baten kopia da. -Zure erantzuna web gunearen bitartez gehitzeko, lotura hau erabili:'; -$string['postrating1'] = 'Batez ere BANATUTAKO jakintza erakusten du'; -$string['postrating2'] = 'Berdin banatuta zein lotuta'; -$string['postrating3'] = 'Batez ere LOTUTAKO jakintza erakusten du'; -$string['posts'] = 'Mezuak'; -$string['posttoforum'] = 'Bidali mezua forora'; -$string['postupdated'] = 'Zure mezua eguneratu da'; -$string['potentialsubscribers'] = 'Balizko harpidedunak'; -$string['processingpost'] = '$a mezuaren bidalketa ari da'; -$string['prune'] = 'Bereiztu'; -$string['prunedpost'] = 'Eztabaida berria sortu da mezu hau erabiliz'; -$string['pruneheading'] = 'Mezu hau abiapuntu hartuta, sortu eztabaida berri bat foroan'; -$string['rate'] = 'Baloratu'; -$string['rating'] = 'Balorazioa'; -$string['ratingeveryone'] = 'Edozeinek balora ditzake mezuak'; -$string['ratingno'] = 'Baloraziorik ez'; -$string['ratings'] = 'Balorazioak'; -$string['ratingssaved'] = 'Balorazioak gordeta'; -$string['re'] = 'Er:'; -$string['readtherest'] = 'Gai osoa irakurri'; -$string['replies'] = 'Erantzunak'; -$string['repliesmany'] = '$a erantzun orain arte'; -$string['repliesone'] = 'erantzun $a orain arte'; -$string['reply'] = 'Erantzun'; -$string['replyforum'] = 'Erantzuna forora bidali'; -$string['search'] = 'Bilatu'; -$string['searchforums'] = 'Foroetan bilatu'; -$string['searcholderposts'] = 'Bilatu mezu zaharragoetan'; -$string['searchresults'] = 'Bilaketaren emaitzak'; -$string['sendinratings'] = 'Nire azken balorazioak bidali'; -$string['showsubscribers'] = 'Harpidedunak erakutsi'; -$string['singleforum'] = 'Eztabaida arrunt bakarra'; -$string['startedby'] = 'Nork bidalia'; -$string['subject'] = 'Izenburua'; -$string['subscribe'] = 'Foro honetara harpidetu'; -$string['subscribeall'] = 'Harpidetu denak foro honetara'; -$string['subscribed'] = 'Harpidetuta'; -$string['subscribenone'] = 'Denen harpidetza ezabatu foro honetan'; -$string['subscribers'] = 'Harpidedunak'; -$string['subscribersto'] = '\'$a\'(e)ko harpidedunak'; -$string['subscribestart'] = 'Bidali e-postaz foro honetako mezuak'; -$string['subscribestop'] = 'Ez bidali e-postaz foro honetako mezurik'; -$string['subscription'] = 'Harpidetza'; -$string['subscriptions'] = 'Harpidetzak'; -$string['unsubscribe'] = 'Foro honetarako harpidetza kendu'; -$string['unsubscribed'] = 'Harpidetza kenduta'; -$string['unsubscribeshort'] = 'Harpidetza kendu'; -$string['yesforever'] = 'Bai, betiko'; -$string['yesinitially'] = 'Bai, behin-behinean'; -$string['youratedthis'] = 'Hau baloratu duzu'; -$string['yournewtopic'] = 'Zure eztabaidagai berria'; -$string['yourreply'] = 'Zure erantzuna'; +$string['addanewdiscussion'] = "Eztabaida gai berria gehitu"; +$string['allowchoice'] = "Edonori aukeratzea baimendu"; +$string['allowdiscussions'] = "\$a batek foro honetan idatz dezake?"; +$string['allowratings'] = "Bidalketak baloratzea baimendu?"; +$string['allowsdiscussions'] = "Foro honek norbanakoek eztabaida gai bat hastea baimentzen du."; +$string['anyfile'] = "Edozein fitxategi"; +$string['attachment'] = "Eranskina"; +$string['bynameondate'] = "\$a->name - \$a->date"; +$string['couldnotadd'] = "Ezin izan da zure bidalketa gehitu errore ezezagun baten erruz"; +$string['couldnotdeleteratings'] = "Barkatu, hori ezin da ezabatu jendeak dagoeneko baloratu duelako"; +$string['couldnotdeletereplies'] = "Barkatu, hori ezin da ezabatu jendeak dagoeneko erantzun diolako"; +$string['couldnotupdate'] = "Ezin izan da zure bidalketa eguneratu errore ezezagun baten erruz"; +$string['delete'] = "Ezabatu"; +$string['deleteddiscussion'] = "Eztabaida gaia ezabatu da"; +$string['deletedpost'] = "Bidalketa ezabatu da"; +$string['deletesure'] = "Bidalketa hau ezabatu nahi duzula zihur zaude?"; +$string['discussion'] = "Eztabaida"; +$string['discussions'] = "Eztabaidak"; +$string['discussionsstartedby'] = "\$a(e)k hasitako eztabaidak"; +$string['discussthistopic'] = "Gai hau eztabaidatu"; +$string['eachuserforum'] = "Pertsona bakoitzak eztabaida bat bidaltzen du"; +$string['edit'] = "Editatu"; +$string['editing'] = "Editatzea"; +$string['emptymessage'] = "Zerbait oker dabil zure bidalketarekin. Agian zurian utzi duzu, edo eranskina handiegia da. Zure aldaketak EZ dira gorde."; +$string['everyonecanchoose'] = "Edonork harpidetzea aukeratu dezake"; +$string['everyoneissubscribed'] = "Denak daude foro honetara harpidetuta"; +$string['forcesubscribe'] = "Denak harpidetzera behartu"; +$string['forcesubscribeq'] = "Denak harpidetzera behartu?"; +$string['forum'] = "Foroa"; +$string['forumintro'] = "Foro sarrera"; +$string['forumname'] = "Foro izena"; +$string['forums'] = "Foroak"; +$string['forumtype'] = "Foro mota"; +$string['generalforum'] = "Foro arruntak erabilpen orokorrerako"; +$string['generalforums'] = "Foro orokorrak"; +$string['inforum'] = "\$a(e)n"; +$string['intronews'] = "Berri orokorrak eta iragarpenak"; +$string['introsocial'] = "Foro ireki bat nahi duzun edozertaz aritzeko"; +$string['introteacher'] = "Irakasleek bakarrik erabiliko duten ohar eta eztabaida foroa"; +$string['learningforums'] = "Ikasketa foroak"; +$string['maxtimehaspassed'] = "Barkatu, Sorry,(\$a) bidalketa hau editatzeko gehienezko denbora igaro da!"; +$string['message'] = "Mezua"; +$string['modeflatoldestfirst'] = "Erantzunak era lauean bistaratu, zaharrenak lehen"; +$string['modeflatnewestfirst'] = "Erantzunak era lauean bistaratu, berrienak lehen"; +$string['modenested'] = "Erantzunak era habiratuan bistaratu"; +$string['modethreaded'] = "Erantzunak gaika bistaratu"; +$string['more'] = "Gehiago"; +$string['namenews'] = "Berrien foroa"; +$string['namesocial'] = "Foro irekia"; +$string['nameteacher'] = "Irakasle foroa"; +$string['newforumposts'] = "Forora bidalketa berriak"; +$string['nodiscussions'] = "Ez dago eztabaida gairik oraindik foro honetan"; +$string['noguestpost'] = "Barkatu, bisitariek ezin dituzte bidalketak egin"; +$string['noposts'] = "Bidalketarik ez"; +$string['nopostscontaining'] = "Ez da '\$a' duen bidalketarik aurkitu"; +$string['nosubscribers'] = "Oraindik inor ez da foro honetara harpidetu"; +$string['nownotsubscribed'] = "\$a->name erabiltzaileak EZ du '\$a->forum' foroko kopiarik jasoko ePostaz."; +$string['nowsubscribed'] = "\$a->name erabiltzaileak '\$a->forum' foroko kopiak jasoko ditu ePostaz."; +$string['numposts'] = "\$a bidalketa"; +$string['olderdiscussions'] = "Eztabaida zaharragoak"; +$string['openmode0'] = "Eztabaidarik gai berririk ez, erantzunik ez"; +$string['openmode1'] = "Eztabaida gai berriak ez daude onartuta, baina erantzunak bai"; +$string['openmode2'] = "Eztabaida gai berriak eta erantzunak onartuta daude"; +$string['parentofthispost'] = "Bidalketa honen gurasoa"; +$string['postadded'] = "Zure bidalketa ongi gehitu da.Aldaketaren bat egin nahi baduzu

                \$a dituzu berau editatzeko."; +$string['postincontext'] = "Bidalketa hau testuinguruan ikusi"; +$string['postmailinfo'] = "Hau \$a webgunean argitaratutako mezu baten kopia da. +Zure erantzuna webgunearen bitartez gehitzeko, lotura hau erabili:"; +$string['postrating1'] = "Batez ere BANATUTAKO jakintza erakuzten du"; +$string['postrating2'] = "Berdin banatuta zein lotuta"; +$string['postrating3'] = "Batez ere LOTUTAKO jakintza erakuzten du"; +$string['postupdated'] = "Zure bidalketa eguneratu da"; +$string['processingpost'] = "\$a bidalketa prozesatzen"; +$string['rate'] = "Baloratu"; +$string['ratings'] = "Balorazioak"; +$string['readtherest'] = "Gai osoa irakurri"; +$string['ratingssaved'] = "Balorazioak gordeta"; +$string['re'] = "Re:"; // Put in front of subjects that are replies to another post +$string['repliesmany'] = "\$a erantzun orain arte"; +$string['repliesone'] = "erantzun \$a orain arte"; +$string['reply'] = "Erantzun"; +$string['search'] = "Bilatu"; +$string['searchresults'] = "Bilaketaren emaitzak"; +$string['searchforums'] = "Foroetan bilatu"; +$string['sendinratings'] = "Nire azken balorazioak bidali"; +$string['showsubscribers'] = "Harpidedunak bistaratu"; +$string['singleforum'] = "Eztabaida arrunt bakarra"; +$string['subject'] = "Izenburua"; +$string['subscribe'] = "Foro honetara harpidetu"; +$string['subscribed'] = "Harpidetuta"; +$string['subscribers'] = "Harpidedunak"; +$string['subscribersto'] = "'\$a'(e)ko harpidedunak"; +$string['unsubscribe'] = "Foro honetara harpidetza eten"; +$string['youratedthis'] = "Hau baloratu duzu"; +$string['yournewtopic'] = "Zure eztabaida gai berria"; +$string['yourreply'] = "Zure erantzuna"; ?> diff --git a/lang/eu/glossary.php b/lang/eu/glossary.php index 676b9babc50..aa8d7dcd8e4 100644 --- a/lang/eu/glossary.php +++ b/lang/eu/glossary.php @@ -1,126 +1,21 @@ Kontzeptua eta azalpena derrigorrezko datuak dira.'; -$string['explainall'] = 'Erakutsi sarrera guztiak orrialde bakar batean'; -$string['explainalphabet'] = 'Bilatu glosategian aurkibide hau erabiliz'; -$string['explainspecial'] = 'Erakutsi letraz hasten ez diren sarrerak'; -$string['exportedentry'] = 'Sarrera esportatua'; -$string['exportedfile'] = 'Fitxategi esportatua'; -$string['exportentries'] = 'Sarrerak esportatu'; -$string['exportglossary'] = 'Glosategia esportatu'; -$string['exporttomainglossary'] = 'Glosategi nagusira esportatu'; -$string['filetoimport'] = 'Inportatu beharreko fitxategia'; -$string['fillfields'] = 'Kontzeptua eta azalpena derrigorrezko datuak dira'; -$string['glosssaryexported'] = 'Glosategia esportatuta'; -$string['importcategories'] = 'Inportatu kategoriak'; -$string['importedcategories'] = 'Inportatutako kategoriak'; -$string['importedentries'] = 'Inportatutako sarrerak'; -$string['importentries'] = 'Inportatu sarrerak'; -$string['mainglossary'] = 'Glosategi nagusia'; -$string['maxtimehaspassed'] = 'Barkatu, baina iruzkin hau ($a) editatzeko geheienzko denbora agortu egin duzu!'; -$string['modulename'] = 'Glosategia'; -$string['modulenameplural'] = 'Glosategiak'; -$string['newentries'] = 'Sarrera berriak'; -$string['newglossary'] = 'Glosategi berria'; -$string['newglossarycreated'] = 'Glosategi berria sortu da'; -$string['newglossaryentries'] = 'Glosategiko sarrera berriak:'; -$string['nocomment'] = 'Ez dago iruzkinik'; -$string['nocomments'] = '(iruzkinik ez sarrera honetan)'; -$string['noconceptfound'] = 'Ez dago kontzpturik edo azalpenik.'; -$string['noentries'] = 'Sarrerarik ez atal honetan '; -$string['noentry'] = 'Sarrerarik ez'; -$string['notcategorised'] = 'Kategoriarik gabe'; -$string['numberofentries'] = 'Sarrera-kopurua'; -$string['onebyline'] = '(lerro bakoitzeko bat)'; -$string['printerfriendly'] = 'Inprimatzeko bertsioa'; -$string['question'] = 'Galdera'; -$string['rate'] = 'Baloratu'; -$string['rating'] = 'Balorazioa'; -$string['ratingeveryone'] = 'Edozeinek balora ditzake sarrerak'; -$string['ratingno'] = 'Baloraziorik ez'; -$string['ratingonlyteachers'] = '$a -(e)k bakarrik balora ditzake sarrerak'; -$string['ratings'] = 'Balorazioak'; -$string['ratingssaved'] = 'Gordetako balorazioak'; -$string['ratingsuse'] = 'Erabili balorazioak'; -$string['ratingtime'] = 'Balorazioak epe honetan bakarrik egin ahal izango dira:'; -$string['searchindefinition'] = 'Bilatu testu osoan'; -$string['showalphabet'] = 'Erakutsi alfabetoa'; -$string['sortbycreation'] = 'Sortu zeneko dataren arabera'; -$string['sortbylastupdate'] = 'Orain gutxi aldaketak izan dituztenak'; -$string['sortchronogically'] = 'Kronologikoki'; -$string['special'] = 'Berezia'; -$string['standardview'] = 'Alfabetikoki'; -$string['studentcanpost'] = 'Ikasleek sarrerak gehitzea daukate'; -$string['totalentries'] = 'Sarrerak guztira'; -$string['withauthor'] = 'Kontzeptuak eta egilea'; -$string['withoutauthor'] = 'Kontzeptuak egilerik gabe'; -$string['writtenby'] = 'Nork idatzia'; -$string['youarenottheauthor'] = 'Iruzkina ez da zurea; beraz, ezin duzu editatu.'; +$string['cantinsertcat'] = 'Ezin da sailkapena txertatu'; +$string['categories'] = 'Sailkapenak'; +$string['category'] = 'Sailkapena'; +$string['categorydeleted'] = 'Sailkapena ezabatuta'; +$string['categoryview'] = 'Sailkapenaren arabera bilatu'; ?> diff --git a/lang/eu/help/appointment/mods.html b/lang/eu/help/appointment/mods.html index 44e35787549..900198af5f7 100644 --- a/lang/eu/help/appointment/mods.html +++ b/lang/eu/help/appointment/mods.html @@ -1,5 +1,5 @@ -

                 Hitzordua

                -
                  -

                  Modulu honek ikasle batekin edo ikasle-talde batekin hitzordua jartzen -lagunduko dizu.

                  -
                +

                 Hitzordua

                +
                  +

                  Modulu honek ikasle batekin edo ikasle-talde batekin hitzordua jartzen +lagunduko dizu.

                  +
                diff --git a/lang/eu/help/assignment/assignmenttype.html b/lang/eu/help/assignment/assignmenttype.html index 66df0bfb754..52d089e2bc3 100644 --- a/lang/eu/help/assignment/assignmenttype.html +++ b/lang/eu/help/assignment/assignmenttype.html @@ -1,12 +1,11 @@ -

                Zeregin-mota

                +

                Zeregin-mota

                -

                Zeregin-mota ezberdinak daude

                +

                Zeregin-mota ezberdinak daude

                -

                Lineaz kanpoko jarduera - zeregina Moodle-tik kanpo egin behar denean erabilgarria +

                Lineaz kanpoko jarduera - zeregina Moodle-tik kanpo egin behar denean erabilgarria da. Ikasleek zereginaren azalpena ikus dezakete, baina ezin dute fitxategirik igo. -Irakasleek notak jar ditzakete, eta ikasleek beren notaren abisuak ikusiko dituzte.

                -

                Fitxategi bakarra igo - zeregin-mota honek ikasle guztiek +Irakasleek notak jar ditzakete, eta ikasleek beren notaren abisuak ikusiko dituzte.

                Fitxategi bakarra igo - zeregin-mota honek ikasle guztiek edozein motatako fitxategi bat igotzea  baimentzen du (testu- fitxategi bat, irudi bat, zip-ean konprimitutako web gune oso bat, edo zuk bidaltzea eskatzen diezun edozer). -Irakasleek honela bidalitako zereginei nota online jar diezaiekete.

                \ No newline at end of file +Irakasleek honela bidalitako zereginei nota online jar diezaiekete. \ No newline at end of file diff --git a/lang/eu/help/assignment/index.html b/lang/eu/help/assignment/index.html index 64d704b869e..412e4df7b64 100644 --- a/lang/eu/help/assignment/index.html +++ b/lang/eu/help/assignment/index.html @@ -1,6 +1,6 @@

                Zereginak

                diff --git a/lang/eu/help/assignment/mods.html b/lang/eu/help/assignment/mods.html index 5e8025c0060..f149e4942c7 100644 --- a/lang/eu/help/assignment/mods.html +++ b/lang/eu/help/assignment/mods.html @@ -1,7 +1,7 @@ -

                 Zereginak

                -
                  +

                   Zereginak

                  +

                    Zereginen moduluak ahalbidetzen du irakasleak ikasleei  lan bat agintzea, baliabide digitalen batean egin beharko dutena (edozein formatutan), eta hori zerbitzarira igoz bidaltzea. Ohiko zereginak saiakerak, proiektuak, txostenak, e.a. izaten dira. Modulu honek kalifikaziorako tresnak ditu.

                    -
                  \ No newline at end of file +
                \ No newline at end of file diff --git a/lang/eu/help/attendance/autoattend.html b/lang/eu/help/attendance/autoattend.html index 87a744bc4ea..0ef14614192 100644 --- a/lang/eu/help/attendance/autoattend.html +++ b/lang/eu/help/attendance/autoattend.html @@ -5,7 +5,7 @@ erabiltzaile bakoitzak datan zehaztutako egunean izandako jardueraren arabera.

                Asistentziaren erregistro automatikoak partaide bat bertan ari dela ulertuko du baldin eta ikastaroan sartu bada, eta zehaztutako datan jardueraren bat -burutu badu.

                +burutu badu. l registro automático de asistencia considera a un participante como presente si entra en el curso y realiza cualquier actividad en la fecha especificada.

                Moodle-ren "cron" utilitatea konfiguratu behar da eginbide honek funtzionatzeko.

                diff --git a/lang/eu/help/attendance/dynsection.html b/lang/eu/help/attendance/dynsection.html index 2949e2a7bed..261c71c68e5 100644 --- a/lang/eu/help/attendance/dynsection.html +++ b/lang/eu/help/attendance/dynsection.html @@ -4,4 +4,8 @@ baduzu, asistentziaren datuak dagozkion astera mugituko dira behin aldaketak gordeta.

                -

                Aukera hau aste-formatua duten ikastaroetan baino ez da aplikatzen.

                \ No newline at end of file +

                Aukera hau aste-formatua duten ikastaroetan baino ez da aplikatzen.

                + +
                  +
                + diff --git a/lang/eu/help/attendance/hours.html b/lang/eu/help/attendance/hours.html index a56fbaa7877..879f34e7eae 100644 --- a/lang/eu/help/attendance/hours.html +++ b/lang/eu/help/attendance/hours.html @@ -5,4 +5,8 @@ banan-banan jasotzen da eskola-ordu bakoitzean. Ez da posible ordubete baino gutxiago zehaztea.

                Aukera honek, berez, ez du zerikusi handirik asistentziaren erregistro -automatikoarekin.

                \ No newline at end of file +automatikoarekin.

                + +
                  +
                + diff --git a/lang/eu/help/attendance/index.html b/lang/eu/help/attendance/index.html index 5502cdbb6bc..6f26dc67879 100644 --- a/lang/eu/help/attendance/index.html +++ b/lang/eu/help/attendance/index.html @@ -2,14 +2,14 @@ diff --git a/lang/eu/help/attendance/maxgrade.html b/lang/eu/help/attendance/maxgrade.html index 32c7e60dfcd..0c95b1c9d92 100644 --- a/lang/eu/help/attendance/maxgrade.html +++ b/lang/eu/help/attendance/maxgrade.html @@ -1,6 +1,11 @@

                Gehienezko kalifikazioa asistentzia dela-eta

                Balore honek ikastaroaren asistentzia osoari emango zaion gehienezko -kalifikazioa zehazten du. Balore hau proportzionalki  banatzen da eskala lineal batean ikastaroaren +kalifikazioa zehazten du. Este valor determina la calificación máxima posible para la asistencia completa al curso. +Balore hau proportzionalki  banatzen da eskala lineal batean ikastaroaren asistentziaren partziala kalifikatzeko. O kalifikatzeak esan nahi du ikaslea ez -dela inoiz ere agertu.

                \ No newline at end of file +dela inoiz ere agertu.

                + +
                  +
                + diff --git a/lang/eu/help/attendance/mods.html b/lang/eu/help/attendance/mods.html index 479a208da57..4ba16939821 100644 --- a/lang/eu/help/attendance/mods.html +++ b/lang/eu/help/attendance/mods.html @@ -1,9 +1,9 @@ -

                 Asistentzia

                -
                  -

                  Modulu honek partaide bakoitzaren asistentzia jasotzea ahalbidetzen du, saio +

                   Asistentzia

                  +
                    +

                    Modulu honek partaide bakoitzaren asistentzia jasotzea ahalbidetzen du, saio presentzialak izan edo online moldekoak izan.  Ikastaroko edozein irakaslek eskuz jaso dezake asistentzia, edo bestela  automatikoki. Horretarako,  ikasleak asistentzia-data bakoitzak dituen 24 orduen barruan -burutu dituen jarduerak hartuko dira kontuan.

                    -
                  +burutu dituen jarduerak hartuko dira kontuan.

                  +
                diff --git a/lang/eu/help/book/customtitles.html b/lang/eu/help/book/customtitles.html index 588482e06ee..6f022b8825c 100644 --- a/lang/eu/help/book/customtitles.html +++ b/lang/eu/help/book/customtitles.html @@ -1,4 +1,4 @@ -

                Izenburu pertsonalizatuak

                +

                Izenburu pertsonalizatuak

                Atalen izenburuak automatikoki  TOC-en  bakarrik (Edukien Taula) azaltzen dira.

                diff --git a/lang/eu/help/book/disableprinting.html b/lang/eu/help/book/disableprinting.html index f3632a6d6ce..8550371a74c 100644 --- a/lang/eu/help/book/disableprinting.html +++ b/lang/eu/help/book/disableprinting.html @@ -1,3 +1,3 @@ -

                Inprimaketa desgaitu

                +

                Inprimaketa desgaitu

                Inprimaketa-ikonoak ezkutatzen ditu.

                diff --git a/lang/eu/help/book/edit.html b/lang/eu/help/book/edit.html index bf80a45a829..668a36ce371 100644 --- a/lang/eu/help/book/edit.html +++ b/lang/eu/help/book/edit.html @@ -1,4 +1,4 @@ -

                Atalen edizioa

                +

                Atalen edizioa

                Saia zaitez atalari izenburu laburra ipintzen.

                diff --git a/lang/eu/help/book/faq.html b/lang/eu/help/book/faq.html index a59b0f0d6f5..8811148140f 100644 --- a/lang/eu/help/book/faq.html +++ b/lang/eu/help/book/faq.html @@ -1,4 +1,4 @@ -

                Liburuei buruz maiz egiten diren galderak

                +

                Liburuei buruz maiz egiten diren galderak

                Zergatik bi maila bakarrik?
                diff --git a/lang/eu/help/book/import.html b/lang/eu/help/book/import.html index 32d24697127..373002df147 100644 --- a/lang/eu/help/book/import.html +++ b/lang/eu/help/book/import.html @@ -1,4 +1,4 @@ -

                Inportatu

                +

                Inportatu

                HTML fitxategi sinplea inporta dezakezu direktorio batera, baita beste edozein HTML fitxategi ere.

                diff --git a/lang/eu/help/book/index.html b/lang/eu/help/book/index.html index 1ed8655cbf6..d8c672fca16 100644 --- a/lang/eu/help/book/index.html +++ b/lang/eu/help/book/index.html @@ -1,14 +1,14 @@

                Liburua

                diff --git a/lang/eu/help/book/mods.html b/lang/eu/help/book/mods.html index bee50f10bf6..8eab335981e 100644 --- a/lang/eu/help/book/mods.html +++ b/lang/eu/help/book/mods.html @@ -1,4 +1,4 @@ -

                 Liburuak

                +

                 Liburuak

                  Liburua ikasteko material erreza da, hainbat orri izan ditzakeena.

                diff --git a/lang/eu/help/book/numberingtype.html b/lang/eu/help/book/numberingtype.html index 327a3cbdf5d..e64be09742d 100644 --- a/lang/eu/help/book/numberingtype.html +++ b/lang/eu/help/book/numberingtype.html @@ -1,13 +1,10 @@ -

                Atalak zenbatzea

                +

                Atalak zenbatzea

                Badira aurredefinitutako zenbatze-mota batzuk:

                Bat ere - atalen eta azpiatalen izenburuek ez dute formaturik; erabil ezazu aukera hau zenbatze-estilo bereziak definitu nahi badituzu. Adibidez, hizkiak: idatz ezazu atalaren izenburuan "Lehen Atala A", "A.1 -Azpiatala"... 

                -

                Zenbakiak - atalak eta azpiatalak zenbatuta +Azpiatala"... 

                Zenbakiak - atalak eta azpiatalak zenbatuta daude  (1, 1.1, 1.2, 2, -...)

                -

                Buletak - azpiatalak barrura sartuta daude eta irudiak edo buletak -dituzte.

                -

                Koska - azpiatalak barrura sartuta daude.

                +...)

                Buletak - azpiatalak barrura sartuta daude eta irudiak edo buletak +dituzte.

                Koska - azpiatalak barrura sartuta daude.

                diff --git a/lang/eu/help/book/summary.html b/lang/eu/help/book/summary.html index 1bde5c10fc7..9d981f7d8db 100644 --- a/lang/eu/help/book/summary.html +++ b/lang/eu/help/book/summary.html @@ -1,4 +1,3 @@ -

                Laburpena

                +

                Laburpena

                -

                Laburpena liburuaren deskribapen laburra da.

                -

                Ez idatzi gehiegi hemen!

                \ No newline at end of file +

                Laburpena liburuaren deskribapen laburra da.

                Ez idatzi gehiegi hemen! \ No newline at end of file diff --git a/lang/eu/help/chat/index.html b/lang/eu/help/chat/index.html index 10adbfbe5f9..39965896b18 100644 --- a/lang/eu/help/chat/index.html +++ b/lang/eu/help/chat/index.html @@ -1,4 +1,4 @@

                Módulo de chat

                diff --git a/lang/eu/help/chat/mods.html b/lang/eu/help/chat/mods.html index d0dae9995a6..b4f9e86e44c 100644 --- a/lang/eu/help/chat/mods.html +++ b/lang/eu/help/chat/mods.html @@ -1,4 +1,4 @@ -

                 Chat

                +

                 Chat

                El módulo de chat permite que los participantes mantengan una conversación en tiempo real (sincrónico) a través de Internet. Esta es una manera útil de tener un mayor conocimiento de los otros y del diff --git a/lang/eu/help/choice/index.html b/lang/eu/help/choice/index.html index 479d5d86619..2df07d50e6c 100644 --- a/lang/eu/help/choice/index.html +++ b/lang/eu/help/choice/index.html @@ -1,4 +1,4 @@ -

                Inkesta

                +

                Kontsulta

                diff --git a/lang/eu/help/choice/mods.html b/lang/eu/help/choice/mods.html index 43db9758d81..407f7c7ff04 100644 --- a/lang/eu/help/choice/mods.html +++ b/lang/eu/help/choice/mods.html @@ -1,7 +1,7 @@ -

                 Inkestak

                -
                  -

                  Inkesta oso jarduera erraza da. Irakasleak galdera bat egiten du eta +

                   Kontsultak

                  +
                    +

                    Kontsulta oso jarduera erraza da. Irakasleak galdera bat egiten du eta hainbat erantzun zehazten ditu, ikasleek horien artean aukera egin dezaten. Oso -erabilgarria izan daiteke kontsulta arinak egiteko, gai jakin bati buruzko +erabilgarria izan daiteke inkesta arinak egiteko, gai jakin bati buruzko hausnarketa bultzatzea mesedetuz, taldeak gairen bati buruz erabakia hartzea baimenduz, edo ikerketaren bat egiteko baimena jasoz.

                    diff --git a/lang/eu/help/choice/options.html b/lang/eu/help/choice/options.html index 88722ef53ef..c532e93bffb 100644 --- a/lang/eu/help/choice/options.html +++ b/lang/eu/help/choice/options.html @@ -1,6 +1,5 @@ -

                    Inkesta-aukerak

                    +

                    Kontsulta-aukerak

                    -

                    Hemen partaideek hauta ditzaketen aukerak jarri behar dituzu.

                    -

                    Hauetako nahi +

                    Hemen partaideek hauta ditzaketen aukerak jarri behar dituzu.

                    Hauetako nahi beste bete ditzakezu, hau da, baten bat zuritan utz dezakezu 6 aukerak behar ez -badituzu. Bete gabeko aukerak ez dira galdera-sortan agertuko.

                    \ No newline at end of file +badituzu. Bete gabeko aukerak ez dira galdera-sortan agertuko. \ No newline at end of file diff --git a/lang/eu/help/choice/timerestrict.html b/lang/eu/help/choice/timerestrict.html index 8bb3ed8c67e..0417a7b8439 100644 --- a/lang/eu/help/choice/timerestrict.html +++ b/lang/eu/help/choice/timerestrict.html @@ -1,6 +1,6 @@

                    Erantzuna denbora-epe batera mugatu

                    -

                    Honen bidez partaideek inkestari erantzuteko izango duten denbora-epea +

                    Honen bidez partaideek kontsultari erantzuteko izango duten denbora-epea zehaztu ahal duzu.

                    Itxierarik ez duen hasiera-data definitzeko oso data urruna aukeratu behar diff --git a/lang/eu/help/courseavailability.html b/lang/eu/help/courseavailability.html index b9fada36479..4dd7a8ce5af 100644 --- a/lang/eu/help/courseavailability.html +++ b/lang/eu/help/courseavailability.html @@ -1,6 +1,6 @@

                    Voy a hacer una pruebaDisponibilidad del curso

                    -

                    Esta opción permite "esconder" los cursos.

                    +

                    Esta opción permite "esconder" los cursos.

                    No aparecerá en ninguna lista de cursos, excepto para administradores y creadores.

                    Incluso si los estudiantes tratan de acceder directamente a un curso a través diff --git a/lang/eu/help/coursecategory.html b/lang/eu/help/coursecategory.html index 03b9498d0b3..5a6a5936f6e 100644 --- a/lang/eu/help/coursecategory.html +++ b/lang/eu/help/coursecategory.html @@ -1,6 +1,6 @@ -

                    Ikastaro-kategoriak

                    -

                    Sistemako administratzaileak hainbat ikastaro-kategoria ezarri ahal ditu.

                    -

                    Adibidez, Zientzia, Humanitateak, Osasuna, e.a.

                    +

                    Ikastaro-kategoriak

                    +

                    Sistemako administratzaileak hainbat ikastaro-kategoria ezarri ahal ditu. +

                    Adibidez, Zientzia, Humanitateak, Osasuna, e.a.

                    Aukera ezazu kategoria egokiena zure ikastaroarentzat. Aukeraren arabera, ikastaroen zerrendan puntu batean edo bestean agertuko da, eta horrela ikasleek ikastaroa errezago aurkitzea medesetuko duzu.

                    diff --git a/lang/eu/help/courseformats.html b/lang/eu/help/courseformats.html index 9fcb35278cd..dd0c775c57a 100644 --- a/lang/eu/help/courseformats.html +++ b/lang/eu/help/courseformats.html @@ -1,3 +1,4 @@ +

                    Ikastaroen formatuak

                    Aste-formatua

                      diff --git a/lang/eu/help/coursefullname.html b/lang/eu/help/coursefullname.html index e0411a0e5a8..71dba13e22a 100644 --- a/lang/eu/help/coursefullname.html +++ b/lang/eu/help/coursefullname.html @@ -1,4 +1,4 @@ -

                      Ikastaroaren izen osoa

                      +

                      Ikastaroaren izen osoa

                      -

                      Ikastaroaren izen osoa ikastaroen zerrendan agertzen da.

                      +

                      Ikastaroaren izen osoa ikastaroen zerrendan agertzen da.

                      diff --git a/lang/eu/help/coursehiddensections.html b/lang/eu/help/coursehiddensections.html index 3897119e3d9..f303abdc594 100644 --- a/lang/eu/help/coursehiddensections.html +++ b/lang/eu/help/coursehiddensections.html @@ -1,6 +1,6 @@

                      Secciones ocultas del curso

                      -

                      Esta opción le permite decidir cómo se mostrarán a los estudiantes las +

                      Esta opción le permite decidir cómo se mostrarán a los estudiantes las secciones ocultas del curso.

                      Por defecto se muestra un área pequeña (en forma colapsada, normalmente diff --git a/lang/eu/help/courseidnumber.html b/lang/eu/help/courseidnumber.html index f58009247b8..ec05cab00f3 100644 --- a/lang/eu/help/courseidnumber.html +++ b/lang/eu/help/courseidnumber.html @@ -1,4 +1,4 @@ -

                      Número ID del Curso

                      +

                      Número ID del Curso

                      -

                      El número ID de un curso únicamente se usa cuando se compara este curso contra un sistema externo - lo cual nunca es mostrado dentro de Moodle. Si tiene un código oficial para este curso úselo aquí ... de otra forma lo puede dejar en blanco.

                      +

                      El número ID de un curso únicamente se usa cuando se compara este curso contra un sistema externo - lo cual nunca es mostrado dentro de Moodle. Si tiene un código oficial para este curso úselo aquí ... de otra forma lo puede dejar en blanco.

                      diff --git a/lang/eu/help/coursenewsitems.html b/lang/eu/help/coursenewsitems.html index fe676049016..a20e54110c2 100644 --- a/lang/eu/help/coursenewsitems.html +++ b/lang/eu/help/coursenewsitems.html @@ -1,10 +1,12 @@ -

                      Ikastaroaren Berrietako elementuak

                      +

                      Novedades en los cursos

                      -

                      "Berriak" deitutako foro berezi bat aagertuko da "Asteka" eta "Gaika" ikastaro formatuetan. - Ikasle guztiek ikusatea nahi dituzu oharrak jartzeko leku aproposa da. - (Aldatu ezean, ikasle guztiak foro honetara harpidetuta daude, eta mezuak ePostaz jasoko dituzte)

                      - +

                      En los formatos semanal y de temas aparece un foro llamado +novedades. Es un buen lugar para +colocar los mensajes que se desea que lean los alumnos. +(Dado que todos los alumnos son automáticamente suscritos +a este foro, recibirán en su correo los mensajes que se coloque aquí).

                      -

                      Ezarpen honek ikastaroaren hasiera orrian, behean eskuman dagoen berrien kutxan, zenbat berri agertuko diren zehazten du.

                      +

                      Este parámetro determina cuántos de los últimos mensajes +aparecerán en la parte derecha de la página.

                      -

                      "Berrietako 0 elementu" aukeratzen baduzu berrien kutxa ez da ezta agertuko ere.

                      +

                      Si su elección es "0" no se mostrarán novedades en la página.

                      \ No newline at end of file diff --git a/lang/eu/help/coursenumsections.html b/lang/eu/help/coursenumsections.html index c4be6fb77a2..1f0c1842d53 100644 --- a/lang/eu/help/coursenumsections.html +++ b/lang/eu/help/coursenumsections.html @@ -1,10 +1,11 @@ -

                      Aste/Gai kopurua ikastaroan

                      +

                      Número de Semanas o Temas del curso

                      -

                      Ezarpen hau Asteka edo Gaika formatua duten ikastaroetan baino ez da erabiliko.

                      +

                      Este parámetro sólo aplica a los formatos semanal y de temas.

                      -

                      'Asteka' formatuan, ikastaroak izango dituen aste kopurua zehazten du, ikastaroaren hasiera datatik aurrera.

                      - +

                      En el formato semanal determina el número de semanas que durará +el curso, a partir de la fecha de inicio.

                      -

                      'Gaika' formatuan, ikastaroak dituen gai kopurua zehazten du.

                      +

                      En el formato de temas especifica el número de temas del curso.

                      -

                      Kasu bietan, ikastaro orriaren erdian agertzen diren kutxa kopurua aldatuko da

                      +

                      Ambos representan el número de cuadros que se verán en la columna +central de página.

                      \ No newline at end of file diff --git a/lang/eu/help/courserecent.html b/lang/eu/help/courserecent.html index b22db4998dd..645e17f140a 100644 --- a/lang/eu/help/courserecent.html +++ b/lang/eu/help/courserecent.html @@ -1,11 +1,27 @@ +

                      Duela gutxiko aktibitatea

                      + +

                      Esta plataforma puede mostrar la actividad reciente en la +página principal de cada curso.

                      + +

                      Estas novedades muestran a todos, los cambios sucedidos +desde la última vez que se entró, incluyendo mensajes, nuevos +usuarios, etc.

                      + +

                      Mantener esta opción activa nos permite ver rápidamente la actividad +del curso; además que, saber lo que los otros están haciendo ayuda a +promover una atmósfera de colaboración en clase.

                      + +

                      Usted puede desear deshabilitar esta opción si su curso es demasiado +grande (en tamaño o en número de participantes), dado que puede disminuir +el rendimiento de la página.

                      Azken orduko aktibitatea

                      - -

                      Moodlek ikastaroaren hasiera orrian "azken orduko aktibitatea" bistaratu dezake.

                      - -

                      Ikusleak ikastarora sartu zen azken alditik gertatu den guztia bistaratzen du, besteak beste, mezu berriak, erabiltzaile berriak, bidalitako egunkariak etabar...

                      - -

                      Baliabide hau aktibatuta uztea gomendatzen dizugu, ikastaroaren mugimenduaren sentzazioa ematen baitu. -Besteek egiten dutena jakiteak klasean kloaborazio atmosfera bat sortzeko laguntzen du.

                      - -

                      Ikastaro oso handietan edo erabiltzaile askoko ikastaroetan desgaitzea egokia izan daiteke, -ikastaroaren orria bistaratzea moteldu lezakeelako.

                      +

                      Moodle-k ikastaroaren hasiera-orrian berriki izandako aktibitatea erakuts +dezake. +

                      Plataforman sartzen denari konektatu zen azken alditik izan diren nobedade +guztiak erakutsiko zaiozkio ikusikogertatu den guztia bistaratzen du, besteak +beste, mezu berriak, erabiltzaile berriak, bidalitako egunkariak etabar... +

                      Baliabide hau aktibatuta uztea gomendatzen dizugu, ikastaroaren mugimenduaren +sentzazioa ematen baitu. Besteek egiten dutena jakiteak klasean kloaborazio +atmosfera bat sortzeko laguntzen du. +

                      Ikastaro oso handietan edo erabiltzaile askoko ikastaroetan desgaitzea egokia +izan daiteke, ikastaroaren orria bistaratzea moteldu lezakeelako.

                      diff --git a/lang/eu/help/coursereports.html b/lang/eu/help/coursereports.html index 0e28f2feb56..2e64fa4b122 100644 --- a/lang/eu/help/coursereports.html +++ b/lang/eu/help/coursereports.html @@ -1,6 +1,6 @@

                      Informes de Actividades

                      -

                      Los informes de actividades están disponibles para todos +

                      Los informes de actividades están disponibles para todos los participantes que muestren sus actividades en el presente curso. Al igual que las listas de contribuciones, estos informes incluyen un detallado registro de los accesos.

                      diff --git a/lang/eu/help/coursestartdate.html b/lang/eu/help/coursestartdate.html index 9e71b965aa2..8597d64eba0 100644 --- a/lang/eu/help/coursestartdate.html +++ b/lang/eu/help/coursestartdate.html @@ -1,13 +1,14 @@ -

                      Ikastaroaren hasiera data

                      +

                      Fecha de inicio de curso

                      -

                      Hemen ikastaroaren hasiera unea zehaztu dezakezu.

                      +

                      Aquí es donde se coloca la fecha de inicio de clases.

                      -

                      'Asteka' formatuko ikastaroetan, asteko baliabideak noiz plazaratuko diren zehazten du. - Lehen astea hemen ezarritako datan hasiko litzateke.

                      +

                      Si Ud. está utilizando el formato semanal, esto afectará la organización +de las semanas. La primer semana comenzará el día de la fecha que Ud. coloque aquí.

                      -

                      Ezarpen honek ez du ez du eraginik 'ierkia' edo 'gaika' formatuak erabiltzen dituzten ikastaroengan.

                      +

                      Este parámetro no afectará los cursos que utilizan los formatos social o de temas.

                      -

                      Hala ere, badu eragina log.-engan, hemen ezarritako data agertu daiteken lehena bait da.

                      +

                      Pero esta fecha afectará los informes, dado que éstos comienzan desde la +fecha colocada aquí.

                      -

                      Orokorrean, zure ikastaroak hasiera data zehatz bat badu, - hemen ezartzea logikoa da, ikastaroak duen formatua duela.

                      +

                      Como regla general: Si está creando un curso que tiene una fecha real de +inicio, lo mejor será colocarla aquí, sin importar el formato que use.

                      diff --git a/lang/eu/help/courseuploadsize.html b/lang/eu/help/courseuploadsize.html index 76d56a4911e..4ab781b87ae 100644 --- a/lang/eu/help/courseuploadsize.html +++ b/lang/eu/help/courseuploadsize.html @@ -1,8 +1,8 @@ -

                      Tamaño máximo para los archivos que se pueden cargar en este curso

                      +

                      Tamaño máximo para los archivos que se pueden cargar en este curso

                      -

                      Esta variable determina el tamaño máximo permitido para los archivos cargados +

                      Esta variable determina el tamaño máximo permitido para los archivos cargados por los estudiantes en este curso, limitado por el tamaño máximo del sitio, - determinado por el administrador.

                      + determinado por el administrador. -

                      También es posible limitar el tamaño en las variables presentes en cada -módulo de actividade.

                      \ No newline at end of file +

                      También es posible limitar el tamaño en las variables presentes en cada +módulo de actividade. \ No newline at end of file diff --git a/lang/eu/help/dialogue/dialoguetype.html b/lang/eu/help/dialogue/dialoguetype.html index 7198df3be86..19c810df60c 100644 --- a/lang/eu/help/dialogue/dialoguetype.html +++ b/lang/eu/help/dialogue/dialoguetype.html @@ -1,16 +1,16 @@

                      Tipos de diálogos

                      Existen tres tipos de diálogos.

                      -
                      1. Profesor-Estudiante Permite diálogos entre profesores y +
                        1. Profesor-Estudiante Permite diálogos entre profesores y estudiantes. Las diálogos pueden ser iniciados tanto por profesores como por estudiantes. En la lista de personas, los profesores sólo ven a estudiantes - y los estudiantes sólo ven profesores.

                        2. + y los estudiantes sólo ven profesores.

                          -
                        3. Estudiante-Estudiante Permite diálogos entre estudiantes. Los - profesores no son incluidos en absoluto en este tipo de diálogos.
                        4. +
                        5. Estudiante-Estudiante Permite diálogos entre estudiantes. Los + profesores no son incluidos en absoluto en este tipo de diálogos.

                        6. -
                        7. Todos Permite que cualquier persona del grupo inicie un diálogo +
                        8. Todos Permite que cualquier persona del grupo inicie un diálogo con cualquier otra persona del mismo grupo. Los profesores pueden iniciar diálogos con otros profesores y estudiantes, los estudiantes pueden iniciar - diálogos con otros estudiantes y con profesores.

                        9. + diálogos con otros estudiantes y con profesores.

                        diff --git a/lang/eu/help/dialogue/info.html b/lang/eu/help/dialogue/info.html index a6278a93253..40ddebcd914 100644 --- a/lang/eu/help/dialogue/info.html +++ b/lang/eu/help/dialogue/info.html @@ -1,4 +1,4 @@ - Diálogos + Diálogos

                        Este módulo brinda un método de comunicación simple entre pares de usuarios. Un profesor puede abrir un diálogo con un estudiante, un estudiante puede abrir un diálogo con el profesor, y (de manera opcional) un estudiante diff --git a/lang/eu/help/dialogue/mods.html b/lang/eu/help/dialogue/mods.html index 5c922f9628a..0eccf0da2fd 100644 --- a/lang/eu/help/dialogue/mods.html +++ b/lang/eu/help/dialogue/mods.html @@ -1,4 +1,4 @@ -

                        Diálogos

                        +

                        Diálogos

                          Este módulo brinda un método de comunicación simple entre pares de usuarios. Un profesor puede abrir un diálogo con un estudiante, un estudiante diff --git a/lang/eu/help/dialogue/writing.html b/lang/eu/help/dialogue/writing.html index 8641693aeef..e544ce13a9b 100644 --- a/lang/eu/help/dialogue/writing.html +++ b/lang/eu/help/dialogue/writing.html @@ -1,20 +1,20 @@ -

                          Escribir

                          +

                          Escribir

                          -

                          Cuando escriba textos para que sean leídos por otras personas, intente - escribir directamente a su audiencia.

                          +

                          Cuando escriba textos para que sean leídos por otras personas, intente + escribir directamente a su audiencia.

                          -

                          Explique sus ideas tan clara y simplemente como pueda, para evitar +

                          Explique sus ideas tan clara y simplemente como pueda, para evitar malentedidos. Una cosa que puede hacer es evitar las expresiones largas cuando - puede expresar lo mismo con expresiones más cortas.

                          + puede expresar lo mismo con expresiones más cortas.

                          -

                          En un diálogo ayuda que lo que exprese sea corto y conciso. Siempre puede - cerrar un diálogo y abrir otro si desea discutir acerca de otro tema.

                          +

                          En un diálogo ayuda que lo que exprese sea corto y conciso. Siempre puede + cerrar un diálogo y abrir otro si desea discutir acerca de otro tema.

                          -

                          Cuando responda a otros, piense acerca de preguntas interesantes que pueda +

                          Cuando responda a otros, piense acerca de preguntas interesantes que pueda hacer. Eso le ayudará a usted mismo y a la otra persona a pensar (¡y a - aprender!) acerca del tema en discusión.

                          + aprender!) acerca del tema en discusión.

                          -

                          Más información sobre cómo hacer preguntas

                          +

                          Más información sobre cómo hacer preguntas

                          -

                          Más información sobre lectura

                          +

                          Más información sobre lectura

                          diff --git a/lang/eu/help/directorypaths.html b/lang/eu/help/directorypaths.html index af2cedc099a..7177a673380 100644 --- a/lang/eu/help/directorypaths.html +++ b/lang/eu/help/directorypaths.html @@ -6,15 +6,15 @@

                          En Sistemas Windows utiliza algo como:

                            -
                          • c:\archivos de programa\datos\moodle
                          • -
                          • c:\documentos y ajustes\moodle\temp\guardado
                          • +
                          • c:\archivos de programa\datos\moodle +
                          • c:\documentos y ajustes\moodle\temp\guardado

                          En Sistemas Unix utiliza algo como:

                            -
                          • /usr/datos/moodle
                          • -
                          • /home/moodle/tmp/guardado
                          • +
                          • /usr/datos/moodle +
                          • /home/moodle/tmp/guardado

                          diff --git a/lang/eu/help/emoticons.html b/lang/eu/help/emoticons.html index 8df23320b2f..fab79e088bf 100644 --- a/lang/eu/help/emoticons.html +++ b/lang/eu/help/emoticons.html @@ -1,57 +1,57 @@ -

                          Emotikoneak erabili

                          +

                          Usar Emoticonos

                          - + - + - + - + - + - + - + - + - - + +
                          - - + + - + - + - + - + - + - + - + - + - +
                          irribarreasonrisa :-)
                          barrearisa :-D
                          begi-keinuaguiño ;-)
                          erdipurdizkaconfuso :-/
                          pentsakorpensativo V-.
                          mihia ateralengua fuera :-P
                          primeranestupendo B-)
                          onartuaprobación ^-)
                          begiak zabal-zabalikojos abiertos 8-)
                          harridurasorpresa 8-o
                          @@ -65,48 +65,48 @@
                          lotsatitímido 8-.
                          lotsatutasonrojado :-I
                          musuakbesos :-X
                          pailasoapayaso :o)
                          pirataojo amoratado P-|
                          haserreenojado 8-[
                          hilikmuerto xx-P
                          lotandormido |-.
                          deabrua}-]malo}-]
                          diff --git a/lang/eu/help/enrolmentkey.html b/lang/eu/help/enrolmentkey.html index 73c78f48b36..32ab31876bc 100644 --- a/lang/eu/help/enrolmentkey.html +++ b/lang/eu/help/enrolmentkey.html @@ -1,14 +1,15 @@ -

                          Ikastaroko partaide giltza

                          +

                          Clave de acceso

                          -

                          Ikastaro partaide giltza batek partaide ez direnei ikastaroan sartzea ekiditzen die.

                          +

                          Una contraseña de acceso sirve para restringir el acceso a +personas ajenas a ese curso.

                          -

                          Hau hutsik uzten baduzu, Moodle erabiltzaile kontu bat sortu duen edonork ikastaroko partaide izan daiteke sarrera irekia bait da.

                          +

                          Si deja en blanco este cuadro, cualquiera que tenga +nombre y contraseña en la plataforma podrá entrar a este curso.

                          -

                          Hemen zerbait jartzen baduzu, LEHEN ALDIZ ikastarora sartzen diren ikasleak hitz edo esaldi gako hau sartu beharko dute

                          - -

                          Baimena duen jendeari hitz edo esaldi gako hau helarazi behar diezu beste bitarteko batzuk erabiliz, -(ePostaz, posta arruntaz, telefonoz edo aurrez aurre adibidez).

                          - -

                          Giltza hau "zabaltzen" bada eta nahi ez duzun jendea ikastaroaren partaide egiten bada, partaidetza atzera bota diezaiekezu - (beraien erabiltzaile soslaian) eta giltza hau aldatu dezkezu. Dagoeneko partaide diren erabiltzailengan ez du eraginik, baina partaide berriek gako berria erabili beharko dute.

                          +

                          Si Ud. coloca una palabra aquí, los alumnos necesitarán conocerla +para acceder, SÓLO LA PRIMERA VEZ que accedan.

                          +

                          La idea es que Ud. provea la contraseña de acceso a sus alumnos para que se inscriban.

                          +

                          Si esta contraseña pierde su "efectividad" y comienzan a entrar personas +no autorizadas, Ud. podrá, en cualquier momento, cambiar esta contraseña y destituir +los alumnos ilegítimos, sin que afecte en nada a los demás alumnos.

                          diff --git a/lang/eu/help/exercise/administration.html b/lang/eu/help/exercise/administration.html index 1ea07e5dd86..80a44c609e3 100644 --- a/lang/eu/help/exercise/administration.html +++ b/lang/eu/help/exercise/administration.html @@ -1,4 +1,4 @@ -

                          Administración

                          +

                          Administración

                          La primera tabla de esta pantalla muestra cómo se calculan las calificaciones globales de los trabajos enviados. Las calificaciones globales equivalen a la suma ponderada @@ -10,12 +10,12 @@ NO se le pide que re-evalúe su trabajo cada vez que es remitido de nuevo. La calificación dada a la evaluación del estudiante es relevante para su desempeño, pero no es tan importante como la evaluación que el profesor hace del trabajo. En general, debería - obtener un peso más bajo que... + obtener un peso más bajo que...

                        • La calificación dada por el profesor a los trabajos del estudiante. Estas evaluaciones son normalmente el principal elemento de evaluación de un ejercicio. Cuando se permite a los estudiantes hacer más de un envío, el profesor puede decidir si la calificación final del ejercicio estará formada por la calificación - promedio de los envíos o por la obtenida por el mejor trabajo enviado.
                        • + promedio de los envíos o por la obtenida por el mejor trabajo enviado.

                      Estos dos componentes son ponderados del modo que se juzgue más conveniente para la @@ -31,7 +31,7 @@ entradas se ajusta a un valor mayor que cero, entonces el estudiante sólo podrá ver la tabla cuando la tarea está en su fase final. La otra opción determina si en la tabla se muestran los nombres de los estudiantes. Advierta que el profesor siempre puede ver los nombres - de los estudiantes en la Tabla de Calificaciones independientemente de los ajustes que se hagan.

                      + de los estudiantes en la Tabla de Calificaciones independientemente de los ajustes que se hagan.

                      La página de Administración también ofrece una lista de los envíos del profesor (i.e., las descripciones del Ejercicio), la evaluación (inicial) que los estudiantes hacen de su propio trabajo, y los trabajos enviados por los estudiantes. Estas tablas permiten cambiar el título diff --git a/lang/eu/help/exercise/elements.html b/lang/eu/help/exercise/elements.html index 61b7cd2c4ee..fca57e035a3 100644 --- a/lang/eu/help/exercise/elements.html +++ b/lang/eu/help/exercise/elements.html @@ -1,44 +1,44 @@ -

                      Elementos de la Tarea

                      +

                      Elementos de la Tarea

                      -

                      Para facilitar la calificación, una Tarea de Taller debería tener un número +

                      Para facilitar la calificación, una Tarea de Taller debería tener un número razonable de "Elementos de Evaluación". Cada elemento debería cubrir un aspecto particular de la tarea. Típicamente, una tarea tiene entre 5 y 15 elementos para ser comentados y calificados, dependiendo del número real de su tamaño y complejidad. Se permiten tareas con un solo elemento: en ese caso la - estrategia de evaluación es semejante a la Tarea estándar en Moodle.

                      + estrategia de evaluación es semejante a la Tarea estándar en Moodle. -

                      El tipo de elementos depende de la estrategia de calificación de la tarea.

                      +

                      El tipo de elementos depende de la estrategia de calificación de la tarea. -

                      Sin Calificar. Los elementos son descripciones de los aspectos de la tarea. +

                      Sin Calificar. Los elementos son descripciones de los aspectos de la tarea. Se pide al evaluador que comente cada uno de estos aspectos. Al igual que sucede con todas las estrategias de calificación, se dispone también de un área para realizar - comentarios generales.

                      + comentarios generales. -

                      Calificación Acumulativa. Los elementos tienen las tres características siguientes: -

                        -
                      1. La DESCRIPCIÓN del elemento de evaluación. Esta descripción debería establecer con +

                        Calificación Acumulativa. Los elementos tienen las tres características siguientes: +

                          +
                        1. La DESCRIPCIÓN del elemento de evaluación. Esta descripción debería establecer con claridad qué aspecto de la tarea está siendo evaluado. Si la evaluación es cualitativa, resulta útil proporcionar detalles de lo que se considera excelente, promedio y - pobre.
                        2. + pobre. -
                        3. La ESCALA del elemento de evaluación. Existen varias escalas predefinidas. +
                        4. La ESCALA del elemento de evaluación. Existen varias escalas predefinidas. El rango abarca desde escalas simples Sí/No pasando por escalas multipunto hasta una escala que cubre todos los porcentajes. Cada elemento tiene su propia escala que debería ser elegida para ajustarse a todas las variaciones posibles del elemento. Advierta que la escala NO determina la importancia del elemento cuando se calcula la calificación final: una escala de dos puntos tiene la misma "influencia" que - otra de 100 puntos, siempre que los respectivos elementos tengan el mismo peso...
                        5. + otra de 100 puntos, siempre que los respectivos elementos tengan el mismo peso... -
                        6. El PESO del elemento de evaluación. Por defecto, a los elementos se les da la misma +
                        7. El PESO del elemento de evaluación. Por defecto, a los elementos se les da la misma importancia cuando se calcula la calificación global de la tarea. Esto puede cambiarse dando a los elementos más importantes un peso mayor que uno, y a los menos importantes un peso inferior a uno. El hecho de cambiar los pesos NO afecta a la calificación máxima, puesto que ese valor se fija en el parámetro de la tarea Calificación Máxima. Pueden también asignarse valores negativos a los pesos, pero ésta es una característica - que se encuentra aún en fase de experimentación.
                        8. + que se encuentra aún en fase de experimentación. -
                        -

                        Calificación por Franja de Error. Los elementos normalmente describen ciertos items +

                      +

                      Calificación por Franja de Error. Los elementos normalmente describen ciertos items o aspectos que han de estar presentes en la tarea. La evaluación se lleva a cabo atendiendo a la presencia o ausencia de esos items o aspectos. El profesor debe ajustar la tabla de calificaciones de modo que se sugiera cómo se va a calificar cuando todos los items están @@ -46,16 +46,16 @@ otros, entonces a esos items se les dará un peso mayor que uno. A los items menos importantes se les dará un peso inferior a uno. El "número de errores" global equivale a la suma ponderada de los items ausentes. El evaluador puede en todo momento efectuar ajustes menores - a estas calificaciones sugeridas.

                      + a estas calificaciones sugeridas. -

                      Calificación Criterial. Los elementos deberán proporcionar un conjunto de juicios +

                      Calificación Criterial. Los elementos deberán proporcionar un conjunto de juicios de "nivel" que pueden utilizarse para jerarquizar la tarea. Los juicios pueden ser acumulativos, o bien cada uno de ellos puede ser autónomo. El evaluador debe decidir qué juicio se ajusta mejor a cada parte del trabajo. El profesor puede asimismo relacionar cada juicio de criterio con las calificaciones sugeridas, que deberían estar jerarquizadas. El evaluador puede -efectuar ajustes menores a estas calificaciones.

                      +efectuar ajustes menores a estas calificaciones.

                      -

                      Calificación por Rúbrica. Es semejante a la Calificación Criterial, pero en esta ocasión +

                      Calificación por Rúbrica. Es semejante a la Calificación Criterial, pero en esta ocasión existe más de un criterio. El número de criterios se determina en los parámetros de la tarea. Dentro de cada criterio pueden ajustarse hasta cinco juicios de "nivel". En una tarea dada, el número de niveles puede variar de un criterio a otro. Cuando se determina un criterio, @@ -63,4 +63,4 @@ un juicio de nivel en blanco se tener dos niveles, otgros tres, y así hasta un máximo de cinco niveles. Los criterios pueden ser ponderados (i.e., se les puede asignar un peso). Los niveles se puntúan con 0, 1, 2, hasta 4. La calificación de la tarea es la suma ponderada de estas puntuaciones. -

                      +

                      diff --git a/lang/eu/help/exercise/finalgrades.html b/lang/eu/help/exercise/finalgrades.html index a94ae61a752..0c48d7e7c90 100644 --- a/lang/eu/help/exercise/finalgrades.html +++ b/lang/eu/help/exercise/finalgrades.html @@ -1,11 +1,11 @@ -

                      Calificaciones Finales

                      +

                      Calificaciones Finales

                      La tabla de esta pantalla muestra una lista de las calificaciones globales y de su desglose. La primera calificación corresponde a la evaluación inicial. Esta calificación es añadida a las calificaciones otorgadas a cada trabajo enviado. La fila de Pesos proporciona los factores utilizados en el cálculo de la calificación global a partir de estas dos calificaciones. La calificación final dada a esta tarea puede ser la media de las calificaciones - globales o la calificación global del mejor trabajo enviado.

                      + globales o la calificación global del mejor trabajo enviado.

                      En la Tabla de Calificaciones se ofrece de forma opcional una lista de los mejores trabajos enviados. El número de entradas de la tabla se determina en la página de Administración. Si dicho número se diff --git a/lang/eu/help/exercise/grading.html b/lang/eu/help/exercise/grading.html index 20f67d5fc8e..4611d3bc640 100644 --- a/lang/eu/help/exercise/grading.html +++ b/lang/eu/help/exercise/grading.html @@ -1,4 +1,4 @@ -

                      Calificación de Tareas

                      +

                      Calificación de Tareas

                      En este Ejercicio se utiliza el mismo Formulario de Evaluación por Estudiantes y Profesores para valorar el trabajo realizado. El formulario es utilizado en diferentes fases por los dos grupos, de modo que la explicación dada aquí se divide en dos partes.

                      diff --git a/lang/eu/help/exercise/gradinggrade.html b/lang/eu/help/exercise/gradinggrade.html index 2b16315ccc4..6d47cb60c1e 100644 --- a/lang/eu/help/exercise/gradinggrade.html +++ b/lang/eu/help/exercise/gradinggrade.html @@ -1,4 +1,4 @@ -

                      Calificación de Evaluaciones

                      +

                      Calificación de Evaluaciones

                      En la primera mitad de esta página se muestra la evaluación del Alumno de su propio trabajo. Esta evaluación debería ser calificada (sobre un máximo diff --git a/lang/eu/help/exercise/gradingstrategy.html b/lang/eu/help/exercise/gradingstrategy.html index 8d72226c61b..91b876477d2 100644 --- a/lang/eu/help/exercise/gradingstrategy.html +++ b/lang/eu/help/exercise/gradingstrategy.html @@ -1,28 +1,28 @@ -

                      Estrategia de calificación

                      +

                      Estrategia de calificación

                      -

                      La forma de calificación de un ejercicio es bastante flexible. Puede ser:

                      +

                      La forma de calificación de un ejercicio es bastante flexible. Puede ser: -

                        -
                      1. Ninguna calificación: En este tipo de tarea el profesor no está interesado en la evaluación cuantitativa de los estudiantes. Los estudiantes hacen comentarios sobre los productos de los trabajos pero no los califican. El profesor, sin embargo, si así lo desea, puede calificar los comentarios de los estudiantes. Estas calificaciones forman la base de las notas finales de los estudiantes. Si el profesor no califica las evaluaciones de los estudiantes, la tarea no tendrá ninguna calificación final.
                      2. +
                          +
                        1. Ninguna calificación: En este tipo de tarea el profesor no está interesado en la evaluación cuantitativa de los estudiantes. Los estudiantes hacen comentarios sobre los productos de los trabajos pero no los califican. El profesor, sin embargo, si así lo desea, puede calificar los comentarios de los estudiantes. Estas calificaciones forman la base de las notas finales de los estudiantes. Si el profesor no califica las evaluaciones de los estudiantes, la tarea no tendrá ninguna calificación final. -
                        2. Calificación Acumulativa: Este es el tipo de calificación por defecto. En este tipo de tarea la calificación de cada evaluación se compone de un número de "elementos de evaluación". Cada elemento debería cubrir un aspecto particular de la tarea. Por lo general, una tarea debería tener entre 5 y 15 elementos para comentar y calificar; el número ideal depende del tamaño y complejidad de la tarea. Es posible asignar a los estudiantes una tarea con un solo elemento; en ese caso, la estrategia de evaluación es similar a la actividad tarea estándar de Moodle.
                        3. +
                        4. Calificación Acumulativa: Este es el tipo de calificación por defecto. En este tipo de tarea la calificación de cada evaluación se compone de un número de "elementos de evaluación". Cada elemento debería cubrir un aspecto particular de la tarea. Por lo general, una tarea debería tener entre 5 y 15 elementos para comentar y calificar; el número ideal depende del tamaño y complejidad de la tarea. Es posible asignar a los estudiantes una tarea con un solo elemento; en ese caso, la estrategia de evaluación es similar a la actividad tarea estándar de Moodle. -

                          Los elementos tienen las siguientes características: -

                            -
                          1. La DESCRIPCIÓN del elemento de evaluación. Debería establecer claramente qué tipo de tarea será evaluada. Si la evaluación es cualitativa, resulta útil dar detalles de lo que se considera excelente, mediocre o insuficiente.
                          2. +

                            Los elementos tienen las siguientes características: +

                              +
                            1. La DESCRIPCIÓN del elemento de evaluación. Debería establecer claramente qué tipo de tarea será evaluada. Si la evaluación es cualitativa, resulta útil dar detalles de lo que se considera excelente, mediocre o insuficiente.
                            2. -
                            3. La ESCALA del elemento de evaluación. Existe un número predefinido de escalas, que van de las escalas simples SÍ/NO, pasando por escalas multipunto hasta llegar a escalas de porcentaje total. Cada elemento tiene su propia escala, y ésta debería elegirse para ajustarse a todas las variaciones posibles de ese elemento. Advierta que la escala NO determina la importancia del elemento cuando se calcula la calificación final: por ejemplo, una escala de dos puntos tiene la misma "influencia" que otra de 100 puntos si los respectivos elementos tienen el mismo peso (factor de ponderación).
                            4. +
                            5. La ESCALA del elemento de evaluación. Existe un número predefinido de escalas, que van de las escalas simples SÍ/NO, pasando por escalas multipunto hasta llegar a escalas de porcentaje total. Cada elemento tiene su propia escala, y ésta debería elegirse para ajustarse a todas las variaciones posibles de ese elemento. Advierta que la escala NO determina la importancia del elemento cuando se calcula la calificación final: por ejemplo, una escala de dos puntos tiene la misma "influencia" que otra de 100 puntos si los respectivos elementos tienen el mismo peso (factor de ponderación).
                            6. -
                            7. El PESO del elemento de evaluación. Por defecto, todos los elementos tienen la misma importancia cuando se calcula la calificación global de la tarea. Puede cambiarse esto dando a los elementos más importantes un peso superior a uno, y a los menos importantes un peso inferior a uno. Cambiar los pesos NO afecta a la calificación máxima, puesto que ese valor es fijado por el parámetro Calificación Máxima de la tarea. Es posible asignar valores negativos a los pesos (ésta es una característica en fase de experimentación).
                            8. +
                            9. El PESO del elemento de evaluación. Por defecto, todos los elementos tienen la misma importancia cuando se calcula la calificación global de la tarea. Puede cambiarse esto dando a los elementos más importantes un peso superior a uno, y a los menos importantes un peso inferior a uno. Cambiar los pesos NO afecta a la calificación máxima, puesto que ese valor es fijado por el parámetro Calificación Máxima de la tarea. Es posible asignar valores negativos a los pesos (ésta es una característica en fase de experimentación).
                            10. -
                            +
                          -
                        5. Franjas de Error: En este tipo de tarea los envíos son calificados en un conjunto de escalas SÍ/NO. La calificación se determina mediante la "Tabla de Calificaciones ", que proporciona la relación entre el número de "errores" y la calificación sugerida. Por ejemplo, una tarea puede contener seis elementos importantes que deberían estar presentes. La Tabla de Calificaciones proporcionará sugerencias de calificación si todos están presentes, si falta uno, si faltan dos, etc. Se puede, si así se desea, asignar factores de ponderación determinados a los elementos individuales, en el caso de que algunos elementos sean más importantes que el resto. El número de "errores" es la suma ponderada de los elementos ausentes. A cada elemento se le da, por defecto, un peso de uno. La tabla de calificaciones puede ser no lineal; por ejemplo, las calificaciones sugeridas pueden ser 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0% para una tarea con 10 elementos. El evaluador puede ajustar la calificación sugerida hasta un máximo de ±20% para asignar la calificación final del trabajo.
                        6. +
                        7. Franjas de Error: En este tipo de tarea los envíos son calificados en un conjunto de escalas SÍ/NO. La calificación se determina mediante la "Tabla de Calificaciones ", que proporciona la relación entre el número de "errores" y la calificación sugerida. Por ejemplo, una tarea puede contener seis elementos importantes que deberían estar presentes. La Tabla de Calificaciones proporcionará sugerencias de calificación si todos están presentes, si falta uno, si faltan dos, etc. Se puede, si así se desea, asignar factores de ponderación determinados a los elementos individuales, en el caso de que algunos elementos sean más importantes que el resto. El número de "errores" es la suma ponderada de los elementos ausentes. A cada elemento se le da, por defecto, un peso de uno. La tabla de calificaciones puede ser no lineal; por ejemplo, las calificaciones sugeridas pueden ser 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0% para una tarea con 10 elementos. El evaluador puede ajustar la calificación sugerida hasta un máximo de ±20% para asignar la calificación final del trabajo.
                        8. -
                        9. Calificación referida a Criterio: Ésta es la forma más simple de calificación, si bien no es necesariamente la más directa de establecer. Consiste en calificar los trabajos en función de un conjunto de criterios. El evaluador elige qué frase se ajusta mejor al trabajo. La calificación se determina mediante una "Tabla de Criterios" que proporciona una sugerencia de calificación para cada criterio. Por ejemplo, una tarea puede ajustarse con, digamos, cinco criterios, y los evaluadores deberán escoger uno de los cinco criterios para cada una de sus evaluaciones. Al igual que ocurre con la tarea de franjas de error, el evaluador puede modificar la calificación sugerida en un ±20% para dar la calificación final
                        10. +
                        11. Calificación referida a Criterio: Ésta es la forma más simple de calificación, si bien no es necesariamente la más directa de establecer. Consiste en calificar los trabajos en función de un conjunto de criterios. El evaluador elige qué frase se ajusta mejor al trabajo. La calificación se determina mediante una "Tabla de Criterios" que proporciona una sugerencia de calificación para cada criterio. Por ejemplo, una tarea puede ajustarse con, digamos, cinco criterios, y los evaluadores deberán escoger uno de los cinco criterios para cada una de sus evaluaciones. Al igual que ocurre con la tarea de franjas de error, el evaluador puede modificar la calificación sugerida en un ±20% para dar la calificación final
                        12. -
                        13. Rúbrica Éste es similar a la Calificación referida a Criterio a excepción de que hay múltiples conjuntos criterios. Cada conjunto puede tener hasta cinco elementos y cubre un "Categoría" particular. Los conjuntos tienen pesos individuales y la calificación es una combinación ponderada de los valores de cada conjunto. En este tipo de evaluación no tiene la opción de ajuste.
                        14. -
                        -

                        +
                      3. Rúbrica Éste es similar a la Calificación referida a Criterio a excepción de que hay múltiples conjuntos criterios. Cada conjunto puede tener hasta cinco elementos y cubre un "Categoría" particular. Los conjuntos tienen pesos individuales y la calificación es una combinación ponderada de los valores de cada conjunto. En este tipo de evaluación no tiene la opción de ajuste.
                      4. +
                      +

                      diff --git a/lang/eu/help/exercise/index.html b/lang/eu/help/exercise/index.html index 7ccd4bb44b9..09a94947193 100644 --- a/lang/eu/help/exercise/index.html +++ b/lang/eu/help/exercise/index.html @@ -1,21 +1,21 @@

                      Ejercicios

                      diff --git a/lang/eu/help/exercise/leaguetable.html b/lang/eu/help/exercise/leaguetable.html index c871cd8a72b..fbced84c3f9 100644 --- a/lang/eu/help/exercise/leaguetable.html +++ b/lang/eu/help/exercise/leaguetable.html @@ -1,4 +1,4 @@ -

                      Tabla de Calificaciones

                      +

                      Tabla de Calificaciones

                      Esta opción controla si se muestra la Tabla de Calificaciones al finalizar el ejercicio. En caso afirmativo, la tabla muestra una lista de los mejores diff --git a/lang/eu/help/exercise/leaguetablenames.html b/lang/eu/help/exercise/leaguetablenames.html index 437d83c7f5d..5538274280f 100644 --- a/lang/eu/help/exercise/leaguetablenames.html +++ b/lang/eu/help/exercise/leaguetablenames.html @@ -1,4 +1,4 @@ -

                      Nombres en tabla de calificaciones

                      +

                      Nombres en tabla de calificaciones

                      Esta opción controla si los nombres de los estudiantes se muestran o no en la Tabla de Calificaciones al finalizar el ejercicio. Por defecto no se muestran, diff --git a/lang/eu/help/exercise/managing.html b/lang/eu/help/exercise/managing.html index 18ea6ffba4b..dd463df697e 100644 --- a/lang/eu/help/exercise/managing.html +++ b/lang/eu/help/exercise/managing.html @@ -1,17 +1,17 @@ -

                      Manejo de una tarea de Ejercicio

                      +

                      Manejo de una tarea de Ejercicio

                      -

                      Una tarea de Ejercicio es ligeramente más compleja que una tarea ordinaria. Implica - tres pasos o fases, a saber:

                      +

                      Una tarea de Ejercicio es ligeramente más compleja que una tarea ordinaria. Implica + tres pasos o fases, a saber: -

                        -
                      1. Ajustar el Ejercicio La evaluación del trabajo producido en el ejercicio +

                          +
                        1. Ajustar el Ejercicio La evaluación del trabajo producido en el ejercicio es más fácil si se divide en un número de ELEMENTOS de evaluación. Esto hace la calificación de una tarea sea menos arbitraria y proporciona a los estudiantes un marco de referencia sobre el cual realizar las evaluaciones. El profesor tiene el papel de ajustar los elementos de la evaluación confeccionando una hoja de calificaciones. (Diríjase a esa página para más detalles).

                          -

                          Ajustados los elementos de evaluación, el profesor deberá enviar un archivo +

                          Ajustados los elementos de evaluación, el profesor deberá enviar un archivo en Word o HTML que describa el ejercicio o tarea a realizar por los estudiantes. Este archivo se muestra a los estudiantes en la segunda fase del ejercicio.

                          @@ -20,9 +20,9 @@ ejercicios deben ser similares, toda vez que para todas las variantes se utiliza el mismo Formulario de Evaluación. El envío de múltiples conjuntos de ejercicios por parte del profesor es opcional, e incluso para ciertos tipos de tarea podría - no ser apropiado.

                        2. + no ser apropiado.

                          -
                        3. Permitir Evaluaciones y Envíos de los estudiantes La tarea se abre +

                        4. Permitir Evaluaciones y Envíos de los estudiantes La tarea se abre ahora a los estudiantes. Si el profesor ha puesto varios ejercicios, los estudiantes verán diferentes ejercicios; de otro modo, todos los estudiantes verán el mismo ejercicio.

                          @@ -49,10 +49,10 @@ modo normal. En las distintas listas de trabajos se muestra la fecha en rojo, así como la lista de envíos tras la fecha tope. Si ya está calificado, esta calificación de trabajos fuera de plazo se muestra en color rojo entre corchetes. Estas calificaciones - no se usan en el cálculo de las calificaciones finales y no se contabilizan en las + no se usan en el cálculo de las calificaciones finales y no se contabilizan en las páginas de Calificaciones. El profesor puede modificar la fecha tope yendo a la página de Administración y haciendo clic en el enlace apropiado. El trabajo se utilizará - entonces en el cálculo de la calificación final.

                        5. + entonces en el cálculo de la calificación final.

                        6. Mostrar calificaciones globales y Tabla de calificaciones En esta fase final del Ejercicio los estudiantes pueden ver sus calificaciones "finales". @@ -68,7 +68,7 @@ de los envíos. Estas notas se listan por orden (las calificaciones aquí son las otorgadas por el profesor). Si un estudiante hubiera enviado más de un trabajo, en esta tabla sólo aparecerá la mejor calificación. La tabla no aparecerá en el caso de que el número de entradas - haya sido ajustado a cero.

                        7. + haya sido ajustado a cero.

                        La calificación del estudiante es una combinación ponderada de la calificación que diff --git a/lang/eu/help/exercise/mods.html b/lang/eu/help/exercise/mods.html index 1f60da6fd67..dbde5e1b9a7 100644 --- a/lang/eu/help/exercise/mods.html +++ b/lang/eu/help/exercise/mods.html @@ -1,11 +1,11 @@ - Ejercicio + Ejercicio -

                          -

                          Un ejercicio es una tarea simple pero potente a la vez. En un ejercicio, el profesor +

                            +

                            Un ejercicio es una tarea simple pero potente a la vez. En un ejercicio, el profesor pide a los estudiantes una tarea práctica. Esta tarea puede consistir en escribir un ensayo o un informe, preparar una presentación, configurar una hoja de cálculo, etc. Cuando el estudiante ha concluído la tarea debe autoevaluar su trabajo antes de enviárselo al profesor. Una vez enviado el profesor puede evaluar tanto la autoevaluación del alumno como el trabajo en sí. El profesor puede enviar sus impresiones al alumno y formularle preguntas para mejorar el trabajo y reenviarlo o no si es el caso.

                            -
                          +
                        diff --git a/lang/eu/help/exercise/moreinfo.html b/lang/eu/help/exercise/moreinfo.html index 267093e7e82..ac124f87a5f 100644 --- a/lang/eu/help/exercise/moreinfo.html +++ b/lang/eu/help/exercise/moreinfo.html @@ -1,6 +1,6 @@ - Ejercicio + Ejercicio -

                        Un ejercicio es una tarea a la vez simple y potente. En un ejercicio, el profesor +

                        Un ejercicio es una tarea a la vez simple y potente. En un ejercicio, el profesor pide a los estudiantes una tarea práctica. Esta tarea puede ser escribir un ensayo o un informe, preparar una presentación, configurar una hoja de cálculo, etc. Cuando el estudiante ha concluído la tarea debe autoevaluar su trabajo antes de enviárselo al @@ -11,12 +11,12 @@

                        Antes de comenzar el ejercicio el profesor configura el ejercicio:

                        1. Creando un documento Word o un archivo HTML que constituye una introducción al ejercicio e indica a los estudiantes cuál es la tarea que deben realizar. Este archivo - es cargado en el ejercicio por el profesor.
                        2. + es cargado en el ejercicio por el profesor.
                        3. Añadiendo los elementos textuales y eligiendo las opciones en el formulario de evaluación. Este formulario es utilizado tanto por los estudiantes como por el profesor para evaluar el trabajo realizado en el ejercicio. Existen varios tipos de evaluaciones que - pueden ser usadas (vea la ayuda en "Estrategia de Calificación")
                        4. + pueden ser usadas (vea la ayuda en "Estrategia de Calificación")

                        En clases grandes, el profesor puede encontrar de ayuda el crear más de una versión del @@ -49,7 +49,7 @@ por el alumno, que es mejor que la evaluación desde cero.

                        Cuando se cumple el plazo de entrega del ejercicio los estudiantes pueden continuar enviando trabajos. Sin embargo, - estos envíos son calificados como "retrasados". El profesor puede, si lo desea, calificar el trabajo y proporcionar retroalimentación al estudiante. Las calificaciones del trabajo retrasado se mantienen en segundo plano y no se usan en el cálculo de las calificaciones finales. Si, por la razón que fuere,el profesor desea aceptar un trabajo retrasado como si hubiera sido enviado dentro de plazo, la señal de retraso puede eliminarse en la página de Administración, encontrando el envío y haciendo clic en el enlace apropiado. A partir de ese momento la calificación de ese trabajo se usará en el cálculo de la calificación final.

                        + estos envíos son calificados como "retrasados". El profesor puede, si lo desea, calificar el trabajo y proporcionar retroalimentación al estudiante. Las calificaciones del trabajo retrasado se mantienen en segundo plano y no se usan en el cálculo de las calificaciones finales. Si, por la razón que fuere,el profesor desea aceptar un trabajo retrasado como si hubiera sido enviado dentro de plazo, la señal de retraso puede eliminarse en la página de Administración, encontrando el envío y haciendo clic en el enlace apropiado. A partir de ese momento la calificación de ese trabajo se usará en el cálculo de la calificación final.

                        Con todos los evíos calificados, el ejercicio entra en la fase final. Los estudiantes pueden ahora ver su calificación final y las calificaciones asignadas a sus envíos. La calificación de un diff --git a/lang/eu/help/exercise/nelements.html b/lang/eu/help/exercise/nelements.html index 2729c9583f4..3a24fe940ca 100644 --- a/lang/eu/help/exercise/nelements.html +++ b/lang/eu/help/exercise/nelements.html @@ -1,9 +1,9 @@ -

                        Número de comentarios, elementos, franjas de error, criterios o rúbricas

                        +

                        Número de comentarios, elementos, franjas de error, criterios o rúbricas

                        -

                        El número introducido aquí determina cuántos elementos se usarán en las evaluaciones. Dependiendo del tipo de estrategia de calificación, este número indica el número de comentarios, elementos de evaluación, franjas de error, criterios o categorías que serán usados en las evaluaciones. Por lo general, una tarea tendrá entre 5 y 15 elementos de evaluación, si bien el número ideal dependerá del tamaño y la complejidad de la tarea.

                        +

                        El número introducido aquí determina cuántos elementos se usarán en las evaluaciones. Dependiendo del tipo de estrategia de calificación, este número indica el número de comentarios, elementos de evaluación, franjas de error, criterios o categorías que serán usados en las evaluaciones. Por lo general, una tarea tendrá entre 5 y 15 elementos de evaluación, si bien el número ideal dependerá del tamaño y la complejidad de la tarea.

                        Durante la fase de configurar el ejercicio este número puede ser cambiado sin perder ninguna información. Al aumentar el número de elementos se mostrarán nuevos elementos en blanco en el formulario de evaluación. La reducción del número quitará los últimos elementos del formulario de evaluación.

                        -

                        Todas las evaluaciones tienen un campo de comentarios generales. Si usted elige "Ninguna calificación", el valor dado aquí determinará el número de áreas para los comentarios adicionales. En el caso de poner cero, la evaluación tendrá una sola área de comentarios generales. +

                        Todas las evaluaciones tienen un campo de comentarios generales. Si usted elige "Ninguna calificación", el valor dado aquí determinará el número de áreas para los comentarios adicionales. En el caso de poner cero, la evaluación tendrá una sola área de comentarios generales. -

                        +

                        diff --git a/lang/eu/help/exercise/regrading.html b/lang/eu/help/exercise/regrading.html index 7c4b2f80667..d451bb5ac1f 100644 --- a/lang/eu/help/exercise/regrading.html +++ b/lang/eu/help/exercise/regrading.html @@ -1,4 +1,4 @@ -

                        Recalificación de las evaluaciones de los estudiantes

                        +

                        Recalificación de las evaluaciones de los estudiantes

                        Este enlace recalcula la "calificación de las calificaciones" de todas las evaluaciones de los estudiantes. Normalmente no es necesario activar este cálculo. @@ -13,11 +13,11 @@ son muy bajas, el ajuste de la opción a "Laxo" or "Muy laxo" incrementará su valor.

                        -

                        Los pasos para realizar un cambio son los siguientes:

                        +

                        Los pasos para realizar un cambio son los siguientes:

                        1. Actualice el ejercicio con el nuevo valor de la opción Comparación de las evaluaciones;
                        2. Vaya a la página de administración del ejercicio y haga clic en el enlace "Recalificar las evaluaciones de los estudiantes".
                        -

                        Se mostrarán las nuevas calificaciones. Este proceso puede repetirse con seguridad.

                        + Se mostrarán las nuevas calificaciones. Este proceso puede repetirse con seguridad.

                        diff --git a/lang/eu/help/exercise/submissionofdescriptions.html b/lang/eu/help/exercise/submissionofdescriptions.html index 66377ce16aa..06ac393c5c4 100644 --- a/lang/eu/help/exercise/submissionofdescriptions.html +++ b/lang/eu/help/exercise/submissionofdescriptions.html @@ -1,12 +1,12 @@ -

                        Envío de Descripciones de Ejercicios

                        +

                        Envío de Descripciones de Ejercicios

                        -

                        El profesor debe enviar al menos una descripción del ejercicio o tarea. +

                        El profesor debe enviar al menos una descripción del ejercicio o tarea. La descripción puede ser enviada en un documento de Word o en un archivo HTML (o en cualquier otro tipo de archivo que pueda visualizarse satisfactoriamente en un navegador). Este archivo será mostrado a los estudiantes y debe contener instrucciones para que puedan realizar el ejercicio con éxito.

                        -

                        El profesor puede enviar más de una descripción del ejercicio. Estas +

                        El profesor puede enviar más de una descripción del ejercicio. Estas serán utilizadas de forma aleatoria, de tal forma que diferentes estudiantes verán diferentes versiones del ejercicio. Estas variantes deben ser similares ya que se usará el mismo formulario para evaluar el trabajo indicado en las distintas diff --git a/lang/eu/help/exercise/takeownership.html b/lang/eu/help/exercise/takeownership.html index fab621796b5..4f18b43f016 100644 --- a/lang/eu/help/exercise/takeownership.html +++ b/lang/eu/help/exercise/takeownership.html @@ -1,11 +1,11 @@ -

                        Tomar Posesión de los Ejercicios

                        +

                        Tomar Posesión de los Ejercicios

                        Este enlace permite al profesor tomar posesión del conjunto actual de ejercicios enviados. Esta operación es necesaria si se ha importado un ejercicio desde una copia de seguridad (backup) de otro curso. Este enlace le permite "reclamar" todos los envíos de ejercicios. En el curso actual los envíos importados pueden pertenecer a cualquiera, incluso a un estudiante. Este procedimiento evita cualquier - problema que esto pueda causar y le convierte en el propietario de los envíos.

                        + problema que esto pueda causar y le convierte en el propietario de los envíos.

                        Este procedimiento altera únicamente el propietario de los envíos, dejando el resto intacto.

                        diff --git a/lang/eu/help/forum/allowdiscussions.html b/lang/eu/help/forum/allowdiscussions.html index b7f758df41c..5ca3dc8a89f 100644 --- a/lang/eu/help/forum/allowdiscussions.html +++ b/lang/eu/help/forum/allowdiscussions.html @@ -1,18 +1,18 @@ -

                        Permitir nuevos mensajes

                        +

                        Permitir nuevos mensajes

                        -

                        Esta opción permite restringir que los estudiantes añadan nuevos - contenidos en este foro.

                        +

                        Esta opción permite restringir que los estudiantes añadan nuevos + contenidos en este foro. -

                        Para la mayoría de los foros querrá dejar a los estudiantes sin restricción, +

                        Para la mayoría de los foros querrá dejar a los estudiantes sin restricción, y escoger la primera opción para permitirles empezar nuevos temas de debate y - también para contestar a esos temas.

                        + también para contestar a esos temas. -

                        A veces, sin embargo, usted querrá desactivar esta opción. Por ejemplo, esto +

                        A veces, sin embargo, usted querrá desactivar esta opción. Por ejemplo, esto es útil para el foro de Noticias cuando se desea que sólo los profesores puedan anunciar nuevos asuntos para que aparezcan en la página principal del curso. - En este caso debería escoger la tercera opción "Ningún debate, ninguna respuesta".

                        + En este caso debería escoger la tercera opción "Ningún debate, ninguna respuesta". -

                        Otras veces querrá permitir sólo a los profesores empezar los nuevos debates, +

                        Otras veces querrá permitir sólo a los profesores empezar los nuevos debates, pero dejar a los estudiantes que puedan contestar (por ejemplo dentro del foro de noticias en la página de bienvenida del sitio). En este caso, usted deberá escoger - la segunda opción, "Ningún debate, pero se permiten respuestas".

                        + la segunda opción, "Ningún debate, pero se permiten respuestas". diff --git a/lang/eu/help/forum/attachment.html b/lang/eu/help/forum/attachment.html index 0b40dc7f93b..cf039cb3a8d 100644 --- a/lang/eu/help/forum/attachment.html +++ b/lang/eu/help/forum/attachment.html @@ -1,18 +1,18 @@ -

                        Mensajes con archivos adjuntos

                        +

                        Mensajes con archivos adjuntos

                        -

                        Usted puede, opcionalmente, adjuntar un archivo a cualquier mensaje que envíe - a los foros. Este archivo es subido al servidor y guardado con su mensaje.

                        +

                        Usted puede, opcionalmente, adjuntar un archivo a cualquier mensaje que envíe + a los foros. Este archivo es subido al servidor y guardado con su mensaje. -

                        Esto es útil cuando usted, por ejemplo, quiere compartir una imagen o un - documento de Word.

                        +

                        Esto es útil cuando usted, por ejemplo, quiere compartir una imagen o un + documento de Word. -

                        Este archivo puede ser de cualquier tipo. Sin embargo, es muy recomendable que +

                        Este archivo puede ser de cualquier tipo. Sin embargo, es muy recomendable que el archivo use los sufijos de 3 letras habituales (como .doc para un documento de Word .jpg o .png para una imagen, etc.). Esto hará más fácil para los demás - bajar y ver en sus navegadores los archivos que haya adjuntado.

                        + bajar y ver en sus navegadores los archivos que haya adjuntado. -

                        Si usted reedita un mensaje y le adjunta un nuevo archivo, entonces se - reemplazará cualquier archivo anterior que hubiera adjuntado a ese mensaje.

                        +

                        Si usted reedita un mensaje y le adjunta un nuevo archivo, entonces se + reemplazará cualquier archivo anterior que hubiera adjuntado a ese mensaje. -

                        Si reedita un mensaje con un archivo adjunto y deja este espacio vacío, - entonces se mantendrá el archivo adjunto original.

                        +

                        Si reedita un mensaje con un archivo adjunto y deja este espacio vacío, + entonces se mantendrá el archivo adjunto original. diff --git a/lang/eu/help/forum/forumtype.html b/lang/eu/help/forum/forumtype.html index 15a8f5a0278..1bb26433198 100644 --- a/lang/eu/help/forum/forumtype.html +++ b/lang/eu/help/forum/forumtype.html @@ -1,17 +1,17 @@ -

                        Tipos de Foros

                        +

                        Tipos de Foros

                        -

                        Hay varios tipos diferentes de foros entre los que elegir:

                        +

                        Hay varios tipos diferentes de foros entre los que elegir: -

                        Un debate sencillo. Es simplemente un intercambio de ideas sobre un -solo tema, todo en un página. Útil para debates cortos y muy concretos.

                        +

                        Un debate sencillo. Es simplemente un intercambio de ideas sobre un +solo tema, todo en un página. Útil para debates cortos y muy concretos. -

                        El foro Normal, para uso general. Es un foro abierto donde cualquiera +

                        El foro Normal, para uso general. Es un foro abierto donde cualquiera puede empezar un nuevo tema de debate cuando quiera. Este es el foro más adecuado -para uso general.

                        +para uso general. -

                        Cada persona inicia un debate. Cada persona puede plantear un nuevo tema +

                        Cada persona inicia un debate. Cada persona puede plantear un nuevo tema de debate (y todos pueden responder). Esta modalidad es útil cuando usted quiere que cada estudiante empiece una discusión sobre, digamos, sus reflexiones sobre -el tema de la semana, y que todos los demás le respondan.

                        +el tema de la semana, y que todos los demás le respondan. -

                        (Habrá más modalidades en futuras versiones de Moodle)

                        +

                        (Habrá más modalidades en futuras versiones de Moodle) diff --git a/lang/eu/help/forum/index.html b/lang/eu/help/forum/index.html index 2916f639fe4..f3880ad85c4 100644 --- a/lang/eu/help/forum/index.html +++ b/lang/eu/help/forum/index.html @@ -2,16 +2,16 @@

                        diff --git a/lang/eu/help/forum/maxattachmentsize.html b/lang/eu/help/forum/maxattachmentsize.html index f426000d835..0bb8c6dd312 100644 --- a/lang/eu/help/forum/maxattachmentsize.html +++ b/lang/eu/help/forum/maxattachmentsize.html @@ -1,7 +1,7 @@ -

                        Tamaño máximo de archivos adjuntos

                        +

                        Tamaño máximo de archivos adjuntos

                        -

                        El tamaño de los archivos adjuntos pueden ser limitado por la persona - que configura el foro.

                        +

                        El tamaño de los archivos adjuntos pueden ser limitado por la persona + que configura el foro. -

                        En ocasiones es posible subir un archivo de un tamaño mayor al especificado, - pero en este caso no se guardará en el servidor y aparecerá un mensaje de error.

                        +

                        En ocasiones es posible subir un archivo de un tamaño mayor al especificado, + pero en este caso no se guardará en el servidor y aparecerá un mensaje de error. diff --git a/lang/eu/help/forum/mods.html b/lang/eu/help/forum/mods.html index de21d7e0caa..9d9bc1775db 100644 --- a/lang/eu/help/forum/mods.html +++ b/lang/eu/help/forum/mods.html @@ -1,6 +1,6 @@ -

                         Foroak

                        +

                         Foroak

                        -

                        Modulu hau garrantzitsuena izan daiteke, harreman eta eztabaida gehiena hemen +

                        Modulu hau garrantzitsuena izan daiteke, harreman eta eztabaida gehiena hemen gertatzen da-eta. Foroak modu ezberdinetan egitura daitezke, eta partaideek kideen mezuen ebaluazioa ere gainera dezakete. @@ -8,5 +8,5 @@ irudi txertatuak izan ditzakete. Foro batera harpidetutakoan, partaideek ePostaz jasoko dituzte automatikoki forora bidalitako mezuak. - Irakasleak ikasleak foro jakin batera harpidetzera behartu ahal ditu.

                        + Irakasleak ikasleak foro jakin batera harpidetzera behartu ahal ditu.
                        diff --git a/lang/eu/help/forum/ratings.html b/lang/eu/help/forum/ratings.html index 0da3e7c7d4a..8cf949bfa83 100644 --- a/lang/eu/help/forum/ratings.html +++ b/lang/eu/help/forum/ratings.html @@ -23,28 +23,29 @@ b) proporcionar retroalimentaci Los resultados no se usan de forma alguna en la evaluación del estudiante, sino que ayudan a mejorar la comunicación y el aprendizaje. -
                        - +
                        +

                        En el caso de que usted esté interesado, aquí tiene algunas referencias a escritos de los autores que originalmente desarrollaron estas ideas:
                          -
                        • 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, NY: Basic Books.
                        • +
                        • 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, NY: Basic Books.
                        • -
                        • Clinchy, B.M. (1989a). The development of thoughtfulness in college women: Integrating reason and care. American Behavioural Scientist, 32(6), 647-657.
                        • +
                        • Clinchy, B.M. (1989a). The development of thoughtfulness in college women: Integrating reason and care. American Behavioural Scientist, 32(6), 647-657.
                        • -
                        • Clinchy, B.M. (1989b). On critical thinking & connected knowing. Liberal education, 75(5), 14-19.
                        • +
                        • Clinchy, B.M. (1989b). On critical thinking & connected knowing. Liberal education, 75(5), 14-19.
                        • Clinchy, B.M. (1996). Connected and separate knowing; Toward a marriage of two minds. In N.R. Goldberger, Tarule, J.M., Clinchy, B.M. &
                        • -
                        • Belenky, M.F. (Eds.), Knowledge, Difference, and Power; Essays inspired by “Women’s Ways of Knowing”; (pp. 205-247). New York, NY: Basic Books.
                        • +
                        • Belenky, M.F. (Eds.), Knowledge, Difference, and Power; Essays inspired by “Women’s Ways of Knowing”; (pp. 205-247). New York, NY: Basic Books.
                        • -
                        • 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.
                        • +
                        • 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.
                        • -
                        • 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. +
                        • 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. + +
                          -
                        diff --git a/lang/eu/help/forum/rssarticles.html b/lang/eu/help/forum/rssarticles.html index cdc4b740c9c..db522000da0 100644 --- a/lang/eu/help/forum/rssarticles.html +++ b/lang/eu/help/forum/rssarticles.html @@ -1,7 +1,7 @@ -

                        Número de artículos RSS recientes

                        +

                        Número de artículos RSS recientes

                        -

                        Esta opción le permite seleccionar el número de artículos a incluir - en el Canal RSS.

                        +

                        Esta opción le permite seleccionar el número de artículos a incluir + en el Canal RSS. -

                        Un número comprendido entre 5 y 20 debería ser apropiado para la mayoría - de los foros. Auméntelo si se trata de un foro muy utilizado.

                        +

                        Un número comprendido entre 5 y 20 debería ser apropiado para la mayoría + de los foros. Auméntelo si se trata de un foro muy utilizado. diff --git a/lang/eu/help/forum/rsstype.html b/lang/eu/help/forum/rsstype.html index 22f8c084ce4..9200ea0db16 100644 --- a/lang/eu/help/forum/rsstype.html +++ b/lang/eu/help/forum/rsstype.html @@ -1,11 +1,11 @@ -

                        Canales RSS en este foro

                        +

                        Canales RSS en este foro

                        -

                        Esta opción le permite habilitar los canales RSS en este foro.

                        +

                        Esta opción le permite habilitar los canales RSS en este foro. -

                        Puede escoger entre dos tipos de foros:

                        -
                          -
                        • Debates: Con esta opción, los datos generados incluirán nuevas - discusiones en el foro con su mensaje inicial.
                        • -
                        • Mensajes: Con esta opción, los datos generados incluirán cada - nuevo mensaje en el foro.
                        • -
                        +

                        Puede escoger entre dos tipos de foros: +

                          +
                        • Debates: Con esta opción, los datos generados incluirán nuevas + discusiones en el foro con su mensaje inicial. +
                        • Mensajes: Con esta opción, los datos generados incluirán cada + nuevo mensaje en el foro. +
                        diff --git a/lang/eu/help/forum/subscription.html b/lang/eu/help/forum/subscription.html index 306943b0412..973cf11c011 100644 --- a/lang/eu/help/forum/subscription.html +++ b/lang/eu/help/forum/subscription.html @@ -1,16 +1,16 @@ -

                        Suscripción a los Foros

                        +

                        Suscripción a los Foros

                        -

                        Cuando alguien se subscribe a un foro recibirá por correo electrónico una +

                        Cuando alguien se subscribe a un foro recibirá por correo electrónico una copia de cada mensaje enviado a ese foro (los mensajes son enviados maxeditingtime/60 ?> aproximadamente 30 minutos después - de haber sido escritos).

                        + de haber sido escritos). -

                        Los participantes normalmente pueden escoger si desean o no suscribirse a cada uno - de los foros.

                        +

                        Los participantes normalmente pueden escoger si desean o no suscribirse a cada uno + de los foros. -

                        Sin embargo, si un profesor fuerza la suscripción a un foro concreto, esta +

                        Sin embargo, si un profesor fuerza la suscripción a un foro concreto, esta posibilidad de elección es anulada y todos recibirán copias por - correo electrónico de los mensajes de ese foro.

                        + correo electrónico de los mensajes de ese foro. -

                        Esto es especialmente útil en el foro de Noticias y en los foros iniciados - al principio del curso (antes de que todos sepan que pueden suscribirse por sí mismos).

                        +

                        Esto es especialmente útil en el foro de Noticias y en los foros iniciados + al principio del curso (antes de que todos sepan que pueden suscribirse por sí mismos). diff --git a/lang/eu/help/forum/subscription2.html b/lang/eu/help/forum/subscription2.html index 6b0c8565aff..5d6740ef160 100644 --- a/lang/eu/help/forum/subscription2.html +++ b/lang/eu/help/forum/subscription2.html @@ -1,21 +1,21 @@ -

                        Suscripción a los Foros

                        +

                        Suscripción a los Foros

                        -

                        Cuando alguien se subscribe a un foro recibirá por correo electrónico una +

                        Cuando alguien se subscribe a un foro recibirá por correo electrónico una copia de cada mensaje enviado a ese foro (los mensajes son enviados maxeditingtime/60 ?> aproximadamente 30 minutos después - de haber sido escritos).

                        + de haber sido escritos). -

                        Los participantes normalmente pueden escoger si desean o no suscribirse a cada uno - de los foros.

                        +

                        Los participantes normalmente pueden escoger si desean o no suscribirse a cada uno + de los foros. -

                        Sin embargo, si usted elige forzar la suscripción a un foro en particular, +

                        Sin embargo, si usted elige forzar la suscripción a un foro en particular, entonces todos los alumnos del curso quedarán automáticamente suscritos, incluso aquellos que se matriculen más tarde. -

                        +

                        -

                        Esto es especialmente útil en el foro de Noticias y en los foros iniciados +

                        Esto es especialmente útil en el foro de Noticias y en los foros iniciados al principio del curso (antes de que todos sepan que pueden suscribirse por sí mismos). -

                        +

                        Si usted selecciona la opción "Sí, inicialmente", todos los usuarios actuales y futuros del curso quedarán suscritos inicialmente, pero podrán darse de baja diff --git a/lang/eu/help/glossary/aliases.html b/lang/eu/help/glossary/aliases.html index ebb9e555e8b..47b7f42239f 100644 --- a/lang/eu/help/glossary/aliases.html +++ b/lang/eu/help/glossary/aliases.html @@ -1,7 +1,7 @@ -

                        Seudónimos

                        +

                        Seudónimos

                        -

                        El glosario permite mantener una lista de seudónimos para cada entrada.

                        +

                        El glosario permite mantener una lista de seudónimos para cada entrada.

                        Los seudónimos se usan como términos alternativos para referirse a un concepto, por lo que dondequiera que el concepto o su seudónimo se -encuentre, se enlazará automáticamente a dicho concepto.

                        \ No newline at end of file +encuentre, se enlazará automáticamente a dicho concepto. \ No newline at end of file diff --git a/lang/eu/help/glossary/allowduplicatedentries.html b/lang/eu/help/glossary/allowduplicatedentries.html index 1bfbf4d8e8b..a0667659b5b 100644 --- a/lang/eu/help/glossary/allowduplicatedentries.html +++ b/lang/eu/help/glossary/allowduplicatedentries.html @@ -1,5 +1,4 @@ -

                        Permitir definiciones duplicadas

                        +

                        Permitir definiciones duplicadas

                        -

                        Si usted habilita esta opción, un mismo conceptolas +

                        Si usted habilita esta opción, un mismo conceptolas podrá tener múltiples entradas. -

                        \ No newline at end of file diff --git a/lang/eu/help/glossary/casesensitive.html b/lang/eu/help/glossary/casesensitive.html index 22be54f3643..9ed6edc110e 100644 --- a/lang/eu/help/glossary/casesensitive.html +++ b/lang/eu/help/glossary/casesensitive.html @@ -1,6 +1,6 @@ -

                        Reconocer mayúsculas y minúsculas

                        +

                        Reconocer mayúsculas y minúsculas

                        -

                        Esta variable especifica si las mayúsculas y minúsculas deben coincidir +

                        Esta variable especifica si las mayúsculas y minúsculas deben coincidir exactamente para crear el enlace automático a las entradas.

                        Por ejemplo, si se encuentra habilitada, la palabra "html" en un mensaje de diff --git a/lang/eu/help/glossary/defaultapproval.html b/lang/eu/help/glossary/defaultapproval.html index 793ee6776f3..ee9011cc0a5 100644 --- a/lang/eu/help/glossary/defaultapproval.html +++ b/lang/eu/help/glossary/defaultapproval.html @@ -1,4 +1,4 @@ -

                        Estado de aprobación por defecto

                        +

                        Estado de aprobación por defecto

                        Usted puede elegir si las entradas del estudiante se inicorporarán automáticamente o si éstas deben ser previamente aprobadas por el maestro.

                        diff --git a/lang/eu/help/glossary/description.html b/lang/eu/help/glossary/description.html index c0934157724..a1ee601e618 100644 --- a/lang/eu/help/glossary/description.html +++ b/lang/eu/help/glossary/description.html @@ -1,4 +1,4 @@ -

                        Descripción

                        +

                        Descripción

                        -

                        Este campo le permite describir el propósito del glosario, y proporcionar +

                        Este campo le permite describir el propósito del glosario, y proporcionar instrucciones o información de fondo, enlaces, etc.

                        diff --git a/lang/eu/help/glossary/destination.html b/lang/eu/help/glossary/destination.html index 10d7d381e68..f5c1a4b9690 100644 --- a/lang/eu/help/glossary/destination.html +++ b/lang/eu/help/glossary/destination.html @@ -1,6 +1,6 @@ -

                        Definiendo el destino de las entradas importadas

                        +

                        Definiendo el destino de las entradas importadas

                        -

                        Puede especificar dónde desea importar las entradas:

                        +

                        Puede especificar dónde desea importar las entradas:

                        • Glosario actual: Las entradas importadas se añadirán en el glosario abierto.
                        • diff --git a/lang/eu/help/glossary/displayformat.html b/lang/eu/help/glossary/displayformat.html index 49ece27494a..6d18e4141c0 100644 --- a/lang/eu/help/glossary/displayformat.html +++ b/lang/eu/help/glossary/displayformat.html @@ -1,6 +1,6 @@ -

                          Formato de vista

                          +

                          Formato de vista

                          -

                          Esta variable define la manera cómo se mostrará cada entrada dentro del glosario. +

                          Esta variable define la manera cómo se mostrará cada entrada dentro del glosario. Los formatos disponibles son:

                          @@ -25,6 +25,6 @@ a
                          -
                          +

                          Los administradores de Moodle pueden crear nuevos formatos siguiendo las instrucciones que aparecen en el archivo mod/glossary/formats/README.txt de su instalación.

                          diff --git a/lang/eu/help/glossary/editalways.html b/lang/eu/help/glossary/editalways.html index 51d96b6ee3b..ea3158693c7 100644 --- a/lang/eu/help/glossary/editalways.html +++ b/lang/eu/help/glossary/editalways.html @@ -1,12 +1,12 @@ -

                          Editar siempre

                          +

                          Editar siempre

                          -

                          Esta opción permite decidir si los estudiantes pueden editar sus entradas -en cualquier momento.

                          +

                          Esta opción permite decidir si los estudiantes pueden editar sus entradas +en cualquier momento. -

                          Usted puede seleccionar:

                          +

                          Usted puede seleccionar: -

                            -
                          • Sí: Las entradas pueden editarse siempre.
                          • +
                              +
                            • Sí: Las entradas pueden editarse siempre. -
                            • No: Las entradas son editables durante un período especificado.
                            • -
                            +
                          • No: Las entradas son editables durante un período especificado. +
                          diff --git a/lang/eu/help/glossary/entbypage.html b/lang/eu/help/glossary/entbypage.html index 1e8d250dd36..590ecf8d078 100644 --- a/lang/eu/help/glossary/entbypage.html +++ b/lang/eu/help/glossary/entbypage.html @@ -1,6 +1,6 @@ -

                          Definir el número de entradas mostradas por página

                          +

                          Definir el número de entradas mostradas por página

                          -

                          El glosario puede ser configurado para restringir el número de entradas +

                          El glosario puede ser configurado para restringir el número de entradas mostradas por página.

                          Si tiene demasiadas entradas automáticas podría reducir este número para diff --git a/lang/eu/help/glossary/filetoimport.html b/lang/eu/help/glossary/filetoimport.html index 66d9c41a7ac..7e2c3256259 100644 --- a/lang/eu/help/glossary/filetoimport.html +++ b/lang/eu/help/glossary/filetoimport.html @@ -1,4 +1,4 @@ -

                          Archivos a importar

                          +

                          Archivos a importar

                          -

                          Seleccione en su computadora los archivos XML que contienen las entradas a +

                          Seleccione en su computadora los archivos XML que contienen las entradas a importar.

                          diff --git a/lang/eu/help/glossary/fullmatch.html b/lang/eu/help/glossary/fullmatch.html index 414b1954f66..3dcfc102312 100644 --- a/lang/eu/help/glossary/fullmatch.html +++ b/lang/eu/help/glossary/fullmatch.html @@ -1,6 +1,6 @@ -

                          Sólo palabras completas

                          +

                          Sólo palabras completas

                          -

                          Esta variable define si el enlace automático se hará con palabras completas o no.

                          +

                          Esta variable define si el enlace automático se hará con palabras completas o no.

                          Por ejemplo, si está habilitada, la entrada "casa" no se enlazará automáticamente con la palabra "casamiento".

                          diff --git a/lang/eu/help/glossary/globalglossary.html b/lang/eu/help/glossary/globalglossary.html index bac63d1dfaf..a8512412bb1 100644 --- a/lang/eu/help/glossary/globalglossary.html +++ b/lang/eu/help/glossary/globalglossary.html @@ -1,6 +1,6 @@ -

                          Definiendo un glosario global

                          +

                          Definiendo un glosario global

                          -

                          El sistema del glosario le permite definir conceptos que podrían estar +

                          El sistema del glosario le permite definir conceptos que podrían estar disponibles en todo el sitio. Son los Glosarios Globales.

                          Para hacer esto, usted debe especificar cuál es el glosario global.

                          diff --git a/lang/eu/help/glossary/importcategories.html b/lang/eu/help/glossary/importcategories.html index eee31842b23..9dca3f3c0f6 100644 --- a/lang/eu/help/glossary/importcategories.html +++ b/lang/eu/help/glossary/importcategories.html @@ -1,4 +1,4 @@ -

                          Importando categorías

                          +

                          Importando categorías

                          -

                          Por defecto se importarán todas las entradas. Si lo desea, puede especificar +

                          Por defecto se importarán todas las entradas. Si lo desea, puede especificar que también se importen las categorías (y asignar las nuevas entradas a ellas).

                          diff --git a/lang/eu/help/glossary/index.html b/lang/eu/help/glossary/index.html index 1686d3e069f..7525524653c 100644 --- a/lang/eu/help/glossary/index.html +++ b/lang/eu/help/glossary/index.html @@ -3,31 +3,31 @@
                          Archivos de ayuda del Glosario:
                          Otras ayudas:
                          diff --git a/lang/eu/help/glossary/linkcategory.html b/lang/eu/help/glossary/linkcategory.html index 3dcc537db79..98f80e77d17 100644 --- a/lang/eu/help/glossary/linkcategory.html +++ b/lang/eu/help/glossary/linkcategory.html @@ -1,8 +1,8 @@ -

                          Categorías con enlaces automáticos

                          +

                          Categorías con enlaces automáticos

                          -

                          Puede especificar si desea que las categorías tengan enlaces automáticos o +

                          Puede especificar si desea que las categorías tengan enlaces automáticos o no.

                          -

                          Nota: Las categorías tienen enlaces basados en la sensibilidad del caso, +

                          Nota: Las categorías tienen enlaces basados en la sensibilidad del caso, como el emparejamiento.

                          diff --git a/lang/eu/help/glossary/mainglossary.html b/lang/eu/help/glossary/mainglossary.html index 05bae52547a..1f0c4a2bae5 100644 --- a/lang/eu/help/glossary/mainglossary.html +++ b/lang/eu/help/glossary/mainglossary.html @@ -1,6 +1,6 @@ -

                          Definiendo el glosario principal del curso

                          +

                          Definiendo el glosario principal del curso

                          -

                          El sistema del glosario le permite exportar las entradas de cualquier +

                          El sistema del glosario le permite exportar las entradas de cualquier glosario secundario al principal del curso.

                          Para hacer esto, usted debe especificar cuál glosario es el principal.

                          diff --git a/lang/eu/help/glossary/mods.html b/lang/eu/help/glossary/mods.html index 385fc18c0ab..cb6ef648a36 100644 --- a/lang/eu/help/glossary/mods.html +++ b/lang/eu/help/glossary/mods.html @@ -1,10 +1,10 @@ -

                           Glosario

                          -
                            -

                            Esta actividad permite a los participantes crear y mantener una lista de -definiciones, como un diccionario.

                            -

                            Las entradas pueden buscarse o navegarse de diferentes maneras.

                            -

                            El glosario también permite a los maestros exportar las entradas de un -glosario a otro (el principal) dentro del mismo curso.

                            -

                            Finalmente, es posible crear automáticamente hiperenlaces a estas entradas +

                             Glosario

                            +
                              +

                              Esta actividad permite a los participantes crear y mantener una lista de +definiciones, como un diccionario. +

                              Las entradas pueden buscarse o navegarse de diferentes maneras. +

                              El glosario también permite a los maestros exportar las entradas de un +glosario a otro (el principal) dentro del mismo curso. +

                              Finalmente, es posible crear automáticamente hiperenlaces a estas entradas en todo el curso.

                              -
                            +
                          diff --git a/lang/eu/help/glossary/rssarticles.html b/lang/eu/help/glossary/rssarticles.html index 646445852ac..2004c41bee0 100644 --- a/lang/eu/help/glossary/rssarticles.html +++ b/lang/eu/help/glossary/rssarticles.html @@ -1,5 +1,5 @@ -

                          Número de artículos RSS recientes

                          +

                          Número de artículos RSS recientes

                          -

                          Esta opción le permite seleccionar el número de artículos a incluir en el Canal RSS.

                          +

                          Esta opción le permite seleccionar el número de artículos a incluir en el Canal RSS. -

                          Un número entre 5 y 20 debería ser apropiado para la mayoría de los glosarios. Auméntelo si se trata de un glosario muy utilizado.

                          \ No newline at end of file +

                          Un número entre 5 y 20 debería ser apropiado para la mayoría de los glosarios. Auméntelo si se trata de un glosario muy utilizado. \ No newline at end of file diff --git a/lang/eu/help/glossary/rsstype.html b/lang/eu/help/glossary/rsstype.html index bfc6c5f848d..ceb8258f356 100644 --- a/lang/eu/help/glossary/rsstype.html +++ b/lang/eu/help/glossary/rsstype.html @@ -1,12 +1,12 @@ -

                          Canal RSS para este glosario

                          +

                          Canal RSS para este glosario

                          -

                          Esta opción le permite habilitar los canales RSS en este glosario.

                          +

                          Esta opción le permite habilitar los canales RSS en este glosario. -

                          Puede escoger entre dos tipos:

                          +

                          Puede escoger entre dos tipos: -

                            -
                          • Con autor: Con esta opción, los datos generados incluirán el nombre del autor en cada artículo.
                          • +
                              +
                            • Con autor: Con esta opción, los datos generados incluirán el nombre del autor en cada artículo. -
                            • Sin autor: Con esta opción, los datos generados no incluirán el nombre del autor en cada artículo.
                            • -
                            +
                          • Sin autor: Con esta opción, los datos generados no incluirán el nombre del autor en cada artículo. +
                          diff --git a/lang/eu/help/glossary/shows.html b/lang/eu/help/glossary/shows.html index 3e5024cc1ea..96a8d94691c 100644 --- a/lang/eu/help/glossary/shows.html +++ b/lang/eu/help/glossary/shows.html @@ -1,6 +1,6 @@ -

                          Opciones de navegación en el formato alfabético

                          +

                          Opciones de navegación en el formato alfabético

                          -

                          Usted puede personalizar la manera en que un usuario puede buscar en un +

                          Usted puede personalizar la manera en que un usuario puede buscar en un glosario. La función de búsqueda por categoría o fecha siempre está disponible, pero usted puede definir tres opciones más:

                          diff --git a/lang/eu/help/glossary/studentcanpost.html b/lang/eu/help/glossary/studentcanpost.html index aa27f5400be..f615b0dbc2f 100644 --- a/lang/eu/help/glossary/studentcanpost.html +++ b/lang/eu/help/glossary/studentcanpost.html @@ -1,6 +1,6 @@ -

                          Los estudiantes pueden agregar entradas

                          +

                          Los estudiantes pueden agregar entradas

                          -

                          Usted puede especificar si un estudiante puede o no agregar, revisar o +

                          Usted puede especificar si un estudiante puede o no agregar, revisar o anular sus propias entradas. Las entradas exportadas a un glosario principal sólo pueden actualizarse o anularse por maestros, esta variable sólo se aplica a los glosarios secundarios.

                          diff --git a/lang/eu/help/glossary/usedynalink.html b/lang/eu/help/glossary/usedynalink.html index 0d921abb40b..bf8293921f9 100644 --- a/lang/eu/help/glossary/usedynalink.html +++ b/lang/eu/help/glossary/usedynalink.html @@ -1,6 +1,6 @@ -

                          Activando el enlace automático en un glosario

                          +

                          Activando el enlace automático en un glosario

                          -

                          Activando esta funcionalidad permitirá que las entradas individuales sean enlazadas automáticamente cuando +

                          Activando esta funcionalidad permitirá que las entradas individuales sean enlazadas automáticamente cuando las palabras y frases de los conceptos aparezcan en el resto del mismo curso. Esto incluye mensajes en los foros, materiales internos, resúmenes, diarios, etc.

                          diff --git a/lang/eu/help/glossary/usedynalinkentry.html b/lang/eu/help/glossary/usedynalinkentry.html index d937b530728..e271b91e005 100644 --- a/lang/eu/help/glossary/usedynalinkentry.html +++ b/lang/eu/help/glossary/usedynalinkentry.html @@ -1,6 +1,6 @@ -

                          Enlace automático de entradas

                          +

                          Enlace automático de entradas

                          -

                          Activando esta funcionalidad la entrada será automáticamente enlazada, en cuanto las palabras y frases +

                          Activando esta funcionalidad la entrada será automáticamente enlazada, en cuanto las palabras y frases del concepto aparezcan a lo largo del resto del curso. Esto incluye los mensajes en los foros, los materiales internos, resúmenes, diarios, etc.

                          diff --git a/lang/eu/help/groupmode.html b/lang/eu/help/groupmode.html index b202be8aba2..ebf2d703fbf 100644 --- a/lang/eu/help/groupmode.html +++ b/lang/eu/help/groupmode.html @@ -8,7 +8,7 @@

                        -

                        El modo grupo puede ser definido a dos niveles:

                        +

                        El modo grupo puede ser definido a dos niveles:

                        1. A nivel Curso
                        @@ -19,4 +19,7 @@ modo de agrupación. Si el curso está configurado como "forzar modo de grupo" entonces se ignorará la configuración de cada actividad. -
                        \ No newline at end of file +
                + +

                + diff --git a/lang/eu/help/groupmodeforce.html b/lang/eu/help/groupmodeforce.html index 8fc567d166e..f6f35b3cb2b 100644 --- a/lang/eu/help/groupmodeforce.html +++ b/lang/eu/help/groupmodeforce.html @@ -1,6 +1,6 @@

                Forzar Modo Grupo

                -

                Si el modo grupo está "forzado" a nivel de curso, +

                Si el modo grupo está "forzado" a nivel de curso, este modo se aplicará a cada actividad dentro del mismo. Las configuraciones individuales de los grupos serán ignoradas para las actividades del curso.

                diff --git a/lang/eu/help/guestaccess.html b/lang/eu/help/guestaccess.html index 26eec2f7231..2181ea88cb0 100644 --- a/lang/eu/help/guestaccess.html +++ b/lang/eu/help/guestaccess.html @@ -1,17 +1,19 @@ -

                Bisitarien sarrera

                +

                Acceso a invitados

                -

                Bisitariek ikastaroan sartzeko baimena izango duten aukeratu dezakezu.

                +

                Ud. tiene la posibilidad de permitir invitados en su curso.

                -

                Jendea bisitari gisa sartu daiteke "Saioa bisitari gisa hasi" botoia zapalduz saioa hasteko leihoan.

                +

                Los invitados podrán entrar a partir de la página de acceso, +en el botón "entrar como invitado".

                -

                Bisitariek "irakutzeko baimena soilik" dute- hau da EZIN DUTE mezurik bidali edo ikastaroa ikasleen kalterako nahastu.

                +

                Los invitados NUNCA tienen autorización para escribir en los cursos +en los que entren.

                -

                Hau jendeari ikastaroa erakusteko eta ikasleek apuntatu aurretik ikusteko aukera izan dezaten erabilgarria izan daiteke.

                +

                Esto puede ser útil cuando queremos que algún amigo vea nuestro trabajo o +cuando promovemos un curso y queremos que los prospectos puedan entrar antes +de suscribirse.

                -

                Bi bistari sarrera moten artean aukeratu dezakezu: - Partaidetza giltzarekin edo partaidetza giltza gabe. - Sarrera soilik partaidetza giltza duten bisitariei baimentzen badiezu, - bisitariek ikastarora sartzen diren GUZTIETAN sartu beharko dute giltza - (ikasleak ez bezala, hauek behin bakarrik sartu behar dute). - Honek bisitariak mugatzea baimentzen dizu. Giltza gabeko bisitariei sarrera baimentzen badiezu - edonor sartu daiteke zuzenan ikastaroan.

                +

                Existen dos tipos de acceso como invitado: con o sin contraseña. +Los invitados, a diferencia de los alumnos, tendrán que colocar la contraseña de +acceso cada vez que ingresen, lo cual le dará a Ud. más control sobre los visitantes. +Si el curso no tiene contraseña de acceso, cualquier invitado podrá entrar cuando +lo desee.

                diff --git a/lang/eu/help/html.html b/lang/eu/help/html.html index 6baec8ed5a1..f3acb341b4f 100644 --- a/lang/eu/help/html.html +++ b/lang/eu/help/html.html @@ -1,11 +1,22 @@ -

                HTMLa idatzeko laguntza

                +

                Escribiendo HTML

                -

                Moodlen HTML kodea erabiltzen duzunean, nahi dituzun etiketak erabiltzeko askatasuna duzu, nahi duzun efektua lor dezazun.

                +

                Siéntase libre de colocar todas las etiquetas (TAGS) de HTML que desee +para obtener el efecto requerido. -

                Zure kodea normalean orrian kutxatxo batean agertuko da. Honela :

                +

                Su código se colocará dentro de un celda de tabla, por lo que: -

                  -
                • Ez dago <HEAD> edo <BODY> etiketak erabili beharrik -
                • Kontuz bikote gabeko </TABLE> etiketekin bistaratzea erabat nahastu dezaketelako. -
                +
                  +
                • No es necesario utilizar <HEAD> o <BODY> +
                • Sea cuidadoso en cerrar sus tablas (si es el caso) con </TABLE>, + ya que su ausencia puede desbaratar todo el diseño. +
                +

                HTMLa idatzi

                +

                Moodle-n HTML kodea erabiltzen duzunean, nahi dituzun etiketak erabiltzeko +askatasuna duzu, nahi duzun efektua lor dezazun. +

                Zure kodea normalean orrian kutxatxo batean agertuko da. Honela : +

                  +
                • Ez dago <HEAD> edo <BODY> etiketak erabili beharrik +
                • Kontuz bikote gabeko </TABLE> etiketekin bistaratzea erabat nahastu + dezaketelako.
                • +
                diff --git a/lang/eu/help/index.html b/lang/eu/help/index.html index ad7fd6b478d..97765a95d9b 100644 --- a/lang/eu/help/index.html +++ b/lang/eu/help/index.html @@ -2,55 +2,55 @@

                Orokorra

                Administrazioa

                Ikastaroen ezarpenak

                Irakurri eta Idatzi

                diff --git a/lang/eu/help/journal/mods.html b/lang/eu/help/journal/mods.html index 019ac1e121c..ccdad2b5f87 100644 --- a/lang/eu/help/journal/mods.html +++ b/lang/eu/help/journal/mods.html @@ -1,4 +1,4 @@ -

                 Egunkaria

                +

                 Egunkaria

                Modulu honek gogoeta egitea sustatzen du. Gai bat proposatuta, irakasleak ikasleak hausnarketa egitera bultzatuko ditu. Ikasle bakoitzak bere erantzunak diff --git a/lang/eu/help/label/mods.html b/lang/eu/help/label/mods.html index 87bf1672762..78e89189a91 100644 --- a/lang/eu/help/label/mods.html +++ b/lang/eu/help/label/mods.html @@ -1,7 +1,7 @@ -

                 Etiquetas

                -
                  -

                  Esta no es una actividad propiamente dicha. Tan sólo permite colocar texto e +

                   Etiquetas

                  +
                    +

                    Esta no es una actividad propiamente dicha. Tan sólo permite colocar texto e imágenes entre otras actividades en la página central de un curso.

                    -
                  +
                diff --git a/lang/eu/help/langedit.html b/lang/eu/help/langedit.html index 91d9122652e..8f58f7fe931 100644 --- a/lang/eu/help/langedit.html +++ b/lang/eu/help/langedit.html @@ -1,9 +1,7 @@ -

                Hizkuntza editatu

                +

                Edición del idioma

                -

                Orri honetatik hizkuntzak editatzeko, web zerbitzariak fitxategietan idazteko baimena izan behar du.

                +

                Para poder editar el idioma en esta página, los archivos deben tener permiso +de escritura en el servidor.

                -

                Kate batzuetan honelakoak ikusiko dituzu:e $a eta $a->zerbait.

                - -

                Hauek Moodlek edukiz ordezkatuko dituen aldagaiak dira.

                - -

                Aldagai bakarra dagoenean, $a formatua erabiltzen da. Bat baino gehiago dagoenean aldagai bakoitzak izen dat du.

                +

                Dentro de algunas cadenas encontrará $a y $a->algo. Esto +representa variables dentro de la plataforma. No las edite.

                \ No newline at end of file diff --git a/lang/eu/help/lesson/handlingofretakes.html b/lang/eu/help/lesson/handlingofretakes.html index 75ea79b5781..a46d01c707b 100644 --- a/lang/eu/help/lesson/handlingofretakes.html +++ b/lang/eu/help/lesson/handlingofretakes.html @@ -1,4 +1,4 @@ -

                Errepikapenen erabilera

                +Orr align="center">Errepikapenen erabilera

                Ikasleei irakasgaia errepikatzeko edo berriz hartzeko aukera ematen zaienean, irakasleak ikaslearen azken kalifikazioa zein den erabaki ahal izango du aukera honekin, kalifikazio-orrian, adibidez. Media,lehenengoa edo irakasgaian egindako saiakera eta errepikapen guztien artean lortutako kalifikazioonena izan daiteke. diff --git a/lang/eu/help/lesson/import.html b/lang/eu/help/lesson/import.html index d040ed72c97..f1b14ce6a2e 100644 --- a/lang/eu/help/lesson/import.html +++ b/lang/eu/help/lesson/import.html @@ -1,10 +1,10 @@ -

                Galderak inportatu

                +

                Galderak inportatu

                -

                +

                Funtzio honek testu-fitxategietatik galderak inportatzeko aukera ematen du, formulario baten bidez igota. -

                +

                Erabil daitezkeen formatuak hauek dira: -

                GIFT

                +

                GIFT

                  GIFT galderak inportatzeko aukeran dauden formatu guztietatik Moodlerekin ondoen moldatzen dena da. Bere diseinuak erraz uzten dio irakasleari galderak testu-fitxategi batean idazten. Erantzun anitzeko galderak onartzen ditu, Egia ala Gezurra erakoak, Laburrak, Lotu erakoak eta zenbakiz erantzutekoak, eta baita hutsuneak betetzekoak ere ________ eran txertatuta. Hainbat galdera mota nahas daiteke testu-fitxategi bakar batean eta formatu honek iruzkinetarako lerroak, galderen izena, atzeraelikadura eta kalifikazioen ehuneko-zenbatekoa (bataz bestekoa) ezartzeko aukera ere ematen du. Hona hemen hainbat adibide: @@ -20,10 +20,10 @@ Who's buried in Grant's tomb?{=no one =nobody} When was Ulysses S. Grant born?{#1822} -

                  "GIFT" formatuari buruzko informazio gehiago

                  +

                  "GIFT" formatuari buruzko informazio gehiago

                -

                Aiken

                +

                Aiken

                -

                Hutsunea bete

                - -

                AON

                -
                  -

                  +

                  AON

                  +
                    +

                    Hutsuneak bete bezalakoa da baina inportatu ondoren galderak launaka batzen dira egokia aukeratzeko. -

                    +

                    - Inportatzean, gainera, erantzun anitzeko galderak aleatorioki nahasten dira.

                    + Inportatzean, gainera, erantzun anitzeko galderak aleatorioki nahasten dira.

                    Izena galdetegien ezaugarrien garapenari bultzada eman zion entrepesa baten omenez eman zitzaion.

                    -
                  +
                -

                Blackboard

                - -

                Course Test Manager

                -
                  -

                  +

                  Course Test Manager

                  +
                    +

                    Formatu honek Course Test Manager galdera-banku batean gordetako galderak inporta ditzake. Microsoft Acces formatuko galdera-bankua eskuratzeko era asko dago, Moodle Windows edo Linux zerbitzari batean ari den kontuan hartuta: -

                    +

                    Windows-en beste edozein fitxategi bezala igo beharko dugu datu-basea, datuak inportatzeko.

                    @@ -88,19 +88,19 @@ ERANTZUNA: A

                    -

                    "CTM" formatuari buruzko informazioa gehiago

                    -
                  +

                  "CTM" formatuari buruzko informazioa gehiago

                  +
                -

                Norberarena

                - -

                +

                Formatu gehiago ari da garatzen, WebCT, IMS QTI eta Moodleren erabiltzaileek gaineratu nahi duten beste edozein barne.

                diff --git a/lang/eu/help/lesson/jumpto.html b/lang/eu/help/lesson/jumpto.html index 0fe63166f2c..8ccc432afa9 100644 --- a/lang/eu/help/lesson/jumpto.html +++ b/lang/eu/help/lesson/jumpto.html @@ -5,4 +5,5 @@

                Oharra: orrien ordena aldatzen bada Hurrengo orria orri-jauziak (erlatiboa) beste orri bat erakutsi ahal du. Orriaren izenburua duen erabateko esteka erabiltzen denean beti aukeratutako orria erakutsiko da, nahiz eta ordena aldatu. -

                \ No newline at end of file +

                +

                 

                diff --git a/lang/eu/help/lesson/maxpages.html b/lang/eu/help/lesson/maxpages.html index c8dd4ad1b8b..a20e4479c1a 100644 --- a/lang/eu/help/lesson/maxpages.html +++ b/lang/eu/help/lesson/maxpages.html @@ -1,3 +1,8 @@ + + + + +

                Erakutsi beharreko orri-kopurua (Txartelak)

                Balore hau Txartel erako irakasgaietan bakarrik (Flash Card) erabiltzen da. Berez ematen duen balorea zerokoa da eta horrek @@ -6,4 +11,6 @@ Balorea zero ez eta beste bat bada, orri-kopuru hori erakutsiko da. Orri/Txartel kopuru hori erakutsita irakasgaiaren amaiera etorriko da eta ikasleak lortutako kalifikazioa erakutsiko da.

                Emandako balorea irakasgaiaren orri-kopurua baino altuagoa bada, -orri guztiak erakutsiko dira.

                \ No newline at end of file +orri guztiak erakutsiko dira.

                + + diff --git a/lang/eu/help/lesson/minquestions.html b/lang/eu/help/lesson/minquestions.html index 5c87947ca17..cddf44f4810 100644 --- a/lang/eu/help/lesson/minquestions.html +++ b/lang/eu/help/lesson/minquestions.html @@ -1,3 +1,8 @@ + + + + +

                Irakasgai baten gutxieneko galdera-kopurua

                Irakasgai batek adar-taula bat edo gehiago badu, irakasleak parametro hau ezarri behar du. Balore honek kalifikazioa kalkulatzeko @@ -27,4 +32,6 @@ bazenio bezala kalkulatuko da.

          behar du.

          Parametro horrek adierazten dio ikasleari zenbat galderari erantzun dion eta zenbati erantzutea espero den. -

          \ No newline at end of file +

          + + diff --git a/lang/eu/help/lesson/mods.html b/lang/eu/help/lesson/mods.html index 64adf1d15ce..58823e91487 100644 --- a/lang/eu/help/lesson/mods.html +++ b/lang/eu/help/lesson/mods.html @@ -1,4 +1,10 @@ - Irakasgaia + + + + + + Irakasgaia

            Irakasgaiak edukiak ematen ditu era interesgarri eta malguan. Orri-segida bat da. Bakoitzaren bukaeran galdera bat eta  hainbat @@ -6,4 +12,6 @@ erantzun egon ohi dira. Ikasleak aukeratutakoaren arabera, hurrengo orrira igaroko da edo aurreko batera. Irakasgaian zehar era sinplean edo konplexuan nabigatu ahal izango da, aurkezten den materialaren egituraren arabera, neurri handi batean.

            -
          \ No newline at end of file + + + diff --git a/lang/eu/help/lesson/nextpageaction.html b/lang/eu/help/lesson/nextpageaction.html index 83d685db004..49f221b8ca4 100644 --- a/lang/eu/help/lesson/nextpageaction.html +++ b/lang/eu/help/lesson/nextpageaction.html @@ -1,20 +1,24 @@ + + + +

          Erantzun Egokia eman ondorengo ekintza

          Ekintza normala erantzunean zehaztu den orri-jauzia gertatzea da. Kasu gehienetan irakasgaiaren hurrengo orria erakutsiko da. Ikaslea irakasgaian zehar gidatuko da hasieratik bukaerarainoko bide logikoari jarraiki.

          -

          Hala ere, Irakasgaia modulua txartelez +

          Hala ere, Irakasgaia modulua txartelez (flash-cards) osatutako zeregina balitz bezala ere erabil daiteke. Ikasleari halako informazioa erakusten zaio (aukeran) eta galdera bat egiten zaio, ohikoena aleatorioki. Ez da ezarri hasiera eta bukaerarik,  orden jakin bati lotu gabe bata bestearen ondoan -erakusten diren fitxa-multzo +erakusten diren fitxa-multzo soil bat baino ez da.

          Aukera honekin txartelen jokaeraren oso antzeko bi aldagai erabil daitezke. "Ikusi gabeko orri batera joan" aukerak ez du inoiz  bi aldiz erakusten orri bera (nahiz eta ikasleak orri edo txartelarekin -lotutako galderari egoki ez +lotutako galderari egoki ez erantzun). Beste aukerak ("Erakutsi erantzun gabeko orri bat") aurretik agertu diren orriak ikusten uzten dio ikasleari baina lotutako galderari oker erantzun badio bakarrik.

          @@ -22,4 +26,5 @@ galderari oker erantzun badio bakarrik.

          irakasgaiaren orri/txartel guztiak erabili ala aleatorioki hartutako  azpimultzo bat bakarrik. "Erakutsi beharreko Orri (Txartel) kopurua" erabilita egiten da hau.

          - + + diff --git a/lang/eu/help/lesson/overview.html b/lang/eu/help/lesson/overview.html index f4589d1998c..f4f296bf0a9 100644 --- a/lang/eu/help/lesson/overview.html +++ b/lang/eu/help/lesson/overview.html @@ -1,35 +1,40 @@ + + + + +

          Ohar orokorrak

            -
          1. Irakasgaia orri multzo -batek osatzen du eta, aukeran, adar-taulek. +
          2. Irakasgaia orri multzo +batek osatzen du eta, aukeran, adar-taulek.
          3. -
          4. Orri bakoitzak eduki -motaren bat du eta, orokorrean, galdera +
          5. Orri bakoitzak eduki +motaren bat du eta, orokorrean, galdera batek ematen dio bukaera.
          6. -
          7. Orri bakoitzak orokorrean erantzun +
          8. Orri bakoitzak orokorrean erantzun multzo bat eskaintzen du.
          9. Aukera hori hartuz gero zabaltzen den testuaren zati bat izan dezake erantzun bakoitzak. Testu-zati horri emaitza esaten zaio.
          10. -
          11. Aukera bakoitzari lotuta jauzi + style="font-weight: bold;">emaitza esaten zaio.
          12. +
          13. Aukera bakoitzari lotuta jauzi bat dago. Jauzi hori erlatiboa -orri hau, hurrengo orria- edo erabatekoa -irakasgaiaren orri bat edo irakasgaiaren bukaera zehaztuz-.
          14. Berez, lehen erantzunak (irakaslearen ikuspuntutikoa) -irakasgaiaren hurrengo orrira +irakasgaiaren hurrengo orrira eramaten du. Gainontzeko erantzunek orri berera eramaten dute. Hau da, lehen erantzuna aukeratzen ez bada, ikaslea irakasgaiaren orri berera itzuliko da.
          15. -
          16. Hurrengo orria irakasgaiaren orden -logikoak ezartzen du. Orden hori irakaslearen irizpideek +
          17. Hurrengo orria irakasgaiaren orden +logikoak ezartzen du. Orden hori irakaslearen irizpideek zehazten dute. Orden hori aldatzeko irakasgaian zehar mugitu egin beharko dira orriak.
          18. -
          19. Irakasgaiak nabigazio-ordena +
          20. Irakasgaiak nabigazio-ordena ere badu. Hau da ikasleek orriak ikusteko ordena eta bakoitzaren erantzunetarako zehaztutako jauziek ezartzen dute eta orden logikoa ez beste bat izan daiteke. (Hala ere, jauziek berez dituzten baloreak -aldatzen ez badira, biak oso +aldatzen ez badira, biak oso lotuta egongo dira). Irakasleak aukeran du orden logikoa berraztertzea.
          21. Ikasleak ikusten dituenean, galderak beti nahastuta egongo dira. @@ -41,15 +46,15 @@ Adibidez, egia/gezurra motako galdera batek eman diezaioke bukaera orri bati eta beste batzuk erantzun egokia eta nahasteko hiru dituzten galderak izan ditzakete.
          22. Erantzunik gabeko orriak sor daitezke. Ikasleari -erantzun-multzoaren ordez Jarraitu +erantzun-multzoaren ordez Jarraitu esteka erakutsiko zaio.
          23. Irakasgaiak ebaluatzeko asmoz, erantzun egokiak orden logikoaren araberako hurrengo orrira eramaten dutenak -dira. Erantzun okerrak orri -berera edo orden logikoaren araberako aurreko + style="font-weight: bold;">egokiak orden logikoaren araberako hurrengo orrira eramaten dutenak +dira. Erantzun okerrak orri +berera edo orden logikoaren araberako aurreko orrira eramaten dutenak dira. Beraz, jauziak aldatzen ez badira, lehen erantzuna + style="font-style: italic;">ez badira, lehen erantzuna litzateke egokia eta gainontzekoak okerrak.
          24. Galdera batek erantzun egoki bat baino gehiago izan dezake. Adibidez: bi erantzunek eramaten badute hurrengo orrira, biak hartuko @@ -57,16 +62,16 @@ dira egokitzat. (Nahiz eta ikasleei xede-orri bera erakutsi, emaitzaren testua ezberdina izan daiteke erantzun bakoitzean.)
          25. Irakasleak erantzun egokiak azpimarratuta ikusiko ditu irakasgaian eta bakoitzaren Erantzun-etiketarekin.
          26. -
          27. Adar-taulak irakasgaiaren +
          28. Adar-taulak irakasgaiaren beste orri batzuetarako esteka-multzoak dituzten orriak dira, besterik -gabe. Gehienetan,  Eduki-taula +gabe. Gehienetan,  Eduki-taula izaera duen adar-taulak ematen dio hasiera irakasgaiari.
          29. Adar-taula bateko esteka bakoitzak bi osagai ditu: deskribapena eta xede-orriaren izenburua.
          30. -
          31. Adar-taula batek irakasgaia adar +
          32. Adar-taula batek irakasgaia adar (edo atal) multzo batean banatzen du. Adar bakoitzak hainbat orri izan ditzake (gai beraren ingurukoak izan ohi dira). Normalean, adar baten -bukaera Adar-Bukaera orri +bukaera Adar-Bukaera orri batekin adierazten da. Orri berezia da hau eta, berez, aurreko adarreko taulara eramango du ikaslea. Adar-bukaera bateko "atzera" aldatu egin ahal da, hala nahi izanez gero, orria editatuz.
          33. @@ -75,11 +80,12 @@ Adibidez, era erabilgarrian antola daiteke irakasgai bat puntu bereziak adar nagusietako azpiadarretan ezarrita.
          34. Garrantzizkoa da ikasleei irakasgaia bukatzeko modua eskaintzea. Hau egiteko adar nagusian "Irakasgaia bukatu" esteka ezar daiteke. -Ekintza honek Irakasgai-bukaera +Ekintza honek Irakasgai-bukaera orrira (balizkoa) eramango luke.. Beste aukera bat, irakasgaiaren azken adarra erabiltzea da (hemen, "azken" terminoak orden logikoa adierazten du) -irakasgaiaren bukaerarako joanda soilik. Hau da, irakasgaia ez da bukatzen Adar-bukaera orri +irakasgaiaren bukaerarako joanda soilik. Hau da, irakasgaia ez da bukatzen Adar-bukaera orri batekin.
          35. Irakasgai batek adar-taula bat edo gehiago baditu, arrazoizko balore batera ekarri behar da "Gutxieneko galdera-kopurua". Horrela, @@ -89,22 +95,24 @@ irakasgaiaren adar bakarrera joateko aukera izango du, galdera guztiei egoki erantzun eta irakasgaia utzi kalifikazio altuena lortuta.
          36. Gainera, adar-taula bat bistaratzen denean, ikasleak aukera du behin baino gehiagotan beratara jotzeko. Kalifikazioa, ordea, -erantzundako galdera bakar +erantzundako galdera bakar kopurua erabilita kalkulatzen da. (Benetan, kontrakoa gertatzen da: kalifikazioa baxuagoa izango da ikusitako orri-kopurua zatitzaile erabiltzen baita kalifikazioa kalkulatzeko errepikapenak erabiltzen direnean). Ikasleei irakasgaian duten aurrerapena argi azaldu nahian, zenbat galderari erantzun dioten egoki, zenbat orri ikusi duten eta orri bakoitzean unean unean duten kalifikazioa zehazten zaie.
          37. -
          38. Irakasgai-bukaerara +
          39. Irakasgai-bukaerara iritsiko da esplizituki haraino jauzi eginda edo irakasgaiaren azken orritik (orden logikoa) hurrengo orrira jauzi eginda. Ikaslea irakasgai-bukaerara iristen denean zorion-mezua jaso eta kalifikazioa erakutsiko zaio. Kalifikazioa erantzun egoki-kopurua zati ikusitako orri-kopurua bider irakasgaiari ezarritako kalifikazioa izango da.
          40. -
          41. Ikasleak ez badu +
          42. Ikasleak ez badu irakasgaia osorik burutzen, berriz bertaratzen denean aukeran izango du hasieratik edo emandako azken erantzun egokitik hasi.
          43. Berriz ekinnaukera duen irakasgai batean, ikasleak aukeran du irakasgaia errepikatzea emaitza altuena lortu arte.
          + + diff --git a/lang/eu/help/lesson/questionoption.html b/lang/eu/help/lesson/questionoption.html index 534723a9e14..9534935adb0 100644 --- a/lang/eu/help/lesson/questionoption.html +++ b/lang/eu/help/lesson/questionoption.html @@ -1,3 +1,8 @@ + + + + +

          Galdera-aukera

          Hainbat galdera motak egiaztatzeko laukian klik eginda aktibatzen den aukera dute. Galdera-motak eta aukeren esanahia beherako zehazten @@ -5,15 +10,15 @@ dira.

          1. -

            Aukera anitza "Aukera -anitza eta erantzun anitzak" izeneko Aukera anitzeko galderen +

            Aukera anitza "Aukera +anitza eta erantzun anitzak" izeneko Aukera anitzeko galderen aldaera da. Galderan aukera hau hartuz gero, erantzun-multzotik erantzun egoki guztiak aukeratu beharko ditu. Galderak esan ahal dio -ala ez ikasleari zenbat -erantzun egoki dauden. +ala ez ikasleari zenbat +erantzun egoki dauden. Adibidez, "Zein izan da EEBBetako presidente?", edo "Aukera itzazu ondorengo zerrendatik EEBBetako bi presidente.". Erantzun -egoki-kopurua, bat eta aukera +egoki-kopurua, bat eta aukera guztien artekoa izan daiteke. (Aukera eta erantzun anitzeko eta erantzun egoki bakarreko galdera bat eta Aukera Anitzeko galdera bat ez dira gauza bera, lehenengoak aukera ematen baitio ikasleari erantzun @@ -27,3 +32,5 @@ larriz edo xehez dagoen.

          2. Gainontzeko galdera-motetan ez du eragiten Galdera-aukerak.

          + + diff --git a/lang/eu/help/lesson/questiontypes.html b/lang/eu/help/lesson/questiontypes.html index 60a3560f206..638d7b336f2 100644 --- a/lang/eu/help/lesson/questiontypes.html +++ b/lang/eu/help/lesson/questiontypes.html @@ -1,3 +1,8 @@ + + + + +

          Galdera-motak

          Irakasgaia moduluak gaur egun onar ditzakeen galdera-motak hauek dira: @@ -17,18 +22,20 @@ erakutsiko zaio ikasleari.

          Aukera anitzeko galdera batean erantzun egoki bat baino gehiago izan daiteke. Erantzun egoki bakoitzak iruzkin ezberdina eman ahal dio ikasleari eta ikasgaiaren orri ezberdinetara jauzi egin (aurrera egin) -baina ezin dituzte kalifikazioak aldatu, (hau da, galdera batzuk ez dira beste batzuk baino egokiagoak , +baina ezin dituzte kalifikazioak aldatu, (hau da, galdera batzuk ez dira beste batzuk baino egokiagoak, kalifikazioari dagokionean behintzat.) Erantzun guztiak izan daitezke egokiak eta aukeratutakoaren arabera ikasgairen alde ezberdinetara eraman ikaslea.

          -

          Aukera anitzeko galderen aldaera bat "Aukera eta Erantzun anitzak" da. +

          Aukera anitzeko galderen aldaera bat "Aukera eta Erantzun anitzak" da. Galdera hauetan ikasleak emandako erantzun guztien artean erantzun egoki guztiak aukeratu beharko ditu. Galderak ikasleari esan ahal dio ala ez zenbat erantzun egoki dauden. Adibidez, "Ondorengoetatik zein izan zen EEBBetako presidente?"-k ez du esaten baina "Aukera itzazu ondorengo zerrendatik EEBBetako presidente izan ziren biak"-ek bai. -Erantzun egoki-kopurua bat eta aukera-kopuruaren arteko izan daiteke. +Erantzun egoki-kopurua bat eta aukera-kopuruaren arteko izan daiteke. (Erantzun egoki bakarra duen Aukera eta Erantzun anitzak galdera bat eta Aukera anitzeko galdera bat ezberdinak dira, lehenengoan ikasleak erantzun bat baino gehiago aukera dezakeelako eta bigarrenean, berriz, @@ -79,7 +86,7 @@ guztiak diren egokiak esaten zaio.

          Aukera anitzeko galderan aukerak aleatorioki agertzen dira eta horietan ez bezala, datuen lehen zerrenda ez da nahasten eta sartutako orden berean agertzen da. -Honek galdera "Ordenatuak" +Honek galdera "Ordenatuak" sortzeko aukera ematen du. Galdera honetan adibidez, "Jarri ondorengoa jaiotze-dataren arabera, gazteenetik hasita" 1., 2., 3., 4. eta Longfellow, @@ -87,13 +94,13 @@ Lawrence, Lowell, Larkin zerrendekin. Bigarren zerrenda nahastu egingo da galderan erabili aurretik.

        1. -

          Zenbakiduna Galdera +

          Zenbakiduna Galdera mota honen erantzuna zenbaki bat izango da. Era errezenean erantzun bakarra eskatzen du. Adibidez, "Zenbat da 2 gehi 2?" 4 erantzunarekin aurrerako jauzia eginez. Hala ere, hobe da zenbaki-rangoa zehaztea. Era horretan, galdera "Zenbat da 10 zati 3" -bada, erantzuna "Gutxienekoa:Gehienekoa" -eran eman beharko litzateke, bi +bada, erantzuna "Gutxienekoa:Gehienekoa" +eran eman beharko litzateke, bi balore bi puntuz banatuta, alegia (:). Horrela, 3.33:3.34 hartzen bada galderan onartutako rangotzat, 3.33, 3.333, 3.3333... erantzunak egokitzat @@ -118,3 +125,5 @@ ondoren egin beharko da. Hau da, erantzunak ordenatu egiten dira ondoren 3:4 (erantzun "okerra", baina ez erabat okerra).

        + + diff --git a/lang/eu/help/lesson/retake.html b/lang/eu/help/lesson/retake.html index a8ea11a24d3..18cefadfc76 100644 --- a/lang/eu/help/lesson/retake.html +++ b/lang/eu/help/lesson/retake.html @@ -1,3 +1,8 @@ + + + + +

        Ikasgaiari berriz ekiteko aukera ematea ikasleari

        Aukera honek adierazten du ikasleak behin baino gehiagotan ekin ahal dion ikasgaiari. Irakasleak erabaki dezake ikasleak sakon ezagutu behar @@ -6,16 +11,19 @@ beharko dio ikasgaiari berriz ekiteko. Bestalde, materiala azterketatzat erabiltzen bada ez lioke horretan utzi behar.

        Ikasleek ikasgaiari berriz ekiteko aukera dutenean, Kalifikazioak -orrian agertuko den kalifikazioa -kalifikazioen batez bestekoa -ala errepikapenetan lortuako emaitza onena +orrian agertuko den kalifikazioa +kalifikazioen batez bestekoa +ala errepikapenetan lortuako emaitza onena izan daiteke. Ondorengo parametroak zehaztuko du bi kalifikazio-aldaera horietatik zein erabiliko den.

        -

        Kontuan izan Galdera-analisiak beti +

        Kontuan izan Galdera-analisiak beti erabiltzen duela lehen saiakeren erantzuna eta ondorengo errepikapenak ez direla kontuan hartzen.

        -

        Berezko aukera Bai da, eta +

        Berezko aukera Bai da, eta horrek adierazten du ikasleek ikasgaiari berriz ekin ahal diotela. Ez -ohiko arrazoiengatik bakarrik ezarri beharko litzateke Ez aukera. +ohiko arrazoiengatik bakarrik ezarri beharko litzateke Ez aukera.

        + + diff --git a/lang/eu/help/lesson/useeditor.html b/lang/eu/help/lesson/useeditor.html index e09136c9bd6..ecf300716fd 100644 --- a/lang/eu/help/lesson/useeditor.html +++ b/lang/eu/help/lesson/useeditor.html @@ -1,14 +1,21 @@ -

        HTML editatzailearen erabilera

        + + + + + +

        HTML editatzailearen erabilera
        +

        Aukera honek HTML editatzailearen (editatzailea aurrerantzean) erabilerarako aukera ematen du orriak editatzeko testu-lauki arruntaren ordez. Editatzaileak testuaren formatu xumerako aukera ematen du eta ezaugarri "aurreratuak" gaineratzeko, estekak adibidez.

        -

        Editatzailea Editatzailea +

        Editatzailea Editatzailea erabili laukitxoan sakatuta aktibatzen da. Editatzailea editatu beharreko elementu bakoitzari lotzen zaio -banan-banan. Editatzailea, adibidez, 1. -erantzunaren elementurako aktibatuz gero elementu horretarako -bakarrik jartzen da indarrean eta gainontzeko erantzunetarako ez da indarrean jartzen.

        +banan-banan. Editatzailea, adibidez, 1. +erantzunaren elementurako aktibatuz gero elementu horretarako +bakarrik jartzen da indarrean eta gainontzeko erantzunetarako ez da indarrean jartzen.

        Editatzailea orri bateko hainbat elementurako erabili nahi izanez gero, lehenik eta behin editatzailea erabili nahi den elementu bakoitzeko laukietan sakatu beharko da (gurutzea izan beharko dute). @@ -25,8 +32,8 @@ anitzeko galderetan ez dago arazorik. Galdera erantzutean ikasleari ematen diogun erantzunean editatzailea erabiltzeak ez luke arazorik sortu beharko.

        Arazoren bat testu-elementuek sortutakoa dela uste badugu, ziurragoa -da editatzailea desaktibatzea (Editatzailea -erabili gurutzea kenduta). Cuando se vuelve a mostrar la +da editatzailea desaktibatzea (Editatzailea +erabili gurutzea kenduta). Cuando se vuelve a mostrar la página, el texto "sin formato" se puede ver en el cuadro de texto. El texto se puede editar según lo deseado. De hecho, alternar el tipo de editor de un elemento particular no debe cambiar el @@ -39,3 +46,5 @@ mismo editor.

        recursos dentro del navegador. Si los elementos no requieren el uso del editor es más rápido y menos conflictivo utilizar las cajas del texto estándar.

        + + diff --git a/lang/eu/help/mods.html b/lang/eu/help/mods.html index eaf31cb0f1a..2cebf704ff2 100644 --- a/lang/eu/help/mods.html +++ b/lang/eu/help/mods.html @@ -1,46 +1,46 @@ -

        Jarduera-moduluak

        +

        Jarduera-moduluak

        -

        Plataforma honek baditu hainbat jarduera-modulu.

        +

        Plataforma honek baditu hainbat jarduera-modulu.

        -

         Foroak

        -
          -

          Modulu hau oso garrantzitsua da, harreman eta eztabaida gehiena hemen +

           Foroak

          +
            +

            Modulu hau oso garrantzitsua da, harreman eta eztabaida gehiena hemen gertatzen da-eta. Foroak modu ezberdinetan egitura daitezke, eta kalifikazioak ere izan ditzakete. Mezuak formatu ezberdinetan ikus daitezke, eta fitxategiak ere erantsi daitezke. Foro batera harpidetutakoan, partaideek ePostaz jasoko dituzte automatikoki forora bidalitako mezuak. - Irakasleak ikasleak foro jakin batera harpidetzera behartu ahal ditu.

            -
          + Irakasleak ikasleak foro jakin batera harpidetzera behartu ahal ditu. +
        -

         Egunkariak

        -
          -

          Modulu hau gogoeta sustatzeko oso garrantzitsua da. Irakasleak hainbat gairen +

           Egunkariak

          +
            +

            Modulu hau gogoeta sustatzeko oso garrantzitsua da. Irakasleak hainbat gairen inguruan hausnarketa egitera bultzatzen ditu ikasleak. Ikasle bakoitzak bere erantzunak editatu eta alda ditzake denborak aurrera egin ahala. Erantzuna pribatua da eta irakasleak baino ezin du ikusi. Honek erantzuna eskain dezake -eta kalifikazioa jarri.

            -
          +eta kalifikazioa jarri.

          +
        -

         Baliabideak

        -
          -

          Baliabideak edukiak dira: irakasleak ikasleei eman nahi dien informazioa. Aldez aurretik prestatutako materialak izan daitezke eta ikastaroan zehar zerbitzarira +

           Baliabideak

          +
            +

            Baliabideak edukiak dira: irakasleak ikasleei eman nahi dien informazioa. Aldez aurretik prestatutako materialak izan daitezke eta ikastaroan zehar zerbitzarira igotakoak, Moodle-n  bertan editatutako orriak, edo ikastaroan agertuko -diren kanpoko web-orriak.

            -
          +diren kanpoko web-orriak.

          +
        -

         Zereginak

        -
          -

          Zereginen moduluak ahalbidetzen du irakasleak ikasleei  lanen bat +

           Zereginak

          +
            +

            Zereginen moduluak ahalbidetzen du irakasleak ikasleei  lanen bat agintzea: baliabide digitalak (edozein maotatakoak) prestatu eta  zerbitzarira igo. Ohiko zereginak saiakerak, monografiak, idazlanak, e.a. izaten -dira. .

            -
          +dira. .

          +
        -

         Galdera-sortak

        -
          -

          Modulu honen bitartez irakasleak test motako galdera-sortak prestatu eta jarri ahal izango +

           Galdera-sortak

          +
            +

            Modulu honen bitartez irakasleak test motako galdera-sortak prestatu eta jarri ahal izango ditu. Galderak aukera anitzekoak, egia/gezurra motakoak edo erantzun laburrekoak izaten dira. Hauek kategorietan ordenatuta gordetzen dira datu-basean , eta berriz erabil daitezke ikastaroan bertan edo @@ -48,22 +48,22 @@ erabil daitezke ikastaroan bertan edo izanez gero. Saiakera bakoitzari automatikoki jartzen zaio kalifikazioa, eta irakasleak aukeran du behin amaituta erantzun zuzenak erakustea edo erantzunen gaineko oharrak ematea. - Modulu honek kalifikazioak ezartzeko aukera du.

            -
          + Modulu honek kalifikazioak ezartzeko aukera du.

          +
        -

         Kontsultak

        -
          -

          Kontsulta oso jarduera erraza da. Irakasleak galdera bat egiten du eta +

           Kontsultak

          +
            +

            Kontsulta oso jarduera erraza da. Irakasleak galdera bat egiten du eta hainbat erantzun zehazten ditu, ikasleek horien artean aukera egin dezaten. Oso baliagarria da gairen bati buruz taldearen iritzia berehala jakiteko, taldeak -erabakiren bat hartzea baimentzeko, edo ikerketaren bat egiteko.

            -
          +erabakiren bat hartzea baimentzeko, edo ikerketaren bat egiteko. +
        -

         Inkestak

        -
          -

          Inkesta-moduluak, urruneko ikas-prozesua suspertzeko baliagarriak diren +

           Inkestak

          +
            +

            Inkesta-moduluak, urruneko ikas-prozesua suspertzeko baliagarriak diren tresnak eskaintzen ditu. Irakasleak bere ikasleengandik informazioa jasotzeko erabil dezake, eta horrela bere -hezkuntza-jarduerari buruz hausnartu.

            -
          +hezkuntza-jarduerari buruz hausnartu.

          +
        diff --git a/lang/eu/help/picture.html b/lang/eu/help/picture.html index 93e0d9e2316..3c6eebeba92 100644 --- a/lang/eu/help/picture.html +++ b/lang/eu/help/picture.html @@ -1,18 +1,31 @@ -

        Irudia igo

        +

        Cómo cargar una imagen

        -

        Irudi bat igo dezakezu zure ordenagailutik zerbitzari honetara, eta irudi hau "zure irudia" izango da hainbat lekutan.

        -

        Horregatik, erabili dezakezun egokiena zure aurpegiaren argazki bat da, baina nahi duzun irudia erabili dezakezu.

        -

        Irudia JPG edo PNG formatuan egon behar du (hau da, fitxategiaren izena .jpg edo .png atzizkiekin bukatu behar da).

        -

        Irudi bat hurrengo metodoak erabiliz lortu dezakezu:

        +

        Ud. puede cargar una imagen de su ordenador/computadora al servidor, y esta imagen se +utilizará en varios lugares para identificarlo. +

        Por este motivo, las mejores imágenes son las de estilo identificación, aunque +puede utilizar la imagen que desee. +

        La imagen debe ser formato JPG o PNG (lo que significa que el nombre de la imagen +terminará en .jpg o en .png) y debe tener un tamaño de 100 x 100 píxeles o más. +

        Puede colocar una imagen utilizando uno de estos cuatro métodos: -

          -
        1. Kamara digital bat erabiliz, argazkiak dagoeneko formatu egokian egotea litekeena da.
        2. -
        3. Eskaner bat erabili dezakezu irudia digitalizatzeko. Gogoratu JPG edo PNG formatuan gorde behar dela.
        4. -
        5. Artistikoagoa bazara, marrazki bat egin dezakezu programa grafiko bat erabiliz.
        6. -
        7. Edo bestela, Web guneren batetik "lapurtu" dezakezu irudiren bat. http://images.google.com irudiak bilatzeko leku egoki bat da. Gustoko duzun bat aurkitzerakoan, eskumako botoiarekin egiozu klik eta irudia gordetzea aukeratu agertuko den menuan (ordenagailu bakoitzean aukera honek izen ezberdinak izan ditzazke).
        8. -
        +
          +
        1. Utilizando una cámara digital, es muy sencillo, dado que sus fotos seguramente +ya estarán en el formato correcto en su ordenador/computadora. +
        2. Utilizando un "scanner" para digitalizar una fotografía impresa. Asegúrese de +guardar la imagen en formato JPG o PNG. +
        3. Si Ud. es una artista, puede dibujar una imagen utilizando algún programa de diseño. +
        4. También puede conseguir una imagen que lo identifique en la red. +http://images.google.com +es un excelente lugar para buscar imágenes. Una vez encontrada, coloque el cursor +sobre la misma y pulsando el botón derecho del ratón elija la opción "Guardar imagen como". +(Diferentes ordenadores/computadoras pueden variar en este procedimiento) +
        -

        Irudi bat igotzeko, "Arakatu" botoia zapaldu edizio orrian, eta zure disko gogorrean irudia aukeratu.

        -

        OHARRA: Irudiaren tamaina gehienezkoa ez duela gainditzen egiaztatu ezazu, bestela irudia ez da igoko.

        -

        Gero, "Nire Profila eguneratu" zapaldu behean - irudia 100x100 pixeleko lauki batean sartuko da.

        -

        Zure soslaia orrira bueltatzen zarenean, irudia ez bada aldatu zure nabigatzailearen "Orria berkargatu" botoia zapaldu.

        +

        Para cargar la imagen, haga clic en el botón "Examinar" en esta página y seleccione +la imagen en su disco duro. +

        IMPORTANTE: Asegúrese de no colocar una imagen que exceda el tamaño +máximo permitido, en bites, pues no se cargará. +

        Luego haga clic en "Actualizar información personal", abajo del todo, si la imagen +es mayor a 100 x 100 píxeles se cortará. +

        Cuando acaba de cambiar su imagen es posible que no vea el cambio, si eso sucede +actualice la página (oprimiendo F5 o el botón actualizar). \ No newline at end of file diff --git a/lang/eu/help/questionnaire/qmanage.html b/lang/eu/help/questionnaire/qmanage.html index 4d62a8663e4..3a7e8a8ac7d 100644 --- a/lang/eu/help/questionnaire/qmanage.html +++ b/lang/eu/help/questionnaire/qmanage.html @@ -1,5 +1,5 @@ -

        Gestionar encuestas usando phpESP

        -

        +

        Gestionar encuestas usando phpESP

        +

        El módulo Cuestionario utiliza phpESP para crear y gestionar encuestas. Utilice este enlace para ello. -

        +

        diff --git a/lang/eu/help/questionnaire/qtype.html b/lang/eu/help/questionnaire/qtype.html index 6e16d09f27f..6c89ffc0a3d 100644 --- a/lang/eu/help/questionnaire/qtype.html +++ b/lang/eu/help/questionnaire/qtype.html @@ -1,6 +1,6 @@ -

        Tipo de respuesta

        -

        +

        Tipo de respuesta

        +

        Si desea que los usuarios contesten la encuesta sólo una vez, seleccione "responder una vez".
        Si desea que puedan hacerlo en varias ocasiones, seleccione "responder varias veces". -

        +

        diff --git a/lang/eu/help/questionnaire/questionnaireid.html b/lang/eu/help/questionnaire/questionnaireid.html index 73fefa96099..bd976a01108 100644 --- a/lang/eu/help/questionnaire/questionnaireid.html +++ b/lang/eu/help/questionnaire/questionnaireid.html @@ -1,6 +1,6 @@ -

        Elegir una encuesta

        -

        +

        Elegir una encuesta

        +

        Seleccione una encuesta de la lista de encuestas activas disponibles en phpESP. Si la encuesta no aparece en la lista, probablemente no esté activa. -

        +

        diff --git a/lang/eu/help/questionnaire/respondenttype.html b/lang/eu/help/questionnaire/respondenttype.html index cccac1edb63..7f8aedddf5c 100644 --- a/lang/eu/help/questionnaire/respondenttype.html +++ b/lang/eu/help/questionnaire/respondenttype.html @@ -1,6 +1,6 @@ -

        Tipo de respuesta

        -

        +

        Tipo de respuesta

        +

        Usted puede mostrar los nombres completos de los usuarios con cada respuesta seleccionando "nombre completo".
        O bien puede ocultar la identidad de los usuarios seleccionando la opción "anónimo". -

        +

        diff --git a/lang/eu/help/questions.html b/lang/eu/help/questions.html index ec174760d87..c2207a17557 100644 --- a/lang/eu/help/questions.html +++ b/lang/eu/help/questions.html @@ -1,84 +1,87 @@ -

        Galderak

        +

        Preguntas

        -

        Gai baten inguruan jendeari pentsarazteko horren inguruko -galdera bat egitea modu on bat da. -Galdera on batek informazioa ordenatzera, ditugun -ideiak aztertetzera eta ideia berriak sortzera laguntzen gaitu.

        +

        Una buena manera de ayudar a alguien a que reflexione sobre un tema +es hacerle una pregunta al respecto. Una buena pregunta nos puede +ayudar a juntar nuestra información, evaluar nuestras ideas y crear +nuevas. +

        -

        Ikastera laguntzera begira galderak egiteari Galdeketa Sokratikoa deitzen zaio, -Sokrates filosofoaren omenez.

        +

        Las preguntas realizadas con la intención de ayudar a otros a +aprender se conocen como socráticas. +

        -

        Galdera Sokratikoak beste pertsona oso ondo entzutera behartzen zaituzte -zure galdera modu lagungarri, eraikitzaile eta -konfrontaziorik gabean epaitu eta sortzeko.

        - -

        Hona galdera adibide batzuk:

        +

        Las preguntas socrática requieren escuchar muy cuidadosamente a la otra persona, +lo que le ayudará a juzgar y plantear la pregunta de modo constructivo, de ayuda y +de no enfrentamiento.

        +

        He aquí algunos ejemplos de estas preguntas:

        -

        Argitzeko galderak

        +

        Preguntas clarificadoras

        +
          -
        • ______esaten duzunean, zer esan nahi duzu?
        • -
        • Zein da zure argumentaren muina?
        • -
        • Zein da _____ eta _____arteko erlazioa?
        • -
        • Beste modu batean azaldu dezakezu?
        • -
        • Ea ulertu zaitudan; _____ ala _____ esan nahi duzu?
        • -
        • Zein da honen eta gure arazo/eztabaida/gaiaren arteko lotura?
        • -
        • Maite, zure hitzetan nola laburbilduko zenuke Andonik? ... Andoni, hau al da zuk esan nahi zenuena?
        • -
        • Adibide bat eman diezadazku?
        • -
        • _____ horren adibide egoki bat al da?
        • +
        • ¿Qué quieres decir cuando dices ______?
        • +
        • ¿Cuál es el punto central?
        • +
        • ¿Qué tiene _____ que ver con _____?
        • +
        • ¿Puedes decírmelo de otra manera?
        • +
        • Déjame ver si entiendo: ¿quieres decir _____ o _____?
        • +
        • ¿Cómo se relaciona esto con nuestro tema?
        • +
        • María, ¿puedes resumir lo que dijo Ricardo? ... Ricardo, ¿es lo que quisiste decir?
        • +
        • ¿Puedes darme un ejemplo?
        • +
        • ¿ _____ podría ser un ejemplo?
        -

        Aldez aurretik onartutakoak epaitzeko

        +

        Preguntas que prueban asunciones o suposiciones

          -
        • Hau aurrez onartzen duzu?
        • -
        • Zer onartzen du Olaiak aurretik?
        • -
        • Zer onartu dezakegu aurrez horren ordez?
        • -
        • _____aldez aurretik onartzen duzula dirudi. Ondo ulertu al dut?
        • -
        • Zure argumentazio osoaren oinarria _____ da. Zergatik _____ eta ez _____?
        • -
        • _____aldez aurretik onartzen duzula dirudi. Zergatik ematen duzu hori ontzat?
        • -
        • Kasu guztietan horrela al da? Zergatik uste duzu aldez aurretik onartutakoa hemen ematen dela?
        • -
        • Zergatik onartu beharko luke norbaitek hori ontzat?
        • +
        • ¿Qué estás suponiendo?
        • +
        • ¿Qué está suponiendo Luisa?
        • +
        • ¿Qué podríamos suponer en lugar de eso?
        • +
        • Me da la impresión de que das por hecho _____. ¿Te estoy entendiendo correctamente?
        • +
        • Todo tu razonamiento se basa en la idea de que _____. ¿Por qué lo basas en _____ en lugar de en _____?
        • +
        • Pareces estar dando por sentado que _____. ¿Cómo justificas el dar eso por garantizado?
        • +
        • ¿Eso es siempre así? ¿Por qué piensas que esa suposición es válida en este caso?/li> +
        • ¿Por qué alguien habría de suponer eso?
        -

        Arrazoiak eta frogak epaitzeko galderak

        +

        Preguntas que prueban motivos y evidencias

          -
        • Zure arrazoiak argitu ahal diezaizkiguzu?
        • -
        • nola aplikatzen da hori kasu honetan?
        • -
        • Froga hori kolokan jartzeko arrazoirik al dago?
        • -
        • Nork du egia zer den jakiteko aukera?
        • -
        • Zer esango zeioke ____ esaten duen norbaiti?
        • -
        • Beste inork ikuspuntu horren aldeko frogak eman al ditzazke?
        • -
        • Zein arrazonamendu jarraituz heldu zara ondorio horretara?
        • -
        • Nola jakin genezake hori egia dela?
        • +
        • ¿Podrías explicarnos tus motivos?
        • +
        • ¿Cómo se aplica eso a este caso?
        • +
        • ¿Hay alguna razón para dudar de esa evidencia?
        • +
        • ¿Quién está en la posición de saber si eso es verdad?
        • +
        • ¿Qué le dirías a alguien que sostuviera que ____?
        • +
        • ¿Puede alguien más aportar alguna evidencia que apoye ese punto de vista?
        • +
        • ¿Qué razonamiento te ha conducido a esa conclusión?
        • +
        • ¿Cómo podríamos cerciorarnos de que eso es cierto?
        -

        Ikuspuntuen inguruko galderak

        +

        Preguntas acerca de distintas perspectivas o puntos de vista

          -
        • Horrekin zer adierazten duzu inplizitoki?
        • -
        • _____esaten duzunean, _____ inplizitoki adierazi nahi duzu?
        • -
        • Baina, hori gertatuko balitz, zer ekarriko luke ondorio gisa? Zergatik?
        • -
        • Ze eragin izango luke horrek?
        • -
        • Halabeharrez gertatuko litzateke, litekeena da, edo gertatu liteke?
        • -
        • Zein da alternatiba?
        • -
        • _____ eta _____ betetzen badira, ze beste izan daiteke egia ere?
        • -
        • ____ etikoa dela badiogu, zer deritzogu _____i buruz?
        • +
        • ¿Qué estás insinuando con eso?
        • +
        • Cuando dices _____, ¿estás insinuando _____?
        • +
        • Pero, si sucedió eso, ¿qué más podría suceder como resultado? ¿Por qué?
        • +
        • ¿A qué conduciría eso?
        • +
        • Eso ¿debería suceder necesariamente o sólo sería posible o probable que sucediera?
        • +
        • ¿Hay alguna alternativa?
        • +
        • Si _____ y _____ son así, enconces ¿qué otra cosa debería también ser cierta?
        • +
        • Si decimos que ____ es ético, ¿qué pasaría con _____?
        -

        Inplizitoki adierazitakoak eta ondorioak epaitzeko galderak

        +

        Preguntas que prueban implicaciones y consecuencias

          -
        • Nola jakin dezakegu?
        • -
        • Galdera honek zer adierazten du inplizitoki?
        • -
        • _____ k galdera hau modu ezberdin batean egingo al luke?
        • -
        • Nola hobetu dezakegu galdera hau?
        • -
        • Galdera argia al da? Ulertzen al dugu?
        • -
        • Galdera hau erantzuteko erreza edo zaila da? Zergatik?
        • -
        • Galdera hau dela guztiok onartzen al dugu?
        • -
        • Galdera honi erantzuteko, zeintzu galdera erantzun behar ditugu aurretik?
        • -
        • Nola adieraziko luke _____ k gai hau?
        • -
        • Zergatik da gai hau garrantzitsua?
        • -
        • hau al da galderarik garrantzitsuena, edo azpian galdera gehiago al daude?
        • -
        • Hau eta ________ nola lotu daitezkeen ikusten al duzu?
        • +
        • ¿Cómo podemos descubrirlo?
        • +
        • ¿Qué es lo que implica o da por supuesto esta pregunta?
        • +
        • ¿Podría _____ formular esta pregunta de otra forma?
        • +
        • ¿Cómo podría alguien resolver o dirimir esta pregunta?
        • +
        • ¿Podemos descomponer totalmente esta pregunta?
        • +
        • ¿Es esta pregunta clara? ¿La entendemos?
        • +
        • ¿Resulta esta pregunta fácil o difícil de responder? ¿Por qué?
        • +
        • ¿Estamos todos de acuerdo en que ésta es la pregunta?
        • +
        • Para responder esta pregunta, ¿qué otras deberíamos responder antes?
        • +
        • ¿Cómo formularía _____ la cuestión?
        • +
        • ¿Por qué razón este asunto es importante?
        • +
        • ¿Es ésta la pregunta más importante, o hay alguna otra pregunta subyacente?
        • +
        • ¿Puedes ver cómo esto está relacionado con ________?
        -
        -Galderak liburu honetatik hartutakoak dira: Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA. +
        +Preguntas adaptadas a partir de Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA. -

        -

        +

        Más información sobre escritura

        +

        Más información sobre lectura

        \ No newline at end of file diff --git a/lang/eu/help/quiz/attempts.html b/lang/eu/help/quiz/attempts.html index 7c3cf54311e..fec28bb2615 100644 --- a/lang/eu/help/quiz/attempts.html +++ b/lang/eu/help/quiz/attempts.html @@ -1,5 +1,6 @@ -

        Galdetegiari erantzuteko saiakerak

        +

        Galdera-sortari erantzuteko saiakerak

        -

        Ikasleek galdetegiari behin baino gehiagotan erantzuteko aukera izan -dezakete.

        Honela galdetegia jarduera edukatiboa bihur daiteke, ebaluazio hutsa izan +

        Ikasleek galdera-sortari behin baino gehiagotan erantzuteko aukera izan +dezakete. +

        Honela galdera-sorta jarduera edukatiboa bihur daiteke, ebaluazio hutsa izan gabe.

        diff --git a/lang/eu/help/quiz/categories.html b/lang/eu/help/quiz/categories.html index 44f194421a3..69ec350b447 100644 --- a/lang/eu/help/quiz/categories.html +++ b/lang/eu/help/quiz/categories.html @@ -1,11 +1,11 @@ -

        Galdera-kategoriak

        +

        Galdera-kategoriak

        Zure galderak zerrenda luze bakar batean izan beharrean, hauek gordetzeko -kategoriak sor ditzakezu.

        -

        Kategoria bakoitzak izena eta azalpen laburra ditu.

        +kategoriak sor ditzakezu. +

        Kategoria bakoitzak izena eta azalpen laburra ditu.

        Kategoria bakoitza (eta bertako galdera guztiak) zerbitzari honetako ikastaro guztietan eskuragarri egongo dira, beste ikastaroek beren galdera-sortetan -erabili ahal izateko.

        +erabili ahal izateko.

        Kategoriak nahi duzuean sortu eta ezabatu ditzakezu. Baina galderak dituen kategoria ezabatu nahi baduzu beste kategoria bat eskatuko zaizu, ezabatutako kategoriak zituen galderak gordetzeko.

        diff --git a/lang/eu/help/quiz/correctanswers.html b/lang/eu/help/quiz/correctanswers.html index 6405794a60e..694d5be98d2 100644 --- a/lang/eu/help/quiz/correctanswers.html +++ b/lang/eu/help/quiz/correctanswers.html @@ -1,5 +1,5 @@ -

        Erantzun zuzenak erakutsi

        +

        Erantzun zuzenak erakutsi

        -

        Aukera hau aktibatzen baduzu, galdetegia amaitu eta gero ikasleak galdera +

        Aukera hau aktibatzen baduzu, galdera-sorta amaitu eta gero ikasleak galdera bakoitzaren erantzun zuzena ikusteko modua izango du (kolore dirdiratsuan nabarmendua).

        diff --git a/lang/eu/help/quiz/createmultiple.html b/lang/eu/help/quiz/createmultiple.html index 5b5dfc42318..dc7b7e86b66 100644 --- a/lang/eu/help/quiz/createmultiple.html +++ b/lang/eu/help/quiz/createmultiple.html @@ -1,6 +1,6 @@ -

        Hainbat galdera sortu

        +

        Hainbat galdera sortu

        -

        Orri honek ahalbidetzen du aldi berean galdera bat baino gehiago sortzea.

        -

        Gaur egun ausazko galdera batzuk baino ez dizu sortzen utziko, eta (nahi -izanez gero) galdetegian gehitzeko modua izango duzu.

        -

        Orri hau aukera gehiago izango duen tutoriala izateraino aldatuko da.

        +

        Orri honek ahalbidetzen du aldi berean galdera bat baino gehiago sortzea.

        +

        Gaur egun ausazko galdera batzuk baino ez dizu sortzen utziko, eta (nahi +izanez gero) galdera-sortan gehitzeko modua izango duzu.

        +

        Orri hau aukera gehiago izango duen tutoriala izateraino aldatuko da.

        diff --git a/lang/eu/help/quiz/description.html b/lang/eu/help/quiz/description.html index 649c5ed8eef..3b58f1f972a 100644 --- a/lang/eu/help/quiz/description.html +++ b/lang/eu/help/quiz/description.html @@ -2,7 +2,7 @@

        Formatu hau ez da berez galdera.

        -

        Testua erakusten du baina erantzunik eskatu gabe.

        +

        testua erakusten du baina erantzunik eskatu gabe.

        Erabilgarria da testu bat aurkezteko eta gero galderak.

        diff --git a/lang/eu/help/quiz/discrimination.html b/lang/eu/help/quiz/discrimination.html index 6fe3ab9c970..bd1358cd290 100644 --- a/lang/eu/help/quiz/discrimination.html +++ b/lang/eu/help/quiz/discrimination.html @@ -1,25 +1,25 @@ -

        Diskriminazio-indizea

        +

        Diskriminazio-indizea

        -

        Metodo honek galdera-sortako puntu bakoitza

        +

        Metodo honek galdera-sortako puntu bakoitza

        -

        ste método provee un indicador aproximado del desempeño en cada punto del +

        ste método provee un indicador aproximado del desempeño en cada punto del cuestionario. Se calcula contando el número de estudiantes que calificaron en los tres primeros lugares en cada pregunta y se la divide por el número de estudiantes que quedaron en los últimos tres puestos.

        -

        Por ejemplo: de 30 estudiantes que hacen el cuestionario podría haber 10 +

        Por ejemplo: de 30 estudiantes que hacen el cuestionario podría haber 10 en los tres primeros lugares y otros 10 en los tres últimos. Si en el punto n°1 del cuestionario hubo 9 de los estudiantes que se ubicaron en los 3 primeros lugares que respondieron correctamente, pero solamente 3 de los que quedaron en los (3) últimos lugares que respondieron correctamente, el índice de discriminación será de 9/3 = 3,0. Los números en paréntesis son: (respuestas correctas de los -tres primeros lugares/respuestas correctas de los últimos tres lugares).

        +tres primeros lugares/respuestas correctas de los últimos tres lugares).

        -

        Si el índice se ubicara por debajo de 1,0 significaría que hubo más alumnos +

        Si el índice se ubicara por debajo de 1,0 significaría que hubo más alumnos 'flojos' que 'capaces' que respondieron correctamente a esa pregunta. Esa pregunta, entonces, debería ser descartada por falta de consistencia, y de hecho reduce la -precisión del resultado general del cuestionario.

        +precisión del resultado general del cuestionario.

        -

        Si no hubiera alumnos flojos que respondieran correctamente ese punto, el +

        Si no hubiera alumnos flojos que respondieran correctamente ese punto, el denominador sería 0, lo cual daría un resultado infinito. Por esto, el programa -reemplaza esos resultados por '10'.

        +reemplaza esos resultados por '10'.

        diff --git a/lang/eu/help/quiz/eachattemptbuildsonthelast.html b/lang/eu/help/quiz/eachattemptbuildsonthelast.html index 78b17614da9..d7d674e0451 100644 --- a/lang/eu/help/quiz/eachattemptbuildsonthelast.html +++ b/lang/eu/help/quiz/eachattemptbuildsonthelast.html @@ -1,6 +1,6 @@ -

        Saiakera bakoitza aurrekoaren gainean eraiki

        +

        Saiakera bakoitza aurrekoaren gainean eraiki

        -

        Saiakera bat baino gehiago baimentzen denean, aukera honetan <Bai> -hautatuz, saiakera berria egiterako aurreko erantzuna agertuko da.

        Saiakera -bakoitzean galderak erantzunik gabe erakutsi nahi badituzu, <Ez> -aukeratu behar duzu.

        \ No newline at end of file +

        Saiakera bat baino gehiago baimentzen denean, aukera honetan <Bai> +hautatuz, saiakera berria egiterako aurreko erantzuna agertuko da.

        Saiakera +bakoitzean galderak erantzunik gabe erakutsi nahi badituzu, <Ez> +aukeratu behar duzu. \ No newline at end of file diff --git a/lang/eu/help/quiz/feedback.html b/lang/eu/help/quiz/feedback.html index 7b4063dd545..ee093989c35 100644 --- a/lang/eu/help/quiz/feedback.html +++ b/lang/eu/help/quiz/feedback.html @@ -1,3 +1,3 @@ -

        Kalifikazioa

        +

        Kalifikazioa

        -

        Aukera aktibatzen baduzu, ikasleek kalifikazio osoa jasoko dute.

        +

        Aukera aktibatzen baduzu, ikasleek kalifikazio osoa jasoko dute.

        diff --git a/lang/eu/help/quiz/formataiken.html b/lang/eu/help/quiz/formataiken.html index 41d902bb467..2a6e2e52a1e 100644 --- a/lang/eu/help/quiz/formataiken.html +++ b/lang/eu/help/quiz/formataiken.html @@ -1,4 +1,4 @@ -

        "Aiken" formatuko artxibategiak inportatu

        +

        "Aiken" formatuko artxibategiak inportatu

        "Aiken" formatua aukera anitzeko galderak sortzeko oso modu sinplea da, formatu argi eta ulerterraza erabilita. Hona hemen adibide bat:

        @@ -10,7 +10,7 @@ C. Hori izango da, nonbait! D. Honek behar du izan! ANSWER: D -Zein LMS-k ditu galdetegiak inportatzeko formatu gehien? +Zein LMS-k ditu galdera-sortak inportatzeko formatu gehien? A) Moodle-k B) ATutor-ek C) Claroline-k @@ -20,8 +20,8 @@ F) Ilias-ek ANSWER: A -

        ADI!:

        -

        Galdera osoak lerro berean egon behar du.

        +

        ADI!:

        +

        Galdera osoak lerro berean egon behar du.

        Erantzun posible bakoitzak beste lerro batean hasi behar du, hasieran hizkia eta puntua duela  '.' , edota parentesia  ')', eta ondoren espazio bat.

        diff --git a/lang/eu/help/quiz/formatblackboard.html b/lang/eu/help/quiz/formatblackboard.html index 79e2f03f621..052087f57c6 100644 --- a/lang/eu/help/quiz/formatblackboard.html +++ b/lang/eu/help/quiz/formatblackboard.html @@ -1,4 +1,4 @@ -

        Blackboard (Blackboard Quiz Format) formatuko fitxategien +

        Blackboard (Blackboard Quiz Format) formatuko fitxategien inportazioa

        Amaitu gabeko dokumentazioa.

        diff --git a/lang/eu/help/quiz/formatctm.html b/lang/eu/help/quiz/formatctm.html index d75b639a8d7..7608c7473ab 100644 --- a/lang/eu/help/quiz/formatctm.html +++ b/lang/eu/help/quiz/formatctm.html @@ -1,4 +1,4 @@ -

        Importando archivos del "Course Test Manager"

        +

        Importando archivos del "Course Test Manager"

        Course Test Manager (Administrador de Test de Cursos) es un paquete de software "End of Lifetime" de Tecnología de cursos (Course Technology). @@ -38,15 +38,15 @@ del libro o secciones del curso.

        El proceso para Moodle basado en Linux incluye un componente de software -de terceros llamado ODBC +de terceros llamado ODBC Socket Server. Para importar bases de datos CTM en Linux, primero debe bajar e instalar este pequeño programa de red en la PC con Windows que hospeda las bases de datos CTM. No siga las instrucciones mencionadas en la instalación del
        ODBC Socket Server. ¡Son más complicadas de lo necesario para este trabajo! En vez -de eso, siga los pasos a continuación:

        +de eso, siga los pasos a continuación:

        1. Vaya a la PC con Windows y descomprima el archivo de instalación que bajó de -este sitio en la PC.
        2. +este sitio en la PC.
        3. Copie el archivo binario ODBCSocketServer.exe a una ubicación permanente, tal como c:\windows\ o c:\WINNT\ (también podría ser su carpeta de archivos de programa).
        4. @@ -58,7 +58,7 @@ de comandos.
        5. Abra el administrador de Servicios en: Inicio->Configuración->Panel de Control->Herramientas Administrativas->Servicios, o haciendo clic con el botón derecho del mouse en Mi PC, eligiendo Administrar, luego -eligiendo Servicios y Aplicaciones->Servicios del Panel derecho. +eligiendo Servicios y Aplicaciones->Servicios del Panel derecho. También puede acceder al Administrador de Servicios escribiendo services.msc en la caja de diálogo Inicio->Ejecutar...
        6. @@ -78,8 +78,8 @@ as esta información para el proceso de importación.
        7. Ahora ya puede importar los bancos de evaluaciones al Moodle. Cree su cuestionario -y vaya al proceso "Importar preguntas desde archivo". AQUÍ ES DONDE LAS COSAS -SON DIFERENTES PARA LINUX - ESPECIFIQUE UN ARCHIVO IMAGINARIO EN EL CAMPO +y vaya al proceso "Importar preguntas desde archivo". AQUÍ ES DONDE LAS COSAS +SON DIFERENTES PARA LINUX - ESPECIFIQUE UN ARCHIVO IMAGINARIO EN EL CAMPO SUBIR PARA EMPEZAR EL PROCESO DE IMPORTACIÓN. ESTE ARCHIVO NO SE PROCESARÁ, ES SÓLO UN NOMBRE PARA EL FORMULARIO DE IMPORTACIÓN. TENDRÁ UN LUGAR PARA ESPECIFICAR LA INFORMACIÓN DEL SERVIDOR WINDOWS MÁS ADELANTE. A continuación, aparecerá una pantalla @@ -94,7 +94,7 @@ del libro o las secciones de un curso. SI LLEGA A ESTE PUNTO SIN MENSAJES DE ERROR, SIGNIFICA QUE HA CONFIGURADO EL SOCKET SERVER CORRECTAMENTE, Y ¡ESTÁ LISTO PARA IMPORTAR LAS PREGUNTAS AL MOODLE!
        -

        Si recibió mensajes de error durante este proceso, encontrará esta información +

        Si recibió mensajes de error durante este proceso, encontrará esta información técnica muy útil: El ODBC Socket server utiliza el puerto 9628 para abrir el socket, negociar y ejecutar las consultas XML, y a partir de allí construir una tabla con los diff --git a/lang/eu/help/quiz/formatcustom.html b/lang/eu/help/quiz/formatcustom.html index d2504fbd65c..9c3b684d38e 100644 --- a/lang/eu/help/quiz/formatcustom.html +++ b/lang/eu/help/quiz/formatcustom.html @@ -1,3 +1,3 @@ -

        Formatu pertsonalizatuko fitxategiak inportatu

        +

        Formatu pertsonalizatuko fitxategiak inportatu

        Amaitu gabeko dokumentazioa.

        diff --git a/lang/eu/help/quiz/formatgift.html b/lang/eu/help/quiz/formatgift.html index 278e30681fd..c811281337c 100644 --- a/lang/eu/help/quiz/formatgift.html +++ b/lang/eu/help/quiz/formatgift.html @@ -1,4 +1,4 @@ -

        "GIFT" formatuko artxibategiak inportatu

        +

        "GIFT" formatuko artxibategiak inportatu

        GIFT formatua eskura dagoen osatuena da testu-artxibategi batetik sorta baten galderak inportatzeko.  Aukera asko ditu, hala nola: egia/gezurra, erantzun @@ -111,7 +111,7 @@ La secci en el archivo de texto. Estas líneas pueden ser aprovechadas para proveer de encabezados o información adicional sobre las preguntas. Todas las líneas que comienzan con una doble barra inclinada("//", no cuentan los - Tabs ni espacios) serán ignoradas por el filtro.

        + Tabs ni espacios) serán ignoradas por el filtro.
             // Sub-encabezado: Preguntas numéricas... 
              ¿Cuánto es dos más dos?{#4}

        Nombre de la Pregunta:
        Un nombre de pregunta puede ser @@ -122,7 +122,7 @@ La secci ::Día de Acción de Gracias::El día feriado en Estados Unidos en que se festeja el día de Acción de Gracias, es el {~segundo ~tercero =cuarto} - jueves de noviembre.

        + jueves de noviembre.

        Si no se especifica un nombre de pregunta, por defecto la pregunta entera será tomada como nombre.

        Respuesta automática al alumno:
        Estas respuestas pueden ser incluídas @@ -216,7 +216,7 @@ cambiando de "0" a "1" en la siguiente l

        La codificación del texto del archivo debe ser la misma que la de la instalación del Moodle.

        Un archivo de preguntas de ejemplo (en inglés) puede ser encontrado aquí: -gift/examples.txt.

        +gift/examples.txt.

        CRÉDITOS

        Este filtro fue escrito gracias a la colaboración de muchos miembros de la comunidad Moodle, y estuvo originalmente basado en el formato de 'palabra perdida', diff --git a/lang/eu/help/quiz/formatmissingword.html b/lang/eu/help/quiz/formatmissingword.html index 80567ac4236..8cc15a08276 100644 --- a/lang/eu/help/quiz/formatmissingword.html +++ b/lang/eu/help/quiz/formatmissingword.html @@ -1,3 +1,3 @@ -

        "Hutsuneak bete" formatuko artxibategiak inportatu

        +

        "Hutsuneak bete" formatuko artxibategiak inportatu

        Amaitu gabeko dokumentazioa.

        diff --git a/lang/eu/help/quiz/formatwebct.html b/lang/eu/help/quiz/formatwebct.html index 2f59b835b90..e4b9e2e9976 100644 --- a/lang/eu/help/quiz/formatwebct.html +++ b/lang/eu/help/quiz/formatwebct.html @@ -1,8 +1,8 @@ -

         "WebCT formatuko galdetegiak" dituzten +

         "WebCT formatuko galdera-sortak" dituzten fitxategiak inportatu

        WebCT inportatzeko iragazkia garapen-bidean dago eta oraindik ez ditu WebCT-en -galdetegi guztiak onartzen.

        +galdera-sorta guztiak onartzen.

        Hau idazteko momentuan, Aukera Anitzekoak eta Erantzun Laburreko Galderak baino ez ditu onartzen.

        diff --git a/lang/eu/help/quiz/grademethod.html b/lang/eu/help/quiz/grademethod.html index a6971f1252b..6e060b04216 100644 --- a/lang/eu/help/quiz/grademethod.html +++ b/lang/eu/help/quiz/grademethod.html @@ -1,24 +1,24 @@ -

        Kalifikazio-metodoak

        +

        Kalifikazio-metodoak

        -

        Saiakera bat baino gehiago baimentzen bada, ikaslearen amaierako nota kalkulatzeko -modu batzuk daude saiakera bakoitzaren notak erabiliz.

        +

        Saiakera bat baino gehiago baimentzen bada, ikaslearen amaierako nota kalkulatzeko +modu batzuk daude saiakera bakoitzaren notak erabiliz. -

        Kalifikaziorik altuena -

          -

          Amaierako nota saiakera guztietan lortutako altuena da.

          -
        +

        Kalifikaziorik altuena +

          +

          Amaierako nota saiakera guztietan lortutako altuena da. +

        -

        Batezbesteko kalifikazioa -

          -

          Amaierako nota saiakera guztien noten arteko batezbesteko sinplea da.

          -
        +

        Batezbesteko kalifikazioa +

          +

          Amaierako nota saiakera guztien noten arteko batezbesteko sinplea da. +

        -

        Lehen kalifikazioa -

          -

          Amaierako nota lehenbiziko saiakeran lortutakoa da (hurrengo saiakerak ez dira kontutan hartzen).

          -
        +

        Lehen kalifikazioa +

          +

          Amaierako nota lehenbiziko saiakeran lortutakoa da (hurrengo saiakerak ez dira kontutan hartzen). +

        -

        Azken kalifikazioa -

          -

          Amaierako nota egindako azken saiakeraren nota da.

          -
        +

        Azken kalifikazioa +

          +

          Amaierako nota egindako azken saiakeraren nota da. +

        diff --git a/lang/eu/help/quiz/import.html b/lang/eu/help/quiz/import.html index c2b9a343d9e..6791cf81042 100644 --- a/lang/eu/help/quiz/import.html +++ b/lang/eu/help/quiz/import.html @@ -1,11 +1,10 @@ -

        Galderak inportatu

        +

        Galderak inportatu

        -

        Funtzio honek formulario baten bidez kargatutako testu-artxibategiak -inportatzea ahalbidetzen du.

        -

        Onartutako formatuak honako hauek dira:

        +

        Funtzio honek formulario baten bidez kargatutako testu-artxibategiak +inportatzea ahalbidetzen du.

        Onartutako formatuak honako hauek dira: -

        GIFT

        +

        GIFT

          GIFT formatua eskura dagoen osatuena da testu-artxibategi batetik sorta baten galderak inportatzeko. Aukera asko ditu, hala nola: egia/gezurra, erantzun @@ -27,11 +26,11 @@ kalifikazioei eusten baitie. Ikus ditzagun bi adibide:

          ~Egiptotik} -

          Informazio +

          Informazio gehiago GIFT formatuari buruz

        -

        Aiken formatua

        +

        Aiken formatua

        "Aiken" formatua aukera anitzeko galderak sortzeko oso modu sinplea da, formatu argi eta ulerterraza erabilita. Hona hemen adibide bat:

        @@ -46,62 +45,62 @@ ANSWER: A
        -

        Hitz galdua

        -
          -

          Formatu honek aukera anitzeko galderak baino ez ditu onartzen. Galdera +

          Hitz galdua

          +
            +

            Formatu honek aukera anitzeko galderak baino ez ditu onartzen. Galdera bakoitza tilet batek (~) bereizten du, eta erantzu zuzenaren aurretik berdinatsun-marka al (=) agertzen da. Adibidez: -

            Gure gorputzaren atalak miatzen hasten garenean, {=anatomia eta +
            Gure gorputzaren atalak miatzen hasten garenean, {=anatomia eta fisiologiako ~reflexologiako ~zientziako ~esperimentuetako}adituak bihurtzen gara, eta nolabait bizitzako ikasleak. -
            +
            -

            Informazio -gehiago Hitz galdua formatuari buruz

            -
          +

          Informazio +gehiago Hitz galdua formatuari buruz

          +
        -

        AON

        -
          -

          Hitz galduaren funtzionamendu bera du, ondokoan izan ezik: inportatutakoan, -galdera guztiak launakako taldeetan biltzen dira, horietatik zuzena aukeratzeko.

          -

          Gainera, aukera anitzeko galderak inportatzean ausaz nahasten dira.

          -

          Honela deitzen zaio galdera-sorten ezaugarri askoren garapena bultzatu zuen -enpresa baten omenez.

          -
        +

        AON

        +
          +

          Hitz galduaren funtzionamendu bera du, ondokoan izan ezik: inportatutakoan, +galdera guztiak launakako taldeetan biltzen dira, horietatik zuzena aukeratzeko.

          +

          Gainera, aukera anitzeko galderak inportatzean ausaz nahasten dira.

          +

          Honela deitzen zaio galdera-sorten ezaugarri askoren garapena bultzatu zuen +enpresa baten omenez.

          +
        -

        Blackboard

        - -

        WebCT

        - -

        Course Test Manager (Administrador de Test de Cursos)

        -
          -

          Este módulo permite importar banco de preguntas en formato Course Test Manager. +

          Course Test Manager (Administrador de Test de Cursos)

          +
            +

            Este módulo permite importar banco de preguntas en formato Course Test Manager. Existen diversas maneras de tener acceso al banco de preguntas, de base de datos Access de Microsoft Access  , dependiendo si Moodle se ejecuta sobre un -servidor Web: Windows o Linux.

            +servidor Web: Windows o Linux.

            En Windows debe subir la base de datos Access como cualquier otro archivo de importación de los datos.

            En Linux, usted debe instalar una máquina de Windows en la misma red que la @@ -111,30 +110,30 @@ transferir datos a Moodle en el servidor de Linux.

            Por favor, lea el archivo de la ayuda de abajo antes de usar este tipo de importación.

            -

            Informazio +

            Informazio gehiago CTM formatuari buruz

            -
          +
        -

        Txertatutako erantzunak (Cloze)

        -
          -

          Formatu berezi honek erantzunak txertatzen dituen galdera-mota baino ez du +

          Txertatutako erantzunak (Cloze)

          + +
        -

        Pertsonala

        - +

        Pertsonala

        + -

        Formatu gehiago ari dira garatzen, WebCT eta IMS QTI barne, baina baita +

        Formatu gehiago ari dira garatzen, WebCT eta IMS QTI barne, baina baita Moodle-ren erabiltzaileek proposa dezaketen beste edozein ere.

        \ No newline at end of file diff --git a/lang/eu/help/quiz/index.html b/lang/eu/help/quiz/index.html index d437c03afa6..50d20e5a30d 100644 --- a/lang/eu/help/quiz/index.html +++ b/lang/eu/help/quiz/index.html @@ -1,47 +1,47 @@

        Galdera-sorta

        \ No newline at end of file diff --git a/lang/eu/help/quiz/match.html b/lang/eu/help/quiz/match.html index 200bf627266..6fcd933a2cf 100644 --- a/lang/eu/help/quiz/match.html +++ b/lang/eu/help/quiz/match.html @@ -1,11 +1,11 @@ -

        Preguntas de emparejamiento

        +

        Preguntas de emparejamiento

        Aukerako sarrera baten ondoren, Tras una introducción opcional, se presentan al estudiante algunas sub-preguntas y algunas respuestas desordenadas. Hay - una respuesta correcta para cada pregunta.

        + una respuesta correcta para cada pregunta. -

        El estudiante debe seleccionar la respuesta que corresponda a cada sub-pregunta.

        +

        El estudiante debe seleccionar la respuesta que corresponda a cada sub-pregunta.

        Cada sub-pregunta se pondera con el mismo peso para contribuir todas del mismo modo a la calificación de la pregunta total. -

        + diff --git a/lang/eu/help/quiz/maxgrade.html b/lang/eu/help/quiz/maxgrade.html index cb85b57849c..12085ef29d1 100644 --- a/lang/eu/help/quiz/maxgrade.html +++ b/lang/eu/help/quiz/maxgrade.html @@ -1,9 +1,9 @@

        Gehienezko kalifikazioa

        Azterketa bati ezarritako gehienezko kalifikazioa ikastaroko gainerako -kalifikazioen araberakoa da.

        +kalifikazioen araberakoa da.

        Adibidez, gehienezko kalifikazio gisa 20 ezar dezakezu, azterketa horrek -ikastaroaren kalifikazio orokorraren %20a balio badu.

        +ikastaroaren kalifikazio orokorraren %20a balio badu.

        Zure azterketan 10 galdera izan ditzakezu, eta galdera guztien artean 50 puntu zenbatzen badituzte ere, nota guztiak gehienezko kalifikazio horretara ekarriko dira (20).

        diff --git a/lang/eu/help/quiz/mods.html b/lang/eu/help/quiz/mods.html index b6257b1eff4..ad58319b243 100644 --- a/lang/eu/help/quiz/mods.html +++ b/lang/eu/help/quiz/mods.html @@ -1,9 +1,9 @@ -

         Galdetegia

        +

         Galdera-sorta

        Modulu honek hainbat moldetako galdekizunak diseinatzea eta planteatzea ahalbidetzen dio irakasleari. Galdera-motak honako hauek izan daitezke, besteak beste: aukera anitzekoak, egia/gezurra eta erantzun laburrak. Galderak datu-base batean gordetzen dira kategorien arabera ordenatuak eta ikastaro berean edo -beste batzuetan erabil daitezke berriro. Galdetegiek saiakera bat baino +beste batzuetan erabil daitezke berriro. Galdera-sortek saiakera bat baino gehiago baimendu dezakete. Saikaera bakoitza markatua eta kalifikatua izaten da eta irakasleak aukeran du azterketa amaitutakoan mezuren bat edo erantzun zuzenak erakustea.

        diff --git a/lang/eu/help/quiz/multianswer.html b/lang/eu/help/quiz/multianswer.html index 86035f00e15..2ddb0224373 100644 --- a/lang/eu/help/quiz/multianswer.html +++ b/lang/eu/help/quiz/multianswer.html @@ -1,21 +1,13 @@ - Galdera txertatuak ("Cloze") -

        -

        - Galdera-mota hau oso malgua da eta Cloze formatu ezagunaren oso antzekoa. -

        -

        - Galdetegi-mota honetan Moodle formatuan idatzitako testu-pasarte bati buruzko galdera txertatuak agertzen dira (aukera anitzekoak, erantzun laburrekoak edo zenbakizkoak). -

        -

        - Gaur egun ez dugu galdera-mota hori sortzeko interfaz grafikorik, eta horregatik galderaren formatua zehaztu behar da  testu-kutxa erabiliz, edo kanpoko fitxategietatik inportatuz. -

        -

        - Hona hemen galdera txertatu bat sortzeko erabilitako sarrera-testuarenadibide bat: -

        -
        -
        - -
        -
        -

        - Ikaseek aurreko adibidea honela ikusiko dute: -

        -
        - - - - -
        - - - - - -
        -

        - 3 -

        -

        - 8 puntu -


        -
        -

        - Galdera honek erantzun txertatuko testua du gero egiaztatuko du erantzun labur hau eta, azkenik badugu koma higikorra duen zenbakia .
        -
        - Har ezazu kontuan www.moodle.org bezalako helbideek eta emotikonek :-) ohiko moduan funtzionatzen dutela:
        - a) Zuzena al da?
        - b) Zein puntuazio emango zenioke?
        -
        - Suerte on! -

        -
        -
        -
        - +
        +

        Ikaseek aurreko adibidea honela ikusiko dute:

        +
        + + + +
        + + + + +
        +

        3

        +

        8 puntu


        +

        Galdera honek erantzun txertatuko testua du + gero egiaztatuko du erantzun labur hau eta, azkenik badugu koma higikorra duen zenbakia .

        Har ezazu kontuan www.moodle.org + bezalako helbideek eta emotikonek :-) ohiko moduan funtzionatzen dutela:
        + a) Zuzena al da?
        b) + Zein puntuazio emango zenioke?

        Suerte + on!

        diff --git a/lang/eu/help/quiz/multichoice.html b/lang/eu/help/quiz/multichoice.html index d1f64d51e7a..2cca7921899 100644 --- a/lang/eu/help/quiz/multichoice.html +++ b/lang/eu/help/quiz/multichoice.html @@ -2,14 +2,14 @@

        Aukera anitzeko galderak

        Galderari erantzuteko (irudi bat izan dezakeena) ikasleak aukera batzuen artean hautatu behar du. Aukera anitzeko bi galdera-mota daude: erantzun -bakarrekoa edo erantzun anitzekoa.

        +bakarrekoa edo erantzun anitzekoa.

        Erantzun bakarreko galderek erantzun bakarra aukeratzea baimentzen dute. -Normalean galdera hauen kalifikazioak positiboa izan beharko luke.

        +Normalean galdera hauen kalifikazioak positiboa izan beharko luke.

        Erantzun anitzeko galderek erantzun bat edo gehiago aukeratzea baimentzen dute. Erantzun bakoitzak kalifikazio positiboa edo negatiboa izan dezake, aukera GUZTIAK markatzen dituenak beti kalifikazio positiboa jaso ez dezan. Erantzunen kalifikazioen batuketa negatiboa bada, galdera horren kalifikazioa zero izango -da. Kontuz, posiblea da-eta %100 baino gehiago ematen duen galdera sortzea!

        +da. Kontuz, posiblea da-eta %100 baino gehiago ematen duen galdera sortzea!

        Azkenik, erantzun bakoitzak (ondo ala gaizki) zuzenketa izan behar du. Zuzenketa ikasleari erakutsiko zaio erantzun bakoitzaren ondoan (baldin eta azterketa erantzun zuzenak erakusteko konfiguratu bada).

        diff --git a/lang/eu/help/quiz/numerical.html b/lang/eu/help/quiz/numerical.html index c571e186bbe..97750d37750 100644 --- a/lang/eu/help/quiz/numerical.html +++ b/lang/eu/help/quiz/numerical.html @@ -1,9 +1,10 @@

        Zenbakizko galderak

        Galdera-mota honetan (irudia izan dezakeena) erantzunak zenbakia izan behar -du.

        +du.n respuesta a una pregunta (que puede incluir una imagen) el +resultado debe ser un número.

        -

        Eskatzen den erantzunak errore-marjina onargarria izan dezake. Horrek +

        Eskatzen den erantzunak errore-marjina onargarria izan dezke. Horrek erantzun-heina izatea ahalbidetzen du.

        Adibidez, erantzun zuena 30ekoa bada, eta marjina onargarria 5ekoa bada, 25 diff --git a/lang/eu/help/quiz/questiondatasets.html b/lang/eu/help/quiz/questiondatasets.html new file mode 100644 index 00000000000..1f077c579f0 --- /dev/null +++ b/lang/eu/help/quiz/questiondatasets.html @@ -0,0 +1,3 @@ +

        Conjuntos de preguntas

        + +XXXX AÚN NO COMPLETADA XXXXX diff --git a/lang/eu/help/quiz/questiontypes.html b/lang/eu/help/quiz/questiontypes.html index be28f31787a..f02fe1f3eaf 100644 --- a/lang/eu/help/quiz/questiontypes.html +++ b/lang/eu/help/quiz/questiontypes.html @@ -1,93 +1,93 @@ -

        Nola sortu galdera berriak

        +

        Nola sortu galdera berriak

        -

        Galdera-mota ezberdinak gehitu ditzakezu kategoria batean:

        +

        Galdera-mota ezberdinak gehitu ditzakezu kategoria batean:

        -

        Aukera anitzak

        -
          -

          Galderari erantzuteko (irudia izan dezakeena) ikaleak aukera ezberdinen artean hautatzen du. - Aukera anitzeko bi galdera-mota daude: erantzun bakarrekoa era erantzun anitzekoa.

          -
        +

        Aukera anitzak

        +
          +

          Galderari erantzuteko (irudia izan dezakeena) ikaleak aukera ezberdinen artean hautatzen du. + Aukera anitzeko bi galdera-mota daude: erantzun bakarrekoa era erantzun anitzekoa. +

        -

        Informazio +

        Informazio gehiago aukera anitzeko galderei buruz

        -

        Erantzun laburra

        +

        Erantzun laburra

        -

        Galderari erantzuteko (irudi bat izan dezakeena), ikasleak +

        Galderari erantzuteko (irudi bat izan dezakeena), ikasleak hitz edo esaldi bat idatzi behar du. Erantzun zuzen ezberdinak egon daitezke, eta kalifikazio ezberdinak. Letra larrien eta xeheen artean bereiztea aukerazkoa da. -

        +

        - +

        Zenbakizkoa

        -
          -

          Ikaslearen ikuspuntutik, zenbakizko galdera eta erantzun laburrekoa oso +

          +
        -

        Egia/Gezurra

        -
          -

          Galderari erantzuteko (irudi bat izan dezakeena), ikasleak +

          Egia/Gezurra

          +
            +

            Galderari erantzuteko (irudi bat izan dezakeena), ikasleak bi aukeren artean hautatzen du: Egia ala Gezurra. -

            -
          +

          +
        - + -

        Parekatu

        - -

        Galdera txertatuak (Cloze)

        - -

        Erantzun laburreko ausazko parekatzea

        -
          -

          Ikaslearen ikuspuntutik, galdera hau eta parekatzeko galdera oso antzekoak +

          Erantzun laburreko ausazko parekatzea

          + +
        -

        Ausazkoa

        -
          -

          Galdera-kopuru bat hautatzeko aukera ematen du, eta +

          Ausazkoa

          +
            +

            Galdera-kopuru bat hautatzeko aukera ematen du, eta ikasleak horien arteko batzuk ausaz jasoko ditu azterketa-saiakera bakoitzean. -

            -
          +

          +
        - -

        Deskribapena

        - \ No newline at end of file diff --git a/lang/eu/help/quiz/random.html b/lang/eu/help/quiz/random.html index a234f82eb0f..c1624af0a27 100644 --- a/lang/eu/help/quiz/random.html +++ b/lang/eu/help/quiz/random.html @@ -1,14 +1,14 @@ -

        Ausazko galderak

        +

        Ausazko galderak

        Ausazko galderak galdera-mota bereziak dira.

        -

        Galdetegi batean ausazko galdera sartzen duzunean, kategoria osoko +

        Galdera-sorta batean ausazko galdera sartzen duzunean, kategoria osoko galderen artetik ausaz aukeratuko da bat saiakera bakoitzeko.

        Galderaren gehienezko kalifikazioa ausazko galderarako aukeratu duzun kalifikazio bera izango da beti.

        -

        Adibidez, ausazko 10 galderak osatutako galdetegia egiten baduzu, ikasle +

        Adibidez, ausazko 10 galderak osatutako galdera-sorta egiten baduzu, ikasle bakoitzak 10 galderak osatutako multzo guztiz ezberdina  izango du erantzuten duen aldi bakoitzean.

        diff --git a/lang/eu/help/quiz/randomsamatch.html b/lang/eu/help/quiz/randomsamatch.html index c7636ce4aee..762316d38e1 100644 --- a/lang/eu/help/quiz/randomsamatch.html +++ b/lang/eu/help/quiz/randomsamatch.html @@ -1,14 +1,14 @@ -

        Preguntas de emparejamiento aleatorias de respuesta corta

        +

        Preguntas de emparejamiento aleatorias de respuesta corta

        Tras una introducción opcional, se presentan al estudiante algunas sub-preguntas y algunas respuestas desordenadas. Hay - una respuesta correcta para cada pregunta.

        + una respuesta correcta para cada pregunta. -

        El estudiante debe seleccionar la respuesta que corresponda a cada sub-pregunta.

        +

        El estudiante debe seleccionar la respuesta que corresponda a cada sub-pregunta.

        Cada sub-pregunta se pondera con el mismo peso para contribuir - todas del mismo modo a la calificación de la pregunta total.

        + todas del mismo modo a la calificación de la pregunta total.

        Las preguntas y respuestas son extraídas aleatoriamente del conjunto de preguntas de respuesta corta existentes en la categoría actual. Cada - intento hecho sobre un mismo examen tendrá diferentes preguntas y respuestas.

        \ No newline at end of file + intento hecho sobre un mismo examen tendrá diferentes preguntas y respuestas. \ No newline at end of file diff --git a/lang/eu/help/quiz/repeatattempts.html b/lang/eu/help/quiz/repeatattempts.html index 0286004c3aa..4460abb522b 100644 --- a/lang/eu/help/quiz/repeatattempts.html +++ b/lang/eu/help/quiz/repeatattempts.html @@ -1,8 +1,7 @@

        Saikera bakoitza azkenengoan oinarritzen da

        -

        Saiakera bat baino gehiago baimentzen bada, eta Bai hautatzen bada, saiakera +

        Saiakera bat baino gehiago baimentzen bada, eta Bai hautatzen bada, saiakera berri bakoitzean aurrekoaren emaitza agertuko da. Honek galderari erantzutea -ahalbidetzen du saiakera batzuk eginez.

        -

        Saiakera -bakoitzean aurreko erantzuna ez erakusteko, Ez -aukeratu behar duzu.

        \ No newline at end of file +ahalbidetzen du saiakera batzuk eginez.

        Saiakera +bakoitzean aurreko erantzuna ez erakusteko, Ez +aukeratu behar duzu. \ No newline at end of file diff --git a/lang/eu/help/quiz/requirepassword.html b/lang/eu/help/quiz/requirepassword.html index f66cac107d0..35e7d78ab8a 100644 --- a/lang/eu/help/quiz/requirepassword.html +++ b/lang/eu/help/quiz/requirepassword.html @@ -2,5 +2,5 @@

        Aukerako eremua da.

        -

        Pasahitza gehitzen badugu, ikasleek hori bera idatzi beharko dute galdetegiari -erantzuten hasi ahal izateko.

        +

        Pasahitza gehitzen badugu, ikasleek hori bera idatzi beharko dute +galdera-sortari erantzuten hasi ahal izateko.

        diff --git a/lang/eu/help/quiz/requiresubnet.html b/lang/eu/help/quiz/requiresubnet.html index 394d89bf790..5403766e6a8 100644 --- a/lang/eu/help/quiz/requiresubnet.html +++ b/lang/eu/help/quiz/requiresubnet.html @@ -1,4 +1,4 @@ -

        Requiere una dirección de red

        +

        Requiere una dirección de red

        Es un campo opcional.

        diff --git a/lang/eu/help/quiz/review.html b/lang/eu/help/quiz/review.html index ac9c144629d..ce9c5905274 100644 --- a/lang/eu/help/quiz/review.html +++ b/lang/eu/help/quiz/review.html @@ -1,6 +1,6 @@ -

        Galdetegia itxi eta gero berrikusketa baimentzea

        +

        Galdera-sorta itxi eta gero berrikusketa baimentzea

        -

        Aukera ha aktibatzen baduzu, ikasleek beren erantzunak berrikusteko modua -izango dute.

        +

        Aukera ha aktibatzen baduzu, ikasleek beren erantzunak berrikusteko modua +izango dute.

        -

        Hau bakarrik izango da posible behin galdetegia itxi eta gero.

        +

        Hau bakarrik izango da posible behin galdera-sorta itxi eta gero.

        diff --git a/lang/eu/help/quiz/shortanswer.html b/lang/eu/help/quiz/shortanswer.html index 130cc65ddbc..ad696678ac6 100644 --- a/lang/eu/help/quiz/shortanswer.html +++ b/lang/eu/help/quiz/shortanswer.html @@ -1,9 +1,9 @@ -

        Erantzun laburreko galderak

        +

        Erantzun laburreko galderak

        Galderari erantzuteko (irudi bat izan dezakeena) ikasleak hitz edo esaldi -labur bat idazten du.

        +labur bat idazten du.

        Erantzun posible batzuk izan daitezke, bakoitzak puntuazio ezberdinak dituela. "Letra larriak eta xeheak  bereizi" aukeratu baduzu, puntuazio ezberdinak izan ditzakete "Hitza" eta "hitza" -erantzunek.

        +erantzunek.

        Erantzunak letraz letra konparatzen dira, beraz, argi ibili ortografiarekin!

        diff --git a/lang/eu/help/quiz/shuffleanswers.html b/lang/eu/help/quiz/shuffleanswers.html index 1ba270717f5..e685211b0a1 100644 --- a/lang/eu/help/quiz/shuffleanswers.html +++ b/lang/eu/help/quiz/shuffleanswers.html @@ -1,4 +1,4 @@ -

        Erantzunak nahastu

        +

        Erantzunak nahastu

        Aukera hau gaitzen baduzu, azterketaren erantzunen ordena ausaz nahastuko da ikasleren batek erantzun nahi dion bakoitzean.

        diff --git a/lang/eu/help/quiz/shufflequestions.html b/lang/eu/help/quiz/shufflequestions.html index 53bf7cec5e2..26e9c073e80 100644 --- a/lang/eu/help/quiz/shufflequestions.html +++ b/lang/eu/help/quiz/shufflequestions.html @@ -1,4 +1,4 @@ -

        Barajar preguntas

        +

        Barajar preguntas

        Si habilita esta opción, el orden de las preguntas del examen se barajará aleatoriamente cada vez que un estudiante intente diff --git a/lang/eu/help/quiz/timelimit.html b/lang/eu/help/quiz/timelimit.html index 1e314dcafc3..76fcb7d0415 100644 --- a/lang/eu/help/quiz/timelimit.html +++ b/lang/eu/help/quiz/timelimit.html @@ -1,7 +1,7 @@ -

        Gehienezko denbora

        +

        Gehienezko denbora

        -

        Besterik adierazi ezean, galdetegiek ez dute denbora-mugarik, eta ikasleek -nahi beste denbora izango dute galdetegiari erantzuteko.

        Denbora-muga +

        Besterik adierazi ezean, galdera-sortek ez dute denbora-mugarik, eta ikasleek +nahi beste denbora izango dute galdera-sortari erantzuteko.

        Denbora-muga ipiniz gero, saiakera bakoitza epe horren barruan egin beharko dute eta honako prozesu hauek jarriko dira marxtan:

        @@ -9,9 +9,9 @@ prozesu hauek jarriko dira marxtan:

      • Nabegatzaileak Javascript-a onartu behar du - horrek denborak behar bezala funtzionatzea ahalbidetzen du.
      • Leiho txiki batek gelditzen den denbora erakusten du.
      • -
      • Denbora amaitu denean, galdetegia automatikoki bidaliko da ordura arte +
      • Denbora amaitu denean, galdera-sorta automatikoki bidaliko da ordura arte betetako erantzunak dituela.
      • Ikasleren batek bere ordenagailuko erlojua aldatuz nahi balu iruzur egin, - eta jarritako denbora 60 segunduz luzatuko balitz, orduan galdetegiaren + eta jarritako denbora 60 segunduz luzatuko balitz, orduan galdera-sortaren kalifikazioa automatikoki 0koa izango litzateke.
      • \ No newline at end of file diff --git a/lang/eu/help/quiz/truefalse.html b/lang/eu/help/quiz/truefalse.html index 413e6f288c8..1ff42e24da9 100644 --- a/lang/eu/help/quiz/truefalse.html +++ b/lang/eu/help/quiz/truefalse.html @@ -1,6 +1,7 @@ -

        Egia/Gezurra galderak

        + +

        Egia/Gezurra galderak

        Galdera bati erantzuteko (irudia izan dezakeena), ikasleak Egia ala Gezurra -den aukeratu behar du.

        +den aukeratu behar du.

        Zuzenketa gaituta badago, orduan erantzun zuzena agertuko da behin azterketa egin eta gero. Adibidez, erantzun zuzena "Gezurra" bada, eta ikasleak "Egia" erantzuten badu (erratuta), orduan erantzun zuzena bistaratuko diff --git a/lang/eu/help/reading.html b/lang/eu/help/reading.html index e9818937a48..7518e7a62be 100644 --- a/lang/eu/help/reading.html +++ b/lang/eu/help/reading.html @@ -2,9 +2,9 @@

        Irakurri

        Testuak azkar irakurrita, gerta daiteke egilearen mezua gaizki ulertzea.

        Gaizki-ulertzeak ekiditeko, irakur ezazu arretaz eta saia zaitez egilearen -ikuspuntuan kokatzen.

        +ikuspuntuan kokatzen.

        Oso baliagarria da pentstazea egileak zer EZ duen esan, edo zalantzatan zer utzi duen; horrek buruari galderak egitera bultzatuko zaitu.

        -

        -

        +

        +

        diff --git a/lang/eu/help/resource/index.html b/lang/eu/help/resource/index.html index 361a43a07c9..6c3d973587a 100644 --- a/lang/eu/help/resource/index.html +++ b/lang/eu/help/resource/index.html @@ -1,7 +1,7 @@

        Módulo de Recursos

        diff --git a/lang/eu/help/resource/mods.html b/lang/eu/help/resource/mods.html index fa72aa87e74..f5b6381cc4b 100644 --- a/lang/eu/help/resource/mods.html +++ b/lang/eu/help/resource/mods.html @@ -1,4 +1,4 @@ -

         Baliabideak

        -

        Baliabideak edukiak dira: irakasleak ikasleei eman nahi dien informazioa. +

         Baliabideak

        +

        Baliabideak edukiak dira: irakasleak ikasleei eman nahi dien informazioa. Zerbitzarira igotako fitxategiak, Moodle-n zuzenean editatutakoak, edo -ikastaroan agertzea komeni diren kanpoko web-orriak.

        +ikastaroan agertzea komeni diren kanpoko web-orriak.

        diff --git a/lang/eu/help/resource/program.html b/lang/eu/help/resource/program.html index bfd80c884d2..214a72c2eef 100644 --- a/lang/eu/help/resource/program.html +++ b/lang/eu/help/resource/program.html @@ -1,12 +1,12 @@ -

        Recursos de programa

        +

        Recursos de programa

        Un Programa es un recurso externo que puede aceptar datos enviados desde Moodle.

        Los datos se pasan vía HTTP GET (como parte de la URL) e incluyen:

          -
        • extern_nav: la URL desde donde se está llamando al recurso
        • -
        • extern_usr: el nombre de usuario del usuario actual
        • -
        • extern_nam: el nombre completo del usuario actual
        • -
        • extern_tim: la fecha actual
        • -
        • extern_pwd: una única contraseña
        • +
        • extern_nav: la URL desde donde se está llamando al recurso +
        • extern_usr: el nombre de usuario del usuario actual +
        • extern_nam: el nombre completo del usuario actual +
        • extern_tim: la fecha actual +
        • extern_pwd: una única contraseña

        Todo esto será revisado en un futuro próximo.

        diff --git a/lang/eu/help/resource/resourcetype.html b/lang/eu/help/resource/resourcetype.html index d3d40509615..62217d8813a 100644 --- a/lang/eu/help/resource/resourcetype.html +++ b/lang/eu/help/resource/resourcetype.html @@ -1,37 +1,37 @@ -

        Tipos de Recursos

        +

        Tipos de Recursos

        -

        Los Recursos son cualquier tipo de contenido que usted desee colocar para ser consultado por los estudiantes. -Éstos son los diferentes tipos:

        +

        Los Recursos son cualquier tipo de contenido que usted desee colocar para ser consultado por los estudiantes. +Éstos son los diferentes tipos: -

        Texto Plano - el tipo más fácil. Usted simplemente puede teclear (editar) +

        Texto Plano - el tipo más fácil. Usted simplemente puede teclear (editar) la página en un formulario en la página siguiente. Lo que escriba será formateado automáticamente, de la misma forma que los mensajes en los foros. -Más información sobre texto con autoformato:

        +Más información sobre texto con autoformato: -

        Texto HTML - para los usuarios más avanzados. No se efectúa ningún tipo +

        Texto HTML - para los usuarios más avanzados. No se efectúa ningún tipo de formateo automático, sino que usted tiene que hacerlo manualmente usando los -códigos de HTML.

        +códigos de HTML. Más información sobre texto HTML

        -

        Referencia - una referencia a una revista o libro.

        +

        Referencia - una referencia a una revista o libro. -

        Archivo subido - muestra cualquier archivo que haya subido al curso. -Vea la sección de "Archivos".

        +

        Archivo subido - muestra cualquier archivo que haya subido al curso. +Vea la sección de "Archivos".

        Directorio - muestra un directorio completo (y los subdirectorios correspondientes) en el área de archivos de curso. Los estudiantes pueden consultar y ver todos estos archivos.

        -

        Enlace Web - Un hiperenlace (link) a alguna parte de la web. +

        Enlace Web - Un hiperenlace (link) a alguna parte de la web. Cuando el alumno hace clic en este material será llevado fuera del curso (la página especificada llenará -la ventana del navegador).

        +la ventana del navegador). -

        Página Web - Una URL a alguna parte de la web. Como el tipo de recurso +

        Página Web - Una URL a alguna parte de la web. Como el tipo de recurso anterior, esto mostrará una página web. Pero, al contrario del mismo, la página -se mostrará dentro de un marco, como si estuviera integrada dentro del curso.

        +se mostrará dentro de un marco, como si estuviera integrada dentro del curso. -

        Programa - Un programa externo que requiere información del usuario y +

        Programa - Un programa externo que requiere información del usuario y curso. Esto permite que aplicaciones externas de Internet cooperen con Moodle. Más información sobre Programas

        Texto Wiki - Permite formatear texto sin utilizar HTML. El formato se consigue con caracteres normales, por ejemplo: -*esto es negritas* /esto es cursivas/).

        +*esto es negritas* /esto es cursivas/). Más información sobre Wiki

        diff --git a/lang/eu/help/resource/summary.html b/lang/eu/help/resource/summary.html index cceb423b7a4..d9bc81925f4 100644 --- a/lang/eu/help/resource/summary.html +++ b/lang/eu/help/resource/summary.html @@ -1,5 +1,5 @@ -

        Resumen

        +

        Resumen

        -

        El resumen es una descripción muy corta del recurso.

        -

        ¡Trate de no escribir demasiado aquí, o incluir el propio recurso!

        -

        Tendrá la oportunidad de especificar su contenido en la próxima página.

        \ No newline at end of file +

        El resumen es una descripción muy corta del recurso. +

        ¡Trate de no escribir demasiado aquí, o incluir el propio recurso! +

        Tendrá la oportunidad de especificar su contenido en la próxima página. \ No newline at end of file diff --git a/lang/eu/help/resource/window.html b/lang/eu/help/resource/window.html index 3d9aabf9a15..6f38a350927 100644 --- a/lang/eu/help/resource/window.html +++ b/lang/eu/help/resource/window.html @@ -44,7 +44,7 @@ ¿Mostrar la barra de estado?

        El mostrar la barra de estado permite a los usuarios manejar la información del navegador (e.g., qué cantidad de recurso se ha cargado, o información relativa a la seguridad).

        - +
      • Determinar el tamaño de la ventana que usted desea abrir.
        diff --git a/lang/eu/help/richtext.html b/lang/eu/help/richtext.html index 790c781e1aa..85c6ec79b38 100644 --- a/lang/eu/help/richtext.html +++ b/lang/eu/help/richtext.html @@ -1,7 +1,7 @@ -

        Richtext HTML editoreari buruz

        +

        Sobre el editor Richtext HTML

        -

        Eskuragarritasuna: -htmleditor) { +

        Disponibilidad: +htmleditor) { print_string("htmleditordisabledadmin"); } else if (!$USER->htmleditor) { print_string("htmleditordisabled"); @@ -11,151 +11,156 @@ print_string("htmleditoravailable"); } ?> -

        +

        -

        Richtext HTML editoreak zure web gunean bertan testu editore interfaz bat ezartzen du testuak intuitiboki editatu ahal izateko, -eta HTML kode normala sortzen du.

        +

        El editor HTML Richtext ofrece una interfase semejante a un procesador de +palabras que permite generar código HTML aunque Ud. no conozca el lenguaje. -

        Testuari formatua emateaz gain, editore honek hainbat funtzionalitate gehigarri ditu.

        +

        Además de dar formato al texto, este editor ofrece otras características +de utilidad. -

        Beste aplikazioetatik testua itsatsi

        -
          -

          Beste aplikazioetatik, Word adibidez, formatodun testua kopiatu eta zuzenean editorean itsatsi dezakezu, zure formatua mantenduko da. -Zure nabigatzaileko kopiatu eta itsatsi aukerak erabili (edo Control-C eta Control-V).

          -
        +

        Pegar texto desde otras aplicaciones de Windows

        +
          +

          Es posible pegar texto escrito o editado en otra aplicación, como MS Word, +conservando su formato. Utilice los comandos normales de copiar y pegar del menú +(o CTRL+C y CTRL+V). +

        -

        Irudiak Txertatu

        -
          -

          Dagoeneko webera igo dituzun irudiak badituzu, eta URL bitartez eskuragarriak badira, irudi hauek zure testuetan sartu ditzazkezu "Irudia Txertatu" botoiarekin.

          -
        +

        Insertar imágenes

        +
          +

          Puede colocar imágenes que se encuentren en Internet y que se puedan acceder +a través de una dirección, incluya esas imágenes con el botón “Insertar imagen”. +

        -

        Taulak Txertatu

        -
          -

          Zure testuei estruktura emateko, tresna barrako "taula txertatu" botoia erabili dezakezu. -

        +

        Insertar tablas

        +
          +

          Para organizar el diseño de su mensaje puede crear tablas con el botón “Insertar tabla”. +

        -

        Lotura txertatu

        -
          -

          Lotura berri bat egiteko, Lehenik loturaren testua sartu, ikusgai egingo dena. Gero, aukeratu ezazu eta tresna barrako lotura botoia zapaldu. Loturaren helburu den URL-a sartu, eta kitto!

          -
        +

        Insertar enlaces

        +
          +

          Para colocar un enlace primero escriba el texto que desea enlazar. Luego +seleccione el botón “enlace” y escriba la dirección. Eso es todo. +

        -

        Irrifartxoak txertatu (emotikonoak)

        -
          -

          Ikonotxo hauek zure testuan sartzeko tresna barrako irrifartxoen ikonoan egin klik. Hurrengo irrifartxoen artean hautatzeko aukera emango dizun leiho bat irekiko da. -(Bestela, dagokion kodea zuzenean sartu dezakezu zure testuan eta testua bistaratzerakoan irudia bihurtuko da).

          +

          Caritas (emoticons)

          +
            +

            Para colocar estos pequeños iconos en el texto oprima el botón de emoticonos en +la barra de iconos y elija el que desee. (También puede colocar el código +correspondiente, y el emoticono aparecerá cuando se lea el mensaje.)

            +


            +

            - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            irribarrea:-)
            barrea:-D
            begi-keinua;-)
            erdipurdizka:-/
            pentsakorV-.
            mihia atera:-P
            primeranB-)
            onartu^-)
            begiak zabal zabalik8-)
            harridura8-o
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            triste:-(
            lotsati8-.
            lotsatuta:-I
            musuak:-X
            pailasoa:o)
            pirataP-|
            haserre8-[
            hilikxx-P
            lotan|-.
            deabrua}-]
            + + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            sonrisa:-)
            gran sonrisa:-D
            guiño;-)
            confuso:-/
            pensativoV-.
            lengua de fuera:-P
            estupendoB-)
            aprobación^-)
            ojos abiertos8-)
            sorpresa8-o
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            triste:-(
            tímido8-.
            sonrojado:-I
            besos:-X
            payaso:o)
            ojo amoratadoP-|
            enojado8-[
            muertoxx-P
            dormido|-.
            malo}-]
            +
            - - - + diff --git a/lang/eu/help/scheduler/mods.html b/lang/eu/help/scheduler/mods.html index 09e8e032b0a..a7b9a439202 100644 --- a/lang/eu/help/scheduler/mods.html +++ b/lang/eu/help/scheduler/mods.html @@ -1,4 +1,4 @@ -

             Agenda (programa de reuniones)

            -
              -

              Este módulo le ayuda a programar reuniones una a una con todos sus estudiantes. Usted especifica los períodos durante los cuales estará disponible para ver a los estudiantes y la duración de cada reunión. Los estudiantes a continuación se apuntan ellos mismos en las franjas de tiempo prefijadas. El módulo permite asimismo registrar la asistencia.

              -
            +

             Agenda (programa de reuniones)

            +
              +

              Este módulo le ayuda a programar reuniones una a una con todos sus estudiantes. Usted especifica los períodos durante los cuales estará disponible para ver a los estudiantes y la duración de cada reunión. Los estudiantes a continuación se apuntan ellos mismos en las franjas de tiempo prefijadas. El módulo permite asimismo registrar la asistencia.

              +
            diff --git a/lang/eu/help/survey/index.html b/lang/eu/help/survey/index.html index 43937fa0b63..e9060cfa5a9 100644 --- a/lang/eu/help/survey/index.html +++ b/lang/eu/help/survey/index.html @@ -1,5 +1,5 @@

            Módulo Encuesta

            diff --git a/lang/eu/help/survey/mods.html b/lang/eu/help/survey/mods.html index fda7e63f82f..246b9fcf24b 100644 --- a/lang/eu/help/survey/mods.html +++ b/lang/eu/help/survey/mods.html @@ -1,8 +1,8 @@ -

             Encuestas

            -
              -

              El módulo de Encuestas proporciona un conjunto de instrumentos +

               Encuestas

              +
                +

                El módulo de Encuestas proporciona un conjunto de instrumentos verificados que se han mostrado útiles para evaluar y estimular el aprendizaje en contextos de aprendizaje en línea. Los profesores pueden usarlas para recopilar datos de sus alumnos que les ayuden a - aprender tanto sobre su clase como sobre su propia enseñanza.

                -
              + aprender tanto sobre su clase como sobre su propia enseñanza.

              +
            diff --git a/lang/eu/help/surveys.html b/lang/eu/help/surveys.html index 3587197b632..be973eba223 100644 --- a/lang/eu/help/surveys.html +++ b/lang/eu/help/surveys.html @@ -1,80 +1,124 @@ -

            Inkesta eskuragarriak

            - -

            Une hauetan, Moodlek inkesta zehatz batzuk baino ez ditu eskaintzen (etorkizunean zuk zeuk ere egin ahal izango dituzu).

            - -

            Eskuragarri dauden inkestak pedagogia konstruktibista erabiltzen duen urruneko -ikasketa ebaluatzeko erabilgarritzat jotzen dira. -Parteartzeileengan ematen diren joerak identifikatzeko erabilgarriak izan daitezke. - -(Inkesta hauek ikerketa sakon batean nola erabiltzen diren ikusi nahi baduzu, jo hona:: -http://dougiamas.com/writing/herdsa2002)

            - -
            -

            COLLES - Constructivist On-Line Learning Environment Survey edo Urruneko ikasketa konstruktibistaren Inkesta

            + + + + Encuestas disponibles + + +

            Encuestas disponibles

            +

            Actualmente sólo disponemos de ciertas encuestas, en un +futuro usted +podrá crear las suyas propias.

            +

            Las encuestas incluidas fueron elegidas por ser particularmente +útiles para la evaluación de la educación en +línea, así como para identificar ciertas tendencias que +pueden estar dándose entre sus participantes. +

            +
            +

            COLLES - Constructivist On-Line Learning Environment Survey +(Encuesta sobre Ambiente Constructivista Educativo en Línea)

              -

              COLLES delakoa 24 baieztapen labur sei taldetan antolatzen ditu, hauetako - bakoitza urruneko ikaketaren testuingurunearen kalitatearen atal gako bat - aztertzea baimentzen digu:

              - - - - - - - - - - - - - - - - - - - - - - - - - +

              El COLLES comprende 24 premisas agrupadas en seis escalas, cada +una de las cuales nos ayuda a formular una pregunta clave sobre la +calidad del ambiente educativo en línea: +

              +
              GarrantziaIkasketak zein garrantzi du ikaslearen jarduera profesionalean?
              Erreflexioa Ikasketak ikaslearen pentsakera erreflexioba bultzatzen al du?
              Interaktibitatea Norarte lotzen dira ikasleak linea bitartezko elkarrizketa edukatibo - baten?
              Tutorearen laguntzaOndo laguntzen al diete tutoreek ikasleei urruneko ikasketa prozesuan - parte hartzera?
              Kideen laguntza Klasikideak ulerkorrak eta lagungarriak al dira?
              Interpretazioa Ikasle eta tutoreek elkar ondo ulertzen al dute urruneko komunikazioetan?
              + + + + + + + + + + + + + + + + + + + + + + + + + +
              Relevancia¿Qué tan importante es la educación en +línea para la práctica profesional de los estudiantes?
              Reflexión¿La educación en línea estimula el +pensamiento crítico reflexivo en los estudiantes?
              Interactividad¿Qué tanto se integran los estudiantes en el +diálogo educativo en línea?
              Soporte de profesores¿Qué tan bien habilitan los profesores a sus +alumnos para participar en la educación en línea?
              Soporte de los colegasEl soporte proveído por los otros estudiantes, +¿es sensible y estimulante?
              Interpretación Los estudiantes y los profesores, ¿tienen un +apreciación correcta del otro a través de la +comunicación en línea?
              -

              Ikasketaren ikuspegi dinamikoa indartzen duen jakintzaren teoria berri bat - dago: gizarte konstruktibismoa, zeinek ikaslea kontzeptualizatzile dimaiko - gisa ikasketa ingurune interaktibo batean azaltzen duen. Gizarte konstruktibismoa - epistemologia edo jakinza modu bat da, non ikasleak erreflexiboki elkarlanean - diharduten ulermen berriak elkarrekin osatzeko, bereziki beraien esperientzia - pertsonalean oinarritutako elkarri egindako galderen bidez.

              -

              Elkarlan honen ardatza ikasleen komunikazio gaitasunaren garapena da, hau - da, bai irakasleekin, bai kideekin diskurtso kritiko bat izateko gaitasuna. - Diskurtso honen ezaufarriak elkar ulermenari begira doan izaera enpatikoa, - eta aldez aurretik onartutakoak aztertzeko izaera kritikoa dira.

              -

              COLLES inkestak ikasleak ikasketa prozesu dinamiko batean sartzeko Webaren - interaktibitate gaitasuna norarte aprobetxatu dezakezun aztertzea baimentzeko - diseinatu da.

              -

              (Informazio hau COLLES orritik hartu da. COLLES eta bere egileei buruz infoirmazio - gehiago hemen: http://surveylearning.com/colles/)

              +

              Independientemente de la visión dinámica del +aprendizaje, es una nueva teoría del conocimiento: el +constructivismo social, que asume al estudiante como un +conceptualizador activo dentro del ambiente de aprendizaje social +interactivo. Constructivismo social es una epistemología, o una +forma de conocer, en la cual los estudiantes colaboran reflexivamente +para co-construir nuevo entendimiento, especialmente dentro del +contexto de la interrogación mutua basada en su propia +experiencia.

              +

              Para que se dé esta colaboración es vital el +desarrollo de la capacidad de comunicación, es decir, la +habilidad de integrarse en diálogo abierto y crítico con +sus compañeros y profesores. + + Este diálogo se caracteriza por una +enfática orientación a construir entendimiento +recíproco, y por una actitud crítica frente a los +supuestos que subyacen bajo los exámenes.

              +

              El COLLES se ha diseñado para habilitarlo para monitorear +su capacidad de explotar la capacidad interactiva del Internet para +integrar estudiantes en un ambiente de prácticas educativas +dinámicas.

              +

              +(Esta información se ha adaptado de la página del COLLES. +Si lo desea, puede encontrar más información en: + http://surveylearning.com/colles/)

            - - -
            -

            ATTLS - Attitudes to Thinking and Learning Survey edo Pentsatu eta ikasteko jarreren inkesta

            - - -

            'Ikasketa moduen' teoriak, hasiera batean generoen azterketari zuzendua (Belenky et al., 1986) ikerketa tresna bat jartzen digu eskura kolaborazio ingurune batean diskurtsoaren kalitatea aztertzeko.

            - -

            Attitudes Towards Thinking and Learning Survey (ATTLS) delakoa Galotti et al. (1999) ikerlariak garatutako tresna bat da, pertsona bat zein mailararte lotutako jakintzaduna 'connected knower' (CK) edo banatutako jakintzaduna den 'separate knower' (SK) nehurtzeko.

            - -

            CK handiagodun gizabanakoak ikasketa gehiago gozatu ohi dute, kolaboraziorako joera handiagoa dute, lagunkoiagoak, eta besteen ideiak garatzeko joera gehiagodunak, SK handiagodunak, ordea, kritikoagoak izan ohi dira eta ikasketarako argumentazioaren joera izaten dute.

            - -

            Ikerketen arabera ikasketa estilo hauek elarrekin independienteak direla erakutsi dute (Galotti et al., 1999; Galotti et al., 2001). Are gehiago, ikasketa joeren ispilu bat baino ez dira, ez dute ikasteko gaitasuna edo adimenarekin zerikusirik.

            - -

            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.

            - -

            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.

            - -

            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.

            \ No newline at end of file +
            +

            ATTLS - Attitudes to Thinking and Learning Survey (Encuesta de +Actitud [sobre el] Pensar y Aprender.)

            +
              +

              La teoría de las 'formas de conocer', originaria del campo +de la investigación de género (Belenky et al., 1986) nos +ofrece una herramienta para examinar la calidad del discurso dentro de +un ambiente de colaboración. +

              +

              La Encuesta de Actitud sobre el Pensar y Aprender (ATTLS) es un instrumento desarrollado por Galiotti et +al. (1999) para medir cuánto una persona es un 'conocedor +conectado' (CK, por sus siglas en inglés) o 'conocedor +desconectado' (SK). +

              +

              Las personas con un CK más alto tienden a disfrutar +más el aprendizaje, y a menudo cooperan más, +son congeniales, y tienen más libertad para construir sobre ideas ajenas, +mientras que aquellos con SK más altos tienden a tomar una +actitud de aprendizaje más crítica y argumentativa. +

              +

              Estudios han mostrado que estos dos estilos de aprendizaje son +independientes uno del otro (Galotti et al., 1999; Galotti et al., 2001). +Además, sólo son reflejo de actitudes al +aprendizaje, y no de +las capacidades para aprender ni de capacidades intelectuales. +

              +

              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.

              +

              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.

              +

              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.

              +
            + + diff --git a/lang/eu/help/teachers.html b/lang/eu/help/teachers.html index f5f2d86ab9b..b21dc1a5606 100644 --- a/lang/eu/help/teachers.html +++ b/lang/eu/help/teachers.html @@ -1,16 +1,17 @@ -

            Irakasleak

            +

            Profesores

            -

            Orri honetan sistema administratzaileak "Irakasle" izendatutako erabiltzaileen zerrenda ikusi dezakezu.

            +

            Esta página muestra la lista de los profesores asignados, por el administrador +como profesores en este curso. -

            Formulario hau erabili dezakezu erabiltzaile bakoitzari rol bat (titulu bat) emateko, - "Irakasle", "tutorea" edo "Laguntzailea" adibidez. Informazio hau Gunearen ikastaroen zerrendan agertuko da eta ikastaroaren partaide zerrendan These. - Rola hutsik uzten baduzu irakasleak izendatzeko lehenetsitako hitza erabiliko da - (Ikastaroaren ezarpenetan zehaztu duzuna).

            +

            Puede utilizar esta forma para asignar un nombre (título) a cada persona, +como "Profesor", "Instructor", "Asistente", etc. Este título aparecerá en +la página del curso y en la lista de participantes. Si lo deja en blanco, +se utilizará la palabra elegida en la configuración del curso. -

            Zerrenda hau ordenatu dezakezu (Irakasle nagusia goi goian jartzeko adibidez). - Horretarako zenbakiak aukeratu "Ordena" zutabeko menuetan. - "Aldaketak gorde" zapaltzerakoan orden berria ikusiko duzu.

            +

            También se puede asignar un orden de aparición de los profesores. +Seleccione los números de los respectivos menús desplegables y oprima "Guardar +cambios". -

            OHARRA: Irakaslea "Ezkutatu" aukeratzen baduzu. - Irakaslea EZ DA BISTARATUKO ikastaroen zerrendan edo ikastaroaren partaide. - Ikasleengandik "Ezkutatuta" egongo dira (foroetara mezurik bidaltzen ez duten bitartean).

            +

            NOTA: La categoría "oculto" sirve para asignar permisos de profesor +a un participante sin que éste aparezca como profesor (a excepción de los mensajes, +etc. que coloque). diff --git a/lang/eu/help/text.html b/lang/eu/help/text.html index bf93ca8379b..2912f12fe4b 100644 --- a/lang/eu/help/text.html +++ b/lang/eu/help/text.html @@ -1,23 +1,23 @@ -

            Nola idatzi testua

            +

            Nola idatzi testua

            Mooddle-n testua idazteko normalean egingo zenukeen moduan egin dezakezu, baina baduzu aurpegierak (emotikonoak), interneteko helbideak eta HTML etiketa batzuk erabiltzeko aukera. -

            Aurpegierak (emotikonoak)

            -
              +

              Aurpegierak (emotikonoak)

              +
                -

                Ikonotxo hauek zure testuan sartzeko nahikoa da dagokion kodea idaztea. Albo +

                Ikonotxo hauek zure testuan sartzeko nahikoa da dagokion kodea idaztea. Albo batetik baegiratuta  giza aurpegiaren itxura duten kode hauen bidez nork bere gogo-aldartea adierazten du.  -

                +

                - + @@ -126,53 +126,53 @@ bere gogo-aldartea adierazten du. 
                irrifarra :-)
                -
              +
            -

            Helbideak

            - +

            Helbideak

            + -

            HTML etiketak

            +

            HTML etiketak

              HTML etiketen artean ondokoak erabil ditzakezu zure testuetan. - +
              - - - - - - diff --git a/lang/eu/help/textformat.html b/lang/eu/help/textformat.html index d6573354cf4..341e359bccc 100644 --- a/lang/eu/help/textformat.html +++ b/lang/eu/help/textformat.html @@ -1,35 +1,29 @@ -

              Testuari formatua eman

              +

              Testuari formatua eman

              -

              Testuren bat idazten duzunean, bi aukera izan ditzakezu formatua emateko, erabiltzen duzun nabigatzailearen arabera.

              +

              Testuren bat idazten duzunean, bi aukera izan ditzakezu formatua emateko, erabiltzen duzun nabigatzailearen arabera. -

              Oro har, zeuk ez duzu honekin kezkatu behar, dena espero bezala ibiliko da-eta.

              1. -Formatu automatikoa

              +

              Oro har, zeuk ez duzu honekin kezkatu behar, dena espero bezala ibiliko da-eta.

              1. +Formatu automatikoa

              -
                -

                Ohiko komunikaziorako aukera onena da hau. Testua normal idatzi, ePosta mezu bat -idatzi behar bazenu bezala.

                -

                Zure testua gordetzerakoan, Moodlek automatikoaki -ondoko aldaketak egngo ditu.

                -

                http://moodle.org edo -www.moodle.com motako helbideak lotura bihurtuko ditu.

                Lerro-jauzia -mantenduko dira, eta linea hutsak parrafo berria ezarriko du.

                -

                :-) bezalako -aurpegierak dagozkion grafikoa bihurtuko dira.

                -

                HTML kodea ere txerta dezakezu eta errespetatuko da.

                Informazio gehiago -formatu automatioari buruz.

                -
              +
                +

                Ohiko komunikaziorako aukera onena da hau. Testua normal idatzi, ePosta mezu bat +idatzi behar bazenu bezala.

                Zure testua gordetzerakoan, Moodlek automatikoaki +ondoko aldaketak egngo ditu.

                http://moodle.org edo +www.moodle.com motako helbideak lotura bihurtuko ditu.

                Lerro-jauzia +mantenduko dira, eta linea hutsak parrafo berria ezarriko du.

                :-) bezalako +aurpegierak dagozkion grafikoa bihurtuko dira.

                HTML kodea ere txerta dezakezu eta errespetatuko da.

                Informazio gehiago +formatu automatioari buruz.

                +
              -

              2. HTML formatua

              +

              2. HTML formatua

              - diff --git a/lang/eu/help/uploadusers.html b/lang/eu/help/uploadusers.html index e582dcad194..85cbaefcf88 100644 --- a/lang/eu/help/uploadusers.html +++ b/lang/eu/help/uploadusers.html @@ -12,10 +12,11 @@ de texto, entonces necesitar
            • Cada línea del archivo contine un registro
            • Cada registro es una serie de datos separados por comas
            • El primer registro del archivo es especial, y contiene una lista de nombres - de campos. Este registro define el formato del resto del archivo.
            • + de campos. Este registro define el formato del resto del archivo.

              Campos requeridos: Estos campos deben estar presentes en el primer registro, y deben definirse para cada usuario.

              +

              username, password, firstname, lastname, email

              Campos por defecto: Estos son opcionales -si no están presentes, se tomarán los valores del administrador primario

              @@ -34,6 +35,6 @@ primer registro, y deben definirse para cada usuario.

              Aquí hay un ejemplo de un archivo válido:

              -

              username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1
              -juanb, secreto, Juan, Benítez, janb@algo.edu, en, 3663737, 1, Intro101, Seccion1
              +

              username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1
              +juanb, secreto, Juan, Benítez, janb@algo.edu, en, 3663737, 1, Intro101, Seccion1
              Saraf, sercreta, Sara, Fernández, sarara@alomas.edu, es, 6736733, 0, Avanzado202, Seccion3

              diff --git a/lang/eu/help/wiki.html b/lang/eu/help/wiki.html index 90bb966d107..e17540c6a62 100644 --- a/lang/eu/help/wiki.html +++ b/lang/eu/help/wiki.html @@ -93,7 +93,7 @@ se convertir

              Enlace a los módulos de Moodle

              Si conoce el número id (ver ?id=nn al final de la dirección del módulo) y el nombre del mismo, es posible enlazar directamente al mismo con la siguiente sintaxis: -

              +

              Nombre:nn(Texto descriptivo)

              Por ejemplo, resource:36(Mi nueva página) forum:10(ir al foro)

              diff --git a/lang/eu/help/wiki/checklinks.html b/lang/eu/help/wiki/checklinks.html index 882359cb961..ca505ca1469 100644 --- a/lang/eu/help/wiki/checklinks.html +++ b/lang/eu/help/wiki/checklinks.html @@ -1,4 +1,4 @@ -

              Comprobar enlaces

              -

              Esta herramienta controla si están disponibles todos los enlaces http:// y luego +

              Comprobar enlaces

              +

              Esta herramienta controla si están disponibles todos los enlaces http:// y luego vuelve a guardar la página wiki marcando los vínculos rotos a fin de poder editarlos - más fácilmente.

              + más fácilmente.

              diff --git a/lang/eu/help/wiki/ewikiacceptbinary.html b/lang/eu/help/wiki/ewikiacceptbinary.html index d346de2f13d..bdacda376c9 100644 --- a/lang/eu/help/wiki/ewikiacceptbinary.html +++ b/lang/eu/help/wiki/ewikiacceptbinary.html @@ -1,13 +1,13 @@ -

              Permitir archivos binarios

              +

              Permitir archivos binarios

              -

              Si usted permite contenido binario (e.g., imágenes), tiene dos posibilidades:
              -

                -
              1. Puede subir y utilizar imágenes en páginas wiki. Cuando edite una página, se mostrará un formulario +

                Si usted permite contenido binario (e.g., imágenes), tiene dos posibilidades:
                +

                  +
                1. Puede subir y utilizar imágenes en páginas wiki. Cuando edite una página, se mostrará un formulario para subir imágenes al servidor. Tras una subida exitosa, se muestra un código de imagen que usted podrá - incrustar en sus páginas utilizando corchetes. Por ejemplo: [internal://myimage.gif].
                2. + incrustar en sus páginas utilizando corchetes. Por ejemplo: [internal://myimage.gif]. -
                3. Puede adjuntar archivos a una Página Wiki que podrán ser mostrados por la acción attachments. - El tamaño está limitado al ajuste que se haya hecho en Moodle.
                4. -
                -

                +
              2. Puede adjuntar archivos a una Página Wiki que podrán ser mostrados por la acción attachments. + El tamaño está limitado al ajuste que se haya hecho en Moodle.
              3. +
              +

              diff --git a/lang/eu/help/wiki/htmlmode.html b/lang/eu/help/wiki/htmlmode.html index 0d0994244ff..d56af9b661c 100644 --- a/lang/eu/help/wiki/htmlmode.html +++ b/lang/eu/help/wiki/htmlmode.html @@ -1,6 +1,6 @@ -

              Modo HTML

              +

              Modo HTML

              -

              Usted dispone de las siguientes posibilidades: +

              Usted dispone de las siguientes posibilidades:

              No HTML
              No usa marcas HTML. El formateado se realiza mediante PalabrasWiki ('WikiWords'). Los filtros trabajan en este modo.
              @@ -10,4 +10,4 @@
              No se usan PalabrasWiki ('WikiWords'), sólo HTML. Esta opción permite el uso del editor HTML.
              -

              \ No newline at end of file +

              \ No newline at end of file diff --git a/lang/eu/help/wiki/initialcontent.html b/lang/eu/help/wiki/initialcontent.html index 8b2db2cc48d..624dd581b3f 100644 --- a/lang/eu/help/wiki/initialcontent.html +++ b/lang/eu/help/wiki/initialcontent.html @@ -1,8 +1,8 @@ -

              Rellenar contenido inicial

              +

              Rellenar contenido inicial

              -

              Éste es el contenido con el que inicialmente se puede rellenar el Wiki.

              -

              Si usted desea su propio contenido inicial, puede crearlo en archivos de texto, y subirlo al directorio en el +

              Éste es el contenido con el que inicialmente se puede rellenar el Wiki.

              +

              Si usted desea su propio contenido inicial, puede crearlo en archivos de texto, y subirlo al directorio en el área de archivos del curso. Luego seleccione uno de los archivos como página inicial. Todas las páginas de ese directorio se convertirán en contenido para cada nueva estructura wiki creada para este wiki, y luego la página seleccionada será la primera página. -

              \ No newline at end of file +

              \ No newline at end of file diff --git a/lang/eu/help/wiki/mods.html b/lang/eu/help/wiki/mods.html index 1ecaa1cbefd..90a5693ac4d 100644 --- a/lang/eu/help/wiki/mods.html +++ b/lang/eu/help/wiki/mods.html @@ -1,14 +1,14 @@ -

               Wikis

              -
                -

                Un Wiki posibilita la creación colectiva de documentos en un lenguaje simple de marcas utilizando un navegador web.

                +

                 Wikis

                +
                  +

                  Un Wiki posibilita la creación colectiva de documentos en un lenguaje simple de marcas utilizando un navegador web.

                  -

                  "Wiki wiki" significa en hawaiano "super-rápido", y es precisamente la rapidez para crear y actualizar páginas +

                  "Wiki wiki" significa en hawaiano "super-rápido", y es precisamente la rapidez para crear y actualizar páginas uno de los aspectos definitorios de la tecnología wiki. Generalmente, no se hacen revisiones previas antes de aceptar las modificaciones, y la mayoría de los wikis están abiertos al público general o al menos a todas las - personas que tienen acceso al servidor wiki.

                  + personas que tienen acceso al servidor wiki.

                  -

                  El módulo Wiki de Moodle permite a los participantes trabajar juntos en páginas web para añadir, expandir o - modificar su contenido. Las versiones antiguas nunca se eliminan y pueden restaurarse.

                  +

                  El módulo Wiki de Moodle permite a los participantes trabajar juntos en páginas web para añadir, expandir o + modificar su contenido. Las versiones antiguas nunca se eliminan y pueden restaurarse.

                  -

                  Este módulo se basa en Erfurt Wiki.

                  -
                +

                Este módulo se basa en Erfurt Wiki.

                +
              diff --git a/lang/eu/help/wiki/removepages.html b/lang/eu/help/wiki/removepages.html index a3d7e4edca6..e97f8221c5a 100644 --- a/lang/eu/help/wiki/removepages.html +++ b/lang/eu/help/wiki/removepages.html @@ -1,3 +1,3 @@ -

              Eliminar páginas

              -

              Esta función permite eliminar páginas wiki. Se efectúa una comprobación rápida y se muestran las páginas que contienen errores.

              -

              Por favor, tenga cuidado y piénselo dos veces antes de eliminar una página. Normalmente no es necesario hacerlo.

              +

              Eliminar páginas

              +

              Esta función permite eliminar páginas wiki. Se efectúa una comprobación rápida y se muestran las páginas que contienen errores.

              +

              Por favor, tenga cuidado y piénselo dos veces antes de eliminar una página. Normalmente no es necesario hacerlo.

              diff --git a/lang/eu/help/wiki/revertauthorfieldpattern.html b/lang/eu/help/wiki/revertauthorfieldpattern.html index 33e0dc89333..77b156a390f 100644 --- a/lang/eu/help/wiki/revertauthorfieldpattern.html +++ b/lang/eu/help/wiki/revertauthorfieldpattern.html @@ -1,5 +1,5 @@ -

              Autor para revertir cambios masivos

              -

              +

              Autor para revertir cambios masivos

              +

              Debe ser una cadena fija (no se puede usar * o regex), para mejor utilizar la dirección IP o el nombre del servidor de los atacantes. -

              +

              diff --git a/lang/eu/help/wiki/revertpages.html b/lang/eu/help/wiki/revertpages.html index 0018b0d0855..7acead9635f 100644 --- a/lang/eu/help/wiki/revertpages.html +++ b/lang/eu/help/wiki/revertpages.html @@ -1,3 +1,3 @@ -

              Revertir Páginas

              +

              Revertir Páginas

              -

              Si alguien hace un revoltijo de muchas páginas en su Wiki, usted puede revertir automáticamente tales cambios eliminando todas las versiones de la página que contienen una determinada cadena en el campo {autor} (normalmente la dirección IP o el nombre del servidor)

              +

              Si alguien hace un revoltijo de muchas páginas en su Wiki, usted puede revertir automáticamente tales cambios eliminando todas las versiones de la página que contienen una determinada cadena en el campo {autor} (normalmente la dirección IP o el nombre del servidor)

              diff --git a/lang/eu/help/wiki/setpageflags.html b/lang/eu/help/wiki/setpageflags.html index 59ca9095ea8..0ce217a357d 100644 --- a/lang/eu/help/wiki/setpageflags.html +++ b/lang/eu/help/wiki/setpageflags.html @@ -1,7 +1,7 @@ -

              Ajustar indicadores ('flags') de la página

              -

              Los indicadores ('flags') se asignan a una página wiki y permiten cambiar el tipo de comportamiento.

              +

              Ajustar indicadores ('flags') de la página

              +

              Los indicadores ('flags') se asignan a una página wiki y permiten cambiar el tipo de comportamiento.

              -

              Descripción de los 'flags':

              +

              Descripción de los 'flags':

              HTML etiketa Emaitza
              <b> Testu lodia </b> + <B> Testu lodia </B> Testu lodia
              <i> Testu etzana </i> + <I> Testu etzana </I> Testu etzana
              <u> Azpimarratutako testua </u> + <U> Azpimarratutako testua </U> Azpimarratutako testua
              <font size="1"> Txikia </font> - Txikia + <FONT SIZE=1> Txikia </FONT> + Txikia
              <font size="4"> Handia </font> - Handia + <FONT SIZE=4> Handia </FONT> + Handia
              <font color="green"> Adibidea </font> + <FONT COLOR=green> Adibidea </FONT> Adibidea
              <UL><LI>bat <LI>bi </UL>
                -
              • bat
              • -
              • bi
              • +
              • bat +
              • bi
              diff --git a/lang/eu/help/wiki/strippages.html b/lang/eu/help/wiki/strippages.html index f2acf647be0..a6218bdcb71 100644 --- a/lang/eu/help/wiki/strippages.html +++ b/lang/eu/help/wiki/strippages.html @@ -1,3 +1,3 @@ -

              Depurar páginas

              +

              Depurar páginas

              -

              Esta función depura las versiones antiguas de todas las páginas almacenadas en la base de datos y mantiene sólo las últimas versiones.

              +

              Esta función depura las versiones antiguas de todas las páginas almacenadas en la base de datos y mantiene sólo las últimas versiones.

              diff --git a/lang/eu/help/wiki/studentadminoptions.html b/lang/eu/help/wiki/studentadminoptions.html index 3d703594c19..bb4dd5ef7d0 100644 --- a/lang/eu/help/wiki/studentadminoptions.html +++ b/lang/eu/help/wiki/studentadminoptions.html @@ -1,4 +1,4 @@ -

              Opcines de administración de estudiantes

              +

              Opcines de administración de estudiantes

              -

              Ciertas opciones de administración pueden estar activadas ('on') o desactivadas ('off') para los estudiantes. Cuando están activadas, estas opciones sólamente afectan a los wikis que pueden ser editados por los estudiantes. Cuando están desactivadas, no aparecerán en el menú del administrador. -

              +

              Ciertas opciones de administración pueden estar activadas ('on') o desactivadas ('off') para los estudiantes. Cuando están activadas, estas opciones sólamente afectan a los wikis que pueden ser editados por los estudiantes. Cuando están desactivadas, no aparecerán en el menú del administrador. +

              diff --git a/lang/eu/help/wiki/wikilinkoptions.html b/lang/eu/help/wiki/wikilinkoptions.html index fa4f91eb9b2..bee772097af 100644 --- a/lang/eu/help/wiki/wikilinkoptions.html +++ b/lang/eu/help/wiki/wikilinkoptions.html @@ -1,15 +1,15 @@ -

              Opciones de auto-enlace wiki

              +

              Opciones de auto-enlace wiki

              -

              En ciertas situaciones uster puede no desear enlaces automáticos basados en palabras CamelCase. +

              En ciertas situaciones uster puede no desear enlaces automáticos basados en palabras CamelCase. En este caso, marque esta casilla para desactivar los enlaces CamelCase.

              ADVERTENCIA -- CamelCase es una característica estándar de wiki, y su desactivación puede ocasionar que otros wikis importados no funcionen correctamente. Utilice esta característica solamente si usted está absolutamente seguro de que no quiere enlaces CamelCase. -

              +

              NOTA -- CamelCase (a veces traducido al español con el extrañísimo nombre de CameLlúsculas) es un caso particular de escritura consistente en combinar letras mayúsculas con minúsculas, como si las mayúsculas fueran la joroba de un camello. -

              \ No newline at end of file +

              \ No newline at end of file diff --git a/lang/eu/help/wiki/wikiname.html b/lang/eu/help/wiki/wikiname.html index c9d9f9453d5..d5c02730e07 100644 --- a/lang/eu/help/wiki/wikiname.html +++ b/lang/eu/help/wiki/wikiname.html @@ -1,9 +1,9 @@ -

              Nombre de página inicial en wiki

              -

              +

              Nombre de página inicial en wiki

              +

              Si desea que el nombre de la primera página wiki sea distinto del nombre wiki, puede especificarlo aquí. Este nombre se convertirá en la primera página del wiki -para cada nuevo ejemplo de este wiki que se crée.

              -

              +para cada nuevo ejemplo de este wiki que se crée.

              + Si deja este campo en blanco, el nombre de la página inicial será el nombre wiki, a menos que usted seleccione una página en el campo 'página inicial'. -

              +

              diff --git a/lang/eu/help/wiki/wikitype.html b/lang/eu/help/wiki/wikitype.html index 541cdc76d9c..7169e3a2bf2 100644 --- a/lang/eu/help/wiki/wikitype.html +++ b/lang/eu/help/wiki/wikitype.html @@ -1,11 +1,11 @@ -

              Permitir que los estudiantes contribuyan al wiki

              -

              -

                +

                Permitir que los estudiantes contribuyan al wiki

                +

                +

                • Cualquier profesor puede en todo momento editar cualquier wiki de su curso
                • Hay tres tipos de wiki: Profesor, Curso/Grupo, Estudiante
                • La actividad tiene tres estados posibles: "Sin Grupos" "Grupos Separados" y "Grupos Visibles"
                • Para todos los grupos se rellena el mismo contenido inicial
                • -
                +
              Así, tenemos la siguiente matriz:
              TXTLa página contiene texto.
              BINLa página contiene datos binarios.
              @@ -35,5 +35,5 @@ As
              -

              +

              diff --git a/lang/eu/help/wiki/wikiusage.html b/lang/eu/help/wiki/wikiusage.html index 5113ac47f50..b27ff73f727 100644 --- a/lang/eu/help/wiki/wikiusage.html +++ b/lang/eu/help/wiki/wikiusage.html @@ -1,25 +1,28 @@ -

              Uso de Wiki

              -

              Wiki es una plataforma que permite trabajar en equipo para construir páginas web. Los principios son simples. -

              +

              Uso de Wiki

              +

              +
              + +Wiki es una plataforma que permite trabajar en equipo para construir páginas web. Los principios son simples. +

              • Se escribe y se guarda un texto.
              • Más tarde, otra persona lee el texto y piensa que podrían hacerse algunas correcciones, o que estaría bien añadir algo. Para hacerlo, selecciona 'Edición' y hace los cambios en la página.
              • -
              • Tras guardar la nueva versión, ésta queda disponible para todos.
              • +
              • Tras guardar la nueva versión, ésta queda disponible para todos.


              -

              En un wiki es también fácil añadir páginas o enlaces a páginas existentes. -

              +En un wiki es también fácil añadir páginas o enlaces a páginas existentes. +

              • Los enlaces se crean con una PalabraWiki ('WikiWord'). Se trata de una palabra con al menos dos letras mayúsculas. Si ya existe una página con este nombre, se creará el enlace automáticamente; en caso contrario, se mostrará con un signo de interrogación.
              • Al hacer clic en este signo de interrogación se abrirá una nueva página en blanco con ese nombre, lista para ser editada.
              -

              +

              -


              -Reglas de formato Wiki

              +


              +Reglas de formato Wiki

              @@ -88,9 +91,9 @@ Reglas de formato Wiki

            Tablas con |

            -| simplemente encierre | texto separado por el | carácter |
            -| para construir | una estructura tabular |
            -| normalmente los navegadores | pasan por alto las celdas | vacías |
            +| simplemente encierre | texto separado por el | carácter |
            +| para construir | una estructura tabular |
            +| normalmente los navegadores | pasan por alto las celdas | vacías |

            @@ -106,5 +109,5 @@ Por favor, deje siempre una l

            Lecturas adicionales

            -Existen más posibilidades de formatear mediante Wiki. Por favor, consulte la Página de Inicio de Erfurt Wiki para más información. +Existen más posibilidades de formatear mediante Wiki. Por favor, consulte la Página de Inicio de Erfurt Wiki para más información. diff --git a/lang/eu/help/workshop/addingacomment.html b/lang/eu/help/workshop/addingacomment.html index d0f4034b648..a6b63e04dc4 100644 --- a/lang/eu/help/workshop/addingacomment.html +++ b/lang/eu/help/workshop/addingacomment.html @@ -1,18 +1,18 @@ -

            Agregar un comentario

            +

            Agregar un comentario

            -

            Pueden agregarse comentarios a una evaluación para: +

            Pueden agregarse comentarios a una evaluación para: -

              -
            1. Añadir explicación o clarificación adicional a la evaluación (por parte del -estudiante que evaluó el trabajo)
            2. -
            3. Solicitar información sobre las declaraciones hechas en la evaluación (por parte del estudiante cuyo +
                +
              1. Añadir explicación o clarificación adicional a la evaluación (por parte del +estudiante que evaluó el trabajo) +
              2. Solicitar información sobre las declaraciones hechas en la evaluación (por parte del estudiante cuyo trabajo está siendo evaluado); -
              3. Tratar de resolver las dificultades que pueden haber surgido durante la discusión -sobre la evaluación (por parte del profesor);
              4. -
              -

              El objetivo de los comentarios es tratar de llegar a un acuerdo sobre la +

            4. Tratar de resolver las dificultades que pueden haber surgido durante la discusión +sobre la evaluación (por parte del profesor); +
            +

            El objetivo de los comentarios es tratar de llegar a un acuerdo sobre la evaluación actual, o persuadir al asesor de que revise su evaluación. Esta -discusión debería emprenderse de un modo razonable.

            +discusión debería emprenderse de un modo razonable. -

            Si el trabajo es reevaluado, se desechan los comentarios anteriores y no se mostrarán con la nueva evaluación. -

            \ No newline at end of file +

            Si el trabajo es reevaluado, se desechan los comentarios anteriores y no se mostrarán con la nueva evaluación. +

            \ No newline at end of file diff --git a/lang/eu/help/workshop/agreeassessments.html b/lang/eu/help/workshop/agreeassessments.html index aed89a712b6..42bde599f28 100644 --- a/lang/eu/help/workshop/agreeassessments.html +++ b/lang/eu/help/workshop/agreeassessments.html @@ -1,30 +1,30 @@ -

            Aceptación de las evaluaciones

            +

            Aceptación de las evaluaciones

            -

            Una tarea de taller puede tener cualquiera de estas características:

            +

            Una tarea de taller puede tener cualquiera de estas características: -

              -
            1. En la fase de envío y evaluación, cuando los estudiantes ven que en las +
                +
              1. En la fase de envío y evaluación, cuando los estudiantes ven que en las evaluaciones hechas por otros compañeros no se hace ningún comentario por parte de los que enviaron el trabajo a los estudiantes que hicieron la evaluación. Puede haber feedback del profesor si éste prefiere calificar las evaluaciones de estudiante y luego las calificaciones y comentarios del profesor están disponibles para ambos (v. g., el estudiante cuyo trabajo es evaluado y el que realizó la evaluación). Habrá, sin embargo, sólo un comentario o -retroalimentación entre los compañeros en cualquiera de las partes del trabajo.
              2. +retroalimentación entre los compañeros en cualquiera de las partes del trabajo. -
              3. En la fase de envío y evaluación, donde los estudiantes ven las +
              4. En la fase de envío y evaluación, donde los estudiantes ven las evaluaciones hechas por otros y se les permite comentar estas evaluaciones. Pueden estar o no de acuerdo con la evaluación realizada por los compañeros. Si están de acuerdo, los datos de la evaluación se utilizan en los cálculos finales. Si no están de acuerdo con la evaluación, al estudiante que la ha hecho se le da la oportunidad de revisarla. La revisión del desacuerdo puede continuar hasta que se llegue a un acuerdo o se termine el plazo. Una calificación que esté en "discusión" cuando el plazo venza no será usada en los cálculos finales. -Esto ofrece una doble vía para comentar entre compañeros cada parte del trabajo.
              5. -
              -

              Si se escoge el segundo método de trabajar, existe la opción de desactivar la visión de calificaciones. Es decir, si se elige la opción de "Esconder +Esto ofrece una doble vía para comentar entre compañeros cada parte del trabajo. +

            +

            Si se escoge el segundo método de trabajar, existe la opción de desactivar la visión de calificaciones. Es decir, si se elige la opción de "Esconder Calificaciones" sólo se mostrarán los comentarios en la evaluación al estudiante que está siendo valorado. Las calificaciones se muestran sólo después de alcanzar el acuerdo (en los comentarios). Nota: Esta opción es efectiva cuando se requiere acuerdo en las evaluaciones. -

            +

            diff --git a/lang/eu/help/workshop/analysisofassessments.html b/lang/eu/help/workshop/analysisofassessments.html index 5dd5a121dac..a5e28e8b3e4 100644 --- a/lang/eu/help/workshop/analysisofassessments.html +++ b/lang/eu/help/workshop/analysisofassessments.html @@ -1,22 +1,22 @@ -

            Análisis de las Evaluaciones

            -

            Este análisis se refiere a las evaluaciones realizadas sobre los ejemplos, +

            Análisis de las Evaluaciones

            +

            Este análisis se refiere a las evaluaciones realizadas sobre los ejemplos, así como a aquellas que se han hecho durante la fase de evaluación de la tarea por parte de los compañeros. Pretende seleccionar las mejores evaluaciones del conjunto de las realizadas por profesor y compañeros. Estas evaluaciones -"buenas" se utilizan luego para el cálculo de la calificación final.

            -

            Este análisis se hace con más facilidad cuando se dispone de evaluaciones +"buenas" se utilizan luego para el cálculo de la calificación final.

            +

            Este análisis se hace con más facilidad cuando se dispone de evaluaciones hechas por el profesor. Tales evaluaciones pueden actuar como una referencia contra la cual se pueden juzgar las evaluaciones de los estudiantes. El profesor -no necesita evaluar cada ejemplo y cada envío, pero para que el análisis +no necesita evaluar cada ejemplo y cada envío, pero para que el análisis resulte significativo es mejor disponer de más evaluaciones realizadas por el profesor que el número promedio de evaluaciones realizadas por cada estudiante. Y mientras más evaluaciones realice el profesor, más podrá éste confiar en los -resultados del análisis.

            -

            El análisis normalmente se lleva a cabo un número de veces, cada una de ellas +resultados del análisis.

            +

            El análisis normalmente se lleva a cabo un número de veces, cada una de ellas cambiando una o más de las opciones. El análisis es controlado por las tres -opciones que aparecen en la parte superior de la página.

            -
              -
            1. La Carga de las Evaluaciones del Profesor establece la ponderación dada a +opciones que aparecen en la parte superior de la página.

              +
                +
              1. La Carga de las Evaluaciones del Profesor establece la ponderación dada a las evaluaciones del profesor comparada con las de los estudiantes en el estadio de análisis de errores. Si el profesor quiere que su propia estrategia de calificación domine la forma en que los estudiantes califican los envíos, @@ -32,13 +32,13 @@ opciones que aparecen en la parte superior de la p superior de la tabla). Mientras más numerosas sean las evaluaciones del profesor disponibles, más probable será que esta opción no deba usarse para forzar al profesor a figurar en la cabecera de la tabla. Note que esta opción - no aplica un factor de ponderación a las evaluaciones del profesor + no aplica un factor de ponderación a las evaluaciones del profesor cuando éstas se utilizan en el cálculo de las calificaciones finales. En ese cálculo las evaluaciones del profesor tienen el mismo peso que las de los estudiantes. Así, por ejemplo, si el envío de un estudiante es calificado con 41% por el profesor y con 45% y 55% por sus compañeros, la calificación final - de ese trabajo será (41% + 45% + 55%) / 3, esto es, 47%.
              2. -
              3. El Peso para la Calificación de las Evaluaciones se usa en el cálculo de + de ese trabajo será (41% + 45% + 55%) / 3, esto es, 47%. +
              4. El Peso para la Calificación de las Evaluaciones se usa en el cálculo de la Calificación Final. Se utiliza una simple fórmula para calcular el "Desempeño en Calificación" del estudiante. Es la proporción de evaluaciones "buenas" que el estudiante ha hecho comparadas con el número máximo de @@ -53,20 +53,20 @@ opciones que aparecen en la parte superior de la p tiene un peso de 1. Así, si se ajusta esta opción, digamos, a 0.5, esto significa que las dos calificaciones se añaden una a la otra en una proporción 0.5:1 (i.e., 33%) del desempeño en calificación y 66% de la calificación del - trabajo enviado.
              5. -
              6. El Porcentaje de Evaluaciones a desechar determina el número de las + trabajo enviado. +
              7. El Porcentaje de Evaluaciones a desechar determina el número de las evaluaciones que serán excluidas en el momento de calcular las calificaciones - finales. Este número puede ajustarse de dos formas.
              8. -
                  -
                • Puesto que la forma en que se calcula el Desempeño en Calificación para + finales. Este número puede ajustarse de dos formas. +
                    +
                  • Puesto que la forma en que se calcula el Desempeño en Calificación para cada estudiante podría, si evaluaran todo el trabajo que se les ha encomendado, alcanzar las marcas totales (para este elemento) en el caso de que no se deseche ninguna evaluación. Si el profesor desea tener una calificación promedio más razonable, el ajustar esta opción al 30% resultaría en un Desempeño en Calificación de aproximadamente 70% (de nuevo en el caso de que todos los estudiantes calificaran todas las evaluaciones - que se les encomendaran)
                  • -
                  • Alternativamente, el número de evaluaciones a desechar podría ajustarse + que se les encomendaran) +
                  • Alternativamente, el número de evaluaciones a desechar podría ajustarse de modo que las restantes evaluaciones dieran como resultado que los Errores Promedio se restringieran a algún valor razonable. Estos valores son los porcentajes que aparecen en la cuarta columna de la Tabla de Error. Por @@ -74,8 +74,8 @@ opciones que aparecen en la parte superior de la p pudieran situarse dentro de un rango del 20%. En ese caso, se repite el análisis un número de veces ajustando el número de evaluaciones a desechar, hasta que todas las cifras de la columna se sitúen dentro de un límite - particular.
              -

              Además de la Tabla de Error el análisis lista las calificaciones de todas las + particular.

            +

            Además de la Tabla de Error el análisis lista las calificaciones de todas las evaluaciones y las calificaciones finales otorgadas a los estudiantes. Esta tabla debería inspeccionarse con el fin de comprobar si los resultados son razonables. En particular, si se desechan muchas evaluaciones, entonces algunos @@ -87,15 +87,15 @@ enviados sin evaluar y el profesor no desea que disminuya el n evaluaciones desechadas, entonces tales trabajos deberían ser evaluados por el profesor, y el análisis debería repetirse. Es importante que todos los envíos sean evaluados al menos una vez en la fase final del análisis, esto es, cuando -se calculan las calificaciones finales.

            -

            Existe un equilibrio entre el número de evaluaciones desechadas y la +se calculan las calificaciones finales.

            +

            Existe un equilibrio entre el número de evaluaciones desechadas y la calificación final global. Mientras más evaluaciones se desechen, más bajas tienden a ser las calificaciones finales. Sin embargo, si las evaluaciones -pobres no se desechan, entonces los estudiantes pueden quejarse acerca de +pobres no se desechan, entonces los estudiantes pueden quejarse acerca de la calidad de las evaluaciones que determinan la calificación de su trabajo. Suponiendo que se disponga de suficientes evaluaciones realizadas por el profesor para dominar el análisis sin forzar demasiado, parece razonable -desechar entre el 15% y el 30% de las evaluaciones.

            -

            Note que este análisis consume mucho tiempo puesto que implica un proceso +desechar entre el 15% y el 30% de las evaluaciones.

            +

            Note que este análisis consume mucho tiempo puesto que implica un proceso iterativo. Es de esperar, pues, que se produzcan retrasos más o menos -prolongados.

            +prolongados.

            diff --git a/lang/eu/help/workshop/anonymous.html b/lang/eu/help/workshop/anonymous.html index 70fc429a370..3bd52d6b7fe 100644 --- a/lang/eu/help/workshop/anonymous.html +++ b/lang/eu/help/workshop/anonymous.html @@ -1,13 +1,13 @@ -

            Calificar Anónimamente

            +

            Calificar Anónimamente

            -

            Los alumnos pueden evaluar anónimamente una tarea. En ese caso no se muestran +

            Los alumnos pueden evaluar anónimamente una tarea. En ese caso no se muestran nombres ni fotos de los estudiantes que efectúan la evaluación. Sólo se muestra el nombre del archivo que se envió para identificar las partes del trabajo que se -están calificando.

            +están calificando. -

            Cuando un compañero no es calificado anónimamente, las partes del trabajo son +

            Cuando un compañero no es calificado anónimamente, las partes del trabajo son mostradas con nombre (y foto) de los estudiantes que enviaron el trabajo. -Esto puede suponer un sesgo en las calificaciones.

            +Esto puede suponer un sesgo en las calificaciones. -

            Note que el profesor nunca califica anónimamente. -

            +

            Note que el profesor nunca califica anónimamente. +

            diff --git a/lang/eu/help/workshop/assessmentofexamples.html b/lang/eu/help/workshop/assessmentofexamples.html index 2501318d5db..87d7ab660a4 100644 --- a/lang/eu/help/workshop/assessmentofexamples.html +++ b/lang/eu/help/workshop/assessmentofexamples.html @@ -1,6 +1,6 @@ -

            Evaluación de los ejemplos del profesor

            +

            Evaluación de los ejemplos del profesor

            -

            Una vez que el profesor ha enviado los ejemplos, resulta útil, si bien +

            Una vez que el profesor ha enviado los ejemplos, resulta útil, si bien sólo parcialmente, evaluarlos desde el punto de vista del profesor. Únicamente éste puede acceder a esas evaluaciones, y en ninguna fase de la tarea se muestran a los estudiantes. Sin embargo, son útiles cuando el profesor examina las evaluaciones @@ -10,4 +10,4 @@ en la parte superior de la p en la parte inferior de la página. La evaluación "extra" actúa a modo de fuente de referencia y recordatorio de los puntos relevantes contenidos en el ejemplo. -

            +

            diff --git a/lang/eu/help/workshop/assignmenttype.html b/lang/eu/help/workshop/assignmenttype.html index 8763ea4702e..55041af01d7 100644 --- a/lang/eu/help/workshop/assignmenttype.html +++ b/lang/eu/help/workshop/assignmenttype.html @@ -1,18 +1,20 @@ -

            Tipos de tareas calificadas por los compañeros

            +

            Tipos de tareas calificadas por los compañeros

            -

            Una tarea calificada por los compañeros puede ser de uno de estos dos tipos:

            -
              -
            1. Sólo se introducen los comentarios sobre los elementos de la tarea y el +

              Una tarea calificada por los compañeros puede ser de uno de estos dos tipos: +

                +
              1. Sólo se introducen los comentarios sobre los elementos de la tarea y el comentario general. La calificación de los elementos de la tarea no se ve en la página de calificaciones. Las tareas en sí no obtienen una calificación global. Sin embargo, la calificación hecha por parte de los estudiantes se promedia y este promedio contribuye a la calificación final dada - a los estudiantes.
              2. + a los estudiantes. -
              3. Aquí se le solicita al profesor y a los estudiantes que proporcionen tanto calificaciones como comentarios. A las tareas se les asigna una calificación +
              4. Aquí se le solicita al profesor y a los estudiantes que proporcionen tanto calificaciones como comentarios. A las tareas se les asigna una calificación cuantitativa global así como una apreciación cualitativa. La calificación final de cada estudiante se calculará a partir de las contribuciones (ponderadas) de calificación del profesor, la media de las calificaciones de los - compañeros y el grado de participación en la calificación por parte del estudiante.
              5. + compañeros y el grado de participación en la calificación por parte del estudiante. -
              \ No newline at end of file +
            + +

            \ No newline at end of file diff --git a/lang/eu/help/workshop/breakdownoffinalgrade.html b/lang/eu/help/workshop/breakdownoffinalgrade.html index da068a1b516..11543591fe6 100644 --- a/lang/eu/help/workshop/breakdownoffinalgrade.html +++ b/lang/eu/help/workshop/breakdownoffinalgrade.html @@ -1,25 +1,25 @@ -

            Desglose de la calificación final

            +

            Desglose de la calificación final

            -

            La tabla que aparece en esta pantalla le muestra la calificación final y cómo +

            La tabla que aparece en esta pantalla le muestra la calificación final y cómo ha sido calculada. La calificación final se ha obtenido a partir de tres posibles -componentes:

            +componentes: -
              -
            1. La calificación dada por el profesor al trabajo que usted ha enviado.
            2. -
            3. El promedio de las calificaciones que los compañeros han dado a su - trabajo.
            4. -
            5. La calificación de su participación en la fase de calificación. Esta +
                +
              1. La calificación dada por el profesor al trabajo que usted ha enviado. +
              2. El promedio de las calificaciones que los compañeros han dado a su + trabajo. +
              3. La calificación de su participación en la fase de calificación. Esta calificación de su participación se basará en: (a) si sus calificaciones fueron demasiado altas o demasiado bajas comparadas con el promedio de calificaciones de otros estudiantes (a esto se - le llama sesgo), (b) si sus calificaciones se ajustan al promedio de las + le llama sesgo), (b) si sus calificaciones se ajustan al promedio de las calificaciones dadas por los otros estudiantes (a esto se le llama - fiabilidad) y (c) la calidad de sus comentarios sobre los otros trabajos que usted ha + fiabilidad) y (c) la calidad de sus comentarios sobre los otros trabajos que usted ha calificado. Esto habrá sido calificado por el profesor. Estos tres grados de participación son ponderados por los factores 1:2:3 respectivamente para otorgar la "calificación" global. En otras palabras, se le está dando el mismo peso a la calificación del profesor sobre los comentarios que a los - factores combinados de Sesgo y Fiabilidad.
              4. -
              + factores combinados de Sesgo y Fiabilidad. +
            -

            Estos tres componentes pueden ser ponderados como se considere apropiado +

            Estos tres componentes pueden ser ponderados como se considere apropiado para la tarea. Los pesos o factores de ponderación se muestran en la tabla pequeña. -

            +

            diff --git a/lang/eu/help/workshop/calculatingfinalgrade.html b/lang/eu/help/workshop/calculatingfinalgrade.html index 99a0eb99542..cc49449dd94 100644 --- a/lang/eu/help/workshop/calculatingfinalgrade.html +++ b/lang/eu/help/workshop/calculatingfinalgrade.html @@ -1,16 +1,16 @@ -

            Cálculo de las Calificaciones Finales

            +

            Cálculo de las Calificaciones Finales

            -

            La tabla de esta pantalla muestra cómo se calculan las calificaciones +

            La tabla de esta pantalla muestra cómo se calculan las calificaciones finales de los estudiantes. Las calificaciones finales son una suma ponderada - de hasta cinco componentes.

            + de hasta cinco componentes. -
              -
            1. La calificación que profesor da a la tarea enviada. Esto es opcional +
                +
              1. La calificación que profesor da a la tarea enviada. Esto es opcional y será usado si es el profesor quien realmente evalúa el trabajo del estudiante. Si el estudiante envía más de una parte de trabajo se utilizará "la mejor" calificación. Aquí, mejor equivale al resultado de la combinación ponderada más alta de la calificación del profesor y la calificación de los compañeros. -
              2. El promedio de las calificaciones que los compañeros han dado a la tarea
              3. +
              4. El promedio de las calificaciones que los compañeros han dado a la tarea enviada. Otra vez si el estudiante envía más de una parte del trabajo se tomará "la mejor" calificación. La calificación de un compañero opcionalmente puede incluir la calificación del profesor. Esta calificación sería incluida si @@ -18,14 +18,14 @@ calificaciones de los compañeros son sospechosas (por lo general muy altas) o no son fiables. De ser incluida, la calificación del profesor es tratada de la misma manera que una calificación de los compañeros en el cálculo del - promedio.
              5. -
              6. Los sesgos del estudiante en la calificación del trabajo de sus + promedio. +
              7. Los sesgos del estudiante en la calificación del trabajo de sus compañeros. Esto tiene lugar cuando el estudiante califica los trabajos demasiado alto o demasiado bajo. Los sesgos no son una medida absoluta ya que se basan en la diferencia entre la calificación del estudiante y los promedios de los compañeros para cada uno de los envíos evaluados. En - general no debería darse una ponderación elevada a este componente.
              8. -
              9. La fiabilidad del estudiante en calificar el trabajo de sus compañeros. Esto + general no debería darse una ponderación elevada a este componente. +
              10. La fiabilidad del estudiante en calificar el trabajo de sus compañeros. Esto es una medida de hasta qué punto las calificaciones otorgadas por un estudiante se ajustan al promedio de las calificaciones que los compañeros han dado a los trabajos evaluados. La medida resta los sesgos y obtiene el promedio de las @@ -35,17 +35,17 @@ trabajos malos, su fiabilidad será alta. Si se sospecha que los estudiantes en general son malos evaluadores, entonces deberían incluirse las calificaciones del profesor en los promedios de los compañeros, lo que - redundaría en una mejora de la fiabilidad.
              11. -
              12. La calificación promedio dada por el profesor a las evaluaciones del + redundaría en una mejora de la fiabilidad. +
              13. La calificación promedio dada por el profesor a las evaluaciones del estudiante. Esto incluye tanto evaluaciones preliminares hechas por el estudiante sobre los trabajos de prueba como cualquier calificación que el profesor haga sobre las evaluaciones producidas durante la fase de la tarea dedicada a la evaluación de compañeros. En general este componente es probablemente el más importante, tanto o más que los componentes de Sesgo o - Fiabilidad. De estar disponible debería ser ponderada más que los demás.
              14. -
              + Fiabilidad. De estar disponible debería ser ponderada más que los demás. +
            -

            Estos cinco componentes pueden ponderarse como se considere apropiado +

            Estos cinco componentes pueden ponderarse como se considere apropiado para la tarea. Por ejemplo, la calificación del profesor podría tener una ponderación mayor si la parte de la tarea calificada por los compañeros se considera como menos importante dentro del conjunto de la tarea. @@ -56,10 +56,10 @@ entonces los primeros dos componentes se ponderarán como cero (o se les dará una ponderación baja) y serán las habilidades de calificación de los estudiantes las que determinarán las calificaciones finales. -

            +

            -

            Advierta que esta pantalla es usada de forma iterativa y que habitualmente +

            Advierta que esta pantalla es usada de forma iterativa y que habitualmente los estudiantes no dispondrán de las calificaciones finales hasta la fase final de la tarea. Una vez que el profesor está satisfecho con las calificaciones finales y sus ponderaciones, los estudiantes podrán acceder a ellas. -

            +

            diff --git a/lang/eu/help/workshop/editingacomment.html b/lang/eu/help/workshop/editingacomment.html index fda096a9aa1..783f7252109 100644 --- a/lang/eu/help/workshop/editingacomment.html +++ b/lang/eu/help/workshop/editingacomment.html @@ -1,5 +1,5 @@ -

            Editar un comentario

            +

            Editar un comentario

            -

            Como sucede en otras áreas de Moodle, existe un período corto de tiempo para corregir los +

            Como sucede en otras áreas de Moodle, existe un período corto de tiempo para corregir los comentarios, no mostrándose el comentario en la evaluación hasta que haya transcurrido dicho período. -

            \ No newline at end of file +

            \ No newline at end of file diff --git a/lang/eu/help/workshop/elements.html b/lang/eu/help/workshop/elements.html index c7a451ed6cb..3384d14eb47 100644 --- a/lang/eu/help/workshop/elements.html +++ b/lang/eu/help/workshop/elements.html @@ -1,18 +1,18 @@ -

            Elementos de Calificación

            +

            Elementos de Calificación

            -

            Para hacer más sencilla la calificación de una Tarea Calificada por los +

            Para hacer más sencilla la calificación de una Tarea Calificada por los Compañeros, ésta tiene una serie de "Elementos de evaluación". Cada elemento debe cubrir un aspecto particular de la tarea. Normalmente una tarea tendrá entre 5 y 15 elementos para ser comentados y calificados, dependiendo el número real del tamaño y complejidad de la tarea. Se permite que una tarea calificada por los compañeros tenga sólo un elemento y que la estrategia -de valoración sea similar a la de la tarea estándar del sistema.

            +de valoración sea similar a la de la tarea estándar del sistema. -

            El tipo de elementos depende de la estrategia de calificación de la tarea.

            +

            El tipo de elementos depende de la estrategia de calificación de la tarea. -

            Sin calificar. Los elementos son descripciones de aspectos de la tarea. Se pide al evaluador que comente cada uno de estos aspectos. Sl igual que sucede con todas las estrategias de calificación, existe también un área para comentarios generales.

            +

            Sin calificar. Los elementos son descripciones de aspectos de la tarea. Se pide al evaluador que comente cada uno de estos aspectos. Sl igual que sucede con todas las estrategias de calificación, existe también un área para comentarios generales. -

            Calificación acumulativa. Los elementos tienen las siguientes características:

            -
              +

              Calificación acumulativa. Los elementos tienen las siguientes características: +

              1. La DESCRIPCIÓN del elemento de evaluación, que debe establecer claramente qué aspecto de la tarea está siendo evaluado. Si la evaluación es cualitativa, será útil dar detalles de qué se considera excelente, promedio @@ -33,7 +33,7 @@ de valoraci elementos menos importantes un peso menor. Cambiar los pesos NO afecta la calificación máxima: ese valor se fija mediante el parámetro de Calificación Máxima de la tarea calificada por los compañeros.
              2. -
              +

            Franja de error. Los elementos normalmente describirán ciertas características o aspectos que deben estar presentes en la tarea. La evaluación se basa en la presencia o ausencia de estas características o diff --git a/lang/eu/help/workshop/finalgrades.html b/lang/eu/help/workshop/finalgrades.html index 00491b54ef3..d96a5ca4a6d 100644 --- a/lang/eu/help/workshop/finalgrades.html +++ b/lang/eu/help/workshop/finalgrades.html @@ -1,16 +1,17 @@ -

            Calificaciones Finales

            +

            Calificaciones Finales

            -

            La tabla de esta pantalla contiene una lista de las calificaciones finales y -su desglose tal como se muestra a los estudiantes. Si en la tabla hay valores perdidos, entonces es posible "retroceder" y añadirlos. De hecho, pueden hacerse dos tipos de ajuste a las calificaciones finales.

            +

            La tabla de esta pantalla contiene una lista de las calificaciones finales y +su desglose tal como se muestra a los estudiantes. Si en la tabla hay valores perdidos, entonces es posible "retroceder" y añadirlos. De hecho, pueden hacerse dos tipos de ajuste a las calificaciones finales. -

              -
            1. Si se tiene que añadir la calificación de un profesor, entonces el trabajo +
                +
              1. Si se tiene que añadir la calificación de un profesor, entonces el trabajo puede calificarse yendo a la pantalla de Gestión de tareas y pulsando sobre el enlace "Ver tareas enviadas". Pueden calificarse cualesquiera otros envíos. Una vez hecho esto, mover la tarea hacia atrás a la fase 3 y volver a calcular las calificaciones finales. De un modo similar cualquier evaluación que no haya sido calificada puede serlo en la pantalla de -Gestión.
              2. -
              3. Si se desea usar un esquema de ponderación diferente, debería trasladarse la tarea a la fase 3, pulsar "Calcular Calificaciones Finales" e introducir las nuevas ponderaciones. +Gestión. +
              4. Si se desea usar un esquema de ponderación diferente, debería trasladarse la tarea a la fase 3, pulsar "Calcular Calificaciones Finales" e introducir las nuevas ponderaciones. Una vez que se han recalculado las calificaciones, la tarea debe -trasladarse a la Fase 4 para así tener disponibles las nuevas calificaciones.
              5. -
              +trasladarse a la Fase 4 para así tener disponibles las nuevas calificaciones. +
            +

            diff --git a/lang/eu/help/workshop/graded.html b/lang/eu/help/workshop/graded.html index b83bd6c7725..b5730ba89f5 100644 --- a/lang/eu/help/workshop/graded.html +++ b/lang/eu/help/workshop/graded.html @@ -1,14 +1,14 @@ -

            Tarea calificada por los compañeros

            +

            Tarea calificada por los compañeros

            -

            Muestra las calificaciones y comentarios hechos sobre la parte enviada +

            Muestra las calificaciones y comentarios hechos sobre la parte enviada del trabajo. Usted puede, si lo desea, responder a esta evaluación y elegir no aceptarla (en esta fase). Si éste es el caso, por favor introduzca su respuesta en la casilla al pie de la página exponiendo la razón por la que no está satisfecho con esa evaluación. A continuación haga clic en el botón que hay al pie de la página y -elija NO cuando se le pregunte si está satisfecho con esta evaluación.

            +elija NO cuando se le pregunte si está satisfecho con esta evaluación. -

            Si, por el contrario, usted está satisfecho con la evaluación, simplemente +

            Si, por el contrario, usted está satisfecho con la evaluación, simplemente haga clic en el botón que hay al pie de la página y en SÍ cuando se le pregunte si está satisfecho con esta valoración. -

            \ No newline at end of file +

            \ No newline at end of file diff --git a/lang/eu/help/workshop/grading.html b/lang/eu/help/workshop/grading.html index 1ae54c6a72a..e0bc64916c1 100644 --- a/lang/eu/help/workshop/grading.html +++ b/lang/eu/help/workshop/grading.html @@ -1,32 +1,32 @@ -

            Calificación de las tareas de los compañeros

            +

            Calificación de las tareas de los compañeros

            -

            Para facilitar la calificación, la tarea se divide en una serie de +

            Para facilitar la calificación, la tarea se divide en una serie de "elementos" a valorar. Cada elemento cubre un aspecto particular de la tarea. -Para cada elemento usted debe:

            -
              -
            1. Introducir una calificación haciendo clic en el botón apropiado o - seleccionando un número apropiado en el menú desplegable.
            2. +Para cada elemento usted debe: +
                +
              1. Introducir una calificación haciendo clic en el botón apropiado o + seleccionando un número apropiado en el menú desplegable. -
              2. Introducir una explicación de por qué da esa calificación, en la casilla +
              3. Introducir una explicación de por qué da esa calificación, en la casilla de retroalimentación (feedback). Si cree que la razón es obvia, deje la casilla en blanco. Tenga en cuenta, sin embargo, que la persona cuyo trabajo está evaluando tiene la oportunidad de responderle a usted y puede poner en duda una calificación que - no conlleva una explicación.
              4. -
              + no conlleva una explicación. +
            -

            En otro tipo de evaluación se le pide determinar si varios items están +

            En otro tipo de evaluación se le pide determinar si varios items están presentes o ausentes; en otros se le pide que seleccione la declaración que mejor se ajusta al trabajo. En ambos supuestos usted puede ajustar la calificación de la manera -que estime más adecuada.

            +que estime más adecuada. -

            La última casilla del formulario le permite hacer un comentario general +

            La última casilla del formulario le permite hacer un comentario general sobre el trabajo. Éste debe justificar su evaluación y debería ser respetuoso y constructivo en la medida de lo posible. Su evaluación se mostrará al estudiante -que ha ejecutado la parte del trabajo.

            +que ha ejecutado la parte del trabajo. -

            Usted dispone de un período limitado de tiempo, habitualmente media hora, para cambiar de +

            Usted dispone de un período limitado de tiempo, habitualmente media hora, para cambiar de parecer y modificar sus calificaciones o comentarios. Una vez que ese período termina, se envía a la persona cuyo trabajo ha sido evaluado una notificación sobre la evaluación. En esta etapa usted puede ver su evaluación pero no puede modificarla. -

            \ No newline at end of file +

            \ No newline at end of file diff --git a/lang/eu/help/workshop/gradingassessments.html b/lang/eu/help/workshop/gradingassessments.html index 9b0e28d4b8d..a3c2e009243 100644 --- a/lang/eu/help/workshop/gradingassessments.html +++ b/lang/eu/help/workshop/gradingassessments.html @@ -1,6 +1,6 @@ -

            Calificación de las evaluaciones de los estudiantes

            +

            Calificación de las evaluaciones de los estudiantes

            -

            Esta pantalla se usa para introducir las calificaciones del profesor a las +

            Esta pantalla se usa para introducir las calificaciones del profesor a las evaluaciones realizadas por los estudiantes durante la fase de remisión y evaluación de la tarea. Se utiliza una calificación relativamente sencilla, con una puntuación sobre 20. El profesor puede decidir lo que se evaluará y las @@ -8,15 +8,15 @@ puntuaciones relativas siguiendo las instrucciones impartidas a los estudiantes nivel superior se les puede pedir a los estudiantes que hagan comentarios críticos; en un nivel intermedio que señalen puntos fuertes y débiles, y en un nivel inferior que simplemente señalen -los errores e inexactitudes.

            +los errores e inexactitudes. -

            Si estuviera disponible, la evaluación del profesor se muestra con anterioridad a la +

            Si estuviera disponible, la evaluación del profesor se muestra con anterioridad a la de las estudiantes, a fin de que una y otra puedan compararse con facilidad. Los comentarios del profesor pueden -actuar como una especie de patrón de comparación.

            +actuar como una especie de patrón de comparación. -

            La calificaciones de la evaluación se guardan pulsando sobre el botón +

            La calificaciones de la evaluación se guardan pulsando sobre el botón "Guardar" en el pie de la página. Hay una oportunidad para repetir la calificación dentro del período "edición". Una vez que aquel tiempo ha transcurrido el estudiante puede consultar su calificación. -

            \ No newline at end of file +

            \ No newline at end of file diff --git a/lang/eu/help/workshop/gradingstrategy.html b/lang/eu/help/workshop/gradingstrategy.html index bc625b54e8f..2fe3cff80e1 100644 --- a/lang/eu/help/workshop/gradingstrategy.html +++ b/lang/eu/help/workshop/gradingstrategy.html @@ -1,47 +1,47 @@ -

            Estrategia de calificación

            +

            Estrategia de calificación

            -

            La forma de calificación de una tarea de Taller es bastante flexible. Puede ser: -

              -
            1. Ninguna calificación: En este tipo de tarea el profesor no está +

              La forma de calificación de una tarea de Taller es bastante flexible. Puede ser: +

                +
              1. Ninguna calificación: En este tipo de tarea el profesor no está interesado en la evaluación cuantitativa de los estudiantes. Los estudiantes hacen comentarios sobre las partes de los trabajos pero no los califican. El profesor, sin embargo, si así lo desea, puede calificar los comentarios de los estudiantes. Estas calificaciones forman la base de las notas finales de los estudiantes. Si el profesor no califica las -evaluaciones de los estudiantes, la tarea no tendrá ninguna calificación final.
              2. +evaluaciones de los estudiantes, la tarea no tendrá ninguna calificación final. -
              3. Calificación Acumulativa: Este es el tipo de calificación por defecto. En +
              4. Calificación Acumulativa: Este es el tipo de calificación por defecto. En este tipo de tarea la calificación de cada evaluación se compone de un número de "elementos de evaluación". Cada elemento debería cubrir un aspecto particular de la tarea. Típicamente una tarea debería tener entre 5 y 15 elementos para comentar y calificar; el número real depende del tamaño y complejidad de la tarea. Es posible asignar a los estudiantes una tarea con un solo elemento; en ese caso, la estrategia de evaluación es similar -al estándar de tareas de Moodle.
              5. +al estándar de tareas de Moodle. -

                Los elementos tienen las siguientes características:

                -
                  -
                1. La DESCRIPCIÓN del elemento de evaluación. Debería establecer claramente qué aspecto +

                  Los elementos tienen las siguientes características: +

                    +
                  1. La DESCRIPCIÓN del elemento de evaluación. Debería establecer claramente qué aspecto de la tarea se está evaluando. Si la evaluación es cualitativa, resulta útil dar detalles -de lo que se considera excelente, promedio o insuficiente.
                  2. +de lo que se considera excelente, promedio o insuficiente. -
                  3. La ESCALA del elemento de evaluación. Existe un número predefinido de escalas, que +
                  4. La ESCALA del elemento de evaluación. Existe un número predefinido de escalas, que van de las escalas simples SÍ/NO, pasando por escalas multipunto hasta llegar a escalas de porcentaje total. Cada elemento tiene su propia escala, y ésta debería elegirse para ajustarse a todas las variaciones posibles de ese elemento. Advierta que la escala NO determina la importancia del elemento cuando se calcula la calificación final: por ejemplo, una escala de dos puntos tiene la misma "influencia" que otra de 100 puntos -si los respectivos elementos tienen el mismo peso (factor de ponderación).
                  5. +si los respectivos elementos tienen el mismo peso (factor de ponderación). -
                  6. El PESO del elemento de evaluación. Por defecto, todos los elementos tienen la +
                  7. El PESO del elemento de evaluación. Por defecto, todos los elementos tienen la misma importancia cuando se calcula la calificación global de la tarea. Puede cambiarse esto dando a los elementos más importantes un peso superior a uno, y a los menos importantes un peso inferior a uno. Cambiar los pesos NO afecta a la calificación máxima, puesto que ese valor es fijado por el parámetro Calificación Máxima de la tarea. Es posible asignar -valores negativos a los pesos (ésta es una característica en fase de experimentación).
                  8. -
                  +valores negativos a los pesos (ésta es una característica en fase de experimentación). +
                -
              6. Franjas de Error: En este tipo de tarea los envíos son calificados en un +
              7. Franjas de Error: En este tipo de tarea los envíos son calificados en un conjunto de escalas SÍ/NO. La calificación se determina mediante la "Tabla de Calificaciones ", que proporciona la relación entre el número de "errores" y la calificación sugerida. Por ejemplo, una tarea puede contener seis elementos importantes @@ -54,9 +54,9 @@ A cada elemento se le da, por defecto, un peso de uno. La tabla de calificacione ser no lineal; por ejemplo, las calificaciones sugeridas pueden ser 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0% para una tarea con 10 elementos. El evaluador puede ajustar la calificación sugerida hasta un máximo de ±20% para asignar la calificación final del -trabajo.
              8. +trabajo. -
              9. Calificación referida a Criterio: Ésta es la forma más simple de calificación, +
              10. Calificación referida a Criterio: Ésta es la forma más simple de calificación, si bien no es necesariamente la más directa de establecer. Consiste en calificar los trabajos en función de un conjunto de criterios. El evaluador elige qué frase se ajusta mejor al trabajo. La calificación se determina mediante una "Tabla de Criterios" @@ -64,5 +64,7 @@ que proporciona una sugerencia de calificaci puede ajustarse con, digamos, cinco criterios, y los evaluadores deberán escoger uno de los cinco criterios para cada una de sus evaluaciones. Al igual que ocurre con la tarea de franjas de error, el evaluador puede modificar la calificación sugerida en un ±20% para -dar la calificación final.
              11. -
              \ No newline at end of file +dar la calificación final. +
            + +

            \ No newline at end of file diff --git a/lang/eu/help/workshop/gradingsubmissions.html b/lang/eu/help/workshop/gradingsubmissions.html index 68696c70303..f61aa4708eb 100644 --- a/lang/eu/help/workshop/gradingsubmissions.html +++ b/lang/eu/help/workshop/gradingsubmissions.html @@ -1,13 +1,13 @@ -

            Calificación de los envíos de los estudiantes

            +

            Calificación de los envíos de los estudiantes

            -

            En general el profesor deseará evaluar los trabajos enviados por los estudiantes. +

            En general el profesor deseará evaluar los trabajos enviados por los estudiantes. Esas evaluaciones se mostrarán a los estudiantes y les proporcionarán retroalimentación -sobre su trabajo.

            -

            Las calificaciones de dichas evaluaciones pueden usarse de dos formas en el +sobre su trabajo.

            +

            Las calificaciones de dichas evaluaciones pueden usarse de dos formas en el cálculo de la calificación final. En primer lugar, la calificación en sí misma puede usarse como un componente (ponderado) de la calificación final. En segundo lugar, estas calificaciones pueden, opcionalmente, añadirse al conjunto de evaluaciones de los compañeros y usarse como "factor de atenuación" en el caso de que las evaluaciones de los estudiantes sean demasiado altas o demasiado bajas. -

            +

            diff --git a/lang/eu/help/workshop/includeself.html b/lang/eu/help/workshop/includeself.html index e47b9de7487..a7ecc656dd1 100644 --- a/lang/eu/help/workshop/includeself.html +++ b/lang/eu/help/workshop/includeself.html @@ -1,14 +1,14 @@ -

            Incluir el propio trabajo en la tarea

            +

            Incluir el propio trabajo en la tarea

            -

            Una tarea calificada por los compañeros puede incluir opcionalmente el +

            Una tarea calificada por los compañeros puede incluir opcionalmente el trabajo del propio estudiante en la serie de partes que a cada estudiante se le pide que califique. Esto significará que si, por ejemplo, el número de evaluadores es de 5, entonces cada estudiante tendrá que calificar 6 partes del -trabajo, una de las cuales es el suyo propio.

            +trabajo, una de las cuales es el suyo propio. -

            Si el número de evaluadores se fija en cero y está habilitada la opción +

            Si el número de evaluadores se fija en cero y está habilitada la opción de auto-inclusión, entonces la tarea viene a convertirse en una tarea auto calificada. Esto puede o no incluir la calificación por parte del profesor, dependiendo de si esta opción está activada o no. -

            \ No newline at end of file +

            \ No newline at end of file diff --git a/lang/eu/help/workshop/includeteachersgrade.html b/lang/eu/help/workshop/includeteachersgrade.html index a721e6ae458..9b33866aae3 100644 --- a/lang/eu/help/workshop/includeteachersgrade.html +++ b/lang/eu/help/workshop/includeteachersgrade.html @@ -1,4 +1,4 @@ -

            Incluir Calificación del Profesor

            +

            Incluir Calificación del Profesor

            Esta opción permite que las evaluaciones que el profesor hace de los trabajos se consideren como si fueran evaluaciones hechas por los compañeros. Si la opción se ajusta a diff --git a/lang/eu/help/workshop/index.html b/lang/eu/help/workshop/index.html index bd2141555dc..09adff08591 100644 --- a/lang/eu/help/workshop/index.html +++ b/lang/eu/help/workshop/index.html @@ -1,31 +1,31 @@

            Taller

            diff --git a/lang/eu/help/workshop/leaguetable.html b/lang/eu/help/workshop/leaguetable.html index 6323d7d8f3e..ab0e918d29f 100644 --- a/lang/eu/help/workshop/leaguetable.html +++ b/lang/eu/help/workshop/leaguetable.html @@ -1,4 +1,4 @@ -

            Tabla de Clasificación de Envíos

            +

            Tabla de Clasificación de Envíos

            La Tabla de Clasificación enumera los mejores envíos de la tarea. El número de entradas puede ajustarse a Cero, a un número entre 1 y 20, a 50 o a "Todos". Si se ajusta a diff --git a/lang/eu/help/workshop/managing.html b/lang/eu/help/workshop/managing.html index fbbe7f047c1..9149efbaee1 100644 --- a/lang/eu/help/workshop/managing.html +++ b/lang/eu/help/workshop/managing.html @@ -1,42 +1,42 @@ -

            Gestión de una tarea de taller

            +

            Gestión de una tarea de taller

            -

            Una tarea de taller es más compleja que una tarea normal. -Requiere una serie de pasos o fases:

            -
              -
            1. La evaluación de la tarea debe dividirse en un conjunto de +

              Una tarea de taller es más compleja que una tarea normal. +Requiere una serie de pasos o fases: +

                +
              1. La evaluación de la tarea debe dividirse en un conjunto de ELEMENTOS de evaluación. Esto hace que la calificación de una tarea sea menos arbitraria y facilita a los estudiantes un marco para hacer las evaluaciones. El profesor tiene la función de establecer los elementos de evaluación creando una página de calificaciones. (Vea esa página para obtener más detalles). -

                Una vez establecidos los elementos de evaluación, normalmente el profesor +

                Una vez establecidos los elementos de evaluación, normalmente el profesor envía unos cuantos ejemplos. Se trata de pequeños trabajos de práctica para que los estudiantes los evalúen antes de preparar sus propios trabajos. Sin embargo, antes de poner la tarea a disposición de los estudiantes, estos ejemplos habrán de ser evaluados por el profesor. Esto proporciona a los estudiantes no solamente ejemplos de la propia -tarea, sino también modelos de evaluación sobre esos ejemplos.

                -

                El envío de ejemplos de trabajo por el profesor es opcional, e incluso puede no -ser apropiada para determinados tipos de tarea.

              2. +tarea, sino también modelos de evaluación sobre esos ejemplos. +

                El envío de ejemplos de trabajo por el profesor es opcional, e incluso puede no +ser apropiada para determinados tipos de tarea. -

              3. En este momento los estudiantes tienen la tarea a su disposición. Si el profesor +
              4. En este momento los estudiantes tienen la tarea a su disposición. Si el profesor ha ofrecido ejemplos de trabajo, se les puede pedir a los estudiantes que evalúen unos cuantos. En este caso, el profesor debe calificar dichas evaluaciones y los estudiantes deberán alcanzar un estándar satisfactorio antes de que se les permita enviar su propio trabajo. Aquí, el "estándar satisfactorio" se fija en el 40%. Una vez que un estudiante ha "superado" el número requerido de evaluaciones, es libre de enviar su propio trabajo. -

                Cuando un estudiante envía un trabajo, el profesor puede evaluarlo si lo desea. +

                Cuando un estudiante envía un trabajo, el profesor puede evaluarlo si lo desea. Esta evaluación puede incorporarse a la calificación final del estudiante. Estas evaluaciones, si así se exige, pueden tener lugar bien durante la fase de envío de la -tarea, bien una vez que finalice el plazo de entrega.

                -

                Si la tarea incorpora la evaluación por parte de los compañeros, aquellos estudiantes +tarea, bien una vez que finalice el plazo de entrega. +

                Si la tarea incorpora la evaluación por parte de los compañeros, aquellos estudiantes que han enviado trabajos pueden ver el trabajo de otros estudiantes para evaluarlo. Cuando hayan realizado la evaluación, sus compañeros podrán verla (pero no podrán hacer comentarios sobre ella). El profesor, sin embargo, puede -siempre que lo desee- calificar la evaluación y hacer que esa puntuación forme parte de la calificación final del -estudiante.

              5. +estudiante. -
              6. Tras finalizar la fecha tope para enviar la tarea, el profesor la traslada a la +
              7. Tras finalizar la fecha tope para enviar la tarea, el profesor la traslada a la siguiente fase, en la que ya no se permiten más envíos ni evaluaciones por parte de los estudiantes. Si lo desea, el profesor puede calificar las evaluaciones de los compañeros realizadas por los estudiantes. Esto no es realmente necesario toda vez que se dispone @@ -51,11 +51,13 @@ puede incluir la media de las calificaciones que el profesor hace de las que han hecho los estudiantes (v. g., la calificación del profesor ante los comentarios de los estudiantes). El profesor asigna un peso (factor de ponderación) a estos tres componentes antes de que -tenga lugar el cálculo de la calificación final.
              8. +tenga lugar el cálculo de la calificación final. -
              9. Se introduce ahora la fase final de la tarea para permitir a los estudiantes ver +
              10. Se introduce ahora la fase final de la tarea para permitir a los estudiantes ver sus calificaciones finales. El profesor puede, si así lo desea, retroceder a cualquier punto de la tarea a fin de permitir algún ajuste de, por ejemplo, los pesos usados en el cálculo de la calificación final; en ese caso, los estudiantes podrán ver la -revisión de las calificaciones.
              11. -
              \ No newline at end of file +revisión de las calificaciones. +
            + +

            \ No newline at end of file diff --git a/lang/eu/help/workshop/mods.html b/lang/eu/help/workshop/mods.html index 14d5cbcd4cc..1c274a199c8 100644 --- a/lang/eu/help/workshop/mods.html +++ b/lang/eu/help/workshop/mods.html @@ -1,9 +1,9 @@ -

             Taller

            -
              -

              El Taller es una actividad para el trabajo en grupo con un vasto número de opciones. +

               Taller

              +
                +

                El Taller es una actividad para el trabajo en grupo con un vasto número de opciones. Permite a los participantes diversas formas de evaluar los proyectos de los demás, así como proyectos-prototipo. También coordina la recopilación y distribución de esas evaluaciones de varias formas. El módulo Taller es una contribución de Ray Kingdon. -

                -
              +

              +
            diff --git a/lang/eu/help/workshop/nassessmentsofstudentsubmissions.html b/lang/eu/help/workshop/nassessmentsofstudentsubmissions.html index f04bd33f0e5..75884f6614e 100644 --- a/lang/eu/help/workshop/nassessmentsofstudentsubmissions.html +++ b/lang/eu/help/workshop/nassessmentsofstudentsubmissions.html @@ -1,6 +1,6 @@ -

            Número de evaluaciones de los trabajos de los estudiantes

            +

            Número de evaluaciones de los trabajos de los estudiantes

            -

            Este número determina si se solicita a los estudiantes que evalúan el trabajo +

            Este número determina si se solicita a los estudiantes que evalúan el trabajo de otros estudiantes. Si es distinto a cero, se ofrece a cada estudiante ese número de trabajos de otros estudiantes. Después de la evaluación el autor del trabajo podrá ver los comentarios y posiblemente la calificación dada por su compañero (el proceso de evaluación @@ -9,4 +9,4 @@ en "Aceptar Evaluaciones"). El profesor puede tambi calificar estas evaluaciones, y sus calificaciones pueden utilizarse para calcular las calificaciones finales. Los estudiantes podrán ver tanto los comentarios del profesor como la calificación otorgada a cada una de sus evaluaciones. -

            +

            diff --git a/lang/eu/help/workshop/nassessmentsofteachersexamples.html b/lang/eu/help/workshop/nassessmentsofteachersexamples.html index 96e6791940a..d4ffe963d86 100644 --- a/lang/eu/help/workshop/nassessmentsofteachersexamples.html +++ b/lang/eu/help/workshop/nassessmentsofteachersexamples.html @@ -1,10 +1,10 @@ -

            Número de las evaluaciones de los ejemplos del profesor

            +

            Número de las evaluaciones de los ejemplos del profesor

            -

            Este número determina si se solicita a los estudiantes la evaluación de +

            Este número determina si se solicita a los estudiantes la evaluación de cualquier trabajo antes de enviar su propio trabajo. Si no está en cero, cada estudiante deberá evaluar ese número de trabajos y alcanzar un nivel satisfactorio. Esto significa que el profesor debe calificar estas evaluaciones antes de que el estudiante pueda enviar su trabajo. El estudiante verá los comentarios del profesor y la calificación de cada una de sus evaluaciones. -

            +

            diff --git a/lang/eu/help/workshop/nelements.html b/lang/eu/help/workshop/nelements.html index 4b839bc4915..64731ab586a 100644 --- a/lang/eu/help/workshop/nelements.html +++ b/lang/eu/help/workshop/nelements.html @@ -1,6 +1,6 @@ -

            Número de comentarios, elementos, franjas de error o criterios

            +

            Número de comentarios, elementos, franjas de error o criterios

            -

            El número ingtroducido aquí determina cuántos +

            El número ingtroducido aquí determina cuántos elementos se usarán en las evaluaciones. Dependiendo del tipo de estrategia de calificación, este número indica la cantidad de comentarios, elementos de @@ -8,12 +8,12 @@ evaluaci evaluaciones. Típicamente una asignación tendrá entre 5 y 15 elementos de evaluación; el número real dependerá (según sea el caso) del tamaño y la -complejidad de la tarea.

            +complejidad de la tarea. -

            Todas las evaluaciones tienen un campo de comentarios generales. Si +

            Todas las evaluaciones tienen un campo de comentarios generales. Si usted elige "Ninguna Calificación", la asignación del valor dado aquí determinará el número de áreas para comentarios adicionales. En el caso de ajustarse a cero, la evaluación tendrá una sola área de comentarios generales. -

            +

            diff --git a/lang/eu/help/workshop/numberofassessors.html b/lang/eu/help/workshop/numberofassessors.html index b25792e0596..b4ecc5bc5fc 100644 --- a/lang/eu/help/workshop/numberofassessors.html +++ b/lang/eu/help/workshop/numberofassessors.html @@ -1,6 +1,6 @@ -

            Número de compañeros evaluadores

            +

            Número de compañeros evaluadores

            -

            Una tarea calificada por los compañeros normalmente tendrá entre 3 y +

            Una tarea calificada por los compañeros normalmente tendrá entre 3 y 8 compañeros evaluadores. Es decir, en la fase de calificación por parte de los compañeros, a cada estudiante se le pedirá calificar este número de trabajos de otros estudiantes de la clase. Mientras mayor sea la tarea, en términos de contenido, @@ -11,9 +11,9 @@ para que la calificaci evaluada de manera significativa, cuanto mayor sea número de calificaciones de los compañeros mejor será el resultado. Es poco probable que esta calificación de la participación sea válida si cada estudiante hace sólo tres o cuatro -calificaciones.

            +calificaciones. -

            Una vez que se han proporcionado suficientes trabajos enviados (realmente 10 +

            Una vez que se han proporcionado suficientes trabajos enviados (realmente 10 ó más) el sistema asignará a cada estudiante al menos uno "bueno" y uno "pobre". Sin embargo, esto sólo puede hacerse si el profesor ha calificado los trabajos ANTES de que se hayan asignado los trabajos para ser calificados (por los @@ -22,10 +22,10 @@ ejemplo es suficiente. Adem que ser una calificación definitiva, una calificación preliminar es suficiente. Advierta, sin embargo, que si está habilitada la opción de "mostrar la calificación del profesor", estas calificaciones se mostrarán a los estudiantes -al final de la fase de envío.

            +al final de la fase de envío. -

            El número de compañeros evaluadores puede ser cero. En ese caso la tarea se +

            El número de compañeros evaluadores puede ser cero. En ese caso la tarea se convierte en una tarea auto-calificada, si la opción está habilitada, o en una tarea normal calificada por el profesor, si no lo está. -

            \ No newline at end of file +

            \ No newline at end of file diff --git a/lang/eu/help/workshop/overallocation.html b/lang/eu/help/workshop/overallocation.html index bab5d767f98..0e4641cb194 100644 --- a/lang/eu/help/workshop/overallocation.html +++ b/lang/eu/help/workshop/overallocation.html @@ -1,4 +1,4 @@ -

            Nivel de Asignación por Exceso

            +

            Nivel de Asignación por Exceso

            Este nivel determina si la asignación de las evaluaciones de los compañeros a la clase es o no equilibrada. Aquí el término "equilibrado" se aplica al diff --git a/lang/eu/help/workshop/resubmit.html b/lang/eu/help/workshop/resubmit.html index dc11a088e76..8c0ad06c8e4 100644 --- a/lang/eu/help/workshop/resubmit.html +++ b/lang/eu/help/workshop/resubmit.html @@ -1,21 +1,21 @@ -

            Reenvío de tareas

            +

            Reenvío de tareas

            -

            Por defecto los estudiantes no pueden reenviar sus tareas, sólo se les -permite un envío.

            +

            Por defecto los estudiantes no pueden reenviar sus tareas, sólo se les +permite un envío.

            -

            Si usted habilita esta opción, los estudiantes podrán reenviar sus tareas una +

            Si usted habilita esta opción, los estudiantes podrán reenviar sus tareas una vez calificadas (a usted para recalificarlas). Esto puede ser útil si el profesor quiere alentar a los estudiantes a hacer un trabajo mejor en un proceso -iterativo.

            +iterativo.

            -

            La evaluación de los envíos se determina sobre la base del número de evaluaciones a las que +

            La evaluación de los envíos se determina sobre la base del número de evaluaciones a las que un determinado trabajo ha sido sometido. En consecuencia, los nuevos envíos por parte de un estudiante tienen probabilidad de ser candidatos a ser evaluados por los compañeros. Sin embargo, si un estudiante reenvía trabajos en una sucesión rápida, todos ellos tienen la misma probabilidad -de ser evaluados. La tarea NO da prioridad al envío más reciente.

            +de ser evaluados. La tarea NO da prioridad al envío más reciente. -

            Para calcular la calificación final de un estudiante, se utiliza el envío que haya alcanzado la +

            Para calcular la calificación final de un estudiante, se utiliza el envío que haya alcanzado la puntuación más alta. Aquí la calificación más alta significa la combinación ponderada de la calificación del profesor y de los compañeros en el caso de disponer de ambas. -

            +

            diff --git a/lang/eu/help/workshop/selfassessment.html b/lang/eu/help/workshop/selfassessment.html index ace3f5e7098..bd4d38db636 100644 --- a/lang/eu/help/workshop/selfassessment.html +++ b/lang/eu/help/workshop/selfassessment.html @@ -1,14 +1,14 @@ -

            Autoevaluación

            +

            Autoevaluación

            -

            Una tarea de taller (v. g., calificada por los compañeros) puede incluir opcionalmente el +

            Una tarea de taller (v. g., calificada por los compañeros) puede incluir opcionalmente el trabajo del propio estudiante en la serie de trabajos que a cada estudiante se le pide que evalúe. Esto significa que si, por ejemplo, el número de evaluadores es 5, entonces cada estudiante tendrá que calificar 6 -trabajos, uno de los cuales será el suyo propio.

            +trabajos, uno de los cuales será el suyo propio. -

            Si el número de trabajos de los estudiantes se fija en cero y está habilitada la opción +

            Si el número de trabajos de los estudiantes se fija en cero y está habilitada la opción de autoevaluación, entonces la tarea viene a convertirse en una tarea autoevaluada. Esto puede o no incluir la calificación por parte del profesor, dependiendo de su decisión. -

            +

            diff --git a/lang/eu/help/workshop/showinggrades.html b/lang/eu/help/workshop/showinggrades.html index df3615b1d14..a3ce8676a60 100644 --- a/lang/eu/help/workshop/showinggrades.html +++ b/lang/eu/help/workshop/showinggrades.html @@ -1,14 +1,14 @@ -

            Ocultar calificaciones

            +

            Ocultar calificaciones

            -

            Esta opción puede usarse en una tarea de taller donde debe haber acuerdo +

            Esta opción puede usarse en una tarea de taller donde debe haber acuerdo entre los estudiantes sobre cada evaluación. El valor por defecto muestra al estudiante cuyo trabajo está siendo evaluado tanto los comentarios como las calificaciones en las evaluaciones de sus compañeros. Esto puede conducir a más discusiones que cuando la opción está habilitada y se muestran las evaluaciones sin -las calificaciones.

            -

            Si se opta por ocultar las calificaciones en las evaluaciones de +las calificaciones. +

            Si se opta por ocultar las calificaciones en las evaluaciones de los compañeros, las calificaciones sólo serán visibles una vez alcanzado el acuerdo. Evidentemente este acuerdo se habrá construido sobre los comentarios. Si las calificaciones no reflejan adecuadamente estos comentarios el estudiante cuyo trabajo está siendo evaluado puede apelar al profesor. -

            +

            diff --git a/lang/eu/help/workshop/submissionofexamples.html b/lang/eu/help/workshop/submissionofexamples.html index 4dbe267b854..cf3341b6c5d 100644 --- a/lang/eu/help/workshop/submissionofexamples.html +++ b/lang/eu/help/workshop/submissionofexamples.html @@ -1,6 +1,6 @@ -

            Envío de los ejemplos del profesor

            +

            Envío de los ejemplos del profesor

            -

            Si se pide a los estudiantes que evalúen algunos trabajos de ejemplo +

            Si se pide a los estudiantes que evalúen algunos trabajos de ejemplo antes de enviar su propio trabajo, el profesor utiliza este enlace para enviar esos trabajos. El profesor puede enviar cualquier número de trabajos. Si este número es mayor que el número de evaluaciones de ejemplo que cada @@ -9,13 +9,13 @@ pero equilibrada. El sistema intenta asegurar que cada uno de los ejemplos sea asignado a los estudiantes el mismo número de veces. La asignación es aleatoria de modo que si, por ejemplo, se envían diez ejemplos, es muy poco probable que al primer estudiante se le asignen los envíos 1, 2 y 3 para que -los evalúe.

            +los evalúe.

            -

            Si el profesor envía un número de ejemplos menor que el fijado en el +

            Si el profesor envía un número de ejemplos menor que el fijado en el correspondiente parámetro de la tarea, a los estudiantes únicamente se les -dan esos ejemplos para evaluar.

            +dan esos ejemplos para evaluar.

            -

            Una vez que el profesor ha enviado los ejemplos, resulta útil, si bien +

            Una vez que el profesor ha enviado los ejemplos, resulta útil, si bien sólo parcialmente, evaluarlos desde el punto de vista del profesor. Únicamente éste puede acceder a esas evaluaciones, y en ninguna fase de la tarea se muestran a los estudiantes. Sin embargo, son útiles cuando el profesor examina las evaluaciones @@ -25,5 +25,5 @@ en la parte superior de la p en la parte inferior de la página. La evaluación "extra" actúa a modo de fuente de referencia y recordatorio de los puntos relevantes contenidos en el ejemplo. -

            +

            diff --git a/lang/eu/help/workshop/teachersgradings.html b/lang/eu/help/workshop/teachersgradings.html index 95dcbbc56a3..4eb4a2ba6df 100644 --- a/lang/eu/help/workshop/teachersgradings.html +++ b/lang/eu/help/workshop/teachersgradings.html @@ -1,14 +1,14 @@ -

            Presentación de las Calificaciones del Profesor

            +

            Presentación de las Calificaciones del Profesor

            -

            Opcionalmente, en una tarea calificada por los compañeros se puede hacer que +

            Opcionalmente, en una tarea calificada por los compañeros se puede hacer que los estudiantes vean las calificaciones y comentarios del profesor. Si se desea, éstas se mostrarán tras la fecha tope de envío, o posteriormente si las calificaciones no están disponibles entonces. Los comentarios y calificaciones del profesor pueden ayudar a los estudiantes a hacer sus propias valoraciones -sobre los trabajos de otros estudiantes.

            +sobre los trabajos de otros estudiantes. -

            Tenga en cuenta que, incluso cuando la calificación por parte de los +

            Tenga en cuenta que, incluso cuando la calificación por parte de los compañeros se hace de forma anónima, las calificaciones del profesor se muestran siempre con el nombre del profesor y su foto, si está disponible. -

            +

            diff --git a/lang/eu/help/workshop/ungradedassessments_student.html b/lang/eu/help/workshop/ungradedassessments_student.html index 7b44112412a..ca72b21fc1d 100644 --- a/lang/eu/help/workshop/ungradedassessments_student.html +++ b/lang/eu/help/workshop/ungradedassessments_student.html @@ -1,6 +1,6 @@ -

            Evaluaciones no calificadas (envíos de los estudiantes)

            +

            Evaluaciones no calificadas (envíos de los estudiantes)

            -

            Evaluación de los envíos de los estudiantes Se trata de evaluaciones +

            Evaluación de los envíos de los estudiantes Se trata de evaluaciones que los estudiantes hacen del trabajo de cada uno. En general, estas evaluaciones NO tienen que ser calificadas por el profesor. Suponiendo que cada uno de los envíos de los estudiantes sea evaluado unas cinco veces, el sistema puede hacer un juicio @@ -8,4 +8,5 @@ razonable sobre el rendimiento individual de los estudiantes en la evaluaci de que el número de evaluaciones de los compañeros sea bajo, el profesor podría calificar tales evaluaciones. Cualesquiera calificaciones otorgadas a las evaluaciones pueden tomarse en consideración a la hora de calcular las calificaciones finales de los -estudiantes.

            +estudiantes. + diff --git a/lang/eu/help/workshop/ungradedassessments_teacher.html b/lang/eu/help/workshop/ungradedassessments_teacher.html index 08db159df64..bfb464de9ff 100644 --- a/lang/eu/help/workshop/ungradedassessments_teacher.html +++ b/lang/eu/help/workshop/ungradedassessments_teacher.html @@ -1,16 +1,16 @@ -

            Evaluaciones no calificadas (envíos del profesor)

            +

            Evaluaciones no calificadas (envíos del profesor)

            -

            Evaluaciones de los envíos del profesor Se trata de evaluaciones de los -trabajos de ejemplo que la tarea podría requerir que los estudiantes efectuaran +

            Evaluaciones de los envíos del profesor Se trata de evaluaciones de los +trabajos de ejemplo que la tarea podría requerir que los estudiantes efectuaran antes de enviar su propio trabajo. Estas evaluaciones, en general, deberían ser calificadas por el profesor. Las evaluaciones pondrán de manifiesto si los estudiantes entienden la tarea y, posiblemente, proporcionarán al profesor una retroalimentación útil acerca de si resulta necesaria alguna medida correctiva o un ajuste más preciso de la tarea. Además, si la evaluación recibe una calificación, los estudiantes pueden acceder a los comentarios del profesor. Esos comentarios pueden proporcionar una valiosa guía al -estudiante en la preparación de sus propios trabajos para cumplimentar la tarea.

            +estudiante en la preparación de sus propios trabajos para cumplimentar la tarea.

            -

            Estas evaluaciones no tienen que ser calificadas. El dejar sin calificar la +

            Estas evaluaciones no tienen que ser calificadas. El dejar sin calificar la evaluación que los estudiantes hacen de los ejemplos NO exime al estudiante de enviar su propio trabajo. Se recomienda, sin embargo, que se califique al menos -una muestra de las evaluaciones, por las razones arriba mencionadas.

            \ No newline at end of file +una muestra de las evaluaciones, por las razones arriba mencionadas.

            \ No newline at end of file diff --git a/lang/eu/help/writing.html b/lang/eu/help/writing.html index 19a1bdcf8ed..38eae86bd85 100644 --- a/lang/eu/help/writing.html +++ b/lang/eu/help/writing.html @@ -1,4 +1,4 @@ -

            Idatzi

            +

            Idatzi

            Besteren batek irakurriko duen testua idatzi behar baduzu, saia zaitez idatzen beti ere irakurleari zuzenduz 

            @@ -6,16 +6,16 @@ idatzen beti ere irakurleari zuzenduz 

            ekiditeko. Ez erabili hitz konplexuak ezta joskera aldrebesa ere.

            Foroetan oso lagungarria da zure mezu guztiak laburrak izatea eta gaitik ez desbideratzea. Hobe da ideia bana duten mezu labur batzuk idaztea eta ez ideia -asko dituen meuz luze bakarra. u

            -

            Edita ezazu testua behar beste alditan,  egokia izan arte. Forora +asko dituen meuz luze bakarra. u +

            Edita ezazu testua behar beste alditan,  egokia izan arte. Forora bidalitako mezuetan <?PHP echo ($CFG->maxeditingtime/60) ?> minutu dituzu testua idazteko, gainerako partaideei bidali baino lehen. aldaketak -egiteko bidali eta gero. 

            -

            Besteei erantzuterakoan, saia zaitez galdera interesgarriak egiten. Horrek -bultzatuko gaitu guztiok gaiari buruz pentstzera, eta ikastera!

            +egiteko bidali eta gero. 

            +

            Besteei erantzuterakoan, saia zaitez galdera interesgarriak egiten. Horrek +bultzatuko gaitu guztiok gaiari buruz pentstzera, eta ikastera!

            -

            +

            -

            +

            -

            +

            diff --git a/lang/eu/install.php b/lang/eu/install.php index 1cc43ac3114..69b19e5a4bc 100644 --- a/lang/eu/install.php +++ b/lang/eu/install.php @@ -2,20 +2,110 @@ // install.php - created with Moodle 1.4.1 (2004083101) -$string['chooselanguage'] = 'Aukeratu hizkuntza'; -$string['database'] = 'Datu-basea'; -$string['dataroot'] = 'Datuen direktorioa'; +$string['admindirerror'] = 'Admin-erako zehaztutako direktorioa ez da zuzena'; +$string['admindirname'] = 'Admin direktorioa'; +$string['admindirsetting'] = '

            Muy pocos servidores web usan /admin como URL especial para permitirle acceder a un panel de control o similar. Desgraciadamente, esto entra en conflicto con la ubicación estándar de las páginas de administración de Moodle Usted puede corregir esto renombrando el directorio admin en su instalación, y poniendo aquí ese nuevo nombre. Por ejemplo:

            moodleadmin
            . +Así se corregirán los enlaces admin en Moodle.

            '; +$string['caution'] = 'Kontuz'; +$string['chooselanguage'] = 'Hizkuntza aukeratu'; +$string['compatibilitysettings'] = 'Zure PHP ezarpenak probatzen...'; +$string['configfilenotwritten'] = 'El script instalador no ha podido crear automáticamente un archivo config.php con las especificaciones elegidas. Por favor, copie el siguiente código en un archivo llamado config.php y coloque ese archivo en el directorio raíz de Moodle.'; +$string['configfilewritten'] = 'config.php arrakastaz sortu da'; +$string['configurationcomplete'] = 'Konfigurazioa osatuta'; +$string['database'] = 'Datu basea'; +$string['databasesettings'] = '

            Ahora necesita configurar la base de datos en la que se almacenará la mayor parte de datos de Moodle. Esta base de datos debe haber sido ya creada, y disponer de un nombre de usuario y de una contraseña de acceso.

            +

            Tipo: mysql o postgres7
            +Servidor: e.g., localhost or db.isp.com
            +Nombre: Nombre de la base de datos, e.g., moodle
            +Usuario: nombre de usuario de la base de datos
            +Contraseña: contraseña de la base de datos
            +Prefijo de tablas: prefijo a utilizar en todos los nombres de tabla

            '; +$string['dataroot'] = 'Datuak'; +$string['datarooterror'] = '\'Data\' ezarpena ez da zuzena'; +$string['dbconnectionerror'] = 'Errorea Datu basearekiko konexioan. Mesedez datu basearen ezarpenak egiaztatu.'; +$string['dbcreationerror'] = 'Error al crear la base de datos. No se ha podido crear la base de datos con el nombre y ajustes suministrados'; +$string['dbhost'] = 'Zerbitzaria'; $string['dbpass'] = 'Pasahitza'; -$string['dirroot'] = 'Moodle direktorioa'; -$string['download'] = 'Jaitsi'; -$string['fail'] = 'Errorea'; -$string['fileuploads'] = 'Fitxategiak igo'; +$string['dbprefix'] = 'Taulen aurrizkia'; +$string['dbtype'] = 'Mota'; +$string['directorysettings'] = '

            WWW: +Necesita decir a Moodle dónde está localizado. Especifique la dirección web completa en la que se ha instalado Moodle. Si su sitio web es accesible a través de varias URLs, seleccione la que resulte de acceso más natural a sus estudiantes. No incluya la última barra

            +

            Directorio: +Especifique la ruta OS completa a esta misma ubicación +Asegúrese de que escribe correctamente mayúsculas y minúsculas

            +

            Datos: +Usted necesita un lugar en el que Moodle pueda guardar los archivos subidos. Este directorio debe ser legible Y ESCRIBIBLE por el usuario del servidor web (normalmente \'nobody\' o \'apache\'), pero no debería ser directamente accesible desde la web.

            '; +$string['dirroot'] = 'Direktorioa'; +$string['dirrooterror'] = 'El ajuste de \'Directorio\' es incorrecto. Inténtelo con el siguiente'; +$string['download'] = 'Behera kargatu'; +$string['fail'] = 'Huts egin du'; +$string['fileuploads'] = 'Subidas de archivos'; +$string['fileuploadserror'] = 'Debe estar activado'; +$string['fileuploadshelp'] = '

            La subida de archivos parece estar desactivada en su servidor.

            + +

            Moodle aún puede ser instalado, pero usted no podrá subir archivos a un curso ni imágenes de los usuarios. + +

            Para posibilitar la subida de archivos, usted (o el administrador del sistema) necesita editar el archivo php.ini principal y cambiar el ajuste de file_uploads a \'1\'.

            '; $string['gdversion'] = 'GD bertsioa'; +$string['gdversionerror'] = 'La librería GD debería estar presente para procesar y crear imágenes'; +$string['gdversionhelp'] = '

            Su servidor parece no tener el GD instalado.

            + +

            GD es una librería que PHP necesita para que Moodle procese imágenes (tales como los iconos de los usuarios) y para crear imágenes nuevas (e.g., logos). Moodle puede trabajar sin GD, pero usted no dispondrá de las características mencionadas.

            + +

            Para agregar GD a PHP en entorno Unix, compile PHP usando el parámetro --with-gd.

            + +

            En un entorno Windows, puede editar php.ini y quitar los comentarios de la línea referida a libgd.dll.

            '; $string['installation'] = 'Instalazioa'; +$string['magicquotesruntime'] = 'Magic Quotes Run Time'; +$string['magicquotesruntimeerror'] = 'Debe estar desactivado'; +$string['magicquotesruntimehelp'] = '

            Magic quotes runtime debe estar desactivado para que Moodle funcione adecuadamente.

            + +

            Normalmente está desactivado por defecto... Vea el ajuste magic_quotes_runtime en su archivo php.ini.

            + +

            Si usted no tiene acceso a php.ini, debería poder escribir la siguiente línea en un archivo denominado .htaccess dentro del directorio Moodle: +

            php_value magic_quotes_runtime Off
            +

            '; +$string['memorylimit'] = 'Límite de memoria'; +$string['memorylimiterror'] = 'El límite de memoria PHP es demasiado bajo... Puede tener problemas más tarde.'; +$string['memorylimithelp'] = '

            El límite de memoria PHP en su servidor es actualmente $a.

            + +

            Esto puede ocasionar que Moodle tenga problemas de memoria más adelante, especialmente si usted tiene activados muchos módulos y/o muchos usuarios. + +

            Recomendamos que configure PHP con el límite más alto posible, e.g. 16M. +Hay varias formas de hacer esto: +

              +
            1. Si puede hacerlo, recompile PHP con --enable-memory-limit. +Esto hace que Moodle fije por sí mismo el límite de memoria. +
            2. Si usted tiene acceso al archivo php.ini, puede cambiar el ajuste memory_limit +a, digamos, 16M. Si no lo tiene, pida a su administrador que lo haga por usted. +
            3. En algunos servidores PHP usted puede crear en el directorio Moodle un archivo .htaccess que contenga esta línea: +

              php_value memory_limit 16M

              +

              Sin embargo, en algunos servidores esto hace que todas las páginas PHP dejen de funcionar +(podrá ver los errores cuando mire las páginas) de modo que tendrá que eliminar el archivo .htaccess. +

            '; +$string['parentlanguage'] = 'es'; +$string['pass'] = 'Pass'; $string['phpversion'] = 'PHP bertsioa'; -$string['phpversionerror'] = 'PHP bertsioak gutxienez 4.1.0 behar luke izan'; -$string['safemode'] = 'Modu seguruan'; -$string['safemodeerror'] = 'Modu seguruan Moodlek arazoak izan ditzake'; -$string['wwwroot'] = 'Web-helbidea'; +$string['phpversionerror'] = 'PHP bertsioa 4.1.0 edo goragokoa izan behar'; +$string['phpversionhelp'] = '

            Moodle requiere una versión de PHP 4.1.0 o superior.

            +

            Su versión es $a

            +

            Debe actualizar PHP o acudir a otro servidor con una versión más reciente de PHP

            '; +$string['safemode'] = 'Safe Mode'; +$string['safemodeerror'] = 'Moodle puede tener problemas con \'safe mode\' activado'; +$string['safemodehelp'] = '

            Moodle puede tener varios problemas con \'safe mode\' activado, y probablemente no pueda crear nuevos archivos.

            + +

            Normalmente el \'safe mode\' sólo es activado por servidores web públicos paranoides, así que lo que usted debe hacer es encontrar otra compañía para su sitio Moodle.

            + +

            Si lo desea, puede seguir con la instalación, pero experimentará problemas más adelante.

            '; +$string['sessionautostart'] = 'Autocomienzo de sesión'; +$string['sessionautostarterror'] = 'Deb e estar desactivado'; +$string['sessionautostarthelp'] = '

            Moodle requiere apoyo de sesión y no funcionará sin él.

            + +

            Las sesiones deben estar activadas en el archhivo php.ini para el parámetro session.auto_start.

            '; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'Euskara'; +$string['wwwroot'] = 'WWW'; +$string['wwwrooterror'] = '\'WWW\' ezarpena ez da zuzena'; ?> diff --git a/lang/eu/journal.php b/lang/eu/journal.php index 7bd6fb9f05e..c5e8f890f44 100644 --- a/lang/eu/journal.php +++ b/lang/eu/journal.php @@ -1,30 +1,31 @@ - diff --git a/lang/eu/label.php b/lang/eu/label.php index ba3680b78b6..931841353bb 100644 --- a/lang/eu/label.php +++ b/lang/eu/label.php @@ -2,8 +2,12 @@ // label.php - created with Moodle 1.4.1 (2004083101) -$string['labeltext'] = 'Etiketako testua'; +$string['labeltext'] = 'Etiketa testua'; $string['modulename'] = 'Etiketa'; $string['modulenameplural'] = 'Etiketak'; +$string['parentlanguage'] = 'es'; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'Euskara'; ?> diff --git a/lang/eu/lesson.php b/lang/eu/lesson.php index e194518e8bb..7032db8a48e 100644 --- a/lang/eu/lesson.php +++ b/lang/eu/lesson.php @@ -2,60 +2,30 @@ // lesson.php - created with Moodle 1.4.1 (2004083101) -$string['actionaftercorrectanswer'] = 'Erantzuna egokia izanez gero, zer egin'; -$string['addaquestionpage'] = 'Galdera-orria gehitu'; -$string['answer'] = 'Erantzuna'; +$string['actionaftercorrectanswer'] = 'Ekintza erantzun zuzena eta gero'; +$string['answer'] = 'Erantzun'; $string['attempt'] = 'Saiakera: $a'; $string['attempts'] = 'Saiakerak'; -$string['casesensitive'] = 'Letra larriak eta txikiak bereiztuz'; -$string['checknavigation'] = 'Egiaztatu ondo dabilen'; +$string['available'] = 'Noiztik erabilgarri:'; +$string['checknavigation'] = 'Nabegazioa egiaztatu'; $string['checkquestion'] = 'Galdera egiaztatu'; -$string['confirmdeletionofthispage'] = 'Ziur ezabatu nahi duzula?'; -$string['congratulations'] = 'Zorionak! Ikasgaia amaitu duzu.'; +$string['confirmdeletionofthispage'] = 'Orrialde hau ezabatzea egiaztatu'; +$string['congratulations'] = 'Zorionak - lekzio amaiera heldu da'; $string['continue'] = 'Jarraitu'; -$string['deadline'] = 'Amaitzeko epea'; $string['deleting'] = 'Ezabatzen'; -$string['deletingpage'] = 'Honako orri hau ezabatzen: $a'; -$string['endoflesson'] = 'Ikasgaiaren amaiera'; -$string['fileformat'] = 'Fitxategiaren formatua'; -$string['gradeis'] = 'Nota: $a'; +$string['deletingpage'] = '$a orrialdea ezabatzen'; +$string['description'] = 'Deskribapena'; +$string['endoflesson'] = 'Lekzio amaiera'; $string['here'] = 'hemen'; -$string['importquestions'] = 'Ekarri galderak'; -$string['jump'] = 'Joan'; -$string['maximumnumberofattempts'] = 'Gehienezko saiakera-kopurua'; -$string['minimumnumberofquestions'] = 'Gutxieneko galdera-kopurua'; -$string['modulename'] = 'Ikasgaia'; -$string['modulenameplural'] = 'Ikasgaiak'; -$string['movepagehere'] = 'Orria hona mugitzen'; -$string['moving'] = 'Orria hona mugitzen: $a'; -$string['movingtonextpage'] = 'Hurrengo orrira mugitzen'; -$string['nextpage'] = 'Hurrengo orria'; -$string['noanswer'] = 'Erantzunik eman gabe'; -$string['notdefined'] = 'Ezarri gabea'; +$string['jump'] = 'Jauzi'; +$string['modulename'] = 'Lekzioa'; +$string['modulenameplural'] = 'Lekzioak'; +$string['movepagehere'] = 'Orrialdea hona mjgitu'; +$string['moving'] = '$a orrialdea mugitzen'; +$string['movingtonextpage'] = 'Hurrengo orrialdera mugitzen'; +$string['nextpage'] = 'Hurrengo orrialdea'; +$string['noanswer'] = 'Erantzunik ez'; +$string['notdefined'] = 'Definitu gabe'; $string['notitle'] = 'Izenbururik ez'; -$string['numberofcorrectanswers'] = 'Erantzun zuzenen kopurua: $a'; -$string['numberofpagesviewed'] = 'Ikusitako orrien kopurua: $a'; -$string['outof'] = '$a-(e)tik '; -$string['page'] = 'Orria: $a'; -$string['pagecontents'] = 'Orriaren edukia'; -$string['pages'] = 'Orriak'; -$string['pagetitle'] = 'Orriaren izenburua'; -$string['pleasecheckoneanswer'] = 'Aukeratu erantzun bat '; -$string['pleasecheckoneormoreanswers'] = 'Erantzun bat baino gehiago aukera dezakezu'; -$string['pleaseenteryouranswerinthebox'] = 'Idatzi zure erantzuna'; -$string['questiontype'] = 'Galdera-mota'; -$string['savepage'] = 'Gorde orria'; -$string['showanunansweredpage'] = 'Erakutsi erantzun gabeko orria'; -$string['showanunseenpage'] = 'Erakutsi ikusi gabeko orria'; -$string['singleanswer'] = 'Erantzun bakarra'; -$string['thatsthecorrectanswer'] = 'Hauxe da erantzun zuzena'; -$string['thatsthewronganswer'] = 'Hauxe da erantzun okerra'; -$string['thefollowingpagesjumptothispage'] = 'Hurrengo orriek honetara eramango dute'; -$string['thispage'] = 'Orri hau'; -$string['useeditor'] = 'Editorea erabili'; -$string['youhaveseen'] = 'Ikasgai honetako orri bat baino gehiago ikusi duzu dagoeneko.
            Ikusi zenuen azkeneko orrian nahi duzu hasi?'; -$string['youranswer'] = 'Zure erantzuna'; -$string['yourcurrentgradeis'] = 'Oraingo nota: $a'; -$string['youshouldview'] = 'Gutxienez ikusi beharrekoak: $a'; ?> diff --git a/lang/eu/moodle.php b/lang/eu/moodle.php index eeeda317745..4b58b38e7ad 100644 --- a/lang/eu/moodle.php +++ b/lang/eu/moodle.php @@ -1,13 +1,13 @@ $a'; -$string['activityiscurrentlyhidden'] = 'Barkatu, jarduera hau ezkutuan dago'; +$string['activityclipboard'] = 'Jarduera hona mugitzen: $a'; +$string['activityiscurrentlyhidden'] = 'Barkatu, jarduera hau izkutuan dago'; $string['activitymodule'] = 'Jarduera-modulua'; $string['activityreport'] = 'Jardueraren txostena'; $string['activityselect'] = 'Aukeratu jarduera hau beste norabait joateko'; @@ -29,7 +29,7 @@ $string['addnewuser'] = 'Gehitu erabiltzaile berria'; $string['addresource'] = 'Baliabidea gehitu'; $string['address'] = 'Helbidea'; $string['addstudent'] = 'Ikaslea gehitu'; -$string['addteacher'] = 'Tutorea gehitu'; +$string['addteacher'] = 'Irakaslea gehitu'; $string['admin'] = 'Kudeatzailea'; $string['adminhelpaddnewuser'] = 'Erabiltzaile-kontu berria eskuz sortzeko'; $string['adminhelpassignadmins'] = 'Kudeatzaileek edozer egin dezakete eta noranahi joan'; @@ -38,15 +38,15 @@ $string['adminhelpassignstudents'] = 'Ikastaro batera joan eta ikasleak gehitu k $string['adminhelpassignteachers'] = 'Ikastaroa bilatu eta irudia erabili irakasleak gehitzeko'; $string['adminhelpauthentication'] = 'Barne erabiltzaile-kontuak erabil ditzakezu edo kanpoko datu-baseak'; $string['adminhelpbackup'] = 'Ezarri segurtasun-kopia automatikoak eta beren egutegia'; -$string['adminhelpconfiguration'] = 'Erabaki web gunearen itxura eta ezarpenak'; +$string['adminhelpconfiguration'] = 'Ezarri web gunearen itxura eta funtzionamendua'; $string['adminhelpconfigvariables'] = 'Ezarri web gunearen funtzionamendu orokorra baldintzatzen duten aldagaiak'; $string['adminhelpcourses'] = 'Erabaki ikastaroak eta kategoriak eta esleitu ikasleak'; -$string['adminhelpeditorsettings'] = 'Ezarri HTML editorearen oinarrizko ezarpenak'; +$string['adminhelpeditorsettings'] = 'Ezarri HTML editorearen oinarrizko ezaugarriak'; $string['adminhelpedituser'] = 'Ikusi erabiltzaile-kontuen zerrenda eta aldatu bat edo beste'; $string['adminhelpenrolments'] = 'Aukeratu barne edo kanpo moduak izen-ematea kontrolatzeko'; $string['adminhelpfailurelogs'] = 'Ikusi huts egindako sarrerak'; $string['adminhelplanguage'] = 'Hizkuntza-ezaugarriak ikusi eta aldatzeko'; -$string['adminhelplogs'] = 'Ikusi web gune honetako jarduera guztietan zer gertatu den'; +$string['adminhelplogs'] = 'Ikusi web gune honetan izandako jarduera guztien log-ak'; $string['adminhelpmanageblocks'] = 'Kudeatu instalatutako blokeak eta beren ezaugarriak'; $string['adminhelpmanagedatabase'] = 'Sartu datu-basera zuzenean. Kontuz!'; $string['adminhelpmanagefilters'] = 'Aukeratu testu-iragazkiak eta beren ezaugarriak'; @@ -65,17 +65,17 @@ $string['advancedfilter'] = 'Bilaketa aurreratua'; $string['again'] = 'Berriro'; $string['all'] = 'Dena(k)'; $string['allactivities'] = 'Jarduera guztiak'; -$string['alldays'] = 'Orain arteko guztiak'; +$string['alldays'] = 'Egunero'; $string['allfieldsrequired'] = 'Eremu guztiak beharrezkoak dira'; $string['allgroups'] = 'Talde guztiak'; $string['alllogs'] = 'Log guztiak'; $string['allow'] = 'Baimendu'; $string['allowguests'] = 'Ikastaro honetan bisitariak sar daitzeke'; -$string['allowinternal'] = 'Barne-moduak ere baimendu'; +$string['allowinternal'] = 'Barne moduak ere baimendu'; $string['allownot'] = 'Ez baimendu'; $string['allparticipants'] = 'Partaide guztiak'; $string['allteachers'] = 'Tutore guztiak'; -$string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,Ñ,O,P,Q,R,S,T,U,V,W,X,Y,Z'; +$string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; $string['alphanumerical'] = 'Alfabetoaren letrak eta zenbakiak, besterik ezin erabili'; $string['alreadyconfirmed'] = 'Izen-ematea dagoeneko baieztatuta'; $string['always'] = 'Beti'; @@ -83,18 +83,18 @@ $string['answer'] = 'Erantzun'; $string['areyousuretorestorethis'] = 'Jarraitu nahi duzu?'; $string['areyousuretorestorethisinfo'] = 'Geroago izango duzu aukera kopia hau ikastaro batean gehitzeko edo ikastaro berri bat sortzeko'; $string['assessment'] = 'Ebaluaketa'; -$string['assignadmins'] = 'Kudeatzaileak aukeratu'; -$string['assigncreators'] = 'Sortzaileak aukeratu'; -$string['assignstudents'] = 'Ikasleak aukeratu'; +$string['assignadmins'] = 'Kudeatzaileak esleitu'; +$string['assigncreators'] = 'Sortzaileak esleitu'; +$string['assignstudents'] = 'Ikasleak esleitu'; $string['assignstudentsnote'] = 'Oharra: agian ez duzu orri hau erabili behar, ikasleek berek eman baitezakete izena ikastaro honetan'; -$string['assignstudentspass'] = 'Agian nahiko da ikasleei partaide-giltza jakinarazten badiezu: \'$a\'.'; -$string['assignteachers'] = 'Tutorea aukeratu'; +$string['assignstudentspass'] = 'Agian nahiko da ikasleei pasahitza jakinarazten badiezu: \'$a\'.'; +$string['assignteachers'] = 'Tutorea esleitu'; $string['authentication'] = 'Egiaztatzea'; $string['autosubscribe'] = 'Izen-emate automatikoa foroan'; $string['autosubscribeno'] = 'Ez: ez eman nire izena automatikoki foroetan.'; $string['autosubscribeyes'] = 'Bai: eman nire izena foroan, idazten baldin badut.'; $string['availability'] = 'Eskuragarritasuna'; -$string['availablecourses'] = 'Ikastaroak'; +$string['availablecourses'] = 'Ikastaroak eskura'; $string['backup'] = 'Segurtasun-kopia'; $string['backupcoursefileshelp'] = 'Aukeratuz gero, ikastaroetako fitxategiak segurtasun-kopia automatikoetan sartuko dira.'; $string['backupdate'] = 'Segurtasun-kopiaren data'; @@ -109,7 +109,7 @@ $string['backuplogshelp'] = 'Aukeratuz gero, ikastaroen logak ere sartuko dira s $string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; $string['backupnoneusersinfo'] = 'Oharra: modulo guztien segurtasun-kopia erabiltzaileen daturik gabe egitea aukeratu duzu. \"Ariketa\" eta \"tailerra\" moduloak ez dira segurtasun-kopia mota honekin bateragarriak eta, beraz, kendu egin behar dira.'; $string['backuporiginalname'] = 'Segurtasun-kopiaren izena'; -$string['backupsavetohelp'] = 'Zein direktoriotan gorde nahi duzu segurtasun-kopia? Horren helbide osoa idatzi.
            (Ez idatzi ezer ikastaroari dagokion direktorioan gorde dadin)'; +$string['backupsavetohelp'] = 'Zein direktoriotan gorde nahi duzu segurtasun-kopia? Horren helbide osoa idatzi.
            (Ez idatzi ezer ikastaroari dagokion direktorioan gorde dadin)'; $string['backupuserfileshelp'] = 'Erabaki erabiltzaileen fitxategiak (profilaren irudiak adibidez) segurtasun-kopia automatikoetan sartu behar diren ala ez. '; $string['backupusershelp'] = 'Erabaki erabiltzaile guztiak sartu nahi dituzun zerbitzarian ala ikastaro bakoitzekoak bakarrik.'; $string['backupversion'] = 'Segurtasun-kopiaren bertsioa'; @@ -121,11 +121,11 @@ $string['blocksuccess'] = '$a taulak egoki sortu dira.'; $string['bycourseorder'] = 'Ikastaro-ordenaren arabera'; $string['byname'] = '$a-(r)en arabera'; $string['cancel'] = 'Utzi'; -$string['categories'] = 'Ikastaro-motak'; -$string['category'] = 'Mota'; -$string['categoryadded'] = '\'$a\' ikastaro-mota gehitu da'; -$string['categorydeleted'] = '\'$a\' ikastaro-mota ezabatu da'; -$string['categoryduplicate'] = '\'$a\' izeneko ikastaro-mota oraindik dago'; +$string['categories'] = 'Ikastaro-kategoriak'; +$string['category'] = 'Kategoria'; +$string['categoryadded'] = '\'$a\' kategoria gehitu da'; +$string['categorydeleted'] = '\'$a\' kategoria ezabatu da'; +$string['categoryduplicate'] = '\'$a\' izeneko kategoria oraindik dago'; $string['changedpassword'] = 'Aldatutako pasahitza'; $string['changepassword'] = 'Pasahitza aldatu'; $string['changessaved'] = 'Aldaketak gordeta'; @@ -137,7 +137,7 @@ $string['choose'] = 'Aukeratu'; $string['choosecourse'] = 'Ikastaroa aukeratu'; $string['chooseenrolmethod'] = 'Izena emateko modu lehenetsia'; $string['chooselivelogs'] = 'Edo zer ari den orain gertatzen ikusi'; -$string['chooselogs'] = 'Aukeratu noren eta noizko agerraldia ikusi nahi duzun'; +$string['chooselogs'] = 'Aukeratu zein log ikusi'; $string['choosereportfilter'] = 'Aukeratu txostenerako iragazkia'; $string['choosetheme'] = 'Itxura aukeratu'; $string['chooseuser'] = 'Erabiltzaile bat aukeratu'; @@ -145,7 +145,7 @@ $string['city'] = 'Hiria/Herria'; $string['cleaningtempdata'] = 'Behin behineko datuak (TEMP) ezabatzen '; $string['clicktochange'] = 'Sakatu aldatzeko'; $string['closewindow'] = 'Itxi leiho hau'; -$string['comparelanguage'] = 'Oraingo hizkuntza alderatu eta editatu'; +$string['comparelanguage'] = 'Oraingo hizkuntza konparatu eta editatu'; $string['complete'] = 'Osoa'; $string['configallowunenroll'] = '\"Bai\" aukeratuz gero, ikasleek berek baja eman ahal izango dute ikastaroan nahi dutenean. Bestela, ezin izango dute eta prozesu hau tutoreek eta kudeatzaileek bakarrik kontrolatuko dute.'; $string['configallusersaresitestudents'] = 'Web gunearen lehen orriko jardueretan, erabiltzaile guztiak ikasletzat hartu behar dira? Baietz esanez gero, egiaztatutako erabiltzaile guztiek parte hartu ahal izango dute ikasle bezala. Ezetz esanez gero, ikastaro batean gutxienez parte hartzen ari diren ikasleek bakarrik izango dute aukera lehen orriko jardueretan parte hartzeko.'; @@ -163,7 +163,7 @@ $string['configlangdir'] = 'Hizkuntza gehienak ezkerretik eskumara idazten dira, $string['configlocale'] = 'Gune osorako lokalizazio bat aukeratu - honek daten formatu eta hizkuntzari eragingo dio. Data lokalizazio hau zure sistema eragilean izan behar duzu. (Adibidez en_US edo es_ES). Ez badakizu zer aukeratu zurian utzi.'; $string['configlongtimenosee'] = 'Ikasleek ez badute denbora luze batean saiorik hasten, ikastaroetatik automatikoki bajan ematen zaie. parametro honek denbora muga hori ezartzen du.'; $string['configmaxeditingtime'] = 'Honek forora egindako bidalketak, egunkariari erantzunak... berreditatzeko duten denbora ezartzen du, Gehienetan 30 minutu balio egokia da.'; -$string['configproxyhost'] = 'Zerbitzari honek proxy bat (adibidez firewall bat) erabili behar badu Internetera sarbidea izateko, proxy horren helbidea eta kaia sartu hemen. Bestela zurian utzi.'; +$string['configproxyhost'] = 'Zerbitzari honek proxy bat (adibidez firewall bat) erabili behar badu Internetera sarbidea izateko, proxy horren helbidea eta kaia sartu hemen. Bestela zurian utzi.'; $string['configslasharguments'] = 'Fitxategiak (irudiak, igotakoak etabar) \'slash arguments\' delakoak (bigarren aukera hemen) erabiltzen dituen script baten bitartez banatzen dira. Metodo honek fitxategiak web nabigatzaileek, proxy zerbitzariek, etabar katxean errezago gordetzea baimentzen du. Zoritxarrez, PHP zerbitzari batzuk ez dute metodo hau baimentzen, beraz arazorik baduzu igotako fitxategiak eta irudiak ikusteko orduan (erbiltzaileen argazkia adibidez), aldagai hau lehen aukerara pasatu'; $string['configsmtphosts'] = 'Moodlek ePosta bidaltzeko erabili behrko lukeen SMTP zerbitzari baten edo gehiagoren helbide osoa eman (adibidez \'posta.adibidea.com\' edo \'posta.adibidea.com;mail.eredua.com\'). Zurian uzten baduzu, Moodlek PHPak lehenetsitako metodoa erabiliko du ePosta bidaltzeko.'; $string['configsmtpuser'] = 'Goian SMTP zerbitzari bat ezarri baduzu, eta zerbitzariak autentifikazioa behar badu, erabiltzaile izena eta pasahitza sartu hemen.'; @@ -171,7 +171,6 @@ $string['configunzip'] = 'Zure unzip programaren kokalekua ezarri (Unix bakarrik $string['configuration'] = 'Ezarpenak'; $string['configvariables'] = 'Aldagaiak ezarri'; $string['configzip'] = 'Zure zip programaren kokalekua ezarri (Unix bakarrik). Hau zip fitxategian zerbitzarian sortzeko beharrezkoa da.'; -$string['confirm'] = 'Baieztatu'; $string['confirmed'] = 'Zure izen-ematea berretsi da'; $string['confirmednot'] = 'Zure izen-ematea oraindik berretsi gabe'; $string['continue'] = 'Jarraitu'; @@ -193,27 +192,21 @@ $string['coursecreators'] = 'Ikastaro-sortzaileak'; $string['coursefiles'] = 'Ikastaroko fitxategiak'; $string['courseformats'] = 'Ikastaro-formatuak'; $string['courseinfo'] = 'Ikastaroaren inguruko argibideak'; -$string['courserestore'] = 'Berreskuratu ikastaroa'; $string['courses'] = 'Ikastaroak'; $string['courseupdates'] = 'Ikastaroen eguneraketak'; $string['create'] = 'Sortu'; $string['createaccount'] = 'Nire kontu berria sortu'; $string['createfolder'] = 'Sortu direktorio berria hemen: $a '; -$string['createuserandpass'] = 'Erabiltzaile eta pasahitz berri bat sortu barrura sartzeko'; +$string['createuserandpass'] = 'Erabiltzaile eta pasahitz berri bat sortu saioa hasteko'; $string['createziparchive'] = 'Zip-fitxategia sortu'; $string['currentlanguage'] = 'Oraingo hizkuntza'; $string['currentlocaltime'] = 'bertako ordua'; -$string['currentpicture'] = 'Oraingo argazkia'; -$string['currentversion'] = 'Oraingo bertsioa'; $string['databasechecking'] = 'Moodle datu-basea bertsioberritzen $a-tik ->oldversion $a-ra ->newversion...'; $string['databasesetup'] = 'Datu-basea ezartzen'; $string['databasesuccess'] = 'Datu-basea ongi eguneratu da'; $string['databaseupgrades'] = 'Datu-basea eguneratzen'; -$string['date'] = 'Data'; -$string['datemostrecentfirst'] = 'Data - berrienak lehenik'; -$string['datemostrecentlast'] = 'Data - berrienak azkenik'; $string['day'] = 'egun'; -$string['days'] = 'egun'; +$string['days'] = 'egunak'; $string['defaultcoursefullname'] = 'Ikastaro izen osoa 101'; $string['defaultcourseshortname'] = 'CF101'; $string['defaultcoursestudent'] = 'Ikaslea'; @@ -224,24 +217,19 @@ $string['defaultcourseteachers'] = 'Tutoreak'; $string['delete'] = 'Ezabatu'; $string['deleteall'] = 'Dena ezabatu'; $string['deletecheck'] = '$a ezabatu?'; -$string['deletecheckfiles'] = 'Ziur al zaude fitxategi hauek ezabatu nahi dituzula?'; -$string['deletecheckfull'] = 'Ziur al zaude $a guztiz ezabatu nahi duzula?'; -$string['deletecheckwarning'] = 'Fitxategi hauek ezabatu egingo dituzu'; +$string['deletecheckfull'] = 'Erabat zihur zaude $a guztiz ezabatu nahi duzula?'; $string['deletecompletely'] = 'Guztiz ezabatu'; $string['deletecourse'] = 'Ikastaro bat ezabatu'; -$string['deletecoursecheck'] = 'Ziur al zaude ikastaro hau eta bere eduki guztiak guztiz ezabatu nahi dituzula?'; +$string['deletecoursecheck'] = 'Erabat zihur zaude ikastaro hau eta bare eduki guztiak guztiz ezabatu nahi duzula?'; $string['deleted'] = 'Ezabatuta'; $string['deletedactivity'] = '$a ezabatuta'; $string['deletedcourse'] = '$a guztiz ezabatu da'; $string['deletednot'] = 'Ezin izan da $a ezabatu!'; -$string['deleteselected'] = 'Ukeratutakoa ezabatu'; $string['deletingcourse'] = '$a ezabatzen'; -$string['deletingexistingcoursedata'] = 'Ikastaroko datuak ezabatzen'; -$string['deletingolddata'] = 'Datu zaharrak ezabatzen'; $string['department'] = 'Departamentua'; $string['description'] = 'Deskripzioa'; -$string['displayingrecords'] = '$a elementu erakusten'; -$string['displayingusers'] = 'Ikasleak erakusten $a->start, lehena; $a->end, azkena '; +$string['displayingrecords'] = '$a elementu bistaratzen'; +$string['displayingusers'] = 'Ikasleak bistaratzen $a->start -tik $a->end -ra '; $string['documentation'] = 'Moodle dokumentazioa'; $string['donotask'] = 'Ez galdetu'; $string['down'] = 'Jaitsi'; @@ -253,16 +241,12 @@ $string['duplicatinga'] = 'Bikoizten: $a'; $string['duplicatingain'] = '$a->what bikoizten: $a->in '; $string['edit'] = '$a editatu'; $string['editcoursesettings'] = 'Ikastaroaren ezarpenak editatu'; -$string['editfiles'] = 'Fitxategiak editatu'; -$string['editgroupprofile'] = 'Taldearen profila editatu'; -$string['editinga'] = '$a editatzen'; +$string['editinga'] = '$a bat editatzen'; $string['editmyprofile'] = 'Profila editatu'; $string['editsummary'] = 'Laburpena editatu'; -$string['editthisactivity'] = 'Aktibitate hau editatu'; -$string['edituser'] = 'Erabiltzaile-kontuak editatu'; +$string['editthisactivity'] = 'Aktibidade hau editatu'; +$string['edituser'] = 'Erabiltzaile kontuak editatu'; $string['email'] = 'E-posta helbidea'; -$string['emailactive'] = 'E-posta erabili ala ez'; -$string['emailagain'] = 'E-posta (berriro)'; $string['emailconfirm'] = 'Zure kontua berretsi'; $string['emailconfirmation'] = 'Kaixo $a->firstname, @@ -277,50 +261,37 @@ E-posta programa gehienetan goiko helbidea lotura urdin bat gisa agertu beharko Gorantziak \'$a->sitename\' guneko administratzailearen partez, $a->admin'; -$string['emailconfirmsent'] = '

            E-posta mezu bat bidali da zure hurrengo helbide honetara: $a

            -

            Izena ematen bukatzeko argibide erraz batzuk ditu.

            -

            Horrekin arazoak badituzu gunearen administratzailearekin jarri kontaktuan.

            '; -$string['emaildigest'] = 'Foroetako mezuak e-postaz nola jaso'; -$string['emaildigestcomplete'] = 'Egunero jaso foroetako MEZU GUZTIAK OSORIK e-posta bakar batean'; -$string['emaildigestoff'] = 'Foroetako mezu bakoitzeko e-posta mezu bat jaso'; -$string['emaildigestsubjects'] = 'Egunero jaso foroetako IZENBURUAK BAKARRIK e-posta bakar batean'; -$string['emaildisable'] = 'Ez erabili e-posta helbide hau'; -$string['emaildisableclick'] = 'Sakatu hemen helbide honetara inongo e-postarik ez bidaltzeko'; +$string['emailconfirmsent'] = '

            E-posta mezu bat bidali da zure hurrengo helbide honetara: $a +

            Izena ematen bukatzeko argibide erraz batzuk ditu. +

            Horrekin arazoak badituzu gunearen administratzailearekin jarri kontaktuan.'; +$string['emaildigest'] = 'E-postaren banatzeko modua'; +$string['emaildigestcomplete'] = 'Osoa'; $string['emaildisplay'] = 'E-posta ikusi'; -$string['emaildisplaycourse'] = 'Nire e-posta helbidea nire ikastaro-kideei soilik erakutsi'; -$string['emaildisplayno'] = 'Nire e-posta helbidea mundu guztiari ezkutatu'; -$string['emaildisplayyes'] = 'Edonori nire e-posta helbidea ikusten utzi'; -$string['emailenable'] = 'Erabili e-posta helbide hau'; -$string['emailenableclick'] = 'Sakatu hemen helbide honetara e-postak bidali ahal izateko'; +$string['emaildisplaycourse'] = 'Nire e-posta helbidea ikustea nire ikastaro kideei soilik baimendu'; +$string['emaildisplayno'] = 'Nire benetako e-posta helbidea mundu guztiari izkutatu'; +$string['emaildisplayyes'] = 'Edonori nire e-posta helbidea ikustea baimendu'; $string['emailexists'] = 'E-posta helbide hau izena emateko erabilita dago dagoeneko.'; -$string['emailformat'] = 'E-postaren formatua'; +$string['emailformat'] = 'E-posta formatua'; $string['emailmustbereal'] = 'Oharra: zure e-posta helbideak benetakoa izan behar du.'; -$string['enrolledincourse'] = '\"$a\" ikastaroan izena emanda'; -$string['enrolledincoursenot'] = '\"$a\" ikastaroan izena eman gabe'; -$string['enrollfirst'] = 'Ikastaroren batean izena eman behar duzu web guneko jarduerak erabiltzeko'; -$string['enrolmentconfirmation'] = 'Ikastaro honetan izena ematear zaude. Ziur al zaude?'; $string['enrolmentkey'] = 'Partaide giltza'; -$string['enrolmentkeyfrom'] = 'Ikastaro honek \'Partaide giltza\' bat behar du - une baterako
            +$string['enrolmentkeyfrom'] = 'Ikastaro honek \'Partaide giltza\' bat behar du - une baterako
            pasahitz bat,$a(e)k zuri emandakoa'; -$string['enrolmentkeyhint'] = 'Partaide giltza hori ez da zuzena, mesedez berriro saiatu
            +$string['enrolmentkeyhint'] = 'Partaide giltza hori ez da zuzena, mesedez berriro saiatu
            (Laguntza txiki bat - honela hasten da: \'$a\')'; $string['entercourse'] = 'Ikastaro honetan sartzeko hemen egin klik'; $string['enteremailaddress'] = 'E-posta helbidea sartu zure pasahitza berrezartzeko eta pasahitz berria e-postaz jasotzeko.'; $string['error'] = 'Errorea'; -$string['errortoomanylogins'] = 'Barkatu, saioa hasteko saiakera gehiegi egin duzu. Zure nabigatzailea berriz abiatu beharko duzu.'; -$string['existingadmins'] = 'Dauden kudeatzaileak'; +$string['errortoomanylogins'] = 'Barkatu, saio hasiera saiakera kopuru muga gainditu duzu. Zure nabigatzailea berrabiarazi.'; +$string['existingadmins'] = 'Dauden administratzaileak'; $string['existingcourse'] = 'Dauden ikastaroak'; -$string['existingstudents'] = 'Izena emandako ikasleak'; $string['existingteachers'] = 'Dauden tutoreak'; $string['feedback'] = 'Erantzunak'; $string['file'] = 'Fitxategia'; $string['filemissing'] = '$a falta da'; $string['files'] = 'Fitxategiak'; -$string['filesfolders'] = 'Fitxategiak/direktorioak'; $string['filloutallfields'] = 'Mesedez formulario honetako eramu guztiak bete'; -$string['firstdayofweek'] = 'Astelehena'; $string['firstname'] = 'Izena'; -$string['firsttime'] = 'Matrikulatu gabeko ikasleak'; +$string['firsttime'] = 'Hona zatozen lehen aldia da?'; $string['followingoptional'] = 'Hurrengo elementuak aukerazkoak dira'; $string['followingrequired'] = 'Hurrengo elementuak beharrezkoak dira'; $string['force'] = 'Behartu'; @@ -330,7 +301,6 @@ $string['forceno'] = 'Ez behartu'; $string['forgotten'] = 'Zure erabiltzaile izena eta pasahitza ahaztu dituzu?'; $string['format'] = 'Formatua'; $string['formathtml'] = 'HTML formatua'; -$string['formatplain'] = 'Testu laua'; $string['formatsocial'] = 'Formatu irekia'; $string['formattext'] = 'Moodle formatu automatikoa'; $string['formattexttype'] = 'Formatua eman'; @@ -340,7 +310,7 @@ $string['frontpagecategorynames'] = 'Erakutsi kategorien zerrenda'; $string['frontpagecourselist'] = 'Erakutsi ikastaroen zerrenda'; $string['frontpagedescription'] = 'Hasiera orriaren deskripzioa'; $string['frontpageformat'] = 'Hasiera orriaren formatua'; -$string['frontpagenews'] = 'Erakutsi albiste berriak'; +$string['frontpagenews'] = 'Erakutsi zer berriak'; $string['fulllistofcourses'] = 'Ikastaro guztiak'; $string['fullname'] = 'Izen osoa'; $string['fullprofile'] = 'Profil osoa'; @@ -366,23 +336,11 @@ $string['grade'] = 'Kalifikazioa'; $string['grades'] = 'Kalifikazioak'; $string['group'] = 'Taldea'; $string['groupadd'] = 'Gehitu talde berria'; -$string['groupaddusers'] = 'Gehitu aukeratutakoa taldera'; -$string['groupmemberssee'] = 'Taldekideak erakutsi'; -$string['groupmembersselected'] = 'Aukeratutako taldeko kideak'; -$string['groupmode'] = 'Taldeak egin ala ez'; -$string['groupmodeforce'] = 'Talde-modua behartu'; -$string['groupmy'] = 'Neure taldea'; -$string['groupnonmembers'] = 'Taldean ez daudenak'; -$string['groupnotamember'] = 'Barkatu, baina ez zara talde horretako kide'; -$string['groups'] = 'Taldeak'; -$string['groupsnone'] = 'Talderik ez'; -$string['groupsseparate'] = 'Taldeok ezin elkar ikusi'; -$string['groupsvisible'] = 'Taldeok elkar ikusten dute'; $string['guestskey'] = 'Giltzadun bisitariak onartu'; $string['guestsno'] = 'Bisitariei sarrera ukatu'; -$string['guestsnotallowed'] = 'Barkatu, ikastaro honek ez die bisitariei sartzen uzten.'; +$string['guestsnotallowed'] = 'Barkatu, \'$a\'(e)k ez die bisitariei sarrera baimentzen.'; $string['guestsyes'] = 'Giltza gabeko bisitariak onartu'; -$string['guestuser'] = 'Bisitari-motako erabiltzailea'; +$string['guestuser'] = 'Bisitari erabiltzailea'; $string['guestuserinfo'] = 'Erabiltzaile hau berezia da eta ikastaro batzuetan soilik begiratzera sartzea baimentzen die.'; $string['help'] = 'Laguntza'; $string['helphtml'] = 'HTML-a nola idatzi'; @@ -392,12 +350,7 @@ $string['helpreading'] = 'Arretaz irakurri'; $string['helprichtext'] = 'Richtext HTML editoreari buruz'; $string['helptext'] = 'Testua nola idatzi'; $string['helpwriting'] = 'Kontuz idatzi'; -$string['hiddensections'] = 'Ezkutuko atalak'; -$string['hiddensectionscollapsed'] = 'Ezkutuko atalak laburtuta erakutsi'; -$string['hiddensectionsinvisible'] = 'Ezkutuko atalak ez erakutsi inola ere'; $string['hide'] = 'Ezkutatu'; -$string['hidepicture'] = 'Ezkutatu irudia'; -$string['hidesettings'] = 'Ezkutatu ezarpenak'; $string['hits'] = 'Agerraldiak'; $string['hitsoncourse'] = '$a->coursename ikastaroak $a(e)k ->username egindako agerraldiak'; $string['hitsoncoursetoday'] = 'Gaur $a->coursename ikastaroan $a(e)k ->username egindako agerraldiak'; @@ -413,7 +366,6 @@ $string['htmleditordisabledbrowser'] = 'Richtext editorea ez dago eskuragarri ez $string['htmlformat'] = 'HTML formatua'; $string['icqnumber'] = 'ICQ zenbakia'; $string['idnumber'] = 'ID zenbakia'; -$string['institution'] = 'Erakundea'; $string['invalidemail'] = 'E-posta helbide baliogabea'; $string['invalidlogin'] = 'Saio hasiera baliogabea, mesedez berriro saiatu'; $string['ip_address'] = 'IP helbidea'; @@ -432,46 +384,43 @@ $string['latestnews'] = 'Azken berriak'; $string['leavetokeep'] = 'Zurian utzi orain duzun pasahitza mantentzeko'; $string['license'] = 'GPL Lizentzia'; $string['listfiles'] = 'Fitxategien zerrenda $a-(e)an'; -$string['listofallpeople'] = 'Partaide guztien zerrenda'; +$string['listofallpeople'] = 'Jende guztiaren zerrenda'; $string['livelogs'] = 'Aurreko orduko log-ak zuzenean'; $string['locale'] = 'eu'; $string['location'] = 'Kokagunea'; -$string['loggedinas'] = '$a barruan da'; -$string['loggedinnot'] = 'Ez zara sartu oraindik.'; -$string['login'] = 'Sartu'; +$string['loggedinas'] = '$a gisa hasi duzu saioa'; +$string['loggedinnot'] = 'Ez duzu saiorik hasi.'; +$string['login'] = 'Saioa hasi'; $string['login_failure_logs'] = 'Sarrera okerren log-ak'; -$string['loginas'] = 'Honela sartu:'; -$string['loginguest'] = 'Bisitari gisa sartu'; -$string['loginsite'] = 'Gunean sartu'; +$string['loginas'] = 'Saioa honela hasi'; +$string['loginguest'] = 'Bisitari gisa hasi saioa'; +$string['loginsite'] = 'Gunean saioa hasi'; $string['loginsteps'] = 'Kaixo! Ikastarora sarbide osoa izateako minutu bat eman beharko duzu web gune honetan zuretzat kontu bat sortuz. Ikastaro bakoitzak une bateko \"partaide giltza\" ere izan dezake, oraingoz beharko ez duzuna. Hauek dira urratsak: -

              -
            1. Kontu berria formularioa bete zure datuekin.
            2. -
            3. E-posta mezu bat bidaliko dugu berehala zure e-posta helbidera.
            4. -
            5. Mezua irakurri eta agertzen den loturan klik egin.
            6. -
            7. Zure kontua berretsiko dugu eta saioa hasiko duzu.
            8. -
            9. Orduan, jarraitu nahi duzun ikastaroa aukeratu.
            10. -
            11. \"Partaide-giltza\" bat eskatzen badizu, zure irakasleak emandakoa erabili ezazu. - Honekin ikastaroaren partaide bihurtuko zara.
            12. -
            13. Ikastaro osora sarbidea izango duzu. Hemendik aurrera zure erabiltzaile izen - eta pasahitza besterik ez dituzu sartu beharko (orri honetako formularioan) partaide zaren edozein ikastarotan sartzeko.
            14. -
            '; -$string['loginstepsnone'] = '

            Kaixo!

            -

            Ikastaroetan sarrera-eskubide osoa izateko -zuretzat kontu bat sortu beharko duzu.

            -

            Egin behar duzun guztia erabiltzaile izen eta pasahitz bat sortzea da eta -formulario honetan erabili!

            -

            Beste inork aukeratu badu dagoeneko zure erabiltzaile izena, -beste izen bat erabiliz saiatu beharko zara.

            '; +
              +
            1. Kontu berria formularioa bete zure datuekin. +
            2. E-posta mezu bat bidaliko dugu berehala zure e-posta helbidera. +
            3. Mezua irakurri eta agertzen den loturan klik egin. +
            4. Zure kontua berretsiko dugu eta saioa hasiko duzu. +
            5. Orduan, jarraitu nahi duzun ikastaroa aukeratu. +
            6. \"Partaide-giltza\" bat eskatzen badizu, zure irakasleak emandakoa erabili ezazu. + Honekin ikastaroaren partaide bihurtuko zara. +
            7. Ikastaro osora sarbidea izango duzu. Hemendik aurrera zure erabiltzaile izen + eta pasahitza besterik ez dituzu sartu beharko (orri honetako formularioan) partaide zaren edozein ikastarotan sartzeko. +
            '; +$string['loginstepsnone'] = 'Kaixo!

            Ikastaroetan sarrera-eskubide osoa izateko +zuretzat kontu bat sortu beharko duzu.

            Egin behar duzun guztia erabiltzaile izen eta pasahitz bat sortzea da eta +formulario honetan erabili!

            Beste inork aukeratu badu dagoeneko zure erabiltzaile izena, +beste izen bat erabiliz saiatu beharko zara.'; $string['loginto'] = '$a gunean saioa hasi'; -$string['loginusing'] = 'Sartu hemen zure erabiltzaile-izen eta pasahitzarekin'; -$string['logout'] = 'Irten'; +$string['loginusing'] = 'Saioa hemen hasi zure erabiltzaile izen eta pasahitzarekin'; +$string['logout'] = 'Saioa bukatu'; $string['logs'] = 'Agerraldiak'; $string['mainmenu'] = 'Menu nagusia'; -$string['makeafolder'] = 'Direktorio bat sortu'; +$string['makeafolder'] = 'Karpeta bat sortu'; $string['makeeditable'] = '\'$a\' web-zerbitzariak (Apache-k adibidez) editatzeko modukoa bihurtzen baduzu, fitxategi hau zuzenean editatu ahal izango duzu orri honetatik.'; $string['manageblocks'] = 'Blokeak'; $string['managedatabase'] = 'Datu-basea kudeatu'; @@ -482,7 +431,6 @@ $string['markthistopic'] = 'Gai hau oraingoa gisa nabarmendu'; $string['maximumchars'] = '$a karaktere gehienez'; $string['maximumgrade'] = 'Gehienezko kalifikazioa'; $string['maximumshort'] = 'Gehienez'; -$string['maximumupload'] = 'Fitxategiak igotzeko gehienezko tamaina'; $string['maxsize'] = 'Gehienezko tamaina: $a'; $string['min'] = 'minutu'; $string['mins'] = 'minutu'; @@ -564,16 +512,14 @@ $string['newsitems'] = 'berri'; $string['newsitemsnumber'] = 'Bistaratu beharreko berrien elementuak'; $string['newuser'] = 'Erabiltzaile berria'; $string['newusers'] = 'Erabiltzaile berriak'; -$string['next'] = 'Hurrengoa'; $string['no'] = 'Ez'; -$string['nobody'] = 'Inor ez'; $string['nocoursesyet'] = 'Ez dago ikastarorik kategoria honetan'; $string['noexistingadmins'] = 'Ez dago administratzailerik, hau akats larria da eta mezu hau ez zenuke inoiz ikusi beharko.'; $string['noexistingteachers'] = 'Ez dago tutorerik'; $string['nofilesyet'] = 'Ez da fitxategirik igo zure ikastarora oraindik'; -$string['nograde'] = 'Kalifikaziorik ez'; +$string['nograde'] = 'kalifikaziorik ez'; $string['noimagesyet'] = 'Ez da irudirik igo zure ikastarora oraindik'; -$string['none'] = 'Bat ere ez'; +$string['none'] = 'Bat ez'; $string['nopotentialadmins'] = 'Ez dago administratzaile posiblerik'; $string['nopotentialteachers'] = 'Ez dago tutore posiblerik'; $string['normal'] = 'Arrunta'; @@ -583,15 +529,13 @@ $string['nostudentsyet'] = 'Ez dago ikaslerik ikastaro honetan oraindik'; $string['nosuchemail'] = 'Ez dago horrelako e-posta helbiderik'; $string['notavailable'] = 'Ez dago eskura'; $string['noteachersyet'] = 'Ez dago tutorerik ikastaro honetan oraindik'; -$string['notenrolled'] = '$a ez da ikastaro honetako partaide.'; +$string['notenrolled'] = '$a ez da ikastaro honen partaide.'; $string['nothingnew'] = 'Ez dago ezer berririk aurreko bisitatik'; $string['nousersyet'] = 'Ez dago erabiltzailerik oraindik'; $string['now'] = 'orain'; $string['numberweeks'] = 'Aste/Gai kopurua'; $string['numdays'] = '$a egun'; -$string['numhours'] = '$a ordu'; $string['numminutes'] = '$a minutu'; -$string['numseconds'] = '$a segundu'; $string['numviews'] = '$a ikustaldi'; $string['numweeks'] = '$a aste'; $string['numwords'] = '$a hitz'; @@ -609,15 +553,14 @@ $string['passwordchanged'] = 'Pasahitza aldatu da'; $string['passwordrecovery'] = 'Bai, laguntza behar dut saioa hasteko'; $string['passwordsdiffer'] = 'Pasahitz hauek ez datoz bat'; $string['passwordsent'] = 'Pasahitza bidali da'; -$string['passwordsenttext'] = '

            E-posta mezu bat bidali da honako helbide honetara $a->email.

            -

            Mesedez begiratu zure e-posta pasahitz berria lortzeko

            -

            Pasahitz berria automatikoki sortu da eta agian - link\">gogoratzeko errazagoa den batera aldatu nahi duzu.

            '; +$string['passwordsenttext'] = '

            E-posta mezu bat bidali da honako helbide honetara $a->email. +

            Mesedez begiratu zure e-posta pasahitz berria lortzeko +

            Pasahitz berria automatikoki sortu da eta agian + link>gogoratzeko errazagoa den batera aldatu nahi duzu.'; $string['paymentrequired'] = 'Ikastaro hau ordainpekoa da'; -$string['people'] = 'Partaideak'; -$string['personalprofile'] = 'Norberaren profila'; +$string['people'] = 'Jendea'; +$string['personalprofile'] = 'Profil pertsonala'; $string['phone'] = 'Telefonoa'; -$string['popupwindow'] = 'Ireki fitxategia leiho berrian'; $string['potentialadmins'] = 'Balizko kudeatzaileak'; $string['potentialcreators'] = 'Balizko ikastaro-sortzaileak'; $string['potentialstudents'] = 'Balizko ikasleak'; @@ -629,33 +572,26 @@ $string['previous'] = 'Aurrekoa'; $string['publicdirectory'] = 'Direktorio publikoa'; $string['question'] = 'Galdera'; $string['readme'] = 'README'; -$string['recentactivity'] = 'Duela gutxiko aktibitatea'; -$string['recentactivityreport'] = 'Duela gutxiko aktibitatearen txosten osoa'; +$string['recentactivity'] = 'Azken uneko aktibidadea'; $string['removeadmin'] = 'Administratzailea kendu'; -$string['removestudent'] = 'Ikaslea kendu'; $string['removeteacher'] = 'Tutorea kendu'; $string['rename'] = 'Berrizendatu'; -$string['renamefileto'] = 'Berrizendatu $a honela:'; -$string['required'] = 'Beharrezkoa'; $string['requireskey'] = 'Ikastaro honek partaide-giltza bat behar du'; -$string['requirespayment'] = 'Ikastaro hau ordainpekoa da'; $string['resources'] = 'Baliabideak'; -$string['returningtosite'] = 'Matrikulatutako ikasleak'; +$string['returningtosite'] = 'Berriz ere web gune honetan?'; $string['revert'] = 'Lehengora itzuli'; $string['role'] = 'Rola'; $string['savechanges'] = 'Aldaketak gorde'; -$string['saveto'] = 'Non gorde'; +$string['saveto'] = 'Nora gorde'; $string['search'] = 'Bilatu'; $string['searchagain'] = 'Berriz bilatu'; $string['searchcourses'] = 'Ikastaroak bilatu'; $string['searchresults'] = 'Bilaketaren emaitzak'; $string['sec'] = 'seg'; $string['secs'] = 'seg'; -$string['section'] = 'Atala'; -$string['sections'] = 'Atalak'; +$string['section'] = 'Sekzioa'; $string['select'] = 'Aukeratu'; $string['selectacountry'] = 'Herrialde bat aukeratu'; -$string['selectednowmove'] = '$a fitxategi aukeratu duzu mugitzeko. Zoaz orain nahi duzun tokira eta sakatu \"Ekarri fitxategiak hona\"'; $string['senddetails'] = 'Nire xehetasunak e-postaz bidali'; $string['separateandconnected'] = 'Jakintza-bide banatuak eta elkar lotuak'; $string['serverlocaltime'] = 'Zerbitzariaren ordu lokala'; @@ -663,7 +599,6 @@ $string['settings'] = 'Ezarpenak'; $string['shortname'] = 'Izen laburra'; $string['shortsitename'] = 'Gunearen izen laburra (adibidez hitz bakarra)'; $string['show'] = 'Erakutsi'; -$string['showall'] = 'Erakutsi denak: $a'; $string['showallcourses'] = 'Ikastaro guztiak erakutsi'; $string['showalltopics'] = 'Gai guztiak erakutsi'; $string['showallusers'] = 'Erabiltzaile guztiak erakutsi'; @@ -680,12 +615,11 @@ $string['site'] = 'Gunea'; $string['sitelogs'] = 'Gunearen log-ak'; $string['sitenews'] = 'Gunearen berriak'; $string['sites'] = 'Guneak'; -$string['sitesettings'] = 'Gunearen ezarpenak'; +$string['sitesettings'] = 'Gune ezarpenak'; $string['size'] = 'Tamaina'; $string['socialheadline'] = 'Foro irekia - azken gaiak'; $string['someallowguest'] = 'Ikastaro batzuek bisitariei sarbidea baimendu diezaiekete'; $string['someerrorswerefound'] = 'Informazioaren atal bat falta da edo ez da zuzena. Xehetasun gehiago:.'; -$string['specifyname'] = 'Izena eman behar duzu derrigor'; $string['startdate'] = 'Ikastaroaren hasiera-data'; $string['startsignup'] = 'Orain hasi kontu berri bat sortuz!'; $string['state'] = 'Estatua / Herrialdea'; @@ -698,7 +632,7 @@ $string['subcategories'] = 'Azpikategoriak'; $string['success'] = 'Arrakasta'; $string['summary'] = 'Laburpena'; $string['summaryof'] = '$a -ren laburpena'; -$string['supplyinfo'] = 'Mesedez zutaz informazio apur bat eman'; +$string['supplyinfo'] = 'Mesedez zui buruzko informazio apur bat eman'; $string['teacheronly'] = '$a -tzt bakarrik'; $string['teachers'] = 'Tutoreak'; $string['textediting'] = 'Testua editatzerakoan'; @@ -718,22 +652,22 @@ $string['toomanytoshow'] = 'Erabiltzaile gehiegi daude erakusteko'; $string['top'] = 'Gora'; $string['topic'] = 'Gaia'; $string['topichide'] = 'Izkutatu gai hau hemendik: $a'; -$string['topicoutline'] = 'Ikastaroaren edukia'; +$string['topicoutline'] = 'Gaia hitz bitan'; $string['total'] = 'Guztira'; $string['turneditingoff'] = 'Edizioa desaktibatu'; $string['turneditingon'] = 'Edizioa aktibatu'; $string['undecided'] = 'Erabaki gabe'; $string['unenrol'] = 'Baja eman'; $string['unenrolallstudents'] = 'Baja eman ikasle guztiei'; -$string['unenrolallstudentssure'] = 'Ziur al zaude ikastaro honetako ikasle guztiei baja eman nahi diezula?'; +$string['unenrolallstudentssure'] = 'Seguru al zaude ikastaro honetako ikasle guztiei baja eman nahi diezula?'; $string['unenrolme'] = '$a ikastaroan baja eman nahi dut'; -$string['unenrolsure'] = 'Ziur al zaude $a ikastaroan baja eman nahi duzula?'; +$string['unenrolsure'] = 'Seguru al zaude $a ikastaroan baja eman nahi duzula?'; $string['unsafepassword'] = 'Pasahitz ez ziurra - besteren bat erabili '; $string['unusedaccounts'] = '$a egun baino gehiagotan erabili ez diren kontuak automatikoki baja dira'; $string['unzip'] = 'Unzip'; $string['update'] = 'Eguneratu'; $string['updated'] = '$a eguneratuta'; -$string['updatemyprofile'] = 'Profila eguneratu'; +$string['updatemyprofile'] = 'Soslaia eguneratu'; $string['updatesevery'] = '$a segunduero eguneratzen da'; $string['updatethis'] = '$a hau eguneratu'; $string['updatethiscourse'] = 'Ikastaro hau eguneratu'; @@ -742,33 +676,28 @@ $string['updatingain'] = '$a->what eguneratu $a-> :'; $string['upload'] = 'Igo'; $string['uploadafile'] = 'Fitxategi bat igo'; $string['uploadedfileto'] = '$a->file fitxategia $a->directory direktoriora igota'; -$string['uploadnofilefound'] = 'Ez da fitxategirik aurkitu - ziur igotzeko bat aukeratu duzula?'; -$string['uploadnotallowed'] = 'Ezin da fitxategirik igo'; +$string['uploadnofilefound'] = 'Ez da fitxategirik aurkitu - zihur igotzeko bat aukeratu duzula?'; $string['uploadproblem'] = 'Errore ezezagun bat gertatu da \'$a\' fitxategia igotzerakoan (handiegia agian?)'; $string['uploadthisfile'] = 'Fitxategi hau igo'; -$string['user'] = 'Erabiltzaile'; -$string['userdata'] = 'Erabiltzailearen datuak'; $string['userdeleted'] = 'Erabiltzaile-kontu hau ezabatu da'; -$string['userdescription'] = 'Aurkezpena'; +$string['userdescription'] = 'Azalpena'; $string['username'] = 'Erabiltzaile-izena'; -$string['usernameexists'] = 'Erabiltzaile-izen hau badago aurretik, beste bat aukeratu'; +$string['usernameexists'] = 'Erabiltzaile izen hau badago aurretik, beste bat aukeratu'; $string['userprofilefor'] = '$a erabiltzaile profila'; $string['users'] = 'Erabiltzaileak'; $string['usersnew'] = 'Erabiltzaile berriak'; $string['version'] = 'Bertsioa'; -$string['view'] = 'Ikusteko modua'; +$string['view'] = 'Ikusiteko modua'; $string['webpage'] = 'Web-orria'; $string['week'] = 'Astea'; $string['weeklyoutline'] = 'Astea hitz bitan'; $string['welcometocourse'] = 'Ongi etorri $a gunera'; -$string['welcometocoursetext'] = 'Ongi etorri $a->coursename ikastarora! - ¡Bienvenido al curso $a->coursename! +$string['welcometocoursetext'] = 'Ongi etorri $a->coursename! ikastarora -Nahi baduzu zure erabiltzaile-profila -edita dezakezu beheko loturan sakatuta. Horrela geuk eta zure ikastarokideek zutaz gehiago jakingo dugu. +Egin behar duzun lehen gauza zure ikastaroko erabiltzaile +soslaia eguneratzea da zutaz gehiago jakin dezagun: - $a->profileurl - -Usando este enlace, puedes editar tu perfil de usuario. De esta manera tus compañeros de curso y nosotros sabremos más de ti.'; + $a->profileurl'; $string['withchosenfiles'] = 'Aukeratutako fitxategiak'; $string['wordforstudent'] = 'Ikaslea izendatzeko hitza'; $string['wordforstudenteg'] = 'Adibidez Ikaslea, Partaidea...'; diff --git a/lang/eu/questionnaire.php b/lang/eu/questionnaire.php index 93e12408e9e..de2351b8aca 100644 --- a/lang/eu/questionnaire.php +++ b/lang/eu/questionnaire.php @@ -2,8 +2,19 @@ // questionnaire.php - created with Moodle 1.4.1 (2004083101) -$string['alreadyfilled'] = 'Hausnarketa burutu duzu. Eskerrik asko.'; -$string['modulename'] = 'Hausnarketa'; -$string['modulenameplural'] = 'Hausnarketa'; +$string['alreadyfilled'] = 'Inkesta hau dagoeneko bete duzu. Eskerrik asko.'; +$string['modulename'] = 'Inkesta phpESP'; +$string['modulenameplural'] = 'Inkestak phpESP'; +$string['mustcomplete'] = 'Usted debe completar esta encuesta ahora para registrar sus resultados. No se le permitirá completarla en otra ocasión

            '; +$string['notavail'] = 'Esta encuesta ya no está disponible. Inténtelo de nuevo más tarde.'; +$string['parentlanguage'] = 'es'; +$string['qmanage'] = 'Inkestak kudeatu'; +$string['qmanagetitle'] = 'Inkestak kudeatu phpESP bidez '; +$string['qtype'] = 'Mota'; +$string['questionnaireid'] = 'INkesta'; +$string['respondenttype'] = 'Tipo de respondiente'; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'Euskara'; ?> diff --git a/lang/eu/quiz.php b/lang/eu/quiz.php index f2201bf8842..e7a76e73aff 100644 --- a/lang/eu/quiz.php +++ b/lang/eu/quiz.php @@ -1,110 +1,109 @@ -name\' kategoriak $a->count galdera ditu. Mesedez, hauek mugitzeko beste kategoria bat aukeratu.'; -$string['categorymoveto'] = 'Kategoria honetara mugitu'; -$string['choice'] = 'Aukera'; -$string['choices'] = 'Aukera posibleak'; -$string['correctanswer'] = 'Erantzun zuzena'; -$string['correctanswers'] = 'Erantzun zuzenak'; -$string['createnewquestion'] = 'Galdera berria sortu'; -$string['daysavailable'] = 'Egun eskuragarriak'; -$string['default'] = 'Lehenetsia'; -$string['defaultinfo'] = 'Galderen lehenetsitako kategoria.'; -$string['deletequestioncheck'] = 'Ziur al zaulde \'$a\' ezabatu nahi duzula?'; -$string['editcategories'] = 'Kategoriak editatu'; -$string['editingmultichoice'] = 'Aukera anitzeko galdera bta editatzen'; -$string['editingquestion'] = 'Galdera bat editatzen'; -$string['editingquiz'] = 'Galdetegia editatzen'; -$string['editingshortanswer'] = 'Erantzun laburreko galdera bat editatzen'; -$string['editingtruefalse'] = 'Egia/Gezurra motako galdea bat editatzen'; -$string['false'] = 'Gezurra'; -$string['feedback'] = 'Feed-backa'; -$string['filloutoneanswer'] = 'Gutxienez erantzun posible bat bete behar duzu. Zurian utzitako erantzunak ez dira erabiliko.'; -$string['fillouttwochoices'] = 'Gutxienez bi aukera bete behar dituzu. Zurian utzitako erantzunak ez dira erabiliko.'; -$string['fractionsaddwrong'] = 'Aukeratutako nota positiboen gehiketak ez du 100%% ematen -
            $a%% baizik -
            Atzera bueltatu nahi duzu arazoa konpontzeko?'; -$string['fractionsnomax'] = 'Erantzunetako bat 100%% izan beharko luke, horrela -
            erantzun honentzat gehienezko nota lortzea posible izan dadin. -
            Atzera bueltatu nahi duzu arazoa konpontzeko?'; -$string['gradeaverage'] = 'Batezbesteko nota'; -$string['gradehighest'] = 'Notarik altuena'; -$string['grademethod'] = 'Balorazio metodoa'; -$string['guestsno'] = 'Barkatu gonbidatuek ezin dituzte galdetegiak ikusi edo egin'; -$string['imagedisplay'] = 'Erakutsi beharreko irudia'; -$string['introduction'] = 'Sarrera'; -$string['marks'] = 'Markak'; -$string['missingname'] = 'Galdera izena falta da'; -$string['missingquestiontext'] = 'Galderaren testua falta da'; -$string['modulename'] = 'Galdetegia'; -$string['modulenameplural'] = 'Galdetegiak'; -$string['multichoice'] = 'Aukera anitza'; -$string['noanswers'] = 'Ez duzu erantzunik aukeratu!'; -$string['noattempts'] = 'Galdetegi honetan ez da saiakerarik egin'; -$string['nomoreattempts'] = 'Ezin da saiakera gehiago egin'; -$string['noquestions'] = 'Ez da galderarik gehitu oraindik'; -$string['noreview'] = 'Ez duzu galdetegi hau berrikusteko baimenik'; -$string['noreviewuntil'] = '$a arte ez duzu galdetegi hau berrikusteko baimenik'; -$string['publish'] = 'Argitaratu'; -$string['question'] = 'Galdera'; -$string['questioninuse'] = '\'$a\' galdera oraintxe erabiltzen ari da:'; -$string['questionname'] = 'Galderaren izena'; -$string['questions'] = 'Galderak'; -$string['quizavailable'] = 'Galdetegia eskurai egongo da $a arte'; -$string['quizclose'] = 'Galdetegia itxi'; -$string['quizclosed'] = 'Galdetegi hau $a(e)n itxi zen'; -$string['quiznotavailable'] = 'Galdetegia eskura noiztik aurrera: $a'; -$string['quizopen'] = 'Galdetegia ireki'; -$string['random'] = 'Ausazko aukera'; -$string['readytosend'] = 'Galdetegi osoa bidaliko duzu nota ezartzeko. Benetan jarraitu nahi duzula?'; -$string['regrade'] = 'Saiakera guztiei nota berriz kalkulatu'; -$string['regradecomplete'] = 'Saiakera guztiei nota berriz kalkulatu zaie'; -$string['regradecount'] = '$a->attempt saiakeratik $a->changed aldatu dira'; -$string['rename'] = 'Berrizendatu'; -$string['report'] = 'Txostenak'; -$string['save'] = 'Gorde'; -$string['savegrades'] = 'Notak gorde'; -$string['savemyanswers'] = 'Nire erantzunak gorde'; -$string['savequiz'] = 'Galdetegi osoa gorde'; -$string['score'] = 'Puntuazio gordina'; -$string['select'] = 'Aukeratu'; -$string['selectcategoryabove'] = 'Goiko kategoria aukeratu'; -$string['shortanswer'] = 'Erantzun laburra'; -$string['show'] = 'Erakutsi'; -$string['showcorrectanswer'] = 'Feed-backean eratzun zuzenak erakutsi?'; -$string['showfeedback'] = 'Erantzun ondoren feed-backa ikusi nahi?'; -$string['time'] = 'Denbora'; -$string['timecompleted'] = 'Osatua'; -$string['timetaken'] = 'Hartutako denbora'; -$string['true'] = 'Egia'; -$string['truefalse'] = 'Egia/Gezurra'; -$string['type'] = 'Idatzi'; -$string['viewallanswers'] = '$a(e)k osatutako galdetegiak ikusi'; -$string['yourfinalgradeis'] = 'Galdetegi honetan zure azken nota $a da'; - -?> +$string['addselectedtoquiz'] = "Aukeratutakoak azterketara gehitu"; +$string['allowreview'] = "Barrikusketa baimendu"; +$string['alwaysavailable'] = "Beti eskuragarri"; +$string['alreadysubmitted'] = "Saiakera hau dagoeneko bidali duzula ematen du"; +$string['answer'] = "Erantzuna"; +$string['answerhowmany'] = "Erantzun bakarra edo anitzak?"; +$string['answersingleyes'] = "Erantzun bakarra"; +$string['answersingleno'] = "Multiple answers allowed"; +$string['attempt'] = "\$a saiakera"; +$string['attemptfirst'] = "Lehen saiakera"; +$string['attemptlast'] = "Azken saiakera"; +$string['attemptquiznow'] = "Azterketa orain saiatu"; +$string['attempts'] = "Saiakerak"; +$string['attemptsallowed'] = "Baimendutako saiakerak"; +$string['attemptsunlimited'] = "Saiakera mugagabeak"; +$string['backtoquiz'] = "Azterketa ediziora bueltatu"; +$string['bestgrade'] = "Notarik onena"; +$string['casesensitive'] = "Maiuskulak eta minuskulak bereiztu?"; +$string['caseyes'] = "Bai, Maiskulak eta minuskulak garrrantzia dute"; +$string['caseno'] = "Ez, ez du garrantzirik"; +$string['categories'] = "Kategoriak"; +$string['category'] = "Kategoria"; +$string['categoryinfo'] = "Kategoriaren informazioa"; +$string['categorymove'] = "'\$a->name' kategoriak \$a->count galdera ditu. Mesedez, hauek mugitzeko beste kategoria bat aukeratu."; +$string['categorymoveto'] = "Kategoria honetara mugitu"; +$string['choice'] = "Aukera"; +$string['choices'] = "Aukera eskuragarriak"; +$string['correctanswer'] = "Erantzun zuzena"; +$string['correctanswers'] = "Erantzun zuzenak"; +$string['createnewquestion'] = "Galdera berria sortu"; +$string['daysavailable'] = "Egun eskuragarriak"; +$string['default'] = "Lehenetsia"; +$string['defaultinfo'] = "galderen lehenetsitako kategoria."; +$string['deletequestioncheck'] = "Benetan '\$a' ezabatu nahi duzula?"; +$string['editcategories'] = "Kategoriak editatu"; +$string['editingquiz'] = "Azterketa editatzen"; +$string['editingquestion'] = "Galdera bat editatzen"; +$string['editingshortanswer'] = "Erantzun laburreko galdera bat editatzen"; +$string['editingtruefalse'] = "Egia/Gezurra motako galdea bat editatzen"; +$string['editingmultichoice'] = "Aukera anitzeko galdera bta editatzen"; +$string['false'] = "Gezurra"; +$string['feedback'] = "Erreakzioa"; +$string['filloutoneanswer'] = "Gutxienez erantzun posible bat bete behar duzu. Zurian utzitako erantzunak ez dira erabiliko."; +$string['fillouttwochoices'] = "Gutxienez bi aukera bete behar dituzu. Zurian utzitako erantzunak ez dira erabiliko."; +$string['fractionsaddwrong'] = "Aukeratutako nota positiboen gehiketak ez dute 100%% ematen +
            \$a%% baizik +
            Aztera bueltatu nahi duzu arazoa konpontzeko?"; +$string['fractionsnomax'] = "Erantzunetako bat 100%% izan beharko luke, horrela +
            erantzun honentzat gehienezko nota lortzea posible izan dadin. +
            Atzera bueltatu nahi duzu arazoa konpontzeko?"; +$string['gradeaverage'] = "Batasbezteko nota"; +$string['gradehighest'] = "Notarik altuena"; +$string['grademethod'] = "Balorazio metodoa"; +$string['guestsno'] = "Barkatu gonbidatuek ezin dituzte azterketak ikusi edo egin"; +$string['imagedisplay'] = "Bistaratu beharreko irudia"; +$string['introduction'] = "Sarrera"; +$string['marks'] = "Markak"; +$string['missingname'] = "Galdera izena falta da"; +$string['missingquestiontext'] = "Galderaren testua falta da"; +$string['multichoice'] = "Aukera anitza"; +$string['noanswers'] = "Ez da erantzunik aukeratu!"; +$string['noattempts'] = "Azterketa honetan ez da saiakerarik egin"; +$string['nomoreattempts'] = "Ez da saiakera gehiago baimentzen"; +$string['noquestions'] = "Ez da galderarik gehitu oraindik"; +$string['noreview'] = "Ez duzu azterketa hau berrikusteko baimenik"; +$string['noreviewuntil'] = "\$a arte ez duzu azterketa hau berrikusteko baimenik"; +$string['publish'] = "Argitaratu"; +$string['question'] = "Galdera"; +$string['questioninuse'] = "'\$a' galdera oraintxe erabiltzen ari da:"; +$string['questions'] = "Galderak"; +$string['questionname'] = "Galdera izena"; +$string['quizavailable'] = "Azterketa eskuragarri egongo da \$a arte"; +$string['quizclose'] = "Azterketa itxi"; +$string['quizclosed'] = "Azterketa hau \$a(e)n itxi zen"; +$string['quizopen'] = "Azterketa ireki"; +$string['quiznotavailable'] = "Azterketa eskuragarri izango den data: \$a"; +$string['random'] = "Ausazko aukera"; +$string['readytosend'] = "Azterketa osoa bidaliko duzu nota ezartzeko. Benetan jarraitu nahi duzula?"; +$string['regrade'] = "Saiakera guztiei nota berriz kalkulatu"; +$string['regradecomplete'] = "Saiakera guztiei nota berriz kalkulatu zaie"; +$string['regradecount'] = "\$a->attempt saiakeratik \$a->changed aldatu dira"; +$string['rename'] = "Berrizendatu"; +$string['report'] = "Txostenak"; +$string['save'] = "Gorde"; +$string['savegrades'] = "Notak gorde"; +$string['savemyanswers'] = "Nire erntzunak gorde"; +$string['savequiz'] = "Azterketa osoa gorde"; +$string['score'] = "Puntuazio gordina"; +$string['select'] = "Aukeratu"; +$string['selectcategoryabove'] = "Goiko kategoria aukeratu"; +$string['shortanswer'] = "Erantzun laburra"; +$string['show'] = "Bistaratu"; +$string['showfeedback'] = "Erantzu eta gero, berralimentazioa bistaratu?"; +$string['showcorrectanswer'] = "berralimentazioan, erantzun zuzenak bistaratu?"; +$string['time'] = "Denbora"; +$string['timetaken'] = "Hartutako denbora"; +$string['timecompleted'] = "Osatua"; +$string['true'] = "Egia"; +$string['truefalse'] = "Egia/Gezurra"; +$string['type'] = "Idatzi"; +$string['viewallanswers'] = "\$a(e)k osatutako azterketak bistatatu"; +$string['yourfinalgradeis'] = "Azterketa honetan zure azken nota \$a da"; diff --git a/lang/eu/resource.php b/lang/eu/resource.php index 9ee74258b3d..890997c3eae 100644 --- a/lang/eu/resource.php +++ b/lang/eu/resource.php @@ -1,51 +1,30 @@ -Fitxategi Kudeatzailea erabil ezazu.'; -$string['notypechosen'] = 'Mota bat aukeratu behar duzu. Zure nabigatzailearen atzera botoia erabiliz bueltatu eta berriro saiatu.'; -$string['pagedisplay'] = 'Erakutsi baliabide hau oraingo leihoan'; -$string['pagewindow'] = 'Leiho berean'; -$string['parameter'] = 'Parametroa'; -$string['parameters'] = 'Parametroak'; -$string['popupresource'] = 'Baliabide honek popup leiho batean agertu beharko luke'; -$string['popupresourcelink'] = 'Hala ez bada, sakatu hemen: $a'; -$string['resourcetype'] = 'Baliabide-mota'; -$string['resourcetype1'] = 'Erreferentzia'; -$string['resourcetype2'] = 'Web-orria'; -$string['resourcetype3'] = 'Igotako fitxategia'; -$string['resourcetype4'] = 'Testu arrunta'; -$string['resourcetype5'] = 'Web lotura'; -$string['resourcetype6'] = 'HTML testua'; -$string['resourcetype7'] = 'Programa'; -$string['resourcetype8'] = 'Wiki motako testua'; -$string['resourcetype9'] = 'Direktorioa'; -$string['resourcetypedirectory'] = 'Erakutsi direktorio bat'; -$string['resourcetypefile'] = 'Lotu fitxategi batera edo web gune batera'; -$string['resourcetypehtml'] = 'Sortu web-orri bat'; -$string['resourcetypelabel'] = 'Sartu etiketa'; -$string['resourcetypetext'] = 'Sortu testu-orri bat'; -$string['searchweb'] = 'Bilatu web-orri bat'; -$string['variablename'] = 'Aldagaiaren izena'; +$string['addresource'] = "Baliabidea gehitu"; +$string['editingaresource'] = "Baliabidea editatu"; +$string['example'] = "Adibidea"; +$string['examplereference'] = "Tobin, K. & Tippins, D (1993) Constructivism as a Referent for Teaching and Learning. In: K. Tobin (Ed) The Practice of Constructivism in Science Education, pp 3-21, Lawrence-Erlbaum, Hillsdale, NJ."; +$string['exampleurl'] = "http://www.adibidea.com/direktorioa/fitxategia.html"; +$string['filename'] = "Fitxategi izena"; +$string['fulltext'] = "Testu osoa"; +$string['htmlfragment'] = "HTML zatia"; +$string['neverseen'] = "Inoiz ez ikusia"; +$string['note'] = "Oharra"; +$string['notefile'] = "Ikasgaian fitxategi gehiago igotzeko (zerrenda honetan ager daitezen) +Fitxategi Kudeatzailea erabil ezazu."; +$string['notypechosen'] = "Mota bat aukeratu behar duzu. Zure nabigatzailearen atzera botoia erabiliz bueltatu eta berriro saiatu."; +$string['resourcetype'] = "Baliabide mota"; +$string['resourcetype1'] = "Erreferentzia"; +$string['resourcetype2'] = "Web Orria"; +$string['resourcetype3'] = "Igotako Fitxategia"; +$string['resourcetype4'] = "Testu arrunta"; +$string['resourcetype5'] = "Web Lotura"; +$string['resourcetype6'] = "HTML testua"; +$string['resourcetype7'] = "Programa"; ?> diff --git a/lang/eu/survey.php b/lang/eu/survey.php index dc5b82b0924..0cf1ef4598d 100644 --- a/lang/eu/survey.php +++ b/lang/eu/survey.php @@ -1,198 +1,208 @@ -nahia (ideala) eta benetako esperientziaren artean. +$string['collesapname'] = "COLLES (Nahia eta Benetakoa)"; +$string['collesapintro'] = "Galdeketa honen helburua unitate honen linea bidezko banaketak ikasten zenbat lagundu zaituen jakitea da. -Ez dago erantzun \'zuzen\' edo \'okerrik\'; zure iritzia jakin nahi dugu. zure iritzia jakin nahi dugu besterik gabe. Zure erantzunak konfidentzialtasun osoz tratatuko ditugula zihur egon zaitezke, eta hauek ez dute zure ebaluaketan ez du eraginik izango. +Azpiko 24 esaldietako bakoitzak unitate honek sortutako esperientzia konparatzea eskatzen dizu, nahia (ideala) eta benetako esperientziaren artean. + +Ez dago erantzun 'zuzen' edo 'okerrik'; zure iritzia jakin nahi dugu. zure iritzia jakin nahi dugu besterik gabe. Zure erantzunak konfidentzialtasun osoz tratatuko ditugula zihur egon zaitezke, eta hauek ez dute zure ebaluaketan ez du eraginik izango. Zure erantzunek unitate hau etorkizunean hobetzen lagunduko digute. -Eskerrik asko.'; -$string['collesapname'] = 'COLLES (Nahia eta Benetakoa)'; -$string['collesm1'] = 'Garrantzia'; -$string['collesm1short'] = 'Garrantzia'; -$string['collesm2'] = 'Pentsakera erreflexiboa'; -$string['collesm2short'] = 'Pentsakera erreflexiboa'; -$string['collesm3'] = 'Interaktibitatea'; -$string['collesm3short'] = 'Interaktibitatea'; -$string['collesm4'] = 'Tutorearen laguntza'; -$string['collesm4short'] = 'Tutorearen laguntza'; -$string['collesm5'] = 'Kideen laguntza'; -$string['collesm5short'] = 'Kideen laguntza'; -$string['collesm6'] = 'Interpretazioa'; -$string['collesm6short'] = 'Interpretazioa'; -$string['collesmintro'] = 'Linea bidezko unitate honetan...'; -$string['collespintro'] = 'Galdeketa honen helburua linea bidezko ikasketa esperientzia batean zer baloratzen duzun jakitea da. +Eskerrik asko."; -Azpiko 24 esaldietako bakoitza unitate honekin zure nahia (esperientzia ideala) baloratzen du. +$string['collespname'] = "COLLES (Nahia)"; +$string['collespintro'] = "Galdeketa honen helburua linea bidezko ikasketa esperientzia batean zer baloratzen duzun jakitea da. -Ez dago erantzun \'zuzen\' edo \'okerrik\'; zure iritzia jakin nahi dugu. zure iritzia jakin nahi dugu besterik gabe. Zure erantzunak konfidentzialtasun osoz tratatuko ditugula zihur egon zaitezke, eta hauek ez dute zure ebaluaketan ez du eraginik izango. +Azpiko 24 esaldietako bakoitza unitate honekin zure nahia (esperientzia ideala) baloratzen du. + +Ez dago erantzun 'zuzen' edo 'okerrik'; zure iritzia jakin nahi dugu. zure iritzia jakin nahi dugu besterik gabe. Zure erantzunak konfidentzialtasun osoz tratatuko ditugula zihur egon zaitezke, eta hauek ez dute zure ebaluaketan ez du eraginik izango. Zure erantzunek unitate hau etorkizunean hobetzen lagunduko digute. -Eskerrik asko.'; -$string['collespname'] = 'COLLES (Nahia)'; -$string['done'] = 'Eginda'; -$string['download'] = 'Deskargatu'; -$string['downloadexcel'] = 'Datuak Excel kalkulu orri gisa deskargatu'; -$string['downloadinfo'] = 'Inkesta honen datu gordin guztiak Excel, SPSS edo beste paketeren batekin aztertzeko formatu egokian deskargatu ditzazkezu .'; -$string['downloadtext'] = 'Datuak testu arrunt fitxategi gisa deskargatu'; -$string['editingasurvey'] = 'Hausnarketa bat editatzen'; -$string['guestsnotallowed'] = 'Bistariek ezin dute hausnarketarik bidali'; -$string['helpsurveys'] = 'Hausnarketa mota ezberdinen gaineko laguntza'; -$string['howlong'] = 'Zenbat denbora behar izan duzu inkesta hau betetzeko?'; -$string['howlongoptions'] = 'minutu 1 baino gutxiago,1-2 min,2-3 min,3-4 min,4-5-min,5-10 min,10 minutu baino gehiago'; -$string['ifoundthat'] = 'Hau aurkitu dut'; -$string['introtext'] = 'Sarrera testua'; -$string['ipreferthat'] = 'Nahiago dut'; -$string['modulename'] = 'Hausnarketa'; -$string['modulenameplural'] = 'Hausnarketak'; -$string['name'] = 'Izena'; -$string['newsurveyresponses'] = 'Hausnarketari erantzun berriak'; -$string['nobodyyet'] = 'Inork ez du oraindik hausnarketa hau erantzun'; -$string['notdone'] = 'Oraindik egin gabe'; -$string['notes'] = 'Zure analisi pribatua eta oharrak'; -$string['othercomments'] = 'Beste ezer esan nahi al duzu?'; -$string['peoplecompleted'] = '$a pertsonek bete dute hausnarketa hau orain arte'; -$string['preferred'] = 'Gogokoa'; -$string['preferredclass'] = 'Klaseak gogoko'; -$string['preferredstudent'] = '$a(e)k gogoko'; -$string['question'] = 'Galdera'; -$string['questions'] = 'Galderak'; -$string['questionsnotanswered'] = 'Aukera anitzeko galderaren bat ez du erantzunik.'; -$string['report'] = 'Hausnarketaren txostena'; -$string['savednotes'] = 'Zure oharrak gorde dira'; -$string['scaleagree5'] = 'Erabat aurka,Aurka,Ez ados ez aurka,Ados,Erabat ados'; -$string['scales'] = 'Eskalak'; -$string['scaletimes5'] = 'Ia inoiz ez,Oso gutxitan,Batzuetan,Sarritan,Ia beti'; -$string['seemoredetail'] = 'Hemen klik egin xehetasun gehiago ikusteko'; -$string['selectedquestions'] = 'Eskala beretik aukeratutako galderak, ikasle gustiak'; -$string['summary'] = 'Laburpena'; -$string['surveycompleted'] = 'Hausnarketa hau burutu duzu. Beheko grafikoak zure erantzunen eta klasearen erantzunen batasbestekoen arteko konparaketa bat plazaratzen du.'; -$string['surveyname'] = 'Hausnarketaren izena'; -$string['surveysaved'] = 'Hausnarketa gordeta'; -$string['surveytype'] = 'Hausnarketa mota'; -$string['thanksforanswers'] = 'Eskerrik asko erantzuteagatik, $a'; -$string['time'] = 'Denbora'; -$string['viewsurveyresponses'] = 'Ikusi erantzunak'; +Eskerrik asko."; + + +$string['collesm1'] = "Garrantzia"; +$string['collesm1short'] = "Garrantzia"; +$string['collesm2'] = "Pentsakera erreflexiboa"; +$string['collesm2short'] = "Pentsakera erreflexiboa"; +$string['collesm3'] = "Interaktibitatea"; +$string['collesm3short'] = "Interaktibitatea"; +$string['collesm4'] = "Tutorearen laguntza"; +$string['collesm4short'] = "Tutorearen laguntza"; +$string['collesm5'] = "Kideen laguntza"; +$string['collesm5short'] = "Kideen laguntza"; +$string['collesm6'] = "Interpretazioa"; +$string['collesm6short'] = "Interpretazioa"; + +$string['collesmintro'] = "Linea bidezko unitate honetan..."; + +$string['done'] = "Eginda"; +$string['download'] = "Deskargatu"; +$string['downloadexcel'] = "Datuak Excel kalkulu orri gisa deskargatu"; +$string['downloadinfo'] = "Inkesta honen datu gordin guztiak Excel, SPSS edo beste paketeren batekin aztertzeko formatu egokian deskargatu ditzazkezu ."; +$string['downloadtext'] = "Datuak testu arrunt fitxategi gisa deskargatu"; +$string['editingasurvey'] = "Inkesta bat editatzen"; +$string['helpsurveys'] = "Inkesta mota ezberdinen gaineko laguntza"; +$string['howlong'] = "Zenbat denbora behar izan duzu inkesta hau betetzeko?"; +$string['howlongoptions'] = "minutu 1 baino gutxiago,1-2 min,2-3 min,3-4 min,4-5-min,5-10 min,10 minutu baino gehiago"; +$string['ifoundthat'] = "Hau aurkitu dut"; +$string['introtext'] = "Sarrera testua"; +$string['ipreferthat'] = "Nahiago dut"; +$string['name'] = "Izena"; +$string['newsurveyresponses'] = "Inkestari erantzun berriak"; +$string['nobodyyet'] = "Inork ez du oraindik inkesta hau erantzun"; +$string['notdone'] = "Oraindik egin gabe"; +$string['notes'] = "Zure analisi pribatua eta oharrak"; +$string['othercomments'] = "Beste ezer esan nahi al duzu?"; +$string['peoplecompleted'] = "\$a pertsonek bete dute inkesta hau orain arte"; +$string['preferred'] = "Gogokoa"; +$string['preferredclass'] = "Klaseak gogoko"; +$string['preferredstudent'] = "\$a(e)k gogoko"; +$string['question'] = "Galdera"; +$string['questions'] = "Galderak"; +$string['questionsnotanswered'] = "Aukera anitzeko galderaren bat ez du erantzunik."; +$string['report'] = "Inkesta txostena"; +$string['scales'] = "Eskalak"; +$string['savednotes'] = "Zure oharrak gorde dira"; +$string['scaleagree5'] = "Ezadostasun osoa,Ezadostasun apur bat,Ez ados ez kontra,Apur bat ados,Erabat ados"; +$string['scaletimes5'] = "Ia inoiz ez,Oso gutxitan,Batzuetan,Sarritan,Ia beti"; +$string['seemoredetail'] = "Hemen klik egin xehetasun gehiago ikusteko"; +$string['selectedquestions'] = "Eskala betetik aukeratutako galderak, ikasle gustiak"; +$string['summary'] = "Laburpena"; +$string['surveycompleted'] = "Inkesta hau burutu duzu. Beheko grafikoak zure erantzunen eta klasearen erantzunen batasbestekoen arteko konparaketa bat plazaratzen du."; +$string['surveyname'] = "Inkestaren izena"; +$string['surveysaved'] = "Inkesta gordeta"; +$string['surveytype'] = "Inkesta mota"; +$string['thanksforanswers'] = "Eskerrik asko inkesta honi erantzureagatik, \$a"; +$string['time'] = "Denbora"; +$string['viewsurveyresponses'] = "Ikusi \$a inkestari erantzunak"; ?> diff --git a/lang/eu/wiki.php b/lang/eu/wiki.php index aa0816e0c73..cb77c735671 100644 --- a/lang/eu/wiki.php +++ b/lang/eu/wiki.php @@ -1,5 +1,5 @@ Sin embargo, si usted vacía primero una página, también aparecerá en esta lista. Se llevan a cabo asimismo otros diagnósticos de la base de datos.'; +$string['removenotice'] = 'Observe que aquí sólo se pueden listar las páginas sin referencia. Y, debido a que la máquina ewiki por sí misma sólo efectúa una prueba limitada si una página tiene referencias, puede perder algunas.
            Sin embargo, si usted vacía primero una página, también aparecerá en esta lista. Se llevan a cabo asimismo otros diagnósticos de la base de datos.'; $string['removepagecheck'] = '¿Está seguro de que quiere eliminar estas páginas?'; $string['removepages'] = 'Eliminar páginas'; $string['removeselectedpages'] = 'Eliminar las páginas seleccionadas'; diff --git a/lang/eu/workshop.php b/lang/eu/workshop.php index 1584fd3c340..1a0f49d9fc2 100644 --- a/lang/eu/workshop.php +++ b/lang/eu/workshop.php @@ -1,224 +1,187 @@ Formulario hau zure iruzkin eta notak erabiliz bete da.
            Mesedez, gainbegira ezazu lana eta aldatu ebaluaketa, hala behar bada.'; -$string['assessmentofthissubmission'] = 'Bidalketa honen ebaluaketa'; -$string['assessments'] = 'Ebaluaketak'; -$string['assessmentsareok'] = 'Ebaluaketa egokiak'; -$string['assessmentsby'] = 'Nork ebaluatua: $a'; -$string['assessmentsdone'] = 'Ebaluaketa egina'; -$string['assessmentsexcluded'] = '$a : kasu honetan baztertutako ebaluaketen kopurua'; -$string['assessmentsmustbeagreed'] = 'Ebaluaketak onartu egin behar dira'; -$string['assessmentwasagreedon'] = 'Ebaluaketa onartu zeneko data: $a'; +$string['assessedon'] = '$a(e)n ebaluatu'; +$string['assessment'] = 'Ebaluazioa'; +$string['assessmentby'] = '$a(e)k ebaluatua'; +$string['assessmentgrade'] = 'Ebaluazioaren kalifikazioa: $a'; +$string['assessmentnotyetagreed'] = 'Oraindik ez da ebaluaziorik onartzen'; +$string['assessmentofthissubmission'] = 'Bidalketa honen ebaluazioa'; +$string['assessments'] = 'Ebaluazioak'; +$string['assessmentsareok'] = 'Ebaluazioak zuzenak dira'; +$string['assessmentsby'] = '$a(r)en ebaluazioak'; +$string['assessmentsdone'] = 'Egindako ebaluazioak'; +$string['assessmentsmustbeagreed'] = 'Ebaluazioak onartuak izan behar dira'; +$string['assessmentwasagreedon'] = 'Ebaluazioa onartua izan da data honetan: $a'; $string['assessor'] = 'Ebaluatzailea'; -$string['assessthissubmission'] = 'Ebaluatu bidalketa hau'; -$string['assignmentnotinthecorrectphase'] = 'Zeregina ez dago urrats egokian'; -$string['authorofsubmission'] = 'Bidalketa nork bidalia'; -$string['averageerror'] = 'Errore-tartea'; -$string['awaitinggradingbyteacher'] = 'Honek nota jartzeko zain: $a'; -$string['beforedeadline'] = 'Data honen aurretik: $a'; -$string['calculationoffinalgrades'] = 'Azkeneko noten kalkulua'; -$string['closeassignment'] = 'Zeregina amaitutzat eman'; -$string['comment'] = 'Iruzkina'; -$string['commentby'] = 'Iruzkina nork egina'; -$string['comparisonofassessments'] = 'Ebaluaketen alderaketa'; -$string['confirmdeletionofthisitem'] = 'Hau ezabatu nahi? $a'; -$string['correct'] = 'Zuzen'; -$string['count'] = 'Zenbatu'; +$string['assessthissubmission'] = 'Bidalketa hau ebaluatu'; +$string['assignmentnotinthecorrectphase'] = 'Ataza okerreko fasean dago'; +$string['authorofsubmission'] = 'Bidalketaren egilea'; +$string['awaitinggradingbyteacher'] = '$a(r)en kalifikazioaren zain'; +$string['beforedeadline'] = 'Muga data baino lehen: $a'; +$string['calculationoffinalgrades'] = 'Azken kalifikazioaren kalkulua'; +$string['closeassignment'] = 'Ataza itxi'; +$string['comment'] = 'Komentatu'; +$string['commentby'] = 'Nork komentatua'; +$string['confirmdeletionofthisitem'] = '$a(r)en ezabatzea ziurtatu'; +$string['correct'] = 'Zuzendu'; $string['criterion'] = 'Irizpidea'; -$string['deadline'] = 'Amaitzeko epea'; -$string['deadlineis'] = 'Amaitzeko epea: $a'; +$string['deadline'] = 'Muga data'; +$string['deadlineis'] = 'Muga data $a da'; $string['delete'] = 'Ezabatu'; $string['deleting'] = 'Ezabatzen'; -$string['description'] = 'Deskripzioa'; -$string['detailsofassessment'] = 'Ebaluaketaren zehaztasunak'; -$string['disagreewiththisassessment'] = 'Ebaluaketa honekin ados ez'; -$string['displayoffinalgrades'] = 'Erakutsi azkeneko notak'; -$string['dontshowgrades'] = 'Ez erakutsi azkeneko notak'; +$string['description'] = 'Deskribapena'; +$string['detailsofassessment'] = 'Ebaluazioaren xehetasunak'; +$string['disagreewiththisassessment'] = 'Ebaluazio honekin bat ez etorri'; +$string['displayoffinalgrades'] = 'Azken kalifikazioak aurkeztu'; +$string['dontshowgrades'] = 'Kalifikazioak ez erakutsi'; $string['edit'] = 'Editatu'; -$string['editacomment'] = 'Editatu iruzkina'; -$string['editingassessmentelements'] = 'Editatu ebaluaketako elementuak'; -$string['element'] = 'Elementuak'; +$string['editacomment'] = 'Komentario bat editatu'; +$string['editingassessmentelements'] = 'Ebaluazio elementuak editatzen'; +$string['element'] = 'Elementu'; $string['elementweight'] = 'Elementuaren pisua'; -$string['errorbanded'] = 'Errore-tartea'; -$string['errortable'] = 'Errore-taula'; +$string['errorbanded'] = 'Errore-marjina'; $string['excellent'] = 'Bikain'; -$string['excludingdroppedassessments'] = 'Baztertutako ebaluaketak alde batera uzten'; -$string['expectederror'] = 'Espero den errorearen balioa kasu honetan: $a'; -$string['fair'] = 'Egokia'; -$string['feedbackgoeshere'] = 'Feed-backa hemen ipini'; -$string['generalcomment'] = 'Iruzkin orokorra'; -$string['good'] = 'Ona'; -$string['grade'] = 'Nota'; -$string['gradeassessment'] = 'Notaren ebaluaketa'; -$string['graded'] = 'Nota jarrita'; -$string['gradedbyteacher'] = 'Nota nork jarria: $a'; -$string['gradeforassessments'] = 'Ebaluaketei nota jarri'; -$string['gradeforreliability'] = 'Benetakotasunaren nota'; -$string['gradeforstudentsassessment'] = 'Ikasleen ebaluaketen nota'; -$string['gradeforsubmission'] = 'Bidalketaren nota'; -$string['gradegiventoassessment'] = 'Ebaluaketari jarritako nota'; -$string['gradeofsubmission'] = 'Ondorengo bidalketaren nota: $a'; -$string['gradesforstudentsassessment'] = '$a-(e)ren ebaluaketaren nota'; -$string['gradetable'] = 'Noten taula'; -$string['gradingallassessments'] = 'Ebaluaketa guztiei nota jartzen'; -$string['gradingstrategy'] = 'Noteterako estrategia'; -$string['hidegradesbeforeagreement'] = 'Ezkutatu notak ebaluaketak onartu aurrertik'; -$string['hidenamesfromstudents'] = 'Ezkutatu hauen izenak : $a'; -$string['includeteachersgrade'] = 'Sartu irakaslearen nota'; -$string['incorrect'] = 'Ezegokia'; -$string['iteration'] = 'Osatuta: $a'; -$string['lax'] = 'Ahula'; -$string['leaguetable'] = 'Bidalitako lanen taula'; -$string['listassessments'] = 'Ebaluaketak zerrendatu'; +$string['feedbackgoeshere'] = 'Jarri hemen zure erantzuna'; +$string['generalcomment'] = 'Komentario orokorra'; +$string['good'] = 'Ondo'; +$string['grade'] = 'Kalifikazioa'; +$string['gradeassessment'] = 'Kalifikazioaren ebaluazioa'; +$string['graded'] = 'Kalifikatua'; +$string['gradedbyteacher'] = '$a(e)k kalifikatua'; +$string['gradeforassessments'] = 'Ebaluazioen kalifikazioa'; +$string['gradeforbias'] = 'Alborapenen kalifikazioa'; +$string['gradeforreliability'] = 'Fidagarritasunaren kalifikazioa'; +$string['gradeforstudentsassessment'] = 'Ikasleen ebaluazioaren kalifikazioa'; +$string['gradeofsubmission'] = '$a bidalketaren kalifikazioa'; +$string['gradingstrategy'] = 'Kalifikazio estrategia'; +$string['hidegradesbeforeagreement'] = 'Kalifikazioak ezkutatu onartu baino lehen'; +$string['includeteachersgrade'] = 'Irakaslearen kalifikazioa sartu'; +$string['incorrect'] = 'Ez da zuzena'; +$string['leaguetable'] = 'Aurkeztutako lanen taula'; +$string['listassessments'] = 'Ebaluazioak zerrendatu'; $string['listofallsubmissions'] = 'Bidalketa guztiak zerrendatu'; -$string['liststudentsassessments'] = 'Ikasleen ebaluaketak zerrendatu'; -$string['loadingforteacherassessments'] = '$a-(e)ren ebaluaketen pisua'; -$string['mail1'] = 'Zure zeregina, \'$a\', nork ebaluatu duen'; -$string['mail10'] = 'Ebalua dezakezu zure tailerreko zereginean'; -$string['mail2'] = 'Iruzkina eta nota ikusgai daude tailerreko zereginean ($a)'; -$string['mail3'] = 'Zure tailerreko zereginean ikus dezakezu'; -$string['mail4'] = '\'$a\' izeneko zereginean iruzkina gehiu du honek:'; -$string['mail5'] = 'Iruzkin berria tailerreko zereginean ikus dezakezu'; -$string['mail6'] = '\'$a\' izeneko zereginaren ebaluaketa gainbegiratu egin dute'; -$string['mail7'] = '\'$a\'-(e)k gehitutako iruzkinak tailerreko zereginean ikus daitezke'; -$string['mail8'] = '\'$a\' izeneko zeregina gainbegiratutako lana da.'; -$string['mail9'] = 'Mesedez, ebalua ezazu tailerreko zereginean'; -$string['managingassignment'] = 'Zeregina kudeatzen'; -$string['maximum'] = 'Gehienez'; +$string['liststudentsassessments'] = 'Ikasleen ebaluazioak zerrendatu'; +$string['mail1'] = 'Zure ataza \'$a\' honek ebaluatu du:'; +$string['mail2'] = 'Komentarioak eta kalifikazioa ikusgai daude \'$a\'(e)n'; +$string['mail3'] = 'Zure tailerreko atazan ikus dezakezu'; +$string['mail4'] = '\'$a\'(e)k komentario bat gehitu dio zure atazari'; +$string['mail5'] = 'Komentario berria ikusgai dago \'$a\'(e)n'; +$string['mail6'] = '\'$a\' atazarako zure ebaluazioa berrikusi egin da'; +$string['mail7'] = '\'$a\'(e)k egindako komentarioak zure tailerreko atazan ikusgai daude'; +$string['managingassignment'] = 'Ataza kudeatu'; $string['maximumsize'] = 'Gehienezko tamaina'; -$string['mean'] = 'Esanahia'; -$string['minimum'] = 'Gutxienez'; $string['modulename'] = 'Tailerra'; $string['modulenameplural'] = 'Tailerrak'; -$string['movingtophase'] = '$a izeneko urratsera mugitzen'; -$string['namesnotshowntostudents'] = 'Hauei ezkutatutako izenak: $a'; -$string['newassessments'] = 'Ebaluaketa berriak'; -$string['newgradings'] = 'Nota berriak'; +$string['movingtophase'] = '$a fasera aldatzen'; +$string['newassessments'] = 'Ebaluazio berriak'; +$string['newgradings'] = 'Kalifikazio berriak'; $string['newsubmissions'] = 'Bidalketa berriak'; -$string['noassessments'] = 'Ebaluaketarik ez'; -$string['noassessmentsdone'] = 'Ebaluaketarik ez'; -$string['nosubmission'] = 'Bidalketarik ez'; -$string['nosubmissionsavailableforassessment'] = 'Ebaluaketarako bidalketarik ez da onartzen'; -$string['notavailable'] = 'Ezin erabili'; -$string['notenoughexamplessubmitted'] = 'Bidalitako adibideak ez dira nahiko'; -$string['noteonassessmentelements'] = 'Kontuan hartu nota \"ebaluaketa-elementu\" zenbaitetan zatitua dagoela.
            Honek erraztu egiten du notak jartzeko lana eta zentzuzkoago bihurtzen ditu. Irakasle zaren aldetik, gehitu egin beharko zenituzke
            elementu hauek, ebaluaketa ikasleek erabiltzeko moduan jarri aurretik. Hau honela egiten da:
            sakatu ikastaroko ebaluaketak; elementurik ez badago, galdetu egingo zaizu gehitzeko.
            Elementuen kopurua aldatzeko Ebaluaketa Editatu izeneko pantaila erabil dezakezu.
            Elementuak berak aldatu, Ebaluaketa Kudeatu pantailatik egin dezakezu.'; -$string['notgraded'] = 'Notarik gabea'; -$string['notitlegiven'] = 'Izenbururik gabea'; -$string['numberofassessments'] = 'Ebaluaketen kopurua'; -$string['numberofassessmentschanged'] = 'Aldatutako ebaluaketen kopurua: $a'; -$string['numberofassessmentsdropped'] = 'Baztertutako ebaluaketen kopurua: $a'; -$string['numberofassessmentsofstudentsubmissions'] = 'Ikasleen bidalketen ebaluaketa-kopurua'; -$string['numberofassessmentsofteachersexamples'] = 'Irakasleak emandako adibideen ebaluaketa-kopurua'; -$string['numberofentries'] = 'Sarrera kopurua'; -$string['numberofnegativeresponses'] = 'Ezezko erantzunen kopurua'; -$string['numberofsubmissions'] = 'Bidaleketen kopurua: $a'; -$string['on'] = 'Noiz: $a'; -$string['openassignment'] = 'Zeregin irekia'; -$string['optionforpeergrade'] = 'Ikasle arteko notetarako aukera'; -$string['optionsusedinanalysis'] = 'Analisian erabilitako aukerak'; -$string['overallgrade'] = 'Nota orokorra'; -$string['overallpeergrade'] = 'Ikaskideek emandako nota orokorra: $a'; -$string['overallteachergrade'] = 'Irakasleak emandako nota orokorra: $a'; +$string['noassessmentsdone'] = 'Ez da ebaluaziorik egin'; +$string['nosubmissionsavailableforassessment'] = 'Ez dago bidalketarik ebaluatzeko'; +$string['notavailable'] = 'Ez dago erabilgarri'; +$string['noteonassessmentelements'] = 'Kontuan hartu ebaluazioa \'ebaluazio elementu\' batzuetan banatuta dagoela; honek errezago eta sendoagoa egiten du ebaluazioa. Irakasle gisa, zuk \'ebaluazio elementu\' hauek gehitu behar dituzu ikasleei ataza eman baino lehen. +Hau, kurtso barruan,atazan klik eginez lortzen da. Elementurik egon ezean, gehitzeko eskatuko zaizu. Elementu kopurua aldatu ahal duzu \'ataza editatu\' leihoa erabiliz. Elementua bera zuzendu ahal da \"Ataza kudeatu\" pantailatik;. '; +$string['notgraded'] = 'Kalifikaziorik ez'; +$string['notitlegiven'] = 'Oraindik ez dauka izenbururik'; +$string['numberofassessmentelements'] = 'Komentario kopurua, ebaluazio elementuak, kalifkazio tarteak edo irizpide adierazpenak'; +$string['numberofassessments'] = 'Ebaluazio kopuruak'; +$string['numberofassessmentsofstudentsubmissions'] = 'Ikasleen bidalketen ebaluazio kopurua'; +$string['numberofassessmentsofteachersexamples'] = 'Irakasleak emandako ebaluazio adibide kopurua'; +$string['on'] = '$a(e)n'; +$string['openassignment'] = 'Atza irekia'; +$string['optionforpeergrade'] = 'Ikaskideek kalifikatzeko aukera'; +$string['overallgrade'] = 'Kalifikazio orokorra'; +$string['overallpeergrade'] = 'Ikaskideek egindako kalifikazio orokorra: $a'; +$string['overallteachergrade'] = 'Irakasleak egindako kalifikazio orokorra: $a'; $string['ownwork'] = 'Norberaren lana'; -$string['percentageofassessments'] = 'Ebaluaketen zein ehuneko baztertu'; -$string['phase'] = 'Urrats'; -$string['phase1'] = 'Zeregina ezarri'; -$string['phase1short'] = 'Ezarri'; -$string['phase2'] = '$a bidalketa ahal dira egin'; -$string['phase2short'] = 'Bidalketak'; -$string['phase3'] = '$a bidalketa eta ebaluaketa ahal dira egin'; -$string['phase3short'] = 'Biok'; -$string['phase4'] = '$a ebaluaketa ahal dira egin'; -$string['phase4short'] = 'Ebaluaketak'; -$string['phase5'] = 'Azkeneko notak erakutsi'; -$string['phase5short'] = 'Notak erakutsi'; -$string['pleaseassesstheseexamplesfromtheteacher'] = '$a-aren adibide hauek ebaluatu mesedez'; -$string['pleaseassessthesestudentsubmissions'] = '$a-aren bidalketa hauek ebaluatu mesedez'; -$string['pleaseassessyoursubmissions'] = 'Mesedez, ebaluatu zeure bidalketa(k)'; +$string['phase'] = 'Fasea'; +$string['phase1'] = 'Ataza zehaztu'; +$string['phase2'] = '$a(r)en bidalketak eta ebaluazioak'; +$string['phase3'] = 'Kalifikazio finalaren kalkulua'; +$string['phase4'] = 'Kalifikazio finalak erakutsi'; +$string['pleaseassesstheseexamplesfromtheteacher'] = 'Mesedez $a(r)en adibide hauek ebaluatu'; +$string['pleaseassessthesestudentsubmissions'] = 'Mesedez $a bidalketa hauek ebaluatu'; +$string['pleaseassessyoursubmissions'] = 'Mesedez ebaluatu zure bidalketa(k)'; $string['poor'] = 'Eskasa'; -$string['reassess'] = 'Berriro ebaluatu'; +$string['present'] = 'Presente'; +$string['reassess'] = 'Berrebaluatu'; $string['reply'] = 'Erantzun'; -$string['returnto'] = 'Itzuli'; -$string['returntosubmissionpage'] = 'Itzuli bidalketa-orrira'; -$string['rubric'] = 'Sinadura'; -$string['savedok'] = 'Egoki gordeta'; -$string['saveleaguetableoptions'] = 'Gorde taularen aukerak'; -$string['savemyassessment'] = 'Gorde nire ebaluaketa'; -$string['savemycomment'] = 'Gorde nire iruzkina'; -$string['savemygrading'] = 'Gorde nire nota'; -$string['scale10'] = '10 arteko eskala'; -$string['scale100'] = '100 arteko eskala'; -$string['scale20'] = '20 arteko eskala'; -$string['select'] = 'Aukeratu'; -$string['selfassessment'] = 'Autoebaluaketa'; -$string['showgrades'] = 'Erakutsi notak'; -$string['standarddeviation'] = 'Desbiderazio tipikoa'; -$string['studentassessments'] = 'Ikaslearen ebaluaketak'; -$string['studentgrades'] = 'Ikaslearen notak'; -$string['studentsubmissions'] = 'Ikaslearen bidalketak'; -$string['studentsubmissionsforassessment'] = 'Ikasleen bidalketak ebaluatzeko: $a'; +$string['returnto'] = 'Itzuli honi'; +$string['returntosubmissionpage'] = 'Bidalketa orrira itzuli'; +$string['rubric'] = 'sinadura'; +$string['savedok'] = 'Zuzen gordeta'; +$string['savemyassessment'] = 'Nire ebaluaketa gorde'; +$string['savemycomment'] = 'Nire komentarioa gorde'; +$string['savemygrading'] = 'Nire kalifikazioa gorde'; +$string['scale10'] = '10 arteko puntuaketa'; +$string['scale100'] = '100 arteko puntuaketa'; +$string['scale20'] = '20 arteko puntuaketa'; +$string['scalecorrect'] = 'Puntu 2ko eskala: zuzena ala okerra'; +$string['scaleexcellent4'] = '4 puntuko eskala: Bikainetik oso eskasera'; +$string['scaleexcellent5'] = '5 puntuko eskala: Bikainetik oso eskasera'; +$string['scaleexcellent7'] = '7 puntuko eskala: Bikainetik oso eskasera'; +$string['scalegood3'] = '3 puntuko eskala: nahikotik eskasera'; +$string['scalepresent'] = 'Puntu 2ko eskala: badago ala ez dago'; +$string['scaleyes'] = 'Puntu 2ko eskala: bai ala ez'; +$string['select'] = 'Hautatu'; +$string['selfassessment'] = 'Autoebaluazioa'; +$string['showgrades'] = 'Kalifikazioak erakutsi'; +$string['specimenassessmentform'] = 'Ebaluaziorako formulario adibidea'; +$string['studentassessments'] = '$a ebaluazio'; +$string['studentgrades'] = '$a kalifikazio'; +$string['studentsubmissions'] = '$a bidalketa'; +$string['studentsubmissionsforassessment'] = 'Ikasleen $a bidalketa ebaluatzeko'; $string['submission'] = 'Bidalketa'; $string['submissions'] = 'Bidalketak'; -$string['submissionsnolongerallowed'] = 'Ezin dgaoeneko bidalketarik egin'; -$string['submissionsused'] = '$a bidalketa dago taula honetan'; -$string['submitassignment'] = 'Zeregina bidali'; -$string['submitassignmentusingform'] = 'Zure zeregina bidali formulario hau erabiliz'; -$string['submitexampleassignment'] = 'Adibide moduko zeregina bidali'; -$string['submitrevisedassignment'] = 'Zure gainbegiratutako zeregina bidali formulario hau erabiliz'; +$string['submitassignment'] = 'Ataza bidali'; +$string['submitexampleassignment'] = 'Ataza adibidea bidali'; $string['submitted'] = 'Bidalita'; -$string['submittedby'] = 'Nork bidalia'; -$string['suggestedgrade'] = 'Nota gomendatua'; -$string['teacherassessments'] = 'Honen ebaluaketak: $a'; -$string['teacherscomment'] = 'Irakaslearen iruzkina'; -$string['teachersgrade'] = 'Irakaslearen nota'; -$string['teachersubmissionsforassessment'] = 'Irakasleak ebaluatzera bidalitakoak: $a'; -$string['thegradeforthisassessmentis'] = 'Ebaluaketa honen nota: $a'; -$string['thegradeis'] = 'Nota: $a'; -$string['theseasessmentsaregradedbytheteacher'] = 'Ebaluaketa hauei nork jarri dien nota: $a'; -$string['thisisadroppedassessment'] = 'Hau baztertutako ebaluaketa da'; +$string['submittedby'] = 'Nork bidalita'; +$string['suggestedgrade'] = 'Gomendatutako kalifikazioa'; +$string['teacherassessments'] = '$a ebaluazio'; +$string['teacherscomment'] = 'Irakaslearen komentarioa'; +$string['teachersgrade'] = 'Irakaslearen kalifikazioa'; +$string['teachersubmissionsforassessment'] = 'Irakaslearen $a bidalketa ebaluatzeko'; +$string['thegradeis'] = 'Kalifikazioa hau da: $a'; +$string['theseasessmentsaregradedbytheteacher'] = 'Ebaluazio hauek $a(e)k kalifikatu ditu'; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'Euskara'; $string['timeassessed'] = 'Ebaluatutako denbora'; $string['title'] = 'Izenburua'; -$string['typeofscale'] = 'Eskala-mota'; -$string['ungradedassessments'] = 'Nota jarri gabeko $a ebaluaketa'; -$string['ungradedassessmentsofstudentsubmissions'] = 'Ikasleen bidalketei nota jarri gabeko $a ebaluaketa'; -$string['ungradedassessmentsofteachersubmissions'] = 'Irakaslearen bidalketei nota jarri gabeko $a ebaluaketa'; -$string['verylax'] = 'Oso ahula'; -$string['verypoor'] = 'Oso eskasa'; -$string['verystrict'] = 'Oso zurruna'; +$string['typeofscale'] = 'Eskala mota'; +$string['ungradedassessmentsofstudentsubmissions'] = 'Ikasleen bidalketetako $a ebaluazio kalifikatzeko'; +$string['ungradedassessmentsofteachersubmissions'] = 'Irakaslearen bidalketetako $a ebaluazio kalifikatzeko'; +$string['verypoor'] = 'Oso eskas'; $string['view'] = 'Ikusi'; -$string['viewassessmentofteacher'] = 'Ikusi honen ebaluaketa: $a'; -$string['viewotherassessments'] = 'Ikusi beste ebaluaketa batzuk'; -$string['warningonamendingelements'] = 'Oharra: hauek bidalitako ebaluaketak dira.
            EZ aldatu elementuen kopurua, eskala-mota edo elementuen pisua.'; -$string['weight'] = 'Pisua'; -$string['workshopagreedassessments'] = 'Tailerreko ebaluaketa adostuak '; -$string['workshopassessments'] = 'Tailerreko ebaluaketak'; -$string['workshopcomments'] = 'Tailerreko iruzkinak'; -$string['workshopfeedback'] = 'Tailerrera bidalitako feed-backa'; -$string['workshopsubmissions'] = 'Tailerrera egindako bidalketak'; -$string['yourassessments'] = 'Zure ebaluaketak'; -$string['yourassessmentsofexamplesfromtheteacher'] = 'Honen adibideen ebaluaketak: $a'; -$string['yourfeedbackgoeshere'] = 'Feed-backa hemen ipini'; +$string['viewassessmentofteacher'] = '$a(r)en ebaluazioa ikusi'; +$string['viewotherassessments'] = 'Beste ebaluazio batzuk ikusi'; +$string['warningonamendingelements'] = 'OHARRA: Bidalitako ebaluazioak daude.
            Ez aldatu elemetu kopurua, eskala mota edo elementuaren pisuak.'; +$string['weightederrorcount'] = 'Haztatutako akats kopurua: $a'; +$string['weightforbias'] = 'Alborapenen pisua'; +$string['weightforgradingofassessments'] = 'Ebaluazioen kalifikazioaren pisua'; +$string['weightforpeerassessments'] = 'Ikaskideen ebaluazioen pisua'; +$string['weightforreliability'] = 'Fidagarritasunaren pisua'; +$string['weightforteacherassessments'] = '$a ebaluazioren pisua'; +$string['weights'] = 'Pisuak'; +$string['weightsusedforfinalgrade'] = 'Kalifikazio finalerako erabilitako pisuak'; +$string['weightsusedforsubmissions'] = 'Bidalketetarako erabilitako pisuak'; +$string['yourassessments'] = 'Zure ebaluazioak'; +$string['yourfeedbackgoeshere'] = 'Jarri hemen zure erantzuna'; ?> diff --git a/lang/fa/quiz.php b/lang/fa/quiz.php index d3774ae194f..81fb4ef85ae 100755 --- a/lang/fa/quiz.php +++ b/lang/fa/quiz.php @@ -69,11 +69,11 @@ $string['filloutoneanswer'] = 'You must fill out at least one possible answer. $string['filloutthreequestions'] = 'You must fill out at least three questions. Questions left blank will not be used.'; $string['fillouttwochoices'] = 'ÈÇیÏ ÍÏÇÞá Ïæ ãæÑÏ ÑÇ Ñ ˜äیÏ'; $string['fractionsaddwrong'] = 'The positive grades you have chosen do not add up to 100%% -
            Instead, they add up to $a%% -
            Do you want to go back and fix this question?'; +
            Instead, they add up to $a%% +
            Do you want to go back and fix this question?'; $string['fractionsnomax'] = 'One of the answers should be 100%%, so that it is -
            possible to get a full grade for this question. -
            Do you want to go back and fix this question?'; +
            possible to get a full grade for this question. +
            Do you want to go back and fix this question?'; $string['gradeaverage'] = 'äãÑå ãÊæÓØ'; $string['gradehighest'] = 'ÈÇáÇÊÑیä äãÑå'; $string['grademethod'] = 'ÑæÔ äãÑå ÏÇÏä'; @@ -98,7 +98,7 @@ $string['nomoreattempts'] = 'No more attempts are allowed'; $string['noquestions'] = 'åäæÒ ÓÆæÇáی ÇÖÇÝå äÔÏå ÇÓÊ'; $string['noreview'] = 'You are not allowed to review this quiz'; $string['noreviewuntil'] = 'You are not allowed to review this quiz until $a'; -$string['notenoughsubquestions'] = 'Not enough sub-questions have been defined!
            +$string['notenoughsubquestions'] = 'Not enough sub-questions have been defined!
            Do you want to go back and fix this question?'; $string['numerical'] = 'ÚÏÏی'; $string['publish'] = 'ÇäÊÔÇÑ'; diff --git a/lang/fa/workshop.php b/lang/fa/workshop.php index 9dbac63de59..452070b35f0 100755 --- a/lang/fa/workshop.php +++ b/lang/fa/workshop.php @@ -93,11 +93,11 @@ $string['newsubmissions'] = 'New Submissions'; $string['noassessmentsdone'] = 'No Assessments Done'; $string['nosubmissionsavailableforassessment'] = 'No Submissions available for assessment'; $string['notavailable'] = 'Not Available'; -$string['noteonassessmentelements'] = 'Note that grading is broken down into a number of \'Assessment Elements\'.
            - This makes the grading easier and more consistent. As teacher you must add these
            - Elements before making the assignment available to students. This is done by
            - clicking on the assignment in the course, if no elements are present you will be asked
            - to add them. You can change the number of elements using the Edit Assignment screen,
            +$string['noteonassessmentelements'] = 'Note that grading is broken down into a number of \'Assessment Elements\'.
            + This makes the grading easier and more consistent. As teacher you must add these
            + Elements before making the assignment available to students. This is done by
            + clicking on the assignment in the course, if no elements are present you will be asked
            + to add them. You can change the number of elements using the Edit Assignment screen,
            the elements themselves can be amended from the \"Managing Assessment\" screen. '; $string['notgraded'] = 'Not Graded'; $string['notitlegiven'] = 'No Title Given'; @@ -172,7 +172,7 @@ $string['verypoor'] = 'Very Poor'; $string['view'] = 'View'; $string['viewassessmentofteacher'] = 'View Assessment of $a'; $string['viewotherassessments'] = 'View other Assessments'; -$string['warningonamendingelements'] = 'WARNING: There are submitted assessments.
            Do NOT change the number +$string['warningonamendingelements'] = 'WARNING: There are submitted assessments.
            Do NOT change the number of elements, the scale types or the element weights.'; $string['weightederrorcount'] = 'Weighted Error Count: $a'; $string['weightforbias'] = 'Weight for Bias'; diff --git a/lang/fa_utf8/assignment.php b/lang/fa_utf8/assignment.php deleted file mode 100644 index a7f1b8b4440..00000000000 --- a/lang/fa_utf8/assignment.php +++ /dev/null @@ -1,50 +0,0 @@ -teacher جوابي براي ارسال تکلي٠شما -براي '\$a->assignment' ارسال کرده -مي توانيد آنرا چسبيده به ارسال خود ببينيد: -\$a->url"; -$string['assignmentmailhtml'] = "\$a->teacher جوابي براي ارسال تکلي٠شما براي '\$a->assignment'ارسال کرده -

            -مي توانيد آنرا چسبيده به url\\\">ارسال خود.ببينيد"; -$string['assignmentname'] = "نام تکليÙ"; -$string['assignmenttype'] = "نوع تکليÙ"; -$string['description'] = "توصيÙ"; -$string['duedate'] = "تاريخ برگشت"; -$string['early'] = "\$a زود است"; -$string['failedupdatefeedback'] = "خطايي در بروزرساني جواب \$a پيش آمد"; -$string['feedback'] = "پاسخ"; -$string['feedbackupdated'] = "جواب براي \$a Ù†ÙØ± بروز شد."; -$string['late'] = "\$a دير است"; -$string['maximumgrade'] = "حداکثر نمره"; -$string['maximumsize'] = "حداکثر اندازه"; -$string['modulename'] = "تكليف"; -$string['modulenameplural'] = "تکليÙها"; -$string['newsubmissions'] = "تکليÙهاي ارسال شده"; -$string['notgradedyet'] = "هنوز نمره داده نشده"; -$string['notsubmittedyet'] = "هنوز ارسال نکرده است"; -$string['overwritewarning'] = "اخطار: ارسال جديد جايگزين قبلي مي شود"; -$string['saveallfeedback'] = "تمام جواب من را ذخيره Ú©Ù†"; -$string['submissionfeedback'] = "جواب براي ارسال"; -$string['submissions'] = "تکليÙهاي ارسال شده"; -$string['submitassignment'] = "تکلي٠خود را با Ø§Ø³ØªÙØ§Ø¯Ù‡ از اين ÙØ±Ù… Ø¨ÙØ±Ø³ØªÙŠØ¯"; -$string['submitted'] = "ارسال شده"; -$string['typeoffline'] = "تکلي٠خانگي"; -$string['typeuploadsingle'] = "ارسال ÙØ§ÙŠÙ„"; -$string['uploadbadname'] = "اين ÙØ§ÙŠÙ„ شامل کاراکترهاي عجيب بود Ùˆ ارسال نشد"; -$string['uploadedfiles'] = "ÙØ§ÙŠÙ„هاي ÙØ±Ø³ØªØ§Ø¯Ù‡ شده"; -$string['uploaderror'] = "خطايي در ذخيره کردن ÙØ§ÙŠÙ„ در سرور پيش آمد"; -$string['uploadfailnoupdate'] = "ÙØ§ÙŠÙ„ ÙØ±Ø³ØªØ§Ø¯Ù‡ شد اما با مورد قبلي جايگزين نشد"; -$string['uploadfiletoobig'] = "ببخشيد، اندازه ÙØ§ÙŠÙ„ خيلي بزرگ است (حداکثر اندازه\$a bytes)"; -$string['uploadnofilefound'] = "ÙØ§ÙŠÙ„ÙŠ نيست - آيا مطمئنيد موردي را براي ارسال انتخاب کرديد؟"; -$string['uploadnotregistered'] = "'\$a' ÙØ±Ø³ØªØ§Ø¯Ù‡ شد ولي بنام شما ثبت نشد."; -$string['uploadsuccess'] = "'\$a' با موÙقيت ارسال شد"; -$string['viewfeedback'] = "ديدن نمرات تکلي٠و پاسخ دادن به آنها"; -$string['viewsubmissions'] = "ديدن \$a تکلي٠ارسال شده"; -$string['yoursubmission'] = "ارسال شما"; - -?> \ No newline at end of file diff --git a/lang/fa_utf8/auth.php b/lang/fa_utf8/auth.php deleted file mode 100644 index 299148531d8..00000000000 --- a/lang/fa_utf8/auth.php +++ /dev/null @@ -1,24 +0,0 @@ -ÙŠÚ© email به کاربر ÙØ±Ø³ØªØ§Ø¯Ù‡ مي شود Ú©Ù‡ کاربر با تاييد آن مي تواند از دوره هاي مجاز Ø§Ø³ØªÙØ§Ø¯Ù‡ کند."; -$string['auth_emailtitle'] = "تصديق با email"; -$string['auth_manualdescription'] = "اين روش امکان ايجاد حساب کاربري توسط خود کاربر را از بين مي برد Ùˆ تمام حسابهاي کاربري بايد توسط مدير ايجاد شوند."; -$string['auth_manualtitle'] = "Ùقط حسابهاي ايجاد شده توسط مدير"; -$string['auth_nonedescription'] = "کاربران مي توانند بدون هيچ تصديقي براي خود حساب کاربري ايجاد کنند. براي Ø§Ø³ØªÙØ§Ø¯Ù‡ از اين گزينه موارد امنيتي را در نظر داشته باشيد."; -$string['auth_nonetitle'] = "بدون تصديق"; -$string['auth_pop3description'] = "اين روش از ÙŠÚ© POP3 server براي تصديق Ø§Ø³ØªÙØ§Ø¯Ù‡ مي کند."; -$string['auth_pop3host'] = "آدرس POP3 server.آدرس IP آن."; -$string['auth_pop3port'] = "پورت سرور (معمولا 110)"; -$string['auth_pop3title'] = "Ø§Ø³ØªÙØ§Ø¯Ù‡ از POP3 server"; -$string['auth_pop3type'] = "نوع سرور.اگر سرور از امنيت رسمي Ø§Ø³ØªÙØ§Ø¯Ù‡ مي کند pop3cert را انتخاب کنيد."; -$string['authenticationoptions'] = "تصديق کاربران"; -$string['authinstructions'] = "در اينجا مي توانيد کاربران را براي Ø§Ø³ØªÙØ§Ø¯Ù‡ از نام کاربري Ùˆ رمز ورود راهنمايي کنيد.متني Ú©Ù‡ اينجا وارد مي کنيد در ØµÙØ­Ù‡ ورود به سايت ظاهر خواهد شد."; -$string['changepassword'] = "تغيير URL رمز ورود"; -$string['changepasswordhelp'] = "در اينجا مي توانيد مکاني را براي کاربران جهت بازيابي Ùˆ يا تغيير نام کاربري Ùˆ رمز ورود آنها مشخص کنيد."; -$string['chooseauthmethod'] = "انتخاب ÙŠÚ© روش تصديق براي کاربران"; -$string['guestloginbutton'] = "دکمه کاربر مهمان"; -$string['instructions'] = "راهنمايي ها"; -$string['plaintext'] = "متن ساده"; -$string['showguestlogin'] = "مي توانيد دکمه مربوط به مهمان را نشان دهيد Ùˆ يا پنهان کنيد."; -?> \ No newline at end of file diff --git a/lang/fa_utf8/chat.php b/lang/fa_utf8/chat.php deleted file mode 100644 index 606d2e7c9ec..00000000000 --- a/lang/fa_utf8/chat.php +++ /dev/null @@ -1,41 +0,0 @@ - \ No newline at end of file diff --git a/lang/fa_utf8/choice.php b/lang/fa_utf8/choice.php deleted file mode 100644 index 72c29b17317..00000000000 --- a/lang/fa_utf8/choice.php +++ /dev/null @@ -1,20 +0,0 @@ - \ No newline at end of file diff --git a/lang/fa_utf8/forum.php b/lang/fa_utf8/forum.php deleted file mode 100644 index dc6ba399cc4..00000000000 --- a/lang/fa_utf8/forum.php +++ /dev/null @@ -1,130 +0,0 @@ -name - \$a->date"; -$string['configdisplaymode'] = "مد پيش ÙØ±Ø¶ براي نمايش مباحثه"; -$string['configlongpost'] = "هر ارسالي Ú©Ù‡ طول آن از اين بيشتر باشد طولاني در نظر Ú¯Ø±ÙØªÙ‡ مي شود."; -$string['configmanydiscussions'] = "حداکثر تعداد مباحثه Ú©Ù‡ در هر ØµÙØ­Ù‡ انجمن نمايش داده شود"; -$string['configshortpost'] = "هر ارسالي Ú©Ù‡ طول آن از اين کمتر باشد کوتاه در نظر Ú¯Ø±ÙØªÙ‡ مي شود."; -$string['couldnotadd'] = "بخاطر خطايي ناشناخته ارسال شما اضاÙÙ‡ نشد"; -$string['couldnotdeleteratings'] = "ببخشيد، چون اين مورد ارزيابي شده نمي توان آنرا پاک کرد"; -$string['couldnotdeletereplies'] = "ببخشيد، چون به اين مورد پاسخ داده شده نمي توان آنرا پاک کرد"; -$string['couldnotupdate'] = "بخاطر خطايي ناشناخته ارسال شما بروز نشد"; -$string['delete'] = "حذÙ"; -$string['deleteddiscussion'] = "اين موضوع مباحثه حذ٠شده است"; -$string['deletedpost'] = "حذ٠انجام شد."; -$string['deletesure'] = "آيا مطمئÙ† هستيد مي خواهيد حذ٠کنيد؟"; -$string['discussion'] = "مباحثه"; -$string['discussionmoved'] = "اين مباحثه به '\$a' منتقل شد."; -$string['discussions'] = "مباحثات"; -$string['discussionsstartedby'] = "مباحثات توسط \$a آغاز شد"; -$string['discussionsstartedbyrecent'] = "مباحثاتي Ú©Ù‡ اخيرا توسط \$a ايجاد شده است."; -$string['discussthistopic'] = "صحبت راجع به اين موضوع"; -$string['eachuserforum'] = "هر Ù†ÙØ± ÙŠÚ© بحث ايجاد مي کند"; -$string['edit'] = "ويرايش"; -$string['editing'] = "ويرايش"; -$string['emptymessage'] = "اشکالي در آنچه ÙØ±Ø³ØªØ§Ø¯ÙŠØ¯ پيش آمد، شايد ÙØ§ÙŠÙ„ خيلي بزرگ بوده.تغييرات ذخيره نشد."; -$string['everyonecanchoose'] = "همه مي توانند دلخواهانه عضو شوند"; -$string['everyoneissubscribed'] = "همه در اين انجمن عضو هستند"; -$string['forcesubscribe'] = "همه مجبور به شرکت در انجمن باشند"; -$string['forcesubscribeq'] = "آيا همه مجبور به عضويت در انجمن باشند؟"; -$string['forum'] = "انجمن"; -$string['forumintro'] = "مقدمه انجمن"; -$string['forumname'] = "نام انجمن"; -$string['forums'] = "انجمنها"; -$string['forumtype'] = "نوع انجمن"; -$string['generalforum'] = "انجمن استانداردبراي Ø§Ø³ØªÙØ§Ø¯Ù‡ عموم"; -$string['generalforums'] = "انجمنهاي عمومي"; -$string['generalforums'] = "انجمنهاي عمومي"; -$string['inforum'] = "در \$a"; -$string['intronews'] = "آگهيها Ùˆ اخبار عمومي"; -$string['introsocial'] = "ÙŠÚ© انجمن آزاد"; -$string['introteacher'] = "محل مباحثه براي معلمان"; -$string['lastpost'] = "زمان آخرين نظر"; -$string['learningforums'] = "انجمنهاي آموزشي"; -$string['maxtimehaspassed'] = "ببخشيد، زمان ويرايش (\$a) تمام شده است"; -$string['message'] = "پيام"; -$string['modeflatoldestfirst'] = "نظرات را بصورت معمولي نمايش بده Ùˆ قديميترين نظر را اول نشان بده"; -$string['modeflatnewestfirst'] = "نظرات را بصورت معمولي نمايش بده Ùˆ جديدترين نظر را اول نشان بده"; -$string['modenested'] = "نظرات را بصورت تو در تو نمايش بده"; -$string['modethreaded'] = "نظرات را بصورت نخ شده نمايش بده"; -$string['more'] = "بيشتر در اين مورد"; -$string['movethisdiscussionto'] = "انتقال مباحثه به...."; -$string['namenews'] = "انجمن خبري"; -$string['namesocial'] = "انجمن اجتماعي"; -$string['nameteacher'] = "انجمن مربيها"; -$string['newforumposts'] = "موارد ارسالي جديد"; -$string['nodiscussions'] = "هنوز در اين انجمن موضوعاتي براي مباحثه وجود ندارد"; -$string['noguestpost'] = "ببخشيد، مهمانها نمي توانند ارسال کنند"; -$string['nonews'] = "هنوز مباحثه اي شروع نشده است"; -$string['nomorepostscontaining'] = "ارسال ديگري Ú©Ù‡ شامل '\$a' باشد ÙŠØ§ÙØª نشد"; -$string['noposts'] = "هيچ ارسالي نيست"; -$string['nopostscontaining'] = "هيچ موردي Ú©Ù‡ شامل '\$a' باشد ÙŠØ§ÙØª نشد."; -$string['nosubscribers'] = "هنور کسي در اين انجمن عضو نشده است"; -$string['nownotsubscribed'] = "\$a->name نسخه هايي از پاسخهاي '\$a->forum' با پست الکترونيک Ø¯Ø±ÙŠØ§ÙØª نخواهد کرد"; -$string['nowsubscribed'] = "\$a->name نسخه هايي از پاسخهاي '\$a->forum' با email Ø¯Ø±ÙŠØ§ÙØª خواهد کرد"; -$string['numposts'] = "\$a مورد ارسالي"; -$string['olderdiscussions'] = "مباحثات قبل"; -$string['openmode0'] = "اجازه مباحثه Ùˆ نظر دادن داده نشود"; -$string['openmode1'] = "اجازه مباحثه داده نشود ولي نظر بتوان داد"; -$string['openmode2'] = "اجازه مباحثه Ùˆ نظر دادن داده شود"; -$string['parentofthispost'] = "پدر اين ارسال"; -$string['postadded'] = "

            ارسال شما با موÙقيت انجام شد.

            \$a براي ويرايش آن ÙØ±ØµØª داريد

            "; -$string['postincontext'] = "ديدن متن ارسال"; -$string['postmailinfo'] = "اين ÙŠÚ© نسخه از ÙŠÚ© پيام است Ú©Ù‡ در \$a website. ارسال شده، براي نظر دادن روي لينک زير کليک کنيد"; -$string['postrating1'] = "بيشتر جنبه ÙØ±Ø¯ÙŠ Ø¯Ø§Ø±Ø¯"; -$string['postrating2'] = "ÙØ±Ø¯ÙŠ Ùˆ جمعي"; -$string['postrating3'] = "بيشتر جنبه جمعي دارد"; -$string['posts'] = "موارد ارسالي"; -$string['postupdated'] = "ارسال شما بروز شد"; -$string['processingpost'] = "پردازش \$a"; -$string['rate'] = "ارزيابي"; -$string['ratingeveryone'] = "همه مي توانند ارزيابي انجام دهند"; -$string['ratingno'] = "امکان ارزيابي نيست"; -$string['ratingonlyteachers'] = "Ùقط \$a مي توانند ارزيابي انجام دهند"; -$string['rating'] = "ارزيابي"; -$string['ratings'] = "ارزيابيها"; -$string['ratingssaved'] = "ارزيابيها ذخيره شد"; -$string['ratingsuse'] = "ارزيابي بکار رود"; -$string['ratingtime'] = "امکان ارزيابي در بازه تاريخي زير امکانپذير باشد"; -$string['re'] = "پاسخ براي:"; // Put in front of subjects that are replies to another post -$string['readtherest'] = "خواندن بقيه موضوع"; -$string['replies'] = "نظرات"; -$string['repliesmany'] = "تاکنون \$a نظر داده شده است"; -$string['repliesone'] = "\$a نظر تاکنون"; -$string['reply'] = "پاسخ دادن"; -$string['search'] = "جستجو"; -$string['searcholderposts'] = "جستجو در ارسالهاي قبل..."; -$string['searchresults'] = "نتايج جستجو"; -$string['searchforums'] = "جستجو در انجمنها"; -$string['sendinratings'] = "جديدترين ارزيابيهاي من را Ø¨ÙØ±Ø³Øª"; -$string['showsubscribers'] = "اعضاء را نشان بده"; -$string['singleforum'] = "مباحثه ساده"; -$string['startedby'] = "شروع شد توسط"; -$string['subject'] = "موضوع"; -$string['subscribe'] = "عضو شدن در انجمن"; -$string['subscribed'] = "عضو شده ايد"; -$string['subscribers'] = "اعضاء"; -$string['subscribersto'] = "اعضاء '\$a'"; -$string['subscribestart'] = "ÙŠÚ© نسخه از نظرات را براي من Ø¨ÙØ±Ø³Øª"; -$string['subscribestop'] = "نظرات را براي من Ù†ÙØ±Ø³Øª"; -$string['subscription'] = "نحوه عضويت"; -$string['subscriptions'] = "اعضا"; -$string['unsubscribe'] = "خروج از اين انجمن"; -$string['unsubscribed'] = "خارج شد"; -$string['youratedthis'] = "اين ارزيابي مربوط به شماست"; -$string['yournewtopic'] = "موضوع جديد مباحثه"; -$string['yourreply'] = "پاسخ شما"; -?> \ No newline at end of file diff --git a/lang/fa_utf8/journal.php b/lang/fa_utf8/journal.php deleted file mode 100644 index 0d3f00e7546..00000000000 --- a/lang/fa_utf8/journal.php +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/lang/fa_utf8/moodle.php b/lang/fa_utf8/moodle.php deleted file mode 100644 index d62d6644586..00000000000 --- a/lang/fa_utf8/moodle.php +++ /dev/null @@ -1,722 +0,0 @@ -\$a "; -$string['activityiscurrentlyhidden'] = "ببخشيد اين ÙØ¹Ø§Ù„يت در حال حاضر مخÙÙŠ است"; -$string['activitymodule'] = "ماژول ÙØ¹Ø§Ù„يت"; -$string['activityreport'] = "گزارش ÙØ¹Ø§Ù„يت"; -$string['activityselect'] = "انتخاب اين ÙØ¹Ø§Ù„يت براي انتقال به جاي ديگر"; -$string['activitysince'] = "ÙØ¹Ø§Ù„يت از : \$a"; -$string['add'] = "اضاÙÙ‡ کردن"; -$string['added'] = "\$a اضاÙÙ‡ شد"; -$string['addinganew'] = "اضاÙÙ‡ کردن \$a جديد"; -$string['addinganewto'] = "اضاÙÙ‡ کردن \$a->what جديد به \$a->to"; -$string['addingdatatoexisting'] = "اضاÙÙ‡ کردن اطلاعات جديد"; -$string['addnewcategory'] = "اضاÙÙ‡ کردن موضوع جديد"; -$string['addnewcourse'] = "اضاÙÙ‡ کردن دوره جديد"; -$string['addnewuser'] = "اضاÙÙ‡ کردن کاربر جديد"; -$string['address'] = "آدرس"; -$string['addadmin'] = "اضاÙÙ‡ کردن مدير"; -$string['addcreator'] = "اضاÙÙ‡ کردن ايجادکننده دوره"; -$string['addstudent'] = "اضاÙÙ‡ کردن دانشجو"; -$string['addteacher'] = "اضاÙÙ‡ کردن مربي"; -$string['admin'] = "مدير"; -$string['adminhelpaddnewuser'] = "براي ايجاد حساب کاربري بصورت دستي"; -$string['adminhelpassignadmins'] = "مديران مي توانند هر کاري بکنند Ùˆ هر جايي بروند"; -$string['adminhelpassigncreators'] = "ايجاد کننده هاي دوره مي توانند دوره ايجاد کنند Ùˆ در آن تدريس کنند"; -$string['adminhelpassignstudents'] = "وارد دوره شويد Ùˆ از بخش مديريت دانشجو اضاÙÙ‡ کنيد"; -$string['adminhelpassignteachers'] = "در ÙŠÚ© دوره با Ø§Ø³ØªÙØ§Ø¯Ù‡ از آيکون مربي اضاÙÙ‡ کنيد"; -$string['adminhelpauthentication'] = "مي توانيد از حسابهاي کاربري Ùˆ يا پايگاه داده هاي خارج Ø§Ø³ØªÙØ§Ø¯Ù‡ کنيد"; -$string['adminhelpconfiguration'] = "تنظيم Ø´Ú©Ù„ ظاهري Ùˆ نحوه کار سايت"; -$string['adminhelpconfigvariables'] = "تنظيم پارامترهايي Ú©Ù‡ با عملکرد عمومي سايت مرتبط است"; -$string['adminhelpcourses'] = "تعري٠دوره Ùˆ موضوع"; -$string['adminhelpedituser'] = "ويرايش کاربران"; -$string['adminhelplogs'] = "نگاه به ÙØ¹Ø§Ù„يتهاي ثبت شده"; -$string['adminhelpsitesettings'] = "تنظيم Ø´Ú©Ù„ ظاهري ØµÙØ­Ù‡ اول سايت"; -$string['adminhelpsitefiles'] = "ÙØ§ÙŠÙ„هاي موجود در سايت"; -$string['adminhelpthemes'] = "انتخاب Ø´Ú©Ù„ ظاهري سايت"; -$string['adminhelpusers'] = "تعري٠کاربران Ùˆ تعيين نحوه تصديق کاربر"; -$string['administration'] = "مديريت"; -$string['administrator'] = "مدير"; -$string['administrators'] = "مديرها"; -$string['again'] = "دوباره"; -$string['all'] = "همه"; -$string['alldays'] = "تمام روزها"; -$string['allfieldsrequired'] = "به تمام Ùيلدها نياز است"; -$string['alllogs'] = "تمام ÙØ¹Ø§Ù„يتهاي ثبت شده"; -$string['allow'] = "اجازه داده شود"; -$string['allowguests'] = "اين دوره به مهمانها اجازه ورود مي دهد"; -$string['allownot'] = "اجازه داده نشود"; -$string['allparticipants'] = "تمام شرکت کنندگان"; -$string['alphanumerical'] = "Ùقط مي تواند شامل Ø§Ù„ÙØ¨Ø§ Ùˆ اعداد انگليسي باشد"; -$string['alreadyconfirmed'] = "ثبت نام قبلا تاييد شده"; -$string['answer'] = "پاسخ"; -$string['areyousuretorestorethis'] = "آيا مي خواهيد ادامه دهيد؟"; -$string['areyousuretorestorethisinfo'] = "بعدا مي توانيد پشتيبان را به ÙŠÚ© دوره اضاÙÙ‡ کنيد Ùˆ يا دوره جديد اضاÙÙ‡ کنيد"; -$string['assessment'] = "برآورد"; -$string['assignadmins'] = "تعيين مدير"; -$string['assigncreators'] = "تعيين ايجاد کننده دوره"; -$string['assignstudents'] = "ثبت نام دانشجو"; -$string['assignstudentsnote'] = "نکته : ممکن است لازم نباشد از اين ØµÙØ­Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ کنيد چون دانشجويان مي توانند در اين دوره ثبت نام کنند"; -$string['assignstudentspass'] = "بايد دانشجويان را از کليد Ú©Ù‡ اکنون '\$a' است آگاه کنيد"; -$string['assignteachers'] = "تعيين مربي"; -$string['authentication'] = "روش تصديق کاربر"; -$string['autosubscribe'] = "عضويت خودکار در انجمن"; -$string['autosubscribeno'] = "نه بصورت خودکار در انجمن عضو نشوم"; -$string['autosubscribeyes'] = "بله وقتي مطلبي ارسال کردم در انجمن عضو شوم"; -$string['availability'] = "ميزان در دسترس بودن"; -$string['availablecourses'] = "دوره هاي موجود"; -$string['backup'] = "پشتيبانسازي"; -$string['backupdate'] = "تاريخ پشتيبانسازي"; -$string['backupdetails'] = "جزئيات پشتيبان"; -$string['backupfilename'] = "پشتيبان"; -$string['backupfinished'] = "پشتيبانسازي با موÙقيت به پايان رسيد"; -$string['backupnameformat'] = "%%Y%%m%%d-%%H%%M"; -$string['backuporiginalname'] = "نام پشتيبان"; -$string['backupversion'] = "نسخه پشتيبان"; -$string['cancel'] = "انصراÙ"; -$string['categories'] = "موضوعات دوره ها"; -$string['category'] = "موضوع"; -$string['categoryadded'] = "موضوع '\$a' اضاÙÙ‡ شد"; -$string['categorydeleted'] = "موضوع '\$a' حذ٠شد"; -$string['categoryduplicate'] = "موضوع '\$a' تکراري است"; -$string['changepassword'] = "تغيير رمز ورود"; -$string['changedpassword'] = "رمز ورود تغيير داده شد"; -$string['changessaved'] = "تغييرات ذخيره شد"; -$string['checkingbackup'] = "در حال بررسي پشتيبان"; -$string['checkingcourse'] = "در حال بررسي دوره"; -$string['checkinginstances'] = "در حال بررسي نمونه ها"; -$string['checkingsections'] = "در حال بررسي بخشها"; -$string['checklanguage'] = "وارسي زبان"; -$string['choose'] = "انتخاب کردن"; -$string['choosecourse'] = "انتخاب ÙŠÚ© دوره"; -$string['chooselivelogs'] = "يا مشاهده ÙØ¹Ø§Ù„يت جاري"; -$string['chooselogs'] = "ÙØ¹Ø§Ù„يتهاي ثبت شده اي Ú©Ù‡ مي خواهيد مشاهده کنيد انتخاب کنيد"; -$string['choosetheme'] = "انتخاب Ø´Ú©Ù„ ظاهري سايت"; -$string['chooseuser'] = "انتخاب کاربر"; -$string['city'] = "شهر"; -$string['cleaningtempdata'] = "حذ٠اطلاعات موقت"; -$string['closewindow'] = "خروج"; -$string['complete'] = "کامل"; -$string['configcountry'] = "اگر کشوري را انتخاب کنيد اين کشور بعنوان Ù¾ÙŠØ´ÙØ±Ø¶ براي کاربران انتخاب خواهد شد"; -$string['configgdversion'] = "نسخه GD نصب شده بطور Ù¾ÙŠØ´ÙØ±Ø¶ نشان داده مي شود"; -$string['configerrorlevel'] = "Choose the amount of PHP warnings that you want to be displayed. Normal is usually the best choice."; -$string['confightmleditor'] = "اجازه Ø§Ø³ØªÙØ§Ø¯Ù‡ از ويرايشگر HTML(Ùقط براي IE 5.5 Ùˆ بعد از آن)"; -$string['configidnumber'] = "This option specifies whether (a) Users are not be asked for an ID number at all, (b) Users are asked for an ID number but can leave it blank or (c) Users are asked for an ID Number and cannot leave it blank. If given the User's ID number is displayed in their Profile."; -$string['configintro'] = "در اينجا امکان انجام برخي تنظيمات وجود دارد Ú©Ù‡ بعدا قابل تغيير است"; -$string['configintroadmin'] = "در اينجا بايد کاربر مدير را تعري٠کنيد"; -$string['configintrosite'] = "در اينجا مي توانيد ØµÙØ­Ù‡ اول سايت را تعري٠کنيد"; -$string['configlang'] = "زبان Ù¾ÙŠØ´ÙØ±Ø¶ سايت"; -$string['configlangdir'] = "جهت نوشته ها"; -$string['configlangmenu'] = "نمايش يا عدم نمايش منوي زبان"; -$string['configlongtimenosee'] = "حداکثر زماني Ú©Ù‡ اگر کاربر در اين زمان وارد دوره نشود از دوره حذ٠خواهد شد"; -$string['configloglifetime'] = "زمان نگهداري logها در سايت"; -$string['configmaxeditingtime'] = "حداکثر زمان مجاز براي ويرايش مرسلات"; -$string['configproxyhost'] = "اگر اين سرويس دهنده احتياج به ÙŠÚ© کامپيوتر proxy براي اتصال به اينترنت دارد نام ميزبان proxy Ùˆ شماره پورت آنرا در اينجا مشخص کنيد"; -$string['configsessiontimeout'] = "حداکثر زمان ÙŠÚ© session کاربر"; -$string['configslasharguments'] = "ÙØ§ÙŠÙ„ها از طريق ÙŠÚ© scriptÙŠ Ú©Ù‡ از آرگومانهاي slash Ø§Ø³ØªÙØ§Ø¯Ù‡ مي کند ايجاد مي شوند در گزينه دوم ÙØ§ÙŠÙ„ها ساده تر در مرورگرهاي وب cache شوند.در صورت ايجاد مشکل از گزينه اول Ø§Ø³ØªÙØ§Ø¯Ù‡ کنيد."; -$string['configsmtphosts'] = "نام ÙŠÚ© يا چند سرور smtp Ú©Ù‡ براي ارسال بايد از آنها Ø§Ø³ØªÙØ§Ø¯Ù‡ شود مشخص کنيد"; -$string['configsmtpuser'] = "اگر در بالا ÙŠÚ© سرور smtp را مشخص کرده ايد Ùˆ سرور احتياج به نام کاربري Ùˆ رمز ورود دارد آنرا مشخص کنيد"; -$string['configteacherassignteachers'] = "آيا معلم ها مي توانند براي دوره هايي Ú©Ù‡ تدريس مي کنند معلم هاي ديگري تعيين کنند"; -$string['configunzip'] = "محل برنامه unzip را مشخص مي کند(براي unix Ùˆ اختياري)"; -$string['configuration'] = "تنظيمات"; -$string['configvariables'] = "پيکربندي سايت"; -$string['configwarning'] = "در تغيير اين تنظيمات مراقب باشيد"; -$string['configzip'] = "محل برنامه zip را مشخص مي کند(براي unix Ùˆ اختياري)"; -$string['confirmed'] = "ورود شما تاييد شد"; -$string['confirmednot'] = "ورود شما هنوز تاييد نشده است"; -$string['copy'] = "کپي"; -$string['copyingcoursefiles'] = "در حال کپي کردن ÙØ§ÙŠÙ„هاي مربوط به دوره"; -$string['copyinguserfiles'] = "در حال کپي کردن ÙØ§ÙŠÙ„هاي مربوط به کاربر"; -$string['copyingzipfile'] = "در حال کپي کردن ÙØ§ÙŠÙ„ ÙØ´Ø±Ø¯Ù‡"; -$string['continue'] = "ادامه"; -$string['country'] = "کشور"; -$string['course'] = "دوره"; -$string['coursepicture'] = "عکس دوره"; -$string['courseavailable'] = "اين دوره براي دانشجويان در دسترس است"; -$string['courseavailablenot'] = "اين دوره براي دانشجويان در دسترس نيست"; -$string['coursebackup'] = "پشتيبان دوره"; -$string['coursecategories'] = "موضوعات دوره ها"; -$string['coursecategory'] = "موضوع دوره"; -$string['coursecreators'] = "ايجاد کننده هاي دوره"; -$string['courseinfo'] = "راجع به دوره"; -$string['coursefiles'] = "ÙØ§ÙŠÙ„هاي دوره"; -$string['courseformats'] = "ساختارهاي دوره"; -$string['courserestore'] = "بازيابي دوره"; -$string['coursegrades'] = "نمره هاي دوره"; -$string['courses'] = "دوره ها"; -$string['courseupdates'] = "تغييرات دوره"; -$string['create'] = "ايجاد"; -$string['createaccount'] = "ايجاد حساب کاربري جديد من"; -$string['createfolder'] = "ايجاد ÙŠÚ© پوشه در \$a"; -$string['createuserandpass'] = "ايجاد نام کاربري Ùˆ رمز ورود جديد براي ورود"; -$string['createziparchive'] = "ايجاد آرشيو بصورت ÙØ§ÙŠÙ„ ÙØ´Ø±Ø¯Ù‡"; -$string['creatingcategoriesandquestions'] = "ايجاد موضوعات Ùˆ سئوالات"; -$string['creatingcoursemodules'] = "ايجاد ماژولهاي دوره"; -$string['creatinglogentries'] = "ايجاد امکان ثبت وقايع"; -$string['creatingnewcourse'] = "ايجاد دوره جديد"; -$string['creatingscales'] = "ايجاد مقياس"; -$string['creatingsections'] = "ايجاد بخش"; -$string['creatingtemporarystructures'] = "ايجاد ساختارهاي موقت"; -$string['creatingusers'] = "ايجاد کاربر"; -$string['creatingxmlfile'] = "ايجاد ÙØ§ÙŠÙ„ XML"; -$string['currentcourseadding'] = "اضاÙÙ‡ کردن اطلاعات به دوره"; -$string['currentcoursedeleting'] = "پاک کردن دوره"; -$string['currentlocaltime'] = "زمان محلي شما"; -$string['currentversion'] = "نسخه جاري"; -$string['databasesetup'] = "ايجاد پايگاه داده"; -$string['databasesuccess'] = "پايگاه داده با موÙقيت تغيير کرد"; -$string['databaseupgrades'] = "ارتقا پايگاه داده"; -$string['databaseupgradebackups'] = "نسخه پشتيبات اکنون \$a است"; -$string['day'] = "روز"; -$string['days'] = "روز"; -$string['defaultcoursefullname'] = "نام دوره"; -$string['defaultcourseshortname'] = "نام کوتاه"; -$string['defaultcoursestudent'] = "دانشجو"; -$string['defaultcoursestudents'] = "دانشجوها"; -$string['defaultcoursesummary'] = "در اينجا ÙŠÚ© جمله مختصر Ùˆ جالب براي توضيح دوره بنويسيد"; -$string['defaultcourseteacher'] = "مربي"; -$string['defaultcourseteachers'] = "مربي ها"; -$string['delete'] = "حذÙ"; -$string['deletecheck'] = "آيا \$a حذ٠شود؟"; -$string['deletecheckfiles'] = "آيا مطمئÙ† هستيد مي خواهيد اين ÙØ§ÙŠÙ„ها را پاک کنيد؟"; -$string['deletecheckfull'] = "آيا مطمئÙ† هستيد مي خواهيد \$a را بطور کامل حذ٠کنيد؟"; -$string['deletecheckwarning'] = "شما در حال حذ٠کردن اين ÙØ§ÙŠÙ„ها هستيد"; -$string['deletecompletely'] = "Ø­Ø°Ù ÙØ§ÙŠÙ„ يا پوشه"; -$string['deletecoursecheck'] = "آيا مطمئÙ† هستيد مي خواهيد اين دوره را به همراه تمام اطلاعات آن حذ٠کنيد؟"; -$string['deletecourse'] = "حذ٠دوره"; -$string['deleted'] = "حذ٠شد"; -$string['deletedactivity'] = "\$a حذ٠شد"; -$string['deletedcourse'] = "\$a بطور کامل حذ٠شد"; -$string['deletednot'] = "\$a حذ٠نشد!"; -$string['deletingcourse'] = "در حال حذ٠\$a"; -$string['deletingexistingcoursedata'] = "در حال حذ٠اطلاعات دوره"; -$string['deletingolddata'] = "در حال حذ٠اطلاعات کهنه"; -$string['department'] = "قسمت"; -$string['description'] = "توضيح"; -$string['displayingfirst'] = "تنها \$a->count \$a->things اول نشان داده شده اند"; -$string['displayingrecords'] = "نمايش \$a رکورد"; -$string['displayingusers'] = "نمايش کاربران از \$a->start تا \$a->end"; -$string['donotask'] = "سوال نشود"; -$string['downloadexcel'] = "Ø¯Ø±ÙŠØ§ÙØª ÙØ§ÙŠÙ„ با ÙØ±Ù…ت اکسل"; -$string['downloadtext'] = "Ø¯Ø±ÙŠØ§ÙØª ÙØ§ÙŠÙ„ با ÙØ±Ù…ت متني"; -$string['doyouagree'] = "آيا شرايط را خوانديد Ùˆ متوجه شديد؟"; -$string['edit'] = "ويرايش \$a"; -$string['editcoursesettings'] = "ويرايش تنظيمات دوره"; -$string['editinga'] = "ويرايش ÙŠÚ© \$a"; -$string['editmyprofile'] = "ويرايش مشخصات ÙØ±Ø¯ÙŠ"; -$string['editsummary'] = "ويرايش خلاصه"; -$string['editthisactivity'] = "ويرايش اين ÙØ¹Ø§Ù„يت"; -$string['editthiscategory'] = "ويرايش اين موضوع"; -$string['edituser'] = "ويرايش حسابهاي کاربري"; -$string['email'] = "آدرس email"; -$string['emailformat'] = "Ø´Ú©Ù„ email"; -$string['emailconfirm'] = "تاييد حساب کاربري"; -$string['emailconfirmsent'] = " -

            بايد نامه اي به آدرس شما در \$a ÙØ±Ø³ØªØ§Ø¯Ù‡ شده باشد.

            -

            که شامل توضيحاتي درباره اتمام ثبت نام است.

            -

            اگر باز هم مشکل داشتيد با مدير سايت تماس بگيريد.

            "; -$string['emailconfirmation'] = "سلام \$a->firstname, -ÙŠÚ© حساب کاربري با آدرس الکترونيک شما در '\$a->sitename' درخواست شده است. - -براي تاييد درخواست خود به آدرس زير برويد -\$a->link - -دراکثر برنامه هاي پست الکترونيک اين لينک بصورت آبي نشان داده مي شود. -اگر اينحالت نيست اين آدرس را در محل آدرس مرورگر کپي کنيد. - -اگر به Ú©Ù…Ú© احتياج داريد با مدير سايت تماس بگيريد. -\$a->admin"; -$string['emailconfirmationsubject'] = "\$a: تاييد حساب کاربري"; -$string['emaildisplay'] = "نمايش email"; -$string['emaildisplayno'] = "email واقعي من را از همه پنهان Ú©Ù†"; -$string['emaildisplayyes'] = "همه امکان ديدن email من را داشته باشند"; -$string['emaildisplaycourse'] = "تنها ساير هم کلاسيها بتوانند email من را ببينند"; -$string['emailexists'] = "اين آدرس email قبلا ثبت نام کرده است"; -$string['emailmustbereal'] = "توجه: email شما بايد واقعي باشد"; -$string['emailpasswordconfirmation'] = "سلام \$a->firstname, - -احتمالا شما درخواستي براي تغيير رمز ورود حساب کاربريتان در -'\$a->sitename' داده ايد. - -براي تاييد اين مسئله وارسال رمز ورود جديد براي شما به لينک زير برويد -\$a->link - -دراکثر برنامه هاي پست الکترونيک اين لينک بصورت آبي نشان داده مي شود. -اگر اينحالت نيست اين آدرس را در محل آدرس مرورگر کپي کنيد. - -اگر به Ú©Ù…Ú© احتياج داريد با مدير سايت تماس بگيريد. -\$a->admin"; -$string['emailpasswordconfirmationsubject'] = "\$a: تاييد تغيير رمز ورود"; -$string['emailpasswordconfirmsent'] = "ÙŠÚ© نامه بايد به آدرس شما در \$a ÙØ±Ø³ØªØ§Ø¯Ù‡ شده باشد. -

            اين نامه شامل توضيحاتي براي تاييد تغيير رمز ورود است. اگر باز هم مشکل داشتيد با مدير سايت تماس بگيريد

            "; - -$string['emailpasswordsent'] = "براي تاييد تغيير رمز ورود متشکريم. -

            ÙŠÚ© نامه Ú©Ù‡ شامل رمز جديد شما است به آدرس شما در\$a->email ÙØ±Ø³ØªØ§Ø¯Ù‡ شده است.

            -

            ممکن است بخواهيد رمز ورودتان را -link\">تغييردهيد.

            "; -$string['enrolmentconfirmation'] = "آيا مطمئÙ† هستيد مي خواهيد در اين دوره ثبت نام کنيد؟"; -$string['enrolmentkey'] = "کليد"; -$string['enrolmentkeyfrom'] = "اين دوره داراي کليد است Ú©Ù‡ بايد از \$a Ø¯Ø±ÙŠØ§ÙØª کنيد."; -$string['enrolmentkeyhint'] = "کليدي Ú©Ù‡ وارد کرديد غلط است. Ù„Ø·ÙØ§ دوباره وارد کنيد."; -$string['entercourse'] = "وارد دوره شويد."; -$string['enteremailaddress'] = "email خود را وارد کنيد تا رمز ورود شما دوباره تعيين شود، Ùˆ از طريق mail براي شما ارسال شود"; -$string['error'] = "خطا"; -$string['errortoomanylogins'] = "ببخشيد شما از تعداد Ø¯ÙØ¹Ø§Øª مجاز براي ورود به سايت گذشته ايد Ù„Ø·ÙØ§ مرورگر خود را درباره باز کنيد."; -$string['errorwhenconfirming'] = "بخاطر وجود خطايي شما هنوز تاييد نشده ايد. اگر از طريق لينک موجود در پست الکترونيک به اينجا آمده ايد مطمئÙ† شويد مشکلي ندارد Ùˆ يا آنرا در محل آدرس مرورگر کپي کنيد."; -$string['existing'] = "موجود"; -$string['existingadmins'] = "مديران موجود"; -$string['existingcourse'] = "دوره موجود"; -$string['existingcourseadding'] = "اضاÙÙ‡ کردن اطلاعات به دوره"; -$string['existingcoursedeleting'] = "حذ٠کردن دوره"; -$string['existingcreators'] = "ايجاد کننده هاي دوره در حال حاضر"; -$string['existingstudents'] = "دانشجوياني Ú©Ù‡ ثبت نام کرده اند"; -$string['existingteachers'] = "معلم ها درحال حاضر"; -$string['feedback'] = "جواب"; -$string['filemissing'] = "\$a وجود ندارد"; -$string['files'] = "ÙØ§ÙŠÙ„"; -$string['filesfolders'] = "ÙØ§ÙŠÙ„ها Ùˆ پوشه ها"; -$string['filloutallfields'] = "Ù„Ø·ÙØ§ Ùيلدهاي اين ÙØ±Ù… را پر کنيد"; -$string['findmorecourses'] = "پيدا کردن دوره هاي ديگر..."; -$string['firstname'] = "نام"; -$string['firsttime'] = "آيا اين اولين بار است Ú©Ù‡ اينجا هستيد؟"; -$string['followingoptional'] = "اين موارد اختياري هستند"; -$string['followingrequired'] = "اين موارد ضروري هستند"; -$string['forgotten'] = "آيا نام کاربري يا رمز ورود خود را ÙØ±Ø§Ù…وش کرده ايد؟"; -$string['format'] = "ساختار"; -$string['formathtml'] = "Ø´Ú©Ù„ HTML"; -$string['formatplain'] = "Ø´Ú©Ù„ متني"; -$string['formatsocial'] = "کميسيوني (ميزگردي)"; -$string['formattexttype'] = "Ø´Ú©Ù„ پيام"; -$string['formattopics'] = "همايشي"; -$string['formatweeks'] = "Ù‡ÙØªÚ¯ÙŠ"; -$string['from'] = "از"; -$string['frontpagecategorynames'] = "مجموعه اي از موضوعات را نشان بده"; -$string['frontpagecourselist'] = "مجموعه اي از دوره ها را نشان بده"; -$string['frontpagedescription'] = "ØªÙˆØµÙŠÙ ØµÙØ­Ù‡ اول"; -$string['frontpageformat'] = "Ø´Ú©Ù„ ØµÙØ­Ù‡ اول"; -$string['frontpagenews'] = "خبرها را نشان بده"; -$string['fulllistofcourses'] = "تمام دوره ها"; -$string['fullprofile'] = "مشخصات شخصي"; -$string['fullname'] = "نام کامل"; -$string['fullsitename'] = "نام کامل سايت"; -$string['gd1'] = "GD 1.x نصب است"; -$string['gd2'] = "GD 2.x نصب است"; -$string['gdneed'] = "GD بايد نصب شود تا گرا٠را ببينيد"; -$string['gdnot'] = "GD نصب نيست"; -$string['grade'] = "نمره"; -$string['grades'] = "نمره ها"; -$string['guestskey'] = "به مهمانهايي Ú©Ù‡ کليد را دارند اجازه ورود داده شود."; -$string['guestsno'] = "به مهمانها اجازه ورود داده نشود"; -$string['guestsnotallowed'] = "ببخشيد,'\$a' به مهمانها اجازه ورود نمي دهد."; -$string['guestsyes'] = "به مهمانها اجازه ورود داده شود حتي بدون کليد"; -$string['guestuser'] = "کاربر مهمان"; -$string['guestuserinfo'] = "اين ÙŠÚ© کاربر مخصوص است Ú©Ù‡ اجازه دسترسي Ùقط خواندني به برخي دوره ها را دارد."; -$string['hide'] = "پنهان کردن"; -$string['hits'] = "تعداد کليک"; -$string['hitsoncourse'] = "تعداد کليک \$a->coursename توسط \$a->username"; -$string['hitsoncoursetoday'] = "تعداد کليک امروز \$a->coursename توسط \$a->username"; -$string['home'] = "ØµÙØ­Ù‡ اصلي"; -$string['hour'] = "ساعت"; -$string['hours'] = "ساعت"; -$string['htmleditor'] = "Ø§Ø³ØªÙØ§Ø¯Ù‡ از ويرايشگر HTML(Ùقط براي IE 5.5 Ùˆ بعد از آن)"; -$string['htmleditoravailable'] = "ويرايشگر Richtext ÙØ¹Ø§Ù„ است"; -$string['htmleditordisabled'] = "شما ويرايشگر Richtext را در ÙØ±Ù… مشخصات خود ØºÙŠØ±ÙØ¹Ø§Ù„ کرده ايد"; -$string['htmleditordisabledadmin'] = "مدير ويرايشگر Richtext را ØºÙŠØ±ÙØ¹Ø§Ù„ کرده است"; -$string['htmleditordisabledbrowser'] = "ويرايشگر Richtext ÙØ¹Ø§Ù„ نيست چون از Internet Explorer 5.5 يا نسخه هاي بالاتر Ø§Ø³ØªÙØ§Ø¯Ù‡ نمي کنيد"; -$string['htmlformat'] = "HTML"; -$string['idnumber'] = "شماره شناسه"; -$string['include'] = "اضاÙÙ‡ کردن"; -$string['included'] = "اضاÙÙ‡ شد"; -$string['includeallusers'] = "تمام کاربران را شامل کنيد."; -$string['includecourseusers'] = "کاربران اين دوره شامل شوند"; -$string['includeneededusers'] = "کاربران لازم شامل شوند"; -$string['includelogentries'] = "ÙØ¹Ø§Ù„يتهاي ثبت شده شامل شوند"; -$string['includeuserfiles'] = "ÙØ§ÙŠÙ„هاي کاربران شامل شوند"; -$string['includecoursefiles'] = "ÙØ§ÙŠÙ„هاي دوره شامل شوند"; -$string['jumpto'] = "پريدن به..."; -$string['leavetokeep'] = "براي نگهداشتن رمز ورود کنوني خالي بماند"; -$string['invalidlogin'] = "ورود غير معتبر Ù„Ø·ÙØ§ دوباره سعي کنيد"; -$string['invalidemail'] = "email نا معتبر"; -$string['langltr'] = "از Ú†Ù¾ به راست"; -$string['langrtl'] = "از راست به Ú†Ù¾"; -$string['language'] = "زبان"; -$string['lastaccess'] = "زمان آخرين دسترسي"; -$string['lastedited'] = "آخرين ويرايش در"; -$string['lastmodified'] = "آخرين تغيير در"; -$string['lastname'] = "نام خانوادگي"; -$string['latestnews'] = "آخرين مباحثات"; -$string['latestsitenews'] = "آخرين مباحثات سايت"; -$string['latestcoursenews'] = "آخرين مباحثات دوره"; -$string['list'] = "ليست"; -$string['listfiles'] = "ليست ÙØ§ÙŠÙ„ها در \$a"; -$string['listofallpeople'] = "ليست تمام Ø§ÙØ±Ø§Ø¯"; -$string['livelogs'] = "ÙØ¹Ø§Ù„يتهاي ثبت شده در ÙŠÚ© ساعت اخير"; -$string['locale'] = "en"; -$string['location'] = "مکان"; -$string['loggedinas'] = "با نام \$a وارد سايت شده ايد"; -$string['loggedinnot'] = "هنوز وارد سايت نشده ايد"; -$string['login'] = "ورود به سايت"; -$string['loginas'] = "ورود بعنوان"; -$string['loginguest'] = "ورود به سايت بعنوان مهمان"; -$string['loginsite'] = "ورود به سايت"; -$string['loginto'] = "ورود به \$a"; -$string['loginusing'] = "با Ø§Ø³ØªÙØ§Ø¯Ù‡ از نام کاربري Ùˆ رمز ورود وارد شويد"; -$string['loginsteps'] = "سلام، براي دسترسي کامل به دوره ها بايد ÙŠÚ© حساب کاربري ايجاد کنيد. درزير مراحل اين کار توضيح داده شده است: -
            -
            -Û±. ÙØ±Ù… حساب جديد را با اطلاعات خود کامل کنيد. -
            -۲. يک نامه سريعا به آدرس الکترونيک شما ارسال مي شود. -
            -۳. نامه را بخوانيد و روي لينک کليک کنيد. -
            -۴. حساب شما تاييد شده و مي توانيد وارد سايت شويد. -
            -۵. حالا دوره اي که مي خواهيد در آن شرکت کنيد انتخاب کنيد. -
            -Û¶. اگر از شما "کليد" خواسته شد، از کليدي Ú©Ù‡ از معلمتان Ú¯Ø±ÙØªÙ‡ ايد Ø§Ø³ØªÙØ§Ø¯Ù‡ کنيد. اين کليد شما را"وارد" دوره مي کند. -
            -Û·. پس از طي مراحل Ùوق شما دسترسي کامل به دوره مورد نظر خواهيد داشت. پس از اين هر موقع وارد سايت شديد با وارد کردن نام کاربر Ùˆ رمز ورود در اين ØµÙØ­Ù‡ وارد سايت شده Ùˆ در -دوره هايي Ú©Ù‡ ثبت نام شده ايد شرکت مي کنيد."; -$string['loginstepsnone'] = "سلام

            براي دسترسي کامل به دوره ها بايد يک حساب کاربري ايجاد کنيد.

            تنها کاري Ú©Ù‡ بايد انجام دهيد اينستکه ÙŠÚ© نام کاربري Ùˆ رمز براي خود ايجاد Ùˆ آنرا در اين ØµÙØ­Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ کنيد.

            اگر ÙØ±Ø¯ ديگري نام کاربري شما را انتخاب کرده باشد بايد ÙŠÚ© نام ديگر براي خود انتخاب کنيد."; -$string['logout'] = "خروج از سايت"; -$string['logs'] = "ÙØ¹Ø§Ù„يتهاي ثبت شده"; -$string['makeafolder'] = "ساخت پوشه"; -$string['mainmenu'] = "Ùهرست اصلي"; -$string['managedatabase'] = "پايگاه داده"; -$string['managemodules'] = "ماژولها"; -$string['markedthistopic'] = "اين موضوع بعنوان موضوع جاري مشخص شده است"; -$string['markthistopic'] = "اين موضوع را بعنوان موضوع جاري مشخص Ú©Ù†"; -$string['maximumchars'] = "حداکثر \$a کاراکتر"; -$string['maximumgrade'] = "حداکثر نمره"; -$string['maximumshort'] = "حداکثر"; -$string['maxsize'] = "حداکثر اندازه: \$a "; -$string['min'] = "دقيقه"; -$string['mins'] = "دقيقه"; -$string['miscellaneous'] = "Ù…ØªÙØ±Ù‚Ù‡"; // Default course category -$string['missingcategory'] = "بايد ÙŠÚ© موضوع انتخاب کنيد"; -$string['missingcity'] = "شهر را وارد کنيد"; -$string['missingcountry'] = "کشور را انتخاب کنيد"; -$string['missingdescription'] = "توصي٠وجود ندارد"; -$string['missingemail'] = "email خود را وارد کنيد"; -$string['missingfirstname'] = "نام خود را وارد کنيد"; -$string['missingfullname'] = "نام کامل وجود ندارد"; -$string['missinglastname'] = "نام خانوادگي خود را وارد کنيد"; -$string['missingshortname'] = "نام کوتاه وجود ندارد"; -$string['missingnewpassword'] = "رمز جديد وجود ندارد"; -$string['missingpassword'] = "رمز ورود وجود ندارد"; -$string['missingshortsitename'] = "نام کوتاه سايت وجود ندارد"; -$string['missingsitedescription'] = "توصي٠سايت وجود ندارد"; -$string['missingsitename'] = "نام سايت وجود ندارد"; -$string['missingstudent'] = "بايد ÙŠÚ© مورد انتخاب کنيد"; -$string['missingsummary'] = "خلاصه وجود ندارد"; -$string['missingteacher'] = "بايد ÙŠÚ© مورد انتخاب کنيد"; -$string['missingurl'] = "URL وجود ندارد"; -$string['missingusername'] = "ÙŠÚ© نام کاربري وجود ندارد"; -$string['modified'] = "تغيير داده شد"; -$string['modulesetup'] = "تنظيم کردن جدولهاي ماژولها"; -$string['modulesuccess'] = "\$a تنظيم شده اند"; -$string['mostrecently'] = "اخيرا"; -$string['move'] = "انتقال"; -$string['movecategoryto'] = "انتقال موضوع به:"; -$string['movecourseto'] = "انتقال دوره به:"; -$string['movedown'] = "انتقال به پايين"; -$string['movefilestohere'] = "انتقال ÙØ§ÙŠÙ„ها به اينجا"; -$string['movefull'] = "انتقال \$a به اينجا"; -$string['movehere'] = "انتقال به اينجا"; -$string['moveselectedcoursesto'] = "انتقال دوره انتخاب شده به..."; -$string['movetoanotherfolder'] = "انتقال به پوشه ديگر"; -$string['moveup'] = "انتقال به بالا"; -$string['mustconfirm'] = "بايد ورود خود را تاييد کنيد"; -$string['mycourses'] = "دوره هاي آموزشي شما"; -$string['name'] = "نام"; -$string['namesocial'] = "بخش"; -$string['nametopics'] = "موضوع"; -$string['nameweeks'] = "Ù‡ÙØªÙ‡"; -$string['needed'] = "نياز است"; -$string['new'] = "جديد"; -$string['newaccount'] = "حساب جديد"; -$string['newcourse'] = "دوره جديد"; -$string['newpassword'] = "رمز ورود جديد"; -$string['newpasswordtext'] = "سلام \$a->firstname, -حساب کاربري شما در '\$a->sitename' بازسازي شده است Ùˆ ÙŠÚ© رمز ورود جديد موقتي براي شما ايجاد شد. -در حال حاضر اطلاعات شما براي ورود به سايت عبارتند از: -نام کاربري: \$a->username -رمز ورود: \$a->newpassword -براي تغيير رمز ورود به ØµÙØ­Ù‡ زير برويد: -\$a->link - -دراکثر برنامه هاي پست الکترونيک اين لينک بصورت آبي نشان داده مي شود. اگر اينحالت نيست اين آدرس را در محل آدرس مرورگر کپي کنيد. متشکر، از طر٠مدير '\$a->sitename' \$a->signoff\n"; - -$string['newpicture'] = "عکس جديد"; -$string['newuser'] = "کاربر جديد"; -$string['newusers'] = "کاربران جديد"; -$string['newsitem'] = "مورد جديد"; -$string['newsitems'] = "خبر"; -$string['newsitemsnumber'] = "تعداد خبري Ú©Ù‡ نشان داده شود"; -$string['never'] = "هرگز"; -$string['neverdeletelogs'] = "هرگز ÙØ¹Ø§Ù„يتهاي ثبت شده را پاک Ù†Ú©Ù†"; -$string['next'] = "بعدي"; -$string['no'] = "خير"; -$string['nocoursesyet'] = "دوره اي با اين موضوع وجود ندارد"; -$string['noexistingadmins'] = "در حال حاضر مديري نيست(اين ÙŠÚ© خطاي جدي است)"; -$string['noexistingcreators'] = "در حال حاضر ايجاد کننده دوره نداريم"; -$string['noexistingstudents'] = "در حال حاضر دانشجويي نيست"; -$string['noexistingteachers'] = "در حال حاضر معلمي نيست"; -$string['nofilesselected'] = "ÙØ§ÙŠÙ„ÙŠ براي بازيابي انتخاب نشده است"; -$string['nofilesyet'] = "هنوز ÙØ§ÙŠÙ„ÙŠ به دوره ÙØ±Ø³ØªØ§Ø¯Ù‡ نشده"; -$string['nograde'] = "بدون نمره"; -$string['noimagesyet'] = "هنوز عکسي براي اين دوره ارسال نشده است"; -$string['nomorecourses'] = "دوره ديگري Ú©Ù‡ تطابق داشته باشد ÙŠØ§ÙØª نشد"; -$string['nocoursesfound'] = "هيچ دوره اي Ú©Ù‡ شامل '\$a' باشد ÙŠØ§ÙØª نشد."; -$string['none'] = "هيچي"; -$string['nopotentialadmins'] = "کسي Ú©Ù‡ بتواند مدير شود وجود ندارد"; -$string['nopotentialcreators'] = "کسي Ú©Ù‡ بتواند دوره ايجاد کند وجود ندارد"; -$string['nopotentialstudents'] = "کسي Ú©Ù‡ بتواند دانشجو شود وجود ندارد"; -$string['nopotentialteachers'] = "کسي Ú©Ù‡ بتواند معلم شود وجود ندارد"; -$string['normal'] = "معمولي"; -$string['nostudentsyet'] = "هنوز کسي در اين دوره ثبت نام نشده است"; -$string['nosuchemail'] = "چنين emailÙŠ وجود ندارد"; -$string['notavailable'] = "در دسترس نيست"; -$string['noteuserschangednonetocourse'] = "Note: course users need to be restored when restoring user data. This setting has been changed for you."; -$string['notincluded'] = "اضاÙÙ‡ نشده"; -$string['noteachersyet'] = "اين دوره هنوز معلم ندارد"; -$string['notenrolled'] = "\$a در اين دوره ثبت نام نشده است."; -$string['nothingnew'] = "از آخرين ورود شما به سايت چيز جديدي نيست"; -$string['nousersmatching'] = "کاربر '\$a' ÙŠØ§ÙØª نشد"; -$string['nousersyet'] = "هنوز کاربري نيست"; -$string['now'] = "اکنون"; -$string['numberweeks'] = "تعداد Ù‡ÙØªÙ‡/همايش"; -$string['numdays'] = "\$a روز "; -$string['numhours'] = "\$a ساعت"; -$string['numminutes'] = "\$a دقيقه"; -$string['numviews'] = "\$a ديدگاه"; -$string['numweeks'] = "\$a Ù‡ÙØªÙ‡"; -$string['numwords'] = "\$a کلمه"; -$string['numyears'] = "\$a سال"; -$string['ok'] = "تاييد"; -$string['opentoguests'] = "دسترسي Ø§ÙØ±Ø§Ø¯ مهمان"; -$string['optional'] = "اختياري"; -$string['order'] = "ترتيب"; -$string['other'] = "ديگر"; -$string['outline'] = "Ø´Ú©Ù„ کلي"; -$string['page'] = "ØµÙØ­Ù‡"; -$string['participants'] = "شرکت کنندگان"; -$string['password'] = "رمز ورود"; -$string['passwordchanged'] = "رمز ورود تغيير داده شد."; -$string['passwordconfirmchange'] = "تاييد تغيير رمز ورود"; -$string['passwordsdiffer'] = "اين رمز ورودها با هم ÙØ±Ù‚ دارند"; -$string['passwordrecovery'] = "بله Ú©Ù…Ú© کنيد من وارد شوم"; -$string['passwordsent'] = "رمز ورود ÙØ±Ø³ØªØ§Ø¯Ù‡ شد"; -$string['passwordsenttext'] = " -

            ÙŠÚ© نامه به آدرس شما در \$a->email ÙØ±Ø³ØªØ§Ø¯Ù‡ شد.

            -

            Ù„Ø·ÙØ§ نامه را براي تغيير رمز Ú†Ú© کنيد

            -

            شما مي توانيد - link\">رمز ورود را تغيير دهيد."; -$string['people'] = "مخاطبين"; -$string['personalprofile'] = "مشخصات ÙØ±Ø¯ÙŠ"; -$string['phone'] = "شماره تلÙÙ†"; -$string['popupwindow'] = "باز کردن ÙØ§ÙŠÙ„ در پنجره جديد"; -$string['potentialadmins'] = "کساني Ú©Ù‡ مي توانند مدير باشند"; -$string['potentialcreators'] = "کساني Ú©Ù‡ مي توانند دوره ايجاد کنند"; -$string['potentialstudents'] = "کساني Ú©Ù‡ مي توانند دانشجو باشند"; -$string['potentialteachers'] = "کساني Ú©Ù‡ مي توانند معلم شوند"; -$string['preferredlanguage'] = "زبان"; -$string['preview'] = "ديدن"; -$string['previeworchoose'] = "انتخاب يا ديدن Ø´Ú©Ù„ ظاهري سايت"; -$string['publicdirectory'] = "Ùهرست راهنماي عمومي"; -$string['publicsitefileswarning'] = "توجه:ÙØ§ÙŠÙ„هايي Ú©Ù‡ در اينجا قرار مي گيرند توسط همه قابل دستيابي هستند"; -$string['question'] = "سوال"; -$string['readinginfofrombackup'] = "در حال خواندن اطلاعات پشتيبان"; -$string['readme'] = "README"; // This is a file name -$string['recentactivity'] = "جديدترين تغييرات"; -$string['removeadmin'] = "حذ٠مدير"; -$string['removecreator'] = "حذ٠ايجاد کننده دوره"; -$string['removestudent'] = "حذ٠دانشجو"; -$string['removeteacher'] = "حذ٠مربي"; -$string['rename'] = "تغيير نام"; -$string['renamefileto'] = "تغيير نام \$a به"; -$string['required'] = "لازم است"; -$string['resortcoursesbyname'] = "مرتب کردن دوره ها بر اساس نام"; -$string['resources'] = "منابع"; -$string['restore'] = "برگشت به حالت اول"; -$string['restorecancelled'] = "بازيابي لغو شد"; -$string['restorefinished'] = "بازيابي با موÙقيت به اتمام رسيد"; -$string['restoreto'] = "بازيابي به"; -$string['returningtosite'] = "برگشت به سايت"; -$string['requireskey'] = "اين دوره به کليد احتياج دارد"; -$string['revert'] = "برگشت"; -$string['role'] = "نقش"; -$string['savechanges'] = "تغييرات ذخيره شود"; -$string['scale'] = "مقياس"; -$string['scales'] = "مقياسها"; -$string['scalescustom'] = "ساخت مقياس"; -$string['scalescustomno'] = "هنوز مقياس جديدي ايجاد نشده است"; -$string['scalescustomcreate'] = "اضاÙÙ‡ کردن مقياس جديد"; -$string['scalesstandard'] = "مقياسهاي استاندارد"; -$string['search'] = "جستجو"; -$string['searchagain'] = "جستجوي دوباره"; -$string['searchcourses'] = "جستجوي دوره ها"; -$string['searchhelp'] = "مي توانبد در آن واحد چند کلمه را جستجو کنيد -
            کلمه : هر موردي از اين کلمه را در متن پيدا مي کند. -
            +کلمه : تنها موارد دقيقا مشابه پيدا مي شوند. -
            -کلمه : اين کلمه در نتايج نباشد."; -$string['searchresults'] = "نتايج جستجو"; -$string['sec'] = "ثانيه"; -$string['secs'] = "ثانيه"; -$string['section'] = "بخش"; -$string['sections'] = "بخشها"; -$string['select'] = "انتخاب"; -$string['selectacountry'] = "انتخاب کشور"; -$string['selectednowmove'] = "\$a ÙØ§ÙŠÙ„ براي انتقال انتخاب شدند.حال به محل دلخواه برويد Ùˆ 'انتقال ÙØ§ÙŠÙ„ به اينجا' را انتخاب کنيد"; -$string['senddetails'] = "اطلاعاتم را با email Ø¨ÙØ±Ø³Øª"; -$string['separateandconnected'] = "يادگيري ÙØ±Ø¯ÙŠ Ùˆ جمعي"; -$string['serverlocaltime'] = "زمان محلي"; -$string['settings'] = "تنظيمات"; -$string['shortname'] = "نام کوتاه"; -$string['shortnametaken'] = "اين نام کوتاه در حال حاضر براي ÙŠÚ© دوره ديگر Ø§Ø³ØªÙØ§Ø¯Ù‡ شده است. (\$a)"; -$string['shortsitename'] = "نام کوتاه براي سايت"; -$string['show'] = "نشان بده"; -$string['showall'] = "تمام \$a ها را نشان بده"; -$string['showalltopics'] = "تمام موضوعات را نشان بده"; -$string['showallusers'] = "تمام کاربران را نشان بده"; -$string['showallweeks'] = "تمام Ù‡ÙØªÙ‡ ها را نشان بده"; -$string['showgrades'] = "نمايش نمره ها"; -$string['showlistofcourses'] = "ليست دوره ها را نشان بده"; -$string['showonlytopic'] = "تنها موضوع \$a را نشان بده"; -$string['showonlyweek'] = "تنها Ù‡ÙØªÙ‡ \$a را نشان بده"; -$string['showrecent'] = "نشان دادن ÙØ¹Ø§Ù„يت اخير"; -$string['showtheselogs'] = "اين ÙØ¹Ø§Ù„يتهاي ثبت شده را نشان بده"; -$string['showallcourses'] = "تمام دوره ها را نشان بده"; -$string['site'] = "سايت"; -$string['sites'] = "سايتها"; -$string['sitefiles'] = "ÙØ§ÙŠÙ„هاي سايت"; -$string['sitelogs'] = "ÙØ¹Ø§Ù„يتهاي ثبت شده سايت"; -$string['sitenews'] = "اخبار سايت"; -$string['sitesettings'] = "تنظيمات سايت"; -$string['size'] = "اندازه"; -$string['socialheadline'] = "جديدترين موضوعات Ú¯ÙØªÙ…ان اجتماعي"; -$string['someallowguest'] = "بعضي دوره ها ممکن است به مهمانها اجازه دسترسي بدهند"; -$string['someerrorswerefound'] = "بعضي اطلاعات وجود ندارد يا غلط است."; -$string['startdate'] = "روز شروع دوره"; -$string['students'] = "دانشجويان"; -$string['restorecoursenow'] = "اين دوره را هم اکنون بازيابي Ú©Ù†"; -$string['startsignup'] = "هم اکنون با ايجاد ÙŠÚ© حساب کاربري جديد شروع کنيد!"; -$string['state'] = "استان"; -$string['status'] = "وضعيت"; -$string['strftimedate'] = "%%d %%B %%Y"; -$string['strftimedateshort'] = "%%d %%B"; -$string['strftimedatetime'] = "%%d %%B %%Y, %%I:%%M %%p"; -$string['strftimedaydate'] = "%%A, %%d %%B %%Y"; -$string['strftimedaydatetime'] = "%%A, %%d %%B %%Y, %%I:%%M %%p"; -$string['strftimerecent'] = "%%d %%b, %%H:%%M"; -$string['strftimerecentfull'] = "%%a, %%d %%b %%Y, %%I:%%M %%p"; -$string['strftimetime'] = "%%I:%%M %%p"; -$string['studentnotallowed'] = "ببخشيد شما نمي توانيد بعنوان '\$a' وارد دوره شويد"; -$string['subcategories'] = "زير موضوع"; -$string['success'] = "موÙقيت"; -$string['summary'] = "خلاصه"; -$string['summaryof'] = "خلاصه \$a"; -$string['supplyinfo'] = "Ù„Ø·ÙØ§ درباره خود اطلاعاتي وارد کنيد"; -$string['teacheronly'] = "Ùقط براي \$a"; -$string['teachers'] = "مربيها"; -$string['teacherroles'] = "\$a نقش"; -$string['textformat'] = "Ø´Ú©Ù„ متني ساده"; -$string['textediting'] = "در موقع ويرايش متن"; -$string['texteditor'] = "Ø§Ø³ØªÙØ§Ø¯Ù‡ از شکلهاي استاندارد وب"; -$string['time'] = "زمان"; -$string['timezone'] = "زمان محلي"; -$string['thanks'] = "متشکرم"; -$string['thischarset'] = "utf-8"; -$string['thislanguage'] = "فارسی"; -$string['theme'] = "Ø´Ú©Ù„ ظاهري سايت"; -$string['themes'] = "Ø´Ú©Ù„ ظاهري سايت"; -$string['themesaved'] = "Ø´Ú©Ù„ ظاهري سايت تغيير کرد"; -$string['to'] = "به"; -$string['today'] = "امروز"; -$string['todaylogs'] = "ÙØ¹Ø§Ù„يتهاي ثبت شده امروز"; -$string['toomanytoshow'] = "کاربران زيادي براي نمايش وجود دارند"; -$string['top'] = "بالا"; -$string['topic'] = "موضوع"; -$string['topichide'] = "اين موضوع را از \$a پنهان Ú©Ù†"; -$string['topicoutline'] = "Ø´Ú©Ù„ موضوعي"; -$string['topicshow'] = "اين موضوع را به \$a نشان بده"; -$string['total'] = "مجموع"; -$string['turneditingoff'] = "اتمام ويرايش"; -$string['turneditingon'] = "انجام ويرايش"; -$string['undecided'] = "مردد"; -$string['unenrol'] = "حذ٠دانشجو"; -$string['unenrolme'] = "من را از ثبت نام \$a خارج Ú©Ù†"; -$string['unenrolsure'] = "آيا مطمئÙ† هستيد مي خواهيد \$a را از اين دوره حذ٠کنيد؟"; -$string['unknowncategory'] = "موضوع نا شناخته"; -$string['unpacking'] = "باز کردن \$a"; -$string['unsafepassword'] = "اين رمز ورود ناامن است Ù„Ø·ÙØ§ آنرا عوض کنيد!"; -$string['unusedaccounts'] = "حسابهاي کاربري Ú©Ù‡ بيش از \$a روز Ø§Ø³ØªÙØ§Ø¯Ù‡ نشوندبطور خودکار حذ٠مي شوند"; -$string['unzip'] = "باز کردن ÙØ§ÙŠÙ„ ÙØ´Ø±Ø¯Ù‡"; -$string['unzippingbackup'] = "باز کردن پشتيبان"; -$string['update'] = "به روز کردن"; -$string['updated'] = "\$a بروزرساني شد."; -$string['updatemyprofile'] = "تغيير مشخصات ÙØ±Ø¯ÙŠ"; -$string['updatesevery'] = "در هر \$a ثانيه بروزرساني Ú©Ù†"; -$string['updatethiscourse'] = "به روز کردن اين دوره"; -$string['updatinga'] = "ويرايش ÙŠÚ© \$a"; -$string['updatingain'] = "ويرايش ÙŠÚ© \$a->what در \$a->in"; -$string['updatethis'] = "به روز کردن \$a"; -$string['upload'] = "ÙØ±Ø³ØªØ§Ø¯Ù†"; -$string['uploadafile'] = "ÙØ±Ø³ØªØ§Ø¯Ù† ÙØ§ÙŠÙ„ به سايت"; -$string['uploadedfileto'] = "ÙØ§ÙŠÙ„ \$a->file را به \$a->directory Ø¨ÙØ±Ø³Øª"; -$string['uploadnofilefound'] = "هيچ ÙØ§ÙŠÙ„ÙŠ پيدا نشد.آيا مطمئÙ† هستيد Ú©Ù‡ ÙØ§ÙŠÙ„ÙŠ انتخاب کرديد؟"; -$string['uploadproblem'] = "در ارسال ÙØ§ÙŠÙ„ '\$a' مشکل ناشناخته اي پيش آمد(ممکن است اندازه آن بزرگ بوده است)"; -$string['uploadthisfile'] = "ارسال اين ÙØ§ÙŠÙ„"; -$string['user'] = "کاربر"; -$string['userdeleted'] = "اين حساب کاربري حذ٠شده است."; -$string['userdescription'] = "درباره خود"; -$string['userfiles'] = "ÙØ§ÙŠÙ„هاي کاربران"; -$string['username'] = "نام کاربر"; -$string['usernameexists'] = "اين نام کاربري وجود دارد ÙŠÚ© مورد ديگر انتخاب کنيد."; -$string['userprofilefor'] = "مشخصات ÙØ±Ø¯ÙŠ Ø¨Ø±Ø§ÙŠ \$a"; -$string['users'] = "کاربران"; -$string['usingexistingcourse'] = "در حال Ø§Ø³ØªÙØ§Ø¯Ù‡ از دوره"; -$string['userzones'] = "ناحيه هاي کاربري"; -$string['view'] = "ديدن"; -$string['webpage'] = "ØµÙØ­Ù‡ خانگي شما"; -$string['week'] = "Ù‡ÙØªÙ‡"; -$string['weekhide'] = "اين Ù‡ÙØªÙ‡ را از \$a پنهان Ú©Ù†"; -$string['weeklyoutline'] = "طرح Ù‡ÙØªÚ¯ÙŠ"; -$string['weekshow'] = "اين Ù‡ÙØªÙ‡ را تا \$a نشان بده"; -$string['welcometocourse'] = "به \$a خوش آمديد"; -$string['welcometocoursetext'] = "به دوره \$a->coursename خوش آمديد براي آشنايي بيشتر با شما، ØµÙØ­Ù‡ مشخصات شخصي خود را ويرايش کنيد. اين ØµÙØ­Ù‡ در ØµÙØ­Ù‡ مشخصات شخصي دوره قابل دسترسي است. \$a->profileurl -"; -$string['whattocallzip'] = "نام اين ÙØ§ÙŠÙ„ ÙØ´Ø±Ø¯Ù‡ Ú†Ù‡ باشد؟"; -$string['withchosenfiles'] = "روي ÙØ§ÙŠÙ„هاي انتخاب شده Ú†Ù‡ عملي انجام شود"; -$string['withoutuserdata'] = "بدون اطلاعات کاربران"; -$string['withuserdata'] = "به همراه اطلاعات کاربران"; -$string['wordforteacher'] = "واژه انتخابي شما براي مربي"; -$string['wordforteachereg'] = "مثلا معلم،استاد Ùˆ غيره"; -$string['wordforteachers'] = "واژه انتخابي شما براي مربيها"; -$string['wordforteacherseg'] = "مثلا معلمها،استادها Ùˆ غيره"; -$string['wordforstudent'] = "واژه انتخابي شما براي دانشجو"; -$string['wordforstudenteg'] = "مثلا دانشجو،شرکت کننده Ùˆ غيره"; -$string['wordforstudents'] = "واژه انتخابي شما براي دانشجوها"; -$string['wordforstudentseg'] = "مثلا دانشجوها،شرکت کننده ها Ùˆ غيره"; -$string['writingcategoriesandquestions'] = "در حال نوشتن موضوعات Ùˆ سئوالات"; -$string['writingcoursedata'] = "در حال نوشتن اطلاعات دوره"; -$string['writinggeneralinfo'] = "در حال نوشتن اطلاعات عمومي"; -$string['writingheader'] = "در حال نوشتن سردرخت"; -$string['writingloginfo'] = "در حال نوشتن اطلاعات ÙØ¹Ø§Ù„يتهاي ثبت شده"; -$string['writingmoduleinfo'] = "در حال نوشتن اطلاعات ماژولها"; -$string['writingscalesinfo'] = "در حال نوشتن اطلاعات مقياسها"; -$string['writinguserinfo'] = "در حال نوشتن اطلاعات کاربران"; -$string['wrongpassword'] = "رمز ورود اشتباه است!"; -$string['yes'] = "بله"; -$string['youareabouttocreatezip'] = "در حال ايجاد ÙŠÚ© ÙØ§ÙŠÙ„ ÙØ´Ø±Ø¯Ù‡ هستيد Ú©Ù‡ شامل:"; -$string['youaregoingtorestorefrom'] = "در حال شروع روند بازيابي هستيد براي:"; -$string['yourlastlogin'] = "آخرين ورود شما به سايت"; -$string['yourself'] = "شما"; -$string['yourteacher'] = "\$a شما"; -$string['zippingbackup'] = "ÙØ´Ø±Ø¯Ù‡ کردن پشتيبان"; - -?> diff --git a/lang/fa_utf8/quiz.php b/lang/fa_utf8/quiz.php deleted file mode 100644 index 1356fc91506..00000000000 --- a/lang/fa_utf8/quiz.php +++ /dev/null @@ -1,158 +0,0 @@ -
            بعد از انتخاب يا ايجاد ÙŠÚ© موضوع براي سوالات مي توانيد سوالات مورد نظر خود را ايجاد Ùˆ يا ويرايش کنيد.در انتها مي توانيد هر کدام از اين سوالات را در طر٠ديگر ØµÙØ­Ù‡ به کوييز اضاÙÙ‡ کنيد"; -$string['addquestionstoquiz'] = "اضاÙÙ‡ کردن سوال به اين کوييز"; -$string['addselectedtoquiz'] = "اضاÙÙ‡ کردن سوال انتخاب شده به کوييز"; -$string['allowreview'] = "اجازه مرور Ø¯ÙØ¹Ø§Øª قبلي اين کوييز داده شود؟"; -$string['alwaysavailable'] = "هميشه در دسترس"; -$string['alreadysubmitted'] = "احتمالا قبلا جواب مشابه داده ايد"; -$string['answer'] = "پاسخ"; -$string['answerhowmany'] = "ÙŠÚ© يا چند جواب؟"; -$string['answersingleyes'] = "Ùقط ÙŠÚ© جواب"; -$string['answersingleno'] = "چند جواب مجاز است"; -$string['answerswithacceptederrormarginmustbenumeric'] = "جواب بايد عددي باشد (با ÙŠÚ© حداکثر خطا)"; -$string['attempt'] = "نوبت شرکت \$a"; -$string['attemptfirst'] = "اولين نوبت شرکت"; -$string['attemptlast'] = "آخرين نوبت شرکت"; -$string['attemptquiznow'] = "شرکت در کوييز"; -$string['attempts'] = "نوبت شرکت"; -$string['attemptsallowed'] = "تعداد Ø¯ÙØ¹Ø§Øª مجاز براي پاسخگويي"; -$string['attemptsunlimited'] = "نامحدود"; -$string['backtoquiz'] = "برگشت به ويرايش کوييز"; -$string['bestgrade'] = "بهترين نمره"; -$string['blackboard'] = "تخته سياه"; -$string['casesensitive'] = "حساسيت به حرو٠کوچک Ùˆ بزرگ"; -$string['caseyes'] = "بله ØŒ بزرگ Ùˆ Ú©ÙˆÚ†Ú© بودن حرو٠مهم است"; -$string['caseno'] = "نه، بزرگ Ùˆ Ú©ÙˆÚ†Ú© بودن حرو٠مهم نيست"; -$string['categories'] = "موضوعات"; -$string['category'] = "موضوع"; -$string['categoryinfo'] = "راجع به موضوع"; -$string['categorymove'] = "موضوع '\$a->name' داراي \$a->count سوال است. Ù„Ø·ÙØ§ ÙŠÚ© موضوع ديگر را انتخاب کنيد."; -$string['categorymoveto'] = "انتقال به اين موضوع"; -$string['choice'] = "گزينه"; -$string['choices'] = "انتخابهاي ممکن"; -$string['correctanswer'] = "جواب درست"; -$string['correctanswers'] = "جوابهاي درست"; -$string['countdown'] = "شمارش معکوس"; -$string['countdownfinished'] = "زمان کوييز رو به پايان است، بايد هم اکنون در کوييز شرکت کنيد."; -$string['countdowntenminutes'] = "کوييز 10 دقيقه ديگر بسته خواهد شد."; -$string['createmultiple'] = "ايجاد چند سوال"; -$string['createnewquestion'] = "ايجاد سوال جديد"; -$string['custom'] = "Ø´Ú©Ù„ دلخواه"; -$string['daysavailable'] = "تعداد روزي Ú©Ù‡ کوييز در دسترس است"; -$string['default'] = "پيش ÙØ±Ø¶"; -$string['defaultgrade'] = "نمره Ù¾ÙŠØ´ÙØ±Ø¶ براي سوال"; -$string['defaultinfo'] = "موضوع پيش ÙØ±Ø¶ براي سئوالات"; -$string['deletequestioncheck'] = "آيا مطمئÙ† هستيد Ú©Ù‡ مي خواهيد '\$a' را پاک کنيد؟"; -$string['description'] = "توصيÙ"; -$string['eachattemptbuildsonthelast'] = "هر بار شامل نتايج Ø¯ÙØ¹Ø§Øª قبل باشد؟"; -$string['editcategories'] = "ويرايش موضوعات"; -$string['editingdescription'] = "ويرايش سوال تعريÙÙŠ"; -$string['editingmultianswer'] = "ويرايش سئوالات جاسازي شده"; -$string['editingmatch'] = "ويرايش ÙŠÚ© سئوال تطبيقي"; -$string['editingmultichoice'] = "ويرايش ÙŠÚ© سئوال چند گرينه اي"; -$string['editingnumerical'] = "ويرايش ÙŠÚ© سئوال عددي"; -$string['editingquiz'] = "ويرايش کوييز"; -$string['editingquestion'] = "ويرايش سوال"; -$string['editingrandom'] = "ويرايش ÙŠÚ© سوال تصادÙÙŠ"; -$string['editingrandomsamatch'] = "ويرايش سوال تصادÙÙŠØŒ تطبيقي با جواب کوتاه"; -$string['editingshortanswer'] = "ويرايش ÙŠÚ© سوال جواب کوتاه"; -$string['editingtruefalse'] = "ويرايش سوال درست/غلط"; -$string['false'] = "غلط"; -$string['feedback'] = "پاسخ"; -$string['filloutoneanswer'] = "بايد حداقل ÙŠÚ© جواب را کامل کنيد. جوابهاي سÙيد تاثيري نخواهد داشت."; -$string['fillouttwochoices'] = "بايد حداقل دو مورد را پر کنيد"; -$string['filloutthreequestions'] = "بايد حداقل 3 سوال را جواب دهيد. سوالات بدون جواب تاثيري نخواهد داشت."; -$string['fileformat'] = "قالب ÙØ§ÙŠÙ„"; -$string['fractionsaddwrong'] = "نمراتي Ú©Ù‡ انتخاب کرده ايد به 100%% نمي رسند. -
            بلکه به \$a%% مي رسند -
            آيا مي خواهيد برگرديد و سوال را اصلاح کنيد؟"; -$string['fractionsnomax'] = "يکي از جوابها بايد 100%% باشد, تا -
            بتوان نمره کامل را براي اين سوال کسب کرد. -
            آيا مي خواهيد برگرديد Ùˆ سوال را اصلاح کنيد؟"; -$string['gradeaverage'] = "نمره متوسط"; -$string['gradehighest'] = "بالاترين نمره"; -$string['grademethod'] = "روش نمره دادن"; -$string['grades'] = "نمره ها"; -$string['guestsno'] = "ببخشيد،مهمانان نمي توانند در کوييز شرکت کنند"; -$string['imagedisplay'] = "عکسي Ú©Ù‡ نمايش داده شود"; -$string['importquestions'] = "وارد کردن سئوالات از ÙØ§ÙŠÙ„"; -$string['introduction'] = "مقدمه"; -$string['marks'] = "نمرات"; -$string['match'] = "تطبيقي"; -$string['matchanswer'] = "جوابهاي تطبيقي"; -$string['missingcorrectanswer'] = "جواب درست بايد انتخاب شود"; -$string['missingname'] = "نام سوال را مشخص کنيد"; -$string['missingquestiontext'] = "متن سوال را مشخص کنيد"; -$string['missingword'] = "قالب کلمه را مشخص کنيد"; -$string['multianswer'] = "جواب جاسازي شده"; -$string['multichoice'] = "چند گزينه اي"; -$string['noanswers'] = "هيچ جوابي انتخاب نشد"; -$string['noattempts'] = "هيچ کس در اين کوييز شرکت نکرده است"; -$string['nomoreattempts'] = "ديگر نمي توانيد شرکت کنيد"; -$string['noquestions'] = "هنوز سوالي اضاÙÙ‡ نشده است"; -$string['noreview'] = "نمي توانيد کوييز را بازبيني کنيد"; -$string['noreviewuntil'] = "نمي توانيد تا \$a کوييز را بازبيني کنيد"; -$string['notenoughsubquestions'] = "تعداد سوالات زير مجموعه به اندازه کاÙÙŠ نيست !
            -آيا مي خواهيد برگرديد Ùˆ سوال را اصلاح کنيد ØŸ"; -$string['numerical'] = "عددي"; -$string['publish'] = "انتشار"; -$string['qti'] = "ساختار IMS QTI"; -$string['question'] = "سوال"; -$string['questioninuse'] = "از سوال '\$a' Ø§Ø³ØªÙØ§Ø¯Ù‡ شده است :"; -$string['questions'] = "سوالها"; -$string['questionname'] = "نام سوال"; -$string['quizavailable'] = "کوييز تا: \$a در دسترس است"; -$string['quizclose'] = "تاريخ اتمام"; -$string['quizclosed'] = "اين کوييز در \$a بسته شد"; -$string['quizcloses'] = "کوييز بسته شد"; -$string['quizopen'] = "تاريخ شروع"; -$string['quiznotavailable'] = "کوييز تا \$a در دسترس نخواهد بود"; -$string['random'] = "سوال تصادÙÙŠ"; -$string['randomcreate'] = "ايجاد سوالات تصادÙÙŠ"; -$string['randomsamatch'] = "تصادÙي،تطبيقي با جواب کوتاه"; -$string['randomsamatchcreate'] = "ايجاد سوال تصادÙي،تطبيقي با جواب کوتاه"; -$string['randomsamatchintro'] = "براي هر کدام از سوالات، جواب مورد نظر خود را از منو انتخاب کنيد."; -$string['randomsamatchnumber'] = "تعداد سوالي Ú©Ù‡ مي توان انتخاب کرد"; -$string['readytosend'] = "آيا مطمنيد مي خواهيد کوييز را براي ارزيابي ارسال کنيد؟"; -$string['recentlyaddedquestion'] = "سوالاتي Ú©Ù‡ اخيرا اضاÙÙ‡ شده!"; -$string['regrade'] = "ارزيابي دوباره تمام امتحانها"; -$string['regradecomplete'] = "تمام امتحانها دوباره ارزيابي شده اند"; -$string['regradecount'] = "\$a->changed نمره از \$a->attempt تغيير کرد"; -$string['rename'] = "تغيير نام"; -$string['report'] = "گزارشات"; -$string['reportoverview'] = "وضعيت کلي"; -$string['reportregrade'] = "ارزيابي مجدد"; -$string['reportsimplestat'] = "آمار"; -$string['review'] = "مرور"; -$string['save'] = "ذخيره کردن"; -$string['savegrades'] = "ذخيره کردن نمره ها"; -$string['savemyanswers'] = "ذخيره کردن جوابهاي من"; -$string['savequiz'] = "ذخيره کردن Ú©Ù„ کوييز"; -$string['score'] = "نمره خام"; -$string['select'] = "انتخاب"; -$string['selectall'] = "انتخاب همه"; -$string['selectcategoryabove'] = "ÙŠÚ© موضوع از بالا انتخاب کنيد"; -$string['shortanswer'] = "جواب کوتاه"; -$string['show'] = "نمايش"; -$string['showfeedback'] = "بعد از جواب دادن درست يا غلط بودن آنها مشخص شود؟"; -$string['showcorrectanswer'] = "پاسخهاي درست نشان داده شود؟"; -$string['shuffleanswers'] = "بهم ريختن ترتيب جوابها"; -$string['shufflequestions'] = "بهم ريختن ترتيب سوالها"; -$string['time'] = "زمان"; -$string['timetaken'] = "زمان صر٠شده"; -$string['timecompleted'] = "زمان تکميل کوييز"; -$string['toomanyrandom'] = "تعداد سوالات تصادÙÙŠ مورد نياز بيش از تعداد سوالات اين موضوع است! (\$a)"; -$string['true'] = "درست"; -$string['truefalse'] = "درست/غلط"; -$string['type'] = "نوع"; -$string['viewallanswers'] = "مشاهده \$a کوييز کامل شده"; -$string['viewallreports'] = "مشاهده گزارش براي \$a امتحان"; -$string['webct'] = "ساختار WebCT"; -$string['yourfinalgradeis'] = "نمره نهايي شما \$a است"; -?> \ No newline at end of file diff --git a/lang/fa_utf8/readme b/lang/fa_utf8/readme deleted file mode 100644 index 2f031bb99f8..00000000000 --- a/lang/fa_utf8/readme +++ /dev/null @@ -1 +0,0 @@ -Farsi translation UTF-8 encoding by Adel Ghazikhani \ No newline at end of file diff --git a/lang/fi/activitynames.php b/lang/fi/activitynames.php index a2d2a11a8d5..e78bf95e8d1 100644 --- a/lang/fi/activitynames.php +++ b/lang/fi/activitynames.php @@ -1,10 +1,7 @@ diff --git a/lang/fi/admin.php b/lang/fi/admin.php index 3a72013f996..db1cb595ff6 100644 --- a/lang/fi/admin.php +++ b/lang/fi/admin.php @@ -1,28 +1,13 @@ -Lisätietoja'; -$string['upgradelogsinfo'] = 'Tapahtumalokien tallennuksessa on tapahtunut muutoksia. Jotta voisit tarkastella lokeja uudella tavalla, vanhat lokimerkinnät pitää päivittää uuteen muotoon. Tämä tapahtuu automaattisesti eikä häiritse sivustosi muuta käyttöä. Riippuen sivustosi koosta tähän saattaa kuitenkin mennä aikaa jopa useita tunteja. Kun aloitat päivityksen, pitää se antaan mennä loppuun asti keskeyttämättä. -

            -Haluatko päivittää lokit nyt?'; -$string['upgradesure'] = 'Moodlen asennustiedostot ovat muuttuneet, järjestelmä tullaan päivittämään uuteen versioon automaattisesti. Uusi version on: -

            $a

            -

            Kun aloitat päivittämisen et voi enää palata takaisin aiempaan versioon.

            -

            Oletko varma että haluat päivittää palvelimen?

            '; -$string['upgradinglogs'] = 'Päivitetään tapahtumalokeja'; - -?> +Lisätietoja'; +$string['upgradelogsinfo'] = 'Tapahtumalokien tallennuksessa on tapahtunut muutoksia. Jotta voisit tarkastella lokeja uudella tavalla, vanhat lokimerkinnät pitää päivittää uuteen muotoon. Tämä tapahtuu automaattisesti eikä häiritse sivustosi muuta käyttöä. Riippuen sivustosi koosta tähän saattaa kuitenkin mennä aikaa jopa useita tunteja. Kun aloitat päivityksen, pitää se antaan mennä loppuun asti keskeyttämättä. +

            +Haluatko päivittää lokit nyt?'; +$string['upgradinglogs'] = 'Päivitetään tapahtumalokeja'; + +?> diff --git a/lang/fi/algebra.php b/lang/fi/algebra.php index 561810a8bd1..e22dda45477 100644 --- a/lang/fi/algebra.php +++ b/lang/fi/algebra.php @@ -1,10 +1,7 @@ - + diff --git a/lang/fi/appointment.php b/lang/fi/appointment.php index 2ca93f735ce..1e1bf475019 100644 --- a/lang/fi/appointment.php +++ b/lang/fi/appointment.php @@ -1,5 +1,5 @@ diff --git a/lang/fi/assignment.php b/lang/fi/assignment.php index 106b6e2857c..d9fe793bae5 100644 --- a/lang/fi/assignment.php +++ b/lang/fi/assignment.php @@ -1,56 +1,57 @@ -teacher on antanut sinulle palautetta tehtävästä \'$a->assignment\' - -Voit nähdä sen osoitteessa: - -$a->url'; -$string['assignmentmailhtml'] = '$a->teacher on antanut sinulle palautetta tehtävästä \'$a->assignment\'

            - -Voit nähdä sen osoitteessa: - -url\">Tehtävän palautus.'; -$string['assignmentname'] = 'Tehtävän nimi'; -$string['assignmenttype'] = 'Tehtävän tyyppi'; -$string['configmaxbytes'] = 'Oletusasetus sivuston tehtävien maksimikoolle.'; -$string['description'] = 'Kuvaus'; -$string['duedate'] = 'Palautettava viimeistään'; -$string['duedateno'] = 'Ei palautuspäivämäärää'; -$string['early'] = '$a ajoissa'; -$string['existingfiledeleted'] = 'Tiedosto on poistettu: $a'; -$string['failedupdatefeedback'] = 'Palautteen tallentaminen käyttäjälle $a epäonnistui'; -$string['feedback'] = 'Palaute'; -$string['feedbackupdated'] = 'Vastausten palautteet päivitetty $a oppilaalle'; -$string['late'] = '$a myöhässä'; -$string['maximumgrade'] = 'Arvosanan yläraja'; -$string['maximumsize'] = 'Maksimikoko'; -$string['modulename'] = 'Tehtävä'; -$string['modulenameplural'] = 'Tehtävät'; -$string['newsubmissions'] = 'Palautetut tehtävät'; -$string['notgradedyet'] = 'Ei vielä arvioitu'; -$string['notsubmittedyet'] = 'Ei vielä palautettu'; -$string['overwritewarning'] = 'Varoitus: uudelleen lähettäminen KORVAA aiemman vastauksesi.'; -$string['saveallfeedback'] = 'Tallenna palaute'; -$string['submissionfeedback'] = 'Palaute tehtävästä'; -$string['submissions'] = 'Palautukset'; -$string['submitassignment'] = 'Palauta tehtäväsi käyttäen tätä lomaketta'; -$string['submitted'] = 'Palautettu'; -$string['typeoffline'] = 'Offline-tehtävä'; -$string['typeuploadsingle'] = 'Lähetä yksi tiedosto'; -$string['uploadbadname'] = 'Tiedostonimessä on tuntemattomia merkkejä. Tiedostoa ei voida lähettää.'; -$string['uploadedfiles'] = 'lähetetyt tiedostot'; -$string['uploaderror'] = 'Tiedoston tallentamisessa palvelimelle tapahtui virhe.'; -$string['uploadfailnoupdate'] = 'Tiedosto saapui palvelimelle, mutta vastauksesi tallentamisessa tapahtui virhe.'; -$string['uploadfiletoobig'] = 'Valitettavasti tiedosto, jota yritit lähettää, on liian suuri (kokorajoitus on $a tavua).'; -$string['uploadnofilefound'] = 'Tiedostoa ei löydy - oletko varma, että valitsit tiedoston lähetettäväksi?'; -$string['uploadnotregistered'] = '\'$a\' vastaanotettiin, mutta lähetystäsi ei rekisteröity. '; -$string['uploadsuccess'] = '\'$a\' on vastaanotettu palvelimelle.'; -$string['viewfeedback'] = 'Katso tehtävien arviointeja ja palautteita.'; -$string['viewsubmissions'] = 'Katso palautettuja tehtäviä, joiden lukumäärä on $a'; -$string['yoursubmission'] = 'Vastauksesi'; - -?> +teacher on lähettänyt sinulle palautetta tehtävästä \'$a->assignment\' + +Voit nähdä sen osoitteessa: + +$a->url +'; +$string['assignmentmailhtml'] = '$a->teacher on lähettänyt sinulle palautetta tehtävästä \'$a->assignment\'

            + +Voit nähdä sen osoitteessa: + +url\">Tehtävän palautus.'; +$string['assignmentname'] = 'Tehtävän nimi'; +$string['assignmenttype'] = 'Tehtävän tyyppi'; +$string['configmaxbytes'] = 'Oletusasetus tehtävän maksimikoolle kaikille tehtäville sivustolla'; +$string['description'] = 'Kuvaus'; +$string['duedate'] = 'Palautuspäivämäärä'; +$string['duedateno'] = 'Ei palautuspäivämäärää'; +$string['early'] = '$a ajoissa'; +$string['existingfiledeleted'] = 'Tiedosto on poistettu: $a'; +$string['failedupdatefeedback'] = 'Palautteen tallentaminen epäonnistui käyttäjälle $a'; +$string['feedback'] = 'Palaute'; +$string['feedbackupdated'] = 'Vastausten palautteet päivitetty $a oppilaalle'; +$string['late'] = '$a myöhässä'; +$string['maximumgrade'] = 'Arvosanan yläraja'; +$string['maximumsize'] = 'Maksimikoko'; +$string['modulename'] = 'Tehtävä'; +$string['modulenameplural'] = 'Tehtävät'; +$string['newsubmissions'] = 'Palautetut tehtävät'; +$string['notgradedyet'] = 'Ei vielä arvioitu'; +$string['notsubmittedyet'] = 'Ei vielä palautettu'; +$string['overwritewarning'] = 'Varoitus: uudelleen lähettäminen KORVAA aiemman vastauksesi'; +$string['saveallfeedback'] = 'Tallenna palaute'; +$string['submissionfeedback'] = 'Palaute tehtävästä'; +$string['submissions'] = 'Palautukset'; +$string['submitassignment'] = 'Palauta tehtäväsi käyttäen tätä lomaketta'; +$string['submitted'] = 'Palautettu'; +$string['typeoffline'] = 'Offline-tehtävä'; +$string['typeuploadsingle'] = 'Lähetä yksi tiedosto'; +$string['uploadbadname'] = 'Tiedostonimessä on tuntemattomia merkkejä. Tiedostoa ei voida lähettää.'; +$string['uploadedfiles'] = 'lähetetyt tiedostot'; +$string['uploaderror'] = 'Tiedoston tallentamisessa palvelimelle tapahtui virhe.'; +$string['uploadfailnoupdate'] = 'Tiedosto saapui palvelimelle, mutta vastauksesi tallentamisessa tapahtui virhe.'; +$string['uploadfiletoobig'] = 'Valitettavasti tiedosto, jota yritit lähettää, on liian suuri (kokorajoitus on $a tavua).'; +$string['uploadnofilefound'] = 'Tiedostoa ei löydy - oletko varma, että valitsit tiedoston lähetettäväksi?'; +$string['uploadnotregistered'] = '\'$a\' vastaanotettiin, mutta lähetystäsi ei rekisteröity. '; +$string['uploadsuccess'] = '\'$a\' on vastaanotettu palvelimelle.'; +$string['viewfeedback'] = 'Katso tehtävien arviointeja ja palautteita.'; +$string['viewsubmissions'] = 'Katso palautettuja tehtäviä, joiden lukumäärä on $a'; +$string['yoursubmission'] = 'Vastauksesi'; + +?> diff --git a/lang/fi/attendance.php b/lang/fi/attendance.php index 64ab9f94aff..82d678f4d38 100644 --- a/lang/fi/attendance.php +++ b/lang/fi/attendance.php @@ -1,5 +1,5 @@ ulkoisesta tietokannasta.

            Jos jätät nämä kentät tyhjiksi, käytetään oletusasetusarvoja.

            Käyttäjä voi joka tapauksessa muuttaa omia henkilötietojaan myöhemmin.

            '; -$string['auth_dbfieldpass'] = 'Salasanakentän nimi'; +$string['auth_dbextrafields'] = 'Nämä kentät ovat valinnaisia. Voit asettaa Moodlen hakemaan valmiiksi joitakin käyttäjätietoja ulkoisesta tietokannasta.

            Jos jätät nämä kentät tyhjiksi, käytetään oletusasetusarvoja.

            Käyttäjä voi joka tapauksessa muuttaa omia henkilötietojaan myöhemmin.'; +$string['auth_dbfieldpass'] = 'Salasanakentännimi'; $string['auth_dbfielduser'] = 'Käyttäjätunnuskentän nimi'; $string['auth_dbhost'] = 'Tietokantapalvelin'; $string['auth_dbname'] = 'Tietokannan nimi'; @@ -14,21 +12,12 @@ $string['auth_dbpass'] = 'Salasana k $string['auth_dbpasstype'] = 'Määritä salasanakentän käyttämä muoto. MD5-salaus on hyödyllinen, jos haluat käyttää muita web-sovelluksia kuten PostNukea.'; $string['auth_dbtable'] = 'Tietokannan taulun nimi'; $string['auth_dbtitle'] = 'Käytä ulkoista tietokantaa'; -$string['auth_dbtype'] = 'Tietokannan tyyppi (Katso ADOdb dokumentoinnista yksityiskohdat)'; +$string['auth_dbtype'] = 'Tietokannan tyyppi (Katso ADOdb dokumentoinnista yksityiskohdat)'; $string['auth_dbuser'] = 'Käyttäjätunnus tietokantaan lukuoikeuksin'; -$string['auth_editlock'] = 'Lukitse arvo'; -$string['auth_editlock_expl'] = '

            Lukitse arvo: Estää tiedon muokaamisen Moodlen sisältä.

            '; $string['auth_emaildescription'] = 'Sähköpostivarmistus on oletusarvoinen tunnistusmetodi käyttäjälle. Kun käyttäjä luo itselleen tunnuksen, lähetetään varmistusviesti käyttäjälle. Viesti sisältää linkin, minkä avulla käyttäjä voi aktivoida tunnuksensa.'; $string['auth_emailtitle'] = 'Käytä sähköpostivarmistusta'; -$string['auth_fccreators'] = 'Tämän ryhmän(ryhmien) jäsenet saavat luoda uusia kursseja. Erottele useat ryhmänimet \';\'-merkillä. Nimet on oltava täysin samoin kuin FirstClass palvelimella.'; -$string['auth_fcdescription'] = 'Tämä menetelmä käyttää FirstClass palvelinta tarkistaakseen ovatko annetttu käyttäjänimi ja salasana voimassa olevia.'; -$string['auth_fcfppport'] = 'Palvelin portti (3333 on yleisin)'; -$string['auth_fchost'] = 'FisrtClass palvelimen osoite. Käytä IP numeroa tai DNS nimeä.'; -$string['auth_fcpasswd'] = 'Salasana yllä olevalle tilille'; -$string['auth_fctitle'] = 'Käytä FirstClass palvelinta'; -$string['auth_fcuserid'] = 'Käyttäjätunnus FirstClass tilille etuoikeutetulla \"alaylläpitäjä\" asetuksella.'; $string['auth_imapdescription'] = 'Tämä tapa käyttää IMAP-palvelinta käyttäjätunnuksen ja salasanan tarkistamiseen.'; $string['auth_imaphost'] = 'IMAP-palvelimen osoite. Käytä IP-numeroa, älä domainnimeä.'; $string['auth_imapport'] = 'IMAP-palvelimen portti, yleensä 143 tai 993.'; @@ -36,29 +25,16 @@ $string['auth_imaptitle'] = 'K $string['auth_imaptype'] = 'IMAP-palvelimen tyyppi. Katso ohjeesta (yllä) lisätietoja.'; $string['auth_ldap_bind_dn'] = 'Jos haluat käyttää välityskäyttäjää yhteyden muodostamiseen, määritä se tähän. Esim. \'cn=ldapuser,ou=public,o=org\''; $string['auth_ldap_bind_pw'] = 'Salasana välityskäyttäjälle.'; -$string['auth_ldap_bind_settings'] = 'Sidosasetukset'; $string['auth_ldap_contexts'] = 'Lista konteksteista, missä käyttäjät sijaitsevat. Erota kontekstit toisistaan \';\'-merkillä. Esim: \'ou=users,o=org; ou=others,o=org\''; -$string['auth_ldap_create_context'] = 'Jos sähköpostiviestillä tunnuksensa varmentaneet käyttäjät luodaan automaattisesti ldap-hakemistoon, määritä tässä konteksti, minne käyttäjät luodaan. On hyvä käyttää jotain eritystä kontekstia, jotta vältyt tietoturvariskeiltä. Tätä kontekstia ei tarvitse erikseen lisätä yllä olevaan muuttujaan.'; +$string['auth_ldap_create_context'] = 'Jos luodaan sähköpostiviestillä tunnuksensa varmentaneet käyttäjät automaattisesti ldap-hakemistoon, määritä tässä konteksti, minne käyttäjät luodaan. On hyvä käyttää jotain eritystä kontekstia, jotta vältyt tietoturvariskeiltä. Tätä kontekstia ei tarvitse erikseen lisätä yllä olevaan muuttujaan.'; $string['auth_ldap_creators'] = 'Lista ryhmistä, minkä jäsenet voivat luoda uusia kursseja Moodleen. Erota useat ryhmät toisistaan \';\'-merkillä. Esimerkiksi \'cn=teachers,ou=staff,o=myorg;\''; -$string['auth_ldap_expiration_desc'] = 'Valitse \"Ei\" poistaaksesi vanhentuneiden salasanojen seurannan. Tai \"LDAP\" jos haluat näyttää käyttäjille viestin kun heidän salasanansa on vanhenemassa.'; -$string['auth_ldap_expiration_warning_desc'] = 'päivien määrä ennen salasanan voimassaolon loppumista on asetettu.'; -$string['auth_ldap_expireattr_desc'] = 'Valinnainen: ylimääritä haluamasi '; -$string['auth_ldap_graceattr_desc'] = 'Valinnainen: ohita graceLogin atribuutti'; -$string['auth_ldap_gracelogins_desc'] = 'Käytä LDAP graceLogin ominaisuutta. Esim. Edirectory voidaan konfiguroida kirjaamaan käyttäjä sisään vielä muutaman kerran salasanan vanhenemisen jälkeen, jotta salana voidaan vaihtaa. Jos haluat antaa ilmoituksen kun käyttäjä käyttää grace-logineja valise \"Kyllä\".'; $string['auth_ldap_host_url'] = 'Määritä LDAP-palvelin URL-muodossa. Esim. \'ldap://ldap.myorg.com/\' tai \'ldaps://ldap.myorg.com/\' '; -$string['auth_ldap_login_settings'] = 'Kirjaantumisasetukset'; -$string['auth_ldap_memberattribute'] = 'Valinnainen: ylimääritä käyttäjän ryhmäjäsenyysattribuutti. Yleensä \'member\' tai \'groupMembership\' '; -$string['auth_ldap_objectclass'] = 'Valinnainen: ylimääritä objectClass jota käytetää käyttäjien hakuun.'; -$string['auth_ldap_opt_deref'] = 'määrittä kuinka aliakset käsitellään haun aikana. Valitse yksi seuraavista vaihtoehdoista: \"Ei\" (LDAP_DEREF_NEVER) tai \"Kyllä\" (LDAP_DEREF_ALWAYS)'; -$string['auth_ldap_passwdexpire_settings'] = 'LDAP salasanojen vanheneminen'; -$string['auth_ldap_search_sub'] = 'Aseta arvo <> 0, jos haluat hakea käyttäjiä myös alikonteksteista.'; -$string['auth_ldap_server_settings'] = 'LDAP palvelimen asetukset'; +$string['auth_ldap_memberattribute'] = 'Määritä käyttäjän ryhmäjäsenyysattribuutti. Yleensä \'member\' tai \'groupMembership\' '; +$string['auth_ldap_search_sub'] = 'Aseta arvo <> 0, jos haluat hakea käyttäjiä myös alikonteksteista.'; $string['auth_ldap_update_userinfo'] = 'Päivitä käyttäjätiedot LDAP:ista Moodleen (etunimi, sukunimi, osoite..). Katso /auth/ldap/attr_mappings.php tarkempia määrittelytietoja.'; -$string['auth_ldap_user_attribute'] = 'Valinnainen: ylimääritä attribuutti käyttäjänimille. Yleensä \'cn\'.'; -$string['auth_ldap_user_settings'] = 'Käyttäjien etsintä'; -$string['auth_ldap_user_type'] = 'Valitse kuinka käyttäjät tallennetaan LDAP:iin. Tämä asetus myös määrittää kuinka sisäänkirjautumisen voimassaolo, vapaat sisäänkirjautumiset ja käyttäjien luominen toimii'; +$string['auth_ldap_user_attribute'] = 'Attribuutti käyttäjänimille. Yleensä \'cn\'.'; $string['auth_ldap_version'] = 'Palvelimella käytettävä LDAP protokolla versio'; -$string['auth_ldapdescription'] = 'Tämä tapa tarjoaa käyttäjätunnistuksen LDAP-palvelimelta. Jos salasana ja tunnus täsmäävät, Moodle luo uuden käyttäjän tietokantaansa. +$string['auth_ldapdescription'] = 'Tämä tapa tarjoaa käyttäjätunnistuksen LDAP-palvelimelta. Jos salasana ja tunnus täsmäävät, Moodle luo uuden käyttäjän tietokantaansa. Jos olet valinnut \'auth_ldap_update_userinfo\'-option, myös käyttäjätiedot kopioidaan LDAP:sta Moodleen. Seuraavilla kerroilla ainostaan tunnus ja salasana tarkistetaan.'; $string['auth_ldapextrafields'] = 'Nämä kentät ovat valinnaisia. Voit asettaa Moodlen hakemaan käyttäjätietoja tässä määritellyistä LDAP-kentistä. Mikäli jätät nämä tyhjiksi, mitään tietoja ei haeta LDAP-palvelimelta ja käytetään Moodlen oletusarvoja. @@ -74,22 +50,11 @@ $string['auth_nntptitle'] = 'K $string['auth_nonedescription'] = 'Käyttäjät voivat luoda vapaasti uuden tunnuksen ilman sähköpostivarmistusta. Jos käytät tätä tapaa, mieti, mitä tietoturva- tai ylläpito-ongelmia tämä voi aiheuttaa.'; $string['auth_nonetitle'] = 'Ei tunnistusta'; -$string['auth_pamdescription'] = 'Tämä menetelmä käyttää PAM:ia päästäkseen käsiksi tämän palvelimen alkuperäisiin käyttäjänimiin. Sinun täytyy asentaa PHP4 PAM Authentication päästäksesi käyttämään tätä moduulia.'; -$string['auth_pamtitle'] = 'PAM ( kytkettävät oikeuksien tarkistamis moduulit)'; -$string['auth_passwordisexpired'] = 'Salasanasi on vanhentunut. Haluatko vaihtaa salasanasi nyt?'; -$string['auth_passwordwillexpire'] = 'Salasanasi vanhentuu $a päivässä. Haluatko vaihtaa salasanasi nyt?'; $string['auth_pop3description'] = 'Tämä tapa käyttää POP3-palvelinta käyttäjän tunnistukseen.'; $string['auth_pop3host'] = 'POP3-palvelimen osoite. Käytä IP-numeroa, älä domainnimeä.'; -$string['auth_pop3mailbox'] = 'Postilaatikon nimi jonka kanssa yritetään yhteyttä. (yleensä INBOX)'; $string['auth_pop3port'] = 'POP3-palvelimen portti (yleensä 110 )'; $string['auth_pop3title'] = 'Käytä POP3-palvelinta'; $string['auth_pop3type'] = 'Palvelimen tyyppi. Jos käytätte salattua yhteyttä, valitse pop3cert.'; -$string['auth_updatelocal'] = 'Päivitä sisäinen arvo'; -$string['auth_updatelocal_expl'] = '

            Päivitä sisäinen arvo: Jos ei onnistu, kenttä päivittyy joka kerta käyttäjän kirjautuessa tai käyttäjäsynkronoinnin yhteydessä. Kentät jotka on asetettu päivittymään paikallisesti tulisi lukita.

            '; -$string['auth_updateremote'] = 'Päivitä ulkoinen arvo'; -$string['auth_updateremote_expl'] = '

            Päivitä ulkoinen tieto: Jos tämä ei onnistu, ulkoinen tieto päivitetään samalla kun käyttäjä rekisteri päivitetään. Kenttien pitäisi olla lukitsemattomia, jotta editointi sallitaan.

            '; -$string['auth_updateremote_ldap'] = '

            Huomautus: Ulkoisen LDAP tiedon päivitys vaatii, että asetetaan binddn ja bindpw -kaikilla sidoskäyttäjille muotoiluoikeus kaikkiin käyttäjärekistereihin. Se ei tällä hetkellä säilytä moniarvoisia määreitä, eikä poista ylimääräisiä arvoja päivityksessä.

            '; $string['auth_user_create'] = 'Käyttäjän luonti'; $string['auth_user_creation'] = 'Käyttäjät voivat itse luoda tunnuksensa. Käyttäjätiedot tarkistetaan sähköpostin avulla. Jos aktivoit tämän vaihtoehdon, muista myös määritellä autentikointi-modulin muut tähän liittyvät asetukset.'; $string['auth_usernameexists'] = 'Käyttäjätunnus on jo käytössä. Valitse joku toinen.'; @@ -98,16 +63,10 @@ $string['authinstructions'] = 'T $string['changepassword'] = 'Salasananvaihto-URL'; $string['changepasswordhelp'] = 'Tässä osoitteessa käyttäjät voivat vaihtaa unohtamansa salasanan. Käyttäjille tämä näkyy painikkeena kirjautumissivulla ja heidän käyttäjätietosivullaan.'; $string['chooseauthmethod'] = 'Valitse käyttäjäntunnistusmetodi: '; -$string['forcechangepassword'] = 'Pakoita salasanan vaihto'; -$string['forcechangepassword_help'] = 'Pakota käyttäjät vaihtamaan salasanaa heidän seuraavalla Moodleen kirjautumiskerrallaan.'; -$string['forcechangepasswordfirst_help'] = 'Pakota käyttäjät vaihtamaan salasanaa heidän ensimmäisellä Moodleen kirjautumiskerrallaan.'; $string['guestloginbutton'] = 'Kirjaudu vieraana-painike'; $string['instructions'] = 'Ohjeet'; $string['md5'] = 'MD5-salaus'; $string['plaintext'] = 'Selväkielinen teksti'; $string['showguestlogin'] = 'Voit näyttää tai piilottaa Kirjaudu vieraana-painikkeen kirjautumissivulla.'; -$string['stdchangepassword'] = 'Käytä norminmukaista Vaihda salasana Sivua'; -$string['stdchangepassword_expl'] = 'Jos ulkoinen oikeuksien tarkistaminen sallii salasanojen vaihdot Moodlen kautta, vaihda tämä muotoon kyllä. Tämä asetus syrjäyttää \"Vaihda salasana URL\".'; -$string['stdchangepassword_explldap'] = 'HUOMAUTUS: On suositeltavaa, että käytetään ennemmin LDAP kuin SSL salakirjoitettua tunnelia (ldaps://)jos LDAP palvelin on etäkäytössä.'; ?> diff --git a/lang/fi/block_course_list.php b/lang/fi/block_course_list.php index e2fc30aaa2d..01197f4fc28 100644 --- a/lang/fi/block_course_list.php +++ b/lang/fi/block_course_list.php @@ -1,13 +1,9 @@ diff --git a/lang/fi/block_course_summary.php b/lang/fi/block_course_summary.php index 6771c008fad..7e4339b9768 100644 --- a/lang/fi/block_course_summary.php +++ b/lang/fi/block_course_summary.php @@ -1,8 +1,8 @@ diff --git a/lang/fi/block_online_users.php b/lang/fi/block_online_users.php index 3d097a36669..4e1c998f4a7 100644 --- a/lang/fi/block_online_users.php +++ b/lang/fi/block_online_users.php @@ -1,12 +1,9 @@ diff --git a/lang/fi/block_quiz_results.php b/lang/fi/block_quiz_results.php deleted file mode 100755 index e69de29bb2d..00000000000 diff --git a/lang/fi/block_rss_client.php b/lang/fi/block_rss_client.php deleted file mode 100755 index e69de29bb2d..00000000000 diff --git a/lang/fi/block_section_links.php b/lang/fi/block_section_links.php index a552978bee9..6f4da36d8b0 100644 --- a/lang/fi/block_section_links.php +++ b/lang/fi/block_section_links.php @@ -1,13 +1,10 @@ diff --git a/lang/fi/calendar.php b/lang/fi/calendar.php index 1d9a1f3f335..88b86e557f3 100644 --- a/lang/fi/calendar.php +++ b/lang/fi/calendar.php @@ -1,30 +1,18 @@ activate_index $a->activate_weekday aina {$a->activate_month}ssa, siirrä kelloa $a->offset minuuttia $a->direction. Tämä kellonajan muutos on voimassa aina {$a->deactivate_month}n $a->deactivate_index {$a->deactivate_weekday}hin.'; -$string['dstof'] = 'tässä kuussa:'; -$string['dstonthe'] = 'Kuukauden'; -$string['dstpresetactivated'] = 'Kesäaika alkaa'; -$string['dstpresetadjusttime'] = 'Kellon siirto'; -$string['dstpresetdeactivated'] = 'Kesäaika loppuu'; -$string['dstpresetname'] = 'Asetuksen nimi'; $string['durationminutes'] = 'Kesto minuutteina'; $string['durationnone'] = 'Ilman kestoa'; $string['durationuntil'] = 'Päättymisaika'; @@ -39,84 +27,73 @@ $string['eventdate'] = 'P $string['eventdescription'] = 'Tapahtuman kuvaus'; $string['eventduration'] = 'Kesto'; $string['eventendtime'] = 'Tapahtuman päättymisaika'; -$string['eventinstanttime'] = 'kello'; +$string['eventinstanttime'] = 'Aika'; $string['eventkind'] = 'Tapahtuman tyyppi'; $string['eventname'] = 'Nimi'; $string['eventrepeat'] = 'Toistot'; -$string['eventsfor'] = '$a tapahtumat'; +$string['eventsfor'] = '$a tapahtumaa'; $string['eventstarttime'] = 'Tapahtuman alkamisaika'; -$string['eventtime'] = 'kello'; +$string['eventtime'] = 'Aika'; $string['eventview'] = 'Tapahtumanäkymä'; $string['expired'] = 'Tapahtuma on jo mennyt'; -$string['explain_dstpreset'] = 'Alasvetovalikosta voit halutessasi valita alueen, jolla kesäajan asetukset ovat käytössä.'; -$string['explain_dstpresetforced'] = 'Tämän asetuksen muuttaminen ei ole sallittua.'; $string['explain_lookahead'] = 'Tämä oletusasetus määrittää, kuinka monen päivän päässä tulevaisuudessa tapahtuman pitää olla, jotta se näytettäisiin \"tulevana tapahtumana\". Tapahtumia, jotka alkavat myöhemmin, ei näytetä koskaan tulevien tapahtumien listassa. Huomaa, että ei ole mitään takeita siitä, että kaikki tämän ajan sisällä olevat tapahtumat näytettäisiin tulevien listassa; mikäli niitä on paljon (enemmän kuin asetus \"Tulevien tapahtumien listan maksimikoko\", kaukaisimmat tulevista tapahtumista eivät näy listassa.'; $string['explain_maxevents'] = 'Tämä asetus määrittää tulevien tapahtumien listan maksimikoon. Mikäli valitset tähän suuren luvun, saattaa tulevien tapahtumien lista viedä huomattavan paljon tilaa ruudultasi.'; -$string['explain_persistflt'] = 'Jos tämä asetus on päällä, Moodle muistaa kalenterista valitsemiesi tapahtumien piilotuksen ja näyttämisen asetukset myös kirjautumiskertojen välillä.'; $string['explain_startwday'] = 'Tämä asetus määrittää tavan, jolla kuukausittainen kalenteri näytetään. Käytä tätä asettaaksesi näkymälle tavan, johon olet tottunut.'; $string['explain_timeformat'] = 'Voit näyttää ajat joko 12 tai 24 tunnin muodossa. Jos valitset \"oletus\", valinta suoritetaan sivuston asetusten mukaisesti.'; -$string['first'] = 'ensimmäinen'; -$string['fri'] = 'pe'; -$string['friday'] = 'perjantai'; +$string['fri'] = 'Pe'; +$string['friday'] = 'Perjantai'; $string['globalevents'] = 'Yhteiset tapahtumat'; $string['gotocalendar'] = 'Siirry kalenteriin'; $string['groupevents'] = 'Ryhmän tapahtumat'; $string['hidden'] = 'Piilotettu'; -$string['last'] = 'viimeinen'; $string['manyevents'] = '$a tapahtumaa'; -$string['mon'] = 'ma'; -$string['monday'] = 'maanantai'; +$string['mon'] = 'Ma'; +$string['monday'] = 'Maanantai'; $string['monthlyview'] = 'Kuukausinäkymä'; $string['newevent'] = 'Uusi tapahtuma'; -$string['notusingdst'] = 'Kesäaika ei ole käytössä'; $string['noupcomingevents'] = 'Ei tulevia tapahtumia'; -$string['nth'] = '{$a}.'; $string['oneevent'] = '1 tapahtuma'; -$string['pref_dstpreset'] = 'Kesäaika'; $string['pref_lookahead'] = 'Tulevien tapahtumien tarkastelu'; $string['pref_maxevents'] = 'Tulevien tapahtumien listan maksimikoko'; -$string['pref_persistflt'] = 'Tallenna tapahtumien piilotusvalinnat'; $string['pref_startwday'] = 'Viikon ensimmäinen päivä'; -$string['pref_timeformat'] = 'Kellonajan muoto'; +$string['pref_timeformat'] = 'Aikojen muoto'; $string['preferences'] = 'Asetukset'; $string['preferences_available'] = 'Henkilökohtaiset asetuksesi'; $string['repeatnone'] = 'Ei toistoja'; $string['repeatweeksl'] = 'Toista viikoittain'; -$string['repeatweeksr'] = 'tapahtumaa'; -$string['sat'] = 'la'; -$string['saturday'] = 'lauantai'; +$string['repeatweeksr'] = 'tapahtumat'; +$string['sat'] = 'La'; +$string['saturday'] = 'Lauantai'; $string['shown'] = 'näkyvissä'; $string['spanningevents'] = 'Tapahtumia käynnissä parhaillaan'; -$string['sun'] = 'su'; -$string['sunday'] = 'sunnuntai'; -$string['thu'] = 'to'; -$string['thursday'] = 'torstai'; +$string['sun'] = 'Su'; +$string['sunday'] = 'Sunnuntai'; +$string['thu'] = 'To'; +$string['thursday'] = 'Torstai'; $string['timeformat_12'] = '12-tuntinen (AP/IP)'; $string['timeformat_24'] = '24-tuntinen'; -$string['timeforward'] = 'eteenpäin'; -$string['timerewind'] = 'taaksepäin'; -$string['today'] = 'tänään'; -$string['tomorrow'] = 'huomenna'; +$string['today'] = 'Tänään'; +$string['tomorrow'] = 'Huomenna'; $string['tt_deleteevent'] = 'Poista tapahtuma'; $string['tt_editevent'] = 'Muokkaa tapahtumaa'; -$string['tt_hidecourse'] = 'Kurssin tapahtumat näytetään (piilota)'; -$string['tt_hideglobal'] = 'Yleiset tapahtumat näytetään (piilota)'; -$string['tt_hidegroups'] = 'Ryhmän tapahtumat näytetään (piilota)'; -$string['tt_hideuser'] = 'Käyttäjän tapahtumat näytetään (piilota)'; +$string['tt_hidecourse'] = 'Kurssin tapahtumat näytetään (piiloita)'; +$string['tt_hideglobal'] = 'Yleiset tapahtumat näytetään (piiloita)'; +$string['tt_hidegroups'] = 'Ryhmän tapahtumat näytetään (piiloita)'; +$string['tt_hideuser'] = 'Käyttäjän tapahtumat näytetään (piiloita)'; $string['tt_showcourse'] = 'Kurssin tapahtumat piilotettuna (näytä)'; $string['tt_showglobal'] = 'Yleiset tapahtumat piilotettuna (näytä)'; $string['tt_showgroups'] = 'Ryhmän tapahtumat piilotettuna (näytä)'; $string['tt_showuser'] = 'Käyttäjän tapahtumat piilotettuna (näytä)'; -$string['tue'] = 'ti'; -$string['tuesday'] = 'tiistai'; -$string['typecourse'] = 'koko kurssille'; -$string['typegroup'] = 'ryhmälle'; -$string['typesite'] = 'koko sivustolle'; -$string['typeuser'] = 'oma tapahtuma'; +$string['tue'] = 'Ti'; +$string['tuesday'] = 'Tiistai'; +$string['typecourse'] = 'Koko kurssille'; +$string['typegroup'] = 'Ryhmälle'; +$string['typesite'] = 'Koko sivustolle'; +$string['typeuser'] = 'Oma tapahtuma'; $string['upcomingevents'] = 'Tulevat tapahtumat'; $string['userevents'] = 'Omat tapahtumat'; -$string['wed'] = 'ke'; -$string['wednesday'] = 'keskiviikko'; -$string['yesterday'] = 'eilen'; +$string['wed'] = 'Ke'; +$string['wednesday'] = 'Keskiviikko'; +$string['yesterday'] = 'Eilen'; ?> diff --git a/lang/fi/censor.php b/lang/fi/censor.php index 25f35f197f3..ce4e654b354 100644 --- a/lang/fi/censor.php +++ b/lang/fi/censor.php @@ -1,10 +1,7 @@ diff --git a/lang/fi/chat.php b/lang/fi/chat.php index c5af693caa5..18283cc05fe 100755 --- a/lang/fi/chat.php +++ b/lang/fi/chat.php @@ -1,5 +1,5 @@ ainavoimassa'; -$string['explainmethoddaemon'] = 'Näillä asetuksilla on vaikutusta vain jos käytät \"Chat-palvelu\"-asetusta.'; -$string['explainmethodnormal'] = 'Näillä asetuksilla on vaikutusta vain jos käytät \"Normaali toiminta\"-asetusta.'; -$string['generalconfig'] = 'Yleiset asetukset'; $string['helpchatting'] = 'Apua chat-toiminnon käyttöön'; $string['idle'] = 'Tyhjä'; $string['messagebeepseveryone'] = '$a kutsuu kaikkia!'; @@ -39,10 +35,9 @@ $string['modulename'] = 'Chat'; $string['modulenameplural'] = 'Chatit'; $string['neverdeletemessages'] = 'Älä koskaan poista viestejä'; $string['nextsession'] = 'Seuraava istunto'; -$string['noguests'] = 'Tämä chat ei ole avoinna vieraille'; $string['nomessages'] = 'Ei viestejä'; $string['repeatdaily'] = 'Joka päivä samaan aikaan'; -$string['repeatnone'] = 'Ei toistoja - julkaise vain määritetyllä ajalla'; +$string['repeatnone'] = 'Ei toistoja - julkaise vain määritellyt ajat'; $string['repeattimes'] = 'Toista istunnot'; $string['repeatweekly'] = 'Joka viikko samaan aikaan'; $string['savemessages'] = 'Säästä vanhat istunnot'; diff --git a/lang/fi/choice.php b/lang/fi/choice.php index a58febf053c..bd04547022b 100644 --- a/lang/fi/choice.php +++ b/lang/fi/choice.php @@ -1,5 +1,5 @@ diff --git a/lang/fi/dialogue.php b/lang/fi/dialogue.php index 642c06b6fe2..24dcb04e048 100644 --- a/lang/fi/dialogue.php +++ b/lang/fi/dialogue.php @@ -1,72 +1,69 @@ -
            Oletko varma, että haluat sulkea dialogin?'; -$string['deleteafter'] = 'Poista suljetut tämän ajan kuluttua (päivissä)'; -$string['dialogueclosed'] = 'Dialogi suljettu'; -$string['dialogueintro'] = 'Dialogin johdanto'; -$string['dialoguemail'] = '$a->userform on lisännyt viestin dialogiinne \'$a->dialogue\' - -Voit nähdä viestin lisättynä dialogiinne osoitteessa: - -$a->url'; -$string['dialoguemailhtml'] = '$a->userform on lisännyt viestin dialogiinne \'$a->dialogue\'

            - -Voit seuraavasta linkistä nähdä viestin lisättynä url\">dialogiinne.'; -$string['dialoguename'] = 'Dialogin nimi'; -$string['dialogueopened'] = 'Dialogi aukaistu $a :n kanssa'; -$string['dialoguewith'] = 'Dialogi $a:n kanssa'; -$string['everybody'] = 'Kaikki'; -$string['furtherinformation'] = 'Lisätietoja'; -$string['lastentry'] = 'Viimeisin viesti'; -$string['maildefault'] = 'Sähköpostin oletusasetus'; -$string['mailnotification'] = 'Sähköposti-ilmoitus'; -$string['modulename'] = 'Dialogi'; -$string['modulenameplural'] = 'Dialogit'; -$string['namehascloseddialogue'] = '$a on sulkenut dialogin'; -$string['newdialogueentries'] = 'Uudet viestit'; -$string['newentry'] = 'Uusi viesti'; -$string['noavailablepeople'] = 'Ei henkilöitä, joiden kanssa dialogi voidaan aloittaa'; -$string['nopersonchosen'] = 'Henkilöä ei ole valittu'; -$string['nosubject'] = 'Aihe puuttuu'; -$string['notextentered'] = 'Teksti puttuu'; -$string['notstarted'] = 'Et ole aloittanut tätä dialogia vielä'; -$string['notyetseen'] = 'Avaamatta'; -$string['numberofentries'] = 'Viestien määrä'; -$string['numberofentriesadded'] = '$a :n viestit'; -$string['of'] = '/'; -$string['onwrote'] = '$a kirjoitti'; -$string['onyouwrote'] = '$a kirjoitit'; -$string['open'] = 'Avaa'; -$string['openadialoguewith'] = 'Avaa dialogi '; -$string['opendialogue'] = 'Avaa dialogi'; -$string['opendialogueentries'] = 'Avaa dialogin viestit'; -$string['pane0'] = 'Avaa dialogi'; -$string['pane1'] = '$a dialogia odottaa vastauksiasi'; -$string['pane1one'] = '1 dialogi odottaa vastaustasi'; -$string['pane2'] = '$a dialogia odottaa vastausta toiselta henkiöltä'; -$string['pane2one'] = '1 dialogi odottaa vastausta toiselta henkilöltä'; -$string['pane3'] = '$a suljettua dialogia'; -$string['pane3one'] = '1 suljettu dialogi'; -$string['seen'] = 'Avattu $a sitten'; -$string['sendmailmessages'] = 'Lähetä sähköpostiviesti uusista viesteistäni'; -$string['status'] = 'Tila'; -$string['studenttostudent'] = 'Opiskelija opiskelijalle'; -$string['subject'] = 'Aihe'; -$string['subjectadded'] = 'Aihe lisätty'; -$string['teachertostudent'] = 'Opettaja opiskelijalle'; -$string['typefirstentry'] = 'Kirjoita ensinmäinen viesti tähän'; -$string['typefollowup'] = 'Kirjoita seuraavat tähän'; -$string['typeofdialogue'] = 'Dialogin tyyppi'; -$string['typereply'] = 'Kirjoita vastaus tähän'; -$string['viewallentries'] = 'Näytä $a dialogin viestit'; - -?> +
            Oletko varma, että haluat sulkea keskustelun?'; +$string['deleteafter'] = 'Poista suljetut tämän ajan kuluttua (päivissä)'; +$string['dialogueclosed'] = 'Vuoropuhelu suljettu'; +$string['dialogueintro'] = 'Vuoropuhelun kuvaus'; +$string['dialoguemail'] = '$a->userform on lisännyt viestin vuoropuheluunne \'$a->dialogue\' + +Näet lisätyt viestit osoitteessa $a->url'; +$string['dialoguemailhtml'] = '$a->userform on lisännyt viestin vuoropuheluunne \'$a->dialogue\'

            + +Näet lisätyt viestit osoitteessa url\">vuoropuhelu.'; +$string['dialoguename'] = 'Vuoropuhelun nimi'; +$string['dialogueopened'] = 'Vuoropuhelu aukaistu $a :lle'; +$string['dialoguewith'] = 'Vuoropuhelu $a:n kanssa'; +$string['everybody'] = 'Kaikki'; +$string['furtherinformation'] = 'Lisätietoja'; +$string['lastentry'] = 'Viimeisin viesti'; +$string['maildefault'] = 'Sähköpostin oletusasetus'; +$string['modulename'] = 'Vuoropuhelu'; +$string['modulenameplural'] = 'Vuoropuhelut'; +$string['namehascloseddialogue'] = '$a on sulkenut vuoropuhelun'; +$string['newdialogueentries'] = 'Uudet viestit'; +$string['newentry'] = 'Uusi viesti'; +$string['noavailablepeople'] = 'Ei henkilöitä, joiden kanssa vuoropuhelu voidaan aloittaa'; +$string['nopersonchosen'] = 'Henkilöä ei ole valittu!'; +$string['nosubject'] = 'Aihe puuttuu!'; +$string['notextentered'] = 'Teksti puttuu!'; +$string['notstarted'] = 'Et ole aloittanut tätä vuoropuhelua vielä'; +$string['notyetseen'] = 'Avaamatta'; +$string['numberofentries'] = 'Viestien määrä'; +$string['numberofentriesadded'] = '$a :n viestit'; +$string['of'] = '/'; +$string['onwrote'] = '$a kirjoitti'; +$string['onyouwrote'] = '$a kirjoitit'; +$string['open'] = 'Avaa'; +$string['openadialoguewith'] = 'Avaa vuoropuhelu'; +$string['opendialogue'] = 'Avaa vuoropuhelu'; +$string['opendialogueentries'] = 'Avaa vuoropuhelun viestit'; +$string['pane0'] = 'Avaa vuoropuhelu'; +$string['pane1'] = '$a vuoropuhelua odottaa vastauksiasi'; +$string['pane1one'] = '1 vuoropuhelu odottaa vastaustasi'; +$string['pane2'] = '$a vuoropuhelua odottaa vastausta toiselta henkiöltä'; +$string['pane2one'] = '1 vuoropuhelu odottaa vastausta toiselta henkilöltä'; +$string['pane3'] = '$a suljettua vuoropuhelua'; +$string['pane3one'] = '1 suljettu vuoropuhelu'; +$string['seen'] = 'Avattu $a sitten'; +$string['sendmailmessages'] = 'Lähetä sähköpostiviesti uusista viesteistäni'; +$string['status'] = 'Tila'; +$string['studenttostudent'] = 'Opiskelija opiskelijalle'; +$string['subject'] = 'Aihe'; +$string['subjectadded'] = 'Aihe lisätty'; +$string['teachertostudent'] = 'Opettaja opiskelijalle'; +$string['typefirstentry'] = 'Kirjoita ensinmäinen viesti tähän'; +$string['typefollowup'] = 'Kirjoita seuraavat tähän'; +$string['typeofdialogue'] = 'Vuoropuhelun tyyppi'; +$string['typereply'] = 'Kirjoita vastaus tähän'; +$string['viewallentries'] = 'Näytä $a vuoropuhelun viestiä'; + +?> diff --git a/lang/fi/docs/intro.html b/lang/fi/docs/intro.html index 699a0056580..c6ec518fb03 100644 --- a/lang/fi/docs/intro.html +++ b/lang/fi/docs/intro.html @@ -35,7 +35,7 @@ näpertelyä joka usein johtaa luovuuteen. Se pätee sekä siihen kuinka Moodlea kehitettän että siihen miten opiskelija tai opettaja voi suhtautua opiskeluun/opettamiseen kurssilla.

            -



            +



            Moodle Documentation

            diff --git a/lang/fi/docs/teacher.html b/lang/fi/docs/teacher.html index 921262bdc8b..7d2ee63551b 100644 --- a/lang/fi/docs/teacher.html +++ b/lang/fi/docs/teacher.html @@ -4,39 +4,39 @@ -

            Opettajan ohje
            +

            Opettajan ohje

            Tämä sivu on lyhyt ohjeistus kurssintekemiseksii Moodlen avulla. Ohjeessa käsitellään perustyökaluja jotka ovat saatavilla sekä muutamia valintoja joita sinun täytyy -tehdä.
            +tehdä.

            -

            Ohjeen jaottelu:
            +

            Ohjeen jaottelu:

              -
            1. Aloitus
              +
            2. Aloitus
            3. -
            4. Kurssin asetukset
              +
            5. Kurssin asetukset
            6. -
            7. Tiedostojen lisääminen
              +
            8. Tiedostojen lisääminen
            9. -
            10. Tehtävien lisääminen
              +
            11. Tehtävien lisääminen
            12. -
            13. Kurssin toteuttaminen
              +
            14. Kurssin toteuttaminen
            15. Lisäinformaatiota
            -

            Aloitus
            +

            Aloitus

            Ohje lähtee siitä että sivuston ylläpitäjä on asettanut Moodlen käytettäväksi ja luonut sinulle uuden tyhjän kurssin josta lähteä liikkeelle. Oletuksena on myös -että olet kirjautunut kurssille opettajan käytöoikeuksin.
            +että olet kirjautunut kurssille opettajan käytöoikeuksin.

            Tässä on kolme vinkkiä jotka helpottavat -aloittamista.
            +aloittamista.

            1. Älä pelkää kokeilla asioita: @@ -48,20 +48,20 @@ on helppoa korjata tilanne entiselleen.
            kuvakkeita:

              - muokkaa kuvake sallii sinun -muokkaavan asioita.
            +muokkaavan asioita.

            - apua kuvake näyttää -asiasta apu-ikkunan
            +asiasta apu-ikkunan

              - avoin silmä kuvakkeella piilotat jotakin -näkymättömiin oppilailta
            +näkymättömiin oppilailta

              - silmä kiinni kuvakkeella näytät oppilaille jotakin -piilottamaasi
            +piilottamaasi

            @@ -73,7 +73,7 @@ est

             

            -

            Kurssin asetukset
            +

            Kurssin asetukset

            Ensimmäinen asia jota tarkastelet on @@ -82,17 +82,17 @@ Mene siihen ja valitse "Asetukset..."&nb (Huomaa että tämä linkki, kuten koko Ylläpito-osio on näkyvissä vain sinulle ja pääkäyttäjälle eivätkä oppilaat edes -näe kyseisiä linkkejä ).
            +näe kyseisiä linkkejä ).

            Asetukset sivulla voit muuttaa lukuisia kurssin asetuksia esimerkiksi kurssin nimen, aloitusajan ja keston jne. Tässä ohjeessa ei kerrota eri  asetuksista enempää koska -apua-kuvakkeella saat lisätietoa yksityiskohtaisemmin.
            +apua-kuvakkeella saat lisätietoa yksityiskohtaisemmin.
            Kuitenkin tässä kohtaa on kerrottava tärkeimmästä ominaisuudesta - kurssin muodosta joka voi olla viikkomuoto, aihemuoto tai keskustelumuoto.  Tämä valitaan sivun muotoilu -kohdassa.
            +kohdassa.

            Valitsemasi kurssin muoto määrää kurssisivujen ulkonäön  sekä  käyttötavan ja @@ -100,12 +100,12 @@ vuorovaikutteisuuden. Moodlessa (1.1.1) on k kolme tyyppiä mutta jatkossa tyyppien määrä lisääntynee. ( Mikäli keksit uusia muotoja lähetä kuvaus ideastasi Moodlen suunnittelijalle osoitteeseen -martin@moodle.org )
            +martin@moodle.org )

            Tässä on esillä kolme ruutukaappausta yksinkertaisista kurseista ( älä välitä väreistä jotka sivuston ylläpito -määrittää mielensä mukaan ):
            +määrittää mielensä mukaan ):

            Viikkomuoto:

            @@ -123,14 +123,14 @@ t aikarajoituksia. Keskustelumuoto ei sisällä muita ominaisuuksia ja perustuu ykden keskustelufoorumin käyttöön joka nähdään kurssin -pääsivulla.
            +pääsivulla.

            -

            Lisätietoja saat kurssin asetukset sivun  apua-kuvakkeista.
            +

            Lisätietoja saat kurssin asetukset sivun  apua-kuvakkeista.

             

            Tiedostojen -lisääminen
            +lisääminen

            Käytössäsi voi olla materiaalia jota haluaisit @@ -139,24 +139,24 @@ lis flash-animaatioita. Minkä tyyppinen tiedosto tahansa voidaan lisätä kurssiisi ja tallentaa palvelimelle. Kun tiedostot ovat palvelimella voit siirrellä, uudelleen nimetä, korjailla -tai poistaa niitä.
            +tai poistaa niitä.

            Tähän kaikkeen pääset kurssin Ylläpito-osion Tiedostot... linkillä. Tiedosto-osion sivu näyttää -tältä:
            +tältä:

             

            Tämä näkymä on käytössä opettajalla - oppilaat eivät voi käyttää sitä. Yksittäiset tiedostot saadaan oppilaiden käyttöön -aineistona - katso seuraava luku.
            +aineistona - katso seuraava luku.

            Kuten kuvasta näkyy, tiedostot on listattu yhdessä alihakemistojen kanssa. Voit luoda lisää alihakemistoja järjestelläksesi tiedostosi siirtämällä -niitä sopiviin paikkoihin.
            +niitä sopiviin paikkoihin.

            Tiedostojen lisääminen verkon kautta on rajoitettu yhteen tiedostoon kerrallaan. Jos sinun tarvitsee lisätä @@ -164,51 +164,51 @@ useita tiedostoja kerralla ( esimerkiksi koko web-sivusto ) on paljon helpompaa pakata tiedostot zip-ohjelmalla yhdeksi tiedostoksi , siirtää tämä palvelimelle ja purkaa sitten palvelimella ( -näet  "unzip" linkin pakatun tiedoston nimen vieressä ).
            +näet  "unzip" linkin pakatun tiedoston nimen vieressä ).

            Esikatsellaksesi mitä tahansa siirtämääsi tiedostoa klikkaa sen nimeä. Selaimesi pitää huolen sen -esittämisestä tai lataa sen koneellesi tutkittavaksi.
            +esittämisestä tai lataa sen koneellesi tutkittavaksi.

            HTML ja tekstitiedostoja voidaan muokata palvelimella. Muut tiedostot pitää muokata omalla koneellasi ja lisätä palvelimelle uudelleen. Jos lisäät saman nimisen tiedoston aiempi korvataan automaattisesti siirtämälläsi uudella -tiedostolla.
            +tiedostolla.

            Viimeinen huomio: Jos lisättävä sisältö on jo internetissä sinun ei tarvitse lisätä tiedostoja palvelimelle  - voit tehdä linkin kurssiltasi suoraan -sivustoon (  katso aineisto  seuraavasta luvusta ).
            +sivustoon (  katso aineisto  seuraavasta luvusta ).

             

            Tehtävien -lisääminen
            +lisääminen

            Kurssin luominen on erilaisten tehtävien/toimintojen lisäämistä kurssin pääsivulle siinä järjestyksessä jossa oppilaat niitä käyttävät. Voit muuttaa niiden järjestystä -milloin vain.
            +milloin vain.

            Muokataksesi kurssia valitse Ylläpito-osiosta Muokkaustila päälle linkki. Tällä näytetään tai piilotetaan asetustoiminnot joilla voit käsitellä kurssin pääsivua. Katso yläpuolelta ruutukaappausta viikkomuotoisesta kurssista. Siinä muokkaustila on päällä ja asetustoiminnot -ovat näkyvissä.
            +ovat näkyvissä.

            Uuden tehtävän/toiminnon lisäämiseksi mene yksinkertaisesti viikko- tai aihemuotoisessa kurssissa paikkaan johon tehtävän/toiminnon haluat lisätä ja valitse pudotusvalikosta toiminnon tyyppi. Tässä ovat Moodle 1.1.1 -version vakio toiminnot:
            +version vakio toiminnot:

            -


            +


            -
            Tehtävä
            +
            Tehtävä
            Tehtävässä määritellään mitä tehdään, mihin asti ja maksimi arvosana. Oppilaat voivat palauttaa yhden tiedoston tehtävän suorittamiseksi. @@ -219,18 +219,18 @@ my tietueen anettavalle arvosanalle ja kommentille. Puolituntia arvostelun jälkeen Moodle lähettää oppilaalle sähköpostilla automaattisesti ilmoituksen -tapahtuneesta.


            Monivalinta
            +tapahtuneesta.

            Monivalinta
            Monivalinta on hyvin yksinkertaista - laadit kysymyksiä ja niihin vaihtoehtoisia vastauksia.Oppilaat voivat tehdä valintansa ja sinä saat raportti-ikkunan josta voit nähdä tulokset. Itse käytän sitä  tutkimustulosten keräilyyn opiskelijoilta mutta sillä käy näpärästi -myös erilaiset mielipidekyselyt ja luokkaäänestykset.


            Foorumi
            Tämä moduuli on ehkä tärkein - +myös erilaiset mielipidekyselyt ja luokkaäänestykset.


            Foorumi
            Tämä moduuli on ehkä tärkein - täällä käydään kaikki keskustelut. Kun lisäät uuden foorumin sinulta kysytään minkätyyppistä keskustelua käydään:  -yksinkertainen yhden aiheen keskustelu - kaikille vapaa yleisfoorumi -vai  yksi keskustelupolku käyttäjää kohti.


            Lyhyttehtävä
            +vai  yksi keskustelupolku käyttäjää kohti.

            Lyhyttehtävä
            Jokainen lyhyttehtävä on osa koko kurssin lyhyttehtävistä. Jokaiseen lyhyttehtävään voit määrittää avoimen kysymyksen joka ohjaa oppilaan @@ -245,13 +245,13 @@ kyseisest sähköpostilla tiedon palautteestasi. Lyhyttehtäviä ei ole suunniteltu jatkuvasti laajennettaviksi - jos tätä tarvitaan lisää uusia lyhyttehtävä osioita -pääsivulle. .


            Aineisto
            +pääsivulle. .

            Aineisto
            Aineistolla tarkoitetaan oppilaan saamaa kurssin sähköistä materiaalia ja sisältöjä. Aineisto voi olla mikä tahansa palvelimelle siirretty tiedosto tai linkki johonkin URL osoitteeseen.Yksinkertaisten tekstisisältöjen luominen onnistuu kirjoittamalla ne suoraan -kirjoitus-osion kaavakkeeseen .


            Tentti
            Tässä modulissa opettaja voi suunnitella ja +kirjoitus-osion kaavakkeeseen .


            Tentti
            Tässä modulissa opettaja voi suunnitella ja pitää kokeita, jotka sisältävät monivalintatehtäviä, oikein/väärin -kysymyksiä ja muita lyhyesti vastattavia kysymyksiä. Kysymykset tallennetaan @@ -261,7 +261,7 @@ v Jokainen yritys kirjataan automaattisesti, ja opettaja voi päättää antaako hän palautetta vai näyttääkö oikeat vastaukset. Tässä -modulissa on mahdollista antaa arvosanoja.


            Palautekyselyt
            +modulissa on mahdollista antaa arvosanoja.

            Palautekyselyt
            Palautekyselymoduli tarjoaa useita hyväksi todettuja tutkimusvälineitä joilla voit arvioida ja ymmärtää opettamaasi luokkaa. Tällä @@ -271,7 +271,7 @@ Ne voi antaa oppilaitten k diagnosointi välineeksi ja kurssin lopulla arviointivälineeksi. ( Käytän yhtä joka viikko kursseillani ).
            -
            +

            Lisättyäsi tehtäviä/toimintoja kurssillesi voit siirrellä niitä ylös tai alas kurssisivulla klikkaamalla pieniä nuoli-kuvakkeita  ( ) . Voit myös @@ -280,7 +280,7 @@ risti-kuvakkeella , ja uudelleen muokata niitä muokkaa-kuvakkeella .

             

            -

            Kurssin toteuttaminen
            +

            Kurssin toteuttaminen

            On olemassa suunnitelmia laajentaa tämä ohjeistus @@ -288,17 +288,17 @@ enemm tässä muutama ajatus kurssin toteuttamiseen:

            1. Tilaa itsellesi kaikki foorumit niin pysyt selvillä -luokkasi aktiivisuudesta.
              +luokkasi aktiivisuudesta.
            2. Rohkaise kaikkia oppilaita täyttämään käyttäjäprofiilit ( mukaanlukien kuvat ) ja lue ne kaikki - tämä auttaa tarjoamalla kontekstin heidän myöhemmälle kirjoittamiselle sekä auttaa sinua -vastaamaan tyylillä joka vastaa heidän tarpeita.
              +vastaamaan tyylillä joka vastaa heidän tarpeita.
            3. Seuraa kurssin yksityistä "Opettajien foorumia". Se on erittäin käyttökelpoinen kanava kun -useampi opettaja opettaa kurssilla.
              +useampi opettaja opettaa kurssilla.
            4. Käytä kurssin "Tapahtumat..." linkkiä päästäksesi kurssin lokitietoihin. Siellä on @@ -306,35 +306,35 @@ linkki  ikkunaan josta n tunnin ajalta. Ikkunan tiedot päivittyvät minuutin välein. Se on hyvä jättää päälle vaikka koko päiväksi niin näet ja koet mitä -kurssilla tapahtuu.
              +kurssilla tapahtuu.
            5. Käytä Aktiivisuus linkkiä ( löytyy henkilöt osion osallistujat listan oikealta reunalta tai käyttäjän profiilisivulta ) kun haluat tietoa yksittäisen oppilaan aktiivisuudesta -kurssityöskentelyssä.
              +kurssityöskentelyssä.
            6. Vastaa nopeasti oppilaille. Älä jätä sitä myöhemmäksi - tee se heti. Vaikka vastaamiseen kuormittuu nopeasti ja tuntuu kuin mitään muuta ei ehtisi tekemään, vastaaminen on ratkaiseva merkitys kurssin -onnistumiseen ja ilmapiirin luomiseen..
              +onnistumiseen ja ilmapiirin luomiseen..

             

            -

            Lisäinformaatiota
            +

            Lisäinformaatiota

            Jos sinulla on ongelmia sivuston kanssa ota yhteyttä sivuston -ylläpitäjään.
            +ylläpitäjään.

            Jos sinulla on hyviä ideoita Moodlen paramtamiseksi tai jopa hyviä juttuja Moodlen käytöstä, tule moodle.org sivustolle ja liity kurssille "Using Moodle". Meistä on mukavaa kuulla sinusta ja voit auttaa -meitä parantamaan Moodlea edelleen.
            -
            +meitä parantamaan Moodlea edelleen.
            +

            Jos haluat koodata ja julkaista uusia moduuleja, kirjoittaa dokumentaatiota tai tehdä käännöstyötä, diff --git a/lang/fi/editor.php b/lang/fi/editor.php index 6d620f5f81a..055210f8c3b 100644 --- a/lang/fi/editor.php +++ b/lang/fi/editor.php @@ -1,19 +1,17 @@ ] painiketta palataksesi takaisin WYSIWYG -tilaan.'; +$string['textmode'] = 'Olet tekstitilassa. Käytä [<>] painiketta palataksesi takaisin WYSIWIG -tilaan.'; $string['texttop'] = 'Texttop'; $string['top'] = 'Ylös'; $string['type'] = 'Tyyppi'; $string['underline'] = 'Alleviivattu'; -$string['undo'] = 'Peruuta viimeisin toiminto'; +$string['undo'] = 'Peruuta viimeinen toiminto'; $string['unorderedlist'] = 'Luettelomerkit'; $string['upload'] = 'Lataa'; $string['vertical'] = 'Pysty'; diff --git a/lang/fi/enrol_database.php b/lang/fi/enrol_database.php index 568f596291f..c87f4393b08 100644 --- a/lang/fi/enrol_database.php +++ b/lang/fi/enrol_database.php @@ -1,18 +1,21 @@ diff --git a/lang/fi/enrol_flatfile.php b/lang/fi/enrol_flatfile.php index d75a732d9c4..7a96dae9130 100644 --- a/lang/fi/enrol_flatfile.php +++ b/lang/fi/enrol_flatfile.php @@ -1,20 +1,7 @@ -add, student, 5, CF101 -add, teacher, 6, CF101 -add, teacheredit, 7, CF101 -del, student, 8, CF101 -del, student, 17, CF101 -add, student, 21, CF101, 1091115000, 1091215000 -'; $string['enrolname'] = 'Tekstitiedosto'; -$string['filelockedmail'] = 'Tiedostoa, jota käytetään kurssikirjaantumisiin, ei voida poistaa. Tämä saattaa tarkoitaa sitä, että tiedoston komennot suoritetaan useamman kerran. Ongelmien välttämiseksi korjaa tiedosto-oikeudet niin, että cron-toimito voi poistaa tiedoston.'; -$string['filelockedmailsubject'] = 'Virhe rekiteröitymis tiedostossa'; -$string['location'] = 'Tiedoston sijainti'; -$string['mailadmin'] = 'Ilmoita ylläpitäjälle'; -$string['mailusers'] = 'Ilmoita käyttäjälle'; ?> diff --git a/lang/fi/enrol_internal.php b/lang/fi/enrol_internal.php index d4abfebcc3d..dd4839b134a 100644 --- a/lang/fi/enrol_internal.php +++ b/lang/fi/enrol_internal.php @@ -1,15 +1,7 @@ -

          • Opettaja tai ylläpitä voi lisätä opiskelijan kursille ylläpitovalikon avulla
          • -
          • Kurssilla voi olla rekisteröitymisavain ja jokainen joka tietä avaimen voi liittyä kurssille.
          • -'; -$string['enrolname'] = 'Sisäinen rekisteröityminen'; -$string['thischarset'] = 'iso-8859-1'; -$string['thisdirection'] = 'ltr'; -$string['thislanguage'] = 'Suomi'; +$string['enrolname'] = 'Sisäinen liittyminen'; ?> diff --git a/lang/fi/enrol_ldap.php b/lang/fi/enrol_ldap.php deleted file mode 100755 index dd113d56e44..00000000000 --- a/lang/fi/enrol_ldap.php +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/lang/fi/enrol_paypal.php b/lang/fi/enrol_paypal.php index 0f156e0d56f..9eeabb44b89 100644 --- a/lang/fi/enrol_paypal.php +++ b/lang/fi/enrol_paypal.php @@ -1,13 +1,8 @@ diff --git a/lang/fi/error.php b/lang/fi/error.php index b276f9819f3..c8c65272345 100644 --- a/lang/fi/error.php +++ b/lang/fi/error.php @@ -1,23 +1,19 @@ -modulename\" ($a->moduleversion) ei voitu asentaa. Se vaatii uudemman version Moodlesta (Käytät versiota $a->currentmoodle. Tarvitset version $a->requiremoodle).'; -$string['notavailable'] = 'Ominaisuus ei ole tällä hetkellä käytettävissä.'; -$string['restricteduser'] = 'Käyttäjätiliäsi \"$a\" on rajoitettu toiminnon osalta.'; -$string['sessionipnomatch'] = 'Valitettavasti IP numerosi näyttää muuttuneen siitä, kun aluksi kirjauduit sisään. Tämä turvatoiminto estää hakkereita varastamasta identiteettiäsi sillä välin kun olet rekisteröityneenä tällä sivulla. Normaalien käyttäjien ei pitäisi nähdä tätä viestiä- pyydä sivuston hallinnolta apua.'; -$string['unknowncourse'] = 'Tuntematon kurssi nimeltään \"$a\"'; -$string['usernotaddederror'] = 'Käyttäjää \"$a\" ei lisätty - tuntematon virhe'; -$string['usernotaddedregistered'] = 'Käyttäjää \"$a\" ei lisätty - on jo rekisteröity'; -$string['usernotavailable'] = 'Pahus, et voi tarkastella kyseisen käyttäjän tietoja'; - -?> +modulename\" ($a->moduleversion) ei voitu asentaa. Se vaatii uudemman version Moodlesta (käyttämäsi versio $a->currentmoodle, tarvitset $a->requiremoodle). '; +$string['notavailable'] = 'Ominaisuus ei ole tällä hetkellä käytettävissä.'; +$string['restricteduser'] = 'Käyttäjätiliäsi \"$a\" on rajoitettu toiminnon osalta.'; +$string['unknowncourse'] = 'Tuntematon kurssi nimeltään \"$a\"'; +$string['usernotaddederror'] = 'Käyttäjää \"$a\" ei lisätty - tuntematon virhe'; +$string['usernotaddedregistered'] = 'Käyttäjää \"$a\" ei lisätty - on jo rekisteröity'; + +?> diff --git a/lang/fi/exercise.php b/lang/fi/exercise.php index 915ad714548..2e323f467d7 100644 --- a/lang/fi/exercise.php +++ b/lang/fi/exercise.php @@ -1,55 +1,50 @@ Haluat ehkä tarkistaa työsi arvioinnin jälkeen.
            Jos teet sen, muistathan tarkistaa myös arviointisi.
            Voit tehdä sen klikkaamalla alapuolella olevaa uudelleenarviointi-linkkiä.'; $string['awaitingassessmentbythe'] = 'Odottaa arviointia $a :lta'; +$string['awaitingfeedbackfromthe'] = 'Odottaa palautetta $a :lta'; $string['clearlateflag'] = 'Poista merkintä myöhästymisestä'; $string['comment'] = 'Kommentti'; -$string['comparisonofassessments'] = 'Arviointien vertailu'; $string['confirmdeletionofthisitem'] = 'Varmista $a :n poistaminen'; $string['correct'] = 'Oikein'; -$string['count'] = 'Määrä'; $string['criterion'] = 'Peruste'; $string['deadline'] = 'Määräaika'; $string['deadlineis'] = 'Määräaika on $a'; $string['delete'] = 'Poista'; -$string['deletesubmissionwarning'] = 'Varoitus: $a:n arviontia liittliitettynä tähän palautukseen.
            Suosittelemme vahvasti, että tätä palautusta EI poisteta.'; -$string['deleting'] = 'Poistetaan'; +$string['deleting'] = 'Poistaa'; $string['description'] = 'Kuvaus'; -$string['descriptionofexercise'] = 'Oppimistehtävän tehtäväkuvaus on Word-asiakirjassa tai HTML-tiedostossa. Tämä tiedosto ladataan oppimistehtävään ennen kuin tehtävä avautuu. On myös mahdollista tehdä joukko muunnelmia samasta tehtävästä lataamalla useampia Word- tai HTML-tiedostoja ennen tehtävän avautumista.'; +$string['descriptionofexercise'] = 'Oppimistehtävän $a:n tehtäväkuvaus on Word-asiakirjassa tai HTML-tiedostossa. Tämä tiedosto ladataan oppimistehtävään ennen kuin tehtävä avautuu $a:lle. On myös mahdollista tehdä joukko muunnelmia samasta tehtävästä edelleen Word- tai HTML-tiedostoilla lataamalla ne tehtävään ennen sen avautumista $a:lle.'; $string['detailsofassessment'] = 'Arvioinnin yksityiskohdat'; -$string['displayoffinalgrades'] = 'Lopullisten arvosanojen näyttö'; +$string['displayoffinalgrades'] = 'Lopullisten arvosanojen asettelu'; $string['doubleupload'] = 'Varoitus: tämä palautus on todennäköisesti lähetetty kahdesti. Mene ylläpidon sivulle, etsi kahta palautusta tältä käyttäjältä lyhyen ajan sisällä. Poista ylimääräiset palautukset ennen jatkamista.'; $string['duedate'] = 'Eräpäivä'; $string['edit'] = 'Muokkaa'; -$string['editingassessmentelements'] = 'Muokkataan arviointiperusteita'; -$string['element'] = 'Arviointiperuste'; -$string['elementweight'] = 'Arviointiperusteen painoarvo'; -$string['enterpassword'] = 'Anna salasana'; -$string['entriessaved'] = 'Tietueet tallennettu'; -$string['errorbanded'] = 'Virheistä vähentävä'; +$string['editingassessmentelements'] = 'Muokkaa arvosteluperusteita'; +$string['element'] = 'Arvosteluperuste'; +$string['elementweight'] = 'Arvosteluperusteen painoarvo'; +$string['entriessaved'] = 'Tietueet tallenettu'; $string['excellent'] = 'Erinomainen'; $string['exerciseassessments'] = 'Oppimistehtävän arvioinnit'; $string['exercisefeedback'] = 'Oppimistehtävän palaute'; $string['exercisesubmissions'] = 'Oppimistehtävän palautukset'; -$string['fair'] = 'Tyydyttävä'; $string['generalcomment'] = 'Yleinen kommentti'; $string['good'] = 'Hyvä'; $string['gradeassessment'] = 'Arvostele arviointi'; @@ -57,48 +52,37 @@ $string['gradeforassessment'] = 'Arvosana arvioinnille'; $string['gradeforstudentsassessment'] = 'Arvosana $a arvioinnille'; $string['gradeforsubmission'] = 'Arvosana palautukselle'; $string['gradetable'] = 'Arvosanataulukko'; -$string['gradinggrade'] = 'Arviointi asteikko'; $string['gradingstrategy'] = 'Arvostelun strategia'; $string['handlingofmultiplesubmissions'] = 'Useiden palautusten hallinta'; $string['hidenamesfromstudents'] = 'Piilota nimet oppilailta'; $string['incorrect'] = 'Virheellinen'; -$string['late'] = 'Myöhässä'; -$string['lax'] = 'Rento'; $string['leaguetable'] = 'Palautetut työt'; $string['mail1'] = 'Palautuksesi \'$a\' on arvosteltu '; $string['mail2'] = 'Kommentit ja arvosana näkyvät oppimistehtävän arvioinnissa $a'; $string['mail3'] = 'Voit nähdä sen oppimistehtävän arvioinnissasi'; -$string['mail6'] = 'Arviosi tehtävästä \'$a\' on arvosteltu'; +$string['mail6'] = 'Arviosi tehtävästä $a on arvosteltu'; $string['mail7'] = '$a:n kommentit voit nähdä oppimistehtävän arvioinnissa'; $string['managingassignment'] = 'Oppimistehtävän hallinta'; -$string['maximum'] = 'Maksimi'; -$string['maximumgradeforstudentassessments'] = 'Maksimi arvo opiskelijoiden arvioinneille: $a'; -$string['maximumgradeforsubmissions'] = 'Maksimi arvo tehtäville: $a'; $string['maximumsize'] = 'Suurin koko'; -$string['mean'] = 'Keskiarvo'; -$string['minimum'] = 'Minimi'; $string['modulename'] = 'Oppimistehtävä'; $string['modulenameplural'] = 'Oppimistehtävät'; $string['movingtophase'] = 'Siirrytään vaiheeseen $a'; $string['multiplesubmissions'] = 'Useita palautuksia'; -$string['noexercisedescriptionssubmitted'] = 'Oppimistehtävän kuvauksia ei ole määritelty'; +$string['noexercisedescriptionssubmitted'] = 'Oppimistehtävän kuvauksia ei ole määritelyt'; $string['nosubmissions'] = 'Ei palautuksia'; $string['notassessedyet'] = 'Ei vielä arvioitu'; $string['notavailable'] = 'Ei valittavissa'; -$string['noteonassessmentelements'] = 'Huomaa, että arvostelu on hajoitettu useisiin arvosteluperusteihin.
            Tämä helpottaa arvostelua ja tekee siitä johdonmukaisemman. Opettajana sinun pitää lisätä nämä osat ennen tehtävän julkistamista opiskelijoille.
            Tämä tehdään klikkaamalla kurssin tehtävää, ja mikäli arvosteluperusteita ei ole, sinua pyydetään lisäämään niitä.
            Voit muuttaa arvosteluperusteiden määrää käyttäen tehtävän muokkaustilaa, itse arvosteluperusteita voi muokata \"Oppimistehtävän hallinta\"-ruudulta.'; -$string['noteongradinggrade'] = 'Tämä kertoo kuinka hyvin arvointisi sopii yhteen työn $a arvioinnin kanssa. Korkeampi arvosana tarkoitaa parempaa yheensopivuutta.'; +$string['noteonassessmentelements'] = 'Huomaa, että arvostelu on hajoitettu useisiin arvosteluperusteihin.
            Tämä helpottaa arvostelua ja tekee siitä johdonmukaisemman. Opettajana sinun pitää lisätä nämä osat ennen tehtävän julkistamista opiskelijoille.
            Tämä tehdään klikkaamalla kurssin tehtävää, ja mikäli arvosteluperusteita ei ole, sinua pyydetään lisäämään niitä.
            Voit muuttaa arvosteluperusteiden määrää käyttäen tehtävän muokkaustilaa, itse arvosteluperusteita voi muokata "Oppimistehtävän hallinta"-ruudulta.'; $string['noteonstudentassessments'] = '(Arvosana opiskelijalta/ Arvosanan arvosana opettajalta)'; $string['notgraded'] = 'Ei arvioitu'; $string['notitlegiven'] = 'Ei annettua otsikkoa'; +$string['nowpleasemakeyourownassessment'] = 'Tee oma arviosi $a:n työstä.
            Huomaa, että arviointilomakeelle on oletuksena haettu samat arvot kuin opiskelijan lomakkeella.
            Tee mielestäsi tarpeelliset muutokset ja klikkaa yhtä sivun alalaidan painikkeista.'; $string['numberofassessmentelements'] = 'Kommenttien, arvosteluperusteiden, arvosanajoukkojen, perustelujen tai luokkien lukumäärä otsikossa'; -$string['numberofcriterionelements'] = 'Perusteiden määrän pitää ola enemmän kuin yksi.'; $string['numberofentries'] = 'Tietueiden määrä'; -$string['numberofentriesinleaguetable'] = 'Tietueden määrä taulukossa'; $string['numberofnegativeresponses'] = 'Negatiivisten vastausten lukumäärä'; $string['onesubmission'] = 'Yksi palautus'; $string['optionaladjustment'] = 'Valinnainen tarkistus'; $string['overallgrade'] = 'Keskiarvo'; -$string['passwordprotectedexercise'] = 'Salasana suojattu harjoitus'; $string['phase'] = 'Jakso'; $string['phase1'] = 'Laadi oppimistehtävä'; $string['phase1short'] = 'Asetukset'; @@ -107,7 +91,6 @@ $string['phase2short'] = 'Avoin'; $string['phase3'] = 'Näytä kokonaisarvosanat ja palautukset vertailutaulukkona'; $string['phase3short'] = 'Asettelu'; $string['pleasegradetheassessment'] = 'Arvostele $a:n työn arviointi'; -$string['pleasemakeyourownassessment'] = 'Tee oma arviosi teoksesta $a:sta.
            Huomaa, että arviokaavake on alkujaan näytetty oppilaiden arvioiden kanssa.
            Tee kaikki muutosehdotukset, joita oletat tarvitsevasi ja sen jälkeen klikkaa yhteen
            napeista, jotka ovat sivun alareunassa. '; $string['pleasesubmityourwork'] = 'Palauta työsi käyttäen tätä lomaketta'; $string['pleaseusethisform'] = 'Täytä tämän lomakkeen tiedot, kun olet
            lukenut alla olevan oppimistehtävän ohjeet.'; $string['pleaseviewtheexercise'] = 'Katso oppimistehtävää klikkaamalla sen otsikkoa. @@ -116,8 +99,7 @@ $string['poor'] = 'Heikkotasoinen'; $string['present'] = 'Nykyinen'; $string['reasonforadjustment'] = 'Tarkennuksen syy'; $string['reassess'] = 'Uudelleen arviointi'; -$string['regradestudentassessments'] = 'Arvostele oppilas arviot uudelleen'; -$string['resubmissionfor'] = '$a:n palautus uudelleen'; +$string['resubmissionfor'] = 'a$:n palautus uudelleen'; $string['resubmitnote'] = '* tarkoitaa, että a$:lla on lupa palauttaa tämä uudelleen.
            Tämä asetus voidaan antaa mille tahansa palautukselle arvioimalla se uudelleen ja klikkaamalla
            Salli $a:n uudelleenpalautukset-painiketta.
            jossakin heidän palautuksistaan.'; $string['rubric'] = 'Otsikko'; $string['savedok'] = 'Tallennettu'; @@ -135,8 +117,6 @@ $string['scalegood3'] = '3 pistett $string['scalepresent'] = '2 pistettä, asteikko Osallistunut/Ei osallistunut'; $string['scaleyes'] = '2 pistettä, asteikko Kyllä/Ei'; $string['specimenassessmentform'] = 'Arvioinnin mallilomake'; -$string['standarddeviation'] = 'Normipoikkeavuus'; -$string['strict'] = 'tiukka'; $string['studentallowedtoresubmit'] = 'Salli $a:n uudelleenpalautukset'; $string['studentassessments'] = '$a arvostelut'; $string['studentnotallowed'] = '$a EI voi palauttaa uudelleen (tai palautusta ei tarvita)'; @@ -159,16 +139,12 @@ $string['thereisfeedbackfromthe'] = 'Palautetta $a:lta'; $string['thisisaresubmission'] = 'Tämä on a$:n palautus uudelleen.
            Uuden palautuksen katsomisen jälkeen päivitä tämä arviointi
            ja klikkaa yhtä sivun alalaidan painikkeista.'; $string['title'] = 'Otsikko'; $string['typeofscale'] = 'Asteikon tyyppi'; -$string['unassessed'] = '$a arvioimatonta'; $string['ungradedstudentassessments'] = '$a arvioimatonta oppilasarviointia'; -$string['usemaximum'] = 'Käytä suurinta'; +$string['usemaximum'] = 'Käytä maksimi'; $string['usemean'] = 'Käytä keskiarvoa'; -$string['usepassword'] = 'käytä salasanaa'; -$string['verylax'] = 'erittäin rento'; $string['verypoor'] = 'Erittäin heikkotasoinen'; -$string['verystrict'] = 'erittäin tiukka'; -$string['view'] = 'Näytä'; -$string['viewteacherassessment'] = 'Näytä $a :n arvio.'; +$string['view'] = 'Katsele'; +$string['viewassessment'] = 'Katsele arviointeja'; $string['warningonamendingelements'] = 'VAROITUS: Palautettuja arviointeja ei ole.
            ÄLÄ muuta arvosteluperusteiden määrää, asteikkotyyppejä tai arvosteluperusteiden painoarvoja.'; $string['weightederrorcount'] = 'Painotettu virheiden määrä'; $string['weightforgradingofassessments'] = 'Arviointien arvostelun painoarvo'; @@ -176,7 +152,6 @@ $string['weightforteacherassessments'] = '$a arviointien painoarvo'; $string['weights'] = 'Painoarvot'; $string['weightssaved'] = 'Painoarvot tallennettu'; $string['weightsusedforoverallgrade'] = 'Kokonaisarvosanaa varten käytetyt painoarvot'; -$string['wrongpassword'] = 'väärä salasana tälle harjoitukselle'; $string['yourassessment'] = 'Sinun arviointisi'; $string['yourfeedbackgoeshere'] = 'Palautteesi tänne'; $string['yoursubmission'] = 'Palautuksesi'; diff --git a/lang/fi/forum.php b/lang/fi/forum.php index f251027e5f5..df4375ffb12 100644 --- a/lang/fi/forum.php +++ b/lang/fi/forum.php @@ -1,5 +1,5 @@ name - $a->date'; $string['configdisplaymode'] = 'Oletusasetus keskustelujen näyttämiselle, jos sellaista ei ole asetettu.'; -$string['configenablerssfeeds'] = 'Tämä mahdollistaa RSS-syötteet eri keskustelualueilta. Sinun pitää vielä erikseen kytkeä RSS päälle niiden keskustelualueiden asetuksesta, joille haluat käyttää RSS-syötteitä.'; -$string['configlongpost'] = 'Tätä pitemmät keskustelut käsitellään pitkinä (HTML koodia ei lasketa mukaan).'; +$string['configenablerssfeeds'] = 'Tämä mahdollistaa RSS syötteet eri keskustelualueilta. Sinun pitää vielä erikseen kytkeä RSS päälle niiden keskustelualueiden asetuksesta jolla haluat käyttää RSS syötteitä.'; +$string['configlongpost'] = 'Tätä pitemmät keskustelut ovat pitkiä (HTML koodia ei lasketa mukaan).'; $string['configmanydiscussions'] = 'Samalla sivulla näytettävien keskustelujen suurin määrä'; $string['configmaxbytes'] = 'Oletusasetus liitetiedoston maksimikoolle koko sivustolla.'; -$string['configreplytouser'] = 'Kun foorumiposti on lähetetty, pitäisikö sen sisältää käyttäjien sähköpostiosoite, jotta vastaanottajat voisivat vastata henkilökohtaisesti ennemmin kuin foorumin kautta? Vaikka asetukseksi valittaisiin kyllä, käyttäjät voivat valita profiilissaan pitävänsä sähköpostiosoitteensa salaisena.'; $string['configshortpost'] = 'Tätä lyhyemmät keskustelut ovat lyhyitä (HTML koodia ei lasketa mukaan).'; $string['couldnotadd'] = 'Viestiäsi ei voida lisätä tuntemattoman virheen takia.'; $string['couldnotdeleteratings'] = 'Valitettavasti viestiä ei voida poistaa, koska se on jo arvioitu'; @@ -43,7 +42,6 @@ $string['editing'] = 'Muokataan'; $string['emptymessage'] = 'Jotain oli vialla viestissäsi. Ehkä jätit viestisi tyhjäksi tai liitetiedosto oli liian suuri. Muutoksiasi EI tallennettu.'; $string['everyonecanchoose'] = 'Kaikki voivat tilata tämän keskustelualueen'; $string['everyoneissubscribed'] = 'Kaikki tilaavat tämän keskustelualueen'; -$string['existingsubscribers'] = 'Nykyiset tilaajat'; $string['forcesubscribe'] = 'Pakota kaikki tilaajiksi'; $string['forcesubscribeq'] = 'Pakota kaikki tilaajiksi?'; $string['forum'] = 'Keskustelualue'; @@ -59,8 +57,6 @@ $string['introsocial'] = 'Avoin keskustelualue vapaalle keskustelulle'; $string['introteacher'] = 'Opettajien oma keskustelualue'; $string['lastpost'] = 'Viimeisin viesti'; $string['learningforums'] = 'Keskustelualueet opiskelulle'; -$string['markread'] = 'Merkitse luetuksi'; -$string['markunread'] = 'Merkitse lukemattomaksi'; $string['maxattachmentsize'] = 'Liitteen maksimikoko'; $string['maxtimehaspassed'] = 'Valitettavasti suurin sallittu muokkausaika on ylittynyt tämän ($a) viestin osalta!'; $string['message'] = 'Viesti'; @@ -93,7 +89,7 @@ $string['openmode1'] = 'Ei keskusteluja, mutta vastaaminen sallitaan'; $string['openmode2'] = 'Keskustelut ja vastaukset sallitaan'; $string['parent'] = 'Naytä aiempi'; $string['parentofthispost'] = 'Tämän viestin alku'; -$string['postadded'] = '

            Viestisi on lisätty.

            Sinulla $a aikaa muokata viestiä jos haluat muuttaa sitä.

            '; +$string['postadded'] = 'Viestisi on lisätty.

            Sinulla $a aikaa muokata viestiä jos haluat muuttaa sitä.'; $string['postincontext'] = 'Katso tätä viestiä asiayhteydessään'; $string['postmailinfo'] = 'Tämä on kopio viestistä sivustolla $a. Lisätäksesi vastauksen viestiin suoraan sivustolle, klikkaa seuraavaa linkkiä:'; @@ -103,7 +99,6 @@ $string['postrating3'] = 'Suurimmaksi osaksi sosiaalista osaamista'; $string['posts'] = 'Viestit'; $string['posttoforum'] = 'Lähetä viesti'; $string['postupdated'] = 'Viestisi on päivitetty'; -$string['potentialsubscribers'] = 'Mahdolliset tilaajat'; $string['processingdigest'] = 'Kerätään viestejä käyttäjälle $a'; $string['processingpost'] = 'Käsitellään viestiä $a'; $string['prune'] = 'Jaa'; @@ -127,10 +122,10 @@ $string['repliesmany'] = '$a vastausta t $string['repliesone'] = '$a vastaus tähän mennessä'; $string['reply'] = 'Vastaa'; $string['replyforum'] = 'Vastaa keskustelualueelle'; -$string['rsssubscriberssdiscussions'] = 'Näytä alueen \"$a\" keskusteluiden RSS-syöte'; -$string['rsssubscriberssposts'] = 'Näytä alueen \"$a\" viestien RSS-syöte'; +$string['rsssubscriberssdiscussions'] = 'Näytä RSS syöte $a keskusteluille'; +$string['rsssubscriberssposts'] = 'Näytä RSS syöte $a viesteille'; $string['search'] = 'Etsi'; -$string['searchforums'] = 'Etsi viesteistä'; +$string['searchforums'] = 'Etsi keskustelualueilta'; $string['searcholderposts'] = 'Selaa vanhoja viestejä'; $string['searchresults'] = 'Haun tulokset'; $string['sendinratings'] = 'Lähetä viimeisimmät arvioinnit viesteistä'; @@ -151,8 +146,6 @@ $string['subscriptions'] = 'Tilaukset'; $string['unsubscribe'] = 'Peru tämän keskustelualueen tilaus'; $string['unsubscribed'] = 'Tilaamaton'; $string['unsubscribeshort'] = 'Peru tilaus'; -$string['yesforever'] = 'Kyllä, pysyvästi'; -$string['yesinitially'] = 'Kyllä, aluksi'; $string['youratedthis'] = 'Arvioit tämän'; $string['yournewtopic'] = 'Uusi keskustelun aihe'; $string['yourreply'] = 'Vastauksesi'; diff --git a/lang/fi/glossary.php b/lang/fi/glossary.php index ee333cce3fb..f7e5caeb0eb 100644 --- a/lang/fi/glossary.php +++ b/lang/fi/glossary.php @@ -1,5 +1,5 @@ Käsite ja määritelmä ovat pakollisia kenttiä.'; $string['explainall'] = 'Näytä kaikki tietueet yhdellä sivulla'; @@ -102,7 +99,7 @@ $string['exporttomainglossary'] = 'Vie p $string['filetoimport'] = 'Tuontitiedosto'; $string['fillfields'] = 'Käsite ja määritelmä ovat pakollisia kenttiä.'; $string['filtername'] = 'Sanaston automaattinen linkitys'; -$string['fullmatch'] = 'Vain täydet sanat '; +$string['fullmatch'] = 'Hae vain kokonaisia sanoja'; $string['globalglossary'] = 'Yleinen sanasto'; $string['glossaryleveldefaultsettings'] = 'Sanastojen oletusasetukset'; $string['glossarytype'] = 'Sanaston tyyppi'; @@ -114,7 +111,7 @@ $string['importentries'] = 'Tuo tietueita'; $string['isglobal'] = 'Globaali sanasto?'; $string['linkcategory'] = 'Linkitä tämä kategoria automaattisesti'; $string['mainglossary'] = 'Pääsanasto'; -$string['maxtimehaspassed'] = 'Kommentin ($a) sallittu muokkausaika on ylittynyt.'; +$string['maxtimehaspassed'] = 'Tämän kommentin ($a) sallittu muokkausaika ylittynyt.'; $string['modulename'] = 'Sanasto'; $string['modulenameplural'] = 'Sanastot'; $string['newentries'] = 'Uudet sanaston tietueet'; @@ -130,7 +127,6 @@ $string['notcategorised'] = 'Kategorisoimaton'; $string['numberofentries'] = 'Hakusanojen lukumäärä'; $string['onebyline'] = '(yksi riviä kohden)'; $string['printerfriendly'] = 'Tulostukseen soveltuva versio'; -$string['printviewnotallowed'] = 'Tulostusnäkymä ei ole sallittu'; $string['question'] = 'Kysymys'; $string['rate'] = 'Arvo'; $string['rating'] = 'Arvio'; @@ -147,10 +143,10 @@ $string['rsssubscriberss'] = 'N $string['searchindefinition'] = 'Vapaatekstihaku'; $string['secondaryglossary'] = 'Toissijainen sanasto'; $string['sendinratings'] = 'Lähetä viimeisimmät arvioni'; -$string['showall'] = 'Näytä \'Kaikki\''; -$string['showalphabet'] = 'Näytä aakkosittain'; -$string['showspecial'] = 'Näytä \'Erikoiset\''; -$string['sortby'] = 'Lajittele...'; +$string['showall'] = 'Näytä linkki \'Kaikki\''; +$string['showalphabet'] = 'Näytä akkosittain'; +$string['showspecial'] = 'Näytä linkki \'Erikoiset\''; +$string['sortby'] = 'Lajittele'; $string['sortbycreation'] = 'Luontipäiväyksen mukaan'; $string['sortbylastupdate'] = 'Viimeisen päivityksen mukaan'; $string['sortchronogically'] = 'Lajittele kronologisesti'; @@ -161,8 +157,6 @@ $string['totalentries'] = 'Hakusanojen kokonaism $string['usedynalink'] = 'Linkitä sanaston tietueet automaattisesti'; $string['waitingapproval'] = 'Odotetaan hyväksyntää'; $string['warningstudentcapost'] = '(Soveltuu vain jos sanasto ei ole pääsanasto)'; -$string['withauthor'] = 'Käsitteet kirjoittajineen'; -$string['withoutauthor'] = 'Käsitteet ilman kirjoittajaa'; $string['writtenby'] = 'kirjoittanut'; $string['youarenottheauthor'] = 'Et ole kommentin kirjoittaja, joten et voi muokata sitä.'; diff --git a/lang/fi/help/assignment/emailteachers.html b/lang/fi/help/assignment/emailteachers.html deleted file mode 100644 index cb2e9dae4dc..00000000000 --- a/lang/fi/help/assignment/emailteachers.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Lähetä ilmoitus opettajille

            - -

            Jos tämä toiminto on aktiivinen, saavat kaikki opettajat ilmoituksen kun opiskelija lähettää tai muuttaa vastaustaan .

            - -

            Vain opettajat jotka voivat arvioida ko. tehtävän saavat nämä ilmoitukset.

            \ No newline at end of file diff --git a/lang/fi/help/assignment/index.html b/lang/fi/help/assignment/index.html deleted file mode 100644 index 3c529f03a7d..00000000000 --- a/lang/fi/help/assignment/index.html +++ /dev/null @@ -1,9 +0,0 @@ -

            Tehtävät

            - - \ No newline at end of file diff --git a/lang/fi/help/assignment/mods.html b/lang/fi/help/assignment/mods.html deleted file mode 100644 index 3ee1c4013b1..00000000000 --- a/lang/fi/help/assignment/mods.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Tehtävä

            -
              -

              Tehtävässä opiskelija valmistaa digitaalisen tiedoston opettajan ohjeiden mukaan ja palutaa sen palvelimelle. Tyypillisiä tehtäviä ovat esseet, proketit, raportit jne... Palautetut voidaa arvioida.

              -
            \ No newline at end of file diff --git a/lang/fi/help/assignment/resubmit.html b/lang/fi/help/assignment/resubmit.html index 2e0e5957ea7..3b811cff021 100644 --- a/lang/fi/help/assignment/resubmit.html +++ b/lang/fi/help/assignment/resubmit.html @@ -1,4 +1,4 @@ -

            Tehtävien uudelleenlähettäminen

            -

            Oletuksena on, että opiskelijat eivät voi uudelleenlähettää tehtäviä sen jälkeen kun opettaja on arvioinut ne.

            -

            Jos käytät tätä valintaa, opiskelijat voivat uudelleenlähettää tehtäviänsä arvioinnin jälkeen (uudelleenarvioitavaksi). Tästä voi olla hyötyä, kun halutaan rohkaista opiskelijoita tekemään parempaa työtä toiston avulla.

            -

            Tämä valintaa ei tietenkään voi käyttää offline-tehtävissä.

            \ No newline at end of file +

            Tehtävien uudelleenlähettäminen

            +

            Oletuksena on, että opiskelijat eivät voi uudelleenlähettää tehtäviä sen jälkeen kun opettaja on arvioinut ne.

            +

            Jos käytät tätä valintaa, opiskelijat voivat uudelleenlähettää tehtäviänsä arvioinnin jälkeen (uudelleenarvioitavaksi). Tästä voi olla hyötyä, kun halutaan rohkaista opiskelijoita tekemään parempaa työtä toiston avulla.

            +

            Tämä valintaa ei tietenkään kannata käyttää offline-tehtävissä.

            \ No newline at end of file diff --git a/lang/fi/help/attendance/autoattend.html b/lang/fi/help/attendance/autoattend.html deleted file mode 100644 index a34c55e28cd..00000000000 --- a/lang/fi/help/attendance/autoattend.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Automaattinen läsnäolon seuranta

            - -

            Tämä vaihtoehto määrittää opiskelijoiden läsnäolon seuraamalaa heidän aktiiisuuttaan kurssilla kyseisenä päivänä.

            \ No newline at end of file diff --git a/lang/fi/help/attendance/choosedays.html b/lang/fi/help/attendance/choosedays.html deleted file mode 100644 index 4661ba15bf3..00000000000 --- a/lang/fi/help/attendance/choosedays.html +++ /dev/null @@ -1,2 +0,0 @@ -

            Päivät joilta läsnäoloja seurataan

            -

            Kun asetat useita läsnäololistoja, lista luodaan aina jokaiselle viikonpäivälle joka tässä luettelossa on merkitty. Esimerkiksi, jos haluat näyttää kaikkien tiistai ja torstai päivien läsnäolot, merkitse "Ti" ja "To" laatikot ja jätä muut merkitsemättä.

            \ No newline at end of file diff --git a/lang/fi/help/attendance/dynsection.html b/lang/fi/help/attendance/dynsection.html deleted file mode 100644 index 37b94566384..00000000000 --- a/lang/fi/help/attendance/dynsection.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Määritä läsnäololistan sijainti kursilla päivämäärän mukaan.

            -

            Määritä läsnäololistan sijainti kursilla päivämäärän mukaan.

            -

            Siirrä läsnäololistaa automaattisesti viikosta toiseen sen päivämäärän mukaan. Jos valitset tämän, läsnäololista siirtää itsensä automaattisesti menossa olevaan viikkoon kun tallennat muutokset.

            -

            Tämä valinta koskee vain viikkomuotoisia kursseja.

            \ No newline at end of file diff --git a/lang/fi/help/attendance/grade.html b/lang/fi/help/attendance/grade.html deleted file mode 100644 index 7e498c8b3e3..00000000000 --- a/lang/fi/help/attendance/grade.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Läsnäololistan arvostelu

            -

            Tämän avulla voit arvioida läsnäololistan lineaarisella asteikolla. Prosentuaalinen määrä jonka opiskelija on ollut paikalla kurssilla, lisätään arvosanaksi kurssin kokonaisarvioitiin. Myöhästymiset otetaan myös huomioon laskuissa ja arvostellaan: "myöhästymisten määrä joka vastaa poissaoloa" asetuksen kautta moduulille.

            -

            Tämä toiminto ei toimi kovin hyvin jos automaattinen läsnäolon tarkkailu on päällä, koska tällä hetkellä ei oppilaan ole mahdollista olla osittain paikalla kurssilla. Annettuna päivänä opiskelija on joko 100% poissa, tai 100% paikalla.

            \ No newline at end of file diff --git a/lang/fi/help/attendance/hours.html b/lang/fi/help/attendance/hours.html deleted file mode 100644 index 6240d6b360b..00000000000 --- a/lang/fi/help/attendance/hours.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Tuntien määrä opetuskokonaisuudessa

            -

            Kertoo kuinka monta tuntia opetuskokoneisuudessa on. Läsnäolo merkitään yksittäin joka oppitunnille. Et voi määrittää osittaisia tunteja.

            -

            Tällä valinnalla ei ole hirveästi merkitystä automaattisen läsnäolon seuraamiseen.

            \ No newline at end of file diff --git a/lang/fi/help/attendance/index.html b/lang/fi/help/attendance/index.html deleted file mode 100644 index 0d1ba5d958b..00000000000 --- a/lang/fi/help/attendance/index.html +++ /dev/null @@ -1,9 +0,0 @@ -

            Läsnäolo

            - - \ No newline at end of file diff --git a/lang/fi/help/attendance/maxgrade.html b/lang/fi/help/attendance/maxgrade.html deleted file mode 100644 index a4bc9ae5cd5..00000000000 --- a/lang/fi/help/attendance/maxgrade.html +++ /dev/null @@ -1,2 +0,0 @@ -

            Suurin arvosana täydelle läsnäololle

            -

            Tämä määrittää kuinka suuren arvosanan saa täydestä läsnäolosta kurssilla. Arvosana muodostuu lineaarisesti suhteessa läsnäoloon. Arvosana nolla (0) merkitään täydelliseksi poissaoloksi.

            \ No newline at end of file diff --git a/lang/fi/help/attendance/mods.html b/lang/fi/help/attendance/mods.html deleted file mode 100644 index 0e033c1827e..00000000000 --- a/lang/fi/help/attendance/mods.html +++ /dev/null @@ -1,2 +0,0 @@ -

            Läsnäolo

            -

            Tämä moduuli antaa sinulle mahdollisuuden tarkkailla osallistujien läsnäoloja sivulla tai verkossa olevilla tapahtumilla Läsnäolo voidaan kirjata ylös käsin kurssin opettajan toimesta, tai automaattisesti perustuen osallistujien aktiivisuuteen 24 tunnin sisällä.

            \ No newline at end of file diff --git a/lang/fi/help/chat/chatting.html b/lang/fi/help/chat/chatting.html deleted file mode 100644 index 2f4789b98c1..00000000000 --- a/lang/fi/help/chat/chatting.html +++ /dev/null @@ -1,21 +0,0 @@ -

            Chatin käyttäminen

            -

            Chat-moduuli sisältää ominaisuuksia joilla keskusteleminen saadaan mukavammaksi.

            -

            Hymiöt

            -

            Mitkä tahansa hymiöt jotka voit kirjoittaa muualla moodlessa, voidaan kirjoitaa täällä samoin ja ne näytetään oikein. Esimerkiksi: :-) =

            -
            -
            Linkit
            -
            - -

            Internetosoiteet muunnetaan linkeiksi automaattisesti

            -
            -
            Tunteilu
            -
            -

            Voit aloittaa rivin "/me" tai ":" tunteillaksesi. Tällä voit kuvaila tekemisisäsi ja tunnetilojasi siten että se erottuu muun tekstin joukosta. Jos nimesi on Pekka ja kirjoitat "/me nauraa!" Tulee chattiin rivi "Pekka nauraa!"

            -
            -
            Kutsut
            -
            -

            Voit lähettää muille kutsumisäänen painamalla "kutsu" linkkiä heidän nimensä vieressä. Voit kutsua kaikkia helposti kirjoittamalla: "beeb all".

            -
            -
            HTML
            -
            Jos osaat HTML-koodausta voit värittää tekstejäsi, lisätä kuvia yms...
            -
            \ No newline at end of file diff --git a/lang/fi/help/chat/index.html b/lang/fi/help/chat/index.html deleted file mode 100644 index 3a17d42ea80..00000000000 --- a/lang/fi/help/chat/index.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Chat moduuli

            - \ No newline at end of file diff --git a/lang/fi/help/chat/mods.html b/lang/fi/help/chat/mods.html deleted file mode 100644 index 2249d9e7cca..00000000000 --- a/lang/fi/help/chat/mods.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Chat eli reaaliaikainen keskustelu

            -

            Chat-moduuli antaa osallistujien käydä reaaliaikaista keskustelua verkon ylitse. Tämä on hyvä tapa oppia ymmärtämään toisiaan ja aihetta josta keskustellaan. Chat huoneiden käytäminen poikkeaa paljon keskustelualueesta jolla keskustelu on viiveellistä. Chat moduuli sisältää ominaisuuksia keskustelunaiheiden hallintaan ja näyttämiseen.

            -
              -

              -
            \ No newline at end of file diff --git a/lang/fi/help/choice/index.html b/lang/fi/help/choice/index.html deleted file mode 100644 index 4d7212e0a75..00000000000 --- a/lang/fi/help/choice/index.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Valinnat

            - \ No newline at end of file diff --git a/lang/fi/help/choice/mods.html b/lang/fi/help/choice/mods.html deleted file mode 100644 index e610f3f1d8f..00000000000 --- a/lang/fi/help/choice/mods.html +++ /dev/null @@ -1,2 +0,0 @@ -

            Valinta

            -

            Valinta on yksinkertainen moduuli: opettaja tekee kysymyksen ja antaa siihen useita vastausvaihtoehtoja. Se voi toimia kyselynä, jolla selvitetään oppilaiden ajatuksia sen hetkisestä aiheesta, antaa luokan äänestää kurssin suuntauksesta, tai kerätä tutkimustietoa.

            \ No newline at end of file diff --git a/lang/fi/help/choice/options.html b/lang/fi/help/choice/options.html index 0081358d797..41777f8e52c 100644 --- a/lang/fi/help/choice/options.html +++ b/lang/fi/help/choice/options.html @@ -1,4 +1,5 @@ -

            Valinnan vaihtoehdot

            +

            Monivalintavaihtoehdot

            Täällä määrittelet vaihtoehdot, joista kurssilaiset voivat valita vastauksensa.

            -

            Voit täyttää näistä niin monta kuin haluat: voit myös jättää joitain kohtia tyhjäksi, jos et tarvitse kaikkia kuutta vaihtoehtoa.

            \ No newline at end of file +

            Voit täyttää näistä niin monta kuin haluat: voit myös jättää joitain kohtia tyhjäksi, jos et tarvitse kaikkia 6 vaihtoehtoa.

            + diff --git a/lang/fi/help/choice/timerestrict.html b/lang/fi/help/choice/timerestrict.html deleted file mode 100644 index 48790d73dbc..00000000000 --- a/lang/fi/help/choice/timerestrict.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Rajoita vastausaika

            -

            Tämän avulla voit määrittää aikarajan minkä sisällä osallistujat saavat tehdä valintansa.

            -

            Voit asettaa avoimen päättymishetken asettamalla ajan kauas tulevaisuuteen.

            -

            Jos et tarvitse tätä lainkaan, poista laatikosta rasti.

            \ No newline at end of file diff --git a/lang/fi/help/cookies.html b/lang/fi/help/cookies.html index 8bd74732e79..5d1777b41d8 100644 --- a/lang/fi/help/cookies.html +++ b/lang/fi/help/cookies.html @@ -1,5 +1,6 @@ -

            Evästeet

            -

            Tämä sivusto käyttää kahta evästettä.

            -

            Oleellisin on istuntoeväste, jota yleensä kutsutaan MoodleSession:iksi. Sinun täytyy sallia tämä eväste selaimessasi saadaksesi istuntosi säilymään ja ylläpitääksesi kirjautumista sivulta sivulle. Kun kirjaudut ulos tai suljet selaimen, tämä eväste tuhoutuu selaimessasi ja palvelimella.

            - -

            Toinen eväste on vain käytännöllisyyden vuoksi, sitä kutsutaan esimerkiksi MOODLEID:ksi. Se muistaa käyttäjänimesi selaimen sisällä. Tämä tarkoittaa sitä, että kun palaat tälle sivustolle, käyttäjänimi kenttä sisäänkirjautumissivulla on jo valmiiksi täytetty sinua varten. On turvallista kieltäytyä tästä evästeestä - sinun vain täytyy kirjoittaa käyttäjänimesi joka kerta kun kirjaudut sisään.

            \ No newline at end of file +

            Evästeet

            +

            Tämä sivusto käyttää kahta evästettä.

            +

            Oleellisin on istuntoeväste, jota yleensä kutsutaan MoodleSession: iksi. Sinun täytyy sallia tämä eväste selaimessasi saadaksesi jatkuvuutta ja ylläpitääksesi kirjautumista sivulta sivulle. Kun kirjaudut ulos tai suljet selaimen, tämä eväste tuhoutuu(selaimessasi ja palvelimella).

            + +

            Toinen eväste on vain käytännöllisyyden vuoksi, sitä yleensä kutsutaan esimerkiksi MOODLEID:ksi. Se muistaa käyttäjänimesi selaimen sisällä. Tämä tarkoittaa sitä, että kun palaat tälle sivustolle, käyttäjänimi kenttä sisäänkirjautumissivulla on jo valmiiksi täytetty sinua varten. On turvallista kieltäytyä tästä evästeestä - sinun vain täytyy kirjoittaa käyttäjänimesi joka kerta kun kirjaudut sisään.

            + diff --git a/lang/fi/help/courseavailability.html b/lang/fi/help/courseavailability.html index d44355a2266..1fbd8df7997 100644 --- a/lang/fi/help/courseavailability.html +++ b/lang/fi/help/courseavailability.html @@ -1,4 +1,4 @@ -

            Kurssin saatavuus

            +

            Kurssin käytettävyys

            Tämä vaihtoehto sallii sinun "piilottaa" kurssisi kokonaan.

            diff --git a/lang/fi/help/courseformats.html b/lang/fi/help/courseformats.html index c1ed733ada2..e9e64c0a041 100644 --- a/lang/fi/help/courseformats.html +++ b/lang/fi/help/courseformats.html @@ -1,16 +1,16 @@ -

            Moodlen kurssimuodot

            +

            Moodle -kurssimuodot

            -

            Viikko

            +

            Viikkomuoto

              -

              Kurssi muodostuu perättäisistä viikoista, ja sillä on selkeä alkamis- ja loppumispäivämäärä. Jokainen viikko muodostuu erilaisista aktiviteeteista ja resursseista. Joillain niistä, esim. lyhyttehtävillä voi olla rajattu aukioloaika vaikkapa kahden viikon ajan, jonka jälkeen ne eivät ole enää saatavilla.

              +

              Kurssi muodostuu perättäisistä viikoista, ja sillä on selkeä alkamis- ja loppumispäivämäärä. Jokainen viikko muodostuu erilaisista aktiviteeteista. Joillain niistä, esim. lyhyttehtävillä voi olla rajattu aukioloaika vaikkapa kahden viikon ajan, jonka jälkeen ne eivät ole enää saatavilla.

            -

            Aiheet

            +

            Aihemuoto

              -

              Hyvin samanlainen kuin viikkomuoto paitsi että nyt jokaista "viikkoa" kutsutaan nimellä "aihe". "Aihe" ei ole rajoittunut tiettyyn aikaan. Sinun ei tarvitse määritellä tarkkoja kurssipäivämääriä. Tämä on monesti käytetyin kurssimuoto.

              +

              Hyvin samanlainen kuin viikkomuoto paitsi että nyt jokaista "viikkoa" kutsutaan nimellä "aihe". "Aihe" ei ole rajoittunut tiettyyn aikaan. Sinun ei tarvitse määritellä tarkkoja kurssipäivämääriä.

            -

            Keskustelu

            +

            Keskustelumuoto

              Tämä muoto keskittyy yhden pääfoorumin, Keskustelufoorumin ympärille, joka näkyy pääsivun luettelossa. Keskustelumuoto on käytännöllinen vapaampimuotoisissa tilanteissa, joiden ei välttämättä tarvitse olla kursseja. Tämä muoto soveltuu käytettäväksi esimerkiksi osaston ilmoitustauluna.

            diff --git a/lang/fi/help/coursegrades.html b/lang/fi/help/coursegrades.html index 734690325e8..e38b708cb13 100644 --- a/lang/fi/help/coursegrades.html +++ b/lang/fi/help/coursegrades.html @@ -1,7 +1,7 @@ -

            Arvoinnit

            - -

            Monet aktiviteeteista sallivat arvoinnin.

            - -

            Oletuksena kurssin kaikkien aktiviteettien arvoinnit ovat nähtävissä Arvioinnit-sivulla, joka avautuu kurssin etusivulta.

            - -

            Jos opettaja ei halua käyttää arviointia kurssilla, tai haluaa piilottaa arvoioinnin opiskelijoilta, niiden näkymisen voi estää kurssin asetuksissa. Tämä ei estä yksittäisiä tapahtumia käyttämästä tai asettamasta arvosanoja, se vain estää niiden näkymisen opiskelijoille.

            \ No newline at end of file +

            Arvosanat

            + +

            Monet toiminnoista sallivat arvosanojen asetuksen.

            + +

            Oletuksena kaikkien arvosanojen tulokset kurssin sisällä ovat nähtävissä Arvosana sivulla, joka avautuu pää kurssisivulta.

            + +

            Jos opettaja ei halua käyttää arvosanoja kurssilla, tai haluaa piilottaa ne opiskelijoilta, niiden näkymisen voi estää kurssin asetuksissa.Tämä ei estä yksittäisiä toimintoja käyttämästä tai asettamasta arvosanoja, se vain estää niiden näkymisen opiskelijoille.

            diff --git a/lang/fi/help/coursehiddensections.html b/lang/fi/help/coursehiddensections.html index f3f0a55031e..684c7094a2c 100644 --- a/lang/fi/help/coursehiddensections.html +++ b/lang/fi/help/coursehiddensections.html @@ -1,6 +1,6 @@ -

            Kurssin piilotetut osiot

            +

            Kurssin piiloitetut osiot

            Tämä vaihtoehto sallii sinun päättää miten piilotetut osiot kurssillasi näkyvät opiskelijoille.

            -

            Oletuksena näytettään pieni alue (supistetussa muodossa, yleensä harmaana) viittauksena siitä missä piilotettu osio on. Vaikka he eivät silti näe piilotettuja toimintoja ja tekstejä. Tämä on erityisen käytännöllistä viikoittaisessa muodossa, jolloin viikot joilla ei ole luentoja, ovat tyhjiä.

            +

            Oletuksena pieni alue näytetään (supistetussa muodossa, yleensä harmaana) viittauksena siitä missä piilotettu osio on, vaikka he eivät silti näe piilotettuja toimintoja ja tekstejä. Tämä on erityisen käytännöllistä viikottaisessa formaatissa, jolloin viikot joilla ei ole luentoja, ovat tyhjiä.

            Jos haluat, nämä voivat olla myös kokonaan piilotettuja, jolloin opiskelijat eivät edes tiedä, että osioita kurssista on piilotettuina.

            diff --git a/lang/fi/help/courseidnumber.html b/lang/fi/help/courseidnumber.html index 7c23773f3ff..f51465918d1 100644 --- a/lang/fi/help/courseidnumber.html +++ b/lang/fi/help/courseidnumber.html @@ -1,3 +1,3 @@

            Kurssin tunnistenumero

            -

            Kurssin tunnistenumeroa käytetään vain, kun kurssia verrataan ulkoisiin järjestelmiiin. Sitä ei koskaan näytetä Moodlen sisällä. Jos sinulla on virallinen koodinimi tällä kurssille, käytä sitä täällä... Muuten voit jättää kohdan tyhjäksi.

            +

            Kurssin tunnistenumeroa käytetään vain, kun kurssia verrataan ulkoisiin järjestelmiin- sitä ei koskaan näytetä Moodlen sisällä. Jos sinulla on virallinen koodinimi tällä kurssille, käytä sitä täällä... Muuten voit jättää kohdan tyhjäksi.

            diff --git a/lang/fi/help/coursenewsitems.html b/lang/fi/help/coursenewsitems.html index 7f94db1d2d3..911a48b9843 100644 --- a/lang/fi/help/coursenewsitems.html +++ b/lang/fi/help/coursenewsitems.html @@ -1,8 +1,8 @@

            Kurssin uutisaiheet

            -

            Viikko- ja aihemuodoissa on erillinen Uutiset -niminen foorumi. Se tarjoaa hyvän mahdollisuuden lähettää viestejä kaikkien opiskelijoiden nähtäville. (Oletuksena kaikki opiskelijat tilaavat tähän foorumiin ja saavat tiedotuksesi sähköpostilla.)

            +

            Viikko- ja aihemuodoissa on erillinen Uutiset -niminen foorumi. Se tarjoaa hyvän mahdollisuuden lähettää viestejä kaikkien opiskelijoiden nähtäville. (Oletuksena on, että kaikki opiskelijat ovat kirjautuneet tähän foorumiin ja saavat tiedotuksesi sähköpostilla.)

            -

            Tämä asetus määrittää kuinka monta ajankohtaista uutista on näkyvillä kurssisi kotisivulla olevassa uutislokerossa.

            +

            Tämä asetus määrittää kuinka monta ajankohtaista uutista on näkyvillä kurssisi kotisivulla oikeassa yläkulmassa olevassa uutislokerossa.

            Jos asetat lukumääräksi "0 uutista", uutislokero ei tule lainkaan näkyviin.

            diff --git a/lang/fi/help/coursenumsections.html b/lang/fi/help/coursenumsections.html index c17c881115f..1cd561fba20 100644 --- a/lang/fi/help/coursenumsections.html +++ b/lang/fi/help/coursenumsections.html @@ -2,9 +2,9 @@

            Tätä asetusta käytetään vain viikko- ja aihe -kurssimuodoissa .

            -

            Viikot-muodossa se määrittelee kurssiviikkojen lukumäärän alkaen kurssin aloituspäivämäärästä.

            +

            "Viikkomuodossa" se määrittelee kurssiviikkojen lukumäärän alkaen kurssin aloituspäivämäärästä.

            -

            "Aiheet-muodossa se määrittelee kurssin aiheiden lukumäärän.

            +

            "Aihemuodossa" se määrittelee kurssin aiheiden lukumäärän.

            Nämä luvut määräävät kurssin etusivulla olevien "lokeroiden" lukumäärän.

            diff --git a/lang/fi/help/courserecent.html b/lang/fi/help/courserecent.html index 152ed271a5d..df6a3b1e402 100644 --- a/lang/fi/help/courserecent.html +++ b/lang/fi/help/courserecent.html @@ -1,5 +1,5 @@ -

            Viimeisimmät tapahtumat

            -

            Moodle voi näyttää "Viimeisimmät tapahtumat" kurssin kotisivulla.

            -

            Tässä on nähtävissä kaikki, mitä kurssilla on tapahtunut sen jälkeen kun opiskelija on viimeksi kirjautunut sisään kurssille, kuten uudet viestit, uudet käyttäjät, lyhyttehtävät jne.

            -

            On erittäin suositeltavaa, että käytät tätä ominaisuutta kurssillasi, koska se auttaa antamaan aktiivisen vaikutelman kurssista. Se että kurssilaiset tietävät, mitä toiset tekevät, edistää yhteistyöilmapiiriä.

            +

            Viimeaikaiset tapahtumat

            +

            Moodle voi näyttää "viimeaikaiset tapahtumat" kurssin kotisivulla. +

            Tässä on nähtävissä kaikki, mitä kurssilla on tapahtunut sen jälkeen kun opiskelija on viimeksi kirjautunut sisään kurssille, kuten uudet viestit, uudet käyttäjät, lyhyttehtävät jne. +

            On erittäin suositeltavaa, että käytät tätä ominaisuutta kurssillasi, koska se auttaa antamaan aktiivisen vaikutelman kurssista. Se että kurssilaiset tietävät, mitä toiset tekevät, edistää yhteistyöilmapiiriä.

            Erittäin laajoilla tai paljon käytetyillä kursseilla voi olla paras jättää tämä ominaisuus pois, koska se saattaa hidastaa kurssisivun latautumista.

            diff --git a/lang/fi/help/coursereports.html b/lang/fi/help/coursereports.html index 099551bb03a..f95bf0fcb73 100644 --- a/lang/fi/help/coursereports.html +++ b/lang/fi/help/coursereports.html @@ -1,6 +1,6 @@ -

            Tapahtumaraportit

            +

            Toiminta raportit

            -

            Tapahtumaraportit ovat saatavilla kaikille osallistujille, jotka näyttävät aktiivisuutensa kyseessä olevalla kurssilla. Samoin kuin listaukset heidän panoksistaan, nämä raportit sisältävät yksityiskohtaiset sisäänkirjautumislokit.

            -

            Opettajilla on aina pääsy näihin raportteihin, käyttämällä jokaisen henkilön profiilisivulla näkyvissä olevaa painiketta.

            -

            Opettaja kontrolloi opiskelijoiden pääsyä heidän omiin raportteihinsa kurssiasetusten kautta. Joillain kursseilla nämä raportit saattavat olla tärkeä työkalu oppilaalle jolla kuvastaa osallistumistaan ja esiintymistään verkkoympäristössä, mutta joillain kursseilla tämä ei ehkä ole tarpeellista.

            -

            Toinen syy tämän pois kytkemiselle voi olla, että raporttien tekeminen voi kuormittaa palvelinta liikaa. Suurille ja pitkille kursseille saattaa olla tehokkaampaa pitää se pois päältä.

            +

            Toiminta raportit ovat saatavilla kaikille osallistujille, jotka näyttävät aktiivisuutensa kyseessä olevalla kurssilla. Samoin kuin listaukset heidän panoksistaan, nämä raportit sisältävät yksityiskohtaiset sisäänkirjautumiset.

            +

            Opettajat pääsevät aina näihin raportteihin, käyttämällä jokaisen henkilön profiilisivulla näkyvissä olevaa painiketta.

            +

            Opettaja kontrolloi opiskelijoiden pääsyä heidän omiin raportteihinsa kurssi asetusten kautta. Joillain kursseilla nämä raportit saattavat olla tärkeä työkalu oppilaalle kuvastaa osallistumistaan ja esiintymistään verkkoympäristössä, mutta joillain kursseilla tämä ei ehkä ole tarpeellista.

            +

            Toinen syy tämän pois kytkemiselle on se, että raportti voi kuormittaa palvelinta raportin luomisen aikana. Suurille ja pitkille kurseille saattaa olla tehokkaampaa pitää se pois päältä.

            diff --git a/lang/fi/help/courseshortname.html b/lang/fi/help/courseshortname.html index 7817150d99c..1e86b976b7b 100644 --- a/lang/fi/help/courseshortname.html +++ b/lang/fi/help/courseshortname.html @@ -1,2 +1,2 @@ -

            Kurssin nimen lyhenne

            -

            Monet oppilaitokset käyttävät kursseistaan lyhenteitä, kuten BP102 tai COMMS. Jos sinulla ei vielä ole tällaista lyhennettä kurssillesi, keksi sellainen nyt. Sitä tullaan käyttämään monissa sellaisissa tilanteissa, joissa pitkä nimi on hankala, esim. sähköpostin aiherivillä.

            +

            Kurssin nimilyhenne

            +

            Monet oppilaitokset käyttävät kursseistaan lyhenteitä, kuten BP102 tai COMMS. Jos sinulla ei vielä ole tällaista lyhennettä kurssillesi, keksi sellainen nyt. Sitä tullaan käyttämään monissa sellaisissa tilanteissa, joissa pitkä nimi on hankala, esim. sähköpostin aiherivillä.

            \ No newline at end of file diff --git a/lang/fi/help/courseuploadsize.html b/lang/fi/help/courseuploadsize.html index bb33f7c0a53..804ce89ec39 100644 --- a/lang/fi/help/courseuploadsize.html +++ b/lang/fi/help/courseuploadsize.html @@ -1,4 +1,4 @@ -

            Kurssin suurin lähetyskoko

            +

            Course upload size

            -

            Tämä asetus määrittää suurimman koon tiedostolle, jonka opiskelija voi ladata tälle kurssille, ja se on rajattu sivuston laajuisten asetusten kautta ylläpitäjän taholta.

            -

            Voit myös rajoittaa lähetysten kokoa lisää jokaisen toimintamoduulin asetusten kautta erikseen.

            +

            Tämä asetus määrittää suurimman koon tiedostolle, jonka opiskelija voi ladata tälle kurssille, ja se on rajattu sivuston laajuisten asetusten kautta ylläpitäjän taholta. +

            On mahdollista rajoittaa lisää tätä kokoa asetusten kautta, jokaisen toimintamoduulin sisällä. diff --git a/lang/fi/help/dialogue/addsubject.html b/lang/fi/help/dialogue/addsubject.html index 2b1ba76ee9b..2d486c9d878 100644 --- a/lang/fi/help/dialogue/addsubject.html +++ b/lang/fi/help/dialogue/addsubject.html @@ -1,6 +1,8 @@

            Aiheiden lisääminen

            -

            Voit lisätä aiheen dialogiin käyttämällä tätä linkkiä. - Olisi hyvä aina antaa dialogille aihe, näin pidetään dialogi tarkoituksenmukaisena ja vastaukset on helpompi keskittää aiheeseen. +

            Voit lisätä aiheen vuoropuheluun käyttämällä tätä linkkiä. + Olisi hyvä aina antaa vuoropuhelulle aihe, näin pidetään vuoropuhelu + ajantasalla ja vastaukset on helpompi keskittää aiheeseen. Jos haluat vaihtaa aihetta, on parempi sulkea nykyinen vuoropuhelu - ja aloittaa täysin uusi vuoropuhelu uudella aiheella.

            \ No newline at end of file + ja aloittaa täysin uusi vuoropuhelu uudella aiheella.

            + diff --git a/lang/fi/help/dialogue/closedialogue.html b/lang/fi/help/dialogue/closedialogue.html index 39c6ed36c65..e59e06f8043 100644 --- a/lang/fi/help/dialogue/closedialogue.html +++ b/lang/fi/help/dialogue/closedialogue.html @@ -1,11 +1,12 @@ -

            Dialogin sulkeminen

            -

            Voit sulkea dialogin milloin tahansa. Dialogn sulkeminen -pysäyttää keskustelun ja poistaa dialogin aktiivisten dialogien listalta. -Tämä tarkoittaa, että kyseinen dialogi ei enää näy sivulla.

            +

            Vuoropuhelun sulkeminen

            +

            Voit sulkea vuoropuhelun milloin tahansa. Vuoropuhelun poistaminen +pysäyttää keskustelun ja poistaa vuoropuhelun aktiivisten vuoropuheluiden listalta. +Tämä tarkoittaa, että kyseinen vuoropuhelu ei enää näy sivulla.

            -

            Voit katsella suljettuja dialogeja, mutta et voi enää lisätä niihin mitään. - Suljetut dialogit poistetaan valintasi mukaan ja tämän jälkeen niitä ei voida +

            Voit katsella suljettuja vuoropuheluja, mutta et voi enää lisätä niihin mitään. + Suljetut vuoropuhelut poistetaan valintasi mukaan ja tämän jälkeen niitä ei voida enää katsella.

            -

            Jos suljet tämän dialogin, täytyy sinun aloittaa uusi dialogi jos - haluat jatkaa dialogia saman henkilön kanssa.

            \ No newline at end of file +

            Jos suljet tämän vuoropuhelun, täytyy sinun aloittaa uusi vuoropuhelu jos + haluat jatkaa keskustelua saman henkilön kanssa.

            + diff --git a/lang/fi/help/dialogue/deleteafter.html b/lang/fi/help/dialogue/deleteafter.html index d989bb18fc5..6409bcf648e 100644 --- a/lang/fi/help/dialogue/deleteafter.html +++ b/lang/fi/help/dialogue/deleteafter.html @@ -1,6 +1,8 @@ -

            Dielogien poisto

            +

            Poista vuoropuhelut

            Tällä valinnalla määritetään ajanjakso päivissä jonka - jälkeen suljetut dialogit poistetaan. Tämä asetus vaikuttaa - vain suljettuihin dialogeihin.

            + jälkeen suljetut vuoropuhelut poistetaan. Tämä asetus vaikuttaa + vain suljettuihin vuoropuheluihin.

            -

            Jos annat arvoksi 0, dialogeja ei poisteta koskaan.

            \ No newline at end of file +

            Jos annat arvoksi 0, vuoropuheluja ei poisteta koskaan.

            +

             

            + diff --git a/lang/fi/help/dialogue/dialoguetype.html b/lang/fi/help/dialogue/dialoguetype.html index d37d213ea00..4673637cdaf 100644 --- a/lang/fi/help/dialogue/dialoguetype.html +++ b/lang/fi/help/dialogue/dialoguetype.html @@ -1,21 +1,21 @@ -

            Dielogeja tyypit

            +

            Vuoropuheluiden tyypit

            Vuoropuheluilla on kolme tyyppiä.

            1. Opettaja opiskelijalle. - Tämä sallii dialogin opettajan ja opiskelijan välillä. - Dielogin voi aloittaa joko opettaja tai opiskelija. - Avaa dialogi-listassa opettajille näkyvät vain opiskelijat + Tämä sallii vuoropuhelut opettajan ja opiskelijan välillä. + Vuoropuhelun voi aloittaa joko opettaja tai opiskelija. + Avaa vuoropuhelu -listassa opettajille näkyvät vain opiskelijat ja opisekelijoille näkyvät vain opettajat.

            2. Opiskelija opiskelijalle. - Tämä sallii dialogit opiskelijoiden välillä. Opettajia ei - osallistu tällaiseen dialogiin ollenkaan.

            3. + Tämä sallii vuoropuhelut opiskelijoiden välillä. Opettajia ei + sisälly tällaiseen vuoropuheluun ollenkaan.

            4. Kaikki. - Kuka tahansa voi aloittaa dialogin kenenkä kurssilaisen kanssa tahansa.
              + Kuka tahansa voi aloittaa vuoropuhelun kenenkä tahansa kanssa kurssissa.
              Opettaja -> opettaja
              Opettaja -> opiskelija
              Opiskelija -> opettaja
              Opiskelija -> opiskelija

            5. -
            \ No newline at end of file + diff --git a/lang/fi/help/dialogue/index.html b/lang/fi/help/dialogue/index.html deleted file mode 100644 index bf24d4e56f1..00000000000 --- a/lang/fi/help/dialogue/index.html +++ /dev/null @@ -1,11 +0,0 @@ -

            Dialogit

            - - \ No newline at end of file diff --git a/lang/fi/help/dialogue/info.html b/lang/fi/help/dialogue/info.html index 57e0fd3df87..5bbafa18a3d 100644 --- a/lang/fi/help/dialogue/info.html +++ b/lang/fi/help/dialogue/info.html @@ -1,20 +1,22 @@ - Dialogit

            + Vuoropuhelut

            Tämä moduuli tuottaa yksinkertaisen kommunikointijärjestelmän kahden henkilön välille. - Opettaja voi aloittaa dialogin opiskelijan kanssa, opiskelija voi - aloittaa dialogin opettajan kanssa tai vaihtoehtoisesti opiskelija - voi aloittaa dialogin toisen opiskelijan kanssa. + Opettaja voi aloittaa vuoropuhelun opiskelijan kanssa, opiskelija voi + aloittaa vuoropuhelun opettajan kanssa tai vaihtoehtoisesti opiskelija + voi aloittaa vuoropuhelun toisen opiskelijan kanssa. Opettaja tai opiskelija voi osallistua useampaan avoinna olevaan - dialogiin milloin tahansa.

            + vuoropuheluun milloin tahansa.

            -

            Dialogissa voi olla rajaton määrä viestejä, - normaalisti keskustelu muodostuu vuorottaisista viesteistä. - Tämä muoto ei kuitenkaan ole pakotettu vaan kumpi tahansa dialogin osapuolista +

            Vuoropuhelussa voi olla rajaton määrä viestejä, + normaalisti "keskustelu" muodostuu peräkkäisistä vastauksista. + Tämä muoto ei kuitenkaan ole pakotettu vaan kumpi tahansa vuoropuhelun osapuolista voi lisätä viestejä milloin tahansa.

            -

            Dialogi voidaan sulkea milloin vain kumman tahansa osapuolen toimesta. - Suljettua Dialogia ei voida uudelleen avata. Kuitenkin, suljettua dialogia voidaan katsella jos sitä ei ole vielä poistettu.

            +

            Vuoropuhelu voidaan sulkea milloin vain kumman tahansa osapuolen toimesta. + Suljettua vuoropuhelua ei voida uudelleen avata. Kuitenkin, suljettua vuoropuhelua + voidaan katsella jos sitä ei ole vielä poistettu...

            -

            ... Suljetut dialogit ja niiden viestit poistetaan määrittelemäsi ajan +

            ... Suljetut vuoropuhelut ja niiden viestit poistetaan määrittelemäsi ajan kuluttua automaattisesti. Tämä aika määritetään vuoropuhelua luotaessa.

            -

            \ No newline at end of file +

             

            + diff --git a/lang/fi/help/dialogue/maildefault.html b/lang/fi/help/dialogue/maildefault.html index 349cedee918..0381b7409be 100644 --- a/lang/fi/help/dialogue/maildefault.html +++ b/lang/fi/help/dialogue/maildefault.html @@ -1,6 +1,7 @@ -

            Postitusasetus

            +

            Sähköpostioletus

            Tällä asetuksella määritetään lähetetäänkö lisätyt viestit automaattisesti vuoropuheluun osallistujien sähköpostiin.

            -

            Jos asetus on "Kyllä", niin lähetä viestit sähköpostiini valinta +

            Jos asetus on "Kyllä", niin lähetä viestit sähköpostiini valinta on automaattisesti valittuna. Muutoin valinta on pois päältä.

            -

            \ No newline at end of file +

             

            + diff --git a/lang/fi/help/dialogue/mods.html b/lang/fi/help/dialogue/mods.html index 093a0d748c9..d946fb3bfc3 100644 --- a/lang/fi/help/dialogue/mods.html +++ b/lang/fi/help/dialogue/mods.html @@ -1,9 +1,9 @@ - Dialogi

            + Vuoropuhelut

              Tämä moduuli tuottaa yksinkertaisen kommunikointijärjestelmän kahden henkilön välille. - Opettaja voi aloittaa dialogin opiskelijan kanssa, opiskelija voi - aloittaa dialogin opettajan kanssa tai vaihtoehtoisesti opiskelija - voi aloittaa dialogin toisen opiskelijan kanssa. + Opettaja voi aloittaa vuoropuhelun opiskelijan kanssa, opiskelija voi + aloittaa vuoropuhelun opettajan kanssa tai vaihtoehtoisesti opiskelija + voi aloittaa vuoropuhelun toisen opiskelijan kanssa. Opettaja tai opiskelija voi osallistua useampaan avoinna olevaan -dialogiin milloin tahansa.

              -
            \ No newline at end of file + vuoropuheluun milloin tahansa.

            + diff --git a/lang/fi/help/dialogue/multiple.html b/lang/fi/help/dialogue/multiple.html index abea59fb4ed..cfd0f470b29 100644 --- a/lang/fi/help/dialogue/multiple.html +++ b/lang/fi/help/dialogue/multiple.html @@ -1,9 +1,10 @@ -

            Useita dialogeja

            +

            Useat avoimet vuoropuhelut

            Tällä määrityksellä sallitaan henkilöiden avata useampia - dialogeja toisen henkilön kanssa. Oletusasetuksena on "ei", + vuoropuheluita toisen henkilön kanssa. Oletusasetuksena on "ei", mikä sallii vain yhden avoimen keskustelun kahden henkilön välillä.

            -

            Jos useat avoimet dialogit sallitaan, saattaa tästä koitua epätoivottuja ongelmia. - Joku voi "kiusata" toisia avaamalla useita turhia dialogeja.

            -

            \ No newline at end of file +

            Jos useat avoimet vuoropuhelut sallitaan, saattaa tästä koitua epätoivottuja ongelmia. + Joku voi "kiusata" toisia avaamalla useita turhia vuoropuheluita.

            +

             

            + diff --git a/lang/fi/help/directorypaths.html b/lang/fi/help/directorypaths.html index 7ce80bd7be7..4eff016e7d2 100644 --- a/lang/fi/help/directorypaths.html +++ b/lang/fi/help/directorypaths.html @@ -1,13 +1,13 @@

            Hakemistopolut

            -

            Koko hakemistopolun kirjoitusmuoto riippuu käyttöjärjestelmästäsi:

            +

            Koko hakemistopolun komento riippuu käyttösysteemistäsi:

            -

            Windows järjestelmissä käytä esimerkiksi:

            +

            Windows järjestelmissä käytä esimerkiksi:

            • c:\program files\data\moodle
            • c:\documents and settings\moodle\temp\saved
            -

            Unix järjestelmissä käytä esimerkiksi:

            +

            Unix ärjestelmissä käytä esimerkiksi:

            • /usr/data/moodle
            • /home/moodle/tmp/saved @@ -17,4 +17,4 @@

            Huomaa, että yleensä on hyvä idea varmistaa, että hakemisto on jo olemassa. Joskus Moodle saattaa luoda hakemiston tarvittaessa, mutta tämä ei aina ole mahdollista

            -

            Lopuksi, varmista, että kirjainkoko on oikea (suuret/pienet) äläkä koskaan lisää kenoviivaa polun loppuun.

            +

            Lopuksi, varmista että aakkoskoko on oikea (suuret/pienet) ,äläkä koskaan lisää kenoviivaa polun loppuun.

            diff --git a/lang/fi/help/emoticons.html b/lang/fi/help/emoticons.html index daffccc28d1..28780af04f7 100644 --- a/lang/fi/help/emoticons.html +++ b/lang/fi/help/emoticons.html @@ -6,52 +6,52 @@ - + - + - + - + - + - + - + - + - + - +
            hymysmile :-)
            iso irvistysbig grin :-D
            nikkaawink ;-)
            hämmentynytmixed :-/
            ajattelevainenthoughtful V-.
            näyttää kieltä tongue out :-P
            tyylikäscool B-)
            hyväksyväapprove ^-)
            silmät suurina wide eyes 8-)
            yllättynytsurprise 8-o
            @@ -60,58 +60,58 @@ - + - + - + - + - + - + - + - + - + - +
            surusad :-(
            ujoshy 8-.
            punastuablush :-I
            suukkojakisses :-X
            pelleclown :o)
            musta silmä black eye P-|
            vihainenangry 8-[
            kuollutdead xx-P
            väsynytsleepy |-.
            ilkeäevil }-]
            -

            Kun kirjoittaa verkossa, on vaikea ilmaista tunteita pelkällä tekstillä. Nämä pikku kuvat voivat auttaa. +

            Kun kirjoittaa verkossa, joskus on vaikea ilmaista tunteita pelkällä tekstillä. Nämä pikku kuvat voivat auttaa.

            Lisätäksesi jonkun näistä kuvista tekstiisi; klikkaa kuvaa yläpuolella, tai kirjoita liittyvä tekstikoodi suoraan tekstiisi. -

            Huomaa, että koodit itsessään ovat kuin pieniä kuvia - käännä päätäsi vasemmalle katsoessasi niitä.

            +

            Huomaa, että koodit itsessään ovat kuin pieniä kuvia- käännä päätäsi vasemalle katsoessasi niitä.

            diff --git a/lang/fi/help/enrolperiod.html b/lang/fi/help/enrolperiod.html index 8d9674acb40..808e54d6145 100644 --- a/lang/fi/help/enrolperiod.html +++ b/lang/fi/help/enrolperiod.html @@ -1,5 +1,5 @@ -

            Rekisteröitymisjakso

            +

            Rekisterötymisjakso

            -

            Tämä asetus määrittelee niiden päivien määrän joina opiskelija voi olla rekisteröityneenä tälle kurssille (alkaen hetkestä jona he kirjautuvat)

            -

            Jos tämä asetus on tehty, opiskelijat kirjataan automaattisesti pois kurssilta tietyn ajan päätyttyä. Tämä on käyttökelpoisin kursseilla, joilla ei ole määrättyä alkamis- tai loppumisaikaa.

            -

            Jos et tee tätä asetusta, opiskelijat pysyvät tällä kurssilla kunnes heidät poistetaan manuaalisesti, tai kunnes siivoustoiminto, joka on tehty opiskelijoiden poistamiseksi, alkaa toimia.

            +

            Tämä asetus täsmentää niiden päivien määrän joina opiskelija voi olla rekisteröitynä tälle kurssille (alkaen hetkestä jona he kirjautuvat)

            +

            Jos tämä on asetettu, opiskelijat ovat automaattisesti kirjattu ulos tietyn ajan päätyttyä. Tämä on käyttökelpoisin kursseilla, joilla ei ole määrättyä alkamis- tai loppumisaikaa.

            +

            Jos et tee tätä asetusta, opiskelijat pysyvät tällä kurssilla kunnes heidät poistetaan manuaalisesti tai kunnes siivoustoiminto, joka on tehty opiskelijoiden poistamiseksi, alkaa toimia.

            diff --git a/lang/fi/help/exercise/administration.html b/lang/fi/help/exercise/administration.html deleted file mode 100644 index 40ed60b5c71..00000000000 --- a/lang/fi/help/exercise/administration.html +++ /dev/null @@ -1,6 +0,0 @@ -

            Ylläpitosivu

            -

            Tältä sivulta opettaja voi nähdä yhden tai useamman kuvauksen oppimistehtävälle, opiskelija-arvioinnille ja opiskelijoiden palautuksille. Nämä kohdat voidaan uudelleen otsikoida, katsoa tai poistaa, käyttämällä sivulla olevia linkkejä. Sivu näyttää myös mitkä palautukset ovat tulleet määräajan jälkeen.

            - -

            Ensimmäinen taulukko tässä ruudussa näyttää opettajan lähettämät tehtäväkuvaukset . Tavallisesti niitä on vain yksi. Tehtäväkuvaus kuvaa harjoitukseen ja normaalisti se sisältää ohjeita työstä joka pitäisi tehdä. Jos opettaja on lähettänyt enemmän kuin yhden kuvauksen, ne on listattu täällä. Huomaa, että kun harjoitus on käynnissä, näitä tiedostoja ei saisi poistaa. On, kuitenkin, turvallista poistaa opettajan lähettämät kuvaukset harjoituksen vielä ollessa perustamisvaiheessa.

            -

            Toinen taulukko näyttää opiskelijan (ensimmäisen) arvioinnin heidän omasta työstään. Se näyttää arvosanan joka opiskelijalle on annettu työstään. Jos myös opettaja on arvostellut työn, tämä taulukko sisältää myös arviointi arvosanan, joka on annettu arvioinnista. Tämä arvosana heijastaa kuinka hyvin opiskelijan arvostelu vastaa opettajan arvostelua. Opiskelijoiden arvosteluja voidaan katsoa haluttaessa. Sivulla on linkki arvostelun arvosanan muuttamista varten, jos opettaja haluaa niin tehdä.

            -

            Kolmas taulukko listaa palautukset ja niiden arvosanat, jos opettaja on arvioinut ne. Palautukset voidaan uudelleenarvostella tai poistaa turvallisesti. Tähti (*) palautuksessa tarkoittaa, että opiskelijan sallitaan palauttaa toinenkin työ. Tietylle opiskelijalle tämä valinta voidaan helposti muuttaa uudelleen arvioimalla heidän palautuksensa ja klikkaamalla sopivaa painiketta arviointisivun alaosassa, arviointia itseään ei tarvitse muuttaa. Myöhästynyt työ näytetään niin, että päivämäärä näkyy punaisena. "Myöhässä" -leima voidaan poistaa klikkaamalla linkkiä.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/comparisonofassessments.html b/lang/fi/help/exercise/comparisonofassessments.html deleted file mode 100644 index d85c5a719e9..00000000000 --- a/lang/fi/help/exercise/comparisonofassessments.html +++ /dev/null @@ -1,9 +0,0 @@ -

            Arviointien vertailu

            - -

            Oppimistehtävässä on normaalia, että työ arvioidaan kahdesti. Opiskelija arvioi työnsä ennen kuin palauttaa sen ja sen jälkeen opettaja (uudelleen)arvioi työn. Opettajan arviointi käyttää opiskelijan arviointia aloituspisteenä. Oppimistehtävä sallii opettajan palkita arvosanan proportion opiskelijan arviointiin, loput arvosanasta on varattu opettajan arviointiin työstä. (Maksimi arvosanoja näille kutsutaan "arvosanaksi opiskelijan arvioinnille" ja "arvosanaksi palautuksille" mainitussa järjestyksessä.) Huomaa, että arvosanaa oppilaan arvioinnille ei käytetä. Opiskelijan arvioinnille annetaan arvosana perustuen siihen, miten hyvin se sopii yhteen opettajan arvioinnin kanssa.

            -

            Yksimielisyyden aste opiskelijan ja opettajan arviointien välillä perustuu yksilöllisten elementtien pistemäärien eroihin (oikeastaan neliöityjä eroavaisuuksia käytetään!!!!!!!). Näiden erojen keskiarvon täytyy muuntua merkitykselliseksi arvosanaksi. "Arviointien vertailu" valinta sallii opettajalle asteen kontrollia siinä kuinka nämä vertailut muunnetaan arvosanoiksi.

            -

            Ymmärtääksesi tämän valinnan vaikutuksen, otetaan yksinkertainen esimerkki arvioinnista, jossa on kymmenen Kyllä/Ei kysymystä. Arviointi saattaa käyttää esimerkiksi kysymystä "Onko tämä kaavio oikein muotoiltu?", "Onko laskettu voitto $100.66?", jne. Oleta, että on kymmenen tämän kaltaista kysymystä. Kun "erittäin rento" asetus on valittu, täydellinen yksimielisyys oppilaan ja opettajan välillä antaa arvosanan 100 %, jos on vain yksi kysymys josta ei olla yhtä mieltä, arvosana on 90 %, kaksi erimielisyyttä antaa arvosanaksi 80 %, kolme 70 %, jne... Tämä saattaa näyttää hyvin järkevältä ja saatat miettiä miksi tätä vaihtoehtoa kutsutaan "erittäin rennoksi " vertailuksi. Harkitse tapausta jossa oppilas tekee täysin sattumanvaraisen arvioinnin, missä vastaukset kymmeneen kysymykseen yksinkertaisesti arvataan. Keskiarvona tämä antaisi tulokseksi viisi kymmenestä. Joten "apinan" arviointi saisi arvosanaksi noin 50 %. Tilanne tulee hieman järkevämmäksi "löysä" vaihtoehdolla, silloin satunnainen arviointi saa noin 20 %. Kun valitaan "reilu" vaihtoehto, satunnainen arvailu johtaa 0 %:iin suurimman osan ajasta. Tällä tasolla, arvosana 50 % annetaan, kun 2 arvioijaa on yhtä mieltä kahdeksassa kysymyksessä kymmenestä. Jos kolmesta kysymyksestä ollaan eri mieltä, silloin annettu arvosana on 25 %. Jos valinta on asetettu "tiukkaan", antaa kaksi kysymystä arvosanan 40 %. Siirtymällä "erittäin tiukka" alueelle erimielisyys vain kahdessa kysymyksessä pudottaa arvosanan 35 % ja yhden ainoan kysymyksen erimielisyys antaa arvosanan 65 %.

            - -

            Tämä esimerkki on täysin keinotekoinen, koska suurimmalla osalla arvioinneista on elementtejä, joilla on enemmän arvoja kuin vain Kyllä tai Ei. Näissä tapauksissa vertailut todennäköisesti tuottavat tulokseksi hieman suurempia arvosanoja kuin yläpuolella viitatut arvot. Monet tasot (hyvin löysä, löysä, reilu...) on annettu, jotta opettaja voi hienosäätää vaihtoehtoja. Jos he kokevat, että annetut arvosanat arvioinneista ovat liian alhaiset, silloin tätä valintaa pitäisi siirtää lähemmäs "rentoa" tai jopa "erittäin rentoa". Ja vaihtoehtoisesti, jos arvosanat oppilaan arviointiin koetaan liian korkeiksi, tämä valinta pitäisi siirtää joko "tiukkaan" tai "erittäin tiukkaan". On kysymys yrityksestä ja erehdyksestä, jotta löydettäisiin paras aloituskohta "reiluksi" vaihtoehdoksi.

            - -

            Oppimistehtävän aikana opettaja saattaa kokea, että opiskelija-arvioinneista annetut arvosanat ovat joko liian korkeita tai liian alhaisia. Nämä arvosanat näytetään harjoituksen Ylläpito-sivulla. Tässä tapauksessa, opettaja voi muuttaa näitä asetuksia ja uudelleen laskea opilaan arviointi arvosanat ("Arvostelu arvosanat"). Uudelleenlaskenta tehdään klikkaamalla "Uudelleen arvostele opiskelijan arvioinnit" linkkiä, joka löytyy harjoituksen ylläpito sivulta. Tämä voidaan turvallisesti tehdä, milloin tahansa harjoituksessa.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/elements.html b/lang/fi/help/exercise/elements.html deleted file mode 100644 index b40af309827..00000000000 --- a/lang/fi/help/exercise/elements.html +++ /dev/null @@ -1,16 +0,0 @@ -

            Arviointielementit

            - -

            Arvioinnin helpottamiseksi oppimistehtävän arvioinnilla tulisi olla sopiva määrä "arviointielementtejä". Jokaisen elementin pitäisi kattaa tietty näkökulma arvioinnista. Tyypillisesti arvioinnilla tulee olemaan viidestä viiteentoista elementtiä kommentoinnille ja arvioinnille, varsinainen määrä riippuu tehtävän koosta ja monimutkaisuudesta. Vertaistehtävä, jossa on vain yksi elementti, sallitaan ja sillä on samanlainen arviointistrategia kuin normaalilla Moodle tehtävällä. -

            Tehtävän arvostelustrategiasta riippuvat elementtityypit. -

            Ei arvosteltu. . Elementit ovat tehtävän näkökulmien kuvauksia. Arvioijaa pyydetään kommentoimaan kaikkia näitä näkökulmia. Kuten kaikkien arvostelustrategioiden kanssa, täälläkin on alue yleisille kommenteille. -

            Kumulatiivinen. Elementeillä on seuraavat kolme toimintoa: -

              -
            1. Arviontielementin KUVAUS. Tämän tulisi selkeäasti ilmoittaa mitä osa-aluetta tehtävästä se arvioi. Jos arviointi on !!!!!!!!!!!!, on hyvä antaa tietoa siitä mikä ymmärretään loistavaksi, keskinkertaiseksi ja mikä välttäväksi. -
            2. Arviointielementin LAAJUUS. Esiasetettuja asteikoita on olemassa. Nämä vaihtelevat yksinkertaisista Kyllä/Ei asteikoista, monipisteasteikoista aina täydellisiin prosenttiasteikoihin. Jokaisella elementillä on oma kokonsa, jonka pitäisi kattaa elementin kaikki muunnelmat. Huomaa, että elementin koko EI määrää sen tärkeyttä kokonaisarvosanan laskemisessa. 2-piste asteikolla on sama vaikutusvalta kuin 100-piste asteikollakin, ellei elementtien painopisteitä ole määritelty. -

              Jos omia asteikoita on asetettu kurssille, voidaan niitä käyttää. Huomaa, että tällaista asteikkoa käytetään monipisteasteikkona ja vain asteikon ensimmäinen ja viimeinen piste näytetään. Esimerkiksi jos kurssille luodaan oma asteikko: "Erittäin märkä, märkä, kostea, kuiva." tätä voidaan käyttää ja se näytetään 4-piste asteikkona jossa lukee "Erittäin märkä" alussa ja lopussa "kuiva".

              -
            3. Arviointi elementin PAINOTUS. Oletuksena elementeille on annettu sama tärkeys kokonaisarvosanaa laskettaessa. Painoarvot voi määrätä negatiivisiksi arvoiksi haluttaessa. T ämä on kokeellinen toiminto. -
            -

            Virheistä vähentävä arviointi: Normaalisti elementit kuvaavat tiettyjä kohtia tai näkökulmia jotka tehtävässä täytyy olla. Arviointi tehdään perustuen näiden kohtien tai näkökulmien olemassaoloon tai poissaoloon. ??Opettajan täytyy asettaa arvosanataulukot jotka antavat suositeltuja arvosanoja. Arvot on annetava käsin. Kun kaikki löytyvät, kun yksi on poissa, kun kaksi on poissa, jne. Jos jotkut kohdat ovat tärkeämpiä kuin toiset, noille kohdille voidaan antaa suurempi painoarvo kuin yksi. Pienemmille kohdille voidaan antaa vähemmän painoarvoa kuin yksi. Kokonais "virhe lasku" on painotettu summa puuttuvista kohdista. Arvioija voi aina tehdä pieniä säätöjä näihin ehdotettuihin arvosanoihin. - -

            Kriteeri arvostelu. Elementit antavat sarjan tasoilmoituksia, joita voidaan käyttää tehtävän arvioimiseen. Ilmoitukset voivat olla kasaantuvia tai ne voivat olla yksittäisiä, iman vaikutusta toisiinsa. Arvioijan täytyy päättää, mitkä ilmoitukset parhaiten kuvaavat mitäkin työtä. Opettajan täytyy myös asettaa jokainen kriteeri ilmoitus (criterion statement?) yhteyteen ehdotetun arvosanan kanssa. Näiden pitäisi normaalisti olla järjestyksessä. Arvioija voi tehdä pieniä säätöjä näihin ehdotettuihin arvosanoihin.

            -

            Rubric Grading. Tämä on samanlainen kuin kriteeriarvostelu, mutta tässä on enemmän kuin yksi kriteeri. Kriteerien määrä on annettu tehtävän asetuksissa. Jokaisen väitteen sisässä voi olla jopa viisi tasoilmoitusta. Annetussa tehtävässä tasojen määrä voi vaihdella kriteeristä kriteeriin. Kun asetetaan kriteeriä, tyhjä tasoilmoitus viestittää tasoilmoituksen loppua. Täten joillain kriteereillä saattaa olla kaksi tasoa, toisilla kolme, viiteen asti. Kriteeri voi olla painotettu. Tasot on laskettu 0, 1, 2, neljään saakka. Tehtävän arvosana on näiden pistemäärien painotettu summa.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/finalgrades.html b/lang/fi/help/exercise/finalgrades.html deleted file mode 100644 index 48990712b41..00000000000 --- a/lang/fi/help/exercise/finalgrades.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Loppuarvosanat

            - -

            Taulukko tällä näytöllä listaa kokonaisarvosanat ja niiden erittelyn. Ensimmäinen arvosana on arvosana (ensimmäiselle) arvioinnille. Tämä lisätään arvosanoihin, jotka on annettu jokaisen palautuksen yhteydessä. Loppuarvosana tälle tehtävälle tulee olemaan, joko keskiarvo näistä kokonaisarvosanoista, tai kokonaisarvosana parhaasta palautetusta tehtävästä. -

            Liigataulu vaihtoehtoisesti listaa parhaat palautetut työt. Merkintöjen määrä taulukossa asetetaan yhdeksi oppimistehtäväparametriksi. Jos tämä arvo asetetaan nollaan, silloin liigataulua ei näytetä. Taulu esitetään arvosanajärjestyksessä, paras palautettu työ ensin. Ainoastaan opiskelijan paras palautettu työ näytetään taulukossa. \ No newline at end of file diff --git a/lang/fi/help/exercise/grade.html b/lang/fi/help/exercise/grade.html deleted file mode 100644 index 313a454109d..00000000000 --- a/lang/fi/help/exercise/grade.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Palautuksen arvosana

            - -

            Tämä arvo määrittää suurimman arvosanan, mikä palautetulle työlle voidaan antaa.

            -

            Kokonaisarvosana oppimistehtävälle on opiskelijan arvioinnin arvosanan ja palautettujen töiden arvosanan summa. Täten jos (suurin mahdollinen) arvosana opiskelijan arvioinnista on asetettu 30:een ja (suurin mahdollinen) arvosana palautetulle työlle on 70, (suurin mahdollinen) arvosana harjoitukselle on 100.

            -

            Tämä arvo voidaan muuttaa milloin tahansa ja opiskelijat (ja opettajat) näkevät vaikutuksen arvosanoihin välittömästi.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/grading.html b/lang/fi/help/exercise/grading.html deleted file mode 100644 index 625631a0034..00000000000 --- a/lang/fi/help/exercise/grading.html +++ /dev/null @@ -1,17 +0,0 @@ -

            Tehtävien arviointi

            - -

            Tässä oppimistehtävässä oppilaat ja opettajat käyttävät samaa arviointilomaketta arvioidakseen tuotettua työtä. Lomaketta käyttää harjoituksen eri vaiheissa kaksi ryhmää, täten tässä annettava kuvaus on jaettu kahteen osaan.

            -

            In this Exercise the same Assessment Form is used by Students and Teachers to assess the work produced. The form is used at different stages of the exercise by the two groups, thus the explaination given here is divided into two parts.

            -

            For Students

            -

            Oppilaille

            -

            Arviointilomaketta käytetään pääasiassa näyttämään kuinka opettaja arvioi työsi. Sinun tarvitsee täyttää tämä kaavio ennen kuin voit palauttaa työsi. Voit käyttää sitä tarkistuslistana. Lomaketta ei lähetetä opettajalle kun tallennat sen. Voit palata tähän lomakkeeseen ja parannella sitä (ja työtäsi) niin monta kertaa kuin haluat., mutta vain jos et ole jo palauttanut työtäsi. Jokatapauksessa, arviointisi sisältö jäädytetään ja se annetaan opettajan nähtäväksi, heti kun palautat työsi.

            - -

            Jos opettaja pyytää sinua tekemään muutoksia työhösi ja uudelleenpalauttamaan sen, sinua ei pyydetä uudelleen arvioimaan "uutta" työtäsi. Tämä arviointi tehdään vain ensimmäisellä kerralla.

            - -

            Tätä omasta työstäsi tekemää (ensimmäistä) arviointia verrataan opettajan antamaan arvioon . Mitä lähemmäs toisiaan arvioinnit osuvat, sitä parempi on työsi arvostelu arvosana. Tämä arvosana on yleensä pienempi kuin työstäsi saamasi arvosana. Oppimistehtävän loppuarvosana on näiden lukujen summa.

            - -

            Kun olet palauttanut työsi, opettaja arvioi sen käyttämällä apunaan samaa arviointilomaketta. Voit halutessasi nähdä opettajien antamat pisteet ja kommentit. Opettajien arvosanat yleensä muodostavat pääosan oppitehtävän loppuarvosanasta.

            -

            Opettajalle

            -

            Arviointilomaketta käytetään arvostelemaan oppilaiden tekemät palautukset. Nämä arvosanat määräävät yleensä pitkälle oppilaan saaman arvosanan. Arviosi, sen arvosana ja mahdolliset kommentit, ovat sen oppilaan nähtävissä joka palautti työn. Kun arviointi on valmis, tulisi sinun päättää, pitäisikö oppilaan muuttaa ja uudelelenpalauttaa työnsä parannuksien toivossa, vaiko ei.

            - -

            Kun talletat arvioinnin, sinulle annteaan hetki aikaa tehdä muutoksia tai lisäyksiä ennen kuin arviointi päästetään oppilaiden nähtäville

            \ No newline at end of file diff --git a/lang/fi/help/exercise/gradinggrade.html b/lang/fi/help/exercise/gradinggrade.html deleted file mode 100644 index d3a7b92eb9a..00000000000 --- a/lang/fi/help/exercise/gradinggrade.html +++ /dev/null @@ -1,7 +0,0 @@ -

            Itsearvoinnin arvosana

            -

            Tämä on maksimi arvosana joka voidaan antaa opiskelijan tekemälle arvioinnille. Eli arvosana opiskelijan itsearvioinnista. - Itsearvoinnin arvosana määritetään vertaamalla opiskelijan arviota opettajan antamaan arviontiin. Tämä määrittää arvioinnin asteen eikä ole maksi arvosana tehtävästä jota kutsutaan "Palautuksen arvosanaksi".

            - -

            Tehtävän arvosana muodostuu itsearvioinnin arvosanan ja palautuksen arvosanan summasta.

            - -

            Tätä asetusta voidaan muuttaa koska tahansa ja muutokset on heti voimassa

            \ No newline at end of file diff --git a/lang/fi/help/exercise/gradingstrategy.html b/lang/fi/help/exercise/gradingstrategy.html deleted file mode 100644 index 265ac795467..00000000000 --- a/lang/fi/help/exercise/gradingstrategy.html +++ /dev/null @@ -1,15 +0,0 @@ -

            Arviointistrategia

            -

            Oppimistehtävä on melko joustava arvioititapojen suhteen. Tehtävän arvointi voi olla:

            -

            1. Ei arviointia: Opiskelijoiden itsearvoitia ei oteta huomioon. Opiskelijat voivat kommentoida töitään, mutta eivät arvioi niitä. Opettaja voi tosin halutessaan arvostella opiskelijoiden kommentit. Nämä arviointien arvosanat muodostavat pohjan opiskelijan loppuarvosanoille. jos opettaja ei arvioi opiskelijoiden arviointeja, tehtävälle ei tule mitään lopullista arvosanaa.

            -

            2. Kumulatiivinen: Tämä tyyppi on oletuksena. Tässä jokaisen arvion arvosana muodostuu joukosta arviointielementtejä . Jokaisen elementin tulisi kattaa jokin tietty arvioinnin osa. Tavallisesti tehtävällä on 5-15 elementtiä joita kommentoida tai arvostella. Tämä määrä tietysti vaihtelee tehtävän monimutkaisuudesta ja koosta riippuen. Oppimistehtävä yhdellä elementillä on sallittu ja sillä on samanlainen arviointistrategia, kuin tavallisella Moodle-tehtävällä.

            -

            Elementeillä on seuraavat 3 ominaisuutta:

            -

            1. Arviontielementin KUVAUS. Tämän tulisi selkeäasti ilmoittaa mitä osa-aluetta tehtävästä se arvioi. Jos arviointi on laadullinen, on hyvä antaa tietoa siitä mikä ymmärretään loistavaksi, keskinkertaiseksi ja mikä välttäväksi.

            -

            2. Arviointielementin ASTEIKKO. Esiasetettuja asteikoita on olemassa. Nämä vaihtelevat yksinkertaisista Kyllä/Ei asteikoista, monipisteasteikoista aina täydellisiin prosenttiasteikoihin. Jokaisella elementillä on oma asteikkonsa, jonka pitäisi kattaa elementin kaikki muunnelmat. Huomaa, että elementin asteikko EI määrää sen tärkeyttä kokonaisarvosanan laskemisessa. 2-piste asteikolla on sama vaikutus kuin 100-piste asteikollakin, ellei elementtien painopisteitä ole määritelty.

            -

            Jos omia asteikoita on asetettu kurssille, voidaan niitä käyttää. Huomaa, että tällaista asteikkoa käytetään monipisteasteikkona ja vain asteikon ensimmäinen ja viimeinen piste näytetään. Esimerkiksi jos kurssille luodaan oma asteikko: "Erittäin märkä, märkä, kostea, kuiva." tätä voidaan käyttää ja se näytetään 4-piste asteikkona jossa lukee "Erittäin märkä" alussa ja lopussa "kuiva".

            -
          • Arviointielementin PAINOTUS. Oletuksena elementeille annetaan yhtäläinen painoarvo kun tehtävän yleisarvosanaa lasketaan. Tämän voi muuttaa antamalla tärkeämmille elementeille suurempi painoarvo kuin 1, ja ei niin tärkeille pienempi kuin 1. Painoarvojen muuttaminen EI vaikuta maksimiarvosanaan, koska tämä arvo on liitetty "Maksimi Arvosana" parametriin. - -
          • Virheistä vähentävä arviointi: Tässä tehtävätyypissä palautukset arvostellaan Kyllä/Ei asteikolla.Asteikon määrittää Arviointitaulu joka antaa virheiden määrän ja suositellun arvosanan suhteen. Esimerkiksi tehtävällä voi olla kuusi merkittävää osaa jotka tulisi löytyä palautetusta tehtävästä, jolloin arviointitaulu antaa suositeltuja arvosanoja sen mukaan löytyvätkö kaikki palautuksesta, vai puuttuuko jokin. Yksittäisille osille voi halutessaan asettaa painoarvot, mikäli jotkin osat ovat toisia tärkeämpiä. Virheiden määrä on puuttuvien osien painoarvojen summa. Oletusarvoisesti jokaisella osalla on painoarvo 1. Arviointitaulu on yleensä epälineaarinen. Suositellut arvosanat voivat olla kymmenen osan tehtävälle esim.. 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%. Arvostelija voi säätää suositeltua arvosanaa 20% kupaankin suuntaan, määritelläkseen palautuksen lopullisen arvosanan. -
          • Kriteeriarviointi: Tämä on arvostelutavoista yksinkertaisin (mutta ei kuitenkaan helpoin asettaa.). Palautukset arvostellaan tietyjä kriteereitä vastaan. Arvioija päättää mikä niistä parhaiten sopii työhön. Arvosanan määrittää arviointitaulu, joka antaa suositeltavia arvosanoja jokaiselle kriteerille. Esimerkkinä, tehtävä voi olla asetettu, sanotaan vaikka, viidellä kriteerillä ja arvioijan on valittava yksi niistä jokaiselle arvioimalleen työlle. Kuten Virheistä vähentävässä arvioinnissa, arvioija voi säätää suositeltua arvosanaa 20% kupaankin suuntaan, määritelläkseen palautuksen lopullisen arvosanan. - -
          • Rubriikki Tämä arviointi muistuttaa kriteripohjastaarvoitia, mutta se tarjoaa useita arvioitiryhmiä. Jokainen ryhmä kattaa tietyn kategorian ja voi pitää sisällään 5 väitettä.Joaiselle ryhmälle määritetään painoarvot jota verrataan ryhmän yhteisarvioon. - \ No newline at end of file diff --git a/lang/fi/help/exercise/index.html b/lang/fi/help/exercise/index.html deleted file mode 100644 index 178c4bac62b..00000000000 --- a/lang/fi/help/exercise/index.html +++ /dev/null @@ -1,21 +0,0 @@ -

            Exercises

            - \ No newline at end of file diff --git a/lang/fi/help/exercise/leaguetable.html b/lang/fi/help/exercise/leaguetable.html deleted file mode 100644 index baa307891b9..00000000000 --- a/lang/fi/help/exercise/leaguetable.html +++ /dev/null @@ -1,2 +0,0 @@ -p align="center">Tulostaulu

            -

            Tämä valinta määrittää, tulisiko tulostaulu näyttää oppimistehtävän lopussa. Jos taulu näytetään, se listaa vain parhaat oppimistehtävässä palautetut työt. Jos näytettävien määrä on 0, taulua ei näytetä.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/leaguetablenames.html b/lang/fi/help/exercise/leaguetablenames.html deleted file mode 100644 index 4a4eb118741..00000000000 --- a/lang/fi/help/exercise/leaguetablenames.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Tulostaulun nimet

            - -

            Tämä valinta määrittää tulisiko opiskelijoiden nimet näyttää oppimistehtävän lopussa olevassa tulostaulussa. Oletusarvoisesti niitä ei näytetä, silloin taulu on anonyymi.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/managing.html b/lang/fi/help/exercise/managing.html deleted file mode 100644 index c35d1866039..00000000000 --- a/lang/fi/help/exercise/managing.html +++ /dev/null @@ -1,27 +0,0 @@ -

            Oppimistehtävän hallinta

            -

            Oppimistehtävä on hieman monimutkaisempi kuin perinteinen tehtävä. Siihen kuuluu kolme askelta tai vaihetta. Nämä ovat:

            - -

            1. Oppimistehtävän määrittely: Tuotetun työn arviointi helpottuu jos se hajotetaan osiin, "arviointielementteihin". Tämä tekee tehtävän arvioinnistä selkeämpää ja antaa opiskalijalle pohjan jolle muodostaa käsityksensä tehtävästä. Opettajan osaksi jää asettaa elementit ja näin luoda pohja jolle tehtävän arviointi perustuu.

            - -

            Kun Arviontioelementit ovat asetettu, tulee opettajan antaa oppimistehtävää kuvaava HTML tai Word dokumentti. Tämä tiedosto näytetään oppilaille oppimistehtävän toisessa vaiheessa.

            - -

            Opettajat voivat halutessaan luoda sarjan saman tyylisiä harjoituksia/oppimistehtäviä. Tämän tekemiseen käytetään HTML-tai Word-dokumentteja ja ne lähetetään oppimistehtävään. Huomaa, että näiden oppimistehtävien tulisi olla melko samankaltaisia koska samaa Arviontilomaketta käytetään kaikille muunnelmille. Useiden harjoitusten lähettäminen ja valmistelu on vapaaehtoista ja tietyissä tapauksissa se ei ehkä ole hyvä asia.

            - -

            2. Salli opiskelijoiden arvioinnit ja palautukset: Tehtävä avataan nyt opiskelijoille. Mikäli opettaja on asettanut useita tehtäviä, opiskelijat näkevät niistä eri versiot. Muussa tapauksessa opiskelijat näkevät saman oppimisharjoituksen.

            - -

            Ennen kuin opiskelijat voivat palauttaa työnsä, on heidän täytettävä arviointilomake kokonaisuudessaan. Kun lomake on täytetty, heille näytetään lähetys-lomake. Opiskelijat voivat korjata työtään oman arviointinsa pohjalta.

            - -

            Kun opiskelija on palauttanut työnsä, opettaja voi aloittaa sen arvioinnin. Linkki "Opiskelijan arviointiin palauttamat työt" näyttää ne työt joita ei ole vielä arvioitu. Vanhin näistä on sivun yläosassa. Näiden palautusten arviointilomake perustuu alkujaan opiskelijan omaan arvioon työstään. Opettaja voi muuttaa niitä arvioita ja lisätä haluamiaan kommentteja. Kaksi viimeistä nappia antavat opettajan päättää, salliiko hän oppilaan uudelleenpalauttaa työnsä vai ei. -

            Jos opettaja sallii oppilaan uudelleenpalauttaa työnsä ja nämä ovat niin tehneet, näkyy opettajan aikaisempi arviointi opiskelijoille/p> - -

            Tämä sama valinta, antaa opettajan ohjata tätä uudelleenpalautusten ja arviointien kierrettä. Jos opiskelijoiden annetaan laittaa oppimistehtävään useita töitä, opettajan tulisi päättää perustuvatko loppuarvosanat opiskelijan palautusten parhaaseen arvosanaan vai palautettujen töiden arvosanojen keskiarvoon. Tätät asetusta voi muuttaa missä tahansa oppistehävän vaiheessa päivitämällä oppiharjoitusta. Sen vaikutukset näkyvät välittömästä Arvosanat-sivulla. -

            Kun oppimistehtävän aikaraja saavutetaan, opiskelijat voivat jatkaa töiden palauttamista. Tosin työt jotka tulevan aikarajan jälkeen merkitään myöhästyneiksi. Työ ilmestyy arvioitavien listaan ja opettaja voi halutessaan arvioida sen normaalisti. Monissa listoissa jotka näyttävät ko. työn, palautuspäivämäärä näytetään punaisena. Jos myöhästynyt työ saa arvosanan, arvosana näytetään punaisella ja suluissa. Sellaisia arvosanoja EI käytetä lopullisen arvosanan laskemisessa eikä niitä myöskään näytetä Arvosanat-sivulla. Opettaja voi halutessaan pyyhkiä "myöhästynyt" arvon työstä menemällä Ylläpitäjät-valikkoon ja klikkaamalla sopivaa linkkiä. Palautettua työtä käytetään siitä eteenpäin loppuarvosanan laskemisessa.

            -
          • -
          • 3. Näytä lopulliset arvosanat ja tulostaulu Tässä oppimistehtävän viimeisessä vaiheessa opiskelijat voivat nähdä lopullisen arvosanansa. Opiskelijat voivat nähdä arvosanansa kaikissa muissakin vaiheissa (paitsi ensimmäisessä), mutta ne eivät ole vielä lopullisia, sillä ne lasketaan lennossa, siihen mennessä palautettujen töiden arvioiden pohjalta.

            -

            Tässä vaiheessa oppilaat eivät voi tehdä enää palautuksia. Tässä vaiheessa tehtävä suljetaan ja opettajalla on mahdollisuus näyttää opiskelijoille parhaita palautettuja töitä.

            -

            Opiskelijat (ja opettajat) voivat myös lukea palautettujen töiden tulostaulua. Tulokset järjestetty siten, että paras palautettu tehtävä on ylinnä. Siinä palautetulle tehtävälle annettu arvosana on opettajan antama arvosana. Mikäli opiskelija on palauttanut useita töitä, näytetään vain hänen paras työnsä taulussa. Jos näytettävien tehtävien lukumääräon asetettu nollaan (0), taulua ei näytetä lainkaan.

            -
          • - - -

            Opiskelijan arvosana oppimistehtävästä on opiskelijoiden itsearvioinnin arvosana ja palautusten arvosanojen summa. Suurimmat mahdolliset arvosanat asetetaan oppimistehtävän asetuksissa. Näitä arvoja voi kuitenkin muttaa (päivittämällä harjoitusta) milloin tahansa tehtävän aikana ja opiskelijoiden ja opettajan näkemät arvosanat heijastavat aina sen hetkisiä suurimpia mahdollisia arvoja.

            -

            Opettaja voi avata Ylläpito-sivun milloin tahansa harjoituksen aikana. Se näyttää listan opiskelijoiden (omien töidensä) arvioinneista, sekä heidän palautuksistaan.Opettaja voi käyttä tätä sivua palautusten arviointiin ja uudelleenarviointiin, antaakseen uuden arvosanan arvioinnille, poistaakseen palautuksia ja arviointeja sekä valvomaan yleisesti tehtävän etenemistä.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/mods.html b/lang/fi/help/exercise/mods.html deleted file mode 100644 index 17ac0c864b5..00000000000 --- a/lang/fi/help/exercise/mods.html +++ /dev/null @@ -1,2 +0,0 @@ - Oppimistehtävä -

            Oppimistehtävä on yksinkertainen, mutta hyvin tehokas tehtävä. Siinä opettaja pyytää opiskelijoita tekemään jonkin käytännön työn. Se voi olla esseen kirjoittaminen tai raportti, esitelmän suunnittelu tai melkein mitä tahansa. Kun opiskelijat ovat valmiita, täytyy heidän arvioida oma työnsä ennen kuin antavat sen opettajalle. Kun tehtävä on palautettu, opettaja arvioi opiskelijan työn käyttäen samaa arviointilomaketta. Opettaja voi antaa palautetta opiskelijalle ja pyytää häntä parantamaan työtään ja palauttaa se uudelleen mikäli tilanne sen vaatii. Lopullinen arvosana perustuu opiskelijan kykyyn arvioida omaa työtään ja työhön itseensä.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/moreinfo.html b/lang/fi/help/exercise/moreinfo.html deleted file mode 100644 index 742343c73be..00000000000 --- a/lang/fi/help/exercise/moreinfo.html +++ /dev/null @@ -1,23 +0,0 @@ -

            Oppimistehtävä

            -

            Oppimistehtävä on yksinkertainen, mutta hyvin tehokas tehtävämalli. Siinä opettaja pyytää opiskelijoita tekemään jonkin käytännön työn. Se voi olla esseen kirjoittaminen tai raportti, esitelmän suunnittelu tai melkein mitä tahansa. Kun opiskelijat ovat valmiita, täytyy heidän itsearvioida oma työnsä ennen kuin antavat sen opettajalle. Kun tehtävä on palautettu, opettaja arvioi opiskelijan työn käyttäen samaa arviointilomaketta kuin opiskelija. Opettaja voi antaa palautetta opiskelijalle ja pyytää häntä parantamaan työtään ja palauttaa se uudelleen mikäli tilanne sen vaatii. Lopullinen arvosana perustuu opiskelijan kykyyn arvioida omaa työtään ja työhön itseensä.

            -

            Ennen aloittamista, opettaja valmistelee oppimistehtävän:

            -

              -
            1. Luomalla Word-dokumentin joka esittelee oppimistehtävän ja kertoo opiskelijoille, mitä heidän tulisi tuottaa. Tämä tiedosto ladataan oppimistehtävään opettajan toimesta.

            2. -
            3. Lisäämälllä tekstimuotoisia osia ja valitsemalla arviointilomakkeen asetukset. Tätä lomaketta käyttävät sekä opiskelijat, että opettaja arvioimaan oppimistehtävässä luotua työtä. Arviointi tapoja on useita (katso aputiedosto "Arviointistrategia")

            4. -

            - -

            Suurissa luokissa, opettajalle on helpompaa luoda useampia versioita oppimistehtävästä. Se pitää huolen siitä , että jokainen opiskelija tekee eri työn ja lisää oppimistehtävän vaihtelevuutta. Nämä versiot jaetaan opiskelijoille satunnaisesti, mutta tasapainoitetusti. Jokainen opiskelija saa yhden oppimistehtävän, mutta jokaisen version määrä luokassa on suurinpiirtein sama. Huomaa, että muunnelmien ei pitäisi olla liian erilaisia, koska niiden arviointiin käytetään samaa arviointilomaketta.

            - -

            Kun kuvaus on annettu ja arviointilomake on kunnossa, harjoitus avataan opiskelijoille ja heille näytetään kuvaus tehtävästä. Kun he ovat tehneet oppimistehtävän, heidän on arvioitava se itse (käyttämällä arviointilomaketta) ennen tehtävän palauttamista opettajalle. Opiskelija voi käyttää arviointilomaketta eräänlaisena tarkistuslistana, ja jos he voivat tai haluavat, parannella työtään ennen sen palauttamista opettajalle. Heitä tulisi myös rohkaista tekemään niin!

            - -

            Kun opiskelija on palauttanut työnsä, arviointilomake, että työ itsessään tulee opettajan saataville. Opettaja tarkistaa työn (käyttäen opiskelijan arviointia lähtökohtana) ja päättää, pitäsikö opiskelijan palauttaa työ uudelleen paranneltuna.

            - -

            Mikäli opettajsta tuntuu siltä, että työtä voisi vielä parantaa, opiskelijalle voi antaa tilaisuuden uudelleenpalautukseen. Mikäli näin tapahtuu, opettaja uudelleenarvioi työn, käyttämällä arviointilomaketta joka sisältää arvosanat ja kommentit edellisistä palautuksista. Tosin, uudelleenarviointi on enemmänkin päivitys vanhaan arviointilomakkeeseen, joka tehdään opiskelijan parannellun tehtävän valossa, sen sijaan että arviointi aloitettaisiin täysin alusta.

            - -

            Kun oppimistehtävän aikaraja saavutetaan, opiskelijat voivat jatkaa töiden palauttamista. Tosin työt jotka tulevan aikarajan jälkeen merkitään myöhästyneiksi. Mikäli opettaja haluaa, hän voi antaa työlle arvosanan ja antaa oppilaalle palautetta. Myöhästyneitä töitä ei oteta mukaan loppuarvosanojen laskentaan. Jos opettaja jostain syystä haluaa sallia myös myöhästyneet oppimistehtävät kuten muutkin palautukset, hän voi poistaa "myöhästynyt" merkinnän Ylläpitäjä-sivulta, etsimällä työn ja klikkaamalla sopivaa linkkiä. Kyseisen työn arvosanaa käytetään siitä lähtien loppuarvosanojen laskemisessa.

            - -

            Kun kaikki palautukset on arvioitu, oppimistehtävä siirtyy viimeiseen vaiheeseen. Tämän jälkeen tulevia palautuksia ei hyväksytä. Opiskelijat voivat nähdä loppuarvosanansa ja jokaisesta eri työstään saamansa arvosanan. Opiskelijan arvosana on itsearvioinnin arvosanan (tämä arvosana on opiskelijan arvioinnin ja opettajan arvioinnin erotus) ja opettajan palautuksista antamien arvosanojen summa. (Opiskelijan arviointiinsa antamaa arvosanaa ei käytetä)

            - -

            Kun opettaja antaa opiskelijan uudelleenpalauttaa työn, hänen pitäisi miettiä kuinka asettaa valinta, joka ohjaa miten opiskelijan loppuarvosana lasketaan opiskelijan tekemistä tehtäväpalautuksista. Tämä valinta sallii opettajan käyttää joko palautusten keskiarvoa tai parasta palautuksista. Tätä voi muuttaa milloin tahansa ja sillä on välitön vaikutus Arvosanat-sivuun.

            - -

            Viimeisessä vaiheessa opiskelijat voivat nähdä töiden tulostaulun. Tämä on järjestelty lista opiskelijoiden töistä. Paremman arvosanan saaneet ovat korkeammalla. Jos opiskelija on palaututtanut useita töitä, vain tauluun pääsee vain opiskelijan paras palautus.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/nelements.html b/lang/fi/help/exercise/nelements.html deleted file mode 100644 index f03115e5585..00000000000 --- a/lang/fi/help/exercise/nelements.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Kommenttien, Elementtien, Siteiden, Kriteerien tai Rubrikkien lukumäärä

            -

            Luku kertoo, kuinka montaa kohtaa käytetään arvioinnissa. Riippuen arvostelustrategiasta, tämä luku antaa joko kommenttien, arviointielementtien, siteiden, kriteerien tai kriteerikategorioiden lukumäärän rubricissa. Yleensä arvioinnilla on noin 5-15 osaa. Todellinen lukumäärä riippuu tehtävän koosta ja monimutkaisuudesta.

            -

            Oppimistehtävän asetusvaiheessa tätä lukua voidaan muuttaa vapaasti. Sen kasvattaminen lisää tyhjiä elementtejä arviointilomakkeeseen. Sen pienentäminen taas poistaa niitä.

            -

            Kaikilla arvioinneilla on Yleiset kommentit-kenttä "Ei arvostelua" tyylisessä oppimistehtävässä tämä luku kertoo lisäkommenttialueiden määrän. Se voidaan asettaa nollaan, jolloin oppimistehtävällä onn vain 1 kommenttikenttä, Yleiset kommentit.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/password.html b/lang/fi/help/exercise/password.html deleted file mode 100644 index 32212ac7a28..00000000000 --- a/lang/fi/help/exercise/password.html +++ /dev/null @@ -1,2 +0,0 @@ -

            Salasanat

            -

            Tämä kenttä asettaa oppimistehtävälle salasanan. Se voi olla maksimissaan 10 merkkiä pitkä. Se voidaan nollata milloin tahansa oppimistehtävän aikana. "Käytä salasanaa" määrittää, kysytäänkö oppimistehtävään osallistuvilta opiskeljoilta salasanaa vai ei.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/regrading.html b/lang/fi/help/exercise/regrading.html deleted file mode 100644 index 441c7de0057..00000000000 --- a/lang/fi/help/exercise/regrading.html +++ /dev/null @@ -1,12 +0,0 @@ -

            Re-grading Student Assessments

            -

            Itsearvioinnin uudelleenarviointi

            -

            Tämä linkki laskee uudelleen kaikkien opiskelijoiden itsearvioinnin arvosanat . Yleensä ei tätä ei tarvitse tehdä. Opiskeljioiden uudet arviot saavat automaattisen asteikon, kun opettaja on arvioinut ko. työn tuloksen oppilaalta.

            - -

            Mutta jos arviointien arvosanat tuntuvat liian korkeilta tai matalilta, voi opettaja muuttaa "Arviointien vertailu" valintaa (päivittämällä oppimistehtävää) . Tämän asetuksen oletus on "Reilu". mikäli Arviontien arvosanat ovat liian suuret, asettamalla asetuksen "Jyrkäksi" tai "Erityisen jyrkäksi", voi arvosanoja pienentää. Toisaalta mikäli arvosanat ovat liian korkeat, voi asetuksen laittaa "Rento" tai "Hyvin rento" kohtiin. Tämä kasvattaa arvosanoja.

            - -

            Tämän asetuksen muuttaminen tehdään näin:

            -
              -
            1. Päivitä oppimistehtävän Arviointien vertailu asetus.
            2. -
            3. Mene tehtvän yllpito-sivulle ja klikaa "Uudelleenarvoi itsearvioinnit"
            4. -
            -

            \ No newline at end of file diff --git a/lang/fi/help/exercise/specimen.html b/lang/fi/help/exercise/specimen.html deleted file mode 100644 index 03f36a19e7f..00000000000 --- a/lang/fi/help/exercise/specimen.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Esimerkki Arviointilomakkeesta

            -

            Esimerkki Arviointilomakkeesta

            -

            Tässä näet arviointiin käytetyn lomakkeen yksityiskohdat. Opettajasi ja sinä käytätte sitä arvioimaan työsi.

            - -

            Huomaa, että vaikka voit muuttaa sivun arvosanoja, muutoksesi EIVÄT tallennu. Tämä on vain esimerkkilomake, mutta arvioinnissa käytetään hyvin samankaltaista lomaketta.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/submissionofdescriptions.html b/lang/fi/help/exercise/submissionofdescriptions.html deleted file mode 100644 index 4784cbb2db3..00000000000 --- a/lang/fi/help/exercise/submissionofdescriptions.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Oppimistehtävän kuvauksen antaminen

            -

            Opettajan tulee antaa vähintään yksi kuvaus jokaiselle työlle tai oppimistehtävälle. Kuvaus voidaan pitää Word-dokumentissa tai HTML-tiedostossa (tai missä tahansa tiedostossa, joka voidaan näyttää internet-selaimessa). Tämä tiedosto näytetään opiskelijoille ja sen pitäisi sisältää ohjeita joiden avulla harjoituksen voi suorittaa onnistuneesti.

            -

            Opettajan on mahdollista lähettää enemmän kuin yksi kuvaus oppimistehtävälle. Näitä käytetään satunnaisesti ja eri opiskelijat näkevät eri kuvauksen oppimistehtävästä. Kuvausten tulisi olla yhteensopivia käytetyn arviontilomakkeen kanssa, koska samaa lomaketta käytetään kaikkien tehtäväkuvausten kanssa.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/takeownership.html b/lang/fi/help/exercise/takeownership.html deleted file mode 100644 index a3e475fbe91..00000000000 --- a/lang/fi/help/exercise/takeownership.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Oppimistehtävän ottaminen Omistukseen

            -

            Tämä linkki sallii opettajan ottaa omistukseensa oppimistehtävään annetut palautukset. Sinun tarvitsee tehdä tämä, mikäli olet tuonut oppimistehtävän jonkin toisen kurssin varmuuskopiosta. Nämä tuodut vastaukset voivat kuulua kenelle tahansa. Tämän linkin avulla voit siirtää kaikki annetut vastaukset nimiisi. Tämä menettely estää mahdolliset ongelmat tekemällä sinusta omistajan.

            -

            Muutokset evät vaikuta tuotuihin vastauksiin.

            \ No newline at end of file diff --git a/lang/fi/help/exercise/usemax.html b/lang/fi/help/exercise/usemax.html deleted file mode 100644 index 891eaa3cd93..00000000000 --- a/lang/fi/help/exercise/usemax.html +++ /dev/null @@ -1,2 +0,0 @@ -

            Useiden palautusten hallinta

            -

            Tämä valinta kertoo miten oppimistehtävän kuuluisi laskea opiskelijoiden loppuarvosanat. Jos opiskelija antaa useita palautuksia, opettaja voi valita käyttääkö hän annettujen yritysten parasta arvosanaa, vaiko keskiarvoa. Tätä valintaa voi vaihtaa vaikka kesken oppimistehtävän. Jokaisella muutoksella on välitön vaikutus Arvosanat-sivuun (olettaen, että useita palautuksia on tullut)

            \ No newline at end of file diff --git a/lang/fi/help/exercise/usepassword.html b/lang/fi/help/exercise/usepassword.html deleted file mode 100644 index 0173a22aa00..00000000000 --- a/lang/fi/help/exercise/usepassword.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Käytä salasanaa

            - -

            Tavallisesti oppimistehtävä on auki, ja vain siinä tapauksessa, jos se on näkyvissä, opiskelijat voivat nähdä sen sisällön. Oppmistehtävän saatavuus kurssin sisällä on tavallisesti ohjattu Näytä/Piilota-toiminto asetuksen kautta.

            -

            Käytä salasanaa- valintaa käytetään asettamaan salasana kurssin sisällä. On tilanteita jolloin on välttämätöntä salasanasuojata harjoitus. Esimerkiksi jos harjoitusta käyttää usea eri opiskelijaryhmä ja he kaikki saavat saman harjoituksen, mutta eri aikaan. Näissä tilanteissa salasanasuojausta käytetään estämään seuraavana harjoituksen saavan ryhmän opiskelijoita tekemästä tehtävää, kun se on avattu ensimmäiselle ryhmälle.

            \ No newline at end of file diff --git a/lang/fi/help/forum/allowdiscussions.html b/lang/fi/help/forum/allowdiscussions.html index b4273f19c2f..4c1145d7315 100644 --- a/lang/fi/help/forum/allowdiscussions.html +++ b/lang/fi/help/forum/allowdiscussions.html @@ -1,11 +1,6 @@ -

            Uusien keskustelujen salliminen

            - -

            Tällä valinnalla voit estää käyttäjiä lisäämästä uutta aineistoa foorumille. - - -

            Useimmilla foorumeilla haluat varmaan valita ensimmäisen vaihtoehdon ja näin antaa käyttäjille mahdollisuuden aloittaa vapaasti uusia keskusteluaiheita ja vastata keskusteluaiheisiin. - -

            Joskus saatat kuitenkin haluta poistaa tämän mahdollisuuden. Se voi olla järkevää esimerkiksi uutisfoorumissa, jos haluat että vain opettajat saavat lisätä uusia uutisia, jotka näkyvät kurssin etusivulla. Tässä tapauksessa valitse kolmas vaihtoehto "Ei keskusteluita, ei vastauksia."

            - -

            Joskus taas saatat haluat antaa ainoastaan opettajille mahdollisuuden aloittaa uusia keskusteluita, mutta silti antaa muille käyttäjille mahdollisuuden vastata keskusteluihin (vaikkapa kotisivun uutisfoorumilla). Tässä tapauksessa valitse toinen vaihtoehto "Ei keskusteluita, mutta vastaukset sallitaan." -

            \ No newline at end of file +

            Uusien keskustelujen salliminen

            + + +

            Todennäköisesti haluat, että muutkin kuin opettajat voivat aloittaa uusia keskustelunaiheita useimmissa foorumeissa.

            + +

            Joskus saatat kuitenkin haluta poistaa tämän mahdollisuuden. Se voi olla tarkoituksenmukaisinta esimerkiksi uutisfoorumissa, jos haluat että vain opettajat saavat lisätä uusia uutisia, jotka näkyvät kurssin etusivulla. Oppilailla on silti edelleen mahdollisuus VASTATA esillä oleviin viesteihin.

            diff --git a/lang/fi/help/forum/attachment.html b/lang/fi/help/forum/attachment.html index cce9bd560b7..342bb6e5200 100644 --- a/lang/fi/help/forum/attachment.html +++ b/lang/fi/help/forum/attachment.html @@ -1,11 +1,11 @@ -

            Viestien liitteet

            - -

            Sinulla on mahdollisuus liittää YKSI tiedosto koneeltasi mihin tahansa viestiin foorumeilla. Tämä tiedosto ladataan palvelimelle ja tallennetaan yhdessä viestisi kanssa.

            - -

            Tästä ominaisuudesta on hyötyä, kun haluat näyttää esimerkiksi kuvan tai Word-asiakirjan.

            - -

            Liitetiedosto voi olla minkä tyyppinen tahansa. Suositeltavaa on kuitenkin, että tiedosto nimetään käyttäen kolmikirjaimisia internetin vakiopäätteitä kuten .doc Word -asiakirjoissa, .jpg tai .png kuvissa jne. Näin toisten on helpointa avata ja katsoa liitettäsi omalla selaimellaan.

            - -

            Jos muokkaat viestiäsi ja liität siihen uuden liitteen, uusi liite korvaa aikaisemmin lisäämäsi liitetiedoston.

            - -

            Jos muokkaat viestiäsi, jossa on liite ja jätät tämän kohdan tyhjäksi, alkuperäinen liite säilyy.

            +

            Viestien liitteet

            + +

            Sinulla on mahdollisuus liittää YKSI tiedosto koneeltasi mihin tahansa viestiin eri foorumeissa. Tämä tiedosto ladataan palvelimelle ja tallennetaan yhdessä viestisi kanssa.

            + +

            Tästä ominaisuudesta on hyötyä, kun haluat näyttää esimerkiksi kuvan tai Word -asiakirjan.

            + +

            Liitetiedosto voi olla minkä tahansa tyyppinen. Erittäin suositeltavaa on kuitenkin, että tiedosto nimetään käyttäen kolmikirjaimisia internetin vakiopäätteitä kuten .doc Word -asiakirjoissa, .jpg tai .png kuvissa jne. Siten toisten on helpointa avata ja katsoa liitettäsi omalla selaimellaan.

            + +

            Jos muokkaat viestiäsi ja liität siihen uuden liitteen, silloin uusi liite korvaa aikaisemmin lisäämäsi liitetiedoston.

            + +

            Jos muokkaat viestiäsi, jossa on liite ja jätät tämän kohdan tyhjäksi, alkuperäinen liite säilyy.

            diff --git a/lang/fi/help/forum/forumtype.html b/lang/fi/help/forum/forumtype.html index c62f475aeec..c6c9b1c7909 100644 --- a/lang/fi/help/forum/forumtype.html +++ b/lang/fi/help/forum/forumtype.html @@ -1,11 +1,11 @@ -

            Foorumityypit

            - -

            Valittavana on useita eri foorumityyppejä:

            - -

            Yksinkertainen keskustelu - vain yksittäinen aihe, joka on kokonaisuudessaan yhdellä sivulla. Käyttökelpoinen lyhyissä, tarkasti rajatuissa keskusteluissa.

            - -

            Yleisfoorumi - avoin foorumi, jossa kuka tahansa voi aloittaa uuden keskustelunaiheen milloin tahansa. Tämä on paras foorumi yleiskäyttöön.

            - -

            Jokainen avaa uuden keskustelun - Jokainen voi lähettää tasan yhden uuden keskustelunaiheen (kaikki voivat kuitenkin vastata jokaiseen). Tämä vaihtoehto on käytännöllinen, jos haluat, että jokainen opiskelija aloittaa uuden keskustelun esim. siitä, millaisia ajatuksia viikon aihe on heissä herättänyt, ja kaikki muut vastaavat.

            - -

            (Lisää vaihtoehtoja tulossa uusiin Moodle -versioihin.)

            +

            Foorumityypit

            + +

            Valittavana on useita eri foorumityyppejä:

            + +

            Yksinkertainen keskustelu - on vain yksittäinen aihe, joka on kokonaisuudessaan yhdellä sivulla. Käyttökelpoinen lyhyissä tarkasti rajatuissa keskusteluissa.

            + +

            Yleisfoorumi - avoin foorumi, jossa kuka tahansa voi aloittaa uuden keskustelunaiheen milloin tahansa. Tämä on paras foorumi yleiskäyttöön.

            + +

            Jokainen avaa uuden keskustelun - Jokainen voi lähettää tasan yhden uuden keskustelunaiheen (kaikki voivat kuitenkin vastata jokaiseen). Tämä vaihtoehto on käytännöllinen, jos haluat, että jokainen opiskelija aloittaa uuden keskustelun esim. siitä, millaisia ajatuksia viikon aihe on heissä herättänyt, ja kaikki muut vastaavat.

            + +

            (Lisää vaihtoehtoja tulossa uusiin Moodle -versioihin.

            diff --git a/lang/fi/help/forum/mods.html b/lang/fi/help/forum/mods.html index 1c32c5988d2..87f0fd8d862 100644 --- a/lang/fi/help/forum/mods.html +++ b/lang/fi/help/forum/mods.html @@ -1,6 +1,6 @@ -

            Keskustelualue

            -
              -

              -Tämä työkalu saattaa olla kaikkein tärkein - suurin osa kurssin keskusteluista tapahtuu täällä. Keskustelualueita voi rakentaa useilla eri tavoilla ja niihin voi lisätä vertaisarvioinnin. Viestit voivat olla eri tiedostotyyppejä ja niissä voi olla mukana liitteitä. Jos osallistuja tilaa keskustelupalstan, hän saa kopiot kaikista uusista viesteistä sähköpostiinsa. Opettaja voi myös halutessaan pakottaa kaikki osallistujat tilamaan tietyt keskustelupalstat. - -

            \ No newline at end of file +

             Keskustelualueet

            +
              +

              +Tämä työkalu saattaa olla kaikkein tärkein - suurin osa kurssin keskusteluista tapahtuu täällä. Keskustelualueita voi rakentaa useilla eri tavoilla ja niihin voi lisätä vertaisarvioinnin. Viestit voivat olla eri tiedostotyyppejä ja niissä voi olla mukana liitteitä. Jos osallistuja tilaa keskustelupalstan, hän saa kopiot kaikista uusista viesteistä sähköpostiinsa. Opettaja voi myös halutessaan pakottaa kaikki osallistujat tilamaan tietyt keskustelupalstat. + +

            diff --git a/lang/fi/help/forum/ratings.html b/lang/fi/help/forum/ratings.html index b10f1f34109..8876cc1db6f 100644 --- a/lang/fi/help/forum/ratings.html +++ b/lang/fi/help/forum/ratings.html @@ -1,22 +1,22 @@ Yksittäiset viestit voidaan luokitella käyttäen asteikkoa, joka perustuu teoriaan eristyvästä ja sosiaalisesta osaamisesta (separate knowing, connected knowing). -Tämä teoria voi auttaa tarkastelemaan ihmisten välistä vuorovaikutusta uudella tavalla. Se kuvaa kahta erilaista tapaa, joilla voimme arvioida ja oppia asioita, joita näemme ja kuulemme. +Tämä teoria voi auttaa sinua tarkastelemaan ihmisten välistä vuorovaikutusta uudella tavalla. Se kuvaa kahta erilaista tapaa, joilla voimme arvioida ja oppia asioita, joita näemme ja kuulemme. -Vaikka jokainen meistä käyttää molempia näistä metodeista vaihtelevasti eri tilanteissa, voi olla kätevää ajatella esimerkkeinä kahta henkilöä, joista toinen (Jukka) on enimmäkseen eristyvä osaaja (separate knower) ja toinen (Mari) enimmäkseen sosiaalinen osaaja (connected knower). +Vaikka jokainen meistä käyttää molempia näistä metodeista vaihtelevasti eri tilanteissa, voi olla hyödyllistä ajatella esimerkkinä kahta henkilöä, joista toinen (Jukka) on enimmäkseen eristyvä osaaja (separate knower) ja toinen (Mari) enimmäkseen sosiaalinen osaaja (connected knower).
              -
            • Jukka haluaa olla mahdollisimman objektiivinen ja eikä sekoittaa tunteita ja tosiasioita keskenään. Keskustellessaan sellaisten ihmisten kanssa, joiden ajatukset poikkeavat hänen omistaan, hän haluaa puolustaa omia näkökantojaan etsimällä aukkoja vastustajansa logiikasta. Hän on suhtautuu kriittisesti uusiin ajatuksiin, elleivät ne ole oikeiksi todistettuja faktoja arvossapidetyistä lähteistä kuten oppikirjoista, arvostetuilta opettajilta tai perustu hänen omiin suoriin kokemuksiinsa. Jukka on selvästi eristyvä osaaja.
            • +
            • Jukka haluaa olla mahdollisimman objektiivinen ja eikä sekoittaa tunteita ja tosiasioita keskenään. Keskustellessaan sellaisten ihmisten kanssa, joiden ajatukset poikkeavat hänen omistaan, hän haluaa puolustaa omia näkökantojaan etsimällä aukkoja vastustajansa logiikasta. Hän on suhtautuu kriittisesti uusiin ajatuksiin, elleivät ne ole oikeasi todistettuja faktoja arvossapidetyistä lähteistä kuten oppikirjoista, arvostetuilta opettajilta tai perustu hänen omiin suoriin kokemuksiinsa. Jukka on selvästi eristyvä osaaja.
            • Mari on herkempi muille ihmisille. Hän on empaattinen, kuuntelee ja kyselee, kunnes tuntee päässeensä yhteisymmärrykseen keskustelukumppaninsa kanssa. Hän oppii jakamalla kokemuksia ja etsimällä tietoa muista ihmisistä. Keskustellessaan toisten kanssa hän välttää vastakkainasetteluja ja haluaa auttaa toista henkilöä esittämällä loogisia ehdotuksia, jos se suinkin on mahdollista. Mari on selvästi sosiaalinen osaaja.
            -Huomasitko, että esimerkeissä eristyvä osaaja oli mies ja sosiaalinen osaaja nainen? Eräät tutkimukset ovat osoittaneet, että asia on usein näin, vaikka yksittäiset henkilöt voivatkin sijoittua mihin tahansa näiden ääripäiden väliin.

            +Huomasitko, että esimerkeissä eristyvä osaaja oli mies ja sosiaalinen osaaja nainen? Eräät tutkimukset ovat osoittaneet, että asia on usein näin, vaikka yksittäiset henkilöt voivatkin sijoittua mihin tahansa näiden ääripäiden väliin.

            -Yhteistyökykyisen ja tehokkaan opiskelijaryhmän toiminnan kannalta voi olla parasta, että kaikki osaisivat hyödyntää MOLEMPIA oppimistapoja.

            +Yhteistyökykyisen ja tehokkaan opiskelijaryhmän toiminnan kannalta voi olla parasta, että kaikki osaisivat hyödyntää MOLEMPIA oppimistapoja.

            Erityistilanteessa, kuten online-foorumissa, yhden henkilön lähettämä viesti saattaa edustaa jompaakumpaa tai jopa molempia näistä tapauksista. Henkilö, joka yleensä on selkeästi sosiaalinen, saattaa lähettää hyvin eristyvältä kuulostavan viestin ja päinvastoin. Viestien luokittelemisen tarkoitus on:
            -a) auttaa sinua ottamaan huomioon tällaisia näkökohtia kun luet viestejä -b) antaa palautetta jokaiselle kirjoittajalle siitä, millä tavoin muut heidät näkevät. +a)auttaa sinua ottamaan huomioon tällaisia näkökohtia, kun luet viestejä +b)antaa palautetta jokaiselle kirjoittajalle siitä, millä tavoin muut heidät näkevät.
            Tuloksia ei käytetä oppilaiden arviointiin vaan edesauttamaan kommunikaation ja oppimisen parantamista. diff --git a/lang/fi/help/glossary/aliases.html b/lang/fi/help/glossary/aliases.html deleted file mode 100644 index e62a6df8b94..00000000000 --- a/lang/fi/help/glossary/aliases.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Avainsanat

            - -

            Jokaisessa sanaston merkinnässä voi olla aiheeseen liittyvä lista avainsanoja (tai peitenimiä).

            -

            Näitä sanoja voidaan käyttää vaihtoehtoisina tapoina viittaamaan merkintään. Niitä käytetään esimerkiksi ailloin, kun luodaan automaattisia linkkejä.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/aliases2.html b/lang/fi/help/glossary/aliases2.html deleted file mode 100644 index 4e29fb833cb..00000000000 --- a/lang/fi/help/glossary/aliases2.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Avainsanat

            - -

            Jokaisessa sanaston merkinnässä voi olla aiheeseen liittyvä lista avainsanoja (tai peitenimiä).

            -

            Erottele peitenimet toisistaan rivinvaihdoilla.

            -

            Näitä sanoja voidaan käyttää vaihtoehtoisina tapoina viittaamaan merkintään. Niitä käytetään esimerkiksi ailloin, kun luodaan automaattisia linkkejä.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/allowcomments.html b/lang/fi/help/glossary/allowcomments.html deleted file mode 100644 index 3816f0e18b2..00000000000 --- a/lang/fi/help/glossary/allowcomments.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Salli merkintöiden kommentointi

            -

            Opiskelijoiden voidaan sallia lisätä kommentteja sanastomerkintöihin.

            -

            Voit valita onko tämä ominaisuus käytössä vai ei.

            -

            Opettajat voivat aina lisätä kommentteja sanastomerkintöihin.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/allowduplicatedentries.html b/lang/fi/help/glossary/allowduplicatedentries.html deleted file mode 100644 index bc833beeb1e..00000000000 --- a/lang/fi/help/glossary/allowduplicatedentries.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Salli kaksinkertaiset merkinnät

            - -

            Jos asetat tämän valinnan päälle, silloin monien merkintöjen sallitaan käyttää samaa käsitenimeä.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/allowprintview.html b/lang/fi/help/glossary/allowprintview.html deleted file mode 100644 index f5eb139168f..00000000000 --- a/lang/fi/help/glossary/allowprintview.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Salli tulosta-näkymä

            - -

            Opiskelijoiden sallitaan nähdä sanaston tulostus-näkymä.

            - -

            Opettajatvoivat aina käyttää tulostusnäkymää.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/attachment.html b/lang/fi/help/glossary/attachment.html deleted file mode 100644 index f15f00ff201..00000000000 --- a/lang/fi/help/glossary/attachment.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Käsitteiden liitteet

            - -

            Voit ladata sanastoon halutessasi yhden liittetiedoston per käsite.

            - -

            Voit käyttää tätä ominaisuutta esim. kuvien tai dokumenttien jakamiseen.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/casesensitive.html b/lang/fi/help/glossary/casesensitive.html deleted file mode 100644 index f7e8966f527..00000000000 --- a/lang/fi/help/glossary/casesensitive.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Kirjoinkoon vaikutus

            - -

            Tämä asetus määrittää onko isojen ja pienten kirjainten yhteensopivuus tarpeellista, kun suoritetaan automaattista linkitystä näihin merkintöihin.

            -

            Esimerkiksi, jos tämä on päällä, silloin sana "html" EI linkity sanastomerkintään "HTML".

            \ No newline at end of file diff --git a/lang/fi/help/glossary/defaultapproval.html b/lang/fi/help/glossary/defaultapproval.html deleted file mode 100644 index 5c9a0d481d0..00000000000 --- a/lang/fi/help/glossary/defaultapproval.html +++ /dev/null @@ -1,2 +0,0 @@ -

            Hyväksytty oletuksena

            -

            Tämä asetus sallii opettajan määritellä mitä tapahtuu uusille opiskelijoiden lisäämille merkinnöille. Ne voidaan automaattisesti asettaa saataville kaikille, muutoin opettajan täytyy hyväksyä jokainen yksittäin.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/description.html b/lang/fi/help/glossary/description.html deleted file mode 100644 index baae5856102..00000000000 --- a/lang/fi/help/glossary/description.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Kuvaus

            - -

            Tämä kenttä sallii sinun kuvata sanaston tarkoitusta, ja mahdollisesti tarjota ohjeita tai taustatietoa, linkkejä, jne.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/destination.html b/lang/fi/help/glossary/destination.html deleted file mode 100644 index 674db027798..00000000000 --- a/lang/fi/help/glossary/destination.html +++ /dev/null @@ -1,7 +0,0 @@ -

            Tuotujen merkintöjen kohteen määrittely

            - -

            Voit määritellä mihin haluat tuoda merkinnät:

            -
              -
            • Nykyinen sanasto: Liittää tuodut merkinnät parhaillaan auki olevaan sanastoon.
            • -
            • Uusi sanasto: Luo uuden sanaston, joka perustuu informaatioon valituissa tuoduissa tiedostoissa, ja syöttää uudet merkinnät siihen.
            • -
            \ No newline at end of file diff --git a/lang/fi/help/glossary/displayformat.html b/lang/fi/help/glossary/displayformat.html deleted file mode 100644 index 250e54e0f15..00000000000 --- a/lang/fi/help/glossary/displayformat.html +++ /dev/null @@ -1,23 +0,0 @@ -

            Esitysmuoto

            - -

            Tämä asetus määrittelee tavan, jolla jokainen merkintä näytetään sanastossa. Oletusmuodot ovat:

            -
            -
            -
            Yksinkertainen sanakirja:
            -
            näyttää tavanomaiselta sanakirjalta erillisine merkintöineen. Laatijoita ei näytetä ja liitetiedostot näytetään linkkeinä.
            -
            Jatkuva:
            -
            näyttää merkinnät yhden toisensa jälkeen ilman minkäänlaista erittelyä, muotoilu kuvakkeita lukuunottamatta.
            -
            Täysi tekijän kassa:
            -
            Keskustenlualueen kaltainen näyttömuoto, joka näyttää laatijan tiedot. Liitetiedostot näytetään linkkeinä.
            -
            Täysi ilman tekijää :
            -
            Keskustelualueen kaltainen näyttömuoto, joka ei näytä laatijan tietoja. Liitetiedostot näytetään linkkeinä.
            -
            Tietosanakirja:
            -
            Kuten 'Täysi tekijän kanssa ' mutta liitetyt kuvat näytetään avoimesti.
            -
            Usein kysytyt kysymykset (UKK) :
            -
            Käytännöllinen "usein kysytyt kysymykset" listojen näyttämiseen. Automaattisesti liittää loppuun sanat: KYSYMYS ja VASTAUS, ko. aiheesta ja mainitussa järjestyksessä.
            -
            -

             

            -
            - -
            -

            Moodlen ylläpitäjät voivat luoda uusia formaatteja seuraamalla ohjeita mod/glossary/formats/README.txt.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/editalways.html b/lang/fi/help/glossary/editalways.html deleted file mode 100644 index 63144b3ab73..00000000000 --- a/lang/fi/help/glossary/editalways.html +++ /dev/null @@ -1,10 +0,0 @@ -

            Muokkattavissa

            - -

            Tämä valinta sallii sinun päättää voivatko opiskelijat muokata merkintöjään milloin vain. -

            Voit valita: - -

              -
            • Kyllä: Merkinnät ovat aina muokattavissa. - -
            • Ei: Merkinnät ovat muokattavissa valitun muokkaus ajalla sisällä. -
            \ No newline at end of file diff --git a/lang/fi/help/glossary/entbypage.html b/lang/fi/help/glossary/entbypage.html deleted file mode 100644 index 00e2631097a..00000000000 --- a/lang/fi/help/glossary/entbypage.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Merkintöjen määrä sivua kohti

            - -

            Sanaston asetukset voidaan valita rajoittamaan merkintöjen määrän sivua kohti.

            -

            Jos sinulla on paljon automaattisesti linkitettyjä merkintöjä, sinun tulisi asettaa tämä määrä pienemmäksi estääksesi pitkät latausajat.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/filetoimport.html b/lang/fi/help/glossary/filetoimport.html deleted file mode 100644 index 7eff6f2ab8d..00000000000 --- a/lang/fi/help/glossary/filetoimport.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Tuotava tiedosto

            - -

            Valitse se XML tiedosto tietokoneeltasi, joka sisältää tuotavat merkinnät.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/fullmatch.html b/lang/fi/help/glossary/fullmatch.html deleted file mode 100644 index a5fb4829b50..00000000000 --- a/lang/fi/help/glossary/fullmatch.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Vain täydet sanat

            - -

            Jos automaattinen linkitys on mahdollistettu, silloin tämän asetuksen päälle kytkeminen pakottaa ainoastaan kokonaiset sanat linkittymään.

            -

            Esimerkiksi, sanastomerkintä nimeltä "Pallo" ei luo linkkiä sanaan "pallokala". Eli sanastomerkinnän on vastattava täydellisesti sanaa jotta se linkittyy. \ No newline at end of file diff --git a/lang/fi/help/glossary/globalglossary.html b/lang/fi/help/glossary/globalglossary.html deleted file mode 100644 index 22e3af5a1d4..00000000000 --- a/lang/fi/help/glossary/globalglossary.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Yleisen sanaston määrittely

            - -

            Ylläpitäjät voivat määritellä sanaston olevan yleisesti sivoston käytössä.

            -

            Nämä sanastot voivat olla osa mitä tahansa kurssia (mutta yleensä ne ovat etusivulla).

            -

            Ero tavalliseen paikalliseen sanastoon on se, että merkintöjä käytetään luomaan automaattisia linkkejä koko sivuston läpi (eikä ainoastaan vain samassa kurssissa mihin sanasto kuuluu).

            \ No newline at end of file diff --git a/lang/fi/help/glossary/importcategories.html b/lang/fi/help/glossary/importcategories.html deleted file mode 100644 index 1075d42dd7c..00000000000 --- a/lang/fi/help/glossary/importcategories.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Kategorioiden tuonti

            - -

            Oletuksena, kaikki merkinnät tuodaan. Halutessasi voit määritellä, että myös kategoriat tuodaan (ja kaikki uudet merkinnät sijoitetaan näiden mukaan).

            \ No newline at end of file diff --git a/lang/fi/help/glossary/index.html b/lang/fi/help/glossary/index.html deleted file mode 100644 index 2d10eb2ed78..00000000000 --- a/lang/fi/help/glossary/index.html +++ /dev/null @@ -1,33 +0,0 @@ -

            Sanasto

            - -
            -Sanaston ohjetiedostot: - -
            - -
            -Merkintätason apua tiedostot: - -
            \ No newline at end of file diff --git a/lang/fi/help/glossary/linkcategory.html b/lang/fi/help/glossary/linkcategory.html deleted file mode 100644 index 77edc5fa2f5..00000000000 --- a/lang/fi/help/glossary/linkcategory.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Kategorioiden linkitys

            - -

            Tässä määrittelet linkitetäänko kategoria nimet aytomaatisesti vai ei.

            - -

            Kategoriat linkitetään aina kokonaisiin sanoihin kirjainkoko huomioiden.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/mainglossary.html b/lang/fi/help/glossary/mainglossary.html deleted file mode 100644 index 6503a53683d..00000000000 --- a/lang/fi/help/glossary/mainglossary.html +++ /dev/null @@ -1,5 +0,0 @@ -

            Kurssin pääsanaston määrittäminen

            - -

            Sanastojärjestelmä sallii sinun viedä merkintöjä mistä tahansa toissijaisesta sanastosta kurssin pääsanastoon.

            -

            Tehdäksesi tämän, sinun pitäisi määrittää, mikä sanasto on pääsanasto.

            -

            Yhdellä kurssilla voi olla vain yksi pääsanasto ja vain opettajat saavat päivittää sitä.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/mods.html b/lang/fi/help/glossary/mods.html deleted file mode 100644 index 45517d58012..00000000000 --- a/lang/fi/help/glossary/mods.html +++ /dev/null @@ -1,7 +0,0 @@ -

            Sanasto

            -
              -

              Tämä toiminto sallii osallistujien luoda ja ylläpitää listaa erillaisista määritelmistä.

              -

              Merkintöjä voidaan etsiä tai selata monissa eri formaateissa.

              -

              Sanasto sallii myös opettajan tuoda saman kurssin sisällä merkintöjä yhdestä sanastosta toiseen (pääsanasto).

              -

              On myös mahdollista luoda linkkejä automaattisesti näihin merkintöihin kurssin aineistojen ja aktiviteetien sisällä.

              -
            \ No newline at end of file diff --git a/lang/fi/help/glossary/rssarticles.html b/lang/fi/help/glossary/rssarticles.html deleted file mode 100644 index 9f5d0b5af92..00000000000 --- a/lang/fi/help/glossary/rssarticles.html +++ /dev/null @@ -1,4 +0,0 @@ -

            RSS-artikkelien lukumäärä

            - -

            Tämä valinta antaa sinun valita artikkelien määrän, joka sisällytetään RSS-syötteeseen.

            -

            Numero 5:n ja 20:n välillä olisi normaali suurimmalle osalle sanastoista. Korota numeroa jos sanastoa päivitetään toistuvasti.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/rsstype.html b/lang/fi/help/glossary/rsstype.html deleted file mode 100644 index 83b9bdb6d6e..00000000000 --- a/lang/fi/help/glossary/rsstype.html +++ /dev/null @@ -1,8 +0,0 @@ -

            RSS syöte tastä sanastosta

            - -

            Tämä valinta sallii sinun mahdollistaa RSS syötteet tästä sanastosta.

            -

            Voit valita kahden syöttötyypin välillä:

            -
              -
            • Laatijan kanssa: Syötteet sisältävät laatijan nimen jokaisessa artikkelissa. -
            • Ilman laatijaa: Syötteet eivät sisällä laatijan nimeä jokaisessa artikkelissa. -
            \ No newline at end of file diff --git a/lang/fi/help/glossary/shows.html b/lang/fi/help/glossary/shows.html deleted file mode 100644 index c6d98f290ce..00000000000 --- a/lang/fi/help/glossary/shows.html +++ /dev/null @@ -1,8 +0,0 @@ -

            Selailu aakkostetussa näkymässä

            - -

            Voit mukauttaa tapaa, jolla käyttäjä voi selata sanastoa. Selaaminen ja etsiminen ovat aina saatavilla, mutta voit määrittää kolme muutakin valintaa:

            -

            NÄYTÄ ERIKOISET Mahdollistaa tai estä selaaminen erityismerkkien mukaan, kuten @, #, jne.

            - -

            NÄYTÄ AAKKOSITTAIN Mahdollista tai estä selaaminen aakkosjärjestyksessä.

            - -

            NÄYTÄ KAIKKI Mahdollista tai estä kaikkien merkintöjen selaaminen kerralla.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/studentcanpost.html b/lang/fi/help/glossary/studentcanpost.html deleted file mode 100644 index 8139002af74..00000000000 --- a/lang/fi/help/glossary/studentcanpost.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Opiskelijat voivat lisätä merkintöjä

            - -

            Voit määritellä voivatko opiskelijat lisätä, muokata tai poistaa omia merkintöjään. Pääsanastoon tuodut merkinnät voidaan päivittää tai poistaa ainoastaan opettajan toimesta, joten tämä asetus koskee vain toissijaisia sanastoja.

            -

            Huomaa: Opettaja voi muokata tai poistaa minkä tahansa merkinnän milloin vain.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/usedynalink.html b/lang/fi/help/glossary/usedynalink.html deleted file mode 100644 index 1f6236c2726..00000000000 --- a/lang/fi/help/glossary/usedynalink.html +++ /dev/null @@ -1,7 +0,0 @@ -

            Sanaston automaatinen linkitys

            - -

            Tämän toiminnon päälle kytkeminen sallii yksittäisten merkintöjen sanastossa linkittyä automaattisesti, aina kun käsitesanat ja fraasit ilmestyvät kurssilla. Linkitys tapahtuu kaikissa aktiviteeteissa kuten keskustelualueella, resursseissa, yhteenvedoissa, päiväkirjat, jne.

            -

            Huomaa, että linkityksen mahdollistaminen sanastolle ei automaattisesti kytke päälle linkitystä jokaiselle merkinnälle - linkitys täytyy asettaa jokaiselle merkinnälle yksilöllisesti.

            -

            Jos et halua tiettyä tekstiä linkitetyksi (esim. keskustelualueen ilmoituksessa) silloin sinun pitäisi lisätä ja merkit tekstin ympärille.

            - -

            Huomaa, että myös kategorianimet linkitetään.

            \ No newline at end of file diff --git a/lang/fi/help/glossary/usedynalinkentry.html b/lang/fi/help/glossary/usedynalinkentry.html deleted file mode 100644 index 99c1f5e074f..00000000000 --- a/lang/fi/help/glossary/usedynalinkentry.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Merkinnän automaatinen linkitys

            -

            Tämän toiminnon päälle kytkeminen mahdollistaa merkintöjen linkittyä automaattisesti, aina kun käsitesanat ja fraasit ilmestyvät läpi koko saman kurssin. Tämä sisältää lisäykset keskustelualueelle, sisäiset resurssit, viikkoyhteenvedot, päiväkirjat, jne.

            -

            Jos et halua tiettyä tekstiä linkitetyksi (esim. keskustelualueen ilmoituksessa) silloin sinun pitäisi lisätä ja merkit tekstin ympärille.

            -

            Jotta voisit kytkeä tämän toiminnon päälle, automaattisen linkityksen täytyy olla toiminnassa sanastotasolla.

            \ No newline at end of file diff --git a/lang/fi/help/groupmode.html b/lang/fi/help/groupmode.html index cfe0f2495b2..d83c44fd47f 100644 --- a/lang/fi/help/groupmode.html +++ b/lang/fi/help/groupmode.html @@ -1,27 +1,27 @@ -

            Ryhmämoodi

            +

            Ryhmä moodi

            -

            Ryhmämoodi voi olla yksi kolmesta tasosta: +

            Ryhmä moodi voi olla yksi kolmesta tasosta:

              -
            • Ei ryhmiä - ei ole alaryhmiä, kaikki ovat osa yhtä isoa yhteisöä.
            • +
            • Ei ryhmiä - ei ole alaryhmiä, kaikki ovat osa yhtä isoa yhteisöä
            • Erilliset ryhmät - jokainen ryhmä voi nähdä ainoastaan oman ryhmänsä, muut ovat näkymättömiä
            • -
            • Näkyvät ryhmät - jokainen työskentelee omassa ryhmässään, mutta voi nähdä myös muut ryhmät
            • +
            • Näkyvät ryhmät- jokainen työskentelee omassa ryhmässän, mutta voi nähdä myös muut ryhmät

            -

            Ryhmämoodi voidaan määritellä kahdella tasolla:

            +

            Ryhmä moodi voidaan määritellä kahdella tasolla :

            1. Kurssi taso
            -

            Ryhmämoodi, joka on määritelty kurssitasolla, on oletus moodi kaikille toiminnoille kurssin sisässä

            -
            +

            Ryhmä moodi , joka on määritelty kurssitasolla on oletus moodi kaikille toiminnoille kurssin sisässä

            +
            -
            2. Aktiviteetti tasolla
            +
            2. Toiminta taso
            -

            Jokainen aktiviteetti joka tukee ryhmää voi myös määritellä oman ryhmänsä moodin. Jos kurssi on asetettu "pakoitetut ryhmät":iin, asetukset eri aktiteeteille jätetään huomiotta.

            +

            Jokainen toiminta joka tukee ryhmää voi myös määritellä oman ryhmänsä moodin. Jos kurssi on asetettu "force group mode":iin, asetukset kaikille toiminnoille jätetään huomiotta.

             
            diff --git a/lang/fi/help/groupmodeforce.html b/lang/fi/help/groupmodeforce.html index f661447c6a6..5e22a2b1b40 100644 --- a/lang/fi/help/groupmodeforce.html +++ b/lang/fi/help/groupmodeforce.html @@ -1,3 +1,3 @@ -

            Pakoitettu ryhmämoodi

            -

            Jos ryhmämoodi on kurssitasolla "pakoitettu", ryhmämoodia sovelletaan kaikissa sen kurssin toiminnoissa. Yksilölliset ryhmäasetukset kaikissa aktiviteeteissa jätetään huomiotta.

            -

            Tämä on hyödyllistä esimerkiksi silloin kun haluaa perustaa kurssin muutamille täysin erillisille joukoille.

            +

            Pakota ryhmä moodi

            +

            Jos ryhmä moodi on "pakotettu" kurssitasolla, silloin kurssi ryhmä moodia sovelletaan kaikissa sen kurssin aktiviteeteissa. Yksilölliset ryhmäasetukset kaikissa aktiviteeteissa jätetään huomiotta.

            +

            Tämä on hyödyllistä esimerkiksi silloin kun haluaa perustaa kurssin muutamille täysin erillisille kohorteille.

            diff --git a/lang/fi/help/html.html b/lang/fi/help/html.html index 50e7a36bfb6..0299ca1d458 100644 --- a/lang/fi/help/html.html +++ b/lang/fi/help/html.html @@ -5,8 +5,8 @@
              -
            • <HEAD> or <BODY> -komentoja ei tarvitse käyttää
            • -
            • ole huolellinen, ettet kirjoita yhteensopimattomia komentoja, esim. </TABLE> jotka voivat sekoittaa sivunäkymän.
            • +
            • <HEAD> or <BODY> -komentoja ei tarvitse käyttää
            • +
            • ole huolellinen, ettet kirjoita yhteensopimattomia komentoja, esim. </TABLE> jotka voivat sekoittaa sivunäkymän.
            diff --git a/lang/fi/help/index.html b/lang/fi/help/index.html index ac0e4150f86..e131f28b3c5 100644 --- a/lang/fi/help/index.html +++ b/lang/fi/help/index.html @@ -1,49 +1,53 @@ -

            Ohjetiedostojen hakemisto

            - -

            Yleinen

            - - -

            Ylläpito

            - - -

            Kurssien perustaminen

            - - -

            Lukeminen ja kirjoittaminen

            - \ No newline at end of file + +

            Aputiedostojen hakemisto

            + +

            Yleinen

            + + +

            Ylläpito

            + + +

            Kurssien perustaminen

            + + +

            Lukeminen ja kirjoittaminen

            + diff --git a/lang/fi/help/journal/mods.html b/lang/fi/help/journal/mods.html deleted file mode 100644 index fb840261ef1..00000000000 --- a/lang/fi/help/journal/mods.html +++ /dev/null @@ -1,3 +0,0 @@ -

            Muistio

            -

            Tämä moduuli on hyvin tärkeä heijastava toiminto. Opettaja pyytää opiskelijoita pohdiskelemaan tiettyä aihetta, ja opiskelijat voivat muokata ja tarkentaa vastauksiaan ajan kuluessa. Vastaus on luottamuksellinen ja ainoastaan opettaja näkee sen ja voi tarjota palautetta ja arvosanan jokaisesta muistiosta.

            -

            Voit käyttää muistiota esimerkiksi päiväkirjan tai esseen tapaan.

            \ No newline at end of file diff --git a/lang/fi/help/label/mods.html b/lang/fi/help/label/mods.html deleted file mode 100644 index bb09062699d..00000000000 --- a/lang/fi/help/label/mods.html +++ /dev/null @@ -1,4 +0,0 @@ -

            Otsikko

            -
              -

              Tämä ei ole todellinen aktiviteetti- tämä on valeaktivitetti joka sallii sinun syöttää tekstiä ja kuvia muiden toimintojen sekaan kurssisivulla.

              -
            \ No newline at end of file diff --git a/lang/fi/help/langedit.html b/lang/fi/help/langedit.html index 18288995f33..614d3dba595 100644 --- a/lang/fi/help/langedit.html +++ b/lang/fi/help/langedit.html @@ -1,4 +1,4 @@ -

            Käännöksen muokkaus

            -

            Jotta voisit muokata kielitiedostoja tämän sivun avulla, pitää www-palvelinprosessilla olla kirjoitusoikeus kielitiedostoihin. -

            Joissakin merkkijonoissa on käytetty merkintöjä $a ja $a->something. +

            Vertaa ja muokkaa käännöstä

            +

            Jotta voisit muokata kielitiedostoja tämän sivun avulla, pitää www-palvelinprosessilla olla kirjoitusoikeus kielitiedostoihin. +

            Joissakin merkkijoissa on käytetty merkintöjä  $a ja $a->something.

            Näillä on merkitty paikat muuttujille, jotka Moodle korvaa käytettäessä merkkijonoa. Jos muuttujia tarvitaan enemmän kuin yksi, saatat törmätä myös erinimisiin muuttujiin.

            \ No newline at end of file diff --git a/lang/fi/help/lesson/mods.html b/lang/fi/help/lesson/mods.html deleted file mode 100644 index 808a1f488f8..00000000000 --- a/lang/fi/help/lesson/mods.html +++ /dev/null @@ -1,4 +0,0 @@ - Oppitunti -
              -

              Oppitunti välittää sisällön kiinnostavalla ja joustavalla tavalla. Se koostuu tietystä määrästä sivuja. Jokainen sivu loppuu yleensä kysymykseen ja mahdollisiin vastauksiin. Opiskelijan vastausvalinnasta riippuen he joko jatkavat seuraavalle sivulle, tai heidät viedään takaisin edelliselle sivulle. Kurssin läpi liikkuminen voi olla suoraviivaista tai monimutkaista, riippuen paljolti esitetyn materiaalin rakenteesta.

              -
            \ No newline at end of file diff --git a/lang/fi/help/lesson/nextpageaction.html b/lang/fi/help/lesson/nextpageaction.html deleted file mode 100644 index 15d1ad56a20..00000000000 --- a/lang/fi/help/lesson/nextpageaction.html +++ /dev/null @@ -1,8 +0,0 @@ -

            Toiminto oikean vastauksen jälkeen

            - -

            Normaali toiminto on seurata vastauksessa määriteltyä hyppyä. Yleensä tämä näyttää tehtävän seuraavan sivun. Opiskelija viedään tehtävän läpi loogisella tavalla, aloittamalla alusta ja lopettamalla loppuun.

            -

            Oppitunti moduulia voidaan käyttää myös Flash card tyyppisissä tehtävissä. Oppilaalle näytetään jonkin verran tietoa ja kysymys yleensä sattumanvaraisessa järjestyksessä. Ilman asetettua loppua tai alkua, vain sarja kortteja näytettynä yksi toisensa jälkeen satunnaisessa järjestyksessä.

            - -

            Tämä vaihtoehto sallii kahden hyvin samankaltaisen Flash card version käytön. Vaihtoehto "Näytä ennen näkemätön sivu" ei koskaan näytä samaa sivua kahdesti(ei vaikka opiskelija ei olisi vastannut kysymykseen liittyvään korttiin/sivuun oikein). Toinen vaihtoehto,(joka ei ole oletuksena) on "Näytä vastaamaton sivu" joka sallii opiskelijan nähdä sivut, jotka ovat saattaneet olla näkyvillä ennenkin, mutta vain jos he ovat vastanneet kysymyksiin väärin.

            - -

            Molemissa Flash card tyyppisistä tehtävistä opettaja voi päättää käyttääkö hän joko kortteja/sivuja tehtävässä tai vain (satunnaista) ala-sarjaa. Tämä tehdään "Näytettävien sivujen määrä" asetuksen kautta.

            \ No newline at end of file diff --git a/lang/fi/help/lesson/overview.html b/lang/fi/help/lesson/overview.html deleted file mode 100644 index 50d660770c2..00000000000 --- a/lang/fi/help/lesson/overview.html +++ /dev/null @@ -1,28 +0,0 @@ -

            Yleistä

            - -
              -
            1. Oppitunti on laadittu tietystä määrästä sivuja ja vaihtoehtoisesti "tietopuun" haaroista.
            2. -
            3. Sivulla on jonkin verran sisältöä ja se normaalisti loppuu kysymykseen. Tästä tulee termi kysymyssivu.
            4. -
            5. Jokaisella sivulla on yleensä sarja vastauksia.
            6. -
            7. Jokaisessa vastauksessa voi olla lyhyt pala tekstiä, joka näytetään, jos vastaus on valittu. Tätä tekstinkappaletta kutsutaan vasteeksi.
            8. -
            9. Jokaiseen vastaukseen on liitetty myös hyppy. Hyppy voi olla suhteellinen - tämä sivu, seuraava sivu, tai ehdoton- määritellen minkä tahansa tehtävän sivuista tai tehtävän lopun.
            10. -
            11. Oletuksena ensimmäinen vastaus hyppää seuraavaan sivuun tehtävässä. Jäljemmät vastaukset hyppäävät samalle sivulle. Tämä tarkoittaa, että opiskelijalle näytetään sama sivu tehtävästä uudelleen, jos he eivät valitse ensimmäistä vastausta.
            12. -
            13. Seuraava sivu on määritelty tehtävän loogisen järjestyksen mukaan. Tämä on sivujen järjestys sellaisena kuin opettaja ne näkee. Tämä järjestys voidaan muuttaa siirtämällä sivuja tehtävän sisällä.
            14. -
            15. Tehtävällä on myös liikkumisjärjestys. Tämä on sivujen järjestys niin kuin opiskelijat ne näkevät. Tämä on määritelty yksittäisille vastauksille määriteltyjen hyppyjen mukaan ja se saattaa olla hyvin erilainen kuin looginen järjestys.(Tosin jos hyppyjä ei ole muutettu niiden oletusarvoista, ne liittyvät vahvasti toisiinsa) Opettajalla on mahdollisuus tarkistaa liikkumisjärjestys.
            16. -
            17. Opiskelijoille näytettäessä vastaukset on yleensä sekoitettu. Tämä tarkoittaa, että opettajan näkökulmasta ensimmäinen vastaus ei välttämättä ole ensimmäinen vastaus opiskelijoille näytetyssä listassa. (Lisäksi joka kerta, kun sama sarja kysymyksiä näytetään, ne todennäköisesti ovat eri järjestyksessä.) Poikkeus on sarja vastauksia jaksottamistyyppisiin kysymyksiin, joissa vastaukset näytetään opettajan asettamassa järjestyksessä.
            18. -
            19. Vastausten lukumäärä voi vaihdella sivulta sivulle. Esimerkiksi, on sallittua, että jotkut sivut voivat loppua oikein/väärin kysymykseen, samalla kun toisilla on kysymyksiä, joissa on yksi oikea vastaus ja kolme, sanotaan, harhauttajaa.
            20. -
            21. On mahdollista perustaa sivu ilman yhtään vastausta. Opiskelijoille näytetään Jatka linkki sarjan sekoitettuja vastauksia sijaan.
            22. -
            23. Tehtävien arvostelun tarkoituksiin, oikeissa vastauksissa on hyppy sivulle, joka on loogisessa järjestyksessä alempana kuin nykyinen sivu. Väärät vastaukset hyppäävät joko samalle sivulle tai sivulle, joka on loogisessa järjestyksessä ylempänä kuin nykyinen sivu. Näin ollen, jos hyppyjä ei ole muutettu, ensimmäinen vastaus on oikea vastaus ja muut vastaukset ovat vääriä vastauksia.
            24. -
            25. Kysymyksillä voi olla enemmän kuin yksi oikea vastaus. Esimerkiksi, jos kaksi vastauksista hyppää seuraavalle sivulle, silloin molemmat vastaukset otetaan oikeana vastauksena. ( Vaikka sama kohdesivu näytetään opiskelijoille, vasteet jotka näytetään matkalla tälle sivulle, saattavat hyvinkin olla erilaisia eri vastauksille.)
            26. -
            27. Tehtävän opettajan näytössä oikeilla vastauksilla on alleviivatut Vastaus Etiketit.
            28. -
            29. Haarataulukot ovat yksinkertaisesti sivuja, joilla on sarja linkkejä toisille sivuille tehtävässä. Tyypillisesti tehtävä saattaa alkaa haarataulukolla, joka toimii Sisällysluettelona.
            30. -
            31. Jokaiselle linkillä haarataulukossa on kaksi osaa, kuvaus ja aihe sivusta, jolle hypätään.
            32. -
            33. Haarataulukko jakaa tehtävät tehokkaasti lukuisiin haaroihin (tai osioihin). Jokainen haara voi sisältää tietyn määrän sivuja (todennäköisesti kaikki samaan aiheeseen liittyviä). Haaran loppu on yleensä merkitty Haaran loppu sivulla. Tämä on erityinen sivu joka, oletuksena, palauttaa opiskelijat takaisin preceeding haarataulukkoon. ( "Palaa" hyppy Haaran Loppu sivulla voidaan muuttaa, jos tarpeellista, muokkaamalla sivua.)
            34. -
            35. Tehtävässä voi olla enemmän kuin yksi haarataulukko. Esimerkiksi, tehtävä saattaa hyödyllisesti olla rakennettu niin, että specialist(???) pisteet ovat ala-haaroja pääaihe-haarojen sisässä.
            36. -
            37. On tärkeää antaa opiskelijoille keino tehtävän lopettamiseen. Tämä saatetaan saada tehdyksi liittämällä "Lopeta Tehtävä" linkki päähaarataulukkoon. Tämä hyppää (kuvitellulle) Tehtävän Lopetus sivulle. Toinen vaihtoehto tehtävän viimeiselle haaralle (tässä "viimeiselle" käytetään loogisen järjestyksen mielessä) on yksinkertaisesti jatkaa tehtävän loppuun asti, siis silloin, kun Haaran Loppu- sivu ei päätä sitä.
            38. -
            39. Kun tehtävä sisältää yhden tai useamman haarataulukon, on suositeltavaa asettaa "Kysymysten minimimäärä" parametri johonkin järkevään arvoon. Tämä asettaa alemman rajan nähtyjen sivujen määrään kun arvosana on laskettu. Ilman tätä parametria opiskelija saattaa vierailla yhdellä ainoalla haaralla tehtävässä, vastata kaikkiin kysymyksiin oikein ja lähteä tehtävästä maksimaalisilla pisteillä.
            40. -
            41. Lisäksi, kun sivuilla on haarataulukko, opiskelijalla on mahdollisuus vierailla samassa haarassa useammin kuin kerran. Kuitenkin, arvosana lasketaan käyttäen ainutlaatuisten(uusien) vastausten lukumäärää. Joten vastaaminen toistuvasti samaan sarjaan kysymyksiä ei nosta arvosanaa. (Itse asiassa päinvastoin, se alentaa arvosanaa, koska nähtyjen sivujen määrää käytetään nimittäjässä, kun arvosanojen laskeminen sisältää toistoja.) Jotta annettaisiin opiskelijoille reilu kuva heidän edistymisestään tehtävässä, heille näytetään yksityiskohtia siitä miten monta kysymystä he ovat vastanneet oikein, kuinka monta sivua he ovat nähneet, ja heidän tämänhetkinen arvosana jokaisessa haarataulukkosivussa.
            42. -
            43. Tehtävän loppu saavutetaan joko hyppäämällä täsmälleen siihen kohteeseen tai hyppäämällä seuraavalle sivulle tehtävän viimeiseltä(loogisesti) sivulta. Kun tehtävän loppu on saavutettu, opiskelija saa onnitteluviestin ja näkee arvosanansa. Arvosana on (oikein vastattujen kysymysten määrä/ nähtyjen sivujen määrä) * tehtävän arvosana.
            44. -
            45. Jos tehtävän loppua ei saavuteta ja opiskelija vain lähtee, opiskelijan saapuessa tehtävään uudelleen hänelle annetaan vaihtoehto joko alkaa alusta tai jatkaa tehtävää siitä missä hän vastasi viimeksi oikein.
            46. -
            47. Tehtävälle, joka sallii uusintoja, opettajalla on vaihtoehtoina käyttää joko parasta arvosanaa tai arvosanojen keskiarvoa tehtävän "lopullisena" arvosanana. Se arvosana näytetään Arvosana sivulla.
            48. -
            \ No newline at end of file diff --git a/lang/fi/help/lesson/questionoption.html b/lang/fi/help/lesson/questionoption.html deleted file mode 100644 index dfee2dc4ec4..00000000000 --- a/lang/fi/help/lesson/questionoption.html +++ /dev/null @@ -1,10 +0,0 @@ -

            Kysymysten asetukset

            - -

            Muutamilla kysymystyypeistä on asetuksia jotka aktivoidaan klikkaamalla asetuspainiketta. Kysymystyypit ja asetusten merkitykset on käsitelty yksityiskohtaisemmin alapuolella. -

              - -
            1. -

              Monivalinta On useita Monivalintakysymyksiä joita kutsutaan "Monivalinta-Monivastaus" kysymyksiksi. Jos tämä vaihtoehto on valittu, opiskelijaa vaaditaan valitsemaan kaikki oikeat vastaukset vastausten sarjasta. Kysymys saattaa kertoa tai olla kertomatta kuinka monta oikeaa vastausta on. Esimerkiksi "Ketkä seuraavista olivat Yhdysvaltain presidenttejä?" ei kerro. Kun taas "Valitse kaksi Yhdysvaltain presidenttiä seuraavalta listalta" kertoo. Oikeiden vastausten määrä voi olla yhdestä useaan vaihtoehtoon. (Monivalinta monivastaus kysymys yhdellä oikealla vastauksella on erilainen kuin Monivalinta kysymys, koska ensimmäinen sallii opiskelijan valita enemmän kuin yhden vaihtoehdon, samalla kun jäljempi ei salli.)

              -

              Lyhyt Vastaus Oletuksena vertailu jättää aakkoskoon huomiotta. Jos kysymysvaihtoehto on valittu, vertailut ovat aakkoskoosta riippuvia.

              - -
            2. \ No newline at end of file diff --git a/lang/fi/help/lesson/questiontypes.html b/lang/fi/help/lesson/questiontypes.html deleted file mode 100644 index 9ee7fa247ab..00000000000 --- a/lang/fi/help/lesson/questiontypes.html +++ /dev/null @@ -1,26 +0,0 @@ -

              Kysymystyypit

              - -

              Oppitunti-moduulin tällä hetkellä tukemat kysymystyypit ovat seuraavat: -

              -

              Monivalinta Tämä on oletus kysymystyyppi. Monivalinta kysymykset ovat suosittuja kysymyksiä, joissa opiskelijaa pyydetään valitsemaan vastaus sarjasta vaihtoehtoja. Oikea vastaus vie opiskelijan edemmäs tehtävässä, väärä vastaus ei. Vääriä vastauksia kutsutaan joskus "häiritsijöiksi" ja näiden kysymysten hyödyllisyys usein tukeutuu enemmän häiritsijöiden laatuun, kuin kysymyksiin itseensä tai niiden oikeisiin vastauksiin. -

              Jokaisella vastauksella voi valinnaisesti olla vaste. Jos vastetta ei ole syötetty, silloin oletusvaste: "Tämä on oikea vastaus" tai "Tämä on väärä vastaus" näytetään opiskelijalle. -

              On mahdollista, että monivalintakysymykseen on enemmän kuin yksi oikea vastaus. Toiset oikeat vastaukset saattavat antaa opiskelijalle eri vasteen ja hypyn toiselle sivulle tehtävässä, mutta eivät eroa arvostelussa, (tämä tarkoittaa, että jotkut vastaukset eivät ole oikeampia kuin toiset, ei ainakaan arvosteluissa.) On mahdollista, että kaikki vastaukset ovat oikein ja ne saattavat viedä opiskelijan tehtävän eri osiin (eteenpäin), riippuen siitä mikä vastaus on valittu. -

              On myös monivalinta kysymyksiä joita kutsutaan "Monivalinta-Monivastaus" kysymyksiksi. Nämä vaativat opiskelijaa valitsemaan kaikki oikeat vastaukset vastausten sarjasta. Kysymys saattaa kertoa tai olla kertomatta kuinka monta oikeaa vastausta on. Esimerkiksi "Ketkä seuraavista olivat Yhdysvaltain presidenttejä?" ei kerro tätä. Kun taas: "Valitse kaksi Yhdysvaltain presidenttiä seuraavalta listalta" kertoo. Oikeiden vastausten määrä voi olla yhdestä useaan vaihtoehtoon.(Monivalinta Monivastaus kysymys yhdellä oikealla vastauksella on erilainen kuin pelkkä Monivalintakysymys, koska ensimmäinen sallii opiskelijan valita enemmän kuin yhden vaihtoehdon, samalla kun jäljempi ei salli.) -

              Oikeat vastaukset on merkitty käyttäen eteenpäin hyppyjä, väärät vastaukset samalla sivulla tai takaisin hypyillä. Kun on enemmän kuin yksi oikea vastaus, kaikkien hyppyjen pitäisi mennä samaan paikkaan, samoin väärien vastausten. Jos näin ei ole, varoitus annetaan opettajan näkymään harjoituksesta. Oikea vaste, jos tarpeellista, tulisi antaa ensimmäiseen oikeaan vastaukseen ja väärä vaste, jos tarpeellista, ensimmäiseen väärään vastaukseen. Vasteet muihin vastauksiin jätetään huomiotta (ilman varoitusta). -

              Lyhyt vastaus Opiskelijaa kehotetaan kirjoittamaan lyhyt pätkä tekstiä. Tämä tarkistetaan yhtä, tai useampaa vastausta vasten. Vastaukset voivat olla joko oikein tai väärin. Jokaisella vastaukselle voi valinnaisesti olla vaste. Jos vastetta ei syötetä vastaukselle, oletusvaste "Tämä on oikea vastaus" tai "Tämä on väärä vastaus" näytetään opiskelijalle. Jos syötetty teksti ei vastaa mitään kysymyksen vastauksista, vastaus on väärin ja opiskelijalle näytetään oletuksena väärä vastaus. -

              Oletuksena vertailut jättävät aakkoskoon huomiotta. Jos kysymysvaihtoehto on valittu, vertailut ovat aakkoskoosta riippuvia. -

              Tähtimerkkiä (*) voidaan käyttää vastauksissa "jokeri" merkkinä. Se vastaa mitä tahansa merkkijonoa (mukaanlukien ei mitään). Esimerkiksi, vastaus "Pitkä*" vastaa "pidempi", "pisin" ja "pitkä". Jos yksi vastauksista on vain "*"(yksi tähtimerkki) tämä vastaus vastaa mitä tahansa, se on normaalisti käytetty viimeisenä "ota-kaikki" vastauksena. Vertailuprosessi käy läpi vastaukset siinä järjestyksessä missä ne ilmestyvät näytölle. Kun vastaava on löydetty, prosessi pysähtyy ja vastaava tulos (ja vaste, jos saatavissa) palautetaan. Joten, jos esimerkiksi vastaukset ovat Minä, Min* ja * (tässä järjestyksessä), syöttö "minulla" vastaa toista vastausta ja, tässä tapauksessa, kolmatta vastausta, vaikkakin vastaavuutta ei huomioida.

              -

              Jos tähtimerkkiä (*) oikeasti tarvitaan vastauksessa, sen pitäisi syöttää: /*, kenoviiva tähtenä.

              - -

              - -

            3. Oikein/Väärin Vastauksella tämän tyyppiseen kysymykseen on vain kaksi vaihtoehtoa, oikein tai väärin. Opiskelijaa kehotetaan valitsemaan oikea vaihtoehto. Tämän tyyppinen kysymys on oikeastaan monivalinta kysymys, jossa on vain kaksi vaihtoehtoa. -

              Vertailu Nämä ovat melko voimakkaita ja joustavia kysymyksiä. Ne koostuvat listasta nimiä tai lausuntoja, joita pitää verrata toiseen listaan, jossa on nimiä ja lausuntoja. Esimerkiksi " Yhdistä Pääkaupunki ja maa" kahdella listalla Japani, Kanada, Italia ja Tokio, Ottawa, Rooma. On mahdollista saada toistetut merkinnät yhteen listaan, mutta pitää huolellisesti tehdä toistoista samanlaiset. Esimerkiksi "Tunnista näiden olentojen tyypit" listoilla Varpunen, Lehmä, Muurahainen, Koira ja Lintu, Eläin, Hyönteinen, Eläin.

              -

              Luotaessa tämän tyyppistä kysymystä ensimmäisen listan kohdat menevät Vastaus laatikoihin ja toisen listan kohdat menevät Vaste laatikoihin. Kun nämä on luotu, näkyy järkevämpi otsikkokaavio. Opiskelijan onnistuneesti yhdistettyä listojen kohdat, käytetään ensimmäisen vastauksen hyppyä. Epäonnistunut vastaus hyppää toisen vastauksen sivulle. Vastaus ei tue itse määriteltyjä/kirjoitettuja vasteita, opiskelijalle kerrotaan vain kuinka monta vastausta on oikein, tai jos kaikki vastaukset ovat oikein.

              -

              Toisin kuin monivalintakysymys, jossa vaihtoehdot on näytetty satunnaisessa järjestyksessä, ensimmäistä listaa ei sekoiteta, vaan näytetään samassa järjestyksessä kuin se on syötetty. Tämä sallii "järjestettyjen" kysymysten tekemisen. Ajattele kysymystä: "Laita seuraavat syntymäjärjestykseen, ensimmäinen ensin" listoilla; 1., 2.,3.,4., ja Longfellow, Lawrence, Lowell, Larkin. Toinen lista, tietenkin, sekoitetaan ennen kuin sitä käytetään kysymyksessä.

              -

              Numeeriset Tämän tyyppiset kysymykset vaativat numeron vastaukseksi. Helpoimmillaan se vaatii vain yhden vastauksen määrittelyä. Esimerkiksi "Mitä on 2 plus 2?" vastauksella 4 antaa eteenpäin hypyn. Joka tapauksessa, on parempi määritellä vaihteluväli, koska numeeristen arvojen kansainvälinen pyöristäminen saattaa tehdä yhden numeron vertailusta pikemminkin hakuammuntaa. Näin ollen, jos kysymys olisi "Mitä on 10 jaettuna 3:lla" olisi tarpeellista antaa vastaus "Minimi:Maksimi", eli kaksi arvoa erotettuna kaksoispisteellä (:). Näin ollen jos 3.33 : 3.34 on vastaukselle annettu hyväksyttävä vaihteluväli, silloin vastaukset 3.33, 3.333, 3.3333... kaikki hyväksyttäisiin oikeina vastauksina. "Väärät" vastaukset sisältäisivät 3.3 (vähemmän kuin minimi) ja 3.4 (enemmän kuin maksimi).

              -

              Enemmän kuin yksi vastaus sallitaan ja vastaus voi olla joko yksittäinen tai pari arvoja. Huomaa, että järjestys jossa vastaukset testataan, on Vastaus 1, Vastaus 2... joten pitää olla huolellinen, että saavutettaisiin haluttu vaste. Esimerkiksi kysymyksellä "Milloin Larkin syntyi?" voisi olla yksi arvo 1922, tarkka vastaus, ja muutama arvo 1920:1929, 20-luku, vähemmän tarkka vastaus. Järjestys jossa nämä arvot pitäisi testata, on ilmiselvästi, 1922 ja sen jälkeen 1920:1929. Ensimmäisellä vastauksella voisi olla vaste "Tämä on täysin oikein", kun taas muilla vastauksilla vaste voisi olla "Tämä on lähellä, sinulla on oikea vuosikymmen".

              -

              Vääriä vastauksia voidaan antaa, mutta riippuen vaihteluvälistä, pitäisi ne huolellisesti asettaa oikeiden vastausten jälkeen. Esimerkiksi lisätessä väärä vastaus 3:4 kysymykseen "10 jaettuna 3:lla", sen täytyy tulla oikean vastauksen jälkeen. Eli vastaukset on määrätty 3.33:3.34 ("oikea" vastaus) sen jälkeen 3.4 ("väärä" vastaus, mutta ei kauhean väärä!)

              -
            4. - -
          \ No newline at end of file diff --git a/lang/fi/help/lesson/retake.html b/lang/fi/help/lesson/retake.html deleted file mode 100644 index 37c4c663f7c..00000000000 --- a/lang/fi/help/lesson/retake.html +++ /dev/null @@ -1,7 +0,0 @@ -

          Tehtävän uusimisen salliminen

          - -

          Tämä asetus määrittää voivatko opiskelijat tehdä tehtävän useamman kerran vai eivät. Opettaja voi päättää, että tehtävä sisältää materiaalia jonka opiskelijan tulisi tuntea läpikotaisin. Siinä tapauksessa toistuvat tehtävän katsomiset tulisi sallia. Jos materiaalia käytetään enemmänkin tenttinä, silloin opiskelijoiden ei pitäisi saada uusia tehtävää.

          -

          Kun opiskelijoiden sallitaan uusia tehtävä, arvosanasivulla näytettävät arvosanat ovat joko keskiarvo uusinnoista tai niiden paras tulos. Seuraava parametri määrittelee mikä näistä arvosteluvaihtoehdoista on käytössä.

          -

          Huomaa, että Kysymys Analyysi käyttää aina vastauksia tehtävän ensimmäisestä yrityksestä, uusinnat tämän jälkeen jätetään huomiotta.

          - -

          Oletuksena tämä valinta on Kyllä, tarkoittaen, että opiskelijat voivat uusia tehtävän. Voidaan olettaa, että ainoastaan poikkeuksellisissa olosuhteissa tämä valinta olisi Ei.

          \ No newline at end of file diff --git a/lang/fi/help/lesson/useeditor.html b/lang/fi/help/lesson/useeditor.html deleted file mode 100644 index d2a7442f680..00000000000 --- a/lang/fi/help/lesson/useeditor.html +++ /dev/null @@ -1,12 +0,0 @@ -

          HTML Editorin käyttö

          - -

          Sivuja muokatessa, tämä valinta mahdollistaa HTML editorin käytön (jota kutsutaan tästä eteenpäin pelkäksi editoriksi) yksinkertaisten tekstialuelaatikoiden sijaan. Editori sallii tekstin yksinkertaisen muokkauksen ja monipuolisten toimintojen lisäämisen. Esimerkiksi linkit.

          -

          Editori kytketään päälle klikkaamalla laatikkoa Käytä Editoria kuvakkeen vieressä. Editori liittyy kohteisiin yksilöllisisesti. Esimerkiksi, editorin päälle kytkeminen Vastaus 1 kohtaan, asettaa editorin päälle vain tälle kohdalle, se ei aseta sitä kaikille vastauslaatikoille.

          -

          Jos jotkut sivun kohteista vaativat editoria, klikkaa ensin Käytä Editoria laatikkoja (Niiden pitäisi sen jälkeen sisältää rastit.) Sivu näytetään sen jälkeen uudelleen (päivitetään), jotta editori saataisiin akivoiduksi. Tämä tehdään klikkaamalla Näytä Sivu Uudelleen painiketta sivun alareunassa.

          -

          Huomaa, että editorin käytössä pitää olla huolellinen. Yleensä sen ei pitäisi aiheuttaa ongelmia., mutta sitä ei suositella Lyhyt Vastaus - tehtävän vastauksiin tai Numeerisiin kysymyksiin . Editori saattaa lisätä ylimääräisiä "näkymättömiä" HTML merkkejä, jotka estävät vertailuja toimimasta odotetusti. Lisäksi, kuvauksia haarataulukoissa käytetään Painikkeissa ja jos ne sisältävät yhtään HTML merkkejä, tämä saattaa aiheuttaa ongelmia. Niiden vastauksien, joita käytetään vain näytettäväksi, esimerkiksi monivalinta kysymysten vastaukset, kanssa ei ole ongelmia. Taaskaan editorin käyttö vaste kohdissa ei pitäisi aiheuttaa ongelmia.

          - -

          Jos ongelmia on odotettavissa minkään tekstikohdan kanssa, on melko turvallista ottaa editori pois päältä (poistamalla rasti Käytä Editoria laatikosta). Kun sivu näytetään uudelleen, "raaka" teksti nähdään tekstialue laatikossa. Teksti voidaan editoida vaatimusten mukaan. Itse asiassa, editorin kytkemisen toistuvasti päälle ja pois tietylle kohteelle ei pitäisi muuttaa tekstiä.

          - -

          Käytä Editoria valinnan "tila" on tallennettu jokaisen kohdan kanssa. Näin ollen, jos sivu on uudelleen-editoitu, kohdat jotka käyttivät editoria ilmestyvät taas editorin sisässä.

          - -

          Lopuksi, editori on melko raskas (eli kuluttaa tietokoneen laskenta-aikaa) selaimen sisässä. Jos kohteet eivät vaadi editorin käyttöä, on nopeampaa ja varmempaa, käyttää tavallista tekstialue laatikkoa.

          \ No newline at end of file diff --git a/lang/fi/help/mods.html b/lang/fi/help/mods.html index be203c2a4e5..3ad3bb93a36 100644 --- a/lang/fi/help/mods.html +++ b/lang/fi/help/mods.html @@ -1,2 +1,22 @@ -

          Aktiviteettimoduulit

          -

          Moodle tarjoaa erilaisia aktiviteettimoduleita, joita voit käyttää kurssillasi.

          \ No newline at end of file +

          Aktiviteettimodulit

          +

          Moodle tarjoaa erilaisia aktiviteettimoduleita, joita voit käyttää kurssillasi.

          +

          Foorumit

          +
            +

            Tämä aktiviteetti saattaa olla kaikkein tärkein - täällä käydään suurin osa keskusteluista. Foorumit voidaan rakentaa eri tavoin, ja niihin voi kuulua jokaisen viestin vertaisarviointia. Viestejä voidaan lukea useilla formaateilla ja ne voivat sisältää liitteitä. Tilaamalla foorumin kurssin osallistuja saa kopion jokaisesta uudesta viestistä sähköpostiinsa. Opettaja voi halutessaan määrätä kurssilaiset tilaamaan foorumin.

            +

            Lyhyttehtävät

          +
            +

            Tämä moduli on tärkeä siksi, että se tarjoaa opiskelijoille pohdittavaa. Opettaja pyytää opiskelijaa pohtimaan tiettyä aihetta, ja opiskelija voi muokata ja hioa vastaustaan jonkin aikaa. Vastauksen näkee vain opettaja, joka voi antaa palautetta ja arvosanan jokaiselle lyhyttehtävälle. Yleensä on hyvä antaa n. yksi lyhyttehtävä viikossa.

            +

            Aineistot

          +

          Aineistot ovat sisältöä: informaatiota, jota opettaja haluaa kurssilla jakaa. Ne voivat olla kurssin palvelimelle ladattuja valmiita tiedostoja, suoraan Moodleen muokattuja sivuja tai ulkopuolisia verkkosivuja, jotka toimivat kurssin osana.

          +

          Tehtävät

          +
            +

            Tässä modulissa opettaja määrittelee tehtävän, joka vaatii opiskelijaa tuottamaan digitaalista sisältöä (missä tahansa muodossa) ja palauttamaan sen lataamalla palvelimelle.Tyypillisiä tehtäviä ovat mm. esseet, projektit ja raportit. Tässä modulissa on mahdollista antaa arvosanoja.

          +

          Tentit

          +
            +

            Tässä modulissa opettaja voi suunnitella ja pitää kokeita, jotka sisältävät monivalintatehtäviä, oikein/väärin -kysymyksiä ja muita lyhyesti vastattavia kysymyksiä. Kysymykset tallennetaan luokiteltuun tietokantaan ja niitä voidaan käyttää uudelleen ja uudelleen kurssin aikana ja jopa kurssien välillä. Tenteissä voidaan sallia useita yrityksiä. Jokainen yritys kirjataan automaattisesti, ja opettaja voi päättää antaako hän palautetta vai näyttääkö oikeat vastaukset. Tässä modulissa on mahdollista antaa arvosanoja.

            +

            Monivalinnat

          +
            +

            Monivalintatoiminto on hyvin yksinkertainen: opettaja asettaa kysymyksen ja määrittelee vastausvaihtoehdot. Saattaa olla hyödyllistä pitää pikakysely ja antaa luokan äänestää jostain kurssiin liittyvästä asiasta, ja näin virittää opiskelijat ajattelemaan tiettyä aihetta.

          +

          Palautekyselyt

          +
            +

            Palautekyselymoduli tarjoaa useita hyväksi todistettuja tutkimusvälineitä online-ympäristöissä tapahtuvan oppimisen tutkimiseen ja stimulointiin. S provides a number of Teachers can use these to gather data from their students that will help them learn about their class and reflect on their own teaching.

          \ No newline at end of file diff --git a/lang/fi/help/questionnaire/qmanage.html b/lang/fi/help/questionnaire/qmanage.html deleted file mode 100644 index b09f72a554d..00000000000 --- a/lang/fi/help/questionnaire/qmanage.html +++ /dev/null @@ -1,2 +0,0 @@ -

          Hallitse tutkimuksia käyttäen phpESP:tä

          -

          Kyselymoduuli käyttää phpESP:tä luodakseen ja hallitakseen tutkimuksia. Käytä tätä linkkiä hallitaksesi tutkimuksiasi.

          \ No newline at end of file diff --git a/lang/fi/help/quiz/attempts.html b/lang/fi/help/quiz/attempts.html index ac16e2e3443..2a19f6375df 100644 --- a/lang/fi/help/quiz/attempts.html +++ b/lang/fi/help/quiz/attempts.html @@ -1,3 +1,3 @@

          Tenttiyritykset

          Opiskelijat voivat yrittää läpäistä tenttiä useamman kerran. -

          Tämä voi tehdä tentin tekemisestä enemmänkin oppimiseen liittyvän toiminnon kuin vain arvioinnin.

          \ No newline at end of file +

          Tämä voi edistää heidän oppimistaan enemmän kuin tentin tekeminen vain kerran.

          \ No newline at end of file diff --git a/lang/fi/help/quiz/decimalpoints.html b/lang/fi/help/quiz/decimalpoints.html deleted file mode 100644 index 084559c0516..00000000000 --- a/lang/fi/help/quiz/decimalpoints.html +++ /dev/null @@ -1,3 +0,0 @@ -

          Desimaalien määrä

          - -

          Tämä asetus määrittää arvosanojen näyttämiseen käytetyn luvun tarkkuuden.

          \ No newline at end of file diff --git a/lang/fi/help/quiz/grademethod.html b/lang/fi/help/quiz/grademethod.html index 03b18704bb1..f26fabaf4a7 100644 --- a/lang/fi/help/quiz/grademethod.html +++ b/lang/fi/help/quiz/grademethod.html @@ -7,12 +7,12 @@

          Keskiarvo 

            -

            Lopullinen arviointi on keskiarvo kaikista yrityksistä.

          +

          Lopullinen arviointi on keskiarvo kaikista yrityksistä.

        Ensimmäinen yritys 

          -

          Lopullinen arviointi on ensimmäinen kaikista yrityksistä (muut hylätään).

          +

          Lopullinen arviointi on ensimmäinen  kaikista yrityksistä (muut hylätään).

        Viimeinen yritys 

          -

          Lopullinen arviointi on viimeinen kaikista yrityksistä (muut hylätään).

        \ No newline at end of file +

        Lopullinen arviointi on viimeinen  kaikista yrityksistä (muut hylätään).

        \ No newline at end of file diff --git a/lang/fi/help/quiz/import.html b/lang/fi/help/quiz/import.html index 96c5b456361..20abe083d68 100644 --- a/lang/fi/help/quiz/import.html +++ b/lang/fi/help/quiz/import.html @@ -1,116 +1,23 @@

        Uusien kysymysten tuominen

        -

        Tämän toiminnon avulla voit tuoda kysymyksiä ulkopuolisista tekstitiedostoista lomakkeen avulla. -

        Järjestelmä tukee useita tiedostomuotoja: - - -

        GIFT muoto

        -
          -

          GIFT on kattavin tiedoston vienti- tai tuontimuoto, jolla voi siirtää Moodle tenttikysymyksiä tekstitiedostoon. GIFT on alunperin suunniteltu helpoksi työkaluksi, jolla opettaja voi kirjoittaa kysymyksiä tekstitiedostoon. GIFT tukee monivalintaa, oikein/väärin -kysymyksiä, lyhytvastauksia, yhdistelyä ja numeerisia kysymyksiä, sekä "puuttuva sana" -aukkotehtäviä. Erilaisia kysymystyyppejä voi tallentaa samaan tiedostoon ja tietostotyyppi tukee myös rivien kommentointia, kysymysten nimiä, palautetta ja prosentuaalisesti painotettua arvostelua. Tässä muutamia esimerkkejä:

          -
          -Kuka oli Sepeteuksen poikien isä? {~Ei kukaan ~Virtanen =Sepeteus}
          -
          -Sepeteus oli poikiensa {~veli =isä ~äiti}.
          -
          -Sepeteus oli poikiensa äiti.{FALSE}
          -
          - Mitä sukua Sepeteuksen pojat ovat Sepeteukselle?{=poikia =lapsia}
          -
          -Koska Suomi itsenäistyi?{#1917}
          -
          - -

          Lisätietoja GIFT muodosta

          -
        - -

        Aiken muoto

        -
          -

          Aiken-muoto on hyvin yksinkertainen tapa luoda monivalintakysymyksiä käyttämällä selkeää, helposti luettavaa muotoa. Esimerkiksi:

          -
          -Mikä on ensiavun tarkoitus?
          -A. Hengen pelastaminen, enempien vaurioiden estäminen, terveyden varjeleminen
          -B. Lääkärinavun tarjoaminen kaikille loukkaantuneille tai haavoittuneille
          -C. Enempien vaurioiden estäminen
          -D. Apua etsivien uhrien avustaminen
          -ANSWER: A
          -
          - -

          Lisätietoja Aiken muodosta

          -
        - - -

        Puuttuva sana -muoto

        +

        Tämän toiminnon avulla voit tuoda kysymyksiä ulkopuolisista tekstitiedostoista. +

        Järjestelmä tukee useita tavallisia tiedostomuotoja: +

        Missing word format

          Tämä muoto tukee vain monivalintakysymyksiä. Vastaukset erotetaan toisistaan tildellä (~), oikean vastauksen edessä on yhtäläisyysmerkki (=). Esimerkiksi:

          Heti kun alamme vauvana tutkia ruumiinosiamme meistä tulee {=anatomian ja fysiologian ~refleksologian ~luonnontieteen}opiskelijoita, ja tässä mielessä me pysymme opiskelijoina koko ikämme.
          -

          Lisätietoja puuttuva sana muodosta

          -
        -

        AON

        +

        Lisätietoja:

        +

        IMS QTI format

          -

          Tämä on muutoin sama kuin puuttuva sana -muoto, paitsi että kysymysten tuonnin jälkeen kaikki lyhytvastaukset muutetaan neljän ryhminä yhdistelytehtäviksi. -

          -

          Tämän lisäksi kaikki monivalintakysymykset sekoitetaan satunnaiseen järjestykseen kysymysten tuonnin aikana. - -

          AON-nimi tulee organisaatiosta, joka tuki monien kysymysominaisuuksien kehitystä. -

          -
        - - -

        Blackboard

        +

        Kysymysten ja testien yhteensopivuuden standardimuoto, IMS:ltä. +

        Not yet implemented +

        More info:

        +

        WebCT format

          -

          Tällä moduulilla voi tuoda Blackboard:n vientimuotoon tallennettuja kysymyksiä. Se käyttää XML funktioita, jotka käännetään käyttämääsi PHP:en. -.

          - -

          Lisätietoja Blackboard muodosta

          -
        - - -

        WebCT

        +

        The format of files exported from WebCT. +

        Not yet implemented +

        More info:

        +

        Custom format

        - - -

        Course Test Manager

        -
          -

          Tällä modulilla voi tuoda Course Test Manager -koepankkiin tallennettuja kysymyksiä. -Se hyödyntää eri tapoja päästä käsiksi testipankkiin, joka on Microsoft Access tietokanta. Tavat riippuvat siitä, onko Moodle asennettu Windows vai Linux palvelimelle. -

          -

          Windowsissa access-tietokanta voidaan siirtää aivan kuin mikä tahansa muukin tuotava tiedosto. -

          -

          Linuxissa on asennettava Windows-kone samaan verkkoon Course Test Manager -tietokannan kanssa, ja käytettävä ODBC Socket Serveriä, joka käyttää XML:ää siirtääkseen tietoa Linux-palvelimella sijaitsevaan Moodleen. -

          Please read the full help file below before -using this import class.

          - - -

          Lisätietoja CTM muodosta

          -
        - - - -

        Upotetut vastaukset(Cloze)

        -
          -

          Tämä erityinen tiedostontuontityyppi tuo vain yhden tyyppisiä kysymyksiä: upotettuja vastauksia (Cloze) -käyttävää muotoa. - - -

          - -

          Lisätietoja Cloze muodosta

          -
        - - - -

        Oma

        -
          -

          Jos haluat tuoda jonkun oman tiedostotyyppisi, voit tehdä sen itse muokkaamalla tiedostoa mod/quiz/format/custom.php - - -

          Tarvittavan uuden koodin määrä on varsin pieni - pitää vain saada jäsennettyä yksi kysymys annetusta tekstistä. - - -

          Lisätietoja omien tiedostotyyppien tuomisesta

          -
        - - -

        Lisää tiedostotyyppejä on tulossa, mm. WebCT, IMS QTI ja mitä ikinä Moodlen käyttäjät toteuttavatkaan!

        - +

        If you have your own format that you need to import, you can implement it yourself by editing mod/quiz/format/custom.php +

        The amount of new code needed is quite small - just enough to parse a single question from given text. +

        More info:

        diff --git a/lang/fi/help/quiz/maxgrade.html b/lang/fi/help/quiz/maxgrade.html index 79ba2d2ba92..68d8cc35b16 100644 --- a/lang/fi/help/quiz/maxgrade.html +++ b/lang/fi/help/quiz/maxgrade.html @@ -1,5 +1,4 @@

        Maksimipisteet

        Tentille asetettu maksimipistemäärä on se, mihin kaikkia arvosanoja verrataan.

        Esimerkiksi, maksimipistemäärä voidaan asettaa 20:ksi, koska tentin arvo on 20% koko kurssista. -

        Vaikka tehtävässä saattaa olla 10 kysymystä joiden yhteispistearvo on 50, arvosanat "porrastetaan" vastaamaan maksimipistemäärää 20. -

        +

        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.

        diff --git a/lang/fi/help/quiz/multichoice.html b/lang/fi/help/quiz/multichoice.html index e0133090c89..c7b9de93fe5 100644 --- a/lang/fi/help/quiz/multichoice.html +++ b/lang/fi/help/quiz/multichoice.html @@ -1,5 +1,5 @@

        Monivalintakysymykset

        -

        Vastaaja valitsee kysymykseen (joka voi sisältää kuvan) vastauksen useammasta vastausvaihtoehdosta. Monivalintakysymyksiä on kahta eri tyyppiä: sellaisia joissa on yksi oikea vastaus ja sellaisia, joissa on useampi oikea vastaus. +

        Vastaaja valitsee vastauksensa kysymykseen (joka voi sisältää kuvan) useammasta vastausvaihtoehdosta. Monivalintakysymyksiä on kahta eri tyyppiä: sellaisia joissa on yksi oikea vastaus tai useampi oikea vastaus.

        Yhden oikean vastauksen kysymyksissä on mahdollista valita vain yksi vastaus. Yleisesti ottaen tämänkaltaisesta kysymyksestä pitäisi saada vain positiivisia pisteitä.

        Monivastauskysymyksissä on mahdollisuus valita joko yksi tai useampia vastauksia - jokaisesta vastauksesta voi saada positiivisia tai negatiivisia pisteitä. Kaikkien vaihtoehtojen valitseminen ei siis välttämättä tuota hyvää arvosanaa. Jos kokonaispistemäärä on negatiivinen, silloin kyseisen kysymyksen pistemääräksi merkitään nolla. Ole huolellinen, sillä on mahdollista tehdä kysymyksiä, joiden pistemäärä on yli 100 %.

        Lopuksi, jokaisesta vastauksesta (oikeasta tai väärästä) tulisi saada palautetta - tämä palaute näkyy vastaajalle jokaisen hänen vastauksensa vieressä (jos tentti itsessään on suunniteltu näyttämään palautetta).

        \ No newline at end of file diff --git a/lang/fi/help/quiz/popup.html b/lang/fi/help/quiz/popup.html deleted file mode 100644 index a337a10a7b6..00000000000 --- a/lang/fi/help/quiz/popup.html +++ /dev/null @@ -1,15 +0,0 @@ -

        Näytä "suojatussa" ikkunassa

        - -

        Suojattu ikkuna koittaa estää joiden niiden keinojen käyttämisen joilla käyttäjät voivat huijata tentissä.

        - -

        Suojaus tarkoitaa seuraavaa: -

          -
        • Javascript on oltava päällä selaimessa .
        • -
        • Tentti näytetään uudessa koko ruudun ikkunassa.
        • -
        • Jotkut hiiritoiminnosta on estetty.
        • -
        • Jotkut näppäimistökomennot on estetty.
        • -
        -

        - -

        HUOM: Tämä suojaus ei ole vedenpitävä. Älä luota pelkästään tähän suojaukseen ainoa suojauksena. Webympäristössä on mahdotonta tehdä täysin turvallista tenttiä joten jos epäilet että opiskelijasi tulevat huijaamaan tentissä,keksi jotain muuta.Luo kysymyksitä iso tietokanta josta valitset satunnaisia kysymyksiä, tai ehkä on parempi käyttää arvioinnin perusteena jotain muuta esim. opiskelijan aktiivisuutta keskustelualueilla, sanastojen rekennuskykyä, wikiin osallistumista yms.. -

        \ No newline at end of file diff --git a/lang/fi/help/quiz/questiontypes.html b/lang/fi/help/quiz/questiontypes.html index c8684e79748..45fa4260c9c 100644 --- a/lang/fi/help/quiz/questiontypes.html +++ b/lang/fi/help/quiz/questiontypes.html @@ -3,67 +3,16 @@

        Monivalinta

          Vastaus kysymykseen (joka voi sisältää kuvan) valitaan eri vastausvaihtoehdoista. Monivalintakysymyksiä on kahta tyyppiä: yhden oikean vastauksen kysymykset ja useamman oikean vastauksen kysymykset. -

          Lisätietoja monivalintakysymyksistä

          -
        -

        Lyhytvastaus

        +

        Lisätietoja:

        +

        Lyhyt vastaus

          -

          Kysymykseen (joka voi sisältää kuvan) vastataan kirjoittamalla yksi tai useampi sana. Mahdollisia oikeita vastauksia saattaa olla useita, ja niistä voi saada eri pistemäärän. Vastauksiin saattaa vaikuttaa isojen kirjainten käyttö.

          -

          MLisätietoja lyhytvastauksista

          -
        -

        Numeerinen

        -
          -

          Vastaajan näkökulmasta numeerinen kysymys muistuttaa ulkonäöltään lyhytvastaustehtävää. -Ero on siinä, että numeerinen kysymys voi hyväksyä oikeaksi myös virheellisen vastauksen. Tämä mahdollistaa tietylle numeeriselle alueelle sijoittuvat vastaukset. -

          -

          Lisätietoja numeerisista kysymyksistä

          -
        +

        Kysymykseen (joka voi sisältää kuvan) vastataan kirjoittamalla yksi tai useampi sana. Mahdollisia oikeita vastauksia saattaa olla useita, ja niistä voi saada eri pistemäärän. Vastaukset ovat tai eivät ole tapauskohtaisia.

        +

        Lisätietoja:

        Oikein/väärin

        - -

        Yhdistely

        -
          -

          Vastaajalle näytetään lista kysymyksiä tai väittämiä ja niihin vastauksia. Vastaajan on yhdistettävä jokaiseen kysymykseen/väittämään oikea vastaus. - -

          -

          Lisätietoja yhdistelytehtävästä

          -
        - -

        Upotettu kysymys (Cloze)

        -
          -

          Tässä hyvin joustavassa kysymystyypissä tekstiin (Moodle-muodossa olevaan) upotetaan erilaisia kysymystyyppejä, kuten monivalintaa, lyhytvastauksia ja numeerisia kysymyksiä. - -

          -

          Lisätietoja upotetuista kysymyksistä

          -
        - -

        Satunnainen lyhytvastausyhidstely

        -
          -

          Vastaajan näkökulmasta tämä muistuttaa yhdistelytehtävää. Ero on siinä, että kysymykset/väittämät arvotaan satunnaisesti käytössä olevan kategorian lyhytvastauskysymyksistä. - -

          -

          Lisätietoja satunnaisesta yhdistelystä

          -
        +

        Lisätietoja:

        Sattumanvarainen

        -

        Kuvaus

        -
          -

          TTämäntyyppinen kysymys ei varsinaisesti ole kysymys. -Se vain kirjoittaa tekstiä vaatimatta vastauksia. -Sillä voi kirjoittaa esimerkiksi kuvauksen johon seuraavissa kysymyksissä viitataan. -

          -

          Lisätietoa kuvauksista

          -
        - -

        Laskutehtävä

        -
          -

          Laskutehtävätyökalulla voi luoda yksilöllisiä laskutehtäviä käyttämällä muuttujia, joiden paikalle sijoitetaan vaihtelevat numeroarvot tenttiä tehtäessä. -

          -

          Lisätietoja laskutehtävistä

          -
        - +

        (Ei vielä asennettu) Kysymykset valitaan sattumanvaraisesti suuresta joukosta kysymyksiä joka kerta kun opiskelija yrittää läpäistä tenttiä.

        +

        Lisätietoja:

        diff --git a/lang/fi/help/quiz/random.html b/lang/fi/help/quiz/random.html index f7875109a7f..6aaf9c38ca8 100644 --- a/lang/fi/help/quiz/random.html +++ b/lang/fi/help/quiz/random.html @@ -1,19 +1,3 @@ -

        Sattumanvaraiset kysymykset

        - -

        Sattumanvaraiset kysymykset on erityinen kysymystyyppi. -

        - -

        Jos liität sattumanvaraisia kysymyksiä tenttiin, kysymykset valitaan joka yrityskerta uudestaan koko kysymyskategoriasta. -

        - -

        Kysymyksen maksimipistemäärä on aina se, minkä olet valinnut sattumanvaraisen kysymyksen maksimipistemääräksi. -

        - -

        Jos valitset tenttiin vaikkapa 10 sattumanvaraista kysymystä, jokainen opiskelija saattaa saada täysin eri 10 kysymystä joka kerta kun he yrittävät tenttiä. -

        - -

        Huomaa, että voit yhdistää sattumanvaraisia ja määrättyjä kysymyksiä, jos haluat varmistaa, että tietyt kysymykset otetaan aina mukaan tenttiin. -

        - - - +

        Random question

        + + diff --git a/lang/fi/help/quiz/review2.html b/lang/fi/help/quiz/review2.html deleted file mode 100644 index 0ce650bdbe3..00000000000 --- a/lang/fi/help/quiz/review2.html +++ /dev/null @@ -1,3 +0,0 @@ -

        Salli tarkastelu

        - -

        Tällä asetuksella määritellään voivatko opiskejat tarkastella aikaisempia vastauksiaan.

        \ No newline at end of file diff --git a/lang/fi/help/quiz/shortanswer.html b/lang/fi/help/quiz/shortanswer.html index e77b11a9b68..2dcce8211b4 100644 --- a/lang/fi/help/quiz/shortanswer.html +++ b/lang/fi/help/quiz/shortanswer.html @@ -1,6 +1,4 @@

        Lyhyt vastaus -kysymykset

        Kysymykseen (joka voi sisältää kuvan) vastataan kirjoittamalla yksi sana tai lyhyt fraasi.

        Mahdollisia oikeita vastauksia voi olla useita ja niistä voi saada eri pistemäärän. Jos "Tapauskohtainen" vaihtoehto on valittuna, voit saada eri pistemäärän, jos olet kirjoittanut "Sana" tai "sana". -

        Voit käyttää tähtimerkkiä (*) villinä korttina, joka vastaa mitä tahansa merkkijonoa. Esimerkiksi, vas*us vastaisi kaikkia sanoja, jotka alkavat "vas" ja loppuvat "us". Jos haluat vastata tähtimerkkiä, käytä kenoviivaa: \* - -

        Vastauksia verrataan kirjaimellisesti, joten ole tarkkana oikeinkirjoituksen suhteen!

        +

        Vastauksia verrataan kirjaimellisesti, joten ole tarkkana oikeinkirjoituksen suhteen!

        diff --git a/lang/fi/help/reading.html b/lang/fi/help/reading.html index 9804e67fcc0..487ea9e2587 100644 --- a/lang/fi/help/reading.html +++ b/lang/fi/help/reading.html @@ -1,4 +1,4 @@ -

        Lukemisesta

        +

        Lukeminen

        Luettaessa tekstiä nopeasti, käy helposti niin, että kirjoittajan viesti ymmärretään väärin.

        Väärinymmärrysten välttämiseksi lue teksti huolellisesti ja yritä nähdä asia kirjoittajan näkökulmasta.

        diff --git a/lang/fi/help/resource/mods.html b/lang/fi/help/resource/mods.html index 5d3d7c19d88..158f945b420 100644 --- a/lang/fi/help/resource/mods.html +++ b/lang/fi/help/resource/mods.html @@ -1,5 +1,6 @@ -

        Aineisto

        -
          -

          Aineistot ovat sisältöä: tietoa, jonka opettaja haluaa tuoda kurssille. Aineistot voivat olla valmiita tiedostoja, jotka on ladattu kurssin palvelimelle, suoraan Moodlessa muokattuja tiedostoja tai ulkoisia verkkosivuja jotka esitetään kurssin osana. -

          -
        \ No newline at end of file +

         Aineistot

        +
          +

          Aineistot ovat sisältöä: tietoa, jonka opettaja haluaa tuoda kurssille. Aineistot voivat olla valmiita tiedostoja, jotka on ladattu kurssin palvelimelle, suoraan Moodlessa muokattuja tiedostoja tai ulkoisia verkkosivuja jotka esitetään kurssin osana. +

          +
        + diff --git a/lang/fi/help/richtext.html b/lang/fi/help/richtext.html index 4666b8c604d..2544138002c 100644 --- a/lang/fi/help/richtext.html +++ b/lang/fi/help/richtext.html @@ -1,107 +1,119 @@ -

        HTML-editorin käyttö

        - -

        Richtext HTML-editori tarjoaa tekstinkäsittely -käyttöliittymän upotettuna verkkosivuusi. Tämä mahdollistaa tekstin muokkaamisen intuitiivisesti, ja tuloksena on tavallista HTML-koodia. -

        Tekstin muotoilumahdollisuuden lisäksi tämä editori tarjoaa lukuisia muita ominaisuuksia, jotka saattavat olla hyödyllisiä. -

        Tekstin siirtäminen muista ohjelmista

        -
          -

          Voit leikata ja liimata muotoiltua tekstiä muista Windows-ohjelmista, kuten Wordista, suoraan tähän editoriin. Muotoilusi pysyvät ennallaan. Käytä selaimesi tavallisia leikkaa ja liimaa -valikkoja (tai Control-C ja Control-V).

        -

        Kuvien lisääminen

        -
          -

          Jos sinulla on kuvia, jotka on jo julkaistu verkkosivulla, ja joihin pääsee URLn kautta, voit liittää näitä kuvia tekstiisi käyttäen "Lisää kuva" ("Insert Image") painiketta.

        -

        Taulukoiden lisääminen

        -
          -

          Voit lisätä taulukon tekstin asettelemista varten käyttämällä työkalupalkin "Lisää taulukko" ("Insert Tables") -painiketta.

        -

        Linkkien lisääminen

        -
          -

          Kirjoita ensin teksti, jonka haluat toimivan linkkinä. Valitse kirjoittamasi teksti ja klikkaa linkkipainiketta työkalupalkissa. Kirjoita URL, jonne haluat linkin johtavan. Valmista tuli.

        -

        Hymiöiden lisääminen

        -
          -

          Jos haluat upottaa näitä pieniä kuvia tekstiisi, paina työkalupalkissa olevaa hymiötä. Esiin tulee valikko, josta voit valita jonkin seuraavista vaihtoehdoista. (Tai kirjoita vastaava koodi suoraan tekstiin ja ohjelma muokkaa sen automaattisesti.) - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          - - - - - - - - - - +

          Richtext HTML-editorista

          +

          Saatavuus: +htmleditor) { + print_string("htmleditordisabledadmin"); + } else if (!$USER->htmleditor) { + print_string("htmleditordisabled"); + } else if (!can_use_richtext_editor()) { + print_string("htmleditordisabledbrowser"); + } else { + print_string("htmleditoravailable"); + } +?> + +

          +

          Richtext HTML-editori tarjoaa tekstinkäsittely -käyttöliittymän upotettuna verkkosivuusi. Tämä mahdollistaa tekstin muokkaamisen intuitiivisesti, ja tuloksena on tavallista HTML-koodia. +

          Tekstin muotoilumahdollisuuden lisäksi tämä editori tarjoaa lukuisia muita ominaisuuksia, jotka saattavat olla hyödyllisiä. +

          Tekstin siirtäminen muista ohjelmista

          +
            +

            Voit leikata ja liimata muotoiltua tekstiä muista Windows-ohjelmista, kuten Wordista, suoraan tähän editoriin. Muotoilusi pysyvät ennallaan. Käytä selaimesi tavallisia leikkaa ja liimaa -valikkoja (tai Control-C ja Control-V).

          +

          Kuvien lisääminen 

          +
            +

            Jos sinulla on kuvia, jotka on jo julkaistu verkkosivulla, ja joihin pääsee URLn kautta, voit liittää näitä kuvia tekstiisi käyttäen "Lisää kuva" ("Insert Image") painiketta.

          +

          Taulukoiden lisääminen 

          +
            +

            Voit lisätä taulukon tekstin asettelemista varten käyttämällä työkalupalkin "Lisää taulukko"  ("Insert Tables") -painiketta.

          +

          Linkkien lisääminen 

          +
            +

            Kirjoita ensin teksti, jonka haluat toimivan linkkinä. Valitse kirjoittamasi teksti ja klikkaa linkkipainiketta työkalupalkissa. Kirjoita URL, jonne haluat linkin johtavan. Valmista tuli. 

          +

          Hymiöiden lisääminen

          +
            +

            Jos haluat upottaa näitä pieniä kuvia tekstiisi, paina työkalupalkissa olevaa hymiötä. Esiin tulee valikko, josta voit valita jonkin seuraavista vaihtoehdoista. (Tai kirjoita vastaava koodi suoraan tekstiin ja ohjelma muokkaa sen automaattisesti.) +

          hymy:-)
          leveä virnistys:-D
          + + -
          + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          hymy:-)
          leveä virnistys:-D
          vinkkaus;-)
          hämmentynyt:-/
          mietteliäsV-.
          kieli ulkona:-P
          coolB-)
          hyväksyvä^-)
          suuret silmät8-)
          yllättynyt8-o
          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          surullinen:-(
          ujo8-.
          punastunut:-I
          suukkoja:-X
          pelle:o)
          musta silmäP-|
          vihainen8-[
          kuollutxx-P
          unelias|-.
          paha}-]
          - \ No newline at end of file +
          vinkkaus;-)
          hämmentynyt:-/
          mietteliäsV-.
          kieli ulkona:-P
          coolB-)
          hyväksyvä^-)
          suuret silmät8-)
          yllättynyt8-o
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          surullinen:-(
          ujo8-.
          punastunut:-I
          suukkoja:-X
          pelle:o)
          musta silmäP-|
          vihainen8-[
          kuollutxx-P
          unelias|-.
          paha}-]
          +

        diff --git a/lang/fi/help/scales.html b/lang/fi/help/scales.html index 76ce03bad79..a96058391c5 100644 --- a/lang/fi/help/scales.html +++ b/lang/fi/help/scales.html @@ -1,11 +1,11 @@ -

        Asteikot

        - -

        Opettajat voivat luoda omia asteikoitaan käytettäviksi kurssin arviointitoimintoihin.

        -

        Nimen pitäisi kuvata asteikkoa selkeästi, asteikon nimi näkyy asteikon valinta kenttissä, kuten myös tapauskohtaisissa ohjepainikkeissa.

        -

        Asteikko itse määritellään listan avulla, listataan arviot negatiivisesta positiiviseen, ja erotellaan pilkuilla. Esimerkiksi:

        -
        -

        Pettymys, Ei tarpeeksi hyvä, Keskiverto, Hyvä, Erittäin hyvä, Loistava!

        -
        -

        Asteikkojen pitäisi myös sisältää hyvän kuvauksen siitä, mitä se tarkoittaa ja miten sitä pitäisi käyttää. Kuvaus tulee näkyviin ohje sivuilla opettajille ja opiskelijoille.

        -

        Lopuksi, sivustollasi saattaa olla yksi tai useampi asteikko valmiina ylläpitäjän määrittelemänä. Nämä ovat käytettävissä kaikilla kursseilla.

        -

        \ No newline at end of file +

        Asteikot

        + +

        Opettajat voivat luoda uusia tapa-asteikoita käytetäviksi kurssilla mihin tahansa arvostelu toimintoihin.

        +

        Asteikon nimen pitäisi olla fraasi, joka tunnistaa sen selkeästi: tämä tulee ilmestymään asteikko-valinta listaan, samoin kuin viitekehys-herkät apua painikkeet

        +

        Asteikko itse määritellään määrätyn arvolistan mukaan, se listataan negatiivisesta positiiviseen, ja erotellaan pilkuilla. Esimerkiksi:

        +
        +

        Pettymys, Ei tarpeeksi hyvä, Keskiverto, Hyvä, Erittäin hyvä, Loistava!

        +
        +

        Asteikkojen pitäisi myös sisältää hyvän kuvauksen siitä, mitä se tarkoittaa ja miten sitä odotetaan käytettävän. Kuvaus tulee näkyviin apua-sivuilla opettajille ja opiskelijoille.

        +

        Lopuksi, sivustollasi saattaa olla yksi tai useampi "Normi" asteikko ylläpitäjän määrittelemänä. Nämä ovat käytettävissä kaikilla kursseilla.

        +

         

        diff --git a/lang/fi/help/search.html b/lang/fi/help/search.html deleted file mode 100644 index 78463be343a..00000000000 --- a/lang/fi/help/search.html +++ /dev/null @@ -1,44 +0,0 @@ -

        Hakun käyttäminen

        - -

        VApaatekstihaussa voidaan käyttää erilaisia alla mainittuja vaihtoehtoja haun tarkentamiseen. Voit halutessasi yhdistellä vaihtoehtoja tarkeentaaksesi hakua edelleen. .

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        hae näitä sanojahakeaksi yktä tai useampaa sanaa erottele sanat välilyönnein.
        +hae +näitä sanojaJos haluat rajata hakun kohdistumaan vain kokonaisiin sanoihin käytä "+"-merkkiä.
        +hae +näitä -sanojaVoit estää "-"merkillä tiettyjen sanojen sopimisen hakutulokseen.
        "hae tätä lausetta"Hekeaksesi tiettyä fraasia käytä lainausmerkkejä fraasin ympärillä.
        user:JaakkoHakeaksesi tietyn käyttäjän tekstejä kaytä "user:"-etuliitettä.
        userid:6Hakeaksesi tietyn käyttäjänumeron tekstejä kaytä "userid:"-etuliitettä.
        subject:assessmentHakeaksesi tiettyä sanaa viestien aiheissa tai otsikoissa kaytä "subject:"-etuliitettä
        - -

        Tehdäksesi tarkennettuja hakuja voit painaa hakupainiketta kijoittamatta hakuruutuun mitään, tälläin saat eteesi tarkennetun haun mahdollistavan lomakkeen.

        \ No newline at end of file diff --git a/lang/fi/help/summaries.html b/lang/fi/help/summaries.html index 27eefb81505..d6c213110c7 100644 --- a/lang/fi/help/summaries.html +++ b/lang/fi/help/summaries.html @@ -1,5 +1,10 @@ -

        Aihe/Viikkoyhteenvedot

        - -

        Aiheyhteenvedon idea on se, että hyvin lyhyt teksti valmistelee opiskelijoita aiheen tai viikon sisällä oleviin toimintoihin.

        -

        Jokaisen yhteenvedon pitäisi olla hyvin lyhyt, jotta kurssisivu ei tule liian pitkäksi.

        -

        Jos huomaat, että haluat sanoa enemmän kuin pari lausetta, harkitse linkin liittämistä aiheeseen (esimerkiksi, ensimmäinen toiminto voi olla sivu, jonka nimi on: Tietoa tästä aiheesta).

        \ No newline at end of file +

        Aihe/Viikko yhteenvedot

        + + + +

        Aiheyhteenvedon idea on se, että hyvin lyhyt teksti valmistelee opiskelijoita tämän aiheen(tai viikon) sisällä oleviin toimintoihin.

        +

        Jokaisen yhteenvedon pitäisi olla hyvin lyhyt, jotta kurssisivu ei tule liian pitkäksi.

        +

        Jos huomaat, että haluat sanoa enemmän kuin pari lausetta, harkitse linkin liittämistä aiheeseen (esimerkiksi, ensimmäinen toiminto voi olla sivu, jonka nimi on Tästä Aiheesta).

        + + + diff --git a/lang/fi/help/uploadusers.html b/lang/fi/help/uploadusers.html index b2041ecbafc..2ab6add865e 100644 --- a/lang/fi/help/uploadusers.html +++ b/lang/fi/help/uploadusers.html @@ -1,31 +1,30 @@ -

        Lähetä käyttäjät

        - -

        Yleensä ei ole tarpeellista tuoda käyttäjiä massoina - pitääksesi oman ylläpitotyösi alhaisena, sinun pitäisi ensin miettiä sellaisten keinojen käyttämistä, jotka eivät vaadi manuaalista ylläpitoa. Esimerkiksi yhteydenottoa olemassa oleviin ulkoisiin tietokantoihin, tai antaa käyttäjien luoda omat käyttäjätilinsä. Katso "Käyttäjäntunnistus" ylläpito valikosta.

        -

        Jos olet varma, että haluat tuoda useita käyttäjätunnuksia tekstitiedostosta, silloin sinun täytyy muotoilla tekstitiedostosi seuraavasti:

        -
          -
        • Kaikki kenttien nimet pitää tuontitiedostossa kirjoittaa englanniksi!
        • -
        • Tiedoston jokainen rivi sisältää yhden tallenteen
        • -
        • Jokainen tallenne on sarja tietoja pilkuilla eroteltuna
        • -
        • Tiedoston ensimmäinen tallenne on erityinen, ja sisältää listan kenttänimiä. Tämä määrittää lopputiedoston muodon. -
          -

          Vaaditut kenttänimet: nämä kentät täytyy olla mukana ensimmäisessä tallenteessa, ja määritelty jokaiselle käyttäjälle.

          -

          - käyttäjänimi, salasana, etunimi, sukunimi, sähköposti

          -

          -

          Oletus kenttänimet: nämä ovat valinnaisia - jos niitä ei liitetä, arvot otetaan aiemmalta ylläpitäjältä

          -

          yhteisö, osasto, kaupunki, maa, kieli, aikavyöhyke

          -

          Valinnaiset kenttänimet: kaikki nämä ovat täysin valinnaisia. Kurssinimet ovat kurssien "lyhytnimiä" - jos ne säilytetään nykyisellään, käyttäjä merkitään kursseille opiskelijana. Ryhmänimien täytyy yhdistyä vastaaviin kursseihin, esim. ryhmä 1 kurssi 1:een, ryhmän 2 kurssi 2:een, jne.

          -

          tunnistenumero, ICQ, puhelin1, puhelin2, osoite, url, kuvaus, postimuotoilu, postinäyttö, html-editori, autoalaindeksi, kurssi1, kurssi2, kurssi3, kurssi4, kurssi5, ryhmä1, ryhmä2, ryhmä3, ryhmä4, ryhmä5

          -
          -
        • -
        • Pilkut aineiston sisässä pitäisi olla koodattu ,:nä - scripti !!!!!!! tulkitsee automaattisesti nämä takaisin pilkuiksi.
        • -
        • Boolean kentille (tosi/epätosi), käytä 0 epätodelle ja 1 todelle.
        • -
        • Huomaa: jos käyttäjätunnus on jo Moodlen käyttäjätietokannassa, scripti palauttaa automaattisesti userid numeron ko. käyttäjälle, ja rekisteröi käyttäjän opiskelijana määritellyille kursseille ILMAN, että päivittäisi kannassa olevia käyttäjätietoja.
        • -
        - - -

        Tässä esimerkki kelpaavasta tuontitiedostosta:

        -

        username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1
        -jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, 3663737, 1, Intro101, Section 1
        -reznort, somesecret, Trent, Reznor, reznort@someplace.edu, en_us, 6736733, 0, Advanced202, Section 3

        -

        \ No newline at end of file +

        Kopioinnin käyttäjät

        + +

        Ensinnäkin, huomaa, että yleensä ei ole tarpeellista tuoda käyttäjiä massoina- pitääksesi oman ylläpito työsi alhaisena, sinun pitäisi ensin tutkia niitä todennuksen muotoja, jotka eivät vaadi manuaalista ylläpitoa, esimerkiksi yhteydenottoa olemassa oleviin ulkoisiin tietokantoihin tai voidaan antaa käyttäjien luoda omat käyttäjätilinsä. Katso Ylläpito osasto pääkäyttäjä valikossa.

        +

        Jos olet varma, että haluat tuoda useita käyttäjätilejä tekstitiedostosta, silloin sinun täytyy muotoilla tekstitiedostosi seuraavasti:

        +
          +
        • Tiedoston jokainen rivi sisältää yhden tallenteen
        • +
        • Jokainen tallenne on sarja tietoja pilkuilla eroteltuna
        • +
        • Tiedoston ensimmäinen tallenne on erityinen, ja sisältää listan kenttänimiä. Tämä määrittää lopputiedoston muodon. +
          +

          Vaaditut kenttänimet : nämä kentät täytyy olla mukana ensimmäisessä tallenteessa, ja määritelty jokaiselle käyttäjälle.

          +

          + käyttäjänimi, salasana, etunimi, sukunimi, sähköposti

          +

          +

          Oletus kenttänimet: nämä ovat valinnaisia- jos niitä ei liitetä , silloin arvot otetaan aiemmalta ylläpitäjältä

          +

          yhteisö, osasto, kaupunki, maa, kieli, aikavyöhyke

          +

          Valinnaiset kenttänimet: kaikki nämä ovat täysin valinnaisia. Kurssinimet ovat kurssien "lyhytnimiä"- jos ne säilytetään nykyisellään, käyttäjä merkitään kursseille opiskelijana. Ryhmänimien täytyy yhdistyä vastaaviin kursseihin, esim. ryhmä 1 kurssi 1:een, jne.

          +

          tunnistenumero, icq, puhelin1, puhelin2, osoite, url, kuvaus, postimuotoilu, postinäyttö, htmleditori, autoalaindeksi, kurssi1, kurssi2, kurssi3, kurssi4, kurssi5, ryhmä1, ryhmä2, ryhmä3, ryhmä4, ryhmä5

          +
          +
        • +
        • Pilkut aineiston sisässä pitäisi olla koodattu &#44:nä - juonto tulkitsee automaattisesti nämä takaisin pilkuiksi.
        • +
        • Boolen kentille, käytä 0 väärälle ja 1 oikealle.
        • +
        • Huomaa: jos käyttäjä on jo rekisteröitynyt Moodlen käyttäjätietokantaan, juonto palauttaa automaattisesti käyttäjätunnus numeron (tietokanta hakemisto) sille käyttäjälle, ja ilmoittaa käyttäjän opiskelijana mille tahansa määritellylle kurssille ILMAN että päivittäisi toista määriteltyä tietoa.
        • +
        + + +

        Tässä esimerkki kelpaavasta tuontitiedostosta:

        +

        username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1
        +jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, 3663737, 1, Intro101, Section 1
        +reznort, somesecret, Trent, Reznor, reznort@someplace.edu, en_us, 6736733, 0, Advanced202, Section 3

        + diff --git a/lang/fi/help/wiki/mods.html b/lang/fi/help/wiki/mods.html index c7f81a80a15..89f8e114271 100644 --- a/lang/fi/help/wiki/mods.html +++ b/lang/fi/help/wiki/mods.html @@ -1,12 +1,13 @@ -

        Wiki

        -
          -

          Wikin avulla voidaan selaimen kautta yhteiskirjoittaa dokumentteja yksinkertaista kuvauskieltä käyttäen. -

          -"Wiki wiki" tarkoittaa "supernopeaa" havajin kielellä, ja juuri sivujen luonnin ja päivittämisen nopeus on yksi wikiteknologian tärkeimmistä tekijöistä. Muutoksia ei yleensä arvioida ennen kuin ne hyväksytään ja useimmat wikit ovat kaikille avoimia, tai ainakin niille henkilöille, jotka pääsevät wikipalvelimelle. -

          - -

          Moodlen Wiki-moduuli tarjoaa osallistujille mahdollisuuden työskennellä yhdessä verkkosivuilla lisätäkseen, laajentaakseen ja muuttaakseen niiden sisältöjä. Vanhoja versioita ei tuhota ja ja ne voidaan palauttaa. -

          - -

          Tämä moduuli perustuu Erfurt Wikiin.

          -
        \ No newline at end of file +

         Wikit

        +
          +

          Wikin avulla voidaan selaimen kautta yhteiskirjoittaa dokumentteja yksinkertaista kuvauskieltä käyttäen. +

          +"Wiki wiki" tarkoittaa "supernopeaa" havajin kielellä, ja juuri sivujen luonnin ja päivittämisen nopeus on yksi wikiteknologian tärkeimmistä tekijöistä. Muutoksia ei yleensä arvioida ennen kuin ne hyväksytään ja useimmat wikit ovat kaikille avoimia, tai ainakin niille henkilöille, jotka pääsevät wikipalvelimelle. +

          + +

          Moodlen Wiki-moduuli tarjoaa osallistujille mahdollisuuden työskennellä yhdessä verkkosivuilla lisätäkseen, laajentaakseen ja muuttaakseen niiden sisältöjä. Vanhoja versioita ei tuhota ja ja ne voidaan palauttaa. +

          + +

          Tämä moduuli perustuu Erfurt Wikiin.

          +
        + diff --git a/lang/fi/help/writing.html b/lang/fi/help/writing.html index c1ef4ab5632..ebcd4008374 100644 --- a/lang/fi/help/writing.html +++ b/lang/fi/help/writing.html @@ -1,9 +1,9 @@ -

        Kirjoittamisesta

        -

        Kun kirjoitat tekstiä muiden luettavaksi, yritä kirjoittaa suoraan yleisöllesi.

        -

        Selitä ajatuksesi mahdollisimman selvästi ja yksinkertaisesti välttääksesi väärinymmärtämistä. Vältä esimerkiksi pitkiä sanoja, jos voit käyttää lyhyitä.

        -

        Foorumeissa on erittäin hyödyllistä, että viestit ovat lyhyitä ja asiallisia. Sen sijaan että kirjoittaisit yhden pitkän ja& hajanaisen viestin, voi olla hyvä kirjoittaa useita lyhyitä (jotka voiy lähettää eri foorumeihin).

        -

        Voit korjailla kirjoittamaasi tekstiä tarpeen mukaan. Sinulla on myös jonkin verran aikaa, jolloin voit palata foorumeihin lähettämiisi viesteihin ja tehdä niihin muutoksia, jos se on tarpeen. -

        Kun vastaat toiselle, koeta keksiä hänelle myös mielenkiintoisia kysymyksiä. Tämä auttaa sinua ja toista osapuolta pohtimaan keskustelun aihetta ja oppimaan lisää. -

        Kuinka kysyä apua Kuinka kysyä apua

        -

        Lue huolellisesti Lue huolellisesti

        -

        Eristyvä ja sosiaalinen oppiminen Eristyvä ja sosiaalinen oppiminen

        \ No newline at end of file +

        Kirjoittaminen

        +

        Kun kirjoitat tekstiä muiden luettavaksi, yritä kirjoittaa suoraan yleisöllesi.

        +

        Selitä ajatuksesi mahdollisimman selvästi ja yksinkertaisesti välttääksesi väärinymmärtämistä. Vältä esimerkiksi pitkiä sanoja, jos voit käyttää lyhyitä.

        +

        Foorumeissa on erittäin hyödyllistä, että viestit ovat lyhyitä ja asiallisia. Sen sijaan että kirjoittaisit yhden pitkän ja hajanaisen viestin, voi olla hyvä kirjoittaa useita lyhyitä (jotka voivat kuulua eri foorumeihin). +

        Voit korjailla kirjoittamaasi tekstiä tarpeen mukaan. Sinulla on myös jonkin verran aikaa, jolloin voit palata foorumeihin lähettämiisi viesteihin ja tehdä niihin muutoksia, jos se on tarpeen. +

        Kun vastaat toiselle, koeta keksiä hänelle myös mielenkiintoisia kysymyksiä. Tämä auttaa sinua ja toista osapuolta pohtimaan keskustelun aihetta ja oppimaan lisää. +

        +

        +

        diff --git a/lang/fi/hotpot.php b/lang/fi/hotpot.php index 023d9426d98..94c4ee24fee 100644 --- a/lang/fi/hotpot.php +++ b/lang/fi/hotpot.php @@ -1,12 +1,15 @@ diff --git a/lang/fi/install.php b/lang/fi/install.php index be1479f779e..32b03724a2e 100644 --- a/lang/fi/install.php +++ b/lang/fi/install.php @@ -1,11 +1,11 @@
        moodleadmin

        +

        moodleadmin

        Tämä korjaa ylläpito linkit Moodlessa.'; $string['caution'] = 'Varoitus'; $string['chooselanguage'] = 'Valitse kieli'; @@ -14,7 +14,7 @@ $string['configfilenotwritten'] = 'Asennus ei pystynyt luomaan automaattisesti c $string['configfilewritten'] = 'config.php on luotu.'; $string['configurationcomplete'] = 'Asetukset suoritettu'; $string['database'] = 'Tietokanta'; -$string['databasesettings'] = 'Nyt sinun täytyy valita tietokanta missä suurin osa Moodlen tiedoista säilytetään. Tämän tietokannan täytyy jo valmiiksi olla luotu, kuten myös käyttäjänimen ja salasanan, joilla siihen päästään. .
        +$string['databasesettings'] = 'Nyt sinun täytyy valita tietokanta, missä suurin osa Moodlen tiedoista säilytetään. Tämän tietokannan täytyy jo valmiiksi olla luotu, kuten myös käyttäjänimen ja salasanan, joilla siihen päästään. .


        Tyyppi: mysql or postgres7
        Isäntä: localhost or db.isp.com
        @@ -26,9 +26,9 @@ $string['dataroot'] = 'Datahakemisto'; $string['datarooterror'] = '\"Datahakemistoa\", jonka määrittelit, ei voitu löytää, eikä luoda. Joko korjaa polku, tai luo hakemisto manuaalisesti.'; $string['dbconnectionerror'] = 'Emme pystyneet kytkeytymään tiedokantaan, jonka määrittelit. Tarkista tietokanta asetuksesi.'; $string['dbcreationerror'] = 'Tietokannan luomisvirhe. Ei pystytty luomaan annettua tietokannan nimeä tarjotuilla asetuksilla.'; -$string['dbhost'] = 'Palvelin'; -$string['dbpass'] = 'Salasana'; -$string['dbprefix'] = 'Taulukon etumerkki'; +$string['dbhost'] = 'Isäntä palvelin'; +$string['dbpass'] = 'salasana'; +$string['dbprefix'] = 'taulukon etumerkki'; $string['dbtype'] = 'Tyyppi'; $string['directorysettings'] = '

        Varmista tämän Moodle asennuksen paikka.

        @@ -45,11 +45,11 @@ $string['dirroot'] = 'Moodle hakemisto'; $string['dirrooterror'] = '\"Moodle hakemisto\" asetus näyttäisi olevan väärä-emme voi löytää Moodle asennusta sieltä. Arvo alapuolella on nollattu.'; $string['download'] = 'Lataus'; $string['fail'] = 'Virhe'; -$string['fileuploads'] = 'Tiedostojen lähettäminen'; +$string['fileuploads'] = 'tiedostojen palvelimeen kopioinnit'; $string['fileuploadserror'] = 'Tämän pitäisi olla päällä'; -$string['fileuploadshelp'] = '

        Tiedostojen lähettäminen ei näyttäisi olevan käytössä palvelimellasi.

        +$string['fileuploadshelp'] = '

        Tiedostojen lataus näyttää olevan tehty toimimattomaksi palvelimellasi.

        -

        Moodle voidaan silti asentaa, mutta ilman tätä kykyä, et pysty lataamaan kurssitiedostoja tai uuden käyttäjän profiili kuvia.

        +

        Moodle voidaan silti asentaa, mutta ilman tätä kykyä, et pysty lataamaan kurssitiedostoja tai uuden käyttäjän profiili kuvia.

        Mahdollistaaksesi tiedostojen latauksen sinun (tai systeemisi ylläpitäjän) täytyy muokata varusohjelmien php.ini tiedosto systeemiisi ja muuttaa asetus file_uploads to \'1\'.

        '; $string['gdversion'] = 'GD versio'; @@ -63,7 +63,7 @@ $string['gdversionhelp'] = '

        Palvelimellasi ei n

        Windowsin alaisena voit yleensä muokata php.ini:ä ja olla kommentoimatta rivivertailua libgd.dll.

        '; $string['installation'] = 'asennus'; $string['magicquotesruntime'] = 'Magic quotes ajoaika'; -$string['magicquotesruntimeerror'] = 'Tämän pitäisi olla poissa päältä'; +$string['magicquotesruntimeerror'] = 'Tämän pitäisi olla kiinni'; $string['magicquotesruntimehelp'] = '

        Magic quotes ajoajan pitäisi olla pois päältä, jotta Moodle voi toimia kunnolla.

        Normaalisti se on pois päältä oletuksena... Katso asetukset @@ -76,36 +76,39 @@ $string['memorylimit'] = 'Muistiraja'; $string['memorylimiterror'] = 'PHP muistiraja on asetettu aika alas... Se saattaa aiheuttaa ongelmia myöhemmin.'; $string['memorylimithelp'] = '

        PHP muistiraja palvelimellesi on tällä hetkellä asetettu $a:han.

        -

        Tämä saattaa aiheuttaa Moodlelle muistiongelmia myöhemmin, varsinkin jos sinulla on paljon mahdollisia moduuleita ja/tai paljon käyttäjiä.

        +

        Tämä saattaa aiheuttaa Moodlelle muistiongelmia myöhemmin, varsinkin jos sinulla on paljon mahdollisia moduuleita ja/tai paljon käyttäjiä.

        Suosittelemme, että valitset asetuksiksi PHP:n korkeimmalla mahdollisella raja-arvolla, esimerkiksi 16M. -On olemassa monia tapoja joilla voit yrittää tehdä tämän:

        +On olemassa monia tapoja joilla voit yrittää tehdä tämän:
        1. Jos pystyt, uudelleenkäännä PHP --enable-memory-limit. :llä. -Tämä sallii Moodlen asettaa muistirajan itse.
        2. -
        3. Jos sinulla on pääsy php.ini tiedostoosi, voit muuttaa memory_limit setuksen siellä johonkin kuten 16M. Jos sinulla ei ole pääsyoikeutta, voit kenties pyytää ylläpitäjää tekemään tämän puolestasi.
        4. +Tämä sallii Moodlen asettaa muistirajan itse. +
        5. Jos sinulla on pääsy php.ini tiedostoosi, voit muuttaa memory_limit setuksen siellä johonkin kuten 16M. Jos sinulla ei ole pääsyoikeutta, voit kenties pyytää ylläpitäjää tekemään tämän puolestasi.
        6. Joillain PHP palvelimilla voit luoda a .htaccess tiedoston Moodle hakemistossa, sisältäen tämän rivin:

          php_value memory_limit 16M

          -

          Kuitenkin, joillain palvelimilla tämä estää kaikkia PHP sivuja toimimasta (näet virheet, kun katsot sivuja), joten sinun täytyy poistaa .htaccess tiedosto.

        7. +

          Kuitenkin, joillain palvelimilla tämä estää kaikkia PHP sivuja toimimasta (näet virheet, kun katsot sivuja), joten sinun täytyy poistaa .htaccess tiedosto.

        '; $string['mysqlextensionisnotpresentinphp'] = 'PHP:tä ei ole kunnolla valittu asetukseksi MySQL laajennuksen kanssa, jotta se voisi kommunikoida MySQL:n kanssa. Tarkista php.ini tiedostosi tai käännä PHP uudelleen.'; $string['pass'] = 'Tarkastettu'; $string['phpversion'] = 'PHP versio'; $string['phpversionerror'] = 'PHP version täytyy olla vähintään 4.1.0'; $string['phpversionhelp'] = '

        Moodle vaatii vähintään PHP version 4.1.0.

        -

        Käytät parhaillaan versiota $a

        -

        Sinun täytyy päivittää PHP tai siirtää isäntä uudemman PHP version kanssa!

        '; -$string['safemode'] = 'Safe mode'; -$string['safemodeerror'] = 'Moodlella saattaa olla ongelmia PHP:n Safe Moden ollessa päällä'; -$string['safemodehelp'] = '

        Moodlella saattaa olla lukuisia ongelmia Safe Moden ollessa päällä, joista vähäisin ei ole se, ettei se todennäköisesti pysty luomaan uusia tiedostoja.

        -

        Turvatila on yleensä aktivoinut paranoidinen web-palvelun pitäjä, joten sinun ehkä täytyy vaihtaa web-isännöinti yhtiötä Moodleasi varten.

        +

        Käytät parhaillaan versiota $a

        +

        Sinun täytyy päivittää PHP tai siirtää isäntä uudemman PHP version kanssa!

        '; +$string['safemode'] = 'turvatila'; +$string['safemodeerror'] = 'Moodlella saattaa olla ongelmia turvatilan ollessa päällä'; +$string['safemodehelp'] = '

        Moodlella saattaa olla lukuisia ongelmia turvatilan ollessa päällä, joista vähäiosin ei ole se, ettei se todennäköisesti pysty luomaan uusia tiedostoja.

        +

        Turvatila on yleensä tehnyt toimivaksi paranoidinen julkinen web-isäntä, joten sinun ehkä täytyy vaihtaa web-isännöinti yhtiötä Moodleasi varten.

        Voit yrittää jatkaa asennusta, mutta varaudu ongelmiin myöhemmin.

        '; -$string['sessionautostart'] = 'Istunnon automaattinen aloitus'; +$string['sessionautostart'] = 'istunnon automaattinen aloitus'; $string['sessionautostarterror'] = 'Tämän pitäisi olla pois päältä'; $string['sessionautostarthelp'] = '

        Moodle vaatii istuntotukea, eikä toimi ilman sitä.

        istunto voidaan mahdollistaa php.ini tiedostossa... Etsi istuntoa varten.auto_start parameter.

        '; +$string['thischarset'] = 'iso-8859-1'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'Suomi'; $string['wwwroot'] = 'Web-osoite'; $string['wwwrooterror'] = 'Web-osoite ei näyttäisi olevan voimassa- tämä Moodle asennus ei näyttäisi olevan siellä.'; diff --git a/lang/fi/journal.php b/lang/fi/journal.php index cb49f7e3568..e2d0ad55d5a 100644 --- a/lang/fi/journal.php +++ b/lang/fi/journal.php @@ -1,40 +1,41 @@ -teacher on antanut sinulle palautetta muistiosta \'$a->journal\' - -Voit nähdä sen osoitteessa: - -$a->url'; -$string['journalmailhtml'] = '$a->teacher on antanut sinulle palautetta muistiosta \'$a->journal\'

        - -Voit nähdä sen lisättynä - -url\">muistioosi.'; -$string['journalname'] = 'Muistion nimi'; -$string['journalquestion'] = 'Muistion kysymys'; -$string['journalrating1'] = 'Välttävä'; -$string['journalrating2'] = 'Tyydyttävä'; -$string['journalrating3'] = 'Kiitettävä'; -$string['modulename'] = 'Muistio'; -$string['modulenameplural'] = 'Muistiot'; -$string['newjournalentries'] = 'Uudet muistiot'; -$string['noentry'] = 'Ei palautettu'; -$string['noratinggiven'] = 'Ei arvioitu'; -$string['notopenuntil'] = 'Tämä muistio on täytettävissä vasta'; -$string['notstarted'] = 'Et ole aloittanut tätä muistiota vielä'; -$string['overallrating'] = 'Yleinen arviointi'; -$string['rate'] = 'Arviointi'; -$string['saveallfeedback'] = 'Tallenna kaikki palaute'; -$string['startoredit'] = 'Aloita tai muokkaa muistiota'; -$string['viewallentries'] = 'Katso kaikkia $a muistioita'; - -?> +teacher on lähettänyt sinulle palautetta tehtävästä \'$a->journal\' + +Voit nähdä sen osoitteessa: + +$a->url +'; +$string['journalmailhtml'] = '$a->teacher on lähettänyt sinulle palautetta tehtävästä \'$a->journal\'

        + +Voit nähdä sen osoitteessa: + +url\">Lyhyttehtävän palautus.'; +$string['journalname'] = 'Lyhyttehtävän nimi'; +$string['journalquestion'] = 'Lyhyttehtävän kysymys'; +$string['journalrating1'] = 'Välttävä'; +$string['journalrating2'] = 'Tyydyttävä'; +$string['journalrating3'] = 'Kiitettävä'; +$string['modulename'] = 'Lyhyttehtävä'; +$string['modulenameplural'] = 'Lyhyttehtävät'; +$string['newjournalentries'] = 'Uudet lyhyttehtävät'; +$string['noentry'] = 'Ei osaa'; +$string['noratinggiven'] = 'Ei arvioitu'; +$string['notopenuntil'] = 'Tämä tehtävä avautuu vasta'; +$string['notstarted'] = 'Et ole aloittanut tätä tehtävää vielä'; +$string['overallrating'] = 'Yleinen arviointi'; +$string['rate'] = 'Arviointi'; +$string['saveallfeedback'] = 'Tallenna kaikki palautteeni'; +$string['startoredit'] = 'Aloita tai muokkaa vastaustani'; +$string['viewallentries'] = 'Katso kaikki vastaukset ($a kappaletta)'; + +?> diff --git a/lang/fi/label.php b/lang/fi/label.php index 6ae1585ed0b..308e6ed46ab 100644 --- a/lang/fi/label.php +++ b/lang/fi/label.php @@ -1,12 +1,9 @@ - + diff --git a/lang/fi/lesson.php b/lang/fi/lesson.php index bd8bf9dea81..839e7d083ff 100644 --- a/lang/fi/lesson.php +++ b/lang/fi/lesson.php @@ -1,250 +1,89 @@ firstname {a$->lastname} :n kommentit'; -$string['completed'] = 'Suoritettu'; $string['confirmdeletionofthispage'] = 'Vahvista tämän sivun poistaminen'; $string['congratulations'] = 'Onnittelut - oppitunnin loppu saavutettu'; $string['continue'] = 'Jatka'; -$string['continuetoanswer'] = 'Jatka vastausten muuttamista'; -$string['correctanswerjump'] = 'Oikea vastaus hyppy'; -$string['correctanswerscore'] = 'Oikea vastaus tulos'; -$string['correctresponse'] = 'Oikea vaste'; -$string['customscoring'] = 'Muokattu pisteytys'; $string['deadline'] = 'Viimeinen suorituspäivä'; -$string['deleteattempts'] = 'Poista opiskelijoiden yritykset tälle oppitunnille (käyttäjätunnus)'; -$string['deletedpage'] = 'Poistettu sivu'; $string['deleting'] = 'Poistetaan'; $string['deletingpage'] = 'Poistetaan sivu $a'; $string['description'] = 'Kuvaus'; -$string['detailedstats'] = 'Tarkemmat tiedot'; -$string['didnotanswerquestion'] = 'Ei vastannut tähän kysymykseen.'; -$string['displayhighscores'] = 'Näytä parhaat tulokset'; -$string['displayinleftmenu'] = 'Näytä vasemmassa valikossa?'; -$string['displayleftmenu'] = 'Näytä vasen valikko'; $string['displayofgrade'] = 'Arvosanan näyttäminen (vain opiskelijoille)'; -$string['displayreview'] = 'Näytä arvostelu näppäin'; -$string['displayscorewithessays'] = 'Olet ansainnut $a->score $a->tempmaxgrade :sta automaattisesti arvostelluista kysymyksistä.
        Sinun $a->essayquestions essee kysymykset arvioidaan ja lisätään
        lopulliseen tulokseesi myöhempänä päivänä.

        Tämän hetkinen tuloksesi ilman esseekysymyksiä on $a->score $a->grade :stä. '; -$string['displayscorewithoutessays'] = 'Tuloksesi on $a->score ($a->grade:sta).'; -$string['editlessonsettings'] = 'Muokkaa tämän oppitunnin asetuksia'; -$string['editpagecontent'] = 'Muokkaa tämän sivun osia'; -$string['email'] = 'Sähköposti'; -$string['emailallgradedessays'] = 'Lähetä kaikki
        arvostellut esseet'; -$string['emailgradedessays'] = 'Lähetä arvostellut eseet'; -$string['emailsuccess'] = 'Lähettäminen onnistui'; -$string['endofbranch'] = 'Haaran pääte'; -$string['endofclustertitle'] = 'Ryhmän pääte'; -$string['endoflesson'] = 'Oppitunnin loppu'; -$string['enteredthis'] = 'kirjoitti tämän'; -$string['entername'] = 'Syötä lempinimi parhaat tulokset listalle'; -$string['enterpassword'] = 'Syötä salasana:'; -$string['eolstudentoutoftime'] = 'Huomio: Aika loppui tämän oppitunnin osalta. Viimeinen vastauksesi ei merkinnyt mitään, jos se annettiin ajan päättymisen jälkeen.'; -$string['eolstudentoutoftimenoanswers'] = 'Et vastannut yhteenkään kysymykseen. Sait a 0 tästä oppitunnista.'; -$string['essay'] = 'Essee'; -$string['essayemailsubject'] = 'Arvosanasi tehtävästä: a$'; -$string['essays'] = 'Esseet'; -$string['essayscore'] = 'Essee tulos'; +$string['endofbranch'] = 'Tietopuun haaran pääte'; +$string['endoflesson'] = 'Oppimitunnin loppu'; $string['fileformat'] = 'Tiedoston tyyppi'; -$string['firstanswershould'] = 'Ensimmäinen vastaus hyppää \"oikealle\" sivulle.'; -$string['firstwrong'] = 'Valitettavasti et voi tienata tätä yhtä pistettä, koska vastauksesi ei ollut oikein. Haluatko jatkaa arvaamista vain oppimisen ilosta(enää et saa pisteitä)?'; -$string['flowcontrol'] = 'Kulunvalvonta'; -$string['general'] = 'Yleistä'; -$string['gobacktolesson'] = 'Takaisin tunnille'; -$string['grade'] = 'Arvosana'; -$string['gradeessay'] = 'Arvostele Essee Kysymykset'; +$string['firstanswershould'] = 'Ensimmäinen vastaus hyppää "oikealle" sivulle.'; $string['gradeis'] = 'Arvosana on $a'; -$string['gradeoptions'] = 'Arviointi'; $string['handlingofretakes'] = 'Useiden yritysten arvioinnin käsittelytapa'; -$string['havenotgradedyet'] = 'Ei ole vielä arvostellut.'; $string['here'] = 'tänne'; -$string['highscore'] = 'Parhaat tulokset'; -$string['hightime'] = 'Parhaat ajat'; $string['importquestions'] = 'Tuo kysymykset'; -$string['insertedpage'] = 'Lisätty sivu'; $string['jump'] = 'Siirry'; -$string['jumptsto'] = 'Siirtyy'; -$string['leftduringtimed'] = 'Olet lähtenyt ajastetun oppitunnin aikana.
        Ole hyvä ja klikkaa \"jatka\" aloittaaksesi oppitunnin uudelleen.'; -$string['leftduringtimednoretake'] = 'Olet lähtenyt ajastetun oppitunnin aikana, etkä
        saa aloittaa uudelleen tai jatkaa oppituntia.'; -$string['lesson'] = 'a$ oppitunti'; -$string['lessonclosed'] = 'Tämä oppitunti on suljettu $a:ssa'; -$string['lessondefault'] = 'Käytä tämän oppitunnin asetuksia oletuksina'; -$string['lessonformating'] = 'Oppitunnin muotoilu'; -$string['lessonmenu'] = 'Oppitunnin valikko'; -$string['lessonopen'] = 'Tämä oppitunti on auki $a:ssa'; -$string['lessonstats'] = 'Tunnin tiedot'; -$string['loginfail'] = 'Sisäänkirjautuminen epäonnistui, yritä uudelleen...'; -$string['lowscore'] = 'Matalat pisteet'; -$string['lowtime'] = 'Huono aika'; -$string['mainmenu'] = 'Päävalikko'; -$string['matchesanswer'] = 'Sopii yhteen vastausten kanssa'; -$string['maxhighscores'] = 'Pararhaiden tulosten määrä'; $string['maximumnumberofanswersbranches'] = 'Vastausten/haarojen maksimimäärä'; $string['maximumnumberofattempts'] = 'Vastausyritysten maksimimäärä'; -$string['maxtime'] = 'Aika raja (minuuteissa)'; -$string['maxtimewarning'] = 'Sinulla on $a minuutti(a) viimeistellä oppitunti.'; $string['minimumnumberofquestions'] = 'Kysymysten minimimäärä'; -$string['modattempts'] = 'Salli oppilaiden esikatselu'; -$string['modattemptsnoteacher'] = 'Vain oppilaat voivat esikatsella'; $string['modulename'] = 'Oppitunti'; $string['modulenameplural'] = 'Oppitunnit'; -$string['movedpage'] = 'Siirrety sivu'; $string['movepagehere'] = 'Siirrä sivu tähän'; $string['moving'] = 'Siirretään sivu $a'; $string['movingtonextpage'] = 'Siirrytään seuraavalle sivulle'; $string['multianswer'] = 'Monivastaus'; $string['multipleanswer'] = 'Useita vastauksia'; -$string['nameapproved'] = 'Nimi hyväksytty'; -$string['namereject'] = 'Valitettavasti suodatin hylkäsi nimesi.
        Yritä toista nimeä.'; $string['nextpage'] = 'Seuraava sivu'; $string['noanswer'] = 'Ei vastausta'; $string['noattemptrecordsfound'] = 'Ei yrityksiä: ei arvosanaa'; -$string['nocommentyet'] = 'ei vielä kommentteja'; -$string['nohighscores'] = 'Ei parhaita tuloksia'; -$string['nooneansweredcorrectly'] = 'Kukaan ei vastannut oikein'; -$string['nooneansweredthisquestion'] = 'Kukaan ei vastannut tähän kysymykseen'; -$string['noonecheckedthis'] = 'Kukaan ei valinnut tätä'; -$string['nooneenteredthis'] = 'Kukaan ei kirjoittanut tätä'; -$string['noretake'] = 'Sinulla ei ole lupaa uusia tätä oppituntia.'; $string['normal'] = 'Normaali - seuraa oppitunnin polkua'; -$string['notcompleted'] = 'Ei valmis'; $string['notdefined'] = 'Ei määritelty'; -$string['nothighscore'] = 'Et päässyt $a :n parhaan joukkoon.'; $string['notitle'] = 'Otsikko puuttuu'; $string['numberofcorrectanswers'] = 'Oikeiden vastausten lukumäärä: $a'; $string['numberofcorrectmatches'] = 'Oikeiden parikysymysten määrä: $a '; -$string['numberofpagestoshow'] = 'Näytettävien sivujen määrä'; +$string['numberofpagestoshow'] = 'Näytettävien sivujen (korttien) määrä'; $string['numberofpagesviewed'] = 'Katsottujen sivujen määrä: $a'; -$string['ongoing'] = 'Näytä menossa oleva pistemäärä.'; -$string['ongoingcustom'] = 'Tämä on $a->grade pisteen oppitunti. Olet ansainnut $a->score pistettä $a->currenthigh pisteestä tähän mennessä.'; -$string['ongoingnormal'] = 'Olet vastannut oikein $a->correct kysymykseen $a->viewed kysymyksestä.'; -$string['or'] = 'TAI'; $string['ordered'] = 'Järjestetty'; -$string['other'] = 'Muu'; $string['outof'] = 'maksimipisteet $a'; -$string['outoftime'] = 'Aika Loppuu'; -$string['overview'] = 'Yleistä'; $string['page'] = 'Sivu $a'; $string['pagecontents'] = 'Sivun sisältö'; $string['pages'] = 'Sivuja'; $string['pagetitle'] = 'Sivun otsikko'; -$string['password'] = 'Salasana'; -$string['passwordprotectedlesson'] = '$a on salasana suojattu oppitunti.'; $string['pleasecheckoneanswer'] = 'Valitse yksi vastausvaihtoehto'; $string['pleasecheckoneormoreanswers'] = 'Valitse yksi tai useampia vastausvaihtoehdoista'; $string['pleaseenteryouranswerinthebox'] = 'Kirjoita vastauksesi'; $string['pleasematchtheabovepairs'] = 'Yhdistä yllä olevien listojen kohdat pareiksi'; -$string['pointsearned'] = 'Pisteitä ansaittu'; -$string['postsuccess'] = 'Lähetys onnistui'; -$string['practice'] = 'Harjoitus Oppitunti'; -$string['previouspage'] = 'Edellinen Sivu'; -$string['question'] = 'Kysymys'; $string['questionoption'] = 'Kysymyksen vaihtoehtoinen toiminta'; $string['questiontype'] = 'Kysymyksen tyyppi'; -$string['randombranch'] = 'Satunnainen tietopuun haara'; -$string['randompageinbranch'] = 'Satunnainen kysymys haaran sisällä'; -$string['rank'] = 'Luokitus'; $string['reached'] = 'saavutettu'; $string['redisplaypage'] = 'Näytä sivu uudelleen'; -$string['report'] = 'Raportti'; $string['response'] = 'Palaute'; -$string['returnmainmenu'] = 'Palaa päävalikkoon'; -$string['returntocourse'] = 'Palaa kurssiin'; -$string['reviewlesson'] = 'Esikatesele tuntia'; -$string['reviewquestionback'] = 'Kyllä, haluaisin yrittää uudelleen'; -$string['reviewquestioncontinue'] = 'Ei, haluan vain siirtyä seuraavaan kysymykseen'; $string['sanitycheckfailed'] = 'Tarkistus epäonnistui: tämä yritys on poistettu'; -$string['savechanges'] = 'Tallenna muutokset'; -$string['savechangesandeol'] = 'Tallenna muutokset ja mene tunnin loppuun'; $string['savepage'] = 'Tallenna sivu'; -$string['score'] = 'Tulos'; -$string['scores'] = 'Tulokset'; -$string['secondpluswrong'] = 'Ei aivan, Haluaisitko yrittää uudelleen?'; $string['showanunansweredpage'] = 'Näytä vastaamaton sivu'; $string['showanunseenpage'] = 'Näytä vielä katsomaton sivu'; $string['singleanswer'] = 'Yksi vastaus'; -$string['slideshow'] = 'Diaesitys'; -$string['slideshowbgcolor'] = 'Diaesityksen taustaväri'; -$string['slideshowheight'] = 'Diaesityksen korkeus'; -$string['slideshowwidth'] = 'Diaesityksen leveys'; -$string['startlesson'] = 'Aloita oppitunti'; -$string['studentattemptlesson'] = '$a->lastname, $a->firstname\'s yritys numero $a->attempt'; -$string['studentoneminwarning'] = 'Varoitus: Sinulla on 1 minuutti tai vähemmän viimeistellä oppitunti.'; -$string['studentoutoftime'] = 'HUOMIO: Aika loppui tämän oppitunnin osalta. Viimeistä vastaustasi ei lasketa, koska se annettiin ajan jo loputtua. Paina jatka painiketta lopettaaksesi oppitunnin.'; -$string['studentresponse'] = '{$a}\'n vastaus'; -$string['submitname'] = 'Lähetä nimi'; -$string['teacherjumpwarning'] = '$a->cluster hyppyä tai $a->unseen hyppyä käytetään tällä oppitunnilla. Seuraava Sivu hyppyä käytetään sen sijaan. Kirjaudu sisään opiskelijana testataksesi näitä hyppyjä.'; -$string['teacherongoingwarning'] = 'Menossa oleva tulos on näytetty ainoastaan opiskelijalle. Kirjaudu sisään opiskelijana testataksesi menossa olevaa tulosta.'; -$string['teachertimerwarning'] = 'Ajastin toimii vain opiskelijalle. Kirjaudu sisään opiskelijana testataksesi ajastinta.'; $string['thatsthecorrectanswer'] = 'Vastaus on oikein'; $string['thatsthewronganswer'] = 'Vastaus on väärin'; $string['thefollowingpagesjumptothispage'] = 'Seuraavat sivut hyppäävät tälle sivulle'; $string['thispage'] = 'Tämä sivu'; -$string['timed'] = 'Ajastettu'; -$string['timeremaining'] = 'Aikaa jäljellä'; -$string['timetaken'] = 'Aikaa kulunut'; -$string['topscorestitle'] = 'Parhaat $a->maxhighscores tulosta oppitunnilla: $a->name .'; -$string['treeview'] = 'Puu näkymä'; -$string['unseenpageinbranch'] = 'Katsomaton kysymys haarassa'; -$string['updatedpage'] = 'Sivu päivitetty'; -$string['updatefailed'] = 'Päivitys epäonnistui'; -$string['updatesuccess'] = 'Päivitys onnistui'; $string['useeditor'] = 'Käytä editoria'; $string['usemaximum'] = 'Valitse korkein'; $string['usemean'] = 'Käytä keskiarvoa'; -$string['usepassword'] = 'salasanasuojattu oppitunti'; -$string['viewallpages'] = 'Katsele kaikkia sivuja'; -$string['viewgrades'] = 'Katsele arvosanoja'; -$string['viewhighscores'] = 'Näytä parhaat tulokset..'; -$string['viewlessonstats'] = 'Näytä oppitunnin tiedot'; -$string['waitpostscore'] = 'Odota, tuloksia lähetetään'; -$string['welldone'] = 'Hyvin tehty!'; -$string['whatdofirst'] = 'Mitä haluaisit tehdä ensimmäiseksi?'; -$string['wronganswerjump'] = 'Väärä vastaus hyppy'; -$string['wronganswerscore'] = 'Väärä vastaus tulos'; -$string['wrongresponse'] = 'Väärä vaste'; -$string['youhavereceived'] = 'Sait tästä kysymyksestä $a->score pistettä a$-outof pisteestä.'; $string['youhaveseen'] = 'Olet aikaisemmin aloittanut tämän oppitunnin.
        Haluatko jatkaa sivulta, jolle viimeksi jäit?'; -$string['youmadehighscore'] = 'Selvisit TOP $a :iin parhaat tulokset listalla.'; $string['youranswer'] = 'Vastauksesi'; $string['yourcurrentgradeis'] = 'Nykyinen arvosanasi on $a'; -$string['yourgradeisnow'] = 'Arvosanasi tunnista on mutettu $a :iksi'; -$string['yourresponse'] = 'Vastauksesi'; $string['youshouldview'] = 'Sinun pitäisi katsoa ainakin $a sivua'; ?> diff --git a/lang/fi/mediaplugin.php b/lang/fi/mediaplugin.php index c27c2a5bedf..17180324983 100644 --- a/lang/fi/mediaplugin.php +++ b/lang/fi/mediaplugin.php @@ -1,10 +1,7 @@ diff --git a/lang/fi/message.php b/lang/fi/message.php deleted file mode 100755 index e69de29bb2d..00000000000 diff --git a/lang/fi/moodle.php b/lang/fi/moodle.php index d7c0b247eb8..1f082c5a961 100644 --- a/lang/fi/moodle.php +++ b/lang/fi/moodle.php @@ -1,5 +1,5 @@ $a
        '; $string['activityiscurrentlyhidden'] = 'Valitettavasti tämä aktiviteetti on piilotettuna'; -$string['activitymodule'] = 'Aktiviteettimoduuli'; +$string['activitymodule'] = 'Tapahtumamoduuli'; $string['activityreport'] = 'Tapahtumaraportti'; $string['activityselect'] = 'Valitse tämä aktiviteetti siirrettäväksi'; -$string['activitysince'] = 'Tapahtumat $a lähtien'; +$string['activitysince'] = 'Tapahtumaa $a lähtien'; $string['add'] = 'Lisää'; $string['addactivity'] = 'Lisää aktiviteetti'; $string['addadmin'] = 'Lisää ylläpitäjä'; @@ -21,7 +21,7 @@ $string['addedtogroup'] = 'Lis $string['addedtogroupnot'] = 'Ei lisätty ryhmään $a'; $string['addedtogroupnotenrolled'] = 'Ei lisätty ryhmään $a , koska ei ole mukana ko. kursilla'; $string['addinganew'] = 'Lisätään uusi $a'; -$string['addinganewto'] = 'Lisätään uusi $a->what kohtaan $a->to'; +$string['addinganewto'] = 'Lisätään uusi $a->what ( $a->to ) '; $string['addingdatatoexisting'] = 'Lisätään dataa olemassaolevaan'; $string['addnewcategory'] = 'Lisää uusi kategoria'; $string['addnewcourse'] = 'Lisää uusi kurssi'; @@ -30,7 +30,7 @@ $string['addresource'] = 'Lis $string['address'] = 'Osoite'; $string['addstudent'] = 'Lisää opiskelija'; $string['addteacher'] = 'Lisää opettaja'; -$string['admin'] = 'Ylläpito'; +$string['admin'] = 'Ylläpitäjä'; $string['adminhelpaddnewuser'] = 'Käyttäjien lisäys manuaalisesti'; $string['adminhelpassignadmins'] = 'Ylläpitäjällä on pääsy kaikkialle tällä sivustolla sekä kaikki oikeudet lisäyksiin ja poistoihin'; $string['adminhelpassigncreators'] = 'Ylläpitäjät voivat luoda uusia kursseja ja opettaa niissä'; @@ -41,16 +41,15 @@ $string['adminhelpbackup'] = 'M $string['adminhelpconfiguration'] = 'Määritä sivuston ulkoasu ja toiminnot'; $string['adminhelpconfigvariables'] = 'Määritä sivuston yleiseen toimintaan vaikuttavat muuttujat'; $string['adminhelpcourses'] = 'Määritä kategoriat ja kurssit sekä niille käyttäjät'; -$string['adminhelpeditorsettings'] = 'Määrittele HTML editorin perusasetukset'; $string['adminhelpedituser'] = 'Selaa käyttäjälistaa ja muokkaa tunnuksia'; $string['adminhelpenrolments'] = 'Valitse sisäiset tai ulkoiset tavat kurssijäsenyyksien hallintaan'; -$string['adminhelpfailurelogs'] = 'Selaa epäonnistuneita kirjautumisia'; +$string['adminhelpfailurelogs'] = 'Selaa epäonnistuneita kirjaantumisia'; $string['adminhelplanguage'] = 'Käytössä olevan kielipaketin tarkistus ja editointi'; $string['adminhelplogs'] = 'Selaa sivuston kaikkia tapahtumia'; $string['adminhelpmanageblocks'] = 'Hallitse asennettuja lohkoja ja niiden asetuksia'; $string['adminhelpmanagedatabase'] = 'Hallitse tietokantaa suoraan (muista olla varovainen!)'; $string['adminhelpmanagefilters'] = 'Valitse tekstisuotimet ja niiden asetukset'; -$string['adminhelpmanagemodules'] = 'Hallitse asennettuja moduleita ja niiden asetuksia'; +$string['adminhelpmanagemodules'] = 'Valvo asennettuja moduleita ja niiden asetuksia'; $string['adminhelpsitefiles'] = 'Tiedostojen julkaisu tai varmuuskopioiden siirto palvelimelle'; $string['adminhelpsitesettings'] = 'Määritä, miltä sivuston etusivu näyttää'; $string['adminhelpthemes'] = 'Valitse, miltä sivusto näyttää (värit fontit jne.)'; @@ -61,9 +60,7 @@ $string['administrator'] = 'Yll $string['administrators'] = 'Ylläpitäjät'; $string['administratorsall'] = 'Kaikki ylläpitäjät'; $string['administratorsandteachers'] = 'Ylläpitäjät ja opettajat'; -$string['advanced'] = 'Tarkemmin'; -$string['advancedfilter'] = 'Tarkennettu haku'; -$string['advancedsettings'] = 'Lisäasetukset'; +$string['advancedfilter'] = 'Edistynyt suodin'; $string['again'] = 'taas'; $string['all'] = 'Kaikki'; $string['allactivities'] = 'Kaikki aktiviteetit'; @@ -73,10 +70,8 @@ $string['allgroups'] = 'Kaikki ryhm $string['alllogs'] = 'Kaikki tapahtumat'; $string['allow'] = 'Salli'; $string['allowguests'] = 'Tämä kurssi päästää vierailijatunnuksella sisään.'; -$string['allowinternal'] = 'Salli myös sisäiset metodit'; $string['allownot'] = 'Älä salli'; $string['allparticipants'] = 'Kaikki osallistujat'; -$string['allteachers'] = 'Kaikki opettajat'; $string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,Å,Ä,Ö'; $string['alphanumerical'] = 'Voi sisältää ainostaan kirjaimia tai numeroita'; $string['alreadyconfirmed'] = 'Rekisteröinti on jo aiemmin vahvistettu.'; @@ -88,45 +83,40 @@ $string['assessment'] = 'Arviointi'; $string['assignadmins'] = 'Määritä ylläpitäjät'; $string['assigncreators'] = 'Määritä kurssiylläpitäjät'; $string['assignstudents'] = 'Lisää opiskelija kurssille'; -$string['assignstudentsnote'] = 'Huomioi, tätä sivua ei ole välttämätöntä käyttää, sillä opiskelijoilla on mahdollisuus lisätä itsensä kurssille.'; +$string['assignstudentsnote'] = 'Huomioi, että opiskelijoilla on mahdollisuus lisätä itsensä kurssille.'; $string['assignstudentspass'] = 'Sitä varten opiskelija tarvitsee kurssiavaimen, joka on: \'$a\''; $string['assignteachers'] = 'Määritä opettajat'; $string['authentication'] = 'Käyttäjäntunnistus'; $string['autosubscribe'] = 'Automaattinen tilaus'; -$string['autosubscribeno'] = 'Ei: älä tilaa keskustelualuetta automaattisesti'; -$string['autosubscribeyes'] = 'Kyllä: tilaa keskustelualue osallistuessani keskusteluun'; -$string['availability'] = 'Saatavuus'; +$string['autosubscribeno'] = 'Ei: minulle ei automaattisia tilauksia'; +$string['autosubscribeyes'] = 'Kyllä: automaattinen tilaus on toiminnassa'; +$string['availability'] = 'Avoinna'; $string['availablecourses'] = 'Kurssit'; $string['backup'] = 'Varmuuskopiointi'; $string['backupcoursefileshelp'] = 'Jos asetus on päällä, tulevat kurssien tiedostot mukaan automaattisiin varmuuskopiohin.'; $string['backupdate'] = 'Varmuuskopion päivämäärä'; $string['backupdetails'] = 'Varmuuskopion yksityiskohdat'; -$string['backupfailed'] = 'Joitain kursseitasi ei tallennettu!'; $string['backupfilename'] = 'varmuuskopio'; -$string['backupfinished'] = 'Varmuuskopio tehty onnistuneesti'; -$string['backupincludemoduleshelp'] = 'Valitse, halutko sisällyttää kurssimodulit, käyttäjätietojen kanssa tai ilman, automaattiseen varmuuskopiointiin'; +$string['backupfinished'] = 'Varmuuskopio tehty menestyksekkäästi'; +$string['backupincludemoduleshelp'] = 'Valitse, halutko sisällyttää kurssimodulit - tiedostojen kanssa tai ilman - automaattiseen varmuuskopiointiin'; $string['backupkeephelp'] = 'Montako varmuuskopiota haluat säilyttää? Vanhimmat niistä poistetaan automaattisesti.'; $string['backuplogdetailed'] = 'Tarkka suoritusloki'; $string['backuploglaststatus'] = 'Viimeisin suoritusloki'; $string['backuplogshelp'] = 'Jos asetus on päällä, kurssin tapahtumalokit tulevat mukaan varmuuskopioihin.'; $string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['backupnoneusersinfo'] = 'Huomaa: Et ole valinnut käyttäjiä varmuuskopioitavaksi, täten kaikki modulivarmuuskopiot on muutettu \"Ilman käyttäjien tiedostoja\" muotoon. Huomaa, että oppimistehtävä ja työryhmä modulit eivät ole yhteensopivia tämän tyypisen varmuuskopioinnin kanssa ja kyseisiä moduleita ei varmuuskopioida.'; +$string['backupnoneusersinfo'] = 'Huomaa: Et ole valinnut käyttäjiä varmuuskopioitavaksi, täten kaikki modulivarmuuskopiot on muutettu \"Ilman käyttäjien tiedostoja\" muotoon. Huomaa että oppimistehtävä ja työryhmä modulit eivät ole yhteensopivia tämän tämän tyypisen varmuuskopioinnin kanssa ja kyseisiä moduleita ei varmuuskopioida.'; $string['backuporiginalname'] = 'Varmuuskopion nimi'; $string['backupsavetohelp'] = 'Koko polku hakemistoon, johon haluat tallentaa varmuuskopiotiedostot.
        (Jätä tämä tyjäksi jos haluat tallentaa kurssin oletushakemistoon.)'; -$string['backuptakealook'] = 'Ole hyvä ja katso varmuuskopioinnin lokitiedostot paikasta: $a'; $string['backupuserfileshelp'] = 'Valitse, haluatko sisällyttää käyttäjätiedostot (omat kuvat) automaattiseen varmuuskopiointiin'; $string['backupusershelp'] = 'Haluatko varmuuskopioida kaikki käyttäjät vai vain tarvittavat käyttäjät kurssia kohden'; $string['backupversion'] = 'Varmuuskopion versio'; -$string['blockconfiga'] = 'konfiguroidaan $a lohko'; -$string['blockconfigbad'] = 'Tätä lohkoa ei ole toteutettu oikein ja siksi konfiguraatio liitäntää ei voida hankkia.'; -$string['blockdeleteconfirm'] = 'Olet poistamassa lopullisesti lohkon \'$a\'. Tämä poistaa kaikki lohkoon liittyvät tiedostot tietokannasta. Oletko varma että haluat jatkaa?'; -$string['blockdeletefiles'] = 'Kaikki lohkoon \'$a->block\' liityvä tieto on poistettu tietokannasta. Viimestelläksesi poiston ( ja esääksesi lohkoa asentumasta uudelleen) poista seuraavaksi hakemisto $a->directory palvelimelta'; +$string['blockdeleteconfirm'] = 'Olet poistamassa lopullisesti lohkon \'$a\'. Tämä poistaa kaikki lohkoon liittyvät tiedost tietokannasta. Oletko varma että haluat jatkaa?'; +$string['blockdeletefiles'] = 'Kaikki lohkoon \'$a->block\' liityvä tieto on poistettu tietokannasta. Viimestelläksesi poiston ( ja esääksesi lohkoa asentumasta uudelleen) poista seuraavaksi hakemisto $a->dirrectory palvelimelta'; $string['blocks'] = 'Lohkot'; -$string['blocksaddedit'] = 'Muokkaa lohkoja'; $string['blocksetup'] = 'Asetetaan lohkojen taulut'; -$string['blocksuccess'] = '$a taulut on asetettu onnistuneesti'; +$string['blocksuccess'] = '$a taulut on asetettu'; $string['bycourseorder'] = 'Kurssin mukaan'; -$string['byname'] = '$a mukaan'; +$string['byname'] = '$a :n mukaan'; $string['cancel'] = 'Peruuta'; $string['categories'] = 'Kurssikategoriat'; $string['category'] = 'Kategoria'; @@ -141,48 +131,81 @@ $string['checkingcourse'] = 'Tutkitaan kurssi'; $string['checkinginstances'] = 'Tarkistetaan tapahtumia'; $string['checkingsections'] = 'Tarkistetaan tehtävälohkoja'; $string['checklanguage'] = 'Tarkista kieli'; -$string['childcoursenotfound'] = 'Alikurssia ei löytynyt!'; $string['choose'] = 'Valitse'; $string['choosecourse'] = 'Valitse kurssi'; -$string['chooseenrolmethod'] = 'Ensisijainen rekisteröintitapa'; $string['chooselivelogs'] = 'Tai tarkastele nykyistä aktiivisuutta'; $string['chooselogs'] = 'Valitse tapahtumat joita haluat tarkastella'; $string['choosereportfilter'] = 'Valitse suodin raporttia varten'; $string['choosetheme'] = 'Valitse teema'; $string['chooseuser'] = 'Valitse käyttäjä'; -$string['city'] = 'Paikkakunta'; -$string['clambroken'] = 'Ylläpitäjä on määritellyt virustunnistuksen, mutta jokin virustunnistuksen asetuksista on väärin.
        Tiedoston tallentaminen ei onnistunut. Ylläpitäjälle on lähetetty sähköposti tästä virheestä, jotta hän voi korjata asian.
        Yritä lähettää tiedosto myöhemmin uudelleen.'; -$string['clamdeletedfile'] = 'Tiedosto on poistettu'; -$string['clamdeletedfilefailed'] = 'Tiedostoa ei voitu poistaa'; -$string['clamemailsubject'] = '$a :: Clam AV -ilmoitus'; -$string['clamfailed'] = 'Clam Antivirus -ohjelmaa ei voitu suorittaa. Virhe oli $a . Tässä on ohjelman tuloste:'; -$string['clamlost'] = 'Moodle on konfiguroitu tarkistamaan lähetetyt tiedostot Clam Antivirus -ohjelmistolla, mutta ohjelman sijainti, $a, on virheellinen.'; -$string['clamlostandactinglikevirus'] = 'Lisäksi, Moodle on määritelty hylkäämään tarkistamatta jääneet tiedostot. Tämä tarkoitaa sitä ettei tiedostoja voida lähettää ennenkuin ongelma on korjattu.'; -$string['clammovedfile'] = 'Tiedosto on siirretty karanteenihakemistoon. Tiedoston uusi sijainti on $a.'; -$string['clammovedfilebasic'] = 'Tiedosto on siirretty karanteenihakemistoon.'; -$string['clamquarantinedirfailed'] = 'Tiedostoa ei voitu siirtää karanteenihakemistoon $a. Ongelma pitää korjata koska tässä tapauksessa kaikki saatuneet tiedostot poistetaan.'; -$string['clamunknownerror'] = 'Tuntematon virhe Clam AV-ohjelmiston käytössä.'; +$string['city'] = 'Kaupunki/paikkakunta'; $string['cleaningtempdata'] = 'Puhdistetaan väliaikaiset tiedot'; -$string['clicktochange'] = 'Klikkaa muokataksesi'; +$string['clicktochange'] = 'klikkaa muokataksesi'; $string['closewindow'] = 'Sulje tämä ikkuna'; $string['comparelanguage'] = 'Vertaa ja muokkaa käännöstä'; $string['complete'] = 'Suoritettu loppuun'; +$string['configallowunenroll'] = 'Jos tässä on \'Kyllä\', oppilaat voivat poistua kurssilta milloin he haluavat. Muussa tapauksessa opettajat ja ylläpitäjät poistavat opiskelijat kursseilta tarvittaessa.'; +$string['configautologinguests'] = 'Kirjataanko vieraijat automaattisesti \'vieras\'-tunnuksella kun kurssi sallii vieras-käyttäjät'; +$string['configcachetext'] = 'Laajoille sivustoille tai sivustoille, jotka käyttävät tekstisuotimia, tämä asetus saattaa todella nopeuttaa toimintaa. Tekstien kopiot säilytetään prosessoidussa muodossaan tässä asetetun ajan verran. +Mikäli asetat tähän liian pienen arvon, palvelimen toiminta saattaa hieman hidastua, mutta liian suuri arvo saattaa aiheuttaa liian pitkän päivitysviiveen (esimerkiksi uusille linkeille).'; +$string['configcountry'] = 'Jos asetat maan tässä, valinnasta tulee oletusasetus kaikille käyttäjille. Pakottaaksesi käyttäjät valitsemaan maansa itse, jätä tämä kohta tyhjäksi.'; +$string['configdebug'] = 'Jos valitset virheenkorjaustilan päälle, PHP:n error_reporting arvo nousee ja useampia virheilmoituksia tulostuu näytölle. Tästä asetuksesta on hyötyä vain Moodlen kehittäjille.'; +$string['configdeleteunconfirmed'] = 'Jos käytät autentikointia sähköpostin kautta, tämän ajan kuluessa käyttäjän vahvistusviesti hyväksytään. Tämän ajan jälkeen vahvistamattomat tunnukset poistetaan.'; +$string['configdigestmailtime'] = 'Käyttäjät jotka haluavat postinsa kerättynä saavat viestit alueilta kerran päivässä. Tämä asetus säätää ajan joolloin kerätyt postit lähetetään.'; +$string['configdisplayloginfailures'] = 'Tämä näyttää tiedot epäonnistuneista kirjaantumisista valituille käyttäjille.'; +$string['configenablerssfeeds'] = 'Tämä mahdollistaa RSS sytteet koko sivustolta. Jotta syötteet toimisivat pitää RSS syötteet aktivoida jokaiselta modulilta erikseen. KAtso \"Modulien asetukset\"'; +$string['configenablerssfeedsdisabled'] = 'Ei ole valittavissa koska sisvuston RSS sytteet on poissa käytöstä. Voit kytkeä RSS syöteet päälle ylläpito asetusten \"Muuttujat\" sivulta.'; +$string['configerrorlevel'] = 'PHP virheilmoitusten määrä. Normal on yleensä hyvä valinta.'; +$string['configextendedusernamechars'] = 'Tämä mahdollistaa kaikkien merkkien käyttämisen käyttäjätunnuksissa. Oletuksena tunnuksessa sallitaan vain numerot ja kirjaimet.'; +$string['configfilteruploadedfiles'] = 'Tämän kohdan asettaminen pakottaa Moodlen prosessoimaan kaikki Moodleen ladattavat HTML- ja tekstitiedostot tekstisuotimilla ennen niiden näyttämistä.'; +$string['configforcelogin'] = 'Normaalisti sivuston etusivu ja kurssilistaukset ovat kaikkien nähtävillä. Jos haluat, että käyttäjien pitää kirjaantua ennen kuin he voivat tehdä mitään sivustollasi, sinun pitää määritellä tämä asetus.'; +$string['configforceloginforprofiles'] = 'Tämä asetus pakoittaa käyttäjän kirjaantumaan oikealla (ei vieras) tunuuksella ennen kuin he voivat nähdä muiden käyttäjien tietoja. Oletuksena asetus on pois päältä jolloin oppija voi lukea opettajien tiedot ja hakukoneet indeksoida tiedot.'; +$string['configframename'] = 'Jos haluat sijoittaa Moodlen sivustolle, joka käyttää kehyksiä, määritä tässä sen kehyksen nimi, jossa Moodle on. Muutoin jätä tämä ennalleen asetukseen \'_top\''; +$string['configfullnamedisplay'] = 'Tämä määrittelee, kuinka käyttäjän koko nimi näytetään. Oletuksena käytetään \"Given names + Surname\", joka toimii tehokkaasti useimmilla yksikielisillä sivustoilla, mutta voit valita sukunimen täydellisen piilottamisen tai antaa nykyisen kielipaketin päättää asiasta.'; +$string['configgdversion'] = 'GD-kirjaston versio. Näkyvissä oleva numero on tunnistettu automaattisesti. Älä muuta, ellet tiedä mitä teet.'; +$string['confightmleditor'] = 'Valitse, haluatko käyttää upotettua HTML-editoria. HTML-editori toimii vain IE5.5 ja uudemmissa selaimissa. Käyttäjät voivat halutessaan olla käyttämättä tätä editoria.'; +$string['configidnumber'] = 'Tästä valitaan seuraavaa: (a) Käyttäjiltä ei kysytä ID-numeroa, (b) Käyttäjiltä kysytään ID-numeroa, mutta he voivat jättää kohdan tyhjäksi tai (c) ID-numeroa ei voi jättää tyhjäksi. ID-numero näytetään silloin käyttäjän tiedoissa.'; +$string['configintro'] = 'Tällä sivulla voit määritellä joukon asetuksia, jotka auttavat Moodlea toimimaan palvelimellasi haluamallasi tavalla. Näistä on turha stressata, yleensä oletukset toivat hyvin. Ainahan voit palata takaisin tekemään muutoksia, jos tarpeen.'; +$string['configintroadmin'] = 'Tällä sivulla täytetään tiedot pääylläpitäjälle, jolla on täydet oikeudet sivustolla. Tarpeeksi vaikean salasanan antaminen on tärkeää, samoin oikean sähköpostiosoitteen. Lisää admin-käyttäjiä voi luoda myöhemmin.'; +$string['configintrosite'] = 'Tällä sivulla muokataan sivuston etusivu ja nimi. Tänne voi tulla myöhemmin \'Sivuston asetukset\' linkistä.'; +$string['configlang'] = 'Valitse oletuskieli koko sivustolle. Käyttäjät voivat myöhemmin halutessaan muuttaa asetustaan.'; +$string['configlangdir'] = 'Kirjoitussuunta yleensä vasemmalta oikealle, mutta esim. arabia ja heprea ovat poikkeuksia tähän.'; +$string['configlanglist'] = 'Jos tämä valinta on tyhjä, voi käyttäjä valita minkä tahansa asennuksessa saatavilla olevan kielen. Voit halutessasi vähentää kielivalintoja luottelemalla pilkulla erotettuna tässä haluamiesi kielten kielekoodit. Esimerkiksi fi, en'; +$string['configlangmenu'] = 'Valitse, haluatko kielivalikon näkymään etu- ja kirjautumissivuille. Tämä ei poista käyttäjältä mahdollisuutta asettaa haluamaansa kieltä muokkaamalla omaa käyttäjäprofiiliaan.'; +$string['configlocale'] = 'Päivämäärien muotoilu tehdään tämän tiedon mukaan. Annetun locale-koodin pitää olla palvelimen tuntema (Esim. fi_FI). Jos et ole varma, jätä tämä tyhjäksi.'; +$string['configloglifetime'] = 'Tässä määritetään, kuinka pitkältä aikaväliltä haluat tallentaa käyttäjien toimet. Määritettyä aikaa vanhemmat tapahtumat poistetaan automaattisesti. Yleensä on hyvä säilyttää kaikki tapahtumat, mutta jos palvelimesi alkaa hyytyä isojen tapahtuma-lokien kanssa, saatat haluta alentaa säilytysaikaa.'; +$string['configlongtimenosee'] = 'Opiskelijat, jotka eivät ole kirjaantuneet pitkään aikaan, poistetaan kursseilta automaattisesti. Määrittele tässä haluamasi aika.'; +$string['configmaxbytes'] = 'Tämä määrittelee suurimman mahdollisen koon, jonka lähetetyt tiedostot voivat viedä sivustoon. Tätä asetusta rajoittaa PHP asetus upload_max_filesize ja Apache asetus LimitRequestBody. Toisin sanoen: järjestelmätaso rajoittaa alueen, jota voit käyttää kurssi-tai moduulitasolla.'; +$string['configmaxeditingtime'] = 'Määrittää, kauanko keskustelualueelle lähetettyä viestiä voidaan muokata.'; +$string['configopentogoogle'] = 'Tämä asetus sallii Googlen kirjautumisen sisään vieraskäyttäjätilillä. Lisäksi Googlen hakutoiminnon kautta sivustollesi tulevat käyttäjät kirjataan automaattisesti vierastilille. Huomaa, että tämä vain mahdollistaa läpinäkyvän kirjautumisen kursseille, joilla vierastili on jo käytössä.'; +$string['configproxyhost'] = 'Jos palvelimen pitää käyttää välityspalvelinta internetyhteyksiin, määritä palvelin ja portti tässä.'; +$string['configsecureforms'] = 'Moodle voi käyttää korkeampaa tietoturvatasoa lomakkeita lähetettäessä. Jos tämä on otettu käyttöön, selaimen HTTP_REFERER muuttuja tarkistetaan. Silloin tällöin palomuuri on asetettu hylkäämään HTTP_REFERER muuttuja. Jos käyttäjät valittavat, että he eivät pysty kirjautumaan Moodleen, voi tämän ottaa pois käytöstä. Tämä tosin jättää Moodlen alttiiksi hyökkäyksille. Jos et ole varma, valitse \'kyllä\'.'; +$string['configsessioncookie'] = 'Tämä asetus määrää Moodle istunnoilla käytettävän evästeen (cookie) nimen. Asetus on valinnainen. Se hyödyllinen ainoastaan välttämään evästeiden (cookies) sekoittumista, kun käytössä on useampia Moodleja samalla internetsivustolla.'; +$string['configsessiontimeout'] = 'Jos sivuston käyttäjät ovat pitkän aikaa tekemättä mitään, heidät voidaan kirjata pois järjestelmästä. Määrittele tässä sallittu joutoaika, jonka jälkeen yhteys katkaistaan.'; +$string['configslasharguments'] = 'Tiedostot, jotka välitetään php-välityksessä selaimille, voidaan jakaa käyttäen \'slash arguments\'-metodia. Tämä mahdolistaa tiedostojen tallentumisen välityspalvelimille. Kaikki php-palvelimet eivät tue tätä ominaisuutta. Aseta silloin käyttöön ensimmäinen vaihtoehto.'; +$string['configsmtphosts'] = 'Anna postin lähettämiseen käytettävän SMTP-palvelimen nimi. Voit määritellä useita palvelimia muodossa \'posti.domain.org; +posti2.domain.org\'. Mikäli jätät tämän tyhjäksi, Moodle käyttää PHP:n oletustapaa postin lähettämiseen.'; +$string['configsmtpuser'] = 'Jos SMTP-palvelin vaatiin autentikoinnin, anna käyttäjätunnus ja salasana näihin kenttiin.'; +$string['configteacherassignteachers'] = 'Sallitaanko tavallisten opettajien määrittää muita opettajia kurssilleen? Jos ei, niin ainoastaan kurssiylläpitäjät voivat määrittää opettajia kurssilleen.'; +$string['configtimezone'] = 'Tästä voit asettaa oletusaikavyöhykkeen. Tämä on ainoastaan oletusasetus päiväyksien näyttämistä varten, jokainen käyttäjä voi asettaa sen haluamakseen profiilissaan. +\"Server time\" tässä yhteydessä tarkoittaa järjestelmän asetusta, käyttäjäprofiilissa \"Server time\" viittaa tähän oletusaikavyöhykeasetukseen.'; +$string['configunzip'] = 'Anna unzip-ohjelman sijainti. (vain UNIX)'; $string['configuration'] = 'Asetukset'; +$string['configvariables'] = 'Määrittele muuttujat'; +$string['configwarning'] = 'Ole varovainen muuttaessasi näitä asetuksia. Väärät asetukset voivat aiheuttaa ongelmia.'; +$string['configzip'] = 'Anna zip-ohjelman sijainti. (vain UNIX)'; $string['confirm'] = 'Vahvista'; $string['confirmed'] = 'Rekisteröitymisesi on vahvistettu'; $string['confirmednot'] = 'Rekisteröitymisesi ei ole vielä vahvistettu'; $string['continue'] = 'Jatka'; -$string['continuetocourse'] = 'Klikkaa tästä päästäksesi kurssille'; +$string['continuetocourse'] = 'Klikaa tässä päästäksesi kurssille'; $string['cookiesenabled'] = 'Selaimessasi pitää olla evästeet (cookies) päällä.'; -$string['cookiesnotenabled'] = 'Selaimessasi ei ole evästeiden (cookies) tuki päällä.'; -$string['copy'] = '- Kopio'; -$string['copyingcoursefiles'] = 'Kopioi kurssin tiedostoja'; -$string['copyinguserfiles'] = 'Kopioi käyttäjän tiedostoja'; -$string['copyingzipfile'] = 'Kopioi zip-tiedostoa'; +$string['copy'] = 'Kopioi'; +$string['copyingcoursefiles'] = 'Kopioi kurssin tiedostot'; +$string['copyinguserfiles'] = 'Kopioi käyttäjän tiedostot'; +$string['copyingzipfile'] = 'Kopioi zip-tiedosto'; $string['copyrightnotice'] = 'Käyttöoikeustiedot'; $string['cost'] = 'Hinta'; -$string['costdefault'] = 'Perushinta'; -$string['counteditems'] = '$a->items ($a->count)'; $string['country'] = 'Maa'; $string['course'] = 'Kurssi'; $string['courseavailable'] = 'Tämä kurssi on avoinna opiskelijoille'; @@ -194,34 +217,27 @@ $string['coursecreators'] = 'Kurssiyll $string['coursefiles'] = 'Kurssin tiedostot'; $string['courseformats'] = 'Kurssimuodot'; $string['coursegrades'] = 'Kurssin arvioinnit'; -$string['coursehidden'] = 'Tämä kurssi ei ole avoinna opiskelijoille'; -$string['courseinfo'] = 'Kurssin tiedot'; +$string['courseinfo'] = 'Kurssin info'; $string['courserestore'] = 'Kurssin palautus'; $string['courses'] = 'Kurssit'; -$string['coursescategory'] = 'Saman kategorian kurssit'; -$string['coursestaught'] = 'Pitämäni kurssit'; $string['courseupdates'] = 'Kurssin päivitykset'; $string['courseuploadlimit'] = 'Kurssin lähetysraja'; $string['create'] = 'Luo'; $string['createaccount'] = 'Luo uusi käyttäjätunnus.'; $string['createfolder'] = 'Luo hakemisto kohtaan $a'; -$string['createuserandpass'] = 'Luo uusi käyttäjätunnus ja salasana kirjautumista varten'; +$string['createuserandpass'] = 'Luo uusi käyttäjätunnus ja salasana kirjaantumista varten'; $string['createziparchive'] = 'Luo zip-paketti'; -$string['creatingblocks'] = 'Luodaan lohkoja'; $string['creatingcategoriesandquestions'] = 'Luodaan kategoriat ja kysymykset'; -$string['creatingcoursemodules'] = 'Luodaan kurssin moduuleja'; -$string['creatingevents'] = 'Luodaan tapahtumia'; +$string['creatingcoursemodules'] = 'Luodaan kurssin modulit'; +$string['creatingevents'] = 'Luodaan tapahtuma'; $string['creatinggroups'] = 'Luodaan ryhmiä'; $string['creatinglogentries'] = 'Luodaan tapahtumalokit'; -$string['creatingmessagesinfo'] = 'Luodaan viestitietoja'; -$string['creatingmetacoursedata'] = 'Luodaan metakurssin tietoja'; -$string['creatingnewcourse'] = 'Luodaan uutta kurssia'; -$string['creatingscales'] = 'Luodaan asteikkoja'; -$string['creatingsections'] = 'Luodaan osioita'; -$string['creatingtemporarystructures'] = 'Luodaan väliaikaisia rakenteita'; -$string['creatingusers'] = 'Luodaan käyttäjiä'; -$string['creatingxmlfile'] = 'Luodaan XML tiedostoa'; -$string['currency'] = 'Valuutta'; +$string['creatingnewcourse'] = 'Luodaan uusi kurssi'; +$string['creatingscales'] = 'Luodaan asteikot'; +$string['creatingsections'] = 'Luodaan osiot'; +$string['creatingtemporarystructures'] = 'Luodaan väliaikaiset rakenteet'; +$string['creatingusers'] = 'Luodaan käyttäjät'; +$string['creatingxmlfile'] = 'Luodaan XML tiedosto'; $string['currentcourseadding'] = 'Nykyinen kurssi, lisäätään tiedot'; $string['currentcoursedeleting'] = 'Nykyinen kurssi, poistetaan ensin'; $string['currentlanguage'] = 'Nykyinen kieli'; @@ -241,7 +257,7 @@ $string['datemostrecentfirst'] = 'P $string['datemostrecentlast'] = 'Päiväys - viimeisin viimeisenä'; $string['day'] = 'päivä'; $string['days'] = 'päivää'; -$string['decodinginternallinks'] = 'Pura sisäiset linkit'; +$string['decodinginternallinks'] = 'Dekoodaa sisäiset linkit'; $string['defaultcoursefullname'] = 'Kurssin koko nimi'; $string['defaultcourseshortname'] = 'KK101'; $string['defaultcoursestudent'] = 'Opiskelija'; @@ -251,10 +267,9 @@ $string['defaultcourseteacher'] = 'Opettaja'; $string['defaultcourseteachers'] = 'Opettajat'; $string['delete'] = 'Poista'; $string['deleteall'] = 'Poista kaikki'; -$string['deletecategorycheck'] = 'Oletko aivan varma, että haluat poistaa kokonaan kategorian \'$a\'?
        Kaikki kategorian kurssit siirretään ylempään kategoriaan, tai ylemmän kategorian puuttuessa kategoriaan \'Muut\'.'; -$string['deletecheck'] = 'Poista $a?'; -$string['deletecheckfiles'] = 'Oletko aivan varma, että haluat poistaa nämä tiedostot?'; -$string['deletecheckfull'] = 'Oletko aivan varma, että haluat pysyvästi poistaa kohteen $a?'; +$string['deletecheck'] = 'Poista $a ?'; +$string['deletecheckfiles'] = 'Oletko varma, että haluat poistaa nämä tiedostot?'; +$string['deletecheckfull'] = 'Oletko aivan varma, että haluat pysyvästi poistaa $a ?'; $string['deletecheckwarning'] = 'Olet aikeissa poistaa nämä tiedostot'; $string['deletecompletely'] = 'Poista kokonaan'; $string['deletecourse'] = 'Poista kurssi'; @@ -262,16 +277,13 @@ $string['deletecoursecheck'] = 'Oletko aivan varma, ett $string['deleted'] = 'Poistettu'; $string['deletedactivity'] = 'Poistettu $a'; $string['deletedcourse'] = '$a on kokonaan poistettu'; -$string['deletednot'] = 'Ei voi poistaa kohdetta $a!'; +$string['deletednot'] = 'Ei voi poistaa $a !'; $string['deleteselected'] = 'Poista valitut'; $string['deletingcourse'] = 'Poistetaan $a'; $string['deletingexistingcoursedata'] = 'Poistetaan olemassaolevan kurssin tiedot'; $string['deletingolddata'] = 'Poistetaan vanhat tiedot'; $string['department'] = 'Osasto'; $string['description'] = 'Kuvaus'; -$string['detailedless'] = 'Tiivistetty'; -$string['detailedmore'] = 'Yksityiskohtainen'; -$string['directorypaths'] = 'Hakemistopolut'; $string['disable'] = 'Poista käytöstä'; $string['displayingfirst'] = 'Vain ensimmäiset $a->count $a->things näytetään'; $string['displayingrecords'] = 'Näytetään $a tietuetta'; @@ -285,58 +297,42 @@ $string['doyouagree'] = 'Oletko lukenut k $string['duplicate'] = 'Monista'; $string['duplicatinga'] = 'Monistetaan: $a'; $string['duplicatingain'] = 'Monistetaan: $a->what ( $a->in )'; -$string['edhelpbgcolor'] = 'Määritä muokkausalueen taustan väri.
        Sallittuja arvoja ovat esim #ffffff tai white'; -$string['edhelpcleanword'] = 'Suodata Wordin tekemät muotoilut liitettäessä tekstiä.'; -$string['edhelpenablespelling'] = 'Oikoluvun käyttö editorissa. Jos asetus on päällä, pitää aspell ohjelmiston olla asennettuna palvelimelle.'; -$string['edhelpfontfamily'] = 'Kirjasinperhelista valittavissa olevista kirjasinperheistä ja yleisitä kirjasinnimistä. Nimet erotellaan toisistaan pilkuilla.'; -$string['edhelpfontlist'] = 'Määrittele valikossa käyttettvät kirjasimet.'; -$string['edhelpfontsize'] = 'Määritä kirjasimen oletus koko.
        Sallituja arvoja ovat esim: medium, large, smaller, larger, 10pt, 11px.'; $string['edit'] = 'Muokkaa $a'; $string['editcoursesettings'] = 'Muokkaa kurssin asetuksia'; $string['editfiles'] = 'Muokkaa tiedostoja'; $string['editgroupprofile'] = 'Muokkaa ryhmän profiilia'; $string['editinga'] = 'Muokataan $a'; -$string['editlock'] = 'Tätä arvoa ei voi muokata'; $string['editmyprofile'] = 'Muokkaa tietoja'; -$string['editorbgcolor'] = 'Taustaväri'; -$string['editorcleanonpaste'] = 'Puhdista Word HTML liitettäessä'; -$string['editorcommonsettings'] = 'Yleiset asetukset'; -$string['editordefaultfont'] = 'Oletuskirjasin'; -$string['editorenablespelling'] = 'Käytä oikolukua'; -$string['editorfontlist'] = 'Kirjasinlista'; -$string['editorfontsize'] = 'Oletuskirjasinkoko'; -$string['editorresettodefaults'] = 'Palauta oletukset'; -$string['editorsettings'] = 'Editorin asetukset'; $string['editsummary'] = 'Muokkaa yhteenvetoa'; $string['editthisactivity'] = 'Muokkaa tätä toimintoa'; $string['editthiscategory'] = 'Muokkaa tätä kategoriaa'; $string['edituser'] = 'Muokkaa käyttäjätietoja'; $string['email'] = 'Sähköpostiosoite'; $string['emailactive'] = 'Sähköposti aktivoitu'; -$string['emailagain'] = 'Sähköposti (varmistus)'; +$string['emailagain'] = 'Email (varmistus)'; $string['emailconfirm'] = 'Vahvista käyttäjätunnuksesi'; $string['emailconfirmation'] = 'Hei $a->firstname, -Uusi käyttäjätunnus on rekisteröity \'$a->sitename\' +Uusi käyttäjätunnus on rekistöröity \'$a->sitename\' käyttäen sinun osoitettasi. -Vahvistaaksesi käyttäjätunnuksen itsellesi mene selaimellasi osoitteeseen +Vahvistaaksesi käyttäjätunnuksen itsellesi mene selaimella osoitteeseen $a->link Useimmissa postiohjelmissa sinun tarvitsee vain klikata ylläolevaan linkkiä. -Jos tämä ei toimi, kopioi ja liitä osoite selaimen osoitekenttään. +Jos tämä ei toimi Kopioi ja liitä osoite selaimen osoitekenttään. Terveisin \'$a->sitename\' pääkäyttäjä, $a->admin'; $string['emailconfirmationsubject'] = '$a: tunnuksen vahvistaminen'; -$string['emailconfirmsent'] = '

        Vahvistusviesti on lähetetty osoitteesi $a

        +$string['emailconfirmsent'] = '

        Vahvitusviesti on lähetetty osoitteesi $a

        Se sisältää ohjeet, kuinka voit vahvistaa käyttäjätunnuksesi.

        Jos vahvistuksessa on ongelmia, ota yhteyttä ylläpitäjään.

        '; $string['emaildigest'] = 'Postin keräilytyyppi'; -$string['emaildigestcomplete'] = 'Täysi (Posti päivässä , täydet viestit)'; -$string['emaildigestoff'] = 'Ei keräilyä (Posti per viesti)'; -$string['emaildigestsubjects'] = 'Otsikot (Posti päivässä, vain otsikot)'; +$string['emaildigestcomplete'] = 'Täysi (Email päivässä , täydet viestit)'; +$string['emaildigestoff'] = 'Ei keräilyä (Email per viesti)'; +$string['emaildigestsubjects'] = 'Otsikot (Email päivässä, vain otsikot)'; $string['emaildisable'] = 'Tämä osoite ei ole käytössä.'; $string['emaildisableclick'] = 'Estä kaikki viestit tähän osoitteeseen'; $string['emaildisplay'] = 'Sähköpostiosoitteen näyttö'; @@ -348,8 +344,6 @@ $string['emailenableclick'] = 'Salli kaikki viestit t $string['emailexists'] = 'Tämä osoite on jo rekisteröity.'; $string['emailformat'] = 'Sähköpostin muotoilu'; $string['emailmustbereal'] = 'Huomaa: sinun pitää kayttää oikeata osoitetta'; -$string['emailnotallowed'] = 'Osoitteita näiltä toimialueilta ei sallita ($a)'; -$string['emailonlyallowed'] = 'Tätä osoitetta ei sallita ($a)'; $string['emailpasswordconfirmation'] = 'Hei $a->firstname, Joku (luultavasti sinä) on pyytänyt uutta salasanaa tunnukselle sivustolla \'$a->sitename\'. @@ -362,31 +356,22 @@ Jos tarvitset apua, ota yhteytt $a->admin'; $string['emailpasswordconfirmationsubject'] = '$a: salasanan vahvistus'; -$string['emailpasswordconfirmsent'] = 'Sinulle on lähetty vahvistusviesti osoitteeseen: $a. -
        Viesti sisältää ohjeet, kuinka voit vahvistaa salasanasi vaihdon. +$string['emailpasswordconfirmsent'] = 'Sinulle on lähetty vahvistusviesti osoitteeseen $a. +Viesti sisältää ohjeet, kuinka voit vahvistaa salasanasi vaihdon. Jos salasanan vaihdossa on ongelmia, ota yhteyttä sivuston ylläpitoon.'; $string['emailpasswordsent'] = 'Kiitos salasananvaihdon varmistamisesta. -Uusi salasanasi on lähetty sähköpostilla osoitteeseen: $a->email.'; +Uusi salasanasi on lähetty sähköpostilla osoitteeseen $a->email.'; $string['enable'] = 'Ota käyttöön'; -$string['encryptedcode'] = 'Salattu koodi'; $string['enrolledincourse'] = 'Kirjattu kurssille '; $string['enrolledincoursenot'] = 'Ei kirjattu kurssille '; -$string['enrollfirst'] = 'Sinun pitää rekisteröityä kurssille ennen kuin voit ottaa osaa sivuston aktiviteetteihin'; $string['enrolmentconfirmation'] = 'Olet aikeissa liittää itsesi tälle kurssille. Oletko varma, että haluat tehdä tämän?'; $string['enrolmentkey'] = 'Avain'; $string['enrolmentkeyfrom'] = 'Tämä kurssi vaatii \'avaimen\' - kertaluontoisen salasanan,
        jonka saat $a:lta. Sen avulla voi liittyä kurssille.'; $string['enrolmentkeyhint'] = 'Tarjottu \'avain\' ei kelpaa, yritä uudelleen
        (Vihje se alkaa näin: \'$a\')'; -$string['enrolmentnew'] = 'Uusi rekisteröityminen kurssille $a'; -$string['enrolmentnewuser'] = '$a->user on rekisteröitynyt kursille \"$a->course\"'; -$string['enrolmentnointernal'] = 'Rekisteröityminen ei ole tällä hetkellä sallittua'; -$string['enrolmentnotyet'] = 'Pahus, et voi päästä kursille ennen
        $a'; -$string['enrolments'] = 'Rekisteröityminen'; -$string['enrolperiod'] = 'Rekisteröitymisjakso'; $string['entercourse'] = 'Klikkaa päästäksesi kurssille'; $string['enteremailaddress'] = 'Anna sähköpostiosoitteesi, jotta uusi salasana voidaan lähettää sinulle.'; -$string['entries'] = 'Merkinnät'; $string['error'] = 'Virhe'; $string['errortoomanylogins'] = 'Valitettavasti olet yrittänyt kirjautua sisään virheellisesti liian usein. Käynnistä selaimesi uudelleen ja yritä sitten uudestaan.'; $string['errorwhenconfirming'] = 'Virheen takia sinua ei ole vielä tunnistettu. Jos tulit tänne sähköpostissa olleen linkin kautta, varmista, että linkki ei ole hajonnut osiin usealle riville. Voit ehkä korjata linkin liittämällä osat yhteen.'; @@ -400,10 +385,9 @@ $string['existingcoursedeleting'] = 'Olemassa oleva kurssi, poistetaan ensin'; $string['existingcreators'] = 'Kurssiylläpitäjät'; $string['existingstudents'] = 'Opiskelijat'; $string['existingteachers'] = 'Opettajat'; -$string['failedloginattempts'] = '$a->attempts epäonnistunutta kirjautumisyritysta viime käyntisi jälkeen.'; -$string['failedloginattemptsall'] = '$a->attempts epäonnistunutta kirjautumisyritysta $a->accounts tunnukselle.'; +$string['failedloginattempts'] = '$a->attempts epäonnistunutta kirjaantumisyritysta viime käytisi jälkeen.'; +$string['failedloginattemptsall'] = '$a->attempts epäonnistunutta kirjaantumisyritysta $a->accounts tunnukselle.'; $string['feedback'] = 'Palaute'; -$string['file'] = 'Tiedosto'; $string['filemissing'] = '$a puuttuu'; $string['files'] = 'Tiedostot'; $string['filesfolders'] = 'Tiedostot/kansiot'; @@ -418,13 +402,9 @@ $string['force'] = 'Pakota'; $string['forcedmode'] = 'pakotettu tila'; $string['forcelanguage'] = 'Pakota kielivalinta'; $string['forceno'] = 'Älä pakota'; -$string['forcepasswordchange'] = 'Pakota salasanan vaihto'; -$string['forcepasswordchangehelp'] = 'Pakota salasanan vaihto seuraavan kirjautumisen yhteydessä'; -$string['forcetheme'] = 'Pakota teema'; -$string['forgotten'] = 'Unohditko käyttäjänimesi tai salasanasi?'; -$string['format'] = 'Muoto'; +$string['forgotten'] = 'Unohditko salasanasi?'; +$string['format'] = 'Muotoilu'; $string['formathtml'] = 'HTML-muoto'; -$string['formatmarkdown'] = 'Markdown-formaatti'; $string['formatplain'] = 'Pelkkä teksti-muoto'; $string['formatsocial'] = 'Keskustelu'; $string['formattext'] = 'Automaattimuotoilu'; @@ -443,12 +423,10 @@ $string['fullname'] = 'Koko nimi'; $string['fullnamedisplay'] = '$a->firstname $a->lastname'; $string['fullprofile'] = 'Kaikki henkilötiedot'; $string['fullsitename'] = 'Koko sivuston nimi'; -$string['functiondisabled'] = 'Tämä toiminnallisuus ei ole käytössä'; $string['gd1'] = 'GD 1.x asennettuna'; $string['gd2'] = 'GD 2.x asennettuna'; $string['gdneed'] = 'GD-kirjaston pitää olla asennettuna, jotta tämä kuva näkyisi'; $string['gdnot'] = 'GD ei asennettuna'; -$string['go'] = 'Mene'; $string['gpl'] = 'Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com) (Epävirallisen suomenkielisen käännöksen lisenssistä löydät osoitteesta: http://www.turre.com/licenses/gpl_fi.php) @@ -475,8 +453,8 @@ $string['groupinfomembers'] = 'Tietoa valitusta k $string['groupinfopeople'] = 'Tietoa valituista henkilöistä'; $string['groupmemberssee'] = 'Katso ryhmän jäsenet'; $string['groupmembersselected'] = 'Valitun ryhmän jäsenet'; -$string['groupmode'] = 'Ryhmämoodi'; -$string['groupmodeforce'] = 'Pakota ryhmämoodi'; +$string['groupmode'] = 'Ryhmätila'; +$string['groupmodeforce'] = 'Pakota ryhmätila'; $string['groupmy'] = 'Ryhmäni'; $string['groupnonmembers'] = 'Ryhmättömät henkilöt'; $string['groupnotamember'] = 'Valitettavasti et ole kyseisen ryhmän jäsen'; @@ -485,14 +463,14 @@ $string['groupremove'] = 'Poista valittu ryhm $string['groupremovemembers'] = 'Poista valitut jäsenet'; $string['groups'] = 'Ryhmät'; $string['groupsnone'] = 'Ei ryhmiä'; -$string['groupsseparate'] = 'Erilliset ryhmät'; +$string['groupsseparate'] = 'Erota ryhmät'; $string['groupsvisible'] = 'Näkyvät ryhmät'; $string['guestskey'] = 'Salli vieraat, joilla on avain'; $string['guestsno'] = 'Älä salli vieraita'; -$string['guestsnotallowed'] = '\'$a\' ei salli vieraiden liittyä.'; +$string['guestsnotallowed'] = ' \'$a\' ei salli vieraiden liittyä.'; $string['guestsyes'] = 'Salli vieraat ilman avainta'; $string['guestuser'] = 'Vierailijatunnus'; -$string['guestuserinfo'] = 'Tämä tunnus sallii joidenkin kurssien \"vain luku\" -tyyppisen selailun.'; +$string['guestuserinfo'] = 'Tämä tunnus sallii joidenkin kurssien \"vain luku\"-tyyppisen selailun.'; $string['help'] = 'Ohje'; $string['helpemoticons'] = 'Käytä hymiöitä'; $string['helpformatting'] = 'Tekstin muotoilusta'; @@ -506,13 +484,11 @@ $string['helpsummaries'] = 'Yhteenvedoista'; $string['helptext'] = 'Kuinka kirjoittaa tekstiä'; $string['helpwiki'] = 'Kuinka kirjoittaa Wiki-tekstiä'; $string['helpwriting'] = 'Kirjoita huolellisesti'; -$string['hiddensections'] = 'Piilotetut osiot'; +$string['hiddensections'] = 'Piilotetut aiheet'; $string['hiddensectionscollapsed'] = 'Piilotetut osiot näytetään tiivistetyssä muodossa'; -$string['hiddensectionsinvisible'] = 'Piilotetut osiot ovat kokonaan näkymättömissä'; +$string['hiddensectionsinvisible'] = 'Piilotetut osAatovat kokonaan näkymättömissä'; $string['hide'] = 'Piilota'; -$string['hideadvancedsettings'] = 'Piilota lisäasetukset'; $string['hidepicture'] = 'Piilota kuva'; -$string['hidesettings'] = 'Piilota asetukset'; $string['hits'] = 'Sivupyynnöt'; $string['hitsoncourse'] = 'Käyttäjän $a->username sivupyynnöt kurssilla $a->coursename'; $string['hitsoncoursetoday'] = 'Sivupyynnöt tänään kurssilla $a->coursename'; @@ -527,8 +503,7 @@ $string['htmleditordisabledadmin'] = 'P $string['htmleditordisabledbrowser'] = 'Richtext HTML-Editori ei ole saatavilla, koska selaimesi ei ole IE 5.5 tai uudempi.'; $string['htmlformat'] = 'HTML-muotoilu'; $string['icqnumber'] = 'ICQ-numero'; -$string['idnumber'] = 'Tunnistenumero'; -$string['importdata'] = 'Tuo kurssit tiedot'; +$string['idnumber'] = 'ID-numero'; $string['inactive'] = 'Ei käytössä'; $string['include'] = 'Ota mukaan'; $string['includeallusers'] = '... kaikki käyttäjät'; @@ -540,12 +515,10 @@ $string['includemodules'] = '... modulit'; $string['includeneededusers'] = '... tarvittavat käyttäjät'; $string['includenoneusers'] = '... ei käyttäjiä'; $string['includeuserfiles'] = '... käyttäjien tiedostot'; -$string['info'] = 'Tiedot'; $string['institution'] = 'Instituutio'; $string['invalidemail'] = 'Virheellinen sähköpostiosoite'; $string['invalidlogin'] = 'Kirjautuminen epäonnistui , yritä uudelleen'; $string['ip_address'] = 'IP Osoite'; -$string['jump'] = 'Siirry'; $string['jumpto'] = 'Siirry...'; $string['keep'] = 'Pidä'; $string['langltr'] = 'Kirjoitussuunta vasemmalta oikealle'; @@ -554,12 +527,12 @@ $string['language'] = 'Kieli'; $string['languagegood'] = 'Tämä kielipaketti on ajantasalla! :-)'; $string['lastaccess'] = 'Viimeksi käytetty'; $string['lastedited'] = 'Viimeksi muokattu'; -$string['lastlogin'] = 'Viimeisin kirjautuminen'; +$string['lastlogin'] = 'Viimeisin kirjaantuminen'; $string['lastmodified'] = 'Viimeksi muutettu'; $string['lastname'] = 'Sukunimi'; $string['latestlanguagepack'] = 'Tarkista moodle.org-sivuilta uusin kielipaketti'; $string['latestnews'] = 'Viimeisimmät uutiset'; -$string['leavetokeep'] = 'Jätä tyhjäksi säilyttääksi nykyisen salasanasi.'; +$string['leavetokeep'] = 'Pidä tyhjänä säilyttääksi nykyisen salasanasi.'; $string['license'] = 'GPL'; $string['list'] = 'Lista'; $string['listfiles'] = 'Lista tiedostoista $a:ssa'; @@ -570,13 +543,13 @@ $string['location'] = 'Sijainti'; $string['loggedinas'] = 'Olet kirjautunut nimellä $a.'; $string['loggedinnot'] = 'Et ole kirjautunut.'; $string['login'] = 'Kirjaudu'; -$string['login_failure_logs'] = 'Kirjautumisvirhelokit'; -$string['loginas'] = 'Kirjaudu käyttäjänä'; +$string['login_failure_logs'] = 'Kirjaantumisvirhelokit'; +$string['loginas'] = 'Kirjaudu toisena'; $string['loginguest'] = 'Kirjaudu vieraana'; $string['loginsite'] = 'Kirjaudu sivustoon'; $string['loginsteps'] = 'Hei! Käytä hetki aikaa luodaksesi itsellesi käyttäjätunnus ja salasana sivustoon. Tämä mahdollistaa sivuston vapaan käytön. Jotkut kurssit saattavat myös vaatia kertakäyttöisen \"avaimen\", jonka saat myöhemmin. Luodaksesi tunnuksen itsellesi sinun pitää: -
          +
          1. Täyttää uusi tunnus lomake henkilötiedoillasi.
          2. Sähköposti lähetetään antamaasi osoitteeseen.
          3. Lue postisi ja klikkaa linkkiä viestissä
          4. @@ -585,35 +558,29 @@ $string['loginsteps'] = 'Hei! K
          5. Jos kurssi vaatii \"avaimen\", käytä sitä, jonka sait opettajaltasi.
          6. Nyt voit käyttää järjestelmää vapaasti. Vastaisuudessa kirjaudut vain antamalla käyttäjätunnuksen ja salasanan vieressä oleviin kenttiin.
          '; -$string['loginstepsnone'] = '

          Hei!

          +$string['loginstepsnone'] = 'Hei!

          Jotta voisit käyttää kursseja, sinun pitää luoda itsellesi -käyttäjätunnus. Täytät vain itsellesi käyttätunnuksen ja salasanan, sitten käytät niitä tällä sivulla. Jos käyttäjätunnus on jo varattu, sinun pitää valita toinen käyttätunnus.

          '; +käyttäjätunnus. Täytät vain itsellesi käyttätunnuksen ja salasanan, sitten käytät niitä tältä sivulta. Jos käyttäjätunnus on jo varattu, pitää sinun valita toinen käyttätunnus.

          '; $string['loginto'] = 'Kirjaudu $a'; $string['loginusing'] = 'Kirjaudu tästä käyttäen tunnusta ja salasanaasi'; $string['logout'] = 'Kirjaudu ulos'; $string['logs'] = 'Tapahtumat'; -$string['logtoomanycourses'] = '[ url\">näytä lisää ]'; -$string['logtoomanyusers'] = '[ url\">näytä lisää ]'; -$string['mailadmins'] = 'Tiedota ylläpitäjiä'; -$string['mailstudents'] = 'Tiedota käyttäjiä'; -$string['mailteachers'] = 'Tiedota opettajia'; $string['mainmenu'] = 'Päävalikko'; $string['makeafolder'] = 'Luo kansio'; -$string['makeeditable'] = 'Jos annat WWW-palvelimelle kirjoitusoikeudet kansioon \'$a\', voit muokata tätä tiedostoa suoraan tältä sivulta.'; +$string['makeeditable'] = 'Jos annat WWW-palveimelle kirjoitusoikeudet kansioon \'$a\', voit muokata tätä tiedostoa suoraan tältä sivulta.'; $string['manageblocks'] = 'Lohkot'; $string['managedatabase'] = 'Tietokanta'; $string['managefilters'] = 'Suotimet'; -$string['managemodules'] = 'Moduulit'; +$string['managemodules'] = 'Modulien valvonta'; $string['markedthistopic'] = 'Tämä aihe on merkitty aktiiviseksi'; $string['markthistopic'] = 'Merkitse tämä aihe aktiiviseksi.'; -$string['maximumchars'] = 'Korkeintaan $a merkkiä'; +$string['maximumchars'] = 'Maksimimäärä $a merkkiä'; $string['maximumgrade'] = 'Arviointimaksimi'; $string['maximumshort'] = 'Maksimi'; -$string['maximumupload'] = 'Suurin lähetyskoko'; -$string['maxsize'] = 'Suurin koko: $a'; +$string['maximumupload'] = 'Maksimi lähetyskoko'; +$string['maxsize'] = 'Maksimikoko: $a'; $string['min'] = 'min'; $string['mins'] = 'min'; -$string['minutes'] = 'minuuttia'; $string['miscellaneous'] = 'Muut'; $string['missingcategory'] = 'Sinun pitää valita kategoria'; $string['missingcity'] = 'Puuttuva kaupunki/paikkakunta'; @@ -626,7 +593,7 @@ $string['missinglastname'] = 'Puuttuva sukunimi'; $string['missingname'] = 'Puuttuva nimi'; $string['missingnewpassword'] = 'Puuttuva uusi salasana'; $string['missingpassword'] = 'Puuttuva salasana'; -$string['missingshortname'] = 'Puuttuva lyhenne'; +$string['missingshortname'] = 'Puuttuva lyhyt nimi'; $string['missingshortsitename'] = 'Puuttuva sivuston lyhyt nimi '; $string['missingsitedescription'] = 'Puuttuva sivuston kuvaus'; $string['missingsitename'] = 'Puuttuva sivuston nimi'; @@ -637,9 +604,9 @@ $string['missingteacher'] = 'Pit $string['missingurl'] = 'Puuttuva URL'; $string['missingusername'] = 'Puuttuva käyttäjänimi'; $string['modified'] = 'Muokattu'; -$string['moduledeleteconfirm'] = 'Olet aikeissa poistaa kokonan moduulin \'$a\'. Kaikki tietokannassa olevat tiedot, jotka koskevat tätä moduulia, häviävät. Oletko VARMA, että haluat jatkaa?'; -$string['moduledeletefiles'] = 'Kaikki moduulia \'$a\' koskevat tiedot on poistettu tietokannasta. Päättääksesi poiston (ja estääksesi moduulin näkyville tulon), sinun tulisi poistaa palvelimelta hakemisto: $a->directory'; -$string['modulesetup'] = 'Asetetaan taulut moduuleille'; +$string['moduledeleteconfirm'] = 'Olet aikeissa kokonaan poistaa modulin \'$a\'. Kaikki tietokannassa olevat tiedot, jotka koskevat tätä modulia, häviävät. Oletko VARMA, että haluat jatkaa. '; +$string['moduledeletefiles'] = 'Kaikki modulia \'$a\' koskevat tiedot on poistettu tietokannasta. Päättääksesi poiston (ja estääksesi modulin näkyville tulon), sinun pitäisi poistaa serveriltä hakemisto: $a->directory'; +$string['modulesetup'] = 'Asetetaan taulut moduleille'; $string['modulesuccess'] = '$a taulut asetettu'; $string['moodleversion'] = 'Moodlen versio'; $string['more'] = 'lisää'; @@ -660,7 +627,7 @@ $string['mustconfirm'] = 'Vahvista kirjautumisesi '; $string['mycourses'] = 'Omat kurssini'; $string['name'] = 'Nimi'; $string['namesocial'] = 'osio'; -$string['nametopics'] = 'aihe'; +$string['nametopics'] = 'otsikko'; $string['nameweeks'] = 'viikko'; $string['needed'] = 'Tarvittavat'; $string['never'] = 'Ei koskaan'; @@ -671,7 +638,8 @@ $string['newcourse'] = 'Uusi kurssi'; $string['newpassword'] = 'Uusi salasana'; $string['newpasswordtext'] = 'Hei $a->firstname, -Salasanasi sivustolla \'$a->sitename\' on vaihdettu ja sinulle on annettu uusi tilapäinen salasana +Salasanasi sivustolla \'$a->sitename\' on vaihdettu ja sinulle +on annettu uusi tilapäinen salasana Uudet tunnuksesi ja salasanasi ovat seuraavat : tunnus: $a->username @@ -710,11 +678,9 @@ $string['nopotentialadmins'] = 'Ei mahdollisia yll $string['nopotentialcreators'] = 'Ei mahdollisia kurssiylläpitäjiä'; $string['nopotentialstudents'] = 'Ei mahdollisia opiskelijoita'; $string['nopotentialteachers'] = 'Ei mahdollisia opettajia'; -$string['noresults'] = 'Ei tuloksia'; $string['normal'] = 'Normaali'; -$string['normalfilter'] = 'Normaali haku'; -$string['nostudentsfound'] = 'Ei ketään'; -$string['nostudentsingroup'] = 'Tässä ryhmässä ei ole vielä opiskelijoita'; +$string['normalfilter'] = 'Normaali suodin'; +$string['nostudentsfound'] = 'Ei $a löydetty'; $string['nostudentsyet'] = 'Kurssilla ei ole vielä opiskelijoita'; $string['nosuchemail'] = 'Sähköpostiosoitetta ei löydy'; $string['notavailable'] = 'Ei saatavilla'; @@ -722,57 +688,45 @@ $string['noteachersyet'] = 'Kurssilla ei ole viel $string['notenrolled'] = '$a ei ole tällä kursilla.'; $string['noteuserschangednonetocourse'] = 'Huom: Kurssin käyttäjät tulee palauttaa kun käyttäjätietoja palautetaan. Tämä asetus on muutettu sinun kohdaltasi.'; $string['nothingnew'] = 'Ei uutisia edellisen käyntisi jälkeen'; -$string['noticenewerbackup'] = 'Tämä varmuuskopio on luoto Moodlen versiolla $a->backuprelease ($a->backupversion) ja se on uudempi kuin käyttämällesi palvelimelle asennttu versio $a->serverrelease ($a->serverversion). Tämä saattaa aiheuttaa palauttaessa joitain yhteensopivuusongelmia, koska varmuukopioiden alaspäin yhteensopivuutta ei voida taata.'; -$string['notifyloginfailuresmessage'] = '$a->time, IP: $a->ip, Käyttäjä: $a->info'; -$string['notifyloginfailuresmessageend'] = 'Voit katsella näitä tapahtumia osoitteessa $a/course/log.php?id=1&chooselog=1&modid=site_errors. '; -$string['notifyloginfailuresmessagestart'] = 'Tässä on lista epäonnistuneista kirjautumisyrityksitä edellisen ilmoituksen jälkeen'; -$string['notifyloginfailuressubject'] = '$ :: Epäonnistuneiden kirjautumisyritysten ilmoitus'; +$string['notifyloginfailuresmessagefromip'] = 'IP osoitteesta'; +$string['notifyloginfailuresmessagewithuser'] = 'tunnuksella'; $string['notincluded'] = 'Ei mukana'; $string['notingroup'] = 'Sinun pitää olla ryhmän jäsen nähdäksesi tämän aktiviteetin.'; $string['nousersmatching'] = 'Haku \'$a\' ei löytänyt käyttäjiä'; $string['nousersyet'] = 'Ei vielä käyttäjiä'; $string['now'] = 'nyt'; -$string['numattempts'] = '$a epäonnistunutta kirjautumisyritystä'; +$string['numattempts'] = '$a epäonnistunutta kirjaantumisyritystä'; $string['numberweeks'] = 'Viikkojen/aiheiden määrä'; $string['numdays'] = '$a päivää'; $string['numhours'] = '$a tuntia'; $string['numminutes'] = '$a minuuttia'; -$string['numseconds'] = '$a sekuntia'; -$string['numviews'] = 'katsottu $a kertaa'; +$string['numseconds'] = '$a sekunttia'; +$string['numviews'] = '$a näkymiä'; $string['numweeks'] = '$a viikkoa'; -$string['numwords'] = '$a sanaa'; +$string['numwords'] = '$a sanoja'; $string['numyears'] = '$a vuotta'; $string['ok'] = 'OK'; $string['opentoguests'] = 'Avoin vieraille'; $string['optional'] = 'vapaaehtoinen'; -$string['order'] = 'Järjestys'; +$string['order'] = 'Tilaa'; $string['other'] = 'Toinen'; $string['outline'] = 'Rakenne'; $string['page'] = 'Sivu'; -$string['parentcoursenotfound'] = 'Isäntäkurssia ei löytynyt!'; -$string['parentcoursenotmetacourse'] = 'Isäntäkurssia ei ole metakurssi!'; -$string['parentfolder'] = 'Yläkansio'; $string['participants'] = 'Osallistujat'; $string['password'] = 'Salasana'; $string['passwordchanged'] = 'Salasana on vaihdettu'; $string['passwordconfirmchange'] = 'Vahvista salasanan vaihto'; -$string['passwordrecovery'] = 'Kyllä, auta minua kirjautumisessa'; +$string['passwordrecovery'] = 'Kyllä, auta minua kirjaantumisessa'; $string['passwordsdiffer'] = 'Salasanat eivät täsmää'; $string['passwordsent'] = 'Salasana on lähetetty'; -$string['passwordsenttext'] = '

          Viesti on lähetetty osoitteeseen: $a->email.

          +$string['passwordsenttext'] = '

          Viesti on lähetetty osoitteeseen $a->email.

          Tarkista viestistä uusi salasanasi

          -

          uusi salasana on automaattisesti generoitu, joten haluat luultavasti +

          uusi salasana on automaattisesti generoitu, joten haluat varmaan link>vaihtaa sen sen joksikin helpommin muistettavaksi.

          '; -$string['pathnotexists'] = 'Polkua ei löydy palvelimelta'; -$string['pathslasherror'] = 'Polku ei voi päätyä kauttaviivaan \"/\"!'; -$string['paymentinstant'] = 'Klikaa painiketta maksaaksesi kurssista ja rekisteröityäksesi kurssille.'; -$string['paymentrequired'] = 'Tämä kurssi vaatii osallistumismaksun.'; -$string['paymentsorry'] = 'Kiitokset maksusta! Maksuasi ei ole vielä rekisteröity järjestelmään ja sinua ei ole vielä rekisteröity kurssille \"$a->fullname\". Yritä uudelleen hetken kuluttua, mutta jos ongelma jatkuu ilmoita siitä $a->teacher tai sivuston ylläpitäjälle.'; -$string['paymentthanks'] = 'Kiitokset maksusta! Sinut rekisteröity kurssille:
          \"$a\"'; $string['people'] = 'Henkilöt'; $string['personalprofile'] = 'Omat henkilötiedot'; $string['phone'] = 'Puhelin'; -$string['phpinfo'] = 'PHP-info'; +$string['phpinfo'] = 'PHP info'; $string['popupwindow'] = 'Avaa tiedosto uudessa ikkunassa'; $string['potentialadmins'] = 'Mahdolliset ylläpitäjät'; $string['potentialcreators'] = 'Mahdolliset kurssiylläpitäjät'; @@ -796,9 +750,9 @@ $string['refreshingevents'] = 'P $string['registration'] = 'Rekisteröi Moodle'; $string['registrationemail'] = 'Tietoa sähköpostitse'; $string['registrationinfo'] = '

          Tällä sivulla voi ilmaiseksi rekisteröidä Moodlen moodle.org sivulle. Rekisteröity käyttäjä lisätään postituslistaan tärkeitä tiedotuksia varten. Aiheena voi olla esim. tietoturva-aukon löytyminen ja uusista versioista tiedottaminen.

          -

          Oletuksena tietojasi ei anneta muiden käyttöön, eikä niitä myydä eteenpäin. Näitä tietoja kerätään vain tukea varten ja jotta saadaan tilastollista tietoa Moodlen käyttäjistä kokonaisuutena.

          +

          Oletuksena tietojasi ei anneta muiden käyttöön, eikä niitä myydä eteen päin. Näitä tietoja kerätään vain tukea varten ja jotta saadaan tilastollista tietoa Moodlen käyttäjistä kokonaisuutena.

          Voit halutessasi antaa sivustosi nimen, maan ja http-osoitteen muiden nähtäväksi.

          -

          Kaikki uudet rekisteröinnit tarkistetaan käsin, ennen kuin ne lisätään listaan, mutta tietoja voi päivittää ja tietosi voidaan halutessasi milloin tahansa ottaa pois kaikkien nähtävillä olevasta listasta.

          '; +

          Kaikki uudet rekisteröinnit tarkistetaan manuaalisesti, ennen kuin ne lisätään listaan, mutta tietoja voi päivittää ja tietosi voidaan halutessasi milloin tahansa ottaa pois kaikkien nähtävillä olevasta listasta.

          '; $string['registrationno'] = 'En halua vastaanottaa sähköpostia'; $string['registrationsend'] = 'Lähetä rekisteröintitiedot sivulle moodle.org'; $string['registrationyes'] = 'Kyllä, tiedottakaa tärkeistä asioista'; @@ -810,7 +764,6 @@ $string['rename'] = 'Nime $string['renamefileto'] = 'Nimeä tiedosto $a tiedostoksi'; $string['required'] = 'Vaadittu'; $string['requireskey'] = 'Tämä kurssi vaatii avaimen'; -$string['requirespayment'] = 'Tämä kurssi vaatii osallistumismaksun'; $string['resortcoursesbyname'] = 'Järjestä kurssit uudelleen nimen mukaan'; $string['resources'] = 'Resurssit'; $string['restore'] = 'Palauta'; @@ -821,13 +774,11 @@ $string['restoreto'] = 'Palauta kohtaan'; $string['returningtosite'] = 'Jos sinulla on jo tunnus:'; $string['revert'] = 'Peruuta'; $string['role'] = 'Rooli'; -$string['rss'] = 'RSS'; -$string['rssarticles'] = 'Viimeisimpien RSS-artikkelien määrä'; -$string['rsserror'] = 'Virhe RSS-tietoja luettaessa'; -$string['rsstype'] = 'RSS-syöte tästä aktiviteetista'; +$string['rssarticles'] = 'Viimeisinpien RSS artikkelien määrä'; +$string['rsstype'] = 'RSS syöte tastä aktiviteetista'; $string['savechanges'] = 'Tallenna muutokset'; $string['saveto'] = 'Tallenna'; -$string['scale'] = 'Asteikko'; +$string['scale'] = 'Asteiko'; $string['scales'] = 'Asteikot'; $string['scalescustom'] = 'Omat asteikot'; $string['scalescustomcreate'] = 'Lisää uusi asteikko'; @@ -836,11 +787,10 @@ $string['scalesstandard'] = 'Standardiasteikko'; $string['scalestip'] = 'Luodaksesi omia asteikkoja, käytä \'Asteikot...\' linkkiä kurssin ylläpitövalikossa.'; $string['schedule'] = 'Ajoita'; $string['scheduledbackupstatus'] = 'Ajoitetun varmuuskopioinnin tila'; -$string['screenshot'] = 'Näyttökuva'; $string['search'] = 'Hae'; $string['searchagain'] = 'Hae uudelleen'; $string['searchcourses'] = 'Etsi kursseja'; -$string['searchhelp'] = 'Voit hakea useampaa sanaa kerrallaan.

          sana : etsi mikä tahansa täsmäävä sana.
          +sana : kaikkien sanojen tulee löytyä.
          -sana : jätä pois kyseisen sanan sisältävät.'; +$string['searchhelp'] = 'Voit hakea useampaa sanaa kerrallaan.

          sana : etsi mikä tahansa täsmäävä sana.
          +sana : kaikkien sanojen tulee löytyä.
          -sana : jätä pois kyseisen sanan sisältävät.

          '; $string['searchresults'] = 'Hakutulokset'; $string['sec'] = 'sekunti'; $string['secs'] = 'sekuntia'; @@ -853,11 +803,10 @@ $string['senddetails'] = 'L $string['separateandconnected'] = 'Eristyvä ja sosiaalinen oppiminen'; $string['serverlocaltime'] = 'Palvelimen aika'; $string['settings'] = 'Asetukset'; -$string['shortname'] = 'Lyhenne'; +$string['shortname'] = 'Lyhyt nimi'; $string['shortnametaken'] = 'Annettu kurssin lyhyt nimi on jo käytössä toisella kursilla.'; -$string['shortsitename'] = 'Lyhyt nimi sivustolle (esim. yksi sana)'; +$string['shortsitename'] = 'Lyhyt nimi sivustolle (yksi sana)'; $string['show'] = 'Näytä'; -$string['showadvancedsettings'] = 'Näytä lisäasetukset'; $string['showall'] = 'Näytä kaikki $a'; $string['showallcourses'] = 'Näytä kaikki kurssit'; $string['showalltopics'] = 'Näytä kaikki aiheet'; @@ -868,23 +817,17 @@ $string['showlistofcourses'] = 'N $string['showonlytopic'] = 'Näytä vain aihe $a'; $string['showonlyweek'] = 'Näytä vain viikko $a'; $string['showrecent'] = 'Näytä viimeiset tapahtumat'; -$string['showreports'] = 'Näytä tapahtumaraportti'; -$string['showsettings'] = 'Näytä asetukset'; +$string['showreports'] = 'Näytä tapahtuma raportti'; $string['showtheselogs'] = 'Näytä nämä tapahtumat'; $string['since'] = 'Alkaen'; -$string['sincelast'] = 'viime kirjautumisen jälkeen'; +$string['sincelast'] = 'viime kirjaantumisen jälkeen'; $string['site'] = 'Sivusto'; -$string['sitedefault'] = 'Sivuston oletus'; $string['siteerrors'] = 'Sivuston virheet'; $string['sitefiles'] = 'Sivuston tiedostot'; $string['sitelogs'] = 'Sivuston tapahtumat'; $string['sitenews'] = 'Sivuston uutiset'; -$string['sitepartlist0'] = 'Vain sivuston opettajat voivat nähdä osallistujalistan.'; -$string['sitepartlist1'] = 'Vain opettajat voivat nähdä osallistujalistan.'; $string['sites'] = 'Sivustot'; -$string['sitesection'] = 'Lisää aihealue'; $string['sitesettings'] = 'Sivuston asetukset'; -$string['siteteachers'] = 'Sivuston opettajat'; $string['size'] = 'Koko'; $string['sizeb'] = 'tavua'; $string['sizegb'] = 'Gt'; @@ -894,7 +837,6 @@ $string['socialheadline'] = 'Keskustelu - viimeisimm $string['someallowguest'] = 'Jotkut kurssit saattavat sallia vierastunnukset.'; $string['someerrorswerefound'] = 'Joitain tietoja puuttui tai ne olivat vääränlaisia. Katso tarkemmat tiedot alta.'; $string['sortby'] = 'Lajittele'; -$string['specifyname'] = 'Määrittele nimi'; $string['startdate'] = 'Kurssin aloituspäivämäärä'; $string['startsignup'] = 'Aloita nyt luomalla uusi käyttäjätunnus!'; $string['state'] = 'Maakunta'; @@ -905,7 +847,6 @@ $string['strftimedatetime'] = '%%d %%B %%Y, %%H:%%M'; $string['strftimedaydate'] = '%%A, %%d %%B %%Y'; $string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%H:%%M'; $string['strftimedayshort'] = '%%A, %%d %%B'; -$string['strftimedaytime'] = '%%a, %%H:%%M'; $string['strftimemonthyear'] = '%%B %%Y'; $string['strftimerecent'] = '%%d %%b, %%H:%%M'; $string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%H:%%M'; @@ -913,7 +854,6 @@ $string['strftimetime'] = '%%H:%%M'; $string['stringsnotset'] = 'Seuraavat merkkijonot eivät ole määriteltynä tiedostossa $a'; $string['studentnotallowed'] = 'Valitettavasti et voi liittyä kurssille tunnuksella \'$a\''; $string['students'] = 'Opiskelijat'; -$string['studentsandteachers'] = 'Opiskelijat ja opettajat'; $string['subcategories'] = 'Alakategoriat'; $string['success'] = 'Valmis!'; $string['summary'] = 'Yhteenveto'; @@ -944,7 +884,6 @@ $string['topichide'] = 'Piilota t $string['topicoutline'] = 'Aiheen kuvaus'; $string['topicshow'] = 'Näytä tämä aihe'; $string['total'] = 'Yhteensä'; -$string['trysearching'] = 'Kokeile hakutoimintoa.'; $string['turneditingoff'] = 'Muokkaustila pois'; $string['turneditingon'] = 'Muokkaustila päälle'; $string['undecided'] = 'Valitsematon'; @@ -953,9 +892,7 @@ $string['unenrolallstudents'] = 'Poista kaikki opiskelijat'; $string['unenrolallstudentssure'] = 'Oletko varma että haluat poistaa kaikki opiskelijat tältä kurssilta?'; $string['unenrolme'] = 'Poista minut kurssilta $a'; $string['unenrolsure'] = 'Oletko varma, että haluat poistaa käyttäjän $a tältä kurssilta?'; -$string['unfinished'] = 'Kesken'; $string['unknowncategory'] = 'Tuntematon kategoria'; -$string['unlimited'] = 'Rajoittamaton'; $string['unpacking'] = 'Puretaan $a'; $string['unsafepassword'] = 'Liian helposti arvattava tai muuten huono salasana. Kokeile jotain muuta'; $string['unusedaccounts'] = 'Käyttäjätunnukset, jotka ovat olleet käyttämättä yli $a päivää, poistetaan automaattisesti.'; @@ -969,34 +906,22 @@ $string['updatesevery'] = 'P $string['updatethis'] = 'Päivitä tämä $a'; $string['updatethiscourse'] = 'Päivitä tämä kurssi'; $string['updatinga'] = 'Päivitetään $a'; -$string['updatingain'] = 'Päivitetään $a->what (kohdassa $a->in)'; +$string['updatingain'] = 'Päivitetään $a->what ( $a->in )'; $string['upload'] = 'Lähetä'; $string['uploadafile'] = 'Hae tiedosto'; -$string['uploadedfile'] = 'Tiedoston lähetys onnistui'; $string['uploadedfileto'] = 'Tiedosto $a->file lähetty hakemistoon $a->directory'; -$string['uploadedfiletoobig'] = 'Anteeksi, mutta tiedosto on liian suuri ( raja on $a tavua)'; -$string['uploadfailednotrecovering'] = 'Tiedoston lähettäminen ei onnistunut koska tiedostossa \"$a->name\" oli ongelmia.
          Havaitut ongelmat olivat:
          $a->problem
          '; -$string['uploadfilelog'] = 'Tiedoston $a lähetys tapahtumat'; -$string['uploadformlimit'] = 'Lähetetyn tiedoston koko ylitti lomakkeen asettamat rajat'; -$string['uploadlabel'] = 'Otsikko:'; $string['uploadnofilefound'] = 'Tiedostoa ei löytynyt, valitsitko varmasti lähetettävän tiedoston?'; $string['uploadnotallowed'] = 'Tiedostojen latausta sivustolle ei sallita.'; -$string['uploadoldfilesdeleted'] = 'Vanhat tiedostot on poistettu tiedostoalueelta.'; -$string['uploadpartialfile'] = 'Tiedoston lähetys onnistui vain osittain'; $string['uploadproblem'] = 'Tuntematon virhe tallennettaessa tiedostoa \'$a\'. (Ehkä se oli liian suuri?)'; -$string['uploadrenamedchars'] = 'Tiedosto nimettin uudelleen \"$a->oldname\" > \"$a->newname\" nimessä olleiden kiellettyjen merkkien vuoksi.'; -$string['uploadrenamedcollision'] = 'Tiedosto nimettin uudelleen \"$a->oldname\" > \"$a->newname\" koska nimi oli ristiriidassa aikeisempien tiedostojan kanssa'; -$string['uploadserverlimit'] = 'Lähetyksen koko oli suurempi kuin www-palvelimelle asetettu maksimikoko.'; $string['uploadthisfile'] = 'Lähetä tämä tiedosto'; $string['uploadusers'] = 'Lähetä käyttäjät'; -$string['usedinnplaces'] = 'Käytössä $a paikassa'; +$string['usedinnplaces'] = 'KÄytössä $a paikassa'; $string['user'] = 'Käyttäjä'; $string['userconfirmed'] = 'Vahvistettu $a'; $string['userdata'] = 'Käyttäjän tiedot'; $string['userdeleted'] = 'Tämä tunnus on poistettu'; $string['userdescription'] = 'Kuvaus'; $string['userfiles'] = 'Käyttäjän tiedostot'; -$string['userlist'] = 'Käyttäjälista'; $string['username'] = 'Käyttäjätunnus'; $string['usernameexists'] = 'Tämä käyttäjätunnus on jo käytössä, valitse joku muu.'; $string['usernotconfirmed'] = 'a$ ei voida vahvistaa'; @@ -1004,45 +929,27 @@ $string['userprofilefor'] = 'K $string['users'] = 'Käyttäjät'; $string['usersnew'] = 'Uudet käyttäjät'; $string['userzones'] = 'Käyttäjien alueet'; -$string['usethiscourse'] = 'Käytä tätä kurssia'; $string['usingexistingcourse'] = 'Käytä olemassaolevaa kurssia'; $string['version'] = 'Versio'; $string['view'] = 'Näkymä'; -$string['virusfound'] = 'Ylläpitäjä huomio! Clam AV löysi viruksen käyttäjän $a->user kurssille $a->course lähettämästä tiedostosta. Tässä on Clam AV:n tiedot tapahtuneesta:'; -$string['virusfoundlater'] = 'Kurssille $a->course $a->date lähettämästäsi tiedostosta $a->filename on löytynyt virus. Tiedostollesi on tapahtunut seuraavaa: - -$a->action - -Jos tämä on tehtävän palautus, uudelleenlähetys saattaa olla tarpeen jotta arviointi voidaan suorittaa.'; -$string['virusfoundlateradmin'] = 'Ylläpitäjä huomio! Kurssille $a->user kurssille $a->course $a->date lähettämästä tiedostosta $a->filename on löytynyt virus. Tiedostolle on tapahtunut seuraavaa: - -$a->action - -Käyttäjälle on ilmoitettu tapahtuneesta.'; -$string['virusfoundlateradminnolog'] = 'Ylläpitäjä huomio! Lähetetystä tiedostosta $a->filename on löytynyt virus. Moodle ei voinut selvittää tiedoston lähettäjää. - -Tiedostolle on tapahtunut seuraavaa: - -$a->action'; -$string['virusfoundsubject'] = '$a : Viruksen saastuttama!'; -$string['virusfounduser'] = 'Tiedosto $a, jonka lähetit, on viruksen saastuttama. Tiedoston lähetys ei onnistunut.'; -$string['virusplaceholder'] = 'Lähetetty tiedoto oli viruksen saastuttama ja tiedosto on eristetty tai tuhottu. Käyttäjälle on ilmoitettu asiasta.'; -$string['visibletostudents'] = 'Myös $a näkevät tämän'; -$string['webpage'] = 'Web-sivu'; +$string['webpage'] = 'WWW-sivu'; $string['week'] = 'Viikko'; $string['weekhide'] = 'Piilota tämä viikko'; $string['weeklyoutline'] = 'Viikkonäkymä'; $string['weekshow'] = 'Näytä tämä viikko'; -$string['welcometocourse'] = 'Tervetuloa kurssille $a'; -$string['welcometocoursetext'] = 'Tervetuloa kurssille $a->coursename! +$string['welcometocourse'] = 'Tervetuloa $a'; +$string['welcometocoursetext'] = 'Tervetuloa $a->coursename! +Welcome to $a->coursename! +One of the first things you should do is edit your profile page +within the course so that we can learn more about you: Ensimmäiseksi sinun kannattaa muokata profiiliasi jotta muut voivat tutustua sinuun: $a->profileurl'; $string['whattocallzip'] = 'Miksi haluat kutsuttavan zip-tiedostoa?'; $string['withchosenfiles'] = 'Valituilla tiedostoilla'; $string['withoutuserdata'] = 'ilman käyttäjien tiedostoja'; -$string['withuserdata'] = 'käyttäjien tiedostojen kanssa'; +$string['withuserdata'] = 'käyttäjien tiedostoiden kanssa'; $string['wordforstudent'] = 'Sana opiskelijalle'; $string['wordforstudenteg'] = 'esim. opiskelija, osallistuja jne...'; $string['wordforstudents'] = 'Sana opiskelijoille'; @@ -1058,7 +965,6 @@ $string['writinggeneralinfo'] = 'Kirjoitetaan yleistietoja'; $string['writinggroupsinfo'] = 'Kirjoitetaan ryhmien tietoja'; $string['writingheader'] = 'Kirjoitetaan otsikkoa'; $string['writingloginfo'] = 'Kirjoitetaan lokitietoja'; -$string['writingmessagesinfo'] = 'Kirjoitetaan viestien tietoja'; $string['writingmoduleinfo'] = 'Kirjoitetaan modulitietoja'; $string['writingscalesinfo'] = 'Kirjoitetaan asteikkotietoja'; $string['writinguserinfo'] = 'Kirjoitetaan käyttäjätietoja'; @@ -1066,9 +972,9 @@ $string['wrongpassword'] = 'V $string['yes'] = 'Kyllä'; $string['youareabouttocreatezip'] = 'Olet aikeissa luoda zip tiedoston, joka sisältää'; $string['youaregoingtorestorefrom'] = 'Olet aikeissa aloittaa palautusprosessin kurssille'; -$string['yourlastlogin'] = 'Viimeisin kirjautumisesi oli:'; -$string['yourself'] = 'sinä itse'; -$string['yourteacher'] = '{$a}si'; +$string['yourlastlogin'] = 'Olet viimeksi kirjautunut:'; +$string['yourself'] = 'itse'; +$string['yourteacher'] = 'sinun $a'; $string['zippingbackup'] = 'Pakataan varmuskopiota'; ?> diff --git a/lang/fi/multilang.php b/lang/fi/multilang.php index 0d46a9567cf..6260fae966e 100644 --- a/lang/fi/multilang.php +++ b/lang/fi/multilang.php @@ -1,10 +1,7 @@ - + diff --git a/lang/fi/pgassignment.php b/lang/fi/pgassignment.php index e6e5c1df940..cbf98e18681 100755 --- a/lang/fi/pgassignment.php +++ b/lang/fi/pgassignment.php @@ -87,7 +87,7 @@ $string['nosubmissionstograde'] = "T $string['nosubmissionstoremove'] = "Ei palautuksia poistettavaksi"; $string['notavailable'] = "Tätä tehtävää valmistellaan, se ei ole vielä saatavilla."; $string['notenoughmarked'] = "Valittuja tehväviä ei ole riittävästi jotta jaetut työt pitäisivät sisällään vähintään yhden huonon ja yhden hyvän tehtävän."; -$string['noteonassessmentelements'] = "huomaa että vertaisarvioisun tehvän arvioiti on jaettu useisiin 'Arviointi elementteihin'.
          +$string['noteonassessmentelements'] = "huomaa että vertaisarvioisun tehvän arvioiti on jaettu useisiin 'Arviointi elementteihin'.
          Tämä tekee arvioinnista helmpompaa ja yhdenmukaisempaa. Opettaja sinun pitää lisätä nämä 'Arviointi Elementit' ennen tehtävän antamista opiskejoille. Tämä tehdään klikaamalla lisättyä vertaiarvioitua tehtäväää ja valitsemalla ensimmäinen vaihtoehto "Vartaisarvioidun tehtävän hallinta" valikosta."; $string['notgraded'] = "Ei arviointia, vain muiden opiskelijoiden palaute"; @@ -159,7 +159,7 @@ $string['thegradeis'] = "Arviointi on"; $string['therearegradedpeersubmissions'] = "\$a arvioitua työtä jaettu opiskelijoille"; $string['therearepeersubmissions'] = "\$a työtä jaettu opiskelijoille"; $string['typeofscale'] = "Asteikon tyyppi"; -$string['warningonamendingelements'] = "VAROITUS: Järjestelmässä on jo suoritettu arviointeja.
          ÄLÄ muuta elementtien lukumäärää, arvointi tapaa tai elementtien painotuksia."; +$string['warningonamendingelements'] = "VAROITUS: Järjestelmässä on jo suoritettu arviointeja.
          ÄLÄ muuta elementtien lukumäärää, arvointi tapaa tai elementtien painotuksia."; $string['weightingofgrading'] = "Arviointi tehokkuuden painotus"; $string['weightingofpeer'] = "Vertaisarvioinnin painotus"; $string['weightingofteacher'] = "Opettajan arvioinnin painotus"; diff --git a/lang/fi/pix.php b/lang/fi/pix.php index 0bed80c5de5..18dc21eb107 100644 --- a/lang/fi/pix.php +++ b/lang/fi/pix.php @@ -1,29 +1,26 @@ - + diff --git a/lang/fi/quiz.php b/lang/fi/quiz.php index 473d7cfe946..8a5dfb05589 100644 --- a/lang/fi/quiz.php +++ b/lang/fi/quiz.php @@ -1,5 +1,5 @@ name\' sisältää \'$a->count\' kysymystä. Ole hyvä ja valitse joku toinen kategoria, johon siirrät ne.'; $string['categorymoveto'] = 'Siirrä valitut tähän kategoriaan.'; -$string['checkanswer'] = 'Tarkista'; $string['choice'] = 'Valitse'; $string['choices'] = 'Vaihtoehdot'; -$string['choosedatasetproperties'] = 'Valitse tietojen ominaisuudet'; -$string['close'] = 'Sulje esikatselu'; -$string['confirmstartattempt'] = 'Tentissä on aikaraja. Oletko varma että haluat aloittaa?'; +$string['confirmstartattempt'] = 'Tentissä on aikaraja oletko varma että haluat aloittaa?'; $string['correctanswer'] = 'Oikea vastaus'; -$string['correctanswerformula'] = 'Oikea ratkaisukaava'; -$string['correctanswerlength'] = 'Merkitsevät arvot'; $string['correctanswers'] = 'Oikeat vastaukset'; -$string['correctanswershows'] = 'Näytä oikea vastaus'; $string['corrresp'] = 'Oikea vastaus'; $string['countdown'] = 'Laskenta'; $string['countdownfinished'] = 'Tentti sulkeutuu, lähetä vastauksesi heti.'; @@ -61,11 +52,7 @@ $string['coursetestmanager'] = 'Course Test Manager-muotoilu'; $string['createmultiple'] = 'Luo useita kysymyksiä'; $string['createnewquestion'] = 'Luo uusi kysymys'; $string['custom'] = 'Mukautettu muoto'; -$string['datasetdefinitions'] = 'Uudelleenkäytettävät tietojen määritykset kategoriassa $a'; -$string['datasetnumber'] = 'Numero'; $string['daysavailable'] = 'Päivää esillä'; -$string['decimalformat'] = 'desimaaleja'; -$string['decimals'] = '$a :n kanssa'; $string['default'] = 'Oletus'; $string['defaultgrade'] = 'Oletusarviointi kysymyksille'; $string['defaultinfo'] = 'Oletuskategoria kysymyksille.'; @@ -73,12 +60,10 @@ $string['deleteattemptcheck'] = 'Oletko aivan varma, ett $string['deletequestioncheck'] = 'Oletko varma, että haluat poistaa \'$a\'?'; $string['description'] = 'Kuvaus'; $string['discrimination'] = 'Discrim. Hakemisto'; -$string['eachattemptbuildsonthelast'] = 'Jokainen uusi yritys on jatkoa edelliselle'; +$string['eachattemptbuildsonthelast'] = 'Jokainen uusi yritys on jatkoa viimeiselle'; $string['editcategories'] = 'Muokkaa kategorioita'; -$string['editdatasets'] = 'Muokkaa tietoja'; -$string['editingcalculated'] = 'Laskutehtävän muokkaaminen'; $string['editingdescription'] = 'Muokataan kuvausta'; -$string['editingmatch'] = 'Muokataan yhdistelytehtävää'; +$string['editingmatch'] = 'Muokataan yhteensopivat kysymykset'; $string['editingmultianswer'] = 'Aukkotehtävien editointi'; $string['editingmultichoice'] = 'Muokataan monivalintaa'; $string['editingnumerical'] = 'Muokataan numeerista kysymystä'; @@ -90,56 +75,34 @@ $string['editingshortanswer'] = 'Muokataan lyhytteht $string['editingtruefalse'] = 'Muokataan tosi/epätosi-tehtävää'; $string['editquestions'] = 'Muokkaa kysymyksiä'; $string['errorsdetected'] = '$a virhe(ttä) huomattu'; -$string['existingcategory1'] = 'Vakiomerkintä jo olemassa olevasta vakiomerkintä sarjasta, jota käyttää myös muut tämän luokan kysymykset.'; -$string['existingcategory2'] = 'Tiedosto jo olemassa olevasta tiedosto sarjasta, jota käyttää myös muut tämän luokan kysymykset.'; -$string['existingcategory3'] = 'Linkki jo olemassa olevasta linkki sarjasta, jota käyttää myös muut tämän luokan kysymykset.'; $string['exportfilename'] = 'tentti'; $string['exportname'] = 'Tiedostonimi'; -$string['exportnameformat'] = '%%Y%%m%%d-%%H%%M'; $string['exportquestions'] = 'Vie kysymykset tiedostoon'; $string['false'] = 'Epätosi'; $string['feedback'] = 'Palaute'; -$string['file'] = 'Tiedosto'; $string['fileformat'] = 'Tiedostomuoto'; $string['filloutoneanswer'] = 'Sinun pitää täyttää vähintään yksi vastaus. Tyhjiä vastuksia ei käytetä.'; $string['filloutthreequestions'] = 'Sinun pitää täyttää vähintään kolme kysymystä. Tyhjiä kysymyksiä ei käytetä.'; $string['fillouttwochoices'] = 'Sinun pitää valita vähintään kaksi vaihtoehtoa. Tyhjiä vaihtoehtoja ei käytetä.'; -$string['forceregeneration'] = 'pakoita uudeleenluoti'; $string['fractionsaddwrong'] = 'Valitsemasi arviointiasteikko ei ole
          100%% asti, vaan $a%%.
          Haluatko palata ja korjata tämän kysymyksen?'; $string['fractionsnomax'] = 'Yhden vastauksista pitäisi olla %%100, jotta
          käyttäjän on mahdollista saada täysi
          arviointi tästä kysymyksestä.
          Haluatko palata ja korjata tämän kysymyksen?'; -$string['functiontakesatleasttwo'] = 'Funktiolla $a pitää ola vähintään kaksi argumenttia'; -$string['functiontakesnoargs'] = 'Funktio $a ei ota vastaan argumentteja'; -$string['functiontakesonearg'] = 'Funktio $a vaatii yhden argumentin'; -$string['functiontakesoneortwoargs'] = 'Funktio $a vaatii yhden tai kaksi argumanttia'; -$string['functiontakestwoargs'] = 'Funktio $a vaatii kaksi argumanttia'; -$string['generatevalue'] = 'Luo uusi arvo väliltä'; -$string['geometric'] = 'Maantieteellinen'; $string['gift'] = 'GIFT-muotoilu'; $string['gradeaverage'] = 'Keskimääräinen arviointi'; $string['gradehighest'] = 'Ylin arviointi'; $string['grademethod'] = 'Arviointitapa'; $string['guestsno'] = 'Valitettavasti vieraat eivät voi katsella tai täyttää tenttejä.'; -$string['illegalformulasyntax'] = 'Epäkelpo lausekkee muoto alkaen \'$a\''; $string['imagedisplay'] = 'Näytettävä kuva'; $string['imagemissing'] = 'Kuva ei ole saatavilla rivillä $a. Tiedostonimeä ei huomioida.'; $string['importquestions'] = 'Tuo kysymykset tiedostosta'; $string['indivresp'] = 'Yksittäiset vastaukset jokaiselle kohteelle'; $string['introduction'] = 'Johdanto'; $string['itemanal'] = 'Kysymyskohtainen vastausten tilastointi'; -$string['itemdefinition'] = 'Määrittely'; -$string['keptcategory1'] = 'Vakiomerkintä samasta luokasta uudelleen käytettävien vakiomerkintöjen sarjaa kuin aiemminkin'; -$string['keptcategory2'] = 'Tiedosto samasta luokasta uudelleen käytettävien tiedostojen sarjaa kuin aiemminkin'; -$string['keptcategory3'] = 'Linkki samasta luokasta uudelleen käytettävien linkkien sarjaa kuin aiemminkin'; -$string['link'] = 'Linkki'; $string['listitems'] = 'Tentin kysymykset'; -$string['literal'] = 'vakiomerkintä'; $string['marks'] = 'Pistettä'; $string['match'] = 'Yhteensopivat vastaukset'; $string['matchanswer'] = 'Yhteensopiva vastaus'; -$string['max'] = 'Max'; -$string['min'] = 'Min'; $string['minutes'] = 'Minuuttia'; $string['missinganswer'] = 'Liian vähän :ANSWER, :Lx, :Rx kohtia kysymykselle rivillä $a. Kysymykselle pitää määritellä ainakin kaksi mahdollista vastausta.'; $string['missingcorrectanswer'] = 'Oikea vastaus täytyy määrittää'; @@ -151,35 +114,22 @@ $string['modulename'] = 'Tentti'; $string['modulenameplural'] = 'Tentit'; $string['multianswer'] = 'Aukkotehtävät'; $string['multichoice'] = 'Monivalinta'; -$string['multiplier'] = 'Kerroin'; $string['name'] = 'Nimi'; -$string['newcategory1'] = 'Vakiomerkintä uudesta vakiomerkintöjen sarjasta, jota saattaa käyttää myös muut kysymykset tässä luokassa.'; -$string['newcategory2'] = 'Tiedosto uudesta tiedostojen sarjasta, jota saattaa käyttää myös muut kysymykset tässä luokassa.'; -$string['newcategory3'] = 'Linkki uudesta linkkien sarjasta, jota saattaa käyttää myös muut kysymykset tässä luokassa.'; -$string['newlocal1'] = 'Vakiomerkintä uudesta vakiomerkintöjen sarjasta, jota käyttää vain tämä kysymys.'; -$string['newlocal2'] = 'Tiedosto uudesta tiedostojen sarjasta, jota käyttää vain tämä kysymys.'; -$string['newlocal3'] = 'Linkki uudesta linkkien sarjasta, jota käyttää vain tämä kysymys.'; $string['noanswers'] = 'Vastausta ei ole valittu!'; $string['noattempts'] = 'Kukaan ei ole yrittänyt tätä tenttiä.'; -$string['nodataset'] = 'tyhjää - ei ole jokerimerkki'; -$string['nominal'] = 'Nimellinen'; $string['nomoreattempts'] = 'Enempää yrityksiä ei sallita'; -$string['nopossibledatasets'] = 'Ei mahdollisia tietoja'; $string['noquestions'] = 'Kysymyksiä ei ole vielä lisätty.'; $string['noresponse'] = 'Ei vastausta'; $string['noreview'] = 'Et voi tarkastella tätä tenttiä'; $string['noreviewuntil'] = 'Et voi tarkastella tätä tenttiä ennen $a'; -$string['noscript'] = 'Salaimen JavaScritin pitää olla toiminnassa, jotta voisit jatkaa'; +$string['noscript'] = 'Salaimen JavaScritin pitää olla toimissa, jotta voisit jatkaa'; $string['notenoughanswers'] = 'Tämän tyyppinen kysymys vaatii ainakin $a vastausta'; $string['notenoughsubquestions'] = 'Kysymyksiä ei ole määritelty riittävästi!
          Haluatko palata ja korjata tämän kysymyksen?'; $string['numerical'] = 'Numeerinen'; -$string['optional'] = 'valinnainen'; $string['overdue'] = 'Myöhässä'; $string['paragraphquestion'] = 'Kappalekysymys ei ole tuettu rivillä $a. Kysymys ohitetaan.'; $string['passworderror'] = 'Annettu salasana on virheellinen'; $string['percentcorrect'] = 'Prosentuaalisesti oikein'; -$string['preview'] = 'Esikatselu'; -$string['previewquestion'] = 'Esikatsele kysymystä'; $string['publish'] = 'Julkaise'; $string['publishedit'] = 'Sinulla pitää olla lisäys ja muokkausoikeudet julkaisevalla kursilla muokataksesi kysymyksiä tässä kategoriassa.'; $string['qti'] = 'IMS QTI- muoto'; @@ -208,8 +158,6 @@ $string['recentlyaddedquestion'] = 'Viimeksi lis $string['regrade'] = 'Arvioi uudelleen kaikki yritykset'; $string['regradecomplete'] = 'Kaikki yritykset on uudelleen arvioitu.'; $string['regradecount'] = '$a->changed / $a->attempt yrityksen arviointi muuttui.'; -$string['relative'] = 'Relatiivinen'; -$string['remove'] = 'Poista'; $string['rename'] = 'Nimeä uudelleen'; $string['report'] = 'Raportit'; $string['reportfullstat'] = 'Yksityiskohtaiset tilastot'; @@ -222,7 +170,6 @@ $string['reportsimplestat'] = 'Perustilasto'; $string['requirepassword'] = 'Vaadi salasana'; $string['requirepasswordmessage'] = 'Sinun pitää tietää tentin salasana jotta voisit yrittää tenttiä'; $string['requiresubnet'] = 'Vaadi tietty verkkoosoite'; -$string['reuseifpossible'] = 'käytä aikaisemmin poistettuja'; $string['review'] = 'Näytä uudelleen'; $string['save'] = 'Tallenna'; $string['savegrades'] = 'Tallenna arvioinnit'; @@ -238,9 +185,7 @@ $string['showcorrectanswer'] = 'N $string['showfeedback'] = 'Näytä palaute vastamisen jälkeen?'; $string['shuffleanswers'] = 'Sekoita vastaukset'; $string['shufflequestions'] = 'Sekoita kysymykset'; -$string['significantfigures'] = '$a:n kanssa'; $string['subneterror'] = 'Tämä tentti on saatavilla vain tietystä osoitteista. Tietokoneesi osoiteei ole sallitujn osoitteiden joukossa.'; -$string['substitutedby'] = 'korvataan'; $string['time'] = 'Aika'; $string['timecompleted'] = 'Suoritettu'; $string['timeleft'] = 'Aikaa jäljellä'; @@ -248,23 +193,17 @@ $string['timelimit'] = 'Aikarajoitus'; $string['timelimitexeeded'] = 'Pahus! Aikarajoitus umpeutui!'; $string['timesup'] = 'Aika loppui!'; $string['timetaken'] = 'Suoritusaika'; -$string['tolerance'] = 'Toleranssi'; -$string['tolerancetype'] = 'Toleransin tyyppi'; $string['toomanyrandom'] = 'Haluttu satunnaisten kysymysten määrä on suurempi kuin tämän kysymyskategorian kysymysten määrä ($a).'; $string['true'] = 'Tosi'; $string['truefalse'] = 'Tosi/Epätosi'; $string['type'] = 'Tyyppi'; -$string['unit'] = 'Yksikkö'; $string['unknowntype'] = 'Kysymyksen tyyppiä ei ole tuettu rivillä $a. Kysymys ohitetaan.'; -$string['unsupportedformulafunction'] = 'Funktio $a ei ole tuettu'; $string['viewallanswers'] = 'Katso $a suoritetut tentit'; $string['viewallreports'] = 'Katso $a yritykset'; $string['warningsdetected'] = '$a varoitusta havaittu'; $string['webct'] = 'WebCT-muoto'; -$string['wildcard'] = 'Jokeri'; $string['withsummary'] = 'Yhteenlaskettujen tilastojen kanssa'; $string['wronggrade'] = 'Väärä arvosana (rivin $a jälkeen):'; -$string['xml'] = 'Moodle XML muoto'; $string['yourfinalgradeis'] = 'Lopullinen tuloksesi tästä tentistä on: $a'; ?> diff --git a/lang/fi/resource.php b/lang/fi/resource.php index febed1eb0d7..92063443e4a 100644 --- a/lang/fi/resource.php +++ b/lang/fi/resource.php @@ -1,30 +1,25 @@ Tiedostot-työkalua.'; +Tiedostot-työkalua.'; $string['notypechosen'] = 'Sinun pitää valita luettavan aineiston tyyppi. Käytä selaimen Takaisin-painiketta ja yritä uudelleen.'; $string['pagedisplay'] = 'Näytä aineisto nykyisessä ikkunassa'; $string['pagewindow'] = 'Samassa ikkunassa'; @@ -64,20 +59,11 @@ $string['parameters'] = 'Asetukset'; $string['popupresource'] = 'Tämän aineiston tulee näkyä ponnahdusikkunassa.'; $string['popupresourcelink'] = 'Jos et vielä klikannut, klikkaa tässä: $a'; $string['resourcetype'] = 'Aineiston tyyppi'; -$string['resourcetype1'] = 'Referenssi'; -$string['resourcetype2'] = 'Websivu'; -$string['resourcetype3'] = 'Tiedosto'; -$string['resourcetype4'] = 'Teksti'; -$string['resourcetype5'] = 'Weblinkki'; -$string['resourcetype6'] = 'HTML teksti'; -$string['resourcetype7'] = 'Ohjelma'; -$string['resourcetype8'] = 'Wikiteksti'; -$string['resourcetype9'] = 'Hakemisto'; $string['resourcetypedirectory'] = 'Näytä hakemisto'; $string['resourcetypefile'] = 'Linkitä tiedostoon tai web-sivuun'; $string['resourcetypehtml'] = 'Tee uusi web-sivu'; $string['resourcetypelabel'] = 'Lisää otsikko'; -$string['resourcetypetext'] = 'Tee uusi tekstisivu'; +$string['resourcetypetext'] = 'Tee uusi teksti-sivu'; $string['searchweb'] = 'Etsi web-sivua'; $string['variablename'] = 'Muuttujan nimi'; diff --git a/lang/fi/scorm.php b/lang/fi/scorm.php index 68b80eec95d..568d528013a 100644 --- a/lang/fi/scorm.php +++ b/lang/fi/scorm.php @@ -1,5 +1,5 @@ attr) merkinnässä $a->tag'; @@ -28,7 +28,6 @@ $string['found'] = 'Manifest'; $string['gradeaverage'] = 'Keskiarvo'; $string['gradehighest'] = 'Korkein arviointi'; $string['grademethod'] = 'Arviointi tapa'; -$string['gradescoes'] = 'Sisältöobjektien tilanne'; $string['gradesum'] = 'Yhteistulos'; $string['guestsno'] = 'Vieraat evät voi katsella scorm-kursseja'; $string['incomplete'] = 'Kesken'; @@ -52,7 +51,6 @@ $string['noreports'] = 'Ei raporttia n $string['normal'] = 'Normaali'; $string['not_corr_type'] = 'Typpi virhe merkinnässä $a->tag'; $string['notattempted'] = 'Ei yritetty'; -$string['organizations'] = 'Organisaatiot'; $string['packagedir'] = 'Tiedoston luonti virhe: paketin hakemistoa ei voi luoda'; $string['passed'] = 'Hyväksytty'; $string['php5'] = 'PHP 5 (oma DOMXML kirjasto)'; @@ -61,13 +59,9 @@ $string['prev'] = 'Edellinen'; $string['regular'] = 'Tavallinen Manifest'; $string['report'] = 'Raportti'; $string['review'] = 'Esikatsele'; -$string['scoes'] = 'Sisältö objektit'; $string['score'] = 'Tulos'; $string['syntax'] = 'Muoto virhe'; $string['tag_error'] = 'Tuntematon merkintä ($a->tag) sisällössä: $a->value'; -$string['thischarset'] = 'iso-8859-1'; -$string['thisdirection'] = 'ltr'; -$string['thislanguage'] = 'Suomi'; $string['too_many_attributes'] = 'Merkinällä $a->tag on liikaa atribuutteja'; $string['too_many_children'] = 'Merkinnällä $a->tag on liikaa lapsia'; $string['trackingloose'] = 'VAROITUS: Tämän SCORM-paketin seurantatiedot menetetään!'; diff --git a/lang/fi/survey.php b/lang/fi/survey.php index c63580ef9f2..88fd1bb89d2 100644 --- a/lang/fi/survey.php +++ b/lang/fi/survey.php @@ -1,5 +1,5 @@ + diff --git a/lang/fi/webquest.php b/lang/fi/webquest.php index b611e734322..3536142762f 100644 --- a/lang/fi/webquest.php +++ b/lang/fi/webquest.php @@ -1,11 +1,8 @@ - + diff --git a/lang/fi/wiki.php b/lang/fi/wiki.php index 6e6a9a83b42..ec839b973f9 100644 --- a/lang/fi/wiki.php +++ b/lang/fi/wiki.php @@ -1,29 +1,24 @@ new_ver ja $a->old_ver sivulla $a->pagename.'; -$string['disablecamel'] = 'Estä KameliKirjasinLinkittäminen'; $string['disabledpage'] = 'Tämä sivu ei ole tällä hetkellä saatavilla'; -$string['doesnotexist'] = 'Tätä sivua ei ole vielä tehty, klikkaa Muokkaa-painiketta jos haluat luoda tämän sivun'; +$string['doesnotexist'] = 'Tätä siva ei ole vielä tehty, klikkaa Muokaa-painketta jos haluat luoda tämän sivun'; $string['downloadaszip'] = 'Ladattava zip-paketti'; $string['downloadtimes'] = 'Ladattu $a kertaa'; $string['dwnlnofiles'] = 'Tiedostoja ei ole vielä lähetetty'; $string['dwnlsection'] = 'Ladattavat tiedostot'; $string['editform1'] = 'Älä murehdi liikaa tekstin muotoilua, voit muokata sivua aina jälkeenpäin.'; -$string['editform2'] = 'Muokkaa varovasti ja muista että kaikki muokkaustapahtumat kirjataan ylös.'; +$string['editform2'] = 'Muokkaa varovaisesti ja muista että kaikki muokkaustapahtumat kirjataan ylös.'; $string['editthispage'] = 'Muokkataan sivua'; $string['emptypage'] = 'Tyhjä sivu'; $string['errorbinandtxt'] = 'Virhe: Sivu on tyypiltään BIN JA TXT'; -$string['errorhtml'] = 'Sivu tyyppiä: HTML'; +$string['errorhtml'] = 'Sivu tyyppiä HTML'; $string['errornotype'] = 'Virhe: Sivu ei ole tyypiä BIN EIKÄ TXT'; $string['errororreason'] = 'Virhe tai syy'; $string['errorroandwr'] = 'Virhe: Sivu on Muokattava ja Kirjoitussuojattu'; $string['errorsize'] = 'Sivu on suurempi kuin 64k'; -$string['errversionsave'] = 'Pahus, sillä aikaa kun muokkasit sivua joku muu tallensi muuttuneen version. Palaa edelliselle sivulle ja kopioi tekemäsi muutokset koneesi leikepöydälle ja liitä ne uudelleen sivulle.'; +$string['errversionsave'] = 'Pahus, silläaikaa kun muokkasit sivua joku muu tallensi muuttuneen version. Palaa adelliselle sivulle ja kopioi tekmäsi muutukset koneesi leikepöydälle ja liitä ne uudelleen sivulle.'; $string['ewikiacceptbinary'] = 'Salli binääritiedostot'; -$string['ewikiprinttitle'] = 'Pane wikinimi joka sivulle'; +$string['ewikiprinttitle'] = 'Pane wikin nimi joka sivulle'; $string['export'] = 'Vie'; -$string['exportformats'] = 'Vientimuodot'; +$string['exportformats'] = 'Vienti muodot'; $string['exportsuccessful'] = 'Vienti onnistui'; $string['exportto'] = 'Vie '; -$string['fetchback'] = 'Palauta'; $string['file'] = 'Tiedosto'; $string['filedownload'] = 'Tiedoston lataus'; $string['fileisoftype'] = 'Tiedosto on tyyppiä'; -$string['filtername'] = 'Wikisivun automaattilinkitys'; +$string['filtername'] = 'Wiki sivun automaattilinkitys'; $string['flagbin'] = 'BIN'; $string['flaghtm'] = 'HTM'; $string['flagoff'] = 'OFF'; @@ -75,7 +68,7 @@ $string['flagsset'] = 'Liput muutettu'; $string['flagtxt'] = 'TXT'; $string['flagwr'] = 'WR'; $string['for'] = '->'; -$string['forbidden'] = 'Sinulla ei ole oikeutta tulla tälle sivulle.'; +$string['forbidden'] = 'Sinulla ei ole oiketta tähän sivuun.'; $string['groups'] = 'Ryhmät'; $string['hits'] = '$a osumaa'; $string['howtooperate'] = 'Kuinka toimia'; @@ -85,13 +78,13 @@ $string['htmlmode'] = 'Sallittu HTML muotoilu'; $string['htmlonly'] = 'Vain HTML'; $string['index'] = 'Sisältö'; $string['infoaboutpage'] = 'Tietoja tästä sivusta'; -$string['initialcontent'] = 'Valitse aloitussivu'; +$string['initialcontent'] = 'Valitse aloitus sivu'; $string['invalidroot'] = 'Sinulla ei ole oikeutta sivuston etusivuun joten sivustokarttaa ei voi luoda.'; $string['lastchanged'] = 'Muokattu $a'; $string['lastmodified'] = 'Viimeisin muokkaus'; $string['linkdead'] = 'DEAD'; $string['linkok'] = 'OK'; -$string['linkschecked'] = 'Linkit tarkastettu'; +$string['linkschecked'] = 'Linkkiä tarkastettu'; $string['listall'] = 'Listaa kaikki'; $string['listcandidates'] = 'Listaa ehdokkaat'; $string['meta'] = 'Meta tiedot'; @@ -101,20 +94,17 @@ $string['modulenameplural'] = 'Wikit'; $string['mostoftenchangedpages'] = 'Eniten muokatut sivut'; $string['mostvisitedpages'] = 'Eniten katsotut sivut'; $string['newestpages'] = 'Uusimmat sivut'; -$string['noadministrationaction'] = 'Ylläpito toimintoa ei annettu'; +$string['noadministrationaction'] = 'Yll\'pito toimintoa ei annettu'; $string['nocandidatestoremove'] = 'Ei ehdotettavia sivuja poistettavaksi, valitse \'$a\' nähdäksesi kaikki sivut'; $string['nochangestorevert'] = 'Ei muutoksia peruttavaksi'; $string['nohtml'] = 'Ei HTML'; $string['nolinksfound'] = 'Sivulta ei löytynyt linkkejä'; -$string['noregexp'] = 'Asetuksen pitää olla täysi merkkijono, et voi käyttää * tai säännöllisiä lausekkeita (regex). Lisää tähän koneen IP-osoite tai koneen nimi, mutta älä porttia ( se vaihtuu aina joka yhteydessä)'; -$string['notadministratewiki'] = 'Sinulla ei ole tämän wikin ylläpito-oikeuksia.'; +$string['notadministratewiki'] = 'Sinulla ei ole tämän wikin ylläpitooikeuksia.'; $string['nothingtostrip'] = 'Ei sivuja joilla olisi useampi kuin yksi versio'; $string['nowikicreated'] = 'Tähän wikiin ei ole luotu sivuja'; -$string['of'] = '/'; $string['offline'] = 'OFFLINE'; -$string['optional'] = 'Valinnainen'; -$string['orphanedpage'] = 'Orposivu'; -$string['orphanedpages'] = 'Orposivut'; +$string['orphanedpage'] = 'Orpo sivu'; +$string['orphanedpages'] = 'Orpo sivut'; $string['otherwikis'] = 'Muut wikit'; $string['ownerunknown'] = 'tuntematon'; $string['pageactions'] = 'Sivun toiminnot'; @@ -130,16 +120,13 @@ $string['plaintext'] = 'Pelkk $string['preview'] = 'Esikatsele'; $string['readonly'] = 'Kirjoitusuojattu sivu'; $string['refs'] = 'Viittaukset'; -$string['removenotice'] = 'Huomaa että ainostaan orposivut ovat listattuna tässä. Ja koska wiki testaa sivujen linkityksen vain osittain, voivat jotkut linkitetytkin sivut näkyä luettelossa.'; $string['removepagecheck'] = 'Oletko varma että haluat poistaa nämä sivut?'; $string['removepages'] = 'Poista sivuja'; $string['removeselectedpages'] = 'Poista valitut sivut'; -$string['revertallsince'] = 'Poista myös muutokset jotka on tehty jälkeen'; $string['revertchanges'] = 'Peruuta muutokset'; -$string['revertlastonly'] = 'Vain, jos se ainoa mahdollisuus'; -$string['revertpages'] = 'Peruuta massamuutokset'; +$string['revertlastonly'] = 'Vain , jos se ainoa mahdollisuus'; +$string['revertpages'] = 'Peruuta massa muutokset'; $string['revertpagescheck'] = 'Haluatko varmasti peruuttaa seuraavat muutokset:'; -$string['revertthe'] = 'Poista vain valittu versio'; $string['safehtml'] = 'Turvallinen HTML'; $string['save'] = 'Tallenna'; $string['searchwiki'] = 'Etsi Wikistä'; @@ -149,33 +136,28 @@ $string['smfor'] = 'Sivukartta'; $string['status'] = 'Tila'; $string['strippagecheck'] = 'Oletko varma että haluat siivota vanhat versiot näiltä sivuilta:'; $string['strippages'] = 'Siivoa sivuja'; -$string['studentadminoptions'] = 'Opiskelijan ylläpito-oikeudet'; +$string['studentadminoptions'] = 'Opiskelijan ylläpito oikeudet'; $string['submit'] = 'Lähetä'; -$string['tabattachments'] = 'Liitteet'; -$string['tabedit'] = 'Muokkaa'; -$string['tabinfo'] = 'Historia'; -$string['tablinks'] = 'Linkit'; -$string['tabview'] = 'Katso'; $string['thanksforcontribution'] = 'Kiitokset osallistumisesta'; $string['thispageisntlinkedfromanywhereelse'] = 'Tätä sivua ei ole linkitetty minnekään'; $string['updatedpages'] = 'Päivitetyt sivut'; $string['uplerror'] = 'Pahus, jotain meni pieleen tiedoston lähettämisessä'; $string['uplinsect'] = 'Lähetä'; -$string['uplnewnam'] = 'Tallenna toisella nimellä'; -$string['upload0'] = 'Käytä tätä lomaketta tiedostojen lähettämiseen:'; +$string['uplnewnam'] = 'tallenna toisella nimellä'; +$string['upload0'] = 'Kaytä tätä lomaketta tiedostojen lähettämiseen:'; $string['uploadedon'] = 'Lähetetty'; $string['uploadpicturebutton'] = 'Lähetä'; -$string['uplok'] = 'Tiedostosi otettiin vastaan onnistuneesti'; +$string['uplok'] = 'Tiedostosi otettii vastaa onnistuneesti'; $string['version'] = 'Versio'; $string['versionrangetoobig'] = 'Et voi poistaa sivun kaikkia versioita, viimeinen versio pitää jättää.'; $string['versions'] = 'Versiot'; -$string['versionstodelete'] = 'Poistettava(t) versio(t)'; +$string['versionstodelete'] = 'Poistettava(t) varsio(t)'; $string['viewpage'] = 'Katso sivua'; $string['viewsmfor'] = 'Katso sivukarttaa'; $string['wantedpages'] = 'Halutut sivut'; $string['wikidefaultpagename'] = 'Wikin sisältö'; $string['wikiexport'] = 'Vie sivuja'; -$string['wikiexportcomment'] = 'Tässä voit määritellä vientiasetukset '; +$string['wikiexportcomment'] = 'Tässä voit määritellä vienti asetukset '; $string['wikilinkoptions'] = 'Wikin automaattilinkitys määritykset'; $string['wikilinks'] = 'Wiki linkit'; $string['wikiname'] = 'Sivun nimi'; diff --git a/lang/fi/workshop.php b/lang/fi/workshop.php index 94d259d0cd8..07d225e7516 100644 --- a/lang/fi/workshop.php +++ b/lang/fi/workshop.php @@ -1,32 +1,26 @@ Lomakkeelle on haettu pohjaksi edelliset arvosanasi ja kommenttisi.
          Muokkaa näitä tarvittaessa arvioituasi päivitetyn työn uudelleen.'; $string['assessmentofthissubmission'] = 'Tämän esityksen arviointi'; $string['assessments'] = 'Arvioinnit'; @@ -35,53 +29,40 @@ $string['assessmentsby'] = 'Arvioinut $a'; $string['assessmentsdone'] = 'Arvioinnit on tehty'; $string['assessmentsexcluded'] = '$a:lle huomiotta jätettyjen arviointien lukumäärä'; $string['assessmentsmustbeagreed'] = 'Arvioinnit on sovittava'; -$string['assessmentstart'] = 'Arvioinnin alku'; -$string['assessmentstartevent'] = 'a$ :n arviointien alku'; $string['assessmentwasagreedon'] = 'Arvioinnista on sovittu $a'; $string['assessor'] = 'Arvioija'; $string['assessthissubmission'] = 'Arvioi tämä esitys'; $string['assignmentnotinthecorrectphase'] = 'Tehtävä ei ole oikeassa vaiheessa'; -$string['attachment'] = 'Liite'; -$string['attachments'] = 'Liitteet'; $string['authorofsubmission'] = 'Esityksen tekijä'; $string['averageerror'] = 'Keskimääräinen virhe'; $string['awaitinggradingbyteacher'] = 'Odottaa arvostelua $a'; $string['beforedeadline'] = 'Ennen määräaikaa: $a'; $string['calculationoffinalgrades'] = 'Lopullisten arvosanojen laskeminen'; -$string['clearlateflag'] = 'Poista myöhästynyt merkintä'; $string['closeassignment'] = 'Sulje tehtävä'; $string['comment'] = 'Kommentti'; -$string['commentbank'] = 'Kommenttipankki'; $string['commentby'] = 'Kommentti '; -$string['comparisonofassessments'] = 'Vertaile arviointeja'; $string['confirmdeletionofthisitem'] = 'Vahvista tämän $a poistaminen'; $string['correct'] = 'Oikein'; -$string['count'] = 'Määrä'; $string['criterion'] = 'Peruste'; -$string['currentphase'] = 'Tämänhetkinen vaihe'; -$string['deadline'] = 'Palautuksen määräaika'; +$string['deadline'] = 'Määräaika'; $string['deadlineis'] = 'Määräaika on $a'; $string['delete'] = 'Poista'; -$string['deleting'] = 'Poistetaan'; +$string['deleting'] = 'Poistaa'; $string['description'] = 'Kuvaus'; $string['detailsofassessment'] = 'Arvioinnin tiedot'; -$string['disagreewiththisassessment'] = 'Eri mieltä arvioinnista'; -$string['displayofcurrentgrades'] = 'Näytä nykyiset arvosanat'; +$string['disagreewiththisassessment'] = 'Eri mieltä arvostelusta'; $string['displayoffinalgrades'] = 'Lopulliset arvosanat'; $string['dontshowgrades'] = 'Älä näytä arvosanoja'; $string['edit'] = 'Muokkaa'; $string['editacomment'] = 'Muokkaa kommenttia'; $string['editingassessmentelements'] = 'Arviointielementtien muokkaus'; -$string['editsubmission'] = 'Muokkaa palautuksia'; $string['element'] = 'Elementti'; $string['elementweight'] = 'Elementin painotus'; -$string['enterpassword'] = 'Anna salasana'; -$string['errorbanded'] = 'Virheistä vähentävä'; +$string['errorbanded'] = 'Virhe porrastettu'; $string['errortable'] = 'Virhetaulukko'; $string['excellent'] = 'Erinomainen'; -$string['excludingdroppedassessments'] = 'Jätetään pudotetut arvioinnit huomiotta'; +$string['excludingdroppedassessments'] = 'Jätetään ottamatta arviointeja huomioon'; $string['expectederror'] = 'Oletettava virheen arvo: $a'; -$string['fair'] = 'Melko hyvä'; $string['feedbackgoeshere'] = ' Palaute kirjoitetaan tähän'; $string['generalcomment'] = 'Yleinen kommentti'; $string['good'] = 'Hyvä'; @@ -94,23 +75,14 @@ $string['gradeforbias'] = 'Puolueellisuuden aste'; $string['gradeforreliability'] = 'Luotettavuusaste'; $string['gradeforstudentsassessment'] = 'Oppilasarvioinnin aste'; $string['gradeforsubmission'] = 'Arvosana esitykselle'; -$string['gradegiventoassessment'] = 'Arvosana arvioinnille'; $string['gradeofsubmission'] = 'Esityksen arvosana: $a'; -$string['gradesforassessmentsare'] = 'Arvosanat arvioinneista ovat $a:sta'; -$string['gradesforstudentsassessment'] = 'Arvosanat $a\'n arvioille'; -$string['gradesforsubmissionsare'] = 'Arvosanat esitykselle ovat $a:sta'; $string['gradetable'] = 'Arvosanataulukko'; -$string['gradingallassessments'] = 'Kaikkien arvostelujen arviointi'; -$string['gradinggrade'] = 'Arvostelun arvosana'; $string['gradingstrategy'] = 'Arvostelustrategia'; $string['hidegradesbeforeagreement'] = 'Piilota arvosanat ennen hyväksymistä '; $string['hidenamesfromstudents'] = 'Piilota nimet $a:lta'; $string['includeteachersgrade'] = 'Liitä opettajan arvosana'; $string['incorrect'] = 'Virheellinen'; -$string['info'] = 'Tietoa'; -$string['invaliddates'] = 'Syöttämäsi päivämäärät eivät ole kelvollisia.
          Käytä selaimen \"Edellinen\" nappia palataksesi ja korjataksesi päivämäärät'; $string['iteration'] = 'Iterointi $a suoritettu loppuun'; -$string['lax'] = 'Rento'; $string['leaguetable'] = 'Jätetyn työn vertailutaulukko'; $string['listassessments'] = 'Listaa arvioinnit'; $string['listofallsubmissions'] = 'Lista kaikista esityksistä'; @@ -127,39 +99,27 @@ $string['mail7'] = '$a antoi kommentteja ja ne ovat n $string['mail8'] = 'Arviointia $a on päivitetty.'; $string['mail9'] = 'Arvioi se työpajan tehtävässä $a.'; $string['managingassignment'] = 'Arvioinnin käsittely'; -$string['maximum'] = 'Maximaalinen'; $string['maximumsize'] = 'Suurin mahdollinen koko'; -$string['mean'] = 'keskiarvo'; -$string['minimum'] = 'Minimaalinen'; $string['modulename'] = 'Työpaja'; $string['modulenameplural'] = 'Työpajat'; $string['movingtophase'] = 'Siirtyy vaiheeseen $a'; $string['namesnotshowntostudents'] = 'Nimiä ei näytetä $a:lle'; $string['newassessments'] = 'Uudet arvioinnit'; -$string['newattachment'] = 'Uusi liitetiedosto'; $string['newgradings'] = 'Uudet arvostelut'; $string['newsubmissions'] = 'Uudet esitykset'; $string['noassessments'] = 'Ei arviointia'; $string['noassessmentsdone'] = 'Yhtään arviointia ei ole valmiina'; -$string['noattachments'] = 'Ei liitetiedostoja'; $string['nosubmission'] = 'Ei esitystä'; $string['nosubmissionsavailableforassessment'] = 'Arviointia varten ei ole yhtään esitystä'; -$string['notallowed'] = 'Pääsysi tälle sivulle on evätty toistaiseksi'; $string['notavailable'] = 'Ei käytettävissä'; -$string['notenoughexamplessubmitted'] = 'Esmerkkejä ei ole esitetty tarpeeksi'; -$string['noteonassessmentelements'] = 'Ota huomioon, että arvostelu on jaettu \"arviointielementteihin\". Tämä helpottaa ja yhtenäistää arvostelua. Opettajan on lisättävä nämä elementit ennen kuin oppilaat pääsevät tekemään tehtävään. Elementit lisätään klikkaamalla tehtävää oppijaksossa. Jos elementtejä ei ole valmiina, opettajaa pyydetään lisäämään ne. Elementtien määrää voidaan muuttaa Muokkaa tehtävä -näytössä ja itse elementtejä \"Arvostelun käsittely\" -näytössä.'; -$string['noteonstudentassessments'] = '{Arvosana oppilaalta/ Arvostelun arvosanan arviointia varten}'; +$string['noteonassessmentelements'] = 'Ota huomioon, että arvostelu on jaettu \"arviointielementteihin\". Tämä helpottaa ja yhtenäistää arvostelua. Opettajan on lisättävä nämä elementit ennen kuin oppilaat pääsevät tekemään tehtävään. Elementit lisätään klikkaamalla tehtävää oppijaksossa. Jos elementtejä ei ole valmiina, opettajaa pyydetään lisäämään ne. Elementtien määrää voidaan muuttaa Muokkaa tehtävä -näytössä ja itse elementtejä "Arvostelun käsittely" -näytössä.'; $string['notgraded'] = 'Ei arvostelua'; -$string['notitle'] = 'Ei otsikkoa'; $string['notitlegiven'] = 'Otsikko puuttuu'; $string['numberofassessmentelements'] = 'Kommenttien, arviointielementtien, arvosanajoukkojen, perustelujen tai luokkien lukumäärä otsikossa'; $string['numberofassessments'] = 'Arviointien lukumäärä'; $string['numberofassessmentschanged'] = 'Muutettujen arviointien määrä: $a'; -$string['numberofassessmentsdropped'] = 'Arviointeja pudotettu: $a'; $string['numberofassessmentsofstudentsubmissions'] = 'Oppilasesitysten arviointien lukumäärä'; $string['numberofassessmentsofteachersexamples'] = 'Opettajan antamien arviointiesimerkkien lukumäärä'; -$string['numberofassessmentsweighted'] = 'Arviointien määrä (painotettu): $a'; -$string['numberofattachments'] = 'Odotettu arviointien määrä esityksissä.'; $string['numberofentries'] = 'Tietueiden lukumäärä'; $string['numberofnegativeresponses'] = 'Negatiivisten vastausten lukumäärä'; $string['numberofsubmissions'] = 'Palautusten lukumäärä'; @@ -173,11 +133,8 @@ $string['overallocation'] = 'Ylivaraus'; $string['overallpeergrade'] = 'Vertaisryhmän antama kokonaisarvosana: $a'; $string['overallteachergrade'] = 'Opettajan antama kokonaisarvosana: $a'; $string['ownwork'] = 'Oma työ'; -$string['passwordprotectedworkshop'] = 'Salasana suojattu harjoitus'; -$string['percentageofassessments'] = 'Pudotettavien arviointien prosentti'; +$string['percentageofassessments'] = 'Huomiotta jätettävien arviointien prosentti'; $string['phase'] = 'Vaihe'; -$string['phase0'] = 'Ei aktiivinen'; -$string['phase0short'] = 'Ei aktiivinen'; $string['phase1'] = 'Laadi tehtävä'; $string['phase1short'] = 'Laatiminen'; $string['phase2'] = 'Salli $a esitykset'; @@ -188,6 +145,8 @@ $string['phase4'] = 'Salli $a arvioinnit'; $string['phase4short'] = 'Arvioinnit'; $string['phase5'] = 'Lopullisten arvosanojen laskeminen'; $string['phase5short'] = 'Laskeminen'; +$string['phase6'] = 'Arvosanojen näyttäminen'; +$string['phase6short'] = 'Näytä arvosanat'; $string['pleaseassesstheseexamplesfromtheteacher'] = 'Arvioi nämä $a:n antamat esimerkit'; $string['pleaseassessthesestudentsubmissions'] = 'Arvioi nämä $a:n esitykset'; $string['pleaseassessyoursubmissions'] = 'Arvioi esityksesi'; @@ -195,9 +154,6 @@ $string['poor'] = 'Heikko'; $string['present'] = 'Läsnä'; $string['reasonforadjustment'] = 'Tarkennuksen syy'; $string['reassess'] = 'Arvioi uudelleen'; -$string['regradestudentassessments'] = 'Uudelleenarvostele oppilaiden arvioinnit'; -$string['releaseteachergrades'] = 'Päästä opettajan arvosanat oppilaille'; -$string['removeallattachments'] = 'Poista kaikki liitteet'; $string['repeatanalysis'] = 'Toista analyysi'; $string['reply'] = 'Vastaa'; $string['returnto'] = 'Palaa takaisin'; @@ -208,7 +164,6 @@ $string['saveleaguetableoptions'] = 'Tallenna taulukoinnin asetukset'; $string['savemyassessment'] = 'Tallenna arviointi'; $string['savemycomment'] = 'Tallenna kommentti'; $string['savemygrading'] = 'Tallenna arvostelu'; -$string['savemysubmission'] = 'Tallenna esitykseni'; $string['saveoverallocation'] = 'Tallenna ylivaraustaso'; $string['scale10'] = 'Pistettä 10 pisteestä'; $string['scale100'] = 'Pistettä 100 pisteestä'; @@ -222,23 +177,18 @@ $string['scalepresent'] = ' 2-pisteinen L $string['scaleyes'] = '2-pisteinen Kyllä/Ei-asteikko'; $string['select'] = 'Valitse'; $string['selfassessment'] = 'Itsearviointi'; +$string['setoverallocation'] = 'Aseta ylivaraustaso'; $string['showgrades'] = 'Näytä arvosanat'; $string['specimenassessmentform'] = 'Arviointilomakkeen mallikappale'; $string['standarddeviation'] = 'Arviointielementin $a keskihajonta'; $string['standarddeviationnote'] = 'Arvointielementit, joiden keskihajonta on nolla tai hyvin pieni, voivat vääristää analyysiä.
          Tätä arvosteluelementtiä ei ole otettu huomioon analyysissä.'; -$string['standarddeviationofelement'] = 'Alkion $a normipoikkeavuus:'; -$string['strict'] = 'Tiukka'; $string['studentassessments'] = '$a Arvioinnit'; $string['studentgrades'] = '$a Arvosanat'; $string['studentsubmissions'] = '$a Esitykset'; $string['studentsubmissionsforassessment'] = '$a Oppilasesitykset arviointia varten'; $string['submission'] = 'Esitys'; -$string['submissionend'] = 'Palautusten loppu'; -$string['submissionendevent'] = 'a$ :n palautusten loppu'; -$string['submissions'] = 'Palautukset'; -$string['submissionsnolongerallowed'] = 'Palautusten tallennusta ei enää sallita'; -$string['submissionstart'] = 'Palautusten alku'; -$string['submissionstartevent'] = 'a$ :n palautusten alku'; +$string['submissions'] = 'Esitykset'; +$string['submissionsnolongerallowed'] = 'Esityksien tallennusta ei enää sallita'; $string['submissionsused'] = '$a esitystä käytetty tässä taulukossa'; $string['submitassignment'] = 'Jätä tehtävä'; $string['submitassignmentusingform'] = 'Jätä tehtävä käyttäen tätä lomaketta'; @@ -251,22 +201,15 @@ $string['teacherassessments'] = '$a arviointia'; $string['teacherscomment'] = 'Opettajan kommentti'; $string['teachersgrade'] = 'Opettajan arvosana'; $string['teachersubmissionsforassessment'] = '$a opettajan esitystä arviointia varten'; -$string['thegradeforthisassessmentis'] = 'Arvosana tällä arvostelulle on $a'; $string['thegradeis'] = 'Arvosana on $a'; +$string['thereisfeedbackfromtheteacher'] = 'Olet saanut palautetta $a:lta'; $string['theseasessmentsaregradedbytheteacher'] = 'Arvioinnit on tehnyt $a'; -$string['thisisadroppedassessment'] = 'Tämä on pudotettu arviointi'; $string['timeassessed'] = 'Arvioitu aika'; $string['title'] = 'Otsikko'; $string['typeofscale'] = 'Asteikkotyyppi'; -$string['unassessed'] = 'a$ arvioimattonta'; -$string['ungradedassessments'] = '$a arvostelematonta arviointia'; $string['ungradedassessmentsofstudentsubmissions'] = '$a Oppilasesitysten arvioinnit eivät ole verrattavissa'; $string['ungradedassessmentsofteachersubmissions'] = '$a Opettajan esitysten arvioinnit eivät ole verrattavissa'; -$string['uploadsuccess'] = 'Lataus onnistui'; -$string['usepassword'] = 'käytä salasanaa'; -$string['verylax'] = 'Erittäin rento'; $string['verypoor'] = 'Todella heikko'; -$string['verystrict'] = 'Erittäin tiukka'; $string['view'] = 'Näytä'; $string['viewassessmentofteacher'] = 'Näytä $a arviointi'; $string['viewotherassessments'] = 'Näyttää muut arvioinnit'; @@ -286,7 +229,6 @@ $string['workshopassessments'] = 'Ty $string['workshopcomments'] = 'Työpajan kommentit'; $string['workshopfeedback'] = 'Työpajan palaute'; $string['workshopsubmissions'] = 'Työpajan esitykset'; -$string['wrongpassword'] = 'väärä salasana tälle harjoitukselle'; $string['yourassessments'] = 'Arviointisi'; $string['yourassessmentsofexamplesfromtheteacher'] = 'a$:n antamien esimerkkien arviointisi'; $string['yourfeedbackgoeshere'] = ' Kirjoita palautteesi tähän'; diff --git a/lang/fr/admin.php b/lang/fr/admin.php index 08d8683d0d7..3b17c1075b5 100755 --- a/lang/fr/admin.php +++ b/lang/fr/admin.php @@ -1,122 +1,9 @@ monecole.fr.ch .ecole.com
          . Les adresses de tous les autres domaines seront rejetées.'; -$string['configallowunenroll'] = 'Si vous choisissez « Oui », les étudiants pourront se désinscrire eux-mêmes des cours. Dans le cas contraire, ils ne le peuvent pas, et ce processus sera contrôlé par les enseignants et les administrateurs.'; -$string['configallowuserblockhiding'] = 'Voulez-vous autoriser les utilisateurs à cacher/afficher les blocs latéraux de ce site ? Cette fonctionnalité utilise Javascript et les cookies pour se souvenir de l\'état d\'affichage de chaque bloc. Elle n\'affecte que l\'affichage du site pour l\'utilisateur.'; -$string['configallowuserthemes'] = 'Si vous activez ce réglage, les utilisateurs pourront choisir leur propre thème. Le thème choisi par l\'utilisateur aura priorité sur le thème du site (mais pas sur les thèmes des cours).'; -$string['configallusersaresitestudents'] = 'Pour les activités affichées sur la page d\'accueil du site, TOUS les utilisateurs doivent-ils être considérés comme des étudiants ? Si vous choisissez « Oui », tout utilisateur possédant un compte confirmé pourra participer à ces activités en tant qu\'étudiant. Si vous choisissez « Non », seuls les participants d\'au moins un cours pourront accéder aux activités de la page d\'accueil.'; -$string['configautologinguests'] = 'Connecter automatiquement en tant qu\'utilisateur anonyme les utilisateurs accédant à un cours ouvert aux anonymes.'; -$string['configcachetext'] = 'Ce réglage permet d\'accélérer le temps de réponse des grands sites ou de ceux qui utilisent les filtres. Des copies des textes sont mémorisés pour la durée spécifiée ici. Une valeur trop petite peut allonger légèrement le temps de réponse, mais une valeur trop élevée pourrait engendrer un rafraîchissement des textes pas assez fréquent (avec de nouveaux liens, par exemple).'; -$string['configclamactlikevirus'] = 'Traiter les fichiers comme des virus'; -$string['configclamdonothing'] = 'Ne pas traiter les fichiers'; -$string['configclamfailureonupload'] = 'Si vous avez configuré clam pour l\'inspection des fichiers déposés et que la configuration n\'est pas correcte ou que clam ne peut être lancé pour une autre raison, quel doit être le comportement ? Si vous indiquez « Traiter les fichiers comme des virus », ils seront déplacés vers un dossier de quarantaine ou détruits. Si vous indiquez « Ne pas traiter les fichiers », les fichiers seront déposés vers leur dossier de destination, sans être inspectés. Dans tous les cas, les administrateurs seront avertis que clam n\'a pas fonctionné. En outre, si vous indiquez « Traiter les fichiers comme des virus » et que clam ne peut pas fonctionner (d\'habitude parce que le chemin « pathtoclam » n\'set pas correct), TOUS les fichiers déposés seront déplacés vers le dossier de quarantaine ou détruits. Soyez prudent avec ce réglage !'; -$string['configcountry'] = 'Si vous choisissez un pays ici, il sera sélectionné par défaut lors de la création de nouveaux comptes. Si vous souhaitez forcer les utilisateurs à choisir un pays, laissez ce champ vide.'; -$string['configdbsessions'] = 'Enregistrer les informations sur les sessions en cours dans la base de données. Ce réglage est surtout utile pour les sites avec de nombreux utilisateurs ou ceux qui sont construits sur des clusters de serveurs. La plupart des sites peuvent laisser cette option désactivée, et ces informations seront stockées sur le disque du serveur. Attention ! si vous changez ce réglage, tous les utilisateurs seront immédiatement déconnectés, vous y compris !.'; -$string['configdebug'] = 'Si vous activez cette option, le paramètre PHP « error_reporting » sera augmenté afin que les avertissements soient affichés. Ceci est utile essentiellement pour les développeurs.'; -$string['configdeleteunconfirmed'] = 'Si vous utilisez l\'authentification par courriel, c\'est la période pendant laquelle les confirmations des utilisateurs sont acceptées. À l\'échéance de cette période, les comptes non-confirmés sont supprimés.'; -$string['configdenyemailaddresses'] = 'Pour interdire les adresses de courriel de certains domaines pour les nouveaux utilisateurs, saisissez ici les domaines rejetés, séparés par des espaces, par exemple hotmail.com yahoo.fr. Les adresses de tous les autres domaines seront acceptées.'; -$string['configdigestmailtime'] = 'Les utilisateurs désirant recevoir un courriel contenant tous les messages des forums le recevront quotidiennement. Ce réglage détermine l\'heure de la journée à laquelle le courriel sera envoyé (la tâche cron s\'exécutant immédiatement après cette heure enverra le message).'; -$string['configdisplayloginfailures'] = 'Ceci permet d\'afficher les informations sur les tentatives de connexion des utilisateurs sélectionnés.'; -$string['configenablerssfeeds'] = 'Activation des canaux RSS pour tout le site. Il est également nécessaire d\'activer les canaux RSS dans les différents modules - voyez l\'option Modules sous Administration -> Configuration.'; -$string['configenablerssfeedsdisabled'] = 'Non disponible, car les canaux RSS ne sont pas activés pour le site. Pour les activer, voyez l\'option Paramètres techniques sous Administration -> Configuration.'; -$string['configerrorlevel'] = 'Choisir la quantité d\'avertissement PHP que vous souhaitez voir afficher. « Normal » est généralement le meilleur choix.'; -$string['configextendedusernamechars'] = 'Activez cette option pour permettre aux étudiants d\'utiliser n\'importe quel caractère dans leur nom d\'utilisateur (cette option n\'a aucun effet sur leur nom d\'utilisateur actuel). Par défaut, cette option est désactivée, ce qui restreint les noms d\'utilisateur aux caractères alphanumériques'; -$string['configfilterall'] = 'Filtrer toute les chaînes, y compris les entêtes, titres, barre de navigation, etc. Ce réglage n\'est utile qu\'en combinaison avec l\'utilisation du filtre « multilang&nbps;». Utilisé seul, il ne fera que charger inutilement votre serveur.'; -$string['configfilteruploadedfiles'] = 'En activant cette option, vous indiquez à Moodle de filtrer tous les fichiers HTML et textes déposés avant de les afficher.'; -$string['configforcelogin'] = 'Habituellement, la page d\'accueil du site et la liste des cours (mais pas les cours eux-mêmes) peuvent être consultés sans se connecter au site. Si vous désirez forcer les visiteurs à se connecter avant de faire QUOI QUE CE SOIT dans le site, veuillez activer cette option.'; -$string['configforceloginforprofiles'] = 'Activez cette option pour obliger les internautes à se connecter en tant qu\'utilisateur réel (pas invité) pour pouvoir consulter les profils des autres utilisateurs. Cette option est désactivée par défaut, ce qui signifie que les étudiants potentiels, tout comme les moteurs de recherche, ont accès aux profils des utilisateurs.'; -$string['configframename'] = 'Si vous intégrez Moodle dans un cadre (frame), inscrivez ici le nom de ce cadre. Dans le cas contraire, cette valeur doit rester « _top »'; -$string['configfullnamedisplay'] = 'Ce réglage définit comment les noms sont affichés en format complet. Pour la plupart des sites monolingues, le réglage le plus efficace est le réglage par défaut « Prénom + Nom », mais vous pouvez choisir de cacher les noms de familles, ou de laisser le choix au fichier de la langue d\'affichage (certaines langues ont des conventions différentes).'; -$string['configgdversion'] = 'Indiquer la version de la librairie GD qui est installée. La version selectionnée par défaut est celle qui a été détectée. Ne pas modifier cette valeur à moins de savoir réellement ce qu\'il en découle.'; -$string['confightmleditor'] = 'Choisir d\'autoriser ou non l\'utilisation de l\'éditeur HTML intégré. Cependant, même s\'il est activé, il n\'apparaît que si l\'utilisateur utilise un navigateur récent. Chaque utilisateur peut également choisir de ne pas l\'activer.'; -$string['configidnumber'] = 'Cette option précise si (a) les utilisateurs doivent indiquer un numéro d\'identification non vide ; (b) les utilisateurs doivent indiquer un numéro d\'identification qui peut être vide ; (c) les utilisateurs n\'ont pas besoin d\'indiquer de numéro d\'identification. Le cas échéant, le numéro d\'identification est affiché dans le profil de l\'utilisateur.'; -$string['configintro'] = 'Cette page permet de configurer un certain nombre de variables de configuration permettront à Moodle de fonctionner correctement sur ce serveur. Inutile de trop s\'en inquiéter, les paramètres par défaut devraient, la plupart du temps, convenir et il est toujours possible de revenir plus tard sur cette page pour les modifier.'; -$string['configintroadmin'] = 'Cette page permet de configurer votre compte administrateur principal qui aura le contrôle total du site. Assurez-vous de lui donner un nom et un mot de passe sûrs, ainsi qu\'une adresse de courriel valable. Vous pourrez créer plus tard d\'autres comptes administrateur.'; -$string['configintrosite'] = 'Cette page permet définir l\'aspect de la page d\'accueil et le nom de votre site. Vous pourrez modifier ces paramètres en tout temps en utilisant le lien « Page d\'accueil » sur la page d\'administration.'; -$string['configintrotimezones'] = 'Cette page recherchera les données actuelles des fuseaux horaires (y compris les changements dus à l\'heure d\'été) et mettra à jour votre base de données locale avec ces informations. Les emplacements suivants seront vérifiés, dans l\'ordre : $a Cette procédure est tout à fait sûre et ne peut endommager des installations standard de moodle. Voulez-vous mettre à jour vos fuseaux horaires maintenant ?'; -$string['configlang'] = 'Choisir une langue par défaut pour l\'ensemble du site. Les utilisateurs ont la possibilité d\'en choisir une autre plus tard.'; -$string['configlangdir'] = 'La plupart des langues sont écrites de gauche à droite excepté certaines, comme l\'Arabe ou l\'Hébreu, qui le sont de droite à gauche'; -$string['configlanglist'] = 'Laisser ce champ vide pour permettre le choix d\'une langue de cette installation de Moodle. Vous pouvez abréger le menu des langues en spécifiant une liste de codes des langues désirées, par exemple: fr,de,en,it'; -$string['configlangmenu'] = 'Déterminer si vous voulez afficher ou non le menu du choix de la langue sur la page d\'accueil, la page de connexion, etc. Les utilisateurs peuvent sélectionner leur langue préférée dans leur propre profil indépendamment de ce réglage.'; -$string['configlocale'] = 'Choisir un environnement pour l\'affichage des dates. Les données de cet environnement doivent être installées sur le serveur. Laisser vide en cas de doute.'; -$string['configloginhttps'] = 'Cette option permet Moodle d\'utiliser le protocole https sécurisé uniquement pour la page de connexion, ce qui fournit une connexion sécurisée. Moodle revient ensuite au protocole normal http pour gagner en vitesse. ATTENTION : ce réglage requiert l\'activation du protocole https sur le serveur web. Sans cela, vous risquez de NE PLUS POUVOIR ACCÉDER À VOTRE SITE.'; -$string['configloglifetime'] = 'Ce champ permet de spécifier la durée de conservation des historiques des utilisateurs. Il est conseillé de choisir une durée aussi longue que possible. Si votre serveur est très fréquenté et que la performance se dégrade, il peut être judicieux de diminuer cette durée.'; -$string['configlongtimenosee'] = 'Si les étudiants ne se connectent pas au serveur durant ce laps de temps, leur inscription aux cours est automatiquement annulée.'; -$string['configmaxbytes'] = 'Taille maximale des fichiers déposés dans le site. Cette valeur est limitée par le réglage PHP upload_max_filesize et par le réglage Apache LimitRequestBody. Le réglage maxbytes limite quant à lui la taille au niveau des cours ou des thèmes.'; -$string['configmaxeditingtime'] = 'Ce paramètre indique la durée pendant laquelle les utilisateurs ont la possibilité de modifier un article qu\'ils ont écrit. Habituellement, 30 minutes est une bonne valeur.'; -$string['configmessaging'] = 'Le système de messagerie instantanée entre les utilisateurs du site doit-il être activé ?'; -$string['confignoreplyaddress'] = 'Les courriels sont parfois envoyés au nom d\'un utilisateur (par exemple les messages des forums). L\'adresse de courriel spécifiée ici sera utilisée comme adresse de l\'expéditeur lorsqu\'il n\'est pas souhaitable que les utilisateurs répondent directement à l\'auteur du message (par exemple s\'il ne veut pas que son adresse de courriel soit divulguée).'; -$string['confignotifyloginfailures'] = 'Lorsque les tentatives de connexion sont enregistrées, des notifications peuvent être envoyées par courriel. Qui doit recevoir ces notifications ?'; -$string['confignotifyloginthreshold'] = 'Lorsque les notifications des tentatives de connexion sont activées, combien de tentatives (provenant du même utilisateur ou de la même adresse IP) doivent être notifiées ?'; -$string['configopentogoogle'] = 'Si vous activez cette option, Google pourra entrer dans votre site en tant qu\'utilisateur invité. En outre, les internautes arrivant sur votre site depuis une recherche Google seront automatiquement connectés en tant qu\'utilisateur invité. Cela ne permet cependant un accès transparent qu\'aux cours déjà ouverts aux invités.'; -$string['configpathtoclam'] = 'Chemin d\'accès du programme clam AV. En général quelque chose comme « /usr/bin/clamscan » ou « /usr/bin/clamdscan ». Cette valeur est indispensable au fonctionnement de clam AV.'; -$string['configproxyhost'] = 'Si le serveur qui héberge le site Moodle a besoin d\'utiliser un proxy (dans le cas, par exemple, où il existe un firewall sur le réseau), indiquer ici le nom de ce proxy et son numéro de port. Sinon laisser vide.'; -$string['configquarantinedir'] = 'Si vous désirez que clam AV déplace les fichiers infectés vers un dossier de quarantaine, spécifiez ici son chemin d\'accès. Le serveur web doit pouvoir écrire dans ce dossier. Si vous laissez ce champ vide ou si vous spécifiez un dossier inexistant ou sans droit d\'écriture, les fichiers infectés seront détruits. Ne pas écrire la barre oblique finale.'; -$string['configrunclamonupload'] = 'Lancer clam AV lors du dépôt de fichiers ? Il est indispensable d\'indiquer en outre le chemin d\'accès correct dans le champ « pathtoclam » pour un fonctionnement correct. (Clam AV est un antivirus libre et gratuit que vous pouvez obtenir ici : http://www.clamav.net/)'; -$string['configsectioninterface'] = 'Interface'; -$string['configsectionmail'] = 'Courriel'; -$string['configsectionmaintenance'] = 'Maintenance'; -$string['configsectionmisc'] = 'Divers'; -$string['configsectionoperatingsystem'] = 'Système d\'exploitation'; -$string['configsectionpermissions'] = 'Autorisations'; -$string['configsectionsecurity'] = 'Sécurité'; -$string['configsectionuser'] = 'Utilisateur'; -$string['configsecureforms'] = 'Moodle peut utiliser un niveau additionnel de sécurité pour la gestion des formulaires web. Si cette option est activée, la variable HTTP_REFERRER du navigateur est comparée à l\'adresse du formulaire. Cela peut poser des problèmes lors de l\'utilisation d\'un firewall (p. ex. Zonealarm) configuré pour ôter HTTP_REFERRER de leur traffic web. Le symptôme est alors le « gel » du formulaire. Si vos utilisateurs ont des problèmes de connexion, par exemple sur la page de connexion, désactiver cette option. Dans le doute, réglez cette option sur « Oui ».'; -$string['configsessioncookie'] = 'Ce réglage permet de changer le nom du cookie utilisé pour les sessions de Moodle. Il est optionnel et uniquement utile pour éviter que la confusion des cookies sur un site web où tounent plusieurs Moodle.'; -$string['configsessiontimeout'] = 'Les utilisateurs connectés seront automatiquement déconnectés (leur session sera terminée) après le laps de temps d\'inactivités spécifié dans ce champ.'; -$string['configshowblocksonmodpages'] = 'Certains modules d\'activité offrent la possibilité d\'utiliser des blocs sur leurs pages. Si vous activez ce réglage, les enseignants pourront alors ajouter des blocs latéraux sur ces pages. Dans le cas contraire l\'interface ne permettra pas cette fonctionnalité.'; -$string['configshowsiteparticipantslist'] = 'Tous les étudiants et les enseignants de la page d\'accueil de ce site seront affichés dans la liste des participants du site. Qui doit avoir l\'autorisation de voir cette liste des participants de la page d\'accueil ?'; -$string['configsitepolicy'] = 'Si votre site a un règlement que tous les utilisateurs doivent lire et accepter avant d\'utiliser le site, indiquez ici l\'URL du règlement. Dans le cas contraire, laissez le champ vide. L\'URL peut pointer n\'importe où. Un endroit pratique serait un fichier dans les fichiers du site, par exemple http://monsite/file.php/1/reglement.html'; -$string['configslasharguments'] = 'Les fichiers (images, fichiers téléchargés, etc.) sont transmis via un script qui utilise les « slash arguments ». Cette méthode permet à ces fichiers d\'être plus facilement pris en compte par le système de cache des navigateurs Web, proxy, etc. Cependant certains serveurs PHP n\'autorisent pas cette méthode. Par conséquent il est nécessaire d\'utiliser la première valeur de ce paramètre si des problèmes d\'affichage des fichiers ou images téléchargés sont rencontrés.'; -$string['configsmtphosts'] = 'Indiquer le nom complet d\'un ou plusieurs serveurs SMTP locaux que Moodle devra utiliser pour envoyer des courriels (par exemple, « mail.a.com » ou « mail.a.com;mail.b.com »). Si ce paramètre est laissé vide, Moodle utilisera la méthode par défaut de PHP pour envoyer des courriels.'; -$string['configsmtpuser'] = 'Si vous avez indiqué un nom de serveur SMTP ci-dessus et qu\'il requiert une authentification, entrez ici le nom d\'utilisateur et le mot de passe à utiliser.'; -$string['configteacherassignteachers'] = 'Les enseignants peuvent-ils choisir d\'autres enseignants pour les cours qu\'ils donnent ? Si « Non », seuls les responsables de cours et les administrateurs peuvent choisir les enseignants.'; -$string['configthemelist'] = 'Laissez ce champ vide si vous voulez permettre l\'utilisation de n\'importe quel thème. Si vous voulez raccourcir le menu des thèmes, vous pouvez spécifier ici une liste de noms de thèmes autorisés, séparés par des virgules. Par exemple : « standard,orangewhite ».'; -$string['configtimezone'] = 'Vous pouvez indiquer ici le fuseau horaire par défaut. Ce n\'est le fuseau horaire par défaut que pour l\'affichage des dates. Chaque utilisateur peut modifier ce réglage dans son propre profil. Si vous choisissez ici « Server Time », Moodle utilisera le réglage par défaut du serveur où il est installé. Si l\'utilisateur choisit « Server time » dans son profil, le réglage spécifié sera alors utilisé pour lui.'; -$string['configunzip'] = 'Indiquer le chemin complet du programme « unzip » (seulement pour Unix). Ce programme est requis pour décompresser des archives zip sur le serveur.'; -$string['configvariables'] = 'Paramètres techniques'; -$string['configwarning'] = 'Attention ! Des valeurs bizarres pour ces paramètres peuvent engendrer des problèmes.'; -$string['configzip'] = 'Indiquer le chemin complet du programme « zip » (seulement pour Unix). Ce programme est requis pour réaliser des archives zip sur le serveur.'; -$string['confirmation'] = 'Confirmation'; -$string['cronwarning'] = 'Le script de maintenance cron.php n\'a pas été lancé depuis au moins 24 heures.
          La documentation d\'installation explique comment vous pouvez automatiser cette tâche.'; -$string['edithelpdocs'] = 'Modifier les fichiers d\'aide'; -$string['editstrings'] = 'Modifier les chaînes de caractères'; -$string['filterall'] = 'Filtrer toutes les chaînes de caractères'; $string['filteruploadedfiles'] = 'Filtrer les fichiers déposés'; -$string['helpadminseesall'] = 'Les administrateurs voient-ils tous les événements du calendrier ou seulement leurs propres événements ?'; -$string['helpcalendarsettings'] = 'Configuration des divers aspects du calendrier de Moodle'; -$string['helpforcetimezone'] = 'Vous pouvez autoriser les utilisateurs à choisir leur fuseau horaire ou imposer le même fuseau horaire pour tous.'; -$string['helpsitemaintenance'] = 'Pour les mises à jour et d\'autres travaux'; -$string['helpstartofweek'] = 'Quel est le premier jour de la semaine dans le calendrier ?'; -$string['helpupcominglookahead'] = 'Par défaut, combien de jours dans le futur le calendrier considère-t-il les événements à venir ?'; -$string['helpupcomingmaxevents'] = 'Par défaut, quel est le nombre maximum d\'événements à venir affichés ?'; -$string['helpweekenddays'] = 'Quel jours sont traités comme jours du « week-end » et affichés d\'une couleur différente ?'; -$string['importtimezones'] = 'Mise à jour complète de la liste des fuseaux horaires'; -$string['importtimezonescount'] = '$a->count entrées importées depuis $a->source'; -$string['importtimezonesfailed'] = 'Aucune source de données trouvée !'; -$string['nodstpresetsexist'] = 'Le support de l\'heure d\'été est désactivé pour tous les utilisateurs, car aucun réglage n\'est défini. Vous pouvez définir des réglages en cliquant sur le bouton ci-dessous.'; -$string['optionalmaintenancemessage'] = 'Message de maintenance facultatif'; -$string['sitemaintenance'] = 'Ce site est actuellement en maintenance. Il est donc temporairement non disponible'; -$string['sitemaintenancemode'] = 'Mode maintenance'; -$string['sitemaintenanceon'] = 'Votre site est actuellement en mode maintenance (seuls les administrateurs peuvent se connecter et utiliser le site).'; -$string['sitemaintenanceoff'] = 'Le mode maintenance a été désactivé et le site fonctionne à nouveau normalement'; -$string['sitemaintenancewarning'] = 'Votre site est actuellement en mode maintenance (seuls les administrateurs peuvent se connecter). Pour revenir à un fonctionnement normal du site, veuillez désactiver le mode maintenance.'; -$string['tabselectedtofront'] = 'Dans les tables avec onglets, la rangée contenant l\'onglet sélectionné doit-il être ramené au premier plan ?'; -$string['timezoneforced'] = 'Ce réglage est imposé par l\'administrateur du site'; -$string['timezoneisforcedto'] = 'Imposer à tous les utilisateurs l\'utilisation du fuseau horaire'; -$string['timezonenotforced'] = 'Les utilisateurs peuvent choisir leur fuseau horaire'; -$string['therewereerrors'] = 'Des erreurs sont présentes dans vos données'; $string['upgradelogs'] = 'Pour profiter de toutes les fonctionnalités, les historiques (logs) doivent être mis à jour. Plus d\'informations'; -$string['upgradelogsinfo'] = 'Récemment, des changements ont eu lieu dans la façon de conserver les historiques. Afin de pouvoir profiter de l\'affichage des anciens historiques par activité, ceux-ci doivent être mis à jour. Selon la taille de votre site, cette opération peut durer assez longtemps (c\'est-à-dire plusieurs heures) et peut ralentir les bases de données des sites complexes et très actifs. Une fois l\'opération démarrée, vous devez la laisser se terminer (en laissant ouverte la fenêtre du navigateur). N\'ayez crainte, votre site continuera à très bien fonctionner pour les autres utilisateurs durant la mise à jour des historiques.

          Voulez-vous mettre à jour maintenant vos historique ?'; -$string['upgradesure'] = 'Certains fichiers de votre Moodle ont été modifiés, et vous êtes sur le point
          de lancer la procédure automatique de mise à jour de votre serveur vers cette version :

          $a

          Une fois cette mise à jour effectuée, il sera impossible de revenir en arrière !

          Voulez-vous vraiment mettre à jour ce Moodle vers cette version ?'; +$string['upgradelogsinfo'] = 'Des changements ont eu lieu quant à la façon dont les historiques sont conservés. Afin de pouvoir profiter de l\'affichage des historiques par activité, ceux-ci doivent être mis à jour. Selon la taille de votre site, cette opération peut durer assez longtemps (c\'est-à-dire plusieurs heures) et peut ralentir les grosses bases de données. Une fois l\'opération démarrée, vous devez la laisser se terminer (en laissant ouverte la fenêtre du navigateur). N\'ayez crainte, votre site continuera à très bien fonctionner pour les autres utilisateurs durant la mise à jour des historiques.

          Voulez-vous mettre à jour maintenant vos fichiers d\'historique ?'; $string['upgradinglogs'] = 'Mise à jour des fichiers d\'historique (logs)'; ?> diff --git a/lang/fr/assignment.php b/lang/fr/assignment.php index 295ad8cfc42..ee11a7077e8 100644 --- a/lang/fr/assignment.php +++ b/lang/fr/assignment.php @@ -4,27 +4,19 @@ $string['allowresubmit'] = 'Permettre plusieurs remises d\'un devoir'; $string['assignmentdetails'] = 'Détails du devoir'; $string['assignmentmail'] = '$a->teacher a écrit un feedback concernant votre devoir « $a->assignment » -Vous pouvez le consulter en annexe à votre devoir : +Vous pouvez le consulter en annexe à votre devoir: $a->url'; -$string['assignmentmailhtml'] = '$a->teacher a écrit un feedback concernant votre devoir rendu « $a->assignment »

          +$string['assignmentmailhtml'] = '$a->teacher a écrit un feedback concernant votre devoir rendu « $a->assignment »

          Vous pouvez le consulter en annexe à url\'>votre devoir.'; $string['assignmentname'] = 'Nom du devoir'; $string['assignmenttype'] = 'Type du devoir'; -$string['availabledate'] = 'Disponible dès le'; $string['configmaxbytes'] = 'Taille maximale par défaut de tous les devoirs du site (sujet aux limites des cours et autres réglages locaux)'; $string['description'] = 'Description'; $string['duedate'] = 'À rendre le'; $string['duedateno'] = 'Pas de date de retour'; $string['early'] = 'en avance de $a'; -$string['emailteachers'] = 'Envoyer aux enseignants les alertes par courriel'; -$string['emailteachermail'] = '$a->username a modifié son travail remis pour le devoir « $a->assignment ». - -Ce travail est disponible ici : - -$a->url'; -$string['emailteachermailhtml'] = '$a->username a modifié son travail remis pour le devoir « $a->assignment »

          Le travail remis est url\">disponible sur le site web.'; $string['existingfiledeleted'] = 'Le fichier $a a été supprimé'; $string['failedupdatefeedback'] = 'Impossible d\'enregistrer le feedback pour $a'; $string['feedback'] = 'Feedback'; @@ -35,17 +27,15 @@ $string['maximumsize'] = 'Taille maximale'; $string['modulename'] = 'Devoir'; $string['modulenameplural'] = 'Devoirs'; $string['newsubmissions'] = 'Devoirs rendus'; -$string['noassignments'] = 'Il n\'y a pas encore de devoir'; $string['notgradedyet'] = 'Pas encore de note'; $string['notsubmittedyet'] = 'Pas encore rendu'; -$string['overwritewarning'] = 'Attention ! un nouvel envoi remplacera votre devoir déjà remis'; +$string['overwritewarning'] = 'Attention : un nouvel envoi remplacera votre devoir déjà remis'; $string['saveallfeedback'] = 'Enregistrer tous mes feedbacks'; $string['submissionfeedback'] = 'Feedback du devoir'; $string['submissions'] = 'Devoirs rendus'; $string['submitassignment'] = 'Déposer votre devoir en utilisant ce formulaire'; $string['submitted'] = 'Devoir rendu'; $string['typeoffline'] = 'Activité hors ligne'; -$string['typeonline'] = 'Activité en ligne'; $string['typeuploadsingle'] = 'Déposer un fichier'; $string['uploadbadname'] = 'Ce nom de fichier contient d\'étranges caractères. Il ne peut être déposé'; $string['uploadedfiles'] = 'fichiers déposés'; diff --git a/lang/fr/attendance.php b/lang/fr/attendance.php index 33d36970ebe..70c6eca1136 100755 --- a/lang/fr/attendance.php +++ b/lang/fr/attendance.php @@ -1,4 +1,4 @@ -$a et doit contenir les champs username et password.
          Attention à donner une URL correcte, sans quoi vous risquez de ne plus pouvoir accéder au site.
          Pour utiliser la page de connexion par défaut, laissez ce champ vide.'; -$string['alternateloginurl'] = 'URL de la page de connexion de rechange'; -$string['auth_cas_logincas'] = 'Accès par connexion sécurisée'; -$string['auth_cas_invalidcaslogin'] = 'Désolé, la connexion a échoué ! Vous n\'êtes pas autorisé à vous connecter à la plateforme.'; -$string['auth_cas_server_settings'] = 'Configuration du serveur CAS'; -$string['auth_castitle'] = 'Utiliser un serveur CAS (SSO)'; -$string['auth_cas_hostname'] = 'Nom d\'hôte du serveur,
          par exemple : « host.domaine.fr »'; -$string['auth_cas_baseuri'] = 'Adresse URI du serveur CAS (ne rien mettre s\'il n\'y en a pas).
          par exemple, si le serveur CAS répond à l\'adresse « host.domaine.fr/CAS/ », la valeur à indiquer ici est « CAS/ ».'; -$string['auth_cas_port'] = 'Port utilisé par le serveur CAS'; -$string['auth_cas_version'] = 'Version du logiciel CAS'; -$string['auth_cas_language'] = 'Langue choisie'; -$string['auth_casdescription'] = 'Cette méthode utilise un serveur CAS (Central Authentication Service) pour authentifier les utilisateurs dans un environnement Single Sign On (SSO). Il est aussi possible d\'utiliser une simple authentification LDAP. Si le nom d\'utilisateur et le mot de passe donnés sont valides suivant le CAS, Moodle crée un nouvel utilisateur dans sa base de données, en héritant si nécessaire des attributs LDAP de l\'utilisateur. Lors des connexions ultérieures, seuls le nom d\'utilisateur et le mot de passe sont vérifiés.'; -$string['auth_cas_enabled'] = 'Veuillez activer cette option si vous voulez utiliser l\'authentification CAS.'; -$string['auth_cas_text'] = 'Connection sécurisée'; -$string['auth_cas_create_user'] = 'Veuillez activer cette option si vous voulez insérer dans la base de données de Moodle les utilisateurs authentifiés par le CAS. Dans le cas contraire, seuls les utilisateurs déjà présents dans la base de données de Moodle pourront se connecter.'; -$string['auth_common_settings'] = 'Réglages communs'; -$string['auth_data_mapping'] = 'Appariement des données'; $string['auth_dbdescription'] = 'Cette méthode utilise une base de données externe afin de vérifier qu\'un nom d\'utilisateur et son mot de passe sont valides. Si le compte concerné est nouveau, il est possible de copier des données provenant de certains champs vers Moodle.'; -$string['auth_dbextrafields'] = '

          Ces zones sont facultatives. Il vous est possible de remplir certains champs de Moodle avec des données provenant des champs de la base de données externe.

          Si vous laissez ces zones vides, les valeurs par défaut seront utilisées.

          Dans tous les cas, l\'utilisateur a la possibilité de modifier tous ces champs, une fois connecté.

          '; +$string['auth_dbextrafields'] = 'Ces zones sont facultatives. Il vous est possible de remplir certains champs de Moodle avec des données provenant des champs de la base de données externe.

          Si vous laissez ces zones vides, les valeurs par défaut seront utilisées.

          Dans tous les cas, l\'utilisateur a la possibilité de modifier tous ces champs, une fois connecté.'; $string['auth_dbfieldpass'] = 'Nom du champ contenant les mots de passe'; $string['auth_dbfielduser'] = 'Nom du champ contenant les noms d\'utilisateurs'; $string['auth_dbhost'] = 'Ordinateur hébergeant la base de données'; @@ -29,17 +12,15 @@ $string['auth_dbtable'] = 'Nom de la table dans la base de donn $string['auth_dbtitle'] = 'Utiliser une base de données externe'; $string['auth_dbtype'] = 'Type de la base de données (Pour plus d\'information, voir la documentation de ADOdb)'; $string['auth_dbuser'] = 'Compte avec accès en lecture à la base de données'; -$string['auth_editlock_expl'] = '

          Verrouiller cette valeur : si cette option est activée, elle empêchera les utilisateurs et les administrateurs de modifier le champ directement. Utilisez cette option si vous maintenez ces données dans le système d\'authentification externe.

          '; -$string['auth_editlock'] = 'Verrouiller cette valeur'; $string['auth_emaildescription'] = 'La confirmation par courriel est la méthode d\'authentification par défaut. Lorsqu\'un utilisateur s\'enregistre en choisissant ses nom d\'utilisateur et mot de passe, un message de confirmation est envoyé à son adresse de courriel. Ce message contient un lien sécurisé vers une page Web où il peut confirmer son inscription. Les connexions suivantes ne vérifient que les nom d\'utilisateur et mot de passe précédemment enregistrés dans la base de données de Moodle.'; $string['auth_emailtitle'] = 'Authentification par courriel'; -$string['auth_fccreators'] = 'Liste des groupes dont les membres ont l\'autorisation de créer de nouveaux cours. Séparez les différents groupes par des points-virgules (;). Les noms doivent être transcrits exactement tels qu\'ils sont sur le serveur FirstClass. La casse des caractères doit être respectée.'; -$string['auth_fcdescription'] = 'Cette méthode utilise un serveur FisrtClass pour vérifier la validité d\'un nom d\'utilisateur et d\'un mot de passe donnés.'; -$string['auth_fcfppport'] = 'Port du serveur (la plupart du temps 3333)'; -$string['auth_fchost'] = 'L\'adresse du serveur FirstClass. Indiquez l\'adresse IP numérique ou un nom de domaine DNS.'; -$string['auth_fcpasswd'] = 'Mot de passe du compte FirstClass ayant le privilège « Subadministrator ».'; $string['auth_fctitle'] = 'Utilisation d\'un serveur FirstClass'; +$string['auth_fcdescription'] = 'Cette méthode utilise un serveur FisrtClass pour vérifier la validité d\'un nom d\'utilisateur et d\'un mot de passe donnés.'; +$string['auth_fchost'] = 'L\'adresse du serveur FirstClass. Indiquez l\'adresse IP numérique ou un nom de domaine DNS.'; +$string['auth_fcfppport'] = 'Port du serveur (la plupart du temps 3333)'; $string['auth_fcuserid'] = 'Numéro d\'identification du compte FirstClass ayant le privilège « Subadministrator ».'; +$string['auth_fcpasswd'] = 'Mot de passe du compte FirstClass ayant le privilège « Subadministrator ».'; +$string['auth_fccreators'] = 'Liste des groupes dont les membres ont l\'autorisation de créer de nouveaux cours. Séparez les différents groupes par des points-virgules (;). Les nom doivent être transcrits exactement tels qu\'ils sont sur le serveur FirstClass. La casse des caractères doit être respectée.'; $string['auth_imapdescription'] = 'Cette méthode utilise un serveur IMAP pour vérifier qu\'un nom d\'utilisateur et son mot de passe sont valides.'; $string['auth_imaphost'] = 'Adresse du serveur IMAP. Utiliser l\'adresse IP et non le nom de la machine.'; $string['auth_imapport'] = 'Numéro de port du serveur IMAP. Il s\'agit généralement de 143 ou 993.'; @@ -47,75 +28,46 @@ $string['auth_imaptitle'] = 'Utiliser un serveur IMAP'; $string['auth_imaptype'] = 'Type de serveur IMAP. Les serveurs IMAP peuvent avoir différentes méthodes d\'authentification et de négociation.'; $string['auth_ldap_bind_dn'] = 'Si vous souhaitez utiliser une connexion authentifiée au serveur LDAP pour chercher les utilisateurs, indiquez ici son nom de connexion. Quelque chose comme : « cn=ldapuser, o=Organisation, c=FR ».'; $string['auth_ldap_bind_pw'] = 'Mot de passe pour cette connexion'; -$string['auth_ldap_bind_settings'] = 'Configuration du lien'; -$string['auth_ldap_contexts'] = 'Liste des contextes de l\'annuaire LDAP, séparés par « ; », où les enregistrements des utilisateurs sont situés. Par exemple : « ou=Étudiants, o=Organisation, c=FR; ou=Enseignants, o=Organisation, c=FR ».'; -$string['auth_ldap_create_context'] = 'Lors de l\'utilisation de la création d\'utilisateurs avec confirmation par courriel, indiquer ici le contexte où créer les utilisateurs. Pour des raisons de sécurité, ce contexte ne doit pas être le même que celui des autres utilisateurs. Il n\'est pas nécessaire d\'ajouter ce contexte à la variable ldap_context. Moodle cherchera automatiquement les utilisateurs dans ce contexte.
          Remarque : vous devrez modifier la fonction auth_user_create() dans le fichier auth/ldap/lib.php pour permettre la création des utilisateurs.'; -$string['auth_ldap_creators'] = 'Liste des groupes dont les membres ont le droit de créer des cours. Les groupes (en général, de la forme « cn=teachers,ou=staff,o=myorg ») sont séparés par des points-virgules (;).'; -$string['auth_ldap_expiration_desc'] = 'Si vous voulez désactiver le contrôle d\'échéance des mots de passe, indiquez « Non ». Si vous indiquez LDAP, la durée sera reprise automatiquement de la variable passwordexpiration du serveur LDAP'; -$string['auth_ldap_expiration_warning_desc'] = 'Nombre de jours avant que l\'avertissement d\'échéance soit affiché.'; -$string['auth_ldap_expireattr_desc'] = 'Facultatif : ne pas tenir compte de l\'attribut ldap contenant la durée d\'échéance du mot de passe PasswordExpirationTime'; -$string['auth_ldap_graceattr_desc'] = 'Facultatif : ne pas tenir compte de l\'attribut gracelogin'; -$string['auth_ldap_gracelogins_desc'] = 'Activer le support du gracelogin LDAP. Une fois le mot de passe échu, l\'utilisateur peut se connecter jusqu\'à ce que le paramètre gracelogin ait une valeur de 0. L\'activation de ce réglage affiche un message explicite lorsque le mot de passe est échu.'; -$string['auth_ldap_host_url'] = 'Indiquer le serveur LDAP sous forme d\'URL comme ceci :
          « ldap://ldap.organisation.fr/ »
          ou :
          « ldaps://ldap.organisation.fr/ ». Si vous utilisez plusieurs serveurs LDAP par sécurité, séparez leurs adresses avec des points-virgules (;).'; -$string['auth_ldap_login_settings'] = 'Configuration de la connexion'; +$string['auth_ldap_contexts'] = 'Liste des noeuds de l\'annuaire LDAP, séparés par « ; », où les enregistrements des utilisateurs sont situés. Par exemple : « ou=Étudiants, o=Organisation, c=FR; ou=Enseignants, o=Organisation, c=FR ».'; +$string['auth_ldap_create_context'] = 'Lors de l\'utilisation de la création d\'utilisateurs avec confirmation par courriel, indiquer ici le noeud où créer les utilisateurs. Pour des raisons de sécurité, ce noeud ne doit pas être le même que celui des autres utilisateurs. Il n\'est pas nécessaire d\'ajouter ce noeud à la variable ldap_context. Moodle cherchera automatiquement les utilisateurs dans ce noeud.'; +$string['auth_ldap_creators'] = 'Liste des groupes dont les membres ont le droit de créer des cours. Les groupes (en général, de la forme « cn=teachers,ou=staff,o=myorg ») sont séparés par des « ; ».'; +$string['auth_ldap_host_url'] = 'Indiquer le serveur LDAP sous form d\'URL comme ceci :
          « ldap://ldap.organisation.fr/ »
          ou :
          « ldaps://ldap.organisation.fr/ »'; $string['auth_ldap_memberattribute'] = 'Indiquer l\'attribut d\'appartenance à un groupe. D\'habitude cet attribut est « member ».'; -$string['auth_ldap_objectclass'] = 'Le filtre utilisé pour rechercher/renommer des utilisateurs. On y mettra d\'habitude quelque chose comme objectClass=posixAccount. La valeur par défaut est objectClass=*, ce qui retournera tous les objets du serveur LDAP.'; -$string['auth_ldap_opt_deref'] = 'Détermine le traitement des alias durant la recherche. Veuillez sélectionner une des valeurs suivantes : « Non » (LDAP_DEREF_NEVER) ou « Oui » (LDAP_DEREF_ALWAYS)'; -$string['auth_ldap_passwdexpire_settings'] = 'Réglages de l\'échéance du mot de passe LDAP.'; -$string['auth_ldap_search_sub'] = 'Mettre une valeur différente de 0 pour rechercher les enregistrements dans les sous-contextes.'; -$string['auth_ldap_server_settings'] = 'Configuration du serveur LDAP'; +$string['auth_ldap_objectclass'] = 'Le filtre utilisé pour rechercher/renommer des utilisateurs. On y mettra d\'habitude quelque chose comme objectClass=posixAccount. La valeur par défaut est objectClass=*, ce que retournera tous les objets du serveur LDAP.'; +$string['auth_ldap_search_sub'] = 'Mettre une valeur différente de 0 pour rechercher les enregistrements dans les sous-noeuds.'; $string['auth_ldap_update_userinfo'] = 'Mettre à jour les données des utilisateurs (prénom, nom, adresse, etc.) de Moodle depuis l\'annuaire LDAP. Lire « /auth/ldap/attr_mappings.php » pour avoir des informations sur la correspondance.'; $string['auth_ldap_user_attribute'] = 'L\'attribut utilisé pour nommer et rechercher les utilisateurs. Habituellement « cn ».'; -$string['auth_ldap_user_settings'] = 'Configuration de la consultation utilisateurs'; -$string['auth_ldap_user_type'] = 'Indiquer comment les utilisateurs sont enregistrés dans LDAP. Ce réglage permet également d\'indiquer comment l\'échéance des comptes (mot de passe) et la création des utilisateurs fonctionnera.'; $string['auth_ldap_version'] = 'La version du protocole LDAP que votre serveur utilise.'; $string['auth_ldapdescription'] = 'Cette méthode permet l\'authentification auprès d\'un annuaire LDAP externe. Si les nom d\'utilisateur et mot de passe sont corrects, Moodle créera un nouvel enregistrement pour cet utilisateur dans sa base de données. Ce module peut récupérer les attributs de l\'enregistrement LDAP de l\'utilisateur afin de remplir certains champs dans Moodle. Lors des connexions suivantes, seuls les nom d\'utilisateur et mot de passe sont vérifiés.'; -$string['auth_ldapextrafields'] = '

          Ces zones sont facultatives. Il vous est possible de remplir certains champs de Moodle avec des données provenant des attributs de l\'annuaire LDAP.

          Si vous laissez ces zones vides, aucune donnée ne sera récupérée de l\'annuaire LDAP et les valeurs par défaut de Moodle seront utilisées.

          Dans tous les cas, l\'utilisateur a la possibilité de modifier tous ces champs, une fois connecté.

          '; +$string['auth_ldapextrafields'] = 'Ces zones sont facultatives. Il vous est possible de remplir certains champs de Moodle avec des données provenant des attributs de l\'annuaire LDAP.

          Si vous laissez ces zones vides, aucune donnée ne sera récupérée de l\'annuaire LDAP et les valeurs par défaut de Moodle seront utilisées.

          Dans tous les cas, l\'utilisateur a la possibilité de modifier tous ces champs, une fois connecté.'; $string['auth_ldaptitle'] = 'Utiliser un serveur LDAP'; $string['auth_manualdescription'] = 'Cette méthode supprime pour les utilisateurs le droit de créer eux-mêmes leur compte. Tous les comptes doivent être créés par l\'administrateur.'; $string['auth_manualtitle'] = 'Création manuelle de comptes'; -$string['auth_multiplehosts'] = 'Vous pouvez indiquer ici plusieurs hôtes ou adresses IP (par exemple host1.com;host2.com;host3.com ou 192.168.1.100;172.23.92.1)'; +$string['auth_multiplehosts'] = 'Vous pouvez indiquer ici plusieurs hôtes ou adresses SMTP (par exemple host1.com;host2.com;host3.com ou 192.168.1.100;172.23.92.1)'; $string['auth_nntpdescription'] = 'Cette méthode utilise un serveur NNTP pour vérifier qu\'un nom d\'utilisateur et son mot de passe sont valides.'; $string['auth_nntphost'] = 'L\'adresse du serveur NNTP. Utiliser l\'adresse IP et non le nom de la machine.'; $string['auth_nntpport'] = 'Numéro de port du serveur NNTP. Il s\'agit généralement de 119.'; $string['auth_nntptitle'] = 'Utiliser un serveur NNTP'; $string['auth_nonedescription'] = 'Les utilisateurs peuvent s\'enregistrer et créer des comptes valides immédiatement sans aucune authentification ni confirmation par courriel. Attention ! Lors de l\'utilisation de cette méthode, bien penser à toutes les implications (problèmes d\'administration et sécurité).'; $string['auth_nonetitle'] = 'Pas d\'authentification'; -$string['auth_pamdescription'] = 'Cette méthode utilise PAM pour accéder aux noms d\'utilisateurs natifs sur ce serveur. Pour utiliser ce module, vous devrez installer le logiciel PHP4 PAM Authentication.'; -$string['auth_pamtitle'] = 'PAM (Modules d\'authentification installables)'; -$string['auth_passwordwillexpire'] = 'Votre mot de passe arrivera à échéance dans $a jours. Voulez-vous changer votre mot de passe maintenant ?'; -$string['auth_passwordisexpired'] = 'Votre mot de passe est échu. Voulez-vous le changer maintenant ?'; $string['auth_pop3description'] = 'Cette méthode utilise un serveur POP3 pour vérifier qu\'un nom d\'utilisateur et son mot de passe sont valides.'; $string['auth_pop3host'] = 'L\'adresse du serveur POP3. Utiliser l\'adresse IP et non le nom de la machine.'; -$string['auth_pop3mailbox'] = 'Nom de la boîte aux lettres vers laquelle tenter la connexion, d\'habitude « INBOX ».'; +$string['auth_pop3mailbox'] = 'Nom de la boîte aux lettres vers laquelle tenter la connexion, d\'habitude « INBOX ».'; $string['auth_pop3port'] = 'Numéro de port du serveur POP3. Il s\'agit habituellement du port 110, et lors de l\'utilisation de SSL du port 995.'; $string['auth_pop3title'] = 'Utiliser un serveur POP3'; $string['auth_pop3type'] = 'Type de serveur. Si le serveur POP3 utilise « certificate security », choisir « pop3cert ».'; -$string['auth_shibbolethdescription'] = 'Cette méthode permet de se connecter à un serveur Shibboleth pour vérifier et créer de nouveaux comptes'; -$string['auth_shibbolethtitle'] = 'Shibboleth'; -$string['auth_updatelocal_expl'] = '

          Mise à jour des données locales : lorsque cette option est activée, le champ est mis à jour (depuis la source externe) chaque fois que l\'utilisateur se connecte ou qu\'une synchronisation a lieu. Les champs destinés à être mis à jour ainsi devraient être verrouillés.

          '; -$string['auth_updatelocal'] = 'Mise à jour des données locales'; -$string['auth_updateremote_expl'] = '

          Mise à jour des données externes : lorsque cette option est activée, la source d\'authentification externe est mise à jour chaque fois que les données de l\'utilisateur le sont. Pour permettre leur modification, les champs devraient être déverrouillés.

          '; -$string['auth_updateremote_ldap'] = '

          Remarque : la mise à jour externe des données LDAP nécessite de fixer pour tous les enregistrements les valeurs binddn et bindpw à un utilisateur-lien avec des privilèges de modification. Elle ne conserve pas les attributs à plusieurs valeurs et supprimera les valeurs en trop lors des mises à jour.

          '; -$string['auth_updateremote'] = 'Mise à jour des données externes'; $string['auth_user_create'] = 'Activer la création des utilisateurs'; $string['auth_user_creation'] = 'Les nouveaux utilisateurs (anonymes) peuvent créer des comptes sur la source d\'authentification externe, avec confirmation par courriel. Ne pas oublier de configurer les éventuelles options dans les différents modules lors de l\'activation de cette possibilité.'; $string['auth_usernameexists'] = 'Ce nom d\'utilisateur existe déjà. Veuillez en choisir un autre.'; $string['authenticationoptions'] = 'Options d\'authentification'; $string['authinstructions'] = 'Il vous est possible de fournir ici des instructions à vos utilisateurs afin qu\'ils sachent quels nom d\'utilisateur et mot de passe utiliser. Ce texte apparaîtra sur la page de connexion. Si vous laissez cette zone vide, aucune instruction ne sera affichée.'; -$string['changepassword'] = 'URL de la page de changement du mot de passe'; +$string['changepassword'] = 'URL changer de mot de passe'; $string['changepasswordhelp'] = 'Vous pouvez indiquer dans cette zone l\'URL d\'une page sur laquelle vos utilisateurs pourront récupérer ou changer leurs nom d\'utilisateur et mot de passe s\'ils les ont oubliés. Cette URL sera disponible sous forme d\'un bouton sur la page de connexion. Si cette zone est vide, ce bouton ne sera pas affiché.'; $string['chooseauthmethod'] = 'Choisir une méthode d\'authentification'; -$string['forcechangepasswordfirst_help'] = 'Impose aux utilisateurs de changer leur mot de passe lors de leur prochaine connexion à Moodle.'; -$string['forcechangepassword_help'] = 'Impose aux utilisateurs de changer leur mot de passe lors de leur première connexion à Moodle.'; -$string['forcechangepassword'] = 'Imposer le changement du mot de passe'; $string['guestloginbutton'] = 'Bouton de connexion anonyme'; $string['instructions'] = 'Instructions'; $string['md5'] = 'Cryptage MD5'; $string['plaintext'] = 'Texte en clair'; $string['showguestlogin'] = 'Vous pouvez choisir d\'afficher ou non le bouton de connexion en tant qu\'utilisateur anonyme sur la page de connexion.'; -$string['stdchangepassword_expl'] = 'Si la source d\'authentification externe permet le changement de mot de passe par l\'intermédaire de Moodle, mettez cette réglage sur « Oui ». Ce réglage rend obsolète le réglage « URL de la page de changement du mot de passe ».'; -$string['stdchangepassword_explldap'] = 'Remarque : il est recommandé d\'utiliser LDAP à travers un tunnel chiffré SSL (ldaps://) si le serveur LDAP n\'est pas dans un intranet.'; -$string['stdchangepassword'] = 'Utiliser la page de changement de mot de passe standard'; ?> diff --git a/lang/fr/block_course_list.php b/lang/fr/block_course_list.php index b2436bbea93..b90048fffc4 100644 --- a/lang/fr/block_course_list.php +++ b/lang/fr/block_course_list.php @@ -1,8 +1,8 @@ - diff --git a/lang/fr/block_course_summary.php b/lang/fr/block_course_summary.php index 5860c6c8d9b..40347f2fdb4 100644 --- a/lang/fr/block_course_summary.php +++ b/lang/fr/block_course_summary.php @@ -1,6 +1,6 @@ \ No newline at end of file diff --git a/lang/fr/block_glossary_random.php b/lang/fr/block_glossary_random.php deleted file mode 100644 index f83c2aeb1e9..00000000000 --- a/lang/fr/block_glossary_random.php +++ /dev/null @@ -1,25 +0,0 @@ -Dernier article modifié
          affiche systématiquement le dernier article modifié, tandis que l\'option Article aléatoire affiche à chaque fois un nouvel article. L\'option Article suivant passe en revue les différents articles du glossaire dans l\'ordre. Cette dernière option est particulièrement utile si un nombre de jours est aussi splécifié, vous permettant par exemple de mettre en place pour vos visiteurs une Citation de la semaine ou une Astuce du jour.'; -$string['viewglossary'] = 'Plus de citations...'; -$string['whichfooter'] = 'Vous pouvez afficher des liens vers des actions du glossaire auquel ce bloc est associé. Le bloc n\'affichera que les liens vers des actions activées dans ce glossaire.'; - -?> \ No newline at end of file diff --git a/lang/fr/block_html.php b/lang/fr/block_html.php deleted file mode 100755 index 9c6e10a216e..00000000000 --- a/lang/fr/block_html.php +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/lang/fr/block_online_users.php b/lang/fr/block_online_users.php index 8a25e6004cb..d101c5932aa 100644 --- a/lang/fr/block_online_users.php +++ b/lang/fr/block_online_users.php @@ -2,6 +2,6 @@ $string['blockname'] = 'Utilisateurs en ligne'; $string['periodnminutes'] = '$a dernières minutes'; -$string['configtimetosee'] = 'Nombre de minutes déterminant la période d\'inactivité après laquelle un utilisateur n\'est plus considéré comme étant en ligne.'; +$string['configtimetosee'] = 'Un utilisateur est détecté comme en ligne s\'il est actif durant ce nombre de minutes'; ?> \ No newline at end of file diff --git a/lang/fr/block_quiz_results.php b/lang/fr/block_quiz_results.php deleted file mode 100644 index 3c4c00cfd28..00000000000 --- a/lang/fr/block_quiz_results.php +++ /dev/null @@ -1,26 +0,0 @@ - \ No newline at end of file diff --git a/lang/fr/block_rss_client.php b/lang/fr/block_rss_client.php index 8169e181898..442285f960e 100755 --- a/lang/fr/block_rss_client.php +++ b/lang/fr/block_rss_client.php @@ -3,24 +3,17 @@ $string['block_rss_feeds_title'] = 'Fils RSS distants'; $string['block_rss_feeds_add_edit'] = 'Ajouter/modifier des fils RSS'; $string['block_rss_remote_news_feed'] = 'Fils de nouvelles RSS distants'; -$string['block_rss_feed_updated'] = 'Fil RSS mis à jour'; -$string['block_rss_feed_added'] = 'Fil RSS ajouté'; -$string['block_rss_update_feed'] = 'Modifier l\'URL d\'un fil URL : '; -$string['block_rss_add_feed'] = 'Ajouter l\'URL d\'un fil URL : '; -$string['block_rss_feed_deleted'] = 'Fil RSS supprimé'; +$string['block_rss_feed_updated'] = 'Fil RSS mis ˆ jour'; +$string['block_rss_feed_added'] = 'Fil RSS ajoutŽ'; +$string['block_rss_feed_deleted'] = 'Fil RSS supprimŽ'; -$string['block_rss_client_num_entries'] = 'Nombre par défaut d\'articles RSS à afficher par bloc.'; -$string['block_rss_submitters'] = 'Qui aura l\'autorisation de définir de nouveaux fils RSS ? Les fils RSS définis sont disponibles sur toutes les pages de votre site.'; -$string['block_rss_choose_feed_label'] = 'Choisir les fils RSS que vous désirez rendre disponibles dans ce bloc :'; -$string['block_rss_client_show_channel_link_label'] = 'Un lien vers le site original doit-il être affiché ? (Si aucun lien n\'est fourni dans le fil, aucun lien ne sera affiché) :'; -$string['block_rss_client_show_image_label'] = 'Afficher l\'image du site si disponible :'; -$string['block_rss_client_channel_link'] = 'Site d\'origine...'; -$string['block_rss_custom_title_label'] = 'Title personnalisé (laisser vide pour utiliser le titre fourné par le fil) :'; -$string['validate_feed'] = 'Valider le fil'; -$string['block_rss_no_feeds'] = 'Il n\'y a pas de fil RSS défini sur ce site.'; +$string['block_rss_num_entries'] = 'Nombre d\'articles RSS ˆ afficher par bloc.'; +$string['block_rss_submitters'] = 'Qui peut dŽfinir de nouveaux fils RSS ? Les fils RSS sont mis ˆ la disposition des membres de votre site, pour leur permettre de les ajouter ˆ leurs propres pages.'; +$string['block_rss_choose_feed'] = 'SŽlectionner un fil RSS ˆ afficher dans ce bloc :'; +$string['block_rss_no_feeds'] = 'Il n\'y a pas de fil RSS dŽfini sur ce site.'; $string['block_rss_edit_news_feeds'] = 'Modifier les fils de nouvelles RSS'; -$string['block_rss_shownumentries_label'] = 'Nombre maximum d\'articles à afficher par bloc.'; -$string['block_rss_display_description_label'] = 'Afficher la description de chaque lien ?'; +$string['block_rss_shownumentries'] = 'Nombre maximum d\'articles ˆ afficher par bloc.'; +$string['block_rss_display_description'] = 'Afficher la description de chaque lien ?'; $string['block_rss_could_not_find_feed'] = 'Impossible de trouver le fil RSS d\'identifiant'; $string['block_rss_feed'] = 'Fil RSS'; @@ -28,15 +21,16 @@ $string['block_rss_find_more_feeds'] = 'Rechercher d\'autres fils RSS'; $string['block_rss_delete_feed_confirm'] = 'Voulez-vous vraiment supprimer ce fil RSS ?'; $string['block_rss_timeout'] = 'block_rss_timeout'; -$string['block_rss_timeout_desc'] = 'Durée de vie en cache d\'un fil RSS (en minutes).'; +$string['block_rss_timeout_desc'] = 'DurŽe de vie en cache d\'un fil RSS (en minutes).'; $string['block_rss_add_headline_block'] = 'Ajouter un bloc manchette RSS'; $string['block_rss_pick_feed'] = 'Choisir un fil RSS'; $string['block_rss_feeds'] = 'Fils RSS'; $string['block_rss_feed'] = 'Fil RSS'; -$string['block_rss_edit_feeds'] = 'Modifier, s\'abonner ou se désabonner d\'un fil RSS/'; +$string['block_rss_edit_feeds'] = 'Modifier, s\'abonner ou se dŽsabonner d\'un fil RSS/'; $string['block_rss_see_all_feeds'] = 'Afficher tous les fils RSS'; $string['block_rss_edit_rss_block'] = 'Modifier le bloc manchette RSS'; $string['block_rss_add_new'] = 'Ajouter nouveau'; +$string['block_rss_word_title'] = 'Titre'; ?> \ No newline at end of file diff --git a/lang/fr/calendar.php b/lang/fr/calendar.php index d5d10272197..a82fa928978 100644 --- a/lang/fr/calendar.php +++ b/lang/fr/calendar.php @@ -36,7 +36,6 @@ $string['eventview'] = 'D $string['expired'] = 'Échu'; $string['explain_lookahead'] = 'Ce réglage définit combien de temps (en jours) avant le début effectif d\'un événement celui-ci doit être affiché comme prochain événement. Les événements qui commencent après ce délai ne seront pas affichés. Il n\'y a aucune garantie que tous les événements dans cette durée soient affichés. S\'il y en a trop (c\'est-à-dire plus que le nombre défini par le réglage « Nombre maximal de prochains événements »), les événements les plus tardifs ne seront pas affichés.'; $string['explain_maxevents'] = 'Ce réglage définit le nombre maximal de prochains événements qui seront affichés. Si vous mettez ici un grand nombre, l\'affichage ne sera pas optimal.'; -$string['explain_persistflt'] = 'Si cette option est activée, Moodle se rappellera vos derniers réglages des filtres d\'événements et les mettra en vigueur automatiquement à chacune de vos connexions.'; $string['explain_startwday'] = 'Ce réglage définit la façon dont les calendriers mensuels sont affichés. Utilisez-le pour choisir votre disposition préférée.'; $string['explain_timeformat'] = 'Ce réglage définit l\'affichage des heures dans le calendrier. Vous pouvez choisir le format 12 heures ou 24 heures. Si vous choisissez « Valeur par dÈfaut », le format sera celui défini par la langue que vous utilisez dans le site.'; $string['globalevents'] = 'Événements globaux'; @@ -50,7 +49,6 @@ $string['noupcomingevents'] = 'Il n\'y a pas de prochain $string['oneevent'] = '1 événement'; $string['pref_lookahead'] = 'Anticipation des prochains événements'; $string['pref_maxevents'] = 'Nombre maximal de prochains événements'; -$string['pref_persistflt'] = 'Enregistrer les réglages des filtres'; $string['pref_startwday'] = 'Premier jour de la semaine'; $string['pref_timeformat'] = 'Format d\'affichage des heures'; $string['preferences'] = 'Réglages'; @@ -82,13 +80,13 @@ $string['upcomingevents'] = 'Prochains $string['userevents'] = 'Événements privés'; $string['yesterday'] = 'Hier'; -$string['sun'] = 'Di'; -$string['mon'] = 'Lu'; -$string['tue'] = 'Ma'; -$string['wed'] = 'Me'; -$string['thu'] = 'Je'; -$string['fri'] = 'Ve'; -$string['sat'] = 'Sa'; +$string['sun'] = 'Dim'; +$string['mon'] = 'Lun'; +$string['tue'] = 'Mar'; +$string['wed'] = 'Mer'; +$string['thu'] = 'Jeu'; +$string['fri'] = 'Ven'; +$string['sat'] = 'Sam'; $string['sunday'] = 'Dimanche'; $string['monday'] = 'Lundi'; $string['tuesday'] = 'Mardi'; @@ -97,4 +95,4 @@ $string['thursday'] = 'Jeudi'; $string['friday'] = 'Vendredi'; $string['saturday'] = 'Samedi'; -?> \ No newline at end of file +?> diff --git a/lang/fr/chat.php b/lang/fr/chat.php index 157d2874878..ccac103c4a2 100644 --- a/lang/fr/chat.php +++ b/lang/fr/chat.php @@ -6,7 +6,7 @@ $string['chatname'] = 'Nom de ce salon'; $string['chatreport'] = 'Sessions de chat'; $string['chattime'] = 'Prochaine session'; $string['configmethod'] = 'Avec la méthode normale du chat, le navigateur contacte régulièrement le serveur pour rafraîchir l\'affichage. Aucune configuration n\'est nécessaire et ça fonctionne partout. En revanche, cela induit une charge importante du serveur, notamment s\'il y a de nombreux participants au chat. L\'utilisation d\'un « démon » sur le serveur nécessite l\'accès à l\'environnement de commande Unix, mais offre en contrepartie un chat rapide et extensible.'; -$string['configoldping'] = 'Quel durée maximale (en secondes) doit s\'écouler avant de vérifier si un utilisateur s\'est déconnecté ? Il s\'agit d\'une limite supérieure, car d\'habitude les déconnexions sont détectées très rapidement. Une courte durée chargera plus votre serveur. Si vous utilisez la méthode standard de chat, ne fixez jamais cette valeur à moins de 2 * chat_refresh_room.'; +$string['configoldping'] = 'Combien de temps après sa dernière intervention un utilisateur doit-il être considéré comme parti ?'; $string['configrefreshroom'] = 'Fréquence de rafraichissement du salon (en secondes) ? Une valeur basse donnera une impression de rapidité, mais surchargera votre serveur web lorsque beaucoup de monde utilisera le chat.'; $string['configrefreshuserlist'] = 'Fréquence de rafraichissement de la liste des utilisateurs (en secondes)'; $string['configserverhost'] = 'Le nom de l\'ordinateur (hostname) sur lequel tourne le démon'; @@ -20,10 +20,6 @@ $string['deletesessionsure'] = ' $string['donotusechattime'] = 'Ne pas publier les horaires de chat'; $string['enterchat'] = 'Cliquer ici pour participer au chat'; $string['errornousers'] = 'Aucun utilisateur trouvé !'; -$string['explaingeneralconfig'] = 'Ces réglages sont toujours effectifs'; -$string['explainmethoddaemon'] = 'Ces réglages sont effectifs uniquement si vous avez choisi la méthode de chat « Utilisation d\'un démon »'; -$string['explainmethodnormal'] = 'Ces réglages sont effectifs uniquement si vous avez choisi la méthode de chat « Méthode normale »'; -$string['generalconfig'] = 'Configuration générale'; $string['helpchatting'] = 'Aide pour le chat'; $string['idle'] = 'En attente'; $string['messagebeepseveryone'] = '$a appelle tout le monde !'; diff --git a/lang/fr/choice.php b/lang/fr/choice.php index eb90253b67d..531ec1b7095 100644 --- a/lang/fr/choice.php +++ b/lang/fr/choice.php @@ -1,20 +1,13 @@ diff --git a/lang/fr/dialogue.php b/lang/fr/dialogue.php index bcd09eabc27..3c6a7cd7475 100644 --- a/lang/fr/dialogue.php +++ b/lang/fr/dialogue.php @@ -16,7 +16,7 @@ $string['dialoguemail'] = '$a->userfrom a Vous pouvez lire cette contribution à la suite de la vôtre : $a->url'; -$string['dialoguemailhtml'] = '$a->userfrom a écrit une nouvelle contribution dans votre dialogue « $a->dialogue »

          Vous pouvez lire cette contribution à la suite de url\">la vôtre.'; +$string['dialoguemailhtml'] = '$a->userfrom a écrit une nouvelle contribution dans votre dialogue « $a->dialogue »

          Vous pouvez lire cette contribution à la suite de url\">la vôtre.'; $string['dialoguename'] = 'Nom du dialogue'; $string['dialogueopened'] = 'Dialogue ouvert avec $a'; $string['dialoguewith'] = 'Dialogue avec $a'; @@ -24,7 +24,6 @@ $string['everybody'] = 'Tout le monde'; $string['furtherinformation'] = 'Informations générales'; $string['lastentry'] = 'Dernière contribution'; $string['maildefault'] = 'Envoyer par défaut les courriels'; -$string['mailnotification'] = 'Notification par courriel'; $string['modulename'] = 'Dialogue'; $string['modulenameplural'] = 'Dialogues'; $string['namehascloseddialogue'] = '$a a terminé le dialogue'; diff --git a/lang/fr/docs/background.html b/lang/fr/docs/background.html index 2b0d0b81923..ea7c7c8e2d5 100644 --- a/lang/fr/docs/background.html +++ b/lang/fr/docs/background.html @@ -1,12 +1,11 @@ - - + + Documentation Moodle : Contexte - - + + - +

          Contexte

          diff --git a/lang/fr/docs/coding.html b/lang/fr/docs/coding.html index c0e2c2cbbdf..769f0d70448 100755 --- a/lang/fr/docs/coding.html +++ b/lang/fr/docs/coding.html @@ -1,13 +1,11 @@ - - + Documentation Moodle : Directives pour la programmation - - + + - +

          Directives pour la programmation

          @@ -195,7 +193,7 @@
        -
        +

        Documentation Moodle

        Version: $Id$

        diff --git a/lang/fr/docs/cvs.html b/lang/fr/docs/cvs.html index 1eff339a65c..bc250b4fd97 100644 --- a/lang/fr/docs/cvs.html +++ b/lang/fr/docs/cvs.html @@ -1,359 +1,265 @@ - - + Documentation Moodle : Comment utiliser CVS ? - - + + - - +

        CVS pour les développeurs de Moodle

        -
        +

        + CVS est un acronyme pour désigner le « Concurrent Versioning System », une façon pratique et très répandue de stoquer le code source de projets informatiques. Un CVS conserve toutes les versions de tous les fichiers, de sorte qu'aucune donnée n'est jamais perdue, et que les traces de l'utilisation par les différentes personnes sont conservées. Le système offre en outre la possibilité de fusionner le code si plusieurs personnes travaillent sur un même fichier. Tout le code et toutes les versions sont enregistrées sur un serveur central (dans le cas de Moodle, sur Sourceforge). +

        +

        + Si vous désirez simplement télécharger par CVS la version actuelle de Moodle pour lancer un site, vous n'avez pas besoin de cette page. Il vous suffit de suivre les instructions (plus simples) pour télécharger Moodle par CVS sur la page Téléchargement de Moodle. +

        -

        CVS est un acronyme pour désigner le « Concurrent Versioning System », une façon pratique et très répandue de stoquer le code source de projets informatiques. Un CVS conserve toutes les versions de tous les fichiers, de sorte qu'aucune donnée n'est jamais perdue, et que les traces de l'utilisation par les différentes personnes sont conservées. Le système offre en outre la possibilité de fusionner le code si plusieurs personnes travaillent sur un même fichier. Tout le code et toutes les versions sont enregistrées sur un serveur central (dans le cas de Moodle, sur Sourceforge).

        - -

        Si vous désirez simplement télécharger par CVS la version actuelle de Moodle pour lancer un site, vous n'avez pas besoin de cette page. Il vous suffit de suivre les instructions (plus simples) pour télécharger Moodle par CVS sur la page Téléchargement de Moodle.

        - -

        Thèmes de ce document

        - +

        Thèmes de ce document

          - -
        1. Rejoindre le projet en tant que développeur
        2. - -
        3. Modules CVS
        4. - -
        5. Commandes CVS de base
          - - 3.1. CVS sur Unix ou Mac OS X
          - 3.2. CVS sous Windows - +
        6. + Rejoindre le projet en tant que développeur
        7. - -
        8. Travailler avec des branches
          - - 4.1. Développement du tronc
          - - 4.2. Branches stables pour chaque version
          - - 4.3. Branches particulières pour tout changement important - +
        9. + Modules CVS +
        10. +
        11. + Commandes CVS de base +
          + 3.1. CVS sur Unix ou Mac OS X +
          + 3.2. CVS sous Windows +
        12. +
        13. + Travailler avec des branches +
          + 4.1. Développement du tronc +
          + 4.2. Branches stables pour chaque version +
          + 4.3. Branches particulières pour tout changement important
        - -

         

        - -

        1. Rejoindre le projet en tant que développeur

        - +

        +   +

        +

        1. Rejoindre le projet en tant que développeur

        -

        On vient de vous proposer un accès en écriture au CVS pour vous permettre de nous aider à développer et à maintenir Moodle ? Bienvenue au club !

        - -

        Pour avoir l'autorisation d'écrire dans l'archive CVS de Moodle, il vous faut avant tout un compte sur Sourceforge (l'enregistrement est simple et gratuit). Nous admettrons pour les exemples de ce texte que votre nom d'utilisateur chez Sourceforge est myusername et que votre mot de passe est mypassword. Lisez attentivement les instructions de Sourceforge (en anglais) pour créer votre dossier CVS initial (home directory) — une procédure que vous devez faire pour chaque nouveau dossier en vue de l'utiliser avec le CVS. Il s'agit simplement de vous connecter à l'adresse cvs.sourceforge.net via le protocole SSH.

        - -

        Dès que votre compte Sourceforge est actif, contactez Martin Dougiamas pour qu'il puisse vous donner les droits en écriture sur certains dossiers de Moodle.

        - -

        Pour éviter de devoir taper mypassword chaque fois que vous lancez une commande CVS, suivez les instructions de Sourceforge pour l'utilisation de clefs d'autorisation (en anglais). Cette étape n'est pas obligatoire, mais elle rend votre travail avec CVS bien plus agréable et productive.

        - -

        Une fois cela fait, vous devriez avoir toutes les autorisations nécessaires, et vous pouvez configurer votre machine et télécharger les sources actuelles pour y travailler.

        - +

        Pour avoir l'autorisation d'écrire dans l'archive CVS de Moodle, il vous faut avant tout un compte sur Sourceforge (l'enregistrement est simple et gratuit). Nous admettrons pour les exemples de ce texte que votre nom d'utilisateur chez Sourceforge est myusername et que votre mot de passe est mypassword. Lisez attentivement les instructions de Sourceforge (en anglais) pour créer votre dossier CVS initial (home directory) — une procédure que vous devez faire pour chaque nouveau dossier en vue de l'utiliser avec le CVS. Il s'agit simplement de vous connecter à l'adresse cvs.sourceforge.net via le protocole SSH. +

        +

        + Dès que votre compte Sourceforge est actif, contactez Martin Dougiamas pour qu'il puisse vous donner les droits en écriture sur certains dossiers de Moodle. +

        +

        + Pour éviter de devoir taper mypassword chaque fois que vous lancez une commande CVS, suivez les instructions de Sourceforge pour l'utilisation de clefs d'autorisation (en anglais). Cette étape n'est pas obligatoire, mais elle rend votre travail avec CVS bien plus agréable et productive. +

        +

        + Une fois cela fait, vous devriez avoir toutes les autorisations nécessaires, et vous pouvez configurer votre machine et télécharger les sources actuelles pour y travailler. +

         

        -
        - -

        2. Modules CVS

        - +

        2. Modules CVS

        - -

        Dans le jargon de CVS, les « Module » sont des collections séparées de code. Moodle possède les modules suivants :

        - +

        + Dans le jargon de CVS, les « Module » sont des collections séparées de code. Moodle possède les modules suivants : +

        -

        moodle : le code source pricipal de Moodle

        -

        contrib : les contributions d'utilisateurs et du code en développement

        -

        mysql : un phpMyAdmin adapté pour l'administration de la base de données dans Moodle

        -

        windows-cron : un petit programme rendant possible l'exécution de crons sous Windows

        -

        docs : diverses documentations supplémentaires mises à disposition par des utilisateurs

        -
        - -

        La plupart des développeurs travaillent sur des fonctionnalités existantes dans le module moodle, mais beaucoup proposent aussi de nouvelles idées dans le module contrib. Lorsque du code atteint un certain niveau de maturité dans la zone contrib, il peut être déplacé dans le module principal moodle.

        - +

        La plupart des développeurs travaillent sur des fonctionnalités existantes dans le module moodle, mais beaucoup proposent aussi de nouvelles idées dans le module contrib. Lorsque du code atteint un certain niveau de maturité dans la zone contrib, il peut être déplacé dans le module principal moodle. +

         

        -
        - -

        3. Commandes CVS de base

        - +

        3. Commandes CVS de base

        - -

        3.1 CVS sur Unix ou Mac OS X

        - +

        3.1 CVS sur Unix ou Mac OS X

        - -

        Le CVS de Sourceforge utilise SSH comme couche de transport pour la sécurité. Vous devrez donc configurer la variable d'environnement CVS_RSH dans votre « shell » comme ci-dessous. Le mieux est de placer cette commande dans votre .bashrc ou .cshrc afin que vous n'ayez pas à la retaper tout le temps :

        - +

        + Le CVS de Sourceforge utilise SSH comme couche de transport pour la sécurité. Vous devrez donc configurer la variable d'environnement CVS_RSH dans votre « shell » comme ci-dessous. Le mieux est de placer cette commande dans votre .bashrc ou .cshrc afin que vous n'ayez pas à la retaper tout le temps : +

        setenv CVS_RSH ssh (pour csh, tcsh, etc.)
        export CVS_RSH=ssh (pour sh, bash, etc.)
        - -

        Ensuite, vous devrez effectuer un « check out » de Moodle avec la commande ci-dessous (sur une seule ligne) :

        - +

        + Ensuite, vous devrez effectuer un « check out » de Moodle avec la commande ci-dessous (sur une seule ligne) : +

        cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co moodle
        - -

        La commande est similaire pour d'autres modules :

        - +

        + La commande est similaire pour d'autres modules : +

        cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co contrib
        - -

        Ne tentez pas de lancer cette première commande CVS dans une installation de Moodle préexistante. Commencez avec un nouveau dossier vide.

        - -

        Vous devrez taper mypassword pour chaque commande, à moins que vous ne mettiez en place des clefs autorisées.

        - -

        À ce stade, vous devriez avoir un nouveau dossier « moodle ». Vous pouvez changer son nom et le déplacer à votre convenance. Placez-vous dans ce dossier :

        - +

        + Ne tentez pas de lancer cette première commande CVS dans une installation de Moodle préexistante. Commencez avec un nouveau dossier vide. +

        +

        + Vous devrez taper mypassword pour chaque commande, à moins que vous ne mettiez en place des clefs autorisées. +

        +

        + À ce stade, vous devriez avoir un nouveau dossier « moodle ». Vous pouvez changer son nom et le déplacer à votre convenance. Placez-vous dans ce dossier : +

        cd moodle
        - -

        Les toutes dernières versions des fichiers de Moodle devrait y être. Vous pouvez mainteannt modifier les fichiers de votre copie. Pour comparer vos fichiers avec ceux du serveur CVS, utilisez la commande cvs diff, par exemple :

        - +

        + Les toutes dernières versions des fichiers de Moodle devrait y être. Vous pouvez mainteannt modifier les fichiers de votre copie. Pour comparer vos fichiers avec ceux du serveur CVS, utilisez la commande cvs diff, par exemple : +

        cvs diff -c config-dist.php
        cvs diff -c lang
        - -

        Pour récupérer les dernières mises à jour de Moodle, tapez :

        - +

        + Pour récupérer les dernières mises à jour de Moodle, tapez : +

        cvs update -dP
        - -

        Pour transférer vos nouveaux fichiers sur le serveur, vous devrez taper quelque chose comme :

        - +

        + Pour transférer vos nouveaux fichiers sur le serveur, vous devrez taper quelque chose comme : +

        cd lang/fr
        - cvs commit
        - -

        Vous devrez taper un commentaire. Votre éditeur de texte s'ouvrira. Écrivez quelque chose qui ait un sens et fermer l'éditeur de texte. Les fichiers seront envoyés chez Sourceforge et enregistrés. C'est tout !

        - -

        Pour vous économiser du temps, vous pouvez placer les arguments par défaut dans un fichier appelé .cvsrc dans votre dossier de départ. Par exemple, le mien contient :

        - +cvs commit +

        + Vous devrez taper un commentaire. Votre éditeur de texte s'ouvrira. Écrivez quelque chose qui ait un sens et fermer l'éditeur de texte. Les fichiers seront envoyés chez Sourceforge et enregistrés. C'est tout ! +

        +

        + Pour vous économiser du temps, vous pouvez placer les arguments par défaut dans un fichier appelé .cvsrc dans votre dossier de départ. Par exemple, le mien contient : +

        diff -c
        update -dP
        - -

        Taper « cvs help » pour plus de détails ...

        - +

        + Taper « cvs help » pour plus de détails ... +

         

        -
        - -

        3.2 CVS sous Windows

        - +

        3.2 CVS sous Windows

        - -

        Pour commencer, il vous faut télécharger une copie complète de Moodle avec votre compte développeur.

        - +

        + Pour commencer, il vous faut télécharger une copie complète de Moodle avec votre compte développeur. +

        -
          - +
          1. Téléchargez TortoiseCVS depuis le site tortoisecvs.org et installez-le, puis redémarrez votre machine.
          2. -
          3. Trouvez ou créez un nouveau dossier dans lequel vous allez télécharger Moodle.
          4. -
          5. Cliquez sur ce dossier avec le bouton droit de la souris et sélectionnez dans le menu l'option « CVS Checkout ». Une boîte de dialogue s'affiche alors.
          6. -
          7. Copiez le texte ci-dessous dans le champ CVSROOT (en y plaçant votre nom d'utilisateur !) :

            -
            :ext:myusername@cvs.sourceforge.net:/cvsroot/moodle
          8. -
          9. Sous le champ « Module », tapez « moodle » pour obtenir la dernière version de développement de Moodle, « contrib » pour obtenir le dossier des contributions et « mysql » pour obtenir le module MySQL Admin.
          10. -
          11. Cliquez sur le bouton « OK » tout sera alors téléchargé.
          12. - +
        -
        - -

        Une boîte de dialogue affichera tous les fichiers en cours de téléchargement, et après quelques instants vous aurez votre copie complète de Moodle. Après ce premier « check out », vous pourrez récupérer les derniers fichiers modifiés sur le serveur CVS :

        - +

        + Une boîte de dialogue affichera tous les fichiers en cours de téléchargement, et après quelques instants vous aurez votre copie complète de Moodle. Après ce premier « check out », vous pourrez récupérer les derniers fichiers modifiés sur le serveur CVS : +

        -
          - +
          1. Cliquez avec le bouton droit de la souris sur votre dossier Moodle (ou sur n'importe quel fichier) et sélectionnez « CVS Update ».
          2. - -
          3. Attendez et voyez défiler les historiques (logs). Prenez note des conflits pouvant survenir si votre code local a des modifications en contradiction avec les versions téléchargées. Vous aurez à résoudre manuellement ces fichiers en les modifiant.
          4. - +
          5. Attendez et voyez défiler les historiques (logs). Prenez note des conflits pouvant survenir si votre code local a des modifications en contradiction avec les versions téléchargées. Vous aurez à résoudre manuellement ces fichiers en les modifiant. +
        -
        - -

        Après une modification de fichiers (vous remarquerez que la couleur de leur icône passe alors du vert au rouge), vous pouvez les envoyer sur le serveur CVS de la façon suivante :

        - +

        + Après une modification de fichiers (vous remarquerez que la couleur de leur icône passe alors du vert au rouge), vous pouvez les envoyer sur le serveur CVS de la façon suivante : +

        -
          - +
          1. Cliquez avec le bouton droit de la souris sur votre dossier Moodle (ou sur n'importe quel fichier) et sélectionnez « CVS Commit... ».
          2. -
          3. Dans la boîte de dialogue, taper une description claire des changements que vous avez effectués.
          4. -
          5. Cliquez « OK ». Vos modifications sont alors envoyées vers le serveur CVS.
          6. - +
        -

         

        -
        - -

        4. Travailler avec des branches

        - +

        4. Travailler avec des branches

        -

        Le diagramme suivant montre comment le module principal moodle se ramifie en plusieurs versions (branches) au cours du temps.

        - -

        cvstree

        - -

        Pour voir toutes les balises et branches actuellement disponibles, utilisez la commande suivante sur n'importe quel fichier suffisamment ancien (par exemple index.php dans le dossier principal de moodle) :

        - +

        +

        Pour voir toutes les balises et branches actuellement disponibles, utilisez la commande suivante sur n'importe quel fichier suffisamment ancien (par exemple index.php dans le dossier principal de moodle) :

        cvs status -v index.php
        -

        Quelques recommandations au sujet des balises :

        -
          -
        • Les balises et les noms des branches doivent toujours être en lettres capitales.
        • -
        • Les balises et les noms des branches doivent TOUJOURS être appliqués sur l'intégralité du module (la totalité de Moodle). N'appliquez pas de balises à des fichiers individuels ou à des dossiers.
        • -
        • Il n'est pas autorisé de changer le nom des balises, car des développeurs comptent dessus ! Tapez-les donc correctement du premier coup.
        • -
        -

         

        - -

        4.1 Développement du tronc

        - +

        4.1 Développement du tronc

        -

        Dans le jargon CVS, le tronc (trunk) est la version principale en développement de Moodle. Elle est aussi appelée HEAD, ou encore branche par défaut.

        -

        Les développeurs de Moodle font en sorte que le tronc reste aussi stable que possible, mais il contient d'habitude du nouveau code, avec des bogues et de petites instabilités.

        -

        De temps à autre, nous décidons que le produit possède suffisamment de fonctionnalités pour sortir une version. Le tronc reçoit alors une balise MOODLE_XX_BETA (pour le cas où l'on devrait revenir à ce point) et une nouvelle branche du nom de MOODLE_XX_STABLE est créée pour la nouvelle version.

        -

        Une version bêta est aussi publiée à ce point. Elle est destinée aux testeurs qui n'utilisent pas CVS mais désirent essayer les dernières fonctionnalités et en rapporter les bogues.

        - -
        +

         

        - -

        4.2 Branches stables pour chaque version

        - +

        4.2 Branches stables pour chaque version

        -

        Dès que la branche stable MOODLE_XX_STABLE est créée, les efforts de développement se divisent temporairement en deux. Certains développeurs continuent à travailler sur de nouvelles fonctionnalités du tronc pour les prochaines versions, mais la plupart d'entre eux se concentrent sur la branche STABLE actuelle et corrigent les bogues qui y sont découverts.

        -

        Vous pouvez faire en sorte que votre copie locale de Moodle soit en synchronisation avec la version STABLE en tapant la commande unix suivante depuis le dossier principal de Moodle :

        -
        cvs update -dP -r MOODLE_XX_STABLE
        -

        À la suite de cela, toutes les commandes décrites ci-dessus s'appliqueront à la version stable. Pour revenir au tronc, tapez simplement :

        -
        cvs update -dPA
        -

        Sous Windows, un menu devrait être disponible où vous pouvez choisir la branche.

        -

        Lorsque la nouvelle branche STABLE se stabilise véritablement, une version est publiée. Les fichiers compressés sont créés pour la distribution et la branche reçoit de Martin une balise du nom de MOODLE_XXX.

        -

        Périodiquement, les corrections de bogues de la branche STABLE doivent être incorporées dans le tronc afin qu'elles soient aussi disponibles dans les futures versions de Moodle. Une balise mobile appelée MOODLE_XX_MERGED sera maintenue pour garder une trace de la dernière incorporation. La procédure pour une telle incorporation se passe ainsi :

        -
          -
        1. Télécharger la toute dernière version du tronc :

          - -
          cvs update -dPA 
        2. - +
          cvs update -dPA 
          +
        3. Incorporer dans le tronc toutes les modifications de la branche effectuées depuis la dernière incorporation :

          - -
          cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE 
        4. - -
        5. Lire attentivement les historiques (logs) à la recherche d'éventuels conflits et corriger tous les fichiers concernés par ces conflits ;
        6. - +
          cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE 
          + +
        7. Lire attentivement les historiques (logs) à la recherche d'éventuels conflits et corriger tous les fichiers concernés par ces conflits ; +
        8. Appliquer la copie modifiée dans le tronc du CVS :

          - -
          cvs commit 
        9. - -
        10. Revenir à la branche stable ;

          - -
          cvs update -dPr MOODLE_XX_STABLE 
        11. - +
          cvs commit 
          + +
        12. Revenir à la branche stable ;

          +
          cvs update -dPr MOODLE_XX_STABLE 
          +
        13. Mettre à jour la balise mobile d'incorporation afin que la procédure puisse être répétée la prochaine fois :

          - -
          cvs tag -RF MOODLE_XX_MERGED 
        14. - +
          cvs tag -RF MOODLE_XX_MERGED 
          +
        -

        Enfin, les valeurs des variables $version de tous les fichiers « version.php » de Moodle de la branche stable ne doivent pas être mis à jour si possible (à part le dernier chiffre si nécessaire). La raison en est que si quelqu'un fait une mise à jour d'une version très stable à la version très stable suivante, il pourrait sans cela manquer une mise à jour arrivée sur le tronc.

        -
        -

         

        - -

        4.3 Branches particulières pour tout changement important

        - +

        4.3 Branches particulières pour tout changement important

        -

        Occasionnellement, il est nécessaire d'incorporer une nouvelle fonctionnalité afin que plusieurs développeurs puissent y travailler ensemble, même si elle est encore trop instable pour être incorporée dans le tronc.

        -

        Dans ces cas, une branche temporaire est créée pour travailler sur la fonctionnalité, puis incorporée au tronc principal dès que possible. Un exemple de branche appelée MOODLE_14_WIDGET peut être vu sur le diagramme ci-dessus.

        -

        Si vous avez besoin de cela pour votre fonctionnalité WIDGET, suivez ces instructions :

        -
          -
        1. Discutez avec les autres développeurs pour vous assurer que c'est vraiment nécessaire !
        2. -
        3. Créez une nouvelle balise sur le tronc (pour la totalité de moodle) avec le nom MOODLE_XX_WIDGET_PRE

          -
          cvs tag -R MOODLE_XX_WIDGET_PRE 
        4. -
        5. Créez votre nouvelle branche avec le nom MOODLE_XX_WIDGET

          - -
          cvs tag -Rb MOODLE_XX_WIDGET
        6. - +
          cvs tag -Rb MOODLE_XX_WIDGET
        7. Travaillez dans cette branche jusqu'à ce que la fonctionnalité soit raisonnablement stable. Copiez vos fichiers dans le CVS suivant vos besoins.

          -
          cvs commit 
        8. -
        9. Lorsque vous êtes prêt, incorporez toute la branche dans le tronc : copiez tous ses fichiers dans le tronc et abandonnez la branche.

          -
          cvs update -dPA
          cvs update -kk -j MOODLE_XX_WIDGET
          - cvs commit
        10. - + cvs commit +
        -

         

        -
        -

        - Bonne chance, soyez prudent et amusez-vous bien !

        + Bonne chance, soyez prudent et amusez-vous bien ! +

         

        - -

        Documentation Moodle

        Version: $Id$

        - diff --git a/lang/fr/docs/developer.html b/lang/fr/docs/developer.html index 427a9324562..9c2d3717293 100644 --- a/lang/fr/docs/developer.html +++ b/lang/fr/docs/developer.html @@ -1,16 +1,12 @@ - - - Documentation Moodle : Manuel du développeur - + - + - +

        Manuel du développeur

        diff --git a/lang/fr/docs/docstyles.css b/lang/fr/docs/docstyles.css index fc1876c6dd1..eecd4298564 100755 --- a/lang/fr/docs/docstyles.css +++ b/lang/fr/docs/docstyles.css @@ -2,7 +2,6 @@ body, td, th, li { font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - background-color: #ffffff; } th { diff --git a/lang/fr/docs/faq.html b/lang/fr/docs/faq.html index 837f9aae5c6..6c1a415c9e1 100644 --- a/lang/fr/docs/faq.html +++ b/lang/fr/docs/faq.html @@ -1,13 +1,11 @@ - - + Documentation Moodle : Foire Aux Questions (FAQ) - - + + - +

        Foire Aux Questions (FAQ)

        @@ -59,13 +57,13 @@

        Votre serveur web doit être configuré de manière que la partie de l'URL après le nom du script soit passée directement au script. Ce réglage est en général activé par défaut sur Apache 1, mais désactivé sur Apache 2. Pour l'activer, ajoutez cette ligne à votre fichier httpd.conf, ou à un fichier .htaccess dans votre dossier moodle (voir pour plus de détails le Guide d'installation) :

        -

        AcceptPathInfo on

        +

        AcceptPathInfo on

        Il est à noter que cela ne fonctionnera QUE pour Apache version 2.x.

        Si vous avez ce problème et n'utilisez pas Apache 2 (c'est très improbable), vous pouvez indiquer à Moodle d'utiliser une autre méthode. Les inconvénients sont une legère perte de performance pour vos utilisateurs et qu'il sera impossible d'utiliser des liens relatifs dans vos ressources HTML.

        -

        Pour utiliser cette alternative, connectez-vous comme administrateur, allez sur la page « Paramètres techniques » et modifiez le réglage pour « slasharguments ». Le problème devrait alors être réglé.

        +

        Pour utiliser cette alternative, connectez-vous comme administrateur, allez sur la page « Paramètres techniques » et modifiez le réglage pour « slasharguments ». Le problème devrait alors être réglé.

         

        @@ -93,7 +91,7 @@

        Si vous voyez des messages comme ceux-ci :

        -

        Parse error: parse error, unexpected T_VARIABLE in c:\program files\easyphp\www\moodle\config.php on line 94
        Fatal error: Call to undefined function: get_string() in c:\program files\easyphp\www\moodle\mod\resource\lib.php on line 11

        +

        Parse error: parse error, unexpected T_VARIABLE in c:\program files\easyphp\www\moodle\config.php on line 94
        Fatal error: Call to undefined function: get_string() in c:\program files\easyphp\www\moodle\mod\resource\lib.php on line 11

        il est probable que vous avez oublié un point-virgule ou un guillemet à la fin d'une ligne de votre fichier config.php (avant la ligne 94 dans cet exemple).

        @@ -127,7 +125,7 @@

        Les problèmes causés par des apostrophes sont dus à un réglage incorrect des « magic quotes ». Moodle nécessite les réglages suivants (qui sont habituellement corrects par défaut) :

        -

        magic_quotes_gpc = On
        magic_quotes_runtime = Off

        +

        magic_quotes_gpc = On
        magic_quotes_runtime = Off

        Pour plus de détails, référez-vous à la section du guide d'installation sur la configuration du serveur web.

        @@ -189,7 +187,7 @@

        Quand j'essaie d'ajouter une ressource, je reçois des messages d'erreur.

        -

        En admettant que vous utilisez Apache, il est probable que votre réglage de $CFG->wwwroot dans le fichier config.php est différent de l'URL que vous utilisez pour accéder au site. Essayez aussi de désactiver le réglage « secureforms » dans la configuration des paramètres du site.

        +

        En admettant que vous utilisez Apache, il est probable que votre réglage de $CFG->wwwroot dans le fichier config.php est différent de l'URL que vous utilisez pour accéder au site. Essayez aussi de désactiver le réglage « secureforms » dans la configuration des paramètres du site.

         

        @@ -211,7 +209,7 @@

        La cause principale de ce problème est que votre ordinateur (et non le serveur sur lequel est installé Moodle) a une programme pare-feu (firewall) actif, qui filtre des informations (referrer) de votre navigateur. Voici quelques instructions (en anglais) pour corriger cela avec Norton firewall.

        -

        L'administrateur du serveur Moodle peut aussi corriger cela en réglant sur la page de configuration des paramètres le réglage « secureforms » sur « Non ».

        +

        L'administrateur du serveur Moodle peut aussi corriger cela en réglant sur la page de configuration des paramètres le réglage « secureforms » sur « Non ».

        Une autre cause possible de ce problème est une mauvaise configuration des sessions sur le serveur. Vous pouvez tester cela en appelant le script http://yourserver/moodle/lib/session-test.php dans votre navigateur.

        @@ -257,13 +255,9 @@

         

        -

         

        +

         


        -
        - -

        Proposer une nouvelle question (merci d'inclure la réponse !)

        - -
        +

        Proposer une nouvelle question (merci d'inclure la réponse !)


        Merci à John Eyre pour l'aide dans la maintenance de cette FAQ.

        diff --git a/lang/fr/docs/features.html b/lang/fr/docs/features.html index 7ad83c4e875..15913b58690 100644 --- a/lang/fr/docs/features.html +++ b/lang/fr/docs/features.html @@ -1,16 +1,15 @@ - - + + Documentation Moodle : fonctionnalités - + - + - +

        Fonctionnalités

        diff --git a/lang/fr/docs/future.html b/lang/fr/docs/future.html index a65801e08f0..86e84b6fddc 100644 --- a/lang/fr/docs/future.html +++ b/lang/fr/docs/future.html @@ -1,80 +1,68 @@ - Documentation Moodle : Futur de Moodle - + - + - + - +

        Futur de Moodle

        -

        Futur de Moodle

        +

        À mesure que Moodle gagne en maturité, son avenir est de plus en plus influencé par la communauté des développeurs et des utilisateurs. Une base de données dynamique des nouvelles fonctionnalités proposées et de leur statut peut être consultée sur moodle.org/bugs. Vos contributions, sous la forme d'idées, de code, de commentaires ou de promotion sont toutes les bienvenues. Pour plus de détails, consultez le Manuel du développeur. Vous pouvez aussi payer le développement d'une focntionnalité dont vous avez besoin et dont vous aimeriez disposer rapidement. Voyez moodle.com/development pour plus d'informations.

        + +

        Voici notre vision actuelle du futur de Moodle, même si des changements peuvent survenir, puisque le développement dépend des sponsors et des développeurs.

        + +

        Version 1.4 - 31 août 2004

        -

        À mesure que Moodle gagne en maturité, son avenir est de plus en plus influencé par la communauté des développeurs et des utilisateurs. Une base de données dynamique des nouvelles fonctionnalités proposées et de leur statut peut être consultée sur moodle.org/bugs. Vos contributions, sous la forme d'idées, de code, de commentaires ou de promotion sont toutes les bienvenues. Pour plus de détails, consultez le Manuel du développeur ainsi que les forums. Vous pouvez aussi payer le développement d'une focntionnalité dont vous avez besoin et dont vous aimeriez disposer rapidement. Voyez moodle.com/development pour plus d'informations.

        - -

        Voici la planification actuelle du futur de Moodle. Cette planification est cependant sujette à modifications, puisque le développement dépend des sponsors et des développeurs.

        - -

        Version 1.5 - février 2005

        - -
        - -

        L'objectif de la version 1.5 est de rendre Moodle conforme à plusieurs importantes normes en matière d'accessibilité des sites web, notamment WAI (W3C), SENDA (Royaume-Uni) et Section 508 (USA).

        - -

        Le code d\'affichage sera conforme à la norme XHTML Transitional 1.0, et les CSS auront également été nettoyées et étendues, afin de permettre aux graphistes web un meilleur contrôle sur l\'aspect de leurs sites. Cette version n\'utilisera pas encore de modèles.

        - -

        Il y aura aussi de nombreuses nouvelles fonctionnalités, par exemple :

        +

        Cette version contient de nombreuses améliorations structurelles et de modifications dans des modules clef de Moodle. Quelques extraits pour vous allécher :

          -
        • Une messagerie instantanée intégrée pour la communication directe.
        • +
        • Nouvelle architecture des inscriptions permettant toutes sortes de processus d'inscriptions automatiques. Un système Paypal est inclus (pour les cours payant) avec accès instantané, de même que l'utilisation d'une bases de données externes quelconques, traitement de fichiers exportés de systèmes plus anciens, etc.
        • -
        • De grandes améliorations du module Test, comprenant : des tests paginés avec un certain nombre de questions par page, une meilleure interface pour la production de tests et des catégories de questions en hiérarchie.
        • +
        • Amélioration du traitement des ressources avec un nouveau processus en une étape et un meilleur contrôle du format d'affichage. De nouveaux types de ressources peuvent être développés comme des extensions (plug-ins).
        • -
        • Un nouveau format de bloc, permettant d'avoir plusieurs copies de chaque bloc et une meilleure configuration (les anciens blocs provenant de tierces personnes doivent être mis à jour. Voir la documentation dans le dossier « blocks »).
        • +
        • Réorganisation du module quiz, permettant de nouveaux types de question comme des extensions (plug-ins). Un nouveau type de question dénommé « Question calculée » permet de présenter à chaque étudiant des questions uniques.
        • -
        • Intégration à LDAP étendue, de sorte que LDAP peut maintenant contrôler la création des cours, les participations aux groupes, la synchronisation des utilisateurs, etc.
        • +
        • Le module chat permet maintenant l'utilisation facultative d'un démon, fournissant une réponse quasi instantanée à des centaines d'utilisateurs.
        • -
        • Certains champs de l'utilisateur peuvent être verrouillés par l'administrateur.
        • +
        • Module glossaire amélioré pour permettre le développement de nouveaux formats de glossaires.
        • -
        • Amélioration du dépôt des fichiers, avec support de la vérification automatique anti-virus des nouveaux documents à l'aide de ClamAV.
        • +
        • Amélioration des sauvegardes permettant le déplacement de contenus (par exemple des liens) meilleure que jamais.
        • -
        • Simplification de l'interface des modules Atelier et Leçon.
        • +
        • Module SCORM amélioré pour supporter encore plus de contenus SCORM.
        • -
        • Nouveau filtre Tidy permettant de convertir tous les textes saisis par les utilisateurs en format XHTML 
        • - -
        • Module d'authentification PAM.
        • - -
        • Les sessions peuvent maintenant être enregistrées dans la base de données (utile pour les clusters Moodle).
        • - -
        • Demande d'accord des directives du site pour les utilisateurs.
        • - -
        • Bien d'autres améliorations et corrections de bogues.
        • +
        • Interfaces améliorées pour l'ajout d'étudiants, de responsables de cours et d'administrateurs.
        -

        Version 1.6 - milieu 2005

        +

        Version 1.5 - plus tard en 2004

        -

        Dans cette version, une grande partie des pages principales sera personnalisable à l'aide de modèles HTML.

        +

        Cette version se concentrera principalement sur la couche d'affichage, notamment en rendant Moodle totalement conforme avec les standards d'accessibilité WAI (W3C), SENDA (Royaume-Uni) et Section 508 (États-Unis).

        -

        Support des blogs pour les utilisateurs (en remplacement des Journaux).

        +
          -

          Page « Mon Moodle ».

          +
        • Ré-écriture complète de la couche d'affichage séparant la présentation et la logique de l'application.
        • -

          Améliorations dans la mise en place de la structure et le contrôle du déroulement des cours.

          +
        • Système de modèles conformes au standard XHTML 1.0 pour une meilleure accessibilité.
        • + +
        • Puissant système de feuilles de styles cascadées (CSS) pour une meilleure compatibilité entre plateformes.
        • + +
        + +

        Comme la plupart des versions de Moodle, il y aura aussi bon nombre de nouvelles fonctionnalités et de modules développés par la communauté des développeurs.

        -

        Version 2.0 - plus tard en 2005

        +

        Version 2.0

        @@ -82,8 +70,6 @@
        -
        -

        Documentation Moodle

        Version: $Id$

        diff --git a/lang/fr/docs/install.html b/lang/fr/docs/install.html index e6f1195788b..95daf407785 100644 --- a/lang/fr/docs/install.html +++ b/lang/fr/docs/install.html @@ -1,15 +1,13 @@ - Documentation Moodle : Installation - + - + - +

        Installation de Moodle

        @@ -99,7 +97,7 @@

        Après avoir téléchargé et décompressé l'archive ou obtenu les fichiers par CVS, vous aurez sous les yeux un dossier nommé « moodle », contenant un certain nombre de dossiers et de fichiers.

        -

        Vous pouvez placer ce dossier intégralement dans le dossier documents de votre serveur web. Dans ce cas, le site Moodle sera accessible à l'adresse http://votreserveur.com/moodle/. Vous pouvez aussi copier le contenu de ce dossier dans le dossier documents de votre serveur. Dans ce cas, le site Moodle sera accessible simplement à l'adresse http://votreserveur.com/.

        +

        Vous pouvez placer ce dossier intégralement dans le dossier documents de votre serveur web. Dans ce cas, le site Moodle sera accessible à l'adresse http://votreserveur.com/moodle/. Vous pouvez aussi copier le contenu de ce dossier dans le dossier documents de votre serveur. Dans ce cas, le site Moodle sera accessible simplement à l'adresse http://votreserveur.com/.

         

        @@ -222,7 +220,7 @@ index.php : la page d'accueil du site

        Contrôlez simplement que index.php soit dans la liste (et de préférence au début de la liste, pour des raisons de performance).

        -

        Deuxièmement, si vous utilisez Apache 2, vous devrez activer la variable AcceptPathInfo, qui permet de passer des arguments à des scripts, comme http://serveur/file.php/arg1/arg2. Cela est essentiel, pour permettre des liens relatifs entre vos ressources, et également pour offrir un gain de performance aux utilisateurs de votre site Moodle. Vous pouvez activer cette variable en ajoutant la ligne ci-dessous à votre fichier « httpd.conf ».

        +

        Deuxièmement, si vous utilisez Apache 2, vous devrez activer la variable AcceptPathInfo, qui permet de passer des arguments à des scripts, comme http://serveur/file.php/arg1/arg2. Cela est essentiel, pour permettre des liens relatifs entre vos ressources, et également pour offrir un gain de performance aux utilisateurs de votre site Moodle. Vous pouvez activer cette variable en ajoutant la ligne ci-dessous à votre fichier « httpd.conf ».

        @@ -230,7 +228,7 @@ index.php : la page d'accueil du site

        -

        Troisièmement, pour fonctionner, Moodle nécessite un certain nombre de réglages PHP. Sur la plupart des serveurs, ces réglages sont actifs par défaut. Cependant, certains serveurs PHP (et avec certaines des versions les plus récentes de PHP) peuvent avoir des réglages différents. Ces réglages sont définis dans le fichier de configuration de PHP (dont le nom est habituellement php.ini) :

        +

        Troisièmement, pour fonctionner, Moodle nécessite un certain nombre de réglages PHP. Sur la plupart des serveurs, ces réglages sont actifs par défaut. Cependant, certains serveurs PHP (et avec certaines des versions les plus récentes de PHP) peuvent avoir des réglages différents. Ces réglages sont définis dans le fichier de configuration de PHP (dont le nom est habituellement php.ini) :

        @@ -244,7 +242,7 @@ session.bug_compat_warn = 0

        Si vous n'avez accès ni au fichier httpd.conf, ni au fichier php.ini de votre serveur, ou si Moodle est installé sur un serveur avec des applications nécessitant des réglages différents, vous pouvez cependant CONTOURNER tous ces réglages par défaut.

        -

        Pour le faire, il vous faudra créer dans le dossier de Moodle un fichier nommé .htaccess, contenant les définitions adéquates pour ces réglages. Cela ne fonctionne que pour les serveurs Apaches et seulement si le privilège Overrides est accordé. Voici un exemple du contenu d'un fichier .htaccess :

        +

        Pour le faire, il vous faudra créer dans le dossier de Moodle un fichier nommé .htaccess, contenant les définitions adéquates pour ces réglages. Cela ne fonctionne que pour les serveurs Apaches et seulement si le privilège Overrides est accordé. Voici un exemple du contenu d'un fichier .htaccess :

        @@ -252,7 +250,7 @@ session.bug_compat_warn = 0 DirectoryIndex index.php index.html index.htm <IfDefine APACHE2> - AcceptPathInfo on + AcceptPathInfo on </IfDefine> php_flag magic_quotes_gpc 1 @@ -276,7 +274,7 @@ php_value post_max_size 2M
        -

        Le plus simple à faire est de copier le fichier fourni lib/htaccess, de le modifier suivant vos besoins. Ce fichier contient de plus amples instructions. Pour cela il vous suffit de taper, dans Unix, la commande :

        +

        Le plus simple à faire est de copier le fichier fourni lib/htaccess, de le modifier suivant vos besoins. Ce fichier contient de plus amples instructions. Pour cela il vous suffit de taper, dans Unix, la commande :

        @@ -310,7 +308,7 @@ php_value post_max_size 2M

        La page d'aministration devrait être maintenant active à l'adresse http://exemple.com/moodle/admin. Si vous essayez d'accéder à la page d'accueil de votre site, vous y arriverez directement malgré tout. La première fois que vous accéderez à la page d'administration, un condensé de la licence GPL vous sera présenté. Vous devez l'accepter avant de continuer la mise en service de votre installation.

        -

        (Moodle va aussi essayer de placer des cookies dans votre navigateur. Si celui-ci vous permet d'accepter ou non les cookies, vous devez accepter les cookies de Moodle, ou alors Moodle ne fonctionnera pas.)

        +

        (Moodle va aussi essayer de placer des cookies dans votre navigateur. Si celui-ci vous permet d'accepter ou non les cookies, vous devez accepter les cookies de Moodle, ou alors Moodle ne fonctionnera pas.)

        Moodle va maintenant mettre en place votre base de données et créer les tables qui contiendront les données. Les tables de la base de données principale sont d'abord créées. Un certain nombre de commandes SQL seront affichées, suivies de messages (en rouge ou en vert) de ce type :

        @@ -390,7 +388,7 @@ php_value post_max_size 2M

        Le script qui effectue ces contrôles est situé dans le dossier admin. Il porte le nom cron.php. Ce script ne peut pas se lancer tout seul. Vous devez donc mettre en place un mécanisme permettant de le lancer régulièrement (par exemple toutes les 5 ou 10 minutes). On donne ainsi à Moodle des « battements de cœur », et le script peut effectuer les opérations définies par chaque module.

        -

        Il est à remarquer que l'ordinateur effectuant le cron n'est pas obligatoirement l'ordinateur sur lequel Moodle est installé. Par exemple, si vous disposez d'un serveur web qui n'offre pas de tel mécanisme, vous pourrez lancer le cron sur un autre serveur, ou même sur l'ordinateur de la maison. La seule chose qui importe est de charger régulièrement le fichier cron.php.

        +

        Il est à remarquer que l'ordinateur effectuant le cron n'est pas obligatoirement l'ordinateur sur lequel Moodle est installé. Par exemple, si vous disposez d'un serveur web qui n'offre pas de tel mécanisme, vous pourrez lancer le cron sur un autre serveur, ou même sur l'ordinateur de la maison. La seule chose qui importe est de charger régulièrement le fichier cron.php.

        L'appel de ce fichier ne surcharge pas le serveur. Une fréquence d'appel de 5 minutes est donc raisonnable, mais peut fort bien être portée à 15 ou 30 minutes. Il n'est pas recommandé de fixer une trop longue période, car cela générera des délais dans l'envoi des courriels, ce qui peut rallentir l'activité des cours.

        @@ -435,7 +433,7 @@ php_value post_max_size 2M

        Lancer automatiquement le script toutes les 5 minutes

        -

        Sur Unix : utilisez cron. En ligne de commande, éditez les réglages de cron avec « crontab -e » et ajouter une ligne de la forme :

        +

        Sur Unix : utilisez cron. En ligne de commande, éditez les réglages de cron avec « crontab -e » et ajouter une ligne de la forme :

        @@ -445,9 +443,9 @@ php_value post_max_size 2M

        Habituellement, la commande « crontab » lance l'éditeur « vi ». On passe en mode insertion en tapant « i », puis on tape une ligne comme ci-dessus. On sort ensuite du mode insertion en tapant la touche <ESC>. Il ne reste qu'à enregistrer et quitter en tapant « :wq&nbsp», ou à quitter sans enregistrer avec « :q! » (tout cela sans guillemets).

        -

        Sous Windows : la façon la plus simple est d'utiliser le petit programme moodle-cron-for-windows.zip qui rend le processus très simple. vous pouvez aussi essayer d'utiliser l'utilitaire Windows « Scheduled Tasks ».

        +

        Sous Windows : la façon la plus simple est d'utiliser le petit programme moodle-cron-for-windows.zip qui rend le processus très simple. vous pouvez aussi essayer d'utiliser l'utilitaire Windows « Scheduled Tasks ».

        -

        Chez un hébergeur web : votre interface web de réglages possède peut-être une page vous permettant de mettre en place des crons. Demandez à votre administrateur des détails concernant leur utilisation.

        +

        Chez un hébergeur web : votre interface web de réglages possède peut-être une page vous permettant de mettre en place des crons. Demandez à votre administrateur des détails concernant leur utilisation.

        diff --git a/lang/fr/docs/installamp.html b/lang/fr/docs/installamp.html index ca227b4bfea..1cbb79f2ac1 100755 --- a/lang/fr/docs/installamp.html +++ b/lang/fr/docs/installamp.html @@ -1,19 +1,12 @@ - - - Documentation Moodle : Installation de PHP et de MySQL - - + + - - +

        Installation d'Apache, de MySQL et de PHP

        -
        -

        Moodle est écrit dans un langage de scripts appelé PHP, et conserve la plupart des données qu'il utilise dans une base de données. Le gestionnaire de base de données que nous recommandons est MySQL. Avant d'installer Moodle, vous devez @@ -22,7 +15,6 @@ L'installation de tels logiciels peut être complexe. Cette page a été écrite pour essayer de rendre ce processus aussi simple que possible pour différentes plateformes :

        -
        • Hôtes web
        • Mac OS X
        • @@ -123,18 +115,18 @@ appelerez config.php.
        • Modifiez config.php avec un éditeur de texte (Notepad fera l'affaire ; assurez-vous simplement qu'il n'ajoute pas d'espaces à la fin du fichier).
        • -
        • Indiquez tous les paramètres concernant votre base de données :
          - $CFG->dbtype = 'mysql';
          - $CFG->dbhost = 'localhost';
          - $CFG->dbname = 'moodle';
          - $CFG->dbuser = 'root';
          - $CFG->dbpass = '';
          - $CFG->dbpersist = true;
          +
        • Indiquez tous les paramètres concernant votre base de données :
          + $CFG->dbtype = 'mysql';
          + $CFG->dbhost = 'localhost';
          + $CFG->dbname = 'moodle';
          + $CFG->dbuser = 'root';
          + $CFG->dbpass = '';
          + $CFG->dbpersist = true;
          $CFG->prefix = 'mdl_';
        • -
        • Puis indiquez tous les chemins des fichiers :
          +
        • Puis indiquez tous les chemins des fichiers :
          $CFG->wwwroot = 'http://localhost/moodle'; // Indiquez une adresse externe - si vous la connaissez.
          - $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
          + si vous la connaissez.
          + $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
          $CFG->dataroot = 'C:\moodledata';
        • Enregistrez config.php - tous les autres paramètres peuvent être ignorés.
        • C'est presque fini ! Le reste de la configuration s'effectue à travers @@ -167,8 +159,8 @@

           

        -

        Documentation Moodle

        -

        Version: $Id$

        +

        Documentation Moodle

        +

        Version: $Id$

        \ No newline at end of file diff --git a/lang/fr/docs/intro.html b/lang/fr/docs/intro.html index ecb4d451b1e..1a9b4e3a121 100644 --- a/lang/fr/docs/intro.html +++ b/lang/fr/docs/intro.html @@ -1,15 +1,14 @@ - - + + Documentation Moodle : Introduction - + - + - +

        Introduction

        diff --git a/lang/fr/docs/licence.html b/lang/fr/docs/licence.html index cf397c83a39..378383e1203 100644 --- a/lang/fr/docs/licence.html +++ b/lang/fr/docs/licence.html @@ -1,25 +1,23 @@ - - + + Documentation Moodle : Licence - + - + - +

        Licence de Moodle

        -

        Le nom Moodle™ est une marque enregistrée du Moodle Trust.
        Vous avez le droit d'utiliser ce nom pour toute activité en relation avec le logiciel décrit ci-dessous.

        Le logiciel Moodle est publié sous le - Copyright © 1999-2005, Martin + Copyright © 1999-2004, Martin Dougiamas.

        Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU @@ -30,9 +28,7 @@ garanties de commercialisation ou d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU (voir ci-dessous) pour plus de détails.

        - -
        - +

        Licence GPL

        @@ -435,7 +431,7 @@
        -

        Documentation Moodle

        -

        Version: $Id$

        +

        Documentation Moodle

        +

        Version: $Id$

        diff --git a/lang/fr/docs/other.html b/lang/fr/docs/other.html index 88bc34cafba..a322b9b7c7a 100755 --- a/lang/fr/docs/other.html +++ b/lang/fr/docs/other.html @@ -1,13 +1,11 @@ - - + Documentation Moodle : Autres documentations - - + + - +

        Autres documentations

        @@ -19,7 +17,7 @@

         

        -
        +

        Documentation Moodle

        diff --git a/lang/fr/docs/philosophy.html b/lang/fr/docs/philosophy.html index 93edf975993..93855b5ca3f 100755 --- a/lang/fr/docs/philosophy.html +++ b/lang/fr/docs/philosophy.html @@ -1,15 +1,14 @@ - - + + Documentation Moodle : Philosophie - + - + - +

        Philosophie

        @@ -69,7 +68,7 @@
        -
        +

        Lorsque vous pensez à tout cela, vous vous concentrez sur les expériences pouvant être les meilleures pour l'apprentissage, du point de vue de l'apprenant, plutôt que de simplement publier et évaluer les informations que vous estimez qu'ils doivent connaître. Cela vous aide aussi à réaliser que chaque participant à un cours peut être tout à tour un enseignant et un apprenant. Votre travail d'« enseignant » peut se modifier, en passant du rôle de « source de la connaissance » à celui de pôle d'influence et modèle de la culture de classe. Il s'agit d'avoir des contacts personnalisés et adaptés aux besoins d'apprentissage de chaque étudiant, et d'animer les discussions et les activités de façon à atteindre collectivement les objectifs d'apprentissage de la classe.

        @@ -77,7 +76,7 @@
        -
        +

        Documentation Moodle

        diff --git a/lang/fr/docs/release.html b/lang/fr/docs/release.html index 813df37ee11..70a86341f73 100644 --- a/lang/fr/docs/release.html +++ b/lang/fr/docs/release.html @@ -1,485 +1,688 @@ - - - -Documentation Moodle : Notes de mise à jour actuelles - - - - - + Documentation Moodle : Notes de mise à jour actuelles + + - - - - +

        Notes de mise à jour actuelles

        -

        Moodle 1.4.4 (7 mars 2005)

        - -

        (Cette version comporte d'importantes corrections concernant la sécurité. Pour cette raison, nous recommandons vivement aux responsables de sites utilisant une version antérieure, quelle qu'elle soit, d'effectuer au plus vite la mise à jour vers cette version.)

        - - -
        -
        Quelques importantes corrections concernant la sécurité
        -
        -
          -
        • Ajout de robustes fonctions de validation d'URL
        • -
        • Mesures préventives contre la modification malicieuse de la configuration
        • -
        • Validation plus stricte des données saisies dans les tests, l'éditeur WYSIWYG et l'édition des cours
        • -
        • Meilleur contrôle des réglages de langue des utilisateurs
        • -
        • Nettoyage plus sûr des textes saisis en HTML
        • -
        -
        - -
        Quelques nouveautés
        -
        -
          -
        • Nouveau filtre MP3 avec un lecteur mp3 en Flash
        • -
        • Meilleur affichage des options dans le module Sondage
        • -
        • Améliorations de l'interface de l'éditeur de tables dans l'éditeur WYSIWYG
        • -
        • Les réglages $CFG du fichier config.php ont maintenant priorité sur ceux de la base de données
        • -
        • Activation de la récupération de place (garbage collection) pour les systèmes Debian, avec la possibilité de la désactiver. Ceci permet de corriger des problèmes de session figée
        • -
        -
        - -
        Améliorations de performance
        -
        -
          -
        • Sérieuses optimisations de performance dans le code des forums
        • -
        • Diverses optimisations, grâce à la suppression de requêtes et de tris de base de données
        • -
        • Améliorations majeures du traitement des verrous de session. Le téléchargement de gros fichiers ou la consultation en direct des historiques ne ralentit plus la navigation dans d'autres fenêtres
        • -
        -
        - -
        Corrections d'autres bogues
        -
        -
          -
        • Installeur : nombreuses corrections et mises à jour tirées du tronc (y compris le bogue 2625)
        • -
        • Installeur : une vérification est effectuée sur allow_url_fopen() avant d'essayer de valider l'URL de l'installation
        • -
        • Correction de certains problèmes dans la recherche des forums
        • -
        • Correction d'un bogue de tri sur les forums (bogue 2613)
        • -
        • Correction de problèmes dans la recherche des utilisateurs avec des espaces finaux
        • -
        • Correction de quelques chemins vers /admin codés en dur
        • -
        • Correction de quelques bogues en relation avec les groupes (bogues 2133, 2550, 2363)
        • -
        • Moodle n'envoie plus des résumés en HTML aux personnes désirant des courriels en texte pur
        • -
        • Correction d'une erreur de la barre de navigation dans le module SCORM
        • -
        • Chat : la taille maximale de lecture de l'interface de connexion (socket) a été augmentée, afin d'éviter les pages vides et les répétitions de messages
        • -
        • Fichiers : ajout d'une icône pour le dossier parent (bogue 2491)
        • -
        • Support de Postgres : correction de la cohérence dans la table mdl_log
        • -
        • Plugins d'authentification : meilleur nettoyage et troncage des données
        • -
        • Plugins d'authentification : correction d'un problème d'authentification externe — un utilisateur connecté comme anonyme ne pouvait se connecter par une authenfication externe lors de la toute première connexion avec un compte
        • -
        • Authentification LDAP : correction d'une régression depuis 1.4.2, où un point-virgule final dans certains champs empêchait l'authentification
        • -
        • Authentification par base de données : cette authentification n'allait pas chercher correctement les champs de données de l'utilisateur (bogue 2319)
        • -
        • Plugin d'inscription PayPal : le texte envoyé à PayPal peut maintenant être nettoyé pour éviter certaines marques diacritiques (espagnoles pour l'instant) qui empêchent le déroulement des inscriptions. Actuellement, seules les marques diacritiques françaises et allemandes sont supportées par PayPal. Cette fonctionnalité peut être facilement étendue à d'autres caractères
        • -
        • Sauvegarde/restauration : si l'utilisateur n'est pas un administrateur et si le cours restauré ne comporte pas d'enseignant, l'utilisateur effectuant la restauration y est automatiquement ajouté comme enseignant (bogue 2381)
        • -
        • Sauvegarde/restauration : erreurs corrigées avec les cours dont le nom comporte des apostrophes
        • -
        • Sauvegarde/restauration : les membres des groupes ne sont maintenant inclus (lors de la sauvegarde et de la restauration) que si l'incorporation des utilisateurs a été choisie (bogue 2486)
        • -
        • Sauvegarde/restauration : nettoyage général du code
        • -
        • Glossaire : la note 0 est maintenant supportée (bogue 2582), et PHP5 est mieux supporté (bogue 2581)
        • -
        • Glossaire & Blackboard : corrections dans l'importation (bogue 2310)
        • -
        • Calendrier : traitement plus robuste de données erronées
        • -
        • Calendrier : corrections dans le code HTML (bogue 2350)
        • -
        • L'ordre de tri des cours était défectueux dans la version 1.4.3. Cela perturbait parfois la création des cours. Tous les problèmes connus avec l'ordre de tri sont maintenant corrigés. Quelques corrections ont été également effectuées dans les appels de la fonction get_categories(), qui apparaissaient parfois dans la liste « Mes cours »
        • -
        • Wiki : plusieurs corrections
        • -
        • La lecture des historiques en direct possède maintenant un pied de page adéquat
        • -
        • Divers nettoyages et rangements du code en général
        • -
        -
        - -
        - - -

         

        - -

        Moodle 1.4.3 (17 décembre 2004)

        - -

        (Cette version comporte d'importantes corrections concernant la sécurité. Pour cette raison, nous recommandons vivement que les responsables de sites utilisant une version antérieure, quelle qu'elle soit, effectuent au plus vite la mise à jour vers cette version.)

        - -
        -
        Quelques importantes corrections concernant la sécurité
        -
        -
          -
        • Amélioration de la vérification et du nettoyage des données en cookie
        • -
        • Mesures préventives pour la détermination des sessions
        • -
        • Amélioration de la vérification et du nettoyage des paramètres des fils RSS, de l'atlas IP, des glossaires, des forums, de la sélection des thèmes, du module SCORM, et du visionneur de documents
        • -
        • Ajout d'une protection lors de la visualisation de fichiers déposés
        • -
        • Ajout d'une protection pour éviter le passage d'un dossier à un autre
        • -
        • Correction pour la variable $FULLME nécessaire dans les crons
        • -
        • Prévention contre l'appel direct des librairies internes
        • -
        • Interdiction de la visualisation des glossaires cachés
        • -
        • Pour les étudiants, les sections cachées sont aussi invisibles dans les activités récentes
        • -
        • Correction d'un problème qui permettait aux utilisateurs anonymes de voir les événements du calendrier
        • -
        • Correction de l'encodage des expressions TeX
        • -
        -
        - -
        Quelques nouveautés
        -
        -
          -
        • L'unicité des inscriptions est maintenant exigée. Ceci contribue de plus en une amélioration des performances
        • -
        • Ajout du support des transactions pour PostgreSQL
        • -
        • Les connexions et déconnexions sont maintenant enregistrées dans les historiques
        • -
        • les modules Wiki et SCORM utilisent maintenant un nouveau code pour l'archivage (zip), ce qui corrige certains problèmes rencontrés avec les SCORM
        • -
        • Nouveau système de pagination pour les glossaires
        • -
        • Les informations des utilisateurs LDAP sont tronquées avant leur insertion dans Moodle afin d'éviter des pertes de données
        • -
        • Programme pclzip mis à jour
        • -
        • La variable Memory_limit peut maintenant être modifiée dans php.ini, commandline, httpd.conf et .htaccess
        • -
        • Nouvelles traductions commencées : Maori, Kannada, Albanais et Vietnamien
        • -
        • Nombreux ajouts dans d'autres langues
        • -
        • Les enseignants peuvent maintenant essayer les tests même lorsqu'ils ne sont pas encore ouverts
        • -
        • La vue des glossaires pour impressions est maintenant différente pour chacun des formats
        • -
        • La recherche dans les glossaires trouve maintenant aussi les termes associés
        • -
        • Le filtre multilingue a été grandement amélioré, et est plus tolérant avec une syntaxe défaillante
        • -
        -
        +

        Nouveautés de Moodle 1.3.4 (11 août 2004)

        +
          +
          +
          Mises à jour
          +
          +
            +
          • Le traitement des glossaires et ressources exportés de la version 1.4 en développement a été rendu compatible
          • +
          • Les utilisateurs avec droits restreints ne peuvent plus modifier les inscriptions
          • +
          +
          +
          Corrections de bogues
          +
          +
            +
          • Un trou de sécurité rapporté, impliquant les arguments du fichier forum/post.php, a été bouché
          • +
          • Un trou de sécurité possible, impliquant les textes des chaînes de caractères de Moodle a été bouché
          • +
          • Correction d'un petit problème (survenant rarement) avec le nombre de tentatives d'un test
          • +
          • Correction de la logique des expressions régulières dans les questions à réponse courte
          • +
          • Correction d'une faute de frappe dans l'installation avec PostgreSQL
          • +
          • Correction de quelques liens dans la documentation
          • +
          +
          +
          +
        -
        Améliorations de performance
        -
        -
          -
        • Le traitement des entêtes en cache a été amélioré sur toutes les pages lors de l'utilisation du bouton Retour du navigateur
        • -
        • Des index ont été ajoutés en de nombreux endroits de la base de données pour améliorer la performance lors de déploiements à grande échelle
        • -
        • Amélioration de performance partout où une liste de cours est affichée
        • -
        • Diverses optimisations en retirant des requêtes non nécessaires des bases de données et des tris
        • -
        -
        - -
        Autres bogues corrigés
        -
        -
          -
        • Correction de la génération d'identifiants de cours doubles lors de la restauration dans un nouveau cours
        • -
        • Correction de nombreux petits problèmes avec Postgres
        • -
        • Suppression de nombreuses notices non nécessaires en mode deboguage
        • -
        • Suppression de notices PHP5 inutiles
        • -
        • Correction du support des apostrophes doubles, simples et des barres obliques inverses dans les données des utilisateurs LDAP
        • -
        • Correction de la pagination des résultats de recherche dans les cours avec Postgres
        • -
        • Correction d'un bogue survenant avec les espaces dans la recherche des utilisateurs
        • -
        • Correction d'un bogue dans le chat, qui voyait tous les utilisateurs du chat mentionnés dans plusieurs salons
        • -
        • Correction d'un bogue dans le script d'installation
        • -
        • Correction du traitement des noms d'utilisateur sensibles à la casse lors de l'importation d'utilisateurs en lots
        • -
        • Correction d'un bogue de redirection après évaluation des messages des forums
        • -
        • Correction d'un bogue des tests dans les questions d'appariement
        • -
        • Correction d'un bogue lors de la prévisualisation des tests
        • -
        • Correction d'un bogue lors de l'édition de langues
        • -
        • Diverses petites corrections dans le module SCORM
        • -
        • Le module SCORM affiche correctement les images des utilisateurs
        • -
        • Les activités sont triées par nom dans le filtre d'activités
        • -
        • La recherche dans les glossaires trouve maintenant aussi les termes associés
        • -
        • Les erreurs RSS génèrent un fichier d'erreur RSS valide plutôt qu'un fil RSS non valide
        • -
        • Correction d'un problème de validation de paquets SCORM sous PHP5
        • -
        • Correction d'un problème avec les catégories vides lors des sauvegardes et restaurations
        • -
        • Meilleur XHTML dans le wiki
        • -
        • Correction d'un bogue dans les rapports de chat pour la première session d'un chat
        • -
        • Correction d'un problème avec les SCORM lors de la suppression de nombreux ou très gros fichiers
        • -
        • Correction de divers problèmes avec le format « Encyclopédie » des glossaires
        • -
        • Correction d'un bogue d'intégration de SCORM et du code d'archivage (zip)
        • -
        • Correction d'un bogue dans les notifications par courriel format texte des dialogues
        • -
        • Ajout des clefs de sessions dans le bloc Activités sociales
        • -
        • Les sections en trop d'un cours n'apparaissent plus dans le menu de navigation
        • -
        • Corrections pour l'heure d'été dans le calendrier
        • -
        • Une catégorie par défaut est assignée de la première édition d'un test dans un nouveau cours
        • -
        • Correction d'un bogue dans le module PayPal lors de l'acceptation d'un montant
        • -
        • Correction d'un bogue dans les cours : choix impossibles
        • -
        -
        - -
        - - -

         

        - -

        Moodle 1.4.2 (5 novembre 2004)

        - -

        (Cette version contient d'importants correctifs de sécurité. Pour cette raison, nous recommandons fortement aux administrateurs de sites utilisant une version antérieure de Moodle d'en faire la mise à jour au plus vite !)

        - -
        -
        Quelques améliorations importantes de sécurité
        -
        -
          -
        • Améliorations de la vérification et du nettoyage des paramètres des scripts utilisés à de nombreux endroits dans Moodle (grands mercis à Petr Skoda pour son récent audit de sécurité !)
        • -
        • Ajout de guillemets à certains paramètres SQL du module Glossaire pour prévenir des injections possibles
        • -
        -
        - -
        Quelques petites nouvelles fonctionnalités
        -
        -
          -
        • Nouveau module d'authentification PAM permettant l'authentification directe sur Unix/Linux
        • -
        • Les responsables de cours peuvent maintenant restaurer les cours dans de nouveaux cours ou dans des cours existants
        • -
        • Les messages des forums incluent maintenant un en-tête détaillé pour permettre un suivi correct des sujets dans les clients de courriel
        • -
        -
        - -
        Et un paquet d'autres corrections de bogues
        -
        -
          - -
        • La sauvegarde s'en sort mieux en cas d'erreurs (par exemple si elle est interrompue) et peut nettoyer les fichiers incomplets
        • -
        • Correctif pour l'authentification à partir d'une base de données PostgreSQL
        • -
        • Correctifs pour certaines parties de l'installation avec une base de données PostgreSQL
        • -
        • Les lignes de sujets des forums ne sont maintenant séparées que dans l'affichage des activités récentes
        • -
        • Maintenant, l'inscription par l'intermédiaire d'une base de données fonctionne réellement :-)
        • -
        • Correctifs SQL pour la création des canaux RSS à partir de PostgreSQL
        • -
        • Ajout du protocole rtsp à la liste des protocoles autorisés dans le texte HTML
        • -
        • Les profils utilisateurs et la page de modification du profil peuvent être appelés sans paramètres
        • -
        • Mise à jour de la librairie xmlize à sa dernière version
        • -
        • Mise à jour de la librairie phpmailer à sa dernière version
        • -
        • Divers changements cosmétiques dans le code
        • -
        • Le menu Administration permet maintenant la sauvegarde et la restauration du « cours de site » (page d'accueil)
        • -
        • Correction d'un bogue d'affichage dans l'index des forums (n'apparaissant que sous PHP5)
        • -
        • La fonction de mise en surbrillance (par exemple dans les résultats de recherche) supprimait les barres obliques inverses
        • -
        • L'information en provenance de LDAP est maintenant décodée en utf8
        • -
        • Les listes de cours fonctionnent mieux, lorsqu'il y a un très grand nombre de cours
        • -
        • Deux bogues corrigés dans le module SCORM (une faute de frappe et un problème avec onbeforeunload)
        • -
        • Quelques améliorations cosmétiques lors de l'impression des textes, des en-têtes et des pieds de page dans le module Leçon
        • -
        • Le calendrier fonctionne maintenant correctement, même si l'on se connecte sous un autre nom
        • -
        • Correction de quelques balises PHP abrégées restantes
        • -
        • Mélange plus aléatoire des questions aléatoires (correction d'un bogue introduit dans la version 1.4)
        • -
        • Quand des enseignants sont retirés d'un cours, ils sont également retirés de tous les groupes de ce cours
        • -
        • Correction de strip_pages dans le module Wiki
        • -
        • Corrections dans la détection du jeu de caractères dans les sauvegardes et le filtre multilingue, sous PHP5
        • -
        -
        - -
        - -

         

        - -

        Moodle 1.4.1 (12 septembre 2004)

        - -
        -
        Quelques petites nouvelles fonctionnalités
        +
        + +

        Nouveautés de Moodle 1.3.3 (16 juillet 2004)

        +
          +
          +
          Mises à jour
          +
          +
            +
          • La librairie ADOdb a été mise à jour pour être compatible avec PHP 5.0
          • +
          • Améliorations dans la détection et la conversion des URLs lors des sauvegardes
          • +
          +
          +
          Corrections de bogues
          +
          +
            +
          • Un trou de sécurité impliquant les arguments du fichier help.php a été bouché
          • +
          • Un trou de sécurité impliquant les réglages de langue a été bouché
          • +
          • Quelques corrections pour la modification des fichiers de langues comportant des guillemets droits (")
          • +
          • Plusieurs petits problèmes corrigés dans les glossaires
          • +
          • Quelques correctifs dans le module Scorm
          • +
          +
          +
          +
        + +
        + +

        Nouveautés de Moodle 1.3.2 (9 juillet 2004)

        +
          +
          +
          Mises à jour
            -
          • Nouveau filtre « Protection adresses de courriel » qui cache toutes les adresses de courriel dans tous les textes. Cela évite la collection des adresses de courriel par des robots
          • -
          • Possibité de restreindre les adresses de courriel permises (voir le fichier « config-dist.php » pour des détails)
          • -
          • Instructions supplémentaires pour les traducteurs, intégrées dans l'interface de traduction
          • -
          • Nouvelle page d'aide pour les chemins d'accès
          • +
          • Le module SCORM est maintenant inclus en standard
          • +
          • Quelques nouvelles langues (Malais, Estonien)
          • +
          • Beaucoup plus de langues sont maintenant à jour en version 1.3.x
          -
          Et quelques bogues corrigés
          +
          Corrections de bogues
            -
          • Amélioration de la performance lors de l'affichage des historiques
          • -
          • Amélioration de la pagination et de la performance dans les glossaires
          • -
          • Les articles des glossaires sont affichés correctement même s'ils appartiennent à plusieurs catégories
          • -
          • Pas de redéclaration de la variable auth_user_login lors des échecs de connexion
          • -
          • Correction de deux icônes manquantes dans le thème « cordoroyblue »
          • -
          • Le bouton manquant « Nouvel événement » a été ajouté sur la page des prochains événements
          • -
          • Ajout systématique de addslashes dans les messages du chat (avec le démon) avant leur incorporation dans la base de données
          • -
          • Corrections pour le traitement des périodes d'inscriptions fixes, lorsque cette option est activée dans un cours
          • -
          • On ne suppose plus que l'identifiant du cours de site (défini comme SITEID) est toujours 1
          • -
          • La limite de mémoire par défaut a été augmentée au delà de 16Mo, pour permettre à Moodle de continuer de fonctionner même lorsque des problèmes de mémoire surviennent inopinément
          • -
          • Les binettes sont maintenant transformées en images dans les textes en format Markdown
          • -
          • Les ateliers apparaissent de nouveau dans les activités récentes
          • -
          • Le fichier file.php ne peut maintenant être utilisé que pour accéder aux données à l'intérieur des cours
          • -
          • Meilleur comportement du bloc de calendrier sur la page d'accueil
          • -
          • Correction du bogue des guillemets avec la spécification des bases de données PostgreSQL produite par l'installeur
          • -
          • Correction de l'affichage parfois déficient des réponses correctes durant la relecture des tests
          • -
          • Les balises <tt> et <code> sont maintenant autorisées
          • -
          • Le code JavaScript dans les résumés des sections, des cours et les étiquettes n'est plus filtré
          • -
          • Correction d'un rare bogue LDAP pouvant causer la non-création de nouveaux comptes
          • +
          • Un trou de sécurité possible sur les serveurs avec d'anciennes versions de PHP a été bouché. Si vous utilisez une version de PHP antérieure à la 4.3, c'est une bonne idée de mettre à jour votre version of Moodle
          • +
          • Correction importante dans les forums, lors de leur utilisation avec des groupes
          • +
          • La modification des profils des enseignants est visible même pour les groupes séparés d'une classe
          • +
          • Les sujets affichés dans les activités récentes ne sont plus corrompus par le passage à la ligne, pour les langues écrites sur plusieurs octets
          • +
          • Quelques problèmes dans l'importation et l'exportation des glossaires ont été corrigés
          • +
          • La sauvegarde gère mieux les fichiers temporaires
          • +
          • D'autres petites corrections ici et là
          +
        -

         

        +
        -

        Moodle 1.4 (31 août 2004)

        - +

        Nouveautés de Moodle 1.3.1 (4 juin 2004)

        +
          +
          +
          Corrections de bogues
          +
          +
            +
          • Correction de code HTML compromettant la stabilité de l'éditeur WYSIWYG sur IE6
          • +
          • Plusieurs bogues corrigés dans divers filtres de liens automatiques
          • +
          • Amélioration cosmétique de la barre de navigation (à l'aide du caractère »)
          • +
          • Les fichiers Flash ont leur icône propre
          • +
          • L'ajout de liens de cours à l'aide de l'éditeur WYSIWYG est corrigé pour les enseignants
          • +
          • Le bloc Liens vers sections préserve maintenant la section en cours
          • +
          • Les fichiers du site respectent maintenant l'option forcelogin
          • +
          • La mise à jour des blocs sans fonctions de base de données fonctionne maintenant
          • +
          • Mises à jour des langues
          • +
          +
          +
          +
        + +
        + +

        Nouveautés de Moodle 1.3 (25 mai 2004)

        +
          +
          +
          Nouveautés majeures
          +
          +
            +
          • Nouvelle fonction de Calendrier (merci à Jon Papaioannou et au réseau des écoles grecques !)
          • +
          • Nouveau support des Blocs, permettant d'ajouter et de déplacer des blocs sur les pages de cours (merci à Jon Papaioannou, Eloy Lafuente et d'autres !)
          • +
          • Nouveau système RSS permettant de publier des canaux RSS pour les Forums et les Glossaires (et bientôt pour d'autres modules) (merci à Eloy !)
          • +
          • Le filtre Mediaplugin permet l'incorporation de fichiers Quicktime, Flash, et Windows Media.
          • +
          • Un nouveau filtre Noms des activités permet de construire automatiquement des liens vers d'autres activités du même cours, lorsque leur nom est mentionné.
          • +
          +
          +
          Autres nouveautés
          +
          +
            +
          • Nouveau type de ressource « Dossier » pour afficher un dossier complet de fichiers déposés (y compris les sous-dossiers)
          • +
          • Les ressources sous forme de fichiers (déposés ou pages web) affichent maintenant une icône adéquate sur les pages de cours
          • +
          • La plupart des liens HTML internes sont maintenant préservés lors des sauvegardes et restaurations
          • +
          • Il est maintenant possible de passer des arguments HTML standard à des fichiers dans la section Fichiers. Ceci permet d'utiliser du HTML ou du Flash plus élaboré dans les ressources
          • +
          • $CFG->forceloginforprofiles peut être activée pour éviter que les utilisateurs invités (y compris Google) ne voient les profils des utilisateurs au niveau supérieur du site
          • +
          • Lorsque Google est autorisé à accéder à Moodle, la traduction des pages par Google fonctionne également
          • +
          • Les sessions sont maintenant enregistrées dans un dossier interne du dossier de données de Moodle - Cela permet à Moodle de mieux fonctionner sur les clusters de machines et résout quelques problèmes d'expiration de délai lors de l'utilisation de Moodle sur les hôtes web distribués
          • +
          • Les images des utilisateurs peuvent être maintenant facilement supprimées depuis la page du profil de l'utilisateur
          • +
          • Les discussions dans le Chat apparaissent maintenant dans le journal d'activités principal
          • +
          • Les sections cachées des cours peuvent maintenant être complètement masquées pour les étudiants (réglage de cours)
          • +
          • Amélioration des textes des graphiques pour quelques langues, en utilisant de polices Unicode
          • +
          • Amélioration de l'interface pour la gestion des barèmes, et meilleur traitement dans les sites multilingues
          • +
          • Tous les étudiants peuvent maintenant être désinscrits d'un cours d'un seul clic (sur la page Étudiants)
          • +
          • Les abonnés des Forums peuvent maintenant être inscrits ou désinscrits manuellement en groupes
          • +
          • Meilleur traitement de quelques caractères européens dans les noms de fichiers et d'utilisateurs
          • +
          • Les remarques des devoirs cachés ne sont pas envoyées par courriel jusqu'à ce que le devoir soit à nouveau visible
          • +
          • Support de l'importation des tests Blackboard amélioré
          • +
          • Le script cron peut être lancé depuis un exécutable situé dans n'importe quel dossier
          • +
          • L'éditeur WYSIWYG a été encore amélioré.
          • +
          • L'affichage des activités récentes est maintenant calculé à partir du dernier accès au cours (au maximum les deux derniers jours). Il était calculé jusqu'ici depuis la dernière connexion au site
          • +
          • Les courriels de confirmation sont maintenant en HTML et en texte pur, pour éviter que le lien de confirmation soit cassé
          • +
          • Nouvelles langues : Farsi, Letton, Norvégien (école primaire), version Unicode du chinois traditionnel
          • +
          +
          +
          Corrections de bogues
          +
          +
            +
          • Des centaines de petits bogues ont été corrigés dans tous les domaines, pour améliorer la lisibilité et la robustesse générales
          • +
          • Comme toujours, si vous trouvez un bogue dans Moodle, merci de l'annoncer à notre chasseur de bogues !
          • +
          +

           

          +
          +
          Finalement, n'oubliez pas de jeter un oeil aux nombreux nouveaux modules optionnels en développement, parmi lesquels le module SCORM, le module Wiki, le module HotPotatoes et beaucoup d'autres nouveautés !
          +
          +
        + +
        + +

        Nouveautés de 1.2.1 (25 mars 2004)

        +
          -
          Manchette
          +
          Diverses corrections de bogues
            -
          • Compatibilité avec PHP 5
          • -
          • Nouvel installeur facile à utiliser, qui permet la création du fichier config.php initial
          • -
          • L'installation est maintenant entièrement traduite dans votre langue
          • -
          • Module « Ressources » entièrement réorganisé pour rendre plus facile l'ajout de nouvelles ressources et l'envoi de données aux ressources
          • -
          • Nouveau système d'inscription aux cours, utilisant des modules, par exemple un système de paiement Paypal automatisé, le traitement d'un fichier texte ou le contrôle d'accès à partir d'une base de données externe
          • -
          • Les blocs fonctionnent maintenant sur la page d'accueil, et il est possible d'ajouter une section thématique au-dessus de la partie centrale de cette page
          • -
          • Le module « Chat » inclut maintenant un démon (en PHP, côté serveur) permettant des discussions rapides et extensibles
          • -
          • Nouveau module « Wiki » !
          • -
          • Support du format Markdown pour l'édition des textes
          • -
          • De nombreuses corrections de bogues dans tous les domaines
          • +
          • Correction de divers bogues empêchant parfois l'affichage des graphiques et des résultats des consultations
          • +
          • Amélioration de la sécurité du script de cron
          • +
          • Correction de l'importation des tests WebCT pour permettre de traiter les images manquantes, les réponses courtes et les caractères encodés avec caractère d'échappement
          • +
          • Correction du formatage de la boîte permettant d'insérer des liens dans l'éditeur WISYWIG
          • +
          • Les glossaires ne peuvent plus ajouter des liens dans les noms d'activités qui sont déjà des liens
          • +
          • Correction des calculs de fuseau horaires lorsque l'utilisateur n'est pas présent
          • +
          • Les caracters comme :( ne sont plus convertis en binettes dans le code JavaScript des textes HTML filtrés
          • +
          • Amélioration de la gestion des évaluations des messages dans les forums lorsque l'option secureforms est activée
          • +
          • La création des questions à choix multiples est réglée par défaut à une seule réponse correcte
          • +
          • Les utilisateurs invités ne peuvent plus voir les adresses de courriel d'un utilisateur si l'option « Seuls les membres du cours sont autorisés à voir mon adresse de courriel » a été choisie par cet utilisateur
          • +
          • L'administrateur principal possède maintenant l'entrée la plus petite dans user_admins ; ce n'est plus l'administrateur avec le plus petit userid
          • +
          • Plugin flash MP3 modifié pour améliorer la luminosité du bouton Jouer sur les écrans sombres
          • +
          • Diverses améliorations dans de nombreux fichiers de langues
          - -
          Sous le capot
          -
          -
            -
          • Le module « Ressources » possède son propre menu Ajouter. Il utilise des sous-modules basés sur des classes, rendant plus facile l'ajout de nouveaux types de ressources à ce menu
          • -
          • Le module « Test » a été reorganisé en modules de types de question, basés sur des classes
          • -
          • Le processus d'inscription aux cours a été réorganisé en modules d'inscription, basés sur des classes
          • -
          • Les formats d'affichage des « Glossaires » sont maintenant basés sur des noms, et il est ainsi plus facile d'en ajouter de nouveaux
          • -
          • Fonctionnement amélioré de nombreux modules lors de leur utilisation sur la page d'accueil du site
          • -
          • Structure des filtres révisée, plus rapide et maintenant compatible avec Turck MMcache
          • -
          • L'ajout d'activités est moins strict lorsque certains champs sont laissés vides
          • -
          • On peut maintenant modifier les colonnes des tables PostgreSQL à l'aide de table_column()
          • -
          • La génération RSS a été accélérée de manière substantielle, et surcharge beaucoup moins le cron
          • -
          • Certains gros modules ont leur fichier lib.php séparé en locallib.php pour diminuer l'utilisation de la mémoire
          • -
          -
          - -
          Langues et localisation
          -
          -
            -
          • Presque toutes les langues ont été mises à jour
          • -
          • Moodle peut remplacer le jeu de caractères par défaut fixé par Apache, ce qui rend les langues plus fiables
          • -
          • Les textes des langues codées sur plusieurs octets reviennent à la ligne correctement
          • -
          • Meilleur traitement des réglages locaux (locale) et des encodages sur les sites très multilingues (comme moodle.org)
          • -
          • Nouvelles langues : slovène et hébreux !
          • -
          -
          - -
          Sécurité
          -
          -
            -
          • Quelques entrées XSS possibles ont été fermées et quelques divulgations de chemins supprimées
          • -
          • Les attributs des balises HTML sont maintenant traités beaucoup plus exhaustivement, pour se défendre des scripts délétères
          • -
          • Les pages des profils utilisateur ne sont par défaut plus accessibles aux étrangers
          • -
          • Tout le texte est maintenant nettoyé lors de la sortie (output), et plus seulement à l'entrée (input)
          • -
          • Les adresses de courriel ne sont plus utilisées sur les messages sortant, si l'utilisateur le demande
          • -
          • Un nouveau réglage loginhttps permet d'utiliser le protocole sécurisé https pour la connexion, et de repasser ensuite en protocole http
          • -
          -
          - -
          Administration
          -
          -
            -
          • Nouvelles interfaces pour l'ajout et le retrait d'étudiants, d'enseignants, de créateurs de cours et d'administrateurs
          • -
          • Les échecs de connexion sont enregistrés et peuvent être affichés aux utilisateurs lors d'une prochaine connexion valable
          • -
          • Les historiques permettent l'affichage par groupe et par type d'erreur
          • -
          • Les modules fonctionnent maintenant de façon plus cohérente sur la page d'accueil du site
          • -
          • Les « étudiants » des activités de la page d'accueil peuvent être soit tous les utilisateurs du site, soit les utilisateurs inscrits à au moins un cours
          • -
          • L'envoi de courriels peut être activé et désactivé directement dans le profil des utilisateurs
          • -
          • Les visiteurs peuvent être automatiquement connectés en tant qu'utilisateurs anonymes
          • -
          • Le menu « Aller à... » affiche toujours le texte « Aller à », pour indiquer plus clairement à quoi il sert
          • -
          • Le menu « Aller à... » regroupe de façon bien plus claire les activités en sections
          • -
          -
          - -
          Authentification
          -
          -
            -
          • Toutes les méthodes d'authentification coexistent avec les comptes créés en interne
          • -
          • Nouveau support de l'authentification par les serveurs First Class
          • -
          • Correctifs pour l'authentification par POP3
          • -
          -
          - -
          Blocs
          -
          -
            -
          • Le système de blocs s'accommode des formats de cours personnalisés et des changements de format de cours
          • -
          • Un nouveau bloc de connexion permet la connexion depuis la page d'accueil du site
          • -
          • Le bloc « Utilisateurs en ligne » affiche sur la page d'accueil les utilisateurs connectés du site
          • -
          -
          - -
          Éditeur WYSIWYG
          -
          -
            -
          • Nouvelle page de configuration de l'éditeur pour l'administrateur
          • -
          • Support des ancrages à l'intérieur des pages
          • -
          • La correction orthographique est supportée dans l'éditeur. Elle requiert le fonctionnement du logiciel « aspell » sur votre serveur
          • -
          -
          - -
          Chat
          -
          -
            -
          • Le module « Chat » inclut maintenant un démon (en PHP, côté serveur) permettant des discussions rapides et extensibles
          • -
          -
          - -
          Sondage
          -
          -
            -
          • Remanié de façon significative pour améliorer le fonctionnement, avec plus d'options disponibles
          • -
          -
          - -
          Forum
          -
          -
            -
          • Divers correctifs lors de l'utilisation des groupes
          • -
          • Les utilisateurs peuvent choisir de recevoir les messages en résumés journaliers (sujets des messages ou messages complets)
          • -
          • Les listes des discussions sont maintenant paginées
          • -
          • Les enseignants ont maintenant un contrôle total sur les abonnements aux forums, et peuvent abonner n'importe qui à volonté
          • -
          • La date du dernier message est maintenant abrégée et liée au dernier message
          • -
          • La page d'index des forums indique les canaux RSS disponibles
          • -
          • Les courriels en format HTML sont plus jolis, grâce à l'utilisation d'une feuille de style
          • -
          • Les messages des forums vieux de plus de deux jours ne sont plus envoyés par courriel, pour éviter des engorgements de courriels non désirés
          • -
          • Les courriels bloqués sont enregistrés, afin que les enseignants puissent les voir
          • -
          • Les fils de discussions peuvent être coupés de la discussion principale, pour créer une nouvelle discussion
          • -
          -
          - -
          Glossaire
          -
          -
            -
          • Les articles de glossaire peuvent être définis comme toujours modifiables
          • -
          • La page d'index des glossaires indique les canaux RSS disponibles
          • -
          • De nombreux correctifs
          • -
          -
          - -
          Test
          -
          -
            -
          • Nouveau chronomètre (flottant) pour les tests avec durée limitée
          • -
          • Les tentatives peuvent être restreintes à certains ordinateurs spécifiques
          • -
          • Les tests peuvent maintenant demander un mot de passe
          • -
          • Nouveau type de question : Question calculée
          • -
          • Les questions numériques supportent maintenant les unités
          • -
          • Les questions peuvent être prévisualisées dans les pages d'édition
          • -
          • Les questions peuvent être exportées en divers formats
          • -
          • Traitement plus intelligent de la liste des questions par catégorie lors de leur édition
          • -
          • Nouveau format d'exportation XML (encore incomplet), englobera ultérieurement toutes les fonctionnalités des tests
          • -
          • Les réponses courtes peuvent maintenant contenir toutes sortes d'étranges caractères
          • -
          -
          - -
          Ressource
          -
          -
            -
          • L'ajout de ressources se passe maintenant en une étape, avec plus de contrôle sur les options
          • -
          • Les types de ressource Page web, Lien web, Fichier déposé et Programme externe ont été combinés en un seul type !
          • -
          • Les ressources de type Programme sont remplacées par des paramètres permettant une grande interaction avec des ressources externes, qu'elle soient hébergées sur d'autres serveurs ou intégrées à Moodle.
          • -
          • Des formulaires escamotables permettent de rendre l'interface moins complexe pour les débutants, sans handicaper les utilisateurs chevronnés
          • -
          -
          - -
          SCORM
          -
          -
            -
          • De nombreux correctifs et améliorations. Le module fonctionne avec une éventail encore plus large de paquets SCORM
          • -
          • Vérification supplémentaire optionnelle du fichier « manifest »
          • -
          -
          -
          +
        -

         

        +
        -
        - N'oubliez pas de jeter un coup d'oeil aux nombreux modules optionnels innovateurs en développement.

        - Si vous découvrez des bogues dans cette version, merci de nous les annoncer sur moodle.org/bugs, afin que nous puissions les corriger dans la prochaine version. -
        - -

        Notes de mise à jour des versions antérieures

        -

         

        -

        Documentation Moodle

        -

        Version: $Id$

        - - +

        Nouveautés de Moodle 1.2 (20 mars 2004)

        + +
          +
          +
          + Nouveautés majeures +
          +
          +
            +
          • + Nouveau support des groupes à l'intérieur des cours (avec de nombreuses options) +
          • +
          • + Des filtres de texte permettent de traiter tous les textes de Moodle, notamment pour les liens automatiques, notations mathématiques, contenus multi-lingues et encore infiniment d'autres possibilités +
          • +
          • + Un nouveau et fantastique module Glossaire (merci à Williams Castillo !) avec de nombreuses façons de construire des activités d'apprentissage basées sur la recherche de définitions +
          • +
          • + Un excellent module Leçon (merci à Ray Kingdon !) permet de créer facilement des contenus interactifs avec divers cheminements et des questions à choix multiples +
          • +
          • + Un nouveau module Étiquette permet d'intégrer du code HTML dans la page du cours +
          • +
          • + Un éditeur WYSIWYG amélioré, plus rapide et plus compatible que l'ancien +
          • +
          • + Des sauvegardes automatiques peuvent être programmées par l'administrateur pour tous les cours +
          • +
          +
          +
          + Cours +
          +
          +
            +
          • + Les activités peuvent être indentées dans l'aperçu du cours, permettant une meilleure structure +
          • +
          • + Un nouveau rapport des activités récentes permet de voir plus facilement ce qui s'est passé récemment +
          • +
          • + Un nouveau bouton permet de consulter les historiques de chaque activité de façon séparée +
          • +
          • + Le bouton « Annuler » est maintenant toujours fonctionnel +
          • +
          • + Meilleure « Index » pour visualiser tous les modules +
          • +
          • + Améliorations de l'affichage des participants, avec des pages et une fonction de recherche +
          • +
          • + Les téléchargements en format Excel sont plus compatibles avec les différents systèmes d'exploitation +
          • +
          • + Meilleurs messages d'erreur lors de l'ajout et de la modification des activités +
          • +
          • + Le champ de recherche ne se focalise plus (cela causait un défilement inopportun dans les longs cours) +
          • +
          • + Lien permettant aux étudiants de s'inscrire eux-mêmes sur la page de cours +
          • +
          • + Lien permettant aux étudiants de changer leur mot de passe sur la page de cours +
          • +
          • + On peut maintenant permettre aux étudiants de consulter leurs propres rapports d'activité (réglage de cours) +
          • +
          • + Les enseignants peuvent parcourir les fichiers de leurs cours à la recherche d'images à l'aide du nouvel éditeur WYSIWYG +
          • +
          • + Nouvelle image de boîte vide pour figurer la destination lors du déplacement d'activités +
          • +
          • + Les accès sont désormais enregistrés par cours. Les listes à disposition des participants font plus de sens ainsi +
          • +
          • + La barre de navigation des activités a maintenant des boutons pour les activités précédentes et suivantes +
          • +
          • + Les dates des fichiers étaient incorrectes sur certains systèmes - c'est maintenant corrigé +
          • +
          • + Les anciens utilisateurs du chat ne sont plus affichés dans les activités récentes +
          • +
          +
          +
          + Administration du site +
          +
          +
            +
          • + Un trou de sécurité permettant aux enseignants de se connecter sous le nom d'administrateurs inscrits comme étudiants dans leurs cours a été corrigé +
          • +
          • + Un nouveau réglage « forcelogin » peut obliger les visiteurs à se connecter avant de voir quoi que ce soit sur le site +
          • +
          • + Un nouveau réglage « opentogoogle » permet à Google ainsi qu'aux visiteurs arrivant sur le site par l'intermédiaire de Google de se connecter comme utilisateurs invités +
          • +
          • + Un nouveau réglage « timezone » permet de définir un fuseau horaire par défaut pour tout le site +
          • +
          • + Un nouveau réglage « deleteunconfirmed » permet de spécifier combien de temps attendre jusqu'à la confirmation des comptes créés par courriel +
          • +
          • + Un nouveau réglage « allowunenroll » permet ou interdit aux étudiants de se désinscrire eux-mêmes des cours auxquels ils participent +
          • +
          • + Un nouveau réglage « fullnamedisplay » permet de fixer l'affichage des noms des utilisateurs de façon à ce que les étudiants ne puissent voir que « Prénom Nom », « Nom Prénom » ou « Prénom » +
          • +
          • + Les adresses de courriel des utilisateurs peuvent être désactivées par l'enseignant ou l'administrateur (par exemple pour traiter les adresses non valides qui produisent des rebonds) +
          • +
          • + La taille des fichiers déposés peut être contrôlée dans Moodle à l'aide du paramètre « maxbytes ». Il y a une limite valable pour tout le site (bornée par les limites de PHP), qui est elle-même la limite supérieure pour celle des cours, celle-ci étant la borne supérieure pour la taille des fichiers des activités +
          • +
          • + Les cookies de Moodle peuvent être personnalisés, ce qui est utile si plusieurs Moodles tournent sur le même site) +
          • +
          • + Un script est inclus pour analyser la performance de la base de données (admin/dbperformance.php) +
          • +
          • + Un script est inclus pour vérifier la compatibilité d'un serveur en vue de l'installation de Moodle (lib/compatible.php) +
          • +
          • + Si un fichier appelé « cronextra.php » existe à la racine du serveur, cron le lancera aussi. Cela permet à certains site de mettre en place des tâches de maintenance particulières +
          • +
          • + Les formats de cours ressemblent plus à des extensions, dans des dossiers séparés +
          • +
          • + On peut importer des utilisateurs de fichiers texte +
          • +
          • + Si $CFG->disableuserimages est défini (dans config.php), les utilisateurs ne peuvent pas changer leur avatar +
          • +
          • + Si $CFG->admineditalways est défini, l'administrateur peut modifier TOUS les messages à n'importe quel moment +
          • +
          • + Si $CFG->filterall est défini, les noms des activités, sujets des forums, etc. sont également filtrés +
          • +
          • + Support d'utilisateurs de démonstration - les noms de tels utilisateurs sont placés dans une liste dans config.php, par exemple $CFG->restrictusers = 'demo,test,bidon'; +
          • +
          +
          +
          + Thèmes +
          +
          +
            +
          • + Correctifs permettant à Internet Explorer une utilisation plus robuste des feuilles de styles +
          • +
          • + Diverses améliorations et corrections - les thèmes personnalisés doivent être mis à jour ! +
          • +
          +
          +
          + Traductions +
          +
          +
            +
          • + Nouvelles langues : Galego et Lituanien +
          • +
          • + Amélioration de l'interface d'édition des langues - on peut maintenant y choisir la langue en cours et d'éditer séparément chaque fichier +
          • +
          • + La liste des noms de pays peut être traduite, ainsi que les boutons de l'éditeur WYSIWYG, les noms des binettes et les unités (MO, GO, etc.) +
          • +
          • + Les fichiers de langue permettent de définir une direction d'écriture (gauche à droite ou droite à gauche) +
          • +
          • + Les fichiers de langue permettent de définir comment afficher les noms des personnes +
          • +
          • + Les fichiers de langue sont écrits dans un code PHP un peu plus efficient +
          • +
          • + Le bogue qui ajoutait des lignes vides dans les chaînes de caractères de plusieurs lignes est enfin éradiqué +
          • +
          • + Les cours peuvent maintenant « imposer » l'emploi d'une langue spécifique à tous les utilisateurs +
          • +
          +
          +
          + Sauvegarde et restauration +
          +
          +
            +
          • + Des sauvegardes automatiques peuvent être programmées par l'administrateur pour tous les cours +
          • +
          • + Les fichiers de logs sont maintenant totalement restaurés +
          • +
          • + Tous les utilisateurs nécessaires sont maintenant inclus dans les sauvegardes des cours (même ceux qui n'y sont plus inscrits) +
          • +
          • + Diverses améliorations et quelques bogues corrigés +
          • +
          +
          +
          + Filtres et formats de texte +
          +
          +
            +
          • + Avertissement ! Les nouveaux filtres de texte peuvent augmenter sensiblement la charge sur votre serveur, notamment avec des filtres complexes. À utiliser avec précaution +
          • +
          • + Le nouveau filtre glossaire permet de créer automatiquement des liens vers les entrées de glossaire dans tous le Moodle +
          • +
          • + Le nouveau filtre TeX convertit le code TeX écrit dans Moodle en une véritable notation mathématique (images GIF). Un filtre algebra est aussi disponible, avec un format de saisie plus simple (ressemblant à celui des calculatrices) +
          • +
          • + Le nouveau filtre censure permet de filtrer automatiquement les mots inadéquats +
          • +
          • + Le nouveau filtre contenus multi-lingues permet de de saisir des textes en plusieurs langues. Seul le texte correspondant à la langue choisie par l'utilisateur (d'après son profil) sera affiché. +
          • +
          • + La balise peut être utilisée pour éviter la liaison automatique d'un texte +
          • +
          • + Plus de balises HTML sont maintenant acceptée, notamment et toutes les balises +
          • +
          • + Le texte est maintenant correctement filtré là où ce n'était pas le cas auparavant (pour des raisons de sécurité) +
          • +
          +
          +
          + Interface de programmation d'applications (API) pour développeurs +
          +
          +
            +
          • + Un nouveau « Manuel du développeur » est disponible +
          • +
          • + Un nouveau texte sur la « Philosophie » de Moodle est disponible ;-) +
          • +
          • + Améliorations des modèles (templates) pour nouveaux modules +
          • +
          • + Les modules doivent désormais indiquer la version minimale de Moodle avec laquelle ils sont compatibles +
          • +
          • + Les scripts peuvent indiquer grâce à la fonction print_header() si une page est écrite en XML +
          • +
          • + Chaque module peut enregistrer et récupérer les préférences des utilisateurs conservées entre les connexions +
          • +
          +
          +
          + Chats +
          +
          +
            +
          • + Les sessions de chat peuvent être maintenant supprimées +
          • +
          • + Les horaires des chats annoncés indiquent maintenant le fuseau horaire, pour lever toute ambiguïté +
          • +
          +
          +
          + Forums +
          +
          +
            +
          • + Les préférences d'affichage des forums sont conservées entre les connexions +
          • +
          • + Le lien « Niveau supérieur » est présent sur tous les messages pour une navigation plus rapide dans les forums +
          • +
          • + Les ancrages permettent le référencement des messages dans tous les types d'affichage +
          • +
          • + Améliorations des crons lancés manuellement, ainsi que des rapports d'erreur d'envoi par courriel +
          • +
          • + Affichage du bouton d'évaluation aux seuls endroits où l'évaluation est possible +
          • +
          • + Amélioration importante des versions courriel texte des messages des forums en HTML +
          • +
          • + Quand on répond à un message, un aperçu des autres réponses est affiché +
          • +
          • + Quand on utilise l'éditeur WYSIWYG pour écrire un message, les autres formats ne sont pas disponibles +
          • +
          +
          +
          + Journaux +
          +
          +
            +
          • + L'éditeur WYSIWYG peut être utilisé dans les questions d'un journal +
          • +
          • + Plusieurs correctifs à la page de rapport lors de l'évaluation des contributions à un journal +
          • +
          +
          +
          + Tests +
          +
          +
            +
          • + Les questions et les catégories peuvent désormais être modifiées sans ouvrir de test +
          • +
          • + Toutes les questions peuvent profiter de tous les formats d'édition de Moodle +
          • +
          • + Nouveau format d'importation : format GIFT (c'est le nouveau format d'importation par défaut) +
          • +
          • + Nouveau format d'importation : format Course Test Manager +
          • +
          • + Nouveau format d'importation : format WebCT +
          • +
          • + Nouveau format d'importation : format Aiken +
          • +
          • + Les questions à réponse courte peuvent utiliser des caractères génériques (*), par exemple « caract*res » +
          • +
          • + Les images fonctionnent dans les questions de catégories externes publiées +
          • +
          • + Les aperçus des rapports ont été améliorés pour afficher plus d'informations et permettre la suppression de tentatives +
          • +
          • + Ajout d'un rapport de test détaillé pour l'analyse statistique +
          • +
          • + Les questions de tous les types peuvent avoir jusqu'à 10 réponses chacune +
          • +
          • + Lors de l'édition de tests, les menus n'ont plus besoin de bouton. Il suffit de sélectionner depuis le menu +
          • +
          • + Le bogue qui survenait lors d'un re-calcul des notes de CERTAINS tests avec des questions aléatoires est corrigé +
          • +
          • + Le bogue qui survenait lors de la sauvegarde des tests avec des questions aléatoires est corrigé +
          • +
          • + Beaucoup d'autres petits bogues corrigés +
          • +
          +
          +
          + Ressources +
          +
          +
            +
          • + Lors du dépôt d'un fichier, les enseignants peuvent parcourir les fichiers plus rapidement +
          • +
          • + De nouveaux réglages permettent l'affichage d'une URL par défaut, d'une page de recherche par défaut et des réglages de fenêtre pop-up par défaut +
          • +
          • + Les fichiers déposés peuvent aussi être affichés dans des fenêtres pop-up +
          • +
          • + Affichage des fenêtres pop-up nettement amélioré lors de l'utilisation de la barre de navigation +
          • +
          • + Les fichiers MP3 sont lancés à l'aide d'un logiciel Flash MP3 intégré +
          • +
          • + Les fichiers Vidéo (QuickTime, Media Player) sont intégrés à l'aide des extensions (plug-in) locaux +
          • +
          +
          +
          + Ateliers +
          +
          +
            +
          • + Modification du traitement des évaluations par les pairs +
          • +
          • + Nouvelle phase d'évaluation +
          • +
          • + Nouvelles options pour la table des meilleurs travaux +
          • +
          +
          +
          + Divers +
          +
          +
            +
          • + Moodle ignore désormais tous les dossiers que Frontpage lui a ajoutés (_vti_cnf) +
          • +
          • + Améliorations HTML -> XHTML en de nombreux endroits +
          • +
          • + Nombreux correctifs pour les bases de données non MySQL +
          • +
          • + Quelques textes fixés dans le code sont maintenant traduisibles +
          • +
          • + Les données du profil utilisateurs sont nettoyées correctement +
          • +
          • + Correctifs pour Moodle incorporé dans un cadre (p. ex. dans Postnuke) +
          • +
          • + Correctifs pour le mode Wiki +
          • +
          • + Les administrateurs ne peuvent plus modifier des comptes externes +
          • +
          • + Les utilisateurs de Qmail peuvent utiliser « qmail » dans le champ smtphosts pour de meilleurs résultats +
          • +
          • + Nombreuses méthodes de redirection, pour passer à travers de bogues de certains navigateurs +
          • +
          • + Améliorations de l'affichage des notes dans le cahier de notes +
          • +
          • + Le profil des étudiants comporte plus de champ à compléter, comme le département et l'institution ; ces informations peuvent être exportées dans les fichiers texte ou Excel +
          • +
          • + Quand un étudiant est ajouté dans un cours en tant qu'enseignant, il est automatiquement désinscrit en tant qu'étudiant +
          • +
          • + Mise à jour de ADOdb (couche base de données) +
          • +
          +
          +
          +
        +
        +
        +

        + Notes de mise à jour des versions antérieures +

        +
        +

        +   +

        +

        + Documentation Moodle +

        +

        + Version: $Id$ +

        diff --git a/lang/fr/docs/releaseold.html b/lang/fr/docs/releaseold.html index 517b11cfae4..9cbad58c6d6 100644 --- a/lang/fr/docs/releaseold.html +++ b/lang/fr/docs/releaseold.html @@ -1,464 +1,101 @@ - - - -Documentation Moodle : Anciennes notes de mise à jour +Documentation Moodle : Notes de mise à jour - + - + + dd {margin-bottom:1em;} + - - -

        Anciennes notes de mise à jour

        - -

        Nouveautés de Moodle 1.3.4 (11 août 2004)

        - -
        -
        Mises à jour
        -
        -
          -
        • Le traitement des glossaires et ressources exportés de la version 1.4 en développement a été rendu compatible
        • -
        • Les utilisateurs avec droits restreints ne peuvent plus modifier les inscriptions
        • -
        -
        -
        Corrections de bogues
        -
        -
          -
        • Un trou de sécurité rapporté, impliquant les arguments du fichier forum/post.php, a été bouché
        • -
        • Un trou de sécurité possible, impliquant les textes des chaînes de caractères de Moodle a été bouché
        • -
        • Correction d'un petit problème (survenant rarement) avec le nombre de tentatives d'un test
        • -
        • Correction de la logique des expressions régulières dans les questions à réponse courte
        • -
        • Correction d'une faute de frappe dans l'installation avec PostgreSQL
        • -
        • Correction de quelques liens dans la documentation
        • -
        -
        -
        - -
        - -

        Nouveautés de Moodle 1.3.3 (16 juillet 2004)

        - -
        -
        Mises à jour
        -
        -
          -
        • La librairie ADOdb a été mise à jour pour être compatible avec PHP 5.0
        • -
        • Améliorations dans la détection et la conversion des URLs lors des sauvegardes
        • -
        -
        -
        Corrections de bogues
        -
        -
          -
        • Un trou de sécurité impliquant les arguments du fichier help.php a été bouché
        • -
        • Un trou de sécurité impliquant les réglages de langue a été bouché
        • -
        • Quelques corrections pour la modification des fichiers de langues comportant des guillemets droits (")
        • -
        • Plusieurs petits problèmes corrigés dans les glossaires
        • -
        • Quelques correctifs dans le module Scorm
        • -
        -
        -
        - -
        - -

        Nouveautés de Moodle 1.3.2 (9 juillet 2004)

        - -
        -
        Mises à jour
        -
        -
          -
        • Le module SCORM est maintenant inclus en standard
        • -
        • Quelques nouvelles langues (Malais, Estonien)
        • -
        • Beaucoup plus de langues sont maintenant à jour en version 1.3.x
        • -
        -
        -
        Corrections de bogues
        -
        -
          -
        • Un trou de sécurité possible sur les serveurs avec d'anciennes versions de PHP a été bouché. Si vous utilisez une version de PHP antérieure à la 4.3, c'est une bonne idée de mettre à jour votre version of Moodle
        • -
        • Correction importante dans les forums, lors de leur utilisation avec des groupes
        • -
        • La modification des profils des enseignants est visible même pour les groupes séparés d'une classe
        • -
        • Les sujets affichés dans les activités récentes ne sont plus corrompus par le passage à la ligne, pour les langues écrites sur plusieurs octets
        • -
        • Quelques problèmes dans l'importation et l'exportation des glossaires ont été corrigés
        • -
        • La sauvegarde gère mieux les fichiers temporaires
        • -
        • D'autres petites corrections ici et là
        • -
        -
        -
        - -
        - -

        Nouveautés de Moodle 1.3.1 (4 juin 2004)

        - -
        -
        Corrections de bogues
        -
        -
          -
        • Correction de code HTML compromettant la stabilité de l'éditeur WYSIWYG sur IE6
        • -
        • Plusieurs bogues corrigés dans divers filtres de liens automatiques
        • -
        • Amélioration cosmétique de la barre de navigation (à l'aide du caractère »)
        • -
        • Les fichiers Flash ont leur icône propre
        • -
        • L'ajout de liens de cours à l'aide de l'éditeur WYSIWYG est corrigé pour les enseignants
        • -
        • Le bloc Liens vers sections préserve maintenant la section en cours
        • -
        • Les fichiers du site respectent maintenant l'option forcelogin
        • -
        • La mise à jour des blocs sans fonctions de base de données fonctionne maintenant
        • -
        • Mises à jour des langues
        • -
        -
        -
        - -
        - -

        Nouveautés de Moodle 1.3 (25 mai 2004)

        - -
        -
        Nouveautés majeures
        -
        -
          -
        • Nouvelle fonction de Calendrier (merci à Jon Papaioannou et au réseau des écoles grecques !)
        • -
        • Nouveau support des Blocs, permettant d'ajouter et de déplacer des blocs sur les pages de cours (merci à Jon Papaioannou, Eloy Lafuente et d'autres !)
        • -
        • Nouveau système RSS permettant de publier des canaux RSS pour les Forums et les Glossaires (et bientôt pour d'autres modules) (merci à Eloy !)
        • -
        • Le filtre Mediaplugin permet l'incorporation de fichiers Quicktime, Flash, et Windows Media.
        • -
        • Un nouveau filtre Noms des activités permet de construire automatiquement des liens vers d'autres activités du même cours, lorsque leur nom est mentionné.
        • -
        -
        -
        Autres nouveautés
        -
        -
          -
        • Nouveau type de ressource « Dossier » pour afficher un dossier complet de fichiers déposés (y compris les sous-dossiers)
        • -
        • Les ressources sous forme de fichiers (déposés ou pages web) affichent maintenant une icône adéquate sur les pages de cours
        • -
        • La plupart des liens HTML internes sont maintenant préservés lors des sauvegardes et restaurations
        • -
        • Il est maintenant possible de passer des arguments HTML standard à des fichiers dans la section Fichiers. Ceci permet d'utiliser du HTML ou du Flash plus élaboré dans les ressources
        • -
        • $CFG->forceloginforprofiles peut être activée pour éviter que les utilisateurs invités (y compris Google) ne voient les profils des utilisateurs au niveau supérieur du site
        • -
        • Lorsque Google est autorisé à accéder à Moodle, la traduction des pages par Google fonctionne également
        • -
        • Les sessions sont maintenant enregistrées dans un dossier interne du dossier de données de Moodle - Cela permet à Moodle de mieux fonctionner sur les clusters de machines et résout quelques problèmes d'expiration de délai lors de l'utilisation de Moodle sur les hôtes web distribués
        • -
        • Les images des utilisateurs peuvent être maintenant facilement supprimées depuis la page du profil de l'utilisateur
        • -
        • Les discussions dans le Chat apparaissent maintenant dans le journal d'activités principal
        • -
        • Les sections cachées des cours peuvent maintenant être complètement masquées pour les étudiants (réglage de cours)
        • -
        • Amélioration des textes des graphiques pour quelques langues, en utilisant de polices Unicode
        • -
        • Amélioration de l'interface pour la gestion des barèmes, et meilleur traitement dans les sites multilingues
        • -
        • Tous les étudiants peuvent maintenant être désinscrits d'un cours d'un seul clic (sur la page Étudiants)
        • -
        • Les abonnés des Forums peuvent maintenant être inscrits ou désinscrits manuellement en groupes
        • -
        • Meilleur traitement de quelques caractères européens dans les noms de fichiers et d'utilisateurs
        • -
        • Les remarques des devoirs cachés ne sont pas envoyées par courriel jusqu'à ce que le devoir soit à nouveau visible
        • -
        • Support de l'importation des tests Blackboard amélioré
        • -
        • Le script cron peut être lancé depuis un exécutable situé dans n'importe quel dossier
        • -
        • L'éditeur WYSIWYG a été encore amélioré.
        • -
        • L'affichage des activités récentes est maintenant calculé à partir du dernier accès au cours (au maximum les deux derniers jours). Il était calculé jusqu'ici depuis la dernière connexion au site
        • -
        • Les courriels de confirmation sont maintenant en HTML et en texte pur, pour éviter que le lien de confirmation soit cassé
        • -
        • Nouvelles langues : Farsi, Letton, Norvégien (école primaire), version Unicode du chinois traditionnel
        • -
        -
        -
        Corrections de bogues
        -
        -
          -
        • Des centaines de petits bogues ont été corrigés dans tous les domaines, pour améliorer la lisibilité et la robustesse générales
        • -
        • Comme toujours, si vous trouvez un bogue dans Moodle, merci de l'annoncer à notre chasseur de bogues !
        • -
        -

         

        -
        -
        Finalement, n'oubliez pas de jeter un oeil aux nombreux nouveaux modules optionnels en développement, parmi lesquels le module SCORM, le module Wiki, le module HotPotatoes et beaucoup d'autres nouveautés !
        -
        - -
        - -

        Nouveautés de 1.2.1 (25 mars 2004)

        - -
        -
        Diverses corrections de bogues
        -
        -
          -
        • Correction de divers bogues empêchant parfois l'affichage des graphiques et des résultats des consultations
        • -
        • Amélioration de la sécurité du script de cron
        • -
        • Correction de l'importation des tests WebCT pour permettre de traiter les images manquantes, les réponses courtes et les caractères encodés avec caractère d'échappement
        • -
        • Correction du formatage de la boîte permettant d'insérer des liens dans l'éditeur WISYWIG
        • -
        • Les glossaires ne peuvent plus ajouter des liens dans les noms d'activités qui sont déjà des liens
        • -
        • Correction des calculs de fuseau horaires lorsque l'utilisateur n'est pas présent
        • -
        • Les caracters comme :( ne sont plus convertis en binettes dans le code JavaScript des textes HTML filtrés
        • -
        • Amélioration de la gestion des évaluations des messages dans les forums lorsque l'option secureforms est activée
        • -
        • La création des questions à choix multiples est réglée par défaut à une seule réponse correcte
        • -
        • Les utilisateurs invités ne peuvent plus voir les adresses de courriel d'un utilisateur si l'option « Seuls les membres du cours sont autorisés à voir mon adresse de courriel » a été choisie par cet utilisateur
        • -
        • L'administrateur principal possède maintenant l'entrée la plus petite dans user_admins ; ce n'est plus l'administrateur avec le plus petit userid
        • -
        • Plugin flash MP3 modifié pour améliorer la luminosité du bouton Jouer sur les écrans sombres
        • -
        • Diverses améliorations dans de nombreux fichiers de langues
        • -
        -
        -
        - -
        - - -

        Nouveautés de Moodle 1.2 (20 mars 2004)

        - -
        -
        Nouveautés majeures
        -
        -
          -
        • Nouveau support des groupes à l'intérieur des cours (avec de nombreuses options)
        • -
        • Des filtres de texte permettent de traiter tous les textes de Moodle, notamment pour les liens automatiques, notations mathématiques, contenus multi-lingues et encore infiniment d'autres possibilités
        • -
        • Un nouveau et fantastique module Glossaire (merci à Williams Castillo !) avec de nombreuses façons de construire des activités d'apprentissage basées sur la recherche de définitions
        • -
        • Un excellent module Leçon (merci à Ray Kingdon !) permet de créer facilement des contenus interactifs avec divers cheminements et des questions à choix multiples
        • -
        • Un nouveau module Étiquette permet d'intégrer du code HTML dans la page du cours
        • -
        • Un éditeur WYSIWYG amélioré, plus rapide et plus compatible que l'ancien
        • -
        • Des sauvegardes automatiques peuvent être programmées par l'administrateur pour tous les cours
        • -
        -
        -
        Cours
        -
        -
          -
        • Les activités peuvent être indentées dans l'aperçu du cours, permettant une meilleure structure
        • -
        • Un nouveau rapport des activités récentes permet de voir plus facilement ce qui s'est passé récemment
        • -
        • Un nouveau bouton permet de consulter les historiques de chaque activité de façon séparée
        • -
        • Le bouton « Annuler » est maintenant toujours fonctionnel
        • -
        • Meilleure « Index » pour visualiser tous les modules
        • -
        • Améliorations de l'affichage des participants, avec des pages et une fonction de recherche
        • -
        • Les téléchargements en format Excel sont plus compatibles avec les différents systèmes d'exploitation
        • -
        • Meilleurs messages d'erreur lors de l'ajout et de la modification des activités
        • -
        • Le champ de recherche ne se focalise plus (cela causait un défilement inopportun dans les longs cours)
        • -
        • Lien permettant aux étudiants de s'inscrire eux-mêmes sur la page de cours
        • -
        • Lien permettant aux étudiants de changer leur mot de passe sur la page de cours
        • -
        • On peut maintenant permettre aux étudiants de consulter leurs propres rapports d'activité (réglage de cours)
        • -
        • Les enseignants peuvent parcourir les fichiers de leurs cours à la recherche d'images à l'aide du nouvel éditeur WYSIWYG
        • -
        • Nouvelle image de boîte vide pour figurer la destination lors du déplacement d'activités
        • -
        • Les accès sont désormais enregistrés par cours. Les listes à disposition des participants font plus de sens ainsi
        • -
        • La barre de navigation des activités a maintenant des boutons pour les activités précédentes et suivantes
        • -
        • Les dates des fichiers étaient incorrectes sur certains systèmes - c'est maintenant corrigé
        • -
        • Les anciens utilisateurs du chat ne sont plus affichés dans les activités récentes
        • -
        -
        -
        Administration du site
        -
        -
          -
        • Un trou de sécurité permettant aux enseignants de se connecter sous le nom d'administrateurs inscrits comme étudiants dans leurs cours a été corrigé
        • -
        • Un nouveau réglage « forcelogin » peut obliger les visiteurs à se connecter avant de voir quoi que ce soit sur le site
        • -
        • Un nouveau réglage « opentogoogle » permet à Google ainsi qu'aux visiteurs arrivant sur le site par l'intermédiaire de Google de se connecter comme utilisateurs invités
        • -
        • Un nouveau réglage « timezone » permet de définir un fuseau horaire par défaut pour tout le site
        • -
        • Un nouveau réglage « deleteunconfirmed » permet de spécifier combien de temps attendre jusqu'à la confirmation des comptes créés par courriel
        • -
        • Un nouveau réglage « allowunenroll » permet ou interdit aux étudiants de se désinscrire eux-mêmes des cours auxquels ils participent
        • -
        • Un nouveau réglage « fullnamedisplay » permet de fixer l'affichage des noms des utilisateurs de façon à ce que les étudiants ne puissent voir que « Prénom Nom », « Nom Prénom » ou « Prénom »
        • -
        • Les adresses de courriel des utilisateurs peuvent être désactivées par l'enseignant ou l'administrateur (par exemple pour traiter les adresses non valides qui produisent des rebonds)
        • -
        • La taille des fichiers déposés peut être contrôlée dans Moodle à l'aide du paramètre « maxbytes ». Il y a une limite valable pour tout le site (bornée par les limites de PHP), qui est elle-même la limite supérieure pour celle des cours, celle-ci étant la borne supérieure pour la taille des fichiers des activités
        • -
        • Les cookies de Moodle peuvent être personnalisés, ce qui est utile si plusieurs Moodles tournent sur le même site)
        • -
        • Un script est inclus pour analyser la performance de la base de données (admin/dbperformance.php)
        • -
        • Un script est inclus pour vérifier la compatibilité d'un serveur en vue de l'installation de Moodle (lib/compatible.php)
        • -
        • Si un fichier appelé « cronextra.php » existe à la racine du serveur, cron le lancera aussi. Cela permet à certains site de mettre en place des tâches de maintenance particulières
        • -
        • Les formats de cours ressemblent plus à des extensions, dans des dossiers séparés
        • -
        • On peut importer des utilisateurs de fichiers texte
        • -
        • Si $CFG->disableuserimages est défini (dans config.php), les utilisateurs ne peuvent pas changer leur avatar
        • -
        • Si $CFG->admineditalways est défini, l'administrateur peut modifier TOUS les messages à n'importe quel moment
        • -
        • Si $CFG->filterall est défini, les noms des activités, sujets des forums, etc. sont également filtrés
        • -
        • Support d'utilisateurs de démonstration - les noms de tels utilisateurs sont placés dans une liste dans config.php, par exemple $CFG->restrictusers = 'demo,test,bidon';
        • -
        -
        -
        Thèmes
        -
        -
          -
        • Correctifs permettant à Internet Explorer une utilisation plus robuste des feuilles de styles
        • -
        • Diverses améliorations et corrections - les thèmes personnalisés doivent être mis à jour !
        • -
        -
        -
        Traductions
        -
        -
          -
        • Nouvelles langues : Galego et Lituanien
        • -
        • Amélioration de l'interface d'édition des langues - on peut maintenant y choisir la langue en cours et d'éditer séparément chaque fichier
        • -
        • La liste des noms de pays peut être traduite, ainsi que les boutons de l'éditeur WYSIWYG, les noms des binettes et les unités (MO, GO, etc.)
        • -
        • Les fichiers de langue permettent de définir une direction d'écriture (gauche à droite ou droite à gauche)
        • -
        • Les fichiers de langue permettent de définir comment afficher les noms des personnes
        • -
        • Les fichiers de langue sont écrits dans un code PHP un peu plus efficient
        • -
        • Le bogue qui ajoutait des lignes vides dans les chaînes de caractères de plusieurs lignes est enfin éradiqué
        • -
        • Les cours peuvent maintenant « imposer » l'emploi d'une langue spécifique à tous les utilisateurs
        • -
        -
        -
        Sauvegarde et restauration
        -
        -
          -
        • Des sauvegardes automatiques peuvent être programmées par l'administrateur pour tous les cours
        • -
        • Les fichiers de logs sont maintenant totalement restaurés
        • -
        • Tous les utilisateurs nécessaires sont maintenant inclus dans les sauvegardes des cours (même ceux qui n'y sont plus inscrits)
        • -
        • Diverses améliorations et quelques bogues corrigés
        • -
        -
        -
        Filtres et formats de texte
        -
        -
          -
        • Avertissement ! Les nouveaux filtres de texte peuvent augmenter sensiblement la charge sur votre serveur, notamment avec des filtres complexes. À utiliser avec précaution
        • -
        • Le nouveau filtre glossaire permet de créer automatiquement des liens vers les entrées de glossaire dans tous le Moodle
        • -
        • Le nouveau filtre TeX convertit le code TeX écrit dans Moodle en une véritable notation mathématique (images GIF). Un filtre algebra est aussi disponible, avec un format de saisie plus simple (ressemblant à celui des calculatrices)
        • -
        • Le nouveau filtre censure permet de filtrer automatiquement les mots inadéquats
        • -
        • Le nouveau filtre contenus multi-lingues permet de de saisir des textes en plusieurs langues. Seul le texte correspondant à la langue choisie par l'utilisateur (d'après son profil) sera affiché.
        • -
        • La balise <nolink> peut être utilisée pour éviter la liaison automatique d'un texte
        • -
        • Plus de balises HTML sont maintenant acceptée, notamment <acronym> et toutes les balises <math>
        • -
        • Le texte est maintenant correctement filtré là où ce n'était pas le cas auparavant (pour des raisons de sécurité)
        • -
        -
        -
        Interface de programmation d'applications (API) pour développeurs
        -
        -
          -
        • Un nouveau « Manuel du développeur » est disponible
        • -
        • Un nouveau texte sur la « Philosophie » de Moodle est disponible ;-)
        • -
        • Améliorations des modèles (templates) pour nouveaux modules
        • -
        • Les modules doivent désormais indiquer la version minimale de Moodle avec laquelle ils sont compatibles
        • -
        • Les scripts peuvent indiquer grâce à la fonction print_header() si une page est écrite en XML
        • -
        • Chaque module peut enregistrer et récupérer les préférences des utilisateurs conservées entre les connexions
        • -
        -
        -
        Chats
        -
        -
          -
        • Les sessions de chat peuvent être maintenant supprimées
        • -
        • Les horaires des chats annoncés indiquent maintenant le fuseau horaire, pour lever toute ambiguïté
        • -
        -
        -
        Forums
        -
        -
          -
        • Les préférences d'affichage des forums sont conservées entre les connexions
        • -
        • Le lien « Niveau supérieur » est présent sur tous les messages pour une navigation plus rapide dans les forums
        • -
        • Les ancrages permettent le référencement des messages dans tous les types d'affichage
        • -
        • Améliorations des crons lancés manuellement, ainsi que des rapports d'erreur d'envoi par courriel
        • -
        • Affichage du bouton d'évaluation aux seuls endroits où l'évaluation est possible
        • -
        • Amélioration importante des versions courriel texte des messages des forums en HTML
        • -
        • Quand on répond à un message, un aperçu des autres réponses est affiché
        • -
        • Quand on utilise l'éditeur WYSIWYG pour écrire un message, les autres formats ne sont pas disponibles
        • -
        -
        -
        Journaux
        -
        -
          -
        • L'éditeur WYSIWYG peut être utilisé dans les questions d'un journal
        • -
        • Plusieurs correctifs à la page de rapport lors de l'évaluation des contributions à un journal
        • -
        -
        -
        Tests
        -
        -
          -
        • Les questions et les catégories peuvent désormais être modifiées sans ouvrir de test
        • -
        • Toutes les questions peuvent profiter de tous les formats d'édition de Moodle
        • -
        • Nouveau format d'importation : format GIFT (c'est le nouveau format d'importation par défaut)
        • -
        • Nouveau format d'importation : format Course Test Manager
        • -
        • Nouveau format d'importation : format WebCT
        • -
        • Nouveau format d'importation : format Aiken
        • -
        • Les questions à réponse courte peuvent utiliser des caractères génériques (*), par exemple « caract*res »
        • -
        • Les images fonctionnent dans les questions de catégories externes publiées
        • -
        • Les aperçus des rapports ont été améliorés pour afficher plus d'informations et permettre la suppression de tentatives
        • -
        • Ajout d'un rapport de test détaillé pour l'analyse statistique
        • -
        • Les questions de tous les types peuvent avoir jusqu'à 10 réponses chacune
        • -
        • Lors de l'édition de tests, les menus n'ont plus besoin de bouton. Il suffit de sélectionner depuis le menu
        • -
        • Le bogue qui survenait lors d'un re-calcul des notes de CERTAINS tests avec des questions aléatoires est corrigé
        • -
        • Le bogue qui survenait lors de la sauvegarde des tests avec des questions aléatoires est corrigé
        • -
        • Beaucoup d'autres petits bogues corrigés
        • -
        -
        -
        Ressources
        -
        -
          -
        • Lors du dépôt d'un fichier, les enseignants peuvent parcourir les fichiers plus rapidement
        • -
        • De nouveaux réglages permettent l'affichage d'une URL par défaut, d'une page de recherche par défaut et des réglages de fenêtre pop-up par défaut
        • -
        • Les fichiers déposés peuvent aussi être affichés dans des fenêtres pop-up
        • -
        • Affichage des fenêtres pop-up nettement amélioré lors de l'utilisation de la barre de navigation
        • -
        • Les fichiers MP3 sont lancés à l'aide d'un logiciel Flash MP3 intégré
        • -
        • Les fichiers Vidéo (QuickTime, Media Player) sont intégrés à l'aide des extensions (plug-in) locaux
        • -
        -
        -
        Ateliers
        -
        -
          -
        • Modification du traitement des évaluations par les pairs
        • -
        • Nouvelle phase d'évaluation
        • -
        • Nouvelles options pour la table des meilleurs travaux
        • -
        -
        -
        Divers
        -
        -
          -
        • Moodle ignore désormais tous les dossiers que Frontpage lui a ajoutés (_vti_cnf)
        • -
        • Améliorations HTML -> XHTML en de nombreux endroits
        • -
        • Nombreux correctifs pour les bases de données non MySQL
        • -
        • Quelques textes fixés dans le code sont maintenant traduisibles
        • -
        • Les données du profil utilisateurs sont nettoyées correctement
        • -
        • Correctifs pour Moodle incorporé dans un cadre (p. ex. dans Postnuke)
        • -
        • Correctifs pour le mode Wiki
        • -
        • Les administrateurs ne peuvent plus modifier des comptes externes
        • -
        • Les utilisateurs de Qmail peuvent utiliser « qmail » dans le champ smtphosts pour de meilleurs résultats
        • -
        • Nombreuses méthodes de redirection, pour passer à travers de bogues de certains navigateurs
        • -
        • Améliorations de l'affichage des notes dans le cahier de notes
        • -
        • Le profil des étudiants comporte plus de champ à compléter, comme le département et l'institution ; ces informations peuvent être exportées dans les fichiers texte ou Excel
        • -
        • Quand un étudiant est ajouté dans un cours en tant qu'enseignant, il est automatiquement désinscrit en tant qu'étudiant
        • -
        • Mise à jour de ADOdb (couche base de données)
        • -
        -
        -
        - -

        Nouveautés de Moodle 1.1.1 (10 septembre 2003) :

        - -
        -
         
        -
        Améliorations générales
        -
        + +

        Notes de mise à jour

        +

        Nouveautés de Moodle 1.1.1 (10 septembre 2003) :

        +
          +
          +
           
          +
          Améliorations générales
          +
            -
          • Améliorations de la traduction dans de nombreuses langues
          • -
          • Cadres corrigés lors de changements de langue dans la documentation
          • -
          • Toutes les balises abrégées de PHP sont supprimées. L'option short_tags n'est plus nécessaire
          • -
          • Les liens dans les résultats de recherche des forums utilisent les ancrages pour un meilleur contexte
          • -
          • Retrait de « target » dans le lien « Supprimer » sur la page de modification des utilisateurs
          • -
          • Dans les cours informels, « Rechercher » est placé plus haut pour éviter que le navigateur ne défile tout seul
          • -
          • La redirection est plus rapide et empêche Internet Explorer d'enregistrer la page intermédiaire dans son historique
          • -
          • La liste des cours a été améliorée lors de l'affichage des cours, avec plus d'informations
          • -
          • Les listes de discipline de cours affichent complètement les cours s'il y en a moins que dix
          • -
          • Les cours masqués sont toujours affichés en dernier dans « Mes cours »
          • -
          • Les responsables de cours peuvent maintenant voir les disciplines et les cours masqués
          • -
          • Des styles sont été ajoutés pour les noms des disciplines et des cours
          • -
          • Suppression des balises dans le texte des questions dans le rapport « Statistique simple »
          • -
          • Ajout des pourcentages aux données téléchargées du rapport « Statistique simple »
          • -
          • Permet les liens vers l'intérieur du site lors de l'utilisation du compte anonyme ?username=guest
          • -
          • Tous les administrateurs peuvent maintenant ajouter et supprimer des responsables de cours
          • -
          • L'administrateur principal peut maintenant changer son nom d'utilisateur et son mot de passe, même avec une authentification externe
          • -
          • On peut indiquer « pas de notes » pour les tests, et aucune note ne sera affichée
          • -
          • Lors de la modification d'une langue, les chaînes manquantes sont créées si possible
          • -
          • Bogue corrigé dans le calcul des dates du journal hebdomadaire
          • -
          • Bogue corrigé dans config.php, qui empêchait le fonctionnement de error_reporting
          • -
          • Bogue corrigé lors de la modification des noms d'utilisateur contenant une apostrophe
          • -
          • Bogue corrigé dans le masquage des adresses de courriel contenant des chiffres
          • -
          • Ajouté le schéma PostgreSQL manquant du module chat
          • -
          • Plusieurs fautes corrigées dans le code de mise à jour PostgreSQL
          • -
          • Correction de quelques variables sans initialisation
          • -
          • Plusieurs bogues corrigés dans le module atelier
          • +
          • Améliorations de la traduction dans de nombreuses langues
          • +
          • Cadres corrigés lors de changements de langue dans la documentation
          • +
          • Toutes les balises abrégées de PHP sont supprimées. + L'option short_tags n'est plus nécessaire
          • +
          • Les liens dans les résultats de recherche des forums utilisent les ancrages + pour un meilleur contexte
          • +
          • Retrait de « target » dans le lien + « Supprimer » sur la page de modification des utilisateurs
          • +
          • Dans les cours informels, « Rechercher » est placé + plus haut pour éviter que le navigateur ne défile tout seul
          • +
          • La redirection est plus rapide et empêche Internet Explorer + d'enregistrer la page intermédiaire dans son historique
          • +
          • La liste des cours a été améliorée lors de + l'affichage des cours, avec plus d'informations
          • +
          • Les listes de discipline de cours affichent complètement les cours s'il + y en a moins que dix
          • +
          • Les cours masqués sont toujours affichés en dernier dans + « Mes cours »
          • +
          • Les responsables de cours peuvent maintenant voir les disciplines et les cours + masqués
          • +
          • Des styles sont été ajoutés pour les noms des disciplines + et des cours
          • +
          • Suppression des balises dans le texte des questions dans le rapport + « Statistique simple »
          • +
          • Ajout des pourcentages aux données téléchargées + du rapport « Statistique simple »
          • +
          • Permet les liens vers l'intérieur du site lors de l'utilisation du compte + anonyme ?username=guest
          • +
          • Tous les administrateurs peuvent maintenant ajouter et supprimer des + responsables de cours
          • +
          • L'administrateur principal peut maintenant changer son nom d'utilisateur et + son mot de passe, même avec une authentification externe
          • +
          • On peut indiquer « pas de notes » pour les tests, et + aucune note ne sera affichée
          • +
          • Lors de la modification d'une langue, les chaînes manquantes sont + créées si possible
          • +
          • Bogue corrigé dans le calcul des dates du journal hebdomadaire
          • +
          • Bogue corrigé dans config.php, qui empêchait le fonctionnement + de error_reporting
          • +
          • Bogue corrigé lors de la modification des noms d'utilisateur contenant + une apostrophe
          • +
          • Bogue corrigé dans le masquage des adresses de courriel contenant des + chiffres
          • +
          • Ajouté le schéma PostgreSQL manquant du module chat
          • +
          • Plusieurs fautes corrigées dans le code de mise à jour PostgreSQL
          • +
          • Correction de quelques variables sans initialisation
          • +
          • Plusieurs bogues corrigés dans le module atelier
          - -
          +
        +
        -

        Nouveautés de Moodle 1.1 (28 août 2003) :

        - -
        -
         
        -
        Modifications pricipales
        -
        +

        Nouveautés de Moodle 1.1 (28 août 2003) :

        +
          +
          +
           
          +
          Modifications pricipales
          +
            -
          • Un système de backup complètement nouveau permet d'effectuer des copies de sauvegarde et de les restaurer (Merci, Eloy !)
          • -
          • Un nouveau moduleatelier pour l'évaluation par les pairs (merci, Ray !)
          • +
          • Un système de backup complètement nouveau + permet d'effectuer des copies de sauvegarde et de les restaurer (Merci, Eloy !)
          • +
          • Un nouveau moduleatelier pour l'évaluation par les + pairs (merci, Ray !)
          • Un nouveau module chat pour les discussions synchrones
          • -
          • Tout nouveau gestionnaire de cours permettant de travailler avec un grand nombre de cours (testé avec 3700 cours)
          • -
          • Barèmes de notation personnalisés pouvant être utilisés partout dans un cours
          • +
          • Tout nouveau gestionnaire de cours permettant de travailler + avec un grand nombre de cours (testé avec 3700 cours)
          • +
          • Barèmes de notation personnalisés pouvant + être utilisés partout dans un cours
          • Améliorations des performances dans de nombreux domaines
          @@ -470,27 +107,45 @@
          • Ré-organisation de menu d'administration pour le rendre plus clair
          • -
          • Les disciplines de cours peuvent être emboîtées et triées alphabétiquement ou manuellement
          • -
          • Les cours et les disciplines de cours peuvent être cachées pour les étudiants
          • -
          • Les descriptions et noms des cours peuvent être trouvées lors de recherches par mots-clef
          • +
          • Les disciplines de cours peuvent être emboîtées et + triées alphabétiquement ou manuellement
          • +
          • Les cours et les disciplines de cours peuvent être cachées pour les + étudiants
          • +
          • Les descriptions et noms des cours peuvent être trouvées lors de + recherches par mots-clef
          • Les disciplines avec de nombreux cours sont complètement paginées
          • -
          • Antémémoire web des feuilles de styles et des images améliorée
          • -
          • Une fois connecté, « Mes cours » est affiché sur la page d'accueil.
          • -
          • Ajout d'une page non liée pour afficher TOUTES les images des utilisateurs d'un coup (voir /userpix)
          • -
          • Le réglage « secureforms » est désactivé par défaut
          • -
          • Moodle fonctionne maintenant que « magic quotes » soit activé ou non
          • +
          • Antémémoire web des feuilles de styles et des images + améliorée
          • +
          • Une fois connecté, « Mes cours » est affiché sur la + page d'accueil.
          • +
          • Ajout d'une page non liée pour afficher TOUTES les images des + utilisateurs d'un coup (voir /userpix)
          • +
          • Le réglage « secureforms » est désactivé par + défaut
          • +
          • Moodle fonctionne maintenant que « magic quotes » soit activé + ou non
          • Les images dans /pix ont été réorganisées
          • -
          • Les courriels en format HTML sont mieux formatés pour une meilleure compatibilité
          • -
          • Les courriels non remis et retournés sont maintenant envoyés à l'administrateur
          • -
          • Les tâches cron demandent moins de temps CPU et les inscriptions à doubles sont aussi nettoyées
          • -
          • Amélioration de l'affichage des historiques avec un très grand nombre de pages et une souplesse accrue
          • -
          • Les historiques des utilisateurs fonctionnent au niveau du site (affichant TOUS les historiques du site)
          • -
          • Les utilisateurs ayant un compte manuel peuvent récupérer leur mot de passe
          • -
          • Meilleur système pour définir et imprimer les fichiers d'aides des modules d'activité principaux
          • +
          • Les courriels en format HTML sont mieux formatés pour une meilleure + compatibilité
          • +
          • Les courriels non remis et retournés sont maintenant envoyés + à l'administrateur
          • +
          • Les tâches cron demandent moins de temps CPU et les inscriptions + à doubles sont aussi nettoyées
          • +
          • Amélioration de l'affichage des historiques avec un très grand + nombre de pages et une souplesse accrue
          • +
          • Les historiques des utilisateurs fonctionnent au niveau du site + (affichant TOUS les historiques du site)
          • +
          • Les utilisateurs ayant un compte manuel peuvent récupérer leur mot + de passe
          • +
          • Meilleur système pour définir et imprimer les fichiers d'aides des + modules d'activité principaux
          • Les modules d'activité ont maintenant des réglages
          • -
          • Les adresses de courriel sont maintenant complètement masquées (pour tromper les robots aspirateurs)
          • +
          • Les adresses de courriel sont maintenant complètement masquées + (pour tromper les robots aspirateurs)
          • Il y a maintenant un index des fichiers d'aide
          • -
          • Le module supplémentaire Library (de Mark Kimes') est maintenant supporté s'il est installé (voir les contributions à Moodle pour le code source de Library)
          • +
          • Le module supplémentaire Library (de Mark Kimes') est maintenant + supporté s'il est installé (voir les contributions à Moodle + pour le code source de Library)
          @@ -501,15 +156,22 @@
            -
          • On peut maintenant supprimer aux enseignants les privilèges de modification de leurs cours
          • -
          • Les enseignants peuvent maintenant inscrire manuellement leurs étudiants au besoin
          • +
          • On peut maintenant supprimer aux enseignants les privilèges de modification + de leurs cours
          • +
          • Les enseignants peuvent maintenant inscrire manuellement leurs étudiants + au besoin
          • La gestion des enseignants est maintenant regroupée en une interface
          • -
          • Les activités peuvent être déplacées n'importe où en deux clics
          • -
          • Les thèmes et semaines peuvent être déplacées vers le haut ou le bas
          • +
          • Les activités peuvent être déplacées n'importe + où en deux clics
          • +
          • Les thèmes et semaines peuvent être déplacées + vers le haut ou le bas
          • Un menu déroulant permet de changer rapidement de thème et de semaine
          • -
          • Lorsque les étudiants s'inscrivent, ils reçoivent une notification et peuvent annuler leur inscription
          • -
          • Les enseignants et étudiants voient « Mes cours » sur les pages d'accueil des cours
          • -
          • Si elles ne sont pas utilisées, les notes peuvent être complètement cachées pour les élèves
          • +
          • Lorsque les étudiants s'inscrivent, ils reçoivent une notification + et peuvent annuler leur inscription
          • +
          • Les enseignants et étudiants voient « Mes cours » sur + les pages d'accueil des cours
          • +
          • Si elles ne sont pas utilisées, les notes peuvent être complètement + cachées pour les élèves
          @@ -520,10 +182,17 @@
            -
          • Le hongrois et le grec ont été ajoutés, et il y a un grand nombre d'autres mises à jour. Comme d'habitude, les fichiers de langue de cette version ne sont pas tous terminés. Vous pouvez toujours télécharger les derniers fichiers de langue sur http://moodle.org/download/lang/.
          • +
          • Le hongrois et le grec ont été + ajoutés, et il y a un grand nombre d'autres mises à jour. Comme + d'habitude, les fichiers de langue de cette version ne sont pas tous + terminés. Vous pouvez toujours télécharger les derniers fichiers + de langue sur + http://moodle.org/download/lang/.
          • Mises à jour et corrections de nombreuses langues
          • -
          • Les langues ont maintenant une langue parent pour l'affichage des chaînes manquantes
          • -
          • Corrections de l'affichage des dates et des temps dans plusieurs langues
          • +
          • Les langues ont maintenant une langue parent pour l'affichage + des chaînes manquantes
          • +
          • Corrections de l'affichage des dates et des temps dans plusieurs + langues
          • es_mx a été remplacé par es (espagnol international)
          @@ -535,14 +204,21 @@
            -
          • Beaucoup d'améliorations dans la recherche, plusieurs mots-clef, pages, etc.
          • -
          • L'évaluation d'un forum peut être active ou non, utilisable par tous ou seulement par les enseignants
          • -
          • L'évaluation des forums peut utiliser des barèmes personnalisés ou des nombres
          • -
          • Un intervalle de dates peut être fixé pour restreindre les messages pouvant être évalués
          • -
          • L'administrateur peut accéder à certains réglages via Admin -> Modules -> Forums
          • -
          • Après modification d'un message, l'utilisateur est renvoyé au message dans son contexte
          • +
          • Beaucoup d'améliorations dans la recherche, plusieurs mots-clef, + pages, etc.
          • +
          • L'évaluation d'un forum peut être active ou non, utilisable par tous + ou seulement par les enseignants
          • +
          • L'évaluation des forums peut utiliser des barèmes personnalisés + ou des nombres
          • +
          • Un intervalle de dates peut être fixé pour restreindre les + messages pouvant être évalués
          • +
          • L'administrateur peut accéder à certains réglages via Admin -> + Modules -> Forums
          • +
          • Après modification d'un message, l'utilisateur est renvoyé + au message dans son contexte
          • Les images en annexe sont affichées en ligne
          • -
          • Les copies courriel des messages en format texte affichent maintenant correctement les URLs
          • +
          • Les copies courriel des messages en format texte affichent maintenant + correctement les URLs
          @@ -552,13 +228,22 @@
            -
          • Nouveau type de question : format Cloze - permet des textes contenant en ligne les réponses
          • -
          • Nouveau type de question : numérique - permet des réponses dans un intervalle de nombres
          • -
          • Nouveau type de question : description - n'est en fait pas une question, mais permet d'introduire n'importe où dans un test du texte ou des images
          • -
          • Rapport étendu pour les tests, avec des modules de rapport flexibles
          • -
          • Nouvelle fonctionnalité pour les tentatives répétées, où chaque tentative complète la précédente.
          • -
          • Si le test se termine dans les prochaines 24 heures, un petit compte à rebours est affiché dans la barre de titre et avertit l'utilisateur à 10 minutes et à 0 minutes
          • -
          • Modifications du code du module test, afin de simplifier son extension par de nouveaux types de questions
          • +
          • Nouveau type de question : format Cloze - permet des textes + contenant en ligne les réponses
          • +
          • Nouveau type de question : numérique - permet des réponses + dans un intervalle de nombres
          • +
          • Nouveau type de question : description - n'est en fait pas + une question, mais permet d'introduire n'importe où dans un + test du texte ou des images
          • +
          • Rapport étendu pour les tests, avec des modules de rapport + flexibles
          • +
          • Nouvelle fonctionnalité pour les tentatives répétées, + où chaque tentative complète la précédente.
          • +
          • Si le test se termine dans les prochaines 24 heures, un + petit compte à rebours est affiché dans la barre de titre + et avertit l'utilisateur à 10 minutes et à 0 minutes
          • +
          • Modifications du code du module test, afin de simplifier + son extension par de nouveaux types de questions
          @@ -569,8 +254,10 @@
            -
          • Les liens web peuvent maintenant être ouvert dans d'autres fenêtres entièrement personnalisables
          • -
          • L'administrateur peut accéder à certains réglages via Admin -> Modules -> Ressources
          • +
          • Les liens web peuvent maintenant être ouvert dans d'autres + fenêtres entièrement personnalisables
          • +
          • L'administrateur peut accéder à certains réglages via Admin -> + Modules -> Ressources
          @@ -580,162 +267,213 @@
            -
          • Lors du déplacement des messages, les annexes sont aussi déplacées
          • -
          • Plus d'avertissements lors de la recherche de fichiers déposés dans des cours vides
          • -
          • Les étudiants ne reçoivent plus systématiquement des courriels en format texte des forums dont ils reçoivent obligatoirement une copie des messages.
          • -
          • Les cookies ne peuvent plus interférer avec la mise en place du compte de l'administrateur lors de l'installation
          • +
          • Lors du déplacement des messages, les annexes sont aussi + déplacées
          • +
          • Plus d'avertissements lors de la recherche de fichiers + déposés dans des cours vides
          • +
          • Les étudiants ne reçoivent plus systématiquement des courriels + en format texte des forums dont ils reçoivent obligatoirement + une copie des messages.
          • +
          • Les cookies ne peuvent plus interférer avec la mise en + place du compte de l'administrateur lors de l'installation
          • Plus de limite dans le nombre d'activités par section
          • -
          • Plusieurs corrections lors de l'utilisation des fichiers zip, en particulier sous Windows
          • -
          • Les administrateurs peuvent maintenant modifier les comptes créés à partir de bases de données externes.
          • +
          • Plusieurs corrections lors de l'utilisation des fichiers + zip, en particulier sous Windows
          • +
          • Les administrateurs peuvent maintenant modifier les comptes + créés à partir de bases de données externes.
          • Les sessions n'entrent plus en conflit avec d'autres logiciels
          • -
          • Les fichiers Excel fonctionnent maintenant aussi sur autre chose que les machines Wintel
          • +
          • Les fichiers Excel fonctionnent maintenant aussi sur autre + chose que les machines Wintel
          -
           
          -
           
          +
           
          +
           
          +
        +
        -
        - -

        Nouveautés de Moodle 1.0.9 (29 mai 2003) :

        - -
        -
        Généralités
        -
        -
          +

          Nouveautés de Moodle 1.0.9 (29 mai 2003) :

          +
            +
            +
            Généralités
            +
          • Diverses optimisations et améliorations significatives des performaces
          • Plusieurs obscures corrections pour la sécurité
          • Moodle se comporte correctement quand il est incorporé dans un cadre
          • -
          • L'éditeur Richtext peut être maintenant utilisé dans plus de champs texte
          • +
          • L'éditeur Richtext peut être maintenant utilisé dans + plus de champs texte
          • Nouveau format « texte », utile pour taper du code HTML
          • Nouveau format « genre Wiki », permet l'ajout de balises sur le modèle Wiki à de nombreux endroits
          • -
          • Nouvelle fenêtre permettant d'insérer des binettes en cliquant sur des images
          • -
          • Possibilité d'indiquer les permissions des nouveaux dossiers et fichiers créés sur le serveur
          • -
          • Quelques corrections pour les serveurs tournant en Safe Mode (quelques problèmes de fichiers subsistent)
          • -
          • Diverses corrections pour le nettoyage des textes externes de caractères comme l'apostrophe, etc.
          • +
          • Nouvelle fenêtre permettant d'insérer des binettes en cliquant + sur des images
          • +
          • Possibilité d'indiquer les permissions des nouveaux dossiers et fichiers + créés sur le serveur
          • +
          • Quelques corrections pour les serveurs tournant en Safe Mode (quelques + problèmes de fichiers subsistent)
          • +
          • Diverses corrections pour le nettoyage des textes externes de + caractères comme l'apostrophe, etc.
          • Diverses corrections pour compatibilité avec PostgreSQL 7.3
          • Début de transition du code HTML vers XHTML Transitional
          • D'innombrables autres petites corrections un peu partout
          • -
        Langues
        -
          -
        • 10 nouvelles langues ! Espagnola argentin, Tchèque, Portugais, Slovaque, Roumain, Danois, Russe, Polonais, Chinois traditionnel et Canadien français.
        • -
        • Corrections et mises à jour pour presque toutes les langues
        • -
        • La langue peut être choisie pour la session en cours (voir le menu sur la page d'accueil et sur la page de connexion) et peut être changée pour chaque page à l'aide de l'URL, p. ex. http://moodle.org/?lang=ru
        • -
        • Le menu des langues peut maintenant être retreint à certaines langues, et même retiré
        • -
        • Des polices TrueType sont maintenant intégrées aux langues
        • -
        • TOUTES les heures et dates peuvent maintenant être localisées dans les fichiers de langue
        • -
        • Un bogue petit, mais ennuyeux a été corrigé dans l'éditeur des langues, qui causait sur les serveurs Windows un grossissement des fichiers de langue.
        • -
        +
      • 10 nouvelles langues ! Espagnola argentin, Tchèque, Portugais, + Slovaque, Roumain, Danois, Russe, Polonais, Chinois traditionnel et Canadien + français.
      • +
      • Corrections et mises à jour pour presque toutes les langues
      • +
      • La langue peut être choisie pour la session en cours (voir le menu sur + la page d'accueil et sur la page de connexion) et peut être changée + pour chaque page à l'aide de l'URL, p. ex. http://moodle.org/?lang=ru
      • +
      • Le menu des langues peut maintenant être retreint à certaines + langues, et même retiré
      • +
      • Des polices TrueType sont maintenant intégrées aux langues
      • +
      • TOUTES les heures et dates peuvent maintenant être localisées dans + les fichiers de langue
      • +
      • Un bogue petit, mais ennuyeux a été corrigé dans + l'éditeur des langues, qui causait sur les serveurs Windows un + grossissement des fichiers de langue.
      • Développeurs
        -
          -
        • Une variable de débogage globale donne plus d'informations sur les variables non initialisée et d'autre paramètres analogues
        • +
        • Une variable de débogage globale donne plus d'informations sur les + variables non initialisée et d'autre paramètres analogues
        • Diverses corrections pour nettoyer et standardiser le code PHP
        • -
        • Diverses corrections pour plus de robustesse (assurance que les variables sont toujours initialisées)
        • -
        +
      • Diverses corrections pour plus de robustesse (assurance que les + variables sont toujours initialisées)
      • Administration
        -
          -
        • Plusieurs options et quelques morceaux de code de config-dist.php ont été modifiés (en cas de mise à jour, comparez-le avec votre config.php ou reconstruisez complètement votre config.php)
        • -
        • Nombreuses modifications dans les thèmes - les auteurs de thèmes doivent lire theme/UPGRADE.txt
        • -
        • Nouvelle fonction d'enregistrement sur moodle.org permettant l'envoi de bulletin de sécurité, etc.
        • -
        • Le dossier admin peut être déplacé ailleurs que /admin (voir config-dist.php)
        • -
        • Les listes d'utilisateurs sont maintenant paginées et l'on peut rechercher des chaînes de caractères dans la liste des utilisateurs
        • -
        • Gestion des modules : les modules d'activité peuvent maintenant être désactivés individuellement ou effacés complètement
        • -
        • Amélioration dans la page d'édition des langues
        • -
        • Meilleure vérification de l'environnement PHP durant l'installation, avec notification d'avertissements
        • -
        • Procédure d'installation plus propre
        • -
        +
      • Plusieurs options et quelques morceaux de code de config-dist.php ont + été modifiés (en cas de mise à jour, comparez-le avec + votre config.php ou reconstruisez complètement votre config.php)
      • +
      • Nombreuses modifications dans les thèmes - les auteurs + de thèmes doivent lire + theme/UPGRADE.txt
      • +
      • Nouvelle fonction d'enregistrement sur moodle.org permettant l'envoi + de bulletin de sécurité, etc.
      • +
      • Le dossier admin peut être déplacé ailleurs que /admin + (voir config-dist.php)
      • +
      • Les listes d'utilisateurs sont maintenant paginées et l'on peut rechercher + des chaînes de caractères dans la liste des utilisateurs
      • +
      • Gestion des modules : les modules d'activité peuvent maintenant + être désactivés individuellement ou effacés complètement
      • +
      • Amélioration dans la page d'édition des langues
      • +
      • Meilleure vérification de l'environnement PHP durant l'installation, + avec notification d'avertissements
      • +
      • Procédure d'installation plus propre
      • Gestion des utilisateurs
        -
          -
        • Nouveau rôle : Responsable de cours - un enseignant pouvant en outre créer des cours
        • -
        • Nouvelle extension pour l'authentification « manuelle », qui empêche les utilisateurs de créer leur accompte eux-mêmes
        • -
        • La procédure « mot de passe oublié » utilise une confirmation par courriel avant d'attribuer un nouveau mot de passe
        • -
        +
      • Nouveau rôle : Responsable de cours - un enseignant pouvant en outre + créer des cours
      • +
      • Nouvelle extension pour l'authentification « manuelle », + qui empêche les utilisateurs de créer leur accompte eux-mêmes
      • +
      • La procédure « mot de passe oublié » + utilise une confirmation par courriel avant d'attribuer un nouveau mot de passe
      • Cours
        -
          -
        • Un bouton placé à côté des activités permet de les cacher ou de les montrer aux étudiants
        • +
        • Un bouton placé à côté des activités permet + de les cacher ou de les montrer aux étudiants
        • Des semaines ou thèmes entiers peuvent aussi être cachés
        • -
        • La liste des praticipants est elle aussi paginée, pour l'utilisation avec de très grandes classes
        • -
        • La compression et décompression ZIP est effectuée maintenant par une librairie interne, supprimant la dépendance vis-à-vis de programmes externes. Une conséquence en est que la compression fonctionne maintenant aussi sous Windows
        • -
        +
      • La liste des praticipants est elle aussi paginée, pour l'utilisation + avec de très grandes classes
      • +
      • La compression et décompression ZIP est effectuée maintenant par + une librairie interne, supprimant la dépendance vis-à-vis de programmes + externes. Une conséquence en est que la compression fonctionne maintenant aussi + sous Windows
      • Devoirs
        -
        • Les remises de devoirs peuvent être triées
        • -
        • Les courriels de notification de devoir ne sont pas envoyés aux étudiants non inscrits dans le cours
        • -
        +
      • Les courriels de notification de devoir ne sont pas envoyés + aux étudiants non inscrits dans le cours
      • Forums
        -
          -
        • L'affichage des listes des discussions est bien améliorée
        • -
        • Les discussions peuvent être déplacées vers un autre forum d'un simple clic
        • -
        • La date et l'heure des messages est celle de leur modification, et non plus de leur création
        • -
        • Il n'est plus possible d'avoir des messages sans objet ou sans texte
        • -
        • Meilleure analyse et affichage du texte des messages
        • -
        • Il est maintenant possible de forcer l'envoi des copies des messages du forum « Nouvelles du site » (courriel à tous les étudiants et enseignants actifs)
        • -
        • Meilleure gestion des courriels sortant pour éviter l'envoi de doublons, qui pouvait survenir dans de très grandes classes
        • -
        +
      • L'affichage des listes des discussions est bien + améliorée
      • +
      • Les discussions peuvent être déplacées vers un autre forum d'un + simple clic
      • +
      • La date et l'heure des messages est celle de leur modification, + et non plus de leur création
      • +
      • Il n'est plus possible d'avoir des messages sans objet ou sans + texte
      • +
      • Meilleure analyse et affichage du texte des messages
      • +
      • Il est maintenant possible de forcer l'envoi des copies des + messages du forum « Nouvelles du site » (courriel à + tous les étudiants et enseignants actifs)
      • +
      • Meilleure gestion des courriels sortant pour éviter l'envoi + de doublons, qui pouvait survenir dans de très grandes classes
      • -
        Module atelier (pas inclus : bientôt disponible en téléchargement séparé)
        +
        Module atelier (pas inclus : bientôt disponible en + téléchargement séparé)
        -
        • Un nouveau module très intéressant de Ray Kingdon
        • -
        • Un outil de grande souplesse offrant un éventail de schémas d'évaluation par les pairs et de fabrication exemples, permettant à un groupe l'examen et l'évaluation de travaux
        • -
        +
      • Un outil de grande souplesse offrant un éventail de schémas + d'évaluation par les pairs et de fabrication exemples, permettant + à un groupe l'examen et l'évaluation de travaux
      • Tests
        -
          -
        • Nouveau type de question : aléatoire (choisit une question parmi toutes celles d'une catégorie)
        • -
        • Nouveau type de question : appariement (les étudiants doivent faire correspondre les réponses avec des questions)
        • -
        • Nouveau type de question : appariement aléatoire (crée aléatoirement une question d'appariement avec les questions à réponse courte d'une catégorie)
        • -
        • Importation de questions à partir de fichiers texte (concept modulaire permettant l'extension à de nouveaux formats - une module pour le format Blackboard est inclus en version bêta)
        • -
        • Un assistant « Créer plusieurs questions » permet de créer rapidement un test aléatoire
        • -
        • Les questions d'un test peuvent être mélangées aléatoirement
        • -
        • Les réponses d'un test (choix multiples, etc.) peuvent être mélangées aléatoirement
        • -
        • Erreur corrigée lorsque le bouton « Enregistrer les notes » n'était pas utilisé
        • -
        • La re-notation fonctionne correctement si le test a été modifié
        • -
        • La modification d'une question après son utilisation dans un test n'a pas d'influence sur les résultats du test
        • -
        • Les réponses des questions à choix multiples sont numérotées par a, b, c et non plus 1, 2, 3
        • -
        +
      • Nouveau type de question : aléatoire (choisit une question + parmi toutes celles d'une catégorie)
      • +
      • Nouveau type de question : appariement (les + étudiants doivent faire correspondre les réponses avec des questions)
      • +
      • Nouveau type de question : appariement aléatoire + (crée aléatoirement une question d'appariement avec les questions + à réponse courte d'une catégorie)
      • +
      • Importation de questions à partir de fichiers texte (concept modulaire + permettant l'extension à de nouveaux formats - une module pour le format + Blackboard est inclus en version bêta)
      • +
      • Un assistant « Créer plusieurs questions » + permet de créer rapidement un test aléatoire
      • +
      • Les questions d'un test peuvent être mélangées + aléatoirement
      • +
      • Les réponses d'un test (choix multiples, etc.) peuvent être + mélangées aléatoirement
      • +
      • Erreur corrigée lorsque le bouton « Enregistrer les + notes » n'était pas utilisé
      • +
      • La re-notation fonctionne correctement si le test a été + modifié
      • +
      • La modification d'une question après son utilisation dans un test + n'a pas d'influence sur les résultats du test
      • +
      • Les réponses des questions à choix multiples sont + numérotées par a, b, c et non plus 1, 2, 3
      • Ressources
        -
          -
        • Meilleure performance lors de la modification d'un long texte ou de ressources HTML
        • -
        • Les images sont maintenant affichées centrées dans une page web, et non plus de façon brute
        • -
        • Le format genre Wiki a été ajouté comme une nouvelle option pour les pages Ressources
        • -
        +
      • Meilleure performance lors de la modification d'un long texte ou + de ressources HTML
      • +
      • Les images sont maintenant affichées centrées dans une page + web, et non plus de façon brute
      • +
      • Le format genre Wiki a été ajouté comme une nouvelle option pour + les pages Ressources
      • Thèmes personnalisés
        -
          -
        • Un certain nombre de nouveaux styles ont été ajoutés à tous les thèmes fournis en standard. Certains d'entre eux sont ESSENTIELS à l'affichage des nouvelles fonctionnalités. VEUILLEZ LIRE SVP theme/UPGRADE.txt POUR UNE LISTE DES MODIFICATIONS À EFFECTUER SUR LES ANCIENS THÈMES
        • -
        • Les thèmes personnalisés peuvent maintenant redéfinir tous les petits boutons graphiques. Il existe pour cela un nouveau paramètre dans theme/x/config.php ($THEME->custompix) et un nouveau dossier facultatif « pix ». Pour un exemple, voyez le thème cordoroyblue.
        • -
        +
      • Un certain nombre de nouveaux styles ont été ajoutés + à tous les thèmes fournis en standard. Certains d'entre eux sont + ESSENTIELS à l'affichage des nouvelles fonctionnalités. VEUILLEZ LIRE SVP + theme/UPGRADE.txt + POUR UNE LISTE DES MODIFICATIONS À EFFECTUER SUR LES ANCIENS THÈMES
      • +
      • Les thèmes personnalisés peuvent maintenant redéfinir tous les petits + boutons graphiques. Il existe pour cela un nouveau paramètre dans + theme/x/config.php ($THEME->custompix) et un nouveau dossier facultatif + « pix ». Pour un exemple, voyez le thème cordoroyblue.
      • + +
        -
        -

        Les anciennes notes de mise à jour sont disponibles dans le forum des nouvelles de Moodle.org.

        +

        Les anciennes notes de mise à jour sont disponibles dans le forum des nouvelles de +Moodle.org.

        +

         

        -

        Documentation Moodle

        -

        Version: $Id$

        - - +

        Documentation Moodle

        +

        Version: $Id$

        diff --git a/lang/fr/docs/teacher.html b/lang/fr/docs/teacher.html index 7903e3a5fbc..dc34d60c548 100644 --- a/lang/fr/docs/teacher.html +++ b/lang/fr/docs/teacher.html @@ -1,23 +1,14 @@ - - Documentation Moodle : Manuel de l'enseignant - + - + - - +

        Manuel de l'enseignant

        @@ -55,19 +46,17 @@
        Explorez votre cours et faites-y des modifications. Il est difficile de casser quoi que ce soit dans un cours Moodle, et même dans ce cas, il est facile de corriger le problème.
        -
      • -
      • Repérez et utilisez ces petites icônes
        -

         edit : l'icône de modification vous permet de modifier l'élément à côté duquel elle est placée.

        +

          : l'icône de modification vous permet de modifier l'élément à côté duquel elle est placée.

        -

        aide : l'icône d'aide ouvre une fenêtre d'aide.

        +

         : l'icône d'aide ouvre une fenêtre d'aide.

        -

         cacher : l'icône oeil ouvert vous permet de cacher des éléments aux étudiants.

        +

          : l'icône oeil ouvert vous permet de cacher des éléments aux étudiants.

        -

         montrer : l'icône oeil fermé vous permet de rendre disponible un élément caché.

        +

          : l'icône oeil fermé vous permet de rendre disponible un élément caché.

        @@ -100,19 +89,19 @@

        Format hebdomadaire :

        -

        hebdomadaire

        +

         

        Format thématique :

        -

        thématique

        +

         

        Format informel :

        -

        informel

        +

         

        @@ -134,7 +123,7 @@ de votre menu Administration. Le gestionnaire de fichiers ressemble à cela :

        -

        fichier

        +

         

        @@ -170,26 +159,38 @@ de votre menu Administration. Le gestionnaire de fichiers ressemble à cel
        Un devoir est une activité où vous spécifiez une tâche à effectuer, avec une date limite et une note maximale. Les étudiants pourront déposer un fichier contenant le fruit de leur travail. La date et l'heure du dépôt du fichier sont enregistrées. Vous pourrez accéder à une page où faisant la liste de tous les fichiers (en remarquant s'ils sont en avance ou en retard), donner une note et ajouter un commentaire pour chaque étudiant. Une demi-heure après que vous aurez mis une note, Moodle enverra automatiquement à l'étudiant une notification par courriel.
        +

        +
        Sondage
        Un sondage fonctionne très simplement : vous posez une question et indiquez un certain nombre de réponses possibles. Les étudiants font leur choix et l'ensemble des résultats est visible sur une seule page. On peut l'utiliser par exemple pour des sondages rapides ou pour des votes de classes.
        +

        +
        Forum
        Ce module est de loin le plus important. C'est là que toutes les discussions ont lieu. Chaque fois que vous ajoutez un forum, vous pouvez choisir entre différents types : discussion sur un thème, discussion générale (plusieurs thèmes) ou une discussion pour chaque participant.
        +

        +
        Journal
        Chaque activité de type journal peut être vue comme une partie du journal complet du cours. Vous pouvez y indiquer une question ouverte pour faciliter les contributions des étudiants, ainsi qu'un laps de temps durant lequel le journal est ouvert (seulement pour le format de cours hebdomadaire). Une bonne politique consiste à créer un journal par semaine. Encouragez vos étudiants à y écrire avec un esprit critique sur leur processus d'apprentissage, puisque leurs propres contributions ne sont accessibles que par eux-mêmes et par l'enseignant Plus tard, vous pourrez noter et commenter toutes les contributions de la semaine ou du thème, et les étudiants recevront automatiquement un courriel les informant de votre feedback. Les journaux ne sont pas destinés à être complétés sur la durée. Si vous désirez cette fonctionnalité, ajoutez d'autres activités de type journal.
        +

        +
        Ressource
        Les ressources constituent le contenu de votre cours. Chaque ressource peut être un fichier déposé ou une URL pointant vers un fichier sur l'Internet. Vous pouvez aussi entretenir des pages de texte en les tapant directement dans un formulaire.
        +

        +
        Test
        Ce module vous permet de créer et proposer des tests composés de questions à choix multiples, de questions vrai-faux ou de questions à réponses courtes. Ces questions sont stockées dans une base de données structurée en catégories. Elles peuvent être réutilisées dans un cours et même dans d'autres cours. Les tests peuvent autoriser une ou plusieurs tentatives. Dans ce dernier cas, chaque tentative est automatiquement enregistrée, et l'enseignant peut choisir de donner un feedback ou d'afficher la bonne réponse. Ce module comprend des outils de notation.
        +

        +
        Consultation
        Le module consultation offre quelques instruments vous permettant d'évaluer et de comprendre votre classe. Pour l'instant, les consultations inclues sont COLLES et ATTLS. Ils peuvent être proposés aux étudiants tôt dans le déroulement du cours, comme outil de diagnostic et à la fin du cours comme outil d'évaluation (dans mes cours, j'en utilise un par semaine).
        @@ -198,7 +199,7 @@ de votre menu Administration. Le gestionnaire de fichiers ressemble à cel
        -

        Une fois que les activités de votre cours sont en place, vous pouvez les déplacer vers le haut ou le bas en cliquant sur les petites icônes flèches (en haut en bas) visibles à côté de chacune d'elles. Vous pouvez aussi les supprimer en utilisant l'icône en forme de croix supprimer, ou les modifier en cliquant sur l'icône modifier.

        +

        Une fois que les activités de votre cours sont en place, vous pouvez les déplacer vers le haut ou le bas en cliquant sur les petites icônes flèches ( ) visibles à côté de chacune d'elles. Vous pouvez aussi les supprimer en utilisant l'icône en forme de croix , ou les modifier en cliquant sur l'icône .

         

        @@ -244,7 +245,7 @@ de votre menu Administration. Le gestionnaire de fichiers ressemble à cel

        Nous vous remercions d'utiliser Moodle - et bonne chance pour vos cours !

        -
        +

         

        @@ -254,6 +255,4 @@ de votre menu Administration. Le gestionnaire de fichiers ressemble à cel

        Version: $Id$

        - - - + \ No newline at end of file diff --git a/lang/fr/docs/translation.html b/lang/fr/docs/translation.html index 41c580b490b..9e78f070902 100755 --- a/lang/fr/docs/translation.html +++ b/lang/fr/docs/translation.html @@ -1,22 +1,9 @@ - - - - + + - Documentation Moodle : Guide de traduction de Moodle - - - - - - - + + @@ -47,18 +34,7 @@

        Pour ce faire, commencez par créer un nouveau dossier dans le dossier lang en utilisant pour son nom le code à 2 lettres de votre langue. Ces codes standard sont décrits dans le fichier lib/languages.php. Si vous faites simplement une adaptation locale d'une autre langue, utilisez comme nom le code de cette langue, suivi d'un caractère souligné et d'une extension significative de 2 lettres. Par exemple la langue française est désignée par fr, et le canadien-français par fr_ca. Si vous faites une version Unicode d'une traduction, ajoutez _utf8 à la fin (par exemple fr_utf8).

        -

        Ensuite, créez dans votre dossier un nouveau fichier "moodle.php" contenant les lignes suivantes :

        - - -<?php
        -$string['thischarset'] = 'iso-8859-1';
        -$string['thisdirection'] = 'ltr';
        -$string['thislanguage'] = 'new language pack';
        -?> -
        - -

        -ou copiez le fichier moodle.php d'une autre langue dans votre nouveau dossier. Celui du dossier en est le plus actuel, mais peu importe puisque vous allez de toute façon le réécrire. Si vous choisissez de créer un nouveau fichier, vous aurez l'avantage de commencer avec des fichiers de langue complètement vides et propres.

        +

        Ensuite, copiez le fichier moodle.php d'une autre langue dans votre nouveau dossier. Celui du dossier en est le plus actuel, mais peu importe puisque vous allez de toute façon le réécrire.

        Vous êtes maintenant prêt à insérer les chaînes de caractères de votre langue ! Pour plus de détails voyez ci-dessous.

        @@ -78,6 +54,8 @@ ou copiez le fichier moodle.php d'une autre langue dans votre n
          +
            +
          1. Connectez-vous sur votre serveur Moodle en tant qu'administrateur.
          2. Allez dans Administration -> Configuration -> Langue, qui est la page d'administration des langues.
          3. @@ -92,86 +70,36 @@ ou copiez le fichier moodle.php d'une autre langue dans votre n
          4. Vous pouvez laisser des chaînes vides. Moodle utilisera dans ce cas la chaîne de la langue mère (parentlanguage). si vous n'avez pas défini la langue mère dans le fichier moodle.php, l'anglais sera utilisé par défaut.
          5. -
          6. Une façon rapide de voir toutes les chaînes manquantes est de cliquer sur « Vérifier les textes manquants ». N'écrivez rien dans les chaînes qui n'ont pas (encore) de traduction, sans quoi cet outil si pratique ne fonctionnera plus à satisfaction.
          7. +
          8. Une façon rapide de voir toutes les chaînes manquantes est de cliquer sur « Vérifier les textes manquant ».
          9. + +

        Traduire les fichiers d'aide et la documentation

        -

        Il n'y a pas encore d'éditeur intégré dans Moodle pour traduire les fichiers d'aide et la documentation, mais ce n'est pas vraiment difficile. Il est important d'utiliser la langue en comme langue de référence. Copiez un fichier d'aide de ce dossier au même endroit dans votre propre dossier de langue. Utilisez ensuite un éditeur de texte pour modifier le fichier, en vous assurant de ne pas modifier le code qu'il contient (en général des balises HTML). N'UTILISEZ PAS UN TRAITEMENT DE TEXTE pour modifier ou écrire ces fichiers. Ces programmes les font grossir inutilement ! -
        -Ne laissez pas de chaînes non traduites dans vos fichiers de langue !

        +

        Il n'y a pas encore d'éditeur intégré dans Moodle pour traduire les fichiers d'aide et la documentation, mais ce n'est pas vraiment difficile. Il est important d'utiliser la langue en comme langue de référence. Copiez un fichier d'aide de ce dossier au même endroit dans votre propre dossier de langue. Utilisez ensuite un éditeur de texte pour modifier le fichier, en vous assurant de ne pas modifier le code qu'il contient (en général des balises HTML). N'UTILISEZ PAS UN TRAITEMENT DE TEXTE pour modifier ou écrire ces fichiers. Ces programmes les font grossir inutilement !

        -

        Prenez la peine d'écrire des fichiers d'aide en conformité avec la norme XHTML. Ceci comprend notamment les points suivants :

        - -
          - -
        • toutes les balises ouvertes doivent être fermées : <p>lalala</p>
        • - -
        • tous les éléments doivent être correctement imbriqués : <p> lalala <em>lalala</em> </p>
        • - -
        • tous les éléments et les attributs doivent être écrits en bas de casse (minuscules)
        • - -
        • tous les attributs doivent être écrits en totalité et entre guillemets droits : <p align="right"> lalala </p>
        • - -
        • les éléments vides doivent être terminés par /> : <br /> <hr />. Il faut mettre un espace avant le caractère « / ».
        • - -
        • chaque balise « img » doit comporter un attribut « alt="" » (qui peut être vide) et doit en outre être fermé par un espace et />, par exemple <img alt="" src="photo.gif" />
        • - -
        • les balises courtes du code PHP <?= et <? sont à retirer au profit de leur version normale <?php
        • - -
        • AUCUNE balise « font » ne doit figurer dans le code. Les balises <p> <em> <h1> <h2> etc. sont suffisantes pour les fichiers de langues
        • - -
        • le nom de la langue (indiqué dans la variable « $string['thislanguage'] » dans le fichier « moodle.php ») doit être dans la mesure du possible conforme au standard « Unicode Numeric Character References (NCR) », car ceci permet un affichage correct de ce nom dans TOUS les encodages (pour un exemple, voir la langue chinoise)
        • - -
        - -

        Aucun des fichiers du dossier « help » ne nécessite de description de document (doc type), ni des balises html, body, head (ouvrantes ou fermantes), car ces fichiers sont inclus à l'aide du fichier « help.php ». Le script se chargera de composer des pages formatées correctement. Cela signifie qu'il n'y a pas beaucoup d'opportunité de laisser libre cours à votre créativité ! Veuillez coller au plus près de l'exemple de la langue anglaise.

        - -

        Les fichiers du dossier « docs » doivent en revanche être en pleine conformité avec la norme XHTML, y compris la description de document (doc type), l'entête, etc.

        - -

        Si vous cliquez sur « Vérifier les textes manquant » dans la page d'administration des langues, une liste des fichiers manquant sera également affichée. En lieu et place des fichiers manquant, Moodle utilisera les fichiers de la langue mère (parentlanguage). Il ne faut donc pas laisser des copies non traduites des fichiers d'aide dans votre dossier de langue, sinon cet outil si pratique ne fonctionnera plus à satisfaction.

        +

        Si vous cliquez sur « Vérifier les textes manquant » dans la page d'administration des langues, une liste des fichiers manquant sera également affichée. En lieu et place des fichiers manquant, Moodle utilisera les fichiers de la langue mère (parentlanguage). Il n'est donc pas nécessaire de conserver des copies non traduites des fichiers d'aide dans votre dossier de langue.

        Offrir votre dossier de langue au projet Moodle

        En offrant votre traduction au projet Moodle, vous aiderez les autres personnes parlant votre langue. Votre langue sera en outre distribuée avec toutes les versions futures de Moodle.

        -

        Compressez simplement votre dossier de langue complet en un fichier zip et envoyez-le à translation@moodle.org.

        +

        Compressez simplement votre dossier de langue complet en un fichier zip et envoyez-le à translation@moodle.org.

        Nous vous communiquerons alors tous les détails nécessaires.

        -

        Voici une liste de vérification à utiliser avant de proposer vos fichiers de langue :

        - -
          - -
        • Aucun fichier vide ?
        • - -
        • Aucun fichier ni aucune chaîne non traduite ?
        • - -
        • Fichiers d'aide pas modifié avec un traitement de texte ?
        • - -
        • Fichier README contenant une description de la langue, le nom et l'adresse de courriel du traducteur ?
        • - -
        • Nom du dossier d'après le code de langue valable (vérification dans moodle\lib\languages.php) ?
        • - -
        • Les fichiers de langue tournent sans erreur sur un Moodle de test ?
        • - -
        • Lorsque la variable "thislanguage" contient des lettres avec diacritiques ou dans un autre alphabet que le romain, elle est écrite en notation NCR ?
        • - -
        • Les chaînes et fichiers sont-ils conformes au format XHTML ?
        • - -
        -

        Maintenance de fichiers de langue standard

        Si vous vous êtes engagé dans la maintenance d'une langue dans Moodle, vous aurez intérêt à utiliser le CVS de Moodle afin d'avoir à disposition une version de Moodle toujours à jour et de pouvoir déposer vos modifications directement dans le projet Moodle.

        Pour être au courant des changements dans le projet, il est des plus judicieux de s'abonner à la liste de distribution CVS. Cela vous aidera à garder votre traduction aussi proche du texte anglais que possible.

        -

        Il vous faut en outre vous abonner au Forum des langues de Moodle (en anglais), où vous trouverez les nouveautés et des discussions sur les modifications ayant un impact sur la traduction.

        +

        Il vous faut en outre vous abonner au Forum des langues de Moodle (en anglais), où vous trouverez les nouveautés et des discussions sur les modifications ayant un impact sur la traduction. -

        Documentation Moodle

        -

        Version: $Id$

        +

        Documentation Moodle

        +

        Version: $Id$

        diff --git a/lang/fr/docs/upgrade.html b/lang/fr/docs/upgrade.html index ab9048ff83b..7b67988d1f9 100644 --- a/lang/fr/docs/upgrade.html +++ b/lang/fr/docs/upgrade.html @@ -1,137 +1,119 @@ - - - - - Documentation Moodle : Mise à jour - - + Documentation Moodle : Mise à jour + + - - +

        Mise à jour de Moodle

        - -

        Moodle est conçu pour être mis à jour sans difficulté de n'importe quelle version plus ancienne à une version ultérieure.

        - -

        Pour mettre à jour une installation de Moodle, veuillez suivre ces étapes :

        - -

        1. Faites une copie de sauvegarde (backup) des données importantes

        - -
        - -

        Bien que cela ne soit pas strictement nécessaire, c'est toujours une bonne idée de faire une copie de sauvegarde d'un système en production avant une mise à jour importante, au cas o_ vous auriez besoin de revenir à l'ancienne version. En fait, une meileure idée serait l'automatisation de la sauvegarde journalière de votre installation de Moodle sur votre serveur. Vous pourrez ainsi sauter cette étape.

        - -

        Trois zones nécessitent une copie de sauvegarde :

        - -
        - -

        1. Le dossier contenant le logiciel Moodle

        - -
        - -

        Faites une copie séparée de ces fichiers avant la mise à jour. Vous pourrez ainsi retrouver votre config.php et les modules que vous aurez ajoutés, comme les thèmes, les langues, etc.

        - +

        Moodle est conçu pour être mis à jour sans difficulté de n'importe quelle + version plus ancienne à une version ultérieure.

        +

        Pour mettre à jour une installation de Moodle, veuillez suivre ces étapes :

        +

        1. Faites une copie de sauvegarde (backup) des données importantes

        +
        +

        Bien que cela ne soit pas strictement nécessaire, c'est toujours une bonne idée + de faire une copie de sauvegarde d'un système en production avant une mise à jour + importante, au cas o_ vous auriez besoin de revenir à l'ancienne version. En fait, + une meileure idée serait l'automatisation de la sauvegarde journalière de votre installation + de Moodle sur votre serveur. Vous pourrez ainsi sauter cette étape.

        +

        Trois zones nécessitent une copie de sauvegarde :

        +
        +

        1. Le dossier contenant le logiciel Moodle

        +
        +

        Faites une copie séparée de ces fichiers avant la mise à jour. Vous pourrez + ainsi retrouver votre config.php et les modules que vous aurez ajoutés, comme + les thèmes, les langues, etc.

        +
        +

        2. Votre dossier de données

        +
        +

        C'est là que sont placés les fichiers déposés (ressources de cours, devoirs + d'étudiants, etc.). Il est donc très important d'avoir une copie de ces fichiers. + Parfois, la mise à jour pourra déplacer ou renommer les dossiers à l'intérieur de + votre dossier de données.

        +
        +

        3. Votre base de données

        +
        +

        La plupart des mises à jour de Moodle modifient les tables de la base de + données, en y ajoutant ou changeant certains champs. Chaque gestionnaire de base + de données possède plusieurs façons de faire des copies de sauvegarde. Avec MySQL, + on peut par exemple faire un « dump » de la base de données dans un fichier + SQL. L'exemple suivant montre les commandes Unix pour effecteur cette opération + avec une base de données appelée « moodle » :

        +
        +

        mysqldump moodle > moodle-backup-2002-10-26.sql

        +
        +

        Vous pouvez aussi utiliser la fonction « Exportation » de l'interface web + optionnelle « Base de données » de Moodle, pour effectuer cela sur toutes + les plateformes.

        +

         

        +
        +
        +
        +

        2. Installez la nouvelle version de Moodle

        +
        +

        Avec un fichier compressé téléchargé

        +
        +

        N'écrasez pas une ancienne installation de Moodle, à moins de savoir ce que + vous faites... D'anciens fichiers peuvent en effet poser problème dans une + nouvelle installation. Le mieux est de renommer votre dossier Moodle actuel, + puis de décompresser la nouvelle version de Moodle à la place de l'ancienne.

        +
        +

        mv moodle moodle.backup
        + tar xvzf moodle-1.1.tgz

        +
        +

        Ensuite, copiez dans le nouveau dossier votre config.php et les autres + extensions, tels que vos thèmes personnalisés :

        +
        +

        cp moodle.backup/config.php moodle
        + cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme

        +
        +
        +

        En utilisant CVS

        +
        +

        Si vous utilisez CVS, placez-vous dans le dossier racine de Moodle et mettez à + jour les anciens fichiers :

        +
        +

        cvs update -dP

        +
        +

        Assurez-vous d'utiliser le paramètre « d » pour créer si nécessaire + les nouveaux dossiers, ainsi que le paramètre « P » pour vous + débarrasser des dossiers vides.

        +

        Si vous avez modifié des fichiers de Moodle, observez très attentivement les + messages retournés lors de la mise à jour, afin de détecter d'éventuels + conflits. Tous vos thèmes personnalisés et ajouts non standard ne seront + pas touchés.

        +
        +

         

        +
        +

        3. Finalisez la mise à jour

        +
        +

        La dernière étape consiste à déclencher le processus de mise à jour dans + Moodle.

        +

        Pour le faire, visitez simplement la page + d'administration de votre installation.

        +
        +

        http://example.com/moodle/admin

        +
        +

        Il n'est pas nécessaire que vous soyez connecté en tant qu'administrateur.

        +

        Moodle détectera automatiquement la nouvelle version et effectuera toutes les mises + à jour nécessaires sur la base de données et sur les fichiers. S'il est incapable + d'effectuer une opération tout seul (très rarement), des messages s'afficheront qui + vous indiqueront les opérations à effectuer.

        +
        +

         

        +

        Si tout se passe sans problème (pas de message d'erreur), vous pouvez utiliser tout + de suite votre nouvelle version de Moodle et ses nouvelles fonctionnalités ! + version of Moodle and enjoy the new features!

        +

        En cas de problèmes avec la mise à jour, visitez le site moodle.org et postez un message sur le forum + Installation + Support Forum du cours Using Moodle.

        - -

        2. Votre dossier de données

        - -
        - -

        C'est là que sont placés les fichiers déposés (ressources de cours, devoirs d'étudiants, etc.). Il est donc très important d'avoir une copie de ces fichiers. Parfois, la mise à jour pourra déplacer ou renommer les dossiers à l'intérieur de votre dossier de données.

        - -
        - -

        3. Votre base de données

        - -
        - -

        La plupart des mises à jour de Moodle modifient les tables de la base de données, en y ajoutant ou changeant certains champs. Chaque gestionnaire de base de données possède plusieurs façons de faire des copies de sauvegarde. Avec MySQL, on peut par exemple faire un « dump » de la base de données dans un fichier SQL. L'exemple suivant montre les commandes Unix pour effecteur cette opération avec une base de données appelée « moodle » :

        - -

        mysqldump moodle > moodle-backup-2002-10-26.sql

        - -

        Vous pouvez aussi utiliser la fonction « Exportation » de l'interface web optionnelle « Base de données » de Moodle, pour effectuer cela sur toutes les plateformes.

        - -
        - -
        - -
        - -

        2. Installez la nouvelle version de Moodle

        - -
        - -

        Avec un fichier compressé téléchargé

        - -
        - -

        N'écrasez pas une ancienne installation de Moodle, à moins de savoir ce que vous faites... D'anciens fichiers peuvent en effet poser problème dans une nouvelle installation. Le mieux est de renommer votre dossier Moodle actuel, puis de décompresser la nouvelle version de Moodle à la place de l'ancienne.

        - -

        mv moodle moodle.backup
        tar xvzf moodle-1.1.tgz

        - -

        Ensuite, copiez dans le nouveau dossier votre config.php et les autres extensions, tels que vos thèmes personnalisés :

        - -

        cp moodle.backup/config.php moodle
        cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme

        - -
        - -

        En utilisant CVS

        - -
        - -

        Si vous utilisez CVS, placez-vous dans le dossier racine de Moodle et mettez à jour les anciens fichiers :

        - -

        cvs update -dP

        - -

        Assurez-vous d'utiliser le paramètre « d » pour créer si nécessaire les nouveaux dossiers, ainsi que le paramètre « P » pour vous débarrasser des dossiers vides.

        - -

        Si vous avez modifié des fichiers de Moodle, observez très attentivement les messages retournés lors de la mise à jour, afin de détecter d'éventuels conflits. Tous vos thèmes personnalisés et ajouts non standard ne seront pas touchés.

        - -
        - -
        - -

        3. Finalisez la mise à jour

        - -
        - -

        La dernière étape consiste à déclencher le processus de mise à jour dans -Moodle.

        - -

        Pour le faire, visitez simplement la page -d'administration de votre installation.

        - -

        http://example.com/moodle/admin

        - -

        Il n'est pas nécessaire que vous soyez connecté en tant qu'administrateur.

        - -

        Moodle détectera automatiquement la nouvelle version et effectuera toutes les mises -à jour nécessaires sur la base de données et sur les fichiers. S'il est incapable -d'effectuer une opération tout seul (très rarement), des messages s'afficheront qui -vous indiqueront les opérations à effectuer.

        - -
        - -

         

        - -

        Si tout se passe sans problème (pas de message d'erreur), vous pouvez utiliser tout de suite votre nouvelle version de Moodle et ses nouvelles fonctionnalités ! version of Moodle and enjoy the new features!

        - -

        En cas de problèmes avec la mise à jour, visitez le site moodle.org et postez un message sur le forum - -Installation Support Forum du cours Using Moodle.

        - -
        -

         

        - -

        Documentation Moodle

        - -

        Version: $Id$

        +

        Documentation Moodle

        +

        Version: $Id$

        - \ No newline at end of file diff --git a/lang/fr/editor.php b/lang/fr/editor.php index fcde25db38a..0192780e591 100644 --- a/lang/fr/editor.php +++ b/lang/fr/editor.php @@ -2,8 +2,8 @@ $string['about'] = 'À propos de cet éditeur'; $string['absbottom'] = 'Absbottom'; +$string['absmiddle'] = 'Absmiddle'; $string['address'] = 'Adresse'; -$string['alertnoselectedtext'] = 'Veuillez d\'abord sélectionner du texte!'; $string['alignment'] = 'Alignement'; $string['alternatetext'] = 'Texte alt'; $string['anchorname'] = 'Nom d\'ancrage'; @@ -20,7 +20,6 @@ $string['cellspacing'] = 'Espace cellule'; $string['choosechar'] = 'Choisir un caractère'; $string['chooseicon'] = 'Choisir une icône à insérer'; $string['close'] = 'Fermer'; -$string['closeafterreplace'] = 'Fermer après remplacement'; $string['cols'] = 'Colonnes'; $string['copy'] = 'Copier la sélection'; $string['createanchor'] = 'Créer un ancrage'; @@ -29,11 +28,7 @@ $string['createlink'] = 'Ins $string['cut'] = 'Couper la sélection'; $string['delete'] = 'Supprimer'; $string['filebrowser'] = 'Sélection des fichiers'; -$string['findwhat'] = 'Rechercher'; -$string['fontname'] = 'Nom de police'; -$string['fontsize'] = 'Corps de police'; $string['forecolor'] = 'Couleur du texte'; -$string['formatblock'] = 'Format'; $string['fullscreen'] = 'Éditeur plein écran'; $string['heading'] = 'Titre'; $string['height'] = 'Hauteur'; @@ -49,7 +44,6 @@ $string['insertlink'] = 'Ins $string['insertsmile'] = 'Insérer une binette'; $string['inserttable'] = 'Insérer un tableau'; $string['italic'] = 'Italique'; -$string['itemsreplaced'] = 'éléments remplacés'; $string['justifycenter'] = 'Centré'; $string['justifyfull'] = 'Justifié'; $string['justifyleft'] = 'Aligné à gauche'; @@ -66,17 +60,13 @@ $string['linktargetself'] = 'M $string['linktargettop'] = 'Même fenêtre'; $string['linktitle'] = 'Titre'; $string['linkurl'] = 'URL'; -$string['matchcase'] = 'Distinction de la casse'; -// $string['middle'] = 'Milieu'; -$string['middle'] = 'middle'; +$string['middle'] = 'Milieu'; $string['minimize'] = 'Minimiser l\'éditeur'; $string['move'] = 'Déplacer'; -$string['nolink'] = 'Pas de lien automatique'; $string['normal'] = 'Normal'; $string['notimage'] = 'Le fichier sélectionné n\'est pas une image. Veuillez sélectionner une image !'; $string['notset'] = 'Par défaut'; $string['ok'] = 'OK'; -$string['options'] = 'Options'; $string['orderedlist'] = 'Liste numérotée'; $string['outdent'] = 'Diminuer le niveau d\'indentation'; $string['paste'] = 'Coller depuis le presse-papier'; @@ -88,16 +78,11 @@ $string['preformatted'] = 'Pr $string['preview'] = 'Prévisualiser'; $string['properties'] = 'Propriétés'; $string['redo'] = 'Rétablir la dernière action'; -$string['regularexpressions'] = 'Utiliser les expressions régulières (GREP)'; $string['removelink'] = 'Supprimer le lien'; $string['rename'] = 'Renommer'; -$string['replaceall'] = 'Tout remplacer'; -$string['replacewith'] = 'Remplacer'; $string['right'] = 'Droite'; $string['righttoleft'] = 'Direction de droite à gauche'; $string['rows'] = 'Rangées'; -$string['searchandreplace'] = 'Rechercher et remplacer'; -$string['searchnotfound'] = 'Chaîne non trouvée'; $string['selectcolor'] = 'Choisir une couleur'; $string['selection'] = 'Sélection'; $string['showhelp'] = 'Aide sur l\'éditeur'; diff --git a/lang/fr/error.php b/lang/fr/error.php index 98bd9e78dbf..41cc3119b4d 100755 --- a/lang/fr/error.php +++ b/lang/fr/error.php @@ -1,10 +1,8 @@ modulename » ($a->moduleversion) n\'a pas pu être installé. Il requiert une version plus récente de Moodle (votre version actuelle est $a->currentmoodle, vous avez besoin de la version $a->requiremoodle).'; $string['notavailable'] = 'Ceci n\'est actuellement pas disponible'; -$string['onlyeditown'] = 'Vous ne pouvez modifier que vos propres informations'; -$string['processingstops'] = 'Le traitement s\'arrête ici. Les enregistrements restant ont été ignorés.'; $string['restricteduser'] = 'Votre compte utilisateur « $a » ne vous permet pas d\'effectuer cette opération.'; -$string['sessionipnomatch'] = 'Désolé, votre adresse IP semble avoir changé depuis votre première connexion. Ce réglage de sécurité empêche des pirates d\'usurper votre identité lorsque vous êtes connecté sur ce site. Les utilisateurs ne devraient en principe pas rencontrer ce message. Veuillez demander de l\'aide à l\'administrateur de ce site.'; $string['unknowncourse'] = 'Le cours « $a » est inconnu'; $string['usernotaddederror'] = 'L\'utilisateur « $a » n\'a pas été ajouté : erreur inconnue'; $string['usernotaddedregistered'] = 'L\'utilisateur « $a » n\'a pas été ajouté ; il est déjà référencé'; $string['usernotavailable'] = 'Vous n\'avez pas l\'autorisation de consulter les coordonnées de cet utilisateur.'; -?> \ No newline at end of file +?> diff --git a/lang/fr/exercise.php b/lang/fr/exercise.php index cc438f6695d..3bf47949ced 100644 --- a/lang/fr/exercise.php +++ b/lang/fr/exercise.php @@ -16,7 +16,10 @@ $string['assessmentform'] = 'Formulaire d\' $string['assessmentmadebythe'] = 'Évaluation faite par $a'; $string['assessments'] = 'Évaluations'; $string['assessmentofthissubmission'] = 'Évaluation de ce travail'; -$string['atthisstageyou'] = 'Vous venez de terminer une évaluation.
        Vous pouvez si vous le désirez réviser votre travail à la lumière de cette évaluation.
        Dans ce cas, n\'oubliez pas de réviser aussi votre évaluation.
        Vous pouvez le faire en cliquant sur le lien « Ré-évaluer » ci-dessous.'; +$string['atthisstageyou'] = 'Vous venez de terminer une évaluation.
        + Vous pouvez si vous le désirez réviser votre travail à la lumière de cette évaluation.
        + Dans ce cas, n\'oubliez pas de réviser aussi votre évaluation.
        + Vous pouvez le faire en cliquant sur le lien « Ré-évaluer » ci-dessous.'; $string['awaitingassessmentbythe'] = 'En attente d\'une évaluation de l\'enseignant'; $string['clearlateflag'] = 'Annuler l\'annonce « En retard »'; $string['comment'] = 'Commentaire'; @@ -27,7 +30,7 @@ $string['count'] = 'Nombre'; $string['criterion'] = 'Critère'; $string['deadline'] = 'Délai'; $string['deadlineis'] = 'Le délai est $a'; -$string['deletesubmissionwarning'] = 'Attention ! Il y a \$a évaluations associée à ce travail.
        Nous vous recommandons vivement de NE PAS supprimer ce travail.'; +$string['deletesubmissionwarning'] = 'Attention ! Il y a \$a évaluations associée à ce travail.
        Nous vous recommandons vivement de NE PAS supprimer ce travail.'; $string['description'] = 'Consigne'; $string['descriptionofexercise'] = 'Dans une activité « Exercice », la consigne de l\'exercice ou de la tâche à effectuer par l\'étudiant est placée dans un document PDF, HTML ou autre. Ce fichier est déposé dans l\'exercice par l\'enseignant avant l\'ouverture de l\'exercice pour les étudiants. Il est aussi possible de créer des variantes de la tâche à effectuer, là encore dans des fichiers que l\'on déposera dans l\'activité avant de l\'ouvrir aux étudiants.'; $string['delete'] = 'Supprimer'; @@ -40,7 +43,6 @@ $string['edit'] = 'Modifier'; $string['editingassessmentelements'] = 'Modifier les éléments d\'évaluation'; $string['element'] = 'Élément'; $string['elementweight'] = 'Coefficient'; -$string['enterpassword'] = 'Saisir le mot de passe'; $string['entriessaved'] = 'Réglage enregistré'; $string['errorbanded'] = 'Erreur cumulée'; $string['excellent'] = 'Excellent'; @@ -94,7 +96,10 @@ $string['noteongradinggrade'] = 'Cette note mesure $string['noteonstudentassessments'] = '{Note donnée par l\'étudiant / Note de l\'évaluation donnée par l\'enseignant}'; $string['notgraded'] = 'Sans note'; $string['notitlegiven'] = 'Aucun nom fourni'; -// $string['nowpleasemakeyourownassessment'] = 'Veuillez maintenant évaluer le travail de $a.
        Le formulaire d\'évaluation contient initialement les notes que s\'est donné l\'étudiant.
        Faites toutes les modifications que vous jugez nécessaires, puis cliquez sur l\'un
        des boutons au bas de la page.'; +$string['nowpleasemakeyourownassessment'] = 'Veuillez maintenant évaluer le travail de $a.
        + Le formulaire d\'évaluation contient initialement les notes que s\'est donné l\'étudiant.
        + Faites toutes les modifications que vous jugez nécessaires, puis cliquez sur l\'un
        + des boutons au bas de la page.'; $string['numberofassessmentelements'] = 'Nombre de commentaires, d\'éléments d\'évaluation, de critères, de notes ou de catégories dans une rubrique'; $string['numberofcriterionelements'] = 'Le nombre d\'éléments d\'évaluation doit être supérieur à un.'; $string['numberofentries'] = 'Nombre de travaux'; @@ -103,7 +108,6 @@ $string['numberofnegativeresponses'] = 'Nombre de r $string['onesubmission'] = 'Un travail remis'; $string['optionaladjustment'] = 'Ajustement facultatif'; $string['overallgrade'] = 'Note finale'; -$string['passwordprotectedexercise'] = 'Exercice protégé par mot de passe'; $string['phase'] = 'Phase'; $string['phase1'] = 'Mise en place de l\'exercice'; $string['phase1short'] = 'Mise en place'; @@ -112,17 +116,23 @@ $string['phase2short'] = 'Disponible'; $string['phase3'] = 'Afficher les notes finales et le tableau des travaux'; $string['phase3short'] = 'Affichage'; $string['pleasegradetheassessment'] = 'Veuillez donner une note à l\'évaluation par $a de ce travail'; -$string['pleasemakeyourownassessment'] = 'Veuillez effectuer l\'évaluation du travail de $a.
        Notez que le formulaire d\'évaluation est affiché initialement avec les valeurs de l\'évaluation de l\'étudiant.
        Faites toutes les modifications que vous jugerez nécessaires et cliquez ensuite
        sur l\'un des boutons au bas de la page.'; $string['pleasesubmityourwork'] = 'Veuillez remettre votre travail à l\'aide de ce formulaire'; -$string['pleaseusethisform'] = 'Veuillez compléter ce formulaire
        après avoir terminé les tâches de l\'exercice ci-dessous.'; -$string['pleaseviewtheexercise'] = 'Veuillez consulter l\'exercice ci-dessous en cliquant sur son nom
        Merci de suivre les instructions données. Une fois les tâches terminées,
        veuillez cliquer sur le lien Évaluer (ou Ré-évaluer) ci-dessous.
        Cette évaluation faite, vous recevrez d\'autres instructions pour remettre votre travail.'; +$string['pleaseusethisform'] = 'Veuillez compléter ce formulaire
        + après avoir terminé les tâches de l\'exercice ci-dessous.'; +$string['pleaseviewtheexercise'] = 'Veuillez consulter l\'exercice ci-dessous en cliquant sur son nom
        + Merci de suivre les instructions données. Une fois les tâches terminées,
        + veuillez cliquer sur le lien Évaluer (ou Ré-évaluer) ci-dessous.
        + Cette évaluation faite, vous recevrez d\'autres instructions pour remettre votre travail.'; $string['poor'] = 'Faible'; $string['present'] = 'Présent'; $string['reasonforadjustment'] = 'Commentaire général/Justification de l\'ajustement'; $string['reassess'] = 'Ré-évaluer'; $string['regradestudentassessments'] = 'Ré-évaluer les évaluations des étudiants'; $string['resubmissionfor'] = 'Nouvelle remise pour $a'; -$string['resubmitnote'] = '* signifie que l\'étudiant peut remettre un autre document.
        On peut activer ce comportement à chaque document remis en le ré-évaluant et en
        cliquant sur le bouton Remises multiples autorisées. Les étudiants peuvent
        remettre un autre document lorsque cela est fait pour tous les travaux remis.'; +$string['resubmitnote'] = '* signifie que l\'étudiant peut remettre un autre document.
        + On peut activer ce comportement à chaque document remis en le ré-évaluant et en
        + cliquant sur le bouton Remises multiples autorisées. Les étudiants peuvent
        + remettre un autre document lorsque cela est fait pour tous les travaux remis.'; $string['rubric'] = 'Rubrique'; $string['savemyassessment'] = 'Enregistrer mon évaluation'; $string['savedok'] = 'Enregistrement réussi'; @@ -160,29 +170,29 @@ $string['theexercise'] = 'L\'exercice'; $string['theexerciseandthesubmissionby'] = 'L\'exercice et le travail remis par $a'; $string['thegradeis'] = 'La note est $a'; $string['thereisfeedbackfromthe'] = 'Vous avez un feedback de la part de $a'; -$string['thisisaresubmission'] = 'Ce travail est une nouvelle version remise par $a.
        Votre évaluation du précédent travail remis est affichée.
        Après avoir observé le nouveau travail, veuillez modifier votre évaluation
        et cliquer sur l\'un des boutons au bas de la page.'; +$string['thisisaresubmission'] = 'This is a Re-submission by $a.
        Your assessment of their previous submission is shown.
        + After looking at the new submission, please Amend this assessment
        + and click on one of the buttons at the foot of the page.'; $string['title'] = 'Nom'; $string['typeofscale'] = 'Type de barème'; $string['unassessed'] = '$a pas évalué'; $string['ungradedstudentassessments'] = '$a évaluations sans notes (travaux d\'étudiants)'; $string['usemaximum'] = 'Utiliser la note maximale'; $string['usemean'] = 'Utiliser la moyenne'; -$string['usepassword'] = 'Utiliser un mot de passe'; $string['verylax'] = 'Très indulgent'; $string['verypoor'] = 'Très faible'; $string['verystrict'] = 'Très strict'; $string['view'] = 'Afficher'; $string['viewteacherassessment'] = 'Afficher l\'évaluation de l\'enseignant'; -$string['warningonamendingelements'] = 'Attention ! Des évaluations ont été effectuées.
        NE modifiez PAS le nombre d\'éléments d\'évaluation, ni le type de barème, ni les coefficients des éléments.'; +$string['warningonamendingelements'] = 'Attention ! Des évaluations ont été effectuées.
        + NE modifiez PAS le nombre d\'éléments d\'évaluation, ni le type de barème, ni les coefficients des éléments.'; $string['weightederrorcount'] = 'Nombre d\'erreurs pondérées : $a'; $string['weightforgradingofassessments'] = 'Coefficient de la performance d\'évaluation'; $string['weightforteacherassessments'] = 'Coefficient des évaluations de l\'enseignant'; $string['weights'] = 'Pondération'; $string['weightssaved'] = 'Coefficients enregistrés'; $string['weightsusedforoverallgrade'] = 'Coefficients utilisés pour la note finale'; -$string['wrongpassword'] = 'Mot de passe incorrect pour cet exercice'; $string['yourassessment'] = 'Votre évaluation'; $string['yourfeedbackgoeshere'] = 'Votre feedback s\'affichera ici'; $string['yoursubmission'] = 'Votre travail'; - -?> \ No newline at end of file +?> diff --git a/lang/fr/forum.php b/lang/fr/forum.php index 44f49095a76..67c299cf9f9 100644 --- a/lang/fr/forum.php +++ b/lang/fr/forum.php @@ -1,26 +1,22 @@ name - $a->date'; -$string['configcleanreadtime'] = 'L\'heure à laquelle nettoyer les anciens messages de la table des messages lus.'; $string['configdisplaymode'] = 'Mode d\'affichage par défaut des discussions'; $string['configenablerssfeeds'] = 'Activation de l\'option des canaux RSS pour tous les forums. Il est en outre nécessaire d\'activer manuellement les canaux dans les réglages de chaque forum.'; $string['configlongpost'] = 'Tout message dépassant cette longueur (code HTML non compris) est considéré comme long message'; $string['configmanydiscussions'] = 'Nombre maximum de discussions affichées sur une page'; $string['configmaxbytes'] = 'Taille maximale de l\'ensemble des annexes de tous les forums du site (dépend des limites du cours et d\'autres réglages locaux)'; -$string['configoldpostdays'] = 'Nombre de jours après lequel tout message est considéré comme lu.'; $string['configreplytouser'] = 'Lorsqu\'un message est envoyé par courriel, doit-il contenir l\'adresse de courriel de son auteur, afin que le destinataire puisse l\'atteindre personnellement ? Même lorsque cette option est activée, les utilisateurs peuvent choisir dans leur profil de garder leur adresse secrète.'; $string['configshortpost'] = 'Tout message plus court que cette longueur (code HTML non compris) est considéré comme message court'; -$string['configtrackreadposts'] = 'Choisissez « Oui » pour activer la gestion des messages lus/non lus pour chaque utilisateur.'; -$string['configusermarksread'] = 'Si « Oui », l\'utilisateur doit marquer manuellement un message comme lu. Si « Non », le message est automatiquement marqué comme lu après sa lecture.'; $string['couldnotadd'] = 'Impossible d\'ajouter votre message à cause d\'une erreur indéterminée'; $string['couldnotdeleteratings'] = 'Désolé, la suppression de ce message n\'est plus possible car quelqu\'un l\'a déjà évalué'; $string['couldnotdeletereplies'] = 'Désolé, la suppression n\'est plus possible car quelqu\'un a déjà répondu'; @@ -42,7 +38,6 @@ $string['discussionsstartedbyrecent'] = 'Discussions r $string['discussthistopic'] = 'Discuter sur ce sujet'; $string['eachuserforum'] = 'Chaque personne commence une discussion'; $string['edit'] = 'Modifier'; -$string['editedby'] = 'Modifié par $a->name - $a->date'; $string['editing'] = 'Modification'; $string['emptymessage'] = 'Il y a eu un problème avec votre message. Peut-être est-il vide ou alors la taille de l\'annexe est trop grande. Vos modifications n\'ont pas été enregistrées.'; $string['everyonecanchoose'] = 'Tout le monde peut s\'abonner'; @@ -53,7 +48,6 @@ $string['forcesubscribeq'] = 'Abonner tout le monde ?'; $string['forum'] = 'Forum'; $string['forumintro'] = 'Introduction au forum'; $string['forumname'] = 'Nom du forum'; -$string['forumposts'] = 'Messages des forums'; $string['forums'] = 'Forums'; $string['forumtype'] = 'Type de forum'; $string['generalforum'] = 'Forum standard pour utilisation générale'; @@ -64,12 +58,9 @@ $string['introsocial'] = 'Un forum pour discuter de sujets divers'; $string['introteacher'] = 'Un forum réservé aux remarques et discussions des enseignants'; $string['lastpost'] = 'Dernier message'; $string['learningforums'] = 'Forums d\'apprentissage'; -$string['markread'] = 'Marqué comme lu'; -$string['markunread'] = 'Marqué comme non lu'; $string['maxattachmentsize'] = 'Taille maximale de l\'annexe'; $string['maxtimehaspassed'] = 'Désolé. Le délai maximum pour modifier ce message ($a) est dépassé'; $string['message'] = 'Message'; -$string['missingsearchterms'] = 'Le terme recherché suivant n\'apparaît que dans le code HTML markup de ce message :'; $string['modeflatnewestfirst'] = 'Réponses en ligne, la plus récente en premier'; $string['modeflatoldestfirst'] = 'Réponses en ligne, la plus ancienne en premier'; $string['modenested'] = 'Réponses emboîtées'; @@ -83,8 +74,7 @@ $string['namesocial'] = 'Forum informel'; $string['nameteacher'] = 'Forum des enseignants'; $string['newforumposts'] = 'Nouveaux messages dans les forums'; $string['nodiscussions'] = 'Il n\'y a pas encore de sujet de discussion dans ce forum'; -$string['noguestpost'] = 'Désolé, les invités ne sont pas autorisés à écrire des messages.'; -$string['noguestsubscribe'] = 'Désolé, les invités ne sont pas autorisés à s\'abonner pour recevoir les messages des forums par courriel.'; +$string['noguestpost'] = 'Désolé, les invités ne sont pas autorisés à écrire des messages'; $string['nomorepostscontaining'] = 'Plus aucun message contenant « $a » n\'a été trouvé'; $string['nonews'] = 'Aucune brève n\'a été encore publiée'; $string['noposts'] = 'Aucun message'; @@ -95,13 +85,12 @@ $string['nownotsubscribed'] = 'Les messages du forum $string['nowsubscribed'] = 'Les messages du forum « $a->forum » seront envoyés à $a->name.'; $string['numposts'] = '$a messages'; $string['olderdiscussions'] = 'Discussions antérieures'; -$string['oldertopics'] = 'Sujets antérieurs'; $string['openmode0'] = 'Aucune discussion, aucune réponse'; $string['openmode1'] = 'Aucune discussion, mais les réponses sont autorisées'; $string['openmode2'] = 'Discussions et réponses'; $string['parent'] = 'Niveau supérieur'; $string['parentofthispost'] = 'Niveau supérieur de cet article'; -$string['postadded'] = '

        Votre message a été enregistré.

        Il vous est possible de le modifier pendant $a.

        '; +$string['postadded'] = 'Votre message a été enregistré.

        Il vous est possible de le modifier pendant $a.'; $string['postincontext'] = 'Voir ce message dans son contexte'; $string['postmailinfo'] = 'Ceci est une copie du message posté sur le site $a. @@ -138,22 +127,10 @@ $string['reply'] = 'R $string['replyforum'] = 'Répondre au forum'; $string['rsssubscriberssdiscussions'] = 'Affichage du canal RSS des discussions du forum « $a »'; $string['rsssubscriberssposts'] = 'Affichage du canal RSS des messages du forum « $a »'; -$string['searchforumintro'] = 'Veuillez saisir les termes à rechercher dans l\'un ou plusieurs des champs ci-dessous :'; $string['search'] = 'Rechercher'; -$string['searchdatefrom'] = 'Dans les messages postérieurs à'; -$string['searchdateto'] = 'Dans les messages antérieurs à'; -$string['searchforums'] = 'Recherche (forums)'; -$string['searchfullwords'] = 'Mots entiers'; -$string['searchnotwords'] = 'Termes à exclure'; -$string['searchphrase'] = 'Phrase exacte dans le corps du message'; -$string['searchsubject'] = 'Terme dans le sujet du message'; -$string['searchuser'] = 'Nom de l\'auteur'; -$string['searchuserid'] = 'Identifiant (Moodle ID) de l\'auteur'; -$string['searchwhichforums'] = 'Rechercher dans quels forums ?'; -$string['searchwords'] = 'Termes apparaissant n\'importe où dans le message'; +$string['searchforums'] = 'Recherche'; $string['searcholderposts'] = 'Rechercher les anciens messages...'; $string['searchresults'] = 'Résultats de la recherche'; -$string['seeallposts'] = 'Afficher tous les messages écrits par cet utilisateur'; $string['sendinratings'] = 'Envoyer mes dernières évaluations'; $string['showsubscribers'] = 'Afficher/modifier les abonnés à ce forum'; $string['singleforum'] = 'Une seule discussion simple'; @@ -169,15 +146,9 @@ $string['subscribestart'] = 'Abonnez-moi $string['subscribestop'] = 'Désabonnez-moi de ce forum '; $string['subscription'] = 'Abonnement'; $string['subscriptions'] = 'Abonnements'; -$string['unread'] = 'Non lu'; -$string['unreadposts'] = 'Messages non lus'; $string['unsubscribe'] = 'Se désabonner de ce forum'; -$string['unreadpostsnumber'] = '$a messages non lus'; -$string['unreadpostsone'] = '1 message non lu'; $string['unsubscribed'] = 'Désabonné'; $string['unsubscribeshort'] = 'Désabonner'; -$string['yesinitially'] = 'Oui, initialement'; -$string['yesforever'] = 'Oui, indéfiniment'; $string['youratedthis'] = 'Vous l\'avez évalué'; $string['yournewtopic'] = 'Nouveau sujet de discussion'; $string['yourreply'] = 'Votre réponse'; diff --git a/lang/fr/glossary.php b/lang/fr/glossary.php index 51dd2b17fff..9c3675f7c21 100644 --- a/lang/fr/glossary.php +++ b/lang/fr/glossary.php @@ -8,7 +8,6 @@ $string['allcategories'] = 'Toutes les cat $string['allentries'] = 'Tout'; $string['allowcomments'] = 'Autoriser les commentaires'; $string['allowduplicatedentries'] = 'Autoriser les doublons'; -$string['allowprintview'] = 'Autoriser l\'affichage pour impression'; $string['allowratings'] = 'Autoriser l\'évaluation des articles'; $string['answer'] = 'Réponse'; $string['approve'] = 'Approuver'; @@ -22,7 +21,7 @@ $string['back'] = 'Pr $string['cantinsertcat'] = 'Impossible d\'insérer la catégorie'; $string['cantinsertrec'] = 'Impossible d\'insérer l\'enregistrement'; $string['cantinsertrel'] = 'Impossible d\'insérer le lien catégorie-article'; -$string['casesensitive'] = 'Article sensible à la casse'; +$string['casesensitive'] = 'Cet article est sensible à la casse'; $string['categories'] = 'Catégories'; $string['category'] = 'Catégorie'; $string['categorydeleted'] = 'Catégorie supprimée'; @@ -31,15 +30,15 @@ $string['cnfallowcomments'] = 'D $string['cnfallowdupentries'] = 'Définit si un glossaire accepte par défaut les doublons'; $string['cnfapprovalstatus'] = 'Définit le statut d\'approbation d\'un article proposé par un étudiant'; $string['cnfcasesensitive'] = 'Définit si un article doit par défaut correspondre exactement au texte cible (casse des caractères), quand il est lié'; -$string['cnfdefaulthook'] = 'Définit la sélection à afficher par défaut lors du premier affichage du glossaire'; -$string['cnfdefaultmode'] = 'Définit le cadre à afficher par défaut lors du premier affichage du glossaire'; +$string['cnfdefaulthook'] = 'Sélectionne la sélection à afficher par défaut lors du premier affichage du glossaire'; +$string['cnfdefaultmode'] = 'Sélectionne le cadre à afficher par défaut lors du premier affichage du glossaire'; $string['cnffullmatch'] = 'Définit si un article doit par défaut correspondre mot pour mot au texte cible, quand il est lié'; $string['cnflinkentry'] = 'Définit si un article est par défaut automatiquement lié'; $string['cnflinkglossaries'] = 'Définit si un glossaire doit par défaut être lié'; -$string['cnfrelatedview'] = 'Définit le format d\'affichage utilisé pour les liens automatiques et l\'affichache des articles'; +$string['cnfrelatedview'] = 'Sélectionne le format d\'affichage utilisé pour les liens automatiques et l\'affichache des articles'; $string['cnfshowgroup'] = 'Indique si la coupure de groupe doit être visible ou non'; -$string['cnfsortkey'] = 'Définit la clef de tri par défaut'; -$string['cnfsortorder'] = 'Définit l\'ordre de tri par défaut'; +$string['cnfsortkey'] = 'Sélectionne la clef de tri par défaut'; +$string['cnfsortorder'] = 'Sélectionne l\'ordre de tri par défaut'; $string['cnfstudentcanpost'] = 'Définit si les étudiants peuvent par défaut proposer des articles dans un glossaire '; $string['comment'] = 'Commentaire'; $string['commentdeleted'] = 'Le commentaire a été effacé.'; @@ -51,7 +50,7 @@ $string['concepts'] = 'Concepts'; $string['configenablerssfeeds'] = 'Activation de l\'option des canaux RSS pour tous les glossaires. Il est en outre nécessaire d\'activer manuellement les canaux dans les réglages de chaque glossaire.'; $string['currentglossary'] = 'Glossaire actuel'; $string['dateview'] = 'Consulter par date'; -$string['defaultapproval'] = 'Approbation par défaut'; +$string['defaultapproval'] = 'Approbation par défaut des articles'; $string['definition'] = 'Définition'; $string['definitions'] = 'Définitions'; $string['deleteentry'] = 'Supprimer l\'article'; @@ -70,7 +69,7 @@ $string['displayformatfullwithoutauthor'] = 'Complet sans auteur'; $string['displayformats'] = 'Formats d\'affichage'; $string['displayformatssetup'] = 'Réglages des formats d\'affichage'; $string['duplicateentry'] = 'Doublon'; -$string['editalways'] = 'Toujours modifiable'; +$string['editalways'] = 'Toujours modifier'; $string['editcategories'] = 'Modifier les catégories'; $string['editentry'] = 'Modifier l\'article'; $string['editingcomment'] = 'Modification commentaire'; @@ -82,16 +81,14 @@ $string['entryalreadyexist'] = 'Cet article existe d $string['entryapproved'] = 'Cet article a été approuvé'; $string['entrydeleted'] = 'Article supprimé'; $string['entryexported'] = 'Article exporté avec succès'; -$string['entryishidden'] = '(Cet article est actuellement masqué)'; +$string['entryishidden'] = '(Cet article est actuellement masquée)'; $string['entryleveldefaultsettings'] = 'Réglages par défaut des articles'; -$string['entrysaved'] = 'Cet article a été enregistré'; -$string['entryupdated'] = 'Cet article a été mis à jour'; -$string['entryusedynalink'] = 'Article lié automatiquement'; +$string['entryusedynalink'] = 'Cet article sera automatiquement lié'; $string['explainaddentry'] = 'Ajout d\'un article au glossaire actuel.
        Les champs concept et définition doivent obligatoirement être remplis.'; $string['explainall'] = 'Afficher TOUS les articles sur une page'; $string['explainalphabet'] = 'Consultez le glossaire à l\'aide de cet index'; $string['explainexport'] = 'Un fichier a été généré.
        Téléchargez-le et conservez-le avec soin. Vous pourrez l\'importer quand vous voudrez dans ce cours ou dans un autre.'; -$string['explainimport'] = '

        Vous devez indiquer le fichier à importer et sélectionner vos options.

        Lancez votre requête et contrôlez les résultats.

        '; +$string['explainimport'] = 'Vous devez indiquer le fichier à importer et sélectionner vos options.
        Lancez votre requête et contrôlez les résultats.'; $string['explainspecial'] = 'Afficher les articles ne commençant pas par une lettre'; $string['exportedentry'] = 'Article exporté'; $string['exportedfile'] = 'Fichier exporté'; @@ -110,7 +107,7 @@ $string['importcategories'] = 'Importer les cat $string['importedcategories'] = 'Catégories importées'; $string['importedentries'] = 'Articles importés'; $string['importentries'] = 'Importer des articles'; -$string['isglobal'] = 'Glossaire global'; +$string['isglobal'] = 'Ce glossaire est-il global ?'; $string['linkcategory'] = 'Lier automatiquement cette catégorie'; $string['mainglossary'] = 'Glossaire principal'; $string['maxtimehaspassed'] = 'Désolé ! la durée maximale pour la modification de ce commentaire ($a) est échue.'; @@ -129,7 +126,6 @@ $string['notcategorised'] = 'Sans cat $string['numberofentries'] = 'Nombre d\'articles'; $string['onebyline'] = '(une par ligne)'; $string['printerfriendly'] = 'Version pour impression'; -$string['printviewnotallowed'] = 'L\'affichage pour impression n\'est pas autorisé'; $string['question'] = 'Question'; $string['rate'] = 'Évaluer'; $string['rating'] = 'Note'; @@ -157,7 +153,7 @@ $string['special'] = 'Sp $string['standardview'] = 'Consulter alphabétiquement'; $string['studentcanpost'] = 'Les étudiants peuvent ajouter des articles'; $string['totalentries'] = 'Nombre total d\'articles'; -$string['usedynalink'] = 'Activer les liens automatiques'; +$string['usedynalink'] = 'Lier automatiquement les articles des glossaires'; $string['waitingapproval'] = 'En attente d\'approbation'; $string['warningstudentcapost'] = '(n\'est valable que si le glossaire n\'est pas principal)'; $string['withauthor'] = 'Concepts avec auteur'; @@ -165,4 +161,4 @@ $string['withoutauthor'] = 'Concepts sans auteur'; $string['writtenby'] = 'par'; $string['youarenottheauthor'] = 'vous n\'êtes pas l\'auteur de ce commentaire. Vous ne pouvez donc pas le modifier.'; -?> \ No newline at end of file +?> diff --git a/lang/fr/help/advancedsettings.html b/lang/fr/help/advancedsettings.html deleted file mode 100644 index acb81e15a7d..00000000000 --- a/lang/fr/help/advancedsettings.html +++ /dev/null @@ -1,7 +0,0 @@ - - -

        Réglages avancés

        - -

        Si vous cocher une de ces cases, l'option correspondante sera par défaut invisible pour les enseignants.

        - -

        Ils pourront malgré tout avoir accès à ces « réglages avancés » à l'aide d'un bouton sur la page de modification de ce module.

        \ No newline at end of file diff --git a/lang/fr/help/assignment/assignmenttype.html b/lang/fr/help/assignment/assignmenttype.html index ad7161a4ebc..29068d49b63 100644 --- a/lang/fr/help/assignment/assignmenttype.html +++ b/lang/fr/help/assignment/assignmenttype.html @@ -1,13 +1,13 @@ -

        Types de devoir

        +

        Types de devoir

        Il y a plusieurs types de devoirs.

        -

        Activité hors ligne

        +

        Activité hors ligne

        Lorsque le devoir ou l'activité est réalisé hors ligne, donc en dehors de Moodle, on utilise ce type de devoir. Les étudiants peuvent voir la description du travail à accomplir, mais ne peuvent télécharger de fichiers dans Moodle. L'enseignant utilisera Moodle pour attribuer une note que les étudiants pourront consulter.

        -

        Envoi d'un fichier unique

        +

        Envoi d'un fichier unique

        Ce type de devoir permet aux étudiants de télécharger un seul fichier vers Moodle, peu en importe le type. L'enseignant pourra corriger les travaux en ligne.

        \ No newline at end of file diff --git a/lang/fr/help/assignment/emailteachers.html b/lang/fr/help/assignment/emailteachers.html deleted file mode 100644 index 7dacdededb7..00000000000 --- a/lang/fr/help/assignment/emailteachers.html +++ /dev/null @@ -1,10 +0,0 @@ - - -

        Envoyer aux enseignants les alertes par courriel

        - -

        Si cette option est activée, les enseignants reçoivent un bref message lorsque les étudiants ajoutent ou mettent à jour un document.

        - -

        Seuls les enseignants ayant l'autorisation de noter le travail reçoivent le message. Ainsi, par exemple, si le cours utilise des groupes séparés, les enseignants restreints à un groupe particulier ne reçoivent pas les alertes concernant les étudiants des autres groupes.

        - -

        Pour les activités hors ligne, aucun message n'est jamais envoyé, puique les étudiants ne remettent aucun document.

        - diff --git a/lang/fr/help/assignment/index.html b/lang/fr/help/assignment/index.html index 10a65c47df4..b3b3d1d03dc 100755 --- a/lang/fr/help/assignment/index.html +++ b/lang/fr/help/assignment/index.html @@ -1,11 +1,5 @@ - -

        Devoirs

        - diff --git a/lang/fr/help/assignment/mods.html b/lang/fr/help/assignment/mods.html index bc137b587f0..933cc077b4e 100755 --- a/lang/fr/help/assignment/mods.html +++ b/lang/fr/help/assignment/mods.html @@ -1,5 +1,9 @@ -

        devoir Devoirs

        +

         Devoirs

        -
          Les devoirs permettent à l'enseignant de proposer aux étudiants une tâche leur demandant de préparer un document électronique (de n'importe quel format) et de le déposer sur le serveur. Voici quelques exemples de devoirs : dissertation, projets, rapports, etc. Ce module offre également des outils d'évaluation des travaux.
        +
          + +

          Les devoirs permettent à l'enseignant de proposer aux étudiants une tâche leur demandant de préparer un document électronique (de n'importe quel format) et de le déposer sur le serveur. Voici quelques exemples de devoirs : dissertation, projets, rapports, etc. Ce module offre également des outils d'évaluation des travaux.

          + +
        diff --git a/lang/fr/help/assignment/resubmit.html b/lang/fr/help/assignment/resubmit.html index afd5f584c61..5af9338968b 100644 --- a/lang/fr/help/assignment/resubmit.html +++ b/lang/fr/help/assignment/resubmit.html @@ -1,9 +1,15 @@ - +

        Accepter de nouvelles versions du devoir ?

        -

        Accepter de nouvelles versions du devoir ?

        +

        Par défaut, les étudiants ne peuvent rendre un +nouveau devoir une fois que l'enseignant a corrigé et noté celui qui +a déjà été rendu.

        -

        Par défaut, les étudiants ne peuvent rendre un nouveau devoir une fois que l'enseignant a corrigé et noté celui qui a déjà été rendu.

        +

        Si vous activez cette option, les étudiants pourront +proposer un nouveau devoir même s'il a déjà +été noté (afin que vous le notiez de nouveau). Ceci +peut être utile lorsque l'enseignant souhaite encourager +les étudiants à faire un meilleur travail en un +processus itératif.

        -

        Si vous activez cette option, les étudiants pourront proposer un nouveau devoir même s'il a déjà été noté (afin que vous le notiez de nouveau). Ceci peut être utile lorsque l'enseignant souhaite encourager les étudiants à faire un meilleur travail en un processus itératif.

        - -

        Cette option n'est évidemment pas utilisée pour les activités hors ligne.

        +

        Évidemment, cette option n'est pas utilisé pour +les activités hors ligne.

        diff --git a/lang/fr/help/chat/chatting.html b/lang/fr/help/chat/chatting.html index bae9d9573a7..36aa93e6b25 100755 --- a/lang/fr/help/chat/chatting.html +++ b/lang/fr/help/chat/chatting.html @@ -1,30 +1,33 @@ - +

        Utilisation du Chat

        -

        Utilisation du Chat

        - -

        Le module de chat contient quelques fonctions rendant le chat un peu plus sympathique.

        +

        Le module de chat contient quelques fonctions rendant le chat +un peu plus sympathique.

        +
        Binettes
        +
        Toutes les binettes (emoticons) que vous pouvez utiliser dans Moodle + peuvent aussi être tapées dans le chat, et elles seront affichées + correctement. Par exemple, :-) donnera .
        -
        Binettes
        +
        Liens
        +
        Les adresses Internet (URLs) sont automatiquement transformées en liens + hypertextes.
        + +
        Personnalisation
        +
        Vous pouvez commencer une ligne avec « /me » ou « : » pour personnaliser + vos interventions. Si votre nom est Héloïse, et que vous tapez + « :rigole ! » ou « /me rigole ! », tout le monde lira + « Héloïse rigole ! ».
        -
        Toutes les binettes (emoticons) que vous pouvez utiliser dans Moodle peuvent aussi être tapées dans le chat, et elles seront affichées correctement. Par exemple, :-) donnera sourire.
        +
        Bips
        +
        Vous pouvez envoyer un son à quelqu'un en cliquant sur le + lien « bip » à côté de son nom. Pour envoyer ce son à tous les + participants au chat, vous pouvez simplement taper « beep all ».
        -
        Liens
        - -
        Les adresses Internet (URLs) sont automatiquement transformées en liens hypertextes.
        - -
        Personnalisation
        - -
        Vous pouvez commencer une ligne avec « /me » ou « : » pour personnaliser vos interventions. Si votre nom est Héloïse, et que vous tapez « :rigole ! » ou « /me rigole ! », tout le monde lira « Héloïse rigole ! ».
        - -
        Bips
        - -
        Vous pouvez envoyer un son à quelqu'un en cliquant sur le lien « bip » à côté de son nom. Pour envoyer ce son à tous les participants au chat, vous pouvez simplement taper « beep all ».
        - -
        HTML
        - -
        Si vous connaissez le code HTML, vous pouvez l'utiliser dans vos interventions pour ajouter des images, des sons ou créer des textes de couleurs et de tailles diverses.
        +
        HTML
        +
        Si vous connaissez le code HTML, vous pouvez l'utiliser dans + vos interventions pour ajouter des images, des sons ou créer + des textes de couleurs et de tailles diverses.
        diff --git a/lang/fr/help/chat/mods.html b/lang/fr/help/chat/mods.html index 9dfa64b15bb..a4e6ca24bfd 100755 --- a/lang/fr/help/chat/mods.html +++ b/lang/fr/help/chat/mods.html @@ -1,4 +1,4 @@ -

         Chat

        +

         Chat

          Le module Chat permet aux participants d'avoir une discussion synchrone en temps réel via le web. C'est une diff --git a/lang/fr/help/choice/index.html b/lang/fr/help/choice/index.html index be073ccbe18..164c3475370 100755 --- a/lang/fr/help/choice/index.html +++ b/lang/fr/help/choice/index.html @@ -1,11 +1,4 @@ - -

          Sondages

          - \ No newline at end of file diff --git a/lang/fr/help/choice/mods.html b/lang/fr/help/choice/mods.html index c5d171d3061..b132835cc5d 100755 --- a/lang/fr/help/choice/mods.html +++ b/lang/fr/help/choice/mods.html @@ -1,4 +1,4 @@ -

           Sondage

          +

           Sondage

            L'activité Sondage est très simple - l'enseignant pose une question et donne un choix de plusieurs réponses possibles. Cette activité diff --git a/lang/fr/help/choice/options.html b/lang/fr/help/choice/options.html index a7c086dc7bd..00a49b1ff25 100755 --- a/lang/fr/help/choice/options.html +++ b/lang/fr/help/choice/options.html @@ -1,4 +1,4 @@ -

            Options des sondages

            +

            Options des sondages

            Vous indiquez ici les réponses possibles parmi lesquelles les participants auront à choisir.

            diff --git a/lang/fr/help/choice/timerestrict.html b/lang/fr/help/choice/timerestrict.html index da78d27da32..b1eb24bbe03 100644 --- a/lang/fr/help/choice/timerestrict.html +++ b/lang/fr/help/choice/timerestrict.html @@ -1,9 +1,7 @@ - +

            Sondage limité dans le temps

            -

            Sondage limité dans le temps

            +

            Ce réglage vous permet de définir un intervalle de temps durant lequel les participants sont autorisés à répondre au sondage.

            -

            Ce réglage vous permet de définir un intervalle de temps durant lequel les participants sont autorisés à répondre au sondage.

            +

            Si vous désirez que le sondage soit disponible indéfiniment, fixer une date de fermeture très loin dans le futur.

            -

            Si vous désirez que le sondage soit disponible indéfiniment, fixer une date de fermeture très loin dans le futur.

            - -

            Si vous ne désirez pas utiliser cette fonctionnalité, décochez cette option.

            +

            Si vous ne désirez pas utiliser cette fonctionnalité, décochez cette option.

            diff --git a/lang/fr/help/cookies.html b/lang/fr/help/cookies.html index 7958a2d4a69..0d7c2b1b4a9 100755 --- a/lang/fr/help/cookies.html +++ b/lang/fr/help/cookies.html @@ -1,9 +1,9 @@ -

            Cookies

            +

            Cookies

            Ce site utilise deux cookies.

            Un cookie essentiel est utilisé pour la session de travail. Il est -habituellement appelé MoodleSession. Vous devez autoriser son +habituellement appelé MoodleSession. Vous devez autoriser son utilisation par le navigateur pour pouvoir ouvrir de nouvelles fenêtres sans avoir à vous reconnecter chaque fois. Le cookie est effacé lorsque vous vous déconnectez ou si vous quittez le navigateur.

            @@ -11,6 +11,6 @@ lorsque vous vous déconnectez ou si vous quittez le navigateur.

            L'autre cookie n'est pas essentiel, mais rend la connexion à Moodle plus facile en mémorisant votre nom d'utilisateur dans le navigateur. Vous n'aurez donc pas à remplir ce champ lors de -la prochaine visite. Il porte habituellement le nom MOODLEID. +la prochaine visite. Il porte habituellement le nom MOODLEID. Il n'y a toutefois pas de problème à refuser ce cookie.

            diff --git a/lang/fr/help/courseavailability.html b/lang/fr/help/courseavailability.html index df440d24ad2..cb4257cd3c5 100755 --- a/lang/fr/help/courseavailability.html +++ b/lang/fr/help/courseavailability.html @@ -1,8 +1,6 @@ - +

            Affichage du cours

            -

            Affichage du cours

            - -

            Cette option vous permet de rendre votre cours complètement invisible aux +

            Cette option vous permet de rendre votre cours complètement invisible aux étudiants.

            Il n'apparaîtra pas sur la liste des cours, sauf pour les enseignants et diff --git a/lang/fr/help/coursecategory.html b/lang/fr/help/coursecategory.html index e5c68ffc270..2fa5daeb43d 100644 --- a/lang/fr/help/coursecategory.html +++ b/lang/fr/help/coursecategory.html @@ -1,4 +1,4 @@ -

            Disciplines

            +

            Disciplines

            L'administrateur de votre site Moodle a peut-être créé plusieurs disciplines de cours. Une disciplines diff --git a/lang/fr/help/courseformats.html b/lang/fr/help/courseformats.html index 836f2d45648..378ea375708 100644 --- a/lang/fr/help/courseformats.html +++ b/lang/fr/help/courseformats.html @@ -1,6 +1,6 @@ -

            Formats des cours dans Moodle

            +

            Formats des cours dans Moodle

            -

            Format hebdomadaire

            +

            Format hebdomadaire

              Le cours est organisé par semaine avec des dates de début et de fin clairement identifiées. Chaque semaine contient des activités. @@ -9,7 +9,7 @@ vie » de, par exemple, deux semaines, après quoi elles ne sont disponibles.
            -

            Format thématique

            +

            Format thématique

              Très similaire au format hebdomadaire exception faite que les semaines sont appelées « thèmes ». Un @@ -17,7 +17,7 @@ sont appelées « thèmes ». Un limite temporelle. Vous n'avez besoin de préciser aucune date.
            -

            Format informel

            +

            Format informel

              Ce format est organisé autour d'un forum principal, le « Forum public », qui est affiché sur la page diff --git a/lang/fr/help/coursefullname.html b/lang/fr/help/coursefullname.html index eea3cc04c20..7111458d63e 100644 --- a/lang/fr/help/coursefullname.html +++ b/lang/fr/help/coursefullname.html @@ -1,4 +1,4 @@ -

              Nom complet du cours

              +

              Nom complet du cours

              Le nom complet du cours est affiché en haut de l'écran et dans la liste des cours.

              diff --git a/lang/fr/help/coursegrades.html b/lang/fr/help/coursegrades.html index 1ad8a5ac72a..7f0c1212bba 100755 --- a/lang/fr/help/coursegrades.html +++ b/lang/fr/help/coursegrades.html @@ -1,6 +1,6 @@ -

              Notes

              +

              Notes

              Plusieurs parmi les activités d'un cours peuvent être notées.

              diff --git a/lang/fr/help/coursehiddensections.html b/lang/fr/help/coursehiddensections.html index 5fec2e4145b..9af08300613 100644 --- a/lang/fr/help/coursehiddensections.html +++ b/lang/fr/help/coursehiddensections.html @@ -1,4 +1,4 @@ -

              Sections cachées dans les cours

              +

              Sections cachées dans les cours

              Cette option vous permet de décider comment les sections cachées de votre cours sont affichées pour les diff --git a/lang/fr/help/courseidnumber.html b/lang/fr/help/courseidnumber.html index c2112d4e6b7..d7b03ac1295 100644 --- a/lang/fr/help/courseidnumber.html +++ b/lang/fr/help/courseidnumber.html @@ -1,5 +1,5 @@ - + -

              Numéro d'identification (ID) du cours

              +

              Numéro d'identification (ID) du cours

              -

              Le numéro d'identification (ID) du cours n'est utilisé que lorsque le cours est mis en relation avec des systèmes externes. Il n'est jamais affiché dans Moodle. Si vous avez un numéro de code officiel pour ce cours, utilisez-le. Sinon, vous pouvez laisser ce champ vide.

              \ No newline at end of file +

              Numéro d'identification (ID) du cours n'est utilisé que lorsque le cours est mis en relation avec des systèmes externes. Il n'est jamais affiché dans Moodle. Si vous avez un numéro de code officiel pour ce cours, utilisez-le. Sinon, vous pouvez laisser ce champ vide.

              \ No newline at end of file diff --git a/lang/fr/help/coursenewsitems.html b/lang/fr/help/coursenewsitems.html index a27cdf94d6f..6f6f2d87769 100644 --- a/lang/fr/help/coursenewsitems.html +++ b/lang/fr/help/coursenewsitems.html @@ -1,4 +1,4 @@ -

              Articles récents à afficher

              +

              Articles récents à afficher

              Un forum spécial appelé « Nouvelles » apparaît dans les cours hebdomadaires ou thématiques. C'est diff --git a/lang/fr/help/coursenumsections.html b/lang/fr/help/coursenumsections.html index 0e1ac8fc5c7..f72ed5f7871 100644 --- a/lang/fr/help/coursenumsections.html +++ b/lang/fr/help/coursenumsections.html @@ -1,4 +1,4 @@ -

              Nombre de semaines ou de thèmes

              +

              Nombre de semaines ou de thèmes

              Ce paramètre n'est utilisé que pour les cours hebdomadaires ou thématiques.

              diff --git a/lang/fr/help/courserecent.html b/lang/fr/help/courserecent.html index 73a387d4f0c..3aac6156e4e 100755 --- a/lang/fr/help/courserecent.html +++ b/lang/fr/help/courserecent.html @@ -1,4 +1,4 @@ -

              Activités récentes

              +

              Activités récentes

              Moodle peut afficher les activités récentes d'un cours sur la page d'accueil de ce cours.

              diff --git a/lang/fr/help/coursereports.html b/lang/fr/help/coursereports.html index d5ebc89e698..9e0159eb7c0 100755 --- a/lang/fr/help/coursereports.html +++ b/lang/fr/help/coursereports.html @@ -1,4 +1,4 @@ -

              Rapports d'activités

              +

              Rapports d'activités

              Vous pouvez obtenir des rapports d'activités pour chaque participant à votre cours. Ces rapports contiennent les diff --git a/lang/fr/help/courseshortname.html b/lang/fr/help/courseshortname.html index ddc7d58809e..3dd7b852041 100644 --- a/lang/fr/help/courseshortname.html +++ b/lang/fr/help/courseshortname.html @@ -1,4 +1,4 @@ -

              Nom abrégé du cours

              +

              Nom abrégé du cours

              Beaucoup d'organismes ont une référence abrégée pour chaque cours ou formation (par exemple un diff --git a/lang/fr/help/coursestartdate.html b/lang/fr/help/coursestartdate.html index 3cbc8dfa0c2..ade1c92d811 100644 --- a/lang/fr/help/coursestartdate.html +++ b/lang/fr/help/coursestartdate.html @@ -1,4 +1,4 @@ -

              Date du début du cours

              +

              Date du début du cours

              Indiquez ici la date du début du cours (dans votre fuseau horaire).

              diff --git a/lang/fr/help/courseuploadsize.html b/lang/fr/help/courseuploadsize.html index caab14c144d..ad220028462 100755 --- a/lang/fr/help/courseuploadsize.html +++ b/lang/fr/help/courseuploadsize.html @@ -1,4 +1,4 @@ -

              Taille maximale pour l'envoi de documents

              +

              Taille maximale pour l'envoi de documents

              Ce paramètre détermine la taille maximale des fichiers pouvant être déposés dans le cours par diff --git a/lang/fr/help/directorypaths.html b/lang/fr/help/directorypaths.html deleted file mode 100644 index 38e2b889db6..00000000000 --- a/lang/fr/help/directorypaths.html +++ /dev/null @@ -1,34 +0,0 @@ - - -

              Chemins d'accès des dossiers

              - -

              La syntaxe complète des chemins d'accès dépend du système d'exploitation de votre ordinateur :

              - -
              - -

              Les systèmes Windows utilisent des chemins comme ceux-ci :

              - -
                - -
              • c:\program files\data\moodle
              • - -
              • c:\documents and settings\moodle\temp\saved
              • - -
              - -

              Les systèmes Unix, ainsi que Mac OS X, utilisent des chemins comme ceux-ci :

              - -
                - -
              • /usr/data/moodle
              • - -
              • /home/moodle/tmp/saved
              • - -
              - - -
              - -

              Habituellement, c'est une bonne idée de s'assurer qu'un dossier existe préalablement à son utilisation. Parfois Moodle est capable de créer le dossier lorsque c'est nécessaire, mais ce n'est pas toujours possible.

              - -

              Assurez-vous que la casse des caractères (majuscule ou minuscule) est correcte, et ne placez jamais de barre oblique à la fin des chemins.

              diff --git a/lang/fr/help/emoticons.html b/lang/fr/help/emoticons.html index 25247ebcbf9..9bb56f0edc8 100755 --- a/lang/fr/help/emoticons.html +++ b/lang/fr/help/emoticons.html @@ -1,4 +1,4 @@ -

              Utilisation des binettes (smilies ou emoticons)

              +

              Utilisation des binettes (smilies ou emoticons)

              diff --git a/lang/fr/help/enrolmentkey.html b/lang/fr/help/enrolmentkey.html index d4ca2dfb536..a41f97f7833 100644 --- a/lang/fr/help/enrolmentkey.html +++ b/lang/fr/help/enrolmentkey.html @@ -1,4 +1,4 @@ -

              Clef d'inscription au cours

              +

              Clef d'inscription au cours

              La clef d'inscription permet d'éviter que des personnes indésirables ne s'inscrivent à un cours.

              @@ -8,7 +8,7 @@ de s'inscrire au cours.

              Si, au contraire, vous indiquez ici une chaîne de caractères - (la clef), elle sera demandée (seulement la première fois) + (la clef), elle sera demandée (seulement la première fois) à toute personne tentant de s'inscrire au cours.

              Il faut bien sûr fournir cette clef d'accès aux étudiants par diff --git a/lang/fr/help/enrolperiod.html b/lang/fr/help/enrolperiod.html index 752be4e26ee..599a7277695 100644 --- a/lang/fr/help/enrolperiod.html +++ b/lang/fr/help/enrolperiod.html @@ -1,11 +1,9 @@ -

              Durée d'inscription

              +

              Durée d'inscription

              -

              Ce réglage indique le nombre de jours durant lesquels un étudiant peut participer à ce cours, à compter de la date de son inscription au cours.

              +

              Ce réglage indique le nombre de jours durant lesquels un étudiant peut être inscrit dans ce cours, à partir du début des inscriptions.

              -

              Si un nombre est spécifié, les étudiants sont automatiquement désinscrits du cours après le nombre de jours indiqué. Ce réglage est le plus utile pour les cours sans date de début ni de fin.

              +

              Si un nombre est spécifié, les étudiants sont automatiquement désinscrits après la durée spécifiée. Ce réglage est le plus utile pour les cours sans date de début ni de fin.

              -

              Si vous ne spécifiez aucun nombre, les étudiants resteront inscrits à ce cours jusqu'à ce qu'ils en soient désinscrits manuellement ou que la fonction de nettoyage des étudiants non actifs prenne effet.

              - -

              Si vous avez choisi de gérer ce cours en tant que méta-cours, la durée d'inscription ne sera pas utilisée.

              \ No newline at end of file +

              Si vous ne spécifiez aucun nombre, les étudiants resteront inscrits dans ce cours jusqu'à ce qu'ils en soient désinscrits manuellement ou que la fonction de nettoyage des étudiants non actifs prenne effet.

              \ No newline at end of file diff --git a/lang/fr/help/forum/allowdiscussions.html b/lang/fr/help/forum/allowdiscussions.html index 8d33192db68..5cd396aaedb 100644 --- a/lang/fr/help/forum/allowdiscussions.html +++ b/lang/fr/help/forum/allowdiscussions.html @@ -1,11 +1,21 @@ - +

              Autoriser de nouveaux messages ?

              -

              Interventions autorisées

              +

              Cette option vous permet de décider des possibilités +d'intervention par les étudiants dans ce forum.

              -

              Cette option vous permet de décider des possibilités d'intervention des étudiants dans ce forum.

              +

              Pour la plupart des forums vous voudrez sans doute laisser les +étudiants complètement libres et choisirez la +première option qui leur permet de commencer de nouvelles discussions +et d'intervenir dans toutes les discussions.

              -

              Pour la plupart des forums, vous voudrez sans doute laisser les étudiants complètement libres et choisirez la première option, qui leur permet de commencer de nouvelles discussions et d'intervenir dans toutes les discussions.

              +

              Cependant, quelque fois, vous voudrez interdire cela. Par exemple, +cela peut s'avérer utile pour les forums annonçant des +nouvelles postées par les enseignants sur la page principale +des cours. Dans ce cas, vous choisirez la troisième option : +« Aucune discussion, aucune réponse ».

              -

              Par exemple, il peut s'avérer utile pour les forums annonçant des nouvelles postées par les enseignants sur la page principale des cours d'avoir un autre mode de fonctionnement. Dans un tel cas, vous choisirez la troisième option : « Aucune discussion, aucune réponse », et les étudiants ne pourront intervenir dans ce forum.

              - -

              En d'autres occasions, vous souhaiterez que seuls les enseignants puissent commencer les nouvelles discussions et que les étudiants ne puissent qu'y répondre. Dans ce cas vous choisirez la deuxième option : « Aucune discussion, mais les réponses sont autorisées ».

              \ No newline at end of file +

              En d'autres occasions, vous souhaiterez que seuls les enseignants +puissent commencer les nouvelles discussions et que les +étudiants puissent y répondre. Dans ce cas vous +choisirez la deuxième option : « Aucune discussion, mais +les réponses sont autorisées ».

              \ No newline at end of file diff --git a/lang/fr/help/forum/attachment.html b/lang/fr/help/forum/attachment.html index 6e08aabf9ed..9dfdaaf0ad6 100644 --- a/lang/fr/help/forum/attachment.html +++ b/lang/fr/help/forum/attachment.html @@ -1,12 +1,12 @@ -

              Annexes

              +

              Annexes

              -

              Il vous est possible de joindre un fichier présent sur votre ordinateur à chaque message que vous postez dans un forum. Ce fichier est déposé sur le serveur et stocké avec votre message.

              +

              Il vous est possible de joindre un fichier présent sur votre ordinateur à chaque message que vous postez dans un forum. Ce fichier est déposé sur le serveur et stocké avec votre message.

              Ceci s'avère particulièrement utile lorsque vous souhaitez partager une image ou un document avec les autres participants du cours.

              -

              Ce fichier peut être de n'importe quel type. Il est cependant fortement recommandé que son nom utilise la convention des 3 lettres d'extension utilisée sur Internet, par exemple « .doc » pour un document Word, « .jpg » ou « .png » pour une image, « .zip » pour un fichier compressé, etc. Cela facilitera le téléchargement et l'ouverture de ce document dans le navigateur des utilisateurs.

              +

              Ce fichier peut être de n'importe quel type. Il est cependant fortement recommandé que son nom utilise la convention des 3 lettres d'extension utilisée sur Internet, par exemple « .doc » pour un document Word, « .jpg » ou « .png » pour une image, « .zip » pour un fichier compressé, etc. Cela facilitera le téléchargement et l'ouverture de ce document dans le navigateur des utilisateurs.

              Si vous modifiez le message posté et y joignez un nouveau fichier, ce dernier remplacera tout autre fichier précédemment déposé.

              diff --git a/lang/fr/help/forum/forumtype.html b/lang/fr/help/forum/forumtype.html index eccff5be397..f1a59b1de19 100644 --- a/lang/fr/help/forum/forumtype.html +++ b/lang/fr/help/forum/forumtype.html @@ -1,15 +1,15 @@ -

              Types de forum

              +

              Types de forum

              Plusieurs types de forum sont offerts :

              -

              Une seule discussion simple : une discussion organisée en un +

              Une seule discussion simple : une discussion organisée en un seul fil, sur une page unique. Utile pour les discussions courtes et ciblées.

              -

              Forum standard : un forum ouvert, où chacun peut entamer une +

              Forum standard : un forum ouvert, où chacun peut entamer une nouvelle discussion à tout instant. Il s'agit du type de forum le plus adéquat pour les discussions d'ordre général.

              -

              Chaque personne commence une seule discussion : bien que +

              Chaque personne commence une seule discussion : bien que tous peuvent répondre dans toutes les discussions, chacun ne peut en entamer qu'une seule. C'est utile lorsque vous souhaitez que chaque étudiant exprime ses réflexions sur le sujet de diff --git a/lang/fr/help/forum/index.html b/lang/fr/help/forum/index.html index 029065c8b4e..c8cae9a93a9 100755 --- a/lang/fr/help/forum/index.html +++ b/lang/fr/help/forum/index.html @@ -1,25 +1,13 @@ - -

              Forums

              - \ No newline at end of file diff --git a/lang/fr/help/forum/maxattachmentsize.html b/lang/fr/help/forum/maxattachmentsize.html index 6459cdde43e..115d4c1f506 100644 --- a/lang/fr/help/forum/maxattachmentsize.html +++ b/lang/fr/help/forum/maxattachmentsize.html @@ -1,6 +1,6 @@ -

              Taille maximale des annexes

              +

              Taille maximale des annexes

              Il est possible de limiter la taille des annexes. Cette limite est fixée par la personne qui met en place le forum.

              diff --git a/lang/fr/help/forum/mods.html b/lang/fr/help/forum/mods.html index f9f8347e873..e54ab244fb5 100755 --- a/lang/fr/help/forum/mods.html +++ b/lang/fr/help/forum/mods.html @@ -1,6 +1,6 @@ -

               Forums

              +

               Forums

                Le forum est un des modules les plus importants de Moodle ! Les forums sont un lieu où présenter des idées et en discuter avec tous les participants au cours. En interagissant, les étudiants construisent ensemble leurs savoirs.

                diff --git a/lang/fr/help/forum/ratings.html b/lang/fr/help/forum/ratings.html index bf7036a1aa8..e544b13fd74 100644 --- a/lang/fr/help/forum/ratings.html +++ b/lang/fr/help/forum/ratings.html @@ -1,5 +1,5 @@ -

                Évaluation des attitudes objectives et -empathiques dans les messages des forums

                +

                Évaluation des attitudes objectives et +empathiques dans les messages des forums

                Tout message peut être évalué à l'aide d'un barème basé sur une théorie qui traite de la relation @@ -21,7 +21,7 @@ d'aborder les interactions humaines. Chacun adopte la plupart du temps l'attitude qui les caractérise : Pierre a un esprit plutôt « détaché », alors que Jeanne a un esprit plutôt « lié ».

                  -
                • Pierre aime rester aussi « objectif » que possible, +
                • Pierre aime rester aussi « objectif » que possible, ne faisant pas intervenir ses émotions et ses sensations. Dans une discussion avec des interlocuteurs d'avis différents, il préfère @@ -32,7 +32,7 @@ des sources dignes de foi, telles que des livres, des enseignants respectés ou sa propre expérience. Pierre ne s'investit pas émotionnellement dans ce qu'il apprend des autres ; il est très détaché..
                • -
                • Jeanne est plus empathique. Elle est sensible et tend à +
                • Jeanne est plus empathique. Elle est sensible et tend à écouter et poser des questions aux gens jusqu'à ce qu'elle sente qu'elle peut être en connexion avec eux et « comprendre les choses de leur point de vue ». Elle apprend en essayant de partager @@ -48,7 +48,7 @@ femme. Des études montrent que statistiquement, cela tend à situer n'importe où entre ces deux extrêmes, en fonction des situations et de leur cheminement personnel.

                  Un groupe sera efficace et collaboratif si ses membres sont capables -d'utiliser ces deux façons de voir.

                  +d'utiliser ces deux façons de voir.

                  Dans des situations particulières, par exemple sur un forum, un message peut avoir l'une de ces caractéristiques, ou même les deux. Quelqu'un de très lié pourra par exemple poster un message diff --git a/lang/fr/help/forum/rssarticles.html b/lang/fr/help/forum/rssarticles.html index 6d818151713..88bb21949ec 100644 --- a/lang/fr/help/forum/rssarticles.html +++ b/lang/fr/help/forum/rssarticles.html @@ -1,7 +1,9 @@ - +

                  Nombre d'articles récents dans le canal RSS

                  -

                  Nombre d'articles RSS récents

                  +

                  Cette option vous permet de fixer le nombre d'articles récents +à inclure dans le canal RSS.

                  -

                  Cette option vous permet de fixer le nombre d'articles récents à inclure dans le canal RSS.

                  +

                  Un nombre entre 5 et 20 est adéquat pour la plupart +des forums. Si le forum est très actif, il est souhaitable d'augmenter +ce nombre.

                  -

                  Un nombre entre 5 et 20 est adéquat pour la plupart des forums. Si le forum est très actif, il est souhaitable d'augmenter ce nombre.

                  \ No newline at end of file diff --git a/lang/fr/help/forum/rsstype.html b/lang/fr/help/forum/rsstype.html index d82405ffe46..60e64152e24 100644 --- a/lang/fr/help/forum/rsstype.html +++ b/lang/fr/help/forum/rsstype.html @@ -1,14 +1,14 @@ -

                  Canal RSS de ce forum

                  +

                  Canal RSS de ce forum

                  Cette option vous permet d'activer le canal RSS de ce forum.

                  Vous pouvez choisir entre deux types de canaux RSS :

                    -
                  • Discussions : le canal généré comprendra les nouvelles +
                  • Discussions : le canal généré comprendra les nouvelles discussions du forum avec leur message initial.
                  • -
                  • Messages : le canal généré comprendra tous les nouveaux +
                  • Messages : le canal généré comprendra tous les nouveaux messages postés dans le forum.
                  diff --git a/lang/fr/help/forum/subscription.html b/lang/fr/help/forum/subscription.html index e7a9e58d4b0..558f0fd3f26 100644 --- a/lang/fr/help/forum/subscription.html +++ b/lang/fr/help/forum/subscription.html @@ -1,12 +1,21 @@ - +

                  Abonnement au forum

                  -

                  Abonnement au forum

                  +

                  Lorsqu'une personne est abonnée à un forum, cela +signifie qu'elle recevra par courriel une copie de tous +les messages postés sur ce forum (les messages sont +envoyés environ maxeditingtime/60 ?> minutes +après qu'ils ont été postés pour la +première fois. Ce délai +est fixé par l'administrateur du site Moodle).

                  -

                  Lorsqu'une personne est abonnée à un forum, elle reçoit par courriel une copie de tous les messages postés sur ce forum (les messages sont envoyés environ maxeditingtime/60 ?> minutes après qu'ils ont été écrits. Ce délai est fixé par l'administrateur du site Moodle).

                  +

                  En général, les utilisateurs peuvent décider de +s'abonner ou non à chaque forum.

                  -

                  En général, les utilisateurs peuvent décider de s'abonner ou non à chaque forum.

                  +

                  Cependant, si un enseignant force l'abonnement à un +forum particulier, ce choix l'emporte et tous les étudiants +inscrits au cours recevront par courriel une copie de tous les messages.

                  -

                  Cependant, si un enseignant impose l'abonnement à un forum particulier, ce choix l'emporte et tous les étudiants inscrits au cours recevront par courriel une copie de tous les messages.

                  - -

                  Ceci est particulièrement utile dans le forum des nouvelles et dans les forums utilisés au début des cours (avant que les étudiants ne découvrent qu'ils peuvent s'inscrire par eux-mêmes).

                  +

                  Ceci est particulièrement utile dans le forum des +nouvelles et au début des cours (avant que +tous ne découvrent qu'ils peuvent s'inscrire par eux-mêmes).

                  diff --git a/lang/fr/help/forum/subscription2.html b/lang/fr/help/forum/subscription2.html deleted file mode 100644 index 1bd081cae9e..00000000000 --- a/lang/fr/help/forum/subscription2.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

                  Abonnement au forum

                  - -

                  Lorsqu'une personne est abonnée à un forum, elle reçoit par courriel une copie de tous les messages postés sur ce forum (les messages sont envoyés environ maxeditingtime/60 ?> minutes après qu'ils ont été écrits. Ce délai est fixé par l'administrateur du site Moodle).

                  - -

                  En général, les utilisateurs peuvent décider de s'abonner ou non à chaque forum.

                  - -

                  Cependant, si vous imposez l'abonnement à un forum particulier, ce choix l'emporte et tous les participants au cours y seront automatiquement abonnés, y compris ceux qui s'y inscrivent ultérieurement.

                  - -

                  Ceci est particulièrement utile dans le forum des nouvelles et dans les forums utilisés au début des cours (avant que les étudiants ne découvrent qu'ils peuvent s'abonner par eux-mêmes).

                  - -

                  Si vous choisissez l'option « Oui, initialement », tous les utilisateurs actuels et futurs du cours seront automatiquement abonnés au forum, mais pourront s'en désabonner quand ils le voudront. Si vous choisissez l'option « Oui, indéfiniment », ils ne pourront pas se désabonner.

                  - -

                  Lorsque vous modifiez un forum existant, l'option « Oui, initialement » fonctionne de la manière suivante : si vous passez de l'option « Oui, initialement » à l'option « Non » aucun participant ne sera désabonné  le réglage n'affectera que les futurs participants. De façon analogue, si vous passez à l'option « Oui, initialement », l'abonnement des utilisateurs actuels ne sera pas modifié, mais seulement celui des participants qui seront inscrits au cours ultérieurement.

                  \ No newline at end of file diff --git a/lang/fr/help/glossary/aliases.html b/lang/fr/help/glossary/aliases.html index 59523623d2f..7a4b0fef63e 100644 --- a/lang/fr/help/glossary/aliases.html +++ b/lang/fr/help/glossary/aliases.html @@ -1,7 +1,9 @@ - +

                  Mots clefs

                  -

                  Mots clefs

                  +

                  Chaque entrée du glossaire peut être associée +à une liste de mots clefs ou alias.

                  -

                  Chaque article du glossaire peut être associée à une liste de mots clefs ou alias.

                  - -

                  Ces mots clefs peuvent être utilisés comme autant de façons de retrouver l'article. Ils seront notamment utilisés lors de la création de liens automatiques.

                  +

                  Ces mots clefs peuvent être utilisés comme autant de +façons de retrouver l'entrée. Ils vont être par +exemple utilisé lors de la création de liens +automatiques.

                  diff --git a/lang/fr/help/glossary/allowcomments.html b/lang/fr/help/glossary/allowcomments.html index d8857ed641b..ff70e1b8236 100644 --- a/lang/fr/help/glossary/allowcomments.html +++ b/lang/fr/help/glossary/allowcomments.html @@ -1,9 +1,7 @@ - +

                  Permettre les commentaires

                  -

                  Permettre les commentaires

                  +

                  Il est possible d'autoriser d'autres personnes à commenter +les entrées des glossaires.

                  -

                  Il est possible d'autoriser les étudiants à commenter les articles des glossaires.

                  +

                  Vous pouvez choisir d'activer ou non cette possibilité.

                  -

                  Vous pouvez choisir d'activer ou non cette possibilité.

                  - -

                  Les enseignants peuvent toujours commenter les articles des glossaires.

                  \ No newline at end of file diff --git a/lang/fr/help/glossary/allowduplicatedentries.html b/lang/fr/help/glossary/allowduplicatedentries.html index d21f7cbc18d..9d49cc77299 100644 --- a/lang/fr/help/glossary/allowduplicatedentries.html +++ b/lang/fr/help/glossary/allowduplicatedentries.html @@ -1,6 +1,5 @@ - +

                  Permettre les doublons

                  -

                  Permettre les doublons

                  - -

                  Si vous activez cette option, il sera possible d'avoir plusieurs articles pour le même concept.

                  +

                  Si vous activez cette option, il sera possible d'avoir plusieurs +entrées pour le même concept.

                  diff --git a/lang/fr/help/glossary/allowprintview.html b/lang/fr/help/glossary/allowprintview.html deleted file mode 100644 index b09f68a717e..00000000000 --- a/lang/fr/help/glossary/allowprintview.html +++ /dev/null @@ -1,9 +0,0 @@ - - -

                  Autoriser l'affichage pour impression

                  - -

                  Cette option permet d'autoriser pour les étudiants l'affichage pour impression.

                  - -

                  Vous pouvez choisir d'activer ou non cette possibilité.

                  - -

                  Les enseignants peuvent toujours utiliser l'affichage pour impression.

                  \ No newline at end of file diff --git a/lang/fr/help/glossary/attachment.html b/lang/fr/help/glossary/attachment.html deleted file mode 100644 index 19375baf4e9..00000000000 --- a/lang/fr/help/glossary/attachment.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

                  Annexes de l'article

                  - -

                  Il vous est possible de joindre un fichier prŽsent sur votre ordinateur ˆ n'importe quel article d'un glossaire. Ce fichier est dŽposŽ sur le serveur et stockŽ avec votre article.

                  - -

                  Ceci s'avre particulirement utile lorsque vous souhaitez partager une image ou un document avec les autres participants du cours.

                  - -

                  Ce fichier peut tre de n'importe quel type. Il est cependant fortement recommandŽ que son nom utilise la convention des 3 lettres d'extension utilisŽe sur Internet, par exemple Ç .doc È pour un document Word, Ç .jpg È ou Ç .png È pour une image, Ç .zip È pour un fichier compressŽ, etc. Cela facilitera le tŽlŽchargement et l'ouverture de ce document dans le navigateur des utilisateurs.

                  - -

                  Si vous modifiez une entrée et y joignez un nouveau fichier, ce dernier remplacera tout autre fichier prŽcŽdemment dŽposŽ.

                  - -

                  Si vous modifiez un message postŽ avec un fichier joint et laissez cette zone vide, le fichier joint prŽcŽdemment dŽposŽ sera conservŽ.

                  \ No newline at end of file diff --git a/lang/fr/help/glossary/casesensitive.html b/lang/fr/help/glossary/casesensitive.html index 5753bbc53c4..5f775cf114a 100644 --- a/lang/fr/help/glossary/casesensitive.html +++ b/lang/fr/help/glossary/casesensitive.html @@ -1,8 +1,12 @@ - +

                  Correspondance exacte (casse des +caractères)

                  -

                  Cet article est sensible à la casse

                  +

                  Ce réglage détermine si une correspondance exacte de +la casse (lettres capitales et minuscules) est nécessaire lors +de la liaison automatique de ces entrées.

                  -

                  Ce réglage détermine si une correspondance exacte de la casse (lettres capitales et minuscules) est nécessaire lors de la liaison automatique de ces entrées.

                  - -

                  Si par exemple ce réglage est désactivé, le mot « html » dans un forum ne sera pas automatiquement lié à une entrée de glossaire nommée « HTML ».

                  +

                  Si par exemple ce réglage est désactivé, le +mot « html » dans un forum ne sera pas +automatiquement lié à une entrée de glossaire +nommée « HTML ».

                  diff --git a/lang/fr/help/glossary/defaultapproval.html b/lang/fr/help/glossary/defaultapproval.html index 62009e5fd77..ab16519a95e 100644 --- a/lang/fr/help/glossary/defaultapproval.html +++ b/lang/fr/help/glossary/defaultapproval.html @@ -1,5 +1,8 @@ - +

                  Approbation par défaut des +entrées

                  -

                  Approbation par défaut

                  - -

                  Ce réglage permet à l'enseignant de définir ce qui se passe lorsque de nouveaux articles sont proposés par les étudiants. Les nouveaux articles peuvent être automatiquement ajoutées au glossaire, ou alors seulement après approbation par l'enseignant.

                  +

                  Ce réglage permet à l'enseignant de définir ce +qui se passe lorsque de nouvelles entrées sont proposées +par les étudiants. Les nouvelles entrées peuvent +être automatiquement ajoutées au glossaire, ou alors +seulement après approbation par l'enseignant.

                  diff --git a/lang/fr/help/glossary/description.html b/lang/fr/help/glossary/description.html index c092bacebf1..502ad8438ad 100644 --- a/lang/fr/help/glossary/description.html +++ b/lang/fr/help/glossary/description.html @@ -1,5 +1,5 @@ - +

                  Description d'un glossaire

                  -

                  Description

                  - -

                  Ce champ vous permet de décrire le but de ce glossaire et de mettre à disposition d'autres informations, telles que des instructions, des références, etc.

                  +

                  Ce champ vous permet de décrire le but de ce glossaire et de +mettre à disposition d'autres informations, telles que des +instructions, des références, etc.

                  diff --git a/lang/fr/help/glossary/destination.html b/lang/fr/help/glossary/destination.html index 6b9fa08cf36..b5666db72a7 100644 --- a/lang/fr/help/glossary/destination.html +++ b/lang/fr/help/glossary/destination.html @@ -1,13 +1,11 @@ - +

                  Définir la destination des entrées +importées

                  -

                  Définir la destination des articles importés

                  - -

                  Vous pouvez indiquez à quel endroit doivent être placés les articles importés :

                  - -
                    - -
                  • Glossaire actuel : ajoutera les articles importés au glossaire ouvert actuellement ;
                  • - -
                  • Nouveau glossaire : créera un nouveau glossaire à partir des informations trouvées dans le fichier sélectionné et y insérera les nouveaux articles.
                  • - -
                  +

                  Vous pouvez indiquez où doivent être importées +les entrées :

                  • Glossaire +actuel : ajoutera les entrées importées au +glossaire actuellement ouvert ;
                  • Nouveau +glossaire : créera un nouveau glossaire à +partir des informations trouvées dans le fichier +sélectionné et y insérera les nouvelles +entrées.
                  diff --git a/lang/fr/help/glossary/displayformat.html b/lang/fr/help/glossary/displayformat.html index 3deda01d7a4..566c1d2551f 100644 --- a/lang/fr/help/glossary/displayformat.html +++ b/lang/fr/help/glossary/displayformat.html @@ -1,41 +1,39 @@ - +

                  Format d'affichage

                  -

                  Format d'affichage

                  +

                  Ce réglage détermine la façon dont chaque +entrée est affichée dans le glossaire. Les formats +proposés par défaut sont :

                  +
                  Simple, style dictionnaire :
                  Ressemble +à un dictionnaire avec des entrées +séparées. Les auteurs ne sont pas affichés. Les +annexes sont porposées comme liens.
                  Continu sans +auteur :
                  Les entrées sont affichées +les unes après les autres, sans autre séparateur que +l'icône d'édidion.
                  Complet avec +auteur :
                  Un affichage ressemblant à celui des +forums, avec les information sur l'auteur. Les annexes sont +porposées comme liens.
                  Complet avec +auteur :
                  Un affichage ressemblant à celui des +forums, sans les information sur l'auteur. Les annexes sont +porposées comme liens.
                  +
                  Encyclopédie :
                  Identique au format +« Complet avec auteur », mais les images en +annexe sont affichées en ligne.
                  FAQ :
                  +
                  Utile pour l'affichage des Foires Aux Questions. Les mots +« Question » et +« Réponse » sont affichés +automatiquement au concept, respectivement à la +définition.
                  -

                  Ce réglage détermine la façon dont chaque article est affiché dans le glossaire. Les formats proposés par défaut sont :

                  - -
                  - -
                  - -
                  Simple, style dictionnaire :
                  - -
                  Ressemble à un dictionnaire avec des articles séparés. Les auteurs ne sont pas affichés. Les annexes sont proposées sous forme de liens.
                  - -
                  Continu sans auteur :
                  - -
                  Les articles sont affichés les unes après les autres, sans autre séparateur que l'icône d'édidion.
                  - -
                  Complet avec auteur :
                  - -
                  Un affichage ressemblant à celui des forums, avec les informations sur l'auteur. Les annexes sont proposées sous forme de liens.
                  - -
                  Complet avec auteur :
                  - -
                  Un affichage ressemblant à celui des forums, sans les informations sur l'auteur. Les annexes sont proposées sous forme de liens.
                  - -
                  Encyclopédie :
                  - -
                  Identique au format « Complet avec auteur », mais les images en annexe sont affichées en ligne.
                  - -
                  FAQ :
                  - -
                  Utile pour l'affichage de Foires Aux Questions. Les mots « Question » et « Réponse » sont affichés automatiquement en regard du concept, respectivement de la définition.
                  - -
                  - -
                  - -
                  - -

                  Les administrateurs d'un Moodle peuvent créer de nouveaux formats d'affichage des glossaires en suivant les instructions données dans le fichier mod/glossary/formats/README.txt.

                  \ No newline at end of file +

                  Lea administrateurs du Moodle peuvent créer de nouveaux +formats d'affichage de la façon suivante :

                    +
                  1. Regarder dans le dossier mod/glossary/formats. Un fichier +numéroté y existe pour chaque format existant.
                  2. +
                  3. Copier un de ces fichiers et lui donner un autre nombre N (les +nombres 0 et 1 sont réservés).
                  4. Modifier ce +fichier de façon à créer un nouveau format (une +connaissance minimale du langage PHP est requise).
                  5. +
                  6. Insérer pour terminer une nouvelle variable +displayformatN dans chaque fichier de langue utilisé. +Cette variable contiendra le nom de votre nouveau format, court mais +significatif.
                  diff --git a/lang/fr/help/glossary/editalways.html b/lang/fr/help/glossary/editalways.html deleted file mode 100644 index d8587c5ef80..00000000000 --- a/lang/fr/help/glossary/editalways.html +++ /dev/null @@ -1,16 +0,0 @@ - - -

                  Toujours modifiable

                  - -

                  Cette option vous permet de décider si les étudiants peuvent modifier leurs articles n'importe quand.

                  - -

                  Vous pouvez choisir :

                  - -
                    - -
                  • Oui : les articles sont toujours modifiables ;
                  • - -
                  • Non : les articles sont modifiables lors de périodes définies.
                  • - -
                  - diff --git a/lang/fr/help/glossary/entbypage.html b/lang/fr/help/glossary/entbypage.html index d25fbc56555..897b7eb18bd 100644 --- a/lang/fr/help/glossary/entbypage.html +++ b/lang/fr/help/glossary/entbypage.html @@ -1,7 +1,9 @@ - +

                  Définir le nombre d'entrées par +page

                  -

                  Articles affichés sur une page

                  +

                  Il est possible de définir le nombre d'entrées +à afficher sur une page dans ce glossaire.

                  -

                  Il est possible de définir le nombre d'articles à afficher sur une page dans ce glossaire.

                  - -

                  Si votre glossaire comporte un grand nombre d'articles liés automatiquement, il sera judicieux de diminuer ce nombre pour éviter des temps de chargement de page trop longs.

                  +

                  Si votre glossaire comporte un grand nombre d'entrées +liées automatiquement, il sera judicieux de diminuer ce nombre +pour éviter des temps de chargement de page trop longs.

                  diff --git a/lang/fr/help/glossary/filetoimport.html b/lang/fr/help/glossary/filetoimport.html index 5791b2b7e6d..504182a4698 100644 --- a/lang/fr/help/glossary/filetoimport.html +++ b/lang/fr/help/glossary/filetoimport.html @@ -1,5 +1,4 @@ - +

                  Fichier à importer

                  -

                  Fichier à importer

                  - -

                  Choisissez sur votre ordinateur le fichier XML contenant les articles de glossaire à importer.

                  +

                  Choisissez sur votre ordinateur le fichier XML contenant les +entrées de glossaire à importer.

                  diff --git a/lang/fr/help/glossary/fullmatch.html b/lang/fr/help/glossary/fullmatch.html index fac906e8058..d484cf923df 100644 --- a/lang/fr/help/glossary/fullmatch.html +++ b/lang/fr/help/glossary/fullmatch.html @@ -1,7 +1,10 @@ - +

                  Correspondance mot pour mot

                  -

                  Correspondance mot pour mot

                  +

                  Si la liaison automatique des entrées est activée, +l'activation de cette option aura pour résultat que seules +seront liées les entrées correspondant mot pour mot au +texte de la page.

                  -

                  Si la liaison automatique des articles est activée, l'activation de cette option aura pour résultat que seuls seront liés les articles correspondant mot pour mot au texte de la page.

                  - -

                  Par exemple, un article dénommé « terre » ne créera pas de lien dans le mot « terrestre ».

                  +

                  Par exemple, une entrée dénommée +« terre » ne créera pas de lien dans le +mot « terrestre ».

                  diff --git a/lang/fr/help/glossary/globalglossary.html b/lang/fr/help/glossary/globalglossary.html index eb89ffbbe80..83183ef5a6e 100644 --- a/lang/fr/help/glossary/globalglossary.html +++ b/lang/fr/help/glossary/globalglossary.html @@ -1,9 +1,13 @@ - +

                  Définir un glossaire global

                  -

                  Glossaire global

                  +

                  Les administrateurs peuvent définir un glossaire comme +étant global.

                  -

                  Les administrateurs peuvent définir un glossaire comme étant global.

                  +

                  Les glossaires globaux peuvent faire partie de n'importe quel +cours, mais aussi être affichés sur la page +d'accueil.

                  -

                  Les glossaires globaux peuvent faire partie de n'importe quel cours, mais aussi être affichés sur la page d'accueil.

                  - -

                  La différence principale avec un glossaire normal (local) est que les entrées d'un tel glossaire sont utilisées dans tout le site Moodle pour la création automatique des liens (et pas seulement dans le cours auquel il appartient).

                  +

                  La différence principale avec un glossaire normal (local) +est que les entrées d'un tel glossaire sont utilisées +dans tout le site Moodle pour la création automatique des liens +(et pas seulement dans le cours auquel il appartient).

                  diff --git a/lang/fr/help/glossary/importcategories.html b/lang/fr/help/glossary/importcategories.html index f047b2066c7..dd645c71e22 100644 --- a/lang/fr/help/glossary/importcategories.html +++ b/lang/fr/help/glossary/importcategories.html @@ -1,5 +1,6 @@ - +

                  Importer des catégories

                  -

                  Importer des catégories

                  - -

                  Les articles sont par défaut tous importés. Si vous le désirez, vous pouvez indiquer les catégories que vous voulez importer (avec les articles qui y sont classés).

                  \ No newline at end of file +

                  Les entrées sont par défaut toutes importées. +Si vous le désirez, vous pouvez indiquer les catégories +que vous voulez importer (avec les entrées qui y sont +classées).

                  diff --git a/lang/fr/help/glossary/index.html b/lang/fr/help/glossary/index.html index 940a776d2b6..12575aa885c 100644 --- a/lang/fr/help/glossary/index.html +++ b/lang/fr/help/glossary/index.html @@ -1,63 +1,31 @@ - -

                  Glossaire

                  - -

                  Fichiers d'aide sur les glossaires :

                  - +Fichiers d'aide au sujet des glossaires : -
                  - -

                  Fichiers d'aide sur les articles :

                  - +Fichiers d'aide au sujet des entrées : -
                  \ No newline at end of file diff --git a/lang/fr/help/glossary/linkcategory.html b/lang/fr/help/glossary/linkcategory.html index a6a65fd2e80..71fc4f28176 100644 --- a/lang/fr/help/glossary/linkcategory.html +++ b/lang/fr/help/glossary/linkcategory.html @@ -1,7 +1,8 @@ - +

                  Liaison automatique des catégories

                  -

                  Liaison automatique des catégories

                  +

                  Vous pouvez indiquer si vous voulez lier automatiquement ou non les +catégories.

                  -

                  Vous pouvez indiquer si vous voulez lier automatiquement ou non les catégories.

                  - -

                  Attention ! Les catégories ne sont liées que lorsque le texte correspond exactement (casse des caractères et mot pour mot).

                  \ No newline at end of file +

                  Attention ! Les catégories ne sont liées que +lorsque le texte correspond totalement (casse des caractères et +mot pour mot).

                  \ No newline at end of file diff --git a/lang/fr/help/glossary/mainglossary.html b/lang/fr/help/glossary/mainglossary.html index 3c46301326a..cd5ee80b3fc 100644 --- a/lang/fr/help/glossary/mainglossary.html +++ b/lang/fr/help/glossary/mainglossary.html @@ -1,9 +1,12 @@ - +

                  Définir le glossaire principal d'un +cours

                  -

                  Définir le glossaire principal d'un cours

                  +

                  Le module Glossaire permet d'exporter des entrées de +n'importe quel glossaire secondaire vers le glossaire principal d'un +cours.

                  -

                  Le module Glossaire permet d'exporter des articles de n'importe quel glossaire secondaire vers le glossaire principal d'un cours.

                  +

                  Si vous désirez profiter de cette fonctionnalité, +vous devez indiquer quel est le glossaire principal.

                  -

                  Si vous désirez profiter de cette fonctionnalité, vous devez indiquer quel est le glossaire principal.

                  - -

                  Attention ! Il ne peut y avoir qu'un seul glossaire principal par cours et seuls les enseignants peuvent le modifier.

                  \ No newline at end of file +

                  Attention ! Il ne peut y avoir qu'un seul glossaire principal +par cours et seuls les enseignants peuvent le modifier.

                  \ No newline at end of file diff --git a/lang/fr/help/glossary/mods.html b/lang/fr/help/glossary/mods.html index a70be7578aa..2c968c4a303 100644 --- a/lang/fr/help/glossary/mods.html +++ b/lang/fr/help/glossary/mods.html @@ -1,15 +1,20 @@ - - -

                  Glossaire Glossaire

                  +

                   Glossaire

                    -

                    Cette activité permet aux participants de créer et entretenir une liste de définitions, une sorte de dictionnaire.

                    +

                    Cette activité permet aux participants de créer et +entretenir une liste de définitions, une sorte de +dictionnaire.

                    -

                    Il est possible de rechercher les entrées et les consulter dans différents formats.

                    +

                    Il est possible de rechercher les entrées et les consulter +dans différents formats.

                    -

                    Le glossaire permet également aux enseignants d'exporter les entrées d'un glossaire à un autre (le glossaire principal) à l'intérieur d'un cours.

                    +

                    Le glossaire permet également aux enseignants d'exporter les +entrées d'un glossaire à un autre (le glossaire +principal) à l'intérieur d'un cours.

                    -

                    En outre, il est possible de créer automatiquement dans tout le cours des liens vers les articles des glossaires.

                    +

                    En outre, le glossaire peut également créer +automatiquement dans tout le cours des liens vers les entrées des +glossaires.

                  \ No newline at end of file diff --git a/lang/fr/help/glossary/rssarticles.html b/lang/fr/help/glossary/rssarticles.html index 8a4fcbb2698..34e997a05d3 100644 --- a/lang/fr/help/glossary/rssarticles.html +++ b/lang/fr/help/glossary/rssarticles.html @@ -1,7 +1,8 @@ - +

                  Nombre de concepts récents dans le canal RSS

                  -

                  Nombre d'articles récents dans le canal RSS

                  +

                  Cette option vous permet de fixer le nombre de concepts récents +à inclure dans le canal RSS.

                  -

                  Cette option vous permet de fixer le nombre d'articles récents à inclure dans le canal RSS.

                  - -

                  Un nombre entre 5 et 20 est adéquat pour la plupart des glossaires. Si le glossaire est très actif, il est souhaitable d'augmenter ce nombre.

                  \ No newline at end of file +

                  Un nombre entre 5 et 20 est adéquat pour la plupart +des glossaires. Si le glossaire est très actif, il est souhaitable d'augmenter +ce nombre.

                  \ No newline at end of file diff --git a/lang/fr/help/glossary/rsstype.html b/lang/fr/help/glossary/rsstype.html index 02687a0f3fa..4049b18bcc6 100644 --- a/lang/fr/help/glossary/rsstype.html +++ b/lang/fr/help/glossary/rsstype.html @@ -1,15 +1,13 @@ - - -

                  Canal RSS de ce glossaire

                  +

                  Canal RSS de ce glossaire

                  Cette option vous permet d'activer le canal RSS de ce glossaire.

                  Vous pouvez choisir entre deux types de canaux RSS :

                    +
                  • Avec auteur : le canal généré comprendra le nom +de l'auteur de chaque concept du glossaire.
                  • -
                  • Avec auteur : le canal généré comprendra le nom de l'auteur de chaque article du glossaire.
                  • - -
                  • Sans auteur : le canal généré ne comprendra pas le nom de l'auteur des articles.
                  • - +
                  • Sans auteur : le canal généré ne comprendra pas le nom +de l'auteur des concepts.
                  diff --git a/lang/fr/help/glossary/shows.html b/lang/fr/help/glossary/shows.html index dbfb5c9db46..4108b54b20a 100644 --- a/lang/fr/help/glossary/shows.html +++ b/lang/fr/help/glossary/shows.html @@ -1,11 +1,11 @@ -

                  Options d'affichage de l'alphabet

                  +

                  Options d'affichage dans l'alphabet

                  -

                  Vous pouvez personnaliser la façon de consulter un glossaire. La consultation et la recherche sont toujours disponibles, mais vous pouvez définir trois options supplémentaires :

                  +

                  Vous pouvez personnaliser la façon de consulter un glossaire. La consultation et la recherche sont toujours disponibles, mais vous pouvez définir trois options supplémentaires :

                  -

                  Afficher le lien « Spécial » permet ou non la consultation directe des articles commençant par un caractère spécial comme @, #, etc.

                  +

                  Afficher le lien « Spécial » permet ou non la consultation directe des entrées commençant par un caractère spécial comme @, #, etc.

                  -

                  Afficher l'alphabet permet ou non la consultation directe des articles par ordre alphabétique.

                  +

                  Afficher l'alphabet permet ou non la consultation directe des entrées par ordre alphabétique.

                  -

                  Afficher le lien « Tout » permet ou non la consultation des tous les articles.

                  +

                  Afficher le lien « Tout » permet ou non la consultation des toutes les entrées.

                  diff --git a/lang/fr/help/glossary/studentcanpost.html b/lang/fr/help/glossary/studentcanpost.html index 3bacdee11e9..05a15e1a690 100644 --- a/lang/fr/help/glossary/studentcanpost.html +++ b/lang/fr/help/glossary/studentcanpost.html @@ -1,7 +1,12 @@ - +

                  Permettre aux étudiants d'ajouter des +entrées

                  -

                  Permettre aux étudiants d'ajouter des articles

                  +

                  Vous pouvez choisir de permettre ou non aux étudiants +d'ajouter, de modifier et de supprimer ses propres entrées. Les +entrées exportées dans le glossaire principal ne peuvent +être modifiées ou supprimées que par les +enseignants. Ce réglage ne s'applique donc qu'aux glossaires +secondaires.

                  -

                  Vous pouvez choisir de permettre ou non aux étudiants d'ajouter, de modifier et de supprimer ses propres articles. Les articles exportés dans le glossaire principal ne peuvent être modifiées ou supprimées que par les enseignants. Ce réglage ne s'applique donc qu'aux glossaires secondaires.

                  - -

                  Remarque : les enseignants peuvent modifier ou effacer des articles en tout temps.

                  \ No newline at end of file +

                  Remarque : les enseignants peuvent modifier ou effacer +des entrées en tout temps.

                  \ No newline at end of file diff --git a/lang/fr/help/glossary/usedynalink.html b/lang/fr/help/glossary/usedynalink.html index e63dfbc1615..a2ca085f608 100644 --- a/lang/fr/help/glossary/usedynalink.html +++ b/lang/fr/help/glossary/usedynalink.html @@ -1,11 +1,17 @@ - +

                  Liaison automatique des entrées

                  -

                  Activer les liens automatiques

                  +

                  Une fois cette fonctionnalité activée, les concepts ou +expressions définis dans ce glossaire seront liés +automatiquement chaque fois qu'ils apparaîtront dans les textes +du même cours, y compris dans les messages des forums, les +ressources internes, les résumés hebdomadaires ou +thématiques, les journaux, etc.

                  -

                  Quand cette option est activée, les concepts ou expressions définis dans ce glossaire sont liés automatiquement quand ils apparaissent dans les textes du même cours, y compris dans les messages des forums, les ressources internes, les résumés hebdomadaires ou thématiques, les journaux, etc.

                  +

                  Si lors de l'écriture d'un texte (par exemple dans un forum) +vous ne voulez pas qu'un terme défini dans le glossaire soit +lié, vous devrez entourer le texte en question des codes +<nolink> et </nolink>.

                  -

                  L'activation de cette option ne suffit pas. Il faut encore explicitement activer la liaison pour chacun des articles du glossaire pour lesquels cela est désiré.

                  +

                  Il est à remarquer que les noms des catégories sont +aussi liés.

                  -

                  Si lors de l'écriture d'un texte (par exemple dans un forum) vous ne voulez pas qu'un terme défini dans le glossaire soit lié, vous devrez entourer le texte en question des codes <nolink> et </nolink>.

                  - -

                  Il est à remarquer que les noms des catégories sont aussi liés.

                  \ No newline at end of file diff --git a/lang/fr/help/glossary/usedynalinkentry.html b/lang/fr/help/glossary/usedynalinkentry.html deleted file mode 100644 index 692f56b9aec..00000000000 --- a/lang/fr/help/glossary/usedynalinkentry.html +++ /dev/null @@ -1,9 +0,0 @@ - - -

                  Article lié automatiquement

                  - -

                  Lorsque cette case est cochée, l'expression définie dans cet article est liée automatiquement lorsque le terme apparaît dans les textes du même cours, y compris dans les messages des forums, les ressources internes, les résumés hebdomadaires ou thématiques, les journaux, etc.

                  - -

                  Si lors de l'écriture d'un texte (par exemple dans un forum) vous ne voulez pas qu'un terme défini dans le glossaire soit lié, vous devrez entourer le texte en question des codes <nolink> et </nolink>.

                  - -

                  Pour que cette fonction soit opérationnelle il est nécessaire de l'activer également au niveau du glossaire.

                  \ No newline at end of file diff --git a/lang/fr/help/groupmode.html b/lang/fr/help/groupmode.html index 64a4f5d7882..4c7e9c7987a 100755 --- a/lang/fr/help/groupmode.html +++ b/lang/fr/help/groupmode.html @@ -1,29 +1,36 @@ - - -

                  Type des groupes

                  - -

                  Il y a trois façons d'utiliser les groupes :

                  - +

                  + Type des groupes +

                  +

                  + Il y a trois façons d'utiliser les groupes : +

                    - -
                  • Pas de groupe - il n'y a pas de groupes, tout le monde fait partie d'une seule communauté ;
                  • - -
                  • Groupes séparés - chaque groupe ne peut voir que son propre groupe, les autres groupes étant invisibles ;
                  • - -
                  • Groupes visibles - chaque groupe travaille uniquement dans son propre groupe, mais les autres groupes sont visibles.
                  • - +
                  • + Pas de groupe - il n'y a pas de groupes, tout le monde fait partie d'une seule communauté ; +
                  • +
                  • + Groupes séparés - chaque groupe ne peut voir que son propre groupe, les autres groupes étant invisibles ; +
                  • +
                  • + Groupes visibles - chaque groupe travaille uniquement dans son propre groupe, mais les autres groupes sont visibles. +
                  - -

                  Les groupes s'appliquent à deux niveaux :

                  - +

                  + Les groupes s'appliquent à deux niveaux : +

                  - -
                  1. Au niveau du cours
                  - -
                  Lorsque le type des groupes est fixé au niveau du cours, il devient le type par défaut pour toutes les activités du cours.

                  - -
                  2. Au niveau des activités
                  - -
                  On peut définir le type des groupes au niveau de chaque activité qui supporte les groupes. Toutefois, si dans le cours le paramètre « Imposer le type des groupes » a été fixé, Moodle ignore le type des groupes défini dans les activités.
                  - +
                  + 1. Au niveau du cours +
                  +
                  + Lorsque le type des groupes est fixé au niveau du cours, il devient le type par défaut pour toutes les activités du cours. +
                  +
                  +
                  +
                  + 2. Au niveau des activités +
                  +
                  + On peut définir le type des groupes au niveau de chaque activité qui supporte les groupes. Toutefois, si dans le cours le paramètre « Imposer le type des groupe » a été fixé, Moodle ignore le type des groupes défini dans les activités. +
                  diff --git a/lang/fr/help/groupmodeforce.html b/lang/fr/help/groupmodeforce.html index b3249fd1f72..bc056b88d58 100755 --- a/lang/fr/help/groupmodeforce.html +++ b/lang/fr/help/groupmodeforce.html @@ -1,7 +1,11 @@ - +

                  Imposer le type des groupes

                  -

                  Imposer le type des groupes

                  +

                  Lorsque ce paramètre est activé au niveau du cours, +le type des groupes défini dans le cours est appliqué +à chaque activité du cours. Moodle ignore le +paramètre fixant le type des groupes au niveau des +activités.

                  -

                  Lorsque ce paramètre est activé au niveau du cours, le type des groupes défini dans le cours est appliqué à chaque activité du cours. Moodle ignore le paramètre fixant le type des groupes au niveau des activités.

                  - -

                  Ce mode imposé est très utile lorsque l'on désire plusieurs groupes d'étudiants complètement indépendants dans un même cours.

                  \ No newline at end of file +

                  Ce mode imposé est très utile lorsque l'on +désire plusieurs groupes d'étudiants complètement +indépendants dans un même cours.

                  \ No newline at end of file diff --git a/lang/fr/help/guestaccess.html b/lang/fr/help/guestaccess.html index 9de35fb8394..593430a9f90 100644 --- a/lang/fr/help/guestaccess.html +++ b/lang/fr/help/guestaccess.html @@ -1,13 +1,13 @@ -

                  Accès anonyme

                  +

                  Accès anonyme

                  -

                  Il vous est possible d'autoriser ou non l'accès anonyme à un cours.

                  +

                  Il vous est possible d'autoriser ou non l'accès anonyme à un cours.

                  -

                  Les visiteurs peuvent se connecter en tant qu'utilisateur anonyme en utilisant le bouton « Connexion en tant qu'utilisateur anonyme » sur la page de connexion.

                  +

                  Les visiteurs peuvent se connecter en tant qu'utilisateur anonyme en utilisant le bouton « Connexion en tant qu'utilisateur anonyme » sur la page de connexion.

                  -

                  Les utilisateurs anonymes ont accès aux cours sans pouvoir y modifier quoi que ce soit. Cela signifie qu'ils ne peuvent rien publier, car cela risquerait de déranger le cours pour les véritables étudiants.

                  +

                  Les utilisateurs anonymes ont accès aux cours sans pouvoir y modifier quoi que ce soit. Cela signifie qu'ils ne peuvent rien publier, car cela risquerait de déranger le cours pour les véritables étudiants.

                  -

                  Ceci peut être utile si l'on souhaite permettre à des collègues d'observer l'activité d'un cours, ou aux éventuels étudiants de visiter un cours avant de s'y inscrire.

                  +

                  Ceci peut être utile si l'on souhaite permettre à des collègues d'observer l'activité d'un cours. Cela permet également aux éventuels étudiants de visiter un cours avant de s'y inscrire.

                  -

                  Vous avez le choix entre deux types d'accès anonyme : avec ou sans clef d'inscription. Si vous choisissez d'autoriser les utilisateurs anonymes qui ont la clef d'inscription, ils auront à fournir cette clef à chaque nouvelle connexion (contrairement aux étudiants qui n'ont à le faire qu'une seule fois). Cela vous permet de limiter l'accès anonyme à certaines personnes. Si vous choisissez d'autoriser l'accès anonyme sans clef d'inscription, alors tout le monde peut entrer directement dans le cours.

                  +

                  Vous avez le choix entre deux types d'accès anonyme : avec ou sans clef d'inscription. Si vous choisissez d'autoriser les utilisateurs anonymes qui ont la clef d'inscription, ils auront à fournir cette clef à chaque nouvelle connexion (contrairement aux étudiants qui n'ont à le faire qu'une seule fois). Cela vous permet de limiter l'accès anonyme à certaines personnes. Si vous choisissez d'autoriser l'accès anonyme sans clef d'inscription, alors tout le monde peut entrer directement dans le cours.

                  diff --git a/lang/fr/help/hideoptions.html b/lang/fr/help/hideoptions.html deleted file mode 100644 index ac0a8564801..00000000000 --- a/lang/fr/help/hideoptions.html +++ /dev/null @@ -1,5 +0,0 @@ - - -

                  Cacher les options

                  - -

                  Si vous cocher une de ces cases, l'option correspondante sera par défaut invisible pour les enseignants. Ils pourront malgré tout y avoir accès en sélectionnant l'option «  » sur la page des réglages du test.

                  diff --git a/lang/fr/help/html.html b/lang/fr/help/html.html index 5580403a5de..2c5144ba32b 100755 --- a/lang/fr/help/html.html +++ b/lang/fr/help/html.html @@ -1,19 +1,22 @@ - +

                  Quelques conseils pour l'utilisation du code HTML dans +Moodle

                  -

                  Conseils pour l'utilisation du code HTML

                  +

                  Vous pouvez employer presque toutes les balises HTML dans Moodle, afin +d'obtenir la présentation que vous désirez.

                  -

                  Dans Moodle, vous pouvez employer presque toutes les balises HTML afin d'obtenir la présentation que vous désirez.

                  +

                  Notez toutefois que tous les scripts (Javascript, Visual Basic, etc.) +seront automatiquement supprimés, pour des raisons de +sécurité.

                  -

                  Cependant, tous les scripts (Javascript, Visual Basic, etc.) seront automatiquement supprimés, pour des raisons de sécurité.

                  +

                  Normalement, votre texte sera contenu dans une cellule d'un tableau +construit par Moodle. Veuillez donc prendre note que : -

                  Normalement, votre texte sera contenu dans une cellule d'un tableau construit par Moodle. Veuillez donc prendre note que : +

                    +
                  • il n'est pas nécessaire d'utiliser les balises + <head> ou <body> +
                  • il faut toujours fermer les tableaux avec la balise </table> +
                  -
                    - -
                  • il n'est pas nécessaire d'utiliser les balises <head> ou <body>
                  • - -
                  • faites attention aux balises </table> sans balise ouvrante correspondante, qui pourraient chambouler la mise en page.
                  • - -
                  - -

                  Les codes des binettes seront automatiquement transformés en leur équivalent graphique et les URLs (adresses Internet) seront automatiquement converties en hyperliens.

                  \ No newline at end of file +

                  Les codes des binettes (emoticons) seront automatiquement +transformés en leur équivalent graphique et les URLs (adresses +Internet) seront automatiquement converties en hyperliens.

                  \ No newline at end of file diff --git a/lang/fr/help/index.html b/lang/fr/help/index.html index 7076a85d101..5ce5fb28607 100755 --- a/lang/fr/help/index.html +++ b/lang/fr/help/index.html @@ -1,101 +1,53 @@ -

                  Liste des fichiers d'aide

                  - -

                  Généralités

                  +

                  Liste des fichiers d'aide

                  +

                  Généralités

                  Administration

                  -

                  Conception de cours

                  - -

                  Lecture et écriture

                  - +

                  Lecture et écriture

                  diff --git a/lang/fr/help/journal/mods.html b/lang/fr/help/journal/mods.html index eec1d694e91..9f3405ace87 100755 --- a/lang/fr/help/journal/mods.html +++ b/lang/fr/help/journal/mods.html @@ -1,13 +1,11 @@ -

                  Journal Journal

                  +

                   Journal

                    +

                    Ce module est une activité favorisant la réflexion personnelle.

                    -

                    Ce module propose une activité favorisant la réflexion personnelle.

                    - -

                    L'enseignant demande à l'étudiant de réfléchir à un sujet particulier. L'étudiant écrit le résultat de ses réflexions dans un journal personnel. Il peut revoir et modifier sa contribution ultérieurement. Cette contribution est privée et peut seulement être lue par l'enseignant, qui peut la commenter. Il peut également donner une note au texte de l'étudiant.

                    - -

                    C'est habituellement une bonne idée de lancer une activité de journal par semaine.

                    +

                    L'enseignant demande à l'étudiant de réfléchir à un sujet particulier. L'étudiant écrit le résultat de ses réflexions dans un journal personnel. Il peut modifier et revoir sa réponse avec le temps. Cette réponse est privée et peut seulement être vue par l'enseignant, qui peut la commenter. Il peut également donner une note au texte de l'étudiant.

                    +

                    Dans les cours où cette activité est possible, on suggère de lancer une activité de journal par semaine.

                  \ No newline at end of file diff --git a/lang/fr/help/label/mods.html b/lang/fr/help/label/mods.html index f64f7f6d3bc..2761c86f5ff 100644 --- a/lang/fr/help/label/mods.html +++ b/lang/fr/help/label/mods.html @@ -1,10 +1,7 @@ - - -

                   Étiquettes

                  - +

                   Étiquettes

                    - -

                    Ce module n'est pas à proprement parler une activité. Il permet simplement d'insérer du texte et des images parmi les autres activités sur la page du cours.

                    - +

                    Ce module n'est pas à proprement parler une activité. +Il s'agit d'un module permettant d'insérer du texte et des +images parmi les autres activités sur la page du cours.

                  diff --git a/lang/fr/help/langedit.html b/lang/fr/help/langedit.html index 70f802b2be3..7f35828d5e8 100755 --- a/lang/fr/help/langedit.html +++ b/lang/fr/help/langedit.html @@ -1,14 +1,19 @@ - +

                  Modification des fichiers de langue

                  -

                  Modification des fichiers de langue

                  +

                  Dans Moodle, on peut modifier tous les textes affichés à +l'écran par le système, à des fins de traduction, de +correction, etc. Pour ce faire, on doit avoir configuré le serveur web de +manière que les fichiers contenant ces textes puissent être +modifiés.

                  -

                  Pour modifier les fichiers de langue par l'intermédiaire de cette page, il est nécessaire que le processus faisant tourner le serveur web puisse les modifier.

                  +

                  On remarquera que certaines chaînes de caractères contiennent +les codes : $a et $a->quelque chose.

                  -

                  On remarquera que certaines chaînes de caractères contiennent $a et $a->quelque chose.

                  +

                  Ces codes représentent les variables qui seront remplacées par +des noms ou d'autres termes dans Moodle.

                  -

                  Ces codes représentent les variables qui seront remplacées par des noms ou d'autres termes par Moodle.

                  - -

                  Lorsqu'il n'y a qu'une variable, la forme $a est employée. Quand il y en a deux ou plus, alors chacune porte un nom différent.

                  +

                  Lorsqu'il y a une seule variable, la forme $a est employée. Quand +il y a deux variables ou plus, alors chacune porte un nom différent.

                  diff --git a/lang/fr/help/lesson/grade.html b/lang/fr/help/lesson/grade.html index b88a96defda..1ab3a86300c 100755 --- a/lang/fr/help/lesson/grade.html +++ b/lang/fr/help/lesson/grade.html @@ -1,5 +1,7 @@ - +

                  Note de la leçon

                  -

                  Note de la leçon

                  - -

                  Cette valeur détermine la note maximale pouvant être accordée dans cette leçon. Elle doit se situer entre 0 et 100%. Cette valeur peut être modifiée en tout temps durant la leçon. Tout changement aura un effet immédiat dans la page des notes, ainsi que dans les différentes listes affichées pour les étudiants. Si l'ont met 0 pour cette valeur, la leçon n'apparaîtra dans aucune des pages de notes.

                  +

                  Cette valeur détermine la note maximale pouvant être +accordée dans cette leçon. Elle doit se situer entre 0 +et 100%. Cette valeur peut être modifiée en tout temps +durant la leçon. Tout changement aura un effet immédiat +sur les notes de l'étudiant.

                  diff --git a/lang/fr/help/lesson/handlingofretakes.html b/lang/fr/help/lesson/handlingofretakes.html index 54f80b7019d..40fd318e843 100644 --- a/lang/fr/help/lesson/handlingofretakes.html +++ b/lang/fr/help/lesson/handlingofretakes.html @@ -1,7 +1,7 @@ -

                  Gestion des répétitions

                  +

                  Gestion des répétitions

                  -

                  Lorsque les étudiants ont le droit de répéter la leçon, cette option permet à l'enseignant d'afficher comme note de la leçon, par exemple dans la page des notes, la note moyenne de toutes les tentatives ou la note de la meilleure tentative des étudiants. +

                  Lorsque les étudiants ont le droit de répéter la leçon, cette option permet à l'enseignant d'afficher comme note de la leçon la note moyenne de toutes les tentatives ou la note de la meilleure tentative des étudiants. -

                  Cette option peut être modifiée en tout temps.

                  \ No newline at end of file +

                  Cette option peut être modifiée en tout temps.

                  \ No newline at end of file diff --git a/lang/fr/help/lesson/import.html b/lang/fr/help/lesson/import.html index 1ec522e10e9..33f43fd13e8 100644 --- a/lang/fr/help/lesson/import.html +++ b/lang/fr/help/lesson/import.html @@ -1,112 +1,97 @@ -

                  Importer de nouvelles questions

                  +

                  Importer de nouvelles questions

                  -

                  Cette fonction vous permet d'importer des questions depuis des fichiers texte externes, déposés dans Moodle à l'aide d'un formulaire.

                  +

                  Cette fonction vous permet d'importer des questions depuis des fichiers texte externes, déposés dans Moodle à l'aide d'un formulaire.

                  -

                  Plusieurs formats de fichier sont supportés :

                  - -

                  Format GIFT

                  +

                  Plusieurs formats de fichier sont supportés :

                  +

                  Format GIFT format

                    - -

                    Le format GIFT est le format le plus complet disponible pour l'importation de questions de tests dans Moodle. Il a été conçu pour permettre aux enseignants d'écrire facilement des questions dans un fichier texte. Il supporte les questions à Choix multiples, Vrai-Faux, à Réponse courte, d'Appariement, Numériques, ainsi que l'insertion de _____ pour le format Mot manquant. Ces différents types de questions peuvent être mélangés dans un même fichier texte, et le format permet en outre des lignes de commentaires, des noms pour les questions, les feedbacks et les notes pondérées (en %). Voici quelques exemples :

                    +

                    Le format GIFT est le format le plus complet disponible pour l'importation de questions de tests dans Moodle. Il a été conçu pour permettre aux enseignants d'écrire facilement des questions dans un fichier texte. Il supporte les questions à Choix multiples, Vrai-Faux, à Réponse courte, d'Appariement, Numériques, ainsi que l'insertion de _____ pour le format Mot manquant. Ces différents types de questions peuvent être mélangés dans un même fichier texte, et le format permet en outre des lignes de commentaires, des noms pour les questions, les feedbacks et les notes pondérées (en %). Voici quelques exemples :

                    -Quelle était la couleur de la jument blanche de Napoléon ?{~Verte ~Noire =Blanche}
                    +Quelle était la couleur de la jument blanche de Napoléon ?{~Verte ~Noire =Blanche}
                     
                    -La monture de Napoléon était {=une jument ~un étalon ~un mulet}.
                    +La monture de Napoléon était {=une jument ~un étalon ~un mulet}.
                     
                    -La jument de Napoléon était verte.{FALSE}
                    +La jument de Napoléon était verte.{FALSE}
                     
                    -Quelle était la nationalité de Napoléon ?{=Corse =Française}
                    +Quelle était la nationalité de Napoléon ?{=Corse =Française}
                     
                    -En quelle année Napoléon est-il mort ?{#1821}
                    +En quelle année Napoléon est-il mort ?{#1821}
                     

                    Plus d'informations sur le format GIFT

                    -
                  -

                  Format Aiken

                  - +

                  Format Aiken

                    - -

                    Le format Aiken fournit une manière très simple de créer des questions à choix multiples dans un format facile à lire. Voici un exemple de ce format :

                    - +

                    Le format Aiken fournit une manière très simple +de créer des questions à choix multiples dans un +format facile à lire. Voici un exemple de ce +format :

                    -Quelle est la réponse correcte à cette question ?
                    +Quelle est la réponse correcte à cette question ?
                     A. Celle-ci ?
                    -B. Peut-être cette réponse ?
                    +B. Peut-être cette réponse ?
                     C. Ou celle-ci ?
                    -D. Voilà la bonne !
                    +D. Voilà la bonne !
                     ANSWER: D
                     

                    Plus d'informations sur le format Aiken

                    -
                  -

                  Format « Mots manquants »

                  +

                  Format « Mots manquants »

                    +

                    Ce format ne supporte que les questions à choix multiples. Chaque réponse proposée est préfixée par un tilde (~), et la réponse correcte est préfixée par un signe égal (=). Voici un exemple :

                    -

                    Ce format ne supporte que les questions à choix multiples. Chaque réponse proposée est préfixée par un tilde (~), et la réponse correcte est préfixée par un signe égal (=). Voici un exemple :

                    - -
                    Dès le moment où, enfants, nous explorons notre corps, nous devenons des étudiants en {=anatomie et physiologie ~réflexologie ~science ~expérimentation}, et dans un sens nous restons des étudiants pour toute notre vie.
                    - -

                    Plus d'informations sur le format « Mots manquants »

                    +

                    Dès le moment où, enfants, nous explorons notre corps, nous devenons des étudiants en {=anatomie et physiologie ~réflexologie ~science ~expérimentation}, et dans un sens nous restons des étudiants pour toute notre vie. +

                    +

                    Plus d'informations sur le format « Mots manquants »

                  -

                  Format AON

                  +

                  Format AON

                    +

                    Ce format est identique au format « Mots manquants », mais lors de l'importation, les questions à réponse courte sont 4 par 4 converties en questions d'appariement.

                    -

                    Ce format est identique au format « Mots manquants », mais lors de l'importation, les questions à réponse courte sont 4 par 4 converties en questions d'appariement.

                    - -

                    En outre, les réponses sont mélangées aléatoirement durant l'importation.

                    - -

                    Le nom de ce format provient de l'institution qui a parrainé le développement de nombreuses fonctionnalité des tests.

                    +

                    En outre, les réponses sont mélangées aléatoirement durant l'importation.

                    +

                    Le nom de ce format provient de l'institution qui a parrainé le développement de nombreuses fonctionnalité des tests.

                  -

                  Format Blackboard

                  +

                  Format Blackboard

                    - -

                    Les questions exportées en format Blackboard peuvent également être importées, grâce aux fonctions XML intégrées dans PHP.

                    +

                    Les questions exportées en format Blackboard peuvent également être importées, grâce aux fonctions XML intégrées dans PHP.

                    Plus d'informations sur le format Blackboard

                    -
                  -

                  Format CTM (Course Test Manager)

                  - +

                  Format CTM (Course Test Manager)

                    +

                    Les questions en format CTM peuvent également être importées, pour autant que votre Moodle puisse avoir accès à la base de données Access qui les contient. La procédure d'importation dépend du serveur sur lequel tourne votre Moodle.

                    -

                    Les questions en format CTM peuvent également être importées, pour autant que votre Moodle puisse avoir accès à la base de données Access qui les contient. La procédure d'importation dépend du serveur sur lequel tourne votre Moodle.

                    +

                    Sous Windows, la base Access peut être directement importée comme n'importe quelle autre fichier.

                    -

                    Sous Windows, la base Access peut être directement importée comme n'importe quelle autre fichier.

                    - -

                    Avec Linux, vous devez configurer dans le même réseau que votre serveur un ordinateur Windows avec la base de données CTM et le logiciel ODBC Socket Server, qui utilisera XML pour transférer les données sur le moodle de votre serveur Linux.

                    +

                    Avec Linux, vous devez configurer dans le même réseau que votre serveur un ordinateur Windows avec la base de données CTM et le logiciel ODBC Socket Server, qui utilisera XML pour transférer les données sur le moodle de votre serveur Linux.

                    Veuillez SVP lire attentivement le fichier d'aide ci-dessous avant d'utiliser cette importation.

                    Plus d'informations sur le format CTM

                    -
                  -

                  Format personnalisé

                  - +

                  Format personnalisé

                    +

                    Si vous désirez importer votre propre format, vous pouvez l'implémenter directement en modifiant le fichier mod/quiz/format/custom.php.

                    -

                    Si vous désirez importer votre propre format, vous pouvez l'implémenter directement en modifiant le fichier mod/quiz/format/custom.php.

                    - -

                    Il y a peu de code à écrire, juste de quoi extraire une simple question à partir d'un texte donné.

                    - -

                    Plus d'informations sur le format personnalisé.

                    +

                    Il y a peu de code à écrire, juste de quoi extraire une simple question à partir d'un texte donné.

                    +

                    Plus d'informations sur le format personnalisé.

                  -

                  D'autres formats seront bientôt disponibles pour l'importation, notamment WebCT, IMS QTI et tout ceux que les utilisateurs de Moodle pourront apporter !

                  \ No newline at end of file +

                  D'autres formats seront bientôt disponibles pour l'importation, notamment WebCT, IMS QTI et tout ceux que les utilisateurs de Moodle pourront apporter !

                  \ No newline at end of file diff --git a/lang/fr/help/lesson/jumpto.html b/lang/fr/help/lesson/jumpto.html index b31003a291c..c09a39c8925 100755 --- a/lang/fr/help/lesson/jumpto.html +++ b/lang/fr/help/lesson/jumpto.html @@ -1,10 +1,22 @@ - +

                  Lien « Aller +à »

                  -

                  Lien « Aller à »

                  +

                  Chaque réponse possède un lien Aller à. +Lorsqu'une réponse est choisie, Moodle affiche le feedback +correspondant, puis charge la page pointée par le lien Aller +à. Ce lien peut être relatif ou absolu. Les liens +relatifs peuvent mener sur la page suivante ou sur la page actuelle. +Lorsque le lien pointe vers la page actuelle, la même page est +présentée une nouvelle fois à l'étudiant. +La page suivante conduit à la page placée après +la page actuelle, selon l'ordre logique. On définit un lien +absolu en choisissant simplement le titre de la page visée.

                  -

                  Chaque réponse possède un lien Aller à. Lorsque la réponse est choisie, Moodle affiche le feedback correspondant, puis charge la page pointée par le lien Aller à. Ce lien peut être relatif ou absolu. Les liens relatifs peuvent mener sur la page suivante ou sur la page actuelle. Lorsque le lien pointe vers la page actuelle, la même page est présentée une nouvelle fois à l'étudiant. La page suivante conduit à la page placée après la page actuelle, selon l'ordre logique. On définit un lien absolu en choisissant simplement le titre de la page visée.

                  - -

                  Remarque : un lien Page suivante peut conduire vers une page différente que celle initialement prévue lorsque les pages sont déplacées. Les pages pointées par les liens Aller à qui utilisent les titres des pages mènent toujours aux mêmes pages.

                  +

                  Remarque : un lien Page suivante peut conduire vers une +page différente que celle initialement prévue lorsque +les pages sont déplacées. Les pages pointées par +les liens Aller à mènent toujours aux mêmes +pages.

                  diff --git a/lang/fr/help/lesson/maxanswers.html b/lang/fr/help/lesson/maxanswers.html index f5cff337986..fc3108717a7 100755 --- a/lang/fr/help/lesson/maxanswers.html +++ b/lang/fr/help/lesson/maxanswers.html @@ -1,12 +1,14 @@ - +

                  Nombre maximal de réponses dans une +leçon

                  -

                  Nombre maximal de réponses dans une leçon

                  +

                  Cette valeur détermine le nombre maximal de réponses +qu'un enseignant peut utiliser. La valeur par défaut est de +quatre. Lorsqu'une leçon utilise seulement des questions +Vrai/Faux, il est préférable de régler ce +paramètre à deux.

                  -

                  Cette valeur détermine le nombre maximal de réponses qu'un enseignant peut utiliser. La valeur par défaut est de 4. Si une leçon n'utilise que des questions Vrai/Faux, il est sensé de régler ce paramètre à 2.

                  - -

                  Ce paramètre fixe également le nombre maximal de branches pouvant être utilisée dans une table de branchement.

                  - -

                  On peut modifier sans problème cette valeur dans une leçon contenant déjà des pages. Si vous avez besoin d'ajouter une question ou une table de branchement avec de nombreux choix, il sera nécessaire de la modifier. Une fois la question ou la table de branchement inhabituelle définie, vous pourrez réduire ce paramètre à une valeur plus normale.

                  +

                  On peut modifier cette valeur après que la leçon a +été créée.

                  diff --git a/lang/fr/help/lesson/maxattempts.html b/lang/fr/help/lesson/maxattempts.html index 1579ad46e0c..694490e162a 100644 --- a/lang/fr/help/lesson/maxattempts.html +++ b/lang/fr/help/lesson/maxattempts.html @@ -1,13 +1,32 @@ - +

                  Nombre maximal de tentatives (par les +étudiants)

                  -

                  Nombre maximal de tentatives (par les étudiants)

                  +

                  Cette valeur fixe le nombre maximal de tentatives à +disposition des étudiants pour répondre à +chacune des questions de la leçon. Dans le cas de +questions à réponse courte ou numérique, cette +valeur permet aux étudiants de passer à la page suivante +même s'ils ne trouvent pas la bonne réponse (issue de +secours).

                  -

                  Cette valeur fixe le nombre maximal de tentatives à disposition des étudiants pour répondre à chacune des questions de la leçon. Dans le cas de questions à réponse courte ou numériques, cette valeur permet aux étudiants de passer à la page suivante même s'ils ne trouvent pas la bonne réponse (issue de secours).

                  +

                  La valeur par défaut est de 5. De plus petites valeurs +risquent d'inciter les étudiants à ne pas +réfléchir sur les questions. De trop grandes valeurs +risquent d'engendrer encore plus de frustration.

                  -

                  La valeur par défaut est de 5. De plus petites valeurs risquent d'inciter les étudiants à ne pas réfléchir aux questions. De trop grandes valeurs risquent au contraire d'engendrer des frustrations.

                  +

                  Si vous fixez cette valeur à 1, les étudiants n'ont +qu'un seul essai pour répondre à chaque question. Une +telle activité est similaire à une activité du +module « Test », sauf que les questions sont +présentées chacune sur une page.

                  -

                  Si vous fixez cette valeur à 1, les étudiants n'ont qu'un seul essai pour répondre à chaque question. Une telle activité est similaire à une activité du module « Test », sauf que les questions sont présentées chacune sur une page différente.

                  +

                  Cette valeur est globale et s'applique à toutes les +questions de la leçon, quels que soient leur type.

                  -

                  Cette valeur est globale et s'applique à toutes les questions de la leçon, quels que soient leur type.

                  - -

                  Il est à remarquer que ce paramètre ne s'applique pas aux enseignants qui vérifient les questions ou explorent la leçon. La vérification du nombre de tentatives dépend de valeurs stockées dans la base de données et les tentatives des enseignants n'y sont pas enregistrées. Mais les enseignants devraient en principe connaître toutes les réponses !

                  +

                  Il est à remarquer que ce paramètre ne s'applique +pas aux enseignants qui vérifient les questions ou +explorent la leçon. La vérification du nombre de +tentatives dépend de valeurs stockées dans la base de +données et les tentatives des enseignants n'y sont pas +enregistrées. Il est vrai que les enseignant devraient en +principe connaître toutes les réponses !

                  diff --git a/lang/fr/help/lesson/maxpages.html b/lang/fr/help/lesson/maxpages.html index 186d957abb7..f91013ca6b0 100644 --- a/lang/fr/help/lesson/maxpages.html +++ b/lang/fr/help/lesson/maxpages.html @@ -1,8 +1,15 @@ - +

                  Nombre de pages à afficher

                  -

                  Nombre de pages à afficher

                  +

                  Ce paramètre n'est utilisé que pour les leçons +de type « cartes éclair » (flash cards). +La valeur par défaut est de 0, ce qui signifie que toutes la +pages (cartes) sont affichées dans une leçon. Une valeur +non-nulle de ce paramètre définit le nombre de pages +à afficher. La leçon est terminée après +que ce nombre de pages a été affiché et la note +est présentée à l'étudiant.

                  -

                  Ce paramètre n'est utilisé que pour les leçons de type « cartes éclair » (flash cards). La valeur par défaut est de 0, ce qui signifie que toutes la pages (cartes) sont affichées dans une leçon. Une valeur non-nulle de ce paramètre définit le nombre de pages à afficher. La leçon est terminée après que ce nombre de pages a été affiché et la note est présentée à l'étudiant.

                  - -

                  Si la valeur de ce paramètre dépasse le nombre effectif de pages de la leçon, la fin de la leçon a lieu après l'affichage de toutes les pages.

                  +

                  Si la valeur de ce paramètre dépasse le nombre +effectif de pages de la leçon, la fin de la leçon a lieu +après l'affichage de toutes les pages.

                  diff --git a/lang/fr/help/lesson/minquestions.html b/lang/fr/help/lesson/minquestions.html index a35f840d13c..4e0805812f5 100644 --- a/lang/fr/help/lesson/minquestions.html +++ b/lang/fr/help/lesson/minquestions.html @@ -1,15 +1,15 @@ -

                  Nombre minimal de questions dans une leçon

                  +

                  Nombre minimal de questions dans une leçon

                  -

                  Lorsqu'une leçon contient une ou plusieurs tables de branchement, l'enseignant devrait en principe donner une valeur pour ce paramètre. Cette valeur détermine une limite inférieure pour le nombre de questions à répondre avant qu'un étudiant puisse obtenir la note maximale. Elle ne force pas les étudiants à répondre à ce nombre de questions.

                  +

                  Lorsqu'une leçon contient une ou plusieurs tables de branchement, l'enseignant devrait en principe donner une valeur pour ce paramètre. Cette valeur détermine une limite inférieure pour le nombre de questions à répondre avant qu'un étudiant puisse obtenir la note maximale. Elle ne force pas les étudiants à répondre à ce nombre de questions.

                  -

                  Par exemple, en fixant ce paramètre à 20, vous vous assurez que les notes sont calculées comme si les étudiants avaient répondu à au moins 20 questions. Si un étudiant ne visite qu'une branche de la leçon, comprenant 5 pages, répond correctement aux 5 questions, et termine ensuite la leçon (à supposer que cette possibilité lui soit offerte, ce qui est raisonnable) et que ce paramètre n'est pas fixé, sa note sera de 5 sur 5, c'est-à-dire 100% ! En revanche, avec une valeur de 20, ce même étudiant obtiendra 5 sur 20, c'est-à-dire 25%. Si un autre étudiant visite 25 pages de la leçon et répond correctement à toutes les questions sauf 2, sa note sera de 23 sur 25, à savoir 92%.

                  +

                  Par exemple, en fixant ce paramètre à 20, vous vous assurez que les notes sont calculées comme si les étudiants avaient répondu à au moins 20 questions. Si un étudiant ne visite qu'une branche de la leçon, comprenant 5 pages, répond correctement aux 5 questions, et termine ensuite la leçon (à supposer que cette possibilité lui soit offerte, ce qui est raisonnable) et que ce paramètre n'est pas fixé, sa note sera de 5 sur 5, c'est-à-dire 100% ! En revanche, avec une valeur de 20, ce même étudiant obtiendra 5 sur 20, c'est-à-dire 25%. Si un autre étudiant visite 25 pages de la leçon et répond correctement à toutes questions sauf 2, sa note sera de 23 sur 25, à savoir 92%.

                  -

                  Si vous utilisez ce paramètre, la première page de la leçon devrait mentionner un texte de cette teneur :

                  +

                  Si vous utilisez ce paramètre, la première page de la leçon devrait mentionner un texte de cette teneur :

                  -
                  Dans cette leçon, on attend de vous que vous répondiez au moins à n questions. Vous pouvez répondre à plus de questions si vous le désirez. Cependant, si vous répondez à moins de n questions, votre note sera calculée comme si vous aviez répondu à n.
                  +

                  Dans cette leçon, on attend de vous que vous répondiez au moins à n questions. Vous pouvez répondre à plus de questions si vous le désirez. Cependant, si vous répondez à moins de n questions, votre note sera calculée comme si vous aviez répondu à n.

                  -

                  Bien sûr vous remplacerez n par la valeur de ce paramètre.

                  +

                  Bien sûr vous remplacerez n par la valeur de ce paramètre.

                  -

                  Lorsque ce paramètre est renseigné, un affichage indique aux étudiants le nombre de questions auxquelles ils ont déjà répondu et le nombre minimum auxquelles ils doivent répondre.

                  \ No newline at end of file +

                  Lorsque ce paramètre est renseigné, un affichage indique aux étudiants le nombre de questions auxquelles ils ont déjà répondu et le nombre minimum auxquelles ils doivent répondre.

                  \ No newline at end of file diff --git a/lang/fr/help/lesson/mods.html b/lang/fr/help/lesson/mods.html index b9a15f9a38c..fe3450b24fe 100755 --- a/lang/fr/help/lesson/mods.html +++ b/lang/fr/help/lesson/mods.html @@ -1,9 +1,11 @@ - - -Leçon Leçon + Leçon
                    - -

                    Une leçon permet de transmettre des informations de façon très flexible. Elle se compose de plusieurs pages qui chacune se termine normalement par une question et un choix de réponses. Selon le choix de l'étudiant, la leçon peut se poursuivre par la page suivante ou par une autre page. Le parcours suivi peut être simple ou complexe, selon la structure du matériel présenté.

                    - +

                    Une leçon permet de transmettre des informations de +façon très flexible. Elle se compose de plusieurs pages +qui chacune se termine normalement par une question et un choix de +réponses. Selon le choix de l'étudiant, la leçon +peut se poursuivre par la page suivante ou par une autre page . Le +parcours suivi peut être simple ou complexe, selon la nature du +sujet présenté et au choix de l'enseignant.

                  \ No newline at end of file diff --git a/lang/fr/help/lesson/nextpageaction.html b/lang/fr/help/lesson/nextpageaction.html index 0cc29521240..b0d044cf774 100644 --- a/lang/fr/help/lesson/nextpageaction.html +++ b/lang/fr/help/lesson/nextpageaction.html @@ -1,13 +1,36 @@ - +

                  Action après réponse +correcte

                  -

                  Action après réponse correcte

                  +

                  L'action habituelle après une réponse correcte est de +suivre le lien défini dans la réponse. La plupart du +temps, cela affichera la page suivante de la leçon. +L'étudiant suit alors la leçon dans l'ordre logique, +commençant par le début et terminant à la +fin.

                  -

                  L'action habituelle après une réponse correcte est de suivre le lien défini dans la réponse. La plupart du temps, cela affichera la page suivante de la leçon. L'étudiant suit alors la leçon dans l'ordre logique, commençant par le début et terminant à la fin.

                  +

                  Le module Leçon peut cependant être utilisé +pour mettre en place une activité de type « cartes +éclair » (flash cards). On présente ainsi +à l'étudiant des pages contenant une information +(optionnelle) et une question, dans un ordre aléatoire. Il n'y +a pas de début, ni de fin logique. Il n'y a qu'un ensemble de +cartes affichées les unes après les autres sans ordre +particulier.

                  -

                  Le module Leçon peut cependant être utilisé pour mettre en place une activité de type « cartes éclair » (flash cards). On présente ainsi à l'étudiant des pages contenant une information (optionnelle) et une question, dans un ordre aléatoire. Il n'y a pas de début, ni de fin logique. Il n'y a qu'un ensemble de cartes affichées les unes après les autres sans ordre particulier.

                  +

                  Cette option offre deux variantes très similaires de +comportement pour les cartes éclair. L'option +« Afficher une page non vue » +(sélectionnée par défaut) fait en sorte qu'aucune +carte ne soit affichée deux fois (même si +l'étudiant n'a pas répondu correctement à +la question de la carte). L'autre option « Afficher une +page sans réponse » permet à +l'étudiant de revoir certaines pages, mais seulement s'il n'y a +pas répondu ou s'il y a répondu faux.

                  -

                  Cette option offre deux variantes très similaires de comportement pour les cartes éclair. L'option « Afficher une page non vue » (sélectionnée par défaut) fait en sorte qu'aucune carte ne soit affichée deux fois (même si l'étudiant n'a pas répondu correctement à la question de la carte). L'autre option « Afficher une page sans réponse » permet de proposer à l'étudiant certaines pages qu'il a déjà vues, mais seulement s'il n'y a pas répondu ou s'il y a répondu faux.

                  - -

                  Dans chacun de ces deux cas, l'enseignant peut décider d'utiliser toutes les cartes, ou seulement un sous-ensemble (aléatoire) d'entre elles. Pour ce faire, il utilisera l'option « Nombre de pages à afficher ».

                  +

                  Dans chacun de ces deux cas, l'enseignant peut décider +d'utiliser toutes les cartes, ou seulement un sous-ensemble +(aléatoire) d'entre elles. Pour ce faire, il utilisera l'option +« Nombre de pages à afficher ».

                  diff --git a/lang/fr/help/lesson/overview.html b/lang/fr/help/lesson/overview.html index 9e22e6f1a48..c05dfb91263 100755 --- a/lang/fr/help/lesson/overview.html +++ b/lang/fr/help/lesson/overview.html @@ -1,55 +1,55 @@ -

                  Vue d'ensemble

                  +

                  Vue d'ensemble

                    -
                  1. Une leçon se compose de plusieurs pages et optionnellement de tables de branchement.
                  2. +
                  3. Une leçon se compose de plusieurs pages et optionnellement de tables de branchement.
                  4. -
                  5. Une page comprend du contenu et se termine normalement par une question. De là provient le terme page-question.
                  6. +
                  7. Une page comprend du contenu et se termine normalement par unequestion. De là provient le terme page-question.
                  8. -
                  9. Chaque page offre un choix de réponses.
                  10. +
                  11. Chaque page offre un choix de réponses.
                  12. -
                  13. À chaque réponse peut être associé un texte à afficher lorsqu'elle est choisie. Ce texte est appelé le feedback.
                  14. +
                  15. Chaque réponse peut offrir un feedback lorsqu'elle est choisie.
                  16. -
                  17. Un lien vers une autre page est également associé à chaque réponse. Ce lien peut être relatif (page actuelle, page suivante) ou absolu (n'importe quelle page de la leçon).
                  18. +
                  19. Un lien vers une autre page est également associé à chaque réponse. Ce lien peut être relatif (page actuelle, page suivante) ou absolu (n'importe quelle page de la leçon).
                  20. -
                  21. Par défaut, la première réponse mène à la page suivante de la leçon. Le réponses suivantes ramènent sur la page actuelle (c'est-à-dire que l'étudiant voit la même page s'il ne choisit pas la première réponse).
                  22. +
                  23. Par défaut, la première réponse mène à la page suivante de la leçon. La réponse suivante mène sur la page actuelle (c'est-à-dire que l'étudiant voit la même page).
                  24. -
                  25. La page qui est considérée comme la page suivante est la page suivante selon l'ordre logique des pages vu par l'enseignant. Cet ordre peut être modifié en déplaçant les pages.
                  26. +
                  27. La page qui est considérée comme la page suivante est la page suivante selon l'ordre logique des pages vu par l'enseignant. Cet ordre peut être modifié en déplaçant les pages.
                  28. -
                  29. La leçon suit un parcours. Ce parcours correspond à l'ordre des pages vues par les étudiants. L'ordre est déterminé par les sauts correspondants aux différentes réponses et cet ordre peut être très différent de l'ordre logique des pages (toutefois, si les liens par défaut sont conservés, le parcours ressemblera beaucoup à l'ordre logique). L'enseignant peut également vérifier ce parcours.
                  30. +
                  31. La leçon suit un parcours. Ce parcours correspond à l'ordre des pages vues par les étudiants. L'ordre est déterminé par les sauts correspondants aux différentes réponses et cet ordre peut être très différent de l'ordre logique des pages. L'enseignant peut également vérifier ce parcours.
                  32. -
                  33. Les réponses sont habituellement affichées aux étudiants dans un ordre aléatoire. La première réponse de l'enseignant ne sera pas nécessairement la première réponse affichée pour les étudiants. Chaque fois que les réponses seront affichées, elles le seront probablement dans un ordre différent. Toutefois, dans les questions d'appariement, les réponses sont affichées dans l'ordre spécifié par l'enseignant.
                  34. +
                  35. Les réponses sont toujours affichées aux étudiants dans un ordre aléatoire. La première réponse de l'enseignant ne sera pas nécessairement affichée en premier aux étudiants. Chaque fois que les réponses seront affichées, elles le seront dans un ordre différent. Toutefois dans les questions d'appariement, les réponses sont affichées dans l'ordre spécifié par l'enseignant.
                  36. -
                  37. Le nombre de réponses peut varier d'une page à l'autre. Par exemple, une page peut contenir une question vrai/faux, une autre peut contenir une question à choix multiples avec une seule bonne réponse et trois réponses fausses.
                  38. +
                  39. Le nombre de réponses peut varier d'une page à l'autre. Par exemple, une page peut contenir une question vrai/faux, une autre peut contenir une question à choix multiples avec une seule bonne réponse et trois réponses fausses.
                  40. -
                  41. Il est possible de mettre en place des pages sans question ; l'étudiant y voit alors le texte, suivi d'un lien Continuer.
                  42. +
                  43. Une page peut ne pas contenir de question ; l'étudiant voit alors un lien Continuer.
                  44. -
                  45. Pour les besoins de l'évaluation, les bonnes réponses correspondent à celles qui provoquent un saut à une page qui est placée plus loin dans l'ordre logique de la leçon. Une mauvaise réponse mène soit à la même page, soit à une page antérieure dans l'ordre logique. Donc, si les liens par défaut ne sont pas modifiés, la première réponse est la bonne et les autres sont les mauvaises.
                  46. +
                  47. Aux fins de correction, les bonnes réponses correspondent à celles qui provoquent un saut à une page qui est placée plus loin dans la leçon. Une mauvaise réponse mène soit à la même page, soit à une page précédente. Donc, si les sauts ne sont pas modifiés, la première réponse est la bonne et les autres sont les mauvaises.
                  48. -
                  49. Les questions peuvent avoir plusieurs bonnes réponses. Par exemple, lorsque deux réponses mènent à la page suivante, les deux réponses sont considérées comme étant bonnes. Même si l'étudiant aboutit à la même page en répondant l'une ou l'autre des réponses, le feedback pour chacune de ces réponses peut être différent.
                  50. +
                  51. Les questions peuvent avoir plusieurs bonnes réponses. Par exemple, lorsque deux réponses mènent à la page suivante, les deux réponses sont considérées comme étant bonnes. Même si l'étudiant aboutit à la même page en répondant l'une ou l'autre des réponses, le feedback pour chacune de ces réponses peut être différent.
                  52. -
                  53. Dans la vue de l'enseignant, les étiquettes identifiant les bonnes réponses sont soulignées.
                  54. +
                  55. Dans la vue de l'enseignant, les étiquettes identifiant les bonnes réponses sont soulignées.
                  56. -
                  57. Les tables de branchement sont des pages contenant des liens vers d'autres pages de la leçon. Une leçon pourra par exemple commencer par une table de branchement faisant office de table des matières.
                  58. +
                  59. Les tables de branchement sont simplement des pages contenant des liens vers d'autres pages de la leçon. Une leçon pourra par exemple commencer par une table de branchement faisant office de Table des matières.
                  60. -
                  61. Chaque lien d'une table de branchement se compose d'une description et du titre de la page vers laquelle il mène.
                  62. +
                  63. Chaque lien d'une table de branchement se compose d'une description et du titre de la page vers laquelle il mène.
                  64. -
                  65. Une table de branchement permet de diviser la leçon en différentes branches ou sections. Chaque branche peut contenir plusieurs pages, en général sur le même sujet. La fin d'une branche est indiquée habituellement par une page Fin de branche. Il s'agit d'une page spéciale qui par défaut ramène l'étudiant à la table de branchement précédente. Ce comportement peut être modifié si nécessaire, en modifiant la page de Fin de branche.
                  66. +
                  67. Une table de branchement permet de diviser la leçon en différentes branches ou sections. Chaque branche peut contenir plusieurs pages, en général sur le même sujet. La fin d'une branche est indiquée habituellement par une page Fin de branche. Il s'agit d'une page spéciale qui par défaut ramène l'étudiant à la table de branchement précédente. Ce comportement peut être modifié si nécessaire.
                  68. -
                  69. Il peut y avoir plus d'une table de branchement dans une leçon. Une leçon peut par exemple être structurée de façon que les sections soient des sous-branches des branches constituant les sujets principaux.
                  70. +
                  71. Il peut y avoir plus d'une table de branchement dans une leçon. Une leçon peut par exemple être structurée de façon que les sections soient des sous-branches des branches constituant les sujets principaux.
                  72. -
                  73. Il est essentiel d'offrir aux étudiants un moyen de terminer la leçon. Cela peut être fait en incluant un lien Fin de leçon dans la table de branchement principale. Ce lien mènera à une page (virtuelle) Fin de la leçon. On peut aussi faire en sorte que la dernière branche de la leçon (dans l'ordre logique) mène simplement à la fin de la leçon, ce qui se fait en ne la terminant pas par une page Fin de branche.
                  74. +
                  75. Il est essentiel d'offrir aux étudiant un moyen de terminer la leçon. Cela peut être fait en incluant un lien Fin de leçon dans la table de branchement pricipale. Ce lien mènera à une page (virtuelle) Fin de la leçon. On peut aussi faire en sorte que la dernière branche de la leçon (dans l'ordre logique) mène simplement à la fin de la leçon, ce qui se fait en ne la terminant pas par une page Fin de branche.
                  76. -
                  77. Si une leçon contient une ou plusieurs tables de branchement, il est conseillé de donner au paramètre « Nombre minimal de questions » une valeur raisonnable. On fixe ainsi une limite inférieure de pages à voir avant que le calcul de la note soit effectué. Sans ce paramètre, un étudiant pourrait visiter une seule branche de la leçon, répondre correctement à toutes les questions de cette branche et quitter la leçon avec la note maximale.
                  78. +
                  79. Si une leçon contient une ou plusieurs tables de branchement, il est conseillé de donner au paramètre « Nombre minimal de questions » une valeur raisonnable. On fixe ainsi une limite inférieure de pages à voir avant que le calcul de la note soit effectué. Sans ce paramètre, un étudiant pourrait visiter une seule branche de la leçon, répondre correctement à toutes les questions de cette branche et quitter la leçon avec la note maximale.
                  80. -
                  81. En outre, un étudiant a la possibilité de re-visiter une même branche à plusieurs reprises. La note est cependant calculée en utilisant le nombre de questions une seule fois répondues. La note n'augmentera donc pas si un étudiant répond plusieurs fois aux mêmes questions. En revanche, elle pourra diminuer, puisque le dénominateur utilisé pour le calcul de la note est le nombre de pages vues, qui augmente à chaque fois. Afin de donner aux étudiants une bonne idée de leur progression dans la leçon, le nombre de questions répondues correctement, le nombre de pages vues et leur note actuelle sont affichés sur chaque table de branchement.
                  82. +
                  83. En outre, un étudiant a la possibilité de re-visiter une même branche à plusieurs reprises. La note est cependant calculée en utilisant le nombre de questions une seule fois répondues. La note n'augmentera donc pas si un étudiant répond plusieurs fois aux mêmes questions. En revanche, elle pourra diminuer, puisque le dénominateur utilisé pour le calcul de la note est le nombre de pages vues, qui augmente à chaque fois. Afin de donner aux étudiants une bonne idée de leur progression dans la leçon, le nombre de questions répondues correctement, le nombre de pages vues et leur note actuelle est affichée sur chaque table de branchement.
                  84. -
                  85. L'étudiant atteint la fin de la leçon soit en sautant directement à la fin de la leçon (lien absolu) ou soit en passant à la page suivante (lien relatif). L'étudiant qui est arrivé à la fin de la leçon voit sa note et un message le félicitant. La note est calculée ainsi : (nombre de bonnes réponses / nombre de pages vues) * la note maximale de la leçon.
                  86. +
                  87. L'étudiant atteint la fin de la leçon soit en sautant directement à la fin de la leçon (lien absolu) ou soit en passant à la page suivante (lien relatif). L'étudiant qui est arrivé à la fin de la leçon voit sa note et un message le félicitant. La note est calculée ainsi : (nombre de bonnes réponses / nombre de pages vues) * la note maximale de la leçon.
                  88. -
                  89. Lorsque l'étudiant ne termine pas la leçon et quitte simplement la session, il pourra la reprendre à partir de sa dernière bonne réponse ou la recommencer depuis le début.
                  90. +
                  91. Lorsque l'étudiant ne termine pas la leçon et quitte simplement la session, il pourra la reprendre à partir de sa dernière bonne réponse ou la recommencer depuis le début.
                  92. -
                  93. Lorsque l'on permet à l'étudiant de suivre la leçon à plusieurs reprises, l'enseignant peut choisir comme note « finale » la note maximale ou la moyenne des notes de toutes les tentatives de l'étudiant. La note est affichée sur la page des Notes.
                  94. +
                  95. Lorsque l'on permet à l'étudiant de suivre la leçon à plusieurs reprises, l'enseignant peut choisir comme note « finale » la note maximale ou la moyenne des notes de toutes les tentatives de l'étudiant. La note est affichée sur la page Notes.
                  diff --git a/lang/fr/help/lesson/questionoption.html b/lang/fr/help/lesson/questionoption.html index 0b225a664f3..311afc5100c 100644 --- a/lang/fr/help/lesson/questionoption.html +++ b/lang/fr/help/lesson/questionoption.html @@ -1,13 +1,10 @@ - +

                  Option de question

                  -

                  Option de question

                  - -

                  Quelques types de question ont une option pouvant être activée en cochant cette case. Les types de question concernés et les détails de l'option correspondante sont décrits ci-dessous.

                  +

                  Quelques types de question ont une option pouvant être activée en cochant cette case. Les types de question concernés et les détails de l'option correspondante sont décrits ci-dessous.

                    +
                  1. Question à choix multiples. Une variante des questions à choix multiples sont les « Questions à choix multiples et à réponses multiples ». Si l'option est activée, l'étudiant doit alors cocher toutes les réponses correctes par l'ensemble proposé. La question peut indiquer ou non le nombre de bonnes réponses. Par exemple « Choisir deux rois de France dans la liste des personnages suivants » dans le premier cas, et « Lesquels de ces personnages ont été des rois de France ? » Le nombre des bonnes réponses peut varier de 1 au nombre de choix proposés. Une telle question avec une seule bonne réponse est différente d'une simple question à choix multiples, car contrairement à celle-ci, elle permet à l'étudiant de choisir plusieurs réponses.

                  2. -
                  3. Question à choix multiples. Une variante des questions à choix multiples sont les « Questions à choix multiples et à réponses multiples ». Si l'option est activée, l'étudiant doit alors cocher toutes les réponses correctes par l'ensemble proposé. La question peut indiquer ou non le nombre de bonnes réponses. Par exemple « Choisir deux rois de France dans la liste des personnages suivants » dans le premier cas, et « Lesquels de ces personnages ont été des rois de France ? » Le nombre des bonnes réponses peut varier de 1 au nombre de choix proposés. Une telle question avec une seule bonne réponse est différente d'une simple question à choix multiples, car contrairement à celle-ci, elle permet à l'étudiant de choisir plusieurs réponses.

                  4. - -
                  5. Question à réponse courte. Par défaut, il n'est pas tenu compte de la casse des caractères lors des comparaisons. Si l'option est activée, la casse des caractères sera prise en compte.

                  6. +
                  7. Question à réponse courte. Par défaut, il n'est pas tenu compte de la casse des caractères lors des comparaisons. Si l'option est activée, la casse des caractères sera prise en compte.

                  8. Les autres types de questions n'utilisent pas l'option de question.

                    diff --git a/lang/fr/help/lesson/questiontypes.html b/lang/fr/help/lesson/questiontypes.html index b38118185af..0ba28913142 100644 --- a/lang/fr/help/lesson/questiontypes.html +++ b/lang/fr/help/lesson/questiontypes.html @@ -1,58 +1,46 @@ - +

                    Types de questions

                    -

                    Types de questions

                    - -

                    Les types de questions actuellement disponibles dans le module Leçon sont  les suivants.

                    +

                    Les types de questions actuellement disponibles dans le module Leçon sont  les suivants.

                    1. +

                      Question à choix multiples. C'est le type de question par défaut. Une question à choix multiples offre à l'étudiant un choix de réponses parmi lesquelles il devra en choisir une. La réponse correcte mène l'étudiant plus loin dans la leçon, les réponses fausses non. Souvent l'utilité de telles questions dépend plus de la qualité des réponses fausses proposées que de la question elle-même ou de la bonne réponse.

                      -

                      Question à choix multiples. C'est le type de question par défaut. Une question à choix multiples offre à l'étudiant un choix de réponses parmi lesquelles il devra en choisir une. La réponse correcte mène l'étudiant plus loin dans la leçon, les réponses fausses non. Souvent l'utilité de telles questions dépend plus de la qualité des réponses fausses proposées que de la question elle-même ou de la bonne réponse.

                      +

                      Chaque question peut avoir optionnellement un feedback associé. Si aucun feedback n'est donné, l'étudiant obtient le message par défaut « C'est la réponse correcte » ou « C'est une mauvaise réponse » après avoir répondu.

                      -

                      Chaque question peut avoir optionnellement un feedback associé. Si aucun feedback n'est donné, l'étudiant obtient le message par défaut « C'est la réponse correcte » ou « C'est une mauvaise réponse » après avoir répondu.

                      +

                      Il est possible d'avoir plus d'une réponse correcte à une telle question. Les différentes réponses correctes peuvent avoir différents feedbacks et mener à des pages différentes de la leçon. En revanche, elles impliquent toutes la même note (c'est-à-dire qu'il n'y a pas de réponses correctes meilleures que d'autres, du moins en terme de note). Il est donc possible de faire suivre aux étudiants des parties de leçon différentes, même si toutes leurs réponses sont correctes.

                      -

                      Il est possible d'avoir plus d'une réponse correcte à une telle question. Les différentes réponses correctes peuvent avoir différents feedbacks et mener à des pages différentes de la leçon. En revanche, elles impliquent toutes la même note (c'est-à-dire qu'il n'y a pas de réponses correctes meilleures que d'autres, du moins en terme de note). Il est donc possible de faire suivre aux étudiants des parties de leçon différentes, même si toutes leurs réponses sont correctes.

                      - -

                      Certaines questions à choix multiples sont appelées « Questions à choix multiples et à réponses multiples ». Elles offrent à l'étudiant un choix de réponses parmi lesquelles il devra choisir toutes les bonnes réponses. La question peut indiquer ou non le nombre de bonnes réponses. Par exemple « Choisir deux rois de France dans la liste des personnages suivants » dans le premier cas, et « Lesquels de ces personnages ont été des rois de France ? » Le nombre des bonnes réponses peut varier de 1 au nombre de choix proposés. Une telle question avec une seule bonne réponse est différente d'une simple question à choix multiples, car contrairement à celle-ci, elle permet à l'étudiant de choisir plusieurs réponses.

                      - -

                      Pour ces questions, les réponses correctes mènent l'étudiant plus loin dans la leçon, les réponses fausses non. S'il y a plus d'une réponse correcte, toutes doivent mener à la même page, tout comme les mauvaises réponses. Dans le cas contraire, un avertissement est affiché lorsque l'enseignant visualise la leçon. Le feedback (optionnel) des bonnes réponses doit être inscrit dans la première bonne réponse. De même, le feedback (optionnel) des mauvaises réponses doit être inscrit dans la première mauvaise réponse. Les autres feedbacks sont ignorés (sans avertissement).

                      +

                      Certaines questions à choix multiples sont appelées « Questions à choix multiples et à réponses multiples ». Elles offrent à l'étudiant un choix de réponses parmi lesquelles il devra choisir toutes les bonnes réponses. La question peut indiquer ou non le nombre de bonnes réponses. Par exemple « Choisir deux rois de France dans la liste des personnages suivants » dans le premier cas, et « Lesquels de ces personnages ont été des rois de France ? » Le nombre des bonnes réponses peut varier de 1 au nombre de choix proposés. Une telle question avec une seule bonne réponse est différente d'une simple question à choix multiples, car contrairement à celle-ci, elle permet à l'étudiant de choisir plusieurs réponses.

                      +

                      Pour ces questions, les réponses correctes mènent l'étudiant plus loin dans la leçon, les réponses fausses non. S'il y a plus d'une réponse correcte, toutes doivent mener à la même page, tout comme les mauvaises réponses. Dans le cas contraire, un avertissement est affiché lorsque l'enseignant visualise la leçon. Le feedback (optionnel) des bonnes réponses doit être inscrit dans la première bonne réponse. De même, le feedback (optionnel) des mauvaises réponses doit être inscrit dans la première mauvaise réponse. Les autres feedbacks sont ignorés (sans avertissement).

                    2. +

                      Question à réponse courte. L'étudiant doit saisir la réponse sous forme de texte, et ce texte est comparé à une ou plusieurs réponses. La réponse donnée par l'étudiant est soit juste, soit fausse. À chaque réponse peut être associé un feedback. Si aucun feedback n'est donné, l'étudiant obtient le message par défaut « C'est la réponse correcte » ou « C'est une mauvaise réponse » après avoir répondu. Lorsque le texte saisi par l'étudiant ne correspond à aucune réponse, cela est considéré comme une réponse fausse et le feedback par défaut est affiché.

                      -

                      Question à réponse courte. L'étudiant doit saisir la réponse sous forme de texte, et ce texte est comparé à une ou plusieurs réponses. La réponse donnée par l'étudiant est soit juste, soit fausse. À chaque réponse peut être associé un feedback. Si aucun feedback n'est donné, l'étudiant obtient le message par défaut « C'est la réponse correcte » ou « C'est une mauvaise réponse » après avoir répondu. Lorsque le texte saisi par l'étudiant ne correspond à aucune réponse, cela est considéré comme une réponse fausse et le feedback par défaut est affiché.

                      - -

                      Par défaut, il n'est pas tenu compte de la casse des caractères lors des comparaisons. On peut cependant régler une option s'il l'on désire le comportement inverse.

                      - +

                      Par défaut, il n'est pas tenu compte de la casse des caractères lors des comparaisons. On peut cependant régler une option s'il l'on désire le comportement inverse.

                    3. - -

                      Question Vrai/Faux. Pour répondre à une telle question, l'étudiant choisit simplement l'une des deux options proposées. Il s'agit en fait d'une question à choix multiples à deux options.

                      - +

                      Question Vrai/Faux. Pour répondre à une telle question, l'étudiant choisit simplement l'une des deux options proposées. Il s'agit en fait d'une question à choix multiples à deux options.

                    4. +

                      Question d'appariement. Ce type de question est très flexible et puissant. Une question d'appariement consiste en une liste de termes ou d'affirmations devant être mis en correspondance avec une autre liste de termes ou d'affirmations. Par exemple, « Associer chaque pays avec sa capitale », avec les deux listes Italie, France, Suisse, Canada et Berne, Ottawa, Rome, Paris. On peut répéter des éléments dans une des listes, mais les répétitions doivent être identiques. Par exemple « Identifier le type de ces créatures », avec les listes moineau, vache, fourmi, chat et oiseau, animal, insecte, animal.

                      -

                      Question d'appariement. Ce type de question est très flexible et puissant. Une question d'appariement consiste en une liste de termes ou d'affirmations devant être mis en correspondance avec une autre liste de termes ou d'affirmations. Par exemple, « Associer chaque pays avec sa capitale », avec les deux listes Italie, France, Suisse, Canada et Berne, Ottawa, Rome, Paris. On peut répéter des éléments dans une des listes, mais les répétitions doivent être identiques. Par exemple « Identifier le type de ces créatures », avec les listes moineau, vache, fourmi, chat et oiseau, animal, insecte, animal.

                      - - -

                      Lors de la création d'une telle question, il faut placer les éléments de la première liste dans les champs « Réponse » et ceux de la deuxième liste dans les champs « Feedback ». Une fois la question créée, son affichage est un peu meilleur. Si l'étudiant met correctement en correspondance les différents éléments, il est envoyé à la page définie dans la première réponse. Dans le cas contraire, il est envoyé à celle qui est définie dans la deuxième réponse. Ce type de question ne permet pas de définir vos propres feedbacks. Le message donné à l'étudiant indique le nombre de paires correctes ou si toutes les paires sont correctes.

                      - -

                      Au contraire des questions à choix multiples, où les questions sont mélangées aléatoirement, la première liste est toujours affichée dans l'ordre donné. Les éléments de la deuxième liste sont bien sûr mélangés aléatoirement. Cela permet des questions dont l'objectif est de ranger des éléments. Par exemple, « Ranger les personnages suivants dans l'ordre où ils sont nés, le plus ancien en premier », avec les listes 1., 2., 3., 4. et Alexandre le Grand, Jules César, Charlemagne, Napoléon.

                      +

                      Lors de la création d'une telle question, il faut placer les éléments de la première liste dans les champs « Réponse » et ceux de la deuxième liste dans les champs « Feedback ». Une fois la question créée, son affichage est un peu meilleur. Si l'étudiant met correctement en correspondance les différents éléments, il est envoyé à la page définie dans la première réponse. Dans le cas contraire, il est envoyé à celle qui est définie dans la deuxième réponse. Ce type de question ne permet pas de définir vos propres feedbacks. Le message donné à l'étudiant indique le nombre de paires correctes ou si toutes les paires sont correctes.

                      +

                      Au contraire des questions à choix multiples, où les questions sont mélangées aléatoirement, la première liste est toujours affichée dans l'ordre donné. Les éléments de la deuxième liste sont bien sûr mélangés aléatoirement. Cela permet des questions dont l'objectif est de ranger des éléments. Par exemple, « Ranger les personnages suivants dans l'ordre où ils sont nés, le plus ancien en premier », avec les listes 1., 2., 3., 4. et Alexandre le Grand, Jules César, Charlemagne, Napoléon.

                    5. +

                      Question numérique. Ce type de question requiert un nombre comme réponse. Dans sa forme la plus simple, une seule réponse (correcte) est spécifiée par l'enseignant. Par exemple, « Que font 2 + 2 ? », avec la réponse 4 qui mène à la page suivante. Il est cependant parfois mieux de spécifier un intervalle, pour le cas où des erreurs d'arrondi fausseraient la comparaison. Par exemple, à la question « Que vaut 10/3 ? », il est nécessaire de donner un intervalle de la forme min:max, c'est-à-dire deux valeurs séparées par un signe deux-points (:). On peut indiquer 3.33:3.34 comme réponse à cette question, et ainsi les réponses 3.33, 3.333, 3.3333, etc. seront acceptées. Parmi les réponses fausses, on aura par exemple 3.3 (inférieur au minimum) et 3.4 (supérieur au maximum).

                      -

                      Question numérique. Ce type de question requiert un nombre comme réponse. Dans sa forme la plus simple, une seule réponse (correcte) est spécifiée par l'enseignant. Par exemple, « Que font 2 + 2 ? », avec la réponse 4 qui mène à la page suivante. Il est cependant parfois mieux de spécifier un intervalle, pour le cas où des erreurs d'arrondi fausseraient la comparaison. Par exemple, à la question « Que vaut 10/3 ? », il est nécessaire de donner un intervalle de la forme min:max, c'est-à-dire deux valeurs séparées par un signe deux-points (:). On peut indiquer 3.33:3.34 comme réponse à cette question, et ainsi les réponses 3.33, 3.333, 3.3333, etc. seront acceptées. Parmi les réponses fausses, on aura par exemple 3.3 (inférieur au minimum) et 3.4 (supérieur au maximum).

                      +

                      L'enseignant peut spécifier plus d'une réponse correcte, et chacune des réponses peut être un nombre ou un intervalle (voir ci-dessus). Les réponses sont testées dans l'ordre normal : Réponse 1, Réponse 2, etc. Il faut donc prêter attention à cet ordre lors de la spécification des réponses et des feedbacks. Par exemple la question « Quel est l'année de naissance de Jean-Sébastien Bach ? » pourrait avoir comme première réponse 1685, la réponse exacte, et la décennie 1680:1689 comme deuxième réponse moins exacte. Le feedback de la première serait « C'est exactement ça ! » et celui de la deuxième « Presque, vous êtes dans la bonne décennie ! ».

                      -

                      L'enseignant peut spécifier plus d'une réponse correcte, et chacune des réponses peut être un nombre ou un intervalle (voir ci-dessus). Les réponses sont testées dans l'ordre normal : Réponse 1, Réponse 2, etc. Il faut donc prêter attention à cet ordre lors de la spécification des réponses et des feedbacks. Par exemple la question « Quel est l'année de naissance de Jean-Sébastien Bach ? » pourrait avoir comme première réponse 1685, la réponse exacte, et la décennie 1680:1689 comme deuxième réponse moins exacte. Le feedback de la première serait « C'est exactement ça ! » et celui de la deuxième « Presque, vous êtes dans la bonne décennie ! ».

                      - -

                      Des réponses moins exactes ou fausses peuvent être indiquées par l'enseignant, mais il faut les placer après les bonnes réponses. Par exemple, si l'on veut ajouter la réponse 3:4 à la question « Que vaut 10/3 ? », il faudra spécifier les différentes réponses dans l'ordre suivant : 3.33:3.34 (la réponse acceptée), puis 3:4 (la réponse fausse, mais pas trop quand même !).

                      +

                      Des réponses moins exactes ou fausses peuvent être indiquées par l'enseignant, mais il faut les placer après les bonnes réponses. Par exemple, si l'on veut ajouter la réponse 3:4 à la question « Que vaut 10/3 ? », il faudra spécifier les différentes réponses dans l'ordre suivant : 3.33:3.34 (la réponse acceptée), puis 3:4 (la réponse fausse, mais pas trop quand même !).

                    6. -
                    \ No newline at end of file +
                \ No newline at end of file diff --git a/lang/fr/help/lesson/retake.html b/lang/fr/help/lesson/retake.html index 69818161199..7e631026545 100755 --- a/lang/fr/help/lesson/retake.html +++ b/lang/fr/help/lesson/retake.html @@ -1,11 +1,11 @@ -

                Permettre aux étudiants de répéter la leçon

                +

                Permettre aux étudiants de répéter la leçon

                -

                Cette option détermine si les étudiants peuvent suivre la leçon une seule fois ou à plusieurs reprises. Il est préférable de permettre aux étudiants de suivre la leçon à plusieurs reprises lorsque l'enseignant estime que le sujet doit être approfondi et très bien compris. Dans le cas où la leçon sert plutôt de test, l'étudiant ne devrait faire la leçon qu'une seule fois.

                +

                Cette option détermine si les étudiants peuvent suivre la leçon une seule fois ou à plusieurs reprises. Il est préférable de permettre aux étudiants de suivre la leçon à plusieurs reprises lorsque l'enseignant estime que le sujet doit être approfondi et très bien compris. Dans le cas où la leçon sert plutôt de test, l'étudiant ne devrait faire la leçon qu'une seule fois.

                -

                La note retenue dans la page Notes est soit la note moyenne, soit la note maximale obtenue lors des différents essais, dans le cas où la leçon est faite plusieurs fois. Un paramètre permet de choisir laquelle de ces deux options est utilisée.

                +

                La note retenue dans la page Notes est soit la note moyenne, soit la note maximale obtenue lors des différents essais, dans le cas où la leçon est faite plusieurs fois. Un paramètre permet de choisir laquelle de ces deux options est utilisée.

                -

                Toutefois, l'outil d'analyse des résultats aux questions utilise uniquement les réponses faites lors de la première tentative, et que les autres tentatives des étudiants sont ignorées.

                +

                Toutefois, l'outil d'analyse des résultats aux questions utilise uniquement les réponses faites lors de la première tentative, et que les autres tentatives des étudiants sont ignorées.

                -

                Par défaut, cette option est réglée sur Oui, ce qui veut dire que les étudiants peuvent suivre la leçon à plusieurs reprises. On considère que seules des circonstances exceptionnelles devraient mener à régler cette valeur sur Non. \ No newline at end of file +

                Par défaut, cette option est réglé sur Oui, ce qui veut dire que les étudiants peuvent suivre la leçon à plusieurs reprises. On considère que seules des circonstances exceptionnelles devraient mener à régler cette valeur sur Non. \ No newline at end of file diff --git a/lang/fr/help/lesson/useeditor.html b/lang/fr/help/lesson/useeditor.html index 548c9737026..daffaa9b0a7 100644 --- a/lang/fr/help/lesson/useeditor.html +++ b/lang/fr/help/lesson/useeditor.html @@ -1,17 +1,17 @@ -

                Utilisation de l'éditeur WYSIWYG

                +

                Utilisation de l'éditeur WYSIWYG

                -

                Lors de l'édition des pages, cette option permet l'utilisation de l'éditeur WYSIWYG au lieu de simples zones de texte. Cet éditeur permet de formatter le texte et d'ajouter des liens ou des images de façon simple.

                +

                Lors de l'édition des pages, cette option permet l'utilisation de l'éditeur WYSIWYG au lieu de simples zones de texte. Cet éditeur permet de formatter le texte et d'ajouter des liens ou des images de façon simple.

                -

                L'éditeur est activé en cochant la case à côté de Utiliser l'éditeur. L'activation est propre à chaque élément. Par exemple, si vous activez l'éditeur pour Réponse 1, il ne sera pas actif pour tous les autres champs de réponses.

                +

                L'éditeur est activé en cochant la case à côté de Utiliser l'éditeur. L'activation est propre à chaque élément. Par exemple, si vous activez l'éditeur pour Réponse 1, il ne sera pas actif pour tous les autres champs de réponses.

                -

                Si vous avez besoin de l'éditeur pour certains éléments de la page, cochez d'abord les cases Utiliser l'éditeur nécessaires, puis faites réafficher la page en cliquant sur le bouton Réafficher la page au bas de celle-ci.

                +

                Si vous avez besoin de l'éditeur pour certains éléments de la page, cochez d'abord les cases Utiliser l'éditeur nécessaires, puis faites réafficher la page en cliquant sur le bouton Réafficher la page au bas de celle-ci.

                -

                Veuillez noter qu'il faut utiliser l'éditeur avec prudence. La plupart du temps, il n'y a aucun problème. Cependant, nous vous recommandons de ne pas l'utiliser pour les réponses aux Questions à réponse courte et aux Questions numériques. L'éditeur peut en effet ajouter des balises HTML invisibles qui empêchent les comparaisons de s'effectuer correctement. En outre, le texte des Descriptions dans les tables de branchement est utilisé dans des boutons, et là encore des problèmes peuvent survenir avec des balises HTML invisibles. Il n'y a en revanche aucun problème avec les réponses qui ne sont utilisées que pour l'affichage, comme celles des Questions à choix multiples.

                +

                Veuillez noter qu'il faut utiliser l'éditeur avec prudence. La plupart du temps, il n'y a aucun problème. Cependant, nous vous recommandons de ne pas l'utiliser pour les réponses aux Questions à réponse courte et aux Questions numériques. L'éditeur peut en effet ajouter des balises HTML invisibles qui empêchent les comparaisons de s'effectuer correctement. En outre, le texte des Descriptions dans les tables de branchement est utilisé dans des boutons, et là encore des problèmes peuvent survenir avec des balises HTML invisibles. Il n'y a en revanche aucun problème avec les réponses qui ne sont utilisées que pour l'affichage, comme celles des Questions à choix multiples.

                -

                Si vous suspectez un problème avec un des éléments, vous pouvez sans problème désactiver l'éditeur en décochant la case Utiliser l'éditeur adéquate. Lorsque la page est réaffichée, le texte brut est présenté dans le champ et vous pouvez le modifier de façon adéquate. La seule activation ou désactivation de l'éditeur WYSIWYG ne modifie en rien le texte.

                +

                Si vous suspectez un problème avec un des éléments, vous pouvez sans problème désactiver l'éditeur en décochant la case Utiliser l'éditeur adéquate. Lorsque la page est réaffichée, le texte brut est présenté dans le champ et vous pouvez le modifier de façon adéquate. La seule activation ou désactivation de l'éditeur WYSIWYG ne modifie en rien le texte.

                -

                L'état de l'option Utiliser l'éditeur est enregistré pour chaque élément. Si vous désirez modifier la page, les éléments qui utilisaient l'éditeur seront à nouveau présenté avec l'éditeur.

                +

                L'état de l'option Utiliser l'éditeur est enregistré pour chaque élément. Si vous désirez modifier la page, les éléments qui utilisaient l'éditeur seront à nouveau présenté avec l'éditeur.

                -

                L'éditeur WYSIWYG est très gourmand en ressources. Si vous n'avez pas besoin de l'utiliser pour certains éléments, il est beaucoup plus rapide d'utiliser des champs standard. Vous souffrirez en outre de moins d'erreurs.

                \ No newline at end of file +

                L'éditeur WYSIWYG est très gourmand en ressources. Si vous n'avez pas besoin de l'utiliser pour certains éléments, il est beaucoup plus rapide d'utiliser des champs standard. Vous souffrirez en outre de moins d'erreurs.

                \ No newline at end of file diff --git a/lang/fr/help/mods.html b/lang/fr/help/mods.html index 2733534ae05..1dee290c3bb 100755 --- a/lang/fr/help/mods.html +++ b/lang/fr/help/mods.html @@ -1,6 +1,5 @@ - +

                Modules d'activités

                -

                Modules d'activités

                - -

                Moodle propose un éventail de modules d'activités qui peuvent être utilisés pour construire n'importe quel type de cours.

                +

                Moodle propose un éventail de modules d'activités qui peuvent +être utilisés pour construire n'importe quel type de cours.

                diff --git a/lang/fr/help/picture.html b/lang/fr/help/picture.html index b9c51ffdc8f..66833e2d5ee 100644 --- a/lang/fr/help/picture.html +++ b/lang/fr/help/picture.html @@ -1,25 +1,25 @@ -

                Déposer une image

                +

                Déposer une image

                -

                Il est possible de déposer sur ce site une image présente sur votre ordinateur. Cette image sera utilisée à différents endroits pour vous représenter, par exemple sur chaque message que vous posterez dans les forums.

                +

                Il est possible de déposer sur ce site une image présente sur votre ordinateur. Cette image sera utilisée à différents endroits pour vous représenter, par exemple sur chaque message que vous posterez dans les forums.

                -

                À cet effet, il est préférable d'utiliser une photo qui cadre votre visage d'assez près. L'utilisation d'une photo personnelle rend plus réel les échanges dans les forums. Vous pouvez utiliser toutefois n'importe quelle image. Dans tous les cas, le fichier doit être au format JPEG ou PNG (généralement son nom se termine alors par « .jpg » ou « .png »). Pour obtenir cette image, vous pouvez utiliser l'une des méthodes suivantes : +

                À cet effet, il est préférable d'utiliser une photo qui cadre votre visage d'assez près. L'utilisation d'une photo personnelle rend plus réel les échanges dans les forums. Vous pouvez utiliser toutefois n'importe quelle image. Dans tous les cas, le fichier doit être au format JPEG ou PNG (généralement son nom se termine alors par « .jpg » ou « .png »). Pour obtenir cette image, vous pouvez utiliser l'une des méthodes suivantes :

                  -
                1. utiliser un appareil photo numérique. Dans ce cas vos photos devraient se trouver sur votre ordinateur au bon format ;
                2. +
                3. utiliser un appareil photo numérique. Dans ce cas vos photos devraient se trouver sur votre ordinateur au bon format ;
                4. digitaliser une photo papier avec un scanner (choisissez le format JPEG ou PNG) ;
                5. si vous avez des dons artisitiques, vous pouvez dessiner une image avec un logiciel de dessin sur ordinateur ;
                6. -
                7. enfin, vous pouvez utiliser une image téléchargée sur le Web. Le site http://images.google.fr est l'endroit indiqué pour trouver des images (une fois que vous avez trouvé l'image qui vous plaît, cliquez dessus avec le bouton droit de la souris pour choisir l'option « Enregistrer l'image » dans le menu qui apparaît).
                8. +
                9. enfin, vous pouvez utiliser une image téléchargée sur le Web. Le site http://images.google.fr est l'endroit indiqué pour trouver des images (une fois que vous avez trouvé l'image qui vous plaît, cliquez dessus avec le bouton droit de la souris pour choisir l'option « Enregistrer l'image » dans le menu qui apparaît).

                -

                Pour déposer l'image, cliquez sur le bouton « Parcourir... » dans le formulaire et sélectionnez l'image sur le disque de votre ordinateur. Cliquez ensuite sur le button « Enregistrer mon profil » en bas de la page. L'image sera redimensionnée en un carré de 100x100 pixels.

                +

                Pour déposer l'image, cliquez sur le bouton « Parcourir... » dans le formulaire et sélectionnez l'image sur le disque de votre ordinateur. Cliquez ensuite sur le button « Enregistrer mon profil » en bas de la page. L'image sera redimensionnée en un carré de 100x100 pixels.

                -

                Lorsque vous reviendrez sur la page de votre profil, il se peut que l'image ne soit pas mise à jour. Dans ce cas utilisez le bouton « Actualiser » de votre navigateur.

                +

                Lorsque vous reviendrez sur la page de votre profil, il se peut que l'image ne soit pas mise à jour. Dans ce cas utilisez le bouton « Actualiser » de votre navigateur.

                diff --git a/lang/fr/help/questions.html b/lang/fr/help/questions.html index 24f501d012c..6578b97ae7d 100644 --- a/lang/fr/help/questions.html +++ b/lang/fr/help/questions.html @@ -1,141 +1,87 @@ - +

                Poser de bonnes questions

                -

                Poser de bonnes questions

                +

                Poser des questions est une bonne méthode pour amener les gens +à réfléchir sur un sujet. Quand on vous pose une +bonne question, cela vous permet de synthétiser votre +pensée, d'évaluer les idées existantes et d'en +créer d'autres.

                -

                Poser des questions est une bonne mŽthode pour amener les gens ˆ rŽflŽchir sur un sujet. Quand on vous pose une bonne question, cela vous permet de synthŽtiser votre pensŽe, d'Žvaluer les idŽes existantes et d'en crŽer d'autres.

                +

                On appelle questionnement socratique la technique didactique +où l'on pose des questions dans le but d'aider les autres +à apprendre. Cette dénomination provient de la +façon d'enseigner de Socrate, au Ve siècle avant notre +ère.

                -

                On appelle questionnement socratique la technique didactique o l'on pose des questions dans le but d'aider les autres ˆ apprendre. Cette dŽnomination provient de la faon d'enseigner de Socrate, au Ve sicle avant notre re.

                +

                Le questionnement socratique exige d'écouter très +attentivement l'interlocuteur pour vous permettre de formuler une +question constructive qui permette de l'aider sans le braquer.

                -

                Le questionnement socratique exige d'Žcouter trs attentivement l'interlocuteur pour vous permettre de formuler une question constructive qui permette de l'aider sans le braquer.

                - -

                Voici quelques exemples de telles questions

                +

                Voici quelques exemples de telles questions

                Questions de clarification

                -
                  - -
                • Qu'entendez vous par _____ ?
                • - -
                • Quelle est votre difficultŽ principale ?
                • - -
                • Quel est le lien entre _____ et _____ ? - -
                • Vous est-il possible de reformuler ?
                • - -
                • Je ne suis pas sžr de bien vous comprendre ; voulez-vous dire que _____ ou bien que _____ ?
                • - -
                • De quelle manire est-ce en relation avec notre problme/discussion ?
                • - -
                • Jeanne, pouvez-vous rŽsumer avec vos propres termes ce qui Pierre a dit ? ... Pierre, est-ce ce que vous avez voulu dire ?
                • - -
                • Pourriez-vous me donner un exemple ?
                • - -
                • Est-ce que ceci conviendrait comme exemple : _____ ?
                • - +
                • Qu'entendez vous par _____ ?
                • +
                • Quelle est votre difficulté principale ?
                • +
                • Quel est le lien entre _____ et _____ ? +
                • Vous est-il possible de reformuler ?
                • +
                • Je ne suis pas sûr de bien vous comprendre ; voulez-vous dire que _____ ou bien que _____ ?
                • +
                • De quelle manière est-ce en relation avec notre problème/discussion ?
                • +
                • Jeanne, pouvez-vous résumer avec vos propres termes ce qui Pierre a dit ? ... Pierre, est-ce ce que vous avez voulu dire ?
                • +
                • Pourriez-vous me donner un exemple ?
                • +
                • Est-ce que ceci conviendrait comme exemple : _____ ?
                - -

                Questions sur les hypothses

                - +

                Questions sur les hypothèses

                  - -
                • Que supposez-vous ?
                • - -
                • Que suppose Jeanne ?
                • - -
                • Quelle supposition pourrions-nous faire ˆ la place ?
                • - -
                • Il semble que vous supposez que _____. Est-ce que je vous comprends correctement?
                • - -
                • Tout votre raisonnement dŽpend de l'idŽe que _____. Pourquoi avez-vous basŽ votre raisonnement sur _____ plut™t que sur _____?
                • - -
                • Il semble que vous supposez que _____. Qu'est-ce qui vous fait penser que c'est vrai ?
                • - -
                • Is that always the case? Why do you think the assumption holds here?
                • - -
                • Pourquoi pourrait-on faire une telle supposition ?
                • - +
                • Que supposez-vous ?
                • +
                • Que suppose Jeanne ?
                • +
                • Quelle supposition pourrions-nous faire à la place ?
                • +
                • Il semble que vous supposez que _____. Est-ce que je vous comprends correctement?
                • +
                • Tout votre raisonnement dépend de l'idée que _____. Pourquoi avez-vous basé votre raisonnement sur _____ plutôt que sur _____?
                • +
                • Il semble que vous supposez que _____. Qu'est-ce qui vous fait penser que c'est vrai ?
                • +
                • Is that always the case? Why do you think the assumption holds here?
                • +
                • Pourquoi pourrait-on faire une telle supposition ?
                -

                Questions sur les raisons et les preuves

                -
                  - -
                • Pouvez-vous nous expliquer vos raisons ?
                • - -
                • Comment ceci s'applique ˆ notre cas ?
                • - -
                • Y a-t-il une raison de douter de cet argument ?
                • - -
                • Qui pourrait savoir si cela est vrai ?
                • - -
                • Que pourriez-vous rŽpondre ˆ une personne qui dit que ____?
                • - -
                • Quelqu'un d'autre peut-il donner un argument qui conforte cette opinion ?
                • - -
                • Par quel raisonnement tes-vous arriver ˆ cette conclusison ?
                • - -
                • Comment pourriez-vous dŽcouvrir si cela est vrai ?
                • - +
                • Pouvez-vous nous expliquer vos raisons ?
                • +
                • Comment ceci s'applique à notre cas ?
                • +
                • Y a-t-il une raison de douter de cet argument ?
                • +
                • Qui pourrait savoir si cela est vrai ?
                • +
                • Que pourriez-vous répondre à une personne qui dit que ____?
                • +
                • Quelqu'un d'autre peut-il donner un argument qui conforte cette opinion ?
                • +
                • Par quel raisonnement êtes-vous arriver à cette conclusison ?
                • +
                • Comment pourriez-vous découvrir si cela est vrai ?
                -

                Questions sur les opinions ou les points de vue

                -
                  - -
                • Qu'en concluez-vous ?
                • - -
                • Quand vous dites _____, en concluez-vous que _____?
                • - -
                • Si cela se passait, quelles en seraient les consŽquences ? Pourquoi ?
                • - -
                • Quel effet cela pourrait-il avoir ?
                • - -
                • Est-ce que ceci surviendrait nŽcessairement ou seulement probablement/peut-tre ?
                • - -
                • Y a-t-il une alternative ?
                • - -
                • Si _____ et _____ sont avŽrŽs, qu'est-ce qui pourrait aussi tre vrai ?
                • - -
                • Si l'on dit que ce ____ est Žthique, qu'en est-il de _____?
                • - +
                • Qu'en concluez-vous ?
                • +
                • Quand vous dites _____, en concluez-vous que _____?
                • +
                • Si cela se passait, quelles en seraient les conséquences ? Pourquoi ?
                • +
                • Quel effet cela pourrait-il avoir ?
                • +
                • Est-ce que ceci surviendrait nécessairement ou seulement probablement/peut-être ?
                • +
                • Y a-t-il une alternative ?
                • +
                • Si _____ et _____ sont avérés, qu'est-ce qui pourrait aussi être vrai ?
                • +
                • Si l'on dit que ce ____ est éthique, qu'en est-il de _____?
                • +
                +

                Questions sur les implications et des conséquences

                +
                  +
                • Comment peut-on découvrir que _____ ?
                • +
                • Dans cette question, quelle supposition fait-on ?
                • +
                • Est-ce que _____ poserait cette question différemment ?
                • +
                • Comment pourrait-on améliorer cette question ?
                • +
                • Pouvons-nous entièrement décomposer cette question ?
                • +
                • Cette question est-elle claire ? Est-ce que nous la comprenons ?
                • +
                • Est-il facile ou difficile de répondre à cette question ? Pourquoi ?
                • +
                • Sommes-nous tous d'accord que c'est là la question ?
                • +
                • Avant de répondre à cette question, à quelles autres questions devrions-nous répondre d'abord ?
                • +
                • Comment _____ exposerait ce sujet ?
                • +
                • Pourquoi ce sujet est-il important ?
                • +
                • Est-ce la question la plus importante, ou y a-t-il une question sous-jacente ?
                • +
                • Pouvez-vous voir en quoi cela pourrait être lié à ________ ?
                -

                Questions sur les implications et des consŽquences

                - -
                  - -
                • Comment peut-on dŽcouvrir que _____ ?
                • - -
                • Dans cette question, quelle supposition fait-on ?
                • - -
                • Est-ce que _____ poserait cette question diffŽremment ?
                • - -
                • Comment pourrait-on amŽliorer cette question ?
                • - -
                • Pouvons-nous entirement dŽcomposer cette question ?
                • - -
                • Cette question est-elle claire ? Est-ce que nous la comprenons ?
                • - -
                • Est-il facile ou difficile de rŽpondre ˆ cette question ? Pourquoi ?
                • - -
                • Sommes-nous tous d'accord que c'est lˆ la question ?
                • - -
                • Avant de rŽpondre ˆ cette question, ˆ quelles autres questions devrions-nous rŽpondre d'abord ?
                • - -
                • Comment _____ exposerait ce sujet ?
                • - -
                • Pourquoi ce sujet est-il important ?
                • - -
                • Est-ce la question la plus importante, ou y a-t-il une question sous-jacente ?
                • - -
                • Pouvez-vous voir en quoi cela pourrait tre liŽ ˆ ________ ?
                • - -
                - -
                - -Questions adaptŽes de Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA. - -

                Plus d'informations sur l'Žcriture de textes

                +
                +Questions adaptées de from Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA. +

                Plus d'informations sur l'écriture de textes

                Plus d'informations sur la lecture de textes

                \ No newline at end of file diff --git a/lang/fr/help/quiz/attempts.html b/lang/fr/help/quiz/attempts.html index 6804a4a32a0..ccc919a9e51 100755 --- a/lang/fr/help/quiz/attempts.html +++ b/lang/fr/help/quiz/attempts.html @@ -1,7 +1,6 @@ - +

                Tentatives multiples pour effectuer un test

                -

                Tentatives multiples pour effectuer un test

                +

                On peut permettre aux étudiants d'effectuer un test à plusieurs reprises.

                -

                On peut permettre aux étudiants d'effectuer un test à plusieurs reprises.

                - -

                Le test s'intègre alors dans un processus d'évaluation formative qui favorise l'apprentissage chez les étudiants.

                +

                Le test s'intègre alors dans un processus d'évaluation formative qui favorise +l'apprentissage chez les étudiants.

                diff --git a/lang/fr/help/quiz/categories.html b/lang/fr/help/quiz/categories.html index 1e372ccbe75..f1c86f06e12 100755 --- a/lang/fr/help/quiz/categories.html +++ b/lang/fr/help/quiz/categories.html @@ -1,27 +1,15 @@ -

                Catégories de questions

                +

                Catégories de questions

                -

                Plutôt que de conserver toutes vos questions dans une seule grande liste, vous pouvez créer des catégories pour les gérer plus facilement. Vous construirez ainsi une banque de questions classées en plusieurs catégories, où chaque question peut être utilisée plusieurs fois dans des tests différents.

                +

                Plutôt que de conserver toutes vos questions dans une seule grande liste, vous pouvez créer des catégories pour les gérer plus facilement. Vous construirez ainsi une banque de questions classée en plusieurs catégories, où chaque question peut être utilisée plusieurs fois dans des tests différents.

                -

                Vous devez donner un nom à chaque catégorie et fournir une courte description. Vous pouvez créer autant de catégories que vous le désirez. Vous pouvez aussi en supprimer, mais si la catégorie que vous désirez effacer contient des questions, alors vous devrez indiquer une catégorie où celles-ci doivent être déplacées.

                +

                Vous devez donner un nom à chaque catégorie et fournir une courte description. Vous pouvez créer autant de catégories que vous le désirez. Vous pouvez aussi en supprimer, mais si la catégorie que vous désirez effacer contient des questions, alors vous devrez indiquer une catégorie où celles-ci doivent être déplacées.

                -

                Vous pouvez également arranger hiérarchiquement les catégories, pour une gestion facilitée des questions. Le champ « Déplacer la catégorie vers » vous permet de déplacer une catégorie dans une autre.

                +

                Chaque catégorie peut être également publiée. La catégorie et toutes ses questions sont alors disponibles dans tous les cours de votre serveur Moodle, de sorte que d'autres enseignants pourront employer vos questions dans leurs cours. Toutefois, il est fortement recommandé d'utiliser cette option avec parcimonie, car les catégories que vous aurez publiées seront dans toutes les listes de catégories de tous les cours ! Supposons que 30 enseignants décident de publier seulement deux catégories chacun, cela fait un total de 60 catégories qui s'ajoutent aux catégories privées de chaque enseignant... On recommande donc les façons de faire suivantes :

                -

                En cliquant sur les flèches du champ « Ordre », vous pouvez modifier l'ordre d'affichage des catégories.

                +
                • Les catégories de questions ne devraient pas être systématiquement publiées.
                • On publie une catégorie pour un temps très court, par exemple, pour quelques heures ou pour quelques jours, le temps que les autres enseignants puissent récupérer vos questions (on avise les enseignants concernés de faire vite !). Ensuite, on réactive l'attribut privé de la catégorie.
                • Le nom de la catégorie devrait être court de façon à ce que l'affichage de la page où se fait l'édition des tests puisse tenir sur un écran.
                -

                Chaque catégorie peut être également « publiée ». La catégorie et toutes ses questions sont alors disponibles dans tous les cours de votre serveur Moodle, de sorte que d'autres enseignants pourront utiliser vos questions dans les tests de leurs cours. Toutefois, il est fortement recommandé d'utiliser cette option avec parcimonie, car les catégories que vous aurez publiées seront dans toutes les listes de catégories de tous les cours ! Supposons que 30 enseignants décident de publier seulement deux catégories chacun, cela fait un total de 60 catégories qui s'ajoutent aux catégories privées de chaque enseignant... On recommande donc les façons de faire suivantes :

                +

                Vous ne pouvez pas modifier les questions tirées d'une catégorie publiée dans un autre cours à moins que vous soyez aussi titulaire de ce cours.

                -
                  - -
                • Les catégories de questions ne devraient pas être systématiquement publiées.
                • - -
                • On publie une catégorie pour un temps très court, par exemple, pour quelques heures ou pour quelques jours, le temps que les autres enseignants puissent récupérer vos questions (on avise les enseignants concernés de faire vite !). Ensuite, on réactive l'attribut privé de la catégorie.
                • - -
                • Le nom de la catégorie devrait être court de façon à ce que l'affichage de la page où se fait l'édition des tests puisse tenir sur un écran.
                • - -
                - -

                Vous ne pouvez pas modifier les questions tirées d'une catégorie publiée dans un autre cours à moins que vous soyez aussi titulaire de ce cours.

                - -

                Les questions tirées d'une catégorie qui a été publiée, mais qui est par la suite devenue privée, sont encore disponibles dans le test où elles ont été utilisées. Les étudiants peuvent donc faire le test sans problème d'accès. L'enseignant peut retirer ces questions du test, mais ne pourra pas les ajouter de nouveau puisque la catégorie sera alors privée.

                \ No newline at end of file +

                Les questions tirées d'une catégorie qui a été publiée, mais qui est par la suite devenue privée, sont encore disponibles dans le test où elles ont été utilisées. Les étudiants peuvent donc faire le test sans problème d'accès. L'enseignant peut retirer ces questions du test, mais ne pourra pas les ajouter de nouveau puisque la catégorie sera alors privée.

                \ No newline at end of file diff --git a/lang/fr/help/quiz/correctanswers.html b/lang/fr/help/quiz/correctanswers.html index abdb380ead1..8076c95bed7 100755 --- a/lang/fr/help/quiz/correctanswers.html +++ b/lang/fr/help/quiz/correctanswers.html @@ -1,5 +1,3 @@ - +

                Afficher les bonnes réponses ?

                -

                Afficher les bonnes réponses ?

                - -

                Si vous avez activé l'affichage des bonnes réponses, alors le résultat du test montrera la bonne réponse pour chaque question. Les bonnes réponses seront surlignées, et donc faciles à identifier.

                \ No newline at end of file +

                Si vous avez activé l'affichage des bonnes réponses, alors le résultat du test montrera la bonne réponse pour chaque question. Les bonnes réponses seront surlignées, et donc faciles à identifier.

                \ No newline at end of file diff --git a/lang/fr/help/quiz/createmultiple.html b/lang/fr/help/quiz/createmultiple.html index f62f25524df..a9b4c7fb329 100755 --- a/lang/fr/help/quiz/createmultiple.html +++ b/lang/fr/help/quiz/createmultiple.html @@ -1,11 +1,23 @@ - - -

                Créer plusieurs questions aléatoires

                - -

                Cette commande vous permet de créer un jeu de questions tirées au hasard dans la catégorie que vous aurez choisie. Cet ensemble peut être ajouté à un test. Vous devez donner le nombre de questions à inclure dans cet ensemble.

                - -

                Vous pouvez ainsi créer un test qui serait entièrement généré au hasard et qui serait différent pour chaque étudiant. Plus le nombre de questions dans la catégorie est grand, plus les tests générés seront différents les uns des autres.

                - -

                Vous pouvez également inclure cet ensemble de questions aléatoires dans un test de façon à ce qu'une partie seulement du test soit aléatoire.

                - -

                Il est important que les questions servant à établir un test construit aléatoirement soient de même niveau.

                +

                Créer plusieurs questions +aléatoires

                + +

                Cette commande vous permet de créer un jeu de questions +tirées au hasard dans la catégorie que vous aurez +choisie. Cet ensemble peut être ajouté à un +test. Vous devez donner le nombre de questions à +inclure dans cet ensemble.

                + +

                Vous pouvez ainsi créer un test qui serait +entièrement généré au hasard et qui +serait différent pour chaque étudiant. Plus le +nombre de questions dans la catégorie est grand, plus les +tests générés seront +différents les uns des autres.

                + +

                Vous pouvez également inclure cet ensemble de questions +aléatoires dans un test de façon à +ce qu'une partie seulement du test soit aléatoire.

                + +

                Il est important que les questions servant à +établir un test construit aléatoirement +soient de même niveau.

                diff --git a/lang/fr/help/quiz/description.html b/lang/fr/help/quiz/description.html index acaa2d08f54..af78b78a3a4 100755 --- a/lang/fr/help/quiz/description.html +++ b/lang/fr/help/quiz/description.html @@ -1,8 +1,9 @@ - - -

                Description

                - -

                Ce type n'est pas vraiment une question.

                - -

                Il permet d'afficher un bloc de texte à l'intérieur d'un test sans que l'étudiant ait à répondre quoi que ce soit. On peut l'utiliser pour donner des directives pour les questions qui suivent.

                - +

                Description

                + +

                Ce type n'est pas vraiment une question.

                + +

                Il permet d'afficher un bloc de texte à +l'intérieur d'un test sans que l'étudiant +ait à répondre quoi que ce soit. On peut l'utiliser +pour donner des directives pour les questions qui suivent.

                + diff --git a/lang/fr/help/quiz/discrimination.html b/lang/fr/help/quiz/discrimination.html index 331da589d49..d9eafcf4337 100755 --- a/lang/fr/help/quiz/discrimination.html +++ b/lang/fr/help/quiz/discrimination.html @@ -1,11 +1,27 @@ - +

                Index de discrimination

                -

                Index de discrimination

                +

                Cet index fournit un indicateur de la performance sur chaque +élément du test. Il est calculé en comptant +pour chaque question le nombre d'étudiants dont le +résultat est dans le premier tiers, divisé par le +nombre des étudiants est dans le dernier tiers.

                -

                Cet index fournit un indicateur de la performance sur chaque élément du test. Il est calculé en comptant pour chaque question le nombre d'étudiants dont le résultat est dans le premier tiers, divisé par le nombre des étudiants est dans le dernier tiers.

                +

                Par exemple, si 30 étudiants ont fait le test, il y a +10 étudiants dans le premier et dans le dernier tiers. Si +à la 1ère question 9 des meilleurs étudiants +ont répondu correctement et seulement 3 parmi les plus +faibles, l'index de discrimination de cette question est de 9/3 = +3.0. Les nombres entre parenthèses sont le +numérateur et le dénominateur de ce rapport).

                -

                Par exemple, si 30 étudiants ont fait le test, il y a 10 étudiants dans le premier et dans le dernier tiers. Si à la 1ère question 9 des meilleurs étudiants ont répondu correctement et seulement 3 parmi les plus faibles, l'index de discrimination de cette question est de 9/3 = 3.0. Les nombres entre parenthèses sont le numérateur et le dénominateur de ce rapport).

                +

                Lorsque l'index est inférieur à 1.0, cela +signifie qu'une plus grande proportion d'étudiants faibles +que d'étudiants forts ont obtenu la bonne réponse. +De telles questions devraient être retirées. Elles +réduisent en fait la fiabilité des résultats +globaux du test.

                -

                Lorsque l'index est inférieur à 1.0, cela signifie qu'une plus grande proportion d'étudiants faibles que d'étudiants forts ont obtenu la bonne réponse. De telles questions devraient être retirées. Elles réduisent en fait la fiabilité des résultats globaux du test.

                - -

                Si aucun étudiant parmi le tiers faible n'a obtenu la bonne réponse, le dénominateur est nul et le rapport serait infini. Le résultat retourné par Moodle dans un tel cas est 10.

                \ No newline at end of file +

                Si aucun étudiants parmi le tiers faible n'a obtenu la +bonne réponse, le dénominateur est nul et le +rapport serait infini. Le résultat retourné par +Moodle dans un tel cas est 10.

                \ No newline at end of file diff --git a/lang/fr/help/quiz/export.html b/lang/fr/help/quiz/export.html index de054d668b8..7d363405a2e 100644 --- a/lang/fr/help/quiz/export.html +++ b/lang/fr/help/quiz/export.html @@ -1,48 +1,30 @@ -

                Exporter les questions d'une catégorie

                +

                Exporter les questions d'une catégorie

                -

                Cette fonction vous permet d'exporter la totalité des questions d'une catégorie vers un fichier texte.

                +

                Cette fonction vous permet d'exporter la totalité des questions d'une catégorie vers un fichier texte.

                -

                Veuillez toutefois noter que pour certains formats de questions, lors de l'exportation, des informations sont perdues, car ces formats ne permettent pas toutes les possibilités offertes par Moodle dans les tests. Il faut donc s'attendre à des différences lors de l'exportation et de la réimportation de questions dans Moodle. Certains types de questions ne pourront pas du tout être exportés. Nous vous conseillons de vérifier les données exportées avant de les utiliser dans un environnement de production.

                +

                Veuillez toutefois noter que pour certains formats de questions, lors de l'exportation, des informations sont perdues, car ces formats ne permettent pas toutes les possibilités offertes par Moodle dans les tests. Il faut donc s'attendre à des différences lors de l'exportation et de la réimportation de questions dans Moodle. Certains types de questions ne pourront pas du tout être exportés. Nous vous conseillons de vérifier les données exportées avant de les utiliser dans un environnement de production.

                -

                Le seul format supporté pour l'instant est :

                +

                Le seul format supporté pour l'instant est :

                -

                Format GIFT

                +

                Format GIFT

                  -

                  Le format GIFT est le format le plus complet disponible pour l'importation et l'exportation de questions de tests dans Moodle. Il a été conçu pour permettre aux enseignants d'écrire facilement des questions dans un fichier texte. Il supporte les questions à Choix multiples, Vrai-Faux, à Réponse courte, d'Appariement, Numériques, ainsi que l'insertion de _____ pour le format Mot manquant. Il est à noter que le format Cloze n'est actuellement pas supporté. Les différents types de questions peuvent être mélangés dans un même fichier texte, et le format permet en outre des lignes de commentaires, des noms pour les questions, les feedbacks et les notes pondérées (en %). Voici quelques exemples :

                  +

                  Le format GIFT est le format le plus complet disponible pour l'importation et l'exportation de questions de tests dans Moodle. Il a été conçu pour permettre aux enseignants d'écrire facilement des questions dans un fichier texte. Il supporte les questions à Choix multiples, Vrai-Faux, à Réponse courte, d'Appariement, Numériques, ainsi que l'insertion de _____ pour le format Mot manquant. Il est à noter que le format Cloze n'est actuellement pas supporté. Les différents types de questions peuvent être mélangés dans un même fichier texte, et le format permet en outre des lignes de commentaires, des noms pour les questions, les feedbacks et les notes pondérées (en %). Voici quelques exemples :

                  -Quelle était la couleur de la jument blanche de Napoléon ?{~Verte ~Noire =Blanche}
                  +Quelle était la couleur de la jument blanche de Napoléon ?{~Verte ~Noire =Blanche}
                   
                  -La monture de Napoléon était {=une jument ~un étalon ~un mulet}.
                  +La monture de Napoléon était {=une jument ~un étalon ~un mulet}.
                   
                  -La jument de Napoléon était verte.{FALSE}
                  +La jument de Napoléon était verte.{FALSE}
                   
                  -Quelle était la nationalité de Napoléon ?{=Corse =Française}
                  +Quelle était la nationalité de Napoléon ?{=Corse =Française}
                   
                  -En quelle année Napoléon est-il mort ?{#1821}
                  +En quelle année Napoléon est-il mort ?{#1821}
                   
                  -

                  Plus d'informations sur le format GIFT

                  +

                  Plus d'informations sur le format GIFT

                -

                Format XML Moodle

                - -
                  - -

                  Ce format spécifique à Moodle exporte les questions des tests dans un format XML simple. Les questions peuvent ensuite être importées dans une autre catégorie, ou être utilisées par un autre programme, par exemple une transformation XSLT.

                  - -
                - -

                Format IMS QTI

                - - - -

                D'autres formats seront bientôt disponibles pour l'exportation, notamment WebCT et tout ceux que les utilisateurs de Moodle pourront apporter !

                \ No newline at end of file +

                D'autres formats seront bientôt disponibles pour l'exportation, notamment WebCT, IMS QTI et tout ceux que les utilisateurs de Moodle pourront apporter !

                diff --git a/lang/fr/help/quiz/feedback.html b/lang/fr/help/quiz/feedback.html index 9f793692e03..e6425c676e6 100755 --- a/lang/fr/help/quiz/feedback.html +++ b/lang/fr/help/quiz/feedback.html @@ -1,8 +1,9 @@ - +

                Feedback

                -

                Feedback

                - -

                Si vous avez activé l'affichage des feedbacks dans un test, les étudiants recevront alors un commentaire que vous avez saisi pour chaque réponse à chaque question, que la réponse soit bonne ou mauvaise.

                +

                Si vous avez activé l'affichage des feedbacks dans un +test, les étudiants recevront alors un commentaire que +vous avez saisi pour chaque réponse à chaque +question, que la réponse soit bonne ou mauvaise.

                diff --git a/lang/fr/help/quiz/formataiken.html b/lang/fr/help/quiz/formataiken.html index 1cb92a0cc1c..bf323e7b875 100644 --- a/lang/fr/help/quiz/formataiken.html +++ b/lang/fr/help/quiz/formataiken.html @@ -1,15 +1,16 @@ - - -

                Importer des fichiers en format « Aiken »

                - -

                Le format Aiken fournit une manière très simple de créer des questions à choix multiples dans un format facile à lire. Voici un exemple de ce format :

                +

                Importer des fichiers en format +« Aiken »

                +

                Le format Aiken fournit une manière très simple +de créer des questions à choix multiples dans un +format facile à lire. Voici un exemple de ce +format :

                -Quelle est la réponse correcte à cette question ?
                +Quelle est la réponse correcte à cette question ?
                 A. Celle-ci ?
                -B. Peut-être cette réponse ?
                +B. Peut-être cette réponse ?
                 C. Ou celle-ci ?
                -D. Voilà la bonne !
                +D. Voilà la bonne !
                 ANSWER: D
                 
                 Lequel de ces logiciels permet l'importation des tests dans le plus de formats ?
                @@ -24,6 +25,12 @@ ANSWER: A
                 
                 

                La question doit figurer sur une seule ligne.

                -

                Chaque réponse doit commencer par un caractère unique, suivi d'un point « . » ou d'une parenthèse fermante « ) », puis d'un espace.

                +

                Chaque réponse doit commencer par un caractère +unique, suivi d'un point « . » ou d'une +parenthèse fermante « ) », puis d'un +espace.

                -

                La ligne de la bonne réponse doit suivre immédiatement (sans ligne vide). Elle commence par « ANSWER: », suivie de la lettre adéquate.

                +

                La ligne de la bonne réponse doit suivre +immédiatement (sans ligne vide). Elle commence par +« ANSWER: », suivie de la lettre +adéquate.

                diff --git a/lang/fr/help/quiz/formatblackboard.html b/lang/fr/help/quiz/formatblackboard.html index b2851e62542..ed914b0fd56 100755 --- a/lang/fr/help/quiz/formatblackboard.html +++ b/lang/fr/help/quiz/formatblackboard.html @@ -1,5 +1,5 @@ - +

                Importation de questions en format +« Blackboard »

                -

                Importation de questions en format « Blackboard »

                - -

                La documentation de cette option n'est pas encore disponible.

                \ No newline at end of file +

                La documentation de cette option n'est pas encore +disponible.

                \ No newline at end of file diff --git a/lang/fr/help/quiz/formatctm.html b/lang/fr/help/quiz/formatctm.html index 71bc5ee3500..c136b8f1742 100755 --- a/lang/fr/help/quiz/formatctm.html +++ b/lang/fr/help/quiz/formatctm.html @@ -1,53 +1,53 @@ -

                Importer des fichiers « Course Test Manager »

                +

                Importer des fichiers « Course Test Manager »

                -

                Course Test Manager est un logiciel en fin de vie de l'entreprise Course Technology. Il n'est plus développé, car il a été remplacé par un autre produit appelé ExamView. Cependant aucun moyen n'a mis été à disposition pour permettre de transférer les tests CTM vers d'autres format de tests. C'est la raison d'être de ce module.

                +

                Course Test Manager est un logiciel en fin de vie de l'entreprise Course Technology. Il n'est plus développé, car il a été remplacé par un autre produit appelé ExamView. Cependant aucun moyen n'a mis été à disposition pour permettre de transférer les tests CTM vers d'autres format de tests. C'est la raison d'être de ce module.

                -

                Pour importer des questions depuis CTM, votre machine Windows doit avoir CTM installé et avoir accès aux fichiers de données MS Access sur cette machine. Deux fichiers de données sont requis :

                +

                Pour importer des questions depuis CTM, votre machine Windows doit avoir CTM installé et avoir accès aux fichiers de données MS Access sur cette machine. Deux fichiers de données sont requis :

                  -
                • System.mda - ce fichier est situé dans le dossier principal de votre installation de CTM. Dans le jargon de MS access, il est nommé la « System Database ».
                • +
                • System.mda - ce fichier est situé dans le dossier principal de votre installation de CTM. Dans le jargon de MS access, il est nommé la « System Database ».
                • -
                • ctm.mdb - c'est la base de données contenant les questions. Il y a une telle base de données pour chaque cours installé dans CTM. Ce fichier est situé dans un dossier au niveau immédiatement inférieur de votre dossier CTM.
                • +
                • ctm.mdb - c'est la base de données contenant les questions. Il y a une telle base de données pour chaque cours installé dans CTM. Ce fichier est situé dans un dossier au niveau immédiatement inférieur de votre dossier CTM.
                -

                Le processus d'importation est quelque peu différent, selon que vous utilisez Moodle sous Windows ou Linux. Dans tous les cas, il vous faudra une machine Windows (Windows 200 ou XP) sur le même réseau que votre machine Moodle pour héberger les bases de données Access durant l'importation des questions.

                +

                Le processus d'importation est quelque peu différent, selon que vous utilisez Moodle sous Windows ou Linux. Dans tous les cas, il vous faudra une machine Windows (Windows 200 ou XP) sur le même réseau que votre machine Moodle pour héberger les bases de données Access durant l'importation des questions.

                -

                L'importation sera plus facile sur un Moodle tournant sous Windows. Les étapes sont les suivantes :

                +

                L'importation sera plus facile sur un Moodle tournant sous Windows. Les étapes sont les suivantes :

                  -
                1. Déposer le fichier system.mda dans Moodle à l'aide du gestionnaire de fichiers, dans n'importe quel cours. Moodle le trouvera de toute façon.
                2. +
                3. Déposer le fichier system.mda dans Moodle à l'aide du gestionnaire de fichiers, dans n'importe quel cours. Moodle le trouvera de toute façon.
                4. -
                5. Créer un nouveau test et sélectionnez « Importer les questions d'un fichier ». Choisissez votre fichier ctm.mdb comme fichier à télécharger. Si vous n'abez pas fait d'erreurs, une page s'affichera vous demandant de choisir la sous-catégorie des questions à importer de la base de données. Cette étape est nécessaire, car bon nombre de tests CTM comportent beaucoup de questions en différentes catégories.
                6. +
                7. Créer un nouveau test et sélectionnez « Importer les questions d'un fichier ». Choisissez votre fichier ctm.mdb comme fichier à télécharger. Si vous n'abez pas fait d'erreurs, une page s'affichera vous demandant de choisir la sous-catégorie des questions à importer de la base de données. Cette étape est nécessaire, car bon nombre de tests CTM comportent beaucoup de questions en différentes catégories.
                -

                L'importation sur un Moodle tournant sous Linux requiert un logiciel supplémentaire appelé ODBC Socket Server. Afin d'importer des questions CTM sur Linux, vous devez d'abord télécharger et installer ce petit programme sur le système Windows hébergeant les bases de données CTM. Ne suivez pas les instructions d'installation données dans ODBC Socket Server Installation. Elles sont plus compliquées que nécessaires ! Suivez plutôt les étapes suivantes :

                +

                L'importation sur un Moodle tournant sous Linux requiert un logiciel supplémentaire appelé ODBC Socket Server. Afin d'importer des questions CTM sur Linux, vous devez d'abord télécharger et installer ce petit programme sur le système Windows hébergeant les bases de données CTM. Ne suivez pas les instructions d'installation données dans ODBC Socket Server Installation. Elles sont plus compliquées que nécessaires ! Suivez plutôt les étapes suivantes :

                  -
                1. Décompactez et installez sur la machine Windows le fichier que vous avez téléchargé sur ce site.
                2. +
                3. Décompactez et installez sur la machine Windows le fichier que vous avez téléchargé sur ce site.
                4. -
                5. Copier l'exécutable ODBCSocketServer.exe dans un dossier, par exemple votre dossier système (vraisemblablement C:\WINNT\ ou C:\Windows) ou dans votre dossier Program Files.
                6. +
                7. Copier l'exécutable ODBCSocketServer.exe dans un dossier, par exemple votre dossier système (vraisemblablement C:\WINNT\ ou C:\Windows) ou dans votre dossier Program Files.
                8. -
                9. Installez le ODBC Socket Server comme un Service sur le système Windows avec la commande :
                  +
                10. Installez le ODBC Socket Server comme un Service sur le système Windows avec la commande :
                  -ODBCSocketServer.exe /Service
                  +<chemin du fichier ci-dessus>ODBCSocketServer.exe /Service
                  -Vous pouvez faire cela en tapant la commande depuis le menu Démarrer->Commande... ou une fenêtre terminal.
                11. +Vous pouvez faire cela en tapant la commande depuis le menu Démarrer->Commande... ou une fenêtre terminal. -
                12. Ouvrez le Service Manager soit depuis le menu Démarrer->Settings->Control Panels->Administrative Tools->Services ou en cliquant avec le bouton droit de la souris sur Mon ordinateur, en sélectionnant Administrer, puis en choisissant Services et Applications->Services. Le Gestionnaire de Services est aussi accessible en tapant services.msc depuis le menu Démarrer->Commande...
                13. +
                14. Ouvrez le Service Manager soit depuis le menu Démarrer->Settings->Control Panels->Administrative Tools->Services ou en cliquant avec le bouton droit de la souris sur Mon ordinateur, en sélectionnant Administrer, puis en choisissant Services et Applications->Services. Le Gestionnaire de Services est aussi accessible en tapant services.msc depuis le menu Démarrer->Commande...
                15. -
                16. Dans le Gestionnaire de Services, cliquez avec le bouton droit de la souris sur ODBC Socket Server et sélectionnez « Démarrer ». Le statut devrait changer en indiquant que le service a démarré. Après l'importation, vous pourrez arrêter ou désactiver complètement ce service.
                17. +
                18. Dans le Gestionnaire de Services, cliquez avec le bouton droit de la souris sur ODBC Socket Server et sélectionnez « Démarrer ». Le statut devrait changer en indiquant que le service a démarré. Après l'importation, vous pourrez arrêter ou désactiver complètement ce service.
                19. -
                20. Assurez-vous que les fichiers system.mda et ctm.mdb sont bien sur la machine et que le pilote MS Access ODBC est installé (c'est le cas dans une installation standard de Windows). Vous pouvez vérifier cela en ouvrant « Sources de données » dans les Outils d'Administration, sur l'onglet « Pilotes ». Vous allez devoir indiquer où CTM est installé et l'endroit où sont les fichiers system.mda et ctm.mdb ou d'autres bases de données que vous désirez importer. Prenez note des chemins d'accès complets de ces fichiers, ainsi que de l'adresse IP ou du nom de cette machine Windows. Ces informations seront utilisées lors de l'importation.
                21. +
                22. Assurez-vous que les fichiers system.mda et ctm.mdb sont bien sur la machine et que le pilote MS Access ODBC est installé (c'est le cas dans une installation standard de Windows). Vous pouvez vérifier cela en ouvrant « Sources de données » dans les Outils d'Administration, sur l'onglet « Pilotes ». Vous allez devoir indiquer où CTM est installé et l'endroit où sont les fichiers system.mda et ctm.mdb ou d'autres bases de données que vous désirez importer. Prenez note des chemins d'accès complets de ces fichiers, ainsi que de l'adresse IP ou du nom de cette machine Windows. Ces informations seront utilisées lors de l'importation.
                23. -
                24. Vous pouvez maintenant importer les questions désirées dans Moodle. Créer un nouveau test et sélectionnez « Importer les questions d'un fichier ». À PARTIR D'ICI, LE PROCESSUS EST DIFFÉRENT SOUS LINUX - VOUS DEVEZ SPÉCIFIER UN NOM DE FICHIER BIDON POUR DÉMARRER LE PROCESSUS D'IMPORTATION. CE FICHIER BIDON NE SERA EN FAIT PAS IMPORTÉ, IL S'AGIT SEULEMENT D'UN EMPLACEMENT QUI VOUS PERMETTRA DE SPÉCIFIER LES INFORMATIONS DU SERVEUR WINDOWS. Une page s'affichera ensuite où vous pouvez taper l'adresse IP ou le nom du serveur Windows ainsi que les chemins des différents fichiers que vous avez relevés à l'étape précédente. Tapez ces informations et cliquez sur « Connexion au serveur ». Si aucune erreur n'a été faite, un autre formulaire vous permettra de choisir la sous-catégorie des questions à importer de la base de données. Cette étape est nécessaire, car bon nombre de tests CTM comportent beaucoup de questions en différentes catégories. SI VOUS ARRIVEZ ICI SANS MESSAGE D'ERREUR, VOTRE SERVEUR EST CONFIGURÉ CORRECTEMENT ET VOUS COMMENCEZ À IMPORTER DES QUESTIONS DANS MOODLE !
                25. +
                26. Vous pouvez maintenant importer les questions désirées dans Moodle. Créer un nouveau test et sélectionnez « Importer les questions d'un fichier ». À PARTIR D'ICI LE PROCESSUS EST DIFFÉRENT SOUS LINUX - VOUS DEVEZ SPÉCIFIER UN NOM DE FICHIER BIDON POUR DÉMARRER LE PROCESSUS D'IMPORTATION. CE FICHIER BIDON NE SERA EN FAIT PAS IMPORTÉ, IL S'AGIT SEULEMENT D'UN EMPLACEMENT QUI VOUS PERMETTRA DE SPÉCIFIER LES INFORMATIONS DU SERVEUR WINDOWS. Une page s'affichera ensuite où vous pouvez taper l'adresse IP ou le nom du serveur Windows ainsi que les chemins des différents fichiers que vous avez relevés à l'étape précédente. Tapez ces informations et cliquez sur « Connexion au serveur ». Si aucune erreur n'a été faite, un autre formulaire vous permettra de choisir la sous-catégorie des questions à importer de la base de données. Cette étape est nécessaire, car bon nombre de tests CTM comportent beaucoup de questions en différentes catégories. SI VOUS ARRIVEZ ICI SANS MESSAGE D'ERREUR, VOTRE SERVEUR EST CONFIGURÉ CORRECTEMENT ET VOUS COMMENCEZ À IMPORTER DES QUESTIONS DANS MOODLE !
                -

                Si vous avez obtenu des messages d'erreur durant ce processus, les informations suivantes vous seront peut-être utiles. Le serveur ODBC Socket utilise le port 9628 et échange une requête XML avec une table de résultats à la requête XML. La classe d'importation balaie ce XML et l'utilise comme un requête locale pour effectuer l'importation.

                \ No newline at end of file +

                Si vous avez obtenu des messages d'erreur durant ce processus, les informations suivantes vous seront peut-être utiles. Le serveur ODBC Socket utilise le port 9628 et échange une requête XML avec une table de résultats à la requête XML. La classe d'importation balaie ce XML et l'utilise comme un requête locale pour effectuer l'importation.

                \ No newline at end of file diff --git a/lang/fr/help/quiz/formatcustom.html b/lang/fr/help/quiz/formatcustom.html index 33c4db38911..9bf3020fe4a 100755 --- a/lang/fr/help/quiz/formatcustom.html +++ b/lang/fr/help/quiz/formatcustom.html @@ -1,5 +1,5 @@ - +

                Importation de questions en format +personnalisé

                -

                Importation de questions en format personnalisé

                - -

                La documentation sur cette option n'est pas encore disponible.

                \ No newline at end of file +

                La documentation sur cette option n'est pas encore +disponible.

                \ No newline at end of file diff --git a/lang/fr/help/quiz/formatgift.html b/lang/fr/help/quiz/formatgift.html index 8a2cfb803d2..2deb8cae333 100644 --- a/lang/fr/help/quiz/formatgift.html +++ b/lang/fr/help/quiz/formatgift.html @@ -1,24 +1,22 @@ - +

                Importer des fichiers en format « GIFT »

                -

                Importer des fichiers en format « GIFT »

                - -

                Le format GIFT est le format le plus exhaustif pour l'importation de questions dans le module de tests de Moodle. Il permet l'importation de questions à Choix multiples, Vrai/Faux, à Réponses courtes, d'Appariement et Numériques, ainsi que l'insertion de _____ pour le format « Mot manquant ». Les différents types de questions peuvent être mélangés dans un seul fichier texte. Le format permet également l'insertion de commentaires, titres de questions, feedbacks et de coefficients.

                +

                Le format GIFT est le format le plus exhaustif pour l'importation de questions dans le module de tests de Moodle. Il permet l'importation de questions à Choix multiples, Vrai/Faux, à Réponses courtes, d'Appariement et Numériques, ainsi que l'insertion de _____ pour le format « Mot manquant ». Les différents types de questions peuvent être mélangés dans un seul fichier texte. Le format permet également l'insertion de commentaires, titres de questions, feedbacks et de coefficients.

                Types de questions

                -

                À Choix multiples

                +

                À Choix multiples

                -

                Pour les questions à choix multiples, les mauvaises réponses sont préfixées d'un tilde (~) et la réponse correcte d'un signe égal (=).

                +

                Pour les questions à choix multiples, les mauvaises réponses sont préfixées d'un tilde (~) et la réponse correcte d'un signe égal (=).

                     Who's buried in Grant's tomb?{~Grant ~Jefferson =no one}
                -

                Le format Mot manquant insère automatiquement une ligne à compléter (comme cela _____) au milieu du texte. Pour obtenir ce résultat, placez les réponses là où vous voulez que la ligne apparaisse. Les signes _____ ne sont insérés que si les réponses sont placées avant la ponctuation finale.

                +

                Le format Mot manquant insère automatiquement une ligne à compléter (comme cela _____) au milieu du texte. Pour obtenir ce résultat, placez les réponses là où vous voulez que la ligne apparaisse. Les signes _____ ne sont insérés que si les réponses sont placées avant la ponctuation finale.

                     Grant is {~buried =entombed ~living} in Grant's tomb.
                -

                Tous les types de questions permettent ce format Mot manquant.

                +

                Tous les types de questions permettent ce format Mot manquant.

                -

                Une ligne vide (deux retours de chariot) doit séparer les différentes questions. Les réponses peuvent être écrites sur des lignes séparées et même indentées, dans un souci de clarté :

                +

                Une ligne vide (deux retours de chariot) doit séparer les différentes questions. Les réponses peuvent être écrites sur des lignes séparées et même indentées, dans un souci de clarté :

                      The American holiday of Thanksgiving is celebrated on the {
                @@ -34,9 +32,9 @@
                      ~Egypt}
                 
                -

                Réponse courte

                +

                Réponse courte

                -

                Dans ce format, les réponses sont toutes préfixées d'un signe égal (=), indiquant que toutes sont correctes. Les réponses ne peuvent contenir de tilde.

                +

                Dans ce format, les réponses sont toutes préfixées d'un signe égal (=), indiquant que toutes sont correctes. Les réponses ne peuvent contenir de tilde.

                      Who's buried in Grant's tomb?{=no one =nobody}
                @@ -44,11 +42,11 @@
                      Two plus two equals {=four =4}.
                 
                -

                S'il n'y a qu'une seule bonne Réponse courte, elle peut être écrite sans le signe égal, à moins qu'elle ne puisse être confondue avec une question Vrai/Faux.

                +

                S'il n'y a qu'une seule bonne Réponse courte, elle peut être écrite sans le signe égal, à moins qu'elle ne puisse être confondue avec une question Vrai/Faux.

                Vrai/Faux

                -

                La réponse indique ici lequel des énoncés est vrai ou faux. La réponse s'écrit {TRUE} ou {FALSE}, ou de façon abrégée {T} ou {F}.

                +

                La réponse indique ici lequel des énoncés est vrai ou faux. La réponse s'écrit {TRUE} ou {FALSE}, ou de façon abrégée {T} ou {F}.

                      Grant is buried in Grant's tomb.{F}
                @@ -58,7 +56,7 @@
                 
                 

                Appariement

                -

                Les paires correspondantes doivent commencer par un signe égal (=) et sont séparées par le symbole « -> » (sans les guillemets). Il doit y avoir au moins trois paires.

                +

                Les paires correspondantes doivent commencer par un signe égal (=) et sont séparées par le symbole « -> » (sans les guillemets). Il doit y avoir au moins trois paires.

                      Matching Question. {
                @@ -78,9 +76,9 @@
                 

                Les questions d'appariement ne permettent pas les feedbacks, ni les coefficients.

                -

                Numérique

                +

                Numérique

                -

                La réponse d'une question numérique doit commencer par le signe dièze (#). Elle peut contenir une marge d'erreur, écrite immédiatement après la réponse correcte, séparée par un signe deux-points (:). Si par exemple la réponse est située entre 1.5 et 2.5, on écrira {#2:0.5}. Si aucune marge d'erreur n'est spécifiée, elle est assimilée à 0.

                +

                La réponse d'une question numérique doit commencer par le signe dièze (#). Elle peut contenir une marge d'erreur, écrite immédiatement après la réponse correcte, séparée par un signe deux-points (:). Si par exemple la réponse est située entre 1.5 et 2.5, on écrira {#2:0.5}. Si aucune marge d'erreur n'est spécifiée, elle est assimilée à 0.

                     
                      When was Ulysses S. Grant born? {#1822}
                @@ -88,13 +86,13 @@ Les questions d'appariement ne permettent pas les feedbacks, ni les coefficients
                      What is the value of pi (to 3 decimal places)? {#3.1415:0.0005}.
                 
                -

                On peut aussi donner la réponse numérique sous la forme d'un intervalle de la façon suivante : {#minimum..maximum}.

                +

                On peut aussi donner la réponse numérique sous la forme d'un intervalle de la façon suivante : {#minimum..maximum}.

                -     Quelle est la valeur de pi (3 décimales) ? {#3.141..3.142}.
                +     Quelle est la valeur de pi (3 décimales) ? {#3.141..3.142}.
                 
                -

                L'interface graphique (navigateur) de Moodle ne permet pas les réponses numériques multiples, mais le code de Moodle les permet, tout comme le format GIFT. On peut ainsi spécifier différents intervalles numériques, ce qui est particulièrement utile en le combinant avec des coefficients. Si plusieurs réponses numériques sont utilisées, elles doivent être séparées par un signe égal (=), comme les réponses courtes.

                +

                L'interface graphique (navigateur) de Moodle ne permet pas les réponses numériques multiples, mais le code de Moodle les permet, tout comme le format GIFT. On peut ainsi spécifier différents intervalles numériques, ce qui est particulièrement utile en le combinant avec des coefficients. Si plusieurs réponses numériques sont utilisées, elles doivent être séparées par un signe égal (=), comme les réponses courtes.

                      When was Ulysses S. Grant born? {#
                @@ -102,15 +100,15 @@ Les questions d'appariement ne permettent pas les feedbacks, ni les coefficients
                      =%50%1822:2}
                 
                -

                Comme l'interface de Moodle ne permet pas les réponses multiples pour les questions numériques, il n'y a aucun moyen de les voir, ni de les modifier autrement qu'en supprimant et en ré-important la question, ou en modifiant directement la base de données (DANGER !).

                +

                Comme l'interface de Moodle ne permet pas les réponses multiples pour les questions numériques, il n'y a aucun moyen de les voir, ni de les modifier autrement qu'en supprimant et en ré-important la question, ou en modifiant directement la base de données (DANGER !).

                Options

                -

                En plus de ces types de questions, les options suivantes sont offertes grâce à ce format : commentaires, nom de question, feedback et coefficients.

                +

                En plus de ces types de questions, les options suivantes sont offertes grâce à ce format : commentaires, nom de question, feedback et coefficients.

                Commentaires

                -

                Les commentaires ne seront pas importés dans Moodle. Il servent à documenter les questions. Toutes les lignes de commentaire commencent par une double barre oblique (sans compter les espaces ou tabulations qui précèdent). Ces lignes seront simplement ignorées lors de l'importation.

                +

                Les commentaires ne seront pas importés dans Moodle. Il servent à documenter les questions. Toutes les lignes de commentaire commencent par une double barre oblique (sans compter les espaces ou tabulations qui précèdent). Ces lignes seront simplement ignorées lors de l'importation.

                      // Subheading: Numerical questions below
                @@ -119,7 +117,7 @@ Les questions d'appariement ne permettent pas les feedbacks, ni les coefficients
                 
                 

                Nom de question

                -

                Un nom de question peut être indiqué en le plaçant avant la question, entouré par des double deux-points.

                +

                Un nom de question peut être indiqué en le plaçant avant la question, entouré par des double deux-points.

                     
                      ::Kanji Origins::Japanese characters originally
                @@ -129,11 +127,11 @@ Les questions d'appariement ne permettent pas les feedbacks, ni les coefficients
                      celebrated on the {~second ~third =fourth} Thursday of November.
                 
                -

                Si aucun nom de question n'est donné, la question elle-même est utilisée par défaut.

                +

                Si aucun nom de question n'est donné, la question elle-même est utilisée par défaut.

                Feedback

                -

                Un feedback peut être inclus avec chaque réponse. Il suffit de placer le feedback immédiatement après la réponse, séparé par un dièze (#).

                +

                Un feedback peut être inclus avec chaque réponse. Il suffit de placer le feedback immédiatement après la réponse, séparé par un dièze (#).

                      What's the answer to this multiple-choice question?{
                @@ -148,17 +146,17 @@ Les questions d'appariement ne permettent pas les feedbacks, ni les coefficients
                      Grant is buried in Grant's tomb.{FALSE#No one is buried in Grant's tomb.}
                 
                -

                Pour les questions à choix multiples, le feedback n'est affiché que pour la réponse sélectionnée par l'étudiant. Pour la réponse courte, le feedback est affichée uniquement si l'étudiant a donné la réponse correcte correspondante. Pour les questions Vrai/Faux, le feedback n'apparaît que si la réponse donnée est incorrecte. Dans le dernier exemple ci-dessus, le feedback ne s'affichera donc que si l'étudiant a sélectionné VRAI comme réponse.

                +

                Pour les questions à choix multiples, le feedback n'est affiché que pour la réponse sélectionnée par l'étudiant. Pour la réponse courte, le feedback est affichée uniquement si l'étudiant a donné la réponse correcte correspondante. Pour les questions Vrai/Faux, le feedback n'apparaît que si la réponse donnée est incorrecte. Dans le dernier exemple ci-dessus, le feedback ne s'affichera donc que si l'étudiant a sélectionné VRAI comme réponse.

                Coefficients (en %)

                -

                Les coefficients sont disponibles pour les questions à choix multiples et pour les questions à réponse courte. Les coefficients peuvent être inclus en faisant suivre le tilde (pour les questions à choix multiples) ou le signe égal (pour les questions à réponse courte) par le pourcentage désiré, entouré de signes pour-cent (par exemple %50%). Cette option peut être combinée avec les feedbacks.

                +

                Les coefficients sont disponibles pour les questions à choix multiples et pour les questions à réponse courte. Les coefficients peuvent être inclus en faisant suivre le tilde (pour les questions à choix multiples) ou le signe égal (pour les questions à réponse courte) par le pourcentage désiré, entouré de signes pour-cent (par exemple %50%). Cette option peut être combinée avec les feedbacks.

                      Une question.{
                -     ~Réponse fausse
                -     ~%50%Réponse valant la moitié des points
                -     =Réponse donnant tous les points}
                +     ~Réponse fausse
                +     ~%50%Réponse valant la moitié des points
                +     =Réponse donnant tous les points}
                 
                      ::Jesus' hometown::Jesus Christ was from {
                      ~Jerusalem#This was an important city, but the wrong answer.
                @@ -172,13 +170,13 @@ Les questions d'appariement ne permettent pas les feedbacks, ni les coefficients
                      =%25%Bethlehem#He was born here, but not raised here.}
                 
                -

                Les deux derniers exemples sont une même question, une première foius comme question à choix multiples, la deuxième sous la forme de question à réponse courte.

                +

                Les deux derniers exemples sont une même question, une première foius comme question à choix multiples, la deuxième sous la forme de question à réponse courte.

                -

                Il est possible de spécifier ainsi des coefficients non disponibles dans l'interface graphique (navigateur) de Moodle. De tels coefficients seront calculés correctement d'après les valeurs données dans le fichier importé) et apparaîtront normales aux étudiants faisant le test. Cependant ces coefficients n'apparaîtront pas corrects pour les enseignants lors de l'édition des questions dans Moodle. Si vous éditez de telles questions avec l'interface de Moodle et que vous modifiez le coefficient, celui-ci sera changé.

                +

                Il est possible de spécifier ainsi des coefficients non disponibles dans l'interface graphique (navigateur) de Moodle. De tels coefficients seront calculés correctement d'après les valeurs données dans le fichier importé) et apparaîtront normales aux étudiants faisant le test. Cependant ces coefficients n'apparaîtront pas corrects pour les enseignants lors de l'édition des questions dans Moodle. Si vous éditez de telles questions avec l'interface de Moodle et que vous modifiez le coefficient, celui-ci sera changé.

                -

                Réponses multiples

                +

                Réponses multiples

                -

                L'option réponses multiples est utilisée pour des questions à choix multiples ou deux ou plusieurs réponses doivent être choisies afin d'obtenir tous les points. On active cette option en donnant aux diverses réponses des coefficients, aucune réponse ne donnant le total des points.

                +

                L'option réponses multiples est utilisée pour des questions à choix multiples ou deux ou plusieurs réponses doivent être choisies afin d'obtenir tous les points. On active cette option en donnant aux diverses réponses des coefficients, aucune réponse ne donnant le total des points.

                      What two people are entombed in Grant's tomb? {
                @@ -188,7 +186,7 @@ Les questions d'appariement ne permettent pas les feedbacks, ni les coefficients
                      ~Grant's father }
                 
                -

                On remarque qu'il n'y a aucun signe égal dans aucune réponse. Le total des coefficients ne doit pas excéder 100%, sans quoi une erreur surviendrait dans Moodle. Pour éviter que les étudiants obtiennent 100% en sélectionnant systématiquement toutes les réponses, il est conseillé d'inclure des coefficients négatifs pour les réponses fausses.

                +

                On remarque qu'il n'y a aucun signe égal dans aucune réponse. Le total des coefficients ne doit pas excéder 100%, sans quoi une erreur surviendrait dans Moodle. Pour éviter que les étudiants obtiennent 100% en sélectionnant systématiquement toutes les réponses, il est conseillé d'inclure des coefficients négatifs pour les réponses fausses.

                      What two people are entombed in Grant's tomb? {
                @@ -200,20 +198,20 @@ Les questions d'appariement ne permettent pas les feedbacks, ni les coefficients
                 
                 

                Autres options

                -

                D'autres options sont disponibles en éditant le filtre d'importation gift/format.php.

                +

                D'autres options sont disponibles en éditant le filtre d'importation gift/format.php.

                -

                Les réponses courtes peuvent être rendues sensibles à la casse des caractères en remplaçant « 0 » par « 1 » dans la ligne suivante :

                +

                Les réponses courtes peuvent être rendues sensibles à la casse des caractères en remplaçant « 0 » par « 1 » dans la ligne suivante :

                     $question->usecase = 0;  // Ignore case

                Des erreurs ?

                -

                L'encodage de votre fichier texte doit être le même que celui de votre installation Moodle.

                +

                L'encodage de votre fichier texte doit être le même que celui de votre installation Moodle.

                -

                Un fichier contenant des exemples de questions est à disposition ici : gift/examples.txt.

                +

                Un fichier contenant des exemples de questions est à disposition ici : gift/examples.txt.

                Remerciements

                -

                Ce filtre d'importation a été écrit en collaboration avec de nombreux membres de la communauté Moodle. Il était basé à l'origine sur le format « mot manquant », qui comportait du code de Martin Dougiamas, Thomas Robb et d'autres personnes. Paul Tsuchido Shew a écrit ce filtre en décembre 2003, y incorporant les suggestions de la communauté, afin d'obtenir un format d'importation robuste. Le nom est un acronyme pour « General Import Format Technology » ou quelque chose comme ça. Comme c'est trop long, c'est juste GIFT !

                +

                Ce filtre d'importation a été écrit en collaboration avec de nombreux membres de la communauté Moodle. Il était basé à l'origine sur le format « mot manquant », qui comportait du code de Martin Dougiamas, Thomas Robb et d'autres personnes. Paul Tsuchido Shew a écrit ce filtre en décembre 2003, y incorporant les suggestions de la communauté, afin d'obtenir un format d'importation robuste. Le nom est un acronyme pour « General Import Format Technology » ou quelque chose comme ça. Comme c'est trop long, c'est juste GIFT !

                -

                GIFT documentation by Paul Tsuchido Shew, 13 Jan 2004, traduite par Nicolas Martignoni, 8 février 2004.

                \ No newline at end of file +

                GIFT documentation by Paul Tsuchido Shew, 13 Jan 2004, traduite par Nicolas Martignoni, 8 février 2004.

                \ No newline at end of file diff --git a/lang/fr/help/quiz/formatmissingword.html b/lang/fr/help/quiz/formatmissingword.html index 85aee19e45d..aba092cdc79 100755 --- a/lang/fr/help/quiz/formatmissingword.html +++ b/lang/fr/help/quiz/formatmissingword.html @@ -1,5 +1,5 @@ - +

                Importation de questions en format +« mots manquants »

                -

                Importation de questions en format « mots manquants »

                - -

                La documentation sur cette option n'est pas encore disponible.

                \ No newline at end of file +

                La documentation sur cette option n'est pas encore +disponible.

                \ No newline at end of file diff --git a/lang/fr/help/quiz/formatwebct.html b/lang/fr/help/quiz/formatwebct.html index d07ef850ffc..393ecd6e93b 100644 --- a/lang/fr/help/quiz/formatwebct.html +++ b/lang/fr/help/quiz/formatwebct.html @@ -1,20 +1,20 @@ -

                Importation de fichiers en format « WebCT Quiz »

                +

                Importation de fichiers en format « WebCT Quiz »

                -

                Le filtre d'importation WebCT est en développement. Il ne supporte pas tous les types de questions de WebCT.

                +

                Le filtre d'importation WebCT est en développement. Il ne supporte pas tous les types de questions de WebCT.

                -

                Pour l'instant, seuls les questions à Choix multiples et à Réponse courte sont supportés.

                +

                Pour l'instant, seuls les questions à Choix multiples et à Réponse courte sont supportés.

                Voici quelques exemples de ces questions dans un fichier texte :

                 # Start of question: Short Answer Question
                 :TYPE:S:
                -:TITLE:Question à réponse courte
                +:TITLE:Question à réponse courte
                 :QUESTION:H
                 Quel est le nom du site web de Moodle ?
                -
                +<br /> :IMAGE:moodle.gif :ANSWERS:1 :CASE:0 @@ -27,31 +27,31 @@ N'oubliez pas de visiter\: moodle.org # Start of question: Multiple Choice Question :TYPE:MC:1:0:C -:TITLE:Question à Choix multiples +:TITLE:Question à Choix multiples :FEEDBACK -Darwin a découvert la théorie de l'évolution. +Darwin a découvert la théorie de l'évolution. :QUESTION:H -Oû est situé le Darwin Research Center? +Oû est situé le Darwin Research Center? :IMAGE: :LAYOUT:vertical :ANSWER1:0:H -À Menlo Park, en Californie +À Menlo Park, en Californie :REASON1:H Eh non ! :ANSWER2:0:H -À Vancouver, au Canada +À Vancouver, au Canada :REASON2:H Ce n'est pas cela ! :ANSWER3:100:H -Aux Îles Galapagos, en Équateur +Aux Îles Galapagos, en Équateur :REASON3:H -Réponse correcte ! +Réponse correcte ! :ANSWER4:0:H -À Fribourg, en Suisse +À Fribourg, en Suisse :REASON4:H Non, mais c'est une belle ville ! :ANSWER5:0:H -À Sidney, en Australie +À Sidney, en Australie :REASON5:H Non ! :CAT:Default diff --git a/lang/fr/help/quiz/grademethod.html b/lang/fr/help/quiz/grademethod.html index 418fba44e77..a988e7616a1 100755 --- a/lang/fr/help/quiz/grademethod.html +++ b/lang/fr/help/quiz/grademethod.html @@ -1,21 +1,21 @@ - +

                Calcul de la note du test

                -

                Calcul de la note du test

                +

                Lorsqu'on permet à l'étudiant d'effectuer +plusieurs tentatives pour faire un test, vous devez choisir +comment sera calculée la note de l'étudiant. Voici +les choix possibles :

                -

                Lorsqu'on permet à l'étudiant d'effectuer plusieurs tentatives pour faire un test, vous devez choisir comment sera calculée la note de l'étudiant. Voici les choix possibles :

                - -

                Note la plus élevée

                - -
                  La note finale est la meilleure des notes de toutes les tentatives.
                - -

                Note moyenne

                +

                Note la plus élevée

                +
                  La note finale est la meilleure des notes de toutes les +tentatives.
                +

                Note moyenne

                  La note finale est la note moyenne de toutes les tentatives.
                -

                Première note

                +

                Première note

                +
                  La note finale est la note obtenue à la première +tentative.
                -
                  La note finale est la note obtenue à la première tentative.
                - -

                Dernière note

                - -
                  La note finale est la note obtenue à la dernière tentative.
                +

                Dernière note

                +
                  La note finale est la note obtenue à la dernière +tentative.
                diff --git a/lang/fr/help/quiz/import.html b/lang/fr/help/quiz/import.html index ae7e0fa2acd..055238348b9 100755 --- a/lang/fr/help/quiz/import.html +++ b/lang/fr/help/quiz/import.html @@ -1,107 +1,102 @@ - +

                Importation de questions

                -

                Importation de questions

                - -

                Cette fonction vous permet d'importer des questions ˆ partir de fichiers de texte externes, ˆl'aide d'un formulaire. Les formats de fichiers suivants sont supportŽs :

                - -

                Format GIFT

                +

                Cette fonction vous permet d'importer des questions à partir +de fichiers de texte externes, àl'aide d'un formulaire. Les +formats de fichiers suivants sont supportés :

                +

                Format GIFT

                  - -

                  Le format GIFT est le plus complet des formats d'importation de questions disponible dans Moodle. Il a ŽtŽ conu pour permettre aux enseignants d'Žcrire simplement des questions dans un fichier texte. Il permet la saisie des questions ˆ Choix multiples, Vrai-Faux, ˆ RŽponse courte ou ˆ RŽponse numŽrique, ainsi que l'insertion de _____ pour le format Mot manquant. Les diffŽrents types de questions peuvent tre mŽlangŽs dans un mme fichier texte, et le format permet Žgalement l'insertion de commentaires, titres de questions, feedbacks et pondŽration des points en %. Voici quelques exemples :

                  - +

                  Le format GIFT est le plus complet des formats d'importation de + questions disponible dans Moodle. Il a été conçu pour permettre + aux enseignants d'écrire simplement des questions dans in fichier + texte. Il permet la saisie des questions à Choix multiples, Vrai-Faux, + à Réponse courte ou à Réponse numérique, ainsi que l'insertion de + _____ pour le format Mot manquant. Les différents types de questions + peuvent être mélangés dans un même fichier texte, et le format permet + également l'insertion de commentaires, titres de questions, feedbacks + et pondération des points en %. Voici quelques exemples :

                  - Quelle Žtait la couleur de la jument blanche
                  - de NapolŽon ?{~Verte ~Noire =Blanche}
                  + Quelle était la couleur de la jument blanche de
                  + Napoléon ?{~Verte ~Noire =Blanche}
                    
                  - La jument blanche de NapolŽon Žtait {~verte =blanche ~noire}.
                  + La jument blanche de Napoléon était {~verte =blanche ~noire}.
                    
                  - La jument blanche de NapolŽon Žtait verte.{FALSE}
                  + La jument blanche de Napoléon était verte.{FALSE}
                    
                  - Qui NapolŽon a-t-il ŽpousŽ ?{=Marie-Louise =JosŽphine}
                  + Qui Napoléon a-t-il épousé ?{=Marie-Louise =Joséphine}
                    
                  - Quelle est la date de naissance de NapolŽon ?{#1769:5}
                  + Quelle est la date de naissance de Napoléon ?{#1769:5}
                    
                  - -

                  Plus d'informations au sujet du format GIFT.

                  - +

                  Plus d'informations au sujet du format GIFT.

                -

                Format Aiken

                - -
                  - -

                  Le format Aiken format propose une faon trs intuitive pour crŽer des questions ˆ choix multiples de faon lisible. Voici un exemple de ce format :

                  - +

                  Format Aiken

                  +
                    +

                    Le format Aiken format propose une façon très intuitive pour créer + des questions à choix multiples de façon lisible. Voici un exemple de + ce format :

                    - Lesquels parmi ces astres font partie du systme solaire ?
                    - A. La Voie LactŽe
                    + Lesquels parmi ces astres font partie du système solaire ?
                    + A. La Voie Lactée
                      B. Sirius
                    - C. Les PlŽiades
                    - D. La comte de Halley
                    + C. Les Pléiades
                    + D. La comète de Halley
                      ANSWER: D
                      
                    - -

                    Plus d'informations au sujet du format Aiken.

                    - +

                    Plus d'informations au sujet du format Aiken.

                  -

                  RŽponse intŽgrŽe au texte

                  - +

                  Réponse intégrée au texte

                    - -

                    Ce format supporte seulement des questions o la rŽponse est intŽgrŽe au texte et qu'un choix de rŽponses est proposŽ. Chaque rŽponse est prŽcŽdŽe d'un tilde (~), sauf la rŽponse correcte qui est prŽcŽdŽe d'un signe d'ŽgalitŽ (=). Voici un exemple :

                    - -
                    Ds que nous commenons ˆ explorer les parties de notre corps lorsque nous sommes enfant, nous devenons des Žtudiants {=en anatomie et physiologie ~ en science ~ en rŽflexologie}, et dans un sens, nous demeurons des Žtudiants pour la vie.
                    - -

                    Plus d'informations au sujet du format Ç RŽponse intŽgrŽe au texte È

                    - +

                    Ce format supporte seulement des questions où la réponse est + intégrée au texte et qu'un choix de réponses est proposé. + Chaque réponse est précédée d'un tilde (~), sauf la réponse + correcte qui est précédée d'un signe d'égalité (=). Voici un + exemple :

                    +
                    Dès que nous commençons à explorer les parties de + notre corps lorsque nous sommes enfant, nous devenons des + étudiants {=en anatomie et physiologie ~ en science ~ en + réflexologie}, et dans un sens, nous demeurons des étudiants + pour la vie.
                    +

                    Plus d'informations au sujet du format « Réponse + intégrée au texte »

                  -

                  Format AON

                  - +

                  Format AON

                    - -

                    Ce format est identique au format prŽcŽdent, sauf qu'aprs l'importation des questions, toutes les questions ˆ rŽponse courte sont converties en question d'appariements, par groupe de quatre. En outre, les rŽponses des questions ˆ choix multiples sont placŽes alŽatoirement.

                    - -

                    Ce type de question porte le nom d'une organisation qui a commanditŽ le dŽveloppement de beaucoup de types de questions.

                    - +

                    Ce format est identique au format précédent, sauf qu'après + l'importation des questions, toutes les questions à réponse + courte sont converties en question d'appariements, par groupe de + quatre. En outre, les réponses des questions à choix + multiples sont placées aléatoirement.

                    +

                    Ce type de question porte le nom d'une organisation qui a + commandité le développement de beaucoup de types de + questions.

                  -

                  Format BlackBoard

                  - +

                  Format BlackBoard

                    - -

                    Ce module permet d'importer des questions enregistrŽes dans le format Ç BlackBoard È. Il se fonde sur des fonctions XML incluses avec le serveur PHP utilisŽ par Moodle.

                    - -

                    Plus d'informations au sujet du format Ç BlackBoard È

                    - +

                    Ce module permet d'importer des questions enregistrées dans le + format « BlackBoard ». Il se fonde sur des fonctions XML + incluses avec le serveur PHP utilisé par Moodle.

                    +

                    Plus d'informations au sujet du format « BlackBoard »

                  -

                  Format Learnwise

                  - +

                  Format Personnalisé

                    - -

                    Ce format permet d'importer des questions ˆ choix multiples enregistrŽes en format XML Learnwise.

                    - -
                  - -

                  Format XML Moodle

                  - -
                    - -

                    Ce format spŽcifique ˆ Moodle permet d'importer des questions de tests prŽalablement exportŽes dans le mme format. Le format est explicite, et se comprend facilement en exportant par exemple une catŽgorie en format XML Moodle.

                    - +

                    Si vous avez votre propre format que vous désirez importer, + vous pouvez en programmer son importation en éditant le fichier + modèle « mod/quiz/format/custom.php ». Le bout de programme + requis est minimal puisqu'il n'a qu'à analyser le texte d'une + question.

                    +

                    Plus d'informations au sujet du format « personnalisé »

                  -

                  Format PersonnalisŽ

                  - -
                    - -

                    Si vous avez votre propre format que vous dŽsirez importer, vous pouvez en programmer son importation en Žditant le fichier modle Ç mod/quiz/format/custom.php È. Le bout de programme requis est minimal puisqu'il n'a qu'ˆ analyser le texte d'une question.

                    - -

                    Plus d'informations au sujet du format Ç personnalisŽ È

                    - -
                  - -

                  D'autres formats sont ˆ venir dans une prochaine version, y compris WebCT, IMS QTI et tous les autres formats que les utilisateurs de Moodle voudront bien fournir !

                  \ No newline at end of file +

                  D'autres formats sont à venir dans une prochaine version, +y compris WebCT, IMS QTI et tous les autres formats que les +utilisateurs de Moodle voudront bien fournir !

                  \ No newline at end of file diff --git a/lang/fr/help/quiz/index.html b/lang/fr/help/quiz/index.html index f4e503c7f2e..bac367ed837 100755 --- a/lang/fr/help/quiz/index.html +++ b/lang/fr/help/quiz/index.html @@ -1,69 +1,80 @@ - -

                  Tests

                  \ No newline at end of file diff --git a/lang/fr/help/quiz/match.html b/lang/fr/help/quiz/match.html index 19122908537..35b6eee4fbb 100755 --- a/lang/fr/help/quiz/match.html +++ b/lang/fr/help/quiz/match.html @@ -1,18 +1,16 @@ - - -

                  Question d'appariement

                  +

                  Question d'appariement

                  Une question d'appariement se compose de plusieurs parties :

                    - -
                  • une introduction qui présente le contexte ;
                  • - +
                  • une introduction qui présente le contexte ;
                  • une liste de propositions ;
                  • - -
                  • une liste de réponses.
                  • - +
                  • une liste de réponses.
                  -

                  L'étudiant doit associer chaque proposition avec une des réponses proposées. Une réponse correcte correspond à chaque proposition. Toutes les propositions ont un même poids dans le calcul de la note pour la question.

                  \ No newline at end of file +

                  L'étudiant doit associer chaque proposition avec +une des réponses proposées. Une réponse correcte +correspond à chaque proposition. Toutes les propositions +ont un même poids dans le calcul de la note pour +la question.

                  \ No newline at end of file diff --git a/lang/fr/help/quiz/maxgrade.html b/lang/fr/help/quiz/maxgrade.html index d9659322b8e..35036d59a50 100755 --- a/lang/fr/help/quiz/maxgrade.html +++ b/lang/fr/help/quiz/maxgrade.html @@ -1,9 +1,25 @@ - +

                  Note maximale

                  + +

                  La note maximale est la note par rapport à +laquelle la note du test sera recalculée.

                  + +

                  Par exemple, dans un test de 10 questions valant chacune 5 points, +le total est de 50 points. Si pour ce test on fixe la note maximale +à 20, les points de chaque question seront réduits en +proportion, de façon à donner 20 à un étudiant +ayant répondu correctement à toutes les questions.

                  + +

                  On utilise cette option lorsque l'on désire faire correspondre la +note totale du test à sa pondération dans le cours : si le test +vaut 20% de la note finale du cours, on fixera la note maximale +du test à 20.

                  + + + + + + -

                  Note maximale

                  -

                  La note maximale est la note par rapport à laquelle la note du test sera recalculée.

                  -

                  Par exemple, dans un test de 10 questions valant chacune 5 points, le total est de 50 points. Si pour ce test on fixe la note maximale à 20, les points de chaque question seront réduits en proportion, de façon à donner 20 à un étudiant ayant répondu correctement à toutes les questions.

                  -

                  On utilise cette option lorsque l'on désire faire correspondre la note totale du test à sa pondération dans le cours : si le test vaut 20% de la note finale du cours, on fixera la note maximale du test à 20.

                  \ No newline at end of file diff --git a/lang/fr/help/quiz/mods.html b/lang/fr/help/quiz/mods.html index f60d56ecf12..39028423322 100755 --- a/lang/fr/help/quiz/mods.html +++ b/lang/fr/help/quiz/mods.html @@ -1,11 +1,12 @@ -

                  Test Tests

                  +

                   Tests

                    +

                    Ce module permet à l'enseignant de concevoir et d'inclure des tests dans son cours. Plusieurs types de questions sont proposés : choix multiples, question d'appariement, vrai ou faux, réponse courte, réponse numérique, etc. Ces questions sont conservées dans une base de données classée par catégorie, et peuvent être utilisées à plusieurs reprises dans le cours. Les catégories de questions peuvent même être publiées, ce qui les rend disponibles aux autres enseignants.

                    -

                    Ce module permet à l'enseignant de concevoir et d'inclure des tests dans son cours. Plusieurs types de questions sont proposés : choix multiples, question d'appariement, vrai ou faux, réponse courte, réponse numérique, etc. Ces questions sont conservées dans une base de données classée par catégorie, et peuvent être utilisées à plusieurs reprises dans le cours. Les catégories de questions peuvent même être publiées, ce qui les rend disponibles aux autres enseignants.

                    +

                    L'enseignant peut autoriser plusieurs tentatives pour effectuer le test. Chaque tentative est automatiquement évaluée. Il peut choisir de faire afficher un feedback pour chaque question et d'afficher les réponses correctes.

                    +
                  -

                  L'enseignant peut autoriser plusieurs tentatives pour effectuer le test. Chaque tentative est automatiquement évaluée. Il peut choisir de faire afficher un feedback pour chaque question et d'afficher les réponses correctes.

                  + -
                \ No newline at end of file diff --git a/lang/fr/help/quiz/multianswer.html b/lang/fr/help/quiz/multianswer.html index 46d579d3af9..84c916580b8 100755 --- a/lang/fr/help/quiz/multianswer.html +++ b/lang/fr/help/quiz/multianswer.html @@ -1,99 +1,76 @@ - +

                Questions Cloze à réponses intégrées

                -

                Questions Cloze à réponses intégrées

                +

                Ce type de question est très flexible. Il est analoque au +format Cloze, assez répandu.

                -

                Ce type de question est très flexible. Il est analoque au format Cloze, assez répandu.

                +

                Les questions se composent d'un texte (en format Moodle) +dans lequel on peut intégrer des réponses à choix multiples, des +réponses courtes ou des réponses numériques.

                -

                Les questions se composent d'un texte (en format Moodle) dans lequel on peut intégrer des réponses à choix multiples, des réponses courtes ou des réponses numériques.

                +

                Il n'existe à ce jour pas d'interface graphique pour créer +de telles questions - vous devez les écrire directement dans la boîte +de texte ou en les importer à partir d'un fichier externe.

                -

                Il n'existe à ce jour pas d'interface graphique pour créer de telles questions - vous devez les écrire directement dans la boîte de texte ou en les importer à partir d'un fichier externe.

                +

                Voici un exemple de texte qui illustre comment inclure les +différents types de réponses attendues :

                -

                Voici un exemple de texte qui illustre comment inclure les différents types de réponses attendues :

                - -
                - -
                - - - -
                + +
                + +
                -

                Cet exemple apparaîtra ainsi aux étudiants :

                - -
                - -
              - - - - - - - - - - - -
              - - - - - - - - - - - - - - - -
              - -

              3

              - -

              8 points

              - - - -
              - -

              Cette question comporte du texte dans lequel on a directement intégré des réponses à choix multiples - ; - -vous devez maintenant répondre à une question courte . Nous avons finalement une question qui demande une réponse numérique avec point décimal .

              - -Notez que les adresses URL comme www.moodle.org et les binettes -sont correctement interprétées:
              - -a) Est-ce bien? - - -
              -b) Quelle note désirez-vous? -

              - -
              - -
              +

              Cet exemple apparaîtra ainsi aux étudiants :

              + + + + + + + +
              + + + + + + + +
              +

              3

              +

              8 points

              + +
              +

              Cette question comporte du texte dans lequel on a directement intégré des réponses à choix multiples +  ; vous devez maintenant répondre à une question courte . Nous avons finalement + une question qui demande une réponse numérique avec point + décimal .

              + Notez que les adresses URL comme www.moodle.org et les + binettes + sont correctement interprétées:
              + a) Est-ce bien? + +
              + b) Quelle note désirez-vous? +

              +
              +
              diff --git a/lang/fr/help/quiz/multichoice.html b/lang/fr/help/quiz/multichoice.html index 6aec66f5759..405b15a521e 100755 --- a/lang/fr/help/quiz/multichoice.html +++ b/lang/fr/help/quiz/multichoice.html @@ -1,17 +1,14 @@ -

              Questions à choix multiples

              +

              Questions à choix multiples

              -

              Une question à choix multiples offre à l'étudiant un choix de réponses parmi lesquelles il devra choisir. La question peut inclure une image. Il existe deux variantes à ce type de question :

              +

              Une question à choix multiples offre à l'étudiant un choix de réponses parmi lesquelles il devra choisir. La question peut inclure une image. Il existe deux variantes à ce type de question :

                - -
              • Une seule réponse est valide et donc tous les points sont accordés à celle-ci.
              • - -
              • Il y a plusieurs réponses valides et les points sont partagés entre les différentes réponses.
              • - +
              • Une seule réponse est valide et donc tous les points sont accordés à celle-ci.
              • +
              • Il y a plusieurs réponses valides et les points sont partagés entre les différentes réponses.
              -

              Dans ce dernier cas, il est possible d'accorder une note négative aux mauvaises réponses pour éviter que les étudiants ne choisissent systématiquement toutes les réponses pour une obtenir tous les points. Moodle attribuera la note 0 si le total des notes pour les réponses choisies devait être négatif. L'enseignant doit s'assurer de ne pas dépasser 100% des points accordés, car Moodle n'interviendrait pas alors.

              +

              Dans ce dernier cas, il est possible d'accorder une note négative aux mauvaises réponses pour éviter que les étudiants ne choisissent systématiquement toutes les réponses pour une obtenir tous les points. Moodle attribuera la note 0 si le total des notes pour les réponses choisies devait être négatif. L'enseignant doit s'assurer de ne pas dépasser 100% des points accordés, car Moodle n'interviendrait pas alors.

              -

              Comme d'habitude, on recommande de toujours fournir un feedback pour les bonnes et mauvaises réponses.

              \ No newline at end of file +

              Comme d'habitude, on recommande de toujours fournir un feedback pour les bonnes et mauvaises réponses.

              \ No newline at end of file diff --git a/lang/fr/help/quiz/numerical.html b/lang/fr/help/quiz/numerical.html index f3a7b508b41..60a129e2e58 100755 --- a/lang/fr/help/quiz/numerical.html +++ b/lang/fr/help/quiz/numerical.html @@ -1,9 +1,16 @@ - - -

              Questions à réponse numérique

              - -

              Une question à réponse numérique a l'apparence d'une question à réponse courte. La différence réside dans le fait que la première peut accepter la réponse fournie par l'étudiant avec une marge d'erreur. L'enseignant fournit la valeur minimale et la valeur maximale de la plage des valeurs acceptables.

              - -

              Par exemple, supposons que la réponse à une question est 30 avec une erreur permise de 5. N'importe quel nombre entre 25 et 35 sera correct.

              - -

              Les questions à réponse numérique acceptent également des réponses non numériques qui tiennent compte de la casse. Cela s'avère particulièrement utile lorsque la réponse à la question numérique est du type : N/A, +inf, - inf, etc.

              \ No newline at end of file +

              Questions à réponse numérique

              + +

              Une question à réponse numérique a l'apparence d'une question à +réponse courte. La différence réside dans le fait que la première +peut accepter la réponse fournie par l'étudiant avec une marge +d'erreur. L'enseignant fournit la valeur minimale et la valeur +maximale de la plage des valeurs acceptables.

              + +

              Par exemple, supposons que la réponse à une question est 30 +avec une erreur permise de 5. N'importe quel nombre entre 25 et +35 sera correct.

              + +

              Les questions à réponse numérique acceptent également des réponses non +numériques qui tiennent compte de la casse. Cela s'avère +particulièrement utile lorsque la réponse à la question numérique +est du type : N/A, +inf, - inf, etc.

              \ No newline at end of file diff --git a/lang/fr/help/quiz/questiontypes.html b/lang/fr/help/quiz/questiontypes.html index ff896dc3de5..1c3fa989b43 100755 --- a/lang/fr/help/quiz/questiontypes.html +++ b/lang/fr/help/quiz/questiontypes.html @@ -1,59 +1,108 @@ - +

              Création d'une nouvelle question

              -

              Création d'une nouvelle question

              +

              Il existe dans Moodle de nombreux types de question pour +l'élaboration de vos tests :

              -

              Il existe dans Moodle de nombreux types de question pour l'élaboration de vos tests :

              +

              Questions à choix multiples

              -

              Questions à choix multiples

              +

              Une question à choix multiples offre à l'étudiant un choix de +réponses parmi lesquelles il devra choisir. La question peut +inclure une image. Il existe deux variantes à ce type de +question :

              -

              Une question à choix multiples offre à l'étudiant un choix de réponses parmi lesquelles il devra choisir. La question peut inclure une image. Il existe deux variantes à ce type de question :

              + - +

              Questions à réponse courte

              -

              Questions à réponse courte

              +

              Pour répondre à une question à réponse courte, l'étudiant +saisit un mot ou une expression. L'enseignant peut permettre +plusieurs réponses possibles. On peut exiger de respecter la +casse ou non (lettres minuscules ou/et majuscules). On peut faire +afficher une image avec la question.

              -

              Pour répondre à une question à réponse courte, l'étudiant saisit un mot ou une expression. L'enseignant peut permettre plusieurs réponses possibles. On peut exiger de respecter la casse ou non (lettres minuscules ou/et majuscules). On peut faire afficher une image avec la question.

              +

              Informations +supplémentaires sur les questions à réponses courtes

              -

              Informations supplémentaires sur les questions à réponses courtes

              +

              Questions à réponse numérique

              -

              Questions à réponse numérique

              +

              Les questions à réponse numérique sont analogues aux questions +à réponse courte. La différence réside dans le fait que la +première peut accepter la réponse fournie par l'étudiant avec une +marge d'erreur. L'enseignant fournit la valeur minimale et la +valeur maximale de la plage des valeurs acceptables.

              -

              Les questions à réponse numérique sont analogues aux questions à réponse courte. La différence réside dans le fait que la première peut accepter la réponse fournie par l'étudiant avec une marge d'erreur. L'enseignant fournit la valeur minimale et la valeur maximale de la plage des valeurs acceptables.

              +

              Informations +supplémentaires sur les questions à réponse numérique

              -

              Informations supplémentaires sur les questions à réponse numérique

              +

              Questions vrai ou faux

              -

              Questions vrai ou faux

              +

              Ce type de question exige de la part de l'étudiant une réponse +qui peut être seulement « Vrai » ou « Faux ». On peut faire +afficher une image à la question.

              -

              Ce type de question exige de la part de l'étudiant une réponse qui peut être seulement « Vrai » ou « Faux ». On peut faire afficher une image à la question.

              +

              Informations +supplémentaires sur les questions vrai ou faux

              -

              Informations supplémentaires sur les questions vrai ou faux

              +

              Questions d'appariement

              -

              Questions d'appariement

              +

              L'étudiant doit associer chaque proposition avec une des +réponses fournies. Une réponse correcte correspond à chaque +proposition. Toutes les propositions ont un même poids dans le +calcul de la note de la question.

              -

              L'étudiant doit associer chaque proposition avec une des réponses fournies. Une réponse correcte correspond à chaque proposition. Toutes les propositions ont un même poids dans le calcul de la note de la question.

              +

              Informations +supplémentaires sur les questions d'appariement

              -

              Informations supplémentaires sur les questions d'appariement

              +

              Questions Cloze à réponses intégrées

              -

              Questions Cloze à réponses intégrées

              +

              Ce type de question est très flexible. Les questions se +composent d'un texte (en format Moodle) dans lequel on peut +intégrer des questions à choix multiples, à réponses courtes ou à +réponses numériques.

              -

              Ce type de question est très flexible. Les questions se composent d'un texte (en format Moodle) dans lequel on peut intégrer des questions à choix multiples, à réponses courtes ou à réponses numériques.

              +

              Informations +supplémentaires sur les questions Cloze à réponses +intégrées

              -

              Informations supplémentaires sur les questions Cloze à réponses intégrées

              +

              Questions d'appariement aléatoires

              -

              Questions d'appariement aléatoires

              +

              Pour l'étudiant, cette question apparaît comme une question +d'appariement normale. En réalité, la question est construite au +hasard à partir des questions à réponses courtes.

              -

              Pour l'étudiant, cette question apparaît comme une question d'appariement normale. En réalité, la question est construite au hasard à partir des questions à réponses courtes.

              +

              Informations +supplémentaires sur les questions d'appariement +aléatoires

              -

              Informations supplémentaires sur les questions d'appariement aléatoires

              +

              Questions aléatoires

              -

              Questions aléatoires

              +

              Une question aléatoire est une question choisie au hasard +parmi toutes les questions de la catégorie de laquelle elle +provient. Les étudiants n'auront pas tous la même question.

              -

              Une question aléatoire est une question choisie au hasard parmi toutes les questions de la catégorie de laquelle elle provient. Les étudiants n'auront pas tous la même question.

              +

              Informations +supplémentaires sur les questions aléatoires

              -

              Informations supplémentaires sur les questions aléatoires

              +

              Descriptions

              -

              Descriptions

              +

              Ce type de question n'en est pas vraiment un. Il sert à +afficher un bloc de texte à l'intérieur d'un test sans +que l'étudiant ait à répondre quoi que ce soit. On peut +l'utiliser pour donner des directives pour les questions qui +suivent.

              -

              Ce type de question n'en est pas vraiment un. Il sert à afficher un bloc de texte à l'intérieur d'un test sans que l'étudiant ait à répondre quoi que ce soit. On peut l'utiliser pour donner des directives pour les questions qui suivent.

              - -

              Informations supplémentaires sur les descriptions

              \ No newline at end of file +

              Informations +supplémentaires sur les descriptions

              \ No newline at end of file diff --git a/lang/fr/help/quiz/random.html b/lang/fr/help/quiz/random.html index 0faeccaa714..56fc145257a 100755 --- a/lang/fr/help/quiz/random.html +++ b/lang/fr/help/quiz/random.html @@ -1,13 +1,42 @@ - +

              Questions aléatoires

              + +

              Les questions aléatoires ajoutent un peu de piquant à un +test !

              + +

              Lorsque vous ajoutez une question aléatoire à un test, une +question sera choisie au hasard parmi toutes les questions que +contient la catégorie d'où est tirée la question aléatoire. +Chaque étudiant aura donc un test différent de celui de son +collègue.

              + +

              Si vous placez plusieurs questions aléatoires de la même +catégorie, les questions ajoutées au test ne seront pas les mêmes +(il n'y aura pas de collisions). Par exemple, si vous avez 10 +questions aléatoires dans votre test, l'étudiant aura un test +avec 10 questions différentes.

              + +

              Vous pouvez réunir des questions aléatoires et des questions +de types différents dans le même test.

              + + + + + + + + + + + + + + + + + -

              Questions aléatoires

              -

              Des questions aléatoires peuvent être ajoutées à n'importe quelle catégorie.

              -

              Lorsque vous ajoutez une question aléatoire à un test, cette question sera remplacée par une autre choisie au hasard parmi toutes les questions de la même catégorie, et ceci lors de chaque tentative.

              -

              Chaque étudiant aura donc le plus souvent un test différent de celui de son collègue. En outre, lorsqu'un test permet plusieurs tentatives et si un tentative ultérieure ne se base pas sur la précédente, les différentes tentatives n'offriront le plus souvent pas les mêmes questions.

              -

              Une question n'apparaîtra jamais deux fois dans le même test. Si vous placez plusieurs questions aléatoires de la même catégorie, les questions ajoutées au test seront différentes (il n'y aura pas de collisions). Si vous ajoutez des questions aléatoires et d'autres questions dans le même test, les questions aléatoires seront choisies de façon à ne pas faire doublon avec les questions non aléatoires.

              -

              La note d'une question aléatoire sera adaptée de telle sorte que la note maximale sera celle que vous avez choisie pour la question aléatoire.

              \ No newline at end of file diff --git a/lang/fr/help/quiz/randomsamatch.html b/lang/fr/help/quiz/randomsamatch.html index 10ad67928f8..ccce6fa8ab8 100755 --- a/lang/fr/help/quiz/randomsamatch.html +++ b/lang/fr/help/quiz/randomsamatch.html @@ -1,21 +1,22 @@ - +

              Questions d'appariement aléatoires

              -

              Questions d'appariement aléatoires

              - -

              Pour l'étudiant, cette question apparaît comme une question d'appariement normale. En réalité, la question est construite au hasard à partir des questions à réponses courtes.

              +

              Pour l'étudiant, cette question apparaît comme une question +d'appariement normale. En réalité, la question est construite au +hasard à partir des questions à réponses courtes.

              La question d'appariement se divise en plusieurs parties :

              -
                +
                • une introduction qui présente le contexte ;
                • une +liste de propositions (à partir du libellé des questions à +réponse courte) ;
                • une liste de réponses (à partir des +réponses à chaque question à réponse courte).
                -
              • une introduction qui présente le contexte ;
              • +

                L'étudiant doit associer chaque proposition avec une des +réponses proposées. Une réponse correcte correspond à chaque +proposition. Toutes les propositions ont un même poids dans le +calcul de la note de la question.

                -
              • une liste de propositions (à partir du libellé des questions à réponse courte) ;
              • - -
              • une liste de réponses (à partir des réponses à chaque question à réponse courte).
              • - -
              - -

              L'étudiant doit associer chaque proposition avec une des réponses proposées. Une réponse correcte correspond à chaque proposition. Toutes les propositions ont un même poids dans le calcul de la note de la question.

              - -

              Les questions et les réponses sont tirées aléatoirement de la catégorie d'où est issue la question aléatoire d'appariement. Cela signifie que chaque étudiant aura une version différente du test.

              \ No newline at end of file +

              Les questions et les réponses sont tirées aléatoirement de la +catégorie d'où est issue la question aléatoire d'appariement. +Cela signifie que chaque étudiant aura une version différente du +test.

              \ No newline at end of file diff --git a/lang/fr/help/quiz/repeatattempts.html b/lang/fr/help/quiz/repeatattempts.html index 3c26f2239ae..2d31c2f2538 100755 --- a/lang/fr/help/quiz/repeatattempts.html +++ b/lang/fr/help/quiz/repeatattempts.html @@ -1,7 +1,11 @@ - - -

              Chaque nouvelle tentative se fait à partir de la tentative précédente

              - -

              Lorsqu'on autorise l'étudiant à refaire plusieurs fois un test et que cette option est activée, l'étudiant pourra commencer une nouvelle tentative à partir des résultats de l'essai précédent. L'étudiant pourra ainsi compléter un test en plusieurs séances ou corriger les erreurs qu'il aurait faites.

              - -

              Si vous désirez que l'étudiant recommence à zéro à chaque tentative, choisissez de désactiver cette option.

              \ No newline at end of file +

              Chaque nouvelle tentative se fait à partir +de la tentative précédente

              + +

              Lorsqu'on autorise l'étudiant à refaire plusieurs fois un test +et que cette option est activée, l'étudiant pourra commencer une +nouvelle tentative à partir des résultats de l'essai précédent. +L'étudiant pourra ainsi compléter un test en plusieurs séances ou +corriger les erreurs qu'il aurait faites.

              + +

              Si vous désirez que l'étudiant recommence à zéro à chaque +tentative, choisissez de désactiver cette option.

              \ No newline at end of file diff --git a/lang/fr/help/quiz/requirepassword.html b/lang/fr/help/quiz/requirepassword.html index 5546ee23f9b..9bc336d4d4a 100644 --- a/lang/fr/help/quiz/requirepassword.html +++ b/lang/fr/help/quiz/requirepassword.html @@ -1,7 +1,7 @@ -

              Nécessite une clef

              +

              Nécessite une clef

              Ce champ est optionnel.

              -

              Si vous spécifiez ici une clef, les participants devront taper cette même clef avant de pouvoir faire le test.

              +

              Si vous spécifiez ici une clef, les participants devront taper cette même clef avant de pouvoir faire le test.

              diff --git a/lang/fr/help/quiz/requiresubnet.html b/lang/fr/help/quiz/requiresubnet.html index a14b7e80155..711857a5aa9 100644 --- a/lang/fr/help/quiz/requiresubnet.html +++ b/lang/fr/help/quiz/requiresubnet.html @@ -1,25 +1,21 @@ -

              Restriction par adresse IP

              +

              Restriction par adresse IP

              Ce champ est optionnel.

              -

              Vous pouvez restreindre l'accès à un test à des sous-réseaux particuliers d'un réseau local (LAN) ou de l'internet en spécifiant ici une liste d'adresses IP (complètes ou partielles), séparées par des virgules.

              +

              Vous pouvez restreindre l'accès à un test à des sous-réseaux particuliers d'un réseau local (LAN) ou de l'internet en spécifiant ici une liste d'adresses IP (complètes ou partielles), séparées par des virgules.

              -

              Cela peut être spécialement utile lorsque vous désirez que seules les personnes dans une salle spécifique puissent accéder au test.

              - -

              Vous pouvez indiquer ici trois types d'adresses IP (il n'est pas possible d'utiliser des adresses sous la forme de nom de domaine, par exemple « mon-ecole.ch ») :

              +

              Cela peut être spécialement utile lorsque vous désirez que seules les personnes dans une salle spécifique puissent accéder au test.

              +

              Vous pouvez indiquer ici trois types d'adresses IP (il n'est pas possible d'utiliser des adresses sous la forme de nom de domaine, par exemple « mon-ecole.ch ») :

                - -
              1. des adresses IP complètes, comme 192.168.10.1, qui correspondent à un seul ordinateur (ou un serveur proxy) ;
              2. - -
              3. des adresses IP partielles, comme 192.168, qui correspondent à tous les ordinateurs dont l'adresse commence ainsi ;
              4. - -
              5. des adresses en notation CIDR, comme 231.54.211.0/20, qui permettent de spécifier des sous-réseaux de manière plus détaillée.
              6. - +
              7. des adresses IP complètes, comme 192.168.10.1, qui correspondent à un seul ordinateur (ou un serveur proxy) ;
              8. +
              9. des adresses IP partielles, comme 192.168, qui correspondent à tous les ordinateurs dont l'adresse commence ainsi ;
              10. +
              11. des adresses en notation CIDR, comme 231.54.211.0/20, qui permettent de spécifier des sous-réseaux de manière plus détaillée.
              +

              -

              Les espaces sont ignorés.

              +

              Les espaces sont ignorés.

              -

              Exemple : 192.168. , 231.54.211.0/20, 231.3.56.211

              \ No newline at end of file +

              Exemple : 192.168. , 231.54.211.0/20, 231.3.56.211

              \ No newline at end of file diff --git a/lang/fr/help/quiz/review.html b/lang/fr/help/quiz/review.html index 1a7a0e15b91..b038e4a2028 100755 --- a/lang/fr/help/quiz/review.html +++ b/lang/fr/help/quiz/review.html @@ -1,7 +1,9 @@ - - -

              Permettre de revoir le test une fois terminé

              - -

              Lorsque cette option est activée, les étudiants peuvent revoir leurs différentes tentatives pour ce test, mais seulement une fois le test fermé.

              - -

              Le test est fermé lorsque la date de clôture du test est atteinte.

              \ No newline at end of file +

              Permettre de revoir le test une fois +terminé

              + +

              Lorsque cette option est activée, les étudiants peuvent revoir +leurs différentes tentatives pour ce test, mais seulement une +fois le test fermé.

              + +

              Le test est fermé lorsque la date de clôture du test est +atteinte.

              \ No newline at end of file diff --git a/lang/fr/help/quiz/shortanswer.html b/lang/fr/help/quiz/shortanswer.html index 6dde7ef04a1..43effbb5527 100755 --- a/lang/fr/help/quiz/shortanswer.html +++ b/lang/fr/help/quiz/shortanswer.html @@ -1,13 +1,25 @@ - +

              Questions à réponse courte

              -

              Questions à réponse courte

              +

              Pour répondre à une question à réponse courte (qui peut inclure +une image), l'étudiant saisit un mot ou une expression.

              -

              Pour répondre à une question à réponse courte (qui peut inclure une image), l'étudiant saisit un mot ou une expression.

              +

              L'enseignant peut permettre plusieurs réponses possibles, +chacune accordant une note différente.

              -

              L'enseignant peut permettre plusieurs réponses possibles, chacune accordant une note différente.

              +

              On peut exiger de respecter la casse ou non (lettres +minuscules ou/et majuscules) ; par exemple, si l'option +La casse des caractères doit être respectée est +sélectionnée, les mots Français et français sont +considérés comme différents.

              -

              On peut exiger de respecter la casse ou non (lettres minuscules ou/et majuscules) ; par exemple, si l'option La casse des caractères doit être respectée est sélectionnée, les mots Français et français sont considérés comme différents.

              +

              Vous pouvez utiliser le caractère astérisque (*) comme +joker pour prendre la place d'une suite quelconque +de caractères. Par exemple, tapez « no*ion » permet d'accepter +tous les mots commençant par « no » et ceux finissant +par « ion ». Si vous voulez mettre un véritable astérisque +dans vos réponse, tapez simplement une barre oblique inverse +comme cela : \*

              -

              Vous pouvez utiliser le caractère astérisque (*) comme joker pour prendre la place d'une suite quelconque de caractères. Par exemple, tapez « no*ion » permet d'accepter tous les mots commençant par « no » et ceux finissant par « ion ». Si vous voulez mettre un véritable astérisque dans vos réponse, tapez simplement une barre oblique inverse comme cela : \*

              - -

              Attention à l'orthographe ! Sans joker, Moodle comparera la réponse de l'étudiant caractère par caractère avec les bonnes réponses.

              \ No newline at end of file +

              Attention à l'orthographe ! Sans joker, Moodle comparera +la réponse de l'étudiant caractère par caractère +avec les bonnes réponses.

              \ No newline at end of file diff --git a/lang/fr/help/quiz/shuffleanswers.html b/lang/fr/help/quiz/shuffleanswers.html index 0a09a663e1d..63e2c79f0bf 100755 --- a/lang/fr/help/quiz/shuffleanswers.html +++ b/lang/fr/help/quiz/shuffleanswers.html @@ -1,12 +1,16 @@ - +

              Mélanger les réponses

              -

              Mélanger les réponses

              +

              Lorsque vous activez cette option, l'ordre des réponses à +choix sera différent à chaque tentative des étudiants. +Naturellement, ceci ne s'applique qu'à des questions où plusieurs +réponses sont possibles, comme les questions à choix multiples ou +d'appariement.

              -

              Lorsque vous activez cette option, l'ordre des réponses à choix sera différent à chaque tentative des étudiants. Naturellement, ceci ne s'applique qu'à des questions où plusieurs réponses sont possibles, comme les questions à choix multiples ou d'appariement.

              +

              Le mélange des réponses rend la tâche plus difficile pour ceux +qui veulent copier les réponses des autres étudiants.

              -

              Le mélange des réponses rend la tâche plus difficile pour ceux qui veulent copier les réponses des autres étudiants.

              - -

              Cette option n'est pas liée à la construction d'un ensemble de questions aléatoires ; elle ne s'applique qu'aux réponses.

              +

              Cette option n'est pas liée à la construction d'un ensemble de +questions aléatoires ; elle ne s'applique qu'aux réponses.

              diff --git a/lang/fr/help/quiz/shufflequestions.html b/lang/fr/help/quiz/shufflequestions.html index d17768cb00e..9545fc1de78 100755 --- a/lang/fr/help/quiz/shufflequestions.html +++ b/lang/fr/help/quiz/shufflequestions.html @@ -1,9 +1,12 @@ - +

              Mélanger les questions

              -

              Mélanger les questions

              +

              Lorsque cette option est activée, l'ordre des questions est +différent à chaque tentative des étudiants d'effectuer ce +test.

              -

              Lorsque cette option est activée, l'ordre des questions est différent à chaque tentative des étudiants d'effectuer ce test.

              +

              Le mélange des questions rend la tâche plus difficile pour +ceux qui veulent copier les réponses des autres étudiants.

              -

              Le mélange des questions rend la tâche plus difficile pour ceux qui veulent copier les réponses des autres étudiants.

              - -

              Cette option n'est pas liée à la construction d'un ensemble de questions aléatoires ; elle ne s'applique qu'à l'ordre des questions.

              \ No newline at end of file +

              Cette option n'est pas liée à la construction d'un ensemble de +questions aléatoires ; elle ne s'applique qu'à l'ordre des +questions.

              \ No newline at end of file diff --git a/lang/fr/help/quiz/timelimit.html b/lang/fr/help/quiz/timelimit.html index 9ef92dde93b..7bcb149351f 100644 --- a/lang/fr/help/quiz/timelimit.html +++ b/lang/fr/help/quiz/timelimit.html @@ -2,18 +2,14 @@

              Temps disponible

              -

              Par défaut, le temps disponible pour effectuer un test est illimité, ce qui laisse tout le temps à l'étudiant pour terminer le test.

              +

              Par défaut, le temps disponible pour effectuer un test est illimité, ce qui laisse tout le temps à l'étudiant pour terminer le test.

              -

              Si vous spécifiez un temps disponible pour un test, différentes actions sont effectuées pour s'assurer que les tests sont terminés avant l'échéance de cette durée.

              +

              Si vous spécifiez un temps disponible pour un test, différentes actions sont effectuées pour s'assurer que les tests sont terminés avant l'échéance de cette durée.

                - -
              • Le support de Javascript du navigateur devient obligatoire, ce qui permet au chronomètre de fonctionner correctement
              • - -
              • Une fenêtre s'affiche avec un compte à rebours
              • - -
              • Lorsque le temps disponible est échu, le test est automatiquement envoyé avec les réponses données jusqu'à cet instant
              • - -
              • Si un étudiant tente de tricher et prend plus que 60 secondes de plus que la durée allouée, une note de 0 lui est automatiquement attribué
              • - +
              • Le support de Javascript du navigateur devient obligatoire, ce qui permet au chronomètre de fonctionner correctement
              • +
              • Une fenêtre s'affiche avec un compte à rebours
              • +
              • Lorsque le temps disponible est échu, le test est automatiquement envoyé avec les réponses données jusqu'à cet instant
              • +
              • Si un étudiant tente de tricher et prend plus que 60 secondes de plus que la durée allouée, une note de 0 lui est automatiquement attribuée +
              \ No newline at end of file diff --git a/lang/fr/help/quiz/timeopen.html b/lang/fr/help/quiz/timeopen.html index aaac7b219b3..f12dff157e2 100755 --- a/lang/fr/help/quiz/timeopen.html +++ b/lang/fr/help/quiz/timeopen.html @@ -1,8 +1,9 @@ - +

              Ouverture et fermeture d'un test

              -

              Ouverture et fermeture d'un test

              - -

              Vous pouvez indiquer la date d'ouverture et de fermeture d'un test. Les étudiants ne peuvent effectuer le test qu'entre ces deux dates. En dehors de cette période, le test n'est pas disponible.

              +

              Vous pouvez indiquer la date d'ouverture et de fermeture d'un +test. Les étudiants ne peuvent effectuer le test qu'entre ces +deux dates. En dehors de cette période, le test n'est pas +disponible.

              diff --git a/lang/fr/help/quiz/truefalse.html b/lang/fr/help/quiz/truefalse.html index 83fa35bbc74..64d142063ac 100755 --- a/lang/fr/help/quiz/truefalse.html +++ b/lang/fr/help/quiz/truefalse.html @@ -1,10 +1,12 @@ - +

              Questions vrai ou faux

              -

              Questions vrai ou faux

              +

              Ce type de question exige de la part de l'étudiant une réponse +qui peut être seulement « vrai » ou « faux ». On peut faire +afficher une image à la question. -

              Ce type de question exige de la part de l'étudiant une réponse qui peut être seulement « vrai » ou « faux ». On peut faire afficher une image à la question. - -

              Lorsque l'affichage des feedbacks est activé, les messages proposés par l'enseignant pour chaque réponse s'affichent après que l'étudiant a terminé le test.

              +

              Lorsque l'affichage des feedbacks est activé, les messages +proposés par l'enseignant pour chaque réponse s'affichent après +que l'étudiant a terminé le test.

              diff --git a/lang/fr/help/reading.html b/lang/fr/help/reading.html index e85b1149f4b..be01ffe87ce 100755 --- a/lang/fr/help/reading.html +++ b/lang/fr/help/reading.html @@ -1,13 +1,14 @@ - - -

              Conseils de lecture

              - -

              En lisant des textes rapidement, il est souvent très facile de mal comprendre ce que l'auteur essaie de dire.

              - -

              Pour éviter de mal comprendre, lisez leurs mots soigneusement et essayez de voir les choses du point de vue de l'auteur.

              - -

              Il peut également être utile de penser à ce que l'auteur n'a pas dit ou ce qu'il a sous-entendu. Ceci peut vous aider à formuler des questions qui vous guideront dans votre analyse.

              - -

              D'autres conseils sur l'écriture

              - -

              Poser de bonnes questions

              +

              Conseils de lecture

              + +

              En lisant des textes rapidement, il est souvent très facile de mal +comprendre ce que l'auteur essaie de dire.

              + +

              Pour éviter de mal comprendre, lisez leurs mots soigneusement et +essayez de voir les choses du point de vue de l'auteur.

              + +

              Il peut également être utile de penser à ce que l'auteur +n'a pas dit ou ce qu'il a sous-entendu. Ceci peut vous aider à formuler +des questions qui vous guideront dans votre analyse.

              + +

              D'autres conseils sur l'écriture

              +

              Poser de bonnes questions

              diff --git a/lang/fr/help/resource/index.html b/lang/fr/help/resource/index.html index 3ac12d071e2..bd28f423ed4 100755 --- a/lang/fr/help/resource/index.html +++ b/lang/fr/help/resource/index.html @@ -1,29 +1,9 @@

              Ressources

              - -
            • Résumé du document
            • - -
            • Types de ressource
            • - - - -
            • Paramètres
            • - -
            • Réglages de fenêtre
            • - -
            \ No newline at end of file diff --git a/lang/fr/help/resource/mods.html b/lang/fr/help/resource/mods.html index e4491bef2c7..7922c9b35d4 100755 --- a/lang/fr/help/resource/mods.html +++ b/lang/fr/help/resource/mods.html @@ -1,16 +1,16 @@ -

            Ressource Ressources

            +

             Ressources

              -

              Les ressources constituent le contenu que l'enseignant propose aux utilisateurs dans le cadre de son cours. Ces ressources peuvent être :

              +

              Les ressources constituent le contenu que l'enseignant propose aux utilisateurs dans le cadre de son cours. Ces ressources peuvent être :

                -
              • des fichiers déposés préparés localement et déposés ensuite sur le serveur Moodle ;
              • +
              • des fichiers déposés préparés localement et déposés ensuite sur le serveur Moodle ;
              • -
              • des pages éditées directement dans Moodle ;
              • +
              • des pages éditées directement dans Moodle ;
              • ou encore des pages web externes qui semblent alors faire partie du cours.
              • diff --git a/lang/fr/help/resource/parameters.html b/lang/fr/help/resource/parameters.html index 24c5276c670..9957601b5dc 100644 --- a/lang/fr/help/resource/parameters.html +++ b/lang/fr/help/resource/parameters.html @@ -1,9 +1,9 @@ -

                Paramètres des ressources

                +

                Paramètres des ressources

                -

                Si vous spécifiez ici des paramètres, ils seront alors passés à la ressource à l'aide de son URL (méthothe GET).

                +

                Si vous spécifiez ici des paramètres, ils seront alors passés à la ressource à l'aide de son URL (méthothe GET).

                -

                La colonne de gauche (Paramètre) vous permet de sélectionner l'information à envoyer, et la colonne de droite (Nom de la variable) de lui donner un nom.

                +

                La colonne de gauche (Paramètre) vous permet de sélectionner l'information à envoyer, et la colonne de droite (Nom de la variable) de lui donner un nom.

                -

                Il est à remarquer que l'information concernant l'utilisateur seront celles de l'utilisateur en train de consulter la ressource, et que l'information concernant le cours sont celles du cours contenant la ressource.

                \ No newline at end of file +

                Il est à remarquer que l'information concernant l'utilisateur seront celles de l'utilisateur en train de consulter la ressource, et que l'information concernant le cours sont celles du cours contenant la ressource.

                \ No newline at end of file diff --git a/lang/fr/help/resource/summary.html b/lang/fr/help/resource/summary.html index 30b49889171..8dae309e124 100644 --- a/lang/fr/help/resource/summary.html +++ b/lang/fr/help/resource/summary.html @@ -1,9 +1,9 @@ -

                Résumé de la ressource

                +

                Résumé de la ressource

                -

                Ce résumé est une brève description de la ressource. On peut l'interpréter comme des méta-données.

                +

                Ce résumé est une brève description de la ressource. On peut l'interpréter comme des méta-données.

                -

                Évitez d'en écrire trop ici, ou d'y inclure la quasi-totalité de la ressource elle-même !

                +

                Évitez d'en écrire trop ici, ou d'y inclure la quasi-totalité de la ressource elle-même !

                -

                Pour certains types de ressources, le résumé est affiché en même temps que la ressource elle-même. Dans d'autres cas, il apparaît sur la page d'index de la ressource.

                +

                Pour certains types de ressources, le résumé est affiché en même temps que la ressource elle-même. Dans d'autres cas, il apparaît sur la page d'index de la ressource.

                diff --git a/lang/fr/help/resource/type/directory.html b/lang/fr/help/resource/type/directory.html index 4d39cdc6658..cba3bca0a0a 100644 --- a/lang/fr/help/resource/type/directory.html +++ b/lang/fr/help/resource/type/directory.html @@ -1,6 +1,6 @@ -

                Dossier

                +

                Dossier

                  diff --git a/lang/fr/help/resource/type/file.html b/lang/fr/help/resource/type/file.html index 231c172a53e..f9f84167947 100644 --- a/lang/fr/help/resource/type/file.html +++ b/lang/fr/help/resource/type/file.html @@ -1,6 +1,6 @@ -

                  Fichiers et pages web

                  +

                  Fichiers et pages web

                    diff --git a/lang/fr/help/resource/type/html.html b/lang/fr/help/resource/type/html.html index e4c4c7ab768..7e852bdfc8f 100644 --- a/lang/fr/help/resource/type/html.html +++ b/lang/fr/help/resource/type/html.html @@ -1,6 +1,6 @@ -

                    Page web en code HTML

                    +

                    Page web en code HTML

                      diff --git a/lang/fr/help/resource/type/label.html b/lang/fr/help/resource/type/label.html index 3cc466c95f5..e10e0357578 100644 --- a/lang/fr/help/resource/type/label.html +++ b/lang/fr/help/resource/type/label.html @@ -1,6 +1,6 @@ -

                      Étiquettes

                      +

                      Étiquettes

                        diff --git a/lang/fr/help/resource/type/reference.html b/lang/fr/help/resource/type/reference.html index 70589d51e4d..0c4c25d7aea 100644 --- a/lang/fr/help/resource/type/reference.html +++ b/lang/fr/help/resource/type/reference.html @@ -1,6 +1,6 @@ -

                        Référence

                        +

                        Référence

                          diff --git a/lang/fr/help/resource/type/text.html b/lang/fr/help/resource/type/text.html index 83b8be92d98..be62226dabc 100644 --- a/lang/fr/help/resource/type/text.html +++ b/lang/fr/help/resource/type/text.html @@ -1,6 +1,6 @@ -

                          Page de texte

                          +

                          Page de texte

                            diff --git a/lang/fr/help/resource/types.html b/lang/fr/help/resource/types.html index e5ea15f693c..7e9d55ab9a5 100644 --- a/lang/fr/help/resource/types.html +++ b/lang/fr/help/resource/types.html @@ -1,5 +1,5 @@ -

                            Types de ressources

                            +

                            Types de ressources

                            -

                            Moodle supporte un large éventail de ressources différentes, vous permettant d'insérer pratiquement n'importe quelque type de contenu web dans vos cours.

                            \ No newline at end of file +

                            Moodle supporte un large éventail de ressources différentes, vous permettant d'insérer pratiquement n'importe quelque type de contenu web dans vos cours.

                            \ No newline at end of file diff --git a/lang/fr/help/richtext.html b/lang/fr/help/richtext.html index 38fb06ac799..66e8f491359 100755 --- a/lang/fr/help/richtext.html +++ b/lang/fr/help/richtext.html @@ -1,8 +1,6 @@ - +

                            Éditeur WYSIWYG intégré

                            -

                            Éditeur WYSIWYG intégré

                            - -

                            Disponibilité : +

                            Disponibilité : htmleditor) { print_string("htmleditordisabledadmin"); } else if (!$USER->htmleditor) { @@ -13,139 +11,161 @@ print_string("htmleditoravailable"); } ?> -

                            +

                            -

                            L'éditeur WYSIWYG présente une interface semblable à celle des traitements de textes. Il permet d'éditer un texte intuitivement et produit du code HTML normal.

                            +

                            L'éditeur WYSIWYG présente une interface semblable à celle des +traitements de textes. Il permet d'éditer un texte intuitivement et +produit du code HTML normal.

                            -

                            En plus du formatage du texte, l'éditeur a les fonctionnalités suivantes :

                            +

                            En plus du formatage du texte, l'éditeur a les fonctionnalités +suivantes :

                            -

                            Coller du texte en provenance d'une autre application

                            +

                            Coller du texte en provenance d'une autre application

                            +
                              +

                              Vous pouvez copier et coller du texte formaté dans d'autres +applications, par exemple Word, directement dans cet éditeur et tout le +formatage sera conservé. On utilise pour cela les commandes Copier et +Coller du navigateur.

                              +
                            -
                              Vous pouvez copier et coller du texte formaté dans d'autres applications, par exemple Word, directement dans cet éditeur et tout le formatage sera conservé. On utilise pour cela les commandes Copier et Coller du navigateur.
                            +

                            Insérer des images

                            +
                              +

                              Vous pouvez insérer des images déjà publiées sur +un site web en cliquant sur le bouton « Insérer +image » et en tapant l'URL de l'image.

                              +
                            -

                            Insérer des images

                            +

                            Insérer un tableau

                            +
                              +

                              On peut insérer un tableau dans le texte en utilisant le bouton +correspondant.

                              +
                            -
                              Vous pouvez insérer des images déjà publiées sur un site web en cliquant sur le bouton « Insérer image » et en tapant l'URL de l'image.
                            +

                            Insérer un lien hypertexte

                            +
                              +

                              Pour insérer un lien hypertexte, tapez tout d'abord le texte qui +servira de lien. Sélectionnez ce texte et cliquez sur le bouton +d'insertion de lien. Tapez ensuite l'URL désirée.

                              +
                            -

                            Insérer un tableau

                            - -
                              On peut insérer un tableau dans le texte en utilisant le bouton correspondant.
                            - -

                            Insérer un lien hypertexte

                            - -
                              Pour insérer un lien hypertexte, tapez tout d'abord le texte qui servira de lien. Sélectionnez ce texte et cliquez sur le bouton d'insertion de lien. Tapez ensuite l'URL désirée.
                            - -

                            Insérer des binettes (emoticons)

                            - -
                              Pour insérer des binettes dans votre texte, cliquez sur l'icône sourire dans la barre d'icônes. Une fenêtre s'ouvrira, avec la liste des binettes disponibles. Cliquez sur une des binettes ou notez le code correspondant, que vous pourrez taper directement dans votre texte.

                              +

                              Insérer des binettes (emoticons)

                              +
                                +

                                Pour insérer des binettes dans votre texte, cliquez sur l'icône +sourire dans la barre d'icônes. Une fenêtre s'ouvrira, avec la liste +des binettes disponibles. Cliquez sur une des binettes ou notez le code +correspondant, que vous pourrez taper directement dans votre texte.

                                - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
                                sourire:-):-)
                                grand sourire:-d:-d
                                clin d'oeil;-);-)
                                incertain:-/:-/
                                pensifv-.v-.
                                langue sortie:-p:-p
                                coolb-)b-)
                                approbateur^-)^-)
                                yeux grands ouverts8-)8-)
                                surprise8-o8-o
                                - + - + - - - + + + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - +
                                triste:-(:-(
                                gêné8-.gêné8-.
                                rouge:-i:-i
                                baisers:-x:-x
                                clown:o):o)
                                oeil au beurre noirp-|p-|
                                fâché8-[fâché8-[
                                mortxx-pxx-p
                                endormi|-.|-.
                                diabolique}-]}-]
                                diff --git a/lang/fr/help/scales.html b/lang/fr/help/scales.html index c7e11528877..39146900d91 100755 --- a/lang/fr/help/scales.html +++ b/lang/fr/help/scales.html @@ -1,17 +1,30 @@ - +

                                Barêmes

                                -

                                Barèmes

                                +

                                Un barême pour une évaluation représente les +différents niveaux que peut avoir atteint l'élève dans son +travail. Par exemple : (Faible, Passable, Moyen, Bon, Excellent).

                                -

                                Un barème pour une évaluation représente les différents niveaux que peut avoir atteint l'élève dans son travail. Par exemple : (Faible, Passable, Moyen, Bon, Excellent).

                                +

                                Les enseignants peuvent créer de nouveaux barêmes qui peuvent +être employés dans un cours pour toutes les activités +où il y a une évaluation.

                                -

                                Les enseignants peuvent créer de nouveaux barèmes qui peuvent être employés dans un cours pour toutes les activités où il y a une évaluation.

                                +

                                Le nom du barême devrait permettre de l'identifier clairement. Ce nom +apparaîtra dans les menus de sélection des barêmes et sur les +boutons d'aide contextuelle.

                                -

                                Le nom du barème devrait permettre de l'identifier clairement. Ce nom apparaîtra dans les menus de sélection des barèmes et sur les boutons d'aide contextuelle.

                                +

                                Un barême est défini par une liste de valeurs, +séparées par des virgules, s'étendant du négatif au +positif. Par exemple :

                                -

                                Un barème est défini par une liste de valeurs, séparées par des virgules, s'étendant du négatif au positif. Par exemple :

                                +
                                + Décevant, Pas assez bon, Moyen, Bon, Très bon, Excellent +
                                -
                                Décevant, Pas assez bon, Moyen, Bon, Très bon, Excellent
                                +

                                Les barêmes devraient également inclure une bonne description du +contexte d'utilisation. Cette description apparaîtra sur les pages d'aide +pour les enseignants et les étudiants.

                                -

                                Les barèmes devraient également inclure une bonne description du contexte d'utilisation. Cette description apparaîtra sur les pages d'aide pour les enseignants et les étudiants.

                                - -

                                Finalement, il peut y avoir un ou plusieurs barèmes « standard » définis sur votre site par l'administrateur du site. Ces barèmes sont alors disponibles dans tous les cours.

                                +

                                Finalement, il peut y avoir un ou plusieurs barêmes +« standard » définis sur votre site par +l'administrateur du site. Ces barêmes sont alors disponibles dans tous les +cours.

                                diff --git a/lang/fr/help/search.html b/lang/fr/help/search.html deleted file mode 100644 index e07128f8fe4..00000000000 --- a/lang/fr/help/search.html +++ /dev/null @@ -1,67 +0,0 @@ - - -

                                Comment effectuer des recherches ?

                                - -

                                La recherche du texte intégral offre diverses options indiquées ci-dessous. Elles peuvent être combinées afin d'affiner vos recherches.

                                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                rechercher ces motsPour une recherche simple d'un ou plusieurs mots n'importe où dans le texte, il suffit de les taper, en les séparant par des espaces. Les mots de moins de 3 caractères sont ignorés.
                                rechercher +ces +motsL'exemple précédent aurait notamment permis de trouver le terme « marmots », qui contient les lettres « mots ». Pour faire en sorte que seuls des mots entiers soient trouvés, on utilise le symbole plus (+).
                                +moteur -rechecheL'utilisation du signe moins (-) permet d'exclure des termes de la recherche.
                                "moteur de recherche"Pour rechercher une expression, on la placera entre guillemets droits (").
                                user:NicolasPour rechercher des textes d'un utilisateur en particulier, on préfixera un des mots de son nom de l'expression « user: ».
                                userid:6Si vous connaissez l'identifiant (Moodle ID) d'un utilisateur, vous pouvez rechercher ses contributions en utilisant la syntaxe « userid: », suivie de l'identifiant.
                                subject:compositionPour rechercher un terme apparaissant dans le sujet ou le titre d'un texte, préfixer le mot de l'expression « subject: ».
                                - -

                                Pour des critères de recherche plus pointus, cliquez sur le bouton sans taper quoi que ce soit dans les différents champs. Un formulaire complet vous sera affiché, vous permettant de spécifier plus précisément votre recherche.

                                \ No newline at end of file diff --git a/lang/fr/help/summaries.html b/lang/fr/help/summaries.html index f0a13318561..ded0054675d 100755 --- a/lang/fr/help/summaries.html +++ b/lang/fr/help/summaries.html @@ -1,9 +1,14 @@ - +

                                Résumé des thèmes ou semaines

                                -

                                Résumé des thèmes ou semaines

                                +

                                Le résumé est un texte très court destiné +à préparer les étudiants aux activités du +thème ou de la semaine.

                                -

                                Le résumé est un texte très court destiné à préparer les étudiants aux activités du thème ou de la semaine.

                                +

                                Chaque résumé devrait être bref, de sorte que la page de +cours ne devienne pas trop longue.

                                -

                                Chaque résumé devrait être bref, de sorte que la page de cours ne devienne pas trop longue.

                                - -

                                Si le résumé comporte plus d'une phrase ou deux, on suggère plutôt d'ajouter une ressource (un texte) à ce thème (par exemple, la première activité pourrait être une page appelée « À propos de cette matière »).

                                \ No newline at end of file +

                                Si le résumé comporte plus d'une phrase ou deux, on +suggère plutôt d'ajouter une ressource (un texte) à ce +thème (par exemple, la première activité pourrait +être une page appelée « À propos de cette +matière »).

                                \ No newline at end of file diff --git a/lang/fr/help/survey/index.html b/lang/fr/help/survey/index.html index 556a99b8eb3..eabdf0c19a5 100755 --- a/lang/fr/help/survey/index.html +++ b/lang/fr/help/survey/index.html @@ -1,10 +1,7 @@

                                Consultations

                                - diff --git a/lang/fr/help/survey/mods.html b/lang/fr/help/survey/mods.html index 6c8f3c79d58..94d2e57f56b 100755 --- a/lang/fr/help/survey/mods.html +++ b/lang/fr/help/survey/mods.html @@ -1,9 +1,9 @@ -

                                Consultation Consultations

                                +

                                 Consultations

                                  -Le module consultation fournit un certain nombre d'instruments qui se sont avérés très utiles et très stimulants pour environnements en ligne. Les enseignants peuvent les employer pour recueillir des données qui les informeront sur leurs étudiants et ainsi réfléchir sur leur propre enseignement. +

                                  Le module consultation fournit un certain nombre d'instruments qui se sont avérés très utiles et très stimulants pour environnements en ligne. Les enseignants peuvent les employer pour recueillir des données qui les informeront sur leurs étudiants et ainsi réfléchir sur leur propre enseignement.

                                \ No newline at end of file diff --git a/lang/fr/help/surveys.html b/lang/fr/help/surveys.html index 9b53dd6adee..c738a350b93 100644 --- a/lang/fr/help/surveys.html +++ b/lang/fr/help/surveys.html @@ -1,97 +1,103 @@ -

                                Consultations disponibles

                                +

                                Consultations disponibles

                                -

                                Moodle n'offre actuellement que certains types spécifiques de questionnaires d'évaluation prédéfinis (une version ultérieure vous permettra de créer vos propres questionnaires).

                                +

                                Moodle n'offre actuellement que certains types spécifiques de questionnaires d'évaluation prédéfinis (une version ultérieure vous permettra de créer vos propres questionnaires).

                                -

                                Les consultations proposées ont été choisies spécialement pour leur habilité à évaluer des environnements d'apprentissage en ligne utilisant la pédagogie constructiviste. Elles permettent d'identifier certaines tendances dans les interactions entre les participants à vos cours. +

                                Les consultations proposées ont été choisies spécialement pour leur habilité à évaluer des environnements d'apprentissage en ligne utilisant la pédagogie constructiviste. Elles permettent d'identifier certaines tendances dans les interactions entre les participants à vos cours. -(L'article suivant décrit une utilisation détaillée de ces instruments : http://dougiamas.com/writing/herdsa2002.)

                                +(L'article suivant décrit une utilisation détaillée de ces instruments : http://dougiamas.com/writing/herdsa2002.)


                                -

                                COLLES - Consultation sur les environnements d'apprentissage constructivistes en ligne (Constructivist On-Line Learning Environment Survey)

                                +

                                COLLES - Consultation sur les environnements d'apprentissage constructivistes en ligne (Constructivist On-Line Learning Environment Survey)

                                  -

                                  La « Consultation sur les environnements d'apprentissage constructivistes en ligne » (COLLES) comprend 24 énoncés regroupés en fonction de six critères, chacun évaluant un aspect clef de l'environnement d'apprentissage en ligne.

                                  +

                                  La « Consultation sur les environnements d'apprentissage constructivistes en ligne » (COLLES) comprend 24 énoncés regroupés en fonction de six critères, chacun évaluant un aspect clef de l'environnement d'apprentissage en ligne.

                                  + Pertinence + Dans quelle mesure les étudiants s'engagent-ils dans + des dialogues véritables qui augmentent leurs + apprentissages ? + Soutien par le tuteur + Est-ce que la communication entre les tuteurs et les étudiants + est bonne, précise et aidante ?
                                  - Pertinence Est-ce que les apprentissages en ligne sont pertinents pour le - travail futur des étudiants ? + travail futur des étudiants ?
                                  - Sens critique + Sens critique - Est-ce que l'environnement d'apprentissage en ligne permet de développer davantage le sens critique des étudiants ? + Est-ce que l'environnement d'apprentissage en ligne permet de + développer davantage le sens critique des étudiants ?
                                  - Interactivité + Interactivité - Dans quelle mesure les étudiants s'engagent-ils dans des dialogues véritables qui augmentent leurs apprentissages ?
                                  - Soutien par le tuteur - Dans quelle mesure les tuteurs encouragent-ils les étudiants à participer dans les échanges virtuels ? + Dans quelle mesure les tuteurs encouragent-ils les étudiants + à participer dans les échanges virtuels ?
                                  - Soutien par les pairs + Soutien par les pairs - Dans l'environnement en ligne, est-ce que les pairs fournissent un soutien réel et profitable ? + Dans l'environnement en ligne, est-ce que les pairs + fournissent un soutien réel et profitable ?
                                  - Communication + Communication - Est-ce que la communication entre les tuteurs et les étudiants est bonne, précise et aidante ?

                                  -

                                  Le fondement de la vision de l'apprentissage qui guide le développement de Moodle est une théorie de l'apprentissage appelée le socio-constructivisme, qui dépeint l'étudiant comme un participant actif dans un environnement d'étude socialement interactif. Le socio-constructivisme est une façon d'apprendre où les étudiants collaborent pour construire de nouveaux savoirs, particulièrement dans le contexte d'un questionnement mutuel ancré dans leur expérience personnelle.

                                  +

                                  Le fondement de la vision de l'apprentissage qui guide le développement de Moodle est une théorie de l'apprentissage appelée le socio-constructivisme, qui dépeint l'étudiant comme un participant actif dans un environnement d'étude socialement interactif. Le socio-constructivisme est une façon d'apprendre où les étudiants collaborent pour construire de nouveaux savoirs, particulièrement dans le contexte d'un questionnement mutuel ancré dans leur expérience personnelle.

                                  -

                                  Le point central de cette collaboration est le développement de la compétence communicative des étudiants, c'est-à-dire la capacité de s'engager dans le discours ouvert et critique avec l'enseignant et avec des pairs. Ce discours est caractérisé par une orientation empathique à construire la compréhension réciproque, et une attitude critique envers des prétentions fondamentales examinantes.

                                  +

                                  Le point central de cette collaboration est le développement de la compétence communicative des étudiants, c'est-à-dire la capacité de s'engager dans le discours ouvert et critique avec l'enseignant et avec des pairs. Ce discours est caractérisé par une orientation empathique à construire la compréhension réciproque, et une attitude critique envers des prétentions fondamentales examinantes.

                                  -

                                  Le COLLES a été conçu pour vous permettre de surveiller à quel point vous pouvez exploiter la capacité interactive du Web pour engager des étudiants dans des processus d'apprentissage dynamiques.

                                  +

                                  Le COLLES a été conçu pour vous permettre de surveiller à quel point vous pouvez exploiter la capacité interactive du Web pour engager des étudiants dans des processus d'apprentissage dynamiques.

                                  -

                                  (Cette information a été adaptée de la page de COLLES. Vous pouvez découvrir plus au sujet de COLLES et ses auteurs sur http://surveylearning.com/colles/)

                                  +

                                  (Cette information a été adaptée de la page de COLLES. Vous pouvez découvrir plus au sujet de COLLES et ses auteurs sur http://surveylearning.com/colles/)


                                -

                                ATTLS - Consultation sur les Attitudes envers la réflexion et l'apprentissage (Attitudes to Thinking and Learning Survey)

                                  +

                                  ATTLS - Consultation sur les Attitudes envers la réflexion et l'apprentissage (Attitudes to Thinking and Learning Survey)

                                    -

                                    La théorie sur les « manières de savoir », qui puise ses origines dans la recherche sur les genres (Belenky et al., 1986), fournit un instrument d'évaluation permettant d'examiner la qualité du discours dans un environnement collaboratif.

                                    +

                                    La théorie sur les « manières de savoir », qui puise ses origines dans la recherche sur les genres (Belenky et al., 1986), fournit un instrument d'évaluation permettant d'examiner la qualité du discours dans un environnement collaboratif.

                                    -

                                    La « Consultation sur les attitudes envers la réflexion et l'apprentissage » (ATTLS) est un instrument développé par Galotti et al. (1999) pour mesurer à quel point une personne est un « knower lié » (CK = connected knower) ou un « knower détaché » (SK = separated knower). +

                                    La « Consultation sur les attitudes envers la réflexion et l'apprentissage » (ATTLS) est un instrument développé par Galotti et al. (1999) pour mesurer à quel point une personne est un « knower lié » (CK = connected knower) ou un « knower détaché » (SK = separated knower). -

                                    Les personnes avec un score CK élevé trouvent généralement plus de plaisir dans l'apprentissage et sont en général plus enclin à collaborer, empathiques et acceptent plus facilement de construire à partir des idées des autres. En revanche, ceux qui ont un score SK plus élevé ont en général une approche plus critique et argumentative de l'apprentissage.

                                    +

                                    Les personnes avec un score CK élevé trouvent généralement plus de plaisir dans l'apprentissage et sont en général plus enclin à collaborer, empathiques et acceptent plus facilement de construire à partir des idées des autres. En revanche, ceux qui ont un score SK plus élevé ont en général une approche plus critique et argumentative de l'apprentissage.

                                    -

                                    Des études ont montré que ces deux styles d'apprentissage sont indépendants l'un de l'autre (Galotti et al., 1999; Galotti et al., 2001). En outre, ils ne constituent qu'une réflexion sur les attitudes d'apprentissage, et non sur les capacités d'apprentissage ou sur l'intelligence.

                                    +

                                    Des études ont montré que ces deux styles d'apprentissage sont indépendants l'un de l'autre (Galotti et al., 1999; Galotti et al., 2001). En outre, ils ne constituent qu'une réflexion sur les attitudes d'apprentissage, et non sur les capacités d'apprentissage ou sur l'intelligence.

                                    -

                                    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.

                                    +

                                    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.

                                    -

                                    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.

                                    +

                                    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.

                                    -

                                    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.

                                    +

                                    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.

                                  diff --git a/lang/fr/help/teachers.html b/lang/fr/help/teachers.html index f4da9dee97d..23b5754dca9 100755 --- a/lang/fr/help/teachers.html +++ b/lang/fr/help/teachers.html @@ -1,27 +1,11 @@ -

                                  Enseignants

                                  +

                                  Enseignants

                                  -

                                  Vous trouverez sur cette page la liste des personnes désignées comme enseignants dans ce cours (par un administrateur du site ou un responsable de cours).

                                  +

                                  Vous trouverez sur cette page la liste des personnes désignées comme enseignants dans ce cours (par un administrateur du site ou un responsable de cours).

                                  -

                                  Vous pouvez utiliser ce formulaire pour donner un nom à ce rôle : professeur, enseignant, gourou, tuteur, assistant, mentor, etc. Ce titre apparaîtra dans la liste des cours du site. Si vous ne définissez pas ce titre, le nom « enseignant » leur sera attribué.

                                  +

                                  Vous pouvez utiliser ce formulaire pour donner un nom à ce rôle : professeur, enseignant, gourou, tuteur, assistant, mentor, etc. Ce titre apparaîtra dans la liste des cours du site. Si vous ne définissez pas ce titre, le nom « enseignant » leur sera attribué.

                                  -

                                  Vous pouvez également modifier l'ordre dans lequel apparaîtront les enseignants. Choisissez le nombre désiré pour chaque personne dans la colonne « Ordre ». Les changements seront affichés une fois la liste enregistrée.

                                  +

                                  Vous pouvez également modifier l'ordre dans lequel apparaîtront les enseignants. Choisissez le nombre désiré pour chaque personne dans la colonne « Ordre ». Les changements seront affichés une fois la liste enregistrée.

                                  -

                                  Remarque : Vous pouvez cacher le nom d'un enseignant en choisissant « Caché ». Dans ce cas, le nom de l'enseignant n'apparaîtra pas dans la liste des cours, ni dans la liste des participants. Le nom de l'enseignant ne sera visible que s'il participe à des activités, par exemple à un forum.

                                  - -

                                  Il est aussi possible de déterminer si un enseignant est un éditeur ou non dans le cours. Les enseignants qui ne sont pas éditeurs dans un cours sont à considérer comme des tuteurs.

                                  - -
                                    - -
                                  1. Ils ne peuvent pas changer la structure du cours.
                                  2. - -
                                  3. Ils ne peuvent pas inscrire ou désinscrire des étudiants dans le cours.
                                  4. - -
                                  5. Ils peuvent donner des notes.
                                  6. - -
                                  7. Ils peuvent participer aux activités pour donner de l'aide.
                                  8. - -
                                  - -

                                  Lorsqu'ils font partie d'un groupe, ils ne peuvent effectuer les tâches 3 et 4 ci-dessus que dans ce groupe.

                                  \ No newline at end of file +

                                  Remarque : Vous pouvez cacher le nom d'un enseignant en choisissant « Caché ». Dans ce cas, le nom de l'enseignant n'apparaîtra pas dans la liste des cours, ni dans la liste des participants. Le nom de l'enseignant ne sera visible que s'il participe à des activités, par exemple à un forum.

                                  \ No newline at end of file diff --git a/lang/fr/help/text.html b/lang/fr/help/text.html index 27909fcaaf4..b299267308b 100644 --- a/lang/fr/help/text.html +++ b/lang/fr/help/text.html @@ -1,67 +1,39 @@ - +

                                  Aide à la saisie de textes

                                  -

                                  Aide à la saisie de textes

                                  - -

                                  La saisie de textes fonctionne dans Moodle à peu près de la façon dont vous l'attendez. Vous avez en plus la possibilité d'ajouter à votre texte des « smilies » ou « binettes », des adresses URL et quelques balises HTML.

                                  - -

                                  Binettes (emoticons)

                                  +

                                  La saisie de textes fonctionne dans Moodle à peu près de la façon dont vous l'attendez. Vous avez en plus la possibilité d'ajouter à votre texte des « smilies » ou « binettes », des adresses URL et quelques balises HTML.

                                  +

                                  Binettes (smilies ou emoticons)

                                    - - - - - - - + - - - - + - - -
                                    Nom Dessin Ce qu'il faut taper
                                    sourire smile :-)
                                    triste sad :-(
                                    très contentgrin :-D
                                    très contentgrin :-D
                                    clin d'oeil wink ;-)
                                    confus mixed :-/
                                    choqué wide-eyed 8-)
                                    choqué wide-eyed 8-)
                                    langue tongue-out :-P
                                    surprise surprised :-o
                                    cool cool B-)
                                    -
                                  -

                                  URLs

                                  - +

                                  URLs

                                    - -

                                    Tout texte commençant par www. ou par http:// est automatiquement converti en un lien cliquable.

                                    - +

                                    Tout texte commençant par www. ou par http:// est automatiquement converti en un lien cliquable.

                                    Par exemple : www.google.com or http://moodle.org

                                    -
                                  -

                                  Balises HTML

                                  - +

                                  Balises HTML

                                    - -

                                    Vous pouvez utiliser quelques balises HTML pour rendre vos textes plus clairs et structurés.

                                    - +

                                    Vous pouvez utiliser quelques balises HTML pour rendre vos textes plus clairs et structurés.

                                    - - - - - - - - - - - + + + + + + +
                                    Balises HTML Effet produit
                                    <b> gras </B> texte en caractères gras
                                    <i> italique </I> texte en caractères italiques
                                    <u> souligné </U> texte souligné
                                    <font color="green"> exemple </font>texte en couleur verte
                                    Balises HTML Effet produit
                                    <B> gras </B> texte en caractères gras
                                    <I> italique </I> texte en caractères italiques
                                    <U> souligné </U> texte souligné
                                    <FONT SIZE=1> petit </FONT> texte en petits caractères
                                    <FONT SIZE=4> grand </FONT> texte en grands caractères
                                    <FONT COLOR=green> exemple </FONT>texte en couleur verte
                                    -
                                  \ No newline at end of file diff --git a/lang/fr/help/textformat.html b/lang/fr/help/textformat.html index 58ea49a5d38..c08bfc7bb86 100755 --- a/lang/fr/help/textformat.html +++ b/lang/fr/help/textformat.html @@ -1,67 +1,71 @@ -

                                  Formatage d'un texte

                                  +

                                  Formatage d'un texte

                                  -

                                  Lorsque vous saisissez du texte dans Moodle, vous pouvez choisir entre plusieurs formats en fonction de votre expertise et du type de navigateur utilisé.

                                  +

                                  Lorsque vous saisissez du texte dans Moodle, vous pouvez choisir entre plusieurs formats en fonction de votre expertise et du type de navigateur utilisé.

                                  -

                                  La plupart du temps, le format par défaut produira les résultats attendus..

                                  +

                                  La plupart du temps, le format par défaut produira les résultats attendus..

                                  -

                                  1. Format Moodle

                                  +

                                  1. Format Moodle

                                    - -

                                    Ce format est préférable à l'éditeur WYSIWYG intégré lorsque vous entrez du texte dans un formulaire standard sur une page Web. Écrivez normalement votre texte comme si c'était un courriel.

                                    +

                                    Ce format est préférable à l'éditeur WYSIWYG intégré lorsque vous entrez du texte dans un formulaire standard sur une page Web. Écrivez normalement votre texte comme si c'était un courriel.

                                    Moodle effectuera certaines transformations lorsque vous sauvegarderez votre texte.

                                    -

                                    Moodle ajoutera automatiquement des balises HTML nécessaires pour que :

                                    +

                                    Moodle ajoutera automatiquement des balises HTML nécessaires pour que :

                                    -

                                    Les adresses URL, par exemple http://moodle.org/ et www.etoile-des-enfants.ch seront transformées en liens hypertextes.

                                    +

                                    Les adresses URL, par exemple http://moodle.org/ et www.etoile-des-enfants.ch seront transformées en liens hypertextes.

                                    -

                                    Les changements de ligne et les lignes vides seront conservées.

                                    +

                                    Les changements de ligne et les lignes vides seront conservées.

                                    -

                                    Les binettes, par exemple :-), seront remplacées par leurs équivalents graphiques.

                                    - -

                                    Vous pouvez insérer du code HTML, qui sera interprété correctement.

                                    - -

                                    Informations supplémentaires sur le format Moodle

                                    +

                                    Les binettes, par exemple :-), seront remplacées par leurs équivalents graphiques.

                                    +

                                    Vous pouvez insérer du code HTML, qui sera interprété correctement.

                                    +

                                    Informations supplémentaires sur le format Moodle

                                  -

                                  2. Format HTML

                                  +

                                  2. Format HTML

                                  -

                                  3. Format texte

                                  +

                                  3. Format texte

                                    - -

                                    Utilisez ce format lorsque vous avez beaucoup de code ou de balises HTML à écrire. Seuls les espaces et les retours à la ligne seront produits automatiquement. Tout le reste ne sera pas formaté.

                                    - +

                                    Utilisez ce format lorsque vous avez beaucoup de code ou de balises HTML à écrire. Seuls les espaces et les retours à la ligne seront produits automatiquement. Tout le reste ne sera pas formaté.

                                  -

                                  4. Format Markdown

                                  +

                                  4. Format Markdown

                                    +

                                    Le format Markdown tente de rendre aussi simple que possible l'écriture de pages XHTML dans une syntaxe correcte, en n'utilisant rien d'autres que du texte tel qu'on l'écrirait dans un courriel.

                                    -

                                    Le format Markdown tente de rendre aussi simple que possible l'écriture de pages XHTML dans une syntaxe correcte, en n'utilisant rien d'autres que du texte tel qu'on l'écrirait dans un courriel.

                                    +

                                    C'est un excellent format pour l'écriture de pages de textes avec des titres et des listes, mais ne comportant que quelques liens ou images.

                                    -

                                    C'est un excellent format pour l'écriture de pages de textes avec des titres et des listes, mais ne comportant que quelques liens ou images.

                                    +

                                    Informations supplémentaires sur le format Markdown

                                    +
                                  -

                                  Informations supplémentaires sur le format Markdown

                                  +

                                  5. Format genre Wiki

                                  +
                                    +

                                    Ce format utilise pour le formatage du texte des codes simplifiés. Cette façon est connue sous le nom de Texte genre Wiki. Si vous avez déjà de l'expérience dans la fabrication de pages wiki, ce format est pour vous !

                                    + +

                                    Il est à remarquer qu'il ne s'agit pas réellement d'un wiki. En outre, la syntaxe utilisée est légèrement différente de celle du module Wiki de Moodle.

                                    + +

                                    Informations supplémentaires sur le format genre Wiki

                                    +
                                  + +

                                  Informations supplémentaires sur le format genre Wiki

                                \ No newline at end of file diff --git a/lang/fr/help/uploadusers.html b/lang/fr/help/uploadusers.html index b9c51069ca2..6ed108da38b 100755 --- a/lang/fr/help/uploadusers.html +++ b/lang/fr/help/uploadusers.html @@ -1,49 +1,27 @@ - +

                                Importer des utilisateurs

                                -

                                Importer des utilisateurs

                                - -

                                Notons avant tout qu'il n'est habituellement pas nécessaire d'importer des utilisateurs pour les inscrire. Pour réduire les interventions manuelles dans la gestion du site, il est préférable d'utiliser l'une des méthodes d'authentification proposées par Moodle. Par exemple, Moodle peut se connecter à une base de données externe, ou bien les utilisateurs peuvent créer leurs propres comptes. Voyez la section Authentification dans la page d'administration de votre site.

                                - -

                                Si vous désirez toutefois importer manuellement des comptes utilisateurs à partir d'un fichier texte, ce fichier doit être formaté de la façon suivante :

                                +

                                Notons avant tout qu'il n'est habituellement pas nécessaire d'importer des utilisateurs pour les inscrire. Pour réduire les interventions manuelles dans la gestion du site, il est préférable d'utiliser l'une des méthodes d'authentification proposées par Moodle. Par exemple, Moodle peut se connecter à une base de données externe, ou bien les utilisateurs peuvent créer leurs propres comptes. Voyez la section Authentification dans la page d'administration de votre site.

                                +

                                Si vous désirez toutefois importer manuellement des comptes utilisateurs à partir d'un fichier texte, ce fichier doit être formaté de la façon suivante :

                                  - -
                                • chaque ligne du fichier contient un enregistrement ;
                                • - -
                                • les données de chaque enregistrement sont séparées par une virgule ;
                                • - -
                                • le premier enregistrement contient le nom des champs qui composent les enregistrements. - -
                                  - -

                                  Champs requis : ces champs doivent être mentionnés dans le premier enregistrement et définis pour tous les utilisateurs

                                  - -

                                  username, password, firstname, lastname, email

                                  - -

                                  Champs par défaut : ces champs sont optionnels - s'ils ne sont pas inclus, leurs valeurs seront les mêmes que celles de l'administrateur principal du site

                                  - -

                                  institution, department, city, country, lang, auth, timezone

                                  - -

                                  Champs optionnels : tous ces champs sont optionnels. Les noms de cours utilisés (course1, course2, etc.) sont les « Noms abrégés » des cours. Si un ou des noms de cours sont mentionnés, l'utilisateur sera inscrit comme étudiant à ce ou ces cours. Les noms des groupes doivent correspondre au cours dans lesquels ils sont définis, dans l'exemple ci-dessous, le groupe1 est défini dans le cours1, etc.

                                  - -

                                  idnumber, icq, phone1, phone2, address, url, description, mailformat, maildisplay, htmleditor, autosubscribe, course1, course2, course3, course4, course5, groupe1, groupe2, groupe3, groupe4, groupe5

                                  - -
                                  - -
                                • - -
                                • les virgules faisant partie des données doivent être remplacées par le code &#44. Le script d'importation transformera automatiquement ce code en virgule ;
                                • - -
                                • utilisez 1 pour oui/vrai et 0 pour non/faux dans les champs Oui/Non ou Vrai/Faux.
                                • - -
                                • si un utilisateur existe déjà dans la base de données de Moodle, le script inscrira l'utilisateur dans les cours indiqués, mais ne modifiera pas ses données. Il retournera en outre le numéro de cet utilisateur.
                                • - +
                                • chaque ligne du fichier contient un enregistrement ;
                                • +
                                • les données de chaque enregistrement sont séparées par une virgule ;
                                • +
                                • le premier enregistrement contient le nom des champs qui composent les enregistrements. +
                                  +

                                  Champs requis : ces champs doivent être mentionnés dans le premier enregistrement et définis pour tous les utilisateurs

                                  +

                                  username, password, firstname, lastname, email

                                  +

                                  Champs par défaut : ces champs sont optionnels - s'ils ne sont pas inclus, leurs valeurs seront les mêmes que celles de l'administrateur principal du site

                                  +

                                  institution, department, city, country, lang, timezone

                                  +

                                  Champs optionnels : tous ces champs sont optionnels. Les noms de cours utilisés (course1, course2, etc.) sont les « Noms abrégés » des cours. Si un ou des noms de cours sont mentionnés, l'utilisateur sera inscrit comme étudiant à ce ou ces cours.

                                  +

                                  idnumber, icq, phone1, phone2, address, url, description, mailformat, maildisplay, htmleditor, autosubscribe, course1, course2, course3, course4, course5

                                  +
                                  +
                                • +
                                • les virgules faisant partie des données doivent être remplacées par le code &#44 - le script d'importation transformera automatiquement ce code en virgule ;
                                • +
                                • Utilisez 1 pour oui/vrai et 0 pour non/faux dans les champs Oui/Non ou Vrai/Faux.
                                • +
                                • Remarque : si un utilisateur existe déjà dans la base de données de Moodle, le script inscrira l'utilisateur dans les cours indiqués, mais ne modifiera pas ses données. Il retournera en outre le numéro de cet utilisateur.
                                - +

                                Voici un exemple d'un fichier valide :

                                - -

                                username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, groupe1
                                - -lebidon, topsecret, Jules, Lebidon, jlebidon@undomaine.ch, fr, 3663737, 1, Astro101, Groupe A
                                - -marieuntel, ultrasecret, Marie, Untel, marieu@someplace.ca, fr_ca, 6736733, 0, Crypt202, Groupe C

                                \ No newline at end of file +

                                username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1
                                +lebidon, topsecret, Jules, Lebidon, jlebidon@undomaine.ch, fr, 3663737, 1, Astro101
                                +marieuntel, ultrasecret, Marie, Untel, marieu@someplace.ca, fr_ca, 6736733, 0, Crypt202

                                \ No newline at end of file diff --git a/lang/fr/help/wiki.html b/lang/fr/help/wiki.html index cc895fd3e89..bbaf677ef51 100644 --- a/lang/fr/help/wiki.html +++ b/lang/fr/help/wiki.html @@ -1,212 +1,149 @@ -

                                Écrire des pages en texte genre Wiki

                                +

                                Écrire des pages en texte genre Wiki

                                -

                                Le format genre Wiki offre un outil pour formater du texte à l'aide de commandes de formatage intuitives et lisibles. Ces commandes sont automatiquement traduites en XHTML lors de l'affichage. Vous n'avez ainsi pas besoin d'apprendre le langage HTML pour produire des formats relativement complexes, et le texte que vous écrivez s'affiche correctement même avant son affichage définitif. Ce format offre une réelle alternative à l'enregistrement en HTML de fichiers Word, en permettant la modification en ligne de la ressource.

                                +

                                Le format genre Wiki offre un outil pour formater du texte à l'aide de commandes de formatage intuitives et lisibles. Ces commandes sont automatiquement traduites en XHTML lors de l'affichage. Vous n'avez ainsi pas besoin d'apprendre le langage HTML pour produire des formats relativement complexes, et le texte que vous écrivez s'affiche correctement même avant son affichage définitif. Ce format offre une réelle alternative à l'enregistrement en HTML de fichiers Word, en permettant la modification en ligne de la ressource.

                                -

                                Sur le principe, vous tapez simplement du texte. Un certain nombre de caractères spéciaux vous permettent d'agir sur le format de ce texte.

                                +

                                Sur le principe, vous tapez simplement du texte. Un certain nombre de caractères spéciaux vous permettent d'agir sur le format de ce texte.

                                Formatage des paragraphes

                                -

                                Les paragraphes sont séparés par une ligne vide au moins. Pour changer le format d'un paragraphe, il suffit taper comme premier(s) caractère(s) de la première ligne du paragraphe l'un des codes suivants, suivi d'un espace.

                                - +

                                Les paragraphes sont séparés par une ligne vide au moins. Pour changer le format d'un paragraphe, il suffit taper comme premier(s) caractère(s) de la première ligne du paragraphe l'un des codes suivants, suivi d'un espace.

                                - - - - - - - - - - - - - - + + + + +
                                CodeType de paragraphe
                                AucunParagraphe normal
                                >Citation
                                EspaceTexte préformaté (police monospace)
                                %Le texte préformaté et le formatage Wiki sont ignorés
                                !#Titre - où # est un chiffre de 1 à 6, le niveau du titre (1 est le plus élevé)
                                Q.Question - un formatage est ajouté au paragraphe pour améliorer la présentation des questions/réponses
                                A.Réponse - comme ci-dessus, mais pour une réponse
                                EspaceTexte préformaté (police monospace)
                                %Texte préformaté et le formatage Wiki est ignoré
                                !#Titre - où # est un chiffre de 1 à 6, le niveau du titre (1 est le plus élevé)
                                Q.Question - un formatage est ajouté au paragraphe pour améliorer la présentation des questions/réponses
                                A.Réponse - comme ci-dessus, mais pour une réponse

                                Formatage des listes

                                -

                                De simples listes peuvent être construites facilement en plaçant un caractère spécial au début de chaque ligne de la liste, suivi par un espace. La liste est terminée par une ligne vide. Les listes peuvent être imbriquées, et les listes imbriquées peuvent être de types différents. Les listes et les paragraphes peuvent être combinées pour obtenir le résultat désiré. Les caractères spéciaux sont les suivants.

                                +

                                De simples listes peuvent être construites facilement en plaçant un caractère spécial au début de chaque ligne de la liste, suivi par un espace. La liste est terminée par une ligne vide. Les listes peuvent être imbriquées, et les listes imbriquées peuvent être de types différents. Les listes et les paragraphes peuvent être combinées pour obtenir le résultat désiré. Les caractères spéciaux sont les suivants.

                                - - - - - - - - - - - + + + + +
                                CaractèreType de liste
                                *Liste non ordonnée (puces)
                                #Liste ordonnée(1, 2, 3, etc.)
                                : (deux-point)Liste descriptive, terme à définir
                                ; (point-virgule)Liste descriptive, définition
                                CaractèreType de liste
                                *Liste non ordonnée (puces)
                                #Liste ordonnée(1, 2, 3, etc.)
                                : (deux-point)Liste descriptive, terme à définir
                                ; (point-virgule)Liste descriptive, définition
                                -

                                Exemple de liste imbriquée :

                                - +

                                Exemple de liste imbriquée :

                                -  * Première puce
                                -  * Deuxième puce
                                -  ## Ligne numérotée 1
                                -  ## Ligne numérotée 2
                                -  * Troisième puce
                                +  * Première puce
                                +  * Deuxième puce
                                +  ## Ligne numérotée 1
                                +  ## Ligne numérotée 2
                                +  * Troisième puce
                                 

                                - -

                                produira :

                                - +

                                produira :

                                  - -
                                • Première puce
                                • - -
                                • Deuxième puce
                                • - +
                                • Première puce
                                • +
                                • Deuxième puce
                                  1. - -
                                  2. Ligne numérotée 1
                                  3. - -
                                  4. Ligne numérotée 2
                                  5. - +
                                  6. Ligne numérotée 1
                                  7. +
                                  8. Ligne numérotée 2
                                  - -
                                • Troisième puce
                                • - -
                                +
                              • Troisième puce
                              • +

                              Formatage du texte

                              -

                              Le formatage du texte permet de marquer une partie d'une ligne dans un style différent. Les caractères spéciaux utilisés pour cela peuvent se placer n'importe où sur une ligne, mais ne peut chevaucher plusieurs lignes. Voici ces caractères.

                              +

                              Le formatage du texte permet de marquer une partie d'une ligne dans un style différent. Les caractères spéciaux utilisés pour cela peuvent se placer n'importe où sur une ligne, mais ne peut chevaucher plusieurs lignes. Voici ces caractères.

                              - - - + - - - - - - + + - - - - + - -
                              ExempleRésultatDescription
                              ExempleRésultatDescription
                              *il fait beau*il fait beauGras
                              /il fait beau/il fait beauItalique
                              +il fait beau+il fait beauTexte inséré
                              -il fait beau-il fait beauTexte supprimé
                              +il fait beau+il fait beauTexte inséré
                              -il fait beau-il fait beauTexte supprimé
                              il fait ~world~il fait beauIndice
                              il fait ^world^il fait beauExposant
                              "il fait beau"“il fait beau”Entre guillemets
                              "il fait beau"“il fait beau”Entre guillemets
                              %il fait beau%il fait beauPolice monospace
                              @il fait beau@il fait beauCitation

                              Acronymes

                              -

                              La composition d'acronymes s'obtient en plaçant l'acronyme en lettres capitales, suivies de la description entre parenthèses. Il ne doit y avoir aucun espace entre l'acronyme et la parenthèse. Voici un exemple :

                              +

                              La composition d'acronymes s'obtient en plaçant l'acronyme en lettres capitales, suivies de la description entre parenthèses. Il ne doit y avoir aucun espace entre l'acronyme et la parenthèse. Voici un exemple :

                              - - - + -
                              ExempleRésultat
                              ExempleRésultat
                              HTML(Hypertext Markup Language)HTML

                              Hyperliens

                              -

                              Les liens peuvent être écrits directement dans le texte, et suivi (sans espace) par le texte à afficher sur le lien. Les liens pour les adresses de courriel se traitent de la même manière.

                              +

                              Les liens peuvent être écrits directement dans le texte, et suivi (sans espace) par le texte à afficher sur le lien. Les liens pour les adresses de courriel se traitent de la même manière.

                              - - - + - -
                              ExempleRésultat
                              ExempleRésultat
                              http://www.google.fr/(Rechercher)Rechercher
                              nobody@exemple.net(Utilisateur bidon)Utilisateur bidon

                              Liens vers des modules de Moodle

                              -

                              Si vous connaissez le numéro identifiant et le type d'un module dans Moodle, vous pouvez le lier directement en suivant la syntaxe TypeDuModule:nn(Texte descriptif) comme dans l'exemple ci-dessous. Le type de module doit être écrit suivant sa dénomitation originale en anglais.

                              +

                              Si vous connaissez le numéro identifiant et le type d'un module dans Moodle, vous pouvez le lier directement en suivant la syntaxe TypeDuModule:nn(Texte descriptif) comme dans l'exemple ci-dessous. Le type de module doit être écrit suivant sa dénomitation originale en anglais.

                              - - - -
                              Exemple
                              resource:36(Ma nouvelle page)
                              forum:10(Jump to forum)

                              Liens vers des images de Moodle

                              -

                              Des images peuvent être placées dans les pages en texte genre Wiki. Il vous suffit de déposer l'image sur le site et de noter son chemin d'accès dans la zone des fichiers déposés. Vous utiliserez ensuite la syntaxe /chemin/d/accès/au/fichier(Texte alternatif). +

                              Des images peuvent être placées dans les pages en texte genre Wiki. Il vous suffit de déposer l'image sur le site et de noter son chemin d'accès dans la zone des fichiers déposés. Vous utiliserez ensuite la syntaxe /chemin/d/accès/au/fichier(Texte alternatif). - - - - - +
                              Exemple
                              /photos/groupe.jpg(Photo du personnel)
                              /images/fr/menu.gif(Menu en français)
                              /images/fr/menu.gif(Menu en français)

                              Liens vers des fichiers de Moodle

                              -

                              De la même façon que les images, les fichiers préalablement déposés dans Moodle peuvent être liés sur les pages en texte genre Wiki. La syntaxe est file:/chemin/d/accès/au/fichier(Texte du lien). +

                              De la même façon que les images, les fichiers préalablement déposés dans Moodle peuvent être liés sur les pages en texte genre Wiki. La syntaxe est file:/chemin/d/accès/au/fichier(Texte du lien). - - - - - +
                              Exemple
                              file:/textes/moodle.pdf(Manuel de Moodle)
                              file:/media/movies/navette.mov(Décollage de la navette)
                              file:/media/movies/navette.mov(Décollage de la navette)

                              Formatage automatique

                              -

                              De nombreux textes sont automatiquement convertis en leur équivalent XHTML. Les principaux sont les suivants :

                              +

                              De nombreux textes sont automatiquement convertis en leur équivalent XHTML. Les principaux sont les suivants :

                                - -
                              • Les liens HTTP sont automatiquement convertis en liens actifs
                              • - -
                              • Les textes (R), (TM), (C), 1/4, 1/2, 3/4 sont tous transformés dans le caractère correspondant
                              • - -
                              • 123 x 456 affiche un symbole de multiplication correct (avec n'importe quels nombres !)/li> - -
                              • Toute ligne commençant par au moins 4 tirets est convertie une ligne horizontale
                              • - +
                              • Les liens HTTP sont convertis en liens actifs
                              • +
                              • (R), (TM), (C), 1/4, 1/2, 3/4 sont tous transformés dans le caractère correct correspondant
                              • +
                              • 123 x 456 affiche un symbole de multiplication correct
                              • +
                              • Toute ligne commençant par au moins 4 tirets est convertie une ligne horizontale

                              Correcteur orthographique (experimental)

                              -

                              Le moteur Wiki de Moodle peut être placé en mode correcteur orthographique. Si vous placez une ligne de la forme suivante, tout ce qui sera écrit ensuite sera vérifié. +

                              Le moteur Wiki de Moodle peut être placé en mode correcteur orthographique. Si vous placez une ligne de la forme suivante, tout ce qui sera écrit ensuite sera vérifié.

                               !SPELL:language_code:language_variant
                               
                              -

                              Exemples :

                              - +Exemples :
                               !SPELL:en:british
                               !SPELL:fr
                               
                              -

                              Le « language_code » doit être remplacé par le code adéquat (en, fr, de, etc.), « language_variant » et les deux-points qui le suivent sont facultatifs et peuvent être « american », « british » ou « canadian », dans le cas où le code de langue est en.

                              +

                              Le « language_code » doit être remplacé par le code adéquat (en, fr, de, etc.), « language_variant » et les deux-points qui le suivent sont facultatifs et peuvent être « american », « british » ou « canadian », dans le cas où le code de langue est en.

                              -

                              Les mots non reconnus sont mis en surbrillance et vous pouvez voir les suggestions en plaçant le pointeur sur le mot.

                              +

                              Les mots non reconnus sont mis en surbrillance et vous pouvez voir les suggestions en plaçant le pointeur sur le mot.

                              -

                              Remarque : le correcteur utilise les librairies pspell. Celles-ci doivent être installées sur le serveur, en compagnie des dictionnaires, pour que le correcteur fonctionne. Notamment, le système d'exploitation Windows n'est pas supporté.

                              \ No newline at end of file +

                              Remarque : le correcteur utilise les librairies pspell. Celles-ci doivent être installées sur le serveur, en compagnie des dictionnaires, pour que le correcteur fonctionne. Notamment, le système d'exploitation Windows n'est pas supporté.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/addingacomment.html b/lang/fr/help/workshop/addingacomment.html index 34ba4433206..e375415cc88 100755 --- a/lang/fr/help/workshop/addingacomment.html +++ b/lang/fr/help/workshop/addingacomment.html @@ -1,19 +1,27 @@ - +

                              Ajouter un commentaire

                              -

                              Ajouter un commentaire

                              +

                              Les différents intervenants peuvent ajouter des +commentaires :

                              -

                              Les différents intervenants peuvent ajouter des commentaires :

                              +
                              1. L'étudiant qui évalue le travail (le +correcteur) peut ajouter un commentaire pour compléter ou +clarifier son évaluation.
                              2. -
                                  +
                                1. L'étudiant dont le travail est évalué +peut ajouter un commentaire pour remettre en cause les +affirmations qui ont été faites dans +l'évaluation.
                                2. -
                                3. L'étudiant qui évalue le travail (le correcteur) peut ajouter un commentaire pour compléter ou clarifier son évaluation.
                                4. +
                                5. L'enseignant peut ajouter un commentaire pour remplir son +rôle de médiateur entre les deux +étudiants : celui qui se fait évaluer et celui +qui est évalué.
                                -
                              3. L'étudiant dont le travail est évalué peut ajouter un commentaire pour remettre en cause les affirmations qui ont été faites dans l'évaluation.
                              4. +

                                Le but des commentaires est d'obtenir un consensus sur +l'évaluation, le tout dans un climat qui favorise un +meilleur apprentissage.

                                -
                              5. L'enseignant peut ajouter un commentaire pour remplir son rôle de médiateur entre les deux étudiants : celui qui se fait évaluer et celui qui est évalué.
                              6. - -
                              - -

                              Le but des commentaires est d'obtenir un consensus sur l'évaluation, le tout dans un climat qui favorise un meilleur apprentissage.

                              - -

                              Si le travail est réévalué, les commentaires de l'évaluation précédente sont effacés et l'évaluation est recommencée à zéro.

                              \ No newline at end of file +

                              Si le travail est réévalué, les +commentaires de l'évaluation précédente sont +effacés et l'évaluation est recommencée +à zéro.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/agreeassessments.html b/lang/fr/help/workshop/agreeassessments.html index fe1e5de38d1..de875d8ba34 100755 --- a/lang/fr/help/workshop/agreeassessments.html +++ b/lang/fr/help/workshop/agreeassessments.html @@ -1,18 +1,52 @@ - +

                              Accord sur l'évaluation

                              -

                              Accord sur l'évaluation

                              - -

                              Dans la phase de remise des travaux et d'évaluation, deux différents processus d'évaluation d'un travail peuvent être choisis par l'enseignant :

                              +

                              Dans la phase de remise des travaux et d'évaluation, deux +différents processus d'évaluation d'un travail +peuvent être choisis par l'enseignant :

                                -
                              1. L'étudiant qui a fait le travail ne peut réagir aux évaluations faites par ses pairs. Il n'y a donc pas d'échange entre l'étudiant dont le travail est évalué et ceux qui ont évalué le travail. Si l'enseignant a choisi de noter lui-même le travail (une des options de l'atelier), il peut faire des commentaires et accorder une note au travail. Ces commentaires et cette note sont alors visibles par toutes les parties impliquées dans le processus d'évaluation. Le feedback n'a lieu qu'à sens unique de la part des pairs pour chaque élément de l'évaluation.
                              2. +
                              3. L'étudiant qui a fait le travail ne peut +réagir aux évaluations faites par ses pairs. Il n'y +a donc pas d'échange entre l'étudiant dont le +travail est évalué et ceux qui ont +évalué le travail. Si l'enseignant a choisi de +noter lui-même le travail (une des options de l'atelier), +il peut faire des commentaires et accorder une note au travail. +Ces commentaires et cette note sont alors visibles par toutes les +parties impliquées dans le processus d'évaluation. +Le feedback n'a lieu qu'à sens unique de la part des pairs +pour chaque élément de l'évaluation.
                              4. -
                              5. L'étudiant qui a fait le travail peut réagir à l'évaluation faite par ses pairs. Il peut être en accord ou en désaccord. S'il est en accord, le processus d'évaluation est terminé pour cet élément de l'évaluation et elle est utilisée pour le calcul de la note accordée par les pairs. Si au contraire il y a désaccord, les étudiants qui ont fait l'évaluation ont l'occasion de la réviser. Les étudiants entrent alors dans une boucle de révisions/désaccords jusqu'à ce qu'ils parviennent à un accord ou que la date d'échéance soit atteinte. Une évaluation qui est toujours sujette à discussion entre les étudiants à la date d'échéance ne sera pas utilisée pour le calcul de la note. Le feedback se fait dans les deux sens entre les étudiants qui évaluent et l'étudiant dont le travail est évalué.
                              6. +
                              7. L'étudiant qui a fait le travail peut réagir +à l'évaluation faite par ses pairs. Il peut +être en accord ou en désaccord. S'il est en accord, +le processus d'évaluation est terminé pour cet +élément de l'évaluation et elle est +utilisée pour le calcul de la note accordée par +les pairs. Si au contraire il y a désaccord, les +étudiants qui ont fait l'évaluation ont +l'occasion de la réviser. Les étudiants entrent +alors dans une boucle de révisions/désaccords +jusqu'à ce qu'ils parviennent à un accord ou que la +date d'échéance soit atteinte. Une +évaluation qui est toujours sujette à discussion +entre les étudiants à la date +d'échéance ne sera pas utilisée pour le +calcul de la note. Le feedback se fait dans les deux sens entre +les étudiants qui évaluent et l'étudiant +dont le travail est évalué.
                              - - -

                              L'enseignant peut activer l'option de ne pas afficher les notes pendant la phase d'évaluation, lorsqu'il choisit le deuxième processus (une des options de l'atelier). Pendant les négociations avec les étudiants qui ont évalué son travail, seuls seront alors visibles les commentaires de l'étudiant dont le travail est évalué. Lorsqu'il y a accord, la note est alors affichée pour cet élément de l'évaluation. Cette option est disponible seulement lorsque l'accord entre les parties est requis.

                              +

                              L'enseignant peut activer l'option de ne pas afficher les +notes pendant la phase d'évaluation, lorsqu'il choisit le +deuxième processus (une des options de l'atelier). Pendant +les négociations avec les étudiants qui ont +évalué son travail, seuls seront alors visibles +les commentaires de l'étudiant dont le travail est +évalué. Lorsqu'il y a accord, la note est alors +affichée pour cet élément de +l'évaluation. Cette option est disponible seulement +lorsque l'accord entre les parties est requis.

                              diff --git a/lang/fr/help/workshop/analysisofassessments.html b/lang/fr/help/workshop/analysisofassessments.html index d707015aa07..81c49a7c050 100644 --- a/lang/fr/help/workshop/analysisofassessments.html +++ b/lang/fr/help/workshop/analysisofassessments.html @@ -1,35 +1,159 @@ - +

                              Analyse des évaluations

                              -

                              Analyse des évaluations

                              +

                              Cette analyse permet d'examiner les évaluations faites sur les +exemples, comme sur celles effectuées durant la phase +d'évaluation par les pairs. Elle tente de +sélectionner les meilleures parmi les évaluations +d'étudiants et d'enseignants. Ces +« bonnes » évaluations sont alors +utilisées dans le calcul de la note finale.

                              -

                              Cette analyse permet d'examiner les évaluations faites sur les exemples, comme sur celles effectuées durant la phase d'évaluation par les pairs. Elle tente de sélectionner les meilleures parmi les évaluations d'étudiants et d'enseignants. Ces « bonnes » évaluations sont alors utilisées dans le calcul de la note finale.

                              +

                              L'analyse est meilleure si les évaluations de +l'enseignant sont disponibles. Ces évaluations peuvent +servir de références par rapport auxquelles celles +des étudiants peuvent être jugées. +L'enseignant n'a pas besoin d'évaluer chaque +exemple et chaque travail, mais pour que l'analyse soit +significative, il est mieux d'avoir de la part de l'enseignant +plus d'évaluations celles faites par la moyenne des +étudiants. Plus il y a d'évaluations faites par +l'enseignant, plus les résultats de l'analyse seront +fiables.

                              -

                              L'analyse est meilleure si les évaluations de l'enseignant sont disponibles. Ces évaluations peuvent servir de références par rapport auxquelles celles des étudiants peuvent être jugées. L'enseignant n'a pas besoin d'évaluer chaque exemple et chaque travail, mais pour que l'analyse soit significative, il est mieux d'avoir de la part de l'enseignant plus d'évaluations celles faites par la moyenne des étudiants. Plus il y a d'évaluations faites par l'enseignant, plus les résultats de l'analyse seront fiables.

                              - -

                              L'analyse se fait habituellement à plusieurs reprises, en changeant à chaque fois une ou plusieurs options. L'analyse est contrôlée par trois options apparaissant en haut de la page.

                              +

                              L'analyse se fait habituellement à plusieurs reprises, +en changeant à chaque fois une ou plusieurs options. +L'analyse est contrôlée par trois options +apparaissant en haut de la page.

                                -
                              1. L'option « Coefficient des évaluations de l'enseignant » permet de fixer le poids des évaluations faites par l'enseignant en comparaison avec celles des étudiants, lors de la phase d'analyse d'erreurs. Si l'enseignant désire que sa propre stratégie d'évaluation domine celles des étudiants, alors il devrait être parmi tous ceux qui ont donné des notes celui ayant l'erreur moyenne la plus faible dans la « Table d'erreurs ». Si l'enseignant n'est pas en tête de liste, on augmente prgressivement le coefficient de ses évaluations jusqu'à ce qu'il ait la plus petite erreur moyenne. En conséquence, les évaluations de l'enseignant sont dominantes et celles des étudiants qui évaluent comme lui se retrouvent aussi dans la partie supérieure de la liste de la Table d'erreurs. Les étudiants situés au bas de la liste sont ceux qui évaluent d'une façon différente de celle de l'enseignant (ou de celle des étudiants du haut de la liste).
                                +
                              2. L'option « Coefficient des +évaluations de l'enseignant » permet de +fixer le poids des évaluations faites par l'enseignant en +comparaison avec celles des étudiants, lors de la phase +d'analyse d'erreurs. Si l'enseignant désire que sa propre +stratégie d'évaluation domine celles des +étudiants, alors il devrait être parmi tous ceux qui +ont donné des notes celui ayant l'erreur moyenne la plus +faible dans la « Table d'erreurs ». Si +l'enseignant n'est pas en tête de liste, on augmente +prgressivement le coefficient de ses +évaluations jusqu'à ce qu'il ait la plus petite +erreur moyenne. En conséquence, les +évaluations de l'enseignant sont dominantes et celles des +étudiants qui évaluent comme lui se retrouvent +aussi dans la partie supérieure de la liste de la Table +d'erreurs. Les étudiants situés au bas de la liste +sont ceux qui évaluent d'une façon +différente de celle de l'enseignant (ou de celle des +étudiants du haut de la liste).
                                -Plus l'enseignant a effectué d'évaluations, moins l'on aura besoin d'utiliser cette option pour forcer l'enseignant à apparaître au haut de la liste. Il est à noter que cette option n'applique pas un coefficient aux évaluations de l'enseignant lors du calcul des notes finales. Dans ce calcul, les évaluations de l'enseignant ont le même poids que celles des étudiants. Ainsi par exemple, si un travail d'étudiant est noté 41% par l'enseignant et 45% et 55% par ses pairs, la note finale de ce travail sera de (41% + 45% + 55%) / 3, c'est-à-dire 47%.
                              3. +Plus l'enseignant a effectué d'évaluations, +moins l'on aura besoin d'utiliser cette option pour forcer +l'enseignant à apparaître au haut de la liste. Il +est à noter que cette option n'applique pas un +coefficient aux évaluations de l'enseignant lors du calcul +des notes finales. Dans ce calcul, les évaluations de +l'enseignant ont le même poids que celles des +étudiants. Ainsi par exemple, si un travail +d'étudiant est noté 41% par l'enseignant et 45% et +55% par ses pairs, la note finale de ce travail sera de (41% + +45% + 55%) / 3, c'est-à-dire 47%. -
                              4. L'option « Coefficient de la performance d'évaluation » est utilisée dans le calcul de la note finale. Pour calculer la « performance d'évaluation » d'un étudiant, une formule simple est utilisée : c'est le rapport entre le nombre des « bonnes » évaluations d'un étudiant et le nombre maximum de celles qu'il peut effectuer. Si par exemple la consigne demande aux étudiants d'évaluer 3 travaux d'exemples et 5 travaux de pairs, et que l'étudiant évalue au total 7 travaux et qu'une évaluation parmi celles-ci est rejetée lors de l'analyse (voir ci-dessous), sa performance d'évaluation est alors de (7 - 1)/8, c'est-à-dire 75%. La note finale d'un étudiant est une moyenne pondérée de sa performace d'évaluation et de la note de son propre travail (ou du meilleur, s'il a rendu plusieurs travaux). Le coefficient de la note du travail est toujours 1. Donc si vous choisissez de régler cette option sur 0.5, cela signifie que la performance d'évaluation aura pour la note finale la moitié de la valeur de la note du travail.
                              5. +
                              6. L'option « Coefficient de la performance +d'évaluation » est utilisée dans +le calcul de la note finale. Pour calculer la +« performance d'évaluation » d'un +étudiant, une formule simple est utilisée : +c'est le rapport entre le nombre des +« bonnes » évaluations d'un +étudiant et le nombre maximum de celles qu'il peut +effectuer. Si par exemple la consigne demande aux +étudiants d'évaluer 3 travaux d'exemples et 5 +travaux de pairs, et que l'étudiant évalue au total +7 travaux et qu'une évaluation parmi celles-ci est +rejetée lors de l'analyse (voir ci-dessous), sa +performance d'évaluation est alors de (7 - 1)/8, +c'est-à-dire 75%. La note finale d'un étudiant est +une moyenne pondérée de sa performace +d'évaluation et de la note de son propre +travail (ou du meilleur, s'il a rendu plusieurs travaux). Le +coefficient de la note du travail est toujours 1. Donc si vous +choisissez de régler cette option sur 0.5, cela signifie +que la performance d'évaluation aura pour la note finale +la moitié de la valeur de la note du travail.
                              7. -
                              8. L'option « Nombre d'évaluations à rejeter » détermine le nombre des évaluations à rejeter lors du calcul des notes finales. Ce nombre peut être fixé de deux façons. +
                              9. L'option « Nombre d'évaluations à +rejeter » détermine le nombre des +évaluations à rejeter lors du calcul des notes +finales. Ce nombre peut être fixé de deux +façons.
                                  -
                                • Selon la façon dont la performance d'évaluation est calculée et si aucune évaluation n'est rejetée, chaque étudiant pourrait obtenir la note maximale en évaluant tous les travaux qui lui sont soumis. Si l'enseignant désire avoir une moyenne plus raisonnable, il peut, en réglant par exemple cette option à 30%, faire en sorte que la moyenne des performances d'évaluation soit d'environ 70% (pour autant bien sûr que tous les étudiants aient évalué tous les travaux qui leur étaient soumis).
                                • +
                                • Selon la façon dont la performance +d'évaluation est calculée et si aucune +évaluation n'est rejetée, chaque étudiant +pourrait obtenir la note maximale en évaluant +tous les travaux qui lui sont soumis. Si l'enseignant +désire avoir une moyenne plus raisonnable, il peut, en +réglant par exemple cette option à 30%, faire en +sorte que la moyenne des performances d'évaluation soit +d'environ 70% (pour autant bien sûr que tous les +étudiants aient évalué tous les travaux qui +leur étaient soumis).
                                • -
                                • Autrement, le nombre d'évaluations à rejeter peut être fixé de telle manière que les Erreurs moyennes (quatrième colonne de la Table d'erreurs) des « bonnes » évaluations restantes demeurent en deçà d'une valeur raisonnable. Par exemple, on pourrait penser que toutes les évaluations des étudiants devraient se situer (en moyenne) dans un intervalle de 20%. Dans ce cas, l'analyse est répétée en ajustant à chaque fois le nombre d'évaluations à rejeter, jusqu'à ce que les valeurs de cette colonne soient dans cette limite.
                                • +
                                • Autrement, le nombre d'évaluations à rejeter +peut être fixé de telle manière que les +Erreurs moyennes (quatrième colonne de la Table d'erreurs) +des « bonnes » évaluations restantes +demeurent en deçà d'une valeur raisonnable. Par +exemple, on pourrait penser que toutes les évaluations des +étudiants devraient se situer (en moyenne) dans un +intervalle de 20%. Dans ce cas, l'analyse est +répétée en ajustant à chaque fois le +nombre d'évaluations à rejeter, jusqu'à ce +que les valeurs de cette colonne soient dans cette limite.
                              -

                              En plus de la Table d'erreur, l'analyse énumère les notes de toutes les évaluations et les notes finales données aux étudiants. Cette table devrait être examinée pour s'assurer que les résultats sont raisonnables. En particulier si un grand nombre d'évaluations sont rejetées, certains travaux pourraient restés sans évaluation et la note finale de l'étudiant beaucoup trop basse. L'analyse affiche le nombre de travaux remis au haut de la page et également juste avant le « Tableau des notes ». Ces deux nombres devraient être égaux. S'il y a un ou plusieurs travaux sans évaluation et que l'enseignant ne veut pas diminuer le nombre d'évaluations à rejeter, ces travaux doivent alors être évalués par l'enseignant et l'analyse répétée. Il est essentiel que tous les travaux remis soient évalués au moins une fois lors de la dernière phase de l'analyse, c'est-à-dire lorsque les notes finales sont calculées.

                              +

                              En plus de la Table d'erreur, l'analyse énumère +les notes de toutes les évaluations et les notes finales +données aux étudiants. Cette table devrait +être examinée pour s'assurer que les +résultats sont raisonnables. En particulier si un grand +nombre d'évaluations sont rejetées, certains +travaux pourraient restés sans évaluation et la +note finale de l'étudiant beaucoup trop basse. L'analyse +affiche le nombre de travaux remis au haut de la page et +également juste avant le « Tableau des +notes ». Ces deux nombres devraient être +égaux. S'il y a un ou plusieurs travaux sans +évaluation et que l'enseignant ne veut pas diminuer le +nombre d'évaluations à rejeter, ces travaux doivent +alors être évalués par l'enseignant et +l'analyse répétée. Il est essentiel que tous +les travaux remis soient évalués au moins une fois +lors de la dernière phase de l'analyse, +c'est-à-dire lorsque les notes finales sont +calculées.

                              -

                              Il existe un équilibre entre le nombre d'évaluations rejetées et les notes finales. Plus il y a d'évaluations rejetées, et plus les notes finales risqueront d'être basses. Cependant, si les évaluations médiocres ne sont pas rejetées, les étudiants pourraient se plaindre de la qualité des évaluations qui leur sont données et qui comptent dans la note finale de leur travail. Si l'enseignant a fait suffisamment d'évaluations de façon à dominer l'analyse pas trop artificiellement, une valeur raisonnable du pourcentage d'évaluations à rejeter se situe entre 15% et 30%.

                              +

                              Il existe un équilibre entre le nombre +d'évaluations rejetées et les notes finales. Plus +il y a d'évaluations rejetées, et plus les notes +finales risqueront d'être basses. Cependant, si les +évaluations médiocres ne sont pas +rejetées, les étudiants pourraient se plaindre de +la qualité des évaluations qui leur sont +données et qui comptent dans la note finale de leur +travail. Si l'enseignant a fait suffisamment d'évaluations +de façon à dominer l'analyse pas trop +artificiellement, une valeur raisonnable du pourcentage +d'évaluations à rejeter se situe entre 15% et +30%.

                              -

                              Il est à remarquer que cette analyse prend du temps, car elle comprend un processus itératif. De longs délais sont donc à prévoir.

                              \ No newline at end of file +

                              Il est à remarquer que cette analyse prend du temps, +car elle comprend un processus itératif. De longs +délais sont donc à prévoir.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/anonymous.html b/lang/fr/help/workshop/anonymous.html index 8bef4d2253b..3a4a548a6a7 100755 --- a/lang/fr/help/workshop/anonymous.html +++ b/lang/fr/help/workshop/anonymous.html @@ -1,9 +1,15 @@ - +

                              Évaluation anonyme

                              -

                              Évaluation anonyme

                              +

                              Un travail peut être évalué par les +autres étudiants sans qu'ils en connaissent l'auteur. +Avec cette option, le nom et la photo de l'auteur du travail +n'apparaîtront pas aux étudiants qui l'évaluent. +Seul le nom du fichier contenant le travail +sera dévoilé.

                              -

                              Un travail peut être évalué par les autres étudiants sans qu'ils en connaissent l'auteur. Avec cette option, le nom et la photo de l'auteur du travail n'apparaîtront pas aux étudiants qui l'évaluent. Seul le nom du fichier contenant le travail sera dévoilé.

                              +

                              Lorsque l'évaluation n'est pas anonyme, le travail +apparaît avec le nom et la photo de son auteur. Ceci +peut influencer l'évaluation.

                              -

                              Lorsque l'évaluation n'est pas anonyme, le travail apparaît avec le nom et la photo de son auteur. Ceci peut influencer l'évaluation.

                              - -

                              Notez que l'évaluation de l'enseignant n'est jamais anonyme.

                              \ No newline at end of file +

                              Notez que l'évaluation de l'enseignant n'est jamais +anonyme.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/assessmentofexamples.html b/lang/fr/help/workshop/assessmentofexamples.html index 95ce5a1eb61..138bf3c7274 100755 --- a/lang/fr/help/workshop/assessmentofexamples.html +++ b/lang/fr/help/workshop/assessmentofexamples.html @@ -1,5 +1,11 @@ - +

                              Évaluation des exemples de +l'enseignant

                              -

                              Évaluation des exemples de l'enseignant

                              - -

                              L'enseignant devrait évaluer les travaux qu'il a lui-même remis à titre d'exemple pour les étudiants. Ces notes seront privées et resteront invisibles pour les étudiants. Elles serviront pour l'enseignant de référence et de rappel des points importants lorsqu'il mettra des notes aux évaluations des élèves sur ces mêmes travaux. Lors de la correction, l'enseignant verra son évaluation en haut de l'écran et celle de l'élève dans le bas. La correction s'en trouvera ainsi facilitée.

                              \ No newline at end of file +

                              L'enseignant devrait évaluer les travaux qu'il a lui-même +remis à titre d'exemple pour les étudiants. Ces notes seront +privées et resteront invisibles pour les étudiants. Elles +serviront pour l'enseignant de référence et de rappel des points +importants lorsqu'il mettra des notes aux évaluations des élèves +sur ces mêmes travaux. Lors de la correction, l'enseignant verra +son évaluation en haut de l'écran et celle de l'élève dans le +bas. La correction s'en trouvera ainsi facilitée.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/assignmenttype.html b/lang/fr/help/workshop/assignmenttype.html index bf9382f17ef..8409d3338d1 100755 --- a/lang/fr/help/workshop/assignmenttype.html +++ b/lang/fr/help/workshop/assignmenttype.html @@ -1,13 +1,28 @@ - +

                              Types d'évaluation par les +pairs

                              -

                              Types d'évaluation par les pairs

                              - -

                              L'évaluation par les pairs peut prendre deux formes :

                              +

                              L'évaluation par les pairs peut prendre deux +formes :

                                -
                              1. Les correcteurs écrivent un commentaire pour chaque critère d'évaluation et un commentaire général. On n'accorde pas de note pour l'ensemble du travail. Aucune note pour les critères d'évaluation ne sera reportée sur la page des notes. Cependant, on mesurera la qualité des évaluations faites par les étudiants et ceci sera inscrit dans la page des notes.
                              2. +
                              3. Les correcteurs écrivent un commentaire pour chaque +critère d'évaluation et un commentaire +général. On n'accorde pas de note pour l'ensemble +du travail. Aucune note pour les critères +d'évaluation ne sera reportée sur la page des +notes. Cependant, on mesurera la qualité des +évaluations faites par les étudiants et ceci sera +inscrit dans la page des notes.
                              4. -
                              5. L'enseignant et les étudiants écrivent un commentaire et accordent une note en fonction de chaque critère d'évaluation. On accorde une note pour l'ensemble du travail et les commentaires seront reportés dans les résultats consolidés de l'évaluation. La note finale d'un étudiant est la moyenne pondérée de la note de l'enseignant, de la note moyenne accordée par les pairs et de la note mesurant sa performance d'évaluationphase.
                              6. +
                              7. L'enseignant et les étudiants écrivent un +commentaire et accordent une note en fonction de chaque +critère d'évaluation. On accorde une note pour +l'ensemble du travail et les commentaires seront reportés +dans les résultats consolidés de +l'évaluation. La note finale d'un étudiant est la +moyenne pondérée de la note de l'enseignant, de la +note moyenne accordée par les pairs et de la note mesurant +sa performance d'évaluationphase.
                              \ No newline at end of file diff --git a/lang/fr/help/workshop/breakdownoffinalgrade.html b/lang/fr/help/workshop/breakdownoffinalgrade.html index 356facb26fb..c52ec82f906 100755 --- a/lang/fr/help/workshop/breakdownoffinalgrade.html +++ b/lang/fr/help/workshop/breakdownoffinalgrade.html @@ -1,29 +1,29 @@ -

                              Composition de la note finale

                              +

                              Composition de la note finale

                              -

                              Le tableau affiché sur cette page montre votre note finale et comment elle a été calculée. La note finale se compose potentiellement de trois éléments :

                              +

                              Le tableau affiché sur cette page montre votre note finale et comment elle a été calculée. La note finale se compose potentiellement de trois éléments :

                                -
                              1. la note accordée par l'enseignant au travail que vous avez remis ;
                              2. +
                              3. la note accordée par l'enseignant au travail que vous avez remis ;
                              4. -
                              5. la moyenne des notes accordées par vos pairs (les étudiants) qui ont évalué le travail que vous avez remis ;
                              6. +
                              7. la moyenne des notes accordées par vos pairs (les étudiants) qui ont évalué le travail que vous avez remis ;
                              8. -
                              9. une note qui reflète comment vous vous êtes vous-même acquitté de votre rôle de correcteur. Cette note-ci a été établie en tenant compte des éléments suivants :
                              10. +
                              11. une note qui reflète comment vous vous êtes vous-même acquitté de votre rôle de correcteur. Cette note-ci a été établie en tenant compte des éléments suivants :
                                • -
                                • si vos notes étaient trop hautes ou trop basses en comparaison avec la note moyenne des autres étudiants (biais),
                                • +
                                • si vos notes étaient trop hautes ou trop basses en comparaison avec la note moyenne des autres étudiants (biais),
                                • -
                                • si vos notes correspondent à la moyenne des notes données par les autres étudiants (fiabilité),
                                • +
                                • si vos notes correspondent à la moyenne des notes données par les autres étudiants (fiabilité),
                                • -
                                • la qualité de vos commentaires sur les autres travaux que vous avez évalués (qualité). Ce dernier aspect a été évalué par l'enseignant.
                                • +
                                • la qualité de vos commentaires sur les autres travaux que vous avez évalués (qualité). Ce dernier aspect a été évalué par l'enseignant.
                                -Ces trois éléments (le biais, la fiabilité et la qualité de vos évaluations) ont reçus respectivement les coefficients 1, 2 et 3 dans le calcul de votre performance d'évaluation. En d'autres termes, la note mise par l'enseignant sur la qualité de vos commentaires a le même poids que la note du biais et celle de la fiabilité combinées. +Ces trois éléments (le biais, la fiabilité et la qualité de vos évaluations) ont reçus respectivement les coefficients 1, 2 et 3 dans le calcul de votre performance d'évaluation. En d'autres termes, la note mise par l'enseignant sur la qualité de vos commentaires a le même poids que la note du biais et celle de la fiabilité combinées.
                              -

                              La pondération de ces trois composantes pour le calcul de la note finale est fonction du type de travail à accomplir. Elle a été décidée par l'enseignant. Ces coefficients sont affichés dans le petit tableau.

                              \ No newline at end of file +

                              La pondération de ces trois composantes pour le calcul de la note finale est fonction du type de travail à accomplir. Elle a été décidée par l'enseignant. Ces coefficients sont affichés dans le petit tableau.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/calculatingfinalgrade.html b/lang/fr/help/workshop/calculatingfinalgrade.html index e5e5f6d9976..12e1be8d05f 100755 --- a/lang/fr/help/workshop/calculatingfinalgrade.html +++ b/lang/fr/help/workshop/calculatingfinalgrade.html @@ -1,23 +1,23 @@ -

                              Calcul de la note finale

                              +

                              Calcul de la note finale

                              -

                              Le tableau affiché sur cette page montre comment sont calculées les notes finales des étudiants. Les notes finales sont une moyenne pondérée d'au maximum de cinq composantes. Les voici :

                              +

                              Le tableau affiché sur cette page montre comment sont calculées les notes finales des étudiants. Les notes finales sont une moyenne pondérée d'au maximum de cinq composantes. Les voici :

                                -
                              1. La note accordée par l'enseignant pour le travail remis par l'étudiant. Cette note est facultative et sera employée si l'enseignant évalue réellement le travail de l'étudiant. Si l'étudiant remet plus d'une version du travail, on utilise alors la « meilleure » note pondérée. La meilleure note signifie la note pondérée la plus haute, qui est une combinaison de la note de l'enseignant et de la note de ses pairs.
                              2. +
                              3. La note accordée par l'enseignant pour le travail remis par l'étudiant. Cette note est facultative et sera employée si l'enseignant évalue réellement le travail de l'étudiant. Si l'étudiant remet plus d'une version du travail, on utilise alors la « meilleure » note pondérée. La meilleure note signifie la note pondérée la plus haute, qui est une combinaison de la note de l'enseignant et de la note de ses pairs.
                              4. -
                              5. La moyenne des notes accordées par ses pairs pour le travail remis par l'étudiant. Si l'étudiant remet plus d'une version du travail, on utilise alors la « meilleure » note pondérée. La note des pairs peut optionnellement inclure la note de l'enseignant. Cette note pourra être incluse si par exemple le nombre des notes accordées par les pairs est très bas ou si l'enseignant met en doute les notes des pairs à cause d'un manque de fiabilité, de notes trop basses ou trop élevées. Lorsque la note de l'enseignant est incluse, elle a le même poids que les notes des étudiants dans le calcul de la moyenne.
                              6. +
                              7. La moyenne des notes accordées par ses pairs pour le travail remis par l'étudiant. Si l'étudiant remet plus d'une version du travail, on utilise alors la « meilleure » note pondérée. La note des pairs peut optionnellement inclure la note de l'enseignant. Cette note pourra être incluse si par exemple le nombre des notes accordées par les pairs est très bas ou si l'enseignant met en doute les notes des pairs à cause d'un manque de fiabilité, de notes trop basses ou trop élevées. Lorsque la note de l'enseignant est incluse, elle a le même poids que les notes des étudiants dans le calcul de la moyenne.
                              8. -
                              9. Le biais que l'étudiant introduit par des notes trop hautes ou trop basses dans l'évaluation par les pairs. Ce n'est pas une mesure absolue, car elle est basée sur la différence entre la note de l'étudiant et les moyennes des notes des autres étudiants pour chacun des travaux remis qu'ils ont évalués. En général, il ne faut pas donner à cette composante un coeffient très élevé.
                              10. +
                              11. Le biais que l'étudiant introduit par des notes trop hautes ou trop basses dans l'évaluation par les pairs. Ce n'est pas une mesure absolue, car elle est basée sur la différence entre la note de l'étudiant et les moyennes des notes des autres étudiants pour chacun des travaux remis qu'ils ont évalués. En général, il ne faut pas donner à cette composante un coeffient très élevé.
                              12. -
                              13. La fiabilité des évaluations faites par l'étudiant. C'est une mesure qui indique si les notes accordées par l'étudiant correspondent à la moyenne des notes accordées par les autres étudiants pour les mêmes travaux. La mesure enlève le biais introduit par l'étudiant et fait la moyenne des différences absolues entre la note accordée par l'étudiant et les notes moyennes des autres étudiants. En théorie, l'étudiant qui donne une note élevée pour les bons travaux et une note faible pour les mauvais travaux sera considéré comme fiable. Si l'enseignant estime que les étudiants ne sont pas en général de bons correcteurs, la note de l'enseignant devrait être incluse pour rendre plus significative la valeur de la fiabilité.
                              14. +
                              15. La fiabilité des évaluations faites par l'étudiant. C'est une mesure qui indique si les notes accordées par l'étudiant correspondent à la moyenne des notes accordées par les autres étudiants pour les mêmes travaux. La mesure enlève le biais introduit par l'étudiant et fait la moyenne des différences absolues entre la note accordée par l'étudiant et les notes moyennes des autres étudiants. En théorie, l'étudiant qui donne une note élevée pour les bons travaux et une note faible pour les mauvais travaux sera considéré comme fiable. Si l'enseignant estime que les étudiants ne sont pas en général de bons correcteurs, la note de l'enseignant devrait être incluse pour rendre plus significative la valeur de la fiabilité.
                              16. -
                              17. La note moyenne donnée par l'enseignant pour les évaluations de l'étudiant. Celles-ci comprennent les deux évaluations préliminaires faites par l'étudiant sur les exemples de travaux fournis par l'enseignant et toutes les notes de l'enseignant sur les évaluations effectuées pendant la phase d'évaluation par les pairs. En général, cette composante est plus importante que le biais et la fiabilité. Son coefficient (lorsque la pondération est disponible) devrait donc être supérieur.
                              18. +
                              19. La note moyenne donnée par l'enseignant pour les évaluations de l'étudiant. Celles-ci comprennent les deux évaluations préliminaires faites par l'étudiant sur les exemples de travaux fournis par l'enseignant et toutes les notes de l'enseignant sur les évaluations effectuées pendant la phase d'évaluation par les pairs. En général, cette composante est plus importante que le biais et la fiabilité. Son coefficient (lorsque la pondération est disponible) devrait donc être supérieur.
                              -

                              Ces cinq composantes peuvent être pondérées suivant les objectifs de l'enseignant et en fonction du type de travail. Par exemple, la note de l'enseignant pourrait avoir un coefficient élevé si l'évaluation par les pairs a une importance minime dans le travail. Ou, si l'enseignant évalue seulement quelques-uns des travaux remis ou s'il considère comme très important le rôle de correcteur pour les étudiants, les notes accordées par l'enseignant peuvent être ignorées en leur donnant un poids nul ou très faible. Dans ce dernier exemple, c'est la performance d'évaluation des étudiants qui déterminent leur note finale.

                              +

                              Ces cinq composantes peuvent être pondérées suivant les objectifs de l'enseignant et en fonction du type de travail. Par exemple, la note de l'enseignant pourrait avoir un coefficient élevé si l'évaluation par les pairs a une importance minime dans le travail. Ou, si l'enseignant évalue seulement quelques-uns des travaux remis ou s'il considère comme très important le rôle de correcteur pour les étudiants, les notes accordées par l'enseignant peuvent être ignorées en leur donnant un poids nul ou très faible. Dans ce dernier exemple, c'est la performance d'évaluation des étudiants qui déterminent leur note finale.

                              -

                              Il est à noter que cette page est s'utilise dans un processus itératif et que les notes finales ne sont normalement pas dévoilées aux étudiants avant la phase finale du travail. Une fois que l'enseignant est satisfait des notes finales et de leurs pondérations, elles sont alors dévoilées aux étudiants.

                              \ No newline at end of file +

                              Il est à noter que cette page est s'utilise dans un processus itératif et que les notes finales ne sont normalement pas dévoilées aux étudiants avant la phase finale du travail. Une fois que l'enseignant est satisfait des notes finales et de leurs pondérations, elles sont alors dévoilées aux étudiants.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/editingacomment.html b/lang/fr/help/workshop/editingacomment.html index 7fd2aaf6d47..0cbb165dca4 100755 --- a/lang/fr/help/workshop/editingacomment.html +++ b/lang/fr/help/workshop/editingacomment.html @@ -1,5 +1,7 @@ - +

                              Modification d'un commentaire

                              -

                              Modification d'un commentaire

                              - -

                              Il existe dans Moodle une période durant laquelle il est possible de modifier les messages ou les commentaires publiés, généralement de 30 minutes. Ce n'est qu'après ce délai que les commentaires seront affichés dans l'évaluation du travail.

                              \ No newline at end of file +

                              Il existe dans Moodle une période durant laquelle il +est possible de modifier les messages ou les commentaires +publiés, généralement de 30 minutes. Ce +n'est qu'après ce délai que les commentaires seront +affichés dans l'évaluation du travail.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/elements.html b/lang/fr/help/workshop/elements.html index e1a835c7baa..8bb5e20c8f8 100755 --- a/lang/fr/help/workshop/elements.html +++ b/lang/fr/help/workshop/elements.html @@ -1,31 +1,119 @@ - +

                              Éléments d'évaluation

                              -

                              Éléments d'évaluation

                              +

                              Pour faciliter l'évaluation, tout travail d'un atelier +devrait comprendre un nombre raisonnable +d'éléments d'évaluation. Suivant sa +complexité et sa longueur, un travail devrait avoir entre +5 et 15 éléments d'évaluation, chacun +couvrant un aspect particulier du devoir. Un travail ne +comprenant qu'un élément est possible ; la +stratégie d'évaluation d'un tel travail est +semblable à celle d'un devoir Moodle.

                              -

                              Pour faciliter l'évaluation, tout travail d'un atelier devrait comprendre un nombre raisonnable d'éléments d'évaluation. Suivant sa complexité et sa longueur, un travail devrait avoir entre 5 et 15 éléments d'évaluation, chacun couvrant un aspect particulier du devoir. Un travail ne comprenant qu'un élément est possible ; la stratégie d'évaluation d'un tel travail est semblable à celle d'un devoir Moodle.

                              - -

                              Le type des éléments d'évaluation dépend de la stratégie d'évaluation désirée :

                              +

                              Le type des éléments d'évaluation +dépend de la stratégie d'évaluation +désirée :

                                -
                              1. Évaluation formative avec grille d'observation. Les critères peuvent prendre la forme de descriptions de certains aspects du travail, de questions, de commentaires. Le correcteur doit fournir ses observations sur le travail en fonction de ces critères. Comme avec toutes les stratégies d'évaluation, un espace est prévu pour des commentaires d'ordre général. L'évaluation est de type qualitatif et donc le correcteur n'attribue pas de note. L'enseignant peut toutefois accorder une note pour l'évaluation du correcteur qui sera à la base de la note qui apparaîtra dans le rapport des résultats du cours. Aucune note n'apparaîtra si l'enseignant ne donne pas de note.
                              2. +
                              3. Évaluation formative avec grille d'observation. +Les critères peuvent prendre la forme de descriptions de +certains aspects du travail, de questions, de commentaires. Le +correcteur doit fournir ses observations sur le travail en +fonction de ces critères. Comme avec toutes les +stratégies d'évaluation, un espace est prévu +pour des commentaires d'ordre général. +L'évaluation est de type qualitatif et donc le correcteur +n'attribue pas de note. L'enseignant peut toutefois accorder une +note pour l'évaluation du correcteur qui sera à la +base de la note qui apparaîtra dans le rapport des +résultats du cours. Aucune note n'apparaîtra si +l'enseignant ne donne pas de note.
                              4. -
                              5. Critères avec une échelle d'appréciation. C'est la stratégie par défaut. L'évaluation se fait à partir d'énoncés qui décrivent des aspects désirés dans le travail. Le correcteur attribue une note à partir d'une échelle d'appréciation pour chaque critère. Chaque critère a les trois caractéristiques suivantes :
                              6. +
                              7. Critères avec une échelle +d'appréciation. C'est la stratégie par +défaut. L'évaluation se fait à partir +d'énoncés qui décrivent des aspects +désirés dans le travail. Le correcteur attribue une +note à partir d'une échelle d'appréciation +pour chaque critère. Chaque critère a les trois +caractéristiques suivantes :
                              8. -
                                  +
                                  • Une description : la description explique +clairement quel aspect de la tâche est +évalué. Si l'évaluation est qualitative, on +doit inclure des détails sur ce qui est +considéré comme excellent, moyen et faible.
                                  • -
                                  • Une description : la description explique clairement quel aspect de la tâche est évalué. Si l'évaluation est qualitative, on doit inclure des détails sur ce qui est considéré comme excellent, moyen et faible.
                                  • +
                                  • Une échelle d'appréciation : Moodle +offre plusieurs échelles prédéfinies qui +vont du simple Oui/Non à une échelle en +pourcentage, en passant par une échelle de plusieurs +points allant d'excellent à très faible. +L'enseignant choisit l'échelle en fonction du type de +critère. Le nombre de division sur l'échelle ne +détermine pas l'importance relative du +critère : c'est le coefficient du critère qui +remplit cette fonction.
                                  • -
                                  • Une échelle d'appréciation : Moodle offre plusieurs échelles prédéfinies qui vont du simple Oui/Non à une échelle en pourcentage, en passant par une échelle de plusieurs points allant d'excellent à très faible. L'enseignant choisit l'échelle en fonction du type de critère. Le nombre de division sur l'échelle ne détermine pas l'importance relative du critère : c'est le coefficient du critère qui remplit cette fonction.
                                  • +
                                  • Un coefficient : par défaut, tous les +critères ont le même coefficient dans le calcul de +la note finale du travail. L'enseignant peut toutefois modifier +l'importance relative de chaque critère en accordant un +poids plus grand que 1 à un critère plus important +et un poids inférieur à 1 à un +critère moins important (on peut donner au coefficient une +valeur négative). Le changement des coefficients n'a pas +d'influence sur la note maximale, qui est fixée dans les +réglages de l'atelier.
                                  -
                                • Un coefficient : par défaut, tous les critères ont le même coefficient dans le calcul de la note finale du travail. L'enseignant peut toutefois modifier l'importance relative de chaque critère en accordant un poids plus grand que 1 à un critère plus important et un poids inférieur à 1 à un critère moins important (on peut donner au coefficient une valeur négative). Le changement des coefficients n'a pas d'influence sur la note maximale, qui est fixée dans les réglages de l'atelier.
                                • +
                                • Liste de vérification. Des critères +décrivent les éléments qui doivent +être présents ou les aspects qui doivent être +couverts dans le travail. Le correcteur doit déterminer si +oui ou non ces éléments ou ces +aspects se retrouvent dans le travail qui a été +remis. L'enseignant établit un barème de correction +déterminant la note lorsque tous les +éléments sont présents, un +élément est absent, deux éléments +sont absents, etc. Il peut aussi modifier le coefficient de +chaque critère pour établir son importance +relative. La somme des erreurs correspond à la somme +pondérée des éléments manquants. Il +n'est pas nécessaire que la distribution des coefficients +soit linéaire. Par exemple, pour dix énoncés +les notes pourraient être : 90%, 70%, 50%, 40%, 30%, 20%, +10%, 0%, 0%, 0%. Le correcteur peut toujours faire une +révision des notes suggérées pouvant aller +jusqu'à 20%.
                                • -
                                +
                              9. Niveaux d'atteinte global des objectifs. L'enseignant +fournit plusieurs énoncés qui décrivent des +niveaux différents d'atteinte des objectifs. Le correcteur +doit choisir l'énoncé qui correspond le mieux au +travail qui a été remis. Les énoncés +peuvent décrire des niveaux successifs ou être +indépendants les uns des autres. L'enseignant +établit un barème de correction. Le correcteur peut +apporter une révision des notes +suggérées pouvant aller jusqu'à 20%.
                              10. -
                              11. Liste de vérification. Des critères décrivent les éléments qui doivent être présents ou les aspects qui doivent être couverts dans le travail. Le correcteur doit déterminer si oui ou non ces éléments ou ces aspects se retrouvent dans le travail qui a été remis. L'enseignant établit un barème de correction déterminant la note lorsque tous les éléments sont présents, un élément est absent, deux éléments sont absents, etc. Il peut aussi modifier le coefficient de chaque critère pour établir son importance relative. La somme des erreurs correspond à la somme pondérée des éléments manquants. Il n'est pas nécessaire que la distribution des coefficients soit linéaire. Par exemple, pour dix énoncés les notes pourraient être : 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0%. Le correcteur peut toujours faire une révision des notes suggérées pouvant aller jusqu'à 20%.
                              12. - -
                              13. Niveaux d'atteinte global des objectifs. L'enseignant fournit plusieurs énoncés qui décrivent des niveaux différents d'atteinte des objectifs. Le correcteur doit choisir l'énoncé qui correspond le mieux au travail qui a été remis. Les énoncés peuvent décrire des niveaux successifs ou être indépendants les uns des autres. L'enseignant établit un barème de correction. Le correcteur peut apporter une révision des notes suggérées pouvant aller jusqu'à 20%.
                              14. - -
                              15. Grille d'évaluation critériée. Cette stratégie est semblable à celle du niveau d'atteinte global des objectifs à la différence qu'elle comporte plusieurs critères. Le nombre de critères est déterminé dans les paramètres de l'atelier. Pour chaque critère, il peut y avoir jusqu'à cinq énoncés décrivant les niveaux atteints. Ce nombre de niveaux peut varier d'un critère à l'autre. Un niveau laissé vide par l'enseignant signale que le niveau précédent est le dernier. Les critères peuvent être pondérés. Les niveaux sont marqués par les chiffres 0, 1, 2, 3 et 4. Ces chiffres correspondent à la note accordée à chaque niveau. La note finale pour ce travail est la somme pondérée des notes pour chaque critère.
                              16. +
                              17. Grille d'évaluation critériée. +Cette stratégie est semblable à celle du niveau +d'atteinte global des objectifs à la différence +qu'elle comporte plusieurs critères. Le nombre de +critères est déterminé dans les +paramètres de l'atelier. Pour chaque critère, il +peut y avoir jusqu'à cinq énoncés +décrivant les niveaux atteints. Ce nombre de niveaux peut +varier d'un critère à l'autre. Un niveau +laissé vide par l'enseignant signale que le niveau +précédent est le dernier. Les critères +peuvent être pondérés. Les niveaux sont +marqués par les chiffres 0, 1, 2, 3 et 4. Ces chiffres +correspondent à la note accordée à chaque +niveau. La note finale pour ce travail est la somme +pondérée des notes pour chaque critère.
                              \ No newline at end of file diff --git a/lang/fr/help/workshop/finalgrades.html b/lang/fr/help/workshop/finalgrades.html index 69f7094ba21..b79eac89590 100755 --- a/lang/fr/help/workshop/finalgrades.html +++ b/lang/fr/help/workshop/finalgrades.html @@ -1,13 +1,33 @@ - +

                              Notes finales

                              -

                              Notes finales

                              - -

                              Le tableau affiché sur cette page présente les notes finales et leur répartition dans la même présentation que pour les étudiants. Si certaines valeurs manquent dans le tableau, il est possible de retourner à la phase précédente et de les ajouter. En fait, deux modifications peuvent être apportées aux notes finales :

                              +

                              Le tableau affiché sur cette page présente les +notes finales et leur répartition dans la même +présentation que pour les étudiants. Si certaines +valeurs manquent dans le tableau, il est possible de retourner +à la phase précédente et de les ajouter. En +fait, deux modifications peuvent être apportées aux +notes finales :

                                -
                              1. Si la note d'un enseignant doit être ajoutée, alors le travail peut être évalué en retournant sur la page d'administration de l'atelier et en cliquant sur le lien « Travaux remis par les étudiants ». Tous les travaux peuvent être évalués ici. Vous pouvez alors retourner à la phase 5 et recalculer les notes finales. De la même façon, tous les travaux qui n'ont pas été évalués peuvent l'être à partir de l'adminstration de l'atelier.
                              2. +
                              3. Si la note d'un enseignant doit être ajoutée, +alors le travail peut être évalué en +retournant sur la page d'administration de l'atelier et en +cliquant sur le lien « Travaux remis par les +étudiants ». Tous les travaux peuvent +être évalués ici. Vous pouvez alors retourner +à la phase 5 et recalculer les notes finales. De la +même façon, tous les travaux qui n'ont pas +été évalués peuvent l'être +à partir de l'adminstration de l'atelier.
                              4. -
                              5. L'enseignant peut décider de modifier la pondération des différents éléments. Pour ce faire, il doit se rendre à la phase 5 de l'atelier. Il clique ensuite le lien « Calcul de la note finale » pour saisir les nouveaux coefficients. Après que les notes ont été recalculées, la phase 6 de l'atelier affiche les résultats aux étudiants.
                              6. +
                              7. L'enseignant peut décider de modifier la +pondération des différents éléments. +Pour ce faire, il doit se rendre à la phase 5 de +l'atelier. Il clique ensuite le lien « Calcul de la +note finale » pour saisir les nouveaux coefficients. +Après que les notes ont été +recalculées, la phase 6 de l'atelier affiche les +résultats aux étudiants.
                              \ No newline at end of file diff --git a/lang/fr/help/workshop/grade.html b/lang/fr/help/workshop/grade.html deleted file mode 100755 index d31d921992c..00000000000 --- a/lang/fr/help/workshop/grade.html +++ /dev/null @@ -1,7 +0,0 @@ - - -

                              Évaluation par les pairs

                              - -

                              Ceci affiche les notes et les commentaires qui ont été faits sur le travail que vous avez remis pour évaluation. À ce stade, vous pouvez si vous le désirez répondre à cette évaluation et choisir de la contester. Si c'est le cas, veuillez écrire votre réponse dans le champ au bas de la page en précisant la ou les raisons pour lesquelles vous n'êtes pas d'accord avec l'évaluation. Ensuite, cliquez sur le bouton au bas de la page et choisissez NON lorsqu'on vous demandera si vous êtes satisfait de l'évaluation.

                              - -

                              Autrement, cliquez sur le bouton au bas de la page et choisissez OUI lorsqu'on vous demandera si vous êtes satisfait de l'évaluation.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/graded.html b/lang/fr/help/workshop/graded.html new file mode 100755 index 00000000000..78a70082aff --- /dev/null +++ b/lang/fr/help/workshop/graded.html @@ -0,0 +1,18 @@ +

                              Travail évalué par les +pairs

                              + +

                              Ceci affiche les notes et les commentaires qui ont +été faits sur le travail que vous avez remis pour +évaluation. À ce stade, vous pouvez si vous le +désirez répondre à cette évaluation +et choisir de la contester. Si c'est le cas, veuillez +écrire votre réponse dans le champ au bas de la +page en précisant la ou les raisons pour lesquelles vous +n'êtes pas d'accord avec l'évaluation. Ensuite, +cliquez sur le bouton au bas de la page et choisissez NON +lorsqu'on vous demandera si vous êtes satisfait de +l'évaluation.

                              + +

                              Autrement, cliquez sur le bouton au bas de la page et +choisissez OUI lorsqu'on vous demandera si vous êtes +satisfait de l'évaluation.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/grading.html b/lang/fr/help/workshop/grading.html index 37497f3ec25..06f8a2be39a 100755 --- a/lang/fr/help/workshop/grading.html +++ b/lang/fr/help/workshop/grading.html @@ -1,19 +1,45 @@ - +

                              Évaluation des travaux remis

                              -

                              Évaluation des travaux remis

                              +

                              Pour faciliter l'évaluation, on utilise des +critères qui couvrent un aspect particulier du travail. +Selon le type de stratégie d'évaluation qui a +été choisi, vous devriez pour chaque +critère :

                              -

                              Pour faciliter l'évaluation, on utilise des critères qui couvrent un aspect particulier du travail. Selon le type de stratégie d'évaluation qui a été choisi, vous devriez pour chaque critère :

                              +
                              1. Choisir une note en cliquant sur le bouton +approprié ou en sélectionnant la note +désirée à partir d'un menu +déroulant.
                              2. -
                                  +
                                1. Saisir une explication dans le champ prévu pour le +feedback en expliquant pourquoi vous avez donné cette +note. Si vous estimez que la raison est évidente, +laissez le champ vide. Cependant, veuillez noter que l'enseignant +peut examiner votre évaluation. Il y a plus de chances +qu'il remette en question les notes que vous avez +attribuées pour les critères où il n'y a pas +d'explication.
                                -
                              3. Choisir une note en cliquant sur le bouton approprié ou en sélectionnant la note désirée à partir d'un menu déroulant.
                              4. +

                                Dans certains types d'évaluation, on peut vous demander +de déterminer si divers éléments sont +présents ou absents du travail. Vous pourrez aussi avoir +à choisir quel énoncé décrit le mieux +la qualité du travail, et ce parmi un ensemble +d'énoncés. Vous pourrez dans ces deux cas ajuster +légèrement la note pour qu'elle reflète le +mieux possible votre évaluation.

                                -
                              5. Saisir une explication dans le champ prévu pour le feedback en expliquant pourquoi vous avez donné cette note. Si vous estimez que la raison est évidente, laissez le champ vide. Cependant, veuillez noter que l'enseignant peut examiner votre évaluation. Il y a plus de chances qu'il remette en question les notes que vous avez attribuées pour les critères où il n'y a pas d'explication.
                              6. +

                                Le dernier champ de cette page vous permet de faire un +commentaire général sur le travail, afin de +justifier votre évaluation dans son ensemble. Ce +commentaire doit être respectueux et constructif. Il sera +vu par celui qui a fait le travail.

                                -
                              - -

                              Dans certains types d'évaluation, on peut vous demander de déterminer si divers éléments sont présents ou absents du travail. Vous pourrez aussi avoir à choisir quel énoncé décrit le mieux la qualité du travail, et ce parmi un ensemble d'énoncés. Vous pourrez dans ces deux cas ajuster légèrement la note pour qu'elle reflète le mieux possible votre évaluation.

                              - -

                              Le dernier champ de cette page vous permet de faire un commentaire général sur le travail, afin de justifier votre évaluation dans son ensemble. Ce commentaire doit être respectueux et constructif. Il sera vu par celui qui a fait le travail.

                              - -

                              Une fois que vous avez remis votre évaluation, vous aurez environ 30 minutes pour la modifier si vous changez d'avis sur vos notes et vos commentaires. Ce délai est fixé par l'administrateur du site Moodle. La personne dont vous avez évalué le travail sera avertie par courriel que son évaluation est disponible. Vous ne pourrez alors que consulter l'évaluation sans pouvoir la modifier.

                              \ No newline at end of file +

                              Une fois que vous avez remis votre évaluation, vous +aurez environ 30 minutes pour la modifier si vous changez d'avis +sur vos notes et vos commentaires. Ce délai est +fixé par l'administrateur du site Moodle. La personne dont +vous avez évalué le travail sera avertie par +courriel que son évaluation est disponible. Vous ne +pourrez alors que consulter l'évaluation sans pouvoir la +modifier.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/gradingassessments.html b/lang/fr/help/workshop/gradingassessments.html index 1e1cdece3ff..ccb98194513 100755 --- a/lang/fr/help/workshop/gradingassessments.html +++ b/lang/fr/help/workshop/gradingassessments.html @@ -1,21 +1,41 @@ - +

                              Noter les évaluations des +étudiants

                              -

                              Noter les évaluations des étudiants

                              +

                              Cette page sert à l'enseignant pour noter +l'évaluation faite par l'étudiant pendant la phase +de remise et d'évaluation des travaux. On utilise une +échelle sur 20. L'enseignant décide ce qui est +noté et des notes en fonction des instructions +données aux étudiants avant le début de +l'atelier.

                              -

                              Cette page sert à l'enseignant pour noter l'évaluation faite par l'étudiant pendant la phase de remise et d'évaluation des travaux. On utilise une échelle sur 20. L'enseignant décide ce qui est noté et des notes en fonction des instructions données aux étudiants avant le début de l'atelier.

                              - -

                              L'enseignant peut progressivement se montrer de plus en plus exigeant dans les évaluations, comme dans l'exemple ci-dessous :

                              +

                              L'enseignant peut progressivement se montrer de plus en plus +exigeant dans les évaluations, comme dans l'exemple +ci-dessous :

                                +
                              • Au début, les étudiants doivent simplement +relever les erreurs et les inexactitudes dans les travaux.
                              • -
                              • Au début, les étudiants doivent simplement relever les erreurs et les inexactitudes dans les travaux.
                              • - -
                              • Par la suite, les étudiants doivent indiquer les forces et faiblesses des travaux.
                              • - -
                              • Finalement, les étudiants doivent émettre une critique sur les travaux.
                              • +
                              • Par la suite, les étudiants doivent indiquer les +forces et faiblesses des travaux.
                              • +
                              • Finalement, les étudiants doivent émettre une +critique sur les travaux.
                              -

                              L'évaluation de l'enseignant est affichée à l'étudiant lorsqu'elle est disponible. Cette évaluation sert alors de référence pour l'étudiant.

                              +

                              L'évaluation de l'enseignant est affichée à +l'étudiant lorsqu'elle est disponible. Cette +évaluation sert alors de référence pour +l'étudiant.

                              -

                              La note de l'évaluation est enregistrée en cliquant sur le bouton au bas de la page. L'enseignant peut modifier sa propre évaluation pendant le délai d'édition de Moodle. Une fois ce délai échu, l'étudiant peut voir l'évaluation de l'enseignant. Toutefois, la note ne sera pas visible pour l'étudiant tant que l'atelier n'est pas à la phase finale de la remise des notes. Cela évite qu'il y ait confusion entre la note du travail et la note de l'évaluation des travaux.

                              \ No newline at end of file +

                              La note de l'évaluation est enregistrée en +cliquant sur le bouton au bas de la page. L'enseignant peut +modifier sa propre évaluation pendant le délai +d'édition de Moodle. Une fois ce délai échu, +l'étudiant peut voir l'évaluation de l'enseignant. +Toutefois, la note ne sera pas visible pour l'étudiant +tant que l'atelier n'est pas à la phase finale de la +remise des notes. Cela évite qu'il y ait confusion entre +la note du travail et la note de l'évaluation des +travaux.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/gradingstrategy.html b/lang/fr/help/workshop/gradingstrategy.html index 9bb7e48bc08..938367bcf01 100755 --- a/lang/fr/help/workshop/gradingstrategy.html +++ b/lang/fr/help/workshop/gradingstrategy.html @@ -1,31 +1,119 @@ - +

                              Stratégie d'évaluation

                              -

                              Stratégie d'évaluation

                              +

                              Pour faciliter l'évaluation, tout travail d'un atelier +devrait comprendre un nombre raisonnable +d'éléments d'évaluation. Suivant sa +complexité et sa longueur, un travail devrait avoir entre +5 et 15 éléments d'évaluation, chacun +couvrant un aspect particulier du devoir. Un travail ne +comprenant qu'un élément est possible ; la +stratégie d'évaluation d'un tel travail est +semblable à celle d'un devoir Moodle.

                              -

                              Pour faciliter l'évaluation, tout travail d'un atelier devrait comprendre un nombre raisonnable d'éléments d'évaluation. Suivant sa complexité et sa longueur, un travail devrait avoir entre 5 et 15 éléments d'évaluation, chacun couvrant un aspect particulier du devoir. Un travail ne comprenant qu'un élément est possible ; la stratégie d'évaluation d'un tel travail est semblable à celle d'un devoir Moodle.

                              - -

                              Le type des éléments d'évaluation dépend de la stratégie d'évaluation désirée :

                              +

                              Le type des éléments d'évaluation +dépend de la stratégie d'évaluation +désirée :

                                -
                              1. Évaluation formative avec grille d'observation. Les critères peuvent prendre la forme de descriptions de certains aspects du travail, de questions, de commentaires. Le correcteur doit fournir ses observations sur le travail en fonction de ces critères. Comme avec toutes les stratégies d'évaluation, un espace est prévu pour des commentaires d'ordre général. L'évaluation est de type qualitatif et donc le correcteur n'attribue pas de note. L'enseignant peut toutefois accorder une note pour l'évaluation du correcteur qui sera à la base de la note qui apparaîtra dans le rapport des résultats du cours. Aucune note n'apparaîtra si l'enseignant ne donne pas de note.
                              2. +
                              3. Évaluation formative avec grille d'observation. +Les critères peuvent prendre la forme de descriptions de +certains aspects du travail, de questions, de commentaires. Le +correcteur doit fournir ses observations sur le travail en +fonction de ces critères. Comme avec toutes les +stratégies d'évaluation, un espace est prévu +pour des commentaires d'ordre général. +L'évaluation est de type qualitatif et donc le correcteur +n'attribue pas de note. L'enseignant peut toutefois accorder une +note pour l'évaluation du correcteur qui sera à la +base de la note qui apparaîtra dans le rapport des +résultats du cours. Aucune note n'apparaîtra si +l'enseignant ne donne pas de note.
                              4. -
                              5. Critères avec une échelle d'appréciation. C'est la stratégie par défaut. L'évaluation se fait à partir d'énoncés qui décrivent des aspects désirés dans le travail. Le correcteur attribue une note à partir d'une échelle d'appréciation pour chaque critère. Chaque critère a les trois caractéristiques suivantes :
                              6. +
                              7. Critères avec une échelle +d'appréciation. C'est la stratégie par +défaut. L'évaluation se fait à partir +d'énoncés qui décrivent des aspects +désirés dans le travail. Le correcteur attribue une +note à partir d'une échelle d'appréciation +pour chaque critère. Chaque critère a les trois +caractéristiques suivantes :
                              8. -
                                  +
                                  • Une description : la description explique +clairement quel aspect de la tâche est +évalué. Si l'évaluation est qualitative, on +doit inclure des détails sur ce qui est +considéré comme excellent, moyen et faible.
                                  • -
                                  • Une description : la description explique clairement quel aspect de la tâche est évalué. Si l'évaluation est qualitative, on doit inclure des détails sur ce qui est considéré comme excellent, moyen et faible.
                                  • +
                                  • Une échelle d'appréciation : Moodle +offre plusieurs échelles prédéfinies qui +vont du simple Oui/Non à une échelle en +pourcentage, en passant par une échelle de plusieurs +points allant d'excellent à très faible. +L'enseignant choisit l'échelle en fonction du type de +critère. Le nombre de division sur l'échelle ne +détermine pas l'importance relative du +critère : c'est le coefficient du critère qui +remplit cette fonction.
                                  • -
                                  • Une échelle d'appréciation : Moodle offre plusieurs échelles prédéfinies qui vont du simple Oui/Non à une échelle en pourcentage, en passant par une échelle de plusieurs points allant d'excellent à très faible. L'enseignant choisit l'échelle en fonction du type de critère. Le nombre de division sur l'échelle ne détermine pas l'importance relative du critère : c'est le coefficient du critère qui remplit cette fonction.
                                  • +
                                  • Un coefficient : par défaut, tous les +critères ont le même coefficient dans le calcul de +la note finale du travail. L'enseignant peut toutefois modifier +l'importance relative de chaque critère en accordant un +poids plus grand que 1 à un critère plus important +et un poids inférieur à 1 à un +critère moins important (on peut donner au coefficient une +valeur négative). Le changement des coefficients n'a pas +d'influence sur la note maximale, qui est fixée dans les +réglages de l'atelier.
                                  -
                                • Un coefficient : par défaut, tous les critères ont le même coefficient dans le calcul de la note finale du travail. L'enseignant peut toutefois modifier l'importance relative de chaque critère en accordant un poids plus grand que 1 à un critère plus important et un poids inférieur à 1 à un critère moins important (on peut donner au coefficient une valeur négative). Le changement des coefficients n'a pas d'influence sur la note maximale, qui est fixée dans les réglages de l'atelier.
                                • +
                                • Liste de vérification. Des critères +décrivent les éléments qui doivent +être présents ou les aspects qui doivent être +couverts dans le travail. Le correcteur doit déterminer si +oui ou non ces éléments ou ces +aspects se retrouvent dans le travail qui a été +remis. L'enseignant établit un barème de correction +déterminant la note lorsque tous les +éléments sont présents, un +élément est absent, deux éléments +sont absents, etc. Il peut aussi modifier le coefficient de +chaque critère pour établir son importance +relative. La somme des erreurs correspond à la somme +pondérée des éléments manquants. Il +n'est pas nécessaire que la distribution des coefficients +soit linéaire. Par exemple, pour dix énoncés +les notes pourraient être : 90%, 70%, 50%, 40%, 30%, 20%, +10%, 0%, 0%, 0%. Le correcteur peut toujours faire une +révision des notes suggérées pouvant aller +jusqu'à 20%.
                                • -
                                +
                              9. Niveaux d'atteinte global des objectifs. L'enseignant +fournit plusieurs énoncés qui décrivent des +niveaux différents d'atteinte des objectifs. Le correcteur +doit choisir l'énoncé qui correspond le mieux au +travail qui a été remis. Les énoncés +peuvent décrire des niveaux successifs ou être +indépendants les uns des autres. L'enseignant +établit un barème de correction. Le correcteur peut +apporter une révision des notes +suggérées pouvant aller jusqu'à 20%.
                              10. -
                              11. Liste de vérification. Des critères décrivent les éléments qui doivent être présents ou les aspects qui doivent être couverts dans le travail. Le correcteur doit déterminer si oui ou non ces éléments ou ces aspects se retrouvent dans le travail qui a été remis. L'enseignant établit un barème de correction déterminant la note lorsque tous les éléments sont présents, un élément est absent, deux éléments sont absents, etc. Il peut aussi modifier le coefficient de chaque critère pour établir son importance relative. La somme des erreurs correspond à la somme pondérée des éléments manquants. Il n'est pas nécessaire que la distribution des coefficients soit linéaire. Par exemple, pour dix énoncés les notes pourraient être : 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0%. Le correcteur peut toujours faire une révision des notes suggérées pouvant aller jusqu'à 20%.
                              12. - -
                              13. Niveaux d'atteinte global des objectifs. L'enseignant fournit plusieurs énoncés qui décrivent des niveaux différents d'atteinte des objectifs. Le correcteur doit choisir l'énoncé qui correspond le mieux au travail qui a été remis. Les énoncés peuvent décrire des niveaux successifs ou être indépendants les uns des autres. L'enseignant établit un barème de correction. Le correcteur peut apporter une révision des notes suggérées pouvant aller jusqu'à 20%.
                              14. - -
                              15. Grille d'évaluation critériée. Cette stratégie est semblable à celle du niveau d'atteinte global des objectifs à la différence qu'elle comporte plusieurs critères. Le nombre de critères est déterminé dans les paramètres de l'atelier. Pour chaque critère, il peut y avoir jusqu'à cinq énoncés décrivant les niveaux atteints. Ce nombre de niveaux peut varier d'un critère à l'autre. Un niveau laissé vide par l'enseignant signale que le niveau précédent est le dernier. Les critères peuvent être pondérés. Les niveaux sont marqués par les chiffres 0, 1, 2, 3 et 4. Ces chiffres correspondent à la note accordée à chaque niveau. La note finale pour ce travail est la somme pondérée des notes pour chaque critère.
                              16. +
                              17. Grille d'évaluation critériée. +Cette stratégie est semblable à celle du niveau +d'atteinte global des objectifs à la différence +qu'elle comporte plusieurs critères. Le nombre de +critères est déterminé dans les +paramètres de l'atelier. Pour chaque critère, il +peut y avoir jusqu'à cinq énoncés +décrivant les niveaux atteints. Ce nombre de niveaux peut +varier d'un critère à l'autre. Un niveau +laissé vide par l'enseignant signale que le niveau +précédent est le dernier. Les critères +peuvent être pondérés. Les niveaux sont +marqués par les chiffres 0, 1, 2, 3 et 4. Ces chiffres +correspondent à la note accordée à chaque +niveau. La note finale pour ce travail est la somme +pondérée des notes pour chaque critère.
                              \ No newline at end of file diff --git a/lang/fr/help/workshop/gradingsubmissions.html b/lang/fr/help/workshop/gradingsubmissions.html index 83d8390f385..d83ed9b90ac 100755 --- a/lang/fr/help/workshop/gradingsubmissions.html +++ b/lang/fr/help/workshop/gradingsubmissions.html @@ -1,15 +1,24 @@ - +

                              Évaluation des travaux +d'étudiants

                              -

                              Évaluation des travaux d'étudiants

                              +

                              En général, l'enseignant voudra lui-même +évaluer les travaux remis par les étudiants. Les +évaluations sont montrées aux étudiants afin +de fournir un feedback sur leur travail.

                              -

                              En général, l'enseignant voudra lui-même évaluer les travaux remis par les étudiants. Les évaluations sont montrées aux étudiants afin de fournir un feedback sur leur travail.

                              - -

                              Les notes résultantes de ces évaluations peuvent être employées de deux manières dans le calcul de la note finale :

                              +

                              Les notes résultantes de ces évaluations peuvent +être employées de deux manières dans le +calcul de la note finale :

                                -
                              • Premièrement, la note elle-même peut être utilisée comme composante pondérée de la note finale.
                              • +
                              • Premièrement, la note elle-même peut être +utilisée comme composante pondérée de la +note finale.
                              • -
                              • Deuxièmement, l'enseignant peut au besoin utiliser ses propres notes comme facteur modérateur, s'il juge que les notes accordées par les pairs sont trop hautes ou trop basses.
                              • +
                              • Deuxièmement, l'enseignant peut au besoin utiliser ses +propres notes comme facteur modérateur, s'il juge que les +notes accordées par les pairs sont trop hautes ou trop +basses.
                              \ No newline at end of file diff --git a/lang/fr/help/workshop/includeself.html b/lang/fr/help/workshop/includeself.html index 7070334733b..00e0b73dc48 100755 --- a/lang/fr/help/workshop/includeself.html +++ b/lang/fr/help/workshop/includeself.html @@ -1,7 +1,14 @@ - +

                              Inclure l'auto-évaluation

                              -

                              Inclure l'auto-évaluation

                              +

                              L'enseignant peut décider de faire évaluer +à chaque étudiant son propre travail en plus d'un +ou plusieurs travaux de ses pairs. Par exemple, si le nombre de +travaux à corriger est fixé à trois, chaque +étudiant évaluera quatre travaux : +le sien et trois travaux provenant de trois autres +étudiants.

                              -

                              L'enseignant peut décider de faire évaluer à chaque étudiant son propre travail en plus d'un ou plusieurs travaux de ses pairs. Par exemple, si le nombre de travaux à corriger est fixé à trois, chaque étudiant évaluera quatre travaux : le sien et trois travaux provenant de trois autres étudiants.

                              - -

                              Si le nombre de travaux à corriger est nul et que l'auto-évaluation est activée, l'atelier devient un travail autoévalué. L'enseignant peut ou non, ajouter sa propre évaluation du travail.

                              \ No newline at end of file +

                              Si le nombre de travaux à corriger est nul et que +l'auto-évaluation est activée, l'atelier devient un +travail autoévalué. L'enseignant peut ou non, +ajouter sa propre évaluation du travail.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/includeteachersgrade.html b/lang/fr/help/workshop/includeteachersgrade.html index 15936bde2a5..0895cd1a098 100755 --- a/lang/fr/help/workshop/includeteachersgrade.html +++ b/lang/fr/help/workshop/includeteachersgrade.html @@ -1,13 +1,13 @@ -

                              Inclure la note de l'enseignant

                              +

                              Inclure la note de l'enseignant

                              -

                              Lorsque cette option est activée, les évaluations de l'enseignant comptent double dans le calcul de la note : premièrement comme évaluation faite par l'enseignant et deuxièmement comme évaluation faite par un étudiant (ses évaluations étant aussi ajoutées aux évaluations des étudiants). L'enseignant peut décider d'agir ainsi parce que :

                              +

                              Lorsque cette option est activée, les évaluations de l'enseignant comptent double dans le calcul de la note : premièrement comme évaluation faite par l'enseignant et deuxièmement comme évaluation faite par un étudiant (ses évaluations étant aussi ajoutées aux évaluations des étudiants). L'enseignant peut décider d'agir ainsi parce que :

                                -
                              • le nombre d'évaluations par les étudiants est trop bas ;
                              • +
                              • le nombre d'évaluations par les étudiants est trop bas ;
                              • -
                              • les évaluations des étudiants semblent biaisées ou peu fiables.
                              • +
                              • les évaluations des étudiants semblent biaisées ou peu fiables.
                              \ No newline at end of file diff --git a/lang/fr/help/workshop/index.html b/lang/fr/help/workshop/index.html index 89db9d5d857..6f19734bcf7 100755 --- a/lang/fr/help/workshop/index.html +++ b/lang/fr/help/workshop/index.html @@ -1,63 +1,112 @@ - -

                              Ateliers

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/leaguetable.html b/lang/fr/help/workshop/leaguetable.html index a298b2f01ac..2d4dbec26b1 100755 --- a/lang/fr/help/workshop/leaguetable.html +++ b/lang/fr/help/workshop/leaguetable.html @@ -1,7 +1,15 @@ - +

                              Tableau des meilleurs travaux

                              -

                              Tableau des meilleurs travaux

                              +

                              Le tableau des meilleurs travaux affiche les meilleurs +travaux produits dans l'atelier. Le nombre de travaux +affichés peut-être nul, un nombre entre 1 et 20, 50 +ou « tous ». Un zéro +désactive l'affichage du tableau. Tout autre nombre +provoque l'affichage du nombre de travaux choisis. +« Tous » affiche tous les travaux.

                              -

                              Le tableau des meilleurs travaux affiche les meilleurs travaux produits dans l'atelier. Le nombre de travaux affichés peut-être nul, un nombre entre 1 et 20, 50 ou « tous ». Un zéro désactive l'affichage du tableau. Tout autre nombre provoque l'affichage du nombre de travaux choisis. « Tous » affiche tous les travaux.

                              - -

                              La deuxième option détermine si les noms des étudiants sont affichés ou non dans le tableau. Lorsqu'elle est activée, les étudiants verront une liste anonyme. Pour l'enseignant les noms des étudiants sont toujours visibles.

                              \ No newline at end of file +

                              La deuxième option détermine si les noms des +étudiants sont affichés ou non dans le tableau. +Lorsqu'elle est activée, les étudiants verront une +liste anonyme. Pour l'enseignant les noms des étudiants +sont toujours visibles.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/managing.html b/lang/fr/help/workshop/managing.html index 22dce69967c..11c244a522b 100755 --- a/lang/fr/help/workshop/managing.html +++ b/lang/fr/help/workshop/managing.html @@ -1,89 +1,47 @@ -

                              Administration d'un atelier

                              +

                              Administration d'un atelier

                              -

                              Un atelier est plus complexe qu'une activité ordinaire. L'enseignant, après avoir créé l'atelier et choisi ses paramètres, gère son déroulement en activant tour à tour les différentes phases de cet atelier :

                              +

                              Un atelier est plus complexe qu'une activité ordinaire. L'enseignant, après avoir créé l'atelier et choisi ses paramètres, gère son déroulement en activant tour à tour les différentes phases de cet atelier :

                                -
                              1. +
                              2. Mise en place du travail La première phase est automatiquement activée lors de la création de l'atelier. L'enseignant a décidé des paramètres de l'atelier et il doit maintenant fournir les critères ou les énoncés qui serviront à l'évaluation des travaux qui seront remis par les étudiants. L'évaluation sera moins arbitraire et plus équitable si l'on donne aux étudiants un cadre de référence pour évaluer les travaux de leurs pairs. L'enseignant a la responsabilité de fournir la grille et le barème d'évaluation (pour plus de détails, voir l'aide sur ce sujet).

                                -

                                Mise en place du travail La première phase est automatiquement activée lors de la création de l'atelier. L'enseignant a décidé des paramètres de l'atelier et il doit maintenant fournir les critères ou les énoncés qui serviront à l'évaluation des travaux qui seront remis par les étudiants. L'évaluation sera moins arbitraire et plus équitable si l'on donne aux étudiants un cadre de référence pour évaluer les travaux de leurs pairs. L'enseignant a la responsabilité de fournir la grille et le barème d'évaluation (pour plus de détails, voir l'aide sur ce sujet).

                                +

                                L'enseignant présente ensuite des échantillons de travaux qui vont servir d'exemples et de contre-exemples. Les étudiants devront les évaluer afin de bien comprendre les critères d'évaluation avant de créer et de remettre leurs propres travaux. Cependant, avant que les étudiants ne puissent remettre leurs travaux, l'enseignant devrait évaluer lui-même ces exemples. Il aura ainsi à sa disposition des spécimens d'évaluations pour comparaison avec les évaluations de ces exemples faites par les étudiants (lors de la phase suivante).

                                -

                                L'enseignant présente ensuite des échantillons de travaux qui vont servir d'exemples et de contre-exemples. Les étudiants devront les évaluer afin de bien comprendre les critères d'évaluation avant de créer et de remettre leurs propres travaux. Cependant, avant que les étudiants ne puissent remettre leurs travaux, l'enseignant devrait évaluer lui-même ces exemples. Il aura ainsi à sa disposition des spécimens d'évaluations pour comparaison avec les évaluations de ces exemples faites par les étudiants (lors de la phase suivante).

                                +

                                L'enseignant n'est pas obligé de fournir des exemples de travaux. Dans certains cas, cela pourrait même se révéler inapproprié.

                              3. -

                                L'enseignant n'est pas obligé de fournir des exemples de travaux. Dans certains cas, cela pourrait même se révéler inapproprié.

                                +
                              4. Permettre la remise des travaux Le travail peut maintenant débuter pour les étudiants. Si l'enseignant a fourni des exemples de travaux, les étudiants devront en évaluer un certain nombre (selon un des paramètres de l'atelier). Une fois qu'un étudiant a corrigé le nombre d'exemples requis, il peut alors remettre son propre travail. S'il n'y a pas d'exemples à corriger, les étudiants peuvent tout de suite remettre leurs travaux.

                                -
                              5. +

                                Il est préférable de laisser l'atelier dans cette phase pendant un certain temps afin de recueillir un nombre suffisant de travaux pour en assurer une meilleure distribution auprès des étudiants. Les travaux seront distribués pour évaluation dans les deux phases suivantes. Si le travail passe sans délai dans la phase « Permettre la remise des travaux et des évaluations » (cela est possible), les étudiants qui remettent leurs travaux en premier n'auront que ces premiers travaux à évaluer, tandis que les derniers étudiants auront les leurs à corriger. La mise en place de ce délai règle en grande partie ce problème.

                                -
                              6. +

                                Lorsqu'un étudiant remet un travail, l'enseignant peut, s'il le désire, évaluer ce travail. Cette évaluation peut être incorporée à la note finale de l'étudiant. Ces évaluations peuvent avoir lieu dans les phases de remise et d'évaluation du travail. Les évaluations de l'enseignant faites après le calcul des notes finales ne seront évidemment pas considérées.

                              7. -

                                Permettre la remise des travaux Le travail peut maintenant débuter pour les étudiants. Si l'enseignant a fourni des exemples de travaux, les étudiants devront en évaluer un certain nombre (selon un des paramètres de l'atelier). Une fois qu'un étudiant a corrigé le nombre d'exemples requis, il peut alors remettre son propre travail. S'il n'y a pas d'exemples à corriger, les étudiants peuvent tout de suite remettre leurs travaux.

                                +
                              8. Permettre la remise des travaux et des évaluations Si l'enseignant a inclus l'évaluation par les pairs dans l'atelier, les étudiants qui ont remis leur travail ont alors accès aux travaux de leurs pairs pour qu'ils puissent en faire l'évaluation. Les autres étudiants peuvent remettre leur travail, mais sans voir les travaux des autres. Dans cette phase, les étudiants peuvent remettre plusieurs versions de leur travail, chaque version peut être améliorée, le travail remis de nouveau, le travail amélioré encore, et ainsi de suite.

                                -

                                Il est préférable de laisser l'atelier dans cette phase pendant un certain temps afin de recueillir un nombre suffisant de travaux pour en assurer une meilleure distribution auprès des étudiants. Les travaux seront distribués pour évaluation dans les deux phases suivantes. Si le travail passe sans délai dans la phase « Permettre la remise des travaux et des évaluations » (cela est possible), les étudiants qui remettent leurs travaux en premier n'auront que ces premiers travaux à évaluer, tandis que les derniers étudiants auront les leurs à corriger. La mise en place de ce délai règle en grande partie ce problème.

                                +

                                L'enseignant peut dissocier l'étape de remise du travail et celle de son évaluation par les pairs en deux phases distinctes. La première phase permet à tous les étudiants de remettre leur travail avant une date d'échéance. Par la suite, tous les travaux ayant été remis, la phase d'évaluation peut commencer. Une telle stratégie rend inutile la phase 3 « Permettre la remise des travaux et des évaluations », puisque l'on passe directement de la phase « Permettre la remise des travaux » à la phase « Permettre les évaluations ».

                                -

                                Lorsqu'un étudiant remet un travail, l'enseignant peut, s'il le désire, évaluer ce travail. Cette évaluation peut être incorporée à la note finale de l'étudiant. Ces évaluations peuvent avoir lieu dans les phases de remise et d'évaluation du travail. Les évaluations de l'enseignant faites après le calcul des notes finales ne seront évidemment pas considérées.

                                +

                                Par contre si l'enseignant ne désire pas cette distinction, il utilise alors la phase 3 où les remises et les évaluations sont faites simultanément. L'enseignant devrait ajuster le nombre de travaux à corriger à 1 ou 2 pour permettre une meilleure distribution des travaux (voir les paramètres de l'atelier pour plus de détails). Il est à noter que cela aura pour conséquence que certains travaux seront évalués par des étudiants plus souvent que d'autres.

                                -
                              9. +

                                Lorsque son travail a été évalué par un pair, l'étudiant peut alors consulter cette évaluation. Il a le loisir de la commenter si l'enseignant a activé ce paramètre de l'atelier. De plus, l'enseignant peut évaluer les évaluations faites par les étudiants et la note ainsi obtenue peut servir au calcul de la note finale (voir l'aide sur le calcul de la note finale).

                                -
                              10. +
                              11. Permettre l'évaluation Dans cette phase, les étudiants peuvent encore évaluer les travaux de leurs pairs, mais ne peuvent plus remettre leur travail ou d'autres versions de leur travail. Les étudiants n'ayant pas encore remis leur travail et qui essaient de le faire verront un message indiquant que cela n'est plus possible. Par conséquent, ils ne pourront pas évaluer de travaux de leurs pairs.

                                -

                                Permettre la remise des travaux et des évaluations Si l'enseignant a inclus l'évaluation par les pairs dans l'atelier, les étudiants qui ont remis leur travail ont alors accès aux travaux de leurs pairs pour qu'ils puissent en faire l'évaluation. Les autres étudiants peuvent remettre leur travail, mais sans voir les travaux des autres. Dans cette phase, les étudiants peuvent remettre plusieurs versions de leur travail, chaque version peut être améliorée, le travail remis de nouveau, le travail amélioré encore, et ainsi de suite.

                                +

                                S'il le désire, l'enseignant peut continuer à évaluer les évaluations des étudiants et les notes serviront aux calculs de la note finale. La plupart du temps, cela n'est pas nécessaire (voir la phase suivante).

                              12. -

                                L'enseignant peut dissocier l'étape de remise du travail et celle de son évaluation par les pairs en deux phases distinctes. La première phase permet à tous les étudiants de remettre leur travail avant une date d'échéance. Par la suite, tous les travaux ayant été remis, la phase d'évaluation peut commencer. Une telle stratégie rend inutile la phase 3 « Permettre la remise des travaux et des évaluations », puisque l'on passe directement de la phase « Permettre la remise des travaux » à la phase « Permettre les évaluations ».

                                +
                              13. Calculer les notes finales Une fois l'échéance d'évaluation des travaux par les étudiants échue, l'enseignant passe à la phase suivante. Le travail des étudiants dans cet atelier est alors terminé. L'enseignant peut, lui, compléter l'évaluation (1) des évaluations de ses exemples par les étudiants, (2) des travaux des étudiants et (3) des évaluations des travaux faites par leurs pairs. Cette dernière évaluation n'est pas nécessaire si le nombre d'évaluations par les pairs est suffisant pour chaque travail, puisque les notes automatiquement accordées (représentant la qualité des évaluations) seront représentatives.

                                -

                                Par contre si l'enseignant ne désire pas cette distinction, il utilise alors la phase 3 où les remises et les évaluations sont faites simultanément. L'enseignant devrait ajuster le nombre de travaux à corriger à 1 ou 2 pour permettre une meilleure distribution des travaux (voir les paramètres de l'atelier pour plus de détails). Il est à noter que cela aura pour conséquence que certains travaux seront évalués par des étudiants plus souvent que d'autres.

                                +

                                L'enseignant calcule les notes finales des étudiants lorsque toutes les évaluations sont terminées. Ces notes se comportent trois composantes : la note accordée par l'enseignant, la moyenne des notes accordées par les pairs et une note représentant la qualité des évaluations faites par l'étudiant. Cette dernière note peut inclure une « note moyenne » donnée par l'enseignant en conséquence des commentaires de l'étudiant dans ses évaluations. L'enseignant fixe un coefficient à chaque composante de la note avant que le calcul soit effectué.

                              14. -

                                Lorsque son travail a été évalué par un pair, l'étudiant peut alors consulter cette évaluation. Il a le loisir de la commenter si l'enseignant a activé ce paramètre de l'atelier. De plus, l'enseignant peut évaluer les évaluations faites par les étudiants et la note ainsi obtenue peut servir au calcul de la note finale (voir l'aide sur le calcul de la note finale).

                                +
                              15. Afficher les notes finales La phase finale de l'atelier permet aux étudiants de voir leurs notes finales. Toutefois, l'enseignant peut revenir à une phase précédente pour, par exemple, réviser les coefficients des composantes des notes. Les étudiants verront alors les notes révisées.

                                -
                              16. - -
                              17. - -

                                Permettre l'évaluation Dans cette phase, les étudiants peuvent encore évaluer les travaux de leurs pairs, mais ne peuvent plus remettre leur travail ou d'autres versions de leur travail. Les étudiants n'ayant pas encore remis leur travail et qui essaient de le faire verront un message indiquant que cela n'est plus possible. Par conséquent, ils ne pourront pas évaluer de travaux de leurs pairs.

                                - -

                                S'il le désire, l'enseignant peut continuer à évaluer les évaluations des étudiants et les notes serviront aux calculs de la note finale. La plupart du temps, cela n'est pas nécessaire (voir la phase suivante).

                                - -
                              18. - -
                              19. - -

                                Calculer les notes finales Une fois l'échéance d'évaluation des travaux par les étudiants échue, l'enseignant passe à la phase suivante. Le travail des étudiants dans cet atelier est alors terminé. L'enseignant peut, lui, compléter l'évaluation (1) des évaluations de ses exemples par les étudiants, (2) des travaux des étudiants et (3) des évaluations des travaux faites par leurs pairs. Cette dernière évaluation n'est pas nécessaire si le nombre d'évaluations par les pairs est suffisant pour chaque travail, puisque les notes automatiquement accordées (représentant la qualité des évaluations) seront représentatives.

                                - -

                                L'enseignant calcule les notes finales des étudiants lorsque toutes les évaluations sont terminées. Ces notes se comportent trois composantes : la note accordée par l'enseignant, la moyenne des notes accordées par les pairs et une note représentant la qualité des évaluations faites par l'étudiant. Cette dernière note peut inclure une « note moyenne » donnée par l'enseignant en conséquence des commentaires de l'étudiant dans ses évaluations. L'enseignant fixe un coefficient à chaque composante de la note avant que le calcul soit effectué.

                                - -
                              20. - -
                              21. - -

                                Afficher les notes finales La phase finale de l'atelier permet aux étudiants de voir leurs notes finales. Toutefois, l'enseignant peut revenir à une phase précédente pour, par exemple, réviser les coefficients des composantes des notes. Les étudiants verront alors les notes révisées.

                                - -

                                Les étudiants et l'enseignant voient également un tableau des meilleurs travaux produits dans l'atelier. Ils sont classés selon les notes obtenues, le meilleur travail étant placé en premier. Les notes dans ce tableau se composent des notes accordées par l'enseignant et de la moyenne des notes accordées par les pairs. Les notes sont pondérées selon les coefficients fixés à la phase précédente.

                                - -
                              22. +

                                Les étudiants et l'enseignant voient également un tableau des meilleurs travaux produits dans l'atelier. Ils sont classés selon les notes obtenues, le meilleur travail étant placé en premier. Les notes dans ce tableau se composent des notes accordées par l'enseignant et de la moyenne des notes accordées par les pairs. Les notes sont pondérées selon les coefficients fixés à la phase précédente.

                              -

                              L'enseignant peut à tout moment ouvrir la page d'administration de l'atelier pour y voir l'état actuel de l'atelier et en suivre ainsi les progrès. On y retrouve :

                              +

                              L'enseignant peut à tout moment ouvrir la page d'administration de l'atelier pour y voir l'état actuel de l'atelier et en suivre ainsi les progrès. On y retrouve :

                              -
                                +
                                • la liste des exemples de l'enseignant,
                                • la liste des évaluations par les étudiants
                                  • des exemples de l'enseignant,
                                  • de leur propre travail et
                                  • des travaux de leurs pairs,
                                • la liste des travaux remis par les étudiants.
                                -
                              • la liste des exemples de l'enseignant,
                              • - -
                              • la liste des évaluations par les étudiants
                              • - -
                                  - -
                                • des exemples de l'enseignant,
                                • - -
                                • de leur propre travail et
                                • - -
                                • des travaux de leurs pairs,
                                • - -
                                - -
                              • la liste des travaux remis par les étudiants.
                              • - -
                              - -

                              À partir de cette page, l'enseignant peut évaluer et réévaluer les travaux, noter et renoter les évaluations, effacer des travaux et des évaluations.

                              \ No newline at end of file +À partir de cette page, l'enseignant peut évaluer et réévaluer les travaux, noter et renoter les évaluations, effacer des travaux et des évaluations. \ No newline at end of file diff --git a/lang/fr/help/workshop/mods.html b/lang/fr/help/workshop/mods.html index 19f71d62570..d31974a3371 100755 --- a/lang/fr/help/workshop/mods.html +++ b/lang/fr/help/workshop/mods.html @@ -1,9 +1,14 @@ - - -

                              Atelier Atelier

                              - +

                               Atelier

                                - -

                                Un atelier est une activité d'évaluation par les pairs offrant beaucoup d'options. Il permet à chaque étudiant d'évaluer les travaux des autres étudiants ou d'évaluer des exemples de travaux fournis par l'enseignant, en utilisant différentes stratégies d'évaluation. La gestion des travaux remis est automatique : collecte des travaux des étudiants, distribution des travaux aux étudiants pour évaluation, affichage des résultats, etc. Le module Atelier a été développé et mis à disposition par Ray Kingdon.

                                - +

                                Un atelier est une activité d'évaluation par les +pairs avec beaucoup d'options. Il permet à chaque +étudiant d'évaluer les travaux des autres +étudiants ou d'évaluer des exemples de travaux fournis +par l'enseignant, en utilisant différentes stratégies +d'évaluation. La gestion des travaux remis est +automatique : collecte des travaux des étudiants, +distribution des travaux aux étudiants pour évaluation, +affichage des résultats, etc. Le module Atelier a +été développé et mis à disposition +par Ray Kingdon.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/nassessmentsofstudentsubmissions.html b/lang/fr/help/workshop/nassessmentsofstudentsubmissions.html index 0321d38b457..9d283822cf2 100755 --- a/lang/fr/help/workshop/nassessmentsofstudentsubmissions.html +++ b/lang/fr/help/workshop/nassessmentsofstudentsubmissions.html @@ -1,5 +1,17 @@ - +

                              Nombre d'évaluations de travaux +d'étudiants

                              -

                              Nombre d'évaluations de travaux d'étudiants

                              - -

                              Ce nombre détermine le nombre d'évaluations de travaux de pairs que chaque étudiant aura à faire. Tout autre nombre que zéro indique le nombre d'évaluations à faire. Après l'évaluation, l'auteur du travail peut consulter les commentaires et optionnellement la note accordée par ses pairs. Le processus d'évaluation par les pairs peut être itératif si l'enseignant a choisi demander un accord entre l'auteur du travail et son évaluateur. L'enseignant peut également noter ces évaluations et les notes utilisées dans le calcul des notes finales. L'étudiant peut aussi consulter les commentaires et la note accordée par l'enseignant pour chaque évaluation qu'il a faite, le cas échéant.

                              \ No newline at end of file +

                              Ce nombre détermine le nombre d'évaluations de +travaux de pairs que chaque étudiant aura à faire. +Tout autre nombre que zéro indique le nombre +d'évaluations à faire. Après +l'évaluation, l'auteur du travail peut consulter les +commentaires et optionnellement la note accordée par ses +pairs. Le processus d'évaluation par les pairs peut +être itératif si l'enseignant a choisi demander un +accord entre l'auteur du travail et son évaluateur. +L'enseignant peut également noter ces évaluations +et les notes utilisées dans le calcul des notes finales. +L'étudiant peut aussi consulter les commentaires et la +note accordée par l'enseignant pour chaque +évaluation qu'il a faite, le cas échéant.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/nassessmentsofteachersexamples.html b/lang/fr/help/workshop/nassessmentsofteachersexamples.html index 0e9c8beabaa..aeb8c38855e 100755 --- a/lang/fr/help/workshop/nassessmentsofteachersexamples.html +++ b/lang/fr/help/workshop/nassessmentsofteachersexamples.html @@ -1,5 +1,14 @@ - +

                              Nombre d'évaluations d'exemples de +l'enseignant

                              -

                              Nombre d'évaluations d'exemples de l'enseignant

                              - -

                              Ce nombre détermine le nombre d'évaluations de travaux fournis par l'enseignant que chaque étudiant aura à faire avant avant de pouvoir remettre son propre travail. Tout autre nombre que zéro indique le nombre d'évaluations à faire. L'enseignant peut également noter ces évaluations et ces notes utilisées dans le calcul des notes finales. L'étudiant peut consulter les commentaires de l'enseignant, mais ne pourra voir la note obtenue avant que la date d'échéance pour la remise des travaux ne soit atteinte.

                              \ No newline at end of file +

                              Ce nombre détermine le nombre d'évaluations de +travaux fournis par l'enseignant que chaque étudiant aura +à faire avant avant de pouvoir remettre son propre +travail. Tout autre nombre que zéro indique le nombre +d'évaluations à faire. L'enseignant peut +également noter ces évaluations et ces notes +utilisées dans le calcul des notes finales. +L'étudiant peut consulter les commentaires de +l'enseignant, mais ne pourra voir la note obtenue avant que la +date d'échéance pour la remise des travaux ne soit +atteinte.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/nelements.html b/lang/fr/help/workshop/nelements.html index ba20d139f6f..97406c2bf81 100755 --- a/lang/fr/help/workshop/nelements.html +++ b/lang/fr/help/workshop/nelements.html @@ -1,7 +1,22 @@ - +

                              Nombre de commentaires, de critères ou +d'énoncés

                              -

                              Nombre de commentaires, de critères ou d'énoncés

                              +

                              Le nombre que vous inscrivez ici détermine combien de +commentaires, d'énoncés ou de critères +seront employés dans les évaluations. Typiquement, +il faudra cinq à quinze critères pour +évaluer un travail. Ce nombre varie en fonction de la +taille et de la complexité du travail que les +étudiants auront à accomplir. Les termes +commentaires, énoncés et critères +dépendent de la stratégie d'évaluation.

                              -

                              Le nombre que vous inscrivez ici détermine combien de commentaires, d'énoncés ou de critères seront employés dans les évaluations. Typiquement, il faudra cinq à quinze critères pour évaluer un travail. Ce nombre varie en fonction de la taille et de la complexité du travail que les étudiants auront à accomplir. Les termes commentaires, énoncés et critères dépendent de la stratégie d'évaluation.

                              - -

                              Tous les formulaires d'évaluation prévoient un champ permettant de fournir un commentaire d'ordre général sur le travail. Lorsque la stratégie d'évaluation est formative, c'est-à-dire, lorsqu'aucune note n'est accordée pour le travail, le nombre que vous inscrivez correspond au nombre de commentaires particuliers que pourra faire le correcteur. Si vous indiquez zéro, il n'y aura qu'un champ destiné au commentaire général.

                              \ No newline at end of file +

                              Tous les formulaires d'évaluation prévoient un +champ permettant de fournir un commentaire d'ordre +général sur le travail. Lorsque la stratégie +d'évaluation est formative, c'est-à-dire, +lorsqu'aucune note n'est accordée pour le travail, le +nombre que vous inscrivez correspond au nombre de commentaires +particuliers que pourra faire le correcteur. Si vous indiquez +zéro, il n'y aura qu'un champ destiné au +commentaire général.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/numberofassessors.html b/lang/fr/help/workshop/numberofassessors.html index d1b4b228960..512c8a0b826 100755 --- a/lang/fr/help/workshop/numberofassessors.html +++ b/lang/fr/help/workshop/numberofassessors.html @@ -1,9 +1,38 @@ - +

                              Nombre d'évaluations par les pairs

                              -

                              Nombre d'évaluations par les pairs

                              +

                              Dans un atelier, l'enseignant peut demander à chaque +étudiant d'évaluer un certain nombre de travaux +d'autres étudiants. Dans la phase d'évaluation par +les pairs et selon la complexité et la longueur du +travail, les étudiants pourront ainsi corriger de trois +à huit travaux. Plus le travail est d'envergure, plus ce +nombre devrait être petit, sans quoi le travail +d'évaluation devient trop grand pour les étudiants. +Cependant, chaque étudiant devrait corriger suffisamment +de travaux pour saisir ce qui constitue un bon et un mauvais +travail. Aussi, plus un étudiant évalue de travaux, +plus Moodle pourra mesurer sa capacité à +évaluer correctement des travaux. Cette mesure est +imprécise et peu fiable pour un nombre de travaux +évalués inférieur à trois ou +quatre.

                              -

                              Dans un atelier, l'enseignant peut demander à chaque étudiant d'évaluer un certain nombre de travaux d'autres étudiants. Dans la phase d'évaluation par les pairs et selon la complexité et la longueur du travail, les étudiants pourront ainsi corriger de trois à huit travaux. Plus le travail est d'envergure, plus ce nombre devrait être petit, sans quoi le travail d'évaluation devient trop grand pour les étudiants. Cependant, chaque étudiant devrait corriger suffisamment de travaux pour saisir ce qui constitue un bon et un mauvais travail. Aussi, plus un étudiant évalue de travaux, plus Moodle pourra mesurer sa capacité à évaluer correctement des travaux. Cette mesure est imprécise et peu fiable pour un nombre de travaux évalués inférieur à trois ou quatre.

                              +

                              S'il y a assez de travaux remis (10 ou plus) et que +l'enseignant a corrigé les travaux AVANT que Moodle ne les +répartisse pour évaluation par les pairs, Moodle +donnera à chaque étudiant au moins un +« bon » travail et au moins un travail +« faible ». L'enseignant n'est pas +obligé d'évaluer tous les travaux (un +échantillon est suffisant). De plus, les +évaluations de l'enseignant n'ont pas besoin d'être +complètes, une évaluation préliminaire est +suffisante. Il est à noter que les évaluations +seront visibles pour l'étudiant à la fin de la +phase de remise des travaux, si le paramètre correspondant +est activé.

                              -

                              S'il y a assez de travaux remis (10 ou plus) et que l'enseignant a corrigé les travaux AVANT que Moodle ne les répartisse pour évaluation par les pairs, Moodle donnera à chaque étudiant au moins un « bon » travail et au moins un travail « faible ». L'enseignant n'est pas obligé d'évaluer tous les travaux (un échantillon est suffisant). De plus, les évaluations de l'enseignant n'ont pas besoin d'être complètes, une évaluation préliminaire est suffisante. Il est à noter que les évaluations seront visibles pour l'étudiant à la fin de la phase de remise des travaux, si le paramètre correspondant est activé.

                              - -

                              Le nombre d'étudiants peut être nul. Dans ce cas, le travail devient soit un travail autoévalué, soit un travail évalué par l'enseignant, selon l'état des paramètres de l'atelier.

                              \ No newline at end of file +

                              Le nombre d'étudiants peut être nul. Dans ce cas, +le travail devient soit un travail autoévalué, soit +un travail évalué par l'enseignant, selon +l'état des paramètres de l'atelier.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/overallocation.html b/lang/fr/help/workshop/overallocation.html index f9c0f7a8763..b1899ff9602 100755 --- a/lang/fr/help/workshop/overallocation.html +++ b/lang/fr/help/workshop/overallocation.html @@ -1,9 +1,32 @@ - +

                              Équilibrer l'attribution des +travaux

                              -

                              Équilibrer l'attribution des travaux

                              +

                              Ce paramètre détermine si l'attribution des +travaux pour évaluation par les pairs est +équilibrée ou non. L'attribution est +équilibrée lorsque chaque travail est +attribué le même nombre de fois pour +évaluation. Lorsque ce paramètre est 0, tous les +travaux sont attribués le même nombre de fois et +l'attribution est équilibrée. Si le +paramètre est 1, un travail peut être +évalué une fois de plus ou une fois de moins que +les autres travaux. L'attribution est donc +déséquilibrée.

                              -

                              Ce paramètre détermine si l'attribution des travaux pour évaluation par les pairs est équilibrée ou non. L'attribution est équilibrée lorsque chaque travail est attribué le même nombre de fois pour évaluation. Lorsque ce paramètre est 0, tous les travaux sont attribués le même nombre de fois et l'attribution est équilibrée. Si le paramètre est 1, un travail peut être évalué une fois de plus ou une fois de moins que les autres travaux. L'attribution est donc déséquilibrée.

                              +

                              Naturellement, on désire que l'attribution soit +équilibrée. Toutefois, cela présente le +désavantage que certains étudiants n'auront +reçu leur quote-part de travaux à évaluer +que lorsque tous les étudiants auront remis leurs travaux. +Cette attente peut être réduite en permettant un +léger déséquilibre (1). L'attente des +travaux en retard devrait être encore plus rare quand le +niveau est placé à 2.

                              -

                              Naturellement, on désire que l'attribution soit équilibrée. Toutefois, cela présente le désavantage que certains étudiants n'auront reçu leur quote-part de travaux à évaluer que lorsque tous les étudiants auront remis leurs travaux. Cette attente peut être réduite en permettant un léger déséquilibre (1). L'attente des travaux en retard devrait être encore plus rare quand le niveau est placé à 2.

                              - -

                              Ainsi, dans un atelier où le nombre d'évaluations par les pairs est de cinq, si cela ne pose pas de problèmes que des travaux soient évalués quatre, cinq ou six fois, alors les évaluations se dérouleront sans trop d'attente avec un déséquilibre fixé à 1.

                              \ No newline at end of file +

                              Ainsi, dans un atelier où le nombre +d'évaluations par les pairs est de cinq, si cela ne pose +pas de problèmes que des travaux soient +évalués quatre, cinq ou six fois, alors les +évaluations se dérouleront sans trop d'attente avec +un déséquilibre fixé à 1.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/resubmit.html b/lang/fr/help/workshop/resubmit.html index 6ecda189f8d..8a6e6ddab97 100755 --- a/lang/fr/help/workshop/resubmit.html +++ b/lang/fr/help/workshop/resubmit.html @@ -1,9 +1,25 @@ - +

                              Remettre un travail à plusieurs +reprises

                              -

                              Remettre un travail à plusieurs reprises

                              +

                              Par défaut, les étudiants ne peuvent remettre +leur travail qu'une seule fois. Toutefois, l'enseignant peut +permettre aux étudiants de remettre plusieurs versions de +leur travail. Les étudiants peuvent alors améliorer +la qualité de leur travail par un processus +itératif de remises et d'évaluations.

                              -

                              Par défaut, les étudiants ne peuvent remettre leur travail qu'une seule fois. Toutefois, l'enseignant peut permettre aux étudiants de remettre plusieurs versions de leur travail. Les étudiants peuvent alors améliorer la qualité de leur travail par un processus itératif de remises et d'évaluations.

                              +

                              L'évaluation des travaux est assignée à +des étudiants sur la base du nombre d'évaluations +que le travail a obtenues. Ainsi, chaque nouvelle version du +travail d'un étudiant peut être +évaluée par des pairs. Cependant, si un +étudiant remet rapidement plusieurs versions de son +travail, elles seront probablement toutes évaluées +dans le même temps. Aucune priorité n'est +accordée à la dernière version.

                              -

                              L'évaluation des travaux est assignée à des étudiants sur la base du nombre d'évaluations que le travail a obtenues. Ainsi, chaque nouvelle version du travail d'un étudiant peut être évaluée par des pairs. Cependant, si un étudiant remet rapidement plusieurs versions de son travail, elles seront probablement toutes évaluées dans le même temps. Aucune priorité n'est accordée à la dernière version.

                              - -

                              La version du travail ayant obtenu la plus haute note sera utilisée dans le calcul de la note finale. On rappelle que les notes de toutes les versions résultent de la combinaison pondérée de la note de l'enseignant et de la note des pairs (lorsqu'elles sont disponibles).

                              \ No newline at end of file +

                              La version du travail ayant obtenu la plus haute note sera +utilisée dans le calcul de la note finale. On rappelle que +les notes de toutes les versions résultent de la +combinaison pondérée de la note de l'enseignant et +de la note des pairs (lorsqu'elles sont disponibles).

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/selfassessment.html b/lang/fr/help/workshop/selfassessment.html index 0aafe0c718c..045dd516340 100755 --- a/lang/fr/help/workshop/selfassessment.html +++ b/lang/fr/help/workshop/selfassessment.html @@ -1,7 +1,16 @@ - +

                              Auto-évaluation

                              -

                              Auto-évaluation

                              +

                              L'enseignant peut décider que chaque étudiant +aura à évaluer son propre travail en plus d'un +certain nombre des travaux de ses pairs. Si les étudiants +doivent évaluer 5 travaux d'autres étudiants, ils +devront évaluer un total de 6 travaux, y compris le +leur.

                              -

                              L'enseignant peut décider que chaque étudiant aura à évaluer son propre travail en plus d'un certain nombre des travaux de ses pairs. Si les étudiants doivent évaluer 5 travaux d'autres étudiants, ils devront évaluer un total de 6 travaux, y compris le leur.

                              - -

                              Si le nombre de travaux d'étudiants à évaluer est fixé à 0 et que l'étudiant doit s'auto-évaluer, le travail de l'atelier devient un simple travail auto-évalué (en opposition avec un travail évalué par les pairs). Naturellement, l'enseignant peut décider d'ajouter sa propre évaluation des travaux.

                              \ No newline at end of file +

                              Si le nombre de travaux d'étudiants à +évaluer est fixé à 0 et que +l'étudiant doit s'auto-évaluer, le travail de +l'atelier devient un simple travail auto-évalué (en +opposition avec un travail évalué par les pairs). +Naturellement, l'enseignant peut décider d'ajouter sa +propre évaluation des travaux.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/showinggrades.html b/lang/fr/help/workshop/showinggrades.html index 55f73a4b3c1..fa9d688e791 100755 --- a/lang/fr/help/workshop/showinggrades.html +++ b/lang/fr/help/workshop/showinggrades.html @@ -1,7 +1,7 @@ -

                              Masquer les notes avant l'accord entre les parties

                              +

                              Masquer les notes avant l'accord entre les parties

                              -

                              Cette option peut être employée dans un atelier où il doit y avoir accord entre les étudiants sur chaque évaluation. La valeur « Non » permet l'affichage des notes et des commentaires aux étudiants dont le travail a été évalué. Il est toutefois préférable d'empêcher l'affichage des notes afin de ne pas nuire aux négociations entre les étudiants évalués et leurs correcteurs.

                              +

                              Cette option peut être employée dans un atelier où il doit y avoir accord entre les étudiants sur chaque évaluation. La valeur « Non » permet l'affichage des notes et des commentaires aux étudiants dont le travail a été évalué. Il est toutefois préférable d'empêcher l'affichage des notes afin de ne pas nuire aux négociations entre les étudiants évalués et leurs correcteurs.

                              -

                              La note n'est alors affichée que lorsqu'un accord survient entre les parties, négocié à partir des commentaires seulement. Si la note ne correspond pas aux commentaires de l'évaluation finale, les étudiants peuvent naturellement en appeler à l'enseignant.

                              \ No newline at end of file +

                              La note n'est alors affichée que lorsqu'un accord survient entre les parties, négocié à partir des commentaires seulement. Si la note ne correspond pas aux commentaires de l'évaluation finale, les étudiants peuvent naturellement en appeler à l'enseignant.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/specimen.html b/lang/fr/help/workshop/specimen.html index e7692cd47da..c1f753fc908 100755 --- a/lang/fr/help/workshop/specimen.html +++ b/lang/fr/help/workshop/specimen.html @@ -1,17 +1,19 @@ - +

                              Exemple de formulaire d'évaluation

                              -

                              Exemple de formulaire d'évaluation

                              - -

                              Cette page montre un exemple de formulaire qui sera utilisé pour l'évaluation de votre travail. Ce formulaire sera employé par :

                              +

                              Cette page montre un exemple de formulaire qui sera +utilisé pour l'évaluation de votre travail. +Ce formulaire sera employé par :

                                - -
                              • l'enseignant, s'il évalue votre travail ;
                              • - -
                              • vous-même, si l'enseignant demande une auto-évaluation de votre travail ;
                              • - -
                              • un certain nombre d'étudiants, si l'enseignant a décidé d'utiliser l'évaluation par les pairs.
                              • - +
                              • l'enseignant, s'il évalue votre travail ;
                              • +
                              • vous-même, si l'enseignant demande une + auto-évaluation de votre travail ;
                              • +
                              • un certain nombre d'étudiants, si l'enseignant + a décidé d'utiliser l'évaluation par les + pairs.
                              -

                              Veuillez remarquer que bien que vous puissiez changer les notes sur ce formulaire, ces modifications ne seront pas enregistrées. Il ne s'agit que d'un exemple de formulaire.

                              \ No newline at end of file +

                              Veuillez remarquer que bien que vous puissiez changer +les notes sur ce formulaire, ces modifications ne seront +pas enregistrées. Il ne s'agit que d'un exemple de +formulaire.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/submissionofexamples.html b/lang/fr/help/workshop/submissionofexamples.html index f69bdfa8193..f1cca9c2b3c 100755 --- a/lang/fr/help/workshop/submissionofexamples.html +++ b/lang/fr/help/workshop/submissionofexamples.html @@ -1,9 +1,30 @@ - +

                              Remettre un exemple de travail

                              -

                              Remettre un exemple de travail

                              +

                              L'enseignant utilise ce lien pour remettre des exemples de +travaux afin que les étudiants puissent les évaluer +(si cette option a été sélectionnée). +Si le nombre d'exemples de l'enseignant dépasse le nombre +d'exemples que les étudiants doivent évaluer, ces +exemples seront distribués au hasard de façon +équilibrée. Moodle s'assurera que tous les exemples +soient distribués aux étudiants un même +nombre de fois. Par exemple, si dix exemples sont disponibles, il +est peu probable que le premier étudiant se retrouve avec +les exemples 1, 2 et 3.

                              -

                              L'enseignant utilise ce lien pour remettre des exemples de travaux afin que les étudiants puissent les évaluer (si cette option a été sélectionnée). Si le nombre d'exemples de l'enseignant dépasse le nombre d'exemples que les étudiants doivent évaluer, ces exemples seront distribués au hasard de façon équilibrée. Moodle s'assurera que tous les exemples soient distribués aux étudiants un même nombre de fois. Par exemple, si dix exemples sont disponibles, il est peu probable que le premier étudiant se retrouve avec les exemples 1, 2 et 3.

                              +

                              Si l'enseignant remet un nombre d'exemples inférieur au +nombre d'exemples que les étudiants doivent +évaluer, tous les exemples seront distribués +à tous les étudiants.

                              -

                              Si l'enseignant remet un nombre d'exemples inférieur au nombre d'exemples que les étudiants doivent évaluer, tous les exemples seront distribués à tous les étudiants.

                              - -

                              Il est souhaitable que l'enseignant note les évaluations des étudiants, même partiellement. Elles lui seront affichées à titre de référence lors de la notation des évaluations des exemples des étudiants. Lors de l'évaluation par l'enseignant, il verra ses propres commentaires en haut de la page et ceux des étudiants en bas de la page. Ces évaluations sont internes et ne sont donc pas visibles pour les étudiants à aucun moment. Seul l'enseignant peut voir ses propres évaluations des exemples.

                              \ No newline at end of file +

                              Il est souhaitable que l'enseignant note les +évaluations des étudiants, même +partiellement. Elles lui seront affichées à titre +de référence lors de la notation des +évaluations des exemples des étudiants. Lors de +l'évaluation par l'enseignant, il verra ses propres +commentaires en haut de la page et ceux des étudiants en +bas de la page. Ces évaluations sont internes et ne sont +donc pas visibles pour les étudiants à aucun +moment. Seul l'enseignant peut voir ses propres +évaluations des exemples.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/teachersgradings.html b/lang/fr/help/workshop/teachersgradings.html index 6054f0e5300..659d2784889 100755 --- a/lang/fr/help/workshop/teachersgradings.html +++ b/lang/fr/help/workshop/teachersgradings.html @@ -1,7 +1,15 @@ - +

                              Affichage des notes de l'enseignant

                              -

                              Affichage des notes de l'enseignant

                              +

                              On peut décider d'afficher ou non les notes et les +commentaires de l'enseignant résultant des +évaluations. Les étudiants pourront les consulter +après la date d'échéance s'ils sont +disponibles, ou plus tard, lorsque la correction sera +terminée. Les commentaires et les notes de l'enseignant +peuvent grandement aider les étudiants lorsque ceux-ci +évalueront les travaux de leurs pairs.

                              -

                              On peut décider d'afficher ou non les notes et les commentaires de l'enseignant résultant des évaluations. Les étudiants pourront les consulter après la date d'échéance s'ils sont disponibles, ou plus tard, lorsque la correction sera terminée. Les commentaires et les notes de l'enseignant peuvent grandement aider les étudiants lorsque ceux-ci évalueront les travaux de leurs pairs.

                              - -

                              Il est à remarquer que même lorsque l'évaluation par les pairs est anonyme, les notes de l'enseignant sont toujours montrées aux étudiants avec le nom et la photo de l'enseignant.

                              \ No newline at end of file +

                              Il est à remarquer que même lorsque +l'évaluation par les pairs est anonyme, les notes de +l'enseignant sont toujours montrées aux étudiants +avec le nom et la photo de l'enseignant.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/ungradedassessments_student.html b/lang/fr/help/workshop/ungradedassessments_student.html index 553543b9bdb..fc3b974731b 100755 --- a/lang/fr/help/workshop/ungradedassessments_student.html +++ b/lang/fr/help/workshop/ungradedassessments_student.html @@ -1,5 +1,16 @@ - +

                              Évaluations sans notes (travaux +d'étudiants)

                              -

                              Évaluations sans notes (travaux d'étudiants)

                              - -

                              Évaluation des travaux d'étudiant Les évaluations des travaux d'étudiants sont faites par leurs pairs. En général, il n'est pas nécessaire à l'enseignant de noter ces évaluations. Si chacun des travaux d'étudiant est évalué environ cinq fois, Moodle peut déterminer assez précisément la qualité des évaluations des étudiants. Quand le nombre d'évaluations par les pairs est inférieur, il peut être préférable que l'enseignant note ces évaluations. Toutes les notes accordées aux évaluations peuvent être prises en considération lors du calcul de la note finale.

                              \ No newline at end of file +

                              Évaluation des travaux d'étudiant Les +évaluations des travaux d'étudiants sont faites par +leurs pairs. En général, il n'est pas +nécessaire à l'enseignant de noter ces +évaluations. Si chacun des travaux d'étudiant est +évalué environ cinq fois, Moodle peut +déterminer assez précisément la +qualité des évaluations des étudiants. Quand +le nombre d'évaluations par les pairs est +inférieur, il peut être préférable que +l'enseignant note ces évaluations. Toutes les notes +accordées aux évaluations peuvent être prises +en considération lors du calcul de la note finale.

                              \ No newline at end of file diff --git a/lang/fr/help/workshop/ungradedassessments_teacher.html b/lang/fr/help/workshop/ungradedassessments_teacher.html index b7ad87c57ae..ea8b97fadca 100755 --- a/lang/fr/help/workshop/ungradedassessments_teacher.html +++ b/lang/fr/help/workshop/ungradedassessments_teacher.html @@ -1,7 +1,7 @@ -

                              Évaluations sans notes (exemples de l'enseignant)

                              +

                              Évaluations sans notes (exemples de l'enseignant)

                              -

                              L'enseignant peut demander aux étudiants d'évaluer des exemples de travaux qu'il a lui-même fournis avant qu'ils ne puissent remettre leurs propres travaux. Les notes de ces évaluations permettent à l'enseignant de vérifier si les étudiants comprennent le travail et elles fourniront à l'enseignant des informations utiles. Il pourra si nécessaire compléter les informations sur le travail à faire ou même le modifier. De plus, les commentaires de l'enseignant sont disponibles aux étudiants, ce qui pourra les aider lors de la préparation de leurs travaux.

                              +

                              L'enseignant peut demander aux étudiants d'évaluer des exemples de travaux qu'il a lui-même fournis avant qu'ils ne puissent remettre leurs propres travaux. Les notes de ces évaluations permettent à l'enseignant de vérifier si les étudiants comprennent le travail et elles fourniront à l'enseignant des informations utiles. Il pourra si nécessaire compléter les informations sur le travail à faire ou même le modifier. De plus, les commentaires de l'enseignant sont disponibles aux étudiants, ce qui pourra les aider lors de la préparation de leurs travaux.

                              -

                              Il n'est pas nécessaire de noter ces évaluations. Les étudiants peuvent même sans cela remettre leurs travaux. On recommande toutefois qu'au moins quelques évaluations de chaque étudiant soient notées par l'enseignant afin d'aider l'étudiant lors de la rédaction de son travail.

                              \ No newline at end of file +

                              Il n'est pas nécessaire de noter ces évaluations. Les étudiants peuvent même sans cela remettre leurs travaux. On recommande toutefois qu'au moins quelques évaluations de chaque étudiant soient notées par l'enseignant afin d'aider l'étudiant lors de la rédaction de son travail.

                              \ No newline at end of file diff --git a/lang/fr/help/writing.html b/lang/fr/help/writing.html index 60d6a970e34..2a8a25d3b2b 100755 --- a/lang/fr/help/writing.html +++ b/lang/fr/help/writing.html @@ -1,17 +1,29 @@ - +

                              Rédaction d'un texte

                              -

                              RŽdaction d'un texte

                              +

                              Adressez-vous directement à vos lecteurs lorsque vous +rédigez un texte.

                              -

                              Adressez-vous directement ˆ vos lecteurs lorsque vous rŽdigez un texte.

                              +

                              Expliquez vos idées clairement et simplement afin que vos +textes soient bien compris. Utilisez plutôt des mots courts et +évitez les phrases longues.

                              -

                              Expliquez vos idŽes clairement et simplement afin que vos textes soient bien compris. Utilisez plut™t des mots courts et Žvitez les phrases longues.

                              +

                              Assurez-vous que vos messages dans les forums soient courts et +qu'ils traitent bien du sujet. Il est préférable de +poster plusieurs messages, dans les bons forums, plutôt que +d'écrire un seul message qui touche à tout.

                              -

                              Assurez-vous que vos messages dans les forums soient courts et qu'ils traitent bien du sujet. Il est prŽfŽrable de poster plusieurs messages, dans les bons forums, plut™t que d'Žcrire un seul message qui touche ˆ tout.

                              +

                              Travaillez vos textes jusqu'à ce qu'ils soient comme vous le +désirez. Vous disposez de maxeditingtime/60) +?> minutes pour modifier les messages que vous avez postés dans +les forums.

                              -

                              Travaillez vos textes jusqu'ˆ ce qu'ils soient comme vous le dŽsirez. Vous disposez de maxeditingtime/60) ?> minutes pour modifier les messages que vous avez postŽs dans les forums.

                              +

                              Lorsque vous répondez à un message, essayez de poser +des questions pertinentes à votre interlocuteur. Vous pourrez +ainsi réfléchir et apprendre davantage sur le sujet +discuté.

                              -

                              Lorsque vous rŽpondez ˆ un message, essayez de poser des questions pertinentes ˆ votre interlocuteur. Vous pourrez ainsi rŽflŽchir et apprendre davantage sur le sujet discutŽ.

                              -

                              Informations supplŽmentaires sur comment poser de bonnes questions

                              - -

                              Informations supplŽmentaires sur la lecture

                              \ No newline at end of file +

                              Informations +supplémentaires sur comment poser de bonnes questions

                              +

                              Informations +supplémentaires sur la lecture

                              \ No newline at end of file diff --git a/lang/fr/install.php b/lang/fr/install.php index 1bfb6e9cf87..427e3a38c4d 100755 --- a/lang/fr/install.php +++ b/lang/fr/install.php @@ -2,7 +2,7 @@ $string['admindirerror'] = 'Le dossier d\'administration spécifié est incorrect'; $string['admindirname'] = 'Dossier d\'administration'; -$string['admindirsetting'] = 'Certains hébergeurs web utilisent le dossier « /admin » comme URL spéciale vous permettant d\'accéder à un tableau de bord ou autre chose. Ceci entre en collision avec l\'emplacement standard des pages d\'administration de Moodle. Vous pouvez corriger cela en renommant le dossier d\'administration de votre installation de Moodle, en inscrivant ici le nouveau nom, par exemple

                              moodleadmin.

                              Les liens vers l\'administration de Moodle seront ainsi corrigés.'; +$string['admindirsetting'] = 'Quelques hébergeurs web utilisent le dossier « /admin » comme URL spéciale vous permettant d\'accéder à un tableau de bord ou autre chose. Ceci entre en collision avec l\'emplacement standard des pages d\'administration de Moodle. Vous pouvez corriger cela en renommant le dossier d\'administration de votre installation de Moodle, en inscrivant ici le nouveau nom, par exemple
                               
                              moodleadmin.
                               
                              Les liens vers l\'administration de Moodle seront ainsi corrigés.

                              '; $string['caution'] = 'Attention'; $string['chooselanguage'] = 'Choisissez une langue'; $string['compatibilitysettings'] = 'Vérification de votre configuration PHP...'; @@ -10,15 +10,15 @@ $string['configfilenotwritten'] = 'Le programme d\'installation n\'a pas pu cr $string['configfilewritten'] = 'Le fichier « config.php » a été créé avec succès'; $string['configurationcomplete'] = 'Configuration terminée'; $string['database'] = 'Base de données'; -$string['databasesettings'] = 'La base de données dans laquelle sont enregistrées la plupart des données utilisées par Moodle doit maintenant être configurée. Cette base de données doit avoir déjà été créée sur le serveur, ainsi qu\'un nom d\'utilisateur et un mot de passe permettant d\'y accéder.


                              -Type : mysql ou postgres7
                              -Serveur hôte : le plus souvent « localhost » ou par exemple « db.isp.com »
                              -Nom : nom de la base de données, par exemple « moodle »
                              -Utilisateur : le nom d\'utilisateur de la base de données
                              -Mot de passe : le mot de passe de la base de données
                              -Préfixe des tables : préfixe à utiliser pour les noms de toutes les tables (facultatif)'; +$string['databasesettings'] = 'La base de données dans laquelle sont enregistrées la plupart des données utilisées par Moodle doit maintenant être configurée. Cette base de données doit avoir déjà été créée sur le serveur, ainsi qu\'un nom d\'utilisateur et un mot de passe permettant d\'y accéder.

                               
                              +Type : mysql ou postgres7
                              +Serveur hôte : le plus souvent « localhost » ou par exemple « db.isp.com »
                              +Nom : nom de la base de données, par exemple « moodle »
                              +Utilisateur : le nom d\'utilisateur de la base de données
                              +Mot de passe : le mot de passe de la base de données
                              +Préfixe des tables : préfixe à utiliser pour les noms de toutes les tables (facultatif)'; $string['dataroot'] = 'Dossier de données'; -$string['datarooterror'] = 'Le dossier de données indiqué n\'a pas pu être trouvé ou créé. Veuillez corriger le paramètre ou créer manuellement le dossier.'; +$string['datarooterror'] = 'Le dossier de données indiqué n\'a pas pu être trouvé, ni créé. Veuillez corriger le paramètre ou créer manuellement le dossier.'; $string['dbconnectionerror'] = 'Moodle n\'a pas pu se connecter à la base de données indiquée. Veuillez vérifier les paramètres de votre base de données'; $string['dbcreationerror'] = 'Erreur lors de la création de la base de données. Impossible de créer la base de données avec les paramètres fournis'; $string['dbhost'] = 'Serveur hôte'; @@ -26,43 +26,42 @@ $string['dbpass'] = 'Mot de passe'; $string['dbprefix'] = 'Préfixe des tables'; $string['dbtype'] = 'Type'; $string['directorysettings'] = '

                              Veuillez confirmer les emplacements de cette installation de Moodle.

                              -

                              Adresse web : veuillez indiquer l\'adresse web complète par laquelle on accédera à Moodle. Si votre site web est accessible par plusieurs URL, choisissez celle qui est la plus naturelle ou la plus évidente. Ne placez pas de barre oblique à la fin de l\'adresse.

                              -

                              Dossier Moodle : veuillez spécifier le chemin complet de cette installation de Moodle (« OS path »). Assurez-vous que la casse des caractères (majuscules/minuscules) est correcte.

                              -

                              Dossier de données : Moodle a besoin d\'un emplacement où enregistrer les fichiers déposés sur le site. Le serveur web (utilisateur dénommé habituellement « www », « apache » ou « nobody ») doit avoir accès à ce dossier en lecture et EN ÉCRITURE. Toutefois ce dossier ne devrait pas être accessible directement depuis le web.

                              '; +

                              Adresse web : veuillez indiquer l\'adresse web complète par laquelle on accédera à Moodle. Si votre site web est accessible par plusieurs URL, choisissez celle qui est la plus naturelle ou la plus évidente. Ne placez pas de barre oblique à la fin de l\'adresse.

                              +

                              Dossier Moodle : veuillez spécifier le chemin complet de cette installation de Moodle (« OS path »). Assurez-vous que la casse des caractères (majuscules/minuscules) est correcte.

                              +

                              Dossier de données : Moodle a besoin d\'un emplacement où enregistrer les fichiers déposés sur le site. Le serveur web (utilisateur dénommé habituellement « www », « apache » ou « nobody ») doit avoir accès à ce dossier en lecture et EN ÉCRITURE. Toutefois ce dossier ne devrait pas être accessible directement depuis le web.

                              '; $string['dirroot'] = 'Dossier Moodle'; $string['dirrooterror'] = 'Le dossier Moodle semble incorrect : aucune installation de Moodle ne se trouve dans ce dossier. Le dossier Moodle indiqué ci-dessous est vraisemblablement correct.'; $string['download'] = 'Télécharger'; $string['fail'] = 'Échec'; $string['fileuploads'] = 'Téléchargement des fichiers'; $string['fileuploadserror'] = 'Le téléchargement des fichiers sur le serveur doit être activé'; -$string['fileuploadshelp'] = '

                              Le téléchargement des fichiers semble désactivé sur votre serveur.

                              Moodle peut être installé malgré tout, mais personne ne pourra déposer aucun fichier de cours, ni aucune image dans les profils utilisateurs.

                              Pour activer le téléchargement des fichiers sur votre serveur, vous (ou l\'administrateur du serveur) devez modifier le fichier « php.ini » du système en donnant au paramètre file_uploads la valeur 1.

                              '; +$string['fileuploadshelp'] = '

                              Le téléchargement des fichiers semble désactivé sur votre serveur.

                              Moodle peut être installé malgré tout, mais personne ne pourra déposer aucun fichier de cours, ni aucune image dans les profils utilisateurs.

                              Pour activer le téléchargement des fichiers sur votre serveur, vous (ou l\'administrateur du serveur) devez modifier le fichier « php.ini » du système en donnant au paramètre file_uploads la valeur 1.

                              '; $string['gdversion'] = 'Version de GD'; $string['gdversionerror'] = 'La librairie GD doit être activée pour traiter et créer les images'; -$string['gdversionhelp'] = '

                              Il semble que la librairie GD n\'est pas installée sur votre serveur.

                              GD est une librairie requise par PHP pour permettre à Moodle de traiter les images (comme les photos des profils) et de créer des graphiques (par exemple ceux des historiques). Moodle fonctionnera sans GD, mais ces fonctionnalités ne seront pas disponibles pour vous.

                              Sur Unix ou Mac OS X, pour ajouter GD à PHP, vous pouvez compiler PHP avec l\'option --with-gd.

                              Sous Windows, on peut normalement modifier le fichier « php.ini » en enlevant le commentaire de la ligne référençant la librairie libgd.dll.

                              '; +$string['gdversionhelp'] = '

                              Il semble que la librairie GD n\'est pas installée sur votre serveur.

                              GD est une librairie requise par PHP pour permettre à Moodle de traiter les images (comme les photos des profils) et de créer des graphiques (par exemple ceux des historiques). Moodle fonctionnera sans GD, mais ces fonctionnalités ne seront pas disponibles pour vous.

                              Sous Unix ou Mac OS X, pour ajouter GD à PHP, vous pouvez compiler PHP avec l\'option --with-gd.

                              Sous Windows, on peut normalement modifier le fichier « php.ini » en enlevant le commentaire de la ligne référençant la librairie libgd.dll.

                              '; $string['installation'] = 'Installation'; -$string['magicquotesruntime'] = 'Magic Quotes Run Time'; -$string['magicquotesruntimeerror'] = 'Ce réglage doit être désactivé'; -$string['magicquotesruntimehelp'] = '

                              Le réglage « Magic quotes runtime » doit être désactivé pour que Moodle fonctionne correctement.

                              Il est normalement désactivé par défaut. Voyez le paramètre magic_quotes_runtime du fichier « php.ini » de votre serveur.

                              Si vous n\'avez pas accès à votre fichier « php.ini », vous pouvez créer dans le dossier principal de Moodle un fichier « .htaccess » contenant cette ligne :

                              php_value magic_quotes_runtime Off

                              '; $string['memorylimit'] = 'Limite de mémoire'; $string['memorylimiterror'] = 'La limite de mémoire de PHP est très basse. Vous risquez de rencontrer des problèmes ultérieurement.'; -$string['memorylimithelp'] = '

                              La limite de mémoire de PHP sur votre serveur est actuellement de $a.

                              Cette valeur trop basse risque de générer des problèmes de manque de mémoire pour Moodle, notamment si vous utilisez beaucoup de modules et/ou si vous avez un grand nombre d\'utilisateurs.

                              Il est recommandé de configurer PHP avec une limite de mémoire aussi élevée que possible, par exemple 16 Mo. Vous pouvez obtenir cela de différentes façons : +$string['memorylimithelp'] = '

                              La limite de mémoire de PHP sur votre serveur est actuellement de $a.

                              Cette valeur très faible risque de générer des problèmes de manque de mémoire pour Moodle, notamment si vous utilisez beaucoup de modules et/ou si vous avez un grand nombre d\'utilisateurs.

                              Il est recommandé de configurer PHP avec une limite de mémoire aussi élevée que possible, par exemple 16 Mo. Vous pouvez obtenir cela de différentes façons :

                                -
                              1. si vous en avez la possibilité, recompilez PHP avec l\'option --enable-memory-limit. Cela permettra à Moodle de fixer lui-même sa limite de mémoire ;
                              2. -
                              3. si vous avez accès à votre fichier « php.ini », vous pouvez attribuer au paramètre memory_limit une valeur comme 16M. Si vous n\'y avez pas accès, demandez à l\'administrateur de le faire pour vous ;
                              4. -
                              5. sur certains serveur, vous pouvez créer dans le dossier principal de Moodle un fichier « .htaccess » contenant cette ligne :

                                php_value memory_limit 16M

                                Cependant, sur certains serveur, cela empêchera le fonctionnement correct de tous les fichiers PHP (vous verrez s\'afficher des erreurs lors de la consultation de pages). Dans ce cas, vous devrez supprimer le fichier « .htaccess ».

                              6. +
                              7. si vous en avez la possibilité, recompilez PHP avec l\'option --enable-memory-limit. Cela permettra à Moodle de fixer lui-même sa limite de mémoire ;
                              8. +
                              9. si vous avez accès à votre fichier « php.ini », vous pouvez attribuer au paramètre memory_limit une valeur comme 16M. Si vous n\'y avez pas accès, demandez à l\'administrateur de le faire pour vous ;
                              10. +
                              11. sur certains serveur, vous pouvez créer dans le dossier principal de Moodle un fichier « .htaccess » contenant cette ligne :

                                php_value memory_limit 16M

                                Cependant, sur certains serveur, cela empêchera le fonctionnement correcte de tous les fichiers PHP (vous verrez s\'afficher des erreurs lors de la consultation de pages). Dans ce cas, vous devrez supprimer le fichier « .htaccess ».

                              '; -$string['mysqlextensionisnotpresentinphp'] = 'La configuration de l\'extension MySQL de PHP n\'a pas été effectuée correctement. De ce fait, PHP ne peut communiquer avec MySQL. Veuillez contrôler votre fichier « php.ini » ou recompiler PHP.'; $string['pass'] = 'Réussi'; $string['phpversion'] = 'Version de PHP'; $string['phpversionerror'] = 'La version du programme PHP doit être au moins 4.1.0'; -$string['phpversionhelp'] = '

                              Moodle nécessite au minimum la version 4.1.0 de PHP.

                              Vous utilisez actuellement la version $a.

                              Pour que Moodle fonctionne, vous devez mettre à jour PHP ou aller chez un hébergeur ayant une version récente de PHP.

                              '; +$string['phpversionhelp'] = '

                              Moodle nécessite au minimum la version 4.1.0 de PHP.

                              Vous utilisez actuellement la version $a.

                              Pour que Moodle fonctionne, vous devez mettre à jour PHP ou aller chez un hébergeur ayant une version récente de PHP.

                              '; $string['safemode'] = 'Safe Mode'; $string['safemodeerror'] = 'Moodle risque de rencontrer des problèmes lorsque le mode « safe mode » est activé'; -$string['safemodehelp'] = '

                              Moodle risque de rencontrer un certain nombre de problèmes lorsque le mode « safe mode » est activé. Il pourra notamment être incapable de créer de nouveaux fichiers.

                              Ce mode n\'est habituellement activé que chez certains hébergeurs paranoïaques. Il vous faudra donc trouver un autre hébergeur pour votre site Moodle.

                              Vous pouvez continuer l\'installation de Moodle, mais attendez-vous à des problèmes ultérieurement.

                              '; +$string['safemodehelp'] = '

                              Moodle risque de rencontrer un certain nombre de problèmes lorsque le mode « safe mode » est activé. Il pourra notamment être incapable de créer de nouveaux fichiers.

                              Ce mode n\'est habituellement activé que chez certains hébergeurs paranoïaques. Il vous faudra donc trouver un autre hébergeur pour votre site Moodle.

                              Vous pouvez continuer l\'installation de Moodle, mais attendez-vous à des problèmes ultérieurement.

                              '; $string['sessionautostart'] = 'Démarrage automatique des sessions'; $string['sessionautostarterror'] = 'Ce paramètre doit être désactivé'; -$string['sessionautostarthelp'] = '

                              Moodle a besoin du support des sessions. il ne fonctionnera pas sans cela.

                              Les sessions peuvent être activées dans le fichier « php.ini » de votre serveur, en changeant la valeur du paramètre session.auto_start.

                              '; +$string['sessionautostarthelp'] = '

                              Moodle a besoin du support des sessions. il ne fonctionnera pas sans cela.

                              Les sessions peuvent être activées dans le fichier « php.ini » de votre serveur, en changeant la valeur du paramètre session.auto_start.

                              '; +$string['magicquotesruntime'] = 'Magic Quotes Run Time'; +$string['magicquotesruntimeerror'] = 'Ce réglage doit être désactivé'; +$string['magicquotesruntimehelp'] = '

                              Le réglage « Magic quotes runtime » doit être désactivé pour que Moodle fonctionne correctement.

                              Il est normalement désactivé par défaut. Voyez le paramètre magic_quotes_runtime du fichier « php.ini » de votre serveur.

                              Si vous n\'avez pas accès à votre fichier « php.ini », vous pouvez créer dans le dossier principal de Moodle un fichier « .htaccess » contenant cette ligne :

                              php_value magic_quotes_runtime Off

                              '; $string['wwwroot'] = 'Adresse web'; -$string['wwwrooterror'] = 'L\'adresse web indiquée semble incorrecte : aucune installation de Moodle ne se trouve à cette adresse.'; +$string['wwwrooterror'] = 'L\'adresse web indiquée semble incorrecte : aucune installation de Moodle ne se trouve à cette adresse.'; -?> \ No newline at end of file +?> diff --git a/lang/fr/journal.php b/lang/fr/journal.php index d350948be3e..60dbf36ea35 100644 --- a/lang/fr/journal.php +++ b/lang/fr/journal.php @@ -10,13 +10,12 @@ $string['feedbackupdated'] = 'Feedback mis $string['journalmail'] = '$a->teacher a écrit un feedback au sujet de votre contribution au journal « $a->journal » Vous pouvez le consulter en annexe à votre contribution au journal : $a->url'; -$string['journalmailhtml'] = '$a->teacher a écrit un feedback au sujet de votre contribution au journal « $a->journal »

                              Vous pouvez le consulter en annexe à votre url\">contribution au journal.'; +$string['journalmailhtml'] = '$a->teacher a écrit un feedback au sujet de votre contribution au journal « $a->journal »

                              Vous pouvez le consulter en annexe à votre url\">contribution au journal.'; $string['journalname'] = 'Nom du journal'; $string['journalquestion'] = 'Sujet du journal'; $string['journalrating1'] = 'Insatisfaisant'; $string['journalrating2'] = 'Satisfaisant'; $string['journalrating3'] = 'Excellent'; -$string['mailsubject'] = 'Feedback de journal'; $string['modulename'] = 'Journal'; $string['modulenameplural'] = 'Journaux'; $string['newjournalentries'] = 'Nouvelles contributions au journal'; @@ -28,6 +27,6 @@ $string['overallrating'] = 'Note g $string['rate'] = 'Note'; $string['saveallfeedback'] = 'Enregistrer tous mes feedbacks'; $string['startoredit'] = 'Commencer ou modifier ma contribution'; -$string['viewallentries'] = 'Voir toutes les contributions du journal'; +$string['viewallentries'] = 'Voir toutes les contribution du journal'; ?> diff --git a/lang/fr/label.php b/lang/fr/label.php index 425fb9f19e1..8fd4414cba5 100644 --- a/lang/fr/label.php +++ b/lang/fr/label.php @@ -1,4 +1,4 @@ -firstname {$a->lastname}'; -$string['completed'] = 'Terminé'; $string['confirmdeletionofthispage'] = 'Voulez-vous vraiment supprimer cette page ?'; $string['congratulations'] = 'Félicitations - la leçon est terminée'; $string['continue'] = 'Continuer'; -$string['continuetoanswer'] = "Continue to change answers."; -$string['correctanswerjump'] = 'Lien après réponse correcte'; -$string['correctanswerscore'] = 'Score des réponses correctes'; -$string['correctresponse'] = 'Feedback réponse correcte'; -$string['customscoring'] = 'Score personnalisé'; $string['deadline'] = 'À faire jusqu\'au'; -$string['defaultessayresponse'] = 'Votre composition sera évaluée par un enseignant de ce cours.'; -$string['deleteattempts'] = 'Supprimer les tentatives des étudiants pour cette leçon (user id)'; -$string['deletedpage'] = 'Page supprimée'; $string['deleting'] = 'En cours de suppression'; $string['deletingpage'] = 'Suppression de la page : $a'; $string['description'] = 'Description'; -$string['detailedstats'] = 'Statistiques déàtaillées'; -$string['didnotanswerquestion'] = 'N\'a pas répondu à cette question'; -$string['didnotreceivecredit'] = 'N\'a pas reçu de point'; -$string['displayhighscores'] = 'Afficher les meilleurs résultats'; -$string['displayinleftmenu'] = 'Afficher dans le menu à gauche ?'; -$string['displayleftmenu'] = 'Afficher le menu de gauche'; $string['displayofgrade'] = 'Affichage de la note (pour l\'étudiant)'; -$string['displayreview'] = 'Afficher le bouton de relecture'; -$string['displayscorewithessays'] = 'Vous avez obtenu un score de $a->score sur $a->tempmaxgrade aux questions notées automatiquement.
                              les notes de votre(vos) $a->compositionquestions composition(s) sera(ont) évaluée(s) et ajoutée(s)
                              au score final ultérieurement.

                              Votre note actuelle sans la(les) composition(s) est de $a->score sur $a->grade.'; -$string['displayscorewithoutessays'] = 'Votre score est de $a->score (sur $a->grade).'; -$string['editlessonsettings'] = 'Modifier les réglages de la leçon'; -$string['editpagecontent'] = 'Modifier le contenu de la page'; -$string['email'] = 'Courriel'; -$string['emailallgradedessays'] = 'Envoyer par courriel TOUTES
                              les compositions évaluées'; -$string['emailgradedessays'] = 'Envoyer par courriel les compositions évaluées'; -$string['emailsuccess'] = 'Envoi effectué'; $string['endofbranch'] = 'Fin de branchement'; -$string['endofclustertitle'] = 'Fin de groupe'; $string['endoflesson'] = 'Fin de la leçon'; -$string['enteredthis'] = 'a tapé ceci'; -$string['entername'] = 'Saississez un pseudonyme pour la liste des meilleurs résultats'; -$string['enterpassword'] = 'Veuillez saisir le mot de passe :'; -$string['eolstudentoutoftime'] = 'Attention : le temps à votre disposition pour cette leçon est échu. Votre dernière réponse ne sera pas prise en compte si elle est survenue après l\'échéance.'; -$string['eolstudentoutoftimenoanswers'] = 'vous n\'avez répondu à aucune question. Votre note pour cette leçon est de 0.'; -$string['essay'] = 'Composition'; -$string['essayemailsubject'] = 'Votre note pour la question $a'; -$string['essays'] = 'Compositions'; -$string['essayscore'] = 'Score de votre composition'; $string['fileformat'] = 'Format de fichier'; $string['firstanswershould'] = 'La première réponse devrait toujours permettre l\'accès à la page « Réponse correcte »'; -$string['firstwrong'] = 'Vous ne recevez malheureusement pas ce point, car votre réponse n\'est pas correcte. Voulez-vous essayer de deviner la bonne réponse, pour le plaisir d\'apprendre (mais sans recevoir de point) ?'; -$string['flowcontrol'] = 'Contrôle du déroulement'; -$string['general'] = 'Général'; -$string['gobacktolesson'] = 'Revenir à la leçon'; -$string['grade'] = 'Note'; -$string['gradeessay'] = 'Évaluer les questions de composition'; $string['gradeis'] = 'La note est $a'; -$string['gradeoptions'] = 'Options des notes'; $string['handlingofretakes'] = 'Traitement des différentes tentatives'; -$string['havenotgradedyet'] = "Have not graded yet."; $string['here'] = 'ici'; -$string['highscore'] = 'Meilleure note'; -$string['hightime'] = 'Plus longue durée'; $string['importquestions'] = 'Importer des questions'; -$string['insertedpage'] = 'Page insérée'; $string['jump'] = 'Aller'; -$string['jumptsto'] = 'Sauter vers'; -$string['leftduringtimed'] = 'Vous avez quitté une leçon à durée limitée.
                              Veuillez cliquer sur Continuer pour recommencer cette leçon.'; -$string['leftduringtimednoretake'] = 'Vous avez quitté une leçon à durée limitée et vous n\'êtes
                              pas autorisé à la recommencer ou la continuer.'; -$string['lesson'] = 'Leçon $a'; -$string['lessonclosed'] = 'Cette leçon n\'est plus disponible depuis $a.'; -$string['lessoncloses'] = 'La leçon se termine'; -$string['lessondefault'] = 'Utiliser les réglages de cette leçon comme réglages par défaut'; -$string['lessonformating'] = 'Format de la leçon'; -$string['lessonmenu'] = 'Menu leçon'; -$string['lessonopen'] = 'Cette leçon sera ouverte le $a.'; -$string['lessonopens'] = 'La leçon s\'ouvre'; -$string['lessonstats'] = 'Statistiques de la leçon'; -$string['loginfail'] = 'Connexion échouée, veuillez réessayer...'; -$string['lowscore'] = 'Note la plus basse'; -$string['lowtime'] = 'Plus courte durée'; -$string['mainmenu'] = 'Menu du cours'; -$string['matchesanswer'] = 'Correspond avec la réponse'; -$string['maxhighscores'] = 'Nombre de meilleurs résultats affichés'; $string['maximumnumberofanswersbranches'] = 'Nombre maximal de réponses ou de branchements'; $string['maximumnumberofattempts'] = 'Nombre maximal de tentatives'; -$string['maxtime'] = 'Durée maximale (minutes)'; -$string['maxtimewarning'] = 'Il vous reste $a minute(s) pour terminer la leçon.'; $string['minimumnumberofquestions'] = 'Nombre minimal de questions'; -$string['modattempts'] = 'Permettre la critique par les étudiants'; -$string['modattemptsnoteacher'] = 'La critique par les étudiants ne fonctionne que pour les étudiants.'; $string['modulename'] = 'Leçon'; $string['modulenameplural'] = 'Leçons'; -$string['movedpage'] = 'Page déplacée'; $string['movepagehere'] = 'Déplacer la page ici'; $string['moving'] = 'Déplacement de la page : $a'; $string['movingtonextpage'] = 'Déplacement vers la page suivante'; $string['multianswer'] = 'Plusieurs réponses'; $string['multipleanswer'] = 'Réponses multiples'; -$string['nameapproved'] = 'Nom approuvé'; -$string['namereject'] = 'Désolé, votre nom a été rejeté par le filtre.
                              Veuillez essayer un autre nom.'; $string['nextpage'] = 'Page suivante'; -$string['noanswer'] = 'Aucune réponse donnée. Veuillez revenir en arrière et donner une réponse.'; +$string['noanswer'] = 'Aucune réponse donnée'; $string['noattemptrecordsfound'] = 'Aucune tentative trouvée : pas de note'; $string['nobranchtablefound'] = 'Aucune table de branchement trouvée'; -$string['nocommentyet'] = 'Pas encore de commentaire.'; -$string['nohighscores'] = 'Pas de meilleur résultat'; -$string['nooneansweredcorrectly'] = 'Personne n\'a répondu correctement.'; -$string['nooneansweredthisquestion'] = 'Personne n\'a répondu à cette question.'; -$string['noonecheckedthis'] = 'Personne n\'a coché cette option.'; -$string['nooneenteredthis'] = 'Personne n\'a tapé ceci.'; -$string['noretake'] = 'Vous n\'êtes pas autorisé à refaire cette leçon.'; $string['normal'] = 'Normal - suivre le parcours de la leçon'; -$string['notcompleted'] = 'Pas terminé'; $string['notdefined'] = 'Non défini'; -$string['nothighscore'] = 'Vous n\'entrez pas parmi les $a meilleurs résultats.'; $string['notitle'] = 'Pas de titre'; $string['numberofcorrectanswers'] = 'Nombre de réponses correctes : $a'; $string['numberofcorrectmatches'] = 'Nombre de correspondances correctes : $a'; -$string['numberofpagestoshow'] = 'Nombre de pages à afficher'; $string['numberofpagesviewed'] = 'Nombre de pages vues : $a'; -$string['ongoing'] = 'Afficher le score actuel'; -$string['ongoingcustom'] = 'Vous avez jusqu\'ici reçu $a->score sur un maximum de \$a->currenthigh point(s).'; -$string['ongoingnormal'] = 'Vous avez répondu correctement à $a->correct question(s) $a->viewed.'; -$string['or'] = 'OU'; +$string['numberofpagestoshow'] = 'Nombre de pages à afficher'; $string['ordered'] = 'Ordonnés'; -$string['other'] = 'Autre'; $string['outof'] = 'sur $a'; -$string['outoftime'] = 'Temps échu'; -$string['overview'] = 'Vue d\'ensemble'; +$string['questiontype'] = 'Type de question'; +$string['questionoption'] = 'Option de question'; $string['page'] = 'Page : $a'; -$string['pagecontents'] = 'Contenu de la page'; $string['pages'] = 'Pages'; +$string['pagecontents'] = 'Contenu de la page'; $string['pagetitle'] = 'Titre de la page'; -$string['password'] = 'Mot de passe'; -$string['passwordprotectedlesson'] = '$a est une leçon protégée par mot de passe.'; $string['pleasecheckoneanswer'] = 'Valider la réponse choisie'; $string['pleasecheckoneormoreanswers'] = 'Valider la ou les réponses choisies'; $string['pleaseenteryouranswerinthebox'] = 'Valider la réponse'; $string['pleasematchtheabovepairs'] = 'Valider les correspondances choisies'; -$string['pointsearned'] = 'Points reçus'; -$string['postsuccess'] = 'Message envoyé avec succès'; -$string['practice'] = 'Leçon d\'entraînement'; -$string['previouspage'] = 'Page précédente'; -$string['question'] = 'Question'; -$string['questionoption'] = 'Option de question'; -$string['questionoption'] = 'Question '; -$string['questiontype'] = 'Type de question'; -$string['randombranch'] = 'Page de branchement aléatoire'; -$string['randompageinbranch'] = 'Question aléatoire dans une branche'; -$string['rank'] = 'Rang'; $string['reached'] = 'Atteint'; -$string['receivedcredit'] = 'A reçu les points'; $string['redisplaypage'] = 'Réafficher la page'; -$string['report'] = 'Rapport'; $string['response'] = 'Feedback'; -$string['returnmainmenu'] = 'Retour au menu principal'; -$string['returntocourse'] = 'Retour au cours'; -$string['reviewlesson'] = 'Revoir la leçon'; -$string['reviewquestionback'] = 'Oui, j\'aimerais essayer à nouveau'; -$string['reviewquestioncontinue'] = 'Non, je veux passer à la question suivante'; $string['sanitycheckfailed'] = 'Vérification échouée : cette tentative a été supprimée'; -$string['savechanges'] = 'Enregistrer les changements'; -$string['savechangesandeol'] = 'Enregistrer tous les changements et aller à la fin de la leçon.'; $string['savepage'] = 'Enregistrer la page'; -$string['score'] = 'Score'; -$string['scores'] = 'Scores'; -$string['secondpluswrong'] = 'Pas tout à fait. Voulez-vous essyer à nouveau ?'; -$string['showanunansweredpage'] = 'Afficher une page sans réponse'; -$string['showanunseenpage'] = 'Afficher une page non vue'; $string['singleanswer'] = 'Réponse simple'; -$string['slideshow'] = 'Présentation'; -$string['slideshowbgcolor'] = 'Couleur de fond de la présentation'; -$string['slideshowheight'] = 'Hauteur de la présentation'; -$string['slideshowwidth'] = 'Largeur de la présentation'; -$string['startlesson'] = 'Commencer la leçon'; -$string['studentattemptlesson'] = 'Tentative numéro $a->attempt de $a->firstname $a->lastname'; -$string['studentname'] = 'Nom de $a'; -$string['studentoneminwarning'] = 'Attention : il vous reste moins d\'une minute pour terminer la leçon.'; -$string['studentoutoftime'] = 'Attention : vopus n\'avez pas terminé la leçon dans le temps imparti. Votre dernière réponse n\'a pas été prise en compte, car vous y avez répondu après l\'échéance. Veuillez cliquer le bouton Continuer pour terminer la leçon.'; -$string['studentresponse'] = 'Feedback de {$a}'; -$string['submitname'] = 'Proposer un nom'; -$string['teacherjumpwarning'] = 'Un lien $a->cluster ou un lien $a->unseen est utilisé dans cette leçon. Un lien « Page suivante » sera utilisé à sa place. Veuillez vous connecter en tant qu\'étudiant pour tester ces liens.'; -$string['teacherongoingwarning'] = 'Le score actuel n\'est affiché que pour les étudiants. Veuillez vous connecter en tant qu\'étudiant pour tester le score actuel.'; -$string['teachertimerwarning'] = 'Le chronomètre ne fonctionne que pour les étudiants. Veuillez vous connecter en tant qu\'étudiant pour tester le chronomètre.'; +$string['showanunseenpage'] = 'Afficher une page non vue'; +$string['showanunansweredpage'] = 'Afficher une page sans réponse'; $string['thatsthecorrectanswer'] = 'C\'est une réponse correcte'; $string['thatsthewronganswer'] = 'C\'est une mauvaise réponse'; $string['thefollowingpagesjumptothispage'] = 'Les pages suivantes renvoient vers cette page'; $string['thispage'] = 'Cette page'; -$string['timed'] = 'durée limité'; -$string['timeremaining'] = 'Durée restante'; -$string['timetaken'] = 'Durée utilisée'; -$string['topscorestitle'] = 'Les $a->maxhighscores meilleurs résultats de la leçon $a->name.'; -$string['treeview'] = 'Vue en arbre'; -$string['unseenpageinbranch'] = 'Question non vue dans un branchement'; -$string['updatedpage'] = 'Page modifiée'; -$string['updatefailed'] = 'Modification échouée'; -$string['updatesuccess'] = 'Modification réussie'; $string['useeditor'] = 'Utiliser l\'éditeur'; $string['usemaximum'] = 'Utiliser le maximum'; $string['usemean'] = 'Utiliser la moyenne'; -$string['usepassword'] = 'Leçon protégée par mot de passe'; -$string['viewallpages'] = 'Afficher toutes les pages'; -$string['viewgrades'] = 'Afficher les notes'; -$string['viewhighscores'] = 'Afficher les meilleurs résultats.'; -$string['viewlessonstats'] = 'Afficher les statistiques de la leçon'; -$string['waitpostscore'] = 'Veuillez patienter durant l\'envoi de votre résultat...'; -$string['welldone'] = 'Bien joué !'; -$string['whatdofirst'] = 'Par quoi voulez-vous commencer ?'; -$string['wronganswerjump'] = 'Lien après mauvaise réponse'; -$string['wronganswerscore'] = 'Score des mauvaises réponses'; -$string['wrongresponse'] = 'Feedback mauvaise réponse'; -$string['youhavereceived'] = 'Vous avez reçu $a->score sur un maximum de $a->outof points pour cette composition.'; $string['youhaveseen'] = 'Vous avez déjà vu au moins une page de cette leçon.
                              Voulez-vous commencer à la dernière page que vous avez vue ?'; -$string['youmadehighscore'] = 'Vous avez un des $a meilleurs résultats.'; $string['youranswer'] = 'Votre réponse'; -$string['yourcurrentgradeis'] = 'Votre note actuelle est $a'; -$string['yourgradeisnow'] = 'Votre note pour la leçon a été changée $a'; -$string['yourresponse'] = 'Votre feedback'; -$string['youshouldview'] = 'Vous devriez voir au moins $a'; +$string['yourcurrentgradeis'] = 'Votre note actuelle est \$a'; +$string['youshouldview'] = 'Vous devriez voir au moins \$a'; ?> \ No newline at end of file diff --git a/lang/fr/message.php b/lang/fr/message.php deleted file mode 100644 index d52dd1fdec8..00000000000 --- a/lang/fr/message.php +++ /dev/null @@ -1,61 +0,0 @@ - diff --git a/lang/fr/moodle.php b/lang/fr/moodle.php index f4745faadd6..73074c424fa 100644 --- a/lang/fr/moodle.php +++ b/lang/fr/moodle.php @@ -1,14 +1,13 @@ -$a'; +$string['activityclipboard'] = 'Activité en cours de déplacement : $a'; $string['activityiscurrentlyhidden'] = 'Désolé, cette activité n\'est pas visible actuellement'; $string['activitymodule'] = 'Module d\'activité'; $string['activityreport'] = 'Rapport d\'activité'; -$string['activityreports'] = 'Rapports d\'activité'; $string['activityselect'] = 'Sélectionner cette activité pour la déplacer'; $string['activitysince'] = 'Activités observées'; $string['add'] = 'Ajouter'; @@ -40,12 +39,12 @@ $string['adminhelpbackup'] = 'Configuration des sauvegardes'; $string['adminhelpconfiguration'] = 'Configurer l\'aspect et le fonctionnement du site'; $string['adminhelpconfigvariables'] = 'Configurer les paramètres réglant le fonctionnement général du site'; $string['adminhelpcourses'] = 'Définir les cours et les disciplines, et assigner des utilisateurs à ces cours'; -$string['adminhelpeditorsettings'] = 'Définir la configuration de base de l\'éditeur WYSIWYG'; $string['adminhelpedituser'] = 'Consulter la liste des comptes des utilisateurs et les modifier'; +$string['adminhelpeditorsettings'] = 'Définir la configuration de base de l\'éditeur WYSIWYG'; $string['adminhelpenrolments'] = 'Définir les procédures (internes ou externes) du contrôle des inscriptions'; -$string['adminhelpfailurelogs'] = 'Consulter les historiques des tentatives de connexion'; $string['adminhelplanguage'] = 'Vérifier et modifier les fichiers de la langue en cours'; $string['adminhelplogs'] = 'Consulter les historiques de toutes les activités de ce site'; +$string['adminhelpfailurelogs'] = 'Consulter les historiques des tentatives de connexion'; $string['adminhelpmanageblocks'] = 'Gestion des blocs installés et de leurs réglages'; $string['adminhelpmanagedatabase'] = 'Accéder directement à la base de données (DANGER !)'; $string['adminhelpmanagefilters'] = 'Choisir les filtres de texte et les réglages y relatifs'; @@ -60,11 +59,8 @@ $string['administrator'] = 'Administrateur'; $string['administrators'] = 'Administrateurs'; $string['administratorsall'] = 'Tous les administrateurs'; $string['administratorsandteachers'] = 'Administrateurs et enseignants'; -$string['advanced'] = 'Avancé'; $string['advancedfilter'] = 'Plus de critères'; -$string['advancedsettings'] = 'Réglages avancés'; $string['again'] = 'à nouveau'; -$string['aimid'] = 'Identifiant AIM'; $string['all'] = 'Tout'; $string['allactivities'] = 'Toutes les activités'; $string['alldays'] = 'Tous les jours'; @@ -76,7 +72,6 @@ $string['allowguests'] = 'Les utilisateurs anonymes sont autoris $string['allowinternal'] = 'Permettre aussi les méthodes internes'; $string['allownot'] = 'Interdire'; $string['allparticipants'] = 'Tous les participants'; -$string['allteachers'] = 'Tous les enseignants'; $string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; $string['alphanumerical'] = 'Seuls les lettres et chiffres sont autorisés'; $string['alreadyconfirmed'] = 'L\'enregistrement a déjà été confirmé'; @@ -87,7 +82,7 @@ $string['areyousuretorestorethisinfo'] = 'Vous aurez plus tard la possibilit $string['assessment'] = 'Évaluation'; $string['assignadmins'] = 'Choisir les administrateurs'; $string['assigncreators'] = 'Choisir les responsables de cours'; -$string['assignstudents'] = 'Choisir les étudiants'; +$string['assignstudents'] = 'Choisir les élèves'; $string['assignstudentsnote'] = 'L\'utilisation de cette page n\'est pas toujours nécessaire. Les étudiants peuvent en effet s\'inscrire eux-mêmes dans ce cours.'; $string['assignstudentspass'] = 'Vous devez communiquer à vos étudiants le mot-clef permettant de s\'inscrire dans le cours. Cette clef est actuellement: « $a »'; $string['assignteachers'] = 'Choisir les enseignants'; @@ -101,7 +96,6 @@ $string['backup'] = 'Sauvegarde'; $string['backupcoursefileshelp'] = 'Une fois cette option activée, les fichiers des cours seront inclus dans les sauvegardes automatiques'; $string['backupdate'] = 'Date de la sauvegarde'; $string['backupdetails'] = 'Détails de la sauvegarde'; -$string['backupfailed'] = 'Certains de vos cours n\'ont pas été sauvegardés !'; $string['backupfilename'] = 'backup'; $string['backupfinished'] = 'La sauvegarde s\'est déroulée sans erreur'; $string['backupincludemoduleshelp'] = 'Choisissez si vous désirez inclure dans les sauvegardes automatiques les modules de cours, avec ou sans les données des utilisateurs'; @@ -109,24 +103,16 @@ $string['backupkeephelp'] = 'Combien de sauvegardes de chaque cours d $string['backuplogdetailed'] = 'Rapport détaillé des exécutions'; $string['backuploglaststatus'] = 'Rapport de la dernière exécution'; $string['backuplogshelp'] = 'Une fois cette option activée, les historiques des cours seront inclus dans les sauvegardes automatiques'; -$string['backupmetacoursehelp'] = 'si cette option est activée, les informations des méta-cours (inscriptions héritées) seront incluses dans les sauvegardes automatiques'; $string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; $string['backupnoneusersinfo'] = 'Attention ! Vous avez choisi de ne sauvegarder aucun utilisateur. En conséquence, les sauvegardes de tous les modules ont été placées en mode « sans les données des utilisateurs ». Veuillez noter que les modules Exercice et Atelier ne sont pas compatibles avec ce type de sauvegarde. Ils ont donc été totalement exclus de la sauvegarde.'; $string['backuporiginalname'] = 'Nom de la sauvegarde'; $string['backupsavetohelp'] = 'Chemin d\'accès complet du dossier où vous voulez enregistrer les sauvegardes
                              (laissez vide pour enregistrer dans le dossier par défaut)'; -$string['backuptakealook'] = 'Veuillez consulter les historiques des sauvegardes : $a'; $string['backupuserfileshelp'] = 'Choisissez si vous désirez inclure les fichiers des utilisateurs (par exemple l\'image du profil) dans les sauvegardes automatiques'; $string['backupusershelp'] = 'Choisissez si vous désirez inclure tous les utilisateurs du serveur ou seulement ceux nécessaires à chaque cours'; $string['backupversion'] = 'Version de la sauvegarde'; -$string['blockconfiga'] = 'Configuration d\'un bloc $a'; -$string['blockconfigbad'] = 'Ce bloc n\'a pas été implémenté correctement et ne fournit donc pas d\'interface de configuration.'; -$string['blockconfigin'] = 'Cours : configuration d\'un bloc dans $a'; $string['blockdeleteconfirm'] = 'Vous allez supprimer totalement le bloc « $a ». Cette action supprimera de la base de données tout ce qui est associé à ce bloc. Voulez-vous VRAIMENT continuer ?'; -$string['blockdeletefiles'] = 'Toutes les données associées au bloc « $a->block » ont été supprimées de la base de données. Pour terminer la suppression du bloc, et éviter ainsi qu\'il se réinstalle, veuillez supprimer de votre serveur le dossier « $a->directory ».'; +$string['blockdeletefiles'] = 'Toutes les données associées au bloc « $a->block » ont été supprimées de la base de données. Pour terminer la suppression du bloc, et éviter ainsi qu\'il se réinstalle, veuillet supprimer de votre serveur le dossier « $a->directory ».'; $string['blocks'] = 'Blocs'; -$string['blocksaddedit'] = 'Ajouter/Modifier des blocs'; -$string['blockseditoff'] = 'Édition des blocs désactivée'; -$string['blocksediton'] = 'Édition des blocs activée'; $string['blocksetup'] = 'Installation des tables de blocs'; $string['blocksuccess'] = 'Les tables $a ont été installées correctement'; $string['bycourseorder'] = 'Ordre dans le cours'; @@ -137,17 +123,14 @@ $string['category'] = 'Discipline'; $string['categoryadded'] = 'La discipline « $a » a été ajoutée'; $string['categorydeleted'] = 'La discipline « $a » a été supprimée'; $string['categoryduplicate'] = 'Une discipline de ce nom (« $a ») existe déjà'; -$string['censorbadwords'] = 'merde,enculé,bite,couille,pute,putain, niquer,gode,godemichet,nègre'; $string['changedpassword'] = 'Mot de passe modifié'; $string['changepassword'] = 'Changer le mot de passe'; $string['changessaved'] = 'Modifications enregistrées'; $string['checkingbackup'] = 'Vérification de la sauvegarde'; $string['checkingcourse'] = 'Vérification du cours'; -$string['checkingforbbexport'] = 'Vérification pour exportation BlackBoard'; $string['checkinginstances'] = 'Verification des instances'; $string['checkingsections'] = 'Vérification des sections'; $string['checklanguage'] = 'Tester la langue'; -$string['childcoursenotfound'] = 'Le cours enfant n\'a pas été trouvé !'; $string['choose'] = 'Choisir'; $string['choosecourse'] = 'Choisir un cours'; $string['chooseenrolmethod'] = 'Méthode d\'inscription aux cours'; @@ -157,32 +140,67 @@ $string['choosereportfilter'] = 'Choisir un filtre pour le rapport'; $string['choosetheme'] = 'Choisir un thème'; $string['chooseuser'] = 'Choisir un utilisateur'; $string['city'] = 'Ville'; -$string['clambroken'] = 'L\'administrateur du site a activé l\'antivirus des fichiers déposés, mais il y a un problème de configuration.
                              Votre fichier n\'a pas pu être déposé. L\'adminitrateur a été averti afin qu\'il puisse corriger le problème.
                              Essayez de nouveau plus tard !'; -$string['clamdeletedfile'] = 'Le fichier a été supprimé'; -$string['clamdeletedfilefailed'] = 'Le fichier n\'a pas pu être supprimé'; -$string['clamemailsubject'] = '$a :: Notification Clam AV'; -$string['clamfailed'] = 'Clam AV n\'a pas pu être lancé. Le message d\'erreur était $a. Voici la sortie du programme Clam :'; -$string['clamlost'] = 'Moodle est configuré pour lancer clam lors du dépôt de fichiers, mais le chemin pointant vers Clam AV, $a, nest pas correct.'; -$string['clamlostandactinglikevirus'] = 'En outre, Moodle est configuré de telle sorte que si clam ne peut pas être lancé, les fichiers sont traités comme des virus. Cela signifie qu\'aucun étudiant ne pourra déposer de fichier tant que ce problème n\'est pas corrigé.'; -$string['clammovedfile'] = 'Le fichier a été déplacé dans le dossier de quarantaine que vous avez spécifié. Son nouvel emplacement est $a'; -$string['clammovedfilebasic'] = 'Le fichier a été déplacé dans un dossier de quarantaine.'; -$string['clamquarantinedirfailed'] = 'Impossible de déplacer le fichier dans le dossier de quarantaine spécifié $a. Il est impératif de corriger ce problème, car sans cela les fichiers contenant des virus seront détruits.'; -$string['clamunknownerror'] = 'Une erreur inconnue est survenue avec clam.'; $string['cleaningtempdata'] = 'Suppression des données temporaires'; $string['clicktochange'] = 'Cliquer pour changer'; $string['closewindow'] = 'Fermer cette fenêtre'; $string['comparelanguage'] = 'Comparer et modifier la langue active'; $string['complete'] = 'Complet'; -$string['completereport'] = 'Rapport complet'; +$string['configallowunenroll'] = 'Si vous choisissez « Oui », les étudiants pourront se désinscrire eux-mêmes des cours. Dans le cas contraire, ils ne le peuvent pas, et ce processus sera contrôlé par les enseignants et les administrateurs.'; +$string['configautologinguests'] = 'Enregistrer automatiquement en tant qu\'utilisateur anonyme l\'activité des utilisateurs visitant des cours en accès anonyme.'; +$string['configcachetext'] = 'Ce réglage permet d\'accélérer le temps de réponse des grands sites ou de ceux qui utilisent les filtres. Des copies des textes sont mémorisés pour la durée spécifiée ici. Une valeur trop petite peut allonger légèrement le temps de réponse, mais une valeur trop élevée pourrait engendrer un rafraîchissement des textes pas assez fréquent (avec de nouveaux liens, par exemple).'; +$string['configcountry'] = 'Si vous choisissez un pays ici, il sera sélectionné par défaut lors de la création de nouveaux comptes. Si vous souhaitez forcer les utilisateurs à choisir un pays, laissez ce champ vide.'; +$string['configdebug'] = 'Si vous activez cette option, le paramètre PHP « error_reporting » sera augmenté afin que les avertissements soient affichés. Ceci est utile essentiellement pour les développeurs.'; +$string['configdeleteunconfirmed'] = 'Si vous utilisez l\'authentification par courriel, c\'est la période pendant laquelle les confirmations des utilisateurs sont acceptées. À l\'échéance de cette période, les comptes non-confirmés sont supprimés.'; +$string['configdigestmailtime'] = 'Les utilisateurs désirant recevoir un courriel contenant tous les messages des forums le recevront quotidiennement. Ce réglage détermine l\'heure de la journée à laquelle le courriel sera envoyé (la tâche cron s\'exécutant immédiatement après cette heure enverra le message).'; +$string['configdisplayloginfailures'] = 'Ceci permet d\'afficher les informations sur les tentatives de connexion des utilisateurs sélectionnés.'; +$string['configenablerssfeeds'] = 'Activation des canaux RSS pour tout le site. Il est également nécessaire d\'activer les canaux RSS dans les différents modules - voyez l\'option Modules sous Administration -> Configuration.'; +$string['configenablerssfeedsdisabled'] = 'Non disponible, car les canaux RSS ne sont pas activés pour le site. Pour les activer, voyez l\'option Paramètres techniques sous Administration -> Configuration.'; +$string['configerrorlevel'] = 'Choisir la quantité d\'avertissement PHP que vous souhaitez voir afficher. « Normal » est généralement le meilleur choix.'; +$string['configextendedusernamechars'] = 'Activez cette option pour permettre aux étudiants d\'utiliser n\'importe quel caractère dans leur nom d\'utilisateur (cette option n\'a aucun effet sur leur nom d\'utilisateur actuel). Par défaut, cette option est désactivée, ce qui restreint les noms d\'utilisateur aux caractères alphanumériques'; +$string['configfilteruploadedfiles'] = 'En activant cette option, vous indiquez à Moodle de filtrer tous les fichiers HTML et textes déposés avant de les afficher.'; +$string['configforcelogin'] = 'Habituellement, la page d\'accueil du site et la liste des cours (mais pas les cours eux-mêmes) peuvent être consultés sans se connecter au site. Si vous désirez forcer les visiteurs à se connecter avant de faire QUOI QUE CE SOIT dans le site, veuillez activer cette option.'; +$string['configforceloginforprofiles'] = 'Activez cette option pour obliger les internautes à se connecter en tant qu\'utilisateur réel (pas invité) pour pouvoir consulter les profils des autres utilisateurs. Cette option est désactivée par défaut. Les étudiants, tout comme les moteurs de recherche, peuvent donc les profils des utilisateurs.'; +$string['configframename'] = 'Si vous intégrez Moodle dans un cadre (frame), inscrivez ici le nom de ce cadre. Dans le cas contraire, cette valeur doit rester « _top »'; +$string['configfullnamedisplay'] = 'Ce réglage définit comment les noms sont affichés en format complet. Pour la plupart des sites monolingues, le réglage le plus efficace est le réglage par défaut « Prénom + Nom », mais vous pouvez choisir de cacher les noms de familles, ou de laisser le choix au fichier de la langue d\'affichage (certaines langues ont des conventions différentes).'; +$string['configgdversion'] = 'Indiquer la version de la librairie GD qui est installée. La version selectionnée par défaut est celle qui a été détectée. Ne pas modifier cette valeur à moins de savoir réellement ce qu\'il en découle.'; +$string['confightmleditor'] = 'Choisir d\'autoriser ou non l\'utilisation de l\'éditeur HTML intégré. Cependant, même s\'il est activé, il n\'apparaît que si l\'utilisateur utilise un navigateur récent. Chaque utilisateur peut également choisir de ne pas l\'activer.'; +$string['configidnumber'] = 'Cette option précise si (a) les utilisateurs doivent indiquer un numéro de connexion non vide ; (b) les utilisateurs doivent indiquer un numéro de connexion qui peut être vide ; (c) les utilisateurs n\'ont pas besoin d\'indiquer de numéro de connexion. Le cas échéant, le numéro de connexion est affiché dans le profil de l\'utilisateur.'; +$string['configintro'] = 'Cette page permet de configurer un certain nombre de variables de configuration permettront à Moodle de fonctionner correctement sur ce serveur. Inutile de trop s\'en inquiéter, les paramètres par défaut devraient, la plupart du temps, convenir et il est toujours possible de revenir plus tard sur cette page pour les modifier.'; +$string['configintroadmin'] = 'Cette page permet de configurer votre compte administrateur principal qui aura le contrôle total du site. Assurez-vous de lui donner un nom et un mot de passe sûrs, ainsi qu\'une adresse de courriel valable. Vous pourrez créer plus tard d\'autres comptes administrateur.'; +$string['configintrosite'] = 'Cette page permet définir l\'aspect de la page d\'accueil et le nom de votre site. Vous pourrez modifier ces paramètres en tout temps en utilisant le lien « Page d\'accueil » sur la page d\'administration.'; +$string['configlang'] = 'Choisir une langue par défaut pour l\'ensemble du site. Les utilisateurs ont la possibilité d\'en choisir une autre plus tard.'; +$string['configlangdir'] = 'La plupart des langues sont écrites de gauche à droite excepté certaines, comme l\'Arabe ou l\'Hébreu, qui le sont de droite à gauche'; +$string['configlanglist'] = 'Laisser ce champ vide pour permettre le choix d\'une langue de cette installation de Moodle. Vous pouvez abréger le menu des langues en spécifiant une liste de codes des langues désirées, par exemple: fr,de,en,it'; +$string['configlangmenu'] = 'Déterminer si vous voulez afficher ou non le menu du choix de la langue sur la page d\'accueil, la page de connexion, etc. Les utilisateurs peuvent sélectionner leur langue préférée dans leur propre profil indépendamment de ce réglage.'; +$string['configlocale'] = 'Choisir un environnement pour l\'affichage des dates. Les données de cet environnement doivent être installées sur le serveur. Laisser vide en cas de doute.'; +$string['configloglifetime'] = 'Ce champ permet de spécifier la durée de conservation des historiques des utilisateurs. Il est conseillé de choisir une durée aussi longue que possible. Si votre serveur est très fréquenté et que la performance se dégrade, il peut être judicieux de diminuer cette durée.'; +$string['configlongtimenosee'] = 'Si les étudiants ne se connectent pas au serveur durant ce laps de temps, leur inscription aux cours est automatiquement annulée.'; +$string['configmaxbytes'] = 'Taille maximale des fichiers déposés dans le site. Cette valeur est limitée par le réglage PHP upload_max_filesize et par le réglage Apache LimitRequestBody. Le réglage maxbytes limite quant à lui la taille au niveau des cours ou des thèmes.'; +$string['configmaxeditingtime'] = 'Ce paramètre indique la durée pendant laquelle les utilisateurs ont la possibilité de modifier un article qu\'ils ont écrit. Habituellement, 30 minutes est une bonne valeur.'; +$string['confignoreplyaddress'] = 'Les courriels sont parfois envoyés au nom d\'un utilisateur (par exemple les messages des forums). L\'adresse de courriel spécifiée ici sera utilisée comme adresse de l\'expéditeur lorsqu\'il n\'est pas souhaitable que les utilisateurs répondent directement à l\'auteur du message (par exemple s\'il ne veut pas que son adresse de courriel soit divulguée).'; +$string['confignotifyloginfailures'] = 'Lorsque les tentatives de connexion sont enregistrées, des notifications peuvent être envoyées par courriel. Qui doit recevoir ces notifications ?'; +$string['confignotifyloginthreshold'] = 'Lorsque les notifications des tentatives de connexion sont activées, combien de tentatives (provenant du même utilisateur ou de la même adresse IP) doivent être notifiées ?'; +$string['configopentogoogle'] = 'Si vous activez cette option, Google pourra entrer dans votre site en tant qu\'utilisateur invité. En outre, les internautes arrivant sur votre site depuis une recherche Google seront automatiquement connectés en tant qu\'utilisateur invité. Cela ne permet cependant un accès transparent qu\'aux cours déjà ouverts aux invités.'; +$string['configproxyhost'] = 'Si le serveur qui héberge le site Moodle a besoin d\'utiliser un proxy (dans le cas, par exemple, où il existe un firewall sur le réseau), indiquer ici le nom de ce proxy et son numéro de port. Sinon laisser vide.'; +$string['configsecureforms'] = 'Moodle peut utiliser un niveau additionnel de sécurité pour la gestion des formulaires web. Si cette option est activée, la variable HTTP_REFERRER du navigateur est comparée à l\'adresse du formulaire. Cela peut poser des problèmes lors de l\'utilisation d\'un firewall (p. ex. Zonealarm) configuré pour ôter HTTP_REFERRER de leur traffic web. Le symptôme est alors le « gel » du formulaire. Si vos utilisateurs ont des problèmes de connexion, par exemple sur la page de connexion, désactiver cette option. Dans le doute, réglez cette option sur « Oui ».'; +$string['configsessioncookie'] = 'Ce réglage permet de changer le nom du cookie utilisé pour les sessions de Moodle. Il est optionnel et uniquement utile pour éviter que la confusion des cookies sur un site web où tounent plusieurs Moodle.'; +$string['configsessiontimeout'] = 'Les utilisateurs connectés seront automatiquement déconnectés (leur session sera terminée) après le laps de temps d\'inactivités spécifié dans ce champ.'; +$string['configslasharguments'] = 'Les fichiers (images, fichiers téléchargés, etc.) sont transmis via un script qui utilise les « slash arguments ». Cette méthode permet à ces fichiers d\'être plus facilement pris en compte par le système de cache des navigateurs Web, proxy, etc. Cependant certains serveurs PHP n\'autorisent pas cette méthode. Par conséquent il est nécessaire d\'utiliser la première valeur de ce paramètre si des problèmes d\'affichage des fichiers ou images téléchargés sont rencontrés.'; +$string['configsmtphosts'] = 'Indiquer le nom complet d\'un ou plusieurs serveurs SMTP locaux que Moodle devra utiliser pour envoyer des courriels (par exemple, « mail.a.com » ou « mail.a.com;mail.b.com »). Si ce paramètre est laissé vide, Moodle utilisera la méthode par défaut de PHP pour envoyer des courriels.'; +$string['configsmtpuser'] = 'Si vous avez indiqué un nom de serveur SMTP ci-dessus et qu\'il requiert une authentification, entrez ici le nom d\'utilisateur et le mot de passe à utiliser.'; +$string['configteacherassignteachers'] = 'Les enseignants peuvent-ils choisir d\'autres enseignants pour les cours qu\'ils donnent ? Si « Non », seuls les responsables de cours et les administrateurs peuvent choisir les enseignants.'; +$string['configtimezone'] = 'Vous pouvez indiquer ici le fuseau horaire par défaut. Ce n\'est le fuseau horaire par défaut que pour l\'affichage des dates. Chaque utilisateur peut modifier ce réglage dans son propre profil. Si vous choisissez ici « Server Time », Moodle utilisera le réglage par défaut du serveur où il est installé. Si l\'utilisateur choisit « Server time » dans son profil, le réglage spécifié sera alors utilisé pour lui.'; +$string['configunzip'] = 'Indiquer le chemin complet du programme « unzip » (seulement pour Unix). Ce programme est requis pour décompresser des archives zip sur le serveur.'; $string['configuration'] = 'Configuration'; +$string['configvariables'] = 'Paramètres techniques'; +$string['configwarning'] = 'Attention ! Des valeurs bizarres pour ces paramètres peuvent engendrer des problèmes.'; +$string['configzip'] = 'Indiquer le chemin complet du programme « zip » (seulement pour Unix). Ce programme est requis pour réaliser des archives zip sur le serveur.'; $string['confirm'] = 'Confirmer'; $string['confirmed'] = 'Votre enregistrement a été confirmé'; $string['confirmednot'] = 'Votre enregistrement n\'a pas encore été confirmé'; $string['continue'] = 'Continuer'; $string['continuetocourse'] = 'Cliquer ici pour accéder à votre cours'; -$string['convertingwikitomarkdown'] = 'Conversion du format Wiki au Markdown'; $string['cookiesenabled'] = 'Votre navigateur doit supporter les cookies'; -$string['cookiesnotenabled'] = 'La gestion des cookies n\'est malheureusement pas activée actuellement dans votre navigateur'; $string['copy'] = 'copie'; $string['copyingcoursefiles'] = 'Copie des fichiers de cours'; $string['copyinguserfiles'] = 'Copie des fichiers utilisateurs'; @@ -190,7 +208,6 @@ $string['copyingzipfile'] = 'Copie du fichier compact $string['copyrightnotice'] = 'Copyright'; $string['cost'] = 'Coût'; $string['costdefault'] = 'Coût par défaut'; -$string['counteditems'] = '$a->count $a->items'; $string['country'] = 'Pays'; $string['course'] = 'Cours'; $string['courseavailable'] = 'Ce cours est ouvert aux étudiants'; @@ -202,12 +219,9 @@ $string['coursecreators'] = 'Responsables de cours'; $string['coursefiles'] = 'Fichiers du cours'; $string['courseformats'] = 'Formats de cours'; $string['coursegrades'] = 'Notes du cours'; -$string['coursehidden'] = 'Ce cours n\'est actuellement pas disponible pour les étudiants'; $string['courseinfo'] = 'Informations du cours'; $string['courserestore'] = 'Restauration du cours'; $string['courses'] = 'Cours'; -$string['coursestaught'] = 'Cours que j\'ai donné'; -$string['coursescategory'] = 'Cours de la même categorie'; $string['courseupdates'] = 'Modifications du cours'; $string['courseuploadlimit'] = 'Taille maximale des fichiers déposés dans le cours'; $string['create'] = 'Créer'; @@ -215,14 +229,11 @@ $string['createaccount'] = 'Cr $string['createfolder'] = 'Créer un dossier dans $a'; $string['createuserandpass'] = 'Créer un nouveau compte pour vous connecter'; $string['createziparchive'] = 'Créer une archive compactée zip'; -$string['creatingblocks'] = 'Création des blocs'; $string['creatingcategoriesandquestions'] = 'Création des catégories et des questions'; $string['creatingcoursemodules'] = 'Création des modules de cours'; $string['creatingevents'] = 'Création du calendrier'; $string['creatinggroups'] = 'Création des groupes'; $string['creatinglogentries'] = 'Création des historiques'; -$string['creatingmessagesinfo'] = 'Création des informations des messages'; -$string['creatingmetacoursedata'] = 'Creating des informations du méta-cours'; $string['creatingnewcourse'] = 'Création d\'un nouveau cours'; $string['creatingscales'] = 'Création des barèmes'; $string['creatingsections'] = 'Création des sections'; @@ -250,7 +261,6 @@ $string['datemostrecentlast'] = 'Date - la plus r $string['day'] = 'jour'; $string['days'] = 'jours'; $string['decodinginternallinks'] = 'Décodage des liens internes'; -$string['default'] = 'Défaut'; $string['defaultcoursefullname'] = 'Nom du cours'; $string['defaultcourseshortname'] = 'XXX000'; $string['defaultcoursestudent'] = 'Étudiant'; @@ -260,7 +270,6 @@ $string['defaultcourseteacher'] = 'Enseignant'; $string['defaultcourseteachers'] = 'Enseignants'; $string['delete'] = 'Supprimer'; $string['deleteall'] = 'Tout supprimer'; -$string['deletecategorycheck'] = 'Voulez-vous vraiment supprimer la categorie « $a »?
                              Tous les cours de cette catégorie seront déplacés la catégorie mère, si elle existe existe, ou à défaut dans la catégorie Divers.'; $string['deletecheck'] = 'Supprimer $a ?'; $string['deletecheckfiles'] = 'Êtes-vous certain de vouloir supprimer ces fichiers ?'; $string['deletecheckfull'] = 'Êtes-vous certain de vouloir supprimer $a ?'; @@ -278,9 +287,6 @@ $string['deletingexistingcoursedata'] = 'Suppression des donn $string['deletingolddata'] = 'Suppression des anciennes données'; $string['department'] = 'Département'; $string['description'] = 'Description'; -$string['detailedless'] = 'Moins de détails'; -$string['detailedmore'] = 'Plus de détails'; -$string['directorypaths'] = 'Chemin d\'accès des dossiers'; $string['disable'] = 'Désactiver'; $string['displayingfirst'] = 'Seules les $a->count premier(ère)s $a->things sont affiché(e)s'; $string['displayingrecords'] = '$a enregistrements affichés'; @@ -294,10 +300,9 @@ $string['doyouagree'] = 'Avez-vous lu et compris ces conditions ?'; $string['duplicate'] = 'Dupliquer'; $string['duplicatinga'] = 'Duplication de $a'; $string['duplicatingain'] = 'Duplication de $a->what vers $a->in'; -$string['edhelpaspellpath'] = 'Pour utiliser le correcteur orthographique dans l\'éditeur WYSIWYG, le logiciel aspell version 0.50 ou ultérieure doit être installé sur le serveur, et vous devez configurer correctement le chemin d\'accès du programme aspell. Sur les systèmes Unix/Linux, ce chemin d\'accès est en règle générale /usr/bin/aspell.'; $string['edhelpbgcolor'] = 'Définir la couleur de fond de l\'éditeur.
                              Des valeurs correctes sont par exemple : #ffffff ou white'; $string['edhelpcleanword'] = 'Ce réglage permet l\'activation du filtre spécifique au format Word.'; -$string['edhelpenablespelling'] = 'Activation du correcteur orthographique. S\'il est activé, le programme aspell doit être installé sur le serveur. La seconde valeurest le dictionnaire par défaut. Cette valeur sera utilisée si aspell n\'a pas de dictionnaire pour la langue de l\'utilisateur.'; +$string['edhelpenablespelling'] = 'Activation du correcteur orthographique. S\'il est activé, le programme aspell doit être installé sur le serveur.'; $string['edhelpfontfamily'] = 'La propriété « font-family » est une liste de noms de polices et/ou de familles de polices génériques. Les noms doivent être séparés par des virgules.'; $string['edhelpfontlist'] = 'Définition des polices disponible dans le menu de l\'éditeur.'; $string['edhelpfontsize'] = 'Le corps par défaut définit la taille de la police.
                              Des valeurs correctes sont par exemple : medium, large, smaller, larger, 10pt, 11px.'; @@ -306,8 +311,6 @@ $string['editcoursesettings'] = 'Modifier les param $string['editfiles'] = 'Modifier les fichiers'; $string['editgroupprofile'] = 'Modifier le profil du groupe'; $string['editinga'] = 'Modifier $a'; -$string['editingteachershort'] = 'Éditeur'; -$string['editlock'] = 'Cette valeur ne peut pas être modifiée !'; $string['editmyprofile'] = 'Modifier mon profil'; $string['editorbgcolor'] = 'Couleur de fond'; $string['editorcleanonpaste'] = 'Nettoyage du HTML de Word lors du collage'; @@ -316,8 +319,7 @@ $string['editordefaultfont'] = 'Police par d $string['editorenablespelling'] = 'Activer le correcteur orthographique'; $string['editorfontlist'] = 'Liste des polices'; $string['editorfontsize'] = 'Corps par défaut'; -$string['editorresettodefaults'] = 'Rétablir les valeurs par défaut de l\'éditeur'; -$string['editorsettings'] = 'Éditeur WYSIWYG'; +$string['editorsettings'] = 'Configuration de l\'éditeur'; $string['editsummary'] = 'Modifier le résumé'; $string['editthisactivity'] = 'Modifier cette activité'; $string['editthiscategory'] = 'Modifier cette discipline'; @@ -338,24 +340,24 @@ Dans la plupart des logiciels de messagerie, cette adresse devrait appara Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site, $a->admin'; $string['emailconfirmationsubject'] = '$a : confirmation de l\'ouverture du compte'; -$string['emailconfirmsent'] = '

                              Un message vous a été envoyé à l\'adresse de courriel $a.

                              Il contient les instructions pour terminer votre enregistrement.

                              Si vous rencontrez des difficultés, veuillez contacter l\'administrateur du site.

                              '; +$string['emailconfirmsent'] = '

                              Un message vous a été envoyé à l\'adresse de courriel $a.

                              +

                              Il contient les instructions pour terminer votre enregistrement.

                              +

                              Si vous rencontrez des difficultés, contactez l\'administrateur du site.

                              '; $string['emaildigest'] = 'Forme du courriel quotidien'; -$string['emaildigestcomplete'] = 'Complet (courriel quotidien avec l\'intégralité des messages)'; $string['emaildigestoff'] = 'Pas de courriel quotidien (un courriel par message)'; +$string['emaildigestcomplete'] = 'Complet (courriel quotidien avec l\'intégralité des messages)'; $string['emaildigestsubjects'] = 'Objets (courriel quotidien avec les objets des messages uniquement)'; $string['emaildisable'] = 'Cette adresse de courriel est désactivée'; $string['emaildisableclick'] = 'Cliquez ici pour désactiver l\'envoi de courriels à cette adresse'; $string['emaildisplay'] = 'Affichage de l\'adresse de courriel'; $string['emaildisplaycourse'] = 'Seuls les membres du cours sont autorisés à voir mon adresse de courriel'; -$string['emaildisplayno'] = 'Cacher à tous mon adresse de courriel'; +$string['emaildisplayno'] = 'Cacher mon adresse de courriel à tous'; $string['emaildisplayyes'] = 'Autoriser tout le monde à voir mon adresse de courriel'; $string['emailenable'] = 'Cette adresse de courriel est activée'; $string['emailenableclick'] = 'Cliquez ici pour ré-activer l\'envoi de courriels à cette adresse'; $string['emailexists'] = 'Cette adresse est déjà enregistrée.'; $string['emailformat'] = 'Format des courriels'; $string['emailmustbereal'] = 'Remarque : votre adresse de courriel doit être valide'; -$string['emailnotallowed'] = 'Les adresses de courriel de ce domaine ne sont pas autorisées ($a)'; -$string['emailonlyallowed'] = 'Cette adresse de courriel ne fait pas partie de celle qui sont autorisées ($a)'; $string['emailpasswordconfirmation'] = 'Bonjour, Quelqu\'un (probablement vous) a demandé un nouveau mot de passe pour votre compte sur « $a->sitename ». @@ -368,24 +370,27 @@ Dans la plupart des logiciels de messagerie, cette adresse devrait appara Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site, $a->admin'; $string['emailpasswordconfirmationsubject'] = '$a : confirmation du changement de mot de passe'; -$string['emailpasswordconfirmsent'] = '

                              Un message a été envoyé à votre adresse de courriel$a.

                              Ce message décrit la marche à suivre pour confirmer et terminer le changement de mot de passe.

                              En cas de difficulté, veuillez contacter l\'administrateur du site.

                              '; -$string['emailpasswordsent'] = '

                              Merci pour votre confirmation de changement de mot de passe.

                              Un message avec votre nouveau mot de passe a été envoyé à votre adresse $a->email.

                              Le nouveau mot de passe a été généré automatiquement. Vous pouvez link\">le modifier pour le rendre plus facile mémoriser.

                              '; +$string['emailpasswordconfirmsent'] = '

                              Un message a été envoyé à votre adresse de courriel$a.

                              +

                              Ce message décrit la marche à suivre pour confirmer et terminer le changement de mot de passe.

                              +

                              En cas de difficulté, veuillez contacter l\'administrateur du site.

                              '; +$string['emailpasswordsent'] = '

                              Merci pour votre confirmation.

                              +

                              Un message avec votre nouveau mot de passe a été envoyé à votre adresse $a->email.

                              +

                              Le nouveau mot de passe a été généré automatiquement. Vous pouvez link\">le modifier pour le rendre plus facile à retenir.

                              '; $string['enable'] = 'Activer'; $string['encryptedcode'] = 'Code chiffré'; $string['enrolledincourse'] = 'Inscrit au cours « $a »'; $string['enrolledincoursenot'] = 'Non inscrit au cours « $a »'; -$string['enrollfirst'] = 'Vous devez vous inscrire à un cours avant de pouvoir utiliser les activités de la page d\'accueil'; -$string['enrolme'] = 'M\'inscrire dans ce cours'; $string['enrolmentconfirmation'] = 'Vous êtes sur le point de vous inscrire comme participant à ce cours.
                              Voulez-vous vraiment vous y inscrire ?'; $string['enrolmentkey'] = 'Clef d\'inscription'; $string['enrolmentkeyfrom'] = 'Ce cours nécessite une clef d\'inscription, un mot de passe à usage unique que vous devez obtenir de $a'; $string['enrolmentkeyhint'] = 'Cette clef d\'inscription est incorrecte, merci d\'essayer de nouveau
                              (La clef commence par « $a ».)'; $string['enrolmentnew'] = 'Nouvelle inscription dans $a'; -$string['enrolmentnewuser'] = '$a->user s\'est inscrit au cours « $a->course »'; +$string['enrolmentnewuser'] = '$a->user s\'est inscrit au cours Ç $a->course È'; $string['enrolmentnointernal'] = 'L\'inscription manuelle n\'est actuellement pas activée'; $string['enrolmentnotyet'] = 'Désolé, vous ne pouvez pas accéder à ce cours avant le
                              $a'; $string['enrolments'] = 'Inscriptions'; $string['enrolperiod'] = 'Durée d\'inscription'; +$string['enrollfirst'] = 'Vous devez vous inscrire à un cours avant de pouvoir utiliser les activités du site'; $string['entercourse'] = 'Cliquer pour entrer dans le cours'; $string['enteremailaddress'] = 'Entrez votre adresse de courriel afin qu\'un nouveau mot de passe vous soit envoyé par courriel'; $string['entries'] = 'Article'; @@ -402,31 +407,26 @@ $string['existingcoursedeleting'] = 'Cours existant, en le supprimant d\'abord'; $string['existingcreators'] = 'Responsables de cours existants'; $string['existingstudents'] = 'Étudiants inscrits'; $string['existingteachers'] = 'Enseignants existants'; -$string['explanation'] = 'Explication'; $string['failedloginattempts'] = '$a->attempts tentatives de connexion depuis votre dernière connexion'; $string['failedloginattemptsall'] = '$a->attempts tentatives de connexion pour $a->accounts comptes'; $string['feedback'] = 'Feedback'; -$string['file'] = 'Fichier'; $string['filemissing'] = '$a est manquant'; +$string['file'] = 'Fichier'; $string['files'] = 'Fichiers'; $string['filesfolders'] = 'Fichiers/dossiers'; $string['filloutallfields'] = 'Merci de remplir tous les champs de ce formulaire'; $string['findmorecourses'] = 'Rechercher d\'autres cours...'; -$string['firstdayofweek'] = '1'; +$string['firstdayofweek'] = '1'; // 0-Dimanche, 1-Lundi, ..., 6-Samedi $string['firstname'] = 'Prénom'; $string['firsttime'] = 'Première visite sur ce site ?'; -$string['fix'] = 'Correction'; $string['followingoptional'] = 'Les éléments suivants sont facultatifs'; $string['followingrequired'] = 'Les éléments suivants sont requis'; $string['force'] = 'Imposer '; $string['forcedmode'] = 'mode imposé'; $string['forcelanguage'] = 'Imposer la langue'; $string['forceno'] = 'Ne pas imposer'; -$string['forcepasswordchange'] = 'Imposer le changement du mot de passe'; -$string['forcepasswordchangehelp'] = 'Demande à l\'utilisateur de changer son mot de passe lors de la prochaine connexion'; -$string['forcetheme'] = 'Imposer le thème'; $string['forgotten'] = 'Vous avez oublié votre nom d\'utilisateur et/ou votre mot de passe ?'; -$string['format'] = 'Format'; +$string['format'] = 'Format du cours'; $string['formathtml'] = 'Format HTML'; $string['formatmarkdown'] = 'Format Markdown'; $string['formatplain'] = 'Format texte'; @@ -442,30 +442,32 @@ $string['frontpagecourselist'] = 'Afficher la liste des cours'; $string['frontpagedescription'] = 'Description sur la page d\'accueil'; $string['frontpageformat'] = 'Format de la page d\'accueil'; $string['frontpagenews'] = 'Afficher les brèves'; -$string['frontpagetopiconly'] = 'Afficher du HTML ou des activités à votre gré (section thématique)'; $string['fulllistofcourses'] = 'Tous les cours'; $string['fullname'] = 'Nom complet'; $string['fullnamedisplay'] = '$a->firstname $a->lastname'; $string['fullprofile'] = 'Profil complet'; $string['fullsitename'] = 'Nom complet du site'; -$string['functiondisabled'] = 'Cette fonction est actuellement désactivée'; $string['gd1'] = 'GD 1.x est installé'; $string['gd2'] = 'GD 2.x est installé'; $string['gdneed'] = 'GD doit être installé pour visualiser ce graphique'; $string['gdnot'] = 'GD n\'est pas installé'; -$string['go'] = 'Aller'; -$string['gpl'] = 'Copyright (C) 1999-2005 Martin Dougiamas (http://moodle.com) +$string['gpl'] = 'Copyright (C) 1999-2004 Martin Dougiamas (http://dougiamas.com) -Ce programme est libre, vous pouvez le redistribuer et/ou le modifier -selon les termes de la Licence Publique Générale GNU publiée par la -Free Software Foundation (version 2 ou bien toute autre version -ultérieure choisie par vous). +This program is free software; you can redistribute it and/or modify -Ce programme est distribué car potentiellement utile, mais -SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les -garanties de commercialisation ou d\'adaptation dans un but -spécifique. Reportez-vous à la Licence Publique Générale GNU -pour plus de détails : +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'; $string['grade'] = 'Note'; @@ -475,10 +477,8 @@ $string['groupadd'] = 'Ajouter un nouveau groupe'; $string['groupaddusers'] = 'Ajouter les utilisateurs sélectionnés au groupe'; $string['groupfor'] = 'pour le groupe'; $string['groupinfo'] = 'Information sur le groupe sélectionné'; -$string['groupinfoedit'] = 'Modifier les réglages du groupe'; $string['groupinfomembers'] = 'Information sur les membres sélectionnés'; $string['groupinfopeople'] = 'Information sur les personnes sélectionnées'; -$string['groupmembers'] = 'Membres du groupe'; $string['groupmemberssee'] = 'Afficher les membres du groupe'; $string['groupmembersselected'] = 'Membres du groupe sélectionné'; $string['groupmode'] = 'Type des groupes'; @@ -495,7 +495,7 @@ $string['groupsseparate'] = 'Groupes s $string['groupsvisible'] = 'Groupes visibles'; $string['guestskey'] = 'Autoriser l\'accès des utilisateurs anonymes possédant la clef'; $string['guestsno'] = 'Ne pas autoriser l\'accès des utilisateurs anonymes'; -$string['guestsnotallowed'] = 'Désolé, le cours « $a » n\'autorise pas l\'accès des utilisateurs anonymes.'; +$string['guestsnotallowed'] = 'Désolé, « $a » n\'autorise pas l\'accès des utilisateurs anonymes.'; $string['guestsyes'] = 'Autoriser l\'accès des utilisateurs anonymes sans clef'; $string['guestuser'] = 'Utilisateur anonyme'; $string['guestuserinfo'] = 'Cet utilisateur spécial a accès en lecture seule à certains cours.'; @@ -507,18 +507,16 @@ $string['helpindex'] = 'Index g $string['helppicture'] = 'Comment déposer une image'; $string['helpquestions'] = 'Formuler des questions pertinentes'; $string['helpreading'] = 'Lire attentivement'; -$string['helprichtext'] = 'À propos de l\'éditeur WYSIWYG'; +$string['helprichtext'] = 'À propos de l\'éditeur HTML'; $string['helpsummaries'] = 'À propos de ces résumés'; $string['helptext'] = 'Comment rédiger un texte'; $string['helpwiki'] = 'Comment rédiger un texte de genre wiki'; $string['helpwriting'] = 'Écrire soigneusement'; +$string['hide'] = 'Cacher'; $string['hiddensections'] = 'Sections cachées'; $string['hiddensectionscollapsed'] = 'Sections cachées affichés sous forme condensée'; $string['hiddensectionsinvisible'] = 'Sections cachées invisibles'; -$string['hide'] = 'Cacher'; -$string['hideadvancedsettings'] = 'Cacher les réglages avancés'; $string['hidepicture'] = 'Cacher l\'image'; -$string['hidesettings'] = 'Cacher les réglages'; $string['hits'] = 'Requêtes'; $string['hitsoncourse'] = 'Nombre de requêtes de $a->username sur $a->coursename'; $string['hitsoncoursetoday'] = 'Nombre de requêtes de $a->username sur $a->coursename pour aujourd\'hui'; @@ -526,19 +524,14 @@ $string['home'] = 'Accueil'; $string['hour'] = 'heure'; $string['hours'] = 'heures'; $string['howtomakethemes'] = 'Comment créer de nouveaux thèmes'; -$string['htmleditor'] = 'Utiliser l\'éditeur WYSIWYG (ne fonctionne pas avec tous les navigateurs)'; -$string['htmleditoravailable'] = 'L\'éditeur WYSIWYG est disponible'; -$string['htmleditordisabled'] = 'Vous avez désactivé l\'utilisation de l\'éditeur WYSIWYG dans votre profil utilisateur'; -$string['htmleditordisabledadmin'] = 'L\'administrateur a désactivé l\'utilisation de l\'éditeur WYSIWYG sur ce site'; -$string['htmleditordisabledbrowser'] = 'L\'éditeur WYSIWYG n\'est pas disponible car vous n\'utilisez pas un navigateur compatible'; +$string['htmleditor'] = 'Utiliser l\'éditeur HTML (ne fonctionne pas avec tous les navigateurs)'; +$string['htmleditoravailable'] = 'L\'éditeur HTML est disponible'; +$string['htmleditordisabled'] = 'Vous avez désactivé l\'utilisation de l\'éditeur HTML dans votre profil utilisateur'; +$string['htmleditordisabledadmin'] = 'L\'administrateur a désactivé l\'utilisation de l\'éditeur HTML sur ce site'; +$string['htmleditordisabledbrowser'] = 'L\'éditeur HTML n\'est pas disponible car vous n\'utilisez pas un navigateur compatible'; $string['htmlformat'] = 'Format HTML'; $string['icqnumber'] = 'Identifiant ICQ'; -$string['idnumber'] = 'Numéro d\'identification'; -$string['importdata'] = 'Importer les données d\'un cours'; -$string['importdatafrom'] = 'Rechercher un cours à partir duquel importer des données :'; -$string['importdataexported'] = 'Les données du cours d\'origine ont été exportées correctement.
                              Voulez-vous les importer dans le cours de destination ?'; -$string['importdatafinished'] = 'Importation terminée ! Aller sur votre cours'; -$string['importmetacoursenote'] = 'Utiliser ce formulaire pour ajouter des cours à votre méta-cours (les inscriptions seront également importées)'; +$string['idnumber'] = 'Numéro de connexion'; $string['inactive'] = 'Inactif'; $string['include'] = 'Inclure'; $string['includeallusers'] = 'Inclure tous les utilisateurs'; @@ -550,12 +543,10 @@ $string['includemodules'] = 'Inclure les modules'; $string['includeneededusers'] = 'Inclure les utilisateurs s\'il y a lieu'; $string['includenoneusers'] = 'Ne pas inclure les utilisateurs'; $string['includeuserfiles'] = 'Inclure les fichiers des utilisateurs'; -$string['info'] = 'Information'; $string['institution'] = 'Institution'; $string['invalidemail'] = 'Adresse de courriel incorrecte'; $string['invalidlogin'] = 'La connexion a échoué, merci d\'essayer de nouveau'; $string['ip_address'] = 'Adresse IP'; -$string['jump'] = 'Sauter'; $string['jumpto'] = 'Aller à...'; $string['keep'] = 'Conserver'; $string['langltr'] = 'La langue est écrite de gauche à droite'; @@ -571,24 +562,23 @@ $string['latestlanguagepack'] = 'V $string['latestnews'] = 'Dernières nouvelles'; $string['leavetokeep'] = 'Laisser vide pour ne pas changer le mot de passe'; $string['license'] = 'Licence GPL'; -$string['liketologin'] = 'Voulez-vous vous connecter maintenant avec un compte utilisateur nominal ?'; $string['list'] = 'Liste'; $string['listfiles'] = 'Liste des fichiers dans $a'; $string['listofallpeople'] = 'Liste de tous les utilisateurs'; $string['livelogs'] = 'Actions effectuées durant l\'heure écoulée'; $string['locale'] = 'fr_FR'; -$string['location'] = 'Localisation'; +$string['location'] = 'Localité'; $string['loggedinas'] = 'Connecté sous le nom « $a »'; $string['loggedinnot'] = 'Non connecté.'; $string['login'] = 'Connexion'; -$string['login_failure_logs'] = 'Historique des tentatives de connexion'; $string['loginas'] = 'Se connecter sous ce nom'; +$string['login_failure_logs'] = 'Historique des tentatives de connexion'; $string['loginguest'] = 'Connexion en tant qu\'utilisateur anonyme'; $string['loginsite'] = 'Se connecter sur le site'; $string['loginsteps'] = '

                              Bonjour. Pour un accès complet aux cours, prenez une minute pour vous créer un compte personnel sur ce site.
                              Chaque cours peut également nécessiter une clef d\'inscription à usage unique dont vous n\'avez pas besoin pour l\'instant.

                              Voici les étapes à suivre :

                              -
                                +
                                1. Remplir le formulaire nouveau compte.
                                2. Un message vous sera immédiatement adressé par courriel.
                                3. Récupérer ce message et cliquer sur le lien Web qu\'il contient.
                                4. @@ -597,25 +587,23 @@ Chaque cours peut
                                5. Si une clef d\'inscription vous est demandée, utilisez celle que votre enseignant vous aura communiquée.
                                6. Vous aurez alors un accès au cours complet. À votre prochaine visite il vous suffira d\'entrer votre nom d\'utilisateur et mot de passe (dans le formulaire ci-contre) afin de vous connecter et d\'accéder à tous les cours auxquels vous serez inscrit.
                                '; -$string['loginstepsnone'] = '

                                Bonjour !

                                Pour un accès complet aux cours vous devez vous créer un compte.

                                Pour cela, vous avez seulement besoin de choisir un nom d\'utilisateur et un mot de passe à entrer dans le formulaire de cette page.

                                Si ce nom d\'utilisateur est déjà utilisé, il vous sera demandé d\'en choisir un autre.

                                '; +$string['loginstepsnone'] = '

                                Bonjour !

                                +

                                Pour un accès complet aux cours vous devez vous créer un compte.

                                +

                                Pour cela, vous avez seulement besoin de choisir un nom d\'utilisateur et un mot de passe à entrer dans le formulaire de cette page.

                                +

                                Si ce nom d\'utilisateur est déjà utilisé, il vous sera demandé d\'en choisir un autre.

                                '; $string['loginto'] = 'Se connecter sur $a'; $string['loginusing'] = 'Connectez-vous ici en utilisant votre nom d\'utilisateur
                                et mot de passe'; $string['logout'] = 'Déconnexion'; $string['logs'] = 'Historiques'; -$string['logtoomanycourses'] = ' [ url\">suite ] '; -$string['logtoomanyusers'] = ' [ url\">suite ] '; -$string['mailadmins'] = 'Informer les administrateurs'; $string['mailstudents'] = 'Informer les étudiants'; $string['mailteachers'] = 'Informer les enseignants'; +$string['mailadmins'] = 'Informer les administrateurs'; $string['mainmenu'] = 'Menu principal'; $string['makeafolder'] = 'Créer un dossier'; $string['makeeditable'] = 'Si le serveur Web (par exemple Apache) possède un accès en écriture au fichier « $a », alors il sera possible de modifier ce fichier directement depuis cette page'; $string['manageblocks'] = 'Blocs'; $string['managedatabase'] = 'Base de données'; $string['managefilters'] = 'Filtres'; -$string['managemeta'] = 'S\'agit-il d\'un méta-cours ?'; -$string['managemetaexplan'] = '(Ceci signifie que les inscriptions à ce cours sont héritées d\'autres cours)'; -$string['managemetadisabled'] = 'Cette option est désactivée, car ce cours est déjà un méta-cours'; $string['managemodules'] = 'Modules'; $string['markedthistopic'] = 'Ce thème est en évidence (thème en cours)'; $string['markthistopic'] = 'Marquer ce thème comme thème en cours'; @@ -624,20 +612,8 @@ $string['maximumgrade'] = 'Note maximale'; $string['maximumshort'] = 'Max'; $string['maximumupload'] = 'Taille maximale des fichiers déposés'; $string['maxsize'] = 'Taille maximale : $a'; -$string['metaassigncourses'] = 'Ajouter des cours'; -$string['metaalreadycourses'] = 'cours ont déjà été ajoutés'; -$string['metaalreadyhascourses'] = 'Ce méta-cours contient déjà des cours.'; -$string['metaalreadyhasenrolments'] = 'Ce cours a déjà des inscriptions normales.'; -$string['metaalreadyinmeta'] = 'Ce cours fait déjà partie d\'un méta-cours.'; -$string['metanoalreadycourses'] = 'Aucun cours n\'a encore été ajouté'; -$string['metapotentialcourses'] = 'Cours disponibles'; -$string['metanopotentialcourses'] = 'Aucun cours disponible'; -$string['metaaddcourse'] = 'Ajouter ce cours'; -$string['metacourse'] = 'Méta-cours'; -$string['metaremovecourse'] = 'Retirer ce cours'; $string['min'] = 'min'; $string['mins'] = 'mins'; -$string['minutes'] = 'minutes'; $string['miscellaneous'] = 'Divers'; $string['missingcategory'] = 'Vous devez choisir une catégorie'; $string['missingcity'] = 'La ville ne peut pas être vide'; @@ -661,7 +637,7 @@ $string['missingteacher'] = 'Vous devez choisir un enseignant'; $string['missingurl'] = 'L\'URL ne peut pas être vide'; $string['missingusername'] = 'Le nom d\'utilisateur ne peut pas être vide'; $string['modified'] = 'Modifié'; -$string['moduledeleteconfirm'] = 'Vous allez supprimer le module « $a ». Cela va effacer de la base de données tous les éléments associés à ce module d\'activité. Voulez-vous VRAIMENT continuer ?'; +$string['moduledeleteconfirm'] = 'Vous allez supprimer le module « $a ». Cela va effacer de la base de données tous les éléments associés à ce module d\'activité. Êtes-vous SÛR de vouloir continuer ?'; $string['moduledeletefiles'] = 'Tous les éléments associés au module « $a->module » ont été effacés de la base de données. Pour terminer la suppression (et empêcher que le module se réinstalle automatiquement), veuillez supprimer le dossier suivant de votre serveur: $a->directory'; $string['modulesetup'] = 'Installation des tables des modules'; $string['modulesuccess'] = 'Les tables du module $a ont été installées correctement'; @@ -680,8 +656,6 @@ $string['moveright'] = 'D $string['moveselectedcoursesto'] = 'Déplacer les cours sélectionné vers...'; $string['movetoanotherfolder'] = 'Déplacer vers un autre dossier'; $string['moveup'] = 'Monter'; -$string['msnid'] = 'Identifiant MSN'; -$string['mustchangepassword'] = 'Le nouveau mot de passe doit être différent du mot de passe actuel'; $string['mustconfirm'] = 'Vous devez confirmer votre enregistrement'; $string['mycourses'] = 'Mes cours'; $string['name'] = 'Nom'; @@ -709,8 +683,7 @@ $a->link Dans la plupart des logiciels de messagerie, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez ce lien et collez-le dans la barre d\'adresse de votre navigateur web. -Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site $a->sitename, -$a->signoff'; +Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site, $a->admin'; $string['newpicture'] = 'Nouvelle image'; $string['newsitem'] = 'article'; $string['newsitems'] = 'articles'; @@ -722,7 +695,6 @@ $string['no'] = 'Non'; $string['nobody'] = 'Personne'; $string['nocoursesfound'] = 'Aucun cours contenant les mots « $a » n\'a été trouvé'; $string['nocoursesyet'] = 'Il n\'y a pas encore de cours'; -$string['nodstpresets'] = 'L\'administrateur n\'a pas activé le support de l\'heure d\'été.'; $string['noexistingadmins'] = 'Il n\'y a aucun administrateur ! Ceci est une erreur sérieuse et ne devrait pas pouvoir se produire.'; $string['noexistingcreators'] = 'Il n\'y a pas de responsables de cours'; $string['noexistingstudents'] = 'Il n\'y a pas d\'étudiants'; @@ -732,40 +704,32 @@ $string['nofilesyet'] = 'Aucun fichier n\'a encore $string['nograde'] = 'Pas de note'; $string['noimagesyet'] = 'Aucune image n\'a encore été déposée dans ce cours'; $string['nomorecourses'] = 'Aucun cours n\'a été trouvé'; -$string['nomoreidnumber'] = 'N\'utilise pas de numéro idnumber pour éviter les collisions'; $string['none'] = 'Aucun'; $string['nopotentialadmins'] = 'Aucun administrateur potentiel'; $string['nopotentialcreators'] = 'Aucun responsable de cours potentiel'; $string['nopotentialstudents'] = 'Aucun étudiant potentiel'; $string['nopotentialteachers'] = 'Aucun enseignant potentiel'; -$string['noreplyname'] = 'Merci de ne pas répondre à ce courriel'; -$string['noreplybouncemessage'] = 'Vous avez répondu à une adresse de courriel sans réponse. Si vous essayiez de répondre à un message d\'un forum, essayez plutôt d\'y répondre dans les forums de $a. '.'\n\n'.'Voici une copie de votre message :'.'\n\n'; -$string['noreplybouncesubject'] = '$a - message de rebond.'; -$string['noresults'] = 'Aucun résultat'; $string['normal'] = 'Normale'; $string['normalfilter'] = 'Moins de critères'; $string['nostudentsfound'] = 'Aucun $a trouvé'; -$string['nostudentsingroup'] = 'Il n\'y a pas encore d\'étudiant dans ce groupe'; $string['nostudentsyet'] = 'Pas encore d\'étudiant inscrit à ce cours'; $string['nosuchemail'] = 'Adresse de courriel inconnue'; $string['notavailable'] = 'Non disponible'; $string['noteachersyet'] = 'Pas encore d\'enseignant dans ce cours'; $string['notenrolled'] = '$a n\'est pas inscrit à ce cours.'; -$string['noteuserschangednonetocourse'] = 'Remarque : les utilisateurs du cours doivent être restaurés lors de la restauration de données utilisateur (fichiers ou messages, dans les activités). Ce paramètre a été modifié pour vous.'; +$string['noteuserschangednonetocourse'] = 'Remarque : les utilisateurs du cours doivent être restaurés lors de la restauration de données utilisateur. Ce paramètre a été modifié pour vous.'; $string['nothingnew'] = 'Rien de nouveau depuis votre dernière visite'; -$string['nothingtodisplay'] = 'Rien à afficher'; $string['noticenewerbackup'] = 'Ce fichier de sauvegarde a été créé avec la version $a->backuprelease ($a->backupversion) de Moodle, qui est plus récente que votre installation actuelle de Moodle $a->serverrelease ($a->serverversion). Ceci peut causer des incohérences, car la compatibilité des fichiers de sauvegarde ne peut dans ce cas pas être garantie.'; +$string['notifyloginfailuressubject'] = '$a :: notification de tentatives de connexion'; +$string['notifyloginfailuresmessagestart'] = 'Voici une liste des tentatives de connexion au site $a depuis la dernière notification '; $string['notifyloginfailuresmessage'] = '$a->time, IP : $a->ip, Utilisateur : $a->info'; $string['notifyloginfailuresmessageend'] = 'Vous pouvez consulter l\'historique de ces tentatives à l\'adresse $a/course/log.php?id=1&chooselog=1&modid=site_errors.'; -$string['notifyloginfailuresmessagestart'] = 'Voici une liste des tentatives de connexion au site $a depuis la dernière notification '; -$string['notifyloginfailuressubject'] = '$a :: notification de tentatives de connexion'; +$string['numattempts'] = '$a tentative(s) de connexion non aboutie(s) '; $string['notincluded'] = 'Pas inclus'; $string['notingroup'] = 'Désolé, vous devez faire partie d\'un groupe pour participer à cette activité.'; -$string['notpublic'] = 'Non public !'; -$string['nousersmatching'] = 'Aucun utilisateur n\'a été trouvé contenant le texte « $a ».'; +$string['nousersmatching'] = 'Aucun utilisateurs n\'a été trouvé contenant le texte « $a ».'; $string['nousersyet'] = 'Il n\'y pas encore d\'utilisteur'; $string['now'] = 'maintenant'; -$string['numattempts'] = '$a tentatives de connexions infructueuses'; $string['numberweeks'] = 'Nombre de semaines ou de thèmes'; $string['numdays'] = '$a jours'; $string['numhours'] = '$a heures'; @@ -781,12 +745,7 @@ $string['optional'] = 'facultatif'; $string['order'] = 'Ordre'; $string['other'] = 'Autre'; $string['outline'] = 'Résumé'; -$string['outlinereport'] = 'Rapport résumé'; $string['page'] = 'Page'; -$string['pageheaderconfigablock'] = 'Configuration d\'un bloc dans %%fullname%%'; -$string['parentcoursenotfound'] = 'Le cours parent n\'a pas été trouvé !'; -$string['parentcoursenotmetacourse'] = 'Le cours parent n\'est pas un méta-cours !'; -$string['parentfolder'] = 'Dossier parent'; $string['parentlanguage'] = 'en'; $string['participants'] = 'Participants'; $string['password'] = 'Mot de passe'; @@ -795,31 +754,26 @@ $string['passwordconfirmchange'] = 'Confirmer le changement de mot de passe'; $string['passwordrecovery'] = 'Oui, j\'ai besoin d\'aide pour me connecter'; $string['passwordsdiffer'] = 'Les mots de passe ne correspondent pas'; $string['passwordsent'] = 'Le mot de passe a été envoyé'; -$string['passwordsenttext'] = '

                                Un message vous a été envoyé à cette adresse : $a->email.

                                Merci de lire ce message afin de connaître votre nouveau mot de passe

                                Ce nouveau mot de passe a été généré automatiquement. Vous voudrez sans doute le link\">modifier afin qu\'il vous soit plus facile de vous en souvenir.

                                '; -$string['pathnotexists'] = 'Ce chemin n\'existe pas sur votre serveur !'; -$string['pathslasherror'] = 'Le chemin ne doit pas se terminer par une barre oblique !'; +$string['passwordsenttext'] = '

                                Un message vous a été envoyé à cette adresse : $a->email.

                                +

                                Merci de lire ce message afin de connaître votre nouveau mot de passe

                                +

                                Ce nouveau mot de passe a été généré automatiquement. Vous voudrez sans doute
                                le link\">modifier afin qu\'il vous soit plus facile de vous en souvenir.

                                '; $string['paymentinstant'] = 'Le bouton ci-dessous vous permet de payer et de vous inscrire en quelques minutes !'; $string['paymentrequired'] = 'Un paiement est requis pour accéder à ce cours.'; -$string['paymentsorry'] = 'Merci pour votre paiement ! Malheureusement, votre paiement n\'a pas encore été comptabilisé, et vous ne pouvez pas encore accéder au cours « $a->fullname ». Veuillez essayer d\'accéder au cours dans quelques secondes. Si vous n\'arrivez toujours pas à y accéder, merci de contacter l\'enseignant ou l\'adminstrateur du site'; +$string['paymentsorry'] = 'Merci pour votre paiement ! Malheureusement, votre paiement n\'a pas encore été comptabilisé, et vous ne pouvez pas encore accéder au cours « $a->fullname ». Veuillez essayer d\'accéder au cours dans quelques secondes. Si vous n\'arrivez toujours pas à y accéder, merci de contacter l\'enseignant ou l\'adminstrateur du site'; $string['paymentthanks'] = 'Merci pour votre paiement ! Vous êtes dès maintenant inscrit à votre cours :
                                « $a »'; $string['people'] = 'Personnes'; $string['personalprofile'] = 'Fiche personnelle'; $string['phone'] = 'Téléphone'; $string['phpinfo'] = 'Info PHP'; -$string['policyagree'] = 'Vous devez accepter de vous conformer à ce règlement pour continuer à utiliser ce site. Acceptez-vous le règlement ?'; -$string['policyagreement'] = 'Règlement du site'; -$string['policyagreementclick'] = 'Cliquer ici pour lire le règlement du site'; $string['popupwindow'] = 'Ouvrir le fichier dans une nouvelle fenêtre'; $string['potentialadmins'] = 'Administrateurs potentiels'; $string['potentialcreators'] = 'Responsables de cours potentiels'; $string['potentialstudents'] = 'Étudiants potentiels'; $string['potentialteachers'] = 'Enseignants potentiels'; $string['preferredlanguage'] = 'Langue préférée'; -$string['preferredtheme'] = 'Thème préféré'; $string['preview'] = 'Aperçu'; $string['previeworchoose'] = 'Aperçu ou choix d\'un thème'; $string['previous'] = 'Précédent'; -$string['profile'] = 'Profil'; $string['publicdirectory'] = 'Publication sur le site Moodle'; $string['publicdirectory0'] = 'Merci de ne pas publier ce site'; $string['publicdirectory1'] = 'Publier uniquement le nom de ce site'; @@ -830,14 +784,13 @@ $string['readinginfofrombackup'] = 'Lecture des informations de la sauvegarde'; $string['readme'] = 'LISEZMOI'; $string['recentactivity'] = 'Activité récente'; $string['recentactivityreport'] = 'Rapport complet des activités récentes...'; -$string['recreatedcategory'] = 'Catégorie $a recréée'; $string['refreshingevents'] = 'Mise à jour du calendrier'; $string['registration'] = 'Enregistrement de Moodle'; -$string['registrationcontact'] = 'Contact pour le public'; -$string['registrationcontactno'] = 'Non, je ne désire pas de formulaire de contact dans la liste des sites'; -$string['registrationcontactyes'] = 'Oui, j\'aimerais qu\'un formulaire de contact permette aux éventuels Moodleurs de me contacter'; $string['registrationemail'] = 'Notifications par courriel'; -$string['registrationinfo'] = '

                                Cette page vous permet d\'enregistrer votre site Moodle sur moodle.org. L\'enregistrement est gratuit. Le principal avantage de l\'enregistrement est l\'inscription à une liste de distribution courriel utilisée pour d\'importantes informations telles que des alertes de sécurité et des mises à jour de Moodle.

                                Vos données seront conservées confidentiellement, et ne seront jamais vendues ou divulguées à quiconque. Ces informations ne sont recueillies que pour l\'assistance techniques et à des fins de statistique au sujet de la communauté Moodle.

                                Si vous le désirez, le nom de votre site, votre pays et URL peuvent être ajoutés à la liste publique des sites Moodle.

                                Les nouveaux enregistrements sont vérifiés manuellement avant d\'être ajoutés à la liste. Toutefois, une fois dans cette liste, vous pouvez modifier votre enregistrement en tout temps en remplissant et validant à nouveau ce formulaire.

                                '; +$string['registrationinfo'] = '

                                Cette page vous permet d\'enregistrer votre site Moodle sur moodle.org. L\'enregistrement est gratuit. Le principal avantage de l\'enregistrement est l\'inscription à une liste de distribution courriel utilisée pour d\'importantes informations telles que des alertes de sécurité et des mises à jour de Moodle.

                                +

                                Vos données seront conservées confidentiellement, et ne seront jamais vendues ou divulguées à quiconque. Ces informations ne sont recueillies que pour l\'assistance techniques et à des fins de statistique au sujet de la communauté Moodle.

                                +

                                Si vous le désirez, le nom de votre site, votre pays et URL peuvent être ajoutés à la liste publique des sites Moodle.

                                +

                                Les nouveaux enregistrements sont vérifiés manuellement avant d\'être ajoutés à la liste. Toutefois, une fois dans cette liste, vous pouvez modifier votre enregistrement en tout temps en remplissant et validant à nouveau ce formulaire.

                                '; $string['registrationno'] = 'Non, je ne désire pas recevoir de courriels'; $string['registrationsend'] = 'Envoyer les informations d\'enregistrement à moodle.org'; $string['registrationyes'] = 'Oui, envoyez-moi les informations importantes'; @@ -846,7 +799,7 @@ $string['removecreator'] = 'Supprimer ce responsable de cours'; $string['removestudent'] = 'Supprimer cet étudiant'; $string['removeteacher'] = 'Supprimer cet enseignant'; $string['rename'] = 'Renommer'; -$string['renamefileto'] = 'Renommer $a en'; +$string['renamefileto'] = 'Renommer $a en'; $string['required'] = 'Nécessaire'; $string['requireskey'] = 'Ce cours nécessite une clef d\'inscription'; $string['requirespayment'] = 'Un paiement est requis pour accéder à ce cours'; @@ -861,9 +814,8 @@ $string['returningtosite'] = 'D $string['revert'] = 'Version précédente'; $string['role'] = 'Rôle'; $string['rss'] = 'RSS'; -$string['rssarticles'] = 'Nombre d\'articles RSS récents'; -$string['rsserror'] = 'Erreur lors de la lecture de données RSS'; $string['rsstype'] = 'Canal RSS de cette activité'; +$string['rssarticles'] = 'Nombre d\'articles RSS récents'; $string['savechanges'] = 'Enregistrer'; $string['saveto'] = 'Enregistrer sous'; $string['scale'] = 'Barème'; @@ -875,11 +827,13 @@ $string['scalesstandard'] = 'Bar $string['scalestip'] = 'Pour créer des barêmes personnalisés, utilisez le liens « Barêmes... » dans le menu d\'administration de votre cours.'; $string['schedule'] = 'Planification'; $string['scheduledbackupstatus'] = 'Statut de la sauvegarde planifiée'; -$string['screenshot'] = 'Copie d\'écran'; $string['search'] = 'Rechercher'; $string['searchagain'] = 'Rechercher de nouveau'; $string['searchcourses'] = 'Rechercher des cours'; -$string['searchhelp'] = 'Vous pouvez introduire plusieurs termes comme critères de recherche.

                                terme : rechercher toutes les occurences du terme dans le texte.
                                +terme : seules les correspondances exactes du terme (mot entier) seront trouvées.
                                -terme : ne pas inclure les résultats contenant ce terme.'; +$string['searchhelp'] = '

                                Vous pouvez introduire plusieurs termes comme critères de recherche.

                                +

                                terme : rechercher toutes les occurences du terme dans le texte.
                                ++terme : seules les correspondances exactes du terme (mot entier) seront trouvées.
                                +-terme : ne pas inclure les résultats contenant ce terme.

                                '; $string['searchresults'] = 'Résultats de la recherche'; $string['sec'] = 'sec'; $string['secs'] = 'secs'; @@ -888,7 +842,7 @@ $string['sections'] = 'Sections'; $string['select'] = 'Choisir'; $string['selectacountry'] = 'Choisir un pays'; $string['selectednowmove'] = '$a fichiers sélectionné pour déplacement. Allez maintenant vers la destination désirée et cliquez sur « Déplacer les fichiers ici »'; -$string['senddetails'] = 'Envoyer un nouveau mot de passe par courriel'; +$string['senddetails'] = 'Envoyer mes informations par courriel'; $string['separateandconnected'] = 'Appropriation du savoir liée ou détachée'; $string['serverlocaltime'] = 'Heure locale du serveur'; $string['settings'] = 'Paramètres'; @@ -896,7 +850,6 @@ $string['shortname'] = 'Nom abr $string['shortnametaken'] = 'Ce nom abrégé est déjà utilisé pour un autre cours ($a)'; $string['shortsitename'] = 'Nom abrégé du site (p. ex. un mot)'; $string['show'] = 'Afficher'; -$string['showadvancedsettings'] = 'Afficher les réglages avancés'; $string['showall'] = 'Afficher tous les $a'; $string['showallcourses'] = 'Afficher tous les cours'; $string['showalltopics'] = 'Afficher tous les sujets'; @@ -908,28 +861,22 @@ $string['showonlytopic'] = 'Afficher uniquement le sujet $a'; $string['showonlyweek'] = 'Afficher uniquement la semaine $a'; $string['showrecent'] = 'Afficher les événements récents'; $string['showreports'] = 'Afficher les rapports d\'activités'; -$string['showsettings'] = 'Afficher les réglages'; $string['showtheselogs'] = 'Afficher cet historique'; $string['since'] = 'Depuis'; -$string['sincelast'] = ' depuis la dernière connexion'; +$string['sincelast']= ' depuis la dernière connexion'; $string['site'] = 'Site'; -$string['sitedefault'] = 'Réglages par défaut du site'; -$string['siteerrors'] = 'Erreurs du site'; +$string['siteerrors'] = 'Erreur du site'; $string['sitefiles'] = 'Fichiers du site'; $string['sitelogs'] = 'Historiques du site'; $string['sitenews'] = 'Brèves'; -$string['sitepartlist0'] = 'Vous devez être un enseignant de la page d\'accueil pour être autorisé à voir la liste des participants de la page d\'accueil'; -$string['sitepartlist1'] = 'Yous devez être un enseignant pour être autorisé à voir la liste des participants de la page d\'accueil'; $string['sites'] = 'Sites'; $string['sitesection'] = 'Inclure une section descriptive'; $string['sitesettings'] = 'Page d\'accueil'; -$string['siteteachers'] = 'Enseignants de la page d\'accueil'; $string['size'] = 'Taille'; $string['sizeb'] = 'octets'; $string['sizegb'] = 'Go'; $string['sizekb'] = 'Ko'; $string['sizemb'] = 'Mo'; -$string['skypeid'] = 'Identifiant Skype'; $string['socialheadline'] = 'Forum public - derniers sujets'; $string['someallowguest'] = 'Les utilisateurs anonymes peuvent accéder à
                                certains cours'; $string['someerrorswerefound'] = 'Certaines informations manquent ou sont incorrectes. Voir ci-dessous.'; @@ -938,15 +885,13 @@ $string['specifyname'] = 'Vous devez indiquer un nom.'; $string['startdate'] = 'Date de début du cours'; $string['startsignup'] = 'Créer immédiatement un nouveau compte !'; $string['state'] = 'Canton, département'; -$string['statistics'] = 'Statistiques'; $string['status'] = 'Statuts'; $string['strftimedate'] = '%%d %%B %%Y'; +$string['strftimedayshort'] = '%%A %%d %%B'; $string['strftimedateshort'] = '%%d %%B'; $string['strftimedatetime'] = '%%d %%B %%Y, %%H:%%M'; $string['strftimedaydate'] = '%%A %%d %%B %%Y'; $string['strftimedaydatetime'] = '%%A %%d %%B %%Y, %%H:%%M'; -$string['strftimedayshort'] = '%%A %%d %%B'; -$string['strftimedaytime'] = '%%a, %%H:%%M'; $string['strftimemonthyear'] = '%%B %%Y'; $string['strftimerecent'] = '%%d %%b, %%H:%%M'; $string['strftimerecentfull'] = '%%a %%d %%b %%Y, %%H:%%M'; @@ -954,7 +899,6 @@ $string['strftimetime'] = '%%H:%%M'; $string['stringsnotset'] = 'Les textes suivants ne sont pas définis dans $a'; $string['studentnotallowed'] = 'Désolé, mais vous ne pouvez entrer dans ce cours en tant que « $a »'; $string['students'] = 'Étudiants'; -$string['studentsandteachers'] = 'Étudiants et enseignants'; $string['subcategories'] = 'Sous-catégories'; $string['success'] = 'Succès'; $string['summary'] = 'Résumé'; @@ -970,24 +914,21 @@ $string['thanks'] = 'Merci'; $string['theme'] = 'Thème'; $string['themes'] = 'Thèmes'; $string['themesaved'] = 'Nouveau thème enregistré'; -$string['thischarset'] = 'iso-8859-1'; +$string['thischarset'] = 'iso-8859-15'; $string['thisdirection'] = 'ltr'; -$string['thislanguage'] = 'Français'; +$string['thislanguage'] = 'Français'; $string['time'] = 'Heure'; $string['timezone'] = 'Fuseau horaire'; $string['to'] = 'À'; $string['today'] = 'Aujourd\'hui'; $string['todaylogs'] = 'Historique d\'aujourd\'hui'; -$string['toeveryone'] = 'pour tout le monde'; -$string['toomanybounces'] = 'Cette adresse de courriel a généré trop de rebonds. Vous devez la changer pour continuer.'; -$string['toomanytoshow'] = 'Trop d\'utilisateurs pour les afficher tous.'; +$string['toomanytoshow'] = 'Trop d\'utilisateurs pour les montrer tous'; $string['top'] = 'Niveau supérieur'; $string['topic'] = 'Sujet'; $string['topichide'] = 'Cacher ce thème de $a'; $string['topicoutline'] = 'Aperçu des thèmes'; $string['topicshow'] = 'Afficher ce thème pour $a'; $string['total'] = 'Total'; -$string['trysearching'] = 'Essayez plutôt la recherche.'; $string['turneditingoff'] = 'Quitter le mode édition'; $string['turneditingon'] = 'Activer le mode édition'; $string['undecided'] = 'Pas d\'avis'; @@ -996,7 +937,6 @@ $string['unenrolallstudents'] = 'D $string['unenrolallstudentssure'] = 'Voulez-vous vraiment désinscrire tous les étudiants de ce cours ?'; $string['unenrolme'] = 'Me désinscrire de $a'; $string['unenrolsure'] = 'Voulez-vous vraiment désinscrire $a de ce cours ?'; -$string['unfinished'] = 'Pas terminé'; $string['unknowncategory'] = 'Discipline inconnue'; $string['unlimited'] = 'Illimité'; $string['unpacking'] = 'Décompactage de $a'; @@ -1015,21 +955,10 @@ $string['updatinga'] = 'Modifier $a'; $string['updatingain'] = 'Modifier $a->what dans $a->in'; $string['upload'] = 'Déposer'; $string['uploadafile'] = 'Déposer un fichier'; -$string['uploadedfile'] = 'Le fichier a été déposé avec succès'; $string['uploadedfileto'] = 'Le fichier « $a->file » a été déposé dans le dossier « $a->directory »'; -$string['uploadedfiletoobig'] = 'Ce fichier dépasse la taille maximale (fixée à $a octets)'; -$string['uploadfailednotrecovering'] = 'Votre dépôt de fichier a échoué car un des fichiers, $a->name, a posé problème.
                                Voici une liste des problèmes rencontrés :
                                $a->problem
                                Impossible de rattrapper l\'erreur.'; -$string['uploadfilelog'] = 'Historique du dépôt du fichier $a'; -$string['uploadformlimit'] = 'Le fichier déposé dépasse la taille maximale fixée dans le formulaire'; -$string['uploadlabel'] = 'Titre :'; $string['uploadnofilefound'] = 'Aucun fichier trouvé. En avez-vous vraiment choisi un à déposer ?'; $string['uploadnotallowed'] = 'Il n\'est pas permis de déposer des fichiers'; -$string['uploadoldfilesdeleted'] = 'Les anciens fichiers de votre zone de dépôt ont été supprimés'; -$string['uploadpartialfile'] = 'Le fichier n\'a été que partiellement transféré'; $string['uploadproblem'] = 'Un problème inconnu est survenu durant le dépôt du fichier « $a » (peut-être est-il trop gros ?)'; -$string['uploadrenamedchars'] = 'Le nom du fichier a été changé de $a->oldname à $a->newname à cause de caractères non valides.'; -$string['uploadrenamedcollision'] = 'Le nom du fichier a été changé de $a->oldname à $a->newname en raison d\'un conflit de nom.'; -$string['uploadserverlimit'] = 'Le fichier déposé dépasse la taille maximale fixée par le serveur'; $string['uploadthisfile'] = 'Déposer ce fichier'; $string['uploadusers'] = 'Importer des utilisateurs'; $string['usedinnplaces'] = 'Utilisé à $a endroits'; @@ -1039,7 +968,6 @@ $string['userdata'] = 'Donn $string['userdeleted'] = 'Le compte de cet utilisateur a été supprimé'; $string['userdescription'] = 'Description'; $string['userfiles'] = 'Fichiers utilisateur'; -$string['userlist'] = 'Liste des utilisateurs'; $string['username'] = 'Nom d\'utilisateur'; $string['usernameexists'] = 'Ce nom d\'utilisateur existe déjà, veuillez en choisir un autre'; $string['usernotconfirmed'] = 'L\'utilisateur $a n\'a pas pu être confirmé'; @@ -1047,30 +975,9 @@ $string['userprofilefor'] = 'Profil de l\'utilisateur $a'; $string['users'] = 'Utilisateurs'; $string['usersnew'] = 'Nouveaux utilisateurs'; $string['userzones'] = 'Zones de l\'utilisateur'; -$string['usethiscourse'] = 'Utiliser ce cours'; $string['usingexistingcourse'] = 'Avec un cours existant'; $string['version'] = 'Version'; $string['view'] = 'Visualisation'; -$string['virusfound'] = 'Attention ! Clam AV a détecté un virus dans un fichier déposé par $a->user dans le cours $a->course. Voici la sortie du programme clamscan:'; -$string['virusfoundlater'] = 'Le fichier que vous avez déposé le $a->date, dont le nom est $a->filename (dans le cours $a->course) contient un virus. Voici un résumé de ce qui est arrivé à votre fichier : - -$a->action - -S\'il s\'agissait d\'un devoir rendu (ou de tout autre document), vous devez le déposer à nouveau afin que l\'enseignant puisse le consulter.'; -$string['virusfoundlateradmin'] = 'Attention ! Un fichier déposé par l\'utilisateur $a->user le $a->date, dont le nom est $a->filename (dans le cours $a->course) contient un virus. Voici un résumé de ce qui est arrivé à ce fichier : - -$a->action - -L\'utilisateur en a été informé.'; -$string['virusfoundlateradminnolog'] = 'Attention ! Un fichier de nom $a->filename contient un virus. Moodle n\'a pas été capable de déterminer l\'utilisateur qui l\'avait déposé. - -Voici un résumé de ce qui est arrivé à ce fichier : - -$a->action'; -$string['virusfoundsubject'] = '$a : Virus détecté !'; -$string['virusfounduser'] = 'Le fichier que vous avez déposé, $a->filename, a été inspecté par un anti-virus et un virus y a été découvert ! Votre fichier n\'a donc pas été déposé.'; -$string['virusplaceholder'] = 'Un virus a été détecté dans ce fichier déposé. Il a été déplacé ou détruit, et l\'utilisateur en a été informé.'; -$string['visibletostudents'] = 'Visible pour les étudiants'; $string['webpage'] = 'Page Web'; $string['week'] = 'Semaine'; $string['weekhide'] = 'Cacher cette semaine pour $a'; @@ -1100,13 +1007,11 @@ $string['writingeventsinfo'] = ' $string['writinggeneralinfo'] = 'Écriture des informations générales'; $string['writinggroupsinfo'] = 'Écriture des groupes'; $string['writingheader'] = 'Écriture de l\'entête'; -$string['writingmessagesinfo'] = 'Écriture des informations des messages'; $string['writingloginfo'] = 'Écriture des historiques'; $string['writingmoduleinfo'] = 'Écriture des modules'; $string['writingscalesinfo'] = 'Écriture des barèmes'; $string['writinguserinfo'] = 'Écriture des utilisateurs'; $string['wrongpassword'] = 'Mot de passe incorrect pour cet utilisateur'; -$string['yahooid'] = 'Identifiant Yahoo'; $string['yes'] = 'Oui'; $string['youareabouttocreatezip'] = 'Vous allez créer un fichier compacté (zip) contenant'; $string['youaregoingtorestorefrom'] = 'Vous allez restaurer depuis'; diff --git a/lang/fr/pix.php b/lang/fr/pix.php index 0146ee06561..de615d5062b 100644 --- a/lang/fr/pix.php +++ b/lang/fr/pix.php @@ -1,4 +1,5 @@ -
                                Créez d\'abord une catégorie. Vous pourrez ensuite créer ou modifier des questions. Vous pouvez choisir une de ces questions pour l\'ajouter à votre test dans l\'autre partie de la page.'; $string['addquestions'] = 'Ajouter des questions'; $string['addquestionstoquiz'] = 'Ajouter ces questions au test en cours'; -$string['addrandom1'] = ' << Ajouter '; -$string['addrandom2'] = 'questions aléatoires'; $string['addselectedtoquiz'] = 'Ajouter la sélection au test'; -$string['addtoquiz'] = 'Ajouter au test'; -$string['affectedstudents'] = 'Étudiants concernés'; $string['aiken'] = 'Format Aiken'; -$string['allinone'] = 'Illimité'; $string['allowreview'] = 'Autoriser la relecture'; $string['alreadysubmitted'] = 'Vous avez probablement déjà répondu ainsi à ce test'; $string['alternativeunits'] = 'Autres unités'; @@ -24,17 +18,14 @@ $string['answerswithacceptederrormarginmustbenumeric'] = 'Les r $string['answertoolong'] = 'Réponse trop longue après la ligne $a (255 caractères max.)'; $string['aon'] = 'Format AON'; $string['attempt'] = 'Tentative $a'; -$string['attemptduration'] = 'Temps utilisé'; -$string['attemptedon'] = 'Tentative le'; $string['attemptfirst'] = 'Première tentative'; $string['attemptincomplete'] = 'Cette tentative (de $a) n\'est pas encore terminée.'; $string['attemptlast'] = 'Dernière tentative'; $string['attemptquiznow'] = 'Faire le test maintenant'; $string['attempts'] = 'Tentatives'; $string['attemptsallowed'] = 'Nombre de tentatives autorisées'; -$string['attemptsexist'] = 'Quelqu\'un a déjà effectué ce test.
                                Vous ne pouvez plus y ajouter ou en retirer des questions.'; +$string['attemptsexist'] = 'Quelqu\'un a déjà effectué ce test'; $string['attemptsunlimited'] = 'Nombre illimité de tentatives'; -$string['back'] = 'Retour à la question précédente'; $string['backtoquiz'] = 'Retour à l\'édition du test'; $string['bestgrade'] = 'Meilleure note'; $string['blackboard'] = 'Format Blackboard'; @@ -45,56 +36,40 @@ $string['casesensitive'] = 'Casse des caract $string['caseyes'] = 'La casse des caractères doit être respectée'; $string['categories'] = 'Catégories'; $string['category'] = 'Catégorie'; -$string['categoryadded'] = 'La catégorie « $a » a été ajoutée'; -$string['categorydeleted'] = 'La catégorie « $a » a été supprimée'; $string['categoryinfo'] = 'Information sur la catégorie'; -$string['categorymove'] = 'La catégorie « $a->name » contient $a->count questions (certaines d\'entre elles peuvent être d\'anciennes questions cachées utilisées dans des tests existants).
                                Veuillez choisir une autre catégorie dans laquelle les déplacer.'; +$string['categorymove'] = 'La catégorie « $a->name » contient $a->count questions. Choisir une autre catégorie dans laquelle les déplacer.'; $string['categorymoveto'] = 'Les déplacer dans cette catégorie'; -$string['categorynoedit'] = 'Vous n\'avez pas les autorisations nécessaires pour modifier la catégorie « $a ».'; -$string['categoryupdated'] = 'La catégorie a été modifiée'; $string['checkanswer'] = 'Vérifier'; $string['choice'] = 'Proposition'; $string['choices'] = 'Propositions'; $string['choosedatasetproperties'] = 'Propriétés du jeu de données'; $string['close'] = 'Fermer la prévisualisation'; $string['confirmstartattempt'] = 'Le temps pour effectuer ce test est limité. Voulez-vous vraiment le commencer ?'; -$string['copyingfrom'] = 'Création d\'une copie de la question « $a »'; -$string['copyingquestion'] = 'Copie d\'une question'; $string['correctanswer'] = 'Bonne réponse'; $string['correctanswerformula'] = 'Formule de la bonne réponse'; $string['correctanswerlength'] = 'Chiffres significatifs'; $string['correctanswers'] = 'Bonnes réponses'; -$string['correctanswershows'] = 'La bonne réponse affiche'; $string['corrresp'] = 'Réponse correcte'; $string['countdown'] = 'Compte à rebours'; $string['countdownfinished'] = 'Le test se termine, vous devez envoyer vos réponses maintenant.'; $string['countdowntenminutes'] = 'Le test se terminera dans 10 minutes.'; $string['coursetestmanager'] = 'Format CTM'; -$string['createfirst'] = 'Vous devez d\'abord créer quelques questions à réponse courte.'; -$string['createmultiple'] = 'Ajouter plusieurs questions aléatoires au test'; +$string['createmultiple'] = 'Créer plusieurs questions'; $string['createnewquestion'] = 'Créer une question'; $string['custom'] = 'Format personnalisé'; $string['datasetdefinitions'] = 'Définitions du jeu de données réutilisable de la catégorie $a'; $string['datasetnumber'] = 'Nombre'; $string['daysavailable'] = 'Jours disponibles'; -$string['decimalformat'] = 'décimales'; -$string['decimalpoints'] = 'Points décimaux'; $string['decimals'] = ' avec $a '; $string['default'] = 'Défaut'; $string['defaultgrade'] = 'Note par défaut'; $string['defaultinfo'] = 'Catégorie par défaut pour les questions.'; -$string['deleteattemptcheck'] = 'Voulez-vous vraiment supprimer complètement ces tentatives ?'; -$string['deletequestioncheck'] = 'Voulez-vous vraiment supprimer « $a » ?'; -$string['deletequestionscheck'] = 'Voulez-vous vraiment supprimer les questions suivantes ?
                                $a
                                '; -$string['deleteselected'] = 'Supprimer la sélection'; +$string['deleteattemptcheck'] = 'Étes-vous vraiment sûr de vouloir supprimer complètement ces tentatives ?'; +$string['deletequestioncheck'] = 'Êtes-vous certain de vouloir supprimer « $a » ?'; $string['description'] = 'Description'; $string['discrimination'] = 'Index de discrimination'; -$string['displayoptions'] = 'Options d\'affichage'; -$string['download'] = 'Cliquer pour télécharger le fichier exporté'; -$string['downloadextra'] = '(le fichier est aussi déposé dans les fichiers du cours, dans le dossier /quiz)'; $string['eachattemptbuildsonthelast'] = 'Chaque tentative complète la précédente'; $string['editcategories'] = 'Modifier les catégories'; -$string['editcategory'] = 'Modifier la catégorie'; $string['editdatasets'] = 'Modifier les jeux de données'; $string['editingcalculated'] = 'Modifier une question calculée'; $string['editingdescription'] = 'Modifier une description'; @@ -135,7 +110,6 @@ $string['functiontakestwoargs'] = 'La fonction $a doit avoir exactement deux arg $string['generatevalue'] = 'Générer une nouvelle valeur entre'; $string['geometric'] = 'Géométrique'; $string['gift'] = 'Format GIFT'; -$string['grade'] = 'Note'; $string['gradeaverage'] = 'Note moyenne'; $string['gradehighest'] = 'Note la plus haute'; $string['grademethod'] = 'Méthode de notation'; @@ -154,12 +128,10 @@ $string['keptcategory3'] = 'Un lien d\'un jeu de donn $string['keptlocal1'] = 'Une lettre du même jeu de données privé de lettres que précédemment'; $string['keptlocal2'] = 'Un fichier du même jeu de données privé de fichiers que précédemment'; $string['keptlocal3'] = 'Un lien du même jeu de données privé de liens que précédemment'; -$string['learnwise'] = 'Format Learnwise'; $string['link'] = 'Lien'; $string['listitems'] = 'Liste des questions du test'; $string['literal'] = 'Lettre'; $string['loguniform'] = 'chiffres, distribution logarithmique uniforme'; -$string['makecopy'] = 'Enregistrer comme nouvelle question'; $string['marks'] = 'Points'; $string['match'] = 'Appariement'; $string['matchanswer'] = 'Réponse correspondante'; @@ -171,10 +143,9 @@ $string['missingcorrectanswer'] = 'La r $string['missingname'] = 'Le nom de la question doit être indiqué'; $string['missingquestion'] = 'Étiquette de question manquante après la ligne $a'; $string['missingquestiontext'] = 'Le libellé de la question doit être indiqué'; -$string['missingword'] = 'Format « mot manquant »'; +$string['missingword'] = 'Format « mot manquant »'; $string['modulename'] = 'Test'; $string['modulenameplural'] = 'Tests'; -$string['moveto'] = ' Déplacer vers >>'; $string['multianswer'] = 'Format Cloze'; $string['multichoice'] = 'Choix multiples'; $string['name'] = 'Nom'; @@ -186,12 +157,10 @@ $string['newlocal2'] = 'Un fichier d\'un nouveau jeu de donn $string['newlocal3'] = 'Un lien d\'un nouveau jeu de données de liens qui ne sera utilisé que pour cette question'; $string['noanswers'] = 'Aucune réponse n\'a été sélectionnée !'; $string['noattempts'] = 'Aucune tentative n\'a été réalisée sur ce test'; -$string['noattemptsmatchingfilter'] = 'Aucune tentative de $a correpondant à ces initiales'; $string['nodataset'] = 'rien - ce n\'est pas un caractère joker'; $string['nominal'] = 'Nominal'; $string['nomoreattempts'] = 'Aucune autre tentative n\'est autorisée'; $string['nopossibledatasets'] = 'Aucun jeu de données possible'; -$string['noquestionintext'] = 'Le texte de la question ne contient aucune question incorporée'; $string['noquestions'] = 'Aucune question n\'a été encore ajoutée'; $string['noresponse'] = 'Pas de response'; $string['noreview'] = 'Vous n\'êtes pas autorisé à relire ce test'; @@ -204,23 +173,18 @@ $string['numerical'] = 'Num $string['optional'] = 'facultatif'; $string['overdue'] = 'En retard'; $string['paragraphquestion'] = 'Question paragraphe non supportée à la ligne $a. La question sera ignorée.'; -$string['parent'] = 'Catégorie supérieure'; $string['passworderror'] = 'La clef n\'est pas correcte'; $string['percentcorrect'] = 'Pourcentage de réponses correctes'; -$string['popup'] = 'Afficher le test dans une fenêtre « sécurisée »'; $string['preview'] = 'Prévisualisation'; $string['previewquestion'] = 'Prévisualiser la question'; $string['publish'] = 'Publier'; $string['publishedit'] = 'Pour ajouter ou modifier une question de cette catégorie, vous devez avoir ces permissions dans le cours publiant cette catégorie.'; $string['qti'] = 'Format IMS QTI'; $string['question'] = 'Libellé de la question'; -$string['questioninuse'] = 'La question « $a->questionname » est actuellement utilisée dans
                                $a->quiznames
                                Elle ne sera pas retirée de ce(s) test(s), mais seulement de la catégorie.'; +$string['questioninuse'] = 'La question « $a » est actuellement utilisée :'; $string['questionname'] = 'Nom de la question'; $string['questionnametoolong'] = 'Nom de la question à la ligne $a trop long (255 caractères max.). Le nom a été tronqué.'; $string['questions'] = 'Questions'; -$string['questionsinuse'] = '(* Les questions marquées d\un astérisque sont utilisées dans certains tests. Ces questions ne seront pas supprimées de ces tests, mais seulement de la catégorie.)'; -$string['questionsperpage'] = 'Nombre maximal de questions par page'; -$string['questiontypesetupoptions'] = 'Options pour les types de questions :'; $string['quizavailable'] = 'Le test est disponible jusqu\'au $a'; $string['quizclose'] = 'Fermer le test'; $string['quizclosed'] = 'Ce test a été fermé le $a'; @@ -237,17 +201,13 @@ $string['randomsamatchcreate'] = 'Cr $string['randomsamatchintro'] = 'Pour chacune des questions suivantes, choisissez dans le menu la réponse correspondante.'; $string['randomsamatchnumber'] = 'Nombre de questions à sélectionner'; $string['readytosend'] = 'Vous êtes sur le point d\'envoyer votre test à l\'évaluation. Êtes-vous certain de vouloir continuer ?'; -$string['reattemptquiz'] = 'Effectuer de nouveau le test'; $string['recentlyaddedquestion'] = 'Question ajoutée récemment !'; -$string['recurse'] = 'Afficher aussi les questions des sous-catégories'; $string['regrade'] = 'Recalculer les notes de toutes les tentatives'; $string['regradecomplete'] = 'Toutes les notes ont été recalculées'; $string['regradecount'] = '$a->changed sur $a->attempt notes ont été changées'; $string['relative'] = 'Relatif'; $string['remove'] = 'Supprimer'; $string['rename'] = 'Renommer'; -$string['replace'] = 'Remplacer'; -$string['replacementoptions'] = 'Remplacer dans'; $string['report'] = 'Rapports'; $string['reportfullstat'] = 'Statistiques détaillées'; $string['reportmulti_percent'] = 'Pourcentages multiples'; @@ -261,32 +221,20 @@ $string['requirepasswordmessage'] = 'Vous devez conna $string['requiresubnet'] = 'Restriction par adresse IP'; $string['reuseifpossible'] = 'réutiliser supprimés précédemment'; $string['review'] = 'Relecture'; -$string['reviewnever'] = 'Ne jamais permettre la relecture'; -$string['reviewafter'] = 'Permettre la relecture après la fermeture du test'; -$string['reviewbefore'] = 'Permettre la relecture durant l\'ouverture du test'; -$string['reviewalways'] = 'Permettre la relecture n\'importe quand'; $string['save'] = 'Enregistrer'; -$string['saveandedit'] = 'Enregistrer et effectuer des modifications'; $string['savegrades'] = 'Enregistrer les notes'; $string['savemyanswers'] = 'Enregistrer mes réponses'; $string['savequiz'] = 'Enregistrer l\'ensemble du test'; $string['score'] = 'Score brut'; $string['select'] = 'Choisir'; $string['selectall'] = 'Tout sélectionner'; -$string['selectedattempts'] = 'Tentatives sélectionnées...'; -$string['selectnone'] = 'Tout désélectionner'; $string['selectcategoryabove'] = 'Choisir une catégorie ci-dessus'; $string['shortanswer'] = 'Réponse courte'; $string['show'] = 'Afficher'; $string['showcorrectanswer'] = 'Dans le feedback,
                                afficher les réponses correctes ?'; -$string['showdetailedmarks'] = 'Afficher le détail des points'; $string['showfeedback'] = 'Après le test, afficher le feedback ?'; -$string['showhidden'] = 'Afficher également les anciennes questions'; -$string['shownoattempts'] = 'Afficher les étudiants sans tentative'; -$string['showteacherattempts'] = 'Afficher les tentatives des enseignants'; $string['shuffleanswers'] = 'Mélanger les réponses'; $string['shufflequestions'] = 'Mélanger les questions'; -$string['significantfiguresformat'] = 'chiffres significatifs'; $string['significantfigures'] = ' avec $a '; $string['subneterror'] = 'Désolé, ce test a été configuré de façon à ne pouvoir être effectué que depuis certains ordinateurs. Votre ordinateur n\'est actuellement pas autorisé.'; $string['substitutedby'] = 'sera remplacé par'; @@ -300,7 +248,6 @@ $string['timesup'] = 'Le chrono est enclench $string['tolerance'] = 'Tolerance'; $string['tolerancetype'] = 'Type de tolerance'; $string['toomanyrandom'] = 'Le nombre de questions aléatoires demandées est plus grand que le total ($a) des questions de cette catégorie !'; -$string['top'] = 'Catégorie racine'; $string['true'] = 'Vrai'; $string['truefalse'] = 'Vrai/Faux'; $string['type'] = 'Type'; @@ -315,8 +262,6 @@ $string['webct'] = 'Format WebCT'; $string['wildcard'] = 'Caractère joker'; $string['withsummary'] = 'avec des statistiques résumées'; $string['wronggrade'] = 'Note incorrecte (après la ligne $a) :'; -$string['xml'] = 'Format XML Moodle'; $string['yourfinalgradeis'] = 'Votre note finale pour ce test est $a'; -$string['zerosignificantfiguresnotallowed'] = 'La bonne réponse ne peut pas n\'avoir aucun chiffre significatif !'; ?> diff --git a/lang/fr/resource.php b/lang/fr/resource.php index f63e751aa42..b0505d9ad2e 100644 --- a/lang/fr/resource.php +++ b/lang/fr/resource.php @@ -2,12 +2,9 @@ $string['addresource'] = 'Ajouter une ressource'; $string['chooseafile'] = 'Choisir ou déposer un fichier'; -$string['chooseparameter'] = 'Choisir un paramètre'; -$string['configallowlocalfiles'] = 'Lors de la création d\'une nouvelle ressource de type fichier, permettre des liens vers les fichiers disponibles sur un système de fichiers local, par exemple sur un CD ou sur un disque dur. Cela peut être utile dans une classe où tous les étudiants ont accès a un volume réseau commun ou si des fichiers sur un CD sont nécessaires. Il est possible que l\'utilisation de cette fonctionnalité requière une modification des réglages de sécurité de votre navigateur.'; $string['configdefaulturl'] = 'Ce champ permet de pré-remplir le champ de l\'URL qui apparaît lors de la création d\'une ressource de type URL.'; $string['configfilterexternalpages'] = 'L\'activation de ce réglage permettra le filtrage des ressources externes (pages web, fichiers HTML déposés) par les filtres définis dans le site (comme les liens des glossaires). Lorsque ce réglage est actif, l\'affichage de vos pages sera ralenti de façon sensible. À utiliser avec précaution.'; $string['configframesize'] = 'Quand un page web ou un fichier est affiché dans un cadre (frame), cette valeur indique (en pixels) la taille du cadre contenant la navigation (en haut de la fenêtre).'; -$string['configparametersettings'] = 'Détermine si par défaut la zone de configuration des paramètres est affichée ou non, lors de l\'ajout de nouvelles ressources. Après la première utilisation, ce réglage devient individuel.'; $string['configpopup'] = 'Lors de l\'ajout d\'une ressource pouvant être affichée dans une fenêtre pop-up, cette option doit-elle être activée par défaut ?'; $string['configpopupdirectories'] = 'Les fenêtres pop-up affichent le lien du dossier par défaut'; $string['configpopupheight'] = 'Hauteur par défaut des fenêtres pop-up'; @@ -18,53 +15,42 @@ $string['configpopupscrollbars'] = 'Les barres de d $string['configpopupstatus'] = 'La barre d\'état est affichée par défaut dans les fenêtres pop-up'; $string['configpopuptoolbar'] = 'La barre des outils est affichée par défaut dans les fenêtres pop-up'; $string['configpopupwidth'] = 'Largeur par défaut des fenêtres pop-up'; -$string['configsecretphrase'] = 'Cette phrase secrète est utilisée pour générer le code crypté pouvant être envoyé comme paramètre à certaines ressources. Ce code crypté est fabriqué en concaténant une valeur md5 de l\'adresse IP du current_user et de cette phrase secrète, par exemple : code = md5(IP.secretphrase). Ceci permet à la ressource recevant le paramètre de vérifier la connexion pour plus de sécurité.'; $string['configwebsearch'] = 'URL affichée lors de l\'ajout d\'une page web ou d\'un lien, pour permettre à l\'utilisateur de rechercher l\'URL désirée.'; -$string['configwindowsettings'] = 'Détermine si par défaut la zone de configuration des fenêtres est affichée ou non, lors de l\'ajout de nouvelles ressources. Après la première utilisation, ce réglage devient individuel.'; $string['directlink'] = 'Lien direct vers ce fichier'; $string['directoryinfo'] = 'Tous les fichiers du dossier choisi seront affichés.'; -$string['display'] = 'Fenêtre'; $string['editingaresource'] = 'Modifier une ressource'; $string['encryptedcode'] = 'Code chiffré'; $string['example'] = 'Exemple'; $string['exampleurl'] = 'http://www.exemple.fr/dossier/fichier.html'; $string['fetchclienterror'] = 'Votre navigateur web a rencontré une erreur en essayant de charger la page web (peut-être une mauvaise URL).'; $string['fetcherror'] = 'Une erreur est survenue lors du chargement de la page web.'; -$string['fetchservererror'] = 'Une erreur est survenue lors du chargement de la page web sur le serveur qui l\'héberge.'; +$string['fetchservererror'] = 'Une erreur est survenue lors du chargement de la page web sur le serveur qui l\'héberge.

                                '; $string['filename'] = 'Nom du fichier'; $string['filtername'] = 'Liens automatiques des noms des ressources'; $string['frameifpossible'] = 'Afficher la ressource dans un cadre pour conserver les menus de navigation du site'; -$string['fulltext'] = 'Texte de la page'; +$string['fulltext'] = 'Texte en format Moodle'; $string['htmlfragment'] = 'Fragment de code HTML'; -$string['localfile'] = 'Fichier local'; -$string['localfilechoose'] = 'Choisir un fichier local (par exemple sur CD)'; -$string['localfileinfo'] = '

                                Choisir un fichier local sur votre ordinateur. Le fichier ne sera pas téléchargé sur le site web, mais Moodle cherchera le même fichier sur l\'ordinateur des utilisateurs désirant consulter la ressource.

                                Ceci est utile surtout si vous avez sur un CD-Rom de très gros fichiers que vous désirez distribuer aux participants. Chaque participant peut choisir lui-même le chemin d\'accès local de ces fichiers, en modifiant son profil utilisateur.

                                '; -$string['localfilehelp'] = 'Aide pour l\'utilisation de fichiers locaux'; -$string['localfilepath'] = 'Pour choisir votre propre chemin d\'accès à cette ressource, veuillez sélectionner un fichier sur un volume (par exemple un CD-Rom) de votre ordinateur où se trouve la ressource. Le fichier ne sera pas téléchargé, mais le chemin d\'accès sera enregistré et utilisé pour chacun des fichiers locaux'; -$string['localfileselect'] = 'Choisir le chemin d\'accès de ce fichier'; $string['maindirectory'] = 'Dossier principal'; $string['modulename'] = 'Ressource'; $string['modulenameplural'] = 'Ressources'; $string['neverseen'] = 'Jamais consulté'; -$string['newdirectories'] = 'Afficher la barre des liens'; +$string['newdirectories'] = 'Afficher les liens de dossier'; $string['newfullscreen'] = 'Remplir tout l\'écran'; $string['newheight'] = 'Hauteur de fenêtre par défaut (en pixels)'; $string['newlocation'] = 'Afficher la barre d\'adresse'; -$string['newmenubar'] = 'Afficher les menus'; +$string['newmenubar'] = 'Afficher la barre des menus'; $string['newresizable'] = 'Permettre le redimensionnement de la fenêtre'; -$string['newscrollbars'] = 'Afficher les barres de défilement'; +$string['newscrollbars'] = 'Permettre le défilement de la fenêtre'; $string['newstatus'] = 'Afficher la barre d\'état'; $string['newtoolbar'] = 'Afficher la barre d\'outils'; $string['newwidth'] = 'Largeur de fenêtre par défaut (en pixels)'; $string['newwindow'] = 'Nouvelle fenêtre'; $string['newwindowopen'] = 'Afficher cette ressource dans une nouvelle fenêtre'; -$string['notallowedlocalfileaccess'] = 'L\'accès aux fichiers locaux est actuellement désactivé. Cette ressource n\'est donc pas disponible.'; $string['note'] = 'Remarque'; $string['notefile'] = 'Pour déposer des fichiers dans le cours (afin qu\'ils apparaissent dans cette liste), utiliser le Gestionnaire de fichiers.'; $string['notypechosen'] = 'Vous devez choisir un type. Utilisez le bouton « Retour » de votre navigateur et recommencez.'; $string['pagedisplay'] = 'Afficher cette ressource dans la fenêtre courante'; $string['pagewindow'] = 'Même fenêtre'; -$string['pan'] = 'Pan'; $string['parameter'] = 'Paramètre'; $string['parameters'] = 'Paramètres'; $string['popupresource'] = 'Cette ressource apparaîtra dans une fenêtre pop-up'; @@ -76,9 +62,7 @@ $string['resourcetypehtml'] = 'Composer une page web'; $string['resourcetypelabel'] = 'Insérer une étiquette'; $string['resourcetypetext'] = 'Composer une page de texte'; $string['searchweb'] = 'Rechercher une page web'; -$string['serverurl'] = 'URL du serveur ($a->wwwroot)'; $string['variablename'] = 'Nom de la variable'; -$string['vol'] = 'Vol'; // The following strings are to be deleted after 1.4 release $string['resourcetype1'] = 'Référence'; diff --git a/lang/fr/scorm.php b/lang/fr/scorm.php index 801d8663f93..980485a6818 100755 --- a/lang/fr/scorm.php +++ b/lang/fr/scorm.php @@ -5,17 +5,14 @@ $string['modulename'] = 'Scorm'; $string['modulenameplural'] = 'Scorms'; #------------------------------------------------------------ -$string['asset'] = 'Élément'; -$string['attr_error'] = 'Valeur incorrecte de l\'attribut ($a->attr) dans la balise $a->tag.'; $string['autocontinue'] = 'Continuer automatiquement'; -$string['badmanifest'] ='Erreurs dans le fichier « manifest » : veuillez consulter l\'historique des erreurs'; $string['browse'] = 'Consulter'; $string['browsed'] = 'Consulté'; $string['browsemode'] = 'Mode consultation'; $string['chooseapacket'] = 'Sélectionner ou mettre à jour un paquet SCORM'; $string['configframesize'] = 'Cette valeur est la taille (en pixels) du cadre supérieur (contenant la navigation) lors de l\'affichage d\'un paquet scorm.'; -$string['configpopup'] = 'Si un paquet scorm peut s\'afficher dans une fenêtre pop-up, cette option doit-elle être activée par défaut lors de l\'ajout d\un paquet scorm ?'; -$string['configpopupheight'] = 'Hauteur par défaut des fenêtres pop-up ?'; +$string['configpopup'] = 'Cette option doit-elle être activée par défaut lors de l\'ajout d\un nouveau paquet scorm capable de s\'afficher dans une fenêtre pop-up ?'; +$string['configpopupheight'] = 'Hauteur par défaut des nouvelles fenêtres pop-up ?'; $string['configpopupresizable'] = 'Les fenêtres pop-up doivent-elles être redimensionnables par défaut ?'; $string['configpopupscrollbars'] = 'Les fenêtres pop-up doivent-elles avoir des barres de défilement par défaut ?'; $string['configpopupstatus'] = 'Les fenêtres pop-up doivent-elles avoir une barre d\'état par défaut ?'; @@ -24,20 +21,9 @@ $string['completed'] = 'Termin $string['coursestruct'] = 'Structure du cours'; $string['coursepacket'] = 'Paquet du cours'; $string['datadir'] = 'Erreur du système de fichier : impossible de créer le dossier des données du cours'; -$string['domxml'] = 'Librairie externe DOMXML'; $string['entercourse'] = 'Entrer dans le cours SCORM'; -$string['errorlogs'] = 'Historique des erreurs'; $string['failed'] = 'Échec'; -$string['found'] = 'Fichier « manifest » trouvé'; -$string['gradeaverage'] = 'Note moyenne'; -$string['gradehighest'] = 'Note la plus haute'; -$string['grademethod'] = 'Méthode de notation'; -$string['gradescoes'] = 'Situation des SCOs'; -$string['gradesum'] = 'Note totale'; -$string['guestsno'] = 'Les visiteurs anonymes ne peuvent accéder aux cours SCORM'; $string['incomplete'] = 'Incomplet'; -$string['missing_attribute'] = 'Attribut $a->attr manquant dans la balise $a->tag'; -$string['missing_tag'] = 'Balise $a->tag manquante'; $string['newheight'] = 'Hauteur par défaut (en pixels)'; $string['newresizable'] = 'Permettre le redimensionnement de la fenêtre'; $string['newscrollbars'] = 'Afficher les barres de défilement'; @@ -46,37 +32,22 @@ $string['newwidth'] = 'Largeur par d $string['newwindow'] = 'Nouvelle fenêtre'; $string['newwindowopen'] = 'Afficher ce paquet scorm dans une nouvelle fenêtre'; $string['next'] = 'Continuer'; -$string['no_attributes'] = 'La balise $a->tag doit avoir des attributs'; -$string['no_children'] = 'La balise $a->tag doit avoir des descendants'; $string['nomanifest'] = 'Aucun descriptif trouvé'; $string['noreports'] = 'Pas de rapport à afficher'; $string['normal'] = 'Normal'; -$string['not_corr_type'] = 'Erreur de type pour la balise $a->tag'; $string['notattempted'] = 'Aucune tentative'; $string['mode'] = 'Mode'; $string['organizations'] = 'Organisations'; $string['packagedir'] = 'Erreur du système de fichier : impossible de créer le dossier du paquet'; $string['passed'] = 'Réussi'; -$string['php5'] = 'PHP 5 (librairie DOMXML native)'; -$string['position_error'] = 'La balise $a->tag ne peut pas être un descendant de la balise $a->parent'; $string['prev'] = 'Précédent'; $string['regular'] = 'Descriptif normal'; $string['report'] = 'Rapport'; $string['review'] = 'Relecture'; $string['scoes'] = 'SCOs'; $string['score'] = 'Résultat'; -$string['syntax'] = 'Erreur de syntaxe'; -$string['tag_error'] = 'Balise inconne ($a->tag) avec ce contenu : $a->value'; -$string['too_many_attributes'] = 'La balise $a->tag a trop d\'attributs'; -$string['too_many_children'] = 'La balise $a->tag a trop de descendants'; $string['trackingloose'] = 'Attention ! Les données du suivi de ce paquet SCORM seront perdues !'; $string['validation'] = 'Résultat de la validation'; -$string['validationtype'] = 'Ce réglage détermine la librairie DOMXML utilisée pour la validation du fichier « manifest » des SCORM. Si vous ne savez pas de quoi il s\'agit, ne modifiez pas la valeur.'; $string['validateascorm'] = 'Valider un paquet SCORM'; -$string['versionwarning'] = 'La version du fichier « manifest » est antérieure à 1.3, avertissement à la balise $a->tag'; $string['viewallreports'] = 'Afficher les rapports des $a tentatives'; -$string['display'] = 'Affichage'; -$string['expcoll'] = 'Développer/Minimiser'; -$string['exit'] = 'Sortir du cours SCORM'; - ?> \ No newline at end of file diff --git a/lang/fr/survey.php b/lang/fr/survey.php index dfff50b4656..81fc0fb6db7 100644 --- a/lang/fr/survey.php +++ b/lang/fr/survey.php @@ -1,4 +1,5 @@ -idéale (désirée) et réelle (vécue) dans ce cours. +Chacune des 24 affirmations ci-dessous vous demande de comparer votre expérience idéale (désirée) et réelle (vécue) dans ce cours. Il n\'y a pas de réponse « juste » ou « fausse » ; nous ne nous intéressons qu\'à votre opinion. Soyez assuré que vos réponses seront traitées avec le maximum de confidentialité, et qu\'elles n\'auront aucune influence sur votre note finale. @@ -153,7 +154,7 @@ $string['collesm6short'] = 'Interpr $string['collesmintro'] = 'Dans ce cours en ligne ...'; $string['collespintro'] = 'L\'objet de cette consultation est de nous aider à comprendre à quel point ce cours en ligne vous a permis d\'apprendre. -Chacune des 24 affirmations ci-dessous vous interroge sur votre expérience idéale (désirée) dans ce cours. +Chacune des 24 affirmations ci-dessous vous interroge sur votre expérience idéale (désirée) dans ce cours. Il n\'y a pas de réponse « juste » ou « fausse » ; nous ne nous intéressons qu\'à votre opinion. Soyez assuré que vos réponses seront traitées avec le maximum de confidentialité, et qu\'elles n\'auront aucune influence sur votre note finale. diff --git a/lang/fr/timezones.php b/lang/fr/timezones.php deleted file mode 100644 index 805ec1f6936..00000000000 --- a/lang/fr/timezones.php +++ /dev/null @@ -1,374 +0,0 @@ - diff --git a/lang/fr/wiki.php b/lang/fr/wiki.php index 7686bc89fc6..cb2dee004c9 100644 --- a/lang/fr/wiki.php +++ b/lang/fr/wiki.php @@ -2,11 +2,7 @@ $string['action'] = '-- Action --'; $string['administration'] = 'Administration'; -$string['allowremovepages'] = 'Permettre « Supprimer des pages »'; -$string['allowrevertchanges'] = 'Permettre « Rétablir tous les changements »'; -$string['allowsetpage'] = 'Permettre « Changer les propriétés »'; -$string['allowstrippages'] = 'Permettre « Purger les pages »'; -$string['attachments'] = 'Cette page possède des annexes'; +$string['attachments'] = 'Annexe de la page'; $string['author'] = 'Auteur'; $string['authorfieldpattern'] = 'Author field pattern'; $string['authorfieldpatternerror'] = 'Veuillez saisir un auteur.'; @@ -35,7 +31,6 @@ $string['deleteversions'] = 'Combien de derni $string['deleteversionserror'] = 'Veuillez saisir un numéro de version correct.'; $string['diff'] = 'Diff'; $string['differences'] = 'Différences entre les versions $a->new_ver et $a->old_ver de $a->pagename.'; -$string['disablecamel'] = 'Désactiver les liens CamelCase'; $string['disabledpage'] = 'Cette page n\'est actuellement pas disponible.'; $string['disabledpage'] = 'Page désactivées'; $string['doesnotexist'] = 'Cette page n\'existe pas encore. si vous voulez la créer, veuillez cliquer sur le bouton modifier.'; @@ -83,7 +78,7 @@ $string['html'] = 'Format HTML'; $string['htmlmode'] = 'Mode HTML'; $string['htmlonly'] = 'HTML uniquement'; $string['index'] = 'Index'; -$string['infoaboutpage'] = 'Historique de :'; +$string['infoaboutpage'] = 'Information sur la page'; $string['initialcontent'] = 'Choisir une page initiale'; $string['invalidroot'] = 'Vous n\'êtes pas autorisé à accéder à la page racine actuelle, et donc aucune carte du site ne peut être créée.'; $string['lastchanged'] = 'Dernière modification le $a'; @@ -111,7 +106,6 @@ $string['nothingtostrip'] = 'Il n\'y a pas de pages avec plus d\'une version.'; $string['nowikicreated'] = 'Aucune page n\'a été créée dans ce wiki.'; $string['of'] = 'sur'; $string['offline'] = 'HORS-LIGNE'; -$string['optional'] = 'Facultatif'; $string['orphanedpage'] = 'Page orpheline'; $string['orphanedpages'] = 'Pages orphelines'; $string['otherwikis'] = 'Autres wikis'; @@ -150,15 +144,9 @@ $string['strippagecheck'] = 'Voulez-vous vraiment purger les anciennes versions $string['strippages'] = 'Purger les pages'; $string['studentadminoptions'] = 'Administration des réglages étudiant'; $string['submit'] = 'Envoyer'; -$string['tabattachments']='Annexes'; -$string['tabedit']='Modifier'; -$string['tabinfo']='Historique'; -$string['tablinks']='Liens'; -$string['tabview']='Afficher'; $string['thanksforcontribution'] = 'Merci pour votre contribution.'; $string['thispageisntlinkedfromanywhereelse'] = 'Aucun lien n\'existe vers cette page.'; $string['updatedpages'] = 'Pages modifiées'; -$string['updatedwikipages'] = 'Pages wiki modifiées'; $string['uplerror'] = 'Désolé, votre fichier n\'a pas pu être déposé.'; $string['uplinsect'] = 'Déposer dans'; $string['uplnewnam'] = 'Enregistrer sous un nom différent'; @@ -186,4 +174,10 @@ $string['withbinaries'] = 'Inclure les contenus binaires'; $string['withvirtualpages'] = 'Inclure les liens wiki'; $string['wrongversionrange'] = '$a n\'est pas un intervalle correct !'; +$string['tabedit']='Modifier'; +$string['tabview']='Afficher'; +$string['tabinfo']='Info'; +$string['tablinks']='Liens'; +$string['tabattachments']='Annexes'; + ?> \ No newline at end of file diff --git a/lang/fr/workshop.php b/lang/fr/workshop.php index 59645871f85..bbd5846b564 100755 --- a/lang/fr/workshop.php +++ b/lang/fr/workshop.php @@ -1,98 +1,67 @@ -évaluation'; $string['agreetothisassessment'] = 'Accepter cette évaluation'; $string['allgradeshaveamaximumof'] = 'La note maximale est de $a'; $string['allowresubmit'] = 'Permettre la remise de plusieurs travaux'; -$string['allsubmissions'] = 'Tous les travaux'; $string['alreadyinphase'] = 'Déjà à la phase $a'; $string['amendassessmentelements'] = 'Modifier les éléments d\'évaluation'; $string['amendtitle'] = 'Modifier le titre'; -$string['analysis'] = 'Analyse'; $string['analysisofassessments'] = 'Analyse des évaluations'; $string['assess'] = 'Évaluer'; $string['assessedon'] = 'Évalué le $a'; $string['assessment'] = 'Évaluation'; $string['assessmentby'] = 'Évaluation par $a'; $string['assessmentdropped'] = 'Évaluation rejetée'; -$string['assessmentend'] = 'Fin des évaluations'; -$string['assessmentendevent'] = 'Fin des évaluations pour $a'; $string['assessmentgrade'] = 'Note de l\'évaluation : $a'; $string['assessmentnotyetagreed'] = 'Il n\'a pas encore d\'accord sur l\'évaluation'; -$string['assessmentnotyetgraded'] = 'Cette évaluation n\'a pas encore été notée'; -$string['assessmentof'] = 'Évaluation de $a'; $string['assessmentofresubmission'] = 'Cette évaluation est effectuée sur un travail révisé.
                                Ce formulaire contient vos commentaires et notes sur une version précédente.
                                Veuillez les modifier après avoir consulté le nouveau travail.'; $string['assessmentofthissubmission'] = 'Évaluation de ce travail'; $string['assessments'] = 'Évaluations'; $string['assessmentsareok'] = 'Les évaluations sont correctes'; -$string['assessmentsby'] = 'Évaluations par les $a'; +$string['assessmentsby'] = 'Évalués par les $a'; $string['assessmentsdone'] = 'Évaluations terminées'; $string['assessmentsexcluded'] = 'Nombre d\'évaluations rejetées pour cet $a'; $string['assessmentsmustbeagreed'] = 'Un accord doit avoir lieu sur les évaluations'; -$string['assessmentstart'] = 'Début des évaluations'; -$string['assessmentstartevent'] = 'Début des évaluations pour $a'; $string['assessmentwasagreedon'] = 'Un accord a eu lieu sur l\'évaluation le $a'; $string['assessor'] = 'Évaluateur'; -$string['assessthisassessment'] = 'Noter cette évaluation'; $string['assessthissubmission'] = 'Évaluer ce travail'; $string['assignmentnotinthecorrectphase'] = 'L\'évaluation n\'en est pas à la phase correcte'; -$string['assmnts'] = 'Évaluations'; -$string['attachment'] = 'Annexe'; -$string['attachments'] = 'Annexes'; $string['authorofsubmission'] = 'Auteur du travail'; -$string['automaticgradeforassessment'] = 'Note automatique de l\'évaluation'; $string['averageerror'] = 'Erreur moyenne'; $string['awaitinggradingbyteacher'] = 'En attente de la note de l\'enseignant'; $string['beforedeadline'] = 'Avant l\'échéance : $a'; -$string['by'] = 'remis par'; $string['calculationoffinalgrades'] = 'Calcul de la note finale'; -$string['clearlateflag'] = 'Effacer le statut « en retard »'; $string['closeassignment'] = 'Travail fermé'; $string['comment'] = 'Commentaire'; -$string['commentbank'] = 'Liste de commentaires'; $string['commentby'] = 'Commentaire de'; -$string['comparisonofassessments'] = 'Comparaison des évaluations'; $string['confirmdeletionofthisitem'] = 'Confirmer la suppression de $a'; -$string['count'] = 'Nombre'; $string['correct'] = 'Correct'; $string['criterion'] = 'Par critère'; -$string['currentphase'] = 'Phase en cours'; -$string['date'] = 'Date'; -$string['datestr'] = '%%d.%%m.%%y
                                %%H:%%M'; -$string['deadline'] = 'Échéance pour la remise'; -$string['deadlineis'] = 'La date d\'échéance pour la remise est $a'; +$string['deadline'] = 'Échéance'; +$string['deadlineis'] = 'La date d\'échéance est $a'; $string['delete'] = 'Supprimer'; $string['deleting'] = 'Suppression'; $string['description'] = 'Description'; $string['detailsofassessment'] = 'Détails de l\'évaluation'; $string['disagreewiththisassessment'] = 'En désaccord avec l\'évaluation'; -$string['displayofgrades'] = 'Affichage des notes'; -$string['displayofcurrentgrades'] = 'Affichage des notes actuelles'; $string['displayoffinalgrades'] = 'Affichage des notes finales'; $string['dontshowgrades'] = 'Ne pas afficher les notes'; $string['edit'] = 'Modifier'; $string['editacomment'] = 'Modifier un commentaire'; $string['editingassessmentelements'] = 'Modifier les éléments de l\'évaluation'; -$string['editsubmission'] = 'Modifier le travail remis'; $string['element'] = 'Élément'; $string['elementweight'] = 'Coefficient'; -$string['enterpassword'] = 'Saisir le mot de passe'; $string['errorbanded'] = 'Erreur cumulée'; $string['errortable'] = 'Table d\'erreurs'; -$string['examplesubmissions'] = 'Travaux exemples'; $string['excellent'] = 'Excellent'; $string['excludingdroppedassessments'] = 'après exclusion des évaluations rejetées'; $string['expectederror'] = 'Erreur attendue (en devinant) : $a'; -$string['fair'] = 'Acceptable'; $string['feedbackgoeshere'] = 'Le feedback s\'affichera ici'; -$string['firstname'] = 'Prénom'; $string['generalcomment'] = 'Commentaire général'; $string['good'] = 'Bon'; $string['grade'] = 'Note'; @@ -104,84 +73,59 @@ $string['gradeforbias'] = 'Note du biais'; $string['gradeforreliability'] = 'Note de la fiabilité'; $string['gradeforstudentsassessment'] = 'Note de l\'évalution de l\'étudiant'; $string['gradeforsubmission'] = 'Note du travail'; -$string['gradegiventoassessment'] = 'Note donnée à l\'évaluation'; $string['gradeofsubmission'] = 'Note du travail : $a'; -$string['grades'] = 'Notes'; -$string['gradesforassessmentsare'] = 'La note maximale des évaluations est de $a'; -$string['gradesforstudentsassessment'] = 'Notes des évaluations des étudiants'; -$string['gradesforsubmissionsare'] = 'La note maximale des travaux remis est de $a'; $string['gradetable'] = 'Tableau des notes'; -$string['gradingallassessments'] = 'Notation de toutes les évaluations'; -$string['gradinggrade'] = 'Note du processus de notation'; $string['gradingstrategy'] = 'Stratégie d\'évaluation'; $string['hidegradesbeforeagreement'] = 'Masquer les notes avant l\'accord entre les parties'; $string['hidenamesfromstudents'] = 'Masquer les noms pour les $a'; $string['includeteachersgrade'] = 'Inclure la note de l\'enseignant'; $string['incorrect'] = 'Incorrect'; -$string['info'] = 'Info'; -$string['invaliddates'] = 'Les dates que vous avez saisies sont invalides.
                                Veuillez utiliser le bouton Arrière de votre navigateur pour réafficher le formulaire et corriger les dates.'; $string['iteration'] = 'Itération $a terminée'; -$string['lastname'] = 'Nom'; -$string['lax'] = 'Indulgent'; $string['leaguetable'] = 'Tableau des meilleurs travaux'; $string['listassessments'] = 'Liste des évaluations'; $string['listofallsubmissions'] = 'Liste de tous les travaux'; $string['liststudentsassessments'] = 'Liste des évaluations par les étudiants'; $string['loadingforteacherassessments'] = 'Coefficient des évaluations de l\'enseignant'; $string['mail1'] = 'Votre travail « $a » a été évalué par'; -$string['mail10'] = 'Vous pouvez l\'évaluer dans le cadre de votre atelier.'; -$string['mail2'] = 'Les commentaires et la note peuvent être consultés dans l\'atelier « $a ».'; +$string['mail10'] = 'Vous pouvez l\'évaluer dans le cadre de votre atelier '; +$string['mail2'] = 'Les commentaires et la note peuvent tre consultés dans l\'atelier « $a ».'; $string['mail3'] = 'Vous pouvez le voir dans votre atelier.'; -$string['mail4'] = 'Un commentaire a été ajouté au travail « $a » par '; +$string['mail4'] = 'Un commentaire a été ajouté au travail «$a » par '; $string['mail5'] = 'Ce nouveau commentaire est visible dans l\'atelier « $a ».'; -$string['mail6'] = 'Votre évaluation du travail « $a » a été notée.'; -$string['mail7'] = 'Les commentaires fournis par $a sont disponibles dans l\'atelier.'; +$string['mail6'] = 'Votre évaluation du travail « $a » a été notée'; +$string['mail7'] = 'Les commentaires fournis par $a sont disponibles dans l\'atelier '; $string['mail8'] = 'Le travail « $a » a été révisé. '; -$string['mail9'] = 'Veuillez l\'évaluer dans l\'atelier « $a ».'; +$string['mail9'] = 'Veuillez l\'évaluer dans l\'atelier « $a »'; $string['managingassignment'] = 'Gestion de l\'atelier'; -$string['maximum'] = 'Maximum'; $string['maximumsize'] = 'Taille maximale'; -$string['mean'] = 'Moyenne'; -$string['minimum'] = 'Minimum'; $string['modulename'] = 'Atelier'; $string['modulenameplural'] = 'Ateliers'; $string['movingtophase'] = 'Passage à la phase $a'; $string['namesnotshowntostudents'] = 'Noms masqués pour les $a'; $string['newassessments'] = 'Nouvelles évaluations'; -$string['newattachment'] = 'Nouvelle annexe'; $string['newgradings'] = 'Nouvelles notes'; $string['newsubmissions'] = 'Nouveaux travaux'; $string['noassessments'] = 'Pas d\'évaluation'; $string['noassessmentsdone'] = 'Pas d\'évaluation effectuée'; -$string['noattachments'] = 'Pas d\'annexe'; $string['nosubmission'] = 'Aucun travail remis'; $string['nosubmissionsavailableforassessment'] = 'Aucun travail disponible pour évaluation'; -$string['notallowed'] = 'Vous n\'avez pas l\'autorisation de voir cette page durant cette phase'; $string['notavailable'] = 'Pas disponible'; -$string['notenoughexamplessubmitted'] = 'Il n\'y a pas assez d\'exemples.'; $string['noteonassessmentelements'] = 'L\'évaluation se fait à partir de divers éléments, ce qui facilite l\'attribution
                                d\'une note et assure une plus grande équité. Vous devez spécifier ces éléments
                                avant de rendre disponible cet atelier aux étudiants. Pour ce faire, cliquez
                                sur l\'atelier dans le cours et on vous demandera d\'ajouter des éléments s\'il n\'y
                                en a encore aucun. Vous pourrez en ajouter d\'autres plus tard à l\'aide du menu
                                d\'édition. Vous pouvez modifier les critères à l\'aide de la commande « Gestion des évaluations ».'; -$string['noteonstudentassessments'] = '{Note donnée par l\'étudiant / Note du processus de notation de l\'évaluation}'; $string['notgraded'] = 'Sans note'; -$string['notitle'] = 'Pas de titre'; $string['notitlegiven'] = 'Aucun titre fourni'; -$string['nowork'] = 'La période de remise est terminée.
                                Vous n\'avez remis aucun travail.'; $string['numberofassessmentelements'] = 'Nombre de commentaires, d\'éléments d\'évaluation, de critères, de notes ou de catégories dans une rubrique'; $string['numberofassessments'] = 'Nombre d\'évaluations'; $string['numberofassessmentschanged'] = 'Nombres d\'évaluations modifiées : $a'; -$string['numberofassessmentsdropped'] = 'Nombres d\'évaluations rejetées : $a'; $string['numberofassessmentsofstudentsubmissions'] = 'Nombre d\'évaluations de travaux d\'étudiants'; $string['numberofassessmentsofteachersexamples'] = 'Nombre d\'évaluations d\'exemples de l\'enseignant'; -$string['numberofassessmentsweighted'] = 'Nombre d\'évaluations (pondérées) : $a'; -$string['numberofattachments'] = 'Nombre d\'annexes attendues dans les travaux à remettre'; $string['numberofentries'] = 'Nombre de travaux'; $string['numberofnegativeresponses'] = 'Nombre de réponses négatives'; $string['numberofsubmissions'] = 'Nombre de travaux remis : $a'; -$string['ograde'] = 'Note
                                totale'; $string['on'] = 'sur $a'; $string['openassignment'] = 'Travail ouvert'; $string['optionaladjustment'] = 'Ajustement facultatif'; @@ -192,12 +136,8 @@ $string['overallocation'] = 'D $string['overallpeergrade'] = 'Note globale donnée par les pairs : $a'; $string['overallteachergrade'] = 'Note globale de l\'enseignant : $a'; $string['ownwork'] = 'Mon propre travail'; -$string['passmnts'] = 'Évaluation
                                des pairs'; -$string['passwordprotectedworkshop'] = 'Atelier protégé par mot de passe'; $string['percentageofassessments'] = 'Pourcentage d\'évaluations à rejeter'; $string['phase'] = 'Phase'; -$string['phase0'] = 'Inactif'; -$string['phase0short'] = 'Inactif'; $string['phase1'] = 'Mise en place de l\'atelier'; $string['phase1short'] = 'Mise en place'; $string['phase2'] = 'Permettre la remise des travaux'; @@ -217,9 +157,6 @@ $string['poor'] = 'Faible'; $string['present'] = 'Présent'; $string['reasonforadjustment'] = 'Justification de l\'ajustement'; $string['reassess'] = 'Ré-évaluer'; -$string['regradestudentassessments'] = 'Re-noter les évaluations de l\'édudiant'; -$string['releaseteachergrades'] = 'Délivrer les notes de l\'enseignant'; -$string['removeallattachments'] = 'Supprimer toutes les annexes'; $string['repeatanalysis'] = 'Répéter l\'analyse'; $string['reply'] = 'Réponse'; $string['returnto'] = 'Retour à'; @@ -230,7 +167,6 @@ $string['saveleaguetableoptions'] = 'Enregistrer les r $string['savemyassessment'] = 'Enregistrer mon évaluation'; $string['savemycomment'] = 'Enregistrer mon commentaire'; $string['savemygrading'] = 'Enregistrer les notes données'; -$string['savemysubmission'] = 'Enregistrer mon travail remis'; $string['saveoverallocation'] = 'Enregistrer l\'équilibrage'; $string['scale10'] = 'Total sur 10'; $string['scale100'] = 'Total sur 100'; @@ -245,62 +181,39 @@ $string['scaleyes'] = 'Bar $string['select'] = 'Choisir'; $string['selfassessment'] = 'Auto-évaluation'; $string['setoverallocation'] = 'Équilibrer l\'attribution des travaux à évaluer'; -$string['sgrade'] = 'Note
                                travail'; -$string['showdescription'] = 'Afficher la description de l\'atelier'; $string['showgrades'] = 'Afficher les notes'; -$string['showsubmission'] = 'Afficher le travail $a'; $string['specimenassessmentform'] = 'Exemple de formulaire d\'évaluation'; $string['standarddeviation'] = 'Écart type de l\'élément $a :'; $string['standarddeviationnote'] = 'Les éléments avec un écart type nul ou très petit peuvent biaiser l\'analyse.
                                Cet élément a donc été exclu de l\'analyse.'; -$string['standarddeviationofelement'] = 'Écart type de l\'élément $a :'; -$string['strict'] = 'Strict'; $string['studentassessments'] = 'Évaluations faites par les étudiants'; $string['studentgrades'] = 'Notes des étudiants'; $string['studentsubmissions'] = 'Travaux remis par les étudiants'; $string['studentsubmissionsforassessment'] = '$a travaux d\'étudiants remis pour évaluation'; $string['submission'] = 'Travail remis'; -$string['submissionend'] = 'Fin de la remise des travaux'; -$string['submissionendevent'] = 'Fin de la remise des travaux pour $a'; $string['submissions'] = 'Travaux remis'; $string['submissionsnolongerallowed'] = 'La remise des travaux n\'est plus autorisée'; -$string['submissionstart'] = 'Début de la remise des travaux'; -$string['submissionstartevent'] = 'Début de la remise des travaux pour $a'; $string['submissionsused'] = '$a travaux remis utilisés dans ce tableau'; $string['submitassignment'] = 'Remettre un travail'; $string['submitassignmentusingform'] = 'Remettre votre travail avec ce formulaire'; -$string['submitexample'] = 'Remettre un exemple'; $string['submitexampleassignment'] = 'Remettre un exemple de travail'; $string['submitrevisedassignment'] = 'Remettre votre travail corrigé avec ce formulaire'; $string['submitted'] = 'Remis'; $string['submittedby'] = 'Remis par'; $string['suggestedgrade'] = 'Note suggérée'; -$string['tassmnt'] = 'Évaluation
                                enseignant'; $string['teacherassessments'] = 'Évaluations de l\'enseignant'; -$string['teachergradeforassessment'] = 'Note de l\'enseignant pour l\'évaluation'; $string['teacherscomment'] = 'Commentaire de l\'enseignant'; $string['teachersgrade'] = 'Note de l\'enseignant'; $string['teachersubmissionsforassessment'] = '$a travaux remis par l\'enseignant pour évaluation'; -$string['thegradeforthisassessmentis'] = 'La note donnée à cette évaluation est $a'; $string['thegradeis'] = 'La note est $a'; $string['thereisfeedbackfromtheteacher'] = 'Vous avez un feedback de la part de l\'enseignant'; $string['theseasessmentsaregradedbytheteacher'] = 'Ces évaluations ont été notées par l\'enseignant'; -$string['thischarset'] = 'iso-8859-1'; -$string['thisisadroppedassessment'] = 'Cette évaluation a été rejetée.'; -$string['thislanguage'] = 'fr'; $string['timeassessed'] = 'Date de l\'évaluation'; -$string['title'] = 'Titre du travail'; +$string['title'] = 'Titre'; $string['typeofscale'] = 'Type de barème'; -$string['unassessed'] = "\$a sans évaluation"; -$string['ungradedassessments'] = '$a évaluations non notées'; $string['ungradedassessmentsofstudentsubmissions'] = '$a évaluations sans notes (travaux d\'étudiants)'; $string['ungradedassessmentsofteachersubmissions'] = '$a évaluations sans notes (exemples de l\'enseignant)'; -$string['uploadsuccess'] = 'Dépôt du document réussi'; -$string['usepassword'] = 'Utiliser un mot de passe'; -$string['verylax'] = 'Très indulgent'; $string['verypoor'] = 'Très faible'; -$string['verystrict'] = 'Très strict'; $string['view'] = 'Afficher'; -$string['viewassessment'] = 'Voir l\'évaluation'; $string['viewassessmentofteacher'] = 'Voir l\'évaluation de $a'; $string['viewotherassessments'] = 'Voir les autres évaluations'; $string['warningonamendingelements'] = 'Attention ! Des travaux ont été remis.
                                @@ -320,10 +233,8 @@ $string['workshopassessments'] = ' $string['workshopcomments'] = 'Commentaire sur l\'atelier'; $string['workshopfeedback'] = 'Feedback sur l\'atelier'; $string['workshopsubmissions'] = 'Travaux remis de l\'atelier'; -$string['wrongpassword'] = 'Le mot de passe pour cet atelier est incorrect'; -$string['yourassessments'] = 'Vos évaluations des travaux de vos pairs'; +$string['yourassessments'] = 'Vos évaluations'; $string['yourassessmentsofexamplesfromtheteacher'] = 'Vos évaluations des exemples de l\'enseignant'; $string['yourfeedbackgoeshere'] = 'Votre feedback s\'affichera ici'; -$string['yoursubmissions'] = 'Vos travaux'; ?> \ No newline at end of file diff --git a/lang/fr_ca/admin.php b/lang/fr_ca/admin.php index 5502c2f9c17..5c393ec4863 100644 --- a/lang/fr_ca/admin.php +++ b/lang/fr_ca/admin.php @@ -1,17 +1,10 @@ -Pour plus d\'informations'; -$string['upgradelogsinfo'] = 'Moodle doit modifier la façon que vos journaux sont enregistrés afin de vous permettre de les afficher par activités. La durée de cette mise-à-jour dépend de la taille de votre site et peut s\'étirer sur plusieurs heures! Ceci peut être très demandant sur votre base de données si votre site Moodle est très gros. Une fois le processus enclenché, vous devez le laisser terminer en laissant la fenêtre de votre fureteur ouverte. Les utilisateurs pourront continuer à travailler.

                                Voulez-vous procéder à cette mise-à-jour maintenant?'; -$string['upgradesure'] = 'Certains fichiers de votre Moodle ont été modifiés, et vous êtes sur le point de lancer la procédure automatique de mise à jour de votre serveur vers cette version: -

                                $a

                                -

                                Une fois cette mise à jour effectuée, il sera impossible de revenir en arrière

                                -

                                Voulez-vous vraiment mettre à jour ce Moodle vers cette version?

                                '; -$string['upgradinglogs'] = 'Mise à jour des historiques'; - -?> +Pour plus d\'informations'; +$string['upgradelogsinfo'] = 'Moodle doit modifier la façon que vos journaux sont enregistrés afin de vous permettre de les afficher par activités. La durée de cette mise-à-jour dépend de la taille de votre site et peut s\'étirer sur plusieurs heures! Ceci peut être très demandant sur votre base de données si votre site Moodle est très gros. Une fois le processus enclenché, vous devez le laisser terminer en laissant la fenêtre de votre fureteur ouverte. Les utilisateurs pourront continuer à travailler.

                                Voulez-vous procéder à cette mise-à-jour maintenant?'; +$string['upgradinglogs'] = 'Mise à jour des journaux'; + +?> diff --git a/lang/fr_ca/algebra.php b/lang/fr_ca/algebra.php index 76cb10b4d6e..fd880f792df 100644 --- a/lang/fr_ca/algebra.php +++ b/lang/fr_ca/algebra.php @@ -1,9 +1,7 @@ - + diff --git a/lang/fr_ca/assignment.php b/lang/fr_ca/assignment.php index b6e3087bc9b..0af7db50ab3 100644 --- a/lang/fr_ca/assignment.php +++ b/lang/fr_ca/assignment.php @@ -1,54 +1,52 @@ -teacher a fait des remarques sur votre devoir \'$a->assignment\'. Vous pouvez les voir à : - -$a->url'; -$string['assignmentmailhtml'] = '$a->teacher a fait des remarques sur votre devoir \'$a->assignment\'.

                                - -Elles ont été ajoutées à votre: url\">devoir.'; -$string['assignmentname'] = 'Titre du devoir'; -$string['assignmenttype'] = 'Type de devoir'; -$string['configmaxbytes'] = 'Taille maximale par défaut pour tous les devoirs sur ce site (dépend aussi des limites pour les cours et autres ajustements locaux)'; -$string['description'] = 'Description'; -$string['duedate'] = 'À rendre avant le'; -$string['duedateno'] = 'Pas de date d\'échance'; -$string['early'] = '$a en avance'; -$string['existingfiledeleted'] = 'Le fichier existant a été effacé: $a'; -$string['failedupdatefeedback'] = 'Impossible d\'enregistrer la rétroaction pour $a'; -$string['feedback'] = 'Rétroaction'; -$string['feedbackupdated'] = 'Rétroaction enregistré pour $a personnes'; -$string['late'] = '$a en retard'; -$string['maximumgrade'] = 'Note maximale'; -$string['maximumsize'] = 'Taille maximale'; -$string['modulename'] = 'Devoir'; -$string['modulenameplural'] = 'Devoirs'; -$string['newsubmissions'] = 'Devoirs soumis'; -$string['notgradedyet'] = 'Pas encore corrigé'; -$string['notsubmittedyet'] = 'Pas encore soumis'; -$string['overwritewarning'] = 'Attention: Si vous envoyez de nouveau votre devoir, ce dernier remplacera le devoir déjà remis'; -$string['parentlanguage'] = 'fr'; -$string['saveallfeedback'] = 'Enregistrer tous mes commentaires'; -$string['submissionfeedback'] = 'Rétroactions sur le devoir'; -$string['submissions'] = 'Devoirs soumis'; -$string['submitassignment'] = 'Envoyer votre devoir en utilisant ce formulaire'; -$string['submitted'] = 'Soumis'; -$string['thisdirection'] = 'ltr'; -$string['typeoffline'] = 'Activité hors ligne'; -$string['typeuploadsingle'] = 'Téléverser un fichier unique'; -$string['uploadbadname'] = 'Le nom de ce fichier contient des caractères invalides : il ne peut être téléversé.'; -$string['uploadedfiles'] = 'fichiers téléversés'; -$string['uploaderror'] = 'Une erreur est survenue lors de l\'enregistrement du fichier sur le serveur'; -$string['uploadfailnoupdate'] = 'Le fichier a été correctement téléversé, mais il n\'a pas été possible de mettre à jour votre soumission'; -$string['uploadfiletoobig'] = 'Désolé, ce fichier est trop gros (la limite est de $a octets)'; -$string['uploadnofilefound'] = 'Aucun fichier n\'a été trouvé, êtes-vous certain d\'en avoir choisi un à téléverser ?'; -$string['uploadnotregistered'] = '« $a » a été correctement téléversé mais votre soumission n\'a pu être enregistrée !'; -$string['uploadsuccess'] = '« $a » a été correctement téléversé'; -$string['viewfeedback'] = 'Afficher les notes et les rétroactions sur les devoirs'; -$string['viewsubmissions'] = 'Voir les devoirs soumis de $a'; -$string['yoursubmission'] = 'Votre devoir'; - -?> +teacher a fait des remarques sur votre devoir \'$a->assignment\'. Vous pouvez les voir à : + +$a->url'; +$string['assignmentmailhtml'] = '$a->teacher a fait des remarques sur votre devoir \'$a->assignment\'.

                                + +Elles ont été ajoutées à votre:
                                url\">devoir.'; +$string['assignmentname'] = 'Titre du devoir'; +$string['assignmenttype'] = 'Type de devoir'; +$string['configmaxbytes'] = 'Taille maximale par défaut pour tous les devoirs sur ce site (dépend aussi des limites pour les cours et autres ajustements locaux)'; +$string['description'] = 'Description'; +$string['duedate'] = 'À rendre avant le'; +$string['duedateno'] = 'Pas de date d\'échance'; +$string['early'] = '$a en avance'; +$string['existingfiledeleted'] = 'Le fichier existant a été effacé: $a'; +$string['failedupdatefeedback'] = 'Impossible d\'enregistrer la rétroaction pour $a'; +$string['feedback'] = 'Rétroaction'; +$string['feedbackupdated'] = 'Rétroaction enregistré pour $a personnes'; +$string['late'] = '$a en retard'; +$string['maximumgrade'] = 'Note maximale'; +$string['maximumsize'] = 'Taille maximale'; +$string['modulename'] = 'Devoir'; +$string['modulenameplural'] = 'Devoirs'; +$string['newsubmissions'] = 'Devoirs soumis'; +$string['notgradedyet'] = 'Pas encore corrigé'; +$string['notsubmittedyet'] = 'Pas encore soumis'; +$string['overwritewarning'] = 'Attention: Si vous envoyez de nouveau votre devoir, ce dernier remplacera le devoir déjà remis'; +$string['saveallfeedback'] = 'Enregistrer tous mes commentaires'; +$string['submissionfeedback'] = 'Rétroactions sur le devoir'; +$string['submissions'] = 'Devoirs soumis'; +$string['submitassignment'] = 'Envoyer votre devoir en utilisant ce formulaire'; +$string['submitted'] = 'Soumis'; +$string['typeoffline'] = 'Activité hors ligne'; +$string['typeuploadsingle'] = 'Téléverser un fichier unique'; +$string['uploadbadname'] = 'Le nom de ce fichier contient des caractères invalides : il ne peut être téléversé.'; +$string['uploadedfiles'] = 'fichiers téléversés'; +$string['uploaderror'] = 'Une erreur est survenue lors de l\'enregistrement du fichier sur le serveur'; +$string['uploadfailnoupdate'] = 'Le fichier a été correctement téléversé, mais il n\'a pas été possible de mettre à jour votre soumission'; +$string['uploadfiletoobig'] = 'Désolé, ce fichier est trop gros (la limite est de $a octets)'; +$string['uploadnofilefound'] = 'Aucun fichier n\'a été trouvé, êtes-vous certain d\'en avoir choisi un à téléverser ?'; +$string['uploadnotregistered'] = '« $a » a été correctement téléversé mais votre soumission n\'a pu être enregistrée !'; +$string['uploadsuccess'] = '« $a » a été correctement téléversé'; +$string['viewfeedback'] = 'Afficher les notes et les rétroactions sur les devoirs'; +$string['viewsubmissions'] = 'Voir les devoirs soumis de $a'; +$string['yoursubmission'] = 'Votre devoir'; + +?> diff --git a/lang/fr_ca/auth.php b/lang/fr_ca/auth.php index 92e7467a5de..c88f62f64c2 100644 --- a/lang/fr_ca/auth.php +++ b/lang/fr_ca/auth.php @@ -1,76 +1,65 @@ -champs de la base de données externe.

                                Si vous laissez ces zones vides, les valeurs par défaut seront utilisées.

                                Dans tous les cas, l\'utilisateur a la possibilité de modifier tous ces champs une fois connecté.'; -$string['auth_dbfieldpass'] = 'Nom du champ contenant les mots de passe'; -$string['auth_dbfielduser'] = 'Nom du champ contenant les noms des utilisateurs'; -$string['auth_dbhost'] = 'L\'ordinateur contenant la base de données.'; -$string['auth_dbname'] = 'Nom de la base de données'; -$string['auth_dbpass'] = 'Mot de passe pour ce compte'; -$string['auth_dbpasstype'] = 'Indiquez la méthode avec laquelle est crypté le champ qui contient le mot de passe. L\'algorithme MD5 est utile pour une utilisation conjointe avec d\'autres applications Web telles que PostNuke.'; -$string['auth_dbtable'] = 'Nom de la table dans la base de données'; -$string['auth_dbtitle'] = 'Utiliser une base de données externe'; -$string['auth_dbtype'] = 'Type de la base de données (voir la documentation de ADOdb pour plus d\'information)'; -$string['auth_dbuser'] = 'Compte avec accès en lecture à la base de données'; -$string['auth_emaildescription'] = 'La confirmation par courriel est la méthode d\'authentification par défaut. Lorsqu\'un utilisateur s\'enregistre en choisissant ses nom d\'utilisateur et mot de passe, un message de confirmation est envoyé à son adresse de courriel. Ce message contient un lien sécurisé vers une page Web où il peut confirmer son inscription. Lors des connexions suivantes, le nom d\'utilisateur et son mot de passe sont vérifiés à partir de ces informations qui sont enregistrées dans la base de données de Moodle.'; -$string['auth_emailtitle'] = 'Authentification par courriel'; -$string['auth_fccreators'] = 'Liste des groupes dont les membres ont l\'autorisation de créer de nouveaux cours. Séparez les différents groupes par des points-virgules (;). Les nom doivent être transcrits exactement tels qu\'ils sont sur le serveur FirstClass. La casse des caractères doit être respectée.'; -$string['auth_fcdescription'] = 'Cette méthode utilise un serveur FisrtClass pour vérifier la validité d\'un nom d\'utilisateur et d\'un mot de passe donnés.'; -$string['auth_fcfppport'] = 'Port du serveur (la plupart du temps 3333)'; -$string['auth_fchost'] = 'L\'adresse du serveur FirstClass. Indiquez l\'adresse IP numérique ou un nom de domaine DNS.'; -$string['auth_fcpasswd'] = 'Mot de passe du compte FirstClass ayant le privilège « Subadministrator ».'; -$string['auth_fctitle'] = 'Utilisation d\'un serveur FirstClass'; -$string['auth_fcuserid'] = 'Numéro d\'identification du compte FirstClass ayant le privilège « Subadministrator ».'; -$string['auth_imapdescription'] = 'Cette méthode utilise un serveur IMAP pour vérifier qu\'un nom d\'utilisateur et son mot de passe sont valides.'; -$string['auth_imaphost'] = 'L\'adresse du serveur IMAP. Utiliser l\'adresse IP et non le nom de l\'ordinateur.'; -$string['auth_imapport'] = 'Numéro de port du serveur IMAP. Il s\'agit généralement de 143 ou 993.'; -$string['auth_imaptitle'] = 'Utiliser un serveur IMAP'; -$string['auth_imaptype'] = 'Le type de serveur IMAP. Les serveurs IMAP peuvent avoir différentes méthodes d\'authentification et de négociation.'; -$string['auth_ldap_bind_dn'] = 'Si vous souhaitez utiliser une connexion authentifiée au serveur LDAP pour chercher les utilisateurs, indiquez ici son nom de connexion. Par exemple : « cn=ldapuser, o=Organisation, c=FR ».'; -$string['auth_ldap_bind_pw'] = 'Mot de passe pour cette connexion'; -$string['auth_ldap_contexts'] = 'Liste des noeuds (contextes) de l\'annuaire LDAP, séparés par « ; », où les enregistrements des utilisateurs sont situés. Par exemple : « ou=Étudiants, o=Organisation, c=FR; ou=Professeurs, o=Organisation, c=FR ».'; -$string['auth_ldap_create_context'] = 'Si vous avez activé la création d\'utilisateur avec confirmation par courriel, vous devez spécifiez le contexte dans lequel ces utilisateurs seront créés. Ces contextes doivent être différents des autres utilisateurs pour éviter des failles de sécurité. Vous n\'avez pas à ajouter ce contexte à ldap_context-variable, Moodle cherchera automatiquement les utilisateurs dans ce contexte.'; -$string['auth_ldap_creators'] = 'Liste des groupes dont les membres peuvent créer des cours. Il faut séparer les groupes par «,». Par exemple, «cn=professeurs,ou=personnel,o=college».'; -$string['auth_ldap_host_url'] = 'Indiquer le serveur LDAP sous form d\'URL comme ceci :
                                « ldap://ldap.organisation.fr/ »
                                ou :
                                « ldaps://ldap.organisation.fr/ »'; -$string['auth_ldap_memberattribute'] = 'Caractériser les membres du groupe lorsque les utilisateurs font parti d\'un groupe. Par exemple : «membre».'; -$string['auth_ldap_objectclass'] = 'Le filtre utilisé pour rechercher/renommer des utilisateurs. On y mettra d\'habitude quelque chose comme objectClass=posixAccount. La valeur par défaut est objectClass=*, ce que retournera tous les objets du serveur LDAP.'; -$string['auth_ldap_search_sub'] = 'Mettre une valeur différente de 0 pour rechercher les enregistrements dans les sous-noeuds (sous-contextes).'; -$string['auth_ldap_update_userinfo'] = 'Mettre-à-jour les données des utilisateurs (prénom, nom, addresse, etc.) de Moodle depuis l\'annuaire LDAP. Lire « /auth/ldap/attr_mappings.php » pour avoir des informations sur la correspondance.'; -$string['auth_ldap_user_attribute'] = 'L\'attribut utilisé pour nommer et rechercher les utilisateurs. Habituellement « cn ».'; -$string['auth_ldap_version'] = 'La version du protocole LDAP que votre serveur utilise.'; -$string['auth_ldapdescription'] = 'Cette méthode permet l\'authentification auprès d\'un annuaire LDAP externe. Si les nom d\'utilisateur et mot de passe sont corrects, Moodle créera un nouvel enregistrement pour cet utilisateur dans sa base de données. Ce module peut récupérer les attributs de l\'enregistrement LDAP de l\'utilisateur afin de remplir certains champs dans Moodle. Lors des connexions suivantes, seuls les nom d\'utilisateur et mot de passe sont vérifiés.'; -$string['auth_ldapextrafields'] = 'Ces champs sont optionnels. Il vous est possible de remplir certains champs de Moodle avec des données provenant des attributs de l\'annuaire LDAP.

                                Si vous laissez ces champs vides, aucune donnée ne sera récupérée de l\'annuaire LDAP et les valeurs par défaut de Moodle seront utilisées.

                                Dans tous les cas, l\'utilisateur a la possibilité de modifier tous ces champs une fois connecté.'; -$string['auth_ldaptitle'] = 'Utiliser un serveur LDAP'; -$string['auth_manualdescription'] = 'Cette méthode empêche les utilisateurs de créer leur propre compte. Tous les comptes devront être créés manuellement par l\'administeur du serveur.'; -$string['auth_manualtitle'] = 'Comptes créés manuellement seulement'; -$string['auth_multiplehosts'] = 'Vous pouvez indiquer ici plusieurs hôtes SMTP (par exemple host1.com;host2.com;host3.com)'; -$string['auth_nntpdescription'] = 'Cette méthode utilise un serveur NNTP pour vérifier qu\'un nom d\'utilisateur et son mot de passe sont valides.'; -$string['auth_nntphost'] = 'L\'adresse du serveur NNTP. Utiliser l\'adresse IP et non le nom de la machine.'; -$string['auth_nntpport'] = 'Numéro de port du serveur NNTP. Il s\'agit généralement de 119.'; -$string['auth_nntptitle'] = 'Utiliser un serveur NNTP'; -$string['auth_nonedescription'] = 'Les utilisateurs peuvent s\'enregistrer et créer des comptes valides immédiatement sans aucune validation externe ni confirmation par courriel. Attention lors de l\'utilisation de cette méthode : réfléchissez à toutes les implications sur la sécurité et la gestion des utilisateurs.'; -$string['auth_nonetitle'] = 'Pas d\'authentification'; -$string['auth_pop3description'] = 'Cette méthode utilise un serveur POP3 pour vérifier qu\'un nom d\'utilisateur et son mot de passe sont valides.'; -$string['auth_pop3host'] = 'L\'adresse du serveur POP3. Utiliser l\'adresse IP et non le nom de la machine.'; -$string['auth_pop3mailbox'] = 'Nom de la boîte aux lettres vers laquelle Moodle tentera de connecter, d\'habitude « INBOX ».'; -$string['auth_pop3port'] = 'Numéro de port du serveur NNTP. Il s\'agit généralement de 110.'; -$string['auth_pop3title'] = 'Utiliser un serveur POP3'; -$string['auth_pop3type'] = 'Type de serveur. Si le serveur POP3 utilise « certificate security », choisir « pop3cert ».'; -$string['auth_user_create'] = 'Permettre la création d\'utilisateur'; -$string['auth_user_creation'] = 'Les nouveux utilisateurs (anonymes) peuvent créer un compte avec l\'authentification de source extérieure et confirmation par courriel. N\'oubliez pas de configurer également les options des autres modules qui traitent de la création de comptes.'; -$string['auth_usernameexists'] = 'Désolé, ce nom existe déjà! Veuillez en choisir un autre.'; -$string['authenticationoptions'] = 'Options d\'authentification'; -$string['authinstructions'] = 'Dans cette zone il vous est possible de fournir des instructions à vos utilisateurs afin qu\'ils sachent quels nom d\'utilisateur et mot de passe utiliser. Ce texte apparaîtra sur la page de connexion. Si vous laissez cette zone vide, aucune instruction ne sera affichée.'; -$string['changepassword'] = 'URL changer de mot de passe'; -$string['changepasswordhelp'] = 'Vous pouvez indiquer dans cette zone l\'URL d\'une page sur laquelle vos utilisateurs pourront récupérer ou changer leurs nom d\'utilisateur et mot de passe s\'ils les ont oubliés. Cette URL sera disponible sous forme d\'un bouton sur la page de connexion. Si cette zone est vide, ce bouton ne sera pas affiché.'; -$string['chooseauthmethod'] = 'Choisir une méthode d\'authentification'; -$string['guestloginbutton'] = 'Bouton pour visiteur anonyme'; -$string['instructions'] = 'Instructions'; -$string['md5'] = 'Cryptage MD5'; -$string['parentlanguage'] = 'fr'; -$string['plaintext'] = 'Texte en clair'; -$string['showguestlogin'] = 'Vous pouvez choisir de montrer ou non le bouton de connexion en tant que visiteur anonyme sur la page de connexion.'; - -?> +champs de la base de données externe.

                                Si vous laissez ces zones vides, les valeurs par défaut seront utilisées.

                                Dans tous les cas, l\'utilisateur a la possibilité de modifier tous ces champs une fois connecté.'; +$string['auth_dbfieldpass'] = 'Nom du champ contenant les mots de passe'; +$string['auth_dbfielduser'] = 'Nom du champ contenant les noms des utilisateurs'; +$string['auth_dbhost'] = 'L\'ordinateur contenant la base de données.'; +$string['auth_dbname'] = 'Nom de la base de données'; +$string['auth_dbpass'] = 'Mot de passe pour ce compte'; +$string['auth_dbpasstype'] = 'Indiquez la méthode avec laquelle est crypté le champ qui contient le mot de passe. L\'algorithme MD5 est utile pour une utilisation conjointe avec d\'autres applications Web telles que PostNuke.'; +$string['auth_dbtable'] = 'Nom de la table dans la base de données'; +$string['auth_dbtitle'] = 'Utiliser une base de données externe'; +$string['auth_dbtype'] = 'Type de la base de données (voir la documentation de ADOdb pour plus d\'information)'; +$string['auth_dbuser'] = 'Compte avec accès en lecture à la base de données'; +$string['auth_emaildescription'] = 'La confirmation par courriel est la méthode d\'authentification par défaut. Lorsqu\'un utilisateur s\'enregistre en choisissant ses nom d\'utilisateur et mot de passe, un message de confirmation est envoyé à son adresse de courriel. Ce message contient un lien sécurisé vers une page Web où il peut confirmer son inscription. Lors des connexions suivantes, le nom d\'utilisateur et son mot de passe sont vérifiés à partir de ces informations qui sont enregistrées dans la base de données de Moodle.'; +$string['auth_emailtitle'] = 'Authentification par courriel'; +$string['auth_imapdescription'] = 'Cette méthode utilise un serveur IMAP pour vérifier qu\'un nom d\'utilisateur et son mot de passe sont valides.'; +$string['auth_imaphost'] = 'L\'adresse du serveur IMAP. Utiliser l\'adresse IP et non le nom de l\'ordinateur.'; +$string['auth_imapport'] = 'Numéro de port du serveur IMAP. Il s\'agit généralement de 143 ou 993.'; +$string['auth_imaptitle'] = 'Utiliser un serveur IMAP'; +$string['auth_imaptype'] = 'Le type de serveur IMAP. Les serveurs IMAP peuvent avoir différentes méthodes d\'authentification et de négociation.'; +$string['auth_ldap_bind_dn'] = 'Si vous souhaitez utiliser une connexion authentifiée au serveur LDAP pour chercher les utilisateurs, indiquez ici son nom de connexion. Par exemple : « cn=ldapuser, o=Organisation, c=FR ».'; +$string['auth_ldap_bind_pw'] = 'Mot de passe pour cette connexion'; +$string['auth_ldap_contexts'] = 'Liste des noeuds (contextes) de l\'annuaire LDAP, séparés par « ; », où les enregistrements des utilisateurs sont situés. Par exemple : « ou=Étudiants, o=Organisation, c=FR; ou=Professeurs, o=Organisation, c=FR ».'; +$string['auth_ldap_create_context'] = 'Si vous avez activé la création d\'utilisateur avec confirmation par courriel, vous devez spécifiez le contexte dans lequel ces utilisateurs seront créés. Ces contextes doivent être différents des autres utilisateurs pour éviter des failles de sécurité. Vous n\'avez pas à ajouter ce contexte à ldap_context-variable, Moodle cherchera automatiquement les utilisateurs dans ce contexte.'; +$string['auth_ldap_creators'] = 'Liste des groupes dont les membres peuvent créer des cours. Il faut séparer les groupes par «,». Par exemple, «cn=professeurs,ou=personnel,o=college».'; +$string['auth_ldap_host_url'] = 'Indiquer le serveur LDAP sous form d\'URL comme ceci :
                                « ldap://ldap.organisation.fr/ »
                                ou :
                                « ldaps://ldap.organisation.fr/ »'; +$string['auth_ldap_memberattribute'] = 'Caractériser les membres du groupe lorsque les utilisateurs font parti d\'un groupe. Par exemple : «membre».'; +$string['auth_ldap_search_sub'] = 'Mettre une valeur différente de 0 pour rechercher les enregistrements dans les sous-noeuds (sous-contextes).'; +$string['auth_ldap_update_userinfo'] = 'Mettre-à-jour les données des utilisateurs (prénom, nom, addresse, etc.) de Moodle depuis l\'annuaire LDAP. Lire « /auth/ldap/attr_mappings.php » pour avoir des informations sur la correspondance.'; +$string['auth_ldap_user_attribute'] = 'L\'attribut utilisé pour nommer et rechercher les utilisateurs. Habituellement « cn ».'; +$string['auth_ldapdescription'] = 'Cette méthode permet l\'authentification auprès d\'un annuaire LDAP externe. Si les nom d\'utilisateur et mot de passe sont corrects, Moodle créera un nouvel enregistrement pour cet utilisateur dans sa base de données. Ce module peut récupérer les attributs de l\'enregistrement LDAP de l\'utilisateur afin de remplir certains champs dans Moodle. Lors des connexions suivantes, seuls les nom d\'utilisateur et mot de passe sont vérifiés.'; +$string['auth_ldapextrafields'] = 'Ces champs sont optionnels. Il vous est possible de remplir certains champs de Moodle avec des données provenant des attributs de l\'annuaire LDAP.

                                Si vous laissez ces champs vides, aucune donnée ne sera récupérée de l\'annuaire LDAP et les valeurs par défaut de Moodle seront utilisées.

                                Dans tous les cas, l\'utilisateur a la possibilité de modifier tous ces champs une fois connecté.'; +$string['auth_ldaptitle'] = 'Utiliser un serveur LDAP'; +$string['auth_manualdescription'] = 'Cette méthode empêche les utilisateurs de créer leur propre compte. Tous les comptes devront être créés manuellement par l\'administeur du serveur.'; +$string['auth_manualtitle'] = 'Comptes créés manuellement seulement'; +$string['auth_multiplehosts'] = 'Vous pouvez indiquer ici plusieurs hôtes SMTP (par exemple host1.com;host2.com;host3.com)'; +$string['auth_nntpdescription'] = 'Cette méthode utilise un serveur NNTP pour vérifier qu\'un nom d\'utilisateur et son mot de passe sont valides.'; +$string['auth_nntphost'] = 'L\'adresse du serveur NNTP. Utiliser l\'adresse IP et non le nom de la machine.'; +$string['auth_nntpport'] = 'Numéro de port du serveur NNTP. Il s\'agit généralement de 119.'; +$string['auth_nntptitle'] = 'Utiliser un serveur NNTP'; +$string['auth_nonedescription'] = 'Les utilisateurs peuvent s\'enregistrer et créer des comptes valides immédiatement sans aucune validation externe ni confirmation par courriel. Attention lors de l\'utilisation de cette méthode : réfléchissez à toutes les implications sur la sécurité et la gestion des utilisateurs.'; +$string['auth_nonetitle'] = 'Pas d\'authentification'; +$string['auth_pop3description'] = 'Cette méthode utilise un serveur POP3 pour vérifier qu\'un nom d\'utilisateur et son mot de passe sont valides.'; +$string['auth_pop3host'] = 'L\'adresse du serveur POP3. Utiliser l\'adresse IP et non le nom de la machine.'; +$string['auth_pop3port'] = 'Numéro de port du serveur NNTP. Il s\'agit généralement de 110.'; +$string['auth_pop3title'] = 'Utiliser un serveur POP3'; +$string['auth_pop3type'] = 'Type de serveur. Si le serveur POP3 utilise « certificate security », choisir « pop3cert ».'; +$string['auth_user_create'] = 'Permettre la création d\'utilisateur'; +$string['auth_user_creation'] = 'Les nouveux utilisateurs (anonymes) peuvent créer un compte avec l\'authentification de source extérieure et confirmation par courriel. N\'oubliez pas de configurer également les options des autres modules qui traitent de la création de comptes.'; +$string['auth_usernameexists'] = 'Désolé, ce nom existe déjà! Veuillez en choisir un autre.'; +$string['authenticationoptions'] = 'Options d\'authentification'; +$string['authinstructions'] = 'Dans cette zone il vous est possible de fournir des instructions à vos utilisateurs afin qu\'ils sachent quels nom d\'utilisateur et mot de passe utiliser. Ce texte apparaîtra sur la page de connexion. Si vous laissez cette zone vide, aucune instruction ne sera affichée.'; +$string['changepassword'] = 'URL changer de mot de passe'; +$string['changepasswordhelp'] = 'Vous pouvez indiquer dans cette zone l\'URL d\'une page sur laquelle vos utilisateurs pourront récupérer ou changer leurs nom d\'utilisateur et mot de passe s\'ils les ont oubliés. Cette URL sera disponible sous forme d\'un bouton sur la page de connexion. Si cette zone est vide, ce bouton ne sera pas affiché.'; +$string['chooseauthmethod'] = 'Choisir une méthode d\'authentification'; +$string['guestloginbutton'] = 'Bouton pour visiteur anonyme'; +$string['instructions'] = 'Instructions'; +$string['md5'] = 'Cryptage MD5'; +$string['plaintext'] = 'Texte en clair'; +$string['showguestlogin'] = 'Vous pouvez choisir de montrer ou non le bouton de connexion en tant que visiteur anonyme sur la page de connexion.'; + +?> diff --git a/lang/fr_ca/censor.php b/lang/fr_ca/censor.php index e69b972a99a..e6ed8a404dc 100644 --- a/lang/fr_ca/censor.php +++ b/lang/fr_ca/censor.php @@ -1,9 +1,7 @@ - + diff --git a/lang/fr_ca/chat.php b/lang/fr_ca/chat.php index 40cf4a4822d..7b6b3667c9a 100644 --- a/lang/fr_ca/chat.php +++ b/lang/fr_ca/chat.php @@ -1,56 +1,43 @@ -toujours effectifs'; -$string['explainmethoddaemon'] = 'Ces réglages sont effectifs uniquement si vous avez choisi la méthode de clavardage « Utilisation d\'un démon »'; -$string['explainmethodnormal'] = 'Ces réglages sont effectifs uniquement si vous avez choisi la méthode de clavardage« Méthode normale »'; -$string['generalconfig'] = 'Configuration générale'; -$string['helpchatting'] = 'Aide pour clavarder'; -$string['idle'] = 'En attente'; -$string['messagebeepseveryone'] = '$a bipe tout le monde!'; -$string['messagebeepsyou'] = '$a vous a bipé!'; -$string['messageenter'] = '$a vient d\'entrer'; -$string['messageexit'] = '$a a quitté'; -$string['messages'] = 'Messages'; -$string['methoddaemon'] = 'Utilisation d\'un démon'; -$string['methodnormal'] = 'Méthode normale'; -$string['modulename'] = 'Clavardage'; -$string['modulenameplural'] = 'Clavardages'; -$string['neverdeletemessages'] = 'Ne jamais effacer les messages'; -$string['nextsession'] = 'Prochaine session prévue'; -$string['noguests'] = 'Ce salon n\'est pas ouvert aux utilisateurs anonymes'; -$string['nomessages'] = 'Pas encore de messages'; -$string['parentlanguage'] = 'fr'; -$string['repeatdaily'] = 'À la même heure chaque jour'; -$string['repeatnone'] = 'Aucune répétition - afficher le moment prévu seulement'; -$string['repeattimes'] = 'Répéter les sessions'; -$string['repeatweekly'] = 'Au même moment chaque semaine'; -$string['savemessages'] = 'Sauvegarder les sessions précédentes'; -$string['seesession'] = 'Voir cette session'; -$string['sessions'] = 'Sessions de clavardage'; -$string['strftimemessage'] = '%%H:%%M'; -$string['studentseereports'] = 'N\'importe qui peut voir les sessions précédentes'; -$string['viewreport'] = 'Voir les sessions précédentes'; - -?> + diff --git a/lang/fr_ca/choice.php b/lang/fr_ca/choice.php index 45556787464..68ccc56b8d5 100644 --- a/lang/fr_ca/choice.php +++ b/lang/fr_ca/choice.php @@ -1,35 +1,23 @@ - + diff --git a/lang/fr_ca/countries.php b/lang/fr_ca/countries.php index e3db8ef6f91..1d770bebdf3 100644 --- a/lang/fr_ca/countries.php +++ b/lang/fr_ca/countries.php @@ -1,247 +1,243 @@ - diff --git a/lang/fr_ca/docs/release.html b/lang/fr_ca/docs/release.html new file mode 100644 index 00000000000..fde1cf01653 --- /dev/null +++ b/lang/fr_ca/docs/release.html @@ -0,0 +1,229 @@ + + +Documentation Moodle : Notes de mise à jour actuelles + + + + + + + + + +

                                Notes de mise à jour actuelles

                                +

                                En cours de traduction

                                +

                                Nouveautés de Moodle 1.2 Béta (24 février 2004)

                                +
                                  +

                                  This Beta release is a test release. Many sites are already using it in production, but it will have some cosmetic bugs, missing documentation and other small problems (some we know about, some we don't). Please help us find all of these and fix them before the final polished release of Moodle 1.2 in early March. The best way to do this is to file a bug report on http://moodle.org/bugs/

                                  +
                                  +
                                  Major new features
                                  +
                                  +
                                    +
                                  • New support for groups and cohorts within courses (with many options)
                                  • +
                                  • Text filters allow arbitrary processing on all text in Moodle, including automatic linking, mathematics support, multi-language content and infinitely more possibilities
                                  • +
                                  • A fantastic new Glossary module (thanks to Williams Castillo!) with many different ways to contruct learning activities based around collecting definitions
                                  • +
                                  • A great new Lesson module (thanks to Ray Kingdon!) easily creates active content with pathways and multiple-choice questions
                                  • +
                                  • A new Label module allows arbitrary HTML in the course page
                                  • +
                                  • An improved WYSIWYG editor, faster and more cross-platform than the old one
                                  • +
                                  • Automatic backups can be scheduled by the administrator for all courses at once
                                  • +
                                  +
                                  +
                                  Courses
                                  +
                                  +
                                    +
                                  • Activities can now be indented on the course outline, allowing more structure
                                  • +
                                  • A new report for Recent Activity makes it easier to see what's happened recently
                                  • +
                                  • A new logs button on every activity links to the logs page to show logs per-activity
                                  • +
                                  • Restore button now always functional
                                  • +
                                  • Improved "index" view for all modules
                                  • +
                                  • Improvements to participants display, including paging and initial searching
                                  • +
                                  • Excel downloads are more compatible with different operating systems
                                  • +
                                  • Better error reporting when adding/updating activities
                                  • +
                                  • Search box no longer auto-focuses (it was causing annoying auto-scrolling on long courses)
                                  • +
                                  • Self-unenrollment link on the course page for students
                                  • +
                                  • Change password link on the course page for students
                                  • +
                                  • Students can now be allowed to see their own activity reports (course setting)
                                  • +
                                  • Teachers can browse the course files for images when using the new editor
                                  • +
                                  • New image of empty box as destination when moving activities
                                  • +
                                  • Accesses are now recorded by course, so the participant listings make more sense
                                  • +
                                  • The activity navbar now has buttons for previous and next activities
                                  • +
                                  • File dates were incorrect on some systems - this is now fixed.
                                  • +
                                  • Old chat users are no longer shown in the recent activity
                                  • +
                                  +
                                  +
                                  Site administration
                                  +
                                  +
                                    +
                                  • An important security fix preventing teachers from logging in as admins
                                  • +
                                  • User's names can now be configured so student's can only see "firstname lastname", "lastname firstname" or "firstname"
                                  • +
                                  • Individual users can have their email disabled by the teacher or admin (useful for dealing with broken mail accounts that are bouncing)
                                  • +
                                  • A new setting "forcelogin" can force people to log in before they can see any of the site
                                  • +
                                  • Upload sizes can now be controlled throughout Moodle using "maxbytes". There is a site limit (bounded by the current PHP limits), which itself is the upper bound for course limits, which is the upper bound for activity limits.
                                  • +
                                  • Students can be allowed/disallowed self-unenrolling
                                  • +
                                  • Moodle cookies can be customised (helps when running multiple Moodles on one site)
                                  • +
                                  • Included script for analysing database performance (admin/dbperformance.php)
                                  • +
                                  • Included standalone script to check a server for Moodle compatibility (lib/compatible.php)
                                  • +
                                  • If a file called cronextra.php exists in the dataroot then cron will run that too. This allows sites to have "special" maintenance features.
                                  • +
                                  • Course formats are now more like plugins, in separate directories
                                  • +
                                  • Users can now be uploaded from text files
                                  • +
                                  • If $CFG->disableuserimages is defined then user images can not be changed
                                  • +
                                  • If $CFG->opentogoogle is defined then Google can get in as guest +and people referred by google also get in as guest
                                  • +
                                  • If $CFG->admineditalways is defined then the administrator can edit ANY post at any time.
                                  • +
                                  • If $CFG->filterall is defined then even little things liks forum subjects and activity names are filtered
                                  • +
                                  • Support for restricted demo users (eg the teacher demo on Moodle.org) - usernames can be added to a list of names in config.php. eg $CFG->restrictusers = 'teacher,fred';
                                  • +
                                  +
                                  +
                                  Themes
                                  +
                                  +
                                    +
                                  • Fixes for Internet Explorer can be more robust at using the style sheet
                                  • +
                                  • Miscellaneous fixes and improvements to themes - custom themes need upgrading.
                                  • +
                                  +
                                  +
                                  Translations
                                  +
                                  +
                                    +
                                  • New languages: Galego and Lithuanian
                                  • +
                                  • Improved language editing interface - it allows the current language to be chosen and allows each file to be edited separately.
                                  • +
                                  • The list of country names can now be translated, as can the editor buttons, smiley names and file sizes (Mb, Gb etc)
                                  • +
                                  • Language packs can now define the default language direction (RTL or LTR)
                                  • +
                                  • Language packs can now define the order that people's names should be shown in
                                  • +
                                  • Language files are now written using slightly more efficient PHP code
                                  • +
                                  • Finally got rid of the final bogus linefeeds in the multi-line strings
                                  • +
                                  +
                                  +
                                  Backup / Restore
                                  +
                                  +
                                    +
                                  • Automatic backups can be scheduled by the administrator for all courses at once
                                  • +
                                  • All needed users are now included in course backups (even if no longer enrolled)
                                  • +
                                  • Miscellaneous bugfixes
                                  • +
                                  +
                                  +
                                  Text Filters and Formatting
                                  +
                                  +
                                    +
                                  • Warning: the new text filters can increase the load on your server, particularly when used with complex filters. Use them with caution.
                                  • +
                                  • The new glossary filter can create links to glossary entries from matching words throughout Moodle.
                                  • +
                                  • The new TeX filter can convert TeX code found anywhere in Moodle into true Mathematics notation (GIF format image)
                                  • +
                                  • The new censor filter can be enabled to filter out bad words.
                                  • +
                                  • The new multilang filter allows texts to be entered in multiple languages, and only the best one will be shown to each user (depending on their language setting)
                                  • +
                                  • The <nolink> tag can be used to prevent autolinking within a passage of text.
                                  • +
                                  • More tags are now allowed, including <acronym> and all <math> tags.
                                  • +
                                  • Some areas where text wasn't being filtered before (security risk) have now been fixed.
                                  • +
                                  +
                                  +
                                  Developer API
                                  +
                                  +
                                    +
                                  • A new coding guide is available
                                  • +
                                  • A new Philosophy guide is available ;-)
                                  • +
                                  • Improvements to the template for new modules
                                  • +
                                  • Modules should now specify the minimum version of Moodle they are compatible with
                                  • +
                                  • Scripts can specify to print_header() whether the page is pure XML
                                  • +
                                  • Any module can save and retrieve user preferences that stay around between logins
                                  • +
                                  +
                                  +
                                  Chats
                                  +
                                  +
                                    +
                                  • Chat sessions can now be deleted
                                  • +
                                  • Scheduled chat times now show the timezone to make it clearer
                                  • +
                                  +
                                  +
                                  Forums
                                  +
                                  +
                                    +
                                  • Forum viewing preferences are remembered between logins
                                  • +
                                  • "Show parent" link on all posts for faster navigation around forums
                                  • +
                                  • Anchor tags allow individual posts to be referenced in all views
                                  • +
                                  • Improvements to cron job when manually run, as well as logging of mailer errors
                                  • +
                                  • Only print the ratings button when there are ratings to be made
                                  • +
                                  • Vastly improved email text versions of HTML forum posts
                                  • +
                                  • When replying, an outline of other replies is shown.
                                  • +
                                  • When using the HTML editor to post, other formatting options are no longer provided.
                                  • +
                                  +
                                  +
                                  Journals
                                  +
                                  +
                                    +
                                  • Journal questions can now use the HTML editor
                                  • +
                                  • Some fixes to the report page when assessing journal entries
                                  • +
                                  +
                                  +
                                  Quizzes
                                  +
                                  +
                                    +
                                  • Questions and categories can now be edited without needing to open a quiz
                                  • +
                                  • All questions can now use any of the Moodle editing formats
                                  • +
                                  • New import format: GIFT format (this is the new default format)
                                  • +
                                  • New import format: Course Test Manager
                                  • +
                                  • New import format: WebCT format
                                  • +
                                  • New import format: Aiken format
                                  • +
                                  • Short-Answer questions can now use wildcards for matching eg wild*rds
                                  • +
                                  • Images now work in questions from external published categories
                                  • +
                                  • Improved the overview reports to show more info and allow deletion of attempts
                                  • +
                                  • Added a new detailed quiz report for statistical anaylsis
                                  • +
                                  • All question types can now have up to 10 answers each
                                  • +
                                  • Menus in quiz editing no longer need submit buttons (just select from menu)
                                  • +
                                  • Fixed bug that occurred when re-grading SOME quizzes with random questions in them
                                  • +
                                  • Fixed bug that occurred in backups of quizzes with random questions in them
                                  • +
                                  • Many other small bugs fixed
                                  • +
                                  +
                                  +
                                  Resources
                                  +
                                  +
                                    +
                                  • Teachers can browse files more directly when creating uploaded file
                                  • +
                                  • New settings to allow a default URL, a default search page and default popup settings
                                  • +
                                  • Uploaded files can appear in popups too.
                                  • +
                                  • Much better display of popups when using the navbar to go there
                                  • +
                                  • MP3 files are now streamed using a built-in Flash MP3 player
                                  • +
                                  • Video files (Media player, Quicktime) are embedded using local plugins
                                  • +
                                  +
                                  +
                                  Workshops
                                  +
                                  +
                                    +
                                  • Changes to handling of peer assessments
                                  • +
                                  • New assessment phase
                                  • +
                                  • New options for the league table
                                  • +
                                  +
                                  +
                                  Miscellaneous
                                  +
                                  +
                                    +
                                  • Moodle now ignores any folders that Frontpage may have added to it (_vti_cnf).
                                  • +
                                  • Improved HTML -> XHTML in many places
                                  • +
                                  • Many fixes for non-MySQL databases
                                  • +
                                  • A few hard-coded text strings around the place were made translatable
                                  • +
                                  • User profile data is now properly cleaned
                                  • +
                                  • FIxes for when Moodle is embedded within a frame (eg in Postnuke)
                                  • +
                                  • Bug fixes to Wiki mode
                                  • +
                                  • Admin can no longer edit external accounts
                                  • +
                                  • Qmail users can use "qmail" in the smtphosts field for better results
                                  • +
                                  • Multiple methods of redirecting, to work around some browser bugs
                                  • +
                                  • Small improvements to the display of grades in the gradebook
                                  • +
                                  • More student profile fields can be edited, such as department and institution, and these are also written to grade dumps in text or Excel.
                                  • +
                                  • When a student is added as a teacher, they are now automatically unenrolled from being a student
                                  • +
                                  • Upgraded ADOdb (database layer)
                                  • +
                                  +
                                  +
                                  +
                                +
                                + +
                                +

                                +Old release information +

                                +
                                +

                                 

                                +

                                Moodle Documentation

                                +

                                Version: $Id$

                                diff --git a/lang/fr_ca/docs/releaseold.html b/lang/fr_ca/docs/releaseold.html index 8ba64db850b..0d9f1e3a111 100644 --- a/lang/fr_ca/docs/releaseold.html +++ b/lang/fr_ca/docs/releaseold.html @@ -14,397 +14,6 @@

                                Notes de mise à jour

                                -

                                Not yet completely translated

                                -

                                New in Moodle 1.3.4 (11th August, 2004)

                                -
                                  -
                                  -
                                  Updates
                                  -
                                  -
                                    -
                                  • Some compatibility was added for handling glossaries and resources from Moodle 1.4.
                                  • -
                                  • Forbid restricted users from changing enrolments
                                  • -
                                  -
                                  -
                                  Bug fixes
                                  -
                                  -
                                    -
                                  • Fixed a reported vulnerability involving arguments to forum/post.php file
                                  • -
                                  • Fixed a possible vulnerability involving strings in Moodle texts
                                  • -
                                  • Fixed a rare glitch with attempt numbers in quizzes
                                  • -
                                  • Fixed a bug with regular expression logic in short answers
                                  • -
                                  • Fixed a typo in the PostgreSQL install
                                  • -
                                  • Fixed some documentation links
                                  • -
                                  -
                                  -
                                  -
                                - -
                                - -

                                New in Moodle 1.3.3 (16th July, 2004)

                                -
                                  -
                                  -
                                  Updates
                                  -
                                  -
                                    -
                                  • The ADOdb library was upgraded to a version compatible with PHP 5.0
                                  • -
                                  • Improvements to the detection and conversion of URLs in backups
                                  • -
                                  -
                                  -
                                  Bug fixes
                                  -
                                  -
                                    -
                                  • A possible vulnerability involving arguments to the help.php file was fixed.
                                  • -
                                  • A possible vulnerability involving language setting was fixed.
                                  • -
                                  • Fixes for the editing of lang strings with double quotes in them
                                  • -
                                  • Several small problems fixed in Glossary
                                  • -
                                  • Some minor issues fixed in the Scorm module
                                  • -
                                  -
                                  -
                                  -
                                - -
                                - - -

                                New in Moodle 1.3.2 (9th July, 2004)

                                -
                                  -
                                  -
                                  Updates
                                  -
                                  -
                                    -
                                  • The SCORM module is now included as standard
                                  • -
                                  • Some new languages (Malaysian, Estonian)
                                  • -
                                  • Many more existing languages are now completed up to 1.3.x
                                  • -
                                  -
                                  -
                                  Bug fixes
                                  -
                                  -
                                    -
                                  • A possible front page vulnerability with Moodle servers on some old PHP versions was fixed. If you are using a version of PHP previous to 4.3 then it might be a good idea to upgrade to this version of Moodle.
                                  • -
                                  • Important fixes to logic when forums are used for group activities
                                  • -
                                  • Editing teacher profiles are visible even to separated groups in a class
                                  • -
                                  • Subject lines in multibyte languages in recent activity are no longer broken by wrapping function
                                  • -
                                  • A few issues related to glossary export/import were fixed
                                  • -
                                  • Backup is now better at managing it's temporary files
                                  • -
                                  • Other small fixes here and there
                                  • -
                                  -
                                  -
                                  -
                                - -
                                - - -

                                New in Moodle 1.3.1 (4th June, 2004)

                                -
                                  -
                                  -
                                  Bug fixes
                                  -
                                  -
                                    -
                                  • Some HTML code affecting stability of HTML editor under IE6 on some pages was fixed
                                  • -
                                  • Some bugs were fixed in several auto-linking text filters
                                  • -
                                  • Improved-looking navigation bar (using the » character)
                                  • -
                                  • Flash files now have their own icon
                                  • -
                                  • Adding course links using HTML editor now fixed for teachers
                                  • -
                                  • Section links block now preserves focussed view
                                  • -
                                  • Sites files now respect forcelogin setting
                                  • -
                                  • Upgrading blocks without database functions now works
                                  • -
                                  • Language updates
                                  • -
                                  -
                                  -
                                  -
                                - -
                                - -

                                New in Moodle 1.3 (25th May, 2004)

                                -
                                  -
                                  -
                                  Major new features
                                  -
                                  -
                                    -
                                  • New Calendar feature (thanks to Jon Papaioannou and the Greek School Network!)
                                  • -
                                  • New Blocks feature, allowing blocks to be added and moved around on course pages (thanks to Jon Papaioannou, Eloy Lafuente and others!)
                                  • -
                                  • New RSS System allows Forums and Glossaries (and later other modules) to publish RSS feeds (Thanks, Eloy!)
                                  • -
                                  • Mediaplugin filter now supports auto-embedding of Quicktime, Flash, and Windows Media files.
                                  • -
                                  • A new Activity Names filter will automatically add hyperlinks to other activities in the same course whenever their name is mentioned.
                                  • -
                                  -
                                  -
                                  Other new features
                                  -
                                  -
                                    -
                                  • New resource type "Directory" will display a whole directory of uploaded files (including subdirectories)
                                  • -
                                  • Resources that are files (uploaded, or webpages) now show the relevant icon on the course page
                                  • -
                                  • Most internal HTML links within forums and resources are now preserved during backup/restores
                                  • -
                                  • It is now possible to pass normal http arguments to files in the Files section. This allows some fancier HTML and Flash in resources.
                                  • -
                                  • $CFG->forceloginforprofiles can be set to prevent guests from seeing site-level user profiles (including Google).
                                  • -
                                  • When Google access is enabled, then Google web page translations now work too.
                                  • -
                                  • Sessions are now stored privately in the Moodle data directory - this makes Moodle work better on clusters, and solves some session timeout problems when using Moodle on shared web hosts
                                  • -
                                  • User pictures can now be easily deleted from the profile editing page
                                  • -
                                  • Talking in Chat now appears in the main logs.
                                  • -
                                  • Hidden sections in courses can now be completely hidden from students (course setting)
                                  • -
                                  • Improvements to text inside graphs for some non-English languages, using Unicode fonts.
                                  • -
                                  • Improved interface for managing Scales, as well as better handling in mulitlingual sites
                                  • -
                                  • All students can now be unenrolled with one button (on the Students page)
                                  • -
                                  • Subscribers to forums can now be manually subscribed or unsubscribed in groups
                                  • -
                                  • Better handling of some European characters in filenames and usernames
                                  • -
                                  • Feedback notices for a hidden assignment aren't mailed out until it's unhidden
                                  • -
                                  • Expanded support for importing Blackboard quizzes
                                  • -
                                  • The cron script can now be run using a PHP binary from any directory
                                  • -
                                  • The HTML editor has been further improved and streamlined.
                                  • -
                                  • The default recent activity display is now calculated from the last access to that course (or two days, whichever is more recent). Previously it was from the last login to the site.
                                  • -
                                  • Confirmation emails are now in HTML and Text, to help prevent breaking of confirmation link.
                                  • -
                                  • New languages: Farsi, Latvian, Norwegian Primary School, Unicode version of Traditional Chinese.
                                  • -
                                  -
                                  -
                                  Bug fixes
                                  -
                                  -
                                    -
                                  • Hundreds of small bugs were fixed in all areas, generally improving appearance and robustness.
                                  • -
                                  • As always, if you find bugs in Moodle, please report them to our Bug Tracker!
                                  • -
                                  -

                                   

                                  -
                                  -
                                  Finally, don't forget to look at some of the many optional modules under development, including the SCORM module, the Wiki module, the Hot Potatoes module and many other innovations.
                                  -
                                  -
                                - -

                                 

                                -


                                - - -

                                -

                                New in Moodle 1.2.1 (25th March, 2004)

                                -
                                  -
                                  -
                                  Various small bug fixes
                                  -
                                  -
                                    -
                                  • Fixed some bugs that were causing survey graphs and results not to display in some circumstances
                                  • -
                                  • Improved security in the cron script
                                  • -
                                  • Fixed WebCT quiz import to deal with missing images, shortanswers and escaped characters
                                  • -
                                  • Fixed formatting on editor dialog to insert links
                                  • -
                                  • Prevent glossary from adding links to activity names that are already links
                                  • -
                                  • Fixed some timezone calculations when user isn't present
                                  • -
                                  • Characters like :( in Javascript code within filtered HTML are no longer converted to a sad smiley
                                  • -
                                  • Improved handling of ratings for single forums when secureforms is on.
                                  • -
                                  • Multichoice question creation now defaults to a single correct answer format
                                  • -
                                  • Guests can no longer see email addresses if "show only to course participants" has been set by that user
                                  • -
                                  • Primary admin is now the lowest-numbered entry in user_admins, rather than the admin with the lowest userid.
                                  • -
                                  • Modified flash MP3 plugin to improve brightness of Play button on darker screens
                                  • -
                                  • Various polishing and improvements in many language packs
                                  • -
                                  -
                                  -
                                  -
                                - -
                                - - -

                                New in Moodle 1.2 (20th March, 2004)

                                -
                                  -
                                  -
                                  Major new features
                                  -
                                  -
                                    -
                                  • New support for groups and cohorts within courses (with many options)
                                  • -
                                  • Text filters allow arbitrary processing on all text in Moodle, including automatic linking, mathematics support, multi-language content and infinitely more possibilities
                                  • -
                                  • A fantastic new Glossary module (thanks to Williams Castillo!) with many different ways to contruct learning activities based around collecting definitions
                                  • -
                                  • A great new Lesson module (thanks to Ray Kingdon!) easily creates active content with pathways and multiple-choice questions
                                  • -
                                  • A new Label module allows arbitrary HTML in the course page
                                  • -
                                  • An improved WYSIWYG editor, faster and more cross-platform than the old one
                                  • -
                                  • Automatic backups can be scheduled by the administrator for all courses at once
                                  • -
                                  -
                                  -
                                  Courses
                                  -
                                  -
                                    -
                                  • Activities can now be indented on the course outline, allowing more structure
                                  • -
                                  • A new report for Recent Activity makes it easier to see what's happened recently
                                  • -
                                  • A new logs button on every activity links to the logs page to show logs per-activity
                                  • -
                                  • Restore button now always functional
                                  • -
                                  • Improved "index" view for all modules
                                  • -
                                  • Improvements to participants display, including paging and initial searching
                                  • -
                                  • Excel downloads are more compatible with different operating systems
                                  • -
                                  • Better error reporting when adding/updating activities
                                  • -
                                  • Search box no longer auto-focuses (it was causing annoying auto-scrolling on long courses)
                                  • -
                                  • Self-unenrollment link on the course page for students
                                  • -
                                  • Change password link on the course page for students
                                  • -
                                  • Students can now be allowed to see their own activity reports (course setting)
                                  • -
                                  • Teachers can browse the course files for images when using the new editor
                                  • -
                                  • New image of empty box as destination when moving activities
                                  • -
                                  • Accesses are now recorded by course, so the participant listings make more sense
                                  • -
                                  • The activity navbar now has buttons for previous and next activities
                                  • -
                                  • File dates were incorrect on some systems - this is now fixed.
                                  • -
                                  • Old chat users are no longer shown in the recent activity
                                  • -
                                  -
                                  -
                                  Site administration
                                  -
                                  -
                                    -
                                  • An important security fix preventing teachers from logging in as admins who are students in their course
                                  • -
                                  • New setting "forcelogin" can force people to log in before they can see any of the site
                                  • -
                                  • New setting "opentogoogle" allows Google and people referred by Google to get in as guest
                                  • -
                                  • New setting "timezone" allows a default timezone to be set for the whole site
                                  • -
                                  • New setting "deleteunconfirmed" specifies the time we'll wait for email accounts to be confirmed
                                  • -
                                  • New setting "allowunenroll" enables/disables students from unenrolling themselves from courses
                                  • -
                                  • New setting "fullnamedisplay" allows override for the formatting of user full names so students can only see "firstname lastname", "lastname firstname" or "firstname"
                                  • -
                                  • Individual users can have their email disabled by the teacher or admin (useful for dealing with broken mail accounts that are bouncing)
                                  • -
                                  • Upload sizes can now be controlled throughout Moodle using "maxbytes". There is a site limit (bounded by the current PHP limits), which itself is the upper bound for course limits, which is the upper bound for activity limits.
                                  • -
                                  • Moodle cookies can be customised (helps when running multiple Moodles on one site)
                                  • -
                                  • Included script for analysing database performance (admin/dbperformance.php)
                                  • -
                                  • Included standalone script to check a server for Moodle compatibility (lib/compatible.php)
                                  • -
                                  • If a file called cronextra.php exists in the dataroot then cron will run that too. This allows sites to have "special" maintenance features.
                                  • -
                                  • Course formats are now more like plugins, in separate directories
                                  • -
                                  • Users can now be uploaded from text files
                                  • -
                                  • If $CFG->disableuserimages is defined (in config.php) then user images can not be changed
                                  • -
                                  • If $CFG->admineditalways is defined then the administrator can edit ANY post at any time.
                                  • -
                                  • If $CFG->filterall is defined then even little things liks forum subjects and activity names are filtered
                                  • -
                                  • Support for restricted demo users (eg the teacher demo on Moodle.org) - usernames can be added to a list of names in config.php. eg $CFG->restrictusers = 'teacher,fred';
                                  • -
                                  -
                                  -
                                  Themes
                                  -
                                  -
                                    -
                                  • Fixes for Internet Explorer can be more robust at using the style sheet
                                  • -
                                  • Miscellaneous fixes and improvements to themes - custom themes need upgrading!
                                  • -
                                  -
                                  -
                                  Translations
                                  -
                                  -
                                    -
                                  • New languages: Galego and Lithuanian
                                  • -
                                  • Improved language editing interface - it allows the current language to be chosen and allows each file to be edited separately.
                                  • -
                                  • The list of country names can now be translated, as can the editor buttons, smiley names and file sizes (Mb, Gb etc)
                                  • -
                                  • Language packs can now define the default language direction (RTL or LTR)
                                  • -
                                  • Language packs can now define the order that people's names should be shown in
                                  • -
                                  • Language files are now written using slightly more efficient PHP code
                                  • -
                                  • Finally got rid of the final bogus linefeeds in the multi-line strings
                                  • -
                                  • Courses can now "force" a language on all users
                                  • -
                                  -
                                  -
                                  Backup / Restore
                                  -
                                  -
                                    -
                                  • Automatic backups can be scheduled by the administrator for all courses at once
                                  • -
                                  • Logs are now fully restored
                                  • -
                                  • All needed users are now included in course backups (even if no longer enrolled)
                                  • -
                                  • Miscellaneous fixes and improvements
                                  • -
                                  -
                                  -
                                  Text Filters and Formatting
                                  -
                                  -
                                    -
                                  • Warning: the new text filters can increase the load on your server, particularly when used with complex filters. Use them with caution.
                                  • -
                                  • The new glossary filter can create links to glossary entries from matching words throughout Moodle.
                                  • -
                                  • The new TeX filter can convert TeX code found anywhere in Moodle into true Mathematics notation (GIF format image). There is also an algebra filter with a simpler input format (more like calculators).
                                  • -
                                  • The new censor filter can be enabled to filter out bad words.
                                  • -
                                  • The new multilang filter allows texts to be entered in multiple languages, and only the best one will be shown to each user (depending on their language setting)
                                  • -
                                  • The <nolink> tag can be used to prevent autolinking within a passage of text.
                                  • -
                                  • More tags are now allowed, including <acronym> and all <math> tags.
                                  • -
                                  • Some areas where text wasn't properly filtered before (security risk) have now been fixed.
                                  • -
                                  -
                                  -
                                  Developer API
                                  -
                                  -
                                    -
                                  • A new coding guide is available
                                  • -
                                  • A new Philosophy guide is available ;-)
                                  • -
                                  • Improvements to the template for new modules
                                  • -
                                  • Modules should now specify the minimum version of Moodle they are compatible with
                                  • -
                                  • Scripts can specify to print_header() whether the page is pure XML
                                  • -
                                  • Any module can save and retrieve user preferences that stay around between logins
                                  • -
                                  -
                                  -
                                  Chats
                                  -
                                  -
                                    -
                                  • Chat sessions can now be deleted
                                  • -
                                  • Scheduled chat times now show the timezone to make it clearer
                                  • -
                                  -
                                  -
                                  Forums
                                  -
                                  -
                                    -
                                  • Forum viewing preferences are remembered between logins
                                  • -
                                  • "Show parent" link on all posts for faster navigation around forums
                                  • -
                                  • Anchor tags allow individual posts to be referenced in all views
                                  • -
                                  • Improvements to cron job when manually run, as well as logging of mailer errors
                                  • -
                                  • Only print the ratings button when there are ratings to be made
                                  • -
                                  • Vastly improved email text versions of HTML forum posts
                                  • -
                                  • When replying, an outline of other replies is shown.
                                  • -
                                  • When using the HTML editor to post, other formatting options are no longer provided.
                                  • -
                                  -
                                  -
                                  Journals
                                  -
                                  -
                                    -
                                  • Journal questions can now use the HTML editor
                                  • -
                                  • Some fixes to the report page when assessing journal entries
                                  • -
                                  -
                                  -
                                  Quizzes
                                  -
                                  -
                                    -
                                  • Questions and categories can now be edited without needing to open a quiz
                                  • -
                                  • All questions can now use any of the Moodle editing formats
                                  • -
                                  • New import format: GIFT format (this is the new default format)
                                  • -
                                  • New import format: Course Test Manager
                                  • -
                                  • New import format: WebCT format
                                  • -
                                  • New import format: Aiken format
                                  • -
                                  • Short-Answer questions can now use wildcards for matching eg wild*rds
                                  • -
                                  • Images now work in questions from external published categories
                                  • -
                                  • Improved the overview reports to show more info and allow deletion of attempts
                                  • -
                                  • Added a new detailed quiz report for statistical anaylsis
                                  • -
                                  • All question types can now have up to 10 answers each
                                  • -
                                  • Menus in quiz editing no longer need submit buttons (just select from menu)
                                  • -
                                  • Fixed bug that occurred when re-grading SOME quizzes with random questions in them
                                  • -
                                  • Fixed bug that occurred in backups of quizzes with random questions in them
                                  • -
                                  • Many other small bugs fixed
                                  • -
                                  -
                                  -
                                  Resources
                                  -
                                  -
                                    -
                                  • Teachers can browse files more directly when creating uploaded file
                                  • -
                                  • New settings to allow a default URL, a default search page and default popup settings
                                  • -
                                  • Uploaded files can appear in popups too.
                                  • -
                                  • Much better display of popups when using the navbar to go there
                                  • -
                                  • MP3 files are now streamed using a built-in Flash MP3 player
                                  • -
                                  • Video files (Media player, Quicktime) are embedded using local plugins
                                  • -
                                  -
                                  -
                                  Workshops
                                  -
                                  -
                                    -
                                  • Changes to handling of peer assessments
                                  • -
                                  • New assessment phase
                                  • -
                                  • New options for the league table
                                  • -
                                  -
                                  -
                                  Miscellaneous
                                  -
                                  -
                                    -
                                  • Moodle now ignores any folders that Frontpage may have added to it (_vti_cnf).
                                  • -
                                  • Improved HTML -> XHTML in many places
                                  • -
                                  • Many fixes for non-MySQL databases
                                  • -
                                  • A few hard-coded text strings around the place were made translatable
                                  • -
                                  • User profile data is now properly cleaned
                                  • -
                                  • FIxes for when Moodle is embedded within a frame (eg in Postnuke)
                                  • -
                                  • Bug fixes to Wiki mode
                                  • -
                                  • Admin can no longer edit external accounts
                                  • -
                                  • Qmail users can use "qmail" in the smtphosts field for better results
                                  • -
                                  • Multiple methods of redirecting, to work around some browser bugs
                                  • -
                                  • Small improvements to the display of grades in the gradebook
                                  • -
                                  • More student profile fields can be edited, such as department and institution, and these are also written to grade dumps in text or Excel.
                                  • -
                                  • When a student is added as a teacher, they are now automatically unenrolled from being a student
                                  • -
                                  • Upgraded ADOdb (database layer)
                                  • -
                                  -
                                  -
                                  -
                                -

                                Nouveautés de Moodle 1.1.1 (10 septembre 2003) :

                                  diff --git a/lang/fr_ca/editor.php b/lang/fr_ca/editor.php index 829959b8472..ad927bb91c3 100644 --- a/lang/fr_ca/editor.php +++ b/lang/fr_ca/editor.php @@ -1,5 +1,4 @@ ] pour retourner en MODE WYSIWYG.'; $string['texttop'] = 'Début du texte'; -$string['thisdirection'] = 'ltr'; $string['top'] = 'Haut'; -$string['type'] = 'Type'; $string['underline'] = 'Souligné'; $string['undo'] = 'Annuler la dernière action'; $string['unorderedlist'] = 'Liste non numérotée'; -$string['upload'] = 'Envoyer'; $string['vertical'] = 'Vertical'; $string['width'] = 'Largeur'; -$string['wordclean'] = 'Enlever les codes HTML superflus du fichier Word'; +$string['size'] = 'Taille'; +$string['height'] = 'Hauteur'; +$string['filebrowser'] = 'Sélection des fichiers'; +$string['properties'] = 'Propriétés'; +$string['type'] = 'Type'; +$string['selection'] = 'Sélection'; +$string['delete'] = 'Effacer'; +$string['move'] = 'Déplacer'; $string['zip'] = 'Compresser'; +$string['rename'] = 'Renommer'; +$string['createfolder'] = 'Créer un dossier'; +$string['upload'] = 'Envoyer'; +$string['notimage'] = 'Le fichier sélectionné n\'est pas une image. Veuillez sélectionner une image !'; +$string['insertlink'] = 'Insérer un lien'; +$string['linkproperties'] = 'Propriétés du lien'; +$string['linkurl'] = 'URL'; +$string['linktitle'] = 'Titre'; +$string['linktarget'] = 'Cible'; +$string['linktargetnone'] = 'Aucune'; +$string['linktargetblank'] = 'Nouvelle fenêtre'; +$string['linktargetself'] = 'Même cadre (frame)'; +$string['linktargettop'] = 'Même fenêtre'; +$string['linktargetother'] = 'Autre (en panne)'; ?> diff --git a/lang/fr_ca/error.php b/lang/fr_ca/error.php index 49159d82cd0..ae5cde3dbe3 100644 --- a/lang/fr_ca/error.php +++ b/lang/fr_ca/error.php @@ -1,23 +1,15 @@ -modulename\" ($a->moduleversion) n\'a pu être installé. Ce module requiert une nouvelle version de Moodle (vous utilisez actuellement $a->currentmoodle et vous avez besoin de $a->requiremoodle).'; -$string['notavailable'] = 'Ceci n\'est pas disponible présentement.'; -$string['parentlanguage'] = 'fr'; -$string['restricteduser'] = 'Désolé, mais votre compte actuel \"$a\" ne vous permet pas de faire cela.'; -$string['thisdirection'] = 'ltr'; -$string['unknowncourse'] = 'Le cours \"$a\" est inconnu'; -$string['usernotaddederror'] = 'L\'utilisateur \"$a\" n\'a pu être ajouté suite à une erreur inconnue.'; -$string['usernotaddedregistered'] = 'L\'utilisateur \"$a\" n\'a pas été ajouté puisqu\'il est déjà inscrit.'; -$string['usernotavailable'] = 'L\'Information sur cet utilisateur ne peut vous être fourni.'; - -?> +modulename\" ($a->moduleversion) n\'a pu être installé. Ce module requiert une nouvelle version de Moodle (vous utilisez actuellement $a->currentmoodle et vous avez besoin de $a->requiremoodle).'; +$string['restricteduser'] = 'Désolé, mais votre compte actuel \"$a\" ne vous permet pas de faire cela.'; +$string['unknowncourse'] = 'Le cours \"$a\" est inconnu'; +$string['usernotaddederror'] = 'L\'utilisateur \"$a\" n\'a pu être ajouté suite à une erreur inconnue.'; +$string['usernotaddedregistered'] = 'L\'utilisateur \"$a\" n\'a pas été ajouté puisqu\'il est déjà inscrit.'; + +?> diff --git a/lang/fr_ca/forum.php b/lang/fr_ca/forum.php index fbd866da315..e85c130bc5e 100644 --- a/lang/fr_ca/forum.php +++ b/lang/fr_ca/forum.php @@ -1,159 +1,136 @@ -name - $a->date'; -$string['configdisplaymode'] = 'Mode d\'affichage par défaut si aucun autre n\'a été spécifié'; -$string['configenablerssfeeds'] = 'Ce paramètre permet de donner la posssibilité d\'activer ou non la publication des messages des forums selon l\'alimentation RSS. Si activé, la publication doit être permise au niveau de chacun des forums.'; -$string['configlongpost'] = 'Tout message qui dépasse cette longueur (sans inclure les balises HTML) est considéré long.'; -$string['configmanydiscussions'] = 'Nombre maximal de sujets de discussion affiché par page'; -$string['configmaxbytes'] = 'Taille maximale pour les fichiers joints dans les forums de ce site (limitée par ailleurs par les autres limites du cours et autres variables locales)'; -$string['configreplytouser'] = 'Lorsque le message d\'un forum est envoyé par courriel, doit-il contenir l\'adresse de courriel de l\'utilisateur pour que ceux qui recevront le message puissent répondre directement ou par le forum. Même en répondant \"oui\", l\'utilisateur peut choisir de cacher son adresse.'; -$string['configshortpost'] = 'Tout message qui ne dépasse pas cette longueur (sans inclure les balises HTML) est considéré court.'; -$string['couldnotadd'] = 'Impossible d\'ajouter votre message à cause d\'une erreur inconnue.'; -$string['couldnotdeleteratings'] = 'Désolé, la suppression n\'est plus possible car des participants l\'ont déjà évalué.'; -$string['couldnotdeletereplies'] = 'Désolé, la suppression n\'est plus possible car des participants y ont déjà répondu.'; -$string['couldnotupdate'] = 'Impossible de modifier votre message à cause d\'une erreur inconnue'; -$string['delete'] = 'Supprimer'; -$string['deleteddiscussion'] = 'Le sujet de discussion a été supprimé'; -$string['deletedpost'] = 'Le message a été supprimé'; -$string['deletesure'] = 'Êtes-vous certain de vouloir supprimer ce message ?'; -$string['digestmailheader'] = 'Ceci est votre envoi quotidien des nouveaux messages des forums de $a->sitename. Pour changer vos préférences d\'envoi des messages, allez à $a->userprefs.'; -$string['digestmailprefs'] = 'votre profil d\'utilisateur'; -$string['digestmailsubject'] = '$a: sommaire du forum'; -$string['digestsentusers'] = 'Les sommaires des messages des forums ont été correctement envoyés par courriel.'; -$string['discussion'] = 'Discussion'; -$string['discussionmoved'] = 'Cette discussion a été déplacée à \'$a\'.'; -$string['discussionname'] = 'Nom de la discussion'; -$string['discussions'] = 'Discussions'; -$string['discussionsstartedby'] = 'Discussions commencées par $a'; -$string['discussionsstartedbyrecent'] = 'Discussions lancées récemment par $a'; -$string['discussthistopic'] = 'Discuter sur ce sujet'; -$string['eachuserforum'] = 'Chaque personne lance une nouvelle discussion'; -$string['edit'] = 'Modifier'; -$string['editing'] = 'Modification'; -$string['emptymessage'] = 'Il y a eu un problème avec votre message. Peut-être est-il vide ou bien la pièce attachée est trop grosse. Vos modifications n\'ont pas été enregistrées.'; -$string['everyonecanchoose'] = 'Tous les participants peuvent choisir de s\'abonner '; -$string['everyoneissubscribed'] = 'Tous les participants sont abonnés à ce forum'; -$string['existingsubscribers'] = 'Abonnés actuels'; -$string['forcesubscribe'] = 'Forcer l\'abonnement de tous les participants'; -$string['forcesubscribeq'] = 'Forcer l\'abonnement de tous les participants ?'; -$string['forum'] = 'Forum'; -$string['forumintro'] = 'Introduction au forum'; -$string['forumname'] = 'Nom du forum'; -$string['forums'] = 'Forums'; -$string['forumtype'] = 'Type du forum'; -$string['generalforum'] = 'Forum standard pour utilisation générale'; -$string['generalforums'] = 'Forums standards'; -$string['inforum'] = 'dans $a'; -$string['intronews'] = 'Nouvelles diverses et annonces'; -$string['introsocial'] = 'Un forum ouvert pour discuter de n\'importe quoi'; -$string['introteacher'] = 'Un forum réservé aux notes et discussions entre professeurs'; -$string['lastpost'] = 'Dernier message'; -$string['learningforums'] = 'Forums pour l\'apprentissage'; -$string['maxattachmentsize'] = 'Taille maximale des fichiers joints'; -$string['maxtimehaspassed'] = 'Désolé mais le délai maximum pour modifier ce message ($a) est dépassé'; -$string['message'] = 'Message'; -$string['modeflatnewestfirst'] = 'Afficher les réponses en ligne, la plus récente en premier'; -$string['modeflatoldestfirst'] = 'Afficher les réponses en ligne, la plus ancienne en premier'; -$string['modenested'] = 'Emboîter les réponses pour l\'affichage'; -$string['modethreaded'] = 'Afficher les réponses en fils de discussions'; -$string['modulename'] = 'Forum'; -$string['modulenameplural'] = 'Forums'; -$string['more'] = 'plus'; -$string['movethisdiscussionto'] = 'Déplacer cette discussion à...'; -$string['namenews'] = 'Forum des nouvelles'; -$string['namesocial'] = 'Forum social'; -$string['nameteacher'] = 'Forum des professeurs'; -$string['newforumposts'] = 'Nouveaux messages dans les forums'; -$string['nodiscussions'] = 'Il n\'y a pas encore de sujet de discussion dans ce forum'; -$string['noguestpost'] = 'Désolé, les invités ne sont pas autorisés à écrire des messages'; -$string['nomorepostscontaining'] = 'Aucun autre message contenant \"$a\" n\'a été trouvé'; -$string['nonews'] = 'Aucune nouvelle n\'a été publiée jusqu\'ici'; -$string['noposts'] = 'Aucun message'; -$string['nopostscontaining'] = 'Aucun message contenant « $a » n\'a été trouvé'; -$string['nosubscribers'] = 'Il n\'y a personne d\'abonné à ce forum'; -$string['notingroup'] = 'Désolé, vous devez faire partie d\'un groupe pour consulter ce forum.'; -$string['nownotsubscribed'] = '$a->name NE recevra PAS de copie des messages postés dans ce \'$a->forum\' par courriel.'; -$string['nowsubscribed'] = '$a->name recevra une copie des messages de ce \'$a->forum\' par courriel.'; -$string['numposts'] = '$a messages'; -$string['olderdiscussions'] = 'Discussions plus anciennes'; -$string['openmode0'] = 'On ne peut ajouter de discussions, ni répondre'; -$string['openmode1'] = 'Aucun ajout de discussion, mais les réponses sont autorisées'; -$string['openmode2'] = 'Ajout de discussions et réponses permises'; -$string['parent'] = 'Montrer le parent'; -$string['parentlanguage'] = 'fr'; -$string['parentofthispost'] = 'Niveau supérieur de ce message'; -$string['postadded'] = 'Votre message a été enregistré.

                                  Il vous est possible de le modifier pendant $a.'; -$string['postincontext'] = 'Voir ce message dans son contexte'; -$string['postmailinfo'] = 'Ceci est une copie du message posté sur le site $a. Pour répondre à ce message, cliquez sur le lien : '; -$string['postrating1'] = 'Ne semble pas très pertinent'; -$string['postrating2'] = 'Moyennement intéressant'; -$string['postrating3'] = 'Très pertinent'; -$string['posts'] = 'Messages'; -$string['posttoforum'] = 'Publier dans le forum'; -$string['postupdated'] = 'Votre message a été modifié.'; -$string['potentialsubscribers'] = 'Abonnés potentiels'; -$string['processingdigest'] = 'Production du sommaire des messages pour l\'utilisateur $a'; -$string['processingpost'] = 'Enregistrement du message $a'; -$string['prune'] = 'Séparer'; -$string['prunedpost'] = 'Une nouvelle discussion a été créée à partir du message.'; -$string['pruneheading'] = 'Séparer cette discussion et déplacer ce message dans une nouvelle discussion'; -$string['rate'] = 'Évaluer'; -$string['rating'] = 'Évaluation'; -$string['ratingeveryone'] = 'Tous peuvent évaluer les messages'; -$string['ratingno'] = 'Pas d\'évaluaton'; -$string['ratingonlyteachers'] = 'Seulement $a peut évaluer les messages'; -$string['ratingpublic'] = '$a peut voir les évaluations de tout le monde'; -$string['ratingpublicnot'] = '$a peut voir seulement ses propres évaluations '; -$string['ratings'] = 'Évaluations'; -$string['ratingssaved'] = 'Évaluations sauvegardées'; -$string['ratingsuse'] = 'Utiliser les évaluations'; -$string['ratingtime'] = 'Restreindre l\'évaluation des messages compris dans l\'intervalle :'; -$string['re'] = 'Re:'; -$string['readtherest'] = 'Lire la suite de la discussion'; -$string['replies'] = 'Réponses'; -$string['repliesmany'] = '$a réponses jusqu\'à présent'; -$string['repliesone'] = '$a réponse jusqu\'à présent'; -$string['reply'] = 'Répondre'; -$string['replyforum'] = 'Répondre au forum'; -$string['rsssubscriberssdiscussions'] = 'Afficher l\'alimentation RSS pour $a discussions.'; -$string['rsssubscriberssposts'] = 'Afficher l\'alimentation RSS for $a messages.'; -$string['search'] = 'Chercher'; -$string['searchforums'] = 'Chercher dans les forums'; -$string['searcholderposts'] = 'Chercher dans les messages plus anciens...'; -$string['searchresults'] = 'Résultats de la recherche'; -$string['sendinratings'] = 'Envoyer mes dernières évaluations'; -$string['showsubscribers'] = 'Afficher les participants abonnés'; -$string['singleforum'] = 'Un seul sujet de discussion'; -$string['startedby'] = 'Lancée par'; -$string['subject'] = 'Sujet'; -$string['subscribe'] = 'S\'abonner à ce forum pour recevoir une copie des messages par courriel'; -$string['subscribeall'] = 'Abonner tout le monde à ce forum'; -$string['subscribed'] = 'Abonné'; -$string['subscribenone'] = 'Désabonner tout le monde de ce forum'; -$string['subscribers'] = 'Abonnés'; -$string['subscribersto'] = 'Abonnés à « $a »'; -$string['subscribestart'] = 'Envoyez moi une copie des messages de ce forum par courriel'; -$string['subscribestop'] = 'Je ne veux pas de copie des messages de ce forum par courriel'; -$string['subscription'] = 'Abonnement'; -$string['subscriptions'] = 'Abonnement'; -$string['thisdirection'] = 'ltr'; -$string['unsubscribe'] = 'Se désabonner de ce forum (ne plus recevoir une copie des messages par courriel)'; -$string['unsubscribed'] = 'Désabonné'; -$string['unsubscribeshort'] = 'Désabonner'; -$string['yesforever'] = 'Oui, pour toujours'; -$string['yesinitially'] = 'Oui, au début'; -$string['youratedthis'] = 'Vous l\'avez évalué'; -$string['yournewtopic'] = 'Nouveau sujet de discussion'; -$string['yourreply'] = 'Votre réponse'; - -?> +name - $a->date'; +$string['configdisplaymode'] = 'Mode d\'affichage par défaut si aucun autre n\'a été spécifié'; +$string['configlongpost'] = 'Tout message qui dépasse cette longueur (sans inclure les balises HTML) est considéré long.'; +$string['configmanydiscussions'] = 'Nombre maximal de sujets de discussion affiché par page'; +$string['configmaxbytes'] = 'Taille maximale pour les fichiers joints dans les forums de ce site (limitée par ailleurs par les autres limites du cours et autres variables locales)'; +$string['configshortpost'] = 'Tout message qui ne dépasse pas cette longueur (sans inclure les balises HTML) est considéré court.'; +$string['couldnotadd'] = 'Impossible d\'ajouter votre message à cause d\'une erreur inconnue.'; +$string['couldnotdeleteratings'] = 'Désolé, la suppression n\'est plus possible car des participants l\'ont déjà évalué.'; +$string['couldnotdeletereplies'] = 'Désolé, la suppression n\'est plus possible car des participants y ont déjà répondu.'; +$string['couldnotupdate'] = 'Impossible de modifier votre message à cause d\'une erreur inconnue'; +$string['delete'] = 'Supprimer'; +$string['deleteddiscussion'] = 'Le sujet de discussion a été supprimé'; +$string['deletedpost'] = 'Le message a été supprimé'; +$string['deletesure'] = 'Êtes-vous certain de vouloir supprimer ce message ?'; +$string['discussion'] = 'Discussion'; +$string['discussionmoved'] = 'Cette discussion a été déplacée à \'$a\'.'; +$string['discussions'] = 'Discussions'; +$string['discussionsstartedby'] = 'Discussions commencées par $a'; +$string['discussionsstartedbyrecent'] = 'Discussions lancées récemment par $a'; +$string['discussthistopic'] = 'Discuter sur ce sujet'; +$string['eachuserforum'] = 'Chaque personne lance une nouvelle discussion'; +$string['edit'] = 'Modifier'; +$string['editing'] = 'Modification'; +$string['emptymessage'] = 'Il y a eu un problème avec votre message. Peut-être est-il vide ou bien la pièce attachée est trop grosse. Vos modifications n\'ont pas été enregistrées.'; +$string['everyonecanchoose'] = 'Tous les participants peuvent choisir de s\'abonner '; +$string['everyoneissubscribed'] = 'Tous les participants sont abonnés à ce forum'; +$string['forcesubscribe'] = 'Forcer l\'abonnement de tous les participants'; +$string['forcesubscribeq'] = 'Forcer l\'abonnement de tous les participants ?'; +$string['forum'] = 'Forum'; +$string['forumintro'] = 'Introduction au forum'; +$string['forumname'] = 'Nom du forum'; +$string['forums'] = 'Forums'; +$string['forumtype'] = 'Type du forum'; +$string['generalforum'] = 'Forum standard pour utilisation générale'; +$string['generalforums'] = 'Forums standards'; +$string['inforum'] = 'dans $a'; +$string['intronews'] = 'Nouvelles diverses et annonces'; +$string['introsocial'] = 'Un forum ouvert pour discuter de n\'importe quoi'; +$string['introteacher'] = 'Un forum réservé aux notes et discussions entre professeurs'; +$string['lastpost'] = 'Dernier message'; +$string['learningforums'] = 'Forums pour l\'apprentissage'; +$string['maxattachmentsize'] = 'Taille maximale des fichiers joints'; +$string['maxtimehaspassed'] = 'Désolé mais le délai maximum pour modifier ce message ($a) est dépassé'; +$string['message'] = 'Message'; +$string['modeflatnewestfirst'] = 'Afficher les réponses en ligne, la plus récente en premier'; +$string['modeflatoldestfirst'] = 'Afficher les réponses en ligne, la plus ancienne en premier'; +$string['modenested'] = 'Emboîter les réponses pour l\'affichage'; +$string['modethreaded'] = 'Afficher les réponses en fils de discussions'; +$string['modulename'] = 'Forum'; +$string['modulenameplural'] = 'Forums'; +$string['more'] = 'plus'; +$string['movethisdiscussionto'] = 'Déplacer cette discussion à...'; +$string['namenews'] = 'Forum des nouvelles'; +$string['namesocial'] = 'Forum social'; +$string['nameteacher'] = 'Forum des professeurs'; +$string['newforumposts'] = 'Nouveaux messages dans les forums'; +$string['nodiscussions'] = 'Il n\'y a pas encore de sujet de discussion dans ce forum'; +$string['noguestpost'] = 'Désolé, les invités ne sont pas autorisés à écrire des messages'; +$string['nomorepostscontaining'] = 'Aucun autre message contenant \"$a\" n\'a été trouvé'; +$string['nonews'] = 'Aucune nouvelle n\'a été publiée jusqu\'ici'; +$string['noposts'] = 'Aucun message'; +$string['nopostscontaining'] = 'Aucun message contenant « $a » n\'a été trouvé'; +$string['nosubscribers'] = 'Il n\'y a personne d\'abonné à ce forum'; +$string['notingroup'] = 'Désolé, vous devez faire partie d\'un groupe pour consulter ce forum.'; +$string['nownotsubscribed'] = '$a->name NE recevra PAS de copie des messages postés dans ce \'$a->forum\' par courriel.'; +$string['nowsubscribed'] = '$a->name recevra une copie des messages de ce \'$a->forum\' par courriel.'; +$string['numposts'] = '$a messages'; +$string['olderdiscussions'] = 'Discussions plus anciennes'; +$string['openmode0'] = 'On ne peut ajouter de discussions, ni répondre'; +$string['openmode1'] = 'Aucun ajout de discussion, mais les réponses sont autorisées'; +$string['openmode2'] = 'Ajout de discussions et réponses permises'; +$string['parent'] = 'Montrer le parent'; +$string['parentofthispost'] = 'Niveau supérieur de ce message'; +$string['postadded'] = 'Votre message a été enregistré.

                                  Il vous est possible de le modifier pendant $a.'; +$string['postincontext'] = 'Voir ce message dans son contexte'; +$string['postmailinfo'] = 'Ceci est une copie du message posté sur le site $a. Pour répondre à ce message, cliquez sur le lien : '; +$string['postrating1'] = 'Ne semble pas très pertinent'; +$string['postrating2'] = 'Moyennement intéressant'; +$string['postrating3'] = 'Très pertinent'; +$string['posts'] = 'Messages'; +$string['postupdated'] = 'Votre message a été mis-à-jour.'; +$string['processingpost'] = 'Enregistrement du message $a'; +$string['rate'] = 'Évaluer'; +$string['rating'] = 'Évaluation'; +$string['ratingeveryone'] = 'Tous peuvent évaluer les messages'; +$string['ratingno'] = 'Pas d\'évaluaton'; +$string['ratingonlyteachers'] = 'Seulement $a peut évaluer les messages'; +$string['ratingpublic'] = '$a peut voir les évaluations de tout le monde'; +$string['ratingpublicnot'] = '$a peut voir seulement ses propres évaluations '; +$string['ratings'] = 'Évaluations'; +$string['ratingssaved'] = 'Évaluations sauvegardées'; +$string['ratingsuse'] = 'Utiliser les évaluations'; +$string['ratingtime'] = 'Restreindre l\'évaluation des messages compris dans l\'intervalle :'; +$string['re'] = 'Re:'; +$string['readtherest'] = 'Lire la suite de la discussion'; +$string['replies'] = 'Réponses'; +$string['repliesmany'] = '$a réponses jusqu\'à présent'; +$string['repliesone'] = '$a réponse jusqu\'à présent'; +$string['reply'] = 'Répondre'; +$string['replyforum'] = 'Répondre au forum'; +$string['search'] = 'Chercher'; +$string['searchforums'] = 'Chercher dans les forums'; +$string['searcholderposts'] = 'Chercher dans les messages plus anciens...'; +$string['searchresults'] = 'Résultats de la recherche'; +$string['sendinratings'] = 'Envoyer mes dernières évaluations'; +$string['showsubscribers'] = 'Afficher les participants abonnés'; +$string['singleforum'] = 'Un seul sujet de discussion'; +$string['startedby'] = 'Lancée par'; +$string['subject'] = 'Sujet'; +$string['subscribe'] = 'S\'abonner à ce forum pour recevoir une copie des messages par courriel'; +$string['subscribed'] = 'Abonné'; +$string['subscribers'] = 'Abonnés'; +$string['subscribersto'] = 'Abonnés à « $a »'; +$string['subscribestart'] = 'Envoyez moi une copie des messages de ce forum par courriel'; +$string['subscribestop'] = 'Je ne veux pas de copie des messages de ce forum par courriel'; +$string['subscription'] = 'Abonnement'; +$string['subscriptions'] = 'Abonnement'; +$string['unsubscribe'] = 'Se désabonner de ce forum (ne plus recevoir une copie des messages par courriel)'; +$string['unsubscribed'] = 'Désabonné'; +$string['youratedthis'] = 'Vous l\'avez évalué'; +$string['yournewtopic'] = 'Nouveau sujet de discussion'; +$string['yourreply'] = 'Votre réponse'; + +?> diff --git a/lang/fr_ca/glossary.php b/lang/fr_ca/glossary.php index 41dd99ff965..726f37c4250 100644 --- a/lang/fr_ca/glossary.php +++ b/lang/fr_ca/glossary.php @@ -1,168 +1,157 @@ -Les champs pour le concept et la définition sont obligatoires.'; -$string['explainall'] = 'Afficher tous les articles sur une page.'; -$string['explainalphabet'] = 'Parcourir le glossaire en utilisant cet index'; -$string['explainexport'] = 'Un fichier a été généré.
                                  Téléchargez-le sur votre ordinateur et conservez dans un endroit sûr. Vous pouvez l\'importer à tout moment dans ce cours ou dans un autre cours.'; -$string['explainimport'] = 'Vous devez spécifier le fichier à importer et décider comment Moodle doit procéder.
                                  Soumettez votre demande et vérifiez les résultats.'; -$string['explainspecial'] = 'Afficher les articles qui ne débutent pas par une lettre.'; -$string['exportedentry'] = 'Article exporté'; -$string['exportedfile'] = 'Fichier exporté'; -$string['exportentries'] = 'Articles exportés'; -$string['exportglossary'] = 'Exporter le glossaire'; -$string['exporttomainglossary'] = 'Exporter dans le glossaire principal'; -$string['filetoimport'] = 'Fichier à importer'; -$string['fillfields'] = 'Vous devez remplir les champs Concept et Définition.'; -$string['filtername'] = 'Liens automatiques des glossaires'; -$string['fullmatch'] = 'Lier à des mots complets seulement'; -$string['globalglossary'] = 'Glossaire global'; -$string['glossaryleveldefaultsettings'] = 'Paramètres par défaut du glossaire'; -$string['glossarytype'] = 'Type de glossaire'; -$string['glosssaryexported'] = 'Glossaire exporté.'; -$string['importcategories'] = 'Importer des catégories'; -$string['importedcategories'] = 'Catégories importées'; -$string['importedentries'] = 'Articles importés'; -$string['importentries'] = 'Importer des articles'; -$string['isglobal'] = 'Est-ce que ce glossaire est global?'; -$string['linkcategory'] = 'Lier automatiquement cette catégorie'; -$string['mainglossary'] = 'Glossaire principal'; -$string['maxtimehaspassed'] = 'Désolé, le temps alloué maximal pour l\'édition de ce commentaire est dépassé.'; -$string['modulename'] = 'Glossaire'; -$string['modulenameplural'] = 'Glossaires'; -$string['newentries'] = 'Nouveaux articles au glossaire'; -$string['newglossary'] = 'Nouveau glossaire'; -$string['newglossarycreated'] = 'Le nouveau glossaire a été créé.'; -$string['newglossaryentries'] = 'Nouveaux articles au glossaire:'; -$string['nocomment'] = 'Aucun commentaire trouvé'; -$string['nocomments'] = '(Pas trouvé de commentaire pour cet article.)'; -$string['noconceptfound'] = 'Aucun concept ou définition trouvé.'; -$string['noentries'] = 'Pas trouvé d\'articles dans cette section'; -$string['noentry'] = 'Pas trouvé d\'article.'; -$string['notcategorised'] = 'Ne fait pas partie d\'une catégorie'; -$string['numberofentries'] = 'Nombre d\'articles'; -$string['onebyline'] = '(un par ligne)'; -$string['parentlanguage'] = 'fr'; -$string['printerfriendly'] = 'Version imprimable'; -$string['question'] = 'Question'; -$string['rate'] = 'Évaluer'; -$string['rating'] = 'Évaluation'; -$string['ratingeveryone'] = 'Tout le monde peut évaluer les articles'; -$string['ratingno'] = 'Pas d\'évaluation'; -$string['ratingonlyteachers'] = 'Seulement $a peut évaluer les articles'; -$string['ratings'] = 'Évaluations'; -$string['ratingssaved'] = 'Évaluations sauvegardées'; -$string['ratingsuse'] = 'Utiliser les évaluations'; -$string['ratingtime'] = 'Restreindre l\'évaluation des articles créés entre ces dates :'; -$string['rejectedentries'] = 'Articles rejetés'; -$string['rejectionrpt'] = 'Rapport des éléments rejetés'; -$string['rsssubscriberss'] = 'Afficher l\'alimentation RSS pour \'$a\' concepts'; -$string['searchindefinition'] = 'Chercher dans tout le texte'; -$string['secondaryglossary'] = 'Glossaire secondaire'; -$string['sendinratings'] = 'Envoyer ma dernière évaluation'; -$string['showall'] = 'Afficher le lien «Tous»'; -$string['showalphabet'] = 'Montrer les lettres de l\'alphabet'; -$string['showspecial'] = 'Afficher le lien «Spécial»'; -$string['sortby'] = 'Trié par'; -$string['sortbycreation'] = 'Par date de création'; -$string['sortbylastupdate'] = 'Par date de la dernière modification'; -$string['sortchronogically'] = 'Trier par ordre chronologique'; -$string['special'] = 'Spécial'; -$string['standardview'] = 'Parcourir par ordre alphabétique'; -$string['studentcanpost'] = 'Les étudiants peuvent ajouter des articles'; -$string['thisdirection'] = 'ltr'; -$string['totalentries'] = 'Nombre total d\'articles'; -$string['usedynalink'] = 'Lier automatiquement les articles du glossaire'; -$string['waitingapproval'] = 'En attente d\'approbation'; -$string['warningstudentcapost'] = '(S\'applique seulement si le glossaire n\'est pas le glossaire principal.)'; -$string['withauthor'] = 'Concepts avec auteur'; -$string['withoutauthor'] = 'Concepts sans auteur'; -$string['writtenby'] = 'par'; -$string['youarenottheauthor'] = 'Vous ne pouvez éditer ce commentaire puisque vous n\'en êtes pas l\'auteur.'; - -?> +Les champs pour le concept et la définition sont obligatoires.'; +$string['explainall'] = 'Afficher tous les articles sur une page.'; +$string['explainalphabet'] = 'Parcourir le glossaire en utilisant cet index'; +$string['explainexport'] = 'Un fichier a été généré.
                                  Téléchargez-le sur votre ordinateur et conservez dans un endroit sûr. Vous pouvez l\'importer à tout moment dans ce cours ou dans un autre cours.'; +$string['explainimport'] = 'Vous devez spécifier le fichier à importer et décider comment Moodle doit procéder.
                                  Soumettez votre demande et vérifiez les résultats.'; +$string['explainspecial'] = 'Afficher les articles qui ne débutent pas par une lettre.'; +$string['exportedentry'] = 'Article exporté'; +$string['exportedfile'] = 'Fichier exporté'; +$string['exportentries'] = 'Articles exportés'; +$string['exportglossary'] = 'Exporter le glossaire'; +$string['exporttomainglossary'] = 'Exporter dans le glossaire principal'; +$string['filetoimport'] = 'Fichier à importer'; +$string['fillfields'] = 'Vous devez remplir les champs Concept et Définition.'; +$string['filtername'] = 'Liens automatiques des glossaires'; +$string['fullmatch'] = 'Lier à des mots complets seulement'; +$string['glossarytype'] = 'Type de glossaire'; +$string['glosssaryexported'] = 'Glossaire exporté.'; +$string['importcategories'] = 'Importer des catégories'; +$string['importedcategories'] = 'Catégories importées'; +$string['importedentries'] = 'Articles importés'; +$string['importentries'] = 'Importer des articles'; +$string['isglobal'] = 'Est-ce que ce glossaire est global?'; +$string['linkcategory'] = 'Lier automatiquement cette catégorie'; +$string['mainglossary'] = 'Glossaire principal'; +$string['maxtimehaspassed'] = 'Désolé, le temps alloué maximal pour l\'édition de ce commentaire est dépassé.'; +$string['modulename'] = 'Glossaire'; +$string['modulenameplural'] = 'Glossaires'; +$string['newentries'] = 'Nouveaux articles au glossaire'; +$string['newglossary'] = 'Nouveau glossaire'; +$string['newglossarycreated'] = 'Le nouveau glossaire a été créé.'; +$string['newglossaryentries'] = 'Nouveaux articles au glossaire:'; +$string['nocomment'] = 'Aucun commentaire trouvé'; +$string['nocomments'] = '(Pas trouvé de commentaire pour cet article.)'; +$string['noconceptfound'] = 'Aucun concept ou définition trouvé.'; +$string['noentries'] = 'Pas trouvé d\'articles dans cette section'; +$string['noentry'] = 'Pas trouvé d\'article.'; +$string['notcategorised'] = 'Ne fait pas partie d\'une catégorie'; +$string['numberofentries'] = 'Nombre d\'articles'; +$string['onebyline'] = '(un par ligne)'; +$string['printerfriendly'] = 'Version imprimable'; +$string['question'] = 'Question'; +$string['rate'] = 'Évaluer'; +$string['rating'] = 'Évaluation'; +$string['ratingeveryone'] = 'Tout le monde peut évaluer les articles'; +$string['ratingno'] = 'Pas d\'évaluation'; +$string['ratingonlyteachers'] = 'Seulement $a peut évaluer les articles'; +$string['ratings'] = 'Évaluations'; +$string['ratingssaved'] = 'Évaluations sauvegardées'; +$string['ratingsuse'] = 'Utiliser les évaluations'; +$string['ratingtime'] = 'Restreindre l\'évaluation des articles créés entre ces dates :'; +$string['rejectedentries'] = 'Articles rejetés'; +$string['rejectionrpt'] = 'Rapport des éléments rejetés'; +$string['searchindefinition'] = 'Chercher dans tout le texte'; +$string['secondaryglossary'] = 'Glossaire secondaire'; +$string['sendinratings'] = 'Envoyer ma dernière évaluation'; +$string['showall'] = 'Afficher le lien «Tous»'; +$string['showalphabet'] = 'Montrer les lettres de l\'alphabet'; +$string['showspecial'] = 'Afficher le lien «Spécial»'; +$string['sortby'] = 'Trié par'; +$string['sortbycreation'] = 'Par date de création'; +$string['sortbylastupdate'] = 'Par date de la dernière modification'; +$string['sortchronogically'] = 'Trier par ordre chronologique'; +$string['special'] = 'Spécial'; +$string['standardview'] = 'Parcourir par ordre alphabétique'; +$string['studentcanpost'] = 'Les étudiants peuvent ajouter des articles'; +$string['totalentries'] = 'Nombre total d\'articles'; +$string['usedynalink'] = 'Lier automatiquement les articles du glossaire'; +$string['waitingapproval'] = 'En attente d\'approbation'; +$string['warningstudentcapost'] = '(S\'applique seulement si le glossaire n\'est pas le glossaire principal.)'; +$string['writtenby'] = 'par'; +$string['youarenottheauthor'] = 'Vous ne pouvez éditer ce commentaire puisque vous n\'en êtes pas l\'auteur.'; + +?> diff --git a/lang/fr_ca/help/assignment/assignmenttype.html b/lang/fr_ca/help/assignment/assignmenttype.html index 9798bd10780..c7a7b2b3f50 100644 --- a/lang/fr_ca/help/assignment/assignmenttype.html +++ b/lang/fr_ca/help/assignment/assignmenttype.html @@ -1,21 +1,21 @@ - - - - - -

                                  Type de devoir

                                  -

                                  Il y a plusieurs types de devoirs.

                                  -

                                  Activité hors ligne

                                  -

                                  Lorsque le devoir ou l'activité est réalisé -hors ligne, donc en dehors de Moodle, on utilise ce type de devoir. -Les étudiants peuvent voir la description du travail à -accomplir, mais ne peuvent télécharger de fichiers dans -Moodle. Le professeur utilisera Moodle pour attribuer une note que -les étudiants pourront consulter.

                                  -

                                  Envoi d'un fichier unique

                                  -

                                  Ce type de devoir permet aux étudiants de -télécharger un seul fichier vers Moodle, peu en importe -le type. L'enseignant pourra corriger -les travaux en ligne.

                                  - - + + + + + +

                                  Type de devoir

                                  +

                                  Il y a plusieurs types de devoirs.

                                  +

                                  Activité hors ligne

                                  +

                                  Lorsque le devoir ou l'activité est réalisé +hors ligne, donc en dehors de Moodle, on utilise ce type de devoir. +Les étudiants peuvent voir la description du travail à +accomplir, mais ne peuvent télécharger de fichiers dans +Moodle. Le professeur utilisera Moodle pour attribuer une note que +les étudiants pourront consulter.

                                  +

                                  Envoi d'un fichier unique

                                  +

                                  Ce type de devoir permet aux étudiants de +télécharger un seul fichier vers Moodle, peu en importe +le type. L'enseignant pourra corriger +les travaux en ligne.

                                  + + diff --git a/lang/fr_ca/help/assignment/index.html b/lang/fr_ca/help/assignment/index.html index 9429bd9f679..99faabf9420 100644 --- a/lang/fr_ca/help/assignment/index.html +++ b/lang/fr_ca/help/assignment/index.html @@ -1,5 +1,5 @@ -

                                  Devoirs

                                  - +

                                  Devoirs

                                  + diff --git a/lang/fr_ca/help/assignment/resubmit.html b/lang/fr_ca/help/assignment/resubmit.html index da5eb6396a5..5594c942ea7 100644 --- a/lang/fr_ca/help/assignment/resubmit.html +++ b/lang/fr_ca/help/assignment/resubmit.html @@ -1,22 +1,22 @@ - - - - - -

                                  Accepter une nouvelle version du devoir?
                                  -

                                  -

                                  Par défaut, les étudiants ne peuvent remettre de -nouveau un devoir une fois que l'enseignant a corrigé et -noté -celui qui avait été remis.

                                  -

                                  Si vous activez cette option, les étudiants pourront -proposer un nouveau devoir, même s'il a déjà -été -noté (afin que vous le notiez de nouveau). Ceci peut être -utile lorsque l'enseignant souhaite encourager les étudiants -à -faire un meilleur travail dans le cadre d'un processus itératif.

                                  -

                                  Évidemment, cette option n'est pas utilisée pour les -activités hors ligne.

                                  - - + + + + + +

                                  Accepter une nouvelle version du devoir?
                                  +

                                  +

                                  Par défaut, les étudiants ne peuvent remettre de +nouveau un devoir une fois que l'enseignant a corrigé et +noté +celui qui avait été remis.

                                  +

                                  Si vous activez cette option, les étudiants pourront +proposer un nouveau devoir, même s'il a déjà +été +noté (afin que vous le notiez de nouveau). Ceci peut être +utile lorsque l'enseignant souhaite encourager les étudiants +à +faire un meilleur travail dans le cadre d'un processus itératif.

                                  +

                                  Évidemment, cette option n'est pas utilisée pour les +activités hors ligne.

                                  + + diff --git a/lang/fr_ca/help/choice/index.html b/lang/fr_ca/help/choice/index.html index 5e56f9f97fb..bf90af4d711 100644 --- a/lang/fr_ca/help/choice/index.html +++ b/lang/fr_ca/help/choice/index.html @@ -1,4 +1,4 @@ -

                                  Choix

                                  - +

                                  Choix

                                  + diff --git a/lang/fr_ca/help/coursecategory.html b/lang/fr_ca/help/coursecategory.html index e5b6056aff5..d83ae20e405 100644 --- a/lang/fr_ca/help/coursecategory.html +++ b/lang/fr_ca/help/coursecategory.html @@ -1,11 +1,11 @@ -

                                  Programmes

                                  -

                                  L'administrateur de votre site Moodle a peut-être créé -plusieurs catégories de cours. Une catégorie -regoupe un ensemble de cours.

                                  -

                                  Par exemple, « Sciences », « Sciences sociales -», « Santé publique », etc. -

                                  -

                                  Choisissez la catégorie qui s'applique le mieux à votre cours. Ce -choix permettra de classer votre cours dans la liste des cours et -permettra aux étudiants de le trouver plus facilement. -

                                  +

                                  Programmes

                                  +

                                  L'administrateur de votre site Moodle a peut-être créé +plusieurs catégories de cours. Une catégorie +regoupe un ensemble de cours.

                                  +

                                  Par exemple, « Sciences », « Sciences sociales +», « Santé publique », etc. +

                                  +

                                  Choisissez la catégorie qui s'applique le mieux à votre cours. Ce +choix permettra de classer votre cours dans la liste des cours et +permettra aux étudiants de le trouver plus facilement. +

                                  diff --git a/lang/fr_ca/help/courseformats.html b/lang/fr_ca/help/courseformats.html index 2a16e379559..de97e1f2634 100644 --- a/lang/fr_ca/help/courseformats.html +++ b/lang/fr_ca/help/courseformats.html @@ -1,29 +1,29 @@ -

                                  Formats des cours dans Moodle

                                  -

                                  Format hebdomadaire

                                  -
                                    -

                                    Le cours est organisé par semaine avec des dates de début - et de fin clairement identifiées. Chaque semaine contient des - activités. Certaines, comme les journaux, peuvent avoir une « - durée de vie » de, par exemple, deux semaines après - laquelle elles ne sont plus disponibles. -

                                    -
                                  -

                                  Format en modules

                                  -
                                    -

                                    Très similaire au format hebdomadaire exception faite que - les semaines sont appelés « module ». L'avantage - des modules c'est que vous n'avez pas besoin de préciser de - date. -

                                    -
                                  -

                                  Format informel

                                  -
                                    -

                                    Ce format est organisé autour d'un forum principal, le « - Forum public », qui est disposé sur la page d'accueil - du cours. Il est utile dans les situations informelles qui peuvent - même ne pas être des cours. Par exemple, il peut être - utilisé comme tableau d'affichage pour un département. -

                                    -
                                  - - +

                                  Formats des cours dans Moodle

                                  +

                                  Format hebdomadaire

                                  +
                                    +

                                    Le cours est organisé par semaine avec des dates de début + et de fin clairement identifiées. Chaque semaine contient des + activités. Certaines, comme les journaux, peuvent avoir une « + durée de vie » de, par exemple, deux semaines après + laquelle elles ne sont plus disponibles. +

                                    +
                                  +

                                  Format en modules

                                  +
                                    +

                                    Très similaire au format hebdomadaire exception faite que + les semaines sont appelés « module ». L'avantage + des modules c'est que vous n'avez pas besoin de préciser de + date. +

                                    +
                                  +

                                  Format informel

                                  +
                                    +

                                    Ce format est organisé autour d'un forum principal, le « + Forum public », qui est disposé sur la page d'accueil + du cours. Il est utile dans les situations informelles qui peuvent + même ne pas être des cours. Par exemple, il peut être + utilisé comme tableau d'affichage pour un département. +

                                    +
                                  + + diff --git a/lang/fr_ca/help/coursegrades.html b/lang/fr_ca/help/coursegrades.html index 9fc21690e25..077ccce1840 100644 --- a/lang/fr_ca/help/coursegrades.html +++ b/lang/fr_ca/help/coursegrades.html @@ -6,7 +6,7 @@

                                  Si un professeur ne désire pas employer des notes dans un cours, ou s'il veut juste cacher les notes des étudiants, alors il peut désactiver l'affichage des notes dans les options du cours. Ceci n'empêche pas un professeur de noter différentes activités. Toutefois, les résultats ne seront pas accessibles aux étudiants.

                                  - - - - + + + + diff --git a/lang/fr_ca/help/coursenewsitems.html b/lang/fr_ca/help/coursenewsitems.html index 5c959bc8484..046d2ae0755 100644 --- a/lang/fr_ca/help/coursenewsitems.html +++ b/lang/fr_ca/help/coursenewsitems.html @@ -1,18 +1,18 @@ -

                                  Articles récents à afficher

                                  -

                                  Un forum spécial appelé « Nouvelles » -apparaît dans les cours organisés par semaine ou par -module. C'est le bon endroit pour publier des informations destinées -à tous les particpants (qui sont tous inscrits par défaut -à ce forum, ils recevront donc tous ces informations par -courriel). -

                                  -

                                  Ce paramètre détermine le nombre de nouvelles -récentes qui seront affichées sur la page d'accueil du -cours, dans une zone « Nouvelles » située en bas, -à droite. -

                                  -

                                  Si vous choisissez la valeur « 0 articles », cette -zone ne sera même pas affichée. -

                                  - - +

                                  Articles récents à afficher

                                  +

                                  Un forum spécial appelé « Nouvelles » +apparaît dans les cours organisés par semaine ou par +module. C'est le bon endroit pour publier des informations destinées +à tous les particpants (qui sont tous inscrits par défaut +à ce forum, ils recevront donc tous ces informations par +courriel). +

                                  +

                                  Ce paramètre détermine le nombre de nouvelles +récentes qui seront affichées sur la page d'accueil du +cours, dans une zone « Nouvelles » située en bas, +à droite. +

                                  +

                                  Si vous choisissez la valeur « 0 articles », cette +zone ne sera même pas affichée. +

                                  + + diff --git a/lang/fr_ca/help/coursenumsections.html b/lang/fr_ca/help/coursenumsections.html index b429bb3f864..c2944d8f9cb 100644 --- a/lang/fr_ca/help/coursenumsections.html +++ b/lang/fr_ca/help/coursenumsections.html @@ -1,13 +1,13 @@ -

                                  Nombre de semaines ou modules

                                  -

                                  Ce paramètre n'est utilisé que pour les cours -organisés par semaine ou par module.

                                  -

                                  Dans le format hebdomadaire, il indique la durée en -semaines du cours à partir de sa date de début.

                                  -

                                  Pour les cours organisés en modules, il détermine le -nombre de modules qui le compose.

                                  -

                                  Dans le deux cas, ce nombre conditionne la quantité de « -boîtes » qui seront affichées au milieu de la page -d'accueil du cours. -

                                  - - +

                                  Nombre de semaines ou modules

                                  +

                                  Ce paramètre n'est utilisé que pour les cours +organisés par semaine ou par module.

                                  +

                                  Dans le format hebdomadaire, il indique la durée en +semaines du cours à partir de sa date de début.

                                  +

                                  Pour les cours organisés en modules, il détermine le +nombre de modules qui le compose.

                                  +

                                  Dans le deux cas, ce nombre conditionne la quantité de « +boîtes » qui seront affichées au milieu de la page +d'accueil du cours. +

                                  + + diff --git a/lang/fr_ca/help/courserecent.html b/lang/fr_ca/help/courserecent.html index 359ac4154aa..30264038069 100644 --- a/lang/fr_ca/help/courserecent.html +++ b/lang/fr_ca/help/courserecent.html @@ -1,15 +1,15 @@

                                  Activités récentes

                                  -

                                  Moodle peut montrer les activités récentes dans le cours sur la page d'accueil -du cours. - +

                                  Moodle peut montrer les activités récentes dans le cours sur la page d'accueil +du cours. +

                                  On peut ainsi voir d'un coup d'oeil tout ce qui s'est passé dans le cours depuis notre dernier branchement à Moodle : les nouveaux messages, les nouveaux utilisateurs, les nouvelles ressources -disponibles, etc. - +disponibles, etc. +

                                  Il est fortement recommandé de maintenir active cette option -puisqu'elle permet aux participants de saisir le côté dynamique du cours. -On favorise ainsi une plus grande participation et collaboration entre les participants. - +puisqu'elle permet aux participants de saisir le côté dynamique du cours. +On favorise ainsi une plus grande participation et collaboration entre les participants. +

                                  On peut toutefois désactiver cette option dans le cas où il y aurait beaucoup d'activités, auquel cas, l'affichage de celles-ci engendrerait un ralentissement du système. \ No newline at end of file diff --git a/lang/fr_ca/help/courseshortname.html b/lang/fr_ca/help/courseshortname.html index 4ab203a94ce..9167d9e92c1 100644 --- a/lang/fr_ca/help/courseshortname.html +++ b/lang/fr_ca/help/courseshortname.html @@ -1,10 +1,10 @@ -

                                  Nom abrégé du cours

                                  -

                                  Beaucoup d'organismes ont une référence abgrégée -pour chaque cours ou formation (numéro du cours). Même -si cela n'est pas votre cas, vous devez en indiquer un ici. Il sera -utilisé à plusieurs endroits où le nom complet -du cours n'est pas adapté (par exemple, dans l'objet des -courriels envoyés). -

                                  - - +

                                  Nom abrégé du cours

                                  +

                                  Beaucoup d'organismes ont une référence abgrégée +pour chaque cours ou formation (numéro du cours). Même +si cela n'est pas votre cas, vous devez en indiquer un ici. Il sera +utilisé à plusieurs endroits où le nom complet +du cours n'est pas adapté (par exemple, dans l'objet des +courriels envoyés). +

                                  + + diff --git a/lang/fr_ca/help/coursestartdate.html b/lang/fr_ca/help/coursestartdate.html index 8bff1fac3dc..cf990d73ea2 100644 --- a/lang/fr_ca/help/coursestartdate.html +++ b/lang/fr_ca/help/coursestartdate.html @@ -1,17 +1,17 @@ -

                                  Date de début du cours

                                  -

                                  Indiquez ici la date de début du cours (dans votre fuseau -horaire).

                                  -

                                  Si vous utilisez le format hebdomadaire, cela affectera -l'affichage des semaines, la première commençant à -cette date.

                                  -

                                  Ce paramètre n'est pas utilisé pour la mise en forme -des cours organisés en modules ou des cours informels. -

                                  -

                                  Cependant, il déterminera la date la plus ancienne qui -pourra être affichée dans le journal des évènements. -

                                  -

                                  En général, si le cours a une date réelle de -départ, il est cohérent de l'indiquer ici, quelque soit -le format de cours utilisé.

                                  - - +

                                  Date de début du cours

                                  +

                                  Indiquez ici la date de début du cours (dans votre fuseau +horaire).

                                  +

                                  Si vous utilisez le format hebdomadaire, cela affectera +l'affichage des semaines, la première commençant à +cette date.

                                  +

                                  Ce paramètre n'est pas utilisé pour la mise en forme +des cours organisés en modules ou des cours informels. +

                                  +

                                  Cependant, il déterminera la date la plus ancienne qui +pourra être affichée dans le journal des évènements. +

                                  +

                                  En général, si le cours a une date réelle de +départ, il est cohérent de l'indiquer ici, quelque soit +le format de cours utilisé.

                                  + + diff --git a/lang/fr_ca/help/emoticons.html b/lang/fr_ca/help/emoticons.html index f76a4711625..5f9b7f4888c 100644 --- a/lang/fr_ca/help/emoticons.html +++ b/lang/fr_ca/help/emoticons.html @@ -117,5 +117,5 @@

                                  Notez que les codes eux-mêmes représentent de petites images - tournez votre tête vers la gauche en les regardant.

                                  - - + + diff --git a/lang/fr_ca/help/enrolmentkey.html b/lang/fr_ca/help/enrolmentkey.html index 27f8b6732ce..a563ece07f9 100644 --- a/lang/fr_ca/help/enrolmentkey.html +++ b/lang/fr_ca/help/enrolmentkey.html @@ -1,27 +1,27 @@ -

                                  Clé d'inscription au cours

                                  -

                                  Une clé d'inscription permet d'éviter que des -personnes indésirables ne s'inscrivent au cours.

                                  -

                                  Si vous laissez cette zone vide, toute personne qui aura créé -un compte sur ce site aura la possibilité de s'inscrire au -cours.

                                  -

                                  Si, au contraire, vous fournissez un chaîne de caractères -ici, elle sera demandée (seulement la première fois) -pour vérification à toute personne tentant de -s'inscrire au cours.

                                  -

                                  Le principe étant que vous fournissiez cette clé -d'accès de manière privée : par courriel, -courrier postal, téléphone ou même verbalement.

                                  -

                                  Si cette clé d'accès venait à être -divulguée à des personnes qui n'étaient pas -visées et que des personnes indésirables se sont -inscrites au cours, il vous est possible de remédier à -la situation :

                                  -
                                    -
                                  • Changez la clé d'inscription dans les paramètres - du cours. Aucun étudiant déjà inscrit n'en sera - affecté.

                                    -
                                  • Désinscrire les personnes qui ne devraient pas être - inscrites à votre cours à partir de la page de leur - profil personnel. -

                                    -
                                  +

                                  Clé d'inscription au cours

                                  +

                                  Une clé d'inscription permet d'éviter que des +personnes indésirables ne s'inscrivent au cours.

                                  +

                                  Si vous laissez cette zone vide, toute personne qui aura créé +un compte sur ce site aura la possibilité de s'inscrire au +cours.

                                  +

                                  Si, au contraire, vous fournissez un chaîne de caractères +ici, elle sera demandée (seulement la première fois) +pour vérification à toute personne tentant de +s'inscrire au cours.

                                  +

                                  Le principe étant que vous fournissiez cette clé +d'accès de manière privée : par courriel, +courrier postal, téléphone ou même verbalement.

                                  +

                                  Si cette clé d'accès venait à être +divulguée à des personnes qui n'étaient pas +visées et que des personnes indésirables se sont +inscrites au cours, il vous est possible de remédier à +la situation :

                                  +
                                    +
                                  • Changez la clé d'inscription dans les paramètres + du cours. Aucun étudiant déjà inscrit n'en sera + affecté.

                                    +
                                  • Désinscrire les personnes qui ne devraient pas être + inscrites à votre cours à partir de la page de leur + profil personnel. +

                                    +
                                  diff --git a/lang/fr_ca/help/forum/allowdiscussions.html b/lang/fr_ca/help/forum/allowdiscussions.html index 3e671c9b0c3..8da3ed84018 100644 --- a/lang/fr_ca/help/forum/allowdiscussions.html +++ b/lang/fr_ca/help/forum/allowdiscussions.html @@ -1,26 +1,26 @@ - - - - - -

                                  Autoriser de nouveaux messages?

                                  -

                                  Cette option vous permet de décider des possibilités -d'intervention par les étudiants dans ce forum.

                                  -

                                  Pour la plupart des forums vous voudrez sans doute laisser les -étudiants complètement libres et choisirez la -première -option qui leur permet de commencer de nouvelles discussions -et d'intervenir dans toutes les discussions.

                                  -

                                  Cependant, quelque fois, vous voudrez interdire cela. Par exemple, -cela peut s'avérer utile pour les forums annonçant des -nouvelles postées par les enseignants sur la page principale -des cours. Dans ce cas, vous choisirez la troisième option : -« -Aucune discussion, aucune réponse ».

                                  -

                                  En d'autres occasions, vous souhaiterez que seuls les enseignants -puissent commencer les nouvelles discussions et que les -étudiants puissent y répondre. Dans ce cas vous -choisirez la deuxième option : « Aucune discussion, mais -les réponses sont autorisées ».

                                  - - + + + + + +

                                  Autoriser de nouveaux messages?

                                  +

                                  Cette option vous permet de décider des possibilités +d'intervention par les étudiants dans ce forum.

                                  +

                                  Pour la plupart des forums vous voudrez sans doute laisser les +étudiants complètement libres et choisirez la +première +option qui leur permet de commencer de nouvelles discussions +et d'intervenir dans toutes les discussions.

                                  +

                                  Cependant, quelque fois, vous voudrez interdire cela. Par exemple, +cela peut s'avérer utile pour les forums annonçant des +nouvelles postées par les enseignants sur la page principale +des cours. Dans ce cas, vous choisirez la troisième option : +« +Aucune discussion, aucune réponse ».

                                  +

                                  En d'autres occasions, vous souhaiterez que seuls les enseignants +puissent commencer les nouvelles discussions et que les +étudiants puissent y répondre. Dans ce cas vous +choisirez la deuxième option : « Aucune discussion, mais +les réponses sont autorisées ».

                                  + + diff --git a/lang/fr_ca/help/forum/attachment.html b/lang/fr_ca/help/forum/attachment.html index ecc5617f5bb..c48d09a2fc0 100644 --- a/lang/fr_ca/help/forum/attachment.html +++ b/lang/fr_ca/help/forum/attachment.html @@ -1,37 +1,37 @@ - - - - - -

                                  Annexes

                                  -

                                  Il vous est possible d'annexer un fichier présent sur -votre ordinateur à chaque message que vous postez dans un -forum. Ce fichier est envoyé sur le serveur et stocké -avec -votre message. -

                                  -

                                  Ceci s'avère particulièrement utile lorsque vous -souhaitez -partager une image ou un document avec les autres participants du cours.
                                  -

                                  -

                                  Ce fichier peut-être de n'importe quel type. Il -est fortement recommandé que son nom utilise la convention des -3 lettres d'extension utilisée dans Internet tel que  jpg ou png  pour une image, zip pour -un fichier compressé, etc. Cela -facilitera le téléchargement, la sauvegarde ou -l'ouverture de ce document dans -le fureteur des utilisateurs. -

                                  -

                                  Si vous modifiez le message posté et y joignez un nouveau -fichier il remplacera tout autre fichier précédemment -envoyé. -

                                  -

                                  Si vous modifiez un message posté avec une annexe -et laissez cette zone vide, l'annexe précédente est -conservée. -

                                  - - + + + + + +

                                  Annexes

                                  +

                                  Il vous est possible d'annexer un fichier présent sur +votre ordinateur à chaque message que vous postez dans un +forum. Ce fichier est envoyé sur le serveur et stocké +avec +votre message. +

                                  +

                                  Ceci s'avère particulièrement utile lorsque vous +souhaitez +partager une image ou un document avec les autres participants du cours.
                                  +

                                  +

                                  Ce fichier peut-être de n'importe quel type. Il +est fortement recommandé que son nom utilise la convention des +3 lettres d'extension utilisée dans Internet tel que  jpg ou png  pour une image, zip pour +un fichier compressé, etc. Cela +facilitera le téléchargement, la sauvegarde ou +l'ouverture de ce document dans +le fureteur des utilisateurs. +

                                  +

                                  Si vous modifiez le message posté et y joignez un nouveau +fichier il remplacera tout autre fichier précédemment +envoyé. +

                                  +

                                  Si vous modifiez un message posté avec une annexe +et laissez cette zone vide, l'annexe précédente est +conservée. +

                                  + + diff --git a/lang/fr_ca/help/forum/forumtype.html b/lang/fr_ca/help/forum/forumtype.html index bf8503206ff..550e7f0933b 100644 --- a/lang/fr_ca/help/forum/forumtype.html +++ b/lang/fr_ca/help/forum/forumtype.html @@ -1,26 +1,26 @@ - - - - - -

                                  Types de forum

                                  -

                                  Plusieurs types de forum sont offerts : -

                                  -

                                  Une seule discussion simple - est une discussion -organisée en un -seul fil sur une page unique. Utile pour les discussions courtes et -ciblées. -

                                  -

                                  Forum standard - est un forum ouvert où chacun peut -entamer une nouvelle discussion à tout instant. Il s'agit du -type de forum le -plus adéquat pour les discussions d'ordre général. -

                                  -

                                  Chaque personne commence une seule discussion - bien que -tous peuvent répondre dans toutes les discussions, chacun ne -peut -en entamer qu'une seule. C'est utile lorsque vous souhaitez que -chaque étudiant exprime ses réflexions sur le sujet de -la semaine et que tous les autres puissent lui répondre.

                                  - - + + + + + +

                                  Types de forum

                                  +

                                  Plusieurs types de forum sont offerts : +

                                  +

                                  Une seule discussion simple - est une discussion +organisée en un +seul fil sur une page unique. Utile pour les discussions courtes et +ciblées. +

                                  +

                                  Forum standard - est un forum ouvert où chacun peut +entamer une nouvelle discussion à tout instant. Il s'agit du +type de forum le +plus adéquat pour les discussions d'ordre général. +

                                  +

                                  Chaque personne commence une seule discussion - bien que +tous peuvent répondre dans toutes les discussions, chacun ne +peut +en entamer qu'une seule. C'est utile lorsque vous souhaitez que +chaque étudiant exprime ses réflexions sur le sujet de +la semaine et que tous les autres puissent lui répondre.

                                  + + diff --git a/lang/fr_ca/help/forum/index.html b/lang/fr_ca/help/forum/index.html index 61507936f4b..94d86706b2e 100644 --- a/lang/fr_ca/help/forum/index.html +++ b/lang/fr_ca/help/forum/index.html @@ -1,20 +1,20 @@ - - - - - -

                                  Forums

                                  - - - + + + + + +

                                  Forums

                                  + + + diff --git a/lang/fr_ca/help/forum/mods.html b/lang/fr_ca/help/forum/mods.html index 641dad43221..9c498e73310 100644 --- a/lang/fr_ca/help/forum/mods.html +++ b/lang/fr_ca/help/forum/mods.html @@ -2,13 +2,13 @@

                                  Le forum est un des modules les plus importants de Moodle! Les forums sont un lieu pour présenter des idées et en discuter avec tous les participants au cours. En interagissant, les étudiants construisent ensemble leurs savoirs.

                                  -

                                  Voici quelques-unes des caractéristiques des forums :

                                  - +

                                  Voici quelques-unes des caractéristiques des forums :

                                  +
                                    -
                                  • Ils peuvent permettre ou non l'ajout de nouvelles discussions ou de réponses.
                                  • -
                                  • On peut joindre un fichier en annexe aux messages dans les forums.
                                  • -
                                  • Les étudiants peuvent évaluer les messages publiés dans les forums.
                                  • -
                                  • Les forums peuvent être lus dans différents formats d'affichage.
                                  • -
                                  • Les participants peuvent décider de recevoir par courriel tous les messages d'un forum.
                                  • -
                                  • Le professeur peut imposer aux étudiants la réception par courriel de tous les courriels.
                                  • +
                                  • Ils peuvent permettre ou non l'ajout de nouvelles discussions ou de réponses.
                                  • +
                                  • On peut joindre un fichier en annexe aux messages dans les forums.
                                  • +
                                  • Les étudiants peuvent évaluer les messages publiés dans les forums.
                                  • +
                                  • Les forums peuvent être lus dans différents formats d'affichage.
                                  • +
                                  • Les participants peuvent décider de recevoir par courriel tous les messages d'un forum.
                                  • +
                                  • Le professeur peut imposer aux étudiants la réception par courriel de tous les courriels.
                                  \ No newline at end of file diff --git a/lang/fr_ca/help/forum/ratings.html b/lang/fr_ca/help/forum/ratings.html index 6b70c52f677..076e533f348 100644 --- a/lang/fr_ca/help/forum/ratings.html +++ b/lang/fr_ca/help/forum/ratings.html @@ -1,107 +1,107 @@ - - - - - -
                                  Évaluation -des attitudes objectives et empathiques dans les messages des forums
                                  -
                                  -

                                  Chaque message peut être évalué en fonction d'un -barème basé sur une théorie qui traite de la -relation que l'apprenant entretient avec son entourage et ce qu'il doit -apprendre : il peut adopter une attitude empathique ou objective (Theory of separate and connected knowing). -Cette théorie peut vous aider à voir les interactions -humaines sous un nouvel angle. Elle décrit deux manières -différentes que nous avons pour évaluer et pour nous -renseigner sur les choses que nous voyons et que nous entendons. Chacun -de nous peut employer alternativement ces deux attitudes ou les -employer toutes deux en même temps, mais à des -degrés divers, selon les situations.

                                  -

                                  Décrivons deux apprenants fictifs pour illustrer cette -façon d'aborder les interactions humaines. Chacun adopte la -plupart du temps l'attitude qui les caractérise :

                                  -
                                    -
                                  • Sébastien préfère adopter une attitude objective, en ne faisant pas -intervenir ses sentiments et ses émotions. Dans une discussion, -lorsque ses idées diffèrent de celles des autres, il aime -défendre les siennes en utilisant la logique pour pointer les -failles dans les arguments de ses interlocuteurs. Il est critique et -même sceptique face à de nouvelles idées à -moins qu'elles ne soient appuyées par des faits -vérifiables provenant de livres, de professeurs ou à -partir de ses propres expériences. Sébastien ne s'investit donc pas -émotionnellement dans ce qu'il apprend et des autres; il est -très détaché.
                                  • -
                                  • Martine est d'abord empathique (sensible) -aux autres. Elle perçoit facilement ce que les autres -ressentent. Tout naturellement, elle préfère -écouter et poser des questions aux autres jusqu'à ce -qu'elle sente qu'elle comprend les choses de leur point de vue. Elle -apprend par le partage des expériences de ses interlocuteurs, -expériences qui ont mené à leurs apprentissages. -En parlant à d'autres, elle évite la confrontation et -essaie souvent d'aider l'autre personne si elle en voit la -possibilité, en utilisant des suggestions logiques. Martine est très sensible et -très liée au groupe et aux apprentissages.
                                  • -
                                  -

                                  Avez-vous remarqué dans ces exemples que l'apprenant -détaché est masculin et que l'apprenant lié est -féminin? Des études ont prouvé statistiquement que -c'est le cas la plupart du temps. Toutefois, il faut comprendre que -nous nous déplaçons tous entre ces deux -extrémités en fonction des situations et de notre -cheminement personnel. Il est préférable que les -apprenants puissent adopter les deux attitudes face au groupe et -à ce qu'ils doivent apprendre. Ils pourront ainsi mieux -collaborer et être plus efficaces dans leurs apprentissages.

                                  -

                                  On retrouve l'une ou l'autre de ces attitudes ou même les deux -en même temps dans les messages publiés dans les forums. -Un étudiant généralement très sensible et -très lié peut poster un message où il -démontre une attitude inverse. Et vice versa.

                                  -

                                  On poursuit les buts suivants dans l'évaluation des messages -dans les forums avec le barème proposé :

                                  -
                                    -
                                  • Développer la capacité à détecter les -attitudes de l'auteur du message.
                                  • -
                                  • Fournir une rétroaction à chaque auteur de message -sur la façon dont il est perçu par les autres
                                  • -
                                  -

                                  Ces rétroactions ne servent pas à l'évaluation -sommative des étudiants, aucune note étant -accordée à celle-ci. Ils permettent d'améliorer la -communication afin d'augmenter la collaboration et les apprentissages.

                                  -
                                  -

                                  Voici quelques références sur des articles ou des -documents publiés par les auteurs qui ont -développé cette théorie:

                                  -
                                    -
                                  • 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, NY: Basic Books.
                                  • -
                                  • Clinchy, B.M. (1989a). The development of thoughtfulness in -college women: Integrating reason and care. American Behavioural -Scientist, 32(6), 647-657.
                                  • -
                                  • Clinchy, B.M. (1989b). On critical thinking & connected -knowing. Liberal education, 75(5), 14-19.
                                  • -
                                  • Clinchy, B.M. (1996). Connected and separate knowing; Toward a -marriage of two minds. In N.R. Goldberger, Tarule, J.M., Clinchy, B.M. -&
                                  • -
                                  • Belenky, M.F. (Eds.), Knowledge, Difference, and Power; Essays -inspired by “Women’s Ways of Knowing” (pp. 205-247). New York, NY: -Basic Books.
                                  • -
                                  • 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.
                                  • -
                                  • 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.
                                    -
                                  • -
                                  - - + + + + + +
                                  Évaluation +des attitudes objectives et empathiques dans les messages des forums
                                  +
                                  +

                                  Chaque message peut être évalué en fonction d'un +barème basé sur une théorie qui traite de la +relation que l'apprenant entretient avec son entourage et ce qu'il doit +apprendre : il peut adopter une attitude empathique ou objective (Theory of separate and connected knowing). +Cette théorie peut vous aider à voir les interactions +humaines sous un nouvel angle. Elle décrit deux manières +différentes que nous avons pour évaluer et pour nous +renseigner sur les choses que nous voyons et que nous entendons. Chacun +de nous peut employer alternativement ces deux attitudes ou les +employer toutes deux en même temps, mais à des +degrés divers, selon les situations.

                                  +

                                  Décrivons deux apprenants fictifs pour illustrer cette +façon d'aborder les interactions humaines. Chacun adopte la +plupart du temps l'attitude qui les caractérise :

                                  +
                                    +
                                  • Sébastien préfère adopter une attitude objective, en ne faisant pas +intervenir ses sentiments et ses émotions. Dans une discussion, +lorsque ses idées diffèrent de celles des autres, il aime +défendre les siennes en utilisant la logique pour pointer les +failles dans les arguments de ses interlocuteurs. Il est critique et +même sceptique face à de nouvelles idées à +moins qu'elles ne soient appuyées par des faits +vérifiables provenant de livres, de professeurs ou à +partir de ses propres expériences. Sébastien ne s'investit donc pas +émotionnellement dans ce qu'il apprend et des autres; il est +très détaché.
                                  • +
                                  • Martine est d'abord empathique (sensible) +aux autres. Elle perçoit facilement ce que les autres +ressentent. Tout naturellement, elle préfère +écouter et poser des questions aux autres jusqu'à ce +qu'elle sente qu'elle comprend les choses de leur point de vue. Elle +apprend par le partage des expériences de ses interlocuteurs, +expériences qui ont mené à leurs apprentissages. +En parlant à d'autres, elle évite la confrontation et +essaie souvent d'aider l'autre personne si elle en voit la +possibilité, en utilisant des suggestions logiques. Martine est très sensible et +très liée au groupe et aux apprentissages.
                                  • +
                                  +

                                  Avez-vous remarqué dans ces exemples que l'apprenant +détaché est masculin et que l'apprenant lié est +féminin? Des études ont prouvé statistiquement que +c'est le cas la plupart du temps. Toutefois, il faut comprendre que +nous nous déplaçons tous entre ces deux +extrémités en fonction des situations et de notre +cheminement personnel. Il est préférable que les +apprenants puissent adopter les deux attitudes face au groupe et +à ce qu'ils doivent apprendre. Ils pourront ainsi mieux +collaborer et être plus efficaces dans leurs apprentissages.

                                  +

                                  On retrouve l'une ou l'autre de ces attitudes ou même les deux +en même temps dans les messages publiés dans les forums. +Un étudiant généralement très sensible et +très lié peut poster un message où il +démontre une attitude inverse. Et vice versa.

                                  +

                                  On poursuit les buts suivants dans l'évaluation des messages +dans les forums avec le barème proposé :

                                  +
                                    +
                                  • Développer la capacité à détecter les +attitudes de l'auteur du message.
                                  • +
                                  • Fournir une rétroaction à chaque auteur de message +sur la façon dont il est perçu par les autres
                                  • +
                                  +

                                  Ces rétroactions ne servent pas à l'évaluation +sommative des étudiants, aucune note étant +accordée à celle-ci. Ils permettent d'améliorer la +communication afin d'augmenter la collaboration et les apprentissages.

                                  +
                                  +

                                  Voici quelques références sur des articles ou des +documents publiés par les auteurs qui ont +développé cette théorie:

                                  +
                                    +
                                  • 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, NY: Basic Books.
                                  • +
                                  • Clinchy, B.M. (1989a). The development of thoughtfulness in +college women: Integrating reason and care. American Behavioural +Scientist, 32(6), 647-657.
                                  • +
                                  • Clinchy, B.M. (1989b). On critical thinking & connected +knowing. Liberal education, 75(5), 14-19.
                                  • +
                                  • Clinchy, B.M. (1996). Connected and separate knowing; Toward a +marriage of two minds. In N.R. Goldberger, Tarule, J.M., Clinchy, B.M. +&
                                  • +
                                  • Belenky, M.F. (Eds.), Knowledge, Difference, and Power; Essays +inspired by “Women’s Ways of Knowing” (pp. 205-247). New York, NY: +Basic Books.
                                  • +
                                  • 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.
                                  • +
                                  • 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.
                                    +
                                  • +
                                  + + diff --git a/lang/fr_ca/help/forum/subscription.html b/lang/fr_ca/help/forum/subscription.html index b06217d694a..c35dd016be0 100644 --- a/lang/fr_ca/help/forum/subscription.html +++ b/lang/fr_ca/help/forum/subscription.html @@ -1,25 +1,25 @@ - - - - - -

                                  Inscription au forum

                                  -

                                  Lorsqu'une personne est abonnée à un forum, cela -signifie qu'elle recevra par courriel une copie de tous les messages -postés sur ce forum. Les messages sont envoyés environ -30 minutes après qu'ils aient été postés -pour la première fois. (Ce délai est défini par -l'administrateur du serveur Moodle.)

                                  -

                                  En général, les utilisateurs peuvent décider -de s'abonner ou non à chaque forum.

                                  -

                                  Cependant, si un professeur force l'abonnement à un forum -particulier, ce choix l'emporte et tous les étudiants -abonnés -au cours recevront par courriel une copie de tous les messages -postés .

                                  -

                                  Ceci s'avère particulièrement utile dans le forum des -nouvelles -et dans les débuts du cours (avant que tous découvrent -qu'ils peuvent s'abonner eux-mêmes).

                                  - - + + + + + +

                                  Inscription au forum

                                  +

                                  Lorsqu'une personne est abonnée à un forum, cela +signifie qu'elle recevra par courriel une copie de tous les messages +postés sur ce forum. Les messages sont envoyés environ +30 minutes après qu'ils aient été postés +pour la première fois. (Ce délai est défini par +l'administrateur du serveur Moodle.)

                                  +

                                  En général, les utilisateurs peuvent décider +de s'abonner ou non à chaque forum.

                                  +

                                  Cependant, si un professeur force l'abonnement à un forum +particulier, ce choix l'emporte et tous les étudiants +abonnés +au cours recevront par courriel une copie de tous les messages +postés .

                                  +

                                  Ceci s'avère particulièrement utile dans le forum des +nouvelles +et dans les débuts du cours (avant que tous découvrent +qu'ils peuvent s'abonner eux-mêmes).

                                  + + diff --git a/lang/fr_ca/help/glossary/displayformat.html b/lang/fr_ca/help/glossary/displayformat.html index 0df21362a40..7e292960303 100644 --- a/lang/fr_ca/help/glossary/displayformat.html +++ b/lang/fr_ca/help/glossary/displayformat.html @@ -1,52 +1,52 @@ - - - - - -

                                  Format d'affichage

                                  -

                                  Ce réglage détermine la façon dont chaque -entrée est affichée dans le glossaire. Les formats -proposés par défaut sont :

                                  -
                                  -
                                  -
                                  Simple, style dictionnaire :
                                  -
                                  Ressemble à un dictionnaire avec des entrées -séparées. Les auteurs ne sont pas affichés. Les -annexes sont porposées comme liens.
                                  -
                                  Continu sans auteur :
                                  -
                                  Les entrées sont affichées les unes après -les autres, sans autre séparateur que l'icône -d'édidion.
                                  -
                                  Complet avec auteur :
                                  -
                                  Un affichage ressemblant à celui des forums, avec les -information sur l'auteur. Les annexes sont porposées comme liens.
                                  -
                                  Complet avec auteur :
                                  -
                                  Un affichage ressemblant à celui des forums, sans les -information sur l'auteur. Les annexes sont proposées comme liens.
                                  -
                                  Encyclopédie :
                                  -
                                  Identique au format « Complet avec -auteur », mais les images en annexe sont affichées en -ligne.
                                  -
                                  FAQ :
                                  -
                                  Utile pour l'affichage des Foires Aux Questions. Les mots -« Question » et -« Réponse » sont affichés -automatiquement au concept, respectivment à la définition.
                                  -
                                  -
                                  -
                                  -

                                  Lea administrateurs du Moodle peuvent créer de nouveaux -formats d'affichage de la façon suivante :

                                  -
                                    -
                                  1. Regarder dans le dossier mod/glossary/formats. Un fichier -numéroté y existe pour chaque format existant.
                                  2. -
                                  3. Copier un de ces fichiers et lui donner un autre nombre N (les -nombres 0 et 1 sont réservés).
                                  4. -
                                  5. Modifier ce fichier de façon à créer un -nouveau format (une connaissance minimale du langage PHP est requise).
                                  6. -
                                  7. Insérer pour terminer une nouvelle variable displayformatN -dans chaque fichier de langue utilisé. Cette variable contiendra -le nom de votre nouveau format, court mais significatif.
                                  8. -
                                  - - + + + + + +

                                  Format d'affichage

                                  +

                                  Ce réglage détermine la façon dont chaque +entrée est affichée dans le glossaire. Les formats +proposés par défaut sont :

                                  +
                                  +
                                  +
                                  Simple, style dictionnaire :
                                  +
                                  Ressemble à un dictionnaire avec des entrées +séparées. Les auteurs ne sont pas affichés. Les +annexes sont porposées comme liens.
                                  +
                                  Continu sans auteur :
                                  +
                                  Les entrées sont affichées les unes après +les autres, sans autre séparateur que l'icône +d'édidion.
                                  +
                                  Complet avec auteur :
                                  +
                                  Un affichage ressemblant à celui des forums, avec les +information sur l'auteur. Les annexes sont porposées comme liens.
                                  +
                                  Complet avec auteur :
                                  +
                                  Un affichage ressemblant à celui des forums, sans les +information sur l'auteur. Les annexes sont proposées comme liens.
                                  +
                                  Encyclopédie :
                                  +
                                  Identique au format « Complet avec +auteur », mais les images en annexe sont affichées en +ligne.
                                  +
                                  FAQ :
                                  +
                                  Utile pour l'affichage des Foires Aux Questions. Les mots +« Question » et +« Réponse » sont affichés +automatiquement au concept, respectivment à la définition.
                                  +
                                  +
                                  +
                                  +

                                  Lea administrateurs du Moodle peuvent créer de nouveaux +formats d'affichage de la façon suivante :

                                  +
                                    +
                                  1. Regarder dans le dossier mod/glossary/formats. Un fichier +numéroté y existe pour chaque format existant.
                                  2. +
                                  3. Copier un de ces fichiers et lui donner un autre nombre N (les +nombres 0 et 1 sont réservés).
                                  4. +
                                  5. Modifier ce fichier de façon à créer un +nouveau format (une connaissance minimale du langage PHP est requise).
                                  6. +
                                  7. Insérer pour terminer une nouvelle variable displayformatN +dans chaque fichier de langue utilisé. Cette variable contiendra +le nom de votre nouveau format, court mais significatif.
                                  8. +
                                  + + diff --git a/lang/fr_ca/help/glossary/globalglossary.html b/lang/fr_ca/help/glossary/globalglossary.html index 7b45ebdb011..298d03a52b8 100644 --- a/lang/fr_ca/help/glossary/globalglossary.html +++ b/lang/fr_ca/help/glossary/globalglossary.html @@ -1,16 +1,16 @@ - - - - - -

                                  Définir un glossaire global

                                  -

                                  Les administrateurs peuvent définir un glossaire comme -étant global.

                                  -

                                  Les glossaires globaux peuvent faire partie de n'importe quel cours, -mais aussi être affichés sur la page d'accueil.

                                  -

                                  La différence principale avec un glossaire normal (local) est -que les entrées d'un tel glossaire sont utilisées dans -tout le site Moodle pour la création automatique des liens (et -pas seulement dans le cours auquel il appartient).

                                  - - + + + + + +

                                  Définir un glossaire global

                                  +

                                  Les administrateurs peuvent définir un glossaire comme +étant global.

                                  +

                                  Les glossaires globaux peuvent faire partie de n'importe quel cours, +mais aussi être affichés sur la page d'accueil.

                                  +

                                  La différence principale avec un glossaire normal (local) est +que les entrées d'un tel glossaire sont utilisées dans +tout le site Moodle pour la création automatique des liens (et +pas seulement dans le cours auquel il appartient).

                                  + + diff --git a/lang/fr_ca/help/glossary/linkcategory.html b/lang/fr_ca/help/glossary/linkcategory.html index fe32aaa8683..1974c7b9665 100644 --- a/lang/fr_ca/help/glossary/linkcategory.html +++ b/lang/fr_ca/help/glossary/linkcategory.html @@ -1,13 +1,13 @@ - - - - - -

                                  Liaison automatique des catégories

                                  -

                                  Vous pouvez indiquer si vous voulez lier automatiquement ou non les -catégories.

                                  -

                                  Attention ! Les catégories ne sont liées que -lorsque le texte correspond totalement (casse des caractères et -mot pour mot).

                                  - - + + + + + +

                                  Liaison automatique des catégories

                                  +

                                  Vous pouvez indiquer si vous voulez lier automatiquement ou non les +catégories.

                                  +

                                  Attention ! Les catégories ne sont liées que +lorsque le texte correspond totalement (casse des caractères et +mot pour mot).

                                  + + diff --git a/lang/fr_ca/help/glossary/mainglossary.html b/lang/fr_ca/help/glossary/mainglossary.html index 955dde7d612..ecfb509efa5 100644 --- a/lang/fr_ca/help/glossary/mainglossary.html +++ b/lang/fr_ca/help/glossary/mainglossary.html @@ -1,15 +1,15 @@ - - - - - -

                                  Définir le glossaire principal d'un cours

                                  -

                                  Le module Glossaire permet d'exporter des entrées de -n'importe quel glossaire secondaire vers le glossaire principal d'un -cours.

                                  -

                                  Si vous désirez profiter de cette fonctionnalité, vous -devez indiquer quel est le glossaire principal.

                                  -

                                  Attention ! Il ne peut y avoir qu'un seul glossaire principal -par cours et seuls les enseignants peuvent le modifier.

                                  - - + + + + + +

                                  Définir le glossaire principal d'un cours

                                  +

                                  Le module Glossaire permet d'exporter des entrées de +n'importe quel glossaire secondaire vers le glossaire principal d'un +cours.

                                  +

                                  Si vous désirez profiter de cette fonctionnalité, vous +devez indiquer quel est le glossaire principal.

                                  +

                                  Attention ! Il ne peut y avoir qu'un seul glossaire principal +par cours et seuls les enseignants peuvent le modifier.

                                  + + diff --git a/lang/fr_ca/help/glossary/mods.html b/lang/fr_ca/help/glossary/mods.html index 780abad2d3d..995eee0e7d8 100644 --- a/lang/fr_ca/help/glossary/mods.html +++ b/lang/fr_ca/help/glossary/mods.html @@ -1,21 +1,21 @@ - - - - - -

                                   Glossaire

                                  -
                                    -

                                    Cette activité permet aux participants de créer et -entretenir une liste de définitions, une sorte de dictionnaire.

                                    -

                                    Il est possible de rechercher les entrées et les consulter -dans différents formats.

                                    -

                                    Le glossaire permet également aux enseignants d'exporter -les entrées d'un glossaire à un autre (le glossaire -principal) à l'intérieur d'un cours.

                                    -

                                    En outre, le glossaire peut également créer -automatiquement dans tout le cours des liens vers les entrées des -glossaires.

                                    -
                                  - - + + + + + +

                                   Glossaire

                                  +
                                    +

                                    Cette activité permet aux participants de créer et +entretenir une liste de définitions, une sorte de dictionnaire.

                                    +

                                    Il est possible de rechercher les entrées et les consulter +dans différents formats.

                                    +

                                    Le glossaire permet également aux enseignants d'exporter +les entrées d'un glossaire à un autre (le glossaire +principal) à l'intérieur d'un cours.

                                    +

                                    En outre, le glossaire peut également créer +automatiquement dans tout le cours des liens vers les entrées des +glossaires.

                                    +
                                  + + diff --git a/lang/fr_ca/help/glossary/studentcanpost.html b/lang/fr_ca/help/glossary/studentcanpost.html index 03d1a9479a4..7636be85ebe 100644 --- a/lang/fr_ca/help/glossary/studentcanpost.html +++ b/lang/fr_ca/help/glossary/studentcanpost.html @@ -1,17 +1,17 @@ - - - - - -

                                  Permettre aux étudiants d'ajouter des -entrées

                                  -

                                  Vous pouvez choisir de permettre ou non aux étudiants -d'ajouter, de modifier et de supprimer ses propres entrées. Les -entrées exportées dans le glossaire principal ne peuvent -être modifiées ou supprimées que par les -enseignants. Ce réglage ne s'applique donc qu'aux glossaires -secondaires.

                                  -

                                  Remarque : les enseignants peuvent modifier ou effacer -des entrées en tout temps.

                                  - - + + + + + +

                                  Permettre aux étudiants d'ajouter des +entrées

                                  +

                                  Vous pouvez choisir de permettre ou non aux étudiants +d'ajouter, de modifier et de supprimer ses propres entrées. Les +entrées exportées dans le glossaire principal ne peuvent +être modifiées ou supprimées que par les +enseignants. Ce réglage ne s'applique donc qu'aux glossaires +secondaires.

                                  +

                                  Remarque : les enseignants peuvent modifier ou effacer +des entrées en tout temps.

                                  + + diff --git a/lang/fr_ca/help/glossary/usedynalink.html b/lang/fr_ca/help/glossary/usedynalink.html index a909c9603b4..00faa5a0fe9 100644 --- a/lang/fr_ca/help/glossary/usedynalink.html +++ b/lang/fr_ca/help/glossary/usedynalink.html @@ -1,20 +1,20 @@ - - - - - -

                                  Liaison automatique des entrées

                                  -

                                  Une fois cette fonctionnalité activée, les concepts ou -expressions définis dans ce glossaire seront liés -automatiquement chaque fois qu'ils apparaîtront dans les textes du -même cours, y compris dans les messages des forums, les -ressources internes, les résumés hebdomadaires ou -thématiques, les journaux, etc.

                                  -

                                  Si lors de l'écriture d'un texte (par exemple dans un forum) -vous ne voulez pas qu'un terme défini dans le glossaire soit -lié, vous devrez entourer le texte en question des codes -<nolink> et </nolink>.

                                  -

                                  Il est à remarquer que les noms des catégories sont -aussi liés.

                                  - - + + + + + +

                                  Liaison automatique des entrées

                                  +

                                  Une fois cette fonctionnalité activée, les concepts ou +expressions définis dans ce glossaire seront liés +automatiquement chaque fois qu'ils apparaîtront dans les textes du +même cours, y compris dans les messages des forums, les +ressources internes, les résumés hebdomadaires ou +thématiques, les journaux, etc.

                                  +

                                  Si lors de l'écriture d'un texte (par exemple dans un forum) +vous ne voulez pas qu'un terme défini dans le glossaire soit +lié, vous devrez entourer le texte en question des codes +<nolink> et </nolink>.

                                  +

                                  Il est à remarquer que les noms des catégories sont +aussi liés.

                                  + + diff --git a/lang/fr_ca/help/guestaccess.html b/lang/fr_ca/help/guestaccess.html index 95968d352d1..48f197622de 100644 --- a/lang/fr_ca/help/guestaccess.html +++ b/lang/fr_ca/help/guestaccess.html @@ -1,25 +1,25 @@ -

                                  Accès anonyme

                                  -

                                  Il vous est possible d'autoriser ou non l'accès anonyme à -ce cours.

                                  -

                                  Les visiteurs peuvent s'identifier comme « visiteur anonyme -» en utilisant le bouton « Connexion en visiteur anonyme -» sur la page d'identification.

                                  -

                                  Les visiteurs anonymes ont accès aux cours en « -lecture seulement ». Cela signifie qu'ils ne peuvent rien -publier, ce qui risquerait de déranger le cours pour les -étudiants réels.

                                  -

                                  Ceci peut être utile si vous souhaitez que vos collègues -jettent un oeil sur votre travail. Cela permet également aux -étudiants de visiter un cours avant de s'y inscrire. -

                                  -

                                  Vous avez le choix entre deux types d'accès anonyme : avec -ou sans clé d'inscription. Si vous choisissez d'autoriser les -visiteurs anonymes avec une clé d'inscription, ils auront à -fournir cette clé à chaque nouvelle connexion -(contrairement aux étudiants qui n'ont à le faire -qu'une seule fois). Cela vous permet de limiter l'accès -anonyme à certaines personnes. Si vous choisissez d'autoriser -l'accès anonyme sans clé d'inscription, alors tout le -monde peut entrer directement dans le cours.

                                  - - +

                                  Accès anonyme

                                  +

                                  Il vous est possible d'autoriser ou non l'accès anonyme à +ce cours.

                                  +

                                  Les visiteurs peuvent s'identifier comme « visiteur anonyme +» en utilisant le bouton « Connexion en visiteur anonyme +» sur la page d'identification.

                                  +

                                  Les visiteurs anonymes ont accès aux cours en « +lecture seulement ». Cela signifie qu'ils ne peuvent rien +publier, ce qui risquerait de déranger le cours pour les +étudiants réels.

                                  +

                                  Ceci peut être utile si vous souhaitez que vos collègues +jettent un oeil sur votre travail. Cela permet également aux +étudiants de visiter un cours avant de s'y inscrire. +

                                  +

                                  Vous avez le choix entre deux types d'accès anonyme : avec +ou sans clé d'inscription. Si vous choisissez d'autoriser les +visiteurs anonymes avec une clé d'inscription, ils auront à +fournir cette clé à chaque nouvelle connexion +(contrairement aux étudiants qui n'ont à le faire +qu'une seule fois). Cela vous permet de limiter l'accès +anonyme à certaines personnes. Si vous choisissez d'autoriser +l'accès anonyme sans clé d'inscription, alors tout le +monde peut entrer directement dans le cours.

                                  + + diff --git a/lang/fr_ca/help/html.html b/lang/fr_ca/help/html.html index ec8cad1ce04..d347dee438b 100644 --- a/lang/fr_ca/help/html.html +++ b/lang/fr_ca/help/html.html @@ -1,25 +1,25 @@ - - - - - -

                                  Quelques conseils pour l'utilisation de codes HTML -dans Moodle

                                  -

                                  Vous pouvez employer presque toutes les balises du HTML dans Moodle -afin d'obtenir la présentation que vous désirez.

                                  -

                                  Notez toutefois que tous les scripts (en Javascript, en Visual -Basic, etc.) seront automatiquement enlevés (question de -sécurité).

                                  -

                                  Puisque votre texte sera normalement contenu dans une cellule d'un -tableau bâti par Moodle, prenez note que :

                                  -
                                    -
                                  • il n'est pas nécessaire d'utiliser les balises -<head> ou <body>
                                  • -
                                  • n'oubliez pas de fermer les tableaux avec la balise -</table>
                                  • -
                                  -

                                  Les codes des binettes seront transformés en leur -équivalent graphique et les hyperliens seront convertis en URL.

                                  -

                                  - - + + + + + +

                                  Quelques conseils pour l'utilisation de codes HTML +dans Moodle

                                  +

                                  Vous pouvez employer presque toutes les balises du HTML dans Moodle +afin d'obtenir la présentation que vous désirez.

                                  +

                                  Notez toutefois que tous les scripts (en Javascript, en Visual +Basic, etc.) seront automatiquement enlevés (question de +sécurité).

                                  +

                                  Puisque votre texte sera normalement contenu dans une cellule d'un +tableau bâti par Moodle, prenez note que :

                                  +
                                    +
                                  • il n'est pas nécessaire d'utiliser les balises +<head> ou <body>
                                  • +
                                  • n'oubliez pas de fermer les tableaux avec la balise +</table>
                                  • +
                                  +

                                  Les codes des binettes seront transformés en leur +équivalent graphique et les hyperliens seront convertis en URL.

                                  +

                                  + + diff --git a/lang/fr_ca/help/journal/mods.html b/lang/fr_ca/help/journal/mods.html index 61241391174..45663a208c4 100644 --- a/lang/fr_ca/help/journal/mods.html +++ b/lang/fr_ca/help/journal/mods.html @@ -9,9 +9,9 @@ - - - - - - + + + + + + diff --git a/lang/fr_ca/help/langedit.html b/lang/fr_ca/help/langedit.html index a85930b7eaf..e52877b62cb 100644 --- a/lang/fr_ca/help/langedit.html +++ b/lang/fr_ca/help/langedit.html @@ -8,5 +8,5 @@

                                  Lorsqu'il y a seulement une variable, la forme $a est employée. Quand il y a deux variables ou plus, alors chacune a un nom.

                                  - - + + diff --git a/lang/fr_ca/help/lesson/jumpto.html b/lang/fr_ca/help/lesson/jumpto.html index 4eacf5307f8..ca833b6b382 100644 --- a/lang/fr_ca/help/lesson/jumpto.html +++ b/lang/fr_ca/help/lesson/jumpto.html @@ -4,7 +4,7 @@

                                  Remarquez qu'un lien Page suivante peut conduire vers une page différente que celle initialement prévue lorsque les pages sont déplacées. Les pages pointées par les liens Aller à mènent toujours sur les mêmes pages.

                                  - - - - + + + + diff --git a/lang/fr_ca/help/lesson/maxanswers.html b/lang/fr_ca/help/lesson/maxanswers.html index a1ebb3f1c6e..c8ebdaa0987 100644 --- a/lang/fr_ca/help/lesson/maxanswers.html +++ b/lang/fr_ca/help/lesson/maxanswers.html @@ -4,7 +4,7 @@

                                  On peut modifier cette valeur après que la leçon a été créée.

                                  - - - - + + + + diff --git a/lang/fr_ca/help/lesson/mods.html b/lang/fr_ca/help/lesson/mods.html index 4da1ae82c71..140a8f5e34a 100644 --- a/lang/fr_ca/help/lesson/mods.html +++ b/lang/fr_ca/help/lesson/mods.html @@ -4,5 +4,5 @@

                                  Une leçon permet de transmettre des informations de façon très flexible. Elle se compose de plusieurs pages qui se terminent normalement par une question et un choix de réponses. Selon le choix de l'étudiant, la leçon peut se poursuivre par la page suivante ou par une page précédente. Le parcours suivi peut être simple ou complexe, selon la nature du sujet présenté et au choix du professeur.

                                - - + + diff --git a/lang/fr_ca/help/lesson/retake.html b/lang/fr_ca/help/lesson/retake.html index 4ee5d312a71..f80b1689a24 100644 --- a/lang/fr_ca/help/lesson/retake.html +++ b/lang/fr_ca/help/lesson/retake.html @@ -6,9 +6,9 @@

                                Par défaut, ce paramètre est fixé à Oui ce qui veut dire que les étudiants peuvent suivre la leçon à plusieurs reprises. On considère que seules des circonstances exceptionnelles devraient mener à fixer cette valeur à Non. - - - - - - + + + + + + diff --git a/lang/fr_ca/help/mods.html b/lang/fr_ca/help/mods.html index 47b9b338c20..a2ecf75e6c7 100644 --- a/lang/fr_ca/help/mods.html +++ b/lang/fr_ca/help/mods.html @@ -1,5 +1,5 @@

                                Module d'activités

                                -

                                Moodle contient un éventail de modules d'activité qui peuvent être +

                                Moodle contient un éventail de modules d'activité qui peuvent être utilisés pour bâtir n'importe quel type de cours.

                                diff --git a/lang/fr_ca/help/picture.html b/lang/fr_ca/help/picture.html index bb560cd2667..e1da52d392c 100644 --- a/lang/fr_ca/help/picture.html +++ b/lang/fr_ca/help/picture.html @@ -1,39 +1,39 @@ -

                                Envoyer une image

                                -

                                Il est possible d'envoyer une image à partir de votre -ordinateur vers ce site (téléverser). Cette image sera -utilisée à différents endroits pour vous -représenter : par exemple, cette image apparaîtra près -de chaque message que vous posterez dans les forums.

                                -

                                Pour cette raison, il est préférable d'utiliser une -photo qui cadre votre visage d'assez près. L'utilisation d'une -photo personnelle rend plus réel les échanges dans les -forums. Vous pouvez utiliser toutefois toute image qui vous plaira. -Elle doit cependant être au format JPEG ou PNG (généralement -leur nom se termine par « .jpg » ou « .png »). -Pour obtenir cette image utilisez l'une de ces méthodes : -

                                -
                                  -
                                1. utiliser un appareil photo numérique, dans ce cas vos - photos devraient se trouver sur votre ordinateur au bon format ; -
                                2. numériser une photo papier avec un numériseur, - choisissez le format JPEG ou PNG ; -
                                3. si vous avez un don artisitique, vous pouvez dessiner une image - avec un logiciel de dessin sur ordinateur ; -
                                4. enfin, vous pouvez utiliser une image depuis le Web si elle - libre de droits d'auteur . http://images.google.fr - est l'endroit indiqué pour trouver des images (une fois que - vous avez trouvé l'image qui vous plaît, cliquez dessus - avec le bouton droit de la souris pour choisir l'option « - Enregistrer l'image » dans le menu). -

                                  -
                                -

                                Pour envoyer l'image, cliquez sur le bouton « Parcourir... » -dans le formulaire et choisissez l'image sur le disque de votre -ordinateur. Puis cliquez sur le button « Enregistrer mon profil -» en bas de la page, l'image sera retaillée en carrée -avec une taille de 100 pixels sur 100.

                                -

                                Lorsque vous reviendrez sur la page de votre profil il se peut que -l'image ne soit pas mise-à-jour, dans ce cas utilisez le -bouton « Actualiser » de votre navigateur.

                                - - +

                                Envoyer une image

                                +

                                Il est possible d'envoyer une image à partir de votre +ordinateur vers ce site (téléverser). Cette image sera +utilisée à différents endroits pour vous +représenter : par exemple, cette image apparaîtra près +de chaque message que vous posterez dans les forums.

                                +

                                Pour cette raison, il est préférable d'utiliser une +photo qui cadre votre visage d'assez près. L'utilisation d'une +photo personnelle rend plus réel les échanges dans les +forums. Vous pouvez utiliser toutefois toute image qui vous plaira. +Elle doit cependant être au format JPEG ou PNG (généralement +leur nom se termine par « .jpg » ou « .png »). +Pour obtenir cette image utilisez l'une de ces méthodes : +

                                +
                                  +
                                1. utiliser un appareil photo numérique, dans ce cas vos + photos devraient se trouver sur votre ordinateur au bon format ; +
                                2. numériser une photo papier avec un numériseur, + choisissez le format JPEG ou PNG ; +
                                3. si vous avez un don artisitique, vous pouvez dessiner une image + avec un logiciel de dessin sur ordinateur ; +
                                4. enfin, vous pouvez utiliser une image depuis le Web si elle + libre de droits d'auteur . http://images.google.fr + est l'endroit indiqué pour trouver des images (une fois que + vous avez trouvé l'image qui vous plaît, cliquez dessus + avec le bouton droit de la souris pour choisir l'option « + Enregistrer l'image » dans le menu). +

                                  +
                                +

                                Pour envoyer l'image, cliquez sur le bouton « Parcourir... » +dans le formulaire et choisissez l'image sur le disque de votre +ordinateur. Puis cliquez sur le button « Enregistrer mon profil +» en bas de la page, l'image sera retaillée en carrée +avec une taille de 100 pixels sur 100.

                                +

                                Lorsque vous reviendrez sur la page de votre profil il se peut que +l'image ne soit pas mise-à-jour, dans ce cas utilisez le +bouton « Actualiser » de votre navigateur.

                                + + diff --git a/lang/fr_ca/help/questions.html b/lang/fr_ca/help/questions.html index 0e5e6609ed5..b1ef16b7d0e 100644 --- a/lang/fr_ca/help/questions.html +++ b/lang/fr_ca/help/questions.html @@ -1,100 +1,100 @@ -

                                Poser des questions

                                - -

                                Certains types de questions favorisent davantage le développement du sens critique, -l'ouverture à de nouvelles idées et la création d'une nouvelle pensée... Vous trouverez ci-dessous -des exemples de ce type de questions. -

                                -

                                Questions de clarification

                                -
                                  -
                                • Qu'entendez vous par _____ ?
                                • -
                                • Quel est votre principal argument ?
                                • -
                                • Quel est le lien entre _____ et _____ ?
                                • -
                                • Vous est-il possible de reformuler ?
                                • -
                                • Est-ce que votre argument principal est _____ ou _____? -
                                • Quel est le point qui vous semble le plus important ici ?
                                • -
                                • Si je vous comprends bien, vous voulez dire que _____ ou _____ ?
                                • - -
                                • Qu'est ce que cela a à voir avec notre problème/discussion - ?
                                • -
                                • [Nom d'étudiant], que voulez dire par cette remarque? Que pensez-vous que veux dire [Nom d'étudiant] - par cette remarque?
                                • -
                                • [Nom d'étudiant 1], pouvez-vous résumer en vos propres mots ce que - [Nom d'étudiant 2] a dit ? . . . [Nom d'étudiant 1], est-ce ce que vous avez voulu exprimer - ?
                                • -
                                • Pourriez-vous me donner un exemple ?
                                • -
                                • Est-ce que ceci conviendrait comme exemple : _____ ?
                                • -
                                • Pourriez-vous développer votre explication ?
                                • -
                                • Vous serait-il possible d'en dire plus à ce sujet ?
                                • -
                                • Pourquoi avoir dit cela ?
                                • -
                                -

                                Questions qui remet en question les hypothèses de départ

                                -
                                  -
                                • Que prenez-vous pour acquis?
                                • -
                                • Que prend [Nom d'étudiant] pour acquis?
                                • -
                                • Que devrions-nous prendre pour acquis?
                                • -
                                • Vous semblez prendre pour acquis que _____. Vous ais-je bien compris?
                                • -
                                • Votre raisonnement se base entièrement sur _____. Pourquoi avez-vous choisi de baser - votre raisonnement sur _____ au lieu de _____?
                                • -
                                • Vous semblez prendre pour acquis que _____. Pouvez justifiez ce choix?
                                • -
                                • Est-ce vraiment toujours le cas? Pourquoi croyez-vous que c'est le cas ici?
                                • -
                                • Pourquoi quelqu'un devrait-il prendre cela pour acquis?
                                • -
                                -

                                Questions pour la remise en question des faits et des raisons

                                -
                                  -
                                • Donnez un exemple?
                                • -
                                • Comment le savez-vous?
                                • -
                                • Pourquoi pensez-vous que cela est vrai?
                                • -
                                • Quels sont les faits qui vous permet d'avancer cela?
                                • -
                                • Quelle différence cela fait-il?
                                • -
                                • Quelles sont les raisons que avez pour dire cela?
                                • -
                                • Quelles sont les autres informations dont vous avez besoin?
                                • -
                                • Pouvez-vous nous expliquez vos raisons?
                                • -
                                • Est-ce que ces raisons sont valables?
                                • -
                                • Pourquoi dites-vous cela?
                                • -
                                • Qu'est-ce qui vous a amené à croire cela?
                                • -
                                • Comment cela s'applique-t-il dans ce cas?
                                • -
                                • Qu'est-ce qui vous ferait changer d'avis?
                                • -
                                • Est-ce une bonne raison pour croire cela?
                                • -
                                • Y a-t-il une bonne raison pour douter de cela?
                                • -
                                • Qui pourrait savoir que cela est vrai?
                                • -
                                • Que diriez-vous à quelqu'un qui dirait ____?
                                • -
                                • Y a-t-il quelqu'un qui peut ajouter quelque chose pour supporter cette position?
                                • -
                                • Comment êtes-vous arriver à cette conclusion?
                                • -
                                • Comment pourrions-nous prouver que cela est exact?
                                • -
                                -

                                Questions sur les points de vue

                                -
                                  -
                                • Que supposez-vous par cela?
                                • -
                                • Lorsque vous dites _____, est-ce que vous supposez _____?
                                • -
                                • Mais, si cela arrive, quoi d'autre pourrait-il en résulter? Pourquoi?
                                • -
                                • Quelles en seraient les conséquences?
                                • -
                                • Est-ce que cela arrivera nécessairement/probablement/possiblement?
                                • -
                                • Quelles alternatives y a-t-il?
                                • -
                                • Si on remarque que _____ et _____ sont vrais, quoi d'autre serait vrai aussi?
                                • -
                                • Si ____ respecte l'éthique, que pensez-vous de _____?
                                • -
                                -

                                Questions sur les implications et les conséquences -

                                -
                                  -
                                • Comment pourrions-nous trouver les conséquences de cela?
                                • -
                                • Qu'est-ce que cette question implique?
                                • -
                                • Poseriez-vous cette question autrement?
                                • -
                                • Comment pourrions-nous règler cette question?
                                • -
                                • Est-ce que ce problème se divise en plusieurs parties
                                • -
                                • Est-ce que la question est claire? La comprenons-nous
                                • -
                                • Est-il facile ou difficile de répondre à cette question? Pourquoi?
                                • -
                                • Est-ce que cette question remet en question quelque chose? Quoi?
                                • -
                                • Sommes-nous d'accord avec la question?
                                • -
                                • À quelles questions devons-nous répondre avant de répondre à notre question?
                                • -
                                • Je ne suis pas certain de comprendre votre interprétation. Est-ce la même chose que _____?
                                • -
                                • Comment pourrions-nous reformuler cette question?
                                • -
                                • Pourquoi est-ce que cette problématique est importante?
                                • -
                                • Est-ce la question la plus importante? ou y-a-t-il une question encore plus fondamentale?
                                • -
                                -
                                -

                                Questions adaptées de Paul, R. (1993). Critical -Thinking: How To Prepare Students for a Rapidly Changing World: -Foundation for Critical Thinking, Santa Rosa, CA. -

                                - - +

                                Poser des questions

                                + +

                                Certains types de questions favorisent davantage le développement du sens critique, +l'ouverture à de nouvelles idées et la création d'une nouvelle pensée... Vous trouverez ci-dessous +des exemples de ce type de questions. +

                                +

                                Questions de clarification

                                +
                                  +
                                • Qu'entendez vous par _____ ?
                                • +
                                • Quel est votre principal argument ?
                                • +
                                • Quel est le lien entre _____ et _____ ?
                                • +
                                • Vous est-il possible de reformuler ?
                                • +
                                • Est-ce que votre argument principal est _____ ou _____? +
                                • Quel est le point qui vous semble le plus important ici ?
                                • +
                                • Si je vous comprends bien, vous voulez dire que _____ ou _____ ?
                                • + +
                                • Qu'est ce que cela a à voir avec notre problème/discussion + ?
                                • +
                                • [Nom d'étudiant], que voulez dire par cette remarque? Que pensez-vous que veux dire [Nom d'étudiant] + par cette remarque?
                                • +
                                • [Nom d'étudiant 1], pouvez-vous résumer en vos propres mots ce que + [Nom d'étudiant 2] a dit ? . . . [Nom d'étudiant 1], est-ce ce que vous avez voulu exprimer + ?
                                • +
                                • Pourriez-vous me donner un exemple ?
                                • +
                                • Est-ce que ceci conviendrait comme exemple : _____ ?
                                • +
                                • Pourriez-vous développer votre explication ?
                                • +
                                • Vous serait-il possible d'en dire plus à ce sujet ?
                                • +
                                • Pourquoi avoir dit cela ?
                                • +
                                +

                                Questions qui remet en question les hypothèses de départ

                                +
                                  +
                                • Que prenez-vous pour acquis?
                                • +
                                • Que prend [Nom d'étudiant] pour acquis?
                                • +
                                • Que devrions-nous prendre pour acquis?
                                • +
                                • Vous semblez prendre pour acquis que _____. Vous ais-je bien compris?
                                • +
                                • Votre raisonnement se base entièrement sur _____. Pourquoi avez-vous choisi de baser + votre raisonnement sur _____ au lieu de _____?
                                • +
                                • Vous semblez prendre pour acquis que _____. Pouvez justifiez ce choix?
                                • +
                                • Est-ce vraiment toujours le cas? Pourquoi croyez-vous que c'est le cas ici?
                                • +
                                • Pourquoi quelqu'un devrait-il prendre cela pour acquis?
                                • +
                                +

                                Questions pour la remise en question des faits et des raisons

                                +
                                  +
                                • Donnez un exemple?
                                • +
                                • Comment le savez-vous?
                                • +
                                • Pourquoi pensez-vous que cela est vrai?
                                • +
                                • Quels sont les faits qui vous permet d'avancer cela?
                                • +
                                • Quelle différence cela fait-il?
                                • +
                                • Quelles sont les raisons que avez pour dire cela?
                                • +
                                • Quelles sont les autres informations dont vous avez besoin?
                                • +
                                • Pouvez-vous nous expliquez vos raisons?
                                • +
                                • Est-ce que ces raisons sont valables?
                                • +
                                • Pourquoi dites-vous cela?
                                • +
                                • Qu'est-ce qui vous a amené à croire cela?
                                • +
                                • Comment cela s'applique-t-il dans ce cas?
                                • +
                                • Qu'est-ce qui vous ferait changer d'avis?
                                • +
                                • Est-ce une bonne raison pour croire cela?
                                • +
                                • Y a-t-il une bonne raison pour douter de cela?
                                • +
                                • Qui pourrait savoir que cela est vrai?
                                • +
                                • Que diriez-vous à quelqu'un qui dirait ____?
                                • +
                                • Y a-t-il quelqu'un qui peut ajouter quelque chose pour supporter cette position?
                                • +
                                • Comment êtes-vous arriver à cette conclusion?
                                • +
                                • Comment pourrions-nous prouver que cela est exact?
                                • +
                                +

                                Questions sur les points de vue

                                +
                                  +
                                • Que supposez-vous par cela?
                                • +
                                • Lorsque vous dites _____, est-ce que vous supposez _____?
                                • +
                                • Mais, si cela arrive, quoi d'autre pourrait-il en résulter? Pourquoi?
                                • +
                                • Quelles en seraient les conséquences?
                                • +
                                • Est-ce que cela arrivera nécessairement/probablement/possiblement?
                                • +
                                • Quelles alternatives y a-t-il?
                                • +
                                • Si on remarque que _____ et _____ sont vrais, quoi d'autre serait vrai aussi?
                                • +
                                • Si ____ respecte l'éthique, que pensez-vous de _____?
                                • +
                                +

                                Questions sur les implications et les conséquences +

                                +
                                  +
                                • Comment pourrions-nous trouver les conséquences de cela?
                                • +
                                • Qu'est-ce que cette question implique?
                                • +
                                • Poseriez-vous cette question autrement?
                                • +
                                • Comment pourrions-nous règler cette question?
                                • +
                                • Est-ce que ce problème se divise en plusieurs parties
                                • +
                                • Est-ce que la question est claire? La comprenons-nous
                                • +
                                • Est-il facile ou difficile de répondre à cette question? Pourquoi?
                                • +
                                • Est-ce que cette question remet en question quelque chose? Quoi?
                                • +
                                • Sommes-nous d'accord avec la question?
                                • +
                                • À quelles questions devons-nous répondre avant de répondre à notre question?
                                • +
                                • Je ne suis pas certain de comprendre votre interprétation. Est-ce la même chose que _____?
                                • +
                                • Comment pourrions-nous reformuler cette question?
                                • +
                                • Pourquoi est-ce que cette problématique est importante?
                                • +
                                • Est-ce la question la plus importante? ou y-a-t-il une question encore plus fondamentale?
                                • +
                                +
                                +

                                Questions adaptées de Paul, R. (1993). Critical +Thinking: How To Prepare Students for a Rapidly Changing World: +Foundation for Critical Thinking, Santa Rosa, CA. +

                                + + diff --git a/lang/fr_ca/help/quiz/categories.html b/lang/fr_ca/help/quiz/categories.html index 1568c607246..ec65d07b07b 100644 --- a/lang/fr_ca/help/quiz/categories.html +++ b/lang/fr_ca/help/quiz/categories.html @@ -1,61 +1,61 @@ - - - - - -

                                Catégories de questions

                                -

                                Plutôt que de conserver toutes vos questions dans une seule -grande liste, vous pouvez créer des catégories pour les -gérer plus facilement. Vous construirez ainsi une banque de -questions classée en plusieurs catégories où -chaque question peut être utilisée plusieurs fois dans des -tests différents.
                                -

                                -

                                Vous devez donner un nom à chaque catégorie et fournir -une courte description. Vous pouvez créer autant de -catégories que vous le -désirez. Vous pouvez aussi en supprimer, mais si la -catégorie que vous désirez effacer contient des -questions, alors vous devrez indiquer une catégorie où -elles doivent être déplacées.

                                -

                                Chaque catégorie peut être également -publiée. La catégorie et toutes ses questions sont alors -disponibles à tous les cours sur votre serveur Moodle, de sorte -que d'autres professeurs pourront employer vos questions dans leurs -cours. Toutefois, il est fortement recommandé d'utiliser cette -option avec parcimonie, car les catégories que vous aurez -publiées seront dans toutes les listes de catégories de -tous les cours! Supposons que 30 professeurs décident de publier -seulement deux catégories chacun, cela fait un total de 60 -catégories qui s'ajoutent aux catégories privées -de chaque professeur... On recommande donc les façons de faire -suivantes :
                                -

                                -
                                  -
                                • Les catégories de questions ne devraient pas être -publiées par défaut.
                                • -
                                • On publie une catégorie pour un temps très court, -par exemple, pour quelques heures ou pour quelques jours, le temps que -les autres professeurs puissent récupérer vos questions -(on avise les professeurs concernés de faire vite!). -Ensuite, on réactive l'attribut privé de la -catégorie.
                                • -
                                • Le nom de la catégorie devrait être court de -façon à ce que l'affichage de la page où se fait -l'édition des tests puisse tenir sur un écran.
                                  -
                                • -
                                -

                                -

                                Vous ne pouvez pas modifier les questions tirées d'une -catégorie publiée dans un autre cours à moins que -vous soyez aussi titulaire (concepteur) de ce cours.
                                -Les questions tirées d'une catégorie qui a -été publiée, mais qui est par la suite devenue -privée, sont encore disponibles dans le test où elles ont -été utilisées. Les étudiants peuvent donc -faire le test sans problèmes d'accès. Le professeur peut -retirer ces questions du test, mais ne pourra pas les ajouter de -nouveau puisque la catégorie est maintenant privée.
                                -

                                - - + + + + + +

                                Catégories de questions

                                +

                                Plutôt que de conserver toutes vos questions dans une seule +grande liste, vous pouvez créer des catégories pour les +gérer plus facilement. Vous construirez ainsi une banque de +questions classée en plusieurs catégories où +chaque question peut être utilisée plusieurs fois dans des +tests différents.
                                +

                                +

                                Vous devez donner un nom à chaque catégorie et fournir +une courte description. Vous pouvez créer autant de +catégories que vous le +désirez. Vous pouvez aussi en supprimer, mais si la +catégorie que vous désirez effacer contient des +questions, alors vous devrez indiquer une catégorie où +elles doivent être déplacées.

                                +

                                Chaque catégorie peut être également +publiée. La catégorie et toutes ses questions sont alors +disponibles à tous les cours sur votre serveur Moodle, de sorte +que d'autres professeurs pourront employer vos questions dans leurs +cours. Toutefois, il est fortement recommandé d'utiliser cette +option avec parcimonie, car les catégories que vous aurez +publiées seront dans toutes les listes de catégories de +tous les cours! Supposons que 30 professeurs décident de publier +seulement deux catégories chacun, cela fait un total de 60 +catégories qui s'ajoutent aux catégories privées +de chaque professeur... On recommande donc les façons de faire +suivantes :
                                +

                                +
                                  +
                                • Les catégories de questions ne devraient pas être +publiées par défaut.
                                • +
                                • On publie une catégorie pour un temps très court, +par exemple, pour quelques heures ou pour quelques jours, le temps que +les autres professeurs puissent récupérer vos questions +(on avise les professeurs concernés de faire vite!). +Ensuite, on réactive l'attribut privé de la +catégorie.
                                • +
                                • Le nom de la catégorie devrait être court de +façon à ce que l'affichage de la page où se fait +l'édition des tests puisse tenir sur un écran.
                                  +
                                • +
                                +

                                +

                                Vous ne pouvez pas modifier les questions tirées d'une +catégorie publiée dans un autre cours à moins que +vous soyez aussi titulaire (concepteur) de ce cours.
                                +Les questions tirées d'une catégorie qui a +été publiée, mais qui est par la suite devenue +privée, sont encore disponibles dans le test où elles ont +été utilisées. Les étudiants peuvent donc +faire le test sans problèmes d'accès. Le professeur peut +retirer ces questions du test, mais ne pourra pas les ajouter de +nouveau puisque la catégorie est maintenant privée.
                                +

                                + + diff --git a/lang/fr_ca/help/quiz/correctanswers.html b/lang/fr_ca/help/quiz/correctanswers.html index d4244ebc4a7..d6174983416 100644 --- a/lang/fr_ca/help/quiz/correctanswers.html +++ b/lang/fr_ca/help/quiz/correctanswers.html @@ -2,4 +2,4 @@

                                Si vous avez activé l'affichage des bonnes réponses, alors la rétroaction montrera également la bonne réponse pour chaque question. Elles seront faciles à identifier puisqu'elles seront surlignées.

                                - + diff --git a/lang/fr_ca/help/quiz/createmultiple.html b/lang/fr_ca/help/quiz/createmultiple.html index 85cf76b6249..c8410869f45 100644 --- a/lang/fr_ca/help/quiz/createmultiple.html +++ b/lang/fr_ca/help/quiz/createmultiple.html @@ -1,29 +1,29 @@ - - - - - -

                                Créer plusieurs questions aléatoires

                                -

                                Cette commande vous permet de créer un ensemble de questions -dont les questions seront tirées au hasard dans la -catégorie que vous aurez choisie. Cet ensemble peut être -ajouté à un questionnairel. Vous devez donner le -nombre de question à inclure dans cet ensemble.
                                -

                                -

                                Vous pouvez ainsi créer un questionnaire qui serait -entièrement généré au hasard et qui serait -différent pour chaque étudiant. Plus le nombre de -questions dans la catégorie est grand, plus les questionnaires -générés seront différents les uns des -autres.
                                -

                                -

                                Vous pouvez également inclure cet ensemble de questions -aléatoires dans un questionnaire de façon à ce -qu'une partie seulement du test soit aléatoire.
                                -

                                -

                                Il est important que les questions servant à établir -un questionnaire construit aléatoirement soient de même -niveau.
                                -

                                - - + + + + + +

                                Créer plusieurs questions aléatoires

                                +

                                Cette commande vous permet de créer un ensemble de questions +dont les questions seront tirées au hasard dans la +catégorie que vous aurez choisie. Cet ensemble peut être +ajouté à un questionnairel. Vous devez donner le +nombre de question à inclure dans cet ensemble.
                                +

                                +

                                Vous pouvez ainsi créer un questionnaire qui serait +entièrement généré au hasard et qui serait +différent pour chaque étudiant. Plus le nombre de +questions dans la catégorie est grand, plus les questionnaires +générés seront différents les uns des +autres.
                                +

                                +

                                Vous pouvez également inclure cet ensemble de questions +aléatoires dans un questionnaire de façon à ce +qu'une partie seulement du test soit aléatoire.
                                +

                                +

                                Il est important que les questions servant à établir +un questionnaire construit aléatoirement soient de même +niveau.
                                +

                                + + diff --git a/lang/fr_ca/help/quiz/description.html b/lang/fr_ca/help/quiz/description.html index be7922fe615..52196264110 100644 --- a/lang/fr_ca/help/quiz/description.html +++ b/lang/fr_ca/help/quiz/description.html @@ -1,6 +1,6 @@ -

                                Description

                                - -

                                Ce type de question n'en est pas vraiment un.

                                - -

                                Il sert à afficher un bloc de texte à l'intérieur d'un questionnaire sans que l'étudiant ait à répondre quoi que ce soit. On peut l'utiliser pour donner des directives pour les questions qui suivent.

                                - +

                                Description

                                + +

                                Ce type de question n'en est pas vraiment un.

                                + +

                                Il sert à afficher un bloc de texte à l'intérieur d'un questionnaire sans que l'étudiant ait à répondre quoi que ce soit. On peut l'utiliser pour donner des directives pour les questions qui suivent.

                                + diff --git a/lang/fr_ca/help/quiz/feedback.html b/lang/fr_ca/help/quiz/feedback.html index f40cf7f70c6..db170beca2a 100644 --- a/lang/fr_ca/help/quiz/feedback.html +++ b/lang/fr_ca/help/quiz/feedback.html @@ -2,4 +2,4 @@

                                Si vous avez activé l'affichage des rétroactions dans un test, alors les étudiants recevront la rétroaction que vous avez entrée pour chaque réponse de chaque question, que la réponse soit bonne ou mauvaise.

                                - + diff --git a/lang/fr_ca/help/quiz/formatblackboard.html b/lang/fr_ca/help/quiz/formatblackboard.html index 3e87d0dd709..3234d4e4337 100644 --- a/lang/fr_ca/help/quiz/formatblackboard.html +++ b/lang/fr_ca/help/quiz/formatblackboard.html @@ -1,12 +1,12 @@ - - - - - -

                                Importation de questionnaires sous format -«Blackboard»
                                -

                                -

                                La documentation de cette option n'est pas encore disponible.
                                -

                                - - + + + + + +

                                Importation de questionnaires sous format +«Blackboard»
                                +

                                +

                                La documentation de cette option n'est pas encore disponible.
                                +

                                + + diff --git a/lang/fr_ca/help/quiz/formatcustom.html b/lang/fr_ca/help/quiz/formatcustom.html index dcddb003f9a..c130c61f2e6 100644 --- a/lang/fr_ca/help/quiz/formatcustom.html +++ b/lang/fr_ca/help/quiz/formatcustom.html @@ -1,11 +1,11 @@ - - - - - -

                                Importation de questionnaires de format -personnalisé

                                -

                                La documentation sur cette option n'est pas encore disponible.
                                -

                                - - + + + + + +

                                Importation de questionnaires de format +personnalisé

                                +

                                La documentation sur cette option n'est pas encore disponible.
                                +

                                + + diff --git a/lang/fr_ca/help/quiz/formatmissingword.html b/lang/fr_ca/help/quiz/formatmissingword.html index 8cabe9f4a34..f1e86fa02f8 100644 --- a/lang/fr_ca/help/quiz/formatmissingword.html +++ b/lang/fr_ca/help/quiz/formatmissingword.html @@ -1,11 +1,11 @@ - - - - - -

                                Importation de questionnaire de format «mots -manquants»

                                -

                                La documentation sur cette option n'est pas encore disponible.
                                -

                                - - + + + + + +

                                Importation de questionnaire de format «mots +manquants»

                                +

                                La documentation sur cette option n'est pas encore disponible.
                                +

                                + + diff --git a/lang/fr_ca/help/quiz/import.html b/lang/fr_ca/help/quiz/import.html index 0ff2f27897f..5db76f65e73 100644 --- a/lang/fr_ca/help/quiz/import.html +++ b/lang/fr_ca/help/quiz/import.html @@ -1,65 +1,65 @@ - - - - - -

                                Importation de questions

                                -

                                Cette fonction vous permet d'importer des questions à partir -des fichiers de texte externes à partir d'un formulaire. Les -formats de fichiers suivants sont supportés :

                                -

                                Réponse intégrée au texte -

                                -
                                  -

                                  Ce format supporte seulement des questions où la -réponse est intégrée au texte et qu'un choix de -réponses est proposé. Chaque réponse est -séparée d'un tilde (~), et la réponse correcte est -précédée d'un signe d'égalité (=). -Voici un exemple :

                                  -
                                  Dès que nous commençons à explorer -les parties de notre corps lorsque nous sommes enfant, nous devenons -des étudiants { =d'anatomie et de physiologie ~ de science ~ de -réflexologie}, et dans un sens, nous demeurons des -étudiants pour la vie. -
                                  -

                                  Pour plus -d'informations au sujet du format « Réponse -intégrée au texte »

                                  -
                                -

                                AON

                                -
                                  -

                                  Ce format est identique au format précédent, sauf -qu'après l'importation des questions, toutes les questions -à réponse courte sont converties en question -d'appariements en groupe de quatre à la fois. En plus, les -réponses des questions à choix multiples sont -placées aléatoirement.

                                  -

                                  Ce type de question porte le nom d'une organisation qui a -commandité le développement de beaucoup de types de -questions.

                                  -
                                -

                                BlackBoard

                                - -

                                Personnalisé

                                -
                                  -

                                  Si vous avez votre propre format que vous désirez importer, -vous pouvez en programmer son importation en éditant le fichier -modèle «mod/quiz/format/custom.php». Le bout de -programme requis est minimal puisqu'il n'a qu'à analyser le -texte d'une question.

                                  -

                                  Pour -plus d'informations au sujet du format -« personnalisé »

                                  -
                                -

                                D'autres formats sont à venir, y compris WebCT, IMS QTI et -tous les autres formats que les utilisateurs voudront bien fournir!

                                - - + + + + + +

                                Importation de questions

                                +

                                Cette fonction vous permet d'importer des questions à partir +des fichiers de texte externes à partir d'un formulaire. Les +formats de fichiers suivants sont supportés :

                                +

                                Réponse intégrée au texte +

                                +
                                  +

                                  Ce format supporte seulement des questions où la +réponse est intégrée au texte et qu'un choix de +réponses est proposé. Chaque réponse est +séparée d'un tilde (~), et la réponse correcte est +précédée d'un signe d'égalité (=). +Voici un exemple :

                                  +
                                  Dès que nous commençons à explorer +les parties de notre corps lorsque nous sommes enfant, nous devenons +des étudiants { =d'anatomie et de physiologie ~ de science ~ de +réflexologie}, et dans un sens, nous demeurons des +étudiants pour la vie. +
                                  +

                                  Pour plus +d'informations au sujet du format « Réponse +intégrée au texte »

                                  +
                                +

                                AON

                                +
                                  +

                                  Ce format est identique au format précédent, sauf +qu'après l'importation des questions, toutes les questions +à réponse courte sont converties en question +d'appariements en groupe de quatre à la fois. En plus, les +réponses des questions à choix multiples sont +placées aléatoirement.

                                  +

                                  Ce type de question porte le nom d'une organisation qui a +commandité le développement de beaucoup de types de +questions.

                                  +
                                +

                                BlackBoard

                                + +

                                Personnalisé

                                +
                                  +

                                  Si vous avez votre propre format que vous désirez importer, +vous pouvez en programmer son importation en éditant le fichier +modèle «mod/quiz/format/custom.php». Le bout de +programme requis est minimal puisqu'il n'a qu'à analyser le +texte d'une question.

                                  +

                                  Pour +plus d'informations au sujet du format +« personnalisé »

                                  +
                                +

                                D'autres formats sont à venir, y compris WebCT, IMS QTI et +tous les autres formats que les utilisateurs voudront bien fournir!

                                + + diff --git a/lang/fr_ca/help/quiz/index.html b/lang/fr_ca/help/quiz/index.html index 10cdde6b72c..3a4dd1a2784 100644 --- a/lang/fr_ca/help/quiz/index.html +++ b/lang/fr_ca/help/quiz/index.html @@ -1,65 +1,65 @@ - - - - - -

                                Tests

                                - - - + + + + + +

                                Tests

                                + + + diff --git a/lang/fr_ca/help/quiz/match.html b/lang/fr_ca/help/quiz/match.html index 11a7be881e9..f0166910c6e 100644 --- a/lang/fr_ca/help/quiz/match.html +++ b/lang/fr_ca/help/quiz/match.html @@ -1,9 +1,9 @@

                                Question d'appariement

                                - +

                                La question d'appariement se divise en plusieurs parties :

                                -
                                  -
                                • une introduction qui présente le contexte;
                                • -
                                • une liste de propositions;
                                • +
                                    +
                                  • une introduction qui présente le contexte;
                                  • +
                                  • une liste de propositions;
                                  • une liste de réponses.
                                  • -
                                  +

                                L'étudiant doit associer chaque proposition avec une des réponses proposées. Une réponse correcte correspond à chaque proposition. Toutes les propositions ont un même poids dans le calcul de la note pour la question.

                                \ No newline at end of file diff --git a/lang/fr_ca/help/quiz/maxgrade.html b/lang/fr_ca/help/quiz/maxgrade.html index d57b7d91b26..aa4cc256d18 100644 --- a/lang/fr_ca/help/quiz/maxgrade.html +++ b/lang/fr_ca/help/quiz/maxgrade.html @@ -5,8 +5,8 @@

                                Par exemple, si vous avez un test de 10 questions valant chacune 5 points, le total sera de 50 points. Si la note maximale a été fixée à 20 pour ce test, les notes de chaque question seront recalculées pour que la note maximale soit de 20.

                                On utilise cette option lorsqu'on désire faire correspondre la note totale du test à sa pondération dans le cours : si le test vaut 20 % de la note finale du cours, la note du test sera sur 20.

                                - - - - - + + + + + diff --git a/lang/fr_ca/help/quiz/mods.html b/lang/fr_ca/help/quiz/mods.html index d9a34b44eb7..5e1aae7e304 100644 --- a/lang/fr_ca/help/quiz/mods.html +++ b/lang/fr_ca/help/quiz/mods.html @@ -1,7 +1,7 @@

                                 Tests

                                  -

                                  Ce module permet au professeur de concevoir et d'inclure des tests dans son cours. Plusieurs types de questions sont offerts : choix multiples, question à appariements, vrai ou faux, réponse courte, réponse numérique, etc. Ces questions sont conservées dans une base de données classée par catégorie, et peuvent être utilisées à plusieurs reprises dans le cours. Les catégories de question peuvent même être publiées, ce qui les rend disponibles aux autres professeurs.

                                  +

                                  Ce module permet au professeur de concevoir et d'inclure des tests dans son cours. Plusieurs types de questions sont offerts : choix multiples, question à appariements, vrai ou faux, réponse courte, réponse numérique, etc. Ces questions sont conservées dans une base de données classée par catégorie, et peuvent être utilisées à plusieurs reprises dans le cours. Les catégories de question peuvent même être publiées, ce qui les rend disponibles aux autres professeurs.

                                  Le professeur peut autoriser les tentatives multiples pour faire le test. Chaque tentative est automatiquement évaluée. Il peut choisir de faire afficher une rétroaction pour chaque question et de montrer les réponses correctes.

                                - + diff --git a/lang/fr_ca/help/quiz/multianswer.html b/lang/fr_ca/help/quiz/multianswer.html index f2a60a72e26..cfd174ad8ca 100644 --- a/lang/fr_ca/help/quiz/multianswer.html +++ b/lang/fr_ca/help/quiz/multianswer.html @@ -1,104 +1,104 @@ - - - - - -

                                Question à réponses -incorporées
                                -

                                -

                                Ce type de question est très flexible. Les questions se -composent d'un texte (dans le format de Moodle) auquel on peut -incorporer des réponses à choix multiples, des -réponses courtes ou des réponses numériques.

                                -

                                Il n'y a présentement aucune interface graphique pour -créer ces questions - vous devez les écrire directement -dans la boîte de texte ou en l'important à partir d'un -fichier externe.

                                -

                                Voici un exemple de texte qui illustre comment inclure les -différents types de réponses attendues :

                                -
                                -
                                -
                                -

                                Cet exemple apparaîtra ainsi aux étudiants:

                                -
                                - - - - - - -
                                - - - - - - - -
                                -

                                3

                                -

                                8 points

                                -
                                -
                                -

                                Cette question comporte du texte auquel on a -directement incorporé des réponses à choix -multiples - -et vous devez maintenant répondre à une question courte et finalement nous avons -une question qui demande une réponse numérique avec point -décimal .
                                -
                                -Notez que les adresses URL comme www.moodle.org et les binettes :-) sont correctement interprétées:
                                -a) Est-ce bien? - -
                                -b) Quelle note désirez-vous?
                                -
                                -

                                -
                                -
                                -
                                -
                                - - + + + + + +

                                Question à réponses +incorporées
                                +

                                +

                                Ce type de question est très flexible. Les questions se +composent d'un texte (dans le format de Moodle) auquel on peut +incorporer des réponses à choix multiples, des +réponses courtes ou des réponses numériques.

                                +

                                Il n'y a présentement aucune interface graphique pour +créer ces questions - vous devez les écrire directement +dans la boîte de texte ou en l'important à partir d'un +fichier externe.

                                +

                                Voici un exemple de texte qui illustre comment inclure les +différents types de réponses attendues :

                                +
                                +
                                +
                                +

                                Cet exemple apparaîtra ainsi aux étudiants:

                                +
                                + + + + + + +
                                + + + + + + + +
                                +

                                3

                                +

                                8 points

                                +
                                +
                                +

                                Cette question comporte du texte auquel on a +directement incorporé des réponses à choix +multiples + +et vous devez maintenant répondre à une question courte et finalement nous avons +une question qui demande une réponse numérique avec point +décimal .
                                +
                                +Notez que les adresses URL comme www.moodle.org et les binettes :-) sont correctement interprétées:
                                +a) Est-ce bien? + +
                                +b) Quelle note désirez-vous?
                                +
                                +

                                +
                                +
                                +
                                +
                                + + diff --git a/lang/fr_ca/help/quiz/multichoice.html b/lang/fr_ca/help/quiz/multichoice.html index 90ae05eb0af..3a3043f214c 100644 --- a/lang/fr_ca/help/quiz/multichoice.html +++ b/lang/fr_ca/help/quiz/multichoice.html @@ -1,28 +1,28 @@ - - - - - -

                                Questions à choix multiples

                                -

                                Une question à choix multiples offre à -l'étudiant un choix de réponses parmi lesquelles il devra -choisir. La question peut inclure une image. Il existe deux variantes -à ce type de question :

                                -
                                  -
                                • Une seule réponse est valide et donc tous les points sont -accordés à celle-ci.
                                • -
                                • Il y a plusieurs réponses valides et les points sont -partagés entre les différentes réponses.
                                • -
                                -Dans ce dernier cas, il est possible d'accorder une note -négative aux mauvaises réponses pour éviter que -les étudiants ne choisissent systématiquement toutes les -réponses pour une obtenir tous les points. Moodle attribuera la -note 0 si le total des notes pour les réponses choisies devait -être négatif. Le professeur doit s'assurer de ne pas -dépasser 100% des points accordés, car Moodle -n'interviendrait pas alors. -

                                Comme d'habitude, on recommande de toujours fournir une -rétroaction pour les bonnes et mauvaises réponses.

                                - - + + + + + +

                                Questions à choix multiples

                                +

                                Une question à choix multiples offre à +l'étudiant un choix de réponses parmi lesquelles il devra +choisir. La question peut inclure une image. Il existe deux variantes +à ce type de question :

                                +
                                  +
                                • Une seule réponse est valide et donc tous les points sont +accordés à celle-ci.
                                • +
                                • Il y a plusieurs réponses valides et les points sont +partagés entre les différentes réponses.
                                • +
                                +Dans ce dernier cas, il est possible d'accorder une note +négative aux mauvaises réponses pour éviter que +les étudiants ne choisissent systématiquement toutes les +réponses pour une obtenir tous les points. Moodle attribuera la +note 0 si le total des notes pour les réponses choisies devait +être négatif. Le professeur doit s'assurer de ne pas +dépasser 100% des points accordés, car Moodle +n'interviendrait pas alors. +

                                Comme d'habitude, on recommande de toujours fournir une +rétroaction pour les bonnes et mauvaises réponses.

                                + + diff --git a/lang/fr_ca/help/quiz/numerical.html b/lang/fr_ca/help/quiz/numerical.html index b393fa24470..848841ddeb7 100644 --- a/lang/fr_ca/help/quiz/numerical.html +++ b/lang/fr_ca/help/quiz/numerical.html @@ -1,24 +1,24 @@ - - - - - -

                                Question numérique

                                -

                                La question à réponse numérique a l'apparence -d'une question à -réponse courte. La différence réside dans le fait -que la première peut accepter la -réponse fournie par l'étudiant avec une marge d'erreur . -Le professeur fournit la -valeur minimale et la valeur maximale de la plage des valeurs -acceptables.

                                -

                                Par exemple, supposons que la réponse à une question -est 30 avec une erreur permise de 5. N'importe quel nombre entre 25 et -35 sera correct.

                                -

                                Les questions numériques acceptent également des -réponses non numériques qui tiennent compte de la casse. -Cela s'avère particulièrement utile lorsque la -réponse à la question numérique est du type : N/A, -+inf, - inf, etc..

                                - - + + + + + +

                                Question numérique

                                +

                                La question à réponse numérique a l'apparence +d'une question à +réponse courte. La différence réside dans le fait +que la première peut accepter la +réponse fournie par l'étudiant avec une marge d'erreur . +Le professeur fournit la +valeur minimale et la valeur maximale de la plage des valeurs +acceptables.

                                +

                                Par exemple, supposons que la réponse à une question +est 30 avec une erreur permise de 5. N'importe quel nombre entre 25 et +35 sera correct.

                                +

                                Les questions numériques acceptent également des +réponses non numériques qui tiennent compte de la casse. +Cela s'avère particulièrement utile lorsque la +réponse à la question numérique est du type : N/A, ++inf, - inf, etc..

                                + + diff --git a/lang/fr_ca/help/quiz/questiontypes.html b/lang/fr_ca/help/quiz/questiontypes.html index 5289368fc6c..6e731eed52b 100644 --- a/lang/fr_ca/help/quiz/questiontypes.html +++ b/lang/fr_ca/help/quiz/questiontypes.html @@ -1,104 +1,104 @@ - - - - - - - - - - -

                                Création d'une nouvelle question

                                -

                                Il existe dans Moodle de nombreux types de question pour -l'élaboration de vos questionnaires :

                                -

                                Question à choix multiples

                                -

                                Une question à choix multiples offre à l'étudiant -un choix de réponses parmi lesquelles il devra choisir. La -question peut inclure une image. Il existe deux variantes à ce -type de question :

                                - -

                                Question à réponse courte

                                -

                                Pour répondre à une question à réponse -courte, l'étudiant entre un mot ou une expression. Le -professeur peut inclure plusieurs réponses possibles. On peut -exiger de respecter la casse ou pas (lettres minuscules ou/et -majuscules). On peut inclure une image avec la question. -

                                -

                                Informations -supplémentaires sur les questions à réponses -courtes

                                -

                                Question à réponse numérique

                                -

                                La question à réponse numérique a l'apparence -d'une question à réponse courte. La différence -réside dans le fait que la première peut accepter la -réponse fournie par l'étudiant avec une marge d'erreur. -Le professeur fournit la valeur minimale et la valeur maximale de la -plage des valeurs acceptables. -

                                -

                                Informations -supplémentaires sur les questions à réponse -numérique

                                -

                                Question Vrai ou faux

                                -

                                Ce type de question exige de la part de l'étudiant une -réponse qui peut être seulement VRAI ou FAUX. On peut -ajouter une image à la question. -

                                -

                                Informations -supplémentaires sur les questions Vrai ou faux

                                -

                                Question à appariements

                                -

                                L'étudiant doit associer chaque proposition avec une des -réponses fournies. Une réponse correcte correspond à -chaque proposition. Toutes les propositions ont un même poids -dans le calcul de la note pour la question. -

                                -

                                Informations -supplémentaires sur les questions à appariements

                                -

                                Question à appariements à partir de questions à -réponse courte

                                -

                                Pour l'étudiant, cette question apparaît comme une -question à appariements. En réalité, la question -est construite au hasard à partir des questions à -réponses courtes. -

                                -

                                Informations -supplémentaires sur les questions à appariements à -partir de questions à réponse courte

                                -

                                Question à réponses incorporées

                                -

                                Ce type de question est très flexible. Les questions se -composent d'un texte (dans le format de Moodle) auquel on peut -incorporer des réponses à choix multiples, des réponses -courtes ou des réponses numériques. -

                                -

                                Informations -supplémentaires sur les questions à réponses -incorporées

                                -

                                Question aléatoire

                                -

                                Une question aléatoire est une question choisie au hasard -parmi toutes les questions de la catégorie de laquelle elle -provient. Les étudiants n'auront pas tous la même -question. -

                                -

                                Questions -aléatoires -

                                -

                                Description

                                -

                                Ce type de question n'en est pas vraiment un. Il sert à -afficher un bloc de texte à l'intérieur d'un -questionnaire sans que l'étudiant ait à répondre -quoi que ce soit. On peut l'utiliser pour donner des directives pour -les questions qui suivent. -

                                -

                                Informations -supplémentaires sur les descriptions

                                - + + + + + + + + + + +

                                Création d'une nouvelle question

                                +

                                Il existe dans Moodle de nombreux types de question pour +l'élaboration de vos questionnaires :

                                +

                                Question à choix multiples

                                +

                                Une question à choix multiples offre à l'étudiant +un choix de réponses parmi lesquelles il devra choisir. La +question peut inclure une image. Il existe deux variantes à ce +type de question :

                                + +

                                Question à réponse courte

                                +

                                Pour répondre à une question à réponse +courte, l'étudiant entre un mot ou une expression. Le +professeur peut inclure plusieurs réponses possibles. On peut +exiger de respecter la casse ou pas (lettres minuscules ou/et +majuscules). On peut inclure une image avec la question. +

                                +

                                Informations +supplémentaires sur les questions à réponses +courtes

                                +

                                Question à réponse numérique

                                +

                                La question à réponse numérique a l'apparence +d'une question à réponse courte. La différence +réside dans le fait que la première peut accepter la +réponse fournie par l'étudiant avec une marge d'erreur. +Le professeur fournit la valeur minimale et la valeur maximale de la +plage des valeurs acceptables. +

                                +

                                Informations +supplémentaires sur les questions à réponse +numérique

                                +

                                Question Vrai ou faux

                                +

                                Ce type de question exige de la part de l'étudiant une +réponse qui peut être seulement VRAI ou FAUX. On peut +ajouter une image à la question. +

                                +

                                Informations +supplémentaires sur les questions Vrai ou faux

                                +

                                Question à appariements

                                +

                                L'étudiant doit associer chaque proposition avec une des +réponses fournies. Une réponse correcte correspond à +chaque proposition. Toutes les propositions ont un même poids +dans le calcul de la note pour la question. +

                                +

                                Informations +supplémentaires sur les questions à appariements

                                +

                                Question à appariements à partir de questions à +réponse courte

                                +

                                Pour l'étudiant, cette question apparaît comme une +question à appariements. En réalité, la question +est construite au hasard à partir des questions à +réponses courtes. +

                                +

                                Informations +supplémentaires sur les questions à appariements à +partir de questions à réponse courte

                                +

                                Question à réponses incorporées

                                +

                                Ce type de question est très flexible. Les questions se +composent d'un texte (dans le format de Moodle) auquel on peut +incorporer des réponses à choix multiples, des réponses +courtes ou des réponses numériques. +

                                +

                                Informations +supplémentaires sur les questions à réponses +incorporées

                                +

                                Question aléatoire

                                +

                                Une question aléatoire est une question choisie au hasard +parmi toutes les questions de la catégorie de laquelle elle +provient. Les étudiants n'auront pas tous la même +question. +

                                +

                                Questions +aléatoires +

                                +

                                Description

                                +

                                Ce type de question n'en est pas vraiment un. Il sert à +afficher un bloc de texte à l'intérieur d'un +questionnaire sans que l'étudiant ait à répondre +quoi que ce soit. On peut l'utiliser pour donner des directives pour +les questions qui suivent. +

                                +

                                Informations +supplémentaires sur les descriptions

                                + \ No newline at end of file diff --git a/lang/fr_ca/help/quiz/random.html b/lang/fr_ca/help/quiz/random.html index bf59292421f..5409821163c 100644 --- a/lang/fr_ca/help/quiz/random.html +++ b/lang/fr_ca/help/quiz/random.html @@ -10,13 +10,13 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/lang/fr_ca/help/quiz/randomsamatch.html b/lang/fr_ca/help/quiz/randomsamatch.html index a93ca95f56a..179177affb8 100644 --- a/lang/fr_ca/help/quiz/randomsamatch.html +++ b/lang/fr_ca/help/quiz/randomsamatch.html @@ -2,13 +2,13 @@

                                Pour l'étudiant, cette question apparaît comme une question à appariements. En réalité, la question est construite au hasard à partir des questions à réponses courtes.

                                -

                                La question d'appariement se divise en plusieurs parties :

                                - +

                                La question d'appariement se divise en plusieurs parties :

                                +
                                  -
                                • une introduction qui présente le contexte;
                                • -
                                • une liste de propositions (à partir du libellé des questions à réponse courte);
                                • -
                                • une liste de réponses (à partir des réponses à chaque question à réponse courte).
                                • -
                                -

                                L'étudiant doit associer chaque proposition avec une des réponses proposées. Une réponse correcte correspond à chaque proposition. Toutes les propositions ont un même poids dans le calcul de la note pour la question.

                                - +
                              1. une introduction qui présente le contexte;
                              2. +
                              3. une liste de propositions (à partir du libellé des questions à réponse courte);
                              4. +
                              5. une liste de réponses (à partir des réponses à chaque question à réponse courte).
                              6. +
                            +

                            L'étudiant doit associer chaque proposition avec une des réponses proposées. Une réponse correcte correspond à chaque proposition. Toutes les propositions ont un même poids dans le calcul de la note pour la question.

                            +

                            Les questions et les réponses sont aléatoirement tirées de la catégorie d'où est issue la question aléatoire à appariements. Cela signifie que chaque étudiant aura une version différente du questionnaire.

                            \ No newline at end of file diff --git a/lang/fr_ca/help/quiz/repeatattempts.html b/lang/fr_ca/help/quiz/repeatattempts.html index e7f8625aeb2..489d949e9d9 100644 --- a/lang/fr_ca/help/quiz/repeatattempts.html +++ b/lang/fr_ca/help/quiz/repeatattempts.html @@ -1,17 +1,17 @@ - - - - - -

                            Chaque nouvelle tentative se fait à partir -de la tentative précédente

                            -

                            Lorsqu'on autorise l'étudiant à refaire plusieurs fois -un test, l'option Oui permettra à l'étudiant de -commencer une nouvelle tentative avec les résultats de l'essai -précédent. Ainsi, l'étudiant pourra -compléter un test en plusieurs séances ou il pourra -corriger les erreurs qu'il a faites.

                            -

                            Si vous désirez que l'étudiant recommence à -zéro à chaque tentative, choisissez l'option Non.

                            - - + + + + + +

                            Chaque nouvelle tentative se fait à partir +de la tentative précédente

                            +

                            Lorsqu'on autorise l'étudiant à refaire plusieurs fois +un test, l'option Oui permettra à l'étudiant de +commencer une nouvelle tentative avec les résultats de l'essai +précédent. Ainsi, l'étudiant pourra +compléter un test en plusieurs séances ou il pourra +corriger les erreurs qu'il a faites.

                            +

                            Si vous désirez que l'étudiant recommence à +zéro à chaque tentative, choisissez l'option Non.

                            + + diff --git a/lang/fr_ca/help/quiz/review.html b/lang/fr_ca/help/quiz/review.html index 826508c5b70..38153bbf0be 100644 --- a/lang/fr_ca/help/quiz/review.html +++ b/lang/fr_ca/help/quiz/review.html @@ -1,17 +1,17 @@ - - - - - -

                            Permettre de revoir le test une fois -terminé?

                            -

                            Lorsque vous activez cette option, les étudiants pourront -revoir leurs différentes tentatives pour ce test, et ce, -seulement si le test est fermé. -
                            -

                            -

                            Le test est fermé lorsque la date de clôture du -test est atteinte.
                            -

                            - - + + + + + +

                            Permettre de revoir le test une fois +terminé?

                            +

                            Lorsque vous activez cette option, les étudiants pourront +revoir leurs différentes tentatives pour ce test, et ce, +seulement si le test est fermé. +
                            +

                            +

                            Le test est fermé lorsque la date de clôture du +test est atteinte.
                            +

                            + + diff --git a/lang/fr_ca/help/quiz/shortanswer.html b/lang/fr_ca/help/quiz/shortanswer.html index 3b410abfa27..666ac493c98 100644 --- a/lang/fr_ca/help/quiz/shortanswer.html +++ b/lang/fr_ca/help/quiz/shortanswer.html @@ -1,21 +1,21 @@ - - - - - -

                            Question à réponse courte

                            -

                            Pour répondre à une question à réponse -courte, l'étudiant entre un mot ou une expression. Le professeur -peut inclure plusieurs réponses possibles, chacune accordant une -note différente.

                            -

                            On peut exiger de respecter la casse ou pas (lettres minuscules -ou/et majuscules); Par exemple, si l'option oui est -sélectionnée, les mots Français et français -sont différents.

                            -

                            On peut inclure une image avec la question.

                            -

                            Faites très attention à l'orthographe des -réponses puisque Moodle comparera la réponse de -l'étudiant caractère par caractère avec vos -réponses.

                            - - + + + + + +

                            Question à réponse courte

                            +

                            Pour répondre à une question à réponse +courte, l'étudiant entre un mot ou une expression. Le professeur +peut inclure plusieurs réponses possibles, chacune accordant une +note différente.

                            +

                            On peut exiger de respecter la casse ou pas (lettres minuscules +ou/et majuscules); Par exemple, si l'option oui est +sélectionnée, les mots Français et français +sont différents.

                            +

                            On peut inclure une image avec la question.

                            +

                            Faites très attention à l'orthographe des +réponses puisque Moodle comparera la réponse de +l'étudiant caractère par caractère avec vos +réponses.

                            + + diff --git a/lang/fr_ca/help/quiz/shuffleanswers.html b/lang/fr_ca/help/quiz/shuffleanswers.html index 99f2bfae5bb..c2426956757 100644 --- a/lang/fr_ca/help/quiz/shuffleanswers.html +++ b/lang/fr_ca/help/quiz/shuffleanswers.html @@ -6,9 +6,9 @@

                            Cette option n'est pas liée à la construction d'un ensemble de questions aléatoires; elle s'applique uniquement aux réponses.

                            - - - - - - + + + + + + diff --git a/lang/fr_ca/help/quiz/shufflequestions.html b/lang/fr_ca/help/quiz/shufflequestions.html index adc7f40abbc..3c00303c3c9 100644 --- a/lang/fr_ca/help/quiz/shufflequestions.html +++ b/lang/fr_ca/help/quiz/shufflequestions.html @@ -3,5 +3,5 @@

                            Lorsque vous activez cette option, l'ordre des questions sera aléatoire chaque fois qu'un étudiant essayera de faire ce test.

                            L'ordre aléatoire des questions rend la tâche plus difficile à ceux qui veulent copier les réponses des autres étudiants.

                            - +

                            Cette option n'est pas liée à la construction d'un ensemble de questions aléatoires; elle s'applique uniquement à l'ordre des questions.

                            \ No newline at end of file diff --git a/lang/fr_ca/help/quiz/timeopen.html b/lang/fr_ca/help/quiz/timeopen.html index 48f45e96b56..aba88c2d451 100644 --- a/lang/fr_ca/help/quiz/timeopen.html +++ b/lang/fr_ca/help/quiz/timeopen.html @@ -1,5 +1,5 @@

                            Ouverture et clôture d'un test

                            Vous pouvez indiquer la date d'ouverture et de clôture d'un test. Les étudiants peuvent passer le test seulement pendant la période choisie. En dehors de cette période, le test n'est pas disponible.

                            - - + + diff --git a/lang/fr_ca/help/quiz/truefalse.html b/lang/fr_ca/help/quiz/truefalse.html index 5bf82bc2de6..f04340f16a6 100644 --- a/lang/fr_ca/help/quiz/truefalse.html +++ b/lang/fr_ca/help/quiz/truefalse.html @@ -5,7 +5,7 @@

                            Lorsque l'affichage des rétroactions est activé, les messages entrés par le professeur pour chaque réponse s'affichent après que l'étudiant a terminé le test.

                            - - - - + + + + diff --git a/lang/fr_ca/help/reading.html b/lang/fr_ca/help/reading.html index e73d5b19d72..e6ae7d7e3d7 100644 --- a/lang/fr_ca/help/reading.html +++ b/lang/fr_ca/help/reading.html @@ -1,10 +1,10 @@ -

                            Conseils de lecture

                            - -

                            En lisant des textes rapidement, il est souvent très facile de mal comprendre ce que l'auteur essaie de dire.

                            - -

                            Pour éviter de mal comprendre, lisez leurs mots soigneusement et essayez de voir les choses du point de vue de l'auteur.

                            - -

                            Il peut également être utile de penser à ce que l'auteur n'a pas dit ou ce qu'il a sous-entendu. Ceci peut vous aider à formuler des questions qui vous guideront dans votre analyse.

                            - -

                            D'autres conseils sur l'écriture

                            -

                            Suggestions de question

                            +

                            Conseils de lecture

                            + +

                            En lisant des textes rapidement, il est souvent très facile de mal comprendre ce que l'auteur essaie de dire.

                            + +

                            Pour éviter de mal comprendre, lisez leurs mots soigneusement et essayez de voir les choses du point de vue de l'auteur.

                            + +

                            Il peut également être utile de penser à ce que l'auteur n'a pas dit ou ce qu'il a sous-entendu. Ceci peut vous aider à formuler des questions qui vous guideront dans votre analyse.

                            + +

                            D'autres conseils sur l'écriture

                            +

                            Suggestions de question

                            diff --git a/lang/fr_ca/help/resource/program.html b/lang/fr_ca/help/resource/program.html index f5d0f9a5624..1ada9b3d16e 100644 --- a/lang/fr_ca/help/resource/program.html +++ b/lang/fr_ca/help/resource/program.html @@ -1,27 +1,27 @@ - - - - - -

                            Programmes extérieurs

                            -

                            Un programme extérieur est une ressource externe qui peut -accepter des données en provenance de Moodle.

                            -

                            Les données, incorporées à l'adresse URL, sont -transmises par http get et comprend :

                            -
                              -
                            • extern_nav: l'adresse URL à partir de laquelle la -ressource externe est appelée -
                            • -
                            • extern_usr: le nom de l'utilisateur courant -
                            • -
                            • extern_nam: le nom complet de l'utilisateur courant -
                            • -
                            • extern_tim: l'heure actuelle -
                            • -
                            • extern_pwd: un mot de passe unique -
                            • -
                            -

                            Ces informations et ce procédé seront modifiés -sous peu.

                            - - + + + + + +

                            Programmes extérieurs

                            +

                            Un programme extérieur est une ressource externe qui peut +accepter des données en provenance de Moodle.

                            +

                            Les données, incorporées à l'adresse URL, sont +transmises par http get et comprend :

                            +
                              +
                            • extern_nav: l'adresse URL à partir de laquelle la +ressource externe est appelée +
                            • +
                            • extern_usr: le nom de l'utilisateur courant +
                            • +
                            • extern_nam: le nom complet de l'utilisateur courant +
                            • +
                            • extern_tim: l'heure actuelle +
                            • +
                            • extern_pwd: un mot de passe unique +
                            • +
                            +

                            Ces informations et ce procédé seront modifiés +sous peu.

                            + + diff --git a/lang/fr_ca/help/resource/resourcetype.html b/lang/fr_ca/help/resource/resourcetype.html index 0c0bc581d52..bb551938ca8 100644 --- a/lang/fr_ca/help/resource/resourcetype.html +++ b/lang/fr_ca/help/resource/resourcetype.html @@ -1,39 +1,39 @@ - - - - - -

                            Type de document

                            -

                            Les formats possibles pour les documents sont légions. -Voici les différents types de documents qui déterminent -principalement la manière dont on accède à leur -contenu :

                            -

                            Texte - le type le plus simple. Il vous est juste possible -d'éditer le texte du document dans un formulaire que vous -trouverez sur la page suivante. Certaines constructions que vous -écrirez seront automatiquement mises en forme, exactement -comme dans les messages postés sur les forums. Pour de l'aide -sur la mise en forme de texte : <? helpbutton("text", -get_string("helptext")) ?>

                            -

                            Texte HTML - pour les utilisateurs plus -expérimentés. -Aucune mise en forme automatique ne sera réalisée, vous -aurez à la faire vous même en utisant des balises HTML.

                            -

                            Référence - une référence -bibliothécaire à un livre ou un journal.

                            -

                            Fichier téléchargé sur le serveur - -affichera un -fichier que vous aurez envoyé sur le cours. Voir la section -« -Fichiers ».

                            -

                            Lien vers une page Web en quittant Moodle - un lien vers -une page sur le Web. Lorsque l'étudiant cliquera sur cet -hyperlien, il -sera envoyé sur cette page, quittant ainsi Moodle (la page -remplacera le cours).

                            -

                            Page Web dans un cadre - un lien vers une page sur le Web. -Comme le type précédent, ceci affichera une page Web. -Par contre, la page sera affichée dans un cadre du navigateur, -comme si elle faisait partie du cours.

                            - - + + + + + +

                            Type de document

                            +

                            Les formats possibles pour les documents sont légions. +Voici les différents types de documents qui déterminent +principalement la manière dont on accède à leur +contenu :

                            +

                            Texte - le type le plus simple. Il vous est juste possible +d'éditer le texte du document dans un formulaire que vous +trouverez sur la page suivante. Certaines constructions que vous +écrirez seront automatiquement mises en forme, exactement +comme dans les messages postés sur les forums. Pour de l'aide +sur la mise en forme de texte : <? helpbutton("text", +get_string("helptext")) ?>

                            +

                            Texte HTML - pour les utilisateurs plus +expérimentés. +Aucune mise en forme automatique ne sera réalisée, vous +aurez à la faire vous même en utisant des balises HTML.

                            +

                            Référence - une référence +bibliothécaire à un livre ou un journal.

                            +

                            Fichier téléchargé sur le serveur - +affichera un +fichier que vous aurez envoyé sur le cours. Voir la section +« +Fichiers ».

                            +

                            Lien vers une page Web en quittant Moodle - un lien vers +une page sur le Web. Lorsque l'étudiant cliquera sur cet +hyperlien, il +sera envoyé sur cette page, quittant ainsi Moodle (la page +remplacera le cours).

                            +

                            Page Web dans un cadre - un lien vers une page sur le Web. +Comme le type précédent, ceci affichera une page Web. +Par contre, la page sera affichée dans un cadre du navigateur, +comme si elle faisait partie du cours.

                            + + diff --git a/lang/fr_ca/help/resource/summary.html b/lang/fr_ca/help/resource/summary.html index 1deb4fe1e48..0fe9ae848d9 100644 --- a/lang/fr_ca/help/resource/summary.html +++ b/lang/fr_ca/help/resource/summary.html @@ -1,20 +1,20 @@ - - - - - -

                            Résumé du document

                            -

                            Ce résumé est une description très courte du document.
                            -

                            -

                            Ce résumé s'affiche lorsqu'on clique sur le lien Document dans l'encadré Activités de la page -d'accueil du cours. Moodle affiche alors la liste de tous les documents -en ordre d'apparition dans le cours. Le résumé permet -donc de répérer plus facilement le document que l'on -recherche.
                            -

                            -

                            Le contenu du document pourra être saisi dans la page suivante.

                            - - + + + + + +

                            Résumé du document

                            +

                            Ce résumé est une description très courte du document.
                            +

                            +

                            Ce résumé s'affiche lorsqu'on clique sur le lien Document dans l'encadré Activités de la page +d'accueil du cours. Moodle affiche alors la liste de tous les documents +en ordre d'apparition dans le cours. Le résumé permet +donc de répérer plus facilement le document que l'on +recherche.
                            +

                            +

                            Le contenu du document pourra être saisi dans la page suivante.

                            + + diff --git a/lang/fr_ca/help/summaries.html b/lang/fr_ca/help/summaries.html index e62380a3c46..92c6e589bdd 100644 --- a/lang/fr_ca/help/summaries.html +++ b/lang/fr_ca/help/summaries.html @@ -1,14 +1,14 @@ -

                            Sommaire des modules/semaines

                            - -

                            Le sommaire est un texte très court pour préparer les étudiants aux activités du module ou de la semaine.

                            - -

                            Chaque sommaire devrait être très court de sorte que la page de cours ne devienne pas trop longue.

                            - -

                            Si le sommaire comporte plus d'une phrase ou deux, on suggère plutôt d'ajouter une ressource (un texte) à cette matière (par exemple, la première activité pourrait être une page appelée «À propos de cette matière).

                            - - - - - - - +

                            Sommaire des modules/semaines

                            + +

                            Le sommaire est un texte très court pour préparer les étudiants aux activités du module ou de la semaine.

                            + +

                            Chaque sommaire devrait être très court de sorte que la page de cours ne devienne pas trop longue.

                            + +

                            Si le sommaire comporte plus d'une phrase ou deux, on suggère plutôt d'ajouter une ressource (un texte) à cette matière (par exemple, la première activité pourrait être une page appelée «À propos de cette matière).

                            + + + + + + + diff --git a/lang/fr_ca/help/survey/mods.html b/lang/fr_ca/help/survey/mods.html index 477130327e3..caa60088115 100644 --- a/lang/fr_ca/help/survey/mods.html +++ b/lang/fr_ca/help/survey/mods.html @@ -1,17 +1,17 @@ - - - - - -

                             Questionnaires

                            -
                              -

                              Le module d'enquêtes pour l'évaluation des -environnements en ligne fournit un certain nombre d'instruments qui se -sont avérés très utiles et très stimulants. -Les professeurs peuvent les employer pour recueillir des données -qui les informeront sur leurs étudiants et ainsi -réfléchir sur leur propre enseignement.

                              -
                            - - + + + + + +

                             Questionnaires

                            +
                              +

                              Le module d'enquêtes pour l'évaluation des +environnements en ligne fournit un certain nombre d'instruments qui se +sont avérés très utiles et très stimulants. +Les professeurs peuvent les employer pour recueillir des données +qui les informeront sur leurs étudiants et ainsi +réfléchir sur leur propre enseignement.

                              +
                            + + diff --git a/lang/fr_ca/help/surveys.html b/lang/fr_ca/help/surveys.html index 2151cdaa8ef..27d3dba3f0e 100644 --- a/lang/fr_ca/help/surveys.html +++ b/lang/fr_ca/help/surveys.html @@ -1,147 +1,147 @@ -

                            Sondages disponibles

                            -

                            Présentement, Moodle offre que des sondages déjà -construits. Une prochaine version permettra aux utilisateurs de créer -leurs propres sondages.

                            -

                            Les sondages offerts se révèlent très utiles -pour évaluer ce qui se passe dans les cours qui utilisent un -environnement en ligne qui se base sur une approche -socio-constructiviste. Ils permettent d'évaluer l'évolution -que suivent vos participants. Voyez le document suivant pour voir -comment ils peuvent être utilisés : -http://dougiamas.com/writing/herdsa2002)

                            -
                            -

                            COLLES - Constructivist On-Line Learning Environment Survey

                            -
                              -

                              Le sondage COLLES comprend 24 énoncés regroupés - en fonction de six critères, chacun évaluant un aspect - clé de l'environnement d'apprentissage en ligne.

                              - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                              -

                              Pertinence

                              -

                              Est-ce que les apprentissages en ligne sont pertinents pour le - travail futur des étudiants? -

                              -

                              Sens critique -

                              -

                              Est-ce que l'environnement d'apprentissage en ligne permet de - développer davantage le sens critique des étudiants? - -

                              -

                              Interactivité -

                              -

                              Dans quelle mesure les étudiants s'engagent-ils dans - des dialogues véritables qui augmentent leurs - apprentissages?

                              -

                              Soutien par le tuteur

                              -

                              Dans quelle mesure les tuteurs encouragent-ils les étudiants - à participer dans les échanges virtuels? -

                              -

                              Soutien par les pairs -

                              -

                              Dans l'environnement en ligne, est-ce que les pairs - fournissent un soutien réel et profitable ? -

                              -

                              Communication -

                              -

                              Est-ce que la communication entre les tuteurs et les étudiants - est bonne, précise et aidante ?

                              -

                              -

                              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. -

                              -

                              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. -

                              -

                              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. -

                              -

                              (This information has been adapted from the COLLES page. You can - find out more about COLLES and the authors of it at: - http://surveylearning.com/colles/)

                              - - -Le fondement de la vision de l'apprentissage qui guide le développement de Moodle est une théorie de l'apprentissage appelée le socio-constructivisme, qui dépeint l'étudiant comme un acteur actif dans un environnement d'étude socialement interactif. Le socio-constructivisme est une façon d'apprendre où les étudiants collaborent pour construire de nouveaux savoirs, particulièrement dans le contexte d'un questionnement mutuel ancré dans leur expérience personnelle. - -Le central à cette collaboration est le développement de la compétence communicative des étudiants, c.-à-d., la capacité de s'engager dans le discours ouvert et critique avec le professeur et des pairs. Ce discours est caractérisé par une orientation empathic à construire la compréhension réciproque, et une attitude critique envers des prétentions fondamentales examinantes. - -Le COLLES a été conçu pour vous permettre de surveiller le point auquel vous pouvez exploiter la capacité interactive du World Wide Web pour engager des étudiants dans des pratiques d'étude dynamiques. - -(cette information a été adaptée de la page de COLLES. Vous pouvez découvrir plus au sujet de COLLES et les auteurs de lui à : http://surveylearning.com/colles/) - - - -
                            -
                            -

                            ATTLS - Attitudes to Thinking and Learning Survey

                            -
                              -

                              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. -

                              -

                              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). -

                              -

                              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. -

                              -

                              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. -

                              -

                              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. -

                              -

                              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.

                              -

                              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.

                              -
                            - - +

                            Sondages disponibles

                            +

                            Présentement, Moodle offre que des sondages déjà +construits. Une prochaine version permettra aux utilisateurs de créer +leurs propres sondages.

                            +

                            Les sondages offerts se révèlent très utiles +pour évaluer ce qui se passe dans les cours qui utilisent un +environnement en ligne qui se base sur une approche +socio-constructiviste. Ils permettent d'évaluer l'évolution +que suivent vos participants. Voyez le document suivant pour voir +comment ils peuvent être utilisés : +http://dougiamas.com/writing/herdsa2002)

                            +
                            +

                            COLLES - Constructivist On-Line Learning Environment Survey

                            +
                              +

                              Le sondage COLLES comprend 24 énoncés regroupés + en fonction de six critères, chacun évaluant un aspect + clé de l'environnement d'apprentissage en ligne.

                              + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                              +

                              Pertinence

                              +

                              Est-ce que les apprentissages en ligne sont pertinents pour le + travail futur des étudiants? +

                              +

                              Sens critique +

                              +

                              Est-ce que l'environnement d'apprentissage en ligne permet de + développer davantage le sens critique des étudiants? + +

                              +

                              Interactivité +

                              +

                              Dans quelle mesure les étudiants s'engagent-ils dans + des dialogues véritables qui augmentent leurs + apprentissages?

                              +

                              Soutien par le tuteur

                              +

                              Dans quelle mesure les tuteurs encouragent-ils les étudiants + à participer dans les échanges virtuels? +

                              +

                              Soutien par les pairs +

                              +

                              Dans l'environnement en ligne, est-ce que les pairs + fournissent un soutien réel et profitable ? +

                              +

                              Communication +

                              +

                              Est-ce que la communication entre les tuteurs et les étudiants + est bonne, précise et aidante ?

                              +

                              +

                              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. +

                              +

                              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. +

                              +

                              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. +

                              +

                              (This information has been adapted from the COLLES page. You can + find out more about COLLES and the authors of it at: + http://surveylearning.com/colles/)

                              + + +Le fondement de la vision de l'apprentissage qui guide le développement de Moodle est une théorie de l'apprentissage appelée le socio-constructivisme, qui dépeint l'étudiant comme un acteur actif dans un environnement d'étude socialement interactif. Le socio-constructivisme est une façon d'apprendre où les étudiants collaborent pour construire de nouveaux savoirs, particulièrement dans le contexte d'un questionnement mutuel ancré dans leur expérience personnelle. + +Le central à cette collaboration est le développement de la compétence communicative des étudiants, c.-à-d., la capacité de s'engager dans le discours ouvert et critique avec le professeur et des pairs. Ce discours est caractérisé par une orientation empathic à construire la compréhension réciproque, et une attitude critique envers des prétentions fondamentales examinantes. + +Le COLLES a été conçu pour vous permettre de surveiller le point auquel vous pouvez exploiter la capacité interactive du World Wide Web pour engager des étudiants dans des pratiques d'étude dynamiques. + +(cette information a été adaptée de la page de COLLES. Vous pouvez découvrir plus au sujet de COLLES et les auteurs de lui à : http://surveylearning.com/colles/) + + + +
                            +
                            +

                            ATTLS - Attitudes to Thinking and Learning Survey

                            +
                              +

                              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. +

                              +

                              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). +

                              +

                              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. +

                              +

                              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. +

                              +

                              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. +

                              +

                              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.

                              +

                              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.

                              +
                            + + diff --git a/lang/fr_ca/help/text.html b/lang/fr_ca/help/text.html index efe90dbf143..d2f87746640 100644 --- a/lang/fr_ca/help/text.html +++ b/lang/fr_ca/help/text.html @@ -1,243 +1,243 @@ - - - - - -

                            Formatage automatique

                            -

                            Vous pouvez ajouter des binettes («smilies» en -anglais), des adresses URL et certaines balises HTML. Moodle -s'occupera de compléter la mise-en-forme.

                            -

                            Binettes

                            -
                            -
                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                            -

                            Nom

                            -
                            -

                            Image

                            -
                            -

                            Texte à entrer

                            -
                            -

                            sourire

                            -
                            -

                            smile

                            -
                            -

                            :-)

                            -
                            -

                            triste

                            -
                            -

                            sad

                            -
                            -

                            :-(

                            -
                            -

                            Gros sourire

                            -
                            -

                            grin

                            -
                            -

                            :-D

                            -
                            -

                            Clin d'oeil

                            -
                            -

                            wink

                            -
                            -

                            ;-)

                            -
                            -

                            perplexe

                            -
                            -

                            mixed

                            -
                            -

                            :-/

                            -
                            -

                            Yeux grands ouverts

                            -
                            -

                            wide-eyed

                            -
                            -

                            8-)

                            -
                            -

                            Tirer la langue

                            -
                            -

                            tongue-out

                            -
                            -

                            :-P

                            -
                            -

                            Surprise

                            -
                            -

                            surprised

                            -
                            -

                            :-o

                            -
                            -

                            cool

                            -
                            -

                            cool

                            -
                            -

                            B-)

                            -
                            -
                            -
                            -

                            URLs

                            -
                              -

                              Toute expression commençant par www. or http:// -sera automatiquement convertie en hyperlien.

                              -

                              Par exemple : www.yahoo.com -or http://curtin.edu

                              -
                            -

                            Balises HTML

                            -
                              -

                              Vous pouvez utiliser un sous-ensemble de balises HTML pour -agrémenter vos textes. Toutes les balise doivent être en -minuscules

                              -
                            -
                            -
                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                            -

                            Balises HTML

                            -
                            -

                            Résultats

                            -
                            -

                            <b> gras </b>

                            -
                            -

                            bold text

                            -
                            -

                            <i> italique </i>

                            -
                            -

                            italic text

                            -
                            -

                            <u> souligné </u>

                            -
                            -

                            underlined text

                            -
                            <pr> -paragraphe</pr>
                            -
                            (Changement de ligne avec -espace entre les paragraphes)
                            -
                            <br />
                            -
                            (Changement de ligne sans -espace entre les paragraphes)
                            -
                            -

                            <font size=1> petit </font>

                            -
                            -

                            small

                            -
                            -

                            <font size=4> grand </FONT>

                            -
                            -

                            large

                            -
                            -

                            <font color=green> exemple </FONT>

                            -
                            -

                            exemple

                            -
                            -
                            -
                            -


                            -
                            -

                            - - + + + + + +

                            Formatage automatique

                            +

                            Vous pouvez ajouter des binettes («smilies» en +anglais), des adresses URL et certaines balises HTML. Moodle +s'occupera de compléter la mise-en-forme.

                            +

                            Binettes

                            +
                            +
                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            +

                            Nom

                            +
                            +

                            Image

                            +
                            +

                            Texte à entrer

                            +
                            +

                            sourire

                            +
                            +

                            smile

                            +
                            +

                            :-)

                            +
                            +

                            triste

                            +
                            +

                            sad

                            +
                            +

                            :-(

                            +
                            +

                            Gros sourire

                            +
                            +

                            grin

                            +
                            +

                            :-D

                            +
                            +

                            Clin d'oeil

                            +
                            +

                            wink

                            +
                            +

                            ;-)

                            +
                            +

                            perplexe

                            +
                            +

                            mixed

                            +
                            +

                            :-/

                            +
                            +

                            Yeux grands ouverts

                            +
                            +

                            wide-eyed

                            +
                            +

                            8-)

                            +
                            +

                            Tirer la langue

                            +
                            +

                            tongue-out

                            +
                            +

                            :-P

                            +
                            +

                            Surprise

                            +
                            +

                            surprised

                            +
                            +

                            :-o

                            +
                            +

                            cool

                            +
                            +

                            cool

                            +
                            +

                            B-)

                            +
                            +
                            +
                            +

                            URLs

                            +
                              +

                              Toute expression commençant par www. or http:// +sera automatiquement convertie en hyperlien.

                              +

                              Par exemple : www.yahoo.com +or http://curtin.edu

                              +
                            +

                            Balises HTML

                            +
                              +

                              Vous pouvez utiliser un sous-ensemble de balises HTML pour +agrémenter vos textes. Toutes les balise doivent être en +minuscules

                              +
                            +
                            +
                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            +

                            Balises HTML

                            +
                            +

                            Résultats

                            +
                            +

                            <b> gras </b>

                            +
                            +

                            bold text

                            +
                            +

                            <i> italique </i>

                            +
                            +

                            italic text

                            +
                            +

                            <u> souligné </u>

                            +
                            +

                            underlined text

                            +
                            <pr> +paragraphe</pr>
                            +
                            (Changement de ligne avec +espace entre les paragraphes)
                            +
                            <br />
                            +
                            (Changement de ligne sans +espace entre les paragraphes)
                            +
                            +

                            <font size=1> petit </font>

                            +
                            +

                            small

                            +
                            +

                            <font size=4> grand </FONT>

                            +
                            +

                            large

                            +
                            +

                            <font color=green> exemple </FONT>

                            +
                            +

                            exemple

                            +
                            +
                            +
                            +


                            +
                            +

                            + + diff --git a/lang/fr_ca/help/textformat.html b/lang/fr_ca/help/textformat.html index c9d82fb4934..4bae480e898 100644 --- a/lang/fr_ca/help/textformat.html +++ b/lang/fr_ca/help/textformat.html @@ -9,7 +9,7 @@

                              Ce format est préférable lorsque vous entrez du texte dans un formulaire standard sur une page Web (au lieu de l'éditeur intégré HTML). Écrivez normalement votre texte comme si c'était un courriel.

                              -

                              Moodle effectuera certaines transformations lorsque vous sauvegarderez votre texte.

                              +

                              Moodle effectuera certaines transformations lorsque vous sauvegarderez votre texte.

                              Moodle ajoutera automatiquement des balises HTML nécessaires pour que :

                              Les adresses URL par exemple @@ -27,12 +27,12 @@

                              diff --git a/lang/fr_ca/help/uploadusers.html b/lang/fr_ca/help/uploadusers.html index 3b324667ebd..89527aaa352 100644 --- a/lang/fr_ca/help/uploadusers.html +++ b/lang/fr_ca/help/uploadusers.html @@ -18,7 +18,7 @@

                              numéro d'utilisateur, numéro icq, numéro de téléphone 1, numéro de téléphone 2, adresse, url, description, format du courriel, affichage des courriels, éditeur html, abonnement automatique, cours 1, cours 2, cours 3, cours 4, cours 5

                              -
                            • Les virgules faisant partie du champ doivent être encodées par le code , - le script d'importation reconnaîtra les virgules par ce code. +
                            • Les virgules faisant partie du champ doivent être encodées par le code , - le script d'importation reconnaîtra les virgules par ce code.
                            • Utilisez 1 ou 0 respectivement dans les champs représentant un état vrai ou faux.
                            • Note : Si un utilisateur est déjà inscrit dans la base de données de Moodle, le script retournera le numéro de cet utilisateur, inscrira l'utilisateur dans les cours indiqués, mais ne modifiera pas les données de cet utilisateur.
                            • @@ -29,4 +29,4 @@

                              nom d'utilisateur, mot de passe, prénom, nom, adresse de courriel, langue, numéro d'utilisateur, affichage du courriel, cours 1
                              jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, 3663737, 1, Intro101
                              reznort, somesecret, Trent, Reznor, reznort@someplace.edu, en_us, 6736733, 0, Advanced202

                              - + diff --git a/lang/fr_ca/help/wiki.html b/lang/fr_ca/help/wiki.html index bf80d6fe932..555f6f1f5fe 100644 --- a/lang/fr_ca/help/wiki.html +++ b/lang/fr_ca/help/wiki.html @@ -1,200 +1,200 @@ -

                              Écrire des pages en texte Wiki

                              - -

                              Le format texte Wiki offre un outil pour formater du texte à l'aide - de commandes de formatage intuitives et lisibles. Ces commandes sont - automatiquement traduites en XHTML lors de l'affichage. Vous n'avez - ainsi pas besoin d'apprendre le langage HTML pour produire des - formats relativement complexes, et le texte que vous écrivez s'affiche - correctement même avant son affichage définitif. Ce format offre - une réelle alternative à l'enregistrement en HTML de fichiers Word, - en permettant la modification en ligne de la ressource.

                              - -

                              Sur le principe, vous tapez simplement du texte. Un certain - nombre de caractères spéciaux vous permettent d'agir - sur le format de ce texte.

                              - -

                              Formatage des paragraphes

                              - -

                              Les paragraphes sont séparés par une ligne vide au moins. Pour - changer le format d'un paragraphe, il suffit taper comme - premier(s) caractère(s) de la première ligne du paragraphe - l'un des codes suivants, suivi d'un espace.

                              - - - - - - - - - -
                              CodeType de paragraphe
                              AucunParagraphe normal
                              >Citation
                              EspaceTexte préformaté (police monospace)
                              %Texte préformaté et le - formatage Wiki est ignoré
                              !#Titre - où # est un chiffre de 1 à 6, - le niveau du titre (1 est le plus élevé)
                              Q.Question - un formatage est ajouté au paragraphe - pour améliorer la présentation des questions/réponses
                              A.Réponse - comme ci-dessus, mais pour une réponse
                              - -

                              Formatage des listes

                              - -

                              De simples listes peuvent être construites facilement en plaçant - un caractère spécial au début de chaque ligne de la liste, suivi - par un espace. La liste est terminée par une ligne vide. Les listes - peuvent être imbriquées, et les listes imbriquées peuvent - être de types différents. Les listes et les paragraphes peuvent - être combinées pour obtenir le résultat désiré. - Les caractères spéciaux sont les suivants.

                              - - - - - - - -
                              CaractèreType de liste
                              *Liste non ordonnée (puces)
                              #Liste ordonnée(1, 2, 3, etc.)
                              : (deux-point)Liste descriptive, terme à définir
                              ; (point-virgule)Liste descriptive, définition
                              - -

                              Exemple de liste imbriquée :

                              -

                              -  * Première puce
                              -  * Deuxième puce
                              -  ## Ligne numérotée 1
                              -  ## Ligne numérotée 2
                              -  * Troisième puce
                              -

                              -

                              produira : -

                                -
                              • Première puce
                              • -
                              • Deuxième puce
                              • -
                                  -
                                1. Ligne numérotée 1
                                2. -
                                3. Ligne numérotée 2
                                4. -
                                -
                              • Troisième puce
                              • -

                              - -

                              Formatage du texte

                              - -

                              Le formatage du texte permet de marquer une partie d'une ligne - dans un style différent. Les caractères spéciaux utilisés pour - cela peuvent se placer n'importe où sur une ligne, mais ne peut - chevaucher plusieurs lignes. Voici ces caractères.

                              - - - - - - - - - - - - -
                              ExempleRésultatDescription
                              *il fait beau*il fait beauGras
                              /il fait beau/il fait beauItalique
                              +il fait beau+il fait beauTexte inséré
                              -il fait beau-il fait beauTexte supprimé
                              il fait ~world~il fait beauIndice
                              il fait ^world^il fait beauExposant
                              "il fait beau"“il fait beau”Entre guillemets
                              %il fait beau%il fait beauPolice monospace
                              @il fait beau@il fait beauCitation
                              - -

                              Acronymes

                              - -

                              La composition d'acronymes s'obtient en plaçant l'acronyme en - lettres capitales, suivies de la description entre parenthèses. - Il ne doit y avoir aucun espace entre l'acronyme et la parenthèse. - Voici un exemple :

                              - - - - -
                              ExempleRésultat
                              HTML(Hypertext Markup Language)HTML
                              - -

                              Hyperliens

                              - -

                              Les liens peuvent être écrits directement dans le texte, - et suivi (sans espace) par le texte à afficher sur le lien. Les liens - pour les adresses de courriel se traitent de la même manière.

                              - - - - - -
                              ExempleRésultat
                              http://www.google.fr/(Rechercher)Rechercher
                              nobody@exemple.net(Utilisateur bidon)Utilisateur bidon
                              - -

                              Liens vers des modules de Moodle

                              - -

                              Si vous connaissez le numéro identifiant et le type d'un module - dans Moodle, vous pouvez le lier directement en suivant la - syntaxe TypeDuModule:nn(Texte descriptif) comme dans l'exemple - ci-dessous. Le type de module doit être écrit suivant sa dénomitation - originale en anglais.

                              - - - - - -
                              Exemple
                              resource:36(Ma nouvelle page)
                              forum:10(Jump to forum)
                              - -

                              Liens vers des images de Moodle

                              - -

                              Des images peuvent être placées dans les pages en texte Wiki. Il - vous suffit de déposer l'image sur le site et de noter son - chemin d'accès dans la zone des fichiers déposés. Vous - utiliserez ensuite la syntaxe /chemin/d/accès/au/fichier(Texte - alternatif). - - - - - -
                              Exemple
                              /photos/groupe.jpg(Photo du personnel)
                              /images/fr/menu.gif(Menu en français)
                              - -

                              Liens vers des fichiers de Moodle

                              - -

                              De la même façon que les images, les fichiers - préalablement déposés dans Moodle peuvent être liés sur les - pages en texte Wiki. La syntaxe est file:/chemin/d/accès/au/fichier(Texte - du lien). - - - - - -
                              Exemple
                              file:/textes/moodle.pdf(Manuel de Moodle)
                              file:/media/movies/navette.mov(Décollage de la navette)
                              - -

                              Formatage automatique

                              - -

                              De nombreux textes sont automatiquement convertis en leur - équivalent XHTML. Les principaux sont les suivants :

                              - -
                                -
                              • Les liens HTTP sont convertis en liens actifs
                              • -
                              • (R), (TM), (C), 1/4, 1/2, 3/4 sont tous transformés dans - le caractère correct correspondant
                              • -
                              • 123 x 456 affiche un symbole de multiplication correct
                              • -
                              • Toute ligne commençant par au moins 4 tirets est convertie - une ligne horizontale
                              • -
                              - -

                              Correcteur orthographique (experimental)

                              - -

                              Le moteur Wiki de Moodle peut être placé en mode correcteur -orthographique. Si vous placez une ligne de la forme suivante, -tout ce qui sera écrit ensuite sera vérifié. - -

                              -!SPELL:language_code:language_variant
                              -
                              - -Exemples : -
                              -!SPELL:en:british
                              -!SPELL:fr
                              -
                              - -

                              Le « language_code » doit être remplacé par le code adéquat (en, fr, de, - etc.), « language_variant » et les deux-points qui le suivent sont - facultatifs et peuvent être « american », « british » ou - « canadian », dans le cas où le code de langue est en.

                              - -

                              Les mots non reconnus sont mis en surbrillance et vous pouvez - voir les suggestions en plaçant le pointeur sur le mot.

                              - -

                              Remarque : le correcteur utilise les librairies - pspell. Celles-ci doivent être installées sur le - serveur, en compagnie des dictionnaires, pour que le correcteur - fonctionne. Notamment, le système d'exploitation Windows +

                              Écrire des pages en texte Wiki

                              + +

                              Le format texte Wiki offre un outil pour formater du texte à l'aide + de commandes de formatage intuitives et lisibles. Ces commandes sont + automatiquement traduites en XHTML lors de l'affichage. Vous n'avez + ainsi pas besoin d'apprendre le langage HTML pour produire des + formats relativement complexes, et le texte que vous écrivez s'affiche + correctement même avant son affichage définitif. Ce format offre + une réelle alternative à l'enregistrement en HTML de fichiers Word, + en permettant la modification en ligne de la ressource.

                              + +

                              Sur le principe, vous tapez simplement du texte. Un certain + nombre de caractères spéciaux vous permettent d'agir + sur le format de ce texte.

                              + +

                              Formatage des paragraphes

                              + +

                              Les paragraphes sont séparés par une ligne vide au moins. Pour + changer le format d'un paragraphe, il suffit taper comme + premier(s) caractère(s) de la première ligne du paragraphe + l'un des codes suivants, suivi d'un espace.

                              + + + + + + + + + +
                              CodeType de paragraphe
                              AucunParagraphe normal
                              >Citation
                              EspaceTexte préformaté (police monospace)
                              %Texte préformaté et le + formatage Wiki est ignoré
                              !#Titre - où # est un chiffre de 1 à 6, + le niveau du titre (1 est le plus élevé)
                              Q.Question - un formatage est ajouté au paragraphe + pour améliorer la présentation des questions/réponses
                              A.Réponse - comme ci-dessus, mais pour une réponse
                              + +

                              Formatage des listes

                              + +

                              De simples listes peuvent être construites facilement en plaçant + un caractère spécial au début de chaque ligne de la liste, suivi + par un espace. La liste est terminée par une ligne vide. Les listes + peuvent être imbriquées, et les listes imbriquées peuvent + être de types différents. Les listes et les paragraphes peuvent + être combinées pour obtenir le résultat désiré. + Les caractères spéciaux sont les suivants.

                              + + + + + + + +
                              CaractèreType de liste
                              *Liste non ordonnée (puces)
                              #Liste ordonnée(1, 2, 3, etc.)
                              : (deux-point)Liste descriptive, terme à définir
                              ; (point-virgule)Liste descriptive, définition
                              + +

                              Exemple de liste imbriquée :

                              +

                              +  * Première puce
                              +  * Deuxième puce
                              +  ## Ligne numérotée 1
                              +  ## Ligne numérotée 2
                              +  * Troisième puce
                              +

                              +

                              produira : +

                                +
                              • Première puce
                              • +
                              • Deuxième puce
                              • +
                                  +
                                1. Ligne numérotée 1
                                2. +
                                3. Ligne numérotée 2
                                4. +
                                +
                              • Troisième puce
                              • +

                              + +

                              Formatage du texte

                              + +

                              Le formatage du texte permet de marquer une partie d'une ligne + dans un style différent. Les caractères spéciaux utilisés pour + cela peuvent se placer n'importe où sur une ligne, mais ne peut + chevaucher plusieurs lignes. Voici ces caractères.

                              + + + + + + + + + + + + +
                              ExempleRésultatDescription
                              *il fait beau*il fait beauGras
                              /il fait beau/il fait beauItalique
                              +il fait beau+il fait beauTexte inséré
                              -il fait beau-il fait beauTexte supprimé
                              il fait ~world~il fait beauIndice
                              il fait ^world^il fait beauExposant
                              "il fait beau"“il fait beau”Entre guillemets
                              %il fait beau%il fait beauPolice monospace
                              @il fait beau@il fait beauCitation
                              + +

                              Acronymes

                              + +

                              La composition d'acronymes s'obtient en plaçant l'acronyme en + lettres capitales, suivies de la description entre parenthèses. + Il ne doit y avoir aucun espace entre l'acronyme et la parenthèse. + Voici un exemple :

                              + + + + +
                              ExempleRésultat
                              HTML(Hypertext Markup Language)HTML
                              + +

                              Hyperliens

                              + +

                              Les liens peuvent être écrits directement dans le texte, + et suivi (sans espace) par le texte à afficher sur le lien. Les liens + pour les adresses de courriel se traitent de la même manière.

                              + + + + + +
                              ExempleRésultat
                              http://www.google.fr/(Rechercher)Rechercher
                              nobody@exemple.net(Utilisateur bidon)Utilisateur bidon
                              + +

                              Liens vers des modules de Moodle

                              + +

                              Si vous connaissez le numéro identifiant et le type d'un module + dans Moodle, vous pouvez le lier directement en suivant la + syntaxe TypeDuModule:nn(Texte descriptif) comme dans l'exemple + ci-dessous. Le type de module doit être écrit suivant sa dénomitation + originale en anglais.

                              + + + + + +
                              Exemple
                              resource:36(Ma nouvelle page)
                              forum:10(Jump to forum)
                              + +

                              Liens vers des images de Moodle

                              + +

                              Des images peuvent être placées dans les pages en texte Wiki. Il + vous suffit de déposer l'image sur le site et de noter son + chemin d'accès dans la zone des fichiers déposés. Vous + utiliserez ensuite la syntaxe /chemin/d/accès/au/fichier(Texte + alternatif). + + + + + +
                              Exemple
                              /photos/groupe.jpg(Photo du personnel)
                              /images/fr/menu.gif(Menu en français)
                              + +

                              Liens vers des fichiers de Moodle

                              + +

                              De la même façon que les images, les fichiers + préalablement déposés dans Moodle peuvent être liés sur les + pages en texte Wiki. La syntaxe est file:/chemin/d/accès/au/fichier(Texte + du lien). + + + + + +
                              Exemple
                              file:/textes/moodle.pdf(Manuel de Moodle)
                              file:/media/movies/navette.mov(Décollage de la navette)
                              + +

                              Formatage automatique

                              + +

                              De nombreux textes sont automatiquement convertis en leur + équivalent XHTML. Les principaux sont les suivants :

                              + +
                                +
                              • Les liens HTTP sont convertis en liens actifs
                              • +
                              • (R), (TM), (C), 1/4, 1/2, 3/4 sont tous transformés dans + le caractère correct correspondant
                              • +
                              • 123 x 456 affiche un symbole de multiplication correct
                              • +
                              • Toute ligne commençant par au moins 4 tirets est convertie + une ligne horizontale
                              • +
                              + +

                              Correcteur orthographique (experimental)

                              + +

                              Le moteur Wiki de Moodle peut être placé en mode correcteur +orthographique. Si vous placez une ligne de la forme suivante, +tout ce qui sera écrit ensuite sera vérifié. + +

                              +!SPELL:language_code:language_variant
                              +
                              + +Exemples : +
                              +!SPELL:en:british
                              +!SPELL:fr
                              +
                              + +

                              Le « language_code » doit être remplacé par le code adéquat (en, fr, de, + etc.), « language_variant » et les deux-points qui le suivent sont + facultatifs et peuvent être « american », « british » ou + « canadian », dans le cas où le code de langue est en.

                              + +

                              Les mots non reconnus sont mis en surbrillance et vous pouvez + voir les suggestions en plaçant le pointeur sur le mot.

                              + +

                              Remarque : le correcteur utilise les librairies + pspell. Celles-ci doivent être installées sur le + serveur, en compagnie des dictionnaires, pour que le correcteur + fonctionne. Notamment, le système d'exploitation Windows n'est pas supporté.

                              \ No newline at end of file diff --git a/lang/fr_ca/help/workshop/addingacomment.html b/lang/fr_ca/help/workshop/addingacomment.html index d655489e13d..5b99043950f 100644 --- a/lang/fr_ca/help/workshop/addingacomment.html +++ b/lang/fr_ca/help/workshop/addingacomment.html @@ -1,29 +1,29 @@ - - - - - -

                              Ajouter un commentaire

                              -

                              Les différents intervenants peuvent ajouter des -commentaires :

                              -
                                -
                              1. L'étudiant qui évalue le travail (le correcteur) -peut ajouter un commentaire pour compléter ou pour clarifier son -évaluation.
                              2. -
                              3. L'étudiant dont le travail est évalué peut -ajouter un commentaire pour remettre en cause les affirmations qui ont -été faites dans l'évaluation.
                              4. -
                              5. Le professeur peut ajouter un commentaire pour remplir son -rôle de médiateur entre les deux étudiants : -celui qui se fait évaluer et celui qui est évalué.
                              6. -
                              -

                              Le but des commentaires est d'obtenir un consensus sur -l'évaluation, le tout dans un climat qui favorise le meilleur -apprentissage.

                              -

                              Si le travail est réévalué, alors les -commentaires de l'évaluation précédente sont -effacés et l'évaluation est recommencée à -partir de zéro.

                              -

                              - - + + + + + +

                              Ajouter un commentaire

                              +

                              Les différents intervenants peuvent ajouter des +commentaires :

                              +
                                +
                              1. L'étudiant qui évalue le travail (le correcteur) +peut ajouter un commentaire pour compléter ou pour clarifier son +évaluation.
                              2. +
                              3. L'étudiant dont le travail est évalué peut +ajouter un commentaire pour remettre en cause les affirmations qui ont +été faites dans l'évaluation.
                              4. +
                              5. Le professeur peut ajouter un commentaire pour remplir son +rôle de médiateur entre les deux étudiants : +celui qui se fait évaluer et celui qui est évalué.
                              6. +
                              +

                              Le but des commentaires est d'obtenir un consensus sur +l'évaluation, le tout dans un climat qui favorise le meilleur +apprentissage.

                              +

                              Si le travail est réévalué, alors les +commentaires de l'évaluation précédente sont +effacés et l'évaluation est recommencée à +partir de zéro.

                              +

                              + + diff --git a/lang/fr_ca/help/workshop/agreeassessments.html b/lang/fr_ca/help/workshop/agreeassessments.html index 5ff1214c4e1..17165868012 100644 --- a/lang/fr_ca/help/workshop/agreeassessments.html +++ b/lang/fr_ca/help/workshop/agreeassessments.html @@ -10,11 +10,11 @@

                              Le professeur peut activer l'option de ne pas afficher les notes pendant la phase d'évaluation lorsqu'il choisit le deuxième processus (une des options de l'atelier). Seuls les commentaires seront alors affichés à l'étudiant dont le travail est évalué pendant les négociations avec les étudiants qui ont évalué son travail. Lorsqu'il y a accord, la note est alors affichée pour cet élément de l'évaluation. Cette option est disponible seulement lorsque l'accord entre les parties est requis.

                              - - - - - - - - + + + + + + + + diff --git a/lang/fr_ca/help/workshop/anonymous.html b/lang/fr_ca/help/workshop/anonymous.html index 8024e29c881..7c3d6a633ab 100644 --- a/lang/fr_ca/help/workshop/anonymous.html +++ b/lang/fr_ca/help/workshop/anonymous.html @@ -1,16 +1,16 @@ - - - - - -

                              Évaluation anonyme

                              -

                              Un travail peut être évalué par un ou des -étudiants sans qu'ils en connaissent l'auteur. Le nom et la -photo de l'auteur n'apparaîtront pas aux correcteurs. Seulement -le nom du fichier contenant le travail sera connu.

                              -

                              Lorsque l'évaluation n'est pas anonyme, le travail -apparaît avec le nom et la photo de l'auteur. Ceci peut -influencer l'évaluation.

                              -

                              Notez que les notes du professeur ne sont jamais anonymes.

                              - - + + + + + +

                              Évaluation anonyme

                              +

                              Un travail peut être évalué par un ou des +étudiants sans qu'ils en connaissent l'auteur. Le nom et la +photo de l'auteur n'apparaîtront pas aux correcteurs. Seulement +le nom du fichier contenant le travail sera connu.

                              +

                              Lorsque l'évaluation n'est pas anonyme, le travail +apparaît avec le nom et la photo de l'auteur. Ceci peut +influencer l'évaluation.

                              +

                              Notez que les notes du professeur ne sont jamais anonymes.

                              + + diff --git a/lang/fr_ca/help/workshop/assessmentofexamples.html b/lang/fr_ca/help/workshop/assessmentofexamples.html index 29f185ce1a6..639d7d4259d 100644 --- a/lang/fr_ca/help/workshop/assessmentofexamples.html +++ b/lang/fr_ca/help/workshop/assessmentofexamples.html @@ -5,6 +5,6 @@

                              Seulement le professeur pourra voir ces évaluations, les étudiants n'y ayant jamais accès.

                              - - - + + + diff --git a/lang/fr_ca/help/workshop/assignmenttype.html b/lang/fr_ca/help/workshop/assignmenttype.html index 7602462da25..514ffc87b90 100644 --- a/lang/fr_ca/help/workshop/assignmenttype.html +++ b/lang/fr_ca/help/workshop/assignmenttype.html @@ -1,27 +1,27 @@ - - - - - -

                              Types d'évaluation par les pairs

                              -

                              L'évaluation par les pairs peut prendre deux formes :

                              -
                                -
                              1. Les correcteurs écrivent un commentaire pour chaque -critère d'évaluation et un commentaire -général. On n'accorde pas de note pour l'ensemble du -travail. Aucune note pour les critères d'évaluation ne -sera reportée sur la page des notes. Cependant, on mesurera la -qualité des évaluations faites par les étudiants -et ceci sera inscrit dans la page des notes.
                              2. -
                              3. Le professeur et les étudiants écrivent un -commentaire et accordent une note en fonction de chaque critère -d'évaluation. On accorde une note pour l'ensemble du travail et -les commentaires seront reportés dans les résultats -consolidés de l'évaluation. La note finale d'un -étudiant est calculée à partir des -résultats pondérés obtenus de la note du -professeur, de la note moyenne accordée par les pairs et de la -mesure de la qualité de ses évaluations.
                              4. -
                              - - + + + + + +

                              Types d'évaluation par les pairs

                              +

                              L'évaluation par les pairs peut prendre deux formes :

                              +
                                +
                              1. Les correcteurs écrivent un commentaire pour chaque +critère d'évaluation et un commentaire +général. On n'accorde pas de note pour l'ensemble du +travail. Aucune note pour les critères d'évaluation ne +sera reportée sur la page des notes. Cependant, on mesurera la +qualité des évaluations faites par les étudiants +et ceci sera inscrit dans la page des notes.
                              2. +
                              3. Le professeur et les étudiants écrivent un +commentaire et accordent une note en fonction de chaque critère +d'évaluation. On accorde une note pour l'ensemble du travail et +les commentaires seront reportés dans les résultats +consolidés de l'évaluation. La note finale d'un +étudiant est calculée à partir des +résultats pondérés obtenus de la note du +professeur, de la note moyenne accordée par les pairs et de la +mesure de la qualité de ses évaluations.
                              4. +
                              + + diff --git a/lang/fr_ca/help/workshop/breakdownoffinalgrade.html b/lang/fr_ca/help/workshop/breakdownoffinalgrade.html index 286a1e9521b..b307169cb7d 100644 --- a/lang/fr_ca/help/workshop/breakdownoffinalgrade.html +++ b/lang/fr_ca/help/workshop/breakdownoffinalgrade.html @@ -1,61 +1,61 @@ - - - - - -

                              Composition de la note finale

                              -

                              Le tableau sur cet écran montre votre note finale et comment -elle a été calculée. La note finale se compose -potentiellement de trois éléments :

                              -
                                -
                              1. La note accordée par le professeur pour le travail que -vous avez soumis.
                              2. -
                              3. La moyenne des notes accordées par vos pairs (les -étudiants) qui ont évalué le travail que vous avez -soumis.
                              4. -
                              5. Une note qui reflète comment vous vous êtes -vous-même acquitté de votre rôle de correcteur. -Cette note a été établie en -tenant compte des éléments suivants :
                                -
                              6. -
                              -
                                -
                                  -
                                • si vos notes étaient trop hautes ou trop basses en -comparaison avec la note moyenne des autres étudiants (biais)
                                  -
                                • -
                                -
                              -
                                -
                                  -
                                • si vos notes suivent la moyenne des notes données par -les autres étudiants (fiabilité)
                                  -
                                • -
                                -
                              -
                                -
                                  -
                                • la qualité de vos commentaires sur les autres travaux -que vous avez évalués (qualité) -Ce dernier aspect a été évalué par le -professeur.
                                  -
                                • -
                                -
                              -
                              Ces trois éléments qui -reflètent le biais, la fiabilité et la qualité de -vos évaluations ont été pondérés par -les facteurs 1:2:3 respectivement afin de calculer la note sur la -qualité de vos évaluations. En d'autres termes, -l'évaluation du professeur de la qualité de vos -commentaires a le même poids que les facteurs sur le biais et de -la fiabilité combinés.
                              -
                                -
                              -

                              La pondération de ces trois composantes pour le calcul de la -note finale est fonction du type de travail à accomplir et a -été décidée par le professeur. Ces poids -sont affichés dans le petit tableau. -

                              - - + + + + + +

                              Composition de la note finale

                              +

                              Le tableau sur cet écran montre votre note finale et comment +elle a été calculée. La note finale se compose +potentiellement de trois éléments :

                              +
                                +
                              1. La note accordée par le professeur pour le travail que +vous avez soumis.
                              2. +
                              3. La moyenne des notes accordées par vos pairs (les +étudiants) qui ont évalué le travail que vous avez +soumis.
                              4. +
                              5. Une note qui reflète comment vous vous êtes +vous-même acquitté de votre rôle de correcteur. +Cette note a été établie en +tenant compte des éléments suivants :
                                +
                              6. +
                              +
                                +
                                  +
                                • si vos notes étaient trop hautes ou trop basses en +comparaison avec la note moyenne des autres étudiants (biais)
                                  +
                                • +
                                +
                              +
                                +
                                  +
                                • si vos notes suivent la moyenne des notes données par +les autres étudiants (fiabilité)
                                  +
                                • +
                                +
                              +
                                +
                                  +
                                • la qualité de vos commentaires sur les autres travaux +que vous avez évalués (qualité) +Ce dernier aspect a été évalué par le +professeur.
                                  +
                                • +
                                +
                              +
                              Ces trois éléments qui +reflètent le biais, la fiabilité et la qualité de +vos évaluations ont été pondérés par +les facteurs 1:2:3 respectivement afin de calculer la note sur la +qualité de vos évaluations. En d'autres termes, +l'évaluation du professeur de la qualité de vos +commentaires a le même poids que les facteurs sur le biais et de +la fiabilité combinés.
                              +
                                +
                              +

                              La pondération de ces trois composantes pour le calcul de la +note finale est fonction du type de travail à accomplir et a +été décidée par le professeur. Ces poids +sont affichés dans le petit tableau. +

                              + + diff --git a/lang/fr_ca/help/workshop/calculatingfinalgrade.html b/lang/fr_ca/help/workshop/calculatingfinalgrade.html index a5a0806e572..c76ece127d3 100644 --- a/lang/fr_ca/help/workshop/calculatingfinalgrade.html +++ b/lang/fr_ca/help/workshop/calculatingfinalgrade.html @@ -1,85 +1,85 @@ - - - - - -

                              Calcul de la note finale

                              -

                              Le tableau sur cet écran montre comment les notes finales des -étudiants sont calculées. Les notes finales sont une -somme pondérée d'un maximum de cinq composantes. Les -voici :

                              -
                                -
                              1. La note accordée par le professeur pour le travail soumis -par l'étudiant. Cette note est facultative et sera -employée si le professeur évalue réellement le -travail de l'étudiant. Si l'étudiant soumet plus d'une -version du travail, on utilise alors la -« meilleure » note pondérée. La -meilleure note signifie la note pondérée la plus haute, -qui est une combinaison de la note du professeur et de la note de ses -pairs.
                              2. -
                              3. La moyenne des notes accordées par ses pairs pour le -travail soumis par l'étudiant. Si l'étudiant soumet plus -d'une version du travail, on utilise alors la -« meilleure » note pondérée. La -note des pairs peut optionnellement inclure la note du professeur. -Cette note sera incluse si le nombre des notes accordées par les -pairs est très bas ou si le professeur met en doute les notes -des pairs à cause d'un manque de fiabilité, de notes trop -basses ou trop élevées). Lorsque la note du professeur -est incluse, elle a le même poids que les notes des -étudiants dans le calcul de la moyenne.
                              4. -
                              5. Le biais que l'étudiant introduit par des notes trop -hautes ou trop basses dans l'évaluation par les pairs. Ce n'est -pas une mesure absolue, car elle est basée sur la -différence entre la note de l'étudiant et les moyennes -des notes des autres étudiants pour chacune des soumissions -qu'ils ont évaluées. En général, cette -composante ne devrait pas avoir un poids très -élevé.
                              6. -
                              7. La fiabilité des évaluations faites par -l'étudiant. C'est une mesure qui indique jusqu'à quel -point les notes accordées par l'étudiant suivent la -moyenne des notes accordées par les autres étudiants pour -les mêmes évaluations. La mesure enlève le biais -introduit par l'étudiant et fait la moyenne des -différences absolues entre la note accordée par -l'étudiant et les notes moyennes des autres étudiants. En -la théorie, l'étudiant qui donne une note -élevée pour les bons travaux et une note faible pour les -mauvais travaux sera considéré comme fiable. Si le -professeur évalue que les les étudiants en -général ne sont pas bons correcteurs, la note du -professeur devrait être incluse pour rendre les notes sur la -valeur de fiabilité plus significatives.
                              8. -
                              9. La note moyenne donnée par le professeur pour les -évaluations de l'étudiant. Ceci inclut les deux -évaluations préliminaires faites par l'étudiant -sur les exemples de travaux fournis par le professeur et toutes les -notes du professeur sur les évaluations produites pendant la -phase d'évaluation par les pairs. En général, -cette composante est probablement plus importante que les composantes -sur le biais et sur la fiabilité. Le poids de cette composante -(lorsque la pondération est disponible) devrait donc être -supérieur.
                              10. -
                              -

                              Ces cinq composantes peuvent être pondérées -selon les objectifs du professeur et en fonction du type de travail. -Par exemple, la note du professeur pourrait avoir un fort poids si -l'évaluation par les pairs a une importance minime dans le -travail. Ou, si le professeur évalue seulement quelques-unes des -soumissions ou s'il considère comme très important le -rôle de correcteur pour les étudiants, les notes -accordées par le professeur peuvent être ignorées -en leur donnant un poids nul ou très faible. Dans ce dernier -exemple, c'est la capacité d'évaluer des étudiants -qui déterminent les notes finales.

                              -

                              Notez que cet écran est utilisé itérativement -et les notes finales ne sont pas normalement disponibles aux -étudiants avant la phase finale du travail. Une fois que le le -professeur est satisfait des notes finales et de leurs -pondérations, elles sont alors affichées. aux -étudiants. -

                              - - + + + + + +

                              Calcul de la note finale

                              +

                              Le tableau sur cet écran montre comment les notes finales des +étudiants sont calculées. Les notes finales sont une +somme pondérée d'un maximum de cinq composantes. Les +voici :

                              +
                                +
                              1. La note accordée par le professeur pour le travail soumis +par l'étudiant. Cette note est facultative et sera +employée si le professeur évalue réellement le +travail de l'étudiant. Si l'étudiant soumet plus d'une +version du travail, on utilise alors la +« meilleure » note pondérée. La +meilleure note signifie la note pondérée la plus haute, +qui est une combinaison de la note du professeur et de la note de ses +pairs.
                              2. +
                              3. La moyenne des notes accordées par ses pairs pour le +travail soumis par l'étudiant. Si l'étudiant soumet plus +d'une version du travail, on utilise alors la +« meilleure » note pondérée. La +note des pairs peut optionnellement inclure la note du professeur. +Cette note sera incluse si le nombre des notes accordées par les +pairs est très bas ou si le professeur met en doute les notes +des pairs à cause d'un manque de fiabilité, de notes trop +basses ou trop élevées). Lorsque la note du professeur +est incluse, elle a le même poids que les notes des +étudiants dans le calcul de la moyenne.
                              4. +
                              5. Le biais que l'étudiant introduit par des notes trop +hautes ou trop basses dans l'évaluation par les pairs. Ce n'est +pas une mesure absolue, car elle est basée sur la +différence entre la note de l'étudiant et les moyennes +des notes des autres étudiants pour chacune des soumissions +qu'ils ont évaluées. En général, cette +composante ne devrait pas avoir un poids très +élevé.
                              6. +
                              7. La fiabilité des évaluations faites par +l'étudiant. C'est une mesure qui indique jusqu'à quel +point les notes accordées par l'étudiant suivent la +moyenne des notes accordées par les autres étudiants pour +les mêmes évaluations. La mesure enlève le biais +introduit par l'étudiant et fait la moyenne des +différences absolues entre la note accordée par +l'étudiant et les notes moyennes des autres étudiants. En +la théorie, l'étudiant qui donne une note +élevée pour les bons travaux et une note faible pour les +mauvais travaux sera considéré comme fiable. Si le +professeur évalue que les les étudiants en +général ne sont pas bons correcteurs, la note du +professeur devrait être incluse pour rendre les notes sur la +valeur de fiabilité plus significatives.
                              8. +
                              9. La note moyenne donnée par le professeur pour les +évaluations de l'étudiant. Ceci inclut les deux +évaluations préliminaires faites par l'étudiant +sur les exemples de travaux fournis par le professeur et toutes les +notes du professeur sur les évaluations produites pendant la +phase d'évaluation par les pairs. En général, +cette composante est probablement plus importante que les composantes +sur le biais et sur la fiabilité. Le poids de cette composante +(lorsque la pondération est disponible) devrait donc être +supérieur.
                              10. +
                              +

                              Ces cinq composantes peuvent être pondérées +selon les objectifs du professeur et en fonction du type de travail. +Par exemple, la note du professeur pourrait avoir un fort poids si +l'évaluation par les pairs a une importance minime dans le +travail. Ou, si le professeur évalue seulement quelques-unes des +soumissions ou s'il considère comme très important le +rôle de correcteur pour les étudiants, les notes +accordées par le professeur peuvent être ignorées +en leur donnant un poids nul ou très faible. Dans ce dernier +exemple, c'est la capacité d'évaluer des étudiants +qui déterminent les notes finales.

                              +

                              Notez que cet écran est utilisé itérativement +et les notes finales ne sont pas normalement disponibles aux +étudiants avant la phase finale du travail. Une fois que le le +professeur est satisfait des notes finales et de leurs +pondérations, elles sont alors affichées. aux +étudiants. +

                              + + diff --git a/lang/fr_ca/help/workshop/editingacomment.html b/lang/fr_ca/help/workshop/editingacomment.html index a3eb69958fa..3edbab3ce1e 100644 --- a/lang/fr_ca/help/workshop/editingacomment.html +++ b/lang/fr_ca/help/workshop/editingacomment.html @@ -2,5 +2,5 @@

                              Il existe dans Moodle une période de grâce où il est possible d'éditer les messages ou les commentaires qui sont publiés, généralement environ 30 minutes. Ce n'est qu'après ce délai que les commentaires seront affichés dans l'évaluation du travail.

                              - - + + diff --git a/lang/fr_ca/help/workshop/elements.html b/lang/fr_ca/help/workshop/elements.html index 10c3d65f645..d41802a624b 100644 --- a/lang/fr_ca/help/workshop/elements.html +++ b/lang/fr_ca/help/workshop/elements.html @@ -1,122 +1,122 @@ - - - - - -

                              Stratégies d'évaluation

                              -

                              La grille de correction -pour évaluer un travail devrait avoir -un nombre raisonnable de critères -d'évaluation, soit -entre 5 et 15 critères selon la complexité du travail. Il -est possible d'avoir un travail évalué par les pairs avec -un seul critère, la stratégie d'évaluation -étant alors semblable à celle du devoir.

                              -

                              Le type de grille de correction dépend de la stratégie -d'évaluation désirée :

                              -
                                -
                              1. Évaluation formative avec grille d'observation. Les -critères peuvent prendre la forme -de descriptions de certains aspects du travail, de questions, de -commentaires. Le correcteur doit fournir ses observations sur le -travail en fonction de ces critères. Comme avec toutes les -stratégies -d'évaluation, un espace est prévu pour des commentaires -d'ordre général. L'évaluation est de type -qualitatif et donc le correcteur n'attribue pas de note. Le professeur -peut toutefois accorder une note pour l'évaluation du correcteur -qui sera à la base de la note qui apparaîtra dans le -rapport des résultats du cours. Aucune note n'apparaîtra -si le professeur ne donne pas de note.
                                -
                              2. -
                              3. Critères avec une échelle d'appréciation. -C'est la stratégie par défaut. L'évaluation se -fait à partir d'énoncés qui décrivent  -des aspects désirables dans le travail. Le correcteur attribue -une note à partir d'une échelle d'appréciation -pour chaque critère. Chaque critère a les trois -caractéristiques -suivantes :
                              4. -
                                  -
                                • Une description : -La description explique clairement quel aspect de la tâche est -évalué. Si l'évaluation est qualitative, on doit -inclure des détails sur ce qui est considéré comme -excellent, moyen et faible.
                                • -
                                -
                                  -
                                • Une échelle -d'appréciation : Moodle offre plusieurs -échelles prédéfinies qui vont du simple Oui/Non -à une échelle en pourcentage, en passant par une -échelle de plusieurs points qui va d'excellent à -très faible. Le professeur choisit l'échelle en fonction -du type de critère. Le nombre de division sur l'échelle -ne détermine pas l'importance relative du critère : -c'est le poids du critère qui remplit cette fonction.
                                • -
                                -
                                  -
                                • Un poids : Par -défaut, tous les critères ont le même poids dans le -calcul de la note finale du travail. Le professeur peut toutefois -modifier l'importance relative de chaque critère en accordant un -poids plus grand que 1 à un critère plus important et un -poids inférieur à 1 à un critère moins -important (on peut fixer le poids à une valeur négative). -Le changement des poids des critères ne fait pas varier la note -maximale, car celui-ci dépend d'un des paramètres de -l'atelier.
                                • -
                                    -
                                  -
                                -
                              5. Liste de vérification. Des critères -décrivent les éléments qui doivent être -présents ou les aspects qui doivent être couverts dans le -travail. Le correcteur doit déterminer si oui ou non ces -éléments ou ces aspects se retrouvent dans le travail qui -a été soumis. Le professeur établit un -barème de correction lorsque tous les éléments -sont présents, un élément est absent, deux -éléments sont absents, etc. Il peut aussi modifier le -poids de chaque critère pour établir son importance -relative. La somme des erreurs correspond à la somme -pondérée des éléments manquants. Il n'est -pas nécessaire que la distribution des poids soit -linéaire. Par exemple, pour dix énoncés les notes -pourraient être : 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0%. -Le -correcteur peut toujours faire une révision des notes -suggérées pouvant aller jusqu'à 20%.
                                -
                              6. -
                              7. Niveaux d'atteinte global des objectifs. Le professeur -fournit plusieurs énoncés qui décrivent des -niveaux différents d'atteinte des objectifs. Le correcteur doit -choisir l'énoncé qui correspond le plus au travail qui a -été soumis. Les énoncés peuvent -décrire des niveaux successifs ou être indépendants -les uns des autres. Le professeur établit un barème de -correction. Le correcteur peut apporter  une révision des -notes -suggérées pouvant aller jusqu'à 20%.
                              8. -
                              9. Grille d'évaluation critériée. -Cette stratégie est semblable à celle du niveau -d'atteinte global des objectifs à la différence qu'elle -comporte -plusieurs critères. Le nombre de critères est -déterminé dans les paramètres de l'atelier. Pour -chaque critère, il peut y avoir jusqu'à cinq -énoncés décrivant les niveaux atteints. Ce nombre -de niveaux peut varier d'un critère à l'autre. Un niveau -laissé vide par le professeur signale que le niveau -précédent est le dernier. Les critères peuvent -être pondérés. Les niveaux sont marqués par -les chiffres 0, 1, 2, 3 et 4. Ces chiffres correspondent à la -note accordée à chaque niveau. La note finale pour ce -travail est la somme pondérée des notes pour chaque -critère.
                              10. -
                              - - + + + + + +

                              Stratégies d'évaluation

                              +

                              La grille de correction +pour évaluer un travail devrait avoir +un nombre raisonnable de critères +d'évaluation, soit +entre 5 et 15 critères selon la complexité du travail. Il +est possible d'avoir un travail évalué par les pairs avec +un seul critère, la stratégie d'évaluation +étant alors semblable à celle du devoir.

                              +

                              Le type de grille de correction dépend de la stratégie +d'évaluation désirée :

                              +
                                +
                              1. Évaluation formative avec grille d'observation. Les +critères peuvent prendre la forme +de descriptions de certains aspects du travail, de questions, de +commentaires. Le correcteur doit fournir ses observations sur le +travail en fonction de ces critères. Comme avec toutes les +stratégies +d'évaluation, un espace est prévu pour des commentaires +d'ordre général. L'évaluation est de type +qualitatif et donc le correcteur n'attribue pas de note. Le professeur +peut toutefois accorder une note pour l'évaluation du correcteur +qui sera à la base de la note qui apparaîtra dans le +rapport des résultats du cours. Aucune note n'apparaîtra +si le professeur ne donne pas de note.
                                +
                              2. +
                              3. Critères avec une échelle d'appréciation. +C'est la stratégie par défaut. L'évaluation se +fait à partir d'énoncés qui décrivent  +des aspects désirables dans le travail. Le correcteur attribue +une note à partir d'une échelle d'appréciation +pour chaque critère. Chaque critère a les trois +caractéristiques +suivantes :
                              4. +
                                  +
                                • Une description : +La description explique clairement quel aspect de la tâche est +évalué. Si l'évaluation est qualitative, on doit +inclure des détails sur ce qui est considéré comme +excellent, moyen et faible.
                                • +
                                +
                                  +
                                • Une échelle +d'appréciation : Moodle offre plusieurs +échelles prédéfinies qui vont du simple Oui/Non +à une échelle en pourcentage, en passant par une +échelle de plusieurs points qui va d'excellent à +très faible. Le professeur choisit l'échelle en fonction +du type de critère. Le nombre de division sur l'échelle +ne détermine pas l'importance relative du critère : +c'est le poids du critère qui remplit cette fonction.
                                • +
                                +
                                  +
                                • Un poids : Par +défaut, tous les critères ont le même poids dans le +calcul de la note finale du travail. Le professeur peut toutefois +modifier l'importance relative de chaque critère en accordant un +poids plus grand que 1 à un critère plus important et un +poids inférieur à 1 à un critère moins +important (on peut fixer le poids à une valeur négative). +Le changement des poids des critères ne fait pas varier la note +maximale, car celui-ci dépend d'un des paramètres de +l'atelier.
                                • +
                                    +
                                  +
                                +
                              5. Liste de vérification. Des critères +décrivent les éléments qui doivent être +présents ou les aspects qui doivent être couverts dans le +travail. Le correcteur doit déterminer si oui ou non ces +éléments ou ces aspects se retrouvent dans le travail qui +a été soumis. Le professeur établit un +barème de correction lorsque tous les éléments +sont présents, un élément est absent, deux +éléments sont absents, etc. Il peut aussi modifier le +poids de chaque critère pour établir son importance +relative. La somme des erreurs correspond à la somme +pondérée des éléments manquants. Il n'est +pas nécessaire que la distribution des poids soit +linéaire. Par exemple, pour dix énoncés les notes +pourraient être : 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0%. +Le +correcteur peut toujours faire une révision des notes +suggérées pouvant aller jusqu'à 20%.
                                +
                              6. +
                              7. Niveaux d'atteinte global des objectifs. Le professeur +fournit plusieurs énoncés qui décrivent des +niveaux différents d'atteinte des objectifs. Le correcteur doit +choisir l'énoncé qui correspond le plus au travail qui a +été soumis. Les énoncés peuvent +décrire des niveaux successifs ou être indépendants +les uns des autres. Le professeur établit un barème de +correction. Le correcteur peut apporter  une révision des +notes +suggérées pouvant aller jusqu'à 20%.
                              8. +
                              9. Grille d'évaluation critériée. +Cette stratégie est semblable à celle du niveau +d'atteinte global des objectifs à la différence qu'elle +comporte +plusieurs critères. Le nombre de critères est +déterminé dans les paramètres de l'atelier. Pour +chaque critère, il peut y avoir jusqu'à cinq +énoncés décrivant les niveaux atteints. Ce nombre +de niveaux peut varier d'un critère à l'autre. Un niveau +laissé vide par le professeur signale que le niveau +précédent est le dernier. Les critères peuvent +être pondérés. Les niveaux sont marqués par +les chiffres 0, 1, 2, 3 et 4. Ces chiffres correspondent à la +note accordée à chaque niveau. La note finale pour ce +travail est la somme pondérée des notes pour chaque +critère.
                              10. +
                              + + diff --git a/lang/fr_ca/help/workshop/finalgrades.html b/lang/fr_ca/help/workshop/finalgrades.html index fb265cf7dd3..4df4f4b77e6 100644 --- a/lang/fr_ca/help/workshop/finalgrades.html +++ b/lang/fr_ca/help/workshop/finalgrades.html @@ -4,13 +4,13 @@
                              1. Si la note d'un professeur doit être ajoutée, alors le travail peut être évalué en allant à l'écran pour la gestion des travaux et en cliquant sur le lien « Soumissions d'étudiant pour évaluation ». Toutes les soumissions restantes peuvent être évaluées. Une fois que ceci a été fait, il suffit de retourner à la phase trois pour recalculer les notes finales. De la même façon, tous les travaux qui n'ont pas été évalués peuvent l'être à partir de l'écran de gestion.
                              2. -
                              3. Le professeur peut décider de modifier la pondération des différents critères. Pour ce faire, il doit se rendre à la phase trois de l'atelier. Il clique ensuite l'hyperlien pour le calcul des notes finales pour entrer la nouvelle pondération. Après que les notes ont été calculées de nouveau, la phase 4 de l'atelier affiche les résultats aux étudiants.
                              4. +
                              5. Le professeur peut décider de modifier la pondération des différents critères. Pour ce faire, il doit se rendre à la phase trois de l'atelier. Il clique ensuite l'hyperlien pour le calcul des notes finales pour entrer la nouvelle pondération. Après que les notes ont été calculées de nouveau, la phase 4 de l'atelier affiche les résultats aux étudiants.

                              - - - - + + + + diff --git a/lang/fr_ca/help/workshop/graded.html b/lang/fr_ca/help/workshop/graded.html index 263b111ddbf..d6605d85c12 100644 --- a/lang/fr_ca/help/workshop/graded.html +++ b/lang/fr_ca/help/workshop/graded.html @@ -1,21 +1,21 @@ - - - - - -

                              Un travail évalué par les pairs

                              -

                              Ceci affiche les notes et les commentaires qui ont été -faits sur le travail que vous avez soumis pour évaluation. -À ce stade, vous pouvez si vous le désirez -répondre à cette évaluation et choisir de la -contester. Si c'est le cas, s.v.p. écrivez votre réponse -dans la boîte au bas de la page en précisant la ou les -raisons pour lesquelles vous n'êtes pas en accord avec -l'évaluation. Ensuite, cliquez sur le bouton au bas de la page -et choisissez NON lorsqu'on vous demandera si vous êtes satisfait -de l'évaluation.

                              -

                              Autrement, cliquez sur le bouton au bas de la page et choisissez OUI -lorsqu'on vous demandera si vous êtes satisfait de -l'évaluation.

                              - - + + + + + +

                              Un travail évalué par les pairs

                              +

                              Ceci affiche les notes et les commentaires qui ont été +faits sur le travail que vous avez soumis pour évaluation. +À ce stade, vous pouvez si vous le désirez +répondre à cette évaluation et choisir de la +contester. Si c'est le cas, s.v.p. écrivez votre réponse +dans la boîte au bas de la page en précisant la ou les +raisons pour lesquelles vous n'êtes pas en accord avec +l'évaluation. Ensuite, cliquez sur le bouton au bas de la page +et choisissez NON lorsqu'on vous demandera si vous êtes satisfait +de l'évaluation.

                              +

                              Autrement, cliquez sur le bouton au bas de la page et choisissez OUI +lorsqu'on vous demandera si vous êtes satisfait de +l'évaluation.

                              + + diff --git a/lang/fr_ca/help/workshop/grading.html b/lang/fr_ca/help/workshop/grading.html index cb7b54ce48f..0f462dfc597 100644 --- a/lang/fr_ca/help/workshop/grading.html +++ b/lang/fr_ca/help/workshop/grading.html @@ -1,6 +1,6 @@

                              Évaluation des travaux soumis

                              -

                              +

                              Pour faciliter l'évaluation, on utilise des critères qui couvrent un aspect particulier du travail. Selon le type de stratégie d'évaluation qui a été choisie, vous devriez pour chaque critère :

                              1. Entrer une note en cliquant sur le bouton approprié ou en choisissant la note désirée à partir d'un menu déroulant. @@ -16,6 +16,6 @@ Pour faciliter l'

                                - - - + + + diff --git a/lang/fr_ca/help/workshop/gradingassessments.html b/lang/fr_ca/help/workshop/gradingassessments.html index b15caba1d6a..9d1db2f2936 100644 --- a/lang/fr_ca/help/workshop/gradingassessments.html +++ b/lang/fr_ca/help/workshop/gradingassessments.html @@ -1,38 +1,38 @@ - - - - - -

                                Noter les évaluations des étudiants

                                -

                                Cet écran sert au professeur pour noter l'évaluation -faite par l'étudiant pendant la phase de soumission et -d'évaluation des travaux. On utilise une échelle sur 20. -Le professeur décide ce qui est noté et les notes -relatives à partir des instructions données aux -étudiants avant que l'atelier ait débuté.

                                -

                                Le professeur peut progressivement se montrer de plus en plus -exigeant dans les évaluations :

                                -
                                  -
                                • Au début, les étudiants pourraient simplement -relever les erreurs et les inexactitudes dans les travaux.
                                • -
                                • Par la suite, les étudiants pourraient indiquer les forces -et faiblesses des travaux.
                                  -
                                • -
                                • Finalement, les étudiants pourraient émettre une -critique des travaux.
                                • -
                                -L'évaluation du professeur est affichée à -l'étudiant-correcteur lorsqu'elle est disponible. Cette -évaluation sert alors de référence pour -l'étudiant. -

                                La note pour l'évaluation est sauvegardée en cliquant -sur le bouton au bas de la page. Le professeur peut modifier sa propre -évaluation pendant le délai d'édition de Moodle. -Passé ce délai, l'évaluation du professeur est -disponible à l'étudiant. Toutefois, la note ne sera pas -affichée à l'étudiant tant que l'atelier n'est pas -à la phase finale de la remise des notes. Cela évite -qu'il y ait confusion entre la note pour le travail et la note pour -l'évaluation du travail.

                                - - + + + + + +

                                Noter les évaluations des étudiants

                                +

                                Cet écran sert au professeur pour noter l'évaluation +faite par l'étudiant pendant la phase de soumission et +d'évaluation des travaux. On utilise une échelle sur 20. +Le professeur décide ce qui est noté et les notes +relatives à partir des instructions données aux +étudiants avant que l'atelier ait débuté.

                                +

                                Le professeur peut progressivement se montrer de plus en plus +exigeant dans les évaluations :

                                +
                                  +
                                • Au début, les étudiants pourraient simplement +relever les erreurs et les inexactitudes dans les travaux.
                                • +
                                • Par la suite, les étudiants pourraient indiquer les forces +et faiblesses des travaux.
                                  +
                                • +
                                • Finalement, les étudiants pourraient émettre une +critique des travaux.
                                • +
                                +L'évaluation du professeur est affichée à +l'étudiant-correcteur lorsqu'elle est disponible. Cette +évaluation sert alors de référence pour +l'étudiant. +

                                La note pour l'évaluation est sauvegardée en cliquant +sur le bouton au bas de la page. Le professeur peut modifier sa propre +évaluation pendant le délai d'édition de Moodle. +Passé ce délai, l'évaluation du professeur est +disponible à l'étudiant. Toutefois, la note ne sera pas +affichée à l'étudiant tant que l'atelier n'est pas +à la phase finale de la remise des notes. Cela évite +qu'il y ait confusion entre la note pour le travail et la note pour +l'évaluation du travail.

                                + + diff --git a/lang/fr_ca/help/workshop/gradingstrategy.html b/lang/fr_ca/help/workshop/gradingstrategy.html index db8892f1a8c..d6adb3f3ac3 100644 --- a/lang/fr_ca/help/workshop/gradingstrategy.html +++ b/lang/fr_ca/help/workshop/gradingstrategy.html @@ -1,106 +1,106 @@ - - - - - -

                                Stratégies d'évaluation

                                -

                                La grille de correction -pour évaluer un travail devrait avoir -un nombre raisonnable de critères -d'évaluation, soit -entre 5 et 15 critères selon la complexité du travail. Il -est possible d'avoir un travail évalué par les pairs avec -un seul critère, la stratégie d'évaluation -étant alors semblable à celle du devoir.

                                -

                                Le type de grille de correction dépend de la stratégie -d'évaluation désirée :

                                -
                                  -
                                1. Évaluation formative avec grille d'observation. Les -critères peuvent prendre la forme -de descriptions de certains aspects du travail, de questions, de -commentaires. Le correcteur doit fournir ses observations sur le -travail en fonction de ces critères. Comme avec toutes les -stratégies -d'évaluation, un espace est prévu pour des commentaires -d'ordre général. L'évaluation est de type -qualitatif et donc le correcteur n'attribue pas de note. Le professeur -peut toutefois accorder une note pour l'évaluation du correcteur -qui sera à la base de la note qui apparaîtra dans le -rapport des résultats du cours. Aucune note n'apparaîtra -si le professeur ne donne pas de note.
                                  -
                                2. -
                                3. Critères avec une échelle d'appréciation. -C'est la stratégie par défaut. L'évaluation se -fait à partir d'énoncés qui décrivent  -des aspects désirables dans le travail. Le correcteur attribue -une note à partir d'une échelle d'appréciation -pour chaque critère. Chaque critère a les trois -caractéristiques -suivantes :
                                4. -
                                    -
                                  • Une description : -La description explique clairement quel aspect de la tâche est -évalué. Si l'évaluation est qualitative, on doit -inclure des détails sur ce qui est considéré comme -excellent, moyen et faible.
                                  • -
                                  -
                                    -
                                  • Une échelle -d'appréciation : Moodle offre plusieurs -échelles prédéfinies qui vont du simple Oui/Non -à une échelle en pourcentage, en passant par une -échelle de plusieurs points qui va d'excellent à -très faible. Le professeur choisit l'échelle en fonction -du type de critère. Le nombre de division sur l'échelle -ne détermine pas l'importance relative du critère : -c'est le poids du critère qui remplit cette fonction.
                                  • -
                                  -
                                    -
                                  • Un poids : Par -défaut, tous les critères ont le même poids dans le -calcul de la note finale du travail. Le professeur peut toutefois -modifier l'importance relative de chaque critère en accordant un -poids plus grand que 1 à un critère plus important et un -poids inférieur à 1 à un critère moins -important (on peut fixer le poids à une valeur négative). -Le changement des poids des critères ne fait pas varier la note -maximale, car celui-ci dépend d'un des paramètres de -l'atelier.
                                  • -
                                      -
                                    -
                                  -
                                5. Liste de vérification. Des critères -décrivent les éléments qui doivent être -présents ou les aspects qui doivent être couverts dans le -travail. Le correcteur doit déterminer si oui ou non ces -éléments ou ces aspects se retrouvent dans le travail qui -a été soumis. Le professeur établit un -barème de correction lorsque tous les éléments -sont présents, un élément est absent, deux -éléments sont absents, etc. Il peut aussi modifier le -poids de chaque critère pour établir son importance -relative. La somme des erreurs correspond à la somme -pondérée des éléments manquants. Il n'est -pas nécessaire que la distribution des poids soit -linéaire. Par exemple, pour dix énoncés les notes -pourraient être : 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0%. -Le -correcteur peut toujours faire une révision des notes -suggérées pouvant aller jusqu'à 20%.
                                  -
                                6. -
                                7. Niveaux d'atteinte global des objectifs. Le professeur -fournit plusieurs énoncés qui décrivent des -niveaux différents d'atteinte des objectifs. Le correcteur doit -choisir l'énoncé qui correspond le plus au travail qui a -été soumis. Les énoncés peuvent -décrire des niveaux successifs ou être indépendants -les uns des autres. Le professeur établit un barème de -correction. Le correcteur peut apporter  une révision des -notes -suggérées pouvant aller jusqu'à 20%.
                                8. -
                                - - + + + + + +

                                Stratégies d'évaluation

                                +

                                La grille de correction +pour évaluer un travail devrait avoir +un nombre raisonnable de critères +d'évaluation, soit +entre 5 et 15 critères selon la complexité du travail. Il +est possible d'avoir un travail évalué par les pairs avec +un seul critère, la stratégie d'évaluation +étant alors semblable à celle du devoir.

                                +

                                Le type de grille de correction dépend de la stratégie +d'évaluation désirée :

                                +
                                  +
                                1. Évaluation formative avec grille d'observation. Les +critères peuvent prendre la forme +de descriptions de certains aspects du travail, de questions, de +commentaires. Le correcteur doit fournir ses observations sur le +travail en fonction de ces critères. Comme avec toutes les +stratégies +d'évaluation, un espace est prévu pour des commentaires +d'ordre général. L'évaluation est de type +qualitatif et donc le correcteur n'attribue pas de note. Le professeur +peut toutefois accorder une note pour l'évaluation du correcteur +qui sera à la base de la note qui apparaîtra dans le +rapport des résultats du cours. Aucune note n'apparaîtra +si le professeur ne donne pas de note.
                                  +
                                2. +
                                3. Critères avec une échelle d'appréciation. +C'est la stratégie par défaut. L'évaluation se +fait à partir d'énoncés qui décrivent  +des aspects désirables dans le travail. Le correcteur attribue +une note à partir d'une échelle d'appréciation +pour chaque critère. Chaque critère a les trois +caractéristiques +suivantes :
                                4. +
                                    +
                                  • Une description : +La description explique clairement quel aspect de la tâche est +évalué. Si l'évaluation est qualitative, on doit +inclure des détails sur ce qui est considéré comme +excellent, moyen et faible.
                                  • +
                                  +
                                    +
                                  • Une échelle +d'appréciation : Moodle offre plusieurs +échelles prédéfinies qui vont du simple Oui/Non +à une échelle en pourcentage, en passant par une +échelle de plusieurs points qui va d'excellent à +très faible. Le professeur choisit l'échelle en fonction +du type de critère. Le nombre de division sur l'échelle +ne détermine pas l'importance relative du critère : +c'est le poids du critère qui remplit cette fonction.
                                  • +
                                  +
                                    +
                                  • Un poids : Par +défaut, tous les critères ont le même poids dans le +calcul de la note finale du travail. Le professeur peut toutefois +modifier l'importance relative de chaque critère en accordant un +poids plus grand que 1 à un critère plus important et un +poids inférieur à 1 à un critère moins +important (on peut fixer le poids à une valeur négative). +Le changement des poids des critères ne fait pas varier la note +maximale, car celui-ci dépend d'un des paramètres de +l'atelier.
                                  • +
                                      +
                                    +
                                  +
                                5. Liste de vérification. Des critères +décrivent les éléments qui doivent être +présents ou les aspects qui doivent être couverts dans le +travail. Le correcteur doit déterminer si oui ou non ces +éléments ou ces aspects se retrouvent dans le travail qui +a été soumis. Le professeur établit un +barème de correction lorsque tous les éléments +sont présents, un élément est absent, deux +éléments sont absents, etc. Il peut aussi modifier le +poids de chaque critère pour établir son importance +relative. La somme des erreurs correspond à la somme +pondérée des éléments manquants. Il n'est +pas nécessaire que la distribution des poids soit +linéaire. Par exemple, pour dix énoncés les notes +pourraient être : 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%, 0%, 0%. +Le +correcteur peut toujours faire une révision des notes +suggérées pouvant aller jusqu'à 20%.
                                  +
                                6. +
                                7. Niveaux d'atteinte global des objectifs. Le professeur +fournit plusieurs énoncés qui décrivent des +niveaux différents d'atteinte des objectifs. Le correcteur doit +choisir l'énoncé qui correspond le plus au travail qui a +été soumis. Les énoncés peuvent +décrire des niveaux successifs ou être indépendants +les uns des autres. Le professeur établit un barème de +correction. Le correcteur peut apporter  une révision des +notes +suggérées pouvant aller jusqu'à 20%.
                                8. +
                                + + diff --git a/lang/fr_ca/help/workshop/gradingsubmissions.html b/lang/fr_ca/help/workshop/gradingsubmissions.html index 6578d4bac97..4da806959ac 100644 --- a/lang/fr_ca/help/workshop/gradingsubmissions.html +++ b/lang/fr_ca/help/workshop/gradingsubmissions.html @@ -1,24 +1,24 @@ - - - - - -

                                Évaluation des travaux d'étudiant

                                -

                                En général, le professeur voudra lui-même -évaluer les travaux soumis par les étudiants. Les -évaluations sont montrées aux étudiants afin de -fournir une rétroaction sur leur travail.

                                -

                                Les notes résultantes de ces évaluations peuvent -être employées de deux manières dans le calcul de -la note finale :

                                -
                                  -
                                • Premièrement, la note elle-même peut être -employée comme composante pondérée de la note -finale.
                                  -
                                • -
                                • Deuxièmement, le professeur a l'option d'utiliser ses -propres notes comme facteur modérateur s'il juge que les notes -accordées par les pairs sont trop hautes ou trop basses.
                                • -
                                - - + + + + + +

                                Évaluation des travaux d'étudiant

                                +

                                En général, le professeur voudra lui-même +évaluer les travaux soumis par les étudiants. Les +évaluations sont montrées aux étudiants afin de +fournir une rétroaction sur leur travail.

                                +

                                Les notes résultantes de ces évaluations peuvent +être employées de deux manières dans le calcul de +la note finale :

                                +
                                  +
                                • Premièrement, la note elle-même peut être +employée comme composante pondérée de la note +finale.
                                  +
                                • +
                                • Deuxièmement, le professeur a l'option d'utiliser ses +propres notes comme facteur modérateur s'il juge que les notes +accordées par les pairs sont trop hautes ou trop basses.
                                • +
                                + + diff --git a/lang/fr_ca/help/workshop/includeself.html b/lang/fr_ca/help/workshop/includeself.html index 2466435aaa6..96344e32eae 100644 --- a/lang/fr_ca/help/workshop/includeself.html +++ b/lang/fr_ca/help/workshop/includeself.html @@ -6,7 +6,7 @@

                                - - - - + + + + diff --git a/lang/fr_ca/help/workshop/includeteachersgrade.html b/lang/fr_ca/help/workshop/includeteachersgrade.html index b62774d3c38..7367ef3d035 100644 --- a/lang/fr_ca/help/workshop/includeteachersgrade.html +++ b/lang/fr_ca/help/workshop/includeteachersgrade.html @@ -1,24 +1,24 @@ - - - - - -

                                Inclure la note du professeur avec celles des -étudiants-correcteurs

                                -

                                Lorsque cette option est activée, les évaluations du -professeur compte double dans le calcul de la note : -premièrement comme évaluation faite par le professeur et -deuxièmement comme évaluation faits par un -étudiant-correcteur (ses évaluations étant aussi -ajoutées aux évaluations des -étudiants-correcteurs). Le professeur peut décider d'agir -ainsi parce que :

                                -
                                  -
                                • le nombre d'évaluations par les étudiants est trop -bas -
                                • -
                                • les évaluations des étudiants semblent -biaisées ou peu fiables.
                                • -
                                - - + + + + + +

                                Inclure la note du professeur avec celles des +étudiants-correcteurs

                                +

                                Lorsque cette option est activée, les évaluations du +professeur compte double dans le calcul de la note : +premièrement comme évaluation faite par le professeur et +deuxièmement comme évaluation faits par un +étudiant-correcteur (ses évaluations étant aussi +ajoutées aux évaluations des +étudiants-correcteurs). Le professeur peut décider d'agir +ainsi parce que :

                                +
                                  +
                                • le nombre d'évaluations par les étudiants est trop +bas +
                                • +
                                • les évaluations des étudiants semblent +biaisées ou peu fiables.
                                • +
                                + + diff --git a/lang/fr_ca/help/workshop/index.html b/lang/fr_ca/help/workshop/index.html index cbd6f2b8a43..2c7faa7ac98 100644 --- a/lang/fr_ca/help/workshop/index.html +++ b/lang/fr_ca/help/workshop/index.html @@ -1,76 +1,76 @@ - - - - - -

                                Module Atelier
                                -

                                - - - + + + + + +

                                Module Atelier
                                +

                                + + + diff --git a/lang/fr_ca/help/workshop/leaguetable.html b/lang/fr_ca/help/workshop/leaguetable.html index 1a57279208e..493c92e36e9 100644 --- a/lang/fr_ca/help/workshop/leaguetable.html +++ b/lang/fr_ca/help/workshop/leaguetable.html @@ -1,20 +1,20 @@ - - - - - -

                                La ligue des meilleurs travaux

                                -

                                Le Tableau de la ligue -dénombre les meilleurs travaux produits dans l'atelier. Le -nombre de travaux affichés peut-être ajusté -à zéro, un nombre entre 1 et 20, 50 ou -« tous ». Un zéro désactive -l'affichage du tableau. Tout autre nombre provoque l'affichage du -nombre de travaux choisis. « Tous » affiche tous -les travaux.

                                -

                                La deuxième option détermine si les noms des -étudiants sont affichés ou non dans le tableau. -Lorsqu'activée, les étudiants verront une liste anonyme, -tandis que le professeur voit toujours les noms des étudiants.

                                - - + + + + + +

                                La ligue des meilleurs travaux

                                +

                                Le Tableau de la ligue +dénombre les meilleurs travaux produits dans l'atelier. Le +nombre de travaux affichés peut-être ajusté +à zéro, un nombre entre 1 et 20, 50 ou +« tous ». Un zéro désactive +l'affichage du tableau. Tout autre nombre provoque l'affichage du +nombre de travaux choisis. « Tous » affiche tous +les travaux.

                                +

                                La deuxième option détermine si les noms des +étudiants sont affichés ou non dans le tableau. +Lorsqu'activée, les étudiants verront une liste anonyme, +tandis que le professeur voit toujours les noms des étudiants.

                                + + diff --git a/lang/fr_ca/help/workshop/managing.html b/lang/fr_ca/help/workshop/managing.html index 68f05c93b6e..b4c03c2dd84 100644 --- a/lang/fr_ca/help/workshop/managing.html +++ b/lang/fr_ca/help/workshop/managing.html @@ -1,188 +1,188 @@ - - - - - -

                                Gestion d'un atelier

                                -

                                Un atelier est plus complexe qu'une activité ordinaire. Le -professeur après avoir créé l'atelier et choisit -ses paramètres, gère son déroulement en activant -tour à tour les différentes étapes (ou phases) de -cet atelier :

                                -
                                  -
                                1. -

                                  Créer l'atelier La première étape -est automatiquement activée lors de la création de -l'atelier. Le professeur a décidé des paramètres -de l'atelier et il doit maintenant fournir les critères ou les -énoncés qui serviront à l'évaluation des -travaux qui seront soumis par les étudiants. L'évaluation -sera donc moins arbitraire et plus équitable en donnant aux -étudiants un cadre de référence pour corriger les -travaux de leurs pairs. Le professeur a la responsabilité de -fournir la grille et le barème de correction (voir l'aide -à ce sujet pour plus de détails).

                                  -

                                  Le professeur présente par la suite des -échantillons de travaux pour servir d'exemples et de -contre-exemples. Les étudiants devront les évaluer afin -de s'approprier les critères d'évaluation avant de -créer et de soumettre leurs propres travaux. Cependant, avant -que les étudiants ne puissent soumettre leurs travaux, le -professeur devrait évaluer lui-même ces exemples. Ceci -fournira au professeur des spécimens de réponses -lorsqu'il évaluera les évaluations de ces exemples faites -par les étudiants (produites dans la phase suivante).

                                  -

                                  Le professeur n'est pas obligé de fournir des exemples de -travaux. Dans certains cas, cela pourrait même se -révéler inapproprié.

                                  -
                                2. -
                                3. -

                                  Permettre la soumission de travaux aux étudiants -Le travail peut maintenant débuter pour les étudiants. Si -le professeur a fourni des exemples de travaux, les étudiants -devront en évaluer un certain nombre (selon un des -paramètres de l'atelier). Une fois qu'un étudiant a -corrigé le nombre d'exemples requis, il peut alors soumettre son -propre travail. S'il n'y a pas d'exemples à corriger, les -étudiants peuvent dès lors soumettre leurs travaux.

                                  -

                                  Il est préférable de laisser l'atelier dans cette -phase pendant un certain temps afin de recueillir un nombre suffisant -de travaux pour en assurer une meilleure distribution auprès des -étudiants-correcteurs. Les travaux seront distribués dans -les deux phases suivantes. Si le travail passe sans délai dans -la phase « Permettre les soumissions et les -évaluations aux étudiants» (cela est permis), -les étudiants qui soumettent leurs travaux en premier auront ces -premiers travaux à corriger, tandis que les étudiants qui -seront les derniers à soumettre leurs travaux auront ceux-ci -à corriger. Ce délai règle en grande partie ce -problème.

                                  -

                                  Lorsqu'un étudiant soumet un travail, le professeur peut, -s'il le désire, évaluer ce travail. Cette -évaluation peut être incorporée à la note -finale de l'étudiant. Ces évaluations peuvent avoir lieu -dans les phases de soumission et d'évaluation du travail. Les -évaluations du professeur faites après le calcul des -notes finales ne seront évidemment pas considérées.

                                  -
                                4. -
                                5. -

                                  Permettre les soumissions et les évaluations aux -étudiantsSi le professeur a inclus l'évaluation par -les pairs pour l'atelier, les étudiants qui ont soumis leur -travail ont alors accès aux travaux de leurs pairs pour qu'ils -puissent en faire l'évaluation. Les autres étudiants -peuvent soumettre leur travail, mais sans voir les travaux des -autres. Dans cette phase, les étudiants peuvent soumettre -plusieurs versions de leur travail, chaque version peut être -corrigée, le travail soumis de nouveau, le travail -recorrigé, et ainsi de suite.

                                  -

                                  Le professeur peut séparer la soumission du travail et -son évaluation par les pairs en deux phases distinctes. La -première phase permet à tous les étudiants de -soumettre leur travail avant une date d'échéance. Par la -suite, tous les travaux ayant été reçus, la phase -d'évaluation peut débuter. Cette stratégie rend -inutile la phase actuelle « Permettre les soumissions et les -évaluations aux étudiants » puisqu'on va alors -de l'étape « Permettre les soumissions » -à l'étape « Permettre les -évaluations ».

                                  -

                                  Par contre si le professeur ne désire pas cette -distinction, alors on utilise l'étape actuelle où les -soumissions et les évaluations sont faites à la -même étape. Le professeur devrait ajuster le nombre de -travaux à corriger à 1 ou 2 pour permettre une meilleure -attribution des travaux (voir les paramètres de l'atelier pour -plus de détails). Notez cela entraînera que certains -travaux seront corrigés plus souvent par des -étudiants-correcteurs et que d'autres moins souvent que la -majorité des travaux.

                                  -

                                  Lorsque son travail a été évalué par -un pair, l'étudiant peut alors consulter cette -évaluation. Il a le loisir de la commenter si le professeur a -activé ce paramètre de l'atelier. De plus, le professeur -peut évaluer les évaluations faites par les -étudiants-correcteurs et la note ainsi obtenue pourrait servir -au calcul de la note finale (voir l'aide sur le calcul de la note -finale).

                                  -
                                6. -
                                7. -

                                  Permettre l'évaluation par les pairs Dans cette -phase, les étudiants peuvent continuer à corriger les -travaux de leurs pairs, mais ils ne peuvent soumettre leur travail ou -d'autres versions de leur travail. Les étudiants qui n'ont pas -encore soumis leur travail et qui essaient de le faire verront un -message indiquant que cela n'est plus possible. Par conséquent, ils -ne pourront corriger de travaux de leurs pairs.

                                  -

                                  S'il le désire, le professeur peut continuer à -évaluer les évaluations des étudiants-correcteurs -et les notes serviront aux calculs de la note finale. Dans beaucoup de -cas, cela n'est pas vraiment nécessaire : voyez la phase -suivante.

                                  -
                                8. -
                                9. -

                                  Calculer les notes finales Une fois que -l'échéance pour l'évaluation des travaux par les -étudiants-correcteurs est atteinte, le professeur déplace -l'atelier à l'étape suivante où les -étudiants ne peuvent plus évaluer des travaux. Le -professeur peut, lui, compléter l'évaluation (1) des -évaluations de ses exemples faites par les étudiants, (2) -des travaux des étudiants et (3) des évaluations des -travaux faites par les étudiants-correcteurs. Cette -dernière évaluation n'est pas vraiment nécessaire -si le nombre d'évaluation par les pairs de chaque travail est -suffisant, puisqu'alors les notes automatiquement accordées -représentant la qualité des évaluations seront -représentatives.

                                  -

                                  Le professeur calcule les notes finales des étudiants -lorsque toutes les évaluations sont terminées. Ces notes -se comportent trois composantes : la note accordée par le -professeur, la moyenne des notes accordées par les pairs et une -note représentant la qualité des évaluations -faites par l'étudiant-correcteur. Cette dernière note -peut inclure une « note moyenne » entrée par le -professeur en conséquence des commentaires de l'étudiant -dans ses évaluations. Le professeur accorde un poids à -chaque composante de la note avant que le calcul soit effectué.

                                  -
                                10. -
                                11. -

                                  Afficher les notes finales La phase finale de l'atelier -permet aux étudiants de voir leurs notes finales. Toutefois, le -professeur peut revenir à une étape -précédente pour, par exemple, réviser les poids -des composantes des notes. Les étudiants verront alors les notes -révisées.

                                  -

                                  Les étudiants et le professeur voient également un -tableau de la ligue qui dénombre les meilleurs travaux produits -dans l'atelier. Ils sont affichés selon les notes obtenues, le -meilleur travail étant placé au début du tableau. -Les notes dans ce tableau se composent des notes accordées par -le professeur et de la moyenne des notes accordées par les -pairs. Les notes sont pondérées selon les poids -accordés à l'étape précédente.

                                  -
                                12. -
                                -

                                Le professeur peut à tout moment ouvrir la page pour la gestion de l'atelier -pour y voir l'état actuel de l'atelier et ainsi en suivre les -progrès. On y retrouve :
                                -

                                -
                                  -
                                • la liste des exemples du professeur,
                                • -
                                • la liste des évaluations par les étudiants
                                  -
                                • -
                                    -
                                  • des exemples du professeur,
                                    -
                                  • -
                                  • de leur propre travail
                                  • -
                                  • des travaux de leurs pairs,
                                  • -
                                  -
                                • la liste des travaux soumis par les étudiants.
                                  -
                                • -
                                -À partir de cette page, le professeur peut évaluer et -réévaluer les travaux, noter et renoter les -évaluations, effacer des travaux et des évaluations. - - + + + + + +

                                Gestion d'un atelier

                                +

                                Un atelier est plus complexe qu'une activité ordinaire. Le +professeur après avoir créé l'atelier et choisit +ses paramètres, gère son déroulement en activant +tour à tour les différentes étapes (ou phases) de +cet atelier :

                                +
                                  +
                                1. +

                                  Créer l'atelier La première étape +est automatiquement activée lors de la création de +l'atelier. Le professeur a décidé des paramètres +de l'atelier et il doit maintenant fournir les critères ou les +énoncés qui serviront à l'évaluation des +travaux qui seront soumis par les étudiants. L'évaluation +sera donc moins arbitraire et plus équitable en donnant aux +étudiants un cadre de référence pour corriger les +travaux de leurs pairs. Le professeur a la responsabilité de +fournir la grille et le barème de correction (voir l'aide +à ce sujet pour plus de détails).

                                  +

                                  Le professeur présente par la suite des +échantillons de travaux pour servir d'exemples et de +contre-exemples. Les étudiants devront les évaluer afin +de s'approprier les critères d'évaluation avant de +créer et de soumettre leurs propres travaux. Cependant, avant +que les étudiants ne puissent soumettre leurs travaux, le +professeur devrait évaluer lui-même ces exemples. Ceci +fournira au professeur des spécimens de réponses +lorsqu'il évaluera les évaluations de ces exemples faites +par les étudiants (produites dans la phase suivante).

                                  +

                                  Le professeur n'est pas obligé de fournir des exemples de +travaux. Dans certains cas, cela pourrait même se +révéler inapproprié.

                                  +
                                2. +
                                3. +

                                  Permettre la soumission de travaux aux étudiants +Le travail peut maintenant débuter pour les étudiants. Si +le professeur a fourni des exemples de travaux, les étudiants +devront en évaluer un certain nombre (selon un des +paramètres de l'atelier). Une fois qu'un étudiant a +corrigé le nombre d'exemples requis, il peut alors soumettre son +propre travail. S'il n'y a pas d'exemples à corriger, les +étudiants peuvent dès lors soumettre leurs travaux.

                                  +

                                  Il est préférable de laisser l'atelier dans cette +phase pendant un certain temps afin de recueillir un nombre suffisant +de travaux pour en assurer une meilleure distribution auprès des +étudiants-correcteurs. Les travaux seront distribués dans +les deux phases suivantes. Si le travail passe sans délai dans +la phase « Permettre les soumissions et les +évaluations aux étudiants» (cela est permis), +les étudiants qui soumettent leurs travaux en premier auront ces +premiers travaux à corriger, tandis que les étudiants qui +seront les derniers à soumettre leurs travaux auront ceux-ci +à corriger. Ce délai règle en grande partie ce +problème.

                                  +

                                  Lorsqu'un étudiant soumet un travail, le professeur peut, +s'il le désire, évaluer ce travail. Cette +évaluation peut être incorporée à la note +finale de l'étudiant. Ces évaluations peuvent avoir lieu +dans les phases de soumission et d'évaluation du travail. Les +évaluations du professeur faites après le calcul des +notes finales ne seront évidemment pas considérées.

                                  +
                                4. +
                                5. +

                                  Permettre les soumissions et les évaluations aux +étudiantsSi le professeur a inclus l'évaluation par +les pairs pour l'atelier, les étudiants qui ont soumis leur +travail ont alors accès aux travaux de leurs pairs pour qu'ils +puissent en faire l'évaluation. Les autres étudiants +peuvent soumettre leur travail, mais sans voir les travaux des +autres. Dans cette phase, les étudiants peuvent soumettre +plusieurs versions de leur travail, chaque version peut être +corrigée, le travail soumis de nouveau, le travail +recorrigé, et ainsi de suite.

                                  +

                                  Le professeur peut séparer la soumission du travail et +son évaluation par les pairs en deux phases distinctes. La +première phase permet à tous les étudiants de +soumettre leur travail avant une date d'échéance. Par la +suite, tous les travaux ayant été reçus, la phase +d'évaluation peut débuter. Cette stratégie rend +inutile la phase actuelle « Permettre les soumissions et les +évaluations aux étudiants » puisqu'on va alors +de l'étape « Permettre les soumissions » +à l'étape « Permettre les +évaluations ».

                                  +

                                  Par contre si le professeur ne désire pas cette +distinction, alors on utilise l'étape actuelle où les +soumissions et les évaluations sont faites à la +même étape. Le professeur devrait ajuster le nombre de +travaux à corriger à 1 ou 2 pour permettre une meilleure +attribution des travaux (voir les paramètres de l'atelier pour +plus de détails). Notez cela entraînera que certains +travaux seront corrigés plus souvent par des +étudiants-correcteurs et que d'autres moins souvent que la +majorité des travaux.

                                  +

                                  Lorsque son travail a été évalué par +un pair, l'étudiant peut alors consulter cette +évaluation. Il a le loisir de la commenter si le professeur a +activé ce paramètre de l'atelier. De plus, le professeur +peut évaluer les évaluations faites par les +étudiants-correcteurs et la note ainsi obtenue pourrait servir +au calcul de la note finale (voir l'aide sur le calcul de la note +finale).

                                  +
                                6. +
                                7. +

                                  Permettre l'évaluation par les pairs Dans cette +phase, les étudiants peuvent continuer à corriger les +travaux de leurs pairs, mais ils ne peuvent soumettre leur travail ou +d'autres versions de leur travail. Les étudiants qui n'ont pas +encore soumis leur travail et qui essaient de le faire verront un +message indiquant que cela n'est plus possible. Par conséquent, ils +ne pourront corriger de travaux de leurs pairs.

                                  +

                                  S'il le désire, le professeur peut continuer à +évaluer les évaluations des étudiants-correcteurs +et les notes serviront aux calculs de la note finale. Dans beaucoup de +cas, cela n'est pas vraiment nécessaire : voyez la phase +suivante.

                                  +
                                8. +
                                9. +

                                  Calculer les notes finales Une fois que +l'échéance pour l'évaluation des travaux par les +étudiants-correcteurs est atteinte, le professeur déplace +l'atelier à l'étape suivante où les +étudiants ne peuvent plus évaluer des travaux. Le +professeur peut, lui, compléter l'évaluation (1) des +évaluations de ses exemples faites par les étudiants, (2) +des travaux des étudiants et (3) des évaluations des +travaux faites par les étudiants-correcteurs. Cette +dernière évaluation n'est pas vraiment nécessaire +si le nombre d'évaluation par les pairs de chaque travail est +suffisant, puisqu'alors les notes automatiquement accordées +représentant la qualité des évaluations seront +représentatives.

                                  +

                                  Le professeur calcule les notes finales des étudiants +lorsque toutes les évaluations sont terminées. Ces notes +se comportent trois composantes : la note accordée par le +professeur, la moyenne des notes accordées par les pairs et une +note représentant la qualité des évaluations +faites par l'étudiant-correcteur. Cette dernière note +peut inclure une « note moyenne » entrée par le +professeur en conséquence des commentaires de l'étudiant +dans ses évaluations. Le professeur accorde un poids à +chaque composante de la note avant que le calcul soit effectué.

                                  +
                                10. +
                                11. +

                                  Afficher les notes finales La phase finale de l'atelier +permet aux étudiants de voir leurs notes finales. Toutefois, le +professeur peut revenir à une étape +précédente pour, par exemple, réviser les poids +des composantes des notes. Les étudiants verront alors les notes +révisées.

                                  +

                                  Les étudiants et le professeur voient également un +tableau de la ligue qui dénombre les meilleurs travaux produits +dans l'atelier. Ils sont affichés selon les notes obtenues, le +meilleur travail étant placé au début du tableau. +Les notes dans ce tableau se composent des notes accordées par +le professeur et de la moyenne des notes accordées par les +pairs. Les notes sont pondérées selon les poids +accordés à l'étape précédente.

                                  +
                                12. +
                                +

                                Le professeur peut à tout moment ouvrir la page pour la gestion de l'atelier +pour y voir l'état actuel de l'atelier et ainsi en suivre les +progrès. On y retrouve :
                                +

                                +
                                  +
                                • la liste des exemples du professeur,
                                • +
                                • la liste des évaluations par les étudiants
                                  +
                                • +
                                    +
                                  • des exemples du professeur,
                                    +
                                  • +
                                  • de leur propre travail
                                  • +
                                  • des travaux de leurs pairs,
                                  • +
                                  +
                                • la liste des travaux soumis par les étudiants.
                                  +
                                • +
                                +À partir de cette page, le professeur peut évaluer et +réévaluer les travaux, noter et renoter les +évaluations, effacer des travaux et des évaluations. + + diff --git a/lang/fr_ca/help/workshop/mods.html b/lang/fr_ca/help/workshop/mods.html index fcb1e431459..f3a63f46b1c 100644 --- a/lang/fr_ca/help/workshop/mods.html +++ b/lang/fr_ca/help/workshop/mods.html @@ -5,6 +5,6 @@
                            - - - + + + diff --git a/lang/fr_ca/help/workshop/nassessmentsofstudentsubmissions.html b/lang/fr_ca/help/workshop/nassessmentsofstudentsubmissions.html index 1eb30fe0960..0a63a1b03ef 100644 --- a/lang/fr_ca/help/workshop/nassessmentsofstudentsubmissions.html +++ b/lang/fr_ca/help/workshop/nassessmentsofstudentsubmissions.html @@ -1,23 +1,23 @@ - - - - - -

                            Nombre d'évaluations de travaux -d'étudiants à faire par les étudiants

                            -

                            Ce nombre détermine le nombre d'évaluations que chaque -étudiant aura à faire des travaux des autres -étudiants. Tout autre nombre que zéro indique le nombre -d'évaluations à faire. Après l'évaluation, -l'auteur du travail peut consulter les commentaires et optionnellement -la note accordée par ses pairs. Le processus d'évaluation -par les pairs peut être itératif si le professeur a choisi -qu'il doive y avoir un accord entre l'auteur du travail et son -correcteur. Le professeur peut également évaluer ces -évaluations et ces notes peuvent être employées -dans le calcul des notes finales. L'étudiant peut aussi -consulter les commentaires et la note accordée par le professeur -pour chaque évaluation qu'il a faite si elles sont disponibles. -

                            - - + + + + + +

                            Nombre d'évaluations de travaux +d'étudiants à faire par les étudiants

                            +

                            Ce nombre détermine le nombre d'évaluations que chaque +étudiant aura à faire des travaux des autres +étudiants. Tout autre nombre que zéro indique le nombre +d'évaluations à faire. Après l'évaluation, +l'auteur du travail peut consulter les commentaires et optionnellement +la note accordée par ses pairs. Le processus d'évaluation +par les pairs peut être itératif si le professeur a choisi +qu'il doive y avoir un accord entre l'auteur du travail et son +correcteur. Le professeur peut également évaluer ces +évaluations et ces notes peuvent être employées +dans le calcul des notes finales. L'étudiant peut aussi +consulter les commentaires et la note accordée par le professeur +pour chaque évaluation qu'il a faite si elles sont disponibles. +

                            + + diff --git a/lang/fr_ca/help/workshop/nassessmentsofteachersexamples.html b/lang/fr_ca/help/workshop/nassessmentsofteachersexamples.html index 1f94f42e863..91ee83e82c2 100644 --- a/lang/fr_ca/help/workshop/nassessmentsofteachersexamples.html +++ b/lang/fr_ca/help/workshop/nassessmentsofteachersexamples.html @@ -1,9 +1,9 @@

                            Nombre d'évaluations des exemples du professeur à faire par les étudiants

                            -

                            Ce nombre détermine le nombre d'évaluations que chaque étudiant aura à faire des exemples de travaux fournis par le professeur avant qu'il puisse soumettre son propre travail. Tout autre nombre que zéro indique le nombre d'évaluations à faire. Le professeur peut également évaluer ces évaluations et ces notes peuvent être employées dans le calcul des notes finales. L'étudiant peut consulter les commentaires du professeur, mais ne pourra voir la note obtenue avant que la date d'échéance pour la remise des travaux ne soit atteinte. +

                            Ce nombre détermine le nombre d'évaluations que chaque étudiant aura à faire des exemples de travaux fournis par le professeur avant qu'il puisse soumettre son propre travail. Tout autre nombre que zéro indique le nombre d'évaluations à faire. Le professeur peut également évaluer ces évaluations et ces notes peuvent être employées dans le calcul des notes finales. L'étudiant peut consulter les commentaires du professeur, mais ne pourra voir la note obtenue avant que la date d'échéance pour la remise des travaux ne soit atteinte.

                            - - - + + + diff --git a/lang/fr_ca/help/workshop/nelements.html b/lang/fr_ca/help/workshop/nelements.html index 7c492500bd0..73f76d409c2 100644 --- a/lang/fr_ca/help/workshop/nelements.html +++ b/lang/fr_ca/help/workshop/nelements.html @@ -4,7 +4,7 @@

                            Tous les formulaires d'évaluation prévoient un espace pour fournir un commentaire d'ordre général sur le travail. Lorsque la stratégie d'évaluation est formative, c'est-à-dire, qu'aucune note n’est accordée pour le travail, le nombre que vous inscrivez correspond au nombre de commentaires particuliers que pourra faire le correcteur. Si vous indiquez zéro, il n'y aura qu'un espace pour le commentaire général.

                            - - - - + + + + diff --git a/lang/fr_ca/help/workshop/numberofassessors.html b/lang/fr_ca/help/workshop/numberofassessors.html index ea08879c395..a406971f021 100644 --- a/lang/fr_ca/help/workshop/numberofassessors.html +++ b/lang/fr_ca/help/workshop/numberofassessors.html @@ -9,10 +9,10 @@

                            - - - - - - - + + + + + + + diff --git a/lang/fr_ca/help/workshop/overallocation.html b/lang/fr_ca/help/workshop/overallocation.html index a16186ee090..0357e86eb35 100644 --- a/lang/fr_ca/help/workshop/overallocation.html +++ b/lang/fr_ca/help/workshop/overallocation.html @@ -5,9 +5,9 @@

                            Naturellement, on désire un niveau d'attribution équilibré. Toutefois, cela présente le désavantage que certains étudiants n'auront reçu leur quote-part de travaux à évaluer que lorsque tous les étudiants auront remis leurs travaux. Cette attente peut être grandement réduite en permettant un niveau de déséquilibre de un. L'attente des travaux en retard devrait être encore plus rare quand le niveau est placé à DEUX.

                            Ainsi, dans un atelier où le nombre d'évaluations par les pairs est de cinq et que cela ne pose pas de problèmes que des travaux soient évalués quatre, cinq ou six fois, alors les corrections se dérouleront correctement sans trop d'attente si le niveau est de UN.

                            - - - - - - + + + + + + diff --git a/lang/fr_ca/help/workshop/resubmit.html b/lang/fr_ca/help/workshop/resubmit.html index 602d914badb..8afce45eb6c 100644 --- a/lang/fr_ca/help/workshop/resubmit.html +++ b/lang/fr_ca/help/workshop/resubmit.html @@ -7,10 +7,10 @@

                            La version du travail ayant obtenu la plus haute note sera utilisée dans le calcul de la note finale. On rappelle que les notes de toutes les versions résultent de la combinaison pondérée de la note du professeur et de la note des pairs (lorsqu'elles sont disponibles).

                            - - - - - - - + + + + + + + diff --git a/lang/fr_ca/help/workshop/selfassessment.html b/lang/fr_ca/help/workshop/selfassessment.html index bf9b595837f..e85c4109ac5 100644 --- a/lang/fr_ca/help/workshop/selfassessment.html +++ b/lang/fr_ca/help/workshop/selfassessment.html @@ -6,7 +6,7 @@

                            - - - - + + + + diff --git a/lang/fr_ca/help/workshop/showinggrades.html b/lang/fr_ca/help/workshop/showinggrades.html index 70188be4382..9053a09c184 100644 --- a/lang/fr_ca/help/workshop/showinggrades.html +++ b/lang/fr_ca/help/workshop/showinggrades.html @@ -6,7 +6,7 @@

                            - - - - + + + + diff --git a/lang/fr_ca/help/workshop/specimen.html b/lang/fr_ca/help/workshop/specimen.html index c0ed2e65f36..c3b554a97e0 100644 --- a/lang/fr_ca/help/workshop/specimen.html +++ b/lang/fr_ca/help/workshop/specimen.html @@ -1,24 +1,24 @@ - - - - - -

                            Exemple de formulaire d'évaluation

                            -

                            Cette page montre un exemple de formulaire qui sera utilisé -pour l'évaluation de votre travail. Ce formulaire sera -employé par :
                            -

                            -
                              -
                            • le professeur s'il évalue votre travail -
                            • -
                            • vous-même si le professeur demande une -autoévaluation de votre travail -
                            • -
                            • un certain nombre d'étudiants si le professeur a -décidé d'utiliser l'évaluation par les pairs.
                            • -
                            -

                            Veuillez noter que bien que vous puissiez changer les notes sur ce -formulaire, ces changements ne seront pas sauvegardés. Ceci est -simplement un exemple de formulaire.

                            - - + + + + + +

                            Exemple de formulaire d'évaluation

                            +

                            Cette page montre un exemple de formulaire qui sera utilisé +pour l'évaluation de votre travail. Ce formulaire sera +employé par :
                            +

                            +
                              +
                            • le professeur s'il évalue votre travail +
                            • +
                            • vous-même si le professeur demande une +autoévaluation de votre travail +
                            • +
                            • un certain nombre d'étudiants si le professeur a +décidé d'utiliser l'évaluation par les pairs.
                            • +
                            +

                            Veuillez noter que bien que vous puissiez changer les notes sur ce +formulaire, ces changements ne seront pas sauvegardés. Ceci est +simplement un exemple de formulaire.

                            + + diff --git a/lang/fr_ca/help/workshop/submissionofexamples.html b/lang/fr_ca/help/workshop/submissionofexamples.html index 3bee5adaf5a..cbc1d8457f3 100644 --- a/lang/fr_ca/help/workshop/submissionofexamples.html +++ b/lang/fr_ca/help/workshop/submissionofexamples.html @@ -8,10 +8,10 @@

                            - - - - - - - + + + + + + + diff --git a/lang/fr_ca/help/workshop/teachersgradings.html b/lang/fr_ca/help/workshop/teachersgradings.html index a1282709568..247db3ceedf 100644 --- a/lang/fr_ca/help/workshop/teachersgradings.html +++ b/lang/fr_ca/help/workshop/teachersgradings.html @@ -1,6 +1,6 @@

                            Affichage des notes du professeur

                            -

                            +

                            On peut décider d'afficher ou non les notes et les commentaires du professeur résultant des évaluations. Les étudiants pourront les consulter après la date d'échéance s'ils sont disponibles ou plus tard, lorsque la correction sera terminée. Les commentaires et les notes du professeur peuvent grandement aider les étudiants lorsque ceux-ci corrigeront les travaux de leurs pairs.

                            Notez que même lorsque l'évaluation par les pairs est anonyme, les notes du professeur sont toujours montrées aux étudiants avec le nom et la photo du professeur si disponbiles. @@ -8,6 +8,6 @@ On peut d

                            - - - + + + diff --git a/lang/fr_ca/help/workshop/ungradedassessments_student.html b/lang/fr_ca/help/workshop/ungradedassessments_student.html index 18c9cdbb921..780b65c5800 100644 --- a/lang/fr_ca/help/workshop/ungradedassessments_student.html +++ b/lang/fr_ca/help/workshop/ungradedassessments_student.html @@ -4,7 +4,7 @@

                            - - - - + + + + diff --git a/lang/fr_ca/help/workshop/ungradedassessments_teacher.html b/lang/fr_ca/help/workshop/ungradedassessments_teacher.html index 0932f9dbde8..8c6d5d8ab37 100644 --- a/lang/fr_ca/help/workshop/ungradedassessments_teacher.html +++ b/lang/fr_ca/help/workshop/ungradedassessments_teacher.html @@ -4,7 +4,7 @@

                            Il n'est pas nécessaire d'évaluer ces évaluations, car les étudiants pourront quand même soumettre leurs travaux. On recommande toutefois qu'au moins quelques évaluations de chaque étudiant soient corrigées par le professeur afin d'aider l'étudiant comme il a été mentionné ci-dessus.

                            - - - - + + + + diff --git a/lang/fr_ca/help/writing.html b/lang/fr_ca/help/writing.html index c5c2dafc592..5d5a1d00f3a 100644 --- a/lang/fr_ca/help/writing.html +++ b/lang/fr_ca/help/writing.html @@ -1,21 +1,21 @@ -

                            Rédaction d'un texte

                            - -

                            Adressez-vous directement à vos lecteurs lorsque vous rédigez un texte.

                            - -

                            Expliquez vos idées clairement et simplement pour que vos textes soient bien compris. -Utilisez plutôt des mots courts et évitez les phrases longues.

                            - -

                            Assurez-vous que vos messages dans les forums soient courts et qu'ils traitent bien du sujet. Il est préférable -de poster plusieurs messages, dans les bons forums, que d'écrire un seul message qui touche à tout.

                            - -

                            Travaillez vos textes jusqu'à ce qu'ils soient comme vous le désirez. Pour les messages des forums, vous avez même -maxeditingtime/60) ?> minutes après qu'ils soient postés pour les modifier de nouveau.

                            - -

                            Lorsque vous répondez à un message, essayez de poser des questions pertinentes à votre interlocuteur. - Vous pourrez ainsi réfléchir et apprendre davantage sur le sujet discuté.

                            - - -

                            Informations supplémentaires sur comment poser des questions

                            -

                            Informations supplémentaires sur la lecture

                            - - +

                            Rédaction d'un texte

                            + +

                            Adressez-vous directement à vos lecteurs lorsque vous rédigez un texte.

                            + +

                            Expliquez vos idées clairement et simplement pour que vos textes soient bien compris. +Utilisez plutôt des mots courts et évitez les phrases longues.

                            + +

                            Assurez-vous que vos messages dans les forums soient courts et qu'ils traitent bien du sujet. Il est préférable +de poster plusieurs messages, dans les bons forums, que d'écrire un seul message qui touche à tout.

                            + +

                            Travaillez vos textes jusqu'à ce qu'ils soient comme vous le désirez. Pour les messages des forums, vous avez même +maxeditingtime/60) ?> minutes après qu'ils soient postés pour les modifier de nouveau.

                            + +

                            Lorsque vous répondez à un message, essayez de poser des questions pertinentes à votre interlocuteur. + Vous pourrez ainsi réfléchir et apprendre davantage sur le sujet discuté.

                            + + +

                            Informations supplémentaires sur comment poser des questions

                            +

                            Informations supplémentaires sur la lecture

                            + + diff --git a/lang/fr_ca/journal.php b/lang/fr_ca/journal.php index d28275f45d5..c63e60607f1 100644 --- a/lang/fr_ca/journal.php +++ b/lang/fr_ca/journal.php @@ -1,35 +1,33 @@ -teacher a fait des remarques sur votre entrée dans le journal \'$a->journal\' -Vous pouvez les voirs à : $a->url'; -$string['journalmailhtml'] = '$a->teacher a fait des remarques sur votre entrée dans le journal \'$a->journal\'. Vous pouvez voir url\">ces rermarques ici.'; -$string['journalname'] = 'Nom du journal'; -$string['journalquestion'] = 'Sujet du journal'; -$string['journalrating1'] = 'Insatisfaisant'; -$string['journalrating2'] = 'Satisfaisant'; -$string['journalrating3'] = 'Exceptionnel'; -$string['modulename'] = 'Journal'; -$string['modulenameplural'] = 'Journaux'; -$string['newjournalentries'] = 'Nouvelles entrées dans le journal'; -$string['noentry'] = 'Aucune entrée'; -$string['noratinggiven'] = 'Aucune évaluation fournie'; -$string['notopenuntil'] = 'Ce journal ne sera pas ouvert avant'; -$string['notstarted'] = 'Vous n\'avez pas encore écrit dans ce journal'; -$string['overallrating'] = 'Évaluation générale'; -$string['parentlanguage'] = 'fr'; -$string['rate'] = 'Évaluation'; -$string['saveallfeedback'] = 'Sauvegarder toutes mes rétroactions'; -$string['startoredit'] = 'Commencer ou modifier mon journal'; -$string['thisdirection'] = 'ltr'; -$string['viewallentries'] = 'Voir toutes les entrées dans ce journal'; - -?> +teacher a fait des remarques sur votre entrée dans le journal '\$a->journal' +Vous pouvez les voirs à : \$a->url"; +$string['journalmailhtml'] = "\$a->teacher a fait des remarques sur votre entrée dans le journal '\$a->journal'. Vous pouvez voir url\\\">ces rermarques ici."; +$string['journalname'] = "Nom du journal"; +$string['journalquestion'] = "Sujet du journal"; +$string['journalrating1'] = "Insatisfaisant"; +$string['journalrating2'] = "Satisfaisant"; +$string['journalrating3'] = "Exceptionnel"; +$string['modulename'] = "Journal"; +$string['modulenameplural'] = "Journaux"; +$string['newjournalentries'] = "Nouvelles entrées dans le journal"; +$string['noentry'] = "Aucune entrée"; +$string['noratinggiven'] = "Aucune évaluation fournie"; +$string['notopenuntil'] = "Ce journal ne sera pas ouvert avant"; +$string['notstarted'] = "Vous n'avez pas encore écrit dans ce journal"; +$string['overallrating'] = "Évaluation générale"; +$string['rate'] = "Évaluation"; +$string['saveallfeedback'] = "Sauvegarder toutes mes rétroactions"; +$string['startoredit'] = "Commencer ou modifier mon journal"; +$string['viewallentries'] = "Voir toutes les entrées dans ce journal"; + +?> diff --git a/lang/fr_ca/label.php b/lang/fr_ca/label.php index 036ec71f55f..23a8724e6aa 100644 --- a/lang/fr_ca/label.php +++ b/lang/fr_ca/label.php @@ -1,11 +1,9 @@ - + diff --git a/lang/fr_ca/lesson.php b/lang/fr_ca/lesson.php index fe8aa90ea5d..aa1946382af 100644 --- a/lang/fr_ca/lesson.php +++ b/lang/fr_ca/lesson.php @@ -1,92 +1,67 @@ Voulez-vous commencer à la dernière page que vous avez vue ?'; $string['youranswer'] = 'Votre réponse'; -$string['yourcurrentgradeis'] = 'Votre note actuelle est $a'; -$string['youshouldview'] = 'Vous devriez voir au moins: $a'; ?> diff --git a/lang/fr_ca/mediaplugin.php b/lang/fr_ca/mediaplugin.php index fc0e0384837..c1c32abd65b 100644 --- a/lang/fr_ca/mediaplugin.php +++ b/lang/fr_ca/mediaplugin.php @@ -1,9 +1,7 @@ - + diff --git a/lang/fr_ca/moodle.php b/lang/fr_ca/moodle.php index dca8bfeb2e8..7a57b8bd93e 100644 --- a/lang/fr_ca/moodle.php +++ b/lang/fr_ca/moodle.php @@ -1,1026 +1,878 @@ -$a'; -$string['activityiscurrentlyhidden'] = 'Désolé, cette activité est présentement cachée'; -$string['activitymodule'] = 'Activité du module'; -$string['activityreport'] = 'Rapport d\'activité'; -$string['activityselect'] = 'Choisir l\'activité à déplacer'; -$string['activitysince'] = 'Activiter depuis $a'; -$string['add'] = 'Ajouter'; -$string['addactivity'] = 'Ajouter une activité...'; -$string['addadmin'] = 'Ajouter un administrateur'; -$string['addcreator'] = 'Ajouter un utilisateur pouvant créer des cours'; -$string['added'] = '$a ajoutés'; -$string['addedtogroup'] = 'Ajouté au groupe $a'; -$string['addedtogroupnot'] = 'Pas ajouté au groupe $a'; -$string['addedtogroupnotenrolled'] = 'Pas ajouté au groupe $a parce que pas inscrit au cours'; -$string['addinganew'] = 'Ajouter un(e) $a'; -$string['addinganewto'] = 'Ajouter un $a->what à $a->to'; -$string['addingdatatoexisting'] = 'Ajout de données à'; -$string['addnewcategory'] = 'Ajouter une nouvelle catégorie'; -$string['addnewcourse'] = 'Ajouter un cours'; -$string['addnewuser'] = 'Ajouter un utilisateur'; -$string['addresource'] = 'Ajouter une ressource...'; -$string['address'] = 'Adresse'; -$string['addstudent'] = 'Ajouter un étudiant'; -$string['addteacher'] = 'Ajouter un enseignant'; -$string['admin'] = 'Administrateur'; -$string['adminhelpaddnewuser'] = 'Pour créer manuellement un nouveau compte étudiant'; -$string['adminhelpassignadmins'] = 'L\'administrateur peut tout faire et aller n\'importe où sur ce site'; -$string['adminhelpassigncreators'] = 'Les concepteurs peuvent créer de nouveaux cours et les utiliser'; -$string['adminhelpassignstudents'] = 'Allez dans un cours et ajoutez un étudiant à partir du menu Administration'; -$string['adminhelpassignteachers'] = 'Trouver le cours puis utilisez l\'icône pour ajouter des professeurs'; -$string['adminhelpauthentication'] = 'Vous pouvez utiliser des comptes internes d\'utilisateurs ou une base de données externes'; -$string['adminhelpbackup'] = 'Configurer et planifier les sauvegardes automatiques'; -$string['adminhelpconfiguration'] = 'Configuration de l\'apparence du site et du fonctionnement'; -$string['adminhelpconfigvariables'] = 'Configuration des variables qui affectent l\'opération générale du site'; -$string['adminhelpcourses'] = 'Définition des cours et des catégories et affectation des professeurs aux cours'; -$string['adminhelpeditorsettings'] = 'Définit les paramètres de base pour l\'éditeur HTML'; -$string['adminhelpedituser'] = 'Parcourir la liste des comptes des utilisateurs et édition des comptes'; -$string['adminhelpenrolments'] = 'Choisir des moyens internes ou externes pour contrôler les inscriptions'; -$string['adminhelpfailurelogs'] = 'Parcourir l\'historique des connexions ayant échouées'; -$string['adminhelplanguage'] = 'Vérification et édition du module courant de langue'; -$string['adminhelplogs'] = 'Parcourir les journaux d\'évènements de ce site'; -$string['adminhelpmanageblocks'] = 'Gérer les blocs installés et leurs paramètres'; -$string['adminhelpmanagedatabase'] = 'Accès direct à la base de données (Attention!)'; -$string['adminhelpmanagefilters'] = 'Choisir les filtres de texte et les réglages associés'; -$string['adminhelpmanagemodules'] = 'Gestion des modules d\'activités et de leurs paramètres'; -$string['adminhelpsitefiles'] = 'Publication de fichiers d\'intérêt général ou téléversement de sauvegardes externes'; -$string['adminhelpsitesettings'] = 'Édition de l\'apparence de la page d\'accueil du site'; -$string['adminhelpthemes'] = 'Édition de l\'apparence du site'; -$string['adminhelpuploadusers'] = 'Importer les comptes des nouveaux utilisateurs à partir d\'un fichier texte'; -$string['adminhelpusers'] = 'Définir les utilisateurs et la méthode de vérification des identités'; -$string['administration'] = 'Administration'; -$string['administrator'] = 'Administrateur'; -$string['administrators'] = 'Administrateurs'; -$string['administratorsall'] = 'Tous les administrateurs'; -$string['administratorsandteachers'] = 'Administrateurs et professeurs'; -$string['advancedfilter'] = 'Plus de critères'; -$string['again'] = 'encore'; -$string['all'] = 'Tout'; -$string['allactivities'] = 'Toutes les activités'; -$string['alldays'] = 'Tous les jours'; -$string['allfieldsrequired'] = 'Tous les champs sont requis'; -$string['allgroups'] = 'Tous les groupes'; -$string['alllogs'] = 'Tous les évènements'; -$string['allow'] = 'Autoriser'; -$string['allowguests'] = 'Les visiteurs anonymes sont autorisés dans ce cours'; -$string['allowinternal'] = 'Permettre également les méthodes internes '; -$string['allownot'] = 'Interdire'; -$string['allparticipants'] = 'Tous les participants'; -$string['allteachers'] = 'Tous les professeurs'; -$string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; -$string['alphanumerical'] = 'Seuls les lettres ou chiffres sont autorisés'; -$string['alreadyconfirmed'] = 'L\'enregistrement a déjà été confirmé'; -$string['always'] = 'Toujours'; -$string['answer'] = 'Réponse'; -$string['areyousuretorestorethis'] = 'Désirez-vous continuer?'; -$string['areyousuretorestorethisinfo'] = 'Plus tard dans le processus, vous pourrez choisir d\'ajouter cette sauvegarde à un cours existant ou de créer un cours complètement nouveau'; -$string['assessment'] = 'Appréciation'; -$string['assignadmins'] = 'Choisir les administrateurs'; -$string['assigncreators'] = 'Affecter les utilisateurs pouvant créer des cours'; -$string['assignstudents'] = 'Inscrire les étudiants'; -$string['assignstudentsnote'] = 'Note : il peut être inutile d\'utiliser cette page, puisque les étudiants peuvent s\'inscrire eux-mêmes'; -$string['assignstudentspass'] = 'Vous n\'aurez peut-être qu\'à avertir les étudiants à s\'inscrire eux-mêmes en utilisant la clef d\'inscription $a'; -$string['assignteachers'] = 'Affecter des enseignants'; -$string['authentication'] = 'Authentification'; -$string['autosubscribe'] = 'Forum avec auto-inscription'; -$string['autosubscribeno'] = 'Non : ne pas m\'inscrire automatiquement à ce forum'; -$string['autosubscribeyes'] = 'Oui : lorsque je publie un message, veuillez m\'incrire à ce forum'; -$string['availability'] = 'Disponible'; -$string['availablecourses'] = 'Cours disponibles'; -$string['backup'] = 'Sauvegarde'; -$string['backupcoursefileshelp'] = 'Les fichiers du cours seront inclus dans la sauvegarde automatique lorsque que cette option est validée.'; -$string['backupdate'] = 'Date de la sauvegarde'; -$string['backupdetails'] = 'Informations sur les sauvegardes'; -$string['backupfilename'] = 'Sauvegarder'; -$string['backupfinished'] = 'Sauvegarde réussie'; -$string['backupincludemoduleshelp'] = 'Choississez si vous désirez inclure les données des utilisateurs dans les sauvegardes automatiques.'; -$string['backupkeephelp'] = 'Combien de sauvegardes automatiques récentes désirez-vous conserver? Les autres seront effacées.'; -$string['backuplogdetailed'] = 'Historique détaillé de l\'exécution'; -$string['backuploglaststatus'] = 'Dernier historique de l\'exécution'; -$string['backuplogshelp'] = 'Les journaux d\'évènements seront inclus dans les sauvegardes automatiques lorsque cette option est activée.'; -$string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['backupnoneusersinfo'] = 'Avis : Vous avez choisi de sauvegarder aucun utilisateur, alors toutes les sauvegardes des modules se feront sans les données des utilisateurs. Sachez toutefois que les modules \"Atelier\" et \"Exercice\" ne sont pas compatibles avec ce type de sauvegarde, alors ils ont été désactivés complètement.'; -$string['backuporiginalname'] = 'Nom de la sauvegarde'; -$string['backupsavetohelp'] = 'Donnez le parcours complet où vous désirez conserver les sauvegardes ou
                            laissez en blanc pour utiliser le répertoire du cours par défaut.'; -$string['backupuserfileshelp'] = 'Choisissez si vous désirez que les fichiers de l\'utilisateur (par exemple, la photo dans son profil) soient inclus dans les sauvegardes automatiques.'; -$string['backupusershelp'] = 'Choisissez si vous désirez inclure tous les utilisateurs inscrits au serveur ou uniquement les utilisateurs de chaque cours.'; -$string['backupversion'] = 'Version de la sauvegarde'; -$string['blockdeleteconfirm'] = 'Vous allez complètement effacer le bloc \'$a\'. Cela effacera tout dans la base de données qui est relié à ce bloc. Êtes-vous certain que vous désirez continuer?'; -$string['blockdeletefiles'] = 'Toutes les données du bloc \'$a->block\' ont été détruites. Pour compléter cet effacement et empêcher que le bloc se réinstalle, vous devriez effacer le répertoire $a->directory de votre serveur.'; -$string['blocks'] = 'Blocs'; -$string['blocksetup'] = 'Configurer la table des blocs'; -$string['blocksuccess'] = '$a tables ont été correctement configurées'; -$string['bycourseorder'] = 'Ordre dans le cours'; -$string['byname'] = 'par $a'; -$string['cancel'] = 'Annuler'; -$string['categories'] = 'Catégories de cours'; -$string['category'] = 'Catégorie'; -$string['categoryadded'] = 'La catégorie « $a » a été ajoutée'; -$string['categorydeleted'] = 'La catégorie « $a » a été supprimée'; -$string['categoryduplicate'] = 'La catégorie $a existe déjà!'; -$string['changedpassword'] = 'Mot de passe modifié'; -$string['changepassword'] = 'Changer le mot de passe'; -$string['changessaved'] = 'Modifications enregistrées'; -$string['checkingbackup'] = 'Vérification de la sauvegarde'; -$string['checkingcourse'] = 'Vérification du cours'; -$string['checkinginstances'] = 'Vérification des occurences'; -$string['checkingsections'] = 'Vérification des sections'; -$string['checklanguage'] = 'Modifier la traduction '; -$string['choose'] = 'Choisir'; -$string['choosecourse'] = 'Choisir un cours'; -$string['chooseenrolmethod'] = 'Méthode principale d\'inscription'; -$string['chooselivelogs'] = 'Ou regarder l\'activité courante'; -$string['chooselogs'] = 'Choisir les évènements que vous souhaitez consulter'; -$string['choosereportfilter'] = 'Choisissez un filtre pour ce rapport'; -$string['choosetheme'] = 'Choisissez un thème'; -$string['chooseuser'] = 'Choisissez un utilisateur'; -$string['city'] = 'Ville'; -$string['cleaningtempdata'] = 'Effacement des données temporaires'; -$string['clicktochange'] = 'cliquer pour modifier'; -$string['closewindow'] = 'Fermer cette fenêtre'; -$string['comparelanguage'] = 'Comparer et éditer la langue active'; -$string['complete'] = 'Complet'; -$string['configallowunenroll'] = 'L\'option «OUI» permettra aux étudiants de se désinscrire des cours eux-mêmes. Dans le cas contraire, seuls les professeurs et les administrateurs pourront le faire.'; -$string['configallusersaresitestudents'] = 'Est-ce que tous les utilisateurs doivent être considérés comme des étudiants pour les activités qui se trouvent sur la page d\'accueil? Si vous répondez \"Oui\", tous les utilisateurs dont l\'inscription au site est confirmée pourront participer aux activités. Une réponse \"Non\", permettra aux seuls utilisateurs inscrits à au moins un cours de participer. Seulement les administrateurs et les professeurs désignés peuvent agir en tant que professeurs pour les activités de la page d\'accueil.'; -$string['configautologinguests'] = 'Est-ce que les visiteurs doivent être inscrits automatiquement en tant que Visiteur anonyme lorsqu\'ils tentent d\'accéder à un cours?'; -$string['configcachetext'] = 'Ce réglage permet d\'accélérer le temps de réponse des grands sites ou de ceux qui utilisent les filtres. Des copies des textes sont mémorisés pour la durée spécifiée ici. Une valeur trop petite peut allonger légèrement le temps de réponse, mais une valeur trop élevée pourrait engendrer un rafraîchissement des textes pas assez fréquent (avec de nouveaux liens, par exemple).'; -$string['configcountry'] = 'Si vous choisissez un pays ici, il sera proposé par défaut lors de la création de nouveaux comptes. Si vous souhaitez forcer les utilisateurs à choisir un pays, laissez ce champ vide.'; -$string['configdebug'] = 'Si vous activez cette option, le paramètre PHP « error_reporting » sera augmenté afin que les avertissements soient affichés. Ceci est utile essentiellement pour les développeurs.'; -$string['configdeleteunconfirmed'] = 'Si vous utilisez l\'authentification par courriel, c\'est la période pendant laquelle les confirmations des utilisateurs sont acceptées. À l\'échéance de cette période, les comptes non-confirmés sont supprimés.'; -$string['configdigestmailtime'] = 'Les utilisateurs désirant recevoir un courriel contenant tous les messages des forums le recevront quotidiennement. Ce réglage détermine l\'heure de la journée à laquelle le courriel sera envoyé (la tâche cron s\'exécutant immédiatement après cette heure enverra le message).'; -$string['configdisplayloginfailures'] = 'Ceci permet d\'afficher les informations sur les tentatives de connexion des utilisateurs sélectionnés.'; -$string['configenablerssfeeds'] = 'Activation des canaux RSS pour tout le site. Il est également nécessaire d\'activer les canaux RSS dans les différents modules - voyez l\'option Modules sous Administration -> Configuration.'; -$string['configenablerssfeedsdisabled'] = 'Non disponible, car les canaux RSS ne sont pas activés pour le site. Pour les activer, voyez l\'option Paramètres techniques sous Administration -> Configuration.'; -$string['configerrorlevel'] = 'Choisir la quantité d\'avertissement PHP que vous souhaitez voir afficher. « Normal » est généralement le meilleur choix.'; -$string['configextendedusernamechars'] = 'Activez cette option pour permettre aux étudiants d\'utiliser n\'importe quel caractère dans leur nom d\'utilisateur (cette option n\'a aucun effet sur leur nom d\'utilisateur actuel). Par défaut, cette option est désactivée, ce qui restreint les noms d\'utilisateur aux caractères alphanumériques'; -$string['configfilteruploadedfiles'] = 'En activant cette option, vous indiquez à Moodle de filtrer tous les fichiers HTML et textes déposés avant de les afficher.'; -$string['configforcelogin'] = 'Habituellement, il est possible de voir la liste des cours sans se connecter au site. Vous pouvez forcer les utilisateurs à se brancher avant qu\'ils puissent accéder à quoi que ce soit sur votre site Moodle.'; -$string['configforceloginforprofiles'] = 'Activez cette option pour obliger les internautes à se connecter en tant qu\'utilisateur réel (pas invité) pour pouvoir consulter les profils des autres utilisateurs. Cette option est désactivée par défaut. Les étudiants, tout comme les moteurs de recherche, peuvent donc les profils des utilisateurs.'; -$string['configframename'] = 'Si vous afficher Moodle dans un cadre, inscrivez le nom de ce cadre. Sinon, laissez la valeur à «_top». '; -$string['configfullnamedisplay'] = 'Ceci définit comment les noms des utilisateurs sont affichés sous leurs formes complètes. Généralement, on préfère «prénom + nom», mais vous pouvez choisir de cacher les noms de famille ou de suivre les conventions d\'affichage inclues dans le module de langue.'; -$string['configgdversion'] = 'Indiquer la version de la librairie GD qui est installée. La version selectionnée par défaut est celle qui a été détectée. Ne pas modifier cette valeur à moins de savoir réellement ce qu\'il en découle.'; -$string['confightmleditor'] = 'Choisir d\'autoriser ou non l\'utilisation de l\'éditeur HTML intégré. Cependant, même s\'il est activé, il n\'apparaît que si l\'utilisateur utilise un navigateur compatible Internet Explorer 5.5 ou plus. Chaque utilisateur peut également choisir de ne pas l\'activer.'; -$string['configidnumber'] = 'Cette option permet de spécifier si : (a) On ne demandera pas aux utilisateurs un numéro d\'identification; (b) On demandera aux utilisateurs un numéro d\'identification, mais pourront le laisser en blanc; On demandera aux utilisateurs un numéro d\'identification et devront le fournir. Le numéro d\'identification est affiché dans le profil des utilisateurs.'; -$string['configintro'] = 'Cette page permet de configurer un certain nombre de variables de configuration qui permettront à Moodle de fonctionner correctement sur ce serveur. Inutile de trop s\'en inquiéter, les paramètres par défaut devraient, la plupart du temps, convenir et il est toujours possible de revenir plus tard sur cette page pour les modifier.'; -$string['configintroadmin'] = 'Sur cette page, vous devez configurer le compte principal d\'administrateur qui aura le contrôle complet de votre site Moodle. Vous devez vous assurer de choisir un nom d\'utilisateur et un mot de passe sécuritaires en plus d\'une adresse de courriel valide. Vous pourrez créer d\'autres comptes d\'administrateur plus tard.'; -$string['configintrosite'] = 'Cette page vous permet de configurer la page d\'accueil et le nom de ce nouveau site. Vous pouvez revenir ici plus tard pour changer ces -informations dans le menu pour la geston du site.'; -$string['configlang'] = 'Choisir une langue par défaut pour l\'ensemble du site. Les utilisateurs ont la possibilité d\'en choisir une autre plus tard.'; -$string['configlangdir'] = 'La plupart des langues sont écrites de gauche à droite excepté certaines, comme l\'Arabe ou l\'Hébreu, qui le sont de droite à gauche'; -$string['configlanglist'] = 'Laissez en blanc pour permettre aux utilisateurs de choisir n\'importe quelle langue que vous avez de disponible dans cette installation de Moodle. Cependant, vous pouvez raccourcir le menu du choix de la langue en écrivant une liste des codes nécessaires, séparés par une virgule. Par exemple : en, es_es, fr, it'; -$string['configlangmenu'] = 'Choisissez si vous voulez montrer le menu du choix de la langue sur la page d\'accueil, la page pour la connexion, etc. Ceci n\'affecte pas le choix de l\'utilisateur indiqué dans son profil.'; -$string['configlocale'] = 'Choisir un environnement régional pour l\'affichage des dates. Les données de cet environnement doivent être installées sur le serveur. Laisser vide en cas de doute.'; -$string['configloginhttps'] = 'Cette option permet Moodle d\'utiliser le protocole https sécurisé uniquement pour la page de connexion, ce qui fournit une connexion sécurisée. Moodle revient ensuite au protocole normal http pour gagner en vitesse. ATTENTION : ce réglage requiert l\'activation du protocole https sur le serveur web. Sans cela, vous risquez de NE PLUS POUVOIR ACCÉDER À VOTRE SITE.'; -$string['configloglifetime'] = 'Ceci indique la durée pour laquelle vous voulez garder les journaux d\'évènements sur l\'activité des utilisateurs. Les journaux qui sont plus vieux que ce délai sont automatiquement supprimées. Il préférable de maintenir des journaux aussi longs que possible, au cas où vous en auriez besoin. Mais si votre serveur est très occupé vous devriez écourter la durée de vos journaux.'; -$string['configlongtimenosee'] = 'Si les étudiants ne se connectent pas pendant un certain temps, leur inscription aux cours est automatiquement annulée. Ce paramètre donne cette durée.'; -$string['configmaxbytes'] = 'Ceci indique la taille maximale des fichiers qui peuvent être téléversés partout dans le site. Cette valeur est limitée par la valeur PHP upload_max_filesize et la valeur du serveur Apache «LimitRequestBody». Également, la valeur maxbytes limite la gamme des tailles qui peuvent être choisies au niveau de cours ou au niveau du module.'; -$string['configmaxeditingtime'] = 'Ce paramètre indique la durée pendant laquelle les utilisateurs ont la possibilité de modifier un message qu\'ils ont écrit. Habituellement, 30 minutes est une bonne valeur.'; -$string['confignoreplyaddress'] = 'Les courriels sont parfois envoyés au nom d\'un utilisateur (par exemple les messages des forums). L\'adresse de courriel spécifiée ici sera utilisée comme adresse de l\'expéditeur lorsqu\'il n\'est pas souhaitable que les utilisateurs répondent directement à l\'auteur du message (par exemple s\'il ne veut pas que son adresse de courriel soit divulguée).'; -$string['confignotifyloginfailures'] = 'Lorsque les tentatives de connexion sont enregistrées, des notifications peuvent être envoyées par courriel. Qui doit recevoir ces notifications ?'; -$string['confignotifyloginthreshold'] = 'Lorsque les notifications des tentatives de connexion sont activées, combien de tentatives (provenant du même utilisateur ou de la même adresse IP) doivent être notifiées ?'; -$string['configopentogoogle'] = 'Si vous activez cette option, Google pourra entrer dans votre site en tant qu\'utilisateur invité. En outre, les internautes arrivant sur votre site depuis une recherche Google seront automatiquement connectés en tant qu\'utilisateur invité. Cela ne permet cependant un accès transparent qu\'aux cours déjà ouverts aux invités.'; -$string['configproxyhost'] = 'Si le serveur qui héberge le site Moodle a besoin d\'utiliser un serveur mandataire (proxy) (dans le cas, par exemple, où il existe un coupefeu sur le réseau), indiquez ici le nom de ce serveur et son numéro de port. Sinon laisser vide.'; -$string['configsecureforms'] = 'Moodle peut employer un niveau additionnel de sécurité lorsqu\'il accepte des données d\'un formulaire Internet. Si ceci est permis, alors la -variable du HTTP_REFERER du fûreteur est vérifiée contre l\'adresse courante du formulaire. Dans très peu de cas, l\'activation de cette option peut poser des problèmes si l\'utilisateur emploie un parefeu (par exemple Zonealarm) configuré pour désactiver HTTP_REFERER. On remarque alors un blocage sur les formulaires Internet. Si par exemple vos utilisateurs ont des problèmes avec la page d\'ouverture, vous pourriez désactiver cette opion, bien qu\'il pourrait laisser votre site plus vulnérable aux attaques pour le vol des mots de passe. En cas de doute, laissez cette option à «oui».'; -$string['configsessioncookie'] = 'Cette option personnalise le nom du témoin (cookie) utilisé pour les sessions de Moodle. Elle est facultative, et permet d\'exécuter plusieurs instances de Moodle sur le même site.'; -$string['configsessiontimeout'] = 'Lorsqu\'un utilisateur n\'est plus actif, il sera automatiquement déconnecté après le délai indiqué. '; -$string['configshowsiteparticipantslist'] = 'Tous les étudiants et les enseignants de ce site seront affichés dans la liste des participants. Qui doit avoir l\'autorisation de voir cette liste des participants ?'; -$string['configslasharguments'] = 'Les fichiers (images, fichiers téléchargés, etc.) sont transmis via un script qui utilise les « slash arguments ». Cette méthode permet à ces fichiers d\'être plus facilement pris en compte par le système de cache des navigateurs Web, proxy, etc. Cependant certains serveurs PHP n\'autorisent pas cette méthode. Par conséquent il est nécessaire d\'utiliser la première valeur de ce paramètre si des problèmes d\'affichage des fichiers ou images téléchargés sont rencontrés.'; -$string['configsmtphosts'] = 'Indiquer le nom complet d\'un ou plusieurs serveurs SMTP locaux que Moodle devra utiliser pour envoyer des courriels(par exemple, « mail.a.com » ou « mail.a.com;mail.b.com »). Si ce paramètre est laissé vide, Moodle utilisera la méthode par défaut de PHP pour envoyer des émails.'; -$string['configsmtpuser'] = 'Si vous avez indiqué un nom de serveur SMTP ci-dessus et qu\'il requiert une authentification, entrez ici le nom d\'utilisateur et le mot de passe à utiliser.'; -$string['configteacherassignteachers'] = 'Est-ce qu\'on devrait permettre aux professeurs ordinaires d\'affecter d\'autres professeurs dans des cours qu\'ils enseignent ? Si vous choississez «aucun», alors seulement les créateurs et les administrateurs peuvent affecter des professeurs à des cours.'; -$string['configtimezone'] = 'Vous pouvez indiquer ici le fuseau horaire par défaut. Ce n\'est le fuseau horaire par défaut que pour l\'affichage des dates. Chaque utilisateur peut modifier ce réglage dans son propre profil. Si vous choisissez ici « Server Time », Moodle utilisera le réglage par défaut du serveur où il est installé. Si l\'utilisateur choisit « Server time » dans son profil, le réglage spécifié sera alors utilisé pour lui.'; -$string['configunzip'] = 'Indiquer le chemin complet du programme « unzip » (seulement pour Unix). Ce programme est requis pour décompresser des archives zip sur le serveur.'; -$string['configuration'] = 'Configuration'; -$string['configvariables'] = 'Paramètres techniques'; -$string['configwarning'] = 'Faites attention si vous modifiez cette option - les valeurs incorrectes pourraient poser des problèmes.'; -$string['configzip'] = 'Indiquer le chemin complet du programme « zip » (seulement pour Unix). Ce programme est requis pour réaliser des archives zip sur le serveur.'; -$string['confirm'] = 'Confirmé'; -$string['confirmed'] = 'Votre enregistrement a été confirmé'; -$string['confirmednot'] = 'Votre enregistrement n\'a pas été confirmé'; -$string['continue'] = 'Continuer'; -$string['continuetocourse'] = 'Cliquer ici pour entrer dans le cours'; -$string['cookiesenabled'] = 'Votre navigateur doit supporter les témoins (cookies)'; -$string['copy'] = 'copie'; -$string['copyingcoursefiles'] = 'Copie des fichiers du cours'; -$string['copyinguserfiles'] = 'Copie des fichiers des utilisateurs'; -$string['copyingzipfile'] = 'Copie des fichiers compressés'; -$string['copyrightnotice'] = 'Copyright'; -$string['cost'] = 'Coût'; -$string['costdefault'] = 'Coût par défaut'; -$string['country'] = 'Pays'; -$string['course'] = 'Cours'; -$string['courseavailable'] = 'Ce cours est disponible aux étudiants'; -$string['courseavailablenot'] = 'Ce cours n\'est pas disponible aux étudiants'; -$string['coursebackup'] = 'Sauvegarde du cours'; -$string['coursecategories'] = 'Catégories de cours'; -$string['coursecategory'] = 'Catégorie de cours'; -$string['coursecreators'] = 'Concepteurs de cours'; -$string['coursefiles'] = 'Fichiers du cours'; -$string['courseformats'] = 'Formats du cours'; -$string['coursegrades'] = 'Notes du cours'; -$string['courseinfo'] = 'Informations sur le cours'; -$string['courserestore'] = 'Récupération du cours'; -$string['courses'] = 'Cours'; -$string['courseupdates'] = 'Mises à jour du cours'; -$string['courseuploadlimit'] = 'Taille maximale des téléversements'; -$string['create'] = 'Créer'; -$string['createaccount'] = 'Créer mon compte'; -$string['createfolder'] = 'Créer un répertoire dans $a'; -$string['createuserandpass'] = 'Créer un nouveau compte pour vous connecter'; -$string['createziparchive'] = 'Créer une archive zip'; -$string['creatingcategoriesandquestions'] = 'Création des catégories et des questions'; -$string['creatingcoursemodules'] = 'Création des modules du cours'; -$string['creatingevents'] = 'Création des événements'; -$string['creatinggroups'] = 'Création de groupes'; -$string['creatinglogentries'] = 'Création des entrées dans le journal'; -$string['creatingnewcourse'] = 'Création d\'un nouveau cours'; -$string['creatingscales'] = 'Création des échelles'; -$string['creatingsections'] = 'Création des sections'; -$string['creatingtemporarystructures'] = 'Création des structures temporaires'; -$string['creatingusers'] = 'Création des utilisateurs'; -$string['creatingxmlfile'] = 'Création du fichier XML'; -$string['currency'] = 'Devise'; -$string['currentcourseadding'] = 'Création du cours, ajout de données dans le cours'; -$string['currentcoursedeleting'] = 'Cours courant, on commence par l\'effacer'; -$string['currentlanguage'] = 'Langue active'; -$string['currentlocaltime'] = 'l\'heure actuelle locale'; -$string['currentpicture'] = 'Photo actuelle'; -$string['currentrelease'] = 'Information sur la version courante'; -$string['currentversion'] = 'Version courante'; -$string['databasechecking'] = 'Mise-à-jour de la base de données Moodle de la version $a->oldversion vers $a->newversion...'; -$string['databaseperformance'] = 'Efficacité de la base de données'; -$string['databasesetup'] = 'Installation de la base de données'; -$string['databasesuccess'] = 'La base de données a été correctement mise à jour'; -$string['databaseupgradebackups'] = 'La version actuelle de la sauvegarde est : $a'; -$string['databaseupgradeblocks'] = 'Version des blocs est maintenant $a'; -$string['databaseupgrades'] = 'Mise à jour de la base de données'; -$string['date'] = 'Date'; -$string['datemostrecentfirst'] = 'Date - la plus récente en premier'; -$string['datemostrecentlast'] = 'Date - la plus récente en dernier'; -$string['day'] = 'jour'; -$string['days'] = 'jours'; -$string['decodinginternallinks'] = 'Décodage des liens internes'; -$string['defaultcoursefullname'] = 'Nom complet du cours 101'; -$string['defaultcourseshortname'] = 'CF101'; -$string['defaultcoursestudent'] = 'Étudiant'; -$string['defaultcoursestudents'] = 'Étudiants'; -$string['defaultcoursesummary'] = 'Écrire un paragraphe concis et précis qui décrit le cours'; -$string['defaultcourseteacher'] = 'Enseignant'; -$string['defaultcourseteachers'] = 'Enseignants'; -$string['delete'] = 'Supprimer'; -$string['deleteall'] = 'Tout effacer'; -$string['deletecheck'] = 'Supprimer $a ?'; -$string['deletecheckfiles'] = 'Êtes-vous certain de vouloir effacer ces fichiers?'; -$string['deletecheckfull'] = 'Êtes-vous certain de vouloir supprimer le $a ?'; -$string['deletecheckwarning'] = 'Vous allez effacer ces fichiers'; -$string['deletecompletely'] = 'Supprimer entièrement'; -$string['deletecourse'] = 'Supprimer un cours'; -$string['deletecoursecheck'] = 'Êtes-vous certain de vouloir entièrement supprimer ce cours et toutes les données qu\'il contient ?'; -$string['deleted'] = 'Supprimé'; -$string['deletedactivity'] = '$a supprimé'; -$string['deletedcourse'] = '$a a été entièrement supprimé'; -$string['deletednot'] = 'Impossible de supprimer $a !'; -$string['deleteselected'] = 'Effacement sélectionné'; -$string['deletingcourse'] = 'Suppression de $a'; -$string['deletingexistingcoursedata'] = 'Effacement des données du cours'; -$string['deletingolddata'] = 'Effacement des données antérieures'; -$string['department'] = 'Département'; -$string['description'] = 'Description'; -$string['detailedless'] = 'Moins de détails'; -$string['detailedmore'] = 'Plus de détails'; -$string['directorypaths'] = 'Parcours'; -$string['disable'] = 'Désactiver'; -$string['displayingfirst'] = 'Seulement le premier $a->count $a->things sont affichés'; -$string['displayingrecords'] = '$a évènements affichés'; -$string['displayingusers'] = 'Affichage des utilisateurs de $a->start à $a->end'; -$string['documentation'] = 'Documentation de Moodle'; -$string['donotask'] = 'Ne pas demander'; -$string['down'] = 'Vers le bas'; -$string['downloadexcel'] = 'Télécharger dans un format tableur'; -$string['downloadtext'] = 'Télécharger dans un format texte'; -$string['doyouagree'] = 'Avez-vous lu et compris ces conditions ?'; -$string['duplicate'] = 'Copier'; -$string['duplicatinga'] = 'Copiage de : $a'; -$string['duplicatingain'] = 'Copiage de $a->what in $a->in'; -$string['edhelpbgcolor'] = 'Définir la couleur de l\'arrière plan de l\'éditeur.
                            Par exemple, #ffffff ou white'; -$string['edhelpcleanword'] = 'Ce paramètre permet d\'activer ou non le filtre pour le format spécifique de Word.'; -$string['edhelpenablespelling'] = 'Activer ou non la vérification de l\'orthographe. Lorsqu\'activée, aspell doit être installé sur le serveur.'; -$string['edhelpfontfamily'] = 'La propriété « font-family » est une liste de noms de polices et/ou de familles de polices génériques. Les noms doivent être séparés par des virgules.'; -$string['edhelpfontlist'] = 'Définition des polices disponible dans le menu de l\'éditeur.'; -$string['edhelpfontsize'] = 'Le corps par défaut définit la taille de la police.
                            Des valeurs correctes sont par exemple : medium, large, smaller, larger, 10pt, 11px.'; -$string['edit'] = 'Modifier $a'; -$string['editcoursesettings'] = 'Paramètres du cours'; -$string['editfiles'] = 'Modifier les fichiers'; -$string['editgroupprofile'] = 'Modifier le profil du groupe'; -$string['editinga'] = 'Modifier un $a'; -$string['editmyprofile'] = 'Modifier mon profil'; -$string['editorbgcolor'] = 'Couleur d\'arrière-plan'; -$string['editorcleanonpaste'] = 'Nettoyer les codes HTML de Word à partir de l\'opération \"coller\"'; -$string['editorcommonsettings'] = 'Paramètres communs'; -$string['editordefaultfont'] = 'Police par défaut'; -$string['editorenablespelling'] = 'Activer la vérification de l\'orthographe'; -$string['editorfontlist'] = 'Liste des polices'; -$string['editorfontsize'] = 'Taille par défaut'; -$string['editorresettodefaults'] = 'Remettre les valeurs par défaut'; -$string['editorsettings'] = 'Configuration de l\'éditeur'; -$string['editsummary'] = 'Modifier le résumé'; -$string['editthisactivity'] = 'Modifier cette activité'; -$string['editthiscategory'] = 'Modifier cette catégorie'; -$string['edituser'] = 'Modifier les comptes des utilisateurs'; -$string['email'] = 'Adresse de courriel'; -$string['emailactive'] = 'Courriel activé'; -$string['emailagain'] = 'Envoyer le courriel (encore)'; -$string['emailconfirm'] = 'Confirmer votre enregistrement'; -$string['emailconfirmation'] = '$a->firstname, -La création d\'un compte sur le site « $a->sitename » a été demandée en utilisant votre adresse de courriel. Pour confirmer votre enregistrement, veuillez vous rendre à l\'adresse suivante : - - $a->link - -Si cela ne fonctionne pas, copiez et collez ce lien dans la ligne adresse de votre navigateur Web. - -Cordialement, - -$a->admin -Administrateur du site « $a->sitename »'; -$string['emailconfirmationsubject'] = '$a: confirmation du compte'; -$string['emailconfirmsent'] = '

                            Un courriel vous a été envoyé à l\'adresse $a -

                            Il contient les instructions pour compléter votre enregistrement. -

                            Si vous rencontrez des difficultés, contactez l\'administrateur du site.'; -$string['emaildigest'] = 'Type de sommaire par courriel'; -$string['emaildigestcomplete'] = 'Complet ( un courriel quotidien avec les messages complets)'; -$string['emaildigestoff'] = 'Pas de sommaire (un courriel par message )'; -$string['emaildigestsubjects'] = 'Sujets (un courriel quotidien avec les sujets seulement)'; -$string['emaildisable'] = 'Cette adresse de courriel est désactivée.'; -$string['emaildisableclick'] = 'Cliquer ici pour désactiver l\'envoi de tout courriel à cette adresse'; -$string['emaildisplay'] = 'Affichage du courriel'; -$string['emaildisplaycourse'] = 'Seuls les membres du cours sont autorisés à voir mon adresse de courriel.'; -$string['emaildisplayno'] = 'Cacher mon adresse de courriel à tous'; -$string['emaildisplayyes'] = 'Autoriser tout le monde à voir mon adresse de courriel'; -$string['emailenable'] = 'Cette adresse de courriel est activée.'; -$string['emailenableclick'] = 'Cliquer ici pour réactiver l\'envoi de tout courriel à cette adresse'; -$string['emailexists'] = 'Cette adresse est déjà utilisée.'; -$string['emailformat'] = 'Format des courriels'; -$string['emailmustbereal'] = 'Note: votre adresse de courriel doit être valide'; -$string['emailnotallowed'] = 'Les adresses de courriel de ce domaine ne sont pas permises ($a)'; -$string['emailonlyallowed'] = 'Ce courriel ne fait pas partie de ceux permis ($a)'; -$string['emailpasswordconfirmation'] = 'Bonjour $a->firstname, -Quelqu\'un (probablement vous-même) a demandé un nouveau mot de passe pour votre compte sur le site \'$a->sitename\'. - -Pour confirmer ce changement et pour que le nouveau mot de passe vous soit envoyé par courriel, rendez-vous à l\'adresse suivante : - -$a->link - -Si cela ne fonctionne pas, copiez l\'adresse dans la ligne d\'adresse URL de votre navigateur. - -Si vous avez besoin d\'aide, veuillez contacter l\'administrateur de ce site : - -$a->admin'; -$string['emailpasswordconfirmationsubject'] = '$a: confirmation du changement du mot de passe'; -$string['emailpasswordconfirmsent'] = 'Un courriel vous a été envoyé à l\'adresse $a. -

                            Il contient les instructions nécessaires pour confirmer et compléter le changement de votre mot de passe. Si vous éprouvez encore des difficultés, veuillez contacter l\'administrateur de ce site.'; -$string['emailpasswordsent'] = 'Le changement de votre mot de passe a été confirmé. -

                            Un courriel contenant votre nouveau mot de passe vous été envoyé à l\'adresse $a->email. -

                            Ce mot de passe a été automatiquement généré. Pour le modifier, rendez-vous à l\'adresse : -link>.'; -$string['enable'] = 'Activer'; -$string['encryptedcode'] = 'Code crypté'; -$string['enrolledincourse'] = 'Inscrit dans le cours \"$a\"'; -$string['enrolledincoursenot'] = 'Pas inscrit dans le cours \"$a\"'; -$string['enrollfirst'] = 'Vous devez vous inscrire dans un des cours avant que vous puissiez participer aux activités.'; -$string['enrolmentconfirmation'] = 'Vous allez vous inscrire à ce cours.
                            Est-cela que vous désirez?'; -$string['enrolmentkey'] = 'Clé d\'inscription'; -$string['enrolmentkeyfrom'] = 'Ce cours nécessite une clé d\'inscription que vous aurez à entrer qu\'une seule fois. Vous pouvez l\'obtenir de $a.'; -$string['enrolmentkeyhint'] = 'Cette clé d\'inscription est incorrecte, veuillez essayer de nouveau
                            -(La clé commence par « $a ».)'; -$string['enrolmentnew'] = 'Nouvelle inscription dans $a'; -$string['enrolmentnewuser'] = '$a->user s\'est inscrit dans le cours \"$a->course\"'; -$string['enrolmentnointernal'] = 'Les inscriptions manuelles ne sont pas activées'; -$string['enrolmentnotyet'] = 'Désolé, vous ne pouvez à ce cours avant
                            $a'; -$string['enrolments'] = 'Inscriptions'; -$string['enrolperiod'] = 'Période d\'inscription'; -$string['entercourse'] = 'Cliquez pour entrer dans le cours'; -$string['enteremailaddress'] = 'Entrez votre adresse de courriel afin qu\'un nouveau mot de passe vous soit envoyé.'; -$string['entries'] = 'Entrées'; -$string['error'] = 'Erreur'; -$string['errortoomanylogins'] = 'Désolé, le nombre maximum de tentatives a été atteint. Veuillez redémarrer votre navigateur Web.'; -$string['errorwhenconfirming'] = 'Votre inscription n\'est pas encore confirmée à cause d\'une erreur. Si vous êtes arrivé ici en cliquant sur un lien dans un courriel, assurez-vous que le lien est sur la même ligne et pas sur deux lignes.'; -$string['everybody'] = 'Tout le monde'; -$string['executeat'] = 'Exécuté à'; -$string['existing'] = 'Existant'; -$string['existingadmins'] = 'Administrateurs actuels'; -$string['existingcourse'] = 'Cours existants'; -$string['existingcourseadding'] = 'Cours existants, ajouts de données à ces cours'; -$string['existingcoursedeleting'] = 'Cours existants, on les efface en premier'; -$string['existingcreators'] = 'Créateurs de cours actuels'; -$string['existingstudents'] = 'Étudiants inscrits'; -$string['existingteachers'] = 'Enseignants actuels'; -$string['failedloginattempts'] = '$a->attempts connexions ont échouées depuis votre dernière connexion'; -$string['failedloginattemptsall'] = '$a->attempts connexions échouées pour les comptes $a->accounts '; -$string['feedback'] = 'Rétroaction'; -$string['file'] = 'Fichier'; -$string['filemissing'] = '$a est manquant'; -$string['files'] = 'Fichiers'; -$string['filesfolders'] = 'Fichiers / répertoires'; -$string['filloutallfields'] = 'Veuillez remplir tous les champs de ce formulaire'; -$string['findmorecourses'] = 'Chercher d\'autres cours...'; -$string['firstdayofweek'] = '1'; -$string['firstname'] = 'Prénom'; -$string['firsttime'] = 'En êtes-vous à votre première visite sur ce site ?'; -$string['followingoptional'] = 'Les éléments suivants sont optionnels'; -$string['followingrequired'] = 'Les éléments suivants sont requis'; -$string['force'] = 'Forcé'; -$string['forcedmode'] = 'mode imposé'; -$string['forcelanguage'] = 'Imposer la langue'; -$string['forceno'] = 'Ne pas imposer'; -$string['forgotten'] = 'Vous avez oublié votre nom d\'utilisateur et/ou mot de passe ?'; -$string['format'] = 'Format du cours'; -$string['formathtml'] = 'Format HTML'; -$string['formatmarkdown'] = 'Format Markdown'; -$string['formatplain'] = 'Format de texte standard'; -$string['formatsocial'] = 'Informel'; -$string['formattext'] = 'Auto-format Moodle'; -$string['formattexttype'] = 'Mise en forme'; -$string['formattopics'] = 'Par module'; -$string['formatweeks'] = 'En semaines'; -$string['formatwiki'] = 'Format Wiki'; -$string['from'] = 'De'; -$string['frontpagecategorynames'] = 'Afficher la liste des catégories'; -$string['frontpagecourselist'] = 'Afficher la liste des groupes'; -$string['frontpagedescription'] = 'Description sur la page d\'accueil'; -$string['frontpageformat'] = 'Format de la page d\'accueil'; -$string['frontpagenews'] = 'Afficher les nouveaux articles'; -$string['fulllistofcourses'] = 'Liste complète des cours'; -$string['fullname'] = 'Nom complet'; -$string['fullnamedisplay'] = '$a->firstname $a->lastname'; -$string['fullprofile'] = 'Profil complet'; -$string['fullsitename'] = 'Nom complet du site'; -$string['gd1'] = 'GD 1.x est installé'; -$string['gd2'] = 'GD 2.x est installé'; -$string['gdneed'] = 'GD doit être installé pour voir ce graphique'; -$string['gdnot'] = 'GD n\'est pas installé'; -$string['gpl'] = 'Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com)

                            Ce programme est un logiciel libre; vous pouvez le redistribuer et/ou le modifier en vous conformant à la license GNU du «Free Software Foundation», version 2 ou ultérieure. Ce programme est distribué dans l\'espoir qu\'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite pour une VALEUR MARCHANDE quelconque ou en fonction de son utilisation POUR UN BUT PARTICULIER. Voyez la license GNU pour plus de détails : -http://www.gnu.org/copyleft/gpl.html'; -$string['grade'] = 'Note'; -$string['grades'] = 'Notes'; -$string['group'] = 'Groupe'; -$string['groupadd'] = 'Ajouter un nouveau groupe'; -$string['groupaddusers'] = 'Ajouter les noms choisis au groupe'; -$string['groupfor'] = 'pour le groupe'; -$string['groupinfo'] = 'Informations sur les groupes sélectionnés'; -$string['groupinfomembers'] = 'Informations sur les membres du groupe'; -$string['groupinfopeople'] = 'Informations sur les gens choisis'; -$string['groupmemberssee'] = 'Voir les membres du groupe'; -$string['groupmembersselected'] = 'Membres des groupes sélectionnés'; -$string['groupmode'] = 'Mode Groupe'; -$string['groupmodeforce'] = 'Forcer le mode Groupe'; -$string['groupmy'] = 'Mon groupe'; -$string['groupnonmembers'] = 'Personnes n\'appartenant pas à un groupe'; -$string['groupnotamember'] = 'Désolé, vous n\'êtes pas un membre de ce groupe'; -$string['grouprandomassign'] = 'Affecter au hasard tout le monde à des groupes'; -$string['groupremove'] = 'Retirer les groupes sélectionnés'; -$string['groupremovemembers'] = 'Retirer les membres sélectionnés'; -$string['groups'] = 'Groupes'; -$string['groupsnone'] = 'Pas de groupes'; -$string['groupsseparate'] = 'Séparer les groupes'; -$string['groupsvisible'] = 'Groupes visibles'; -$string['guestskey'] = 'Autoriser les visiteurs anonymes qui ont la clé'; -$string['guestsno'] = 'Ne pas autoriser les visiteurs anonymes à entrer'; -$string['guestsnotallowed'] = 'Désolé, « $a » n\'autorise pas les visiteurs anonymes à entrer.'; -$string['guestsyes'] = 'Autoriser les visiteurs anonymes sans clé'; -$string['guestuser'] = 'Visiteur anonyme'; -$string['guestuserinfo'] = 'Cet utilisateur a un statut particulier qui lui donne accès en lecture seulement à certains cours.'; -$string['help'] = 'Aide'; -$string['helpemoticons'] = 'Utiliser les binettes'; -$string['helpformatting'] = 'À propos du formatage de texte'; -$string['helphtml'] = 'Comment utiliser les balises HTML'; -$string['helpindex'] = 'Index de tous les fichiers d\'aide'; -$string['helppicture'] = 'Ajouter une image'; -$string['helpquestions'] = 'Formuler des questions pertinentes'; -$string['helpreading'] = 'Lire attentivement'; -$string['helprichtext'] = 'À propos de l\'éditeur « Richtext »'; -$string['helpsummaries'] = 'À propos de ces résumés'; -$string['helptext'] = 'Comment rédiger un texte'; -$string['helpwiki'] = 'Comment rédiger un texte Wiki'; -$string['helpwriting'] = 'Écrire soigneusement'; -$string['hiddensections'] = 'Sections cachées'; -$string['hiddensectionscollapsed'] = 'Les sections cachées sont montrées dans leur forme raccourcie'; -$string['hiddensectionsinvisible'] = 'Les sections cachées sont complètement invisibles'; -$string['hide'] = 'Cacher'; -$string['hidepicture'] = 'Cacher l\'image'; -$string['hidesettings'] = 'Cacher les ajustements'; -$string['hits'] = 'Requêtes'; -$string['hitsoncourse'] = 'Nombre de requêtes de $a->username sur $a->coursename'; -$string['hitsoncoursetoday'] = 'Nombre de requêtes de $a->username sur $a->coursename pour aujourd\'hui'; -$string['home'] = 'Accueil'; -$string['hour'] = 'heure'; -$string['hours'] = 'heures'; -$string['howtomakethemes'] = 'Comment fabriquer de nouveaux thèmes'; -$string['htmleditor'] = 'Utiliser l\'éditeur « Richtext » (Internet Explorer 5.5 ou supérieur requis)'; -$string['htmleditoravailable'] = 'L\'éditeur « Richtext » est disponible'; -$string['htmleditordisabled'] = 'Vous avez désactivé l\'utilisation de l\'éditeur « Richtext » dans votre profil d\'utilisateur'; -$string['htmleditordisabledadmin'] = 'L\'administrateur a désactivé l\'utilisation de l\'éditeur « Richtext » sur ce site'; -$string['htmleditordisabledbrowser'] = 'L\'éditeur « Richtext » n\'est pas disponible car vous n\'utilisez pas un navigateur Internet Explorer version 5.5 ou supérieur'; -$string['htmlformat'] = 'Format HTML modifié'; -$string['icqnumber'] = 'Numéro ICQ'; -$string['idnumber'] = 'Numéro d\'identification'; -$string['inactive'] = 'Inactif'; -$string['include'] = 'Inclure'; -$string['includeallusers'] = 'Inclure tous les utilisateurs'; -$string['includecoursefiles'] = 'Inclure tous les cours'; -$string['includecourseusers'] = 'Inclure tous les participants du cours'; -$string['included'] = 'Inclu'; -$string['includelogentries'] = 'Inclure les évènements du journal'; -$string['includemodules'] = 'Inclure Modules'; -$string['includeneededusers'] = 'Inclure les utilisateurs requis'; -$string['includenoneusers'] = 'Inclure aucun utilisateur'; -$string['includeuserfiles'] = 'Inclure tous les fichiers des utilisateurs'; -$string['institution'] = 'Institution'; -$string['invalidemail'] = 'Adresse de courriel invalide'; -$string['invalidlogin'] = 'Désolé, informations incorrectes. Essayer de nouveau SVP.'; -$string['ip_address'] = 'Adresse IP'; -$string['jumpto'] = 'Aller à...'; -$string['keep'] = 'Conserver'; -$string['langltr'] = 'La langue est écrite de gauche à droite'; -$string['langrtl'] = 'La langue est écrite de droite à gauche'; -$string['language'] = 'Langue'; -$string['languagegood'] = 'Le contenu de cette langue est à jour ! :o)'; -$string['lastaccess'] = 'Dernier accès'; -$string['lastedited'] = 'Éditer le'; -$string['lastlogin'] = 'Dernière connexion'; -$string['lastmodified'] = 'Modifié le'; -$string['lastname'] = 'Nom'; -$string['latestlanguagepack'] = 'Vérifier s\'il y a des nouveaux modules de langues dans moodle.org'; -$string['latestnews'] = 'Dernières nouvelles'; -$string['leavetokeep'] = 'Laisser vide pour ne pas changer le mot de passe'; -$string['license'] = 'Licence GPL'; -$string['list'] = 'Liste'; -$string['listfiles'] = 'Liste des fichiers dans $a'; -$string['listofallpeople'] = 'Liste de tous les participants'; -$string['livelogs'] = 'Évènements de la dernière heure'; -$string['locale'] = 'fr_CA'; -$string['location'] = 'Emplacement'; -$string['loggedinas'] = '« $a » connecté'; -$string['loggedinnot'] = 'Non connecté.'; -$string['login'] = 'Connexion'; -$string['login_failure_logs'] = 'Historique des connexions ayant échouées'; -$string['loginas'] = 'Connexion comme'; -$string['loginguest'] = 'Connexion comme visiteur anonyme'; -$string['loginsite'] = 'Se connecter sur le site'; -$string['loginsteps'] = 'Bonjour. Pour un accès complet aux cours, prenez une minute pour vous créer un compte personnel sur ce site.
                            -Chaque cours peut également nécessiter une clé d\'inscription que vous aurez à entrer qu\'une seule fois (vous n\'en avez pas pas besoin pour l\'instant.
                            - -Voici les étapes à suivre : - -

                              -
                            1. Remplir le formulaire nouveau compte. -
                            2. Un courriel vous sera immédiatement envoyé. -
                            3. Récupérer ce courriel et cliquer sur le lien Web qu\'il contient. -
                            4. Votre inscription sera alors confirmée et vous serez connecté. -
                            5. Vous pourrez ensuite choisir le cours auquel vous souhaitez vous inscrire. -
                            6. Si une clé d\'inscription vous est demandée, utilisez celle que votre professeur vous aura communiquée. -
                            7. Vous aurez alors un accès au cours complet. À votre prochaine visite il vous suffira d\'entrer votre nom d\'utilisateur et mot de passe (dans le formulaire ci-contre) afin de vous identifier et d\'accéder à tous les cours auxquels vous serez inscrit. -
                            '; -$string['loginstepsnone'] = 'Bonjour !

                            Pour un accès complet aux cours vous devez vous créer un compte.

                            Pour cela, vous avez seulement besoin de choisir un nom d\'utilisateur et un mot de passe à entrer dans le formulaire de cette page.

                            Si ce nom est déjà utilisé, on vous demandera d\'en choisir un autre.'; -$string['loginto'] = 'Se connecter sur $a'; -$string['loginusing'] = 'Connectez-vous ici en utilisant votre nom d\'utilisateur
                            et votre mot de passe'; -$string['logout'] = 'Déconnexion'; -$string['logs'] = 'Journal des évènements'; -$string['mailadmins'] = 'Informer les administrateurs'; -$string['mailstudents'] = 'Informer les étudiants'; -$string['mailteachers'] = 'Informer les professeurs'; -$string['mainmenu'] = 'Menu principal'; -$string['makeafolder'] = 'Créer un répertoire'; -$string['makeeditable'] = 'Si le serveur Web (par exemple Apache) possède un accès en écriture à ce fichier, alors il sera possible de le modifier directement depuis cette page'; -$string['manageblocks'] = 'Blocs'; -$string['managedatabase'] = 'Gérer la base de données'; -$string['managefilters'] = 'Filtres'; -$string['managemodules'] = 'Gérer les modules'; -$string['markedthistopic'] = 'Ce sujet est mis en évidence en tant que sujet courant'; -$string['markthistopic'] = 'Marquer ce sujet comme sujet courant'; -$string['maximumchars'] = '$a caractères maximum'; -$string['maximumgrade'] = 'Note maximale'; -$string['maximumshort'] = 'Max'; -$string['maximumupload'] = 'Taille maximale pour les téléversements'; -$string['maxsize'] = 'Taille maximale : $a'; -$string['min'] = 'min'; -$string['mins'] = 'mins'; -$string['miscellaneous'] = 'Divers'; -$string['missingcategory'] = 'Vous devez choisir un programme'; -$string['missingcity'] = 'Ville manquante'; -$string['missingcountry'] = 'Pays manquant'; -$string['missingdescription'] = 'Description manquante'; -$string['missingemail'] = 'Adresse de courriel manquante'; -$string['missingfirstname'] = 'Prénom manquant'; -$string['missingfullname'] = 'Nom complet manquant'; -$string['missinglastname'] = 'Nom manquant'; -$string['missingname'] = 'Nom manquant'; -$string['missingnewpassword'] = 'Nouveau mot de passe manquant'; -$string['missingpassword'] = 'Mot de passe manquant'; -$string['missingshortname'] = 'Diminutif manquant'; -$string['missingshortsitename'] = 'Dimunitif du site manquant'; -$string['missingsitedescription'] = 'Description du site manquant'; -$string['missingsitename'] = 'Nom du site manquant'; -$string['missingstrings'] = 'Vérifier les chaînes manquantes'; -$string['missingstudent'] = 'Vous devez choisir un étudiant'; -$string['missingsummary'] = 'Résumé manquant'; -$string['missingteacher'] = 'Vous devez choisir un enseignant'; -$string['missingurl'] = 'Adresse URL manquante'; -$string['missingusername'] = 'Nom d\'utilisateur manquant'; -$string['modified'] = 'Modifié'; -$string['moduledeleteconfirm'] = 'Vous vous apprétez à effacer complétement le module \'$a\'. Ceci va effacer toutes les données associées à ce module dans la base de données. Êtes-vous certain de vouloir continuer&'; -$string['moduledeletefiles'] = 'Toutes les données associées au module \'$a->module\' ont été effacées de la base de données. Pour compléter cet effacement et empêcher que le module se réinstalle, vous devriez effacer tout de suite le répertoire suivant du serveur : $a->directory'; -$string['modulesetup'] = 'Installation des tables des modules'; -$string['modulesuccess'] = 'Les tables de $a ont été installées correctement'; -$string['moodleversion'] = 'Version de Moodle'; -$string['more'] = 'plus'; -$string['mostrecently'] = 'le plus récemment'; -$string['move'] = 'Déplacer'; -$string['movecategoryto'] = 'Déplacer la catégorie à :'; -$string['movecourseto'] = 'Déplacer le cours à :'; -$string['movedown'] = 'Descendre'; -$string['movefilestohere'] = 'Déplacer les fichiers ici'; -$string['movefull'] = 'Déplacer $a à cet endroit'; -$string['movehere'] = 'Déplacer ici'; -$string['moveleft'] = 'Déplacer à gauche'; -$string['moveright'] = 'Déplacer à droite'; -$string['moveselectedcoursesto'] = 'Déplacer les cours sélectionnés à ...'; -$string['movetoanotherfolder'] = 'Déplacer vers un autre répertoire'; -$string['moveup'] = 'Monter'; -$string['mustconfirm'] = 'Vous devez confirmer votre enregistrement'; -$string['mycourses'] = 'Mes cours'; -$string['name'] = 'Nom'; -$string['namesocial'] = 'section'; -$string['nametopics'] = 'sujet'; -$string['nameweeks'] = 'semaine'; -$string['needed'] = 'Requis'; -$string['never'] = 'Jamais'; -$string['neverdeletelogs'] = 'Ne jamais détruire le journal des évènements'; -$string['new'] = 'Nouveau'; -$string['newaccount'] = 'Nouveau compte'; -$string['newcourse'] = 'Nouveau cours'; -$string['newpassword'] = 'Nouveau mot de passe'; -$string['newpasswordtext'] = 'Bonjour $a->firstname, -Le mot de passe de votre compte sur \'$a->sitename\' -a été remplacé par un nouveau mot de passe temporaire. -Les informations pour vous connecter sont désormais : - compte : $a->username - mot de passe : $a->newpassword -Veuillez vous rendre sur cette page afin de changer de mot de passe : - $a->link -Dans la plupart des logiciels de messagerie, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez et collez ce lien dans la ligne adresse de votre navigateur Web. -Cordialement, -$a->admin -Administrateur du site \'$a->sitename\''; -$string['newpicture'] = 'Nouvelle image'; -$string['newsitem'] = 'article'; -$string['newsitems'] = 'articles'; -$string['newsitemsnumber'] = 'Articles récents à afficher'; -$string['newuser'] = 'Nouvel utilisateur'; -$string['newusers'] = 'Nouveaux utilisateurs'; -$string['next'] = 'Suivant'; -$string['no'] = 'Non'; -$string['nobody'] = 'Personne'; -$string['nocoursesfound'] = 'Aucun cours n\'a été trouvé que contenait les mots \'$a\''; -$string['nocoursesyet'] = 'Il n\'y a pas encore de cours'; -$string['noexistingadmins'] = 'Aucun administrateur ! Ceci est une erreur majeure qui ne devrait jamais se produire!!'; -$string['noexistingcreators'] = 'Il n\'existe pas de concepteurs de cours'; -$string['noexistingstudents'] = 'Il n\'y a pas d\'étudiants'; -$string['noexistingteachers'] = 'Il n\'y a pas d\'enseignants'; -$string['nofilesselected'] = 'Aucun fichier n\'a été choisi pour la récupération'; -$string['nofilesyet'] = 'Aucun fichier n\'a encore été téléversé dans votre cours'; -$string['nograde'] = 'Pas de note'; -$string['noimagesyet'] = 'Aucune image n\'a encore été téléversée dans ce cours'; -$string['nomorecourses'] = 'Aucun autre cours correspondand n\'a été trouvé'; -$string['none'] = 'Aucun'; -$string['nopotentialadmins'] = 'Aucun administrateur potentiel'; -$string['nopotentialcreators'] = 'Pas de concepteurs de cours potentiels'; -$string['nopotentialstudents'] = 'Pas d\'étudiants potentiels'; -$string['nopotentialteachers'] = 'Aucun enseignant potentiel'; -$string['normal'] = 'Normale'; -$string['normalfilter'] = 'Moins de critères'; -$string['nostudentsfound'] = '$a pas trouvé'; -$string['nostudentsyet'] = 'Pas d\'étudiant inscrit à ce cours pour l\'instant'; -$string['nosuchemail'] = 'Adresse de courriel inconnue'; -$string['notavailable'] = 'Pas disponible'; -$string['noteachersyet'] = 'Aucun professeur dans ce cours pour l\'instant'; -$string['notenrolled'] = '$a n\'est pas inscrit à ce cours.'; -$string['noteuserschangednonetocourse'] = 'Note : On doit récupérer également les utilisateurs lorsqu\'on récupère leurs données. Cela a été fait pour vous.'; -$string['nothingnew'] = 'Rien de nouveau depuis votre dernière visite'; -$string['noticenewerbackup'] = 'Cette sauvegarde a été créée avec Moodle $a->backuprelease ($a->backupversion) et elle est plus récente que votre Moodle $a->serverrelease ($a->serverversion). Cela peut causer certains problèmes, car la compatibilité des fichiers ne peut être garantie.'; -$string['notifyloginfailuresmessage'] = '$a->time, IP: $a->ip, Utilisateur: $a->info'; -$string['notifyloginfailuresmessageend'] = 'Vous pouvez voir l\'historique à $a/course/log.php?id=1&chooselog=1&modid=site_errors.'; -$string['notifyloginfailuresmessagestart'] = 'Voici la liste des connexions ayant échouées à $a depuis la dernière fois qu\'on vous a avertit'; -$string['notifyloginfailuressubject'] = '$a :: Avis sur les connexions ayant échouées'; -$string['notincluded'] = 'Pas inclu'; -$string['notingroup'] = 'Désolé, vous devez faire partie d\'un groupe pour participer à cette activité.'; -$string['nousersmatching'] = 'Aucun utilisateur ne correspond à \'$a\''; -$string['nousersyet'] = 'Il n\'y pas encore d\'utilisteur'; -$string['now'] = 'maintenant'; -$string['numattempts'] = '$a tentatives échouées de connexion'; -$string['numberweeks'] = 'Nombre de semaines ou sujets'; -$string['numdays'] = '$a jours'; -$string['numhours'] = '$a heures'; -$string['numminutes'] = '$a minutes'; -$string['numseconds'] = '$a secondes'; -$string['numviews'] = '$a vues'; -$string['numweeks'] = '$a semaines'; -$string['numwords'] = '$a mots'; -$string['numyears'] = '$a ans'; -$string['ok'] = 'Ok'; -$string['opentoguests'] = 'Accès comme visiteur anonyme'; -$string['optional'] = 'optionnel'; -$string['order'] = 'Ordre'; -$string['other'] = 'Autre'; -$string['outline'] = 'Aperçu'; -$string['page'] = 'Page'; -$string['parentlanguage'] = 'fr'; -$string['participants'] = 'Participants'; -$string['password'] = 'Mot de passe'; -$string['passwordchanged'] = 'Le mot de passe a été changé'; -$string['passwordconfirmchange'] = 'Confirmer le changement du mot de passe'; -$string['passwordrecovery'] = 'Oui, j\'ai besoin d\'aide pour me connecter'; -$string['passwordsdiffer'] = 'Les mots de passe ne correspondent pas'; -$string['passwordsent'] = 'Le mot de passe a été envoyé'; -$string['passwordsenttext'] = '

                            Un courriel vous a été envoyé à cette adresse : $a->email. -

                            Veuillez lire ce courriel afin de récupérer votre nouveau mot de passe -

                            Ce nouveau mot de passe a été généré automatiquement, vous voudrez -sans doute
                            le link>modifier afin qu\'il vous soit plus facile de vous en rappeler.'; -$string['pathnotexists'] = 'Ce parours n\'existe pas sur votre serveur !'; -$string['pathslasherror'] = 'Le chemin ne doit pas se terminer par une barre oblique !'; -$string['paymentinstant'] = 'Le bouton ci-dessous vous permet de payer et de vous inscrire en quelques minutes !'; -$string['paymentrequired'] = 'Un paiement est requis pour accéder à ce cours.'; -$string['paymentsorry'] = 'Merci pour votre paiement ! Malheureusement, votre paiement n\'a pas encore été comptabilisé, et vous ne pouvez pas encore accéder au cours « $a->fullname ». Veuillez essayer d\'accéder au cours dans quelques secondes. Si vous n\'arrivez toujours pas à y accéder, merci de contacter l\'enseignant ou l\'adminstrateur du site'; -$string['paymentthanks'] = 'Merci pour votre paiement ! Vous êtes dès maintenant inscrit à votre cours :
                            « $a »'; -$string['people'] = 'La classe'; -$string['personalprofile'] = 'Profil personnel'; -$string['phone'] = 'Téléphone'; -$string['phpinfo'] = 'Informations PHP'; -$string['popupwindow'] = 'Ouvrir ce fichier dans une nouvelle fenêtre'; -$string['potentialadmins'] = 'Administrateurs potentiels'; -$string['potentialcreators'] = 'Concepteurs de cours potentiels'; -$string['potentialstudents'] = 'Étudiants potentiels'; -$string['potentialteachers'] = 'Enseignants potentiels'; -$string['preferredlanguage'] = 'Langue préférée'; -$string['preview'] = 'Aperçu'; -$string['previeworchoose'] = 'Aperçu ou choix d\'un thème'; -$string['previous'] = 'Précédent'; -$string['publicdirectory'] = 'Répertoire publique'; -$string['publicdirectory0'] = 'Ne pas publier ce site'; -$string['publicdirectory1'] = 'Publier uniquement le nom du site'; -$string['publicdirectory2'] = 'Publier le nom du site avec son lien'; -$string['publicsitefileswarning'] = 'Note : Les fichiers rangés ici sont accessibles par tout le monde.'; -$string['question'] = 'Question'; -$string['readinginfofrombackup'] = 'Lecture des informations sur la sauvegarde'; -$string['readme'] = 'LISEZMOI'; -$string['recentactivity'] = 'Activité(s) récente(s)'; -$string['recentactivityreport'] = 'Rapport complet des activités récentes...'; -$string['refreshingevents'] = 'Mise à jour du calendrier'; -$string['registration'] = 'Enregistrement de Moodle'; -$string['registrationemail'] = 'Avis par courriel'; -$string['registrationinfo'] = 'Cette page vous permet d\'enregistrer votre site Moodle auprès de moodle.org. L\'enregistrement est gratuit. Vous serez ajouter à une liste de diffusion de nouvelles et vous bénificierez ainsi d\'avis sur des failles de sécurité ou sur de nouvelles versions de Moodle. Il y aura peu d\'envois à partir de cette liste. -

                            Par défaut, toutes les informations que vous fournissez demeureront confidentielles. La seule raison pour la collecte de ces informations est de fournir du support et d\'accumuler des données sur l\'utilisation de Moodle et de la communauté qui l\'utilise. -

                            Si vous le désirez, vous pouvez ajouter le nom de votre site, son adresse URL et votre pays à la lsite des sites Moodle. -

                            Tous les nouveaux enregistrements seront vérifiés manuellement avant d\'être ajoutés à la liste, mais une fois inscrit, vous pouvez mettre à jour votre inscription en tout temps.'; -$string['registrationno'] = 'Non, je ne désire pas recevoir de courriels.'; -$string['registrationsend'] = 'Envoyer l\'enregistrement à moodle.org'; -$string['registrationyes'] = 'Oui, veuillez m\'avertir de toutes nouvelles importantes'; -$string['removeadmin'] = 'Supprimer cet administrateur'; -$string['removecreator'] = 'Supprimer ce concepteur de cours'; -$string['removestudent'] = 'Enlever l\'étudiant'; -$string['removeteacher'] = 'Enlever l\'enseignant'; -$string['rename'] = 'Renommer'; -$string['renamefileto'] = 'Renommer $a à '; -$string['required'] = 'Requis'; -$string['requireskey'] = 'Ce cours nécessite une clé d\'inscription'; -$string['requirespayment'] = 'n paiement est requis pour accéder à ce cours'; -$string['resortcoursesbyname'] = 'Trier de nouveau les cours par nom'; -$string['resources'] = 'Ressources'; -$string['restore'] = 'Restaurer'; -$string['restorecancelled'] = 'Récupération annulée'; -$string['restorecoursenow'] = 'Récupérer ce cours maintenant!'; -$string['restorefinished'] = 'Récupération réussie'; -$string['restoreto'] = 'Récupérer dans'; -$string['returningtosite'] = 'Retourner à ce site web?'; -$string['revert'] = 'Version précédente'; -$string['role'] = 'Rôle'; -$string['rss'] = 'RSS'; -$string['rssarticles'] = 'Nombre d\'articles RSS récents'; -$string['rsstype'] = 'Alimentation RSS pour cette activité'; -$string['savechanges'] = 'Enregistrer les changements'; -$string['saveto'] = 'Sauvegarder à'; -$string['scale'] = 'Échelle'; -$string['scales'] = 'Échelles'; -$string['scalescustom'] = 'Échelle personnalisée'; -$string['scalescustomcreate'] = 'Ajouter une nouvelle échelle'; -$string['scalescustomno'] = 'Aucune échelle personnalisée n\'a été créée'; -$string['scalesstandard'] = 'Échelle standard'; -$string['scalestip'] = 'Utilisez le lien «Échelle...» dans le menu «Administration» de la page d\'accueil du cours pour créer vos propres échelles.'; -$string['schedule'] = 'Horaire'; -$string['scheduledbackupstatus'] = 'État des sauvegardes planifiées'; -$string['search'] = 'Chercher'; -$string['searchagain'] = 'Chercher de nouveau'; -$string['searchcourses'] = 'Chercher dans les cours'; -$string['searchhelp'] = 'Vous pouvez effectuer une recherche comportant plusieurs mots.

                            mot : trouver toutes les occurences de ce mot (séquence de lettres).
                            +mot : on cherche très exactement ce mot.
                            -mot : ce mot ne doit pas apparaître dans les résultats de la recherche'; -$string['searchresults'] = 'Résultats de la recherche'; -$string['sec'] = 'sec'; -$string['secs'] = 'secs'; -$string['section'] = 'Section'; -$string['sections'] = 'Sections'; -$string['select'] = 'Choisir'; -$string['selectacountry'] = 'Choisir un pays'; -$string['selectednowmove'] = '$a fichiers ont été sélectionnés pour être déplacés. Cliquez \"Déplacer les fichiers ici\" à l\'endroit où vous désirez déplacer les fichiers.'; -$string['senddetails'] = 'Me les envoyer par courriel'; -$string['serverlocaltime'] = 'Heure courante du serveur'; -$string['settings'] = 'Paramètres'; -$string['shortname'] = 'Nom abrégé'; -$string['shortnametaken'] = 'Le titre abrégé du cours est déjà utilisé ailleurs ($a)'; -$string['shortsitename'] = 'Nom abrégé du site (un mot unique)'; -$string['show'] = 'Afficher'; -$string['showall'] = 'Montrer tous les $a'; -$string['showallcourses'] = 'Afficher tous les cours'; -$string['showalltopics'] = 'Afficher tous les sujets'; -$string['showallusers'] = 'Montrer tous les utilisateurs'; -$string['showallweeks'] = 'Afficher toutes les semaines'; -$string['showgrades'] = 'Montrer les notes'; -$string['showlistofcourses'] = 'Afficher la liste des cours'; -$string['showonlytopic'] = 'Afficher uniquement le sujet $a'; -$string['showonlyweek'] = 'Afficher uniquement la semaine $a'; -$string['showrecent'] = 'Afficher les évènements récents'; -$string['showreports'] = 'Afficher les rapports d\'activités'; -$string['showsettings'] = 'Montrer les ajustements'; -$string['showtheselogs'] = 'Afficher ces évènements'; -$string['since'] = 'Depuis'; -$string['sincelast'] = 'depuis la dernière connexion'; -$string['site'] = 'Site'; -$string['siteerrors'] = 'Erreur sur le site'; -$string['sitefiles'] = 'Fichiers du site'; -$string['sitelogs'] = 'Journal des évènements'; -$string['sitenews'] = 'Nouvelles'; -$string['sitepartlist0'] = 'Vous devez être un enseignant global pour être autorisé à voir la liste des participants'; -$string['sitepartlist1'] = 'Vous devez être un enseignant pour être autorisé à voir la liste des participants'; -$string['sites'] = 'Sites'; -$string['sitesection'] = 'Inclure le sujet de la section'; -$string['sitesettings'] = 'Configuration du site'; -$string['siteteachers'] = 'Enseignants globaux'; -$string['size'] = 'Taille'; -$string['sizeb'] = 'octets'; -$string['sizegb'] = 'Go'; -$string['sizekb'] = 'ko'; -$string['sizemb'] = 'Mo'; -$string['socialheadline'] = 'Forum public - derniers sujets'; -$string['someallowguest'] = 'Les visiteurs anonymes peuvent accéder à
                            certains cours'; -$string['someerrorswerefound'] = 'Certaines informations manquent ou sont incorrectes. Voir ci-dessous.'; -$string['sortby'] = 'Trier par'; -$string['specifyname'] = 'Vous devez spécifier un nom.'; -$string['startdate'] = 'Date de début du cours'; -$string['startsignup'] = 'Créer immédiatement un nouveau compte !'; -$string['state'] = 'État/province'; -$string['status'] = 'Statuts'; -$string['strftimedate'] = '%%Y - %%m - %%d'; -$string['strftimedateshort'] = '%%d %%B'; -$string['strftimedatetime'] = '%%Y - %%m - %%d, %%H:%%M'; -$string['strftimedaydate'] = '%%A, %%d %%B %%Y'; -$string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%H:%%M '; -$string['strftimedayshort'] = '%%A, %%d %%B'; -$string['strftimedaytime'] = '%%a, %%H:%%M'; -$string['strftimemonthyear'] = '%%B %%Y'; -$string['strftimerecent'] = '%%d %%b, %%H:%%M'; -$string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%H:%%M'; -$string['strftimetime'] = '%%H:%%M'; -$string['stringsnotset'] = 'Les chaînes suivantes ne sont pas définies dans $a'; -$string['studentnotallowed'] = 'Désolé, mais vous ne pouvez entrer dans ce cours en tant que « $a »'; -$string['students'] = 'Étudiants'; -$string['studentsandteachers'] = 'Étudiants et professeurs'; -$string['subcategories'] = 'Sous-catégories'; -$string['success'] = 'Succès'; -$string['summary'] = 'Résumé'; -$string['summaryof'] = 'Résumé de $a'; -$string['supplyinfo'] = 'Veuillez fournir ces quelques informations'; -$string['teacheronly'] = 'pour $a uniquement'; -$string['teacherroles'] = '$a rôles'; -$string['teachers'] = 'Professeurs'; -$string['textediting'] = 'Lors de l\'édition de texte'; -$string['texteditor'] = 'Utiliser les formulaires HTML standards'; -$string['textformat'] = 'Format de texte standard'; -$string['thanks'] = 'Merci'; -$string['theme'] = 'Thème'; -$string['themes'] = 'Thèmes'; -$string['themesaved'] = 'Nouveau thème enregistré'; -$string['thischarset'] = 'iso-8859-15'; -$string['thisdirection'] = 'ltr'; -$string['thislanguage'] = 'Français - Canada'; -$string['time'] = 'Heure'; -$string['timezone'] = 'Fuseau horaire'; -$string['to'] = 'À'; -$string['today'] = 'Aujourd\'hui'; -$string['todaylogs'] = 'Évènements du jour'; -$string['toomanytoshow'] = 'Trop d\'utilisateurs pour les montrer tous'; -$string['top'] = 'Haut'; -$string['topic'] = 'Sujet'; -$string['topichide'] = 'Cacher ce sujet de $a'; -$string['topicoutline'] = 'Aperçu de cette partie'; -$string['topicshow'] = 'Montrer ce sujet à $a'; -$string['total'] = 'Total'; -$string['turneditingoff'] = 'Quitter le mode édition'; -$string['turneditingon'] = 'Activer le mode édition'; -$string['undecided'] = 'Pas d\'avis'; -$string['unenrol'] = 'Désinscription'; -$string['unenrolallstudents'] = 'Désinscrire tous les étudiants'; -$string['unenrolallstudentssure'] = 'Êtes-vous certain que vous voulez désinscrire tous les étudiants de ce cours?'; -$string['unenrolme'] = 'Me désinscrire de $a'; -$string['unenrolsure'] = 'Êtes-vous certain de vouloir vous désinscrire $a de ce cours ?'; -$string['unknowncategory'] = 'Catégorie inconnue'; -$string['unlimited'] = 'Illimité'; -$string['unpacking'] = 'Déballage de $a'; -$string['unsafepassword'] = 'Ce mot de passe n\'est pas sûr, essayer autre chose'; -$string['unusedaccounts'] = 'Les comptes qui n\'ont pas été utilisés depuis $a sont automatiquement désinscrits.'; -$string['unzip'] = 'Décompresser'; -$string['unzippingbackup'] = 'Décompresser la sauvegarde'; -$string['up'] = 'Vers le haut'; -$string['update'] = 'Modifier'; -$string['updated'] = '$a modifié'; -$string['updatemyprofile'] = 'Enregistrer mon profil'; -$string['updatesevery'] = 'Mise à jour toutes les $a secondes'; -$string['updatethis'] = 'Modifier $a'; -$string['updatethiscourse'] = 'Modifier ce cours'; -$string['updatinga'] = 'Modifier un $a'; -$string['updatingain'] = 'Modifier un $a->what dans $a->in'; -$string['upload'] = 'Téléverser (vers le serveur)'; -$string['uploadafile'] = 'Téléverser un fichier (vers le serveur)'; -$string['uploadedfileto'] = 'Téléverser $a->file dans $a->directory'; -$string['uploadformlimit'] = 'La taille du fichier téléversé dépasse la limite permise par le formulaire'; -$string['uploadnofilefound'] = 'Fichier introuvable - êtes-vous certain d\'avoir choisi un fichier à téléverser?'; -$string['uploadnotallowed'] = 'Les téléversements ne sont pas permis'; -$string['uploadpartialfile'] = 'Le fichier a été partiellement téléversé'; -$string['uploadproblem'] = 'Une erreur inconnue est survenue lors du téléchargement du fichier \'$a\' (fichier trop gros?)'; -$string['uploadserverlimit'] = 'La taille du fichier téléversé dépasse la limite permise par le serveur'; -$string['uploadthisfile'] = 'Téléverser ce fichier vers le serveur'; -$string['uploadusers'] = 'Téléverser des comptes d\'utilisateurs'; -$string['usedinnplaces'] = 'Utilisés à $a endroits'; -$string['user'] = 'Utilisateur'; -$string['userconfirmed'] = 'Confirmé $a'; -$string['userdata'] = 'Donnée de l\'utilisateur'; -$string['userdeleted'] = 'Le compte de cet utilisateur a été supprimé'; -$string['userdescription'] = 'Description'; -$string['userfiles'] = 'Fichiers de l\'utilisateur'; -$string['userlist'] = 'Liste d\'utilisateurs'; -$string['username'] = 'Nom de l\'utilisateur'; -$string['usernameexists'] = 'Ce nom d\'utilisteur existe déjà, veuillez en choisir un autre'; -$string['usernotconfirmed'] = 'N\'a pu confirmé $a'; -$string['userprofilefor'] = 'Profil de l\'utilisateur $a'; -$string['users'] = 'Utilisateurs'; -$string['usersnew'] = 'Nouveaux utilisateurs'; -$string['userzones'] = 'Régions de l\'utilisateur'; -$string['usingexistingcourse'] = 'Utiliser un cours existant'; -$string['version'] = 'Version'; -$string['view'] = 'Vue'; -$string['webpage'] = 'Page Web'; -$string['week'] = 'Semaine'; -$string['weekhide'] = 'Cacher cette semaine de $a'; -$string['weeklyoutline'] = 'Aperçu de la semaine'; -$string['weekshow'] = 'Montrer cette semaine à $a'; -$string['welcometocourse'] = 'Bienvenue sur $a'; -$string['welcometocoursetext'] = 'Bienvenue dans $a->coursename ! -La première action que vous devriez faire est d\'éditer votre profil dans ce cours afin que nous nous connaissions un peu mieux : - $a->profileurl'; -$string['whattocallzip'] = 'Comment voulez nommer le fichier compressé?'; -$string['withchosenfiles'] = 'Avec les fichiers choisis'; -$string['withoutuserdata'] = 'sans les données de l\'utilisateur'; -$string['withuserdata'] = 'avec les données de l\'utilisateur'; -$string['wordforstudent'] = 'Votre mot pour « étudiant »'; -$string['wordforstudenteg'] = 'exemples : étudiant, apprentis, participant, ...'; -$string['wordforstudents'] = 'Votre mot pour « étudiants »'; -$string['wordforstudentseg'] = 'exemples : étudiants, apprentis, participants, ...'; -$string['wordforteacher'] = 'Votre mot pour « enseignant »'; -$string['wordforteachereg'] = 'exemples : enseignant, professeur, gourou, ...'; -$string['wordforteachers'] = 'Votre mot pour « enseignants »'; -$string['wordforteacherseg'] = 'exemples : enseignants, professeurs, gourous, ...'; -$string['writingcategoriesandquestions'] = 'Sauvegarde des catégories et des questions'; -$string['writingcoursedata'] = 'Sauvegarde des données du cours'; -$string['writingeventsinfo'] = 'Écriture des événements'; -$string['writinggeneralinfo'] = 'Sauvegarde des informations générales'; -$string['writinggroupsinfo'] = 'Sauvegarde des informations sur les groupes'; -$string['writingheader'] = 'Sauvegarde de l\'en-tête'; -$string['writingloginfo'] = 'Sauvegarde des journaux d\'évènements'; -$string['writingmoduleinfo'] = 'Sauvegarde des informations sur les modules'; -$string['writingscalesinfo'] = 'Sauvegarde des informations sur les échelles'; -$string['writinguserinfo'] = 'Sauvegarde des informations sur les utilisateurs'; -$string['wrongpassword'] = 'Mot de passe incorrect pour cet utilisateur'; -$string['yes'] = 'Oui'; -$string['youareabouttocreatezip'] = 'Vous allez créer un fichier compressé contenant'; -$string['youaregoingtorestorefrom'] = 'Vous allez commencer à récupérer '; -$string['yourlastlogin'] = 'Votre dernière connexion'; -$string['yourself'] = 'vous-même'; -$string['yourteacher'] = 'votre $a'; -$string['zippingbackup'] = 'Compression de la sauvegarde'; - -?> +$a'; +$string['activityiscurrentlyhidden'] = 'Désolé, cette activité est présentement cachée'; +$string['activitymodule'] = 'Activité du module'; +$string['activityreport'] = 'Rapport d\'activité'; +$string['activityselect'] = 'Choisir l\'activité à déplacer'; +$string['activitysince'] = 'Activiter depuis $a'; +$string['add'] = 'Ajouter'; +$string['addadmin'] = 'Ajouter un administrateur'; +$string['addcreator'] = 'Ajouter un utilisateur pouvant créer des cours'; +$string['added'] = '$a ajoutés'; +$string['addinganew'] = 'Ajouter un(e) $a'; +$string['addinganewto'] = 'Ajouter un $a->what à $a->to'; +$string['addingdatatoexisting'] = 'Ajout de données à'; +$string['addnewcategory'] = 'Ajouter une nouvelle catégorie'; +$string['addnewcourse'] = 'Ajouter un cours'; +$string['addnewuser'] = 'Ajouter un utilisateur'; +$string['address'] = 'Adresse'; +$string['addstudent'] = 'Ajouter un étudiant'; +$string['addteacher'] = 'Ajouter un enseignant'; +$string['admin'] = 'Administrateur'; +$string['adminhelpaddnewuser'] = 'Pour créer manuellement un nouveau compte étudiant'; +$string['adminhelpassignadmins'] = 'L\'administrateur peut tout faire et aller n\'importe où sur ce site'; +$string['adminhelpassigncreators'] = 'Les concepteurs peuvent créer de nouveaux cours et les utiliser'; +$string['adminhelpassignstudents'] = 'Allez dans un cours et ajoutez un étudiant à partir du menu Administration'; +$string['adminhelpassignteachers'] = 'Trouver le cours puis utilisez l\'icône pour ajouter des professeurs'; +$string['adminhelpauthentication'] = 'Vous pouvez utiliser des comptes internes d\'utilisateurs ou une base de données externes'; +$string['adminhelpbackup'] = 'Configurer et planifier les sauvegardes automatiques'; +$string['adminhelpconfiguration'] = 'Configuration de l\'apparence du site et du fonctionnement'; +$string['adminhelpconfigvariables'] = 'Configuration des variables qui affectent l\'opération générale du site'; +$string['adminhelpcourses'] = 'Définition des cours et des catégories et affectation des professeurs aux cours'; +$string['adminhelpedituser'] = 'Parcourir la liste des comptes des utilisateurs et édition des comptes'; +$string['adminhelplanguage'] = 'Vérification et édition du module courant de langue'; +$string['adminhelplogs'] = 'Parcourir les journaux d\'évènements de ce site'; +$string['adminhelpmanagedatabase'] = 'Accès direct à la base de données (Attention!)'; +$string['adminhelpmanagefilters'] = 'Choisir les filtres de texte et les réglages associés'; +$string['adminhelpmanagemodules'] = 'Gestion des modules d\'activités et de leurs paramètres'; +$string['adminhelpsitefiles'] = 'Publication de fichiers d\'intérêt général ou téléversement de sauvegardes externes'; +$string['adminhelpsitesettings'] = 'Édition de l\'apparence de la page d\'accueil du site'; +$string['adminhelpthemes'] = 'Édition de l\'apparence du site'; +$string['adminhelpuploadusers'] = 'Importer les comptes des nouveaux utilisateurs à partir d\'un fichier texte'; +$string['adminhelpusers'] = 'Définir les utilisateurs et la méthode de vérification des identités'; +$string['administration'] = 'Administration'; +$string['administrator'] = 'Administrateur'; +$string['administrators'] = 'Administrateurs'; +$string['advancedfilter'] = 'Plus de critères'; +$string['again'] = 'encore'; +$string['all'] = 'Tout'; +$string['allactivities'] = 'Toutes les activités'; +$string['alldays'] = 'Tous les jours'; +$string['allfieldsrequired'] = 'Tous les champs sont requis'; +$string['allgroups'] = 'Tous les groupes'; +$string['alllogs'] = 'Tous les évènements'; +$string['allow'] = 'Autoriser'; +$string['allowguests'] = 'Les visiteurs anonymes sont autorisés dans ce cours'; +$string['allownot'] = 'Interdire'; +$string['allparticipants'] = 'Tous les participants'; +$string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; +$string['alphanumerical'] = 'Seuls les lettres ou chiffres sont autorisés'; +$string['alreadyconfirmed'] = 'L\'enregistrement a déjà été confirmé'; +$string['answer'] = 'Réponse'; +$string['areyousuretorestorethis'] = 'Désirez-vous continuer?'; +$string['areyousuretorestorethisinfo'] = 'Plus tard dans le processus, vous pourrez choisir d\'ajouter cette sauvegarde à un cours existant ou de créer un cours complètement nouveau'; +$string['assessment'] = 'Appréciation'; +$string['assignadmins'] = 'Choisir les administrateurs'; +$string['assigncreators'] = 'Affecter les utilisateurs pouvant créer des cours'; +$string['assignstudents'] = 'Inscrire les étudiants'; +$string['assignstudentsnote'] = 'Note : il peut être inutile d\'utiliser cette page, puisque les étudiants peuvent s\'inscrire eux-mêmes'; +$string['assignstudentspass'] = 'Vous n\'aurez peut-être qu\'à avertir les étudiants à s\'inscrire eux-mêmes en utilisant la clef d\'inscription $a'; +$string['assignteachers'] = 'Affecter des enseignants'; +$string['authentication'] = 'Authentification'; +$string['autosubscribe'] = 'Forum avec auto-inscription'; +$string['autosubscribeno'] = 'Non : ne pas m\'inscrire automatiquement à ce forum'; +$string['autosubscribeyes'] = 'Oui : lorsque je publie un message, veuillez m\'incrire à ce forum'; +$string['availability'] = 'Disponible'; +$string['availablecourses'] = 'Cours disponibles'; +$string['backup'] = 'Sauvegarde'; +$string['backupcoursefileshelp'] = 'Les fichiers du cours seront inclus dans la sauvegarde automatique lorsque que cette option est validée.'; +$string['backupdate'] = 'Date de la sauvegarde'; +$string['backupdetails'] = 'Informations sur les sauvegardes'; +$string['backupfilename'] = 'Sauvegarder'; +$string['backupfinished'] = 'Sauvegarde réussie'; +$string['backupincludemoduleshelp'] = 'Choississez si vous désirez inclure les données des utilisateurs dans les sauvegardes automatiques.'; +$string['backupkeephelp'] = 'Combien de sauvegardes automatiques récentes désirez-vous conserver? Les autres seront effacées.'; +$string['backuplogshelp'] = 'Les journaux d\'évènements seront inclus dans les sauvegardes automatiques lorsque cette option est activée.'; +$string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; +$string['backuporiginalname'] = 'Nom de la sauvegarde'; +$string['backupsavetohelp'] = 'Donnez le parcours complet où vous désirez conserver les sauvegardes ou
                            laissez en blanc pour utiliser le répertoire du cours par défaut.'; +$string['backupuserfileshelp'] = 'Choisissez si vous désirez que les fichiers de l\'utilisateur (par exemple, la photo dans son profil) soient inclus dans les sauvegardes automatiques.'; +$string['backupusershelp'] = 'Choisissez si vous désirez inclure tous les utilisateurs inscrits au serveur ou uniquement les utilisateurs de chaque cours.'; +$string['backupversion'] = 'Version de la sauvegarde'; +$string['bycourseorder'] = 'Ordre dans le cours'; +$string['cancel'] = 'Annuler'; +$string['categories'] = 'Catégories de cours'; +$string['category'] = 'Catégorie'; +$string['categoryadded'] = 'La catégorie « $a » a été ajoutée'; +$string['categorydeleted'] = 'La catégorie « $a » a été supprimée'; +$string['categoryduplicate'] = 'La catégorie $a existe déjà!'; +$string['changedpassword'] = 'Mot de passe modifié'; +$string['changepassword'] = 'Changer le mot de passe'; +$string['changessaved'] = 'Modifications enregistrées'; +$string['checkingbackup'] = 'Vérification de la sauvegarde'; +$string['checkingcourse'] = 'Vérification du cours'; +$string['checkinginstances'] = 'Vérification des occurences'; +$string['checkingsections'] = 'Vérification des sections'; +$string['checklanguage'] = 'Modifier la traduction '; +$string['choose'] = 'Choisir'; +$string['choosecourse'] = 'Choisir un cours'; +$string['chooselivelogs'] = 'Ou regarder l\'activité courante'; +$string['chooselogs'] = 'Choisir les évènements que vous souhaitez consulter'; +$string['choosereportfilter'] = 'Choisissez un filtre pour ce rapport'; +$string['choosetheme'] = 'Choisissez un thème'; +$string['chooseuser'] = 'Choisissez un utilisateur'; +$string['city'] = 'Ville'; +$string['cleaningtempdata'] = 'Effacement des données temporaires'; +$string['clicktochange'] = 'cliquer pour modifier'; +$string['closewindow'] = 'Fermer cette fenêtre'; +$string['comparelanguage'] = 'Comparer et éditer la langue active'; +$string['complete'] = 'Complet'; +$string['configallowunenroll'] = 'L\'option «OUI» permettra aux étudiants de se désinscrire des cours eux-mêmes. Dans le cas contraire, seuls les professeurs et les administrateurs pourront le faire.'; +$string['configcachetext'] = 'Ce réglage permet d\'accélérer le temps de réponse des grands sites ou de ceux qui utilisent les filtres. Des copies des textes sont mémorisés pour la durée spécifiée ici. Une valeur trop petite peut allonger légèrement le temps de réponse, mais une valeur trop élevée pourrait engendrer un rafraîchissement des textes pas assez fréquent (avec de nouveaux liens, par exemple).'; +$string['configcountry'] = 'Si vous choisissez un pays ici, il sera proposé par défaut lors de la création de nouveaux comptes. Si vous souhaitez forcer les utilisateurs à choisir un pays, laissez ce champ vide.'; +$string['configdebug'] = 'Si vous activez cette option, le paramètre PHP « error_reporting » sera augmenté afin que les avertissements soient affichés. Ceci est utile essentiellement pour les développeurs.'; +$string['configerrorlevel'] = 'Choisir la quantité d\'avertissement PHP que vous souhaitez voir afficher. « Normal » est généralement le meilleur choix.'; +$string['configforcelogin'] = 'Habituellement, il est possible de voir la liste des cours sans se connecter au site. Vous pouvez forcer les utilisateurs à se brancher avant qu\'ils puissent accéder à quoi que ce soit sur votre site Moodle.'; +$string['configframename'] = 'Si vous afficher Moodle dans un cadre, inscrivez le nom de ce cadre. Sinon, laissez la valeur à «_top». '; +$string['configfullnamedisplay'] = 'Ceci définit comment les noms des utilisateurs sont affichés sous leurs formes complètes. Généralement, on préfère «prénom + nom», mais vous pouvez choisir de cacher les noms de famille ou de suivre les conventions d\'affichage inclues dans le module de langue.'; +$string['configgdversion'] = 'Indiquer la version de la librairie GD qui est installée. La version selectionnée par défaut est celle qui a été détectée. Ne pas modifier cette valeur à moins de savoir réellement ce qu\'il en découle.'; +$string['confightmleditor'] = 'Choisir d\'autoriser ou non l\'utilisation de l\'éditeur HTML intégré. Cependant, même s\'il est activé, il n\'apparaît que si l\'utilisateur utilise un navigateur compatible Internet Explorer 5.5 ou plus. Chaque utilisateur peut également choisir de ne pas l\'activer.'; +$string['configidnumber'] = 'Cette option permet de spécifier si : (a) On ne demandera pas aux utilisateurs un numéro d\'identification; (b) On demandera aux utilisateurs un numéro d\'identification, mais pourront le laisser en blanc; On demandera aux utilisateurs un numéro d\'identification et devront le fournir. Le numéro d\'identification est affiché dans le profil des utilisateurs.'; +$string['configintro'] = 'Cette page permet de configurer un certain nombre de variables de configuration qui permettront à Moodle de fonctionner correctement sur ce serveur. Inutile de trop s\'en inquiéter, les paramètres par défaut devraient, la plupart du temps, convenir et il est toujours possible de revenir plus tard sur cette page pour les modifier.'; +$string['configintroadmin'] = 'Sur cette page, vous devez configurer le compte principal d\'administrateur qui aura le contrôle complet de votre site Moodle. Vous devez vous assurer de choisir un nom d\'utilisateur et un mot de passe sécuritaires en plus d\'une adresse de courriel valide. Vous pourrez créer d\'autres comptes d\'administrateur plus tard.'; +$string['configintrosite'] = 'Cette page vous permet de configurer la page d\'accueil et le nom de ce nouveau site. Vous pouvez revenir ici plus tard pour changer ces +informations dans le menu pour la geston du site.'; +$string['configlang'] = 'Choisir une langue par défaut pour l\'ensemble du site. Les utilisateurs ont la possibilité d\'en choisir une autre plus tard.'; +$string['configlangdir'] = 'La plupart des langues sont écrites de gauche à droite excepté certaines, comme l\'Arabe ou l\'Hébreu, qui le sont de droite à gauche'; +$string['configlanglist'] = 'Laissez en blanc pour permettre aux utilisateurs de choisir n\'importe quelle langue que vous avez de disponible dans cette installation de Moodle. Cependant, vous pouvez raccourcir le menu du choix de la langue en écrivant une liste des codes nécessaires, séparés par une virgule. Par exemple : en, es_es, fr, it'; +$string['configlangmenu'] = 'Choisissez si vous voulez montrer le menu du choix de la langue sur la page d\'accueil, la page pour la connexion, etc. Ceci n\'affecte pas le choix de l\'utilisateur indiqué dans son profil.'; +$string['configlocale'] = 'Choisir un environnement régional pour l\'affichage des dates. Les données de cet environnement doivent être installées sur le serveur. Laisser vide en cas de doute.'; +$string['configloglifetime'] = 'Ceci indique la durée pour laquelle vous voulez garder les journaux d\'évènements sur l\'activité des utilisateurs. Les journaux qui sont plus vieux que ce délai sont automatiquement supprimées. Il préférable de maintenir des journaux aussi longs que possible, au cas où vous en auriez besoin. Mais si votre serveur est très occupé vous devriez écourter la durée de vos journaux.'; +$string['configlongtimenosee'] = 'Si les étudiants ne se connectent pas pendant un certain temps, leur inscription aux cours est automatiquement annulée. Ce paramètre donne cette durée.'; +$string['configmaxbytes'] = 'Ceci indique la taille maximale des fichiers qui peuvent être téléversés partout dans le site. Cette valeur est limitée par la valeur PHP upload_max_filesize et la valeur du serveur Apache «LimitRequestBody». Également, la valeur maxbytes limite la gamme des tailles qui peuvent être choisies au niveau de cours ou au niveau du module.'; +$string['configmaxeditingtime'] = 'Ce paramètre indique la durée pendant laquelle les utilisateurs ont la possibilité de modifier un message qu\'ils ont écrit. Habituellement, 30 minutes est une bonne valeur.'; +$string['configopentogoogle'] = 'Si vous activez cette option, Google pourra entrer dans votre site en tant qu\'utilisateur invité. En outre, les internautes arrivant sur votre site depuis une recherche Google seront automatiquement connectés en tant qu\'utilisateur invité. Cela ne permet cependant un accès transparent qu\'aux cours déjà ouverts aux invités.'; +$string['configproxyhost'] = 'Si le serveur qui héberge le site Moodle a besoin d\'utiliser un serveur mandataire (proxy) (dans le cas, par exemple, où il existe un coupefeu sur le réseau), indiquez ici le nom de ce serveur et son numéro de port. Sinon laisser vide.'; +$string['configsecureforms'] = 'Moodle peut employer un niveau additionnel de sécurité lorsqu\'il accepte des données d\'un formulaire Internet. Si ceci est permis, alors la +variable du HTTP_REFERER du fûreteur est vérifiée contre l\'adresse courante du formulaire. Dans très peu de cas, l\'activation de cette option peut poser des problèmes si l\'utilisateur emploie un parefeu (par exemple Zonealarm) configuré pour désactiver HTTP_REFERER. On remarque alors un blocage sur les formulaires Internet. Si par exemple vos utilisateurs ont des problèmes avec la page d\'ouverture, vous pourriez désactiver cette opion, bien qu\'il pourrait laisser votre site plus vulnérable aux attaques pour le vol des mots de passe. En cas de doute, laissez cette option à «oui».'; +$string['configsessioncookie'] = 'Cette option personnalise le nom du témoin (cookie) utilisé pour les sessions de Moodle. Elle est facultative, et permet d\'exécuter plusieurs instances de Moodle sur le même site. +'; +$string['configsessiontimeout'] = 'Lorsqu\'un utilisateur n\'est plus actif, il sera automatiquement déconnecté après le délai indiqué. '; +$string['configslasharguments'] = 'Les fichiers (images, fichiers téléchargés, etc.) sont transmis via un script qui utilise les « slash arguments ». Cette méthode permet à ces fichiers d\'être plus facilement pris en compte par le système de cache des navigateurs Web, proxy, etc. Cependant certains serveurs PHP n\'autorisent pas cette méthode. Par conséquent il est nécessaire d\'utiliser la première valeur de ce paramètre si des problèmes d\'affichage des fichiers ou images téléchargés sont rencontrés.'; +$string['configsmtphosts'] = 'Indiquer le nom complet d\'un ou plusieurs serveurs SMTP locaux que Moodle devra utiliser pour envoyer des émails (par exemple, « mail.a.com » ou « mail.a.com;mail.b.com »). Si ce paramètre est laissé vide, Moodle utilisera la méthode par défaut de PHP pour envoyer des émails.'; +$string['configsmtpuser'] = 'Si vous avez indiqué un nom de serveur SMTP ci-dessus et qu\'il requiert une authentification, entrez ici le nom d\'utilisateur et le mot de passe à utiliser.'; +$string['configteacherassignteachers'] = 'Est-ce qu\'on devrait permettre aux professeurs ordinaires d\'affecter d\'autres professeurs dans des cours qu\'ils enseignent ? Si vous choississez «aucun», alors seulement les créateurs et les administrateurs peuvent affecter des professeurs à des cours.'; +$string['configtimezone'] = 'Vous pouvez indiquer ici le fuseau horaire par défaut. Ce n\'est le fuseau horaire par défaut que pour l\'affichage des dates. Chaque utilisateur peut modifier ce réglage dans son propre profil. Si vous choisissez ici « Server Time », Moodle utilisera le réglage par défaut du serveur où il est installé. Si l\'utilisateur choisit « Server time » dans son profil, le réglage spécifié sera alors utilisé pour lui.'; +$string['configunzip'] = 'Indiquer le chemin complet du programme « unzip » (seulement pour Unix). Ce programme est requis pour décompresser des archives zip sur le serveur.'; +$string['configuration'] = 'Configuration'; +$string['configvariables'] = 'Paramètres techniques'; +$string['configwarning'] = 'Faites attention si vous modifiez cette option - les valeurs incorrectes pourraient poser des problèmes.'; +$string['configzip'] = 'Indiquer le chemin complet du programme « zip » (seulement pour Unix). Ce programme est requis pour réaliser des archives zip sur le serveur.'; +$string['confirmed'] = 'Votre enregistrement a été confirmé'; +$string['confirmednot'] = 'Votre enregistrement n\'a pas été confirmé'; +$string['continue'] = 'Continuer'; +$string['cookiesenabled'] = 'Votre navigateur doit supporter les témoins (cookies)'; +$string['copy'] = 'copie'; +$string['copyingcoursefiles'] = 'Copie des fichiers du cours'; +$string['copyinguserfiles'] = 'Copie des fichiers des utilisateurs'; +$string['copyingzipfile'] = 'Copie des fichiers compressés'; +$string['copyrightnotice'] = 'Copyright'; +$string['country'] = 'Pays'; +$string['course'] = 'Cours'; +$string['courseavailable'] = 'Ce cours est disponible aux étudiants'; +$string['courseavailablenot'] = 'Ce cours n\'est pas disponible aux étudiants'; +$string['coursebackup'] = 'Sauvegarde du cours'; +$string['coursecategories'] = 'Catégories de cours'; +$string['coursecategory'] = 'Catégorie de cours'; +$string['coursecreators'] = 'Concepteurs de cours'; +$string['coursefiles'] = 'Fichiers du cours'; +$string['courseformats'] = 'Formats du cours'; +$string['coursegrades'] = 'Notes du cours'; +$string['courseinfo'] = 'Informations sur le cours'; +$string['courserestore'] = 'Récupération du cours'; +$string['courses'] = 'Cours'; +$string['courseupdates'] = 'Mises à jour du cours'; +$string['courseuploadlimit'] = 'Taille maximale des téléversements'; +$string['create'] = 'Créer'; +$string['createaccount'] = 'Créer mon compte'; +$string['createfolder'] = 'Créer un répertoire dans $a'; +$string['createuserandpass'] = 'Créer un nouveau compte pour vous connecter'; +$string['createziparchive'] = 'Créer une archive zip'; +$string['creatingcategoriesandquestions'] = 'Création des catégories et des questions'; +$string['creatingcoursemodules'] = 'Création des modules du cours'; +$string['creatingevents'] = 'Création des événements'; +$string['creatinggroups'] = 'Création de groupes'; +$string['creatinglogentries'] = 'Création des entrées dans le journal'; +$string['creatingnewcourse'] = 'Création d\'un nouveau cours'; +$string['creatingscales'] = 'Création des échelles'; +$string['creatingsections'] = 'Création des sections'; +$string['creatingtemporarystructures'] = 'Création des structures temporaires'; +$string['creatingusers'] = 'Création des utilisateurs'; +$string['creatingxmlfile'] = 'Création du fichier XML'; +$string['currentcourseadding'] = 'Création du cours, ajout de données dans le cours'; +$string['currentcoursedeleting'] = 'Cours courant, on commence par l\'effacer'; +$string['currentlanguage'] = 'Langue active'; +$string['currentlocaltime'] = 'l\'heure actuelle locale'; +$string['currentrelease'] = 'Information sur la version courante'; +$string['currentversion'] = 'Version courante'; +$string['databasechecking'] = 'Mise-à-jour de la base de données Moodle de la version $a->oldversion vers $a->newversion...'; +$string['databaseperformance'] = 'Efficacité de la base de données'; +$string['databasesetup'] = 'Installation de la base de données'; +$string['databasesuccess'] = 'La base de données a été correctement mise à jour'; +$string['databaseupgradebackups'] = 'La version actuelle de la sauvegarde est : $a'; +$string['databaseupgrades'] = 'Mise à jour de la base de données'; +$string['datemostrecentfirst'] = 'Date - la plus récente en premier'; +$string['datemostrecentlast'] = 'Date - la plus récente en dernier'; +$string['day'] = 'jour'; +$string['days'] = 'jours'; +$string['defaultcoursefullname'] = 'Nom complet du cours 101'; +$string['defaultcourseshortname'] = 'CF101'; +$string['defaultcoursestudent'] = 'Étudiant'; +$string['defaultcoursestudents'] = 'Étudiants'; +$string['defaultcoursesummary'] = 'Écrire un paragraphe concis et précis qui décrit le cours'; +$string['defaultcourseteacher'] = 'Enseignant'; +$string['defaultcourseteachers'] = 'Enseignants'; +$string['delete'] = 'Supprimer'; +$string['deleteall'] = 'Tout effacer'; +$string['deletecheck'] = 'Supprimer $a ?'; +$string['deletecheckfiles'] = 'Êtes-vous certain de vouloir effacer ces fichiers?'; +$string['deletecheckfull'] = 'Êtes-vous certain de vouloir supprimer le $a ?'; +$string['deletecheckwarning'] = 'Vous allez effacer ces fichiers'; +$string['deletecompletely'] = 'Supprimer entièrement'; +$string['deletecourse'] = 'Supprimer un cours'; +$string['deletecoursecheck'] = 'Êtes-vous certain de vouloir entièrement supprimer ce cours et toutes les données qu\'il contient ?'; +$string['deleted'] = 'Supprimé'; +$string['deletedactivity'] = '$a supprimé'; +$string['deletedcourse'] = '$a a été entièrement supprimé'; +$string['deletednot'] = 'Impossible de supprimer $a !'; +$string['deleteselected'] = 'Effacement sélectionné'; +$string['deletingcourse'] = 'Suppression de $a'; +$string['deletingexistingcoursedata'] = 'Effacement des données du cours'; +$string['deletingolddata'] = 'Effacement des données antérieures'; +$string['department'] = 'Département'; +$string['description'] = 'Description'; +$string['disable'] = 'Désactiver'; +$string['displayingfirst'] = 'Seulement le premier $a->count $a->things sont affichés'; +$string['displayingrecords'] = '$a évènements affichés'; +$string['displayingusers'] = 'Affichage des utilisateurs de $a->start à $a->end'; +$string['documentation'] = 'Documentation de Moodle'; +$string['donotask'] = 'Ne pas demander'; +$string['down'] = 'Vers le bas'; +$string['downloadexcel'] = 'Télécharger dans un format tableur'; +$string['downloadtext'] = 'Télécharger dans un format texte'; +$string['doyouagree'] = 'Avez-vous lu et compris ces conditions ?'; +$string['edit'] = 'Modifier $a'; +$string['editcoursesettings'] = 'Paramètres du cours'; +$string['editgroupprofile'] = 'Modifier le profil du groupe'; +$string['editinga'] = 'Modifier un $a'; +$string['editmyprofile'] = 'Modifier mon profil'; +$string['editsummary'] = 'Modifier le résumé'; +$string['editthisactivity'] = 'Modifier cette activité'; +$string['editthiscategory'] = 'Modifier cette catégorie'; +$string['edituser'] = 'Modifier les comptes des utilisateurs'; +$string['email'] = 'Adresse de courriel'; +$string['emailagain'] = 'Envoyer le courriel (encore)'; +$string['emailconfirm'] = 'Confirmer votre enregistrement'; +$string['emailconfirmation'] = '$a->firstname, +La création d\'un compte sur le site « $a->sitename » a été demandée en utilisant votre adresse de courriel. Pour confirmer votre enregistrement, veuillez vous rendre à l\'adresse suivante : + + $a->link + +Si cela ne fonctionne pas, copiez et collez ce lien dans la ligne adresse de votre navigateur Web. + +Cordialement, + +$a->admin +Administrateur du site « $a->sitename »'; +$string['emailconfirmationsubject'] = '$a: confirmation du compte'; +$string['emailconfirmsent'] = '

                            Un courriel vous a été envoyé à l\'adresse $a +

                            Il contient les instructions pour compléter votre enregistrement. +

                            Si vous rencontrez des difficultés, contactez l\'administrateur du site.'; +$string['emaildisable'] = 'Cette adresse de courriel est désactivée.'; +$string['emaildisplay'] = 'Affichage du courriel'; +$string['emaildisplaycourse'] = 'Seuls les membres du cours sont autorisés à voir mon adresse de courriel.'; +$string['emaildisplayno'] = 'Cacher mon adresse de courriel à tous'; +$string['emaildisplayyes'] = 'Autoriser tout le monde à voir mon adresse de courriel'; +$string['emailenable'] = 'Cette adresse de courriel est activée.'; +$string['emailexists'] = 'Cette adresse est déjà utilisée.'; +$string['emailformat'] = 'Format des courriels'; +$string['emailmustbereal'] = 'Note: votre adresse de courriel doit être valide'; +$string['emailpasswordconfirmation'] = 'Bonjour $a->firstname, +Quelqu\'un (probablement vous-même) a demandé un nouveau mot de passe pour votre compte sur le site \'$a->sitename\'. + +Pour confirmer ce changement et pour que le nouveau mot de passe vous soit envoyé par courriel, rendez-vous à l\'adresse suivante : + +$a->link + +Si cela ne fonctionne pas, copiez l\'adresse dans la ligne d\'adresse URL de votre navigateur. + +Si vous avez besoin d\'aide, veuillez contacter l\'administrateur de ce site : + +$a->admin'; +$string['emailpasswordconfirmationsubject'] = '$a: confirmation du changement du mot de passe'; +$string['emailpasswordconfirmsent'] = 'Un courriel vous a été envoyé à l\'adresse $a. +

                            Il contient les instructions nécessaires pour confirmer et compléter le changement de votre mot de passe. Si vous éprouvez encore des difficultés, veuillez contacter l\'administrateur de ce site.'; +$string['emailpasswordsent'] = 'Le changement de votre mot de passe a été confirmé. +

                            Un courriel contenant votre nouveau mot de passe vous été envoyé à l\'adresse $a->email. +

                            Ce mot de passe a été automatiquement généré. Pour le modifier, rendez-vous à l\'adresse : +link>.'; +$string['enable'] = 'Activer'; +$string['enrolledincourse'] = 'Inscrit dans le cours \"$a\"'; +$string['enrolledincoursenot'] = 'Pas inscrit dans le cours \"$a\"'; +$string['enrolmentconfirmation'] = 'Vous allez vous inscrire à ce cours.
                            Est-cela que vous désirez?'; +$string['enrolmentkey'] = 'Clé d\'inscription'; +$string['enrolmentkeyfrom'] = 'Ce cours nécessite une clé d\'inscription que vous aurez à entrer qu\'une seule fois. Vous pouvez l\'obtenir de $a.'; +$string['enrolmentkeyhint'] = 'Cette clé d\'inscription est incorrecte, veuillez essayer de nouveau
                            +(La clé commence par « $a ».)'; +$string['entercourse'] = 'Cliquez pour entrer dans le cours'; +$string['enteremailaddress'] = 'Entrez votre adresse de courriel afin qu\'un nouveau mot de passe vous soit envoyé.'; +$string['error'] = 'Erreur'; +$string['errortoomanylogins'] = 'Désolé, le nombre maximum de tentatives a été atteint. Veuillez redémarrer votre navigateur Web.'; +$string['errorwhenconfirming'] = 'Votre inscription n\'est pas encore confirmée à cause d\'une erreur. Si vous êtes arrivé ici en cliquant sur un lien dans un courriel, assurez-vous que le lien est sur la même ligne et pas sur deux lignes.'; +$string['executeat'] = 'Exécuté à'; +$string['existing'] = 'Existant'; +$string['existingadmins'] = 'Administrateurs actuels'; +$string['existingcourse'] = 'Cours existants'; +$string['existingcourseadding'] = 'Cours existants, ajouts de données à ces cours'; +$string['existingcoursedeleting'] = 'Cours existants, on les efface en premier'; +$string['existingcreators'] = 'Créateurs de cours actuels'; +$string['existingstudents'] = 'Étudiants inscrits'; +$string['existingteachers'] = 'Enseignants actuels'; +$string['feedback'] = 'Rétroaction'; +$string['filemissing'] = '$a est manquant'; +$string['files'] = 'Fichiers'; +$string['filesfolders'] = 'Fichiers / répertoires'; +$string['filloutallfields'] = 'Veuillez remplir tous les champs de ce formulaire'; +$string['findmorecourses'] = 'Chercher d\'autres cours...'; +$string['firstdayofweek'] = '1'; +$string['firstname'] = 'Prénom'; +$string['firsttime'] = 'En êtes-vous à votre première visite sur ce site ?'; +$string['followingoptional'] = 'Les éléments suivants sont optionnels'; +$string['followingrequired'] = 'Les éléments suivants sont requis'; +$string['force'] = 'Forcé'; +$string['forcedmode'] = 'mode imposé'; +$string['forcelanguage'] = 'Imposer la langue'; +$string['forceno'] = 'Ne pas imposer'; +$string['forgotten'] = 'Vous avez oublié votre nom d\'utilisateur et/ou mot de passe ?'; +$string['format'] = 'Format du cours'; +$string['formathtml'] = 'Format HTML'; +$string['formatplain'] = 'Format de texte standard'; +$string['formatsocial'] = 'Informel'; +$string['formattext'] = 'Auto-format Moodle'; +$string['formattexttype'] = 'Mise en forme'; +$string['formattopics'] = 'Par module'; +$string['formatweeks'] = 'En semaines'; +$string['formatwiki'] = 'Format Wiki'; +$string['from'] = 'De'; +$string['frontpagecategorynames'] = 'Afficher la liste des catégories'; +$string['frontpagecourselist'] = 'Afficher la liste des groupes'; +$string['frontpagedescription'] = 'Description sur la page d\'accueil'; +$string['frontpageformat'] = 'Format de la page d\'accueil'; +$string['frontpagenews'] = 'Afficher les nouveaux articles'; +$string['fulllistofcourses'] = 'Liste complète des cours'; +$string['fullname'] = 'Nom complet'; +$string['fullnamedisplay'] = '$a->firstname $a->lastname'; +$string['fullprofile'] = 'Profil complet'; +$string['fullsitename'] = 'Nom complet du site'; +$string['gd1'] = 'GD 1.x est installé'; +$string['gd2'] = 'GD 2.x est installé'; +$string['gdneed'] = 'GD doit être installé pour voir ce graphique'; +$string['gdnot'] = 'GD n\'est pas installé'; +$string['gpl'] = 'Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com)

                            Ce programme est un logiciel libre; vous pouvez le redistribuer et/ou le modifier en vous conformant à la license GNU du «Free Software Foundation», version 2 ou ultérieure. Ce programme est distribué dans l\'espoir qu\'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite pour une VALEUR MARCHANDE quelconque ou en fonction de son utilisation POUR UN BUT PARTICULIER. Voyez la license GNU pour plus de détails : +http://www.gnu.org/copyleft/gpl.html'; +$string['grade'] = 'Note'; +$string['grades'] = 'Notes'; +$string['group'] = 'Groupe'; +$string['groupadd'] = 'Ajouter un nouveau groupe'; +$string['groupaddusers'] = 'Ajouter les noms choisis au groupe'; +$string['groupinfo'] = 'Informations sur les groupes sélectionnés'; +$string['groupinfomembers'] = 'Informations sur les membres du groupe'; +$string['groupinfopeople'] = 'Informations sur les gens choisis'; +$string['groupmemberssee'] = 'Voir les membres du groupe'; +$string['groupmembersselected'] = 'Membres des groupes sélectionnés'; +$string['groupmode'] = 'Mode Groupe'; +$string['groupmodeforce'] = 'Forcer le mode Groupe'; +$string['groupmy'] = 'Mon groupe'; +$string['groupnonmembers'] = 'Personnes n\'appartenant pas à un groupe'; +$string['grouprandomassign'] = 'Affecter au hasard tout le monde à des groupes'; +$string['groupremove'] = 'Retirer les groupes sélectionnés'; +$string['groupremovemembers'] = 'Retirer les membres sélectionnés'; +$string['groups'] = 'Groupes'; +$string['groupsnone'] = 'Pas de groupes'; +$string['groupsseparate'] = 'Séparer les groupes'; +$string['groupsvisible'] = 'Groupes visibles'; +$string['guestskey'] = 'Autoriser les visiteurs anonymes qui ont la clé'; +$string['guestsno'] = 'Ne pas autoriser les visiteurs anonymes à entrer'; +$string['guestsnotallowed'] = 'Désolé, « $a » n\'autorise pas les visiteurs anonymes à entrer.'; +$string['guestsyes'] = 'Autoriser les visiteurs anonymes sans clé'; +$string['guestuser'] = 'Visiteur anonyme'; +$string['guestuserinfo'] = 'Cet utilisateur a un statut particulier qui lui donne accès en lecture seulement à certains cours.'; +$string['help'] = 'Aide'; +$string['helpemoticons'] = 'Utiliser les binettes'; +$string['helpformatting'] = 'À propos du formatage de texte'; +$string['helphtml'] = 'Comment utiliser les balises HTML'; +$string['helpindex'] = 'Index de tous les fichiers d\'aide'; +$string['helppicture'] = 'Ajouter une image'; +$string['helpquestions'] = 'Formuler des questions pertinentes'; +$string['helpreading'] = 'Lire attentivement'; +$string['helprichtext'] = 'À propos de l\'éditeur « Richtext »'; +$string['helpsummaries'] = 'À propos de ces résumés'; +$string['helptext'] = 'Comment rédiger un texte'; +$string['helpwiki'] = 'Comment rédiger un texte Wiki'; +$string['helpwriting'] = 'Écrire soigneusement'; +$string['hide'] = 'Cacher'; +$string['hidepicture'] = 'Cacher l\'image'; +$string['hits'] = 'Requêtes'; +$string['hitsoncourse'] = 'Nombre de requêtes de $a->username sur $a->coursename'; +$string['hitsoncoursetoday'] = 'Nombre de requêtes de $a->username sur $a->coursename pour aujourd\'hui'; +$string['home'] = 'Accueil'; +$string['hour'] = 'heure'; +$string['hours'] = 'heures'; +$string['howtomakethemes'] = 'Comment fabriquer de nouveaux thèmes'; +$string['htmleditor'] = 'Utiliser l\'éditeur « Richtext » (Internet Explorer 5.5 ou supérieur requis)'; +$string['htmleditoravailable'] = 'L\'éditeur « Richtext » est disponible'; +$string['htmleditordisabled'] = 'Vous avez désactivé l\'utilisation de l\'éditeur « Richtext » dans votre profil d\'utilisateur'; +$string['htmleditordisabledadmin'] = 'L\'administrateur a désactivé l\'utilisation de l\'éditeur « Richtext » sur ce site'; +$string['htmleditordisabledbrowser'] = 'L\'éditeur « Richtext » n\'est pas disponible car vous n\'utilisez pas un navigateur Internet Explorer version 5.5 ou supérieur'; +$string['htmlformat'] = 'Format HTML modifié'; +$string['icqnumber'] = 'Numéro ICQ'; +$string['idnumber'] = 'Numéro d\'identification'; +$string['inactive'] = 'Inactif'; +$string['include'] = 'Inclure'; +$string['includeallusers'] = 'Inclure tous les utilisateurs'; +$string['includecoursefiles'] = 'Inclure tous les cours'; +$string['includecourseusers'] = 'Inclure tous les participants du cours'; +$string['included'] = 'Inclu'; +$string['includelogentries'] = 'Inclure les évènements du journal'; +$string['includemodules'] = 'Inclure Modules'; +$string['includeneededusers'] = 'Inclure les utilisateurs requis'; +$string['includeuserfiles'] = 'Inclure tous les fichiers des utilisateurs'; +$string['institution'] = 'Institution'; +$string['invalidemail'] = 'Adresse de courriel invalide'; +$string['invalidlogin'] = 'Désolé, informations incorrectes. Essayer de nouveau SVP.'; +$string['jumpto'] = 'Aller à...'; +$string['keep'] = 'Conserver'; +$string['langltr'] = 'La langue est écrite de gauche à droite'; +$string['langrtl'] = 'La langue est écrite de droite à gauche'; +$string['language'] = 'Langue'; +$string['languagegood'] = 'Le contenu de cette langue est à jour ! :o)'; +$string['lastaccess'] = 'Dernier accès'; +$string['lastedited'] = 'Éditer le'; +$string['lastlogin'] = 'Dernière connexion'; +$string['lastmodified'] = 'Modifié le'; +$string['lastname'] = 'Nom'; +$string['latestlanguagepack'] = 'Vérifier s\'il y a des nouveaux modules de langues dans moodle.org'; +$string['latestnews'] = 'Dernières nouvelles'; +$string['leavetokeep'] = 'Laisser vide pour ne pas changer le mot de passe'; +$string['license'] = 'Licence GPL'; +$string['list'] = 'Liste'; +$string['listfiles'] = 'Liste des fichiers dans $a'; +$string['listofallpeople'] = 'Liste de tous les participants'; +$string['livelogs'] = 'Évènements de la dernière heure'; +$string['locale'] = 'fr_CA'; +$string['location'] = 'Emplacement'; +$string['loggedinas'] = '« $a » connecté'; +$string['loggedinnot'] = 'Non connecté.'; +$string['login'] = 'Connexion'; +$string['loginas'] = 'Connexion comme'; +$string['loginguest'] = 'Connexion comme visiteur anonyme'; +$string['loginsite'] = 'Se connecter sur le site'; +$string['loginsteps'] = 'Bonjour. Pour un accès complet aux cours, prenez une minute pour vous créer un compte personnel sur ce site.
                            +Chaque cours peut également nécessiter une clé d\'inscription que vous aurez à entrer qu\'une seule fois (vous n\'en avez pas pas besoin pour l\'instant.
                            + +Voici les étapes à suivre : + +

                              +
                            1. Remplir le formulaire nouveau compte. +
                            2. Un courriel vous sera immédiatement envoyé. +
                            3. Récupérer ce courriel et cliquer sur le lien Web qu\'il contient. +
                            4. Votre inscription sera alors confirmée et vous serez connecté. +
                            5. Vous pourrez ensuite choisir le cours auquel vous souhaitez vous inscrire. +
                            6. Si une clé d\'inscription vous est demandée, utilisez celle que votre professeur vous aura communiquée. +
                            7. Vous aurez alors un accès au cours complet. À votre prochaine visite il vous suffira d\'entrer votre nom d\'utilisateur et mot de passe (dans le formulaire ci-contre) afin de vous identifier et d\'accéder à tous les cours auxquels vous serez inscrit. +
                            '; +$string['loginstepsnone'] = 'Bonjour !

                            Pour un accès complet aux cours vous devez vous créer un compte.

                            Pour cela, vous avez seulement besoin de choisir un nom d\'utilisateur et un mot de passe à entrer dans le formulaire de cette page.

                            Si ce nom est déjà utilisé, on vous demandera d\'en choisir un autre.'; +$string['loginto'] = 'Se connecter sur $a'; +$string['loginusing'] = 'Connectez-vous ici en utilisant votre nom d\'utilisateur
                            et votre mot de passe'; +$string['logout'] = 'Déconnexion'; +$string['logs'] = 'Journal des évènements'; +$string['mainmenu'] = 'Menu principal'; +$string['makeafolder'] = 'Créer un répertoire'; +$string['makeeditable'] = 'Si le serveur Web (par exemple Apache) possède un accès en écriture à ce fichier, alors il sera possible de le modifier directement depuis cette page'; +$string['managedatabase'] = 'Gérer la base de données'; +$string['managefilters'] = 'Filtres'; +$string['managemodules'] = 'Gérer les modules'; +$string['markedthistopic'] = 'Ce sujet est mis en évidence en tant que sujet courant'; +$string['markthistopic'] = 'Marquer ce sujet comme sujet courant'; +$string['maximumchars'] = '$a caractères maximum'; +$string['maximumgrade'] = 'Note maximale'; +$string['maximumshort'] = 'Max'; +$string['maximumupload'] = 'Taille maximale pour les téléversements'; +$string['maxsize'] = 'Taille maximale : $a'; +$string['min'] = 'min'; +$string['mins'] = 'mins'; +$string['miscellaneous'] = 'Divers'; +$string['missingcategory'] = 'Vous devez choisir un programme'; +$string['missingcity'] = 'Ville manquante'; +$string['missingcountry'] = 'Pays manquant'; +$string['missingdescription'] = 'Description manquante'; +$string['missingemail'] = 'Adresse de courriel manquante'; +$string['missingfirstname'] = 'Prénom manquant'; +$string['missingfullname'] = 'Nom complet manquant'; +$string['missinglastname'] = 'Nom manquant'; +$string['missingname'] = 'Nom manquant'; +$string['missingnewpassword'] = 'Nouveau mot de passe manquant'; +$string['missingpassword'] = 'Mot de passe manquant'; +$string['missingshortname'] = 'Diminutif manquant'; +$string['missingshortsitename'] = 'Dimunitif du site manquant'; +$string['missingsitedescription'] = 'Description du site manquant'; +$string['missingsitename'] = 'Nom du site manquant'; +$string['missingstrings'] = 'Vérifier les chaînes manquantes'; +$string['missingstudent'] = 'Vous devez choisir un étudiant'; +$string['missingsummary'] = 'Résumé manquant'; +$string['missingteacher'] = 'Vous devez choisir un enseignant'; +$string['missingurl'] = 'Adresse URL manquante'; +$string['missingusername'] = 'Nom d\'utilisateur manquant'; +$string['modified'] = 'Modifié'; +$string['moduledeleteconfirm'] = 'Vous vous apprétez à effacer complétement le module \'$a\'. Ceci va effacer toutes les données associées à ce module dans la base de données. Êtes-vous certain de vouloir continuer&'; +$string['moduledeletefiles'] = 'Toutes les données associées au module \'$a->module\' ont été effacées de la base de données. Pour compléter cet effacement et empêcher que le module se réinstalle, vous devriez effacer tout de suite le répertoire suivant du serveur : $a->directory'; +$string['modulesetup'] = 'Installation des tables des modules'; +$string['modulesuccess'] = 'Les tables de $a ont été installées correctement'; +$string['moodleversion'] = 'Version de Moodle'; +$string['mostrecently'] = 'le plus récemment'; +$string['move'] = 'Déplacer'; +$string['movecategoryto'] = 'Déplacer la catégorie à :'; +$string['movecourseto'] = 'Déplacer le cours à :'; +$string['movedown'] = 'Descendre'; +$string['movefilestohere'] = 'Déplacer les fichiers ici'; +$string['movefull'] = 'Déplacer $a à cet endroit'; +$string['movehere'] = 'Déplacer ici'; +$string['moveleft'] = 'Déplacer à gauche'; +$string['moveright'] = 'Déplacer à droite'; +$string['moveselectedcoursesto'] = 'Déplacer les cours sélectionnés à ...'; +$string['movetoanotherfolder'] = 'Déplacer vers un autre répertoire'; +$string['moveup'] = 'Monter'; +$string['mustconfirm'] = 'Vous devez confirmer votre enregistrement'; +$string['mycourses'] = 'Mes cours'; +$string['name'] = 'Nom'; +$string['namesocial'] = 'section'; +$string['nametopics'] = 'sujet'; +$string['nameweeks'] = 'semaine'; +$string['needed'] = 'Requis'; +$string['never'] = 'Jamais'; +$string['neverdeletelogs'] = 'Ne jamais détruire le journal des évènements'; +$string['new'] = 'Nouveau'; +$string['newaccount'] = 'Nouveau compte'; +$string['newcourse'] = 'Nouveau cours'; +$string['newpassword'] = 'Nouveau mot de passe'; +$string['newpasswordtext'] = 'Bonjour $a->firstname, +Le mot de passe de votre compte sur \'$a->sitename\' +a été remplacé par un nouveau mot de passe temporaire. +Les informations pour vous connecter sont désormais : + compte : $a->username + mot de passe : $a->newpassword +Veuillez vous rendre sur cette page afin de changer de mot de passe : + $a->link +Dans la plupart des logiciels de messagerie, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez et collez ce lien dans la ligne adresse de votre navigateur Web. +Cordialement, +$a->admin +Administrateur du site \'$a->sitename\''; +$string['newpicture'] = 'Nouvelle image'; +$string['newsitem'] = 'article'; +$string['newsitems'] = 'articles'; +$string['newsitemsnumber'] = 'Articles récents à afficher'; +$string['newuser'] = 'Nouvel utilisateur'; +$string['newusers'] = 'Nouveaux utilisateurs'; +$string['next'] = 'Suivant'; +$string['no'] = 'Non'; +$string['nocoursesfound'] = 'Aucun cours n\'a été trouvé que contenait les mots \'$a\''; +$string['nocoursesyet'] = 'Il n\'y a pas encore de cours'; +$string['noexistingadmins'] = 'Aucun administrateur ! Ceci est une erreur majeure qui ne devrait jamais se produire!!'; +$string['noexistingcreators'] = 'Il n\'existe pas de concepteurs de cours'; +$string['noexistingstudents'] = 'Il n\'y a pas d\'étudiants'; +$string['noexistingteachers'] = 'Il n\'y a pas d\'enseignants'; +$string['nofilesselected'] = 'Aucun fichier n\'a été choisi pour la récupération'; +$string['nofilesyet'] = 'Aucun fichier n\'a encore été téléversé dans votre cours'; +$string['nograde'] = 'Pas de note'; +$string['noimagesyet'] = 'Aucune image n\'a encore été téléversée dans ce cours'; +$string['nomorecourses'] = 'Aucun autre cours correspondand n\'a été trouvé'; +$string['none'] = 'Aucun'; +$string['nopotentialadmins'] = 'Aucun administrateur potentiel'; +$string['nopotentialcreators'] = 'Pas de concepteurs de cours potentiels'; +$string['nopotentialstudents'] = 'Pas d\'étudiants potentiels'; +$string['nopotentialteachers'] = 'Aucun enseignant potentiel'; +$string['normal'] = 'Normale'; +$string['normalfilter'] = 'Moins de critères'; +$string['nostudentsfound'] = '$a pas trouvé'; +$string['nostudentsyet'] = 'Pas d\'étudiant inscrit à ce cours pour l\'instant'; +$string['nosuchemail'] = 'Adresse de courriel inconnue'; +$string['notavailable'] = 'Pas disponible'; +$string['noteachersyet'] = 'Aucun professeur dans ce cours pour l\'instant'; +$string['notenrolled'] = '$a n\'est pas inscrit à ce cours.'; +$string['noteuserschangednonetocourse'] = 'Note : On doit récupérer également les utilisateurs lorsqu\'on récupère leurs données. Cela a été fait pour vous.'; +$string['nothingnew'] = 'Rien de nouveau depuis votre dernière visite'; +$string['notincluded'] = 'Pas inclu'; +$string['notingroup'] = 'Désolé, vous devez faire partie d\'un groupe pour participer à cette activité.'; +$string['nousersmatching'] = 'Aucun utilisateur ne correspond à \'$a\''; +$string['nousersyet'] = 'Il n\'y pas encore d\'utilisteur'; +$string['now'] = 'maintenant'; +$string['numberweeks'] = 'Nombre de semaines ou sujets'; +$string['numdays'] = '$a jours'; +$string['numhours'] = '$a heures'; +$string['numminutes'] = '$a minutes'; +$string['numseconds'] = '$a secondes'; +$string['numviews'] = '$a vues'; +$string['numweeks'] = '$a semaines'; +$string['numwords'] = '$a mots'; +$string['numyears'] = '$a ans'; +$string['ok'] = 'Ok'; +$string['opentoguests'] = 'Accès comme visiteur anonyme'; +$string['optional'] = 'optionnel'; +$string['order'] = 'Ordre'; +$string['other'] = 'Autre'; +$string['outline'] = 'Aperçu'; +$string['page'] = 'Page'; +$string['parentlanguage'] = 'fr'; +$string['participants'] = 'Participants'; +$string['password'] = 'Mot de passe'; +$string['passwordchanged'] = 'Le mot de passe a été changé'; +$string['passwordconfirmchange'] = 'Confirmer le changement du mot de passe'; +$string['passwordrecovery'] = 'Oui, j\'ai besoin d\'aide pour me connecter'; +$string['passwordsdiffer'] = 'Les mots de passe ne correspondent pas'; +$string['passwordsent'] = 'Le mot de passe a été envoyé'; +$string['passwordsenttext'] = '

                            Un courriel vous a été envoyé à cette adresse : $a->email. +

                            Veuillez lire ce courriel afin de récupérer votre nouveau mot de passe +

                            Ce nouveau mot de passe a été généré automatiquement, vous voudrez +sans doute
                            le link>modifier afin qu\'il vous soit plus facile de vous en rappeler.'; +$string['people'] = 'La classe'; +$string['personalprofile'] = 'Profil personnel'; +$string['phone'] = 'Téléphone'; +$string['phpinfo'] = 'Informations PHP'; +$string['popupwindow'] = 'Ouvrir ce fichier dans une nouvelle fenêtre'; +$string['potentialadmins'] = 'Administrateurs potentiels'; +$string['potentialcreators'] = 'Concepteurs de cours potentiels'; +$string['potentialstudents'] = 'Étudiants potentiels'; +$string['potentialteachers'] = 'Enseignants potentiels'; +$string['preferredlanguage'] = 'Langue préférée'; +$string['preview'] = 'Aperçu'; +$string['previeworchoose'] = 'Aperçu ou choix d\'un thème'; +$string['previous'] = 'Précédent'; +$string['publicdirectory'] = 'Répertoire publique'; +$string['publicdirectory0'] = 'Ne pas publier ce site'; +$string['publicdirectory1'] = 'Publier uniquement le nom du site'; +$string['publicdirectory2'] = 'Publier le nom du site avec son lien'; +$string['publicsitefileswarning'] = 'Note : Les fichiers rangés ici sont accessibles par tout le monde.'; +$string['question'] = 'Question'; +$string['readinginfofrombackup'] = 'Lecture des informations sur la sauvegarde'; +$string['readme'] = 'LISEZMOI'; +$string['recentactivity'] = 'Activité(s) récente(s)'; +$string['recentactivityreport'] = 'Rapport complet des activités récentes...'; +$string['registration'] = 'Enregistrement de Moodle'; +$string['registrationemail'] = 'Avis par courriel'; +$string['registrationinfo'] = 'Cette page vous permet d\'enregistrer votre site Moodle auprès de moodle.org. L\'enregistrement est gratuit. Vous serez ajouter à une liste de diffusion de nouvelles et vous bénificierez ainsi d\'avis sur des failles de sécurité ou sur de nouvelles versions de Moodle. Il y aura peu d\'envois à partir de cette liste. +

                            Par défaut, toutes les informations que vous fournissez demeureront confidentielles. La seule raison pour la collecte de ces informations est de fournir du support et d\'accumuler des données sur l\'utilisation de Moodle et de la communauté qui l\'utilise. +

                            Si vous le désirez, vous pouvez ajouter le nom de votre site, son adresse URL et votre pays à la lsite des sites Moodle. +

                            Tous les nouveaux enregistrements seront vérifiés manuellement avant d\'être ajoutés à la liste, mais une fois inscrit, vous pouvez mettre à jour votre inscription en tout temps.'; +$string['registrationno'] = 'Non, je ne désire pas recevoir de courriels.'; +$string['registrationsend'] = 'Envoyer l\'enregistrement à moodle.org'; +$string['registrationyes'] = 'Oui, veuillez m\'avertir de toutes nouvelles importantes'; +$string['removeadmin'] = 'Supprimer cet administrateur'; +$string['removecreator'] = 'Supprimer ce concepteur de cours'; +$string['removestudent'] = 'Enlever l\'étudiant'; +$string['removeteacher'] = 'Enlever l\'enseignant'; +$string['rename'] = 'Renommer'; +$string['renamefileto'] = 'Renommer $a à '; +$string['required'] = 'Requis'; +$string['requireskey'] = 'Ce cours nécessite une clé d\'inscription'; +$string['resortcoursesbyname'] = 'Trier de nouveau les cours par nom'; +$string['resources'] = 'Ressources'; +$string['restore'] = 'Restaurer'; +$string['restorecancelled'] = 'Récupération annulée'; +$string['restorecoursenow'] = 'Récupérer ce cours maintenant!'; +$string['restorefinished'] = 'Récupération réussie'; +$string['restoreto'] = 'Récupérer dans'; +$string['returningtosite'] = 'Retourner à ce site web?'; +$string['revert'] = 'Version précédente'; +$string['role'] = 'Rôle'; +$string['savechanges'] = 'Enregistrer les changements'; +$string['saveto'] = 'Sauvegarder à'; +$string['scale'] = 'Échelle'; +$string['scales'] = 'Échelles'; +$string['scalescustom'] = 'Échelle personnalisée'; +$string['scalescustomcreate'] = 'Ajouter une nouvelle échelle'; +$string['scalescustomno'] = 'Aucune échelle personnalisée n\'a été créée'; +$string['scalesstandard'] = 'Échelle standard'; +$string['scalestip'] = 'Utilisez le lien «Échelle...» dans le menu «Administration» de la page d\'accueil du cours pour créer vos propres échelles.'; +$string['schedule'] = 'Horaire'; +$string['scheduledbackupstatus'] = 'État des sauvegardes planifiées'; +$string['search'] = 'Chercher'; +$string['searchagain'] = 'Chercher de nouveau'; +$string['searchcourses'] = 'Chercher dans les cours'; +$string['searchhelp'] = 'Vous pouvez effectuer une recherche comportant plusieurs mots.

                            mot : trouver toutes les occurences de ce mot (séquence de lettres).
                            +mot : on cherche très exactement ce mot.
                            -mot : ce mot ne doit pas apparaître dans les résultats de la recherche'; +$string['searchresults'] = 'Résultats de la recherche'; +$string['sec'] = 'sec'; +$string['secs'] = 'secs'; +$string['section'] = 'Section'; +$string['sections'] = 'Sections'; +$string['select'] = 'Choisir'; +$string['selectacountry'] = 'Choisir un pays'; +$string['selectednowmove'] = '$a fichiers ont été sélectionnés pour être déplacés. Cliquez \"Déplacer les fichiers ici\" à l\'endroit où vous désirez déplacer les fichiers.'; +$string['senddetails'] = 'Me les envoyer par courriel'; +$string['serverlocaltime'] = 'Heure courante du serveur'; +$string['settings'] = 'Paramètres'; +$string['shortname'] = 'Nom abrégé'; +$string['shortnametaken'] = 'Le titre abrégé du cours est déjà utilisé ailleurs ($a)'; +$string['shortsitename'] = 'Nom abrégé du site (un mot unique)'; +$string['show'] = 'Afficher'; +$string['showall'] = 'Montrer tous les $a'; +$string['showallcourses'] = 'Afficher tous les cours'; +$string['showalltopics'] = 'Afficher tous les sujets'; +$string['showallusers'] = 'Montrer tous les utilisateurs'; +$string['showallweeks'] = 'Afficher toutes les semaines'; +$string['showgrades'] = 'Montrer les notes'; +$string['showlistofcourses'] = 'Afficher la liste des cours'; +$string['showonlytopic'] = 'Afficher uniquement le sujet $a'; +$string['showonlyweek'] = 'Afficher uniquement la semaine $a'; +$string['showrecent'] = 'Afficher les évènements récents'; +$string['showreports'] = 'Afficher les rapports d\'activités'; +$string['showtheselogs'] = 'Afficher ces évènements'; +$string['since'] = 'Depuis'; +$string['site'] = 'Site'; +$string['sitefiles'] = 'Fichiers du site'; +$string['sitelogs'] = 'Journal des évènements'; +$string['sitenews'] = 'Nouvelles'; +$string['sites'] = 'Sites'; +$string['sitesettings'] = 'Configuration du site'; +$string['size'] = 'Taille'; +$string['sizeb'] = 'octets'; +$string['sizegb'] = 'Go'; +$string['sizekb'] = 'ko'; +$string['sizemb'] = 'Mo'; +$string['socialheadline'] = 'Forum public - derniers sujets'; +$string['someallowguest'] = 'Les visiteurs anonymes peuvent accéder à
                            certains cours'; +$string['someerrorswerefound'] = 'Certaines informations manquent ou sont incorrectes. Voir ci-dessous.'; +$string['sortby'] = 'Trier par'; +$string['startdate'] = 'Date de début du cours'; +$string['startsignup'] = 'Créer immédiatement un nouveau compte !'; +$string['state'] = 'État/province'; +$string['status'] = 'Statuts'; +$string['strftimedate'] = '%%Y - %%m - %%d'; +$string['strftimedateshort'] = '%%d %%B'; +$string['strftimedatetime'] = '%%Y - %%m - %%d, %%H:%%M'; +$string['strftimedaydate'] = '%%A, %%d %%B %%Y'; +$string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%H:%%M '; +$string['strftimerecent'] = ' %%d %%b, %%H:%%M'; +$string['strftimerecentfull'] = ' %%a, %%d %%b %%Y, %%H:%%M'; +$string['strftimetime'] = '%%H:%%M'; +$string['stringsnotset'] = 'Les chaînes suivantes ne sont pas définies dans $a'; +$string['studentnotallowed'] = 'Désolé, mais vous ne pouvez entrer dans ce cours en tant que « $a »'; +$string['students'] = 'Étudiants'; +$string['subcategories'] = 'Sous-catégories'; +$string['success'] = 'Succès'; +$string['summary'] = 'Résumé'; +$string['summaryof'] = 'Résumé de $a'; +$string['supplyinfo'] = 'Veuillez fournir ces quelques informations'; +$string['teacheronly'] = 'pour $a uniquement'; +$string['teacherroles'] = '$a rôles'; +$string['teachers'] = 'Professeurs'; +$string['textediting'] = 'Lors de l\'édition de texte'; +$string['texteditor'] = 'Utiliser les formulaires HTML standards'; +$string['textformat'] = 'Format de texte standard'; +$string['thanks'] = 'Merci'; +$string['theme'] = 'Thème'; +$string['themes'] = 'Thèmes'; +$string['themesaved'] = 'Nouveau thème enregistré'; +$string['thischarset'] = 'iso-8859-15'; +$string['thisdirection'] = 'ltr'; +$string['thislanguage'] = 'Français - Canada'; +$string['time'] = 'Heure'; +$string['timezone'] = 'Fuseau horaire'; +$string['to'] = 'À'; +$string['today'] = 'Aujourd\'hui'; +$string['todaylogs'] = 'Évènements du jour'; +$string['toomanytoshow'] = 'Trop d\'utilisateurs pour les montrer tous'; +$string['top'] = 'Haut'; +$string['topic'] = 'Sujet'; +$string['topichide'] = 'Cacher ce sujet de $a'; +$string['topicoutline'] = 'Aperçu de cette partie'; +$string['topicshow'] = 'Montrer ce sujet à $a'; +$string['total'] = 'Total'; +$string['turneditingoff'] = 'Quitter le mode édition'; +$string['turneditingon'] = 'Activer le mode édition'; +$string['undecided'] = 'Pas d\'avis'; +$string['unenrol'] = 'Désinscription'; +$string['unenrolme'] = 'Me désinscrire de $a'; +$string['unenrolsure'] = 'Êtes-vous certain de vouloir vous désinscrire $a de ce cours ?'; +$string['unknowncategory'] = 'Catégorie inconnue'; +$string['unpacking'] = 'Déballage de $a'; +$string['unsafepassword'] = 'Ce mot de passe n\'est pas sûr, essayer autre chose'; +$string['unusedaccounts'] = 'Les comptes qui n\'ont pas été utilisés depuis $a sont automatiquement désinscrits.'; +$string['unzip'] = 'Décompresser'; +$string['unzippingbackup'] = 'Décompresser la sauvegarde'; +$string['up'] = 'Vers le haut'; +$string['update'] = 'Modifier'; +$string['updated'] = '$a modifié'; +$string['updatemyprofile'] = 'Enregistrer mon profil'; +$string['updatesevery'] = 'Mise à jour toutes les $a secondes'; +$string['updatethis'] = 'Modifier $a'; +$string['updatethiscourse'] = 'Modifier ce cours'; +$string['updatinga'] = 'Modifier un $a'; +$string['updatingain'] = 'Modifier un $a->what dans $a->in'; +$string['upload'] = 'Téléverser (vers le serveur)'; +$string['uploadafile'] = 'Téléverser un fichier (vers le serveur)'; +$string['uploadedfileto'] = 'Téléverser $a->file dans $a->directory'; +$string['uploadnofilefound'] = 'Fichier introuvable - êtes-vous certain d\'avoir choisi un fichier à téléverser?'; +$string['uploadproblem'] = 'Une erreur inconnue est survenue lors du téléchargement du fichier \'$a\' (fichier trop gros?)'; +$string['uploadthisfile'] = 'Téléverser ce fichier vers le serveur'; +$string['uploadusers'] = 'Téléverser des comptes d\'utilisateurs'; +$string['user'] = 'Utilisateur'; +$string['userdeleted'] = 'Le compte de cet utilisateur a été supprimé'; +$string['userdescription'] = 'Description'; +$string['userfiles'] = 'Fichiers de l\'utilisateur'; +$string['username'] = 'Nom de l\'utilisateur'; +$string['usernameexists'] = 'Ce nom d\'utilisteur existe déjà, veuillez en choisir un autre'; +$string['userprofilefor'] = 'Profil de l\'utilisateur $a'; +$string['users'] = 'Utilisateurs'; +$string['usersnew'] = 'Nouveaux utilisateurs'; +$string['userzones'] = 'Régions de l\'utilisateur'; +$string['usingexistingcourse'] = 'Utiliser un cours existant'; +$string['version'] = 'Version'; +$string['view'] = 'Vue'; +$string['webpage'] = 'Page Web'; +$string['week'] = 'Semaine'; +$string['weekhide'] = 'Cacher cette semaine de $a'; +$string['weeklyoutline'] = 'Aperçu de la semaine'; +$string['weekshow'] = 'Montrer cette semaine à $a'; +$string['welcometocourse'] = 'Bienvenue sur $a'; +$string['welcometocoursetext'] = 'Bienvenue dans $a->coursename ! +La première action que vous devriez faire est d\'éditer votre profil dans ce cours afin que nous nous connaissions un peu mieux : + $a->profileurl'; +$string['whattocallzip'] = 'Comment voulez nommer le fichier compressé?'; +$string['withchosenfiles'] = 'Avec les fichiers choisis'; +$string['withoutuserdata'] = 'sans les données de l\'utilisateur'; +$string['withuserdata'] = 'avec les données de l\'utilisateur'; +$string['wordforstudent'] = 'Votre mot pour « étudiant »'; +$string['wordforstudenteg'] = 'exemples : étudiant, apprentis, participant, ...'; +$string['wordforstudents'] = 'Votre mot pour « étudiants »'; +$string['wordforstudentseg'] = 'exemples : étudiants, apprentis, participants, ...'; +$string['wordforteacher'] = 'Votre mot pour « enseignant »'; +$string['wordforteachereg'] = 'exemples : enseignant, professeur, gourou, ...'; +$string['wordforteachers'] = 'Votre mot pour « enseignants »'; +$string['wordforteacherseg'] = 'exemples : enseignants, professeurs, gourous, ...'; +$string['writingcategoriesandquestions'] = 'Sauvegarde des catégories et des questions'; +$string['writingcoursedata'] = 'Sauvegarde des données du cours'; +$string['writingeventsinfo'] = 'Écriture des événements'; +$string['writinggeneralinfo'] = 'Sauvegarde des informations générales'; +$string['writinggroupsinfo'] = 'Sauvegarde des informations sur les groupes'; +$string['writingheader'] = 'Sauvegarde de l\'en-tête'; +$string['writingloginfo'] = 'Sauvegarde des journaux d\'évènements'; +$string['writingmoduleinfo'] = 'Sauvegarde des informations sur les modules'; +$string['writingscalesinfo'] = 'Sauvegarde des informations sur les échelles'; +$string['writinguserinfo'] = 'Sauvegarde des informations sur les utilisateurs'; +$string['wrongpassword'] = 'Mot de passe incorrect pour cet utilisateur'; +$string['yes'] = 'Oui'; +$string['youareabouttocreatezip'] = 'Vous allez créer un fichier compressé contenant'; +$string['youaregoingtorestorefrom'] = 'Vous allez commencer à récupérer '; +$string['yourlastlogin'] = 'Votre dernière connexion'; +$string['yourself'] = 'vous-même'; +$string['yourteacher'] = 'votre $a'; +$string['zippingbackup'] = 'Compression de la sauvegarde'; + +?> diff --git a/lang/fr_ca/multilang.php b/lang/fr_ca/multilang.php index ad046bf6804..94c031d7c60 100644 --- a/lang/fr_ca/multilang.php +++ b/lang/fr_ca/multilang.php @@ -1,9 +1,7 @@ - + diff --git a/lang/fr_ca/pix.php b/lang/fr_ca/pix.php index 46fc1fb40be..997e1f6d743 100644 --- a/lang/fr_ca/pix.php +++ b/lang/fr_ca/pix.php @@ -1,28 +1,26 @@ - + diff --git a/lang/fr_ca/quiz.php b/lang/fr_ca/quiz.php index 236c5da1a2a..6743769191b 100644 --- a/lang/fr_ca/quiz.php +++ b/lang/fr_ca/quiz.php @@ -1,271 +1,187 @@ -
                            Vous devez choisir ou créer une catégorie afin d\'être capable de créer ou d\'éditer une question. Vous pouvez choisir parmi les questions affichées pour les ajouter à votre test (à gauche de la page).'; -$string['addquestions'] = 'Ajouter des questions'; -$string['addquestionstoquiz'] = 'Ajouter des questions au test en cours'; -$string['addselectedtoquiz'] = 'Ajouter la sélection au test'; -$string['aiken'] = 'Format Aiken'; -$string['allowreview'] = 'Autoriser la relecture'; -$string['alreadysubmitted'] = 'Il semble que vous ayez déjà répondu au questionnaire'; -$string['alternativeunits'] = 'Autres unités'; -$string['alwaysavailable'] = 'Toujours disponible'; -$string['answer'] = 'Réponse'; -$string['answerhowmany'] = 'Une ou plusieurs réponses ?'; -$string['answersingleno'] = 'Plusieurs réponses permises'; -$string['answersingleyes'] = 'Une seule réponse'; -$string['answerswithacceptederrormarginmustbenumeric'] = 'Les réponses avec une erreur acceptable doivent être numériques'; -$string['answertoolong'] = 'Réponse trop longue après la ligne $a (255 caractères maximum)'; -$string['aon'] = 'Format AON'; -$string['attempt'] = 'Tentative $a'; -$string['attemptfirst'] = 'Première tentative'; -$string['attemptincomplete'] = 'Cet essai (par $a) n\'a pas été complété.'; -$string['attemptlast'] = 'Dernière tentative'; -$string['attemptquiznow'] = 'Faire le test maintenant'; -$string['attempts'] = 'Tentatives'; -$string['attemptsallowed'] = 'Nombre de tentatives permises'; -$string['attemptsexist'] = 'Vous avez déjà essayé de compléter ce test.'; -$string['attemptsunlimited'] = 'Nombre de tentatives illimité'; -$string['backtoquiz'] = 'Retour à l\'édition du test'; -$string['bestgrade'] = 'Meilleure note'; -$string['blackboard'] = 'Format Blackboard'; -$string['calculated'] = 'Calculé'; -$string['calculatedquestion'] = 'Question calculée n\'est pas supportée à la ligne $a. La question sera ignorée.'; -$string['caseno'] = 'Non, la casse des caractères n\'est pas considérée'; -$string['casesensitive'] = 'Casse des caractères'; -$string['caseyes'] = 'Oui, la casse des caractères doit être vérifiée'; -$string['categories'] = 'Catégories'; -$string['category'] = 'Catégorie'; -$string['categoryinfo'] = 'Information sur la catégorie'; -$string['categorymove'] = 'La catégorie « $a->name » contient $a->count questions. Veuillez choisir une autre catégorie dans laquelle les déplacer.'; -$string['categorymoveto'] = 'Les déplacer dans cette catégorie'; -$string['checkanswer'] = 'Vérifier'; -$string['choice'] = 'Choix'; -$string['choices'] = 'Choix disponibles'; -$string['choosedatasetproperties'] = 'Choisir les propriétés des ensembles de données'; -$string['close'] = 'Fermer l\'aperçu'; -$string['confirmstartattempt'] = 'Vous avez un temps limitée pour compléter ce test. Êtes-vous certain de vouloir commencer?'; -$string['correctanswer'] = 'Bonne réponse'; -$string['correctanswerformula'] = 'Formule de la réponse correcte'; -$string['correctanswerlength'] = 'Données significatives'; -$string['correctanswers'] = 'Bonnes réponses'; -$string['corrresp'] = 'Bonne réponse'; -$string['countdown'] = 'Compte à rebours'; -$string['countdownfinished'] = 'Le temps alloué au test est terminé : vous devez soumettre vos réponses maintenant.'; -$string['countdowntenminutes'] = 'Il vous reste 10 minutes pour terminer le test.'; -$string['coursetestmanager'] = 'Format Course Test Manager'; -$string['createmultiple'] = 'Créer plusieurs questions aléatoires'; -$string['createnewquestion'] = 'Créer une nouvelle question'; -$string['custom'] = 'Format personnel'; -$string['datasetdefinitions'] = 'Définition des ensembles réutilisables de données pour la catégorie $a'; -$string['datasetnumber'] = 'Nombre'; -$string['daysavailable'] = 'Jours disponibles'; -$string['decimals'] = 'avec $a'; -$string['default'] = 'Défaut'; -$string['defaultgrade'] = 'Note par défaut pour la question'; -$string['defaultinfo'] = 'La catégorie par défaut pour les questions.'; -$string['deleteattemptcheck'] = 'Êtes-vous absolument certain de vouloir complètement effacer ces essais?'; -$string['deletequestioncheck'] = 'Êtes-vous certain de vouloir supprimer « $a » ?'; -$string['description'] = 'Description'; -$string['discrimination'] = 'Index de discrimination'; -$string['eachattemptbuildsonthelast'] = 'Chaque tentative pour faire le test est faite à partir des réponses de l\'essai précédent'; -$string['editcategories'] = 'Modifier les catégories'; -$string['editdatasets'] = 'Modifier les ensembles de données'; -$string['editingcalculated'] = 'Modifier une question calculée'; -$string['editingdescription'] = 'Éditer une description'; -$string['editingmatch'] = 'Éditer une question à appariements'; -$string['editingmultianswer'] = 'Modifier une question dont la réponse est incoporée au texte (fermée)'; -$string['editingmultichoice'] = 'Éditer une question à choix multiples'; -$string['editingnumerical'] = 'Éditer une question numérique'; -$string['editingquestion'] = 'Éditer une question'; -$string['editingquiz'] = 'Édition d\'un test'; -$string['editingrandom'] = 'Édition d\'une question au hasard'; -$string['editingrandomsamatch'] = 'Édition d\'une question à appariement de réponses courtes (ordre aléatoire)'; -$string['editingshortanswer'] = 'Modifier une question à réponse courte'; -$string['editingtruefalse'] = 'Modifier une question Vrai/Faux'; -$string['editquestions'] = 'Modifier des questions'; -$string['errorsdetected'] = '$a erreur(s) détectées'; -$string['existingcategory1'] = 'un libellé d\'un ensemble de libellés déjà existant qui sont également employées par d\'autres questions dans cette catégorie'; -$string['existingcategory2'] = 'un fichier d\'un ensemble de fichiers déjà existant qui sont également employés par d\'autres questions dans cette catégorie'; -$string['existingcategory3'] = 'un lien d\'un ensemble de liens déjà existant qui sont également employés par d\'autres questions dans cette catégorie'; -$string['exportfilename'] = 'test'; -$string['exportname'] = 'Nom du fichier'; -$string['exportnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['exportquestions'] = 'Exporter les questions dans un fichier'; -$string['false'] = 'Faux'; -$string['feedback'] = 'Rétroaction'; -$string['file'] = 'Fichier'; -$string['fileformat'] = 'Format du fichier'; -$string['filloutoneanswer'] = 'Vous devez fournir au moins un choix de réponse. Les choix qui seront laissées vides ne seront pas pris en compte.'; -$string['filloutthreequestions'] = 'Vous devez fournir au moins trois choix. Les choix qui seront laissés vides ne seront pas utilisés.'; -$string['fillouttwochoices'] = 'Vous devez compléter au moins deux choix de réponse.
                            - -Ceux qui seront laissées vides ne seront pas pris en compte.'; -$string['forceregeneration'] = 'Forcer le rafraîchissement'; -$string['fractionsaddwrong'] = 'La somme des notes positives que vous avez choisies n\'atteint pas 100%%.
                            Elle est de $a%%.
                            Souhaitez-vous revenir en arrière pour corriger cela ?'; -$string['fractionsnomax'] = 'L\'une des réponses devrait avoir la note 100%% afin qu\'il soit
                            possible d\'obtenir la note maximale à cette question.
                            Souhaitez-vous revenir en arrière pour corriger cela ?'; -$string['functiontakesatleasttwo'] = 'La fonction $a doit avoir au moins deux arguments.'; -$string['functiontakesnoargs'] = 'La fonction $a ne prend aucun argument.'; -$string['functiontakesonearg'] = 'La fonction $a doit avoir un seul argument.'; -$string['functiontakesoneortwoargs'] = 'La fonction $a doit avoir un ou deux arguments.'; -$string['functiontakestwoargs'] = 'La fonction $a doit avoir deux arguments.'; -$string['generatevalue'] = 'Générer une nouvelle valeur entre'; -$string['geometric'] = 'Géométrique'; -$string['gift'] = 'Format GIFT'; -$string['gradeaverage'] = 'Note moyenne'; -$string['gradehighest'] = 'Note maximale'; -$string['grademethod'] = 'Méthode de notation'; -$string['guestsno'] = 'Désolé, les visiteurs anonymes n\'ont pas accès aux tests'; -$string['illegalformulasyntax'] = 'Erreur de syntaxe dans la formule à partir de \'$a\''; -$string['imagedisplay'] = 'Image à afficher'; -$string['imagemissing'] = 'L\'image à la ligne $a n\'est pas disponible. Le nom du fichier sera ignoré.'; -$string['importquestions'] = 'Importer des questions d\'un fichier'; -$string['indivresp'] = 'Réponses des individus à chaque élément'; -$string['introduction'] = 'Introduction'; -$string['itemanal'] = 'Analyse des réponses'; -$string['itemdefinition'] = 'Définition'; -$string['keptcategory1'] = 'un libellé de la même catégorie'; -$string['keptcategory2'] = 'un fichier de la même catégorie que de l\'ensemble de fichiers réutilisables que précédemment'; -$string['keptcategory3'] = 'un lien de la même catégorie que de l\'ensemble de liens réutilisables que précédemment'; -$string['keptlocal1'] = 'un libellé de la même catégorie que de l\'ensemble de libellés réutilisables que précédemment'; -$string['link'] = 'Lien'; -$string['listitems'] = 'Liste des éléments du test'; -$string['literal'] = 'Libellé'; -$string['loguniform'] = 'chiffres, d\'une distrubution logarithmique uniforme'; -$string['marks'] = 'Points'; -$string['match'] = 'Appariement'; -$string['matchanswer'] = 'Réponse correspondante'; -$string['max'] = 'Max'; -$string['min'] = 'Min'; -$string['minutes'] = 'Minutes'; -$string['missinganswer'] = 'Trop peu d\'éléments :ANSWER, :Lx, :Rx pour la question à la ligne $a. Vous devez définir au moins deux réponses.'; -$string['missingcorrectanswer'] = 'On doit préciser la bonne réponse'; -$string['missingname'] = 'Il manque le nom de la question'; -$string['missingquestion'] = 'Il manque le titre de la question à la ligne $a.'; -$string['missingquestiontext'] = 'Il manque le texte de la question'; -$string['missingword'] = 'Il manque le format'; -$string['modulename'] = 'Test'; -$string['modulenameplural'] = 'Tests'; -$string['multianswer'] = 'Réponses incorporées au texte de la question'; -$string['multichoice'] = 'Choix multiples'; -$string['multiplier'] = 'Multiplier'; -$string['name'] = 'Nom'; -$string['newcategory1'] = 'un libellé d\'un nouvel ensemble de libellés qui peuvent être également être utilisés par d\'autres questions de cette catégorie'; -$string['newcategory2'] = 'un fichier d\'un nouvel ensemble de fichiers qui peuvent être également être utilisés par d\'autres questions de cette catégorie'; -$string['newcategory3'] = 'un lien d\'un nouvel ensemble de liens qui peuvent être également être utilisés par d\'autres questions de cette catégorie'; -$string['newlocal1'] = 'un libellé d\'un nouvel ensemble de libellés qui peuvent seront seulement utilisés par cette question'; -$string['newlocal2'] = 'un fichier d\'un nouvel ensemble de fichiers qui peuvent seront seulement utilisés par cette question'; -$string['newlocal3'] = 'un lien d\'un nouvel ensemble de liens qui peuvent seront seulement utilisés par cette question'; -$string['noanswers'] = 'Aucune réponse n\'a été sélectionnée !'; -$string['noattempts'] = 'Aucune tentative n\'a été réalisée pour ce test'; -$string['nodataset'] = 'nil - ceci n\'est pas un caractère générique'; -$string['nominal'] = 'Nominal'; -$string['nomoreattempts'] = 'Aucune autre tentative autorisée'; -$string['nopossibledatasets'] = 'Pas d\'ensembles possible'; -$string['noquestions'] = 'Aucune question n\'a été encore ajoutée'; -$string['noresponse'] = 'Pas de réponse'; -$string['noreview'] = 'Vous n\'êtes pas autorisé à commenter ce test'; -$string['noreviewuntil'] = 'Vous n\'êtes pas autorisé à réviser ce test avant le $a'; -$string['noscript'] = 'JavaScript doit être activé pour continuer!'; -$string['notenoughanswers'] = 'Il doit avoir au moins $a pour ce type de questions.'; -$string['notenoughsubquestions'] = 'Il n\'y a pas assez de sous-questions de créées!
                            Voulez retournez en arrière pour corriger cette question?'; -$string['numerical'] = 'Numérique'; -$string['optional'] = 'optionnel'; -$string['overdue'] = 'En retard'; -$string['paragraphquestion'] = 'La question de type Paragraphe à la ligne $a n\'est pas supportée. La question sera ignorée.'; -$string['parentlanguage'] = 'fr'; -$string['passworderror'] = 'Le mot de passe entré est incorrect'; -$string['percentcorrect'] = 'Pourcentage réussi'; -$string['preview'] = 'Aperçu'; -$string['previewquestion'] = 'Aperçu de la question'; -$string['publish'] = 'Publier'; -$string['publishedit'] = 'Vous devez avoir la permission à partir du cours qui a publié cette catégorie pour modifier ou ajouter des questions dans cette catégorie.'; -$string['qti'] = 'Format IMS QTI'; -$string['question'] = 'Question'; -$string['questioninuse'] = 'La question « $a » est actuellement utilisée :'; -$string['questionname'] = 'Titre de la question'; -$string['questionnametoolong'] = 'Le nom de la question à la ligne $a est trop long (255 caractères). Il a été tronqué.'; -$string['questions'] = 'Questions'; -$string['quizavailable'] = 'Le test est disponible jusqu\'à : $a'; -$string['quizclose'] = 'Ne plus permettre l\'accès au test après'; -$string['quizclosed'] = 'Ce test n\'est plus disponible depuis le $a'; -$string['quizcloses'] = 'Le test ne sera plus disponible'; -$string['quiznotavailable'] = 'Ce test ne sera pas disponible avant : $a'; -$string['quizopen'] = 'Rendre disponible ce test'; -$string['quizopens'] = 'Tests accessibles'; -$string['quiztimelimit'] = 'Durée limite : $a'; -$string['quiztimer'] = 'Minuterie du test'; -$string['random'] = 'Question aléatoire'; -$string['randomcreate'] = 'Nombre de questions à ajouter à partir de cette catégorie (sélection aléatoire)'; -$string['randomsamatch'] = 'Appariement à partir de questions à réponse courte'; -$string['randomsamatchcreate'] = 'Créer des questions aléatoires à appariements '; -$string['randomsamatchintro'] = 'Pour chacune de ces questions, choisissez la bonne réponse à partir du menu.'; -$string['randomsamatchnumber'] = 'Nombre de questions à choisir'; -$string['readytosend'] = 'Vous êtes sur le point d\'envoyer l\'ensemble de votre test pour évaluation. Êtes-vous certain de vouloir continuer ?'; -$string['recentlyaddedquestion'] = 'Question ajouté récemment '; -$string['regrade'] = 'Renoter toutes les tentatives'; -$string['regradecomplete'] = 'Toutes les tentatives ont été renotées'; -$string['regradecount'] = '$a->changed sur $a->attempt notes ont été changées'; -$string['relative'] = 'Relatif'; -$string['remove'] = 'Enlever'; -$string['rename'] = 'Renommer'; -$string['report'] = 'Rapports'; -$string['reportfullstat'] = 'Statistiques détaillées'; -$string['reportmulti_percent'] = 'Pourcentages multiples'; -$string['reportmulti_q_x_student'] = 'Choix des étudiants'; -$string['reportmulti_resp'] = 'Réponses individuelles'; -$string['reportoverview'] = 'Résumé'; -$string['reportregrade'] = 'Renoter les essais'; -$string['reportsimplestat'] = 'Statistiques de base'; -$string['requirepassword'] = 'Mot de passe requis'; -$string['requirepasswordmessage'] = 'Pour faire ce test, vous devez en connaître le mot de passe.'; -$string['requiresubnet'] = 'Adresse du réseau requise'; -$string['review'] = 'Révision'; -$string['save'] = 'Enregistrer'; -$string['savegrades'] = 'Enregistrer les notes'; -$string['savemyanswers'] = 'Enregistrer mes réponses'; -$string['savequiz'] = 'Enregistrer l\'ensemble du test'; -$string['score'] = 'Note brute'; -$string['select'] = 'Choisir'; -$string['selectall'] = 'Tout sélectionner'; -$string['selectcategoryabove'] = 'Choisir une catégorie ci-dessus'; -$string['shortanswer'] = 'Réponse courte'; -$string['show'] = 'Montrer'; -$string['showcorrectanswer'] = 'Dans la rétroaction,
                            montrer les réponses correctes'; -$string['showfeedback'] = 'Après le test, afficher la rétroaction?'; -$string['shuffleanswers'] = 'Modifier l\'ordre des réponses'; -$string['shufflequestions'] = 'Modifier l\'ordre des questions'; -$string['significantfigures'] = 'avec $a'; -$string['subneterror'] = 'Désolé, ce test est verrouillé de façon à ce qu\'il soit fait seulement à partir de certains endroits. Présentement, vous ne pouvez utilisez votre ordinateur pour faire ce test.'; -$string['substitutedby'] = 'sera substitué par'; -$string['thisdirection'] = 'ltr'; -$string['time'] = 'Temps'; -$string['timecompleted'] = 'Terminé'; -$string['timeleft'] = 'Temps restant'; -$string['timelimit'] = 'Durée limite'; -$string['timelimitexeeded'] = 'Désolé! Le test est terminé!'; -$string['timesup'] = 'Le temps est fini!'; -$string['timetaken'] = 'Temps mis'; -$string['tolerance'] = 'Tolérance'; -$string['tolerancetype'] = 'Type de tolérance'; -$string['toomanyrandom'] = 'Le nombre de questions aléatoires requis dépasse le nombre de questions de cette catégorie. ($a)'; -$string['true'] = 'Vrai'; -$string['truefalse'] = 'Vrai/Faux'; -$string['type'] = 'Type'; -$string['uniform'] = 'décimaux, d\'une distribution uniforme'; -$string['unit'] = 'Unité'; -$string['unknowntype'] = 'Ce type de question n\'est pas supporté (ligne $a). La question sera ignorée.'; -$string['unsupportedformulafunction'] = 'La fonction $a n\'est pas supportée.'; -$string['viewallanswers'] = 'Afficher les $a tests terminés'; -$string['viewallreports'] = 'Afficher les rapports pour $a essais'; -$string['warningsdetected'] = '$a avertissement(s) détecté(s)'; -$string['webct'] = 'Format WebCT'; -$string['wildcard'] = 'Générique'; -$string['withsummary'] = 'avec le résumé des statistiques'; -$string['wronggrade'] = 'Mauvaise note à la ligne $a : '; -$string['xml'] = 'Format XML de Moodle'; -$string['yourfinalgradeis'] = 'Votre note finale pour ce test est $a'; - -?> +
                            Vous devez choisir ou créer une catégorie afin d\'être capable de créer ou d\'éditer une question. Vous pouvez choisir parmi les questions affichées pour les ajouter à votre test (à gauche de la page).'; +$string['addquestions'] = 'Ajouter des questions'; +$string['addquestionstoquiz'] = 'Ajouter des questions au test en cours'; +$string['addselectedtoquiz'] = 'Ajouter la sélection au test'; +$string['aiken'] = 'Format Aiken'; +$string['allowreview'] = 'Autoriser la relecture'; +$string['alreadysubmitted'] = 'Il semble que vous ayez déjà répondu au questionnaire'; +$string['alwaysavailable'] = 'Toujours disponible'; +$string['answer'] = 'Réponse'; +$string['answerhowmany'] = 'Une ou plusieurs réponses ?'; +$string['answersingleno'] = 'Plusieurs réponses permises'; +$string['answersingleyes'] = 'Une seule réponse'; +$string['answerswithacceptederrormarginmustbenumeric'] = 'Les réponses avec une erreur acceptable doivent être numériques'; +$string['answertoolong'] = 'Réponse trop longue après la ligne $a (255 caractères maximum)'; +$string['aon'] = 'Format AON'; +$string['attempt'] = 'Tentative $a'; +$string['attemptfirst'] = 'Première tentative'; +$string['attemptincomplete'] = 'Cet essai (par $a) n\'a pas été complété.'; +$string['attemptlast'] = 'Dernière tentative'; +$string['attemptquiznow'] = 'Faire le test maintenant'; +$string['attempts'] = 'Tentatives'; +$string['attemptsallowed'] = 'Nombre de tentatives permises'; +$string['attemptsunlimited'] = 'Nombre de tentatives illimité'; +$string['backtoquiz'] = 'Retour à l\'édition du test'; +$string['bestgrade'] = 'Meilleure note'; +$string['blackboard'] = 'Format Blackboard'; +$string['calculatedquestion'] = 'Question calculée n\'est pas supportée à la ligne $a. La question sera ignorée.'; +$string['caseno'] = 'Non, la casse des caractères n\'est pas considérée'; +$string['casesensitive'] = 'Casse des caractères'; +$string['caseyes'] = 'Oui, la casse des caractères doit être vérifiée'; +$string['categories'] = 'Catégories'; +$string['category'] = 'Catégorie'; +$string['categoryinfo'] = 'Information sur la catégorie'; +$string['categorymove'] = 'La catégorie « $a->name » contient $a->count questions. Veuillez choisir une autre catégorie dans laquelle les déplacer.'; +$string['categorymoveto'] = 'Les déplacer dans cette catégorie'; +$string['choice'] = 'Choix'; +$string['choices'] = 'Choix disponibles'; +$string['correctanswer'] = 'Bonne réponse'; +$string['correctanswers'] = 'Bonnes réponses'; +$string['corrresp'] = 'Bonne réponse'; +$string['countdown'] = 'Compte à rebours'; +$string['countdownfinished'] = 'Le temps alloué au test est terminé : vous devez soumettre vos réponses maintenant.'; +$string['countdowntenminutes'] = 'Il vous reste 10 minutes pour terminer le test.'; +$string['coursetestmanager'] = 'Format Course Test Manager'; +$string['createmultiple'] = 'Créer plusieurs questions aléatoires'; +$string['createnewquestion'] = 'Créer une nouvelle question'; +$string['custom'] = 'Format personnel'; +$string['daysavailable'] = 'Jours disponibles'; +$string['default'] = 'Défaut'; +$string['defaultgrade'] = 'Note par défaut pour la question'; +$string['defaultinfo'] = 'La catégorie par défaut pour les questions.'; +$string['deleteattemptcheck'] = 'Êtes-vous absolument certain de vouloir complètement effacer ces essais?'; +$string['deletequestioncheck'] = 'Êtes-vous certain de vouloir supprimer « $a » ?'; +$string['description'] = 'Description'; +$string['discrimination'] = 'Index de discrimination'; +$string['eachattemptbuildsonthelast'] = 'Chaque tentative pour faire le test est faite à partir des réponses de l\'essai précédent'; +$string['editcategories'] = 'Modifier les catégories'; +$string['editingdescription'] = 'Éditer une description'; +$string['editingmatch'] = 'Éditer une question à appariements'; +$string['editingmultianswer'] = 'Modifier une question dont la réponse est incoporée au texte (fermée)'; +$string['editingmultichoice'] = 'Éditer une question à choix multiples'; +$string['editingnumerical'] = 'Éditer une question numérique'; +$string['editingquestion'] = 'Éditer une question'; +$string['editingquiz'] = 'Édition d\'un test'; +$string['editingrandom'] = 'Édition d\'une question au hasard'; +$string['editingrandomsamatch'] = 'Édition d\'une question à appariement de réponses courtes (ordre aléatoire)'; +$string['editingshortanswer'] = 'Modifier une question à réponse courte'; +$string['editingtruefalse'] = 'Modifier une question Vrai/Faux'; +$string['editquestions'] = 'Modifier des questions'; +$string['errorsdetected'] = '$a erreur(s) détectées'; +$string['false'] = 'Faux'; +$string['feedback'] = 'Rétroaction'; +$string['fileformat'] = 'Format du fichier'; +$string['filloutoneanswer'] = 'Vous devez fournir au moins un choix de réponse. Les choix qui seront laissées vides ne seront pas pris en compte.'; +$string['filloutthreequestions'] = 'Vous devez fournir au moins trois choix. Les choix qui seront laissés vides ne seront pas utilisés.'; +$string['fillouttwochoices'] = 'Vous devez compléter au moins deux choix de réponse.
                            + +Ceux qui seront laissées vides ne seront pas pris en compte.'; +$string['fractionsaddwrong'] = 'La somme des notes positives que vous avez choisies n\'atteint pas 100%%.
                            Elle est de $a%%.
                            Souhaitez-vous revenir en arrière pour corriger cela ?'; +$string['fractionsnomax'] = 'L\'une des réponses devrait avoir la note 100%% afin qu\'il soit
                            possible d\'obtenir la note maximale à cette question.
                            Souhaitez-vous revenir en arrière pour corriger cela ?'; +$string['gift'] = 'Format GIFT'; +$string['gradeaverage'] = 'Note moyenne'; +$string['gradehighest'] = 'Note maximale'; +$string['grademethod'] = 'Méthode de notation'; +$string['guestsno'] = 'Désolé, les visiteurs anonymes n\'ont pas accès aux tests'; +$string['imagedisplay'] = 'Image à afficher'; +$string['imagemissing'] = 'L\'image à la ligne $a n\'est pas disponible. Le nom du fichier sera ignoré.'; +$string['importquestions'] = 'Importer des questions d\'un fichier'; +$string['indivresp'] = 'Réponses des individus à chaque élément'; +$string['introduction'] = 'Introduction'; +$string['itemanal'] = 'Analyse des réponses'; +$string['listitems'] = 'Liste des éléments du test'; +$string['marks'] = 'Points'; +$string['match'] = 'Appariement'; +$string['matchanswer'] = 'Réponse correspondante'; +$string['missinganswer'] = 'Trop peu d\'éléments :ANSWER, :Lx, :Rx pour la question à la ligne $a. Vous devez définir au moins deux réponses.'; +$string['missingcorrectanswer'] = 'On doit préciser la bonne réponse'; +$string['missingname'] = 'Il manque le nom de la question'; +$string['missingquestion'] = 'Il manque le titre de la question à la ligne $a.'; +$string['missingquestiontext'] = 'Il manque le texte de la question'; +$string['missingword'] = 'Il manque le format'; +$string['modulename'] = 'Test'; +$string['modulenameplural'] = 'Tests'; +$string['multianswer'] = 'Réponses incorporées au texte de la question'; +$string['multichoice'] = 'Choix multiples'; +$string['name'] = 'Nom'; +$string['noanswers'] = 'Aucune réponse n\'a été sélectionnée !'; +$string['noattempts'] = 'Aucune tentative n\'a été réalisée pour ce test'; +$string['nomoreattempts'] = 'Aucune autre tentative autorisée'; +$string['noquestions'] = 'Aucune question n\'a été encore ajoutée'; +$string['noresponse'] = 'Pas de réponse'; +$string['noreview'] = 'Vous n\'êtes pas autorisé à commenter ce test'; +$string['noreviewuntil'] = 'Vous n\'êtes pas autorisé à réviser ce test avant le $a'; +$string['notenoughsubquestions'] = 'Il n\'y a pas assez de sous-questions de créées!
                            Voulez retournez en arrière pour corriger cette question?'; +$string['numerical'] = 'Numérique'; +$string['paragraphquestion'] = 'La question de type Paragraphe à la ligne $a n\'est pas supportée. La question sera ignorée.'; +$string['percentcorrect'] = 'Pourcentage réussi'; +$string['publish'] = 'Publier'; +$string['qti'] = 'Format IMS QTI'; +$string['question'] = 'Question'; +$string['questioninuse'] = 'La question « $a » est actuellement utilisée :'; +$string['questionname'] = 'Titre de la question'; +$string['questionnametoolong'] = 'Le nom de la question à la ligne $a est trop long (255 caractères). Il a été tronqué.'; +$string['questions'] = 'Questions'; +$string['quizavailable'] = 'Le test est disponible jusqu\'à : $a'; +$string['quizclose'] = 'Ne plus permettre l\'accès au test après'; +$string['quizclosed'] = 'Ce test n\'est plus disponible depuis le $a'; +$string['quizcloses'] = 'Le test ne sera plus disponible'; +$string['quiznotavailable'] = 'Ce test ne sera pas disponible avant : $a'; +$string['quizopen'] = 'Rendre disponible ce test'; +$string['random'] = 'Question aléatoire'; +$string['randomcreate'] = 'Nombre de questions à ajouter à partir de cette catégorie (sélection aléatoire)'; +$string['randomsamatch'] = 'Appariement à partir de questions à réponse courte'; +$string['randomsamatchcreate'] = 'Créer des questions aléatoires à appariements '; +$string['randomsamatchintro'] = 'Pour chacune de ces questions, choisissez la bonne réponse à partir du menu.'; +$string['randomsamatchnumber'] = 'Nombre de questions à choisir'; +$string['readytosend'] = 'Vous êtes sur le point d\'envoyer l\'ensemble de votre test pour évaluation. Êtes-vous certain de vouloir continuer ?'; +$string['recentlyaddedquestion'] = 'Question ajouté récemment '; +$string['regrade'] = 'Renoter toutes les tentatives'; +$string['regradecomplete'] = 'Toutes les tentatives ont été renotées'; +$string['regradecount'] = '$a->changed sur $a->attempt notes ont été changées'; +$string['rename'] = 'Renommer'; +$string['report'] = 'Rapports'; +$string['reportfullstat'] = 'Statistiques détaillées'; +$string['reportmulti_percent'] = 'Pourcentages multiples'; +$string['reportmulti_q_x_student'] = 'Choix des étudiants'; +$string['reportmulti_resp'] = 'Réponses individuelles'; +$string['reportoverview'] = 'Résumé'; +$string['reportregrade'] = 'Renoter les essais'; +$string['reportsimplestat'] = 'Statistiques de base'; +$string['review'] = 'Révision'; +$string['save'] = 'Enregistrer'; +$string['savegrades'] = 'Enregistrer les notes'; +$string['savemyanswers'] = 'Enregistrer mes réponses'; +$string['savequiz'] = 'Enregistrer l\'ensemble du test'; +$string['score'] = 'Note brute'; +$string['select'] = 'Choisir'; +$string['selectall'] = 'Tout sélectionner'; +$string['selectcategoryabove'] = 'Choisir une catégorie ci-dessus'; +$string['shortanswer'] = 'Réponse courte'; +$string['show'] = 'Montrer'; +$string['showcorrectanswer'] = 'Dans la rétroaction,
                            montrer les réponses correctes'; +$string['showfeedback'] = 'Après le test, afficher la rétroaction?'; +$string['shuffleanswers'] = 'Modifier l\'ordre des réponses'; +$string['shufflequestions'] = 'Modifier l\'ordre des questions'; +$string['time'] = 'Temps'; +$string['timecompleted'] = 'Terminé'; +$string['timetaken'] = 'Temps mis'; +$string['toomanyrandom'] = 'Le nombre de questions aléatoires requis dépasse le nombre de questions de cette catégorie. ($a)'; +$string['true'] = 'Vrai'; +$string['truefalse'] = 'Vrai/Faux'; +$string['type'] = 'Type'; +$string['unknowntype'] = 'Ce type de question n\'est pas supporté (ligne $a). La question sera ignorée.'; +$string['viewallanswers'] = 'Afficher les $a tests terminés'; +$string['viewallreports'] = 'Afficher les rapports pour $a essais'; +$string['warningsdetected'] = '$a avertissement(s) détecté(s)'; +$string['webct'] = 'Format WebCT'; +$string['withsummary'] = 'avec le résumé des statistiques'; +$string['wronggrade'] = 'Mauvaise note à la ligne $a : '; +$string['yourfinalgradeis'] = 'Votre note finale pour ce test est $a'; + +?> diff --git a/lang/fr_ca/resource.php b/lang/fr_ca/resource.php index cde6fd40fab..149ca3cd132 100644 --- a/lang/fr_ca/resource.php +++ b/lang/fr_ca/resource.php @@ -1,87 +1,64 @@ -'; -$string['filename'] = 'Nom du fichier'; -$string['filtername'] = 'Lien automatique sur les noms des ressources'; -$string['frameifpossible'] = 'Met la ressource dans un cadre afin de continuer à voir la barre de navigation'; -$string['fulltext'] = 'Texte complet'; -$string['htmlfragment'] = 'Morceau de HTML'; -$string['maindirectory'] = 'Répertoire principal des fichiers'; -$string['modulename'] = 'Ressource'; -$string['modulenameplural'] = 'Ressources'; -$string['neverseen'] = 'Jamais lu'; -$string['newdirectories'] = 'Afficher les liens sur les répertoires'; -$string['newfullscreen'] = 'Remplir l\'écran'; -$string['newheight'] = 'Hauteur par défaut de la fenêtre (en pixels)'; -$string['newlocation'] = 'Montrer la barre du chemin parcouru'; -$string['newmenubar'] = 'Afficher la barre du menu'; -$string['newresizable'] = 'Permettre la modification de la taille de la fenêtre'; -$string['newscrollbars'] = 'Permettre le défilement dans la fenêtre'; -$string['newstatus'] = 'Afficher la barre d\'états'; -$string['newtoolbar'] = 'Afficher la barre d\'outils'; -$string['newwidth'] = 'Largeur par défaut de la fenêtre (en pixels)'; -$string['newwindow'] = 'Nouvelle fenêtre'; -$string['newwindowopen'] = 'Afficher cette ressource dans une nouvelle fenêtre'; -$string['note'] = 'Note'; -$string['notefile'] = 'Pour téléverser plus de fichiers dans le cours (afin qu\'ils apparaissent dans cette liste), utiliser le - -Gestionnaire de fichiers.'; -$string['notypechosen'] = 'Vous devez choisir un type. Utiliser le bouton « Retour » de votre navigateur pour recommencer.'; -$string['pagedisplay'] = 'Afficher la ressource dans la fenêtre actuelle'; -$string['pagewindow'] = 'Même fenêtre'; -$string['parameter'] = 'Paramètre'; -$string['parameters'] = 'Paramètres'; -$string['parentlanguage'] = 'fr'; -$string['popupresource'] = 'Cette ressource devrait apparaître dans une fenêtre contextuelle (popup).'; -$string['popupresourcelink'] = 'Si ce n\'est pas le cas, cliquez ici : $a'; -$string['resourcetype'] = 'Type de ressource'; -$string['resourcetype1'] = 'Référence'; -$string['resourcetype2'] = 'Page Web dans un cadre'; -$string['resourcetype3'] = 'Fichier téléversé'; -$string['resourcetype4'] = 'Texte'; -$string['resourcetype5'] = 'Lien vers une page Web en quittant Moodle'; -$string['resourcetype6'] = 'Texte HTML'; -$string['resourcetype7'] = 'Programme'; -$string['resourcetype8'] = 'Texte Wiki'; -$string['resourcetype9'] = 'Répertoire'; -$string['resourcetypedirectory'] = 'Afficher un répertoire'; -$string['resourcetypefile'] = 'Lier à un fichier ou un site Web'; -$string['resourcetypehtml'] = 'Rédiger une page Web'; -$string['resourcetypelabel'] = 'Insérer une étiquette'; -$string['resourcetypetext'] = 'Composer une page de texte'; -$string['searchweb'] = 'Chercher une page Web'; -$string['thisdirection'] = 'ltr'; -$string['variablename'] = 'Nom de la variable'; - -?> +'; +$string['filename'] = 'Nom du fichier'; +$string['fulltext'] = 'Texte complet'; +$string['htmlfragment'] = 'Morceau de HTML'; +$string['modulename'] = 'Ressource'; +$string['modulenameplural'] = 'Ressources'; +$string['neverseen'] = 'Jamais lu'; +$string['newdirectories'] = 'Afficher les liens sur les répertoires'; +$string['newfullscreen'] = 'Remplir l\'écran'; +$string['newheight'] = 'Hauteur par défaut de la fenêtre (en pixels)'; +$string['newlocation'] = 'Montrer la barre du chemin parcouru'; +$string['newmenubar'] = 'Afficher la barre du menu'; +$string['newresizable'] = 'Permettre la modification de la taille de la fenêtre'; +$string['newscrollbars'] = 'Permettre le défilement dans la fenêtre'; +$string['newstatus'] = 'Afficher la barre d\'états'; +$string['newtoolbar'] = 'Afficher la barre d\'outils'; +$string['newwidth'] = 'Largeur par défaut de la fenêtre (en pixels)'; +$string['newwindow'] = 'Nouvelle fenêtre'; +$string['newwindowopen'] = 'Afficher cette ressource dans une nouvelle fenêtre'; +$string['note'] = 'Note'; +$string['notefile'] = 'Pour téléverser plus de fichiers dans le cours (afin qu\'ils apparaissent dans cette liste), utiliser le + +Gestionnaire de fichiers.'; +$string['notypechosen'] = 'Vous devez choisir un type. Utiliser le bouton « Retour » de votre navigateur pour recommencer.'; +$string['popupresource'] = 'Cette ressource devrait apparaître dans une fenêtre contextuelle (popup).'; +$string['popupresourcelink'] = 'Si ce n\'est pas le cas, cliquez ici : $a'; +$string['resourcetype'] = 'Type de ressource'; +$string['resourcetype1'] = 'Référence'; +$string['resourcetype2'] = 'Page Web dans un cadre'; +$string['resourcetype3'] = 'Fichier téléversé'; +$string['resourcetype4'] = 'Texte'; +$string['resourcetype5'] = 'Lien vers une page Web en quittant Moodle'; +$string['resourcetype6'] = 'Texte HTML'; +$string['resourcetype7'] = 'Programme'; +$string['resourcetype8'] = 'Texte Wiki'; + +?> diff --git a/lang/fr_ca/survey.php b/lang/fr_ca/survey.php index ab662576c53..68f0b816e4a 100644 --- a/lang/fr_ca/survey.php +++ b/lang/fr_ca/survey.php @@ -1,198 +1,192 @@ -préférables et celles qui ont eu cours (actuelles) dans cette partie du cours. -Il n\'y a pas de bonnes ou mauvaise réponses : on désire seulement connaître votre opignon. Soyez assuré que vos réponses sont confidentielles et n\'auront aucun impact sur votre note. -Réfléchissez bien avant de répondre, car vos réponses nous aideront à améliorer cette partie du cours. -Merci beaucoup!'; -$string['collesapname'] = 'Colles (préférable et plus actuel)'; -$string['collesm1'] = 'Pertinence'; -$string['collesm1short'] = 'Pertinence'; -$string['collesm2'] = 'Sens critique'; -$string['collesm2short'] = 'Sens critique'; -$string['collesm3'] = 'Interactivité'; -$string['collesm3short'] = 'Interactivité'; -$string['collesm4'] = 'Soutien par le tuteur'; -$string['collesm4short'] = 'Soutien par le tuteur'; -$string['collesm5'] = 'Soutien par les pairs'; -$string['collesm5short'] = 'Soutien par les pairs'; -$string['collesm6'] = 'Communication'; -$string['collesm6short'] = 'Communication'; -$string['collesmintro'] = 'Dans cette partie du cours...'; -$string['collespintro'] = 'Le but de ce sondage est de découvrir ce que vous préférez dans un environnement en ligne comme celui-ci. -On vous demande dans les affirmations suivantes de qualifier les expériences que vous jugez préférables dans cette partie du cours. -Il n\'y a pas de bonnes ou mauvaise réponses : on désire seulement connaître votre opignon. Soyez assuré que vos réponses sont confidentielles et n\'auront aucun impact sur votre note. -Réfléchissez bien avant de répondre, car vos réponses nous aideront à améliorer cette partie du cours. -Merci beaucoup!'; -$string['collespname'] = 'COLLES (préférable)'; -$string['done'] = 'Rempli'; -$string['download'] = 'Télécharger'; -$string['downloadexcel'] = 'Télécharger les données dans un format feuille de calcul'; -$string['downloadinfo'] = 'Il vous est possible de télécharger l\'ensemble des données brutes de ce sondage dans un format utilisable par un tableur, SPSS ou d\'autres programmes.'; -$string['downloadtext'] = 'Télécharger les données dans un format texte'; -$string['editingasurvey'] = 'Modifier un sondage'; -$string['guestsnotallowed'] = 'Les visiteurs anonymes ne peuvent répondre aux sondages.'; -$string['helpsurveys'] = 'Aide sur les différents types de sondage'; -$string['howlong'] = 'Combien de temps avez-vous pris pour répondre à ce sondage?'; -$string['howlongoptions'] = 'moins qu\'une minute, 1-2 minutes, 2-3 minutes, 3-4 minutes, 4-5 minutes, 5-10 minutes, plus de 10 minutes'; -$string['ifoundthat'] = 'J\'ai trouvé que'; -$string['introtext'] = 'Texte d\'introduction'; -$string['ipreferthat'] = 'Je préfère que'; -$string['modulename'] = 'Sondage'; -$string['modulenameplural'] = 'Sondages'; -$string['name'] = 'Nom'; -$string['newsurveyresponses'] = 'Nouvelles réponses aux sondages'; -$string['nobodyyet'] = 'Personne n\'a encore répondu à ce sondage'; -$string['notdone'] = 'Pas encore répondu'; -$string['notes'] = 'Votre analyse et notes personnelles'; -$string['othercomments'] = 'Avez-vous d\'autres commentaires'; -$string['parentlanguage'] = 'fr'; -$string['peoplecompleted'] = '$a personnes ont répondu à ce sondage pour l\'instant'; -$string['preferred'] = 'Préféré'; -$string['preferredclass'] = 'Cours préféré'; -$string['preferredstudent'] = '$a préféré'; -$string['question'] = 'Question'; -$string['questions'] = 'Questions'; -$string['questionsnotanswered'] = 'Vous n\'avez pas répondu à certaines des questions à choix multiples.'; -$string['report'] = 'Rapport des sondages'; -$string['savednotes'] = 'Vos notes ont été enregistrées'; -$string['scaleagree5'] = 'Totalement en désaccord,Partiellement en désaccord, Indifférent,Partiellement en accord,Totalement en accord'; -$string['scales'] = 'Barèmes'; -$string['scaletimes5'] = 'Jamais,Rarement,À l\'occasion,Souvent,Toujours'; -$string['seemoredetail'] = 'Cliquer ici pour avoir plus de détail'; -$string['selectedquestions'] = 'Question choisies dans un barème, tous les étudiants'; -$string['summary'] = 'Résumé'; -$string['surveycompleted'] = 'Vous avez répondu à ce sondage. Le graphique ci-dessous montre un résumé de vos résultats comparés aux moyennes de la classe.'; -$string['surveyname'] = 'Nom du sondage'; -$string['surveysaved'] = 'Sondage enregistrée'; -$string['surveytype'] = 'Type de sondage'; -$string['thanksforanswers'] = 'Merci d\'avoir répondu à ce sondage, $a'; -$string['time'] = 'Temps'; -$string['viewsurveyresponses'] = 'Consulter les réponses du sondage $a'; - -?> +préférables et celles qui ont eu cours (actuelles) dans cette partie du cours. +Il n'y a pas de bonnes ou mauvaise réponses : on désire seulement connaître votre opignon. Soyez assuré que vos réponses sont confidentielles et n'auront aucun impact sur votre note. +Réfléchissez bien avant de répondre, car vos réponses nous aideront à améliorer cette partie du cours. +Merci beaucoup!"; +$string['collesapname'] = "Colles (préférable et plus actuel)"; +$string['collesm1'] = "Pertinence"; +$string['collesm1short'] = "Pertinence"; +$string['collesm2'] = "Sens critique"; +$string['collesm2short'] = "Sens critique"; +$string['collesm3'] = "Interactivité"; +$string['collesm3short'] = "Interactivité"; +$string['collesm4'] = "Soutien par le tuteur"; +$string['collesm4short'] = "Soutien par le tuteur"; +$string['collesm5'] = "Soutien par les pairs"; +$string['collesm5short'] = "Soutien par les pairs"; +$string['collesm6'] = "Communication"; +$string['collesm6short'] = "Communication"; +$string['collesmintro'] = "Dans cette partie du cours..."; +$string['collespintro'] = "Le but de ce sondage est de découvrir ce que vous préférez dans un environnement en ligne comme celui-ci. +On vous demande dans les affirmations suivantes de qualifier les expériences que vous jugez préférables dans cette partie du cours. +Il n'y a pas de bonnes ou mauvaise réponses : on désire seulement connaître votre opignon. Soyez assuré que vos réponses sont confidentielles et n'auront aucun impact sur votre note. +Réfléchissez bien avant de répondre, car vos réponses nous aideront à améliorer cette partie du cours. +Merci beaucoup!"; +$string['collespname'] = "COLLES (préférable)"; +$string['done'] = "Rempli"; +$string['download'] = "Télécharger"; +$string['downloadexcel'] = "Télécharger les données dans un format feuille de calcul"; +$string['downloadinfo'] = "Il vous est possible de télécharger l'ensemble des données brutes de ce sondage dans un format utilisable par un tableur, SPSS ou d'autres programmes."; +$string['downloadtext'] = "Télécharger les données dans un format texte"; +$string['editingasurvey'] = "Modifier un sondage"; +$string['guestsnotallowed'] = "Les visiteurs anonymes ne peuvent répondre aux sondages."; +$string['helpsurveys'] = "Aide sur les différents types de sondage"; +$string['howlong'] = "Combien de temps avez-vous pris pour répondre à ce sondage?"; +$string['howlongoptions'] = "moins qu'une minute, 1-2 minutes, 2-3 minutes, 3-4 minutes, 4-5 minutes, 5-10 minutes, plus de 10 minutes"; +$string['ifoundthat'] = "J'ai trouvé que"; +$string['introtext'] = "Texte d'introduction"; +$string['ipreferthat'] = "Je préfère que"; +$string['modulename'] = "Sondage"; +$string['modulenameplural'] = "Sondages"; +$string['name'] = "Nom"; +$string['newsurveyresponses'] = "Nouvelles réponses aux sondages"; +$string['nobodyyet'] = "Personne n'a encore répondu à ce sondage"; +$string['notdone'] = "Pas encore répondu"; +$string['notes'] = "Votre analyse et notes personnelles"; +$string['othercomments'] = "Avez-vous d'autres commentaires"; +$string['peoplecompleted'] = "\$a personnes ont répondu à ce sondage pour l'instant"; +$string['preferred'] = "Préféré"; +$string['preferredclass'] = "Cours préféré"; +$string['preferredstudent'] = "\$a préféré"; +$string['question'] = "Question"; +$string['questions'] = "Questions"; +$string['questionsnotanswered'] = "Vous n'avez pas répondu à certaines des questions à choix multiples."; +$string['report'] = "Rapport des sondages"; +$string['savednotes'] = "Vos notes ont été enregistrées"; +$string['scaleagree5'] = "Totalement en désaccord,Partiellement en désaccord, Indifférent,Partiellement en accord,Totalement en accord"; +$string['scales'] = "Barèmes"; +$string['scaletimes5'] = "Jamais,Rarement,À l'occasion,Souvent,Toujours"; +$string['seemoredetail'] = "Cliquer ici pour avoir plus de détail"; +$string['selectedquestions'] = "Question choisies dans un barème, tous les étudiants"; +$string['summary'] = "Résumé"; +$string['surveycompleted'] = "Vous avez répondu à ce sondage. Le graphique ci-dessous montre un résumé de vos résultats comparés aux moyennes de la classe."; +$string['surveyname'] = "Nom du sondage"; +$string['surveysaved'] = "Sondage enregistrée"; +$string['surveytype'] = "Type de sondage"; +$string['thanksforanswers'] = "Merci d'avoir répondu à ce sondage, \$a"; +$string['time'] = "Temps"; +$string['viewsurveyresponses'] = "Consulter les réponses du sondage \$a"; + +?> diff --git a/lang/fr_ca/tex.php b/lang/fr_ca/tex.php index 19c5ffe1d73..9d8eea3cdb3 100644 --- a/lang/fr_ca/tex.php +++ b/lang/fr_ca/tex.php @@ -1,7 +1,7 @@ - + diff --git a/lang/fr_ca/webquest.php b/lang/fr_ca/webquest.php index f405dc2a425..97849583c71 100644 --- a/lang/fr_ca/webquest.php +++ b/lang/fr_ca/webquest.php @@ -1,8 +1,8 @@ - + diff --git a/lang/fr_ca/workshop.php b/lang/fr_ca/workshop.php index 8a8538bc3ea..abb156759c1 100644 --- a/lang/fr_ca/workshop.php +++ b/lang/fr_ca/workshop.php @@ -1,262 +1,238 @@ -Ce formulaire contient vos commentaires et notes sur une version précédente.
                            Veuillez les modifier après avoir consulté le nouveau travail.'; -$string['assessmentofthissubmission'] = 'Évaluation du travail'; -$string['assessments'] = 'Évaluations'; -$string['assessmentsareok'] = 'Les évaluations sont correctes'; -$string['assessmentsby'] = 'Évaluations par $a'; -$string['assessmentsdone'] = 'Évaluations terminées'; -$string['assessmentsexcluded'] = 'Nombre d\'évaluations rejetées pour cet $a'; -$string['assessmentsmustbeagreed'] = 'Les évaluations doivent être acceptées'; -$string['assessmentwasagreedon'] = 'L\'évaluation a été acceptée le $a'; -$string['assessor'] = 'Correcteur'; -$string['assessthissubmission'] = 'Évaluer ce travail'; -$string['assignmentnotinthecorrectphase'] = 'Le travail n\'est pas dans la bonne étape'; -$string['authorofsubmission'] = 'Auteur du travail'; -$string['averageerror'] = 'Erreur moyenne'; -$string['awaitinggradingbyteacher'] = 'En attente de la note de $a'; -$string['beforedeadline'] = 'Avant l\'échéance : $a'; -$string['calculationoffinalgrades'] = 'Calcul de la note finale'; -$string['closeassignment'] = 'La date d\'échéance pour le travail est dépassée'; -$string['comment'] = 'Commentaire'; -$string['commentby'] = 'Commentaire de'; -$string['comparisonofassessments'] = 'Comparaison des travaux'; -$string['confirmdeletionofthisitem'] = 'Confirmer l\'effacement de $a'; -$string['correct'] = 'Correct'; -$string['count'] = 'Compte'; -$string['criterion'] = 'Critère'; -$string['deadline'] = 'Échéance'; -$string['deadlineis'] = 'La date d\'échéance est $a'; -$string['delete'] = 'Effacer'; -$string['deleting'] = 'Effacement'; -$string['description'] = 'Description'; -$string['detailsofassessment'] = 'Détails sur l\'évaluation'; -$string['disagreewiththisassessment'] = 'En désaccord avec l\'évaluation'; -$string['displayoffinalgrades'] = 'Affichage des notes finales'; -$string['dontshowgrades'] = 'Ne pas montrer les notes'; -$string['edit'] = 'Modifier'; -$string['editacomment'] = 'Modifier un commentaire'; -$string['editingassessmentelements'] = 'Modifier des critères de l\'évaluation'; -$string['element'] = 'Critère'; -$string['elementweight'] = 'Poids du critère'; -$string['errorbanded'] = 'Liste de vérification'; -$string['errortable'] = 'Table d\'erreurs'; -$string['excellent'] = 'Excellent'; -$string['excludingdroppedassessments'] = 'après exclusion des évaluations rejetées'; -$string['expectederror'] = 'Erreur attendue (en devinant) : $a'; -$string['fair'] = 'Juste'; -$string['feedbackgoeshere'] = 'Écrire votre rétroaction ici'; -$string['generalcomment'] = 'Commentaire général'; -$string['good'] = 'Bon'; -$string['grade'] = 'Note'; -$string['gradeassessment'] = 'Note de l\'évaluation'; -$string['graded'] = 'Noté'; -$string['gradedbyteacher'] = 'Noté par $a'; -$string['gradeforassessments'] = 'Note des évaluations'; -$string['gradeforbias'] = 'Note pour les biais'; -$string['gradeforreliability'] = 'Note pour la fiabilité'; -$string['gradeforstudentsassessment'] = 'Note pour l\'évaluation faite par l\'étudiant'; -$string['gradeforsubmission'] = 'Note de l\'évaluation'; -$string['gradegiventoassessment'] = 'Note donné au travail'; -$string['gradeofsubmission'] = 'Note du travail : $a'; -$string['gradesforassessmentsare'] = 'Les notes pour les travaux sont sur $a'; -$string['gradesforstudentsassessment'] = 'Notes pour $a travaux'; -$string['gradesforsubmissionsare'] = 'Les notes pour les travaux soumis sont sur $a'; -$string['gradetable'] = 'Tableau des notes'; -$string['gradingallassessments'] = 'Noter toutes les évaluations'; -$string['gradinggrade'] = 'Note du processus d\'évaluation'; -$string['gradingstrategy'] = 'Stratégie d\'évaluation'; -$string['hidegradesbeforeagreement'] = 'Cacher les notes avant l\'accord entre les parties'; -$string['hidenamesfromstudents'] = 'Masquer les noms des $a'; -$string['includeteachersgrade'] = 'Inclure la note du professeur'; -$string['incorrect'] = 'Incorrect'; -$string['iteration'] = 'Itération $a terminée'; -$string['lax'] = 'Indulgent'; -$string['leaguetable'] = 'Tableau des travaux de la ligue'; -$string['listassessments'] = 'Liste des évaluations'; -$string['listofallsubmissions'] = 'Liste de tous les travaux'; -$string['liststudentsassessments'] = 'Liste des évaluations faites par les étudiants'; -$string['loadingforteacherassessments'] = 'Chargement pour $a évaluations'; -$string['mail1'] = 'Votre travail «$a» a été évalué par '; -$string['mail10'] = 'Vous pouvez l\'évaluer dans le cadre de votre atelier '; -$string['mail2'] = 'Les commentaires et la note sont disponibles dans l\'atelier «$a».'; -$string['mail3'] = 'Vous pouvez le voir dans votre atelier.'; -$string['mail4'] = 'Un commentaire a été ajouté au travail «$a» par '; -$string['mail5'] = 'Ce nouveau commentaire est disponible dans l\'atelier «$a».'; -$string['mail6'] = 'L\'évaluation du travail «$a» a été révisée'; -$string['mail7'] = 'Les commentaires fournis par «$a» sont disponibles dans l\'atelier.'; -$string['mail8'] = 'Le travail « $a » est un travail qui a été révisé.'; -$string['mail9'] = 'Veuillez l\'évaluer dans l\'atelier « $a »'; -$string['managingassignment'] = 'Gestion des évaluations'; -$string['maximum'] = 'Maximum'; -$string['maximumsize'] = 'Taille maximale'; -$string['mean'] = 'Moyenne'; -$string['minimum'] = 'Minimum'; -$string['modulename'] = 'Atelier'; -$string['modulenameplural'] = 'Ateliers'; -$string['movingtophase'] = 'Passer à l\'étape $a'; -$string['namesnotshowntostudents'] = 'Noms masqués pour les $a'; -$string['newassessments'] = 'Nouvelles évaluations'; -$string['newgradings'] = 'Nouvelles notes'; -$string['newsubmissions'] = 'Nouveaux travaux'; -$string['noassessments'] = 'Pas d\'évaluation'; -$string['noassessmentsdone'] = 'Pas d\'évaluation effectuée'; -$string['nosubmission'] = 'Aucun travail remis'; -$string['nosubmissionsavailableforassessment'] = 'Pas de travaux disponibles pour évaluation'; -$string['notavailable'] = 'Pas disponible'; -$string['notenoughexamplessubmitted'] = 'Pas assez d\'exemples soumis'; -$string['noteonassessmentelements'] = 'Sachez que l\'évaluation se fait à partir de critères.
                            -Ceci facilite l\'attribution d\'une note et assure une plus grande équité. Vous devez ajouter ces critères
                            avant de rendre disponible cet atelier aux étudiants . -Pour ce faire,
                            -cliquez sur l\'atelier dans le cours et on vous demandera d\'ajouter des critères
                            s\'il n\'y en a aucun. Vous pouvez en ajouter d\'autres plus tard à l\'aide du menu d\'édition
                            . Vous pouvez modifier les critères à l\'aide de la commande \'Gestion des évaluations\'.'; -$string['noteonstudentassessments'] = 'Note donnée par l\'étudiant / Note du processus de notation de l\'évaluation'; -$string['notgraded'] = 'Évaluation formative avec grille d\'évaluation'; -$string['notitlegiven'] = 'Aucun titre fourni'; -$string['numberofassessmentelements'] = 'Nombre de critères, de commentaires ou d\'éléments '; -$string['numberofassessments'] = 'Nombre d\'évaluations'; -$string['numberofassessmentschanged'] = 'Nombres d\'évaluations modifiées : $a'; -$string['numberofassessmentsdropped'] = 'Nombres d\'évaluations rejettées : $a'; -$string['numberofassessmentsofstudentsubmissions'] = 'Nombre d\'évaluation des travaux d\'étudiants'; -$string['numberofassessmentsofteachersexamples'] = 'Nombre d\'évaluations des exemples du professeur'; -$string['numberofassessmentsweighted'] = 'Nombre d\'évaluations (pondérées) : $a'; -$string['numberofentries'] = 'Nombre d\'entrées'; -$string['numberofnegativeresponses'] = 'Nombre de réponses négatives'; -$string['numberofsubmissions'] = 'Nombre de travaux remis : $a'; -$string['on'] = 'sur $a'; -$string['openassignment'] = 'Travail ouvert'; -$string['optionaladjustment'] = 'Ajustement facultatif'; -$string['optionforpeergrade'] = 'Option pour l\'évaluation par les pairs'; -$string['optionsusedinanalysis'] = 'Options utilisées dans l\'analyse'; -$string['overallgrade'] = 'Note totale'; -$string['overallocation'] = 'Déséquilibre - trop d\'allocations'; -$string['overallpeergrade'] = 'Note totale des pairs$a'; -$string['overallteachergrade'] = 'Note totale du professeur: $a'; -$string['ownwork'] = 'Mon travail'; -$string['parentlanguage'] = 'fr'; -$string['percentageofassessments'] = 'Pourcentage d\'évaluations à rejeter'; -$string['phase'] = 'Étape'; -$string['phase1'] = 'Création du travail'; -$string['phase1short'] = 'Mise en place'; -$string['phase2'] = 'Permettre $a travaux et évaluations'; -$string['phase2short'] = 'Travaux soumis'; -$string['phase3'] = 'Calcul des notes finales'; -$string['phase3short'] = 'Travaux et évaluations'; -$string['phase4'] = 'Afficher les notes finales'; -$string['phase4short'] = 'Évaluations'; -$string['phase5'] = 'Calculer des notes finales'; -$string['phase5short'] = 'Calculer les notes'; -$string['pleaseassesstheseexamplesfromtheteacher'] = 'Veuillez évaluer ces exemples de $a'; -$string['pleaseassessthesestudentsubmissions'] = 'Veuillez évaluer ces $a travaux'; -$string['pleaseassessyoursubmissions'] = 'Veuillez évaluer votre travail / vos travaux'; -$string['poor'] = 'Faible'; -$string['present'] = 'Présent'; -$string['reasonforadjustment'] = 'Justification de l\'ajustement'; -$string['reassess'] = 'Ré-évaluer'; -$string['regradestudentassessments'] = 'Renoter les évaluations de l\'étudiant'; -$string['repeatanalysis'] = 'Répéter l\'analyse'; -$string['reply'] = 'Réponse'; -$string['returnto'] = 'Retourner à'; -$string['returntosubmissionpage'] = 'Retouner à la page pour la remise des travaux'; -$string['rubric'] = 'Grille d\'évaluation critériée'; -$string['savedok'] = 'Sauvegarde réussie'; -$string['saveleaguetableoptions'] = 'Enregistrer les réglages du tableau des meilleurs travaux'; -$string['savemyassessment'] = 'Sauvegarder mon évaluation'; -$string['savemycomment'] = 'Sauvegarder mon commentaire'; -$string['savemygrading'] = 'Sauvegarder ma note'; -$string['saveoverallocation'] = 'Enregistrer l\'équilibrage'; -$string['scale10'] = 'Total sur 10'; -$string['scale100'] = 'Total sur 100'; -$string['scale20'] = 'Total sur 20'; -$string['scalecorrect'] = 'Échelle en 2 points bonne/mauvaise réponse'; -$string['scaleexcellent4'] = 'Échelle en 4 points excellente/très mauvaise réponse'; -$string['scaleexcellent5'] = 'Échelle en 5 points excellente/très mauvaise réponse'; -$string['scaleexcellent7'] = 'Échelle en 7 points excellente/très mauvaise réponse'; -$string['scalegood3'] = 'Échelle en 3 points bon/faible'; -$string['scalepresent'] = 'Échelle en 2 points Présent/absent'; -$string['scaleyes'] = 'Échelle en 2 points oui/non'; -$string['select'] = 'Choisir'; -$string['selfassessment'] = 'Auto-évaluation'; -$string['showgrades'] = 'Montrer les notes'; -$string['specimenassessmentform'] = 'Exemple de formulaire d\'évaluation'; -$string['standarddeviation'] = 'Écart type de l\'élément $a :'; -$string['standarddeviationnote'] = 'Les éléments avec un écart type nul ou très petit peuvent biaiser l\'analyse.
                            Cet élément a donc été exclu de l\'analyse.'; -$string['standarddeviationofelement'] = 'Écart -type de l\'élément $a :'; -$string['strict'] = 'Strict'; -$string['studentassessments'] = '$a évaluations'; -$string['studentgrades'] = '$a notes'; -$string['studentsubmissions'] = '$a travaux'; -$string['studentsubmissionsforassessment'] = '$a travaux d\'étudiants pour évaluation'; -$string['submission'] = 'Travail'; -$string['submissions'] = 'Travaux'; -$string['submissionsnolongerallowed'] = 'La remise des travaux n\'est plus autorisée'; -$string['submissionsused'] = '$a travaux remis utilisés dans ce tableau'; -$string['submitassignment'] = 'Soumettre un travail'; -$string['submitassignmentusingform'] = 'Remettre votre travail avec ce formulaire'; -$string['submitexampleassignment'] = 'Soumettre un exemple de travail'; -$string['submitrevisedassignment'] = 'Remettre votre travail corrigé avec ce formulaire'; -$string['submitted'] = 'Soumis'; -$string['submittedby'] = 'Soumis par'; -$string['suggestedgrade'] = 'Note suggérée'; -$string['teacherassessments'] = '$a évaluations'; -$string['teacherscomment'] = 'Commentaire du professeur'; -$string['teachersgrade'] = 'Note du professeur'; -$string['teachersubmissionsforassessment'] = '$a travaux soumis par le professeur pour évaluation'; -$string['thegradeforthisassessmentis'] = 'La note donnée à cette évaluation est $a'; -$string['thegradeis'] = 'La note est $a'; -$string['theseasessmentsaregradedbytheteacher'] = 'Ces évaluations ont été notées par $a'; -$string['thisisadroppedassessment'] = 'Cette évaluation a été rejetée'; -$string['timeassessed'] = 'Temps de l\'évaluation'; -$string['title'] = 'Titre'; -$string['typeofscale'] = 'Type d\'échelle'; -$string['ungradedassessments'] = '$a évaluations non-notées'; -$string['ungradedassessmentsofstudentsubmissions'] = '$a travaux soumis par les étudiants non notés'; -$string['ungradedassessmentsofteachersubmissions'] = '$a travaux soumis par le professeur non notés'; -$string['verylax'] = 'Très indulgent'; -$string['verypoor'] = 'Très faible'; -$string['verystrict'] = 'Très strict'; -$string['view'] = 'Afficher'; -$string['viewassessmentofteacher'] = 'Afficher l\'évaluation de $a'; -$string['viewotherassessments'] = ' Afficher les autres évaluations'; -$string['warningonamendingelements'] = 'Attention : Des travaux ont été soumis.
                            Ne pas modifier le nombre de critères d\'évaluation, les échelles ou le poids des critères.'; -$string['weight'] = 'Coefficient'; -$string['weightederrorcount'] = 'Nombre d\'erreurs pondérées: $a'; -$string['weightforbias'] = 'Poids pour les biais'; -$string['weightforgradingofassessments'] = 'Poids pour les notes des évaluations'; -$string['weightforpeerassessments'] = 'Poids pour l\'évaluation par les pairs'; -$string['weightforreliability'] = 'Poids pour la fiabilité'; -$string['weightforteacherassessments'] = 'Coefficient des évaluations de l\'enseignant'; -$string['weights'] = 'Poids'; -$string['weightsusedforfinalgrade'] = 'Poids utilisés pour la note finale'; -$string['weightsusedforsubmissions'] = 'Poids utilisés pour les travaux'; -$string['workshopagreedassessments'] = 'Évaluations de l\'atelier en accord'; -$string['workshopassessments'] = 'Évaluations de l\'atelier'; -$string['workshopcomments'] = 'Commentaire sur l\'atelier'; -$string['workshopfeedback'] = 'Rétroaction sur l\'atelier'; -$string['workshopsubmissions'] = 'Travaux remis de l\'atelier'; -$string['yourassessments'] = 'Vos évaluations'; -$string['yourassessmentsofexamplesfromtheteacher'] = 'Vos évaluations des exemples du $a'; -$string['yourfeedbackgoeshere'] = 'Écrire vos rétroactions ici'; - -?> +Ce formulaire contient vos commentaires et notes sur une version précédente.
                            Veuillez les modifier après avoir consulté le nouveau travail.'; +$string['assessmentofthissubmission'] = 'Évaluation du travail'; +$string['assessments'] = 'Évaluations'; +$string['assessmentsareok'] = 'Les évaluations sont correctes'; +$string['assessmentsby'] = 'Évaluations par $a'; +$string['assessmentsdone'] = 'Évaluations terminées'; +$string['assessmentsexcluded'] = 'Nombre d\'évaluations rejetées pour cet $a'; +$string['assessmentsmustbeagreed'] = 'Les évaluations doivent être acceptées'; +$string['assessmentwasagreedon'] = 'L\'évaluation a été acceptée le $a'; +$string['assessor'] = 'Correcteur'; +$string['assessthissubmission'] = 'Évaluer ce travail'; +$string['assignmentnotinthecorrectphase'] = 'Le travail n\'est pas dans la bonne étape'; +$string['authorofsubmission'] = 'Auteur du travail'; +$string['averageerror'] = 'Erreur moyenne'; +$string['awaitinggradingbyteacher'] = 'En attente de la note de $a'; +$string['beforedeadline'] = 'Avant l\'échéance : $a'; +$string['calculationoffinalgrades'] = 'Calcul de la note finale'; +$string['closeassignment'] = 'La date d\'échéance pour le travail est dépassée'; +$string['comment'] = 'Commentaire'; +$string['commentby'] = 'Commentaire de'; +$string['confirmdeletionofthisitem'] = 'Confirmer l\'effacement de $a'; +$string['correct'] = 'Correct'; +$string['criterion'] = 'Critère'; +$string['deadline'] = 'Échéance'; +$string['deadlineis'] = 'La date d\'échéance est $a'; +$string['delete'] = 'Effacer'; +$string['deleting'] = 'Effacement'; +$string['description'] = 'Description'; +$string['detailsofassessment'] = 'Détails sur l\'évaluation'; +$string['disagreewiththisassessment'] = 'En désaccord avec l\'évaluation'; +$string['displayoffinalgrades'] = 'Affichage des notes finales'; +$string['dontshowgrades'] = 'Ne pas montrer les notes'; +$string['edit'] = 'Modifier'; +$string['editacomment'] = 'Modifier un commentaire'; +$string['editingassessmentelements'] = 'Modifier des critères de l\'évaluation'; +$string['element'] = 'Critère'; +$string['elementweight'] = 'Poids du critère'; +$string['errorbanded'] = 'Liste de vérification'; +$string['errortable'] = 'Table d\'erreurs'; +$string['excellent'] = 'Excellent'; +$string['excludingdroppedassessments'] = 'après exclusion des évaluations rejetées'; +$string['expectederror'] = 'Erreur attendue (en devinant) : $a'; +$string['feedbackgoeshere'] = 'Écrire votre rétroaction ici'; +$string['generalcomment'] = 'Commentaire général'; +$string['good'] = 'Bon'; +$string['grade'] = 'Note'; +$string['gradeassessment'] = 'Note de l\'évaluation'; +$string['graded'] = 'Noté'; +$string['gradedbyteacher'] = 'Noté par $a'; +$string['gradeforassessments'] = 'Note des évaluations'; +$string['gradeforbias'] = 'Note pour les biais'; +$string['gradeforreliability'] = 'Note pour la fiabilité'; +$string['gradeforstudentsassessment'] = 'Note pour l\'évaluation faite par l\'étudiant'; +$string['gradeforsubmission'] = 'Note de l\'évaluation'; +$string['gradeofsubmission'] = 'Note du travail : $a'; +$string['gradetable'] = 'Tableau des notes'; +$string['gradingstrategy'] = 'Stratégie d\'évaluation'; +$string['hidegradesbeforeagreement'] = 'Cacher les notes avant l\'accord entre les parties'; +$string['hidenamesfromstudents'] = 'Masquer les noms des $a'; +$string['includeteachersgrade'] = 'Inclure la note du professeur'; +$string['incorrect'] = 'Incorrect'; +$string['iteration'] = 'Itération $a terminée'; +$string['leaguetable'] = 'Tableau des travaux de la ligue'; +$string['listassessments'] = 'Liste des évaluations'; +$string['listofallsubmissions'] = 'Liste de tous les travaux'; +$string['liststudentsassessments'] = 'Liste des évaluations faites par les étudiants'; +$string['loadingforteacherassessments'] = 'Chargement pour $a évaluations'; +$string['mail1'] = 'Votre travail «$a» a été évalué par '; +$string['mail10'] = 'Vous pouvez l\'évaluer dans le cadre de votre atelier '; +$string['mail2'] = 'Les commentaires et la note sont disponibles dans l\'atelier «$a».'; +$string['mail3'] = 'Vous pouvez le voir dans votre atelier.'; +$string['mail4'] = 'Un commentaire a été ajouté au travail «$a» par '; +$string['mail5'] = 'Ce nouveau commentaire est disponible dans l\'atelier «$a».'; +$string['mail6'] = 'L\'évaluation du travail «$a» a été révisée'; +$string['mail7'] = 'Les commentaires fournis par «$a» sont disponibles dans l\'atelier.'; +$string['mail8'] = 'Le travail « $a » est un travail qui a été révisé.'; +$string['mail9'] = 'Veuillez l\'évaluer dans l\'atelier « $a »'; +$string['managingassignment'] = 'Gestion des évaluations'; +$string['maximumsize'] = 'Taille maximale'; +$string['modulename'] = 'Atelier'; +$string['modulenameplural'] = 'Ateliers'; +$string['movingtophase'] = 'Passer à l\'étape $a'; +$string['namesnotshowntostudents'] = 'Noms masqués pour les $a'; +$string['newassessments'] = 'Nouvelles évaluations'; +$string['newgradings'] = 'Nouvelles notes'; +$string['newsubmissions'] = 'Nouveaux travaux'; +$string['noassessments'] = 'Pas d\'évaluation'; +$string['noassessmentsdone'] = 'Pas d\'évaluation effectuée'; +$string['nosubmission'] = 'Aucun travail remis'; +$string['nosubmissionsavailableforassessment'] = 'Pas de travaux disponibles pour évaluation'; +$string['notavailable'] = 'Pas disponible'; +$string['noteonassessmentelements'] = 'Sachez que l\'évaluation se fait à partir de critères.
                            +Ceci facilite l\'attribution d\'une note et assure une plus grande équité. Vous devez ajouter ces critères
                            avant de rendre disponible cet atelier aux étudiants . +Pour ce faire,
                            +cliquez sur l\'atelier dans le cours et on vous demandera d\'ajouter des critères
                            s\'il n\'y en a aucun. Vous pouvez en ajouter d\'autres plus tard à l\'aide du menu d\'édition
                            . Vous pouvez modifier les critères à l\'aide de la commande \'Gestion des évaluations\'.'; +$string['notgraded'] = 'Évaluation formative avec grille d\'évaluation'; +$string['notitlegiven'] = 'Aucun titre fourni'; +$string['numberofassessmentelements'] = 'Nombre de critères, de commentaires ou d\'éléments '; +$string['numberofassessments'] = 'Nombre d\'évaluations'; +$string['numberofassessmentschanged'] = 'Nombres d\'évaluations modifiées : $a'; +$string['numberofassessmentsofstudentsubmissions'] = 'Nombre d\'évaluation des travaux d\'étudiants'; +$string['numberofassessmentsofteachersexamples'] = 'Nombre d\'évaluations des exemples du professeur'; +$string['numberofentries'] = 'Nombre d\'entrées'; +$string['numberofnegativeresponses'] = 'Nombre de réponses négatives'; +$string['numberofsubmissions'] = 'Nombre de travaux remis : $a'; +$string['on'] = 'sur $a'; +$string['openassignment'] = 'Travail ouvert'; +$string['optionaladjustment'] = 'Ajustement facultatif'; +$string['optionforpeergrade'] = 'Option pour l\'évaluation par les pairs'; +$string['optionsusedinanalysis'] = 'Options utilisées dans l\'analyse'; +$string['overallgrade'] = 'Note totale'; +$string['overallocation'] = 'Déséquilibre - trop d\'allocations'; +$string['overallpeergrade'] = 'Note totale des pairs$a'; +$string['overallteachergrade'] = 'Note totale du professeur: $a'; +$string['ownwork'] = 'Mon travail'; +$string['percentageofassessments'] = 'Pourcentage d\'évaluations à rejeter'; +$string['phase'] = 'Étape'; +$string['phase1'] = 'Création du travail'; +$string['phase1short'] = 'Mise en place'; +$string['phase2'] = 'Permettre $a travaux et évaluations'; +$string['phase2short'] = 'Travaux soumis'; +$string['phase3'] = 'Calcul des notes finales'; +$string['phase3short'] = 'Travaux et évaluations'; +$string['phase4'] = 'Afficher les notes finales'; +$string['phase4short'] = 'Évaluations'; +$string['phase5'] = 'Calculer des notes finales'; +$string['phase5short'] = 'Calculer les notes'; +$string['phase6'] = 'Afficher les notes finales'; +$string['phase6short'] = 'Afficher les notes'; +$string['pleaseassesstheseexamplesfromtheteacher'] = 'Veuillez évaluer ces exemples de $a'; +$string['pleaseassessthesestudentsubmissions'] = 'Veuillez évaluer ces $a travaux'; +$string['pleaseassessyoursubmissions'] = 'Veuillez évaluer votre travail / vos travaux'; +$string['poor'] = 'Faible'; +$string['present'] = 'Présent'; +$string['reasonforadjustment'] = 'Justification de l\'ajustement'; +$string['reassess'] = 'Ré-évaluer'; +$string['repeatanalysis'] = 'Répéter l\'analyse'; +$string['reply'] = 'Réponse'; +$string['returnto'] = 'Retourner à'; +$string['returntosubmissionpage'] = 'Retouner à la page pour la remise des travaux'; +$string['rubric'] = 'Grille d\'évaluation critériée'; +$string['savedok'] = 'Sauvegarde réussie'; +$string['saveleaguetableoptions'] = 'Enregistrer les réglages du tableau des meilleurs travaux'; +$string['savemyassessment'] = 'Sauvegarder mon évaluation'; +$string['savemycomment'] = 'Sauvegarder mon commentaire'; +$string['savemygrading'] = 'Sauvegarder ma note'; +$string['saveoverallocation'] = 'Enregistrer l\'équilibrage'; +$string['scale10'] = 'Total sur 10'; +$string['scale100'] = 'Total sur 100'; +$string['scale20'] = 'Total sur 20'; +$string['scalecorrect'] = 'Échelle en 2 points bonne/mauvaise réponse'; +$string['scaleexcellent4'] = 'Échelle en 4 points excellente/très mauvaise réponse'; +$string['scaleexcellent5'] = 'Échelle en 5 points excellente/très mauvaise réponse'; +$string['scaleexcellent7'] = 'Échelle en 7 points excellente/très mauvaise réponse'; +$string['scalegood3'] = 'Échelle en 3 points bon/faible'; +$string['scalepresent'] = 'Échelle en 2 points Présent/absent'; +$string['scaleyes'] = 'Échelle en 2 points oui/non'; +$string['select'] = 'Choisir'; +$string['selfassessment'] = 'Auto-évaluation'; +$string['setoverallocation'] = 'Équilibrer l\'attribution des travaux à évaluer'; +$string['showgrades'] = 'Montrer les notes'; +$string['specimenassessmentform'] = 'Exemple de formulaire d\'évaluation'; +$string['standarddeviation'] = 'Écart type de l\'élément $a :'; +$string['standarddeviationnote'] = 'Les éléments avec un écart type nul ou très petit peuvent biaiser l\'analyse.
                            Cet élément a donc été exclu de l\'analyse.'; +$string['studentassessments'] = '$a évaluations'; +$string['studentgrades'] = '$a notes'; +$string['studentsubmissions'] = '$a travaux'; +$string['studentsubmissionsforassessment'] = '$a travaux d\'étudiants pour évaluation'; +$string['submission'] = 'Travail'; +$string['submissions'] = 'Travaux'; +$string['submissionsnolongerallowed'] = 'La remise des travaux n\'est plus autorisée'; +$string['submissionsused'] = '$a travaux remis utilisés dans ce tableau'; +$string['submitassignment'] = 'Soumettre un travail'; +$string['submitassignmentusingform'] = 'Remettre votre travail avec ce formulaire'; +$string['submitexampleassignment'] = 'Soumettre un exemple de travail'; +$string['submitrevisedassignment'] = 'Remettre votre travail corrigé avec ce formulaire'; +$string['submitted'] = 'Soumis'; +$string['submittedby'] = 'Soumis par'; +$string['suggestedgrade'] = 'Note suggérée'; +$string['teacherassessments'] = '$a évaluations'; +$string['teacherscomment'] = 'Commentaire du professeur'; +$string['teachersgrade'] = 'Note du professeur'; +$string['teachersubmissionsforassessment'] = '$a travaux soumis par le professeur pour évaluation'; +$string['thegradeis'] = 'La note est $a'; +$string['thereisfeedbackfromtheteacher'] = 'Il y a une rétroaction de $a'; +$string['theseasessmentsaregradedbytheteacher'] = 'Ces évaluations ont été notées par $a'; +$string['timeassessed'] = 'Temps de l\'évaluation'; +$string['title'] = 'Titre'; +$string['typeofscale'] = 'Type d\'échelle'; +$string['ungradedassessmentsofstudentsubmissions'] = '$a travaux soumis par les étudiants non notés'; +$string['ungradedassessmentsofteachersubmissions'] = '$a travaux soumis par le professeur non notés'; +$string['verypoor'] = 'Très faible'; +$string['view'] = 'Voir'; +$string['viewassessmentofteacher'] = 'Voir l\'évaluation de $a'; +$string['viewotherassessments'] = 'Voir les autres évaluations'; +$string['warningonamendingelements'] = 'Attention : Des travaux ont été soumis.
                            Ne pas modifier le nombre de critères d\'évaluation, les échelles ou le poids des critères.'; +$string['weight'] = 'Coefficient'; +$string['weightederrorcount'] = 'Nombre d\'erreurs pondérées: $a'; +$string['weightforbias'] = 'Poids pour les biais'; +$string['weightforgradingofassessments'] = 'Poids pour les notes des évaluations'; +$string['weightforpeerassessments'] = 'Poids pour l\'évaluation par les pairs'; +$string['weightforreliability'] = 'Poids pour la fiabilité'; +$string['weights'] = 'Poids'; +$string['weightsusedforfinalgrade'] = 'Poids utilisés pour la note finale'; +$string['weightsusedforsubmissions'] = 'Poids utilisés pour les travaux'; +$string['workshopagreedassessments'] = 'Évaluations de l\'atelier en accord'; +$string['workshopassessments'] = 'Évaluations de l\'atelier'; +$string['workshopcomments'] = 'Commentaire sur l\'atelier'; +$string['workshopfeedback'] = 'Rétroaction sur l\'atelier'; +$string['workshopsubmissions'] = 'Travaux remis de l\'atelier'; +$string['yourassessments'] = 'Vos évaluations'; +$string['yourassessmentsofexamplesfromtheteacher'] = 'Vos évaluations des exemples du $a'; +$string['yourfeedbackgoeshere'] = 'Écrire vos rétroactions ici'; + +?> diff --git a/lang/ga/admin.php b/lang/ga/admin.php deleted file mode 100644 index 0aefa34d5ce..00000000000 --- a/lang/ga/admin.php +++ /dev/null @@ -1,12 +0,0 @@ -A thuilleadh eolais'; -$string['upgradelogsinfo'] = 'Rinneadh roinnt athruithe le déanaí sa chaoi ina stóráiltear logaí. Le bheith in ann breathnú ar do chuid seanlogaí ar fad ar bhonn gníomhaíochta, ní mór do chuid seanlogaí a uasghrádú. Ag brath ar do shuíomh, d\'fhéadfadh sé seo tamall fada a ghlacadh (msh roinnt uaireanta an chloig) agus is féidir leis stró a chur ar an mbunachar sonraí ar shuíomhanna móra. Ó thosaíonn tú an próiseas seo, ba cheart duit ligean dó críochnú (trí fhuinneog an bhrabhsálaí a choinneáil ar oscailt). Ná bí buartha - feidhmeoidh do shuíomh go breá do dhaoine eile agus na logaí á n-uasghrádú.

                            An mian leat do chuid logaí a uasghrádú anois?'; - -$string['upgradinglogs'] = 'Logaí á n-uasghrádú'; - -?> diff --git a/lang/ga/algebra.php b/lang/ga/algebra.php deleted file mode 100644 index c9a699541f7..00000000000 --- a/lang/ga/algebra.php +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/lang/ga/appointment.php b/lang/ga/appointment.php deleted file mode 100644 index 59c1413c707..00000000000 --- a/lang/ga/appointment.php +++ /dev/null @@ -1,45 +0,0 @@ - diff --git a/lang/ga/assignment.php b/lang/ga/assignment.php deleted file mode 100644 index 2e6d6f6bd5d..00000000000 --- a/lang/ga/assignment.php +++ /dev/null @@ -1,53 +0,0 @@ -teacher maidir leis an tasc a d\'aighnigh tú le haghaidh \'$a->assignment\' - -Féadfaidh tú é a fheiceáil iarcheangailte leis an tasc a d\'aighnigh tú: - - $a->url'; -$string['assignmentmailhtml'] = 'Tá aiseolas curtha ar fáil ag $a->teacher maidir leis an tasc a d\'aighnigh tú le haghaidh \'$a->assignment\'

                            -Féadfaidh tú é a fheiceáil iarcheangailte leis url\">an tasc a d\'aighnigh tú.'; -$string['assignmentname'] = 'Ainm an taisc'; -$string['assignmenttype'] = 'Cineál taisc'; -$string['configmaxbytes'] = 'Réamhshocrú d\'uasmhéid taisc do gach tasc ar an suíomh (ag brath ar theorainn an chúrsa agus ar shocraithe áitiúla eile)'; -$string['description'] = 'Cur síos'; -$string['duedate'] = 'Dáta dlite'; -$string['duedateno'] = 'Níl aon dáta dlite ann'; -$string['early'] = '$a luath'; -$string['existingfiledeleted'] = 'Scriosadh an comhad reatha: $a'; -$string['failedupdatefeedback'] = 'Theip ar uasdhátú aiseolais taisc d\'úsáideoir $a'; -$string['feedback'] = 'Aiseolas'; -$string['feedbackupdated'] = 'Aiseolas taisc uasdhátaithe do $a mac léinn'; -$string['late'] = '$a déanach'; -$string['maximumgrade'] = 'Uasghrád'; -$string['maximumsize'] = 'Uasmhéid'; -$string['modulename'] = 'Tasc'; -$string['modulenameplural'] = 'Tascanna'; -$string['newsubmissions'] = 'Tascanna aighnithe'; -$string['notgradedyet'] = 'Gan grádú go fóill'; -$string['notsubmittedyet'] = 'Níor aighníodh go fóill'; -$string['overwritewarning'] = 'Rabhadh: má dhéanann tú uaslódáil arís, RACHAIDH SÉ IN ÁIT d\'aighneacht reatha'; -$string['saveallfeedback'] = 'Sábháil m\'aiseolas ar fad'; -$string['submissionfeedback'] = 'Aiseolas aighneachta'; -$string['submissions'] = 'Aighneachtaí'; -$string['submitassignment'] = 'Aighnigh do thasc trí leas a bhaint as an bhfoirm seo'; -$string['submitted'] = 'Aighnithe'; -$string['typeoffline'] = 'Gníomhaíocht as líne'; -$string['typeuploadsingle'] = 'Uaslódáil comhad singil'; -$string['uploadbadname'] = 'Bhí carachtair aisteacha in ainm an chomhaid seo agus ní fhéadfaí é a uaslódáil'; -$string['uploadedfiles'] = 'comhaid uaslódáilte'; -$string['uploaderror'] = 'Tharla earráid agus an comhad á shábháil ar an bhfreastalaí'; -$string['uploadfailnoupdate'] = 'Uaslódáileadh i gceart an comhad ach níor uasdhátaíodh d\'aighneacht!'; -$string['uploadfiletoobig'] = 'Tá brón orm, ach tá an comhad sin ró-mhór (teorainn de $a beart)'; -$string['uploadnofilefound'] = 'Níor aimsíodh aon chomhad - an bhfuil tú cinnte gur roghnaigh tú ceann le uaschóipeáil?'; -$string['uploadnotregistered'] = 'Uaslódáileadh \'$a\' i gceart ach níor cláraíodh an t-aighneacht!'; -$string['uploadsuccess'] = 'Uaslódáileadh \'$a\' go rathúil'; -$string['viewfeedback'] = 'Féach gráid agus aiseolas na dtascanna'; -$string['viewsubmissions'] = 'Féach $a tascanna aighnithe'; -$string['yoursubmission'] = 'D\'aighneacht'; - -?> diff --git a/lang/ga/attendance.php b/lang/ga/attendance.php deleted file mode 100644 index fd0de811a8b..00000000000 --- a/lang/ga/attendance.php +++ /dev/null @@ -1,74 +0,0 @@ - diff --git a/lang/ga/block_course_list.php b/lang/ga/block_course_list.php deleted file mode 100644 index 41351d21207..00000000000 --- a/lang/ga/block_course_list.php +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/lang/ga/block_course_summary.php b/lang/ga/block_course_summary.php deleted file mode 100644 index 5c6d3a9e182..00000000000 --- a/lang/ga/block_course_summary.php +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/lang/ga/block_section_links.php b/lang/ga/block_section_links.php deleted file mode 100644 index 706bd4af8e9..00000000000 --- a/lang/ga/block_section_links.php +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/lang/ga/block_social_activities.php b/lang/ga/block_social_activities.php deleted file mode 100644 index 45d06e81227..00000000000 --- a/lang/ga/block_social_activities.php +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/lang/ga/calendar.php b/lang/ga/calendar.php deleted file mode 100644 index aab8232c173..00000000000 --- a/lang/ga/calendar.php +++ /dev/null @@ -1,122 +0,0 @@ -there is no guarantee that all events starting in this time frame will be displayed; if there are too many (more than the \"Maximum upcoming events\" preference) then the most distant events will not be shown.'; -$string['explain_maxevents'] = 'This sets the maximum number of upcoming events that can be displayed. If you pick a large number here it is possible that upcoming events displays will take up a lot of space on your screen.'; -$string['explain_persistflt'] = 'If this is enabled, then Moodle will remember your last event filter settings and automatically restore them each time you login.'; -$string['explain_startwday'] = 'Calendar weeks will be shown as starting on the day that you select here.'; -$string['explain_timeformat'] = 'You can choose to see times in either 12 or 24 hour format. If you choose \"default\", then the format will be automatically chosen according to the language you use in the site.'; -$string['globalevents'] = 'Imeachtaí domhanda'; -$string['gotocalendar'] = 'Téigh go dtí an bhféilire'; -$string['groupevents'] = 'Imeachtaí ghrúpa'; -$string['hidden'] = 'i bhfolach'; -$string['manyevents'] = '$a imeachtaí'; -$string['monthlyview'] = 'Radharc Míosúil'; -$string['newevent'] = 'Imeacht Nua'; -$string['noupcomingevents'] = 'Níl aon imeachtaí ag teacht suas'; -$string['oneevent'] = '1 imeacht'; -$string['pref_lookahead'] = 'Upcoming events look-ahead'; -$string['pref_maxevents'] = 'Maximum upcoming events'; -$string['pref_persistflt'] = 'Remember filter settings'; -$string['pref_startwday'] = 'Céad lá den tseachtain'; -$string['pref_timeformat'] = 'Formáid léiriú ama'; -$string['preferences'] = 'Sainroghanna'; -$string['preferences_available'] = 'Do sainroghanna pearsanta'; -$string['repeatnone'] = 'Gan ath-dhéanamh'; -$string['repeatweeksl'] = 'Ath-dhéin go seachtainiúil, á cruthú le chéile '; -$string['repeatweeksr'] = 'imeachtaí'; -$string['shown'] = 'léirithe'; -$string['spanningevents'] = 'Imeachtaí ar siúil'; -$string['timeformat_12'] = '12-uair (r.n./i.n.)'; -$string['timeformat_24'] = '24-uair'; -$string['today'] = 'Inniú'; -$string['tomorrow'] = 'Amárach'; -$string['tt_deleteevent'] = 'Scrios Imeacht'; -$string['tt_editevent'] = 'Athraigh imeacht'; -$string['tt_hidecourse'] = 'Taispeántar imeachtaí an chúrsa (cliceáil chun folú)'; -$string['tt_hideglobal'] = 'Taispeántar imeachtaí domhanda (cliceáil chun folú)'; -$string['tt_hidegroups'] = 'Taispeántar imeachtaí ghrúpa (cliceáil chun folú)'; -$string['tt_hideuser'] = 'Taispeántar imeachtaí an úsáideora (cliceáil chun folú)'; -$string['tt_showcourse'] = 'Tá imeachtaí an chúrsa i bhfolach (cliceáil chun taispeáint)'; -$string['tt_showglobal'] = 'Tá imeachtaí domhanda i bhfolach (cliceáil chun taispeáint)'; -$string['tt_showgroups'] = 'Tá imeachtaí ghrúpa i bhfolach (cliceáil chun taispeáint)'; -$string['tt_showuser'] = 'Tá imeachtaí an úsáideora i bhfolach (cliceáil chun taispeáint)'; -$string['typecourse'] = 'Imeacht Cúrsa'; -$string['typegroup'] = 'Imeacht Ghrúpa'; -$string['typesite'] = 'Imeacht Shuíomh'; -$string['typeuser'] = 'Imeacht Úsáideoir'; -$string['upcomingevents'] = 'Imeachtaí atá ag Teacht Suas'; -$string['userevents'] = 'Imeachtaí Úsáideora'; -$string['yesterday'] = 'Inné'; - -$string['sun'] = 'Do'; -$string['mon'] = 'Lu'; -$string['tue'] = 'Má'; -$string['wed'] = 'Cá'; -$string['thu'] = 'Dé'; -$string['fri'] = 'Ao'; -$string['sat'] = 'Sa'; -$string['sunday'] = 'Domhnach'; -$string['monday'] = 'Luan'; -$string['tuesday'] = 'Máirt'; -$string['wednesday'] = 'Céadaoin'; -$string['thursday'] = 'Déardaoin'; -$string['friday'] = 'Aoine'; -$string['saturday'] = 'Satharn'; - -$string['pref_dstpreset'] = 'Daylight Savings Time'; -$string['notusingdst'] = 'Not using DST'; -$string['dstpresetname'] = 'Preset name'; -$string['dstpresetactivated'] = 'Activation'; -$string['dstpresetdeactivated'] = 'Dectivation'; -$string['dstpresetadjusttime'] = 'Time adjustment'; - -$string['explain_dstpresetforced'] = 'The site administrator does not allow users to modify this option.'; -$string['explain_dstpreset'] = 'You can select which area to use DST settings for, if any, from the drop-down menu.'; -$string['dstdefaultpresetname'] = 'New DST Preset'; -$string['nth'] = '{$a}ú'; -$string['dsthumanreadable'] = 'On the $a->activate_index $a->activate_weekday of each $a->activate_month, move the time $a->offset minutes $a->direction. This change lasts until the $a->deactivate_index $a->deactivate_weekday of $a->deactivate_month.'; -$string['dstadjusttime'] = 'Move time'; -$string['dstof'] = 'de'; -$string['dstat'] = 'ag'; -$string['dstonthe'] = 'Ar an'; -$string['dstby'] = 'faoi'; -$string['day'] = 'lá'; -$string['timeforward'] = 'ar aghaidh'; -$string['timerewind'] = 'siar'; -$string['first'] = 'céad'; -$string['last'] = 'deireanach'; -?> diff --git a/lang/ga/censor.php b/lang/ga/censor.php deleted file mode 100644 index afdf281a384..00000000000 --- a/lang/ga/censor.php +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/lang/ga/chat.php b/lang/ga/chat.php deleted file mode 100644 index fffea92f429..00000000000 --- a/lang/ga/chat.php +++ /dev/null @@ -1,43 +0,0 @@ - diff --git a/lang/ga/choice.php b/lang/ga/choice.php deleted file mode 100644 index 5fb6e3ba995..00000000000 --- a/lang/ga/choice.php +++ /dev/null @@ -1,23 +0,0 @@ - diff --git a/lang/ga/dialogue.php b/lang/ga/dialogue.php deleted file mode 100644 index 5a6b7493f2d..00000000000 --- a/lang/ga/dialogue.php +++ /dev/null @@ -1,70 +0,0 @@ -
                            An bhfuil tú cinnte go bhfuil tú ag iarraidh an dialóg seo a dhúnadh?'; -$string['deleteafter'] = 'Scrios Dialóga Dúnta tar éis (Lá)'; -$string['dialogueclosed'] = 'Dialóg Dúnta'; -$string['dialogueintro'] = 'Réamhrá Dialóige'; -$string['dialoguemail'] = 'Tá iontráil nua curtha isteach ag $a->userfrom le do iontráil dialóige do \'$a->dialogue\' - -Féadfaidh tú é a fheiceáil ceangailte le d\'iontráil dialóige: - - $a->url'; -$string['dialoguemailhtml'] = 'Tá iontráil nua curtha isteach ag $a->userfrom le do iontráil dialóige do \'$a->dialogue\'

                            -Féadfaidh tú é a fheiceáil ceangailte le: url\">d\'iontráil dialóige.'; -$string['dialoguename'] = 'Ainm dialóige'; -$string['dialogueopened'] = 'Dialóg oscailte le $a'; -$string['dialoguewith'] = 'Dialóg le $a'; -$string['everybody'] = 'Gach duine'; -$string['furtherinformation'] = 'A Thuilleadh Eolais'; -$string['lastentry'] = 'Iontráil Dheiridh'; -$string['maildefault'] = 'R-phost Réamhshocruithe'; -$string['modulename'] = 'Dialóg'; -$string['modulenameplural'] = 'Dialóga'; -$string['namehascloseddialogue'] = 'Dhún $a dialóg'; -$string['newdialogueentries'] = 'Iontrálacha nua dialóige'; -$string['newentry'] = 'Iontráil Nua'; -$string['noavailablepeople'] = 'Níl éinne ar fáil le Dialóg a bheith agat leo.'; -$string['nopersonchosen'] = 'Níor Roghnaíodh Éinne'; -$string['nosubject'] = 'Níor Cuireadh isteach Ábhar'; -$string['notextentered'] = 'Níor Cuireadh isteach Téacs'; -$string['notstarted'] = 'Níor thosaigh tú an dialóg seo fós'; -$string['notyetseen'] = 'Gan feiceáil go fóill'; -$string['numberofentries'] = 'Líon iontrálacha'; -$string['numberofentriesadded'] = 'Líon iontrálacha a cuireadh leis: $a'; -$string['of'] = 'as'; -$string['onwrote'] = 'Ar $a scríobh'; -$string['onyouwrote'] = 'Ar $a scríobh tú'; -$string['open'] = 'Oscail'; -$string['openadialoguewith'] = 'Oscail Dialóg le'; -$string['opendialogue'] = 'Oscail Dialóg'; -$string['opendialogueentries'] = 'Oscail iontrálacha dialóige'; -$string['pane0'] = 'Oscail Dialóg'; -$string['pane1'] = '$a Dialóg ag fanacht ar Fhreagraí uait'; -$string['pane1one'] = 'Dialóg amháin ag fanacht ar Fhreagra uait'; -$string['pane2'] = '$a Dialóg ag fanacht ar Fhreagraí ón duine eile'; -$string['pane2one'] = 'Dialóg amháin ag fanacht ar Fhreagra ón duine eile'; -$string['pane3'] = '$a Dialóg Dúnta'; -$string['pane3one'] = 'Dialóg Dúnta amháin'; -$string['seen'] = 'Feicthe $a ó shin'; -$string['sendmailmessages'] = 'Seol R-Phostanna faoi mo chuid iontrálacha nua'; -$string['status'] = 'Stádas'; -$string['studenttostudent'] = 'Mac Léinn go Mac Léinn'; -$string['subject'] = 'Ábhar'; -$string['subjectadded'] = 'Ábhar Curtha Leis'; -$string['teachertostudent'] = 'Múinteoir go Mac Léinn'; -$string['typefirstentry'] = 'Clóigh an chéad iontráil anseo'; -$string['typefollowup'] = 'Clóigh leanúint anseo'; -$string['typeofdialogue'] = 'Cineál Dialóige'; -$string['typereply'] = 'Clóigh freagra anseo'; -$string['viewallentries'] = 'Féach $a iontráil Dialóige'; - -?> diff --git a/lang/ga/docs/background.html b/lang/ga/docs/background.html deleted file mode 100644 index 986a9f7a512..00000000000 --- a/lang/ga/docs/background.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - Moodle Docs: Cúlra - - - - - -

                            Cúlra

                            - -
                            -

                            Tá Moodle gníomhach agus á athchló - i gcónaí. Chuir Martin - Dougiamas tús leis an bhforbairt, agus is é atá - i gceannas ar an tionscnamh i gcónaí:

                            -

                            Tá mé ag obair air bealach nó bealach - eile leis na blianta. Thosaigh sé sna 90'daigh nuair a bhí - mé i mo Mháistir Gréasáin ag Curtin - University of Technology agus i mo riarthóir córais ar - a n-insealbhú WebCT. Bhí bamba ag baint le WebCT agus chuir - sé tochas orm nár mhór dom é a scríobadh - - chaithfeadh sé go mbeadh bealach níos fearr ar fáil - (ní hea, ní an Clár Dubh :-)

                            -

                            Tá aithne freisin agam ar líon mór daoine i - scoileanna agus in institiúid bheaga (agus i roinnt cinn mhóra!) - ar mhaith leo leas níos fearr a bhaint as an Idirlíon ach - nach bhfuil a fhios acu cá dtosóidís - cuireann na - teicneolaíochtaí agus na hoideolaíochtaí atá - ar fáil mearbhall orthu. Bhí mé féin ag súil - i gcónaí go mbeadh rogha éigin eile ar fáil, - saor in aisce, le go bhféadfadh a leithéid sin de dhaoine - a scileanna múinteoireachta a aistriú go timpeallacht ar - líne.

                            -

                            Ag eascairt as mo chreideamh láidir sna féidearthachtaí - neamhréadaithe a bhaineann le hoideachas Idirlín-bhunaithe, - rinne mé Máistreacht agus ansin PhD san Oideachas, ag comhcheangal - na gairme a bhí agam san Eolaíocht Ríomhaireachta le heolas nua  - maidir le nadúr na foghlama agus na comhoibrithe. Tá tionchar - ach go háirithe ag eipistéimeolaíocht thógálachais sóisialta orm - - cur chuige a phléann le foghlaim, ní amháin mar ghníomh sóisialta, ach a dhíríonn aird freisin - ar an bhfoghlaim a tharlaíonn agus duine go gníomhach ag tógáil ruda (mar shampla, téacs) - a bheidh le feiceáil ag nó le húsáid ag daoine eile.

                            -

                            Tá sé rí-thábhachtach domsa go mbeadh an bogearra seo éasca le húsáid - ba cheart dó a bheith chomh hiomasach - agus is féidir.

                            -

                            Tá geallta agam leanacht le mo chuid oibre ar Moodle agus é a choinneáil Oscailte - agus Saor in Aisce. Tá creideamh domhain agam sa tábhacht a bhaineann le hoideachas éaguimsithe - agus le múineadh cumhachtaithe, agus is é Moodle an príomhbhealach inar féidir liomsa mo chuid a dhéanamh ar mhaithe leis - na spriocanna seo a chur i gcrích.

                            -
                            - -

                            Cruthaíodh agus cuileáladh líon áirithe fréamhsamhlacha sular chuir sé leagan - 1.0 ar fáil don domhan mór neamh-amhrasach ar an 20ú Lúnasa, 2002. Bhí - an leagan seo dírithe ar ranganna beaga, caidreamhacha ag leibhéal na hOllscoile - agus b'ábhar cás-staidéir taighde a bhí ann inar déanadh mionscrúdú ar nádúr - an chomhoibrithe agus an mhachnaimh a bhí ar siúl sna grúpaí - beaga seo de rannpháirtithe fásta.

                            -

                            Ó shin tá sruth rialta de leaganacha nua tagtha chun solais a bhfuil gnéithe nua ag baint leo, maraon le hinscálaitheacht - atá níos fearr agus feidhmíocht fheabhsaithe.

                            -

                            Agus Moodle ag leathnú amach agus an comhphobal ag fás, tá ionchur á tharraingt ó - réimse níos leithne daoine i raon leathan cineálacha múinteoireachta. - Mar shampla, úsáidtear Moodle anois ní hamháin in Ollscoileanna ach i meánscoileanna, - i mbunscoileanna, in eagraíochtaí seachbhrabúsacha, i gcomhlachtaí príobháideacha. - Tá sé á úsáid freisin ag múinteoirí neamhspleácha agus fiú ag tuismitheoirí ag múineadh sa bhaile. Tá líon mór daoine ó gach cúinne den domhan ag cur le - Moodle ar bhealaí éagsúla - le teacht ar níos mó sonraí maidir leis seo - féach an leathanach Creidiúintí .

                            -

                            Gné tábhachtach de thionscnamh Moodle is ea láithreán gréasáin moodle.org - , a sholáthraíonn lárionad eolais, plé agus comhoibrithe - d'úsáideoirí Moodle, agus ina measc siúd riarthóirí córais, múinteoirí, - taighdeoirí, dearthóirí oideasacha agus ar ndóigh forbróirí. Cosúil le Moodle féin, - tá an suíomh seo ag éabhlóid i gcónaí le freastal ar riachtanais an chomhphobail, agus cosúil le - Moodle, beidh sé Saor in Aisce i gcónaí.

                            -

                            I 2003, buaníodh an comhlacht moodle.com - le tacaíocht bhreise tráchtála a sholáthar dóibh siúd a raibh sé uathu, - maraon le bainistíocht óstála, comhairleoireacht agus seirbhísí eile.

                            -

                            Le teacht ar a thuilleadh eolais maidir le todhchaí Moodle, féach léarscáil ár dTodhchaí

                            -.
                            - -

                            Doiciméadú Moodle

                            -

                            Leagan: $Id$

                            - - - diff --git a/lang/ga/docs/coding.html b/lang/ga/docs/coding.html deleted file mode 100644 index db9ad9634bd..00000000000 --- a/lang/ga/docs/coding.html +++ /dev/null @@ -1,192 +0,0 @@ - - - -Doiciméid Moodle: Treoirlínte Códúcháin - - - - - -

                            Treoirlínte Códúcháin Moodle

                            -

                            Tá comhsheasmhacht agus forastacht riachtanach le go mbeadh aon thionscadal - comhoibritheach láidir.

                            -

                            Cuireann na treoirlínte seo sprioc ar fáil d'úsáideoirí cóid Moodle. - Is fíor go bhfuil cuid den chód atá ann faoi láthair neamhimleor i roinnt - réimsí, ach deiseofar é ar fad ar deireadh. Ní mór do gach códú nua - cloí leis na caighdeáin seo chomh fada agus is féidir é.

                            -

                            Rialacha Ginearálta

                            -
                              -
                            1. Ba cheart do gach comhad cóid leas a bhaint as an iarmhír .php.
                            2. -
                            3. Ba cheart do gach comhad teimpléid leas a bhaint as an iarmhír .html.
                            4. -
                            5. Ba cheart do gach téacschomhad leas a bhaint as formáid téacs de stíl Unix (tá an rogha - seo ar fáil le formhór eagarthóirí téacs).
                            6. -
                            7. Ní mór do gach clib php a bheith 'iomlán' ar nós <?php - ?> ... seachas clibeanna 'gearra' ar nós <? ?>. -
                            8. -
                            9. Ní mór gach fógra cóipchirt a choinneáil. Féadfaidh tú do chuid féin - a chur leo más gá.
                            10. -
                            11. Ba cheart do gach comhad an príomhchomhad config.php a bheith mar chuid de.
                            12. -
                            13. Ba cheart do gach comhad a sheiceáil go fíordheimhnítear an t-úsáideoir i gceart, - trí leas a bhaint as require_login() agus isadmin(), isteacher(), iscreator() nó isstudent().
                            14. -
                            15. Ba cheart do gach rochtain ar bhunachair sonraí leas a bhaint as na feidhmeanna atá i lib/datalib.php - nuair is féidir - ceadaíonn sé seo comhoiriúnach thar réimse leathan bunachar sonraí. - Ba cheart go bhfeicfeá gur féidir beagnach gach rud a dhéanamh leis na feidhmeanna seo. Má tá ort cód SQL a scríobh cinntigh: go bhfuil sé trasardáin; srianta go feidhmeanna sonrúla - laistigh de do chód (de ghnáth comhad lib.php); agus go bhfuil sé marcáilte go soiléir.
                            16. -
                            17. Ná cruthaigh agus ná húsáid athróga domhanda seachas cinn caighdeánacha - $CFG, $SESSION, $THEME agus $USER.
                            18. -
                            19. Ba cheart gach athróg a thúsú, nó ar a laghad tástáil gur ann dóibh - trí leas a bhaint as isset() nó empty() sula n-úsáidtear iad.
                            20. -
                            21. Ba cheart do gach teaghrán a bheith inaistrithe - cruthaigh téacsanna nua sna comhaid - "lang/en" agus glao orthu trí leas a bhaint as get_string() nó print_string().
                            22. -
                            23. Ba cheart do gachcomhad cabhrach a bheith inaistrithe - cruthaigh téacsanna nua sa chomhadlann - "en/help" agus glao orthu trí leas a bhaint as helpbutton().
                            24. -
                            25. Cuirtear magic_quotes le sonraí a thagann isteach ón mbrabhsálaí (seolta trí GET nó POST) go huathoibríoch - (aineoinn na socruithe PHP) le gur féidir leat é a chur díreach isteach - sa bhunachar sonraí go sábháilte. Ní mór gach amhshonra eile (ó chomhaid, nó ó bhunachair sonraí) - a éalú le addslashes() sula gcuirtear isteach sa bhunachar sonraí é.
                            26. -
                            -

                             

                            -

                            Stíl Códúcháin

                            -

                            Tá a fhios agam go bhfuil sé beagán achrannach do stíl a athrú - má tá cleachtadh agat ar rud ar leith, ach cuir i gcomparáid an t-achrann sin leis an achrann a bheadh - i gceist dá mbeadh daoine ag iarraidh bun nó barr a bhaint as cód Moodle dá mbeadh meascán stíleanna ann. - Is léir go bhfuil neart buntáistí nó míbhuntáistí le stíleanna a úsáideann daoine éagsúla, - ach tá an stíl reatha ann, agus iarraimid ort cloí leis.

                            -
                              -
                            1. Eangú: ba cheart 4 spás a bheith ann go seasmhach. - Ná bain leas as tábanna AR CHOR AR BITH.
                            2. -
                            3. Ainmneacha athróige: ba cheart gur focail Bhéarla iad atá éasca le léamh, - agus brí leo. Má tá sé iomlán riachtanach go mbeadh níos mó ná focal amháin agat - rith le chéile iad, ach coinnigh chomh gairid agus is féidir iad. Úsáid -ainmneacha iolra le haghaidh eagair d'oibiachtaí. -

                              GO MAITH: $quiz
                              - GO MAITH: $errorstring
                              -GO MAITH: $assignments (le haghaidh eagar d'oibiachtaí)
                              - GO MAITH: $i (ach i lúba beaga amháin)
                              -
                              - GO DONA: $Quiz
                              - GO DONA: $aReallyLongVariableNameWithoutAGoodReason
                              - GO DONA: $error_string

                              -
                            4. -
                            5. Tairisigh: ba cheart iad a bheith i gceannlitreacha i gcónaí, - agus tosú i gcónaí le hainm an mhodúil. Ba cheart na focail a roinnt - le fostríoc. -

                              define("FORUM_MODE_FLATOLDEST", - 1);

                              -
                            6. -
                            7. Ainmneacha feidhme: ba cheart gur focail simplí Béarla a bheadh iontu, - agus go dtosóidis le hainm an mhodúil le coinbhleacht a sheachaint idir na modúil. - Ba cheart focail a roinnt le fostríocanna. Ba cheart réamhshocrú ciallmhar a bheith ag paraiméadair i gcónaí - más féidir. Tabhair faoi deara nach bhfuil spás ar bith idir ainm na feidhme agus na - (lúibíní) a leanann é.
                              -

                              function forum_set_display_mode($mode=0) - {
                              -     global
                              $USER, - $CFG;
                              -
                              -     if (
                              $mode) - {
                              -         
                              $USER->mode - = $mode;
                              -     } else if (empty(
                              $USER->mode)) - {
                              -         
                              $USER->mode - = $CFG->forum_displaymode;
                              -     }
                              - }

                              -
                            8. -
                            9. Blocanna: ní mór iad a chur idir lúibíní 'catacha' - (fiú muna bhfuil ann ach líne amháin). Úsáideann Moodle an stíl seo: -

                              if ($quiz->attempts) - {
                              -     if (
                              $numattempts > - $quiz->attempts) - {
                              -         
                              error($strtoomanyattempts, - "view.php?id=$cm->id");
                              -     }
                              - }

                              -
                            10. -
                            11. Teaghráin: ba cheart iad a shainmhíniú laistigh de uaschamóga singil - nuair is féidir é, ar mhaithe le luas.
                              -

                              $var = 'some text without any - variables';
                              - $var = "with special characters like a new line \n";
                              - $var = 'a very, very long string with a '.$single.' variable in it';
                              - $var = "some $text with $many variables $within it";

                              -
                            12. -
                            13. Nótaí tráchta: ba cheart dóibh dhá slais nó trí a úsáid - agus teacht le chéile go néata leis an gcód. -

                              function forum_get_ratings_mean($postid, - $scale, $ratings=NULL) - {
                              -
                              /// Return the mean rating of a post given - to the current user by others.
                              - /// Scale is an array of possible ratings in the scale
                              - /// Ratings is an optional simple array of actual ratings (just integers)
                              -
                              -     
                              if (!$ratings) - {
                              -         
                              $ratings - = array();     // - Initialize the empty array
                              -         if (
                              $rates - = get_records("forum_ratings", - "post", $postid)) - {
                              -             
                              // - Process each rating in turn
                              -             foreach - (
                              $rates as $rate) - {
                              - ....srl

                              -
                            14. -
                            15. Spás: ba cheart bheith flaithiúil leis - ná bíodh faitíos ort - rudaí a scaipeadh amach roinnt éigin ar mhaithe le soiléireacht. Go ginearálta, ba cheart go mbeadh - spás amháin idir lúibíní agus gnáth ráitis, agus gan spás ar bith idir lúibíní agus - athróga nó feidhmeanna:
                              -

                              foreach ($objects - as $key => - $thing) {
                              -
                                  process($thing); -
                              - }
                              -
                              -
                              if ($x == - $y) - {
                              -
                                  $a - = $b;
                              - } else if (
                              $x == - $z) {
                              -
                                  $a - = $c;
                              - } else {
                              -
                                  $a - = $d;
                              - }

                              -
                            16. -
                            -

                             

                            -

                            Struchtúr Bunachair Sonraí:

                            -
                              -
                            1. Ní mór do gach tábla réimse id (INT10) uath-incriminteach a bheith aige mar innéacs príomhúil.
                            2. -
                            3. Ní mór don phríomhtábla in dtarlaíonn gach modúl an t-ainm céanna a bheith air is atá ar an modúl (m.sh. widget) agus ar a laghad na réimsí seo a leanas a bheith ann: -
                                -
                              • id - mar a sonraíodh thuas
                              • -
                              • course - id an chúrsa a mbaineann gach ásc leis
                              • -
                              • name - ainm iomlán gach ásc den mhodúl
                              • -
                              -
                            4. -
                            5. Ba cheart táblaí eile atá gaolmhar le modúl, a bhfuil eolas iontu faoi 'things', ba cheart widget_things a thabhairt orthu (tabhair faoi deara an t-iolra).
                            6. -
                            7. Ba cheart ainmneacha na gcolún a choinneáil gairid agus simplí, agus na rialacha céanna á leanúint is atá ann d'ainmneacha athróige.
                            8. -
                            9. Nuair is féidir é, má tá tagairt i gcolún do réimse id i dtábla eile (m.sh. widget), ba cheart widgetid a ghlaoch air. (Tabhair faoi deara gur nós réasúnta nua é seo agus nach leantar é i roinnt sean-táblaí)
                            10. -
                            11. Ba cheart réimsí Boole a chur i bhfeidhm mar réimsí beaga slánuimhreacha (m.sh. INT4) a bhfuil 0 nó 1 iontu, le leathnú ar luachanna a éascú ar ball más gá.
                            12. -
                            13. Ba cheart do formhór na dtáblaí réimse timemodified (INT10) a bheith acu a nuashonraítear le ham-stampa reatha trí an bhfeidhm PHP time () a úsáid.
                            14. -
                            -
                            -

                            Doiciméid Moodle

                            -

                            Leagan: $Id$

                            - - diff --git a/lang/ga/docs/credits.html b/lang/ga/docs/credits.html deleted file mode 100644 index db90b308f10..00000000000 --- a/lang/ga/docs/credits.html +++ /dev/null @@ -1,209 +0,0 @@ - - - -Moodle Docs: Creidiúintí - - - - -

                            Creidiúintí

                            -
                            -

                            Treoir ghinearálta

                            -
                            -

                            Martin Dougiamas bunaitheoir Moodle, an príomhfhorbróir, an bainisteoir tograí, an bainisteoir forscaoile agus réitíonn sé fiú an tae. An gcaitheann tú siúcra?

                            -

                            Tá pacáiste bogearraí Moodle faoi Chóipcheart © 1999-2004, Martin Dougiamas faoin GNU GPL.

                            -

                             

                            -
                            -

                            Príomhfhorbróirí

                            -
                            -

                            Tá buíochas ar leith uainn ar fad ag dul dóibh siúd a bhronn tréimhsí fada, leanúnacha ama - le cód Moodle a scríobh agus le cur leis. Daoine iad seo a thuigeann céard is gá le Moodle a fhorbairt, agus gan iad ní bheadh Moodle leath chomh láidir:

                            -
                            -

                            - Eloy Lafuente (stronk7), Ray Kingdon, Williams Castillo, Petri Asikainen, Henrik Kaipe, Zbigniew Fiedorowicz, Gustav Delius, Thomas Robb, Janne Mikkonen, Jon Papaioannou, - Scott Elliott

                            -
                            -

                             

                            -
                            -

                            Rannpháirtithe Eile

                            -
                            -

                            Tá a gcuid curtha ag a lán daoine eile (agus á chur i gcónaí) le plé, tacaíocht, tástáil agus le coda móra den chód agus den doiciméadú - Tá an liosta seo fada, agus ag athrú i gcónaí, - ach ina measc (san ord inar cuireadh ann iad), tá: -

                            -
                            -

                            - Peter C. Taylor, Art Lader, Matt Hope, Tom Murdock, Sébastien Namèche, James Miller, Dustin - Rue, Holger Schadeck, Giovanni Tummarello, John Windmueller, Sean Keogh, Mitsuhiro - Yoshida, Greg Barnett, Mark Kimes, Mary Hunter, Russell Jungwirth, Przemyslaw Stencel, Roberto - Pinna (Bobo), John "Captain" Eyre, Paula Edmiston, Howard Miller, - Claudio Tavares, P. Timothy Ervin, Bob Calder, Ursula - Raab, David Delgado, Mad Alex, Gaëtan Frenoy, Bernard Boucher, Bryan Williams, Mike Churchward, Rob Butner, Koen Roggemans.

                            -
                            -

                            Tá brón orainn má rinne muid dearmad ar d'ainmse anseo - tá comhphobal Moodle mór agus gníomhach agus is deacair an liosta seo - a choinneáil! Seol r-phost chuig Martin, led' thoil, agus cuir chuige do chuid moltaí! :-)

                            -

                            Buíochas freisin le gach duine agaibh a thug síntiús -

                            - -
                            -

                             

                            -

                            Aistritheoirí

                            -
                            -

                            I measc láidreachtaí Moodle tá an líon aistriúchán atá ar fáil. Glacann gach aistriúchán uaireanta fada an chloig oibre, ó tá os cionn 1000 - frása le haistriú (agus na céadta comhad cabhrach!). Tá níos mó ná rannpháirtí amháin - ag a lán de na teangacha, uaireanta ag obair i dteannta a chéile, agus uaireanta ag obair i ndiaidh a chéile. -

                            -

                            Tá sé ró-dheacair liosta a choimeád de na daoine iontacha seo agus mar sin breathnaigh ar an leathnach íoschóipeála - Teangacha le teacht ar ainmneacha agus sonraí.

                            -

                             

                            -
                            -

                            Téamaí

                            -
                            -

                            Tugann na Téamaí beocht agus dath do Moodle. Seo thíos na téamaí ar fad atá ar fáil - mar chuid de Moodle, maraon lena n-údair: -

                            - -

                             

                            -
                            -

                            Leabharlanna Moodle

                            -
                            -

                            Daoine eile a scríobh cuid de leabharlanna Moodle, agus tá siad á n-athdháileadh mar chuid de - Moodle faoina gcuid ceadúnas foinse oscailte ar leith a cheadaíonn - é sin, ar an dea-uair. Tá mo bhuíochas ag dul d'údair na dtáirgí iontacha seo - - gan iad, bheadh fíor-easnamh ar fheidhmiúlacht Moodle. Tá an t-eolas cóipchirt - a bhaineann le gach pacáiste liostáilte thíos:

                            -

                            ADOdb   -  lib/adodb

                            -
                            -

                            Leabharlann asbhainte bunachair sonraí do MySQL, PostgreSQL, MSSQL, Oracle, Interbase, - Foxpro, Access, ADO, Sybase, DB2 agus ODBC.

                            -

                            Leagan: 4.20
                            - Cóipcheart © 2000-2004 John Lim (jlim@natsoft.com.my)
                            - Ceadúnas: Stíl déach LGPL agus BSD
                            - URL:  http://php.weblogs.com/adodb
                            -

                            -
                            -

                            Graph Class   -  lib/graphlib.php

                            -
                            -

                            Aicme le líneghraif, graif pointí, barraghraif agus acharghraif a tharraingt agus x-ais uimhriúil - agus y-ais dhúbailte san áireamh.

                            -

                            Leagan: 1.6.3 (le mionaithruithe)
                            - Cóipcheart © 2000  Herman Veluwenkamp, hermanV@mindless.com
                            - Ceadúnas: LGPL
                            -

                            -
                            -

                            -html2text   -  lib/html2text.php

                            -
                            -

                            Script PHP le HTML a thiontú go dtína chomhionann feiliúnach téacs.

                            -

                            Leagan: 1.0 (le mionathruithe)
                            - Cóipcheart © 2002  Mark Wilton-Jones
                            - Ceadúnas: HowToCreate script license le ceadúnú scríofa
                            - URL: http://www.howtocreate.co.uk/php/
                            -

                            -
                            -

                            -htmlArea   -  lib/editor

                            -
                            -

                            Script Java/HTML le eagarthóir GUI a chur in réimsí téacs ar Internet Explorer agus Mozilla

                            -

                            Leagan: 3.0 beta (le mionathruithe)
                            - Cóipcheart © 2002  interactivetools.com, inc.
                            - Ceadúnas: htmlArea License (bunaithe ar cheadúnas BSD)
                            -

                            -
                            -

                            IP-Atlas  -   lib/ipatlas

                            -
                            -

                            Scripteanna PHP le suíomh seoladh IP a léiriú ar léarscáil.
                            -
                            - Leagan: 1.0 (le mionathruithe)
                            - Cóipcheart © 2002   Ivan Kozik
                            - Ceadúnas: GNU GPL
                            - URL: http://www.xpenguin.com/ip-atlas.php

                            -

                            -
                            -

                            mimeTeX  -   filter/tex

                            -
                            -

                            Clár teaglamaithe C le TeX a thiontú ina GIFeanna
                            -
                            - Leagan: 1.4
                            - Cóipcheart © 2002-2004   John Forkosh Associates, Inc
                            - Ceadúnas: GNU GPL
                            - URL: http://www.forkosh.com/mimetex.html
                            -URL: http://moodle.org/download/mimetex

                            -
                            -


                            - PclZip  -   lib/pclzip

                            -
                            -

                            Aicme le zipchomhaid a chruthú, a bhainistiú agus a dhíphacáil.
                            -
                            - Leagan: 2.0 RC2
                            - Cóipcheart © 2003  Vincent Blavet <vincent@phpconcept.net>
                            - Ceadúnas: GNU GPL
                            - URL: http://www.phpconcept.net
                            -

                            -
                            -

                            PHP mailer   -  lib/class.phpmailer.php

                            -
                            -

                            Aicme le r-phost a sheoladh ag baint leasa as sendmail, PHP mail(), nó SMTP.  - Tá na modhanna bunaithe ar na haicmí caighdeánacha AspEmail(tm).
                            -
                            - Leagan 1.71,
                            - Cóipcheart © 2003 Brent R. Matzelle <bmatzelle@yahoo.com>
                            - Ceadúnas: LGPL
                            - URL:   http://phpmailer.sourceforge.net
                            -

                            -
                            -

                            Snoopy  -   lib/snoopy

                            -
                            -

                            Cliaint idirlín PHP
                            -
                            - Leagan: 1.0
                            - Cóipcheart © 1999-2000 Monte Ohrt <monte@ispi.net>
                            - Ceadúnas: GNU LGPL
                            - URL: http://snoopy.sourceforge.com
                            -

                            -
                            -

                            Spreadsheet::WriteExcel  -   lib/excel

                            -
                            -

                            Leabharlann le Scairbhileoga Excel a ghiniúint.
                            -
                            - Leagan: 2002-11-28
                            - Cóipcheart © 2002  Xavier Noguer <xnoguer@rezebra.com>
                            - Ceadúnas: GNU LGPL
                            - URL: http://jeffn.users.phpclasses.org/browse.html/package/767.html
                            -

                            -
                            -

                            SMTP class   -  lib/class.smtp.php

                            -
                            -

                            Aicme ar féidir é a úsáid le ceangal agus cumarsáid a dhéanamh le haon fhreastalaí - SMTP.
                            - Cuireann sé i bhfeidhm gach feidhm SMTP a sainmhínítear in RFC821 seachas TURN.
                            -
                            - Leagan: 03/26/2001
                            - Cóipcheart © 2001  Chris Ryan <chris@greatbridge.com>

                            -


                            -

                            -
                            -
                            -

                            Doiciméadú Moodle

                            -

                            Leagan: $Id$

                            -
                            - - diff --git a/lang/ga/docs/install.html b/lang/ga/docs/install.html deleted file mode 100644 index 1d3c9c74ffe..00000000000 --- a/lang/ga/docs/install.html +++ /dev/null @@ -1,646 +0,0 @@ - - - - -Doic. Moodle: Suiteáil - - - - - - - - - -

                            -Moodle a Shuiteáil

                            - -
                            Míníonn an treoir seo cén chaoi le Moodle -a shuiteáil don chéad uair. Tá mionsonraí ann -maidir le roinnt de na céimeanna, le go gclúdófaí -an réimse éagsúlachtaí idir cumraíocht -freastalaithe gréasáin, agus mar sin b'fhéidir go -bhfuil cuma fada casta ar an doiciméad seo. Ná bí -buartha faoi seo - de ghnáth suiteáilim-se Moodle laistigh -dechúpla nóiméad! - -

                            Tóg do amagus déan do bhealach tríd an doiciméad -seo go cúramach - sábháilfidh sé am ort ar -ball.

                            - -

                            Rannóga sa doiciméad seo:

                            -
                              -
                            1. -Riachtanais
                            2. - -
                            3. -Íoslódáil
                            4. - -
                            5. -Struchtúr an tSuímh
                            6. - -
                            7. -Cruthaigh comhadlann sonraí
                            8. - -
                            9. -Cruthaigh bunachas sonraí
                            10. - -
                            11. -Seiceáil cumraíocht an fhreastalaí -gréasáin
                            12. - -
                            13. -Eagraigh config.php
                            14. - -
                            15. -Téigh go dtí an leathanach riaracháin
                            16. - -
                            17. -Cumraigh cron
                            18. - -
                            19. -Cruthaigh cúrsa nua
                            20. -
                            - -

                            -1. Riachtanais

                            - -
                            Forbraíodh Moodle go príomha i Linux ag úsáid -Apache, MySQL agus PHP (ar a tugtar uaireanta ardán LAMP), ach tástáiltear -go rialta é le PostgreSQL agus ar chórais oibriúcháin -Windows XP, Mac OS X agus Netware 6. - -

                            Is iad seo a leanas na riachtanais le haghaidh Moodle:

                            -
                              -
                            1. -Bogearra freastalaí gréasáin. Úsáideann -an chuid is mó de dhaoine Apache, -ach ba cheart go bhfeidhmeodh Moodle go breá faoi aon fhreastalaí -gréasáin a thacaíonn le PHP, ar nós IIS ar -ardáin Windows.
                            2. - -
                            3. -Teanga Scripte PHP (leagan -4.1.0 nó níos nua), leis na socraithe seo:
                            4. - -
                            5. -
                                -
                              • -Leabharlann GD -LASTA, le tacaíocht do fhormáidí JPG agus PNG
                              • - -
                              • -Leabharlann zlib LASTA (más mian leat cúltaca/athchur a úsáid -ar Windows)
                              • - -
                              • -Tacaíocht seisiún LASTA
                              • - -
                              • -Uaslódáil comhad LASTA
                              • - -
                              • -Modh Slán MÚCHTA (féach na fóraim ar moodle.org -maidir le fadhbanna a chothaíonn Modh Slán)
                              • -
                              -
                            6. - -
                            7. -freastalaí infheidhme do bhunachair sonraí: Tacaítear -go hiomlán le MySQL -nó le PostgreSQL -agus moltar iad lena n-úsáid le Moodle 1.1. Tacófar -go hiomlán le gach bunachar sonraí eile sa chéad eisiúint -eile.
                            8. -
                            -Tugann formhór óstaigh gréasán tacaíocht -dó seo ar fad mar réamhshocrú. Má tá -síntiús agatsa le ceannn den bheagán nach ndéanann, -fiafraigh díobh cén fáth agus cuimhnigh ar do ghnó -a aistriú go áit éigin eile. - -

                            Más mian leat Moodle a rith ar do ríomhaire féin -ach má bhreathnaíonn sé cineál treascrach, -breathnaigh ar ár dtreoir: Apache, -MySQL agus PHP a shuiteáil. Tá treoracha céim-ar-chéim -ann le é seo a shuiteáil ar formhór na n-ardán -aitheanta.

                            - -

                             

                            - -

                            -2. Íoslódáil

                            - -

                            Tá dhá bhealach ann le Moodle a fháil, -mar phacáiste comhbhrúite agus trí CVS. Mínítear -go beacht iad seo ar an leathanach íoslódála: http://moodle.org/download/

                            - -

                            Tar éis an cartlann a íoslódáil agus a dhíphacáil, -nó tar éis na comhaid a dhíchlárú chuig -do ríomhaire trí CVS, beidh comhadlann agat agus "moodle" -mar ainm air, inabhfuil líon áirithe comhad agus fillteán.

                            - -

                            Féadfaidh tú an fillteán ar fad a chur i do chomhadlann -doiciméad ar do fhreastalaí gréasáin, sa chaoi -is go mbeidh an suíomh lonnaithe ag http://dofhreastalaigreasain.com/moodle, -nó féadfaidh tú an t-ábhar ar fad a chóipeáil -díreach isteach sa chomhadlann doiciméad ar an bpríomhfhreastalaí, -sa chaoi is gur http://dofhreastalaigreasain.com a bheidh i do shuíomh.

                            -  -

                            -3. Struchtúr an tSuímh

                            - -
                            Seo achoimhre tapa den ábhar atá sa bhfillteán -Moodle, le cuidiú leat do bhealach a aimsiú: -
                            config.php - an T-AON chomhad ar gá duit eagar a chur -air le tosú -
                            version.php - sainmhíníonn sé an leagan reatha -de chód Moodle -
                            index.php - leathanach tosaigh an tsuímh -
                              -
                            • -admin/ - cód leis an bhfreastalaí iomlán a riar
                            • - -
                            • -auth/ - modúil breiseáin le húsáideoirí -a fhíordheimhniú
                            • - -
                            • -course/ - cód le cúrsaí a léiriú agus -a bhainistiú
                            • - -
                            • -doc/ - doiciméadú cabhrach do Moodle (msh an leathanach seo)
                            • - -
                            • -files/ - cód le comhaid uaslódáilte a léiriú -agus a bhainistiú
                            • - -
                            • -lang/ - téacsanna i dteangacha éagsúla, comhadlann -amháin an teanga
                            • - -
                            • -lib/ - leabharlanna de chód lárnach Moodle
                            • - -
                            • -login/ - cód le logáil isteach agus cruthú cuntais -a láimhseáil
                            • - -
                            • -mod/ - modúil uile Moodle
                            • - -
                            • -pix/ - grafaicí cineálacha an tsuímh
                            • - -
                            • -theme/ - pacáistí téama/craicinn le dearadh an tsuímh -a athrú.
                            • - -
                            • -user/ - cód le húsáideoirí a léiriú -ags a bhainistiú
                            • -
                            -
                            - -

                            -4. Cruthaigh comhadlann sonraí

                            - -
                            Beidh spás ag teastáil freisin ó Moodle -ar do dhiosca crua le comhaid uaslódáilte a stóráil, -ar nós doiciméid chúrsa agus pictiúir úsáideora. - -

                            Cruthaigh comhadlann chuige seo in áit éigin. Ar mhaithe -le slándáil, is fearr NACH mbeadh an comhadlann seo inrochtana -ón ngréasán. An bealach is éasca é seo -a dhéanamh ná é a chur TAOBH AMUIGH den chomhadlann -gréasáinm seachas sin cosain é trí chomhad -a chruthú sa chomhadlann sonraí ar a dtugtar .htaccess, agus -an líne seo ann:

                            -
                            -
                            deny from all
                            -
                            -Lena dhearbhú gur féidir le Moodle comhaid uaslódáilte -a shábháil sa chomhadlann seo, seiceáil go bhfuil -cead ag bogearra an fhreastalaí gréasáin (msh Apache) -scríobh chuig an gcomhadlann seo. Ar mheaisín Unix, ciallaíonn -sé seo gur gá úinéara na comhadlanna a shocrú -mar rud éigin ar nós "duinearbith" nó "apache". - -

                            On many shared hosting servers, you will probably need to restrict all -file access to your "group" (to prevent other webhost customers from looking -at or changing your files), but provide full read/write access to everyone -else (which will allow the web server to access your files). Speak to your -server administrator if you are having trouble setting this up securely.

                            -  -

                            -5. Cruthaigh bunachar sonraí

                            - -
                            Ní mór duit bunachar sonraí folamh a chruthú -(msh "moodle") i do chóras bunachair sonraí maraon le húsáideoir -speisialta (msh "moodleusaideoir") a bhfuil rochtain acu ar an mbunachar -sin (agus ar an mbunachar sin amháin). D'fhéadfá an -"fréamh" úsáideoir a úsáid dá -mba mhian leat, ach ní moltar é seo do chóras táirgíochta: -má éiríonn le bradaithe an pasfhocal a aimsiú -bheadh do chóras bunachair sonraí iomlán i bpriacail -, seachas díreach bunachar sonraí amháin. - -

                            Línte orduithe samplacha do MySQL:

                            -
                               # mysql -u root -p
                            -   > CREATE DATABASE moodle; 
                            -   > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.* 
                            -           TO moodleuser@localhost IDENTIFIED BY 'yourpassword'; 
                            -   > quit 
                            -   # mysqladmin -p reload
                            -Línte orduithe samplacha do PostgreSQL: -
                               # su - postgres
                            -   > psql -c "create user moodleuser createdb;" template1
                            -   > psql -c "create database moodle;" -U moodleuser template1
                            -   > psql -c "alter user moodleuser nocreatedb;" template1
                            -(Le MySQL molaim go hard go n-úsáidfí phpMyAdmin -le do bhunachair sonraí a bhainistiú - féadfaidh tú -é seo ar fad a dhéanamh trí chomhéadan gréasáin). - -

                            Ó leagan 1.0.8 i leith, tacaíonn Moodle anois le réimíreanna -tábla, agus mar sin is féidir bunachar sonraí a roinnt -go slán le táblaí ó fheidhmchláir eile.

                            -  -

                            -6. Seiceáil cumraíocht -do fhreastalaí gréasáin

                            - -
                            Ar dtús cinntigh go bhfuil do fhreastalaí gréasáin -socraithe le index.php a úsáid mar leathanach réamhshocraithe -(b'fhéidir anuas ar index.html, default.htm agus araile). - -

                            In Apache, déantar é seo trí pharaiméadar -DirectoryIndex a úsáid i do chomhad httpd.conf. Breathnaíonn -mo cheann-sa mar seo de ghnáth:

                            -
                            -
                            DirectoryIndex index.php index.html index.htm
                            -
                            -Níl agat ach a bheith cinnte go bhfuil index.php sa liosta (agus -is fearr é a bheith i dtreo a thús, ar mhaithe le héifeachtacht). - -

                            Sa dara háit, má tá Apache 2 á úsáid -agat, ba cheart duit an t-athróg AcceptPathInfo a lasadh, -rud a cheadaíonn go gcuirfí argóintí ar nós -http://server/file.php/arg1/arg2 chuig scripteanna. Tá sé -seo eisintiúil le nascanna comhghaolmhara a cheadú idir do -chuid acmhainní, agus cuireann sé feabhas ar an bhfeidhmíocht -do dhaoine atá ag úsáid do shuímh gréasáin -Moodle. Féadfaidh tú é seo a lasadh trí na -línte seo a chur le do comhad httpd.conf.

                            -
                            -
                            AcceptPathInfo on
                            -
                            -Sa tríú háit, ní mór go mbeadh líon -áirithe socruithe PHP gníomhach le go n-oibreoidh Moodle. -Ar an gcuid is mó de fhreastalaithe is iad seo na réamhshocruithe. -Ach d'fhéadfadh rudaí a bheith socraithe go héagsúil -ag roinnt freastalaithe PHP, áfach, (agus roinnt de na leaganach -is nua de PHP). Sainmhínitear iad seo i gcomhad cumraíochta -PHP (de ghnáth php.ini): -
                            -
                            magic_quotes_gpc = 1    (preferred but not necessary)
                            -magic_quotes_runtime = 0    (necessary)
                            -file_uploads = 1
                            -session.auto_start = 0
                            -session.bug_compat_warn = 0
                            -
                            -Muna bhfuil teacht agat ar httpd.conf nó ar php.ini ar do fhreastalaí, -nó má tá Moodle agat ar fhreastalaí le fheidhmchláir -eile a éilíonn socruithe éagsúla, ná -bí buartha, féadfaidh tú fós na réamhshocruithe -ar fad A SHÁRÚ. - -

                            Chun é seo a dhéanamh, ní mór duit comhad -a chruthú darb ainm .htaccess sa phríomhchomhadlann -ag Moodle ina bhfuil sainmhínithe ar na socraithe seo. Ní -oibríonn sé seo ach amháin ar fhreastalaithe Apache -agus nuair a ceadaítear sárú amháin.

                            -
                            -
                            DirectoryIndex index.php index.html index.htm
                            -
                            -<IfDefine APACHE2>
                            -     AcceptPathInfo on
                            -</IfDefine>
                            -
                            -php_flag magic_quotes_gpc 1
                            -php_flag magic_quotes_runtime 0
                            -php_flag file_uploads 1
                            -php_flag session.auto_start 0
                            -php_flag session.bug_compat_warn 0
                            -
                            -Féadfaidh tú rudaí a dhéanamh, freisin, ar -nós uasmhéid a chruthú do chomhaid uaslódáilte: -
                            -
                            LimitRequestBody 0
                            -php_value upload_max_filesize 2M
                            -php_value post_max_size 2M
                            -
                            -An rud is éasca le déanamh ná an comhad samplach a -chóipeáil ó lib/htaccess agus eagar a chur air lena -chur in oiriúint duit féin. Tá treoracha breise ann. -Mar shampla, i mblaosc Unix: -
                            -
                            cp lib/htaccess .htaccess
                            -
                            -
                            -  -

                            -7. Eagraigh config.php

                            - -
                            Féadfaidh tú anis an comhad cumraíochta, -config.php, a eagrú le heagarthóir téacs. Úsáideann -gach comhad eile i Moodle an comhad seo. - -

                            Mar thús, déan cóip de config-dist.php agus -glaoigh config.php air. Déanann muid é seo le nach scríobhfar -thar do config.php sa chás go ndéanann tú uasghrádú -ar Moodle ar ball.

                            - -

                            Eagraigh config.php le go sonrófar na mionsonraí -bunachair sonraí atá díreach sainmhínithe agat -(agus réimír táblaí san áireamh - tabhair -faoi deara go bhfuil sé seo RIACHTANACH le haghaidh PostgreSQL), -maraon le seoladh an tsuímh, comhadlann córais comhaid agus -comhadlann bunachair sonraí. Tá treoracha agus samplaí -mionsonrúla ag an gcomhad config é féin.

                            - -

                            Nuair a bhíonn an méid seo déanta agat, is trí -chomhéadan gréasáin a déantar an chuid eile -den suiteáil. Don chuid eile den doiciméad suiteála -seo glacfaimid leis go bhfuil do shuíomh lonnaithe ag: http://sampla.com/moodle

                            -  -

                            -8. Téigh go dtí an leathanach riaracháin

                            - -
                            Ba cheart don leathanach riaracháin a bheith ag feidhmiú -anois ag: http://sampla.com/moodle/admin. Má thriaileann -tú teacht ar leathanach tosaigh do shuímh tabharfar ansin -go huathoibríoch tú ar aon nós. An chéad uair -a théann tú chuig an leathanach riaracháin seo, gheodhaidh -tú comhaontú GPL "scannán cumhdaithe" (shrinkwrap) -nach mór duit aontú leis sular féidir leat leanúint -leis an suiteáil. - -

                            (Déanfaidh Moodle iarracht freisin fianáin a shocrú -i do bhrabhsálaí. Má tá do bhrabhsálaí -socraithe agatsa le rogha a thabhairt glacadh le fianáin nó -gan glacadh leo, caithfidhtú glacadh le fianáin Moodle, -nó ní fheidhmeoidh Moodle i gceart.)

                            - -

                            Anois tosóidh Moodle ag suiteáil do bhunachair sonraí -agus ag cruthú táblaí le sonraí a stóráil. -Ar dtús cruthófar na príomhtháblaí bunachair -sonraí. Ba cheart go bhfeicfeá líon áirithe -ráiteas SQL agus, ina ndiaidh sin, teachtaireachtaí stádais -(i uaine nó i ndearg) a bhreathnóidh mar seo:

                            -
                            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 - -

                            SUCCESS

                            - -

                            ...agus mar sin de, á leanúint ag: Main -databases set up successfully.

                            -Muna bhfeiceann tú iad seo, caithfidh go raibh fadhbanna ann leis -an mbunachar sonraí nó leis na socruithe cumraíochta -a shainmhínigh tú i config.php. Seiceáil nach bhfuil -PHP i "Modh Slán" srianta (uaireanta bíonn modh slá -lasta ag óstaigh tráchtála gréasáin). -Féadfaidh tú athróga PHP a sheiceáil trí -chomhad beag ina bhfuil <? phpinfo() ?> a chruthú agus breathnú -ar trí bhrabhsálaí. Seiceáil iad seo ar fad -agus triail an leathanach seo arís. - -

                            Scrollaigh síos go bun ar fad an leathanaigh agus brúigh -ar an nasc "Ar Aghaidh".

                            - -

                            Ansin ba cheart go bhfeicfeá leathanach cosúil leis a -shocraíonn na táblaí ar fad atá ag teastáil -ó gach modúl Moodle. Faoi mar a bhí cheana, ba cheart -go mbeidís uaine.

                            - -

                            Scrollaigh síos go bun ar fad an leathanaigh agus brúigh -ar an nasc "Ar Aghaidh".

                            - -

                            Ba cheart anois go bhfeicfeá foirm inar féidir leat tuilleadh -athróga cumraíochta a shainiú do do shuiteáil, -ar nós an teanga réamhshocraithe, óstaigh SMTP agus -araile. Ná bí ró-bhuartha faoi gach rud a bheith díreach -ceart anois - féadfaidh tú i gcónaí teacht -ar ais agus iad seo a athrú leis an gcomhéadan riaracháin. -Scrollaigh síos go dtí an bun agus cliceáil ar "Sábháil -Athruithe".

                            - -

                            Sa chás go bhfuil tú ag éirí greamaithe -ar an leathanach seo (agus sa chás seo amháin), gan a bheith -in ann leanúint, b'fhéidir go bhfuil fadhb "an tagróra -fabhtaigh" agat, mar a ghlaoimse air. Tá sé éasca -é seo a dheisiú: múch an socrú "secureforms", -agus ansin déan iarracht eile leanúint ar aghaidh.

                            - -

                            Foirm atá sa chéad leathanach eile inar féidir -leat paraimadair a shainiú do do shuíomh Moodle agus don -leathanach tosaigh, ar nós an t-ainm, formáid, cur síos, -agus araile. Líon amach é seo (féadfaidh tú -i gcónaí teacht ar ais agus iad seo a athrú ar ball) -agus brúigh "Sábháil athruithe".

                            - -

                            Ar deireadh, iarrfar ort úsáideoir ardleibhéil -a chruthú le haghaidh rochtana ar an leathanach riaracháin -sa todhchaí. Cuir isteach do chuid sonraí féin, do -r-phost, srl agus cliceáil ar "Sábháil athruithe". -Ní na réimsí ar fad riachtanach, ach má fhágann -tú glan aon cheann tábhachtach tabharfar leid eile duit dóibh.

                            -
                            -
                            -
                            -
                            -
                            Bí cinnte go gcuimhníonn tú ar an ainm -úsáideora agus an pasfhocal a roghnaíonn tú -don chuntas riarthóra, ós rud é go mbeidh siad riachtanach -le teacht ar an leathanach riaracháin sa todhchaí.
                            -
                            -
                            -
                            -
                            -(Má idirbhristear an suiteáil ar chúis ar bith, nó -má tá earráid córais éigin ann a choinníonn -tú ó logáil isteach leis an gcuntas riarthóra, -féadfaidh tú de ghnáth logáil isteach leis -and ainm úsáideora réamhshocraithe "admin", -leis an bpasfhocal "admin".) - -

                            Ó éiríonn leat, cuirfear ar ais chuig leathanach -baile do shuímh tú. Tabhair faoi deara na nascanna riaracháin -atá ar thaobh clé an leathanaigh (léirítear -chomh maith iad seo ar leathanach ar leith Riaracháin) - féadfaidh -tusa iad seo a fheiceáil toisc go bhfuil tusa logáilte isteach -mar riarthóir. Féadfaidh tú an riarachán ar -fad Moodle amach anseo a dhéanamh tríd an roghchlár -seo anois, ar nós:

                            -
                              -
                            • -cúrsaí a chruthú agus a scrios
                            • - -
                            • -cuntais úsáideora a chruthú agus a scrios
                            • - -
                            • -cuntais múinteora a riar
                            • - -
                            • -athraigh socruithe atá ar an suíomh uile, ar nós téamaí, -srl
                            • -
                            -
                            -  -

                            -9. Cumraigh cron

                            - -
                            Tá seiceáil rialta ag teastáil ó -roinnt de mhodúil Moodle le tascanna a chur i bhfeidhm. Mar shampla, -ní mór do Moodle fóraim plé a sheiceáil -le gur féidir leis cóipeanna den phost is déanaí -a sheoladh chuig daoine atá liostáilte. - -

                            Tá an script a chuireann é seo i gcrích lonnaithe -sa chomhadlann riaracháin agus cron.php an t-ainm atá air. -Ní féidir leis é féin a rith áfach agus -mar sin ní mór meicníocht a shocrú le go ritear -an script seo go rialta (msh gach cúig nó deich nóiméad). -Cruthaíonn sé seo "buille croí" le go gcuirfidh an -script feidhmeanna i gcrích ag tréimhsí a sainítear -le gach modúl.

                            - -

                            Tabhair faoi deara nach gá gurb í an mheaisín -chéanna ar a ritheann Moodle agus a chuireann cron i gcrích. -Mar shampla, má tá seirbhís srianta óstaíochta -gréasáin agat nach bhfuil cron aige, d'fhéadfá, -dá mba mhian leat, cron a rith ar fhreastalaí eil nó -ó do ríomhaire baile. An t-aon rud atá tábhachtach -ná go nglaofaí ar an gcomhad cron.php go rialta.

                            - -

                            Níl ualach na scripte seo ró-mhór, agus más -sea tá 5 nóiméad réasúnta go leor, ach -má tá tú buartha faoi, féadfaidh tú -an t-amthréimhse a laghdú go 15 nóiméad nó -fiú go 30 nóiméad. Is fearr gan an tréimhse -a bheith ró-fhada, toisc go moillítear gníomhaíocht -ar an gcúrsa nuair a cuirtear moill ar fhógraí r-phoist.

                            - -

                            Ar dtús, tástáil go bhfuil an script ag feidhmiú -i gceart trí é a rith go díreach ó do bhrabhsálaí:

                            -
                            -
                            http://sampla.com/moodle/admin/cron.php
                            -
                            -Anois, teastaíonn bealach uait leis an script a rith go huathoibríoch -agus go rialta. -

                            -An script a rith ó líne na n-orduithe

                            -Féadfaidh tú an leathanach a ghlaoch ó línena -n-orduithe faoi mar a rinne tú sa sampla thuas. Mar shampla, féadfaidh -tú áirge Unix a úsáid ar nós 'wget': -
                            -
                            wget -q -O /dev/null http://sampla.com/moodle/admin/cron.php
                            -
                            -Tabhair faoi deara sa sampla seo go gcaitear amach an t-aschur (to /dev/null). - -

                            An rud céanna ag úsáid lynx:

                            -
                            -
                            lynx -dump http://sampla.com/moodle/admin/cron.php > /dev/null
                            -
                            -Mar mhalairt ar seo, d'fhéadfá leagan aonair de PHP a úsáid, -tiomsaithe le rith ar líne na n-orduithe. Is é an buntáiste -a bhaineann leis seo ná nach mbíonn logaí do fhreastalaí -gréasáin lán le hiarratais rialta ar cron.php. Is -é an míbhuntáiste ná go gcaithfidh tú -rochtain a bheith agat ar leagan líne na n-orduithe de php. -
                            -
                            /opt/bin/php /web/moodle/admin/cron.php
                            -
                            -
                            -(Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php
                            -
                            - -

                            -An script a rith go huathoibríoch gach 5 nóiméad

                            -Ar chórais Unix: Úsáid cron. Eagraigh -do shocraithe cron ón líne orduithe ag úsáid -"crontab -e" agus líne a chur leis ar nós: -
                            -
                            */5 * * * * wget -q -O /dev/null http://sampla.com/moodle/admin/cron.php
                            -
                            -De ghnáth cuirfidh an t-ordú "crontab" isteach san eagarthóir -'vi' tú. Iontrálann tú "modh ionsá" trí -"i" a bhrú, agus ansin an líne a chló mar atá -thuas, ansin fág modh ionsá trí ESC a bhrú. -Sábháil agus fág trí ":wq" a chló, nó -fág gan sábháil trí ":q!" a úsáid -(gan na comharthaí athfhriotail). - -

                            Ar chórais Windows: An bealach is éasca ná -an pacáiste beag seo a úsáid moodle-cron-for-windows.zip, -rud a dhéanann gach rud an-éasca. D'fhéadfá -breathnú freisin ar ghné de Windows le haghaidh "Scheduled -Tasks".

                            - -

                            Ar óstaigh gréasán: D'fhéadfadh go mbeadh -leathanach gréasáin ar do phainéal rialúcháin -gréasán-bhunaithe a ligean duit an próiseas cron a -shocrú. Fiafraigh de do riarthóir cé mar a oibríonn -sé.

                            - -

                            -10. Cruthaigh cúrsa nua

                            - -
                            Anois ó tá Moodle ag rith i gceart, féadfaidh -tú cúrsa a chruthú. - -

                            Roghnaigh "Cruthaigh cúrsa nua" ón leathanach Riaracháin -(nó ó na nascanna riaracháin ar an leathanach baile).

                            - -

                            Líon amach an fhoirm, ag tabhairt aird ar leith ar fhormáid -an chúrsa. Ní gá duit a bheith buartha faoi na mionsonraí -ag an staid seo - féadfaidh an múinteoir gach rud a athrú -ar ball.

                            - -

                            Brúigh ar "Sábháil athruithe", agus tabharfar tú -chuig foirm nua áit ar féidir leat múinteoirí -a shannadh leis an gcúrsa. Ní fhéadfaidh tú -ach cuntais úsáideora atá ann cheana a chur leis an -bhfoirm seo - más mian leat cuntasnua múinteora a chruthú -iarr ar an múinteoir cuntas a chruthú dóibh féin -(féach an leathanach logála), nó cruthaigh ceann dóibh -trí "Cuir úsáideoir nua leis" ar an leathanach Riaracháin.

                            - -

                            É sin déanta, tá ancúrsa réidh lena -oiriúnú, agus is féidir teacht air tríd an -nasc "Cúrsaí" ar an leathanach baile.

                            - -

                            Féach "Leabhrán an Mhúinteora" -le haghaidh níos mó eolais faoi chúrsaí a chruthú.

                            -  -
                            Doiciméid Moodle
                            - -
                            Leagan: $Id: install.html,v 1.17 2003/10/01 18:00:40 -moodler Exp $
                            -  - - diff --git a/lang/ga/docs/teacher.html b/lang/ga/docs/teacher.html deleted file mode 100644 index c489bac3520..00000000000 --- a/lang/ga/docs/teacher.html +++ /dev/null @@ -1,435 +0,0 @@ - - - -Doic. Moodle: Lámhleabhar an Mhúinteora - - - - - - -

                            -Lámhleabhar an Mhúinteora

                            -Treoir an-tapa is ea an leathanach seo le cúrsaí a chruthú -ar-líne le Moodle. Tugtar imlíne ann ar na príomhfheidhmeanna -atá ar fáil, maraon le roinnt de na príomhchinnidh -a bheidh ort a dhéanamh. - -

                            Rannóga sa doiciméad seo:

                            -
                              -
                            1. -Ag tosú
                            2. - -
                            3. -Socruithe an chúrsa
                            4. - -
                            5. -Comhaid a uaslódáil
                            6. - -
                            7. -Gníomhaíochtaí a shocrú
                            8. - -
                            9. -An cúrsa a rith
                            10. - -
                            11. -A thuilleadh eolais
                            12. -
                            - -

                            -Ag tosú

                            - -
                            Glacann an doiciméad seo leis go bhfuil Moodle socraithe -ag riarthóir an tsuímh agus gur thug siad cúrsa nua, -glan duit le tosú air. Glactar leis chomh maith go bhfuil tú -logáilte isteach ar do chúrsa trí do chuntas múinteora. - -

                            Seo trí nod ginearálta le cabhrú leat tosú.

                            -
                              -
                            1. -Ná bíodh faitíos ort triail a bhaint as rudaí:
                            2. -
                            3. -
                              Tá tú saor le breathnú thart agus le rudaí -a athrú. Tá sé an-deacair aon rud a bhriseadh ar chúrsa -Moodle, agus fiú má dhéanann, de ghnáth tá -sé éasca é a dheisiú.
                            4. - -
                            5. -Tabhair faoi deara agus úsáid na deilbhíní -beaga seo:
                            6. - -
                            7. -
                               edit - ligeann an deilbhín -eagarthóireachta duit eagar a chur ar pé rud atá -in aice leis. - -

                              help - cuireann an deilbhín -cabhrach fuinneog -cabhrach ar fáil duit.

                              - -

                               hide - ligeann an deilbhín -súil-ar-oscailt duit rud a cheilt ó mhic léinn

                              - -

                               show - cuireann an deilbhín -súil-dúnta rud atá faoi cheilt ar fáil

                              -
                            8. -
                            9. -Úsáid an barra nascleanúna ag barr gach leathanach
                            10. -
                            11. -
                              cabhróidh sé seo leat cuimhniú cá -bhfuil tú agus gan dul ar strae.
                              -
                            12. -
                            - -

                            -Socruithe an chúrsa

                            - -
                            An chéad rud ba cheart duit a dhéanamh ná -breathnú faoi "Riarachán" ar leathanach baile do chúrsa -agus cliceáil ar "Socruithe..." (Tabhair faoi deara nach -bhfuil an nasc seo, agus go deimhin an rannóg iomlán Riaracháin, -ar fáil ach duitse (agus do riarthóir an tsuímh). -Ní fheicfidh na mic léinn na nascanna seo fiú. - -

                            Ar leathanach na Socruithe féadfaidh tú roinnt de na socruithe -do do chúrsaa athrú, óna ainm go dtí an lá -ar a dtosaíonn sé. Ní labhróidh mé anseo -fúthu sin ar fad, ós rud é go bhfuil deilbhín -cabhrach in aice leo ar fad a mhíníonn go beacht iad. Mar -sin féin, labhróidh mé faoin ngné is tábhachtaí -díobh seo - formáid an chúrsa.

                            - -

                            Socróidh an fhormáid a roghnaíonn tú don -chúrsa an leagan amach bunúsach a bheidh air, mar a dhéanfadh -teimpléad. Tá trí fhormáid le Moodle leagan -1.0 - gach seans go mbeidh i bhfad níos mó ann sa todhchaí -(seol smaointe nua chuig martin@moodle.org, -le bhur dtoil!)

                            - -

                            Seo léiriú scáileáin de chúrsaí -samplacha i ngach ceann den trí fhormáid (déan neamhaird -de na dathanna éagsúla, rud a shocraíonn riarthóir -an tsuímh don suíomh iomlán):

                            -

                            Formáid sheachtainiúil:

                            - -

                            weekly

                            - -

                             

                            - -

                            Formáid ábhair:

                            - -

                            topics

                            - -

                             

                            - -

                            Formáid shóisialta:

                            - -

                            social

                            - - -

                             

                            - -

                            Tabhair faoi deara go bhfuil na formáidí seachtainiúil -agus ábhair an-chosúil ó thaobh struchtúir -de. An príomhdhifríocht ná go gclúdaíonn -gach bosca seachtain go díreach sa bhformáid sheachtainiúil, -agus sa bhformáid ábhair go gclúdaíonn bosca -pé rud is mian leat. Ní úsáideann an fhormáid -shóisialta mórán inneachair ar chor ar bith agus bunaítear -é timpeall ar fhóram amháin - léirítear -é seo ar an bpríomhleathanach.

                            - -

                            Féach na cnaipí cabhrach ar an leathanach Socruithe an -Chúrsa le haghaidh a thuilleadh sonraí.

                            - -

                             

                            - -

                            -Comhaid a uaslódáil

                            - -
                            B'fhéidir go bhfuil ábhar agat cheana ba mhaith -leat a chur le do chúrsa, ar nós leathanaigh gréasán, -comhaid fuaime, comhaid físe, doiciméid Word nó beochan -flash. Is féidir gach cineál comhaid a uaslódáil -chuig do chúrsa agus a stóráil ar an bhfreastalaí. -Agus do chomhaid ar an bhfreastalaí féadfaidh tú iad -a bhogadh, a athainmniú, a eagrú nó iad a scrios. - -

                            Déantar é seo ar fad tríd an nasc Comhaid -ar do roghchlár Riaracháin. Tá cuma mar seo ar an -rannóg Comhaid:

                            -

                            files

                            - - -

                             

                            - -

                            Níl an comhéadan seo ar fáil ach do Mhúinteoirí -- ní féidir le mic léinn teacht air. Cuirtear comhaid -indibhidiúla ar fáil do mhic léinn ar ball (mar "Acmhainní" -- féach an chéad rannóg eile).

                            - -

                            Mar atá le feiceáil ón léiriú scáileáin, -liostáiltear comhaid le fochomhadlanna. Féadfaidh tú -líon ar bith fochomhadlanna a chruthú le do chuid comhad -a choinneáil in ord, agus féadfaidh tú na comhaid -a bhogadh ó cheann go ceann.

                            - -

                            Tá srian ar uaslódáil comhad faoi láthair -- ceann ag an am a ceadaítear. Más mian leat líon -mór comhad a uaslódáil san aon turas (mar shampla, -suíomh gréasáin iomlán), tá sé -i bhfad níos éasca zipchlár a úsáid -le iad a chomhbhrú isteach i gcomhad amháin, uaslódáil -an zipchomhad, agus ansin dízipeáil arís iad ar an -bhfreastalaí (feicfidh tú nasc "dízipeáil" -in aice leis na zipchartlanna).

                            - -

                            Le réamhamharc a fháil ar aon chomhad a uaslódáil -tú, cliceáil ar a ainm. Déanfaidh do bhrabhsálaí -an gnó cuí trí é a oscailt nó é -a íoslódáil chuig do ríomhaire.

                            - -

                            Is féidir comhaid HTML agus téacs a eagrú san áit -ina bhfuli siad ar líne. Beidh gá comhaid eile a eagrú -ar do ríomhaire agus iad a uaslódáil arís. -Má uaslódáileann tú comhad leis an ainm céanna -atá ag comhad atá ann cheana cóipeáilfar anuas -air go huathoibríoch.

                            - -

                            Nóta deiridh: más ar an ngréasán atá -do chuid ábhair ní gá duit na comhaid a uaslódáil -arr chor ar bith - féadfaidh tú nasc a chothú chucu -go díreach ón gcúrsa (féach an modúl -Acmhainní agus an chéad rannóg ele).

                            - -

                             

                            - -

                            -Gníomhaíochtaí a shocrú

                            - -
                            Le cúrsa a thógáil, cuirtear modúil -gníomhaíochta an chúrsa leis an bpríomhleathanach -san ord ina n-úsáidfidh mic léinn iad. Féadfaidh -tú an t-ord a shuaitheadh amar bith is mian leat. - -

                            Le eagarthóireacht a lasadh, cliceáil "Las eagarthóireacht" -faoi Riarachán. Léiríonn nó cealaíonn -an lasc scoránaithe seo na rialúcháin bhreise a ligean -duit príomhleathanach do chúrsa a ionramháil. Tabhair -faoi deara sa léiriú thuas (ar an gcúrsa i bhformáid -Sheachtainiúil) go bhfuil na rialúcháin eagarthóieachta -lasta.

                            - -

                            Le gníomhaíocht nua a chur isteach, téigh chuig -an seachtain, nó an t-ábhar nó an rannóg ar -an scáileán, agus roghnaigh an cineál gníomhaíochta -atá uait ón roghchlár aníos. Seo achoimre ar -na gníomhaíochtaí caighdeánacha ar fad atá -i Moodle 1.0:

                            -
                            -
                            -Tasc
                            - -
                            -Is é atá i Tasc ná nuair a shocraíonn tú -tasc le spriocdháta agus le huasghrád. Beidh mic léinn -in ann comhad amháin a uaslódáil leis na riachtanais -a shásamh. Coinnítear taifead den dáta ar uaslódáil -siad an comhad. Ina dhiaidh, beidh leathanach amháin agatsa ar ar -féidir leat breathnú ar gach comhad (agus chomh luath nó -mall is atá sé), agus ansin grád agus imchaint a thaifead. -Leathuair tar éis duit grád a bhronnadh ar aon mhac léinn, -seolfaidh Moodle r-phost go huathoibríoch chuig an mac léinn -á fhógairt sin. - -

                            -
                            -Rogha
                            - -
                            -Tá gníomhaíocht rogha an-simplí - cuireann -tú ceist agus sonraíonn tú rogha freagraí. -Féadfaidh mic léinn a rogha a dhéanamh, agus tá -scáileán tuairisce agatsa áit a fheiceann tú -na torthaí. Úsáidim féin é le toiliú -taighde a bhailiú ó mo mhic léinn, ach d'fhéadfaí -é a úsáid le haghaidh vótaíocht ranga -nó a leithéid freisin. - -

                            -
                            -Fóram
                            - -
                            -Is é seo cinnte an ceann is tábhachtaí - is anseo -a tharlaíonn plé. Nuair a chuireann tú isteach fóram -nua, tabharfar rogha duit idir cineálacha éagsúla -- plé simplí aon-ábhair, fóram ginearálta -saor do gach duine, nó snáithe-amháin-plé-an-úsáideoir. - -

                            -
                            -Iriseán
                            - -
                            -Iontráil in Iriseán an chúrsa is ea gach gníomhaíocht -iriseáin. Do gach ceann, féadfaidh tú ceist oscailte -a shonraí a stiúrann an t-ábhar a scríobhann -mic léinn, chomh maith leis an bearna ama ina mbeidh an t-iriseán -ar oscailt (formáid sheachtainiúil amháin). Riail -ginearálta atá úsáideach is ea iriseán -amháin sa seachtain a chruthú. Spreag mic léinn le -go scríobhadh siad go smaointeach agus go criticiúil sna -hiriseáin seo ós rud é nach bhfuil siad ar fáil -ach dóibh féin agus duitse. Ina dhiaidh beidh tú in -ann na hiontrálach ar fad don tseachtain sin a ghrádú -agus trácht orthu, agus gheobhaidh mic léinn r-phost uathoibríoch -ag fógairt do chuid aiseolais. Níor dearadh iriseáin -le go gcuirfí leo go leanúnach - más mian leat é -sin a dhéanamh, cuir isteach gníomhaíochtaí -bhreise iriseán. - -

                            -
                            -Acmhainn
                            - -
                            -Is iad na hacmhainní ábhar do chúrsa. D'fhéadfadh -gurb é atá san acmhainn aon chomhad atá uaslódáilte -agat nó ar féidir leat pointeáil chuig le URL. Féadfaidh -tú leathanaigh simplí téacsbhunaithe a chothú -freisin trí iad a chló go díreach isteach i bhfoirm. - -

                            -
                            -Tráth na gCeist
                            - -
                            -Ligean an modúl seo duit tástálacha i bhfoirm tráth -na gceist a dhearadh agus a shocrú. Is féidir ceisteanna -a bheith ilroghnacha, fíor-bréagach, nó le freagraí -gairide. Coinnítear na ceisteanna seo i mbunachar sonraí -catagóirithe, agus is féidir iad a athúsáid -laistigh de chúrsa nó fiú idir chúrsaí. -Is féidir iarrachtaí iolracha a cheadú. Marcáiltear -go huathoibríoch gach iarracht, agus is féidir leis an múinteoir -roghnú ar mian leo aiseolas nó na freagraí cearta -a thabhairt. Tá áiseanna grádála sa modúl -seo. - -

                            -
                            -Suirbhé
                            - -
                            -Tá uirlisí réamhshainithe suirbhé sa modúl -suirbhé atá úsáideach le do rang a mheas agus -a thuiscint. Faoi láthair tá na huirlisí COLLES agus -ATTLS ina measc. Is féidir iad a thabhairt do na mic léinn -go luath sa chúrsa mar uirlis dhiagnóiseach agus ag deireadh -an chúrsa mar uirlis meastóireachta (bainimse leas as ceann -gach seachtain i mo chuidse cúrsaí).
                            -
                            -  - -

                            Tar éis duit do chuid gníomhaíochtaí a chur -isteach, féadfaidh tú iad a bhogadh suas agus síos -i leagan amach do chúrsa rí chliceáil ar na saigheada -beaga (up down) -in aice le gach ceann. Féadfaidh tú iad a scrios freisin -trí dheilbhín na croise a úsáid delete, -agus iad a atheagrú trí an deilbhín eagarthóireachta -a chliceáil edit.

                            - -

                             

                            - -

                            -Ag rith an chúrsa

                            - -
                            Tá plean mór againn cur leis an doiciméad -seo le rang teagaisc cuimsitheach a dhéanamh de. Go dtí sin, -seo cúpla smaoineamh: -
                              -
                            1. -Liostáil d'ainm leis na fóraim ar fad le go mbeidh teagmháil -rialta agat le gníomhaíocht do ranga.
                            2. - -
                            3. -Spreag do mhic léinn le go líonaidís isteach a bpróifíl -úsáideora (grianghrafanna san áireamh) agus léigh -iad ar fad - cabhróidh sé seo le comhthéacs a thabhairt -don mhéid a scríobhann siad ar ball, agus cuideoidh sé -leat freagairt ar chaoi atá oiriúnach dá riachtanais.
                            4. - -
                            5. -Coinnigh nótaí duit féin i "bhFóram na Múinteoirí" -(faoi Riarachán) atá príobháideach. Tá -sé seo an-úsáideach i gcás múinteoireachta -buíne.
                            6. - -
                            7. -Úsáid an nasc "Logaí" (faoi Riarachán) -le rochtain a fháil ar logaí amha, iomlána. Istigh -ansin feicfidh tú nasc chuig fuinneog a uasdhátaíonn -gach seasca soicind agus a thaispeánann an uair an chloig dheiridh -gníomhaíochta. Tá sé úsáideach -é seo a choinneáil ar oscailt ar do dheascar feadh anlae -le go n-aireoidh tú ceangal le gníomhaíocht laethúil -an chúrsa.
                            8. - -
                            9. -Úsáid na "Tuairiscí Gníomhaíochta" -(in aice le gach ainm sa liosta daoine, nó ó aon leathanach -próifíle úsáideora). Bealach iontach iad seo -le feiceáil céard atá ar bun ag aon duine ar leith -ar an gcúrsa.
                            10. - -
                            11. -Tabhair freagra do do chuid mac léinn go tapa. Ná fág -go dtí ar ball é - déan láithreach é. -Ní hamháin go bhfuil sé éasca airechtáil -plúchta leis an toirt a gintear, ach is gné ríthábhachtach -é de sprid agus sódh chomhphobail a thógáil -agus a chothú ar do chúrsa.
                            12. -
                            - -

                            -A thuilleadh eolais

                            - -
                            Má bhíonn fadhb ar leith agat le do shuíomh, -ba cheart duit teagmháil a dhéanamh le riarthóir áitiúil -do shuímh. - -

                            Má tá smaointe iontacha agat faoi cén chaoi le -feabhas a chur ar Moodle, nó fiú roinnt scéalta maithe, -tar anoon go moodle.org -agus buail linn ar an gcúrsa "Using -Moodle". Ba bhreá linn cloisteáil uait, agus is féidir -leat cabhrú linn Moodle a fheabhsú.

                            - -

                            Más mian leat bheith rannpháirteach i gcódú -modúl nua, nó i scríobh na ndoiciméad, nó -i scríobh altanna, déan teagmháil liomsa: Martin -Dougiamas nó brabhsáil an suíomh "rianaitheoir -fabhtanna" atá ag Moodle, ag moodle.org/bugs

                            - -

                            Agus mar fhocal scoir, cuimhnigh na deilbhíní cabhrach -a úsáid - seo innéacs -de na comhaid chabhrach ar fad i Moodle.

                            - - -

                            Go raibh maith agat as Moodle a úsáid - agus go n-éirí -le do chuid múinteoireachta!

                            -
                            -

                             

                            -
                            -

                            Doiciméid Moodle

                            -

                            Version: $Id: teacher.html,v 1.4 2002/08/18 10:00:01 - martin Exp $

                            - - - - diff --git a/lang/ga/editor.php b/lang/ga/editor.php deleted file mode 100644 index 60a892f47ea..00000000000 --- a/lang/ga/editor.php +++ /dev/null @@ -1,100 +0,0 @@ -] le dul ar ais go MODH WYSIWYG.'; -$string['texttop'] = 'Téacsbharr'; -$string['top'] = 'Barr'; -$string['type'] = 'Cló/Cineál'; -$string['underline'] = 'Folíne'; -$string['undo'] = 'Cealaigh do ghníomh is déanaí'; -$string['unorderedlist'] = 'Liosta le hUrchair'; -$string['upload'] = 'Uaslódáil'; -$string['vertical'] = 'Ingearach'; -$string['width'] = 'Leithead'; -$string['zip'] = 'Zipeáil'; - -?> diff --git a/lang/ga/emailprotect.php b/lang/ga/emailprotect.php deleted file mode 100644 index 9bf9d1de6d7..00000000000 --- a/lang/ga/emailprotect.php +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/lang/ga/exercise.php b/lang/ga/exercise.php deleted file mode 100644 index 13ec8f2279f..00000000000 --- a/lang/ga/exercise.php +++ /dev/null @@ -1,162 +0,0 @@ -B'fhéidir gur mhaith leat do chuid oibre a athbhreitniú ag eascairt as an measúnú sin.
                            Má dhéanann tú é sin, cuimhnigh do mheasúnú a athbhreithniú freisin.
                            Féadfaidh tú é seo a dhéanamh trí an nasc Athmheasúnaigh atá thíos."; -$string['awaitingfeedbackfromthe'] = "Ag fanacht ar aiseolas ón \$a"; -$string['awaitingassessmentbythe'] = "Ag fanacht ar mheasúnú ón \$a"; -$string['clearlateflag'] = "Glan Brat Déanach"; -$string['comment'] = "Nóta tráchta"; -$string['confirmdeletionofthisitem'] = "Dearbhaigh Scrios an \$a seo"; -$string['correct'] = "Ceart"; -$string['criterion'] = "Critéar"; -$string['deadline'] = "Spriocdháta"; -$string['deadlineis'] = "Is é an Spriocdháta ná \$a"; -$string['description'] = "Cur síos"; -$string['descriptionofexercise'] = "I dTasc Cleachtaidh, cuirtear an cur síos ar an gcleachtadh nó an tasc atá le déanamh ag an \$a i ndoiciméad Word nó i gcomhad HTML. Uaslódáltar an comhad seo isteach sa chleachtadh sula n-osclaítear an tasc don \$a. Is féidir freisin sraith athraithigh a chruthú bunaithe ar an tasc nó cleachtadh céanna, arís mar dhoiciméid Word nó mar chomhaid HTML, agus iad seo a uaslódáil isteach sa chleachtadh sula n-osclítear é don \$a."; -$string['delete'] = "Scrios"; -$string['deleting'] = "Ag scrios"; -$string['detailsofassessment'] = "Sonraí an Mheasúnaithe"; -$string['displayoffinalgrades'] = "Léiriú ar na Gráid Dheiridh"; -$string['doubleupload'] = "Rabhadh: gach seans gur seoladh an t-aighniú seo faoi dhó. Téigh go dtí an leathanach Riaracháin, seiceáil an bhfuil dhá aighniú ann ón úsáideoir seo laistigh de thréimhse gairid ama. Scrios ceann de na haighnithe seo roimh leanacht ar aghaidh."; -$string['duedate'] = "Dáta dlite"; -$string['edit'] = "Eagraigh"; -$string['editingassessmentelements'] = "Ag Eagrú Eilimintí an Mheasúnaithe"; -$string['element'] = "Eilimint"; -$string['elementweight'] = "Meáchan Eiliminte"; -$string['entriessaved'] = "Iontrálacha Sábháilte"; -$string['errorbanded'] = "Earráid Bandaithe"; -$string['excellent'] = "Ar fheabhas"; -$string['exerciseassessments'] = "Measúnuithe Cleachtaidh"; -$string['exercisefeedback'] = "Aiseolas Cleachtaidh"; -$string['exercisesubmissions'] = "Aighnithe Cleachtaidh"; -$string['generalcomment'] = "Nóta tráchta ginearálta"; -$string['good'] = "Go maith"; -$string['gradeassessment'] = "Measúnú Gráid"; -$string['gradeforassessment'] = "Grád ar Mheasúnú"; -$string['gradeforstudentsassessment'] = "Grád ar Mheasúnú \$a"; -$string['gradeforsubmission'] = "Grád ar Aighniú"; -$string['gradetable'] = "Tábla Gráid"; -$string['gradingstrategy'] = "Straitéis Ghrádaithe"; -$string['handlingofmultiplesubmissions'] = "Láimhseáil Aighnithe Iolracha"; -$string['hidenamesfromstudents'] = "Folaigh Ainmneacha ó Mhic Léinn"; -$string['incorrect'] = "Mícheart"; -$string['leaguetable'] = "Sraith-thábla d\'Obair Aighnithe"; -$string['managingassignment'] = "Bainistíocht an Chleachtaidh"; -$string['mail1'] = "Tá do thasc '\$a' measúnaithe ag"; -$string['mail2'] = "Is féidir na nótaí tráchta agus an grád a fheiceáil sa Tasc Cleachtaidh '\$a'"; -$string['mail3'] = "Féadfaidh tú é a fheiceáil i do Thasc Cleachtaidh"; -$string['mail6'] = "Athbhreitníodh do mheasúnú ar an tasc '\$a'"; -$string['mail7'] = "Is féidir na nótaí tráchta a thug an \$a afheiceáil sa Tasc Cleachtaidh"; -$string['maximumsize'] = "Uasmhéid"; -$string['modulename'] = "Cleachtadh"; -$string['modulenameplural'] = "Cleachtaí"; -$string['movingtophase'] = "Ag bogadh go Pas \$a"; -$string['multiplesubmissions'] = "Aighnithe Iolracha"; -$string['noexercisedescriptionssubmitted'] = "Níor Aighníodh aon Chur Síos ar Chleachtadh"; -$string['nosubmissions'] = "Ní aon Aighniú Ann"; -$string['notassessedyet'] = "Níl Measúnaithe go Fóill"; -$string['notavailable'] = "Níl ar Fáil"; -$string['noteonassessmentelements'] = - "Tabhair faoi deara go mbristear síos grádú go líon áirithe 'Eilimintí Measúnaithe'.
                            - Déanann sé seo níos éasca agus níos comhsheasamhaí an grádú. Mar mhúinteoir, ní mór
                            duitse na hEilimintí seo a chur siteach sula gcuireann tú ar fáil an tasc do na mic léinn
                            - déantar é seo trí chliceáil ar an tasc sa chúrsa, muna bhfuil aon eilimintí ann
                            - iarrfar ort iad a chur ann. Féadfaidh tú an líon eilimintí a athrú leis an scáileán
                            - Eagraigh Measúnú, is féidir na heiliminí féin a athrú ón scáileán "Bainistíocht an Taisc". "; -$string['noteonstudentassessments'] = "{Grád ón mac léinn / Grád Grádaithe ón múinteoir}"; -$string['notitlegiven'] = "Ní Tugtar Teideal"; -$string['notgraded'] = "Gan Grádú"; -$string['nowpleasemakeyourownassessment'] = "Anois Led Thoil tabhair do Mheasúnú féin ar an bPíosa Oibre ó \$a.
                            Tabhair faoi deara go dtugtar na gráid chéanna ar dtús don Fhoirm
                            Mheasúnaithe is a tugtar do Fhoirm an Mhic Léinn. Ba cheart duit
                            aon leasú is mian leat a dhéanamh agus ansin cliceáil ar cheann de
                            na cnaipí ag bun an leathanaigh."; -$string['numberofassessmentelements'] = "Líon Nótaí Tráchta, Eilimintí Measúnaithe, Bandaí Gráid, Ráitis Citéir nó Catagóirí i Rúibric"; -$string['numberofentries'] = "Líon iontrálacha"; -$string['numberofnegativeresponses'] = "Líon Freagraí Diúltacha"; -$string['onesubmission'] = "Aighniú Amháin"; -$string['optionaladjustment'] = "Coigeartú Roghnach"; -$string['overallgrade'] = "Grád Iomlán"; -$string['phase'] = "Pas"; -$string['phase1'] = "Socraigh Cleachtadh"; -$string['phase1short'] = "Socrú"; -$string['phase2'] = "Ceadaigh \$a Measúnuithe agus Aighnithe"; -$string['phase2short'] = "Oscailt"; -$string['phase3'] = "Taispeáin Gráid Iomlána agus Sraith-thábla"; -$string['phase3short'] = "Taispeáin"; -$string['pleasegradetheassessment'] = "Grádaigh an Measúnú ar an bPíosa Oibre seo de chuid \$a"; -$string['pleasesubmityourwork'] = "Led\' thoil aighnigh do chuid Oibre leis an bhFoirm seo"; -$string['pleaseusethisform'] = "Led\' thoil comhlánaigh an fhoirm seo nuair a bhíonn tú
                            críochnaithe leis na treoracha sa chleachtadh thíos."; -$string['pleaseviewtheexercise'] = "Breatnaigh led\' thoil ar an gcleachtadh thíos trí cliceáil ar a theideal.
                            Ba cheart duit na treoracha sa chleachtadh seo a leanúint.
                            Nuair atá tú sásta go bhfuil an cleachtadh comhlánaithe go rathúil agat
                            cliceáil ar an nasc Measúnaigh (nó Athmheasúnaigh)
                            sa bhosca thíos. Nuair a bhíonn an tasc seo déanta agat
                            taispeánfar treoracha breise duit maidir leis an gcéad chéim eile."; -$string['poor'] = "Lag"; -$string['present'] = "I láthair"; -$string['reasonforadjustment'] = "Cúis le Coigeartú"; -$string['reassess'] = "Athmheasúnaigh"; -$string['resubmissionfor'] = "Athaighniú do \$a"; -$string['resubmitnote'] = "Ciallaíonn * go bhfuil cead ag an \$a an t-aighniú seo a athdhéanamh.
                            Is féidir an brat seo a chur le haon aighniú trí é a athmheasúnú agus cliceáil
                            ar an gcnaipe Ceadaigh athaighniú ó \$a.
                            Féadfaidh an mac léinn athaighniú nuair atá an brat seo le feiceáil ar aon cheann dá gcuid aighnithe."; -$string['rubric'] = "Rúibric"; -$string['savemyassessment'] = "Sábháil mo Mheasúnú"; -$string['savedok'] = "Sábháil Ceart go Leor"; -$string['saveentries'] = "Sábháil Iontrálacha"; -$string['saveweights'] = "Sábháil Meáchain"; -$string['scaleyes'] = "Scála 2 phointe Sea/Ní hea"; -$string['scalepresent'] = "Scála 2 phointe I Láthair/As Láthair"; -$string['scalecorrect'] = "Scála 2 phointe Ceart/Mícheart"; -$string['scalegood3'] = "Scála 3 phointe Go maith/Lag"; -$string['scaleexcellent4'] = "Scála 4 phointe Ar fheabhas/An-lag"; -$string['scaleexcellent5'] = "Scála 5 phointe Ar fheabhas/An-lag"; -$string['scaleexcellent7'] = "Scála 7 bpointe Ar fheabhas/An-lag"; -$string['scale10'] = "Scór as 10"; -$string['scale20'] = "Scór as 20"; -$string['scale100'] = "Scór as 100"; -$string['specimenassessmentform'] = "Foirm Shamplach Mheasúnaithe"; -$string['studentallowedtoresubmit'] = "CEAD \$a athaighniú"; -$string['studentassessments'] = "Measúnuithe \$a"; -$string['studentnotallowed'] = "NÍL CEAD ag \$a athaighniú (nó ní gá)"; -$string['studentsubmissionsforassessment'] = "\$a Aighniú Mac Léinn le Measúnú"; -$string['studentsubmissions'] = "\$a Aighniú"; -$string['submitexercisedescription'] = "Aighnigh Cur Síos ar an gCleachtadh"; -$string['submitted'] = "Aighnithe"; -$string['submittedby'] = "Aighnithe ag"; -$string['submission'] = "Aighniú"; -$string['submissions'] = "Aighnithe"; -$string['submissionsnowclosed'] = "Aighnithe dúnta anois - Spriocdháta na n-aighnithe thart"; -$string['suggestedgrade'] = "Grád Molta"; -$string['teacherassessment'] = "Measúnú ó \$a"; -$string['teacherassessmenttable'] = "Tábla Measúnaithe \$a"; -$string['teacherscomment'] = "Nóta Tráchta an Mhúinteora"; -$string['theexercise'] = "An Cleachtadh"; -$string['theexerciseandthesubmissionby'] = "An Cleachtadh agus an t-Aighniú do \$a"; -$string['thegradeis'] = "Is é \$a an Grád"; -$string['thereisfeedbackfromthe'] = "Tá aiseolas ann ón \$a"; -$string['thisisaresubmission'] = "Seo athaighniú ó \$a.
                            Léirítear do mheasúnú ar an aighniú roimhe seo.
                            Tar éis duit breathnú ar an aighniú nua, Leasaigh an measúnú seo led\' thoil
                            agus cliceáil ar cheann de na cnaipe ag bun an leathanaigh."; -$string['title'] = "Teideal"; -$string['typeofscale'] = "Cineál Scála"; -$string['ungradedstudentassessments'] = "\$a Measúnú Mac Léinn gan Grádú"; -$string['usemaximum'] = "Úsáid Uasghrád"; -$string['usemean'] = "Úsáid an Meán"; -$string['verypoor'] = "An-lag"; -$string['view'] = "Amharc"; -$string['viewassessment'] = "Amharc an Measúnú"; -$string['warningonamendingelements'] = "RABHADH: Tá tascanna aighnithe ann.
                            NÁ hathraigh an líon eilimintí, an cineál scála ná meáchan na n-eiliminí."; -$string['weightederrorcount'] = "Comhaireamh Earráide Meáite: \$a"; -$string['weightforgradingofassessments'] = "Meáchan do Ghrádú Measúnaithe"; -$string['weightforteacherassessments'] = "Meáchan do Mheasúnuithe ó \$a"; -$string['weights'] = "Meáchain"; -$string['weightssaved'] = "Meáchain Sábháilte"; -$string['weightsusedforoverallgrade'] = "Meáchain úsáidte don Ghrád Iomlán"; -$string['yourassessment'] = "Do Mheasúnú"; -$string['yourfeedbackgoeshere'] = "Téann do chuid Aiseolais Anseo"; -$string['yoursubmission'] = "Do aighniú"; -?> diff --git a/lang/ga/forum.php b/lang/ga/forum.php deleted file mode 100644 index 274ac5d40fc..00000000000 --- a/lang/ga/forum.php +++ /dev/null @@ -1,137 +0,0 @@ -name - $a->date'; -$string['configdisplaymode'] = 'An modh léirithe réamhshocraithe do phlé muna socraítear ceann.'; -$string['configlongpost'] = 'Glactar leis go bhfuil aon phost atá níos faide ná seo (gan HML san áireamh) fada.'; -$string['configmanydiscussions'] = 'Uasmhéid plé a léirítear i bhfóram sa leathanach'; -$string['configmaxbytes'] = 'Uasmhéid réamhshocraithe do gach iatán fóraim aran suíomh (ag brath ar theorainneacha cúrsa agus ar shocraithe áitiúla eile)'; -$string['configshortpost'] = 'Glactar leis go bhfuil aon phost atá níos giorra ná seo (gan HML san áireamh) gairid.'; -$string['couldnotadd'] = 'Níorbh fhéidir do phost a chur isteach i ngeall ar earráid aineoil'; -$string['couldnotdeleteratings'] = 'Tá brón orm, ní féidir é sin a scrios ó tá sé rátáilte ag daoine cheana'; -$string['couldnotdeletereplies'] = 'Tá brón orm, ní féidir é sin a scrios ó tá sé freagartha ag daoine cheana'; -$string['couldnotupdate'] = 'Níorbh fhéidir do phost a uasdhátú i ngeall ar earráid aineoil'; -$string['delete'] = 'Scrios'; -$string['deleteddiscussion'] = 'Scriosadh an t-ábhar plé'; -$string['deletedpost'] = 'Scriosadh an post'; -$string['deletesure'] = 'An bhfuil tú cinnte go bhfuil tú ag iarraidh an post seo a scrios?'; -$string['discussion'] = 'Plé'; -$string['discussionmoved'] = 'Bogadh an plé seo go \'$a\'.'; -$string['discussions'] = 'Plé'; -$string['discussionsstartedby'] = 'Plé tosaithe ag $a'; -$string['discussionsstartedbyrecent'] = 'Plé tosaithe le déanaí ag $a'; -$string['discussthistopic'] = 'Pléigh an t-ábhar seo'; -$string['eachuserforum'] = 'Postáileann gach duine plé amháin'; -$string['edit'] = 'Eagraigh'; -$string['editing'] = 'Ag eagrú'; -$string['emptymessage'] = 'Bhí rud éigin cearr le do phost. B\'fhéidir gur fhág tú glan é, nó go raibh an t-iatán ró-mhór. NÍOR sábháladh do chuid athruithe.'; -$string['everyonecanchoose'] = 'Féadfaidh gach duine roghnú liostáil'; -$string['everyoneissubscribed'] = 'Tá gach duine liostáilte leis an bhfóram seo'; -$string['forcesubscribe'] = 'Fórsáil go liostálfaí gach duine'; -$string['forcesubscribeq'] = 'Fórsáil go liostálfaí gach duine?'; -$string['forum'] = 'Fóram'; -$string['forumintro'] = 'Réamhrá Fóraim'; -$string['forumname'] = 'Ainm an Fhóraim'; -$string['forums'] = 'Fóraim'; -$string['forumtype'] = 'Cineál fóraim'; -$string['generalforum'] = 'Fóram caighdeánach le haghaidh úsáide ghinearálta'; -$string['generalforums'] = 'Fóraim ghinearálta'; -$string['inforum'] = 'i $a'; -$string['intronews'] = 'Nuacht ginearálta agus fógraí'; -$string['introsocial'] = 'Fóram oscailte le comhrá a dhéanamh faoi aon rud is mian leat'; -$string['introteacher'] = 'Fóram le haghaidh nótaí agus plé do mhúinteoirí amháin'; -$string['lastpost'] = 'Post deiridh'; -$string['learningforums'] = 'Fóraim foghlama'; -$string['maxattachmentsize'] = 'Uasmhéid iatáin'; -$string['maxtimehaspassed'] = 'Tá brón orm ach tá an uasmhéid ama ceadaithe leis an bpost seo ($a) a eagrú ídithe!'; -$string['message'] = 'Teachtaireacht'; -$string['modeflatnewestfirst'] = 'Léirigh freagraí go clárach, an ceann is nua i dtosach'; -$string['modeflatoldestfirst'] = 'Léirigh freagraí go clárach, an ceann is sine i dtosach'; -$string['modenested'] = 'Léirigh freagraí i bhfoirm neadaithe'; -$string['modethreaded'] = 'Léirigh freagraí i bhfoirm shnáite'; -$string['modulename'] = 'Fóram'; -$string['modulenameplural'] = 'Fóraim'; -$string['more'] = 'níos mó'; -$string['movethisdiscussionto'] = 'Bog an plé seo go dtí ... '; -$string['namenews'] = 'Fóram nuachta'; -$string['namesocial'] = 'Fóram sóisialta'; -$string['nameteacher'] = 'Fóram múinteora'; -$string['newforumposts'] = 'Postanna nua fóraim'; -$string['nodiscussions'] = 'Níl aon ábhair plé sa bhfóram seo go fóill'; -$string['noguestpost'] = 'Tá brón orm ach níl cead ag aíonna postáil'; -$string['nomorepostscontaining'] = 'Níor aimsíodh a thuilleadh poist ina raibh \'$a\''; -$string['nonews'] = 'Níos postáladh aon nuacht go fóill'; -$string['noposts'] = 'Nílaon phost ann'; -$string['nopostscontaining'] = 'Níor aimsíodh aon phost ina raibh \'$a\''; -$string['nosubscribers'] = 'Níor liostáil éinne don bhfóram seo go fóill'; -$string['notingroup'] = 'Tá brón orm ach ní mór duit bheith id\' bhall de ghrúpa leis an bhfóram seo a fheiceáil.'; -$string['nownotsubscribed'] = 'NÍ bhfaighidh $a->name cóipeanna de \'$a->forum\' san r-phost.'; -$string['nowsubscribed'] = 'Gheobhaidh $a->name cóipeanna de \'$a->forum\' san r-phost.'; -$string['numposts'] = '$a post'; -$string['olderdiscussions'] = 'Sean ábhair plé'; -$string['openmode0'] = 'Gan plé, gan freagra'; -$string['openmode1'] = 'Gan plé ach ceadaítear freagraí'; -$string['openmode2'] = 'Ceadaítear plé agus freagraí'; -$string['parent'] = 'Taispeáin máthairphost'; -$string['parentofthispost'] = 'Máthair an phoist seo'; -$string['postadded'] = 'Cuireadh isteach go rathúil do phost.
                            Tá $a agat eagar a chur air más mian leat é a athrú.'; -$string['postincontext'] = 'Féach an post seo ina chomhthéacs'; -$string['postmailinfo'] = 'Seo cóip de theachtaireacht postáilte ar shuíomh $a. -Le do fhreagra a chur leis tríd an suíomh gréasáin, cliceáil ar an nasc seo:'; -$string['postrating1'] = 'Feasacht Imscartha is Mó'; -$string['postrating2'] = 'Imscartha agus Cónasctha'; -$string['postrating3'] = 'Feasacht Chónasctha is Mó'; -$string['posts'] = 'Poist'; -$string['postupdated'] = 'Uasdhátaíodh do phost'; -$string['processingpost'] = 'Post $a á phróiseáil'; -$string['rate'] = 'Ráta'; -$string['rating'] = 'Rátáil'; -$string['ratingeveryone'] = 'Féadfaidh gach duine poist a rátáil'; -$string['ratingno'] = 'Gan rátáil'; -$string['ratingonlyteachers'] = 'Ní féidir ach le $a poist a rátáil'; -$string['ratingpublic'] = 'Féadfaidh $a rátáil gach duine a fheiceáil'; -$string['ratingpublicnot'] = 'Féadfaidh $a a gcuid féin rátála amháin a fheiceáil'; -$string['ratings'] = 'Rátálacha'; -$string['ratingssaved'] = 'Rátálacha sábhailte'; -$string['ratingsuse'] = 'Úsáid rátálacha'; -$string['ratingtime'] = 'Srianaigh rátáil go post ó dhátaí sa réimse seo:'; -$string['re'] = 'Re:'; -$string['readtherest'] = 'Léigh an chuid eile den ábhar seo'; -$string['replies'] = 'Freagraí'; -$string['repliesmany'] = '$a freagra go dtí seo'; -$string['repliesone'] = '$a fhreagra go dtí seo'; -$string['reply'] = 'Freagra'; -$string['replyforum'] = 'Freagra ar an bhfóram'; -$string['search'] = 'Cuardaigh'; -$string['searchforums'] = 'Cuardaigh fóraim'; -$string['searcholderposts'] = 'Cuardaigh sean phoist...'; -$string['searchresults'] = 'Cuardaigh torthaí'; -$string['sendinratings'] = 'Seol isteach mo rátáil is déanaí'; -$string['showsubscribers'] = 'Taispeáin síntiúsóirí'; -$string['singleforum'] = 'Plé simplí singil'; -$string['startedby'] = 'Tosaithe ag'; -$string['subject'] = 'Ábhar'; -$string['subscribe'] = 'Liostáil don bhfóram seo'; -$string['subscribed'] = 'Liostáilte'; -$string['subscribers'] = 'Síntiúsóirí'; -$string['subscribersto'] = 'Síntiúsóirí le \'$a\''; -$string['subscribestart'] = 'Cuir cóip r-phoist chugam de phoist ar an bhfóram seo'; -$string['subscribestop'] = 'Níl cóipeanna r-phoist uaim de na poist ar an bhfóram seo'; -$string['subscription'] = 'Síntiús'; -$string['subscriptions'] = 'Síntiúis'; -$string['unsubscribe'] = 'Díliostáil ón bhfóram seo'; -$string['unsubscribed'] = 'Díliostáilte'; -$string['youratedthis'] = 'Rátaigh tusa é seo'; -$string['yournewtopic'] = 'Do ábhar nua plé'; -$string['yourreply'] = 'Do fhreagra'; - -?> diff --git a/lang/ga/help/assignment/assignmenttype.html b/lang/ga/help/assignment/assignmenttype.html deleted file mode 100644 index b480d23db1a..00000000000 --- a/lang/ga/help/assignment/assignmenttype.html +++ /dev/null @@ -1,22 +0,0 @@ -

                            Cineál Taisc

                            - -

                            Tá cineálacha éagsúla taisc ann

                            - -

                            Gníomhaíocht as líne - tá sé -seo úsáideach nuair atá tasc le comhlíonadh -taobh amuigh de Moodle. Feiceann micléinn cur síos ar an -tasc, ach ní féidir leo comhaid a uaslódáil -ná faic. Féadfaidh múinteoirí grád a -thabhairt do gach duine, áfach, agus feicfidh na mic léinn -fógra maidir lena gcuid grád. -

                            - -

                            Uaslódáil comhad aonarach - ligean an cineál -seo taisc do gach mac léinn comhad amháin, d'aon chineál, -a uaslódáil. D'fhéadfadh gur doiciméad as próiseálaí -focal a bheadh ann, nó íomhá nó suíomh -gréasáin zipeáilte nó aon rud a lorgaíonn -tusa orthu. Feadfaidh múinteoirí grád a bhronnadh -ar thascanna a cuirtear isteach ar líne.

                            - - diff --git a/lang/ga/help/assignment/index.html b/lang/ga/help/assignment/index.html deleted file mode 100644 index 7c2bcdda4f5..00000000000 --- a/lang/ga/help/assignment/index.html +++ /dev/null @@ -1,11 +0,0 @@ -

                            Tascanna

                            - - - diff --git a/lang/ga/help/assignment/mods.html b/lang/ga/help/assignment/mods.html deleted file mode 100644 index f9c89cd9428..00000000000 --- a/lang/ga/help/assignment/mods.html +++ /dev/null @@ -1,10 +0,0 @@ -

                             Tascanna

                            -
                              -

                              Ligean tascanna do mhúinteoirí tasc a shonrú inar -gá don mhac léinn ábhar digiteach (aon fhormáid) -a ullmhú agus é a chur isteach trí é a uaslódáil -leis and bhfreastalaí. Gnáth-thascanna coitianta is ea aistí, -tionscnaimh, tuairiscí, agus araile. Tá cumas grádála  -sa modúl seo.

                              -
                            - diff --git a/lang/ga/help/assignment/resubmit.html b/lang/ga/help/assignment/resubmit.html deleted file mode 100644 index 54c88d75c01..00000000000 --- a/lang/ga/help/assignment/resubmit.html +++ /dev/null @@ -1,16 +0,0 @@ -

                            Tascsanna a Athaighniú

                            - -

                            s é an réamhshocrú nach féidir le mic léinn -tascanna a athaighniú ó bhíonn siad grádaithe -ag an múinteoir.

                            - -

                            Má lasann tú an rogha seo, beidh cead ag mic léinn -tascanna a athaighniú ó bhíonn siad grádaithe -(le go ndéanfaigh tusa iad a athghrádú). D'fhéadfadh -sé seo a bheith úsáideach más mian leis an -múinteoir na mic léinn a ghríosadh le hobair níos -fearr a dhéanamh trí phróiseas atriallach.

                            - -

                            Ar ndóigh, ní bhaineann an rogha seo le hábhar -le tascanna as líne.

                            - diff --git a/lang/ga/help/attendance/mods.html b/lang/ga/help/attendance/mods.html deleted file mode 100644 index b04550de744..00000000000 --- a/lang/ga/help/attendance/mods.html +++ /dev/null @@ -1,7 +0,0 @@ -

                             Tinreamh

                            -
                              -

                              Ligeann an modúl seo duit tinreamh gach rannpháirtí -a thaifead d'ócáid ar leith.

                              -
                            - - diff --git a/lang/ga/help/chat/chatting.html b/lang/ga/help/chat/chatting.html deleted file mode 100644 index d8ba528e67e..00000000000 --- a/lang/ga/help/chat/chatting.html +++ /dev/null @@ -1,34 +0,0 @@ -

                            Comhrá a Úsáid

                            - -

                            Tá roinnt gnéithe sa mhodúl comhrá a chuireann -lena gheanúlacht.

                            - -
                            -
                            Straoiseoga (Smilies)
                            -
                            Is féidir aon straoiseog ar féidir leat é a chló -áit ar bith eile ar Moodle a chló anseo agus léireofar -i gceart iad. Mar shampla, :-) =
                            - -
                            Nascanna
                            -
                            Tiontófar go nascanna seoltaí idirlín go huathoibríoch.
                            - -
                            Mothú
                            -
                            Féadfaidh tú líne a thosú le "/me" nó -":" le mothú a chur in iúl. Mar shampla, más Laoise -an t-ainm atá ort agus go gclóann tú ":ag gáire!" -nó "/me ag gáire!" feicfidh chuile dhuine "Laoise ag gáire!"
                            - -
                            Bípeanna
                            -
                            Féadfaidh tú fuaim a chur chuig daoine eile trí an -nasc "bíp" in aice lena n-ainm a bhrú. Aicearra úsáideach -le gach duine sa chomhrá a bhípeáil is ea "beep all" -a chló.
                            - -
                            HTML
                            -
                            Má tá roinnt cóid HTML ar eolas agat, féadfaidh -tú é a úsáid i do chuid téacs le íomhánna -a chur isteach, le fuaimeanna a sheinnt nó le méid nó -dath do théacs a athrú.
                            - -
                            - diff --git a/lang/ga/help/chat/index.html b/lang/ga/help/chat/index.html deleted file mode 100644 index 200b32eb4ae..00000000000 --- a/lang/ga/help/chat/index.html +++ /dev/null @@ -1,5 +0,0 @@ -

                            Modúil comhrá

                            - - diff --git a/lang/ga/help/chat/mods.html b/lang/ga/help/chat/mods.html deleted file mode 100644 index 75ea1e00b4f..00000000000 --- a/lang/ga/help/chat/mods.html +++ /dev/null @@ -1,11 +0,0 @@ -

                             Comhrá

                            -
                              -

                              Ligeann an modúl Comhrá do rannpháirtithe plé -sioncronach fíor-ama a bheith acu ar an ngréasán. -Bealach úsáideach is ea é seo le tuiscint nua a fháil -ar a chéile agus ar an ábhar plé - tá seomra -comhrá sách éagsúil ó fhóram -aisioncranach. Tá roinnt gnéithe sa mhodúl Comhrá -le plé a bhainistiú agus a athbhreithniú.

                              -
                            - diff --git a/lang/ga/help/choice/mods.html b/lang/ga/help/choice/mods.html deleted file mode 100644 index f90a26d133d..00000000000 --- a/lang/ga/help/choice/mods.html +++ /dev/null @@ -1,10 +0,0 @@ -

                             Roghanna

                            -
                              -

                              Tá gníomhaíocht rogha an-simplí - cuireann -an múinteoir ceist agus sonraíonn siad rogha iolrach freagraí. -Bíonn sé úsáideach le haghaidh vótaíochta -scioptha le tuairimíocht ar ábhar éigin a spreagadh; -le ligean don rang vóráil maidir le treo an chúrsa; -nó le toilíocht thaighe a bhailiú.

                              -
                            - diff --git a/lang/ga/help/choice/options.html b/lang/ga/help/choice/options.html deleted file mode 100644 index bea63a3ce8e..00000000000 --- a/lang/ga/help/choice/options.html +++ /dev/null @@ -1,9 +0,0 @@ -

                            Togha Roghanna

                            - -

                            Seo an áit a shocraíonn tú na roghanna ar féidir -le rannpháirtithe toghadh astu.

                            - -

                            Féidir aon líon is maith leat a líonadh: tá -sé go breá roinnt acu a fhágáil glan muna bhfuil -6 rogha uait.

                            - diff --git a/lang/ga/help/cookies.html b/lang/ga/help/cookies.html deleted file mode 100644 index dfb6237a40a..00000000000 --- a/lang/ga/help/cookies.html +++ /dev/null @@ -1,24 +0,0 @@ -

                            Fianáin

                            - -

                            Úsáideann an suíomh seo dhá fhianán.

                            - -

                            Is an fianán seisiúin, ar a dtugtar MoodleSession -de ghnáth, an ceann atá eisíntiúil. Ní -mór duit an fianán seo a ligean isteach i do bhrabhsálaí -le leanúnachas a chothú agus ledo logáil isteach a -choinneáil ó leathanach go leathanch. Nuair a logáileann -tú amach, nó nuair a dhúnann tú an brabhsálaí, -scriostar an fianán seo (i do bhrabhsálaí agus ar -an bhfreastalaí).

                            - -

                            Is ar mhaithe le háisiúlacht amháin an fianán -eile, ar a dtugtar de ghnáth MOODLEID. Cuimhníonn -sé ar do ainm úsáideora sa bhrabhsálaí. -Ciallaíonn sé seo, nuair a fhilleann tú ar an suíomh -seo go mbeidh réimse an ainm úsáideora ar an leathanach -logála líonta isteach duit cheana. Tá sé slán -diúltú don fhianán seo - níl ann ach go mbeidh -ort d'ainm úsáideora a líonadh isteach gach uair a -logáileann tú isteach.

                            - - diff --git a/lang/ga/help/courseavailability.html b/lang/ga/help/courseavailability.html deleted file mode 100644 index 7b1796b29c4..00000000000 --- a/lang/ga/help/courseavailability.html +++ /dev/null @@ -1,24 +0,0 @@ -

                            Infhaighteacht Cúrsaí

                            - -

                            Ligeann an rogha seo duit do chúrsa a 'fholú' ar fad.

                            - -

                            Ní fheicfear ar aon liostáil cúrsaí é, -ach amháin do mhúinteoirí an chúrsaí -agus do riarthóirí.

                            - -

                            Fiú má dhéanann mic léinn iarracht an URL -a chur isteach go díreach, ní bheidh cead iontrála -acu.

                            - - - - - - - - - - - - - diff --git a/lang/ga/help/coursecategory.html b/lang/ga/help/coursecategory.html deleted file mode 100644 index b6e069ad7fa..00000000000 --- a/lang/ga/help/coursecategory.html +++ /dev/null @@ -1,17 +0,0 @@ -

                            Catagóirí Cúrsa

                            - -

                            D'fhéadfadh go bhfuil réimse catagóirí cúrsa -socraithe ag do riarthóir Moodle.

                            - -

                            Mar shampla, "Eolaíocht", "Sruithléann", "Sláinte -Poiblí" srl

                            - -

                            Roghnaigh an ceann is oiriúnaí do do chúrsa. Beidh -tionchar aige seo ar an áit ina léireofar do chúrsa -ar liosta na gcúrsaí agus d'fhéadfadh sé é -a dhéanamh níos éasca do do chuid mac léinn -do chúrsa a aimsiú.

                            - - - - diff --git a/lang/ga/help/dialogue/addsubject.html b/lang/ga/help/dialogue/addsubject.html deleted file mode 100644 index 59084785208..00000000000 --- a/lang/ga/help/dialogue/addsubject.html +++ /dev/null @@ -1,11 +0,0 @@ -

                            Ag Cuir Ábhair Leis

                            - -

                            Féadfaidh tú an nasc seo a úsáidle hÁbhar -a chur leis an dialóg. Is maith an smaoineamh ábhar a bheith -agat don dialóg, coiníonn sé treo leis an dialóg -agus díríonn sé na freagraí ar an ábhar. -Más mian leat tosú ag plé ábhair eile is fearr -an dialóg reatha a dhúnadh agus dialóg nua a thosú -ar an ábhar sin.

                            - - diff --git a/lang/ga/help/dialogue/closedialogue.html b/lang/ga/help/dialogue/closedialogue.html deleted file mode 100644 index 72440fe7f43..00000000000 --- a/lang/ga/help/dialogue/closedialogue.html +++ /dev/null @@ -1,19 +0,0 @@ -

                            Dialóg a Dhúnadh

                            -

                            Féadfaidh tú dialóg a dhúnadh am ar bith. -Nuair a dúntar dialóg, stoptar é agus baintear é -de do liosta de dhialóga reatha. Is é sin le rá, ní -léirítear ar an leathanach seo dialóga dúnta.

                            - -

                            Beidh tú in ann breathnú ar dhialóga dúnta -ach ní féidir leat cur leo. Ach ar deireadh scriostar ar -fad dialóga agus ina dhiaidh sin ní bheidh tú fiú -in ann breathnú orthu.. -

                            - -

                            Má dhúnann tú an dialóg seo, beidh ort dialóg -nua a thosú más mian leat leanacht "ag caint" leis and duine -seo. Feicfidh tú arís iad sa liosta daoine ar féidir -dialóg a thosú leo. -

                            - - diff --git a/lang/ga/help/dialogue/deleteafter.html b/lang/ga/help/dialogue/deleteafter.html deleted file mode 100644 index 4f6ed41bf6f..00000000000 --- a/lang/ga/help/dialogue/deleteafter.html +++ /dev/null @@ -1,8 +0,0 @@ -

                            Scrios Dialóga

                            -

                            Socraíonn an rogha seo an t-am, i laethanta, go dtí go -scriostar dialóga. Ní bhaineann sé ach le dialóga -DÚNTA.

                            - -

                            Má socraítear ag náid an tréimhse ama, ní -scriostar riamh na dialóga.

                            - diff --git a/lang/ga/help/dialogue/dialoguetype.html b/lang/ga/help/dialogue/dialoguetype.html deleted file mode 100644 index fe920168c54..00000000000 --- a/lang/ga/help/dialogue/dialoguetype.html +++ /dev/null @@ -1,21 +0,0 @@ -

                            Cineálacha Dialóige

                            -

                            Tá trí chineál Dialóige ann.

                            - -
                            1. Múinteoir go Mac Léinn Ceadaíonn sé -seo dialóga idir mhúinteoirí agus mic léinn. -Is féidir le múinteoir nó mc léinn dialóga -a thosú. Sna liostaí, ní fheiceann múinteoirí -ach mic léinn agus ní fheiceann mic léinn ach múinteoirí. -

                            2. - -
                            3. Mac Léinn go Mac Léinn Ceadaíonn sé -seo dialóga idir namic léinn. Níl na múinteoirí -san áireamh ar chor ar bith sa chineál seo dialóige./p>

                            4. - -
                            5. Gach Duine Ceadaíonn sé seo do gach duine sa Rang -dialóg a thosú le duine ar bith eile. Féadfaidh múinteoirí -dialóg a thosú le múinteoirí eile agus le mic -léinn, agus féadfaidh mic léinn dialóg a thosú -le mic léinn eile agus le múinteoirí.

                            6. -
                            - diff --git a/lang/ga/help/dialogue/index.html b/lang/ga/help/dialogue/index.html deleted file mode 100644 index 25b89e8c3f8..00000000000 --- a/lang/ga/help/dialogue/index.html +++ /dev/null @@ -1,12 +0,0 @@ -

                            Dialóga

                            - - - diff --git a/lang/ga/help/dialogue/info.html b/lang/ga/help/dialogue/info.html deleted file mode 100644 index 7e94d9a58bc..00000000000 --- a/lang/ga/help/dialogue/info.html +++ /dev/null @@ -1,42 +0,0 @@ - Dialóga

                            - -

                            Soláthraíonn an modúl seo modh simplí cumarsáide -idir péirí úsáideoirí. Féadfaidh -múinteoir dialóg a thosú le mac léinn, is féidir -lemac léinn dialóg a thosú le múinteoir, agus -(go roghnach) féadfaidh mac léinn dialóg a oscailt -le mac léinn eile. Féadfaidh múinteoir nó mac -léinn a bheith páirteach i líon ar bith dialóga -leanúnacha ag am ar bith.

                            - -

                            Níl teorainn leis an líon iontrálacha i ndialóg, -agus de ghnáth tarlaíonn an "comhrá" i riocht freagraí -idirdhuillithe. Ní feidhmítear an fhormáid seo agus -féadfaidh ceachtar páirtí cur leis an dialóg -ag am ar bith.

                            - -

                            Féadfaidh ceachtar páirtí an dialóg a dhúnadh -am ar bith. Ní féidir dialóga dúnta a athoscailt. -Ach is féidir le ceachtar páirtí breathnú ar -dhialóg dhúnta fhaid is gur ann di i gcónaí.

                            - -

                            Scriosann an modúl dialóga dúnta agus na hiontrálacha -ar fad iontu tar éis tréimhse áirithe ama. Socraítear -an tréimhse sin anseo nuair a cruthaítear an Dialóg.

                            - -

                            If the course has groups the following points apply. -

                            • When opening a new dialogue the teacher is shown the group mode of the - dialogue and their current group. This information is displayed immediately - below the Tab Bar.
                            • -
                            • A teacher can start dialogues with all the students in their current group - by choosing the group name in the drop-down list of names. Once started - the dialogues operate in the normal way, that is, they are one-to-one - dialogues between the teacher and individual students.
                            • -
                            • If the dialogue is in SEPARATE GROUPS mode then students only see other - students in their own group (assuming the dialogue allows student-to-student - dialogues). In this mode students who are not in any group do not see any - other students.
                            • -
                            -

                            - - diff --git a/lang/ga/help/dialogue/maildefault.html b/lang/ga/help/dialogue/maildefault.html deleted file mode 100644 index 89e0e3d831c..00000000000 --- a/lang/ga/help/dialogue/maildefault.html +++ /dev/null @@ -1,8 +0,0 @@ -

                            Socraigh Réamhshocrú R-Phoist

                            -

                            Socraíonn sé seo an luach réamhshocraithe don rogha -"Seol le r-phost an teachtaireacht seo" nuair a bhíonn iontráil -nua á chur leis. Má socraítear go "Sea" an rogha seo, -ticeálfar an bosca seolta poist. Seachas sin, ní thiceálfar -an bosca seolta poist. -

                            - diff --git a/lang/ga/help/dialogue/mods.html b/lang/ga/help/dialogue/mods.html deleted file mode 100644 index 19b65798338..00000000000 --- a/lang/ga/help/dialogue/mods.html +++ /dev/null @@ -1,12 +0,0 @@ -

                             Dialóga

                            -
                              -

                              Soláthraíonn an modúl seo modh simplí cumarsáide -idir phéirí úsáideoirí. Féadfaidh -múinteoir dialóg a thosú le mac léinn, is féidir -lemac léinn dialóg a thosú le múinteoir, agus -(go roghnach) féadfaidh mac léinn dialóg a oscailt -le mac léinn eile. Féadfaidh múinteoir nó mac -léinn a bheith páirteach i líon ar bith dialóga -leanúnacha ag am ar bith.

                              -
                            -> diff --git a/lang/ga/help/dialogue/multiple.html b/lang/ga/help/dialogue/multiple.html deleted file mode 100644 index 7134806171a..00000000000 --- a/lang/ga/help/dialogue/multiple.html +++ /dev/null @@ -1,13 +0,0 @@ -

                            Dialóga Iolracha

                            - -

                            Ligeann an rogha seo do dhuine níos mó ná dialóg -amháin a thosú le duine eile. Is é "Ní hea" -an réamhshocrú, rud a cheadaíonn dialóg amháin -(oscailte) idir aon bheirt.

                            - -

                            Má ceadaítear dialóga iolracha, d'fhéadfaí -an deis sin a mhí-úsáid. D'fhéadfaí -daoine a bheith "á gcrá" ag daoine eile ag oscailt an iomarca -dialóga leo nár theastaigh uathu.

                            - - diff --git a/lang/ga/help/dialogue/sendmail.html b/lang/ga/help/dialogue/sendmail.html deleted file mode 100644 index cbb55fc566e..00000000000 --- a/lang/ga/help/dialogue/sendmail.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - -
                            Teachtaireachtaí r-Phoist a Sheoladh
                            - - -

                            Má ticeáltar an bosca, seolfar teachtaireacht chuig an -duine eile le rá leo gur chuir tú le dialóg leo (nó -gur thosaigh tú ceann). bhíonn an t-iontráil -sa teachtaireacht - níl ann ach ráiteas gairid agus nuair -is cuí, nasc chuig an dialóg féin. - -

                            Ní gá na teachtaireachtaí seo a chur ach amháin -má cheapann tú gur dócha nach bhfeicfeadh an duine -d'iontráil mar gheall nach n-úsáideann siad an cúrsa -go minic. Inseoidh an liosta Rannpháirtithe duit cén uair -deiridh a raibh siad gníomhach ar an gcúrsa. - - diff --git a/lang/ga/help/dialogue/writing.html b/lang/ga/help/dialogue/writing.html deleted file mode 100644 index f89b8770f64..00000000000 --- a/lang/ga/help/dialogue/writing.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - -

                            Scríobh
                            - - -

                            Agus téacs á scríobh agat a bheidh á léamh -ag daoine eile, déan iarracht scríobh go díreach chuig -do lucht éisteachta.. - -

                            Mínigh do chuid tuairimí chomh soiléir agus chomh -simplí agus is féidir leat le míthuiscintí -a sheachaint. Rud amháin is féidir a dhéanamh ná -focail fhada a sheachaint nuair a dhéanfaidh ceann gairid an chúis. - -

                            Sna dialóga cuideoidh sé má choinníonn tú -gairid do chuid teachtaireachtaí poist, agus iad a bheith ábhartha. -Féadfaidh tú i gcónaí dialóg a dhúnadh -aus ceann eile a thosú más mian leat rud éigin eile -a phlé. -
                              - -

                            Nuair a scríobhann tú freagraí chuig daoine eile, -déan iarracht cuimhniú ar cheisteanna spéisiúla -is féidir leat a chur orthu. Cuideoidh sé seo leat féin -agus leis an duine eile smaoineamh (agus foghlam!) faoin ábhar atá -á phlé agaibh. -
                              -

                            - -
                            - - -  -
                             
                            - - - diff --git a/lang/ga/help/emoticons.html b/lang/ga/help/emoticons.html deleted file mode 100644 index f360773d400..00000000000 --- a/lang/ga/help/emoticons.html +++ /dev/null @@ -1,141 +0,0 @@ -

                            Ag baint úsáide as Straoiseoga (emoticons)

                            - - - - -
                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                            meangadh:-)
                            meangadh mór:-D
                            sméideadh;-)
                            measctha:-/
                            smaointeachV-.
                            teanga amuigh:-P
                            fionnuarB-)
                            formheas^-)
                            súile móra8-)
                            iontas8-o
                            -
                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                            brónach:-(
                            cúthail8-.
                            luisne:-I
                            póga:-X
                            fear grinn:o)
                            súil dhubhP-|
                            crosta8-[
                            marbhxx-P
                            codlatach|-.
                            olc}-]
                            -
                            - -

                            Nuair a bhíonn tú ag scríobh agus tú ar-líne, -uaireanta bíonn sé deacair tú féin a chur in -iúl le gnáththéacs. B'fhéidir go gcuideodh -na straoiseoga beaga seo. -

                            - -

                            Leis na deilbhíní beaga seo a úsáid i do -chuid téacs: cliceáil ar an deilbhín anseo thuas, -ní clóigh isteach an téacs cuí i do théacs.

                            - -

                            Tabhair faoi deara gur pictiúir bheaga iad na cóid - cas -do cheann ar clé agus tú ag breathnú orthu.

                            - - - - - - - - - - - - - - - - diff --git a/lang/ga/help/enrolmentkey.html b/lang/ga/help/enrolmentkey.html deleted file mode 100644 index 2f4321135fa..00000000000 --- a/lang/ga/help/enrolmentkey.html +++ /dev/null @@ -1,37 +0,0 @@ -

                            Eochair Chlárúcháin do Chúrsa

                            - -

                            Is í an eochair chlárúcháin atá ag -cúrsa a choiníonn daoine nach bhfuil ag teastáil amach -as do chúrsa.

                            - -

                            Má fhágann tú glan é seo, beidh éinne -a bhfuil ainm úsáideora Moodlecruthaithe acu ar an suíomh -seo in ann clárú go simplí ar do chúrsa trí -dul isteach ann.

                            - -

                            Má chuireann tú rud éigin anseo, beidh ar mhic -léinn atá ag iarraidh dul isteach air DON CHÉAD UAIR -AMHÁIN an focal nó frása seo a sholáthar. - -

                            Is é an smaoineamh a ghabhann leis seo ná go dtabharfaidh -tusa an eochair do dhaoine údaraithe trí mhodhanna eile ar -nós r-phost príobháideach, gnáthphost, ar an -bhfón, nó fiú ó bhéal agus iad i rang -os do chomhair.

                            - -

                            Is é an smaoineamh a ghabhann leis seo ná go dtabharfaidh -tusa an eochair do dhaoine údaraithe trí mhodhanna eile ar -nós r-phost príobháideach, gnáthphost, ar an -bhfón, nó fiú ó bhéal agus iad i rang -os do chomhair. -

                            - -

                            Má "éalaíonn" an pasfhocal seo agus go bhfuil daoine -ag clárú agat nach dteastaíonn uait, féadfaidh -tú iad a dhíchlárú (breathnaigh a eathanach -próifíle úsáideora) agus athraigh an eochair -seo. Ní bheidh tionchar aige seo ar aon mhac léinn dlisteanach -a chláraigh cheana, ach ní bheidh na daoine nach bhfuil ag -teastáil in ann teacht ar ais iseach.

                            - - diff --git a/lang/ga/help/index.html b/lang/ga/help/index.html deleted file mode 100644 index 250b743fc0a..00000000000 --- a/lang/ga/help/index.html +++ /dev/null @@ -1,59 +0,0 @@ - -

                            Innéacs na gComhad Chabhrach

                            - -

                            Ginearálta

                            - - -

                            Riarachán

                            - - -

                            Cúrsaí a shocrú

                            - - -

                            Léamh agus Scríobh

                            - - - - diff --git a/lang/ga/help/journal/index.html b/lang/ga/help/journal/index.html deleted file mode 100644 index 8d1c8b69c3f..00000000000 --- a/lang/ga/help/journal/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lang/ga/help/journal/mods.html b/lang/ga/help/journal/mods.html deleted file mode 100644 index 7b8bff4f2b3..00000000000 --- a/lang/ga/help/journal/mods.html +++ /dev/null @@ -1,14 +0,0 @@ -

                             riseáin

                            -
                              -

                              Gníomhaíocht fíor-thábhachtach mhachnamhach -is ea an modúl seo. Iarrann an múinteoir ar an mac léinn -ábhar ar leith a mhachnamh, agus féadfaidh an mac léinn -a bhfreagra a eagrú agus a scagadh thar tréimhse ama. Tá -an freagra seo príobháideach agus ní fheiceann ach -an múinteoir é, ar féidir leo aiseolas agus grád -a thabhairt ar gach iontráil san iriseán. Smaoineamh maith -é gníomhaíocht Iriseáin amháin a bheith -ann sa seachtain.

                              -
                            - - diff --git a/lang/ga/help/label/mods.html b/lang/ga/help/label/mods.html deleted file mode 100644 index 0b2bb1f4a82..00000000000 --- a/lang/ga/help/label/mods.html +++ /dev/null @@ -1,8 +0,0 @@ -

                             Lipéid

                            -
                              -

                              Ní fíorghníomhaíocht í seo - gníomhaíocht -"chaoch" is ea í a ligeann duit téacs agus grafaicí -a chur isteach i measc na ngníomhaíochtaí eile ar -leathanach an chúrsa.

                              -
                            - diff --git a/lang/ga/help/questions.html b/lang/ga/help/questions.html deleted file mode 100644 index f2fc2cb5935..00000000000 --- a/lang/ga/help/questions.html +++ /dev/null @@ -1,240 +0,0 @@ -

                            Ceisteanna

                            - - - -

                            Bealach maith le cabhrú le daoine eile ábhar a mhachnamh -is ea ceist a chur orthu ina leith. Nuair a cuirtear ceist mhaith, cuidíonn -sé linn eolas a tharraingt le chéile, na smaointe atá -againn a mheas agus smaointe nua a chruthú.

                            - - - -

                            Ceistiú Sócraiteach a tugtar air cheisteanna a -chur go sonrach le cuidiú le daoine foghlam, ainm a thagraíonn -do Shócrait sa Ghéig Ársa.

                            - - - -

                            Ní mór, le ciesteanna shócraiteacha, éisteach -go han-chúramach leis an duine eile le cuidiú leat do cheist -a mheas agus a chur ar bhealach cuiditheach, inchiallaithe agus neamhionsaitheach.

                            - - - -

                            Samplaí iad seo dá leithéid de cheisteanna:

                            - - - - - - - - - - - -

                            -Ceisteanna léiriúcháin

                            - -
                              -
                            • -Céard atá i gceist agat nuair a deir tú ______?
                            • - -
                            • -Cén phríomhphointe atá agat?
                            • - -
                            • -Cén chaoi a mbaineann _____ le _____?
                            • - -
                            • -An bhféadfá é sin a rá ar shlí eile?
                            • - -
                            • -Fan go bhfeicfidh mé an dtuigim i gceart thú; an é -_____ nó _____ atá i gceist agat?
                            • - -
                            • -Cén chaoi a gceanglaíonn sé seo leis an bhfadhb/ábhar -plé/leis an gceist s'againne?
                            • - -
                            • -Orla, an bhféadfá achoimre a thabhairt i do chuid focail -féin ar an méid a dúirt Darach? ... Dharach, an é -sin a bhí i gceist agat?
                            • - -
                            • -An bhféadfá sampla a thabhairt dom?
                            • - -
                            • -An sampla maith é _____ de sin?
                            • -
                            - -

                            -Ceisteanna a thóraíonn foshuíomhanna

                            - -
                              -
                            • -Céard lena bhfuil tú ag glacadh anseo?
                            • - -
                            • -Céard lena bhfuil Sinéad ag glacadh?
                            • - -
                            • -Céard eile a bhféadfaimis glacadh leis ina áit?
                            • - -
                            • -Deabhraíonn sé go bhfuil tú ag glacadh leis go _____. -An dtuigim i gceart thú?
                            • - -
                            • -Tá do chuid réasúnaíochta ar fad ag brath ar -an tuairim go _____. Cén fáth ar bhunaigh tú do réasúnaíocht -ar _____ seachas _____?
                            • - -
                            • -Deabhraíonn sé go nglacann tú leis _____. Cén -chaoi a bhfírinníonn tú glacadh leis sin?
                            • - -
                            • -An mar sin a bhíonn i gcónaí? Cén fáth -a gceapann tú gur fíor an foshuíomh anseo?
                            • - -
                            • -Cén fáth go nglacfadh duine leis gur fíor sin?
                            • -
                            - -

                            -Ceisteanna a thóraíonn cúiseanna agus fianaise

                            - -
                              -
                            • -An bhféadfá do chuid cúiseanna a mhíniú -dúinn?
                            • - -
                            • -Cén chaoi a mbaineann sé sin leis an gcás seo?
                            • - -
                            • -An bhfuil aon chúis ann gan brath ar an bhfianaise sin?
                            • - -
                            • -Cé atá in ann fios a bheith acu gur fíor é -sin?
                            • - -
                            • -Ceard a déarfá le duine a dúirt go ____?
                            • - -
                            • -An bhfuil fianaise ag éinne eile le tacú leis an dearacadh -sin?
                            • - -
                            • -Cén réasúnaíocht a bhí agat le teacht -ar an gconclúid sin?
                            • - -
                            • -Cá bhfaigheadh muid amach an fíor é sin?
                            • -
                            - -

                            -Ceisteanna maidir le dearcadh nó le peirspictíocht

                            - -
                              -
                            • -Cé atá á impleachtú agat ansin?
                            • - -
                            • -Nuair a deir tú _____, an bhfuil tú á chur i leith -go _____?
                            • - -
                            • -Ach,dá dtarlódh sé sin, cén toradh a bheadh -air? Cén fáth?
                            • - -
                            • -Cén tionchar a bheadh aige sin?
                            • - -
                            • -An gá go dtarlódh sé sin nó an é nach -bhfuil ann ach seans / dóchúlacht go dtarlódh sé?
                            • - -
                            • -Cén mhalairt atá ann?
                            • - -
                            • -Más fíor _____ agus _____, céard eile a d'fhéadfadh -a bheith fíor?
                            • - -
                            • -Má deirimid go bhfuil ____ eiticiúil, céard faoi _____?
                            • -
                            - -

                            -Ceisteanna a thóraíonn impleachtaí agus iarmhairtí

                            - -
                              -
                            • -Cén chaoi a bhfaighidh muid amach?
                            • - -
                            • -Céard leis a nglacann an cheist seo?
                            • - -
                            • -An gcuirfeadh _____ an cheist seo ar bhealach difriúil?
                            • - -
                            • -An bhfuil réiteach na ceiste seo ag éinne?
                            • - -
                            • -An féidir linn an cheist seo a bhriseadh síos ar chor ar -bith?
                            • - -
                            • -An bhfuil an cheist seo soiléir? An dtuigeann muid í?
                            • - -
                            • -An bhfuil sé éasca nó deacair an cheist seo a fhreagairt? -Cén fáth?
                            • - -
                            • -An aontaíonn muid ar fad gurb í seo an cheist?
                            • - -
                            • -Leis an gceist seo a fhreagairt, cé na ceisteanna eile is gá -dúinn a fhreagairt ar dtús?
                            • - -
                            • -Cén chaoi a gcuirfeadh _____ an saincheist in iúl?
                            • - -
                            • -Cé tábhacht a bhaineann leis an saincheist seo?
                            • - -
                            • -An í seo an cheist is tábhachtaí, nó an bhfuil -focheist ann?
                            • - -
                            • -An bhfeiceann cé mar a cheanglaíonn sé seo le ________?
                            • -
                            - - -
                            - -Ceisteanna curtha in oiriúint ó Paul, -R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing -World: Foundation for Critical Thinking, Santa Rosa, CA. - - - -

                            Tuilleadh eolas maidir -le scríobh

                            - -

                            Tuilleadh eolais -maidir le léamh

                            - - - - - - - diff --git a/lang/ga/help/reading.html b/lang/ga/help/reading.html deleted file mode 100644 index 07e5fe47caa..00000000000 --- a/lang/ga/help/reading.html +++ /dev/null @@ -1,34 +0,0 @@ -

                            Léamh

                            - - - -

                            Agus téacs á léamh go tapa tá sé -an-éasca intinn agus rún an údair a mhíthuiscint.

                            - - - -

                            Le míthuiscintí a sheachaint, léigh go cúramach -a gcuid focal agus déan iarracht an scéal a fheiceáil -trí dhearcadh an údair.

                            - - - -

                            Uaireanta cuidíonn sé machnamh a dhéanamh ar na -rudaí NACH ndúirt an t-údar, nó rudaí -a raibh amhras ina leith - d'fhéadfadh sé seo cuidiú -leat cuimhniú ar cheisteanna ábhartha.

                            - - - -

                            Tuilleadh eolas maidir -le scríobh

                            - -

                            Tuilleadh eolais -maidir le ceisteanna

                            - - - - - - - diff --git a/lang/ga/help/survey/index.html b/lang/ga/help/survey/index.html deleted file mode 100644 index 94496fff69a..00000000000 --- a/lang/ga/help/survey/index.html +++ /dev/null @@ -1,5 +0,0 @@ -

                            Modúl suirbhé

                            - - diff --git a/lang/ga/help/survey/mods.html b/lang/ga/help/survey/mods.html deleted file mode 100644 index b261217719c..00000000000 --- a/lang/ga/help/survey/mods.html +++ /dev/null @@ -1,10 +0,0 @@ -

                             Suirbhéanna

                            -
                              -

                              Tá gléasanna fíoraithe suirbhé sa mhodúl -Suirbhé atá úsáideach le haghaidh measúnaithe -agus fogham a spreagadh i dtimpeallacht ar líne. Féadfaidh -múinteoirí iad seo a úsáid le sonraí -a bhailiú óna gcuid mac léinn a chabhróidh -leo foghlam faoina rang agus a gcuid múinteoireachta a mhachnamh.

                              -
                            - diff --git a/lang/ga/help/teachers.html b/lang/ga/help/teachers.html deleted file mode 100644 index 34d32e777bc..00000000000 --- a/lang/ga/help/teachers.html +++ /dev/null @@ -1,46 +0,0 @@ -

                            Múinteoirí

                            - -

                            Taispeánann an leathanach seo an liosta daoine atá sannaithe -(ag riarthóir an chórais) le bheith ina "múinteoirí" -ar an gcúrsa seo. -

                            - -

                            Féadfaidh tú an fhoirm seo a úsáid le ról -(teideal) a shannadh le gach duine, ar nós"Ollamh", "Teagascóir", -"Cúntóir" agus araile. Feicfear iad seo ar liostáil -chúrsaí an tsuímh agus ar an liosta rannpháirtithe -ar do chúrsa freisin. Má fhágann tú glan an -ról, úsáidfear an focal réamhshocraithe ar -mhúinteoir (faoi mar a shocraigh tú ar an leathanach Socruithe -an Chúrsa).

                            - -

                            Féadfaidh tú fresin ord a chur ar an liosta seo (leis -an príomh-mhúinteoir a chur ag an mbarr, mar shampla). Níl -agat ach uimhreacha a roghnú ón gcolún "Ord". Nuair -a bhíonn "Sábháil athruithe" brúite agat feicfidh -tú an t-ord nua. -

                            - -

                            NÓTA: Tarlaíonn cás speisialta má -roghnaíonn tú "Folaigh" do mhúinteoir. Sa chás -seo NÍ LÉIREOFAR an múinteoir ar an liostáil -don chúrsa ná de rannpháirtithe. Beidh siad "i bhfolach" -ó mhic léinn (muna gcuireann siad teachtaireachtaí -ar an bhfóram srl). -

                            - -

                            You can also choose whether a teacher should have editing rights - on the course. Non-editing teachers could be thought of as course - tutors. They are: -

                              -
                            1. not able to change the structure of the course
                            2. -
                            3. not able to enroll or unenroll students -
                            4. able to grade
                            5. -
                            6. able to facilitate within activities
                            7. -
                            - When assigned to a group, they are only able to perform - task 3 and 4 with that group. -

                            - - - diff --git a/lang/ga/help/writing.html b/lang/ga/help/writing.html deleted file mode 100644 index 06e2bb6f787..00000000000 --- a/lang/ga/help/writing.html +++ /dev/null @@ -1,53 +0,0 @@ -

                            Scríobh

                            - - - -

                            Agus téacs á scríobh agat a bheidh á léamh -ag daoine eile, déan iarracht scríobh go díreach chuig -do lucht éisteachta..

                            - - - -

                            Mínigh do chuid tuairimí chomh soiléir agus chomh -simplí agus is féidir leat le míthuiscintí -a sheachaint. Rud amháin is féidir a dhéanamh ná -focail fhada a sheachaint nuair a dhéanfaidh ceann gairid an chúis.

                            - - - -

                            Sna fóraim cuideoidh sé má choinníonn tú -gairid do chuid teachtaireachtaí poist, agus iad a bheith ábhartha. -Seachas post amháin fada seachránach a scríobh, b'fhéidir -gurbh fhearr roinnt cinn éagsúla gairide a scríobh -(d'fhéadfadh go mbainfidís le fóraim éagsúla -fiú).

                            - - - -

                            Atheagraigh do chuid téacs an oiread agus is gá go mbíonn -sé ceart. Fiú ar phostanna fóraim bíonn maxeditingtime/60) ?> -nóiméad agat i ndiaidh duit é a phostáil le -dul ar ais agus feabhas a chur air.

                            - - - -

                            Nuair a scríobhann tú freagraí chuig daoine eile, -déan iarracht cuimhniú ar cheisteanna spéisiúla -is féidir leat a chur orthu. Cuideoidh sé seo leat féin -agus leis an duine eile smaoineamh (agus foghlam!) faoin ábhar atá -á phlé agaibh.

                            - - - - - -

                            Tuilleadh eolais -maidir le ceisteanna a chur

                            - -

                            Tuilleadh eolais -maidir le léamh

                            - - - - - diff --git a/lang/ga/journal.php b/lang/ga/journal.php deleted file mode 100644 index 83558771fcd..00000000000 --- a/lang/ga/journal.php +++ /dev/null @@ -1,37 +0,0 @@ -teacher maidir le d\'iontráil iriseáin ar \'$a->journal\' - -Féadfaidh tú é a fheiceáil ceangailte le d\'iontráil iriseáin: - - $a->url'; -$string['journalmailhtml'] = 'Tá aiseolas curtha isteach ag $a->teacher maidir le d\'iontráil iriseáin ar \'$a->journal\'

                            -Féadfaidh tú é a fheiceáil ceangailte le url\">d\'iontráil iriseáin.'; -$string['journalname'] = 'Ainm an iriseáin'; -$string['journalquestion'] = 'Ceist iriseáin'; -$string['journalrating1'] = 'Mí-shásúil'; -$string['journalrating2'] = 'Sásúil'; -$string['journalrating3'] = 'Ar fheabhas'; -$string['modulename'] = 'Iriseán'; -$string['modulenameplural'] = 'Iriseáin'; -$string['newjournalentries'] = 'Iontrálacha nua iriseáin'; -$string['noentry'] = 'Gan aon iontráil'; -$string['noratinggiven'] = 'Gan aon rátáil tugtha'; -$string['notopenuntil'] = 'Ní bheidh an t-iriseán seo ar oscailt go dtí'; -$string['notstarted'] = 'Níor thosaigh tú an t-iriseán seo go fóill'; -$string['overallrating'] = 'Rátáil iomlán'; -$string['rate'] = 'Ráta'; -$string['saveallfeedback'] = 'Sábháil mo chuid aiseolais ar fad'; -$string['startoredit'] = 'Tosaigh nó eagraigh m\'iontráil iriseáin'; -$string['viewallentries'] = 'Féach $a iontráil iriseáin'; - -?> diff --git a/lang/ga/label.php b/lang/ga/label.php deleted file mode 100644 index 8c9f534fee9..00000000000 --- a/lang/ga/label.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/lang/ga/lesson.php b/lang/ga/lesson.php deleted file mode 100644 index 13e8187987d..00000000000 --- a/lang/ga/lesson.php +++ /dev/null @@ -1,69 +0,0 @@ -Ar mhaith leat tosú leis an leathanach deiridh a chonaic tú?"; -$string['youranswer'] = "Do fhreagra"; - -?> diff --git a/lang/ga/moodle.php b/lang/ga/moodle.php deleted file mode 100644 index 0a4d984f576..00000000000 --- a/lang/ga/moodle.php +++ /dev/null @@ -1,910 +0,0 @@ -$a'; -$string['activityiscurrentlyhidden'] = 'Tá brón orm, tá an ghníomhaíocht seo faoi cheilt faoi láthair'; -$string['activitymodule'] = 'Modúl gníomhaíochta'; -$string['activityreport'] = 'Tuairisc gníomhaíochta'; -$string['activityselect'] = 'Roghnaigh an ghníomhaíocht seo lena bhogadh áit éigin eile'; -$string['activitysince'] = 'Gníomhaíocht ó $a'; -$string['add'] = 'Cuir leis'; -$string['addadmin'] = 'Cuir riarthóir leis'; -$string['addcreator'] = 'Cuir cruthaitheoir an chúrsa leis'; -$string['added'] = '$a curtha leis'; -$string['addedtogroup'] = 'Curtha le grúpa $a'; -$string['addedtogroupnot'] = 'Níor cuireadh le grúpa $a'; -$string['addedtogroupnotenrolled'] = 'Níor cuireadh le grúpa $a, toisc gan bheith cláraithe ar an gcúrsa'; -$string['addinganew'] = 'Ag cur $a nua leis'; -$string['addinganewto'] = 'Ag cur $a->what nua le $a->to'; -$string['addingdatatoexisting'] = 'Ag cur sonraí lena bhfuil ann'; -$string['addnewcategory'] = 'Cuir catagóir nua leis'; -$string['addnewcourse'] = 'Cuir cúrsa nua leis'; -$string['addnewuser'] = 'Cuir úsáideoir nua leis'; -$string['address'] = 'Seoladh'; -$string['addstudent'] = 'Cuir mac léinn leis'; -$string['addteacher'] = 'Cuir múinteoir leis'; -$string['advancedfilter'] = 'Ardchuardach'; -$string['admin'] = 'Riarthóir'; -$string['adminhelpaddnewuser'] = 'Cruthaigh cuntas nua úsáideora de láimh'; -$string['adminhelpassignadmins'] = 'Féadfaidh riarthóirí aon rud a dhéanamh agus dul aon áit ar an suíomh'; -$string['adminhelpassigncreators'] = 'Féadfaidh cruthaitheoirí cúrsaí nua a chruthú agus múineadh orthu'; -$string['adminhelpassignstudents'] = 'Téigh go cúrsa agus cuir mic léinn leis ón roghchlár an riarthóra'; -$string['adminhelpassignteachers'] = 'Aimsigh cúrsa agus ansin bain leas as an deilbhín le múinteoirí a chur leis'; -$string['adminhelpauthentication'] = 'Féadfaidh tú cuntais úsáideora inmheánacha a úsáid nó bunachair sonraí seachtracha'; -$string['adminhelpbackup'] = 'Cumraigh cúltacaí uathoibrithe agus a sceideal'; -$string['adminhelpconfiguration'] = 'Cumraigh cuma an tsuímh agus cé mar a oibríonn sé'; -$string['adminhelpconfigvariables'] = 'Cumraigh athróga a bhfuil tionchar acu ar oibríocht ginearálta an tsuímh'; -$string['adminhelpcourses'] = 'Sainigh cúrsaí agus catagóirí agus sannaigh daoine leo'; -$string['adminhelpedituser'] = 'Brabhsáil an liosta de chuntais úsáideora agus cuir eagar ar aon cheann acu'; -$string['adminhelplanguage'] = 'Leis an bpacáiste reatha teanga a sheiceáil agus le eagar a chur air'; -$string['adminhelplogs'] = 'Brabhsáil logaí den ghníomhaíocht uile ar an suíomh seo'; -$string['adminhelpmanagedatabase'] = 'Faigh rochtain ar an mbunachar sonraí go díreach (bí cúramach!)'; -$string['adminhelpmanagefilters'] = 'Roghnaigh scagairí téacs agus socruithe gaolmhara'; -$string['adminhelpmanagemodules'] = 'Riar modúil shuiteáilte agus a gcuid socruithe'; -$string['adminhelpsitefiles'] = 'Le comhaid ghinearálta a fhoilsiú nó le cúltacaí seachtracha a uaslódáil'; -$string['adminhelpsitesettings'] = 'Sainigh mar a bhreathnaíonn leathanach tosaigh an tsuímh'; -$string['adminhelpthemes'] = 'Roghnaigh cé mar a bhreathnaíonn an suíomh (dathanna, clónna, srl.)'; -$string['adminhelpuploadusers'] = 'Iompórtáil cuntais úsáideoirí nua ó théacschomhad'; -$string['adminhelpusers'] = 'Sainigh do chuid úsáideoirí agus socraigh fíordheimhniú'; -$string['administration'] = 'Riarachán'; -$string['administrator'] = 'Riarthóir'; -$string['administrators'] = 'Riarthóirí'; -$string['again'] = 'arís'; -$string['all'] = 'Uile'; -$string['allactivities'] = 'Gníomhaíochtaí uile'; -$string['alldays'] = 'Laethanta uile'; -$string['allfieldsrequired'] = 'Réimsí uile ag teastáil'; -$string['allgroups'] = 'Grúpaí uile'; -$string['alllogs'] = 'Logaí uile'; -$string['allow'] = 'Ceadaigh'; -$string['allowguests'] = 'Ceadaíonn an cúrsa seo go n-iontrálfadh aoi-úsáideoirí'; -$string['allownot'] = 'Ná ceadaigh'; -$string['allparticipants'] = 'Rannpháirtithe uile'; -$string['alphabet'] = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; -$string['alphanumerical'] = 'Ní féidir ach litreacha aibítre nó uimhreacha a bheith ann'; -$string['alreadyconfirmed'] = 'Dearbhaíodh clárú cheana'; -$string['always'] = 'I gcónaí'; -$string['answer'] = 'Freagra'; -$string['areyousuretorestorethis'] = 'An mian leat leanacht ar aghaidh?'; -$string['areyousuretorestorethisinfo'] = 'Níos déanaí sa phróiseas seo, beidh rogha agat an cúltaca seo a chur le cúrsa reatha nó cúrsa iomlán nua a chruthú.'; -$string['assessment'] = 'Measúnú'; -$string['assignadmins'] = 'Sannaigh riarthóirí'; -$string['assigncreators'] = 'Sannaigh cruthaitheoirí'; -$string['assignstudents'] = 'Cláraigh micléinn'; -$string['assignstudentsnote'] = 'Nóta: d\'fhéadfadh sé nach gá leas a bhaint as an leathanach seo ós féidir le mic léinn iad féin a chlárú don chúrsa seo.'; -$string['assignstudentspass'] = 'D\'fhéadfadh nach gá duit a dhéanamh ach a fhógairt do do chuid mac léinn cén eoachair chlárúcháin atá ann don chúrsa seo - faoi láthair is é sin: \'$a\''; -$string['assignteachers'] = 'Sannaigh múinteoirí'; -$string['authentication'] = 'Fíordheimhniú'; -$string['autosubscribe'] = 'Liostáil go huath-oibríoch d\'fhóraim'; -$string['autosubscribeno'] = 'Ná déan: ná liostáil mé go huath-oibríoch d\'fhóraim'; -$string['autosubscribeyes'] = 'Déan: nuair a phostálaim, liostáil mé don fhóram sin'; -$string['availability'] = 'Infhaighteacht'; -$string['availablecourses'] = 'Cúrsaí Atá Ar Fáil'; -$string['backup'] = 'Cúltaca'; -$string['backupcoursefileshelp'] = 'Má cumasaítear, cuirfear comhaid an chúrsa san áireamh i gcúltacaí uathoibríocha'; -$string['backupdate'] = 'Dáta an chúltaca'; -$string['backupdetails'] = 'Sonraí Chúltaca'; -$string['backupfilename'] = 'cúltaca do'; -$string['backupfinished'] = 'Cúltaca críochnaithe go rathúil'; -$string['backupincludemoduleshelp'] = 'Roghnaigh an mian leat modúil an chúrsa, le nó gan sonraí úsáideora, a chur san áireamh i gcúltacaí uathoibríocha'; -$string['backupkeephelp'] = 'Cé mhéid cúltaca nua is mian leat a choinneáil do gach cúrsa? (scriosfar na sean chinn go huathoibríoch)'; -$string['backuplogshelp'] = 'Má cumasaítear, cuirfear loganna na gcúrsaí san áireamh sa chúltacú uathoibríoch'; -$string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['backuporiginalname'] = 'Ainm Cúltaca'; -$string['backupsavetohelp'] = 'Cosán iomlán chuig an gcomhadlann inar mian leat na comhaid cúltaca a shábháil
                            (fág glan le sábháil sa comhadlann réamhshocraithe dá chúrsa)'; -$string['backupuserfileshelp'] = 'Roghnaigh ar cheart comhaid úsáideora (msh íomhánna próifíle) a chur san áireamh i gcúltacaí uathoibríocha'; -$string['backupusershelp'] = 'Roghnaigh an mian leat gach úsáideoir ar an bhfreastalaí a chur san áireamh nó na húsáideoirí is gá do gach cúrsa amháin'; -$string['backupversion'] = 'Leagan Cúltaca'; -$string['bycourseorder'] = 'De réir oird an chúrsa'; -$string['cancel'] = 'Cealaigh'; -$string['categories'] = 'Catagóirí cúrsa'; -$string['category'] = 'Catagóir'; -$string['categoryadded'] = 'Cuireadh an chatagóir \'$a\' leis'; -$string['categorydeleted'] = 'Scriosadh an chatagóir \'$a\''; -$string['categoryduplicate'] = 'Tá catagóir dar teideal \'$a\' ann cheana!'; -$string['changedpassword'] = 'Pasfhocal athraithe'; -$string['changepassword'] = 'Athraigh pasfhocal'; -$string['changessaved'] = 'Athruithe sábháilte'; -$string['checkingbackup'] = 'Cúltaca á sheiceáil'; -$string['checkingcourse'] = 'Cúrsa á sheiceáil'; -$string['checkinginstances'] = 'Cásanna á seiceáil'; -$string['checkingsections'] = 'Rannóga á seiceáil'; -$string['checklanguage'] = 'Seiceáil teanga'; -$string['choose'] = 'Roghnaigh'; -$string['choosecourse'] = 'Roghnaigh cúrsa'; -$string['chooselivelogs'] = 'Nó breathnaigh ar an ngníomhaíocht reatha'; -$string['chooselogs'] = 'Roghnaigh cé na loganna ar mian leat iad a fheiceáil'; -$string['choosereportfilter'] = 'Roghnaigh scagaire don tuairisc'; -$string['choosetheme'] = 'Roghnaigh téama'; -$string['chooseuser'] = 'Roghnaigh úsáideoir'; -$string['city'] = 'Cathair/baile'; -$string['cleaningtempdata'] = 'Sonraí sealadacha á nglanadh'; -$string['clicktochange'] = 'cliceáil len é a athrú'; -$string['closewindow'] = 'Dún an fhuinneog seo'; -$string['comparelanguage'] = 'Cóimheas agus eagraigh an teanga reatha'; -$string['complete'] = 'Iomlán'; -$string['configallowunenroll'] = 'Má socraítear é seo chuig \'Tá\', beidh cead ag mic léinn iad féin a bhaint den rolla do chúrsaí nuair is mian leo. Seachas sin ní ceadaítear é sin agus beidh smacht ag múinteoirí agus ag riarthóirí amháin ar an ngnáthamh seo.'; -$string['configcachetext'] = 'Do shuíomhanna móra nó do shuíomhanna a úsáideann scagairí téacs, d\'fhéadfadh an socrú seo an luas a fheabhsú go mór. Coinneofar cóipeanna de théacsanna ina bhfoirm próiseáilte ar feadh an tréimhse sonraithe anseo. Má socraítear ró-bheag é seo,d\'fhéadfaí cúrsaí a mhoilliú roinnt, ach má socraítear ró-mhór é d\'fhéadfadh sé go nglacfadh sé ró-fhada athnuachan (le nascanna nua, mar shampla).'; -$string['configcountry'] = 'Má socraíonn tú tír anseo, roghnófar an tír seo mar réamhshocrú ar chuntais nua úsáideora. Le go mbeadh ar úsáideoirí tír a roghnú, níl agat ach é seo a fhágáil gan socrú.'; -$string['configdebug'] = 'Má lasann tú é seo, méadófar tuairisciú earráide PHP le go gclófar níor mó rabhaidh. Níl sé seo úsáideach ach amháin do fhorbróirí.'; -$string['configdeleteunconfirmed'] = 'Má tá tú ag úsáid fíordheimhnithe r-phoist, seo an tréimhse ina nglacfar le freagra ó úsáideoirí. I ndiaidh an tréimhse seo, scriostar seanchuntais nár deimhníodh.'; -$string['configerrorlevel'] = 'Roghnaigh an líon rabhadh ar mian leat iad a fheiceáil. Normalach an rogha is fearr den ghnáth.'; -$string['configfilteruploadedfiles'] = 'Má cumasaítear an socrú seo, déanfaidh Moodle próiseáil ar gach comhad HTML agus téacs leis na scagairí sula léiríonn sé iad.'; -$string['configforcelogin'] = 'De ghnáth, féadfaidh daoine an leathanach tosaigh agus an liosta cúrsaí(ach ní na cúrsaí) gan logáil isteach ar an suíomh. Más mian leat daoine a fhórsáil le logáil isteach sula ndéanann siad AON RUD ar an suíomh, ba cheart duit an réamhshocrú seo a chumasú.'; -$string['configframename'] = 'Má tá Moodle á leabú agat i fráma gréasáin, cuir ainm an fhráma sin anseo. Seachas sin, ba cheart é a fhágáil mar \'_barr\''; -$string['configfullnamedisplay'] = 'Sainíonn sé seo mar a léireofar ainmneach nuair a léirítear ina n-iomláine iad. Ar formhór suíomhanna aonteangacha, is é an socrú is éasca ná an réamhshocrú \'Céadainmneacha + Sloinne\', ach b\'fhéidir go roghnófá sloinnte a cheilt ar fad, nó é a fhágáil faoin bpacáiste teanga é a shocrú (bíonn coinbhinsiúin éagsúla i dteangacha éagsúla).'; -$string['configgdversion'] = 'Sonraigh an leagan de GD atá suiteáilte. An leagan a léirítear mar réamhshocrú an leagan a aimsíodh go huathoibríodh. Ná hathraigh é seo muna bhfuil tú cinnte go bhfuil fios do ghnó agat.'; -$string['confightmleditor'] = 'Roghnaigh an ceadaítear an t-eagarthóir téacs HTML atá leabaithe a úsáid nó nach ceadaítear. Fiú má roghnaíonn tú é a cheadú, ní fheicfear an t-eagarthóir ach amháin má tá an brabhsálaí comhoiriúnach. Féadfaidh úsáideoirí roghnú gan é a úsáid freisin.'; -$string['configidnumber'] = 'Sonraíonn an rogha seo cé acu (a) nach lorgófar uimhir aitheantais ó Úsáideoirí ar chor ar bith, nó (b) go lorgófar uimhir aitheantais ó Úsáideoirí ach gur féidir leo é a fhágáil glan nó (c) go lorgófar uimhir aitheantais ó Úsáideoirí agus nach ceadaítear é a fhágáil glan. Má tugtar í, léirítear uimhir aitheantais an Úsáideora ina bPróifíl.'; -$string['configintro'] = 'Ar an leathanach seo féadfaidh tú líon athróga cumraíochta a shonrú a chuidíonn le Moodle feidhmiú i gceart ar do fhreastalaí. Ná bí ró-bhuartha faoi - oibríonn na réamhshocraithe go breá de ghnáth agus féadfaidh tú i gcónaí teacht ar ais chuig an leathanach seo ar ball agus na socraithe seo a athrú.'; -$string['configintroadmin'] = 'Ar an leathanach seo ba cheart cumraíocht a dhéanamh ar do phríomhchuntas riarthóra a mbeidh smacht iomlán aige ar an suíomh. Cinntigh go dtugann tú ainm úsáideora agus pasfhocal slán dó, maraon le seoladh bailí r-phoist. Féadfaidh tú a thuilleadh cuntais riarthóra a chruthú ar ball.'; -$string['configintrosite'] = 'Ceadaíonn an leathanach seo duit leathanach tosaigh agus ainm an tsuímh nua seo a chumrú. Féadfaidh tú filleadh ar seo ar ball leis na socruithe seo a athrú am ar bith ach an nasc \'Socruithe Suímh\' ar an leathanach baile a leanúint.'; -$string['configlang'] = 'Roghnaigh teanga réamhshocraithe don suíomh ar fad. Féadfaidh úsáideoirí an socrú seo a shárú ar ball.'; -$string['configlangdir'] = 'Priontáiltear formhór teangach clé go deas, ach priontáiltear roinnt ar nós teangacha Arabacha nó Eabhracha ó dheas go clé.'; -$string['configlanglist'] = 'Fág glan é seo le ligean do dhaoine aon teanga sa suiteáil seo de Moodle a roghnú. Is féidir leat an roghchlár a ghiorrú, áfach, más mian leat, trí liosta deighilte ag camóga a chur isteach de na teangacha atá uait. Mar shampla: en,es_es,fr,it'; -$string['configlangmenu'] = 'Roghnaigh ar mhaith leat an gnáth-roghchlár teanga a léiriú ar an leathanach baile, ar an leathanach logála, srl, nó nár mhaith. Níl aon tionchar aige seo ar inniúlacht an úsáideora an teanga is fearr leo a shocrú ina bpróifíl féin.'; -$string['configlocale'] = 'Roghnaigh ceantar don suíomh ar fad - beidh tionchar aige seo ar fhormáid agus teanga na dátaí. Ní mór duit na sonraí ceantair seo a bheith suiteáilte ar do chóras oibriúcháin. (m.sh. en_US nó es_ES). Muna bhfuil a fhios agat céard le roghnú, fág glan é.'; -$string['configloglifetime'] = 'Sonraíonn sé seo an fhaid is mian leat logaí a choinneáil maidir le gníomhaíocht úsáideora. Scriosfar go huathoibríoch aon logaí atá níos sine ná seo. Is fearr logaí a choinneáil chomh fada agus is féidir ar fhaitíos go mbeidís ag teastáil uait, ach má tá freastalaí an-ghnóthach agat agus go bhfuil fadhbanna feidhmíochta agat, b\'fhéidir gurbh fhearr eat saolré na logaí a laghdú.'; -$string['configlongtimenosee'] = 'Muna bhfuil mic léinn tar éis logáil isteach le tréimhse fada, díliostáiltear iad go huathoibríoch ó chúrsaí. Socraítear anseo cé chomh fada is atá an tréimhse sin.'; -$string['configmaxbytes'] = 'Sainítear anseo an uasmhéid is féidir a bheith i gcomhaid a uaslódáiltear tríd an suíomh ar fad. Cuireann an socrú PHP upload_max_filesize agus an socrú Apache LimitRequestBody teorainn leis an socrú seo. Agus as sin, cuireann maxbytes teorainn leis an réimse méideanna a ceadítear ag leibhéal an chúrsa nó an mhodúil.'; -$string['configmaxeditingtime'] = 'This specifies the amount of time people have to re-edit forum postings, journal feedback etc. Usually 30 minutes is a good value.'; -$string['configopentogoogle'] = 'If you enable this setting, then Google will be allowed to enter your site as a Guest. In addition, people coming in to your site via a Google search will automatically be logged in as a Guest. Note that this only provides transparent access to courses that already allow guest access.'; -$string['configproxyhost'] = 'If this server needs to use a proxy computer (eg a firewall) to access the Internet, then provide the proxy hostname and port here. Otherwise leave it blank.'; -$string['configsecureforms'] = 'Moodle can use an additional level of security when accepting data from web forms. If this is enabled, then the browser\'s HTTP_REFERER variable is checked against the current form address. In a very few cases this can cause problems if the user is using a firewall (eg Zonealarm) configured to strip HTTP_REFERER from their web traffic. Symptoms are getting \'stuck\' on a form. If your users are having problems with the login page (for example) you might want to disable this setting, although it might leave your site more open to brute-force password attacks. If in doubt, leave this set to \'Yes\'.'; -$string['configsessioncookie'] = 'Saincheapann an socrú seo ainm an fhianáin a úsáidtear le haghaidh seisiúin Moodle. Tá sé seo roghnach, agus níl sé úsáideach ach amháin lena sheachaint go meascfaí fianáin nuair a bhíonn níos mó ná cóip amháin de Moodle ag rith ón suíomh gréasáin céanna.'; -$string['configsessiontimeout'] = 'Má bhíonn daoine atá logáilte isteach ar an suíomh díomhaoin ar feadh i bhfad (gan leathanaigh a lódáil) logáiltear amach go huathoibríoch iad (cuirtear críoch lena seisiún). Socraíonn an t-athróg seo cé chomh fada is a bheidh an tréimhse sin.'; -$string['configslasharguments'] = 'Soláthraítear comhaid (íomhánna, uaslódáil, srl) trí scriopt a úsáideann \'argóintí slaise\' (an dara rogha anseo). Ceadaíonn an modh seo gur féidir comhaid a chur i dtaisce níos éasca i mbrabhsálaithe gréasáin, i seachfhreastalaithe srl. Go mí-ámharach, ní cheadaíonn roinnt freastalaithe PHP am modh seo, mar sin má bhíonn fadhbanna agat breathnú ar chomhaid nó ar íomhánna uaslódáilte (msh pictiúir úsáideora), socraigh an t-athróg seo ag an gcéad rogha'; -$string['configsmtphosts'] = 'Tabhair ainm iomlán freastalaí áitiúil SMTP amháin nó níos mó ar cheart do Moodle é a úsáid le r-phost a sheoladh (msh \'mail.a.com\' nó \'mail.a.com;mail.b.com\'). Má fhágann tú glan é, úsáidfidh Moodle an modh PHP réamhshocraithe le r-phost a sheoladh.'; -$string['configsmtpuser'] = 'Má tá freastalaí SMTP sonraithe agat thuas, agus go bhfuil fíordheimhniú ag teastáil ón bhfreastalaí, cuir isteach an t-ainm úsáideora agus an pasfhocal anseo.'; -$string['configteacherassignteachers'] = 'An bhfuil cead ag gnáthmhúinteoirí cead a bheith acu múinteoirí eile a shannadh laistigh de chúrsaí a mhúineann siad? Más \'Níl\' an freagra, ní féidir ach le cruthaitheoirí cúrsaí agus riarthóirí múinteoirí a shannadh.'; -$string['configtimezone'] = 'Is féidir an crios ama a réamhshocrú anseo. Níl anseo ach an RÉAMHSHOCRÚ don chrios ama le dátaí a léiriú - féadfaidh gach úsáideoir é seo a shárú trí é a shocrú ina phróifíl féin. trí Má cuirtear \"Am an fhreastalaí\" isteach anseo, réamhshocrófar Moodle go dtí socrú an chórais oibriúcháin atá ag an bhfreastalaí, ach má cuirtear \"Am an fhreastalaí\" isteach i bpróifíl an úsáideora réamhshocrófar an t-úsáideoir go dtí an socrú seo i leith crios ama.'; -$string['configunzip'] = 'Léirigh suíomh do chláir dízipeála (Unix amháin, roghnach). Má sonraítear é, úsáidfear é seo le zipchartlann ar an bhfreastalaí a dhíphacáil. Má fhágann tú glan é, úsáidfidh Moodle gnáthaimh inmheánacha.'; -$string['configuration'] = 'Cumraíocht'; -$string['configvariables'] = 'Athróga'; -$string['configwarning'] = 'Bí cúramach agus na socraithe seo á mionathrú - d\'fhéadfadh luachannaaisteacha fadhbanna a chothú.'; -$string['configzip'] = 'Léirigh suíomh do zipchláir (Unix amháin, roghnach). Má sonraítear é, úsáidfear é seo le zipchartlann a chruthú ar an bhfreastalaí. Má fhágann tú glan é, úsáidfidh Moodle gnáthaimh inmheánacha.'; -$string['confirm'] = 'Dearbhaigh'; -$string['confirmed'] = 'Dearbhaíodh do chlárúchán'; -$string['confirmednot'] = 'Níor dearbhaíodh go fóill do chlárúchán!'; -$string['continue'] = 'Lean ar aghaidh'; -$string['cookiesenabled'] = 'Níor mór fianáin a chumasú i do bhrabhsálaí'; -$string['copy'] = 'cóipeáil'; -$string['copyingcoursefiles'] = 'Cóipeáil comhaid an chúrsa'; -$string['copyinguserfiles'] = 'Cóipeáil comhaid úsáideora'; -$string['copyingzipfile'] = 'Cóipeáil zipchomhad'; -$string['copyrightnotice'] = 'Fógra cóipchirt'; -$string['country'] = 'Tír'; -$string['course'] = 'Cúrsa'; -$string['courseavailable'] = 'Tá an cúrsa seo ar fáil do mhic léinn'; -$string['courseavailablenot'] = 'Níl an cúrsa seo ar fáil do mhic léinn'; -$string['coursebackup'] = 'Cúltaca an chúrsa'; -$string['coursecategories'] = 'Catagóirí cúrsaí'; -$string['coursecategory'] = 'Catagóir cúrsa'; -$string['coursecreators'] = 'Cruthaitheoirí cúrsaí'; -$string['coursefiles'] = 'Comhaid cúrsaí'; -$string['courseformats'] = 'Formáidí cúrsaí'; -$string['coursegrades'] = 'Gráid Cúrsaí'; -$string['courseinfo'] = 'Faisnéis cúrsa'; -$string['courserestore'] = 'Athchuir cúrsa'; -$string['courses'] = 'Cúrsaí'; -$string['courseupdates'] = 'Uasdhátú cúrsaí'; -$string['courseuploadlimit'] = 'Teorainn uaslódála cúrsaí'; -$string['create'] = 'Cruthaigh'; -$string['createaccount'] = 'Cruthaigh mo chuntas nua'; -$string['createfolder'] = 'Cruthaigh fillteán in $a'; -$string['createuserandpass'] = 'Cruthaigh ainm úsáideora agus pasfhocal nua le logáil isteach leo'; -$string['createziparchive'] = 'Cruthaigh zipchartlann'; -$string['creatingcategoriesandquestions'] = 'Catagóirí agus ceisteanna á gcruthú'; -$string['creatingcoursemodules'] = 'Modúil cúrsa á gcruthú'; -$string['creatingevents'] = 'Imeachtaí á gcruthú'; -$string['creatinggroups'] = 'Grúpaí á gcruthú'; -$string['creatinglogentries'] = 'Iontrálacha loga á gcruthú'; -$string['creatingnewcourse'] = 'Cúrsa nua á chruthú'; -$string['creatingscales'] = 'Scálaí á gcruthú'; -$string['creatingsections'] = 'Rannóga á gcruthú'; -$string['creatingtemporarystructures'] = 'Struchtúir sealadacha á gcruthú'; -$string['creatingusers'] = 'Úsáideoirí á gcruthú'; -$string['creatingxmlfile'] = 'Comhad XML á chruthú'; -$string['currentcourseadding'] = 'Cúrsa reatha, sonraí á chur leis'; -$string['currentcoursedeleting'] = 'Cúrsa reatha, á scrios ar dtús'; -$string['currentlanguage'] = 'Teanga reatha'; -$string['currentlocaltime'] = 'an t-am i do cheantar-sa'; -$string['currentrelease'] = 'Faisnéis faoin eisiúint reatha'; -$string['currentversion'] = 'Leagan reatha'; -$string['databasechecking'] = 'Bunachar sonraí Moodle á nuashonrú ó leagan $a->oldversion go leagan $a->newversion...'; -$string['databaseperformance'] = 'Feidhmíocht an bhunachar sonraí'; -$string['databasesetup'] = 'Bunachar sonraí socraithe'; -$string['databasesuccess'] = 'Uasghrádú rathúil ar an mbunachar sonraí'; -$string['databaseupgradebackups'] = '$a an leagan cúltaca anois'; -$string['databaseupgrades'] = 'Bunachar sonraí á uasghrádú'; -$string['datemostrecentfirst'] = 'Dáta - is nua ar dtús'; -$string['datemostrecentlast'] = 'Dáta - is nua ar deireadh'; -$string['day'] = 'lá'; -$string['days'] = 'lá/laethanta'; -$string['defaultcoursefullname'] = 'Cúrsa Ainmiomlán 101'; -$string['defaultcourseshortname'] = 'CA101'; -$string['defaultcoursestudent'] = 'Mac Léinn'; -$string['defaultcoursestudents'] = 'Mac/Mic Léinn'; -$string['defaultcoursesummary'] = 'Scríobh alt ghairid spéisiúil anseo a mhíníonn céard faoi an cúrsa seo'; -$string['defaultcourseteacher'] = 'Múínteoir'; -$string['defaultcourseteachers'] = 'Múinteoir(í)'; -$string['delete'] = 'Scrios'; -$string['deleteall'] = 'Scrios uile'; -$string['deletecheck'] = 'Scrios $a ?'; -$string['deletecheckfiles'] = 'An bhfuil tú cinnte gur mian leat na comhaid seo a scrios?'; -$string['deletecheckfull'] = 'An bhfuil tú cinnte gur mian leat $a a scrios?'; -$string['deletecheckwarning'] = 'Tá tú ar tí na comhaid seo a scrios'; -$string['deletecompletely'] = 'Scrios go hiomlán'; -$string['deletecourse'] = 'Scrios cúrsa'; -$string['deletecoursecheck'] = 'An bhfuil cinnte gur mian leat an cúrsa seo a scrios go hiomlán maraon leis na sonraí ar fad atá ann?'; -$string['deleted'] = 'Scriosta'; -$string['deletedactivity'] = 'Scriosadh $a'; -$string['deletedcourse'] = 'Scriosadh $a go hiomlán'; -$string['deletednot'] = 'Níorbh fhéidir $a a scrios!'; -$string['deleteselected'] = 'Scrios a bhfuil roghnaithe'; -$string['deletingcourse'] = '$a á scrios'; -$string['deletingexistingcoursedata'] = 'Sonraí reatha an chúrsa á scrios'; -$string['deletingolddata'] = 'Sean-sonraí á scrios'; -$string['department'] = 'Roinn'; -$string['description'] = 'Cur Síos'; -$string['disable'] = 'Díchumasaigh'; -$string['displayingfirst'] = 'Níl ach an chéad $a->count $a->things á léiriú'; -$string['displayingrecords'] = 'Displaying $a records'; -$string['displayingusers'] = 'Úsáideoirí $a->start go $a->end á léiriú'; -$string['documentation'] = 'Doiciméid Moodle'; -$string['donotask'] = 'Ná cuir ceist'; -$string['down'] = 'Síos'; -$string['downloadexcel'] = 'Íoslódáil i bhformád Excel'; -$string['downloadtext'] = 'Íoslódáil i bhformáid téacs'; -$string['doyouagree'] = 'An bhfuil na coinníollacha seo léite agus tuigthe agat?'; -$string['edit'] = 'Cuir eagar ar $a'; -$string['editcoursesettings'] = 'Cuir eagar ar réamhshocruithe an chúrsa'; -$string['editgroupprofile'] = 'Cuir eagar ar phróifíl ghrúpa'; -$string['editinga'] = 'Ag cur eagar ar $a'; -$string['editmyprofile'] = 'Cuir eagar ar phróifíl'; -$string['editsummary'] = 'Cuir eagar ar achoimre'; -$string['editthisactivity'] = 'Cuir eagar ar an ngníomhaíocht seo'; -$string['editthiscategory'] = 'Cuir eagar ar an gcatagóir seo'; -$string['edituser'] = 'Cuir eagar ar chuntais úsáideora'; -$string['email'] = 'Seoladh r-phoist'; -$string['emailagain'] = 'R-phost (arís)'; -$string['emailconfirm'] = 'Dearbhaigh do chuntas'; -$string['emailconfirmation'] = 'Dia duit $a->firstname, - -Lorgaíodh cuntas nua ar \'$a->sitename\' -ag baint úsáide as do sheoladh r-phoist. - -Le do chuntas nua a dhearbhú, téigh chuig an seoladh gréasáin seo led\' thoil: - -$a->link - -I bhformhór cláracha r-phoist ba cheart go léireofaí é seo mar nasc gorm ar féidir leat -cliceáil air. Muna n-oibríonn sé sin, gearr agus greamaigh an seoladh isteach ag líne an tseolta -ar do bhrabhsálaí. - -Má tá cabhair uait, déan teagmháil led\' thoil le riarthóir an tsuímh, -$a->admin'; -$string['emailconfirmationsubject'] = '$a: dearbhú cuntais'; -$string['emailconfirmsent'] = 'Ba cheart r-phost a bheith seolta chuig do sheoladh ag $a -
                            Tá treoracha éasca ann le do chlárúchán a chur i gcrích. -
                            Má bhíonn deacrachtaí ar bith agat, déan teagmháil le riarthóir an tsuímh.'; -$string['emaildisable'] = 'Tá an seoladh r-phoist seo míchumasaithe.'; -$string['emaildisplay'] = 'Léiriú r-phoist'; -$string['emaildisplaycourse'] = 'Ná lig ach do bhaill eile an chúrsa mo sheoladh r-phoist a fheiceáil'; -$string['emaildisplayno'] = 'Folaigh mo sheoladh ceart r-phoist ó gach duine'; -$string['emaildisplayyes'] = 'Lig do gach duine mo sheoladh r-phoist a fheiceáil'; -$string['emailenable'] = 'Tá an seoladh r-phoist seo cumasaithe.'; -$string['emailexists'] = 'Tá an seoladh r-phoist seo cláraithe cheana.'; -$string['emailformat'] = 'Formáid r-phoist'; -$string['emailmustbereal'] = 'Nóta: ní mór dod\' sheoladh r-phoist beith fíor'; -$string['emailpasswordconfirmation'] = 'Dia duit, $a->firstname, - -Lorg duine éigin (tú féin, gach seans) pasfhocal nua dod\' chuntas ar \'$a->sitename\'. - -Chun é seo a dhearbhú agus pasfhocal nua a fháil ar r-phost, téigh chuig an seoladh gréasáin seo led\' thoil: - -$a->link - -I bhformhór cláracha r-phoist ba cheart go léireofaí é seo mar nasc gorm ar féidir leat -cliceáil air. Muna n-oibríonn sé sin, gearr agus greamaigh an seoladh isteach ag líne an tseolta -ar do bhrabhsálaí. - -Má tá cabhair uait, déan teagmháil led\' thoil le riarthóir an tsuímh, -$a->admin'; -$string['emailpasswordconfirmationsubject'] = '$a: dearbhú athrú pasfhocail'; -$string['emailpasswordconfirmsent'] = 'Ba cheart r-phost a bheith seolta chuig do sheoladh ag $a. -
                            Tá treoracha éasca ann leis an athrú pasfhocail a dhearbhú agus a chur i gcrích. -Má bhíonn deacracht fós agat, téigh i dteagmháil le riarthóir an tsuímh.'; -$string['emailpasswordsent'] = 'Go raibh maith agat as athrú an phasfhocail a dhearbhú. -
                            Seoladh r-phost le do phasfhocal nua chuig do sheoladh ag $a->email. -
                            Gineadh go huathoibríoch an pasfhocal - b\'fhéidir gur mhaith leat an -link\">pasfhocal a athrú go rud éigin a bheadh níos éasca cuimhniú air.'; -$string['enable'] = 'Cumasaigh'; -$string['enrolledincourse'] = 'Cláraithe ar an gcúrsa \"$a\"'; -$string['enrolledincoursenot'] = 'Níl cláraithe ar an gcúrsa \"$a\"'; -$string['enrolmentconfirmation'] = 'Tá tú ar tí tú féin a chlárú mar bhall ar an gcúrsa seo.
                            An bhfuil tú cinnte gur mian leat é seo a dhéanamh?'; -$string['enrolmentkey'] = 'Eochair chlárúcháin'; -$string['enrolmentkeyfrom'] = 'Tá \'eochair chlárúcháin\' ag teastáil don chúrsa seo - pasfhocal aon-uaire
                            -ba cheart a bheith faighte agat ó $a'; -$string['enrolmentkeyhint'] = 'Bhí an eochair chlárúcháin sin mícheart, bain triail eile as, led\' thoil.
                            -(Seo leid - tosaíonn sé le \'$a\')'; -$string['entercourse'] = 'Cliceáil le hiontráil isteach ar an gcúrsa seo'; -$string['enteremailaddress'] = 'Cuir isteach do sheoladh r-phoist le do phasfhocal a athshocrú agus le go seolfar chugat an pasfhocal nua ar r-phost.'; -$string['error'] = 'Earráid'; -$string['errortoomanylogins'] = 'Tá brón, tá tú tar éis dul thar an líon ceadaithe iarrachtaí le logáil isteach. Aththosaigh do bhrabhsálaí.'; -$string['errorwhenconfirming'] = 'Níor dearbhaíodh tú go fóill toisc gur tharla earráid. Má chliceáil tú ar nasc in r-phost le teacht chuig an bpointe seo, cinntigh nach raibh an líne i do r-phost briste nó fillte. B\'fhéidir go mbeadh ort an nasc a ghearradh agus a ghreamú le go n-oibreoidh sé i gceart.'; -$string['executeat'] = 'Rith ag'; -$string['existing'] = 'Existing'; -$string['existingadmins'] = 'Riarthóirí ar ann dóibh'; -$string['existingcourse'] = 'Cúrsa ar ann dó'; -$string['existingcourseadding'] = 'Cúrsa ar ann dó, sonraí á chur leis'; -$string['existingcoursedeleting'] = 'Cúrsa ar ann dó, á scrios i dtosach'; -$string['existingcreators'] = 'Cruthaitheoirí cúrsa ar ann dóibh'; -$string['existingstudents'] = 'Mic léin cláraithe'; -$string['existingteachers'] = 'Múinteoirí ar ann dóibh'; -$string['feedback'] = 'Aiseolas'; -$string['filemissing'] = 'Tá $a ar iarraidh'; -$string['files'] = 'Comhaid'; -$string['filesfolders'] = 'Comhaid/fillteáin'; -$string['filloutallfields'] = 'Líon isteach na réimsí ar fad ar an bhfoimr seo led\' thoil'; -$string['findmorecourses'] = 'Aimsigh a thuilleadh cúrsaí...'; -$string['firstdayofweek'] = '0'; //0-Domhnach, 1-Luan,....6-Sathairn -$string['firstname'] = 'Céadainm'; -$string['firsttime'] = 'An é seo do chéad uair anseo?'; -$string['followingoptional'] = 'Tá na míreanna seo roghnach'; -$string['followingrequired'] = 'Tá na míreanna seo éigeanntach'; -$string['force'] = 'Fórsáil'; -$string['forcelanguage'] = 'Fórsáil teanga'; -$string['forcedmode'] = 'modh fórsála'; -$string['forceno'] = 'Ná fórsáil'; -$string['forgotten'] = 'An bhfuil dearmad déanta agat ar do ainm úsáideora nó ar do phasfhocal?'; -$string['format'] = 'Formáid'; -$string['formathtml'] = 'Formáid HTML'; -$string['formatplain'] = 'Formáid gnáththéacs'; -$string['formatsocial'] = 'Formáid shóisialta'; -$string['formattext'] = 'Uathfhormáidiú Moodle'; -$string['formattexttype'] = 'Ag formáidiú'; -$string['formattopics'] = 'Formáid ábhar'; -$string['formatweeks'] = 'Formáid sheachtainiúil'; -$string['formatwiki'] = 'Formáid Wiki'; -$string['from'] = 'Ó'; -$string['frontpagecategorynames'] = 'Taispeáin liosta catagóirí'; -$string['frontpagecourselist'] = 'Taispeáin liosta cúrsaí'; -$string['frontpagedescription'] = 'Cur síos ar an leathanach tosaigh'; -$string['frontpageformat'] = 'Formáid an leathanaigh tosaigh'; -$string['frontpagenews'] = 'Taispeáin míreanna nuachta'; -$string['fulllistofcourses'] = 'Gach cúrsa'; -$string['fullname'] = 'Ainm iomlán'; -$string['fullnamedisplay'] = '$a->firstname $a->lastname'; -$string['fullprofile'] = 'Próifíl iomlán'; -$string['fullsitename'] = 'Ainm iomlán an tsuímh'; -$string['gd1'] = 'Tá GD 1.x suiteáilte'; -$string['gd2'] = 'Tá GD 2.x suiteáilte'; -$string['gdneed'] = 'Ní mór GD a bheiths uiteáilte leis an ngraf seo a fheiceáil'; -$string['gdnot'] = 'Níl GD suiteáilte'; -$string['gpl'] = 'Cóipcheart (C) 1999-2004 Martin Dougiamas (http://dougiamas.com) - -Bogearra saor is ea an clár seo; féadfaidh tú é a athdháileadh agus/nó é a mhionathrú de réir théarmaí an Cheadúnais Pobail Ghinearálta GNU mar atá foilsithe ag an Free Software Foundation; leagan 2 den Cheadúnas, nó -(más mian leat) leagan ar bith níos nua. - -Dáiltear an clár seo le dóchas go mbeidh sé úsáideach, -ach GAN AON BHARÁNTA; gan fiú baránta impleachtaithe SODHÍOLTACHTA ná OIRIÚNACHTA LE hAGHAIDH CUSPÓRA AR LEITH. Féach an Ceadúnas Pobail Ghinearálta GNU (General Public License) le teacht ar a thuilleadh eolais: - -http://www.gnu.org/copyleft/gpl.html'; -$string['grade'] = 'Grád'; -$string['grades'] = 'Gráid'; -$string['group'] = 'Grúpa'; -$string['groupadd'] = 'Cuir grúpa nua leis'; -$string['groupaddusers'] = 'Cuir an méid roghnaithe le grúpa'; -$string['groupinfo'] = 'Faisnéis faoin ngrúpa roghnaithe'; -$string['groupinfomembers'] = 'Faisnéis faoi bhaill roghnaithe'; -$string['groupinfopeople'] = 'Faisnéis faoi dhaoine roghnaithe'; -$string['groupmemberssee'] = 'Féach baill an ghrúpa'; -$string['groupmembersselected'] = 'Baill den ghrúpa roghnaithe'; -$string['groupmode'] = 'Modh grúpa'; -$string['groupmodeforce'] = 'Fórsáil modh grúpa'; -$string['groupmy'] = 'Mo ghrúpa-sa'; -$string['groupnonmembers'] = 'Daoine nach bhfuil i ngrúpa'; -$string['groupnotamember'] = 'Tá brón orm, níl tú id\' bhall den ghrúpa sin'; -$string['grouprandomassign'] = 'Sann go randamach gach duine le grúpaí'; -$string['groupremove'] = 'Bain an grúpa roghnaithe'; -$string['groupremovemembers'] = 'Bain na baill roghnaithe'; -$string['groups'] = 'Grúpaí'; -$string['groupsnone'] = 'Ní ann do ghrúpaí'; -$string['groupsseparate'] = 'Scar grúpaí'; -$string['groupsvisible'] = 'Grúpaí feiceálach'; -$string['guestskey'] = 'Ceadaigh aíonna a bhfuil an eochair acu'; -$string['guestsno'] = 'Ná lig isteach aíonna'; -$string['guestsnotallowed'] = 'Tá brón orm, ní cheadaíonn \'$a\' d\'aíonna iontráil.'; -$string['guestsyes'] = 'Ceadaigh aíonna gan an eochair'; -$string['guestuser'] = 'Aoi Úsáideoir'; -$string['guestuserinfo'] = 'Úsáideoir speisialta is ea an t-úsáideoir seo a cheadaíonn rochtain inléite amháin ar roinnt cúrsaí.'; -$string['help'] = 'Cuidigh'; -$string['helpemoticons'] = 'Úsáid straoiseoga'; -$string['helpformatting'] = 'Faoi fhormáidiú téacs'; -$string['helphtml'] = 'Conas html a scríobh'; -$string['helpindex'] = 'Innéacs na gcomhad cabhrach ar fad'; -$string['helppicture'] = 'Conas pictiúr a uaslódáil'; -$string['helpquestions'] = 'Cuir ceisteanna maithe'; -$string['helpreading'] = 'Léigh go cúramach'; -$string['helprichtext'] = 'Faoin eagarthóir HTML'; -$string['helpsummaries'] = 'Faoi na hachoimrí seo'; -$string['helptext'] = 'Conas téacs a scríobh'; -$string['helpwiki'] = 'Conas téacs Wiki a scríobh'; -$string['helpwriting'] = 'Scríobh go cúramach'; -$string['hide'] = 'Folaigh'; -$string['hidepicture'] = 'Folaigh pictiúr'; -$string['hits'] = 'Amais'; -$string['hitsoncourse'] = 'Amais ag $a->username ar $a->coursename'; -$string['hitsoncoursetoday'] = 'Amais an lae inniu ag $a->username ar $a->coursename'; -$string['home'] = 'Abhaile'; -$string['hour'] = 'uair'; -$string['hours'] = 'uaireanta'; -$string['howtomakethemes'] = 'Conas téamaí nua a dhéanamh'; -$string['htmleditor'] = 'Úsáid an t-eagarthóir HTML (brabhsálaithe ar leith amháin)'; -$string['htmleditoravailable'] = 'Tá an t-eagarthóir HTML ar fáil'; -$string['htmleditordisabled'] = 'Tá an t-eagarthóir HTML míchumasaithe agat i do phróifíl úsáideora'; -$string['htmleditordisabledadmin'] = 'Tá an t-eagarthóir HTML míchumasaithe ag an riarthóir ar an suíomh seo'; -$string['htmleditordisabledbrowser'] = 'Níl an t-eagarthóir HTML ar fáil toisc nach bhfuil do bhrabhsálaí gréasáin comhoiriúnach'; -$string['htmlformat'] = 'Formáid ghleoite HTML'; -$string['icqnumber'] = 'Uimhir ICQ'; -$string['idnumber'] = 'Uimhir aitheantais'; -$string['inactive'] = 'Neamhghníomhach'; -$string['include'] = 'Cuir san Áireamh'; -$string['includeallusers'] = 'Cuir Gach Úsáideoir san Áireamh'; -$string['includecoursefiles'] = 'Cuir Comhaid an Chúrsa san Áireamh'; -$string['includecourseusers'] = 'Cuir Úsáideoirí an Chúrsa san Áireamh'; -$string['included'] = 'San Áireamh'; -$string['includelogentries'] = 'Cuir Iontrálacha Loga san Áireamh'; -$string['includemodules'] = 'Cuir Modúil san Áireamh'; -$string['includeneededusers'] = 'Cuir na hÚsáideoirí Riachtanacha san Áireamh'; -$string['includeuserfiles'] = 'Cuir Comhaid Úsáideora san Áireamh'; -$string['institution'] = 'Foras'; -$string['invalidemail'] = 'Seoladh r-phoist neamhbhailí'; -$string['invalidlogin'] = 'Lógáil isteach neamhbhailí, triail arís led\' thoil'; -$string['jumpto'] = 'Léim go...'; -$string['keep'] = 'Coinnigh'; -$string['langltr'] = 'Treo teanga clé-go-deis'; -$string['langrtl'] = 'Treo teanga deis go clé'; -$string['language'] = 'Teanga'; -$string['languagegood'] = 'Tá an pacásite teanga seo thuas chun dáta! :-)'; -$string['lastaccess'] = 'Rochtain is déanaí'; -$string['lastedited'] = 'Eagarthóireacht is déanaí'; -$string['lastlogin'] = 'Logáil isteach is déanaí'; -$string['lastmodified'] = 'Mionathrú is déanaí'; -$string['lastname'] = 'Sloinne'; -$string['latestlanguagepack'] = 'Lorg an pacáiste teanga is déanaí ar moodle.org'; -$string['latestnews'] = 'Nuacht is déanaí'; -$string['leavetokeep'] = 'Fág glan leis an bpasfhocal reatha a choineáil'; -$string['license'] = 'Ceadúnas GPL'; -$string['list'] = 'Liosta'; -$string['listfiles'] = 'Liosta na gcomhad i $a'; -$string['listofallpeople'] = 'Liosta de gach duine'; -$string['livelogs'] = 'Loga beo ón uair an chloig dheiridh'; -$string['locale'] = 'ga'; -$string['location'] = 'Láthair'; -$string['loggedinas'] = 'Tá tú logáilte isteach mar: $a '; -$string['loggedinnot'] = 'Níl tú logáilte isteach.'; -$string['login'] = 'Logáil isteach'; -$string['loginas'] = 'Logáil isteach mar'; -$string['loginguest'] = 'Logáil isteach mar aoi'; -$string['loginsite'] = 'Logáil isteach sa suíomh'; -$string['loginsteps'] = 'Dia duit! Le rochtain iomlán a bheith agat ar chúrsaí, beidh ort nóiméad a ghlacadh le cuntas nua a chruthú duit féin ar an suíomh gréasáin seo. - D\'fhéadfadh "eochair clárúcháin" aon-uaire a bheith ag baint le cúrsaí ar leith, ach ní bheidh sé uait go dtí ar ball. Seo iad na céimeann: -
                              -
                            1. Líon amach an fhoirm Cuntas Nua le do chuid sonraí.
                            2. -
                            3. Seolfar r-phost láithreach chuig do sheoladh r-phoist.
                            4. -
                            5. Léigh do r-phost, agus cliceáil ar an nasc gréasáin atá ann.
                            6. -
                            7. Dearbhófar do chuntas agus logálfar isteach tú.
                            8. -
                            9. Anois roghnaigh an cúrsa ar mian leat bheith páirteach ann.
                            10. -
                            11. Má lorgaítear "eochair clárúcháin" ort - úsáid an ceann - a thug do mhúinteoir duit. "Clárófar" tú ar an gcúrsa.
                            12. -
                            13. Beidh rochtain anois agat ar an gcúrsa iomlán. As seo ar aghaidh ní bheidh ort a dhéanamh ach d\'ainm úsáideora agus do phasfhocal a chur isteach (ar an bhfoirm ar an leathanach seo) - le logáil isteach agus rochtain a fháil ar aon chúrsa a bhfuil tú cláraithe air.
                            14. -
                            '; -$string['loginstepsnone'] = '

                            Dia duit!

                            -

                            Le rochtain iomlán a fháil ar chúrsaí, beidh ort cuntas a chruthú duit féin.

                            -

                            Ní gá a dhéanamh ach ainm úsáideora agus pasfhocal a chumadh agus iad a úsáid ar an bhfoirm ar an leathanach seo!

                            -

                            Má d\'ainm úsáideora roghnaithe cheana ag duine eile, beidh ort iarracht eile a dhéanamh le hainm úsáideora eile.

                            '; -$string['loginto'] = 'Logáil isteach go $a'; -$string['loginusing'] = 'Logáil isteach anseo trí d\'ainm úsáideora agus do phasfhocal a úsáid'; -$string['logout'] = 'Logáil amach'; -$string['logs'] = 'Logaí'; -$string['mainmenu'] = 'Príomhroghchlár'; -$string['makeafolder'] = 'Cruthaigh fillteán'; -$string['makeeditable'] = 'Dá socrófá gur féidir eagar a chur ar \'$a\' trí phróiseas an fhreastalaí gréasáin (m.sh. apache) ansin d\'fhéadfá eagar a chur ar an gcomhad seo go díreach ón leathanach seo'; -$string['managedatabase'] = 'Bunachar Sonraí'; -$string['managefilters'] = 'Scagairí'; -$string['managemodules'] = 'Modúil'; -$string['markedthistopic'] = 'Tá an t-ábhar seo aibhsithe mar an ábhar atá idir lámha'; -$string['markthistopic'] = 'Aibhsigh an t-ábhar seo mar an t-ábhar atá idir lámha'; -$string['maximumchars'] = 'Uasmhéid de $a carachtar'; -$string['maximumgrade'] = 'Uasghrád'; -$string['maximumshort'] = 'Uas.'; -$string['maximumupload'] = 'Uasmhéid uaslódála'; -$string['maxsize'] = 'Uasmhéid: $a'; -$string['min'] = 'nóim'; -$string['mins'] = 'nóim'; -$string['miscellaneous'] = 'Ilghnéitheach'; -$string['missingcategory'] = 'Ní mór duit catagóir a roghnú'; -$string['missingcity'] = 'Cathair/baile ar lár'; -$string['missingcountry'] = 'Tír ar lár'; -$string['missingdescription'] = 'Cur síos ar lár'; -$string['missingemail'] = 'Seoladh r-phoist ar lár'; -$string['missingfirstname'] = 'Céadainm ar lár'; -$string['missingfullname'] = 'Ainm iomlán ar lár'; -$string['missinglastname'] = 'Sloinne ar lár'; -$string['missingname'] = 'Ainm ar lár'; -$string['missingnewpassword'] = 'Pasfhocal nua ar lár'; -$string['missingpassword'] = 'Pasfhocal ar lár'; -$string['missingshortname'] = 'Ainm gairid ar lár'; -$string['missingshortsitename'] = 'Ainm gairid suímh ar lár'; -$string['missingsitedescription'] = 'Cur síos suímh ar lár'; -$string['missingsitename'] = 'Ainm suímh ar lár'; -$string['missingstrings'] = 'Ag lorg teaghráin atá ar lár'; -$string['missingstudent'] = 'Ní mór rud éigin a roghnú'; -$string['missingsummary'] = 'Achoimre ar lár'; -$string['missingteacher'] = 'Ní mór rud éigin a roghnú'; -$string['missingurl'] = 'URL ar lár'; -$string['missingusername'] = 'Ainm úsáideora ar lár'; -$string['modified'] = 'Mionathraithe'; -$string['moduledeleteconfirm'] = 'Tá tú ar tí an modúl \'$a\' a scrios go hiomlán. Scriosfaidh sé seo go hiomlán gach rud ar an mbunachar sonraí a bhaineann leis an modúl gníomhaíochta seo. An bhfuil tú CINNTE gur mian leat leanúint?'; -$string['moduledeletefiles'] = 'Scriosadh den bhunachar sonraí na sonraí uile a bhaineann leis an modúl \'$a->module\'. Leis an scrios a iomlánadh (agus an modúl a chosc ó é féin a athshuiteáil), ba cheart duit an comhadlann seo a scrios ó do fhreastalaí anois: $a->directory'; -$string['modulesetup'] = 'Táblaí modúl á socrú'; -$string['modulesuccess'] = 'Socraíodh táblaí $a i gceart'; -$string['moodleversion'] = 'Leagan Moodle'; -$string['mostrecently'] = 'is déanaí'; -$string['move'] = 'Bog'; -$string['movecategoryto'] = 'Bog catagóir go:'; -$string['movecourseto'] = 'Bog cúrsa go:'; -$string['movedown'] = 'Bog síos'; -$string['movefilestohere'] = 'Bog comhaid go dtí seo'; -$string['movefull'] = 'Bog $a go dtí an áit seo'; -$string['movehere'] = 'Bog go dtí seo'; -$string['moveleft'] = 'Bog ar clé'; -$string['moveright'] = 'Bog ar dheis'; -$string['moveselectedcoursesto'] = 'Bog na cúrsaí roghnaithe go dtí...'; -$string['movetoanotherfolder'] = 'Bog chuig fillteán eile'; -$string['moveup'] = 'Bog suas'; -$string['mustconfirm'] = 'Ní mór duit do logáil isteach a dhearbhú'; -$string['mycourses'] = 'Mo chúrsaí'; -$string['name'] = 'Ainm'; -$string['namesocial'] = 'rannóg'; -$string['nametopics'] = 'ábhar'; -$string['nameweeks'] = 'seachtain'; -$string['needed'] = 'Riachtanach'; -$string['never'] = 'Choíche (Riamh)'; -$string['neverdeletelogs'] = 'Ná scrios loganna riamh'; -$string['new'] = 'Nua'; -$string['newaccount'] = 'Cuntas nua'; -$string['newcourse'] = 'Cúrsa nua'; -$string['newpassword'] = 'Pasfhocal nua'; -$string['newpasswordtext'] = 'Dia duit, $a->firstname, - -Athshocraíodh do phasfhocal cuntais ag \'$a->sitename\' -agus eisíodh ceann nua sealadach duit. - -Is é seo anois do chuid eolais logála reatha: - ainm úsáideora: $a->username - pasfhocal: $a->newpassword - -Led\' thoil téigh chuig an leathanach seo le do phasfhocal a athrú: - $a->link - -I bhformhór cláracha r-phoist, ba cheart go bhfeicfí mar nasc gorm é seo ar féidir cliceáil air. Muna n-oibríonn sé sin, gearr agus greamaigh an seoladh isteach sa líne seoladh i do bhrabhsálaí. - -Beannachtaí ó riarthóir \'$a->sitename\', -$a->signoff -'; -$string['newpicture'] = 'Íomhá nua'; -$string['newsitem'] = 'mír nuachta'; -$string['newsitems'] = 'míreanna nuachta'; -$string['newsitemsnumber'] = 'Míreanna nuachta le léiriú'; -$string['newuser'] = 'Úsáideoir nua'; -$string['newusers'] = 'Úsáideoirí nua'; -$string['next'] = 'Ar aghaidh'; -$string['no'] = 'Níl/Ní hea'; -$string['nocoursesfound'] = 'Níor aimsíodh aon chúrsa leis na focail \'$a\''; -$string['nocoursesyet'] = 'Níl aon chúrsaí sa chatagóir seo'; -$string['noexistingadmins'] = 'Ní ann d\'aon riarthóirí, earráid thromchúiseach í seo agus níor cheart go mbeadh an teachtaireacht seo feicthe agat.'; -$string['noexistingcreators'] = 'Ní ann d\'aon chruthaitheoirí'; -$string['noexistingstudents'] = 'Ní ann d\'aon mhic léinn'; -$string['noexistingteachers'] = 'Ní ann d\'aon mhúinteoirí'; -$string['nofilesselected'] = 'Níor roghnaíodh aon chomhaid lena gcur ar ais'; -$string['nofilesyet'] = 'Níor uaslódáladh aon chomhaid chuig do chúrsa go fóill'; -$string['nograde'] = 'Gan grád'; -$string['noimagesyet'] = 'Níor uaslódáladh aon íomhánna chuig do chúrsa go fóill'; -$string['nomorecourses'] = 'Níor aimsíodh aon chúrsa eile a mheaitseáileann'; -$string['none'] = 'Faic'; -$string['nopotentialadmins'] = 'Níl riarthóirí poitéinsiúla ann'; -$string['nopotentialcreators'] = 'Níl cruthaitheoirí cúrsa poitéinsiúla ann'; -$string['nopotentialstudents'] = 'Níl mic léinn poitéinsiúla ann'; -$string['nopotentialteachers'] = 'Níl múinteoir poitéinsiúla ann'; -$string['normal'] = 'Normalach'; -$string['normalfilter'] = 'Cuardach normalach'; -$string['nostudentsfound'] = 'Níor aimsíodh aon $a'; -$string['nostudentsyet'] = 'Níl aon mhac léinn ar an rolla don chúrsa seo go fóill'; -$string['nosuchemail'] = 'Níl a leithéid de sheoladh r-phoist ann'; -$string['notavailable'] = 'Níl ar fáil'; -$string['noteachersyet'] = 'Níl aon mhúinteoir ar an gcúrsa seo go fóill'; -$string['notenrolled'] = 'Níl $a ar an rolla don chúrsa seo.'; -$string['noteuserschangednonetocourse'] = 'Nóta: ní mór úsáideoirí an chúrsa a chur ar ais agus sonraí úsáideora á gcur ar ais. Athraíodh an socrú seo duit.'; -$string['nothingnew'] = 'Tada nua ón uair dheiridh a logáil tú isteach'; -$string['notincluded'] = 'Níl san áireamh'; -$string['notingroup'] = 'Tá brón orm ach ní mór duit a bheith id\' bhall de ghrúpa le breathnú ar an ngníomhaíocht seo.'; -$string['nousersmatching'] = 'Níor aimsíodh aon úsáideoir a mheaitseáileann le \'$a\''; -$string['nousersyet'] = 'Ní ann d\'an úsáideoirí go fóill'; -$string['now'] = 'anois'; -$string['numberweeks'] = 'Líon seachtainí/ábhar'; -$string['numdays'] = '$a lá'; -$string['numhours'] = '$a uair an chloig'; -$string['numminutes'] = '$a nóiméad'; -$string['numseconds'] = '$a soicind'; -$string['numviews'] = '$a radharc'; -$string['numweeks'] = '$a seachtain'; -$string['numwords'] = '$a focal'; -$string['numyears'] = '$a bliain'; -$string['ok'] = 'OK'; -$string['opentoguests'] = 'Rochtain aíonna'; -$string['optional'] = 'roghnach'; -$string['order'] = 'Ord'; -$string['other'] = 'Eile'; -$string['outline'] = 'Imlíne'; -$string['page'] = 'Leathanach'; -$string['parentlanguage'] = ''; -$string['participants'] = 'Rannpháirtithe'; -$string['password'] = 'Pasfhocal'; -$string['passwordchanged'] = 'Athraíodh an pasfhocal'; -$string['passwordconfirmchange'] = 'Dearbhaigh athrú an phasfhocail'; -$string['passwordrecovery'] = 'Cabhraigh liom logáil isteach'; -$string['passwordsdiffer'] = 'Níl na pasfhocail seo ag teacht le chéile'; -$string['passwordsent'] = 'Seoladh an pasfhocal'; -$string['passwordsenttext'] = 'Seoladh r-phost chuig do sheoladh ag $a->email. -
                            Seiceáil do r-post, led\' thoil, dod\' phasfhocal nua -
                            Gineadh go huathoirbíodh an pasfhocal nua, b\'fhéidir gur mhaith leat - link\">é a athrú go rud éigin a bheadh ní b\'éasca cuimhniú air.'; -$string['people'] = 'Daoine'; -$string['personalprofile'] = 'Próifíl phearsanta'; -$string['phone'] = 'Fón'; -$string['phpinfo'] = 'Eolas PHP'; -$string['popupwindow'] = 'Oscail comhad i bhfuinneog nua'; -$string['potentialadmins'] = 'Riarthóirí poitéinsiúla'; -$string['potentialcreators'] = 'Cuthaitheoirí poitéinsiúla cúrsaí'; -$string['potentialstudents'] = 'Mic léinn poitéinsiúla'; -$string['potentialteachers'] = 'Múinteoirí poitéinsiúla'; -$string['preferredlanguage'] = 'Teanga sainroghnaithe'; -$string['preview'] = 'Réamhamharc'; -$string['previeworchoose'] = 'Réamhamharc nó roghnaigh téama'; -$string['previous'] = 'Siar'; -$string['publicdirectory'] = 'Comhadlann poiblí'; -$string['publicdirectory0'] = 'Ná foilsigh an suíomh seo led\' thoil'; -$string['publicdirectory1'] = 'Foilsigh ainm an tsuímh amháin'; -$string['publicdirectory2'] = 'Foilsigh ainm an tsuímh agus nasc chuige'; -$string['publicsitefileswarning'] = 'Nóta: féadfaidh éinne rochtain a fháil ar chomhaid a cuirtear anseo'; -$string['question'] = 'Ceist'; -$string['readinginfofrombackup'] = 'Fainéis á léamh ó chúltaca'; -$string['readme'] = 'README'; -$string['recentactivity'] = 'Gníomhaíocht nua'; -$string['recentactivityreport'] = 'Tuairisc iomlán de ghníomhaíocht a tharla le gairid...'; -$string['registration'] = 'Clárú Moodle'; -$string['registrationemail'] = 'Fógraí r-phoist'; -$string['registrationinfo'] = 'Ligeann an leathanach seo duit do shuíomh Moodle a chlárú le moodle.org. Tá an clárú saor in aisce. -An príomhbhuntáiste a bhaineann le clárú ná go gcuirfear ar liosta poist ísealmhéide thú le fógraí tábhachtacha a fháil ar nós teachtaireachtaí foláirimh agus leaganachanua de Moodle. -
                            Is é an réamhshocrú go gcoinneofaí príobháideach an t-eolas seo agus ní dhíolfar ná ní thabharfar do dhuine ar bith eile é. An t-aon chúis atá ann an t-eolas seo a bhailiú ná ar chúiseanna tacaíochta agus le cuidiú íomhá staitisticiúil a ghiniúint de phobal Moodle ina iomláine. -
                            Más é do rogha é, féadfaidh tú ainm do shuímh, do thíre agus an URL a chur leis an liosta poiblí de Shuíomhanna Moodle. -
                            Dearbhaítear gach clárú nua de láimh sula gcuirtear leis an liosta iad, ach ó cuirtear leis an liosta iad féadfaidh tú do chlárúchán (agus d\'iontráil ar an liosta poiblí) a uasdhátú ag am ar bith tríd an fhoirm seo a athsheoladh.'; -$string['registrationno'] = 'Ní mian liom r-phost a fháil'; -$string['registrationsend'] = 'Seol faisnéis clárúcháin chuig moodle.org'; -$string['registrationyes'] = 'Sea, cuir teachtaireacht chugam led\' thoil faoi cheisteanna tábhachtacha'; -$string['removeadmin'] = 'Bain riarthóir'; -$string['removecreator'] = 'Bain cruthaitheoir an chúrsa'; -$string['removestudent'] = 'Bain mac léinn'; -$string['removeteacher'] = 'Bain múinteoir'; -$string['rename'] = 'Athainmnigh'; -$string['renamefileto'] = 'Athainmnigh $a mar'; -$string['required'] = 'Riachtanach'; -$string['requireskey'] = 'Tá eochair chláraithe ón gcúrsa seo.'; -$string['resortcoursesbyname'] = 'Athsortáil cúrsaí de réir ainm'; -$string['resources'] = 'Achmhainní'; -$string['restore'] = 'Aischuir'; -$string['restorecancelled'] = 'Aischur curtha ar ceal'; -$string['restorecoursenow'] = 'Aischuir an cúrsa seo anois!'; -$string['restorefinished'] = 'Aischur comhlánaithe go rathúil'; -$string['restoreto'] = 'Aischuir go'; -$string['returningtosite'] = 'Ag filleadh ar an suíomh gréasáin seo?'; -$string['revert'] = 'Imchlóigh'; -$string['role'] = 'Ról'; -$string['savechanges'] = 'Sábháil athruithe'; -$string['saveto'] = 'Sábháil go'; -$string['scale'] = 'Scála'; -$string['scales'] = 'Scálaí'; -$string['scalescustom'] = 'Scálaí saincheaptha'; -$string['scalescustomcreate'] = 'Cuir scála nua leis'; -$string['scalescustomno'] = 'Níor cruthaíodh aon scálaí saincheaptha go fóill'; -$string['scalesstandard'] = 'Scálaí caighdeánacha'; -$string['scalestip'] = 'Le scálaí saincheaptha a chruthú, úsáid an nasc \'Scálaí...\' i do roghchlár riaracháin chúrsa.'; -$string['schedule'] = 'Sceideal'; -$string['scheduledbackupstatus'] = 'Stádas cúltaca sceidealaithe'; -$string['search'] = 'Cuardaigh'; -$string['searchagain'] = 'Cuardaigh arís'; -$string['searchcourses'] = 'Cuardaigh cúrsaí'; -$string['searchhelp'] = 'Féadfaidh tú focail iolracha a lorg ag an aon am amháin.
                            focal : aimsigh aon mheaits den fhocal seo sa téacs.
                            +focal : ní aimseofar ach meaits dhíreach den fhocal.
                            -focal : ná cuir san áireamh torthaí ina bhfuil an focal seo.'; -$string['searchresults'] = 'Torthaí cuardaigh'; -$string['sec'] = 'soic'; -$string['secs'] = 'soic'; -$string['section'] = 'Rannóg'; -$string['sections'] = 'Rannóga'; -$string['select'] = 'Roghnaigh'; -$string['selectacountry'] = 'Roghnaigh tír'; -$string['selectednowmove'] = '$a comhad roghnaithe lena n-aistriú. Anois téigh chuig an sprioc agus brúigh \'Aistrigh comhaid anseo\''; -$string['senddetails'] = 'Seol mo chuid sonraí le r-phost'; -$string['separateandconnected'] = 'Bealaí Deighlte agus Ceangailte fiosuithe'; -$string['serverlocaltime'] = 'Am áitiúil an fhreastalaí'; -$string['settings'] = 'Socruithe'; -$string['shortname'] = 'Ainm ghairid'; -$string['shortnametaken'] = 'Ainm ghairid in úsáid cheana do chúrsa eile ($a)'; -$string['shortsitename'] = 'Ainm ghairid don suíomh (m.sh. focal singil)'; -$string['show'] = 'Léirigh'; -$string['showall'] = 'Léirigh $a uile'; -$string['showallcourses'] = 'Léirigh gach cúrsa'; -$string['showalltopics'] = 'Léirigh gach ábhar'; -$string['showallusers'] = 'Léirigh gach úsáideoir'; -$string['showallweeks'] = 'Léirigh gach seachtain'; -$string['showgrades'] = 'Léirigh gráid'; -$string['showlistofcourses'] = 'Léirigh an liosta cúrsaí'; -$string['showonlytopic'] = 'Léirigh an t-ábhar $a amháin'; -$string['showonlyweek'] = 'Léirigh seachtain $a amháin'; -$string['showrecent'] = 'Léirigh gníomhaíocht nua'; -$string['showreports'] = 'Léirigh tuarascála gníomhaíochta'; -$string['showtheselogs'] = 'Léirigh na logaí seo'; -$string['since'] = 'Ó'; -$string['site'] = 'Suíomh'; -$string['sitefiles'] = 'Comhaid an tsuímh'; -$string['sitelogs'] = 'Logaí an tsuímh'; -$string['sitenews'] = 'Nuacht an tsuímh'; -$string['sites'] = 'Suíomhanna'; -$string['sitesettings'] = 'Socruithe an tsuímh'; -$string['size'] = 'Méid'; -$string['sizeb'] = 'beart'; -$string['sizegb'] = 'Gb'; -$string['sizekb'] = 'Kb'; -$string['sizemb'] = 'Mb'; -$string['socialheadline'] = 'Fóram sóisialta - ábhair nua'; -$string['someallowguest'] = 'Ceadaítear aoirochtain ar roinnt cúrsaí'; -$string['someerrorswerefound'] = 'Bhí roinnt eolais ar iarraidh nó mícheart. Féach na sonraí thíos.'; -$string['sortby'] = 'Sórtáil de réir'; -$string['startdate'] = 'Dáta tosaigh an chúrsa'; -$string['startsignup'] = 'Tosaigh trí chuntas nua a chruthú!'; -$string['state'] = 'Stát/Cúige'; -$string['status'] = 'Stádas'; -$string['strftimedate'] = '%%d %%B %%Y'; -$string['strftimedateshort'] = '%%d %%B'; -$string['strftimedatetime'] = '%%d %%B %%Y, %%I:%%M %%p'; -$string['strftimedaydate'] = '%%A, %%d %%B %%Y'; -$string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%I:%%M %%p'; -$string['strftimerecent'] = '%%d %%b, %%H:%%M'; -$string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%I:%%M %%p'; -$string['strftimetime'] = '%%I:%%M %%p'; -$string['stringsnotset'] = 'Ní sainmhínítear na teaghráin seo a leanas in $a'; -$string['studentnotallowed'] = 'Tá brón orm, ach ní féidir teacht isteach ar an gcúrsa seo mar \'$a\''; -$string['students'] = 'Mic léinn'; -$string['subcategories'] = 'Fochatagóirí'; -$string['success'] = 'Rath'; -$string['summary'] = 'Achoimre'; -$string['summaryof'] = 'Achoimre ar $a'; -$string['supplyinfo'] = 'Soláthraigh roinnt eolais fút féin led\' thoil'; -$string['teacheronly'] = 'don $a amháin'; -$string['teacherroles'] = 'Ról na $a'; -$string['teachers'] = 'Múinteoirí'; -$string['textediting'] = 'Agus téacs á eagarthóireacht'; -$string['texteditor'] = 'Úsáid foirmeacha caighdeánacha gréasáin'; -$string['textformat'] = 'Formáid gnáth-théacs'; -$string['thanks'] = 'Go raibh maith agat'; -$string['theme'] = 'Téama'; -$string['themes'] = 'Téamaí'; -$string['themesaved'] = 'Téama nua sábhailte'; -$string['thischarset'] = 'iso-8859-1'; -$string['thisdirection'] = 'cgd'; -$string['thislanguage'] = 'Gaeilge'; -$string['time'] = 'Am'; -$string['timezone'] = 'Amchrios'; -$string['to'] = 'Chuig'; -$string['today'] = 'Inniu'; -$string['todaylogs'] = 'Logaí an lae inniu'; -$string['toomanytoshow'] = 'Tá an iomarca úsáideoirí ann len iad a léiriú'; -$string['top'] = 'Barr'; -$string['topic'] = 'Ábhar'; -$string['topichide'] = 'Ceil an t-ábhar seo ó $a'; -$string['topicoutline'] = 'Imlíne ábhair'; -$string['topicshow'] = 'Taispeáin an t-ábhar seo do $a'; -$string['total'] = 'Iomlán'; -$string['turneditingoff'] = 'Múch eagarthóireacht'; -$string['turneditingon'] = 'Las eagarthóireacht'; -$string['undecided'] = 'Éiginnte'; -$string['unenrol'] = 'Díchláraigh'; -$string['unenrolme'] = 'Díchláraigh mé ó $a'; -$string['unenrolsure'] = 'An bhfuil tú cinnte gur mian leat $a a dhíchlárú ón gcúrsa seo?'; -$string['unknowncategory'] = 'Catagóir anaithnid'; -$string['unpacking'] = 'Ag díphacáil $a'; -$string['unsafepassword'] = 'Pasfhocal míshlán - bain triail as rud éigin eile'; -$string['unusedaccounts'] = 'Díchláraítear go huathoibríodh cuntais atá gan úsáid ar feadh os cionn $a lá'; -$string['unzip'] = 'Dízipeáil'; -$string['unzippingbackup'] = 'Dízipeáil cúltaca'; -$string['up'] = 'Suas'; -$string['update'] = 'Nuashonraigh'; -$string['updated'] = '$a nuashonraithe'; -$string['updatemyprofile'] = 'Nuashonraigh próifíl'; -$string['updatesevery'] = 'Nuashonraíonn gach $a soicind'; -$string['updatethis'] = 'Nuashonraigh an $a seo'; -$string['updatethiscourse'] = 'Nuashonraigh an cúrsa seo'; -$string['updatinga'] = 'Ag nuashonrú: $a'; -$string['updatingain'] = 'Ag nuashonrú $a->what in $a->in'; -$string['upload'] = 'Uaslódáil'; -$string['uploadafile'] = 'Uaslódáil comhad'; -$string['uploadedfileto'] = 'Uaslódáladh $a->file go $a->directory'; -$string['uploadnofilefound'] = 'Níor aimsíodh aon chomhad - an bhfuil tú cinnte gur roghnaigh tú ceann le huaslódáil?'; -$string['uploadproblem'] = 'Tharla fadhbt anaithnid éigin agus an comhad \'$a\' á uaslódáil (b\'fhéidir go raibh sé ró-mhór?)'; -$string['uploadthisfile'] = 'Uaslódáil an comhad seo'; -$string['uploadusers'] = 'Uaslódáil úsáideoirí'; -$string['user'] = 'Úsáideoir'; -$string['userconfirmed'] = 'Dearbhaíodh $a'; -$string['userdeleted'] = 'Scriosadh an cuntas úsáideora seo'; -$string['userdescription'] = 'Cur síos'; -$string['userfiles'] = 'Comhaid úsáideora'; -$string['username'] = 'Ainm úsáideora'; -$string['usernameexists'] = 'Tá an t-ainm úsáideora se in úsáid cheana, roghnaigh ceann eile'; -$string['usernotconfirmed'] = 'Níorbh fhéidir $a a dhearbhú'; -$string['userprofilefor'] = 'Próifíl úsáideora do $a'; -$string['users'] = 'Úsáideoirí'; -$string['usersnew'] = 'Úsáideoirí nua'; -$string['userzones'] = 'Criosanna úsáideora'; -$string['usingexistingcourse'] = 'Úsáid cúrsa reatha'; -$string['version'] = 'Leagan'; -$string['view'] = 'Amharc'; -$string['webpage'] = 'Leathanach Gréasáin'; -$string['week'] = 'Seachtain'; -$string['weekhide'] = 'Cealaigh an tseachtain seo ó $a'; -$string['weeklyoutline'] = 'Imlíne na seachtaine'; -$string['weekshow'] = 'Taispeáin an tseachtain seo do $a'; -$string['welcometocourse'] = 'Fáilte go $a'; -$string['welcometocoursetext'] = 'Fáilte go $a->coursename! - -Muna bhfuil sé déanta agat cheana, ba cheart duit eagar a chur ar do leathanach próifíle laistigh den chúrsa le go bhféadfaimid níos mó a fhoghlaim fút: - - $a->profileurl'; -$string['whattocallzip'] = 'Céard ba mhaith leat a ghlaoch ar an zipchomhad?'; -$string['withchosenfiles'] = 'le comhaid roghnaithe'; -$string['withoutuserdata'] = 'gan sonraí úsáideora'; -$string['withuserdata'] = 'le sonraí úsáideora'; -$string['wordforstudent'] = 'Do fhocalsa ar Mhac Léinn'; -$string['wordforstudenteg'] = 'm.sh. Mac Léinn, Rannpháirtí, srl.'; -$string['wordforstudents'] = 'Do fhocalsa ar Mhic Léinn'; -$string['wordforstudentseg'] = 'm.sh. Mic Léinn, Rannpháirtithe, srl.'; -$string['wordforteacher'] = 'Do fhocalsa ar Mhúinteoir'; -$string['wordforteachereg'] = 'm.sh. Múinteoir, Tiúitéir, Éascaitheoir, srl.'; -$string['wordforteachers'] = 'Do fhocalsa ar Mhúinteoirí'; -$string['wordforteacherseg'] = 'm.sh. Múinteoirí, Tiúitéirí, Éascaitheoirí, srl.'; -$string['writingcategoriesandquestions'] = 'Catagóir agus ceisteanna á scríobh'; -$string['writingcoursedata'] = 'Sonraí an chúrsa á scríobh'; -$string['writingeventsinfo'] = 'Faisnéis na dteagmhas á scríobh'; -$string['writinggeneralinfo'] = 'Faisnéis ginearálta á scríobh'; -$string['writinggroupsinfo'] = 'Faisnéis na ngrúpaí á scríobh'; -$string['writingheader'] = 'Ceanntásc á scríobh'; -$string['writingloginfo'] = 'Faisnéis logaí á scríobh'; -$string['writingmoduleinfo'] = 'Faisnéis modúl á scríobh'; -$string['writingscalesinfo'] = 'Faisnéis scálaí á scríobh'; -$string['writinguserinfo'] = 'Faisnéis úsáideora á scríobh'; -$string['wrongpassword'] = 'Pasfhocal mícheart don ainm úsáideora seo'; -$string['yes'] = 'Tá/Sea'; -$string['youareabouttocreatezip'] = 'Tá tú ar tí zipchomhada chruthú ina bhfuil'; -$string['youaregoingtorestorefrom'] = 'Tá tú ar tí an próiseas aischuir a thosú do'; -$string['yourlastlogin'] = 'Ba é an logáil isteach deiridh a bhí agat ná'; -$string['yourself'] = 'tú féin'; -$string['yourteacher'] = 'an $a s\'agatsa'; -$string['zippingbackup'] = 'Ag Zipeáil cúltaca'; - -?> diff --git a/lang/ga/multilang.php b/lang/ga/multilang.php deleted file mode 100644 index 1151601cd9a..00000000000 --- a/lang/ga/multilang.php +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/lang/ga/pix.php b/lang/ga/pix.php deleted file mode 100644 index 6e2319e53e5..00000000000 --- a/lang/ga/pix.php +++ /dev/null @@ -1,26 +0,0 @@ - diff --git a/lang/ga/questionnaire.php b/lang/ga/questionnaire.php deleted file mode 100644 index 636be01bfde..00000000000 --- a/lang/ga/questionnaire.php +++ /dev/null @@ -1,14 +0,0 @@ -Níl mór duit an ceistneóir seo a líonadh amach anois chun taifead a dhéanamh do do chuid torthaí. " - ."Ní bheidh cead agat é a líonadh amach ag am ar bith eile

                            \n"; -$string['alreadyfilled'] = "Líon tú amach an ceistneóir seo dúinn cheana. Go raibh maith agat."; - -?> \ No newline at end of file diff --git a/lang/ga/quiz.php b/lang/ga/quiz.php deleted file mode 100644 index 90e5374b815..00000000000 --- a/lang/ga/quiz.php +++ /dev/null @@ -1,185 +0,0 @@ -
                            Tar éis duit catagóir ceisteanna a roghnú nó a chruthú, beidh tú in ann ceisteanna a chruthú nó a chur in eagar. Féadfaidh tú aon cheann de na ceisteanna seo a roghnú le cur le do thráth na gceist thall ar an taobh eile den leathanach seo.'; -$string['addquestions'] = 'Cuir isteach ceisteanna'; -$string['addquestionstoquiz'] = 'Cuir ceisteanna leis an tráth na gceist reatha'; -$string['addselectedtoquiz'] = 'Cuir an t-ábhar roghnaithe leis an tráth na gceist'; -$string['aiken'] = 'Formáid Aiken'; -$string['allowreview'] = 'Ceadaigh athbhreithniú'; -$string['alreadysubmitted'] = 'Tá seans maith ann gur chuir tú isteach an t-iarracht seo cheana'; -$string['alwaysavailable'] = 'Ar fáil i gcónaí'; -$string['answer'] = 'Freagra'; -$string['answerhowmany'] = 'Freagra aonair nó iolrach?'; -$string['answersingleno'] = 'Freagraí iolracha ceadaithe'; -$string['answersingleyes'] = 'Freagra aonair amháin'; -$string['answerswithacceptederrormarginmustbenumeric'] = 'Ní mór do fhreagraí a bhfuil earráidí cheadaithe acu bheith uimhriúil'; -$string['answertoolong'] = 'Freagra ró-fhada tar éis líne $a (uas. 255 carachtar)'; -$string['aon'] = 'Formáid AON'; -$string['attempt'] = 'Iarracht $a'; -$string['attemptfirst'] = 'An chéad iarracht'; -$string['attemptlast'] = 'An t-iarracht deiridh'; -$string['attemptquiznow'] = 'Tabhair faoi thráth na gceist anois'; -$string['attempts'] = 'Iarrachtaí'; -$string['attemptsallowed'] = 'Iarrachtaí ceadaithe'; -$string['attemptincomplete'] = 'Níl an t-iarracht sin (ag $a) comhlánaithe go fóill.'; -$string['attemptsunlimited'] = 'Níl teora leis an líon iarrachtaí'; -$string['backtoquiz'] = 'Ar ais go eagarthóireacht ar thráth na gceist'; -$string['bestgrade'] = 'Grád is fearr'; -$string['blackboard'] = 'Clár dubh'; -$string['calculatedquestion'] = 'Níl tacaíocht ag líne $a don Cheist Áirithe. Déanfar neamhaird den cheist.'; -$string['caseno'] = 'Níl tábhacht ag baint le cás'; -$string['casesensitive'] = 'Cásíogaireacht'; -$string['caseyes'] = 'Caithfidh an cás meaitseáil'; -$string['categories'] = 'Catagóirí'; -$string['category'] = 'Catagóir'; -$string['categoryinfo'] = 'Faisnéis catagóire'; -$string['categorymove'] = 'Tá $a->count ceist sa chatagóir \'$a->name\'. Roghnaigh catagóir eile, led\' thoil, len iad a aistriú chuici.'; -$string['categorymoveto'] = 'Aistrigh chuig an chatagóir seo iad'; -$string['choice'] = 'Rogha'; -$string['choices'] = 'Roghanna atá ar fáil'; -$string['correctanswer'] = 'Freagra ceart'; -$string['correctanswers'] = 'Freagraí cearta'; -$string['corrresp'] = 'Freagra ceart'; -$string['countdown'] = 'Comhaireamh anuas'; -$string['countdownfinished'] = 'Tá tráth na gceist ag dúnadh, ba cheart duit do chuid freagraí a chur ar aghaidh anois.'; -$string['countdowntenminutes'] = 'Beidh tráth na gceist ag dúnadh i gceann deich nóiméad.'; -$string['coursetestmanager'] = 'Formáid Bainisteora Tástála Cúrsa'; -$string['createmultiple'] = 'Cruthaigh ceisteanna iolracha'; -$string['createnewquestion'] = 'Cruthaigh ceist nua'; -$string['custom'] = 'Formáid saincheaptha'; -$string['daysavailable'] = 'Laethanta ar fáil'; -$string['default'] = 'Réamhshocrú'; -$string['defaultgrade'] = 'Grád réamhshocraithe do cheist'; -$string['defaultinfo'] = 'An chatagóir réamhshocraithe do cheisteanna.'; -$string['deleteattemptcheck'] = 'An bhfuil tú cinnte dearfa gur mian leat na hiarrachtaí seo a scrios go hiolmán?'; -$string['deletequestioncheck'] = 'An bhfuil tú cinnte dearfa gur mian leat \'$a\' a scrios?'; -$string['description'] = 'Cur síos'; -$string['discrimination'] = 'Innéacs Idirdheal.'; -$string['eachattemptbuildsonthelast'] = 'Cuireann gach iarracht leis an gceann deiridh'; -$string['editcategories'] = 'Eagraigh catagóirí'; -$string['editingdescription'] = 'Ag cur eagar ar Chur Síos'; -$string['editingmatch'] = 'Ag cur eagar ar Cheist Mheaitseáilte'; -$string['editingmultianswer'] = 'Ag cur eagar ar Fhreagraí Leabaithe (Cloze)'; -$string['editingmultichoice'] = 'Ag cur eagar ar cheist Ilroghnach'; -$string['editingnumerical'] = 'Ag cur eagar ar cheist uimhriúil'; -$string['editingquestion'] = 'Ag cur eagar ar cheist'; -$string['editingquiz'] = 'Ag cur eagar ar thráth na gceist'; -$string['editingrandom'] = 'Ag cur eagar ar Cheist Randamach'; -$string['editingrandomsamatch'] = 'Ag cur eagar ar cheist Mheaitseáilte Randamach a bhfuil Freagra Gairid uirthi'; -$string['editingshortanswer'] = 'Ag cur eagar ar cheist a bhfuil Freagra Gairid uirthi'; -$string['editingtruefalse'] = 'Ag cur eagar ar cheist Fíor/Bréagach'; -$string['editquestions'] = 'Cuir eagar ar cheisteanna'; -$string['errorsdetected'] = '$a earráid aimsithe'; -$string['false'] = 'Bréagach'; -$string['feedback'] = 'Aiseolas'; -$string['fileformat'] = 'Formáid an chomhaid'; -$string['filloutoneanswer'] = 'Ní mór duit ar a laghad freagra amháin indéanta a líonadh amach. Ní úsáidfear freagraí a fágtar glan.'; -$string['filloutthreequestions'] = 'Ní mór duit ar a laghad trí cheist a líonadh amach. Ní úsáidfear ceisteanna a fágtar glan.'; -$string['fillouttwochoices'] = 'Ní mór duit ar a laghad dhá rogha a líonadh amach. Ní úsáidfear roghanna a fágtar glan.'; -$string['fractionsaddwrong'] = 'Ní hionann agus 100%% suim na ngrád dearfacha atá roghnaithe agat
                            Ina ionad sin, is $a%% an suim iomlán atá ann.
                            Ar mhaith leat dul siar agus an cheist seo a dheisiú?'; -$string['fractionsnomax'] = 'Ba cheart 100%% a bheith ar cheann de na freagraí ionas
                            gur féidir grád iomlán a ghnóthú ar an gceist seo.
                            Ar mhaith leat dul siar agus an cheist seo a dheisiú?'; -$string['gift'] = 'Formáid GIFT'; -$string['gradeaverage'] = 'Meánghrád'; -$string['gradehighest'] = 'An grád is airde'; -$string['grademethod'] = 'Modh grádála'; -$string['guestsno'] = 'Tá brón orm, níl cead ag aoíanna breathnú ar thráthanna na gceist ná tabhairt fúthu'; -$string['imagedisplay'] = 'Íomhá le léiriú'; -$string['imagemissing'] = 'Níl an íomhá ar fáil ag líne $a. Déanfar neamhaird den chomhadainm'; -$string['importquestions'] = 'Iompórtáil ceisteanna ó chomhad'; -$string['indivresp'] = 'Freagraí ó Dhaoine Aonair ar Gach Mír'; -$string['introduction'] = 'Réamhrá'; -$string['itemanal'] = 'Anailís ar Fhreagra Míre'; -$string['listitems'] = 'Liosta de Mhíreanna sa Tráth na gCeist'; -$string['marks'] = 'Marcanna'; -$string['match'] = 'Meaitseáil'; -$string['matchanswer'] = 'Freagra meaitseáilte'; -$string['missinganswer'] = 'Gan dóthain ráitis :ANSWER, :Lx, :Rx do cheist líne $a. Ní mór duit ar a laghad dhá fhreagra indéanta a shonrú'; -$string['missingcorrectanswer'] = 'Ní mór an freagra ceart a shonrú'; -$string['missingname'] = 'Ainm na ceiste ar iarraidh'; -$string['missingquestion'] = 'Lipéad na ceiste ar iarraidh tar éis líne $a'; -$string['missingquestiontext'] = 'Téacs na ceiste ar iarraidh'; -$string['missingword'] = 'Formáid focail ar iarraidh'; -$string['modulename'] = 'Tráth na gCeist'; -$string['modulenameplural'] = 'Tráthanna na gCeist'; -$string['multianswer'] = 'Freagraí Leabaithe (Cloze)'; -$string['multichoice'] = 'Ilroghnach'; -$string['name'] = 'Ainm'; -$string['noanswers'] = 'Níor roghnaíodh aon fhreagraí!'; -$string['noattempts'] = 'Níor déanadh aon iarrachtaí ar an tráth na gceist seo'; -$string['nomoreattempts'] = 'Níl aon iarrachtaí eile ceadaithe'; -$string['noquestions'] = 'Níor cuireadh aon cheisteanna leis go fóill'; -$string['noresponse'] = 'Gan Freagra'; -$string['noreview'] = 'Níl cead agat an tráth na gceist seo a athbhreithniú'; -$string['noreviewuntil'] = 'Níl cead agat an tráth na gceist seo a athbhreithniú go dtí $a'; -$string['notenoughsubquestions'] = 'Níor sonraíodh dóthain fo-cheisteanna!
                            Ar mhaith leat dul siar agus an cheist seo a dheisiú?'; -$string['numerical'] = 'Uimhriúil'; -$string['paragraphquestion'] = 'Ceist Paraghraif gan tacaíocht ag líne $a. Déanfar neamhaird den cheist'; -$string['percentcorrect'] = 'Ceadatán i gCeart'; -$string['publish'] = 'Foilsigh'; -$string['qti'] = 'Formáid IMS QTI'; -$string['question'] = 'Ceist'; -$string['questioninuse'] = 'Tá an cheist \'$a\' in úsáid faoi láthair:'; -$string['questionname'] = 'Ainm na ceiste'; -$string['questionnametoolong'] = 'Ainm ceiste ró-fhada ag líne $a (uasmhéid 255 carachtar). Teascadh é.'; -$string['questions'] = 'Ceisteanna'; -$string['quizavailable'] = 'Tá an tráth na gceist seo ar fáil go dtí: $a'; -$string['quizclose'] = 'Dún an tráth na gceist'; -$string['quizclosed'] = 'Dhún an tráth na gceist seo ar $a'; -$string['quizcloses'] = 'Tráth na gceist ag dúnadh'; -$string['quiznotavailable'] = 'Ní bheidh an tráth na gceist ar fáil go dtí: $a'; -$string['quizopen'] = 'Oscail an tráth na gceist'; -$string['random'] = 'Ceist Randamach'; -$string['randomcreate'] = 'Cruthaigh Ceisteanna Randamacha'; -$string['randomsamatch'] = 'Meaitseáil Randamach le Freagra Gairid'; -$string['randomsamatchcreate'] = 'Cruthaigh ceisteanna Meaitseáilte Randamacha a bhfuil Freagraí Gairide orthu'; -$string['randomsamatchintro'] = 'Do gach ceann de na ceisteanna a leanas, roghnaigh an freagra meaitseáilte ón roghchlár.'; -$string['randomsamatchnumber'] = 'Líon ceisteanna le roghnú'; -$string['readytosend'] = 'Tá tú ar tí do thráth na gceist iomlán a chur isteach lena ghrádú. An bhfuil tú cinnte gur mian leat leanacht ar aghaidh?'; -$string['recentlyaddedquestion'] = 'Ceist a cuireadh isteach le déanaí!'; -$string['regrade'] = 'Athghrádaigh gach iarracht'; -$string['regradecomplete'] = 'Athghrádaíodh gach iarracht'; -$string['regradecount'] = 'Athraíodh $a->changed grád as $a->attempt'; -$string['rename'] = 'Athainmnigh'; -$string['report'] = 'Tuairiscí'; -$string['reportfullstat'] = 'Staitisticí Mionsonrúla'; -$string['reportmulti_percent'] = 'Ilchéadatáin'; -$string['reportmulti_q_x_student'] = 'Roghanna Il-Mhac Léinn'; -$string['reportmulti_resp'] = 'Freagraí Indibhidiúla'; -$string['reportoverview'] = 'Forbhreathnú'; -$string['reportregrade'] = 'Athghrádaigh iarrachtaí'; -$string['reportsimplestat'] = 'Staitisticí simplí'; -$string['review'] = 'Athbhreithniú'; -$string['save'] = 'Sábháil'; -$string['savegrades'] = 'Sábháil gráid'; -$string['savemyanswers'] = 'Sábháil mo chuid freagraí'; -$string['savequiz'] = 'Sábháil an tráth na gceist iomlán seo'; -$string['score'] = 'Scór amh'; -$string['select'] = 'Roghnaigh'; -$string['selectall'] = 'Roghnaigh Uile'; -$string['selectcategoryabove'] = 'Roghnaigh catagóir thuas'; -$string['shortanswer'] = 'Freagra Gairid'; -$string['show'] = 'Léirigh'; -$string['showcorrectanswer'] = 'San aiseolas, léirigh freagraí cearta?'; -$string['showfeedback'] = 'Nuair a bhíonn freagra tugtha, léirigh aiseolas?'; -$string['shuffleanswers'] = 'Suaithigh freagraí'; -$string['shufflequestions'] = 'Suaithigh ceisteanna'; -$string['time'] = 'Am'; -$string['timecompleted'] = 'Comhlánaithe'; -$string['timetaken'] = 'Am glactha'; -$string['toomanyrandom'] = 'Tá níos mó ceisteanna randamach ag teastáil ná an líon atá sa chatagóir seo! ($a)'; -$string['true'] = 'Fíor'; -$string['truefalse'] = 'Fíor/Bréagach'; -$string['type'] = 'Cineál'; -$string['unknowntype'] = 'Cineál ceiste gan tacaíocht ag líne $a. Déanfar neamhaird den cheist'; -$string['viewallanswers'] = 'Féach $a tráth na gceist comhlánaithe'; -$string['viewallreports'] = 'Féach tuairiscí ar $a iarracht'; -$string['warningsdetected'] = '$a rabhadh aimsithe'; -$string['webct'] = 'Formáid WebCT'; -$string['withsummary'] = 'le Staitisticí Achomair'; -$string['wronggrade'] = 'Grád mícheart (tar éis líne $a) : '; -$string['yourfinalgradeis'] = 'Is é $a do ghrád deiridh ar an tráth na gceist seo'; - -?> diff --git a/lang/ga/readme b/lang/ga/readme deleted file mode 100644 index 1cc846d467e..00000000000 --- a/lang/ga/readme +++ /dev/null @@ -1,2 +0,0 @@ -Irish translation -By Cathal Ó Foirréidh \ No newline at end of file diff --git a/lang/ga/resource.php b/lang/ga/resource.php deleted file mode 100644 index 3d810c5f47b..00000000000 --- a/lang/ga/resource.php +++ /dev/null @@ -1,62 +0,0 @@ -'; -$string['filename'] = 'Ainm an chomhaid'; -$string['fulltext'] = 'Téacs iomlán'; -$string['htmlfragment'] = 'Blogh HTML'; -$string['modulename'] = 'Acmhainn'; -$string['modulenameplural'] = 'Acmhainní'; -$string['neverseen'] = 'Gan feiceáil riamh'; -$string['newdirectories'] = 'Taispeáin nascanna na comhadlainne'; -$string['newfullscreen'] = 'Líon an scáileán iomlán'; -$string['newheight'] = 'Airde fuinneoige réamhshocraithe (i bpicteilíní)'; -$string['newlocation'] = 'Léirigh an suíomhbharra'; -$string['newmenubar'] = 'Léirigh an barra roghchláir'; -$string['newresizable'] = 'Ceadaigh athrú méide na fuinneoige'; -$string['newscrollbars'] = 'Ceadaigh scrollú na fuinneoige'; -$string['newstatus'] = 'Léirigh an stádasbharra'; -$string['newtoolbar'] = 'Léirigh an barra uirlisí'; -$string['newwidth'] = 'Leithead fuinneoige réamhshocraithe (i bpicteilíní)'; -$string['newwindow'] = 'Fuinneog nua'; -$string['newwindowopen'] = 'Léirigh an acmhainn seo i bhfuinneog nua aníos'; -$string['note'] = 'Nóta'; -$string['notefile'] = 'Le tuilleadh comhaid a uaslódáil sa chúrsa (le go bhfeicfear ar an liosta seo iad) úsáid an Bainisteoir Comhad.'; -$string['notypechosen'] = 'Ní mór duit cineál a roghnú. Úsáid do chnaip \'siar\' agus bain triail eile as.'; -$string['popupresource'] = 'Ba cheart go léireofaí an acmhainn seo i bhfuinneog aníos.'; -$string['popupresourcelink'] = 'Munar léiríodh, cliceáil anseo: $a'; -$string['resourcetype'] = 'Cineál acmhainne'; -$string['resourcetype1'] = 'Tagairt'; -$string['resourcetype2'] = 'Leathanach Gréasáin'; -$string['resourcetype3'] = 'Comhad Uaslódáilte'; -$string['resourcetype4'] = 'Gnáth-théacs'; -$string['resourcetype5'] = 'Nasc Idirlín'; -$string['resourcetype6'] = 'Téacs HTML'; -$string['resourcetype7'] = 'Ríomhchlár'; -$string['resourcetype8'] = 'Téacs Wiki'; - -?> diff --git a/lang/ga/tex.php b/lang/ga/tex.php deleted file mode 100644 index b9ef68b4f3d..00000000000 --- a/lang/ga/tex.php +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/lang/ga/webquest.php b/lang/ga/webquest.php deleted file mode 100644 index 578effbb0f9..00000000000 --- a/lang/ga/webquest.php +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/lang/gl/auth.php b/lang/gl/auth.php index 3c6b836959c..57587bb239b 100644 --- a/lang/gl/auth.php +++ b/lang/gl/auth.php @@ -12,7 +12,7 @@ $string['auth_dbpass'] = 'O contrasinal correspondente ao nome de usuario/a ante $string['auth_dbpasstype'] = 'Especifique o formato que emprega o campo de contrasinal. A criptografía MD5 é útil para conectar con outras aplicacións web como PostNuke.'; $string['auth_dbtable'] = 'Nome da táboa na base de datos'; $string['auth_dbtitle'] = 'Usar unha base de datos externa'; -$string['auth_dbtype'] = 'O tipo de base de datos (Vexa a documentación de ADOdb para obter máis detalles)'; +$string['auth_dbtype'] = 'O tipo de base de datos (Vexa a documentación de ADOdb para obter máis detalles)'; $string['auth_dbuser'] = 'Usuario/a con acceso de lectura á base de datos'; $string['auth_emaildescription'] = 'A confirmación por correo electrónico é o método de autenticación predeterminado. Cando o usuario/a se inscribe, escollendo o seu propio nome de usuario e contrasinal, envíaselle unha mensaxe electrónica de confirmación ao seu enderezo de correo electrónico. Esta mensaxe contén unha ligazón segura a unha páxina onde o usuario/a pode confirmar a súa conta. As futuras entradas comproban o nome de usuario e contrasinal contra os valores gardados na base de datos de Moodle.'; $string['auth_emailtitle'] = 'Autenticación baseada en correo electrónico'; diff --git a/lang/gl/docs/coding.html b/lang/gl/docs/coding.html index fdaf5c08448..b0566fb4d13 100644 --- a/lang/gl/docs/coding.html +++ b/lang/gl/docs/coding.html @@ -133,11 +133,11 @@ li { de una sola línea). Moodle usa este estilo:

                            if ($quiz->attempts) {
                            + color="#0000cc">attempts
                            ) {
                                if (
                            $numattempts > $quiz->attempts) {
                            + color="#006600">) {
                                    
                            error($strtoomanyattempts, Martin Dougiamas. bajo la Licencia Pública GNU.

                            -


                            +


                            Agradecimientos especiales

                            -


                            +


                            Traducciones

                            @@ -83,7 +83,7 @@ href=
                          -


                          +


                          Temas

                          @@ -105,7 +105,7 @@ as
                        -


                        +


                        Otras contribuciones

                        @@ -123,7 +123,7 @@ donaciones, "http://moodle.org/community">Comunidad de Moodle
                      -
                      +

                      Un agradecimiento especial a todos aquellos que han contribuido con grandes cantidades de tiempo para ayudar con el @@ -132,8 +132,8 @@ c

                      Petri Asikainen, Greg Barnett, Ray Kingdon, Eloy Lafuente y Henrik Kaipe.
                      -
                      -
                      +
                      +

                      También gracias a todos aquellos que en algún tiempo han contribuido con discusiones constructivas, ofreciendo ayuda y con partes de código. La lista @@ -145,8 +145,8 @@ c Sean Keogh, Mitsuhiro Yoshida, Mark Kimes, Mary Hunter, Przemyslaw Stencel, Roberto Pinna (Bobo), John Eyre, Paula Edmiston, Scott Elliott, Howard Miller, Claudio Tavares, Zbigniew Fiedorowicz, P. Timothy Ervin, Bob Calder, Ursula - Raab, Thomas Robb, David Delgado, Mad Alex.
                      -
                      + Raab, Thomas Robb, David Delgado, Mad Alex.
                      +
                      @@ -155,7 +155,7 @@ c necesarias. :-)

                      -


                      +


                      Librerías de Moodle

                      @@ -165,7 +165,7 @@ Librer funciones importantes. La información de los derechos de autor se incluye a continuación:

                      -

                      ADOdb   -  lib/adodb
                      +

                      ADOdb   -  lib/adodb

                      @@ -173,11 +173,11 @@ Librer MySQL, PostgreSQL, MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 y ODBC.

                      -

                      Versión: 2.50
                      - Copyright © 2000, 2001 John Lim (jlim@natsoft.com.my)
                      - Licencia: LGPL y BSD-style
                      +

                      Versión: 2.50
                      + Copyright © 2000, 2001 John Lim (jlim@natsoft.com.my)
                      + Licencia: LGPL y BSD-style
                      URL:  http://php.weblogs.com/adodb
                      +"newpage">http://php.weblogs.com/adodb

                      @@ -187,93 +187,93 @@ Sybase, DB2 y ODBC.

                      Clase para dibujar lineas, puntos, barras y gráficos de área, incluyendo "eje x" numérico y doble "eje y".

                      -

                      Version: 1.6.3 (con modificaciones)
                      +

                      Version: 1.6.3 (con modificaciones)
                      Copyright © 2000  Herman -Veluwenkamp, hermanV@mindless.com
                      - Licencia: LGPL
                      +Veluwenkamp, hermanV@mindless.com
                      + Licencia: LGPL

                      IP-Atlas  -   lib/ipatlas

                      Scripts en PHP para mostrar la ubicación geográfica de una direccion - IP.
                      -
                      - Versión: 1.0 (con modificaciones)
                      - Copyright © 2002   Ivan Kozik
                      - Licencia: GNU GPL
                      + IP.
                      +
                      + Versión: 1.0 (con modificaciones)
                      + Copyright © 2002   Ivan Kozik
                      + Licencia: GNU GPL
                      URL: http://www.xpenguin.com/ip-atlas.php
                      +"newpage">http://www.xpenguin.com/ip-atlas.php

                      PclZip  -   lib/pclzip

                      Clase para crear, administrar y descomprimir archivos -zip.
                      -
                      - Versión: 2.0 RC-2
                      +zip.
                      +
                      + Versión: 2.0 RC-2
                      Copyright © 2003  Vincent Blavet -<vincent@phpconcept.net>
                      -Licencia: GNU GPL
                      +<vincent@phpconcept.net>
                      +Licencia: GNU GPL
                      URL: http://www.phpconcept.net
                      +"newpage">http://www.phpconcept.net
                      -

                      PHP mailer   -  lib/class.phpmailer.php
                      +

                      PHP mailer   -  lib/class.phpmailer.php

                      Clase para enviar correo electrónico utilizando sendmail, PHP mail() - o SMTP. Los métodos están basados en las clases AspEmail(TM).
                      -
                      -Versión 1.60, Created 03/30/2002
                      + o SMTP. Los métodos están basados en las clases AspEmail(TM).
                      +
                      +Versión 1.60, Created 03/30/2002
                      Copyright © 2001 Brent R. Matzelle -<bmatzelle@yahoo.com>
                      -Licencia: LGPL
                      +<bmatzelle@yahoo.com>
                      +Licencia: LGPL
                      URL:   http://phpmailer.sourceforge.net
                      -
                      +"newpage">http://phpmailer.sourceforge.net
                      +

                      PHP Simple Excel File Generator  -   lib/psxlsgen.php

                      Clase para generar archivos de Microsoft Excel (xls) sencillos vía - PHP.
                      -
                      -Versión: 0.3b
                      + PHP.
                      +
                      +Versión: 0.3b
                      Copyright © 2001  Erol Ozcan -<eozcan@superonline.com>
                      -License: GNU LGPL
                      +<eozcan@superonline.com>
                      +License: GNU LGPL
                      URL: http://psxlsgen.sourceforge.net
                      +"newpage">http://psxlsgen.sourceforge.net

                      Richtext Editor  -   lib/rte

                      -
                      Editor de texto HTML integrado en páginas web.
                      -
                      -Versión: 0.30 beta 1 (con modificaciones)
                      +
                      Editor de texto HTML integrado en páginas web.
                      +
                      +Versión: 0.30 beta 1 (con modificaciones)
                      Copyright © 2001 Ramesys (Contracting Services) Limited -<Austin.France@Ramesys.com> License: GNU LGPL
                      +<Austin.France@Ramesys.com> License: GNU LGPL
                      URL: http://richtext.sourceforge.net
                      +"newpage">http://richtext.sourceforge.net
                      -

                      SMTP class   -  lib/class.smtp.php
                      +

                      SMTP class   -  lib/class.smtp.php

                      Clase para conectar y comunicarwse con cualquier -servidor SMTP.
                      +servidor SMTP.
                      Implementa todas las funciones SMTP definidas en RFC821, excepto -TURN.
                      -
                      -Versión: 03/26/2001
                      +TURN.
                      +
                      +Versión: 03/26/2001
                      Copyright © 2001  Chris Ryan -<chris@greatbridge.com>
                      -
                      +<chris@greatbridge.com>
                      +
                      -

                      +

                      diff --git a/lang/gl/docs/cvs.html b/lang/gl/docs/cvs.html index 5502379d642..18dd43c366c 100644 --- a/lang/gl/docs/cvs.html +++ b/lang/gl/docs/cvs.html @@ -130,7 +130,7 @@ ejemplo:

                      -
                      cvs diff -c config-dist.php
                      cvs diff -c lang
                      +
                      cvs diff -c config-dist.php
                      cvs diff -c lang
                      @@ -148,7 +148,7 @@ podr
                      -
                      cd lang/ca 
                      cvs commit
                      +
                      cd lang/ca 
                      cvs commit
                      @@ -168,7 +168,7 @@ ejemplo, el m
                      -
                      diff -c 
                      update -dP
                      +
                      diff -c 
                      update -dP
                      @@ -182,28 +182,28 @@ ejemplo, el m cuenta de desarrollador.

                      1. Descargue TortoiseCVS de tortoisecvs.org - e instálelo, luego reinicie el ordenador.
                      -
                      + e instálelo, luego reinicie el ordenador.
                      +
                      2. Localice una carpeta o cree una nueva en algún lugar donde - quiera descargar Moodle.
                      -
                      + quiera descargar Moodle.
                      +
                      3. Haga clic con el botón derecho en esa carpeta y elija "CVS Checkout" del menú. Debería ver un cuadro - de diálogo.
                      -
                      + de diálogo.
                      +
                      4. Copie este texto en el campo CVSROOT (¡utilizando su propio nombre de usuario!):

                       :ext:myusername@cvs.moodle.sourceforge.net:/cvsroot/moodle
                      -


                      - 5. Presione el botón: "Fetch list...".
                      -
                      +


                      + 5. Presione el botón: "Fetch list...".
                      +
                      6. A la derecha del botón debería ver una lista de módulos: - elija "moodle" en esa lista.
                      -
                      + elija "moodle" en esa lista.
                      +
                      7. Apriete el botón: "OK" y se debería - descargar todo.
                      + descargar todo.

                      Los archivos en proceso de descarga se muestran en un cuadro de diálogo, @@ -213,7 +213,7 @@ ejemplo, el m

                      1. Haga clic con el botón derecho del ratón en su carpeta moodle (o en cualquier archivo) y seleccione "CVS Update". -
                      +

                      Tras haber modificado algún archivo (se dará cuenta de @@ -221,13 +221,13 @@ ejemplo, el m CVS de esta forma:

                      1. Haga clic con el botón derecho en su carpeta moodle (o en - cualquier archivo) y seleccione "CVS Commit...".
                      -
                      + cualquier archivo) y seleccione "CVS Commit...".
                      +
                      2. En el cuadro de diálogo, teclee una descripción clara - de los cambios que está enviando.
                      -
                      + de los cambios que está enviando.
                      +
                      3. Haga clic en "OK". Los cambios serán mandados al - servidor.
                      + servidor.

                       

                      diff --git a/lang/gl/docs/developer.html b/lang/gl/docs/developer.html index 81bc3e7c77a..f4895f621c9 100644 --- a/lang/gl/docs/developer.html +++ b/lang/gl/docs/developer.html @@ -64,9 +64,9 @@ dise
                    • Moodle debe poder ejecutarse en la más amplia -posible variedad de plataformas
                      +posible variedad de plataformas
                      -
                      +
                      La plataforma de aplicaciones Web que funciona en la mayoría de las plataformas es PHP combinada con MySQL, y este es el entorno en el que Moodle ha sido desarrollado (sobre Linux, Windows, y Mac OS X). Moodle también usa la librería @@ -74,17 +74,17 @@ posible variedad de plataformas
                      puede usar más de diez marcas diferentes de bases de datos (desafortunadamente, a pesar de ello, no puede aún crear tablas en todas esas bases de - datos. Hablaremos más sobre esto más adelante).
                      + datos. Hablaremos más sobre esto más adelante).
                      -
                      +
                    • Moodle debe ser fácil de instalar, aprender y -modificar
                      +modificar
                      -
                      +
                      Los primeros prototipos de Moodle (1999) se construyeron usando Zope, un avanzado servidor de aplicaciones @@ -98,31 +98,31 @@ modificar
                      en librerías con funciones claramente tituladas y con una disposición de los archivos de script, consistente. PHP es también fácil de instalar (existen versiones ejecutables para todas las plataformas) y está ampliamente disponible, - pues la mayoría de los servicios de alojamiento lo proporcionan como un estándar.
                      + pues la mayoría de los servicios de alojamiento lo proporcionan como un estándar.
                      -
                      +
                    • Debe ser fácil de actualizar desde una -versión a la siguiente
                      +versión a la siguiente
                      -
                      +
                      Moodle sabe cuál es su versión (así como las versiones de todos los módulos) y se ha construido un mecanismo interno para que Moodle pueda actualizarse a sí mismo de forma apropiada a las nuevas versiones (por ejemplo, puede renombrar las tablas de las bases de datos o añadir nuevos campos). Usando CVS en Unix, por ejemplo, uno tan sólo tiene que hacer un "cvs update -d" y luego visitar - la página principal del sitio para completar la actualización.
                      + la página principal del sitio para completar la actualización.
                      -
                      +
                    • -
                    • Debe ser modular para permitir el crecimiento
                      +
                    • Debe ser modular para permitir el crecimiento
                      -
                      +
                      Moodle tiene una serie de características modulares, incluyendo @@ -134,15 +134,15 @@ caracter incluso distribuirlas por separado. Hablaremos más de esto en la -siguiente sección.
                      +siguiente sección.
                      -
                      +
                    • -
                    • Debe poder usarse junto a otros sistemas.
                      +
                    • Debe poder usarse junto a otros sistemas.
                      -
                      +
                      Una de las cosas que hace Moodle es mantener todos los archivos para un @@ -240,7 +240,7 @@ resumen de una contribuci
                    • widget_user_complete() - dada una instancia, imprime detalles -sobre la contribución de un usuario
                      +sobre la contribución de un usuario
                    • @@ -373,7 +373,7 @@ sobre temas en el uso de Moodle. Si usted crea un bonito tema que considera que otros podrían querer usar, ¡por favor, -envíelo en un archivo comprimido al foro sobre temas!.
                      +envíelo en un archivo comprimido al foro sobre temas!.

                      @@ -415,21 +415,21 @@ subdirectorio del directorio "lang". La estructura del directorio
                    • survey.php - cadenas para el módulo de encuesta
                    • -
                    • .... además de otros módulos si los hay.
                      +
                    • .... además de otros módulos si los hay.
                      -
                      +
                      Se llama a las cadenas desde los archivos usando las funciones: get_string() o print_string(). Cada cadena admite la sustitución de variables para ayudar a la ordenación de variables en diferentes idiomas. - Por ejemplo:
                      + Por ejemplo:
                      -
                      +
                      $strdueby = get_string("assignmentdueby", "assignment", -userdate($date));
                      +userdate($date));
                      -
                      +
                      Si en un determinado idioma no existe una cadena, entonces se @@ -588,7 +588,7 @@ sobre c

                      ¡Gracias por usar Moodle!

                      -

                      Saludos,
                      +

                      Saludos,
                      Martin Dougiamas

                      diff --git a/lang/gl/docs/faq.html b/lang/gl/docs/faq.html index ab18ffc1d7b..716b502a4b4 100644 --- a/lang/gl/docs/faq.html +++ b/lang/gl/docs/faq.html @@ -240,7 +240,7 @@

                      Parse error: parse error, unexpected T_VARIABLE in c:\program - files\easyphp\www\moodle\config.php on line 94
                      + files\easyphp\www\moodle\config.php on line 94
                      Fatal error: Call to undefined function: get_string() in c:\program files\easyphp\www\moodle\mod\resource\lib.php @@ -302,7 +302,7 @@ por opciones incorrectas de "magic quotes". Moodle necesita las siguientes opciones (que normalmente están puestas por defecto):

                      -

                      magic_quotes_gpc = On
                      +

                      magic_quotes_gpc = On
                      magic_quotes_runtime = Off

                      diff --git a/lang/gl/docs/glossary.html b/lang/gl/docs/glossary.html index 581428fe36f..0b0d63aeab8 100644 --- a/lang/gl/docs/glossary.html +++ b/lang/gl/docs/glossary.html @@ -127,13 +127,13 @@ cliente FTP. Normalmente lo mejor es seleccionar

                      Ver CSS a continuación.

                      CSS

                      Abreviatura de "Cascading Style Sheets" (Hojas de Estilo - en Cascada).
                      + en Cascada
                      ).
                      Las CSS se utilizan como una plantilla para actualizar rápidamente el estilo de varias páginas, al tiempo que hace posible que un grupo de páginas tengan el mismo estilo.

                      CVS

                      Sistema de versionado concurrente. (Concurrent Versioning - System).
                      + System).
                      Es un método de guardar archivos en el servidor que ayuda a coordinar el trabajo de muchas personas. Revisar (check out) archivos de un repositorio CVS significa copiar las últimas versiones a su propia computadora @@ -151,7 +151,7 @@ cliente FTP. Normalmente lo mejor es seleccionar por ejemplo: moodle.org. Usted puede comprar nuevos nombres de dominio en Internet.

                      Descargar (download)

                      Transferir archivos de un servidor a su - computadora/ordenador personal.
                      + computadora/ordenador personal.
                      Ver también FTP y cargar.

                      directorio

                      También llamado carpeta (folder), es un espacio donde @@ -159,7 +159,7 @@ cliente FTP. Normalmente lo mejor es seleccionar encuentra con este concepto, es útil la referencia a una carpeta dentro de un archivo, con la salvedad de que en informática, las carpetas pueden tener otras carpetas dentro y otras dentro de éstas, lo que corresponde a directorios - y subdirectorios.
                      + y subdirectorios.
                      El directorio principal se llama directorio raíz, o rootdir.

                      Ver dirroot

                      dirroot

                      diff --git a/lang/gl/docs/install.html b/lang/gl/docs/install.html index 08fab96e2cb..c6fdbd25ef5 100644 --- a/lang/gl/docs/install.html +++ b/lang/gl/docs/install.html @@ -123,11 +123,11 @@ directorio Moodle, para ayudarle a orientarse:

                      config.php - El ÚNICO archivo que necesita editar para empezar a - trabajar
                      + trabajar
                      version.php - Define la versión actual del código de -Moodle
                      +Moodle
                      index.php - La página principal del sitio

                      @@ -227,10 +227,10 @@ documentaci > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.* TO moodleuser@localhost IDENTIFIED BY 'yourpassword'; > quit - # mysqladmin -p reload
                      + # mysqladmin -p reload

                      Ejemplo de líneas de comando para PostgreSQL:

                      -
                         # su - postgres
                      > psql -c "create user moodleuser createdb;" template1
                      > psql -c "create database moodle;" -U moodleuser template1
                      > psql -c "alter user moodleuser nocreatedb;" template1
                      +
                         # su - postgres
                      > psql -c "create user moodleuser createdb;" template1
                      > psql -c "create database moodle;" -U moodleuser template1
                      > psql -c "alter user moodleuser nocreatedb;" template1

                      (Para MySQL yo recomiendo vivamente el uso de

                      -
                      DirectoryIndex index.php index.html index.htm
                      <IfDefine APACHE2>
                      AcceptPathInfo on
                      </IfDefine>

                      php_value magic_quotes_gpc On
                      php_value magic_quotes_runtime Off
                      php_value file_uploads On
                      php_value short_open_tag On
                      php_value session.auto_start Off
                      php_value session.bug_compat_warn Off
                      +
                      DirectoryIndex index.php index.html index.htm
                      <IfDefine APACHE2>
                      AcceptPathInfo on
                      </IfDefine>

                      php_value magic_quotes_gpc On
                      php_value magic_quotes_runtime Off
                      php_value file_uploads On
                      php_value short_open_tag On
                      php_value session.auto_start Off
                      php_value session.bug_compat_warn Off
                      @@ -342,7 +342,7 @@ opciones por defecto.

                      podrán enviarse:

                      LimitRequestBody 0
                      -php_value upload_max_filesize 2M
                      php_value post_max_size 2M
                      +php_value upload_max_filesize 2M
                      php_value post_max_size 2M

                      La forma más sencilla de hacerlo es copiar el archivo de @@ -630,7 +630,7 @@ comandos de PHP.

                      -
                      /opt/bin/php /web/moodle/admin/cron.php


                      (Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php

                      +
                      /opt/bin/php /web/moodle/admin/cron.php


                      (Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php

                      diff --git a/lang/gl/docs/installamp.html b/lang/gl/docs/installamp.html index 7e62d02c83d..01340dba034 100644 --- a/lang/gl/docs/installamp.html +++ b/lang/gl/docs/installamp.html @@ -140,20 +140,20 @@ target= config.php
                    • Edite config.php usando un editor de texto (Notepad valdrá, pero tenga cuidado de que no añada espacios en blanco al final del archivo).
                    • -
                    • Ponga toda la información de su nueva base de datos:
                      - $CFG->dbtype = 'mysql';
                      - $CFG->dbhost = 'localhost';
                      - $CFG->dbname = 'moodle';
                      - $CFG->dbuser = 'root';
                      - $CFG->dbpass = '';
                      - $CFG->dbpersist = true;
                      - $CFG->prefix = 'mdl_';
                      +
                    • Ponga toda la información de su nueva base de datos:
                      + $CFG->dbtype = 'mysql';
                      + $CFG->dbhost = 'localhost';
                      + $CFG->dbname = 'moodle';
                      + $CFG->dbuser = 'root';
                      + $CFG->dbpass = '';
                      + $CFG->dbpersist = true;
                      + $CFG->prefix = 'mdl_';
                    • -
                    • Ponga la ruta de todos sus archivos:
                      +
                    • Ponga la ruta de todos sus archivos:
                      $CFG->wwwroot = 'http://localhost/moodle'; // Use una dirección externa - si la conoce.
                      - $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
                      - $CFG->dataroot = 'C:\moodledata';
                      + si la conoce.
                      + $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
                      + $CFG->dataroot = 'C:\moodledata';
                    • Guarde config.php - puede hacer caso omiso de cualquier otra configuración, si hay alguna.
                    • diff --git a/lang/gl/docs/intro.html b/lang/gl/docs/intro.html index 4113653ab7e..503973fb736 100644 --- a/lang/gl/docs/intro.html +++ b/lang/gl/docs/intro.html @@ -48,7 +48,7 @@ datos (en especial
                      MySQL).

                      un curso en línea. Todo el que usa Moodle es un Moodler.

                      Ven y ¡moodlea con nosotros!

                      -


                      +


                      Documentación de Moodle

                      diff --git a/lang/gl/docs/licence.html b/lang/gl/docs/licence.html index 0bd636e089c..51876881090 100644 --- a/lang/gl/docs/licence.html +++ b/lang/gl/docs/licence.html @@ -10,14 +10,14 @@

                      Licencia de Derechos de Autor de Moodle

                      Los derechos de autor de Moodle © 2001-2003, pertenecen a Martin Dougiamas.

                      -

                      Este programa es software libre; puede ser redistribuido y/o modificado
                      bajo - los términos de la Licencia Pública General GNU (GNU General Public License o GPL)
                      +

                      Este programa es software libre; puede ser redistribuido y/o modificado
                      bajo + los términos de la Licencia Pública General GNU (GNU General Public License o GPL)
                      según han sido publicados por la Free Software Foundation; según - la versión 2 de la licencia, o
                      (a su elección) cualquier versión posterior.

                      + la versión 2 de la licencia, o
                      (a su elección) cualquier versión posterior.

                      -

                      Este programa se distribuye con la esperanza de que sea útil,
                      pero -SIN NINGUNA GARANTÍA; incluso sin la garantía implícita de
                      - COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO EN PARTICULAR. Vea la
                      +

                      Este programa se distribuye con la esperanza de que sea útil,
                      pero +SIN NINGUNA GARANTÍA; incluso sin la garantía implícita de
                      + COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO EN PARTICULAR. Vea la
                      Licencia Pública General GNU para obtener más detalles (se adjunta a continuación).


                      Licencia Pública General GNU

                      diff --git a/lang/gl/docs/release.html b/lang/gl/docs/release.html new file mode 100644 index 00000000000..9b3c0df3b84 --- /dev/null +++ b/lang/gl/docs/release.html @@ -0,0 +1,388 @@ + + Moodle Docs: Release notes + + + + + + +

                      Notas sobre versiones

                      + +

                      Las novedades de Moodle 1.1 (28 de agosto de 2003):

                      +
                        +
                        +
                         
                        +
                        Los cambios más importantes
                        +
                        +
                        +
                        +
                          +
                        • Un sistema de copia de seguridad (backup) completamente + nuevo para respaldar y restaurar cursos (¡Gracias, Eloy!)
                        • +
                        • Un nuevo módulo de taller de evaluación + entre iguales (¡Gracias, Ray!)
                        • +
                        • Un nuevo módulo de chat para debates síncronos.
                        • +
                        • Un administrador de cursos totalmente nuevo para + manejar un gran número de cursos (probado con 3.700)
                        • +
                        • Escalas de calificación personalizadas que + pueden ser usadas en todo el curso.
                        • +
                        • Mejoras de rendimiento en muchas áreas
                        • +
                        +
                        +
                        +
                        +
                        General
                        +
                        +
                        +
                        +
                          +
                        • Rediseño de toda la organización del menú de + Administración para hacerlo más sencillo.
                        • +
                        • Las categorías pueden ser enlazadas y ordenadas alfabéticamente + o manualmente
                        • +
                        • Los cursos y todas las categorías pueden ocultarse de los estudiantes
                        • +
                        • Se pueden buscar palabras en las descripciones de los cursos y sus + nombres
                        • +
                        • Las categorías grandes son totalmente paginadas
                        • +
                        • Cache web mejorada para las hojas de esilo y las imágenes
                        • +
                        • Se muestran "Mis cursos" en la página inicial al + entrar.
                        • +
                        • Se incluye una página no enlazada para mostrar las fotografías + de TODOS los usuarios a la vez (vea /userpix)
                        • +
                        • La opción "secureforms" ahora está desactivada + por defecto.
                        • +
                        • Moodle ya no tiene en cuenta si "magic quotes" está + activado o no.
                        • +
                        • Las imágenes de /pix se han reorganizado y ordenado
                        • +
                        • El correo HTML está mejor formateado para mayor compatibilidad.
                        • +
                        • Los correos devueltos se mandan ahora al usuario adminstrador.
                        • +
                        • Mejores tareas de "cron" (se una menos CPU) y las inscripciones + duplicadas se eliminan.
                        • +
                        • Presentación mejorada de los registros con paginado infinito + y mayor flexibilidad.
                        • +
                        • Los gráficos de los registros de usuario ahora son a nivel + del sitio (mostrando TODOS los registros en el sitio)
                        • +
                        • Las presonas con cuentas manuales pueden ahora recuperar su contraseña
                        • +
                        • Sistema mejorado de definición e impresión de los archivos + de ayuda para los módulos de actividad principales
                        • +
                        • Los módulos de actividad ahora pueden tener opciones de configuración.
                        • +
                        • Las direcciones de correo electrónico están completamente + protegidas (para engañar a los robots de búsqueda)
                        • +
                        • Ahora hay un índice de archivos de ayuda
                        • +
                        +
                        +
                        +
                        +
                        +
                        Cursos
                        +
                        +
                        +
                        +
                          +
                        • Se puede retirar los privilegios de edición de cursos a los + profesores
                        • +
                        • Los profesores pueden inscribir manualmente a los estudiantes si lo + desean
                        • +
                        • La gestión de profesores está ahora integrada en una + única interfaz
                        • +
                        • Las actividades pueden moverse a cualquier sitio con dos clics
                        • +
                        • Los temas/semanas pueden moverse arriba y abajo
                        • +
                        • Hay un menú desplegable para cambiar rápidamente entre + temas/semanas cuando se muestra sólo uno.
                        • +
                        • Cuando los estudiantes se dan de alta en un curso por sí mismos, + se les avisa y se les da la oportunidad de cancelar la operación
                        • +
                        • Los profesores y estudiantes ven la lista de "Mis cursos" + en las páginas iniciales de los cursos
                        • +
                        • Se puede ocultar las calificaciones a los estudiantes si no son necesarias
                        • +
                        +
                        +
                        +
                        +
                        +
                        Idiomas
                        +
                        +
                        +
                        +
                          +
                        • Se han añadido el Húngaro y el Griego + y hay muchas otras actualizaciones. Como siempre, los paquetes de idioma + de esta versión pueden no estar totalmente completados. Debe + descargar siempre los últimos paquetes de idioma de http://moodle.org/download/lang/.
                        • +
                        • Actualizaciones y correcciones para la mayoría de los idiomas
                        • +
                        • Los idiomas tienen ahora un idioma madre (del que obtienen las cadenas + no traducidas)
                        • +
                        • Algunas correcciones de variables locale y formato de fecha/hora en + varios idiomas
                        • +
                        • es_mx se está abandonando en favor de "es" (Español + Internacional).
                        • +
                        +
                        +
                        +
                        +
                        +
                        Foros
                        +
                        +
                        +
                        +
                          +
                        • Búsquedas muy mejoradas, con múltiples términos + de búsqueda, paginación, etc.
                        • +
                        • La calificación de los foros puede estar desactivada, usada + por todos, o sólo por los profesores
                        • +
                        • La calificación de los foros puede usar escalas personalizadas + o números
                        • +
                        • Se puede establecer un rango de fechas para restringir los mensajes + que puedan ser calificados
                        • +
                        • El administrador puede configurar algunas opciones en Administración + -> Módulos -> Foros
                        • +
                        • Tras editar un mensaje, se vuelve al contexto en el que estaba
                        • +
                        • Las imágenes adjuntas se muestran dentro del mensaje
                        • +
                        +
                        +
                        +
                        +
                        Cuestionarios
                        +
                        +
                        +
                        +
                          +
                        • Hay un nuevo tipo de pregunta: Respuestas incrustadas (Cloze) - admite + pasajes de texto con respuestas incrustadas.
                        • +
                        • Hay un nuevo tipo de pregunta: Numérica - admite un rango de + respuestas numéricas.
                        • +
                        • Hay un nuevo tipo de pregunta: Descripción - no es una verdadera + pregunta, permite insertar texto o gráficos en cualquier parte.
                        • +
                        • Reporte de cuestionario expandido con extensiones (plugins) de reporte + modulares
                        • +
                        • Nueva característica para los intentos repetidos, donde cada + intento se basa en el anterior.
                        • +
                        • Si el cuestionario se cierra en las siguientes 24 horas, se muestra + un pequeño reloj de cuenta atrás en la barra de título + y las alertas avisan a los diez minutos y cero minutos.
                        • +
                        • Algún rediseño del código de cuestionario para + hacerlo más fácil de extender con nuevos tipos de pregunta.
                        • +
                        +
                        +
                        +
                        +
                        +
                        Materiales
                        +
                        +
                        +
                        +
                          +
                        • Se pueden poner los enlaces web en ventanas emergentes muy personalizables.
                        • +
                        • El administrador puede configurar algunas opciones en Adminstración + -> Módulos -> Materiales
                        • +
                        +
                        +
                        +
                        +
                        Algunos de los fallos más molestos han sido arreglados recientemente
                        +
                        +
                        +
                        +
                          +
                        • Al mover los mensajes ahora también se mueven los archivos + adjuntos
                        • +
                        • Ya no aparecen advertencias (warnings) cuando se buscan archivos + subidos en un curso vacío
                        • +
                        • Los estudiantes ya no reciben obligatoriamente mensajes de correo + electrónico en formato texto en los foros de subscripción + obligatoria.
                        • +
                        • Las cookies ya no interfieren con la configuración + del adminstrador en la instalación
                        • +
                        • Ya no hay un límite efectivo para el número de actividades + por sección
                        • +
                        • Se han arreglado muchos problemas en el manejo de archivos comprimidos + zip, especialmente en Windows
                        • +
                        • Los administradores pueden editar las cuentas creadas con bases de + datos externas
                        • +
                        • Las sesiones ya no entran en conflicto con otros programas
                        • +
                        • Los archivos Excel ya funcionan en ordenadores no-Intel.
                        • +
                        +
                        +
                        +
                        +
                         
                        +
                        +
                         
                        +
                      + +
                      +

                      Las novedades de Moodle 1.0.9 (29 de Mayo de 2003):

                      +
                        +
                        +
                        General
                        +
                        +
                      • Varias optimizaciones y mejoras significativas de rendimiento.
                      • +
                      • Importantes mejoras en seguridad.
                      • +
                      • Moodle ahora se comporta bien dentro de marcos (frames).
                      • +
                      • El editor de texto enriquecido puede utilizarse en más campos de texto.
                      • +
                      • Nuevo formato "Texto plano", muy útil para colocar código o HTML.
                      • +
                      • Nuevo formato "Texto Wiki", permite el estilo Wiki de formatear de texto + en muchos lugares.
                      • +
                      • Nueva ventana emergente permite instertar emoticonos (emoticons).
                      • +
                      • Posibilidad de especificar los permisos de las nuevas carpetas y archivos + creados en el servidor.
                      • +
                      • Algunas mejoras para servidores en Modo Seguro (safe mode) + (sigue habiendo algunos problemas).
                      • +
                      • Varias mejoras en la limpeza de texto.
                      • +
                      • Varias mejoras para la compatibilidad con PostgreSQL 7.3.
                      • +
                      • Comenzada la migración de HTML a XHTML Transitional.
                      • +
                      • Incontables mejoras en toda la plataforma.
                      • +
                        +
                        Idiomas
                        +
                        +
                      • ¡10 nuevos idiomas! español + de Argentina, checo, portugués, eslovaco, rumano, danés, ruso, polaco, + chino tradicional y francés canadiense.
                      • +
                      • Correciones y actualizaciones de la mayoría de los idiomas disponibles.
                      • +
                      • Ahora es posible especificar el idioma para la sesión en curso (ver + el menú en las páginas principal y de acceso), también puede modificarse + en cualquier página por algo como: http://moodle.org/?lang=ru.
                      • +
                      • El menú de idiomas puede ser restringido a un subjuego de los mismos + o incluso removido.
                      • +
                      • Las fuentes True Type (TTF) ahora forman parte de los paquetes de idiomas.
                      • +
                      • TODOS los formatos de fechas/hora pueden reformatearse como parte del + paquete de idiomas.
                      • +
                      • Se ha corregido un pequeño, pero incordiante fallo en el editor + de idiomas basado en web en los servidores Windows que hacía que + los archivos de idioma se agrandaran.
                      • +
                        +
                        Desarrolladores
                        +
                        +
                      • La variable global debug ofrece mayor información sobre variables no + inicializadas y cosas similares.
                      • +
                      • Varias mejoras para limpiar y estandarizar el código PHP.
                      • +
                      • Varias correcciones para fortalecer la plataforma (asegurando que las + variables estén siempre inicializadas).
                      • +
                        +
                        Administración
                        +
                        +
                      • Se han hecho algunos cambios en + opciones y código en el archivo config-dist.php (si está actualizando, + compárelo con el actual config.php o reconstrúyalo).
                      • +
                      • Cambios a los temas -los autores + de temas personalizados deberían leer theme/UPGRADE.txt
                      • +
                      • Nuevo registro en moodle.org para notificaciones de seguridad, etc.
                      • +
                      • El directorio Admin se pude cambiar de /admin a otro nombre (ver config-dist.hp).
                      • +
                      • La lista de usuarios ahora está paginada, y se pueden realizar + búsquedas.
                      • +
                      • Administración de módulos: los módulos de actividades ahora pueden ser + dados de baja o borrados completamente.
                      • +
                      • Mejoras en la página de edición de idiomas.
                      • +
                      • Mejor comprobación del entorno PHP durante la intalación, con + advertencias.
                      • +
                      • Proceso de instalación más limpio.
                      • +
                        +
                        Administración de usuarios
                        +
                        +
                      • Nueva categoría de usuarios: Creador de cursos. Semejante al maestro, + pero puede crear nuevos cursos.
                      • +
                      • Nueva autenticación llamada + "manual", impide que los usuarios creen sus propias cuentas.
                      • +
                      • "Olvidé mi contraseña" ahora utiliza una confirmación por correo electrónico + antes de cambiar la contraseña actual.
                      • +
                        +
                        Cursos
                        +
                        +
                      • Las actividades tienen un pequeño botón que las muestra u oculta + a los alumnos.
                      • +
                      • También se puede mostrar u ocultar semanas o temas completos.
                      • +
                      • La lista de participantes ahora está paginada, para poder soportar + clases muy grandes.
                      • +
                      • La compresión y descompresión de archivos zip ahora se hace internamente, + sin depender más de programas externos. Esto también significa que la + compresión y descompresión de archivos zip ahora funciona + en servidores Windows.
                      • +
                        +
                        Tareas
                        +
                        +
                      • Ahora es posible ordenar las tareas presentadas.
                      • +
                      • Ya no se envía la notificación de tareas por correo a los estudiantes + dados de baja.
                      • +
                        +
                        Foros
                        +
                        +
                      • La presentación de los foros ha mejorado enormememnte.
                      • +
                      • Todo un debate puede ser cambiado de un foro a otro con un simple clic.
                      • +
                      • La fecha/hora de los mensajes ahora refleja la "última modificación" + y no cuando fue "creado".
                      • +
                      • Se evitan los mensajes o asuntos vacíos.
                      • +
                      • Análisis más inteligente y mejor presentación de los mensajes.
                      • +
                      • Forzar la suscripción ahora funciona en el foro "Novedades" (envía correo + a todos los estudiantes y maestros).
                      • +
                      • Mejor manejo de los correos enviados, que evita el posible doble envío + en clases muy grandes.
                      • +
                        +
                        Módulo de Tarea de Taller (no incluido aún, se podrá descargar + por separado en breve)
                        +
                        +
                      • Un nuevo módulo muy interesante ofrecido por Ray Kingdon,
                      • +
                      • Una herramienta flexible que implementa varias evaluaciones entre iguales + y esquemas de configuración de ejemplos que involucran al grupo + entero al examinar y clalificar trabajos.
                      • +
                        +
                        Cuestionarios
                        +
                        +
                      • Nuevo tipo de pregunta: Organizada al azar (selecciona entre todas las + preguntas de la misma categoría).
                      • +
                      • Nuevo tipo de pregunta: Acierto (emparejamiento) . Los estudiantes deben + emparejar las preguntas y las respuestas).
                      • +
                      • Nuevo tipo de pregunta: Emparejamiento aleatorio de respuestas cortas + (crea preguntas de emparejamiento a partir de las respuestas cortas disponibles + en la misma categoría).
                      • +
                      • Es posible importar cuestionarios de archivos de texto (el diseño modular + permite la expansión a nuevos formatos -se incluye un módulo beta para + Blackboard).
                      • +
                      • Asistente para "Crear múltiples preguntas" para crear rápidamente + un cuestionario aleatorio.
                      • +
                      • Las preguntas de los cuestionarios pueden mezclarse aleatoriamente.
                      • +
                      • Las respuestas (opción múltiple, etc.) de los cuestionarios pueden + mezclarse aleatoriamente.
                      • +
                      • Corregido el problema de no utilizar el "Guardar calificaciones".
                      • +
                      • La recalificación funciona correctamente si el cuestionario se + ha modificado.
                      • +
                      • La edición de una pregunta después de que el cuestionario haya + sido respondido no afecta los resultados.
                      • +
                      • Las respuesta de opción múltiple son ahora a, b, c... + y no 1, 2, 3.
                      • +
                        +
                        Materiales
                        +
                        +
                      • Mejor rendimiento cuando se editan textos o materiales HTML grandes
                      • +
                      • Las imágenes ahora se presentan centradas en una página web adecuada + (no directamente).
                      • +
                      • Se ha añadido la opción de forrmato Wiki a las páginas + de materiales.
                      • +
                        +
                        Temas personalizados
                        +
                        +
                      • Se han añadido varios nuevos estilos a todos los temas incluidos. + Algunos de éstos son ESENCIALES para ver algunas de las nuevas características. + CONSULTE:  theme/UPGRADE.txt PARA VER LOS + CAMBIOS QUE HA DE HACER A LOS TEMAS ANTIGUOS.
                      • +
                      • Los temas personalizados ahora tienen la capacidad de redefinir todos + los pequeños gráficos de botones mediante la nueva entrada en theme/x/config.php + ($THEME->custompix) y un nuevo subdirectorio opcional pix. Para ver + un ejemplo échele un vistazo al tema "cordoroyblue".
                      • +
                        +
                        +
                      +
                      + + +

                      La información sobre versiones anteriores se puede consultar en Moodle.org announcement forum. + + +

                       

                      +

                      Documentación de Moodle

                      +

                      Version: $Id$

                      + + \ No newline at end of file diff --git a/lang/gl/docs/teacher.html b/lang/gl/docs/teacher.html index de144a50775..7c28184ec0f 100644 --- a/lang/gl/docs/teacher.html +++ b/lang/gl/docs/teacher.html @@ -128,7 +128,7 @@ superior de la p de los tres formatos (ignore las diferencias de color, las cuales fueron establecidas para todo el sitio por el administrador):

                      -

                      Formato semanal:
                      +

                      Formato semanal:
                      Vista de un curso con formato semanal. -
                      -
                      +
                      +

                      Consulta
                      Una actividad de consulta es muy simple. Usted hace una pregunta y especifica una elección de respuestas. Los estudiantes pueden hacer su elección @@ -255,16 +255,16 @@ usar Yo suelo usar esto para obtener consentimiento por parte de mis alumnos, pero usted puede usarlo para hacer una encuesta rápida o conseguir que la clase vote sobre algo.
                      -
                      -
                      +
                      +
                      Foro
                      Este módulo es, con mucho, el más importante. Es aquí donde la discusión tiene lugar. Cuando añada un nuevo foro, tendrá la posibilidad de elegir entre diferentes tipos: un "debate sencillo" sobre un único tema, un "foro para uso general" abierto a la participación de todos, o uno de tipo "cada persona plantea un tema".
                      -
                      -
                      +
                      +
                      Diario
                      Cada actividad del diario es una entrada en el diario del curso entero. Para cada uno usted puede especificar una pregunta abierta que guíe lo que @@ -276,15 +276,15 @@ usar todas las entradas de esa semana o tópico, y los estudiantes recibirán un mensaje de correo electrónico automático informándoles de su respuesta.
                      -
                      -
                      +
                      +
                      Material
                      Los materiales son el contenido de su curso. Cada material puede ser un archivo que usted haya subido o al que apunta usando una dirección (URL). También usted puede mantener páginas simples con texto, escribiéndolas directamente en un formulario al efecto.
                      -
                      -
                      +
                      +
                      Cuestionario
                      Este módulo le permite diseñar y proponer exámenes o test, compuestos de preguntas de opción múltiple , verdadero/falso, y preguntas con @@ -295,8 +295,8 @@ usar el profesor puede elegir si quiere que se muestren o no los comentarios o las respuestas correctas. Este módulo incluye utilidades de calificación.
                      -
                      -
                      +
                      +
                      Encuesta
                      El módulo de encuesta proporciona una serie de instrumentos de encuesta predefinidos que son útiles para la evaluación y comprensión de su clase. @@ -305,7 +305,7 @@ usar curso como herramienta de evaluación (En mis cursos, yo uso una cada semana).
                      -
                      +

                      Tras añadir sus actividades usted puede moverlas arriba y abajo en la presentación de su curso haciendo clic en los pequeños iconos de flecha (

                      Haga una copia separada de estos archivos antes de hacer la actualización, de manera que pueda recuperar su config.php -y de cualquier módulo que haya añadido como temas, idiomas, etc.
                      +y de cualquier módulo que haya añadido como temas, idiomas, etc.

                      2. Su directorio de datos.

                      @@ -51,7 +51,7 @@ y de cualquier m

                      Aquí es donde reside el contenido enviado (como los materiales de los cursos y las tareas de los estudiantes) así que es muy importante tener una copia de seguridad de estos archivos. Algunas veces la actualización puede mover - o renombrar directorios dentro de su directorio de datos.
                      + o renombrar directorios dentro de su directorio de datos.

                      3. Su base de datos

                      @@ -93,7 +93,7 @@ moodle > moodle-backup-2002-10-26.sql

                      style="padding-left: 3em; font-family: 'Courier New',Courier,monospace;">mv -moodle moodle.backup
                      +moodle moodle.backup
                      tar xvzf moodle-1.1.tgz

                      A continuación, copie su config.php y cualquier otra extensión, como los temas personalizados:

                      @@ -101,7 +101,7 @@ moodle moodle.backup
                      style="padding-left: 3em; font-family: 'Courier New',Courier,monospace;">cp -moodle.backup/config.php moodle
                      +moodle.backup/config.php moodle
                      cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme

                      @@ -146,9 +146,9 @@ de admin de su instalaci

                      Moodle detecta automáticamente la nueva versión y lleva a cabo todas las actualizaciones necesarias de las bases de datos y archivos de sistema. Si hay algo que no puede hacer por sí mismo (caso muy raro) entonces aparecerán - mensajes diciéndole lo que tiene que hacer.
                      + mensajes diciéndole lo que tiene que hacer.
                      -
                      +
                      Suponiendo que todo vaya bien (que no aparezca ningún mensaje de diff --git a/lang/gl/editor.php b/lang/gl/editor.php index 888515a0808..f1bc20cd5aa 100644 --- a/lang/gl/editor.php +++ b/lang/gl/editor.php @@ -4,7 +4,7 @@ $string['about'] = 'Acerca deste editor'; $string['absbottom'] = 'Fondo absoluto'; -$string['middle'] = 'Medio absoluto'; +$string['absmiddle'] = 'Medio absoluto'; $string['address'] = 'Enderezo'; $string['alignment'] = 'Aliñación'; $string['alternatetext'] = 'Texto alterno'; diff --git a/lang/gl/forum.php b/lang/gl/forum.php index 3129db197c7..a8702bf36ee 100644 --- a/lang/gl/forum.php +++ b/lang/gl/forum.php @@ -84,7 +84,7 @@ $string['openmode1'] = 'Non permitir debates, pero si respostas'; $string['openmode2'] = 'Permitir debates e respostas'; $string['parent'] = 'Mostrar mensaxe anterior'; $string['parentofthispost'] = 'Anterior a esta mensaxe'; -$string['postadded'] = 'A súa mensaxe colocouse con éxito.
                      Ten $a para editala se quere facer calquera cambio.'; +$string['postadded'] = 'A súa mensaxe colocouse con éxito.

                      Ten $a para editala se quere facer calquera cambio.'; $string['postincontext'] = 'Mira esta mensaxe no seu contexto'; $string['postmailinfo'] = 'Esta é unha copia da mensaxe publicada en $a . Para responder a esta mensaxe, faga clic nesta ligazón:'; diff --git a/lang/gl/glossary.php b/lang/gl/glossary.php index f318d6835a2..8ba1bdaf3ec 100644 --- a/lang/gl/glossary.php +++ b/lang/gl/glossary.php @@ -85,11 +85,11 @@ $string['entryexported'] = 'Entrada exportada con $string['entryishidden'] = '(esta entrada actualmente está oculta)'; $string['entryleveldefaultsettings'] = 'Axustes por defecto do nivel de entrada'; $string['entryusedynalink'] = 'Esta entrada será enlazada automaticamente'; -$string['explainaddentry'] = 'Engadir unha nova entrada ao glosario actual.
                      Concepto e definición son campos obrigatorios.'; +$string['explainaddentry'] = 'Engadir unha nova entrada ao glosario actual.
                      Concepto e definición son campos obrigatorios.'; $string['explainall'] = 'Amosar TODAS as entradas nunha páxina'; $string['explainalphabet'] = 'Navegue polo glosario usando este índice.'; -$string['explainexport'] = 'Xerouse un arquivo.
                      Descárgueo e gárdeo. Poderá importalo en calquera momento neste ou noutro curso.'; -$string['explainimport'] = 'Debe especificar o arquivo a importar e definir o criterio do proceso.

                      Envíe a súa solicitude e revise os resultados.

                      '; +$string['explainexport'] = 'Xerouse un arquivo.
                      Descárgueo e gárdeo. Poderá importalo en calquera momento neste ou noutro curso.'; +$string['explainimport'] = 'Debe especificar o arquivo a importar e definir o criterio do proceso.

                      Envíe a súa solicitude e revise os resultados.'; $string['explainspecial'] = 'Amosa as entradas que non comenzan cunha letra'; $string['exportedentry'] = 'Entrada exportada'; $string['exportedfile'] = 'Arquivo exportado'; diff --git a/lang/gl/help/assignment/mods.html b/lang/gl/help/assignment/mods.html index 391df90c241..4c3e266c360 100644 --- a/lang/gl/help/assignment/mods.html +++ b/lang/gl/help/assignment/mods.html @@ -1 +1,8 @@ -

                       Tarefas

                      O módulo de tarefas permite que o profesor/a asigne un traballo ao alumnado, incluso deberán preparalo nalgún medio dixital (calquera formato) e presentalo subíndoo ao servidor. As tarefas típicas inclúen ensaios, proxectos, fotografías, etc. Este módulo conta con capacidade de cualificación.

                      \ No newline at end of file +

                       Tarefas

                      + +

                      O módulo de tarefas permite que o profesor/a asigne un traballo ao alumnado, +incluso deberán preparalo nalgún medio dixital (calquera formato) e presentalo +subíndoo ao servidor. As tarefas típicas inclúen ensaios, proxectos, fotografías, etc. Este módulo +conta con +capacidade de cualificación.

                      + diff --git a/lang/gl/help/chat/mods.html b/lang/gl/help/chat/mods.html index 03d5165f1bb..bddb86623e5 100644 --- a/lang/gl/help/chat/mods.html +++ b/lang/gl/help/chat/mods.html @@ -1 +1,7 @@ -

                       Chat

                      O módulo de chat permite que os participantes discutan en tempo real a través de Internet. Este é un xeito útil de ter unha compresión dos outros e do tema de debate --empregar unha sala de chat é bastante diferente a utilizar os foros. O módulo de chat contén varias utilidades para administrar e revisar as conversas anteriores.

                      \ No newline at end of file +

                       Chat

                      +

                      O módulo de chat permite que os participantes discutan +en tempo real a través de Internet. Este é un xeito útil de ter unha +compresión dos outros e do tema de debate --empregar unha sala de chat é bastante diferente a +utilizar os foros. O módulo de chat contén varias +utilidades para administrar e revisar as conversas +anteriores.

                      diff --git a/lang/gl/help/choice/mods.html b/lang/gl/help/choice/mods.html index 804791b8b00..437f9871fc9 100644 --- a/lang/gl/help/choice/mods.html +++ b/lang/gl/help/choice/mods.html @@ -1 +1,8 @@ -

                       Consulta

                      A consulta é unha actividade moi sinxela, o profesor/a fai unha pregunta e especifica unha serie de respostas entre as cales debe elixir o alumnado. Pode ser moi útil para realizar enquisas rápidas sobre o tema, para permitir que o grupo decida sobre varios temas, para efectos de investigación, etc.

                      \ No newline at end of file +

                       Consulta

                      + +

                      A consulta é unha actividade moi sinxela, o profesor/a fai unha +pregunta e especifica unha serie de respostas entre as cales debe elixir o alumnado. +Pode ser moi útil para realizar enquisas rápidas sobre o tema, para permitir que +o grupo +decida sobre varios temas, para efectos de investigación, +etc.

                      diff --git a/lang/gl/help/forum/mods.html b/lang/gl/help/forum/mods.html index c795289f84f..cec36682546 100644 --- a/lang/gl/help/forum/mods.html +++ b/lang/gl/help/forum/mods.html @@ -1 +1,11 @@ -

                       Foros

                        Esta actividade tal vez sexa a máis importante --é aquí onde se producen a maior parte dos debates. Os foros poden estructurarse de diferentes xeitos, e poden incluír avaliación de cada mensaxe polos compañeiros/as.
                        As mensaxes tamén se poden ver de varios xeitos, incluír mensaxes adxuntas e imaxes incrustadas.
                        Ao subscribirse a un foro os participantes recibirán copias de cada mensaxe no seu buzón de correo electrónico. O profesor/a pode impor a subscrición a todos os integrantes do curso se así o desexa.

                      \ No newline at end of file +

                       Foros

                      +
                        +

                        Esta actividade tal vez sexa a máis importante --é aquí onde se producen a +maior parte dos debates. Os foros poden estructurarse de diferentes xeitos, e poden +incluír avaliación de cada mensaxe polos compañeiros/as.
                        +As mensaxes tamén se poden ver de varios xeitos, incluír mensaxes adxuntas +e imaxes incrustadas.
                        +Ao subscribirse a un foro os participantes recibirán copias de cada mensaxe no seu +buzón de correo electrónico. O profesor/a pode impor a subscrición a todos os +integrantes do curso se así o desexa. +

                      diff --git a/lang/gl/help/journal/mods.html b/lang/gl/help/journal/mods.html index 4ed35fe0a8d..543989c5bea 100644 --- a/lang/gl/help/journal/mods.html +++ b/lang/gl/help/journal/mods.html @@ -1 +1,9 @@ -

                       Xornal

                      Este módulo fomenta unha importante actividade reflexiva. O profesor/a incita aos estudantes a reflexionar sobre un tema en particular e o estudante pode editar e pulir a súa resposta conforme pasa o tempo. Este xornal é privado, só pode ser visto polo profesor/a, o cal pode ofrecer respostas e cualificacións en cada ocasión. Normalmente é unha boa idea ter cando menos un Xornal por semana.

                      \ No newline at end of file +

                       Xornal

                      + +

                      Este módulo fomenta unha importante actividade reflexiva. O profesor/a incita aos +estudantes a reflexionar sobre un tema +en particular e o estudante pode editar e pulir a súa resposta +conforme pasa o tempo. Este xornal é privado, só pode +ser visto polo profesor/a, o cal pode ofrecer respostas e cualificacións en cada ocasión. Normalmente +é unha boa +idea ter cando menos un Xornal por semana.

                      diff --git a/lang/gl/help/mods.html b/lang/gl/help/mods.html index 1c8f6253133..e1525f63316 100644 --- a/lang/gl/help/mods.html +++ b/lang/gl/help/mods.html @@ -2,7 +2,7 @@

                      Esta plataforma contén varios módulos de actividades.

                      -

                       Foros

                      +

                       Foros

                        Este módulo é moi importante, dado que nel se dá o maior intercambio. Os foros pódense estructurar de diferentes xeitos, e poden incluír cualificacións. As @@ -12,7 +12,7 @@ cada mensaxe no seu buz subscrición a determinado foro.

                      -

                       Xornais

                      +

                       Xornais

                        Este módulo é moi importante para a actividade reflexiva. O profesor/a propón ao alumnado reflexionar sobre diferentes temas, e os estudantes @@ -21,7 +21,7 @@ e s

                      -

                       Apuntamentos

                      +

                       Apuntamentos

                        Os materiais son contidos, información que o profesor/a quere que vexa o seu alumnado. Poden ser documentos preparados e subidos ao servidor, páxinas editadas directamente @@ -29,7 +29,7 @@ na plataforma ou p

                      -

                       Tarefas

                      +

                       Tarefas

                        As tarefas permiten ao profesorado asignar actividades aos estudantes, que consisten en preparar contidos dixitais (de calquera tipo) que o alumno/a @@ -38,7 +38,7 @@ redacci

                      -

                       Cuestionarios

                      +

                       Cuestionarios

                        Este módulo permite que o profesor/a deseñe e formule cuestionarios. Estes cuestionarios poden ser: múltiple opción, falso/verdadeiro e respostas curtas. @@ -49,7 +49,7 @@ pode decidir se amosar a cualificaci unha vez concluído o cuestionario. Ademais posúe cualificación.

                      -

                       Consultas

                      +

                       Consultas

                        As consultas son moi sinxelas: o profesor/a fai unha pregunta e determina certas opcións, das cales o alumnado elixirá unha. É útil para coñecer rapidamente @@ -57,7 +57,7 @@ o sentimento do grupo sobre alg do grupo ou para efectos de investigación.

                      -

                       Enquisas

                      +

                       Enquisas

                        O módulo de enquisas prové unha serie de instrumentos probados para estimular a aprendizaxe en ambientes en liña. O profesorado pode empregar este módulo para aprender sobre diff --git a/lang/gl/help/quiz/import.html b/lang/gl/help/quiz/import.html new file mode 100644 index 00000000000..235171ed11a --- /dev/null +++ b/lang/gl/help/quiz/import.html @@ -0,0 +1,48 @@ +

                        Importar preguntas

                        + +

                        Esta función permite importar preguntas de arquivos de texto, cargados a través +dun formulario.

                        Os formatos permitidos son: + +

                        Encher o branco

                        +
                          +

                          Este formato só soporta preguntas de múltiple opción. +Cada pregunta sepárase cun til (~), e a resposta correcta precédese cun signo de igual (=). Un +exemplo: +

                          Cando comezamos a explorar as partes do noso corpo convertímonos en + estudosos de: {=anatomía e fisioloxía ~reflexoloxía +~a ciencia ~os experimentos}, e, en certo sentido, seguimos sendo estudantes o + resto da vida. +
                          + +

                          Máis información:

                          +
                        + + +

                        AON

                        +
                          +

                          Este é o mesmo caso de encher o branco, excepto que logo de ser importadas, +todas as preguntas convírtense en grupos de catro preguntas de seleccionar a correcta.

                          +

                          Chámase así en honor a unha empresa que impulsou o desenvolvemento de moitas +caraterísticas para os cuestionarios.

                          +
                        + + +

                        Blackboard

                        +
                          +

                          Este módulo pode importar preguntas gardadas coa característica de exportar +preguntas do programa Blackboard. Apóiase na capacidade de compilar funcións +XML nos seus correspondentes PHP.

                          + +

                          Maior información:

                          +
                        + +

                        Persoal

                        +
                          +

                          Se ten o seu propio formato que desexa importar, pode implementalo editando +mod/quiz/format/custom.php

                          A cantidade de código novo necesaria é bastante pequena.

                          Maior +información:

                          +
                        + + +

                        Máis formatos estanse desenvolvendo, incluíndo WebCT, IMS QTI e calquera outro +que os usuarios/as de Moodle queiran aportar.

                        diff --git a/lang/gl/help/quiz/mods.html b/lang/gl/help/quiz/mods.html index 56a191c23d4..957e2f893be 100644 --- a/lang/gl/help/quiz/mods.html +++ b/lang/gl/help/quiz/mods.html @@ -1 +1,10 @@ -

                         Cuestionario

                        Este módulo permite ao profesor/a deseñar e formular cuestionarios consistentes en: múltiple opción, falso/verdadeiro e respostas curtas. Estas preguntas mantéñense ordenadas por categorías nunha base de datos e poden ser reutilizadas no mesmo curso ou noutros cursos. Os cuestionarios poden permitir múltiples intentos. Cada intento é marcado e cualificado e o profesor/a pode decidir amosar algunha mensaxe ou as respostas correctas ao finalizar o exame. Este módulo ten capacidade de cualificación.

                        \ No newline at end of file +

                         Cuestionario

                        +

                        Este módulo permite ao profesor/a deseñar e formular +cuestionarios consistentes en: múltiple opción, falso/verdadeiro e respostas curtas. +Estas preguntas mantéñense +ordenadas por categorías nunha base de datos e poden ser +reutilizadas no mesmo curso ou noutros cursos. Os +cuestionarios poden permitir múltiples intentos. Cada +intento é marcado e cualificado e o profesor/a pode decidir amosar algunha +mensaxe ou as respostas correctas ao +finalizar o exame. Este módulo ten capacidade de cualificación.

                        diff --git a/lang/gl/help/quiz/multianswer.html b/lang/gl/help/quiz/multianswer.html index 1c6e2d305d7..06da0dcb130 100644 --- a/lang/gl/help/quiz/multianswer.html +++ b/lang/gl/help/quiz/multianswer.html @@ -46,7 +46,7 @@ width="90%">

                        3

                        8 Puntos


                        + src="multianswer_files/spacer.htm" width=100>

                        Esta pregunta consiste nun texto que contén unha resposta incrustada logo comprobará esta resposta curta e finalmente temos un número con coma flotante .

                        Advirta que enderezos como .

                        Advirta que enderezos como
                        http://www.moodle.org/ e emoticonas :-) funcionan do xeito habitual:
                        a) ¿É + height=15 src="" width=15> funcionan do xeito habitual:
                        a) ¿É correcto?
                        b) - ¿Que puntuación lle daría?

                        ¡Boa + value=13>Sí
                        b) + ¿Que puntuación lle daría?

                        ¡Boa sorte!

                        -
                        +
                        diff --git a/lang/gl/help/resource/mods.html b/lang/gl/help/resource/mods.html index 20c1e01fc97..06bc261729a 100644 --- a/lang/gl/help/resource/mods.html +++ b/lang/gl/help/resource/mods.html @@ -1 +1,4 @@ -

                         Materiais

                        Materiais son contidos: información que o profesor/a desexa entregar ao alumnado. Poden ser arquivos preparados e cargados no servidor; páxinas editadas directamente en Moodle, ou páxinas web externas que aparecen no curso.

                        \ No newline at end of file +

                         Materiais

                        +

                        Materiais son contidos: información que o profesor/a desexa entregar ao +alumnado. Poden ser arquivos preparados e cargados no servidor; páxinas +editadas directamente en Moodle, ou páxinas web externas que aparecen no curso.

                        diff --git a/lang/gl/help/resource/resourcetype.html b/lang/gl/help/resource/resourcetype.html new file mode 100644 index 00000000000..788560e0e5d --- /dev/null +++ b/lang/gl/help/resource/resourcetype.html @@ -0,0 +1,26 @@ +

                        Tipos de Material

                        + +

                        Os Materiais son calquera tipo de contido que vostede desexe colocar para a lectura +dos estudantes. Os diferentes tipos son:

                        Texto Plano - o tipo máis +doado. Vostede simplemente pode teclear (editar) a páxina dun formulario na páxina +seguinte. Algunhas das cousas que teclee +serán automaticamente formateadas, da mesmo xeito que as mensaxes nos foros. Vexa +a axuda sobre escribir texto:

                        Texto HTML - para os usuarios/as máis avanzados. Non se efectúa ningún tipo +de formateo automático, senón que vostede ten que facelo manualmente +empregando os +códigos de HTML.

                        Referencia - unha referencia a un xornal ou libro.

                        Arquivo subido - +amosa calquera arquivo que subira ao curso. Vexa a sección de "Arquivos".

                        Enlace Web - Unha +ligazón (link) a algunha parte da web. Cando o alumno/a fai +clic neste material será levado fóra do curso (a páxina especificada encherá +a xanela do navegador).

                        Páxina Web - Unha URL a algunha parte da web. Como +o tipo de material +anterior, isto amosará unha páxina web. Pero, ó contrario deste, a páxina amosarase +dentro dun marco, como se estivese integrada dentro do curso.

                        Programa - Un programa externo que +require información do usuario/a e +curso. Isto permite que aplicacións externas de Internet cooperen con Moodle. +Máis información sobre Programas

                        + +

                        Texto Wiki - Permite formatear texto sen empregar HTML. O formato consíguese con caracteres +normais, por exemplo: *isto é negriñas* /isto é cursivas/). +Máis información sobre Wiki

                        diff --git a/lang/gl/help/survey/mods.html b/lang/gl/help/survey/mods.html index 246b9fcf24b..4a883333032 100644 --- a/lang/gl/help/survey/mods.html +++ b/lang/gl/help/survey/mods.html @@ -1,4 +1,4 @@ -

                         Encuestas

                        +

                         Encuestas

                          El módulo de Encuestas proporciona un conjunto de instrumentos verificados que se han mostrado útiles para evaluar y estimular diff --git a/lang/gl/help/workshop/mods.html b/lang/gl/help/workshop/mods.html index 1c274a199c8..75c611dabcd 100644 --- a/lang/gl/help/workshop/mods.html +++ b/lang/gl/help/workshop/mods.html @@ -1,4 +1,4 @@ -

                           Taller

                          +

                           Taller

                            El Taller es una actividad para el trabajo en grupo con un vasto número de opciones. Permite a los participantes diversas formas de evaluar los proyectos de los demás, así como diff --git a/lang/gl/journal.php b/lang/gl/journal.php index 9128f08c974..dc45c15dd32 100644 --- a/lang/gl/journal.php +++ b/lang/gl/journal.php @@ -9,8 +9,13 @@ $string['editingended'] = "O per $string['editingends'] = "Período de edición finalizado"; $string['entries'] = "Entradas"; $string['feedbackupdated'] = "Resposta actualizada en \$a entries"; -$string['journalmail'] = "\$a->teacher fixo algúns comentarios sobre a súa entrada no xornal en '\$a->journal' Pode velos engadidos á súa entrada no xornal: \$a->url"; -$string['journalmailhtml'] = "\$a->teacher fixo algúns comentarios sobre a súa entrada no xornal en '\$a->journal'

                            Pode velos engadidos á súa url\">entrada en xornal."; +$string['journalmail'] = "\$a->teacher fixo algúns comentarios sobre a súa entrada no xornal en '\$a->journal' + +Pode velos engadidos á súa entrada no xornal: + + \$a->url"; +$string['journalmailhtml'] = "\$a->teacher fixo algúns comentarios sobre a súa entrada no xornal en '\$a->journal'

                            +Pode velos engadidos á súa url\\\">entrada en xornal."; $string['journalname'] = "Nome do xornal"; $string['journalquestion'] = "Pregunta do xornal"; $string['journalrating1'] = "Non satisfactorio"; diff --git a/lang/gl/moodle.php b/lang/gl/moodle.php index 755ecc0b9f8..415e486a16d 100644 --- a/lang/gl/moodle.php +++ b/lang/gl/moodle.php @@ -100,7 +100,7 @@ $string['backuplogshelp'] = 'Para seleccionar se desexa inclu $string['backupnameformat'] = '%%d%%m%%Y-%%H%%M'; $string['backupnoneusersinfo'] = 'Nota: Vostede seleccionou facer unha copia de seguridade de \"ningún\" usuario, polo que todas as copias dos módulos foron cambiadas ao modo \"sen datos de usuario\". Por favor, advirta que os módulos \"Exercicio\" e \"Xornal\" non son compatibles con este tipo de copia de seguridade, de modo que foron completamente desactivados.'; $string['backuporiginalname'] = 'Nome da copia de seguridade'; -$string['backupsavetohelp'] = 'Ruta completa do directorio no que desexa que se garden as copias de seguridade
                            (deixalo en branco para gardalas no directorio por defecto de cada curso)'; +$string['backupsavetohelp'] = 'Ruta completa do directorio no que desexa que se garden as copias de seguridade
                            (deixalo en branco para gardalas no directorio por defecto de cada curso)'; $string['backupuserfileshelp'] = 'Seleccione se os arquivos de usuario (ex. a foto do usuario) deben ser incluídos nas copias de seguridade automáticas'; $string['backupusershelp'] = 'Seleccione se desexa incluír todos os usuarios do servidor ou só os vinculados ao curso na copia de seguridade'; $string['backupversion'] = 'Versión da copia de seguridade'; @@ -168,7 +168,7 @@ $string['configlongtimenosee'] = 'Se os estudantes non participaron durante este $string['configmaxbytes'] = 'Especifica o tamaño máximo dos arquivos que os usuarios/as poden subir ao servidor. Esta variable está limitada polas variables de PHP upload_max_filesize e de Apache LimitRequestBody. Por outra banda, maxbytes limita o tamaño total nun curso ou módulo.'; $string['configmaxeditingtime'] = 'Especifique o tempo que os participantes teñen para editar as súas mensaxes. Normalmente 30 minutos é un valor adecuado.'; $string['configopentogoogle'] = 'Se habilita esta opción, Google poderá entrar no seu sitio como convidado. Adicionalmente, a xente que entre ao seu sitio por unha búsqueda de Google accederá automaticamente como convidado. Observe que isto proporciona acceso soamente aos cursos que xa teñen a entrada permitida a convidados.'; -$string['configproxyhost'] = 'Se este servidor necesita un proxy (por exemplo un firewall) para acceder a internet, indique o nome do proxy e o porto.'; +$string['configproxyhost'] = 'Se este servidor necesita un proxy (por exemplo un firewall) para acceder a internet, indique o nome do proxy e o porto.'; $string['configsecureforms'] = 'Moodle pode usar un nivel adicional de seguridade ao aceptar datos desde formularios web. Se isto está habilitado, a variable do navegador HTTP_REFERER contrástase co enderezo actual no formulario. Nalgúns casos isto pode causar problemas se o/a usuario/a está usando un cortalumes (ex. Zonealarm) configurado para quitar os HTTP_REFERER do seu tráfico web. Síntomas disto son quedarse \"atascado\" nun formulario. Se os seus usuarios/as están tendo problemas coa páxina de inscrición (por exemplo) debe deshabilitar esta opción, aínda que facelo deixará o seu sitio máis aberto á posibilidade de ataques mediante \"forza bruta\". Se ten dúbidas, deixe isto establecido como \'Si\'.'; $string['configsessioncookie'] = 'Esta variable define o nome da cookie que Moodle utiliza para as súas sesións. Esta é opcional, e é só útil cando existe máis dunha copia de Moodle instalada no mesmo sitio web.'; $string['configsessiontimeout'] = 'Se unha persoa entrou neste sitio e permanece inactiva durante un longo período de tempo (sen cargar páxinas) automaticamente é posta fóra do sistema (finaliza a súa sesión). Esta variable especifica cánto debe durar ese período de tempo.'; @@ -306,11 +306,11 @@ Grazas $a->admin'; $string['emailconfirmationsubject'] = '$a: confirmación de conta'; -$string['emailconfirmsent'] = 'Enviamos un correo electrónico a $a, +$string['emailconfirmsent'] = '

                            Enviamos un correo electrónico a $a, -
                            onde atopará unhas sinxelas instrucións para rematar o proceso. +

                            onde atopará unhas sinxelas instrucións para rematar o proceso. -
                            Se atopa algunha dificultade, por favor contacte co administrador do sistema.'; +

                            Se atopa algunha dificultade, por favor contacte co administrador do sistema.'; $string['emaildisable'] = 'O enderezo de correo-e non está habilitada'; $string['emaildisplay'] = 'Amosar correo'; $string['emaildisplaycourse'] = 'Amosar o meu enderezo de correo só aos meus compañeiros/as de curso'; @@ -334,21 +334,21 @@ Se necesita axuda, contacte por favor co administrador do sitio, $a->admin'; $string['emailpasswordconfirmationsubject'] = '$a: confirmación de cambio de contrasinal'; $string['emailpasswordconfirmsent'] = 'Deberíase ter enviado unha mensaxe ao seu enderezo: $a. -
                            A mensaxe contén instrucións sinxelas para confirmar e completar este cambio de contrasinal. +

                            A mensaxe contén instrucións sinxelas para confirmar e completar este cambio de contrasinal. Se segue tendo problemas, contacte co administrador do sitio.'; $string['emailpasswordsent'] = 'Grazas por confirmar o cambio de contrasinal. -
                            Enviouse unha mensaxe que contén o seu novo contrasinal ao seu enderezo: $a->email. -
                            O novo contrasinal foi xerada automaticamente - vostede pode -link\">cambiar este contrasinal por algunha outra máis doada de lembrar.'; +

                            Enviouse unha mensaxe que contén o seu novo contrasinal ao seu enderezo: $a->email. +

                            O novo contrasinal foi xerada automaticamente - vostede pode +link>cambiar este contrasinal por algunha outra máis doada de lembrar.'; $string['enable'] = 'Habilitar'; $string['enrolledincourse'] = 'Inscritos no curso '; $string['enrolledincoursenot'] = 'Non inscritos no curso '; $string['enrolmentconfirmation'] = 'Está a punto de inscribirse como alumno/a neste curso.
                            ¿Está seguro de que desexa facelo?'; $string['enrolmentkey'] = 'Clave de acceso'; -$string['enrolmentkeyfrom'] = 'Este curso require o uso dunha \'clave de acceso\'. Se foi admitido/a
                            +$string['enrolmentkeyfrom'] = 'Este curso require o uso dunha \'clave de acceso\'. Se foi admitido/a
                            nel e non lle enviamos a clave, por favor fáganolo saber.'; -$string['enrolmentkeyhint'] = 'Esta \'clave de acceso\' é incorrecta, por favor inténteo de novo
                            +$string['enrolmentkeyhint'] = 'Esta \'clave de acceso\' é incorrecta, por favor inténteo de novo
                            (Unha pista: comeza con \'$a\')'; $string['entercourse'] = 'Prema aquí para entrar ao curso'; @@ -405,10 +405,10 @@ $string['gd1'] = 'GD 1.x est $string['gd2'] = 'GD 2.x está instalado'; $string['gdneed'] = 'GD debe estar instalado para ver este gráfico'; $string['gdnot'] = 'GD non está instalado'; -$string['gpl'] = 'Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com)
                            Tradución: Sonia Álvarez López +$string['gpl'] = 'Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com)
                            Tradución: Sonia Álvarez López Este programa é software libre. Vd. pode redistribuílo e/ou modificalo baixo os termos de GNU General Public License segundo a publicación de The Free Software Foundation; incluso a versión 2 ou algunha posterior. -
                            +
                            Para máis detalles vexa: http://www.gnu.org/copyleft/gpl.html'; $string['grade'] = 'Cualificación'; @@ -515,16 +515,16 @@ $string['loginas'] = 'Entrar como'; $string['loginguest'] = 'Entrar como convidado/a'; $string['loginsite'] = 'Entrar ao sitio'; $string['loginsteps'] = 'Para ter acceso completo aos cursos precisa crear unha conta para vostede neste sitio web. Ademais, cada un dos cursos pode ter unha clave de acceso que necesitará para entrar neles. Estes son os pasos que debe seguir: -

                              -
                            1. Encha a Solicitude de alta.
                            2. -
                            3. O sistema enviaralle un correo electrónico para verificar que o seu enderezo é correcto.
                            4. -
                            5. Lea o correo e confirme a súa alta.
                            6. -
                            7. Para entrar nos cursos pediráselle unha \"clave de acceso\", que se lle enviará cando se matricule neles.
                            8. -
                            9. A partir dese momento non necesitará empregar máis que o seu nome e contrasinal.
                            10. -
                            '; -$string['loginstepsnone'] = 'Ola.

                            Para poder ter acceso completo aos cursos precisa crear -unha conta.

                            Todo o que ten que facer é inscribirse nesta páxina. -

                            '; +
                              +
                            1. Encha a Solicitude de alta. +
                            2. O sistema enviaralle un correo electrónico para verificar que o seu enderezo é correcto. +
                            3. Lea o correo e confirme a súa alta. +
                            4. Para entrar nos cursos pediráselle unha \"clave de acceso\", que se lle enviará cando se matricule neles. +
                            5. A partir dese momento non necesitará empregar máis que o seu nome e contrasinal. +
                            '; +$string['loginstepsnone'] = 'Ola.

                            Para poder ter acceso completo aos cursos precisa crear +unha conta.

                            Todo o que ten que facer é inscribirse nesta páxina. +

                            '; $string['loginto'] = 'Entrar a $a'; $string['loginusing'] = 'Entre aquí usando o seu nome e contrasinal'; $string['logout'] = 'Saír'; @@ -677,10 +677,10 @@ $string['passwordconfirmchange'] = 'Confirmar o cambio de contrasinal'; $string['passwordrecovery'] = 'Si, axúdeme a entrar'; $string['passwordsdiffer'] = 'Os contrasinais non coinciden'; $string['passwordsent'] = 'Enviouse o contrasinal'; -$string['passwordsenttext'] = 'O sistema enviou un correo electrónico a $a->email. -
                            Revise o seu correo para recibir un novo contrasinal -
                            O novo contrasinal xérase automaticamente, polo que tal vez Vd. desexe - link\">cambialo por unha que lle sexa máis doado de lembrar.'; +$string['passwordsenttext'] = '

                            O sistema enviou un correo electrónico a $a->email. +

                            Revise o seu correo para recibir un novo contrasinal +

                            O novo contrasinal xérase automaticamente, polo que tal vez Vd. desexe + link>cambialo por unha que lle sexa máis doado de lembrar.'; $string['people'] = 'Persoas'; $string['personalprofile'] = 'Información persoal'; $string['phone'] = 'Teléfono'; @@ -748,7 +748,7 @@ $string['scheduledbackupstatus'] = 'Estado previsto da copia de seguridade'; $string['search'] = 'Buscar'; $string['searchagain'] = 'Volver a buscar'; $string['searchcourses'] = 'Buscar cursos'; -$string['searchhelp'] = 'Pode buscar moitas palabras ao mesmo tempo.
                            Se coloca unha ou máis palabras, o buscador atopa todas as mensaxes que conteñan esa ou esas palabras en calquera lugar.
                            Se coloca varias palabras separadas polo signo de adición (+) aparecerán os resultados que conteñan todas esas palabras na orde exacta en que foron colocadas.
                            Se coloca un signo de subtracción (-) antes dunha palabra, amosaranse todas as mensaxes que conteñan a ou as outras palabras pero que non conteñan a palabra antecedida por este signo.'; +$string['searchhelp'] = 'Pode buscar moitas palabras ao mesmo tempo.

                            Se coloca unha ou máis palabras, o buscador atopa todas as mensaxes que conteñan esa ou esas palabras en calquera lugar.
                            Se coloca varias palabras separadas polo signo de adición (+) aparecerán os resultados que conteñan todas esas palabras na orde exacta en que foron colocadas.
                            Se coloca un signo de subtracción (-) antes dunha palabra, amosaranse todas as mensaxes que conteñan a ou as outras palabras pero que non conteñan a palabra antecedida por este signo.'; $string['searchresults'] = 'Resultados da pescuda'; $string['sec'] = 'segundo'; $string['secs'] = 'segundos'; diff --git a/lang/gl/resource.php b/lang/gl/resource.php index 3bd8aba7ba0..d9e3b3913a0 100644 --- a/lang/gl/resource.php +++ b/lang/gl/resource.php @@ -50,7 +50,7 @@ $string['newwindowopen'] = 'Amosar este contido nunha nova vent $string['note'] = 'Nota'; $string['notefile'] = 'Para subir máis dun arquivo (e que se poidan ver na listaxe) empregue o -Administrador de arquivos.'; +Administrador de arquivos.'; $string['notypechosen'] = 'Necesita elixir un tipo. Volte atrás e inténteo de novo.'; $string['popupresource'] = 'Este recurso debe aparecer nunha xanela despregable'; $string['popupresourcelink'] = 'Se non, prema aquí: $a'; diff --git a/lang/gl/survey.php b/lang/gl/survey.php index 717fc5ae81b..82b142501a1 100644 --- a/lang/gl/survey.php +++ b/lang/gl/survey.php @@ -153,7 +153,7 @@ $string['collesm6short'] = 'Interpretaci $string['collesmintro'] = 'Nesta unidade online...'; $string['collespintro'] = 'O propósito desta enquisa é axudarnos a entender o que vostede valora nunha experiencia de aprendizaxe online. -Cada unha das 24 declaracións seguintes interrógao sobre a súa experiencia favorita (ideal) nesta unidade. +Cada unha das 24 declaracións seguintes interrógao sobre a súa experiencia favorita
                            (ideal) nesta unidade. Non existen respostas \'correctas\' ou \'erróneas\', a nós interésanos só a súa opinión. Teña a seguridade de que as súas respostas serán tratadas coa máxima confidencialidade e que non afectarán a súa avaliación. diff --git a/lang/gl/workshop.php b/lang/gl/workshop.php index 8b957b2eae1..2182983adc9 100644 --- a/lang/gl/workshop.php +++ b/lang/gl/workshop.php @@ -112,11 +112,11 @@ $string['noassessmentsdone'] = 'Non se fixeron valoraci $string['nosubmission'] = 'Sen envíos'; $string['nosubmissionsavailableforassessment'] = 'Non hai envíos dispoñibles para a valoración'; $string['notavailable'] = 'Non dispoñible'; -$string['noteonassessmentelements'] = 'Note que a cualificación está dividida nunha serie de \'Elementos de valoración\'.
                            -Isto fai a cualificación máis sinxela e consistente. Como profesor/a vostede debe engadir estes
                            -Elementos antes de pór a disposición dos estudantes a tarefa. Isto conséguese
                            -premendo na tarefa no curso, e se non hai elementos pediráselle
                            -que os engada. Pode cambiar o número de elementos empregando a pantalla de editar tarefa,
                            +$string['noteonassessmentelements'] = 'Note que a cualificación está dividida nunha serie de \'Elementos de valoración\'.
                            +Isto fai a cualificación máis sinxela e consistente. Como profesor/a vostede debe engadir estes
                            +Elementos antes de pór a disposición dos estudantes a tarefa. Isto conséguese
                            +premendo na tarefa no curso, e se non hai elementos pediráselle
                            +que os engada. Pode cambiar o número de elementos empregando a pantalla de editar tarefa,
                            o elemento en si pode ser rectificado desde a pantalla \"Administrar Tarefa\". '; $string['notgraded'] = 'Non se cualificou'; $string['notitlegiven'] = 'Non se lle deu un título'; diff --git a/lang/he/activitynames.php b/lang/he/activitynames.php index 881c60067ec..add04acded3 100644 --- a/lang/he/activitynames.php +++ b/lang/he/activitynames.php @@ -1,7 +1,11 @@ diff --git a/lang/he/admin.php b/lang/he/admin.php index 420c6c303d9..00783fc3130 100755 --- a/lang/he/admin.php +++ b/lang/he/admin.php @@ -1,19 +1,10 @@ îéãò ðåñó'; -$string['upgradelogsinfo'] = 'ìàçøåðä ðòùå îñôø ùéðåééí ìàåôï ùáå ðùîøéí äãåçåú. òì îðú ìàôùø öôéä áãåçåú äéùðéí áçìå÷ä ìôé ôòéìåú, éù ìùãøâ àú äãåçåú äéùðéí ùìê. ëúìåú áàúø, ôòåìä æå éëåìä ì÷çú æîï øá (ìãåâîà îñôø ùòåú) åìöøåê äøáä îùàáéí îáñéñ äðúåðéí ùì àúøéí âãåìéí. îøâò ùäúçìú úäìéê æä, øöåé ìúú ìå ìñééí (òì éãé äùàøú çìåï äãôãôï ôúåç). àì úãàâ - àúøê éäéä æîéï ìîá÷øéí àçøéí áæîï ùäãåçåú îúòãëðéí.

                            äàí àúä øåöä ìòãëï àú ãåçåúéê òëùéå?'; -$string['upgradesure'] = '÷áöé ä-Moodle äéùðéí ùìê ùåðå, åëòú úåëðú äùøú ùìê úòåãëï áàåôï àåèåîèé ìâøñä æå: -

                            $a

                            -

                            îøâò áéöåò äùãøåâ ìà úåëì ìçæåø ìâøñä ÷åãîú.

                            -

                            äàí àúä áèåç áøöåðê ìùãøâ àú úåëðú äùøú ìâøñä æå?

                            '; -$string['upgradinglogs'] = 'îùãøâ ãåçåú'; +$string['filteruploadedfiles'] = 'סנן את הקבצים המועלים'; +$string['upgradelogs'] = 'למען יכולת מלאה, הדוחות הישנים שלך צריכים להתעדכן. מידע נוסף'; +$string['upgradelogsinfo'] = 'לאחרונה נעשו מספר שינויים לדרך שבה הדוחות נשמרים. כדי להיות בעל יכולת לראות את כל הדוחות הישנים לפי פעילות, הדוחות הישנים שלך צריכים להתעדכן.תלוי באתר, דבר זה יכול לקחת זמן רב (לדוגמא מספר שעות) ולצרוך הרבה משאבים מבסיס הנתונים של אתרים גדולים. מרדע שהתחלת תהליך זה, רצוי לתת לו לסיים (על ידי השארת חלון הדפדפן פתוח). אל תדאג - אתרך יעבוד ללא בעיות לאנשים אחרים בזמן שהדוחות מתעדכנים.

                            האם אתה רוצה לעדכן את דוחותיך עכשיו?'; +$string['upgradinglogs'] = 'מעדכן דוחות'; ?> diff --git a/lang/he/algebra.php b/lang/he/algebra.php index 42bc18d8897..c7847b8c51d 100644 --- a/lang/he/algebra.php +++ b/lang/he/algebra.php @@ -1,11 +1,7 @@ diff --git a/lang/he/assignment.php b/lang/he/assignment.php index 8a3a008dbfe..0e8a054d63f 100644 --- a/lang/he/assignment.php +++ b/lang/he/assignment.php @@ -1,58 +1,53 @@ teacher ôøñí îùåá òì äîèìä ùäâùú òáåø \'$a->assignment\' +$string['allowresubmit'] = 'הרשה הגשה מחדש'; +$string['assignmentdetails'] = 'פרטי מטלה'; +$string['assignmentmail'] = '$a-> המורה פרסם משוב על המטלה שהגשת ב \'$a->assignment\' -àúä éëåì ìøàåú àú æä ëðñôç ìîèìä ùäâùú: +אתה יכול לראות את זה כנספח למטלה שהגשת: -$a->url'; -$string['assignmentmailhtml'] = '$a->teacher ùìç îùåá òì äîèìä ùäâùú òáåø \'$a->assignment\'

                            - -àúä éëåì ìøàåú àú æä ëðñôç ìurl\">îèìä ùäâùú.'; -$string['assignmentname'] = 'ùí îèìä'; -$string['assignmenttype'] = 'ñåâ îèìä'; -$string['configmaxbytes'] = 'áøéøú îçãì ìâåãì äîéøáé ùì ëì äîèìåú áàúø æä (ëôåó ìäâáìåú ä÷åøñ åìùàø äâãøåú î÷åîéåú)'; -$string['description'] = 'úéàåø'; -$string['duedate'] = 'úàøéê äâùä'; -$string['duedateno'] = 'àéï úàøéê äâùä'; -$string['early'] = '$a îå÷ãí'; -$string['existingfiledeleted'] = 'ä÷åáõ ä÷ééí $a ðîç÷'; -$string['failedupdatefeedback'] = 'ëùì áòãëåï îùåá ääâùä ìîùúîù $a'; -$string['feedback'] = 'îùåá'; -$string['feedbackupdated'] = 'äâùú òãëåï îùåá áùáéì $a àðùéí'; -$string['late'] = '$a îàåçø'; -$string['maximumgrade'] = 'öéåï îhéøáé'; -$string['maximumsize'] = 'âåãì îéøáé'; -$string['modulename'] = 'îèìä'; -$string['modulenameplural'] = 'îèìåú'; -$string['newsubmissions'] = 'äîèìåú äåâùå'; -$string['notgradedyet'] = 'òãééï ìà äåòøê '; -$string['notsubmittedyet'] = 'ìà äåâù òãééï'; -$string['overwritewarning'] = 'àæäøä: äòìàä îçãù úçìéó àú ääâùä äðåëçéú ùìê'; -$string['parentlanguage'] = 'en'; -$string['saveallfeedback'] = 'ùîåø àú ëì äîùåáéí ùìé'; -$string['submissionfeedback'] = 'äâùú îùåá'; -$string['submissions'] = 'äâùåú'; -$string['submitassignment'] = 'äâù àú äîèìä ùìê áàîöòåú èåôñ æä'; -$string['submitted'] = 'äåâù'; -$string['thischarset'] = 'ISO-8859-8-I'; -$string['thisdirection'] = 'rtl'; -$string['thislanguage'] = 'òáøéú'; -$string['typeoffline'] = 'ôòéìåú ìà î÷ååðú'; -$string['typeuploadsingle'] = 'äòìä ÷åáõ éçéã'; -$string['uploadbadname'] = 'ùí ÷åáõ æä äëéì úååéí àñåøéí åàé àôùø äéä ìäòìåú àåúå'; -$string['uploadedfiles'] = '÷áöéí äåòìå'; -$string['uploaderror'] = 'çìä ùâéàä áòú ùîéøú ä÷åáõ òì äùøú '; -$string['uploadfailnoupdate'] = 'ä÷åáõ äåòìä áàåôï ú÷éï àáì àé àôùø äéä ìòãëï àú äâùúê!'; -$string['uploadfiletoobig'] = 'îöèòøéí, àáì ä÷åáõ âãåì îãé (äâáåì äåà $a áééèéí)'; -$string['uploadnofilefound'] = 'ìà ðîöà ÷åáõ - äàí àúä áèåç ùáçøú ÷åáõ ìäòìàä?'; -$string['uploadnotregistered'] = '\'$a\' äåòìä áàåôï ú÷éï àáì ääâùä ìà ðøùîä!'; -$string['uploadsuccess'] = '\'$a\' äåòìä áäöìçä'; -$string['viewfeedback'] = 'øàä öéåðé åîùåáé îèìåú'; -$string['viewsubmissions'] = 'øàä $a îèìåú ùäåâùå'; -$string['yoursubmission'] = 'ääâùä ùìê'; + $a->url'; +$string['assignmentmailhtml'] = '$a->המורה פרסם משוב על המטלה שהגשת ב \'$a->assignment\'

                            +אתה יכול לראות את זה כנספח url\">לעבודה שהגשת.'; +$string['assignmentname'] = 'שם מטלה'; +$string['assignmenttype'] = 'סוג מטלה'; +$string['configmaxbytes'] = 'ברירת מחדל לגודל המירבי של כל המטלות באתר זה (נתון להגבלות הקורס ולשאר הגדרות מקומיות)'; +$string['description'] = 'תיאור'; +$string['duedate'] = 'תאריך הגשה'; +$string['duedateno'] = 'אין תאריך הגשה'; +$string['early'] = '$a מוקדם'; +$string['existingfiledeleted'] = 'הרובץ הקיים נמחק $a'; +$string['failedupdatefeedback'] = 'כשל בעדכון משוב ההגשה למשתמש $a'; +$string['feedback'] = 'משוב'; +$string['feedbackupdated'] = 'הגשת עדכון משוב בשביל $a אנשים'; +$string['late'] = '$a מאוחר'; +$string['maximumgrade'] = 'ציון מירבי'; +$string['maximumsize'] = 'גודל מירבי'; +$string['modulename'] = 'מטלה'; +$string['modulenameplural'] = 'מטלות'; +$string['newsubmissions'] = 'מטלות הוגשו'; +$string['notgradedyet'] = 'עדיין לא הוערך '; +$string['notsubmittedyet'] = 'לא הוגש עדיין'; +$string['overwritewarning'] = 'אזהרה: העלאה מחדש תחליף את ההגשה העכשווית שלך'; +$string['saveallfeedback'] = 'שמור את כל המשובים שלי'; +$string['submissionfeedback'] = 'הגשת משוב'; +$string['submissions'] = 'הגשות'; +$string['submitassignment'] = 'הגש את המטלה שלך באמצעות טופס זה'; +$string['submitted'] = 'הוגש'; +$string['typeuploadsingle'] = 'העלה קובץ יחיד'; +$string['uploadbadname'] = 'שם קובץ זה הכיל מסלים משונים ואי אפשר היה להעלותו'; +$string['uploadedfiles'] = 'קבצים מועלים'; +$string['uploaderror'] = 'טעות קרתה בזמן שמירת הקובץ על השרת '; +$string['uploadfailnoupdate'] = 'הקובץ הועלה בסדר אבל אי אפשר היה לעדכן את הגשתך!'; +$string['uploadfiletoobig'] = 'מצטערים, אבל הקובץ גדול מדי (הגבול הוא $a בייטים)'; +$string['uploadnofilefound'] = 'לא נמצא קובץ - האם אתה בטוח שבחרת קובץ להעלאה?'; +$string['uploadnotregistered'] = '\'$a\' הועלה בסדר אבל ההרשמה לא נרשמה!'; +$string['uploadsuccess'] = ' \'$a\' הועלה בהצלחה'; +$string['viewfeedback'] = 'ראה ציוני ומשובי מטלות'; +$string['viewsubmissions'] = 'ראה $a מטלות מוגשות'; +$string['yoursubmission'] = 'ההגשה שלך'; ?> diff --git a/lang/he/attendance.php b/lang/he/attendance.php index 6e5f7cd8db4..7fa02d07fd9 100755 --- a/lang/he/attendance.php +++ b/lang/he/attendance.php @@ -1,68 +1,68 @@ diff --git a/lang/he/auth.php b/lang/he/auth.php index 4eb37228eaa..65b58bca89b 100644 --- a/lang/he/auth.php +++ b/lang/he/auth.php @@ -1,93 +1,65 @@ ùãåú áñéñ ðúåðéí çéöåðé
                            ùúâãéø ëàï.
                            àí úùàéø ùãä æä øé÷, àæ éåôòìå áøéøåú îçãì .
                            áëì î÷øä, äîùúîù éåëì ìùðåú àú ëì äùãåú äììå ìàçø äúçáøåú.'; -$string['auth_dbfieldpass'] = 'ùí äùãä äîëéì ñéñîàåú'; -$string['auth_dbfielduser'] = 'ùí äùãä äîëéì ùîåú îùúîù'; -$string['auth_dbhost'] = 'äîçùá äîàøç àú ùøú áñéñ äðúåðéí. '; -$string['auth_dbname'] = 'ùí áñéñ äðúåðéí òöîå'; -$string['auth_dbpass'] = 'ñéñîà äîúàéîä ìùí ìîòìä'; -$string['auth_dbpasstype'] = 'äâãø àú äîáðä ùùãä äñéñîà òåùä áå ùéîåù. ÷éãåã MD5 äåà éòéì ìùéîåù ìäúçáøåú ìàôìé÷öéåú øùú ðôåöåú ðåñôåú ëîå PostNuke'; -$string['auth_dbtable'] = 'ùí äèáìä ááñéñ äðúåðéí'; -$string['auth_dbtitle'] = 'äùúîù ááñéñ ðúåðéí çéöåðé'; -$string['auth_dbtype'] = 'ñåâ áñéñ äðúåðéí (øàä àú äúéòåã ùì ADOdb documentation ìôøèéí)'; -$string['auth_dbuser'] = 'ùí îùúîù òí âéùú ÷øéàä ìáñéñ äðúåðéí'; -$string['auth_editlock'] = 'ðòì òøê'; -$string['auth_editlock_expl'] = '

                            ðòì òøê: àí îàåôùø, éîðò îîùúîùé åîðäìé Moodle ìòøåê ùãä æä éùéøåú. äùúîù áàôùøåú æå àí àúä îúçæ÷ àú äîéãò áîòøëú äøùàåú çéöåðéú.

                            '; -$string['auth_emaildescription'] = 'àéîåú ãåàø àì÷èøåðé äåà ùéèú äæéäåé äîùîùú ëáøéøú îçãì. ëàùø äîùúîù ðøùí, åáåçø ùí îùúîù åñéñîà îùìå, ãåàø àì÷èøåðé ðùìç ìëúåáú äãåàø äàì÷èøåðé ùìå. ãåàø àì÷èøåðé æä îëéì ÷éùåø îàåáèç ìòîåã áå äîùúîù éëåì ìàîú àú äçùáåï ùìå. äúçáøåéåú òúéãéåú ø÷ áåã÷åú àú ùí äîùúîù åäñéñîà ëðâã äòøëéí äùîåøéí ááñéñ äðúåðéí ùì Moodle.'; -$string['auth_emailtitle'] = 'àéîåú òì áñéñ ãåàø àì÷èøåðé'; -$string['auth_fccreators'] = 'øùéîú ÷áåöåú ùçáøéí áäï øùàéí ìéöåø ÷åøñéí çãùéí. àðà äôøã ÷áåöåú îøåáåú áòæøú \';\'. éù ìäâãéø àú äùîåú áàåôï æää ìùøú FirsClass. äîòøëú øâéùä ìàåúéåú øéùéåú.'; -$string['auth_fcdescription'] = 'ùéèä æå îùúîùú áùøú FirstClass ìáãé÷ä äàí ùí îùúîù åñéñîà ú÷éðéí.'; -$string['auth_fcfppport'] = 'éöéàú äùøú (3333 äåà äðôåõ áéåúø)'; -$string['auth_fchost'] = 'ëúåáú ùøú FirstClass. òìéê ìäâãéø àú ëúåáú ä-IP àå àú ùí ä-DNS.'; -$string['auth_fcpasswd'] = 'ñéñîà òáåø äçùáåï äð\"ì.'; -$string['auth_fctitle'] = 'äùúîù áùøú FirstClass'; -$string['auth_fcuserid'] = '÷åã äîùúîù òáåø çùáåï FirstClass òí äøùàú \'Subadministrator\' îåâãøú.'; -$string['auth_imapdescription'] = 'ùéèä æå òåùä ùéîåù áùøú IMAP ëãé ìáãå÷ òí ñéñîà àå ùí îùúîù ðúåðéí äéðí ú÷ôéí.'; -$string['auth_imaphost'] = 'ëúåáú ùøú ä IMAP. äùúîù áîñôø IP, ìà ùí DNS.'; -$string['auth_imapport'] = 'îñôø ðîì ùøú IMAP. ìøåá æä àå 143 àå 993.'; -$string['auth_imaptitle'] = 'äùúîù áùøú IMAP '; -$string['auth_imaptype'] = 'ñåâ ùøú ä IMAP. ùøúé IMAP éëåìéí ìúîåê áñåâé àéîåú åãå-ùéç ùåðéí.'; -$string['auth_ldap_bind_dn'] = 'àí áøöåðê ìäùúîù áîðâðåï bind-user ìçéôåù îùúîùéí, òìéê ìäâãéø æàú ëàï. ìîùì \'cn=ldapuser,ou=public,o=org\''; -$string['auth_ldap_bind_pw'] = 'ñéñîà òáåø bind-user'; -$string['auth_ldap_bind_settings'] = 'äâãøåú bind'; -$string['auth_ldap_contexts'] = 'øùéîú ÷åðè÷ñèéí áäí îîå÷îéí îùúîùéí. äôøã ÷åðè÷ñèéí ùåðéí áàîöòåú \';\'. ìãåâîà:\'ou=users,o=org; ou=others,o=org\''; -$string['auth_ldap_create_context'] = 'àí úàôùø éöéøú îùúîù òí àéîåú ãåàø àì÷èøåðé, ôøè àú ä÷åðè÷ñè áå ééååöøå äîùúîùéí. ÷åðè÷ñè æä öøéê ìäéåú ùåðä îîùúîùéí àçøéí ëãé ìîðåò áòéåú àáèçä. àúä ìà öøéê ìäåñéó ÷åðè÷ñè æä ìldap_context-variable, Moodle ééçôù îùúîùéí î÷åðè÷ñè æä áàåôï àåèåîèé.'; -$string['auth_ldap_creators'] = 'øùéîä ùì ÷áåöåú ùäîùúîùéí áäí øùàéí ìéöåø ÷åøñéí çãùéí. äôøã ÷áåöåú îøåáåú áàîöòåú \';\'. áãøê ëìì îùäå ëâåï \'cn=teachers,ou=staff,o=myorg\''; -$string['auth_ldap_expiration_desc'] = 'áçø á\'ìà\' ëãé ìðèøì áãé÷ú ñéñîàåú ùôâ úå÷ôï àå ëãé ìîðåò îä-LDAP ì÷øåà àú æîï úôåâú äúôå÷ä éùéøåú îä-LDAP'; -$string['auth_ldap_expiration_warning_desc'] = 'îñôø éîéí ìôðé ùðîñøú àæäøú úôåâú ñéñîà.'; -$string['auth_ldap_host_url'] = 'ôøè îàøç LDAP áöåøú URL ëîå \'ldap://ldap.myorg.com/\' àå \'ldaps://ldap.myorg.com/\' '; -$string['auth_ldap_login_settings'] = 'äâãøåú äúçáøåú'; -$string['auth_ldap_search_sub'] = 'ùéí òøê <> 0 àí àúä øåöä ìçôù îùúîùéí îúú-÷åðè÷ñèéí.'; -$string['auth_ldap_server_settings'] = 'äâùøåú ùøú LDAP'; -$string['auth_ldap_update_userinfo'] = 'òãëï ðúåðé îùúîù (ùí ôøèé, ùí îùôçä ëúåáú...) î-LDAP ì-Moodle. äâãø \'îéôåé îéãò\' ìôé öøëéê.'; -$string['auth_ldap_user_attribute'] = ' '; -$string['auth_ldap_version'] = 'âøñú ôøåèå÷åì ä-LDPA ùäùøú ùìê îùúîù áä.'; -$string['auth_ldapdescription'] = 'ùéèä æå îñô÷ú àéîåú ëðâã ùøú LDAP çéöåðé. àí ùí îùúîù åñéñîà äí ú÷ôéí, Moodle éåöøú ëðéñú îùúîù çãù ááñéñ äðúåðéí. îåãåì æä éëåì ì÷øåà îàôééðé îùúîùéí î-LDAP åìîìà îøàù ùãåú øöåééí á-Moodle. áäúçáøåú òúéãéú éáã÷å ø÷ ùí äîùúîù åäñéñîà.'; -$string['auth_ldapextrafields'] = 'ùãåú àìå äí àåôöéåðìééí. àúä éëåì ìáçåø ìîìè îøàù ùãåú îùúîù ùúôøè ôä òí îéãò îäLDAP fields.
                            àí úùàéø ùãåú àìå øé÷éí àæ ãáø ìà éòáåø î LDAP åáøéøåú îçãì ùì Moodle éùåîùå áî÷åí.
                            áëì î÷øä, äîùúîù éåëì ìòøåêàì ëì äùãåú äììå ìàçø äúçáøåú.'; -$string['auth_ldaptitle'] = 'äùúîù áùøú LDAP '; -$string['auth_manualdescription'] = 'ùéèä æå îñì÷ú ëì ãøê ìîùúîùéí ìéöéøú çùáåðåú îùìäí. ëì äçùáåðåú çééáéí ìäéååöø éãðéú òì éãé îùúîù äîðäì.'; -$string['auth_manualtitle'] = 'çùáåðåú éãðééí áìáã'; -$string['auth_multiplehosts'] = 'ðéúï ìôøè îàøçéí îøåáéí (ìãåâîà host1.com;host2.com;host3.com) àå (ìãåâîä xxx.xxx.xxx.xxx;xxx.xxx.xxx.xxx)'; -$string['auth_nntpdescription'] = 'ùéèä æå òåùä ùéîåù áùøú NNTP ëãé ìáãå÷ àí ùí îùúîù åñéñîà ðúåðéí äéðí ú÷ôéí.'; -$string['auth_nntphost'] = 'ëúåáú ùøú ä-NNTP. äùúîù áëúåáú ä-IP , ìà áùí ä DNS.'; -$string['auth_nntpport'] = 'ðîì ùøú (119 äéðå äëé ðôåõ)'; -$string['auth_nntptitle'] = 'äùúîù áùøú NNTP '; -$string['auth_nonedescription'] = 'îùúîùéí éëåìéí ìäúçáø åìéöåø çùáåðåú ú÷ôéí îéãéú, ììà ëì åàéîåú ëðâã ùøú çéöåðé åììà àéîåú ãøê ãåàø àì÷èøåðé. äéä æäéø ëàùø àúä îùúîù áàôùøåú æå - çùåá òì áòéåú äàáèçä åääðäìä ùæä éëåì ìâøåí.'; -$string['auth_nonetitle'] = 'ììà àéîåú'; -$string['auth_passwordisexpired'] = 'úå÷ó äñéñîä ùìê ôâ. äàí áøöåðê ìùðåú àú ñéñîúê ëòú?'; -$string['auth_passwordwillexpire'] = 'äñéñîà ùìê úôåâ áúåê $a éîéí. äàí áøöåðê ìùðåú àú ñéñîúê ëòú?'; -$string['auth_pop3description'] = 'ùéèä æå òåùä ùéîåù áùøú POP3 ëãé ìáãå÷ àí ùí îùúîù åñéñîà ðúåðéí äéðí ú÷ôéí.'; -$string['auth_pop3host'] = 'ëúåáú ùøú ä POP3. äùúîù áîñôø äIP, ìà áùí äDNS.'; -$string['auth_pop3port'] = 'ðîì ùøú (110 äéðå äëé ðôåõ)'; -$string['auth_pop3title'] = 'äùúîù áùøú POP3 '; -$string['auth_pop3type'] = 'ñåâ ùøú. àí äùøú ùìê îùúîù áàáèçú úòåãä (certificate), áçø pop3cert.'; -$string['auth_updatelocal'] = 'òãëï îéãò î÷åîé'; -$string['auth_updateremote'] = 'òãëï îéãò çéöåðé'; -$string['auth_user_create'] = 'àôùø éöéøú îùúîùéí'; -$string['auth_user_creation'] = 'îùúîùéí çãùéí (àðåðéîééí) éëåìéí ìéöåø çùáåðåú îùúîù òì î÷åø äàéîåú äçéöåðé ùéàåùøå ãøê ãåàø àì÷èøåðé. àí úàôùø æàú , æëåø âí ìäâãéø àôùøåéåú áëì îåãåì ìéöéøú îùúîùéí.'; -$string['auth_usernameexists'] = 'ùí îùúîù ðáçø ëáø ÷ééí. àðà áçø ùí çãù.'; -$string['authenticationoptions'] = 'àôùøåéåú àéîåú'; -$string['authinstructions'] = 'ëàï àúä éëåì ìñô÷ ìîùúîùéí ùìê äåøàåú, ëãé ùäí éãòå áàéæä ùí îùúîù åñéñîà äí öøéëéí ìäùúîù. äè÷ñè ùúëðéñ ëàï éåôéò áòîåã ääúçáøåú. àí úùàéø øé÷, ìà éåôéòå ëì äåøàåú.'; -$string['changepassword'] = 'ëúåáú ùéðåé ñéñîà'; -$string['changepasswordhelp'] = 'ëàï àúä îôøè î÷åí áå äîùúîùéí ùìê éëåìéí ìäùúîù ëãé ìîöåà àå ìùðåú àú ùí äîùúîù àå äñéñîà ùìäí àí äí ùëçå àåúí. æä éñåô÷ ìîùúîùéí ëëôúåø áòîåã ääúçáøåú åáòîåã äîùúîù ùìäí. àí úùàéø øé÷, ëôúåø æä ìà éåôéò.'; -$string['chooseauthmethod'] = 'áçø öåøú àéîåú: '; -$string['forcechangepassword'] = 'àìõ ùéðåé ñéñîà'; -$string['forcechangepassword_help'] = 'àìõ îùúîùéí ìùðåú àú äñéñîà ùìäí áðñéåï ääúçáøåú äáà ì-Moodle.'; -$string['forcechangepasswordfirst_help'] = 'àìõ îùúîùéí ìùðåú àú äñéñîà ùìäí áðñéåï ääúçáøåú äøàùåï ì-Moodle.'; -$string['guestloginbutton'] = 'ëôúåø äúçáøåú ìàåøçéí'; -$string['instructions'] = 'äåøàåú'; -$string['md5'] = 'äöôðú MD5 '; -$string['parentlanguage'] = 'en'; -$string['plaintext'] = 'è÷ñè ôùåè'; -$string['showguestlogin'] = 'àúä éëåì ìäçáéà àå ìäøàåú àú ëôúåø ääúçáøåú ìàåøçéí áòîåã ääúçáøåú.'; -$string['stdchangepassword'] = 'äùúîù áãó ùéðåé ñéñîà ñèðãøèé'; -$string['thischarset'] = 'ISO-8859-8-I'; -$string['thisdirection'] = 'rtl'; -$string['thislanguage'] = 'עברית'; +$string['auth_dbdescription'] = 'שיטה זו עושה שימוש בטבלת בסיס נתונים חיצונית כדי לבדוק אם שם משתמש וסיסמא נתונים הינם תקופים. אם החשבון הינו חדש, אז נתונים, או מידע, משדות אחרים גם יכולים להיות מועתקים לתוך Moodle.'; +$string['auth_dbextrafields'] = 'שדות אלו הינם אופציונלים. אתה יכול לבחור למלא מראש חלק משדות המשתמש של Moodle עם external database fields שתפרט פה.

                            אם תשאיר חלל זה ריק, אז יופעלו ברירות מחדל.

                            בכל מקרה, המשתמש יוכל לשנות את כל השדות הללו לאחר התחברות.'; +$string['auth_dbfieldpass'] = 'שם השדה המכיל סיסמאות'; +$string['auth_dbfielduser'] = 'שם השדה המכיל שמות משתמש'; +$string['auth_dbhost'] = 'המחשב המארח את שרת בסיס הנתונים. '; +$string['auth_dbname'] = 'שם בסיס הנתונים עצמו'; +$string['auth_dbpass'] = 'סיסמא המתאימה לשם למעלה'; +$string['auth_dbpasstype'] = 'פרט את הפורמט ששדה הסיסמא עושה בו שימוש. קידוד MD5 הוא יעיל לשימוש להתחברות לאפליקציות רשת נפוצות נוספות כמו PostNuke'; +$string['auth_dbtable'] = 'שם הטבלה בבסיס הנתונים'; +$string['auth_dbtitle'] = 'השתמש בבסיס נתונים חיצוני'; +$string['auth_dbtype'] = 'סוג בסיס הנתונים (ראה ADOdb documentation לפרטים)'; +$string['auth_dbuser'] = 'שם משתמש עם גישת קריאה לבסיס הנתונים'; +$string['auth_emaildescription'] = 'אישור דואר אלקטרוני הוא צורת ברירת המחדל לווידוי (אותנטיקציה). כאשר המשתמש נרשם, בוחר את שם משתמש וסיסמא משלו, דואר אלקטרוני לווידוי נשלח לכתובת הדואר האלקטרוני שלו. דואר אלקטרוני זה מכיל קישור מאובטח לעמוד בו המשתמש יכול לאשר, ולוודא את החשבון שלו. התחברויות עתידיות רק בודקות את שם המשתמש והסיסמא כנגד הערכים השמורים בבסיס הנתונים של Moodle.'; +$string['auth_emailtitle'] = 'ווידוי, אותנטיקציה, על בסיס דואר אלקטרוני'; +$string['auth_imapdescription'] = 'שיטה זו עושה שימוש בשרת IMAP כדי לבדוק עם סיסמא או שם משתמש נתונים הינם תקפים.'; +$string['auth_imaphost'] = 'כתובת שרת ה IMAP. השתמש במספר IP, לא שם DNS.'; +$string['auth_imapport'] = 'מספר נמל שרת IMAP. לרוב זה או 143 או 993.'; +$string['auth_imaptitle'] = 'השתמש בשרת IMAP '; +$string['auth_imaptype'] = 'סוג שרת ה IMAP. שרתי IMAP יכולים שיהיו להם סוגים שונים של ווידוי (אותנטיקציה) ומשא ומתן.'; +$string['auth_ldap_bind_dn'] = ' '; +$string['auth_ldap_contexts'] = 'רשימה של קונטקסטים בהם ממוקמים משתמשים. הפרד קונטקסטים שונים באמצעות \';\'. לדוגמא:\'ou=users,o=org; ou=others,o=org\''; +$string['auth_ldap_create_context'] = 'אם תאפשר יצירת משתמש עם ווידוי דואר אלקטרוני, פרט את הקונטקסט בו ייווצרו המשתמשים. קונטקסט זה צריך להיות שונה ממשתמשים אחרים כדי למנוע בעיות בטחוניות. אתה לא צריך להוסיף קונטקסט זה לldap_context-variable, Moodle ייחפש משתמשים מקונטקסט זה באופן אוטומטי.'; +$string['auth_ldap_creators'] = 'רשימה של קבוצות שהמשתמשים בהם רשאים ליצור קורסים חדשים. הפרד קבוצות מרובות באמצעות \';\'. בדרך כלל משהו כגון \'cn=teachers,ou=staff,o=myorg\''; +$string['auth_ldap_host_url'] = 'פרט מארח LDAP בצורת URL כמו \'ldap://ldap.myorg.com/\' או \'ldaps://ldap.myorg.com/\' '; +$string['auth_ldap_memberattribute'] = 'פרט תכונת חבר משתמש, כאשר משתמשים שייכים לקבוצה. בדרך כלל \'חבר\' '; +$string['auth_ldap_search_sub'] = 'שים ערך 0 <> אם אתה רוצה לחפש משתמשים מסאבקונטקסטים.'; +$string['auth_ldap_update_userinfo'] = 'עדכן נתוני משתמש (שם פרטי, שם משפחה כתובת...) מ LDAP ל Moodle. ראה ב /auth/ldap/attr_mappings.php בשביל מידע מיפוי.'; +$string['auth_ldap_user_attribute'] = ' התכונה המשומשת לשםחיפוש משתמשים. בדרך כלל \'cn\''; +$string['auth_ldap_version'] = 'גרסת פרוטוקול הLDPA שהשרת שלך משתמש בה.'; +$string['auth_ldapdescription'] = 'שיטה זו מספקת ווידוי כנגד שרת LDAP חיצוני. אם שם משתמש וסיסמא הם תקפים, Moodle יוצרת כניסת משתמש חדש בבסיס הנתונים. פרק זה יכול לקרוא תכונות משתמשים מ LDAP ולמלות מראש שדות רצויים בMoodle. בכניסות עתידיות נבדקים רק השם משתמש והסיסמא.'; +$string['auth_ldapextrafields'] = 'שדות אלו הם אופציונליים. אתה יכול לבחור למלות מראש שדות משתמש שתפרט פה עם מידע מהLDAP fields.

                            אם תשאיר שדות אלו ריקים אז דבר לא יעבור מ LDAP וברירות מחדל של Moodle ישומשו במקום.

                            בכל מקרה, המשתמש יוכל לערוךאל כל השדות הללו לאחר התחברות.'; +$string['auth_ldaptitle'] = 'השתמש בשרת LDAP '; +$string['auth_manualdescription'] = 'שיטה זו מסלקת כל זרך למשתמשים ליצירת חשבונות משלהם. כל החשבונות חייבים להיווצר ידנית על ידי משתמש המנהל.'; +$string['auth_manualtitle'] = 'חשבונות ידניים בלבד'; +$string['auth_multiplehosts'] = 'ניתן לפרט מארחים מרובים (לדוגמא host1.com;host2.com;host3.com'; +$string['auth_nntpdescription'] = 'שיטה זו עושה שימוש בשרת NNTP כדי לבדוק אם שם משתמש וסיסמא נתונים הינם תקפים.'; +$string['auth_nntphost'] = 'כתובת שרת ה NNTP. השתמש במספר הIP , לא בשם ה DNS.'; +$string['auth_nntpport'] = 'נמל שרת (119 הינו הכי נפוץ)'; +$string['auth_nntptitle'] = 'השתמש בשרת NNTP '; +$string['auth_nonedescription'] = 'משתמשים יכולים להתחבר וליצור חשבונות תקפים מידית, ללא כל ווידוי ואישור משרת חיצוני וללא וידוי דרך דואר אלקטרוני. היה זהיר כאשר אתה משתמש באפשרות זו - חשוב על בעיות הבטחון וההנהלה שזה יכול לגרום.'; +$string['auth_nonetitle'] = 'אין ווידוי (אותנטיקציה)'; +$string['auth_pop3description'] = 'שיטה זו עושה שימוש בשרת POP3 כדי לבדוק אם שם משתמש וסיסמא נתונים הינם תקפים.'; +$string['auth_pop3host'] = 'כתובת שרת ה POP3. השתמש במספר הIP, לא בשם הDNS.'; +$string['auth_pop3port'] = 'נמל שרת (110 הינו הכי נפוץ)'; +$string['auth_pop3title'] = 'השתמש בשרת POP3 '; +$string['auth_pop3type'] = 'סוג שרת. אם השרת שלך משתמש באבטחת תעודה (certificate), בחר pop3cert.'; +$string['auth_user_create'] = 'אפשר יצירת משתמשים'; +$string['auth_user_creation'] = 'משתמשים חדשים (אנונימיים) יכולים ליצור חשבונות משתמש על מקור הווידוי החיצוני שיוודאו דרך דואר אלקטרוני. אם תאפשר זאת , זכור גם לעצב אפשרויות ספציפיות-פרק ליצירת משתמשים.'; +$string['auth_usernameexists'] = 'שם משתמש נבחר כבר קיים. אנא בחר אחד חדש.'; +$string['authenticationoptions'] = 'אפשרויות ווידוי (אותנטיקציה)'; +$string['authinstructions'] = 'כאן אתה יכול לספק למשתמשים שלך הוראות, כדי שהם ידעו באיזה שם משתמש וסיסמא הם צריכים להשתמש. הטקסט שתכניס כאן יופיע בעמוד ההתחברות. אם תשאיר ריק, לא יופיעו כל הוראות.'; +$string['changepassword'] = 'שנה סיסמאת URL'; +$string['changepasswordhelp'] = 'כאן אתה מפרט מקום בו המשתמשים שלך יכולים להשתמש כדי למצוא או לשנות את השם משתמש או סיסמא שלהם אם הם שכחו אותם. זה יסופק למשתמשים ככפתור בעמוד ההתחברות ובעמוד המשתמש שלהם. אם תשאיר ריק, כפתור זה לא יופיע.'; +$string['chooseauthmethod'] = 'בחר צורת ווידוי (אותנטיקציה): '; +$string['guestloginbutton'] = 'כפתור התחברות לאורחים'; +$string['instructions'] = 'הוראות'; +$string['md5'] = 'קידוד MD5 '; +$string['plaintext'] = 'Plain text'; +$string['showguestlogin'] = 'אתה יכול להחביא או להראות את כפתור ההתחברות לאורחים בעמוד ההתחברות.'; ?> diff --git a/lang/he/block_course_list.php b/lang/he/block_course_list.php index 07ea4ae3b30..165ac49ad3d 100644 --- a/lang/he/block_course_list.php +++ b/lang/he/block_course_list.php @@ -1,13 +1,9 @@ diff --git a/lang/he/block_course_summary.php b/lang/he/block_course_summary.php index 9de07ef1881..fa915de59e1 100644 --- a/lang/he/block_course_summary.php +++ b/lang/he/block_course_summary.php @@ -1,12 +1,7 @@ diff --git a/lang/he/block_online_users.php b/lang/he/block_online_users.php index 0b85f4ea98d..a8aaaaebe01 100644 --- a/lang/he/block_online_users.php +++ b/lang/he/block_online_users.php @@ -1,13 +1,9 @@ diff --git a/lang/he/block_section_links.php b/lang/he/block_section_links.php index 66d59981481..1925bae1cdc 100644 --- a/lang/he/block_section_links.php +++ b/lang/he/block_section_links.php @@ -1,11 +1,9 @@ diff --git a/lang/he/block_social_activities.php b/lang/he/block_social_activities.php index cd56ce0692f..6f5734f900a 100644 --- a/lang/he/block_social_activities.php +++ b/lang/he/block_social_activities.php @@ -1,7 +1,7 @@ diff --git a/lang/he/calendar.php b/lang/he/calendar.php index 7fbafdd12c8..b27b6fae185 100644 --- a/lang/he/calendar.php +++ b/lang/he/calendar.php @@ -1,103 +1,99 @@ ëé àéï ùåí òøåáä ëé ëì äàéøåòéí äîúçéìéí áîñâøú æîï æå éåöâå.àí éùðí éåúø îãé (éåúø îäòãôú \"îéøá äàéøåòéí äîîùîùéí åáàéí\") àæ äàéøåòéí äøçå÷éí áéåúø ìà éåöâå.'; -$string['explain_maxevents'] = 'æä ÷åáò àú äîñôø äîéøáé ùì àéøåòéí îîùîùéí åáàéí ùàôùø ìäöéâ. àí úáçø ëàï îñôø âãåì æä àôùøé ùúöåâåú àéøåòéí îîùîùéí åáàéí éîìàå çì÷ âãåì îçìì äöâ ùìê.'; -$string['explain_startwday'] = 'ùáåòåú ìåç ùðä éåöâå ëîúçéìéí áéåí ùúáçø ôä.'; -$string['explain_timeformat'] = 'àúä éëåì ìáçåø ìøàåú æîðéí áôåøîè ùì 12 àå 24 ùòåú. àí úáçø \"áøéøú îçãì\", àæ äôåøîè éáçø àåèåîèéú ìôé äùôä ùàúä îùúîù áä áàúø.'; -$string['fri'] = 'ùéùé'; -$string['friday'] = 'ùéùé'; -$string['globalevents'] = 'àéøåòéí òåìîééí'; -$string['gotocalendar'] = 'ìê ììåç ùðä'; -$string['groupevents'] = 'àéøåòéí ÷áåöúééí'; -$string['hidden'] = 'îåñúø'; -$string['manyevents'] = '$a àéøåòéí'; -$string['mon'] = 'ùðé'; -$string['monday'] = 'ùðé'; -$string['monthlyview'] = 'îøàä çåãùé'; -$string['newevent'] = 'àéøåò çãù'; -$string['noupcomingevents'] = 'àéï àøåòéí îúåëððéí'; -$string['oneevent'] = 'àéøåò àçã'; -$string['parentlanguage'] = 'en'; -$string['pref_lookahead'] = 'àøåòéí îúåëððéí'; -$string['pref_maxevents'] = 'îñôø îéøáé ùì àøåòéí îúåëððéí'; -$string['pref_startwday'] = 'éåí øàùåï ùì ùáåò'; -$string['pref_timeformat'] = 'ôåøîè úöåâú æîï'; -$string['preferences'] = 'äòãôåú'; -$string['preferences_available'] = 'äòãôåúéê äàéùéåú'; -$string['repeatnone'] = 'àéï çæøåú'; -$string['repeatweeksl'] = 'çæåø ëì ùáåò, éöéøú äëì'; -$string['repeatweeksr'] = 'àéøåòéí'; -$string['sat'] = 'ùáú'; -$string['saturday'] = 'ùáú'; -$string['shown'] = 'îåöâ'; -$string['spanningevents'] = 'àéøåòéí îúåëððéí'; -$string['sun'] = 'øàùåï'; -$string['sunday'] = 'øàùåï'; -$string['thischarset'] = 'ISO-8859-8-I'; -$string['thisdirection'] = 'rtl'; -$string['thislanguage'] = 'עברית'; -$string['thu'] = 'çîéùé'; -$string['thursday'] = 'çîéùé'; -$string['timeformat_12'] = '12 ùòåú (am-pm)'; -$string['timeformat_24'] = '24 ùòåú'; -$string['today'] = 'äéåí'; -$string['tomorrow'] = 'îçø'; -$string['tt_deleteevent'] = 'îç÷ àéøåò'; -$string['tt_editevent'] = 'òøåê àéøåò'; -$string['tt_hidecourse'] = 'àéøåòé ä÷åøñ îåöâéí (ìçõ ëãéç ìäñúéø)'; -$string['tt_hideglobal'] = 'àéøåòéí òåìîééí îåöâéí (ìçõ ëãé ìäñúéø)'; -$string['tt_hidegroups'] = 'àéøåòéí ÷áåöúééí îåöâéí (ìçõ ëãé ìäñúéø)'; -$string['tt_hideuser'] = 'àéøåòé îùúîùéí îåöâéí (ìçõ ëãé ìäñúéø)'; -$string['tt_showcourse'] = 'àéøåòé ä÷åøñ îåñúøéí (ìçõ ëãé ìäöéâ)'; -$string['tt_showglobal'] = 'àéøåòéí òåìîééí îåñúøéí (ìçõ ëãé ìäöéâ)'; -$string['tt_showgroups'] = 'àéøåòéí ÷áåöúééí îåñúøéí (ìçõ ëãé ìäöéâ)'; -$string['tt_showuser'] = 'àéøåòé îùúîùéí îåñúøéí (ìçõ ëãé ìäöéâ)'; -$string['tue'] = 'ùìéùé'; -$string['tuesday'] = 'ùìéùé'; -$string['typecourse'] = 'àéøåò ÷åøñ'; -$string['typegroup'] = 'àéøåò ÷áåöúé'; -$string['typesite'] = 'àéøåò àúø'; -$string['typeuser'] = 'àéøåò îùúîù'; -$string['upcomingevents'] = 'àøåòéí îúåëððéí'; -$string['userevents'] = 'àéøåòé îùúîùéí'; -$string['wed'] = 'øáéòé'; -$string['wednesday'] = 'øáéòé'; -$string['yesterday'] = 'àúîåì'; +$string['calendar'] = 'לוח שנה'; +$string['calendarheading'] = '$a לוח שנה'; +$string['clickhide'] = 'לחץ כדי להסתיר'; +$string['clickshow'] = 'לחץ כדי להראות'; +$string['confirmeventdelete'] = 'האם אתה בטוח שאתה רוצה למחוק אירוע זה?'; +$string['courseevents'] = 'אירועי קורס'; +$string['dayview'] = 'מראה יום'; +$string['daywithnoevents'] = 'אין אירועים ביום זה'; +$string['default'] = 'ברירת מחדל'; +$string['deleteevent'] = 'מחק אירוע'; +$string['detailedmonthview'] = 'מראה חודש מפורט'; +$string['durationminutes'] = 'משך זמן בדקות'; +$string['durationnone'] = 'ללא משך זמן'; +$string['durationuntil'] = 'עד'; +$string['editevent'] = 'אירוע עריכה'; +$string['errorbeforecoursestart'] = 'לא יכול לקבוע אירוע לפני תאריך תחילת קורס '; +$string['errorinvaliddate'] = 'תאריך לא תקף'; +$string['errorinvalidminutes'] = 'פרט משך זמן בדקות על ידי נתינת מספר בין 1 ו 999 '; +$string['errorinvalidrepeats'] = 'פרט את מספר האירועים על ידי נתינת מספר בין 1 ו 999'; +$string['errornodescription'] = 'נדרש תיאור'; +$string['errornoeventname'] = 'נדרש שם'; +$string['eventdate'] = 'תאריך'; +$string['eventdescription'] = 'תיאור'; +$string['eventduration'] = 'משך'; +$string['eventendtime'] = 'זמן סיום'; +$string['eventinstanttime'] = 'זמן'; +$string['eventkind'] = 'סוג של אירוע'; +$string['eventname'] = 'שם'; +$string['eventrepeat'] = 'חזרות'; +$string['eventsfor'] = '$a אירועים'; +$string['eventstarttime'] = 'זמן התחלה'; +$string['eventtime'] = 'זמן'; +$string['eventview'] = 'פרטי אירוע'; +$string['expired'] = 'פג תוקף'; +$string['explain_lookahead'] = 'זה קובע את מספר הימים (המירבי) עד להתחלת אירוע, שאירוע שמתחיל תוך מספר זה של ימים יוצג כאירוע ממשמש ובא. אירועים שמתחילים תוך מספר ימים רב יותר לעולם לא יוצגו כממשמים ובאים. אנא שים לב כי כי אין שום ערובה כי כל האירועים המתחילים במסגרת זמן זו יוצגו.אם ישנם יותר מדי (יותר מהעדפת \"מירב האירועים הממשמשים ובאים\") אז האירועים הרחוקים ביותר לא יוצגו.'; +$string['explain_maxevents'] = 'זה קובע את המספר המירבי של אירועים ממשמשים ובאים שאפשר להציג. אם תבחר כאן מספר גדול זה אפשרי שתצוגות אירועים ממשמשים ובאים ימלאו חלק גדול מחלל הצג שלך.'; +$string['explain_startwday'] = 'שבועות לוח שנה יוצגו כמתחילים ביום שתבחר פה.'; +$string['explain_timeformat'] = 'אתה יכול לבחור לראות זמנים בפורמט של 12 או 24 שעות. אם תבחר \"ברירת מחדל\", אז הפורמט יבחר אוטומטית לפי השפה שאתה משתמש בה באתר.'; +$string['fri'] = 'שישי'; +$string['friday'] = 'שישי'; +$string['globalevents'] = 'אירועים עולמיים'; +$string['gotocalendar'] = 'לך ללוח שנה'; +$string['groupevents'] = 'אירועים קבוצתיים'; +$string['hidden'] = 'מוסתר'; +$string['manyevents'] = '$a אירועים'; +$string['mon'] = 'שני'; +$string['monday'] = 'שני'; +$string['monthlyview'] = 'מראה חודשי'; +$string['newevent'] = 'אירוע חדש'; +$string['noupcomingevents'] = 'איו אירועים הממשמשים ובאים'; +$string['oneevent'] = 'אירוע אחד'; +$string['pref_lookahead'] = 'אירועים ממשמשים ובאים'; +$string['pref_maxevents'] = 'מספר מירבי של אירועים ממשמשים ובאים'; +$string['pref_startwday'] = 'יום ראשון של שבוע'; +$string['pref_timeformat'] = 'פורמט תצוגת זמן'; +$string['preferences'] = 'העדפות'; +$string['preferences_available'] = 'העדפותיך האישיות'; +$string['repeatnone'] = 'אין חזרות'; +$string['repeatweeksl'] = 'חזור של כבוע, יצירת סך הכל'; +$string['repeatweeksr'] = 'אירועים'; +$string['sat'] = 'שבת'; +$string['saturday'] = 'שבת'; +$string['shown'] = 'מוצג'; +$string['spanningevents'] = 'אירועים בדרך'; +$string['sun'] = 'ראשון'; +$string['sunday'] = 'ראשון'; +$string['thu'] = 'חמישי'; +$string['thursday'] = 'חמישי'; +$string['timeformat_12'] = '12 שעות (am-pm)'; +$string['timeformat_24'] = '24 שעות'; +$string['today'] = 'היום'; +$string['tomorrow'] = 'מחר'; +$string['tt_deleteevent'] = 'מחק אירוע'; +$string['tt_editevent'] = 'ערוך אירוע'; +$string['tt_hidecourse'] = 'אירועי הקורס מוצגים (לחץ כדיח להסתיר)'; +$string['tt_hideglobal'] = 'אירועים עולמיים מוצגים (לחץ כדי להסתיר)'; +$string['tt_hidegroups'] = 'אירועים קבוצתיים מוצגים (לחץ כדי להסתיר)'; +$string['tt_hideuser'] = 'אירועי משתמשים מוצגים (לחץ כדי להסתיר)'; +$string['tt_showcourse'] = 'אירועי הקורס מוסתרים (לחץ כדי להציג)'; +$string['tt_showglobal'] = 'אירועים עולמיים מוסתרים (לחץ כדי להציג)'; +$string['tt_showgroups'] = 'אירועים קבוצתיים מוסתרים (לחץ כדי להציג)'; +$string['tt_showuser'] = 'אירועי משתמשים מוסתרים (לחץ כדי להציג)'; +$string['tue'] = 'שלישי'; +$string['tuesday'] = 'שלישי'; +$string['typecourse'] = 'אירוע קורס'; +$string['typegroup'] = 'אירוע קבוצתי'; +$string['typesite'] = 'אירוע אתר'; +$string['typeuser'] = 'אירוע משתמש'; +$string['upcomingevents'] = 'אירועים ממשמשים ובאים'; +$string['userevents'] = 'אירועי משתמשים'; +$string['wed'] = 'רביעי'; +$string['wednesday'] = 'רביעי'; +$string['yesterday'] = 'אתמול'; ?> diff --git a/lang/he/censor.php b/lang/he/censor.php index 832d68ab008..5a95f46e0f9 100644 --- a/lang/he/censor.php +++ b/lang/he/censor.php @@ -1,7 +1,7 @@ diff --git a/lang/he/chat.php b/lang/he/chat.php index 6cbc0692564..206b56bea6c 100644 --- a/lang/he/chat.php +++ b/lang/he/chat.php @@ -1,44 +1,40 @@ diff --git a/lang/he/choice.php b/lang/he/choice.php index e030ef92eac..b3f99433428 100644 --- a/lang/he/choice.php +++ b/lang/he/choice.php @@ -1,30 +1,23 @@ diff --git a/lang/he/countries.php b/lang/he/countries.php index 8d169cb2994..54a274c3cb1 100644 --- a/lang/he/countries.php +++ b/lang/he/countries.php @@ -1,250 +1,245 @@ diff --git a/lang/he/dialogue.php b/lang/he/dialogue.php index dddd94889b9..e164ff06f56 100644 --- a/lang/he/dialogue.php +++ b/lang/he/dialogue.php @@ -1,72 +1,72 @@
                            äàí àúä áèåç ùàúä øåöä ìñâåø ãéàìåâ æä?'; -$string['deleteafter'] = 'îç÷ ãéàìåâéí ñâåøéí ìàçø (éîéí)'; -$string['dialogueclosed'] = 'ãéàìåâ ñâåø'; -$string['dialogueintro'] = 'ãéàìåâ äéëøåú'; -$string['dialoguemail'] = '$a->userfrom ôøñí øéùåí çãù áøéùåí äãéàìåâ ùìê -ì\'$a->dialogue\' +$string['addmynewentries'] = 'הוסף את רישומי החדשים'; +$string['addmynewentry'] = 'הוסף את רשימתי החדשה'; +$string['addsubject'] = 'הוסף נושא'; +$string['allowmultiple'] = 'הרשה יותר מדיאלוג אחד עם אותו אדם'; +$string['allowstudentdialogues'] = 'הרשה דיאלוגים בין סטודנט לסטודנט'; +$string['close'] = 'סגור'; +$string['closed'] = 'סגור'; +$string['confirmclosure'] = 'אתה עומד לסגור דיאלוג עם $a. דיאלוגים סגורים אי אפשר לפתוח. אם תסגור דיאלוג זה אתה תוכל לראות אותו אבל לא להוסיף אלי, וכדי להמשיך לדבר עם אדם זה תצטרך לפתוח דיאלוג חדש.

                            האם אתה בטוח שאתה רוצה לסגור דיאלוג זה?'; +$string['deleteafter'] = 'מחק דיאלוגים סגורים לאחר (ימים)'; +$string['dialogueclosed'] = 'דיאלוג סגור'; +$string['dialogueintro'] = 'דיאלוג היכרות'; +$string['dialoguemail'] = '$a->userfrom פרסם רישום חדש ברישום הדיאלוג שלך +ל\'$a->dialogue\' -àúä éëåì ìøàåú àåúå ëðñôç ìøéùåí äãéàìåâ ùìê: +אתה יכול לראות אותו כנספח לרישום הדיאלוג שלך: $a->url'; -$string['dialoguemailhtml'] = '$a->userfrom ôøñí øéùåí çãù áøéùåí äãéàìåâ ùìê ì +$string['dialoguemailhtml'] = '$a->userfrom פרסם רישום חדש ברישום הדיאלוג שלך ל \'$a->dialogue\'

                            -àúä éëåì ìøàåú àåúå ëðñôç ì url\">dialogue ùìê.'; -$string['dialoguename'] = 'ùí ãéàìåâ'; -$string['dialogueopened'] = 'ðôúç ãéàìåâ òí $a'; -$string['dialoguewith'] = 'ãéàìåâ òí $a'; -$string['everybody'] = 'ëåìí'; -$string['furtherinformation'] = 'îéãò ðåñó'; -$string['lastentry'] = 'øéùåí àçøåï'; -$string['maildefault'] = 'ùìç áøéøú îçãì '; -$string['modulename'] = 'ãéàìåâ'; -$string['modulenameplural'] = 'ãéàìåâéí'; -$string['namehascloseddialogue'] = '$a ñâø ãéàìåâ'; -$string['newdialogueentries'] = 'øéùåîé ãéàìåâ çãùéí'; -$string['newentry'] = 'øéùåí çãùä'; -$string['noavailablepeople'] = 'àó àçã àéðå æîéï ì÷éåí ãéàìåâ'; -$string['nopersonchosen'] = 'ìà ðáçø àãí'; -$string['nosubject'] = 'ìà äåëðñ ðåùà'; -$string['notextentered'] = 'ìà äåëðñ è÷ñè'; -$string['notstarted'] = 'òãééï ìà äúçìú ãéàìåâ æä'; -$string['notyetseen'] = 'ìà ðøàä òãééï'; -$string['numberofentries'] = 'îñôø øéùåîéí'; -$string['numberofentriesadded'] = 'îñôø øéùåîéí ùäåñôå: $a'; -$string['of'] = 'ùì'; -$string['onwrote'] = 'òì $a ëúá'; -$string['onyouwrote'] = 'òì $a àúä ëúáú'; -$string['open'] = 'ôúç'; -$string['openadialoguewith'] = 'ôúç áãéàìåâ òí'; -$string['opendialogue'] = 'ôúç ãéàìåâ'; -$string['opendialogueentries'] = 'ôúç øùéîú ãéàìåâ'; -$string['pane0'] = 'ôúç ãéàìåâ'; -$string['pane1'] = '$a ãéàìåâéí äîçëéí ìúâåáä îîê'; -$string['pane1one'] = 'ãéàìåâ 1 äîçëä ìúâåáä îîê'; -$string['pane2'] = '$a ãéàìåâéí äîçëéí ìúâåáä îäàãí äàçø'; -$string['pane2one'] = 'ãéàìåâ 1 äîçëä ìúâåáä îäàãí äùðé'; -$string['pane3'] = '$a ãéàìåâéí ñâåøéí'; -$string['pane3one'] = 'ãéàìåâ ñâåø 1'; -$string['seen'] = 'ðøàä ìôðé $a '; -$string['sendmailmessages'] = 'ùìç äåâòåú ãåàø àì÷åøðé áðåâò ìøéùåîéí äçãùéí ùìé'; -$string['status'] = 'îöá'; -$string['studenttostudent'] = 'ñèåãðè ìñèåãðè'; -$string['subject'] = 'ðåùà'; -$string['subjectadded'] = 'ðåùà äåñó'; -$string['teachertostudent'] = 'îåøä ìñèåãðè'; -$string['typefirstentry'] = 'ä÷ìã øéùåí øàùåï ôä'; -$string['typefollowup'] = 'ä÷ìã äåãòä òå÷áú ôä'; -$string['typeofdialogue'] = 'ñåâ ãéàìåâ'; -$string['typereply'] = 'ä÷ìã úâåáä ôä'; -$string['viewallentries'] = 'øàä $a øéùåîé ãéàìåâ'; +אתה יכול לראות אותו כנספח ל url\">dialogue שלך.'; +$string['dialoguename'] = 'שם דיאלוג'; +$string['dialogueopened'] = 'נפתח דיאלוג עם $a'; +$string['dialoguewith'] = 'דיאלוג עם $a'; +$string['everybody'] = 'כולם'; +$string['furtherinformation'] = 'מידע נוסף'; +$string['lastentry'] = 'רישום אחרון'; +$string['maildefault'] = 'שלח ברירת מחדל '; +$string['modulename'] = 'דיאלוג'; +$string['modulenameplural'] = 'דיאלוגים'; +$string['namehascloseddialogue'] = '$a סגר דיאלוג'; +$string['newdialogueentries'] = 'רישומי דיאלוג חדשים'; +$string['newentry'] = 'רישום חדשה'; +$string['noavailablepeople'] = 'אף אחד אינו זמין לקיום דיאלוג'; +$string['nopersonchosen'] = 'לא נבחר אדם'; +$string['nosubject'] = 'לא הוכנס נושא'; +$string['notextentered'] = 'לא הוכנס טקסט'; +$string['notstarted'] = 'עדיין לא התחלת דיאלוג זה'; +$string['notyetseen'] = 'לא נראה עדיין'; +$string['numberofentries'] = 'מספר רישומים'; +$string['numberofentriesadded'] = 'מספר רישומים שהוספו: $a'; +$string['of'] = 'של'; +$string['onwrote'] = 'על $a כתב'; +$string['onyouwrote'] = 'על $a אתה כתבת'; +$string['open'] = 'פתח'; +$string['openadialoguewith'] = 'פתח בדיאלוג עם'; +$string['opendialogue'] = 'פתח דיאלוג'; +$string['opendialogueentries'] = 'פתח רשימת דיאלוג'; +$string['pane0'] = 'פתח דיאלוג'; +$string['pane1'] = '$a דיאלוגים המחכים לתגובה ממך'; +$string['pane1one'] = 'דיאלוג 1 המחכה לתגובה ממך'; +$string['pane2'] = '$a דיאלוגים המחכים לתגובה מהאדם האחר'; +$string['pane2one'] = 'דיאלוג 1 המחכה לתגובה מהאדם השני'; +$string['pane3'] = '$a דיאלוגים סגורים'; +$string['pane3one'] = 'דיאלוג סגור 1'; +$string['seen'] = 'נראה לפני $a '; +$string['sendmailmessages'] = 'שלח הוגעות דואר אלקורני בנוגע לרישומים החדשים שלי'; +$string['status'] = 'מצב'; +$string['studenttostudent'] = 'סטודנט לסטודנט'; +$string['subject'] = 'נושא'; +$string['subjectadded'] = 'נושא הוסף'; +$string['teachertostudent'] = 'מורה לסטודנט'; +$string['typefirstentry'] = 'הקלד רישום ראשון פה'; +$string['typefollowup'] = 'הקלד הודעה עוקבת פה'; +$string['typeofdialogue'] = 'סוג דיאלוג'; +$string['typereply'] = 'הקלד תגובה פה'; +$string['viewallentries'] = 'ראה $a רישומי דיאלוג'; ?> diff --git a/lang/he/editor.php b/lang/he/editor.php index 32f3e20ebe7..3493fc0df6c 100644 --- a/lang/he/editor.php +++ b/lang/he/editor.php @@ -4,7 +4,7 @@ $string['about'] = 'About this editor'; $string['absbottom'] = 'Absbottom'; -$string['middle'] = 'middle'; +$string['absmiddle'] = 'Absmiddle'; $string['address'] = 'Address'; $string['alignment'] = 'Alignment'; $string['alternatetext'] = 'Alternate text'; diff --git a/lang/he/enrol_flatfile.php b/lang/he/enrol_flatfile.php index 7c8ad47e3ba..539afeef2b4 100644 --- a/lang/he/enrol_flatfile.php +++ b/lang/he/enrol_flatfile.php @@ -1,8 +1,8 @@ diff --git a/lang/he/enrol_internal.php b/lang/he/enrol_internal.php index 4e889f9482a..f0e270d8534 100644 --- a/lang/he/enrol_internal.php +++ b/lang/he/enrol_internal.php @@ -1,7 +1,7 @@ diff --git a/lang/he/enrol_paypal.php b/lang/he/enrol_paypal.php index cd33d36830e..f66c7e5b0f4 100644 --- a/lang/he/enrol_paypal.php +++ b/lang/he/enrol_paypal.php @@ -1,8 +1,8 @@ diff --git a/lang/he/error.php b/lang/he/error.php index c3b848f4d62..24734aa60c0 100755 --- a/lang/he/error.php +++ b/lang/he/error.php @@ -1,19 +1,19 @@ modulename\" ($a->moduleversion) . ãáø æä ãåøù âéøñä çãùä éåúø ùì Moodle (ëøâò àúä îùúîù á a->currentmoodle$, àúä öøéê a->requiremoodle$).'; -$string['notavailable'] = 'ëøâò æä ìà æîéï'; -$string['restricteduser'] = 'îöèòøéí àáì çùáåðê äðåëçé \"$a\" îåâáì îìòùåú æàú.'; -$string['unknowncourse'] = '÷åøñ ìà éãåò áùí \"$a\"'; -$string['usernotaddederror'] = 'îùúîù \"$a\" àéðå îåñó - èòåú ìà éãåòä'; -$string['usernotaddedregistered'] = 'îùúîù \"$a\" àéðå îåñó - ëáø øùåí'; +$string['coursegroupunknown'] = 'קורס התואם את קבוצה $a לא מפורט'; +$string['erroronline'] = 'טעות בקו $a'; +$string['fieldrequired'] = '\"$a\" הוא שדה נדרש'; +$string['groupalready'] = 'המשתמש כבר משתייך לקבוצה $a'; +$string['groupunknown'] = 'קבוצה $a אינה שייכת לקורס המצויין'; +$string['invalidfieldname'] = '\"$a\" אינו שם שדה תקף'; +$string['missingfield'] = 'שדה \"$a\" חסר'; +$string['modulerequirementsnotmet'] = ' אי אפשר היה להתקין את פרק\"$ a->modulename\" ($a->moduleversion) . דבר זה דורש גירסה חדשה יותר של Moodle (כרגע אתה משתמש ב a->currentmoodle$, אתה צריך a->requiremoodle$).'; +$string['notavailable'] = 'כרגע זה לא זמין'; +$string['restricteduser'] = 'מצטערים אבל חשבונך הנוכחי \"$a\" מוגבל מלעשות זאת.'; +$string['unknowncourse'] = 'קורס לא ידוע בשם \"$a\"'; +$string['usernotaddederror'] = 'משתמש \"$a\" אינו מוסף - טעות לא ידועה'; +$string['usernotaddedregistered'] = 'משתמש \"$a\" אינו מוסף - כבר רשום'; ?> diff --git a/lang/he/exercise.php b/lang/he/exercise.php index dc96ed4d970..e3241db2d32 100644 --- a/lang/he/exercise.php +++ b/lang/he/exercise.php @@ -1,71 +1,160 @@ éëåì ìäéåú åúøöä ìùðåú àú òáåãúê ìàåø äòøëä æå.
                            àí úáçø ìòùåú æàú àðà æëåø ìùðåú âí àú äòøëúê.
                            àúä éëåì ìòùåú æàú òì éãé ìçéöä òì ä÷éùåø ääòøëä îçãù ìîèä.'; -$string['awaitingassessmentbythe'] = 'îîúéï ìäòøëä òì éãé ä $a'; -$string['comment'] = 'äòøä'; -$string['confirmdeletionofthisitem'] = 'àîú îçé÷á ùì $a'; -$string['correct'] = 'ðëåï'; -$string['criterion'] = '÷øéèøéåï'; -$string['deadline'] = 'úàøéê éòã'; -$string['deadlineis'] = 'úàøéê éòã æä äåà $a'; -$string['delete'] = 'îç÷'; -$string['deleting'] = 'îåç÷'; -$string['description'] = 'úéàåø'; -$string['descriptionofexercise'] = 'áîùéîú úøâåì, úéàåø äúøâåì àå äîùéîä ùöøéëä ìäéòùåú òì éãé ä $a, îåëðñ ìúåê îñîê word àå ÷åáõ HTML. ÷åáõ æä îåòìä ìúåê äúøâåì ìôðé ùäîùéîä ðôúçú áôðé ä $a. æä âí àôùøé ìéöåø ñè ùì ååøéàöéåú òì àåúå úøâåì àå îùéîä - ùåá ëîñîëé word àå ÷áöé HTML, åìäòìåú àåúí ìúåê äúøâåì ìôðé ùäåà ðôúç áôðé ä$a.'; -$string['detailsofassessment'] = 'ôøèé ääòøëä'; -$string['displayoffinalgrades'] = 'úöåâä ùì öéåðéí ñåôééí'; -$string['doubleupload'] = 'àæäøä: ëðøàä åäâùä æå äåâùä ôòîééí. ìê ìòîåã ääðäìä, çôù ùúé äâùåú îîùúîù æä áúåê ú÷åôú æîï ÷öøä. îç÷ àçú îääâùåú ìôðé ùàúä îîùéê.'; -$string['duedate'] = 'úàøéê äâùä'; -$string['edit'] = 'òøåê'; -$string['editingassessmentelements'] = 'àìîðèé äòøëú òøéëä'; -$string['element'] = 'àìîðè'; -$string['elementweight'] = 'îù÷ì äàìîðè'; -$string['entriessaved'] = 'äâùåú ðùîøå'; -$string['excellent'] = 'îöåééï'; -$string['exerciseassessments'] = 'äòøëåú äúøâåì'; -$string['exercisefeedback'] = 'îùåá äúøâåì'; -$string['exercisesubmissions'] = 'äâùåú äúøâåì'; -$string['generalcomment'] = 'äòøä ëììéú'; -$string['good'] = 'èåá'; -$string['gradeforassessment'] = 'öéåï ìäòøëä'; -$string['gradeforstudentsassessment'] = 'öéåï áùáéì $a äòøëä'; -$string['gradeforsubmission'] = 'öéåï ìäâùä'; -$string['gradetable'] = 'èáìú öéåðéí'; -$string['gradingstrategy'] = 'àñèøèâééú îúï öéåðéí'; -$string['handlingofmultiplesubmissions'] = 'èéôåì áäâùåú îøåáåú'; -$string['hidenamesfromstudents'] = 'äñúø ùîåú îäñèåãðèéí'; -$string['incorrect'] = 'ìà ðëåï'; -$string['mail1'] = 'îùéîúê \'$a\' äåòøëä òì éãé'; -$string['mail2'] = 'àú ääòøëåú åäöéåðéí ðéúï ìøàåú áîùéîú úøâåì \'$a\''; -$string['mail3'] = 'àúä éëåì ìøàåú æàú áîùéîú äúøâåì ùìê'; -$string['mail6'] = 'äòøëúê ùì äîùéîä \'$a\' ðáçðä'; -$string['mail7'] = 'àú ääòøåú ùðúðå òì éãé $a àôùø ìøàåú áîùéîú äúøâåì '; -$string['managingassignment'] = 'äñúãøåú òí äúøâåì'; -$string['maximumsize'] = 'âáåì î÷ñéîìé'; -$string['modulename'] = 'úøâåì'; -$string['modulenameplural'] = 'úøâåìéí'; -$string['movingtophase'] = 'òåáø ìùìá $a'; -$string['multiplesubmissions'] = 'äâùåú îøåáåú'; -$string['noexercisedescriptionssubmitted'] = 'ìà äåâùå úéàåøé úøâåì'; -$string['nosubmissions'] = 'àéå äâùåú'; -$string['notassessedyet'] = 'ìà äåòøê òãééï'; -$string['notavailable'] = 'ìà æîéï'; +$string['absent'] = 'חסר'; +$string['accumulative'] = 'מצטבר'; +$string['action'] = 'פעולה'; +$string['ago'] = 'לפני $a '; +$string['allgradeshaveamaximumof'] = 'כל הציונים הם בעלי מקסימום של: $a'; +$string['amend'] = 'שפר'; +$string['amendassessmentelements'] = 'שפר אלמנטי הערכה'; +$string['amendtitle'] = 'שפר כותרת'; +$string['assess'] = 'הערך'; +$string['assessed'] = 'העריך'; +$string['assessment'] = 'הערכה'; +$string['assessmentby'] = 'הערכה על ידי $a'; +$string['assessmentform'] = 'הערכה מ'; +$string['assessmentmadebythe'] = 'הערכה נעשתה על ידי $a'; +$string['assessmentofthissubmission'] = 'הערכה של הגשה זו'; +$string['assessments'] = 'הערכות'; +$string['atthisstageyou'] = 'בשלב זה השלמת הערכה.
                            יכול להיות ותרצה לשנות את עבודתך לאור הערכה זו.
                            אם תבחר לעשות זאת אנא זכור לשנות גם את הערכתך.
                            אתה יכול לעשות זאת על ידי לחיצה על הקישור ההערכה מחדש למטה.'; +$string['awaitingassessmentbythe'] = 'ממתין להערכה על ידי ה $a'; +$string['awaitingfeedbackfromthe'] = 'ממתין למשוב מה $a'; +$string['comment'] = 'הערה'; +$string['confirmdeletionofthisitem'] = 'אמת מחיקב של $a'; +$string['correct'] = 'נכון'; +$string['criterion'] = 'קריטריון'; +$string['deadline'] = 'תאריך יעד'; +$string['deadlineis'] = 'תאריך יעד זה הוא $a'; +$string['delete'] = 'מחק'; +$string['deleting'] = 'מוחק'; +$string['description'] = 'תיאור'; +$string['descriptionofexercise'] = 'במשימת תרגול, תיאור התרגול או המשימה שצריכה להיעשות על ידי ה $a, מוכנס לתוך מסמך word או קובץ HTML. קובץ זה מועלה לתוך התרגול לפני שהמשימה נפתחת בפני ה $a. זה גם אפשרי ליצור סט של ווריאציות על אותו תרגול או משימה - שוב כמסמכי word או קבצי HTML, ולהעלות אותם לתוך התרגול לפני שהוא נפתח בפני ה$a.'; +$string['detailsofassessment'] = 'פרטי ההערכה'; +$string['displayoffinalgrades'] = 'תצוגה של ציונים סופיים'; +$string['doubleupload'] = 'אזהרה: כנראה והגשה זו הוגשה פעמיים. לך לעמוד ההנהלה, חפש שתי הגשות ממשתמש זה בתוך תקופת זמן קצרה. מחק אחת מההגשות לפני שאתה ממשיך.'; +$string['duedate'] = 'תאריך הגשה'; +$string['edit'] = 'ערוך'; +$string['editingassessmentelements'] = 'אלמנטי הערכת עריכה'; +$string['element'] = 'אלמנט'; +$string['elementweight'] = 'משקל האלמנט'; +$string['entriessaved'] = 'הגשות נשמרו'; +$string['excellent'] = 'מצויין'; +$string['exerciseassessments'] = 'הערכות התרגול'; +$string['exercisefeedback'] = 'משוב התרגול'; +$string['exercisesubmissions'] = 'הגשות התרגול'; +$string['generalcomment'] = 'הערה כללית'; +$string['good'] = 'טוב'; +$string['gradeforassessment'] = 'ציון להערכה'; +$string['gradeforstudentsassessment'] = 'ציון בשביל $a הערכה'; +$string['gradeforsubmission'] = 'ציון להגשה'; +$string['gradetable'] = 'טבלת ציונים'; +$string['gradingstrategy'] = 'אסטרטגיית מתן ציונים'; +$string['handlingofmultiplesubmissions'] = 'טיפול בהגשות מרובות'; +$string['hidenamesfromstudents'] = 'הסתר שמות מהסטודנטים'; +$string['incorrect'] = 'לא נכון'; +$string['mail1'] = 'משימתך \'$a\' הוערכה על ידי'; +$string['mail2'] = 'את ההערכות והציונים ניתן לראות במשימת תרגול \'$a\''; +$string['mail3'] = 'אתה יכול לראות זאת במשימת התרגול שלך'; +$string['mail6'] = 'הערכתך של המשימה \'$a\' נבחנה'; +$string['mail7'] = 'את ההערות שנתנו על ידי $a אפשר לראות במשימת התרגול '; +$string['managingassignment'] = 'הסתדרות עם התרגול'; +$string['maximumsize'] = 'גבול מקסימלי'; +$string['modulename'] = 'תרגול'; +$string['modulenameplural'] = 'תרגולים'; +$string['movingtophase'] = 'עובר לשלב $a'; +$string['multiplesubmissions'] = 'הגשות מרובות'; +$string['noexercisedescriptionssubmitted'] = 'לא הוגשו תיאורי תרגול'; +$string['nosubmissions'] = 'איו הגשות'; +$string['notassessedyet'] = 'לא הוערך עדיין'; +$string['notavailable'] = 'לא זמין'; +$string['noteonassessmentelements'] = 'Note that grading is broken down into a number of \'Assessment Elements\'.
                            + This makes the grading easier and more consistent. As teacher you must add these
                            + Elements before making the assignment available to students. This is done by
                            + clicking on the assignment in the course, if no elements are present you will be asked
                            + to add them. You can change the number of elements using the Edit Assignment screen,
                            + the elements themselves can be amended from the \"Managing Assignment\" screen. '; +$string['noteonstudentassessments'] = '{Grade from student / Grading Grade from teacher}'; +$string['notgraded'] = 'Not Graded'; +$string['notitlegiven'] = 'No Title Given'; +$string['nowpleasemakeyourownassessment'] = 'Now Please make your own Assessment of the Piece of Work from $a.
                            Note that the Assessment Form is initially given the same grades as the
                            Student\'s Form. You should make any amendments you think necessary and then
                            click on one of the buttons at the foot of the page.'; +$string['numberofassessmentelements'] = 'Number of Comments, Assessment Elements, Grade Bands, Criterion Statments or Categories in a Rubric'; +$string['numberofentries'] = 'Number of Entries'; +$string['numberofnegativeresponses'] = 'Number of Negative Responses'; +$string['onesubmission'] = 'One Submission'; +$string['optionaladjustment'] = 'Optional Adjustment'; +$string['overallgrade'] = 'Overall Grade'; +$string['phase'] = 'Phase'; +$string['phase1'] = 'Set Up Exercise'; +$string['phase1short'] = 'Set Up'; +$string['phase2'] = 'Allow $a Assessments and Submissions'; +$string['phase2short'] = 'Open'; +$string['phase3'] = 'Show Overall Grades and League Table'; +$string['phase3short'] = 'Display'; +$string['pleasegradetheassessment'] = 'Please Grade the Assessment of this Piece of Work by $a'; +$string['pleasesubmityourwork'] = 'Please submit your Work using this Form'; +$string['pleaseusethisform'] = 'Please complete this form when you have
                            finished the instructions in the exercise shown below.'; +$string['pleaseviewtheexercise'] = 'Please view the exercise given below by clicking on it\'s title.
                            You should follow the instructions in this exercise.
                            When you are happy that you have completed the exercise
                            successfully you should click on Assess (or Re-assess) link in
                            the box below. When you have done this assessment you will
                            be shown further instructions on what happens next.'; +$string['poor'] = 'Poor'; +$string['present'] = 'Present'; +$string['reasonforadjustment'] = 'Reason for Adjustment'; +$string['reassess'] = 'Re-assess'; +$string['resubmissionfor'] = 'Resubmission for $a'; +$string['resubmitnote'] = '* means that the $a is allowed to redo this submission.
                            This flag can be given to any submission by re-assessing it and clicking
                            on the Allow $a to Re-submit button.
                            The student can resubmit when this flag is present on any of their submissions.'; +$string['rubric'] = 'Rubric'; +$string['savedok'] = 'Saved OK'; +$string['saveentries'] = 'Save Entries'; +$string['savemyassessment'] = 'Save my Assessment'; +$string['saveweights'] = 'Save Weights'; +$string['scale10'] = 'Score out of 10'; +$string['scale100'] = 'Score out of 100'; +$string['scale20'] = 'Score out of 20'; +$string['scalecorrect'] = '2 point Correct/Incorrect scale'; +$string['scaleexcellent4'] = '4 point Excellent/Very Poor scale'; +$string['scaleexcellent5'] = '5 point Excellent/Very Poor scale'; +$string['scaleexcellent7'] = '7 point Excellent/Very Poor scale'; +$string['scalegood3'] = '3 point Good/Poor scale'; +$string['scalepresent'] = '2 point Present/Absent scale'; +$string['scaleyes'] = '2 point Yes/No scale'; +$string['specimenassessmentform'] = 'Specimen Assessment Form'; +$string['studentallowedtoresubmit'] = '$a ALLOWED to re-submit'; +$string['studentassessments'] = '$a Assessments'; +$string['studentnotallowed'] = '$a NOT allowed to re-submit (or not needed)'; +$string['studentsubmissions'] = '$a Submissions'; +$string['studentsubmissionsforassessment'] = '$a Student Submissions for Assessment'; +$string['submission'] = 'Submission'; +$string['submissions'] = 'Submissions'; +$string['submissionsnowclosed'] = 'Submissions now closed - Submission deadline has passed'; +$string['submitexercisedescription'] = 'Submit Exercise Description'; +$string['submitted'] = 'Submitted'; +$string['submittedby'] = 'Submitted by'; +$string['suggestedgrade'] = 'Suggested Grade'; +$string['teacherassessment'] = '$a Assessment'; +$string['teacherassessmenttable'] = '$a Assessment Table'; +$string['teacherscomment'] = 'Teacher\'s Comment'; +$string['theexercise'] = 'The Exercise'; +$string['theexerciseandthesubmissionby'] = 'The Exercise and the Submission by $a'; +$string['thegradeis'] = 'The Grade is $a'; +$string['thereisfeedbackfromthe'] = 'There is feedback from the $a'; +$string['thisisaresubmission'] = 'This is a Re-submission by $a.
                            Your assessment of their previous submission is shown.
                            After looking at the new submission, please Amend this assessment
                            and click on one of the buttons at the foot of the page.'; +$string['title'] = 'Title'; +$string['typeofscale'] = 'Type of Scale'; +$string['ungradedstudentassessments'] = '$a Ungraded Student Assessments'; +$string['usemaximum'] = 'Use Maximum'; +$string['usemean'] = 'Use Mean'; +$string['verypoor'] = 'Very Poor'; +$string['view'] = 'View'; +$string['viewassessment'] = 'View Assessment'; +$string['warningonamendingelements'] = 'WARNING: There are submitted assessments.
                            Do NOT change the number of elements, the scale types or the element weights.'; +$string['weightederrorcount'] = 'Weighted Error Count: $a'; +$string['weightforgradingofassessments'] = 'Weight for Grading of Assessments'; +$string['weightforteacherassessments'] = 'Weight for $a Assessments'; +$string['weights'] = 'Weights'; +$string['weightssaved'] = 'Weights Saved'; +$string['weightsusedforoverallgrade'] = 'Weights used for Overall Grade'; +$string['yourassessment'] = 'Your Assessment'; +$string['yourfeedbackgoeshere'] = 'Your Feedback goes Here'; +$string['yoursubmission'] = 'Your Submission'; ?> diff --git a/lang/he/forum.php b/lang/he/forum.php index 0335f726b55..7e9d5a8fbd4 100644 --- a/lang/he/forum.php +++ b/lang/he/forum.php @@ -1,112 +1,137 @@ name áúàøéê $a->date'; +$string['addanewdiscussion'] = 'Add a new discussion topic'; +$string['addanewtopic'] = 'Add a new topic'; +$string['allowchoice'] = 'Allow everyone to choose'; +$string['allowdiscussions'] = 'Can a $a post to this forum?'; +$string['allowratings'] = 'Allow posts to be rated?'; +$string['allowsdiscussions'] = 'This forum allows each person to start one discussion topic.'; +$string['anyfile'] = 'Any file'; +$string['attachment'] = 'Attachment'; +$string['bynameondate'] = 'by $a->name - $a->date'; +$string['configdisplaymode'] = 'The default display mode for discussions if one isn\'t set.'; +$string['configlongpost'] = 'Any post over this length (not including HTML) is considered long.'; +$string['configmanydiscussions'] = 'Maximum number of discussions shown in a forum per page'; +$string['configmaxbytes'] = 'Default maximum size for all forum attachments on the site (subject to course limits and other local settings)'; +$string['configshortpost'] = 'Any post under this length (not including HTML) is considered short.'; +$string['couldnotadd'] = 'Could not add your post due to an unknown error'; +$string['couldnotdeleteratings'] = 'Sorry, that cannot be deleted as people have already rated it'; +$string['couldnotdeletereplies'] = 'Sorry, that cannot be deleted as people have already responded to it'; $string['couldnotupdate'] = 'Could not update your post due to an unknown error'; -$string['delete'] = 'îç÷'; +$string['delete'] = 'Delete'; $string['deleteddiscussion'] = 'The discussion topic has been deleted'; $string['deletedpost'] = 'The post has been deleted'; $string['deletesure'] = 'Are you sure you want to delete this post?'; -$string['discussion'] = 'ãéåï'; +$string['discussion'] = 'Discussion'; $string['discussionmoved'] = 'This discussion has been moved to \'$a\'.'; -$string['discussionname'] = 'ùí äãéåï'; -$string['discussions'] = 'ãéåðéí'; +$string['discussions'] = 'Discussions'; $string['discussionsstartedby'] = 'Discussions started by $a'; $string['discussionsstartedbyrecent'] = 'Discussions recently started by $a'; -$string['discussthistopic'] = 'äâá ìðåùà æä'; +$string['discussthistopic'] = 'Discuss this topic'; $string['eachuserforum'] = 'Each person posts one discussion'; -$string['edit'] = 'òøåê'; -$string['editing'] = 'òøéëä'; +$string['edit'] = 'Edit'; +$string['editing'] = 'Editing'; $string['emptymessage'] = 'Something was wrong with your post. Perhaps you left it blank, or the attachment was too big. Your changes have NOT been saved.'; -$string['everyonecanchoose'] = 'ëåìí éëåìéí ìáçåø ìäøùí ìôåøåí æä'; -$string['everyoneissubscribed'] = 'ëåìí îðåééí ìôåøåí æä'; +$string['everyonecanchoose'] = 'Everyone can choose to be subscribed'; +$string['everyoneissubscribed'] = 'Everyone is subscribed to this forum'; $string['forcesubscribe'] = 'Force everyone to be subscribed'; $string['forcesubscribeq'] = 'Force everyone to be subscribed?'; -$string['forum'] = 'ôåøåí'; +$string['forum'] = 'Forum'; $string['forumintro'] = 'Forum introduction'; -$string['forumname'] = 'ùí äôåøåí'; -$string['forums'] = 'ôåøåîéí'; -$string['forumtype'] = 'ñåâ äôåøåí'; +$string['forumname'] = 'Forum name'; +$string['forums'] = 'Forums'; +$string['forumtype'] = 'Forum type'; $string['generalforum'] = 'Standard forum for general use'; -$string['generalforums'] = 'ôåøåîéí ëììééí'; -$string['inforum'] = 'á$a'; -$string['intronews'] = 'çãùåú ëììéåú åäåãòåú'; +$string['generalforums'] = 'General forums'; +$string['inforum'] = 'in $a'; +$string['intronews'] = 'General news and announcements'; $string['introsocial'] = 'An open forum for chatting about anything you want to'; $string['introteacher'] = 'A forum for teacher-only notes and discussion'; -$string['lastpost'] = 'äåãòä àçøåðä'; -$string['learningforums'] = 'ôåøåîé ìîéãä'; -$string['maxattachmentsize'] = 'âåãì îéøáé ì÷åáõ îöåøó'; +$string['lastpost'] = 'Last post'; +$string['learningforums'] = 'Learning forums'; +$string['maxattachmentsize'] = 'Maximum attachment size'; $string['maxtimehaspassed'] = 'Sorry, but the maximum time for editing this post ($a) has passed!'; -$string['message'] = 'äåãòä'; -$string['modeflatnewestfirst'] = 'äöâ úâåáåú áöåøä ùèåçä, äçãùåú áéåúø áäúçìä'; -$string['modeflatoldestfirst'] = 'äöâ úâåáåú áöåøä ùèåçä, äéùðåú áéåúø áäúçìä'; -$string['modenested'] = 'äöâ úâåáåú áàåôï î÷åðï'; -$string['modethreaded'] = 'äöâ úâåáåú áôúéìéí'; -$string['modulename'] = 'ôåøåí'; -$string['modulenameplural'] = 'ôåøåîéí'; -$string['more'] = 'òåã'; -$string['movethisdiscussionto'] = 'äòáø ãéåï æä ì...'; -$string['namenews'] = 'ôåøåí çãùåú'; -$string['namesocial'] = 'ôåøåí ÷äéìúé'; -$string['nameteacher'] = 'ôåøåí îåøéí'; -$string['newforumposts'] = 'äåãòåú çãùåú áôåøåîéí'; -$string['nodiscussions'] = 'òãééï àéï ðåùàé ãéåðéí áôåøåí æä'; -$string['noguestpost'] = 'öø ìðå, àåøçéí àéðí îåøùéí ìùìåç äåãòåú'; -$string['nonews'] = 'òãééï ìà ðùìçå çãùåú'; -$string['noposts'] = 'àéï äåãòåú'; +$string['message'] = 'Message'; +$string['modeflatnewestfirst'] = 'Display replies flat, with newest first'; +$string['modeflatoldestfirst'] = 'Display replies flat, with oldest first'; +$string['modenested'] = 'Display replies in nested form'; +$string['modethreaded'] = 'Display replies in threaded form'; +$string['modulename'] = 'Forum'; +$string['modulenameplural'] = 'Forums'; +$string['more'] = 'more'; +$string['movethisdiscussionto'] = 'Move this discussion to ... '; +$string['namenews'] = 'News forum'; +$string['namesocial'] = 'Social forum'; +$string['nameteacher'] = 'Teacher forum'; +$string['newforumposts'] = 'New forum posts'; +$string['nodiscussions'] = 'There are no discussion topics yet in this forum'; +$string['noguestpost'] = 'Sorry, guests are not allowed to post'; +$string['nomorepostscontaining'] = 'No more posts containing \'$a\' were found'; +$string['nonews'] = 'No news has been posted yet'; +$string['noposts'] = 'No posts'; +$string['nopostscontaining'] = 'No posts containing \'$a\' were found'; +$string['nosubscribers'] = 'There are no subscribers yet for this forum'; $string['notingroup'] = 'Sorry, but you need to be part of a group to see this forum.'; $string['nownotsubscribed'] = '$a->name will NOT receive copies of \'$a->forum\' by email.'; $string['nowsubscribed'] = '$a->name will receive copies of \'$a->forum\' by email.'; -$string['olderdiscussions'] = 'ãéåðéí éùðéí éåúø'; -$string['openmode0'] = 'ììà ãéåðéí, ììà úâåáåú'; -$string['openmode1'] = 'ììà ãéåðéí, àåìí úâåáåú îåúøåú'; -$string['openmode2'] = 'ãéåðéí åúâåáåú îåúøéí'; +$string['numposts'] = '$a posts'; +$string['olderdiscussions'] = 'Older discussions'; +$string['openmode0'] = 'No discussions, no replies'; +$string['openmode1'] = 'No discussions, but replies are allowed'; +$string['openmode2'] = 'Discussions and replies are allowed'; $string['parent'] = 'Show parent'; $string['parentofthispost'] = 'Parent of this post'; -$string['postadded'] = 'Your post was successfully added.
                            You have $a to edit it if you want to make any changes.'; -$string['postmailinfo'] = 'This is a copy of a message posted on the $a website. +$string['postadded'] = 'Your post was successfully added.

                            You have $a to edit it if you want to make any changes.'; +$string['postincontext'] = 'See this post in context'; +$string['postmailinfo'] = 'This is a copy of a message posted on the $a website. To add your reply via the website, click on this link:'; -$string['posts'] = 'äåãòåú'; -$string['posttoforum'] = 'ùìç äåãòä ìôåøåí'; -$string['prune'] = 'ôöì'; +$string['postrating1'] = 'Mostly Separate Knowing'; +$string['postrating2'] = 'Separate and Connected'; +$string['postrating3'] = 'Mostly Connected Knowing'; +$string['posts'] = 'Posts'; +$string['postupdated'] = 'Your post was updated'; +$string['processingpost'] = 'Processing post $a'; +$string['rate'] = 'Rate'; $string['rating'] = 'Rating'; +$string['ratingeveryone'] = 'Everyone can rate posts'; +$string['ratingno'] = 'No ratings'; +$string['ratingonlyteachers'] = 'Only $a can rate posts'; +$string['ratingpublic'] = '$a can see everyone\'s ratings'; +$string['ratingpublicnot'] = '$a can only see their own ratings'; +$string['ratings'] = 'Ratings'; +$string['ratingssaved'] = 'Ratings saved'; +$string['ratingsuse'] = 'Use ratings'; $string['ratingtime'] = 'Restrict ratings to posts with dates in this range:'; -$string['readtherest'] = '÷øéàú ùàø äãéåï'; -$string['replies'] = 'úâåáåú'; -$string['repliesmany'] = '$a úâåáåú ìäåãòä'; -$string['reply'] = 'úâåáä'; -$string['replyforum'] = 'úâåáä ìôåøåí'; -$string['search'] = 'çéôåù'; -$string['searchforums'] = 'çéôåù áôåøåîéí'; -$string['searcholderposts'] = 'çéôåù áäåãòåú éùðåú...'; -$string['searchresults'] = 'úåöàåú äçéôåù'; -$string['startedby'] = 'ôåúç äãéåï'; -$string['subject'] = 'ðåùà'; -$string['subscribe'] = 'äøùí ìôåøåí æä'; -$string['subscribeall'] = 'øùåí àú ëåìí ìôåøåí æä'; -$string['subscribed'] = 'îðåé'; -$string['subscribenone'] = 'áèì àú äîðåé ùì ëåìí ìôåøåí æä'; -$string['subscribers'] = 'îðåééí'; -$string['subscribersto'] = 'îðåééí ì\'$a\''; -$string['subscribestart'] = 'ùìç ìé äòú÷éí áãåàø äàì÷èøåðé ùì äåãòåú áôåøåí æä'; -$string['subscribestop'] = 'àðé ìà øåöä äòú÷éí áãåàø àì÷èøåðé ùì äåãòåú áôåøåí æä'; -$string['subscription'] = 'îðåé'; -$string['subscriptions'] = 'îðåééí'; -$string['thischarset'] = 'ISO-8859-8-I'; -$string['thisdirection'] = 'rtl'; -$string['thislanguage'] = 'עברית'; -$string['unsubscribe'] = 'áèì àú äîðåé ìôåøåí æä'; -$string['unsubscribed'] = 'äîðåé áåèì'; -$string['unsubscribeshort'] = 'áéèåì îðåé'; -$string['yesforever'] = 'ëï, ìúîéã'; -$string['yesinitially'] = 'ëï, áäúçìä'; -$string['yourreply'] = 'äúâåáä ùìê'; +$string['re'] = 'Re:'; +$string['readtherest'] = 'Read the rest of this topic'; +$string['replies'] = 'Replies'; +$string['repliesmany'] = '$a replies so far'; +$string['repliesone'] = '$a reply so far'; +$string['reply'] = 'Reply'; +$string['replyforum'] = 'Reply to forum'; +$string['search'] = 'Search'; +$string['searchforums'] = 'Search forums'; +$string['searcholderposts'] = 'Search older posts...'; +$string['searchresults'] = 'Search results'; +$string['sendinratings'] = 'Send in my latest ratings'; +$string['showsubscribers'] = 'Show subscribers'; +$string['singleforum'] = 'A single simple discussion'; +$string['startedby'] = 'Started by'; +$string['subject'] = 'Subject'; +$string['subscribe'] = 'Subscribe to this forum'; +$string['subscribed'] = 'Subscribed'; +$string['subscribers'] = 'Subscribers'; +$string['subscribersto'] = 'Subscribers to \'$a\''; +$string['subscribestart'] = 'Send me email copies of posts to this forum'; +$string['subscribestop'] = 'I don\'t want email copies of posts to this forum'; +$string['subscription'] = 'Subscription'; +$string['subscriptions'] = 'Subscriptions'; +$string['unsubscribe'] = 'Unsubscribe from this forum'; +$string['unsubscribed'] = 'Unsubscribed'; +$string['youratedthis'] = 'You rated this'; +$string['yournewtopic'] = 'Your new discussion topic'; +$string['yourreply'] = 'Your reply'; ?> diff --git a/lang/he/glossary.php b/lang/he/glossary.php index c05842cc185..2913907970b 100644 --- a/lang/he/glossary.php +++ b/lang/he/glossary.php @@ -1,92 +1,102 @@ Concept and definition are mandatory fields.'; $string['explainall'] = 'Shows ALL entries on one page'; $string['explainalphabet'] = 'Browse the glossary using this index'; -$string['explainexport'] = 'A file has been generated.
                            Download it and keep it safe. You can import it anytime you wish in this or other course.'; -$string['explainimport'] = 'You must specify the file to import and define the criteria of the process.
                            Submit your request and review the results.'; +$string['explainexport'] = 'A file has been generated.
                            Download it and keep it safe. You can import it anytime you wish in this or other course.'; +$string['explainimport'] = 'You must specify the file to import and define the criteria of the process.

                            Submit your request and review the results.'; $string['explainspecial'] = 'Shows entries that do not begin with a letter'; $string['exportedentry'] = 'Exported entry'; $string['exportedfile'] = 'Exported file'; $string['exportentries'] = 'Export entries'; $string['exportglossary'] = 'Export glossary'; +$string['exportentries'] = 'Export entries'; $string['exporttomainglossary'] = 'Export to main glossary'; $string['filetoimport'] = 'File to import'; -$string['fillfields'] = 'Concept and definition are mandatory fields.'; $string['filtername'] = 'Glossary Auto-linking'; +$string['fillfields'] = 'Concept and definition are mandatory fields.'; $string['fullmatch'] = 'Match whole words only'; $string['glossarytype'] = 'Glossary Type'; $string['glosssaryexported'] = 'Glossary exported.'; @@ -138,9 +148,6 @@ $string['sortchronogically'] = 'Sort chronologically'; $string['special'] = 'Special'; $string['standardview'] = 'Browse by alphabet'; $string['studentcanpost'] = 'Students can add entries'; -$string['thischarset'] = 'ISO-8859-8-I'; -$string['thisdirection'] = 'rtl'; -$string['thislanguage'] = 'עברית'; $string['totalentries'] = 'Total entries'; $string['usedynalink'] = 'Automatically link glossary entries'; $string['waitingapproval'] = 'Waiting approval'; diff --git a/lang/he/label.php b/lang/he/label.php index f89e6186bc3..9046bbf6e9c 100644 --- a/lang/he/label.php +++ b/lang/he/label.php @@ -1,13 +1,8 @@ diff --git a/lang/he/moodle.php b/lang/he/moodle.php index 0f5ad4112e6..bfae47bbe45 100644 --- a/lang/he/moodle.php +++ b/lang/he/moodle.php @@ -1,32 +1,30 @@ $a îåòáøú'; -$string['activityiscurrentlyhidden'] = 'îöèòøéí, äôòéìåú ëøâò ðîöàú áîöá ðñúø'; -$string['activitymodule'] = 'îåãåì ôòéìåú'; -$string['activityreport'] = 'ãåç ôòéìåú'; -$string['activityselect'] = 'áçø áôòéìåú æàú ìäòáøä ìî÷åí àçø'; -$string['activitysince'] = 'ôòéìåú îàæ $a'; +$string['activityclipboard'] = '$aäôòéìåú îåòáøú'; +$string['activityiscurrentlyhidden'] = 'îöèòøéí, äôòéìåú ëøâò ðîöú áîöá ðñúø'; +$string['activitymodule'] = 'ôø÷ ôòéìåú'; +$string['activityreport'] = 'ãå'; +$string['activityselect'] = 'áçø áôòéìåú æàú ìäòáøä ìîøåí àçø'; +$string['activitysince'] = ' $a ôòéìåú îàæ'; $string['add'] = 'äåñó'; -$string['addactivity'] = 'äåñó ôòéìåú'; $string['addadmin'] = 'äåñó îðäì'; $string['addcreator'] = 'äåñó éåöø ÷åøñéí'; -$string['added'] = '$a äåñó'; -$string['addedtogroup'] = '$a äöèøó ì÷áåöä'; -$string['addedtogroupnot'] = '$a ìà äöèøó ì÷áåöä'; -$string['addedtogroupnotenrolled'] = 'ìà öåøó ì÷áåöä $a, îàçø ùìà ðøùí ì÷åøñ'; -$string['addinganew'] = 'äåñôú $a çãù'; -$string['addinganewto'] = 'äåñôú $a->what çãù ì$a->to'; -$string['addingdatatoexisting'] = 'äåñôú îéãò ì÷ééí'; +$string['added'] = '$a äöèøó'; +$string['addedtogroup'] = ' $a äöèøó ì÷áåöä'; +$string['addedtogroupnot'] = ' $a ìà äöèøó ì÷áåöä'; +$string['addedtogroupnotenrolled'] = ' îôðé ùìà ðøùí ì÷åøñ ,$a ìà äöèøó ì÷áåöä'; +$string['addinganew'] = 'çãù $a îåñéôéí'; +$string['addinganewto'] = ' $a->to çãù ì $a->what îåñéôéí '; +$string['addingdatatoexisting'] = 'îåñéôéí îéãò ì÷ééí'; $string['addnewcategory'] = 'äåñó ÷èâåøéä çãùä'; $string['addnewcourse'] = 'äåñó ÷åøñ çãù'; $string['addnewuser'] = 'äåñó îùúîù çãù'; -$string['addresource'] = 'äåñó îùàá'; $string['address'] = 'ëúåáú'; $string['addstudent'] = 'äåñó úìîéã'; $string['addteacher'] = 'äåñó îåøä'; @@ -35,32 +33,27 @@ $string['adminhelpaddnewuser'] = ' $string['adminhelpassignadmins'] = 'îðäìéí éëåìéí ìòùåú äëì åììëú ìëì î÷åí áàúø'; $string['adminhelpassigncreators'] = 'éåöøéí éëåìéí ìéöåø ÷åøñéí çãùéí åììîã àåúí'; $string['adminhelpassignstudents'] = 'ìäéëðñ ì÷åøñ åìäåñéó úìîéãéí îúôøéè äîðäì'; -$string['adminhelpassignteachers'] = 'îöà ÷åøñ åàæ äùúîù áñîì ìäåñôú îåøéí'; +$string['adminhelpassignteachers'] = 'îöà ÷åøñ åàæ äùúîù áàéé÷åï ìäåñôú îåøéí'; $string['adminhelpauthentication'] = 'îåúø ìäùúîù çùáåðåú îùúîùéí ôðéîééí àå áñéñé îéãò çéöåðééí'; -$string['adminhelpbackup'] = 'äâãø âéáåééí àåèåîèééí åàú ìåçåú äæîðéí ùìäí'; -$string['adminhelpconfiguration'] = 'äâãø àú îøàä åãøê äòáåãä ùì äàúø'; -$string['adminhelpconfigvariables'] = 'äâãø îùúðéí äîùôéòéí òì äôòéìåú äëììéú ùì äàúø '; -$string['adminhelpcourses'] = 'äâãø ÷åøñéí å÷èâåøéåú åöååú àìéäí îùúîùéí'; -$string['adminhelpeditorsettings'] = 'äâãøú ëéååðåðéí áñéñééí ìòåøê ä-HTML'; -$string['adminhelpedituser'] = 'òééï áøùéîú çùáåðåú äîùúîùéí åòøåê ëì àçã îäí'; -$string['adminhelpenrolments'] = 'áçø àåôðéí ôðéîééí àå çéöåðééí ìá÷øú øéùåí ì÷åøñéí'; -$string['adminhelpfailurelogs'] = 'öôä áøéùåîé ðñéåðåú äúçáøåú ëåùìéí'; +$string['adminhelpbackup'] = ' òöá âéáåééí àåèåîèééí åàú ìåçåú äæîðéí ùìäí '; +$string['adminhelpconfiguration'] = 'òöá àú îøàä åãøê äòáåãä ùì äàúø'; +$string['adminhelpconfigvariables'] = 'òöá îùúðéí äîùôéòéí òì äôòéìåú äëììéú ùì äàúø '; +$string['adminhelpcourses'] = 'äâãø ÷åøñéí å÷èâåøéåú åîðä àìéäí àðùéí'; +$string['adminhelpedituser'] = 'âìåù áøùéîú çùåáåðåú äîùúîùéí åòøåê ëì àçã îäí'; $string['adminhelplanguage'] = 'ìáãé÷ä åòøéëä ùì çáéìú äùôä äðåëçéú'; -$string['adminhelplogs'] = 'òééï áãåçåú ùì ëì äôòéìåú áàúø æä'; -$string['adminhelpmanageblocks'] = 'ðäì áìå÷éí îåú÷ðéí åàú ääâãøåú ùìäí'; +$string['adminhelplogs'] = 'âìåù áãåçåú ùì ëì äôòéìåú áàúø æä'; +$string['adminhelpmanageblocks'] = 'ðäì âåùéí îåú÷ðéí åääâãøåú ùìäí'; $string['adminhelpmanagedatabase'] = 'ëðñ éùéøåú ìîàâø äîéãò (äéä æäéø!) '; $string['adminhelpmanagefilters'] = 'áçø îñððé è÷ñè åäâãøåú ÷ùåøåú'; -$string['adminhelpmanagemodules'] = 'ðäì îåãåìéí îåú÷ðéí åääâãøåú ùìäí'; +$string['adminhelpmanagemodules'] = 'ðäì ôø÷éí îåú÷ðéí åääâãøåú ùìäí'; $string['adminhelpsitefiles'] = 'ìôøñåí ÷áöéí ëììééí àå ìäòìåú âéáåééí çéöåðééí'; $string['adminhelpsitesettings'] = 'äâãø ëéöã äòîåã äøàùé ùì äàúø ðøàä'; $string['adminhelpthemes'] = 'áçø ëéöã äàúø ðøàä (öáòéí, âåôðéí åëå\')'; $string['adminhelpuploadusers'] = 'éáà çùáåðåú îùúîùéí çãùéí î÷åáõ è÷ñè'; -$string['adminhelpusers'] = 'äâãø àú äîùúîùéí ùìê åäâãø ùéèåú àéîåú'; +$string['adminhelpusers'] = 'äâãø àú äîùúîùéí ùìê åäâãø ùéèåú æéäåé'; $string['administration'] = 'ðéäåì'; $string['administrator'] = 'îðäì'; $string['administrators'] = 'îðäìéí'; -$string['administratorsall'] = 'ëì äîðäìéí'; -$string['administratorsandteachers'] = 'îðäìéí åîåøéí'; $string['advancedfilter'] = 'çéôåù îú÷ãí'; $string['again'] = 'ùåá'; $string['all'] = 'äëì'; @@ -71,10 +64,8 @@ $string['allgroups'] = ' $string['alllogs'] = 'ëì äãåçåú'; $string['allow'] = 'äøùä'; $string['allowguests'] = 'ä÷åøñ äæä îøùä ìîùúîùéí àåøçéí ìäëðñ'; -$string['allowinternal'] = 'äøùä âí ùéèåú ôðéîéåú'; $string['allownot'] = 'àì úøùä'; $string['allparticipants'] = 'ëì äîùúúôéí'; -$string['allteachers'] = 'ëì äîåøéí'; $string['alphabet'] = 'à,á,â,ã,ä,å,æ,ç,è,é,ë,ì,î,ð,ò,ô,ö,÷,ø,ù,ú'; $string['alphanumerical'] = 'éëåì ìäëéì ø÷ àåúéåú àå îñôøéí'; $string['alreadyconfirmed'] = 'ääøùîä ëáø àåùøä '; @@ -85,21 +76,20 @@ $string['areyousuretorestorethisinfo'] = ' $string['assessment'] = 'äòøëä'; $string['assignadmins'] = 'îðä îðäìéí'; $string['assigncreators'] = 'îðä éåöøéí'; -$string['assignstudents'] = 'øùåí ñèåãðèéí'; +$string['assignstudents'] = 'äøùí ñèåãðèéí'; $string['assignstudentsnote'] = 'äòøä: àéï æä äëøçé ìäùúîù áãó æä, ìñèåãðèéí éùðä äàôùøåú ìäéøùí áòöîí ì÷åøñ æä. '; $string['assignstudentspass'] = 'éëåì ìäéåú åëì îä ùúöúøëå ìòùåú äåà ìäåãéò ìñèåãðèéí ùìëí òì ÷åã ääøùîä ì÷åøñ æä, ùëøâò ð÷áò ë: \'a$\' '; $string['assignteachers'] = 'îðä îåøéí'; -$string['authentication'] = 'àéîåú'; -$string['autosubscribe'] = 'îðåé àåèåîèé ìòãëåðéí îäôåøåîéí'; -$string['autosubscribeno'] = 'ìà: àì úøùåí àåúé àåèåîèéú ìôåøåîéí'; -$string['autosubscribeyes'] = 'ëï: ëùàðé ùåìç äåãòä, øùåí àåúé ìôåøåí'; +$string['authentication'] = 'ååéãåé'; +$string['autosubscribe'] = 'èåôñ äøùîåú àåèåîèéú'; +$string['autosubscribeno'] = 'ìà: àì úøùéí àåúé àåèåîèéú ìôåøåîéí'; +$string['autosubscribeyes'] = 'ëï: ëùàðé îôøñí, øùåí àåúé ìôåøåí'; $string['availability'] = 'æîéðåú'; $string['availablecourses'] = '÷åøñéí æîéðéí'; $string['backup'] = 'âéáåé'; $string['backupcoursefileshelp'] = 'àí æîéðéí àæ ÷áöé ä÷åøñ éëììå áâéáåééí äàåèåîèééí'; $string['backupdate'] = 'úàøéê âéáåé'; $string['backupdetails'] = 'ôøèé âéáåé'; -$string['backupfailed'] = 'çì÷ îä÷åøñéí ùìê ìà ðùîøå!'; $string['backupfilename'] = 'âéáåé'; $string['backupfinished'] = 'äâéáåé äåùìí áäöìçä'; $string['backupincludemoduleshelp'] = 'áçø äàí àúä øåöä ìëìåì àú ôø÷é ä÷åøñ, òí àå ììà ðúåðé îùúîù, áâéáåééí àåèåîèééí'; @@ -108,19 +98,19 @@ $string['backuplogdetailed'] = ' $string['backuploglaststatus'] = 'ãåç äôòìä àçøåï'; $string['backuplogshelp'] = 'àí æîéðéí, àæ ãåçåú ä÷åøñ éëììå áâéáåééí àåèåîèééí '; $string['backupnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['backupnoneusersinfo'] = 'äåãòä: áçøú ìâáåú \"àó àçã\" îäîùúîùéí, ëê ùëì âéáåéé äîåãåìéí ùåðå ìîöá \"ììà îéãò îùúîù\". àðà ùéí ìá ùîåãåìé ä\"úøâåì\" åä\"ñãðú òáåãä\" àéðí îúàéîéí ìñåâ æä ùì âéáåé, ëê ùäí ðåèøìå ìçìåèéï. '; +$string['backupnoneusersinfo'] = 'äåãòä: áçøú ìâáåú \"ìà\" îùúîùéí, ëê ùëì âéáåéé äôø÷éí ùåðå ìîöá \"ììà îéãò îùúîù\". àðà ùéí ìá ùôø÷é ä\"úøâåì\" åä\"ñãðú òáåãä\" àéðí îúàéîéí ìñåâ æä ùì âéáåé, ëê ùäí ðåèøìå ìçìåèéï. '; $string['backuporiginalname'] = 'ùí âéáåé'; -$string['backupsavetohelp'] = 'ãøê îìàä ìúé÷éä áä àúä øåöä ìùîåø àú ÷áöé äâéáåé
                            (äùàø øé÷ áëãé ìùîåø úé÷ééú áøéøú îçãì ùì ä÷åøñ)'; +$string['backupsavetohelp'] = 'ãøê îìàä ìúé÷éä áä àúä øåöä ìùîåø àú ÷áöé äâéáåé
                            (äùàø øé÷ áëãé ìùîåø úé÷ééú áøéøú îçãì ùì ä÷åøñ)'; $string['backupuserfileshelp'] = 'áçø äàí ÷áöé îùúîùéí (ìãåâîà úîåðåú äîùúîùéí) öøéëéí ìäéëìì áâéáåééí àåèåîèééí'; $string['backupusershelp'] = 'áçø äàí àúä øåöä ìëìåì àú ëì äîùúîùéí áùøú àå ø÷ àú äîùúîùéí äðçåöéí ìëì ÷åøñ'; $string['backupversion'] = 'âøñú âéáåé'; -$string['blockdeleteconfirm'] = 'àúä òåîã ìäñéø àú äáìå÷ \'$a\'. ôòåìä æå úîçå÷ áàåôï îåçìè àú ëì äîéãò ä÷ùåø ìáìå÷ æä áîñã äðúåðéí. äàí àúä áèåç ùàúä øåöä ìäîùéê?'; -$string['blockdeletefiles'] = 'ëì äîéãò ä÷ùåø ìáìå÷ \'$a->block\' ðîç÷ îîñã äðúåðéí. ìäùìîú äîçé÷ä (åîðéòú äàôùøåú îáìå÷ æä ìäú÷éï àú òöîå îçãù), òìéê ìîçå÷ ëòú àú äñôøéä $a->directory îäùøú.'; -$string['blocks'] = 'áìå÷éí'; -$string['blocksetup'] = 'éöéøú èáìàåú òáåø äáìå÷'; -$string['blocksuccess'] = 'äèáìàåú $a ðåöøå áàåôï ú÷éï'; +$string['blockdeleteconfirm'] = 'àúä òåîã ìîçå÷ ìçìåèéï àú ôðì öããé \'a$\'. ôòåìä æå úîçå÷ ìçìåèéï àú ëì îä ù÷ùåø ìôðì öããé æä ááñéñ äðúåðéí. äàí àúä áèåç ùàúä øåöä ìäîùéê? '; +$string['blockdeletefiles'] = 'ëì äðúåðéí ä÷ùåøéí ìôðìéí öããééí \'a->block$\' ðîç÷å îáñéñ äðúåðéí. ìäùìîú äîçé÷ä (åîðéòú äôðì äöããé îìäú÷éï àú òöîå îçãù) àúä öøéê ìîçå÷ úé÷ééä æå îäùøú: a->directory $'; +$string['blocks'] = 'ôðìéí öããééí'; +$string['blocksetup'] = 'äú÷ðú èáìàåú ùì ôðìéí öããééí'; +$string['blocksuccess'] = ' äèáìàåú äåú÷ðå áäöìçä a$'; $string['bycourseorder'] = 'ìôé ñãø ÷åøñéí'; -$string['byname'] = 'ìôé $a'; +$string['byname'] = 'ìôé a$'; $string['cancel'] = 'áèì'; $string['categories'] = '÷èâåøéåú ÷åøñéí'; $string['category'] = '÷èâåøéä'; @@ -137,29 +127,24 @@ $string['checkingsections'] = ' $string['checklanguage'] = 'áãå÷ ùôä'; $string['choose'] = 'áçø'; $string['choosecourse'] = 'áçø ÷åøñ'; -$string['chooseenrolmethod'] = 'ùéèú øéùåí øàùéú'; $string['chooselivelogs'] = 'àå öôä ôòéìåú ðåëçéú'; $string['chooselogs'] = 'áçø àìå ãåçåú àúä øåöä ìøàåú'; $string['choosereportfilter'] = 'áçø îñðï ìãéååç'; -$string['choosetheme'] = 'áçø òøëú ðåùà'; +$string['choosetheme'] = 'áçø ðåùà'; $string['chooseuser'] = 'áçø îùúîù'; -$string['city'] = 'òéø/òééøä'; -$string['clamdeletedfile'] = 'ä÷åáõ ðîç÷'; -$string['clamdeletedfilefailed'] = 'îçé÷ú ä÷åáõ ðëùìä'; +$string['city'] = 'òéø òééøä'; $string['cleaningtempdata'] = 'îð÷ä ðúåðéí æîðééí'; $string['clicktochange'] = 'ìçõ áùáéì ìùðåú'; $string['closewindow'] = 'ñâåø àú äçìåï äæä'; -$string['comparelanguage'] = 'äùååä åòøåê çáéìú ùôä ðåëçéú'; -$string['complete'] = 'äåùìí'; +$string['comparelanguage'] = 'äùååä åòøåê ùôä ðåëçéú'; +$string['complete'] = 'äùìí'; $string['configallowunenroll'] = 'àí æä îåâãø \'ëï\', àæ äñèåãðèéí îåøùéí ìôøåù áòöîí îä÷åøñ áëì æîï ùéøöå. àçøú äí àéðí îåøùéí, åäìéê æä éäéä àê åø÷ úçú ùìéèúí ùì äîåøéí åäîðäìéí. '; $string['configcachetext'] = 'áùáéì àúøéí âãåìéí éåúø, àå áùáéì àúøéí òí îñððé è÷ñè, ääâãøåú àìå áàîú éëåìåú ìäàéõ àú äòðééðéí. òåú÷éí ùì è÷ñè ééùîøå áöåøúí äîòåáãú ìîùê äæîï äîöåééï ôä. äâãøä ÷èðä îãé éëåìä ìîòùä ìäàéè îòè àú äòðééðéí, àáì äâãøä âãåìä îãé éëåìä ìâøåí ìëê ùìè÷ñèéí é÷ç éåöø îãé æîï ìäúçãù (òí ÷éùåøéí çãùéí, ìãåâîà). '; -$string['configclamactlikevirus'] = 'äúééçñ ì÷áöéí ëåéøåñéí'; -$string['configclamdonothing'] = 'äúééçñ ì÷áöéí ëú÷éðéí'; -$string['configcountry'] = 'àí àúä îâãéø ëàï àøõ, àæ àøõ æå úáçø àåèåîèéú áëì çùáåðåú äîùúîù äçãùéí. áëãé ìäëøéç îùúîùéí ìáçåø àøõ, ôùåè äùàø æàú ìà îåâãø.'; +$string['configcountry'] = 'àí àúä îâãéø ëàï àãõ, àæ àøõ æå úáçø àåèåîèéú áëì çùáåðåú äîùúîù äçãùéí. áëãé ìäëøéç îùúîùéí ìáçåø àøõ, ôùåè äùàø æàú ìà îåâãø.'; $string['configdebug'] = 'àí àúä îôòéì æàú, àæ PHP\'s error_resporting úâãì ëê ùéåúø àæäøåú éåãôñå. æä ø÷ ùîåùé ìîôúçéí.'; $string['configdeleteunconfirmed'] = 'àí àúä îùúîù áååéãåé ãåàø àì÷èøåðé, æåäé ú÷åôú äæîï áä úâåáä îîùúîùéí úú÷áì. ìàçø ú÷åôä æå, çùáåðåú ìà îàåùøéí éùðéí, ðîç÷éí.'; -$string['configdigestmailtime'] = 'îùúîùéí äáåçøéí ùäãåàø äàì÷èøåðé ééùìç àìéäí áî÷áõ é÷áìå î÷áõ éåîé. äâãøä æå ÷åáòú áàéæå ùòä éùìç äãåàø äéåîé (äãåàø ééùìç áîåòã äáà äàôùøé àçøé ùòä æå ùáä éåôòì äúäìéê äàåèåîèé)'; -$string['configenablerssfeeds'] = 'îúâ æä éôòéì RSS feeds áàúø ëåìå. áëãé ìøàåú ùéðåé ëìùäå úöèøê ìäôòéì RSS feeds áúåê äîåãåìéí äáåããéí âí ëï - âù ìäâãøåú äîåãåìéí úçú ÷åðôéâåøöéú äðäìä.'; +$string['configdigestmailtime'] = 'ìàðùéí äáåçøéí ùäãåàø äàì÷èøåðé ééùìç àìéäí áöåøä úîöéúéú, ééùìç àåúå áàåôï éåîé. äâãøä æå àçøàéú áàéæä æîï ùì äéåí ééùìç äãåàø äéåîé ééùìç (ä cron äøàùåï áééôòì ìàçø ùòä æå, ééùìç àåúå).'; +$string['configenablerssfeeds'] = 'îúâ æä éôòéì RSS feeds áàúø ëåìå. áëãé ìøàåú ùéðåé ëìùäå úöèøê ìäôòéì RSS feeds áúåê äôø÷éí äàéðãéáéãåàìéí âí ëï - ìê ìäâãøåú äôø÷éí úçú ÷åðôéâåøöéú äðäìä.'; $string['configenablerssfeedsdisabled'] = 'æä àéðå æîéï áâìì ù RSS feeds àéðí îåôòìéí áàúø. áëãé ìäôòéìí, ìê ìäâãøåú îùúðéí úçú ÷åðôéâåøöéú äðäìä. '; $string['configerrorlevel'] = 'áçø àú ëîåú àæäøåú äPHP ùàúä øåöä ùéåöâå. Normal äéà áãøê ëìì äáçéøä äëé èåáä.'; $string['configextendedusernamechars'] = 'äôòì äâãøä æå äëãé ìàôùø ìñèåãðèéí ìäùúîù áëì äñîìéí áùí äîùúîù ùìäí (ùéí ìá ëé æä àéðå îôùéò òì ùîí äîîùé). áøéøú äîçãì äéà \"false\", ãáø ùîâáéì ùîåú îùúîùéí ìñîìéí àìôáúééí åîñôøéí áìáã.'; @@ -181,11 +166,11 @@ $string['configlangmenu'] = ' $string['configlocale'] = 'áçø ùôú î÷åí ëìì àúøéú - ãáø æä éùôéò òì ôåøîè åùôú äúàøéëéí. àúä öøéê ùîéãò ùôú î÷åí éäéä îåú÷ï áîòøëú ääôòìä ùìê. (ìãåâîà: en_US àå es_ES). àí àúä ìà éåãò îä ìáçåø, äùàø øé÷.'; $string['configloglifetime'] = 'æä îôøè àú àåøê äæîï áå àúä øåöä ìùîåø ãåçåú òì ôòéìåú îùúîùéí. ãåçåú äéùðéí îäæîï ùöåééï, ééîç÷å àåèåîèéú. îåîìõ ìùîåø ãåçåú òã ëîä ùéåúø æîï ùàôùø, áî÷øä ùúöèøê àåúí. àìà àí ëï, éù ìê ùøú îàåã òñå÷ àùø çååä áòéåú úô÷åã - áî÷øä æä éëåì ìäéåú ùúøöä ìäåøéã àú àåøê äçééí ùì äãåçåú. '; $string['configlongtimenosee'] = 'àí ñèåãðèéí ìà äúçáøå ìîòøëú ú÷åôú æîï àøåëä, àæé äí ôåøùéí àåèåîèéú îä÷åøñéí. ôøîèø æä îâãéø àú îâáìú äæîï äæå. '; -$string['configmaxbytes'] = 'æä îôøè àú îä éëåì ìäéåú âåãìí äî÷ñéîìé ùì ÷áöéí äîåòìéí ìàúø (áùìîåúå). äâãøä æå îåâáìú òì éãé ääâãøåú: PHP - uploud_max_filesize,å Apache - LimitRequestBody. áúåøå, maxbytes îâáéì àú îøååç äâãìéí ùéëåìéí ìäéáçø áøîú ä÷åøñ àå äîåãåì. '; +$string['configmaxbytes'] = 'æä îôøè àú îä éëåì ìäéåú âåãìí äî÷ñéîìé ùì ÷áöéí äîåòìéí ìàúø (áùìîåúå). äâãøä æå îåâáìú òì éãé ääâãøåú: PHP - uploud_max_filesize,å Apache - LimitRequestBody. áúåøå, maxbytes îâáéì àú îøååç äâãìéí ùéëåìéí ìäéáçø áøîú ä÷åøñ àå äôø÷. '; $string['configmaxeditingtime'] = 'æä îâãéø àú ëîåú äæîï äðéúðú ìàðùéí áëãé ìòøåê îçãù àú äôøñåîéí ùìäí áôåøåí, îùåáéäí ìòéúåï åëãåîä. ìøåá 30 ã÷åú äéðï àåøê èåá. '; $string['confignoreplyaddress'] = 'ãåàø àì÷èøåðé ðùìç ìòéúéí áùí äîùúîù (ìãåâîà: ôøñåîé ôåøåí). ëúåáú äãåàø àì÷èøåðé ùúöééï ôä úùîù ëëúåáú ä\"ôåøåí\" áî÷øéí ùáäí äðîòðéí ìà éåëìå ìäâéá áàåôï éùéø ìîùúîù. (ìãåâîà, ëàùø äîùúîù àéðå øåöä ìôøñí àú äëúåáú ùìå).'; $string['configopentogoogle'] = 'àí àúä îàôùø äâãøä æå, àæé Google éåøùä ìäéëðñ ìàúø ùìê ëàåøç. áðåñó ìëê, àðùéí äðëðñéí ìàúø ãøê îðåò çéôåù Google, éúçáøå ìîòøëú ëàåøçéí àåèåîèéú. äáçï ëé ãáø æä îàôùø âéùä ù÷åôä ì÷åøñéí ùëáø îàôùøéí ëðéñú àåøçéí. '; -$string['configproxyhost'] = 'àí ùøú æä öøéê ìäùúîù áîçùá ôøå÷ñé (ìãåâîà firewall) áëãé ìäéëðñ ìàéðèøðè, àæ ñô÷ àú ùí ðîì åùí ùøú äôøå÷ñé. àçøú, äùàø æàú øé÷. '; +$string['configproxyhost'] = 'àí ùøú æä öøéê ìäùúîù áîçùá ôøå÷ñé (ìãåâîà firewall) áëãé ìäéëðñ ìàéðèøðè, àæ ñô÷ àú ùí ðîì åùí ùøú äôøå÷ñé. àçøú, äùàø æàú øé÷. '; $string['configsecureforms'] = 'ì Moodle ìà úæé÷ øîú àáèçä ðåñôú ëàùø äåà î÷áì îéãò îèôñé àéðèøðè. àí æä îàåôùø, àæ äîùúðäHTTP_REFERER ùì äãôãôï îñåîï ëðâã ëúåáú äèåôñ äðåëçéú. áî÷øéí áåããéí îàåã æä éëåì ìâøåí áòéåú àí äîùúîù îùúîù áfirewall (ìãåâîà: Zonealarm) ùîëååðú ìôùåè àú ä HTTP_REFERER îúðåòú äøùú ùìäí. ñéîôèåîéí äí \'ìäéú÷ò\' òì èåôñ. àí äîùúîùéí ùìê ðú÷ìéí ááòéåú òí ãó ääúçáøåú ìîòøëú (ìãåâîà) éëåì ìäéåú ùúøöä ìðèøì äâãøä æå, ìîøåú ùæä éëåì ìäùàéø àú àúøê ôúåç éåúø ìäú÷ôåú ñéñîà ëåçðéåú. àí áñô÷, äùàø äâãøä æå òì \'ëï\'.'; $string['configsessioncookie'] = 'äâãøä æå îúàéîä àéùéú àú ùí äòåâééä ùîùúîùéí áä áîôâùé Moodle. æäå àåôöéåðìé åùéîåùé ø÷ áëãé ìäîðò îáìáåì ùì òåâéåú ëàùø éù éåúø îòåú÷ àçã ùì Moodle áúåê àåúå äàúø.'; $string['configsessiontimeout'] = 'àí àðùéí ùäúçáøå ìàúø ðùàøéí ììà îòù ìîùê æîï øá (ììà äòìàú ãôéí) àæ äí îúðè÷éí àåèåîèéú (äîôâù ùìäí îñúééí). îùúðä æä îôøè ëîä àøåê æîï æä öøéê ìäéåú.'; @@ -194,7 +179,7 @@ $string['configsmtphosts'] = ' $string['configsmtpuser'] = 'àí öééðúí ùøú SMTP ìòéì, åäùøú îçééá àéîåú, àæ äëðéñå àú ùí äîùúîù åäñéñîà ëàï.'; $string['configteacherassignteachers'] = 'äàí öøéëí îåøéí øâéìéí ìäéåú îåøùéí ìîðåú îåøéí àçøéí áúåê ä÷åøñéí ùäí îìîãéí? àí \'ìà\', àæ ø÷ éåöøé ÷åøñ åîðäìéí éëåìéí ìîðåú îåøéí.'; $string['configunzip'] = 'öééï àú îé÷åí úåëðú ôúéçú ÷áöéí î÷åáöéí ùìê (Unix áìáã, àåôöéåðìé). àí îöåééðú, úäéä îùåîùú ìôúéçú àøëéåðé æéô òì äùøú. àí úùàéø øé÷, àæ Moodle éùúîù áúäìéëéí ôðéîééí.'; -$string['configuration'] = 'úöåøä'; +$string['configuration'] = '÷åðôéâåøöéä'; $string['configvariables'] = 'îùúðéí'; $string['configwarning'] = 'äéå æäéøéí áùéðåé äâãøåú àìå - òøëéí îåæøéí éëåìéí ìâøåí ìáòéåú.'; $string['configzip'] = ' öééï àú îé÷åí úåëðú ôúéçú ÷áöéí î÷åáöéí ùìê (Unix áìáã, àåôöéåðìé). àí îöåééðú, úäéä îùåîùú ìôúéçú àøëéåðé æéô òì äùøú. àí úùàéø øé÷, àæ Moodle éùúîù áúäìéëéí ôðéîééí.'; @@ -202,15 +187,12 @@ $string['confirm'] = ' $string['confirmed'] = 'ääøùîä ùìê àåùøä'; $string['confirmednot'] = 'ääøùîä ùìê òãééï ìà àåùøä!'; $string['continue'] = 'äîùê'; -$string['continuetocourse'] = 'ä÷ìã ëàï ìëðéñä ì÷åøñ'; -$string['cookiesenabled'] = 'äãôãôï ùìê öøéê ìàôùø òåâéåú'; +$string['cookiesenabled'] = 'áãôãôï ùìê çééáéåú ìôòåì òåâéåú'; $string['copy'] = 'äòú÷'; $string['copyingcoursefiles'] = 'îòúé÷ ÷áöé ÷åøñ'; $string['copyinguserfiles'] = 'îòúé÷ ÷áöé îùúîù'; -$string['copyingzipfile'] = 'îòúé÷ ÷áöé àøëéá'; +$string['copyingzipfile'] = 'îòúé÷ ÷áöé æéô'; $string['copyrightnotice'] = 'àæäøú æëåéåú éåöøéí'; -$string['cost'] = 'îçéø'; -$string['costdefault'] = 'îçéø áøéøú îçãì'; $string['country'] = 'àøõ'; $string['course'] = '÷åøñ'; $string['courseavailable'] = '÷åøñ æä æîéï ìñèåãðèéí'; @@ -227,9 +209,9 @@ $string['courserestore'] = ' $string['courses'] = '÷åøñéí'; $string['courseupdates'] = 'òãëåðé ÷åøñéí'; $string['courseuploadlimit'] = 'âåãì îéøáé ùì ÷åáõ äðéúï ìäòìåúå ìàúø ä÷åøñ'; -$string['create'] = 'öåø'; -$string['createaccount'] = 'öåø ìé çùáåï çãù'; -$string['createfolder'] = 'öåø ñôøééä á$a'; +$string['create'] = 'úöåø'; +$string['createaccount'] = 'úöåø ìé çùáåï çãù'; +$string['createfolder'] = 'öåø ú÷ééä á $a'; $string['createuserandpass'] = 'öåø ùí îùúîù åñéñîà çãùä ìäéëðñ àéúí'; $string['createziparchive'] = 'öåø àøëéåï æéô'; $string['creatingcategoriesandquestions'] = 'éöéøú ÷èâåøéåú åùàìåú'; @@ -243,12 +225,11 @@ $string['creatingsections'] = ' $string['creatingtemporarystructures'] = 'éöéøú îáðéí æîðééí'; $string['creatingusers'] = 'éöéøú îùúîùéí'; $string['creatingxmlfile'] = 'éöéøú ÷åáõ XML'; -$string['currency'] = 'îèáò'; $string['currentcourseadding'] = 'ä÷åøñ äðåëçé, äåñôú îéãò àìéå'; $string['currentcoursedeleting'] = 'ä÷åøñ äðåëçé, òí îçé÷ä ÷åãîú '; -$string['currentlanguage'] = 'ùôä ðåëçéú'; -$string['currentlocaltime'] = 'äæîï äî÷åîé äðåëçé ùìê'; -$string['currentpicture'] = 'úîåðä ðåëçéú'; +$string['currentlanguage'] = 'ùôä òëùååéú'; +$string['currentlocaltime'] = 'äæîï äî÷åîé äòëùååé ùìê'; +$string['currentpicture'] = 'úîåðä òëùååéú'; $string['currentrelease'] = 'îéãò ùçøåø òëùååé'; $string['currentversion'] = 'âøñä òëùååéú'; $string['databasechecking'] = 'ùãøåâ áñéñ ðúåðéí Moodle îâøñä $a->oldversion ì $a->newversion...'; @@ -256,9 +237,8 @@ $string['databaseperformance'] = ' $string['databasesetup'] = 'ä÷îú áñéñ ðúåðéí'; $string['databasesuccess'] = 'áñéñ äðúåðéí ùåãøâ áäöìçä'; $string['databaseupgradebackups'] = 'âøñú äâéáåé äéà òëùéå $a'; -$string['databaseupgradeblocks'] = 'âøñú äáìå÷éí äéà òëùéå $a'; +$string['databaseupgradeblocks'] = 'âøñú äôðìéí äöããééí äéà òëùéå $a'; $string['databaseupgrades'] = 'ùãøåâ áñéñ ðúåðéí'; -$string['date'] = 'úàøéê'; $string['datemostrecentfirst'] = 'úàøéê - äëé çãùéí øàùåðéí'; $string['datemostrecentlast'] = 'úàøéê - äëé çãùéí àçøåðéí'; $string['day'] = 'éåí'; @@ -290,9 +270,6 @@ $string['deletingexistingcoursedata'] = ' $string['deletingolddata'] = 'îåç÷ ðúåðéí éùðéí'; $string['department'] = 'îçì÷ä'; $string['description'] = 'úéàåø'; -$string['detailedless'] = 'ôçåú îôåøè'; -$string['detailedmore'] = 'éåúø îôåøè'; -$string['directorypaths'] = 'ðúéáé ñôøéåú'; $string['disable'] = 'ðèøì'; $string['displayingfirst'] = 'ø÷ äøàùåðéí a->count $a->things$ îåöâéí'; $string['displayingrecords'] = 'îöéâ $a øùåîåú'; @@ -306,105 +283,81 @@ $string['doyouagree'] = ' $string['duplicate'] = 'äòú÷'; $string['duplicatinga'] = 'îòúé÷: a$'; $string['duplicatingain'] = 'îòúé÷ a->what$ á a->in$'; -$string['edit'] = 'òøåê $a'; +$string['edit'] = 'òøåê a$'; $string['editcoursesettings'] = 'òøåê äâãøåú ÷åøñ'; $string['editfiles'] = 'òøåê ÷áöéí'; $string['editgroupprofile'] = 'òøåê ôøåôéì ÷áåöä'; -$string['editinga'] = 'òåøê $a'; -$string['editlock'] = 'òøê æä àéðå ðéúï ìòøéëä!'; +$string['editinga'] = 'òøéëú a$'; $string['editmyprofile'] = 'òøåê ôøåôéì'; -$string['editorbgcolor'] = 'öáò ø÷ò'; -$string['editorcleanonpaste'] = 'ðé÷åé ÷åã HTML ùäåñó ò\"é Word áäãá÷ä'; -$string['editorcommonsettings'] = 'äâãøåú îùåúôåú'; -$string['editordefaultfont'] = 'âåôï áøéøú îçãì'; -$string['editorenablespelling'] = 'àôùø áãé÷ú àéåú'; -$string['editorfontlist'] = 'øùéîú âåôðéí'; -$string['editorfontsize'] = 'âåãì âåôï áøéøú îçãì'; -$string['editorresettodefaults'] = 'àôñ ìäâãøåú áøéøú îçãì'; -$string['editorsettings'] = 'äâãøåú òåøê'; -$string['editsummary'] = 'òøåê ú÷öéø'; +$string['editsummary'] = 'òøåê ñéëåí'; $string['editthisactivity'] = 'òøåê ôòéìåú æå'; $string['editthiscategory'] = 'òøåê ÷èâåøéä æå'; $string['edituser'] = 'òøåê çùáåðåú îùúîùéí'; $string['email'] = 'ëúåáú ãåàø àì÷èøåðé'; -$string['emailactive'] = 'ãåàø àì÷èøåðé îàåôùø'; $string['emailagain'] = 'ãåàø àì÷èøåðé (ùåá)'; $string['emailconfirm'] = 'àùø àú çùáåðê'; -$string['emailconfirmation'] = 'ùìåí $a->firstname. +$string['emailconfirmation'] = 'ùìåí a$->firstname, -îéùäå ðøùí ìàúø \'$a->sitename\' úåê ùéîåù áëúåáú äãåàø àì÷èøåðé ùìê. -ìàéùåø çùáåðê äçãù, ðà âìåù ìëúåáú äàéðèøðè äæå: +ðúá÷ù çùáåï çãù á \'$a->sitename\' úåê ùéîåù áëúåáú äãåàø àì÷èøåðé ùìê. +ìàéùåø çùáåðê äçãù, ðà âìåù ìëúåáú äàéðèøðè äæå: -$a->link +a->link$ -áøåá úåëðåú äãåàø, ëúåáú äàéðèøðè àîåøä ìäåôéò ë÷éùåø ëçåì àùø àúä éëåì ôùåè ììçåõ òìéå. àí æä ìà òåáã, âæåø àú äëúåáú åäãá÷ àåúä áúåê ùåøú äëúåáåú ùì ãôãôï äàéðèøðè ùìê. +áøåá úåëðåú äãåàø, ëúåáú äàéðèøðè àîåøä ìäåôéò ë÷éùåø ëçåì àùø àúä éëåì ôùåè ììçåõ òìéå. àí æä ìà òåáã, âæåø àú äëúåáú åäãá÷ àåúä áúåê ôñ äëúåáåú ùì ãôãôï äàéðèøðè ùìê. àí àúä æ÷å÷ ìòæøä, àðà öåø ÷ùø òí äàúø. -îðäì äàúø, - -$a->admin'; +îðäì, +a->admin$'; $string['emailconfirmationsubject'] = '$a: àéùåø çùáåï'; -$string['emailconfirmsent'] = '

                            ìëúåáúê á $a úùìç á÷øåá äåãòú ãåàø àì÷èøåðé. -

                            äåãòä æå îëéìä äåøàåú ôùåèåú ìäùìîú äøùîúê.

                            -

                            àí úéú÷ì á÷ùééí, àðà öåø ÷ùø òí îðäì äàúø.

                            '; -$string['emaildigest'] = 'àåôï îùìåç äãåàø äàì÷èøåðé'; -$string['emaildigestcomplete'] = 'î÷áõ (äåãòú ãåàø éåîéú òí ëì äúëúåáåú)'; -$string['emaildigestoff'] = 'øâéì (äåãòú ãåàø òì ëì äåãòä áôåøåí)'; -$string['emaildigestsubjects'] = 'ðåùàéí (äåãòú ãåàø éåîéú òí ëåúøåú áìáã)'; -$string['emaildisable'] = 'ëúåáú äãåàø àì÷èøåðé äæå îðåèøìú'; -$string['emaildisableclick'] = 'ìçõ ëàï áëãé ìäôñé÷ îùìåç ùì ãåàø àì÷èøåðé ìëúåáú æå'; +$string['emailconfirmsent'] = '

                            ìëúåáúê á $a äéä öøéê äéä ìäéùìç +ãåàø àì÷èøåðé. +

                            äåà îëéì äåøàåú ôùåèåú ìäùìîú äøùîúê. +

                            àí àúä îîùéê ìäéú÷ì á÷ùééí, öåø ÷ùø òí îðäì äàúø.'; +$string['emaildisable'] = 'ëúåáú äãåàø àì÷èøåðé äæå îðåú÷ú.'; $string['emaildisplay'] = 'úöåâú ãåàø àì÷èøåðé'; -$string['emaildisplaycourse'] = 'àôùø ø÷ ìîùúúôéí àçøéí á÷åøñ ìøàåú àú ëúåáú äãåàø äàì÷èøåðé ùìé'; +$string['emaildisplaycourse'] = 'àôùø ìøàåú àú ëúåáú äãåàø àì÷èøåðé ùìé ìçáøéí àçøéí á÷åøñ áìáã'; $string['emaildisplayno'] = 'äñúø àú ëúåáú äãåàø àì÷èøåðé äàîéúéú ùìé îëåìí '; $string['emaildisplayyes'] = 'àôùø ìëåìí ìøàåú àú ëúåáú äãåàø àì÷èøåðé ùìé'; -$string['emailenable'] = 'ëúåáú äãåàø àì÷èøåðé äæå îåôòìú'; -$string['emailenableclick'] = 'ìçõ ëàï áëãé ìàôùø îçãù îùìåç ùì ãåàø àì÷èøåðé ìëúåáú æå'; -$string['emailexists'] = 'ëúåáú äãåàø àì÷èøåðé äæå ëáø áùéîåù.'; +$string['emailenable'] = 'ëúåáú äãåàø àì÷èøåðé äæå îåôòìú.'; +$string['emailexists'] = 'ëúåáú äãåàø àì÷èøåðé äæå ëáø øùåîä.'; $string['emailformat'] = 'ôåøîè ãåàø àì÷èøåðé'; $string['emailmustbereal'] = 'äòøä: ëúåáú äãåàø àì÷èøåðé ùìê çééáú ìäéåú àîéúéú'; -$string['emailpasswordconfirmation'] = 'ùìåí $a->firstname, +$string['emailpasswordconfirmation'] = 'ùìåí a->firstname$, -îéùäå (ëðøàä ùàúä) áé÷ù ñéñîä çãùä áùáéì çùáåðê áàúø \'$a->sitename\'. +îùäå (ëðøàä ùàúä) á÷ù ñéñîà çãùä áùáéì çùáåðê á \'a->sitename$\'. -ëãé ìàùø æàú, åùñéñîà çãùä úùìç àìéê ãøê äãåàø äàì÷èøåðé ùìê, òìéê ìâùú ìëúåáú äàéðèøðè äáàä: +ëãé ìàùø æàú, åùñéñîà çãùä úùìç àìéê ãøê äãåàø äàì÷èøåðé ùìê, +ìê ìëúåáú äàéðèøðè äáàä: -$a->link +a->link$ -áøåá úåëðåú äãåàø, ëúåáú äàéðèøðè àîåøä ìäåôéò ë÷éùåø ëçåì àùø àúä éëåì ôùåè ììçåõ òìéå. àí æä ìà òåáã, âæåø àú äëúåáú åäãá÷ àåúä áúåê ùåøú äëúåáåú ùì ãôãôï äàéðèøðè ùìê. +áøåá úåëðåú äãåàø, ëúåáú äàéðèøðè àîåøä ìäåôéò ë÷éùåø ëçåì àùø àúä éëåì ôùåè ììçåõ òìéå. àí æä ìà òåáã, âæåø àú äëúåáú åäãá÷ àåúä áúåê ôñ äëúåáåú ùì ãôãôï äàéðèøðè ùìê. -àí àúä æ÷å÷ ìòæøä, àðà öåø ÷ùø òí îðäì äàúø, $a->admin'; -$string['emailpasswordconfirmationsubject'] = '$a: àùø ùéðåé ñéñîà'; -$string['emailpasswordconfirmsent'] = 'ìëúåáúê á $a úùìç á÷øåá äåãòú ãåàø àì÷èøåðé. -

                            äåãòä æå îëéìä äåøàåú ôùåèåú ìàéùåø åäùìîú ùéðåé ñéñîà æä. -àí àúä îîùéê ìäéú÷ì á÷ùééí, öåø ÷ùø òí îðäì äàúø.

                            '; +àí àúä æ÷å÷ ìòæøä, àðà öåø ÷ùø òí äàúø. +îðäì, +a->admin$ '; +$string['emailpasswordconfirmationsubject'] = '$a: ùðä àéùåø ñéñîà'; +$string['emailpasswordconfirmsent'] = 'ìëúåáúê á $a äéä öøéê ìäéùìç ãåàø àì÷èøåðé. +

                            äåà îëéì äåøàåú ôùåèåú ìàéùåø åäùìîú ùéðåé ñéñîà æä. +àí àúä îîùéê ìäéú÷ì á÷ùééí, öåø ÷ùø òí îðäì äàúø.'; $string['emailpasswordsent'] = 'úåãä òì àéùåø ùéðåé ñéñîà æä. -

                            ãåàø àì÷èøåðé äîëéì àú ñéñîúê äçãùä ðùìç ìëúåáúê á$a->email.

                            -

                            äñéñîà äçãùä äåôòìä àåèåîèéú - éëåì ìäéåú ùúøöä -link\">ìùðåú àú äñéñîà ùìê ìîùäå ù÷ì éåúø ìæëåø.

                            '; -$string['enable'] = 'äøùä'; -$string['encryptedcode'] = '÷åã îåöôï'; -$string['enrolledincourse'] = 'øùåí ì÷åøñ \"$a\"'; -$string['enrolledincoursenot'] = 'ìà øùåí ì÷åøñ \"$a\"'; -$string['enrollfirst'] = 'òìéê ìäøùí ìàçã ä÷åøñéí ìôðé ùúåëì ìäùúúó áôòéìåéåú äàúø'; +

                            ãåàø àì÷èøåðé äîëéì àú ñéñîúê äçãùä ðùìç ìëúåáúê á$a->email. +

                            äñéñîà äçãùä äåôòìä àåèåîèéú - éëåì ìäéåú ùúøöä ì +link>ìùðåú àú äñéñîà ùìê ìîùäå ù÷ì éåúø ìæëåø.'; +$string['enable'] = 'äúø'; +$string['enrolledincourse'] = 'øùåí ì÷åøñ '; +$string['enrolledincoursenot'] = 'ìà øùåí ì÷åøñ '; $string['enrolmentconfirmation'] = 'àúä òåîã ìøùåí àú òöîê ëçáø á÷åøñ äæä.
                            äàí àúä áèåç ùàúä øåöä ìòùåú æàú?'; $string['enrolmentkey'] = 'îôúç äøùîä'; -$string['enrolmentkeyfrom'] = '÷åøñ æä îçééá \'îôúç äøùîä\'- ñéñîà
                            çã-ôòîéú +$string['enrolmentkeyfrom'] = '÷åøñ æä îçééá \'îôúç äøùîä\'- ñéñîà
                            çã-ôòîéú ùäééú öøéê ì÷áì î a$'; -$string['enrolmentkeyhint'] = 'îôúç ääøùîä ääåà äéä ùâåé, àðà ðñä ùðéú
                            +$string['enrolmentkeyhint'] = 'îôúç ääøùîä ääåà äéä ùâåé, àðà ðñä ùðéú
                            (äðä øîæ - äåà îúçéì á\'a$\')'; -$string['enrolmentnew'] = 'øéùåí çãù á$a'; -$string['enrolmentnewuser'] = '$a->user ðøùí ì÷åøñ \"$a->course\"'; -$string['enrolmentnointernal'] = 'øéùåí éãðé ì÷åøñéí àéðå îàåôùø ëøâò'; -$string['enrolmentnotyet'] = 'îöèòøéí, àéðê éëåì ìâùú ì÷åøñ æä òã ù
                            $a'; -$string['enrolments'] = 'øéùåí ì÷åøñéí'; -$string['enrolperiod'] = 'ú÷åôú øéùåí'; $string['entercourse'] = 'ìçõ áëãé ìäéëðñ ì÷åøñ'; $string['enteremailaddress'] = 'äëðñ àú ëúåáú äãåàø àì÷èøåðé ùìê áëãé ìàúçì îçãù àú äñéñîà åùäñéñîà äçãùä úùìç ìê ãøê ãåàø àì÷èøåðé.'; -$string['entries'] = 'ëðéñåú'; $string['error'] = 'èòåú'; $string['errortoomanylogins'] = 'îöèòøéí, îñôø ðéñéåðåúéê ìäúçáø ìîòøëú òìå òì îñôø äôòîéí äîåøùä.'; -$string['errorwhenconfirming'] = 'àúä ìà îàåùø òãééï îôðé ù÷øúä èòåú. àí ìçöú òì ÷éùåø áãåàø àì÷èøåðé ëãé ìäâéò ìôä, ååãà ùä÷å áãåàø äàì÷èøåðé ùìê ìà ð÷èò àå ðòèó. éëåì ìäéåú åúöèøê ìâæåø åìäãáé÷ áëãé ìùçæø àú ä÷éùåø ëöøéê.'; -$string['everybody'] = 'ëåìí'; +$string['errorwhenconfirming'] = 'àúä ìà îàåùø òãééí îôðé ù÷øúä èòåú. àí ìçöú òì ÷éùåø áãåàø àì÷èøåðé ëãé ìäâéò ìôä, ååãà ùä÷å áãåàø äàì÷èøåðé ùìê ìà ð÷èò àå ðòèó. éëåì ìäéåú åúöèøê ìâæåø åìäãáé÷ áëãé ìùçæø àú ä÷éùåø ëöøéê.'; $string['executeat'] = 'áöò á'; $string['existing'] = '÷ééîéí'; $string['existingadmins'] = 'îðäìéí ÷ééîéí'; @@ -414,30 +367,25 @@ $string['existingcoursedeleting'] = ' $string['existingcreators'] = 'éåöøé ÷åøñ ÷ééîéí'; $string['existingstudents'] = 'ñèåãðèéí øùåîéí'; $string['existingteachers'] = 'îåøéí ÷ééîéí'; -$string['failedloginattempts'] = '$a->attempts ðñéåðåú ëðéñä ëåùìéí îàæ äçéáåø äàçøåï ùìê'; -$string['failedloginattemptsall'] = '$a->attempts ðñéåðåú ëðéñä ëåùìéí òáåø $a->accounts çùáåðåú'; $string['feedback'] = 'úâåáåú'; -$string['file'] = '÷åáõ'; -$string['filemissing'] = '$a çñø'; +$string['filemissing'] = 'a$ çñø'; $string['files'] = '÷áöéí'; -$string['filesfolders'] = '÷áöéí/úé÷éåú'; -$string['filloutallfields'] = 'àðà îìà àú ëì äùãåú áèåôñ æä'; +$string['filesfolders'] = '÷áöéíúé÷éåú'; +$string['filloutallfields'] = 'àðà îìà àú ëì äùãåí áèåôñ æä'; $string['findmorecourses'] = 'îöà ÷åøñéí ðåñôéí...'; $string['firstdayofweek'] = '0'; $string['firstname'] = 'ùí ðúåï'; -$string['firsttime'] = 'äàí æäå äáé÷åø äøàùåï ùìê áàúø æä?'; +$string['firsttime'] = 'äàí æåäé äôòí äøàùåðä ùìê ôä?'; $string['followingoptional'] = 'äôøéèéí äáàéí àéðí äëøçééí'; $string['followingrequired'] = 'äôøéèéí äáàéí äéðí äëøçééí'; $string['force'] = 'äëøç'; $string['forcedmode'] = 'äëøç îöá '; $string['forcelanguage'] = 'äëøç ùôä'; $string['forceno'] = 'àì úëøéç'; -$string['forcepasswordchange'] = 'äëøç ùéðåé ñéñîä'; -$string['forcepasswordchangehelp'] = 'á÷ù îäîùúîù ìùðåú áëðéñä äáàä'; $string['forgotten'] = 'ùëçú àú ùí äîùúîù àå àú äñéñîà ùìê?'; $string['format'] = 'ôåøîè'; $string['formathtml'] = 'ôåøîè HTML'; -$string['formatplain'] = 'ôåøîè è÷ñè ôùåè'; +$string['formatplain'] = 'ôåøîè Plain text '; $string['formatsocial'] = 'ôåøîè çáøúé'; $string['formattext'] = ' ôåøîè àåèåîèé Moodle'; $string['formattexttype'] = 'ôøîåè'; @@ -459,15 +407,19 @@ $string['gd1'] = 'GD 1.x $string['gd2'] = 'GD 2.x îåú÷ï'; $string['gdneed'] = 'GD çééá ìäéåú îåú÷ï áëãé ìøàåú âøó æä'; $string['gdnot'] = 'GD àéðå îåú÷ï'; -$string['go'] = 'âù'; $string['gpl'] = 'Copyright (C) 1999-2004 Martin Dougiamas (http://dougiamas.com) -úåëðéú æå äéà úåëðä çåôùéú; àúä éëåì ìäôéöä îçãù å/àå ìùðåú àåúä òì-ôé úðàé äøéùéåï äöéáåøé äëììé ùì GNU ëôé ùôåøñí òì éãé ÷øï äúåëðä äçåôùéú; áéï àí âøñä 2 ùì äøéùéåï, åáéï àí (ìôé áçéøúê) ëì âøñä îàåçøú ùìå. +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. - úåëðéú æå îåôöú áú÷ååä ùúäéä îåòéìä, àáì áìà àçøéåú ëìùäé; åàôéìå ììà äàçøéåú äîùúîòú áãáø îñçøéåúä àå äúàîúä ìîèøä îñåééîú. ìôøèéí ðåñôéí, øàä àú äøéùéåï äöéáåøé äëììé ùì GNU: +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 -http://www.law.co.il/computer-law/gpl-hebrew.html'; +http://www.gnu.org/copyleft/gpl.html'; $string['grade'] = 'öéåï'; $string['grades'] = 'öéåðéí'; $string['group'] = '÷áåöä'; @@ -505,32 +457,31 @@ $string['helpindex'] = ' $string['helppicture'] = 'ëéöã ìäòìåú úîåðä'; $string['helpquestions'] = 'ùàì ùàìåú èåáåú'; $string['helpreading'] = '÷øà áúùåîú ìá'; -$string['helprichtext'] = 'òì òåøê äHTML'; -$string['helpsummaries'] = 'òì ú÷öéøéí àìå'; +$string['helprichtext'] = 'òì òåøê ä HTML'; +$string['helpsummaries'] = 'òì ñéëåîéí àìå'; $string['helptext'] = 'ëéöã ìëúåá è÷ñè'; -$string['helpwiki'] = 'ëéöã ìëúåá è÷ñè ãîåé ååé÷é'; +$string['helpwiki'] = 'ëéöã ìëúåá è÷ñè Wiki '; $string['helpwriting'] = 'ëúåá áæäéøåú'; $string['hiddensections'] = 'éçéãåú ðñúøåú'; $string['hiddensectionscollapsed'] = 'éçéãåú ðñúøåú îåøàåú áöåøä î÷åáöú '; $string['hiddensectionsinvisible'] = 'éçéãåú ðñúøåú äéðï áìúé ðøàåú ìçìåèéï'; $string['hide'] = 'äñúø'; $string['hidepicture'] = 'äñúø úîåðä'; -$string['hidesettings'] = 'äñúø äâãøåú'; $string['hits'] = 'ëðéñåú'; $string['hitsoncourse'] = 'ëðéñåú ì a->coursename$ òì éãé a->username$'; $string['hitsoncoursetoday'] = 'äëðéñåú ùì äéåí ì a->coursename$ òì éãé a->username$'; $string['home'] = 'áéú'; $string['hour'] = 'ùòä'; $string['hours'] = 'ùòåú'; -$string['howtomakethemes'] = 'ëéöã ìéöåø òøëåú ðåùà çãùåú'; +$string['howtomakethemes'] = 'ëéöã ìéöåø ðåùàéí çãùéí'; $string['htmleditor'] = 'äùúîù áòåøê HTML (ãôãôðéí îñåééîéí áìáã)'; $string['htmleditoravailable'] = 'òåøê ä HTML æîéï'; $string['htmleditordisabled'] = 'áôøåôéì äîùúîù ùìê ðèøìú àú òåøê äHTML'; $string['htmleditordisabledadmin'] = 'áàúø æä äîðäì ðèøì àú òåøê äHTML'; -$string['htmleditordisabledbrowser'] = 'òåøê äHTML àéðå æîéï îôðé ùãôãôï äøùú ùìê àéðå îúàéí'; +$string['htmleditordisabledbrowser'] = 'Tòåøê äHTML àéðå æîéï îôðé ùãôãôï äøùú ùìê àéðå îúàéí'; $string['htmlformat'] = ' ôåøîè HTML éôä'; $string['icqnumber'] = 'îñôø ICQ '; -$string['idnumber'] = '÷åã çéöåðé'; +$string['idnumber'] = 'îñôø æäåú'; $string['inactive'] = 'ìà ôòéì'; $string['include'] = 'ëìåì'; $string['includeallusers'] = 'ëìåì àú ëì äîùúîùéí'; @@ -538,21 +489,19 @@ $string['includecoursefiles'] = ' $string['includecourseusers'] = 'ëìåì îùúîùé ä÷åøñ'; $string['included'] = 'ëìåì'; $string['includelogentries'] = 'ëìåì ãéååçé ãåç'; -$string['includemodules'] = 'ëìåì îåãåìéí'; +$string['includemodules'] = 'ëìåì ôø÷éí'; $string['includeneededusers'] = 'ëìåì îùúîùéí ðçåöéí'; $string['includenoneusers'] = 'ëìåì ìà-îùúîùéí'; $string['includeuserfiles'] = 'ëìåì ÷áöé îùúîùéí'; $string['institution'] = 'îåñã'; $string['invalidemail'] = 'ëúåáú ãåàø àì÷èøåðé ìà ú÷ôä'; $string['invalidlogin'] = 'äúçáøåú ìà ú÷ôä, àðà ðñä ùåá'; -$string['ip_address'] = 'ëúåáú IP'; -$string['jump'] = '÷ôåõ'; $string['jumpto'] = '÷ôåõ ì...'; $string['keep'] = 'ùîåø'; $string['langltr'] = 'ëéååï äùôä îùîàì ìéîéï'; $string['langrtl'] = 'ëéååï äùôä îéîéï ìùîàì'; -$string['language'] = 'çáéìú ùôä'; -$string['languagegood'] = 'çáéìú ùôä æå îòåãëðú! :-)'; +$string['language'] = 'ùôä'; +$string['languagegood'] = 'çáéìú ùôä æå îòåãëðú! (-:'; $string['lastaccess'] = 'ëðéñä àçøåðä'; $string['lastedited'] = 'òøéëä àçøåðä'; $string['lastlogin'] = 'ëðéñä àçøåðä'; @@ -563,63 +512,59 @@ $string['latestnews'] = ' $string['leavetokeep'] = 'äùàø øé÷ ëãé ìùîåø òì ñéñîà ðåçëéú'; $string['license'] = ' øùéåï GPL '; $string['list'] = 'øùéîä'; -$string['listfiles'] = 'øùéîú ÷áöéí á $a'; +$string['listfiles'] = 'øùéîä ùì ÷áöéí á a$'; $string['listofallpeople'] = 'øùéîä ùì ëì äàðùéí'; $string['livelogs'] = 'ãåçåú èøééí îäùòä äàçøåðä'; $string['locale'] = 'en'; $string['location'] = 'îé÷åí'; -$string['loggedinas'] = 'àúä îçåáø ë$a'; +$string['loggedinas'] = 'àúä îçåáø ë a$ '; $string['loggedinnot'] = 'àúä ìà îçåáø.'; $string['login'] = 'äúçáø'; -$string['login_failure_logs'] = 'øéùåí ðñéåðåú äúçáøåú ëåùìéí'; $string['loginas'] = 'äúçáø ë'; $string['loginguest'] = 'äúçáø ëàåøç'; $string['loginsite'] = 'äúçáø ìàúø'; -$string['loginsteps'] = 'ùìåí ìê! ì÷áìú âéùä îìàä ì÷åøñéí òìéê ìä÷ãéù ã÷ä ìôúéçú çùáåï çãù áàúø æä. -ìëì àçã îä÷åøñéí äáåããéí éëåì ìäéåú âí \"îôúç øéùåí\" ùúöèøê ø÷ îàåçø éåúø. ìäìï ùìáé ôúéçú äçùáåï: -

                              -
                            1. îìà àú äèåôñ çùáåï çãù áôøèéí ùìê
                            2. -
                            3. ãåàø àì÷èøåðé ééùìç îééãéú ìëúåáú äãåàø äàì÷èøåðé ùñéô÷ú.
                            4. -
                            5. ÷øà àú äãåàø àì÷èøåðé ùìê åìçõ òì ÷éùåø äàéðèøðè ùäåà îëéì.
                            6. +$string['loginsteps'] = 'äé! áùáéì âéùä îìàä ì÷åøñéí úöèøê ì÷çú ã÷ä + ëãé ìéöåø ìòöîê çùáåï çãù áàúø æä. + ìëì àçã îä÷åøñéí äàéðãéáéãåàìééí éëåì ìäéåú âí \"enrolment key\" ùúöèøê ø÷ îàåçø éåúø. äðä äöòãéí: +>ol size=\"2\"> +>New Account áôøèéí ùìê. +
                            7. ãåàø àì÷èøåðé ééùìç îééãéú ìëúåáú äãåàø äàì÷èøåðé ùìê.
                            8. +
                            9. ÷øà àú äãåàø àì÷èøåðé ùìê åìçõ òì ÷éùåø äøùú ùäåà îëéì.
                            10. äçùáåï ùìê éàåùø åàúä úäéä îçåáø.
                            11. òëùéå áçø àú ä÷åøñ áå úøöä ìäùúúó.
                            12. -
                            13. àí îá÷ùéí îîê \"îôúç øéùåí\" äùúîù áæä ùðúï ìê äîåøä ùìê. æä \"éøùåí\" àåúê ì÷åøñ.
                            14. -
                            15. òëùéå éù áéãê âéùä ìëì ä÷åøñ. îòúä åäìàä ëì ùúöèøê áëãé ìäúçáø åìäéëðñ ìëì ÷åøñ ùðøùîú àìéå äåà ùí äîùúîù ùìê åäñéñîà (áèåôñ äîåôéò áãó æä).
                            16. +
                            17. àí îá÷ùéí îîê \"enrolment key\" äùúîù áæä ùðúï ìê äîåøä ùìê. æä & quot;enrol\" àåúê ì÷åøñ.
                            18. +
                            19. òëùéå éù áéãê âéùä ìëì ä÷åøñ. îàúä åäìàä ëì ùúöèøê áëãé ìäúçáø åìäéëðñ ìëì ÷åøñ ùðøùîú àìéå äåà ùí äîùúîù ùìê åäñéñîà (áèåôñ áãó æä).
                            '; -$string['loginstepsnone'] = '

                            ùìåí ìê!

                            -

                            ì÷áìú âéùä îìàä ì÷åøñéí òìéê ìôúåç çùáåï áàúø.

                            -

                            ëì ùòìéê ìòùåú äåà ìäîöéà ìòöîê ùí îùúîù åñéñîà åìäæéï àåúí áèåôñ áòîåã æä!

                            -

                            àí îéùäå àçø ëáø áçø àú ùí äîùúîù ùìê àæ úöèøê ìðñåú ùåá òí ùí îùúîù àçø.

                            '; -$string['loginto'] = 'äúçáø ì$a'; -$string['loginusing'] = 'äúçáø ëàï òì éãé ùéîåù áùí äîùúîù åäñéñîà ùìê'; +$string['loginstepsnone'] = '

                            äé!

                            +

                            áùáéì âéùä îìàä ì÷åøñéí úöèøê ìéöåø ìòöîê çùáåï.

                            +

                            ëì ùúöèøê ìòùåú äåà ìäîöéà ìòöîê ùí îùúîù åñéñîà åìäùúîù áäí áèåôñ áòîåã æä!

                            +

                            àí îùäå àçø ëáø áçø àú ùí äîùúîù ùìêàæ úöèøê ìðñåú ùåá òí ùí îùúîù àçø.

                            '; +$string['loginto'] = 'äúçáø ì a$'; +$string['loginusing'] = 'äúçáø ëàï òì éãé ùéîåù áùí äîùúîù åäñéñîà ùìê.'; $string['logout'] = 'äúðú÷'; $string['logs'] = 'ãåçåú'; -$string['mailadmins'] = 'äåãò ìîðäìéí'; -$string['mailstudents'] = 'äåãò ìúìîéãéí'; -$string['mailteachers'] = 'äåãò ìîåøéí'; $string['mainmenu'] = 'úôøéè øàùé'; $string['makeafolder'] = 'öåø úé÷ééä'; -$string['makeeditable'] = 'àí úäôåê àú \'$a\' ì÷åáõ ùðéúï ìòøåê àåúå òì éãé úåëðú ùøú äøùú (ìãåâîà àôàö\'é), àæ úåëì ìòøåê ÷åáõ æä éùéøåú îãó æä'; -$string['manageblocks'] = 'áìå÷éí'; +$string['makeeditable'] = 'àí úäôåê àú \'$a\' ì÷åáõ ùðéúï ìòøåê àåúå òì éãé úäìéê ùøú äøùú (ìãåâîà àôàö\'é), àæ úåëì ìòøåê àåúå éùéøåú îòîåã æä. '; +$string['manageblocks'] = 'ôðìéí öããééí'; $string['managedatabase'] = 'áñéñ ðúåðéí'; $string['managefilters'] = 'ôéìèøéí'; -$string['managemodules'] = 'îåãåìéí'; -$string['markedthistopic'] = 'ðåùà æä îåãâù ëðåùà äðåëçé'; -$string['markthistopic'] = 'äãâù ðåùà æä ëðåùà äðåëçé'; -$string['maximumchars'] = 'î÷ñéîåí ùì $a úååéí'; +$string['managemodules'] = 'ôø÷éí'; +$string['markedthistopic'] = 'ðåùà æä îåãâù ëðåùà äòëùååé'; +$string['markthistopic'] = 'äãâù ðåùà æä ëðåùà äòëùååé'; +$string['maximumchars'] = 'î÷ñéîåí ùì ñîìé a$'; $string['maximumgrade'] = 'öéåï î÷ñéîìé'; $string['maximumshort'] = 'î÷ñéîåí'; $string['maximumupload'] = 'âåãì äòìàä î÷ñéîìé'; -$string['maxsize'] = 'âåãì î÷ñéîìé: $a'; +$string['maxsize'] = 'âåãì î÷ñéîìé: a$'; $string['min'] = 'ã÷ä'; $string['mins'] = 'ã÷åú'; -$string['miscellaneous'] = 'ùåðåú'; $string['missingcategory'] = 'àúä öøéê ìáçåø ÷èâåøéä'; -$string['missingcity'] = 'çñøä òéø/òééøä '; +$string['missingcity'] = 'çñøä òéøòééøä '; $string['missingcountry'] = 'çñøä àøõ'; $string['missingdescription'] = 'çñø úéàåø'; $string['missingemail'] = 'çñøä ëúåáú ãåàø àì÷èøåðé'; -$string['missingfirstname'] = 'çñø ùí ôøèé'; +$string['missingfirstname'] = 'çñø ùí ðúåï'; $string['missingfullname'] = 'çñø ùí îìà'; $string['missinglastname'] = 'çñø ùí îùôçä'; $string['missingname'] = 'çñø ùí'; @@ -629,33 +574,31 @@ $string['missingshortname'] = ' $string['missingshortsitename'] = 'çñø ùí àúø î÷åöø'; $string['missingsitedescription'] = 'çñø úéàåø àúø'; $string['missingsitename'] = 'çñø ùí àúø'; -$string['missingstrings'] = 'çôù îçøåæåú çñøåú'; $string['missingstudent'] = 'çééá ìáçåø îùäå'; $string['missingsummary'] = 'çñø ñéëåí'; -$string['missingteacher'] = 'çééá ìáçåø îùäå'; +$string['missingteacher'] = 'çééñ ìáçåø îùøå'; $string['missingurl'] = 'çñø URL'; $string['missingusername'] = 'çñø ùí îùúîù'; $string['modified'] = 'ùåðä'; -$string['moduledeleteconfirm'] = 'àúä òåîã ìîçå÷ ìçìåèéï àú äîåãåì \'$a\'. ôòåìä æå úîçå÷ ìçìåèéï àú ëì îä ù÷ùåø ìîåãåì ôòéìåú æä ááñéñ äðúåðéí. äàí àúä áèåç ùàúä øåöä ìòùåú æàú?'; -$string['moduledeletefiles'] = 'ëì îéãò ä÷ùåø ìîåãåì \'$a->module\' ðîç÷ îáñéñ äðúåðéí. áëãé ìäùìéí àú äîçé÷ä (åìîðåò îäôø÷ ìäú÷éï àú òöîå îçãù), àúä öøéê ìîçå÷ òëùéå àú äñôøéä $a->directory îäùøú ùìê'; -$string['modulesetup'] = 'éåöø èáìàåú îåãåìéí'; -$string['modulesuccess'] = '$a èáìàåú ðåöøå áäöìçä'; +$string['moduledeleteconfirm'] = 'àúä òåîã ìîçå÷ ìçìåèéï àú ôø÷ \'$a\'. îä ùéîçå÷ ìçìåèéï àú ëì îä ù÷ùåø ìôø÷ ôòéìåú æä ááñéñ äðúåðéí. äàí àúä áèåç ùàúä øåöä ìòùåú æàú?'; +$string['moduledeletefiles'] = 'ëì îéãò ä÷ùåø ìôø÷ \'a->module$\' ðîç÷ îáñéñ äðúåðéí. áëãé ìäùìéí àú äîçé÷ä (åìîðåò îäôø÷ ìäú÷éï àú òöîå îçãù), àúä öøéê ìîçå÷ òëùéå àú äúé÷ééä äîäùøú ùìê: a->directory$'; +$string['modulesetup'] = 'îúáöòú äú÷ðú èáìàåú ôø÷'; +$string['modulesuccess'] = '$a èáìàåú äåú÷ðå áäöìçä'; $string['moodleversion'] = 'âøñú Moodle '; -$string['more'] = 'òåã'; $string['mostrecently'] = 'ìàçøåðä'; $string['move'] = 'äææ'; $string['movecategoryto'] = 'äææ ÷èâåøéä ì:'; $string['movecourseto'] = 'äææ ÷åøñ ì:'; $string['movedown'] = 'äææ ìîèä'; $string['movefilestohere'] = 'äææ ÷áöéí ìëàï'; -$string['movefull'] = 'äææ àú $a ìîé÷åí æä'; +$string['movefull'] = 'äææ àú a$ ìîé÷åí æä'; $string['movehere'] = 'äææ ìëàï'; -$string['moveleft'] = 'äææ éîéðä'; -$string['moveright'] = 'äææ ùîàìä'; +$string['moveleft'] = 'äææ ùîàìä'; +$string['moveright'] = 'äææ éîéðä'; $string['moveselectedcoursesto'] = 'äææ ä÷åøñéí äðáçøéí ì...'; $string['movetoanotherfolder'] = 'äææ ìúé÷ééä àçøú'; $string['moveup'] = 'äææ ìîòìä'; -$string['mustconfirm'] = 'òìéê ìàùø àú ääúçáøåú ùìê'; +$string['mustconfirm'] = 'àúä öøéê ìàùø àú ääúçáøåú ùìê'; $string['mycourses'] = 'ä÷åøñéí ùìé'; $string['name'] = 'ùí'; $string['namesocial'] = 'éçéãä'; @@ -668,22 +611,23 @@ $string['new'] = ' $string['newaccount'] = 'çùáåï çãù'; $string['newcourse'] = '÷åøñ çãù'; $string['newpassword'] = 'ñéñîà çãùä'; -$string['newpasswordtext'] = 'ùìåí ìê $a->firstname, +$string['newpasswordtext'] = 'äé a->firstname$, -ñéñîú çùáåðê áàúø \'$a->sitename\' àåôñä, +ñéñîàú çùáåðê á \'$a->sitename\' àåôñä, åäåðô÷ä ìê ñéñîà æîðéú çãùä. -ôøèé ääúçáøåú äçãùéí ùìê äéðí: -ùí îùúîù: $a->username -ñéñîà: $a->newpassword +ôøèé ääúçáøåú äòëùåééí ùìê äéðí: +ùí îùúîù: a->username$ +ñéñîà: a->newpassword$ -àðà âù ìòîåã æä ëãé ìùðåú àú ñéñîàúê: -$a->link +àðà ìê ìòîåã æä ëãé ìùðåú àú ñéñîàúê: + a->link$ áøåá úåëðåú äãåàø, ëúåáú äàéðèøðè àîåøä ìäåôéò ë÷éùåø ëçåì àùø àúä éëåì ôùåè ììçåõ òìéå. àí æä ìà òåáã, âæåø àú äëúåáú åäãá÷ àåúä áúåê ôñ äëúåáåú ùì ãôãôï äàéðèøðè ùìê. -àéçåìé äöìçä îäîðäì ùì \'$a->sitename\'. -$a->signoff'; + àéçåìé äöìçä îäîðäì ùì\'a->sitename$\' , +a->signoff$ +'; $string['newpicture'] = 'úîåðä çãùä'; $string['newsitem'] = 'ôøéè çãùåú'; $string['newsitems'] = 'ôøéèé çãùåú'; @@ -710,12 +654,12 @@ $string['nopotentialstudents'] = ' $string['nopotentialteachers'] = 'àéï îåøéí ôåèðöéàìéí'; $string['normal'] = 'øâéì'; $string['normalfilter'] = 'çéôåù øâéì'; -$string['nostudentsfound'] = 'ìà ðîöà $a'; +$string['nostudentsfound'] = 'ìà ðîöà a$ '; $string['nostudentsyet'] = 'òãééï ìà ðøùîå ñèåãðèéí ì÷åøñ æä'; $string['nosuchemail'] = ' ëúåáú ãåàø àì÷èøåðé ùëæå ìà ÷ééîú'; $string['notavailable'] = 'ìà æîéï'; $string['noteachersyet'] = 'òãééï àéï îåøéí á÷åøñ æä'; -$string['notenrolled'] = '$a àéðå øùåí á÷åøñ æä.'; +$string['notenrolled'] = 'a$ àéðå øùåí á÷åøñ æä.'; $string['noteuserschangednonetocourse'] = 'äòøä: ëàùø îùçæøéí îéãò,îùúîùé ä÷åøñ âí ëï öøéëéí ìäéåú îùåçæøéí. äâãøä æå ùåðúä ìîòðê.'; $string['nothingnew'] = 'àéï çãù îàæ äúçáøåúê äàçøåðä'; $string['notincluded'] = 'ìà ðëìì'; @@ -723,15 +667,15 @@ $string['notingroup'] = ' $string['nousersmatching'] = 'ìà ðîöàå îùúîùéí äúåàîéí àú \'a$\' '; $string['nousersyet'] = 'òãééï àéï îùúîùéí'; $string['now'] = 'òëùéå'; -$string['numberweeks'] = 'îñôø ùáåòåú/ðåùàéí'; -$string['numdays'] = '$a éîéí'; -$string['numhours'] = '$a ùòåú'; -$string['numminutes'] = '$a ã÷åú'; -$string['numseconds'] = '$a ùðéåú'; -$string['numviews'] = '$a çùéôåú'; -$string['numweeks'] = '$a ùáåòåú'; -$string['numwords'] = '$a îéìéí'; -$string['numyears'] = '$a ùðéí'; +$string['numberweeks'] = 'îñôø ùáåòåúðåùàéí'; +$string['numdays'] = 'a$ éîéí'; +$string['numhours'] = 'a$ ùòåú'; +$string['numminutes'] = 'a$ ã÷åú'; +$string['numseconds'] = 'a$ ùðéåú'; +$string['numviews'] = 'a$ çùéôåú'; +$string['numweeks'] = 'a$ ùáåòåú'; +$string['numwords'] = 'a$ îéìéí'; +$string['numyears'] = 'a$ ùðéí'; $string['ok'] = 'ëï'; $string['opentoguests'] = 'ëðéñú àåøçéí'; $string['optional'] = 'àåôöéåðìé'; @@ -746,10 +690,10 @@ $string['passwordconfirmchange'] = ' $string['passwordrecovery'] = 'ëï, òæåø ìé ìäúçáø'; $string['passwordsdiffer'] = 'ñéñîàåú àìå àéðï úåàîåú'; $string['passwordsent'] = 'äñéñîà ðùìçä'; -$string['passwordsenttext'] = '

                            ìëúåáúê á $a->email úùìç á÷øåá äåãòú ãåàø àì÷èøåðé.

                            -

                            òìéê ìáãå÷ àú úéáú äãåàø ùìê ì÷áìú ñéñîúê äçãùä

                            -

                            ñéñîä æå ðåöøä áàåôï àåèåîèé, ëê ùéúëï åúøöä link\">ìùðåú àú äñéñîä ìàçú ùúåëì ìæëåø á÷ìåú'; -$string['people'] = 'îùúîùéí'; +$string['passwordsenttext'] = '

                            ìëúåáúê áa->email$ ðùìç ãåàø àì÷èøåðé. +

                            àðà áãå÷ àú äãåàø äàì÷èøåðé ùìê àçø ñéñîúê äçãùä +

                            ñéñîà çãùä æå äåôòìä àåèåîèéú, ëê ùéëåì ìäéåú ùúøöä link> ìùðåú àåúä ìîùäå ùéåúø ÷ì ìæëåø àåúå.'; +$string['people'] = 'àðùéí'; $string['personalprofile'] = 'ôøåôéì àéùé'; $string['phone'] = 'èìôåï'; $string['phpinfo'] = 'îéãò PHP '; @@ -760,7 +704,7 @@ $string['potentialstudents'] = ' $string['potentialteachers'] = 'îåøéí ôåèðöéàìéí'; $string['preferredlanguage'] = 'ùôä îåòãôú'; $string['preview'] = 'úöåâä î÷ãéîä'; -$string['previeworchoose'] = 'äöâ àå áçø òøëú ðåùà'; +$string['previeworchoose'] = 'äöâ àå áçø äâãøåú âøôéåú'; $string['previous'] = '÷åãí'; $string['publicdirectory'] = 'úé÷ééä îùåúôú'; $string['publicdirectory0'] = 'àðà àì úôøñí àúø æä'; @@ -770,16 +714,16 @@ $string['publicsitefileswarning'] = ' $string['question'] = 'ùàìä'; $string['readinginfofrombackup'] = '÷åøà îéãò îäâéáåé'; $string['readme'] = 'README'; -$string['recentactivity'] = 'ôòéìåéåú àçøåðåú'; -$string['recentactivityreport'] = 'ãå\"ç îìà òì ôòéìåéåú àçøåðåú'; +$string['recentactivity'] = 'ôòéìåú ùäúøçùä ìàçøåðä'; +$string['recentactivityreport'] = 'ãåç îìà òì ôòéìåú ùäúøçùä ìàçøåðä...'; $string['refreshingevents'] = 'øòðåï àéøåòéí'; $string['registration'] = 'äøùîú Moodle '; $string['registrationemail'] = 'äåãòåú ãåàø àì÷èøåðé'; -$string['registrationinfo'] = 'òîåã æä îàôùø ìê ìøùåí àú àúø ä Moodle ùìê áàîöòåú moodle.org. ääøùîä äéà çéðí. +$string['registrationinfo'] = 'òîåã æä îàôùø ìê ìøùåí àú àúø ä Moodle ùìê áàîöòåú moodle.org. ääøùîä äéà çéðí. ääèáä äòé÷øéú ùì ääøùîä äéà ùàúä úúååñó ìøùéîú äôöä áòìú ðôç ðîåê ùì äåãòåú, ìäåãòåú çùåáåú ëâåï äúøàåú àáèçä åùçøåøéí çãùéí ùì .Moodle -

                            ìôé áøéøú îçãì, äðúåðéí ùìê ééùîøå ñåãééí, åìòåìí ìà ééîëøå àå éòáåøå ìîùäå àçø. äñéáä äéçéãä ìàñéôú îéãò æä äéà ìîèøú úîéëä, åëãé ìòæåø ìáðåú úîåðä ñèèéñèéú ùì ÷äéìú Moodle ëùìí.

                            -

                            àí úáçø, àúä éëåì ìäøùåú ùùí äàúø ùìê, àøõ åURL éåñôå ìøùéîä äôåîáéú ùì àúøé .Moodle

                            -

                            ëì ääøùîåú äçãùåú îàåùøåú éãðéú ìôðé ùäí îúååñôåú ìøùéîä, àáì îøâò ùàúä îúååñó ìøùéîä àúä éëåì ìòãëï àú àú ääøùîä (åàú äëðéñä ùìê áøùéîä äôåîáéú) áëì æîï òì éãé äâùä çåæøú ùì èåôñ æä.

                            '; +

                            ìôé áøéøú îçãì, äðúåðéí ùìê ééùîøå ñåãééí, åìòåìí ìà ééîëøå àå éòáåøå ìîùäå àçø. äñéáä äéçéãä ìàñéôú îéãò æä äéà ìîèøú úîéëä, åëãé ìòæåø ìáðåú úîåðä ñèèéñèéú ùì ÷äéìú Moodle ëùìí. +

                            àí úáçø, àúä éëåì ìäøùåú ùùí äàúø ùìê, àøõ åURL éåñôå ìøùéîä äôåîáéú ùì àúøé .Moodle +

                            ëì ääøùîåú äçãùåú îàåùøåú éãðéú ìôðé ùäí îúååñôåú ìøùéîä, àáì îøâò ùàúä îúååñó ìøùéîä àúä éëåì ìòãëï àú àú ääøùîä (åàú äëðéñä ùìê áøùéîä äôåîáéú) áëì æîï òì éãé äâùä çåæøú ùì èåôñ æä.'; $string['registrationno'] = 'ìà, àðé ìà øåöä ì÷áì ãåàø àì÷èøåðé'; $string['registrationsend'] = 'ùìç ðúåðé äøùîä ì moodle.org'; $string['registrationyes'] = 'ëï, àðà äåãò òì ðåùàéí çùåáéí'; @@ -791,7 +735,6 @@ $string['rename'] = ' $string['renamefileto'] = 'ùðä ùí ì$a '; $string['required'] = 'ãøåù'; $string['requireskey'] = '÷åøñ æä ãåøù îôúç äøùîä'; -$string['requirespayment'] = 'âéùä ì÷åøñ æä îçééáú úùìåí'; $string['resortcoursesbyname'] = 'îééï îçãù ÷åøñéí òì ôé ùí'; $string['resources'] = 'îùàáéí'; $string['restore'] = 'ùçæø'; @@ -799,10 +742,9 @@ $string['restorecancelled'] = ' $string['restorecoursenow'] = 'ùçæø ÷åøñ æä îéã!'; $string['restorefinished'] = 'ùçæåø äåùìí áäöìçä'; $string['restoreto'] = 'ùçæø ì'; -$string['returningtosite'] = 'äàí æäå áé÷åø çåæø ùìê áàúø æä?'; +$string['returningtosite'] = 'çåæø ìàúø øùú æä?'; $string['revert'] = 'ìçæåø'; $string['role'] = 'úô÷éã'; -$string['rss'] = 'RSS'; $string['rssarticles'] = 'îñôø äëúáåú äàçøåðåú ùì RSS'; $string['rsstype'] = 'RSS feed ìôòéìåú æå'; $string['savechanges'] = 'ùîåø ùéðåééí'; @@ -815,11 +757,11 @@ $string['scalescustomno'] = ' $string['scalesstandard'] = 'îãøâåú äòøëä ñèðãøèéåú'; $string['scalestip'] = 'ëãé ìéöåø îãøâåú äòøëä îåúàîåú àéùéú, äùúîù á÷éùåø ä \'îãøâåú...\' áúôøéè äðäìú ä÷åøñ ùìê.'; $string['schedule'] = 'ìåç æîðéí'; -$string['scheduledbackupstatus'] = 'îöá âéáåé îúåëðï'; +$string['scheduledbackupstatus'] = 'ñèàèåñ âéáåé îúåëðï'; $string['search'] = 'çôù'; $string['searchagain'] = 'çôù ùåá'; $string['searchcourses'] = 'çôù ÷åøñéí'; -$string['searchhelp'] = 'àúä éëåì ìçôù îñôø îéìéí ááú àçú.
                            word : úîöà ëì äúàîä ìîéìä æå áúåê äè÷ñè.
                            +word : ø÷ äúàîåú îãåéé÷åú ééîöàå.
                            -word : àì úëìåì úåöàåú äëåììåú îéìä æå.'; +$string['searchhelp'] = 'àúä éëåì ìçôù îñôø îéìéí ááú àçú.

                            word : úîöà ëì äúàîä ìîéìä æå áúåê äè÷ñè.
                            +word : ø÷ äúàîåú îãåéé÷åú ééîöàå.
                            -word : àì úëìåì úåöàåú äëåììåú îéìä æå.'; $string['searchresults'] = 'úåöàåú çéôåù'; $string['sec'] = 'ùðéä'; $string['secs'] = 'ùðéåú'; @@ -832,8 +774,8 @@ $string['senddetails'] = ' $string['separateandconnected'] = 'ãøëéí ðôøãåú å÷ùåøåú ìãòú'; $string['serverlocaltime'] = 'äæîï äî÷åîé ùì äùøú'; $string['settings'] = 'äâãøåú'; -$string['shortname'] = 'ùí î÷åöø'; -$string['shortnametaken'] = 'äùí äî÷åöø ëáø áùéîåù á÷åøñ àçø ($a)'; +$string['shortname'] = '÷éöåø ùí'; +$string['shortnametaken'] = '÷éöåø äùí ëáø áùéîåù á÷åøñ àçø ($a)'; $string['shortsitename'] = '÷éöåø ùí ìàúø (ìãåâîà îéìä àçú)'; $string['show'] = 'äøàä'; $string['showall'] = 'äøàä ëì $a'; @@ -847,31 +789,26 @@ $string['showonlytopic'] = ' $string['showonlyweek'] = 'äøàä ø÷ ùáåò $a'; $string['showrecent'] = 'äøàä ôòéìåú àçøåðä'; $string['showreports'] = 'äøàä ãéååçé ôòéìåú'; -$string['showsettings'] = 'äøàä äâãøåú'; $string['showtheselogs'] = 'äøàä ãåçåú àìä'; $string['since'] = 'îàæ'; $string['site'] = 'àúø'; $string['sitefiles'] = '÷áöé äàúø'; $string['sitelogs'] = 'ãåçåú äàúø'; $string['sitenews'] = 'çãùåú äàúø'; -$string['sitepartlist0'] = 'àúä çééá ìäéåú îåøä äàúø áëãé ìøàåú àú øùéîú äîùúúôéí áàúø'; -$string['sitepartlist1'] = 'àúä çééá ìäéåú îåøä áëãé ìøàåú àú øùéîú äîùúúôéí áàúø'; $string['sites'] = 'àúøéí'; $string['sitesettings'] = 'äâãøåú äàúø'; -$string['siteteachers'] = 'îåøé äàúø'; $string['size'] = 'âåãì'; $string['sizeb'] = 'áééèéí'; $string['sizegb'] = 'Gb'; $string['sizekb'] = 'Kb'; $string['sizemb'] = 'Mb'; $string['socialheadline'] = 'ôåøåí çáøúé - ðåùàéí àçøåðéí'; -$string['someallowguest'] = 'éúëï åçì÷ îä÷åøñéí îàôùøéí ëðéñú àåøçéí'; +$string['someallowguest'] = 'éëåì ìäéåú åçì÷ îä÷åøñéí îøùéí ëðéñú àåøçéí'; $string['someerrorswerefound'] = 'çì÷ îäîéãò äéä çñø àå ìà ðëåï. ìôøèéí øàä ìîèä .'; $string['sortby'] = 'îééï ìôé'; -$string['specifyname'] = 'àúä çééá ìäâãéø ùí.'; $string['startdate'] = 'úàøéê úçéìú ä÷åøñ'; $string['startsignup'] = 'äúçì òëùéå òì éãé éöéøú çùáåï çãù!'; -$string['state'] = 'îãéðä/îçåæ'; +$string['state'] = 'îãéðäîçåæ'; $string['status'] = 'îöá'; $string['strftimedate'] = '%%d %%B %%Y'; $string['strftimedateshort'] = '%%d %%B'; @@ -886,27 +823,25 @@ $string['strftimetime'] = '%%I:%%M %%p'; $string['stringsnotset'] = ' $a'; $string['studentnotallowed'] = 'îöèòøéí, àáì àúä ìà éëåì ìäéëðñ ì÷åøñ æä ë \'$a\''; $string['students'] = 'ñèåãðèéí'; -$string['studentsandteachers'] = 'úìîéãéí åîåøéí'; $string['subcategories'] = 'úú-÷èâåøéåú'; $string['success'] = 'äöìçä'; -$string['summary'] = 'ú÷öéø'; -$string['summaryof'] = 'ú÷öéø ùì $a'; +$string['summary'] = 'ñéëåí'; +$string['summaryof'] = 'ñéëåí ùì $a'; $string['supplyinfo'] = 'àðà ñô÷ îñôø ðúåðéí òì òöîê'; -$string['teacheronly'] = 'áùáéì ä$a áìáã'; +$string['teacheronly'] = 'áùáéì ä $a áìáã'; $string['teacherroles'] = '$a úô÷éãéí'; $string['teachers'] = 'îåøéí'; $string['textediting'] = 'áæîï òøéëú è÷ñè'; $string['texteditor'] = 'äùúîù áèåôñé øùú ñèðãøèééí'; -$string['textformat'] = 'ôåøîè è÷ñè ôùåè '; +$string['textformat'] = 'ôåøîè Plain text '; $string['thanks'] = 'úåãä'; -$string['theme'] = 'òøëú ðåùà'; -$string['themes'] = 'òøëåú ðåùà'; -$string['themesaved'] = 'òøëú äðåùà äçãùä ðùîøä'; -$string['thischarset'] = 'ISO-8859-8-I'; +$string['theme'] = 'òéöåá'; +$string['themes'] = 'òéöåáéí'; +$string['themesaved'] = 'òéöåá çãù ðùîø'; +$string['thischarset'] = 'iso-8859-8'; $string['thisdirection'] = 'rtl'; -$string['thislanguage'] = 'עברית'; +$string['thislanguage'] = 'Hebrew'; $string['time'] = 'æîï'; -$string['timezone'] = 'àæåø æîï'; $string['to'] = 'ì'; $string['today'] = 'äéåí'; $string['todaylogs'] = 'äãåçåú ùì äéåí'; @@ -920,59 +855,46 @@ $string['total'] = ' $string['turneditingoff'] = 'ëáä òøéëä'; $string['turneditingon'] = 'äôòì òøéëä'; $string['undecided'] = 'áäúìáèåú'; -$string['unenrol'] = 'áèì øéùåí'; -$string['unenrolallstudents'] = 'áèì àú äøéùåí ùì ëì äúìîéãéí'; -$string['unenrolallstudentssure'] = 'äàí àúä áèåç ùàúä øåöä ìáèì àú äøéùåí ùì ëì äúìîéãéí î÷åøñ æä?'; -$string['unenrolme'] = 'áèì àú äøéùåí ùìé î$a'; -$string['unenrolsure'] = 'äàí àúä áèåç ùàúä øåöä ìáèì àú äøéùåí ùì $a î÷åøñ æä?'; -$string['unfinished'] = 'ìà âîåø'; $string['unknowncategory'] = '÷èâåøéä ìà éãåòä'; -$string['unlimited'] = 'àéï äâáìä'; $string['unpacking'] = 'ôúéçú àøëéåï $a'; $string['unsafepassword'] = 'ñéñîà ìà áèåçä - ðñä îùäå àçø'; -$string['unusedaccounts'] = 'äøéùåí ùì çùáåðåú ùìà ðòùä áäí ùéîåù éåúø î$a éîéí îáåèì áàåôï àåèåîèé'; $string['unzip'] = 'ôúç ÷åáõ î÷åáõ'; $string['unzippingbackup'] = 'ôåúç âéáåé î÷åáõ'; $string['up'] = 'îòìä'; $string['update'] = 'òãëï'; -$string['updated'] = '$a òåãëï'; +$string['updated'] = 'òãëï a$'; $string['updatemyprofile'] = 'òãëï ôøåôéì'; -$string['updatesevery'] = 'òãëåðéí ëì $a ùðéåú'; -$string['updatethis'] = 'òãëï $a æä'; +$string['updatesevery'] = 'òãëï ëì a$ ùðéåú'; +$string['updatethis'] = 'òãëï æä a$'; $string['updatethiscourse'] = 'òãëï ÷åøñ æä'; $string['updatinga'] = 'îòãëï: $a'; -$string['updatingain'] = 'îòãëï $a->what á$a->in'; +$string['updatingain'] = 'îòãëï a->what $á a->in$'; $string['upload'] = 'äòìä'; $string['uploadafile'] = 'äòìä ÷åáõ'; -$string['uploadedfile'] = 'ä÷åáõ äåòìä áäöìçä'; -$string['uploadedfileto'] = 'ä÷åáõ $a->file äåòìä ìñôøééä $a->directory'; -$string['uploadfilelog'] = 'èòï àú äøéùåí òáåø ä÷åáõ $a'; -$string['uploadlabel'] = 'ëåúøú:'; +$string['uploadedfileto'] = 'äòìä a->file $ ì a->directory$'; $string['uploadnofilefound'] = 'ìà ðîöà ëì ÷åáõ - äàí àúä áèåç ùáçøú àçã ìäòìàä?'; $string['uploadnotallowed'] = 'äòìàåú àéðï îåøùåú'; $string['uploadproblem'] = 'áòéä ìà îæåää ÷øúä áæîï äòìàú ÷åáõ \'$a\' (àåìé äåà äéä âãåì îãé?)'; $string['uploadthisfile'] = 'äòìä ÷åáõ æä'; $string['uploadusers'] = 'äòìä îùúîùéí'; -$string['usedinnplaces'] = 'áùéîåù á $a î÷åîåú'; +$string['usedinnplaces'] = 'áùéîåù áa$ î÷åîåú'; $string['user'] = 'îùúîù'; -$string['userconfirmed'] = '$a îàåùø'; +$string['userconfirmed'] = 'îàåùø a$'; $string['userdata'] = 'ðúåðé îùúîù'; $string['userdeleted'] = 'çùáåï îùúîù æä ðîç÷'; $string['userdescription'] = 'úéàåø'; $string['userfiles'] = '÷áöé îùúîù'; -$string['userlist'] = 'øùéîú îùúîùéí'; $string['username'] = 'ùí îùúîù'; $string['usernameexists'] = 'ùí îùúîù æä ëáø ÷ééí, áçø àçø'; -$string['usernotconfirmed'] = 'ìà ðéúï ìàùø àú $a'; -$string['userprofilefor'] = 'ôøåôéì îùúîù òáåø $a'; +$string['usernotconfirmed'] = 'ìà éëåì äéä ìàùø a$'; +$string['userprofilefor'] = 'ôøåôéì îùúîù áùáéì a$'; $string['users'] = 'îùúîùéí'; $string['usersnew'] = 'îùúîùéí çãùéí'; $string['userzones'] = 'àæåøé îùúîù'; $string['usingexistingcourse'] = 'îùúîù á÷åøñ ÷ééí'; $string['version'] = 'âøñä'; $string['view'] = 'úöåâä'; -$string['virusfoundsubject'] = '$a: ðîöà åéøåñ!'; -$string['webpage'] = 'ãó áéú áàéðèøðè'; +$string['webpage'] = 'òîåã øùú'; $string['week'] = 'ùáåò'; $string['weekhide'] = 'äçáà ùáåò æä îôðé a$'; $string['weeklyoutline'] = 'ñ÷éøä ùáåòéú'; @@ -999,18 +921,17 @@ $string['writingcoursedata'] = ' $string['writingeventsinfo'] = 'ëúéáú îéãò àéøåòéí'; $string['writinggeneralinfo'] = 'ëúéáú îéãò ëììé'; $string['writinggroupsinfo'] = 'ëúéáú îéãò ÷áåöåú'; -$string['writingheader'] = 'ëúéáú ëåúøú'; $string['writingloginfo'] = 'ëúéáú îéãò ãåçåú'; -$string['writingmoduleinfo'] = 'ëúéáú îéãò îåãåìéí'; +$string['writingmoduleinfo'] = 'ëúéáú îéãò ôø÷éí'; $string['writingscalesinfo'] = 'ëúéáú îéãò ñåìîåú äòøëä'; $string['writinguserinfo'] = 'ëúéáú îéãò îùúîùéí'; $string['wrongpassword'] = 'ñéñîà ùâåéä ìùí îùúîù æä'; $string['yes'] = 'ëï'; -$string['youareabouttocreatezip'] = 'àúä òåîã ìéöåø ÷åáõ àøëéá äîëéì'; +$string['youareabouttocreatezip'] = 'àúä òåîã ìéöåø ÷åáõ î÷åáõ äîëéì'; $string['youaregoingtorestorefrom'] = 'àúä òåîã ìäúçéì àú úäìéê äùéçæåø ì'; $string['yourlastlogin'] = 'äúçáøåúê äàçøåðä äéúä'; $string['yourself'] = 'àú òöîê'; -$string['yourteacher'] = '$a ùìê'; -$string['zippingbackup'] = 'îëååõ àú äâéáåé ìàøëéá'; +$string['yourteacher'] = ' a$ ùìê'; +$string['zippingbackup'] = 'î÷áõ âéáåé'; ?> diff --git a/lang/he/quiz.php b/lang/he/quiz.php index 64f5d26fcc9..800d60245a1 100644 --- a/lang/he/quiz.php +++ b/lang/he/quiz.php @@ -79,8 +79,8 @@ $string['fileformat'] = 'File format'; $string['filloutoneanswer'] = 'You must fill out at least one possible answer. Answers left blank will not be used.'; $string['filloutthreequestions'] = 'You must fill out at least three questions. Questions left blank will not be used.'; $string['fillouttwochoices'] = 'You must fill out at least two choices. Choices left blank will not be used.'; -$string['fractionsaddwrong'] = 'The positive grades you have chosen do not add up to 100%%
                            Instead, they add up to $a%%
                            Do you want to go back and fix this question?'; -$string['fractionsnomax'] = 'One of the answers should be 100%%, so that it is
                            possible to get a full grade for this question.
                            Do you want to go back and fix this question?'; +$string['fractionsaddwrong'] = 'The positive grades you have chosen do not add up to 100%%
                            Instead, they add up to $a%%
                            Do you want to go back and fix this question?'; +$string['fractionsnomax'] = 'One of the answers should be 100%%, so that it is
                            possible to get a full grade for this question.
                            Do you want to go back and fix this question?'; $string['gift'] = 'GIFT format'; $string['gradeaverage'] = 'Average grade'; $string['gradehighest'] = 'Highest grade'; @@ -114,7 +114,7 @@ $string['noquestions'] = 'No questions have been added yet'; $string['noresponse'] = 'No Response'; $string['noreview'] = 'You are not allowed to review this quiz'; $string['noreviewuntil'] = 'You are not allowed to review this quiz until $a'; -$string['notenoughsubquestions'] = 'Not enough sub-questions have been defined!
                            Do you want to go back and fix this question?'; +$string['notenoughsubquestions'] = 'Not enough sub-questions have been defined!
                            Do you want to go back and fix this question?'; $string['numerical'] = 'Numerical'; $string['paragraphquestion'] = 'Paragraph Question not supported at line $a. The question will be ignored'; $string['percentcorrect'] = 'Percent Correct'; diff --git a/lang/he/resource.php b/lang/he/resource.php index 02f418f9a10..c2786a448cf 100644 --- a/lang/he/resource.php +++ b/lang/he/resource.php @@ -1,62 +1,62 @@ '; +$string['filename'] = 'File name'; +$string['fulltext'] = 'Full text'; +$string['htmlfragment'] = 'HTML fragment'; +$string['modulename'] = 'Resource'; +$string['modulenameplural'] = 'Resources'; +$string['neverseen'] = 'Never seen'; +$string['newdirectories'] = 'Show the directory links'; +$string['newfullscreen'] = 'Fill the whole screen'; +$string['newheight'] = 'Default window height (in pixels)'; +$string['newlocation'] = 'Show the location bar'; +$string['newmenubar'] = 'Show the menu bar'; +$string['newresizable'] = 'Allow the window to be resized'; +$string['newscrollbars'] = 'Allow the window to be scrolled'; +$string['newstatus'] = 'Show the status bar'; +$string['newtoolbar'] = 'Show the toolbar'; +$string['newwidth'] = 'Default window width (in pixels)'; +$string['newwindow'] = 'New window'; +$string['newwindowopen'] = 'Display this resource in a new popup window'; +$string['note'] = 'Note'; +$string['notefile'] = 'To upload more files into the course (so they appear in this list) use the File Manager.'; +$string['notypechosen'] = 'You need to choose a type. Use your back button to go back and retry.'; +$string['popupresource'] = 'This resource should appear in a popup window.'; +$string['popupresourcelink'] = 'If it didn\'t, click here: $a'; +$string['resourcetype'] = 'Type of resource'; +$string['resourcetype1'] = 'Reference'; +$string['resourcetype2'] = 'Web Page'; +$string['resourcetype3'] = 'Uploaded File'; +$string['resourcetype4'] = 'Plain text'; +$string['resourcetype5'] = 'Web Link'; +$string['resourcetype6'] = 'HTML text'; +$string['resourcetype7'] = 'Program'; +$string['resourcetype8'] = 'Wiki text'; ?> diff --git a/lang/he/survey.php b/lang/he/survey.php new file mode 100644 index 00000000000..a83a02f3725 --- /dev/null +++ b/lang/he/survey.php @@ -0,0 +1,205 @@ +preferred (ideal) and actual experience in this unit. + +There are no \'right\' or \'wrong\' answers; we are interested only in your opinion. Please be assured that your responses will be treated with a high degree of confidentiality, and will not affect your assessment. + +Your carefully considered responses will help us improve the way this unit is presented online in the future. + +Thanks very much.'; +$string['collesapname'] = 'COLLES (Preferred and Actual)'; +$string['collesm1'] = 'Relevance'; +$string['collesm1short'] = 'Relevance'; +$string['collesm2'] = 'Reflective Thinking'; +$string['collesm2short'] = 'Reflective Thinking'; +$string['collesm3'] = 'Interactivity'; +$string['collesm3short'] = 'Interactivity'; +$string['collesm4'] = 'Tutor Support'; +$string['collesm4short'] = 'Tutor Support'; +$string['collesm5'] = 'Peer Support'; +$string['collesm5short'] = 'Peer Support'; +$string['collesm6'] = 'Interpretation'; +$string['collesm6short'] = 'Interpretation'; +$string['collesmintro'] = 'In this online unit...'; +$string['collespintro'] = 'The purpose of this survey is to help us understand what you value in an online learning experience. + +Each one of the 24 statements below asks about your preferred (ideal) experience in this unit. + +There are no \'right\' or \'wrong\' answers; we are interested only in your opinion. Please be assured that your responses will be treated with a high degree of confidentiality, and will not affect your assessment. + +Your carefully considered responses will help us improve the way this unit is presented online in the future. + +Thanks very much.'; +$string['collespname'] = 'COLLES (Preferred)'; +$string['done'] = 'Done'; +$string['download'] = 'Download'; +$string['downloadexcel'] = 'Download data as Excel spreadsheet'; +$string['downloadinfo'] = 'You can download the complete raw data for this survey in a form suitable for analysis in Excel, SPSS or other package.'; +$string['downloadtext'] = 'Download data as a plain text file'; +$string['editingasurvey'] = 'Editing a survey'; +$string['guestsnotallowed'] = 'Guests are not allowed to submit surveys'; +$string['helpsurveys'] = 'Help on the different types of surveys'; +$string['howlong'] = 'How long did this survey take you to complete?'; +$string['howlongoptions'] = 'under 1 min,1-2 min,2-3 min,3-4 min,4-5-min,5-10 min,more than 10'; +$string['ifoundthat'] = 'I found that'; +$string['introtext'] = 'Introduction text'; +$string['ipreferthat'] = 'I prefer that'; +$string['modulename'] = 'Survey'; +$string['modulenameplural'] = 'Surveys'; +$string['name'] = 'Name'; +$string['newsurveyresponses'] = 'New survey responses'; +$string['nobodyyet'] = 'Nobody has yet completed this survey'; +$string['notdone'] = 'Not done yet'; +$string['notes'] = 'Your private analysis and notes'; +$string['othercomments'] = 'Do you have any other comments?'; +$string['peoplecompleted'] = '$a people have completed this survey so far'; +$string['preferred'] = 'Preferred'; +$string['preferredclass'] = 'Class preferred'; +$string['preferredstudent'] = '$a preferred'; +$string['question'] = 'Question'; +$string['questions'] = 'Questions'; +$string['questionsnotanswered'] = 'Some of the multiple choice questions have not been answered.'; +$string['report'] = 'Survey report'; +$string['savednotes'] = 'Your notes were saved'; +$string['scaleagree5'] = 'Strongly disagree,Somewhat disagree,Neither agree nor disagree,Somewhat agree,Strongly agree'; +$string['scales'] = 'Scales'; +$string['scaletimes5'] = 'Almost Never,Seldom,Sometimes,Often,Almost Always'; +$string['seemoredetail'] = 'Click here to see more detail'; +$string['selectedquestions'] = 'Selected questions from a scale, all students'; +$string['summary'] = 'Summary'; +$string['surveycompleted'] = 'You\'ve completed this survey. The graph below shows a summary of your results compared to the class averages.'; +$string['surveyname'] = 'Survey name'; +$string['surveysaved'] = 'Survey saved'; +$string['surveytype'] = 'Survey type'; +$string['thanksforanswers'] = 'Thanks for answering this survey, $a'; +$string['time'] = 'Time'; +$string['viewsurveyresponses'] = 'View $a survey responses'; + +?> diff --git a/lang/he/tex.php b/lang/he/tex.php index 1978994bb88..fce69776417 100644 --- a/lang/he/tex.php +++ b/lang/he/tex.php @@ -1,11 +1,6 @@ - + diff --git a/lang/he/workshop.php b/lang/he/workshop.php index d8390c7d25f..06fd0e620e2 100644 --- a/lang/he/workshop.php +++ b/lang/he/workshop.php @@ -112,11 +112,11 @@ $string['noassessmentsdone'] = 'No Assessments Done'; $string['nosubmission'] = 'No Submission'; $string['nosubmissionsavailableforassessment'] = 'No Submissions available for assessment'; $string['notavailable'] = 'Not Available'; -$string['noteonassessmentelements'] = 'Note that grading is broken down into a number of \'Assessment Elements\'.
                            - This makes the grading easier and more consistent. As teacher you must add these
                            - Elements before making the assignment available to students. This is done by
                            - clicking on the assignment in the course, if no elements are present you will be asked
                            - to add them. You can change the number of elements using the Edit Assignment screen,
                            +$string['noteonassessmentelements'] = 'Note that grading is broken down into a number of \'Assessment Elements\'.
                            + This makes the grading easier and more consistent. As teacher you must add these
                            + Elements before making the assignment available to students. This is done by
                            + clicking on the assignment in the course, if no elements are present you will be asked
                            + to add them. You can change the number of elements using the Edit Assignment screen,
                            the elements themselves can be amended from the "Managing Assessment" screen. '; $string['notgraded'] = 'Not Graded'; $string['notitlegiven'] = 'No Title Given'; @@ -218,7 +218,7 @@ $string['verypoor'] = 'Very Poor'; $string['view'] = 'View'; $string['viewassessmentofteacher'] = 'View Assessment of $a'; $string['viewotherassessments'] = 'View other Assessments'; -$string['warningonamendingelements'] = 'WARNING: There are submitted assessments.
                            Do NOT change the number +$string['warningonamendingelements'] = 'WARNING: There are submitted assessments.
                            Do NOT change the number of elements, the scale types or the element weights.'; $string['weight'] = 'Weight'; $string['weightederrorcount'] = 'Weighted Error Count: $a'; diff --git a/lang/hu/activitynames.php b/lang/hu/activitynames.php deleted file mode 100644 index 9fc33bc4c36..00000000000 --- a/lang/hu/activitynames.php +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/lang/hu/admin.php b/lang/hu/admin.php deleted file mode 100644 index 3d529858cc8..00000000000 --- a/lang/hu/admin.php +++ /dev/null @@ -1,123 +0,0 @@ -tok.u-szeged.hu .u-szeged.hu
                            '; -$string['configallowunenroll'] = 'Ha a beállítása \'Igen\', a tanulók bármikor kiíratkozhatnak a kurzusokból. Egyéb esetben viszont nem, és a folyamatot kizárólag a tanár és az adminisztrátor szabályozza.'; -$string['configallowuserblockhiding'] = 'A felhasználók az egész portálon elrejthetik/megjelenthetik az oldalsó blokkokat? Ez Javascript és sütik használatával emlékezik az egyes összecsukható blokkok állapotára, és csak a felhasználó saját megjelenítésére van hatással.'; -$string['configallowuserthemes'] = 'Ennek bekapcsolásakor a felhasználók beállíthatják saját témáikat. A felhasználótémák felülírják a portáltémákat (de a kurzustémákat nem)'; -$string['configallusersaresitestudents'] = 'A portál címoldalán szereplõ tevékenységekhez MINDEN felhasználó tanulónak tekintendõ? Ha válasza \"Igen\", akkor minden jóváhagyott felhasználó tanulóként részt vehet ezen tevékenységekben. Ha válasza \"Nem\", akkor csak a legalább egy kurzusban már részt vevõ felhasználók kapcsolódhatnak be a címoldalon szereplõ tevékenységekbe. A címoldalon szereplõ tevékenységeket illetõen csak az adminisztrátorok és a külön kijelölt tanárok vehetnek részt tanári minõségben.'; -$string['configautologinguests'] = 'A látogatók automatikusan vendégként jelentkezzenek-e be, ha egy kurzusba vendégjoggal lépnek be?'; -$string['configcachetext'] = 'Nagyobb portálokon vagy szövegszûrõt használó portálokon ez a beállítás ugyancsak felgyorsíthatja az eseményeket. A szövegek másolata az itt megadott ideig feldolgozott formában megõrzõdik. Ennek az értéknek túl kicsire állítása valamelyest lassíthatja a programot, túl nagyra állítva viszont a szövegek frissítése (például új hivatkozásokkal) tarthat.'; -$string['configclamactlikevirus'] = 'Állományok vírusosként való kezelése'; -$string['configclamdonothing'] = 'Állományok rendben lévõként kezelése'; -$string['configclamfailureonupload'] = 'Ha a vírusölõ úgy van beállítva, hogy ellenõrizze a feltöltött állományokat, de rosszul van konfigurálva vagy valamilyen ismeretlen okból nem fut le, mi legyen a teendõ? Ha a beállítás Állományok vírusosként való kezelése, akkor vagy karanténbe kerülnek, vagy a rendszer törli õket. Ha a beállítás Állományok rendben lévõként kezelése, akkor az állományok szokásos módon a célkönyvtárba kerülnek. Mindenesetre az adminisztrátorok figyelmeztetést kapnak arról, hogy a vírusölõ nem mûködött. Ha a beállítás Állományok vírusosként való kezelése, a vírusölõ pedig valamilyen okból nem fut le (rendszerint azért, mert rossz útvonalat adott meg hozzá), akkor MINDEN feltöltött állomány vagy karanténbe kerül, vagy a rendszer törli õket. Ezzel a beállítással legyen óvatos!'; -$string['configcountry'] = 'Ha itt egy ország van megadva, akkor az új felhasználók esetén alaphelyzetben ez az ország lesz a kiválasztott ország. A választás kikényszerítéséhez hagyja ezt a helyet üresen.'; -$string['configdbsessions'] = 'Bekapcsolásakor ez a beállítás a pillanatnyi eseményekrõl az adatokat az adatbázisban tárolja. Ez különösen nagy vagy forgalmas portálok, illetve összekapcsolt szerveren mûködõ portálok esetén hasznos. A legtöbb portál esetén ez kikapcsolva hagyható, helyette a szerver lemezét használjuk. Ne feledjük, hogy a beállítás módosítása esetén megtörténik minden bejelentkezett felhasználó (Önt is beleértve) kijelentkezése.'; -$string['configdebug'] = 'Bekapcsolt állapotban a PHP hibajelentése bõvebb lesz, azaz több figyelmeztetést nyomtat ki. Ez csak a fejlesztõknek hasznos.'; -$string['configdeleteunconfirmed'] = 'Ha az e-mail hitelesítéssel mûködik, ez lesz az az idõ, amely alatt a felhasználók viszontválaszát a rendszer elfogadja. Ezen idõszak leteltével a régi meg nem erõsített felhasználói azonosítókat törli a rendszer.'; -$string['configdenyemailaddresses'] = 'Ha nem kíván konkrét doménekrõl e-mailt fogadni, ugyanúgy sorolja fel õket itt. Minden egyéb domént a rendszer el fog fogadni. Pl. hotmail.com yahoo.co.uk'; -$string['configdigestmailtime'] = 'Azok, akik összesítve kérik az e-mailek kézbesítését, ezt naponta fogják megkapni. Ezzel állítható be, hogy a napi e-mail elküldése hány órakor történjék (az adott óra utáni elsõ cron fogja elküldeni).'; -$string['configdisplayloginfailures'] = 'Ez jelzi adott felhasználók számára a korábbi sikertelen bejelentkezéseket.'; -$string['configenablerssfeeds'] = 'Ezzel kapcsolható be a portál RSS-könyvjelzõje. A változások megjelenítéséhez az egyes modulokban is be kell kapcsolni az RSS-könyvjelzõt - lásd a Modulbeállítások pontot az Adminisztrátori konfiguráció alatt.'; -$string['configenablerssfeedsdisabled'] = ' Nem elérhetõ, mert az RSS-könyvjelzõ az egész portálon ki van kapcsolva. Bekapcsolásukhoz térjen át az Adminisztrátori konfiguráció alatt a Változók beállítása pontra.'; -$string['configerrorlevel'] = 'Válassza ki, hány PHP-figyelmeztetés jelenjen meg. A Normál kiválasztása rendszerint a legjobb megoldás.'; -$string['configextendedusernamechars'] = 'Ezt bekapcsolva a tanulók bármilyen karaktert használhatnak felhasználónevükben (ez nincs befolyással adott nevükre!). Az alapbeállítás \"hamis\", mely szerint a felhasználónév csak betûket és számokat tartalmazhat'; -$string['configfilteruploadedfiles'] = 'Ezen beállítás esetén a Moodle szûrõivel feldolgoz minden feltöltött HTML- és szöveges állományt, mielõtt megjelenítené õket.'; -$string['configforcelogin'] = 'A portál címoldalát és a kurzuslistákat (de nem a kurzusokat) bárki megtekintheti anélkül, hogy bejelentkezne a portálra. Ha azt szeretné, hogy MINDENEKELÕTT a portálra látogatók bejelentkezzenek, ezt a beállítást kell bekapcsolni.'; -$string['configforceloginforprofiles'] = 'Ezzel a beállítással érhetõ el, hogy a bejelentkezõknek ne vendégként, hanem valódi felhasználónévvel kelljen belépni, mielõtt megtekinthetik a felhasználói profilt tartalmazó oldalt. Alaphelyzetben ez kikapcsolt (\"hamis\") állapotban van, hogy a leendõ tanulók tájékozódhassanak az egyes kurzusok tanárairól. Ez azt is jelenti, hogy a keresõgépek is láthatják õket.'; -$string['configframename'] = 'Ha a Moodle-t keretben helyezi el, itt adja meg a keret nevét. Ellenkezõ esetben ennek \'_top\' értéket kell adni.'; -$string['configfullnamedisplay'] = 'Itt adható meg a teljesen megjelenõ nevek száma. Az egynyelvû portálok esetén a legmegfelelõbb beállítás az alapértelmezett \"Utónév + Családi név\", de dönthet úgy, hogy a családi nevek egyáltalán ne jelenjenek meg, vagy dönthet errõl az adott nyelvi csomag alapján is (egyes nyelvekben ettõl eltérõ az elrendezés).'; -$string['configgdversion'] = 'Itt kell megadni a telepített GD változatát. A rendszer az alapértékként megadott változatot észlelte. Ne módosítsa, ha nem teljesen biztos annak következményében!'; -$string['confightmleditor'] = 'Itt dönthet a beépített HTML-szerkesztõ használatának engedélyezésérõl. Engedélyezése esetén is csak akkor jelenik meg, ha a felhasználó ezzel kompatibilis böngészõt használ. A felhasználók eltekinthetnek a használatától.'; -$string['configidnumber'] = 'Ezzel az opcióval adható meg, hogy (a) a felhasználóktól kell-e egyáltalán azonosítószámot kérni, (b) a felhasználóktól kér a rendszer azonosítószámot, de üresen hagyhatják, illetve (c) a felhasználóktól a rendszer azonosítószámot kér, és õk ezt nem hagyhatják üresen. Ha meg van adva, a felhasználói azonosítószám megjelenik profiljukban.'; -$string['configintro'] = 'Ezen az oldalon adhatók meg olyan beállítási változók, amelyekkel a Moodle megfelelõen mûködhet az adott szerveren. Nem szükséges a beállítással sokat veszõdni, az alapveállítások rendszerint megfelelnek, emellett bármikor vissza lehet térni erre az oldalra és módosítani lehet a beállításokon.'; -$string['configintroadmin'] = 'Ezen az oldalon kell megadni a fõ adminisztrátort, aki ezt követõen az egész portál fölött rendelkezik majd. Ügyeljen arra, hogy a felhasználónév és a jelszó biztonságos, az e-mail cím pedig valóságos legyen. Késõbb további adminisztrátorokat adhat meg.'; -$string['configintrosite'] = 'Ezen az oldalon állíthatja be a címoldalt és az új portál nevét. Késõbb bármikor visszatérhet ide és módosíthatja a beállításokat a honlap \'Portál beállításai\' pontról.'; -$string['configlang'] = 'Válasszon egy alapértelmezett nyelvet a teljes portál számára. A felhasználók ezt a beállítást a késõbbiekben felülírhatják.'; -$string['configlangdir'] = 'A legtöbb nyelv balról jobbra ír, de némelyek, például az arab és a héber írás, jobbról halad balra.'; -$string['configlanglist'] = 'Ha ezt üresen hagyja, a felhasználók a Moodle adott telepítésébõl elérhetõ bármely nyelvet választhatják. A nyelvi menüt lerövidítheti, ha vesszõvel elválasztva itt felsorolja a kívánt nyelvek kódjait. Például: en,es_es,fr,it'; -$string['configlangmenu'] = 'Itt adja meg, hogy megjelenjen-e az általános nyelvi menü a honlapon, a bejelentkezési oldalon stb. Ez nem korlátozza a felhasználókat abban, hogy a nekik megfelelõ nyelvet saját profiljukban beállítsák.'; -$string['configlocale'] = 'Válasszon egy egész portálra érvényes nyelvterületet - ez befolyásolja a dátumok formáját és nyelvét. Ehhez a nyelvterületre vonatkozó adatoknak már telepítve kell lenni az adott operációs rendszerben. (pl. en_US vagy es_ES). Ha nem választani, hagyja üresen.'; -$string['configloginhttps'] = 'Ennek bekapcsolása esetén a Moodle csak a bejelentkezési oldalon használ biztonságos https-csatlakozást (így biztonságos bejelentkezést), ezt követõen visszatér a gyorsabb normál http-s URL használatára. VIGYÁZAT: ennek a beállításához a https-t külön be KELL állítani a webszerveren - ellenkezõ esetben KIREKESZTHETJÜK MAGUNKAT SAJÁT PORTÁLUNKRÓL!'; -$string['configloglifetime'] = 'Itt adható meg a felhasználói aktivitás naplózásának megõrzési ideje. Az ennél régebbi naplókat a rendszer automatikusan törli. Érdemes a naplókat a lehetõ leghosszabb ideig megõrizni, mert szükség lehet rájuk. Ha viszont túlságosan nagy a szerver forgalma és gondok merülnek föl a teljesítménnyel, akkor csökkenthejük a naplóõrzés idõtartamát.'; -$string['configlongtimenosee'] = 'Ha a tanulók hosszú ideig nem jelentkeznek be, a rendszer automatikusan kiíratkoztatja õket a rendszerbõl. Ezzel a paraméterrel adhatjuk meg ezt az idõkorlátot.'; -$string['configmaxbytes'] = 'Itt adható meg a teljes portálra vonatkozóan a feltöltött állományok maximális száma. Ezt a beállítást a PHP upload_max_filesize beállítása és az Apache LimitRequestBody beállítása határolja be. Ugyanakkor a maxbytes a kurzusszinten vagy a modulszinten megadható méreteket korlátozza.'; -$string['configmaxeditingtime'] = 'Ez adja meg azt az idõt, amely alatt még lehet fórumüzeneteket, naplóvisszajelzéseket stb. újraszerkeszteni. Rendszerint egy 30 perces idõtartam megfelelõnek mondható.'; -$string['configmessaging'] = 'Bekapcsolandó-e a portál felhasználói közötti üzenetküldõ rendszer?'; -$string['confignoreplyaddress'] = 'E-maileket esetenként egy felhasználó nevében továbbít a rendszer (pl. fórumüzenetek). Az itt megadott e-mail cím jelenik meg mint \"Feladó\" azon esetekben, amikor a címzettek nem válaszolhatnak közvetlenül a felhasználónak (például amikor a felhasználó úgy dönt, hogy címét nem hozza nyilvánosságra).'; -$string['confignotifyloginfailures'] = 'A bejelentkezési hibák rögzítése után e-mail értesítések küldhetõk. Ki láthatja ezeket az értesítéseket?'; -$string['confignotifyloginthreshold'] = 'Ha a sikertelen bejelentkezésekrõl szóló értesítés be van kapcsolva, egy felhasználótól vagy egy IP-címrõl jövõ hányadik sikertelen bejelentkezési próbálkozás után kell értesítést adni?'; -$string['configopentogoogle'] = 'Ezen beállítás bekapcsolásakor a Google a portálra beléphet mint vendég. Emellett a portálra a Google keresésén keresztül eljutók automatikusan vendégként jelentkeznek be. Ne feledjük, hogy ez csak azon kurzusokhoz biztosít követhetõ hozzáférést, amelyek engedélyezik a vendégek bekapcsolódását.'; -$string['configpathtoclam'] = 'Útvonal az AV vírusölõhöz. Feltehetõleg egy /usr/bin/clamscan vagy /usr/bin/clamdscan jellegû útvonal. Erre az AV vírusölõ mûködéséhez van szükség.'; -$string['configproxyhost'] = 'Ha ennek a szervernek proxyszámítógépet (például tûzfal) kell használni az Internet eléréséhez, akkor a proxygazdagép nevét és portszámát itt kell megadni. Ellenkezõ esetben hagyjuk üresen.'; -$string['configquarantinedir'] = 'Ha azt szeretnénk, hogy az AV vírusölõ a fertõzött állományokat karanténkönyvtárba helyezze, azt itt adjuk meg. A könyvtárnak a webszerver számára írhatónak kell lenni. Ha ezt üresen hagyjuk, illetve olyan könyvtárat adunk meg, amely nem létezik vagy nem írható, akkor a rendszer törölni fogja a fertõzött állományokat. Lezáró perjelet ne használjunk.'; -$string['configrunclamonupload'] = 'Lefusson az AV vírusölõ állományok feltöltésekor? Ahhoz, hogy ez mûködjék, a pathtoclam útvonalnak helyesnek kell lennie. (Az AV ingyenes vírusölõ, amely a http://www.clamav.net/ címrõl letölthetõ.)'; -$string['configsectioninterface'] = 'Interfész'; -$string['configsectionmail'] = 'Levelezés'; -$string['configsectionmaintenance'] = 'Karbantartás'; -$string['configsectionmisc'] = 'Egyéb'; -$string['configsectionoperatingsystem'] = 'Operációs rendszer'; -$string['configsectionpermissions'] = 'Engedélyek'; -$string['configsectionsecurity'] = 'Biztonság'; -$string['configsectionuser'] = 'Felhasználó'; -$string['configsecureforms'] = 'A Moodle további biztonsági szintet használhat internetes ûrlapok fogadásakor. Ennek bekapcsolásakor a böngészõ HTTP_REFERER változóját ellenõrzi az adott ûrlap címe szempontjából. Igen ritka esetekben ez gondot okozhat, ha a felhasználó olyan beállítású tûzfalat (pl. Zonealarm) használ, amely a HTTP_REFERER változót kiiktatja az internetes forgalomból. Ennek jele, ha az ûrlap \'lefagy\'. Ha felhasználóinak gondja támad (például) a bejelentkezési oldallal, megfontolható ennek a beállításnak a kikapcsolása, jóllehet, ez a durvább jelszó elleni támadásokkal szemben védtelenül hagyhatja a rendszert. Ha bizonytalan, hagyja ezt a paramétert \'Igen\' beállításban.'; -$string['configsessioncookie'] = 'Ez a beállítás szabja meg azt a sütinevet, amelyet a Moodle-események használni fognak. Megadása opcionális és csak annyiban van értelme, hogy a sütik nem keverednek össze, ha ugyanazon a portálon a Moodle egynél több példányban fut.'; -$string['configsessiontimeout'] = 'Ha a portálra bejelentkezett személyek sokáig tétlenek (oldalak töltése nélkül), a rendszer automatikusan kijelentkezteti õket (eseményük befejezõdik). Ez a változó szabja meg ezt az idõtartamot.'; -$string['configshowblocksonmodpages'] = 'Egyes tevékenységmodulok támogatják oldalaikon a blokkok használatát. Bekapcsolása esetén a tanárok az oldalakon oldalsó blokkokat használhatnak, ellenkezõ esetben az interfész nem jeleníti meg a blokkokat.'; -$string['configshowsiteparticipantslist'] = 'Az oldalhoz tartozó összes tanuló és tanár neve szereplni fog az oldalhoz tartozó résztvevõk felsorolásában. Ki tekintheti meg az oldalhoz tartozó résztvevõk felsorolását?'; -$string['configsitepolicy'] = 'Ha a portállal kapcsolatosan olyan feltételeket alakítunk ki, amelyet a portál használata eleõtt minden felhasználónak meg kell ismerni és el kell fogadni, úgy annak URL-címét itt kell megadni; ellenkezõ esetben hagyjuk ezt a mezõt üresen. Az URL bárhova mutathat - például a portál egyik állományára: http://portalnev/file.php/1/feltetel.HTML'; -$string['configslasharguments'] = 'Az állományok (képek, feltöltések stb.) olyan kódon keresztül állnak rendelkezésre, amely \'perjeles argumentumokat\' használ (itt a második opció). Ezzel a módszerrel az állományokat könnyebben betölthetjük a webböngészõbe, proxyszerverbe stb. Sajnos némelyik PHP-szerverrel ez a módszer nem használható, ezért ha gond támad a feltöltött állományok vagy képek (például felhasználók képei) megtekintésével, állítsuk be ezt a változót az elsõ opcióra.'; -$string['configsmtphosts'] = 'Adjuk meg egy vagy több olyan helyi SMTP-szerver teljes nevét, amelyet a Moodle levélküldésre használhat (pl. \'mail.a.com\' vagy \'mail.a.com;mail.b.com\'). Ha üresen hagyjuk, a Moodle levélküldésre a PHP alapbeállítás szerinti módzserét fogja használni.'; -$string['configsmtpuser'] = 'Ha fentebb beállítottunk egy SMTP-szervert és a szervernek hitelesítésre van szüksége, a felhasználónevet és a jelszót adjuk meg itt.'; -$string['configteacherassignteachers'] = 'A \'sima\'tanárok hozzárendelhetnek-e más tanárokat az általuk tanított kurzusokhoz? Ha \'Nem\', akkor csakis a kurzuskészítõk és az adminisztrátorok jelölhetnek ki tanárokat.'; -$string['configthemelist'] = 'Ha ez üres, bármely érvényes téma használható. Ha a témamenüt rövidíteni kívánja, itt a nevekbõl megadhat egy vesszõvel elválasztott felsorolást. Például: szabványos,sárgásfehér'; -$string['configtimezone'] = 'Itt állíthatjuk be az alapértelmezett idõzónát. Ez az egyetlen ALAPÉRTELMEZETT idõzóna a dátumok megjelenítésére - minden felhasználó felülírhatja ezt a beállítást a saját profiljában. A \"Szerveridõ\" beállításakor a Moodle a szerver operációs rendszerének a beállítását fogja használni, a felhasználói profilban megadott \"Szerveridõ\" viszont a felhasználó számára írja elõ az idõ megjelenítéséhez ezt az alapbeállítást.'; -$string['configunzip'] = 'Itt adjuk meg a kicsomagoló program helyét (csak Unix esetén, opcionális). Ha meg van adva, a rendszer ezt a programot fogja használni a tömörített állományok szerverre való kicsomagolására. Ha ez kitöltetlen marad, akkor a Moodle belsõ eljárásait fogja használni.'; -$string['configvariables'] = 'Változók'; -$string['configwarning'] = 'Ezen beállítások módosításakor óvatosságra van szükség - a szokatlan értékek gondot okozhatnak.'; -$string['configzip'] = 'Itt adjuk meg a tömörítõ program helyét (csak Unix esetén, opcionális). Ha meg van adva, a rendszer ezt a programot fogja használni tömörített állományok szerveren való létrehozására. Ha ez kitöltetlen marad, akkor a Moodle belsõ eljárásait fogja használni.'; -$string['confirmation'] = 'Confirmation'; -$string['cronwarning'] = 'A cron.php karbantartó kód legalább 24 órája nem futott le.
                            A telepítési dokumentációból megtudható, hogyan automatizálható ez a folyamat.'; -$string['edithelpdocs'] = 'Súgóállományok szerkesztése'; -$string['editstrings'] = 'Szövegsorok szerkesztése'; -$string['filteruploadedfiles'] = 'Feltöltött fájlok szûrése'; -$string['helpadminseesall'] = 'Az adminisztrátorok minden naptáreseményt látnak, vagy csak a rájuk vonatkozókat?'; -$string['helpcalendarsettings'] = 'A Moodle különféle, naptárral és dátummal/idõvel kapcsolatos dolgainak beállítása '; -$string['helpforcetimezone'] = 'A felhasználók számára lehetõvé tehetjük, hogy egyenként válasszák ki a saját idõzónájukat, vagy dönthetünk úgy, hogy mindenkinek egyetlen idõzóna álljon rendelkezésére.'; -$string['helpmanagetimezones'] = 'Az adott portál idõzónájának a beállításait kézi úton adhatjuk meg, szerkeszthetjük és törölhetjük, vagy pedig rábízhatjuk a Moodle-ra, hogy automatikusan frissítsen és letöltsön új beállításokat a moodle.org-ról.'; -$string['helpsitemaintenance'] = 'Frissítésekhez és egyéb tennivalókhoz'; -$string['helpstartofweek'] = 'Melyik nap kezdje a naptárban a hetet?'; -$string['helpupcominglookahead'] = 'Alaphelyzetben a naptár hány nappal elõre keressen közelgõ eseményeket?'; -$string['helpupcomingmaxevents'] = '(Maximum) hány közelgõ eseményt lássanak a felhasználók alaphelyzetben?'; -$string['helpweekenddays'] = 'A hét mely napjait kezelje a rendszer eltérõ színben megjelenített \"hétköznapként\"?'; -$string['nodstpresetsexist'] = 'A DST-támogatás ki van kapcsolva minden felhasználó számára, mert nincsenek megadva elõre beállított DST-k. Az alábbi gombokkal meghatározhat néhány elõre beállított értéket.'; -$string['optionalmaintenancemessage'] = 'Opcionális karbantartási üzenet'; -$string['sitemaintenance'] = 'A portálon karbantartás folyik, jelenleg nem elérhetõ'; -$string['sitemaintenancemode'] = 'Karbantartási üzemmód'; -$string['sitemaintenanceoff'] = 'A karbantartási üzemmódot kikapcsoltuk, a portál ismét szokásos módon üzemel'; -$string['sitemaintenanceon'] = 'Portálja jelenleg karbantartási üzemmódban van(a portálra csak adminisztrátorok jelentkezhetnek be).'; -$string['sitemaintenancewarning'] = 'Portálja jelenleg karbantartási üzemmódban van(csak adminisztrátorok jelentkezhetnek be). Szokásos üzemmódba való visszatéréshez kapcsolja ki a karbantartási üzemmódot.'; -$string['tabselectedtofront'] = 'Tabulátoros táblázatokban a kiválasztott elemet tartalmazó sor elölre legyen áthelyezve'; -$string['therewereerrors'] = 'Adataiban hiba volt'; -$string['timezoneforced'] = 'Ezt a portál adminisztrátora követeli meg'; -$string['timezoneisforcedto'] = 'Minden felhasználó kényszerítése '; -$string['timezonenotforced'] = 'A felhasználók kiválaszthatják saját idõzónájukat'; -$string['updatetimezones'] = 'Beállítások automatikus frissítése'; -$string['upgradelogs'] = 'Az összes funkció mûködéséhez minden régi naplóállományt frissíteni kell. További tájékoztatás'; -$string['upgradelogsinfo'] = 'A naplóállományok tárolásában nemrégiben változásokra került sor. Ha a régebbi naplóállományokat tevékenységek szerint kívánja megtekinteni, akkor a régi naplóállományokat frissítenie kell. Ez az adott portáltól függõen sok idõt (akár órákat) vehet igénybe és meglehetõsen megterhelheti a nagyobb portálok adatbázisait. Ha nekilát a folyamatnak, hagynia kell, hogy befejezõdjék (oly módon, hogy a böngészõ ablakát nyitva hagyja). A naplóállományok frissítése közben a portál mások számára minden gond nélkül üzemel.

                            Most kívánja frissíteni a naplóállományait?'; -$string['upgradesure'] = 'Moodle-állományai módosultak, szerverét automatikusan erre a verzióra fogja frissíteni: -

                            $a

                            -

                            Ha így tesz, nem fog tudni visszalépni.

                            -

                            Ezt a szervert biztosan erre a verzióra kívánja frissíteni?

                            '; -$string['upgradinglogs'] = 'Naplóállományok frissítése'; - -?> diff --git a/lang/hu/algebra.php b/lang/hu/algebra.php deleted file mode 100644 index e24939f11d3..00000000000 --- a/lang/hu/algebra.php +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/lang/hu/appointment.php b/lang/hu/appointment.php deleted file mode 100644 index a1ad063a4e8..00000000000 --- a/lang/hu/appointment.php +++ /dev/null @@ -1,45 +0,0 @@ - diff --git a/lang/hu/assignment.php b/lang/hu/assignment.php index 55460c10ae6..84cf7513c0a 100644 --- a/lang/hu/assignment.php +++ b/lang/hu/assignment.php @@ -1,58 +1,46 @@ teacher véleményezte a \'$a->assignment\' feladatot. A vélemény a feladathoz csatolva megtekinthetõ itt: $a->url'; -$string['assignmentmailhtml'] = '$a->teacher véleményezte a \'$a->assignment\' feladatot.

                            -A vélemény a feladathoz csatolva megtekinthetõ itt:url\">feladat.'; -$string['assignmentname'] = 'Feladat neve'; -$string['assignmenttype'] = 'Feladat típusa'; -$string['configmaxbytes'] = 'Az adott portálon az összes feladat alapbeállítás szerinti maximális mérete (a kurzustól és egyéb helyi beállításoktól függõen)'; -$string['description'] = 'Leírás'; -$string['duedate'] = 'Határidõ'; -$string['duedateno'] = 'Nincs határidõ'; -$string['early'] = '$a korai'; -$string['emailteachermail'] = '$a->username frissítette a(z) \'$a->assignment\' feladathoz leadott munkáját - -Itt érhetõ el: - -$a->url'; -$string['emailteachermailhtml'] = '$a->username frissítette \'$a->assignment\' feladathoz leeadott munkáját

                            -Megtalálható url\">ezen a hálószemen.'; -$string['emailteachers'] = 'Tanárok figyelmeztetése e-mailben'; -$string['existingfiledeleted'] = 'Meglévõ fájl törölve: $a'; -$string['failedupdatefeedback'] = 'A leadott munka véleményezésének a frissítése $a számára nem sikerült'; -$string['feedback'] = 'Visszajelzés'; -$string['feedbackupdated'] = 'A leadott munka visszajelzése frissítve $a számára'; -$string['late'] = '$a kései'; -$string['maximumgrade'] = 'Maximális pontszám'; -$string['maximumsize'] = 'Maximális méret'; -$string['modulename'] = 'Feladat'; -$string['modulenameplural'] = 'Feladatok'; -$string['newsubmissions'] = 'Feladatok leadva'; -$string['noassignments'] = 'Még nincsenek feladatok'; -$string['notgradedyet'] = 'Még nincs pontozva'; -$string['notsubmittedyet'] = 'Még nincs leadva'; -$string['overwritewarning'] = 'Vigyázat: az újrafeltöltés FELÜLÍRJA a most leadott munkát'; -$string['saveallfeedback'] = 'Minden visszajelzésem mentése'; -$string['submissionfeedback'] = 'Leadott munka véleményezése'; -$string['submissions'] = 'Leadott munkák'; -$string['submitassignment'] = 'Ezzel az ûrlappal küldje be feladatát'; -$string['submitted'] = 'Leadva'; -$string['typeoffline'] = 'Offline tevékenység'; -$string['typeuploadsingle'] = 'Egyetlen fájl feltöltése'; -$string['uploadbadname'] = 'A fájl neve rossz karaktereket tartalmaz és nem tölthetõ fel'; -$string['uploadedfiles'] = 'feltöltött fájlok'; -$string['uploaderror'] = 'A fájl szerverre mentése közben hiba történt'; -$string['uploadfailnoupdate'] = 'A feltöltés rendben, de nem lehet frissíteni a leadott munkát!'; -$string['uploadfiletoobig'] = 'A fájl túl nagy (a maximum $a bájt)'; -$string['uploadnofilefound'] = 'Nincs meg a fájl - biztosan kiválasztott egyet feltöltésre?'; -$string['uploadnotregistered'] = 'A(z) \'$a\' feltöltése sikerült, de a leadott munka nincs regisztrálva!'; -$string['uploadsuccess'] = 'A(z) \'$a\' feltöltése sikerült'; -$string['viewfeedback'] = 'A feladat pontjainak és a visszajelzéseknek a megtekintése'; -$string['viewsubmissions'] = 'A(z) $a beküldött feladat megtekintése'; -$string['yoursubmission'] = 'Leadott munkája'; +$string['allowresubmit'] = "Újraküldés engedélyezése"; +$string['assignmentdetails'] = "Feladat részletei"; +$string['assignmentmail'] = "\$a->teacher véleményezte a '\$a->assignment' feladatot. A vélemény a feladathoz csatolva megtekinthetõ a következõ helyen: \$a->url"; +$string['assignmentmailhtml'] = "\$a->teacher véleményezte a '\$a->assignment' feladatot

                            +A vélemény a feladathoz csatolva megtekinthetõ a következõ helyen:url\\\">feladat."; +$string['assignmentname'] = "Feladat neve"; +$string['assignmenttype'] = "Feladat típusa"; +$string['description'] = "Leírás"; +$string['duedate'] = "Határidõ"; +$string['early'] = "\$a korán"; +$string['failedupdatefeedback'] = "A beküldés visszajelzésének frissítése \$a számára nem sikerült"; +$string['feedback'] = "Visszajelzés"; +$string['feedbackupdated'] = "A beküldések visszajelzésének frissitése \$a számára"; +$string['late'] = "\$a késõn"; +$string['maximumgrade'] = "Legjobb osztályzat"; +$string['maximumsize'] = "Maximális méret"; +$string['modulename'] = "Feladat"; +$string['modulenameplural'] = "Feladatok"; +$string['newsubmissions'] = "Beküldött feladatok"; +$string['notgradedyet'] = "Még nincs értékelve"; +$string['notsubmittedyet'] = "Még nincs elküldve"; +$string['overwritewarning'] = "Vigyázat: az újra feltöltés FELÜLÍRJA az elõzõt"; +$string['saveallfeedback'] = "Minden visszajelzés mentése"; +$string['submissionfeedback'] = "Beküldött visszajelzés"; +$string['submissions'] = "Beküldések"; +$string['submitassignment'] = "Ezzel az ûrlappal küldje be feladatát"; +$string['submitted'] = "Beküldve"; +$string['typeoffline'] = "Off-line tevékenység"; +$string['typeuploadsingle'] = "Egy fájl feltöltése"; +$string['uploadbadname'] = "A fájl neve rossz karaktereket tartalmaz és nem tölthetõ fel"; +$string['uploadedfiles'] = "feltöltött fájlok"; +$string['uploaderror'] = "A fájl mentése közben hiba történt"; +$string['uploadfailnoupdate'] = "A feltöltés OK, de nem képes frissíteni az elõzõleg beküldöttet!"; +$string['uploadfiletoobig'] = "A fájl túl nagy (a maximum \$a bájt)"; +$string['uploadnofilefound'] = "Nincs meg a fájl - biztosan kiválasztott egyet feltöltésre?"; +$string['uploadnotregistered'] = "'\$a' feltöltõdött de a küldés nincs regisztrálva!"; +$string['uploadsuccess'] = "'\$a' feltöltése sikerült"; +$string['viewfeedback'] = "A feladatok jegyeinek és visszajelzéseinek megtekintése"; +$string['viewsubmissions'] = "\$a beküldött feladat megtekintése"; +$string['yoursubmission'] = "Beküldés"; ?> diff --git a/lang/hu/attendance.php b/lang/hu/attendance.php deleted file mode 100644 index 361be7457fd..00000000000 --- a/lang/hu/attendance.php +++ /dev/null @@ -1,75 +0,0 @@ - diff --git a/lang/hu/auth.php b/lang/hu/auth.php index d62baf12adf..9d38a2fdbc9 100644 --- a/lang/hu/auth.php +++ b/lang/hu/auth.php @@ -1,121 +1,65 @@ Ha például a CAS-szerver a host.domaine.fr/CAS/-ra válaszol, akkor
                            cas_baseuri = CAS/'; -$string['auth_cas_create_user'] = 'Kapcsolja be, ha CAS által hitelesített felhasználókat kíván beszúrni a Moodle adatbázisába. Ha nem, akkor csak a Moodle adatbázisában már szereplõ felhasználók jelentkezhetnek be.'; -$string['auth_cas_enabled'] = 'Kapcsolja be, ha a CAS általi hitelesítést használni kívánja.'; -$string['auth_cas_hostname'] = 'A CAS-szerver gazdaneve
                            pl.: host.domain.fr'; -$string['auth_cas_invalidcaslogin'] = 'Bejelentkezése nem sikerült, nem kapott rá felhatalmazást.'; -$string['auth_cas_language'] = 'Kiválasztott nyelv'; -$string['auth_cas_logincas'] = 'Biztonságos hozzáférésû csatlakozás'; -$string['auth_cas_port'] = 'A CAS-szerver portja'; -$string['auth_cas_server_settings'] = 'A CAS-szerver beállítása'; -$string['auth_cas_text'] = 'Biztonságos csatlakozás'; -$string['auth_cas_version'] = 'A CAS verziója'; -$string['auth_casdescription'] = 'Ez a módszer egy CAS-szervert (Központi Hitelesítõ Szolgálatot) alkalmaz ahhoz hogy a felhasználókat egyszeri bejelentkezési (SSO) környezetben hitelesítse. Használhat egyszerû LDAP-hitelesítést is. Ha a CAS szerint a felhasználónév és a jelszó érvényes, akkor a Moodle létrehoz egy új felhasználót az adatbáziásban, szükség esetén a felhasználói jellemzõket az LDAP-ból veszi. A következõ bejelentkezéskor már csak a felhasználónév és a jelszó ellenõrzésére kerül sor.'; -$string['auth_castitle'] = 'CAS-szerver használata (SSO)'; -$string['auth_common_settings'] = 'Általános beállítások'; -$string['auth_data_mapping'] = 'Adatok illesztése'; -$string['auth_dbdescription'] = 'Ez a módszer egy külsõ adatbázistáblát használ a felhasználó nevének és jelszavának ellenõrzésére. Új felhasználó esetén az egyéb mezõkben tárolt információk is átmásolhatók a Moodle-ba.'; -$string['auth_dbextrafields'] = 'Ezek választható mezõk. Választhatja azt is, hogy a Moodle a mezõk egy részét az itt megadott külsõ adatbázismezõkbõl elõre feltöltse.
                            Ha a mezõket üresen hagyja, a rendszer az alapbeállításokat fogja használni.
                            Mindkét esetben a felhasználó belépés után változtathatja ezeket a mezõket.'; -$string['auth_dbfieldpass'] = 'A jelszót tartalmazó mezõ neve'; -$string['auth_dbfielduser'] = 'A felhasználónevet tartalmazó mezõ neve'; -$string['auth_dbhost'] = 'Az adatbázisszervert futtató számítógép'; -$string['auth_dbname'] = 'Az adatbázis neve'; -$string['auth_dbpass'] = 'A fenti felhasználónévnek megfelelõ jelszó'; -$string['auth_dbpasstype'] = 'Adja meg a jelszómezõ formátumát. Az MD5 titkosítás hasznos olyan elterjedt webalkalmazások esetén, mint a PostNuke'; -$string['auth_dbtable'] = 'A tábla neve az adatbázisban'; -$string['auth_dbtitle'] = 'Külsõ adatbázis használata'; -$string['auth_dbtype'] = 'Az adatbázis típusával kapcsolatos részletek (lásd a ADOdb dokumentációt.)'; -$string['auth_dbuser'] = 'Az adatbázishoz olvasási joggal rendelkezõ felhasználónév'; -$string['auth_editlock'] = 'Érték zárolása'; -$string['auth_editlock_expl'] = '

                            Érték zárolása: Bekapcsolt állapotban megakadályozza a Moodle felhasználóit és adminisztrátorait az adott mezõ közvetlen szerkesztésében. Akkor használja ezt az opciót, ha az adatokat a külsõ hitelesítési rendszerben tartja karban.

                            '; -$string['auth_emaildescription'] = 'Az e-mail visszaigazolása az alapértelmezett hitelesítési eljárás. Amikor a felhasználó felíratkozik és új felhasználónevet, ill. jelszót választ, egy visszaigazoló e-mailt kap a megadott e-mail címre. Az e-mail egy biztonságos ugrópontot tartalmaz arra az oldalra, ahol a felhasználó visszaigazolhatja a felíratkozást. Ezután a bejelentkezések csak a nevet és a jelszót ellenõrzik a Moodle adatbázisa alapján.'; -$string['auth_emailtitle'] = 'Hitelesítés e-mail alapján'; -$string['auth_fccreators'] = 'Azon csoportok felsorolása, amelyek tagjai új kurzusokat hozhatnak létre. A csoportokat \';\'-vel válassza el. A nevek írása a FirstClass szerveren megadottal azonos módon történjék. A rendszer különbséget tesz kis- és nagybetûk között.'; -$string['auth_fcdescription'] = 'A rendszer FirstClass szerverrel ellenõrzi, hogy a felhasználónév és jelszó érvényes-e.'; -$string['auth_fcfppport'] = 'Szerverport (leggyakrabban 3333)'; -$string['auth_fchost'] = 'A FirstClass szerver címe. IP-számot vagy DNS-nevet használjon.'; -$string['auth_fcpasswd'] = 'Jelszó a fenti felhasználóhoz.'; -$string['auth_fctitle'] = 'Használjon FirstClass szervert'; -$string['auth_fcuserid'] = '\'Segédadminisztrátor\' joggal rendelkezõ felhasználó FirstClass azonosítója beállítva.'; -$string['auth_imapdescription'] = 'Ez az eljárás egy IMAP-szervert használ annak ellenõrzésére, hogy a megadott felhasználónév és jelszó érvényes-e.'; -$string['auth_imaphost'] = 'Az IMAP-szerver címe. Az IP-címet használja, ne a DNS-nevet.'; -$string['auth_imapport'] = 'Az IMAP-szerver portszáma. Ez általában 143 vagy 993.'; -$string['auth_imaptitle'] = 'Használjon IMAP-szervert.'; -$string['auth_imaptype'] = 'Az IMAP-szerver típusa. Az IMAP-szervereknek különbözõ típusú hitelesítése és felülhitelesítése lehet.'; -$string['auth_ldap_bind_dn'] = 'Ha bind-user-t kíván felhasználók keresésére használni, állítsa be itt. Pl.:\'cn=ldapuser,ou=public,o=org\''; -$string['auth_ldap_bind_pw'] = 'A bind-user jelszava'; -$string['auth_ldap_bind_settings'] = 'A \'bind\' beállításai'; -$string['auth_ldap_contexts'] = 'Kontextusok listája, melyekben a felhasználók találhatók. A különbözõ kontextusokat válassza el pontosvesszõvel. Pl.: \'ou=users,o=org; ou=others,o=org\''; -$string['auth_ldap_create_context'] = 'Ha engedélyezte felhasználók létrehozását e-maillel való visszaigazolással, adja meg itt a kontextust, amelyben a felhasználók létrejönnek. Ennek - biztonsági okokból - különböznie kell más felhasználókétól. Ezt nem kell hozzáadni az ldap_context változóhoz, a szoftver automatikusan ebben a kontextusban keresi a felhasználókat.'; -$string['auth_ldap_creators'] = 'Azon csoportok listája, melyek tagjai létrehozhatnak kurzusokat. A csoportokat válassza el pontosvesszõvel egymástól. Általában például: \'cn=teachers,ou=staff,o=myorg\''; -$string['auth_ldap_expiration_desc'] = 'Válassza a Nem opciót, ha ki akarja kapcsolni az lejárt jelszó LDAP-ellenõrzését, hogy a passwordexpiration jelszólejárati idõ kiolvasása közvetlenül az LDAP-ból olvassa ki.'; -$string['auth_ldap_expiration_warning_desc'] = 'A jelszó lejáratára figyelmeztetés hány nappal korábban történjék.'; -$string['auth_ldap_expireattr_desc'] = 'Opcionális: felülírja azt az ldap-attribútumot, amely a jelszólejárati idõt tárolja'; -$string['auth_ldap_graceattr_desc'] = 'Opcionális: felülírja a gracelogin attribútumot'; -$string['auth_ldap_gracelogins_desc'] = 'LDAP-gracelogin támogatásának bekapcsolása. A jelszó lejárata után a felhasználó bejelentkezhet, amíg a gracelogin számlálója 0. Bekapcsolásakor a beállítás megjeleníti a lejárt bejelentkezési üzenetet, ha a jelszó lejárt.'; -$string['auth_ldap_host_url'] = 'LDAP-gazdagép megadása URL-szerûen, pl.\'ldap://ldap.myorg.com/\' vagy \'ldaps://ldap.myorg.com/\' formában'; -$string['auth_ldap_memberattribute'] = 'Adja meg a felhasználók adott csoporthoz tartozást jellemzõ attribútumát. Ez általában a \'member\' [tag]'; -$string['auth_ldap_objectclass'] = 'Felhasználók elnevezésének/keresésének a szûrõje. Általában objectClass=posixAccount értékre állítandó. Alapbeállítása objectClass=*, amivel az LDAP-bõl minden objektumot visszaad.'; -$string['auth_ldap_opt_deref'] = 'Meghatározza, hogy kereséskor a neveket hogyan kezelje a rendszer. A következõ értékek közül választhat: \"Nem\" (LDAP_DEREF_NEVER) vagy \"Igen\" (LDAP_DEREF_ALWAYS)'; -$string['auth_ldap_passwdexpire_settings'] = 'LDAP-jelszó lejáratának beállításai.'; -$string['auth_ldap_search_sub'] = 'Írja be az <> 0 értékeket, ha az alkontextusokban is keresni kíván felhasználót.'; -$string['auth_ldap_server_settings'] = 'LDAP-szerver beállításai'; -$string['auth_ldap_update_userinfo'] = 'Felhasználói adatok (keresztnév, vezetéknév, cím...) frissítése LDAP-ból a Moodle-ba. Az információk szerkezetét lásd az /auth/ldap/attr_mappings.php állományban.'; -$string['auth_ldap_user_attribute'] = 'Attribútum a felhasználók elnevezéséhez/kereséséhez. Általában \'cn\'.'; -$string['auth_ldap_user_settings'] = 'Felhasználók keresési beállításai'; -$string['auth_ldap_user_type'] = 'Válassza ki, hogy legyen a felhasználók eltárolva az LDAP-ben. Ugyancsak ezzel állítható be a bejelentkezések lejáratának, a kései bejelentkezéseknek és a felhasználók létrehozásának a mikéntje.'; -$string['auth_ldap_version'] = 'A szerver által használt LDAP-protokoll verziója.'; -$string['auth_ldapdescription'] = 'Ez a módszer lehetõséget ad a jogosultság külsõ LDAP-szerverrel történõ ellenõrzésére. -Ha a megadott név és jelszó érvényes, a Moodle egy új felhasználót hoz létre az adatbázisában. Ez a modul képes kiolvasni a felhasználó adatait az LDAP-ból, és kitölti a kötelezõ mezõket a Moodle-ban. Következõ bejelentkezéskor már csak a felhasználónév és a jelszó ellenõrzésére kerül sor.'; -$string['auth_ldapextrafields'] = 'Ezek a mezõk nem kötelezõek. Néhány felhasználói adatmezõt elõre kitölthet a Moodle az itt megadott LDAP-mezõk adataival.
                            Ha ezeket a mezõket üresen hagyja, semmilyen adat nem kerül át az LDAP-ból és a Moodle az alapértelmezett értékeket fogja használni.
                            Mindkét esetben bejelentkezés után a felhasználónak lehetõsége lesz a mezõk értékeit módosítani.'; -$string['auth_ldaptitle'] = 'LDAP-szerver használata'; -$string['auth_manualdescription'] = 'Ez a módszer nem teszi lehetõvé felhasználók számára azonosítók létrehozását. Minden felhasználói azonosítót az adminisztrátornak kell kézzel létrehozni.'; -$string['auth_manualtitle'] = 'Csak kézzel létrehozott felhasználói azonosítók'; -$string['auth_multiplehosts'] = 'Több gazdas VAGY cím adható meg (pl. host1.com;host2.com;host3.com) vagy (xxx.xxx.xxx.xxx;xxx.xxx.xxx.xxx)'; -$string['auth_nntpdescription'] = 'Ez a módszer egy NNTP-szerverrel ellenõrzi a felhasználónév és a jelszó érvényességét.'; -$string['auth_nntphost'] = 'Az NNTP-szerver címe. Az IP-címet használja, ne a DNS-nevet.'; -$string['auth_nntpport'] = 'Szerverport (általában a 119-es)'; -$string['auth_nntptitle'] = 'NNTP-szerver használata'; -$string['auth_nonedescription'] = 'A felhasználók azonnal felíratkozhatnak és érvényes felhasználói azonosítót hozhatnak létre, külsõ jogosultság-ellenõrzés és e-mailen történõ megerõsítés nélkül. Óvatosan használja ezt a lehetõséget - gondoljon a lehetséges biztonsági és adminisztrációs problémákra.'; -$string['auth_nonetitle'] = 'Nincs hitelesítés'; -$string['auth_pamdescription'] = 'Ez a módszer a szerveren lévõ eredeti felhasználónevek elérésére PAM-ot használ. A modul használatához telepítenie kell a PHP4 PAM Authentication-t.'; -$string['auth_pamtitle'] = 'PAM (bedugható hitelesítési modulok)'; -$string['auth_passwordisexpired'] = 'Jelszava lejárt. Kívánja most módosítani?'; -$string['auth_passwordwillexpire'] = 'Jelszava $a napon belül lejár. Kívánja most módosítani?'; -$string['auth_pop3description'] = 'Ez a módszer egy POP3-szerverrel ellenõrzi a felhasználónév és jelszó érvényességét.'; -$string['auth_pop3host'] = 'A POP3-szerver címe. Az IP-címet használja, ne a DNS-nevet.'; -$string['auth_pop3mailbox'] = 'Az elérendõ levelesláda neve (általában INBOX).'; -$string['auth_pop3port'] = 'Szerverport (általában a 110-es)'; -$string['auth_pop3title'] = 'POP3-szerver használata'; -$string['auth_pop3type'] = 'Szervertípus. Ha a szerver tanúsítványos biztonsági modellt használ, válassza a pop3cert-et.'; -$string['auth_shibbolethdescription'] = 'Ezzel a módszerrel meglévõ Shibboleth-szerverhez kapcsolódva ellenõrizhet és létrehozhat felhasználói azonosítókat.'; -$string['auth_shibbolethtitle'] = 'Shibboleth'; -$string['auth_updatelocal'] = 'Helyi adatok frissítése'; -$string['auth_updatelocal_expl'] = '

                            Helyi adatok frissítése: Bekapcsolása esetén a mezõ (külsõ hitelesítésbõl) mindannyiszor frissítve lesz, ahányszor a felhasználó bejelentkezik, vagy a felhasználók szinkronizálására kerül sor. A helyileg frissítendõ mezõket zárolni kell.

                            '; -$string['auth_updateremote'] = 'Külsõ adatok frissítése'; -$string['auth_updateremote_expl'] = '

                            Külsõ adatok frissítése: Bekapcsolása esetén a külsõ hitelesítés mindannyiszor frissítve lesz, ahányszor a felhasználói rekord frissíése megtörténik. Szerkesztés engedélyezéséhez a mezõk zárolását fel kell oldani.

                            '; -$string['auth_updateremote_ldap'] = '

                            Megjegyzés: Külsõ LDAP-adatok frissítéséhez egy bind-user-hez be kell állítani a binddn és a bindpw értékét az összes felhasználói rekordra vonatkozó szerkesztési privilégiummal. Jelenleg nem õrzi meg a többértékû attribútumokat és frissítéskor a fölös értékeket eltávolítja.

                            '; -$string['auth_user_create'] = 'Felhasználó létrehozásának engedélyezése'; -$string['auth_user_creation'] = 'Új (névtelen) felhasználók is létrehozhatnak új felhasználói azonosítót a külsõ hitelesítési forráson, e-mailes megerõsítéssel. Ha ezt engedélyezi, ne feledje megadni a felhasználó létrehozásához a modul-specifikus adatokat.'; -$string['auth_usernameexists'] = 'A választott felhasználónév már létezik. Válasszon másikat.'; -$string['authenticationoptions'] = 'Felhasználó-azonosítási lehetõségek'; -$string['authinstructions'] = 'Itt tájékoztathatja a felhasználókat arról, hogy milyen felhasználóneveket és jelszavakat használhatnak. Az itt megadott szöveg megjelenik a bejelentkezõ oldalon. Ha üresen hagyja, nem jelenik meg semmilyen tájékoztatás.'; -$string['changepassword'] = 'Jelszó URL-jének módosítása'; -$string['changepasswordhelp'] = 'Itt megadhat egy helyet, ahol a felhasználók visszakereshetik vagy megváltoztathatják felhasználói nevüket/jelszavukat, ha elfelejtették. Ez gombként jelenik meg a bejelentkezõ oldalon és az adott felhasználó oldalán. Ha üresen hagyja, nem jelenik meg ilyen gomb.'; -$string['chooseauthmethod'] = 'Válasszon hitelesítési eljárást:'; -$string['forcechangepassword'] = 'Jelszómódosítás kényszerítése'; -$string['forcechangepassword_help'] = 'Felhasználói jelszó módosításának kikényszerítése a Moodle-ba való következõ bejelentkezéskor.'; -$string['forcechangepasswordfirst_help'] = 'Felhasználói jelszó módosításának kikényszerítése a Moodle-ba való elsõ bejelentkezéskor.'; -$string['guestloginbutton'] = 'Vendég belépése gomb'; -$string['instructions'] = 'Tájékoztatás'; -$string['md5'] = 'MD5-titkosítás'; -$string['plaintext'] = 'Egyszerû szöveg'; -$string['showguestlogin'] = 'Megjelenítheti vagy elrejtheti a vendégként való belépésre szolgáló gombot a bejelentkezõ oldalon.'; -$string['stdchangepassword'] = 'Szokásos jelszómódosítási oldal használata'; -$string['stdchangepassword_expl'] = 'Ha a külsõ hitelesítési rendszer lehetõvé teszi a jelszómódosítást a Moodle-on keresztül, akkor ezt állítsa Igen-re. Felülírja a \'Jelszó URL-jének módosítása\' beállítást.'; -$string['stdchangepassword_explldap'] = 'MEGJEGYZÉS: Az LDAP-ot távoli LDAP-szerver esetén célszerû SSL kódoláson (ldaps://) keresztül használni.'; +$string['auth_dbdescription'] = "Ez a módszer egy külsõ adatbázistáblát használ a felhasználó nevének és jelszavának ellenõrzésére. Új felhasználó esetén az egyéb mezõkben tárolt információk is átkerülnek a Moodle-ba."; +$string['auth_dbextrafields'] = "Ezek választható mezõk. Választhatja azt is, hogy a Moodle a mezõk egy részét egy itt megadott külsõ adatbázisból elõre feltöltse.

                            A mezõket üresen hagyva az alapértelmezett értékek lesznek használva.

                            Bármely esetben a felhsználó belépés után változtathatja ezeket a mezõket."; +$string['auth_dbfieldpass'] = "A jelszót tartalmazó mezõ neve"; +$string['auth_dbfielduser'] = "A felhasználónevet tartalmazó mezõ neve"; +$string['auth_dbhost'] = "Az adatbázisszervert futtató számítógép."; +$string['auth_dbname'] = "Az adatbázis neve"; +$string['auth_dbpass'] = "Jelszó összehasonlitás a fenti felhasználónév alapján"; +$string['auth_dbpasstype'] = "A jelszó mezõ formátumát határozza meg. Az MD5 titkosítás hasznos olyan népszerû web-alkalmazások esetén, mint pl. a PostNuke"; +$string['auth_dbtable'] = "A tábla neve az adatbázisban"; +$string['auth_dbtitle'] = "Külsõ adatbázis használata"; +$string['auth_dbtype'] = "Az adatbázis típusa (Lásd a ADOdb dokumentációt a részletekért)"; +$string['auth_dbuser'] = "Az adatbázishoz olvasási joggal rendelkezõ felhasználónév"; +$string['auth_emaildescription'] = "Az Email visszaigazolás az alapértelmezett hitelesítési eljárás. Amikor a felhasználó feliratkozik, és új felhasználónevet ill. jelszót választ, egy visszaigazoló email lesz elküldve a megadott email címre. Az email egy biztonságos linket tartalmaz arra az oldalra, ahol a felhasználó igazolhatja a feliratkozást. A következõ bejelentkezések csak a nevet és a jelszót ellenõrzik a Moodle adatbázisból."; +$string['auth_emailtitle'] = "Email-alapú hitelesités"; +$string['auth_imapdescription'] = "Ez az eljárás egy IMAP servert használ annak ellenõrzésére, hogy a megadott felhasználónév és jelszó érvényes-e."; +$string['auth_imaphost'] = "Az IMAP szerver címe. Használjon IP címet, ne DNS nevet."; +$string['auth_imapport'] = "Az IMAP szerver portszáma. Ez általában 143 vagy 993."; +$string['auth_imaptitle'] = "IMAP szerver használata"; +$string['auth_imaptype'] = "Az IMAP szerver típusa. Az IMAP szervereknek különbözõ típusú hitelesítése és dialektusa lehet."; +$string['auth_ldap_bind_dn'] = "Ha bind-usert kíván felhasználók keresésére használni, állítsa be itt. Pl.:'cn=ldapuser,ou=public,o=org'"; +$string['auth_ldap_bind_pw'] = "A bind-user jelszava"; +$string['auth_ldap_contexts'] = "Kontextusok listája, melyekbne a felhasználó található. Különbözõ kontextusokat ';' -vel válasszon el. Pl.: 'ou=users,o=org; ou=others,o=org'"; +$string['auth_ldap_create_context'] = "Ha engedélyezte felhasználók létrehozását e-mail visszaigazolással, adja meg itt a kontextust, amelyben a felhasználók létrejönnek. Ennek - biztonsági okokból - különböznie kell más felhasználókétól. Ezt nem kell hozzáadni az ldap_context változóhoz, a szoftver automatikusan ebben a kontextusban keresi a felhasználókat."; +$string['auth_ldap_creators'] = "Azon csoportok listája, melyek tagjai létrehozhatnak kurzusokat. A csoportokat ';' választja el. Általában valami ilyesmi: 'cn=teachers,ou=staff,o=myorg'"; +$string['auth_ldap_host_url'] = "LDAP gép megadása URL-szerûen pl.'ldap://ldap.myorg.com/' or 'ldaps://ldap.myorg.com/'"; +$string['auth_ldap_memberattribute'] = "Adja meg a felhasználók csoporthoz tartozást jellemzõ attribútumát. Általában 'member'"; +$string['auth_ldap_search_sub'] = "Írja be az <> 0 értékeket ha az alkontxtusokban is keresni kíván felhasználót."; +$string['auth_ldap_update_userinfo'] = "Felhasználói adatok (keresztnév, vezetéknév, cím..) frissítése LDAP-ból a Moodle-ba. Lásd a /auth/ldap/attr_mappings.php -t fájlt mapping információért"; +$string['auth_ldap_user_attribute'] = "Attribútum felhasználók elnevezéséhez/kereséséhez. Általában 'cn'."; +$string['auth_ldapdescription'] = "Ez a módszer lehetõséget ad egy külsõ LDAP szerverrel történõ jogosultság-ellenõrzésre. +Ha a megadott név és jelszó érvényes, a Moodle egy új felhasználó bejegyzést hoz létre a saját adatbázisában. Ez a modul képes kiolvasni a felhasználó adatait az LDAP-ból, és kitölti a kötelezõ mezõket a Moodle-ban. Következõ bejelentkezéskor csak a felhasználónév és a jelszó lesz ellenõrizve."; +$string['auth_ldapextrafields'] = "Ezek a mezõk nem kötelezõek. Néhány Moodle felhasználói adatmezõt elõre kitölthet az itt megadott LDAP mezõk adataival.

                            Ha ezeket a mezõket üresen hagyja, semmilyen adat nem kerül át az LDAP-ból és a Moodle alapértelmezett értékek lesznek használva.

                            Mindkét esetben a afelhasználónak lehetõsége lesz változtatni a mezõk értékén bejelentkezés után."; +$string['auth_ldaptitle'] = "LDAP szerver használata"; +$string['auth_manualdescription'] = "Ez a módzser minden lehetõséget elvesz a felhasználóktól saját account létrehozására. Minden account-ot manuálisan hoz létre az admin felhasználó."; +$string['auth_manualtitle'] = "Csak amnuális account-ok"; +$string['auth_nntpdescription'] = "Ez a módszer egy NNTP szerverrel ellenõrzi a felhasználónév és jelszó érvényeeségét."; +$string['auth_nntphost'] = "Az NNTP szerver címe. Használjon IP címet, ne DNS nevet."; +$string['auth_nntpport'] = "Szerver port (általában 119)"; +$string['auth_nntptitle'] = "NNTP szerver használata"; +$string['auth_nonedescription'] = "A felhasználók azonnal feliratkozhatnak és egy érvényes hozzáférést hozhatnak létre, külsõ jogosultság-ellenõrzés és emailen történõ megerõsítés nélkül. Óvatosan használja ezt a lehetõséget - gondoljon a lehetséges biztonsági és adminisztrációs problémákra."; +$string['auth_nonetitle'] = "nincs hitelesités"; +$string['auth_pop3description'] = "Ez a módszer egy POP3 szerverrel ellenõrzi a felhasználónév és jelszó érvényeeségét."; +$string['auth_pop3host'] = "Az POP3 szerver címe. Használjon IP címet, ne DNS nevet."; +$string['auth_pop3port'] = "Szerver port (általában 110)"; +$string['auth_pop3title'] = "POP3 szerver használata"; +$string['auth_pop3type'] = "Szervertípus. Ha a szerver certifikációs biztonsági modellt használ, válaszsza a pop3cert -t."; +$string['auth_user_create'] = "Felhasználó létrehozás engedélyezése"; +$string['auth_user_creation'] = "Új (anonymus) felhasználó létrehozhat új account-ot a külsõ autentikációs forráson, email megerõsítéssel.Ha ezt engedélyezi, ne feledje megadni a felhasználó létrehozás modul-specifikus tulajdonságait sem ."; +$string['auth_usernameexists'] = "A választott felhasználónév már létezik. Válasszon másikat."; +$string['authenticationoptions'] = "Felhasználó-azonosítási lehetõségek"; +$string['authinstructions'] = "Itt instrukciókat adhat a felhasználók számára, hogy tudják, milyen nevet és jelszavat kell használni. Az itt megadott szöveg megjelenik a bejelentkezõ oldalon. Ha üresen hagyja, nem jelenik meg semmilyen instrukció."; +$string['changepassword'] = "Jelszó URL cseréje"; +$string['changepasswordhelp'] = "Itt megadhat egy helyet, ahol a felhasználók visszakereshetik vagy megváltoztathatják nevüket/jelszavukat ha elfelejtették. Ez gombként jelenik meg a bejelentkezõ oldalon és a felhasználói oldalon. Ha üresen hagyja, nem jelenik meg ilyen gomb."; +$string['chooseauthmethod'] = "Válasszon egy azonosítási eljárást:"; +$string['guestloginbutton'] = "Vendég belépése gomb"; +$string['instructions'] = "Teendõk"; +$string['md5'] = "MD5 titkosítás"; +$string['plaintext'] = "Egyszerû szöveg"; +$string['showguestlogin'] = "Megjelenítheti vagy elrejtheti a vendég belépése gombot a bejelentkezõ oldalon."; ?> diff --git a/lang/hu/block_course_list.php b/lang/hu/block_course_list.php deleted file mode 100644 index 757c25bda4e..00000000000 --- a/lang/hu/block_course_list.php +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/lang/hu/block_course_summary.php b/lang/hu/block_course_summary.php deleted file mode 100644 index 73794584f67..00000000000 --- a/lang/hu/block_course_summary.php +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/lang/hu/block_glossary_random.php b/lang/hu/block_glossary_random.php deleted file mode 100644 index a6db3b9c0ff..00000000000 --- a/lang/hu/block_glossary_random.php +++ /dev/null @@ -1,28 +0,0 @@ -Az utolsó módosított fogalom helyén mindig a legutoljára megváltoztatott fogalom jelenik meg, a Véletlenszerû fogalom mindig találomra választ ki egy új fogalmat. A Következõ fogalom egymás után jeleníti meg a fogalmakat. Ez az utóbbi lehetõség különösen akkor hasznos, amikor sor kerül néhány nap kiválasztására is, így megjelenhet az \"A hét idézete\" vagy a \"Napi ötlet\", melyet mindenki lát.'; -$string['viewglossary'] = 'További idézetek...'; - -?> diff --git a/lang/hu/block_html.php b/lang/hu/block_html.php deleted file mode 100644 index 1ac5e92e657..00000000000 --- a/lang/hu/block_html.php +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/lang/hu/block_online_users.php b/lang/hu/block_online_users.php deleted file mode 100644 index 12d012d7b16..00000000000 --- a/lang/hu/block_online_users.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/lang/hu/block_quiz_results.php b/lang/hu/block_quiz_results.php deleted file mode 100644 index ef6f816b765..00000000000 --- a/lang/hu/block_quiz_results.php +++ /dev/null @@ -1,28 +0,0 @@ - diff --git a/lang/hu/block_rss_client.php b/lang/hu/block_rss_client.php deleted file mode 100644 index e2bbad7cc1a..00000000000 --- a/lang/hu/block_rss_client.php +++ /dev/null @@ -1,39 +0,0 @@ - diff --git a/lang/hu/block_section_links.php b/lang/hu/block_section_links.php deleted file mode 100644 index a65b02a5bb1..00000000000 --- a/lang/hu/block_section_links.php +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/lang/hu/block_social_activities.php b/lang/hu/block_social_activities.php deleted file mode 100644 index 649847a05db..00000000000 --- a/lang/hu/block_social_activities.php +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/lang/hu/calendar.php b/lang/hu/calendar.php deleted file mode 100644 index 6b876206a36..00000000000 --- a/lang/hu/calendar.php +++ /dev/null @@ -1,121 +0,0 @@ -activate_month egyes $a->activate_weekday napján a(z) $a->activate_index tekintetében az idõt tolja el $a->offset perccel $a->direction irányban. Ez a módosítás a(z) $a->deactivate_month hó $a->deactivate_weekday napján $a->deactivate_index -ig tart.'; -$string['dstof'] = 'a(z)'; -$string['dstonthe'] = 'mikor'; -$string['dstpresetactivated'] = 'Bekapcsolás'; -$string['dstpresetadjusttime'] = 'Isõbeállítás'; -$string['dstpresetdeactivated'] = 'Kikapcsolás'; -$string['dstpresetname'] = 'Elõre megadott név '; -$string['durationminutes'] = 'Idõtartam percben'; -$string['durationnone'] = 'Idõtartam nélkül'; -$string['durationuntil'] = 'Meddig'; -$string['editevent'] = 'Esemény szerkesztése'; -$string['errorbeforecoursestart'] = 'Esemény nem adható meg a kurzus kezdete elõtti idõponttal'; -$string['errorinvaliddate'] = 'Érvénytelen dátum'; -$string['errorinvalidminutes'] = 'Egy 1 és 999 közötti számmal adja meg percben az idõtartamot.'; -$string['errorinvalidrepeats'] = 'Egy 1 és 99 közötti számmal adja meg az események számát.'; -$string['errornodescription'] = 'Leírásra van szükség'; -$string['errornoeventname'] = 'Névre van szükség'; -$string['eventdate'] = 'Dátum'; -$string['eventdescription'] = 'Leírás'; -$string['eventduration'] = 'Idõtartam'; -$string['eventendtime'] = 'Befejezési idõpont'; -$string['eventinstanttime'] = 'Idõ'; -$string['eventkind'] = 'Esemény típusa'; -$string['eventname'] = 'Név'; -$string['eventrepeat'] = 'Ismétlések'; -$string['eventsfor'] = '$a esemény'; -$string['eventstarttime'] = 'Kezdési idõpont'; -$string['eventtime'] = 'Idõ'; -$string['eventview'] = 'Esemény részletei'; -$string['expired'] = 'Letelt'; -$string['explain_dstpreset'] = 'A lenyíló menübõl kiválaszthatja a DST-beállításhoz az esetleges területet.'; -$string['explain_dstpresetforced'] = 'A portál adminisztrátora nem engedélyezi, hogy a felhasználók módosítsák ezt az opciót.'; -$string['explain_lookahead'] = 'Itt állíthatja be azon jövõbeni (maximális) napok számát, amennyi elteltével az eseménynek el kell kezdõdnie ahhoz, hogy elkövetkezõ eseményként megjelenhessen. Az ezen idõponton túli események már nem jelennek meg mint elkövetkezõk. Ne feledje, hogy arra nincs garancia, hogy az adott idõtartamon belül kezdõdõ összes esemény meg is jelenik; ha túl sok van belõlük (több, mint a beállított \"Maximális elkövetkezõ esemény\"), akkor a legtávolabbi események nem jelennek meg.'; -$string['explain_maxevents'] = 'Itt állíthatja be a megjeleníthetõ elkövetkezõ események számát. Ha nagy számot ad meg, elõfordulhat, hogy az elkövetkezõ események megjelenítése sok helyet foglal el a képernyõn.'; -$string['explain_persistflt'] = 'Ha be van kapcsolva, a Moodle emlékezni fog az utoljára beállított eseményszûrõkre és bejelentkezésekor automatikusan helyreállítja õket.'; -$string['explain_startwday'] = 'A naptári hetek azon naptól kezdõdõen látszanak majd, amelyet itt beállít.'; -$string['explain_timeformat'] = 'Választhat az idõ 12 órás vagy 24 órás kijelzése közül. Ha az \"alapbeállítást\" választja, akkor annak formája automatikusan attól a nyelvtõl függ majd, amelyet a portálon használ.'; -$string['first'] = 'elsõ'; -$string['fri'] = 'P'; -$string['friday'] = 'Péntek'; -$string['globalevents'] = 'Globális események'; -$string['gotocalendar'] = 'Áttérés a naptárhoz'; -$string['groupevents'] = 'Csoport eseményei'; -$string['hidden'] = 'rejtett'; -$string['last'] = 'utolsó'; -$string['manyevents'] = '$a esemény'; -$string['mon'] = 'H'; -$string['monday'] = 'Hétfõ'; -$string['monthlyview'] = 'Havi nézet'; -$string['newevent'] = 'Új esemény'; -$string['notusingdst'] = 'Nem használ DST-t'; -$string['noupcomingevents'] = 'Nincs elkövetkezõ esemény'; -$string['nth'] = '{$a}st'; -$string['oneevent'] = '1 esemény'; -$string['pref_lookahead'] = 'Elõretekintés az elkövetkezõ eseményekre'; -$string['pref_maxevents'] = 'Elkövetkezõ események maximálisszáma'; -$string['pref_persistflt'] = 'Emlékezés az eseményszûrõkre'; -$string['pref_startwday'] = 'A hét elsõ napja'; -$string['pref_timeformat'] = 'Idõ kijelzési formája'; -$string['preferences'] = 'Preferenciák'; -$string['preferences_available'] = 'Személyes preferenciák'; -$string['repeatnone'] = 'Nincs ismétlés'; -$string['repeatweeksl'] = 'Heti ismétlés, összesen '; -$string['repeatweeksr'] = 'esemény'; -$string['sat'] = 'Szo'; -$string['saturday'] = 'Szombat'; -$string['shown'] = 'megjelenítése'; -$string['spanningevents'] = 'Folyamatban lévõ események'; -$string['sun'] = 'V'; -$string['sunday'] = 'Vasárnap'; -$string['thu'] = 'Cs'; -$string['thursday'] = 'Csütörtök'; -$string['timeformat_12'] = '12 órás (de/du)'; -$string['timeformat_24'] = '24 órás'; -$string['timeforward'] = 'elõre'; -$string['timerewind'] = 'hátra'; -$string['timezonename'] = 'Idõzóna'; -$string['today'] = 'Ma'; -$string['tomorrow'] = 'Holnap'; -$string['tt_deleteevent'] = 'Esemény törlése'; -$string['tt_editevent'] = 'Esemény szerkesztése'; -$string['tt_hidecourse'] = 'Kurzus eseményei látszanak (elrejtéshez kattintson)'; -$string['tt_hideglobal'] = 'Globális események látszanak (elrejtéshez kattintson)'; -$string['tt_hidegroups'] = 'Csoport eseményei látszanak (elrejtéshez kattintson)'; -$string['tt_hideuser'] = 'Felhasználói események látszanak (elrejtéshez kattintson)'; -$string['tt_showcourse'] = 'Kurzus eseményei rejtve vannak (megjelenítéshez kattintson)'; -$string['tt_showglobal'] = 'Globális események rejtve vannak (megjelenítéshez kattintson)'; -$string['tt_showgroups'] = 'Csoport eseményei rejtve vannak (megjelenítéshez kattintson)'; -$string['tt_showuser'] = 'Felhasználói események rejtve vannak (megjelenítéshez kattintson)'; -$string['tue'] = 'K'; -$string['tuesday'] = 'Kedd'; -$string['typecourse'] = 'Kurzus eseményei'; -$string['typegroup'] = 'Csoport eseményei'; -$string['typesite'] = 'Portálhoz tartozó esemény'; -$string['typeuser'] = 'Felhasználói esemény'; -$string['upcomingevents'] = 'Elkövetkezõ események'; -$string['userevents'] = 'Felhasználói események'; -$string['wed'] = 'Sze'; -$string['wednesday'] = 'Szerda'; -$string['yesterday'] = 'Tegnap'; - -?> diff --git a/lang/hu/censor.php b/lang/hu/censor.php deleted file mode 100644 index 93a1b6a9164..00000000000 --- a/lang/hu/censor.php +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/lang/hu/chat.php b/lang/hu/chat.php index 9772f2f6293..7780410d446 100644 --- a/lang/hu/chat.php +++ b/lang/hu/chat.php @@ -1,56 +1,41 @@ soha ne állítsa ezt az értéket alacsonyabbra, mint 2 * chat_refresh_room.'; -$string['configrefreshroom'] = 'Milyen gyakran legyen frissítve a csevegõszoba (másodpercben)? Alacsony értékre állítva a csevegõszoba gyorsabbnak látszik, azonban nagyobb terhelést jelenthet a szervernek, ha egyszerre sokan csevegnek'; -$string['configrefreshuserlist'] = 'Milyen gyakran legyen frissítve a felhasználók listája? (mp-ben)'; -$string['configserverhost'] = 'A szerverdémont tartalmazó számítógép gazdaneve'; -$string['configserverip'] = 'A fenti gazdanévnek megfelelõ IP-cím'; -$string['configservermax'] = 'Csevegõk megengedett max. száma'; -$string['configserverport'] = 'A szerveren a démonnal használandó port'; -$string['currentchats'] = 'Zajló csevegések'; -$string['currentusers'] = 'Aktuális felhasználók'; -$string['deletesession'] = 'Csevegés törlése'; -$string['deletesessionsure'] = 'Biztosan törölni akarja ezt a csevegést?'; -$string['donotusechattime'] = 'Ne jelenjen meg a csevegések ideje'; -$string['enterchat'] = 'Kattintson ide a csevegésbe való bekapcsolódáshoz'; -$string['errornousers'] = 'Nem található felhasználó!'; -$string['explaingeneralconfig'] = 'Ezek a beállítások mindig érvényesek'; -$string['explainmethoddaemon'] = 'Ezek a beállítások csak akkor számítanak, ha a chat_method számára \"Csevegõ szerverdémonnal\"-t választott'; -$string['explainmethodnormal'] = 'Ezek a beállítások csak akkor számítanak, ha a chat_method számára \"Szokásos módszer\"-t választott'; -$string['generalconfig'] = 'Általános beállítás'; -$string['helpchatting'] = 'Csevegés súgója'; -$string['idle'] = 'Nem zajlik csevegés'; -$string['messagebeepseveryone'] = '$a mindenkit csönget!'; -$string['messagebeepsyou'] = '$a most csöngetett Önnek!'; -$string['messageenter'] = '$a most lépett be'; -$string['messageexit'] = '$a most távozott'; -$string['messages'] = 'Üzenetek'; -$string['methoddaemon'] = 'Csevegõ szerverdémon'; -$string['methodnormal'] = 'Szokásos módszer'; -$string['modulename'] = 'Csevegés'; -$string['modulenameplural'] = 'Csevegések'; -$string['neverdeletemessages'] = 'Az üzenetek soha nem törlõdjenek'; -$string['nextsession'] = 'A következõ csevegés'; -$string['noguests'] = 'A csevegésbe vendégek nem kapcsolódhatnak be'; -$string['nomessages'] = 'Még nincs üzenet'; -$string['repeatdaily'] = 'Minden nap ugyanakkor'; -$string['repeatnone'] = 'Nincs ismétlés - csak a megadott idõpont megjelenítése'; -$string['repeattimes'] = 'Csevegések ismétlése'; -$string['repeatweekly'] = 'Minden héten ugyanakkor'; -$string['savemessages'] = 'Korábbi csevegések mentése'; -$string['seesession'] = 'A csevegés megtekintése'; -$string['sessions'] = 'Csevegések'; -$string['strftimemessage'] = '%%H:%%M'; -$string['studentseereports'] = 'Korábbi csevegések megtekintése mindenkinek'; -$string['viewreport'] = 'Korábbi csevegések megtekintése'; +$string['beep'] = "beep"; +$string['chatintro'] = "Bevezetõ szöveg"; +$string['chatname'] = "A chat szoba neve"; +$string['chatreport'] = "Chat session-ök"; +$string['chattime'] = "A következõ chat idõ"; +$string['configoldping'] = "Milyen hosszú idejû \\\"hiányzás\\\" után kell egy felhasználót \\\"kilépett\\\"-nek tekinteni?"; +$string['configrefreshroom'] = "Miyen gyakorisággal legyen frissítve a chat szoba? (in seconds). Alcsony értékre állítva a chat szoba gyorsabbnak látszik, azonban nagyobb terhelést jelenthet s szervernek ha sokan chat-elnek"; +$string['configrefreshuserlist'] = "Milyen gyakorisággal frissüljön a felhasználók listája? (mp-ben)"; +$string['currentchats'] = "Aktív chat session-ök"; +$string['currentusers'] = "Aktuális felhasználók"; +$string['donotusechattime'] = "Ne jelenjen meg chat idõ"; +$string['enterchat'] = "Kattintson ide a chat-be lépéshez"; +$string['errornousers'] = "Nem található felhasználó!"; +$string['helpchatting'] = "Chat súgó"; +$string['idle'] = "Idle"; +$string['messagebeepseveryone'] = "\$a beeps everyone!"; +$string['messagebeepsyou'] = "\$a has just beeped you!"; +$string['messageenter'] = "\$a most lépett be"; +$string['messageexit'] = "\$a most távozott"; +$string['messages'] = "Üzenetek"; +$string['modulename'] = "Chat"; +$string['modulenameplural'] = "Chat-ek"; +$string['neverdeletemessages'] = "Az üzenetek soha nem törlõdnek"; +$string['nextsession'] = "A következõ idõzített session"; +$string['nomessages'] = "Nincs üzenet"; +$string['repeatdaily'] = "MInden nap ugyanakkor"; +$string['repeatnone'] = "Nincs ismétlés - csak a megadott idõpont megjelnítése"; +$string['repeattimes'] = "Session-ök ismétlése"; +$string['repeatweekly'] = "MInden héten ugyanakkor"; +$string['savemessages'] = "Save past sessions"; +$string['seesession'] = "A session megtekintése"; +$string['sessions'] = "Chat session-ök"; +$string['strftimemessage'] = "%%H:%%M"; +$string['studentseereports'] = "Everyone can view past sessions"; +$string['viewreport'] = "View past chat sessions"; ?> diff --git a/lang/hu/choice.php b/lang/hu/choice.php index aecbd4a5675..cd14683ef68 100644 --- a/lang/hu/choice.php +++ b/lang/hu/choice.php @@ -1,37 +1,21 @@ diff --git a/lang/hu/countries.php b/lang/hu/countries.php deleted file mode 100644 index 3324907f4bc..00000000000 --- a/lang/hu/countries.php +++ /dev/null @@ -1,246 +0,0 @@ - diff --git a/lang/hu/dialogue.php b/lang/hu/dialogue.php deleted file mode 100644 index 8ce849830d0..00000000000 --- a/lang/hu/dialogue.php +++ /dev/null @@ -1,71 +0,0 @@ -
                            Biztosan le akarja zárni ezt a párbeszédet?'; -$string['deleteafter'] = 'Lezárt párbeszédek törlése ... elteltével'; -$string['dialogueclosed'] = 'Párbeszéd lezárva'; -$string['dialogueintro'] = 'Párbeszéd bevezetése'; -$string['dialoguemail'] = '$a->userfrom új szöveget küldött az Ön \'$a->dialogue\' témájú párbeszédéhez. - -Ezt megtekintheti az alábbi párbeszédjéhez kapcsolva: - - $a->url'; -$string['dialoguemailhtml'] = '$a->userfrom új szöveget küldött az Ön \'$a->dialogue\' témájú párbeszédéhez.

                            -Ezt megtekintheti ehhez a url\">párbeszédjéhez kapcsolva.'; -$string['dialoguename'] = 'Párbeszéd neve'; -$string['dialogueopened'] = 'Párbeszéd megnyitva a következõ személlyel: $a'; -$string['dialoguewith'] = 'Párbeszéd a következõ személlyel: $a'; -$string['everybody'] = 'Mindenki'; -$string['furtherinformation'] = 'További információk'; -$string['lastentry'] = 'Utolsó szöveg'; -$string['maildefault'] = 'Levelezési alapbeállítás'; -$string['mailnotification'] = 'Értesítés levél érkezésérõl'; -$string['modulename'] = 'Párbeszéd'; -$string['modulenameplural'] = 'Párbeszédek'; -$string['namehascloseddialogue'] = '$a lezárta a párbeszédet'; -$string['newdialogueentries'] = 'Új párbeszédszövegek'; -$string['newentry'] = 'Új szöveg'; -$string['noavailablepeople'] = 'Nincs kivel párbeszédet folytatni.'; -$string['nopersonchosen'] = 'Nem választott személyt'; -$string['nosubject'] = 'Nincs megadva téma'; -$string['notextentered'] = 'Nincs megadva szöveg'; -$string['notstarted'] = 'Még nem kezdte el ezt a párbeszédet'; -$string['notyetseen'] = 'Még nem látták'; -$string['numberofentries'] = 'Szövegek száma'; -$string['numberofentriesadded'] = 'Új szövegek száma: $a'; -$string['of'] = 'ból'; -$string['onwrote'] = '$a-án írta'; -$string['onyouwrote'] = '$a-án Ön írta'; -$string['open'] = 'Megnyitás'; -$string['openadialoguewith'] = 'Párbeszéd megnyitása a következõvel'; -$string['opendialogue'] = 'Párbeszéd megnyitása'; -$string['opendialogueentries'] = 'Párbeszéd szövegeinek megnyitása'; -$string['pane0'] = 'Párbeszéd megnyitása'; -$string['pane1'] = '$a párbeszéd vár választ Öntõl'; -$string['pane1one'] = '1 párbeszéd vár választ Öntõl'; -$string['pane2'] = '$a párbeszéd vár választ a másik személytõl'; -$string['pane2one'] = '1 párbeszéd vár választ a másik személytõl'; -$string['pane3'] = '$a lezárt párbeszéd'; -$string['pane3one'] = '1 lezárt párbeszéd'; -$string['seen'] = 'Megtekintve $a ezelõtt'; -$string['sendmailmessages'] = 'Üzenetek küldése új szövegeimrõl'; -$string['status'] = 'Állapot'; -$string['studenttostudent'] = 'Tanuló és tanuló között'; -$string['subject'] = 'Téma'; -$string['subjectadded'] = 'Téma hozzáadva'; -$string['teachertostudent'] = 'Tanár és tanuló között'; -$string['typefirstentry'] = 'Az elsõ szöveget ide írja be'; -$string['typefollowup'] = 'A többit ide írja'; -$string['typeofdialogue'] = 'Párbeszéd típusa'; -$string['typereply'] = 'A választ ide írja be'; -$string['viewallentries'] = '$a párbeszédszöveg megtekintése'; - -?> diff --git a/lang/hu/editor.php b/lang/hu/editor.php index fc4729c1bd6..5bded924e81 100644 --- a/lang/hu/editor.php +++ b/lang/hu/editor.php @@ -1,124 +1,71 @@ -] gombokkal térhet vissza grafikus módba.'; -$string['texttop'] = 'Szöveg teteje'; -$string['top'] = 'Felülre'; -$string['type'] = 'Típus'; -$string['underline'] = 'Aláhúzás'; -$string['undo'] = 'Visszavonás'; -$string['unorderedlist'] = 'Számozatlan felsorolás'; -$string['upload'] = 'Feltöltés'; -$string['vertical'] = 'Függõleges'; -$string['width'] = 'Szélesség'; -$string['wordclean'] = 'Tisztán HTML-kód'; -$string['zip'] = 'Tömörítés'; +$string['about'] = "Névjegy"; +$string['absbottom'] = "Alulra"; +$string['absmiddle'] = "Középree"; +$string['alignment'] = "Igazítás"; +$string['alternatetext'] = "Alternatív szöveg"; +$string['baseline'] = "Alapvonal"; +$string['bold'] = "Vastag"; +$string['borderthickness'] = "Keret vastagság"; +$string['bottom'] = "Alulra"; +$string['browse'] = "Keresés"; +$string['cancel'] = "Mégse"; +$string['cellpadding'] = "Cellpadding"; +$string['cellspacing'] = "Cellspacing"; +$string['choosechar'] = "Karakter kiválasztása"; +$string['chooseicon'] = "Ikon beillesztése"; +$string['close'] = "Bezárás"; +$string['cols'] = "Oszlopok"; +$string['copy'] = "Másolás"; +$string['createlink'] = "Web hivatkozás beillesztése"; +$string['cut'] = "Kivágás"; +$string['forecolor'] = "Betûszín"; +$string['hilitecolor'] = "Háttérszín"; +$string['horizontal'] = "Vízszintes"; +$string['horizontalrule'] = "Vízszintes vonalzó"; +$string['htmlmode'] = "Átváltás HTML forrásra"; +$string['imageurl'] = "Kép URL"; +$string['indent'] = "Behúzás növelése"; +$string['insertchar'] = "Speciális karakter beillesztése"; +$string['insertimage'] = "Kép beillesztése"; +$string['insertsmile'] = "Smiley beillesztése"; +$string['inserttable'] = "Táblázat beillesztése"; +$string['italic'] = "Dõlt"; +$string['justifycenter'] = "Középre sorkizárt"; +$string['justifyfull'] = "Teljes sorkizárt"; +$string['justifyleft'] = "Balra sorkizárt"; +$string['justifyright'] = "Jobbra sorkizárt"; +$string['layout'] = "Layout"; +$string['left'] = "Balra"; +$string['middle'] = "Középre"; +$string['notset'] = "Nincs megadva"; +$string['ok'] = "OK"; +$string['orderedlist'] = "Rendezett lista"; +$string['outdent'] = "Behúzás csökkentése"; +$string['paste'] = "Beillesztés a vágólapról"; +$string['path'] = "Path"; +$string['percent'] = "Százalék"; +$string['pixels'] = "Pixelek"; +$string['popupeditor'] = "Szerkesztõ nagyítása"; +$string['preview'] = "Nézet"; +$string['redo'] = "Mûvelet ismétlése"; +$string['right'] = "Jobbra"; +$string['rows'] = "Sorok"; +$string['showhelp'] = "Súgó"; +$string['spacing'] = "Sortávolság"; +$string['strikethrough'] = "Áthúzás"; +$string['subscript'] = "Alsó index"; +$string['superscript'] = "Felsõ index"; +$string['textindicator'] = "Aktuális stílus"; +$string['textmode'] = "Jelenleg SZÖVEGES MÓD-ban van. A [<>] gombokkal térhet vissza WYSIWYG MÓD-ba."; +$string['texttop'] = "Texttop"; +$string['top'] = "Felülre"; +$string['underline'] = "Aláhúzás"; +$string['undo'] = "Visszavonás"; +$string['unorderedlist'] = "Rendezetlen lista"; +$string['vertical'] = "Függõleges"; +$string['width'] = "Szélesség"; ?> diff --git a/lang/hu/emailprotect.php b/lang/hu/emailprotect.php deleted file mode 100644 index e5c77bbdcf1..00000000000 --- a/lang/hu/emailprotect.php +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/lang/hu/enrol_database.php b/lang/hu/enrol_database.php deleted file mode 100644 index 37f53079241..00000000000 --- a/lang/hu/enrol_database.php +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/lang/hu/enrol_flatfile.php b/lang/hu/enrol_flatfile.php deleted file mode 100644 index 426d58b0dd2..00000000000 --- a/lang/hu/enrol_flatfile.php +++ /dev/null @@ -1,21 +0,0 @@ - -hozzáad, tanuló, 5, CF101 -hozzáad, tanár, 6, CF101 -hozzáad, tanárszerkeszt, 7, CF101 -töröl, tanuló, 8, CF101 -töröl, tanuló, 17, CF101 -hozzáad, tanuló, 21, CF101, 1091115000, 1091215000 -'; -$string['enrolname'] = 'Egyszerû állomány'; -$string['filelockedmail'] = 'AZ Ön által beíratkozásra használt szöveges állományt ($a) a cron folyamattal nem lehet törölni. Ez olyankor fordul elõ, ha nem megfelelõ engedélyek vannak hozzárendelve. Állítsa be az engedélyeket úgy, hogy a Moodle törölni tudja az állományt, ellenkezõ esetben feldolgozása megismétlõdhet.'; -$string['filelockedmailsubject'] = 'Lényeges hiba: beíratkozási állomány'; -$string['location'] = 'Állomány helye'; -$string['mailadmin'] = 'Adminisztrátor értesítése e-mailben'; -$string['mailusers'] = 'Felhasználók értesítése e-mailben'; - -?> diff --git a/lang/hu/enrol_internal.php b/lang/hu/enrol_internal.php deleted file mode 100644 index 23ad3a46846..00000000000 --- a/lang/hu/enrol_internal.php +++ /dev/null @@ -1,12 +0,0 @@ - -

                          • A tanár vagy az adminisztrátor kézzel beíratja õt a kurzusban lévõ Kurzusadminisztráció menü segítségével.
                          • -
                          • A kurzushoz megadható \"beíratkozási kulcs\" nevû jelszó. Aki ezt a jelszót ismeri, felíratkozhat a kurzusra.
                          • -
                          '; -$string['enrolname'] = 'Belsõ beíratkozás'; - -?> diff --git a/lang/hu/enrol_ldap.php b/lang/hu/enrol_ldap.php deleted file mode 100644 index 81789879bd9..00000000000 --- a/lang/hu/enrol_ldap.php +++ /dev/null @@ -1,46 +0,0 @@ -Beíratkozásait kezelheti egy LDAP-szerver segítségével. Feltételezés szerint az Ön LDAP-fája olyan csoportokat tartalmaz, amelyek kurzusoknak vannak megfeleltetve, az egyes kurzusok/csoportok pedig tagjegyzékkel rendelkeznek a tanulók megfeleltetéséhez.

                          -

                          A kurzusok csoportokként szerepelnek az -LDAP-ben, mindegyik csoport több olyan tagsági mezõvel -(tag vagy tagazonosító) rendelkezik, amely a felhasználó egyedi azoönosítóját tartalmazza.

                          -

                          Az LDAP-beíratkozás használatához felhasználóinak érvényes azonosítószámot tartalmazó mezõkkel kell -rendelkezni. Az LDAP-csoportoknak ezzel az azonosítószámmal kell rendelkezni ahhoz, hogy egy felhasználó felvehesse a kurzust. -Ez általában akkor mûködik megfelelõen, ha már használ LDAP-hitelesítést.

                          -

                          A beíratkozások frissítése a felhasználó bejelentkezésekor történik. A beíratkozások naprakészen tartásához lefuttathat egy programkódot is. Lásd: -enrol/ldap/enrol_ldap_sync.php.

                          -

                          Ezt a kódrészletet beállíthatja úgy, hogy automatikusan új kurzusokat hozzon létre, ha új csoportok jelennek meg az LDAP-ben.

                          '; -$string['enrol_ldap_autocreate'] = 'Automatikusan létrehozhatók kurzusok, ha a Moodle-ban még nem létezõ kurzusra íratkoznak fel.'; -$string['enrol_ldap_autocreation_settings'] = 'Automatikus kurzus-létrehozási beállítások'; -$string['enrol_ldap_bind_dn'] = 'Ha felhasználók kereséséhez a bind-user opciót kívánja használni, adja meg itt. Például: -\'cn=ldapuser,ou=public,o=org\''; -$string['enrol_ldap_bind_pw'] = 'A bind-user jelszava.'; -$string['enrol_ldap_category'] = 'Automatikusan létrehozott kurzusok kategóriája.'; -$string['enrol_ldap_course_fullname'] = 'Opcionális: LDAP-mezõ a teljes név eléréséhez'; -$string['enrol_ldap_course_idnumber'] = 'Egyeztesse az LDAP egyedi azonosítójával, ez általában cn vagy uid. Automatikusan létrehozott kurzusok esetén célszerû az értéket zárolni.'; -$string['enrol_ldap_course_settings'] = 'Beállítások a kurzusbeíratkozáshoz'; -$string['enrol_ldap_course_shortname'] = 'Opcionális: LDAP-mezõ a rövid név eléréséhez'; -$string['enrol_ldap_course_summary'] = 'Opcionális: LDAP-mezõ az összegõ forma eléréséhez'; -$string['enrol_ldap_editlock'] = 'Érték zárolása'; -$string['enrol_ldap_host_url'] = 'Az LDAP-gazdagépet URL-formában adja meg: -\'ldap://ldap.myorg.com/\' vagy \'ldaps://ldap.myorg.com/\''; -$string['enrol_ldap_objectclass'] = 'Kurzusok kjeresésére használt objektumosztály. Általában \'posixGroup\'.'; -$string['enrol_ldap_server_settings'] = 'LDAP-szerver beállításai'; -$string['enrol_ldap_student_contexts'] = 'Azon környezetek felsorolása, ahol a tanulói beíratkozások csoportjai találhatók. A környezeteket válassza el \';\'-vel. Például: -\'ou=kurzusok,o=org; ou=egyebek,o=org\''; -$string['enrol_ldap_student_memberattribute'] = 'Tag jellemzõje, ha a felhasználó egy csoporthoz tartozik (íratkozott be). Általában \'tag\' -vagy \'tagazonosító\'.'; -$string['enrol_ldap_student_settings'] = 'Tanulók beíratkozásának beállításai'; -$string['enrol_ldap_teacher_contexts'] = 'Azon környezetek felsorolása, ahol a tanári beíratkozások csoportjai találhatók. A környezeteket válassza el \';\'-vel. Például: -\'ou=kurzusok,o=org; ou=egyebek,o=org\''; -$string['enrol_ldap_teacher_memberattribute'] = 'Tag jellemzõje, ha a felhasználó egy csoporthoz tartozik (íratkozott be). Általában \'tag\' -vagy \'tagazonosító\'.'; -$string['enrol_ldap_teacher_settings'] = 'Tanári beíratkozások beállításai'; -$string['enrol_ldap_template'] = 'Opcionális: az automatikusan létrehozott kurzusok a sablonkurzusból átámásolhatják beállításaikat.'; -$string['enrol_ldap_updatelocal'] = 'Helyi adatok frissítése'; -$string['enrol_ldap_version'] = 'A szervere által használt LDAP-protokoll verziója'; -$string['enrolname'] = 'LDAP'; - -?> diff --git a/lang/hu/enrol_paypal.php b/lang/hu/enrol_paypal.php deleted file mode 100644 index 4cda00e84f1..00000000000 --- a/lang/hu/enrol_paypal.php +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/lang/hu/error.php b/lang/hu/error.php deleted file mode 100644 index e233cfd7b5a..00000000000 --- a/lang/hu/error.php +++ /dev/null @@ -1,26 +0,0 @@ -modulename\" ($a->moduleversion) modult nem lehetett telepíteni. Ehhez a Moodle újabb változatára van szükség (jelenleg a $a->currentmoodle verziót használja, a $a->requiremoodle változatra van szüksége).'; -$string['notavailable'] = 'Ez jelenleg nem áll rendelkezésre'; -$string['onlyeditown'] = 'Csak saját adatait szerkesztheti.'; -$string['processingstops'] = 'A fledolgozás itt véget ér. A többi adatot a rendszer figyelmen kívül hagyja.'; -$string['restricteduser'] = 'Sajnos a mostani \"$a\" felhasználói azonosítója ezt nem teszi lehetõvé.'; -$string['sessionipnomatch'] = 'Úgy tûnik, IP-száma az utolsó bejelentkezés óta megváltozott. Ez a biztonsági intézkedés megelõzi, hogy bejelentkezése alatt kifürkésszék az Ön azonosítóját. A felhasználók általában nem kaphatnak ilyen üzenetet. Segítségért forduljon a portál adminisztrátorához.'; -$string['unknowncourse'] = 'Ismeretlen \"$a\" nevû kurzus'; -$string['usernotaddederror'] = 'A(z) \"$a\" felhasználó nem lett hozzáadva - ismeretlen hiba'; -$string['usernotaddedregistered'] = 'A(z) \"$a\" felhasználó nem lett hozzáadva - már regisztrálva van'; -$string['usernotavailable'] = 'Ezen felhasználó adatait Ön nem tekintheti meg.'; - -?> diff --git a/lang/hu/exercise.php b/lang/hu/exercise.php deleted file mode 100644 index 9264337983c..00000000000 --- a/lang/hu/exercise.php +++ /dev/null @@ -1,190 +0,0 @@ -Az értékelés alapján esetleg átnézheti a munkáját.
                          Ha így tesz, ne felejtse el az értékelését is felülvizsgálni.
                          Ehhez kattintson az alábbi Újraértékelés [Re-assess] pontra.'; -$string['awaitingassessmentbythe'] = 'Értékelést várok a $a -tól/tõl'; -$string['clearlateflag'] = 'Kései jelzés létrehozása'; -$string['comment'] = 'Megjegyzés'; -$string['comparisonofassessments'] = 'Értékelések összehasonlítása'; -$string['confirmdeletionofthisitem'] = 'Ezen $a törlésének megerõsítése'; -$string['correct'] = 'Helyes'; -$string['count'] = 'Szám'; -$string['criterion'] = 'Kritérium'; -$string['deadline'] = 'Határidõ'; -$string['deadlineis'] = 'A határidõ $a'; -$string['delete'] = 'Törlés'; -$string['deletesubmissionwarning'] = 'Figyelmeztetés: $a értékelés kapcsolódik ehhez a leadott munkához.
                          -Lehetõleg NE törölje ezt a leadott munkát.'; -$string['deleting'] = 'Törlés folyamatban'; -$string['description'] = 'Leírás'; -$string['descriptionofexercise'] = 'Gyakorlatot tartalmazó feladat esetén a(z) $a által végrehajtandó gyakorlat leírása Word-dokumentumba vagy HTML-állományba kerül. Ez az állomány azt megelõzõen töltõdik föl a gyakorlatba, hogy a feladat megnyílna $a számára. A gyakorlathoz készíthetõk változatok is - úgyszintén Word-dokumentum vagy HTML-állomány formájában, és ezeket is feltölthetjük a gyakorlatba, mielõtt a feladat megnyílna $a számára. '; -$string['detailsofassessment'] = 'Értékelés részletei'; -$string['displayoffinalgrades'] = 'Végsõ pontok kijelzése'; -$string['doubleupload'] = 'Figyelmeztetés: ezt a munkát valószínûleg kétszer adták le. Térjen át az adminisztrációs oldalra, ellenõrizze, nem érkezett-e két munka ettõl a felhasználótól egy rövid idõszakon belül. Továbblépés elõtt törölje az egyik munkát.'; -$string['duedate'] = 'Leadási határidõ'; -$string['edit'] = 'Szerkesztés'; -$string['editingassessmentelements'] = 'Értékelési elemek szerkesztése'; -$string['element'] = 'Elem'; -$string['elementweight'] = 'Elem súlya'; -$string['enterpassword'] = 'Jelszó megadása'; -$string['entriessaved'] = 'Mentett tétel'; -$string['errorbanded'] = 'Hibán alapuló'; -$string['excellent'] = 'Kiváló'; -$string['exerciseassessments'] = 'Gyakorlatok értékelései'; -$string['exercisefeedback'] = 'Gyakorlatok visszajelzése'; -$string['exercisesubmissions'] = 'Gyakorlatok leadása'; -$string['fair'] = 'Közepes'; -$string['generalcomment'] = 'Általános megjegyzés'; -$string['good'] = 'Jó'; -$string['gradeassessment'] = 'Értékelés pontozása'; -$string['gradeforassessment'] = 'Pontszám az értékelésre'; -$string['gradeforstudentsassessment'] = 'Pontszám az $a értékelésére'; -$string['gradeforsubmission'] = 'Pontszám a leadott munkára'; -$string['gradetable'] = 'Pontozási táblázat'; -$string['gradinggrade'] = 'Pontozási pont'; -$string['gradingstrategy'] = 'Pontozási stratégia'; -$string['handlingofmultiplesubmissions'] = 'Több leadott munka kezelése'; -$string['hidenamesfromstudents'] = 'Nevek elrejtése a tanulók elõl'; -$string['incorrect'] = 'Helytelen'; -$string['late'] = 'Kései'; -$string['lax'] = 'Laza'; -$string['leaguetable'] = 'Leadott munka ligatáblázata'; -$string['mail1'] = '\'$a\' feladatát értékelte: '; -$string['mail2'] = 'A megjegyzések és a pontszám a gyakorlat \'$a\' feladatánál láthatók '; -$string['mail3'] = 'A gyakorlat feladatánál tekintheti meg'; -$string['mail6'] = 'A(z) \'$a\' feladatára kapott értékelés ellenõrzése megtörtént'; -$string['mail7'] = 'A(z) \'$a\' által tett megjegyzéseket a gyakorlat feladatánál tekintheti meg '; -$string['managingassignment'] = 'Gyakorlat kezelése'; -$string['maximum'] = 'Maximum'; -$string['maximumgradeforstudentassessments'] = 'Tanulói értékelés maximális pontszáma: $a'; -$string['maximumgradeforsubmissions'] = 'Leadott munkák maximális pontszáma: $a'; -$string['maximumsize'] = 'Maximális méret'; -$string['mean'] = 'Átlag'; -$string['minimum'] = 'Minimum'; -$string['modulename'] = 'Gyakorlat'; -$string['modulenameplural'] = 'Gyakorlatok'; -$string['movingtophase'] = 'Áttérés a(z) $a szakaszhoz'; -$string['multiplesubmissions'] = 'Többször leadott munka'; -$string['noexercisedescriptionssubmitted'] = 'Nincsenek leadva gyakorlatleírások'; -$string['nosubmissions'] = 'Nincs leadott munka'; -$string['notassessedyet'] = 'Még nem értékelték'; -$string['notavailable'] = 'Nem áll rendelkezésre'; -$string['noteonassessmentelements'] = 'A pontozás több értékelési elemre bomlik.
                          - Így a pontozás könnyebb és egységesebb. A tanárnak ezeket az elemeket
                          - hozzá kell adni, mielõtt a feladatot a tanulók megkapják. Ehhez
                          - kattintson az adott kurzus feladatára. Ha nincs benne elem, a rendszer megkéri, hogy
                          - adja meg õket. Az elemek számát a Feladat szerkesztése képernyõn módosíthatja,
                          - magukat az elemeket pedig a Feladat kezelése képernyõn változtathatja. '; -$string['noteongradinggrade'] = 'Ez a pont azt fejezi ki, hogy értékelése memnyire egyezik munkájának
                          -$a általi értékelésével. Minél magasabb a pontszám, annál nagyobb az egyezés.'; -$string['noteonstudentassessments'] = '{Tanuló pontszáma / Tanár osztályozó pontszáma}'; -$string['notgraded'] = 'Nincs lepontozva'; -$string['notitlegiven'] = 'Nincs megadva cím'; -$string['numberofassessmentelements'] = 'Egy rubrikán belüli megjegyzések, értékelési elemek, pontozási csoportok, kritériumok vagy kategóriák száma'; -$string['numberofcriterionelements'] = 'A kritérium elemszámának egynél nagyobbnak kell lenni.'; -$string['numberofentries'] = 'Tételek száma'; -$string['numberofentriesinleaguetable'] = 'Bejegyzések száma a ligatáblázatban'; -$string['numberofnegativeresponses'] = 'Negatív válaszok száma'; -$string['onesubmission'] = 'Egy leadott munka'; -$string['optionaladjustment'] = 'Opcionális igazítás'; -$string['overallgrade'] = 'Globális pontszám'; -$string['passwordprotectedexercise'] = 'Jelszóval védett gyakorlat '; -$string['phase'] = 'Szakasz'; -$string['phase1'] = 'Gyakorlat beállítása'; -$string['phase1short'] = 'Beállítás'; -$string['phase2'] = 'Értékelések és leadott munkák engedélyezése $a számára'; -$string['phase2short'] = 'Nyitva'; -$string['phase3'] = 'Globális pontszámok és ligatáblázat megjelenítése'; -$string['phase3short'] = 'Kijelzés'; -$string['pleasegradetheassessment'] = 'Pontozza az $a által leadott munkára adott értékelést'; -$string['pleasemakeyourownassessment'] = 'Végezze el $a munkájának értékelését.
                          Ne feledje, hogy az értékelési ûrlapon kezdetben a tanulói értékelés látszik.
                          Végezzen el minden szükségesnek vélt módosítást, majd kattintson
                          a lap alján lévõ egyik gombra.'; -$string['pleasesubmityourwork'] = 'Ezen ûrlap felhasználásával adja le a munkáját'; -$string['pleaseusethisform'] = 'Töltse ki ezt az ûrlapot, ha
                          végzett az alábbi gyakorlat utasításaival.'; -$string['pleaseviewtheexercise'] = 'A címre kattintva tekintse meg az alábbi gyakorlatot.
                          Kövesse a gyakorlat utasításait.
                          Ha úgy véli, sikerült elvégeznie a gyakorlatot
                          kattintson az Értékel (vagy Újraértékel) pontra az
                          alábbi négyzetben. Ha elkészült ezzel az értékeléssel
                          további utasításokat olvashat arra vonatkozóan, hogy mi történik a következõkben.'; -$string['poor'] = 'Gyenge'; -$string['present'] = 'Jelen'; -$string['reasonforadjustment'] = 'Beállítás oka'; -$string['reassess'] = 'Újraértékel'; -$string['regradestudentassessments'] = 'Tanulói értékelés újraértékelése'; -$string['resubmissionfor'] = 'Újbóli leadás $a részére'; -$string['resubmitnote'] = 'A * azt jelenti, hogy $a újból leadhatja a munkát.
                          Ezt a jelzést bármely leadott munka megkaphatja újraértékelést és az
                          Engedélyezi $a részére az újra leadást gombra kattintást követõen.
                          A tanuló akkor adhatja le újból az anyagot, amikor ez a jelzés bármely leadott munkáján megjelenik.'; -$string['rubric'] = 'Rubrika'; -$string['savedok'] = 'Mentés rendben'; -$string['saveentries'] = 'Tételek mentése'; -$string['savemyassessment'] = 'Értékelésem mentése'; -$string['saveweights'] = 'Súlyok mentése'; -$string['scale10'] = '10-bõl elért pontszám'; -$string['scale100'] = '100-ból elért pontszám'; -$string['scale20'] = '20-ból elért pontszám'; -$string['scalecorrect'] = '2 pontos helyes/helytelen skála'; -$string['scaleexcellent4'] = '4 pontos kiváló/nagyon gyenge skála'; -$string['scaleexcellent5'] = '5 pontos kiváló/nagyon gyenge skála'; -$string['scaleexcellent7'] = '7 pontos kiváló/nagyon gyenge skála'; -$string['scalegood3'] = '3 pontos jó/gyenge skála'; -$string['scalepresent'] = '2 pontos jelen van/hiányzik skála'; -$string['scaleyes'] = '2 pontos igen/nem skála'; -$string['specimenassessmentform'] = 'Értékelõ ûrlap mintája'; -$string['standarddeviation'] = 'Szórás'; -$string['strict'] = 'Szigorú'; -$string['studentallowedtoresubmit'] = '$a számára az újra leadás ENGEDÉLYEZVE'; -$string['studentassessments'] = '$a értékelések'; -$string['studentnotallowed'] = '$a számára az újra leadás NINCS ENGEDÉLYEZVE (vagy nem szükséges)'; -$string['studentsubmissions'] = '$a leadott anyagai'; -$string['studentsubmissionsforassessment'] = '$a értékelésre leadott tanulói anyagai'; -$string['submission'] = 'Leadott munka'; -$string['submissions'] = 'Leadott munkák'; -$string['submissionsnowclosed'] = 'Leadott munkák lezárva - a leadási határidõ letelt'; -$string['submitexercisedescription'] = 'Gyakorlatleírás leadása'; -$string['submitted'] = 'Leadva'; -$string['submittedby'] = 'Leadta: '; -$string['suggestedgrade'] = 'Javasolt pontszám'; -$string['teacherassessment'] = '$a értékelése'; -$string['teacherassessmenttable'] = '$a értékelõ táblázata'; -$string['teacherscomment'] = 'Tanár megjegyzése'; -$string['theexercise'] = 'A gyakorlat'; -$string['theexerciseandthesubmissionby'] = ' $a gyakorlata és leadott munkája'; -$string['thegradeis'] = 'A pontszám $a'; -$string['thereisfeedbackfromthe'] = 'Visszajelzés érkezett $a -tól/tõl'; -$string['thisisaresubmission'] = 'Ezt a munkát $a adta le újból.
                          Itt látható a korábbi leadott munkára adott értékelése.
                          Az új leadott munka megtekintése után módosítsa ezt az értékelést
                          és kattintson az oldal alján lévõ valamelyik gombra.'; -$string['title'] = 'Cím'; -$string['typeofscale'] = 'Skála típusa'; -$string['unassessed'] = '$a nincs értékelve'; -$string['ungradedstudentassessments'] = '$a pontozatlan tanulói értékelései'; -$string['usemaximum'] = 'Maximális érték használata'; -$string['usemean'] = 'Átlagérték használata'; -$string['usepassword'] = 'Jelszó használata'; -$string['verylax'] = 'Igen laza'; -$string['verypoor'] = 'Nagyon gyenge'; -$string['verystrict'] = 'Igen szigorú'; -$string['view'] = 'Megtekintés'; -$string['viewteacherassessment'] = '$a-értékeléssel'; -$string['warningonamendingelements'] = 'FIGYELMEZTETÉS: értékeléseket adtak le.
                          NE változtasson az elemek számán, a skálák típusán vagy az elemek súlyozásán.'; -$string['weightederrorcount'] = 'Súlyozott hibaszám: $a'; -$string['weightforgradingofassessments'] = 'Súly az értékelések pontozásához'; -$string['weightforteacherassessments'] = 'Súly a(z) $a értékeléséhez'; -$string['weights'] = 'Súlyok'; -$string['weightssaved'] = 'Súlyok elmentve'; -$string['weightsusedforoverallgrade'] = 'Globális pontszámhoz használt súlyok'; -$string['wrongpassword'] = 'Rossz a jelszó ehhez a gyakorlathoz'; -$string['yourassessment'] = 'Az Ön értékelése'; -$string['yourfeedbackgoeshere'] = 'Visszajelzése ide kerül'; -$string['yoursubmission'] = 'Az Ön leadott munkája'; - -?> diff --git a/lang/hu/forum.php b/lang/hu/forum.php index ccb3572c93a..44c744fc22f 100644 --- a/lang/hu/forum.php +++ b/lang/hu/forum.php @@ -1,186 +1,130 @@ name - $a->date'; -$string['configcleanreadtime'] = 'A nap azon órája, amely során az olvasási táblázatból a rendszer törli a régi hozzászólásokat.'; -$string['configdisplaymode'] = 'Alapértelmezett megjelenítési mód, ha más nincs megadva'; -$string['configenablerssfeeds'] = 'Ezzel kapcsolható be minden fórum esetén az RSS-frissítés. A fórumok beállításai között a frissítések bekapcsolását továbbra is kézzel kell elvégezni.'; -$string['configlongpost'] = 'Minden ennél hosszabb hozzászólás (a HTML nélkül) hosszúnak tekintendõ'; -$string['configmanydiscussions'] = 'Az oldalankénti megjelenítendõ viták maximális száma'; -$string['configmaxbytes'] = 'A portálon az összes fórumhoz csatolt állomány alapbeállítás szerinti maximális mérete (a kurzuskorlátok és más helyi beállítások függvényében)'; -$string['configoldpostdays'] = 'Ennyi nap elteltével a hozzászólások elolvasottnak tekintendõk.'; -$string['configreplytouser'] = 'Ha egy fórumhozzászólást postáznak, tartalmazza-e a felhasználó e-mail címét, hogy a címzettek személy szerint válaszolhassanak a fórum helyett? Még \'Igen\' beállítás esetén is dönthet úgy a felhasználó, hogy profiljában titokban tartja e-mail címét.'; -$string['configshortpost'] = 'Minden ennél rövidebb hozzászólás (a HTML nélkül) rövidnek tekintendõ'; -$string['configtrackreadposts'] = 'Állítsa \'igen\'-re, ha a felhasználók mindegyikénél figyelni kívánja az olvasást.'; -$string['configusermarksread'] = 'Ha \'igen\', a felhasználónak kézzel kell a hozzászólás elolvasását megadni. Ha \'nem\', a hozzászólás megtekintésekor megkapja az \'elolvasott\' jelölést.'; -$string['couldnotadd'] = 'Ismeretlen hiba miatt a hozzászólást nem lehetett hozzáadni '; -$string['couldnotdeleteratings'] = 'Nem törölhetõ, mások már elvégezték a véleményezést '; -$string['couldnotdeletereplies'] = 'Nem törölhetõ, már válaszoltak rá'; -$string['couldnotupdate'] = 'Ismeretlen hiba miatt a hozzászólást nem lehetett frissíteni'; -$string['delete'] = 'Törlés'; -$string['deleteddiscussion'] = 'A vitatémát töröltük'; -$string['deletedpost'] = 'A hozzászólást töröltük'; -$string['deletesure'] = 'Biztosan törölni akarja a hozzászólást ?'; -$string['digestmailheader'] = 'Ez a $a->sitename portál fórumaira érkezett hozzászólásainak napi összesítése. A fórum e-mail beállításainak a módosításához térjen át ide: $a->userprefs.'; -$string['digestmailprefs'] = 'az Ön felhasználói profilja'; -$string['digestmailsubject'] = '$a: fórum összesítése'; -$string['digestsentusers'] = 'E-mail összesítések sikeresen elküldve a(z) $a felhasználóknak.'; -$string['discussion'] = 'Vita'; -$string['discussionmoved'] = 'Ez a vita \'$a\' -ba/-be lett áthelyezve'; -$string['discussionname'] = 'Vita megnevezése'; -$string['discussions'] = 'Viták'; -$string['discussionsstartedby'] = '$a által indított vita '; -$string['discussionsstartedbyrecent'] = '$a által nemrég indított viták'; -$string['discussthistopic'] = 'Téma mwegvitatása'; -$string['eachuserforum'] = 'Mindenki egy vitatémát ad meg'; -$string['edit'] = 'Szerkesztés'; -$string['editedby'] = 'Szerkesztette $a->name - $a->date'; -$string['editing'] = 'Szerkesztés folyamatban'; -$string['emptymessage'] = 'Hiba a hozzászólásban. Talán üres, vagy túl nagy a csatolt fájl. A változásokat a rendszer NEM mentette.'; -$string['everyonecanchoose'] = 'Mindenki felíratkozhat'; -$string['everyoneissubscribed'] = 'Erre a fórumra mindenki felíratkozott'; -$string['existingsubscribers'] = 'Felíratkozottak '; -$string['forcesubscribe'] = 'Mindenkit fel kell íratni'; -$string['forcesubscribeq'] = 'Mindenkit fel kell íratni?'; -$string['forum'] = 'Fórum'; -$string['forumintro'] = 'Fórumbevezetõ'; -$string['forumname'] = 'Fórum neve'; -$string['forumposts'] = 'Fórum hozzászólásai'; -$string['forums'] = 'Fórumok'; -$string['forumtype'] = 'Fórum típusa'; -$string['generalforum'] = 'Általános célú fórum'; -$string['generalforums'] = 'Általános fórumok'; -$string['inforum'] = '$a fórumban'; -$string['intronews'] = 'Általános hírek és közlemények'; -$string['introsocial'] = 'Nyitott fórum, ahol bármit meg lehet beszélni'; -$string['introteacher'] = 'Fórum csak a tanárok megjegyzései és vitája számára'; -$string['lastpost'] = 'Utolsó hozzászólás'; -$string['learningforums'] = 'Tanulási fórumok'; -$string['markread'] = 'Elolvasottnak jelöl'; -$string['markunread'] = 'Elolvasatlannak jelöl'; -$string['maxattachmentsize'] = 'Csatolt állomány maximális mérete'; -$string['maxtimehaspassed'] = 'Sajnos a hozzászólás szerkesztéséhez rendelkezésére álló idõ ($a) lejárt.'; -$string['message'] = 'Üzenet'; -$string['missingsearchterms'] = 'Az alábbi keresõ kifejezések az üzenetnek csak a HTML-kódjában jelennek meg:'; -$string['modeflatnewestfirst'] = 'Válaszok egymás után, a legújabbal kezdve'; -$string['modeflatoldestfirst'] = 'Válaszok egymás után, a legrégebbivel kezdve'; -$string['modenested'] = 'Válaszok beágyazott formában'; -$string['modethreaded'] = 'Válaszok témánkénti formában'; -$string['modulename'] = 'Fórum'; -$string['modulenameplural'] = 'Fórumok'; -$string['more'] = 'tovább'; -$string['movethisdiscussionto'] = 'A téma mozgatása a következõ helyre: '; -$string['namenews'] = 'Hírfórum'; -$string['namesocial'] = 'Közös fórum'; -$string['nameteacher'] = 'Tanári fórum'; -$string['newforumposts'] = 'A fórum új hozzászólásai '; -$string['nodiscussions'] = 'Ebben a fórumban még nincsenek témák'; -$string['noguestpost'] = 'Vendégek nem küldhetnek hozzászólást'; -$string['noguestsubscribe'] = 'Vendégek nem íratkozhatnak fel fórumhozzászólás e-mailben való kézbesítésére.'; -$string['nomorepostscontaining'] = 'Nincs több \'$a\' -t tartalmazó hozzászólás'; -$string['nonews'] = 'Nincs még hír'; -$string['noposts'] = 'Nincs hozzászólás'; -$string['nopostscontaining'] = ' \'$a\' -t tartalmazó hozzászólás nem található'; -$string['nosubscribers'] = 'Még senki nincs felíratkozva erre a fórumra'; -$string['notingroup'] = 'Ennek a fórumnak a megtekintéséhez csoporttagnak kell lennie.'; -$string['nownotsubscribed'] = '$a->name NEM kap másolatot a \'$a->forum\'-ról e-mailben.'; -$string['nowsubscribed'] = '$a->name másolatot kap a \'$a->forum\'-ról e-mailben.'; -$string['numposts'] = '$a Hozzászólások'; -$string['olderdiscussions'] = 'Régebbi megbeszélések'; -$string['oldertopics'] = 'Régebbi témák'; -$string['openmode0'] = 'Nincsenek vitatémák, nincsenek válaszok'; -$string['openmode1'] = 'Nincsenek vitatémák, de válaszok megengedettek'; -$string['openmode2'] = 'Vitatémák és válaszok megengedettek'; -$string['parent'] = 'Elõzmény megjelenítése'; -$string['parentofthispost'] = 'A hozzászólás elõzménye'; -$string['postadded'] = 'A hozzászólást sikeresen hozzáadtuk.
                          Van $a a javításra, ha változtatni szeretné.'; -$string['postincontext'] = 'Nézze ezt a hozzászólást összefüggéseiben.'; -$string['postmailinfo'] = 'Ez a $a weboldalra küldött üzenet másolata. -A weboldalon válaszolhat a következõ hivatkozásra kattintva:'; -$string['postrating1'] = 'Fõként elkülönült ismeretet tartalmaz'; -$string['postrating2'] = 'Elkülönült és kapcsolt ismeretet is tartalmaz'; -$string['postrating3'] = 'Fõként kapcsolt ismeretet tartalmaz'; -$string['posts'] = 'Hozzászólások'; -$string['posttoforum'] = 'Hozzászólás a fórumhoz'; -$string['postupdated'] = 'A hozzászólás frissítése megtörtént'; -$string['potentialsubscribers'] = 'Lehetséges felíratkozók'; -$string['processingdigest'] = 'E-mail összesítés feldolgozása $a számára'; -$string['processingpost'] = 'A(z) $a hozzászólás feldolgozása'; -$string['prune'] = 'Szétvágás'; -$string['prunedpost'] = 'A hozzászólástól kezdve egy új vita jött létre'; -$string['pruneheading'] = 'Vita szétvágása és a hozzászólás áthelyezése egy új vitába'; -$string['rate'] = 'Véleményezés'; -$string['rating'] = 'Véleményezés folyamatban'; -$string['ratingeveryone'] = 'Mindenki véleményt mondhat a hozzászólásokról'; -$string['ratingno'] = 'Nincs véleményezés'; -$string['ratingonlyteachers'] = 'Csak $a véleményezhet üzeneteket'; -$string['ratingpublic'] = '$a mindenki véleményezését láthatja'; -$string['ratingpublicnot'] = '$a csak a saját véleményezését láthatja'; -$string['ratings'] = 'Véleményezések'; -$string['ratingssaved'] = 'Véleményezés mentve'; -$string['ratingsuse'] = 'Véleményezés használata'; -$string['ratingtime'] = 'Csak a következõ dátumhatárok közötti hozzászólások véleményezhetõk: '; -$string['re'] = 'Tárgy:'; -$string['readtherest'] = 'A téma további részének olvasása'; -$string['replies'] = 'Válaszok'; -$string['repliesmany'] = 'Eddig $a hozzászólás'; -$string['repliesone'] = 'Eddig csak $a hozzászólás'; -$string['reply'] = 'Válasz'; -$string['replyforum'] = 'Válasz a fórumra'; -$string['rsssubscriberssdiscussions'] = 'RSS-frissítés megjelenítése a(z) \'$a\' vitákhoz'; -$string['rsssubscriberssposts'] = 'RSS-frissítés megjelenítése a(z) \'$a\' üzenetekhez'; -$string['search'] = 'Keresés'; -$string['searchdatefrom'] = 'A hozzászólásoknak ennél újabbaknak kell lenni'; -$string['searchdateto'] = 'A hozzászólásoknak ennél régebbinek kell lenni'; -$string['searchforumintro'] = 'Az alábbi mezõ(k)ben adja meg a keresõ kifejezéseket:'; -$string['searchforums'] = 'Keresés a fórumokban'; -$string['searchfullwords'] = 'Ezek a szavak teljes szavakként jelenjenek meg'; -$string['searchnotwords'] = 'Ezeket a szavakat NE tartalmazza'; -$string['searcholderposts'] = 'Régebbi hozzászólások keresése'; -$string['searchphrase'] = 'Ennek a kifejezésnek pontosan így kell szerepelnie a hozzászólásban'; -$string['searchresults'] = 'A keresés eredménye'; -$string['searchsubject'] = 'Ezek a szavak a tárgysorban szerepeljenek'; -$string['searchuser'] = 'Ennek a névnek a szerzõével kell egyeznie'; -$string['searchuserid'] = 'A szerzõ Moodle-azonosítója'; -$string['searchwhichforums'] = 'Válassza ki a keresendõ fórumot'; -$string['searchwords'] = 'Ezek a szavak a hozzászólásban bárhol elõfordulhatnak'; -$string['seeallposts'] = 'EZen felhasználó összes hozzászólásainak megmutatása'; -$string['sendinratings'] = 'Utolsó véleményezéseim elküldése'; -$string['showsubscribers'] = 'Felíratkozottak megmutatása/szerkesztése'; -$string['singleforum'] = 'Egyszerû vita'; -$string['startedby'] = 'Indította:'; -$string['subject'] = 'Téma'; -$string['subscribe'] = 'Felíratkozás a fórumra'; -$string['subscribeall'] = 'Mindenki felírása a fórumra'; -$string['subscribed'] = 'Felíratkozott'; -$string['subscribenone'] = 'Mindenki leíratkozása a fórumról'; -$string['subscribers'] = 'Felíratkozók'; -$string['subscribersto'] = 'A(z) \'$a\' -ra/-re felíratkozók'; -$string['subscribestart'] = 'Kérek e-mailt a fórum hozzászólásairól'; -$string['subscribestop'] = 'Nem kérek e-mailt a fórum hozzászólásairól'; -$string['subscription'] = 'Felíratkozás'; -$string['subscriptions'] = 'Felíratkozások'; -$string['unread'] = 'elolvasatlan'; -$string['unreadposts'] = 'Elolvasatlan üzenetek'; -$string['unreadpostsnumber'] = '$ elolvasatlan üzenet'; -$string['unreadpostsone'] = '1 elolvasatlan üzenet'; -$string['unsubscribe'] = 'Leíratkozás a fórumról'; -$string['unsubscribed'] = 'Leíratkozott'; -$string['unsubscribeshort'] = 'Leíratkozás'; -$string['yesforever'] = 'Igen, mindig'; -$string['yesinitially'] = 'Igen, kezdetben'; -$string['youratedthis'] = 'Ön véleményezte ezt: '; -$string['yournewtopic'] = 'Az Ön új témája'; -$string['yourreply'] = 'Az Ön válasza'; +$string['addanewdiscussion'] = "Új téma hozzáadása"; +$string['addanewtopic'] = "Új téma hozzáadása"; +$string['allowchoice'] = "Mindenki választhat"; +$string['allowdiscussions'] = "Egy \$a hozzászólhat ehhez a fórumhoz?"; +$string['allowratings'] = "Megengedi a hozzászólások értékelését?"; +$string['allowsdiscussions'] = "A fórum mindenki számára egyetlen téma nyitását engedi meg."; +$string['anyfile'] = "Bármely fájl"; +$string['attachment'] = "Csatolt fájl"; +$string['bynameondate'] = "\$a->name - \$a->date"; +$string['configdisplaymode'] = "Alapértelmezett megjelenítési mód, ha más nincs megadva, ze érvényes"; +$string['configlongpost'] = "Minden ennél hosszabb hozzászólás hosszúnak tekintendõ"; +$string['configmanydiscussions'] = "Az oldalankénti megjelenítendõ hozzászólások maximális száma"; +$string['configshortpost'] = "Minden ennél rövidenn hozzászólás rövidnektekintendõ"; +$string['couldnotadd'] = "Ismeretlen hiba miatt nem adható hozzá a hozzászólás"; +$string['couldnotdeleteratings'] = "Nem törölhetõ, mások már értékelték"; +$string['couldnotdeletereplies'] = "Nem törölhetõ, már válaszoltak rá"; +$string['couldnotupdate'] = "Az elküldést -ismeretlen hiba miatt - nem lehet frissíteni"; +$string['delete'] = "Törlés"; +$string['deleteddiscussion'] = "A témát töröltük"; +$string['deletedpost'] = "A hozzászólást töröltük"; +$string['deletesure'] = "Biztosan törölni akarja a hozzászólást ?"; +$string['discussion'] = "Téma"; +$string['discussionmoved'] = "Ez a téma '\$a' -ba lett áthelyezve"; +$string['discussions'] = "Téma"; +$string['discussionsstartedby'] = "\$a által indított téma"; +$string['discussionsstartedbyrecent'] = "\$a által legutóbb indított témák"; +$string['discussthistopic'] = "Hozzászólás a témához"; +$string['eachuserforum'] = "Mindenki egy témát ad meg"; +$string['edit'] = "Szerkesztés"; +$string['editing'] = "Szerkesztés"; +$string['emptymessage'] = "Hiba a hozzászólásban. Talán üres, vagy túl nagy a csatolt fájl. A változások NEM lettek mentve."; +$string['everyonecanchoose'] = "Mindenki feliratkozhat"; +$string['everyoneissubscribed'] = "Erre a fórumra mindenki fel lett iratva"; +$string['forcesubscribe'] = "Mindenki feliratása"; +$string['forcesubscribeq'] = "Mindenki feliratása?"; +$string['forum'] = "Fórum"; +$string['forumintro'] = "Fórum bevezetés"; +$string['forumname'] = "Fórum neve"; +$string['forums'] = "Fórumok"; +$string['forumtype'] = "Fórum típusa"; +$string['generalforum'] = "Általános célú normál fórum"; +$string['generalforums'] = "Általános fórumok"; +$string['inforum'] = "\$a fórumban"; +$string['intronews'] = "Általános hírek és közlemények"; +$string['introsocial'] = "Nyitott fórum ahol bármit meg lehet beszélni"; +$string['introteacher'] = "Egy fórum csak a tanárok megjegyzéseihez és beszélgetéséhez"; +$string['lastpost'] = "Utolsó hozzászólás"; +$string['learningforums'] = "Résztvevõk fórumai"; +$string['maxtimehaspassed'] = "Sajnáljuk, de a szerkesztéshez rendelkezésére álló idõ (\$a) lejárt."; +$string['message'] = "Üzenet"; +$string['modeflatnewestfirst'] = "Hozzászólások egymás után, a legújabbal kezdve"; +$string['modeflatoldestfirst'] = "Hozzászólások egymás után, a legrégebbivel kezdve"; +$string['modenested'] = "Hozzászólások beágyazott formában"; +$string['modethreaded'] = "Hozzászólások szál formában"; +$string['modulename'] = "Fórum"; +$string['modulenameplural'] = "Fórumok"; +$string['more'] = "tovább"; +$string['movethisdiscussionto'] = "A téma mozgatása a következõ helyre: "; +$string['namenews'] = "Hír fórum"; +$string['namesocial'] = "Közös fórum"; +$string['nameteacher'] = "Tanári fórum"; +$string['newforumposts'] = "Új fórum üzenetek "; +$string['nodiscussions'] = "Ebben a fórumban még nincsenek témák"; +$string['noguestpost'] = "Vendégek nem küldhetnek hozzászólást"; +$string['nomorepostscontaining'] = "Nincs több '\$a' -t tartalmazó hozzászólás"; +$string['nonews'] = "Nincs hír"; +$string['noposts'] = "Nincs hozzászólás"; +$string['nopostscontaining'] = " '\$a' -t tartalmazó hozzászólás nem található"; +$string['nosubscribers'] = "Még senki nincs feliratkozva erre a fórumra"; +$string['nownotsubscribed'] = "\$a->name NEM kap másolatot a '\$a->forum'-ról email-ben."; +$string['nowsubscribed'] = "\$a->name másolatot kap a '\$a->forum'-ról email-ben."; +$string['numposts'] = "\$a Hozzászólások"; +$string['olderdiscussions'] = "Régebbi témák"; +$string['openmode0'] = "Nincsenek új témák, nincsenek válaszok"; +$string['openmode1'] = "Nincsenek új témák, de válaszok megengedettek"; +$string['openmode2'] = "Új témák és válaszok megengedettek"; +$string['parentofthispost'] = "A hozzászólás elõzménye"; +$string['postadded'] = "A hozzászólását sikeresen hozzáadtuk.

                          Van \$a a javításra, ha változtatni szeretné."; +$string['postincontext'] = "Nézze ezt a hozzászólást összefüggéseiben."; +$string['postmailinfo'] = "Ez egy, a \$a weboldalra küldött üzenet másolata. +A weboldalon válaszolhat a következõ hivatkozásra kattintva::"; +$string['postrating1'] = "Leginkább témán kívüli ismeretet tartalmaz"; +$string['postrating2'] = "Témán kívüli és kapcsolódó ismeretet is tartalmaz"; +$string['postrating3'] = "Leginkább témához kapcsolódó ismeretet tartalmaz"; +$string['posts'] = "Hozzászólások"; +$string['postupdated'] = "A hozzászólást frissítése megtörtént"; +$string['processingpost'] = "\$a küldése"; +$string['rate'] = "Értékelés"; +$string['rating'] = "Értékelés"; +$string['ratingeveryone'] = "Mindenki értékelheti a hozzászólásokat"; +$string['ratingno'] = "Nincs értékelés"; +$string['ratingonlyteachers'] = "Csak \$a értékelhet hozzászólásokat"; +$string['ratings'] = "Értékelések"; +$string['ratingssaved'] = "Az értékelés mentve"; +$string['ratingsuse'] = "Értékelés használata"; +$string['ratingtime'] = "Csak a következõ dátumhatárok közötti hozzászólások értékelhetõk: "; +$string['re'] = "Re:"; +$string['readtherest'] = "A téma további részének olvasása"; +$string['replies'] = "Válaszok"; +$string['repliesmany'] = "\$a hozzászólás"; +$string['repliesone'] = "\$a hozzászólás"; +$string['reply'] = "Válasz"; +$string['search'] = "Keresés"; +$string['searchforums'] = "Keresés a fórumokban"; +$string['searcholderposts'] = "Régebbi hozzászólások keresése"; +$string['searchresults'] = "A keresés eredménye"; +$string['sendinratings'] = "Utolsó értékeléseim küldése"; +$string['showsubscribers'] = "Feliratkozottak megmutatása"; +$string['singleforum'] = "Egyszerû fórum"; +$string['startedby'] = "Indította:"; +$string['subject'] = "Téma"; +$string['subscribe'] = "Feliratkozás a fórumra"; +$string['subscribed'] = "Feliratkozott"; +$string['subscribers'] = "Feliratkozók"; +$string['subscribersto'] = "A '\$a' -ra feliratkozók"; +$string['subscribestart'] = "Kérek e-mailt a fórum hozzászólásairól"; +$string['subscribestop'] = "Nem kérek e-mailt a fórum hozzászólásairól"; +$string['subscription'] = "Feliratkozás"; +$string['subscriptions'] = "Feliratkozások"; +$string['unsubscribe'] = "Kiiratkozás a fórumról"; +$string['unsubscribed'] = "Kiiratkozott"; +$string['youratedthis'] = "Az Ön értékelése: "; +$string['yournewtopic'] = "Az Ön új témája"; +$string['yourreply'] = "Az Ön válasza"; ?> diff --git a/lang/hu/glossary.php b/lang/hu/glossary.php deleted file mode 100644 index 0dbc2643c79..00000000000 --- a/lang/hu/glossary.php +++ /dev/null @@ -1,170 +0,0 @@ -A gondolat és a meghatározás kötelezõen kitöltendõ.'; -$string['explainall'] = 'MINDEN fogalom megjelenítése egyetlen oldalon'; -$string['explainalphabet'] = 'Fogalomtár böngészése ezzel a mutatóval'; -$string['explainexport'] = 'Elkészült egy fájl.
                          Töltse le és õrizze meg. Akár ezen kurzus, akár más kurzus folyamán bármikor importálhatja.'; -$string['explainimport'] = 'Meg kell adnia az importálandó állományt és meg kell határoznia a folyamat kritériumait.
                          Adja le kérését és tekintse át az eredményeket.'; -$string['explainspecial'] = 'Megjeleníti a nem betûvel kezdõdõ fogalmakat'; -$string['exportedentry'] = 'Exportált fogalom'; -$string['exportedfile'] = 'Exportált állomány'; -$string['exportentries'] = 'Fogalmak exportálása'; -$string['exportglossary'] = 'Fogalomtár exportálása'; -$string['exporttomainglossary'] = 'Exportálás a fõ fogalomtárba'; -$string['filetoimport'] = 'Importálandó állomány'; -$string['fillfields'] = 'A gondolat és a meghatározás kötelezõen kitöltendõ.'; -$string['filtername'] = 'Fogalomtár automatikus kapcsolása'; -$string['fullmatch'] = 'Egész szavak egyezése'; -$string['globalglossary'] = 'Globális fogalomtár'; -$string['glossaryleveldefaultsettings'] = 'Fogalmi szintû alapbeállítások'; -$string['glossarytype'] = 'Fogalomtár típusa'; -$string['glosssaryexported'] = 'Fogalomtár exportálva.'; -$string['importcategories'] = 'Importálási kategóriák'; -$string['importedcategories'] = 'Importált kategóriák'; -$string['importedentries'] = 'Importált fogalmak'; -$string['importentries'] = 'Fogalmak importálása'; -$string['isglobal'] = 'Ez a fogalomtár globális?'; -$string['linkcategory'] = 'Automatikusan kapcsolja ezt a kategóriát'; -$string['mainglossary'] = 'Fõ fogalomtár'; -$string['maxtimehaspassed'] = 'Sajnos letelt ennek a megjegyzésnek ($a) a szerkesztésére rendelkezésre álló idõ!'; -$string['modulename'] = 'Fogalomtár'; -$string['modulenameplural'] = 'Fogalomtárak'; -$string['newentries'] = 'Új fogalmak'; -$string['newglossary'] = 'Új fogalomtár'; -$string['newglossarycreated'] = 'Létrejött az új fogalomtár.'; -$string['newglossaryentries'] = 'Új fogalmak:'; -$string['nocomment'] = 'Nincs megjegyzés'; -$string['nocomments'] = '(Nincs megjegyzés ehhez a fogalomhoz)'; -$string['noconceptfound'] = 'Nincs gondolat vagy meghatározás.'; -$string['noentries'] = 'Ebben a részben nincs fogalom'; -$string['noentry'] = 'Nincs fogalom.'; -$string['notcategorised'] = 'Nincs kategorizálva'; -$string['numberofentries'] = 'Fogalmak száma'; -$string['onebyline'] = '(soronként egy)'; -$string['printerfriendly'] = 'Nyomtatásra alkalmas változat'; -$string['printviewnotallowed'] = 'Nyomtatási kép nincs engedélyezve'; -$string['question'] = 'Kérdés'; -$string['rate'] = 'Besorolás'; -$string['rating'] = 'Besorolás'; -$string['ratingeveryone'] = 'Bárki besorolhat fogalmakat'; -$string['ratingno'] = 'Nincs besorolás'; -$string['ratingonlyteachers'] = 'Csak $a sorolhat be fogalmakat'; -$string['ratings'] = 'Besorolások'; -$string['ratingssaved'] = 'Besorolások elmentve'; -$string['ratingsuse'] = 'Besorolások használata'; -$string['ratingtime'] = 'Csak ezen tartományon belüli dátummal rendelkezõ fogalmakra korlátozódik a besorolás:'; -$string['rejectedentries'] = 'Elutasított fogalmak'; -$string['rejectionrpt'] = 'Jelentés az elutasításokról'; -$string['rsssubscriberss'] = 'RSS-betöltés kijelzése a \'$a\' fogalomhoz'; -$string['searchindefinition'] = 'Keresés teljes szövegben'; -$string['secondaryglossary'] = 'Másodlagos fogalomtár'; -$string['sendinratings'] = 'Legutóbbi besorolásaim beküldése'; -$string['showall'] = '\'MINDEN\' kapcsolat megjelenítése'; -$string['showalphabet'] = 'Ábécé megjelenítése'; -$string['showspecial'] = '\'Speciális\' kapcsolat megjelenítése'; -$string['sortby'] = 'Rendezés alapja'; -$string['sortbycreation'] = 'Létrehozás dátuma'; -$string['sortbylastupdate'] = 'Utolsó frissítés'; -$string['sortchronogically'] = 'Idõrendi válogatás'; -$string['special'] = 'Speciális'; -$string['standardview'] = 'Böngészés betûrend szerint'; -$string['studentcanpost'] = 'A tanulók hozzáadhatnak fogalmakat'; -$string['totalentries'] = 'Fogalmak összesen'; -$string['usedynalink'] = 'Fogalomtári bejegyzések automatikus kapcsolása'; -$string['waitingapproval'] = 'Jóváhagyásra vár'; -$string['warningstudentcapost'] = '(Csak ha a fogalomtár nem egy fõ fogalomtár)'; -$string['withauthor'] = 'Fogalmak szerzõvel együtt'; -$string['withoutauthor'] = 'Fogalmak szerzõ nélkül'; -$string['writtenby'] = 'írta'; -$string['youarenottheauthor'] = 'Nem Ön írta ezt a megjegyzést, ezért nem is szerkesztheti.'; - -?> diff --git a/lang/hu/grades.php b/lang/hu/grades.php deleted file mode 100644 index 14764004e36..00000000000 --- a/lang/hu/grades.php +++ /dev/null @@ -1,125 +0,0 @@ - valamelyikét törölje és kattintson a Beküldés gombra.'; -$string['gradepreferenceshelp'] = 'Súgó a pontozási preferenciához'; -$string['grades'] = 'Pontok'; -$string['gradeweighthelp'] = 'Súgó a pontozás súlyozásához'; -$string['hidecategory'] = 'Rejtett'; -$string['highgradeascending'] = 'Növekvõ rendezés'; -$string['highgradedescending'] = 'Csökkenõ rendezés'; -$string['highgradeletter'] = 'Magas'; -$string['incorrectcourseid'] = 'Hibás kurzusazonosító'; -$string['item'] = 'Tétel'; -$string['items'] = 'Tételek'; -$string['lettergrade'] = 'Betûvel megadott pont'; -$string['lettergradenonnumber'] = 'Az alacsony és/vagy magas pontszám nem számjegyes volt'; -$string['letters'] = 'Betûk'; -$string['lowest'] = 'Legalacsonyabb'; -$string['lowgradeletter'] = 'Alacsony'; -$string['max'] = 'Legmagasabb'; -$string['maxgrade'] = 'Max. pont'; -$string['median'] = 'Középérték'; -$string['min'] = 'Legalacsonyabb'; -$string['mode'] = 'Mód'; -$string['no'] = 'Nem'; -$string['nocategories'] = 'A kurzushoz nincs vagy nem lehetett hozzáadni pontkategóriát'; -$string['nocategoryview'] = 'Nincs megtekinthetõ kategória'; -$string['nogradeletters'] = 'Nincs beállítva pontozási betû'; -$string['nogradesreturned'] = 'Nincs kapott pont'; -$string['nolettergrade'] = 'Nincs pontozási betû ehhez'; -$string['nomode'] = 'Nem érvényes'; -$string['nonnumericweight'] = 'Nem számjegyes érték érkezett ehhez'; -$string['nonweightedpct'] = 'súlyozatlan %%'; -$string['pctoftotalgrade'] = '%%-a az összpontszámnak'; -$string['percent'] = 'Százalék'; -$string['percentascending'] = 'Rendezés növekvõ százalék szerint'; -$string['percentdescending'] = 'Rendezés csökkenõ százalék szerint'; -$string['percentshort'] = '%%'; -$string['points'] = 'pont'; -$string['pointsascending'] = 'Rendezés növekvõ pontok szerint'; -$string['pointsdescending'] = 'Rendezés csökkenõ pontok szerint'; -$string['preferences'] = 'Hivatkozások'; -$string['rawpct'] = 'Nyers %%'; -$string['reprintheaders'] = 'Fejlécek úrjanyomtatása'; -$string['savechanges'] = 'Változások mentése'; -$string['savepreferences'] = 'Preferenciák mentése'; -$string['scaledpct'] = 'Léptékes %%'; -$string['setcategories'] = 'Kategóriák beállítása'; -$string['setcategorieserror'] = 'Súlyok hozzáadása elõtt ketagóriákat kell a kurzusához beállítania.'; -$string['setgradeletters'] = 'Pontozási betûk beállítása'; -$string['setpreferences'] = 'Preferenciák beállítása'; -$string['setting'] = 'Beállítás'; -$string['settings'] = 'Beállítások'; -$string['setweights'] = 'Súlyok beállítása'; -$string['showallstudents'] = 'Minden tanuló kijelzése'; -$string['showhiddenitems'] = 'Rejtett tételek kijelzése'; -$string['sort'] = 'rendez'; -$string['sortbyfirstname'] = 'Keresztnév szerinti rendezés'; -$string['sortbylastname'] = 'Vezetéknév szerinti rendezés'; -$string['standarddeviation'] = 'Szórás'; -$string['stats'] = 'Statisztika'; -$string['statslink'] = 'Stat'; -$string['student'] = 'Tanuló'; -$string['total'] = 'Összes'; -$string['totalweight100'] = 'Az összsúly 100-zal egyenlõ'; -$string['totalweightnot100'] = 'Az összsúly nem egyenlõ 100-zal'; -$string['uncategorised'] = 'Nincs kategorizálva'; -$string['useadvanced'] = 'Továbbfejlesztett jellemzõk használata'; -$string['usepercent'] = 'Százalék használata'; -$string['useweighted'] = 'Súlyozás használata'; -$string['viewbygroup'] = 'Csoport'; -$string['viewgrades'] = 'Pontok kijelzése'; -$string['weight'] = 'súly'; -$string['weightedascending'] = 'Növekvõ súlyozott százalék szerinti rendezés'; -$string['weighteddescending'] = 'Csökkenõ súlyozott százalék szerinti rendezés'; -$string['weightedpct'] = 'súlyozott %%'; -$string['weightedpctcontribution'] = 'súlyozott %%-os hozzájárulás'; -$string['writinggradebookinfo'] = 'Osztálynapló beállításainak írása'; -$string['yes'] = 'Igen'; - -?> diff --git a/lang/hu/help/assignment/assignmenttype.html b/lang/hu/help/assignment/assignmenttype.html deleted file mode 100644 index 6b2f13240dc..00000000000 --- a/lang/hu/help/assignment/assignmenttype.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Feladattípus

                          - -

                          Különféle típusú feladatok léteznek.

                          - -

                          Offline tevékenység - olyankor hasznos, amikor a feladat végrehajtása nem a Moodle keretei között történik. A tanulók látják a feladat leírását, de nem tölthetnek föl állományokat. A tanár ugyanakkor az összes tanulót pontozhatja, a tanulók pedig értesítést kapnak a pontjaikról. - -

                          Egyetlen állomány feltöltése - ezzel a feladattípussal minden tanuló tetszőleges típusú, egy darab állományt tud feltölteni. Ez lehet egy Word-dokumentum, egy kép, egy tömörített webportál, illetve bármi egyéb, amelynek a feltöltésére megkérjük a tanulókat. A tanár a leadott feladatokat online pontozhatja. \ No newline at end of file diff --git a/lang/hu/help/assignment/index.html b/lang/hu/help/assignment/index.html deleted file mode 100644 index 8b1ed44d04c..00000000000 --- a/lang/hu/help/assignment/index.html +++ /dev/null @@ -1,4 +0,0 @@ -

                          Feladatok

                          - diff --git a/lang/hu/help/assignment/mods.html b/lang/hu/help/assignment/mods.html deleted file mode 100644 index 5143fa39d41..00000000000 --- a/lang/hu/help/assignment/mods.html +++ /dev/null @@ -1,4 +0,0 @@ -

                           Feladatok

                          -
                            -

                            A feladatokkal a tanár a tanulót (tetszőleges formájú) digitális tartalom elkészítésére és leadására kérheti, melyet a szerveren keresztül tölthet föl a rendszerbe. Jellegzetes feladatként megemlíthető az esszé, a projekt, a jelentés stb. Ez a modul magában foglalja a pontozási eszközöket is.

                            -
                          diff --git a/lang/hu/help/assignment/resubmit.html b/lang/hu/help/assignment/resubmit.html deleted file mode 100644 index 382438a9de9..00000000000 --- a/lang/hu/help/assignment/resubmit.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Feladatok ismételt leadása

                          - -

                          Alaphelyzetben a tanulók nem adhatják le ismételten a feladatukat, ha a tanár már lepontozta őket.

                          - -

                          Ha ezt az opciót bekapcsoljuk, a tanulók pontozás után is újból leadhatják a feladatot (újbóli lepontozás céljából). Ez olyankor lehet hasznos, ha a tanár arra kívánja ösztönözni a tanulókat, hogy egy ismétléses folyamat révén fejlődést érjenek el.

                          - -

                          Egyértelmű, hogy az ilyen opció irreleváns offline feladat esetén.

                          diff --git a/lang/hu/help/attendance/autoattend.html b/lang/hu/help/attendance/autoattend.html deleted file mode 100644 index 99b50ed0049..00000000000 --- a/lang/hu/help/attendance/autoattend.html +++ /dev/null @@ -1,8 +0,0 @@ -

                          Jelenlét automatikus naplózása

                          - -

                          Ennek az opciónak a bekapcsolásakor a jelenlét nyilvántartása automatikusan megtörténik az egyes falhasználóknak a dátum alapján meghatározott napon végzett tevékenysége alapján.

                          - -

                          Az automatikus jelenlét-naplózási eszköz akkor tekint egy résztvevőt jelen lévőnek, ha az bejelentkezik a kurzusra és az adott időpontban bármilyen tevékenységet végez.

                          - -

                          A Moodle cron segédprogramját úgy konfigurálhatjuk, hogy ez az opció működjön.

                          - diff --git a/lang/hu/help/attendance/choosedays.html b/lang/hu/help/attendance/choosedays.html deleted file mode 100644 index 8d0c6bc65f0..00000000000 --- a/lang/hu/help/attendance/choosedays.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Jelenlét nyilvántartásához a hetek napjai

                          - -

                          Ha többszörös jelenléti ívet adunk hozzá, a jelen listában bejelölt összes hétköznapra külön jelenléti ív jön létre. Ha például minden kedden és csütörtökön szeretnénk jelenléti ívet vezetni, akkor csak a Tue. [kedd] és Thu. [csütörtök] négyzeteket jelöljük be, a többit hagyjuk bejelöletlenül.

                          - - diff --git a/lang/hu/help/attendance/dynsection.html b/lang/hu/help/attendance/dynsection.html deleted file mode 100644 index 2a6f49d4e19..00000000000 --- a/lang/hu/help/attendance/dynsection.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Egy szekció elhelyezése az adott dátum szerinti jelenlét alapján

                          - -

                          Automatikusan áthelyezi az adott előfordulást a dátumának megfelelő szekcióba. Ha ezt az opciót választjuk, az előfordulás a változások mentése után átkerül a megfelelő hétre.

                          - -

                          Ez az opció csak a heti kurzusforma esetén használható.

                          - diff --git a/lang/hu/help/attendance/grade.html b/lang/hu/help/attendance/grade.html deleted file mode 100644 index e1e569cc2a8..00000000000 --- a/lang/hu/help/attendance/grade.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Egy névsorba tartozók pontozása

                          - -

                          Ezzel az opcióval az egy névsorba tartozó beíratkozottakat lineáris skála mentén pontozhatjuk. Az adott tanuló adott kurzus látogatásával eltöltött összes jelenléti órák száma pontszám formájában hozzáadódik a naplóhoz. Ebbe a számításba beleszámítanak a késések is, a pontszám pedig a modul "hiányzásokra eső késések száma" modulján alapszik.

                          - -

                          Ez az opció nem működik túl hatásosan akkor, ha az automatikus jelenlét be van kapcsolva, ugyanis jelenleg még nincs mód annak jelölésre, hogy egy tanuló egy kurzust adott napon csak egy ideig látogat. Az automatikus jelenlét naplózása szempontjából egy tanuló vagy 100%-ban jelen van, vagy 100%-ban hiányzik.

                          - diff --git a/lang/hu/help/attendance/hours.html b/lang/hu/help/attendance/hours.html deleted file mode 100644 index d6808e32755..00000000000 --- a/lang/hu/help/attendance/hours.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Adott osztálytartam óraszáma

                          - -

                          Itt állítható be, hány órás lesz az adott osztály időtartama. A jelenlétet e rendszer az osztály minden órájára külön-külön naplózza. Részórákat nem lehet megadni.

                          - -

                          Az opció nem bír különös jelentőséggel a jelenlét automatikus naplózása esetén.

                          - diff --git a/lang/hu/help/attendance/index.html b/lang/hu/help/attendance/index.html deleted file mode 100644 index 26deba38e63..00000000000 --- a/lang/hu/help/attendance/index.html +++ /dev/null @@ -1,11 +0,0 @@ -

                          Jelenlét

                          - - - diff --git a/lang/hu/help/attendance/maxgrade.html b/lang/hu/help/attendance/maxgrade.html deleted file mode 100644 index f13469e15bf..00000000000 --- a/lang/hu/help/attendance/maxgrade.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Jelenlétre adott maximális pontszám értéke

                          - -

                          Ez az érték határozza meg, mekkora legyen a maximális pontszám az adott kurzuson való teljes jelenlét esetén. Ez az érték lineáris skálán oszlik el a részleges jelenlét figyelembevétele mellett. Teljes hiányzás esetén az adandó pontszám a nulla.

                          - - diff --git a/lang/hu/help/attendance/mods.html b/lang/hu/help/attendance/mods.html deleted file mode 100644 index 6d54885ab94..00000000000 --- a/lang/hu/help/attendance/mods.html +++ /dev/null @@ -1,5 +0,0 @@ -

                           Jelenlét

                          -
                            -

                            Ezzel a modullal rögzíthető az egyes résztvevők jelenléte egy-egy helyszíni vagy on-line osztályfoglalkozáson. A jelenlétet naplózhatja kézzel a kurzus bármely tanára, vagy pedig történhet ez automatikusan is a résztvevők 24 órás tevékenysége alapján az adott jelenléti időszakra kivetítve.

                            -
                          - diff --git a/lang/hu/help/chat/chatting.html b/lang/hu/help/chat/chatting.html deleted file mode 100644 index 6f74a6360ec..00000000000 --- a/lang/hu/help/chat/chatting.html +++ /dev/null @@ -1,22 +0,0 @@ -

                          A csevegés használata

                          - -

                          A csevegésre használt modul tartalmaz néhány olyan vonást, amely révén a csevegés valamelyest kellemesebbé tehető.

                          - -
                          -
                          Emotikonok
                          -
                          Bármely érzelmet kifejező arc (emotikon), amelyet a Moodle-ban máshol használhatunk, itt is begépelhető és megfelelő módon megjeleníthető. Például, :-) =
                          - -
                          Hivatkozások
                          -
                          Az internetes címek automatikusan hivatkozásokká alakulnak át.
                          - -
                          Érzelem kifejezése
                          -
                          Érzelem kifejezéséhez használható a "/me" vagy ":" sorkezdet. Például ha a felhasználó neve Kati és azt gépeli be, hogy ":laughs!" vagy "/me laughs!" [nevet], akkor a kijelzés mindenki előtt "Kati laughs!" alakban lesz látható.
                          - -
                          Hangjelzések
                          -
                          Ha valakinek a neve mellett lévő "hangjelző" hivatkozásra kattintunk, az illetőhöz hangjelzést tudunk küldeni. Ha egyszerre minden embernek szeretnénk hangjelzést küldeni egy csevegés során, gépeljük be a "beep all" [hangjelzés mindenkinek] utasítást.
                          - -
                          HTML
                          -
                          Ha valamelyest járatosak vagyunk a HTML-ben, kódot illeszthetünk a szövegbe, mellyel képet szúrhatunk be, hangot játszhatunk le és különféle színű és méretű szövegeket jeleníthetünk meg.
                          - -
                          - diff --git a/lang/hu/help/chat/index.html b/lang/hu/help/chat/index.html deleted file mode 100644 index 1062b12c440..00000000000 --- a/lang/hu/help/chat/index.html +++ /dev/null @@ -1,4 +0,0 @@ -

                          Csevegési modul

                          - diff --git a/lang/hu/help/chat/mods.html b/lang/hu/help/chat/mods.html deleted file mode 100644 index 7bf0907282d..00000000000 --- a/lang/hu/help/chat/mods.html +++ /dev/null @@ -1,4 +0,0 @@ -

                           Választási lehetőségek

                          -
                            -

                            A választási lehetőségekhez kötődő tevékenység felettébb egyszerű - a tanár feltesz egy kérdést és meghatározza a reá adható különféle válaszokat. Az eszköz hasznos lehet egy-egy téma átgondolásának a kezdeményezéséhez; az osztály adott kurzussal kapcsolatos irányultságának az eldöntéséhez; illetve a téma feltárását szolgáló egyetértés megszerzéséhez. -

                          diff --git a/lang/hu/help/choice/index.html b/lang/hu/help/choice/index.html deleted file mode 100644 index 2a7377b2603..00000000000 --- a/lang/hu/help/choice/index.html +++ /dev/null @@ -1,4 +0,0 @@ -

                          Lehetőségek

                          - diff --git a/lang/hu/help/choice/mods.html b/lang/hu/help/choice/mods.html deleted file mode 100644 index c2e9dd0e12a..00000000000 --- a/lang/hu/help/choice/mods.html +++ /dev/null @@ -1,4 +0,0 @@ -

                           Párbeszédek

                          -
                            -

                            Ez a modul felhasználópárok közötti egyszerű kapcsolattartáshoz biztosít lehetőséget. Tanár kezdeményezhet párbeszédet tanulóval, tanuló kezdeményezhet párbeszédet a tanárral, illetve (opcionálisan) tanuló kezdeményezhet párbeszédet egy másik tanulóval. Egy tanár vagy egy tanuló egy időben több éppen zajló párbeszédben vehet részt.

                            -
                          diff --git a/lang/hu/help/choice/options.html b/lang/hu/help/choice/options.html deleted file mode 100644 index 09e9b208a31..00000000000 --- a/lang/hu/help/choice/options.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Választható opciók

                          - -

                          Itt adhatjuk meg azokat az opciókat, amelyekből a résztvevőknek választaniuk kell. - -

                          Ezekből tetszőleges számút kitölthetünk: ha nincs szükségünk mind a 6 opcióra, néhányat kitöltetlenül hagyhatunk. \ No newline at end of file diff --git a/lang/hu/help/choice/timerestrict.html b/lang/hu/help/choice/timerestrict.html deleted file mode 100644 index e97764af124..00000000000 --- a/lang/hu/help/choice/timerestrict.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Idő korlátozása

                          - -

                          Ezzel a beállítással megadhatunk egy időtartamot, amelyen belül a résztvevők választhatnak.

                          - -

                          Ha a lezárást nyitva szeretnénk hagyni, állítsunk be egy nagyon távoli időpontot a jövőben.

                          - -

                          Ha erre a lehetőségre egyáltalán nincs szükségünk, távolítsuk el a négyzetből a bejelölést.

                          diff --git a/lang/hu/help/cookies.html b/lang/hu/help/cookies.html deleted file mode 100644 index 744c63e805b..00000000000 --- a/lang/hu/help/cookies.html +++ /dev/null @@ -1,8 +0,0 @@ -

                          Sütik

                          - -

                          Kétféle sütit használ ez a portál.

                          - -

                          Ezek közül az alapvetően fontos süti az általában MoodleSession néven ismert folyamatrögzítő süti. Ezt a sütit be kell engednünk a böngészőbe, ha azt szeretnénk, hogy folyamatosan tudjunk dolgozni és bejelentkezésünk oldalról oldalra érvényes legyen. Kijelentkezéskor vagy a böngésző bezárásakor ez a süti megsemmisül (mind a böngészőben, mind a szerveren).

                          - -

                          A másik süti kizárólag kényelmi célokat szolgál és rendszerint a MOODLEID vagy ehhez hasonló nevet viseli. Ennek csak annyi a szerepe, hogy emlékezzen a böngészőn belül a felhasználónevünkre. Ez azt jelenti, hogy ha visszatérünk erre a weboldalra, a bejelentkezési oldalon a felhasználónév már kitöltve jelenik meg. Ha nem kívánjuk ezt a sütit használni, minden gond nélkül lemondhatunk róla, ez mindössze azzal jár, hogy minden alkalommal bejelentkezéskor újból be kell írnunk a nevünket.

                          - diff --git a/lang/hu/help/courseavailability.html b/lang/hu/help/courseavailability.html deleted file mode 100644 index ac6bb6242d9..00000000000 --- a/lang/hu/help/courseavailability.html +++ /dev/null @@ -1,8 +0,0 @@ -

                          Kurzus elérhetősége

                          - -

                          Ezzel az opcióval teljesen "elrejthetjük" kurzusunkat.

                          - -

                          Egyetlen kurzuslistán sem fog szerepelni, csak a kurzust tanító tanárok és az adminisztrátorok számára lesz látható.

                          - -

                          A tanuló akkor sem léphet be, ha a kurzus URL-jét közvetlenül próbálja elérni.

                          - diff --git a/lang/hu/help/coursecategory.html b/lang/hu/help/coursecategory.html deleted file mode 100644 index d827161689d..00000000000 --- a/lang/hu/help/coursecategory.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Kurzuskategóriák

                          - -

                          Moodle-adminisztrátorunk létrehozhat néhány kurzuskategóriát számunkra. - -

                          Például csinálhat "Természettudományok", "Bölcsészettudományok", "Egészségügy" stb. elnevezésű kategóriákat. - -

                          Válasszuk ki a kurzusunknak leginkább megfelelőt. Ezen választásunk határozza majd meg, hogy a kurzuslistán hol jelenik meg kurzusunk. Emellett megkönnyítheti tanulóink számára kurzusunk megtalálását is. \ No newline at end of file diff --git a/lang/hu/help/courseformats.html b/lang/hu/help/courseformats.html deleted file mode 100644 index 517bfcf3646..00000000000 --- a/lang/hu/help/courseformats.html +++ /dev/null @@ -1,17 +0,0 @@ -

                          A Moodle kurzusformái

                          - -

                          Heti kurzusforma

                          -
                            -A kurzus hetenkénti elrendezésben szerepel, egyértelmű kezdési és befejezési időponttal. Minden hét tartalmaz tevékenységeket. Ezek egy része, például a napló, "üres helyekkel" rendelkezhet, melyek - mondjuk - két hét elteltével hozzáférhetetlenné válnak. -
                          - -

                          Téma szerinti kurzusforma

                          -
                            -Nagyon hasonlít a heti kurzusformára, azzal az eltéréssel, hogy minden "hét" neve téma. A "téma" nincs időkorlátok közé szorítva. Semmilyen dátumot nem kell megadnunk. -
                          - -

                          Társas forma

                          -
                            -Ez a forma egy fő fórum, a társas fórum köré szerveződik, amely a címoldalon szerepel. Olyan helyzetekben hasznos ez a forma, amelyek szabadabbak. Az sem szükségszerű, hogy ezek kurzusok legyenek. Például lehetnek akár tanszéki hirdetőtáblák is. -
                          - diff --git a/lang/hu/help/coursefullname.html b/lang/hu/help/coursefullname.html deleted file mode 100644 index 9c7135425fb..00000000000 --- a/lang/hu/help/coursefullname.html +++ /dev/null @@ -1,4 +0,0 @@ -

                          Kurzus teljes neve

                          - -

                          A kurzus teljes neve a képernyő tetején, a kurzuslistán látható.

                          - diff --git a/lang/hu/help/coursegrades.html b/lang/hu/help/coursegrades.html deleted file mode 100644 index c420b6c1a33..00000000000 --- a/lang/hu/help/coursegrades.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Pontok

                          - -

                          Számos tevékenységhez rendelhetünk pontokat.

                          - -

                          Kiinduló helyzetben egy kurzuson belül minden pont megtekinthető a Pontozás oldalon, amely a fő kurzusoldalról érhető el.

                          - -

                          Ha a tanár nem kíván pontozással élni az adott kurzust illetően, vagy ha csak el akarja rejteni a pontokat a tanulók elől, akkor kikapcsolhatja a pontok megjelenítését a kurzusbeállításokban. Ettől még az egyes tevékenységekhez használhatunk vagy beállíthatunk pontokat, itt csak azt kapcsoljuk ki, hogy a tanulók lássák az eredményt.

                          diff --git a/lang/hu/help/coursehiddensections.html b/lang/hu/help/coursehiddensections.html deleted file mode 100644 index a7977fda087..00000000000 --- a/lang/hu/help/coursehiddensections.html +++ /dev/null @@ -1,8 +0,0 @@ -

                          Kurzus rejtett részei

                          - -

                          Ezzel az opcióval azt határozhatjuk meg, hogy a kurzusunkban lévő rejtett részek miként jelenjenek meg a tanulók számára.

                          - -

                          Alaphelyzetben egy kis terület látható (tömör formában, rendszerint szürke színben), jelezve a rejtett részek helyét, ugyanakkor a tanulók előtt ezek a rejtett tevékenységek és szövegek nem láthatók. Ez különösen a heti forma esetén hasznos, mert így a nem órával töltött hetek világosan láthatók.

                          - -

                          Ha úgy döntünk, ezeket teljesen elrejthetjük úgy, hogy a tanulók még azt se tudják, hogy a kurzus egyes részei rejtve maradnak előttük

                          - diff --git a/lang/hu/help/courseidnumber.html b/lang/hu/help/courseidnumber.html deleted file mode 100644 index 0a6b6c67e91..00000000000 --- a/lang/hu/help/courseidnumber.html +++ /dev/null @@ -1,4 +0,0 @@ -

                          Kurzus azonosítószáma

                          - -

                          Egy kurzus azonosítószáma csak akkor használatos, amikor az adott kurzust külső rendszerekkel vetjük egybe - a Moodle sohasem jeleníti meg. Ha a kurzus hivatalos kódnévvel rendelkezik, azt használjuk itt ... egyébként hagyjuk üresen.

                          - diff --git a/lang/hu/help/coursenewsitems.html b/lang/hu/help/coursenewsitems.html deleted file mode 100644 index e6d7b783cf7..00000000000 --- a/lang/hu/help/coursenewsitems.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Kurzushírek

                          - -

                          A heti és a téma kurzusformáknak része egy speciális, "Hírek" elnevezésű fórum. Ez a fórum alkalmas olyan üzenetek küldésére, amelyet minden tanuló olvashat. (Alaphelyzetben a rendszer minden tanulót felvesz a fórumba, az üzeneteinket pedig e-mailben kapják meg.) - -

                          Ez a beállítás határozza meg, hány friss üzenet jelenjen meg a kurzus honlapján, jobbra lent egy híreket tartalmazó négyzetben. - -

                          Ha ezt az értéket "0 db hír"-re állítjuk, akkor a híreket tartalmazó négyzet meg sem jelenik. \ No newline at end of file diff --git a/lang/hu/help/coursenumsections.html b/lang/hu/help/coursenumsections.html deleted file mode 100644 index 1ba3108c484..00000000000 --- a/lang/hu/help/coursenumsections.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Kurzusok heti/témánkénti száma

                          - -

                          Ezt a beállítást csak a heti és a téma szerinti kurzusforma használja. - -

                          Heti forma esetén a kurzus időtartamát határozza meg hetekben - a kurzus kezdő időpontjától számítva. - -

                          Téma szerinti formában a kurzust alkotó témák számát határozza meg. - -

                          Mindkettő a kurzus oldalának közepén lefelé lévő "négyzetek" számának felel meg. \ No newline at end of file diff --git a/lang/hu/help/courserecent.html b/lang/hu/help/courserecent.html deleted file mode 100644 index fa542d20de5..00000000000 --- a/lang/hu/help/courserecent.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Utóbbi tevékenységek

                          - -

                          A Moodle a kurzus honlapján meg tudja jeleníteni az utóbbi tevékenységeket. - -

                          Itt látható mindaz, ami a kurzust illetően azóta történt, hogy az oldalt olvasó felhasználó bejelentkezett a kurzusra, ideértve az új üzeneteket, az új felhasználókat, a beadott naplókat stb. - -

                          Tanácsos ezt az opciót bekapcsolva hagyni a kurzus folyamán, mivel elősegíti a kurzus folyamán a mozgalmasság, a tevékenység érzetének előtérbe kerülését. Ha tudjuk, a többiek mit csinálnak, azzal ugyancsak növekszik az osztály közös munkavégzését sugalló légkör. - -

                          Igen nagy méretű vagy felettébb aktívan használt kurzus esetén azonban érdemes lehet ezt az opciót kiiktatni, mivel lelassíthatja a kurzusoldal kijelzését. \ No newline at end of file diff --git a/lang/hu/help/coursereports.html b/lang/hu/help/coursereports.html deleted file mode 100644 index b425ede038f..00000000000 --- a/lang/hu/help/coursereports.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Tevékenységekről szóló jelentések

                          - -

                          A tevékenységekről szóló jelentések az adott kurzusban tevékenységet végző résztvevők mindegyike számára elérhetőek. A beküldött anyagok felsorolásán túl ezek a jelentések részletes naplózást adnak a rendszerbe való belépésekről.

                          - -

                          A tanárok mindig hozzáférhetnek ezekhez a jelentésekhez az egyes személyek profilját tartalmazó oldalakon lévő gomb segítségével.

                          - -

                          A tanulók saját jelentéseikhez való hozzáférését a tanár szabályozza a kurzusbeállításon keresztül. Egyes kurzusok esetén ezek a jelentések hasznos eszközt jelenthetnek a tanuló számára, mivel képet kapnak az online környezetben való részvételükről, más kurzusok esetén viszont erre nem feltétlenül van szükség.

                          - -

                          Egy másik ok ennek az opciónak a kikapcsolására az, hogy a jelentés megterheli a szervert a jelentés előállítása során. Nagy és hosszan tartó osztályok esetén ezért hatékonyabb lehet, ha kikapcsolt állapotban tartjuk a tevékenységekről szóló jelentések készítését.

                          diff --git a/lang/hu/help/courseshortname.html b/lang/hu/help/courseshortname.html deleted file mode 100644 index b2f4de8cce4..00000000000 --- a/lang/hu/help/courseshortname.html +++ /dev/null @@ -1,4 +0,0 @@ -

                          Rövid kurzusnév

                          - -

                          Számos intézményben a kurzusok jelölésére rövidített megnevezést használnak, pl. BP102 vagy COMMS. Ha nincs is ilyen nevünk a kurzusunkhoz, hozzunk itt létre egyet. Ez számos helyen lesz majd használatos ott, ahol a hosszú elnevezés nem megfelelő (például egy e-mail tárgysorában).

                          - diff --git a/lang/hu/help/coursestartdate.html b/lang/hu/help/coursestartdate.html deleted file mode 100644 index de3989b4526..00000000000 --- a/lang/hu/help/coursestartdate.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Kurzus kezdő időpontja

                          - -

                          Itt adhatjuk meg a kurzus kezdő időpontját (saját időzónánknak megfelelően). - -

                          Ha a heti kurzusformát használjuk, ez befolyással lesz a hetek kijelzésére. Az első hét azon a napon kezdődik, amelyet itt beállítunk. -

                          Ennek a beállításnak nincs hatása a társas vagy a téma szerinti kurzusformára. - -

                          Ugyanakkor a beállításnak hatása lesz azon naplózások kijelzésére, amelyek ezt a dátumot a kijelezhető legkorábbi dátumként használják. -

                          Általában véve ha kurzusunknak nincs valós kezdési időpontja, akkor érdemes ezt a dátumot beállítani, függetlenül attól, hogy milyen kurzusformát használunk. \ No newline at end of file diff --git a/lang/hu/help/courseuploadsize.html b/lang/hu/help/courseuploadsize.html deleted file mode 100644 index 4f0ece451a1..00000000000 --- a/lang/hu/help/courseuploadsize.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Feltöltendő kurzus mérete

                          - -

                          Ez a beállítás határozza meg azt a legnagyobb állományméretet, amelyet a tanulók a kurzus folyamán feltöltethetnek és amelyet az adminisztrátor a portál beállítása során határoz meg. - -

                          Ezt a méretet tovább csökkenthetjük az egyes tevékenységmodulokhoz tartozó beállításokon keresztül. \ No newline at end of file diff --git a/lang/hu/help/dialogue/addsubject.html b/lang/hu/help/dialogue/addsubject.html deleted file mode 100644 index 05bc0063aba..00000000000 --- a/lang/hu/help/dialogue/addsubject.html +++ /dev/null @@ -1,4 +0,0 @@ -

                          Tárgy hozzáadása

                          - -

                          Ezzel a kapcsolódási ponttal tárgyat adhatunk hozzá a párbeszédhez. Mindig célszerű a párbeszédet tárggyal ellátni, mivel így könnyebb a párbeszédet nyomon követni és a témára adott válaszokra összpontosítani. Ha egy másik tárgyról akarunk beszélgetést kezdeményezni, jobb az adott párbeszédet bezárni és a témáról egy új párbeszédet kezdeni.

                          - diff --git a/lang/hu/help/dialogue/closedialogue.html b/lang/hu/help/dialogue/closedialogue.html deleted file mode 100644 index e2359bfa6ff..00000000000 --- a/lang/hu/help/dialogue/closedialogue.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Párbeszéd lezárása

                          -

                          Párbeszédet bármikor lezárhatunk. Párbeszéd lezárása során az adott párbeszéd leáll és törlődik az érvényes párbeszédek listájáról. Tehát a lezárt párbeszédek nem jelennek meg ezen az oldalon.

                          - -

                          A lezárt párbeszédeket megtekinthetjük, de nem bővíthetjük. Végezetül pedig a lezárt párbeszédek törlődnek és később már nem tekinthetők meg.

                          - -

                          Ha lezárunk egy adott párbeszédet, újat kell kezdenünk, ha az adott személlyel továbbra is "beszélni" akarunk. Ekkor az adott személy újból megjelenik azok listáján, akikkel párbeszédet kezdeményezhetünk.

                          - diff --git a/lang/hu/help/dialogue/deleteafter.html b/lang/hu/help/dialogue/deleteafter.html deleted file mode 100644 index f56983bbd5e..00000000000 --- a/lang/hu/help/dialogue/deleteafter.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Párbeszédek törlése

                          -

                          Itt állíthatjuk be a párbeszédek törlése között eltelő napok számát. A lehetőség csakis a LEZÁRT párbeszédekre vonatkozik.

                          - -

                          Ha az időtartamot nullára állítjuk, akkor a párbeszédek törlésére sosem kerül sor.

                          - diff --git a/lang/hu/help/dialogue/dialoguetype.html b/lang/hu/help/dialogue/dialoguetype.html deleted file mode 100644 index 74b2d472054..00000000000 --- a/lang/hu/help/dialogue/dialoguetype.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Párbeszédtípusok

                          -

                          Háromféle párbeszéd létezik.

                          - -
                          1. Tanár a tanulóval Ez a tanár és a tanuló között tesz lehetővé párbeszédet. A párbeszéd mind a tanár, mind a tanuló kezdeményezheti. Az emberek listájából a tanárok csak a tanulókat, a tanulók pedig csak a tanárokat látják.

                          2. - -
                          3. Tanuló a tanulóval Ez tanulók közötti párbeszédre ad lehetőséget. A tanárok egyáltalán nem vesznek részt ebben a párbeszédtípusban.

                          4. - -
                          5. Mindenki Itt az osztályból bárki kezdeményezhet párbeszédet bárkivel. Tanárok kezdeményezhetnek párbeszédet más tanárokkal és tanulókkal, illetve tanulók kezdeményezhetnek párbeszédet más tanulókkal és a tanárokkal.

                          6. -
                          diff --git a/lang/hu/help/dialogue/index.html b/lang/hu/help/dialogue/index.html deleted file mode 100644 index 7b32319a6e2..00000000000 --- a/lang/hu/help/dialogue/index.html +++ /dev/null @@ -1,10 +0,0 @@ -

                          Párbeszédek

                          - diff --git a/lang/hu/help/dialogue/info.html b/lang/hu/help/dialogue/info.html deleted file mode 100644 index 8fedec79902..00000000000 --- a/lang/hu/help/dialogue/info.html +++ /dev/null @@ -1,10 +0,0 @@ - Párbeszédek

                          - -

                          Ez a modul felhasználópárok közötti egyszerű kapcsolattartáshozt biztosít lehetőséget. Tanár kezdeményezhet párbeszédet tanulóval, tanuló kezdeményezhet párbeszédet a tanárral, illetve (opcionálisan) tanuló kezdeményezhet párbeszédet egy másik tanulóval. Egy tanár vagy egy tanuló egy időben több éppen zajló párbeszédben vehet részt.

                          - -

                          A párbeszédhez korlátlan számú belépési pont tartozhat, a "beszélgetés" általában egymáshoz vegyesen kapcsolódó válaszok formájában zajlik. A forma használata nem erőltetett és bármely fél bármikor kiegészítheti a párbeszédet.

                          - -

                          A párbeszédet bárki bármikor lezárhatja. A lezárt párbeszédet nem lehet újból megnyitni. Ugyanakkor a lezárt párbeszédet bármely fél bármikor megtekintheti, ha az még létezik...

                          - -

                          ...A modul egy bizonyos idő elteltével a lezárt párbeszédet és a hozzá kapcsolódó belépéseket törli. Ennek időpontját a rendszer a párbeszéd létrehozásakor állítja be.

                          - diff --git a/lang/hu/help/dialogue/maildefault.html b/lang/hu/help/dialogue/maildefault.html deleted file mode 100644 index c949e4c307e..00000000000 --- a/lang/hu/help/dialogue/maildefault.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Levelek alapbeállítása

                          -

                          Ezzel az opcióval állíthatjuk be, hogy küldhetők legyenek-e értesítések. Ha ezt az opciót "Igen"-re állítjuk, akkor az új fogalom címzettje egy rövid e-mail üzenetet kap. Az e-mail üzenet nem tartalmazza a fogalom szövegét, mindössze egy mondatot, amely szerint megtörtént egy új fogalom hozzáadása, továbbá megjelenik egy hivatkozás a párbeszédre.

                          - -

                          Megjegyzés: ez az opció vonatkozik az adott párbeszédes esemény esetén az összes párbeszédre. Az opciót bármikor módosíthatjuk.

                          - - diff --git a/lang/hu/help/dialogue/mods.html b/lang/hu/help/dialogue/mods.html deleted file mode 100644 index 59855ac61f1..00000000000 --- a/lang/hu/help/dialogue/mods.html +++ /dev/null @@ -1,4 +0,0 @@ -

                           Párbeszédek

                          -
                            -

                            Ez a modul felhasználópárok közötti egyszerű kapcsolattartáshozt biztosít lehetőséget. Tanár kezdeményezhet párbeszédet tanulóval, tanuló kezdeményezhet párbeszédet a tanárral, illetve (opcionálisan) tanuló kezdeményezhet párbeszédet egy másik tanulóval. Egy tanár vagy egy tanuló egy időben több éppen zajló párbeszédben vehet részt.

                            -
                          diff --git a/lang/hu/help/dialogue/multiple.html b/lang/hu/help/dialogue/multiple.html deleted file mode 100644 index d2129d3a1f7..00000000000 --- a/lang/hu/help/dialogue/multiple.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Többszörös párbeszéd

                          - -

                          Ezzel az opcióval egy személy egyszerre több párbeszédet kezdeményezhet egy másik személlyel. Az alapbeállítás a No [Nem], ami két ember között egy (nyitott) párbeszéd folytatását teszi lehetővé.

                          - -

                          A több párbeszéd engedélyezése az eszközzel való visszaélést vonhatja magával. Némelyeket idegesíthet, ha valaki egy sor szükségtelen párbeszédet kezdeményez velük.

                          - diff --git a/lang/hu/help/dialogue/sendmail.html b/lang/hu/help/dialogue/sendmail.html deleted file mode 100644 index e7bfdf1d79f..00000000000 --- a/lang/hu/help/dialogue/sendmail.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Levélüzenetek küldése

                          - -

                          Ha a négyzet be van jelölve, a rendszer levélüzenetet küld a másik személynek, melyben értesíti, hogy bekapcsolódtunk a párbeszédbe (vagy elindítottunk egy párbeszédet). Az üzenet nem tartalmazza a belépést, csupán egy rövid megállapítást és - adott esetben - egy ugrópontot, ahol a párbeszéd megtekinthető.

                          - -

                          Ilyen levélüzenetre csak akkor van szükség, ha úgy véljük, a másik személy feltehetőleg nem látja majd a belépésünket, mert ritkán használja a kurzust. A résztvevői lista alapján kideríthetjük, ki mikor vett részt utoljára aktívan a kurzusban.

                          - diff --git a/lang/hu/help/dialogue/writing.html b/lang/hu/help/dialogue/writing.html deleted file mode 100644 index e39ed27517f..00000000000 --- a/lang/hu/help/dialogue/writing.html +++ /dev/null @@ -1,13 +0,0 @@ -

                          Írás

                          - -

                          Ha mások által olvasandó szöveget írunk, igyekezzünk azt közvetlenül az olvasóközönségnek írni.

                          - -

                          Gondolatainkat a lehető legvilágosabban és legegyszerűbben fejtsük ki a félreértések elkerülése végett. Az egyik eszköz erre, ha rövid szavakat használunk ott, ahol hosszabb kifejezések is szerepelhetnének.

                          - -

                          Párbeszéd esetén mindenképpen segít, ha az üzeneteinket rövidre és a tárgyra vonatkozóra szabjuk. A párbeszédet bármikor lezárhatjuk és új megbeszélést kezdeményezhetünk valaki mással. - -

                          Másokhoz írt válasz esetén próbáljunk érdekes kérdéseket feltenni nekik. Ezzel mind magunk, mind a másik személy számára esélyt adunk a megbeszélés folyamán arra, hogy gondolkozzunk (és tanuljunk!).

                          - - -

                          További tájékoztatás az kérdésfeltevésről

                          -

                          További tájékoztatás az olvasásról

                          diff --git a/lang/hu/help/enrolmentkey.html b/lang/hu/help/enrolmentkey.html deleted file mode 100644 index a727d4f1da9..00000000000 --- a/lang/hu/help/enrolmentkey.html +++ /dev/null @@ -1,11 +0,0 @@ -

                          Kurzusfelvételi kulcs

                          - -

                          A kurzusfelvételi kulccsal tarthatjuk távol kurzusunktól a nemkívánatos személyeket. - -

                          Ha ezt üresen hagyjuk, akkor bárki, aki ezen a weboldalon Moodle-felhasználónevet hoz létre, egyszerűen belépve felveheti a kurzust. - -

                          Ha ide beírunk valamit, akkor azok a tanulóknak, akik ELSÕ ALKALOMMAL próbálnak belépni, meg kell adniuk ezt a szót vagy kifejezést. - -

                          A megfontolás e mögött az, hogy az egyéb eszközöket, például saját e-mailt, postai küldeményt, telefont vagy akár osztálytermi kommunikációt használnak a kapcsolattartásra, megkaphassák tőlünk a részvételi jogosultságot. - -

                          Ha ez a jelszó nyilvánosságra kerül és nemkívánatos személyek kezdik fölvenni a kurzust, kiíratkoztathatjuk őket (l. a felhasználói profiljukat tartalmazó oldalt) és megváltoztathatjuk ezt a kulcsot. A már jogszerűen beíratkozott tanulókat ez nem érinti, ugyanakkor a nemkívánatos személyek nem fogják tudni újból fölvenni a kurzust. \ No newline at end of file diff --git a/lang/hu/help/enrolperiod.html b/lang/hu/help/enrolperiod.html deleted file mode 100644 index fa681390846..00000000000 --- a/lang/hu/help/enrolperiod.html +++ /dev/null @@ -1,10 +0,0 @@ -

                          Beíratkozási időszak

                          - -

                          Itt adható meg, hány napig íratkozhat be egy tanuló erre a kurzusra (a beíratkozás pillanatától számítva).

                          - -

                          Beállítása esetén a tanulók a megadott idő letelte után automatikusan kiíratkoznak. -A legalkalmasabb olyan kurzusok esetén, amelyeknek nincs konkrét kezdési és befejezési időpontja.

                          - -

                          Ha nincs beállítva, akkor a tanulók mindaddig a kurzusban maradnak, amíg közvetlenül ki nem íratkoznak, -illetve el nem érkezik a tétlen tanulók eltávolításának az ideje.

                          - diff --git a/lang/hu/help/exercise/administration.html b/lang/hu/help/exercise/administration.html deleted file mode 100644 index 47db6b79ebf..00000000000 --- a/lang/hu/help/exercise/administration.html +++ /dev/null @@ -1,12 +0,0 @@ -

                          Adminisztráció

                          - -

                          Ezen a képernyőn az első táblázat alapján látható, hogyan történik a leadott munkák átlagos pontszámának a kiszámítása. Az átlagos pontszám két komponens súlyozott összege.

                          - -
                          1. A tanár pontszáma a tanuló saját munkájára vonatkozó (kezdeti) értékelésére. Ezt nevezhetjük "osztályozó pontszám"-nak. Ha a tanuló leadta munkáját, az értékelés felülbírálására nincs mód. A tanulótól NEM kérjük, hogy munkáját minden egyes újbóli leadás alkalmával értékelje újra. A tanulói értékelésre adott pontszám fontos a tanuló teljesítménye szempontjából, de nincs akkora jelentősége, mint a munka (tanár) értékelésének. Általában véve kisebb súlyt kell hozzárendelni, mint... -
                          2. A tanár által a tanuló munkáira adott pontszám. Ezek az értékelések általában egy adott gyakorlati feladat fő értékelési elemét jelentik. Amikor a tanulók egynél több munkát adhatnak le, a tanár eldöntheti, hogy a gyakorlatra adott végleges pontszámot a tanuló leadott munkáinak az átlagpontszáma, vagy a tanuló legjobb leadott munkájának a pontszáma alapján határozza-e meg.
                          - -

                          Ezen két komponens súlyozása az adott feladat tekintetében megfelelőnek vélt módon történik. Például a tanár igen alacsony súlyozással veheti figyelembe a (kezdeti) értékelési pontszámot (az osztályozó pontszámot), melyhez akár nulla súlyt is rendelhet. Ebben az esetben a tanulói pontszámot alapvetően vagy teljes mértékben a leadott munkájukra adott pontszám határozza meg. A két súlyozási tényező a gyakorlat során bármikor módosítható, a Pontszám oldalon és a Végső pontszám listán azonnal a módosított pontszám jelenik meg.

                          - -

                          A második táblázattal a ligatáblázat két opcióját lehet beállítani. Ezt a táblázatot a tanulók (opcionálisan) a feladat végén tekinthetik meg. Ha a bejegyzések száma nullánál nagyobbra van beállítva, akkor a táblázat akkor jelenik meg a tanuló előtt, amikor a feladat megoldása a végső szakaszba jutott. A másik opció azt határozza meg, hogy a tanulók neve megjelenjen-e a táblázatban. Ne feledjük, hogy a tanár által látott ligatáblázatban ezen beállítástól függetlenül a tanulók nevei mindig megjelennek. - -

                          Az Adminisztráció oldal emellett feltünteti a tanár leadott munkáit (a gyakorlat leírását), a tanuló saját munkájának (kezdeti) értékelését és a tanuló által leadott munkákat. Ezek a táblázatok adott esetben mindig átnevezhetők, törölhetők megtekinthetők vagy újraértékelhetők. Az oldalnak ezen a részén nyomon követhetjük a tanuló előrejutását a gyakorlat egésze során.

                          diff --git a/lang/hu/help/exercise/comparisonofassessments.html b/lang/hu/help/exercise/comparisonofassessments.html deleted file mode 100644 index e626257b3ce..00000000000 --- a/lang/hu/help/exercise/comparisonofassessments.html +++ /dev/null @@ -1,61 +0,0 @@ -

                          Értékelések összehasonlítása

                          - -

                          Egy-egy gyakorlatban gyakran előfordul, hogy egy adott munkát kétszer értékelnek. - A tanulók leadás előtt értékelik munkáikat, majd a tanár - (újra)értékeli a munkát. A tanári értékelés -a tanulói értékelést használja kiindulópontként. -A gyakorlat értékelésekor a pontok egy része a tanulói értékelést, -a fennmaradó része a munka tanár általi értékelését -pontozza. (Ezek maximális pontszámainak neve "Tanulói értékelés -pontszáma", illetve "Leadott munkák pontszáma".) Figyelje meg, hogy a -tanulói értékelés során kapott pont itt nem kap szerepet. A tanuló értékelése -annak alapján pontozódik, hogy mennyire közelítette meg a tanári értékelést.

                          - -

                          A tanulói és a tanári értékelés közötti egyezés mértékét -az egyes elemekre adott pontszámok különbsége (voltaképpen a négyzetes különbségek) -adják. A különbségek átlagát kell értelmes pontszámmá alakítani. -Az "Értékelések összehasonlítása" használatával szabályozhatja a -tanár, hogy az összehasonlítások miként alakuljanak át pontszámokká.

                          - -

                          Ennek a következményeit megvilágíthatjuk az alábbi egyszerű -példával, mely tíz igen--nem kérdés értékelését tartalmazza. -A benne szereplő kérdések például a következők lehetnek: -"A táblázatot helyesen állították elő?", -"A számított nyereség 100,66 forint?" stb. Tíz ilyen kérdés esetén -ha a beállítás "Igen laza", a tanuló és a tanár -értékelése közötti tökéletes egyezés esetén a pont 100%, -egy kérdés eltérése esetén 90%, kettőnél 80%, háromnál 70% stb. -Ez elfogadhatónak tűnik, ezért fölmerülhet Önben, miért lett -az összehasonlítás megjelölése "Nagyon laza". -Vegyük alapul azt az esetet, amikor a tanuló a hasára ütve értékeli a -10 kérdésre adott választ. Átlagosan esetében 10-ből 5 -kérdésnél volna egyezés. Így találgatással 50% -körüli eredményt érne el. -A helyzet értelmesebbé tehető a "Laza" opcióval, mely esetben a találgatás -mintegy 20%-ot ér. A "Közepes" opciónál a találgatás legtöbbször -nulla pontot eredményez. Ezen a szinten 50% akkor adható, ha a két értékelés a -tízből nyolc kérdésnél egyezik. -Három eltérés esetén a pont csak 25%. A "Szigorú" esetén két -különböző értékelésű kérdésnél a pontszám 40%. -A "Nagyon szigorú" tartományban már két eltérés is 35%-os, -egyetlen eltérés pedig 65%-os eredményt ad.

                          - -

                          Ez a példa meglehetősen mesterséges, mivel az értékelések többsége -értéktartományra, nem igen--nem értékre vonatkozik. Ilyen esetekben -az összehasonlítás feltehetőleg a fentieknél magasabb pontokat eredményez. -A különféle szintek (Nagyon laza, Laza, Közepes...) úgy vannak megadva, hogy -a tanár finomítani tudja a hasonlításokat. Ha úgy érzékeli, hogy az értékelésre adott -pontok túl alacsonyak, elviheti az értékelést a "Laza" vagy -akár a "Nagyon laza" irányába. És megfordítva: -ha a tanuló értékelését túl magasnak érzékeli, elmozdulhat a -"Szigorú" vagy a "Nagyon szigorú" irányába. Az egész próbálkozás -dolga, miközben a legjobb kiinduló pont a "Közepes" opció.

                          - -

                          A gyakorlat során a tanár úgy érzékelheti, hogy a tanulói értékelésekre adott -pontok túl alacsonyak vagy túl magasak. Ezek a pontok látszanak a gyakorlat adminisztrációs oldalán. -Ilyenkor a tanár módosíthatja az opció beállítását és -újraszámolhatja a tanulók értékelések pontszámát -(a "Pontozási pontokat"). Az újraszámításhoz kattintson a gyakorlat -adminisztrációs oldalán található "Tanulói értékelések -újrapontozása" pontra. Ezt a gyakorlat folyamán bármikor végrehajthatja.

                          - diff --git a/lang/hu/help/exercise/elements.html b/lang/hu/help/exercise/elements.html deleted file mode 100644 index 617cd90d88e..00000000000 --- a/lang/hu/help/exercise/elements.html +++ /dev/null @@ -1,20 +0,0 @@ -

                          Feladatelemek

                          - -

                          A pontozás megkönnyítése érdekében a csoportos feladatnak ésszerű számú értékelési elemmel kell rendelkeznie. Az egyes elemeknek a feladat valamely konkrét szempontjára kell vonatkozniuk. Jellemző esetben egy-egy feladathoz 5 - 15 megjegyzési pontozási elemet kell hozzárendelni, a tényleges szám a feladat méretétől és bonyolultságától függ. Csoporttársi feladat esetén megengedett egyetlen elem használata, és hasonló értékelés stratégiával ruházható fel, mint egy szokásos Moodle-feladat. - -

                          Az elemek típusa a feladat pontozási stratégiájától függ. - -

                          Nem pontozott Az elemek a feladat szempontjainak a leírásai. Az értékelést végzőt arra kérjük, hogy fűzzön megjegyzéseket ezekhez a szempontokhoz. Akárcsak az összes pontozási stratégia esetén, létezik egy terület az általános megjegyzések számára. - - -

                          Akkumulatív pontozás Az elemek az alábbi három jellemzővel rendelkeznek: -

                            -
                          1. Az értékelési elemek LEÍRÁSA Ennek egyértelműen rögzíteni kell, hogy a feladatot mely szempont szerint értékeljük. Ha az értékelés minőségi, célszerű részletezni, mit tekintünk kiválónak, közepesnek, illetve gyengének.
                          2. Az értékelési elemek SKÁLÁJA Egy előre meghatározott számú skála áll rendelkezésre. Ezek az egyszerű igen/nem jellegű skálától a többpontos skálán keresztül a teljes százalékos skáláig terjednek. Minden elemnek megvan a maga skálája, amelynek igazodnia kell az adott elemhez kapcsolódó lehetséges variációk számához. Ne feledjük, hogy a skála NEM határozza meg az elem fontosságát az átlagos pontszám kiszámítása során, azaz egy kétpontos skálának azonos a "Hatása", mint a 100 pontosnak, ha a megfelelő elemek azonos súllyal szerepelnek... - -
                          3. Az értékelési elemek SÚLYA Alaphelyzetben az elemek azonos fontosságúak a feladat átlagos pontszámának a kiszámítása során. Ez megváltoztatható, ha a fontosabb elemekhez 1-nél nagyobb, a kevésbé fontosakhoz 1-nél kisebb súlyt rendelünk. A súlyok módosítása NEM befolyásolja a maximális pontszámot, azt az értéket ugyanis a csoporttársi feladathoz tartozó 'maximális pontszám' paraméter határozza meg. A súlyok kaphatnak negatív értékeket, ez kísérleti jelleggel alkalmazható.
                          -

                          Hibán alapuló pontozás Az elemek általában olyan tételeket vagy szempontokat fogalmaznak meg, amelyeknek meg kell jelennie a feladatban. Az értékelés ezen tételek vagy szempontok meglétén vagy hiányán alapszik. A tanárnak olyam pontszámtáblázatot kell beállítania, amely a javaslat szerinti pontokat adja akkor, ha minden tétel jelen van, ha egy hiányzik, ha kettő hiányzik stb. Ha egyes tételek fontosabbak, mint a másik, akkor ezekhez a tételekhez 1-nél nagyobb súlyt rendelhetünk. A kisebb tételekhez 1-nél kisebb súlyt rendelhetünk. A globális "hibaszám" a hiányzó tételek súlyozott összege. Az értékelést végző mindig végrehajthat kisebb módosításokat ezeken a javaslat szerinti pontokon. - -

                          Kritériumon alapuló pontozás Az elemek "szintre" vonatkozó megállapításokat tartalmaznak, melyekkel a feladat rangsorolható. A megállapítások lehetnek összegezendő jellegűek, illetve lehetnek önmagukban álló megállapítások. Az értékelést végzőnek kell eldöntenie, hogy melyik megállapítás illik jobban az egyes munkákra. A tanárnak minden kritériumra vonatkozó megállapítást egy javasolt pontszámhoz kell kapcsolnia. Ezeket általában el kell rendezni. Az értékelést végző végrehajthat kisebb módosításokat ezeken a javaslat szerinti pontokon.

                          - -

                          Rubrika alapú pontozás Hasonlít a kritériumon alapuló pontozáshoz, de itt egynél több kritériummal dolgozunk. A kritériumok számát a feladat paraméterei között adjuk meg. Az egyes kritériumokon belül legfeljebb öt "szintre" vonatkozó megállapítást tehetünk. Egy adott feladaton belül a szintek száma kritériumról kritériumra változhat. Egy-egy kritérium beállítása során egy üres "szintre" vonatkozó megállapítás jelzi a "szintre" vonatkozó megállapítás végét. Ennek megfelelően némely kritériumhoz két szint tartozhat, más esetben három szint, legfeljebb öt szint lehetséges. A kritériumok súlyozhatók. A szintekhez 0, 1, 2, legfeljebb 4 pont rendelhető. Az értékelés pontszáma ezen pontok súlyozott összege. -

                          \ No newline at end of file diff --git a/lang/hu/help/exercise/finalgrades.html b/lang/hu/help/exercise/finalgrades.html deleted file mode 100644 index 51bc8a63ee5..00000000000 --- a/lang/hu/help/exercise/finalgrades.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          A végső pontszám

                          - -

                          Az ezen a képernyőn megjelenő táblázat a végső pontszámokat és azok megoszlását jeleníti meg. Az első pontszám a (kezdeti) értékelés pontszáma. Ez hozzáadódik minden egyes leadott munka pontszámához. A Súlyok sor adja meg azokat a tényezőket, amelyek az átlagos pontszám ezen két pontszámból való kiszámításához használatosak. Az ezen feladatra adott végső pontszám vagy ezen összes pontszám átlaga, vagy a legjobb leadott munka átlagos pontszáma lesz. - -

                          A ligatáblázat opcionálisan a legjobb leadott munkákat sorolja fel. A táblázatban szereplő tételek számát az Adminisztrátor oldal szabja meg. Ha az a szám nullára van állítva, akkor a ligatáblázat nem jelenik meg. A táblázat a pontszámok sorrendje szerint van elrendezve, a legjobb leadott munka van legelöl. A táblázat csakis egy tanuló legjobb leadott munkáját mutatja.

                          diff --git a/lang/hu/help/exercise/grade.html b/lang/hu/help/exercise/grade.html deleted file mode 100644 index 504371351ef..00000000000 --- a/lang/hu/help/exercise/grade.html +++ /dev/null @@ -1,3 +0,0 @@ -

                          A gyakorlatra adott pontszám

                          - -

                          Ez az érték határozza meg azt a maximális pontszámot, amely a gyakorlatra adható. A tartomány 0 és 100% között változhat. Ez az érték a gyakorlat alatt bármikor módosíthat. Ha változtatást hajtunk végre, az azonnal megjelenik a Pontok oldalon, az értékelésekre és a leadott munkákra adott pontokban, valamint a kijelzett végösszesítésben és a ligatáblázatban (feltéve, hogy a feladat abban a szakaszban tart).

                          diff --git a/lang/hu/help/exercise/grading.html b/lang/hu/help/exercise/grading.html deleted file mode 100644 index 89d7d30cef4..00000000000 --- a/lang/hu/help/exercise/grading.html +++ /dev/null @@ -1,18 +0,0 @@ -

                          Feladatok pontozása

                          - -

                          Ennél a gyakorlatnál ugyanaz az értékelési űrlapot használja a tanuló és a tanár az elkészült munka értékelésére. Az űrlapot a két csoport a gyakorlat különféle szakaszaiban használja, így itt a magyarázat két részre oszlik.

                          - -

                          A tanulók esetén

                          - -

                          Az értékelési űrlap szerepe főként az, hogy megmutassa, miként fogja az értékelést végző tanár az Ön munkáját értékelni. Ezt az űrlapot még a munka leadása előtt kell kitöltenie. A lapot ellenőrző jegyzékként használhatja. Az űrlapot a rendszer mentéskor nem továbbítja a tanárhoz. Módja van a későbbiekben visszatérni az űrlaphoz és annyiszor módosítani (saját munkájával együtt), ahányszor csak akarja, feltéve, hogy a munkáját még - nem adta le. Ne feledje, hogy bár megteheti, nem szükséges munkáját közvetlenül ezen űrlap kitöltését követően leadni. Értékelésének a tartalma viszont rögzített marad és elérhetővé válik a tanár számára, amikor leadja a munkát.

                          - -

                          Ha a tanár arra kéri, hogy változtasson a munkáján és ismét küldje be, nem kéri a rendszer arra, hogy újból értékelje "új" munkáját. Ezt a fajta értékelést csakis "az első körben" tehetjük meg.

                          - -

                          A munka ezen (kezdeti) értékelését a tanár ellenőrzi, megjegyzéseket fűzhet hozzá és lepontozhatja. A megjegyzéseket megtekinthetjük és az értékeléshez kapott pontszámok ezen gyakorlat végső pontszámának a részét képezhetik.

                          - -

                          A tanár esetén

                          - -

                          Az értékelő űrlap a tanulók leadott munkájának a pontozására szolgál. Ezek a pontok általában a tanuló gyakorlatra kapott végső pontszámának fő összetevőjét adják. Az értékelést, annak pontszámát és bármely esetleges megjegyzést megtekintheti az a tanuló, aki a munkát leadta. Ha elkészültünk az értékeléssel, el kell döntenünk, hogy megengedjük-e a tanulónak, hogy módosítsa és újból leadja a munkáját - remélhetőleg javítva rajta -, vagy sem.

                          - -

                          Értékelés mentése során egy rövid idő áll rendelkezésre az esetleges módosításra, mielőtt az értékelést a rendszer "hozzáférhetővé teszi" a tanuló számára.

                          diff --git a/lang/hu/help/exercise/gradinggrade.html b/lang/hu/help/exercise/gradinggrade.html deleted file mode 100644 index 98f2646436d..00000000000 --- a/lang/hu/help/exercise/gradinggrade.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Értékelések pontozása

                          - -

                          Ezen oldal egyik felén a tanuló saját munkájára adott értékelése látható. Ezt az értékelést kell pontozni (legfeljebb 20-ig terjedő skálán). Ez a Kapcsolat négyzetek közül a másodikban feltüntetett munka értékelésének felel meg. (A kapcsolatokra vonatkozó legfelső négyzet magának a gyakorlatnak a leírása.) Az "osztályozó pontszámot" általában egy megjegyzésben kell kiegészíteni, amelyet a Tanár megjegyzése négyzetben lehet megadni. A pontszámnak az értékelés pontosságát kell tükröznie. Az az értékelés, amely alacsony pontszámot ad egy gyengébb munkára, magasabb osztályozó pontszámmal értékelendő, mint az, amely például egy jó munkára ad alacsony pontot.

                          - -

                          Az oldal másik felén egy üres értékelő űrlap található, melyen a tanulótól kapott munkát magunk értékelhetjük.

                          - \ No newline at end of file diff --git a/lang/hu/help/exercise/gradingstrategy.html b/lang/hu/help/exercise/gradingstrategy.html deleted file mode 100644 index ce2ebfb4847..00000000000 --- a/lang/hu/help/exercise/gradingstrategy.html +++ /dev/null @@ -1,20 +0,0 @@ -

                          Pontozási stratégia

                          - -

                          A csoportos feladat meglehetős rugalmasságot tesz lehetővé a használt pontozási sémát illetően. Ez lehet: - -

                            -
                          1. Nincs pontozás: Ilyen feladattípus esetén a tanár nem kíváncsi a tanulótól származó mennyiségi értékelésre. A tanulók megjegyzéseket fűznek a munkákhoz, de nem pontozzák őket. Ugyanakkor a tanár, ha kívánja, pontozhatja a tanulói megjegyzéseket. Ezek az "osztályozó pontszámok" képezik a tanulók végső pontszámának az alapját. Ha a tanár nem pontozza a tanulói értékeléseket, akkor a feladat semmilyen végső pontszámot nem kap. - -
                          2. Akkumulatív pontozás: Ez a pontozás alaptípusa. Ilyen feladattípus esetén az egyes értékelésekre adott pontszám egy sor "értékelési elemből" áll össze. Az egyes elemeknek a feladat valamely konkrét szempontjára kell vonatkozniuk. Jellemző esetben egy-egy feladathoz 5 - 15 megjegyzési pontozási elemet kell hozzárendelni, a tényleges szám a feladat méretétől és bonyolultságától függ. Csoporttársi feladat esetén megengedett egyetlen elem használata, és hasonló értékelés stratégiával ruházható fel, mint egy szokásos Moodle-feladat.

                            Az elemek az alábbi három jellemzővel rendelkeznek: -

                              -
                            1. Az értékelési elemek LEÍRÁSA. Ennek egyértelműen rögzíteni kell, hogy a feladatot mely szempont szerint értékeljük. Ha az értékelés minőségi, célszerű részletezni, mit tekintünk kiválónak, közepesnek, illetve gyengének. - -
                            2. Az értékelési elemek SKÁLÁJA. Egy előre meghatározott számú skála áll rendelkezésre. Ezek az egyszerű igen/nem jellegű skálától a többpontos skálán keresztül a teljes százalékos skáláig terjednek. Minden elemnek megvan a maga skálája, amelynek igazodnia kell az adott elemhez kapcsolódó lehetséges variációk számához. Ne feledjük, hogy a skála NEM határozza meg az elem fontosságát az átlagos pontszám kiszámítása sroán, azaz egy kétpontos skálának azonos a "Hatása", mint a 100 pontosnak, ha a megfelelő elemek azonos súllyal szerepelnek... - -
                            3. Az értékelési elemek SÚLYA. Alaphelyzetben az elemek azonos fontosságúak a feladat átlagos pontszámának a kiszámítása során. Ez megváltoztatható, ha a fontosabb elemekhez 1-nél nagyobb, a kevésbé fontosakhoz 1-nél kisebb súlyt rendelünk. A súlyok módosítása NEM befolyásolja a maximális pontszámot, azt az értéket ugyanis a csoporttársi feladathoz tartozó 'maximális pontszám' paraméter határozza meg. A súlyok kaphatnak negatív értékeket, ez kísérleti jelleggel alkalmazható.
                            - -
                          3. Hibán alapuló pontozás: Ilyen feladattípus esetén a leadott munka pontozása Igen/Nem skála alapján történik. A pontszámot a "pontszámtáblázat " határozza meg, amely meghatározza a "hibák" száma és a javasolt pontszám közötti összefüggést. Egy feladatnak lehet például hat olyan lényeges eleme, amelynek jelen kell lennie. A pontszámtáblázat megadja a javasolt pontokat, ha mind jelen van, ha egy hiányzik közülük, ha kettő stb. Az egyes elemekhez szükség esetén súlyozott tényezők rendelhetők, amennyiben egyes elemek fontosabbak, mint a többi. A "hibák" száma a meglévő elemek súlyozott összege. Alaphelyzetben minden elem súlya egy. A pontozási táblázat feltehetőleg nem lineáris, a javasolt pontok egy tíz elemesből álló feladat esetén például alakulhatnak ekként: 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%. Az értékelést végző az ajánlott pontszámokat felfelé vagy lefelé viheti akár 20%-kal ahhoz, hogy kialakítsa a leadott munka végső pontszámát. - -
                          4. Kritériumon alapuló pontozás: Ez a legegyszerűbben pontozható értékelésfajta (jóllehet, nem szükségszerűen a legegyszerűbb a kialakítása). A leadott munkák pontozása egy sor kritérium alapján történik. Az értékelést végző kiválasztja, melyik megállapítás illik legjobban az adott munkára. A pontszám megállapítása a "kritériumtáblázat" alapján történik, amely minden egyes kritériumhoz megadja a javasolt pontszámot. Például kialakítható egy olyan feladat, amely, mondjuk, öt kritériumot magában foglaló megállapításra épül. Ez esetben az értékelést végzőknek egyes értékeléseikhez az öt megállapítás közül ki kell választaniuk egyet. A hibán alapuló pontozáshoz hasonlóan az értékelést végző az ajánlott pontszámot a végső pontszámhoz viszonyítva legfeljebb 20%-kal módosíthatja.
                          5. Rubrika Hasonló a kritériumon alapuló pontozáshoz, azzal a különbséggel, hogy többszörös kritériumkészletek használatára épül. Minden készlet egy meghatározott "kategóriát" takar, melyhez legfeljebb öt megállapítás tartozhat. Az egyes készletekhez egyedi súlyok rendelhetők, a pontszám pedig az egyes készletek pontjainak súlyozott kombinációja. Ezen értékeléstípusnál nincs beállítási (módosítási) lehetőség. -
                          -

                          diff --git a/lang/hu/help/exercise/index.html b/lang/hu/help/exercise/index.html deleted file mode 100644 index b8c766816c2..00000000000 --- a/lang/hu/help/exercise/index.html +++ /dev/null @@ -1,21 +0,0 @@ -

                          Gyakorlatok

                          - diff --git a/lang/hu/help/exercise/leaguetable.html b/lang/hu/help/exercise/leaguetable.html deleted file mode 100644 index 7a34a713a8a..00000000000 --- a/lang/hu/help/exercise/leaguetable.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          League Table

                          - -

                          This option controls the display of a League Table at the end of the - exercise. If displayed, the league table displays a list of the best pieces - of work submitted in the exercise. If the number of entries is set to zero - then a League Table is not displayed in the last phase of the exercise.

                          - diff --git a/lang/hu/help/exercise/leaguetablenames.html b/lang/hu/help/exercise/leaguetablenames.html deleted file mode 100644 index fdc4188e5c0..00000000000 --- a/lang/hu/help/exercise/leaguetablenames.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          League Table Names

                          - -

                          This option controls whether the student's names are displayed in the League - Table shown at the end of the exercise. By default names are not shown, - that is, the table is anonymous.

                          - diff --git a/lang/hu/help/exercise/managing.html b/lang/hu/help/exercise/managing.html deleted file mode 100644 index 3f7f7ace219..00000000000 --- a/lang/hu/help/exercise/managing.html +++ /dev/null @@ -1,29 +0,0 @@ -

                          Gyakorlati feladat kezelése

                          - -

                          A gyakorlati feladat valamivel bonyolultabb, mint a szokásos feladat. Három lépésből vagy szakaszból áll. Ezek a következők: -

                            -
                          1. Gyakorlat beállítása A gyakorlat során elvégzett munka értékelése könnyebb, ha egy sor értékelési ELEM-re van lebontva. Ennek eredményeként a feladat pontozása kevésbé lesz önkényes és a tanulókat egyfajta kerettel látja el az értékelés elvégzéséhez. Az értékelési elemek összeállítása és ennek megfelelően a pontozási űrlap elkészítése a tanár feladata. (A részleteket lásd az adott oldalon.)

                            - -

                            Ha az értékelési elemek be vannak állítva, a tanárnak egy Word iratot vagy egy HTML-formátumú állományt kell leadnia, amely leírja a tanulók által elvégzendő gyakorlatot vagy feladatot. Ezt az állományt látják a tanulók a gyakorlat második szakaszában.

                            - -

                            Ha úgy akarják, a tanárok elkészíthetnek egy sor hasonló gyakorlatot - ismét csak Word irat vagy HTML-állomány formájában, majd feltölthetik a gyakorlatok közé. Ne feledjük, hogy ezeknek a gyakorlatoknak egészen hasonlónak kell lenni azon értékelő űrlaphoz, amelyet az összes ezen változathoz használnak. A tanár a mintamunkákat választhatóan adja közre. Előfordulhat, hogy bizonyos feladatok esetén ez nem is alkalmazható.

                            - -
                          2. Tanulói értékelések és munkaleadás engedélyezése A feladat ekkor nyitva áll a tanulók számára. Ha a tanár több gyakorlatot állít be, akkor a tanulók különféle gyakorlatokat látnak, ellenkező esetben az összes tanuló ugyanazt a gyakorlatot látja.

                            - -

                            Mielőtt a tanulók leadhatnák munkáikat, ki kell tölteniük egy értékelő űrlapot. Ha végeztek az értékelés kitöltésével, megjelenik előttük a feltöltési űrlap. A tanulók önértékelésük alapján felülvizsgálhatják munkájukat. A tanár látja a tanulók (ön)értékelését és agy értékelő űrlapot, amelyen pontozhatja a tanulók leadott munkáját. Ez egy "dupla értékelő űrlap". Ennek az űrlapnak a végén a tanár megkérheti a tanulót, hogy ha akarja, ismételten adja le a munkáját.

                            - -

                            Ha a tanuló úgy dönt, hogy újból leadja a munkáját, akkor a tanár újból értékelheti a munkát. Ugyanez a választhatóság teszi lehetővé a tanár számára, hogy nyomon kövesse ennek az újra leadott munka- és értékelési ciklusnak a menetét. Ha a tanulók több munkát adhatnak le a gyakorlathoz, akkor a tanárnak kell eldöntenie, hogy a végső pontszám a tanulók leadott munkáira kapott maximális pontszámán vagy átlagpontszámán alapuljon-e. Ez az opció bármikor módosítható a gyakorlat folyamán a gyakorlat frissítésével, melyet követően annak hatása azonnal láthatóvá válik a Pontszám oldalon.

                            - -

                            Amikor letelik a feladathoz tartozó határidő, a tanuló leadhatja vagy újból leadhatja a munkáját. A munka ilyenkor "kései" megjelölést kap. A munka megjelenik az értékelendő munkák között és a tanár, ha úgy akarja, a szokásos módon értékelheti a munkát. A munkák különféle jegyzékeiben a leadás dátuma piros színben látszik (mint ahogyan piros a leadott munka óta eltelt időben megjelölt munkák sorában is). Ha van pontozás, a későn leadott munka pontszáma piros színben és zárójelek között látszik. Ezek a pontok nem használatosak a végső pontszám kiszámításánál és nem kerülnek bele a Pontok oldalon lévő számításokba. A tanár a 'kései' megjelölést úgy törölheti, hogy átmegy az Adminisztrátor oldalra és rákattint a megfelelő ugrópontra. Ekkor a munka belekerül a végső pontszám kiszámításába.

                            - -
                          3. Átlagos pontszám és ligatáblázat megjelenítése A gyakorlat ezen utolsó szakaszában a tanulók láthatják saját "végső" pontszámukat. A gyakorlat minden szakaszában (kivéve az első szakaszt) a pontok elérhetőek a tanulók számára, ugyanakkor ezek csak "részleges" pontszámok, mivel kiszámításuk az éppen elérhető értékelésen alapul.

                            - -

                            Ebben az utolsó szakaszban a tanulók semmilyen további munkát nem adhatnak le. Gyakorlatilag a feladat lezárul és a tanárnak lehetősége van arra, hogy a tanulóknak a legjobb leadott munkák közül példákat mutasson be...

                            - -

                            A tanuló (és a tanár) ugyancsak megtekintheti a tanulók leadott munkájának a "ligatáblázatát. Itt a megjelenítés a pontszámok sorrendjében történik, a legjobb leadott munka áll az első helyen. Itt a leadott munkára adott pontszám a tanári pontszám. Ha egy tanuló egynél több munkát adott le, csakis a legjobb munkája jelenik meg ebben a táblázatban. Ha a táblázatban szereplő tételek száma nullára van állítva, akkor ez a táblázat nem jelenik meg.

                            -
                          - -

                          A tanulói pontszám a tanár által a (kezdeti) értékelésükre adott pontozás és a munkájukra adott tanári pontozás súlyozott átlaga. A két súlyozási tényező kezdetben egyként szerepel. Ezek a gyakorlat során bármikor módosíthatók (az Adminisztrátor oldalon), miközben a tanulók és a tanár által látott pontok mindig az éppen aktuális súlyozási tényezőket mutatják.

                          - -

                          A feladat bármely szakaszában a tanár megnyithatja az "Adminisztrátor" oldalt. Ez jelzi a két súlyozási tényező éppen érvényes értékeit és módot ad a tanárnak a módosításukra. Felsorolja a tanulói (saját munkára adott) értékeléseket és a tanulók leadott munkáit. A tanár ezt az oldalt használhatja a leadott munkák értékelésére és újbóli értékelésére, az értékelések pontozására és újbóli pontozására, itt törölhet leadott munkákat és értékeléseket, és általában véve ezen az oldalon követheti nyomon a feladat menetét.

                          - diff --git a/lang/hu/help/exercise/mods.html b/lang/hu/help/exercise/mods.html deleted file mode 100644 index ee6c9a80891..00000000000 --- a/lang/hu/help/exercise/mods.html +++ /dev/null @@ -1,6 +0,0 @@ - Gyakorlat - -
                            -

                            A gyakorlat egy egyszerű, de hasznosan alkalmazható feladat. Egy gyakorlat esetén a tanár megkéri a tanulót, hogy hajtson végre valamilyen gyakorlati jellegű tevékenységet. Ilyen lehet például egy esszé vagy jelentés megírása, egy bemutató elkészítése, egy számolótáblázat kidolgozása stb. Ha a tanuló végzett a feladattal, először önmagának kell azt értékelnie, mielőtt a munkát leadná a tanárnak. A leadott munkát a tanár értékelheti akár a tanulói értékelést, akár magát a munkát. A tanár visszajelzést küldhet a tanulónak és megkérheti arra, hogy javítsa ki, továbbá - az adott helyzettől függően - kérheti, hogy ismételten nyújtsa be a munkát.

                            -
                          - diff --git a/lang/hu/help/exercise/moreinfo.html b/lang/hu/help/exercise/moreinfo.html deleted file mode 100644 index 9f547d39bad..00000000000 --- a/lang/hu/help/exercise/moreinfo.html +++ /dev/null @@ -1,25 +0,0 @@ - Gyakorlat - -

                          A gyakorlat egy egyszerű, de hasznosan alkalmazható feladatfajta. A gyakorlatot a tanár arra használja, hogy valamilyen konkrét munka elvégzését kérje a tanulóktól. Ez lehet egy esszé vagy jelentés megírása, egy bemutató elkészítése, vagy egy számlálótáblázat kidolgozása stb. Amikor egy tanuló befejezte a munkát, leadás előtt önmagának értékelnie kell a feladatot. Ha leadja, a tanár mind a tanulói értékelést, mind magát a munkát értékelheti. A tanár visszajelzést küldhet a tanulónak és megkérheti, hogy javítson rajta, illetve - az adott esettől függően - újból leadhatja azt.

                          - -

                          A gyakorlat elkezdése előtt a tanár beállítja a gyakorlatot egy -

                          1. Word vagy egy HTML állomány segítségével, amelyben bevezeti a gyakorlatot és elmondja a tanulóknak, hogy mit kell elvégezniük. Ezt az állományt a tanár feltölti a gyakorlatba. - -
                          2. Szövegelemek hozzáadása és opciók kiválasztása az értékelő űrlapon. Ezt az űrlapot a tanuló és a tanár egyaránt a gyakorlat során elkészült munka értékelésére használja. Különféle értékeléstípusok használatára van lehetőség (lásd a "pontozási stratégiára" vonatkozó súgót).

                          - -

                          Nagy osztályoknál előfordulhat, hogy a tanár hasznosnak ítéli meg, ha a gyakorlat egynél több változatban készül el. Ezek a változatok sokszínűbbé teszik a gyakorlatot és biztosítják, hogy a tanulók egy-egy gyakorlatban különféle feladatokat oldjanak meg. Ezeket a tanulók véletlenszerűen, de bizonyos egyensúly megtartása mellett kapják meg. Minden tanuló csak egy gyakorlatot kap, de adott osztályon belül a változatok kiosztása körülbelül azonos módon történik. Ne feledjük, hogy a változatok lehetőleg ne térjenek el egymástól túlzott mértékben, mivel minden változathoz ugyanaz az értékelő űrlap használatos.

                          - -

                          Ha elkészült a gyakorlat leírása és megvan az értékelő űrlap, a feladat megnyílik a tanuló előtt. A tanulók megkapják a gyakorlat vagy a feladat leírását. Amikor végeztek a gyakorlattal, értékelniük kell saját munkájukat (az előre elkészített értékelő űrlap segítségével), mielőtt leadják munkájukat a tanárnak. Az értékelő űrlapot a tanulók ellenőrző jegyzékként használhatják. Ha kívánják, a munka tényleges leadása előtt mind munkájukat, mind az értékelést átnézhetik, amit feltehetőleg ajánlatos is megtenniük!

                          - -

                          Ha egy tanuló leadta a munkáját, akkor mind annak értékelése, mind maga a munka elérhetővé válik a tanár számára. Az értékelések pontozhatók és használható egy szövegnégyzet is a megjegyzések megírására. A tanár az adott munkához úgyszintén hozzáférhet (kiindulási pontként a tanulói értékelést használva fel) és eldöntheti, hogy megkéri-e a tanulót a munka javított változatának a beküldésére, avagy sem.

                          - -

                          Ha a tanár úgy véli, hogy a tanuló munkája javítható, akkor lehetőséget adhat neki arra, hogy újból leadhassa a munkát. Ebben az esetben a tanár újraértékeli a munkát azon az értékelő űrlapon, amely azokat a pontokat és megjegyzéseket tartalmazza, amelyeket a tanuló korábbi leadott munkájához fűztek. Ennek megfelelően az újraértékelés az űrlap frissítését jelenti a tanuló által felülvizsgált munka alapján, szemben a nulláról való értékeléssel.

                          - -

                          Amikor letelik a gyakorlathoz rendelkezésre álló határidő, a tanulók folytathatják a munkák leadását. A munka viszont ilyenkor "kései" megjelölést kap. A tanár szükség esetén pontozhatja a munkát és visszajelzést küldhet a tanulónak. A későn leadott munkára kapott pontokat a rendszer visszatartja és nem használja fel a végső pontszám kiszámítására. Ha viszont bármilyen okból a tanár egy kései munkát normál munkaként kíván elfogadni, eltörölheti mellőle a "kései" megjelölést, ha áttér az Adminisztrátor oldalra, kikeresi a leadott munkát és rákattint a megfelelő ugrópontra. Ekkor a munkára adott pont belekerül a végső pontszám kiszámításába.

                          - -

                          Amikor megtörtént az összes leadott munka pontozása, a gyakorlat átkerül a végső szakaszba. A tanulók ezt követően már nem adhatnak le munkát. A tanulók megtekinthetik végső pontszámaikat a leadott munkáikra kapott pontokkal együtt. A tanuló gyakorlatra kapott pontszáma a tanárnak az önértékelésre adott és a tanárnak a munkára adott pontszáma súlyozott kombinációjából áll elő. (A tanuló által adott pontszámot a rendszer nem használja fel.) Magukra a leadott munkákra a pontszám a tanári értékelésből alakul ki. A két ponthoz (az osztályozó pontszámhoz és az adott munkára vonatkozó tényleges pontszámhoz) tartozó súlyokat a feladat során bármikor lehet módosítani (a súlyok beállítása az Adminisztrátor oldalon történik).

                          - -

                          Amikor a tanár engedélyezi a tanulóknak a munka újbóli leadását, a tanárnak fontolóra kell vennie, hogy miként állítja be azt az opciót, amellyel szabályozza, miként történjék a tanuló végső pontszámának a kiszámítása a többszörösen leadott munka alapján. Ez az opció lehetővé teszi a tanár számára, hogy átlagpontszámot vegyen figyelembe a tanuló leadott munkájával kapcsolatban, illetve a legjobb leadott munkát. Ez az opció bármikor megváltoztatható, eredménye pedig azonnal megjelenik a pontokat tartalmazó képernyőn.

                          - -

                          A gyakorlat utolsó szakaszában a tanulók megtekinthetik a leadott munka "ligatáblázatát" is. Ez a táblázat azon leadott munkák rendezett jegyzékét tartalmazza, melyeket tekintve a legmagasabb pontszámot elért munka van legfölül. Ha több leadott munka van, a jegyzéken egy adott tanulónak csak a legjobb leadott munkája jelenik meg.

                          - diff --git a/lang/hu/help/exercise/nelements.html b/lang/hu/help/exercise/nelements.html deleted file mode 100644 index cefcc5e739a..00000000000 --- a/lang/hu/help/exercise/nelements.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Megjegyzések, elemek, hibák vagy kritériumok száma

                          - -

                          Az itt megadott szám határozza meg azt, hogy hány tételt veszünk figyelembe az értékelés során. A pontozási stratégia típusától függően ez a szám adja meg a megjegyzések, értékelési elemek, hibák, kritériumok vagy kritériumkategóriák (készletek) rubrikában lévő számát. Jellemző esetben egy-egy feladathoz 5 - 15 megjegyzési pontozási elemet kell hozzárendelni, a tényleges szám a feladat méretétől és bonyolultságától függ. - -

                          A gyakorlat létrehozása idején ez a szám biztonságosan módosítható. A szám megnövelése esetén üres elemek jelennek meg az űrlapon. A szám csökkentése esetén elemek törlődnek az értékelő űrlapról.

                          - -

                          Minden értékeléshez tartozik egy Általános megjegyzések elnevezésű mező. A "pontozás nélküli" feladat esetén az itt megadott érték határozza meg a kiegészítő megjegyzésekhez tartozó területek számát. Ez lehet nulla, ilyenkor az értékelés eredményei csak egyetlen általános megjegyzések területtel rendelkeznek.

                          diff --git a/lang/hu/help/exercise/regrading.html b/lang/hu/help/exercise/regrading.html deleted file mode 100644 index 405b9af1444..00000000000 --- a/lang/hu/help/exercise/regrading.html +++ /dev/null @@ -1,24 +0,0 @@ -

                          Re-grading Student Assessments

                          - -

                          This link re-calculates the "Grading grades" of all the student - assessments. Normally it is not necessary to action this - re-calculation. New student assessments are automatically graded after the - teacher has assessed the relavant piece of work from the student.

                          - -

                          If, however, the Grading grades are felt to be too high or too low the - teacher may wish to change the "Comparison of Assessments" option - (by Updating the Exercise). The default value of this option is - "Fair". If the grading grades are too high then setting the - option to either "Strict" or "Very Strict" will reduce - the grades. Or alternatively if the grades are too low, setting the option - to " Lax" or "Very Lax" will increase the grades.

                          - -

                          If a change to the Grading grades is required the steps are: -

                            -
                          1. Update the Exercise with the new value of the Comparison of Assessments - option;
                          2. -
                          3. Go to to the Exercise's Administration page and click on the - "Re-grade Student Assessments" link.
                          4. -
                          - The new grades will be displayed. These process can be safely repeated.

                          - diff --git a/lang/hu/help/exercise/specimen.html b/lang/hu/help/exercise/specimen.html deleted file mode 100644 index 79e42a3c805..00000000000 --- a/lang/hu/help/exercise/specimen.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Értékelő űrlap mintája

                          - -

                          Ez az oldal a feladat pontozására használt tényleges űrlap részleteit mutatja. Ezt használja a tanár a munkánk pontozására. Emellett csoporttársi feladatértékelésnél magunk is ugyanezt az űrlapot használjuk a leadott munkák pontozására.

                          - -

                          Ne feledjük, hogy bár módosíthatjuk az űrlapon lévő pontokat, ezeket a módosításokat a rendszer NEM menti el. Ez egyszerűen egy mintaűrlap, de mind a tanár, mind magunk egy ehhez hasonlót fogunk használni a feladat során.

                          diff --git a/lang/hu/help/exercise/submissionofdescriptions.html b/lang/hu/help/exercise/submissionofdescriptions.html deleted file mode 100644 index 24ffc128ab4..00000000000 --- a/lang/hu/help/exercise/submissionofdescriptions.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Gyakorlatleírás leadása

                          - -

                          A tanárnak legalább egy gyakorlat- vagy feladatleírást le kell adnia. A leírás történhet Word-dokumentum vagy HTML-állomány formájában (illetve bármely egyéb, a böngészőben megfelelő módon megjelenített formában). Ezt az állományt a tanulók látják. Benne olyan utasításoknak kell szerepelni, amelyekre a gyakorlat sikeres teljesítéséhez szükség van.

                          - -

                          A tanár leadhat több leírást is a gyakorlathoz. Ezek felhasználása véletlenszerűen történik és a tanulók a gyakorlat más-más változatát fogják látni. A változatoknak hasonlóaknak kell lenni, mivel ugyanaz az értékelő űrlap használatos az utasítások alapján végrehajtott munkák értékelésére.

                          diff --git a/lang/hu/help/exercise/takeownership.html b/lang/hu/help/exercise/takeownership.html deleted file mode 100644 index 0fa1e795e51..00000000000 --- a/lang/hu/help/exercise/takeownership.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Gyakorlat birtokba vétele

                          - -

                          Ezzel az ugróponttal a tanár birtokba veheti a gyakorlathoz tartozó leadott munkáknak az adott együttesét. Erre olyankor van szükség, ha egy gyakorlatot egy másik kurzus mentett változatából importáltunk. Ezzel az ugróponttal "igényt tarthatunk" a gyakorlathoz tartozó összes leadott munkára. A jelenlegi kurzusban ezek az importált leadott munkák bárkiéi lehetnek, akár egy tanulóéi is. Ezzel az eljárással elkerülhetünk bármely ezzel összefüggő problémát, mivel a munkák a tulajdonunkba kerülnek. - -

                          A birtokláson túl maguk a leadott munkák az eljárás során egyéb szempontból nem módosulnak.

                          \ No newline at end of file diff --git a/lang/hu/help/exercise/usemax.html b/lang/hu/help/exercise/usemax.html deleted file mode 100644 index 653233449ff..00000000000 --- a/lang/hu/help/exercise/usemax.html +++ /dev/null @@ -1,3 +0,0 @@ -

                          Több leadott munka kezelése

                          - -

                          Ez az opció határozza meg, hogy a gyakorlat miként számítsa ki a tanuló végső pontszámát. Több leadott munka esetén a tanár választhat: vagy a leadott munkák legjobb pontszámát használja, vagy az egyes tanulók munkáinak átlagpontszámát. Ez az opció bármikor módosítható a gyakorlat folyamán. Minden módosításnak azonnali hatása van a Pontok oldalra (feltéve, hogy több leadott munka áll rendelkezésre).

                          diff --git a/lang/hu/help/forum/allowdiscussions.html b/lang/hu/help/forum/allowdiscussions.html deleted file mode 100644 index 258d37d182e..00000000000 --- a/lang/hu/help/forum/allowdiscussions.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Új üzenetek engedélyezése

                          - -

                          Ezzel az opcióval korlátozhatjuk a tanulókat az adott fórumra való új üzenetek küldésében. - -

                          A legtöbb fórum esetén a tanulókat nem korlátozzuk és az első opciót választva engedélyezzük új megvitatandó témák (gondolatmenetek) felvetését, valamint válaszok küldését ezen gondolatmenetekhez. - -

                          Esetenként azonban szükségessé válhat ezen lehetőség kikapcsolása. Jól jöhet például a Hírek fórum esetén, amikor csak tanároktól szeretnénk olyan új üzeneteket fogadni, amelyek megjelennek a kurzus címoldalán. Ilyen esetben választhatjuk a harmadik, "Nincs megbeszélés, nincs válasz" opciót. - -

                          Esetenként előfordulhat, hogy csak tanárok számára kívánjuk lehetővé tenni új megbeszélések kezdeményezését, ugyanakkor a tanulók számára engedélyezni szeretnénk, hogy válaszolhassanak az adott gondolatmenetekre (például a Hírek fórumon belül az adott portál honlapján). Ebben az esetben a második, "Nincs megbeszélés, de válasz lehetséges" opciót választjuk. \ No newline at end of file diff --git a/lang/hu/help/forum/attachment.html b/lang/hu/help/forum/attachment.html deleted file mode 100644 index d017cee5d0b..00000000000 --- a/lang/hu/help/forum/attachment.html +++ /dev/null @@ -1,10 +0,0 @@ -

                          Üzenetekhez csatolt állományok

                          - -

                          Opcionálisan lehetőség van arra, hogy számítógépünkről EGY állományt a fórum bármely üzenetéhez csatoljunk. Ezt az állományt feltölthetjük a szerverre és az üzenetekkel együtt tárolhatjuk. - -

                          Ez hasznos lehetőség olyankor, amikor például egy képet vagy egy Word-dokumentumot kívánunk másokkal megosztani. - -

                          Ez az állomány tetszőleges típusú lehet, ugyanakkor ajánlatos azt a szokásos 3 betűs internetes kiterjesztéssel ellátni, vagyis ".doc" Word-dokumentum esetén, ".jpg" vagy ".png" képek esetén stb. Ez megkönnyíti mások számára a letöltést és a csatolt állomány megtekintését a böngészőben. - -

                          Egy üzenet újraszerkesztése és új állomány hozzácsatolása esetén az adott üzenethez csatolt bármely korábbi állományt a rendszer lecseréli. -

                          Ha egy csatolt állományos üzenetet újraszerkesztünk és ezt a helyet üresen hagyjuk, akkor megmarad az eredeti csatolt állomány. \ No newline at end of file diff --git a/lang/hu/help/forum/forumtype.html b/lang/hu/help/forum/forumtype.html deleted file mode 100644 index 9d288207040..00000000000 --- a/lang/hu/help/forum/forumtype.html +++ /dev/null @@ -1,11 +0,0 @@ -

                          Fórumfajták

                          - -

                          Különféle fórumfajták közül választhatunk: - -

                          Egyszeri egyszerű megbeszélés - mindössze egyetlen téma, az egész egyetlen oldalon. Hasznos rövid, célratörő megbeszélések esetén. - -

                          Standard fórum általános használatra - olyan nyitott fórum, ahol bárki bármikor új témát kezdeményezhet. Ez a legjobb általános célú fórum. - -

                          Mindenki egy megbeszélendőt küld - Mindenki pontosan egy új megvitatandó témát küldhet (jóllehet, bárki válaszolhat rájuk). Ez akkor hasznos, ha azt szeretnénk, hogy minden egyes tanuló megbeszélést kezdeményezzen, mondjuk, a heti témával kapcsolatos véleményének közreadásával, és arra mindenki válaszol. - -

                          (További kiegészítések várhatók a Moodle későbbi változataiban.) \ No newline at end of file diff --git a/lang/hu/help/forum/index.html b/lang/hu/help/forum/index.html deleted file mode 100644 index 23617ec93bc..00000000000 --- a/lang/hu/help/forum/index.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Fórumok

                          - diff --git a/lang/hu/help/forum/maxattachmentsize.html b/lang/hu/help/forum/maxattachmentsize.html deleted file mode 100644 index a7619b2c267..00000000000 --- a/lang/hu/help/forum/maxattachmentsize.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Csatolt állomány maximális mérete

                          - -

                          A csatolt állományok mérete bizonyos értékre mérsékelhető, melyet a fórumot létrehozó személy választhat ki. - -

                          Esetenként ennél nagyobb állomány is feltölthető, de az adott állomány nem tárolódik a szerveren és esetlegesen hibajelzés jelenhet meg. \ No newline at end of file diff --git a/lang/hu/help/forum/mods.html b/lang/hu/help/forum/mods.html deleted file mode 100644 index 29f1c76b147..00000000000 --- a/lang/hu/help/forum/mods.html +++ /dev/null @@ -1,4 +0,0 @@ -

                           Fórum

                          -
                            -

                            A tevékenység lehet akár a legfontosabb is - ez az a hely, ahol a megbeszélés túlnyomó része zajlik. A fórum különféle módokon strukturálható, emellett szerepelhet benne az egyes üzenetek csoporttársi értékelése is. Az üzenetek számos változatban megjeleníthetők és tartalmazhatnak csatolt állományt is. A fórumra való felíratkozással a részvevők minden egyes üzenetből kapnak egy-egy példányt a levelesládájukba. A tanár adott esetben mindenki számára előírhatja a felíratkozást. -

                          diff --git a/lang/hu/help/forum/ratings.html b/lang/hu/help/forum/ratings.html deleted file mode 100644 index cd5ba1504a9..00000000000 --- a/lang/hu/help/forum/ratings.html +++ /dev/null @@ -1,22 +0,0 @@ -Az egyes üzenetek osztályozhatók egy skála alapján, amely a különálló és összekapcsolt tudás elméletén alapul. Ezen elmélet szerint az emberi interakciókat újfajta megközelítésben szemlélhetjük. Két különböző módot ír le, melyeket értékelhetünk és ismereteket szerezhetünk az általunk hallott és látott dolgokról. Jóllehet, a két módszert mindegyikünk más-más időpontokban eltérő mennyiségben alkalmazhatja, érdemes példaként összevetni két embert, akik közül az egyik (A) alapvetően különálló tudással, másikuk (B) többnyire összekapcsolt tudással rendelkezik. -
                            -
                          • 'A' igyekszik lehetőleg objektív maradni, érzelmeit kirekeszteni. Más, eltérő nézeteket valló emberekkel folytatott megbeszélései során szereti megvédeni gondolatait, a logika bevetésével keresi partnere elgondolásaiban a hézagokat. Kritikusan viszonyul az új ötletekhez, hacsak azok nem elismert tankönyvekből, tiszteletnek örvendő oktatóktól vagy saját közvetlenül tapasztalásából nem származnak. 'A' egy igen különálló tudással rendelkező személy.
                          • -
                          • 'B' érzékenyebben viszonyul az emberekhez. Nagy empátiával rendelkezik, odafigyel és addig próbál kérdéseket feltenni, amíg rá nem tud kapcsolódni a gondolkodás menetére és "más szempontból nem tudja látni a dolgokat". Úgy tesz szert ismeretekre, hogy megosztja másokkal azt a tapasztalatot, amely a náluk felfedezett tudáshoz vezetett. Másokkal beszélve igyekszik elkerülni a konfrontációt és gyakran próbál logikus javaslatokkal segítséget nyújtani másoknak. 'B' egy igen összekapcsolt tudással rendelkező személy.
                          • -
                          -A példákban a különálló tudással rendelkező személy tipikusan férfi, míg az összekapcsolt tudás inkább nőkre jellemző. Ezt egyes vizsgálódások statisztikailag alátámasztják ugyan, a valóságban az emberek valahol ezen két szélsőség között foglalnak helyet. Egy együttműködő és hatékony tanulócsoport esetén a legjobb, ha mindkét tudást mindenki hasznosítani tudja. On-line fórum esetén egy üzenetben ezen ismérvek külön-külön, de egyszerre is megjelenhetnek. Az, aki általában erősen összekapcsolt tudásról tesz tanúbizonyságot, közzétehet egy igen különállást sugalló üzenetet, és megfordítva. Az üzenetek jelen skála felhasználásán alapuló osztályozásának a célja: -
                          -a) elősegíteni az ilyen kérdéseken való eltöprengést mások üzeneteinek az olvasása közben; b) visszajelzést adni a szerzőknek arról, hogyan látják őket mások. -
                          -Az eredmény a tanulói értékelésben semmilyen szerepet nem játszik, szerepe mindössze a kommunikáció és a tanulás elősegítése. -
                          -Annak, akit érdekelnek a részletek, alább közreadunk néhány hivatkozást az adott elképzeléseket kidolgozó szerzők munkáira vonatkozóan:
                            -
                          • 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, NY: Basic Books.
                          • -
                          • Clinchy, B.M. (1989a). The development of thoughtfulness in college women: Integrating reason and care. American Behavioural Scientist, 32(6), 647-657.
                          • -
                          • Clinchy, B.M. (1989b). On critical thinking & connected knowing. Liberal education, 75(5), 14-19.
                          • -
                          • Clinchy, B.M. (1996). Connected and separate knowing; Toward a marriage of two minds. In N.R. Goldberger, Tarule, J.M., Clinchy, B.M. &
                          • -
                          • Belenky, M.F. (Eds.), Knowledge, Difference, and Power; Essays inspired by “Women’s Ways of Knowing” (pp. 205-247). New York, NY: Basic Books.
                          • -
                          • 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.
                          • -
                          • 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.
                            -
                          • -
                          - diff --git a/lang/hu/help/forum/rssarticles.html b/lang/hu/help/forum/rssarticles.html deleted file mode 100644 index 4f8e2231be6..00000000000 --- a/lang/hu/help/forum/rssarticles.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Újabb RSS-cikkek száma

                          - -

                          Ezzel az opcióval kiválaszthatjuk, hogy hány cikk kerüljön az RSS-adagba. - -

                          A legtöbb fogalomtár esetén egy 5 és 20 közötti szám megadása elegendő. Növeljük meg a számot, ha a fogalomtárat sűrűn használjuk. \ No newline at end of file diff --git a/lang/hu/help/forum/rsstype.html b/lang/hu/help/forum/rsstype.html deleted file mode 100644 index 491650a0fcd..00000000000 --- a/lang/hu/help/forum/rsstype.html +++ /dev/null @@ -1,12 +0,0 @@ -

                          RSS-adag ehhez a fórumhoz

                          - -

                          Ezzel az opcióval RSS-adagokat küldhetünk ebbe a fórumba. - -

                          Kétféle fórum közül választhatunk: - -

                            -
                          • Megbeszélések: Ennek a használatakor az előállított adagok a fórum új megbeszéléseit fogják tartalmazni azok kezdeti üzeneteivel. - -
                          • Üzenetek: Ennek a használatakor az előállított adagok a fórum minden új üzenetét fogják tartalmazni. -
                          - diff --git a/lang/hu/help/forum/subscription.html b/lang/hu/help/forum/subscription.html deleted file mode 100644 index 89b57ba940e..00000000000 --- a/lang/hu/help/forum/subscription.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Fórumra való jelentkezés

                          - -

                          Ha valaki felíratkozik egy fórumra, akkor e-mailben minden fórumra küldött üzenetből kap egy-egy példányt (az üzenetek kiküldése az első üzenet megírásától számítva mintegy maximálisszerkesztési idő /60 ?> perccel később történik). - -

                          A fórumra való felíratkozás saját döntés kérdése. - -

                          Ha viszont a tanár előírja a bejelentkezést valamely fórumra, akkor ez a választási lehetőség már nem áll rendelkezésre, és az osztályban mindenki kap másolatot az e-mailből. - -

                          Ez különösen hasznos a hírfórum esetén és olyan fórumoknál, amelyeket a kurzus kezdetéig indítanak el (mielőtt bárki rájönne, miként tud saját maga felíratkozni az e-mailes fórumokra). \ No newline at end of file diff --git a/lang/hu/help/forum/subscription2.html b/lang/hu/help/forum/subscription2.html deleted file mode 100644 index 5f4bf4356bd..00000000000 --- a/lang/hu/help/forum/subscription2.html +++ /dev/null @@ -1,32 +0,0 @@ -

                          Felíratkozás fórumra

                          - -

                          Ha valaki felíratkozik egy fórumra, a fórum minden üzenetéből -kap e-mailben egy másolatot -(az üzenetek kiküldése mintegy maxeditingtime/60 ?> -perccel az üzenet megírása után történik). -

                          - -

                          A fórumra való felíratkozás választható. -

                          - -

                          Ha viszont a felíratkozást előírjuk, a kurzus minden felhasználójának -a felíratkozása automatikusan megtörténik, azoké is, akik később -íratkoznak be. -

                          - -

                          Ez különösen hasznos a Hírek fórum és a kurzus elején induló fórumok esetén - (mielőtt bárki rájön, hogy önmaga is felíratkozhat az üzenetekre). -

                          - -

                          Ha az "Igen, kezdetben" lehetőséget választja, akkor -kezdetben minden jelenlegi és későbbi kurzusfelhasználó felíratkozik, leíratkozásra -bármikor nyílik lehetőségük. -

                          - -

                          Figyeljük meg, miként működik az "Igen, kezdetben" egy meglévő fórum -frissítésekor: az "Igen, kezdetben" módosítása "Nem"-re nem vonja magával -a meglévõ felhasználók leíratkozását, csak a későbbi kurzusfelhasználókat fogja érinteni. -Hasonlóképpen a későbbi módosítás "Igen, kezdetben"-re csak a később -beíratkozó kurzusfelhasználókat fogja érinteni. -

                          - diff --git a/lang/hu/help/glossary/aliases.html b/lang/hu/help/glossary/aliases.html deleted file mode 100644 index 880bae9486f..00000000000 --- a/lang/hu/help/glossary/aliases.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Kulcsszavak

                          - -

                          A fogalomtárban minden egyes fogalomhoz tartozhatnak kulcsszavak (vagy szinonimák). - -

                          Ezeket a szavakat az adott fogalomra való utalás alternatívájaként használhatjuk. Például ezeket a szinonimákat használjuk majd automatikus kapcsolatok létrehozására.

                          diff --git a/lang/hu/help/glossary/allowcomments.html b/lang/hu/help/glossary/allowcomments.html deleted file mode 100644 index a0a6c019cd3..00000000000 --- a/lang/hu/help/glossary/allowcomments.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Fogalmakhoz fűzött megjegyzések engedélyezése

                          - -

                          Lehetővé tehetjük mások számára, hogy megjegyzéseket fűzzenek a fogalomtárban szereplő fogalmakhoz.

                          - -

                          Ezt az opciót be-, illetve kikapcsolhatjuk.

                          - diff --git a/lang/hu/help/glossary/allowdiscussions.html b/lang/hu/help/glossary/allowdiscussions.html deleted file mode 100644 index 258d37d182e..00000000000 --- a/lang/hu/help/glossary/allowdiscussions.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Új üzenetek engedélyezése

                          - -

                          Ezzel az opcióval korlátozhatjuk a tanulókat az adott fórumra való új üzenetek küldésében. - -

                          A legtöbb fórum esetén a tanulókat nem korlátozzuk és az első opciót választva engedélyezzük új megvitatandó témák (gondolatmenetek) felvetését, valamint válaszok küldését ezen gondolatmenetekhez. - -

                          Esetenként azonban szükségessé válhat ezen lehetőség kikapcsolása. Jól jöhet például a Hírek fórum esetén, amikor csak tanároktól szeretnénk olyan új üzeneteket fogadni, amelyek megjelennek a kurzus címoldalán. Ilyen esetben választhatjuk a harmadik, "Nincs megbeszélés, nincs válasz" opciót. - -

                          Esetenként előfordulhat, hogy csak tanárok számára kívánjuk lehetővé tenni új megbeszélések kezdeményezését, ugyanakkor a tanulók számára engedélyezni szeretnénk, hogy válaszolhassanak az adott gondolatmenetekre (például a Hírek fórumon belül az adott portál honlapján). Ebben az esetben a második, "Nincs megbeszélés, de válasz lehetséges" opciót választjuk. \ No newline at end of file diff --git a/lang/hu/help/glossary/allowduplicatedentries.html b/lang/hu/help/glossary/allowduplicatedentries.html deleted file mode 100644 index 448538394f0..00000000000 --- a/lang/hu/help/glossary/allowduplicatedentries.html +++ /dev/null @@ -1,4 +0,0 @@ -

                          Fogalmak többszörözésének engedélyezése

                          - -

                          Ha bekapcsoljuk ezt az opciót, egyszerre több fogalmat használhatunk ugyanazon fogalmi elnevezés alatt.

                          - diff --git a/lang/hu/help/glossary/casesensitive.html b/lang/hu/help/glossary/casesensitive.html deleted file mode 100644 index 4604c7e500b..00000000000 --- a/lang/hu/help/glossary/casesensitive.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Kis- és nagybetűk megkülönböztetése

                          - -

                          Ez a beállítás azt határozza meg, hogy a kizárólag nagy- vagy kizárólag kisbetűk szerinti egyezés szükséges-e ezen fogalmak automatikus összekapcsolása során.

                          - -

                          Ha például ez az opció be van kapcsolva, akkor a "html" szó egy fórumra küldött üzenetben NEM kapcsolódik össze a fogalomtárban szereplő "HTML" elnevezésű fogalmakkal.

                          - diff --git a/lang/hu/help/glossary/defaultapproval.html b/lang/hu/help/glossary/defaultapproval.html deleted file mode 100644 index 0bea890d7d7..00000000000 --- a/lang/hu/help/glossary/defaultapproval.html +++ /dev/null @@ -1,3 +0,0 @@ -

                          Alapbeállítás szerinti jóváhagyási állapot

                          - -

                          Ezzel a beállítással a tanár meghatározhatja, hogy mi történjen a tanulók által hozzáadott új fogalmakkal. Lehetőség van arra, hogy automatikusan bárki elérje, ellenkező esetben a tanárnak egyenként kell elvégezni a jóváhagyást.

                          diff --git a/lang/hu/help/glossary/description.html b/lang/hu/help/glossary/description.html deleted file mode 100644 index 1a41410df79..00000000000 --- a/lang/hu/help/glossary/description.html +++ /dev/null @@ -1,3 +0,0 @@ -

                          Leírás

                          - -

                          Ebben a mezőben leírhatjuk a fogalomtár célját, esetlegesen utasításokat és háttér-információkat adhatunk meg, hivatkozásokat tehetünk stb.

                          diff --git a/lang/hu/help/glossary/destination.html b/lang/hu/help/glossary/destination.html deleted file mode 100644 index deed5c270a3..00000000000 --- a/lang/hu/help/glossary/destination.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Importált fogalmak fogalomtárának meghatározása

                          - -

                          Itt adhatjuk meg, hová kívánjuk importálni a fogalmakat:

                          -
                            -
                          • Jelenlegi fogalomtár: A fogalmakat a jelenleg nyitott fogalomtárba importálja.
                          • -
                          • Új fogalomtár: A kiválasztott importálási állományban talált információ alapján létrehoz egy új fogalomtárat és az új fogalmakat ebbe rakja.
                          • -
                          diff --git a/lang/hu/help/glossary/displayformat.html b/lang/hu/help/glossary/displayformat.html deleted file mode 100644 index 1363ef65cf6..00000000000 --- a/lang/hu/help/glossary/displayformat.html +++ /dev/null @@ -1,28 +0,0 @@ -

                          Kijelzés formája

                          - -

                          Ez a beállítás határozza meg az egyes fogalmak megjelenését a fogalomtárban. Az alapbeállítás szerinti formák a következők:

                          -
                          -
                          -
                          Egyszerű szótár:
                          -
                          hagyományos szótári forma különálló fogalmakkal. Szerző nincs megjelenítve és a csatolt állományok hivatkozásokként láthatók.
                          -
                          Folyamatos:
                          -
                          a fogalmak egymást követik, csak a szerkesztő ikonok választják el őket egymástól.
                          -
                          Teljes, szerzővel együtt:
                          -
                          Fórumszerű kijelzési forma, tartalmazza a szerző adatait is. A csatolt állományok hivatkozásokként láthatók.
                          -
                          Teljes, szerző nélkül:
                          -
                          Fórumszerű kijelzési forma, mely nem tartalmazza a szerző adatait. A csatolt állományok hivatkozásokként láthatók.
                          -
                          Enciklopédia:
                          -
                          Akárcsak a teljes forma szerzővel együtt, de a csatolt képek a sorba beszúrva láthatók.
                          -
                          GYIK:
                          -
                          Gyakran feltett kérdések megjelenítésére használható. Automatikusan beszúrja a KÉRDÉS és VÁLASZ szavakat a fogalom, ill. a meghatározás helyére.
                          -
                          -
                          - -
                          -

                          A Moodle adminisztrátora az alábbiak szerint hozhat létre új formákat: -

                            -
                          1. Keresés a mod/glossary/formats között... az egyes létező formák számmal azonosított állománya látható. -
                          2. Másoljuk át ezek egyikét és nevezzük el egy másik számmal (ne feledjük, hogy a 0 és az 1 fenntartott azonosítók). -
                          3. Szerkesszük meg ezt az állományt a saját formánknak megfelelően (némi jártasság a PHP területén szükséges). -
                          4. Végezetül szúrjunk be egy új fogalmat az egyes használatban lévő nyelvi csomagokba displayformatN néven és adjunk neki egy rövid, de értelmezhető nevet. -
                          diff --git a/lang/hu/help/glossary/editalways.html b/lang/hu/help/glossary/editalways.html deleted file mode 100644 index 0cd4a81d442..00000000000 --- a/lang/hu/help/glossary/editalways.html +++ /dev/null @@ -1,12 +0,0 @@ -

                          Bármikor szerkeszthető

                          - -

                          Ezzel határozhatjuk meg, hogy a tanulók fogalmaikat bármikor szerkeszthetik-e. - -

                          Lehetőségek: - -

                            -
                          • Igen: A fogalmak bármikor szerkeszthetők. - -
                          • Nem: A fogalmak megadott ideig szerkeszthetők. -
                          - diff --git a/lang/hu/help/glossary/entbypage.html b/lang/hu/help/glossary/entbypage.html deleted file mode 100644 index 061bdd89958..00000000000 --- a/lang/hu/help/glossary/entbypage.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Oldalanként kijelzett fogalmak számának meghatározása

                          - -

                          A fogalomtár beállítható úgy, hogy szűkítjük az oldalanként kijelzett fogalmak számát.

                          - -

                          Ha nagyszámú automatikusan összekapcsolt fogalommal rendelkezünk, akkor célszerű ezt a számot csökkenteni a hosszú letöltési idő elkerülése érdekében.

                          diff --git a/lang/hu/help/glossary/filetoimport.html b/lang/hu/help/glossary/filetoimport.html deleted file mode 100644 index da14111ff93..00000000000 --- a/lang/hu/help/glossary/filetoimport.html +++ /dev/null @@ -1,3 +0,0 @@ -

                          Importálandó állomány

                          - -

                          Válasszuk ki a gépünkről azt az XML-állományt, amely tartalmazza az importálandó fogalmakat.

                          diff --git a/lang/hu/help/glossary/fullmatch.html b/lang/hu/help/glossary/fullmatch.html deleted file mode 100644 index d1f1cd426d5..00000000000 --- a/lang/hu/help/glossary/fullmatch.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Teljes szavas illesztés

                          - -

                          Ha be van kapcsolva az automatikus összekapcsolás, akkor ezen beállítás alkalmazásával csak egész szavak összekapcsolására van mód. - -

                          Például a fogalomtárban szereplő "construct" fogalom esetén nem jön létre kapcsolat a "constructivism" szó belsejében.

                          diff --git a/lang/hu/help/glossary/globalglossary.html b/lang/hu/help/glossary/globalglossary.html deleted file mode 100644 index 8224020e637..00000000000 --- a/lang/hu/help/glossary/globalglossary.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Globális fogalomtár meghatározása

                          - -

                          Az adminisztrátor egy adott fogalomtárat globálisként definiálhat.

                          - -

                          Az ilyen fogalomtárak bármely kurzus részét képezhetik (de különösen a címoldalon lévőt).

                          - -

                          A szokásos helyi fogalomtártól abban tér el, hogy a fogalmak az egész portált átfogó automatikus kapcsolatokat hoznak létre (és nem csupán azon kurzust ölelik fel, amelyhez a fogalomtár tartozik).

                          diff --git a/lang/hu/help/glossary/importcategories.html b/lang/hu/help/glossary/importcategories.html deleted file mode 100644 index c954a04e955..00000000000 --- a/lang/hu/help/glossary/importcategories.html +++ /dev/null @@ -1,3 +0,0 @@ -

                          Kategóriák importálása

                          - -

                          Alaphelyzetben a rendszer minden fogalmat importál. Ha kívánjuk, meghatározhatjuk, mely kategóriák importálása történjen meg (az új fogalmak ezekhez adódnak hozzá).

                          diff --git a/lang/hu/help/glossary/index.html b/lang/hu/help/glossary/index.html deleted file mode 100644 index 88a38edd5d1..00000000000 --- a/lang/hu/help/glossary/index.html +++ /dev/null @@ -1,31 +0,0 @@ -

                          Fogalomtár

                          - -
                          -Fogalomtárszintű súgóállományok: - -
                          - -
                          -Fogalomszintű súgóállományok: - -
                          \ No newline at end of file diff --git a/lang/hu/help/glossary/linkcategory.html b/lang/hu/help/glossary/linkcategory.html deleted file mode 100644 index 175a9d09ae4..00000000000 --- a/lang/hu/help/glossary/linkcategory.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Kategóriák automatikus kapcsolása

                          - -

                          Eldönthetjük, hogy egy-egy kategória automatikusan legyen-e kapcsolva, vagy sem.

                          - -

                          Megjegyzés: A kategóriák között a különbségtétel betűérzékeny, teljes illesztés alapján történik.

                          diff --git a/lang/hu/help/glossary/mainglossary.html b/lang/hu/help/glossary/mainglossary.html deleted file mode 100644 index 3742e92e142..00000000000 --- a/lang/hu/help/glossary/mainglossary.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Kurzus fő fogalomtárának meghatározása

                          - -

                          A fogalomtárak rendszere lehetővé teszi, hogy fogalmakat exportáljunk bármely másodlagos fogalomtárból a kurzus fő fogalomtárába.

                          - -

                          Ehhez meg kell határoznunk, melyik fogalomtár a fő fogalomtár.

                          - -

                          Megjegyzés: Kurzusonként csak egy fő fogalomtárat használhatunk, és azt csakis tanár frissítheti.

                          diff --git a/lang/hu/help/glossary/mods.html b/lang/hu/help/glossary/mods.html deleted file mode 100644 index 0ac46bfeb20..00000000000 --- a/lang/hu/help/glossary/mods.html +++ /dev/null @@ -1,7 +0,0 @@ -

                           Fogalomtár

                          -
                            -

                            Ez a tevékenység meghatározások szótárszerű létrehozását és karbantartását teszi lehetővé a résztvevők számára. -

                            A fogalmak különféle formában kereshetők és böngészhetők. -

                            A fogalomtárban lévő fogalmakat a tanár azonos kurzuson belül átviheti egy másik fogalomtárba (a fő fogalomtárba). -

                            Végezetül pedig lehetőség van ezen fogalmakra mutató hivatkozások automatikus létrehozására a kurzus egész folyamán.

                            -
                          diff --git a/lang/hu/help/glossary/rssarticles.html b/lang/hu/help/glossary/rssarticles.html deleted file mode 100644 index 7058a9e24ed..00000000000 --- a/lang/hu/help/glossary/rssarticles.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Újabb RSS-cikkek száma

                          - -

                          Ezzel az opcióval kiválaszthatjuk, hogy hány cikk kerüljön az RSS-adagba. - -

                          A legtöbb fogalomtár esetén egy 5 és 20 közötti szám megadása elegendő. Növeljük meg a számot, ha a fogalomtárat sűrűn használjuk. \ No newline at end of file diff --git a/lang/hu/help/glossary/rsstype.html b/lang/hu/help/glossary/rsstype.html deleted file mode 100644 index 35a71e6ec8d..00000000000 --- a/lang/hu/help/glossary/rsstype.html +++ /dev/null @@ -1,12 +0,0 @@ -

                          RSS-adag ehhez a fogalomtárhoz

                          - -

                          Ezzel az opcióval RSS-adagokat küldhetünk ebbe a fogalomtárba. - -

                          Kétféle feltöltési mód közül választhatunk: - -

                            -
                          • Szerzővel: Ilyenkor az előállított feltöltések minden cikk esetén tartalmazni fogják a szerző nevét. - -
                          • Szerző nélkül: Ez esetben az előállított feltöltések nem fogják minden cikk esetén tartalmazni a szerző nevét. -
                          - diff --git a/lang/hu/help/glossary/shows.html b/lang/hu/help/glossary/shows.html deleted file mode 100644 index b010caea818..00000000000 --- a/lang/hu/help/glossary/shows.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Böngészési opciók betűrendes megjelenítés esetén

                          - -

                          Azt, hogy egy felhasználó miként böngészhet a fogalomtárban, magunk módosíthatjuk. A böngészés és a keresés mindig elérhető, de három további opciót határozhatunk meg:

                          - -

                          SHOW SPECIAL [Speciális megjelenítés] Be- és kikapcsolja a speciális karakterekkel, például @, # stb. való böngészést.

                          - -

                          SHOW ALPHABET [Betűrend megjelenítése] Be- és kikapcsolja az ábécé betűivel való böngészést.

                          - -

                          SHOW ALL [Összes megjelenítése] Be- és kikapcsolja az összes fogalom egyszerre való megjelenítését.

                          diff --git a/lang/hu/help/glossary/studentcanpost.html b/lang/hu/help/glossary/studentcanpost.html deleted file mode 100644 index dbe77eec1e9..00000000000 --- a/lang/hu/help/glossary/studentcanpost.html +++ /dev/null @@ -1,5 +0,0 @@ -

                          Tanulói fogalmak továbbítása

                          - -

                          Meghatározhatjuk, hogy a tanulók kiegészíthetik-e, szerkeszthetik-e, illetve törölhetik-e saját fogalmaikat. A fő fogalomtárba exportált fogalmakat csak a tanárok frissíthetnek és törölhetnek, ezért ez a beállítás csak a másodlagos fogalomtárakra érvényes.

                          - -

                          Megjegyzés: A tanár bármely fogalmat bármikor szerkeszthet vagy törölhet.

                          diff --git a/lang/hu/help/glossary/usedynalink.html b/lang/hu/help/glossary/usedynalink.html deleted file mode 100644 index 6e5b163f0a1..00000000000 --- a/lang/hu/help/glossary/usedynalink.html +++ /dev/null @@ -1,8 +0,0 @@ -

                          Fogalomtárban szereplő fogalmak automatikus összekapcsolása

                          - -

                          Ennek a funkciónak a bekapcsolása révén az adott fogalomtárban lévő fogalmak automatikusan összekapcsolódnak, amikor a szavak vagy kifejezések ugyanezen kurzusban bárhol előfordulnak. Ebbe beletartoznak a fórumüzenetek, a belső források, a heti összegzések, naplók stb.

                          - -

                          Ha egy konkrét szöveget nem kívánunk összekapcsolni (mondjuk egy fórumüzenet esetén), akkor a szöveget <nolink> és </nolink> jelekkel kell közrefogni.

                          - -

                          Ne feledjük, hogy a kategórianevek úgyszintén össze vannak kapcsolva.

                          - diff --git a/lang/hu/help/glossary/usedynalinkentry.html b/lang/hu/help/glossary/usedynalinkentry.html deleted file mode 100644 index c78f024186f..00000000000 --- a/lang/hu/help/glossary/usedynalinkentry.html +++ /dev/null @@ -1,10 +0,0 @@ -

                          Fogalom automatikus kapcsolásának érvényesítése

                          - -

                          Ennek a bekapcsolásakor a fogalom összekapcsolása automatikusan megtörténik, ha a fogalom vagy kifejezés -megjelenik a kurzus további részeiben. Ebbe beletartoznak a fórumüzenetek, a belső tananyagok, -a heti összesítések, naplók stb.

                          - -

                          Ha valamely szöveget (mondjuk egy fórumüzenetben) nem kíván összekapcsolni, -vegye körbe a szöveget <nolink> és </nolink> jelölőkkel.

                          - -

                          Bekapcsoláshoz a fogalomtár szintjén működnie kell az automatikus kapcsolásnak.

                          diff --git a/lang/hu/help/groupmode.html b/lang/hu/help/groupmode.html deleted file mode 100644 index 47e0c380d1a..00000000000 --- a/lang/hu/help/groupmode.html +++ /dev/null @@ -1,20 +0,0 @@ -

                          Csoportos részvétel

                          - -

                          A kurzusban való csoportos részvétel három szinten történhet:

                            -
                          • Nincsenek csoportok - nincsenek alcsoportok, mindenki egyetlen nagy közösséghez tartozik
                          • -
                          • Különálló csoportok - az egyes csoportok csak a saját csoportjukat látják, a többi csoport számukra láthatatlan
                          • -
                          • Látható csoportok - az egyes csoportok saját csoportjukon belül tevékenykednek, de láthatják a többi csoportot is
                          • -
                          -

                          - -

                          A kurzusban való csoportos részvétel két szinten határozható meg:

                          - -
                          -
                          1. Kurzusszint
                          -
                          A kurzusszinten kialakított csoportos részvétel az adott kurzuson belül meghatározott összes tevékenység alapvető részvételi módja

                          -
                          2. Tevékenységszint
                          -
                          A csoportokat támogató egyes tevékenységek meghatározhatják saját csoportosítási módjaikat. Ha a kurzus beállítása "csoportos részvétel alkalmazása", akkor a rendszer figyelmen kívül hagyja az egyes tevékenységek beállítását.
                          -
                          - -

                          - diff --git a/lang/hu/help/groupmodeforce.html b/lang/hu/help/groupmodeforce.html deleted file mode 100644 index b9fc5ddb25e..00000000000 --- a/lang/hu/help/groupmodeforce.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Csoportos részvétel alkalmazása

                          - -

                          Ha kurzusszinten a csoportos részvételt "érvényesítjük"l, akkor az adott kurzushoz tartozó összes tevékenység esetén kurzusszintű csoportos részvételre kerül sor. Ilyenkor az egyedi csoportbeállításokat a rendszer minden tevékenység esetén figyelmen kívül hagyja.

                          - -

                          Ez például olyankor lehet hasznos, amikor egymástól teljesen különálló csoportok részére alakítunk ki egy kurzust.

                          - diff --git a/lang/hu/help/guestaccess.html b/lang/hu/help/guestaccess.html deleted file mode 100644 index 42608ed59f0..00000000000 --- a/lang/hu/help/guestaccess.html +++ /dev/null @@ -1,11 +0,0 @@ -

                          Vendégek bekapcsolódása

                          - -

                          Lehetőség van arra, hogy kurzusunkba "vendégek" kapcsolódjanak be. - -

                          Vendégként a bejelentkező képernyőn lévő "Bejelentkezés vendégként" gombbal lehet a kurzusba bekapcsolódni. - -

                          A vendégek MINDIG "kizárólag olvasási" joggal léphetnek be - vagyis nincs lehetőségük arra, hogy üzenetet hagyjanak vagy egyéb módon kavarodást idézzenek elő a tényleges tanulók kurzusának. - -

                          Ez kapóra jöhet olyankor, amikor lehetővé kívánjuk tenni egy kolléga számára, hogy körülnézzen munkánk tájékán, illetve ha lehetővé kívánjuk tenni a tanulók számára, hogy megtekintsenek egy kurzust, mielőtt eldöntik, beíratkoznak, avagy sem. - -

                          Ne feledjük, hogy a vendég kétféleképpen kapcsolódhat be: beíratkozási kulccsal vagy anélkül. Ha kulccsal rendelkező vendégeket kívánunk beengedni a rendszerbe, nekik a bejelentkezésnél MINDEN ALKALOMMAL meg kell adni a beíratkozási kulcsot (a tanulóktól eltérően, akiknek ezt csak egyszer kell megtenni). Ily módon korlátozhatjuk a vendégek belépését. Ha lehetővé tesszük, hogy a vendégek kulcs nélkül léphessenek be, akkor bárki akadálytalanul beléphet a kurzusunkba. \ No newline at end of file diff --git a/lang/hu/help/html.html b/lang/hu/help/html.html deleted file mode 100644 index 61660a602ff..00000000000 --- a/lang/hu/help/html.html +++ /dev/null @@ -1,12 +0,0 @@ -

                          Súgó HTML-szövegek írásához

                          - -

                          Ha Moodle-ban HTML-szövegeket szerkesztünk, szabadon használhatjuk csaknem az összes HTML-elemet a kívánt hatások eléréséhez.

                          - -

                          Ne feledjük, hogy parancsnyelvi kódokat (pl. Javascript vagy VB Script) nem használhatunk, ezeket a rendszer automatikusan eltávolítja.

                          - -

                          A kód alapesetben az oldalon egy táblázatcellában jelenik meg, ezért:

                            -
                          • semmilyen <HEAD> vagy <BODY> elemre nincs szükség
                          • ügyeljünk a táblázatok megfelelő </TABLE> elemmel való lezárására, ellenkező esetben a megjelenés torzra sikeredhet.
                          - -

                          Az emotikonok átalakulnak grafikus megfelelőikké, az üres urgópontok pedig hivatkozásokká alakulnak át.

                          - -

                          diff --git a/lang/hu/help/index.html b/lang/hu/help/index.html deleted file mode 100644 index a0b476ef1b2..00000000000 --- a/lang/hu/help/index.html +++ /dev/null @@ -1,23 +0,0 @@ - -

                          Mutató a súgóállományokhoz

                          - -

                          Általános

                          - - -

                          Adminisztráció

                          - - -

                          Kurzusok beállítása

                          - - -

                          Olvasás és írás

                          - diff --git a/lang/hu/help/journal/index.html b/lang/hu/help/journal/index.html deleted file mode 100644 index 8d1c8b69c3f..00000000000 --- a/lang/hu/help/journal/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lang/hu/help/journal/mods.html b/lang/hu/help/journal/mods.html deleted file mode 100644 index 1b27942b908..00000000000 --- a/lang/hu/help/journal/mods.html +++ /dev/null @@ -1,5 +0,0 @@ -

                           Napló

                          -
                            -

                            Ez a modul egy rendkívül fontos elem a tevékenységek nyomon követéséhez. A tanár megkéri a tanulót, hogy reflektáljon egy témára, a tanuló pedig megszerkesztheti és idővel finomíthatja válaszát. Ez a válasz magánjellegű és csak az a tanár láthatja, aki visszajelzést adhat és pontszámmal láthatja el a napló minden egyes bejegyzését. Rendszerint célszerű hetente egy naplózási tevékenységet végrehajtani.

                            -
                          - diff --git a/lang/hu/help/label/mods.html b/lang/hu/help/label/mods.html deleted file mode 100644 index d7537490c30..00000000000 --- a/lang/hu/help/label/mods.html +++ /dev/null @@ -1,5 +0,0 @@ -

                           Címkék

                          -
                            -

                            Ez nem igazából tevékenység - inkább afféle "tartalék" tevékenység, amely lehetővé teszi szöveg vagy grafika beszúrását a kurzusoldalon lévő egyéb tevékenységek közé.

                            -
                          - diff --git a/lang/hu/help/langedit.html b/lang/hu/help/langedit.html deleted file mode 100644 index fd9e100b5f2..00000000000 --- a/lang/hu/help/langedit.html +++ /dev/null @@ -1,9 +0,0 @@ -

                          Nyelv szerkesztése

                          - -

                          Ahhoz, hogy ezen az oldalon nyelveket tudjunk szerkeszteni, a webszerver folyamatában az állományoknak írhatónak kell lenni. - -

                          Egyes betűsorokban $a és $a->valami jelekkel fogunk találkozni. - -

                          Ezek olyan változókat jelentenek, amelyeket a Moodle nevekkel vagy egyéb szavakkal cserél majd fel. - -

                          Ha csak egy változó használatos, annak formája: $a. Két vagy több változó használata esetén mindegyiknek külön neve van. \ No newline at end of file diff --git a/lang/hu/help/lesson/grade.html b/lang/hu/help/lesson/grade.html deleted file mode 100644 index a4f578f9eeb..00000000000 --- a/lang/hu/help/lesson/grade.html +++ /dev/null @@ -1,4 +0,0 @@ -

                          A leckére adott pontszám

                          - -

                          Ez az érték határozza meg azt a maximális pontszámot, amely a leckére adható. A tartomány 0 és 100% között változhat 100%. Ez az érték a lecke alatt bármikor módosíthat. Bármely változás azonnal megjelenik a Pontok oldalon és a különféle listákban a tanulók számára megjelenő pontokban. Ha a pontszám 0-ra van állítva, a lecke nem jelenik meg egy Pontok oldalon sem.

                          - diff --git a/lang/hu/help/lesson/handlingofretakes.html b/lang/hu/help/lesson/handlingofretakes.html deleted file mode 100644 index 5bd228a824d..00000000000 --- a/lang/hu/help/lesson/handlingofretakes.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Leckeismétlés kezelése

                          - -

                          Ha a tanulók megismételhetnek egy leckét, ezzel az opcióval a tanár megjelenítheti a leckére adott pontok számát például a Pontok oldalon, vagy úgy, mint a különféle próbálkozások pontjainak átlagát, vagy úgy, mint a tanulók legjobb próbálkozásaira adott pontszámot.

                          - -

                          Ez az opció bármikor módosítható.

                          - diff --git a/lang/hu/help/lesson/import.html b/lang/hu/help/lesson/import.html deleted file mode 100644 index b05c8810dcd..00000000000 --- a/lang/hu/help/lesson/import.html +++ /dev/null @@ -1,85 +0,0 @@ -

                          Új kérdések importálása

                          - -

                          Ezzel a funkcióval külső, űrlapon keresztül feltöltött szöveges állományból importálhatunk kérdéseket. - -

                          A rendszer egy sor állományformát támogat: - -

                          GIFT-forma

                          -
                            -

                            A GIFT a legkiterjedtebb importálási forma, mellyel a Moodle szöveges állományokból tesztkérdéseket képes beolvasni. Eredetileg egy könnyű módszert kínált arra, hogy a tanárok a kérdéseket szöveges állományként írhassák meg. Támogatja a feleletválasztós, igaz-hamis, kiegészítő, párosító és számjegyes kérdések használatát, továbbá az _____ beszúrását a "szókitöltő" forma esetén. A különféle kérdésfajták egyetlen szöveges állományban vegyesen használhatók, emellett a formátum támogatja egysoros megjegyzések, kérdésnevek, visszajelzés és százaléksúlyozású pontok használatát. Íme néhány példa:

                            -
                            -Ki fekszik Grant sírjában?{~Grant ~Jefferson =senki}
                            -
                            -Grant {~temetett =elhantolt ~él} Grant sírjában.
                            -
                            -Grant van eltemetve Grant sírjába.{FALSE}
                            -
                            -Ki fekszik Grant sírjában?{=senki =senki sem}
                            -
                            - Grant?{#1822}
                            -
                            - -

                            További információk a "GIFT" formával kapcsolatosan

                            -
                          - -

                          Aiken forma

                          -
                            -

                            Az Aiken forma feleletválasztós kérdések készítéséhez használt igen egyszerű, olvasható forma. Íme egy példa erre a formára:

                            -
                            -Mi az elsősegély célja?
                            -A. Élet megmentése, további sérülés megelőzése, egészség megőrzése
                            -B. Sérült vagy sebesült személy részére orvosi ellátás biztosítása
                            -C. További sérülés megelőzése
                            -D. VÁLASZOK: A
                            -
                            - -

                            További információk az "Aiken" formával kapcsolatosan

                            -
                          - - -

                          szókitöltő

                          -
                            -

                            Ez a forma csak a feleletválasztós kérdéseket támogatja. Az egyes válaszokat hullámjel (~) választja el egymástól, a helyes válasz előtt egyenlőségjel (=) áll. Íme egy példa: - -

                            Amikor kisgyermekként elkezdjük felfedezni testünk részeit, az {{=anatómia és fiziológia ~reflexológia ~tudomány ~kísérlet} tanulóivá válunk, és bizonyos értelemben tanulók is maradunk egész életünkben.
                            - -

                            További információk a "szókitöltő" formával kapcsolatosan

                            -
                          - - -

                          AON

                          -
                            -

                            Ez azonos a szókitöltő formával, azzal a különbséggel, hogy a kérdések importálása után az összes kiegészítő kérdéseket a rendszer négyesével párosító kérdésekké alakítja át.

                            -

                            Emellett az importálás során a feleletválasztós kérdésekre adandó válaszokat a rendszer véletlenszerűen rendezi el. -

                            Nevét egy olyan szervezetről kapta, amely számos tesztjellemző kifejlesztéséhez adott támogatást

                            -
                          - - -

                          Blackboard

                          - - -

                          Kurzusok feladatkezelője

                          -
                            -

                            Ez a modul Course Test Manager feladatbanki formában mentett kérdéseket képes importálni. A Microsoft Access adatbázisban tárolt feladatbankhoz különféle hozzáférési módokat támogat attól függően, hogy a Moodle Windows vagy Linux webszerveren fut.

                            -

                            Windows alatt az Access adatbázist bármely egyéb adatállományhoz hasonlóan importálhatjuk.

                            -

                            Linux esetén egy Windows gépet kell létrehoznunk a Course Test Manager adatbázissal azonos hálózaton egy ODBC Socket Server nevű porgrammal együtt, amely XML segítségével adja át az adatokat a Moodle számára a Linux szerveren.

                            Az ilyen importálási lehetőség használata előtt olvassa el az egész súgót.

                            - - -

                            További információk a "CTM" formával kapcsolatosan

                            -
                          - -

                          Saját

                          -
                            -

                            Ha saját importálási formával rendelkezünk, szerkesszük meg ennek megfelelően a mod/quiz/format/custom.php állományt. - -

                            Az újonnan írandó kód igen csekély - az adott szövegből mindössze egy kérdés beolvasását kell megírni. - -

                            További információk a "Saját" formával kapcsolatosan

                            -
                          - - -

                          További formák kerülnek a rendszerbe a későbbiek folyamán, ideértve a WebCT-t, az IMS QTI-t és bármely egyebet, amelyet a Moodle felhasználói rendelkezésre bocsátanak!

                          diff --git a/lang/hu/help/lesson/jumpto.html b/lang/hu/help/lesson/jumpto.html deleted file mode 100644 index 9f5d1cbed4f..00000000000 --- a/lang/hu/help/lesson/jumpto.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Az ugrópont

                          - -

                          Minden válaszhoz hozzátartozik egy ugrópont. Az adott válasz kiválasztásakor a tanuló előtt megjelenik a válaszhoz kapcsolódó válasz. Ezután a tanuló előtt megjelenik az ugrópontban megadott oldal. Ez a hivatkozás lehet relatív vagy abszolút. A relatív hivatkozások az Ez az oldal és a Következő oldal. Az Ez az oldal azt jelenti, hogy a tanuló ismét az adott oldalt fogja látni. A Következő oldal az oldalak logikai sorrendjében következő oldalnak felel meg. Az abszolút oldalhivatkozást az oldal címének a kiválasztása határozza meg.

                          -

                          Ne feledjük, hogy egy (relatív) Következő oldal ugrópont oldalak áthelyezése után más oldalra mutathat. Ugyanakkor az oldalak címén - keresztüli hivatkozások az oldalak eltávolítása után is mindig ugyanara az oldalra fognak mutatni.

                          - diff --git a/lang/hu/help/lesson/maxanswers.html b/lang/hu/help/lesson/maxanswers.html deleted file mode 100644 index 23710bc7329..00000000000 --- a/lang/hu/help/lesson/maxanswers.html +++ /dev/null @@ -1,7 +0,0 @@ -

                          Adott leckéhez tartozó válaszok maximális száma

                          - -

                          Ez az érték határozza meg azon válaszok maximális számát, amelyeket a tanár használhat. Alapértelmezésben ez az érték 4. Ha egy leckében, mondjuk, mindvégig csak IGAZ vagy HAMIS kérdések szerepelnek, akkor célszerű ezt az értéket 2-re állítani.

                          - -

                          Ugyancsak ez a paraméter határozza meg az adott elágazási táblázatban használható elágazások maximális számát.

                          - -

                          Ezt a paramétert olyan lecke esetén célszerű megváltoztatni, amely már rendelkezik tartalommal. Ha számos választási lehetőséget kínáló kérdést vagy egy terjedelmes elágazási táblázatot kívánunk hozzáadni, akkor ezt a paramétert módosítanunk kell. Miután sikerült a (szokatlan) kérdést vagy elágazási táblázatot hozzáadnunk, ezt a paramétert lecsökkenthetjük egy "szokásosabb" értékre.

                          diff --git a/lang/hu/help/lesson/maxattempts.html b/lang/hu/help/lesson/maxattempts.html deleted file mode 100644 index 634183e2dc1..00000000000 --- a/lang/hu/help/lesson/maxattempts.html +++ /dev/null @@ -1,11 +0,0 @@ -

                          (Tanulói) Próbálkozások maximális száma

                          - -

                          Ez az érték határozza meg, hogy egy tanuló legfeljebb hányszor próbálkozhat a leckéhez tartozó bármely kérdés megválaszolása során. Az olyan kérdéseknél, amelyekhez nem tartozik válasz, például a kiegészítő és a számjegyes kérdések esetén, ez az érték egy szükséges kilépési eljárást tesz lehetővé a lecke következő oldalára való ugráshoz.

                          - -

                          Alapértelmezésben ez az érték 5. A kisebb értékek arra ösztönözhetik a tanulót, hogy ne töprengjen a kérdésen. A nagyobb értékek ugyanakkor több csalódás előtt nyitják meg az utat.

                          - -

                          Ennek az értéknek 1-re állítása esetén a tanuló minden kérdést csakis egyszer válaszolhat meg. Ez a tesztmodulhoz hasonló típusú feladatot ad hozzá azzal a különbséggel, hogy a kérdések külön oldalakon jelennek meg.

                          - -

                          Ne feledjük, hogy ez az érték globális paraméter és minden kérdésre vonatkozik, függetlenül azok típusától.

                          - -

                          Ne feledjük továbbá, hogy ez a paraméter nem érvényes a kérdések tanár általi ellenőrzésére vagy a leckén való végighaladásra. A próbálkozások számának az ellenőrzése azon értékeken alapszik, amelyek az adatbázisban vannak tárolva, ugyanakkor a tanári kérdéspróbálkozások nem tárolódnak. Elvégre a tanárnak ismernie kell az összes választ!

                          diff --git a/lang/hu/help/lesson/maxpages.html b/lang/hu/help/lesson/maxpages.html deleted file mode 100644 index 04c9d3b8ce7..00000000000 --- a/lang/hu/help/lesson/maxpages.html +++ /dev/null @@ -1,6 +0,0 @@ -

                          Megjelenítendő oldalak (kártyák) száma

                          - -

                          Ez a paraméter kizárólag Flash Card típusú leckékre érvényes. Az alapérték nulla, ami azt jelenti, hogy egy leckében minden oldal/kártya megjelenik. Ha ezt a paramétert nem nullának megfelelő valamilyen értékre állítjuk, akkor az adott számú oldal fog megjelenni. Ha az adott számú oldat/kártyát a rendszer megmutatta, a lecke véget ér és a tanuló előtt láthatóvá válik az elért pontszám.

                          - -

                          Ha a paramétert a leckében lévő oldalak számánál nagyobb értékre állítjuk, akkor a lecke akkor ér véget, ha megtörtént minden oldal megjelenítése.

                          - diff --git a/lang/hu/help/lesson/minquestions.html b/lang/hu/help/lesson/minquestions.html deleted file mode 100644 index b4eba203927..00000000000 --- a/lang/hu/help/lesson/minquestions.html +++ /dev/null @@ -1,13 +0,0 @@ -

                          Adott leckéhez tartozó kérdések minimális száma

                          - -

                          Ha egy lecke egy vagy több elágazási táblázatot tartalmaz, a tanárnak általában be kell állítania azt a paramétert. Ennek az értéke egy alsó határt állít be a kérdések számára vonatkozóan egy pontszám kiszámításához. Ugyanakkor nem kényszeríti a tanulókat arra, hogy a leckében ennyi kérdést meg is válaszoljanak.

                          - -

                          Ha például ezt a paramétert 20-ra állítjuk be, akkor azzal biztosíthatjuk, hogy a pontok megállapítása úgy történjék, mintha a tanulók legalább ennyi kérdéssel foglalkoztak volna. Vegyük alapul azt az esetet, amikor egy tanuló egy leckének csak egyetlen - mondjuk, 5 oldalt tartalmazó - ágával foglalkozik, és minden ehhez kapcsolódó kérdést helyesen válaszol meg. Ilyen esetben ezután úgy dönt, hogy befejezi a leckét (feltételezve, hogy ez a lehetőség rendelkezésére áll a "felső szintű" elágazási táblázatban, ami célszerű feltételezésnek mondható). Ha ez a paraméter nem volna beállítva, pontszáma 5-ből 5, azaz 100% lenne. Mivel viszont a beállítás ez esetben 20, pontszáma 20-ból 5-re, vagyis 25%-ra lenne csökkentve. Egy másik tanuló esetén, aki az összes elágazást bejárja és - mondjuk - 25 oldalra ellátogat -, és kettő kivételével az összes kérdésre helyes választ ad, a pontszáma 25-ből 23 lenne, tehát 92%.

                          - -

                          Ezen paraméter használata esetén a lecke nyitó oldalán valami alábbihoz hasonló szöveg szerepelhet:

                          - -

                          Ebben a leckében legalább n kérdéssel meg kell próbálkoznia. Ha kívánja, többel is próbálkozhat. Ha viszont n kérdésnél kevesebbel próbálkozik, pontszámának a kiszámításakor a rendszer abból indul ki, hogy Ön n próbálkozást vett igénybe.

                          - -

                          Az "n" a paraméter tényleges értékét jelenti.

                          - -

                          Ha ez a paraméter be van állítva, a tanulók értesülnek arról, hogy hány kérdéssel próbálkoztak és hánnyal kell még próbálkozniuk. \ No newline at end of file diff --git a/lang/hu/help/lesson/mods.html b/lang/hu/help/lesson/mods.html deleted file mode 100644 index ff86bad51a7..00000000000 --- a/lang/hu/help/lesson/mods.html +++ /dev/null @@ -1,6 +0,0 @@ - Lecke - -

                            -

                            A lecke tartalom érdekes és rugalmas módon való közvetítésére használható. Több oldalból tevődik össze. Minden oldal általában egy kérdéssel és hozzá egy sor lehetséges válasszal zárul. A tanuló a válaszadási lehetőségektől függően vagy tovább lép a következő oldalra, vagy visszajut az előzőre. A leckén való végighaladás a közreadandó anyag struktúrájától függően lehet egyszerű és bonyolult.

                            -
                          - diff --git a/lang/hu/help/lesson/nextpageaction.html b/lang/hu/help/lesson/nextpageaction.html deleted file mode 100644 index 2bc7ba3b473..00000000000 --- a/lang/hu/help/lesson/nextpageaction.html +++ /dev/null @@ -1,11 +0,0 @@ -

                          Helyes válasz utáni lépés

                          - -

                          A szokásos lépés a válaszokban megadott ugrópont követése. Ez az esetek többségében a lecke következő oldalának a megjelenítését jelenti. A tanuló a leckén annak logikai rendje szerint halad végig, kezdi az elején és befejezi annak a végén.

                          - -

                          Ugyanakkor a leckemodul használható Flash Card típusú feladatként is. A tanuló valamennyi információt lát (opció) és egy alapvetően véletlenszerűen kiválasztott kérdést. Itt nincs beállított kezdet és beállított befejezés. Csupán egy sor kártya egymás utáni bemutatására kerül sor konkrét sorrend előírása nélkül.

                          - -

                          Ez az opció a Flash Card két igen hasonló viselkedését engedi meg. A "Show an unseen page" [Még nem látott oldal megjelenítése] opció sohasem mutatja ugyanazt az oldalt kétszer (még akkor sem, ha a tanuló nem válaszolt helyesen a kártyához/oldalhoz kapcsolódó kérdésre). A másik, nem alapbeállítás szerinti "Show an unanswered page" [Megválaszolatlan oldal megjelenítése] opció révén a tanuló megtekintheti azokat az oldalakat, amelyeket esetleg korábban látott, de csakis akkor, ha azok kérdéseire rosszul válaszolt.

                          - -

                          Mindkét Flash típusú lecke esetén a tanár eldöntheti, hogy az adott lecke összes kártyáját/oldalát használja-e, vagy azoknak csak egy (véletlenszerűen kiválasztott) részhalmazát. Ezt a "Number of Pages (Cards) to show" [Megjelenítendő oldalak (kártyák) száma] paraméterrel állítjuk be.

                          - - diff --git a/lang/hu/help/lesson/overview.html b/lang/hu/help/lesson/overview.html deleted file mode 100644 index a73e30ffd87..00000000000 --- a/lang/hu/help/lesson/overview.html +++ /dev/null @@ -1,24 +0,0 @@ -

                          Áttekintés

                          - -
                            -
                          1. Egy-egy lecke néhány oldalból és esetlegesen elágazási táblázatból épül föl. -
                          2. Egy oldalon valamilyen tartalom jelenik meg, és általában egy kérdéssel végződik. Innen származik a Kérdésoldal elnevezés. -
                          3. Az egyes oldalak általában tartalmaznak egy sor választ. -
                          4. A válaszokhoz hozzá tartozhat egy rövid szöveg, amely megjelenik, ha az adott válaszra esik a választás. Ennek a szövegnek a neve a viszontválasz. -
                          5. Emellett a válaszokhoz hozzá tartozik egy ugrópont. Az ugrópont lehet relatív - adott oldalhoz, következő oldalhoz való ugrás - vagy abszolút - a lecke bármely oldalát vagy a lecke végét megjelölő ugrás. -
                          6. Alaphelyzetben az első válasszal a lecke következő oldalára jutunk. A többi válasszal ugyanarra az oldalra ugrunk. Vagyis a tanuló ismét a lecke azonos oldalát látja, ha nem az első választ választotta. -
                          7. Azt, hogy melyik lesz a következő oldal, a lecke logikai sorrendje határozza meg. Ez az oldalaknak azon sorrendje, amelyet a tanár lát. Ez a sorrend az oldalak leckén belüli áthelyezésével módosítható.
                          8. A lecke emellett rendelkezik navigálási sorrenddel is. Ez az oldalaknak azon sorrendje, amelyet a tanuló lát. A navigálás sorrendjét az egyes válaszokhoz megadott ugrópontok határozzák meg, így az számottevően eltérhet a logikai sorrendtől. (Noha az ugrópontok alapértékei nem módosulnak, a kettő szorosan összefügg egymással.) A tanárnak lehetősége van a navigálási sorrend ellenőrzésére. -
                          9. A tanulók számára való megjelenítés során a válaszok rendszerint összekeverten láthatók. Ennek megfelelően a tanár szempontjából elsőnek minősülő válasz nem feltétlenül látszik a tanuló által látott listán is az első helyen. (Továbbmenve, ugyanazon válaszok megjelenésekor ezek feltételezhetően eltérő sorrendben jelennek majd meg.) Kivételt képeznek a párosító kérdésekre adott válaszok, melyek esetén a válaszok sorrendje megegyezik a tanár által megadott sorrenddel. -
                          10. A válaszok száma oldalról oldalra változhat. Például egyes oldalak végződhetnek igaz-hamis kérdéssel, míg más oldalak végén egy helyes választ és, mondjuk, három eltérítőt tartalmazó kérdés szerepelhet.
                          11. Olyan oldal is kialakítható, amelyen egyáltalán nincsenek válaszok. A tanulók ilyenkor egy Tovább menüpontot látnak az összekevert válaszok helyett. -
                          12. A lecke pontozása érdekében a helyes válaszokkal olyan oldalra ugorhatunk, amely az adott oldalhoz viszonyítva a logikai sorrendben lejjebb található. A hibás válaszokkal vagy ugyanarra az oldalra ugorhatunk, vagy pedig olyanra, amely az adott oldalhoz viszonyítva a logikai sorrendben feljebb található. Így ha az ugrópontok nem változnak, akkor az első válasz a helyes válasz, a többi pedig hibás válasz. -
                          13. Egy-egy kérdéshez több helyes válasz is tartozhat. Ha például a válaszok közül kettővel a következő oldalra jutunk, akkor mindkét választ helyes válasznak tekintjük. (Habár a tanulók ugyanazt a céloldalt látják, az adott oldalhoz vezető kapcsolódó válaszok eltérőek lehetnek a két válasz esetén.) -
                          14. A lecke tanári megjelenítésénél a helyes válaszoknál aláhúzott válaszcímke szerepel.
                          15. Az elágazási táblázatok olyan egyszerű oldalak, amelyeken a lecke más oldalaira vonatkozó hivatkozások jelennek meg. Jellemző esetben a lecke egy elágazási táblázattal indul, amely afféle Tartalomjegyzék szerepét tölti be. -
                          16. Az elágazási táblázat minden hivatkozása két összetevőt tartalmaz, a leírást és azon oldal címét, ahová a rendszer ugrani fog. -
                          17. Az elágazási táblázattal hatékonyan elágazásokra (vagy szekciókra) oszthatunk föl egy leckét. Egy-egy elágazáshoz egy sor oldal tartozhat (melyek mindegyike feltehetőleg ugyanarra a témára vonatkozik). Az elágazás végét rendszerint egy elágazás vége oldal jelöli. Ez egy különleges oldal, amely alaphelyzetben visszajuttatja a tanulót az előző elágazási táblázathoz. (Az elágazás végét jelölő oldalon a "visszatérő" ugrópontot szükség esetén az oldal szerkesztésével megváltoztathatjuk.) -
                          18. Egy lecke több elágazási táblázatot is tartalmazhat. Egy lecke például szervezhető úgy, hogy a speciális kérdések a téma fő elágazásain belül azok részágait jelentsék. -
                          19. Fontos, hogy a tanulóknak lehetőségük legyen a lecke befejezésére. Erre a célra beiktathatunk egy "Lecke befejezése" elnevezésű pontot a fő elágazási táblázatba. Ezzel a Lecke vége nevű (képzeletbeli) oldalra ugorhatunk. Másik lehetőség, ha a lecke utolsó elágazását (az "utolsó" ez esetben a logikai elrendezés szerinti értelemben szerepel) a lecke végéig folytatjuk, vagyis nem zárjuk le egy Elágazás vége nevű oldallal.
                          20. Ha a lecke egy vagy több elágazási táblázatot tartalmaz, ajánlatos a "minimális kérdésszám" paramétert valamilyen ésszerű értékre beállítani. Ezzel alacsonyabb értéket adunk meg a pontszám kiszámítása alatt látható oldalak számát illetően. Ezen paraméter nélkül előfordulhat, hogy a tanuló megtekinti a lecke egyik elágazását, annak minden kérdésére helyesen válaszol, majd maximális pontszámmal kilép a leckéből. -
                          21. Emellett egy elágazási táblázat esetén a tanulónak módjában áll ugyanazt az ágat többször is bejárni. A pontszám kiszámítása azonban a megválaszolt egyedi kérdések alapján történik. Ennek megfelelően ugyanannak a kérdéssornak az ismételt megválaszolásával nem növekszik a pontszám. (Éppen ellenkezőleg: maga a pontszám csökkenni fog, mivel a látott oldalak száma a nevezőbe kerül, ha a pontok kiszámítása ismétléseket tartalmaz.) A tanulók adott leckében való tényleges haladásának ábrázolásához az egyes elágazási táblázatok oldalán megjelenik, hogy hány kérdést válaszoltak meg helyesen, hány oldalra látogattak el és mennyi a pillanatnyi pontszámuk.
                          22. A lecke végét vagy az adott helyre való konkrét ugrással, vagy a lecke utolsó (logikai) oldaláról a következő oldalra való ugrással érik el. A lecke végének elérésekor a tanuló kap egy gratulációt tartalmazó üzenetet, és megjelenik előtte az elért pontszám. A pontszám a (helyesen megválaszolt kérdések száma / megtekintett oldalak száma) * a leckére adható pontszám. -
                          23. Ha a tanuló nem éri el a lecke végét és távozik, akkor a legközelebbi visszatérésekor lehetősége van a lecke elejétől az újrakezdésre, vagy onnan folytathatja, ahol az utolsó helyes választ adta a lecke során. -
                          24. Az ismétlést lehetővé tevő lecke esetén a tanár a lecke "végső" pontszámát illetően választhat a legjobb pontszám használata és a pontok átlagának a figyelembevétele közül . Ez a pontszám például a Pontok oldalon jelenik meg. -
                          - diff --git a/lang/hu/help/lesson/questionoption.html b/lang/hu/help/lesson/questionoption.html deleted file mode 100644 index 8570f0ae351..00000000000 --- a/lang/hu/help/lesson/questionoption.html +++ /dev/null @@ -1,10 +0,0 @@ -

                          Kérdésváltozat

                          - -

                          A kérdésfajták egy részéhez változat tartozik, amelyet a jelölőnégyzetre kattintva érhetünk el. Ezeket a kérdésfajtákat és a változatok jelentését alább soroljuk föl. - -

                            -
                          1. Feleletválasztós A feleletválasztós kérdéseknek van egy "feleletválasztós válaszválasztós" kérdésváltozata. A kérdésváltozat kiválasztása esetén a tanulónak a megadott válaszok közül az összes helyes választ ki kell választania. A kérdés vagy jelzi a tanuló számára, hogy hány helyes válasz adható, vagy nem. Például egy "Az alábbiak közül kik voltak az USA elnökei?" kérdés ezt nem jelöli, míg a "Válassza ki az alábbi felsorolásból a két USA-elnököt." igen. A helyes válaszok száma egytől az összes lehetséges válasz számáig terjedhet. (Az egy helyes választ tartalmazó feleletválasztós válaszválasztós kérdés eltér a feleletválasztós kérdéstől, mivel az előbbi lehetővé teszi a tanuló számára, hogy egynél több választ válasszon ki, míg az utóbbi erre nem ad lehetőséget.)

                          2. - -
                          3. Kiegészítő Alaphelyzetben az összehasonlítás figyelmen kívül hagyja a kis- és nagybetűk közötti különbséget. A kérdésváltozat kiválasztásakor az összehasonlítás érzékeny lesz a kis- és nagybetűk közötti különbségre.

                          4. - -

                            A többi kérdésfajta esetén nincsenek kérdésváltozatok.

                            diff --git a/lang/hu/help/lesson/questiontypes.html b/lang/hu/help/lesson/questiontypes.html deleted file mode 100644 index 18335b8be7e..00000000000 --- a/lang/hu/help/lesson/questiontypes.html +++ /dev/null @@ -1,36 +0,0 @@ -

                            Kérdésfajták

                            - -

                            A leckemodul jelenleg a következő kérdésfajtákat támogatja: - -

                              -
                            1. Feleletválasztós Ez az alapértelmezés szerinti kérdésfajta. A feleletválasztós kérdés olyankor közkedvelt kérdésfajta, amikor a tanulónak egy sor alternatív megoldás közül kell kiválasztania a megfelelőt. Helyes válasz esetén a tanuló továbblép a leckében, míg rossz válaszokkal nem léphet tovább. A rossz válaszokat gyakran hívják "eltérítőknek". Ezen kérdések hasznossága sokszor az eltérítők minőségén múlik, mint akár magán a kérdésen vagy az arra adandó helyes válaszon.

                              - -

                              Az egyes válaszokhoz opcionálisan tartozhatnak viszontválaszok. Ha valamely válaszhoz nem adunk meg viszontválaszt, akkor a rendszer alapesetben "Helyes a válasz" vagy "Helytelen a válasz" visszajelzést ad a tanulónak.

                              - -

                              Egy feleletválasztós kérdéshez egynél több helyes válasz is tartozhat. A különféle helyes válaszokhoz a tanuló más-más viszontválaszt kaphat és más-más (előre lépő) oldalra ugorhat a leckén belül, de nincs eltérés a rájuk adott pontszámok tekintetében (vagyis nincsenek a másiknál helyesebb válaszok, legalábbis pontszám tekintetében.) Előfordulhat, hogy az összes válasz helyes, és mindegyikük a lecke más-más (előre lépő) részére juttathatja a tanulót a kiválasztott választól függően.

                              - -

                              A feleletválasztós kérdésnek létezik egy "feleletválasztós válaszválasztós" kérdésfajtája is. Ez esetén a tanulónak a megadott válaszok közül az összes helyes választ kell kiválasztania. A kérdés vagy elárulja a tanuló számára a helyes válaszok számát, vagy nem. Például "Az alábbiak közül ki volt az USA elnöke?" nem árulkodik erről, míg a "Válassza ki az alábbi felsorolásból a két USA-elnököt." igen. A helyes válaszok száma egytől a válaszok összes számáig terjedhet. ( (Az egy helyes választ tartalmazó feleletválasztós válaszválasztós kérdés eltér a feleletválasztós kérdéstől, mivel az előbbi lehetővé teszi a tanuló számára, hogy egynél több választ válasszon ki, míg az utóbbi erre nem ad lehetőséget.)

                              - -

                              Itt a helyes választ ismét egy előre mutató ugrópont jelzi, míg a helytelen válaszok ugyanazon oldalra vagy visszafelé mutató ugrópontot jelentenek. Egynél több helyes válasz esetén az ugrópontok mindegyikének ugyanarra az oldalra kell mutatnia, hasonlóan a rossz válaszokhoz. Ellenkező esetben a lecke tanári nézetében figyelmeztetés jelenik meg. A helyes viszontválaszt - ha szükséges - az első helyes válaszhoz kell megadni, míg a helytelen válaszokhoz tartozó viszontválaszt adott esetben az első rossz válasznál kell megadni. A többi válaszra adott viszontválaszt a rendszer (figyelmeztetés nélkül) figyelmen kívül hagyja.

                            2. - -
                            3. Kiegészítő A tanulónak egy rövid szöveget kell beírnia. Ezt a szöveget hasonlítja a rendszer egy vagy több válaszhoz. A válaszok helyesek vagy helytelenek lehetnek. Az egyes válaszokhoz opcionálisan tartozhatnak viszontválaszok. Ha valamely válaszhoz nem adunk meg viszontválaszt, akkor a rendszer alapesetben "Helyes a válasz" vagy "Helytelen a válasz" visszajelzést ad a tanulónak. Ha a beírt szöveg egyik válasznak sem felel meg, akkor a kérdés rossz és a tanuló az alapértelmezés szerinti rossz válaszhoz tartozó viszontválaszt kapja.

                              - -

                              Alaphelyzetben a hasonlítás nem tesz különbséget kis- és nagybetűk között. A betűérzékenység beállítására külön opció áll rendelkezésre.

                              - -

                              A csillag (*) karakter a válaszokban "helyettesítő" karakterként használható. Jelentése tetszőleges számú karakter (beleértve a karakter hiányát is). Ha például a válaszban a "hossz*" alak szerepel, akkor az megfelel mind a "hosszú", a "hosszabb", mind pedig a "hossz" alaknak. Ha a válaszok egyikének csak a "*" (egyetlen *) van megadva, akkor ez a válasz bármilyen válasznak megfelel, így általában egy utolsó, "mindent magában foglaló" válaszként használatos. (Amennyiben a válaszban a csillagnak (*) ténylegesen szerepelnie kell, akkor azt \* alakban, azaz visszaperjel csillag alakban kell megadni.)

                            4. - -
                            5. Igaz/hamis A válaszadó itt csak két lehetséges válasz közül választhat: igaz vagy hamis. A tanulónak a helyes változatot kell kiválasztania. Az effajta kérdések alapvetően olyan feleletválasztós kérdések, amelyekhez csak két választási lehetőség kapcsolódik.

                            6. - -
                            7. Párosító Ezek igen hasznos és sokoldalú kérdések. Egy sor megnevezésből vagy állításból állnak, melyeket helyesen kell összepárosítani egy másik sor megnevezéssel vagy állítással. Például: "Párosítsa az országot a fővárosával!", melyhez két felsorolás párosul: Japán, Kanada, Olaszország, illetve Tokió, Ottawa, Róma. AZ egyik felsorolásban szerepelhetnek ismételt fogalmak, de ügyelni kell arra, hogy az ismétlődések azonosak legyenek. Például: "Azonosítsa az alábbi élőlények típusát!", és a felsorolások: veréb, tehén, hangya, kutya és madár, állat, rovar, állat.

                              - -

                              Az effajta kérdés létrehozásakor az első felsorolás elemei a Válasz négyzetekbe kerülnek, míg a második lista elemei a Viszontválasz négyzetekbe. Létrehozásuk után a címkék egyértelműbben látszanak. Ha a tanuló sikeresen párosítja az elemeket, akkor az első válaszhoz megadott ugrópont lép működésbe. A sikertelen válasz a második válasz szerinti ugrópontra viszi a tanulót. A kérdés nem teszi lehetővé egyéni viszontválaszok kialakítását, a tanuló értesül arról, hogy hány párosítása volt helyes, vagy hogy az összes párosítás helyes volt-e.

                              - -

                              A feleletválasztós kérdéstől eltérően, ahol a választási lehetőségek véletlenszerűen jelennek meg, az elemek első listája nincs összekeverve, hanem a megadott sorrend szerint jelenik meg. Ennek köszönhetően "rendezett" kérdések megalkotására nyílik lehetőség. Vegyük az alábbi kérdést: "Rendezze az alábbiakat születésük szerint növekvő sorrendbe!", a lista pedig: 1., 2., 3., 4. és Longfellow, Lawrence, Lowell, Larkin. Természetesen a második felsorolás elemein a kérdésben való felhasználásukat megelőzően megtörténik az összekeverés.

                            8. - -
                            9. Számjegyes: Ezen kérdéstípus esetén a válasz egy szám. Legegyszerűbb alakjában mindössze egyetlen választ kell meghatároznunk. Például: "Mennyi 2 meg 2?", melyhez ha a válasz 4, akkor működésbe lép az előre mutató ugrópont. Szerencsésebb ugyanakkor egy tartományt megadni, mert a számértékek belső kerekítése a számjegyes összehasonlítások esetén teret enged a vakszerencsének. Ennek megfelelően a "Mennyi 10 osztva 3-mal" kérdésre a válasz "minimum:maximum" volna, azaz két, egymástól kettősponttal elválasztott érték (:). Így ha 3,33:3,34 van megadva mint a válaszok elfogadható tartománya, akkor a 3,33, 3,333, 3,3333... válaszok mindegyikét helyes válaszként kezelnénk. A "rossz" válaszok között szerepelne mind a 3,3 (a minimumnál kevesebb), mind a 3,4 (a maximumnál nagyobb érték).

                              - -

                              Lehetőség van egynél több helyes válasz megadására, és a válaszok lehetnek egyedi vagy páros értékek. Ne feledjük, hogy a válaszok ellenőrzése 1. válasz, 2. válasz sorrendben történik, ezért figyelni kell, hogy adott esetben a megfelelő viszontválasz jelenjen meg. Például a "Mikor született Larkin?" kérdéshez hozzátartozhat az 1922 mint egyedi, pontos választ adó érték, vagy az 1920:1929 értékpár mint az 1920-as évek, azaz egy kevésbé pontos érték. Ezen értékek értékelési sorrendje természetesen 1922, majd 1920:1929. Az első válaszhoz esetleg adható ilyen viszontválasz: "Pontosan!", a másik válasz viszontválasza lehetne a "Úgy van, eltalálta az évtizedet!".

                              - -

                              Megadhatunk rossz válaszokat is, de a tartománytól függően ügyelni kell arra, hogy ezek a helyes válaszok után szerepeljenek. Például ha a 3:4 rossz választ adjuk meg a "Mennyi 10 osztva 3-mal" kérdéshez, akkor annak a helyes válasz után kell következnie. Vagyis a válaszok sorrendje: 3,33:3,34 (a "helyes" válasz), majd a 3:4 (a "rossz", de azért nem kiugróan rossz válasz!).

                            10. -
                        - diff --git a/lang/hu/help/lesson/retake.html b/lang/hu/help/lesson/retake.html deleted file mode 100644 index 8a5d969cb8d..00000000000 --- a/lang/hu/help/lesson/retake.html +++ /dev/null @@ -1,9 +0,0 @@ -

                        Lecke újbóli elvégzésének engedélyezése

                        - -

                        Ez a beállítás határozza meg, hogy a tanulók egynél többször is elvégezhetnek-e egy leckét. A tanár vélekedhet úgy, hogy a leckében szerepelnek olyan anyagok, amelyeket a tanulóknak alaposan ismerniük kell. Ilyen esetben lehetővé kell tenni a lecke ismételt megtekintését. Ha viszont a tananyag inkább afféle vizsga szerepét tölti be, azt a tanulók csak egyszer vehetik végig.

                        - -

                        Ha engedélyezzük a lecke újbóli elvégzését, akkor a pontokat tartalmazó oldalon lévő pontok vagy az ismétlések átlagos pontszámát, vagy a tanulóknak a leckére kapott pontszámát jelzik. A következő paraméter azt határozza meg, hogy a két pontozási lehetőség közül melyiket fogjuk használni.

                        - -

                        Ne feledjük, hogy a kérdéselemzés mindig a leckén végrehajtott első próbálkozásból kapott válaszokra vonatkozik, a tanulók későbbi próbálkozásait figyelmen kívül hagyja.

                        - -

                        Alaphelyzetben ez az opció Igen-re van beállítva, vagyis a tanulók újból elvégezhetik a leckét. Ezt az opciót feltehetőleg csak kivételes esetekben kell Nem-re állítani. \ No newline at end of file diff --git a/lang/hu/help/lesson/useeditor.html b/lang/hu/help/lesson/useeditor.html deleted file mode 100644 index 3e3f40d6eeb..00000000000 --- a/lang/hu/help/lesson/useeditor.html +++ /dev/null @@ -1,17 +0,0 @@ -

                        A HTML-szerkesztő használata

                        - -

                        Ez az opció oldalak szerkesztése közben bekapcsolja a HTML-szerkesztő (a továbbiakban: szerkesztő) használatát az egyszerű szövegbeviteli mezők helyett. A szerkesztővel egyszerűen formázhatjuk a szöveget és könnyen beszúrhatunk olyan "magasabb szintű" elemeket, mint a hivatkozások (ugrópontok).

                        - -

                        A szerkesztőt a Szerkesztő használata melletti négyzetre kattintva kapcsolhatjuk be. A szerkesztő az egyes összetevőkhöz egyedi módon kapcsolódik. Ha például bekapcsoljuk a szerkesztőt az 1. viszontválaszhoz, a szerkesztő csak ezzel az összetevővel lesz használható, és nem az összes viszontválasszal.

                        - -

                        Ha a szerkesztőt egy oldalon több összetevővel kívánjuk használni, először kattintsunk a Szerkesztő használata négyzetekre (ezekben ilyenkor pipának kell megjelenni.) Ezután az oldal ismét megjelenik a szerkesztő használatának bekapcsolásához. Ehhez kattintsunk a lap alján lévő Redisplay Page [Oldal újbóli megjelenítése] gombra.

                        - -

                        Ne feledjük, hogy a szerkesztő használatához körültekintésre van szükség. A legtöbb esetben ez nem okozhat gondot. Ugyanakkor nem ajánlott a használata kiegészítő és számjegyes kérdésekre adott válaszok esetén. A szerkesztő külön "láthatatlan" HTML-elemeket szúrhat be, amelyek miatt az összehasonlítás nem a várt módon működhet. Ezen túlmenően a leírások az elágazási táblázatokban a gombokon használatosak, és ha ezekben HTML-kód szerepel, az szintén gondokat okozhat. Nincs ilyen gond azokkal a válaszokkal, amelyek csak megjelenítésre használatosak, mint amilyen a feleletválasztós típusú kérdések esete. A szerkesztő használata viszontválaszok esetén úgyszintén nem jelenthet gondot.

                        - -

                        Ha gondra gyanakszunk bármely szöveges elem esetén, a biztonságos megoldás, ha kikapcsoljuk a szerkesztőt (a Szerkesztő használata négyzetben lévő pipa eltávolításával). Az oldal újbóli megjelenítésekor a szövegbeviteli mezőben a "nyers" szöveg látható. A szöveget tetszés szerint szerkeszthetjük. Ha a szerkesztőt egy elem esetén többször ki- és bekapcsoljuk, az a szöveget nem - módosítja.

                        - -

                        A Szerkesztő használata opció "állapotát" a rendszer minden elemmel együtt elmenti. Így ha egy oldalt újból szerkesztünk, a szerkesztőt korábban használó elemek ismét a szerkesztőben jelennek meg.

                        - -

                        Végezetül a szerkesztő meglehetősen "igényes" a böngésző erőforrásai tekintetében. Ha nincs szükség valamely tétel esetén a szerkesztő használatára, gyorsabb és biztonságosabb, ha csak a szokásos szövegbeviteli mezőket használjuk.

                        - diff --git a/lang/hu/help/login.html b/lang/hu/help/login.html index 0b7e90be4c2..6724d5031d8 100644 --- a/lang/hu/help/login.html +++ b/lang/hu/help/login.html @@ -1,10 +1,13 @@ -

                        Bejelentkezés

                        - -

                        Belépéskor mind a felhasználónevet, mind a jelszót ki kell tölteni, a kis- és nagybetűk különbözőnek számítanak!

                        - -

                        Ha a helyes név és jelszó után mégis az jelenik meg, hogy "Nincs bejelentkezve.", akkor valószínűleg a biztonsági beállítások miatt a felhasználó gépe nem fogadja a sütiket.

                        - -

                        Ennek a beállítása az Internet Explorerrel: -

                        -

                        A program ablakának jobb alsó sarkában egy kis piros stoptábla jelzi, hogy a sütik tiltva vannak. Ekkor: az Eszközök->Beállítások menüpontra kattintva az Adatbiztonság fülön állíthatjuk ezt be a Weblapok blokk Szerkesztés gombjára kattintva. A weblap cím beírása: www.u-szeged.hu/distedu/moodle, majd kattintson az Engedélyezés gombra. -

                        +

                        Bejelentkezés

                        + +

                        Belépéskor mind a felhasználónevet, mind a jelszót ki kell tölteni, a kis- és nagybetûk különbözõnek számítanak!

                        + +

                        Ha a helyes név és jelszó után mégis az jelenik meg, hogy "Nincs bejelentkezve, akkor valószínûleg a biztonsági beállítások miatt a felhasználó gépe nem fogadja a "cookie"-kat ("süti"-ket).

                        + +

                        Ennek beállítása Internet Explorerrel: +

                        +

                        A program ablakának jobb alsó sarkában egy kis piros stop-tábla jelzi, hogy a cookie-k le vannak tiltva. Ekkor: + +Az Eszközök->Beállítások menüpontra kattintva az Adatbiztonság fülön állíthatjuk ezt be a Weblapok blokk Szerkesztés gomjára kattintva. +A weblap cím beírása: www.fve.gau.hu/agora, majd az engedélyezés gombra kattintva. +

                        diff --git a/lang/hu/help/markdown.html b/lang/hu/help/markdown.html deleted file mode 100644 index a615960e66d..00000000000 --- a/lang/hu/help/markdown.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        Markdown-forma használata weboldalak készítésére

                        - -

                        A részletes leírást angol nyelven lásd itt .

                        - -
                        diff --git a/lang/hu/help/mods.html b/lang/hu/help/mods.html deleted file mode 100644 index 554b0695b4e..00000000000 --- a/lang/hu/help/mods.html +++ /dev/null @@ -1,3 +0,0 @@ -

                        Tevékenységmodulok

                        - -

                        A Moodle számos tevékenységmodult tartalmaz, melyek alapján tetszőleges típusú kurzus hozható létre.

                        diff --git a/lang/hu/help/picture.html b/lang/hu/help/picture.html deleted file mode 100644 index 4688cd3d5f4..00000000000 --- a/lang/hu/help/picture.html +++ /dev/null @@ -1,17 +0,0 @@ -

                        Kép feltöltése

                        - -

                        Egy képet feltölthetünk erre a szerverre. Ezt a képet aztán különféle helyeken használhatjuk azonosításunk céljára. -

                        Erre a célra a legmegfelelőbb egy közeli arcfelvétel, de bármilyen egyéb képet használhatunk. -

                        A képet JPG vagy PNG formátumban kell elkészíteni (tehát a nevek .jpg vagy .png kiterjesztéssel végződnek). -

                        A kép az alábbi négy módszer valamelyikével készíthető el: - -

                          -
                        1. Digitális fényképezőgéppel, mely esetben a fénykép a számítógépen feltehetőleg megfelelő formában már rendelkezésre áll. -
                        2. Lapolvasóval rögzíthetünk egy meglévő fényképet. Ez esetben ügyeljünk arra, hogy JPG vagy PNG formában mentsük el a képet. -
                        3. Akinek a művészi hajlama lehetővé teszi, rajzolhat képet egy képszerkesztő programmal. -
                        4. Végezetül az Internetről is "elcsenhetünk" képeket. A http://images.google.com honlapról kiindulva számos képet vadászhatunk le az Internetről. Ha megtaláltuk a nekünk szimpatikusat, a jobb egérgombra kattintva elmenthetjük a képet a "Save this image..." [Kép mentése] parancs segítségével a megjelenő menüpontra kattintva (ennek módja számítógépenként némileg eltérő lehet).
                        - -

                        A kép feltöltéséhez kattintsunk ezen a szerkesztő oldalon a "Browse" [Tallózás] gombra és válasszuk ki a merevlemezről a képet. -

                        MEGJEGYZÉS: Ügyeljünk arra, hogy a kép ne legyen nagyobb, mint a megadott maximális méret, ellenkező esetben a feltöltés elmarad. -

                        Ezután kattintsunk a lenti "Update my Profile" [Profil frissítése] gombra. A kép négyzet alakú és 100x100 képernyőpont méretű lesz. -

                        Ha visszakerülünk a profilunkat tartalmazó oldalra, előfordulhat, hogy a kép módosítása még nem lesz látható. Ilyen esetben kattintsunk a böngésző "Reload" [Frissítés] gombjára. \ No newline at end of file diff --git a/lang/hu/help/questionnaire/qmanage.html b/lang/hu/help/questionnaire/qmanage.html deleted file mode 100644 index 7e82fbb946a..00000000000 --- a/lang/hu/help/questionnaire/qmanage.html +++ /dev/null @@ -1,6 +0,0 @@ -

                        Felmérések kezelése phpESP használatával

                        -

                        - A kérdőíves modul phpESP segítségével hoz létre és kezel felméréseket. - Ezzel az ugróponttal érhető el a felmérések kezelése. -

                        - diff --git a/lang/hu/help/questionnaire/qtype.html b/lang/hu/help/questionnaire/qtype.html deleted file mode 100644 index 3dcabafa54a..00000000000 --- a/lang/hu/help/questionnaire/qtype.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Felmérésre adott válasz típusa

                        -

                        - Ha csak egyszer szeretnénk lehetővé tenni a felmérés kitöltését, - válasszuk a "válasz egyszer"-t.
                        - Ha erre többször lehetőséget kívánunk biztosítani, válasszuk a "válasz többször"-t. -

                        - diff --git a/lang/hu/help/questionnaire/questionnaireid.html b/lang/hu/help/questionnaire/questionnaireid.html deleted file mode 100644 index 52f77cca748..00000000000 --- a/lang/hu/help/questionnaire/questionnaireid.html +++ /dev/null @@ -1,6 +0,0 @@ -

                        Felmérés kiválasztása

                        -

                        - A phpESP meglévő felméréseinek felsorolásából válasszon ki egy - aktív felmérést. Ha felmérése nem szerepel a felsorolásban, akkor feltehetőleg nem aktív. -

                        - diff --git a/lang/hu/help/questionnaire/respondenttype.html b/lang/hu/help/questionnaire/respondenttype.html deleted file mode 100644 index 7f3959a0bac..00000000000 --- a/lang/hu/help/questionnaire/respondenttype.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Felmérésre adott válaszadó típusa

                        -

                        - A felhasználó teljes neve látszik az egyes válaszok mellett, ha a beállítás - "teljes név".
                        - A felhasználó kilétét elrejthetjük, ha beállításként a "névtelen"-t választjuk. -

                        - diff --git a/lang/hu/help/questions.html b/lang/hu/help/questions.html deleted file mode 100644 index e5c9c8f6e84..00000000000 --- a/lang/hu/help/questions.html +++ /dev/null @@ -1,59 +0,0 @@ -

                        Kérdések

                        - -

                        Egy téma alapos átgondolásának megfelelő eszköze, ha kérdéseket teszünk fel vele kapcsolatosan. Ha jó kérdéseket kapunk, az elősegíti, hogy az információkat összerendezzük, értékeljük meglévő elképzeléseinket és új ötleteket fogalmazzunk meg.

                        - -

                        Az olyan kérdések technikáját, amelyek kifejezetten mások tanulásának elősegítését célozzák, szókratészi kérdezésnek nevezzük.

                        - -

                        A szókratészi kérdések arra késztetnek, hogy alaposan odafigyeljünk a másikra és a kérdést támogató, konstruktív és lehetőleg szembeállítást nélkülöző módon fogalmazzuk meg. - -

                        Íme néhány példa az ilyen kérdésekre:

                        - - -

                        Tisztázó kérdés

                        -
                          -
                        • Mit ért azon, hogy ______?
                        • -
                        • Gondolatmenetének mi e lényege?
                        • -
                        • Hogyan kapcsolódik a _____ a _____-hoz?
                        • -
                        • Meg tudná fogalmazni ezt más módon?
                        • -
                        • Lássuk, jól értem-e Önt; arra gondol, hogy _____, vagy hogy _____?
                        • -
                        • Hogyan függ ez össze a problémánkkal/megbeszélésünkkel/témánkkal?
                        • -
                        • Tudna mondani egy példát?
                        • -
                        -

                        Feltételezéseket ellenőrző kérdések

                        -
                          -
                        • Miből indul ki?
                        • -
                        • Mire gondolhatnánk ehelyett?
                        • -
                        • Érvelése teljesen azon az elképzelésen alapszik, hogy _____.
                        • -
                        • Hogyan igazolná ennek a helyességét?
                        • -
                        • Ez minden esetben igaz?
                        • -
                        -

                        Okokra és bizonyítékokra kérdező kérdések

                        -
                          -
                        • Elmondaná ezzel kapcsolatos érveit?
                        • -
                        • Hogyan vonatkozik ez az adott esetre?
                        • -
                        • Van-e okunk kételkedni ebben?
                        • -
                        • Ki mondhatja meg, hogy ez igaz-e?
                        • -
                        • Milyen érvek alapján jutott erre a megállapításra?
                        • -
                        • Hogyan állapíthatnánk meg azt, hogy ez igaz-e?
                        • -
                        -

                        Szempontokra és nézőpontokra irányuló kérdések

                        -
                          -
                        • Mit ért ezen?
                        • -
                        • Mi volna ennek a következménye?
                        • -
                        • Milyen másik lehetőség merül itt föl?
                        • -
                        -

                        Implikációkat és következményeket firtató kérdések

                        -
                          -
                        • Hogyan deríthetnénk ezt ki?
                        • -
                        • Mire vonatkozik ez a kérdés?
                        • -
                        • Hogyan oldhatnánk meg ezt a kérdést?
                        • -
                        • Egyáltalán, lebontható ez a kérdés?
                        • -
                        • Világos-e ez a kérdés? Értjük ezt?
                        • -
                        • Könnyű vagy nehéz megválaszolni ezt a kérdést? Miért?
                        • -
                        - -
                        -A kérdések Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA. munkájából származnak. - -

                        További információ az írásról

                        -

                        További információ az olvasásról

                        diff --git a/lang/hu/help/quiz/attempts.html b/lang/hu/help/quiz/attempts.html deleted file mode 100644 index aee3f9d058d..00000000000 --- a/lang/hu/help/quiz/attempts.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        Tesztek újrapróbálása

                        - -

                        A tanulók számára engedélyezhetjük tesztek újbóli kitöltését. - -

                        Ennek köszönhetően a teszt megoldási folyamata az egyszerű értékelés helyett az oktatási tevékenység részévé tehető. \ No newline at end of file diff --git a/lang/hu/help/quiz/calculated.html b/lang/hu/help/quiz/calculated.html deleted file mode 100644 index 9fa59cc1229..00000000000 --- a/lang/hu/help/quiz/calculated.html +++ /dev/null @@ -1,92 +0,0 @@ -

                        Számításos kérdések

                        -A számításos kérdésekkel egyedi kérdéseket hozhatunk létre olyan -helyettesítők megadásával, amelyek helyére a teszt megoldása során -konkrét értékek kerülnek. -
                        Alább egy rövid változata látható a fő szerkesztő oldalnak, benne néhány példával:
                        - - - - - - - - - - - - - - - - - - - - - - - - - - - -

                        Kérdés:

                        -
                        - -

                        Használandó kép:

                        - -

                        Helyes képlet:

                        -    - -

                        Tolerancia:

                        - ± -

                        Tolerancia típusa:

                        - -

                        Szignifikáns számjegyek:

                        - -
                        - -
                        -A kérdés szövegében és a "Helyes képlet" helyén {a} és {b} látható. -Ezek és bármely egyéb {név} használható helyettesítőként, melynek helyére a teszt -megoldása során valamilyen érték kerül. Emellett a helyes érték kiszámítása is -megtörténik, ha a tesztet a "Helyes képlet" kifejezéssel adják le, amely számjegyes kifejezéssé -alakul a behelyettesítést követően. A lehetséges helyettesítők értékeit egy -későbbi oldalon lehet beállítani vagy előállítani a sz&aacute;m&iacute;t&aacute;sos -k&eacute;rd&eacute;sek szerkesztő varázslójában... -
                        A példaképletben a + műveleti jel szerepel. Egyéb elfogadható jelek: -*/ és %, ahol a % a moduló. -Használhatók emellett egyes PHP-szerű matematikai függvények. Ilyenek a 24 egyargumentumú függvény:
                        -abs, acos, acosh, asin, asinh, atan, atanh, ceil, cos, cosh, deg2rad, exp, expm1, floor, log, log10, log1p, rad2deg, round, sin, sinh, sprt, tan, tanh -
                        és két kétargumentumú függvény
                        -atan2, pow -
                        továbbá a min és a max függvény, melyek két vagy több argumentumot vehetnek fel. - Ugyancsak használható az argumentum nélküli pi függvény, de ne feledkezzünk meg a - zárójelek használatáról - a helyes használat: pi(). Hasonlóképpen a többi -függvény argumentumait zárójelek közé kell tenni. Például: sin({a}) + cos({b}) * 2. -A függvények egymásba ágyazása nem okozhat gondot, pl. cos(deg2rad({a} + 90)) stb. -
                        A PHP-szerű függvényekről részletesebben lásd a PHP portálján található dokumentációt. -

                        -Számjegyes kérdések esetén megadható egy határ, melyen belül minden válasz helyesnek -fogadható el. Erre a célra szolgál a "Tolerancia" mező. Háromféle tolerancia létezik. -Ezek a relatív, mominális és geometriai. Ha azt feltételezzük, hogy a teszt időpontjában -a helyes válasz 200, a tolerancia pedig 0,5, akkor a különféle toleranciatípusoknál ez így alakul: -

                        Relatív: A tolerancia intervallumának a kiszámítása a helyes válasz 0,5-del való -megszorzásával történik, vagyis ez esetben 100-at kapunk, így ezen tolerancia esetén a helyes -feleletnek 100 és 300 közé kell esni. (200 ± 100)
                        -Ez akkor hasznos megoldás, amikor a helyes válaszok nagyban eltérhetnek a helyettesítő értékeket illetően. -

                        Nominális: Ez a legegyszerűbb toleranciatípus, ugyanakkor nem a legalkalmasabb. A helyes -feleletnek 199,5 és 200,5 közé kell esni. (200 ± 0,5)
                        -Ez a toleranciatípus akkor hasznos megoldás, amikor a helyes válaszok csak csekély mértékben térnek el egymástól. -

                        Geometriai: A tolerancia intervallumának felső határa 200 + 0,5*200, egyben azonos a relatívval. - Az alsó határ 200/(1 + 0,5). A helyes feleletnek 133,33 és 300 közé kell esni.
                        -Ez olyan bonyolult, nagy toleranciatartományt igénylő számítások esetén hasznos, ahol -a felső határt a legalább 1-es relatív tolerancia adja, alsó határnak viszont egyértelműen elfogadhatatlan, mivel -minden esetben 0 volna a helyes válasz. -

                        -A Szignifikáns számjegyek mindössze a helyes válasznak az ellenőrzésben -vagy jelentésekben való megjelenítésére vonatkozik. -Példák: Ha ez az érték 3, akkor a 13,333 mint helyes válasz 13,3 formában jelenik meg; -az 1236 helyén 1240; a 23 helyén 23,0 stb. lesz látható. -

                        -A visszajelzési mező és az opcionális egységmezők a számjegyes kérdésekkel azonos módon működnek. -
                        \ No newline at end of file diff --git a/lang/hu/help/quiz/categories.html b/lang/hu/help/quiz/categories.html deleted file mode 100644 index b834c5a66ea..00000000000 --- a/lang/hu/help/quiz/categories.html +++ /dev/null @@ -1,9 +0,0 @@ -

                        Kérdéskategóriák

                        - -

                        Az összes kérdés egyetlen hosszú listában tárolása helyett kategóriákat hozhatunk létre ezek tárolására. - -

                        Az egyes kategóriák egy névből és egy rövid leírásból állnak. - -

                        Minden kategóriát "publikálhatunk", ami azt jelenti, hogy az adott kategóriát (és az alatta lévő összes kérdés) a szerveren lévő összes kurzus számára hozzáférhetővé tesszük, így egyéb kurzusok is felhasználhatják tesztjeikben az adott kérdéseket. - -

                        A kategóriákat szabadon hozhatjuk létre, illetve törölhetjük. Ha olyan kategóriát akarunk törölni, amely alatt kérdések vannak, akkor a rendszer arra kér, válasszunk egy másik kategóriát, ahová az itteni kérdéseket áthelyezhetjük. \ No newline at end of file diff --git a/lang/hu/help/quiz/correctanswers.html b/lang/hu/help/quiz/correctanswers.html deleted file mode 100644 index f2f82ddee65..00000000000 --- a/lang/hu/help/quiz/correctanswers.html +++ /dev/null @@ -1,4 +0,0 @@ -

                        Helyes válaszok megjelenítése

                        - -

                        Ha bekapcsoljuk a helyes válaszok megjelenítését, akkor a visszajelzés tartalmazni fogja az egyes kérdésekhez tartozó helyes választ is (szembeötlő színnel). -

                        diff --git a/lang/hu/help/quiz/createmultiple.html b/lang/hu/help/quiz/createmultiple.html deleted file mode 100644 index 21a5c19d3cf..00000000000 --- a/lang/hu/help/quiz/createmultiple.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Több kérdés létrehozása

                        - -

                        Ezen az oldalon egyszerre több kérdést hozhatunk létre.

                        - -

                        Jelenleg egy sor véletlenszerűen kiválasztott kérdést készíthetünk vele és (opcionálisan) hozzáadhatjuk őket az adott teszthez.

                        - -

                        A későbbiek során ez az oldal egy nagyobb varázslóvá növi ki magát, amely több opcióval rendelkezik majd.

                        diff --git a/lang/hu/help/quiz/description.html b/lang/hu/help/quiz/description.html deleted file mode 100644 index e076fc440b6..00000000000 --- a/lang/hu/help/quiz/description.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Leírás

                        - -

                        Ez a kérdéstípus igazából nem is kérdést takar.

                        - -

                        Mindössze annyi a szerepe, hogy valamennyi szöveget kinyomtat, de választ nem vár rá.

                        - -

                        Használhatjuk leíró jellegű szöveg nyomtatására, amelyet majd egy kérdéscsoport követ.

                        diff --git a/lang/hu/help/quiz/discrimination.html b/lang/hu/help/quiz/discrimination.html deleted file mode 100644 index c05c5853ce5..00000000000 --- a/lang/hu/help/quiz/discrimination.html +++ /dev/null @@ -1,10 +0,0 @@ -

                        Diszkriminációs mutató

                        - -

                        Ez az egyes kérdésekre vonatkozó teljesítményről ad egy durva mutatót. Kiszámítása az adott teszt minden kérdésére a legtöbb jó választ adó tanulók felső harmadába tartozók számának azon tanulók számával való elosztásával történik, akik az alsó harmadot alkotják.

                        - -

                        Például ha 30 tanuló csinálta meg a tesztet, akkor mind a felső, mind az alsó harmadban 10-10 tanuló szerepel. Ha az első kérdés esetén a legjobb tanulók közül kilenc adott jó választ, míg a leggyöngébbek közül csak három, akkor a diszkriminációs mutató 9/3 = 3,0 lesz. A zárójelben lévő számok: (felső harmad jó válasza/alsó harmad jó válasza).

                        - -

                        Ha a mutató 1,0 alá csökken, az azt jelenti, hogy a gyöngébb tanulók közül többen válaszoltak helyesen, mint az erősebbek közül. Az ilyen kérdéseket mint értékteleneket el kell dobni. Ezek valójában rontják a teszttel szerezhető összpontszám pontosságát.

                        - -

                        Ha egy kérdésre egy gyönge tanuló sem ad jó választ, akkor a nevező 0, ami végtelen eredményt adna. A program az ilyen kérdések esetén '10'-es pontozást ad.

                        - diff --git a/lang/hu/help/quiz/export.html b/lang/hu/help/quiz/export.html deleted file mode 100644 index 201273cb9e6..00000000000 --- a/lang/hu/help/quiz/export.html +++ /dev/null @@ -1,19 +0,0 @@ -

                        Kérdések exportálása egy kategóriából

                        - -

                        Ezzel a funkcióval kérdések egész kategóriáját exportálhatjuk egy szöveges állományba. - -

                        Ne feledjük, hogy egy sor fájlforma esetén bizonyos információk elvesznek, ha exportáljuk a kérdéseket. Ennek az az oka, hogy számos forma nem rendelkezik az összes olyan jellemzővel, amellyel a Moodle kérdései fel vannak ruházva. Nem várhatjuk el, hogy a kérdések exportálása és importálása után azok majd azonosak is lesznek. Ráadásul előfordulhat, hogy egyes kérdéstípusokat egyáltalán nem lehet exportálni. Ajánlatos az exportált adatokat ellenőrizni, mielőtt konkrét előállítási környezetben használnánk őket.

                        - -

                        A jelenleg támogatott forma (formák) a következők:

                        - -

                        GIFT-forma

                        -
                          -

                          Moodle-ban a tesztkérdések szöveges állományba exportálására a GIFT a legáltalánosabb rendelkezésre álló forma. Eredetileg egy könnyű módszert kínált arra, hogy a tanárok a kérdéseket szöveges állományként írhassák meg. Támogatja a feleletválasztós, igaz-hamis, kiegészítő, párosító és számjegyes kérdések használatát, továbbá az _____ beszúrását a "szókitöltő" forma esetén. Ne feledjük, hogy jelenleg a kitöltő kérdések használatát a rendszer jelenleg nem támogatja. A különféle kérdéstípusokat egy szöveges állományon belül vegyesen is használhatjuk, emellett a forma támogatja egysoros megjegyzések, kérdésnevek, visszajelzés és százalékosan súlyozott pontok alkalmazását. Íme néhány példa:

                          -
                          -Ki fekszik Grant sírjában?{~Grant ~Jefferson =senki}
                          
                          Grant {~temetett =elhantolt ~él} Grant sírjában.
                          
                          Grant van eltemetve Grant sírjába.{FALSE}
                          
                          Ki fekszik Grant sírjában?{=senki =senki sem}
                          
                          Mikor született Ulysses S. Grant?{#1822}
                          -
                          - -

                          További információk a "GIFT" formával kapcsolatosan

                          -
                        - -

                        További formák kerülnek a rendszer a későbbiekben, ideértve a WebCT-t, az IMS QTI-t és bármely egyebet, amelyet a Moodle felhasználói rendelkezésre bocsátanak!

                        diff --git a/lang/hu/help/quiz/feedback.html b/lang/hu/help/quiz/feedback.html deleted file mode 100644 index 140ad2cc861..00000000000 --- a/lang/hu/help/quiz/feedback.html +++ /dev/null @@ -1,4 +0,0 @@ -

                        Visszajelzés

                        - -

                        Ha bekapcsoljuk a tesztekre adott visszajelzést, akkor a tanulók minden (jó és rossz) válaszra visszajelzést kapnak.

                        - diff --git a/lang/hu/help/quiz/formataiken.html b/lang/hu/help/quiz/formataiken.html deleted file mode 100644 index e59bde628d2..00000000000 --- a/lang/hu/help/quiz/formataiken.html +++ /dev/null @@ -1,24 +0,0 @@ -

                        "Aiken" formájú állományok importálása

                        - -

                        Az Aiken forma feleletválasztós kérdések készítéséhez használt igen egyszerű, olvasható forma. Íme egy példa erre a formára:

                        -
                        -Melyik a helyes válasz erre a kérdésre?
                        -A. Ez?
                        -B. Netán ez?
                        -C. Esetleg ez?
                        -D. Mindenképpen ez!
                        -VÁLASZ: D
                        -
                        -Mely tanulási környezet rendelkezik a legtöbb tesztimportálási formával?
                        -A) A Moodle
                        -B) Az ATutor
                        -C) A Claroline
                        -D) A Blackboard
                        -E) A WebCT
                        -F) Az Ilias
                        -VÁLASZ: A
                        -
                        - -

                        A kérdésnek egyetlen sorban kell elférnie.

                        -

                        Minden válasznak egyetlen betűvel kell kezdődnie, melyet '.' vagy ')', majd egy szóköz követ.

                        -

                        A választ tartalmazó sor közvetlenül ez alatt következik és az "ANSWER:" ["VÁLASZ:"] kulcsszóval kezdődik, melyet a megfelelő betű követ.

                        diff --git a/lang/hu/help/quiz/formatblackboard.html b/lang/hu/help/quiz/formatblackboard.html deleted file mode 100644 index 6b121d42511..00000000000 --- a/lang/hu/help/quiz/formatblackboard.html +++ /dev/null @@ -1,3 +0,0 @@ -

                        Blackboard tesztformájó állományok importálása

                        - -

                        A leírás még nem készült el.

                        diff --git a/lang/hu/help/quiz/formatctm.html b/lang/hu/help/quiz/formatctm.html deleted file mode 100644 index a4ae1395884..00000000000 --- a/lang/hu/help/quiz/formatctm.html +++ /dev/null @@ -1,3 +0,0 @@ -

                        "Course Test Manager" formájú állományok importálása

                        - -

                        A Course Test Manager a Course Technology vállalat ma már nem használt szoftvercsomagja. A magyar modulban ennek importálásától eltekintünk.

                        \ No newline at end of file diff --git a/lang/hu/help/quiz/formatcustom.html b/lang/hu/help/quiz/formatcustom.html deleted file mode 100644 index 09b521fed05..00000000000 --- a/lang/hu/help/quiz/formatcustom.html +++ /dev/null @@ -1,3 +0,0 @@ -

                        Egyéni formájú állományok importálása

                        - -

                        A leírás még nem készült el.

                        diff --git a/lang/hu/help/quiz/formatgift.html b/lang/hu/help/quiz/formatgift.html deleted file mode 100644 index 711789b7539..00000000000 --- a/lang/hu/help/quiz/formatgift.html +++ /dev/null @@ -1,152 +0,0 @@ -

                        "GIFT" formájú állományok importálása

                        -

                        A GIFT a legkiterjedtebb importálási forma, mellyel a Moodle szöveges állományokból tesztkérdéseket képes beolvasni. Támogatja a feleletválasztós, igaz-hamis, kiegészítő, párosító és számjegyes kérdések használatát, továbbá az _____ beszúrását a "szókitöltő" forma esetén. A különféle kérdésfajták egyetlen szöveges állományban vegyesen használhatók, emellett a formátum támogatja egysoros megjegyzések, kérdésnevek, visszajelzés és százaléksúlyozású pontok használatát.

                        - -

                        A szöveges állomány kódolásának meg kell egyeznie a Moodle telepítése során alkalmazott kódolással. Példát találunk a kérdést tartalmazó szöveges állományokra ezen a helyen: gift/examples.txt.

                        - - -

                        KÉRDÉSFAJTÁK

                        - -

                        Feleletválasztós:
                        - Feleletválasztós kérdések esetén a helytelen válaszok előtt hullámjel (~) áll, a helyes válaszokat az egyenlőségjel (=) előzi meg.

                        -
                             Hányat lép a veréb egy évben? {~egyet ~sokat =egyet sem}
                        -

                        A szókitöltő forma automatikusan beszúr egy kitöltendő üres részt (például így: _____) a mondat közepébe. A szókitöltő forma használata esetén tegyük a válaszokat oda, ahol az aláhúzás a mondatban megjelenik.

                        -
                             A veréb  {~egyet =egyet sem ~sokat} lép egy évben.
                        -

                        Ha a válaszok a lezáró írásjel előtt jönnek, akkor a szókitöltő formához az adott helyen megjelenik a kitöltés helyét jelző vonal. Minden kérdésfajta megfogalmazható szókitöltő formában.

                        -

                        A kérdések elválasztása üres sorral (kettős kocsi-vissza jel beszúrásával) történik. Az egyértelműség érdekében a válaszok megadhatók külön sorokban, sőt, a sorban beljebb kezdhetők. Például:

                        -
                             Amerikában a hálaadás ünnepét november {
                        -         ~második
                        -         ~harmadik
                        -         =negyedik
                        -     } csütörtökén ünneplik.
                        -     
                        -     A japán betűk eredetileg mely országból származnak? {
                        -         ~India
                        -         =Kína
                        -         ~Korea
                        -         ~Egyiptom}
                        - -

                        Kiegészítő kérdésfajta:
                        - Kiegészítő kérdésfajta esetén a válaszok mindegyike előtt egyenlőségjel (=) szerepel, ezzel jelöljük, hogy mindegyik válasz helyes válasz. A válaszokban nem szerepelhet hullámjel.

                        -
                             Hányat lép a veréb egy évben?{=egyet sem =semennyit}
                        -
                        -     Kétszer kettő egyenlő  {=négy =4}.
                        -

                        Amennyiben csak egyetlen helyes kiegészítő válasz van, akkor azt megadhatjuk a megelőző egyenlőségjel nélkül is, feltéve, hogy nem keverhető össze az igaz-hamis fajtával. - -

                        Igaz-hamis:
                        - Ennél a kérdésfajtánál a válasz azt jelzi, hogy az adott megállapítás igaz, avagy hamis. A választ {TRUE} vagy {FALSE}, rövidítve {T} vagy {F} [igaz, illetve hamis] formában adhatjuk meg.

                        -
                             A veréb hármat lép egy évben.{F}
                        -
                        -     A nap keleten kel fel.{T}
                        - -

                        Párosító:
                        - A párosító párjai egyenlőségjellel (=) kezdődnek, elválasztónak a "->" jelet használjuk. Legalább három párosítandó párt kell létrehoznunk.

                        -
                             Párosító kérdés {
                        -         =1. alkérdés -> 1. alválasz
                        -         =2. alkérdés -> 2. alválasz
                        -         =3. alkérdés -> 3. alválasz
                        -         }
                        -     
                        -     Párosítsa az alábbi országokat és fővárosukat. {
                        -         =Kanada -> Ottawa
                        -         =Olaszország -> Róma
                        -         =Japán  -> Tokió
                        -         =India  -> Új-Delhi
                        -         }
                        -

                        A párosító kérdések nem támogatják a visszajelzést és a százalékosan súlyozott válaszokat.

                        - -

                        Számjegyes:
                        - A számjegyes kérdések válaszokat tartalmazó részének számjegyjellel (#) kell kezdődni. A számjegyes válaszokban megadhatunk egy hibahatárt, melyet kettősponttal elválasztva a helyes válasz után írunk. Ha például a helyes válasz 1,5 és 2,5 közé eshet, akkor azt így adjuk meg: {#2:0,5}. Ez azt jelenti, hogy egy 0,5-ös (azaz 1,5-től 2,5-ig terjedő) hibahatárt megengedő 2 eredmény helyesnek tekintendő. Ha nem adunk meg hibahatárt, akkor a rendszer azt nullának tekinti.

                        -
                             Mikor született Ulysses S. Grant? {#1822}
                        -
                        -     Milyen értéke van a pi-nek (3 tizedes értékig)? {#3,1415:0,0005}.
                        -

                        Opcionálisan a számjegyes válaszok megadhatók tartományként az alábbi formában: {#MinimálisÉrtéke..MaximálisÉrték}.

                        -
                             Milyen értéke van a pi-nek (3 tizedes értékig)? {#3,141..3.142}.
                        -

                        A Moodle böngésző felülete nem támogatja a többszörös számjegyes válasz használatát, ugyanakkor a Moodle kódja és a GIFT támogatja ezt. Ily módon többszörös számjegyes tartományt adhatunk meg, ami különösen hasznos lehet akkor, ha százalékosan súlyozott pontozással kombináljuk. Ha többszörös válaszadást használunk, ezek elé - a kiegészítő kérdéshez hasonlóan - egyenlőségjelet kell beszúrni.

                        -
                             Mikor született Ulysses S. Grant? {#
                        -         =1822:0
                        -         =%50%1822:2}
                        -

                        Ne feledjük, hogy mivel a Moodle böngészőjének grafikus felülete nem támogatja a többszörös válaszadást számjegyes kérdések esetén, ezért ezeket nem lehet a Moodle-ban megtekinteni vagy szerkeszteni. Az első utáni számjegyes válaszok módosítására az egyetlen lehetőség, ha kitöröljük az adott kérdést és újraimportáljuk (vagy valami phpMyAdmin-hoz hasonló megoldást használunk).

                        - - -

                        OPCIÓK

                        -

                        Ezen alapvető kérdésfajtákon túl ez a szűrő a következő opciókat teszi lehetővé: egysoros megjegyzés, kérdés neve, visszajelzés, valamint százalékosan súlyozott válaszok.

                        - -

                        Egysoros megjegyzés:
                        - A szöveges állományba olyan megjegyzéseket írhatunk, amelyeket a Moodle nem importál. Ezzel fejléceket vagy további információkat adhatunk meg a kérdésekkel kapcsolatosan. Minden kettős visszaperjellel kezdődő sort (a tabulátorokat vagy szóközöket nem számítva) a szűrő nem vesz figyelembe.

                        -
                             // Alcím: Számjegyes kérdések alább
                        -     Mennyi 2 meg 2? {#4}
                        - -

                        Kérdés neve:
                        - A kérdésnek úgy adhatunk nevet, hogy először megírjuk, majd dupla kettőspontok közé illesztjük.

                        -
                             ::A kanji eredete::A japán betűk eredetileg mely országból származnak? {=Kína} ::Hálaadás ünnepe::Amerikában a hálaadás ünnepét november {
                        -         ~második ~harmadik =negyedik} csütörtökén ünneplik.
                        -

                        Ha nem adunk nevet a kérdésnek, akkor alaphelyzetben az egész kérdést névnek tekinti a rendszer.

                        - -

                        Visszajelzés:
                        - Az egyes válaszokhoz visszajelzést adhatunk meg a válaszok után egy számjel (#) majd a visszajelzés begépelésével.

                        -
                             Mi a válasz erre a feleletválasztós kérdésre?{
                        -     ~rossz válasz#visszajelzésként hozzáfűzött megjegyzés a rossz válaszhoz
                        -     ~egy másik rossz válasz#visszajelzésként hozzáfűzött megjegyzés ehhez a rossz válaszhoz
                        -     =jó válasz#Nagyon jó!}
                        -     
                        -     Hányat lép a veréb egy évben?{
                        -     =egyet sem#kitűnő válasz!
                        -     =semennyit#kitűnő válasz!}
                        -     
                        -     A veréb sokat lép egy évben.{FALSE#A veréb egyet sem lép, mert ugrik.}
                        -

                        Feleletválasztós kérdéseknél csak a tanuló által kiválasztott válaszra vonatkozó visszajelzés jelenik meg. Kiegészítő kérdéseknél a visszajelzés csak akkor jelenik meg, amikor a tanulók helyes választ adnak. Igaz-hamis kérdéseknél az importált visszajelzést a rendszer elmenti, így az akkor jelez ki, ha a tanuló rossz választ választott. Ennek megfelelően a fenti utolsó példánál a tanuló csak akkor látja a visszajelzést, ha IGAZ volt a válasza.

                        - -

                        Válaszok százalékos súlyozása:
                        - Válaszok százalékos súlyozásával mind a feleletválasztós, mind a kiegészítő kérdések esetén élhetünk. A válaszok százalékos súlyozását úgy adhatjuk meg, hogy a hullámvonal (feleletválasztós kérdéseknél) vagy az egyenlőségjel (kiegészítő kérdéseknél) után százalékjelek között megadjuk a kívánt százalékos értéket (például így: %50%). Ezt az opciót kombinálhatjuk a visszajelzéshez fűzött megjegyzésekkel.

                        -
                             Nehéz kérdés.{~rossz válasz ~%50%fél kreditpontos válasz = teljes kreditpontos válasz}
                        -          
                        -     ::Jézus szülővárosa::Jézus Krisztus származási helye {
                        -     ~Jeruzsálem#Ez egy fontos város volt, de a válasz rossz.
                        -     ~%25%Betlehem#Ott született, de nem ott nevelkedett.
                        -     ~%50%Galilea#Adjon pontosabb választ.
                        -     =Názáret#Helyes! Jó válasz!}.
                        -     
                        -     ::Jézus szülővárosa:: Jézus Krisztus származási helye  {
                        -     =Názáret#Helyes! Jó válasz!
                        -     =%75%Názeret#Helyes, de hibás a helyesírása.
                        -     =%25%Betlehem#Ott született, de nem ott nevelkedett.}
                        -

                        Ne feledjük, hogy a két utolsó példa alapvetően ugyanaz a kérdés, az első feleletválasztós, a második kiegészítő formában.

                        - -

                        Figyeljük meg, hogy a válaszokhoz megadhatunk olyan százalékos súlyozást, amelyet a böngésző mint felület NEM tesz elérhetővé. Az ilyen válaszokhoz rendelt súlyok kiszámítása helyesen történik (az importálás során hozzárendelt értéknek megfelelően), a tesztet megoldó tanuló számára pedig a szokásos módon jelenik meg. Ugyanakkor ez ilyen válaszsúlyok nem jelennek meg helyesen a tanár számára, amikor a Moodle Kérdés szerkesztése menüjében végzi a szerkesztést. A legördülő menü mindössze bizonyos rögzített értékeket enged meg, és ha a válaszsúly nem pontosan egyezik meg az előre meghatározott értékek valamelyikével, akkor a kijelzés sem lesz pontos. Ha ilyen kérdést szerkesztünk a böngésző felületén keresztül, akkor a válaszhoz rendelt súly a kijelzettre fog módosulni.

                        - -

                        Több válasz:
                        - A több választ tartalmazó opció feleletválasztós kérdések esetén használatos, amikor a teljes kreditponthoz két vagy több választ kell kiválasztani. A több választ lehetővé tevő opciót úgy kapcsolhatjuk be, hogy a több válaszhoz részsúlyokat rendelünk, ugyanakkor egy válasznál sem engedjük meg teljes kreditpont hozzárendelését.

                        -
                             Melyik két hónap következik egymás után? {
                        -          ~%-50%március és május
                        -          ~%50%május és június
                        -          ~%50%szeptember és október
                        -          ~%-50%február és április }
                        - -

                        Speciális karakterek ~ = # { } :
                        - Ezek a szimbólumok ~ = # { } ennek a szűrőnek a működését szabályozzák, ezért nem használhatók kérdések szövegében. Mivel ezeknek a jeleknek speciális szerepe van ennek a szűrőnek a működését illetően, elnevezésük "vezérlőkarakter." Néha azonban szükségünk lehet arra, hogy valamelyiküket - például egy matematikai képletben - kérdésben használjuk. Ezt úgy oldhatjuk meg, hogy az adott vezérlőkaraktert speciális jellel együtt írjuk. Mindössze annyit kell tennünk, hogy a vezérlőkarakter elé egy visszaperjel karaktert (\) írunk. Így a szűrő tudni fogja, hogy mikor akarjuk az adott karaktert eredeti jelentésében használni, és mikor szerepel vezérlőkarakterként. Például:

                        -
                             Melyik válasz eredménye 5? {
                        -          ~ \= 2 + 2
                        -          = \= 2 + 3
                        -          ~ \= 2 + 4  }
                        -
                        -     ::GIFT vezérlőkarakterek::
                        -     Az alábbiak közül melyik NEM vezérlőkarakter a GIFT importálási formátuma esetén? {
                        -        ~ \~     # \~ vezérlőkarakter.
                        -        ~ \=     # \= vezérlőkarakter.
                        -        ~ \#     # \# vezérlőkarakter.
                        -        ~ \{     # \{ vezérlőkarakter.
                        -        ~ \}     # \} vezérlőkarakter.
                        -        = \     # Helyes! \ (visszaperjel) nem vezérlőkarakter. DE,
                        -                   használhatjuk vezérlőkarakterek eredeti jelentésben való használatának jelzésére.
                        -     }
                        -

                        A kérdés feldolgozása során a visszaperjel törlődik, a Moodle nem tárolja.

                        - -

                        Egyéb opciók:
                        - Kiegészítő kérdések esetén úgy különböztethetjük meg a kis- és nagybetűs írásmódot, ha az alábbi sorban a "0"-t "1"-re módosítjuk:
                        - $question->usecase = 0; // Kis-/nagybetű figyelmen kívül hagyva

                        -

                        Egyéb opciókat érhetünk el, ha módosítjuk a gift/format.php importálási szűrő kódját.

                        -

                        - -

                        KREDITPONTOK

                        -

                        Ennek a szűrőnek a kidolgozása a Moodle közösségének számos tagja által végzett erőfeszítés eredménye. Eredetileg szókitöltős formátumra épült Martin Dougiamas és Thomas Robb programkódja alapján. Paul Tsuchido Shew ezt a szűrőt 2003 decemberében írta meg. A szűrőbe beépítetta a közösség részéről egy robusztusabb kérdésformára vonatkozóan érkezett javaslatokat. Az elnevezés a "General Import Format Technology" [általános importálási formátum technológiája] kifejezésből alkotott mozaikszó: GIFT.

                        -

                        A GIFT-szűrő és annak dokumentációja Paul Tsuchido Shew munkája: http://ac.shew.jp. Utolsó frissítés dátuma: 2004. február 27.

                        \ No newline at end of file diff --git a/lang/hu/help/quiz/formatmissingword.html b/lang/hu/help/quiz/formatmissingword.html deleted file mode 100644 index f66852c5ab2..00000000000 --- a/lang/hu/help/quiz/formatmissingword.html +++ /dev/null @@ -1,3 +0,0 @@ -

                        "Szókitöltő" formában készült állományok importálása

                        - -

                        A leírás még nem készült el.

                        diff --git a/lang/hu/help/quiz/formatwebct.html b/lang/hu/help/quiz/formatwebct.html deleted file mode 100644 index 97e29bd28f3..00000000000 --- a/lang/hu/help/quiz/formatwebct.html +++ /dev/null @@ -1,60 +0,0 @@ -

                        WebCT tesztformájó állományok importálása

                        - -

                        A WebCT-formájú importáló szűrő fejlesztése folyamatban van, most még nem támogatja az összes WebCT típusú kérdésfajtát.

                        - -

                        A jelen szöveg írásakor csak a feleletválasztós és a kiegészítő kérdések importálását támogatja.

                        - -

                        Íme néhány példa ezekre a kérdésekre:

                        - -
                        -# Kérdés kezdete: Kiegészítő kérdés
                        -:TYPE:S:
                        -:TITLE:Short Answer Question
                        -:QUESTION:H
                        -Mi a neve a WebCT tanulási központjának?
                        -<br /> 
                        -:IMAGE:dotcomLogoc.gif
                        -:ANSWERS:1
                        -:CASE:0
                        -:ANSWER1:WebCT.com:100:0:20:0
                        -:FEEDBACK1:H
                        -Mindenképpen látogassa meg a tanulási központot\: www.WebCT.com
                        -:CAT:Default
                        -# Kérdés : Kiegészítő kérdés
                        -
                        -
                        -
                        -# Kérdés kezdete: Feleletválasztós kérdés
                        -:TYPE:MC:1:0:C
                        -:TITLE:Feleletválasztós kérdés
                        -:VISSZAJELZÉS
                        -Darwin találta fel az evolúciós elméletet és ő alkotta meg a darwinizmust.
                        -:QUESTION:H
                        -Hol található a Darwin Kutatóközpont?
                        -:IMAGE:
                        -:LAYOUT:vertical
                        -:ANSWER1:0:H
                        -Menlo Park, Kalifornia
                        -:REASON1:H
                        -Sajnos nem!
                        -:VÁLASZOK:0:H
                        -Vancouver, Kanada
                        -:REASON2:H
                        -Pardon!
                        -:VÁLASZOK:100:H
                        -Galapagos szigetek, Ecuador
                        -:REASON3:H
                        -Helyes válasz!
                        -:ANSWER4:0:H
                        -London, Anglia
                        -:REASON4:H
                        -Pardon!
                        -:VÁLASZOK:0:H
                        -Sidney, Ausztrália
                        -:REASON5:H
                        -Pardon!
                        -:CAT:Default
                        -# Kérdés vége: Feleletválasztós kérdés
                        -
                        -
                        - diff --git a/lang/hu/help/quiz/grademethod.html b/lang/hu/help/quiz/grademethod.html deleted file mode 100644 index 9b2b1f1baa1..00000000000 --- a/lang/hu/help/quiz/grademethod.html +++ /dev/null @@ -1,23 +0,0 @@ -

                        Pontozási módszer

                        - -

                        Ha többszöri próbálkozást engedünk meg, többféleképpen hasznosíthatjuk a pontokat a tanuló adott tesztben elért végső pontszámának a kiszámításához. - -

                        Legmagasabb pontszám

                        -

                          -

                          A végső pontszám minden egyes próbálkozás esetén a legmagasabb (legjobb) pontszám. -

                        - -

                        Átlagpontszám

                        -

                          -

                          A végső pontszám az összes próbálkozás alapján számított átlagos (egyszerű számtani középarányos) pontszám. -

                        - -

                        Első pontszám

                        -

                          -

                          A végső pontszám az első próbálkozás során szerzett pontszám (a többi próbálkozást a rendszer figyelmen kívül hagyja). -

                        - -

                        Utolsó pontszám

                        -

                          -

                          A végső pontszám kizárólag a legutóbbi próbálkozás során elért pontszámot tartalmazza. -

                        diff --git a/lang/hu/help/quiz/import.html b/lang/hu/help/quiz/import.html deleted file mode 100644 index 686f435553d..00000000000 --- a/lang/hu/help/quiz/import.html +++ /dev/null @@ -1,106 +0,0 @@ -

                        Új kérdések importálása

                        - -

                        Ezzel a funkcióval külső, űrlapon keresztül feltöltött szöveges állományból importálhatunk kérdéseket. - -

                        A rendszer egy sor állományformát támogat: - -

                        GIFT-forma

                        -
                          -

                          A GIFT a legkiterjedtebb importálási forma, mellyel a Moodle szöveges állományokból tesztkérdéseket képes beolvasni. Eredetileg egy könnyű módszert kínált arra, hogy a tanárok a kérdéseket szöveges állományként írhassák meg. Támogatja a feleletválasztós, igaz-hamis, kiegészítő, párosító és számjegyes kérdések használatát, továbbá az _____ beszúrását a "szókitöltő" forma esetén. A különféle kérdésfajták egyetlen szöveges állományban vegyesen használhatók, emellett a formátum támogatja egysoros megjegyzések, kérdésnevek, visszajelzés és százaléksúlyozású pontok használatát. Íme néhány példa:

                          -
                          -Ki fekszik Grant sírjában?{~Grant ~Jefferson =senki}
                          -
                          -Grant {~temetett =elhantolt ~él} Grant sírjában.
                          -
                          -Grant van eltemetve Grant sírjába.{FALSE}
                          -
                          -Ki fekszik Grant sírjában?{=senki =senki sem}
                          -
                          -
                          - -

                          További információk a "GIFT" formával kapcsolatosan

                          -
                        - -

                        Aiken forma

                        -
                          -

                          Az Aiken forma feleltválasztós kérdések készítéséhez használt igen egyszerű, olvasható forma. Íme egy példa erre a formára:

                          -
                          -Mi az elsősegély célja?
                          -A. Élet megmentése, további sérülés megelőzése, egészség megőrzése
                          -B. Sérült vagy sebesült személy részére orvosi ellátás biztosítása
                          -C. További sérülés megelőzése
                          -D. Segítséget kereső áldozatok megsegítése
                          -VÁLASZ: A
                          -
                          - -

                          További információk az "Aiken" formával kapcsolatosan

                          -
                        - - -

                        Szókitöltő

                        -
                          -

                          Ez a forma csak a feleletválasztós kérdéseket támogatja. Az egyes válaszokat hullámjel (~) választja el egymástól, a helyes válasz előtt egyenlőségjel (=) áll. Íme egy példa: - -

                          Amikor kisgyermekként elkezdjük felfedezni testünk részeit, az {{=anatómia és fiziológia ~reflexológia ~tudomány ~kísérlet} tanulóivá válunk, és bizonyos értelemben tanulók is maradunk egész életünkben.
                          - -

                          További információk a "szókitöltő" formával kapcsolatosan

                          -
                        - - -

                        AON

                        -
                          -

                          Ez azonos a szókitöltő formával, azzal a különbséggel, hogy a kérdések importálása után az összes kiegészítő kérdéseket a rendszer négyesével párosító kérdésekké alakítja át.

                          -

                          Emellett az importálás során a feleletválasztós kérdésekre adandó válaszokat a rendszer véletlenszerűen rendezi el. -

                          Nevét egy olyan szervezetről kapta, amely számos tesztjellemző kifejlesztéséhez adott támogatást

                          -
                        - - -

                        Blackboard

                        - - - -

                        WebCT

                        - - - -

                        Course Test Manager

                        -
                          -

                          Ez a modul Course Test Manager feladatbanki formában mentett kérdéseket képes importálni. A Microsoft Access adatbázisban tárolt feladatbankhoz különféle hozzáférési módokat támogat attól függően, hogy a Moodle Windows vagy Linux webszerveren fut.

                          -

                          Windows alatt az Access adatbázist bármely egyéb adatállományhoz hasonlóan importálhatjuk.

                          -

                          Linux esetén egy Windows gépet kell létrehoznunk a Course Test Manager adatbázissal azonos hálózaton egy ODBC Socket Server nevű porgrammal együtt, amely XML segítségével adja át az adatokat a Moodle számára a Linux szerveren.

                          Az ilyen importálási lehetőség használata előtt olvassa el az egész súgót.

                          - - -

                          További információk a "CTM" formával kapcsolatosan

                          -
                        - - - -

                        Beépített válaszok (Kitöltő)

                        - - - - -

                        Saját

                        -
                          -

                          Ha saját importálási formával rendelkezünk, szerkesszük meg ennek megfelelően a mod/quiz/format/custom.php állományt. - -

                          Az újonnan írandó kód igen csekély - az adott szövegből mindössze egy kérdés beolvasását kell megírni. - -

                          További információk a "Saját" formával kapcsolatosan

                          -
                        - - -

                        További formák kerülnek a rendszerbe a későbbiek folyamán, ideértve a WebCT-t, az IMS QTI-t és bármely egyebet, amelyet a Moodle felhasználói rendelkezésre bocsátanak!

                        diff --git a/lang/hu/help/quiz/index.html b/lang/hu/help/quiz/index.html deleted file mode 100644 index 4e51b289193..00000000000 --- a/lang/hu/help/quiz/index.html +++ /dev/null @@ -1,33 +0,0 @@ -

                        Tesztek

                        - - diff --git a/lang/hu/help/quiz/match.html b/lang/hu/help/quiz/match.html deleted file mode 100644 index b93a93ce8c4..00000000000 --- a/lang/hu/help/quiz/match.html +++ /dev/null @@ -1,6 +0,0 @@ -

                        Párosító kérdések

                        - -

                        Egy opció bemutatása után a válaszadó néhány részkérdést és néhány összekevert választ kap. Minden egyes kérdéshez egy helyes válasz tartozik. -

                        A válaszadónak minden részkérdéshez ki kell választania egy-egy választ. - -

                        Az egyes részkérdések azonos súllyal esnek latba a teljes kérdés pontszámának a kiszámítása szempontjából. \ No newline at end of file diff --git a/lang/hu/help/quiz/maxgrade.html b/lang/hu/help/quiz/maxgrade.html deleted file mode 100644 index 23e64626031..00000000000 --- a/lang/hu/help/quiz/maxgrade.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Maximális pontszám

                        - -

                        Az adott teszthez beállított maximális pontszám az az érték, amelyet az összes adott pont együttesen ad ki. - -

                        Például ha ez a pontszám 20, akkor ezzel azt jelezzük, hogy az adott teszt 20%-ot tesz ki az egész kurzushoz viszonyítva. - -

                        Elképzelhető, hogy ha egy tesztben 10 kérdés szerepel, és ezek összértéke 50 pont, az 50-ből megszerzett pontszám úgy "értékelődik le", hogy a tesztre adható maximálisan 20 pontszámhoz viszonyított érték jöjjön ki. \ No newline at end of file diff --git a/lang/hu/help/quiz/mods.html b/lang/hu/help/quiz/mods.html deleted file mode 100644 index 93ed539439d..00000000000 --- a/lang/hu/help/quiz/mods.html +++ /dev/null @@ -1,5 +0,0 @@ -

                         Tesztek

                        -
                          -

                          Ezzel a modullal a tanár teszteket tervezhet és adhat ki, melyek lehetnek feleletválasztós, igaz-hamis, valamint kiegészítő kérdések. Ezek a kérdések egy kategorizált adatbázisban kapnak helyet, és lehetőség van kurzuson belüli újbóli felhasználásukra vagy akár kurzusok közötti kiaknázásukra. A tesztek lehetővé tehetik a többszöri próbálkozást. Minden egyes próbálkozás automatikusan pontozódik, a tanár pedig eldönti, hogy kíván-e visszajelzést adni, vagy inkább a helyes válaszok megjelenítése mellett dönt. A modulnak részét képezik a pontozási eszközök.

                          -
                        - diff --git a/lang/hu/help/quiz/multianswer.html b/lang/hu/help/quiz/multianswer.html deleted file mode 100644 index f4442af1a1a..00000000000 --- a/lang/hu/help/quiz/multianswer.html +++ /dev/null @@ -1,20 +0,0 @@ -

                        Beépített válaszok (Kitöltő)

                        - -

                        Ez az igen rugalmas kérdésfajta hasonlít a közkedvelt kitöltős formához.

                        A kérdések egy (Moodle formájú) szövegrészből állnak, melyekbe különféle válaszok vannak beépítve, ideértve a feleletválasztós, a kiegészítő és a numerikus válaszokat.

                        Jelenleg nem áll rendelkezésre olyan grafikus interfész, amellyel ezek a kérdések létrehozhatók - a kérdésformát magunknak kell meghatározni a szövegnégyzet segítségével, vagy külső állományokból kell importálni őket.

                        Íme egy példa az ilyen kérdés meghatározására használható bemeneti szövegre:

                        -
                        - -
                        -
                        - -

                        Ez a példa a tanulók számára a következő módon jelenik meg:

                        - - -
                        -

                        3

                        8 jegy


                        -

                        Ez a kérdés némi szöveget tartalmaz, benne a válaszok közvetlenül ide vannak beillesztve majd közvetlenül ezt követően ezzel a kiegészítő kérdéssel foglalkozunk majd végezetül egy lebegőpontos szám .
                        -
                        Ne feledjük, hogy a www.moodle.org jellegű címek és az :-) emotikonok továbbra is normális módon viselkednek:
                        a) Mennyire jó ez?
                        b) Milyen pontszámot adna rá?
                        -
                        Sok szerencsét!

                        -
                        - -
                        - diff --git a/lang/hu/help/quiz/multichoice.html b/lang/hu/help/quiz/multichoice.html deleted file mode 100644 index 109c8339ca9..00000000000 --- a/lang/hu/help/quiz/multichoice.html +++ /dev/null @@ -1,10 +0,0 @@ -

                        Feleletválasztós kérdések

                        - -

                        Egy (esetleg képet tartalmazó) kérdésre a válaszadó több válasz közül választ. Kétféle feleletválasztós kérdés létezik - egyetlen választ és több választ tartalmazó kérdés. - -

                        Az egyetlen válasz tartalmazó kérdés csakis egy válasz kiválasztására ad módot. Általában az ilyen kérdésre adandó pontoknak pozitívnak kell lenni. - -

                        A több választ lehetővé tevő kérdések esetén egy vagy több válasz jelölhető meg - mindegyik válasz pozitív vagy negatív pontszámmal értékelhető, ezért az ÖSSZES opció bejelölése nem feltétlenül eredményez jó pontszámot. Ha a teljes pontszám negatív, akkor a kérdésre adott teljes pontszám nulla lesz. Ügyelni kell arra, hogy létrehozhatunk olyan kérdéseket, amelyek pontszáma meghaladhatja a 100%-ot. - -

                        Végezetül az egyes válaszokhoz (jókhoz és rosszakhoz) visszajelzést kell hozzáfűzni - ez a visszajelzés megjelenik a válaszadónál az egyes válaszok mellett (ha a teszt úgy van beállítva, hogy kijelezze a visszajelzést). -

                        diff --git a/lang/hu/help/quiz/numerical.html b/lang/hu/help/quiz/numerical.html deleted file mode 100644 index bce8c019fc5..00000000000 --- a/lang/hu/help/quiz/numerical.html +++ /dev/null @@ -1,10 +0,0 @@ -

                        Számjegyes kérdések

                        - -

                        A tanuló szempontjából a számjegyes kérdések megegyeznek a rövid választ igénylő kérdésekkel.

                        - -

                        A különbség annyi közöttük, hogy a számjegyes válaszoknak lehet elfogadottan hibás tartományba eső része. Ezáltal a válaszok folyamatos tartományt képezhetnek.

                        - -

                        Ha például a válasz 30 és az elfogadott hibatartomány 5, akkor bármely 25 és 35 közötti szám helyesnek lesz elfogadva.

                        - -

                        A számjegyes kérdésekhez tartozhatnak betűtípus szempontjából közömbös szöveges válaszok. Ez akkor hasznos, ha a válaszok a számjegyes kérdések N/A, +inf, -inf, NaN stb. formát öltenek.

                        - diff --git a/lang/hu/help/quiz/questiondatasets.html b/lang/hu/help/quiz/questiondatasets.html deleted file mode 100644 index 83c3580c07c..00000000000 --- a/lang/hu/help/quiz/questiondatasets.html +++ /dev/null @@ -1,18 +0,0 @@ -

                        Kérdések adatkészletei

                        - -

                        Az adatkészlet olyan adatok együttese, amelyek egy kérdés - (például számításos kérdés) létrehozásához - használatosak, mely során a kérdésen belül egy változó helyére szúródnak be.

                        - -

                        Egy konkrét kérdéshez létrehozhatunk "egyedi" adatkészletet, - vagy gyárthatunk "újrahasznosítható" adatkészletet, - amely egy kategória összes kérdésében felhasználható.

                        - -

                        Adatkészletet használó kérdés készítésekor két képernyő jelenik meg. - -

                        Az elsőn egy konkrét adatkészletet adhatunk meg minden változóhoz.

                        - -

                        A második képernyőn az adatkészlethez hozzáadhatunk vagy onnan kivehetünk számokat. - A tanulók előtt megjelenő egyes kérdések számai ebből a készletből lesznek kiválasztva.

                        - - diff --git a/lang/hu/help/quiz/questiontypes.html b/lang/hu/help/quiz/questiontypes.html deleted file mode 100644 index 9e4b643583b..00000000000 --- a/lang/hu/help/quiz/questiontypes.html +++ /dev/null @@ -1,65 +0,0 @@ -

                        Új kérdés készítése

                        - -

                        Számos különféle típusú kérdést adhatunk hozzá egy kategóriához:

                        - -

                        Feleletválasztós

                        - - -

                        Kiegészítő kérdésfajta

                        - - -

                        Számjegyes

                        -
                          -

                          A tanuló szempontjából a számjegyes kérdések megegyeznek a rövid választ igénylő kérdésekkel. A különbség annyi közöttük, hogy a számjegyes válaszoknak lehet elfogadottan hibás tartományba eső része. Ezáltal a válaszok folyamatos tartományt képezhetnek.

                          -

                          További tájékozódás a számjegyes kérdésekkel kapcsolatosan

                          -
                        - -

                        Igaz/hamis

                        - - -

                        Párosító

                        - - -

                        Beépített válaszok (Kitöltő)

                        - - -

                        Véletlenszerű kiegészítéses párosítás

                        - - -

                        Véletlen

                        - - -

                        Leírás

                        -
                          -

                          Ez igazából nem kérdés. Ez esetben mindössze szöveg (és esetleg ábra) jelenik meg, amely nem igényel választ. Ez felhasználható például egy későbbi kérdéscsoporthoz adandó tájékoztatás céljára. -

                          -

                          További tájékozódás a leírásokkal kapcsolatosan

                          -
                        - diff --git a/lang/hu/help/quiz/random.html b/lang/hu/help/quiz/random.html deleted file mode 100644 index b96368c7ed5..00000000000 --- a/lang/hu/help/quiz/random.html +++ /dev/null @@ -1,13 +0,0 @@ -

                        Véletlenszerű kérdés

                        - -

                        A véletlenszerű kérdés egy speciális kérdésfajta.

                        - -

                        Ha véletlenszerű kérdést helyezünk el egy tesztben, akkor a kérdést a rendszer az egész kategóriából minden egyes próbálkozás alkalmával véletlenszerűen választja ki.

                        - -

                        A kérdés maximális pontszáma mindig a véletlenszerű kérdéshez megadott pontszám lesz.

                        - -

                        Ha például 10 véletlenszerű kérdést tartalmazó tesztet készítünk, akkor az egyes tanulók mindig más-más 10 kérdést kapnak a teszten végrehajtott egyes próbálkozások során.

                        - -

                        Ne feledjük, hogy lehetőség van a véletlenszerű és a nem véletlenszerű kérdések elegyítésére, ha azt szeretnénk, hogy egyes kérdések mindig szerepeljenek a tesztben.

                        - - diff --git a/lang/hu/help/quiz/randomsamatch.html b/lang/hu/help/quiz/randomsamatch.html deleted file mode 100644 index 3a562b041f4..00000000000 --- a/lang/hu/help/quiz/randomsamatch.html +++ /dev/null @@ -1,8 +0,0 @@ -

                        Véletlenszerű kiegészítő párosító kérdések

                        - -

                        Egy esetleges bevezető után a válaszadó néhány részkérdést és néhány összekevert választ kap. Minden egyes kérdéshez egy helyes válasz tartozik. -

                        A válaszadónak minden részkérdéshez ki kell választania egy-egy választ. - -

                        Az egyes részkérdések azonos súllyal esnek latba a teljes kérdés pontszámának a kiszámítása szempontjából. - -

                        A kérdések és a válaszok véletlenszerűen kerülnek ki a "kiegészítő" kérdések adott kategóriájából. A teszten végrehajtott egyes próbálkozások során más-más kérdések és válaszok szerepelnek. \ No newline at end of file diff --git a/lang/hu/help/quiz/repeatattempts.html b/lang/hu/help/quiz/repeatattempts.html deleted file mode 100644 index db9293c0887..00000000000 --- a/lang/hu/help/quiz/repeatattempts.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        Minden próbálkozás az utolsón alapszik

                        - -

                        Ha többszöri próbálkozásra van lehetőség és ez a beállítás Igen-re van állítva, akkor minden egyes új próbálkozás a korábbi próbálkozás eredményét fogja tartalmazni. Ennek eredményeként a teszt több próbálkozással is teljesíthető.

                        - -

                        Ha ez a beállítás Nem, akkor minden próbálkozás esetén friss tesztet kapunk. \ No newline at end of file diff --git a/lang/hu/help/quiz/requirepassword.html b/lang/hu/help/quiz/requirepassword.html deleted file mode 100644 index c8a46a45e4e..00000000000 --- a/lang/hu/help/quiz/requirepassword.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        Jelszó igénylése

                        - -

                        Ez a mező opcionális.

                        - -

                        Ha itt megadunk egy jelszót, akkor a résztvevőknek ugyanezt a jelszót kell megadniuk ahhoz, hogy megpróbálkozhassanak a teszttel.

                        diff --git a/lang/hu/help/quiz/requiresubnet.html b/lang/hu/help/quiz/requiresubnet.html deleted file mode 100644 index 3326618db40..00000000000 --- a/lang/hu/help/quiz/requiresubnet.html +++ /dev/null @@ -1,19 +0,0 @@ -

                        Hálózati cím igénylése

                        - -

                        Ez a mező opcionális.

                        - -

                        Helyi hálózaton vagy az Interneten egy teszt elérhetőségét konkrét alhálózatokhoz köthetjük oly módon, hogy megadunk egy vesszőkkel határolt, részleges vagy teljes IP-címet tartalmazó listát.

                        - -

                        Ez különösen ellenőrzött teszt esetén hasznos, ahol biztosak akarunk lenni abban, hogy csakis egy meghatározott teremben lévők számára hozzáférhető a teszt.

                        - -

                        Például: 192,168. , 231.54.211.0/20, 231.3.56.211

                        - -

                        Háromféle számot használhatunk (nincs mód szöveges doménnevek használatára): -

                          -
                        1. Teljes IP-címek, például 192.168.10.1, amelyek egy konkrét számítógépet (vagy proxy-t) azonosítanak.
                        2. -
                        3. Részleges címek, például 192,168, amely bármely adott számokkal kezdődő helyet azonosít.
                        4. -
                        5. CIDR-jelölés, például 231.54.211.0/20, mellyel részletesebb alhálózatokat jelölhetünk.
                        6. -
                        -

                        - -

                        A szóközöket a rendszer figyelmen kívül hagyja.

                        diff --git a/lang/hu/help/quiz/review.html b/lang/hu/help/quiz/review.html deleted file mode 100644 index 17630c754a0..00000000000 --- a/lang/hu/help/quiz/review.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        Lezárt teszt felülvizsgálatának engedélyezése

                        - -

                        Ha bekapcsoljuk ezt az opciót, akkor a tanulók felülvizsgálhatják az adott teszttel kapcsolatos korábbi próbálkozásaikat.

                        - -

                        Ennek a bekapcsolása csakis akkor lehetséges, ha a teszt le van zárva.

                        diff --git a/lang/hu/help/quiz/shortanswer.html b/lang/hu/help/quiz/shortanswer.html deleted file mode 100644 index fd8d01b55f2..00000000000 --- a/lang/hu/help/quiz/shortanswer.html +++ /dev/null @@ -1,9 +0,0 @@ -

                        Kiegészítő kérdések

                        - -

                        A kérdésre (mely képet is tartalmazhat) adandó válaszként a válaszadó beír egy szót vagy egy rövid szöveget. - -

                        Előfordulhat több helyes válasz is, melyek mindegyikéhez más-más pontszámot adhatunk meg. Ha be van kapcsolva a "Case sensitive" [Kis-/nagybetű megkülönböztetése] opció, akkor más-más pontot adhatunk a "Szó" és a "szó" alak esetén. - -

                        Tetszőleges karaktersorozat elfogadásához megadhatjuk a csillag (*) karaktert mint helyettesítő karaktert. Ha például a szó*alak formát adjuk meg, akkor a rendszer elfogad minden olyan szöveget, amelynek az eleje "szó", a vége pedig "alak". Ha a csillag karaktert akarjuk használni, tegyünk elé visszaperjelt: \* - -

                        Helyettesítő karakterek nélkül a válaszoknak pontosan kell egyezni, ezért ügyelni kell a betűhasználatra! \ No newline at end of file diff --git a/lang/hu/help/quiz/shuffleanswers.html b/lang/hu/help/quiz/shuffleanswers.html deleted file mode 100644 index 3cff047c8ac..00000000000 --- a/lang/hu/help/quiz/shuffleanswers.html +++ /dev/null @@ -1,9 +0,0 @@ -

                        Válaszok vegyítése

                        - -

                        Ezzel az opcióval az egyes kérdéseken belüli válaszok sorrendje véletlenszerűen felcserélődik mindannyiszor, amikor a tanuló az adott teszttel próbálkozik.

                        - -

                        Természetesen ez csakis olyan kérdésekre érvényes, amelyeknél több válasz jelenik meg, mint amilyenek például a feleletválasztós vagy a párosító kérdések.

                        - -

                        Ennek az a célja, hogy kissé megnehezítse azt, hogy a tanulók egymástól átmásoljanak megoldásokat.

                        - -

                        Az opció nincs összefüggésben a véletlenszerű kérdések használatával.

                        diff --git a/lang/hu/help/quiz/shufflequestions.html b/lang/hu/help/quiz/shufflequestions.html deleted file mode 100644 index 52601703e38..00000000000 --- a/lang/hu/help/quiz/shufflequestions.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Kérdések vegyítése

                        - -

                        Ezzel az opcióval a teszten belüli kérdések sorrendje véletlenszerűen felcserélődik mindannyiszor, amikor a tanuló az adott teszttel próbálkozik.

                        - -

                        Az opció nincs összefüggésben a véletlenszerű kérdések használatával, csak a kérdések kijelzett sorrendjével kapcsolatos.

                        - -

                        Ennek az a célja, hogy kissé megnehezítse azt, hogy a tanulók egymástól átmásoljanak megoldásokat.

                        diff --git a/lang/hu/help/quiz/timelimit.html b/lang/hu/help/quiz/timelimit.html deleted file mode 100644 index 99cc671a997..00000000000 --- a/lang/hu/help/quiz/timelimit.html +++ /dev/null @@ -1,12 +0,0 @@ -

                        Időkorlát

                        - -

                        Alaphelyzetben a teszteknek nincs időbeli korlátjuk, így a tanulók annyi időt fordítanak a teszt kitöltésére, amennyire csak szükségük van. - -

                        Ha viszont megadunk egy időkorlátot, egy sor dolog történik annak érdekében, hogy a teszteket ezen idő alatt kitöltsék:

                        - -
                          -
                        • a böngészőben a Javascript támogatása kötelezővé válik - ennek köszönhetően az időmérő helyesen fog működni.
                        • -
                        • Egy úszó, visszaszámláló időmérő ablak jelenik meg a képernyőn.
                        • -
                        • Ha az időmérő lejár, a teszt leadása automatikusan megtörténik, függetlenül attól, hogy mennyi válasz született meg akkorra.
                        • -
                        • Ha a tanuló csal és a kijelölt időnél 60 másodperccel többet tölt el, akkor a tesztre automatikusan nulla pontot kap.
                        • -
                        diff --git a/lang/hu/help/quiz/timeopen.html b/lang/hu/help/quiz/timeopen.html deleted file mode 100644 index 092809f9139..00000000000 --- a/lang/hu/help/quiz/timeopen.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        A teszt megnyitása és bezárása

                        - -

                        Lehetőség van arra, hogy megadjuk azt az időpontot, amikor a teszt próbálkozás céljára rendelkezésre áll. - -

                        A kezdési idő előtt és a befejezési idő után a teszt elérhetetlenné válik. \ No newline at end of file diff --git a/lang/hu/help/quiz/truefalse.html b/lang/hu/help/quiz/truefalse.html deleted file mode 100644 index e89951fd732..00000000000 --- a/lang/hu/help/quiz/truefalse.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Igaz/hamis kérdések

                        - - -

                        Egy (esetleg képet tartalmazó) kérdésre a válaszadó Igaz vagy Hamis válasz közül választ. - -

                        Ha a visszajelzés be van kapcsolva, a válaszadó a teszt megoldása után megfelelő visszajelzést kap. Ha például a helyes válasz a "Hamis", de a válasza az "Igaz" (nem jól oldja meg), akkor az "Igaz" visszajelzést látja. -

                        diff --git a/lang/hu/help/reading.html b/lang/hu/help/reading.html index 7fcdd738acd..964a20ce8e0 100644 --- a/lang/hu/help/reading.html +++ b/lang/hu/help/reading.html @@ -1,10 +1,11 @@ -

                        Olvasás

                        - -

                        Szöveg gyors olvasásakor gyakran nagyon könnyen félreérthető a szöveg írójának a szándéka.

                        - -

                        A félreértés elkerülése érdekében olvassunk figyelmesen és próbáljuk meg a dolgot a szerző szempontjából nézni.

                        - -

                        Az is segíthet, ha megnézzük, hogy a szerző mit NEM mondott, vagy mi maradt kérdéses - ezek segíthetnek a kérdések megfogalmazásánál.

                        - -

                        -

                        +

                        Olvasás

                        + +

                        Szöveg gyors olvasásakor gyakran nagyon könnyen félreérthetõ az szöveg írójának szándéka.

                        + +

                        A félreértés elkerülése érdekében olvasson figyelmesen és próbálja meg a dolgot az szerzõ szempontjából nézni.

                        + +

                        Az is segithet, ha megnézi, hogy a szerzõ mit NEM mondott vagy mi amaradt kérdéses + - ezek segíthetnek kérdések megfogalmazásánál.

                        + +

                        +

                        diff --git a/lang/hu/help/resource/index.html b/lang/hu/help/resource/index.html deleted file mode 100644 index ba6f125094e..00000000000 --- a/lang/hu/help/resource/index.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Forrásmodul

                        - - diff --git a/lang/hu/help/resource/mods.html b/lang/hu/help/resource/mods.html deleted file mode 100644 index 1b81ddb5621..00000000000 --- a/lang/hu/help/resource/mods.html +++ /dev/null @@ -1,5 +0,0 @@ -

                         Források

                        -
                          -

                          A források tartalmat jelölnek: olyan információt, amelyet a tanár a kurzusba kíván beiktatni. Ezek lehetnek a kurzusszerverre feltöltött állományok; a Moodle-ban szerkesztett oldalak; illetve olyan külső internetes oldalak, amelyeket az adott kurzus részeiként határozunk meg.

                          -
                        - diff --git a/lang/hu/help/resource/parameters.html b/lang/hu/help/resource/parameters.html deleted file mode 100644 index 6ef8eee3158..00000000000 --- a/lang/hu/help/resource/parameters.html +++ /dev/null @@ -1,16 +0,0 @@ -

                        Tananyag-paraméterek

                        - -

                        A paraméterek beállításai teljesen opcionálisak, használatukra csak -abban az esetben van szükség, ha a Moodle-lal kapcsolatban adatokat kívánunk a tananyagot -tartalmazó állomány vagy a portál részére megadni.

                        - -

                        Ha paramétereket adunk meg, ezek a tananyaghoz az - URL-en keresztül adódnak át (a GET metódussal).

                        - -

                        A bal oszlopból választhatjuk ki az elküldendő információt, - a jobb oszlopban névvel láthatjuk el.

                        - -

                        A felhasználói információ a tananyagot néző felhasználótól, -a kurzusinformáció pedig abból a kurzusból jön, amelynek a tananyag része.

                        - - diff --git a/lang/hu/help/resource/program.html b/lang/hu/help/resource/program.html deleted file mode 100644 index 11dbcf0eff4..00000000000 --- a/lang/hu/help/resource/program.html +++ /dev/null @@ -1,16 +0,0 @@ -

                        Programforrások

                        - -

                        A programforrás olyan külső forrás, amely képes a Moodle-tól kapott adatok fogadására.

                        - -

                        Az adatok (az URL részeként megadott) HTTP GET módszerrel továbbítódnak, tartalmuk:

                        - -
                          -
                        • extern_nav: az az URL, amelyről a forrást meghívják -
                        • extern_usr: az adott felhasználó felhasználói neve -
                        • extern_nam: az adott felhasználó teljes neve -
                        • extern_tim: az adott időpont -
                        • extern_pwd: egy egyedi jelszó -
                        - -

                        A fentiek a közeljövőben módosításra szorulnak.

                        - diff --git a/lang/hu/help/resource/resourcetype.html b/lang/hu/help/resource/resourcetype.html deleted file mode 100644 index 35996bbbd36..00000000000 --- a/lang/hu/help/resource/resourcetype.html +++ /dev/null @@ -1,25 +0,0 @@ -

                        Forrás típusa

                        - -

                        Forrás lehet bármely elképzelhető tartalom. Ide tartoznak mindazok a különféle típusok, amelyek alapvetően meghatározzák, hogy a tartalom miképpen érhető el: - -

                        Egyszerű szöveg - a legkönnyebb típus. Az oldalt egyszerű gépeléssel lehet a következő oldalon szereplő űrlapon megszerkeszteni. Egyes begépelt dolgok formázása automatikusan történik, ahogyan a fórumüzeneteké. -További tájékoztatás az automatikusan formázott szövegről

                        - -

                        HTML-szöveg - a nyelvet ismerő felhasználóknak ajánlott. Semmilyen automatikus formázás nem történik, mindent magának a felhasználónak kell megírni HTML-kódokkal. -További tájékoztatás a HTML-szövegről

                        - -

                        Hivatkozás - szakirodalmi hivatkozás egy folyóiratra vagy könyvre. - -

                        Feltöltött állomány - azokat az állományokat jelzi, amelyeket a kurzusba a felhasználó feltöltött. Lásd az 'Állományok' c. részt. - -

                        Könyvtár - a kurzusállományok területével kapcsolatosan megjeleníti a teljes könyvtár- (és alkönyvtár-) szerkezetet. Ennek alapján a tanulók végigböngészhetik és megtekinthetik az összes itt lévő állományt.

                        - -

                        Webes ugrópont - Egy URL-mutató a web valamely helyére. Ha valaki erre a forrástevékenységre kattint, kikerül a kurzusból (a megadott oldal tölti be a böngésző ablakát, illetve - ha így adjuk meg - egy teljesen új ablakot indít el).

                        Weboldal - Egy URL-mutató a web valamely helyére. Az előző típushoz hasonlóan ez is egy weboldalt jelenít meg. Az előző típustól annyiban azonban eltér, hogy az oldal -keretben jelenik meg, mintha be lenne építve a kurzusba. - -

                        Program - olyan külső program, amely információkat kér a jelenlegi Moodle-felhasználóról és -kurzusról. Ennek köszönhetően külső webalkalmazások működhetnek együtt a Moodle-lal. -További tájékoztatás a programforrásokról

                        - -

                        Wiki-szöveg - több formázási lehetőséget kínál, mint az egyszerű szöveg, ugyanakkor nem igényli a HTML elsajátítását. Egyszerű szöveg beírása mellett egy sor formázó karaktert gépelhetünk (például: *this will be bold* /ez a rész vastag betűs lesz/), így könnyűszerrel összetett formázási utasításokat fogalmazhatunk meg. -További tájékoztatás a Wiki-szövegről

                        - diff --git a/lang/hu/help/resource/summary.html b/lang/hu/help/resource/summary.html deleted file mode 100644 index 1a655b62731..00000000000 --- a/lang/hu/help/resource/summary.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Olvasmány összegzése

                        - -

                        Az összegzés a forrás igen rövid leírása. - -

                        Vigyázzunk, nehogy túl bőven írjunk e helyen, illetve nehogy magát a forrást illesszük be ide! - -

                        A tartalom kifejtésére a következő oldalon lesz lehetőségünk. \ No newline at end of file diff --git a/lang/hu/help/resource/type/directory.html b/lang/hu/help/resource/type/directory.html deleted file mode 100644 index 011346aea5c..00000000000 --- a/lang/hu/help/resource/type/directory.html +++ /dev/null @@ -1,8 +0,0 @@ -

                        Könyvtár

                        - -
                          -

                          A könyvtár mint tananyagforrás egy teljes könytárat (és annak alkönyvtárait) -tartalmazza a kurzusállományok területéről. -A tanulók böngészhetik és megtekinthetik az összes ilyen állományt.

                          -
                        - diff --git a/lang/hu/help/resource/type/file.html b/lang/hu/help/resource/type/file.html deleted file mode 100644 index a42b2e4b10c..00000000000 --- a/lang/hu/help/resource/type/file.html +++ /dev/null @@ -1,14 +0,0 @@ -

                        Állományok és weboldalak

                        - -
                          -

                          Ezzel a tananyagtípussal bármely weboldalra vagy más fájlra kapcsolódhatunk a neten. - Emellett kapcsolatot létesíthetünk bármely, a gépünkről a kurzushoz feltöltött egyéb anyaggal is.

                          - -

                          A szokásos weboldalakkal szemben a weboldalakba beszúrható multimédiás állományok kezelése kifinomultabb. -Így az MP3-állományokat a beépített lejátszó játssza le, akárcsak a mozit, a flash-animációkat stb.

                          - -

                          A tartalom előbukkanó ablakban, keretben stb. való megjelenítésére számos lehetőség áll rendelkezésre.

                          - -

                          Például ha a tananyagunk olyan webalkalmazás, amely paramétereket képes fogadni, akkor különféle információkat -küldhetünk számára, ideértve a felhasználó nevét, e-mail címét, az éppen futó kurzusuk nevét stb.

                          -
                        diff --git a/lang/hu/help/resource/type/html.html b/lang/hu/help/resource/type/html.html deleted file mode 100644 index d8463cbf618..00000000000 --- a/lang/hu/help/resource/type/html.html +++ /dev/null @@ -1,8 +0,0 @@ -

                        HTML-oldal

                        - -
                          -

                          Az ilyen tananyagot könnyen beépíthetjük a Moodle-ba, -különösen ha a Moodle grafikus HTML-szerkesztőjét használjuk.

                          - -

                          Az oldal az adatbázisban kap helyet, nem pedig külön állomány. Kialakításához a HTML számos lehetőségét hasznosíthatjuk, beleértve a Javascript kódokat.

                          -
                        diff --git a/lang/hu/help/resource/type/label.html b/lang/hu/help/resource/type/label.html deleted file mode 100644 index 627a4317572..00000000000 --- a/lang/hu/help/resource/type/label.html +++ /dev/null @@ -1,8 +0,0 @@ -

                        Címkék

                        - -
                          -

                          A címkék némileg eltérnek az egyéb tananyagforrásoktól. Ezek ugyanis olyan -szövegek és képek, amelyek ténylegesen közvetlenül be vannak ágyazva - a kurzusoldal többi ugrópontja közé.

                          -
                        - diff --git a/lang/hu/help/resource/type/text.html b/lang/hu/help/resource/type/text.html deleted file mode 100644 index 21f06dc741f..00000000000 --- a/lang/hu/help/resource/type/text.html +++ /dev/null @@ -1,10 +0,0 @@ -

                        Szöveges oldal

                        - -
                          -

                          Ez a tananyagtípus egy egyszerű szöveget tartalmazó oldalból áll.

                          - -

                          Egy sor formázási típus közül választhatunk, melyekkel a sima szövegből tetszetős weboldal állítható elő.

                          - -

                          Bővebben a szövegformákról

                          - -
                        diff --git a/lang/hu/help/resource/types.html b/lang/hu/help/resource/types.html deleted file mode 100644 index e0c2542b885..00000000000 --- a/lang/hu/help/resource/types.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        Tananyagfajták

                        - -

                        A Moodle egy sor tananyagfajta használatát támogatja, így szinte -minden internetes tartalmat beilleszthetünk kurzusainkba.

                        - diff --git a/lang/hu/help/resource/window.html b/lang/hu/help/resource/window.html deleted file mode 100644 index d01a5c3450c..00000000000 --- a/lang/hu/help/resource/window.html +++ /dev/null @@ -1,59 +0,0 @@ -

                        Ablakbeállítások

                        - -

                        Ezek a beállítások elrejthetők/megjeleníthetők a Hide settings/Show settings gombra kattintva.

                        - -

                        A tananyagok általában szokásos keretes ablakban jelennek meg, a felső keretben a -Moodle navigációs eszközeivel. Ha kedvünk tartja, eltávolíthatjuk a keretet, ez esetben a tananyag szokásos weboldalhoz -hasonlóan kitölti az ablakot.

                        - -

                        Ha viszont a tananyagot egy új előbukkanó ablakban szeretnénk megjeleníteni, -hajtsuk végre a következő lépéseket:

                        - -
                          -
                        1. Az Ablak: részben válasszuk az 'Új ablak' pontot.
                        2. -
                        3. Azokat a lehetőségeket, amelyeket nem kívánunk használni, állítsuk be bejelöletlennek.
                          - -
                          - Méretezhető legyen az ablak? -

                          - Kiválasztásakor a felhasználók módosíthatják az ablak méretét. - Ajánlatos a kiválasztást mindig megtartani. Módosítása akkor lehet szükséges, - a tananyag rögzített méretű és az ablakot ehhez akarjuk igazítani.

                          - - Görgethető legyen az ablak? -

                          - Bejelölése esetén a felhasználók a teljes tananyagot végignézhetik. - Ellenkező esetben csak azt látják, ami az ablakban elfér, a többi részét nem.

                          - - Mutassa a könyvtárkapcsolatokat? -

                          Kiválasztásakor a felhasználók ebben az ablakban látják könyvtárkapcsolataikat. - Böngészőnként eltérő: megjelenhet Kedvencek (IE), Könyvjelzők (Mozilla/Firefox, Opera) stb. néven.

                          - - Mutassa a címsort? -

                          Kiválasztásakor a felhasználók láthatják a tananyag URL-jét (webcímét).

                          - - Mutassa a menüsort? -

                          Kiválasztásakor a felhasználók használhatják az ablak menüsorát. - Általában hasznos dolog, de néhány grafikus tananyag jobban mutat a menüsor nélkül.

                          - - Mutassa az eszközsort? -

                          Az eszközsorral könnyebb navigálni, mert elérhető rajta a Vissza/Előre, a Kezdőlap és a Frissítés gomb.

                          - - Mutassa az állapotsort? -

                          Az állapotsorral tájékozódhatunk például arról, hogy a tananyag mekkora hányada töltődött be, vannak-e biztonsági - üzenetek stb.

                          - -
                          - -
                        4. Megnyitandó ablak méretének megadása.
                          - -
                          -

                          Sokan még ma is 800x600-as képernyőfelbontást használnak. Általában célszerű - először ennél kisebb felbontással, például 600x480-assal kezdeni.

                          - -

                          Ha a mezőket üresen hagyjuk, az új előugró ablak mérete azonos lesz azéval, - amelyről azt előhívtuk.

                          - -
                          -
                        5. -
                        diff --git a/lang/hu/help/richtext.html b/lang/hu/help/richtext.html deleted file mode 100644 index 9752df8e3fb..00000000000 --- a/lang/hu/help/richtext.html +++ /dev/null @@ -1,147 +0,0 @@ -

                        A richtext formájú HTML-szerkesztő használata

                        - -

                        Elérhetőség: -htmleditor) { print_string("htmleditordisabledadmin"); } else if (!$USER->htmleditor) { print_string("htmleditordisabled"); } else if (!can_use_richtext_editor() { print_string("htmleditordisabledbrowser"); } else { print_string("htmleditoravailable"); } ?> -

                        - -

                        A richtext formájú HTML-szerkesztő egy weboldalba beágyazott szövegszerkesztői felület, amely lehetővé teszi az adott szöveg intuitív módon való szerkesztését, eredményként pedig szokásos HTML-kódot ad vissza. - -

                        A szöveg formázása mellett ez a szerkesztő egy sor egyéb, hasznos jellemzővel rendelkezik. - -

                        Szöveg beszúrása más alkalmazásokból

                        -
                          -

                          Egyéb Windows-alkalmazásokból, például Microsoft Wordből szúrhatunk be szöveget közvetlenül ebbe a szerkesztőbe, miközben annak a formázása megőrződik. Ehhez mindössze a webböngésző szokásos kivágási és beillesztési menüpontjait (vagy a Control-C és Control-V) billentyűkombinációkat kell használnunk. -

                        - -

                        Képek beszúrása

                        -
                          -

                          Ha olyan képekkel rendelkezünk, amelyek már valamely honlapon elérhetők, ezeket az "Insert Image" [kép beszúrása] gombbal beilleszthetjük. -

                        - -

                        Táblázat beszúrása

                        -
                          -

                          A szöveg elrendezése érdekében használhatjuk az eszköztáron lévő "Insert Tables" [táblázatok beszúrása] gombot. -

                        - -

                        Hivatkozások beszúrása

                        -
                          -

                          Új ugrópont létrehozásához először írjuk be a hivatkozáshoz szánt szöveget. Utána jelöljük ki és kattintsunk az eszköztáron lévő ugrópont gombra. Gépeljük be a hivatkozás URL-jét, és ennyi az egész! -

                        - - -

                        Emotikonok beszúrása

                        -
                          -

                          Ezeknek a kis ikonoknak a szövegbe való beillesztéséhez kattintsunk az eszköztáron lévő, emotikont jelölő ikonra. A felbukkanó párbeszédablakból választhatunk az alábbi emotikonok közül. (Másik megoldásként egyszerűen beírhatjuk a megfelelő kódot a szövegbe, amely később, a szöveg megjelenítésekor átalakítva jelenik majd meg). - - -
                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                          mosoly:-)
                          vigyor:-D
                          kacsintás;-)
                          vegyes:-/
                          töprengésV-.
                          nyelvnyújtás:-P
                          klasszB-)
                          rendben^-)
                          tágra nyílt szemek8-)
                          meglepődés8-o
                          -
                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                          szomorúság:-(
                          félénkség8-.
                          elpirulás:-I
                          puszi:-X
                          bohóc:o)
                          fekete szemP-|
                          düh8-[
                          halottxx-P
                          álmos|-.
                          gonosz}-]
                          -
                          - -

                        - - diff --git a/lang/hu/help/scales.html b/lang/hu/help/scales.html deleted file mode 100644 index b7d74f7a3d8..00000000000 --- a/lang/hu/help/scales.html +++ /dev/null @@ -1,15 +0,0 @@ -

                        Skálák

                        - -

                        A tanárok új saját skálákat hozhatnak létre a kurzus során végzendő bármely pontozási tevékenység céljára.

                        - -

                        A skála nevét úgy kell megválasztani, hogy az egyértelmű azonosítást tegyen lehetővé: ez meg fog jelenni a skálaválasztási listákon, valamint a környezetérzékeny súgó gombjain.

                        - -

                        Magát a skálát egymástól vesszővel elválasztott, negatívtól pozitívig terjedő értékek egy rendezett listája határozza meg. Például:

                        - -
                        -Kiábrándító, Nem elég jó, Átlagos, Jó, Nagyon jó, Kitűnő! -
                        - -

                        A skálákhoz rendelni kell egy megfelelő leírást is azok tartalmáról és használatának módjáról. Ez a leírás jelenik meg a tanár és a tanuló súgójának oldalain.

                        - -

                        Végezetül lehet egy vagy több "szokásos" skálánk is, amelyet a rendszeradminisztrátor az oldalunkon meghatároz. Ezek minden kurzus számára elérhetők.

                        diff --git a/lang/hu/help/scorm/mods.html b/lang/hu/help/scorm/mods.html deleted file mode 100644 index 40e82c162ce..00000000000 --- a/lang/hu/help/scorm/mods.html +++ /dev/null @@ -1,5 +0,0 @@ -

                         SCORM-csomagok

                        -
                          -

                          A SCORM-csomag olyan internetes tartalmak összerendezett együttese, amely a SCORM-szabvány tanulási objektumai szerint van összeállítva. Ezek a csomagok tartalmazhatnak internetes oldalakat, grafikát, Javascript programot, Flash bemutatót és minden egyebet, ami egy internetes böngészőben megjeleníthető. A SCORM-modullal bármilyen szabványos SCORM-csomagot könnyedén feltölthetünk és a kurzus részévé tehetünk. -

                          -
                        diff --git a/lang/hu/help/summaries.html b/lang/hu/help/summaries.html deleted file mode 100644 index a92a6fa4507..00000000000 --- a/lang/hu/help/summaries.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Témák/hetek összegzése

                        - -

                        A téma összegzése olyan igen rövid szöveg, amellyel a tanulót felkészítjük az adott témán (vagy héten) belül elvégzendő tevékenységekre.

                        - -

                        Az összegzéseket nagyon rövidre kell fogni, nehogy a kurzusoldal túl hosszú legyen.

                        - -

                        Ha úgy látjuk, hogy egy-két mondatnál bővebben szeretnénk szólni, vegyük fontolóra inkább egy forrás hozzácsatolását a témához (például az első tevékenységgel kapcsolatos oldal neve lehet A témáról).

                        diff --git a/lang/hu/help/survey/index.html b/lang/hu/help/survey/index.html deleted file mode 100644 index 179b43249fa..00000000000 --- a/lang/hu/help/survey/index.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        Felmérő modul

                        - - diff --git a/lang/hu/help/survey/mods.html b/lang/hu/help/survey/mods.html deleted file mode 100644 index b9a43f208cd..00000000000 --- a/lang/hu/help/survey/mods.html +++ /dev/null @@ -1,4 +0,0 @@ -

                         Felmérések

                        -
                          -

                          A felmérő modul egy sor olyan, felmérésre használt eszközt tartalmaz, amely hasznosnak bizonyult az értékelések elvégzése és online környezetben a tanulás ösztönzése terén. A tanár ezeket felhasználhatja arra, hogy adatokat gyűjtsön a tanulóktól, melyek segítségével tájékozódhat az osztályáról és visszajelzést kaphat saját tanítási folyamatára vonatkozóan.

                          -
                        diff --git a/lang/hu/help/surveys.html b/lang/hu/help/surveys.html deleted file mode 100644 index 3605e74c540..00000000000 --- a/lang/hu/help/surveys.html +++ /dev/null @@ -1,68 +0,0 @@ -

                        Használható áttekintések

                        - -

                        Jelenleg a Moodle csak meghatározott típusú áttekintések használatát támogatja (a későbbi változatokban már saját áttekintéseket készíthetünk).

                        - -

                        A használható áttekintések kiválasztása annak alapján történt, hogy mennyire bizonyulnak hasznosnak azon online tanulási környezetek értékelése szempontjából, amelyek konstruktivista pedagógiára épülnek. Az áttekintések bizonyos olyan trendek megállapítása során bizonyulnak hasznosnak, amelyek a résztvevőink között zajlanak. (Egy példa az ilyen folyamatok részletes elemzésére elérhető itt: -http://dougiamas.com/writing/herdsa2002)

                        - -
                        -

                        COLLES - Constructivist On-Line Learning Environment Survey [Konstruktivista online tanulási környezet áttekintése]

                        -
                          -

                          A COLLES 24, hat osztályba sorolt tömör megállapítást tartalmaz, amelyek az online tanulási környezet minőségével kapcsolatos valamely kardinális kérdést veszik célba:

                          - - - - - - - - - - - - - - - - - - - - - - - - - -
                          RelevanciaMennyire releváns az online tanulás a tanulók szakmai munkája szempontjából?
                          Reflexió Az online tanulás ösztönzi-e a tanuló kritikai reflektív gondolkodását?
                          Interaktivitás Milyen mértékben kapcsolódnak be a tanulók az online pedagógia jellegű párbeszédbe?
                          TutortámogatásMennyire sikeresen vonják be a tutorok a tanulókat az online tanulásba való bekapcsolódásba?
                          Interpretáció Hasznára válik-e a tanulóknak és a tutoroknak az egymással való online kommunikáció?
                          - -

                          A tanulás dinamikus megközelítésének előtérbe helyezése a tudás újfajta elméletéhez vezet: a szociális konstruktivizmushoz, amelyben a tanuló aktív fogalomalkotóként tűnik föl egy szociálisan interaktív tanulási környezetben. A szociális konstruktivizmus egyfajta episztemológia vagy tudásmód, amelyben a tanulók reflektív módon működnek együtt annak érdekében, hogy együtt újszerű megértést alakítsanak ki, különösen a személyes tapasztalatukban gyökerező közös vizsgálódás kontextusában.

                          - -

                          Ezen együttműködés központi eleme a tanuló kommunikatív kompetenciájának, vagyis azopn képességének a kifejlesztése, amellyel mind a tanárral, mind a csoporttársakkal nyílt és kritikai beszédbe elegyedhet. A beszélgetés a kölcsönös megértés empátiás orientációjára épül, melyhez a mögöttes megfontolások vizsgálatához való kritikus viszonyulás párosul.

                          - -

                          A COLLES révén figyelemmel kísérhetjük azt, hogy mennyire vagyunk képesek kiaknázni a világháló interaktív kapacitását arra a célra, hogy a tanulók dinamikus tanulási készségeket sajátíthassanak el.

                          - -

                          -(A fenti tájékoztatás a COLLES oldaláról lett adaptálva. További információ található a COLLES-ről és szerzőjéről itt: -http://surveylearning.com/colles/)

                          -
                        - - -
                        -

                        ATTLS - Attitudes to Thinking and Learning Survey [Megközelítések a gondolkodási és tanulási áttekintéshez]

                        -
                          - -

                          A 'tudásmódok' elmélete eredetileg a nemek kutatási területe volt (Belenky et al., 1986), és egy áttekintési eszközt nyújt ahhoz, hogy megvizsgálhassuk a beszélgetés minőségét egy együttműködő környezetben.

                          Az ATTLS nevű eszköz kifejlesztői Galotti és mtsai (1999); ezzel mérhető, hogy egy személy milyen mértékben rendelkezik 'összekapcsolt tudással' (CK) vagy 'különálló tudással' (SK). - -

                          A magasabb CK-ponttal rendelkezők a tanulást jobban élvezik, gyakran együttműködőbbek, kellemesebbek és hajlamosabbak arra, hogy mások gondolatait továbbfejlesszék, míg a magasabb SK-ponttal rendelkezők kritikusabban és vitatkozóbban viszonyulnak a tanuláshoz. - -

                          A vizsgálatok szerint ez a két tanulási stílus független egymástól (Galotti et al., 1999; Galotti et al., 2001). EMellett csupán visszatükröződései a tanuláshoz való viszonyulásnak, de nem jelzik a tanulás képességét vagy a szellem erejét. - -

                          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.

                          - -

                          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.

                          - -

                          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.

                          - - -
                        diff --git a/lang/hu/help/teachers.html b/lang/hu/help/teachers.html deleted file mode 100644 index 682ea3511c7..00000000000 --- a/lang/hu/help/teachers.html +++ /dev/null @@ -1,9 +0,0 @@ -

                        Tanárok

                        - -

                        Ezen az oldalon azok az emberek vannak felsorolva, akiket a kurzusban (a rendszeradminisztrátor) "tanárnak" jelöl ki. - -

                        Ezen az űrlapon mindenkinek adhatunk titulust (szerepet) is, pl. "professzor", "tutor", "tanársegéd" stb. Ez megjelenik a portál kurzuslistáján és a kurzusunk résztvevőinek a felsorolásában is. Ha üresen hagyjuk a szerepet, akkor az alapbeállítás szerinti "tanár" lesz használatos (ahogyan azt a kurzusbeállítások oldalán megadtuk). - -

                        A listát sorba is rendezhetjük (például a vezető tanárt téve legfölülre). Ehhez a "Sorrend" oszlopból kell kiválasztanunk a megfelelő számokat. A "Save changes" [Változások mentése] lenyomását követően megjelenik az új sorrend. - -

                        MEGJEGYZÉS: Ha egy tanár esetén a "Hide" [Elrejtés] opciót választjuk, sajátos esettel találjuk szemben magunkat. Ilyenkor ugyanis a tanár NEM JELENIK MEG a kurzuslistán vagy a résztvevők felsorolásában. Ezek a tanuló számára "rejtve" maradnak (hacsak üzeneteket nem küldenek a fórumra stb.). \ No newline at end of file diff --git a/lang/hu/help/text.html b/lang/hu/help/text.html index bd279c8331b..3c5a7895c8d 100644 --- a/lang/hu/help/text.html +++ b/lang/hu/help/text.html @@ -1,144 +1,144 @@ -

                        Súgó szöveg írásához

                        - -Szövegek írása körülbelül úgy működik, ahogyan az várható, de arra is megvan a lehetőség, hogy emotikonokat, "URL-címeket" és néhány HTML formázó kódot helyezzünk el a szövegben. - -

                        Emotikonok

                        -
                          -

                          Az alábbi kis ikonok valamelyikét a mellette lévő kód beírásával jeleníthetjük meg. Ezek a kódok önmagukban kis képeket szimbolizálnak, amelyet megláthatunk, ha fejünket balra fordítva nézünk rájuk.

                          - - - - -
                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                          mosoly:-)
                          széles vigyor:-D
                          kacsintás;-)
                          vegyes:-/
                          elgondolkodóV-.
                          nyelvöltés:-P
                          dögösB-)
                          helyeslő^-)
                          tágra nyílt szemek8-)
                          meglepett8-o
                          -
                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                          bánatos:-(
                          félénk8-.
                          piruló:-I
                          puszi:-X
                          bohóc:o)
                          félszeműP-|
                          mérges8-[
                          kipurcantxx-P
                          álmos|-.
                          ördög}-]
                          -
                          - -
                        - -

                        Hivatkozások

                        - - -

                        HTML-kódok

                        -
                          -

                          A HTML-kódoknak csak egy korlátozott készlete használható szövegformázásra. - - - - - - - - - - -
                          HTML-kódEredménye
                          <B> vastag </B> vastag betűs szöveg
                          <I> döntés </I> dőlt betűs szöveg
                          <U> aláhúzás </U> aláhúzott szöveg
                          <FONT SIZE=1> kis betű </FONT> kis betűk
                          <FONT SIZE=4> nagy betű</FONT> nagy betűk
                          <FONT COLOR=green> példa </FONT> példa
                          <UL><LI>egy <LI>kettő </UL>
                          • egy
                          • kettő
                          <HR>
                          -

                        - - +

                        Szöveg írása súgó

                        + +Szövegek írása körülbelül úgy mûködik, ahogyan az várható, de arra is megvan a lehetõség, hogy "smilie" -kat, "URL címeket" és néhány HTML formázó kódot elhelyezzen a szövegben. + +

                        Smilie - k (érzelmek)

                        +
                          +

                          Az alábbi kis ikonok valamelyikét, a mellette lévõ kód beírásával jelenítheti meg. Ezek a kódok önmagukban is kis képek, amit megláthat, ha fejét balra fordítva nézi õket.

                          + + + + +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          mosoly:-)
                          széles vigyor:-D
                          kacsintás;-)
                          vegyes:-/
                          elgondolkodóV-.
                          nyelvöltés:-P
                          dögösB-)
                          helyeslõ^-)
                          tágranyílt szemek8-)
                          meglepett8-o
                          +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          bánatos:-(
                          félénk8-.
                          piruló:-I
                          puszi:-X
                          bohóc:o)
                          félszemûP-|
                          mérges8-[
                          kipurcantxx-P
                          álmos|-.
                          ördög}-]
                          +
                          + +
                        + +

                        Hivatkozások

                        + + +

                        HTML kódok

                        +
                          +

                          A HTML kódoknak csak egy korlátozott készlete használható szövegformázásra. + + + + + + + + + + +
                          HTML kódEredménye
                          <B> vastag </B> vastagbetûs szöveg
                          <I> döntés </I> dõl betûs szöveg
                          <U> aláhúzás </U> aláhúzott szöveg
                          <FONT SIZE=1> kisbetû </FONT> kis betûk
                          <FONT SIZE=4> nagy </FONT> nagy betûk
                          <FONT COLOR=green> példa </FONT> példa
                          <UL><LI>egy <LI>kettõ </UL>
                          • egy
                          • kettõ
                          <HR>
                          +

                        + + diff --git a/lang/hu/help/textformat.html b/lang/hu/help/textformat.html deleted file mode 100644 index f8343903b24..00000000000 --- a/lang/hu/help/textformat.html +++ /dev/null @@ -1,48 +0,0 @@ -

                        Szöveg formázása

                        - -

                        Ha szöveget írunk Moodle-ban, ehhez többféle forma közül választhatunk jártasságunknak és a használt böngésző típusának megfelelően. - -

                        Rendszerint ezt a beállítást alapértéken hagyhatjuk, így a dolgok a várható módon fognak majd működni. - -

                        1. A Moodle automatikus formája

                        - -
                          -

                          Ezt a formát akkor a legjobb választani, ha adatbevitelre szokásos űrlapokat használunk (a Richtext HTML-szerkesztő helyett). Ez esetben ugyanúgy gépelhetünk, mint ha egy e-mailt készülnénk elküldeni. - -

                          A szöveg elmentésekor a Moodle egy sor dolgot végrehajt ahhoz, hogy automatikusan megformázza számunkra a szöveget. -

                          Például az olyan URL-címeket, mint a http://yahoo.com vagy akár a www.yahoo.com, átalakítja hivatkozásokká. -

                          A sortöréseket megőrzi, az üres sorok pedig új bekezdéseket fognak jelölni. -

                          Az emotikonokat, például a ":-)" jelet, automatikusan átalakítja grafikus megfelelőjükké. -

                          Ha akarjuk, beágyazhatunk HTML-kódot is a szövegbe, amely megőrződik.

                          További tájékoztatás a Moodle automatikus formázásáról

                          -
                        - - -

                        2. HTML-forma

                        - - - - -

                        3. Egyszerű szöveges forma

                        - -
                          -

                          Ez a forma hasznos, ha nagyon sok olyan kódot vagy HTML-t akarunk használni, amelyet a megírt módon szeretnénk megjeleníteni. - -

                          Itt is megőrződnek a szókörök és a sortörések, de egyéb tekintetben a szöveg érintetlen marad.

                        - - -

                        4. Wiki szövegforma

                        -
                          -

                          Ennél a formánál a wiki néven ismert szöveggépelési módot használjuk. -

                          Ezzel még olvasható formában gépelhetünk, de a szöveg automatikusan átalakítható HTML-szöveggé, a hozzá tartozó fejlécekkel, listákkal és bonyolult formázási megoldásokkal. - -

                          További információk a wiki formával kapcsolatosan

                          -
                        - diff --git a/lang/hu/help/uploadusers.html b/lang/hu/help/uploadusers.html deleted file mode 100644 index 18e5dc6bbdf..00000000000 --- a/lang/hu/help/uploadusers.html +++ /dev/null @@ -1,30 +0,0 @@ -

                        Felhasználók feltöltése

                        - -

                        Először is ne feledjük, hogy rendszerint nincs szükség felhasználók tömeges importálására - a karbantartási munka mérséklése érdekében először azokat a hitelesítési formákat kell felderítenünk, amelyekhez nincs szükség kézzel végzett karbantartásra, mint amilyen a meglévő külső adatbázisokhoz kapcsolás vagy a felhasználói hozzáférés létrehozásának a felhasználókra bízása. Lásd a hitelesítésről szóló részt az adminisztrátori menükben.

                        -

                        Ha biztosak vagyunk abban, hogy egyszerre több felhasználói hozzáférést akarunk egy szöveges állományból importálni, akkor a szöveges állományt az alábbi módon kell megformázni:

                        - -
                          -
                        • Az állomány minden egyes sora egy rekordot tartalmazzon
                        • -
                        • Minden rekord egymástól vesszővel elválasztott adatsort tartalmazzon
                        • -
                        • Az állomány első rekordja speciális bejegyzés, amely a mezőneveket tartalmazza. Ez határozza meg az állomány fennmaradó részének a formáját.
                          -

                          Szükséges mezőnevek: ezeket a mezőket az első rekordnak kell tartalmaznia - minden egyes felhasználóra vonatkozóan

                          -

                          - felhasználónév, jelszó, utónév, családi név, e-mail

                          -

                          -

                          Alapbeállítás szerinti mezőnevek: ezek opcionálisak - ha nem szerepelnek, értékeiket az elsődleges adminisztrátor adja

                          -

                          intézmény, tanszék, város, ország, nyelv, időzóna

                          -

                          Opcionális mezőnevek: ezek mindegyike teljesen opcionális. A kurzusnevek a kurzusok "rövid nevei" - ha meg van adva, a felhasználó tanulóként kerül bele az adott kurzusba. A csoportneveket társítani kell a megfelelő kurzussal, vagyis a csoport-1-et a kurzus-1-gyel stb.

                          -

                          azonosítószám, icq, telefon-1, telefon-2, cím, url, leírás, levélforma, levélkijelzés, html-szerkesztő, automatikus-felíratkozás, kurzus-1, kurzus-2, kurzus-3, kurzus-4, kurzus-5, csoport-1, csoport-2, csoport-3, csoport-4, csoport-5

                          -
                          -
                        • -
                        • Az adatok közötti vesszőket &#44 formában kell megadni - a parancssor ezt automatikusan visszaírja vesszővé.
                        • -
                        • Igen-nem típusú mezők esetén 0-val jelöljük a hamis, 1-gyel az igaz értéket.
                        • -
                        • Megjegyzés: Ha egy felhasználó már regisztrálva van a Moodle felhasználói adatbázisában, akkor ez a parancssor visszaadja a felhasználói azonosítószámot (adatbázisbeli mutatót) az adott felhasználóhoz, és tanulóként fogja regisztrálni a megadott kurzusok bármelyikébe ANÉLKÜL, hogy frissíteni a többi megadott adatot.
                        • -
                        - - -

                        Íme egy példa egy érvényes importálási állományra:

                        -

                        felhasználónév, jelszó, utónév, családi név, e-mail, nyelv, azonosítószám, levélkijelzés, kurzus-1, csoport-1
                        -jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, 3663737, 1, Intro101, Section 1
                        -reznort, somesecret, Trent, Reznor, reznort@someplace.edu, en_us, 6736733, 0, Advanced202, Section 3

                        - diff --git a/lang/hu/help/wiki.html b/lang/hu/help/wiki.html deleted file mode 100644 index 766fbfb925a..00000000000 --- a/lang/hu/help/wiki.html +++ /dev/null @@ -1,132 +0,0 @@ -

                        Súgó wiki formájú oldalak készítéséhez

                        - -

                        - A wiki formájú oldalakkal egyszerű szöveget egészíthetünk ki intuitív, emberi olvasásra alkalmas formázással, mely megjelenítés során XHTML alakúvá változik. Ennek előnye, hogy nem kell megtanulni a HTML-t ahhoz, hogy bonyolultabb eredményeket érjünk el, miközben a megírt szöveg jól olvasható még közvetlenül az átalakítás előtt is. Így valóságos alternatívához jutunk a Word HTML formában való elmentésével szemben, miközben a forrást on-line szerkeszthetjük. -

                        - -

                        Alapvetően egyszerű szöveget kell beírnunk. Létezik egy sor speciális karakter, amelyek beszúrásával formázást alkalmazhatunk.

                        - -

                        Bekezdések formázása

                        - -

                        - A bekezdéseket egymástól legalább egy üres sor választja el. Egy bekezdés speciális formázásához az alábbi karakterek valamelyikét kell beszúrni a bekezdés első sorának első karakteréhez egy szóközzel... -

                        - - - - - - - - - - -
                        KarakterBekezdés jellege
                        Nincs karakterSzokásos bekezdés
                        >Idézet
                        SzóközElőreformázott (egyes sortávú) szöveg
                        %Az előreformázott é a wiki formázású szöveg figyelmen kívül hagyva
                        !#Címsor - ahol a # 1-6 között lehet, az 1-es címsor a legnagyobb
                        Q.Kérdés - a stílussal kapcsolatos információval a bekezdés egészül ki a kérdés/válasz megjelenítésének javításához (témán belül)
                        A.Válasz - mint fent, csak válasz
                        - -

                        Felsorolás formázása

                        - -

                        Egyszerű felsorolásokat könnyen hozhatunk létre úgy, hogy a felsorolás minden sorának elején speciális karaktert használunk, melyet szóköz követ. A felsorolást üres sor zárja. A listák szabadon egymásba ágyazhatók - az egymásba ágyazott felsorolások pedig módosulhatnak típus szerint. A kellő hatás érdekében a meghatározások és a szövegtípusok szabadon vegyíthetők. A speciális karakterek a következők...

                        - - - - - - - -
                        KarakterFelsorolás elemének típusa
                        *Rendezetlen lista (pontokba szedve)
                        #Rendezett lista (1, 2, 3 stb.)
                        :Meghatározások felsorolása, meghatározás
                        ;Meghatározások felsorolása, szöveg
                        - -

                        Példa egymásba ágyazott felsorolásokra:

                        -

                        -  * Első pont
                        -  * Második pont
                        -  ## 1. beágyazott sor
                        -  ## beágyazott sor 2
                        -  * Harmadik pont
                        -

                        -

                        Eredménye: -

                        • Első pont
                        • -
                        • Második pont
                        • -
                          1. beágyazott sor 1
                          2. -
                          3. 2. beágyazott sor
                          -
                        • Harmadik pont -

                        - -

                        Soron belüli formázás

                        - -

                        Soron belüli formázással egy sor egy részét jelölhetjük ki valamilyen formázás számára. A speciális karakterek a sorban bárhol megjelenhetnek, de a formázás nem terjedhet ki több sorra. A kódok a következők...

                        - - - - - - - - - - - - -
                        PéldaPéldaFormázás
                        *hello, világ*hello, világVastag
                        /hello, világ/hello, világDőlt
                        +hello, világ+hello, világBeszúrt szöveg
                        -hello, világ-hello, világTörölt vagy áthúzott
                        hello ~világ~hello világAlsó index
                        hello ^világ^hello világFelső index
                        "hello, világ"“hello, világ”Idézet
                        %hello, világ%hello, világKód vagy nem proporcionális
                        @hello, világ@hello, világIdézet
                        - -

                        Rövidítés

                        - -

                        A rövidítés jelölése nagybetűs írásmód, melyet zárójelben követ a meghatározás. A rövidítés és a zárójel között nincs szóköz. Példa...

                        - -

                        HTML (Hypertext Markup Language)
                        HTML

                        - -

                        Ugrópontok

                        - -

                        A hivatkozásokat a szövegbe beszúrjuk, majd (szóköz nélkül) utána írjuk a megjelenítendő szöveget. Példa: A http://www.google.com/(Keresés) átalakítás után: -Keresés.

                        - -

                        Ugyanígy érhetők el a levelezési hivatkozások, pl.

                        -

                        senki@pelda.com(Felhasználó) átalakítva -Felhasználó.

                        - -

                        A Moodle moduljaira való hivatkozások

                        - -

                        Ha ismerjük a Moodle azonosítószámot (ez a modulcím alján látható ?id=nn alakban) és a modul nevét, akkor közvetlenül kapcsolódhatunk az adott forrásra az alábbi szabály alkalmazásával:

                        - -

                        ModuleName:nn(Leírás szövege)

                        -

                        pl., forrás:36(Új oldalam) fórum:10(Ugrópont a fórumhoz)

                        - -

                        A Moodle képes hivatkozásai

                        - -

                        Wiki-oldalakon elhelyezhetünk soron belüli képet is. Ehhez töltsük föl a képet és jegyezzük meg a feltöltés szerinti útvonalát. A szintaxisa:

                        - -

                        /..útvonal az ..állományhoz(alternatív szöveg)

                        - -

                        például, /mypics/graphic.jpg(Személyzetről készült kép)

                        - -

                        A Moodle állományaira való hivatkozások

                        - -

                        A fenti képhivatkozásokhoz hasonlóan (l. fent) ezzel a funkcióval korábban feltöltött, wiki-oldalra szánt állományokra hivatkozhatunk. A szintaxis:

                        - -

                        állomány:..útvonal(hivatkozási szöveg)

                        - -

                        például, állomány:/pdfs/moodle.pdf(Tájékoztató a Moodle-ról)

                        - -

                        Automatikus újraformázás

                        - -

                        Számos általánosan használt funkció automatikusan XHTML-beli megfelelőjévé alakul át. A főbb típusok a következők...

                        - -
                          -
                        • A HTTP-hivatkozások aktív hivatkozásokká alakulnak át
                        • ..., (R), (TM), (C), 1/4, 1/2, 3/4 mind átalakul a helyes karakterré
                        • számjegy x számjegy átalakul a megfelelő szorzási szimbólummá
                        • A legalább négy kötőjellel kezdődő sorból vízszintes vonal lesz -
                        - -

                        Helyesírás-ellenőrző (kísérleti)

                        - -

                        A wiki-formázó átkapcsolható helyesírás-ellenőrző üzemmódba. Szúrjuk be az alábbiakat egy külön sorba a szövegbe. Ezt követően mindent ellenőriz a rendszer...

                        -!SPELL:language_code:language_variant
                        -
                        -Pl.:
                        -!SPELL:en:british
                        -!SPELL:sp
                        -
                        - -

                        a "language_code" [nyelvi kód] a megfelelő alakban írandó be (pl. EN, FR stb.), a "language_variant" [nyelvi változat] (a kettősponttal együtt) opcionális, és az EN nyelvi kód esetén lehet akár "american", akár "british", akár "canadian".

                        - -

                        Az ismeretlen szavak kijelölve jelennek meg, a szó fölé helyezett egérrel javaslatokat kapunk.

                        - -

                        MEGJEGYZÉS: a helyesírást a pspell könyvtárak alapján végzi a rendszer. Ezeknek és a szükséges szótárnak a működéshez a szerverünkön kell lenni. Az ellenőrzés Windows platformon nincs támogatva. -

                        diff --git a/lang/hu/help/wiki/checklinks.html b/lang/hu/help/wiki/checklinks.html deleted file mode 100644 index 68bb8abdced..00000000000 --- a/lang/hu/help/wiki/checklinks.html +++ /dev/null @@ -1,2 +0,0 @@ -

                        Hivatkozások ellenőrzése

                        -

                        Ez a segédeszköz ellenőrzi az összes http:// hivatkozás érvényességét, majd ismét elmenti a wiki-oldalt, bejelölve bennük az érvénytelen hivatkozásokat a könnyebb szerkeszthetőség érdekében.

                        diff --git a/lang/hu/help/wiki/ewikiacceptbinary.html b/lang/hu/help/wiki/ewikiacceptbinary.html deleted file mode 100644 index b8bede2b36b..00000000000 --- a/lang/hu/help/wiki/ewikiacceptbinary.html +++ /dev/null @@ -1,9 +0,0 @@ -

                        Bináris állományok engedélyezése

                        - -

                        Ha engedélyezzük bináris tartalom (például képek) használatát, két lehetőség közül választhatunk:
                        -

                          -
                        1. Feltölthetjük és wiki-oldalakon képként használhatjuk őket. Az oldal szerkesztése során egy feltöltési űrlap jelenik meg, melyet képek feltöltéséhez használhatunk. Sikeres feltöltés után egy képkód jelenik meg, amelyet szögletes zárójeleket használva építhetünk be az oldalainkba. Például: [internal://myimage.gif].
                        2. - -
                        3. Csatolhatunk állományokat wiki-oldalhoz is, amelyet a csatolt állományok paranccsal jeleníthetünk meg. A méretet a Moodle-ban eszközölt beállítás határozza meg.
                        4. -
                        -

                        diff --git a/lang/hu/help/wiki/howtowiki.html b/lang/hu/help/wiki/howtowiki.html deleted file mode 100644 index f05ae6a83be..00000000000 --- a/lang/hu/help/wiki/howtowiki.html +++ /dev/null @@ -1,123 +0,0 @@ -

                        A wiki használata

                        -

                        -A Moodle wikije az -ErfurtWiki-re épül, amely a -WikiWikiWeb - hipertextes rendszer implementációja. A wiki weboldalak egyszerű közös szerkesztését és létrehozását teszi lehetővé.

                        -

                        -

                          -
                        • Lapszerkesztés oldalak szerkesztésének elsajátítása
                        • -
                        • valamely oldal tartalmának a szerkesztéséhez kattintsunk a pontra vagy a legördülő menüből válasszuk az "Oldal szerkesztése" pontot
                        • -
                        • az oldalak formázása Wiki jelölőnyelvvel vagy (ha a wiki rendelkezik ezzel az opcióval) HTML-lel történik
                        • -
                        • oldalakat kereshetünk vagy áttérhetünk az új oldalak listájára
                        • -
                        • emellett léteznek listák a leggyakrabban látogatott, a leggyakrabban módosított és a legutóbb frissített oldalakról
                        • -
                        -

                        -

                        -Lapszerkesztés:
                        -Egy-egy lapot úgy hozhatunk létre, hogy egy meglévő oldal szövegében megnevezzük az új lapot. Általában wiki-oldalakat ún. -CamelCase formátumban vagy szögletes zárójelek ( [] ) közé írva nevezhetünk meg.

                        -

                        -Például: -

                          -
                        • MyWikiPage (Camel Case)
                        • -
                        • [My Wiki Page] (szögletes zárójelek között)
                        • -

                        -

                        -Az a szöveg, amely wiki-oldalas elnevezést tartalmaz, '?'-lel végződik. A '?'-re kattintással kezdhetünk neki az adott oldal szerkesztésének. A szöveg megírása, elmentése után máris kész az új wiki-oldal.

                        -

                        Wiki jelölőnyelv:
                        -Egy-egy wikin belül az oldalak könnyen szerkeszthetők a wiki jelölőnyelv segítségével. -

                        -

                        Bekezdések

                        -
                          -
                        • ezzel választhatók el egymástól üres sorokkal a szövegen belüli bekezdések
                        • -
                        • sortöréshez használjunk három %%% jelet
                        • -
                        • ha a szöveg elé szóközöket vagy tabulátorokat írunk, a sorok behúzással jelennek meg
                        • -
                        - -

                        !! Címsorok

                        -
                          -
                        • A sor elején egy ! segítségével hozhatunk létre egy kis címsort
                        • -
                        • !! jellel közepeset
                        • -
                        • !!! jellel nagy címsorokat
                        • -
                        - -

                        szövegformázás

                        -
                          -
                        • szöveg kiemelése két aposztróf [''] segítségével történik, a közötte lévő szöveg rendszerint dőlten jelenik meg
                        • -
                        • szöveg vastagítása két aláhúzásjellel [__] történik (vagy két csillag között: **)
                        • -
                        • szövegméret növelése kettőskeresztek közé [##] illesztéssel
                        • -
                        • szövegméret csökkentése két "55" jel közé illesztéssel
                        • -
                        • azonos szélességű betűkkel írógép írásmintájára hasonlító szerkesztéssel a szöveget két egyenlőségjel közé [==] illesztve szerkeszthetünk
                        • -
                        - -

                        Listák

                        - -
                          -
                        • lista kezdése * jellel történik
                        • -
                        • számozott lista elején #-t használunk
                            -
                          1. további listákat hozhatunk létre
                          2. -
                          3. ehhez az alpontokat ugyanúgy a * és a # jelek megfelelő variálásával alakíthatjuk ki
                          4. -
                          -
                        • -
                        - -

                        HyperLinks

                        - -
                          -
                        • új ugrópont létrehozásához illesszünk a szövegbe egy CamelCase formátumú wikiszót
                        • -
                        • vagy vegyük körbe az ugrópontot két szögletes zárójellel
                        • -
                        • az érvényes internetes (http://-vel kezdődő) címek, például a http://www.example.com/ webcím szövegét a rendszer automatikusan kattinthatóvá alakítja
                        • -
                        • ha a www-címet vagy a wiki-ugrópontot szögletes zárójelek közé tesszük [Moodle], idézőjelekkel vagy a | jellel címkét ragaszthatunk rá
                            -
                          • [title | http://példa.com]
                          • -
                          • [WikiWord "cím"] vagy ["cím" WikiLink]
                          • -
                          - -
                        • -
                        • ha egy wikiszót, !http://www-címet (vagy [bármit], ami szögletes zárójelben van) nem szeretnénk ugróponttá alakíttatni, mindössze egy felkiáltójelet vagy egy hullámvonalat kell elé írnunk
                            -
                          • !NemUgróPont, ~NemUgróPont
                          • -
                          • ![NemUgróPont], !!http://nolink.org/
                          • -
                          -
                        • -
                        - -

                        Táblázatok a | jellel

                        - - - - - - - - - - - - - -
                        az egyes elemeket fogjuk közre egy | jellel,
                        és kész is a táblázat szerkezete
                        a böngészők általában üresen hagyják a hiányzó cellákat
                        - - -

                        -A táblázat elé és után mindig szúrjunk be egy üres sort, hogy bekezdésén belül elkülönüljön a többi szövegtől. -

                        - -

                        Ábrák

                        - -
                          -
                        • kép beszúrásához illesszük annak teljes elérési útvonalát szögletes zárójelek közé, pl.: [http://www.példa.com/pics/image.png]
                        • -
                        • másik megoldás a képfeltöltő funkció használata
                        • -
                        - -

                        További olvasmányok

                        -A Wiki jelölőnyelv egy sor egyéb lehetőséget tartalmaz. További információk az Erfurt Wiki honlapon. - -

                        -Camel Case:
                        -A CamelCase a wikiszavak írásmódja. A több szóból álló összetétel szóköz nélkül, a szókezdeteknél nagybetűvel írandó. Akis- és nagybetűk váltakozásától a szöveg megjelenése hasonlít a teve púpjára.

                        -

                        -Ezt a szövegfűzési módot hívják BumpyText-nek (göröngyös szövegnek) is.

                        -

                        -A nyelvleírók nem kedvelik a wiki ezen névadási írásmódját, a számítógépes világban ez az írásmód nagyon elterjedt és a legtöbb programozó ismeri.

                        - - diff --git a/lang/hu/help/wiki/htmlmode.html b/lang/hu/help/wiki/htmlmode.html deleted file mode 100644 index 646691739f0..00000000000 --- a/lang/hu/help/wiki/htmlmode.html +++ /dev/null @@ -1,13 +0,0 @@ -

                        HTML-mód

                        - -

                        Az alábbi lehetőségek állnak rendelkezésre: -

                        -
                        Nincs HTML
                        -
                        Minden HTML-elemet kiiktat. A formázás wikiszavakkal történik. A szűrők ebben a módban be vannak kapcsolva.
                        -
                        Biztonságos HTML
                        -
                        Egyes elemek használata megengedett és meg is jelennek. Nincsenek aktív szűrők, melyeknek ebben a módban elemekre volna szükségük!
                        -
                        Csak HTML
                        -
                        Wikiszavak használata nélkül, csak HTML. Ezen opció esetén lehetőség van a HTML-szerkesztő használatára.
                        -
                        - -

                        diff --git a/lang/hu/help/wiki/index.html b/lang/hu/help/wiki/index.html deleted file mode 100644 index 8d1c8b69c3f..00000000000 --- a/lang/hu/help/wiki/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lang/hu/help/wiki/initialcontent.html b/lang/hu/help/wiki/initialcontent.html deleted file mode 100644 index b969c70f217..00000000000 --- a/lang/hu/help/wiki/initialcontent.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        Kezdeti tartalom kitöltése

                        - -

                        Ez az a tartalom, amelyet kezdetben betölthetünk a wikibe.

                        -

                        Ha saját kezdeti tartalmat kívánunk megadni, hozzuk létre szöveges állomány formájában, majd töltsük föl a kurzusállományokat tartalmazó terület valamelyik könyvtárába. Ezután az állományok közül válasszunk ki egyet kezdő oldalnak. Az adott könyvtárban lévő összes oldal az ezen wikihez létrehozott egyes új wikiszerkezetek tartalma lesz, a kiválasztott oldal pedig a kezdő oldal lesz. -

                        diff --git a/lang/hu/help/wiki/mods.html b/lang/hu/help/wiki/mods.html deleted file mode 100644 index ccf329682f4..00000000000 --- a/lang/hu/help/wiki/mods.html +++ /dev/null @@ -1,11 +0,0 @@ -

                         Wiki

                        -
                          -

                          A Wiki arra ad lehetőséget, hogy böngésző használata mellett egy egyszerű jelölőnyelvet alkalmazva dokumentumokat lehessen közösen létrehozni.

                          - -

                          A "wiki wiki" hawaii nyelven azt jelenti, hogy "villámgyors", így utal az így szerkeszthető és frissíthető oldalak fejlesztésének a sebességére. Általában véve a módosítások elfogadása előtt nem kerül sor azok felülvizsgálatára, és a legtöbb wiki bárki számára, de legalábbis a wikiszerverhez hozzáférő személyek számára elérhető.

                          - -

                          A Moodle wiki moduljával a résztvevők a tartalom hozzáadása, bővítése vagy módosítása céljából együtt munkálkodnak az internetes oldalakon. A régebbi változatokat a rendszer sosem törli és mindig visszaállíthatók.

                          - -

                          Ez a modul az Erfurt Wiki változaton alapszik.

                          -
                        - diff --git a/lang/hu/help/wiki/removepages.html b/lang/hu/help/wiki/removepages.html deleted file mode 100644 index b422f54c16e..00000000000 --- a/lang/hu/help/wiki/removepages.html +++ /dev/null @@ -1,3 +0,0 @@ -

                        Oldalak törlése

                        -

                        Ezzel a funkcióval wiki-oldalakat törölhetünk. Gyors ellenőrzést követően megjelennek a hibás oldalak.

                        -

                        Egy-egy oldal törlését alaposan fontoljuk meg! Rendszerint erre nincs szükség.

                        diff --git a/lang/hu/help/wiki/revertauthorfieldpattern.html b/lang/hu/help/wiki/revertauthorfieldpattern.html deleted file mode 100644 index 9b3d76218b5..00000000000 --- a/lang/hu/help/wiki/revertauthorfieldpattern.html +++ /dev/null @@ -1,4 +0,0 @@ -

                        Többszörös változtatás visszaállításának szerzője

                        -

                        -Ez egy rögzített szöveg (nem használható a * vagy egy reguláris kifejezés), a legtöbb, ami tehető, az a támadást intéző IP-címének vagy gazdanevének a használata. -

                        diff --git a/lang/hu/help/wiki/revertpages.html b/lang/hu/help/wiki/revertpages.html deleted file mode 100644 index a240f7801b3..00000000000 --- a/lang/hu/help/wiki/revertpages.html +++ /dev/null @@ -1,3 +0,0 @@ -

                        Oldalak visszaállítása

                        - -

                        Ha valaki saját wikinkben egy sor oldalt összekavar, ezeket a változtatásokat automatikusan visszaállíthatjuk, ha kitöröljük az adott {szerző}-höz tartozó mezőt (ez rendszerint egy IP-cím vagy gazdagépnév).

                        diff --git a/lang/hu/help/wiki/setpageflags.html b/lang/hu/help/wiki/setpageflags.html deleted file mode 100644 index 1d376b746f5..00000000000 --- a/lang/hu/help/wiki/setpageflags.html +++ /dev/null @@ -1,13 +0,0 @@ -

                        Oldaljelölők beállítása

                        -

                        A wiki-oldalakon jelölők helyezhetők el, melyek módosítják annak típusát vagy viselkedését.

                        - -

                        Jelölő leírása:

                        - - - - - - - -
                        TXTAz oldalon szöveg szerepel.
                        BINAz oldalon bináris adat szerepel.
                        OFFAz oldal ki van kapcsolva.
                        HTMAz oldalon HTML szerepelhet (az általános wiki-beállítás megelőzi ezt a jelölőt).
                        ROCsak olvasható.
                        WRÍrható.
                        - diff --git a/lang/hu/help/wiki/strippages.html b/lang/hu/help/wiki/strippages.html deleted file mode 100644 index e0ccf92842c..00000000000 --- a/lang/hu/help/wiki/strippages.html +++ /dev/null @@ -1,3 +0,0 @@ -

                        Oldalak eltávolítása

                        - -

                        Ezzel a funkcióval az adatbázisban tárolt összes oldal korábbi változatát eltávolíthatjuk, így csak a legfrissebb változatok maradnak meg.

                        diff --git a/lang/hu/help/wiki/studentadminoptions.html b/lang/hu/help/wiki/studentadminoptions.html deleted file mode 100644 index 1063e76d0a5..00000000000 --- a/lang/hu/help/wiki/studentadminoptions.html +++ /dev/null @@ -1,4 +0,0 @@ -

                        Tanulóadminisztrátori opció

                        - -

                        Egyes adminisztrátori opciókat a tanulókkal kapcsolatosan ki- és bekapcsolhatunk. Bekapcsolt állapotban ezek az opciók csak az olyan wiki esetén érvényesülnek, amelyeket a tanuló szerkeszthet. Kikapcsolt állapotban ezek nem jelennek meg az adminisztrátori menüben. -

                        diff --git a/lang/hu/help/wiki/wikilinkoptions.html b/lang/hu/help/wiki/wikilinkoptions.html deleted file mode 100644 index 83991a579f0..00000000000 --- a/lang/hu/help/wiki/wikilinkoptions.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        A wiki automatikus hivatkozási opciója

                        - -

                        Bizonyos helyzetekben előfordulhat, hogy nem kívánjuk a CamelCase írású szavak automatikus hivatkozássá alakítását. Ilyen esetben ezt a négyzetet kell bejelölni a CamelCase alapú hivatkozások kikapcsolásához. -

                        -

                        -FIGYELEM -- A CamelCase a wiki alapvető jellemzője, kikapcsolása esetén megeshet, hogy más importált wikik hibásan fognak működni. Ezt a funkciót csakis akkor használjuk, ha teljesen biztosak vagyunk abban, hogy nem akarunk CamelCase alapú hivatkozásokat. -

                        diff --git a/lang/hu/help/wiki/wikiname.html b/lang/hu/help/wiki/wikiname.html deleted file mode 100644 index e3276cf68f8..00000000000 --- a/lang/hu/help/wiki/wikiname.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Kezdő wiki-oldal neve

                        -

                        -Itt adhatjuk meg, ha az első wiki-oldal neveként a wiki helyett más nevet kívánunk használni. Ez lesz az első wiki-oldal neve ezen wiki minden egyes példánya esetén.

                        - -Ha ezt a mezőt üresen hagyjuk, a kezdő oldal a wiki neve lesz, hacsak ki nem választunk egy nevet a 'kezdő oldal' mezőben. -

                        - diff --git a/lang/hu/help/wiki/wikitype.html b/lang/hu/help/wiki/wikitype.html deleted file mode 100644 index 7de7bf24993..00000000000 --- a/lang/hu/help/wiki/wikitype.html +++ /dev/null @@ -1,39 +0,0 @@ -

                        Lehetővé teszi, hogy a tanulók írjanak a wikibe

                        -

                        -

                          -
                        • A tanár a kurzusában szereplő összes wikibe írhat
                        • -
                        • Háromféle wiki létezik: tanári, kurzus-/csoport, tanulói
                        • -
                        • A tevékenység az alábbi Moodle-csoporthoz tartozó állapotokkal rendelkezik: "Nincs csoport", "külön csoportok" és "látható csoportok"
                        • -
                        • Minden csoport esetén ugyanaz a kezdeti tartalom szerepel
                        • -
                        - -Így egy mátrixot kapunk: - - - - - - - - - - - - - - - - - - - - - - - - - -
                        Nincs csoportKülön csoportokLátható csoportok
                        TanárA tanár hozza létre és módosítja a wikit. A tanuló olvashatja a tartalmat.Minden csoporthoz tartozik egy wiki, amelyet csak a tanár módosíthat. A tanulók csak a saját csoportjukhoz tartozó wikit látják.Minden csoporthoz tartozik egy wiki, amelyet csak a tanár módosíthat. A tanulók az összes olyan wikit látják, amely egy, az összes csoportot tartalmazó lenyíló menüből kiválasztható.
                        Kurzus/csoportA tanár és a felhasználó hozhatja létre és módosíthatja a wikit.A tanuló a saját csoportjához tartozó wikit módosíthatja és megtekintheti.A tanuló a saját csoportjához tartozó wikit módosíthatja. A tanulók az összes olyan wikit láthatják, amelyek egy, az összes csoportot tartalmazó lenyíló menüből kiválaszthatók.
                        TanulóMinden tanuló a saját wikijét láthatja és módosíthatja.Minden tanuló a saját wikijét módosíthatja, és látja csoportja tanulóinak összes wikijét, amelyek egy, a csoportja összes tanulóját tartalmazó lenyíló menüből választhatók ki.Minden tanuló a saját wikijét módosíthatja, és látja az összes wikit, amely egy, az összes tanulót tartalmazó lenyíló menüből választható ki.
                        - -

                        - diff --git a/lang/hu/help/wiki/wikiusage.html b/lang/hu/help/wiki/wikiusage.html deleted file mode 100644 index 02435073ab1..00000000000 --- a/lang/hu/help/wiki/wikiusage.html +++ /dev/null @@ -1,110 +0,0 @@ -

                        A wiki használata

                        -

                        -
                        - -A wiki olyan platform, amely weboldalak közös létrehozására szolgál. Alapelvei egyszerűek. -

                        - -

                          -
                        • A szöveget megírjuk és elmentjük.
                        • -
                        • Később egy másik személy elolvassa és bizonyos kiegészítéseket vagy módosításokat vél elvégezhetőnek. Ezért kiválasztja az "Edit" [Szerkesztés] funkciót és elvégzi a módosításokat.
                        • -
                        • Az új változat mentése után mindenki számára hozzáférhetővé válik.


                        • -
                        - -A wiki révén oldalakat vagy ugrópontokat szúrhatunk be meglévő oldalakba. -

                        - -
                          -
                        • Az ugrópont (hivatkozás) egy wikiszóvaL hozható létre. Ez olyan szóból áll, amelyben legalább két nagy betű szerepel. Ha már létezik ilyen nevű oldal, annak összekapcsolása automatikusan történik, ha nem, a pont kérdőjellel jelenik meg.
                        • -
                        • A kérdőjelre kattintva az adott névvel egy új oldalt nyitunk meg szerkesztésre.
                        • -
                        -

                        - - -


                        -A wiki formázási szabályai

                        -

                        - - -

                        Bekezdések

                        -
                          -
                        • ezzel választhatók el egymástól üres sorokkal a szövegen belüli bekezdések
                        • -
                        • sortöréshez használjunk három %%% jelet
                        • -
                        • ha a szöveg elé szóközöket vagy tabulátorokat írunk, a sorok behúzással jelennek meg
                        • -
                        - -

                        !! Címsorok

                        - -
                          -
                        • A sor elején egy ! segítségével hozhatunk létre egy kis címsort
                        • - -
                        • !! jellel közepeset
                        • -
                        • !!! jellel nagy címsorokat
                        • -
                        - -

                        Szövegformázás

                        - -
                          - -
                        • szöveg kiemelése két aposztróf ('') segítségével történik, a közötte lévő szöveg rendszerint dőlten jelenik meg
                        • -
                        • szöveg vastagítása két aláhúzásjellel [__] történik (vagy két csillag között: **)
                        • -
                        • szövegméret növelése kettőskeresztek közé [##] illesztéssel
                        • - -
                        • szövegméret csökkentése két "55" jel közé illesztéssel
                        • -
                        • egy írógép írásmintájára hasonlító szerkesztéssel a szöveget két egyenlőségjel közé [==] illesztve szerkeszthetünk
                        • -
                        - -

                        Listák

                        - -
                          -
                        • lista kezdése * jellel történik
                        • -
                        • számozott lista elején #-t használunk
                            -
                          1. további listákat hozhatunk létre
                          2. - -
                          3. ehhez az alpontokat ugyanúgy a * és a # jelek megfelelő variálásával alakíthatjuk ki
                          4. -
                          -
                        • -
                        - -

                        HyperLinks

                        - -
                          - -
                        • új ugrópont létrehozásához adjunk meg egy wikiszót a szövegen belül
                        • -
                        • bizonyos szavakat [szögletes zárójelben] megadva ugrópontot hozhatunk létre a WikiWikiWeb belsejében, amely nem egy érvényes wikiszóból áll
                        • - -
                        • az érvényes internetes (http://-vel kezdődő) címek, például a http://www.example.com/ webcím szövegét a rendszer automatikusan kattinthatóvá alakítja
                        • -
                        • egy www-címet vagy egy WikiLink-et szögletes zárójelbe téve és idézőjelek vagy a | karakterek közé helyezve megfelelő címet megadva:
                            -
                          • [cím | http://példa.com]
                          • - -
                          • [WikiWord "cím"] vagy ["cím" WikiLink]
                          • -
                          -
                        • -
                        • ha egy wikiszót, !http://www-címet (vagy [bármit], ami szögletes zárójelben van) nem szeretnénk ugróponttá alakíttatni, mindössze egy felkiáltójelet vagy egy hullámvonalat kell elé írnunk
                            -
                          • !NoHyperLink, ~NoHyperLink
                          • -
                          • ![Nem hiperkapcsolat], !http://nolink.org/
                          • - -
                          -
                        • -
                        - -

                        Táblázatok a | jellel

                        -| az egyes elemek | kötőjelesek | karakter |
                        -| felépített | táblázati struktúra |
                        -| a böngészők rendszerint | kihagyják az üres | cellákat |
                        - - -

                        -A táblázat elé és után mindig szúrjunk be egy üres sort, hogy bekezdésén belül elkülönüljön a többi szövegtől. -

                        - -

                        Ábrák

                        - -
                          - -
                        • kép beszúrásához illesszük annak teljes elérési útvonalát szögletes zárójelek közé, pl.: [http://www.példa.com/pics/image.png]
                        • -
                        • másik megoldás a képfeltöltő funkció használata.
                        • -
                        - -

                        További olvasmányok

                        -A Wiki jelölőnyelv egy sor egyéb lehetőséget tartalmaz. További információkért lásd az Erfurt Wiki Homepage oldalt. \ No newline at end of file diff --git a/lang/hu/help/workshop/addingacomment.html b/lang/hu/help/workshop/addingacomment.html deleted file mode 100644 index 4b29f20e1b7..00000000000 --- a/lang/hu/help/workshop/addingacomment.html +++ /dev/null @@ -1,14 +0,0 @@ -

                        Megjegyzés hozzáadása

                        - -

                        Az alábbi céllal fűzhetünk megjegyzéseket valamely értékeléshez: - -

                          -
                        1. További magyarázat vagy kifejtés az értékeléshez (az adott munkát értékelő hallgató részéről); -
                        2. Az értékelésben szereplő állítások lekérdezése (azon tanuló részéről, akinek a munkáját értékelik); -
                        3. Az értékelés megvitatása közben esetleg fölmerülő gondok kiküszöbölése (a tanár által); -
                        -

                        A megjegyzések célja vagy az adott értékeléssel kapcsolatos egyetértés kialakítása, vagy az értékelést végző rábeszélése arra, hogy vizsgálja felül értékelését. A megbeszélést ésszerű módon kell lebonyolítani. - -

                        A munka újraértékelése esetén a régi megjegyzések törlődnek és nem jelennek meg az új értékeléssel. - -

                        diff --git a/lang/hu/help/workshop/agreeassessments.html b/lang/hu/help/workshop/agreeassessments.html deleted file mode 100644 index 953eb7bd9a4..00000000000 --- a/lang/hu/help/workshop/agreeassessments.html +++ /dev/null @@ -1,11 +0,0 @@ -

                        Értékelések egyeztetése

                        - -

                        Egy csoportos feladat a következő jellemzőkkel rendelkezhet: - -

                          -
                        1. A leadási és értékelési szakaszban, amikor a tanuló a többi tanuló által készített értékelést látja, nincs visszajelzés a munkát leadó tanulóktól azon tanuló felé, aki az értékelést végezte. Lehetséges visszajelzés a tanár részéről, ha a tanár úgy dönt, hogy osztályozza a tanulói értékeléseket, mely esetben a tanár pontszámai és megjegyzései mind a munkát készítő, mind az értékelést végző tanuló számára hozzáférhetővé válnak. Ugyanakkor bármely munkát illetően a tanulótársak csakis egyirányú visszajelzéssel élhetnek. - -
                        2. A leadási és értékelési szakaszban a tanulók látják a többi tanuló által készített értékelést és lehetőségük van arra, hogy megjegyzést tegyenek ezen értékelésekre. A (társuk általi) értékeléssel vagy egyetértenek, vagy nem. Ha az értékeléssel egyetértenek, akkor az értékelés megmarad és szerepelni fog társ által az adott munkára adott pontszám meghatározásában a végső számításnál. Ha viszont nem értenek egyet az értékeléssel, akkor az értékelést végző tanulónak lehetősége nyílik annak felülvizsgálatára. A felülvizsgálat/egyet nem értés ciklusa mindaddig folytatódik, amíg vagy egyetértés alakul ki, vagy a határidő lejár. Azt az értékelést, amely a határidő elérésekor továbbra is "vitatott", nem vesszük figyelembe a végső számításnál. Ennek köszönhetően a társak között kétirányú visszajelzés jön létre minden egyes munkával kapcsolatosan.
                        -

                        Ha a második munkamódszert választjuk, lehetőség van a pontszámok kijelzésének a kikapcsolására. Vagyis ha ezt a "pontszámok elrejtése" opciót választjuk, akkor csakis az értékeléshez tartozó megjegyzések jelennek meg az éppen értékelt tanuló számára. A pontszámok csak az egyetértés kialakulása után válnak láthatóvá (csakis a megjegyzések tekintetében). Ne feledjük, hogy ez az opció csakis akkor lép életbe, amikor az értékelésekhez egyetértésre van szükség. - -

                        diff --git a/lang/hu/help/workshop/analysisofassessments.html b/lang/hu/help/workshop/analysisofassessments.html deleted file mode 100644 index bd48dbee946..00000000000 --- a/lang/hu/help/workshop/analysisofassessments.html +++ /dev/null @@ -1,22 +0,0 @@ -

                        Értékelések elemzése

                        - -

                        Ez az elemzés a példákkal kapcsolatos értékelésre, valamint a feladat társak általi értékelési szakaszában végzett értékelésre irányul. Célja, hogy az adott tanári és tanulói értékeléshalmazból kiválassza a jobb értékeléseket. Ezeket a "jó" értékeléseket használjuk a végső pontszám kiszámításánál. -

                        - -

                        Az elemzést akkor célszerű elvégezni, amikor tanári értékelések állnak rendelkezésre. Ezeket az értékeléseket viszonyítási alapként használhatjuk a tanulói értékelések megítélése során. A tanárnak nem szükséges minden példát és minden leadott munkát értékelni, ugyanakkor az elemzés jobban tájékoztat, ha több tanári értékelésünk van, mint amennyi az egyes tanulók által végzett értékelések átlagos mennyisége. Minél több értékelést készít a tanár, annál biztosabb lehet az elemzés eredményét illetően. -

                        - -

                        Az elemzésre rendszerint több alkalommal sor kerül, ilyenkor általában egy vagy több opció megváltozik. Az elemzés mikéntje a lap tetején megjelenő három opcióval szabályozható.

                        - -
                        1. A tanári értékelés betöltésével állítjuk be az adott tanár értékeléseinek a tanulók értékeléseivel szembeni súlyozását a hibaelemzési szakaszban. Ha a tanár a leadott munkával kapcsolatos saját pontozási stratégiáját a tanulók pontozása elé kívánja rangsorolni, akkor a Hibatáblázatban a tanárnak kell a legkisebb átlagos hibával szereplő értékelést végzőnek lennie. Ha a tanár nem az első helyen szerepel, akkor a tanári értékelés betöltése mindaddig növelendő, amíg a tanár a legkisebb átlagos hibaszámmal nem rendelkezik. Ez azt jelenti, hogy a tanári értékelés fog dominálni és a tanárhoz hasonlóan pontozó tanulók úgyszintén a hibatáblázat felső részén jelennek majd meg. A táblázat alsó részén megjelenő tanulók pontozása nem felel meg a tanár értékelésének (sem a táblázat tetején lévő tanulókénak). Minél több tanári értékelés áll rendelkezésre, annál valószínűbb, hogy ezt az opciót nem kell igénybe venni a tanárnak a táblázat tetejére juttatásához. Ne feledjük, hogy ez az opció nem rendel súlyozást a tanári értékeléshez, ha az szerepel a végső pontszám kiszámításában. Abban a számításban a tanári értékelésnek a tanulói értékelésekkel azonos lesz a súlya. Így például ha egy tanuló leadott munkáját a tanár 41%-ra értékeli, társai pedig 45% -- 55%-ra, akkor a konkrét leadott munka végső pontszáma (41% + 45% + 55%) / 3, azaz 47% lesz.
                        2. - -
                        3. Az értékelési pontszám súlyozása a végső pontszám kiszámításakor használatos. A tanulói "pontozási teljesítmény" kiszámításához egyszerű képletet használunk. Ez a tanulók "jó" értékelésének az aránya a számukra rendelkezésre álló értékelések maximális számához viszonyítva. Így például ha az a feladat, hogy a tanulók 3 értékelést készítsenek a példaként leadott munkáról és 5 csoporttársi értékelést, az adott tanuló pedig 7 értékelést készít és ebből 1 kimarad az elemzésből (lásd alább), akkor a pontozási teljesítménye (7 - 1)/8, azaz 75%. A feladat végső pontszáma ezen pontozási teljesítmény és a leadott munkájukra adott pontszám (vagy több leadott munka esetén a legjobb pontszám) súlyozott kombinációja. A leadott munka pontszáma mindig 1-es súllyal szerepel. Így ha ezt az opciót, mondjuk, 0,5-re állítjuk, akkor a két pontszám 0,5:1 arányban vagy a pontozási teljesítmény 33%-aként és a leadott munka pontszámának 66%-aként összegződik.
                        4. -
                        5. A kiejtendő értékelések százalékos aránya határozza meg a to drop végső pontszám kiszámításából kihagyandó értékelések számát. Ez kétféleképpen állítható be. -
                          • Ha tudjuk, miként történik a pontozási teljesítmény kiszámítása, akkor ha az adott tanuló elvégzi az összes neki kiosztott munka értékelését, teljes jegyet kaphat (erre az elemre), ha egyetlen értékelést sem ejtenek ki. Ha a tanár ésszerűbb átlagpontszámot kíván használni, akkor ennek az opciónak a 30%-ra állításával mintegy 70%-os átlagos pontozási teljesítményhez juthat (ismét csakis akkor, ha minden tanuló az összes rendelkezésére álló értékelést lepontozta).
                          • -
                          • Másfelől a kiejtendő értékelések száma is beállítható úgy, hogy a fennmaradó "jó" értékelések az átlagos hibaszámot valamilyen ésszerű értéken belül tartsák. Ezek azok a százalékos arányok, amelyek a Hibatáblázat negyedik oszlopában szerepelnek. Például feltételezhető, hogy minden tanulói értékelés (átlagosan) a 20%-os tartományon belülre kerül. Ekkor az elemzés néhányszori megismétlésével beállítható a kiejtendő értékelések száma mindaddig, amíg a jelen oszlopban lévő számok mindegyike egy konkrét határon belül nem esik.
                          -
                        -

                        A hibatáblázaton túl az elemzés felsorolja az összes értékelés pontszámát és a tanulóknak adott végső pontszámot. Ennek a táblázatnak a megvizsgálásával eldönthető, hogy az eredmények ésszerűek-e. Közelebbről, ha sok értékelést ejtünk ki, bizonyos leadott munkák értékelés nélkül maradhatnak és a tanuló végső pontszáma túlzottan alacsony lesz. Az elemzés a leadott munkák számát a lap tetején, valamint közvetlenül a Pontszámtáblázat előtt mutatja. Ennek a két számnak azonosnak kell lenni. Ha egy vagy több értékeletlen leadott munka fordul elő és a tanár nem kívánja csökkenteni a kiejtett értékelések számát, akkor a tanárnak értékelnie kell ezen leadott munkákat és meg kell ismételnie az elemzést. Fontos, hogy minden leadott munka legalább egyszer értékelve legyen az elemzés végső szakaszában, azaz amikor a végső pontszám kiszámítása történik. -

                        -

                        A kiejtett értékelések száma és a globális végső pontszám között egyensúly áll fenn. Minél több értékelést ejtünk ki, annál alacsonyabb lesz a végső pontszám. Ha viszont nem ejtjük ki a gyönge értékeléseket, akkor a tanulók kifogásolhatják az értékelés minőségét, ami meghatározza a munkájukért kapott pontszámot. Ha elegendő tanári értékelés áll rendelkezésre az elemzés különösebb erőltetés nélküli tanári előtárbe helyezéséhez, úgy az értékeléseknek mintegy a 15% -- 30%-át célszerű kihagyni.

                        -

                        Ne feledjük, hogy ez az elemzés hosszú időt vesz igénybe, mivel ismétlődő folyamatról van szó. Hosszas késésekre számíthatunk. -

                        diff --git a/lang/hu/help/workshop/anonymous.html b/lang/hu/help/workshop/anonymous.html deleted file mode 100644 index a32ae59e882..00000000000 --- a/lang/hu/help/workshop/anonymous.html +++ /dev/null @@ -1,8 +0,0 @@ -

                        Névtelen pontozás

                        - -

                        A csoporttárs által pontozott feladatra névtelenül is megadható a pontszám. Ilyen esetben a pontozó tanuló neve (és esetleges fényképe) nem jelenik meg. A pontozandó munka azonosítására csakis a leadott munka (állomány-)neve szolgál. - -

                        Ha a feladat csoporttárs általi pontozása nem névtelenül történik, a munka mellett megjelenik annak a tanulónak a neve (és esetleg fényképe), aki a munkát leadta. Ez a pontozás esetén elfogultsághoz vezethet. - -

                        Ne feledjük, hogy ha a tanár pontszámait a tanuló látja, ezek sosem névtelenül jelennek meg. -

                        diff --git a/lang/hu/help/workshop/assessmentofexamples.html b/lang/hu/help/workshop/assessmentofexamples.html deleted file mode 100644 index bd127ef96e0..00000000000 --- a/lang/hu/help/workshop/assessmentofexamples.html +++ /dev/null @@ -1,4 +0,0 @@ -

                        A tanár példáinak értékelése

                        - -

                        Miután a tanár leadta a példákat, a tanár szempontjából érdemes a példát értékelni, még ha csak részlegesen is. Az ilyen értékelés a tanárra tartozik és a tanuló számára a feladat során SOHA nem válik láthatóvá. Ugyanakkor hasznosnak bizonyul, ha a tanár a példa tanulói értékelésére kíváncsi. A tanulói értékelés pontozása során a tanár saját értékelését a lap tetején, a tanuló ugyanazon munkára vonatkozó értékelését pedig a lap alján látja. A "plusz" értékelés hivatkozásként és a példában lévő fontosabb pontok emlékeztetőjeként szolgál. -

                        diff --git a/lang/hu/help/workshop/assignmenttype.html b/lang/hu/help/workshop/assignmenttype.html deleted file mode 100644 index d70d59586bb..00000000000 --- a/lang/hu/help/workshop/assignmenttype.html +++ /dev/null @@ -1,12 +0,0 @@ -

                        Csoporttárs által pontozott feladat típusa

                        - -

                        A csoporttárs által pontozott feladat kétféle lehet: - -

                          -
                        1. Csak az értékelési elemekre vonatkozó visszajelzés és az általános megjegyzések lesznek rögzítve. Az értékelési elemek pontozása nem látható a pontozási oldalakon. Maguk a feladatok nem szerepelnek az átlagos pontszámban. Ugyanakkor a tanuló pontozási teljesítményét méri a rendszer, és csakis ez az érték alakítja a tanulók végső pontszámát. - -
                        2. Itt a tanárnak és a csoporttársaknak mind visszajelzést, mind pontszámot meg kell adni. A feladatok globális mennyiségi pontszámot, valamint minőségi adatokat kapnak. A tanuló végső pontszáma a tanári pontszám, a csoporttársak átlagpontszáma és a tanuló pontozási teljesítménye (súlyozott) eredményéből alakul ki. - -
                        - -

                        diff --git a/lang/hu/help/workshop/breakdownoffinalgrade.html b/lang/hu/help/workshop/breakdownoffinalgrade.html deleted file mode 100644 index 5c97e9dd6ee..00000000000 --- a/lang/hu/help/workshop/breakdownoffinalgrade.html +++ /dev/null @@ -1,11 +0,0 @@ -

                        A végső pontszám összetétele

                        - -

                        A képernyőn a táblázat a végső pontszámot és annak kiszámítását mutatja. A végső pontszám három lehetséges összetevőből áll. - -

                          -
                        1. A tanár pontszáma a tanuló leadott munkájára. -
                        2. A csoporttársak pontszáma a tanuló leadott munkájára. -
                        3. A csoporttársi pontozási szakaszban a teljesítményre adott pontszám. A teljesítmény alapja a következő: (a) a pontszámai a többi tanuló átlagos pontszámához túl magas vagy túl alacsony volt-e (ezt torzításnak hívják), (b) pontszámai általában véve követik-e a többi tanuló által adott pontszámot (ezt megbízhatóságnak hívják) és (c) a tanulónak az általa pontozott egyéb munkákra tett megjegyzéseinek a minősége. Ezt a pontszámot a tanár adta. Ez a három teljesítménypont sorrendben 1:2:3 tényezőként súlyozódik és kiadja a globális "pontozási" pontszámot. Másképpen fogalmazva, a megjegyzések tanár általi pontozása ugyanolyan súlyú, mint a torzítási és a megbízhatósági tényező együttvéve.
                        - -

                        Ezt a három összetevőt a feladat szempoontjából megfelelőnek vélt módon súlyozhatjuk. A súlyok a kisebb táblázatban láthatók. -

                        diff --git a/lang/hu/help/workshop/calculatingfinalgrade.html b/lang/hu/help/workshop/calculatingfinalgrade.html deleted file mode 100644 index 815b5d4c2eb..00000000000 --- a/lang/hu/help/workshop/calculatingfinalgrade.html +++ /dev/null @@ -1,14 +0,0 @@ -

                        A végső pontszám kiszámítása

                        - -

                        A képernyőn a táblázat azt mutatja, hogyan történik a tanulók végső pontszámainak a kiszámítása. A végső pontszám maximum öt összetevő súlyozott összegéből alakul ki. - -

                          -
                        1. A tanár pontszáma a leadott munkára. Ez opcionalális és akkor használatos, ha a tanár valóban értékeli a tanuló munkáját. Ha a tanuló egynél több munkát ad le, akkor a "legjobbra" adott pontszám használatos. Ez esetben a "legjobb" azt a munkát jelenti, amely a tanári pontszám és a csoporttársi pontszám legmagasabb súlyozott kombinációját adja ... -
                        2. A csoporttársak pontszáma a tanuló leadott munkájára. Itt úgyszintén ha a tanuló egynél több munkát ad le, akkor a "legjobbra" adott pontszám használatos. A csoporttársi pontszám opcionálisan magában foglalhatja a tanári pontszámot. Ez a pontszám akkor szerepel, ha a csoporttársi pontszámok mennyisége túl alacsony, illetve ha feltételezhető, hogy a csoporttársi pontszámokat torzítás (rendszerint felfelé) vagy megbízhatatlanság jellemzi. Figyelembevétel esetén a tanári pontszám az átlag kiszámítása során ugyanúgy kezelendő, mint a csoporttárs pontszám.
                        3. A tanulói torzítás a csoporttársi munka pontozásában. Ez azt méri, hogy a tanuló a munkát túl magasan vagy túl alacsonyan pontozza-e. Ez nem valamiféle abszolút mérce, mivel minden egyes értékelt leadott munka tekintetében a tanuló pontszáma és a csoporttársak átlaga közötti különbségen alapul. Általában véve ehhez az összetevőhöz NE rendeljünk túl magas súlyt. -
                        4. A tanuló megbízhatósága a csoporttársi munka pontozása során. Ezzel mérhető, hogy a tanulói pontozás mennyire közelít a csoporttársak által értékelt munka átlagos pontszámához. Ez az összetevő levonja a tanulói torzítást és átlagolja a pontozása és a csoporttársak átlagos pontszáma közötti különbséget. Elméletileg ha egy tanuló magas jegyeket ad a jó munkákra és alacsonyakat a gyengékre, akkor a megbízhatósági szintje magas lesz. Ha gyanítható, hogy a tanulók általában véve gyengén értékelnek, akkor a tanár pontozását bele kell venni a csoporttársak átlagaiba, ennek eredményeként a megbízhatósági értékek jobban értelmezhetők lesznek. -
                        5. A tanár által a tanuló értékeléseire adott átlagpontszám. Ez egyaránt tartalmazza a tanuló által mintamunkákra adott előzetes értékelést és bármely olyan pontozást, amelyet a tanár készít a feladat csoporttársak általi értékelése során keletkező értékelésekre vonatkozóan. Általában véve ez az összetevő feltehetőleg fontosabb, mint akár a torzítás, akár a megbízhatóság, ezért ha van, nagyobb sűllyal kell szerepeltetn.
                        - -

                        Ezt az öt összetevőt az adott feladat szempontjából megfelelőnek vélt módon súlyozhatjuk. Például a tanári pontszám nagyobb súllyal eshet latba, ha a feladat csoporttársak általi pontozott része a feladat mint egész szempontjából csak csekély jelentőségű részként szerepel. Másrészről ha a tanár csak néhány leadott munkát pontoz, ezek a pontok figyelmen kívüöl hagyhatók oly módon, hogy nulla súllyal szerepeltetjük. Ha a feladat a tanulókra mint értékelőkre és visszajelzés biztosítására korlátozódik, akkor az első két összetevő nullára (vagy alacsonyra) állítható, és a tanuló pontozási képessége határozza meg a végső pontszámot. - -

                        Ne feledjük, hogy ez a képernyő ismétlődően jön föl és a végső pontszámok rendszerint mindaddig nem elérhetők a tanulók számára, amíg a feladat az utolsó szakaszba nem ér. Ha a tanár elégedett a végső pontszámokkal és azok súlyozásával, akkor elérhetővé teheti őket a tanulók számára. -

                        diff --git a/lang/hu/help/workshop/editingacomment.html b/lang/hu/help/workshop/editingacomment.html deleted file mode 100644 index 703c5d66e1f..00000000000 --- a/lang/hu/help/workshop/editingacomment.html +++ /dev/null @@ -1,4 +0,0 @@ -

                        Megjegyzés szerkesztése

                        - -

                        A többi elemhez hasonlóan egy rövid időszak áll rendelkezésre, amely alatt a megjegyzés szövege módosítható. A megjegyzés mindaddig nem tűnik fel az értékelésen, amíg ez az időszak le nem telt. -

                        diff --git a/lang/hu/help/workshop/elements.html b/lang/hu/help/workshop/elements.html deleted file mode 100644 index 403c4b86e33..00000000000 --- a/lang/hu/help/workshop/elements.html +++ /dev/null @@ -1,20 +0,0 @@ -

                        Feladatelemek

                        - -

                        A pontozás megkönnyítése érdekében a csoportos feladatnak ésszerű számú értékelési elemmel kell rendelkeznie. Az egyes elemeknek a feladat valamely konkrét szempontjára kell vonatkozniuk. Jellemző esetben egy-egy feladathoz 5 - 15 megjegyzési pontozási elemet kell hozzárendelni, a tényleges szám a feladat méretétől és bonyolultságától függ. Csoporttársi feladat esetén megengedett egyetlen elem használata, és hasonló értékelés stratégiával ruházható fel, mint egy szokásos Moodle-feladat. - -

                        Az elemek típusa a feladat pontozási stratégiájától függ. - -

                        Nem pontozott Az elemek a feladat szempontjainak a leírásai. Az értékelést végzőt arra kérjük, hogy fűzzön megjegyzéseket ezekhez a szempontokhoz. Akárcsak az összes pontozási stratégia esetén, létezik egy terület az általános megjegyzések számára. - - -

                        Akkumulatív pontozás Az elemek az alábbi három jellemzővel rendelkeznek: -

                          -
                        1. Az értékelési elemek LEÍRÁSA Ennek egyértelműen rögzíteni kell, hogy a feladatot mely szempont szerint értékeljük. Ha az értékelés minőségi, célszerű részletezni, mit tekintünk kiválónak, közepesnek, illetve gyengének.
                        2. Az értékelési elemek SKÁLÁJA Egy előre meghatározott számú skála áll rendelkezésre. Ezek az egyszerű igen/nem jellegű skálától a többpontos skálán keresztül a teljes százalékos skáláig terjednek. Minden elemnek megvan a maga skálája, amelynek igazodnia kell az adott elemhez kapcsolódó lehetséges variációk számához. Ne feledjük, hogy a skála NEM határozza meg az elem fontosságát az átlagos pontszám kiszámítása sroán, azaz egy kétpontos skálának azonos a "Hatása", mint a 100 pontosnak, ha a megfelelő elemek azonos súllyal szerepelnek... - -
                        3. Az értékelési elemek SÚLYA Alaphelyzetben az elemek azonos fontosságúak a feladat átlagos pontszámának a kiszámítása során. Ez megváltoztatható, ha a fontosabb elemekhez 1-nél nagyobb, a kevésbé fontosakhoz 1-nél kisebb súlyt rendelünk. A súlyok módosítása NEM befolyásolja a maximális pontszámot, azt az értéket ugyanis a csoporttársi feladathoz tartozó 'maximális pontszám' paraméter határozza meg. A súlyok kaphatnak negatív értékeket, ez kísérleti jelleggel alkalmazható.
                        -

                        Hibán alapuló pontozás Az elemek általában olyan tételeket vagy szempontokat fogalmaznak meg, amelyeknek meg kell jelennie a feladatban. Az értékelés ezen tételek vagy szempontok meglétén vagy hiányán alapszik. A tanárnak olyam pontszámtáblázatot kell beállítania, amely a javaslat szerinti pontokat adja akkor, ha minden tétel jelen van, ha egy hiányzik, ha kettő hiányzik stb. Ha egyes tételek fontosabbak, mint a másik, akkor ezekhez a tételekhez 1-nél nagyobb súlyt rendelhetünk. A kisebb tételekhez 1-nél kisebb súlyt rendelhetünk. A globális "hibaszám" a hiányzó tételek súlyozott összege. Az értékelést végző mindig végrehajthat kisebb módosításokat ezeken a javaslat szerinti pontokon. - -

                        Kritériumon alapuló pontozás Az elemek "szintre" vonatkozó megállapításokat tartalmaznak, melyekkel a feladat rangsorolható. A megállapítások lehetnek összegezendő jellegűek, illetve lehetnek önmagukban álló megállapítások. Az értékelést végzőnek kell eldöntenie, hogy melyik megállapítás illik jobban az egyes munkákra. A tanárnak minden kritériumra vonatkozó megállapítást egy javasolt pontszámhoz kell kapcsolnia. Ezeket általában el kell rendezni. Az értékelést végző végrehajthat kisebb módosításokat ezeken a javaslat szerinti pontokon.

                        - -

                        Rubrika alapú pontozás Hasonlít a kritériumon alapuló pontozáshoz, de itt egynél több kritériummal dolgozunk. A kritériumok számát a feladat paraméterei között adjuk meg. Az egyes kritériumokon belül legfeljebb öt "szintre" vonatkozó megállapítást tehetünk. Egy adott feladaton belül a szintek száma kritériumról kritériumra változhat. Egy-egy kritérium beállítása során egy üres "szintre" vonatkozó megállapítás jelzi a "szintre" vonatkozó megállapítás végét. Ennek megfelelően némely kritériumhoz két szint tartozhat, más esetben három szint, legfeljebb öt szint lehetséges. A kritériumok súlyozhatók. A szintekhez 0, 1, 2, legfeljebb 4 pont rendelhető. Az értékelés pontszáma ezen pontok súlyozott összege. -

                        \ No newline at end of file diff --git a/lang/hu/help/workshop/finalgrades.html b/lang/hu/help/workshop/finalgrades.html deleted file mode 100644 index 6ede5297aad..00000000000 --- a/lang/hu/help/workshop/finalgrades.html +++ /dev/null @@ -1,9 +0,0 @@ -

                        A végső pontszám

                        - -

                        Az ezen a képernyőn megjelenő táblázat a végső pontszámokat és azok megoszlását jeleníti meg, ahogyan azok a tanuló számára láthatók. Ha a táblázatból értékek hiányoznak, lehetőség van a "visszalépésre" és ezek hozzáadására. Voltaképpen két kiigazítást eszközölhetünk a végső pontszámon. - -

                          -
                        1. Ha a tanár pontszámát kell hozzáadni, akkor az adott munkát úgy pontozhatjuk, hogy áttérünk a tanár feladathoz tartozó kezelő képernyőjére és rákattintunk a "Tanuló értékelésre leadott munkái" pontra. Minden egyéb folyamatban lévő leadott munka pontozható. Ha ezzel elkészültünk, vigyük a feladatot vissza a 3. szakaszba és újból számítsuk ki a végső pontszámokat. Hasonlóképpen minden korábban nem pontozott értékelést pontozhatunk a Kezelő képernyőről. -
                        2. Ha eltérő súlyozási sémát szeretnénk használni, vigyük a feladatot vissza a 3. szakaszba, ahol rákattinthatunk a "Végső pontszámok kiszámítása" pontra és megadhatjuk az új súlyokat. A pontok újraszámítása után a feladatot át kell vinni a 4. szakaszba, ahol az új pontok elérhetővé válnak.
                        - -

                        diff --git a/lang/hu/help/workshop/graded.html b/lang/hu/help/workshop/graded.html deleted file mode 100644 index cc38f0031c2..00000000000 --- a/lang/hu/help/workshop/graded.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Pontozott csoporttársi feladat

                        - -

                        Ez tünteti fel a pontokat és a benyújtott munkához fűzött megjegyzéseket. Ha úgy akarjuk, válaszolhatunk erre az értékelésre, illetve (ebben a szakaszban) úgy is dönthetünk, hogy nem fogadjuk el azt. Ez utóbbi esetben a lap alján lévő mezőbe gépeljük be a választ, megindokolva, miért nem vagyunk elégedettek az értékeléssel. Ezután kattintsunk a lap alján lévő gombra és válasszuk a NO [NEM] opciót, ha a rendszer megkérdezi, elégedettek vagyunk-e ezzel az értékeléssel. - -

                        Ha viszont nincs kifogásunk az értékeléssel szemben, kattintsunk a lap alján lévő gombra, majd válasszuk a YES [IGEN] opciót, ha a rendszer megkérdezi, elégedettek vagyunk-e ezzel az értékeléssel. - -

                        diff --git a/lang/hu/help/workshop/grading.html b/lang/hu/help/workshop/grading.html deleted file mode 100644 index 05e1a04a5eb..00000000000 --- a/lang/hu/help/workshop/grading.html +++ /dev/null @@ -1,14 +0,0 @@ -

                        Csoporttársi feladatok pontozása

                        - -

                        A pontozás megkönnyítése érdekében egy-egy csoporttársi feladat egy sor értékelési "elemre" van felosztva. Az egyes elemeknek a feladat valamely konkrét szempontjára vonatkozik. Az értékelés fajtájától függően az alábbi teendőket hajtsa végre -

                          -
                        1. A megfelelő gombra kattintva vagy a legördülő menüből a megfelelő számot kiválasztva adjon meg egy pontszámot. - -
                        2. A Visszajelzés mezőben fűzzön magyarázatot az adott pontszámhoz. Ha úgy véli, hogy az indok egyértelmű, hagyja a szövegmezőt üresen. Ne feledje, hogy a tanár megtekintheti az értékelését és magyarázatot kérhet az adott pontszámmal kapcsolatosan, ha nem szerepel mellette magyarázat. -
                        - -

                        Másfajta értékeléseknél azt kell megállapítania, hogy bizonyos tételek megvannak-e, vagy hiányoznak, ismét mások esetén ki kell választania, hogy melyik megállapítás illik a legjobban az adott munkára. Mindkét feladatnál a pontokat némileg igazíthatja igényeinek megfelelően. - -

                        Ezen az űrlapon az utolsó mezőben általános megjegyzést fűzhet a munkához. Ebben kell az értékelést megindokolni. Az értékelés legyen udvarias és lehetőség szerint konstruktív. Értékelése megjelenik azon tanuló előtt, aki az adott munkát készítette.

                        Csak korlátozott idő, általában egy fél óra áll rendelkezésére arra, hogy meggondolva magát módosítson a pontokon vagy a megjegyzéseken. Ha ez az idő letelik, az a személy, akinek a munkáját értékelési, értesítést kap az értékelésről. Ebben a szakaszban megtekintheti az adott értékelést, de már nem módosíthat rajta. - -

                        diff --git a/lang/hu/help/workshop/gradingassessments.html b/lang/hu/help/workshop/gradingassessments.html deleted file mode 100644 index a11c34ce06a..00000000000 --- a/lang/hu/help/workshop/gradingassessments.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Tanulói értékelések pontozása

                        - -

                        Ezen a képernyőn adható meg a feladat leadási és értékelési szakaszában a tanuló által végzett értékelésre a tanár pontszáma. A pontozás viszonylag egyszerű, a 20-ból elért pontszám adható meg. A tanár a feladat megkezdése előtt a tanulónak adott utasítások lapaján eldöntheti, mit fog osztályozni és milyen viszonyított pontszámot fog adni. Magasabb szinten például a tanulótól kritikai megjegyzések várhatók el, közepes szinten elvárható tőle, hogy rámutasson az erős és gyenge pontokra, alacsonyabb szinten pedig előfordulhat, hogy a tanuló mindössze a hibák és pontatlanságok feltüntetésére kerít sort.

                        - -

                        Adott esetben a tanulóé előtt megjelenik a tanár saját értékelése, így könnyű megejteni az összehasonlítást. A tanár saját megjegyzése ennek megfelelően viszonyítási alapként használható.

                        - -

                        Az értékelésre adott pontszám a lap alján lévő megfelelő gomb megnyomásával történik. A pontozás ismétlésére a "szerkesztési időtartam" alatt van lehetőség. Amint az erre rendelkezésre álló idő letelik, a tanuló számára hozzáférhető válik a tanár megjegyzése. Ugyanakkor az "osztályozó pontszámot" a tanuló mindaddig nem látja, amíg a végső pontszám rendelkezésre nem áll. (Ennek az az oka, hogy az adott munkára kapott pontszám és ezen munka ÉRTÉKELÉSÉRE kapott pontszám összekeverhető, a feladat adott korai szakaszában a különbség esetleg kevéssé látszik világosan a tanuló számára.)

                        diff --git a/lang/hu/help/workshop/gradingstrategy.html b/lang/hu/help/workshop/gradingstrategy.html deleted file mode 100644 index 80c7fef5a39..00000000000 --- a/lang/hu/help/workshop/gradingstrategy.html +++ /dev/null @@ -1,20 +0,0 @@ -

                        Pontozási stratégia

                        - -

                        A csoportos feladat meglehetős rugalmasságot tesz lehetővé a használt pontozási sémát illetően. Ez lehet: - -

                          -
                        1. Nincs pontozás: Ilyen feladattípus esetén a tanár nem kíváncsi a tanulótól származó mennyiségi értékelésre. A tanulók megjegyzéseket fűznek a munkákhoz, de nem pontozzák őket. Ugyanakkor a tanár, ha kívánja, pontozhatja a tanulói megjegyzéseket. Ezek az "osztályozó pontszámok" képezik a tanulók végső pontszámának az alapját. Ha a tanár nem pontozza a tanulói értékeléseket, akkor a feladat semmilyen végső pontszámot nem kap. - -
                        2. Akkumulatív pontozás: Ez a pontozás alaptípusa. Ilyen feladattípus esetén az egyes értékelésekre adott pontszám egy sor "értékelési elemből" áll össze. Az egyes elemeknek a feladat valamely konkrét szempontjára kell vonatkozniuk. Jellemző esetben egy-egy feladathoz 5 - 15 megjegyzési pontozási elemet kell hozzárendelni, a tényleges szám a feladat méretétől és bonyolultságától függ. Csoporttársi feladat esetén megengedett egyetlen elem használata, és hasonló értékelés stratégiával ruházható fel, mint egy szokásos Moodle-feladat.

                          Az elemek az alábbi három jellemzővel rendelkeznek: -

                            -
                          1. Az értékelési elemek LEÍRÁSA. Ennek egyértelműen rögzíteni kell, hogy a feladatot mely szempont szerint értékeljük. Ha az értékelés minőségi, célszerű részletezni, mit tekintünk kiválónak, közepesnek, illetve gyengének. - -
                          2. Az értékelési elemek SKÁLÁJA. Egy előre meghatározott számú skála áll rendelkezésre. Ezek az egyszerű igen/nem jellegű skálától a többpontos skálán keresztül a teljes százalékos skáláig terjednek. Minden elemnek megvan a maga skálája, amelynek igazodnia kell az adott elemhez kapcsolódó lehetséges variációk számához. Ne feledjük, hogy a skála NEM határozza meg az elem fontosságát az átlagos pontszám kiszámítása sroán, azaz egy kétpontos skálának azonos a "Hatása", mint a 100 pontosnak, ha a megfelelő elemek aznos súllyal szerepelnek... - -
                          3. Az értékelési elemek SÚLYA. Alaphelyzetben az elemek azonos fontosságúak a feladat átlagos pontszámának a kiszámítása során. Ez megváltoztatható, ha a fontosabb elemekhez 1-nél nagyobb, a kevésbé fontosakhoz 1-nél kisebb súlyt rendelünk. A súlyok módosítása NEM befolyásolja a maximális pontszámot, azt az értéket ugyanis a csoporttársi feladathoz tartozó 'maximális pontszám' paraméter határozza meg. A súlyok kaphatnak negatív értékeket, ez kísérleti jelleggel alkalmazható.
                          - -
                        3. Hibán alapuló pontozás: Ilyen feladattípus esetén a leadott munka pontozása Igen/Nem skála alapján történik. A pontszámot a "pontszámtáblázat " határozza meg, amely meghatározza a "hibák" száma és a javasolt pontszám közötti összefüggést. Egy feladatnak lehet például hat olyan lényeges eleme, amelynek jelen kell lennie. A pontszámtáblázat megadja a javasolt pontokat, ha mind jelen van, ha egy hiányzik közülük, ha kettő stb. Az egyes elemekhez szükség esetén súlyozott tényezők rendelhetők, amennyiben egyes elemek fontosabbak, mint a többi. A "hibák" száma a meglévő elemek súlyozott összege. Alaphelyzetben minden elem súlya egy. A pontozási táblázat feltehetőleg nem lineáris, a javasolt pontok egy tíz elemesből álló feladat esetén például alakulhatnak ekként: 90%, 70%, 50%, 40%, 30%, 20%, 10%, 0%. Az értékelést végző az ajánlott pontszámokat felfelé vagy lefelé viheti akár 20%-kal ahhoz, hogy kialakítsa a leadott munka végső pontszámát. - -
                        4. Kritériumok szerinti pontozás: Ez a legegyszerűbben pontozható értékelésfajta (jóllehet, nem szükségszerűen a legegyszerűbb a kialakítása). A leadott munkák egy sor kritériumot tartalmazó állítás alapján kapnak pontot. Az értékelést végző kiválasztja, melyik megállapítás illik legjobban za adott munkára. A pontszám megállapítása a "kritériumtáblázat" alapján történik, amely minden egyes kritériumhoz megadja a javasolt pontszámot. Például kialakítható egy olyan feladat, amely, mondjuk, öt kritériumot magában foglaló megállapításra épül. Ez esetben az értékelést végzőknek egyes értékeléseikhez az öt megállapítás közül ki kell választaniuk egyet. A hibán alapuló pontozáshoz hasonlóan az értékelést végző az ajánlott pontszámot a végső pontszámhoz viszonyítva legfeljebb 20%-kal módosíthatja.
                        - -

                        diff --git a/lang/hu/help/workshop/gradingsubmissions.html b/lang/hu/help/workshop/gradingsubmissions.html deleted file mode 100644 index 374c52f76c7..00000000000 --- a/lang/hu/help/workshop/gradingsubmissions.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        A tanuló által leadott munka pontozása

                        - -

                        Általában a tanár értékeli a tanulók által leadott munkákat. Az értékeléseket a tanulók elolvashatják. Az értékelésnek visszajelzést kell tartalmazniuk munkájukra vonatkozóan.

                        -

                        Az értékelés során adott pontok kétféleképpen használhatók a végső pontszám kiszámítására. Egyrészt maga a pontszám felhasználható (súlyozott) komponensként a végső pontszám kiszámításánál. Másrészt ezek a pontok opcionálisan hozzáadhatók a csoporttársi értékeléshez és egyfajta "kiegyenlítőként" használhatók, ha úgy tűnik, a tanulói értékelések túl magas vagy túl alacsony értékeket mutatnak. -

                        diff --git a/lang/hu/help/workshop/includeself.html b/lang/hu/help/workshop/includeself.html deleted file mode 100644 index 3cfbea8bac0..00000000000 --- a/lang/hu/help/workshop/includeself.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Saját munka hozzáadása a feladathoz

                        - -

                        A csoporttárs által pontozott feladat opcionálisan tartalmazhatja a tanuló saját munkáját az egyes tanulók által pontozandó munkák között. Másként fogalmazva, ha például az értékelést végző csoporttársak száma 5, akkor minden egyes tanulótól 6 munka pontozását kérjük, melyek közül az egyik az ő saját munkájuk. - -

                        Ha az értékelést végző csoporttársak száma nulla és a saját munka hozzáadásának opciója be van kapcsolva, akkor a feladat saját pontozású feladattá válik. Ebben választhatóan szerepelhet a tanári pontozás attól függően, hogy az adott opció be van-e állítva. - -

                        diff --git a/lang/hu/help/workshop/includeteachersgrade.html b/lang/hu/help/workshop/includeteachersgrade.html deleted file mode 100644 index 13428d87666..00000000000 --- a/lang/hu/help/workshop/includeteachersgrade.html +++ /dev/null @@ -1,4 +0,0 @@ -

                        Tanári pontszám hozzáadása

                        - -

                        Ezzel az opcióval úgy adhatunk hozzá a leadott munkára vonatkozó tanári értékelést, mintha az csoporttársi értékelés volna. Ha ezt az opciót IGEN-re állítjuk, akkor a tanár értékeléseket a rendszer voltaképpen kétszer számolja, először szokásos tanári értékelésként, másodszer pedig a csoporttársi értékelésekhez hozzáadva. A tanár akkor tarthat erre igényt, ha (a) az egyes leadott munkákhoz tartozó csoporttársi értékelések száma alacsony, vagy (b) ha megpróbálja kiegyensúlyozni a csoporttársi értékeléseket, ha azok túlzottan elfogultnak vagy megbízhatatlannak mutatkoznak.

                        - diff --git a/lang/hu/help/workshop/index.html b/lang/hu/help/workshop/index.html deleted file mode 100644 index a397c0c8e97..00000000000 --- a/lang/hu/help/workshop/index.html +++ /dev/null @@ -1,31 +0,0 @@ -

                        Műhelymodul

                        - diff --git a/lang/hu/help/workshop/leaguetable.html b/lang/hu/help/workshop/leaguetable.html deleted file mode 100644 index 81cb2d5247b..00000000000 --- a/lang/hu/help/workshop/leaguetable.html +++ /dev/null @@ -1,6 +0,0 @@ -

                        Leadott munkák ligatáblázata

                        - -

                        A ligatáblázat a feladat során elkészült legjobb leadott munkák listáját tartalmazza. A bejegyzések számát állíthatjuk 0-ra, egy 1 és 20 vagy 50 közötti számra, illetve "Összes"-re. 0 esetén a ligatáblázat nem jelenik meg. Ha a számot 1 és 20 vagy 50 közöttire állítjuk, akkor a leadott munkák száma válik láthatóvá, például ha a számot 10-re állítjuk, akkor a tíz legjobb leadott munka lesz látható. Az "Összes" esetén a táblázat felsorolja az összes leadott munkát.

                        - -

                        A második opcióval azt állíthatjuk be, hogy megjelenljen-e a tanulók neve a táblázatban. Ez az opció a táblázat tanulói megjelenítését szabályozza, a tanár mindig látja a tanulók nevét.

                        - diff --git a/lang/hu/help/workshop/managing.html b/lang/hu/help/workshop/managing.html deleted file mode 100644 index c1530a68cfe..00000000000 --- a/lang/hu/help/workshop/managing.html +++ /dev/null @@ -1,38 +0,0 @@ -

                        Műhelyfeladat kezelése

                        - -

                        A műhelyfeladat vagy csoportos feladat bonyolultabb, mint a szokásos feladatok. A feladat végrehajtása több lépésből vagy szakaszból áll. Ezek a következők:

                        - -
                          -
                        1. Feladat kijelölése A feladat értékelését egy sor értékelési elemre kell bontani. Ennek eredményeként a feladat pontozása kevésbé lesz önkényes és a tanulókat egyfajta kerettel látja el az értékelés elvégzéséhez. Az értékelési elemek összeállítása és ennek megfelelően a pontozási űrlap elkészítése a tanár feladata. (A részleteket lásd az adott oldalon.)

                          - -

                          Ha megtörtént az értékelési elemek összeállítása, a tanár általában néhány mintamunkát ad közre. Ezek olyan gyakorló anyagok, amelyekkel a tanulók saját munkájuk elkészítése előtt gyakorolhatják az értékelést. Mielőtt azonban a feladatot a tanulók megkapják, ezeket a mintamunkákat a tanárnak értékelnie kell. Ennek köszönhetően a tanár "mintaválaszokhoz" jut ezen példák tanulói értékelésének felülvizsgálata során (melyre a következő lépésben kerül sor).

                          - -

                          A tanár a mintamunkákat választhatóan adja közre. Előfordulhat, hogy bizonyos feladatok esetén ez nem is helyénvaló.

                          - -
                        2. Tanulói leadott munkák engedélyezése A feladat hozzáférhető a tanulók számára. Ha a tanár készített mintamunkákat, a tanulóknak ezek közül néhányat értékelni kell. (Az értékelések számát a feladat létrehozásakor határozza meg.) Ha egy tanuló elkészítette az előírt számú értékelést, leadhatja a saját munkáját. Ha egy feladathoz nincs példa, a tanulók szabadon haladéktalanul benyújthatják munkájukat.

                          - -

                          Ha a feladatot a leadott munkák fázisában hagyjuk, akkor összegyűjthetjük a leadott munkákat. Ha ezt követően a következő két fázisban kiadjuk őket, jobban fogjuk tudni elosztani a munkát. Ha viszont a feladatot az (engedélyezett) "beállítási" fázisból egyből a "munkaleadás és értékelés engedélyezése" fázisba tesszük, akkor a munkájukat korán leadó tanulók inkább a korábban leadott munkákat fogják értékelni, míg a munkájukat később leadó tanulók inkább a kései leadott munkákat fogják értékelni. Ha egy "késleltetést" iktatunk be a csoporttársi értékelés megkezdésébe, akkor ez a probléma nagy mértékben kiküszöbölhető.

                          Ha egy tanuló lead egy munkát, a tanár - ha szükséges - értékelheti a munkáját. Ez az értékelés beszámítható a tanuló végső pontszámába. Az értékelések egyaránt elvégezhetők a munka leadási és értékelési szakaszában. Amennyiben a tanári értékelésre a végső pontszám kiszámítása előtt kerül sor, úgy annak eredménye felhasználható az adott számítás során.

                          - -
                        3. Tanulói munkaleadás és értékelés engedélyezése Ha a feladat csoporttársi értékelést tartalmaz, akkor azoknál a tanulóknál, akik munkát adtak le, megjelennek más tanulók értékelésre váró munkái. Azok a tanulók, akik még nem adtak le munkát, most már leadhatják munkájukat (de nem látják más tanulók értékelendő munkáit). Ebben a fázisban a munkák leadása, a munkák újbóli leadása, valamint a leadott munkák és az újból leadott munkák értékelése egyszerre történhet.

                          - -

                          Előfordulhat, hogy a tanár a leadott munkát és annak csoporttársi értékelését két külön szakaszra kívánja bontani, összevárva, amíg minden tanuló leadja a munkáját, mielőtt áttér a csoporttársi értékelési szakaszára. Ilyen esetben erre a fázisra egyáltalán nem kerül sor, a feladat a "leadott munka engedélyezése" szakaszból közvetlenül az "Értékelések engedélyezése" szakaszba kerül. Ezáltal a tanár határidőt szabhat meg a leadandó munkákra, a feladat az adott időpontban átkerül az "Értékelések engedélyezése" szakaszba.

                          - -

                          Ha viszont a tanár nem kívánja a feladatot ilyen mereven megosztani, akkor a feladat ezt a szakaszt használja. Ha a tanár lehetővé teszi, hogy a leadott munka és az értékelés együtt jelenjen meg, akkor figyelembe kell vennie a kijelölési szint túllépésének EGY-re (esetlegesen KETTÕ-re) való beállítását annak érdekében, hogy a kijelölések simán menjenek végbe (a további részleteket l. az adminisztrátori oldanon). Ne feledjük, hogy ennek eredményeként egyes leadott munkák többszöri (csoporttársi) értékelésre kerülhetnek, mások pedig kevesebbszer, mint a leadott munkák többsége.

                          - -

                          AMikor a tanuló elvégzett egy értékelést, csoporttársai megtekinthetik. Az a tanuló, aki leadta a munkát, megjegyzést tehet az értékelésre vonatkozóan, amennyiben ezt az opciót bejelölték az adott feladatnál. Ha kívánja, a tanár pontozhatja ezeket a csoporttársi értékeléseket, az így kapott pontok pedig átvihetők a tanulók végső pontszámába (de erre sok esetben nincs igazán szükség, lásd a végső pontszám kiszámításáról szóló részt).

                          - -
                        4. Tanulói értékelés engedélyezése Ebben a szakaszban folytatódnak a csoporttársi értékelések, de a tanulók semmi olyan munkát nem adhatnak le, amely ismételt leadást tartalmaz. Azok a tanulók, akik nem adtak le munkát, arról értesülnek, hogy munka leadására nincs tovább lehetőség, és nem tekinthetnek meg semmilyen (csoporttárs által) értékelésre leadott munkát.

                          - -

                          A tanár, ha kívánja, pontozhatja a csoporttársi értékeléseket, és ezek eredményét átviheti a tanulók végső pontszámába (de erre sok esetben nincs igazán szükség, lásd a végső pontszám kiszámításáról szóló részt).

                          - -
                        5. Végső pontszám kiszámítása A határidő lejárta után a tanár a feladatot a következő szakaszba helyezi át, ahol már nincs lehetőség arra, hogy a tanulók további értékelést végezzenek. A tanár, ha kívánja, befejezheti a példákon végrehajtott értékelések pontozását, valamint a tanulói leadott munkák pontozását. Ugyancsak pontozhatja a tanulók által elvégzett csoporttársi értékeléseket. Erre igazából nincs szükség, mivel ha kellő számú értékelés áll rendelkezésre az egyes leadott munkákhoz, akkor az egyes tanulók "pontozási teljesítménye" meghatározható a relatív ponteredmények alapján.

                          - -

                          A pontozás befejezését követően a tanár kiszámítja a tanulóvégső pontszámát. A végső pontszám rendszerint három összetevőből alakul ki, a tanárnak a tanuló munkájára adott pontszámából, a tanuló munkájára adott csoporttárs pontszám átlagából, valamint a tanulók pontozási teljesítményéből. Az utóbbi magában foglalja a tanár által a tanulók megjegyzésére adott átlagos "osztályozó pontszámot". Erre a három összetevőre a tanár súlyokat állapít meg, mielőtt sor kerülne a végső pontszám kiszámítására.

                          - -
                        6. Végső pontszám kijelzése Elérkezik a feladat végső szakasza, mely során a tanulók megtekinthetik végső pontszámukat. A tanár, ha kívánja, visszamehet a feladaton és állíthat például a végső pontszám kiszámításához használt súlyokon, majd ezt követően a tanulóknak megmutathatja a módosított pontokat.

                          - -

                          A tanuló (és a tanár) ugyancsak megtekintheti a tanulók leadott munkájának a "ligatáblázatát". Itt a megjelenítés a pontszámok sorrendjében történik, a legjobb leadott munka áll az első helyen. A leadott munkára adott pontszám a tanár által adott pontszám és (ha vannak) a csoporttársi pontok átlaga. Az alkalmazott súlyozás az előző szakaszban alkalmazottal megegyező súlyozás.

                          -
                        - -

                        A feladat bármely szakaszában a tanár megnyithatja az "Adminisztrátor" oldalt. Ezen az oldalon látható a feladat mindenkori állapota. Felsorolja a tanár példaként leadott munkáit (ha vannak), a tanulók értékelését (a tanár példáira, saját munkájukra és egyéb tanulók leadott munkájára vconatkozóan), valamint a tanulók leadott munkáit. A tanár ezt az oldalt használhatja a leadott munkák értékelésére és újbóli értékelésére, az értékelések pontozására és újbóli pontozására, itt törölhet leadott munkákat és értékeléseket, és általában véve ezen az oldalon követheti nyomon a feladat menetét.

                        - diff --git a/lang/hu/help/workshop/mods.html b/lang/hu/help/workshop/mods.html deleted file mode 100644 index 4c9ab84b42b..00000000000 --- a/lang/hu/help/workshop/mods.html +++ /dev/null @@ -1,5 +0,0 @@ -

                         Műhely

                        -
                          -

                          A műhely egyfajta csoporttársi értékelő tevékenység, melyhez rendkívül sok opció tartozik. Lehetővé teszi a résztvevők számára egymás projektjének és mintaprojekteknek egy sor különféle módon való értékelését. Emellett többféleképpen koordinálja ezen értékelések összegyűjtését és szétosztását. A Műhely modult Ray Kingdon készítette. -

                          -
                        diff --git a/lang/hu/help/workshop/nassessmentsofstudentsubmissions.html b/lang/hu/help/workshop/nassessmentsofstudentsubmissions.html deleted file mode 100644 index f74b6b54bf5..00000000000 --- a/lang/hu/help/workshop/nassessmentsofstudentsubmissions.html +++ /dev/null @@ -1,4 +0,0 @@ -

                        Tanulói leadott munkához tartozó értékelések száma

                        - -

                        Ez a szám határozza meg, hogy a tanulókat megkérjük-e a tanulói munka csoporttársi értékelésére. Ha ez a szám nem nulla, akkor minden tanuló ennyi munkát kap a többi tanulótól. Értékelés után a munka szerzője megnézheti a megjegyzéseket és esetlegesen a csoporttárs által adott pontszámot is. (A csoporttársi értékelés folyamata lehet ismétlődő is az "Értékelés elfogadása" opció beállításától függően.) Ha kívánja, a tanár is pontozhatja ezeket az értékeléseket, és azok a pontok felhasználhatók a végső érdemjegyek kiszámítása során. A tanuló megtekintheti az értékeléseire adott tanári megjegyzéseket és pontszámokat, ha vannak. -

                        diff --git a/lang/hu/help/workshop/nassessmentsofteachersexamples.html b/lang/hu/help/workshop/nassessmentsofteachersexamples.html deleted file mode 100644 index b4889b6992b..00000000000 --- a/lang/hu/help/workshop/nassessmentsofteachersexamples.html +++ /dev/null @@ -1,4 +0,0 @@ -

                        Tanári példákhoz tartozó értékelések száma

                        - -

                        Ez a szám határozza meg, hogy a tanulókat megkérjük-e valamely példa értékelésére, mielőtt leadnák saját munkájukat. Ha ez az érték nem nulla, akkor az egyes tanulóknak egy sor példamunkát értékelni kell. Saját munkájukat mindaddig nem adhatják le, amíg ezek értékelését el nem végezték. A tanár szükség esetén pontozhatja ezeket az értékeléseket, a pontokat pedig beszámíthatja a tanulók végső pontszámába. A tanár ezen értékelésekkel kapcsolatos megjegyzései elérhetőek a tanuló számára, de a tanár "osztályozó pontszámait" mindaddig nem látja a tanuló, amíg le nem telt a munka leadási határideje. -

                        diff --git a/lang/hu/help/workshop/nelements.html b/lang/hu/help/workshop/nelements.html deleted file mode 100644 index d7526de0ae2..00000000000 --- a/lang/hu/help/workshop/nelements.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Megjegyzések, elemek, hibák vagy kritériumok száma

                        - -

                        Az itt megadott szám határozza meg azt, hogy hány tételt veszünk figyelembe az értékelés során. A pontozási stratégiától függően ez a szám adja meg az értékelés során figyelembe veendő megjegyzések, értékelési elemek, hibák vagy kritériumok számát. Jellemző esetben egy-egy feladathoz 5 - 15 megjegyzési pontozási elemet kell hozzárendelni, a tényleges szám a feladat méretétől és bonyolultságától függ. - -

                        Minden értékeléshez tartozik egy Általános megjegyzések elnevezésű mező. A "pontozás nélküli" feladat esetén az itt megadott érték határozza meg a kiegészítő megjegyzésekhez tartozó területek számát. Ez lehet nulla, ilyenkor az értékelés eredményei csak egyetlen általános megjegyzések területtel rendelkeznek. - -

                        diff --git a/lang/hu/help/workshop/numberofassessors.html b/lang/hu/help/workshop/numberofassessors.html deleted file mode 100644 index 08f6812ecc5..00000000000 --- a/lang/hu/help/workshop/numberofassessors.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Értékelést végző csoporttársak száma

                        - -

                        A csoporttársak által pontozott feladatokhoz általában 3 - 8 értékelő csoporttárs kapcsolódik. Azaz a csoporttársi pontozási szakaszban minden tanulónak ennyi, az osztályban lévő más tanulóktól származó munkát kell pontozni. Minél nagyobb a feladat annak tartalmát illetően, annál kisebb lesz ez a szám, ellenkező esetben a pontozás tanulókra nehezedő terhe túl nagy lesz. Ugyanakkor a tanulóknak elegendő példát kell látni ahhoz, hogy lássák, mitől lesz egy munka jó vagy rossz. Továbbmenve, a tanuló pontozási teljesítményének az értelmes értékeléséhez hozzátartozik, hogy minél több csoporttárs pontoz, annál jobb. Ez a teljesítmény feltehetőleg nem lesz mérvadó, ha csak három vagy négy pontozást készít el egy-egy tanuló. - -

                        Feltéve, hogy elegendő mennyiségű munkát adtak le (10-et vagy annál többet), a rendszer minden tanulóhoz legalább egy "jó" és legalább egy "gyenge" munkát fog hozzárendelni. Ez viszont csak akkor hajtható végre, ha a tanár MÉG a munka (csoporttársi) pontozásra való kijelölése ELÕTT elvégezte a pontozást. Másrészről a tanárnak NEM kell minden munkát pontoznia, egy minta is elegendő. Emellett a tanári pontozásnak NEM szükségszerű a végleges pontozásnak lenni, a célnak egy előzetes pontozás is megfelel. Tekintetbe kell ugyanakkor venni azt, hogy ha be van kapcsolva a tanári pontozást kijelző opció, akkpr ezeket a pontokat a tanulók látni fogják a leadott munka szakaszának a végén.

                        A csoporttársi értékelők száma lehet nulla is. Ebben az esetben a feladat vagy önpontozásos feladat lesz, ha ez az opció be van kapcsolva, vagy pedig szokásos tanár pontozta feladat. - -

                        diff --git a/lang/hu/help/workshop/overallocation.html b/lang/hu/help/workshop/overallocation.html deleted file mode 100644 index 7d51969388f..00000000000 --- a/lang/hu/help/workshop/overallocation.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Aránytalansági szint

                        - -

                        Ez a szint határozza meg azt, hogy a csoporttársi értékelések kiosztása az osztályban kiegyensúlyozott volt-e, avagy sem. A "kiegyensúlyozott" itt azt jelenti, hogy az egyes tanulói leadott munkák hányszor vannak kijelölve (csoporttársi) értékelésre. Ha az aránytalansági szint nullára (ZERO) van állítva, akkor az összes leadott munka azonos mennyiségben van kiadva, vagyis a kijelölés kiegyensúlyozott. Amikor a szint 1-re (ONE) van állítva, akkor a leadott munkák egy része a többi kijelöléshez képest eggyel többször lehet kiadva (ebből adódóan a leadott munkák egy része eggyel kevesebbszer lehet kiadva, mint a többi), vagyis a kijelölés nem kiegyensúlyozott. Hasonlóképpen ha a szint 2-re (TWO) van állítva, akkor nagyobb kiegyensúlyozatlanságot engedélyezünk.

                        - -

                        Ideális esetben minden csoporttársi értékelésnek kiegyensúlyozottnak kell lenni. Ugyanakkor ennek az a hátránya, hogy néhány tanuló esetén nem áll rendelkezésre az értékelésre leadott teljes munkamennyiség mindaddig, amíg az utolsó tanuló is le nem adta a munkáját. ONE [EGY]-re beállított aránytalansági szint esetén a legtöbb tanuló azt tapasztalja, hogy esetében megvan az értékelésre leadott teljes munkamennyiség és nem kell várniuk a kései leadott munkákra. A későn leadott munkák mennyisége még kevesebb akkor, ha a szint TWO [KETTÕ]-re van beállítva.

                        - -

                        Így egy csoportos feladatnál, ahol a csoporttársi értékelések száma 5-re van állítva, nincs gond abban az esetben, ha a leadott munkák egy része négyszer vesz részt (csoporttársi) értékelésben, másik része 5-ször, a többi pedig 6-szor szerepel, így a feladat értékelése zökkenőmentesebben zajlik és a tanulóknak nem kell annyit várni (ha egyáltalán erre szükség lesz) arra, hogy a többiek leadják a munkát, ha az aránytalansági szint az alapértelmezett nulla értékről egyre van állítva.

                        diff --git a/lang/hu/help/workshop/resubmit.html b/lang/hu/help/workshop/resubmit.html deleted file mode 100644 index cfcb364f8d2..00000000000 --- a/lang/hu/help/workshop/resubmit.html +++ /dev/null @@ -1,11 +0,0 @@ -

                        Feladatok ismételt leadása

                        - -

                        Alaphelyzetben a tanulóknak nincs lehetőségük arra, hogy a feladatukat megismételjék, csakis egy leadott munkára van lehetőségük.

                        - -

                        Ha ezt az opciót bekapcsoljuk, akkor a tanulók az adott feladat kapcsán több munkát is leadhatnak. Ez olyankor lehet hasznos, ha a tanár arra kívánja ösztönözni a tanulókat, hogy egy ismétléses folyamat révén fejlődést érjenek el.

                        - -

                        A leadott munka értékelése az adott munkához kötődő értékelések számán alapszik. Így egy adott tanuló újonnan leadott munkái feltehetőleg szerepelnek majd a csoporttársi értékelésben. Ha viszont egy tanuló egy sor munkát gyors egymásutánban ad le, akkor bármelyik azonos eséllyel vesz részt az értékelésben. A feladat NEM helyezi előbbre a legújabban leadott munkát. - -

                        A tanuló végső pontszámának a kiszámítása során a legmagasabb pontszámot elérő leadott munka lesz figyelembe véve. Itt a legmagasabb pontszám a tanári pontszám és a csoporttársi pontszám súlyozott kombinációjaként áll elő, amennyiben mindkettő rendelkezésre áll. - -

                        diff --git a/lang/hu/help/workshop/selfassessment.html b/lang/hu/help/workshop/selfassessment.html deleted file mode 100644 index 984b553d0f3..00000000000 --- a/lang/hu/help/workshop/selfassessment.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Önértékelés

                        - -

                        A csoporttárs által pontozott feladat opcionálisan tartalmazhatja a tanuló saját munkáját az egyes tanulók által pontozandó munkák között. Ez azt jelenti, hogy ha például az egyes tanulók által értékelendő munkák száma 5, akkor minden egyes tanulónak 6 darab munkát kell értékelnie, melyek egyike a saját munkája lesz. - -

                        Ha az egyes tanulók által értékelendő munkák száma 0 és az önértékelési opció be van kapcsolva, akkor a feladat önpontozásos feladat lesz. Ebbe - a tanár döntésétől függően - beletartozhat a tanári pontozás. - -

                        diff --git a/lang/hu/help/workshop/showinggrades.html b/lang/hu/help/workshop/showinggrades.html deleted file mode 100644 index fa2027aeb9e..00000000000 --- a/lang/hu/help/workshop/showinggrades.html +++ /dev/null @@ -1,6 +0,0 @@ -

                        Pontok kijelzésének elrejtése

                        - -

                        Ez az opció csoportos feladatnál használható, ahol a tanulók között egyetértésnek kell lennie minden értékelést illetően. Az alapbeállítás szerint azon tanulónak, akinek a munkáját értékelik, látnia kell mind a megjegyzéseket, mind a csoporttársi értékelések pontszámait. Ez több vitára adhat okot, mint ha az opció be van kapcsolva és látszanak az értékelések, de nincsenek feltüntetve a pontok. - -

                        Ha ez az opció úgy van beállítva, hogy a csoporttársi értékelés pontszámai ne látsszanak, akkor a pontok akkor válnak láthatóvá, ha sikerült egyezségre jutni. Ez az egyezség persze csak a megjegyzésekre vonatkozik. Ha ezek a megjegyzések nem kellően egyeznek a pontokkal, akkor az a tanuló, akinek a munkáját értékelik, kifogással élhet a tanár felé. -

                        diff --git a/lang/hu/help/workshop/specimen.html b/lang/hu/help/workshop/specimen.html deleted file mode 100644 index 62cdfc4cf43..00000000000 --- a/lang/hu/help/workshop/specimen.html +++ /dev/null @@ -1,5 +0,0 @@ -

                        Minta értékelő űrlap

                        - -

                        Ez az oldal a feladat pontozására használt tényleges űrlap részleteit mutatja. Ezt használja a tanár a munkánk pontozására. Emellett csoporttársi feladatértékelésnél magunk is ugyanezt az űrlapot használjuka leadott munkák pontozására.

                        - -

                        Ne feledjük, hogy bár módosíthatjuk az űrlapon lévő pontokat, ezeket a módosításokat a rendszer NEM menti el. Ez egyszerűen egy mintaűrlap, de mind a tanár, mind magunk egy ehhez hasonlót fogunk használni a feladat során.

                        diff --git a/lang/hu/help/workshop/submissionofexamples.html b/lang/hu/help/workshop/submissionofexamples.html deleted file mode 100644 index 3e8fb998822..00000000000 --- a/lang/hu/help/workshop/submissionofexamples.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Tanári példa leadása

                        - -

                        Ha a tanulóknak saját munkájuk leadása előtt bizonyos példamunkákat kell értékelniük, akkor a tanár ezt az ugrópontot használhatja az adott munka leadására. A tanár tetszőleges számú munkát leadhat. Ha a munkák száma nagyobb, mint az egyes tanulók által értékelendő példamunkáké, akkor a munka kijelölése véletlenszerű, de kiegyensúlyozott módon történik. A rendszer megkísérli biztosítani azt, hogy minden példát a tanulók ugyanannyiszor kapjanak meg. A kijelölés annyiban véletlenszerű, hogy ha - mondjuk - tíz példát adnak le, akkor kevéssé valószínű, hogy az első tanuló az 1., 2. és 3. leadott munkát kapja értékelésre.

                        - -

                        Ha a tanár a feladat megfelelő paraméteréhez mérten kevesebb példát ad le, akkor a tanulók csak az adott példákat kapják értékelésre.

                        - -

                        Miután a tanár leadta a példákat, a tanár szempontjából érdemes a példát értékelni, még ha csak részlegesen is. Az ilyen értékelés a tanárra tartozik és a tanuló számára a feladat során SOHA nem válik láthatóvá. Ugyanakkor hasznosnak bizonyul, ha a tanár a példa tanulói értékelésére kíváncsi. A tanulói értékelés pontozása során a tanár saját értékelését a lap tetején, a tanuló ugyanazon munkára vonatkozó értékelését pedig a lap alján látja. A "plusz" értékelés hivatkozásként és a példában lévő fontosabb pontok emlékeztetőjeként szolgál.

                        diff --git a/lang/hu/help/workshop/teachersgradings.html b/lang/hu/help/workshop/teachersgradings.html deleted file mode 100644 index 0e9c9d15627..00000000000 --- a/lang/hu/help/workshop/teachersgradings.html +++ /dev/null @@ -1,7 +0,0 @@ -

                        Tanári pontok kijelzése

                        - -

                        A csoporttárs által pontozott feladat opcionálisan elérhetővé teheti a tanári megjegyzéseket és a pontokat a tanulók számára. Szükség esetén ezek a munka leadási határideje után jelennek meg, vagy ennél később, ha a pontok ekkor még nem állnak rendelkezésre. A tanár megjegyzései és a pontok a tanuló segítségére lehetnek, ha saját (csoporttársi) értékelésüket készítik el más tanuló munkájával kapcsolatosan. - -

                        Ne feledjük, hogy még ha a csoporttársi pontozás névtelenül történik is, a tanári pontok a tanár nevével és, ha van, fényképével együtt mindig láthatóak a tanulók számára. - -

                        diff --git a/lang/hu/help/workshop/ungradedassessments_student.html b/lang/hu/help/workshop/ungradedassessments_student.html deleted file mode 100644 index 77d960b8d3a..00000000000 --- a/lang/hu/help/workshop/ungradedassessments_student.html +++ /dev/null @@ -1,4 +0,0 @@ -

                        Nem pontozott értékelések (Tanulók leadott munkái)

                        - -

                        Tanulói leadott munka értékelése Ezek olyan csoporttársi értékelések, amelyeket a tanulók egymás munkájáról készítenek. Általában véve ezeket az értékeléseket a tanárnak NEM szükséges pontoznia. Feltéve, hogy minden tanulói leadott munkát mintegy ötször értékelik, a rendszer elfogadható becslést tud adni a tanulók egyéni értékelési teljesítményéről. Ha alacsony a csoporttársi értékelések száma, előfordulhat, hogy a tanár pontozni kívánja ezeket az értékeléseket. Az értékelésekre adott bármely pont figyelembe vehető a tanuló végső pontszámának a kiszámításánál. - diff --git a/lang/hu/help/workshop/ungradedassessments_teacher.html b/lang/hu/help/workshop/ungradedassessments_teacher.html deleted file mode 100644 index e1ce28cae9f..00000000000 --- a/lang/hu/help/workshop/ungradedassessments_teacher.html +++ /dev/null @@ -1,6 +0,0 @@ -

                        Nem pontozott értékelések (Tanári leadott munkák)

                        - -

                        Tanári leadott munkák értékelése Ezek azon példamunkák értékelései, amelyeket a tanulóknak kellhet a feladat kapcsán azt megelőzően elvégezni, hogy leadnák saját munkájukat. Ezeket az értékeléseket általában véve a tanárnak kell pontoznia. Az értékelések megmutatják, hogy a tanulók értik-e a feladatot, és várhatóan hasznos visszajelzést adnak a tanárnak arra vpnatkozóan, hogy szükség van-e a feladattal kapcsolatosan valamilyen helyesbítő vagy finomító célzatú intézkedésre. Ezen túlmenően pontozott értékelés esetén a tanár megjegyzései a tanuló rendelkezésére állnak. Ezek értékes útmutatást jelenthetnek a tanuló számára a feladat keretében a saját munkájuk elkészítése során.

                        - -

                        Ezeket az értékeléseket nem szükséges pontozni. Ha egy példát egy tanuló nem értékel, attól még az adott tanuló leadhatja a saját munkáját. Ugyanakkor ajánlatos a fenti okok miatt legalább az értékelésekből egy mintát lepontozni.

                        - diff --git a/lang/hu/help/writing.html b/lang/hu/help/writing.html deleted file mode 100644 index 26ae6dca83f..00000000000 --- a/lang/hu/help/writing.html +++ /dev/null @@ -1,15 +0,0 @@ -

                        Írás

                        - -

                        Ha mások által olvasandó szöveget írunk, igyekezzünk azt közvetlenül az olvasóközönségnek írni.

                        - -

                        Gondolatainkat a lehető legvilágosabban és legegyszerűbben fejtsük ki a félreértések elkerülése végett. Az egyik eszköz erre, ha rövid szavakat használunk ott, ahol hosszabb kifejezések is szerepelhetnének.

                        - -

                        A fórumon mindenképpen segít, ha az üzeneteinket rövidre és a tárgyra vonatkozóra szabjuk. A hosszú és szerteágazó hozzászólás helyett, melyben különféle szempontokat vitatunk meg, valószínűleg jobb, ha néhány rövid üzenetet fogalmazunk meg (ezek akár különféle fórumokhoz is tartozhatnak). - -

                        A szöveget addig fogalmazzuk újra és újra, amíg ki nem alakul a helyesnek vélt változat. Még fórumüzenetek esetén is rendelkezésünkre áll maxeditingtime/60) ?> perc az üzenet feladása után arra, hogy szükség esetén korrigáljuk.

                        - -

                        Másokhoz írt válasz esetén próbáljunk érdekes kérdéseket feltenni nekik. Ezzel mind magunk, mind a másik személy számára esélyt adunk a megbeszélés folyamán arra, hogy gondolkozzunk (és tanuljunk!).

                        - - -

                        További tájékoztatás az kérdésfeltevésről

                        -

                        További tájékoztatás az olvasásról

                        diff --git a/lang/hu/hotpot.php b/lang/hu/hotpot.php deleted file mode 100644 index d8aba64c1f5..00000000000 --- a/lang/hu/hotpot.php +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/lang/hu/install.php b/lang/hu/install.php deleted file mode 100644 index 49894abcd80..00000000000 --- a/lang/hu/install.php +++ /dev/null @@ -1,102 +0,0 @@ -
                        moodleadmin

                        -Ezzel az adminisztrátori ugrópontok a Moodle-ban rendbe tehetõk.'; -$string['caution'] = 'Vigyázat'; -$string['chooselanguage'] = 'Válasszon nyelvet'; -$string['compatibilitysettings'] = 'PHP-beállításainak ellenõrzése ...'; -$string['configfilenotwritten'] = 'A telepítõ kóddal nem lehetett a megadott beállításaival létrehozni a config.php állományt, feltehetõleg azért, mert a Moodle könyvtára nem írható. Az alábbi kódot átmásolhatja a Moodle gyökérkönyvtárába egy config.php nevû állományba.'; -$string['configfilewritten'] = 'a config.php létrehozása sikerült'; -$string['configurationcomplete'] = 'Beállítás kész'; -$string['database'] = 'Adatbázis'; -$string['databasesettings'] = 'Most be kell állítania azt az adatbázist, ahol Moodle-adatainak többségét tárolni fogja. Az adatbázisnak már léteznie kell, a hozzá tartozó azonosítóval és jelszóval együtt.
                        -

                        -Típus: mysql vagy postgres7
                        -Gazdagép: pl. localhost vagy db.isp.com
                        -Név:az adatbázis neve, pl. moodle
                        -Felhasználó:az Ön adatbázishoz használt azonosítója
                        -Jelszó: az Ön adatbázishoz használt jelszava
                        -Táblázat elõtagja: opcionális elõtag az összes táblanévhez '; -$string['dataroot'] = 'Adatkönyvtár'; -$string['datarooterror'] = 'A megadott \'Adatkönyvtár\' nem létezik vagy nem sikerült létrehozni. Módosítsa az útvonalat vagy hozza létre a könyvtárat.'; -$string['dbconnectionerror'] = 'Nem sikerült a megadott adatbázishoz csatlakozni. Ellenõrizze adatbázisának beállításait.'; -$string['dbcreationerror'] = 'Hiba az adatbázis létrehozása közben. A megadott beállításokkal nem lehetett létrehozni az adatbázis nevét.'; -$string['dbhost'] = 'Gazdagép szervere'; -$string['dbpass'] = 'Jelszó'; -$string['dbprefix'] = 'Táblázat elõtagja'; -$string['dbtype'] = 'Típus'; -$string['directorysettings'] = '

                        Hagyja jóvá a Moodle telepítésének helyét.

                        - -

                        Webcím: -Adja meg a teljes webcímet, ahol a Moodle elérhetõ lesz. Ha portálja több URL-rõl is elérhetõ, adja meg azt, amelyet a tanulók leginkább használni fognak. Ne tegyen a végére perjelet.

                        - -

                        Moodle-könyvtár: -Adja meg a telepítés teljes útvonalát. Ügyeljen a kis-/nagybetûk különbözésére.

                        - -

                        Adatkönyvtár: -Egy helyre lesz szüksége, ahova a Moodle a feltöltött állományokat menti. A könyvtárnak olvashatónak és a webszerver felhasználója által (ez általában \'nobody\' vagy \'apache\') ÍRHATÓNAK kell lennie, ugyanakkor nem legyen az Internetrõl közveltenül elérhetõ.

                        '; -$string['dirroot'] = 'Moodle-könyvtár'; -$string['dirrooterror'] = 'A \'Moodle-könyvtár\' beállítása feltehetõleg hibás - nem található alatta a Moodle telepítése. Az alábbi értéket visszaállítottuk.'; -$string['download'] = 'Letöltés'; -$string['fail'] = 'Hiba'; -$string['fileuploads'] = 'Állományok feltöltése'; -$string['fileuploadserror'] = 'Bekapcsolva kell lennie'; -$string['fileuploadshelp'] = '

                        Szerverén az állományok feltöltése feltehetõleg ki van kapcsolva.

                        -

                        A Moodle ettõl még telepíthetõ, de nem fog tudni kurzusállományokat vagy új felhasználói profilokat feltölteni.

                        -

                        Állományok feltöltésének bekapcsolásához Önnek (vagy rendszeradminisztrátorának) a rendszer fõ php.ini nevû állományában a -file_uploads beállítást \'1\'-re kell módosítania.

                        '; -$string['gdversion'] = 'GD-verzió'; -$string['gdversionerror'] = 'Képek feldolgozásához és készítéséhez a GD-könyvtárnak léteznie kell.'; -$string['gdversionhelp'] = '

                        Feltehetõleg szerverén nincs telepítve a GD.

                        -

                        A GD a PHP számára szükséges könyvtár, mellyel a Moodle képeket (például flehasználói ikonokat) tud feldolgozni és újakat tud készíteni (például naplódiagramokat). A Moodle mûködik GD nélkül is - csak ezek a lehetõség nem lesznek az Ön számára elérhetõk.

                        -

                        A GD Unix alatti PHP-hez való hozzáadásához a PHP-t fordítsa a --with-gd paraméterrel.

                        -

                        Windows alatt szerkesztheti a php.ini-t: el kell távolítani a megjegyzésjelet a libgd.dll-re hivatkozó sor elejérõl.

                        '; -$string['installation'] = 'Telepítés'; -$string['magicquotesruntime'] = 'Futásidejû Magic Quotes'; -$string['magicquotesruntimeerror'] = 'Kikapcsolva kell lennie'; -$string['magicquotesruntimehelp'] = '

                        A futásidejû Magic Quotes-nak kikapcsolva kell lennie runtime should be turned off for Moodle to function properly.

                        - -

                        Normally it is off by default ... see the setting magic_quotes_runtime in your php.ini file.

                        - -

                        If you don\'t have access to your php.ini, you might be able to place the following line in a file -called .htaccess within your Moodle directory: -

                        php_value magic_quotes_runtime Off
                        -'; -$string['memorylimit'] = 'Memóriakorlát'; -$string['memorylimiterror'] = 'A PHP memóriakorlátja túl alacsonyra van állítva... ez a késõbbiekben gondot okozhat.'; -$string['memorylimithelp'] = '

                        Szerverén a PHP memóriakorlátja jelenleg $a.

                        -

                        Ez a Moodle számára a késõbbiekben gondot okozhat, különösen akkor, ha sok modulja és/vagy sok felhasználója van bekapcsolva.

                        -

                        Ha lehet, állítsa be a PHP magasabb korláttal, pl. 16M-tal. Többféleképpen próbálkozhat:

                        -
                          -
                        1. Ha lehet, fordítsa újra a PHP-t --enable-memory-limit-tel. Így a Moodle maga állíthatja be a memóriakorlátot.
                        2. -
                        3. Ha elérhetõ a php.ini állomány, módosítsa a memory_limit -beállítást pl. 16M-ra. Ha nem éri el az állományt, kérje meg a rendszeradminisztrátort a módosítás elvégzésére.
                        4. -
                        5. Egyes PHP-szervereken létrehozhat egy .htaccess állományt a Moodle-könyvtárban az alábbi sorral: -

                          php_value memory_limit 16M

                          -

                          Vannak szerverek, ahol ez az összes PHP-oldal mûködését megakadályozza -(az oldalak hibát jeleznek), ezért el kell távolítania a .htaccess állományt.

                        6. -
                        '; -$string['mysqlextensionisnotpresentinphp'] = 'A PHP nincs jól beállítva a has not been properly configured with the MySQL extension so that it can communicate with MySQL. Please check your php.ini file or recompile PHP.'; -$string['pass'] = 'Rendben'; -$string['phpversion'] = 'PHP-verzió'; -$string['phpversionerror'] = 'A PHP-verzió legalább 4.1.0 legyen'; -$string['phpversionhelp'] = '

                        A Moodle használatához legalább PHP 4.1.0 verziója szükséges.

                        -

                        Az Ön által használt verzió $a

                        -

                        Frissítse a PHP-verziót vagy térjen át újabb PHP-verziót mûködtetõ gazdagépre!

                        '; -$string['safemode'] = 'Biztonságos mód'; -$string['safemodeerror'] = 'A Moodle bekapcsolt biztonságos mód esetén akadályba ütközhet'; -$string['safemodehelp'] = '

                        A Moodle bekapcsolt biztonságos mód esetén egy sor problémába ütközhet, mindenekelõtt feltehetõleg nem tud majd új állományokat létrehozni.

                        -

                        A biztonságos módot általában túlzottan pánikoló webes gazdák kapcsolják be, így valószínûleg egy másik gazdagépet kell keresnie a Moodle számára.

                        -

                        Ha kívánja, folytathatja a telepítést, de számítson a késõbbiekben néhány hibára.

                        '; -$string['sessionautostart'] = 'Folyamat automatikus kezdése'; -$string['sessionautostarterror'] = 'Ezt ki kell kapcsolni'; -$string['sessionautostarthelp'] = '

                        A Moodle-nak folyamattámogatásra van szüksége, nélküle nem mûködik.

                        -

                        A folyamatok a php.ini állományban kapcsolhatók be, lásd a session.auto_start paramétert.

                        '; -$string['wwwroot'] = 'Webcím'; -$string['wwwrooterror'] = 'A webcím nem érvényes - a Moodle mostani telepítése nincs a megadott címen.'; - -?> diff --git a/lang/hu/journal.php b/lang/hu/journal.php index 262d046e8c8..fefd553d34b 100644 --- a/lang/hu/journal.php +++ b/lang/hu/journal.php @@ -1,36 +1,36 @@ teacher megjegyzést fûzött a \'$a->journal\' +$string['alwaysopen'] = "Mindig nyitva"; +$string['blankentry'] = "Üres bejegyzés"; +$string['daysavailable'] = "Elérhetõ napok"; +$string['editingended'] = "A szerkesztési idõszak lejárt"; +$string['editingends'] = "A szerkesztési idõszak lejár"; +$string['entries'] = "Bejegyzések"; +$string['feedbackupdated'] = "\$a bejegyzések visszajelzése frissítve"; +$string['journalmail'] = "\$a->teacher megjegyzét fûzött a '\$a->journal' -beli bejegyzéséhez. -Ezt a bejegyzéshez csatolva megtekintheti a következõ helyen: $a->url'; -$string['journalmailhtml'] = '$a->teacher megjegyzést fûzött a \'$a->journal\'
                        +Ezt a bejegyzéshez csatolva megtekintheti a következõ helyen: \$a->url"; +$string['journalmailhtml'] = "\$a->teacher megjegyzét fûzött a '\$a->journal'
                        -beli bejegyzéséhez. -Ezt a bejegyzéshez csatolva megtekintheti a következõ helyen: url\">bejegyzés.'; -$string['journalname'] = 'Napló neve'; -$string['journalquestion'] = 'Naplóhoz tartozó kérdés'; -$string['journalrating1'] = 'Elégtelen'; -$string['journalrating2'] = 'Elégséges'; -$string['journalrating3'] = 'Kiváló'; -$string['modulename'] = 'Napló'; -$string['modulenameplural'] = 'Naplók'; -$string['newjournalentries'] = 'Új naplóbejegyzések'; -$string['noentry'] = 'Nincs bejegyzés'; -$string['noratinggiven'] = 'Nincs kategória megadva'; -$string['notopenuntil'] = 'A napló megnyitása ekkor: '; -$string['notstarted'] = 'Még nem indította el a naplót'; -$string['overallrating'] = 'Átfogó véleményezés'; -$string['rate'] = 'Vélemény'; -$string['saveallfeedback'] = 'Minden visszajelzésem mentése'; -$string['startoredit'] = 'A naplóbejegyzés megkezdése vagy szerkesztése'; -$string['viewallentries'] = '$a naplóbejegyzések megmutatása'; +Ezt a bejegyzéshez csatolva megtekintheti a következõ helyen: url\\\">bejegyzés."; +$string['journalname'] = "Napló neve"; +$string['journalquestion'] = "Napló kérdés"; +$string['journalrating1'] = "Nem kielégítõ"; +$string['journalrating2'] = "Kielégítõ"; +$string['journalrating3'] = "Kiváló"; +$string['modulename'] = "Napló"; +$string['modulenameplural'] = "Naplók"; +$string['newjournalentries'] = "Új napló bejegyzések"; +$string['noentry'] = "Nincs bejegyzés"; +$string['noratinggiven'] = "Nincs kategória megadva"; +$string['notopenuntil'] = "A napló nincs nyitva eddig: "; +$string['notstarted'] = "Még nem indította el a naplót"; +$string['overallrating'] = "Átfogó értékelés"; +$string['rate'] = "Értékelés"; +$string['saveallfeedback'] = "Minden visszajelzésem mentése"; +$string['startoredit'] = " A naplóbejegyzését indítása vagy szerkesztése"; +$string['viewallentries'] = "\$a naplóbejegyzések megmutatása"; ?> diff --git a/lang/hu/label.php b/lang/hu/label.php deleted file mode 100644 index 6411da8e1d4..00000000000 --- a/lang/hu/label.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/lang/hu/lesson.php b/lang/hu/lesson.php deleted file mode 100644 index 761f96100f6..00000000000 --- a/lang/hu/lesson.php +++ /dev/null @@ -1,254 +0,0 @@ -firstname {$a->lastname} megjegyzései'; -$string['completed'] = 'Befejezve'; -$string['confirmdeletionofthispage'] = 'Oldal törlésének megerõsítése'; -$string['congratulations'] = 'Gratulálunk - elérte a lecke végét'; -$string['continue'] = 'Tovább'; -$string['continuetoanswer'] = 'Tovább a válaszok módosításához'; -$string['correctanswerjump'] = 'Helyes válasz utáni ugrás'; -$string['correctanswerscore'] = 'Helyes válasz pontszáma'; -$string['correctresponse'] = 'Helyes felelet'; -$string['customscoring'] = 'Testre szabott pontozás'; -$string['deadline'] = 'Határidõ'; -$string['defaultessayresponse'] = 'Az esszét kurzusvezetõje fogja pontozni.'; -$string['deleteattempts'] = 'Lecke hallgatói próbálkozásainak törlése (azonosító)'; -$string['deletedpage'] = 'Oldal törölve'; -$string['deleting'] = 'Törlés'; -$string['deletingpage'] = 'A(z) $a oldal törlése'; -$string['description'] = 'Leírás'; -$string['detailedstats'] = 'Részletes statisztika'; -$string['didnotanswerquestion'] = 'Nem válaszolt erre a kérdésre'; -$string['didnotreceivecredit'] = 'Nem kapott kreditpontot'; -$string['displayhighscores'] = 'Legmagasabb pontok kijelzése'; -$string['displayinleftmenu'] = 'Bal menüben jelenjen meg?'; -$string['displayleftmenu'] = 'Bal menü megjelenítése'; -$string['displayofgrade'] = 'Pontszám kijelzése (csak tanulóknak)'; -$string['displayreview'] = 'Ellenõrzõ gomb kijelzése'; -$string['displayscorewithessays'] = 'Az automatikus pontozású kérdéseknél $a->score pontot kapott a maximális $a->tempmaxgrade pontból.
                        $a->essayquestions esszékérdés(é/ei)t késõbb pontozzák és adják hozzá
                        végsõ pontszámához.

                        Az esszékérdés(ek) nélküli jelenlegi pontszáma $a->score a(z)$a->grade pontból'; -$string['displayscorewithoutessays'] = 'Pontszáma $a->score ($a->grade pontból).'; -$string['editlessonsettings'] = 'Leckebeállítások szerkesztése'; -$string['editpagecontent'] = 'Oldal tartalmának szerkesztése'; -$string['email'] = 'E-mail'; -$string['emailallgradedessays'] = 'Az ÖSSZES
                        pontozott esszé elküldése'; -$string['emailgradedessays'] = 'Pontozott esszék elküldése'; -$string['emailsuccess'] = 'Az e-mail(ek) elküldése sikerült'; -$string['endofbranch'] = 'Elágazás vége'; -$string['endofclustertitle'] = 'Tömb vége'; -$string['endoflesson'] = 'Lecke vége'; -$string['enteredthis'] = 'adta meg ezt.'; -$string['entername'] = 'Legmagasabb pontszámokhoz név megadása'; -$string['enterpassword'] = 'Adja meg a jelszót:'; -$string['eolstudentoutoftime'] = 'Figyelem! Túllépte a leckeidõt. Elõfordulhat, hogy utolsó válasza már nem fog beszámítani.'; -$string['eolstudentoutoftimenoanswers'] = 'Nem válaszolt egyetlen kérdésre sem. A leckére 0 pontot kapott.'; -$string['essay'] = 'Esszé'; -$string['essayemailsubject'] = 'Pontja a $a kérdésre'; -$string['essays'] = 'Esszék'; -$string['essayscore'] = 'Esszépont'; -$string['fileformat'] = 'Állományforma'; -$string['firstanswershould'] = 'Az elsõ válasznak a Helyes oldalra kell ugrania'; -$string['firstwrong'] = 'Ezt a pontot nem kaphatja meg, mert rosszul válaszolt. Azért a tanulás kedvéért folytatná még a próbálkozást (de már pontszerzés nélkül)?'; -$string['flowcontrol'] = 'Folyamat szabályozása'; -$string['general'] = 'Általános'; -$string['gobacktolesson'] = 'Vissza a leckéhez'; -$string['grade'] = 'Pont'; -$string['gradeessay'] = 'Esszékérdések pontozása'; -$string['gradeis'] = 'A pontszám: $a'; -$string['gradeoptions'] = 'Pontozási lehetõségek'; -$string['handlingofretakes'] = 'Újbóli próbálkozások kezelése'; -$string['havenotgradedyet'] = 'Még nincs pontozva.'; -$string['here'] = 'itt'; -$string['highscore'] = 'Legmagasabb pont'; -$string['hightime'] = 'Leghosszabb idõ'; -$string['importquestions'] = 'Kérdések importálása'; -$string['insertedpage'] = 'Oldal beszúrva'; -$string['jump'] = 'Ugrás'; -$string['jumptsto'] = 'ugrás helye'; -$string['leftduringtimed'] = 'Idõméréses lecke közben távozott.
                        Kattintson a Folytatás gombra és kezdje újra a leckét.'; -$string['leftduringtimednoretake'] = 'Idõméréses lecke közben távozott,
                        ezért nem ismételheti meg és nem folytathatja a leckét.'; -$string['lesson'] = '$a lecke'; -$string['lessonclosed'] = 'A lecke lezárult $a idõpontban.'; -$string['lessondefault'] = 'Ezen lecke beállításait használja alapbeállításként'; -$string['lessonformating'] = 'Lecke formázása'; -$string['lessonmenu'] = 'Lecke menü'; -$string['lessonopen'] = 'A lecke $a idõpontban kezdõdik.'; -$string['lessonstats'] = 'Leckestatisztika'; -$string['loginfail'] = 'Bejelentkezése nem sikerült, próbálja újra...'; -$string['lowscore'] = 'Legalacsonyabb pont'; -$string['lowtime'] = 'Legrövidebb idõ'; -$string['mainmenu'] = 'Kurzusmenü'; -$string['matchesanswer'] = 'Válasszal egyezik'; -$string['maxhighscores'] = 'Kijelzett legmagasabb pontok száma'; -$string['maximumnumberofanswersbranches'] = 'Válaszok/elágazások maximális száma'; -$string['maximumnumberofattempts'] = 'Próbálkozások maximális száma'; -$string['maxtime'] = 'Idõkorlát (perc)'; -$string['maxtimewarning'] = 'A lecke befejezésére $a perc áll rendelkezésére..'; -$string['minimumnumberofquestions'] = 'Kérdések minimális száma'; -$string['modattempts'] = 'Tanulói ellenõrzés engedélyezése'; -$string['modattemptsnoteacher'] = 'Tanulói ellenõrzést csak tanulók végezhetnek.'; -$string['modulename'] = 'Lecke'; -$string['modulenameplural'] = 'Leckék'; -$string['movedpage'] = 'OLdal áthelyezve'; -$string['movepagehere'] = 'Oldal áthelyezése ide'; -$string['moving'] = 'A(z) $a oldal áthelyezése'; -$string['movingtonextpage'] = 'Áthelyezés a következõ oldalra'; -$string['multianswer'] = 'Több válaszos'; -$string['multipleanswer'] = 'Több válasz'; -$string['nameapproved'] = 'Név elfogadva'; -$string['namereject'] = 'Nevét a szûrõ nem fogadta el
                        Próbálkozzon egy másik névvel.'; -$string['nextpage'] = 'Következõ oldal'; -$string['noanswer'] = 'Nincs megadva válasz'; -$string['noattemptrecordsfound'] = 'Nincs próbálkozás rögzítve: nincs pontozás'; -$string['nocommentyet'] = 'Még nincs megjegyzés.'; -$string['nohighscores'] = 'Nincs legmagasabb pontszám'; -$string['nooneansweredcorrectly'] = 'Senki nem felelt helyesen.'; -$string['nooneansweredthisquestion'] = 'Senki nem felelt a kérdésre.'; -$string['noonecheckedthis'] = 'Senki nem ellenõrizte ezt.'; -$string['nooneenteredthis'] = 'Senki nem válaszolta ezt.'; -$string['noretake'] = 'Ezt a leckét nem ismételheti meg.'; -$string['normal'] = 'Normál - kövesse a lecke útvonalát'; -$string['notcompleted'] = 'Nincs befejezve'; -$string['notdefined'] = 'Nincs megadva'; -$string['nothighscore'] = 'Nem készítette el a legmagasabb $a listát.'; -$string['notitle'] = 'Nincs cím'; -$string['numberofcorrectanswers'] = 'Helyes válaszok száma: $a'; -$string['numberofcorrectmatches'] = 'Helyes megfelelések száma: $a'; -$string['numberofpagestoshow'] = 'Megmutatandó oldalak (kártyák) száma'; -$string['numberofpagesviewed'] = 'Megtekintett oldalak száma: $a'; -$string['ongoing'] = 'Pillanatnyi pont mutatása'; -$string['ongoingcustom'] = '$a->score pontot ért el az eddig elérhetõ $a->currenthigh pontból.'; -$string['ongoingnormal'] = '$a->correct kérdést válaszolt meg helyesen az eddigi $a->viewed kérdésbõl.'; -$string['or'] = 'VAGY'; -$string['ordered'] = 'Rendezett'; -$string['other'] = 'Más'; -$string['outof'] = ' $a -ból/-bõl'; -$string['outoftime'] = 'Idõtúllépés'; -$string['overview'] = 'Átnézés'; -$string['page'] = 'Oldal: $a'; -$string['pagecontents'] = 'Oldal tartalma'; -$string['pages'] = 'Oldalak'; -$string['pagetitle'] = 'Oldal címe'; -$string['password'] = 'Jelszó'; -$string['passwordprotectedlesson'] = 'A(z) $a egy jelszóval védett lecke.'; -$string['pleasecheckoneanswer'] = 'Jelöljön be egy választ'; -$string['pleasecheckoneormoreanswers'] = 'Jelöljön be egy vagy több választ'; -$string['pleaseenteryouranswerinthebox'] = 'A négyzetbe írja be a választ'; -$string['pleasematchtheabovepairs'] = 'Párosítsa a fenti elemeket'; -$string['pointsearned'] = 'Kapott pontok'; -$string['postsuccess'] = 'Küldés sikerült'; -$string['practice'] = 'Gyakorló lecke'; -$string['previouspage'] = 'Elõzõ oldal'; -$string['question'] = 'Kérdés'; -$string['questionoption'] = 'Kérdésopció'; -$string['questiontype'] = 'Kérdésfajta'; -$string['randombranch'] = 'Véletlenszerûen elágazó oldal'; -$string['randompageinbranch'] = 'Véletlenszerû kérdés elágazáson belül'; -$string['rank'] = 'Sorrend'; -$string['reached'] = 'elért(e)'; -$string['receivedcredit'] = 'Kreditpontot kapott'; -$string['redisplaypage'] = 'Oldal újbóli megjelenítése'; -$string['report'] = 'Jelentés'; -$string['response'] = 'Viszontválasz'; -$string['returnmainmenu'] = 'Vissza a fõmenühöz'; -$string['returntocourse'] = 'Vissza a kurzushoz'; -$string['reviewlesson'] = 'Lecke ellenõrzése'; -$string['reviewquestionback'] = 'Igen, megpróbálnám'; -$string['reviewquestioncontinue'] = 'Nem, továbblépek a következõ kérdésre'; -$string['sanitycheckfailed'] = 'Alaphiba ellenõrzése sikertelen: a próbálkozás törölve'; -$string['savechanges'] = 'Változások mentése'; -$string['savechangesandeol'] = 'Minden változás mentése és áttérés a lecke végére'; -$string['savepage'] = 'Oldal mentése'; -$string['score'] = 'Pontszám'; -$string['scores'] = 'Pontszámok'; -$string['secondpluswrong'] = 'Nem pontos. Próbálkozna újra?'; -$string['showanunansweredpage'] = 'Mégválaszolatlan oldal megjelenítése'; -$string['showanunseenpage'] = 'Kihagyott oldal megjelenítése'; -$string['singleanswer'] = 'Egy válasz'; -$string['slideshow'] = 'Bemutató'; -$string['slideshowbgcolor'] = 'Bemutató háttérszíne'; -$string['slideshowheight'] = 'Bemutató magassága'; -$string['slideshowwidth'] = 'Bemutató szélessége'; -$string['startlesson'] = 'Lecke elkezdése'; -$string['studentattemptlesson'] = '$a->lastname $a->firstname $a->attempt számú próbálkozása '; -$string['studentname'] = '$a név'; -$string['studentoneminwarning'] = 'Vigyázat! A lecke befejezéséhez 1 percnél kevesebb ideje maradt.'; -$string['studentoutoftime'] = 'Figyelem! A leckeidõ letelt. Utolsó válasza nem fog beszámítani, mert késõn válaszolt. A lecke befejezéséhez nyomja meg a Folytatás gombot.'; -$string['studentresponse'] = '{$a} felelete'; -$string['submitname'] = 'Név leadása'; -$string['teacherjumpwarning'] = 'A lecke $a->cluster ugrást vagy $a->unseen ugrást tartalmaz. Helyette a következõ oldalra ugrik. Tanulóként jelentkezzen be az ugrások ellenõrzéséhez.'; -$string['teacherongoingwarning'] = 'A pillanatnyi pontszám csak tanuló számára látható. Ellenõrzéséhez jelentkezzen be tanulóként.'; -$string['teachertimerwarning'] = 'Az isõmérõ csak tanuló számára látható. Ellenõrzéséhez jelentkezzen be tanulóként.'; -$string['thatsthecorrectanswer'] = 'Ez a helyes válasz'; -$string['thatsthewronganswer'] = 'Ez a hibás válasz'; -$string['thefollowingpagesjumptothispage'] = 'A következõ oldalak erre az oldalra ugranak'; -$string['thispage'] = 'Ez az oldal'; -$string['timed'] = 'Idõméréses'; -$string['timeremaining'] = 'Hátralévõ idõ'; -$string['timetaken'] = 'Elhasznált idõ'; -$string['topscorestitle'] = '$a->name lecke $a->maxhighscores legmagasabb pontszáma.'; -$string['treeview'] = 'Faszerkezetes nézet'; -$string['unseenpageinbranch'] = 'Kihagyott kérdés egy elágazásban'; -$string['updatedpage'] = 'Frissített oldal'; -$string['updatefailed'] = 'A frissítés nem sikerült'; -$string['updatesuccess'] = 'A frissítés sikerült'; -$string['useeditor'] = 'Szerkesztõ használata'; -$string['usemaximum'] = 'Maximum használata'; -$string['usemean'] = 'Átlag használata'; -$string['usepassword'] = 'Jelszóval védett lecke'; -$string['viewallpages'] = 'Minden oldal megtekintése'; -$string['viewgrades'] = 'Pontok megtekintése'; -$string['viewhighscores'] = 'Legmagasabb pontok megtekintése'; -$string['viewlessonstats'] = 'Leckestatisztika megtekintése'; -$string['waitpostscore'] = 'Várjon a legmagasabb pontokra...'; -$string['welldone'] = 'Nagyszerû!'; -$string['whatdofirst'] = 'Mivel szeretne kezdeni?'; -$string['wronganswerjump'] = 'Ugrás rossz válaszról '; -$string['wronganswerscore'] = 'Rossz válasz pontszáma'; -$string['wrongresponse'] = 'Rossz felelet'; -$string['youhavereceived'] = 'Erre az esszékérdésre $a->outof pontból $a->score pontot ért el.'; -$string['youhaveseen'] = 'Ebbõl a leckébõl már egynél több oldalt látott.
                        Az utolsó megtekintett oldalon kívánja folytatni?'; -$string['youmadehighscore'] = 'Felelete a legjobb $a között volt'; -$string['youranswer'] = 'Válasza'; -$string['yourcurrentgradeis'] = 'Jelenlegi pontszáma: $a'; -$string['yourgradeisnow'] = 'A leckére kapott pontszáma $a pontra módosult'; -$string['yourresponse'] = 'Felelete'; -$string['youshouldview'] = 'Minimálisan megtekintendõ: $a'; - -?> diff --git a/lang/hu/mediaplugin.php b/lang/hu/mediaplugin.php deleted file mode 100644 index 2ec0400b240..00000000000 --- a/lang/hu/mediaplugin.php +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/lang/hu/message.php b/lang/hu/message.php deleted file mode 100644 index 4664b74ecda..00000000000 --- a/lang/hu/message.php +++ /dev/null @@ -1,63 +0,0 @@ - diff --git a/lang/hu/moodle.php b/lang/hu/moodle.php index 9786716285d..6f0319d61bb 100644 --- a/lang/hu/moodle.php +++ b/lang/hu/moodle.php @@ -1,1052 +1,639 @@ $a'; -$string['activityiscurrentlyhidden'] = 'Ez a tevékenység jelenleg rejtett'; -$string['activitymodule'] = 'Tevékenységmodul'; -$string['activityreport'] = 'Tevékenységrõl szóló jelentés'; -$string['activityreports'] = 'Tevékenységrõl szóló jelentések'; -$string['activityselect'] = 'A tevékenység kiválasztása áthelyezésre'; -$string['activitysince'] = 'Aktivitás $a óta'; -$string['add'] = 'Hozzáadás'; -$string['addactivity'] = 'Tevékenység hozzáadása'; -$string['addadmin'] = 'Adminisztrátor hozzáadása'; -$string['addcreator'] = 'Kurzuskészítõ hozzáadása'; -$string['added'] = '$a hozzáadva'; -$string['addedtogroup'] = 'A(z) $a csoporthoz hozzáadva'; -$string['addedtogroupnot'] = 'Nincs a(z) $a csoporthoz hozzáadva'; -$string['addedtogroupnotenrolled'] = 'Nincs a(z) $a csoporthoz hozzáadva, mert nem íratkozott be a kurzusra'; -$string['addinganew'] = 'Új $a hozzáadása'; -$string['addinganewto'] = 'Új $a->what hozzáadása $a->to -hoz'; -$string['addingdatatoexisting'] = 'Adatok hozzáadása meglévõhöz'; -$string['addnewcategory'] = 'Új kategória hozzáadása'; -$string['addnewcourse'] = 'Új kurzus hozzáadása'; -$string['addnewuser'] = 'Új felhasználó hozzáadása'; -$string['addresource'] = 'Forrás hozzáadása'; -$string['address'] = 'Cím'; -$string['addstudent'] = 'Tanuló hozzáadása'; -$string['addteacher'] = 'Tanár hozzáadása'; -$string['admin'] = 'Adminisztrátor'; -$string['adminhelpaddnewuser'] = 'Új felhasználó kézi létrehozása'; -$string['adminhelpassignadmins'] = 'Adminisztrátorok bármit csinálhatnak és bárhová mehetnek a portálon'; -$string['adminhelpassigncreators'] = 'Kurzuskészítõk új kurzusokat hozhatnak létre és azokban taníthatnak'; -$string['adminhelpassignstudents'] = 'Áttérés egy kurzushoz és tanulók hozzáadása az adminisztrátori menübõl'; -$string['adminhelpassignteachers'] = 'Kurzus kikeresése, majd ikon használata tanárok hozzáadásához'; -$string['adminhelpauthentication'] = 'Belsõ felhasználói azonosítókat vagy külsõ adatbázisokat használhat'; -$string['adminhelpbackup'] = 'Automatikus biztonsági mentések beállítása és azok ütemezése'; -$string['adminhelpconfiguration'] = 'A portál kinézetének és mûködésének a beállítása'; -$string['adminhelpconfigvariables'] = 'A portál általános mûködését befolyásoló változók beállítása'; -$string['adminhelpcourses'] = 'Kurzusok és kategóriák meghatározása és személyek ezekhez rendelése'; -$string['adminhelpeditorsettings'] = 'HTML-szerkesztõ alapbeállításainak megadása '; -$string['adminhelpedituser'] = 'Felhasználói azonosítók jegyzékének böngészése és bármelyikük szerkesztése'; -$string['adminhelpenrolments'] = 'Beíratkozások szabályozásához külsõ vagy belsõ módozatok kiválasztása'; -$string['adminhelpfailurelogs'] = 'Sikertelen bejelentkezések naplóinak böngészése'; -$string['adminhelplanguage'] = 'A jelenlegi nyelvi csomag ellenõrzéséhez és szerkesztéséhez'; -$string['adminhelplogs'] = 'A portál összes tevékenységnaplójának böngészése'; -$string['adminhelpmanageblocks'] = 'Telepített blokkok és beállításaik kezelése'; -$string['adminhelpmanagedatabase'] = 'Adatbázis közvetlen elérése (óvatosan!)'; -$string['adminhelpmanagefilters'] = 'Szövegszûrõk és kapcsolódó beállítások kiválasztása'; -$string['adminhelpmanagemodules'] = 'Telepített modulok és beállításaik kezelése'; -$string['adminhelpsitefiles'] = 'Általános állományok közzétételéhez vagy külsõ biztonsági mentések feltöltéséhez'; -$string['adminhelpsitesettings'] = 'Portál elsõ oldalán a megjelenés meghatározása'; -$string['adminhelpthemes'] = 'Portál megjelenésének meghatározása (színek, betûk stb.)'; -$string['adminhelpuploadusers'] = 'Új felhasználói azonosítók importálása szöveges állományból'; -$string['adminhelpusers'] = 'Felhasználók megadása és hitelesítés beállítása'; -$string['administration'] = 'Adminisztráció'; -$string['administrator'] = 'Adminisztrátor'; -$string['administrators'] = 'Adminisztrátorok'; -$string['administratorsall'] = 'Minden adminisztrátor'; -$string['administratorsandteachers'] = 'Adminisztrátorok és tanárok'; -$string['advanced'] = 'Részletes'; -$string['advancedfilter'] = 'Részletesebb keresés'; -$string['advancedsettings'] = 'Részletes beállítások'; -$string['again'] = 'ismét'; -$string['aimid'] = 'AIM-azonosító'; -$string['all'] = 'Minden'; -$string['allactivities'] = 'Minden tevékenység'; -$string['alldays'] = 'Minden nap'; -$string['allfieldsrequired'] = 'Minden mezõ kötelezõ'; -$string['allgroups'] = 'Minden csoport'; -$string['alllogs'] = 'Minden naplóbejegyzés'; -$string['allow'] = 'Engedélyez'; -$string['allowguests'] = 'Ez a kurzus megengedi vendégek belépését'; -$string['allowinternal'] = 'Minden belsõ metódus is'; -$string['allownot'] = 'Nem engedélyez'; -$string['allparticipants'] = 'Minden résztvevõ'; -$string['allteachers'] = 'Minden tanár'; -$string['alphabet'] = 'A,Á,B,C,CS,D,DZ,DZS,E,É,F,G,GY,H,I,Í,J,K,L,M,N,NY,O,Ó,Ö,Õ,P,Q,R,S,SZ,T,TY,U,Ú,Ü,Û,V,W,X,Y,Z,ZS'; -$string['alphanumerical'] = 'Csak alfanumerikus karaktereket tartalmazhat'; -$string['alreadyconfirmed'] = 'A regisztrációt már visszaigazolták'; -$string['always'] = 'Mindig'; -$string['answer'] = 'Válasz'; -$string['areyousuretorestorethis'] = 'Kívánja folytatni?'; -$string['areyousuretorestorethisinfo'] = 'Késõbb ezt a biztonsági mentést hozzáadhatja egy meglévõ kurzushoz vagy létrehozhat egy teljesen új kurzust.'; -$string['assessment'] = 'Értékelés'; -$string['assignadmins'] = 'Adminisztrátorok hozzárendelése'; -$string['assigncreators'] = 'Szerzõk hozzárendelése'; -$string['assignstudents'] = 'Tanuló beíratása'; -$string['assignstudentsnote'] = 'Megjegyzés: elõfordulhat, hogy erre az oldalra nem lesz szükség, mivel a tanulók önmaguk is beíratkozhatnak erre a kurzusra.'; -$string['assignstudentspass'] = 'Csak értesítenie kell tanulóit a kurzus beíratkozási kulcsáról, amely a mostani beállítás szerint: \'$a\''; -$string['assignteachers'] = 'Tanárok hozzárendelése'; -$string['authentication'] = 'Hitelesítés'; -$string['autosubscribe'] = 'Automatikus felíratkozás a fórumra'; -$string['autosubscribeno'] = 'Nem: nem íratkozom fel automatikusan a fórumokra'; -$string['autosubscribeyes'] = 'Igen: ha hozzászólok, írjon fel a fórumra'; -$string['availability'] = 'Felvehetõség'; -$string['availablecourses'] = 'Felvehetõ tanfolyamok'; -$string['backup'] = 'Biztonsági mentés'; -$string['backupcoursefileshelp'] = 'Bekapcsolása esetén a kurzus állományai bekerülnek az automatikus biztonsági mentések közé'; -$string['backupdate'] = 'Biztonsági mentés dátuma'; -$string['backupdetails'] = 'Biztonsági mentés részletei'; -$string['backupfailed'] = 'Kurzusai közül néhánynak a mentése nem történt meg!'; -$string['backupfilename'] = 'biztonsági mentés'; -$string['backupfinished'] = 'A biztonsági mentés sikerült'; -$string['backupincludemoduleshelp'] = 'Döntse el, hogy a kurzusmodulok - felhasználói adatokkal vagy azok nélkül - bekerüljenek-e az automatikus biztonsági mentések közé'; -$string['backupkeephelp'] = 'Hány utóbbi biztonsági mentést kíván kurzusonként megtartani? (Az ennél régebbiek automatikusan törlõdnek.)'; -$string['backuplogdetailed'] = 'Részletes végrehajtási napló'; -$string['backuploglaststatus'] = 'Utolsó végrehajtási napló'; -$string['backuplogshelp'] = 'Bekapcsolása esetén a kurzusnaplók bekerülnek az automatikus biztonsági mentések közé'; -$string['backupmetacoursehelp'] = 'Bekapcsolásakor a metakurzus információi (örökölt beíratkozások) bekerülnek az automatikus biztonsági mentések közé'; -$string['backupnameformat'] = '%%É%%h%%n-%%Ó%%P'; -$string['backupnoneusersinfo'] = 'Figyelem: Egyetlen felhasználót sem választott ki biztonsági mentésre, ezért minden modul biztonsági mentése \"felhasználói adatok nélkül\" módba kerül. Ügyeljen arra, hogy a \"gyakorlat\" és a \"szeminárium\" moduljai nem felelnek meg ennek a biztonsági mentésfajtának, ezért teljesen ki vannak kapcsolva.'; -$string['backuporiginalname'] = 'Mentés neve'; -$string['backupsavetohelp'] = 'A mentendõ állományok könyvtárához vezetõ teljes útvonal
                        (a kurzus alapkönyvtárába mentéshez hagyja üresen)'; -$string['backuptakealook'] = 'Tekintse meg biztonsági naplóit itt: $a'; -$string['backupuserfileshelp'] = 'Döntse el, hogy a felhasználói állományok (pl. a profilok) bekerüljenek-e az automatikus biztonsági mentésbe'; -$string['backupusershelp'] = 'Döntse el, hogy minden felhasználó bekerüljön-e a szerverbe, vagy csak az egyes kurzusokhoz szükségesek'; -$string['backupversion'] = 'Mentés verziószáma'; -$string['blockconfiga'] = '$a blokk beállítása'; -$string['blockconfigbad'] = 'Ez a blokk nincs megfelelõen telepítve, ezért nincs hozzá beállítási interfész'; -$string['blockdeleteconfirm'] = 'A \'$a\' blokkot teljesen törölni fogja. Ezzel a blokkhoz tartozó adatbázisból minden teljesen ki fog törlõdni. BIZTOSAN folytatni akarja?'; -$string['blockdeletefiles'] = 'A(z) \'$a->block\' blokkhoz tartozó összes adat törölve lett az adatbázisból. A törlés befejezéséhez (és a blokk újratelepülésének a megelõzéséhez) most törölnie kell szerverérõl ezt a könyvtárat: $a->directory'; -$string['blocks'] = 'Blokkok'; -$string['blocksaddedit'] = 'Blokkok hozzáadása/szerkesztése'; -$string['blockseditoff'] = 'Blokkszerkesztés kikapcsolva'; -$string['blocksediton'] = 'Blokkszerkesztés bekapcsolva'; -$string['blocksetup'] = 'Blokktáblázatok beállítása'; -$string['blocksuccess'] = '$a táblát sikerült megfelelõen beállítani'; -$string['bycourseorder'] = 'A kurzusok sorrendje szerint'; -$string['byname'] = '$a szerint'; -$string['cancel'] = 'Mégsem'; -$string['categories'] = 'Kurzuskategóriák'; -$string['category'] = 'Kategória'; -$string['categoryadded'] = 'A(z) \'$a\' kategória hozzáadása megtörtént'; -$string['categorydeleted'] = 'A(z) \'$a\' kategória törlése megtörtént'; -$string['categoryduplicate'] = '\'$a\' nevû kategória már létezik!'; -$string['censorbadwords'] = 'szar,baszik,baszott,fasz,picsa,pina,geci,kurva,elbaszott,pöcs,punci,segg,seggfej,baszd meg,kibaszott,szemétláda,takony,orgazmus,maszturbál,kiveri,'; -$string['changedpassword'] = 'Megváltozott jelszó'; -$string['changepassword'] = 'Jelszó megváltoztatása'; -$string['changessaved'] = 'Változások mentése'; -$string['checkingbackup'] = 'Biztonsági mentés ellenõrzése'; -$string['checkingcourse'] = 'Kurzus ellenõrzése'; -$string['checkingforbbexport'] = 'BlackBoard exportálásának ellenõrzése'; -$string['checkinginstances'] = 'Példányok ellenõrzése'; -$string['checkingsections'] = 'Szekciók ellenõrzése'; -$string['checklanguage'] = 'Nyelv ellenõrzése'; -$string['childcoursenotfound'] = 'Alkurzust nem találtam!'; -$string['choose'] = 'Válasszon'; -$string['choosecourse'] = 'Válasszon kurzust'; -$string['chooseenrolmethod'] = 'Beíratkozás elsõdleges módszere'; -$string['chooselivelogs'] = 'Vagy nézze a jelenlegi tevékenységet'; -$string['chooselogs'] = 'Válassza ki a látni kívánt naplóbejegyzéseket'; -$string['choosereportfilter'] = 'Válasszon szûrõt a jelentéshez'; -$string['choosetheme'] = 'Válasszon témát'; -$string['chooseuser'] = 'Válasszon felhasználót'; -$string['city'] = 'Város/falu'; -$string['clambroken'] = 'Adminisztrátora feltöltésekhez bekapcsolta a vírusellenõrzést, de valamit rosszul állított be.
                        Állományának feltöltése NEM sikerült. Adminisztrátorát értesítettük, így a javítást el tudja végezni.
                        Esetleg próbálja meg ezt a fájlt késõbb feltölteni.'; -$string['clamdeletedfile'] = 'Ezt az állományt törölték.'; -$string['clamdeletedfilefailed'] = 'Ezt az állományt nem lehetett törölni.'; -$string['clamemailsubject'] = '$a :: AV-vírusölõ értesítése'; -$string['clamfailed'] = 'Az AV vírusölõ nem futott le. A hibajelzés $a volt. Íme a vírusölõ üzenete:'; -$string['clamlost'] = 'A Moodle feltöltéskor vírusölõvel ellen?rzi az állományt, de az AV megadott $a útvonala érvénytelen.'; -$string['clamlostandactinglikevirus'] = 'Emellett a Moodle úgy van beállítva, hogy a vírusölõ sikertelen lefutásakor az állományokat fertõzöttnek tekinti. Ezek szerint mindaddig nem tölthetnek fel tanulók állományokat, amíg ezt nem sikerül kiküszöbölni.'; -$string['clammovedfile'] = 'Az állomány átkerült a megadott karanténkönyvtárba, az új hely: $a'; -$string['clammovedfilebasic'] = 'Az állomány karanténkönyvtárba került.'; -$string['clamquarantinedirfailed'] = 'Az állományt nem lehetett a megadott $a karanténkönyvtárba áthelyezni. Ezt ki kell javítani, mert a fertõzöttnek vélt állományokat a rendszer törli.'; -$string['clamunknownerror'] = 'Ismeretlen hiba történt a vírusölõvel.'; -$string['cleaningtempdata'] = 'Ideiglenes adatok törlése'; -$string['clicktochange'] = 'kattintson a módosításhoz'; -$string['closewindow'] = 'Ablak bezárása'; -$string['comparelanguage'] = 'Az aktuális nyelv ellenõrzése és szerkesztése'; -$string['complete'] = 'Teljes'; -$string['completereport'] = 'Teljes jelentés'; -$string['configuration'] = 'Beállítások'; -$string['confirm'] = 'Visszaigazolás'; -$string['confirmed'] = 'Regisztrációja visszaigazolva'; -$string['confirmednot'] = 'A regisztráció visszaigazolása még nem történt meg!'; -$string['continue'] = 'Tovább'; -$string['continuetocourse'] = 'A kurzusba való belépéshez kattintson ide'; -$string['cookiesenabled'] = 'A böngészõjében engedélyeznie kell a sütiket.'; -$string['cookiesnotenabled'] = 'Böngészõjében a sütik használata nincs engedélyezve.'; -$string['copy'] = 'másolás'; -$string['copyingcoursefiles'] = 'Kurzusfájlok másolása'; -$string['copyinguserfiles'] = 'Felhasználói fájlok másolása'; -$string['copyingzipfile'] = 'Zipfájl másolása'; -$string['copyrightnotice'] = 'Szerzõi jogra vonatkozó megjegyzés'; -$string['cost'] = 'Költség'; -$string['costdefault'] = 'Alapbeállítás szerinti költség'; -$string['counteditems'] = '$a->count $a->items'; -$string['country'] = 'Ország'; -$string['course'] = 'Kurzus'; -$string['courseavailable'] = 'A kurzus elérhetõ tanulók számára'; -$string['courseavailablenot'] = 'A kurzus tanulók számára nem elérhetõ'; -$string['coursebackup'] = 'Kurzus biztonsági mentése'; -$string['coursecategories'] = 'Kurzuskategóriák'; -$string['coursecategory'] = 'Kurzuskategória'; -$string['coursecreators'] = 'Kurzuskészítõk'; -$string['coursefiles'] = 'Kurzusfájlok'; -$string['courseformats'] = 'Kurzusformák'; -$string['coursegrades'] = 'Kurzuspontok'; -$string['coursehidden'] = 'Ez a kurzus jelenleg nem elérhetõ tanulók számára'; -$string['courseinfo'] = 'Kurzustájékoztató'; -$string['courserestore'] = 'Kurzus visszaállítása'; -$string['courses'] = 'Kurzusok'; -$string['coursescategory'] = 'Azonos kategóriába tartozó kurzusok'; -$string['coursestaught'] = 'Általam oktatott kurzusok'; -$string['courseupdates'] = 'Kurzusfrissítések'; -$string['courseuploadlimit'] = 'Kurzus feltöltési határértéke'; -$string['create'] = 'Létrehozás'; -$string['createaccount'] = 'Új felhasználói azonosító létrehozása'; -$string['createfolder'] = 'Könyvtár létrehozása a(z) $a -ban'; -$string['createuserandpass'] = 'Új felhasználónév és jelszó létrehozása'; -$string['createziparchive'] = 'Tömörített archívum létrehozása'; -$string['creatingblocks'] = 'Blokkok létrehozása'; -$string['creatingcategoriesandquestions'] = 'Kategóriák és kérdések létrehozása'; -$string['creatingcoursemodules'] = 'Kurzusmodulok létrehozása'; -$string['creatingevents'] = 'Események létrehozása'; -$string['creatinggroups'] = 'Csoportok létrehozása'; -$string['creatinglogentries'] = 'Naplóbejegyzések létrehozása'; -$string['creatingmessagesinfo'] = 'Üzenetinformáció létrehozása'; -$string['creatingmetacoursedata'] = 'Metakurzus-információ létrehozása'; -$string['creatingnewcourse'] = 'Új kurzus létrehozása'; -$string['creatingscales'] = 'Skálák létrehozása'; -$string['creatingsections'] = 'Szekciók létrehozása'; -$string['creatingtemporarystructures'] = 'Ideiglenes struktúrák létrehozása'; -$string['creatingusers'] = 'Felhasználók létrehozása'; -$string['creatingxmlfile'] = 'XML-fájl létrehozása'; -$string['currency'] = 'Pénznem'; -$string['currentcourseadding'] = 'Adott kurzus: adatok hozzáadása'; -$string['currentcoursedeleting'] = 'Elõször az adott kurzus törlése'; -$string['currentlanguage'] = 'Aktuális nyelv'; -$string['currentlocaltime'] = 'az aktuális helyi idõ'; -$string['currentpicture'] = 'Aktuális kép'; -$string['currentrelease'] = 'Aktuális változatra vonatkozó információ'; -$string['currentversion'] = 'Aktuális verzió'; -$string['databasechecking'] = 'A Moodle adatbázis frissítése $a->oldversion verzióról $a->newversion verzióra...'; -$string['databaseperformance'] = 'Adatbázis teljesítménye'; -$string['databasesetup'] = 'Adatbázis létrehozása'; -$string['databasesuccess'] = 'Az adatbázis változatának frissítése sikerült'; -$string['databaseupgradebackups'] = 'A mentés verziószáma: $a'; -$string['databaseupgradeblocks'] = 'A blokkok verziószáma: $a'; -$string['databaseupgrades'] = 'Az adatbázis frissítése'; -$string['date'] = 'Dátum'; -$string['datemostrecentfirst'] = 'Dátum - a legutóbbival kezdve'; -$string['datemostrecentlast'] = 'Dátum - a legutóbbival befejezve'; -$string['day'] = 'nap'; -$string['days'] = 'nap'; -$string['decodinginternallinks'] = 'Belsõ kapcsolatok feloldása'; -$string['default'] = 'Alapértelmezett'; -$string['defaultcoursefullname'] = 'A 101-es kurzus teljes neve '; -$string['defaultcourseshortname'] = 'CF101'; -$string['defaultcoursestudent'] = 'Tanuló'; -$string['defaultcoursestudents'] = 'Tanulók'; -$string['defaultcoursesummary'] = 'Egy tömör és figyelemfelkeltõ bekezdést írjon arról, hogy mirõl szól a kurzus'; -$string['defaultcourseteacher'] = 'Tanár'; -$string['defaultcourseteachers'] = 'Tanárok'; -$string['delete'] = 'Törlés'; -$string['deleteall'] = 'Az összes törlése'; -$string['deletecategorycheck'] = 'Teljesen biztos abban, hogy az egész \'$a\' kategóriát törölni kívánja?
                        Ezzel minden kurzus a felette lévõ kategóriába, ha ilyen nincs, az Egyebekbe kerül.'; -$string['deletecheck'] = 'Töröljem a(z) $a -t?'; -$string['deletecheckfiles'] = 'Biztosan törölni szeretné ezeket a fájlokat?'; -$string['deletecheckfull'] = 'Biztosan törölni akarja a következõt: $a ?'; -$string['deletecheckwarning'] = 'Törölni fogja ezeket a fájlokat'; -$string['deletecompletely'] = 'Teljes törlés'; -$string['deletecourse'] = 'Kurzus törlése'; -$string['deletecoursecheck'] = 'Biztosan törölni akarja ezt a kurzust adataival együtt?'; -$string['deleted'] = 'Törölve'; -$string['deletedactivity'] = '$a törölve'; -$string['deletedcourse'] = '$a teljesen törölve '; -$string['deletednot'] = '$a nem törölhetõ!'; -$string['deleteselected'] = 'Kiválasztott törlése'; -$string['deletingcourse'] = '$a törlése'; -$string['deletingexistingcoursedata'] = 'Kurzus adatainak törlése'; -$string['deletingolddata'] = 'Régi adatok törlése'; -$string['department'] = 'Osztály'; -$string['description'] = 'Leírás'; -$string['detailedless'] = 'Kevésbé részletes'; -$string['detailedmore'] = 'Részletesebb'; -$string['directorypaths'] = 'Könyvtárútvonalak'; -$string['disable'] = 'Kikapcsol'; -$string['displayingfirst'] = 'Csak az elsõ $a->count $a->things jelenik meg'; -$string['displayingrecords'] = '$a rekord megjelenítése'; -$string['displayingusers'] = 'Felhasználók megjelenítése $a->start -tól $a->end -ig'; -$string['documentation'] = 'A Moodle dokumentációja'; -$string['donotask'] = 'Ne kérdezzen'; -$string['down'] = 'Le'; -$string['downloadexcel'] = 'Letöltés Excel formátumban'; -$string['downloadtext'] = 'Letöltés szöveges formátumban'; -$string['doyouagree'] = 'Az olvasott feltételekkel egyetért?'; -$string['duplicate'] = 'Másodpéldány'; -$string['duplicatinga'] = 'A(z) $a másodpéldányának elkészítése'; -$string['duplicatingain'] = '$a->what másodpéldányának elkészítése a(z) $a->in -ban'; -$string['edhelpaspellpath'] = 'A szerkesztõn belüli helyesírás-ellenõrzéshez aspell 0.50 vagy késõbbi verzióval KELL a szerveren rendelkezni és meg kell adni az aspell programhoz vezetõ útvonalat. Unix/Linux rendszereken ez általában /usr/bin/aspell, de lehet más is.'; -$string['edhelpbgcolor'] = 'Szerkesztési terület háttérszínének megadása.
                        Érvényes érték pl.: #ffffff vagy white'; -$string['edhelpcleanword'] = 'Ezzel kapcsolható ki vagy be a Word speciális formázásának a szûrése.'; -$string['edhelpenablespelling'] = 'Helyesírás-ellenõrzés ki-/bekapcsolása. Bekapcsolt állapotban a szerveren telepítve kell lennie az aspell programnak.'; -$string['edhelpfontfamily'] = 'A font-family tulajdonsággal fontcsaládok nevei adhatók meg. A nevek felsorolását vesszõvel kell elválasztani.'; -$string['edhelpfontlist'] = 'A szerkesztõk legördülõ menüjén megjelenõ fontok megadása.'; -$string['edhelpfontsize'] = 'Az alapértelmezett mérettel adható meg a font mérete.
                        Érvényes érték pl.: medium, large, smaller, larger, 10pt, 11px. '; -$string['edit'] = '$a szerkesztése'; -$string['editcoursesettings'] = 'Kurzusbeállítások szerkesztése'; -$string['editfiles'] = 'Állományok szerkesztése'; -$string['editgroupprofile'] = 'Csoportprofil szerkesztése'; -$string['editinga'] = '$a szerkesztése'; -$string['editingteachershort'] = 'Szerkesztõ'; -$string['editlock'] = 'Ez az érték nem szerkeszthetõ!'; -$string['editmyprofile'] = 'Profil szerkesztése'; -$string['editorbgcolor'] = 'Háttérszín'; -$string['editorcleanonpaste'] = 'Beillesztéskor Worddel készült HTML megtisztítása'; -$string['editorcommonsettings'] = 'Általános beállítások'; -$string['editordefaultfont'] = 'Alapértelmezett font'; -$string['editorenablespelling'] = 'Helyesírás-ellenõrzés bekapcsolása'; -$string['editorfontlist'] = 'Fontok felsorolása'; -$string['editorfontsize'] = 'Alapértelmezett fontméret'; -$string['editorresettodefaults'] = 'Alapértékek visszaállítása'; -$string['editorsettings'] = 'Szerkesztõ beállításai'; -$string['editsummary'] = 'Az összegzés szerkesztése'; -$string['editthisactivity'] = 'A tevékenység szerkesztése'; -$string['editthiscategory'] = 'A kategória szerkesztése'; -$string['edituser'] = 'A felhasználói azonosítók szerkesztése'; -$string['email'] = 'E-mail cím'; -$string['emailactive'] = 'E-mail bekapcsolva'; -$string['emailagain'] = 'E-mail (ismét)'; -$string['emailconfirm'] = 'Az új felhasználói azonosító visszaigazolása'; -$string['emailconfirmation'] = 'Üdvözöljük, $a->firstname. Új azonosító létrehozását igényelték a(z) \'$a->sitename\' oldalon az Ön e-mail címének a felhasználásával. -Új azonosítójának megerõsítéséhez látogasson el ide: $a->link. Általában a levelezõ programokban ez kék ugrópontként jelenik meg, amelyre csak kattintania kell. Ha ez nem mûködik, másolja ki a címet böngészõablak tetején lévõ címsorba. Ha segítségre van szüksége, lépjen kapcsolatba a portál adminisztrátorával: $a->admin'; -$string['emailconfirmationsubject'] = '$a: azonosító visszaigazolása'; -$string['emailconfirmsent'] = '

                        Egy e-mailt kellett kapnia az Ön $a címére.

                        -

                        A levél a regisztráció kitöltéséhez szükséges egyszerû teendõket tartalmazza.

                        -

                        Ha továbbra is nehézségekbe ütközik, lépjen kapcsolatba a portál adminisztrátorával.

                        '; -$string['emaildigest'] = 'Gyûjteményes e-mail'; -$string['emaildigestcomplete'] = 'Teljes (napi e-mail minden hozzászólással)'; -$string['emaildigestoff'] = 'Nincs gyûjtemény (egyedi e-mail a fórum hozzászólásaként)'; -$string['emaildigestsubjects'] = 'Témák (napi e-mail csak a témákkal)'; -$string['emaildisable'] = 'Ez az e-mail cím ki van kapcsolva.'; -$string['emaildisableclick'] = 'Ide kattintva kapcsoljon ki minden erre a címre küldendõ e-mailt.'; -$string['emaildisplay'] = 'E-mail cím megmutatása'; -$string['emaildisplaycourse'] = 'Csak a kurzus résztvevõi láthatják az e-mail címemet'; -$string['emaildisplayno'] = 'Senki nem láthatja az e-mail címemet'; -$string['emaildisplayyes'] = 'Mindenki láthatja az e-mail címemet'; -$string['emailenable'] = 'Ez az e-mail cím be van kapcsolva.'; -$string['emailenableclick'] = 'Ide kattintva kapcsolhat vissza minden erre a címre küldendõ e-mailt.'; -$string['emailexists'] = 'Ez az e-mail cím már regisztrálva van.'; -$string['emailformat'] = 'E-mail formátuma'; -$string['emailmustbereal'] = 'Megjegyzés: az e-mail címnek valódinak kell lennie'; -$string['emailnotallowed'] = 'Ezeken a doméneken e-mail címek nem használhatók ($a)'; -$string['emailonlyallowed'] = 'Ez az e-mail nincs az engedélyezettek között ($a)'; -$string['emailpasswordconfirmation'] = 'Üdvözöljük, $a->firstname. Valaki (feltehetõleg Ön) egy új jelszó létrehozását igényelte a(z) $a->sitename oldalon az Ön azonosítójának a felhasználásával. Ennek megerõsítéséhez és a jelszónak az Ön e-mail címére való elküldéséhez térjen át erre a webes címre: $a->link. Általában a levelezõ programokban ez kék ugrópontként jelenik meg, amelyre csak kattintania kell. Ha ez nem mûködik, másolja ki a böngészõablak tetején lévõ címsorba. Ha segítségre van szüksége, lépjen kapcsolatba a portál adminisztrátorával: $a->admin.'; -$string['emailpasswordconfirmationsubject'] = '$a: jelszómódosítás visszaigazolása'; -$string['emailpasswordconfirmsent'] = '

                        Egy e-mailt kellett kapnia az Ön $a címére.

                        A levél a regisztráció kitöltéséhez szükséges egyszerû teendõket tartalmazza.

                        Ha továbbra is nehézségekbe ütközik, lépjen kapcsolatba a portál adminisztrátorával.

                        '; -$string['emailpasswordsent'] = '

                        Köszönjük a jelszómódosítás visszaigazolását.

                        Egy e-mailt kellett kapnia az Ön $a címére.

                        Az új jelszó automatikusan elkészült - elõfordulhat, hogy szeretné link\">jelszavát kicserélni valamilyen könnyebben megjegyezhetõre.

                        '; -$string['enable'] = 'Bekapcsolás'; -$string['encryptedcode'] = 'Titkosított kód'; -$string['enrolledincourse'] = 'A(z) \"$a\" kurzusra beíratva'; -$string['enrolledincoursenot'] = 'A(z) \"$a\" kurzusra nincs beíratkozva'; -$string['enrollfirst'] = 'A portál tevékenységeibe való bekapcsolódás elõtt fel kell íratkoznia valamely kurzusra.'; -$string['enrolme'] = 'Írasson be erre a kurzusra'; -$string['enrolmentconfirmation'] = 'Kurzustagként fogja magát beíratni.
                        Biztosan ezt kívánja tenni?'; -$string['enrolmentkey'] = 'Beíratkozási kód'; -$string['enrolmentkeyfrom'] = 'Ez a kurzus egy \'beíratkozási kódot\' igényel - amely egy egyszeri
                        jelszó, melyet $a -tól kellett megkapnia '; -$string['enrolmentkeyhint'] = 'Ez a beíratkozási kód nem megfelelõ, próbálja újra
                        (Segítségként: \'$a\' -val kezdõdik)'; -$string['enrolmentnew'] = 'Új beíratkozás ide: $a'; -$string['enrolmentnewuser'] = '$a->user beíratkozott a(z) \"$a->course\" kurzusra'; -$string['enrolmentnointernal'] = 'Jelenleg kézi úton nem lehet beíratkozni'; -$string['enrolmentnotyet'] = 'Sajnos a kurzus nem elérhetõ eddig
                        $a'; -$string['enrolments'] = 'Beíratkozások'; -$string['enrolperiod'] = 'Beíratkozási idõszak'; -$string['entercourse'] = 'Kattintással lépjen be a kurzusba'; -$string['enteremailaddress'] = 'Jelszavának törléséhez és új jelszavának e-mailen történõ elküldéséhez írja be az e-mail címét.'; -$string['entries'] = 'Bejegyzések'; -$string['error'] = 'Hiba'; -$string['errortoomanylogins'] = 'Sajnos túllépte a bejelentkezéshez megengedett próbálkozások maximális számát. Indítsa újra a böngészõt.'; -$string['errorwhenconfirming'] = 'Még nem kapott megerõsítést, mert hiba lépett fel. Ha egy e-mailen keresztül jutott ide, gyõzõdjön meg arról, hogy az e-mail küldése során a címnek nem csak egy részét adta-e meg. Lehet, hogy a kapcsolat helyreállításához be kell másolni a címet.'; -$string['everybody'] = 'Mindenki'; -$string['executeat'] = 'Végrehajtási idõ'; -$string['existing'] = 'Létezõ'; -$string['existingadmins'] = 'Létezõ adminisztrátorok'; -$string['existingcourse'] = 'Létezõ kurzus'; -$string['existingcourseadding'] = 'Létezõ kurzus, adatok hozzáadása'; -$string['existingcoursedeleting'] = 'Létezõ kurzus, elõször törlöm'; -$string['existingcreators'] = 'Létezõ kurzusszerzõk'; -$string['existingstudents'] = 'Beíratkozott tanulók'; -$string['existingteachers'] = 'Létezõ tanárok'; -$string['explanation'] = 'Magyarázat'; -$string['failedloginattempts'] = '$a->attempts sikertelen bejelentkezés utolsó bejelentkezése óta'; -$string['failedloginattemptsall'] = '$a->attempts sikertelen bejelentkezés $a->accounts esetén'; -$string['feedback'] = 'Visszajelzés'; -$string['file'] = 'Fájl'; -$string['filemissing'] = '$a hiányzik'; -$string['files'] = 'Fájlok'; -$string['filesfolders'] = 'Fájlok/könyvtárak'; -$string['filloutallfields'] = 'Töltsön ki minden mezõt ezen az ûrlapon'; -$string['findmorecourses'] = 'További kurzusok keresése...'; -$string['firstdayofweek'] = '0'; -$string['firstname'] = 'Utónév'; -$string['firsttime'] = 'Most van itt elõször?'; -$string['followingoptional'] = 'A következõk kitöltése nem kötelezõ'; -$string['followingrequired'] = 'A következõk kitöltése kötelezõ'; -$string['force'] = 'Érvényesítés'; -$string['forcedmode'] = 'érvényesítési mód'; -$string['forcelanguage'] = 'Nyelv érvényesítése'; -$string['forceno'] = 'Érvényesítés nélkül'; -$string['forcepasswordchange'] = 'Jelszómódosítás elõírása'; -$string['forcepasswordchangehelp'] = 'Felhasználó felhívása a módosításra következõ bejelentkezés alkalmával'; -$string['forcetheme'] = 'Téma elõírása'; -$string['forgotten'] = 'Elfelejtette nevét vagy jelszavát?'; -$string['format'] = 'Forma'; -$string['formathtml'] = 'HTML-forma'; -$string['formatmarkdown'] = 'Markdown-forma'; -$string['formatplain'] = 'Egyszerû szöveg'; -$string['formatsocial'] = 'Fórumforma'; -$string['formattext'] = 'Moodle automatikus formátuma'; -$string['formattexttype'] = 'Formázás'; -$string['formattopics'] = 'Témák formája'; -$string['formatweeks'] = 'Heti forma'; -$string['formatwiki'] = 'Wiki-forma'; -$string['from'] = '-tól/-tõl'; -$string['frontpagecategorynames'] = 'Kategóriák felsorolása'; -$string['frontpagecourselist'] = 'Kurzusok felsorolása'; -$string['frontpagedescription'] = 'Kezdõoldal leírása'; -$string['frontpageformat'] = 'Kezdõoldal formája'; -$string['frontpagenews'] = 'Hírek megjelenítése'; -$string['fulllistofcourses'] = 'Minden kurzus'; -$string['fullname'] = 'Teljes név'; +$string['action'] = "Tevékenység"; +$string['activities'] = "Tevékenységek"; +$string['activity'] = "Tevékenység"; +$string['activityclipboard'] = "A következõ tevékenység mozgatása: \$a"; +$string['activityiscurrentlyhidden'] = "Ez a a tevékenység jelenleg rejtett"; +$string['activitymodule'] = "Tevékenység modul"; +$string['activityreport'] = "Tevékenység tudósítása"; +$string['activityselect'] = "A tevékenység kiválasztása átmozgatásra"; +$string['activitysince'] = "Aktivitás \$a idõpont óta"; +$string['add'] = "Hozzáadás"; +$string['addadmin'] = "Admin hozzáadása"; +$string['addcreator'] = "Kurzuskészítõ hozzáadása"; +$string['added'] = "\$a hozzáadva"; +$string['addinganew'] = "Új \$a hozzáadása"; +$string['addinganewto'] = "Új \$a->what hozzáadása \$a->to -hoz"; +$string['addnewcategory'] = "Új kategória hozzáadása"; +$string['addnewcourse'] = "Új tanfolyam hozzáadása"; +$string['addnewuser'] = "Új felhasználó hozzáadása"; +$string['address'] = "Cím"; +$string['addstudent'] = "Résztvevõ hozzáadása"; +$string['addteacher'] = "Tanár hozzáadása"; +$string['admin'] = "Admin"; +$string['adminhelpaddnewuser'] = "Új felhasználó manuális létrehozása"; +$string['adminhelpassignadmins'] = "Adminok b ármit csinálhatnak és bárhová mehetnek az oldalon"; +$string['adminhelpassigncreators'] = "Kurzuskészítõk új kurzusokat hozhatnak létre és azokban taníthatnak"; +$string['administration'] = "Adminisztráció"; +$string['administrator'] = "Adminisztrátor"; +$string['administrators'] = "Adminisztrátorok"; +$string['again'] = "ismét"; +$string['all'] = "Minden"; +$string['alldays'] = "Minden nap"; +$string['allfieldsrequired'] = "Minden mezõ kötelezõ"; +$string['alllogs'] = "Minden naplóbejegyzés"; +$string['allow'] = "Engedélyezve"; +$string['allowguests'] = "Ez a kurzus megengedi vendégek belépését"; +$string['allownot'] = "Nincs engedélyezve"; +$string['allparticipants'] = "Minden résztvevõ"; +$string['alphanumerical'] = "Csak alfanumerikus karaktereket tartalmazhat"; +$string['alreadyconfirmed'] = "A regisztráció már megerõsítést nyert"; +$string['answer'] = "Válasz"; +$string['areyousuretorestorethis'] = "Kívánja folytatni?"; +$string['assessment'] = "Értékelés"; +$string['assignadmins'] = "Adminok hozzárendelése"; +$string['assignstudents'] = "Résztvevõ beiratása"; +$string['assignteachers'] = "Tanárok hozzárendelése"; +$string['authentication'] = "Hitelesítés"; +$string['autosubscribe'] = "Automatikus feliratkozás a fórumra"; +$string['autosubscribeno'] = "Nem: nem iratkozom automatikusan a fórumokra"; +$string['autosubscribeyes'] = "Igen: ha hozzászólok, feliratkozok a fórumra"; +$string['availability'] = "Elérhetõség"; +$string['availablecourses'] = "Elérhetõ tanfolyamok"; +$string['backup'] = "Biztonsági mentés"; +$string['backupdate'] = "Biztonsági mentés dátuma"; +$string['backupdetails'] = "Biztonsági mentés részletei"; +$string['backupfilename'] = "biztonsági mentés"; +$string['backupfinished'] = "A biztonsági mentés sikerült"; +$string['backupnameformat'] = "%%Y%%m%%d-%%H%%M"; +$string['backuporiginalname'] = "Mentés neve"; +$string['backupversion'] = "Mentés verziószáma"; +$string['cancel'] = "Mégsem"; +$string['categories'] = "Tanfolyam kategóriák"; +$string['category'] = "Kategória"; +$string['categoryadded'] = "A '\$a' kategória hozzáadása megtörtént"; +$string['categorydeleted'] = "A '\$a' kategória törlése megtörtént"; +$string['categoryduplicate'] = "'\$a' nevû kategória már létezik!"; +$string['changedpassword'] = "Megváltozott jelszó"; +$string['changepassword'] = "Jelszó megváltoztatása"; +$string['changessaved'] = "Változások mentése"; +$string['checkingbackup'] = "Mentés ellenõrzése"; +$string['checkingcourse'] = "Kurzus ellenõrzése"; +$string['checkinginstances'] = "Példányok ellenõrzése"; +$string['checkingsections'] = "Szekciók ellenõrzése"; +$string['checklanguage'] = "Nyelv ellenõrzése"; +$string['choose'] = "Válaszzon"; +$string['choosecourse'] = "Válasszon tanfolyamot"; +$string['chooselivelogs'] = "Vagy nézzen jelenlegi tevékenységet"; +$string['chooselogs'] = "Válassza ki a látni kívánt naplóbejegyzéseket"; +$string['choosetheme'] = "Válasszon stílust"; +$string['chooseuser'] = "Válasszon felasználót"; +$string['city'] = "Város/falu"; +$string['cleaningtempdata'] = "Ideiglenes adatok törlése"; +$string['closewindow'] = "Ablak bezárása"; +$string['comparelanguage'] = "Az aktuális nyelv ellenõrzése és szerkesztése"; +$string['complete'] = "Kész"; +$string['configcountry'] = "Az itt beállított ország lesz az alapértelmezett új felhasználók számára. Ha a felhasználóknak választaniuk kell nyelvet, hagyja ezt üresen."; +$string['configdebug'] = "Ennek bekapcsolásával a PHP hibaüzenetei szaporodnak, több figyelmeztetõ üzenet fog megjelenni. Csak fejlesztõk számára hasznos."; +$string['configerrorlevel'] = "Válassza ki a PHP üzenetek kívánt mennyiségét. Általában a Normál a legjobb választás."; +$string['configgdversion'] = "A telepített GD verziót jelzi. Az alapértelmezett érték az automatikusan felismert telepített verzió száma. Ne változtassa, csak ha valóban tudja, mit csinál."; +$string['confightmleditor'] = "Megengedi-e vagy sem a beépített HTML szerkesztõ használatát. Ha meg is engedi, csak akkor jelenik meg, ha a felhasználó megfelelõ böngészõt használ (IE 5.5 vagy újabb). A felhasználók szintén választhatják azt, hogy nem használják."; +$string['configintro'] = "Ezen az oldalon megadhatja azon a konfigurációs változók számát, amelyek elõsegítik a Moodle problémamentes használatát a szerverén. Ne törõdjön túl sokat ezzel - az alapértelmezett értékek általában megfelelõek és késõbb bármikor visszatérhet erre az oldalra, hogy módosítsa a beállításokat."; +$string['configlang'] = "Válassza ki az oldal alpértelmezett nyelvét. A felhasználók késõbb ezt a saját részükre megváltoztathatják."; +$string['configlangdir'] = "A legtöbb nyelv balról jobbra ír, de néhány, mint pl. az arab vagy a héber jobbról balra."; +$string['configlocale'] = "Válassza ki az egész oldalra érvényes területi beállításokat - ez a nyelvi és dátum formátumokat érinti. A területi beállítás telepítve kell lennie a rendszeren. (pl. en_US vagy es_ES). Ha nem tudja melyiket válassza, hagyja üresen."; +$string['configlongtimenosee'] = "Ha a felhasználók hosszú ideig nem lépnek be, automatikusan ki lesznek iratva a kurzusokról. Ez a paraméter ezt az idõkorlátot adja meg."; +$string['configmaxeditingtime'] = "Az idõintervallumot adja meg, melyen belül a felhasználók javíthatják a fórum-hozzászólásaikat, naplóbejegyzéseiket stb. 30 perc általában megfelelõ érték."; +$string['configproxyhost'] = "Ha ez a szerver proxy-t igényel (pl. egy tûzfalat) az Internet-eléréshez, ide írja a proxy nevét és portszámát, egyébként hagyja üresen."; +$string['configslasharguments'] = "A fájlok (képek, feltöltések stb) egy 'perjeles paramétereket' használó szkripten keresztül érkeznek (itt a második lehetõség). Ez lehetõvé teszi a fájlok könnyebb cache-elését böngészõk, proxy-k stb. számára. Sajnos némely PHP szerverek nem engedik ezt a módszert, ezért ha problémája van feltöltött fájlok megtekintésével (pl. felhasználók képei), állítsa ezt a változót az elsõ lehetõségre."; +$string['configsmtphosts'] = "Adja meg egy vagy több helyi SMTP szerver teljes nevét, melyeket a Moodle használhat email küldésére(pl. 'mail.a.com' vagy 'mail.a.com;mail.b.com'). Ha üresen hagyja, a Moodle az alapértelmezett PHP email küldési módszert fogja használni."; +$string['configsmtpuser'] = "Ha fentebb megadott SMTP szervert, és a szerver felhasználó-azonosítást igényel, adja meg itt a felhasználónevet és jelszót."; +$string['configunzip'] = "Az unzip program helyét jelzi (csak Unix). Erre zip archívumok kicsomagolásánál lesz szükség."; +$string['configuration'] = "Beállítások"; +$string['configvariables'] = "Változók beállítása"; +$string['configwarning'] = "Óvatosan módosítsa ezeket a beállításokat, rossz értékek problémákat okozhatnak"; +$string['configzip'] = "Az zip program helyét jelzi (csak Unix). Erre zip archívumok létrehozásánál lesz szükség."; +$string['confirmed'] = "A regisztrációja elfogadva"; +$string['confirmednot'] = "A regisztáció visszaigazolása még nem történt meg!"; +$string['continue'] = "Folytatás"; +$string['cookiesenabled'] = "A böngészõjében engedélyeznie kell a cookie-kat. FIGYELEM: A névben és a jelszóban a kis és nagy betûk nem ugyanannak számítanak!!"; +$string['copy'] = "másolás"; +$string['copyingcoursefiles'] = "Kurzus fájlok másolása"; +$string['copyinguserfiles'] = "Felhasználói fájlok másolása"; +$string['copyingzipfile'] = "Zip fájlok másolása"; +$string['copyrightnotice'] = "Szerzõi jog fenntartva"; +$string['country'] = "Ország"; +$string['course'] = "Tanfolyam"; +$string['courseavailable'] = "A kurzus elérhetõ tanulók számára"; +$string['courseavailablenot'] = "A kurzus tanulók számára nem elérhetõ "; +$string['coursebackup'] = "Kurzus mentés"; +$string['coursecategories'] = "Kurzus kategóriák"; +$string['coursecategory'] = "Kurzus kategória"; +$string['coursecreators'] = "Kurzus készítõk"; +$string['coursefiles'] = "Kurzus fájlok"; +$string['courseformats'] = "Tanfolyam formák"; +$string['coursegrades'] = "Kurzus jegyek"; +$string['courseinfo'] = "Kurzus info"; +$string['courserestore'] = "Kurzus visszaállítása"; +$string['courses'] = "Tanfolyamok"; +$string['courseupdates'] = "Tanfolyam frissítések"; +$string['create'] = "Létrehozás"; +$string['createaccount'] = "Új felhasználó létrehozása"; +$string['createfolder'] = "Könyvtár létrehozása \$a - ban"; +$string['createuserandpass'] = "Új felhasználónév és jelszó létrehozása "; +$string['createziparchive'] = "Zip arhívum létrehozása"; +$string['creatingcategoriesandquestions'] = "Kategóriák és kérdések létrehozása"; +$string['creatingcoursemodules'] = "Kurzus modulok létrehozása"; +$string['creatinglogentries'] = "Napló bejegyzések létrehozása"; +$string['creatingnewcourse'] = "Új kurzus létrehozása"; +$string['creatingsections'] = "Szekciók létrehozása"; +$string['creatingtemporarystructures'] = "Ideiglenes struktúrák létrehozása"; +$string['creatingusers'] = "Felhasználók létrehozása"; +$string['creatingxmlfile'] = "XML fájl létrehozása"; +$string['currentlanguage'] = "Aktuális nyelv"; +$string['currentlocaltime'] = "az aktuális helyi idõ"; +$string['currentrelease'] = "Aktuális információ"; +$string['currentversion'] = "Aktuális verziószám"; +$string['databasechecking'] = "A Moodle adatbázis frissítése \$a->oldversion verzióról \$a->newversion verzióra..."; +$string['databasesetup'] = "Adatbázis létrehozása"; +$string['databasesuccess'] = "Az adatbázis frissítése sikerült"; +$string['databaseupgradebackups'] = "A mentés verziószáma: \$a"; +$string['databaseupgrades'] = "Az adatbázis frissítése"; +$string['day'] = "nap"; +$string['days'] = "nap"; +$string['defaultcoursefullname'] = "A kurzus teljes neve 101"; +$string['defaultcourseshortname'] = "CF101"; +$string['defaultcoursestudent'] = "Tanuló"; +$string['defaultcoursestudents'] = "Tanulók"; +$string['defaultcoursesummary'] = "Egy tömör és figyelemfelkeltõ bekezdést írjon arról, hogy mirõl is szól ez a kurzus"; +$string['defaultcourseteacher'] = "Tanár"; +$string['defaultcourseteachers'] = "Tanárok"; +$string['delete'] = "Törlés"; +$string['deletecheck'] = "Töröljem \$a -t?"; +$string['deletecheckfiles'] = "Biztosan törölni szeretné ezeket a fájlokat?"; +$string['deletecheckfull'] = "Biztosan törölni akarja a következõt: \$a ?"; +$string['deletecheckwarning'] = "A fájlok törlése"; +$string['deletecompletely'] = "Teljes törlés"; +$string['deletecourse'] = "Tanfolyam törlése"; +$string['deletecoursecheck'] = "Biztosan törölni akarja ezt a tanfolyamot és minden adatát?"; +$string['deleted'] = "Törölve"; +$string['deletedactivity'] = "Törölve \$a"; +$string['deletedcourse'] = "\$a teljesen törölve lett"; +$string['deletednot'] = "\$a nem törölhetõ!"; +$string['deletingcourse'] = "\$a törlése"; +$string['deletingexistingcoursedata'] = "Kurzus adatainak törlése"; +$string['deletingolddata'] = "Régi adatok törlése"; +$string['department'] = "Osztály"; +$string['description'] = "Leírás"; +$string['displayingfirst'] = "Csaka az elsõ \$a->count \$a->things jelenik meg"; +$string['displayingrecords'] = "\$a rekord megjelenítése"; +$string['displayingusers'] = "Felhasználók megjelenítése \$a->start -tól \$a->end -ig"; +$string['documentation'] = "Moodle dokumentáció"; +$string['donotask'] = "Nem kérdés"; +$string['downloadexcel'] = "Letöltés Excel formátumban"; +$string['downloadtext'] = "Letöltés szöveges formátumban"; +$string['doyouagree'] = "Az olvasott feltételekkel egyetért?"; +$string['edit'] = "\$a szerkesztése"; +$string['editcoursesettings'] = "Tanfolyam beállítások módosítása"; +$string['editinga'] = "\$a szerkesztése"; +$string['editmyprofile'] = "Profil módosítása"; +$string['editsummary'] = "A szerkesztés áttekintése"; +$string['editthisactivity'] = "A tevékenység szerkesztése"; +$string['editthiscategory'] = "A kategória szerkesztése"; +$string['edituser'] = "A felhasználói adatok szerkesztése"; +$string['email'] = "Email cím"; +$string['emailconfirm'] = "Az új felhasználó elfogadva"; +$string['emailconfirmation'] = "Üdvözöljük \$a->firstname, + +Új felhasználó létrehozását igényelték a '\$a->sitename' oldalon +e-mail címének felhasználásával. + +A jelentkezés visszaigazolásához, kérjük látogasson el a +következõ címre: + + \$a->link + +Üdvözlettel: + +'\$a->sitename' adminisztrátor, +\$a->admin"; +$string['emailconfirmationsubject'] = "\$a: account visszaigazolása"; +$string['emailconfirmsent'] = "

                        Egy email lett eküldve az Ön címére:\$a +

                        A regisztráció befejezéséhez szükséges egyszerû teendõket tartalmazza. +

                        Ha továbbra is nehézségekbe ütközik, lépjen kapcsolatba az oldal adminisztrátorával."; +$string['emaildisplay'] = "Email cím megmutatása"; +$string['emaildisplaycourse'] = "Csak a kurzus résztvevõi láthatják az email címemet"; +$string['emaildisplayno'] = "Senki nem láthatja az email címemet"; +$string['emaildisplayyes'] = "Mindenki láthatja az email címemet"; +$string['emailexists'] = "Ez az email cím már regisztrálva lett."; +$string['emailformat'] = "Email formátuma"; +$string['emailmustbereal'] = "Megj.: az email-címnek valódinak kell lennie"; +$string['emailpasswordconfirmationsubject'] = "\$a: megváltozott jelszó visszaigazolása"; +$string['enrolmentkey'] = "Beiratkozó kód"; +$string['enrolmentkeyfrom'] = "Ez a kurzus egy 'beiratkozó kódot' igényel - amely egy egyszeri
                        +jelszó, mely \$a -tól kapható meg"; +$string['enrolmentkeyhint'] = "Ez a beiratkozó kódot nem megfelelõ, próbálja újra
                        +(Egy tipp - '\$a' -val kezdõdik)"; +$string['entercourse'] = "Kattintással lépjen be a tanfolyamra"; +$string['enteremailaddress'] = "Írja be az email-címét jelszavának törléséhez, és új jelszavának emailen történõ elküldéséhez."; +$string['error'] = "Hiba"; +$string['errortoomanylogins'] = "Sajnos túllépte a bejelentkezések megengedett maximális számát. Indítsa újra a böngészõt."; +$string['existing'] = "Létezõ"; +$string['existingadmins'] = "Létezõ adminok"; +$string['existingcourse'] = "Létezõ kurzus"; +$string['existingteachers'] = "Létezõ tanárok"; +$string['feedback'] = "Visszajelzés"; +$string['filemissing'] = "\$a hiányzik"; +$string['files'] = "Fájlok"; +$string['filesfolders'] = "Fájlok/könyvtárak"; +$string['filloutallfields'] = "Töltsön ki minden mezõt ezen az ûrlapon"; +$string['findmorecourses'] = "További kurzusok"; +$string['firstname'] = "Keresztnév"; +$string['firsttime'] = "Most van itt elõször?"; +$string['followingoptional'] = "A következõk kitöltése nem kötelezõ"; +$string['followingrequired'] = "A következõk kitöltése kötelezõ"; +$string['forgotten'] = "Elfelejtette nevét vagy jelszavát? (Csak egyszer nyomja meg, mert minden megnyomáskor automatikusan új jelszó generálódik, amit emailben fog megkapni)"; +$string['format'] = "Formátum"; +$string['formathtml'] = "HTML formátum"; +$string['formatplain'] = "Szöveg formátum"; +$string['formatsocial'] = "Fórum formátum"; +$string['formattext'] = "Moodle auto-formátum"; +$string['formattexttype'] = "Formátum"; +$string['formattopics'] = "Tematikus formátuma"; +$string['formatweeks'] = "Heti formátum"; +$string['formatwiki'] = "Wiki formátum"; +$string['frontpagedescription'] = "Kezdõ oldal leírás"; +$string['frontpageformat'] = "Kezdõ oldal formátum"; +$string['fulllistofcourses'] = "Minden tanfolyam"; +$string['fullname'] = "Teljes név"; $string['fullnamedisplay'] = '$a->lastname $a->firstname'; -$string['fullprofile'] = 'Teljes profil'; -$string['fullsitename'] = 'A portál teljes neve'; -$string['functiondisabled'] = 'Ez a funkció jelenleg ki van kapcsolva'; -$string['gd1'] = 'GD 1.x telepítve'; -$string['gd2'] = 'GD 2.x telepítve'; -$string['gdneed'] = 'Az ábra megtekintéséhez GD telepítése szükséges'; -$string['gdnot'] = 'GD nincs telepítve'; -$string['go'] = 'Mehet'; -$string['gpl'] = 'Copyright (C) 1999-2004 Martin Dougiamas (http://dougiamas.com) Ez a program ingyenes szoftver; továbbadhatja és/vagy módosíthatja a Free Software Foundation által kibocsátott GNU General Public License feltételeinek a betartásával; vagy a licenc 2-es, vagy (választhatóan) annak bármely késõbbi verziója szerint. A programot abban a reményben adjuk közre, hogy hasznosnak bizonyul, azonban MINDENNEMÛ GARANCIA VÁLLALÁSA NÉLKÜL; ideértve az ELADHATÓSÁG vagy valamely KONKRÉT CÉLRA VALÓ ALKALMASSÁG garantálását. További részletekért lásd a GNU általános nyilvános licencét: http://www.gnu.org/copyleft/gpl.html'; -$string['grade'] = 'Pont'; -$string['grades'] = 'Pontok'; -$string['group'] = 'Csoport'; -$string['groupadd'] = 'Új csoport hozzáadása'; -$string['groupaddusers'] = 'A kiválasztott csoport hozzáadása'; -$string['groupfor'] = 'csoport számára'; -$string['groupinfo'] = 'Információk a kiválasztott csoportról'; -$string['groupinfoedit'] = 'Csoportbeállítások szerkesztése'; -$string['groupinfomembers'] = 'Információk a kiválasztott tagokról'; -$string['groupinfopeople'] = 'Információk a kiválasztott személyekrõl'; -$string['groupmembers'] = 'Csoporttagok'; -$string['groupmemberssee'] = 'Csoporttagok megtekintése'; -$string['groupmembersselected'] = 'A kiválasztott csoport tagjai'; -$string['groupmode'] = 'Csoportmód'; -$string['groupmodeforce'] = 'Csoportmód érvényesítése'; -$string['groupmy'] = 'A csoportom'; -$string['groupnonmembers'] = 'Csoportba nem tartozók'; -$string['groupnotamember'] = 'Ön nem tagja annak a csoportnak'; -$string['grouprandomassign'] = 'Véletlenszerû hozzárendelés az összes csoporthoz'; -$string['groupremove'] = 'A kiválasztott csoport eltávolítása'; -$string['groupremovemembers'] = 'A kiválasztott tagok eltávolítása'; -$string['groups'] = 'Csoportok'; -$string['groupsnone'] = 'Nincs csoport'; -$string['groupsseparate'] = 'Külön csoportok'; -$string['groupsvisible'] = 'Látható csoportok'; -$string['guestskey'] = 'A kóddal rendelkezõ vendégek beléphetnek'; -$string['guestsno'] = 'Nincs engedélyezve vendégeknek'; -$string['guestsnotallowed'] = ' \'$a\' nem engedélyezi vendégek belépését.'; -$string['guestsyes'] = 'A vendégek beléphetnek kód nélkül'; -$string['guestuser'] = 'Vendég felhasználó'; -$string['guestuserinfo'] = 'Ez egy speciális felhasználó, akinek csak olvasási joga van egyes kurzusokhoz.'; -$string['help'] = 'Súgó'; -$string['helpemoticons'] = 'Emotikonok használata'; -$string['helpformatting'] = 'A szövegformázásról'; -$string['helphtml'] = 'Hogyan írjunk html-t'; -$string['helpindex'] = 'Súgó fájlok mutatója'; -$string['helppicture'] = 'Hogyan töltsünk fel képet'; -$string['helpquestions'] = 'Hogyan tegyünk fel jó kérdéseket'; -$string['helpreading'] = 'Olvassa el figyelmesen'; -$string['helprichtext'] = 'A HTML-szerkesztõrõl'; -$string['helpsummaries'] = 'Az összegzésekrõl'; -$string['helptext'] = 'Hogyan írjunk szöveget'; -$string['helpwiki'] = 'Wikiszöveg készítése'; -$string['helpwriting'] = 'Írjunk figyelmesen'; -$string['hiddensections'] = 'Rejtett részek'; -$string['hiddensectionscollapsed'] = 'A rejtett részek tömör formában jelennek meg'; -$string['hiddensectionsinvisible'] = 'A rejtett részek teljesen láthatatlanok'; -$string['hide'] = 'Elrejtés'; -$string['hideadvancedsettings'] = 'Részletes beállítások elrejtése'; -$string['hidepicture'] = 'Kép elrejtése'; -$string['hidesettings'] = 'Beállítások elrejtése'; -$string['hits'] = 'Találatok'; -$string['hitsoncourse'] = '$a->username találatai a(z) $a->coursename kurzusban'; -$string['hitsoncoursetoday'] = '$a->username mai találatai a(z) $a->coursename kurzusban'; -$string['home'] = 'Kezdõlap'; -$string['hour'] = 'óra'; -$string['hours'] = 'óra'; -$string['howtomakethemes'] = 'Új téma készítése '; -$string['htmleditor'] = 'HTML-szerkesztõ használata (csak néhány böngészõ esetén)'; -$string['htmleditoravailable'] = 'A HTML-szerkesztõ elérhetõ.'; -$string['htmleditordisabled'] = 'Kikapcsolta a HTML-szerkesztõt a felhasználói profiljában'; -$string['htmleditordisabledadmin'] = 'Az adminisztrátor nem engedélyezte a HTML-szerkesztõ használatát ezen a portálon '; -$string['htmleditordisabledbrowser'] = 'A HTML-szerkesztõ nem elérhetõ, mert böngészõje nem kompatibilis '; -$string['htmlformat'] = 'Szerkesztett HTML-forma'; -$string['icqnumber'] = 'ICQ-szám'; -$string['idnumber'] = 'Azonosítószám'; -$string['importdata'] = 'Kurzusadatok importálása'; -$string['importdataexported'] = 'A forráskurzusa adatainak exportálása sikerült.
                        Folytassa a célkurzusába való importálással.'; -$string['importdatafinished'] = 'Az importálás megtörtént! '; -$string['importdatafrom'] = 'Kurzus keresése adatimportálához:'; -$string['importmetacoursenote'] = 'Ezen az ûrlapon adhat hozzá kurzusokat a metakurzusához (importálva a beíratkozásokat is)'; -$string['inactive'] = 'Nincs bekapcsolva'; -$string['include'] = 'Felvesz'; -$string['includeallusers'] = 'Felvesz minden felhasználót'; -$string['includecoursefiles'] = 'Kurzusfájlok felvétele'; -$string['includecourseusers'] = ' Kurzushasználók felvétele'; -$string['included'] = 'Felvéve'; -$string['includelogentries'] = 'Naplóbejegyzések felvétele'; -$string['includemodules'] = 'Modulok felvétele'; -$string['includeneededusers'] = 'Szükséges felhasználók felvétele'; -$string['includenoneusers'] = 'Nincs felhasználó-felvétel'; -$string['includeuserfiles'] = 'Felhasználói állományok felvétele'; -$string['info'] = 'Információ'; -$string['institution'] = 'Intézmény'; -$string['invalidemail'] = 'Érvénytelen e-mail cím'; -$string['invalidlogin'] = 'Érvénytelen bejelentkezés, próbálja újra'; -$string['ip_address'] = 'IP-cím'; -$string['jump'] = 'Ugrás'; -$string['jumpto'] = 'Ugrás...'; -$string['keep'] = 'Megtart'; -$string['langltr'] = 'Írás iránya balról-jobbra'; -$string['langrtl'] = 'Írás iránya jobbról balra'; -$string['language'] = 'Nyelv'; -$string['languagegood'] = 'Ez a nyelvi csomag friss! :-)'; -$string['lastaccess'] = 'Utolsó hozzáférés '; -$string['lastedited'] = 'Utolsó szerkesztés '; -$string['lastlogin'] = 'Utolsó bejelentkezés'; -$string['lastmodified'] = 'Utolsó módosítás'; -$string['lastname'] = 'Vezetéknév'; -$string['latestlanguagepack'] = 'A legfrissebb nyelvi csomagért látogasson el a moodle.org portálra'; -$string['latestnews'] = 'Legfrissebb hírek'; -$string['leavetokeep'] = 'A jelenlegi jelszó megtartásához hagyja üresen'; -$string['license'] = 'GPL-licenc'; -$string['liketologin'] = 'Szeretne egy teljes másik felhasználónévvel bejelentkezni?'; -$string['list'] = 'Lista'; -$string['listfiles'] = '$a -beli fájlok listája'; -$string['listofallpeople'] = 'Az összes személy felsorolása'; -$string['livelogs'] = 'Folyamatos napló a legutolsó óráról'; -$string['locale'] = 'hu'; -$string['location'] = 'Hely'; -$string['loggedinas'] = '$a néven jelentkezett be'; -$string['loggedinnot'] = 'Nincs bejelentkezve.'; -$string['login'] = 'Bejelentkezés'; -$string['login_failure_logs'] = 'Sikertelen bejelentkezések naplója'; -$string['loginas'] = 'Bejelentkezés mint'; -$string['loginguest'] = 'Bejelentkezés vendégként'; -$string['loginsite'] = 'Belépés a portálra'; -$string['loginsteps'] = 'Üdvözüljük! Ahhoz, hogy teljesen hozzáférjen a kurzusokhoz, új felhasználót kell létrehoznia ehhez a weboldalhoz. Minden kurzushoz hozzátartozhat egy egyszeri \"beíratkozó kód\", amelyre egyelõre nincs szüksége. A végrehajtandó lépések: -

                          -
                        1. Töltse ki az Új felhasználó ûrlap adatait.
                        2. -
                        3. Egy e-mailt kap a saját címére közvetlenül a kitöltés után.
                        4. -
                        5. Olvassa el az e-mailt és kattintson a benne talált ugrópontra.
                        6. -
                        7. Azonosítóját ekkor a rendszer visszaigazolja, Ön pedig sikeresen be is jelentkezett.
                        8. -
                        9. Ekkor válassza ki azt a kurzust, melynek résztvevõje kíván lenni.
                        10. -
                        11. Ha egy \"beíratkozó kódot\" kér a rendszer, írja be azt, amelyet a tanár adott Önnek. Ezzel \"be is íratkozott\" a kurzusra.
                        12. -
                        13. Ezután szabadon elérheti a kurzust. A továbbiakban csak a felhasználónevét és a jelszavát kell beírnia (az ezen az oldalon lévõ ûrlapba) a bejelentkezéshez. Ezután minden kurzushoz hozzáfér, melyre beíratkozott.
                        14. -
                        '; -$string['loginstepsnone'] = '

                        Üdvözüljük!

                        -

                        Ahhoz, hogy teljesen hozzáférjen a kurzusokhoz, új felhasználót kell létrehoznia.

                        -

                        Csupán egy felhasználónevet és jelszót kell létrehoznia, azután beírnia az ezen az oldalon lévõ ûrlapba!

                        Ha valaki már választotta a kívánt felhasználónevet, akkor újra kell próbálkoznia egy másik névvel.

                        '; -$string['loginto'] = 'Belépés $a -ra'; -$string['loginusing'] = 'Lépjen be itt a nevével és a jelszavával'; -$string['logout'] = 'Kilépés'; -$string['logs'] = 'Naplók'; -$string['logtoomanycourses'] = '[ url\">tovább ]'; -$string['logtoomanyusers'] = '[ url\">tovább ]'; -$string['mailadmins'] = 'Adminisztrátorok értesítése'; -$string['mailstudents'] = 'Tanulók értesítése'; -$string['mailteachers'] = 'Tanárok értesítése'; -$string['mainmenu'] = 'Fõmenü'; -$string['makeafolder'] = 'Könyvtár létrehozása'; -$string['makeeditable'] = 'Ha \'$a\' -t a webszerver folyamata által (pl. apache) írhatóvá teszi, akkor ezt a fájlt közvetlenül szerkesztheti errõl az oldalról'; -$string['manageblocks'] = 'Blokkok'; -$string['managedatabase'] = 'Adatbázis'; -$string['managefilters'] = 'Szûrõk'; -$string['managemeta'] = 'Ez metakurzus?'; -$string['managemetadisabled'] = 'Ki van kapcsolva, mert a kurzus már metakurzusban szerepel'; -$string['managemetaexplan'] = '(Ez azt jelenti, hogy a beíratkozások más kurzusokból öröklõdtek)'; -$string['managemodules'] = 'Modulok'; -$string['markedthistopic'] = 'A téma aktuális témának van kijelölve'; -$string['markthistopic'] = 'A téma kiválasztása aktuális témának'; -$string['maximumchars'] = 'Maximum $a karakter'; -$string['maximumgrade'] = 'Maximális pontszám '; -$string['maximumshort'] = 'Max.'; -$string['maximumupload'] = 'Maximális feltöltési méret'; -$string['maxsize'] = 'Max. méret: $a'; -$string['metaaddcourse'] = 'Kurzus hozzáadása'; -$string['metaalreadycourses'] = 'Már kijelölt kurzusok'; -$string['metaalreadyhascourses'] = 'Ennek a metakurzusnak már vannak alkurzusai.'; -$string['metaalreadyhasenrolments'] = 'Ehhez a kurzushoz már vannak szokásos beíratkozások.'; -$string['metaalreadyinmeta'] = 'Ez a kurzus már része egy metakurzusnak.'; -$string['metaassigncourses'] = 'Kurzusok kijelölése'; -$string['metacourse'] = 'Metakurzus'; -$string['metanoalreadycourses'] = 'Nincsenek még kurzusok kijelölve'; -$string['metanopotentialcourses'] = 'Nincsenek még kurzusok'; -$string['metapotentialcourses'] = 'A kurzusok elérhetõk'; -$string['metaremovecourse'] = 'Kurzus eltávolítása'; -$string['min'] = 'min.'; -$string['mins'] = 'perc'; -$string['minutes'] = 'perc'; -$string['miscellaneous'] = 'Egyéb'; -$string['missingcategory'] = 'Kategóriát kell választania'; -$string['missingcity'] = 'Hiányzó város'; -$string['missingcountry'] = 'Hiányzó ország'; -$string['missingdescription'] = 'Hiányzó leírás'; -$string['missingemail'] = 'Hiányzó e-mail cím'; -$string['missingfirstname'] = 'Hiányzó keresztnév'; -$string['missingfullname'] = 'Hiányzó teljes név'; -$string['missinglastname'] = 'Hiányzó vezetéknév'; -$string['missingname'] = 'Hiányzó név'; -$string['missingnewpassword'] = 'Hiányzó új jelszó'; -$string['missingpassword'] = 'Hiányzó jelszó'; -$string['missingshortname'] = 'Hiányzó rövid név'; -$string['missingshortsitename'] = 'Nincs rövid név a portálhoz'; -$string['missingsitedescription'] = 'Hiányzó oldalleírás'; -$string['missingsitename'] = 'Hiányzó portálnév'; -$string['missingstrings'] = 'Hiányzó szövegek keresése'; -$string['missingstudent'] = 'Választania kell valamit'; -$string['missingsummary'] = 'Hiányzó összegzés'; -$string['missingteacher'] = 'Hiányzó tanár'; -$string['missingurl'] = 'Hiányzó URL'; -$string['missingusername'] = 'Hiányzó felhasználónév'; -$string['modified'] = 'Módosítva'; -$string['moduledeleteconfirm'] = 'A \'$a\' modult készül teljesen kitörölni. Ezzel kitöröl mindent, ami az adatbázisban ehhez a tevékenységmodulhoz kapcsolódik. BIZTOSAN folytatni kívánja?'; -$string['moduledeletefiles'] = 'A \'$a\' modulhoz kapcsolódó minden adat kitörlõdött az adatbázisból. A törlés befejezéséhez (és a modul újratelepülésének megelõzéséhez) ezt a könyvtárat ki kell most törölnie a szerverérõl: $a->directory'; -$string['modulesetup'] = 'Modultáblák létrehozása'; -$string['modulesuccess'] = 'A $a táblák létrehozása sikerült'; -$string['moodleversion'] = 'Moodle verziója'; -$string['more'] = 'tovább'; -$string['mostrecently'] = 'legutoljára'; -$string['move'] = 'Áthelyezés'; -$string['movecategoryto'] = 'Kategória áthelyezése a következõ helyre:'; -$string['movecourseto'] = 'Kurzus áthelyezése a következõ helyre:'; -$string['movedown'] = 'Lejjebb'; -$string['movefilestohere'] = 'Fájlok áthelyezése ide'; -$string['movefull'] = '$a áthelyezése ide'; -$string['movehere'] = 'Áthelyezés ide'; -$string['moveleft'] = 'Áthelyezés balra'; -$string['moveright'] = 'Áthelyezés jobbra'; -$string['moveselectedcoursesto'] = 'A kiválasztott kurzusok áthelyezése a következõ helyre:'; -$string['movetoanotherfolder'] = 'Áthelyezés másik könyvtárba'; -$string['moveup'] = 'Feljebb'; -$string['msnid'] = 'MSN-azonosító'; -$string['mustchangepassword'] = 'Az új jelszó nem lehet azonos a mostanival.'; -$string['mustconfirm'] = 'Meg kell erõsítenie a bejelentkezését'; -$string['mycourses'] = 'Kurzusaim'; -$string['name'] = 'Név'; -$string['namesocial'] = 'szekció'; -$string['nametopics'] = 'téma'; -$string['nameweeks'] = 'heti'; -$string['needed'] = 'Kell'; -$string['never'] = 'Soha'; -$string['neverdeletelogs'] = 'Soha ne törölje a naplókat'; -$string['new'] = 'Új'; -$string['newaccount'] = 'Új felhasználó'; -$string['newcourse'] = 'Új kurzus'; -$string['newpassword'] = 'Új jelszó'; -$string['newpasswordtext'] = 'Üdvözöljük, $a->firstname! Az Ön jelszava az \'$a->sitename\' portálon megváltozott és egy új ideiglenes jelszót kapott. A jelenlegi bejelentkezési információi: név: $a->username, jelszó: $a->newpassword. Kérjük, látogasson a következõ oldalra a jelszó megváltoztatásához: $a->link. Általában a levelezõ programokban ez kék ugrópontként jelenik meg, amelyre csak kattintania kell. Ha ez nem mûködik, másolja ki a címet böngészõablak tetején lévõ címsorba. Üdvözlettel: \'$a->sitename\' adminisztrátora, $a->signoff'; -$string['newpicture'] = 'Új kép'; -$string['newsitem'] = 'hír'; -$string['newsitems'] = 'hírek'; -$string['newsitemsnumber'] = 'Megjelenítendõ hírek'; -$string['newuser'] = 'Új felhasználó'; -$string['newusers'] = 'Új felhasználók'; -$string['next'] = 'Következõ'; -$string['no'] = 'Nem'; -$string['nobody'] = 'Senki'; -$string['nocoursesfound'] = 'A \'$a\' szavakkal nincsenek kurzusok'; -$string['nocoursesyet'] = 'Ebben a kategóriában nincsenek kurzusok'; -$string['nodstpresets'] = 'Az adminisztrátor nem kapcsolta be a nappali mentési idõpont támogatását.'; -$string['noexistingadmins'] = 'Nincs adminisztrátor, ez egy komoly hiba, ennek az üzenetnek soha nem volna szabad megjelennie.'; -$string['noexistingcreators'] = 'Nincsenek készítõk'; -$string['noexistingstudents'] = 'Nincsenek tanulók'; -$string['noexistingteachers'] = 'Nincsenek tanárok'; -$string['nofilesselected'] = 'A visszaállításhoz nincs fájl kiválasztva'; -$string['nofilesyet'] = 'A kurzusához még nincsenek fájlok feltöltve.'; -$string['nograde'] = 'Nincs pontszám'; -$string['noimagesyet'] = 'A kurzusához még nincsenek képek feltöltve.'; -$string['nomorecourses'] = 'Nincs több ennek megfelelõ kurzus'; -$string['nomoreidnumber'] = 'Nem használ azonosítószámot az ütközések elkerülésére'; -$string['none'] = 'Egy sincs'; -$string['nopotentialadmins'] = 'Nincs lehetséges adminisztrátor'; -$string['nopotentialcreators'] = 'Nincs lehetséges készítõ'; -$string['nopotentialstudents'] = 'Nincs lehetséges tanuló'; -$string['nopotentialteachers'] = 'Nincs lehetséges tanár'; -$string['noreplybouncemessage'] = 'Választ nem váró e-mail címre válaszolt. Ha fórumra próbált választ küldeni, használja ehelelyett a $a fórumokat. E-mailjének tartalma:'; -$string['noreplybouncesubject'] = '$a - visszapattanó e-mail.'; -$string['noreplyname'] = 'Ne válaszoljon erre az e-mailre'; -$string['noresults'] = 'Nincs eredmény'; -$string['normal'] = 'Szokásos'; -$string['normalfilter'] = 'Szokásos keresés'; -$string['nostudentsfound'] = 'Nincs $a'; -$string['nostudentsingroup'] = 'Ebben a csoportban még nincsenek tanulók'; -$string['nostudentsyet'] = 'Ebbe a kurzusba még nem íratkoztak be tanulók'; -$string['nosuchemail'] = 'Nincs ilyen e-mail cím'; -$string['notavailable'] = 'Nem elérhetõ'; -$string['noteachersyet'] = 'Ehhez a kurzushoz még nincsenek tanárok'; -$string['notenrolled'] = '$a nem íratkozott fel erre a kurzusra.'; -$string['noteuserschangednonetocourse'] = 'Megjegyzés: a kurzus felhasználói azonosítóit a felhasználói adatok helyreállítása során úgyszintén helyre kell állítani. Ezt a beállítást megváltoztattuk Önnek.'; -$string['nothingnew'] = 'Semmi hír az utolsó belépés óta'; -$string['noticenewerbackup'] = 'Ez a biztonsági mentés a Moodle $a->backuprelease ($a->backupversion) változatával készült, amely újabb a most telepített Moodle $a->serverrelease ($a->serverversion) szerverváltozatnál. Ezért némi eltérés fordulhat elõ, mert a mentett állományok kompatibilitása visszafelé nem garantálható.'; -$string['notifyloginfailuresmessage'] = '$a->time, IP: $a->ip, Felhasználó: $a->info'; -$string['notifyloginfailuresmessageend'] = 'Itt tekintheti meg ezeket a naplókat: $a/course/log.php?id=1&chooselog=1&modid=site_errors.'; -$string['notifyloginfailuresmessagestart'] = 'A(z) $a sikertelen bejelentkezési kísérleteinek felsorolása az Ön utolsó értesítése óta'; -$string['notifyloginfailuressubject'] = '$a :: értesítés sikertelen bejelentkezésekrõl'; -$string['notincluded'] = 'Nincs felvéve'; -$string['notingroup'] = 'Ezen tevékenység megtekintéséhez egy csoporthoz kell tartoznia.'; -$string['notpublic'] = 'Nem nyilvános!'; -$string['nousersmatching'] = 'Nincs a \'$a\' szerint megfelelõ felhasználó'; -$string['nousersyet'] = 'Még nincsenek felhasználók'; -$string['now'] = 'most'; -$string['numattempts'] = '$a sikertelen bejelentkezés'; -$string['numberweeks'] = 'Hetek/témák száma'; -$string['numdays'] = '$a nap'; -$string['numhours'] = '$a óra'; -$string['numminutes'] = '$a perc'; -$string['numseconds'] = '$a másodperc'; -$string['numviews'] = '$a nézet'; -$string['numweeks'] = '$a hét'; -$string['numwords'] = '$a szó'; -$string['numyears'] = '$a év'; -$string['ok'] = 'Rendben'; -$string['opentoguests'] = 'Vendég hozzáférése'; -$string['optional'] = 'választható'; -$string['order'] = 'Sorrend'; -$string['other'] = 'Más'; -$string['outline'] = 'Vázlat'; -$string['outlinereport'] = 'Vázlatjelentés'; -$string['page'] = 'Oldal'; -$string['pageheaderconfigablock'] = ' %%fullname%% egyik blokkjának beállítása'; -$string['parentcoursenotfound'] = 'A fõkurzus nem található! '; -$string['parentcoursenotmetacourse'] = 'A fõkurzus nem metakurzus!'; -$string['parentfolder'] = 'Fõkönyvtár'; -$string['participants'] = 'Résztvevõk'; -$string['password'] = 'Jelszó'; -$string['passwordchanged'] = 'A jelszó megváltozott'; -$string['passwordconfirmchange'] = 'Jelszóváltoztatás megerõsítése'; -$string['passwordrecovery'] = 'Igen, kérek segítséget a belépéshez'; -$string['passwordsdiffer'] = 'A jelszavak nem megfelelõek'; -$string['passwordsent'] = 'A jelszó elküldve'; -$string['passwordsenttext'] = '

                        Egy e-mailt küldtünk erre a címére: $a->email.

                        A levélben elolvashatja az új jelszót.

                        Az új jelszó automatikusan jött létre, így lehet, hogy Ön meg szeretné link\">változtatni egy könnyebben megjegyezhetõre.

                        '; -$string['pathnotexists'] = 'Az útvonal szerverén nem létezik!'; -$string['pathslasherror'] = 'Az útvonal nem végzõdhet perjellel!'; -$string['paymentinstant'] = 'A fizetéshez és a perceken belüli beíratkozáshoz használja az alábbi gombot!'; -$string['paymentrequired'] = 'Ebbe a kurzusba csak fizetés után léphet be.'; -$string['paymentsorry'] = 'Köszönjük a befizetést! Sajnos még nem sikerült teljesen feldolgozni, ezért nem íratkozhatott fel a(z) \"$a->fullname\" kurzusra. Próbáljon meg áttérni a kurzusra néhány másodperc múlva, de ha továbbra is gondja támad, szóljon a(z) $a->teacher-nak vagy a portál adminisztrátorának'; -$string['paymentthanks'] = 'Köszönjük a befizetést! Sikerült beíratkoznia erre a kurzusra:
                        \"$a\"'; -$string['people'] = 'Személyek'; -$string['personalprofile'] = 'Egyéni profil'; -$string['phone'] = 'Telefon'; -$string['phpinfo'] = 'PHP-vel kapcsolatos infó'; -$string['policyagree'] = 'A portál használatához el kell fogadnia a feltételeket. Elfogadja õket?'; -$string['policyagreement'] = 'Portál feltételeirõl szóló megállapodás'; -$string['policyagreementclick'] = 'Kattintson ide a portál feltételeirõl szóló megállapodás elolvasásához'; -$string['popupwindow'] = 'Fájl megnyitása új ablakban'; -$string['potentialadmins'] = 'Lehetséges adminisztrátorok'; -$string['potentialcreators'] = 'Lehetséges kurzuskészítõk'; -$string['potentialstudents'] = 'Lehetséges tanulók'; -$string['potentialteachers'] = 'Lehetséges tanárok'; -$string['preferredlanguage'] = 'Választott nyelv'; -$string['preferredtheme'] = 'Választott téma'; -$string['preview'] = 'Nyomtatási kép'; -$string['previeworchoose'] = 'Egy téma megtekintése vagy kiválasztása'; -$string['previous'] = 'Elõzõ'; -$string['profile'] = 'Profil'; -$string['publicdirectory'] = 'Nyilvános könyvtár'; -$string['publicdirectory0'] = 'Ezt a portál ne tegye közzé'; -$string['publicdirectory1'] = 'Csak a portál nevét tegye közzé'; -$string['publicdirectory2'] = 'A portál nevét egy ugróponttal tegye közzé'; -$string['publicsitefileswarning'] = 'Megjegyzés: az ide kerülõ állományokat bárki elérheti'; -$string['question'] = 'Kérdés'; -$string['readinginfofrombackup'] = 'Információk kiolvasása biztonsági mentésbõl'; -$string['readme'] = 'OLVASSEL'; -$string['recentactivity'] = 'Legutóbbi tevékenység'; -$string['recentactivityreport'] = 'Teljes jelentés a legutóbbi tevékenységrõl...'; -$string['recreatedcategory'] = '$a kategória újból létrehozva'; -$string['refreshingevents'] = 'Események frissítése'; -$string['registration'] = 'Moodle-regisztráció'; -$string['registrationcontact'] = 'Nyilvános elérés'; -$string['registrationcontactno'] = 'A portál jegyzékén nem kérek elérhetõségi ûrlapot.'; -$string['registrationcontactyes'] = 'Igen, a Moodle jövõbeli használói számára adjanak meg ûrlapot az elérhetõségemmel.'; -$string['registrationemail'] = 'E-mail értesítések'; -$string['registrationinfo'] = '

                        Ezen az oldalon regisztrálhatja Moodle-portálját a moodle.org címen. A regisztráció ingyenes. A regisztráció fõ elõnye, hogy felkerül egy alacsony forgalmú levelezõ listára, amelyben olyan fontos értesítéseket kap, mint pl. a biztonsági figyelmeztetések vagy a Moodle új változatai.

                        Alapbeállításban az Önrõl szóló információkat nem adjuk ki, nem értékesítjük és senki másnak nem adjuk át. Ezen információk összegyûjtése kizárólag a támogatást és a globális Moodle-közösséggel kapcsolatos statisztika céljait szolgálja.

                        Ha úgy gondolja, hozzáférhetõvé teheti portálja, országa nevét és az URL-t a Moodle-portálok nyilvános jegyzékéhez.

                        Minden új regisztrációt kézzel ellenõrzünk, mielõtt a jegyzékbe felvesszük. Felvétel után viszont lehetõsége lesz arra, hogy saját regisztrációját (és a nyilvános jegyzékben szereplõ adatait) bármikor frissítse a jelen ûrlap újbóli leadásával.

                        '; -$string['registrationno'] = 'Nem szeretnék e-mailt kapni'; -$string['registrationsend'] = 'Regisztrációs információk elküldése a moodle.org részére'; -$string['registrationyes'] = 'Igen, értesítsenek engem a fontos kérdésekrõl'; -$string['removeadmin'] = 'Adminisztrátor törlése'; -$string['removecreator'] = 'Kurzuskészítõ törlése'; -$string['removestudent'] = 'Tanuló törlése'; -$string['removeteacher'] = 'Tanár törlése'; -$string['rename'] = 'Átnevezés'; -$string['renamefileto'] = '$a átnevezése a következõre: '; -$string['required'] = 'Megadandó'; -$string['requireskey'] = 'A kurzushoz beíratkozó kódra van szükség'; -$string['requirespayment'] = 'A kurzus csak fizetés ellenében érhetõ el'; -$string['resortcoursesbyname'] = 'Kurzusok újrarendezése név szerint'; -$string['resources'] = 'Tananyagok'; -$string['restore'] = 'Visszaállítás'; -$string['restorecancelled'] = 'A visszaállítás törölve'; -$string['restorecoursenow'] = 'A kurzus visszaállítása most!'; -$string['restorefinished'] = 'A visszaállítás sikerült'; -$string['restoreto'] = 'Visszaállítás helye'; -$string['returningtosite'] = 'Visszatérés erre a portálra?'; -$string['revert'] = 'Visszatérés'; -$string['role'] = 'Szerep'; -$string['rss'] = 'RSS'; -$string['rssarticles'] = 'Újabb RSS-cikkek száma'; -$string['rsserror'] = 'Hiba RSS-adatok olvasása közben'; -$string['rsstype'] = 'RSS-frissítés ehhez a tevékenységhez'; -$string['savechanges'] = 'Változás mentése'; -$string['saveto'] = 'Mentés helye'; -$string['scale'] = 'Skála'; -$string['scales'] = 'Skálák'; -$string['scalescustom'] = 'Saját skálák'; -$string['scalescustomcreate'] = 'Új skála hozzáadása'; -$string['scalescustomno'] = 'Nincsenek még létrehozva saját skálák'; -$string['scalesstandard'] = 'Szokásos skálák'; -$string['scalestip'] = 'Saját skálák használatához válassza a \'Skálák ...\' pontot a kurzusadminisztrációs menübõl.'; -$string['schedule'] = 'Ütemezés'; -$string['scheduledbackupstatus'] = 'Ütemezett biztonsági mentés állapota'; -$string['screenshot'] = 'Képernyõkép'; -$string['search'] = 'Keresés'; -$string['searchagain'] = 'Keresés ismétlése'; -$string['searchcourses'] = 'Kurzusok keresése'; -$string['searchhelp'] = 'Egyszerre több szóra is rákereshet.

                        szó : a szó bármely elõfordulása a szövegben.
                        +szó : csak a pontos egyezést keresi ki.
                        -szó : az adott szót tartalmazó eredményeket kihagyja.'; -$string['searchresults'] = 'Keresés eredménye'; -$string['sec'] = 'mp'; -$string['secs'] = 'mp'; -$string['section'] = 'Szakasz'; -$string['sections'] = 'Szakaszok'; -$string['select'] = 'Választás'; -$string['selectacountry'] = 'Válasszon egy országot'; -$string['selectednowmove'] = '$a állomány áthelyezésre kiválasztva. Térjen át a célkönyvtárra és nyomja meg az \'Állományok áthelyezése ide\' gombot'; -$string['senddetails'] = 'Részletek elküldése e-mailben'; -$string['separateandconnected'] = 'Különálló és kapcsolt ismeretek'; -$string['serverlocaltime'] = 'Szerver szerinti helyi idõ'; -$string['settings'] = 'Beállítások'; -$string['shortname'] = 'Rövid név'; -$string['shortnametaken'] = 'Ezt a rövid nevet már egy másik kurzus használja ($a)'; -$string['shortsitename'] = 'A portál rövid neve (pl. egy szó)'; -$string['show'] = 'Megtekintés'; -$string['showadvancedsettings'] = 'Részletes beállítások megtekintése'; -$string['showall'] = 'Minden $a megjelenítése'; -$string['showallcourses'] = 'Minden kurzus megmutatása'; -$string['showalltopics'] = 'Minden téma megmutatása'; -$string['showallusers'] = 'Minden felhasználó megmutatása'; -$string['showallweeks'] = 'Az összes hét megmutatása'; -$string['showgrades'] = 'Pontok megmutatása'; -$string['showlistofcourses'] = 'Tanfolyamok jegyzékének megmutatása'; -$string['showonlytopic'] = 'Csak $a téma mutatása'; -$string['showonlyweek'] = 'Csak $a hét mutatása'; -$string['showrecent'] = 'Legutóbbi aktivitás megmutatása'; -$string['showreports'] = 'Aktivitási jelentés megmutatása'; -$string['showsettings'] = 'Beállítások megjelenítése'; -$string['showtheselogs'] = 'Ezen naplók megjelenítése'; -$string['since'] = 'Mióta'; -$string['sincelast'] = 'legutóbbi bejelentkezés óta'; -$string['site'] = 'Portál'; -$string['sitedefault'] = 'Portál alapbeállítása'; -$string['siteerrors'] = 'Portálhibák'; -$string['sitefiles'] = 'Portál állományai'; -$string['sitelogs'] = 'Portálnaplók'; -$string['sitenews'] = 'Portál hírei'; -$string['sitepartlist0'] = 'A portál résztvevõinek megtekintéséhez portáltanárának kell lennie'; -$string['sitepartlist1'] = 'A portál résztvevõinek megtekintéséhez tanárnak kell lennie'; -$string['sites'] = 'Portálok'; -$string['sitesection'] = 'Témával foglalkozó rész beszúrása'; -$string['sitesettings'] = 'A portál beállításai'; -$string['siteteachers'] = 'Portáltanárok'; -$string['size'] = 'Méret'; -$string['sizeb'] = 'bájt'; -$string['sizegb'] = 'Gb'; -$string['sizekb'] = 'Kb'; -$string['sizemb'] = 'Mb'; -$string['skypeid'] = 'Skype-azonosító'; -$string['socialheadline'] = 'Közös fórum - legutóbbi témák'; -$string['someallowguest'] = 'Egyes kurzusok megengedhetik vendégek hozzáférését'; -$string['someerrorswerefound'] = 'Valamilyen információ hiányzik vagy hibás. A részleteket lásd lentebb.'; -$string['sortby'] = 'Rendezési szempont'; -$string['specifyname'] = 'Nevet kell megadnia.'; -$string['startdate'] = 'A kurzus kezdésének dátuma'; -$string['startsignup'] = 'Kezdje új felhasználó létrehozásával!'; -$string['state'] = 'Állam/tartomány'; -$string['statistics'] = 'Statisztika'; -$string['status'] = 'Állapot'; -$string['strftimedate'] = '%%d %%B %%Y'; -$string['strftimedateshort'] = '%%d %%B'; -$string['strftimedatetime'] = '%%d %%B %%Y, %%I:%%M %%p'; -$string['strftimedaydate'] = '%%A, %%d %%B %%Y'; -$string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%I:%%M %%p'; -$string['strftimedayshort'] = '%%A, %%d %%B'; -$string['strftimedaytime'] = ' %%a, %%H:%%M'; -$string['strftimemonthyear'] = '%%B %%Y'; -$string['strftimerecent'] = '%%d %%b, %%H:%%M'; -$string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%I:%%M %%p'; -$string['strftimetime'] = '%%I:%%M %%p'; -$string['stringsnotset'] = 'A következõ szövegek nincsenek megadva $a -ban'; -$string['studentnotallowed'] = 'Erre a tanfolyamra nem tud belépni \'$a\' -ként'; -$string['students'] = 'Tanulók'; -$string['studentsandteachers'] = 'Tanulók és tanárok'; -$string['subcategories'] = 'Alkategóriák'; -$string['success'] = 'Sikerült'; -$string['summary'] = 'Összefoglaló'; -$string['summaryof'] = '$a összefoglalója'; -$string['supplyinfo'] = 'Adjon magáról némi információt'; -$string['teacheronly'] = 'csak $a számára'; -$string['teacherroles'] = '$a szerepei'; -$string['teachers'] = 'Tanárok'; -$string['textediting'] = 'Szöveg szerkesztésekor'; -$string['texteditor'] = 'Szokásos webes ûrlapok használata'; -$string['textformat'] = 'Egyszerû szöveg'; -$string['thanks'] = 'Köszönjük'; -$string['theme'] = 'Stílus'; -$string['themes'] = 'Stílusok'; -$string['themesaved'] = 'Új stílus elmentve'; -$string['thischarset'] = 'iso-8859-2'; -$string['thisdirection'] = 'balról jobbra'; -$string['thislanguage'] = 'Magyar'; -$string['time'] = 'Idõ'; -$string['timezone'] = 'Idõzóna'; -$string['to'] = 'Mihez'; -$string['today'] = 'Ma'; -$string['todaylogs'] = 'Mai naplók'; -$string['toomanybounces'] = 'Ez az e-mail cím túl sokszor nem fogadott üzenetet. Folytatáshoz meg kell változtatnia.'; -$string['toomanytoshow'] = 'Túl sok a megjelenítendõ felhasználó'; -$string['top'] = 'Fent'; -$string['topic'] = 'Téma'; -$string['topichide'] = 'Téma elrejtése $a elõl'; -$string['topicoutline'] = 'Téma vázlatos ismertetése'; -$string['topicshow'] = 'Téma megjelenítése $a részére'; -$string['total'] = 'Összes'; -$string['trysearching'] = 'Próbálkozzon inkább kereséssel.'; -$string['turneditingoff'] = 'Szerkesztés kikapcsolása'; -$string['turneditingon'] = 'Szerkesztés bekapcsolása'; -$string['undecided'] = 'Nincs eldöntve'; -$string['unenrol'] = 'Kiíratkozás'; -$string['unenrolallstudents'] = 'Minden tanuló kiíratkoztatása'; -$string['unenrolallstudentssure'] = 'Biztos benne, hogy minden tanulót teljesen ki akar íratkoztatni errõl a kurzusról?'; -$string['unenrolme'] = 'Kiíratkozom $a -ról'; -$string['unenrolsure'] = 'Biztosan ki akarja íratni $a -t errõl a kurzusról?'; -$string['unfinished'] = 'Nincs befejezve'; -$string['unknowncategory'] = 'Ismeretlen kategória'; -$string['unlimited'] = 'Korlátlan'; -$string['unpacking'] = '$a kicsomagolása'; -$string['unsafepassword'] = 'Nem biztonságos jelszó - próbálkozzon egy másikkal'; -$string['unusedaccounts'] = 'A $a napnál hosszabb ideig nem használt felhasználónév automatikusan kiíratkozik'; -$string['unzip'] = 'Kicsomagolás'; -$string['unzippingbackup'] = 'Biztonsági mentés kicsomagolása'; -$string['up'] = 'Fel'; -$string['update'] = 'Frissítés'; -$string['updated'] = '$a frissítve'; -$string['updatemyprofile'] = 'Profil frissítése'; -$string['updatesevery'] = 'Frissítés minden $a másodpercben'; -$string['updatethis'] = '$a frissítése'; -$string['updatethiscourse'] = 'A kurzus frissítése'; -$string['updatinga'] = '$a frissítése'; -$string['updatingain'] = 'Egy $a->what frissítése $a->in -ban'; -$string['upload'] = 'Feltöltés'; -$string['uploadafile'] = 'Egy fájl feltöltése'; -$string['uploadedfile'] = 'Az állomány feltöltése sikerült.'; -$string['uploadedfileto'] = '$a->file feltöltve a(z) $a- >directory könyvtárba'; -$string['uploadedfiletoobig'] = 'Sajnos az állomány túl nagy (maximum $a bájt lehet)'; -$string['uploadfailednotrecovering'] = 'Az állományok feltöltése nem sikerült, mert gond volt az egyik fájllal: $a->name.
                        Errõl a következõ napló készült:
                        $a->problem
                        . Nem lehet kijavítani.'; -$string['uploadfilelog'] = 'A)z) $a feltöltési naplója'; -$string['uploadformlimit'] = 'A feltöltött állomány mérete nagyobb, mint az ûrlapon megadott'; -$string['uploadlabel'] = 'Cím:'; -$string['uploadnofilefound'] = 'Nincs ilyen fájl. Biztos benne, hogy kiválasztott egyet feltöltésre?'; -$string['uploadnotallowed'] = 'Feltöltés nincs engedélyezve'; -$string['uploadoldfilesdeleted'] = 'A régi állomány(ok) törlõtek feltöltési területérõl'; -$string['uploadpartialfile'] = 'A(z) $a állomány feltöltése csak részben sikerült'; -$string['uploadproblem'] = 'Ismeretlen probléma lépett fel a(z) \'$a\' fájl feltöltésekor (talán túl nagy a fájl?)'; -$string['uploadrenamedchars'] = 'Érvénytelen karakterek miatt az állomány $a->oldname helyett $a->newname nevet kapott.'; -$string['uploadrenamedcollision'] = 'Névütközés miatt az állomány $a->oldname helyett $a->newname nevet kapott.'; -$string['uploadserverlimit'] = 'A feltöltött állomány mérete nagyobb, mint a szerver által megadott'; -$string['uploadthisfile'] = 'A fájl feltöltése'; -$string['uploadusers'] = 'Felhasználók feltöltése'; -$string['usedinnplaces'] = '$a helyen használva'; -$string['user'] = 'Felhasználó'; -$string['userconfirmed'] = '$a megerõsítve'; -$string['userdata'] = 'Felhasználói adatok'; -$string['userdeleted'] = 'Ez a felhasználó törölve lett'; -$string['userdescription'] = 'Leírás'; -$string['userfiles'] = 'Felhasználó állományai'; -$string['userlist'] = 'Felhasználók felsorolása'; -$string['username'] = 'Felhasználónév'; -$string['usernameexists'] = 'A felhasználónév már létezik, válasszon másikat'; -$string['usernotconfirmed'] = '$a nem volt megerõsíthetõ'; -$string['userprofilefor'] = 'Felhasználói profil $a számára'; -$string['users'] = 'Felhasználók'; -$string['usersnew'] = 'Új felhasználók'; -$string['userzones'] = 'Felhasználói zónák'; -$string['usethiscourse'] = 'Ezt a kurzust használja'; -$string['usingexistingcourse'] = 'Létezõ kurzus használata'; -$string['version'] = 'Változat'; -$string['view'] = 'Nézet'; -$string['virusfound'] = 'Figyelem, adminisztrátor! Az AV vírusölõ vírust talált a(z) $a->user által a(z) $a->course kurzushoz feltöltött állományban. Íme a vírusölõ jelentése:'; -$string['virusfoundlater'] = 'A(z) $a->date idõpontban a(z)$a->course kurzushoz feltöltött $a->filename nevû állományban a rendszer vírust talált. Az állományával a következõ történt: $a->action Ha ez leadott munka volt, lehetõsége van újbóli leadásra, hogy a tanára megtekinthesse.'; -$string['virusfoundlateradmin'] = 'Figyelem, adminisztrátor! A(z) $a->date idõpontban a(z) $a->course kurzushoz a(z) $a->user által feltöltött $a->filename nevû állományban a rendszer vírust talált. Az állománnyal a következõ történt: $a->action A felhasználót szintén értesítettük.'; -$string['virusfoundlateradminnolog'] = 'Figyelem, adminisztrátor! A(z) $a->filename nevû feltöltött állományban a rendszer vírust talált. A Moodle nem tudta visszajuttatni az állományt az azt eredetileg feltöltõ felhasználóhoz. Az állománnyal a következõ történt: $a->action A felhasználót szintén értesítettük.'; -$string['virusfoundsubject'] = '$a: Vírust találtam!'; -$string['virusfounduser'] = 'Az Ön által feltöltött $a->filename nevû állományban a rendszer vírust talált. Az állomány feltöltése NEM sikerült.'; -$string['virusplaceholder'] = 'A feltöltött $a->filename nevû állományban a rendszer vírust talált. Az állományt töröltük, a felhasználót értesítettük.'; -$string['visibletostudents'] = 'Láthatja: $a'; -$string['webpage'] = 'Honlap'; -$string['week'] = 'Hét'; -$string['weekhide'] = 'A jelen hét elrejtése $a elõl'; -$string['weeklyoutline'] = 'Heti formátum'; -$string['weekshow'] = 'A jelen hét megmutatása $a részére'; -$string['welcometocourse'] = 'Üdvözöljük a(z) $a -n'; -$string['welcometocoursetext'] = 'Üdvözöljük a(z) $a->coursename kurzuson! Ha még nem tette meg, állítsa be felhasználói profilját, hogy többet megtudjunk Önrõl: $a->profileurl'; -$string['whattocallzip'] = 'Mi legyen a tömörített állomány neve?'; -$string['withchosenfiles'] = 'A választott fájlokkal'; -$string['withoutuserdata'] = 'felhasználói adatok nélkül'; -$string['withuserdata'] = 'felhasználói adatokkal'; -$string['wordforstudent'] = 'Az Ön szava a tanulóra'; -$string['wordforstudenteg'] = 'pl. tanuló, résztvevõ stb.'; -$string['wordforstudents'] = 'Az Ön szava a tanulókra'; -$string['wordforstudentseg'] = 'pl. tanulók, résztvevõk stb.'; -$string['wordforteacher'] = 'Az Ön szava a tanárra'; -$string['wordforteachereg'] = 'pl. tanár, tutor, mentor stb.'; -$string['wordforteachers'] = 'Az Ön szava a tanárokra'; -$string['wordforteacherseg'] = 'pl. tanárok, tutorok, mentorok stb.'; -$string['writingcategoriesandquestions'] = 'Kategóriák és kérdések írása'; -$string['writingcoursedata'] = 'Kurzusadatok írása'; -$string['writingeventsinfo'] = 'Eseményinformációk írása'; -$string['writinggeneralinfo'] = 'Általános információk írása'; -$string['writinggroupsinfo'] = 'Csoportinformációk írása'; -$string['writingheader'] = 'Fejléc írása'; -$string['writingloginfo'] = 'Naplózási információk írása'; -$string['writingmessagesinfo'] = 'Üzenetinformációk írása'; -$string['writingmoduleinfo'] = 'Modulinformációk írása'; -$string['writingscalesinfo'] = 'Skálainformációk írása'; -$string['writinguserinfo'] = 'Felhasználói információk írása'; -$string['wrongpassword'] = 'A jelszó nem megfelelõ ehhez a névhez'; -$string['yahooid'] = 'Yahoo-azonosító'; -$string['yes'] = 'Igen'; -$string['youareabouttocreatezip'] = 'Most lát hozzá az alábbi tartalmú állomány tömörítéséhez'; -$string['youaregoingtorestorefrom'] = 'Most lát hozzá az alábbi folyamat helyreállításához'; -$string['yourlastlogin'] = 'Az utolsó bejelentkezése:'; -$string['yourself'] = 'Ön'; -$string['yourteacher'] = 'az Ön $a -(j)a'; -$string['zippingbackup'] = 'Biztonsági mentés tömörítése'; +$string['fullprofile'] = "Teljes profil"; +$string['fullsitename'] = "Az oldal teljes neve"; +$string['gd1'] = "GD 1.x telepítve"; +$string['gd2'] = "GD 2.x telepítve"; +$string['gdneed'] = "Az ábra megtekintéséhez GD telepítése szükséges"; +$string['gdnot'] = "GD nincs telepítve"; +$string['gpl'] = "Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com) + +Ez a program egy szabad szoftver; továbbadhatja és/vagy módosíthatja a Free Software Foundation +által kibocsátott GNU General Public License rendelkezései szerint; vagy a License 2-es, vagy +(választható) bármely késõbbi verzió szerint. + +A program annak reményében készült, hogy hasznos lesz, azonban MINDEN GARANCIA NÉLKÜL; még az ELADHATÓSÁG vagy egy SPECIÁLIS CÉLRA VALÓ ALKALMASSÁG garanciája nélkül is. További részletekért lásd a GNU General Public License -t: + +http://www.gnu.org/copyleft/gpl.html"; +$string['grade'] = "Osztályzat"; +$string['grades'] = "Osztályzatok"; +$string['guestskey'] = "A vendégek beléphetnek kóddal"; +$string['guestsno'] = "Nincs engedélyezve vendégeknek"; +$string['guestsnotallowed'] = "Sajnáljuk, '\$a' nem engedélyezi vendégek belépését."; +$string['guestsyes'] = "A vendégek beléphetnek kód nélkül"; +$string['guestuser'] = "Vendég felhasználó"; +$string['guestuserinfo'] = "Ez egy speciális felhasználó, melynek csak olvasási joga van némelyik tanfolyamhoz."; +$string['help'] = "Súgó"; +$string['helpformatting'] = "Szövegformázás"; +$string['helphtml'] = "Hogyan írjon html-t"; +$string['helpindex'] = "Súgó fájlko listása"; +$string['helppicture'] = "Hogyan töltsön fel képet"; +$string['helpquestions'] = "Hogyan tegyen fel jó kérdést"; +$string['helpreading'] = "Olvassa el figyelmesen"; +$string['helprichtext'] = "A Richtext szerkesztõrõl"; +$string['helptext'] = "Hogyan írjon"; +$string['helpwiki'] = "Wiki szöveg készítése"; +$string['helpwriting'] = "Írjon figyelmesen"; +$string['hide'] = "Elrejtés"; +$string['hits'] = "Találatok"; +$string['hitsoncourse'] = "\$a->username találatai \$a->coursename -n"; +$string['hitsoncoursetoday'] = "\$a->username mai találatai \$a->coursename -n"; +$string['home'] = "Kezdõlap"; +$string['hour'] = "óra"; +$string['hours'] = "óra"; +$string['howtomakethemes'] = "Új téma készítése hogyan"; +$string['htmleditor'] = "Richtext HTML szerkesztõ használata (csak IE 5.5-ös vagy késõbbi)"; +$string['htmleditoravailable'] = "A szövegformátum szerkesztõ elérhetõ."; +$string['htmleditordisabled'] = "Ön kikapcsolta a Richtext szerkesztõ használatát a felhasználói profiljában"; +$string['htmleditordisabledadmin'] = "Az adminisztrátor nem engedélyezte a Richtext szerkesztõ használatát ezen az oldalon"; +$string['htmleditordisabledbrowser'] = "A Richtext szerkesztõ nem elérhetõ, mert nem Internet Explorer 5.5 vagy újabb verziót használ"; +$string['htmlformat'] = "Szép HTML formátum"; +$string['icqnumber'] = "ICQ szám"; +$string['idnumber'] = "ID szám"; +$string['invalidemail'] = "Érvénytelen email cím"; +$string['invalidlogin'] = "Érvénytelen bejelentkezés, próbálja újra"; +$string['jumpto'] = "Ugrás..."; +$string['langltr'] = "Írás iránya balról-jobbra"; +$string['langrtl'] = "Írás iránya jobbról balra"; +$string['language'] = "Nyelv"; +$string['languagegood'] = "Ez a nyelvi csomag egész friss! :-)"; +$string['lastaccess'] = "Utoljára itt járt"; +$string['lastedited'] = "Utoljára szerkesztve"; +$string['lastmodified'] = "Utoljára módosítva"; +$string['lastname'] = "Vezetéknév"; +$string['latestnews'] = "Legfrisebb hírek"; +$string['leavetokeep'] = "Hagyja üresen a jelenlegi jelszó megõrzéséhez"; +$string['license'] = "GPL License"; +$string['list'] = "Lista"; +$string['listfiles'] = "\$a -beli fájlok listája"; +$string['listofallpeople'] = "Az összes személy listája"; +$string['livelogs'] = "Napló a legutolsó óráról"; +$string['locale'] = "hu"; +$string['location'] = "Hely"; +$string['loggedinas'] = "\$a néven jelentkezett be"; +$string['loggedinnot'] = "Nincs bejelentkezve."; +$string['login'] = "Bejelentkezés"; +$string['loginas'] = "Bejelentkezés mint"; +$string['loginguest'] = "Bejelentkezés vendégként"; +$string['loginsite'] = "Belépés az oldalra"; +$string['loginsteps'] = "Üdv! Ahhoz, hogy teljesen hozzáférjen a kurzusokhoz, új felhasználót kell létrehoznia ehhez a weboldalhoz. + Minden kurzus igényelhet egy egyszeri + "beiratkozó kódot", amelyre egyelõre nincs szüksége. A végrehajtandó lépések: +
                          +
                        1. Töltse ki az Új felhasználó ûrlap adatait. +
                        2. Egy email elküldésére kerül sor az Ön címére, rögtön a kitöltés után. +
                        3. Olvassa el az email-t, és kattintson a benne talált hivatkozásra. +
                        4. Az új felhasználó ekkor megerõsítést nyer, és Ön be lesz jelentkezve. +
                        5. Ekkor válassza ki azt a kurzust, melynek résztvevõje kíván lenni. +
                        6. Ha egy "beiratkozó kódra" van szükség - írja be azt, melyet az oktató adott Önnek. Ezzel "beiratkozott" a kurzusra. +
                        7. Ezután teljes hozzáférée van a kurzushoz. A továbbiakban csak a felhasználónevét és jelszavát kell beírnia (ezen az oldalon) a bejelentkezéshez, és minden kurzushoz hozzáfér, melyre beiratkozott. +
                        "; +$string['loginstepsnone'] = "Üdv!

                        Ahhoz, hogy teljesen hozzáférjen a kurzusokhoz, új felhasználót kell létrehoznia.

                        Csupán egy felhasználónevet és jelszót kell létrehoznia, azután beírnia ezen az oldalon!

                        Ha valaki már választotta a kívánt felhasználónevet, +akkor újra kell próbálkoznia egy másik névvel."; +$string['loginto'] = "Belépés \$a -ra"; +$string['loginusing'] = "Lépjen be itt a nevével és a jelszavával"; +$string['logout'] = "Kilépés"; +$string['logs'] = "Naplók"; +$string['mainmenu'] = "Fõmenü"; +$string['makeafolder'] = "Könyvtár létrehozása"; +$string['makeeditable'] = "Ha '\$a' -t a webszerver processz által (pl. apache) írhatóvá teszi, akkor ezt a fájlt közvetlenül szerkesztheti errõl az oldalról"; +$string['managedatabase'] = "Adatbáziskezelés"; +$string['managemodules'] = "Modulok"; +$string['markthistopic'] = "A téma kiválasztása aktuális témának"; +$string['maximumchars'] = "Maximum \$a karakter"; +$string['maximumgrade'] = "Maximum osztályzat"; +$string['maximumshort'] = "Max"; +$string['maxsize'] = "Max méret: \$a"; +$string['min'] = "min"; +$string['mins'] = "min"; +$string['miscellaneous'] = "Egyéb"; +$string['missingcategory'] = "Kategóriát kell választania"; +$string['missingcity'] = "Hiányzó város"; +$string['missingcountry'] = "Hiányzó ország"; +$string['missingdescription'] = "Hiányzó leírás"; +$string['missingemail'] = "Hiányzó email cím"; +$string['missingfirstname'] = "Hiányzó keresztnév"; +$string['missingfullname'] = "Hiányzó teljes név"; +$string['missinglastname'] = "Hiányzó vezetéknév"; +$string['missingnewpassword'] = "Hiányzó új jelszó"; +$string['missingpassword'] = "Hiányzó jelszó"; +$string['missingshortname'] = "Hiányzó rövid név"; +$string['missingshortsitename'] = "Hiányzó oldal rövid név"; +$string['missingsitedescription'] = "Hiányzó oldal leírás"; +$string['missingsitename'] = "Hiányzó oldal név"; +$string['missingstrings'] = "Hiányzó szövegek keresése"; +$string['missingstudent'] = "Választania kell valamit"; +$string['missingsummary'] = "Hiányzó tartalom"; +$string['missingteacher'] = "Hiányzó tanár"; +$string['missingurl'] = "Hiányzó URL"; +$string['missingusername'] = "Hiányzó felhasználónév"; +$string['modified'] = "Módosítva"; +$string['modulesetup'] = "Modul táblák létrehozása"; +$string['modulesuccess'] = "A \$a táblák létrehozása sikerült"; +$string['moodleversion'] = "Moodle verzió"; +$string['mostrecently'] = "legutoljára"; +$string['move'] = "Mozgatás"; +$string['movecategoryto'] = "Kategória mozgatása a következõ helyre:"; +$string['movecourseto'] = "Kurzus mozgatása a következõ helyre:"; +$string['movedown'] = "Le"; +$string['movefilestohere'] = "Fájlok mozgatása ide"; +$string['movefull'] = "\$a mozgatása ide"; +$string['movehere'] = "Mozgatás ide"; +$string['moveselectedcoursesto'] = "A kiválasztott kurzusok mozgatása a következõ helyre:"; +$string['movetoanotherfolder'] = "Mozgatás másik könyvtárba"; +$string['moveup'] = "Fel"; +$string['mustconfirm'] = "Meg kell erõsítenie a bejelentkezést"; +$string['mycourses'] = "Az Ön kurzusai"; +$string['name'] = "Név"; +$string['namesocial'] = "szekció"; +$string['nametopics'] = "tematikus"; +$string['nameweeks'] = "heti"; +$string['needed'] = "Kell"; +$string['never'] = "Soha"; +$string['new'] = "Új"; +$string['newaccount'] = "Új felhasználó"; +$string['newcourse'] = "Új kurzus"; +$string['newpassword'] = "Új jelszó"; +$string['newpasswordtext'] = "Üdvözöljük \$a->firstname, + +Az Ön jelszava az '\$a->sitename' oldalon megváltozott és egy új ideiglenes jelszavat kapott. + +A jelenlegi bejelentkezési információi: + név: \$a->username + jelszó: \$a->newpassword + +Kérjük látogasson a következõ oldalra a jelszó megváltoztatásához: + \$a->link + +Üdvözlettel +'\$a->sitename' Adminisztrátor, +\$a->signoff +"; +$string['newpicture'] = "Új kép (csak jpg formátum)"; +$string['newsitem'] = "hír"; +$string['newsitems'] = "hírek"; +$string['newsitemsnumber'] = "Megjelenítendõ hírek"; +$string['newuser'] = "Új felhasználó"; +$string['newusers'] = "Új felhasználók"; +$string['next'] = "Következõ"; +$string['no'] = "Nem"; +$string['nocoursesyet'] = "Ebben a kategóriában nincsenek tanfolyamok"; +$string['noexistingadmins'] = "Nincs admin, ez egy komoly hiba, ennek soha nem szabadna megjelennie."; +$string['noexistingcreators'] = "Nincsenek készítõk"; +$string['noexistingstudents'] = "Nincsenek tanulók"; +$string['noexistingteachers'] = "Nincsenek tanárok"; +$string['nofilesselected'] = "Nincs fájl kiválasztva"; +$string['nofilesyet'] = "Ehhez a tanfolyamhoz még nincsenek fájlok feltöltve."; +$string['nograde'] = "Nincs osztályzat"; +$string['noimagesyet'] = "Ehhez a tanfolyamhoz még nincsenek képek feltöltve."; +$string['none'] = "Nincs"; +$string['nopotentialadmins'] = "Nincs lehetséges admin"; +$string['nopotentialcreators'] = "Nincs lehetséges készítõ"; +$string['nopotentialstudents'] = "Nincs lehetséges tanuló"; +$string['nopotentialteachers'] = "Nincs lehetséges tanár"; +$string['normal'] = "Normál"; +$string['nostudentsyet'] = "Ehhez a tanfolyamhoz még nem iratkoztak be diákok"; +$string['nosuchemail'] = "Nincs ilyen email cím"; +$string['notavailable'] = "Nem elérhetõ"; +$string['noteachersyet'] = "Ehhez a tanfolyamhoz még nincsenek tanárok"; +$string['notenrolled'] = "\$a nem iratkozott fel erre a tanfolyamra."; +$string['nothingnew'] = "Semmi újdonság az utolsó belépés óta"; +$string['nousersyet'] = "Még nincsenek felhasználók"; +$string['now'] = "most"; +$string['numberweeks'] = "Hetek/témák száma"; +$string['numdays'] = "\$a nap"; +$string['numhours'] = "\$a óra"; +$string['numminutes'] = "\$a perc"; +$string['numviews'] = "\$a nézet"; +$string['numweeks'] = "\$a hét"; +$string['numwords'] = "\$a szó"; +$string['numyears'] = "\$a év"; +$string['ok'] = "OK"; +$string['opentoguests'] = "Vendég hozzáférés"; +$string['optional'] = "választható"; +$string['order'] = "Sorrend"; +$string['outline'] = "Forma"; +$string['page'] = "Oldal"; +$string['participants'] = "Résztvevõk"; +$string['password'] = "Jelszó"; +$string['passwordchanged'] = "A jelszó megváltozott"; +$string['passwordconfirmchange'] = "Jelszóváltoztatás megerõsítése"; +$string['passwordrecovery'] = "Igen, kérek segítséget a belépéshez"; +$string['passwordsdiffer'] = "A jelszavak nem megfelelõek"; +$string['passwordsent'] = "A jelszó elküldve"; +$string['passwordsenttext'] = "

                        Egy email lett elküldve az Ön címére: \$a->email. +

                        Kérjük olvassa el a levelet az új jelszóért +

                        Az új jelszó automatikusan jött létre, így lehet, hogy Ön meg szeretné + link>változtatni egy könnyebben megjegyezhetõre."; +$string['people'] = "Személyek"; +$string['personalprofile'] = "Személyes profil"; +$string['phone'] = "Telefon"; +$string['phpinfo'] = "PHP info"; +$string['popupwindow'] = "Fájl megnyitása új ablakban"; +$string['potentialadmins'] = "Lehetséges adminok"; +$string['potentialcreators'] = "Lehetséges készítõk"; +$string['potentialstudents'] = "Lehetséges tanulók"; +$string['potentialteachers'] = "Lehetséges tanárok"; +$string['preferredlanguage'] = "Választott nyelv"; +$string['preview'] = "Elõnézet"; +$string['previeworchoose'] = "Egy stílus megtekintése vagy kiválasztása"; +$string['question'] = "Kérdés"; +$string['readme'] = "OLVASSEL"; +$string['recentactivity'] = "Legutóbbi tevékenység"; +$string['registrationno'] = "Nem, nem szeretnék e-amilt kapni"; +$string['removeadmin'] = "Admin törlése"; +$string['removecreator'] = "Készítõ eltávolítása"; +$string['removestudent'] = "Tanuló eltávolítása"; +$string['removeteacher'] = "Tanár törlése"; +$string['rename'] = "Átnevezés"; +$string['renamefileto'] = "\$a átnevezése a következõre: "; +$string['requireskey'] = "A tanfolyam egy 'beiratkozó kódot igényel'"; +$string['resources'] = "Tananyagok"; +$string['restore'] = "Visszaállítás"; +$string['restorecancelled'] = "A visszaállítás nem történt meg"; +$string['restorecoursenow'] = "A kurzus visszaállítása most!"; +$string['restorefinished'] = "A visszaállítás sikerült"; +$string['returningtosite'] = "Visszatérés erre az oldalra?"; +$string['revert'] = "Visszatérés"; +$string['role'] = "Szerep"; +$string['savechanges'] = "Változás mentése"; +$string['search'] = "Keresés"; +$string['searchagain'] = "Keresés tovább"; +$string['searchresults'] = "Keresés eredménye"; +$string['sec'] = "mp"; +$string['secs'] = "mp"; +$string['section'] = "Szekció"; +$string['select'] = "Kiválasztás"; +$string['selectacountry'] = "Válaszzon egy országot"; +$string['senddetails'] = "Részletek küldése email-ben"; +$string['separateandconnected'] = "Separate and Connected ways of knowing"; +$string['serverlocaltime'] = "Szerver helyi idõ"; +$string['settings'] = "Beállítások"; +$string['shortname'] = "Rövid név"; +$string['shortsitename'] = "Az oldal rövid neve (pl. egy szó)"; +$string['show'] = "Megtekintés"; +$string['showall'] = "Minden \$a megjelenítése"; +$string['showallcourses'] = "Minden tanfolyam mutatása"; +$string['showalltopics'] = "Minden téma mutatása"; +$string['showallusers'] = "Minden felhasználó megjelenítése"; +$string['showallweeks'] = "Minden hét mutatása"; +$string['showlistofcourses'] = "tanfolyamlista mutatása"; +$string['showonlytopic'] = "Csak \$a téma mutatása"; +$string['showonlyweek'] = "Csak \$a hét mutatása"; +$string['showrecent'] = "Legutóbbi aktivitás megtekintése"; +$string['showtheselogs'] = "Naplók megtekintése"; +$string['site'] = "Oldal"; +$string['sitelogs'] = "Az oldal naplója"; +$string['sitenews'] = "Újdonságok az oldalon"; +$string['sites'] = "Oldalak"; +$string['sitesettings'] = "Az oldal beállításai"; +$string['size'] = "Méret"; +$string['socialheadline'] = "Közös fórum - legutóbbi témák"; +$string['someallowguest'] = "Néhány kurzus megengedheti a vendégek hozzáférését"; +$string['someerrorswerefound'] = "Valamilyen információ hiányzik, vagy hibás. A részleteket lásd lentebb."; +$string['startdate'] = "A kurzus kezdõ dátuma"; +$string['startsignup'] = "Kezdje új felhasználó létrehozásával!"; +$string['status'] = "Státusz"; +$string['stringsnotset'] = "A követekzõ szövegek nincsenek megadva \$a -ban"; +$string['studentnotallowed'] = "Erre a tanfolyamra sajnos nem tud belépni '\$a' -ként"; +$string['subcategories'] = "Alkategóriák"; +$string['success'] = "Sikerült"; +$string['summary'] = "Összefoglaló"; +$string['summaryof'] = "\$a összefoglalója"; +$string['supplyinfo'] = "Adjon magáról némi információt"; +$string['teacheronly'] = "csak \$a számára"; +$string['teachers'] = "Tanárok"; +$string['textediting'] = "Szöveg szerkesztésekor"; +$string['texteditor'] = "Standard web ûrlapok hsználata"; +$string['textformat'] = "Egyszerû szöveg formátum"; +$string['thanks'] = "Köszönjük"; +$string['theme'] = "Stílus"; +$string['themes'] = "Stílusok"; +$string['themesaved'] = "Új stílus mentve"; +$string['thischarset'] = "iso-8859-2"; +$string['thislanguage'] = "Magyar"; +$string['time'] = "Idõ"; +$string['timezone'] = "Idõzóna"; +$string['today'] = "Ma"; +$string['todaylogs'] = "Mai napló"; +$string['toomanytoshow'] = "Túl sok felhasználó"; +$string['topic'] = "Téma"; +$string['topicoutline'] = "Tantárgyak"; +$string['total'] = "Összes"; +$string['turneditingoff'] = "Szerkesztés kikapcsolása"; +$string['turneditingon'] = "Szerkesztés bekapcsolása"; +$string['undecided'] = "Nincs megadva"; +$string['unenrol'] = "Kiiratkozás"; +$string['unenrolme'] = "Kiiratkozom \$a -ról"; +$string['unenrolsure'] = "Biztosan ki akarja iratni \$a -t errõl a kurzusról?"; +$string['unknowncategory'] = "Ismeretlen kategória"; +$string['unsafepassword'] = "Nem biztonságos jelszó - próbáljon egy másikat"; +$string['unusedaccounts'] = "A \$a napnál hosszabb ideig nem használt felhasználónév automatikusan kiiratkozik"; +$string['unzip'] = "Unzip"; +$string['update'] = "Frissítés"; +$string['updated'] = "\$a frissítve"; +$string['updatemyprofile'] = "A profil frissítése"; +$string['updatesevery'] = "Frissítés minden \$a mpben"; +$string['updatethis'] = "\$a frissítése"; +$string['updatethiscourse'] = "A tanfolyam frissítése"; +$string['updatinga'] = "Egy \$a frissítése"; +$string['updatingain'] = "Egy \$a->what frissítése \$a->in -ban"; +$string['upload'] = "Feltöltés"; +$string['uploadafile'] = "Egy fájl feltöltése"; +$string['uploadedfileto'] = "\$a->file feltöltve a \$a- >directory könyvtárba"; +$string['uploadnofilefound'] = "Nincs ilyen fájl. Biztos benne, hogy kiválasztott egyet feltöltésre?"; +$string['uploadproblem'] = "Ismeretlen probléma lépett fel az '\$a' fájl feltöltésekor (talán túl nagy a fájl?)"; +$string['uploadthisfile'] = "A fájl feltöltése"; +$string['user'] = "Felhasználó"; +$string['userdeleted'] = "Ez a felhasználó törölve lett"; +$string['userdescription'] = "Leírás"; +$string['username'] = "Felhasználónév"; +$string['usernameexists'] = "A felhasználónév már létezik, válasszon másikat"; +$string['userprofilefor'] = "Felhasználói profil \$a számára"; +$string['users'] = "Felhasználók"; +$string['webpage'] = "Honlap"; +$string['week'] = "Hét"; +$string['weeklyoutline'] = "Heti formátum"; +$string['welcometocourse'] = "Üdvözöljük \$a -n"; +$string['welcometocoursetext'] = "Üdvözöljük a \$a->coursename kurzuson! + +Talán az elsõ dolog, amit érdemes megtenni: állítsa be az Ön felhasználói profilját, +hogy többet megtudjunk Önrõl: + + \$a->profileurl"; +$string['withchosenfiles'] = "A választott fájlokkal"; +$string['wordforstudent'] = "Az Ön szava a Tanulóra"; +$string['wordforstudenteg'] = "pl. Tanuló, Résztvevõ stb."; +$string['wordforstudents'] = "Az Ön szava a Tanulókra"; +$string['wordforstudentseg'] = "pl. Tanulók, Résztvevõk stb."; +$string['wordforteacher'] = "Az Ön szava a Tanárra"; +$string['wordforteachereg'] = "pl. Tanár, Oktató, Segítõ stb"; +$string['wordforteachers'] = "Az Ön szava a Tanárokra"; +$string['wordforteacherseg'] = "pl. Tanárok, Oktatók, Segítõk stb"; +$string['wrongpassword'] = "A jelszó ehhez a névhez nem megfelelõ"; +$string['yes'] = "Igen"; +$string['yourlastlogin'] = "Az utolsó bejelentkezése:"; +$string['yourself'] = "Ön"; +$string['yourteacher'] = "az Ön \$a -ja"; ?> diff --git a/lang/hu/multilang.php b/lang/hu/multilang.php deleted file mode 100644 index 9c063428c37..00000000000 --- a/lang/hu/multilang.php +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/lang/hu/pix.php b/lang/hu/pix.php deleted file mode 100644 index e9472d06b8f..00000000000 --- a/lang/hu/pix.php +++ /dev/null @@ -1,26 +0,0 @@ - diff --git a/lang/hu/questionnaire.php b/lang/hu/questionnaire.php deleted file mode 100644 index c0c1ed14402..00000000000 --- a/lang/hu/questionnaire.php +++ /dev/null @@ -1,16 +0,0 @@ -Eredményeinek rögzítéséhez töltse ki most ezt a kérdõívet. Máskor már nem lesz rá lehetõsége.

                        '; -$string['notavail'] = 'A kérdõív még nem elérhetõ. Próbálja meg késõbb.'; -$string['qmanage'] = 'Felmérések kezelése'; -$string['qmanagetitle'] = 'Felmérés phpESP-kezelése'; -$string['qtype'] = 'Típus'; -$string['questionnaireid'] = 'Felmérés'; -$string['respondenttype'] = 'Válaszadó típusa'; - -?> diff --git a/lang/hu/quiz.php b/lang/hu/quiz.php index 8ab7cb22ef6..81dca9b9739 100644 --- a/lang/hu/quiz.php +++ b/lang/hu/quiz.php @@ -1,324 +1,107 @@
                        Kérdéskategória kiválasztása vagy létrehozása után hozhat létree vagy szerkeszthet kérdéseket. A kérdések közül bármelyiket kiválaszthatja és hozzáadhatja az oldal másik felén lévõ teszthez.'; -$string['addquestions'] = 'Kérdések hozzáadása'; -$string['addquestionstoquiz'] = 'Kérdések hozzáadása ehhez a teszthez'; -$string['addrandom1'] = '<< Hozzáad'; -$string['addrandom2'] = 'véletlenszerû kérdések'; -$string['addselectedtoquiz'] = 'Kiválasztott hozzáadása a teszthez'; -$string['addtoquiz'] = 'Teszthez hozzáad'; -$string['affectedstudents'] = 'Érintett $a'; -$string['aiken'] = 'Aiken-forma'; -$string['allinone'] = 'Korlátlan'; -$string['allowreview'] = 'Ellenõrzés engedélyezése'; -$string['alreadysubmitted'] = 'Ezt a próbálkozást már feltehetõleg leadta'; -$string['alternativeunits'] = 'ALternatív egységek'; -$string['alwaysavailable'] = 'Mindig elérhetõ'; -$string['answer'] = 'Válasz'; -$string['answerhowmany'] = 'Egy vagy több válasz?'; -$string['answersingleno'] = 'Több válasz lehetséges'; -$string['answersingleyes'] = 'Csak egy válasz'; -$string['answerswithacceptederrormarginmustbenumeric'] = 'Az elfogadott hibát tartalmazó válaszok csak számjegyesek lehetnek'; -$string['answertoolong'] = 'A válasz a $a sor után túl hosszú (max. 255 kar.)'; -$string['aon'] = 'AON-forma'; -$string['attempt'] = '$a próbálkozás'; -$string['attemptduration'] = 'Felhasznált idõ'; -$string['attemptedon'] = 'Próbálkozás ideje'; -$string['attemptfirst'] = 'Elsõ próbálkozás'; -$string['attemptincomplete'] = 'A próbálkozás ($a által) még nem fejezõdött be.'; -$string['attemptlast'] = 'Utolsó próbálkozás'; -$string['attemptquiznow'] = 'Teszt megoldása most'; -$string['attempts'] = 'Próbálkozások'; -$string['attemptsallowed'] = 'Engedélyezett próbálkozás'; -$string['attemptsexist'] = 'A teszttel már történt próbálkozás'; -$string['attemptsunlimited'] = 'Korlátlan számú próbálkozás'; -$string['back'] = 'Vissza a kérdés elõzetes megtekintéséhez'; -$string['backtoquiz'] = 'Vissza a teszt szerkesztéséhez'; -$string['bestgrade'] = 'Legjobb pont'; -$string['blackboard'] = 'Blackboard'; -$string['calculated'] = 'kiszámított'; -$string['calculatedquestion'] = 'A kiszámított kérdés $a sornál nincs támogatva. A kérdés kihagyva. '; -$string['caseno'] = 'Nincs jelentõsége a kis-/nagybetûnek'; -$string['casesensitive'] = 'Kis-/nagybetû különbözõ'; -$string['caseyes'] = 'Igen, a kis-/nagybetûk különbözõek'; -$string['categories'] = 'Kategóriák'; -$string['category'] = 'Kategória'; -$string['categoryadded'] = '\'$a\' kategória hozzáadva'; -$string['categorydeleted'] = '\'$a\' kategória törölve'; -$string['categoryinfo'] = 'Kategória info'; -$string['categorymove'] = 'A(z) \'$a->name\' kategória $a->count kérdést tartalmaz. Válassza ki, melyik kategóriába kerüljenek át.'; -$string['categorymoveto'] = 'Ebbe a kategóriába kerüljenek át'; -$string['categorynoedit'] = 'A(z) \'$a\' kategóriához nincs szerkesztési jogosultsága.'; -$string['categoryupdated'] = 'A kategória frissítése sikerült'; -$string['checkanswer'] = 'Ellenõrzés'; -$string['choice'] = 'Választás'; -$string['choices'] = 'Lehetséges választások'; -$string['choosedatasetproperties'] = 'Adatbázis tulajdonságainak kiválasztása'; -$string['close'] = 'Elõzetes nézet bezárása'; -$string['confirmstartattempt'] = 'A teszt idõkorlátos. Biztosan el akarja kezdeni?'; -$string['copyingfrom'] = 'Másolat készül a(z) \'$a\' kérdésrõl'; -$string['copyingquestion'] = 'Kérdés másolása'; -$string['correctanswer'] = 'Jó válasz'; -$string['correctanswerformula'] = 'Jó válasz képlete'; -$string['correctanswerlength'] = 'Szignifikáns számjegyek'; -$string['correctanswers'] = 'Jó válaszok'; -$string['correctanswershows'] = 'Jó válasz látszik'; -$string['corrresp'] = 'Jó felelet'; -$string['countdown'] = 'Visszaszámlálás'; -$string['countdownfinished'] = 'A teszt véget ér, válaszait most adja le.'; -$string['countdowntenminutes'] = 'A teszt 10 percen belül véget ér.'; -$string['coursetestmanager'] = 'Kurzusteszt kezelési formája'; -$string['createfirst'] = 'Elõször készítsen néhány kiegészítendõ kérdést.'; -$string['createmultiple'] = 'Adjon a teszthez néhány véletlen kérdést '; -$string['createnewquestion'] = 'Új kérdés létrehozása'; -$string['custom'] = 'Saját forma'; -$string['datasetdefinitions'] = '$a kategóriához újrahasználható adatkészlet megadása'; -$string['datasetnumber'] = 'Szám'; -$string['daysavailable'] = 'Napok száma'; -$string['decimalformat'] = 'tizedes'; -$string['decimalpoints'] = 'tizedesjegy'; -$string['decimals'] = '$a-val'; -$string['default'] = 'Alapbeállítás'; -$string['defaultgrade'] = 'Alapbeállítás szerinti kérdéspont'; -$string['defaultinfo'] = 'Kérdések alapkategóriája'; -$string['deleteattemptcheck'] = 'Biztosan törölni akarja az összes próbálkozást?'; -$string['deletequestioncheck'] = 'Biztosan törölni akarja a(z) \'$a\' -t?'; -$string['deletequestionscheck'] = 'Biztosan törölni ezeket a kérdéseket?

                        $a
                        '; -$string['deleteselected'] = 'Kiválasztott törlése'; -$string['description'] = 'Leírás'; -$string['discrimination'] = 'Megkül. idex'; -$string['displayoptions'] = 'Kijelzési lehetõségek'; -$string['eachattemptbuildsonthelast'] = 'Minden próbálkozás az elõzõre épül'; -$string['editcategories'] = 'Kategóriák szerkesztése'; -$string['editcategory'] = 'Kategória szerkesztése'; -$string['editdatasets'] = 'Adatkészletek szerkesztése'; -$string['editingcalculated'] = 'Kiszámított kérdés szerkesztése'; -$string['editingdescription'] = 'Leírás szerkesztése'; -$string['editingmatch'] = 'Párosító kérdés szerkesztése'; -$string['editingmultianswer'] = 'Beépített válaszos (kitöltõ) kérdés szerkesztése'; -$string['editingmultichoice'] = 'Feleletválasztós kérdés szerkesztése'; -$string['editingnumerical'] = 'Számjegyes kérdés szerkesztése'; -$string['editingquestion'] = 'Kérdés szerkesztése'; -$string['editingquiz'] = 'Teszt szerkesztése'; -$string['editingrandom'] = 'Véletlen kérdés szerkesztése'; -$string['editingrandomsamatch'] = 'Véletlenszerû kiegészítéses párosító kérdés szerkesztése'; -$string['editingshortanswer'] = 'Editing a short answer question'; -$string['editingtruefalse'] = 'Editing a true/false question'; -$string['editquestions'] = 'Kérdések szerkesztése'; -$string['errorsdetected'] = '$a hiba fodult elõ'; -$string['existingcategory1'] = 'érték egy meglévõ, a kategórián belül más kérdésekben is használt értékhalmazból'; -$string['existingcategory2'] = 'állomány egy meglévõ, a kategórián belül más kérdésekben is használt fájlhalmazból'; -$string['existingcategory3'] = 'ugrópont egy meglévõ, a kategórián belül más kérdésekben is használt ugróponthalmazból'; -$string['exportfilename'] = 'teszt'; -$string['exportname'] = 'Fájlnév'; -$string['exportnameformat'] = '%%Y%%m%%d-%%H%%M'; -$string['exportquestions'] = 'Kérdések exportálása fájlba'; -$string['false'] = 'Hamis'; -$string['feedback'] = 'Visszajelzés'; -$string['file'] = 'Állomány'; -$string['fileformat'] = 'Állományforma'; -$string['filloutoneanswer'] = 'Legalább egy lehetséges választ ki kell töltenie. Kihagyott válaszok nem használhatók.'; -$string['filloutthreequestions'] = 'Legalább három kérdést ki kell töltenie. Kihagyott kérdések nem használhatók.'; -$string['fillouttwochoices'] = 'Legalább két választ ki kell töltenie. Kihagyott válaszok nem használhatók.'; -$string['forceregeneration'] = 'újrakészítés indítása'; -$string['fractionsaddwrong'] = 'A pozitív pontok összege nem 100%%, -
                        hanem $a%%. -
                        Visszatér és kijavítja ezt a kérdést?'; -$string['fractionsnomax'] = 'Valamelyik válasz legyen 100%%, enélkül nem -
                        lehet a kérdésre teljes pontot adni. -
                        Visszatér és kijavítja ezt a kérdést?'; -$string['functiontakesatleasttwo'] = 'A(z) $a függvénynek legalább két argumentummal kell rendelkezni.'; -$string['functiontakesnoargs'] = 'A(z) $a függvénynek nincsenek argumentumai'; -$string['functiontakesonearg'] = 'A(z) $a függvénynek pontosan egy argumentummal kell rendelkezni.'; -$string['functiontakesoneortwoargs'] = 'A(z) $a függvénynek egy vagy két argumentummal kell rendelkezni.'; -$string['functiontakestwoargs'] = 'A(z) $a függvénynek pontosan két argumentummal kell rendelkezni.'; -$string['generatevalue'] = 'Új érték létrehozása ezek között'; -$string['geometric'] = 'Geometriai'; -$string['gift'] = 'GIFT-forma'; -$string['grade'] = 'Pont'; -$string['gradeaverage'] = 'Átlagpont'; -$string['gradehighest'] = 'Legmagasabb pont'; -$string['grademethod'] = 'Pontozási módszer'; -$string['guestsno'] = 'Vendégek sajnos nem láthatnak és oldhatnak meg teszteket'; -$string['illegalformulasyntax'] = 'Hibás szintaxisú képlet \'$a\' ponttól'; -$string['imagedisplay'] = 'Mutatandó kép'; -$string['imagemissing'] = 'A(z) $a soron nincs meg a kép. Az állomány neve kihagyva.'; -$string['importquestions'] = 'Kérdések importálása innen'; -$string['indivresp'] = 'Személyek feleletei az egyes tételekre'; -$string['introduction'] = 'Bevezetés'; -$string['itemanal'] = 'Tételre adott feleletek elemzése'; -$string['itemdefinition'] = 'Meghatározás'; -$string['keptcategory1'] = 'egy érték ugyanabból az újrahasználható értékkészletbõl származik, mint korábban'; -$string['keptcategory2'] = 'egy állomány ugyanabból az újrahasználható készletbõl származik, mint korábban'; -$string['keptcategory3'] = 'egy ugrópont ugyanabból az újrahasználható készletbõl származik, mint korábban'; -$string['keptlocal1'] = 'egy érték ugyanabból a magánkérdéskészletbõl származik, mint korábban'; -$string['keptlocal2'] = 'egy állomány ugyanabból a magánkérdéskészletbõl származik, mint korábban'; -$string['keptlocal3'] = 'egy ugrópont ugyanabból a magánkérdéskészletbõl származik, mint korábban'; -$string['learnwise'] = 'Learnwise-forma'; -$string['link'] = 'Ugrópont'; -$string['listitems'] = 'Teszt tételeinek felsorolása'; -$string['literal'] = 'Érték'; -$string['loguniform'] = 'egységes logaritmusos szórásból származó számjegyek'; -$string['makecopy'] = 'Mentés új kérdésként'; -$string['marks'] = 'Jegyek'; -$string['match'] = 'Párosító'; -$string['matchanswer'] = 'Párosító válasz'; -$string['max'] = 'Max.'; -$string['min'] = 'Min.'; -$string['minutes'] = 'Perc'; -$string['missinganswer'] = 'Túl kevés :ANSWER, :Lx, :Rx megadva a(z) $a kérdéssorhoz. Legalább 2 lehetséges választ meg kell adnia'; -$string['missingcorrectanswer'] = 'A helyes választ meg kell adni'; -$string['missingname'] = 'Hiányzó kérdésnév'; -$string['missingquestion'] = '$a sor után hiányzó kérdéscímke'; -$string['missingquestiontext'] = 'Hiányzó kérdésszöveg'; -$string['missingword'] = 'Hiányzó szóforma'; -$string['modulename'] = 'Teszt'; -$string['modulenameplural'] = 'Tesztek'; -$string['moveto'] = 'Áthelyezés ide >>'; -$string['multianswer'] = 'Beépített válaszok (kitöltõ)'; -$string['multichoice'] = 'Feleletválasztós'; -$string['multiplier'] = 'Szorzó'; -$string['name'] = 'Név'; -$string['newcategory1'] = 'olyan új értékkészletbõl származó érték, amelyet a kategória más kérdései is használhatnak'; -$string['newcategory2'] = 'olyan új készletbõl származó állomány, amelyet a kategória más kérdései is használhatnak'; -$string['newcategory3'] = 'olyan új készletbõl származó ugrópont, amelyet a kategória más kérdései is használhatnak'; -$string['newlocal1'] = 'olyan új értékkészletbõl származó érték, amely csak ebben a kérdés fog szerepelni'; -$string['newlocal2'] = 'olyan új készletbõl származó állomány, amely csak ebben a kérdés fog szerepelni'; -$string['newlocal3'] = 'olyan új készletbõl származó ugrópont, amely csak ebben a kérdés fog szerepelni'; -$string['noanswers'] = 'Nincs kiválasztva válasz!'; -$string['noattempts'] = 'A tesztet még nem oldották meg'; -$string['noattemptsmatchingfilter'] = '$a részérõl ezekkel a monogrammal nincs próbálkozás'; -$string['nodataset'] = 'semmi - ez nem helyettesítõ karakter'; -$string['nominal'] = 'Névleges'; -$string['nomoreattempts'] = 'Több próbálkozás nem lehetségesNo more attempts are allowed'; -$string['nopossibledatasets'] = 'Nincsenek lehetséges adatkészletek'; -$string['noquestionintext'] = 'A kérdés szövegében nincs beépített kérdés'; -$string['noquestions'] = 'Nincs kérdés hozzáadva'; -$string['noresponse'] = 'Nincs felelet'; -$string['noreview'] = 'Ezt a tesztet nem ellenõrizheti'; -$string['noreviewuntil'] = 'Ezt a tesztet $a-ig nem ellenõrizheti'; -$string['noscript'] = 'A folytatáshoz be kell kapcsolni a JavaScriptet.'; -$string['notenoughanswers'] = 'Ehhez a kérdéshez legalább $a válaszra van szükség'; -$string['notenoughsubquestions'] = 'Kevés alkérdést adott meg!
                        Visszatér és kijavítja ezt a kérdést?'; -$string['numerical'] = 'Számjegyes'; -$string['optional'] = 'választható'; -$string['overdue'] = 'Lejárt'; -$string['paragraphquestion'] = '$a soron a paragrafuskérdés nincs támogatva. A kérdés kihagyva'; -$string['parent'] = 'Szülõ'; -$string['passworderror'] = 'A megadott jelszó hibás'; -$string['percentcorrect'] = 'százalék helyes'; -$string['popup'] = 'Teszt megadása \"biztonságos\" ablakban'; -$string['preview'] = 'Nyomtatási kép'; -$string['previewquestion'] = 'Kérdés nyomtatási képe'; -$string['publish'] = 'Közreadás'; -$string['publishedit'] = 'Engedéllyel kell rendelkeznie a közreadó kurzusban ahhoz, hogy a kategóriában kérdéseket adhasson hozzá és szerkeszthessen'; -$string['qti'] = 'IMS QTI forma'; -$string['question'] = 'Kérdés'; -$string['questioninuse'] = 'A(z) \'$a->questionname\' jelenleg a
                        $a->quiznames
                        között szerepel. A kérdés csak a kategóriák jegyzékébõl törlõdik, a tesztekbõl nem.he question will not be deleted from these quizzes but only from the category list.'; -$string['questionname'] = 'Kérdés neve'; -$string['questionnametoolong'] = 'A kérdés neve túl hosszú a(z) $a soron (max. 255 kar.) Innentõl levágva.'; -$string['questions'] = 'Kérdések'; -$string['questionsinuse'] = '(* A csillaggal jelölt kérdéseket már tesztek használják. A kérdések csak a kategóriák jegyzékébõl törlõdnek, a tesztekbõl nem. '; -$string['questionsperpage'] = 'Oldalankénti max. kérdésszám'; -$string['questiontypesetupoptions'] = 'Kérdéstípusok beállítási lehetõségei:'; -$string['quizavailable'] = 'Teszt elérhetõ eddig: $a'; -$string['quizclose'] = 'Teszt lezárása'; -$string['quizclosed'] = 'Teszt lezárva $a-án/-én'; -$string['quizcloses'] = 'Teszt véget ér'; -$string['quiznotavailable'] = 'Teszt elérhetõvé válik ekkor: $a'; -$string['quizopen'] = 'Teszt megnyitása'; -$string['quizopens'] = 'Teszt elérhetõ'; -$string['quiztimelimit'] = 'Idõkorlát: $a'; -$string['quiztimer'] = 'Teszt idõmérõje'; -$string['random'] = 'Véletlen kérdés'; -$string['randomcreate'] = 'Véletlen kérdések létrehozása'; -$string['randomsamatch'] = 'Véletlen kiegészítõ párosító'; -$string['randomsamatchcreate'] = 'Véletlen kiegészítõ párosító kérdések létrehozása'; -$string['randomsamatchintro'] = 'Az alábbi kérdésekhez válassza ki a megfelelõ választ a menübõl'; -$string['randomsamatchnumber'] = 'Választandó kérdések száma'; -$string['readytosend'] = 'Teljes tesztjét pontozásra készül beküldeni. Biztonsan folytatni kívánja?'; -$string['reattemptquiz'] = 'Teszt újbóli megoldása'; -$string['recentlyaddedquestion'] = 'Nemrégen hozzáadott kérdés!'; -$string['recurse'] = 'Alkategóriák kérdéseit is mutassa'; -$string['regrade'] = 'Regrade all attempts'; -$string['regradecomplete'] = 'All attempts have been regraded'; -$string['regradecount'] = '$a->attempt pontból $a->changed módosult'; -$string['relative'] = 'Relatív'; -$string['remove'] = 'Eltávolítás'; -$string['rename'] = 'Átnevezés'; -$string['replace'] = 'Csere'; -$string['replacementoptions'] = 'Csere itt'; -$string['report'] = 'Jelentések'; -$string['reportfullstat'] = 'Részletes statisztika'; -$string['reportmulti_percent'] = 'Többszörös százalék'; -$string['reportmulti_q_x_student'] = 'Több tanuló választása'; -$string['reportmulti_resp'] = 'Egyéni feleletek'; -$string['reportoverview'] = 'Áttekintés'; -$string['reportregrade'] = 'Próbálkozások újrapontozása'; -$string['reportsimplestat'] = 'Egyszerû statisztika'; -$string['requirepassword'] = 'Jelszó kérése'; -$string['requirepasswordmessage'] = 'A teszt megoldásához ismernie kell a teszt jelszavát'; -$string['requiresubnet'] = 'Hálózati cím kérése'; -$string['reuseifpossible'] = 'korábban eltávolított újbóli használata'; -$string['review'] = 'Ellenõrzés'; -$string['reviewafter'] = 'Teszt lezárása után ellenõrzés engedélyezése'; -$string['reviewalways'] = 'Ellenõrzés bármikori engedélyezése'; -$string['reviewbefore'] = 'Ellenõrzés engedélyezése, amíg a teszt nyitva van '; -$string['save'] = 'Mentés'; -$string['saveandedit'] = 'Változások mentése és kérdések szerkesztése'; -$string['savegrades'] = 'Pontok mentése'; -$string['savemyanswers'] = 'Válaszaim mentése'; -$string['savequiz'] = 'Teljes teszt mentése'; -$string['score'] = 'Nyers pontszám'; -$string['select'] = 'Választás'; -$string['selectall'] = 'Mind kiválasztása'; -$string['selectcategoryabove'] = 'Fentrõl kategória kiválasztása'; -$string['selectedattempts'] = 'Kiválasztott próbálkozások...'; -$string['selectnone'] = 'Összes kiválasztásának megszüntetése'; -$string['shortanswer'] = 'Rövid válasz'; -$string['show'] = 'Mutat'; -$string['showcorrectanswer'] = 'Visszajelzésben a helyes válaszok megjelenjenek?'; -$string['showfeedback'] = 'After answering, show feedback?'; -$string['showhidden'] = 'Régi kérdések is látsszanak'; -$string['shownoattempts'] = 'Próbálkozás nélküli tanulók jelzése'; -$string['showteacherattempts'] = 'Tanári próbálkozások jelzése'; -$string['shuffleanswers'] = 'Válaszok összekeverése'; -$string['shufflequestions'] = 'Kérdésel összekeverése'; -$string['significantfigures'] = '$a-val/-vel'; -$string['significantfiguresformat'] = 'szignifikáns számjegyek'; -$string['subneterror'] = 'Sajnos a teszt zárolva van és csak egyes helyekrõl érhetõ el. Jelenleg számítógépérõl nem használhatja a tesztet.'; -$string['substitutedby'] = '-t helyettesíti a(z)'; -$string['time'] = 'Idõ'; -$string['timecompleted'] = 'Kész'; -$string['timeleft'] = 'Hátralévõ idõ'; -$string['timelimit'] = 'Idõkorlát'; -$string['timelimitexeeded'] = 'Sajnos a tesztidõt túllépte!'; -$string['timesup'] = 'Ideje elgfogyott'; -$string['timetaken'] = 'Felhasznált idõ'; -$string['tolerance'] = 'Tûrés'; -$string['tolerancetype'] = 'Tûrés típusa'; -$string['toomanyrandom'] = 'A szükséges véletlen kérdések száma nagyobb, mint amennyit ez a kategória tartalmaz! ($a)'; -$string['top'] = 'Felsõ'; -$string['true'] = 'Igaz'; -$string['truefalse'] = 'Igaz/Hamis'; -$string['type'] = 'Típus'; -$string['uniform'] = 'egyenletes eloszlásból a tizedesek '; -$string['unit'] = 'Egység'; -$string['unknowntype'] = 'A kérdéstípust $a sornál a rendszer nem támogatja. A kérdést figyelmen kívül hagyja'; -$string['unsupportedformulafunction'] = 'A(z) $a funkciót a rendszer nem támogatja.'; -$string['viewallanswers'] = '$a kész tesztjeinek megtekintése'; -$string['viewallreports'] = '$a próbálkozások jelentéseinek megtekintése'; -$string['warningsdetected'] = '$a figyelmeztetés felderítve'; -$string['webct'] = 'WebCT-forma'; -$string['wildcard'] = 'Helyettesítõ'; -$string['withsummary'] = 'összegzõ statisztikával'; -$string['wronggrade'] = 'Hibás pont ($a sor után)'; -$string['xml'] = 'Moodle XML-forma'; -$string['yourfinalgradeis'] = 'Végsõ pontszáma ennél a tesztnél $a'; -$string['zerosignificantfiguresnotallowed'] = 'A jó válasznak nem lehet nulla szignifikáns számjegye!'; +$string['addselectedtoquiz'] = "Add selected to quiz"; +$string['alreadysubmitted'] = "It is likely that you have already submitted this attempt"; +$string['alwaysavailable'] = "Always available"; +$string['answer'] = "Válasz"; +$string['answerhowmany'] = "One or multiple answers?"; +$string['answersingleno'] = "Multiple answers allowed"; +$string['answersingleyes'] = "Csak egy válasz"; +$string['attempt'] = "Attempt \$a"; +$string['attemptfirst'] = "First attempt"; +$string['attemptlast'] = "Last attempt"; +$string['attemptquiznow'] = "Attempt quiz now"; +$string['attempts'] = "Attempts"; +$string['attemptsallowed'] = "Attempts allowed"; +$string['attemptsunlimited'] = "Unlimited attempts"; +$string['backtoquiz'] = "Back to quiz editing"; +$string['bestgrade'] = "Best grade"; +$string['caseno'] = "No, case is unimportant"; +$string['casesensitive'] = "Case sensitivity"; +$string['caseyes'] = "Yes, case must match"; +$string['categories'] = "Kategóriák"; +$string['category'] = "Kategória"; +$string['categoryinfo'] = "Kategória info"; +$string['categorymove'] = "The category '\$a->name' contains \$a->count questions. Please choose another category to move them to."; +$string['categorymoveto'] = "Move them to this category"; +$string['choice'] = "Egyszerû választás"; +$string['choices'] = "Lehetséges választások"; +$string['correctanswer'] = "Jó válasz"; +$string['correctanswers'] = "Jó válaszok"; +$string['createnewquestion'] = "Új kérdés létrehozása"; +$string['daysavailable'] = "Days available"; +$string['default'] = "Default"; +$string['defaultinfo'] = "The default category for questions."; +$string['deletequestioncheck'] = "Are you absolutely sure you want to delete '\$a'?"; +$string['editcategories'] = "Kategóriák szerkesztése"; +$string['editingmultichoice'] = "Editing a multiple choice question"; +$string['editingquestion'] = "Kérdés szerkesztése"; +$string['editingquiz'] = "Editing quiz"; +$string['editingshortanswer'] = "Editing a short answer question"; +$string['editingtruefalse'] = "Editing a true/false question"; +$string['false'] = "Hamis"; +$string['feedback'] = "Visszajelzés"; +$string['filloutoneanswer'] = "You must fill out at least one possible answer. Answers left blank will not be used."; +$string['fillouttwochoices'] = "You must fill out at least two choices. Choices left blank will not be used."; +$string['fractionsaddwrong'] = "The positive grades you have chosen do not add up to 100%% +
                        Instead, they add up to \$a%% +
                        Do you want to go back and fix this question?"; +$string['fractionsnomax'] = "One of the answers should be 100%%, so that it is +
                        possible to get a full grade for this question. +
                        Do you want to go back and fix this question?"; +$string['gradeaverage'] = "Average grade"; +$string['gradehighest'] = "Highest grade"; +$string['grademethod'] = "Grading method"; +$string['guestsno'] = "Sorry, guests can not see or attempt quizzes"; +$string['imagedisplay'] = "Image to display"; +$string['introduction'] = "Bevezetés"; +$string['marks'] = "Marks"; +$string['missingname'] = "A kérdés neve hiányzik"; +$string['missingquestiontext'] = "A kérdés szövege hiányzik"; +$string['modulename'] = "Quiz"; +$string['modulenameplural'] = "Quizzes"; +$string['multichoice'] = "Többszörös választás"; +$string['noanswers'] = "Nincs kiválasztva válasz!"; +$string['noattempts'] = "No attempts have been made on this quiz"; +$string['nomoreattempts'] = "No more attempts are allowed"; +$string['noquestions'] = "No questions have been added yet"; +$string['publish'] = "Publikálás"; +$string['question'] = "Kérdés"; +$string['questioninuse'] = "The question '\$a' is currently being used:"; +$string['questionname'] = "Question name"; +$string['questions'] = "Kérdések"; +$string['quizavailable'] = "The quiz is available until: \$a"; +$string['quizclose'] = "Close the quiz"; +$string['quizclosed'] = "This quiz closed on \$a"; +$string['quiznotavailable'] = "The quiz will not be available until: \$a"; +$string['quizopen'] = "Open the quiz"; +$string['random'] = "Random set"; +$string['readytosend'] = "You are about to send your whole quiz to be graded. Are you sure you want to continue?"; +$string['regrade'] = "Regrade all attempts"; +$string['regradecomplete'] = "All attempts have been regraded"; +$string['regradecount'] = "\$a->changed out of \$a->attempt grades were changed"; +$string['rename'] = "Átnevezés"; +$string['report'] = "Reports"; +$string['save'] = "Mentés"; +$string['savegrades'] = "Save grades"; +$string['savemyanswers'] = "Save my answers"; +$string['savequiz'] = "Save this whole quiz"; +$string['score'] = "Raw score"; +$string['select'] = "Select"; +$string['selectcategoryabove'] = "Select a category above"; +$string['shortanswer'] = "Short Answer"; +$string['show'] = "Show"; +$string['showcorrectanswer'] = "In feedback, show correct answers?"; +$string['showfeedback'] = "After answering, show feedback?"; +$string['time'] = "Idõ"; +$string['timecompleted'] = "Completed"; +$string['timetaken'] = "Time taken"; +$string['true'] = "Igaz"; +$string['truefalse'] = "Igaz/Hamis"; +$string['type'] = "Típus"; +$string['viewallanswers'] = "View \$a completed quizzes"; +$string['yourfinalgradeis'] = "Your final grade for this quiz is \$a"; ?> diff --git a/lang/hu/readme.txt b/lang/hu/readme.txt index de0c4578d50..bc9cadac33b 100644 --- a/lang/hu/readme.txt +++ b/lang/hu/readme.txt @@ -1,2 +1 @@ -Hungarian translation started by Istvan Bozsa (bozsa@jht.gau.hu), continued by Karoly Fabricz (kfabricz@mail.u-szeged.hu). -A Moodle fordítását Bozsa István kezdte el, az SZTE Távoktatási Központja részérõl Dr. Fábricz Károly (kfabricz@mail.u-szeged.hu) folytatta. +by Istvan Bozsa (bozsa@jht.gau.hu) diff --git a/lang/hu/resource.php b/lang/hu/resource.php index aaafb66c1d6..8472518ec2b 100644 --- a/lang/hu/resource.php +++ b/lang/hu/resource.php @@ -1,87 +1,40 @@ Fájlmenedzsert.'; -$string['notypechosen'] = 'Típust kell választania. A Vissza gombbal menjen az elõzõ oldalra és próbálja újból.'; -$string['pagedisplay'] = 'A tananyagot a mostani ablakban mutassa'; -$string['pagewindow'] = 'Ugyanaz az ablak'; -$string['pan'] = 'Tálca'; -$string['parameter'] = 'Paraméter'; -$string['parameters'] = 'Paraméterek'; -$string['popupresource'] = 'Ennek a tananyagnak elõbukkanó ablakban kell megjelenni.'; -$string['popupresourcelink'] = 'Ha nem, kattintson ide: $a'; -$string['resourcetype'] = 'Tananyag típusa'; -$string['resourcetype1'] = 'Hivatkozás'; -$string['resourcetype2'] = 'Weboldal'; -$string['resourcetype3'] = 'Feltöltött fájl'; -$string['resourcetype4'] = 'Egyszerû szöveg'; -$string['resourcetype5'] = 'Ugrópont'; -$string['resourcetype6'] = 'HTML-szöveg'; -$string['resourcetype7'] = 'Program'; -$string['resourcetype8'] = 'Wiki-szöveg'; -$string['resourcetype9'] = 'Könyvtár'; -$string['resourcetypedirectory'] = 'Könyvtár kijelzése'; -$string['resourcetypefile'] = 'Kapcsolás állományhoz vagy honlaphoz'; -$string['resourcetypehtml'] = 'Weboldal létrehozása'; -$string['resourcetypelabel'] = 'Címke beszúrása'; -$string['resourcetypetext'] = 'Szöveges oldal létrehozása'; -$string['searchweb'] = 'Weboldal keresése'; -$string['serverurl'] = 'Szerver URL-je ($a->wwwroot)'; -$string['variablename'] = 'Változó neve'; -$string['vol'] = 'Vol'; +$string['addresource'] = "Tananyag hozzáadása"; +$string['editingaresource'] = "Tananyag szerkesztése"; +$string['example'] = "Példa"; +$string['examplereference'] = "Tobin, K. & Tippins, D (1993) Constructivism as a Referent for Teaching and Learning. In: K. Tobin (Ed) The Practice of Constructivism in Science Education, pp 3-21, Lawrence-Erlbaum, Hillsdale, NJ."; +$string['exampleurl'] = "http://www.pelda.com/konyvtar/egyfajl.html"; +$string['filename'] = "Fájlnév"; +$string['fulltext'] = "Szöveg"; +$string['htmlfragment'] = "HTML részlet"; +$string['modulename'] = "Tananyag"; +$string['modulenameplural'] = "Tananyagok"; +$string['neverseen'] = "Ismeretlen"; +$string['newfullscreen'] = "Teljes képernyõs"; +$string['newheight'] = "Alapértelmezett ablakmagasság (pixel)"; +$string['newmenubar'] = "Menüsor megjelenítése"; +$string['newresizable'] = "Ablak átméretezésének engedélyezése"; +$string['newscrollbars'] = "Ablak gördítésének engedélyezése"; +$string['newstatus'] = "Státuszsor megmutatása"; +$string['newtoolbar'] = "Eszköztár megmutatása"; +$string['newwidth'] = "Alapértelmezett ablakszélesség (pixelben)"; +$string['newwindow'] = "Új ablak"; +$string['newwindowopen'] = "Ez a ttananyag új ablakban jelenjen meg"; +$string['note'] = "Megjegyzés"; +$string['notefile'] = "Egy vagy több fájl feltöltéséhez (ezután jelenik meg a listán) használja a +Fájl Menedzsert."; +$string['notypechosen'] = "Típust kell választania. A Vissza gombbal menjen az elõzõ oldalra és próbálja újból."; +$string['resourcetype'] = "Tananyag típusa"; +$string['resourcetype1'] = "Hivatkozás"; +$string['resourcetype2'] = "Web oldal"; +$string['resourcetype3'] = "Feltöltött fájl"; +$string['resourcetype4'] = "Egyszerû szöveg"; +$string['resourcetype5'] = "Web hivatkozás"; +$string['resourcetype6'] = "HTML szöveg"; +$string['resourcetype7'] = "Program"; +$string['resourcetype8'] = "Wiki szöveg"; ?> diff --git a/lang/hu/scorm.php b/lang/hu/scorm.php deleted file mode 100644 index f6cbbe47814..00000000000 --- a/lang/hu/scorm.php +++ /dev/null @@ -1,78 +0,0 @@ -tag elem attribútumánál ($a->attr).'; -$string['autocontinue'] = 'Automatikus folytatás'; -$string['badmanifest'] = 'Hibás tananyagleírás: lásd a hibanaplót'; -$string['browse'] = 'Böngészés'; -$string['browsed'] = 'Böngészés megtörtént'; -$string['browsemode'] = 'Böngészõ mód'; -$string['chooseapacket'] = 'SCORM-csomag kiválasztása vagy frissítése'; -$string['completed'] = 'Kész'; -$string['configframesize'] = 'Az érték a SCORM-csomag lejátszása közben a felsõ (navigálást tartalmazó) keret mérete (képpontban).'; -$string['configpopup'] = 'Új, felbukkanó ablakban megjeleníthetõ SCORM-csomag hozzáadásakor ez a lehetõség alapbeállításban be legyen kapcsolva?'; -$string['configpopupheight'] = 'Milyen legyen az új felbukkanó ablakok alapbeállítás szerinti magassága?'; -$string['configpopupresizable'] = 'A felbukkanó ablakok alapbeállítás szerint méretezhetõek legyenek?'; -$string['configpopupscrollbars'] = 'A felbukkanó ablakok alapbeállítás szerint görgethetõk legyenek?'; -$string['configpopupstatus'] = 'A felbukkanó ablakok alapbeállítás szerint mutassák az állapotsort?'; -$string['configpopupwidth'] = 'A felbukkanó ablakoknak alapbeállítás szerint mekkora legyen a szélessége?'; -$string['coursepacket'] = 'Kurzuscsomag'; -$string['coursestruct'] = 'Kurzusszerkezet'; -$string['datadir'] = 'Fájlrendszerbeli hiba: nem lehet létrehozni a kurzusadatok könyvtárát'; -$string['domxml'] = 'DOMXML külsõ könyvtár'; -$string['entercourse'] = 'SCORM-kurzus megadása'; -$string['errorlogs'] = 'Hibanapló'; -$string['failed'] = 'Nem sikerült'; -$string['found'] = 'Tananyagleírás megvan'; -$string['gradeaverage'] = 'Átlagpont'; -$string['gradehighest'] = 'Legmagasabb pont'; -$string['grademethod'] = 'Pontozási módszer'; -$string['gradescoes'] = 'Tudásegység helyzete'; -$string['gradesum'] = 'Összes pont'; -$string['guestsno'] = 'Vendégek nem tekinthetnek meg Scorm-kurzusokat'; -$string['incomplete'] = 'Nem teljes'; -$string['missing_attribute'] = 'Hiányzó $a->attr attribútum a(z) $a->tag elemben'; -$string['missing_tag'] = 'Hiányzó $a->tag elem'; -$string['mode'] = 'Mód'; -$string['modulename'] = 'Scorm-modul'; -$string['modulenameplural'] = 'Scorm-modulok'; -$string['newheight'] = 'Alapbeállítás szerinti ablakmagasság (képpontban)'; -$string['newresizable'] = 'Ablak méretezésének engedélyezése'; -$string['newscrollbars'] = 'Ablak görgetésének engedélyezése'; -$string['newstatus'] = 'Állapotsor kijelzése'; -$string['newwidth'] = 'Alapbeállítás szerinti ablakszélesség (képpontban)'; -$string['newwindow'] = 'Új ablak'; -$string['newwindowopen'] = 'Ezen Scorm-csomag megjelenítése új felbukkanó ablakban'; -$string['next'] = 'Tovább'; -$string['no_attributes'] = 'A(z) $a->tag elemnek attribútumokkal kell rendelkezni'; -$string['no_children'] = 'A(z) $a->tag elemnek gyermekelemekkel kell rendelkezni'; -$string['nomanifest'] = 'A tananyagleíró állomány nem található'; -$string['noreports'] = 'Nincs megjeleníthetõ jelentés'; -$string['normal'] = 'Szokásos'; -$string['not_corr_type'] = 'A(z) $a->tag elem típusa nem egyezik'; -$string['notattempted'] = 'Nem oldották meg'; -$string['organizations'] = 'Szervezetek'; -$string['packagedir'] = 'Fájlrendszerbeli hiba: nem lehet létrehozni a csomag könyvtárát'; -$string['passed'] = 'Sikerült'; -$string['php5'] = 'PHP 5 (DOMXML eredeti könyvtára)'; -$string['position_error'] = 'A(z) $a->tag elem nem lehet a(z) $a->parent elem gyermeke'; -$string['prev'] = 'Elõzõ'; -$string['regular'] = 'Szabványos tananyagleírás'; -$string['report'] = 'Jelentés'; -$string['review'] = 'Ellenõrzés'; -$string['scoes'] = 'Tudásegységek'; -$string['score'] = 'Eredmény'; -$string['syntax'] = 'Szintaktikus hiba'; -$string['tag_error'] = 'Ismeretlen elem ($a->tag) ezzel a tartalommal: $a->value'; -$string['too_many_attributes'] = 'A(z) $a->tag elemnek túl sok az attribútuma'; -$string['too_many_children'] = 'A(z) $a->tag elemnek túl sok a gyermekeleme'; -$string['trackingloose'] = 'FIGYELEM: Ezen Ssorm-csomag követési adatai elvesznek!'; -$string['validateascorm'] = 'Scorm-csomag érvényesítése'; -$string['validation'] = 'Érvényesítés eredménye'; -$string['validationtype'] = 'Ez a preferencia beállítja a Scorm tananyagleírásának érvényesítéséhez használt DOMXML könyvtárat. Ha bizonytalan, hagyja meg a kiválasztást.'; -$string['versionwarning'] = 'A tananyagleírás régebbi az 1.3 változatnál, figyelmeztetés a $a->tag elemnél'; -$string['viewallreports'] = 'A(z) $a próbálkozásokkal kapcsolatos jelentés megtekintése'; - -?> diff --git a/lang/hu/survey.php b/lang/hu/survey.php index 341bedd122e..c0477168a3a 100644 --- a/lang/hu/survey.php +++ b/lang/hu/survey.php @@ -1,202 +1,197 @@ kedvezõ (ideális) és tényleges tapasztalatának összehasonlítását kéri. +Each one of the 24 statements below asks about your experience in this unit. -Nincsenek jó és rossz válaszok. A véleményére vagyunk kíváncsiak. Válaszait bizalmasan fogjuk kezelni, és nem befolyásolják majd az Ön értékelését. Ha jól átgondolt válaszokat ad, segítségünkre lesz abban, hogy ez az egység a jövõben megfelelõbb formában kerüljön online tálalásra. +There are no 'right' or 'wrong' answers; we are interested only in your opinion. Please be assured that your responses will be treated with a high degree of confidentiality, and will not affect your assessment. -Köszönjük!'; -$string['collesapname'] = 'COLLES (Ideális és tényleges)'; -$string['collesm1'] = 'Relevancia'; -$string['collesm1short'] = 'Relevancia'; -$string['collesm2'] = 'Reagáló gondolkodás'; -$string['collesm2short'] = 'Reagáló gondolkodás'; -$string['collesm3'] = 'Interaktivitás'; -$string['collesm3short'] = 'Interaktivitás'; -$string['collesm4'] = 'Tutortámogatás'; -$string['collesm4short'] = 'Tutortámogatás'; -$string['collesm5'] = 'Tanulótársi támogatás'; -$string['collesm5short'] = 'Tanulótársi támogatás'; -$string['collesm6'] = 'Értelmezés'; -$string['collesm6short'] = 'Értelmezés'; -$string['collesmintro'] = 'Ebben az online egységben...'; -$string['collespintro'] = 'Ennek a kérdõívnek az a célja, hogy segítsen bennünket annak felmérésében, hogy mit értékel Ön egy online tanulásban. +Your carefully considered responses will help us improve the way this unit is presented online in the future. -AZ alábbi 24 megállapítás az egyéggel kapcsolatosan az Ön preferált (ideális) élményére kérdez rá. +Thanks very much."; +$string['collesaname'] = "COLLES (Actual)"; +$string['collesapintro'] = "The purpose of this questionnaire is to help us understand how well the online delivery of this unit enabled you to learn. -Nincsenek \'helyes\' vagy \'rossz\' válaszok; minkezt a véleménye érdekel. Válaszait bizalmasan kezeljük, ezek nem befolyásolják az Ön értékelését. -Megfontolt válaszaival segít bennünket abban, hogy az egység bemutatását a jövõben tökéletesíthessük. +Each one of the 24 statements below asks you to compare your preferred (ideal) and actual experience in this unit. -Köszönjük!'; -$string['collespname'] = 'COLLES (Ideális)'; -$string['done'] = 'Kész'; -$string['download'] = 'Letöltés'; -$string['downloadexcel'] = 'Adatok letöltése Excel-táblázatként'; -$string['downloadinfo'] = 'A kérdõív összes nyers adatát letöltheti Excel, SPSS vagy más program általi elemzésre alkalmas formában.'; -$string['downloadtext'] = 'Adatok letöltése egyszerû szöveges fájlként'; -$string['editingasurvey'] = 'Kérdõív szerkesztése'; -$string['guestsnotallowed'] = 'Vendégek nem tölthetnek ki kérdõívet'; -$string['helpsurveys'] = 'Különbözõ típusú kérdõívek súgója'; -$string['howlong'] = 'Mennyi ideig tartott a kérdõív kitöltése?'; -$string['howlongoptions'] = '1 perc,1-2 perc,2-3 perc,3-4 perc,4-5-perc,5-10 perc,több mint 10 perc alatt'; -$string['ifoundthat'] = 'Azt találtam'; -$string['introtext'] = 'Bevezetõ szöveg'; -$string['ipreferthat'] = 'Inkább ezt szeretném'; -$string['modulename'] = 'Felmérés'; -$string['modulenameplural'] = 'Felmérések'; -$string['name'] = 'Név'; -$string['newsurveyresponses'] = 'Felmérésre adott új válaszok'; -$string['nobodyyet'] = 'Senki nem töltötte még ki ezt a kérdõívet'; -$string['notdone'] = 'Még nincs kész'; -$string['notes'] = 'Az Ön személyes elemzése és megjegyzései'; -$string['othercomments'] = 'Van egyéb megjegyzése?'; -$string['peoplecompleted'] = 'Eddig $a személy töltötte ki a kérdõívet'; -$string['preferred'] = 'Ideális'; -$string['preferredclass'] = 'Ideális osztály'; -$string['preferredstudent'] = 'Ideális $a'; -$string['question'] = 'Kérdés'; -$string['questions'] = 'Kérdések'; -$string['questionsnotanswered'] = 'Néhány feleletválasztós kérdésre nem érkezett válasz.'; -$string['report'] = 'Felméréssel kapcsolatos jelentés'; -$string['savednotes'] = 'A megjegyzéseit elmentettük '; -$string['scaleagree5'] = 'Nagyon nem ért egyet,Valamelyest nem ért egyet,Semleges, Valamelyest egyetért,Teljesen egyetért'; -$string['scales'] = 'Skálák'; -$string['scaletimes5'] = 'Szinte soha,Ritkán,Néha,Gyakran,Majdnem mindig'; -$string['seemoredetail'] = 'A részletekért kattintson ide'; -$string['selectedquestions'] = 'Egy skáláról választott kérdések, minden tanuló'; -$string['summary'] = 'Összegzés'; -$string['surveycompleted'] = 'Kitöltötte ezt a kérdõívet. Az alábbi ábra mutatja válaszainak összegzését az osztályátlaggal összevetve.'; -$string['surveyname'] = 'Felmérés neve'; -$string['surveysaved'] = 'Felmérés elmentve'; -$string['surveytype'] = 'Felmérés típusa'; -$string['thanksforanswers'] = 'Köszönjük a válaszait, $a'; -$string['time'] = 'Idõ'; -$string['viewsurveyresponses'] = '$a válaszainak megtekintése'; +There are no 'right' or 'wrong' answers; we are interested only in your opinion. Please be assured that your responses will be treated with a high degree of confidentiality, and will not affect your assessment. + +Your carefully considered responses will help us improve the way this unit is presented online in the future. + +Thanks very much."; +$string['collesapname'] = "COLLES (Preferred and Actual)"; +$string['collesm1'] = "Relevance"; +$string['collesm1short'] = "Relevance"; +$string['collesm2'] = "Reflective Thinking"; +$string['collesm2short'] = "Reflective Thinking"; +$string['collesm3'] = "Interactivity"; +$string['collesm3short'] = "Interactivity"; +$string['collesm4'] = "Tutor Support"; +$string['collesm4short'] = "Tutor Support"; +$string['collesm5'] = "Peer Support"; +$string['collesm5short'] = "Peer Support"; +$string['collesm6'] = "Interpretation"; +$string['collesm6short'] = "Interpretation"; +$string['collesmintro'] = "In this online unit..."; +$string['collespintro'] = "The purpose of this survey is to help us understand what you value in an online learning experience. + +Each one of the 24 statements below asks about your preferred (ideal) experience in this unit. + +There are no 'right' or 'wrong' answers; we are interested only in your opinion. Please be assured that your responses will be treated with a high degree of confidentiality, and will not affect your assessment. + +Your carefully considered responses will help us improve the way this unit is presented online in the future. + +Thanks very much."; +$string['collespname'] = "COLLES (Preferred)"; +$string['done'] = "Kész"; +$string['download'] = "Letöltés"; +$string['downloadexcel'] = "Adatok letöltése Excel munkalapként"; +$string['downloadinfo'] = "A kérdõív összes nyers adatát letöltheti Excel, SPSS, vagy más program számára megfelelõ formátumban."; +$string['downloadtext'] = "Adatok letöltése egyzserû szöveges fájlként"; +$string['editingasurvey'] = "Kérdõív szerkesztése"; +$string['guestsnotallowed'] = "Vendégek nem tölthetnek ki kérdõívet"; +$string['helpsurveys'] = "Különbözõ típusú kérdõívek súgója"; +$string['howlong'] = "Mennyi ideig tartott a kérdõív kitöltése?"; +$string['howlongoptions'] = "1 perc,1-2 perc,2-3 perc,3-4 perc,4-5-perc,5-10 perc,több mint 10 perc alatt"; +$string['ifoundthat'] = "Ezt találtam"; +$string['introtext'] = "Bevezetõ szöveg"; +$string['ipreferthat'] = "Inkább ezt szerteném"; +$string['modulename'] = "Kérdõív"; +$string['modulenameplural'] = "Kérdõív"; +$string['name'] = "Név"; +$string['newsurveyresponses'] = "Új kérdõív válaszok"; +$string['nobodyyet'] = "Senki nem töltötte még ki a kérdõívet"; +$string['notdone'] = "Még nincs kész"; +$string['notes'] = "Személyes elemzése és megjegyzései"; +$string['othercomments'] = "Van egyéb megjegyzése?"; +$string['peoplecompleted'] = "Eddig \$a személy töltötte ki a kérdõívet"; +$string['preferred'] = "Kívánt"; +$string['preferredclass'] = "Kívánt osztály"; +$string['preferredstudent'] = "Kívánt \$a"; +$string['question'] = "Kérdés"; +$string['questions'] = "Kérdések"; +$string['questionsnotanswered'] = "Valamelyik többszörös választás kérdés nem lett megválaszolva."; +$string['report'] = "Kérdõív jelentés"; +$string['savednotes'] = "A szavazatai elmentése megtörtént"; +$string['scaleagree5'] = "Nagyon nem ért egyet,Inkább nem ért egyet,Semleges,Inkább egyetért,Teljesen egyetért"; +$string['scales'] = "Skálák"; +$string['scaletimes5'] = "Szinte soha,Ritkán,Néha,Gyakran,Majdnem mindig"; +$string['seemoredetail'] = "A részletekért kattintson ide"; +$string['selectedquestions'] = "Egy skáláról választott kérdések, minden tanuló"; +$string['summary'] = "Összegzés"; +$string['surveycompleted'] = "Kitöltötte ezt a kérdõívet. Az alábbi ábra mutatja válaszainak összegzését, összevetve a kurzusátlaggal."; +$string['surveyname'] = "Kérdõív neve"; +$string['surveysaved'] = "Kérdõív mentve"; +$string['surveytype'] = "Kérdõív típus"; +$string['thanksforanswers'] = "Köszönjük a válaszait \$a"; +$string['time'] = "Idõ"; +$string['viewsurveyresponses'] = "\$a válaszainak megtekintése"; ?> diff --git a/lang/hu/tex.php b/lang/hu/tex.php deleted file mode 100644 index d05bfed85b2..00000000000 --- a/lang/hu/tex.php +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/lang/hu/webquest.php b/lang/hu/webquest.php deleted file mode 100644 index b34254a3050..00000000000 --- a/lang/hu/webquest.php +++ /dev/null @@ -1,9 +0,0 @@ - - diff --git a/lang/hu/wiki.php b/lang/hu/wiki.php deleted file mode 100644 index 216e5edeb24..00000000000 --- a/lang/hu/wiki.php +++ /dev/null @@ -1,190 +0,0 @@ -pagename $a->new_ver és $a->old_ver változata között.'; -$string['disablecamel'] = 'Vegyes írású csatolás kikapcsolása'; -$string['disabledpage'] = 'Ez az oldal most nem elérhetõ.'; -$string['doesnotexist'] = 'Ez az oldal még nem létezik, kattintson a Szerkesztés gombra, ha létre akarja hozni.'; -$string['downloadaszip'] = 'Tömörített állomány letöltése'; -$string['downloadtimes'] = 'Letöltések száma: $a'; -$string['dwnlnofiles'] = 'Még nincs feltöltve semmilyen állomány.'; -$string['dwnlsection'] = 'Letöltési rész'; -$string['editform1'] = 'Ne foglalkozzon sokat a formázással, a késõbbiek során bármikor javíthat rajta.'; -$string['editform2'] = 'Fogalmazzon körültekintõen, ne feledje, hogy minden szerkesztési lépésrõl napló készül.'; -$string['editthispage'] = 'Oldal szerkesztése'; -$string['emptypage'] = 'Üres oldal'; -$string['errorbinandtxt'] = 'Jelölési hiba: az oldal típusa BIN és TXT'; -$string['errorhtml'] = 'HTML típusú oldal'; -$string['errornotype'] = 'Jelölési hiba: az oldal típusa sem nem BIN, sem pedig TXT'; -$string['errororreason'] = 'Hiba vagy ok'; -$string['errorroandwr'] = 'Jelölési hiba: az oldal írható és csak olvasható'; -$string['errorsize'] = 'Az oldal mérete nagyobb, mint 64k'; -$string['errversionsave'] = 'Miközben Ön az oldalt szerkesztette, valaki más már elmentette egy módosított változatát. Menjen vissza az elõzõ képernyõre és másolja át a változtatásait a számítógép vágólapjára, ahonnan a szerkesztõ képernyõ újbóli betöltése után beszúrhatja.'; -$string['ewikiacceptbinary'] = 'Bináris állományok engedélyezése'; -$string['ewikiprinttitle'] = 'Wikinév nyomtatása minden oldalon.'; -$string['export'] = 'Exportálás'; -$string['exportformats'] = 'Formák exportálása'; -$string['exportsuccessful'] = 'Az exportálás sikerült.'; -$string['exportto'] = 'Exportálás helye'; -$string['fetchback'] = 'Visszahozás'; -$string['file'] = 'Állomány'; -$string['filedownload'] = 'Állomány letöltése'; -$string['fileisoftype'] = 'Állomány típusa'; -$string['filtername'] = 'Wiki-oldal automatikus kapcsolási lehetõségei'; -$string['flagbin'] = 'BIN'; -$string['flaghtm'] = 'HTM'; -$string['flagoff'] = 'OFF'; -$string['flagro'] = 'RO'; -$string['flags'] = 'Jelölõk'; -$string['flagsset'] = 'A jelölõk módosultak'; -$string['flagtxt'] = 'TXT'; -$string['flagwr'] = 'WR'; -$string['for'] = 'kinek'; -$string['forbidden'] = 'Ön nem érheti el ezt az oldalt.'; -$string['groups'] = 'Csoportok'; -$string['hits'] = '$a találat'; -$string['howtooperate'] = 'Hogyan mûködik'; -$string['howtowiki'] = 'Hogyan wikizzünk'; -$string['html'] = 'HTML-forma'; -$string['htmlmode'] = 'HTML-mód'; -$string['htmlonly'] = 'Csak HTML'; -$string['index'] = 'Mutató'; -$string['infoaboutpage'] = 'Tájékoztató az oldalról'; -$string['initialcontent'] = 'Kezdõoldal kiválasztása'; -$string['invalidroot'] = 'Ön nem jogosult a jelen gyökéroldal elérésére, ezért nem készülhet portáltérkép.'; -$string['lastchanged'] = 'Utolsó módosítás: $a'; -$string['lastmodified'] = 'Utolsó módosítás'; -$string['linkdead'] = 'NEM ÉL'; -$string['linkok'] = 'Rendben'; -$string['linkschecked'] = 'Ugrópontok ellenõrizve'; -$string['listall'] = 'Mindet felsorolja'; -$string['listcandidates'] = 'A lehetségeseket felsorolja'; -$string['meta'] = 'Metaadatok'; -$string['moduledirectory'] = 'Modulkönyvtár'; -$string['modulename'] = 'wiki'; -$string['modulenameplural'] = 'wikik'; -$string['mostoftenchangedpages'] = 'Leggyakrabban módosított oldalak'; -$string['mostvisitedpages'] = 'Leggyakrabban felkeresett oldalak'; -$string['newestpages'] = 'Legújabb oldalak'; -$string['noadministrationaction'] = 'Nincs megadva adminisztrációs lépés.'; -$string['nocandidatestoremove'] = 'Nincsenek mozgatásra kijelölt oldalak, a(z) \'$a\' választásával megtekintheti az összes oldalt.'; -$string['nochangestorevert'] = 'Nincs visszaállítandó változat.'; -$string['nohtml'] = 'Nincs HTML'; -$string['nolinksfound'] = 'Az oldalon nincs ugrópont.'; -$string['noregexp'] = 'Ennek konkrét hosszúságú szövegnek kell lenni (reguláris kifejezést vagy *-ot nem használhat), legfeljebb a támadó IP-címét vagy gazdagépének nevét használhatja, de a portszám nélkül (mert az minden http-hozzáféréssel növekszik).'; -$string['notadministratewiki'] = 'Ön ezt a wikit nem adminisztrálhatja!'; -$string['nothingtostrip'] = 'Nincsenek egy változatnál többel rendelkezõ oldalak.'; -$string['nowikicreated'] = 'Ehhez a wikihez nem készültek bejegyzések.'; -$string['of'] = 'ból'; -$string['offline'] = 'OFFLINE'; -$string['optional'] = 'Választható'; -$string['orphanedpage'] = 'Magányos oldal'; -$string['orphanedpages'] = 'Magányos oldalak'; -$string['otherwikis'] = 'Más wikik'; -$string['ownerunknown'] = 'ismeretlen'; -$string['pageactions'] = 'Oldal tevékenységei'; -$string['pageindex'] = 'Oldalmutató'; -$string['pageinfo'] = 'Oldalra vonatkozó információk'; -$string['pagename'] = 'Oldal neve'; -$string['pagenamechoice'] = '- vagy -'; -$string['pageslinkingto'] = 'Az oldalhoz kapcsolódó oldalak'; -$string['pagesremoved'] = 'Oldalak törölve.'; -$string['pagesreverted'] = 'Változások visszaállítva'; -$string['pagesstripped'] = 'oldal kiiktatva.'; -$string['plaintext'] = 'Egyszerû szöveg'; -$string['preview'] = 'Elõzetes nézet'; -$string['readonly'] = 'Csak olvasható oldal'; -$string['refs'] = 'Hivatkozások'; -$string['removenotice'] = 'Itt csak a hivatkozás nélküli oldalak felsorolása jelenik meg. Mivel maga az ewiki motorja csak korlátozott mértékben ellenõrzi az oldalak hivatkozásait, némelyiküket kihagyhatja.
                        Ha viszont elõbb kiürít egy oldalt, akkor az is szerepelni fog a felsorolásban. Emellett sor kerül egy sor egyéb adatbázis-diagnosztikára is.'; -$string['removepagecheck'] = 'Biztosan törölni akarja ezeket az oldalakat?'; -$string['removepages'] = 'Oldalak törlése'; -$string['removeselectedpages'] = 'Kiválasztott oldalak törlése'; -$string['revertallsince'] = 'A változat elavult, törlendõk a késõbbi változások is'; -$string['revertchanges'] = 'Változások visszaállítása'; -$string['revertlastonly'] = 'Csak ha utolsó változtatás volt'; -$string['revertpages'] = 'Összes változtatás visszaállítása'; -$string['revertpagescheck'] = 'Biztosan vissza akarja állítani ezeket a változtatásokat:'; -$string['revertthe'] = 'A változat elavult, de csak az érintett részek törlendõk'; -$string['safehtml'] = 'Biztonságos HTML'; -$string['save'] = 'Mentés'; -$string['searchwiki'] = 'Wiki keresése'; -$string['setpageflags'] = 'Oldaljelölõk beállítása'; -$string['sitemap'] = 'Portáltérkép'; -$string['smfor'] = 'Portáltérkép'; -$string['status'] = 'Státus'; -$string['strippagecheck'] = 'Biztosan ki akarja iktatni az oldalak régi változatait:'; -$string['strippages'] = 'Oldalak kiiktatása'; -$string['studentadminoptions'] = 'Tanuló adminisztrációs lehetõségei'; -$string['submit'] = 'Beküldés'; -$string['tabattachments'] = 'Csatolt állományok'; -$string['tabedit'] = 'SZerkesztés'; -$string['tabinfo'] = 'Elõzmények'; -$string['tablinks'] = 'Ugrópontok'; -$string['tabview'] = 'Nézet'; -$string['thanksforcontribution'] = 'Köszönjük hozzájárulását.'; -$string['thispageisntlinkedfromanywhereelse'] = 'Ez az oldal semmihez nem kapcsolódik.'; -$string['updatedpages'] = 'Frissített oldalak'; -$string['updatedwikipages'] = 'Wiki-oldalak frissítése'; -$string['uplerror'] = 'Hiba történt a feltöltés során.'; -$string['uplinsect'] = 'Feltöltés helye'; -$string['uplnewnam'] = 'Mentés másként'; -$string['upload0'] = 'Ezen az ûrlapon bármilyen bináris állományt betölthet a wikibe:'; -$string['uploadedon'] = 'Feltöltés dátuma'; -$string['uploadpicturebutton'] = 'Feltöltés'; -$string['uplok'] = 'Az állomány feltöltése rendben megtörtént.'; -$string['version'] = 'Változat'; -$string['versionrangetoobig'] = 'Egy oldal összes változata nem törölhetõ! Az utolsó változatot meg kell tartani.'; -$string['versions'] = 'Változatok'; -$string['versionstodelete'] = 'Törlendõ változat(ok)'; -$string['viewpage'] = 'Oldal megtekintése'; -$string['viewsmfor'] = 'Portáltérkép megtekintése'; -$string['wantedpages'] = 'Kért oldalak'; -$string['wikidefaultpagename'] = 'Wikimutató'; -$string['wikiexport'] = 'Oldalak exportálása'; -$string['wikiexportcomment'] = 'Itt állíthatja be az exportálást igényeinek megfelelõen.'; -$string['wikilinkoptions'] = 'Wiki automatikus kapcsolási lehetõségei'; -$string['wikilinks'] = 'Wiki-kapcsolatok'; -$string['wikiname'] = 'Oldal neve'; -$string['wikistartederror'] = 'A wikiben már vannak bejegyzések - nem lehet módosítani.'; -$string['wikitype'] = 'Típus'; -$string['wikiusage'] = 'Wiki használata'; -$string['withbinaries'] = 'Bináris tartalom beszúrása'; -$string['withvirtualpages'] = 'Wiki-ugrópontok beszúrása'; -$string['wrongversionrange'] = 'A(z) $a nem megfelelõ tartomány!'; - -?> diff --git a/lang/hu/workshop.php b/lang/hu/workshop.php index 00ef64b40b1..b4b7cc90603 100644 --- a/lang/hu/workshop.php +++ b/lang/hu/workshop.php @@ -1,324 +1,188 @@ Pont'; -$string['agreetothisassessment'] = 'Egyetért ezzel az értékeléssel'; -$string['allgradeshaveamaximumof'] = 'Minden pontozás maximuma: $a'; -$string['allowresubmit'] = 'Újbóli leadások engedélyezése'; -$string['allsubmissions'] = 'Minden leadott munka'; -$string['alreadyinphase'] = 'Már a(z) $a szakaszban'; -$string['amendassessmentelements'] = 'Értékelési elemek módosítása'; -$string['amendtitle'] = 'Cím módosítása'; -$string['analysis'] = 'Elemzés'; -$string['analysisofassessments'] = 'Értékelések elemzése'; -$string['assess'] = 'Értékel'; -$string['assessedon'] = 'Értékelés ideje $a'; -$string['assessment'] = 'Értékelés'; -$string['assessmentby'] = 'Értékelte $a'; -$string['assessmentdropped'] = 'Értékelés abbahagyva'; -$string['assessmentend'] = 'Értékelés vége'; -$string['assessmentendevent'] = '$a értékelés ének vége'; -$string['assessmentgrade'] = 'Értékelési pontszám: $a'; -$string['assessmentnotyetagreed'] = 'Az értékelés egyeztetése még nem történt meg'; -$string['assessmentnotyetgraded'] = 'Értékelés még nincs pontozva'; -$string['assessmentof'] = '$a értékelése'; -$string['assessmentofresubmission'] = 'Ez egy felülvizsgált munka értékelése.
                        Ezen az ûrlapon láthatók korábbi pontjai és megjegyzései.
                        A felülvizsgált munka megtekintése után módosítsa.'; -$string['assessmentofthissubmission'] = 'Ezen leadott munka értékelése'; -$string['assessments'] = 'Értékelések'; -$string['assessmentsareok'] = ' Értékelések rendben'; -$string['assessmentsby'] = '$a által végzett értékelések'; -$string['assessmentsdone'] = 'Az értékelések elkészültek'; -$string['assessmentsexcluded'] = 'Az értékelések száma ezen $a esetén kizárva'; -$string['assessmentsmustbeagreed'] = 'Az értékeléseket egyeztetni kell'; -$string['assessmentstart'] = 'Értékelések elkezdése'; -$string['assessmentstartevent'] = '$a értékeléseinek elkezdése'; -$string['assessmentwasagreedon'] = 'Az értékelés egyeztetésének idõpontja $a volt'; -$string['assessor'] = 'Értékelõ'; -$string['assessthisassessment'] = 'Értékelés pontozása'; -$string['assessthissubmission'] = 'Ezen leadott munka értékelése'; -$string['assignmentnotinthecorrectphase'] = 'A feladat nem a megfelelõ szakaszban van'; -$string['assmnts'] = 'Értékelések'; -$string['attachment'] = 'Csatolt állomány'; -$string['attachments'] = 'Csatolt állományok'; -$string['authorofsubmission'] = 'Leadott munka szerzõje'; -$string['automaticgradeforassessment'] = 'Értékelés automatikus pontja'; -$string['averageerror'] = 'Átlagos hiba'; -$string['awaitinggradingbyteacher'] = '$a pontozására vár'; -$string['beforedeadline'] = 'A(z) $a határidõ elõtt'; -$string['by'] = 'leadta'; -$string['calculationoffinalgrades'] = 'Végsõ pontszámok kiszámítása'; -$string['clearlateflag'] = 'Kései jelzés létrehozása'; -$string['closeassignment'] = 'Feladat lezárása'; -$string['comment'] = 'Megjegyzés'; -$string['commentbank'] = 'Megjegyzések tárháza'; -$string['commentby'] = 'Megjegyzés szerzõje'; -$string['comparisonofassessments'] = 'Értékelések összehasonlítása '; -$string['confirmdeletionofthisitem'] = 'Ezen $a törlésének megerõsítése'; -$string['correct'] = 'Helyes'; -$string['count'] = 'Számlálás'; -$string['criterion'] = 'Kritérium'; -$string['currentphase'] = 'Jelen szakasz'; -$string['date'] = 'Dátum'; -$string['datestr'] = '%%d/%%m/%%y
                        %%H:%%M'; -$string['deadline'] = 'Leadási határidõ'; -$string['deadlineis'] = 'A leadott munkához a határidõ $a'; -$string['delete'] = 'Törlés'; -$string['deleting'] = 'Töröl'; -$string['description'] = 'Leírás'; -$string['detailsofassessment'] = 'Értékelés részletei'; -$string['disagreewiththisassessment'] = 'Nem ért egyet ezzel az értékeléssel'; -$string['displayofcurrentgrades'] = 'Pillanatnyi pontok megjelenítése'; -$string['displayoffinalgrades'] = 'Végsõ pontszámok megjelenítése'; -$string['displayofgrades'] = 'Pontok megjelenítése'; -$string['dontshowgrades'] = 'Ne mutassa a pontokat'; -$string['edit'] = 'Szerkesztés'; -$string['editacomment'] = 'Megjegyzés szerkesztése'; -$string['editingassessmentelements'] = 'Értékelési elemek szerkesztése'; -$string['editsubmission'] = 'Leadott munka szerkesztése'; -$string['element'] = 'Elem'; -$string['elementweight'] = 'Elem súlya'; -$string['enterpassword'] = 'Jelszó megadása'; -$string['errorbanded'] = 'Hibán alapuló'; -$string['errortable'] = 'Hibatábla'; -$string['examplesubmissions'] = 'Példák a leadott munkára'; -$string['excellent'] = 'Kiváló'; -$string['excludingdroppedassessments'] = 'kivéve a kihagyott értékeléseket'; -$string['expectederror'] = 'Kivéve a hibaértéket találgatás esetén: $a'; -$string['fair'] = 'Közepes'; -$string['feedbackgoeshere'] = 'Ide jön a visszajelzés'; -$string['firstname'] = 'Utónév'; -$string['generalcomment'] = 'Általános megjegyzés'; -$string['good'] = 'Jó'; -$string['grade'] = 'Pont'; -$string['gradeassessment'] = 'Pontozott értékelés'; -$string['graded'] = 'Pontozott'; -$string['gradedbyteacher'] = 'Pontozta $a'; -$string['gradeforassessments'] = 'Értékelésekre adott pont'; -$string['gradeforbias'] = 'Pont az elfogultságra'; -$string['gradeforreliability'] = 'Pont a megbízhatóságra'; -$string['gradeforstudentsassessment'] = 'Pont a tanulói értékelésre'; -$string['gradeforsubmission'] = 'Pont a leadott munkára'; -$string['gradegiventoassessment'] = 'Értékelésre adott pont'; -$string['gradeofsubmission'] = 'Leadott munka pontszáma: $a'; -$string['grades'] = 'Pontok'; -$string['gradesforassessmentsare'] = 'Értékelésre adott pontok meghaladják a $a-t'; -$string['gradesforstudentsassessment'] = '$a értékelésére adott pontok'; -$string['gradesforsubmissionsare'] = 'Leadott munklára adott pontok meghaladják a $a-t'; -$string['gradetable'] = 'Pontozási tábla'; -$string['gradingallassessments'] = 'Összes értékelés pontozása'; -$string['gradinggrade'] = 'Pontozás pontozása'; -$string['gradingstrategy'] = 'Pontozási stratégia'; -$string['hidegradesbeforeagreement'] = 'Pontok elrejtése beleegyezés elõtt'; -$string['hidenamesfromstudents'] = 'Nevek elrejtése $a elõl'; -$string['includeteachersgrade'] = 'Tanári pontszám szerepeltetése'; -$string['incorrect'] = 'Hibás'; -$string['info'] = 'Infó'; -$string['invaliddates'] = 'A megadott dátum hibás.
                        A bönfészõ Vissza gombjával lépjen vissza az ûrlapra és javítsa ki a dátumot.'; -$string['iteration'] = '$a ismétlése befejezve'; -$string['lastname'] = 'Családi név'; -$string['lax'] = 'Laza'; -$string['leaguetable'] = 'Leadott munka ligatáblázata'; -$string['listassessments'] = 'Értékelések felsorolása'; -$string['listofallsubmissions'] = 'Összes leadott munka felsorolása'; -$string['liststudentsassessments'] = 'Tanulói értékelések felsorolása'; -$string['loadingforteacherassessments'] = '$a értékeléseinek betöltése'; -$string['mail1'] = 'Feladatát \'$a\' értékelte'; -$string['mail10'] = 'Mûhelyfeladatában értékelheti'; -$string['mail2'] = 'Mûhelyfeladatában megtekintheti a megjegyzéseket és a pontszámot \'$a\''; -$string['mail3'] = 'Mûhelyfeladatában megtekintheti'; -$string['mail4'] = 'A feladathoz \'$a\' megjegyzést fûzött'; -$string['mail5'] = 'Mûhelyfeladatában \'$a\' megtekintheti az új megjegyzést'; -$string['mail6'] = 'A feladatra adott értékelését \'$a\' felülvizsgálták'; -$string['mail7'] = 'A(z) $a által tett megjegyzéseket megtekintheti a mûhelyfeladatban'; -$string['mail8'] = 'A(z) $a feladat egy felülvizsgált munka. '; -$string['mail9'] = 'Értékelje a $a mûhelyfeladatban'; -$string['managingassignment'] = 'Feladat kezelése'; -$string['maximum'] = 'Maximum'; -$string['maximumsize'] = 'Maximuális méret'; -$string['mean'] = 'Átlag'; -$string['minimum'] = 'Minimum'; -$string['modulename'] = 'Mûhely'; -$string['modulenameplural'] = 'Mûhelyek'; -$string['movingtophase'] = 'Áttérés a(z) $a szakaszra'; -$string['namesnotshowntostudents'] = 'A neveket nem látja $a'; -$string['newassessments'] = 'Új értékelések'; -$string['newattachment'] = 'Új csatolt állomány'; -$string['newgradings'] = 'Új pontozások'; -$string['newsubmissions'] = 'Új leadott munkák'; -$string['noassessments'] = 'Nincs értékelés'; -$string['noassessmentsdone'] = 'Nem készült értékelés'; -$string['noattachments'] = 'Nincs csatolt állomány'; -$string['nosubmission'] = 'Nincs leadott munka'; -$string['nosubmissionsavailableforassessment'] = 'Nincs értékelhetõ leadott munka'; -$string['notallowed'] = 'Ezen az oldalon jelenleg ezt nem teheti'; -$string['notavailable'] = 'Nincs'; -$string['notenoughexamplessubmitted'] = 'Kevés a leadott példa.'; -$string['noteonassessmentelements'] = 'Figyelje meg, hogy a pontozás egy sor értékelési elemre oszlik.
                        - Ezáltal a pontozás könnyebb és egységesebb. Tanárként ezeket az elemeket
                        - össze kell adnia, mielõtt a feladatot kiadja a tanulóknak. Ez úgy történik, hogy
                        - rákattint a kurzus feladatára. Ha nincsenek elemek, a rendszer megkéri, hogy
                        - adjon meg elemeket. Az elemek számát a Feladat szerkesztése képernyõn módosíthatja,
                        - míg maguk az elemek az Értékelés kezelése képernyõn változtathatók. '; -$string['noteonstudentassessments'] = '{Tanuló pontja / Pontozás pontja értékeléshez}'; -$string['notgraded'] = 'Nincs pontozva'; -$string['notitle'] = 'Nincs cím'; -$string['notitlegiven'] = 'Nincs megadva cím'; -$string['nowork'] = 'A leadás idõszaka lejárt.
                        Nem adott le munkát.'; -$string['numberofassessmentelements'] = 'Megjegyzések száma, Értékelési elemek, Hibapontozás, Kritériumok vagy kategóriák megadása egy rubrikán belül'; -$string['numberofassessments'] = 'Értékelések száma'; -$string['numberofassessmentschanged'] = 'Módosított értékelések száma: $a'; -$string['numberofassessmentsdropped'] = 'Kihagyott értékelések száma: $a'; -$string['numberofassessmentsofstudentsubmissions'] = 'Tanulói leadott munkák értékelésének száma'; -$string['numberofassessmentsofteachersexamples'] = 'Tanár általi példaértékelések száma'; -$string['numberofassessmentsweighted'] = '(Súlyozott) értékelések száma: $a'; -$string['numberofattachments'] = 'A leadott munkákkal elvárt csatolt állományok száma'; -$string['numberofentries'] = 'Bejegyzések száma'; -$string['numberofnegativeresponses'] = 'Negatív válaszok száma'; -$string['numberofsubmissions'] = 'Leadott munkák száma: $a'; -$string['ograde'] = 'Összes
                        pont'; -$string['on'] = ' $a -án'; -$string['openassignment'] = 'Nyitott feladat'; -$string['optionaladjustment'] = 'Választható beállítás'; -$string['optionforpeergrade'] = 'Csoporttársi pontozás lehetõsége'; -$string['optionsusedinanalysis'] = 'Elemzés során használt opció'; -$string['overallgrade'] = 'Összes pontszám'; -$string['overallocation'] = 'Egyenetlen kijelölés'; -$string['overallpeergrade'] = 'Összes csoporttársi pontszám: $a'; -$string['overallteachergrade'] = 'Összes tanári pontszám: $a'; -$string['ownwork'] = 'Saját munka'; -$string['passmnts'] = 'Csoporttársi
                        értékelések'; -$string['passwordprotectedworkshop'] = 'Jelszóval védett mûhelymunka'; -$string['percentageofassessments'] = 'Kihagyandó értékelések százaléka'; -$string['phase'] = 'Szakasz'; -$string['phase0'] = 'Tétlen'; -$string['phase0short'] = 'Tétlen'; -$string['phase1'] = 'Feladat beállítása'; -$string['phase1short'] = 'Beállítás'; -$string['phase2'] = '$a leadott munkáinak engedélyezése'; -$string['phase2short'] = 'Leadott munkák'; -$string['phase3'] = '$a leadott munkáinak és értékeléseinek az engedélyezése'; -$string['phase3short'] = 'Mindkettõ'; -$string['phase4'] = '$a értékeléseinek engedélyezése'; -$string['phase4short'] = 'Értékelések'; -$string['phase5'] = 'Végsõ pontszámok kiszámítása'; -$string['phase5short'] = 'Kiszámítás'; -$string['pleaseassesstheseexamplesfromtheteacher'] = 'Értékelje $a ezen példáit'; -$string['pleaseassessthesestudentsubmissions'] = 'Értékelje $a ezen leadott munkáit'; -$string['pleaseassessyoursubmissions'] = 'Értékelje saját leadott munkáját (munkáit)'; -$string['poor'] = 'Gyenge'; -$string['present'] = 'Jelen'; -$string['reasonforadjustment'] = 'Módosítás oka'; -$string['reassess'] = 'Újraértékelés'; -$string['regradestudentassessments'] = 'Tanulói leadott munkák újrapontozása'; -$string['releaseteachergrades'] = 'Tanári pontok kiadása'; -$string['removeallattachments'] = 'Minden csatolt állomány törlése'; -$string['repeatanalysis'] = 'Elemzés ismétlése'; -$string['reply'] = 'Válasz'; -$string['returnto'] = 'Vissza'; -$string['returntosubmissionpage'] = 'Vissza a leadott munkák oldalához'; -$string['rubric'] = 'Rubrika'; -$string['savedok'] = 'Mentés rendben'; -$string['saveleaguetableoptions'] = 'Ligatáblázat opcióinak mentése'; -$string['savemyassessment'] = 'Értékelésem mentése'; -$string['savemycomment'] = 'Megjegyzésem mentése'; -$string['savemygrading'] = 'Pontozásom mentése'; -$string['savemysubmission'] = 'Leadott munkám mentése'; -$string['saveoverallocation'] = 'Túl sok kijelölés szintjének mentése'; -$string['scale10'] = '10-bõl elért'; -$string['scale100'] = '100-ból elért'; -$string['scale20'] = '20-ból elért'; -$string['scalecorrect'] = '2 pontos helyes/helytelen skála'; -$string['scaleexcellent4'] = '4 pontos kiváló/nagyon gyenge skála'; -$string['scaleexcellent5'] = '5 pontos kiváló/nagyon gyenge skála'; -$string['scaleexcellent7'] = '7 pontos kiváló/nagyon gyenge skála'; -$string['scalegood3'] = '3 pontos jó/rossz skála'; -$string['scalepresent'] = '2 pontos jelenlét/hiányzás skála'; -$string['scaleyes'] = '2 pontos igen/nem skála'; -$string['select'] = 'Válasszon'; -$string['selfassessment'] = 'Önértékelés'; -$string['sgrade'] = 'Led. m.
                        pont'; -$string['showdescription'] = 'Mûhelymunka leírásának kijelzése'; -$string['showgrades'] = 'Pontszámok kijelzése'; -$string['showsubmission'] = '$a leadott munka kijelzése'; -$string['specimenassessmentform'] = 'Értékelõ ûrlap mintája'; -$string['standarddeviation'] = 'A(z) $a elem standard deviációja'; -$string['standarddeviationnote'] = 'A zéró vagy nagyon alacsony standard deviációval rendelkezõ elemek torzíthatják az elemzést.
                        Ez az elem kikerült az elemzésbõl.'; -$string['standarddeviationofelement'] = '$a elem szórása'; -$string['strict'] = 'Szigorú'; -$string['studentassessments'] = '$a értékelések'; -$string['studentgrades'] = '$a pontok'; -$string['studentsubmissions'] = '$a leadott munkák'; -$string['studentsubmissionsforassessment'] = '$a értékelésre leadott tanulói munkák'; -$string['submission'] = 'Leadott munka'; -$string['submissionend'] = 'Leadott munkák vége'; -$string['submissionendevent'] = '$a leadott munkáinak vége'; -$string['submissions'] = 'Leadott munkák'; -$string['submissionsnolongerallowed'] = 'Munkák leadására már nincs lehetõség'; -$string['submissionstart'] = 'Leadott munkák kezdete'; -$string['submissionstartevent'] = '$a leadott munkáinak kezdete'; -$string['submissionsused'] = '$a leadott munkái szerepelnek ebben a táblázatban'; -$string['submitassignment'] = 'Feladat leadása'; -$string['submitassignmentusingform'] = 'Feladatát ezzel az ûrlappal adja le'; -$string['submitexample'] = 'Példa leadása'; -$string['submitexampleassignment'] = 'Mintafeladat leadása'; -$string['submitrevisedassignment'] = 'Felülvizsgált feladatát ezzel az ûrlappal adja le'; -$string['submitted'] = 'Leadva'; -$string['submittedby'] = 'Leadta'; -$string['suggestedgrade'] = 'Javasolt pontszám'; -$string['tassmnt'] = 'Tanár
                        értékelés'; -$string['teacherassessments'] = '$a értékelései'; -$string['teachergradeforassessment'] = 'Értékelés $a pontja'; -$string['teacherscomment'] = 'Tanár megjegyzése'; -$string['teachersgrade'] = 'Tanár pontszáma'; -$string['teachersubmissionsforassessment'] = '$a tanári értékelésre leadott munkái'; -$string['thegradeforthisassessmentis'] = 'Ezen értékelés pontja $a'; -$string['thegradeis'] = 'A pontszám $a'; -$string['theseasessmentsaregradedbytheteacher'] = 'Ezeket az értékeléseket pontozta $a'; -$string['thisisadroppedassessment'] = 'Ez egy kihagyott értékelés'; -$string['timeassessed'] = 'Értékelési idõ'; -$string['title'] = 'Cím'; -$string['typeofscale'] = 'Skála típusa'; -$string['unassessed'] = '$a nincs értékelve'; -$string['ungradedassessments'] = '$a pontozatlan értékelés'; -$string['ungradedassessmentsofstudentsubmissions'] = '$a tanulói leadott munkákra vonatkozó pontozatlan értékelései'; -$string['ungradedassessmentsofteachersubmissions'] = '$a tanári leadott munkákra vonatkozó pontozatlan értékelései'; -$string['uploadsuccess'] = 'Feltöltés sikerült'; -$string['usepassword'] = 'Jelszó használata'; -$string['verylax'] = 'Igen laza'; -$string['verypoor'] = 'Nagyon gyenge'; -$string['verystrict'] = 'Nagyon szigorú'; -$string['view'] = 'Megtekintés'; -$string['viewassessment'] = 'Értékelés megtekintése'; -$string['viewassessmentofteacher'] = 'Az $a értékelésének megtekintése'; -$string['viewotherassessments'] = 'Egyéb értékelések megtekintése'; -$string['warningonamendingelements'] = 'FIGYELEM: Érkeztek leadott értékelések.
                        NE módosítsa az elemek számát, a skálák típusát vagy az elemek súlyát.'; -$string['weight'] = 'Súly'; -$string['weightederrorcount'] = 'Súlyozott hibaszám: $a'; -$string['weightforbias'] = 'Elfogultság súlya'; -$string['weightforgradingofassessments'] = 'Értékelések pontozásának súlya'; -$string['weightforpeerassessments'] = 'Csoporttársi értékelések súlya'; -$string['weightforreliability'] = 'Megbízhatóság súlya'; -$string['weightforteacherassessments'] = 'Tanári értékelések súlya'; -$string['weights'] = 'Súlyok'; -$string['weightsusedforfinalgrade'] = 'Végsõ pontszámhoz használt súlyok'; -$string['weightsusedforsubmissions'] = 'Leadott munkákhoz használt súlyok'; -$string['workshopagreedassessments'] = 'Mûhelymunka elfogadott értékelései'; -$string['workshopassessments'] = 'Mûhelymunka értékelései'; -$string['workshopcomments'] = 'Mûhelymunka megjegyzései'; -$string['workshopfeedback'] = 'Mûhelymunka visszajelzése'; -$string['workshopsubmissions'] = 'Mûhelymunka leadott munkái'; -$string['wrongpassword'] = 'Hibás a jelszó ehhez a mûhelymunkához'; -$string['yourassessments'] = 'Az Ön értékelései'; -$string['yourassessmentsofexamplesfromtheteacher'] = 'Az Ön $a példáira adott értékelései'; -$string['yourfeedbackgoeshere'] = 'Visszajelzése ide kerül'; -$string['yoursubmissions'] = 'Leadott munkái'; +$string['absent'] = "Absent"; +$string['accumulative'] = "Accumulative"; +$string['action'] = "Action"; +$string['addacomment'] = "Add a Comment"; +$string['afterdeadline'] = "After Deadline: \$a"; +$string['agreetothisassessment'] = "Agree to this Assessment"; +$string['allgradeshaveamaximumof'] = "All Grades have a Maximum of: \$a"; +$string['allowresubmit'] = "Allow Resubmissions"; +$string['alreadyinphase'] = "Already in Phase \$a"; +$string['amendassessmentelements'] = "Amend Assessment Elements"; +$string['amendtitle'] = "Amend Title"; +$string['assess'] = "Assess"; +$string['assessedon'] = "Assessed on \$a"; +$string['assessment'] = "Assessment"; +$string['assessmentby'] = "Assessment by \$a"; +$string['assessmentgrade'] = "Assessment Grade: \$a"; +$string['assessmentnotyetagreed'] = "Assessment not yet agreed"; +$string['assessmentsby'] = "Assessments by \$a"; +$string['assessmentsmustbeagreed'] = "Assessments must be agreed"; +$string['assessments'] = "Assessments"; +$string['assessmentsareok'] = "Assessments are OK"; +$string['assessmentsdone'] = "Assessments Done"; +$string['assessmentwasagreedon'] = "Assessment was agreed on \$a"; +$string['assessor'] = "Assessor"; +$string['assessthissubmission'] = "Assess this submission"; +$string['assessmentofthissubmission'] = "Assessment of this submission"; +$string['assignmentnotinthecorrectphase'] = "Assignment not in the Correct Phase"; +$string['authorofsubmission'] = "Author of Submission"; +$string['awaitinggradingbyteacher'] = "Awaiting Grading by \$a"; +$string['beforedeadline'] = "Before Deadline: \$a"; +$string['calculationoffinalgrades'] = "Calculation of Final Grades"; +$string['closeassignment'] = "Close Assignment"; +$string['comment'] = "Comment"; +$string['commentby'] = "Comment by"; +$string['confirmdeletionofthisitem'] = "Confirm Deletion of this \$a"; +$string['correct'] = "Correct"; +$string['criterion'] = "Criterion"; +$string['deadline'] = "Deadline"; +$string['deadlineis'] = "The Deadline is \$a"; +$string['description'] = "Description"; +$string['delete'] = "Delete"; +$string['deleting'] = "Deleting"; +$string['detailsofassessment'] = "Details of Assessment"; +$string['disagreewiththisassessment'] = "Disagree with this Assessment"; +$string['displayoffinalgrades'] = "Display of Final Grades"; +$string['dontshowgrades'] = "Don't Show Grades"; +$string['edit'] = "Edit"; +$string['editacomment'] = "Edit a Comment"; +$string['editingassessmentelements'] = "Editing Assessment Elements"; +$string['element'] = "Element"; +$string['elementweight'] = "Element Weight"; +$string['errorbanded'] = "Error Banded"; +$string['excellent'] = "Excellent"; +$string['feedbackgoeshere'] = "Feedback goes here"; +$string['generalcomment'] = "General comment"; +$string['good'] = "Good"; +$string['grade'] = "Grade"; +$string['gradeassessment'] = "Grade Assessment"; +$string['graded'] = "Graded"; +$string['gradedbyteacher'] = "Graded by \$a"; +$string['gradeforassessments'] = "Grade for Assessments"; +$string['gradeforbias'] = "Grade for Bias"; +$string['gradeforreliability'] = "Grade for Reliability"; +$string['gradeforstudentsassessment'] = "Grade for Student's Assessment"; +$string['gradeofsubmission'] = "Grade of Submission: \$a"; +$string['gradingstrategy'] = "Grading Strategy"; +$string['hidegradesbeforeagreement'] = "Hide Grades before Agreement"; +$string['includeteachersgrade'] = "Include Teacher's Grade"; +$string['incorrect'] = "Incorrect"; +$string['leaguetable'] = "League Table of Submitted Work"; +$string['listassessments'] = "List Assessments"; +$string['listofallsubmissions'] = "List of all Submissions"; +$string['liststudentsassessments'] = "List Student's Assessments"; +$string['managingassignment'] = "Managing Assignment"; +$string['mail1'] = "Your assignment '\$a' has been assessed by"; +$string['mail2'] = "The comments and grade can be seen in the Workshop Assignment '\$a'"; +$string['mail3'] = "You can see it in your Workshop Assignment"; +$string['mail4'] = "A comment has been added to the assignment '\$a' by"; +$string['mail5'] = "The new comment can be seen in the Workshop Assignment '\$a'"; +$string['mail6'] = "Your assessment of the assignment '\$a' has by reviewed"; +$string['mail7'] = "The comments given by the \$a can be seen in the Workshop Assignment "; +$string['maximumsize'] = "Maximum Size"; +$string['modulename'] = "Workshop"; +$string['modulenameplural'] = "Workshops"; +$string['movingtophase'] = "Moving to Phase \$a"; +$string['newassessments'] = "New Assessments"; +$string['newgradings'] = "New Gradings"; +$string['newsubmissions'] = "New Submissions"; +$string['noassessmentsdone'] = "No Assessments Done"; +$string['nosubmissionsavailableforassessment'] = "No Submissions available for assessment"; +$string['notavailable'] = "Not Available"; +$string['noteonassessmentelements'] = + "Note that grading is broken down into a number of 'Assessment Elements'.
                        + This makes the grading easier and more consistent. As teacher you must add these
                        + Elements before making the assignment available to students. This is done by
                        + clicking on the assignment in the course, if no elements are present you will be asked
                        + to add them. You can change the number of elements using the Edit Assignment screen,
                        + the elements themselves can be amended from the "Managing Assessment" screen. "; +$string['notitlegiven'] = "No Title Given"; +$string['notgraded'] = "Not Graded"; +$string['numberofassessments'] = "Number of Assessments"; +$string['numberofassessmentelements'] = "Number of Comments, Assessment Elements, Grade Bands, Criterion Statments or Categories in a Rubric"; +$string['numberofassessmentsofstudentsubmissions'] = "Number of Assessments of Student Submissions"; +$string['numberofassessmentsofteachersexamples'] = "Number of Assessments of Examples from Teacher"; +$string['on'] = "on \$a"; +$string['openassignment'] = "Open Assignment"; +$string['optionforpeergrade'] = "Option for Peer Grade"; +$string['overallgrade'] = "Overall Grade"; +$string['overallpeergrade'] = "Overall Peer Grade: \$a"; +$string['overallteachergrade'] = "Overall Teacher Grade: \$a"; +$string['ownwork'] = "Own Work"; +$string['phase'] = "Phase"; +$string['phase1'] = "Set Up Assignment"; +$string['phase2'] = "Allow \$a Submissions and Assessments"; +$string['phase3'] = "Calculation of Final Grades"; +$string['phase4'] = "Show Final Grades"; +$string['pleaseassesstheseexamplesfromtheteacher'] = "Please assess these Examples from the \$a"; +$string['pleaseassessthesestudentsubmissions'] = "Please assess these \$a Submissions"; +$string['pleaseassessyoursubmissions'] = "Please assess your Submission(s)"; +$string['poor'] = "Poor"; +$string['present'] = "Present"; +$string['reassess'] = "Re-assess"; +$string['reply'] = "Reply"; +$string['returntosubmissionpage'] = "Return to Submission Page"; +$string['rubric'] = "Rubric"; +$string['savemyassessment'] = "Save my Assessment"; +$string['savemycomment'] = "Save my Comment"; +$string['savedok'] = "Saved OK"; +$string['savemygrading'] = "Save my Grading"; +$string['scaleyes'] = "2 point Yes/No scale"; +$string['scalepresent'] = "2 point Present/Absent scale"; +$string['scalecorrect'] = "2 point Correct/Incorrect scale"; +$string['scalegood3'] = "3 point Good/Poor scale"; +$string['scaleexcellent4'] = "4 point Excellent/Very Poor scale"; +$string['scaleexcellent5'] = "5 point Excellent/Very Poor scale"; +$string['scaleexcellent7'] = "7 point Excellent/Very Poor scale"; +$string['scale10'] = "Score out of 10"; +$string['scale20'] = "Score out of 20"; +$string['scale100'] = "Score out of 100"; +$string['select'] = "Select"; +$string['selfassessment'] = "Self Assessment"; +$string['showgrades'] = "Show Grades"; +$string['specimenassessmentform'] = "Specimen Assessment Form"; +$string['studentassessments'] = "\$a Assessments"; +$string['studentgrades'] = "\$a Grades"; +$string['studentsubmissionsforassessment'] = "\$a Student Submissions for Assessment"; +$string['studentsubmissions'] = "\$a Submissions"; +$string['submitassignment'] = "Submit Assignment"; +$string['submitexampleassignment'] = "Submit Example Assignment"; +$string['submitted'] = "Submitted"; +$string['submittedby'] = "Submitted by"; +$string['submission'] = "Submission"; +$string['submissions'] = "Submissions"; +$string['suggestedgrade'] = "Suggested Grade"; +$string['returnto'] = "Return to"; +$string['teacherassessments'] = "\$a Assessments"; +$string['teacherscomment'] = "Teacher's Comment"; +$string['teachersgrade'] = "Teacher's Grade"; +$string['teachersubmissionsforassessment'] = "\$a Teacher Submissions for Assessment"; +$string['thegradeis'] = "The Grade is \$a"; +$string['thereisfeedbackfromtheteacher'] = "There is feadback from the \$a"; +$string['theseasessmentsaregradedbytheteacher'] = "These Assessments are graded by the \$a"; +$string['timeassessed'] = "Time Assessed"; +$string['title'] = "Title"; +$string['typeofscale'] = "Type of Scale"; +$string['ungradedassessmentsofstudentsubmissions'] = "\$a Ungraded Assessments of Student Submissions"; +$string['ungradedassessmentsofteachersubmissions'] = "\$a Ungraded Assessments of Teacher Submissions"; +$string['verypoor'] = "Very Poor"; +$string['view'] = "View"; +$string['viewassessmentofteacher'] = "View Assessment of \$a"; +$string['viewotherassessments'] = "View other Assessments"; +$string['warningonamendingelements'] = "WARNING: There are submitted assessments.
                        Do NOT change the number + of elements, the scale types or the element weights."; +$string['weightederrorcount'] = "Weighted Error Count: \$a"; +$string['weightforbias'] = "Weight for Bias"; +$string['weightforgradingofassessments'] = "Weight for Grading of Assessments"; +$string['weightforpeerassessments'] = "Weight for Peer Assessments"; +$string['weightforreliability'] = "Weight for Reliability"; +$string['weightforteacherassessments'] = "Weight for \$a Assessments"; +$string['weights'] = "Weights"; +$string['weightsusedforfinalgrade'] = "Weights used for Final Grade"; +$string['weightsusedforsubmissions'] = "Weights used for Submissions"; +$string['yourassessments'] = "Your Assessments"; +$string['yourfeedbackgoeshere'] = "Your Feedback goes Here"; ?> diff --git a/lang/id/auth.php b/lang/id/auth.php index 7d7a731f09e..d3d236765b9 100644 --- a/lang/id/auth.php +++ b/lang/id/auth.php @@ -3,7 +3,7 @@ $string['auth_dbdescription'] = 'Metode ini menggunakan tabel database eksternal untuk memeriksa apakah nama pengguna dan password yang dimasukkan adalah sah. Jika keanggotaan adalah keanggotaan baru, maka informasi dari field-field yang lain juga bisa dikopi ke Moodle.'; -$string['auth_dbextrafields'] = 'Field-field ini adalah pilihan. Anda dapat memilih untuk memasukkan lebih dulu beberapa field-field pengguna dari Moodle dengan informasi dari field-field database eksternal yang Anda tentukan disini.
                        Jika Anda kosongkan, maka aturan default yang akan digunakan.
                        Pada kasus lainnya, pengguna akan dapat mengedit semua field-field ini setelah mereka login.'; +$string['auth_dbextrafields'] = 'Field-field ini adalah pilihan. Anda dapat memilih untuk memasukkan lebih dulu beberapa field-field pengguna dari Moodle dengan informasi dari field-field database eksternal yang Anda tentukan disini.

                        Jika Anda kosongkan, maka aturan default yang akan digunakan.

                        Pada kasus lainnya, pengguna akan dapat mengedit semua field-field ini setelah mereka login.'; $string['auth_dbfieldpass'] = 'Nama dari field yang berisi password'; $string['auth_dbfielduser'] = 'Nama dari field yang berisi nama pengguna'; $string['auth_dbhost'] = 'Komputer yang meng-host server database.'; @@ -12,7 +12,7 @@ $string['auth_dbpass'] = 'Password sama dengan nama pengguna di atas'; $string['auth_dbpasstype'] = 'Tentukan format yang akan digunakan oleh field password. Enkripsi MD5 sangat berguna untuk berhubungan dengan aplikasi web lainnya seperti PostNuke'; $string['auth_dbtable'] = 'Nama dari tabel pada database'; $string['auth_dbtitle'] = 'Gunakan database eksternal'; -$string['auth_dbtype'] = 'Jenis database (Lihat Dokumentasi ADOdb untuk penjelasannya)'; +$string['auth_dbtype'] = 'Jenis database (Lihat Dokumentasi ADOdb untuk penjelasannya)'; $string['auth_dbuser'] = 'Nama pengguna yang mempunyai akses pembacaan ke database'; $string['auth_emaildescription'] = 'Konfirmasi via email adalah metode otentikasi default. Saat pengguna mendaftar, memilih nama pengguna baru dan password mereka sendiri, sebuah email konfirmasi akan dikirim ke alamat email pengguna. Email ini berisi link yang aman untuk ke halaman dimana pengguna dapat mengkonfirmasi keanggotaannya. Login berikutnya hanya memeriksa nama pengguna dan password yang tersimpan pada databse Moodle.'; $string['auth_emailtitle'] = 'Otentikasi berdasarkan Email'; @@ -36,7 +36,7 @@ $string['auth_ldapdescription'] = 'Metode ini melakukan otentikasi melalui serve dimasukkan pada databasenya. Modul ini dapat membaca atribut pengguna dari LDAP dan memasukkan lebih dulu field-field yang dibutuhkan pada Moodle. Untuk login selanjutnya hanya nama pengguna dan password yang diperiksa.'; -$string['auth_ldapextrafields'] = 'Field-field ini adalah pilihan. Anda dapat memilih untuk memasukkan lebih dulu beberapa field-field pengguna dari Moodle dengan informasi dari field-field LDAP yang Anda tentukan disini.
                        Jika Anda mengosongkan field-field ini, maka tidak ada yang ditransfer dari LDAP dan default Moodle yang akan digunakan.
                        Pada kasus lain, pengguna akan dapat mengedit semua field-field ini setelah mereka login.'; +$string['auth_ldapextrafields'] = 'Field-field ini adalah pilihan. Anda dapat memilih untuk memasukkan lebih dulu beberapa field-field pengguna dari Moodle dengan informasi dari field-field LDAP yang Anda tentukan disini.

                        Jika Anda mengosongkan field-field ini, maka tidak ada yang ditransfer dari LDAP dan default Moodle yang akan digunakan.

                        Pada kasus lain, pengguna akan dapat mengedit semua field-field ini setelah mereka login.'; $string['auth_ldaptitle'] = 'Gunakan server LDAP'; $string['auth_manualdescription'] = 'Metode ini menghilangkan segala cara untuk seorang pengguna untuk membuat keanggotaan mereka sendiri. Semua keanggotaan harus secara manual dibuat oleh pengguna Admin.'; $string['auth_manualtitle'] = 'Keanggotaan hanya secara manual'; diff --git a/lang/id/editor.php b/lang/id/editor.php index cb1131498eb..41a037a76ef 100644 --- a/lang/id/editor.php +++ b/lang/id/editor.php @@ -4,7 +4,7 @@ $string['about'] = 'Tentang editor ini'; $string['absbottom'] = 'Bawah Absolut'; -$string['middle'] = 'Tengah Absolut'; +$string['absmiddle'] = 'Tengah Absolut'; $string['address'] = 'Alamat'; $string['alignment'] = 'Perataan'; $string['alternatetext'] = 'teks Alternatif'; diff --git a/lang/id/forum.php b/lang/id/forum.php index 4d7a4fd046d..3f06e986587 100644 --- a/lang/id/forum.php +++ b/lang/id/forum.php @@ -83,7 +83,7 @@ $string['openmode1'] = 'Tidak ada diskusi, tetapi tanggapan diperbolehkan'; $string['openmode2'] = 'Diskusi dan tanggapan diperbolehkan'; $string['parent'] = 'Tampilkan induknya'; $string['parentofthispost'] = 'Induk posting ini'; -$string['postadded'] = 'Posting Anda sukses ditambahkan.
                        Anda mempunyai $a untuk mengubah jika Anda ingin membuat perubahan.'; +$string['postadded'] = 'Posting Anda sukses ditambahkan.

                        Anda mempunyai $a untuk mengubah jika Anda ingin membuat perubahan.'; $string['postincontext'] = 'Lihat posting dalam konteks'; $string['postmailinfo'] = 'Ini adalah kopi dari pesan yang diposting pada website $a. Untuk menambahkan tanggapan Anda melalui website, klik pada link ini:'; diff --git a/lang/id/glossary.php b/lang/id/glossary.php index 340db09e61c..df486cd6cce 100644 --- a/lang/id/glossary.php +++ b/lang/id/glossary.php @@ -82,11 +82,11 @@ $string['entrydeleted'] = 'Masukan dihapus'; $string['entryexported'] = 'Masukan telah sukses di-ekspor'; $string['entryishidden'] = '(masukan ini disembunyikan saat ini)'; $string['entryusedynalink'] = 'Masukan ini seharusnya ter-link secara otomatis'; -$string['explainaddentry'] = 'Tambahkan masukan baru ke daftar kata saat ini.
                        Konsep dan definisi adalah field yang diwajibkan.'; +$string['explainaddentry'] = 'Tambahkan masukan baru ke daftar kata saat ini.
                        Konsep dan definisi adalah field yang diwajibkan.'; $string['explainall'] = 'Tampilkan SEMUA masukan dalam satu halaman'; $string['explainalphabet'] = 'Lihat daftar kata menggunakan indeks ini'; -$string['explainexport'] = 'Sebuah file telah dibuat.
                        Silahkan download dan simpan pada tempat aman. Anda dapat meng-impor-nya setiap saat Anda inginkan disini atau pada kursus yang lain.'; -$string['explainimport'] = 'Anda harus menetapkan file yang ingin di-impor dan tentukan kriteria prosesnya.
                        Kirimkan permintaan Anda dan ulaslah hasilnya.'; +$string['explainexport'] = 'Sebuah file telah dibuat.
                        Silahkan download dan simpan pada tempat aman. Anda dapat meng-impor-nya setiap saat Anda inginkan disini atau pada kursus yang lain.'; +$string['explainimport'] = 'Anda harus menetapkan file yang ingin di-impor dan tentukan kriteria prosesnya.

                        Kirimkan permintaan Anda dan ulaslah hasilnya.'; $string['explainspecial'] = 'Tampilkan masukan yang tidak dimulai dengan huruf'; $string['exportedentry'] = 'Masukan di-ekspor'; $string['exportedfile'] = 'File di-ekspor'; diff --git a/lang/id/help/forum/ratings.html b/lang/id/help/forum/ratings.html index 30028ff79e9..526a651c313 100644 --- a/lang/id/help/forum/ratings.html +++ b/lang/id/help/forum/ratings.html @@ -4,7 +4,7 @@ Teori ini bisa membantu Anda untuk melihat interaksi manusia dalam pandangan yan Walaupun setiap dari kita bisa mneggunakan kedua cara ini dalam jumlah yang berbeda dalam saat yang berbeda, ini bisa sangat berguna dengan membayangkan dua orang sebagai contoh, satu adalah orang yang lebih kearah orang yang berpengetahuan terpisah (Jim) dan yang lainnya lebih kearah orang yang berpengetahuan berhubungan (Mary).

                          -
                        • Jim suka untuk mengingat se 'objektif' yang dimungkinkan tanpa mengikutkan perasaan dan emosi. Saat didalam diskusi dengan orang lain yang mungkin mempunyai pemikiran yang berbeda, dia menyukai untuk mempertahankan pemikirannya sendiri, menggunakan logika untuk menemukan celah pada pemikiran lawannya. Dia adalah kritis terhadap pemikiran baru sampai dia mendapatkan bukti yang kuat dari sumber yang dapat dipercaya seperti dari buku literatur, pengajar yang dikagumi atau dari pengalamannya sendiri. Jim adalah orang yang sangat berpengetahuan terpisah.
                          +
                        • Jim suka untuk mengingat se 'objektif' yang dimungkinkan tanpa mengikutkan perasaan dan emosi. Saat didalam diskusi dengan orang lain yang mungkin mempunyai pemikiran yang berbeda, dia menyukai untuk mempertahankan pemikirannya sendiri, menggunakan logika untuk menemukan celah pada pemikiran lawannya. Dia adalah kritis terhadap pemikiran baru sampai dia mendapatkan bukti yang kuat dari sumber yang dapat dipercaya seperti dari buku literatur, pengajar yang dikagumi atau dari pengalamannya sendiri. Jim adalah orang yang sangat berpengetahuan terpisah.
                        • Mary lebih sensitif terhadap orang lain. Dia punya kemampuan untuk berempati dan cenderung untuk mendengarkan dan bertanya sampai dia merasa dia bisa berhubungan dan "mengerti sesuatu dari cara mereka melihat". Dia belajar dari mencoba untuk berbagi pengalaman yang mengarah kepada pengetahuan yang ia temukan pada orang lain. Jika berbicara pada orang lain, dia menghindari konfrontasi dan akan sering mencoba untuk membantu orang lain tersebut jika ia melihat cara untuk melakukannya, menggunakan pemberian saran secara logika. Mary adalah orang yang sangat berpengetahuan berhubungan.
                        diff --git a/lang/id/moodle.php b/lang/id/moodle.php index d3a532c3ff3..e3add090ef7 100644 --- a/lang/id/moodle.php +++ b/lang/id/moodle.php @@ -6,7 +6,7 @@ $string['action'] = 'Tindakan'; $string['active'] = 'Aktif'; $string['activities'] = 'Aktivitas'; $string['activity'] = 'Aktivitas'; -$string['activityclipboard'] = 'Pindahkan aktivitas ini: $a'; +$string['activityclipboard'] = 'Pindahkan aktivitas ini: < b>$a'; $string['activityiscurrentlyhidden'] = 'Maaf, aktivitas ini sekarang tersembunyi'; $string['activitymodule'] = 'Modul kegiatan'; $string['activityreport'] = 'Laporan kegiatan'; @@ -96,7 +96,7 @@ $string['backupkeephelp'] = 'Berapa banyak backup terbaru untuk masing-masing ku $string['backuplogshelp'] = 'Jika diaktifkan, maka log kursus akan di backup secara otomatis'; $string['backupnameformat'] = '%%d%%m%%Y-%%H%%M'; $string['backuporiginalname'] = 'Nama backup'; -$string['backupsavetohelp'] = 'Path direktori lengkap dimana Anda akan menyimpan file-file backup
                        (biarkan kosong untuk menyimpan pada direktori default kursus)'; +$string['backupsavetohelp'] = 'Path direktori lengkap dimana Anda akan menyimpan file-file backup
                        (biarkan kosong untuk menyimpan pada direktori default kursus)'; $string['backupuserfileshelp'] = 'Tentukan apakah file-file pengguna (mis. gambar pada profile) juga dimasukkan pada backup otomatis'; $string['backupusershelp'] = 'Tentukan apakah Anda ingin memasukkan semua pengguna atau hanya pengguna tertentu dari tiap kursus'; $string['backupversion'] = 'Versi Backup'; @@ -154,7 +154,7 @@ $string['configlongtimenosee'] = 'Jika siswa tidak pernah login untuk waktu yang $string['configmaxbytes'] = 'Ini menetapkan ukuran maksimum untuk file yang dapat di-upload disemua bagian pada situs ini. Pengaturan ini dibatasi dengan aturan PHP yaitu upload_max_filesize dan LimitRequestBody. Pada Gilirannya, maxbytes membatasi cakupan dari ukuran yang dapat dipilih pada tingkatan kursus atau tingkatan modul.'; $string['configmaxeditingtime'] = 'Ini akan menetapkan total waktu untuk kembali mengedit diskusi yang diposting, saran untuk jurnal dll. Biasanya 30 menit adalah waktu yang tepat.'; $string['configopentogoogle'] = 'Jika Anda mengaktifkan pengaturan ini, maka Google akan diijinkan untuk masuk ke situs Anda sebagai Tamu. Sebagai tambahan, orang-orang masuk ke situs Anda via pencarian Google akan secara otomatis di-log sebagai Tamu. Catat bahwa ini hanya menyediakan akses yang transparan ke kursus yang telah mengijinkan akses tamu.'; -$string['configproxyhost'] = 'Jika server ini perlu menggunakan komputer proxy computer (mis. firewall) untuk mengakses Internet, maka tetapkan nama host proxy dan portnya disini. Atau biarkan saja kosong.'; +$string['configproxyhost'] = 'Jika server ini perlu menggunakan komputer proxy computer (mis. firewall) untuk mengakses Internet, maka tetapkan nama host proxy dan portnya disini. Atau biarkan saja kosong.'; $string['configsecureforms'] = 'Moodle dapat menggunakan tingkatan tambahan untuk keamanan ketika menerima data dari form web. Jika ini diaktifkan, maka variabel HTTP_REFERER browser akan diperiksa terhadap alamat form saat ini. Pada sangat sedikit kasus ini dapat menyebabkan permasalahan jika pemakai menggunakan firewall ( misalnya Zonealarm) yang diatur melepaskan HTTP_REFERER dari lalu lintas web mereka. Gejala yang terjadi \'berhenti\' pada form tersebut. Jika pengguna Anda mempunyai masalah dengan halaman login (sebagai contoh) Anda mungkin ingin mematikan pengaturan ini, walaupun itu bisa membuat situs Anda lebih terbuka bagi serangan password secara brute-force. Jika ragu-ragu, biarkan pengaturannya diatur pada \'Ya\'.'; $string['configsessioncookie'] = 'Ini mengatur nama dari cookie yang digunakan untuk sesi Moodle. Ini adalah opsional, dan hanya berguna untuk menghindari kekcauan cookie ketika ada lebih dari satu kopi Moodle yang berjalan di dalam situs web yang sama.'; $string['configsessiontimeout'] = 'Jika orang yang masuk ke situs ini dan tidak aktif dalam jangka waktu lama (tanpa memperbaharui halaman) maka mereka secara otomatis dikeluarkan (sesi mereka diakhiri). Variabel ini menetapkan berapa lama waktu ini seharusnya.'; @@ -292,9 +292,9 @@ baris pengisian alamat pada bagian atas dari browser Anda. Salam dari kami \'$a->sitename\' administrator, $a->admin'; $string['emailconfirmationsubject'] = '$a: konfirmasi keanggotaan'; -$string['emailconfirmsent'] = '

                        Sebuah email telah dikirimkan ke alamat Anda pada $a -

                        yang berisi petunjuk ringkas untuk melengkapi pendaftaran Anda. -

                        Jika Anda menemukan kesulitan, hubungi administrator situs ini.

                        '; +$string['emailconfirmsent'] = '

                        Sebuah email telah dikirimkan ke alamat Anda pada $a +

                        yang berisi petunjuk ringkas untuk melengkapi pendaftaran Anda. +

                        Jika Anda menemukan kesulitan, hubungi administrator situs ini.'; $string['emaildisable'] = 'Alamat email ini di non-aktifkan'; $string['emaildisplay'] = 'Tampilan Email'; $string['emaildisplaycourse'] = 'Bolehkan hanya sesama peserta kursus untuk melihat alamat email saya'; @@ -322,18 +322,18 @@ $a->admin'; $string['emailpasswordconfirmationsubject'] = '$a: konfirmasi penggantian password'; $string['emailpasswordconfirmsent'] = 'Sebuah email telah dikirimkan ke alamat Anda di $a.

                        Email ini berisi instruksi untuk melakukan konfirmasi terhadap penggantian password Anda. -Jika Anda menemui kesulitan, Hubungi administrator situs.

                        '; +Jika Anda menemui kesulitan, Hubungi administrator situs.'; $string['emailpasswordsent'] = 'Terima kasih atas konfirmasi Anda untuk pengubahan password. -

                        Sebuah email berisi password baru Anda telah dikirim ke alamat email Anda pada $a->email.

                        -

                        Password baru dibuat secara otomatis - Mungkin Anda ingin link\">mengganti password Anda ke sesuatu yang mudah Anda ingat.

                        '; +

                        Sebuah email berisi password baru Anda telah dikirim ke alamat email Anda pada $a->email. +

                        Password baru dibuat secara otomatis - Mungkin Anda ingin link>mengganti password Anda ke sesuatu yang mudah Anda ingat.'; $string['enable'] = 'Aktifkan'; $string['enrolledincourse'] = 'Terdaftar pada kursus $a'; $string['enrolledincoursenot'] = 'Tidak terdaftar pada kursus $a'; $string['enrolmentconfirmation'] = 'Anda sedang mendaftarkan diri Anda sebagai anggota kursus ini.
                        Anda yakin ingin melakukan ini?'; $string['enrolmentkey'] = 'Kunci Masuk'; -$string['enrolmentkeyfrom'] = 'Kursus ini memerlukan \'Kunci Masuk\' - hanya sekali
                        +$string['enrolmentkeyfrom'] = 'Kursus ini memerlukan \'Kunci Masuk\' - hanya sekali
                        kunci masuk yang Anda dapatkan dari $a'; -$string['enrolmentkeyhint'] = 'Kunci Masuk ini tidak sah, silahkan mencoba lagi
                        +$string['enrolmentkeyhint'] = 'Kunci Masuk ini tidak sah, silahkan mencoba lagi
                        (Ini petunjuknya - dimulai dengan \'$a\''; $string['entercourse'] = 'Klik untuk memasuki kursus ini'; $string['enteremailaddress'] = 'Masukkan alamat email Anda untuk me-reset password @@ -506,23 +506,23 @@ $string['loginsteps'] = 'Hallo! Untuk akses penuh pada kursus Anda perlu dalam b Setiap kursus juga nantinya akan membutuhkan satu kali memasukkan "Kunci Masuk", yang mungkin Anda butuhkan nanti. Ini adalah langkah-langkahnya: -

                          -
                        1. Isilah formulir Anggota baru dengan data Anda.
                        2. -
                        3. Sebuah email akan dikirimkan ke alamat email yang Anda masukkan.
                        4. -
                        5. Baca email yang dikirimkan, dan klik pada link situs yang ada.
                        6. -
                        7. Keanggotaan Anda akan dikonfirmasikan dan Anda akan mulai bisa login.
                        8. -
                        9. Setelah login, pilih kursus yang ingin Anda ikuti.
                        10. -
                        11. Jika Anda diminta untuk memasukkan "Kunci Masuk" - maka masukkan +
                            +
                          1. Isilah formulir Anggota baru dengan data Anda. +
                          2. Sebuah email akan dikirimkan ke alamat email yang Anda masukkan. +
                          3. Baca email yang dikirimkan, dan klik pada link situs yang ada. +
                          4. Keanggotaan Anda akan dikonfirmasikan dan Anda akan mulai bisa login. +
                          5. Setelah login, pilih kursus yang ingin Anda ikuti. +
                          6. Jika Anda diminta untuk memasukkan "Kunci Masuk" - maka masukkan Kunci Masuk yang diberikan oleh pengajar Anda. Ini akan "mendaftarkan" Anda pada - kursus.
                          7. -
                          8. Sekarang Anda dapat mengakses penuh kursus tersebut. Selanjutnya Anda hanya akan perlu + kursus. +
                          9. Sekarang Anda dapat mengakses penuh kursus tersebut. Selanjutnya Anda hanya akan perlu untuk memasukkan nama pengguna dan password Anda (pada form di halaman ini) - untuk Login dan meng-akses yang telah Anda daftar.
                          10. - '; -$string['loginstepsnone'] = '

                            Hai!

                            Untuk akses penuh pada kursus, Anda perlu membuat -keanggotaan Anda sendiri.

                            Yang harus Anda lakukan adalah buatlah nama pengguna dan password dan gunakanlah pada -form dihalaman ini!

                            Jika orang lain telah menggunakan nama pengguna yang Anda pilih -maka Anda harus mencoba kembali dengan menggunakan nama pengguna yang lain.

                            '; + untuk Login dan meng-akses yang telah Anda daftar. +
                          '; +$string['loginstepsnone'] = 'Hai!

                          Untuk akses penuh pada kursus, Anda perlu membuat +keanggotaan Anda sendiri.

                          Yang harus Anda lakukan adalah buatlah nama pengguna dan password dan gunakanlah pada +form dihalaman ini!

                          Jika orang lain telah menggunakan nama pengguna yang Anda pilih +maka Anda harus mencoba kembali dengan menggunakan nama pengguna yang lain.'; $string['loginto'] = 'Login ke $a'; $string['loginusing'] = 'Login disini menggunakan nama pengguna dan password Anda'; $string['logout'] = 'Keluar'; @@ -678,10 +678,10 @@ $string['passwordconfirmchange'] = 'Konfirmasi perubahan password'; $string['passwordrecovery'] = 'Ya, bantu saya untuk login'; $string['passwordsdiffer'] = 'Password ini tidak cocok'; $string['passwordsent'] = 'Password telah dikirimkan'; -$string['passwordsenttext'] = 'Sebuah email telah dikirimkan ke alamat email Anda pada $a->email. -
                          Silahkan periksa email Anda untuk melihat password Anda yang baru -
                          Password baru telah dibuat secara otomatis, jadi mungkin Anda ingin untuk - link\">menggantinya dengan sesuatu yang mudah untuk diingat.'; +$string['passwordsenttext'] = '

                          Sebuah email telah dikirimkan ke alamat email Anda pada $a->email. +

                          Silahkan periksa email Anda untuk melihat password Anda yang baru +

                          Password baru telah dibuat secara otomatis, jadi mungkin Anda ingin untuk + link>menggantinya dengan sesuatu yang mudah untuk diingat.'; $string['people'] = 'Menu Pribadi'; $string['personalprofile'] = 'Profil pribadi'; $string['phone'] = 'Telepon'; @@ -707,11 +707,11 @@ $string['recentactivity'] = 'Aktifitas lalu'; $string['recentactivityreport'] = 'laporan lengkap aktifitas terbaru...'; $string['registration'] = 'Pendaftaran Moodle'; $string['registrationemail'] = 'Notifikasi Email'; -$string['registrationinfo'] = '

                          Pada halaman ini Anda dapat mendaftarkan situs Moodle Anda pada moodle.org. Pendaftaran bersifat gratis. Manfaat utama dari mendaftarkan adalah bahwa Anda akan didaftarkan ke milis ber-volume rendah untuk pemberitahuan yang penting seperti tentang keamanan dan versi yang baru dari Moodle.

                          +$string['registrationinfo'] = '

                          Pada halaman ini Anda dapat mendaftarkan situs Moodle Anda pada moodle.org. Pendaftaran bersifat gratis. Manfaat utama dari mendaftarkan adalah bahwa Anda akan didaftarkan ke milis ber-volume rendah untuk pemberitahuan yang penting seperti tentang keamanan dan versi yang baru dari Moodle.

                          Secara default, informasi Anda akan dijaga tetap pribadi, dan tidak akan pernah dijual atau diberikan kepada orang yang lain. Satu-Satunya alasan untuk mengumpulkan informasi ini adalah untuk tujuan dukungan, dan untuk membantu membangun suatu gambaran statistik dari masyarakat Moodle secara keseluruhan. -

                          Jika Anda ingin, Anda dapat mengijinkan nama situs Anda, negara dan URL untuk ditambahkan ke daftar publikasi situs Moodle. -

                          Semua pendaftaran akan diverifikasi sebelum ditambahkan ke daftar, tetapi sekali anda terdaftar Anda dapat memperbaharui info pendaftaran Anda (dan data Anda pada daftar publikasi) pada setiap saat Anda mengirim kembali form ini.

                          '; +

                          Jika Anda ingin, Anda dapat mengijinkan nama situs Anda, negara dan URL untuk ditambahkan ke daftar publikasi situs Moodle. +

                          Semua pendaftaran akan diverifikasi sebelum ditambahkan ke daftar, tetapi sekali anda terdaftar Anda dapat memperbaharui info pendaftaran Anda (dan data Anda pada daftar publikasi) pada setiap saat Anda mengirim kembali form ini.'; $string['registrationno'] = 'Tidak, saya tidak ingin menerima email'; $string['registrationsend'] = 'Kirim informasi pendaftaran ke moodle.org'; $string['registrationyes'] = 'Ya, harap beritahu saya tentang berita penting'; @@ -747,7 +747,7 @@ $string['scheduledbackupstatus'] = 'Status jadual backup'; $string['search'] = 'Cari'; $string['searchagain'] = 'Cari lagi'; $string['searchcourses'] = 'Cari kursus'; -$string['searchhelp'] = 'Anda dapat mencari dengan banyak kata sekaligus.
                          kata: temukan sesuatu yang cocok dengan kata ini dalam teks.
                          +kata: hanya kata yang cocok tepat yang akan ditemukan.
                          -kata: jangan masukkan hasil yang berisi kata ini.'; +$string['searchhelp'] = 'Anda dapat mencari dengan banyak kata sekaligus.

                          kata: temukan sesuatu yang cocok dengan kata ini dalam teks.
                          +kata: hanya kata yang cocok tepat yang akan ditemukan.
                          -kata: jangan masukkan hasil yang berisi kata ini.'; $string['searchresults'] = 'Hasil pencarian'; $string['sec'] = 'detik'; $string['secs'] = 'detik'; diff --git a/lang/id/quiz.php b/lang/id/quiz.php index 2d5cd15bd50..74818ea85aa 100644 --- a/lang/id/quiz.php +++ b/lang/id/quiz.php @@ -81,11 +81,11 @@ $string['filloutthreequestions'] = 'Anda harus mengisi paling sedikit 3 pertanya Pertanyaan yang dikosongkan tidak akan digunakan.'; $string['fillouttwochoices'] = 'Anda harus memilih paling tidak dua pilihan. Pilihan yang dikosongkan tidak akan dinilai.'; $string['fractionsaddwrong'] = 'Jumlah nilai tingkat yang Anda pilih tidak cukup 100%% -
                          Tetapi, jumlah nilainya $a%% -
                          Anda ingin kembali untuk memperbaiki pertanyaan ini?'; +
                          Tetapi, jumlah nilainya $a%% +
                          Anda ingin kembali untuk memperbaiki pertanyaan ini?'; $string['fractionsnomax'] = 'Satu dari jawaban harus bernilai 100%%, jadi -
                          memungkinkan untuk mendapat tingkatan tertinggi pada pertanyaan ini. -
                          Anda ingin kembali untuk memperbaiki pertanyaan ini?'; +
                          memungkinkan untuk mendapat tingkatan tertinggi pada pertanyaan ini. +
                          Anda ingin kembali untuk memperbaiki pertanyaan ini?'; $string['gift'] = 'Format GIFT'; $string['gradeaverage'] = 'Nilai Rata-rata'; $string['gradehighest'] = 'Nilai Tertinggi'; diff --git a/lang/id/resource.php b/lang/id/resource.php index def82082829..524451483e5 100644 --- a/lang/id/resource.php +++ b/lang/id/resource.php @@ -46,7 +46,7 @@ $string['newwindow'] = 'Jendela baru'; $string['newwindowopen'] = 'Tampilkan bacaan ini pada jendela popup yang baru'; $string['note'] = 'Catatan'; $string['notefile'] = 'Untuk upload beberapa file untuk kursus (sehingga akan terlihat pada daftar) gunakan -Pengatur File.'; +Pengatur File.'; $string['notypechosen'] = 'Anda perlu memilih tipenya. Gunakan tombol kembali untuk kembali dan mengulangi.'; $string['popupresource'] = 'Bacaan ini seharusnya tampil pada jendela popup.'; $string['popupresourcelink'] = 'Jika tidak, klik disini: $a'; diff --git a/lang/id/survey.php b/lang/id/survey.php index f8ec1a8e278..9cc151b81ff 100644 --- a/lang/id/survey.php +++ b/lang/id/survey.php @@ -127,7 +127,7 @@ Terima Kasih.'; $string['collesaname'] = 'COLLES (Terbaru)'; $string['collesapintro'] = 'Kegunaan dari pertanyaan-pertanyaan kuis ini adalah untuk membantu kami mengetahui sampai seberapa baik distribusi online dari bagian ini yang dapat Anda pelajari. -Setiap satu dari 24 pernyataan di bawah meminta Anda untuk membandingkan yang Anda lebih sukai (ideal) dan pengalaman terbaru pada bagian ini. +Setiap satu dari 24 pernyataan di bawah meminta Anda untuk membandingkan yang Anda lebih sukai (ideal) dan pengalaman terbaru pada bagian ini. Tidak ada jawaban yang \'benar\' atau \'salah\'; kami hanya tertarik pada opini Anda. Harap Anda yakin bahwa tanggapan Anda akan diperlakukan sangat rahasia, dan tidak akan mempengaruhi penilaian Anda. @@ -150,7 +150,7 @@ $string['collesm6short'] = 'Interpretasi'; $string['collesmintro'] = 'pada bagian online ini...'; $string['collespintro'] = 'Kegunaan dari survei ini adalah untuk membantu kami untuk mengetahui apa yang Anda dapatkan dari pengalaman belajar secara online. -Setiap satu dari 24 pernyataan di bawah menanyakan tentang pengalaman yang Anda lebih sukai (ideal) pada bagian ini. +Setiap satu dari 24 pernyataan di bawah menanyakan tentang pengalaman yang Anda lebih sukai (ideal) pada bagian ini. Tidak ada jawaban \'benar\' atau \'salah\'; kami hanya tertarik pada opini Anda. Harap Anda yakin bahwa tanggapan Anda akan diperlakukan secara sangat rahasia dan tidak akan memperngaruhi penilaian terhadap Anda. diff --git a/lang/id/workshop.php b/lang/id/workshop.php index 11615118868..5f66d077865 100644 --- a/lang/id/workshop.php +++ b/lang/id/workshop.php @@ -112,7 +112,7 @@ $string['noassessmentsdone'] = 'Tidak dinilai selesai'; $string['nosubmission'] = 'Kiriman tidak ada'; $string['nosubmissionsavailableforassessment'] = 'Tidak ada kiriman yang tersedia untuk dinilai'; $string['notavailable'] = 'Tidak tersedia'; -$string['noteonassessmentelements'] = 'Catat bahwa penilaian dipecah ke dalam sejumlah \'Unsur Penilaian\'.
                          Ini membuat penilaian lebih konsisten dan lebih mudah. Sebagai guru Anda harus menambahkan unsur-unsur
                          ini sebelum membuat tugas tersedia untuk para siswa. Ini bisa dilaksanakan dengan
                          meng-klik tugas pada kursus, jika tidak ada unsur-unsur yang tersedia maka Anda akan diminta
                          untuk menambahkannya. Anda dapat mengubah banyaknya unsur-unsur dengan menggunakan layar Ubah Tugas,
                          unsur-unsur itu sendiri dapat dikembangkan dari layar "Pengaturan Tugas".'; +$string['noteonassessmentelements'] = 'Catat bahwa penilaian dipecah ke dalam sejumlah \'Unsur Penilaian\'.
                          Ini membuat penilaian lebih konsisten dan lebih mudah. Sebagai guru Anda harus menambahkan unsur-unsur
                          ini sebelum membuat tugas tersedia untuk para siswa. Ini bisa dilaksanakan dengan
                          meng-klik tugas pada kursus, jika tidak ada unsur-unsur yang tersedia maka Anda akan diminta
                          untuk menambahkannya. Anda dapat mengubah banyaknya unsur-unsur dengan menggunakan layar Ubah Tugas,
                          unsur-unsur itu sendiri dapat dikembangkan dari layar "Pengaturan Tugas".'; $string['notgraded'] = 'Belum dinilai'; $string['notitlegiven'] = 'Judul tidak diberikan'; $string['numberofassessmentelements'] = 'Jumlah komentar, Unsur Tugas, Kumpulan peringkat, Pernyataan kriteria atau Kategori dalam rubrik'; @@ -213,7 +213,7 @@ $string['verypoor'] = 'Sangat Jelek'; $string['view'] = 'Lihat'; $string['viewassessmentofteacher'] = 'Lihat nilai dari $a'; $string['viewotherassessments'] = 'Lihat nilai yang lain'; -$string['warningonamendingelements'] = 'PERINGATAN: Ada kiriman penilaian.
                          Jangan mengganti jumlah unsurnya, jenis skala atau bobot unsurnya.'; +$string['warningonamendingelements'] = 'PERINGATAN: Ada kiriman penilaian.
                          Jangan mengganti jumlah unsurnya, jenis skala atau bobot unsurnya.'; $string['weight'] = 'Bobot'; $string['weightederrorcount'] = 'Penghitungan bobot salah: $a'; $string['weightforbias'] = 'Bobot untuk bias'; diff --git a/lang/it/LEGGIMI b/lang/it/LEGGIMI index ae123b2e32f..4dc8f3c7c41 100644 --- a/lang/it/LEGGIMI +++ b/lang/it/LEGGIMI @@ -1,4 +1,4 @@ -Traduzione in lingua italiana a cura di Davide Suraci - 29 Novembre 2002 +Traduzione il lingua italiana a cura di Davide Suraci - 29 Novembre 2002 ---------------------------------------------------------------------- Davide Suraci ICQ:154548662 icarused@iol.it @@ -11,7 +11,7 @@ http://www.territorioscuola.it/moodle/ -Traduzione in lingua italiana a cura di Paolo Lariccia - 21 Febbraio 2003 +Traduzione il lingua italiana a cura di Paolo Lariccia - 21 Febbraio 2003 ---------------------------------------------------------------------- Paolo.Lariccia@pg.infn.it ---------------------------------------------------------------------- @@ -22,7 +22,7 @@ Sito moodle: http://lariccia-pc2.pg.infn.it/moodle/ -Traduzione in lingua italiana a cura di Roberto Pinna - 21 Maggio 2003 +Traduzione il lingua italiana a cura di Roberto Pinna - 21 Maggio 2003 ---------------------------------------------------------------------- bobo@mfn.unipmn.it ---------------------------------------------------------------------- @@ -37,8 +37,3 @@ Siti Moodle: http://tangle.mfn.unipmn.it/corsi/ http://tangle.mfn.unipmn.it/research/ http://tangle.mfn.unipmn.it/servizi/ - - -Dal Febbraio 2004 la traduzione in lingua italiana e' portata avanti da tutta -la comunita' italiana di Moodle. -http://moodle.org/mod/forum/discuss.php?d=4863 \ No newline at end of file diff --git a/lang/it/activitynames.php b/lang/it/activitynames.php index ab69e75eed9..7c710c2f011 100644 --- a/lang/it/activitynames.php +++ b/lang/it/activitynames.php @@ -1,5 +1,5 @@ Ulteriori informazioni'; $string['upgradelogsinfo'] = 'Alcune modifiche hanno cambiato il modo in cui vengono salvati alcuni log. Per poter visualizzare tutti i vecchi log su una base di per-attività, è necessario aggiornarli. In base al tuo sito questa operazione può richiedere molto tempo (es alcune ore) e può essere grosso lavoro per la base dati dei siti grandi. Una volta che l\'aggiornamento è iniziato devi lasciarlo terminare (mantenendo la finestra del browser aperta). Non preoccuparti - il tuo sito continuerà a lavorare correttamente mentre i log vengono aggiornati.

                          Vuoi aggiornare i log ora?'; -$string['upgradesure'] = 'I file di Moodle sono cambiati, e si per aggiornare automaticamente la versione del server alla seguente versione: -

                          $a

                          -

                          Una volta effettuato questo non è possibile tornare indietro.

                          -

                          Siete sicuri di voler aggiornare questo server a quest versione?

                          '; $string['upgradinglogs'] = 'Aggiornamento log'; ?> diff --git a/lang/it/appointment.php b/lang/it/appointment.php deleted file mode 100755 index 212b3ce6506..00000000000 --- a/lang/it/appointment.php +++ /dev/null @@ -1,45 +0,0 @@ - diff --git a/lang/it/auth.php b/lang/it/auth.php index 736d3b6c0f0..4c06a363bb2 100644 --- a/lang/it/auth.php +++ b/lang/it/auth.php @@ -1,11 +1,9 @@ campi della base di dati esterna che voi specificate qui.
                          Se lasciate questi vuoti, saranno usati quelli di default.
                          In entrambi i casi, l\'utente potrà modificare tutti questi campi dopo la registrazione.'; +$string['auth_dbextrafields'] = 'Questi campi sono facoltativi. Potete scegliere pre compilare alcuni campi dell\'utente di Moodle con le informazioni dei campi della base di dati esterna che voi specificate qui. < P>Se lasciate questi vuoti, saranno usati quelli di default.

                          In entrambi i casi, l\'utente potrà modificare tutti questi campi dopo la registrazione.'; $string['auth_dbfieldpass'] = 'Nome del campo che contiene le password'; $string['auth_dbfielduser'] = 'Nome del campo che contiene gli username'; $string['auth_dbhost'] = 'Il computer su cui si trova la base dati'; @@ -14,10 +12,8 @@ $string['auth_dbpass'] = 'Password corrisponde al suddetto username'; $string['auth_dbpasstype'] = 'Specifica il formato usato per il campo password. La criptatura MD5 é utile per connettersi con altre applicazioni web come PostNuke'; $string['auth_dbtable'] = 'Nome della tabella della base dati'; $string['auth_dbtitle'] = 'Usa un database esterno'; -$string['auth_dbtype'] = 'Il tipo di base di dati (guarda la documentazione ADOdb per i dettagli)'; +$string['auth_dbtype'] = 'Il tipo di base di dati (guarda la documentazione ADOdb per i dettagli)'; $string['auth_dbuser'] = 'Nome utente con diritti di lettura nella base dati'; -$string['auth_editlock'] = 'Blocca valore'; -$string['auth_editlock_expl'] = '

                          Blocca valore: Se abilitato, evita che gli utenti di Moodle e gli amministratori modifichino il campo direttamente. Utilizza questa opzione se gestisci questi dati con un sistema di autenticazione esterno.

                          '; $string['auth_emaildescription'] = 'La conferma tramite email é il metodo di autenticazione di default. Quando l\'utente si iscrive, scegliendo il suo nome utente e la password, un email di conferma viene spedita all\'indirizzo di posta elettronica dell\'utente. Questa email contiene un link sicuro a una pagina dove l\'utente può confermare la sua iscrizione. Ai successivi login verranno controllati il nome utente e la password con i valori salvati nella base di dati di Moodle.'; $string['auth_emailtitle'] = 'Autenticazione via email'; $string['auth_fccreators'] = 'Elenca i gruppi dei membri abilitati alla creazione di nuovi corsi. Separa gruppi multipli con \';\'. I nomi devo essere scritti esattamente come sul server FirstClass. Il sistema è sensibile alla capitalizzazione. '; @@ -34,30 +30,18 @@ $string['auth_imaptitle'] = 'Usa un server IMAP'; $string['auth_imaptype'] = 'Tipo di server IMAP. I server IMAP possono avere modi differenti di autenticazione e negoziazione.'; $string['auth_ldap_bind_dn'] = 'Se vuoi usare bind utente per cercare gli utenti, specificalo qui. Qualcosa come \'cn=ldapuser,ou=public,o=org\''; $string['auth_ldap_bind_pw'] = 'Password per bind utente.'; -$string['auth_ldap_bind_settings'] = 'Impostazioni richieste'; $string['auth_ldap_contexts'] = 'Lista dei contesti dove sono messi gli utenti. Separa contesti diversi con il \';\'. Per esempio: \'ou=users,o=org; ou=others,o=org\''; $string['auth_ldap_create_context'] = 'Se abiliti la creazione degli utenti con conferma tramite email, specifica il contestodove gli utenti vengono creati. Questo contesto deve essere diverso dagli altri utenti per prevenire problemi di sicurezza. Non é necessario aggiungere questo contesto alla variabile ldap_context, Moodle cercherà gli utenti in questo contesto automaticamente. '; $string['auth_ldap_creators'] = 'Lista dei gruppi nei quali i membri possono creare nuovi corsi. Separa i gruppi multipli con \';\'. Normalmente qualcosa come \'cn=teachers,ou=staff,o=myorg\''; -$string['auth_ldap_expiration_desc'] = 'Seleziona No per disabilitare il controllo delle password scadute o la lettura della data di scadenza delle password direttamente da LDAP'; -$string['auth_ldap_expiration_warning_desc'] = 'Numero di giorni prima che l\'avvertimento di password scaduta sia mandato.'; -$string['auth_ldap_expireattr_desc'] = 'Opzionale: esclude l\'attributo ldap che mantiene il tempo di scadenza della password PasswordExpirationTime'; -$string['auth_ldap_graceattr_desc'] = 'Opzionale: esclude l\'attributo gracelogin'; -$string['auth_ldap_gracelogins_desc'] = 'Abilita il supporto del gracelogin di LDAP. Dopo che la password è scaduta l\'utente può accedere finché il contatore gracelogin non è 0. Abilitando questa impostazione viene mostrato il messaggio di garanzia d\'accesso se la passoword è scaduta.'; $string['auth_ldap_host_url'] = 'Specifica il server LDAP con un URL tipo \'ldap://ldap.myorg.com/\' o \'ldaps://ldap.myorg.com/\' '; -$string['auth_ldap_login_settings'] = 'Impostazioni accesso'; $string['auth_ldap_memberattribute'] = 'Specifica l\'attributo del utente membro, quando gli utenti appartengono a un gruppo. Normalmente \'menber\''; -$string['auth_ldap_objectclass'] = 'Il filtro utilizzato per la ricerca dei nomi utente. Normalmente sarà impostato a qualcosa di simile a objectClass=posixAccount. L\'impostazione a objectClass=* restituirà tutti gli oggetti da LDAP.'; -$string['auth_ldap_passwdexpire_settings'] = 'Impostazione scadenza passowrd LDAP'; $string['auth_ldap_search_sub'] = 'Metti un valore <> 0 se preferisci cercare gli utenti da sottocontesti.'; -$string['auth_ldap_server_settings'] = 'Impostazioni server LDAP'; $string['auth_ldap_update_userinfo'] = 'Aggiorna le informazioni utente (nome, cognome, indirizzo...) da LDAP a Moodle. Guarda /auth/ldap/attr_mappings.php per le informazioni su mapping'; $string['auth_ldap_user_attribute'] = 'L\'attributo usato per cercare gli utenti. Normalmente \'cn\'.'; -$string['auth_ldap_user_settings'] = 'Impostazioni ricerca utenti'; -$string['auth_ldap_user_type'] = 'Seleziona come gli utenti sono salvati su LDAP. Questa impostazione specifica anche come la scadenza della password, l\'accesso garantito e la creazione dell\'utente devono funzionare.'; $string['auth_ldap_version'] = 'La versione del protocollo LDAP che il tuo server utilizza.'; $string['auth_ldapdescription'] = 'Questo metodo fornisce l\'autenticazione tramite un server LDAP esterno. Se il nome utente e la password dati sono validi, Moodle crea un nuovo utente nella sua base dati. Questo modulo può leggere gli attributi da LDAP e precompilare i campi richiesti in Moodle. I successivi login solo il nome utente e la password vengono controllati.'; -$string['auth_ldapextrafields'] = 'Questi campi sono opzionali. Puoi scegliere di precompilare alcuni campi dell\'utente in Moodle con le informazioni dai campi LDAP che tu specifichi qui.

                          Se lasci questi campi vuoti, non verrà trasferito niente dal LDAP e verranno usati i dati default di Moodle.

                          In entrambi i casi, gli utenti possono modificare tutti questi campi dopo essersi logati.

                          '; +$string['auth_ldapextrafields'] = 'Questi campi sono opzionali. Puoi scegliere di precompilare alcuni campi dell\'utente in Moodle con le informazioni dai campi LDAP che tu specifichi qui.

                          Se lasci questi campi vuoti, non verrà trasferito niente dal LDAP e verranno usati i dati default di Moodle.

                          In entrambi i casi, gli utenti possono modificare tutti questi campi dopo essersi logati.'; $string['auth_ldaptitle'] = 'Usa un server LDAP'; $string['auth_manualdescription'] = 'Questo metodo rimuove ogni possibilità agli utenti di iscriversi. Tutte le iscrizioni devono essere create a mano da un amministratore.'; $string['auth_manualtitle'] = 'Solo iscrizione manuale'; @@ -68,21 +52,11 @@ $string['auth_nntpport'] = 'Porta server (119 tipicamente)'; $string['auth_nntptitle'] = 'Usa un server NNTP'; $string['auth_nonedescription'] = 'Gli utenti possono registrarsi e creare iscrizioni valide immediatamente, senza autenticazione di un server esterno e senza conferma tramite email. Stai attento ad usare questa opzione - pensa alla sicurezza e ai problemi di amministrazione chequesto può causare. '; $string['auth_nonetitle'] = 'Senza autenticazione'; -$string['auth_pamdescription'] = 'Questo metodo utilizza PAM per accedere ai nomi utente originali su questo server. E\' necessario installare la libreria di autenticazione PAM di PHP4 per poter utilizzare questo modulo.'; -$string['auth_pamtitle'] = 'PAM (Pluggable Authentication Modules)'; -$string['auth_passwordisexpired'] = 'La vostra password è scaduta. Volete cambiarla adesso?'; -$string['auth_passwordwillexpire'] = 'La vostra password scadrà tra $a giorni. Volete cambiarla adesso?'; $string['auth_pop3description'] = 'Questo metodo utilizza un server POP3 per controllare se il nome utente e la password dati sono validi.'; $string['auth_pop3host'] = 'L\'indirizzo del server POP3. Usa il numero IP, non il nome DNS.'; -$string['auth_pop3mailbox'] = 'Nome della casella di posta con cui tentale la connessione. (normalmente INBOX)'; -$string['auth_pop3port'] = 'Porta del server (110 é la più tipica, 995 è standard per SSL)'; +$string['auth_pop3port'] = 'Porta del server (110 é la tipica)'; $string['auth_pop3title'] = 'Usa server POP3'; $string['auth_pop3type'] = 'Tipo di server. Se il vostro server usa i certificati per sicurezza, scegli pop3cert.'; -$string['auth_updatelocal'] = 'Aggiorna dati interni'; -$string['auth_updatelocal_expl'] = '

                          Aggiorna dati interni: Se abilitato, il campo sarà aggiornato (dall\'autenticazione esterna) tutte le volte che l\'utente accede o c\'é una sincronizzazione utente. I campi impostati per l\'aggiornamento locale devono essere bloccati.

                          '; -$string['auth_updateremote'] = 'Aggiorna dati esterni'; -$string['auth_updateremote_expl'] = '

                          Aggiorna dati esterni: Se abilitato, l\'autenticazione esterna sarà aggiornata quando i dati dell\'utente sono aggiornati. I campi devono essere sboccati per permettere la modifica.

                          '; -$string['auth_updateremote_ldap'] = '

                          Nota: Aggiornando i dati esterni LDAP è richiesta l\'impostazione di binddn e di bindpw a un utente di bind con priviligi di modifica per tutti i dati degli utenti. Questo attualmente non preserva gli attributi multivalore, e rimuoverà i valori aggiuntivi durante l\'aggiornamento.

                          '; $string['auth_user_create'] = 'Abilita creazione utente'; $string['auth_user_creation'] = 'I nuovi utenti (anonimi) possono iscriversi alla sorgente di autenticazione esterna e confermare tramite email. Se abiliti questo, ricorda anche di configurare le opzioni specifiche del modulo per la creazione degli utenti'; $string['auth_usernameexists'] = 'Il nome utente scelto é già utilizzato. Sceglierne uno nuovo. '; @@ -91,16 +65,10 @@ $string['authinstructions'] = 'Qui puoi fornire le istruzioni per i tuoi utenti, $string['changepassword'] = 'Cambia URL delle password'; $string['changepasswordhelp'] = 'Qui puoi specificare dove i tuoi utenti possono recuperare o cambiare i loro nome utente/password se li hanno dimenticati. Questo verrà fornito agli utenti comee un pulsante nella pagina di login e nella loro pagina utente. Se lo lasci vuoto il bottone non verrà visualizzato.'; $string['chooseauthmethod'] = 'Scegli un metodo di autenticazione:'; -$string['forcechangepassword'] = 'Forza il cambiamento della password'; -$string['forcechangepassword_help'] = 'Forza gli utenti a cambiare la password al successivo accesso a Moodle.'; -$string['forcechangepasswordfirst_help'] = 'Forza gli utenti a cambiare la password al primo accesso a Moodle.'; $string['guestloginbutton'] = 'Pulsante login ospite'; $string['instructions'] = 'Istruzioni'; $string['md5'] = 'Criptatura MD5'; $string['plaintext'] = 'Testo semplice'; $string['showguestlogin'] = 'Puoi nascondere o mostrare il pulsante del login come ospite nella pagina di login.'; -$string['stdchangepassword'] = 'Utilizza pagina standard per il cambiamento della password'; -$string['stdchangepassword_expl'] = 'Se il sistema di autenticazione esterna permette il cambiamento delle password attraverso Moodle, cambiate questo su Si. Questa impostazione esclude l\'URL per cambiare la password.'; -$string['stdchangepassword_explldap'] = 'Nota: Si raccomanda di utilizzare LDAP su una connessione criptata con SSL (ldaps://) se il server è remoto.'; ?> diff --git a/lang/it/block_course_summary.php b/lang/it/block_course_summary.php index 7381609219c..2287d7aecd4 100644 --- a/lang/it/block_course_summary.php +++ b/lang/it/block_course_summary.php @@ -1,8 +1,8 @@ diff --git a/lang/it/calendar.php b/lang/it/calendar.php index 2f45683932e..50bd3f35428 100644 --- a/lang/it/calendar.php +++ b/lang/it/calendar.php @@ -34,7 +34,7 @@ $string['eventinstanttime'] = 'Ora'; $string['eventkind'] = 'Tipo di evento'; $string['eventname'] = 'Nome'; $string['eventrepeat'] = 'Ripetizioni'; -$string['eventsfor'] = 'Eventi di $a'; +$string['eventsfor'] = '$a eventi'; $string['eventstarttime'] = 'Ora d\'inizio'; $string['eventtime'] = 'Ora'; $string['eventview'] = 'Dettagli evento'; diff --git a/lang/it/chat.php b/lang/it/chat.php index 183cc21391a..0689b913a0b 100644 --- a/lang/it/chat.php +++ b/lang/it/chat.php @@ -1,5 +1,5 @@ sempre effetto'; -$string['explainmethoddaemon'] = 'Queste impostazioni importano soltanto se avete selezionato \"Server chat\" per chat_method'; -$string['explainmethodnormal'] = 'Queste impostazioni importano soltanto se avete selezionato \"Metodo normale\" per chat_method'; -$string['generalconfig'] = 'Configurazione generale'; $string['helpchatting'] = 'Aiuto per la chat'; $string['idle'] = 'Inattivo'; $string['messagebeepseveryone'] = '$a richiama tutti!'; @@ -39,7 +35,6 @@ $string['modulename'] = 'Chat'; $string['modulenameplural'] = 'Chat'; $string['neverdeletemessages'] = 'Non cancellare i messaggi'; $string['nextsession'] = 'Prossima seesione programmata'; -$string['noguests'] = 'La chat non è disponibile agli ospiti'; $string['nomessages'] = 'Nessun messaggio ancora'; $string['repeatdaily'] = 'Alla stessa ora tutti i giorni'; $string['repeatnone'] = 'Nessuna ripetizione - pubblica solo l\'orario specificato'; diff --git a/lang/it/choice.php b/lang/it/choice.php index e4566a83f43..98ec0431d00 100644 --- a/lang/it/choice.php +++ b/lang/it/choice.php @@ -1,5 +1,5 @@
                          Sei sicuro di voler terminare questo dialogo? '; +$string['confirmclosure'] = 'Stai per terminare un dialogo con $a. Una volta terminato il dialogo non può essere riiniziato. Se termini questo dialogo potrai visualizzarlo ma non potrai più aggiungere niente, e dovrai iniziare un altro dialogo per continuare a "parlare" con questa persona.

                          Sei sicuro di voler terminare questo dialogo? '; $string['deleteafter'] = 'Cancella i dialoghi terminati dopo (Giorni)'; $string['dialogueclosed'] = 'Dialogo terminato'; $string['dialogueintro'] = 'Introduzione dialogo'; -$string['dialoguemail'] = '$a->userform ha spedito un nuovo messaggio al vostro dialogo \'$a->dialogue\' - -Puoi vederlo aggiunto al vostro dialogo: - +$string['dialoguemail'] = '$a->userform ha spedito un nuovo messaggio al vostro dialogo \'$a->dialogue\' + +Puoi vederlo aggiunto al vostro dialogo: + $a->url'; -$string['dialoguemailhtml'] = '$a->userform ha spedito un nuovo messaggio al vostro dialogo \'$a->dialogue\'

                          +$string['dialoguemailhtml'] = '$a->userform ha spedito un nuovo messaggio al vostro dialogo \'$a->dialogue\'

                          Puoi vederlo aggiunto al vostro url\">dialogo.'; $string['dialoguename'] = 'Nome dialogo'; $string['dialogueopened'] = 'Dialogo aperto con $a'; @@ -27,7 +27,6 @@ $string['everybody'] = 'Tutti'; $string['furtherinformation'] = 'Ulteriori informazioni'; $string['lastentry'] = 'Ultimo messaggio'; $string['maildefault'] = 'Seganla per email'; -$string['mailnotification'] = 'Notifica tramite mail'; $string['modulename'] = 'Dialogo'; $string['modulenameplural'] = 'Dialoghi'; $string['namehascloseddialogue'] = '$a ha chiuso il dialogo'; diff --git a/lang/it/docs/coding.html b/lang/it/docs/coding.html index 793e812ef2b..6897b43af62 100755 --- a/lang/it/docs/coding.html +++ b/lang/it/docs/coding.html @@ -32,20 +32,20 @@
                          1. L'indentazione deve essere di 4 spazi. Non usate ASSOLUTAMENTE i tab.
                          2. I nomi di variabile devono essere sempre facili da leggere, costituiti da parole in inglese minuscole. Se avete proprio necessità di più di una parola, attaccate le parti, ma sceglietele più corte possibile. Usate nomi plurali per gli "arrays" di oggetti. -

                            GOOD: $quiz
                            - GOOD: $errorstring
                            -GOOD: $assignments (for an array of objects)
                            - GOOD: $i (but only in little loops)
                            +

                            GOOD: $quiz
                            + GOOD: $errorstring
                            +GOOD: $assignments (for an array of objects)
                            + GOOD: $i (but only in little loops)

                            - BAD: $Quiz
                            - BAD: $aReallyLongVariableNameWithoutAGoodReason
                            + BAD: $Quiz
                            + BAD: $aReallyLongVariableNameWithoutAGoodReason
                            BAD: $error_string

                          3. Le costanti devono essere sempre maiuscole, e iniziare sempre col nome del modulo. Devono anche avere le parti separate da trattini di sottolineatura.

                            define("FORUM_MODE_FLATOLDEST", 1);

                          4. -
                          5. I nomi delle funzioni devono essere semplici parole in inglese minuscole, e cominciare col nome del modulo per evitare conflitti tra moduli. Le parti di nome devono essere separate da sottolineature. I parametri devono sempre avere una valore di default, se possibile. Da notare che non c'è alcuno spazio tra il nome della funzione e le (parentesi) che seguono.
                            +
                          6. I nomi delle funzioni devono essere semplici parole in inglese minuscole, e cominciare col nome del modulo per evitare conflitti tra moduli. Le parti di nome devono essere separate da sottolineature. I parametri devono sempre avere una valore di default, se possibile. Da notare che non c'è alcuno spazio tra il nome della funzione e le (parentesi) che seguono.

                            function forum_set_display_mode($mode=0) {
                                global
                            $USER, @@ -73,11 +73,11 @@ GOOD: $assignments (for an array of objects)
                                }
                            }

                          7. -
                          8. Le stringhe devono essere definite usando virgolette semplici, ove possibile, per una maggiore velocità.
                            +
                          9. Le stringhe devono essere definite usando virgolette semplici, ove possibile, per una maggiore velocità.

                            $var = 'some text without any - variables';
                            - $var = "with special characters like a new line \n";
                            - $var = 'a very, very long string with a '.$single.' variable in it';
                            + variables';
                            + $var = "with special characters like a new line \n";
                            + $var = 'a very, very long string with a '.$single.' variable in it';
                            $var = "some $text with $many variables $within it";

                          10. I commenti devono usare due o tre barre ed essere ben allineati con le istruzioni. @@ -97,34 +97,34 @@ GOOD: $assignments (for an array of objects)
                                    if (
                            $rates = get_records("forum_ratings", "post", $postid)) - {
                            + {
                                        
                            // Process each rating in turn
                                        foreach (
                            $rates as $rate) - {
                            + {
                            ....etc

                          11. -
                          12. Gli spazi devono essere usari liberamente - non abbiate paura di sparpagliare un pò le istruzioni per guadagnare in chiarezza. Normalmente, ci dovrebbe essere uno spazio tra le parentesi e le frasi normali, ma nessuno spazio tra le parentesi e le variabili o le funzioni:
                            +
                          13. Gli spazi devono essere usari liberamente - non abbiate paura di sparpagliare un pò le istruzioni per guadagnare in chiarezza. Normalmente, ci dovrebbe essere uno spazio tra le parentesi e le frasi normali, ma nessuno spazio tra le parentesi e le variabili o le funzioni:

                            foreach ($objects as $key => - $thing) {
                            + $thing
                            ) {
                                process($thing); -
                            - }
                            -
                            +
                            + }
                            +
                            if ($x == $y) - {
                            + {
                                $a - = $b;
                            +
                            = $b;
                            } else if (
                            $x == - $z) {
                            +
                            $z) {
                                $a - = $c;
                            - } else {
                            +
                            = $c;
                            + } else {
                                $a - = $d;
                            +
                            = $d;
                            }

                          diff --git a/lang/it/docs/cvs.html b/lang/it/docs/cvs.html index bec5aa451fa..d5f51efb577 100755 --- a/lang/it/docs/cvs.html +++ b/lang/it/docs/cvs.html @@ -30,7 +30,7 @@ target=_top>indicazioni di sourceforge per usare chiavi autorizzate. Questo è del tutto opzionale, ma vi renderà sicuramente la vita molto più facile nel vostro rapporto con cvs.

                          Fatto questo dovreste avere tutti i permessi necessari quindi, impostata la vostra macchina, potete - scaricare la versione corrente dei sorgenti e iniziare a lavorarci sopra.
                          + scaricare la versione corrente dei sorgenti e iniziare a lavorarci sopra.
                          Qui sotto trovate le istruzioni per usare cvs con sistemi unix e windows.

                          01. Uso di cvs sotto unix

                          @@ -70,10 +70,10 @@ update -dP
                           :ext:myusername@cvs.sourceforge.net:/cvsroot/moodle

                          05. Premete il pulsante 'Fetch list...'.

                          06. Alla destra del pulsante dovreste vedere una serie di moduli, scegliete 'moodle' dalla lista.

                          -

                          07. Premete il pulsante 'OK' e dovrebbe venire scaricato il tutto..
                          +

                          07. Premete il pulsante 'OK' e dovrebbe venire scaricato il tutto..

                          -

                          Una finestra di dialogo dovrebbe mostrarvi ora tutti i files che vengono scaricati, pazientate un poco e avrete una copia completa di moodle.
                          +

                          Una finestra di dialogo dovrebbe mostrarvi ora tutti i files che vengono scaricati, pazientate un poco e avrete una copia completa di moodle.
                          Dopo questo primo controllo sul server di moodle potrete controllare un eventuale aggiornamento dei files sul server cvs:

                          01. Click col tasto destro sulla vostra cartella di moodle (o un qualsiasi file) e selezionate 'CVS Update'.

                          diff --git a/lang/it/docs/developer.html b/lang/it/docs/developer.html index 191b178652b..2bfa7f1c4f8 100755 --- a/lang/it/docs/developer.html +++ b/lang/it/docs/developer.html @@ -30,25 +30,25 @@

                          Dal punto di vista di un amministratore di sistema, Moodle è stato progettato secondo i seguenti criteri:

                            -
                          1. Deve girare sulla più grande varietà di piattaforme possibili
                            -
                            La piattaforma applicativa web che gira sulla maggior parte delle piattaforme è PHP combinato con MySQL, e questo è l'ambiente in cui Moodle è stato sviluppato (su Linux, Windows, e Mac OS X). Moodle inoltre usa la libreria ADOdb per l'astrazione del database, il che significa che può utilizzare più di dieci differenti marche di database (sfortunatamente, però, non può ancora impostare le tabelle su tutti questi database - vedi avanti per ulteriori informazioni).
                            -
                            +
                          2. Deve girare sulla più grande varietà di piattaforme possibili
                            +
                            La piattaforma applicativa web che gira sulla maggior parte delle piattaforme è PHP combinato con MySQL, e questo è l'ambiente in cui Moodle è stato sviluppato (su Linux, Windows, e Mac OS X). Moodle inoltre usa la libreria ADOdb per l'astrazione del database, il che significa che può utilizzare più di dieci differenti marche di database (sfortunatamente, però, non può ancora impostare le tabelle su tutti questi database - vedi avanti per ulteriori informazioni).
                            +
                          3. -
                          4. Deve essere facile da installare, imparare e modificare
                            -
                            I primi prototipi di Moodle (1999) sono stati realizzati usando Zope - - un avanzato web application server di tipo object-oriented . Sfortunatamente ho trovato che, nonostatnte la tecnologia era molto buona, questa aveva una difficoltà di apprendimento eccessiva e non era molto flessibile in termini di amministrazione di sistema. Il linguaggio script PHP, invece, era molto facile da apprendere (specialmente se uno aveva già programmato con altri linguaggi script). Abbastanza presto ho preso la decisione di evitare l'uso di una progettazione di tipo class-oriented, ancora, per rendere il sistema più semplice da capire per i nuovi arrivati. Il riutilizzo del codice è raggiunto mediante librerie di funzioni chiaramente definite e un layout coerente di files script. Il PHP è anche molto facile da installare (l'eseguibile è a disposizione per ogni piattaforma) ed è largamente disponibile al punto che molti servizi di hosting lo prevedono come standard.
                            -
                            +
                          5. Deve essere facile da installare, imparare e modificare
                            +
                            I primi prototipi di Moodle (1999) sono stati realizzati usando Zope + - un avanzato web application server di tipo object-oriented . Sfortunatamente ho trovato che, nonostatnte la tecnologia era molto buona, questa aveva una difficoltà di apprendimento eccessiva e non era molto flessibile in termini di amministrazione di sistema. Il linguaggio script PHP, invece, era molto facile da apprendere (specialmente se uno aveva già programmato con altri linguaggi script). Abbastanza presto ho preso la decisione di evitare l'uso di una progettazione di tipo class-oriented, ancora, per rendere il sistema più semplice da capire per i nuovi arrivati. Il riutilizzo del codice è raggiunto mediante librerie di funzioni chiaramente definite e un layout coerente di files script. Il PHP è anche molto facile da installare (l'eseguibile è a disposizione per ogni piattaforma) ed è largamente disponibile al punto che molti servizi di hosting lo prevedono come standard.
                            +
                          6. -
                          7. Deve essere facile effettuare l'aggiornamento da una versione software alla successiva
                            -
                            Moodle conosce la sua versione corrente (come pure le versioni di tutti i moduli plug-in) ed è stato realizzato un meccanismo tale che Moodle stesso può correttamente aggiornare se stesso a nuove versioni (per esempio può rinominare le tabelle del database o aggiungere nuovi campi). Se si una il CVS in ambiente Unix, per esempio, si può scrivere solamente il comando "cvs update -d" e saltare direttamente alla home page del sito per completare l'aggiornamento.
                            -
                            +
                          8. Deve essere facile effettuare l'aggiornamento da una versione software alla successiva
                            +
                            Moodle conosce la sua versione corrente (come pure le versioni di tutti i moduli plug-in) ed è stato realizzato un meccanismo tale che Moodle stesso può correttamente aggiornare se stesso a nuove versioni (per esempio può rinominare le tabelle del database o aggiungere nuovi campi). Se si una il CVS in ambiente Unix, per esempio, si può scrivere solamente il comando "cvs update -d" e saltare direttamente alla home page del sito per completare l'aggiornamento.
                            +
                          9. -
                          10. Deve essere modulare per garantire la propria crescita
                            -
                            Moodle ha molte caratteristiche modulari, inclusi i temi grafici, le attività, le lingue utilizzate nell'interfaccia, gli schemi di database e i formati di corso. Questo permette a chiunque di aggiungere nuove funzionalità a quelle di base e/o di distribuirle separatamente. Altre informazioni su questo argomento nella prossima sezione.
                            -
                            +
                          11. Deve essere modulare per garantire la propria crescita
                            +
                            Moodle ha molte caratteristiche modulari, inclusi i temi grafici, le attività, le lingue utilizzate nell'interfaccia, gli schemi di database e i formati di corso. Questo permette a chiunque di aggiungere nuove funzionalità a quelle di base e/o di distribuirle separatamente. Altre informazioni su questo argomento nella prossima sezione.
                            +
                          12. -
                          13. Deve poter essere utilizzato congiuntamente ad altri sistemi
                            -
                            Una delle caratteristiche di Moodle è quella di mettere tutti i files di un corso all'interno di un'unica, normale directory del server. Questo permette all'amministratore di sistema di abilitare gli insegnanti a un accesso diretto alle risorse, a livello di file, con strumenti tipo Appletalk, SMB, NFS, FTP, WebDAV e così via. I moduli di autenticazione permettono a Moodle di utilizzare LDAP, IMAP, POP3, NNTP e altri database come fonti per le informazioni degli utenti. Comuque, c'è ancora del lavoro da fare. Future funzionalità già pianificate per Moodle comprendono: importazione e esportazione di dati con l'uso di formati basati su XML (inclusi IMS e SCORM); un ulteriore utilizzo dei fogli di stile per la formattazione dell'interfaccia (in modo tale che Moodle possa essere integrato più facilmente nella grafica di altri siti web).
                          14. +
                          15. Deve poter essere utilizzato congiuntamente ad altri sistemi
                            +
                            Una delle caratteristiche di Moodle è quella di mettere tutti i files di un corso all'interno di un'unica, normale directory del server. Questo permette all'amministratore di sistema di abilitare gli insegnanti a un accesso diretto alle risorse, a livello di file, con strumenti tipo Appletalk, SMB, NFS, FTP, WebDAV e così via. I moduli di autenticazione permettono a Moodle di utilizzare LDAP, IMAP, POP3, NNTP e altri database come fonti per le informazioni degli utenti. Comuque, c'è ancora del lavoro da fare. Future funzionalità già pianificate per Moodle comprendono: importazione e esportazione di dati con l'uso di formati basati su XML (inclusi IMS e SCORM); un ulteriore utilizzo dei fogli di stile per la formattazione dell'interfaccia (in modo tale che Moodle possa essere integrato più facilmente nella grafica di altri siti web).

                           

                          @@ -71,7 +71,7 @@
                        12. tizio_update_instance() - istruzioni per aggiornare un'istanza esistente
                        13. tizio_delete_instance() - istruzioni per cancellare un'instance
                        14. tizio_user_outline() - data un'istanza, restituisce un sommario dei contributi di un utente
                        15. -
                        16. tizio_user_complete() - data un'istanza, stampa i dettagli dei contributi di un utente
                          +
                        17. tizio_user_complete() - data un'istanza, stampa i dettagli dei contributi di un utente
                        18. Per evitare possibili conflitti, tutte le funzioni di un modulo devono avere un nome che inizia con tizio_ e ogni costante che viene definita deve cominciare con TIZIO_
                      @@ -106,7 +106,7 @@

                      Fare attenzione anche al fatto che gli aggiornamenti di Moodle potrebbero modificare leggermente la struttura dei temi, per cui controllare attentamente le note di rilascio di una nuova versione, nel caso si utilizzino temi personalizzati.

                      In particolare, da Moodle 2.0 c'è una grafica completamente nuova rispetto alle versioni precedenti, dovuta alle trasformazioni XLS dell'output XML prodotto da Moodle. E' probabile che, per questo motivo, i temi in futuro avranno un formato completamente differente, ma il vantaggio sarà una maggiore possibilità della loro personalizzazione (compresi elementi mobili dentro una pagina).

                      Ulteriori considerazioni su questo argomento sul Themes - forum on Using Moodle. Se realizzate un bel tema che pensate possa piacere ed essere usato da altri, fate un 'post' del vostro file zip sul forum dei temi!
                      + forum on Using Moodle. Se realizzate un bel tema che pensate possa piacere ed essere usato da altri, fate un 'post' del vostro file zip sul forum dei temi!

                      Lingue

                      @@ -122,13 +122,13 @@
                    • quiz.php - stringhe per il modulo quiz
                    • resource.php - stringhe per il modulo resource (risorse)
                    • survey.php - stringhe per il modulo survey (sondaggi)
                    • -
                    • .... più eventuali altri moduli.
                      -
                      Una stringa è estratta da questi moduli mediante le funzioni get_string() - o print_string() . Ogni stringa supporta la sostituzione di variabile, rendendo indipendenti dall'ordine le definizioni nelle varie lingue.
                      -
                      +
                    • .... più eventuali altri moduli.
                      +
                      Una stringa è estratta da questi moduli mediante le funzioni get_string() + o print_string() . Ogni stringa supporta la sostituzione di variabile, rendendo indipendenti dall'ordine le definizioni nelle varie lingue.
                      +
                      Per esempio, $strdueby = get_string("assignmentdueby", "assignment", - userdate($date));
                      -
                      Se, in una particolare lingua, una stringa non esiste, allora viene automaticamente presa la sua equivalente in inglese.
                    • + userdate($date));
                      +
                      Se, in una particolare lingua, una stringa non esiste, allora viene automaticamente presa la sua equivalente in inglese.

                    lang/it/help - contiene le pagine di aiuto (per i popup di help dipendenti dal contesto)

                    @@ -174,8 +174,8 @@
                    -

                    Grazie per l'uso di Moodle!
                    -
                    +

                    Grazie per l'uso di Moodle!
                    +
                    Martin Dougiamas, Lead Developer

                    diff --git a/lang/it/docs/faq.html b/lang/it/docs/faq.html index 1740c7f6906..71402efaf21 100644 --- a/lang/it/docs/faq.html +++ b/lang/it/docs/faq.html @@ -138,7 +138,7 @@ href="./?file=installamp.html">Redhat Linux

                    Le mie pagine visualizzano errori irreversibili come: call to undefined function: get_string()

                    Se vengono visualizzati errori come:

                    Parse error: parse error, unexpected T_VARIABLE in -c:\program files\easyphp\www\moodle\config.php on line 94
                    Fatal error: Call +c:\program files\easyphp\www\moodle\config.php on line 94
                    Fatal error: Call to undefined function: get_string() in c:\program files\easyphp\www\moodle\mod\resource\lib.php on line 11

                    allora è probabile che tu ti sia dimenticato un punto e @@ -175,7 +175,7 @@ sent by (output started at /webs/moodle/config.php:87) in

                    I problemi associati agli apostrofi sono causati da un settaggio scorretto dei "magic quotes". Moodle ha bisogno dei seguenti settaggi (che sono di solito di default):

                    -

                    magic_quotes_gpc = On
                    magic_quotes_runtime = Off

                    +

                    magic_quotes_gpc = On
                    magic_quotes_runtime = Off

                    Vedi la sezione Controllo delle impostazioni del web server nella documentazione di installazione.

                     

                    @@ -240,8 +240,8 @@ G:\web\moodle\lib\setup.php:1) in G:\web\moodle\lib\setup.php on line 123

                    cookies dal browser prima dell'installazione, utilizzare un browser diverso, oppure modificare il file moodle/admin/user.php inserendo queste righe nella parte superiore:

                    -

                    unset($user);
                    - unset($admin);
                    unset($teacher);

                    +

                    unset($user);
                    + unset($admin);
                    unset($teacher);

                    Dopo aver eseguito una di queste procedure potrebbe essere una buona ideacancellare tutte le tabelle del tuo database e reinstallare Moodle.

                     

                    diff --git a/lang/it/docs/install.html b/lang/it/docs/install.html index 306912d8356..3eddb02f5f1 100755 --- a/lang/it/docs/install.html +++ b/lang/it/docs/install.html @@ -66,8 +66,8 @@

                    Di seguito è riportato un sintetico sommario per orientarsi nel contenuto della cartella Moodle:

                    -

                    config.php - l'UNICO file che è necessario modificare per partire
                    - version.php - definisce la versione corrente del software di Moodle
                    +

                    config.php - l'UNICO file che è necessario modificare per partire
                    + version.php - definisce la versione corrente del software di Moodle
                    index.php - la pagina iniziale del sito

                    • admin/ - programmi necessari per l'amministrazione dell'intero server
                    • diff --git a/lang/it/docs/intro.html b/lang/it/docs/intro.html index 0af6853c8c2..c8a7dc7fc12 100755 --- a/lang/it/docs/intro.html +++ b/lang/it/docs/intro.html @@ -35,7 +35,7 @@ Questa filosofia si applica molto bene al modo in cui è stato sviluppato Chiunque usi Moodle è un Moodler.

                      Unisciti alla comunità di Moodle!

                    -


                    +


                    Documentazione di Moodle

                    Version: $Id$

                    diff --git a/lang/it/docs/licence.html b/lang/it/docs/licence.html index a6e4fad14cc..40f1f44b416 100644 --- a/lang/it/docs/licence.html +++ b/lang/it/docs/licence.html @@ -8,18 +8,18 @@

                    Moodle è Copyright © 2001-2003, Martin Dougiamas.

                    -

                    Questo programma è un software libero; è possibile redistribuirlo e/o modificarlo
                    - sottostando alla Licenza Pubblica Generale GNU (GPL) come pubblicato dalla
                    +

                    Questo programma è un software libero; è possibile redistribuirlo e/o modificarlo
                    + sottostando alla Licenza Pubblica Generale GNU (GPL) come pubblicato dalla
                    Free - Software Foundation; è possibile riferirsi alla versione 2 della licenza o,
                    + Software Foundation; è possibile riferirsi alla versione 2 della licenza o,
                    (a vostra discrezione) ad ogni versione successiva

                    -

                    Questo programma è distribuito sperando che sia utile ma
                    - SENZA ALCUNA GARANZIA, senza nemmeno la garanzia implicita di
                    - COMMERCIABILITÀ o IDONEITÀ PER UNO SCOPO SPECIFICO. Per
                    - ulteriori dettagli vedere la Licenza Pubblica Generale GNU (allegata in calce).
                    +

                    Questo programma è distribuito sperando che sia utile ma
                    + SENZA ALCUNA GARANZIA, senza nemmeno la garanzia implicita di
                    + COMMERCIABILITÀ o IDONEITÀ PER UNO SCOPO SPECIFICO. Per
                    + ulteriori dettagli vedere la Licenza Pubblica Generale GNU (allegata in calce).


                    -
                    		    GNU GENERAL PUBLIC LICENSE
                    Version 2, June 1991

                    Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                    59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
                    Everyone is permitted to copy and distribute verbatim copies
                    of this license document, but changing it is not allowed.

                    Preamble

                    The licenses for most software are designed to take away your
                    freedom to share and change it. By contrast, the GNU General Public
                    License is intended to guarantee your freedom to share and change free
                    software--to make sure the software is free for all its users. This
                    General Public License applies to most of the Free Software
                    Foundation's software and to any other program whose authors commit to
                    using it. (Some other Free Software Foundation software is covered by
                    the GNU Library General Public License instead.) You can apply it to
                    your programs, too.

                    When we speak of free software, we are referring to freedom, not
                    price. Our General Public Licenses are designed to make sure that you
                    have the freedom to distribute copies of free software (and charge for
                    this service if you wish), that you receive source code or can get it
                    if you want it, that you can change the software or use pieces of it
                    in new free programs; and that you know you can do these things.

                    To protect your rights, we need to make restrictions that forbid
                    anyone to deny you these rights or to ask you to surrender the rights.
                    These restrictions translate to certain responsibilities for you if you
                    distribute copies of the software, or if you modify it.

                    For example, if you distribute copies of such a program, whether
                    gratis or for a fee, you must give the recipients all the rights that
                    you have. You must make sure that they, too, receive or can get the
                    source code. And you must show them these terms so they know their
                    rights.

                    We protect your rights with two steps: (1) copyright the software, and
                    (2) offer you this license which gives you legal permission to copy,
                    distribute and/or modify the software.

                    Also, for each author's protection and ours, we want to make certain
                    that everyone understands that there is no warranty for this free
                    software. If the software is modified by someone else and passed on, we
                    want its recipients to know that what they have is not the original, so
                    that any problems introduced by others will not reflect on the original
                    authors' reputations.

                    Finally, any free program is threatened constantly by software
                    patents. We wish to avoid the danger that redistributors of a free
                    program will individually obtain patent licenses, in effect making the
                    program proprietary. To prevent this, we have made it clear that any
                    patent must be licensed for everyone's free use or not licensed at all.

                    The precise terms and conditions for copying, distribution and
                    modification follow.

                    GNU GENERAL PUBLIC LICENSE
                    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

                    0. This License applies to any program or other work which contains
                    a notice placed by the copyright holder saying it may be distributed
                    under the terms of this General Public License. The "Program", below,
                    refers to any such program or work, and a "work based on the Program"
                    means either the Program or any derivative work under copyright law:
                    that is to say, a work containing the Program or a portion of it,
                    either verbatim or with modifications and/or translated into another
                    language. (Hereinafter, translation is included without limitation in
                    the term "modification".) Each licensee is addressed as "you".

                    Activities other than copying, distribution and modification are not
                    covered by this License; they are outside its scope. The act of
                    running the Program is not restricted, and the output from the Program
                    is covered only if its contents constitute a work based on the
                    Program (independent of having been made by running the Program).
                    Whether that is true depends on what the Program does.

                    1. You may copy and distribute verbatim copies of the Program's
                    source code as you receive it, in any medium, provided that you
                    conspicuously and appropriately publish on each copy an appropriate
                    copyright notice and disclaimer of warranty; keep intact all the
                    notices that refer to this License and to the absence of any warranty;
                    and give any other recipients of the Program a copy of this License
                    along with the Program.

                    You may charge a fee for the physical act of transferring a copy, and
                    you may at your option offer warranty protection in exchange for a fee.

                    2. You may modify your copy or copies of the Program or any portion
                    of it, thus forming a work based on the Program, and copy and
                    distribute such modifications or work under the terms of Section 1
                    above, provided that you also meet all of these conditions:

                    a) You must cause the modified files to carry prominent notices
                    stating that you changed the files and the date of any change.

                    b) You must cause any work that you distribute or publish, that in
                    whole or in part contains or is derived from the Program or any
                    part thereof, to be licensed as a whole at no charge to all third
                    parties under the terms of this License.

                    c) If the modified program normally reads commands interactively
                    when run, you must cause it, when started running for such
                    interactive use in the most ordinary way, to print or display an
                    announcement including an appropriate copyright notice and a
                    notice that there is no warranty (or else, saying that you provide
                    a warranty) and that users may redistribute the program under
                    these conditions, and telling the user how to view a copy of this
                    License. (Exception: if the Program itself is interactive but
                    does not normally print such an announcement, your work based on
                    the Program is not required to print an announcement.)

                    These requirements apply to the modified work as a whole. If
                    identifiable sections of that work are not derived from the Program,
                    and can be reasonably considered independent and separate works in
                    themselves, then this License, and its terms, do not apply to those
                    sections when you distribute them as separate works. But when you
                    distribute the same sections as part of a whole which is a work based
                    on the Program, the distribution of the whole must be on the terms of
                    this License, whose permissions for other licensees extend to the
                    entire whole, and thus to each and every part regardless of who wrote it.

                    Thus, it is not the intent of this section to claim rights or contest
                    your rights to work written entirely by you; rather, the intent is to
                    exercise the right to control the distribution of derivative or
                    collective works based on the Program.

                    In addition, mere aggregation of another work not based on the Program
                    with the Program (or with a work based on the Program) on a volume of
                    a storage or distribution medium does not bring the other work under
                    the scope of this License.

                    3. You may copy and distribute the Program (or a work based on it,
                    under Section 2) in object code or executable form under the terms of
                    Sections 1 and 2 above provided that you also do one of the following:

                    a) Accompany it with the complete corresponding machine-readable
                    source code, which must be distributed under the terms of Sections
                    1 and 2 above on a medium customarily used for software interchange; or,

                    b) Accompany it with a written offer, valid for at least three
                    years, to give any third party, for a charge no more than your
                    cost of physically performing source distribution, a complete
                    machine-readable copy of the corresponding source code, to be
                    distributed under the terms of Sections 1 and 2 above on a medium
                    customarily used for software interchange; or,

                    c) Accompany it with the information you received as to the offer
                    to distribute corresponding source code. (This alternative is
                    allowed only for noncommercial distribution and only if you
                    received the program in object code or executable form with such
                    an offer, in accord with Subsection b above.)

                    The source code for a work means the preferred form of the work for
                    making modifications to it. For an executable work, complete source
                    code means all the source code for all modules it contains, plus any
                    associated interface definition files, plus the scripts used to
                    control compilation and installation of the executable. However, as a
                    special exception, the source code distributed need not include
                    anything that is normally distributed (in either source or binary
                    form) with the major components (compiler, kernel, and so on) of the
                    operating system on which the executable runs, unless that component
                    itself accompanies the executable.

                    If distribution of executable or object code is made by offering
                    access to copy from a designated place, then offering equivalent
                    access to copy the source code from the same place counts as
                    distribution of the source code, even though third parties are not
                    compelled to copy the source along with the object code.

                    4. You may not copy, modify, sublicense, or distribute the Program
                    except as expressly provided under this License. Any attempt
                    otherwise to copy, modify, sublicense or distribute the Program is
                    void, and will automatically terminate your rights under this License.
                    However, parties who have received copies, or rights, from you under
                    this License will not have their licenses terminated so long as such
                    parties remain in full compliance.

                    5. You are not required to accept this License, since you have not
                    signed it. However, nothing else grants you permission to modify or
                    distribute the Program or its derivative works. These actions are
                    prohibited by law if you do not accept this License. Therefore, by
                    modifying or distributing the Program (or any work based on the
                    Program), you indicate your acceptance of this License to do so, and
                    all its terms and conditions for copying, distributing or modifying
                    the Program or works based on it.

                    6. Each time you redistribute the Program (or any work based on the
                    Program), the recipient automatically receives a license from the
                    original licensor to copy, distribute or modify the Program subject to
                    these terms and conditions. You may not impose any further
                    restrictions on the recipients' exercise of the rights granted herein.
                    You are not responsible for enforcing compliance by third parties to
                    this License.

                    7. If, as a consequence of a court judgment or allegation of patent
                    infringement or for any other reason (not limited to patent issues),
                    conditions are imposed on you (whether by court order, agreement or
                    otherwise) that contradict the conditions of this License, they do not
                    excuse you from the conditions of this License. If you cannot
                    distribute so as to satisfy simultaneously your obligations under this
                    License and any other pertinent obligations, then as a consequence you
                    may not distribute the Program at all. For example, if a patent
                    license would not permit royalty-free redistribution of the Program by
                    all those who receive copies directly or indirectly through you, then
                    the only way you could satisfy both it and this License would be to
                    refrain entirely from distribution of the Program.

                    If any portion of this section is held invalid or unenforceable under
                    any particular circumstance, the balance of the section is intended to
                    apply and the section as a whole is intended to apply in other
                    circumstances.

                    It is not the purpose of this section to induce you to infringe any
                    patents or other property right claims or to contest validity of any
                    such claims; this section has the sole purpose of protecting the
                    integrity of the free software distribution system, which is
                    implemented by public license practices. Many people have made
                    generous contributions to the wide range of software distributed
                    through that system in reliance on consistent application of that
                    system; it is up to the author/donor to decide if he or she is willing
                    to distribute software through any other system and a licensee cannot
                    impose that choice.

                    This section is intended to make thoroughly clear what is believed to
                    be a consequence of the rest of this License.

                    8. If the distribution and/or use of the Program is restricted in
                    certain countries either by patents or by copyrighted interfaces, the
                    original copyright holder who places the Program under this License
                    may add an explicit geographical distribution limitation excluding
                    those countries, so that distribution is permitted only in or among
                    countries not thus excluded. In such case, this License incorporates
                    the limitation as if written in the body of this License.

                    9. The Free Software Foundation may publish revised and/or new versions
                    of the General Public License from time to time. Such new versions will
                    be similar in spirit to the present version, but may differ in detail to
                    address new problems or concerns.

                    Each version is given a distinguishing version number. If the Program
                    specifies a version number of this License which applies to it and "any
                    later version", you have the option of following the terms and conditions
                    either of that version or of any later version published by the Free
                    Software Foundation. If the Program does not specify a version number of
                    this License, you may choose any version ever published by the Free Software
                    Foundation.

                    10. If you wish to incorporate parts of the Program into other free
                    programs whose distribution conditions are different, write to the author
                    to ask for permission. For software which is copyrighted by the Free
                    Software Foundation, write to the Free Software Foundation; we sometimes
                    make exceptions for this. Our decision will be guided by the two goals
                    of preserving the free status of all derivatives of our free software and
                    of promoting the sharing and reuse of software generally.

                    NO WARRANTY

                    11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
                    FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
                    OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
                    PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
                    OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
                    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
                    TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
                    PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
                    REPAIR OR CORRECTION.

                    12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
                    WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
                    REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
                    INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
                    OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
                    TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
                    YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
                    PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
                    POSSIBILITY OF SUCH DAMAGES.

                    END OF TERMS AND CONDITIONS
                    +
                    		    GNU GENERAL PUBLIC LICENSE
                    Version 2, June 1991

                    Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                    59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
                    Everyone is permitted to copy and distribute verbatim copies
                    of this license document, but changing it is not allowed.

                    Preamble

                    The licenses for most software are designed to take away your
                    freedom to share and change it. By contrast, the GNU General Public
                    License is intended to guarantee your freedom to share and change free
                    software--to make sure the software is free for all its users. This
                    General Public License applies to most of the Free Software
                    Foundation's software and to any other program whose authors commit to
                    using it. (Some other Free Software Foundation software is covered by
                    the GNU Library General Public License instead.) You can apply it to
                    your programs, too.

                    When we speak of free software, we are referring to freedom, not
                    price. Our General Public Licenses are designed to make sure that you
                    have the freedom to distribute copies of free software (and charge for
                    this service if you wish), that you receive source code or can get it
                    if you want it, that you can change the software or use pieces of it
                    in new free programs; and that you know you can do these things.

                    To protect your rights, we need to make restrictions that forbid
                    anyone to deny you these rights or to ask you to surrender the rights.
                    These restrictions translate to certain responsibilities for you if you
                    distribute copies of the software, or if you modify it.

                    For example, if you distribute copies of such a program, whether
                    gratis or for a fee, you must give the recipients all the rights that
                    you have. You must make sure that they, too, receive or can get the
                    source code. And you must show them these terms so they know their
                    rights.

                    We protect your rights with two steps: (1) copyright the software, and
                    (2) offer you this license which gives you legal permission to copy,
                    distribute and/or modify the software.

                    Also, for each author's protection and ours, we want to make certain
                    that everyone understands that there is no warranty for this free
                    software. If the software is modified by someone else and passed on, we
                    want its recipients to know that what they have is not the original, so
                    that any problems introduced by others will not reflect on the original
                    authors' reputations.

                    Finally, any free program is threatened constantly by software
                    patents. We wish to avoid the danger that redistributors of a free
                    program will individually obtain patent licenses, in effect making the
                    program proprietary. To prevent this, we have made it clear that any
                    patent must be licensed for everyone's free use or not licensed at all.

                    The precise terms and conditions for copying, distribution and
                    modification follow.

                    GNU GENERAL PUBLIC LICENSE
                    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

                    0. This License applies to any program or other work which contains
                    a notice placed by the copyright holder saying it may be distributed
                    under the terms of this General Public License. The "Program", below,
                    refers to any such program or work, and a "work based on the Program"
                    means either the Program or any derivative work under copyright law:
                    that is to say, a work containing the Program or a portion of it,
                    either verbatim or with modifications and/or translated into another
                    language. (Hereinafter, translation is included without limitation in
                    the term "modification".) Each licensee is addressed as "you".

                    Activities other than copying, distribution and modification are not
                    covered by this License; they are outside its scope. The act of
                    running the Program is not restricted, and the output from the Program
                    is covered only if its contents constitute a work based on the
                    Program (independent of having been made by running the Program).
                    Whether that is true depends on what the Program does.

                    1. You may copy and distribute verbatim copies of the Program's
                    source code as you receive it, in any medium, provided that you
                    conspicuously and appropriately publish on each copy an appropriate
                    copyright notice and disclaimer of warranty; keep intact all the
                    notices that refer to this License and to the absence of any warranty;
                    and give any other recipients of the Program a copy of this License
                    along with the Program.

                    You may charge a fee for the physical act of transferring a copy, and
                    you may at your option offer warranty protection in exchange for a fee.

                    2. You may modify your copy or copies of the Program or any portion
                    of it, thus forming a work based on the Program, and copy and
                    distribute such modifications or work under the terms of Section 1
                    above, provided that you also meet all of these conditions:

                    a) You must cause the modified files to carry prominent notices
                    stating that you changed the files and the date of any change.

                    b) You must cause any work that you distribute or publish, that in
                    whole or in part contains or is derived from the Program or any
                    part thereof, to be licensed as a whole at no charge to all third
                    parties under the terms of this License.

                    c) If the modified program normally reads commands interactively
                    when run, you must cause it, when started running for such
                    interactive use in the most ordinary way, to print or display an
                    announcement including an appropriate copyright notice and a
                    notice that there is no warranty (or else, saying that you provide
                    a warranty) and that users may redistribute the program under
                    these conditions, and telling the user how to view a copy of this
                    License. (Exception: if the Program itself is interactive but
                    does not normally print such an announcement, your work based on
                    the Program is not required to print an announcement.)

                    These requirements apply to the modified work as a whole. If
                    identifiable sections of that work are not derived from the Program,
                    and can be reasonably considered independent and separate works in
                    themselves, then this License, and its terms, do not apply to those
                    sections when you distribute them as separate works. But when you
                    distribute the same sections as part of a whole which is a work based
                    on the Program, the distribution of the whole must be on the terms of
                    this License, whose permissions for other licensees extend to the
                    entire whole, and thus to each and every part regardless of who wrote it.

                    Thus, it is not the intent of this section to claim rights or contest
                    your rights to work written entirely by you; rather, the intent is to
                    exercise the right to control the distribution of derivative or
                    collective works based on the Program.

                    In addition, mere aggregation of another work not based on the Program
                    with the Program (or with a work based on the Program) on a volume of
                    a storage or distribution medium does not bring the other work under
                    the scope of this License.

                    3. You may copy and distribute the Program (or a work based on it,
                    under Section 2) in object code or executable form under the terms of
                    Sections 1 and 2 above provided that you also do one of the following:

                    a) Accompany it with the complete corresponding machine-readable
                    source code, which must be distributed under the terms of Sections
                    1 and 2 above on a medium customarily used for software interchange; or,

                    b) Accompany it with a written offer, valid for at least three
                    years, to give any third party, for a charge no more than your
                    cost of physically performing source distribution, a complete
                    machine-readable copy of the corresponding source code, to be
                    distributed under the terms of Sections 1 and 2 above on a medium
                    customarily used for software interchange; or,

                    c) Accompany it with the information you received as to the offer
                    to distribute corresponding source code. (This alternative is
                    allowed only for noncommercial distribution and only if you
                    received the program in object code or executable form with such
                    an offer, in accord with Subsection b above.)

                    The source code for a work means the preferred form of the work for
                    making modifications to it. For an executable work, complete source
                    code means all the source code for all modules it contains, plus any
                    associated interface definition files, plus the scripts used to
                    control compilation and installation of the executable. However, as a
                    special exception, the source code distributed need not include
                    anything that is normally distributed (in either source or binary
                    form) with the major components (compiler, kernel, and so on) of the
                    operating system on which the executable runs, unless that component
                    itself accompanies the executable.

                    If distribution of executable or object code is made by offering
                    access to copy from a designated place, then offering equivalent
                    access to copy the source code from the same place counts as
                    distribution of the source code, even though third parties are not
                    compelled to copy the source along with the object code.

                    4. You may not copy, modify, sublicense, or distribute the Program
                    except as expressly provided under this License. Any attempt
                    otherwise to copy, modify, sublicense or distribute the Program is
                    void, and will automatically terminate your rights under this License.
                    However, parties who have received copies, or rights, from you under
                    this License will not have their licenses terminated so long as such
                    parties remain in full compliance.

                    5. You are not required to accept this License, since you have not
                    signed it. However, nothing else grants you permission to modify or
                    distribute the Program or its derivative works. These actions are
                    prohibited by law if you do not accept this License. Therefore, by
                    modifying or distributing the Program (or any work based on the
                    Program), you indicate your acceptance of this License to do so, and
                    all its terms and conditions for copying, distributing or modifying
                    the Program or works based on it.

                    6. Each time you redistribute the Program (or any work based on the
                    Program), the recipient automatically receives a license from the
                    original licensor to copy, distribute or modify the Program subject to
                    these terms and conditions. You may not impose any further
                    restrictions on the recipients' exercise of the rights granted herein.
                    You are not responsible for enforcing compliance by third parties to
                    this License.

                    7. If, as a consequence of a court judgment or allegation of patent
                    infringement or for any other reason (not limited to patent issues),
                    conditions are imposed on you (whether by court order, agreement or
                    otherwise) that contradict the conditions of this License, they do not
                    excuse you from the conditions of this License. If you cannot
                    distribute so as to satisfy simultaneously your obligations under this
                    License and any other pertinent obligations, then as a consequence you
                    may not distribute the Program at all. For example, if a patent
                    license would not permit royalty-free redistribution of the Program by
                    all those who receive copies directly or indirectly through you, then
                    the only way you could satisfy both it and this License would be to
                    refrain entirely from distribution of the Program.

                    If any portion of this section is held invalid or unenforceable under
                    any particular circumstance, the balance of the section is intended to
                    apply and the section as a whole is intended to apply in other
                    circumstances.

                    It is not the purpose of this section to induce you to infringe any
                    patents or other property right claims or to contest validity of any
                    such claims; this section has the sole purpose of protecting the
                    integrity of the free software distribution system, which is
                    implemented by public license practices. Many people have made
                    generous contributions to the wide range of software distributed
                    through that system in reliance on consistent application of that
                    system; it is up to the author/donor to decide if he or she is willing
                    to distribute software through any other system and a licensee cannot
                    impose that choice.

                    This section is intended to make thoroughly clear what is believed to
                    be a consequence of the rest of this License.

                    8. If the distribution and/or use of the Program is restricted in
                    certain countries either by patents or by copyrighted interfaces, the
                    original copyright holder who places the Program under this License
                    may add an explicit geographical distribution limitation excluding
                    those countries, so that distribution is permitted only in or among
                    countries not thus excluded. In such case, this License incorporates
                    the limitation as if written in the body of this License.

                    9. The Free Software Foundation may publish revised and/or new versions
                    of the General Public License from time to time. Such new versions will
                    be similar in spirit to the present version, but may differ in detail to
                    address new problems or concerns.

                    Each version is given a distinguishing version number. If the Program
                    specifies a version number of this License which applies to it and "any
                    later version", you have the option of following the terms and conditions
                    either of that version or of any later version published by the Free
                    Software Foundation. If the Program does not specify a version number of
                    this License, you may choose any version ever published by the Free Software
                    Foundation.

                    10. If you wish to incorporate parts of the Program into other free
                    programs whose distribution conditions are different, write to the author
                    to ask for permission. For software which is copyrighted by the Free
                    Software Foundation, write to the Free Software Foundation; we sometimes
                    make exceptions for this. Our decision will be guided by the two goals
                    of preserving the free status of all derivatives of our free software and
                    of promoting the sharing and reuse of software generally.

                    NO WARRANTY

                    11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
                    FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
                    OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
                    PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
                    OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
                    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
                    TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
                    PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
                    REPAIR OR CORRECTION.

                    12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
                    WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
                    REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
                    INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
                    OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
                    TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
                    YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
                    PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
                    POSSIBILITY OF SUCH DAMAGES.

                    END OF TERMS AND CONDITIONS

                    Documentazione di Moodle

                    Version: $Id$

                    diff --git a/lang/it/docs/philosophy.html b/lang/it/docs/philosophy.html index 42059097c92..374da26fadd 100755 --- a/lang/it/docs/philosophy.html +++ b/lang/it/docs/philosophy.html @@ -24,7 +24,7 @@ insufficienti nel caso si sia già letto di essi.

                    Qualora tali concetti risultino completamente nuovi allora è probabile che all'inizio queste idee saranno difficili da comprendere - tutto quello che posso raccomandare è di leggerle con attenzione e - di pensare alle volte in cui si è cercato di imparare qualcosa.
                    + di pensare alle volte in cui si è cercato di imparare qualcosa.

                    1. Costruttivismo

                    @@ -38,7 +38,7 @@ o ascoltando qualcuno.

                    Con ciò non si intende che sia impossibile apprendere qualcosa dalla lettura di una pagina web o assistendo ad una lezione, ovviamente si può. Si vuole solo far notare che è più una questione di - interpretazione che di trasferimento di informazioni da un cervello all'altro.
                    + interpretazione che di trasferimento di informazioni da un cervello all'altro.

                    2. Costruzionismo

                    @@ -50,7 +50,7 @@ Però, se si dovesse tentare di spiegare queste idee a qualcun altro con parole proprie, o produrre una proiezione di diapositive che illustri questi concetti, allora si avrebbe una comprensione migliore ed integrata con le proprie idee. Ecco perché le persone prendono appunti durante le lezioni, anche se poi - non li rileggeranno mai più.
                    + non li rileggeranno mai più.

                    3. Costruttivismo sociale

                    @@ -63,7 +63,7 @@ ma la sua forma suggerisce una certa "conoscenza" relativa al trasporto dei liquidi. Un esempio più complesso è un corso online: non solo le "forme" degli strumenti software indicano determinate cose su come dovrebbero funzionare i corsi online, ma le attività ed i testi prodotti all'interno del gruppo come insieme aiuteranno - a dare forma al comportamento di ciascuna persona all'interno di quel gruppo.
                    + a dare forma al comportamento di ciascuna persona all'interno di quel gruppo.

                    4. Connesso e distaccato

                    diff --git a/lang/it/docs/release.html b/lang/it/docs/release.html index 48fc06380f0..a4a710e9c73 100644 --- a/lang/it/docs/release.html +++ b/lang/it/docs/release.html @@ -1,394 +1,409 @@ - - -Moodle Docs: Current Release notes - - - - - - - - -

                    Note di Rilascio

                    - - -

                    Moodle 1.4.2 (5 Novembre 2004)

                    - -

                    (In merito agli importanti miglioramenti di sicurezza che questa release contiene, - raccomandiamo caldamente di effettuare l'aggiornamento a questa versione non - appena possibile.)

                    - -
                      -
                      -
                      Alcuni importanti aggiornamenti di sicurezza
                      -
                      -
                        -
                      • Migliorato il controllo/pulizia dei parametri degli script utilizzati - in alcune aree di Moodle (un grazie a Petr Skoda per le sue recenti - segnalazioni in proposito!)
                      • -
                      • Quotati alcuni parametri SQL nel modulo Glossario per prevenire potenziali - attacchi basati su esecuzioni arbitrarie di codice SQL.
                      • -
                      -
                      -
                      Alcune piccole novità
                      -
                      -
                        -
                      • Nuova modulo di autenticazione PAM per una autenticazione diretta - su sistemi Unix/Linux.
                      • -
                      • Anche i creatori di corsi possono adesso ripristinare un corso scegliendo - se crearne uno nuovo o se sostituirne uno pre-esistente.
                      • -
                      • I messaggi di un forum includono adesso maggiori informazioni nelle - intestazioni per permettere uan corretta informazione nei messaggi di - posta elettronica.
                      • -
                      -
                      -
                      Una marea di piccole correzioni
                      -
                      -
                        -
                      • La procedura di Backup è in grado adesso di gestire eventuali - errori (dovuti per esempio ad una interruzione del backup) e di pulire - i files incompleti.
                      • -
                      • Correzioni nell'autenticazione database contro un database PostgreSQL
                      • -
                      • Correzioni di alcune parti dell'installazione di PostgreSQL
                      • -
                      • Le linee di intestazione di un Forum vengono interrotte solo più - nella visualizzazione del modulo "Attività recente..."
                      • -
                      • Le iscrizioni da Database adesso funzionano :-)
                      • -
                      • Correzioni SQL nella creazione di RSS feeds da PostgreSQL
                      • -
                      • Aggiunto rtsp alla lista di protocolli permessi nella - pulizia del testo HTML
                      • -
                      • Il profilo utente e il profilo edita pagina possono essere richiamati - senza parametri
                      • -
                      • Aggiornamento della libreria xmlize alla ultima versione - disponibile
                      • -
                      • Aggiornamento della libreria phpmailer alla ultima - versione disponibile
                      • -
                      • Varie pulizie di picole parti di codice
                      • -
                      • Il menu Admin permette adesso il backup/ripristino del "corso del - sito" (pagina principale)
                      • -
                      • Corretto un baco di visualizzazione nell'indice dei forum, visibile - solo in php5
                      • -
                      • Highlighting function (eg after search) was stripping backslashes
                      • -
                      • Info dal LDAP viene ora decodificata da utf8
                      • -
                      • L'elenco dei corsi funziona meglio in caso di elenchi molto lunghi
                      • -
                      • Corretti due bachi SCORM (problemi riscontrati in una "typo" - e in onbeforeunload)
                      • -
                      • Alcune pulizie durante la stampa del testo, nelle intestazioni e nelle - variabili in Lezioni
                      • -
                      • Il Calendario funziona come ci si aspetta, anche se ci si collega - come qualcun'altro
                      • -
                      • Corretti pochi restanti problemi in tag PHP
                      • -
                      • Migliorato il rimescolamento nelle domande casuali (correzione per - bachi presenti nella versione 1.4)
                      • -
                      • quando viene rimosso un'insegnante da un corso, vengono ora rimpossi - anche da tutti i gruppi di quel corso
                      • -
                      • Corretto il baco strip_pages bug in Wiki
                      • -
                      • Correzioni del riconoscimento caratteri durante i backups e nel filtro - multilingua sotto PHP5
                      • -
                      -
                      -
                      -
                    - -

                     

                    - - -

                    Moodle 1.4.1 (12 Settembre 2004)

                    - -
                      -
                      -
                      Alcune piccole correzioni
                      -
                      -
                        -
                      • Nuovo filtro di " Protezione Email" che offuscherà tutti gli - indirizzi email all'interno di tutti i testi (per contribuire ad impedire - raccolte automatizzate di indirizzi)
                      • -
                      • Indirizzi email autorizzati possono ora essere ristretti (vedi config-dist.php - per dettagli)
                      • -
                      • Istruzioni extra per traduttori sono ora integrate nella interfaccia - di traduzione
                      • -
                      • Nuova pagina di help per percorsi indicizzati.
                      • -
                      -
                      -
                      Qualche altra correzione
                      -
                      -
                        -
                      • Migliorate le performance durante la visualizzazione dei log del sito
                      • -
                      • Migliorato il paging e le performance in glossary
                      • -
                      • Le voci di Glossario vengono ora correttamente mostrate se appartengono - a categorie multiple
                      • -
                      • Non viene redichiarata auth_user_login dopo un login fallito
                      • -
                      • Aggiunte due icone mancanti nel tema cordoroyblue
                      • -
                      • Corretti due bottoni mancanti "Nuovo evento" nella pagina di Nuovi - eventi
                      • -
                      • Vengono sempre aggiunti delgi addslashes sui messaggi di chat dagli - utenti demoni prima di inserirli nel db
                      • -
                      • Correzioni nella gestione delle iscrizioni periodiche se questa impostazione - è selezionata per un corso
                      • -
                      • L'ID del corso generale del sito (definita come SITEID) non deve più - essere per forza il numero 1.
                      • -
                      • I limiti prestabiliti di memoria (memory limits) sono stati aumentati - a 16Mb, per aiutare Moodle a continuare a lavorare anche in caso di - problemi non pianificati
                      • -
                      • Gli Smilies vengono ora renderizzati come immagini in formato Markdown
                      • -
                      • I Workshops funzionano di nuovo in "Attività recenti"
                      • -
                      • file.php può essere utilizzato per l'accesso ai dati dei corsi
                      • -
                      • Migliorati i comportamenti del blocco Calendario sulla home page
                      • -
                      • Sistemato un baco inerente le virgolette nelle specifiche del produttore - del database PostgreSQL
                      • -
                      • Corretta la visualizzazione delle risposte giuste durante la revisione - di un quiz
                      • -
                      • <tt> e<code> sono adesso tag permessi
                      • -
                      • I sommari di sezione, dei corsi e delle etichette sono di nuovo esenti - da pulizie del javascript
                      • -
                      • Corretto un raro baco LDAP che poteva impedire la creazione di nuovi - account
                      • -
                      -
                      -
                      -
                    - -

                     

                    -

                    Moodle 1.4 (31 agosto 2004)

                    - -
                      -
                      -
                      Nuove caratteristiche importanti
                      -
                      -
                        -
                      • Compatibilità con PHP 5
                      • -
                      • Nuova procedura guidata di installazione che aiuta nella configurazione - iniziale del file config.php.
                      • -
                      • L'installazione è ora completamente localizzata nella tua lingua - preferita.
                      • -
                      • Il modulo Risorsa è stato completamente rinnovato. Ora è - più semplice aggiungere nuove risorse e inviare loro dei dati.
                      • -
                      • Nuovo sistema di Registrazione che comprende moduli come il sistema - di pagamento automatico PayPal, il flatfile scanning, o controllo esterno - del Database.
                      • -
                      • I blocchi funzionano anche sulla Home Page; si può inoltre - inserire una sezione Argomenti al di sopra della parte centrale della - Home Page.
                      • -
                      • La Chat include ora un demone server-side (scritto in PHP) per una - chat instantanea e scalabile.
                      • -
                      • Nuovo modulo Wiki
                      • -
                      • Nuovo supporto per l'editor di testo per chi utilizza il formato MarkDown.
                      • -
                      • Riparati vari altri bugs.
                      • -
                      -
                      -
                      Sotto il cappuccio
                      -
                      -
                        -
                      • Il modulo Risorse è stato dotato di un menu "Aggiungi" - che utilizza sotto-moduli basati sulle classi, facilitando l'inserimento - di nuove attività di tipo Risorsa.
                      • -
                      • Il modulo Quiz è stato rifattorizzato in tipologie di domanda - basate sulle classi.
                      • -
                      • Il processo di Iscrizione è stato rifattorizzato in tipologie - iscrizioni basata sulle classi.
                      • -
                      • I formati di visualizzazione del Glossario sono ora basate sui nomi - per facilitare l'inserimento.
                      • -
                      • Migliorato il comportamento di molti moduli quando vengono usati sulla - pagina del sito.
                      • -
                      • La struttura dei Filtri è stata revisionata e resa compatibile - con Turck MMcache.
                      • -
                      • E' ora consentita una maggior flessibilità nell'inserimento - delle attività, in merito ai campi lasciati vuoti.
                      • -
                      • Si possono alterare colonne di tipo PostgreSQL utilizzando table_column().
                      • -
                      • La generazione RSS è stata velocizzata notevolmente, decrementando - il carico sul cron.
                      • -
                      • Alcuni moduli maggiori sono stati suddivisi tra lib.php a locallib.php - per un minore utilizzo della memoria.
                      • -
                      -
                      -
                      Lingue e localizzazioni
                      -
                      -
                        -
                      • Aggiornati i pacchetti di quasi tutte le lingue presenti.
                      • -
                      • Moodle può sovrascrivere il set predefinito dei caratteri in - Apache, rendendo le lingue più affidabili.
                      • -
                      • le lingue Multibyte sono correttamente inserite.
                      • -
                      • Migliorata la gestione delle localizzazioni e la codifica sui siti - multilingua (come moodle.org)
                      • -
                      • Nuove lingue: Sloveno e Ebraico.
                      • -
                      -
                      -
                      Riparazioni di Sicurezza
                      -
                      -
                        -
                      • Riparato un numero di possibili XSS punti di ingresso e path disclosures. - Fixed a number of possible XSS entry points and path disclosures
                      • -
                      • Gli attributi del tag in HTML vengono ora maggiormente analizzati - sintatticamente per controllare scripts disobbedienti.
                      • -
                      • Le pagine di profilo utenti non sono più disponibili di default - alla consultazione di utenti generici.
                      • -
                      • Tutto il testo viene ora ripulito in fase di output. (non più - solo in fase di input)
                      • -
                      • Gli indirizzi Email non vengono più utilizzati nelle mail in - uscita se l'utente non lo richiede.
                      • -
                      • I nuovi settaggi loginhttps utilizzano https sicuro - per il login, per poi tornare ad http per il resto.
                      • -
                      -
                      -
                      Amministrazione
                      -
                      -
                        -
                      • Nuove e meravigliose interfacce per aggiungere e rimuovere studenti, - creatori e amministratori in un corso.
                      • -
                      • Le login fallite sono ora tracciate nei logs, e possono essere visualizzate - dall'utente dopo aver effettuato con successo la login.
                      • -
                      • I Logs supportano ora la visualizzazione per gruppi e per errori.
                      • -
                      • I moduli sono ora più gestibili dalla pagina principale del - sito.
                      • -
                      • Gli studenti sulla pagina principale possono ora essere tutti gli - utenti del sito, oppure tutti gli utenti di almeno uno dei corsi sul - sito.
                      • -
                      • L'invio di Email può essere attivato o disattivato dalla pagina - profilo di ogni utente.
                      • -
                      -
                      -
                      Autenticazione
                      -
                      -
                        -
                      • Tutti i metodi di autenticazione coesisteranno da ora con gli account - creati internamente.
                      • -
                      • Nuovo supporto di autenticazione contro server First Class.
                      • -
                      • Riparazioni per l'autenticazione POP3.
                      • -
                      -
                      -
                      Navigazione
                      -
                      -
                        -
                      • I visitatori possono ora essere autenticati come Ospiti.
                      • -
                      • Il Jump menu mostra sempre la dicitura "Salta a" per aiutare nelle - indicazioni su cosa fa.
                      • -
                      • Il Jump menu dispone ora di una maniera più chiara nel raggruppare - le attività in sezioni.
                      • -
                      -
                      -
                      Blocchi
                      -
                      -
                        -
                      • Il sistema dei blocchi funziona ora anche nei corsi personalizzati.
                      • -
                      • Nuovo blocco Login permette di effettuare il login dalla pagina principale. -
                      • -
                      • Il blocco Utenti online in Home Page mostra tutti gli utenti del sito.
                      • -
                      -
                      -
                      Editor
                      -
                      -
                        -
                      • Nuovo pannello di configurazione per l'amministratore.
                      • -
                      • Nuovo supporto per tags di tipo àncora nelle pagine.
                      • -
                      • Il Controllo ortografico viene supportato adesso dall'editor.
                      • -
                      -
                      -
                      Chat
                      -
                      -
                        -
                      • La Chat include ora un demone server-side (in PHP) per una chat immediata - e scalabile.
                      • -
                      -
                      -
                      Scelta
                      -
                      -
                        -
                      • Rinnovamenti siginificativi per migliorarne il significato, con un - maggior numero di opzioni.
                      • -
                      -
                      -
                      Forum
                      -
                      -
                        -
                      • Molte riparazioni nella gestione dei gruppi.
                      • -
                      • Gli utenti possono scegliere di ricevere posts di un forum sotto forma - di selezione giornaliera, selezione dei soggetti, o post completi.
                      • -
                      • Le liste di discussione sono ora impaginate.
                      • -
                      • Gli insegnanti hanno ora un totale controllo sulle iscrizioni di un - forum, possono iscrivere chiunque vogliono.
                      • -
                      • La data dell'"Ultimo post" è stata accorciata e collegata al - post precedente.
                      • -
                      • I forum adesso elencano la lista dei feeds RSS Forums sulla pagina - index.
                      • -
                      • Migliorato l'aspetto dell'HTML utilizzando appieno gli stylesheets.
                      • -
                      • La posta di un Forum non viene inviata se è più vecchia - di 2 giorni (per prevenire floods indesiderati).
                      • -
                      • Le mail bloccate vengono loggate in modo da permettere agli insegnanti - di vederle.
                      • -
                      • Porzioni di discussione possono essere estratte dalla discussione - principale per formare una nuova discussione.
                      • -
                      -
                      -
                      Glossario
                      -
                      -
                        -
                      • Inserimenti di Glossario possono essere definiti come "sempre - editabili".
                      • -
                      • I glossari elencano ora le liste di RSS feeds nella pagina index.
                      • -
                      • Molte altre riparazioni sparse.
                      • -
                      -
                      -
                      Quiz
                      -
                      -
                        -
                      • nuovo conta-minuti flottante per quiz a tempo.
                      • -
                      • L'opzione tentativi permessi può essere assegnata ad un numero - specifico di computers.
                      • -
                      • Si può impostare una password aggiuntiva alla sezione Quiz - di un corso.
                      • -
                      • Nuova tipologia di domanda: domande calcolate.
                      • -
                      • Le domande numeriche ora supportano le unità. -
                      • Le domande possono essere viste in anteprima già durante la - compilazione.
                      • -
                      • Si possono esportare le domande in numerosi formati.
                      • -
                      • La gestione degli elenchi di categorie domanda sono state migliorate. -
                      • -
                      • Nuovo (ancora incompleto) formato di esportazione in XML, fornirà - un'elenco completo delle caratteristiche del quiz.
                      • -
                      • Risposte brevi consente ora l'inserimento di ogni sorta di caratteri - speciali.
                      • -
                      -
                      -
                      Risorse
                      -
                      -
                        -
                      • Aggiungi risorsa è ora un processo che si compie una volta - sola, con maggiori controlli.
                      • -
                      • Pagine Web, Link Web, File trasferiti e risorse di programma sono - tutti richiamabili dalla stessa tendina di scelta.
                      • -
                      -
                      -
                      SCORM
                      -
                      -
                        -
                      • Numerose riparazioni e miglioramenti - funziona con un maggior numero - di pacchetti software.
                      • -
                      • Verifica extra opzionale del file manifesto. -
                        -
                         
                        -
                        -
                      • -
                      -
                      -
                      -
                    - -
                    Infine, non scordatevi di guardare -alcuni dei molti moduli opzionali -in sviluppo.
                    -

                    Come sempre, se trovate errori in - Moodle, per favore segnalateli al nostro Bug - Tracker!

                    - -

                     

                    -
                    -

                    Informazioni sulle versioni precedenti

                    -
                    -

                     

                    -

                    Documentazione - di Moodle

                    -

                    Version: $Id$

                    + + +Documentazione di Moodle: Note sulla versione più recente + + + + + + + + + +

                    Note sulla versione più recente

                    + +

                    Novità in Moodle 1.3 (24 Maggio 2004)

                    +
                      +
                      +
                      Nuove caratteristiche importanti
                      +
                      +
                        +
                      • Nuova caratteristica Calendario (grazie a Jon Papaioannou e alla Greek School Network!)
                      • +
                      • Nuova caratteristica Blocchi , ora è possibile aggiungere e spostare i blocchi nella pagina del corso (grazie a Jon Papaioannou, Eloy Lafuente e altri!)
                      • +
                      • Nuovo Sistema RSS permetter ai Forum e ai Glossari (e più avanti gli altri moduli) di pubblicare messaggi RSS (Grazie, Eloy!)
                      • +
                      • Il filtro Mediaplugin ora supporta l'inserimento automatico dei file di Quicktime, Flash, and Windows Media.
                      • +
                      • Un nuovo filtro Nomi Attivià aggiungerà automaticamente i collegamenti alle altre attività dello stesso corso nelle quali è menzionato il loro nome.
                      • +
                      +
                      +
                      Altre nuove caratteristiche
                      +
                      +
                        +
                      • Nuovo tipo di risorsa "Cartella di file" mostrerà tutti i file contenuti in una cartella (includendo le sotto cartelle)
                      • +
                      • Le risorse che sono file (caricati sul server o pagine web) ora sono mostrate con un icona significativa nella pagina del corso
                      • +
                      • Un nuovo filtro per le risorse può aggiungere collegamenti alle risorse in tutto il sito Moodle.
                      • +
                      • Più collegamenti HTML tra forum e risorse ora sono preservati durante il salvataggio e il risristino delle copie di sicurezza
                      • +
                      • Ora è possibile il normale passaggio di parametri http ai file nella sezione File. Questo permette nuova dinamicità con le risorse Flash e HTML.
                      • +
                      • L'impostazione $CFG->forceloginforprofiles previene la visualizzazione dei profili utente a livello del sito da parte degli ospiti (includendo Google).
                      • +
                      • Ora, quando l'accesso di Google è abilitato, anche la traduzione della pagina web di Google funziona.
                      • +
                      • Le sessioni ora sono salvate privatamente nella directory dei dati di Moodle - questo permette a Moodle di lavorare meglio sui cluster, e risolve alcuni problemi di scadenza delle sessioni sui server web condivisi
                      • +
                      • La foto dell'utente ora può essere facilmente cancellata dalla pagina di modifica del profilo
                      • +
                      • Le informazione su quando si parla nelle chat ora appare nei log pricipali.
                      • +
                      • Le sezioni nascoste nei corsi ora possono essere rese completamente invisibili agli studenti (Impostazioni corso)
                      • +
                      • Miglioramenti al testo dentro i grafici per alcune lingue diverse dall'inglese, utilizzando fonti Unicode.
                      • +
                      • Migliorata l'interfaccia per la gestione delle Scale di valutazione, come anche migliorata gestione dei siti multilingua
                      • +
                      • Tutti gli studenti ora possono essere disiscritti da un corso con un pulsante (nella pagina Studenti)
                      • +
                      • Gli iscritti ai forum ora possono essere iscritti e disiscritti in gruppi
                      • +
                      • Migliore gestione dei alcuni caratteri Europei nei nomi dei file e nei nome utente
                      • +
                      • La notifica dei commenti per i compiti nascosti non è spedita finché lo stesso non viene reso visibile
                      • +
                      • Aumentato il supporto per l'importazione dei quiz di Blackboard
                      • +
                      • Lo script cron può essere eseguito utilizzando la versione binaria di PHP da qualunque directory
                      • +
                      • L'editor HTML ha subito miglioramenti.
                      • +
                      • La visualizzazione delle attività recenti predefinita ora è calcolata dall'ultimo accesso al corso (o due giorni, se questo è più recente). Precedentemente era dall'ultimo accesso al sito.
                      • +
                      • Le mail di conferma ora sono in HTML e testo, per evitare la divisione del collegamento di conferma.
                      • +
                      • Nuove Lingue: Farsi, Lettone, Norvegese Scuola primaria, versione Unicode del Cinese Tradizionale.
                      • +
                      +
                      +
                      Risoluzione errori
                      +
                      +
                        +
                      • Migliaia di piccoli errori sono stati corretti in tutto Moodle, generalmente per migliorare l'aspetto e la robustezza.
                      • +
                      • Come sempre, se trovate errori in Moodle, per favore segnalateli al nostro Bug Tracker!
                      • +
                      +

                       

                      +
                      +
                      Infine, non scordatevi di guardare alcuni dei molti moduli opzionali in sviluppo, incluso il supporto per SCORM, Wikis, Quiz di Hot Potato e molte altri.
                      +
                      +
                    + +

                     

                    +


                    + + +

                    +

                    New in Moodle 1.2.1 (25 Marzo 2004)

                    +
                      +
                      +
                      Alcune piccole correzioni di errori
                      +
                      +
                        +
                      • Corretti alcuni errori che causavano la mancata visualizzazione dei grafici e dei risultati dei sondaggi in alcune circostanze
                      • +
                      • Corretta l'importazione dei quiz di WebCT con immagini mancanti, risposte brevi e caratteri di escape
                      • +
                      • Corretta la formattazione nella finestra per inserire collegamenti dell'editor
                      • +
                      • Evitata l'aggiunta di collegamenti del glossario ai nomi delle attività che sono già collegamenti
                      • +
                      • Corretto alcuni calcoli di fuso orario quando l'utente non è presente
                      • +
                      • Caratteri come :( nel codice Javascript non sono più convertiti nella faccina triste del filtro HTML
                      • +
                      • Migliorata la gestione delle valutazioni dei singoli forum quando l'impstazione secureforms è attiva.
                      • +
                      • Le domande a scelta multipla ora hanno come preimpostazione il formato singola risposta esatta
                      • +
                      • Gli ospiti non possono più visualizzare l'indirizzo di posta elettronica se l'opzione "Mostra solo agli partecipanti del corso" è impostata da quel utente
                      • +
                      • L'amministratore principale ora è quello con il numero più basso in user_admins, invece dell'amministratore con l'ID più piccolo.
                      • +
                      • Modificato il plugin Flash per la riproduzione degli MP3 per migliorare la luminosità del pulsante di riproduzione sugli schermo scuri
                      • +
                      • Vari miglioramenti e pulizie in molti pachetti di linguaggio
                      • +
                      +
                      +
                      +
                    + +
                    + +

                    Novità in Moodle 1.2 (20 Marzo 2004)

                    +
                      +
                      +
                      Nuove caratteristiche importanti
                      +
                      +
                        +
                      • Nuovo supporto per gruppi e coorti + all’interno dei corsi (con numerose opzioni).
                      • +
                      • Filtri di testo che permettono l'elaborazione arbitraria + su tutto il testo in Moodle, incluso il collegamento automatico, + il supporto alla matematica, supporto multi-lingua e infinite + altre possibilità.
                      • +
                      • Un fantastico nuovo modulo di glossario (ringraziamenti + a Williams Castillo!) con svariati metodi per costruire attività + didattiche basate su definizioni raccolte.
                      • +
                      • Un nuovo modulo lezione (grazie a Ray Kingdon!) + con cui generare facilmente contenuti attivi attraverso percorsi guidati + e questionari a scelta multipla.
                      • +
                      • Un nuovo modulo etichetta che permette l’inserimento + di HTML arbitrario nelle pagine del corso.
                      • +
                      • Migliorato l’editor WYSIWYG, più veloce + e più multi-piattaforma rispetto a quello precedente.
                      • +
                      • Back-up automatici: possono essere calendarizzati + dall’Admin per tutti i corsi in una volta sola.
                      • +
                      +
                      +
                      Corsi
                      +
                      +
                        +
                      • Le Attività rientrano direttamente nel profilo del corso, + migliorandone la strutturazione.
                      • +
                      • Un nuovo report per le Attività Recenti rende più facile + monitorare ciò che è accaduto da poco.
                      • +
                      • Un nuovo link di log è presente nella finestra Attività + per limitare i log a quella sola attività.
                      • +
                      • Il Pulsante di ripristino è adesso sempre funzionale.
                      • +
                      • Migliorata la vista index per tutti i moduli.
                      • +
                      • Miglioramenti nella visualizzazione dei partecipanti, incluse la paginazione + e una funzione di ricerca iniziale.
                      • +
                      • I download Excel sono ora maggiormente compatibili con sistemi operativi + diversi.
                      • +
                      • Migliorata la segnalazione di errori durante le operazioni di aggiunta/aggiornamento + delle Attività.
                      • +
                      • Disattivato l’auto-focus nella finestra di ricerca (causava + noiose attese durante l’auto-scrolling nei corsi lunghi)
                      • +
                      • Aggiunto un link per disiscriversi nella pagina dei corsi studenti.
                      • +
                      • Cambiato il link alla password nella pagina dei corsi studenti.
                      • +
                      • Gli studenti possono essere autorizzati a vedere le statistiche relative + alle attività svolte.
                      • +
                      • Gli insegnanti possono passare in rassegna le immagini di un file + corso utilizzando il nuovo editor immagini.
                      • +
                      • Gli accessi vengono ora registrati per corso, in modo da rendere più + significativi gli elenchi dei partecipanti.
                      • +
                      • La barra di navigazione delle Attività adesso ha i pulsanti + per scorrere le attività precedenti e seguenti.
                      • +
                      • Le date dei files erano errate su alcuni sistemi operativi: sono state + corrette.
                      • +
                      • I vecchi utenti della chat non sono più mostrati tra le attività + recenti.
                      • +
                      +
                      +
                      Amministrazione del sito
                      +
                      +
                        +
                      • Un importante intervento sulla sicurezza per prevenire l’accesso + degli insegnanti come amministratori.
                      • +
                      • I nomi degli utenti si possono adesso configurare in modo che lo studente + possa vedere soltanto il cognome/nome, o nome/cognome dell’utente.
                      • +
                      • Gli Utenti individuali possono farsi disabilitare dall’Admin + o dall’Insegnante l’indirizzo e-mail (utile nei casi in + cui l’e-mail indicata è incompleta o non funzionante)
                      • +
                      • Una nuova impostazione di "forza login" può obbligare + ad effettuare il login prima di avere accesso ai contenuti del sito.
                      • +
                      • I formati di upload possono ora essere controllati attraverso Moodle + usando la funzione “maxbytes". Si possono impostare i limiti + del sito (legati ai limiti attuali del PHP corrente), i limiti di un + corso, i limiti di un’attività.
                      • +
                      • Gli allievi possono essere abilitati/disabilitati all’auto-iscrizione + ad un corso.
                      • +
                      • I cookies di Moodle possono essere personalizzati (aiuta quando si + utilizzano numerosi Moodle sullo stesso sito).
                      • +
                      • Incluso uno script per analizzare le prestazioni del Database (admin/dbperformance.php) +
                      • +
                      • Incluso uno script standalone per controllare la compatibilità + di un server con Moodle (lib/compatible.php)
                      • +
                      • Se un file denominato cronextra.php esiste nel dataroot allora il + cron lo farà funzionare. Questo permette ai siti di avere caratteristiche + "speciali" di manutenzione.
                      • +
                      • I formati dei corsi assomigliano ora più a plugins, in directories + separate.
                      • +
                      • Gli utenti (elenchi di utenti per esempio) possono anche venire caricati + da file di testo.
                      • +
                      • Se $CFG->disableuserimages è definita, le immagini dell'utente + non possono essere cambiate.
                      • +
                      • Se $CFG->opentogoogle è definita, Google può entrare + come utente ospite e lo stesso avviene per chi si logga come “google”.
                      • +
                      • Se $CFG->admineditalways è definita, l’Admin può + editare qualunque post in ogni momento.
                      • +
                      • Se $CFG->filterall è definita, ogni piccola cosa come per + esempio i subjects di un forum e i nomi delle attività vengono + filtrati.
                      • +
                      • o Aggiunto un supporto per utenti Demo limitata (per esempio la demo + Insegnanti su Moodle.org) – i nomi di questi utenti possono essere + aggiunti ad una lista dei nomi in config.php. per esempio $CFG->restrictusers + = 'insegnante, fred ';
                      • +
                      +
                      +
                      Temi del sito
                      +
                      +
                        +
                      • Riparazioni per Internet Explorer nell'utilizzo dei fogli di stile.
                      • +
                      • Riparazioni varie e miglioramenti nei Temi: i Temi personali necessitano + ora di un'aggiornamento.
                      • +
                      +
                      +
                      Traduzioni
                      +
                      +
                        +
                      • Nuove lingue disponibili: Galiziano e Lituano
                      • +
                      • Migliorata l’interfaccia per editare la lingua: si può + adesso scegliere la lingua corrente.
                      • +
                      • Si possono ora tradurre i nomi dei paesi, come anche i testi sui bottoni, + sugli smiley e il formato/dimensione dei files (mb, GB ecc)
                      • +
                      • I pacchetti relativi ad una lingua possono ora definire la direzione + di default (sinistra a destra, destra a sinistra).
                      • +
                      • I pacchetti relativi ad una lingua possono ora definire l'ordine dei + nominativi degli utenti.
                      • +
                      • I files relativi ad una lingua utilizzano ora una codifica PHP più + efficiente.
                      • +
                      • Eliminati i linefeeds bogus nelle stringhe a più linee
                      • +
                      +
                      +
                      Backup / Restore
                      +
                      +
                        +
                      • I backup automatici possono essere programmati per tutti i corsi in + una volta sola.
                      • +
                      • Tutti gli utenti sono ora inclusi nel backup di un corso (anche se + non più iscritto).
                      • +
                      • Riparati vari altri piccoli bugs.
                      • +
                      +
                      +
                      Filtri sul testo e sulla formattazione
                      +
                      +
                        +
                      • Avvertimento: i nuovi filtri di testo + possono aumentare il carico sul vostro server, specialmente se vengono + usati con filtri complessi. Usateli con cautela.
                      • +
                      • Il nuovo filtro del glossario può creare collegamenti alle + entries del glossario tra parole corrispondenti in Moodle.
                      • +
                      • Il nuovo filtro TeX può convertire il codice + TeX trovato in ogni parte di Moodle in una vera notazione matematica + (immagine in formato GIF).
                      • +
                      • Il nuovo filtro censore può essere attivato per filtrare parole + sgradite.
                      • +
                      • Il nuovo filtro multilang permette che i testi siano digitati in lingue + originali e soltanto la migliore sarà indicata ad ogni utente + (a seconda della lingua impostata).
                      • +
                      • Il tag <nolink> può essere utilizzato per evitare l’autolinking + all'interno di un passaggio di testo.
                      • +
                      • E’ permesso un maggior numero di tags, compreso <acronim> + e <math>.
                      • +
                      • Alcune aree dove il testo non era prima filtrato sono state ora integrate + (rischi di sicurezza).
                      • +
                      +
                      +
                      Sviluppatore Api
                      +
                      +
                        +
                      • Una nuova guida di codificazione è disponibile
                      • +
                      • Una nuova guida sulla “Filosofia” è disponibile; + -)
                      • +
                      • Miglioramenti ai templates per i nuovi moduli
                      • +
                      • I moduli dovrebbero ora specificare la versione minima di Moodle con + cui sono compatibili.
                      • +
                      • Gli scripts possono specificare al print_header() se la pagina è + in XML puro.
                      • +
                      • Tutto il modulo può conservare e richiamare le preferenze dell'utente + rimasto tra due login.
                      • +
                      +
                      +
                      Chat
                      +
                      +
                        +
                      • o Le sessioni chat possono ora essere cancellate.
                      • +
                      • o I tempi previsti di chat mostrano ora l’orario della timezone + corretta per una maggiore chiarezza.
                      • +
                      +
                      +
                      Forums
                      +
                      +
                        +
                      • Le preferenze di visualizzazione del forum vengono ricordate durante + le operazioni di login.
                      • +
                      • Il link “visualizza parent” su tutti i posts mostra i + messaggi correlati per velocizzare la navigazione tra forums.
                      • +
                      • Marcatori di tipo àncora permettono di visualizzare i posts + individuali in tutte le modalità.
                      • +
                      • Miglioramenti del cron in funzionamento manuale, sia durante l’annotazione + degli errori del mailer.
                      • +
                      • Il bottone valutazioni viene mostrato solo se si devono fare valutazioni.
                      • +
                      • La versione “e-mail solo testo” dei post html del forum + è stata notevolmente migliorata.
                      • +
                      • Durante una replica, sono indicate anche le risposte precedenti
                      • +
                      • Quando si usa l’editor Html nei post, non sono più supportate + altre opzioni di formattazione.
                      • +
                      +
                      +
                      Diario
                      +
                      +
                        +
                      • Si può ora usare l’editor Html nel diario.
                      • +
                      • Effettuate alcune correzioni nella pagina report, quando si valutano + le entrate del diario.
                      • +
                      +
                      +
                      Quiz
                      +
                      +
                        +
                      • Le domande e le categorie possono ora essere pubblicate senza che + ci sia bisogno di aprire un quiz.
                      • +
                      • Tutte le domande possono ora usare tutti i formati di editing presenti + in Moodle.
                      • +
                      • Nuovo formato di import: formato GIFT (impostazione di default)
                      • +
                      • Nuovo formato di import: formato course Test Manager
                      • +
                      • Nuovo formato di import: formato WebCT
                      • +
                      • Nuovo formato di import: formato Aiken
                      • +
                      • Le domande a “risposta breve” possono utilizzare i meta-caratteri, + per esempio: il meta*ere corrispondente
                      • +
                      • Le immagini ora funzionano anche se provengono da categorie di pubblicazioni + esterne.
                      • +
                      • Migliorati i reports di descrizione generale: più Info visualizzate + e la possibilità di cancellazione dei tentativi.
                      • +
                      • Aggiunto un nuovo report dettagliato sui quiz, per analisi di tipo + statistico.
                      • +
                      • Tutti i tipi di domanda permettono ora fino a 10 risposte ciascuno.
                      • +
                      • Non è più necessario usare il bottone di invio nel menu + “edita quiz” (si seleziona ora direttamente dal menu)
                      • +
                      • Riparato il bug che si presentava durante la riclassificazione in + ALCUNI quiz con domande casuali.
                      • +
                      • Riparato il bug che si presentava nel backup dei quiz con domande + casuali.
                      • +
                      • Riparati vari altri piccoli bugs.
                      • +
                      +
                      +
                      Risorse
                      +
                      +
                        +
                      • Gli insegnanti possono scorrere più direttamente i files durante + la creazione di files di upload.
                      • +
                      • Nuovi settaggi che permettono di impostare la URL di default, la pagina + di ricerca di default e la finestra popup di default.
                      • +
                      • Anche i files caricati possono apparire in finestre popup.
                      • +
                      • Migliorata la visualizzazione delle finestre popup mentre si usa la + barra di navigazione per richiamarle.
                      • +
                      • I files audio Mp3 sono ora distribuiti e fruiti mediante un lettore + Mp3 in flash integrato nel sito.
                      • +
                      • I files video (media player, Quicktime) sono integrati utilizzando + plug-in in locale.
                      • +
                      +
                      +
                      Workshops
                      +
                      +
                        +
                      • Cambiamenti nel trattamento delle valutazioni peer.
                      • +
                      • Nuova fase di valutazione.
                      • +
                      • Nuove opzioni per la tabella gradi di legame
                      • +
                      +
                      +
                      Varie
                      +
                      +
                        +
                      • Moodle ora ignora tutte le cartelle che Frontpage può aver + aggiunto (_ vti_cnf).
                      • +
                      • HTML migliorato - > XHTML in molti casi.
                      • +
                      • Svariate riparazioni per database non-MySQL
                      • +
                      • Alcune stringhe di testo “hard-coded” sono state rese + traducibili.
                      • +
                      • I dati del profilo di utente sono ora correttamente puliti.
                      • +
                      • Riparazioni per quando Moodle è inserito all'interno di un + frame (per esempio in Postnuke).
                      • +
                      • Alcuni bug riparati in modalità Wiki.
                      • +
                      • L’Admin non può più editare account esterni.
                      • +
                      • Gli utenti di Qmail possono usare l’opzione "qmail" + (nel campo smtphosts) per migliorare i risultati.
                      • +
                      • Per migliorare alcuni problemi del browser, ci sono ora diversi metodi + di re-indirizzamento.
                      • +
                      • Piccoli miglioramenti nella visualizzazione dei gradi nel gradebook.
                      • +
                      • Possono essere editati un maggior numero di campi nel profilo dell'allievo, + quali il dipartimento, l'istituzione; questi dati confluiscono anche + nel dump delle graduatorie (testo, excel).
                      • +
                      • Quando uno studente viene aggiunto come insegnante, viene automaticamente + disattivato dall’elenco degli studenti.
                      • +
                      • Aggiornato ADOdb (layer di database).
                      • +
                      +
                      +
                      +
                    +
                    + +
                    +

                    +Informazioni sulle precedenti versioni +

                    +
                    +

                     

                    +

                    Documentazione di Moodle

                    +

                    Version: $Id$

                    diff --git a/lang/it/docs/releaseold.html b/lang/it/docs/releaseold.html index 267896a2028..be871fc7d15 100644 --- a/lang/it/docs/releaseold.html +++ b/lang/it/docs/releaseold.html @@ -14,491 +14,6 @@

                    Note di rilascio vecchie versioni

                    -

                    Not completely translated

                    -

                    New in Moodle 1.3.4 (11th August, 2004)

                    -
                      -
                      -
                      Updates
                      -
                      -
                        -
                      • Some compatibility was added for handling glossaries and resources from Moodle 1.4.
                      • -
                      • Forbid restricted users from changing enrolments
                      • -
                      -
                      -
                      Bug fixes
                      -
                      -
                        -
                      • Fixed a reported vulnerability involving arguments to forum/post.php file
                      • -
                      • Fixed a possible vulnerability involving strings in Moodle texts
                      • -
                      • Fixed a rare glitch with attempt numbers in quizzes
                      • -
                      • Fixed a bug with regular expression logic in short answers
                      • -
                      • Fixed a typo in the PostgreSQL install
                      • -
                      • Fixed some documentation links
                      • -
                      -
                      -
                      -
                    - -
                    - -

                    New in Moodle 1.3.3 (16th July, 2004)

                    -
                      -
                      -
                      Updates
                      -
                      -
                        -
                      • The ADOdb library was upgraded to a version compatible with PHP 5.0
                      • -
                      • Improvements to the detection and conversion of URLs in backups
                      • -
                      -
                      -
                      Bug fixes
                      -
                      -
                        -
                      • A possible vulnerability involving arguments to the help.php file was fixed.
                      • -
                      • A possible vulnerability involving language setting was fixed.
                      • -
                      • Fixes for the editing of lang strings with double quotes in them
                      • -
                      • Several small problems fixed in Glossary
                      • -
                      • Some minor issues fixed in the Scorm module
                      • -
                      -
                      -
                      -
                    - -
                    - - -

                    New in Moodle 1.3.2 (9th July, 2004)

                    -
                      -
                      -
                      Updates
                      -
                      -
                        -
                      • The SCORM module is now included as standard
                      • -
                      • Some new languages (Malaysian, Estonian)
                      • -
                      • Many more existing languages are now completed up to 1.3.x
                      • -
                      -
                      -
                      Bug fixes
                      -
                      -
                        -
                      • A possible front page vulnerability with Moodle servers on some old PHP versions was fixed. If you are using a version of PHP previous to 4.3 then it might be a good idea to upgrade to this version of Moodle.
                      • -
                      • Important fixes to logic when forums are used for group activities
                      • -
                      • Editing teacher profiles are visible even to separated groups in a class
                      • -
                      • Subject lines in multibyte languages in recent activity are no longer broken by wrapping function
                      • -
                      • A few issues related to glossary export/import were fixed
                      • -
                      • Backup is now better at managing it's temporary files
                      • -
                      • Other small fixes here and there
                      • -
                      -
                      -
                      -
                    - -
                    - - -

                    New in Moodle 1.3.1 (4th June, 2004)

                    -
                      -
                      -
                      Bug fixes
                      -
                      -
                        -
                      • Some HTML code affecting stability of HTML editor under IE6 on some pages was fixed
                      • -
                      • Some bugs were fixed in several auto-linking text filters
                      • -
                      • Improved-looking navigation bar (using the » character)
                      • -
                      • Flash files now have their own icon
                      • -
                      • Adding course links using HTML editor now fixed for teachers
                      • -
                      • Section links block now preserves focussed view
                      • -
                      • Sites files now respect forcelogin setting
                      • -
                      • Upgrading blocks without database functions now works
                      • -
                      • Language updates
                      • -
                      -
                      -
                      -
                    - -
                    -

                    Novità in Moodle 1.3 (24 Maggio 2004)

                    -
                      -
                      -
                      Nuove caratteristiche importanti
                      -
                      -
                        -
                      • Nuova caratteristica Calendario (grazie a Jon Papaioannou e alla Greek School Network!)
                      • -
                      • Nuova caratteristica Blocchi , ora è possibile aggiungere e spostare i blocchi nella pagina del corso (grazie a Jon Papaioannou, Eloy Lafuente e altri!)
                      • -
                      • Nuovo Sistema RSS permetter ai Forum e ai Glossari (e più avanti gli altri moduli) di pubblicare messaggi RSS (Grazie, Eloy!)
                      • -
                      • Il filtro Mediaplugin ora supporta l'inserimento automatico dei file di Quicktime, Flash, and Windows Media.
                      • -
                      • Un nuovo filtro Nomi Attivià aggiungerà automaticamente i collegamenti alle altre attività dello stesso corso nelle quali è menzionato il loro nome.
                      • -
                      -
                      -
                      Altre nuove caratteristiche
                      -
                      -
                        -
                      • Nuovo tipo di risorsa "Cartella di file" mostrerà tutti i file contenuti in una cartella (includendo le sotto cartelle)
                      • -
                      • Le risorse che sono file (caricati sul server o pagine web) ora sono mostrate con un icona significativa nella pagina del corso
                      • -
                      • Un nuovo filtro per le risorse può aggiungere collegamenti alle risorse in tutto il sito Moodle.
                      • -
                      • Più collegamenti HTML tra forum e risorse ora sono preservati durante il salvataggio e il risristino delle copie di sicurezza
                      • -
                      • Ora è possibile il normale passaggio di parametri http ai file nella sezione File. Questo permette nuova dinamicità con le risorse Flash e HTML.
                      • -
                      • L'impostazione $CFG->forceloginforprofiles previene la visualizzazione dei profili utente a livello del sito da parte degli ospiti (includendo Google).
                      • -
                      • Ora, quando l'accesso di Google è abilitato, anche la traduzione della pagina web di Google funziona.
                      • -
                      • Le sessioni ora sono salvate privatamente nella directory dei dati di Moodle - questo permette a Moodle di lavorare meglio sui cluster, e risolve alcuni problemi di scadenza delle sessioni sui server web condivisi
                      • -
                      • La foto dell'utente ora può essere facilmente cancellata dalla pagina di modifica del profilo
                      • -
                      • Le informazione su quando si parla nelle chat ora appare nei log pricipali.
                      • -
                      • Le sezioni nascoste nei corsi ora possono essere rese completamente invisibili agli studenti (Impostazioni corso)
                      • -
                      • Miglioramenti al testo dentro i grafici per alcune lingue diverse dall'inglese, utilizzando fonti Unicode.
                      • -
                      • Migliorata l'interfaccia per la gestione delle Scale di valutazione, come anche migliorata gestione dei siti multilingua
                      • -
                      • Tutti gli studenti ora possono essere disiscritti da un corso con un pulsante (nella pagina Studenti)
                      • -
                      • Gli iscritti ai forum ora possono essere iscritti e disiscritti in gruppi
                      • -
                      • Migliore gestione dei alcuni caratteri Europei nei nomi dei file e nei nome utente
                      • -
                      • La notifica dei commenti per i compiti nascosti non è spedita finché lo stesso non viene reso visibile
                      • -
                      • Aumentato il supporto per l'importazione dei quiz di Blackboard
                      • -
                      • Lo script cron può essere eseguito utilizzando la versione binaria di PHP da qualunque directory
                      • -
                      • L'editor HTML ha subito miglioramenti.
                      • -
                      • La visualizzazione delle attività recenti predefinita ora è calcolata dall'ultimo accesso al corso (o due giorni, se questo è più recente). Precedentemente era dall'ultimo accesso al sito.
                      • -
                      • Le mail di conferma ora sono in HTML e testo, per evitare la divisione del collegamento di conferma.
                      • -
                      • Nuove Lingue: Farsi, Lettone, Norvegese Scuola primaria, versione Unicode del Cinese Tradizionale.
                      • -
                      -
                      -
                      Risoluzione errori
                      -
                      -
                        -
                      • Migliaia di piccoli errori sono stati corretti in tutto Moodle, generalmente per migliorare l'aspetto e la robustezza.
                      • -
                      • Come sempre, se trovate errori in Moodle, per favore segnalateli al nostro Bug Tracker!
                      • -
                      -

                       

                      -
                      -
                      Infine, non scordatevi di guardare alcuni dei molti moduli opzionali in sviluppo, incluso il supporto per SCORM, Wikis, Quiz di Hot Potato e molte altri.
                      -
                      -
                    - -

                     

                    -


                    - - -

                    -

                    New in Moodle 1.2.1 (25 Marzo 2004)

                    -
                      -
                      -
                      Alcune piccole correzioni di errori
                      -
                      -
                        -
                      • Corretti alcuni errori che causavano la mancata visualizzazione dei grafici e dei risultati dei sondaggi in alcune circostanze
                      • -
                      • Corretta l'importazione dei quiz di WebCT con immagini mancanti, risposte brevi e caratteri di escape
                      • -
                      • Corretta la formattazione nella finestra per inserire collegamenti dell'editor
                      • -
                      • Evitata l'aggiunta di collegamenti del glossario ai nomi delle attività che sono già collegamenti
                      • -
                      • Corretto alcuni calcoli di fuso orario quando l'utente non è presente
                      • -
                      • Caratteri come :( nel codice Javascript non sono più convertiti nella faccina triste del filtro HTML
                      • -
                      • Migliorata la gestione delle valutazioni dei singoli forum quando l'impstazione secureforms è attiva.
                      • -
                      • Le domande a scelta multipla ora hanno come preimpostazione il formato singola risposta esatta
                      • -
                      • Gli ospiti non possono più visualizzare l'indirizzo di posta elettronica se l'opzione "Mostra solo agli partecipanti del corso" è impostata da quel utente
                      • -
                      • L'amministratore principale ora è quello con il numero più basso in user_admins, invece dell'amministratore con l'ID più piccolo.
                      • -
                      • Modificato il plugin Flash per la riproduzione degli MP3 per migliorare la luminosità del pulsante di riproduzione sugli schermo scuri
                      • -
                      • Vari miglioramenti e pulizie in molti pachetti di linguaggio
                      • -
                      -
                      -
                      -
                    - -
                    - -

                    Novità in Moodle 1.2 (20 Marzo 2004)

                    -
                      -
                      -
                      Nuove caratteristiche importanti
                      -
                      -
                        -
                      • Nuovo supporto per gruppi e coorti - all’interno dei corsi (con numerose opzioni).
                      • -
                      • Filtri di testo che permettono l'elaborazione arbitraria - su tutto il testo in Moodle, incluso il collegamento automatico, - il supporto alla matematica, supporto multi-lingua e infinite - altre possibilità.
                      • -
                      • Un fantastico nuovo modulo di glossario (ringraziamenti - a Williams Castillo!) con svariati metodi per costruire attività - didattiche basate su definizioni raccolte.
                      • -
                      • Un nuovo modulo lezione (grazie a Ray Kingdon!) - con cui generare facilmente contenuti attivi attraverso percorsi guidati - e questionari a scelta multipla.
                      • -
                      • Un nuovo modulo etichetta che permette l’inserimento - di HTML arbitrario nelle pagine del corso.
                      • -
                      • Migliorato l’editor WYSIWYG, più veloce - e più multi-piattaforma rispetto a quello precedente.
                      • -
                      • Back-up automatici: possono essere calendarizzati - dall’Admin per tutti i corsi in una volta sola.
                      • -
                      -
                      -
                      Corsi
                      -
                      -
                        -
                      • Le Attività rientrano direttamente nel profilo del corso, - migliorandone la strutturazione.
                      • -
                      • Un nuovo report per le Attività Recenti rende più facile - monitorare ciò che è accaduto da poco.
                      • -
                      • Un nuovo link di log è presente nella finestra Attività - per limitare i log a quella sola attività.
                      • -
                      • Il Pulsante di ripristino è adesso sempre funzionale.
                      • -
                      • Migliorata la vista index per tutti i moduli.
                      • -
                      • Miglioramenti nella visualizzazione dei partecipanti, incluse la paginazione - e una funzione di ricerca iniziale.
                      • -
                      • I download Excel sono ora maggiormente compatibili con sistemi operativi - diversi.
                      • -
                      • Migliorata la segnalazione di errori durante le operazioni di aggiunta/aggiornamento - delle Attività.
                      • -
                      • Disattivato l’auto-focus nella finestra di ricerca (causava - noiose attese durante l’auto-scrolling nei corsi lunghi)
                      • -
                      • Aggiunto un link per disiscriversi nella pagina dei corsi studenti.
                      • -
                      • Cambiato il link alla password nella pagina dei corsi studenti.
                      • -
                      • Gli studenti possono essere autorizzati a vedere le statistiche relative - alle attività svolte.
                      • -
                      • Gli insegnanti possono passare in rassegna le immagini di un file - corso utilizzando il nuovo editor immagini.
                      • -
                      • Gli accessi vengono ora registrati per corso, in modo da rendere più - significativi gli elenchi dei partecipanti.
                      • -
                      • La barra di navigazione delle Attività adesso ha i pulsanti - per scorrere le attività precedenti e seguenti.
                      • -
                      • Le date dei files erano errate su alcuni sistemi operativi: sono state - corrette.
                      • -
                      • I vecchi utenti della chat non sono più mostrati tra le attività - recenti.
                      • -
                      -
                      -
                      Amministrazione del sito
                      -
                      -
                        -
                      • Un importante intervento sulla sicurezza per prevenire l’accesso - degli insegnanti come amministratori.
                      • -
                      • I nomi degli utenti si possono adesso configurare in modo che lo studente - possa vedere soltanto il cognome/nome, o nome/cognome dell’utente.
                      • -
                      • Gli Utenti individuali possono farsi disabilitare dall’Admin - o dall’Insegnante l’indirizzo e-mail (utile nei casi in - cui l’e-mail indicata è incompleta o non funzionante)
                      • -
                      • Una nuova impostazione di "forza login" può obbligare - ad effettuare il login prima di avere accesso ai contenuti del sito.
                      • -
                      • I formati di upload possono ora essere controllati attraverso Moodle - usando la funzione “maxbytes". Si possono impostare i limiti - del sito (legati ai limiti attuali del PHP corrente), i limiti di un - corso, i limiti di un’attività.
                      • -
                      • Gli allievi possono essere abilitati/disabilitati all’auto-iscrizione - ad un corso.
                      • -
                      • I cookies di Moodle possono essere personalizzati (aiuta quando si - utilizzano numerosi Moodle sullo stesso sito).
                      • -
                      • Incluso uno script per analizzare le prestazioni del Database (admin/dbperformance.php) -
                      • -
                      • Incluso uno script standalone per controllare la compatibilità - di un server con Moodle (lib/compatible.php)
                      • -
                      • Se un file denominato cronextra.php esiste nel dataroot allora il - cron lo farà funzionare. Questo permette ai siti di avere caratteristiche - "speciali" di manutenzione.
                      • -
                      • I formati dei corsi assomigliano ora più a plugins, in directories - separate.
                      • -
                      • Gli utenti (elenchi di utenti per esempio) possono anche venire caricati - da file di testo.
                      • -
                      • Se $CFG->disableuserimages è definita, le immagini dell'utente - non possono essere cambiate.
                      • -
                      • Se $CFG->opentogoogle è definita, Google può entrare - come utente ospite e lo stesso avviene per chi si logga come “google”.
                      • -
                      • Se $CFG->admineditalways è definita, l’Admin può - editare qualunque post in ogni momento.
                      • -
                      • Se $CFG->filterall è definita, ogni piccola cosa come per - esempio i subjects di un forum e i nomi delle attività vengono - filtrati.
                      • -
                      • o Aggiunto un supporto per utenti Demo limitata (per esempio la demo - Insegnanti su Moodle.org) – i nomi di questi utenti possono essere - aggiunti ad una lista dei nomi in config.php. per esempio $CFG->restrictusers - = 'insegnante, fred ';
                      • -
                      -
                      -
                      Temi del sito
                      -
                      -
                        -
                      • Riparazioni per Internet Explorer nell'utilizzo dei fogli di stile.
                      • -
                      • Riparazioni varie e miglioramenti nei Temi: i Temi personali necessitano - ora di un'aggiornamento.
                      • -
                      -
                      -
                      Traduzioni
                      -
                      -
                        -
                      • Nuove lingue disponibili: Galiziano e Lituano
                      • -
                      • Migliorata l’interfaccia per editare la lingua: si può - adesso scegliere la lingua corrente.
                      • -
                      • Si possono ora tradurre i nomi dei paesi, come anche i testi sui bottoni, - sugli smiley e il formato/dimensione dei files (mb, GB ecc)
                      • -
                      • I pacchetti relativi ad una lingua possono ora definire la direzione - di default (sinistra a destra, destra a sinistra).
                      • -
                      • I pacchetti relativi ad una lingua possono ora definire l'ordine dei - nominativi degli utenti.
                      • -
                      • I files relativi ad una lingua utilizzano ora una codifica PHP più - efficiente.
                      • -
                      • Eliminati i linefeeds bogus nelle stringhe a più linee
                      • -
                      -
                      -
                      Backup / Restore
                      -
                      -
                        -
                      • I backup automatici possono essere programmati per tutti i corsi in - una volta sola.
                      • -
                      • Tutti gli utenti sono ora inclusi nel backup di un corso (anche se - non più iscritto).
                      • -
                      • Riparati vari altri piccoli bugs.
                      • -
                      -
                      -
                      Filtri sul testo e sulla formattazione
                      -
                      -
                        -
                      • Avvertimento: i nuovi filtri di testo - possono aumentare il carico sul vostro server, specialmente se vengono - usati con filtri complessi. Usateli con cautela.
                      • -
                      • Il nuovo filtro del glossario può creare collegamenti alle - entries del glossario tra parole corrispondenti in Moodle.
                      • -
                      • Il nuovo filtro TeX può convertire il codice - TeX trovato in ogni parte di Moodle in una vera notazione matematica - (immagine in formato GIF).
                      • -
                      • Il nuovo filtro censore può essere attivato per filtrare parole - sgradite.
                      • -
                      • Il nuovo filtro multilang permette che i testi siano digitati in lingue - originali e soltanto la migliore sarà indicata ad ogni utente - (a seconda della lingua impostata).
                      • -
                      • Il tag <nolink> può essere utilizzato per evitare l’autolinking - all'interno di un passaggio di testo.
                      • -
                      • E’ permesso un maggior numero di tags, compreso <acronim> - e <math>.
                      • -
                      • Alcune aree dove il testo non era prima filtrato sono state ora integrate - (rischi di sicurezza).
                      • -
                      -
                      -
                      Sviluppatore Api
                      -
                      -
                        -
                      • Una nuova guida di codificazione è disponibile
                      • -
                      • Una nuova guida sulla “Filosofia” è disponibile; - -)
                      • -
                      • Miglioramenti ai templates per i nuovi moduli
                      • -
                      • I moduli dovrebbero ora specificare la versione minima di Moodle con - cui sono compatibili.
                      • -
                      • Gli scripts possono specificare al print_header() se la pagina è - in XML puro.
                      • -
                      • Tutto il modulo può conservare e richiamare le preferenze dell'utente - rimasto tra due login.
                      • -
                      -
                      -
                      Chat
                      -
                      -
                        -
                      • o Le sessioni chat possono ora essere cancellate.
                      • -
                      • o I tempi previsti di chat mostrano ora l’orario della timezone - corretta per una maggiore chiarezza.
                      • -
                      -
                      -
                      Forums
                      -
                      -
                        -
                      • Le preferenze di visualizzazione del forum vengono ricordate durante - le operazioni di login.
                      • -
                      • Il link “visualizza parent” su tutti i posts mostra i - messaggi correlati per velocizzare la navigazione tra forums.
                      • -
                      • Marcatori di tipo àncora permettono di visualizzare i posts - individuali in tutte le modalità.
                      • -
                      • Miglioramenti del cron in funzionamento manuale, sia durante l’annotazione - degli errori del mailer.
                      • -
                      • Il bottone valutazioni viene mostrato solo se si devono fare valutazioni.
                      • -
                      • La versione “e-mail solo testo” dei post html del forum - è stata notevolmente migliorata.
                      • -
                      • Durante una replica, sono indicate anche le risposte precedenti
                      • -
                      • Quando si usa l’editor Html nei post, non sono più supportate - altre opzioni di formattazione.
                      • -
                      -
                      -
                      Diario
                      -
                      -
                        -
                      • Si può ora usare l’editor Html nel diario.
                      • -
                      • Effettuate alcune correzioni nella pagina report, quando si valutano - le entrate del diario.
                      • -
                      -
                      -
                      Quiz
                      -
                      -
                        -
                      • Le domande e le categorie possono ora essere pubblicate senza che - ci sia bisogno di aprire un quiz.
                      • -
                      • Tutte le domande possono ora usare tutti i formati di editing presenti - in Moodle.
                      • -
                      • Nuovo formato di import: formato GIFT (impostazione di default)
                      • -
                      • Nuovo formato di import: formato course Test Manager
                      • -
                      • Nuovo formato di import: formato WebCT
                      • -
                      • Nuovo formato di import: formato Aiken
                      • -
                      • Le domande a “risposta breve” possono utilizzare i meta-caratteri, - per esempio: il meta*ere corrispondente
                      • -
                      • Le immagini ora funzionano anche se provengono da categorie di pubblicazioni - esterne.
                      • -
                      • Migliorati i reports di descrizione generale: più Info visualizzate - e la possibilità di cancellazione dei tentativi.
                      • -
                      • Aggiunto un nuovo report dettagliato sui quiz, per analisi di tipo - statistico.
                      • -
                      • Tutti i tipi di domanda permettono ora fino a 10 risposte ciascuno.
                      • -
                      • Non è più necessario usare il bottone di invio nel menu - “edita quiz” (si seleziona ora direttamente dal menu)
                      • -
                      • Riparato il bug che si presentava durante la riclassificazione in - ALCUNI quiz con domande casuali.
                      • -
                      • Riparato il bug che si presentava nel backup dei quiz con domande - casuali.
                      • -
                      • Riparati vari altri piccoli bugs.
                      • -
                      -
                      -
                      Risorse
                      -
                      -
                        -
                      • Gli insegnanti possono scorrere più direttamente i files durante - la creazione di files di upload.
                      • -
                      • Nuovi settaggi che permettono di impostare la URL di default, la pagina - di ricerca di default e la finestra popup di default.
                      • -
                      • Anche i files caricati possono apparire in finestre popup.
                      • -
                      • Migliorata la visualizzazione delle finestre popup mentre si usa la - barra di navigazione per richiamarle.
                      • -
                      • I files audio Mp3 sono ora distribuiti e fruiti mediante un lettore - Mp3 in flash integrato nel sito.
                      • -
                      • I files video (media player, Quicktime) sono integrati utilizzando - plug-in in locale.
                      • -
                      -
                      -
                      Workshops
                      -
                      -
                        -
                      • Cambiamenti nel trattamento delle valutazioni peer.
                      • -
                      • Nuova fase di valutazione.
                      • -
                      • Nuove opzioni per la tabella gradi di legame
                      • -
                      -
                      -
                      Varie
                      -
                      -
                        -
                      • Moodle ora ignora tutte le cartelle che Frontpage può aver - aggiunto (_ vti_cnf).
                      • -
                      • HTML migliorato - > XHTML in molti casi.
                      • -
                      • Svariate riparazioni per database non-MySQL
                      • -
                      • Alcune stringhe di testo “hard-coded” sono state rese - traducibili.
                      • -
                      • I dati del profilo di utente sono ora correttamente puliti.
                      • -
                      • Riparazioni per quando Moodle è inserito all'interno di un - frame (per esempio in Postnuke).
                      • -
                      • Alcuni bug riparati in modalità Wiki.
                      • -
                      • L’Admin non può più editare account esterni.
                      • -
                      • Gli utenti di Qmail possono usare l’opzione "qmail" - (nel campo smtphosts) per migliorare i risultati.
                      • -
                      • Per migliorare alcuni problemi del browser, ci sono ora diversi metodi - di re-indirizzamento.
                      • -
                      • Piccoli miglioramenti nella visualizzazione dei gradi nel gradebook.
                      • -
                      • Possono essere editati un maggior numero di campi nel profilo dell'allievo, - quali il dipartimento, l'istituzione; questi dati confluiscono anche - nel dump delle graduatorie (testo, excel).
                      • -
                      • Quando uno studente viene aggiunto come insegnante, viene automaticamente - disattivato dall’elenco degli studenti.
                      • -
                      • Aggiornato ADOdb (layer di database).
                      • -
                      -
                      -
                      -
                    -

                    Novità in Moodle 1.1.1 (10 settembre 2003):

                    '; $string['enrolname'] = 'Registrazione interna'; ?> diff --git a/lang/it/enrol_paypal.php b/lang/it/enrol_paypal.php index 770860051ba..8a664a2cf1e 100644 --- a/lang/it/enrol_paypal.php +++ b/lang/it/enrol_paypal.php @@ -1,9 +1,7 @@ modulename\" ($a->moduleversion) non può essere installato. Richiede una versione più aggornata di Moodle (attualmente state usando $a->currentmoodle, mentre servirebbe $a->requiremoodle).'; $string['notavailable'] = 'Quello non è attualmente disponibile'; $string['restricteduser'] = 'Spiacente, ma il tuo utente \"$a\" non ha il permesso di fare questo.'; -$string['sessionipnomatch'] = 'Spiacente, ma il vostro IP sembra essere cambiato da quando vi siete autenticati. Questa caratteristica previene che qualcuno rubi la vostra identità mentre siete collegati a questo sito. Gli utenti non dovrebbero vedere questo messaggio - chiedere aiuto all\'amministratore del sito.'; $string['unknowncourse'] = 'Il corso chiamato \"$a\" risulta sconosciuto'; $string['usernotaddederror'] = 'L\'utente \"$a\" non è stato aggiunto - errore sconosciuto '; $string['usernotaddedregistered'] = 'L\'utente \"$a\" no è stato aggiunto - utente già registrato'; -$string['usernotavailable'] = 'Non ti è possibile visualizzare i dettagli di questo utente.'; ?> diff --git a/lang/it/forum.php b/lang/it/forum.php index d6c21dce5c6..7721bbd185c 100644 --- a/lang/it/forum.php +++ b/lang/it/forum.php @@ -1,5 +1,5 @@ Hai $a a disposizione se desideri apportare delle modifiche.'; +$string['postadded'] = 'Il tuo messaggio è stato aggiunto con successo.

                    Hai $a a disposizione se desideri apportare delle modifiche.'; $string['postincontext'] = 'Vedi questo messaggio nel contesto'; $string['postmailinfo'] = 'Questa è una copia del messaggio postato su $a . Per aggiungere la tua risposta via internet, clicca su questo link:'; @@ -101,7 +100,6 @@ $string['postrating3'] = 'Le esposizioni in genere, sono CONNESSE ai saperi'; $string['posts'] = 'Messaggi'; $string['posttoforum'] = 'Invia al forum'; $string['postupdated'] = 'Il tuo messaggio è stato aggiornato'; -$string['potentialsubscribers'] = 'Utenti non iscritti'; $string['processingdigest'] = 'Elaborazione mail della raccolta per l\'utente $a'; $string['processingpost'] = 'Elaborazione del messaggio $a'; $string['prune'] = 'Interrotto'; @@ -149,8 +147,6 @@ $string['subscriptions'] = 'Iscrizioni'; $string['unsubscribe'] = 'Cancella la tua iscrizione da questo forum'; $string['unsubscribed'] = 'Iscrizione cancellata'; $string['unsubscribeshort'] = 'Disiscrivi'; -$string['yesforever'] = 'Si, per sempre'; -$string['yesinitially'] = 'Si, inizialmente'; $string['youratedthis'] = 'Hai già votato questo'; $string['yournewtopic'] = 'Il tuo nuovo argomento di discussione'; $string['yourreply'] = 'La tua replica'; diff --git a/lang/it/glossary.php b/lang/it/glossary.php index 571bff7c0a0..bde7560fd55 100755 --- a/lang/it/glossary.php +++ b/lang/it/glossary.php @@ -1,11 +1,11 @@ Concetto e definizione sono campi necessari.'; $string['explainall'] = 'TUTTI mostrerà tutti i termini in una pagina.'; -$string['explainalphabet'] = 'Seleziona la lettera che vuoi vedere.

                    '; +$string['explainalphabet'] = 'Seleziona la lettera che vuoi vedere.

                    '; $string['explainexport'] = 'Un file è stato creato.
                    Scaricalo e mettilo al sicuro. Lo potrai importare quando vorrai in questo o in un altro corso.'; $string['explainimport'] = 'Devi specificare il file da importare e definire il criterio per elaborarlo.
                    Sottoponi la tua richiesta '; $string['explainspecial'] = 'Speciali mostrerà tutti i termini che non iniziano con una lettera.'; @@ -102,7 +99,7 @@ $string['exporttomainglossary'] = 'Esporta nel glossario generale'; $string['filetoimport'] = 'File da importare'; $string['fillfields'] = 'Concetto e definizione sono campi necessari.'; $string['filtername'] = 'Auto-collegamento al glossario'; -$string['fullmatch'] = 'Non collegare la parola quando è compresa in un altro termine'; +$string['fullmatch'] = 'Trova tutte le parole solo
                    (quando collegato automaticamente)'; $string['globalglossary'] = 'Glossario globale'; $string['glossaryleveldefaultsettings'] = 'Impostazione del livello dei glossari standard'; $string['glossarytype'] = 'Tipo di Glossario'; @@ -158,7 +155,7 @@ $string['standardview'] = 'Vista Standard'; $string['studentcanpost'] = 'Gli studenti posso aggiungere termini'; $string['totalentries'] = 'Totale termini'; $string['usedynalink'] = 'Collega automaticamente i termini del glossario'; -$string['waitingapproval'] = 'Attende approvazione'; +$string['waitingapproval'] = 'Attede approvazione'; $string['warningstudentcapost'] = '(Questo viene applicato solo se il glossario non é quello generale)'; $string['withauthor'] = 'Concetto con autore'; $string['withoutauthor'] = 'Concetto senza autore'; diff --git a/lang/it/help/courseformats.html b/lang/it/help/courseformats.html index 6c90e664019..0d408ffb4e8 100644 --- a/lang/it/help/courseformats.html +++ b/lang/it/help/courseformats.html @@ -3,20 +3,23 @@

                    Formato Settimanale

                      Il corso viene organizzato settimana per settimana, definendo una data di inizio e -una di fine del corso. -Ogni settimana comprende più attività -Alcune di queste, a loro volta, come per esempio un "diario" possono avere una validità limitata nel tempo. +una per la fina del corso. +Ogni settminana comprende più attività. +Alcune di queste, come per esempio il "diario" può avere una validità +di un paio di settimane dopo di che risulterà inattivo.

                    Formato per Argomenti

                      -Questo formato organizza ogni attività per argomento (o unità) indipendentemente dalla loro lunghezza. -Un argomento non ha restrizioni di tempo, e quindi non è necessario specificare alcuna data di inizio o fine. +Questo formato è molto simile a quello &lquot;Settimanale&rquot;, con la differenza che la +settmiana viene chiamata argomento. +Un argomento non ha restrizione di tempo, infatti non sarà necessario specificare nessuna data.
                    -

                    Formato Relazionale

                    +

                    Fotmato Relazionale

                      -Questo formato costruisce il corso attorno ad un forum centrale che apparirà nella -pagina principale del corso stesso. Questo formato può essere ideale per situazioni d'insegnamento -libere. Oppure potrebbe essere usato come una bacheca per la struttura scolastica di riferimento. +Questo formato si organizza attorno ad un forum centrale che apparirà nella +pagina principale del corso. Questo formato è ideale per situazioni d'insegnamento +libere. Questo formato, in particolare, potrebbe non essere un vero e proprio corso bensì +venire usato come una bacheca per la struttura scolastica di riferimento.
                    \ No newline at end of file diff --git a/lang/it/help/coursenumsections.html b/lang/it/help/coursenumsections.html index 6e4c665e55f..27ad89626e8 100644 --- a/lang/it/help/coursenumsections.html +++ b/lang/it/help/coursenumsections.html @@ -1,9 +1,9 @@

                    Numero di settimane/argomenti del corso

                    -

                    Questo parametro è usato solo per i corsi in formato 'settimanale' e 'per argomenti'.

                    +

                    Questi parametri sono usati solo per i corsi in formato 'weekly' e 'topics'.

                    -

                    Nel formato 'settimanale' questo parametro specifica il numero di settimane del corso a partire dalla data di inizio.

                    +

                    Nel formato 'weekly' questo paramtero specifica il numero di settimane del corso a partire dalla data di inizio.

                    -

                    Nel formato 'per argomenti' questo parametro definisce il numero di argomenti del corso.

                    +

                    Nel formato 'topics' questo parametro specifica il numero di argomenti del corso.

                    -

                    Il numero specificato determinerà in pratica quanti blocchi saranno presenti nella parte centrale della pagina principale del corso.

                    \ No newline at end of file +

                    Questo parametro determiner` il numero di spazi nella parte centrale della pagina principale del corso.

                    \ No newline at end of file diff --git a/lang/it/help/forum/ratings.html b/lang/it/help/forum/ratings.html index fb016c02a11..bf4bbcb2aac 100644 --- a/lang/it/help/forum/ratings.html +++ b/lang/it/help/forum/ratings.html @@ -43,7 +43,7 @@ In caso siate interessati all'argomento, si riportano alcuni riferimenti alle ri Thinking and Learning Survey (ATTLS). Sex Roles, 40(9/10), 745-766.
                  • 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. -
                    +
                  diff --git a/lang/it/help/glossary/aliases.html b/lang/it/help/glossary/aliases.html index 88729b45d74..d1bf1e09d19 100755 --- a/lang/it/help/glossary/aliases.html +++ b/lang/it/help/glossary/aliases.html @@ -1,5 +1,5 @@ -

                  Alias

                  +

                  Parole chiave

                  -

                  Ogni termine nel Glossario può avere associata una lista di alias. +

                  Ogni termine nel Glossario può avere associata una lista di parole chiave (o alias).

                  Queste parole possono essere utilizzate come vie alternative per riferirsi al termine. Per esempio, sono utilizzate quando si creano link automatici.

                  diff --git a/lang/it/help/glossary/index.html b/lang/it/help/glossary/index.html index 06bf8628107..db55bc2f97c 100755 --- a/lang/it/help/glossary/index.html +++ b/lang/it/help/glossary/index.html @@ -10,7 +10,7 @@ File di help a livello Glossario:
                • Formato di visualizzazione
                • Glossario globale
                • Importazione di categorie -
                • Link automatico delle categorie +
                • Link automatico delle categorie
                • Permesso di commentare i termini
                • Permesso di duplicare i termini
                • Numero di articoli recenti di tipo RSS @@ -28,6 +28,6 @@ File di help a livello Termine del Glossario:
                • Corrispondenza di parole intere
                • Corrispondenza esatta con maiuscole e minuscole
                • Link automatico dei termini -
                • Alias +
                • Parole chiave
                \ No newline at end of file diff --git a/lang/it/help/groupmode.html b/lang/it/help/groupmode.html index 9ce5246d750..ed2633737c8 100755 --- a/lang/it/help/groupmode.html +++ b/lang/it/help/groupmode.html @@ -14,11 +14,11 @@

                La Modalità gruppo può essere definita a due livelli:
                -
                1. A livello del Corso
                +
                1. A livello del Corso
                La Modalità gruppo definita nella Impostazioni del corso è la modalità predefinita per tutte le attività presenti nel corso.

                - 2. A livello delle Attività del Corso
                + 2. A livello delle Attività del Corso
                Nelle attività del corso che supportano la Modalità gruppo, è possibile impostare tale modalità sulle singole attività. Se nelle Impostazioni del corso la Modalità gruppo ha l'impostazione "forza" diff --git a/lang/it/help/guestaccess.html b/lang/it/help/guestaccess.html index 3e8706d384c..a6a29921fd7 100644 --- a/lang/it/help/guestaccess.html +++ b/lang/it/help/guestaccess.html @@ -7,10 +7,10 @@ nella pagina di registrazione utenti.

                Gli ospiti non possiedono l'autorizzazione per partecipare attivamente ai corsi.

                -

                Questa opzione può essere utile quando si vuole permettere l'accesso a coloro che sono +

                Questa opzione può essere utile quando si vuole permettere l'accesso a coloro che sono interessati ad ricevere informazioni generali sul corso.

                Esistono due tipi di accesso come ospite: con password o senza. Gli ospiti, a differenza degli alunni, dovranno inserire la password di accesso ogni volta -che accederanno al corso. Ciò permette un maggiore controllo sugli accessi. -Se il corso non possiede una password di accesso, qualunque ospite potrà visitare il corso.

                +che accederanno al corso. Ciò permette un magiore controllo sugli accessi. +Se il corso non possiede una password di accesso, chiunque ospite potrà visitare il corso.

                diff --git a/lang/it/help/index.html b/lang/it/help/index.html index 0062a8fedaa..cceb014c511 100755 --- a/lang/it/help/index.html +++ b/lang/it/help/index.html @@ -24,7 +24,6 @@
              • Disponibilità corso
              • Formato dei corsi
              • Insegnanti -
              • Matricola del corso
              • Moduli
              • News da mostrare
              • Nome abbreviato del corso diff --git a/lang/it/help/quiz/index.html b/lang/it/help/quiz/index.html index 81cac68722c..2c7aed80794 100755 --- a/lang/it/help/quiz/index.html +++ b/lang/it/help/quiz/index.html @@ -15,7 +15,6 @@
              • Domande a risposta breve
              • Domande mischiate
              • Domande Vero/Falso -
              • Esportazione di domande
              • Feedback
              • Importazione di domande
              • Importazione di files di domande in formato Aiken diff --git a/lang/it/help/quiz/maxgrade.html b/lang/it/help/quiz/maxgrade.html index 11321534f1f..a3bac5c11b2 100644 --- a/lang/it/help/quiz/maxgrade.html +++ b/lang/it/help/quiz/maxgrade.html @@ -1,7 +1,7 @@

                Valutazione massima

                -

                Il voto massimo impostato per un quiz è quello rispetto al quale tutti gli altri voti sono proporzionati. +

                Il voto massimo impostato per un quiz è quello rispoetto al quale tutti gli alòtri voti sono proporzionati. -

                Per esempio, si potrebbe impostare il massimo voto a 20, perché il quiz vale il 20% dell'intero corso. +

                Per esempio, si può impostare il massimo voto a 20, perché il quiz vale il 20% dell'intero corso.

                Anche se ci sono 10 domande nel quiz che valgono un totale di 50 punti, tutti i voti saranno "riproporzionati" al massimo voto del quiz, che è 20. diff --git a/lang/it/help/resource/index.html b/lang/it/help/resource/index.html index 69d8b0bab3f..d12feedc6fe 100755 --- a/lang/it/help/resource/index.html +++ b/lang/it/help/resource/index.html @@ -1,14 +1,7 @@ -

                Modulo Risorsa

                +

                Risorsa

                diff --git a/lang/it/help/resource/parameters.html b/lang/it/help/resource/parameters.html deleted file mode 100644 index 1f6afa27dda..00000000000 --- a/lang/it/help/resource/parameters.html +++ /dev/null @@ -1,11 +0,0 @@ -

                Parametri Risorse

                - -

                L'impostazione dei parametri totalmente opzionale, e utile solamente quando ti necessario passare alcune informazioni di Moodle al file risorsa o alla pagina web.

                - -

                Se definisci qualche parametro verrˆ alla risorsa come parte dell'URL (utilizzando il metodo GET).

                - -

                La colonna di sinistra permette di scegliere le informazioni da inviare, e la colonna di destra ti permette di assegnargli un nome.

                - -

                Nota che le informazioni dell'utente saranno quelle dell'utente che sta visualizzando la risorsa, e le informazioni del corso saranno quelle del corso di cui la risorsa fa parte.

                - - diff --git a/lang/it/help/resource/program.html b/lang/it/help/resource/program.html new file mode 100755 index 00000000000..bd7f5ae4c6a --- /dev/null +++ b/lang/it/help/resource/program.html @@ -0,0 +1,16 @@ +

                Risorse di tipo Programma

                + +

                Una risorsa di tipo programma è una risorsa esterna capace di accettare dati passati da Moodle.

                + +

                I dati sono passati tramite HTTP GET (come parte del URL) e includono:

                + +
                  +
                • extern_nav: la URL dalla quale la risorsa è chiamata +
                • extern_usr: il nome dell'utente corrente +
                • extern_nam: il nome completo dell'utente corrente +
                • extern_tim: l'ora corrente +
                • extern_pwd: una password univoca +
                + +

                Tutto quanto questo sarà oggetto di revisioni nel prossimo futuro.

                + diff --git a/lang/it/help/resource/resourcetype.html b/lang/it/help/resource/resourcetype.html new file mode 100644 index 00000000000..018f0738809 --- /dev/null +++ b/lang/it/help/resource/resourcetype.html @@ -0,0 +1 @@ +

                Tipo di Risorsa

                Le "Risorse" rappresentano qualsiasi contenuto attinente al corso che potete immaginare. Di diversi tipi, specificano in quale forma il contenuto possa essere accessibile:

                Bibliografia - il tradizionale riferimento bibliografico a riviste specializzate, pubblicazioni, libri.

                Cartella di files - visualizza un'intera directory (e le sottodirettories) dall'area files del corso. I partecipanti la possono "sfogliare" e vedere tutti i files.

                Collegamento Web - Una URL ad uno specifico documento presente sul web. Quando qualcuno clicca su di esso, l'attività di consultazione della risorsa sarà spostata fuori dalla locazione fisica del corso in oggetto. (Se richiesto, la pagina si aprirà in una nuova finestra del navigatore).

                File presente su questo server - mostrerà qualunque file che avrai in precedenza trasferito sul server del corso. Vedi la sezione 'Files'.

                Pagina Web - Una URL ad uno specifico documento presente sul web. Analogamente al tipo precedente, verrà mostrata una pagina web, con la sola differenza che essa verrà mostrata all'interno di un frame (riquadro), come se essa fosse integrata all'interno del corso.

                Programma - un programma esterno che richiede il passaggio di informazioni sull'utente e sul corso correnti di Moodle. Questo permette ad applicazioni esterne di cooperare con Moodle.

                Altre informazioni sulle Risorse di tipo Programma

                Testo HTML - per utenti evoluti. Non è necessaria alcuna formattazione; è sufficiente digitare il codice HTML.

                Altre informazioni sul testo HTML

                Testo Wiki - permette più opzioni di formattazione del Testo semplice senza la necessità di imparare l'HTML. Si scrive in testo semplice, ma possono essere inclusi tanti caratteri di formattazione (per es. *questo sarà grassetto* /questo sarà evidenziato/) per creare facilmente una formattazione più complessa.

                Altre informazioni sul Testo Wiki

                Testo semplice - la tipologia più semplice. E' sufficiente digitare (editare) i contenuti nel form presente nella pagina successiva. Ciò che scriverete verrà automaticamente formattato, come avviene nel consueto posting nei forums di discussione.

                Altre informazioni sulla formattazione del testo

                \ No newline at end of file diff --git a/lang/it/help/resource/summary.html b/lang/it/help/resource/summary.html index 96be824f253..daed0a513ef 100644 --- a/lang/it/help/resource/summary.html +++ b/lang/it/help/resource/summary.html @@ -1 +1 @@ -

                Descrizione Risorsa

                Breve descrizione della risorsa.

                Per alcune opzioni di visualizzazione delle risorse, la descrizione stampata accanto alla risorsa stessa, altrimenti appare nella pagina indice delle risorse per rendere pi semplice agli studenti la ricerca di particolari risorse

                Non scrivere troppo in questo spazio e non includere collegamenti a risorse!

                \ No newline at end of file +

                Descrizione Risorsa

                Breve descrizione della risorsa.

                Non scrivere troppo in questo spazio e non includere collegamenti a risorse!

                Verrà data l'opportunità di specificare il collegamento nella pagina successiva. \ No newline at end of file diff --git a/lang/it/help/resource/type/directory.html b/lang/it/help/resource/type/directory.html deleted file mode 100644 index 21753dc0eee..00000000000 --- a/lang/it/help/resource/type/directory.html +++ /dev/null @@ -1,6 +0,0 @@ -

                Cartella

                - -
                  -

                  La risorsa Cartella pu˜ mostrare tutta una cartella (e le sue sottocartelle) dalla vostra area dei file del corso. Gli studenti possono navigare e visulizzare tutti questi file.

                  -
                - diff --git a/lang/it/help/resource/type/html.html b/lang/it/help/resource/type/html.html deleted file mode 100644 index 9eab9c96139..00000000000 --- a/lang/it/help/resource/type/html.html +++ /dev/null @@ -1,7 +0,0 @@ -

                Pagina HTML

                - -
                  -

                  Questo tipo risorsa permette facilemte di creare una pagina web completa all'inteno di Moodle, specialmente quando si usa l'editor visuale HTML (WYSIWYG).

                  - -

                  La pagina salvata nella base dati, non in un file, si ha molta libertˆ nell'utilizzare qualsiasi cosa ti piaccia utilizzando l'HTML, incluso Javascript.

                  -
                diff --git a/lang/it/help/resource/type/label.html b/lang/it/help/resource/type/label.html deleted file mode 100644 index 5f57b34bee0..00000000000 --- a/lang/it/help/resource/type/label.html +++ /dev/null @@ -1,6 +0,0 @@ -

                Etichette

                - -
                  -

                  Le etichette sono un po' diverse dalle altre risorse perchŽ esse sono testo e immagini che sono attualmente incluse direttamente insieme i colleganti alle attivitˆ nella pagina del corso.

                  -
                - diff --git a/lang/it/help/resource/type/text.html b/lang/it/help/resource/type/text.html deleted file mode 100644 index e9427dc249a..00000000000 --- a/lang/it/help/resource/type/text.html +++ /dev/null @@ -1,10 +0,0 @@ -

                Pagina di testo

                - - diff --git a/lang/it/help/resource/types.html b/lang/it/help/resource/types.html deleted file mode 100644 index 1b70d545680..00000000000 --- a/lang/it/help/resource/types.html +++ /dev/null @@ -1,4 +0,0 @@ -

                Tipi di risorsa

                - -

                Moodle gestisce una gamma di tipi di risorse diverse che permettono l'inserimento di tutti i tipi di contenuti web nei vostri corsi.

                - diff --git a/lang/it/help/uploadusers.html b/lang/it/help/uploadusers.html index e78018a21fb..4da29c8c080 100755 --- a/lang/it/help/uploadusers.html +++ b/lang/it/help/uploadusers.html @@ -25,7 +25,7 @@

                Ecco l'esempio di un file di importazione valido:

                -

                username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1
                -jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, 3663737, 1, Intro101, Section 1
                +

                username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1
                +jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, 3663737, 1, Intro101, Section 1
                reznort, somesecret, Trent, Reznor, reznort@someplace.edu, en_us, 6736733, 0, Advanced202, Section 3

                diff --git a/lang/it/help/wiki.html b/lang/it/help/wiki.html index 15a50dc017a..e31223ff879 100755 --- a/lang/it/help/wiki.html +++ b/lang/it/help/wiki.html @@ -1,226 +1,226 @@ -

                Come redigere pagine in formato Wiki

                - -

                -Il formato Wiki fornisce un metodo per formattare un testo un - tag intuitivi e comprensibili. Quando il testo Wiki sarà visualizzato, - si trasformerà in formato XHTML. - Il - notevole - vantaggio - del - formato - Wiki - risiede nel fatto che non è necessario imparare l'HTML per ottenere risultati - validi e che il testo che redigete rimane comprensibile anche prima della - conversione. Il formato Wiki è di fatto un'alternativa al semplice salvataggio - di file Word in formato HTML con in più la possibilità di mantenere la modificabilità - del testo direttamente on-line.

                -

                Per scrivere in formato Wiki, è sufficiente inserire del testo semplice al -quale aggiungere una serie di caratteri speciali di controllo della formattazione.

                -

                Formattazione di paragrafi

                - -

                - I paragrafi devono essere separati da almeno un'interlinea. Per aggiungere - formati ai paragrafi, aggiungete uno dei seguenti caratteri di controllo - come primo carattere della prima riga del paragrafo seguito da uno spazio -vuoto.

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                CarattereTipo di formattazione
                NessunoParagrafo normale
                >Citazione
                SpazioTesto pre formattato (Carattere Monospaced)
                %Esclude la pre formattazione ed il formato Wiki
                !#Titolo - sostituire al simbolo # i numeri da 1 a 6 per indicare la dimensione - del titolo. (1 è la più grande)
                Q.Domanda - utilizzata per migliorare la presentazione di testi contenenti - domande e risposte
                A.Risposta - vedi sopra
                - -

                Formattazione di elenchi

                - -

                Elenchi semplici possono essere realizzati inserendo caratteri speciali - seguiti da uno spazio all'inizio di ciascuna riga. L'elenco termina con una - linea vuota. Gli elenchi possono essere nidificati a piacimento.

                - - - - - - - - - - - - - - - - -
                CarattereTipo di elenco
                *Elenco puntato non ordinato
                #Elenco numerato ordinato
                :Elenco di definizioni, definizione
                ;Elenco di definizioni, testo
                - -

                Il seguente esempio di elenco nidificato:

                -
                -  * Primo elemento
                -  * Secondo elemento
                -  ## elemento nidificato 1
                -  ## elemento nidificato 2
                -  * Terzo elemento
                -

                produce il seguente risultato: -

                  -
                • Primo elemento
                • -
                • Secondo elemento
                • -
                    -
                  1. elemento nidificato 1
                  2. -
                  3. elemento nidificato 1
                  -
                • Terzo elemento -
                -

                Formattazione del testo

                - -

                La formattazione del testo consente di formattare parti di linee con stili - particolari. - Questi caratteri speciali possono essere inseriti in un qualsiasi punto del -testo ma non possono essere incrociati.

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                ExampleExampleFormatting
                *hello world*hello worldGrassetto
                /hello world/hello worldCorsivo
                +hello world+hello worldSottolineato
                -hello world-hello worldBarrato
                hello ~world~hello worldPedice
                hello ^world^hello worldApice
                "hello world"“hello world”Virgolette
                %hello world%hello worldCarattere Monospaced
                @hello world@hello worldEsempio
                - -

                Acronimi

                - -

                Per usare gli acronimi è sufficiente scrivere l'acronimo in maiuscolo seguito - dalla descrizione tra parentesi. Tra l'acronimo e la parentesi aperta non ci - devono essere spazi vuoti. Esempio:

                - -

                HTML(Hypertext Markup Language)
                HTML

                - -

                Hyper Link

                - -

                I link possono essere inseriti nel testo facendoli seguire tra parentesi con - le parole che volete compaiano. Tra il testo del link e la parentesi - aperta -non ci devono ssere spazi vuoti.

                -

                Esempio: http://www.google.com/(Cerca) sarà - convertito in Cerca.

                -

                Analogamente, per i link di posta elettronica:

                -

                nobody@example.com(Test User) sarà convertito in Test - User

                - -

                Link ai moduli di Moodle

                - -

                Se conoscete l'id di un modulo di Moodle (cercate - " ?id=nn" al termine dalla URL che punta al modulo) - e il nome del modulo, potete creare un link al modulo utilizzando - la seguente sintassi:

                - -

                NomeDelModulo:nn(Descrizione)

                -

                per esempio, risorsa:36(Una pagina) forum:10(Vai al forum)

                - -

                Link alle immagini di Moodle

                - -

                E' possibile inserire immagini in qualsiasi punto del testo Wiki. - E' necessario eseguire preventivamante l'upload delle immagini e tenere nota - del percorso all'interno dell'area di upload.
                - Sintassi:

                -

                /..percorso del file..(testo alternativo)

                - -

                Per esempio: /mypics/graphic.jpg(Immagine dello staff)

                - -

                Link ai file di Moodle

                - -

                Analogamante alla immagini, è possibile creare link ai file. Anche i file -devono essere preventivamante caricati nell'area di upload.
                -Sintassi:

                - -

                file:..percorso del file(testo del link)

                - -

                Per esempio, file:/pdfs/moodle.pdf(Informazioni su Moodle)

                - -

                Formattazione automatica

                - -

                Molte espressioni di uso comune sono convertite in XHTML automaticamante. -Le principali sono:

                - -
                  -
                • HTTP link sono convertiti in link attivi -
                • ..., (R), (TM), (C), 1/4, 1/2, 3/4 sono convertiti nell'opportuno carattere - corrispondente. -
                • numeri x numeri si converte nel giusto simbolo di moltiplicazione -
                • una linea che iniza con almeno quattro trattini è convertita in una linea - orizzontale. -
                - -

                Controllo ortografico (Sperimentale)

                - -

                Per attivare il controllo ortografico, potete inserire le seguente linea di - testo riportata sotto. Tutto il testo che segue la linea sarà controllato. -

                -!SPELL:language_code:language_variant
                -
                -Examples:
                -!SPELL:en:british
                -!SPELL:sp
                -
                - -

                "language_code" deve essere sostituito dal codice della lingua desiderata - (e.g., EN, FR etc),
                " language_variant" (insieme ai due punti) è facoltativo - e può assumere i valori, nel caso di language_code= EN, "american", "british", - o "canadian".

                - -

                Le parole non riconosciute sono evidenziate e potete valutare i suggerimenti -posizionando il mouse sopra la parola.

                - -

                NOTA: il controllo ortografico utilizza le librerie pspell. - Queste librerie sono necessarie così come è necessario disporre nel proprio - server del dizionario della lingua che si intende utilizzare. In - mancanza, il controllo ortografico non potrà funzionare. Il controllo ortografico - non -è supportato in Windows.

                +

                Come redigere pagine in formato Wiki

                + +

                +Il formato Wiki fornisce un metodo per formattare un testo con un + tag intuitivi e comprensibili. Quando il testo Wiki sarà visualizzato, + si trasformerà in formato XHTML. + Il + notevole + vantaggio + del + formato + Wiki + risiede nel fatto che non è necessario imparare l'HTML per ottenere risultati + validi e che il testo che redigete rimane comprensibile anche prima della + conversione. Il formato Wiki è di fatto un'alternativa al semplice salvataggio + di file Word in formato HTML con in più la possibilità di mantenere la modificabilità + del testo direttamente on-line.

                +

                Per scrivere in formato Wiki, è sufficiente inserire del testo semplice al +quale aggiungere una serie di caratteri speciali di controllo della formattazione.

                +

                Formattazione di paragrafi

                + +

                + I paragrafi devono essere separati da almeno un'interlinea. Per aggiungere + formati ai paragrafi, aggiungete uno dei seguenti caratteri di controllo + come primo carattere della prima riga del paragrafo seguito da uno spazio +vuoto.

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                CarattereTipo di formatatzione
                NessunoParagrafo normale
                >Citazione
                SpazioTesto pre formattato (Carattere Monospaced)
                %Esclude la pre formattazione ed il formato Wiki
                !#Titolo - sostituire al simbolo # i numeri da 1 a 6 per indicare la dimensione + del titolo. (1 è la più grande)
                Q.Domanda - utilizzata per migliorare la presentazione di testi contenenti + domande e risposte
                A.Risposta - vedi sopra
                + +

                Formattazione di elenchi

                + +

                Elenchi semplici possono essere realizzati inserendo caratteri speciali + seguiti da uno spazio all'inizio di ciascuna riga. L'elenco termina con una + linea vuota. Gli elenchi possono essere nidificati a piacimento.

                + + + + + + + + + + + + + + + + +
                CarattereTipo di elenco
                *Elenco puntato non ordinato
                #Elenco numerato ordinato
                :Elenco di definizioni, definizione
                ;Elenco di definizioni, testo
                + +

                Il seguente esempio di elenco nidificato:

                +
                +  * Primo elemento
                +  * Secondo elemento
                +  ## elemento nidificato 1
                +  ## elemento nidificato 2
                +  * Terzo elemento
                +

                produce il seguente risultato: +

                  +
                • Primo elemento
                • +
                • Secondo elemento
                • +
                    +
                  1. elemento nidificato 1
                  2. +
                  3. elemento nidificato 1
                  +
                • Terzo elemento +
                +

                Formattazione del testo

                + +

                La formattazione del testo consente di formattare parti di linee con stili + particolari. + Questi caratteri speciali possono essere inseriti in un qualsiasi punto del +testo ma non possono essere incrociati.

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                ExampleExampleFormatting
                *hello world*hello worldGrassetto
                /hello world/hello worldCorsivo
                +hello world+hello worldSottolineato
                -hello world-hello worldBarrato
                hello ~world~hello worldPedice
                hello ^world^hello worldApice
                "hello world"“hello world”Virgolette
                %hello world%hello worldCarattere Monospaced
                @hello world@hello worldEsempio
                + +

                Acronimi

                + +

                Per usare gli acronimi è sufficiente scrivere l'acronimo in maiuscolo seguito + dalla descrizione tra parentesi. Tra l'acronimo e la parentesi aperta non ci + devono essere spazi vuoti. Esempio:

                + +

                HTML(Hypertext Markup Language)
                HTML

                + +

                Hyper Link

                + +

                I link possono essere inseriti nel testo facendoli seguire tra parentesi con + le parole che volete compaiano. Tra il testo del link e la parentesi + aperta +non ci devono ssere spazi vuoti.

                +

                Esempio: http://www.google.com/(Cerca) sarà + convertito in Cerca.

                +

                Analogamente, per i link di posta elettronica:

                +

                nobody@example.com(Test User) sarà convertito in Test + User

                + +

                Link ai moduli di Moodle

                + +

                Se conoscete l'id di un modulo di Moodle (cercate + " ?id=nn" al termine dalla URL che punta al modulo) + e il nome del modulo, potete creare un link al modulo utilizzando + la seguente sintassi:

                + +

                NomeDelModulo:nn(Descrizione)

                +

                per esempio, risorsa:36(Una pagina) forum:10(Vai al forum)

                + +

                Link alle immagini di Moodle

                + +

                E' possibile inserire immagini in qualsiasi punto del testo Wiki. + E' necessario eseguire preventivamante l'upload delle immagini e tenere nota + del percorso all'interno dell'area di upload.
                + Sintassi:

                +

                /..percorso del file..(testo alternativo)

                + +

                Per esempio: /mypics/graphic.jpg(Immagine dello staff)

                + +

                Link ai file di Moodle

                + +

                Analogamante alla immagini, è possibile creare link ai file. Anche i file +devono essere preventivamante caricati nell'area di upload.
                +Sintassi:

                + +

                file:..percorso del file(testo del link)

                + +

                Per esempio, file:/pdfs/moodle.pdf(Informazioni su Moodle)

                + +

                Formattazione automatica

                + +

                Molte espressioni di uso comune sono convertite in XHTML automaticamante. +Le principali sono:

                + +
                  +
                • HTTP link sono convertiti in link attivi +
                • ..., (R), (TM), (C), 1/4, 1/2, 3/4 sono convertiti nell'opportuno carattere + corrispondente. +
                • numeri x numeri si converte nel giusto simbolo di moltiplicazione +
                • una linea che iniza con almeno quattro trattini è convertita in una linea + orizzontale. +
                + +

                Controllo ortografico (Sperimentale)

                + +

                Per attivare il controllo ortografico, potete inserire le seguente linea di + testo riportata sotto. Tutto il testo che segue la linea sarà controllato. +

                +!SPELL:language_code:language_variant
                +
                +Examples:
                +!SPELL:en:british
                +!SPELL:sp
                +
                + +

                "language_code" deve essere sostituito dal codice della lingua desiderata + (e.g., EN, FR etc),
                " language_variant" (insieme ai due punti) è facoltativo + e può assumere i valori, nel caso di language_code= EN, "american", "british", + o "canadian".

                + +

                Le parole non riconosciute sono evidenziate e potete valutare i suggerimenti +posizionando il mouse sopra la parola.

                + +

                NOTA: il controllo ortografico utilizza le librerie pspell. + Queste librerie sono necessarie così come è necessario disporre nel proprio + server del dizionario della lingua che si intende utilizzare. In + mancanza, il controllo ortografico non potrà funzionare. Il controllo ortografico + non +è supportato in Windows.

                diff --git a/lang/it/hotpot.php b/lang/it/hotpot.php deleted file mode 100644 index 6c6e0af84ab..00000000000 --- a/lang/it/hotpot.php +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/lang/it/install.php b/lang/it/install.php deleted file mode 100644 index 88ac97f18bf..00000000000 --- a/lang/it/install.php +++ /dev/null @@ -1,93 +0,0 @@ -moodleadmin

                -Questo sistemerà i collegamenti di amministrazione in Moodle.'; -$string['caution'] = 'Attenzione'; -$string['chooselanguage'] = 'Scegli la lingua'; -$string['compatibilitysettings'] = 'Controllo impostazioni PHP...'; -$string['configfilenotwritten'] = 'Il sistema di installazione non è in grado di creare il file config.php contenente le vostre impostazioni, probabilmente perché la directory di Moodle non è scrivibile. È possbile copiare manualmente il codice seguente in un file chiamato config.php nella directory principale di Moodle.'; -$string['configfilewritten'] = 'Il config.php è stato creato correttamente'; -$string['configurationcomplete'] = 'Configurazione completata'; -$string['database'] = 'Base di dati'; -$string['databasesettings'] = '

                È necessario configurare la base dati dove la maggior parte dei dati di Moodle vengono salvati. Questa base di dati deve essere già stata creata e un utente con password deve essere stato creato per accedervi.

                -Tipo: es. mysql o postgres7
                -Server della base dati: es. localhost o db.isp.com
                -Base di dati:il nome della base dati creata es. moodle
                -Utente:un utente accreditato sulla base dati
                -Password:la password dell\'utente accreditato
                -Prefisso tabelle:prefisso opzionale utilizza in tutti nomi delle tabelle es. mld_'; -$string['dataroot'] = 'Directory dati'; -$string['datarooterror'] = 'La \'Directory dati\' specificata non può essere trovata o creata. È possibile correggere il percorso o crearla manualmente.'; -$string['dbconnectionerror'] = 'Non è possibile connettersi alla base dati specificata. Controllare le impostazioni della base dati.'; -$string['dbcreationerror'] = 'Errore durante la creazione della base dati. Non è possibile creare una base dati con le impostazioni fornite.'; -$string['dbhost'] = 'Server della base dati'; -$string['dbpass'] = 'Password'; -$string['dbprefix'] = 'Prefisso tabelle'; -$string['dbtype'] = 'Tipo'; -$string['directorysettings'] = '

                Confermare le locazioni di questa installazione di Moodle.

                -

                Indirizzo Web: -Specificare l\'indirizzo completo dove Moodle sarà locato. -Se il vostro sito web è accessibile tramite indirizzi multipli scegliere quello più naturale per gli studenti. Non aggiungere lo slash(/) finale.

                -

                Directory di Moodle: -Specificare il percorso completo per questa installazione. Controllare che la capitalizzazione sia corretta.

                -

                Directory dati: -È necessario un posto dove Moodle può salvare i file inviati. Questa directory deve essere leggibile e SCRIVIBILE dall\'utente del server web (normalmente \'nobody\' o \'apache\'), ma non dovrebbe essere direttamente accessibile via web.

                '; -$string['dirroot'] = 'Directory di Moodle'; -$string['dirrooterror'] = 'L\'impostazione \'Directory di Moodle\' sembra essere scorretta - non è possibile trovare un\'installazione di Moodle nel percorso specificato. Il valore sotto è stato ripristinato.'; -$string['download'] = 'Download'; -$string['fail'] = 'Fallito'; -$string['fileuploads'] = 'Invio file'; -$string['fileuploadserror'] = 'Questo deve essere impostato a on'; -$string['fileuploadshelp'] = '

                L\'invio dei file sembra essere disabilitato sul vostro server.

                -

                Moodle può essere installato, ma senza questa caratteristica, non si potrà inviare file per i corsi o nuove immagini degli utenti.

                -

                Per abilitare l\'invio dei file è necessario modificare il file php.ini sul vostro sistema e cambiare l\'impostazione file_uploads a \'on\'.

                '; -$string['gdversion'] = 'Versione GD'; -$string['gdversionerror'] = 'La libreria GD deve essere presente per elaborare e creare immagini'; -$string['gdversionhelp'] = '

                Sul vostro server sembra non essere installato il supporto per le librerie GD.

                -

                GD è una libreria che è richiesta dal PHP per permettere a Moodle di elaborare le immagini (come le icone dei profili utente) e creare nuove immagini (come i grafici dei log). Moodle continuerà a funzionare senza GD - queste caratteristiche non saranno disponibili sulla vostra installazione.

                -

                Per aggiungere GD al PHP su sistemi operativi Unix/Linux, compilare il PHP utilizzando l\'opzione --with-gd.

                -

                Su Windows normalmente è possibile modificare il file php.ini e togliere il commento dalla linea che contiene libgd.dll.

                '; -$string['installation'] = 'Installazione'; -$string['magicquotesruntime'] = 'Magic Quotes Run Time'; -$string['magicquotesruntimeerror'] = 'Questo deve essere impostato a off'; -$string['magicquotesruntimehelp'] = '

                L\'opzione Magic Quotes Run Time deve essere impostata a off per permettere a Moodle di funzionare correttamente.

                -

                Normalmente questa è impostata a off ... controllate l\'impostazione magic_quotes_runtime nel file php.ini.

                -

                Se non vi è possibile modificare il file php.ini, è possibile inserire la linea seguente in un file chiamato .htaccess nella Directory di Moodle:

                php_value magic_quotes_runtime Off
                -

                '; -$string['memorylimit'] = 'Limite memoria'; -$string['memorylimiterror'] = 'Il limite di memoria del PHP è impostato a un valore basso ... potrebbero verificarsi probremi in futuro.'; -$string['memorylimithelp'] = '

                Il limite della memoria assegnata a PHP attualmente è $a.

                -

                Questo può dare problemi a Moodle in futuro, specialmente se avete molti moduli abilitati e molti utenti.

                -

                Vi raccomandiamo di impostare il PHP con un limite più alto se possibile, ad esempio 16M. -Ci sono diversi modi che potete provare: -

                  -
                1. Se possibile, ricompilare il PHP con l\'opzione --enable-memory-limit. -Questo permetterà a Moodle di impostare il limite di memoria da solo.
                2. -
                3. Se avete accesso al file php.ini, è possibile modificare l\'impostazione memory_limit a un valore tipo 16M. Se non avete l\'accesso potete chiedere al vostro amministratore di sistema di farlo.
                4. -
                5. Su alcuni server PHP è possibile creare un file .htaccess nella Directory di Moodle che contenga questa linea: -
                  php_value memory_limit 16M
                  -

                  Tuttavia, su alcuni server questo impedirà a tutte le pagine PHP di funzionare (vedrete degli errori quando visualizzerete le pagine) cosi dovrete rimuovere il file .htaccess.

                '; -$string['mysqlextensionisnotpresentinphp'] = 'Il PHP non è stato correttamente configurato con l\'estensione di MySQL. Controllate il vostro php.ini o ricompilate il PHP.'; -$string['pass'] = 'Passato'; -$string['phpversion'] = 'Versione PHP'; -$string['phpversionerror'] = 'La versione del PHP deve essere come minimo la 4.1.0'; -$string['phpversionhelp'] = '

                Moodle richiede come minimo la versione 4.1.0 del PHP.

                -

                Attualmente state utilizzando la versione $a

                -

                È necessario aggiornare il PHP o spostarsi su un server con una versione di PHP più recente!

                '; -$string['safemode'] = 'Safe Mode'; -$string['safemodeerror'] = 'Moodle può avere problemi con il safemode impostato a on'; -$string['safemodehelp'] = '

                Moodle può avere diversi problemi con il paramentro safemode impostato a on, non ultima l\'impossibilità di creare nuovi file.

                -

                Safemode è normalmente abiltato da paranoici web server pubblici, se è cosi l\'unica soluzine è trovare un nuovo web server per il tuo sito di Moodle.

                -

                È possibile a continuare l\'installazione se si vuole, ma aspettatevi alcuni problemi dopo.

                '; -$string['sessionautostart'] = 'Session Auto Start'; -$string['sessionautostarterror'] = 'Questo deve essere off'; -$string['sessionautostarthelp'] = '

                Moodle richiede il supporto delle sessioni e non funziona senza.

                -

                Le sessioni possono essere abilitate nel file php.ini ... cerca il parametro session.auto_start.

                '; -$string['wwwroot'] = 'Indirizzo web'; -$string['wwwrooterror'] = 'L\'indirizzo web sembra non essere valido - questa installazione di Moodle non sembra esere li.'; - -?> diff --git a/lang/it/journal.php b/lang/it/journal.php index 516c161fad3..d73eaeacf8f 100644 --- a/lang/it/journal.php +++ b/lang/it/journal.php @@ -9,11 +9,13 @@ $string['editingended'] = "Il tempo a disposizione per le modifiche $string['editingends'] = "Il tempo a sisposizione per le modifiche termina"; $string['entries'] = "Annotazioni"; $string['feedbackupdated'] = "Valutazione aggiornata per \$a annotazioni"; -$string['journalmail'] = "\$a->teacher ha valutato la tua annotazione per '\$a->journal'. -Puoi vedere la valutazione allegata alla tua annotazione: +$string['journalmail'] = "\$a->teacher ha valutato la tua annotazione per '\$a->journal'. + +Puoi vedere la valutazione allegata alla tua annotazione: + \$a->url "; -$string['journalmailhtml'] = "\$a->teacher ha valutato la tua annotazione per '\$a->journal'.

                -Puoi vedere la valutazione allegata alla tua url\">annotazione"; +$string['journalmailhtml'] = "\$a->teacher ha valutato la tua annotazione per '\$a->journal'.

                +Puoi vedere la valutazione allegata alla tua url\\\">annotazione"; $string['journalname'] = "Nome del diario"; $string['journalquestion'] = "Domanda del diario"; $string['journalrating1'] = "Non soddisfacente"; diff --git a/lang/it/lesson.php b/lang/it/lesson.php index ef1e8d1a1bd..ae358c61694 100644 --- a/lang/it/lesson.php +++ b/lang/it/lesson.php @@ -1,5 +1,5 @@ (lascia vuoto per salvarli nella directory standard)'; -$string['backuptakealook'] = 'Si prega di controllare i log della copia di sicurezza in: $a'; $string['backupuserfileshelp'] = 'Scegli quali file utente (es immagini profilo) devono essere incluse nelle copie di sicurezza automatiche'; $string['backupusershelp'] = 'Scegli se includere tutti gli utenti del sito o solo gli utenti iscritti a ogni corso.'; $string['backupversion'] = 'Versione copia di sicurezza'; -$string['blockconfiga'] = 'Configurazione del blocco $a'; -$string['blockconfigbad'] = 'Questo blocco non è stato implementato correttamente e così non è possibile fornire un\'interfaccia di configurazione.'; -$string['blockconfigin'] = 'Corso: Configurazione di un blocco in $a'; $string['blockdeleteconfirm'] = 'Stai per cancellare completamente il blocco \'$a\'. Questo cancellerà completamente tutto quello che è associato a questo blocco nella base dati. Sei SICURO di voler continuare?'; $string['blockdeletefiles'] = 'Tutti i dati associati al blocco \'$a->block\' sono stati cancellati dalla base dati. Per completare la cancellazione (e prevenire che il blocco si ri-installi da solo), devi cancellare questa directory dal tuo server: $a->directory'; $string['blocks'] = 'Blocchi'; @@ -141,35 +133,20 @@ $string['checkingsections'] = 'Controllo sezioni'; $string['checklanguage'] = 'Controlla lingua'; $string['choose'] = 'Scegli'; $string['choosecourse'] = 'Scegli un corso'; -$string['chooseenrolmethod'] = 'Metodo principale di registrazione'; $string['chooselivelogs'] = 'Oppure osserva le attività in corso'; $string['chooselogs'] = 'Scegli quali logs vuoi visualizzare'; $string['choosereportfilter'] = 'Scegli un filtro per il rapporto'; $string['choosetheme'] = 'Scegli un tema'; $string['chooseuser'] = 'Scegli un utente'; $string['city'] = 'Paese/città'; -$string['clambroken'] = 'Il vostro amministratore ha abilitato il controllo dei virus per i file inviati ma ha sbagliato qualcosa.
                Il vostro file NON è stato correttamente inviato. Il vostro amministratore è stato avvertito tramite mail in modo che possa correggere il problema.
                Provate ad inviare il file più tardi. '; -$string['clamdeletedfile'] = 'Il file è stato cancellato'; -$string['clamdeletedfilefailed'] = 'Il file non può essere cancellato'; -$string['clamemailsubject'] = '$a :: Notifica Clam AV'; -$string['clamfailed'] = 'Clam AV ha avuto problemi durante l\'esecuzione. Il messaggio d\'errore era: $a. Qui trovate l\'output di Clam:'; -$string['clamlost'] = 'Moodle è configurato per eseguire Clam all\'invio dei file, ma il percorso fornito per Clam AV, $a, non è corretto.'; -$string['clamlostandactinglikevirus'] = 'In aggiunta, Moodle è impostato in modo che se Clam ha problemi durante l\'esecuzione, i file siano trattati come virus. Questo essenzialmente significa che nessuno studente può inviare file correttamente finché questo non è corretto.'; -$string['clammovedfile'] = 'Il file è stato spostato nella cartella di quarantena specificata, la nuova locazione è $a'; -$string['clammovedfilebasic'] = 'Il file è stato spostato in una cartella di quarantena.'; -$string['clamquarantinedirfailed'] = 'Non è possibile spostare il file nella cartelladi quarante specificata, $a. E\' necessario correggere l\'impostazione in modo che i file infetti vengano cancellati.'; -$string['clamunknownerror'] = 'Clam ha segnalato un errore sconosciuto.'; $string['cleaningtempdata'] = 'Cancellazione dati temporanei'; $string['clicktochange'] = 'clicca per cambiare'; $string['closewindow'] = 'Chiudi questa finestra'; $string['comparelanguage'] = 'Confronta ed modifica la lingua corrente'; $string['complete'] = 'Completo'; $string['configallowunenroll'] = 'Se selezioni \'Si\', gli studenti possono disiscriversi da soli dai corsi quando preferiscono. Altrimenti questo può essere fatto solamente dagli insegnanti e dagli amministratori.'; -$string['configallusersaresitestudents'] = 'Riguardo alle attività nella pagina principale, TUTTI gli utenti devo essere considerati studenti? Se la risposta è \"Si\" tutti gli utenti confermati potranno parteciapre come studenti a queste attività. Se la risposta è \"No\", allora solo gli utenti che sono già studenti di almeno un corso potranno prendere part alle attività della pagina principale. Solo gli amministratori e gli insegnati assegnati possono gestire come insegnati le attività della pagina pricipale.'; $string['configautologinguests'] = 'I visitatori devono essere registrati automaticamente come ospiti quando entrano nei corsi con accesso agli ospiti?'; -$string['configcachetext'] = 'Per i siti più grossi o i siti che usano filtri di testo, questa impostazione può velocizzare molto le cose. Copie dei testi saranno mantenute nella loro forma modificata per il tempo qui specificato. Un tempo troppo breve potrebbe rallentare il funzionamento, ma un tempo troppo lungo potrebbe significare attendere molto tempo prima che il testo venga aggiornato (ad esempio, con i nuovi collegamenti)'; -$string['configclamactlikevirus'] = 'Tratta i file come virus'; -$string['configclamdonothing'] = 'Tratta i file come corretti'; +$string['configcachetext'] = 'Per i siti grandi o i siti che usa filtri di testo, questa impostazione può velocizzare molto le cose. Copie dei testi saranno mantenute nella loro forma elaborata per il tempo qui specificato. Impostandolo troppo breve potrebbe rallentare un po\' le cose, ma impostandolo troppo lungo potrebbe significare attendere molto tempo prima che il testo venga aggiornato (i nuovi collegamenti, per esempio)'; $string['configcountry'] = 'Se scegli uno stato qui, questo verrà proposto di default. Per obbligare un utente a scegliere il proprio stato, lascialo vuoto.'; $string['configdebug'] = 'Se si attiva questa opzione, Si incrementerà il livello di rapporto di errore e saranno stampati più avvertimenti. Questo è utile solo per sviluppatori.'; $string['configdeleteunconfirmed'] = 'Se viene utilizzata l\'autenticazione via mail, questo è il periodo nel quale una risposta dell\'utente viene accettata. Dopo questo periodo, le registrazioni non confermate sono cancellate.'; @@ -179,7 +156,7 @@ $string['configenablerssfeeds'] = 'Questa opzione abilita l\'utilizzo degli RSS $string['configenablerssfeedsdisabled'] = 'Questo non è disponibile perché gli RSS sono disabilitati in tutto il Sito. Per abilitali, vai a Configura variabili sotto Amministrazione Configurazione.'; $string['configerrorlevel'] = 'Scegli il numero di messaggi di avvertimento PHP che vuoi siano mostrati. Questa Normale è, di solito la scelta migliore.'; $string['configextendedusernamechars'] = 'Abilitando questa impostazione si permette agli utenti di utilizzare qualunque carattere nei loro nomi utente (Nota che questo no influenza il loro nome attuale). Il valore preimpostato è \"falso\" che restrige all\'utilizzo solo dei caratteri alfanumerici.'; -$string['configfilteruploadedfiles'] = 'L\'abilitazione di questa impostazione farà applicare i filtri su tutti i file HTML e di testo caricati, prima di visualizzarli.'; +$string['configfilteruploadedfiles'] = 'Abilitando questa impostazione farà elaborare da Moodle con i filtri tutti i file HTML e di testo prima di visualizzarli.'; $string['configforcelogin'] = 'Normalmente, la pagina principale del sito e la lista dei corsi (ma non i corsi) possono essere visualizzate senza registrarsi al sito. Se vuoi forzare le persone a registrarsi prima di poter fare QUALUNQUE COSA sul sito, allore devi abilitare questa impostazione.'; $string['configforceloginforprofiles'] = 'Abilitando questa impostazione si forza la gente a collegarsi con un utente reale (non un ospite) prima di permettergli di vedere le pagine dei profili utente. La preimpostazione è disabilitato (\"falso\") nella prospettiva di permettere agli studenti di leggere le informazioni sugli insegnati di ogni corso, ma questo permette di farlo anche ai motori di ricerca.'; $string['configframename'] = 'Se incorporate Moodle in un web frame, mettete il nome del frame qui. Altrimenti questo valore può rimanere a \'_top\''; @@ -199,7 +176,6 @@ $string['configlangdir'] = 'Nella scrittura di molte lingue straniere si procede $string['configlanglist'] = 'Lascia vuoto questo campo per permettere agli utenti di scegliere tra tutti i linguaggi disponibili in Moodle. Comunque, puoi accorciare il menu dei linguaggi inserendo l\'elenco di linguaggi che vuoi separati da virgole. Per esempio: en,es_es,fr,it'; $string['configlangmenu'] = 'Scegli se mostrare o no il menu dei linguaggi nella home page, nella pagina di login ecc. Questo non modificherà la possibilità degli utenti di sceglire il linguaggio preferito nel proprio profilo. '; $string['configlocale'] = 'Scegli una data locale - Questa opzione avrà effetto sulla visualizzazione delle date. È necessario che tu abbia la data locale del server su cui risiede il tuo sistema operativo correttamente configurata. Se non sai quale scegliere, lascia questo campo vuoto.'; -$string['configloginhttps'] = 'Abilitando questo Moodle utilizzerà una connessione sicura https per la pagina di login (fornendo un accesso sicuro), successivamente tornerà ad utilizzare i normali URL http per maggior velocità. ATTENZIONE: questa impostazione RICHIEDE che l\'HTTPS sia appositamente abilitato sul server web - altrimenti POTRESTE CHIUDERVI FUORI DAL VOSTRO SITO.'; $string['configloglifetime'] = 'Questo specifica per quanto tempo vuoi mantenere i log delle attività degli utenti. I log più vecchi di questo tempo sono automaticamente cancellati. E\' meglio mantenere i log più a lungo possibile, nel caso ti servissero, ma se hai un server molto utilizzato e hai riscontrato problemi, potresti preferire che vengano mantenuti per meno tempo.'; $string['configlongtimenosee'] = 'Se gli studenti non hanno avuto accesso per un periodo molto prolungato, allora essi saranno automaticamente cancellati dal corso. Questo parametro specifica quale deve essere il tempo limite.'; $string['configmaxbytes'] = 'Questo specifica la dimensione massima dei file che sono inviati per tutto il sito. Questa impostazione è limitata dall\'impostazione PHP di upload_max_filesize e dall\'impostazione Apache di LimitRequestBody. In alternativa, la dimensione massima può essere scelta a livello dei corsi o dei moduli. '; @@ -208,11 +184,10 @@ $string['confignoreplyaddress'] = 'Le mail a volte sono spedite a nome di un ute $string['confignotifyloginfailures'] = 'Se sono stati registrati accessi falliti, una mail di notifica può essere spedita. Chi deve ricevere queste notifiche?'; $string['confignotifyloginthreshold'] = 'Se la notifica sugli accessi falliti è attiva, dopo quanti tentativi falliti per utente o per indirizzo IP la notifica deve essere inviata?'; $string['configopentogoogle'] = 'Se abilitate questa impostazione, Google potrà entrare nel vostro sito come Ospite. Inoltre, chi arriverà al vostro sito tramite Google verrà automaticamente autenticato come Ospite. Nota che questa impostazione fornisce un accesso trasparente solo ai corsi che già permettono l\'accesso agli ospiti.'; -$string['configproxyhost'] = 'Se questo server necessita di un proxy (ad esempio un firewall) per accedere a Internet, allora indicare qui il nome del server (hostname) e il numero della porta di accesso. In caso contrario, lascia vuoto questo campo.'; +$string['configproxyhost'] = 'Se questo server necessita di un proxy (ad esempio un firewall) per accedere a Internet, allora indicare qui il nome del server (hostname) e il numero della porta di accesso. In caso contrario, lascia vuoto questo campo.'; $string['configsecureforms'] = 'Moodle può utilizzare un ulteriore livello di sicurezza quando accetta dati da web form. Se questo é abilitato, la variabile del browser HTTP_REFERER é confrontata con l\'indirizzo del form attuale. In alcuni rari casi questo può causare problemi se l\'utente sta utilizzando un firewall (es. Zonealarm) configurato per controllare HTTP_REFERER nel suo traffico web. Uno dei sintomi é rimanere \'incollato\' a un form. Se gli utenti hanno avuto problemi con la pagina di login (per esempio) potresti voler disabilitare questo impostazione, questo può esporre il tuo sito ad attacchi di password per forza bruta. Se sei in dubbio, lascialo a \'Si\'.'; $string['configsessioncookie'] = 'Questa impostazione personalizza il nome dei cookie usati per le sessoni di Moodle. Questa impostazione è opzionale, ed è utile solamente se più di una copia di Moodle viene esegueta sullo stesso sito web.'; $string['configsessiontimeout'] = 'Se le persone loggate in questo sito sono inattive da molto tempo (senza caricare pagine) viene automaticamente terminata la loro sessione. Questa variabile specifica quanto deve essere questo tempo.'; -$string['configshowsiteparticipantslist'] = 'Tutti questi studenti del sito e insegnati del sito saranno mostrati nella lista dei partecipanti. Chi può vedere la lista di questi partecipanti?'; $string['configslasharguments'] = 'Files (immagini, uploads etc) sono trasmessi attraverso uno script usando gli \'slash arguments\' (la seconda opzione a fianco). Questo metodo permette un \"cache\" più facile in molti browsers. Sfortunantamente alcuni server PHP non permettono questo metodo. Perciò se avete problemi nel visualizzare file o immagini salvate (ad esempio immagini dell\'utente), scegli la prima opzione.'; $string['configsmtphosts'] = 'Impostare il nome intero di uno o più servers locali SMTP che Moodle dovrebbe usare (esempio \'mail.a.com\' oppure \'mail.a.com;mail.b.com\'). Se lasci questo campo vuoto, Moodle userà il metodo di spedizione della posta predefinito utilizzando il programma di posta del PHP (di default).'; @@ -236,7 +211,6 @@ $string['copyinguserfiles'] = 'Copia dei file utente'; $string['copyingzipfile'] = 'Copia dei file compressi'; $string['copyrightnotice'] = 'Informazioni sul copyright'; $string['cost'] = 'Costo'; -$string['costdefault'] = 'Costo standard'; $string['country'] = 'Paese'; $string['course'] = 'Corso'; $string['courseavailable'] = 'Questo corso é disponibile agli studenti'; @@ -269,7 +243,6 @@ $string['creatingsections'] = 'Creazione sezioni'; $string['creatingtemporarystructures'] = 'Creazione strutture temporanee'; $string['creatingusers'] = 'Creazione utenti'; $string['creatingxmlfile'] = 'Creazione file XML'; -$string['currency'] = 'Valuta'; $string['currentcourseadding'] = 'Corso attuale, aggiunta dati'; $string['currentcoursedeleting'] = 'Corso attuale, cancellazione'; $string['currentlanguage'] = 'Lingua corrente'; @@ -310,15 +283,12 @@ $string['deleted'] = 'Cancellato'; $string['deletedactivity'] = 'Cancellato $a'; $string['deletedcourse'] = '$a è stato completamente cancellato'; $string['deletednot'] = 'Non è stato possibile cancellare $a !'; -$string['deleteselected'] = 'Cancella i selezionati'; +$string['deleteselected'] = 'Cnacella i selezionati'; $string['deletingcourse'] = 'Cancellazione $a'; $string['deletingexistingcoursedata'] = 'Cancellazione dei dati del corso esistenti'; $string['deletingolddata'] = 'Cancellazione vecchi dati'; $string['department'] = 'Dipartimento'; $string['description'] = 'Descrizione'; -$string['detailedless'] = 'Meno dettagli'; -$string['detailedmore'] = 'Più dettagli'; -$string['directorypaths'] = 'Percorsi cartelle'; $string['disable'] = 'Disabilita'; $string['displayingfirst'] = 'Solo il primi $a->count $a->things sono mostrati'; $string['displayingrecords'] = 'Mostra $a records'; @@ -332,28 +302,12 @@ $string['doyouagree'] = 'Hai letto queste condizioni e le hai accettate?'; $string['duplicate'] = 'Duplicare'; $string['duplicatinga'] = 'Duplicazione: $a'; $string['duplicatingain'] = 'Duplicazione di $a->what in $a->in'; -$string['edhelpbgcolor'] = 'Imposta il colore di sfondo dell\'area di edit.
                Valori possibili sono per esempio: #ffffff o white'; -$string['edhelpcleanword'] = 'Questa impostazione abilita o disabilita il filtro del formato Word.'; -$string['edhelpenablespelling'] = 'Abilita o disabilta il controllo ortografico. Quando abilitato aspell deve essere installato sul server.'; -$string['edhelpfontfamily'] = 'La proprietà font-family è una lista di nomi di font e/o font generici (es. serif). I nomi devono essere separati da virgole.'; -$string['edhelpfontlist'] = 'Definisce i font utilizzati nel menu a discesa dell\'editor.'; -$string['edhelpfontsize'] = 'font-size imposta la dimensione standard per i font.
                Valori possibili sono per esempio: medium, large, smaller, larger, 10pt, 11px.'; $string['edit'] = 'Modifica $a'; $string['editcoursesettings'] = 'Modifica impostazioni del corso'; $string['editfiles'] = 'Modifica i file'; $string['editgroupprofile'] = 'Modifica profilo del gruppo'; $string['editinga'] = 'Modifica di $a'; -$string['editlock'] = 'Questo valore non può essere modificato!'; $string['editmyprofile'] = 'Modifica profilo'; -$string['editorbgcolor'] = 'Colore di sfondo'; -$string['editorcleanonpaste'] = 'Pulisci HTML di Word incollandolo'; -$string['editorcommonsettings'] = 'Impostazioni tipiche'; -$string['editordefaultfont'] = 'Font standard'; -$string['editorenablespelling'] = 'Abilita controllo ortografico'; -$string['editorfontlist'] = 'Lista font'; -$string['editorfontsize'] = 'font-size standard'; -$string['editorresettodefaults'] = 'Ripristina i valori standard'; -$string['editorsettings'] = 'Impostazioni editor'; $string['editsummary'] = 'Modifica riassunto'; $string['editthisactivity'] = 'Modifica questa attività'; $string['editthiscategory'] = 'Modifica questa categoria'; @@ -370,9 +324,15 @@ Per confermare il tuo nuovo account, devi cliccare sul seguente link: In molti programmi di posta, questo dovrebbe apparire come un link colorato di blu sul quale è sufficiente cliccare. Se in questo modo non dovesse funzionare, allora taglia e incolla il link nella finestra degli indirizzi in alto nel tuo browser e premi invio. Saluti dall\'amministratore $a->admin'; $string['emailconfirmationsubject'] = '$a: conferma iscrizione'; -$string['emailconfirmsent'] = '

                Una email è stata inviata al tuo indirizzo $a

                -

                Essa contiene semplici istruzioni per completare la tua registrazione.

                -

                Se continui ad avere difficoltà contatta l\'amministrare del sito.

                '; +$string['emailconfirmsent'] = '

                Una email è stata inviata al tuo indirizzo $a + +

                contiene istruzioni per completare la tua registrazione. + +

                Se continui ad avere difficoltà contatta l\'amministrare del sito. + +

                Esso contiene delle semplici istruzioni per completare la tua registrazione. + +

                Se incontri delle difficoltà, contatta l\'amministratore del sito.'; $string['emaildigest'] = 'Tipo di raccolta email'; $string['emaildigestcomplete'] = 'Completa (giornalmente invia i messaggi completi)'; $string['emaildigestoff'] = 'Nessuna raccolta (ogni messaggio viene spedito via mail)'; @@ -388,8 +348,6 @@ $string['emailenableclick'] = 'Clicca qui per riabilitare tutte le email che son $string['emailexists'] = 'Questo indirizzo email è già esistente.'; $string['emailformat'] = 'Formato Email'; $string['emailmustbereal'] = 'Nota: il tuo indirizzo email deve essere esistente'; -$string['emailnotallowed'] = 'Gli indirizzi email di questi domini non sono ammessi ($a)'; -$string['emailonlyallowed'] = 'Questo indirizzo email non è uno di quelli ammessi ($a)'; $string['emailpasswordconfirmation'] = 'Salve, $a->firstname, @@ -415,20 +373,18 @@ $string['emailpasswordsent'] = 'Grazie per aver confermato il cambiamento di pas

                Una email contenente la tua nuova password é stata spedita al tuo indirizzo presso $a->email.

                -

                La nuova password é stata generata in modo automatico - se tu vuoi, puoi link\">cambiare la password con qualcosa che sia più facile da ricordare.'; +

                La nuova password é stata generata in modo automatico - se tu vuoi, puoi link>cambiare la password con qualcosa che sia più facile da ricordare.'; $string['enable'] = 'Abilita'; $string['encryptedcode'] = 'Codice criptato'; $string['enrolledincourse'] = 'Iscritto al corso '; $string['enrolledincoursenot'] = 'Non iscritto al corso '; -$string['enrollfirst'] = 'E\' necessario registrarsi a un corso prima di poter visualizzare le attività del sito'; $string['enrolmentconfirmation'] = 'Stai per iscriverti a questo corso.
                Sei sicuro di volerlo fare?'; $string['enrolmentkey'] = 'Chiave di accesso'; -$string['enrolmentkeyfrom'] = 'Questo corso richiede una \'chiave di accesso\' - una sola volta -
                password che dovresti ottenere da $a'; -$string['enrolmentkeyhint'] = 'Questa chiave di accesso è inesatta, riprovare, prego.
                +$string['enrolmentkeyfrom'] = 'Questo corso richiede una \'chiave di accesso\' - una sola volta -
                password che dovresti ottenere da $a'; +$string['enrolmentkeyhint'] = 'Questa chiave di accesso è inesatta, riprovare, prego.
                (Questo è un suggerimento - essa inizia con \'$a\''; $string['enrolmentnew'] = 'Nuova registrazione a $a'; -$string['enrolmentnewuser'] = '$a->user si è iscritto al corso \"$a->course\"'; $string['enrolmentnointernal'] = 'La registrazione manuale non è attualmente abilitata'; $string['enrolmentnotyet'] = 'Spiacente, non puoi accedere a questo corso fino
                $a'; $string['enrolments'] = 'Registrazioni'; @@ -452,7 +408,6 @@ $string['existingteachers'] = 'Insegnanti esistenti'; $string['failedloginattempts'] = '$a->attempts accessi falliti dall\'ultimo accesso corretto'; $string['failedloginattemptsall'] = '$a->attempts accessi falliti per $a->accounts utenti'; $string['feedback'] = 'Feedback'; -$string['file'] = 'File'; $string['filemissing'] = '$a è mancante'; $string['files'] = 'Files'; $string['filesfolders'] = 'File/Cartelle'; @@ -467,8 +422,6 @@ $string['force'] = 'Forza'; $string['forcedmode'] = 'Modo forzato'; $string['forcelanguage'] = 'Forza lingua'; $string['forceno'] = 'Non forzare'; -$string['forcepasswordchange'] = 'Forza il cambiamento della password'; -$string['forcepasswordchangehelp'] = 'Chiede al utente di cambiare la password al prossimo accesso'; $string['forgotten'] = 'Dimenticato il tuo username o la password?'; $string['format'] = 'Formato'; $string['formathtml'] = 'Formato HTML'; @@ -495,7 +448,6 @@ $string['gd1'] = 'GD 1.x $string['gd2'] = 'GD 2.x è installato'; $string['gdneed'] = 'GD deve essere installato per vedere questo grafico'; $string['gdnot'] = 'GD non è installato'; -$string['go'] = 'Vai'; $string['gpl'] = 'Copyright (C) 2001-2002 Martin Dougiamas (http://dougiamas.com) Questo programma è \"free software\"; può essere distribuito e/o modificato ai termini della Licenza Generale GNU come pubblicata dalla Free Software Foundation, versione 2, o successiva. @@ -554,7 +506,6 @@ $string['hiddensectionscollapsed'] = 'Le sezioni nascoste sono mostrate in modo $string['hiddensectionsinvisible'] = 'Le sezioni nascoste sono completamente invisibili'; $string['hide'] = 'Nascondi'; $string['hidepicture'] = 'Nascondi immagine'; -$string['hidesettings'] = 'Nascondi impostazioni'; $string['hits'] = 'Accessi'; $string['hitsoncourse'] = 'Accessi al corso $a->coursename dell\'utente $a->username'; $string['hitsoncoursetoday'] = 'Accessi di oggi al corso $a->coursename dell\'utente $a->username'; @@ -585,7 +536,6 @@ $string['institution'] = 'Istituzione'; $string['invalidemail'] = 'Indirizzo email non valido'; $string['invalidlogin'] = 'Login incorretto, riprova'; $string['ip_address'] = 'Indirizzo IP'; -$string['jump'] = 'Vai'; $string['jumpto'] = 'Vai a...'; $string['keep'] = 'Mantieni'; $string['langltr'] = 'Scrittura da sinistra a destra'; @@ -620,35 +570,33 @@ Ogni corso pu Questi sono i passi per aprire il tuo account: -

                  +
                    -
                  1. Compila il form Nuovo Utente con i tuoi dati.
                  2. +
                  3. Compila il form Nuovo Utente con i tuoi dati. -
                  4. Un email verrà spedita al tuo indirizzo di posta elettronica.
                  5. +
                  6. Un email verrà spedita al tuo indirizzo di posta elettronica. -
                  7. Leggi l\'email e clicca sul link che essa contiene.
                  8. +
                  9. Leggi l\'email e clicca sul link che essa contiene. -
                  10. La tua registrazione sarà confermata e sarai riconosciuto dal sistema come utente registrato.
                  11. +
                  12. La tua registrazione sarà confermata e sarai riconosciuto dal sistema come utente registrato. -
                  13. Adesso, seleziona il corso a cui intendi partecipare.
                  14. +
                  15. Adesso, seleziona il corso a cui intendi partecipare. -
                  16. Se è richiesta una \"chiave di accesso\" - chiedine -l\'invio al tuo insegnante. Questa chiave ti \"iscriverà\" al corso.
                  17. +
                  18. Se è richiesta una \"chiave di accesso\" - chiedine -
                  19. Puoi adesso accedere pienamente al corso. Da ora avrai solo bisogno +l\'invio al tuo insegnante. Questa chiave ti \"iscriverà\" al corso. + +
                  20. Puoi adesso accedere pienamente al corso. Da ora avrai solo bisogno del tuo username e della tua password (nel form di questa pagina) -per aver accesso al corso in cui ti sei iscritto.
                  '; -$string['loginstepsnone'] = '

                  Salve!

                  per un pieno accesso ai corsi avrai bisogno di creare un account.

                  Ciò di cui hai bisogno è di creare un username e una password e di usarli nel form di questa pagina!

                  Se qualcuno ha già scelto il tuo username, allora dovrai riprovare scegliendo un username diverso.

                  '; +per aver accesso al corso in cui ti sei iscritto.
                '; +$string['loginstepsnone'] = 'Salve!

                per un pieno accesso ai corsi avrai bisogno di creare un account.

                Ciò di cui hai bisogno è di creare un username e una password e di usarli nel form di questa pagina!

                Se qualcuno ha già scelto il tuo username, allora dovrai riprovare scegliendo un username diverso.'; $string['loginto'] = 'Accesso a $a'; $string['loginusing'] = 'Accedi qui utilizzando il tuo username e la password'; $string['logout'] = 'Esci'; $string['logs'] = 'Logs'; -$string['mailadmins'] = 'Informa amministratori'; -$string['mailstudents'] = 'Informa studenti'; -$string['mailteachers'] = 'Informa insegnanti'; -$string['mainmenu'] = 'Menu Principale'; +$string['mainmenu'] = 'Menù Principale'; $string['makeafolder'] = 'Crea una cartella'; $string['makeeditable'] = 'Se tu rendi \'$a\' modificabile via ftp (es. su server apache) allora puoi modificare questo file direttamente da questa pagina.'; $string['manageblocks'] = 'Blocchi'; @@ -804,19 +752,17 @@ $string['passwordconfirmchange'] = 'Conferma il cambiamento di password'; $string['passwordrecovery'] = 'Si per favore aiutatemi per il login'; $string['passwordsdiffer'] = 'Queste password non corrispondono'; $string['passwordsent'] = 'La password è stata spedita'; -$string['passwordsenttext'] = '

                Un email è stato spedito a $a->email.

                -

                Per favore controlla la tua posta per avere la nuova passworf

                -

                La nuova password è stata generata automaticamente, perciò potresti voler andare a -link\"> per cambiarla in una più facile da ricordare. -

                Controlla la tua casella email per la nuova password

                +$string['passwordsenttext'] = '

                Un email è stato spedito a $a->email. +

                Per favore controlla la tua posta per avere la nuova passworf +

                La nuova password è stata generata automaticamente, perciò potresti voler andare a +link> per cambiarla in una più facile da ricordare. +

                Controlla la tua casella email per la nuova password -

                La nuova password è stata generata automaticamente, quindi dirigiti a questo link +

                La nuova password è stata generata automaticamente, quindi dirigiti a questo link - link\"> + link> -per cambiarla con una che sia, per te, più facile da ricordare.

                '; -$string['pathnotexists'] = 'Il percorso non esiste sul vostro server!'; -$string['pathslasherror'] = 'Il percorso non può terminare con uno slash!!'; +per cambiarla con una che sia, per te, più facile da ricordare.'; $string['paymentinstant'] = 'Utilizza il bottone sottostante per pagare ed essere registrato in pochi minuti!'; $string['paymentrequired'] = 'Questo corso richiede un pagamento per l\'accesso.'; $string['paymentsorry'] = 'Grazie per il pagamento! Sfortunatamente il pagamento non è stato completamente elaborato, e la registrazione al corso \"$a->fullname\" non è stata completata. Per favore prova a cliccare su continua tra alcuni secondi, ma se incontri problemi allora avverti il $a->teacher o l\'amministratore del sito.'; @@ -853,7 +799,7 @@ $string['registrationinfo'] = '

                Questa pagina ti permette di registrare il tuo

                Se tu vuoi, puoi permettere al nome del tuo sito, stato e URL di essre aggiunto alla lista pubblica dei siti di Moodle.

                -

                Tutte le nuove registrazioni sono verificate manualmente prima di essere aggiunte alla lista, ma una volta aggiunta puoi aggiornare la tua registrazione (e aggiungerti alla lista pubblica) quando vuoi rispedendo questo form.

                '; +

                Tutte le nuove registrazioni sono verificate manualmente prima di essere aggiunte alla lista, ma una volta aggiunta puoi aggiornare la tua registrazione (e aggiungerti alla lista pubblica) quando vuoi rispedendo questo form.'; $string['registrationno'] = 'No, non voglio ricevere email'; $string['registrationsend'] = 'Manda le informazioni di registrazione a moodle.org'; $string['registrationyes'] = 'Si, inviatemi informazioni sulle cose importanti'; @@ -876,7 +822,6 @@ $string['restoreto'] = 'Recupera a'; $string['returningtosite'] = 'Ciao, sei ritornato?'; $string['revert'] = 'Ripristina'; $string['role'] = 'Funzione'; -$string['rss'] = 'RSS'; $string['rssarticles'] = 'Numero di ultimi articoli RSS'; $string['rsstype'] = 'RSS per questa attività'; $string['savechanges'] = 'Salva modifiche'; @@ -893,7 +838,7 @@ $string['scheduledbackupstatus'] = 'Stato copia di sicurezza programmato'; $string['search'] = 'Cerca'; $string['searchagain'] = 'Cerca ancora'; $string['searchcourses'] = 'Cerca corsi'; -$string['searchhelp'] = 'Puoi ricercare con più chiavi.
                chiave : trova ogni occorrenza di questa chiave nel testo.
                +chiave : solo le esatte corrispondenze della chiave verranno trovate.
                -chiave : non include i risultati che contengono questa chiave.'; +$string['searchhelp'] = 'Puoi ricercare con più chiavi.

                chiave : trova ogni occorrenza di questa chiave nel testo.
                +chiave : solo le esatte corrispondenze della chiave verranno trovate.
                -chiave : non include i risultati che contengono questa chiave.'; $string['searchresults'] = 'Risultati della ricerca'; $string['sec'] = 'secondo'; $string['secs'] = 'secondi'; @@ -921,7 +866,6 @@ $string['showonlytopic'] = 'Mostra solo argomento $a'; $string['showonlyweek'] = 'Mostra solo settimana $a'; $string['showrecent'] = 'Mostra le attività recenti'; $string['showreports'] = 'Mostra i rapporti delle attività '; -$string['showsettings'] = 'Mostra impostazioni'; $string['showtheselogs'] = 'Mostra questi logs'; $string['since'] = 'Dal'; $string['sincelast'] = 'dall\'ultimo accesso'; @@ -930,12 +874,9 @@ $string['siteerrors'] = 'Errori sito'; $string['sitefiles'] = 'File del sito'; $string['sitelogs'] = 'Logs del sito'; $string['sitenews'] = 'News del sito'; -$string['sitepartlist0'] = 'Devi essere un insegnate del sito per vedere la lista dei partecipanti al sito'; -$string['sitepartlist1'] = 'Devi essere un insegnate per poter vedere lalista dei partecipanti alsito'; $string['sites'] = 'Siti'; $string['sitesection'] = 'Includi una sezione'; $string['sitesettings'] = 'Impostazioni sito'; -$string['siteteachers'] = 'Insegnati del sito'; $string['size'] = 'Dimensione'; $string['sizeb'] = 'bytes'; $string['sizegb'] = 'Gb'; @@ -955,8 +896,7 @@ $string['strftimedateshort'] = '%%d %%B'; $string['strftimedatetime'] = '%%d %%B %%Y, %%H:%%M'; $string['strftimedaydate'] = '%%A, %%d %%B %%Y'; $string['strftimedaydatetime'] = '%%A, %%d %%B %%Y, %%H:%%M'; -$string['strftimedayshort'] = '%%A %%d %%B'; -$string['strftimedaytime'] = '%%a, %%H:%%M'; +$string['strftimedayshort'] = '%%A %%B %%d'; $string['strftimemonthyear'] = '%%B %%Y'; $string['strftimerecent'] = '%%d %%b, %%H:%%M'; $string['strftimerecentfull'] = '%%a, %%d %%b %%Y, %%H:%%M'; @@ -964,7 +904,6 @@ $string['strftimetime'] = '%%H:%%M'; $string['stringsnotset'] = 'Le seguenti stringhe non sono definite in $a'; $string['studentnotallowed'] = 'Spiacenti, ma non puoi accedere a questo corso come \'$a\' '; $string['students'] = 'Studenti'; -$string['studentsandteachers'] = 'Studenti e insegnati'; $string['subcategories'] = 'Sottocategorie'; $string['success'] = 'Operazione eseguita con successo'; $string['summary'] = 'Riassunto'; @@ -1003,7 +942,6 @@ $string['unenrolallstudents'] = 'Disiscrivi tutti gli studenti'; $string['unenrolallstudentssure'] = 'Sei sicuro di voler disiscrivere completamente tutti gli studenti?'; $string['unenrolme'] = 'Disiscrivimi da $a'; $string['unenrolsure'] = 'Sei sicuro di volerti disiscrivere $a da questo corso?'; -$string['unfinished'] = 'Non terminato'; $string['unknowncategory'] = 'Categoria sconosciuta'; $string['unlimited'] = 'Illimitato'; $string['unpacking'] = 'Decompressione $a'; @@ -1022,21 +960,10 @@ $string['updatinga'] = 'Aggiornamento $a'; $string['updatingain'] = 'Aggiornamento $a->what in $a->in'; $string['upload'] = 'Trasferire sul server'; $string['uploadafile'] = 'Trasferisci un file sul server'; -$string['uploadedfile'] = 'File correttamente inviato'; $string['uploadedfileto'] = 'File $a->file salvato nella directory $a->directory'; -$string['uploadedfiletoobig'] = 'Spaicente, ma questo file è troppo grande (il limite è $a byte)'; -$string['uploadfailednotrecovering'] = 'L\'invio del file è fallito perché c\'è stato un problema con uno dei file, $a->name.
                Qui c\'è il log dei problemi:
                $a->problem
                Non recuperabile.'; -$string['uploadfilelog'] = 'Log invio file per $a'; -$string['uploadformlimit'] = 'Il file inviato eccede la dimensione massima imposta ta per il modulo'; -$string['uploadlabel'] = 'Titolo:'; $string['uploadnofilefound'] = 'Non è stato trovato alcun file. Sei sicuro di averne selezionato un per l\'upload?'; $string['uploadnotallowed'] = 'Invio file non permesso'; -$string['uploadoldfilesdeleted'] = 'Il vecchi(o) file sul server è stato cancellato'; -$string['uploadpartialfile'] = 'Il file era stato solo parzialmente inviato'; $string['uploadproblem'] = 'Un problema sconosciuto si è verificato salvando il file \'$a\' (può essere troppo grande?)'; -$string['uploadrenamedchars'] = 'Il file è stato rinominato da $a->oldname a $a->newname perché conteneva caratteri non validi.'; -$string['uploadrenamedcollision'] = 'Il file è stato rinominato da $a->oldname a $a->newname perché il nome era in conflitto con un altro.'; -$string['uploadserverlimit'] = 'La dimensione del file inviato eccede la dimensione massima impostata per il server'; $string['uploadthisfile'] = 'Trasferisci questo file'; $string['uploadusers'] = 'Trasferisci utenti'; $string['usedinnplaces'] = 'Utilizzato in $a posti'; @@ -1046,7 +973,6 @@ $string['userdata'] = 'Dati utente'; $string['userdeleted'] = 'Questo account è stato cancellato'; $string['userdescription'] = 'Descrizione'; $string['userfiles'] = 'File utente'; -$string['userlist'] = 'Lista utenti'; $string['username'] = 'Username'; $string['usernameexists'] = 'Questo username è già esistente, scegline un altro'; $string['usernotconfirmed'] = 'Non è possibile confermare $a'; @@ -1057,7 +983,6 @@ $string['userzones'] = 'Zone utenti'; $string['usingexistingcourse'] = 'Utilizza corso esistente'; $string['version'] = 'Versione'; $string['view'] = 'Vista'; -$string['virusfoundsubject'] = '$a: trovato virus!'; $string['webpage'] = 'Pagina web'; $string['week'] = 'Settimana'; $string['weekhide'] = 'Nascondi questa settiamana da $a'; diff --git a/lang/it/questionnaire.php b/lang/it/questionnaire.php deleted file mode 100644 index bfc70497bd5..00000000000 --- a/lang/it/questionnaire.php +++ /dev/null @@ -1,16 +0,0 @@ -Devi completare questo questionario ora per registrare i tuoi risultati. Non ti è permesso completarlo in un secondo tempo


                '; -$string['notavail'] = 'Quel questionario non è ancora disponibile. Prova più tardi.'; -$string['qmanage'] = 'Gestisci sondaggi'; -$string['qmanagetitle'] = 'Gestione sondaggi di phpESP'; -$string['qtype'] = 'Tipo'; -$string['questionnaireid'] = 'Sondaggio'; -$string['respondenttype'] = 'Tipo di risponditore'; - -?> diff --git a/lang/it/quiz.php b/lang/it/quiz.php index 4d6e733cb75..8b88cfb241e 100644 --- a/lang/it/quiz.php +++ b/lang/it/quiz.php @@ -1,5 +1,5 @@ name\' contiene $a->count domande. Scegli un\'altra categoria per trasferirle in essa.'; $string['categorymoveto'] = 'Trasferisci a questa categoria'; -$string['checkanswer'] = 'Controllo'; $string['choice'] = 'Scelta'; $string['choices'] = 'Scelte disponibili'; $string['choosedatasetproperties'] = 'Scegli le caratteristiche dell\'insieme dei dati'; -$string['close'] = 'Chiudi anteprima'; $string['confirmstartattempt'] = 'Il quiz ha un tempo limite. Sei sicuro di voler iniziare?'; $string['correctanswer'] = 'Risposta esatta'; $string['correctanswerformula'] = 'Formula della Risposta Corretta'; @@ -59,7 +57,6 @@ $string['coursetestmanager'] = 'Formato Course Test Manager'; $string['createmultiple'] = 'Crea domande multiple'; $string['createnewquestion'] = 'Crea una nuova domanda'; $string['custom'] = 'Formato personalizzato'; -$string['datasetdefinitions'] = 'Definizioni dell\'insieme di dati riusabili per la categoria $a'; $string['datasetnumber'] = 'Numero'; $string['daysavailable'] = 'Giorni disponibili'; $string['decimals'] = 'con $a'; @@ -87,32 +84,29 @@ $string['editingshortanswer'] = 'Modifica una domanda a risposta breve'; $string['editingtruefalse'] = 'Modifica una domanda vero/falso'; $string['editquestions'] = 'Modifica domande'; $string['errorsdetected'] = '$a errore(i) trovati'; -$string['existingcategory1'] = 'Un letterale da un insieme di letterali esistenti è stato usato anche da altre domande in questa categoria'; -$string['existingcategory2'] = 'Un file da un insieme di file esistenti è stato usato anche da altre domande in questa categoria '; -$string['existingcategory3'] = 'Un collegamento da un insieme di collegamenti esistenti è stato usato anche da altre domande in questa categoria'; +$string['existingcategory'] = 'un \".(1==$a ? \'letterale\' :(2==$a ? \'file\' :(3==$a ? \'collegamento\' : $a))).\" da un insieme già esistente di \".(1==$a ? \'letterali\' :(2==$a ? \'files\' : (3==$a ? \'collegamenti\' : $a))).\" che sono anche utilizzati da altre domande di questa categoria'; $string['exportfilename'] = 'quiz'; $string['exportname'] = 'Nome del file'; $string['exportnameformat'] = '%%Y%%m%%d-%%H%%M'; $string['exportquestions'] = 'Esporta domande su file'; $string['false'] = 'Falso'; $string['feedback'] = 'Commento'; -$string['file'] = 'File'; $string['fileformat'] = 'Formato file'; $string['filloutoneanswer'] = 'Devi fornire almeno una risposta possibile. Le risposte lasciate in bianco non saranno utilizzate utilizzate.'; $string['filloutthreequestions'] = 'Devi fornire almeno tre domande. Le domande lasciate in bianco non saranno utilizzate.'; $string['fillouttwochoices'] = 'Devi fornire almeno due scelte. Le scelte lasciate in bianco non saranno utilizzate.'; $string['forceregeneration'] = 'Forza rigenerazione'; $string['fractionsaddwrong'] = 'I voti positivi che hai scelto non assommano al 100%% ma solo al $a%% -
                Vuoi tornare indietro e correggere? +
                Vuoi tornare indietro e correggere? -
                ma solo a $a%% +
                ma solo a $a%% -
                Vuoi tornare indietro e risolvere la questione?'; +
                Vuoi tornare indietro e risolvere la questione?'; $string['fractionsnomax'] = 'Una delle risposte deve essere 100%%, perchè sia -
                possibile una votazione piena per questa domanda -
                Vuoi tornare indietro e correggere? -
                Vuoi tornare indietro e risolvere la questione?'; +
                possibile una votazione piena per questa domanda +
                Vuoi tornare indietro e correggere? +
                Vuoi tornare indietro e risolvere la questione?'; $string['functiontakesatleasttwo'] = 'La funzione $a deve avere come minimo due argomenti'; $string['functiontakesnoargs'] = 'La funzione $a non ha argomenti'; $string['functiontakesonearg'] = 'La funzione $a deve avere un solo argomento'; @@ -132,10 +126,7 @@ $string['importquestions'] = 'Importa domande da file'; $string['indivresp'] = 'Risposte dei singoli ad ogni elemento'; $string['introduction'] = 'Introduzione'; $string['itemanal'] = 'Analisi delle risposte agli elementi'; -$string['itemdefinition'] = 'Definizione'; -$string['link'] = 'Collegamento'; $string['listitems'] = 'Elenco degli elementi di questo quiz'; -$string['literal'] = 'Letterale'; $string['loguniform'] = 'numeri, da una distribuzione uniforme'; $string['marks'] = 'Punti'; $string['match'] = 'Corrispondenza'; @@ -160,22 +151,19 @@ $string['noattempts'] = 'Nessun tentativo $string['nodataset'] = 'niente - non è un metacarattere'; $string['nominal'] = 'Nominale'; $string['nomoreattempts'] = 'Non sono permessi ulteriori tentativi'; -$string['nopossibledatasets'] = 'Insieme dati non accettabile'; $string['noquestions'] = 'Non sono state aggiunte ancora domande'; $string['noresponse'] = 'Nessuna risposta'; $string['noreview'] = 'Non hai il permesso di rivedere questo quiz'; $string['noreviewuntil'] = 'Non hai il permesso di rivedere questo quiz fino a $a'; $string['noscript'] = 'I JavaScript devono essere abilitati per poter continuare!'; $string['notenoughanswers'] = 'Questo tipo di domanda richiede come minimo $a risposte'; -$string['notenoughsubquestions'] = 'Non sono state definite abbastanza sottodomande!
                Vuoi tornare indietro e correggere questa domanda?'; +$string['notenoughsubquestions'] = 'Non sono state definite abbastanza sottodomande!
                Vuoi tornare indietro e correggere questa domanda?'; $string['numerical'] = 'Numerica'; $string['optional'] = 'opzionale'; $string['overdue'] = 'in ritardo'; $string['paragraphquestion'] = 'Domanda paragrafo non supportata alla linea $a. La domanda sarà ignorata'; $string['passworderror'] = 'La password inserita non è corretta'; $string['percentcorrect'] = 'Percentuale corretta'; -$string['preview'] = 'Anteprima'; -$string['previewquestion'] = 'Anteprima domanda'; $string['publish'] = 'Rendere pubblico'; $string['publishedit'] = 'Devi avere il permesso nel corso sono pubblicate per aggiungere o modificare le domande in questa categoria'; $string['qti'] = 'Formato IMS QTI'; @@ -261,7 +249,6 @@ $string['webct'] = 'Formato WebCT'; $string['wildcard'] = 'Metacarattere'; $string['withsummary'] = 'con Statistiche generali'; $string['wronggrade'] = 'Punteggio sbagliato (dopo la linea $a):'; -$string['xml'] = 'Formato XML Moodle'; $string['yourfinalgradeis'] = 'Il tuo voto finale per questo quiz è: $a'; ?> diff --git a/lang/it/resource.php b/lang/it/resource.php index c1cbdcb5bc1..e82a23864fc 100644 --- a/lang/it/resource.php +++ b/lang/it/resource.php @@ -1,14 +1,12 @@ File Manager.'; +corso (come quelli che compaiono in questa lista) usa il File Manager.'; $string['notypechosen'] = 'È necessario che tu scelga un tipo. Usa il pulsante indietro per ritornare alla pagina precedente e riprovare.'; $string['pagedisplay'] = 'Mostra questa risorsa nella finestra corrente'; $string['pagewindow'] = 'Stessa finestra'; $string['parameter'] = 'Parametro'; -$string['parameters'] = 'Parametri'; +$string['parameters'] = 'Paremetri'; $string['popupresource'] = 'Questa risorsa deve apparire in una finestra di popup'; $string['popupresourcelink'] = 'Se non lo fa, cliccare qui: $a'; $string['resourcetype'] = 'Tipo di risorsa'; -$string['resourcetype1'] = 'Riferimento'; -$string['resourcetype2'] = 'Pagina web'; -$string['resourcetype3'] = 'File presente sul server'; -$string['resourcetype4'] = 'Testo semplice'; -$string['resourcetype5'] = 'Collegamento web'; -$string['resourcetype6'] = 'Testo HTML'; -$string['resourcetype7'] = 'Collegamento ad applicazione web'; -$string['resourcetype8'] = 'Testo simile a Wiki'; -$string['resourcetype9'] = 'Cartella'; $string['resourcetypedirectory'] = 'Mostra una cartella'; $string['resourcetypefile'] = 'Collegamento a un file o a un sito'; $string['resourcetypehtml'] = 'Componi una pagina web'; $string['resourcetypelabel'] = 'Inserisci una etichetta'; +$string['resourcetypereference'] = 'Insrisci un riferimento'; $string['resourcetypetext'] = 'Componi una pagina di testo'; $string['searchweb'] = 'Cerca una pagina web'; $string['variablename'] = 'Nome variabile'; diff --git a/lang/it/scorm.php b/lang/it/scorm.php index 4440d19f955..e801897ab23 100755 --- a/lang/it/scorm.php +++ b/lang/it/scorm.php @@ -1,8 +1,7 @@ attr) del tag $a->tag.'; $string['autocontinue'] = 'Continuazione automatica'; $string['badmanifest'] = 'Trovati alcuni errori nel manifest: controlla l\'elenco'; @@ -21,7 +20,6 @@ $string['configpopupwidth'] = 'Larghezza standard per le nuove finestre di popup $string['coursepacket'] = 'Pacchetto del corso'; $string['coursestruct'] = 'Struttura del corso'; $string['datadir'] = 'Errore Filesystem: non è possibile creare la directory dei dati'; -$string['display'] = 'Visualizzazione'; $string['domxml'] = 'Libreria esterna DOMXML'; $string['entercourse'] = 'Segui corso SCORM'; $string['errorlogs'] = 'Errori'; diff --git a/lang/it/survey.php b/lang/it/survey.php index 4d8d7d19405..3c51da27e41 100644 --- a/lang/it/survey.php +++ b/lang/it/survey.php @@ -132,7 +132,7 @@ Molte Grazie.'; $string['collesaname'] = 'COLLES (Attuale)'; $string['collesapintro'] = 'L\'obiettivo di questo sondaggio è di aiutarci a comprendere come lo svolgimento online di questa unità ti sia stato utile nell\'apprendimento. -Ciascuna delle seguenti 24 domande sotto ti chiede di confrontare la tua esperienza preferita(ideale) e quella attuale di questa unità. +Ciascuna delle seguenti 24 domande sotto ti chiede di confrontare la tua esperienza preferita(ideale) e quella attuale di questa unità. Non ci sono risposte \'giuste\' o risposte \'errate\'; siamo interessati alla tua opinione. Garantiamo che le tue risposte saranno trattate con il massimo grado di riservatezza e non influenzeranno la tua valutazione. @@ -155,7 +155,7 @@ $string['collesm6short'] = 'Cumunicazione'; $string['collesmintro'] = 'In questa unità online...'; $string['collespintro'] = 'L\'obiettivo di questo sondaggio è di aiutarci a comprendere come lo svolgimento online di questa unità ti sia stato utile nell\'apprendimento. -Ciascuna delle seguenti 24 domande sotto ti chiede di confrontare la tua esperienza preferita(ideale) e quella attuale di questa unità. +Ciascuna delle seguenti 24 domande sotto ti chiede di confrontare la tua esperienza preferita(ideale) e quella attuale di questa unità. Non ci sono risposte \'giuste\' o risposte \'errate\'; siamo interessati alla tua opinione. Garantiamo che le tue risposte saranno trattate con il massimo grado di riservatezza e non influenzeranno la tua valutazione. diff --git a/lang/it/wiki.php b/lang/it/wiki.php index 9f688c64694..1278c91560b 100644 --- a/lang/it/wiki.php +++ b/lang/it/wiki.php @@ -1,17 +1,13 @@ new_ver e la $a->old_ver di $a->pagename.'; -$string['disablecamel'] = 'Disabilita collegamento CamelCase'; $string['disabledpage'] = 'Questa pagina non è attualmente disponibile'; -$string['doesnotexist'] = 'Questa pagina non esiste ancora, clicca sul pulsante di modifica se vuoi crearla.'; +$string['doesnotexist'] = 'Questa pagina no esiste ancora, clicca sul pulsante di modifica se vuoi crearla.'; $string['downloadaszip'] = 'Archivio compresso scaricabile'; $string['downloadtimes'] = 'Scaricato $a volte'; $string['dwnlnofiles'] = 'Nessun file ancora inviato.'; $string['dwnlsection'] = 'Sezione download'; $string['editform1'] = 'Prova a non preoccuparti troppo della formattazione, può essere sempre migliorata in seguito.'; -$string['editform2'] = 'Scrivi cose sensate, e ricorda che tutte le modifiche sono memorizzate.'; +$string['editform2'] = 'Prego scrivi con senso, e ricorda che tutte le modifiche sono memorizzate.'; $string['editthispage'] = 'Modifica questa pagina'; $string['emptypage'] = 'Pagina vuota'; $string['errorbinandtxt'] = 'Errore: Pagina di tipo BIN e TXT'; $string['errorhtml'] = 'Pagina di tipo HTML'; $string['errornotype'] = 'Errore: ne BIN o TXT'; $string['errororreason'] = 'Errore o ragione'; -$string['errorroandwr'] = 'Errore: pagina scrivibile e a sola lettura'; +$string['errorroandwr'] = 'Errore: pagina scrivibile e sola lettura'; $string['errorsize'] = 'Dimensione della pagina maggiore di 64k'; $string['errversionsave'] = 'Spiacente, mentre modificavi questa pagina qulacuno ha salvato una versione modificata. Per piacere torna alla schermata precedente e copia le tue modifiche negli appunti del tuo computer per inserirli nuovamente dopo aver ricaricato la pagina di modifica.'; $string['ewikiacceptbinary'] = 'Permetti file binari'; @@ -70,8 +65,8 @@ $string['flagbin'] = 'BIN'; $string['flaghtm'] = 'HTM'; $string['flagoff'] = 'OFF'; $string['flagro'] = 'RO'; -$string['flags'] = 'Indicatori'; -$string['flagsset'] = 'Indicatori modificati'; +$string['flags'] = 'Bandiere'; +$string['flagsset'] = 'Bandiere modificate'; $string['flagtxt'] = 'TXT'; $string['flagwr'] = 'WR'; $string['for'] = 'per'; @@ -79,14 +74,14 @@ $string['forbidden'] = 'Non sei autorizzato ad accedere a questa pagina.'; $string['groups'] = 'Gruppi'; $string['hits'] = '$a richieste'; $string['howtooperate'] = 'Come utilizzare'; -$string['howtowiki'] = 'Uso di Wiki'; +$string['howtowiki'] = 'Come Wiki'; $string['html'] = 'Formato HTML'; $string['htmlmode'] = 'Modo HTML'; $string['htmlonly'] = 'Solo HTML'; $string['index'] = 'Indice'; $string['infoaboutpage'] = 'Informazioni sulla pagina'; $string['initialcontent'] = 'Scegli la pagina iniziale'; -$string['invalidroot'] = 'Non sei autorizzato ad accedere alla pagina pricipale attuale per cui nessuna mappa del sito può essere creata.'; +$string['invalidroot'] = 'Non sei autorizzato ad accedere alla pagina pricipale attuale così nessuna mappa del sito può essere creata.'; $string['lastchanged'] = 'Ultima modifica il $a'; $string['lastmodified'] = 'Ultima modifica'; $string['linkdead'] = 'MORTA'; @@ -98,7 +93,7 @@ $string['meta'] = 'Meta data'; $string['moduledirectory'] = 'Cartella modulo'; $string['modulename'] = 'Wiki'; $string['modulenameplural'] = 'Wiki'; -$string['mostoftenchangedpages'] = 'Pagine più modificate'; +$string['mostoftenchangedpages'] = 'Pagine modificate maggiormente'; $string['mostvisitedpages'] = 'Pagine più visitate'; $string['newestpages'] = 'Pagine più recenti'; $string['noadministrationaction'] = 'Nessun permesso di amministrazione attribuito.'; @@ -106,13 +101,12 @@ $string['nocandidatestoremove'] = 'Nessuna pagina candidata alla rimozione, sceg $string['nochangestorevert'] = 'Nessun cambiamento da ripristinare.'; $string['nohtml'] = 'No HTML'; $string['nolinksfound'] = 'Nessun collegemento trovato nella pagina.'; -$string['noregexp'] = 'Questo deve essere una stringa fissa (non si può usare * o un espressione regolare), nel migliore dei casi usa l\'indirizzo IP o il nome della macchina attaccante, ma non includere il numero di porta (perché è incrementato ad ogni accesso http).'; +$string['noregexp'] = 'Questo deve essere una striga fissa (non si può usare * o un espressione regolare), nel migliore dei casi usa l\'indirizzo IP o il nome della macchina attaccante, ma non includere il numero di porta (perché è incrementato ad ogni accesso http).'; $string['notadministratewiki'] = 'Non ti è permesso amministrare questo Wiki!'; $string['nothingtostrip'] = 'Non ci sono pagine con più di una versione.'; $string['nowikicreated'] = 'Nulla è stato creato ancora per questo Wiki.'; $string['of'] = 'di'; $string['offline'] = 'OFFLINE'; -$string['optional'] = 'Opzionale'; $string['orphanedpage'] = 'Pagina orfana'; $string['orphanedpages'] = 'Pagine orfane'; $string['otherwikis'] = 'Altri Wiki'; @@ -124,7 +118,7 @@ $string['pagename'] = 'Nome pagina'; $string['pagenamechoice'] = '- oppure -'; $string['pageslinkingto'] = 'Collegamenti di pagina a questa pagina'; $string['pagesremoved'] = 'Pagine rimosse.'; -$string['pagesreverted'] = 'Pagine ripristinate'; +$string['pagesreverted'] = 'Cambiamenti ripristinati'; $string['pagesstripped'] = 'Pagine ripulite'; $string['plaintext'] = 'Testo semplice'; $string['preview'] = 'Anteprima'; @@ -135,15 +129,15 @@ $string['removepagecheck'] = 'Sei sicuro di voler cancellare queste pagine?'; $string['removepages'] = 'Elimina pagine'; $string['removeselectedpages'] = 'Elimina pagine selezionate'; $string['revertallsince'] = 'Ripristina versione, oppure cancella le modifiche fatte dopo'; -$string['revertchanges'] = 'Ripristina pagine modificate'; +$string['revertchanges'] = 'Ripristina modifiche'; $string['revertlastonly'] = 'Solo, se era l\'ultima modifica'; -$string['revertpages'] = 'Ripristina tutte le pagine modifiche '; -$string['revertpagescheck'] = 'Sei sicuro di voler ripristinare le pagine seguenti:'; +$string['revertpages'] = 'Ripristina tutte le modifiche '; +$string['revertpagescheck'] = 'Sei sicuro di voler ripristinare le modifiche seguenti:'; $string['revertthe'] = 'Ripristina versione, ma elimina solo quella affetta'; $string['safehtml'] = 'HTML sicuro'; $string['save'] = 'Salva'; $string['searchwiki'] = 'Cerca Wiki'; -$string['setpageflags'] = 'Imposta indicatori pagina'; +$string['setpageflags'] = 'Imposta bandiere pagina'; $string['sitemap'] = 'Mappa del sito'; $string['smfor'] = 'Mappa del sito per'; $string['status'] = 'Stato'; @@ -151,11 +145,6 @@ $string['strippagecheck'] = 'Sei sicuro di voler ripulire le versioni vecchie di $string['strippages'] = 'Ripulisci pagine'; $string['studentadminoptions'] = 'Opzioni di amministrazione dello studente'; $string['submit'] = 'Sottometti'; -$string['tabattachments'] = 'Allegati'; -$string['tabedit'] = 'Modifica'; -$string['tabinfo'] = 'Storico'; -$string['tablinks'] = 'Collegamenti'; -$string['tabview'] = 'Visualizza'; $string['thanksforcontribution'] = 'Grazie per il tuo contributo.'; $string['thispageisntlinkedfromanywhereelse'] = 'Questa pagina non è collegata da nessuna parte.'; $string['updatedpages'] = 'Pagine aggiornate'; diff --git a/lang/it/workshop.php b/lang/it/workshop.php index 99502b0bd59..f3c2114450e 100644 --- a/lang/it/workshop.php +++ b/lang/it/workshop.php @@ -112,7 +112,7 @@ $string['noassessmentsdone'] = 'Nessuna valutazione eseguita'; $string['nosubmission'] = 'Nessun lavoro'; $string['nosubmissionsavailableforassessment'] = 'Nessun lavoro disponibile per la valutazione'; $string['notavailable'] = 'Non disponibile'; -$string['noteonassessmentelements'] = 'Si osservi che il giudizio di un lavoro è suddiviso in un certo numero di \'elementi di valutazione \'.
                Ciò rende la valutazione stessa più facile e più consistente.
                Come insegnante dovresti definire questi elementi prima di mettere a disposizione il compito ai partecipanti al lavoro.
                Ciò può essere fatto cliccando sul compito nel corso e,
                se non ci sono elementi di valutazione presenti, ti sarà chiesto di aggiungerli.
                Il numero di elementi potrà essere modificato per mezzo dell pagina di definizione del compito.
                Gli elementi stessi possono essere inseriti o modificati nella pagina di \'Gestione della valutazione\'.'; +$string['noteonassessmentelements'] = 'Si osservi che il giudizio di un lavoro è suddiviso in un certo numero di \'elementi di valutazione \'.
                Ciò rende la valutazione stessa più facile e più consistente.
                Come insegnante dovresti definire questi elementi prima di mettere a disposizione il compito ai partecipanti al lavoro.
                Ciò può essere fatto cliccando sul compito nel corso e,
                se non ci sono elementi di valutazione presenti, ti sarà chiesto di aggiungerli.
                Il numero di elementi potrà essere modificato per mezzo dell pagina di definizione del compito.
                Gli elementi stessi possono essere inseriti o modificati nella pagina di \'Gestione della valutazione\'.'; $string['notgraded'] = 'Nessuna valutazione'; $string['notitlegiven'] = 'Non é stato assegnato un titolo'; $string['numberofassessmentelements'] = 'Numero di Commenti, Elementi di valutazione, Presenze, Criteri o Categorie in una Rubrica'; @@ -213,7 +213,7 @@ $string['verypoor'] = 'Molto Poco'; $string['view'] = 'Mostra'; $string['viewassessmentofteacher'] = 'Mostra valutazioni di $a'; $string['viewotherassessments'] = 'Mostra le altre valutazioni'; -$string['warningonamendingelements'] = 'ATTENZIONE: Ci sono valutazioni salvate.
                Non modificare il numero di elementi, i tipi di scala o il peso degli elementi.'; +$string['warningonamendingelements'] = 'ATTENZIONE: Ci sono valutazioni salvate.
                Non modificare il numero di elementi, i tipi di scala o il peso degli elementi.'; $string['weight'] = 'Peso'; $string['weightederrorcount'] = 'Conteggio del peso dell\'errore: $a'; $string['weightforbias'] = 'Peso del valore di soglia'; diff --git a/lang/ja/README b/lang/ja/README index 9c6fde722ed..4b5ccee9cbd 100644 --- a/lang/ja/README +++ b/lang/ja/README @@ -1,67 +1,24 @@ -MOODLE JAPANESE TRANSLATION ----------------------------------------------------------------------- -STARTED : November 21, 2002 -LAST MODIFIED : April 15, 2005 +Japanese Translation +------------------------ +Last Modify:2004/08/24 -Thanks to everyone who have supported our translation project! +[Translators] +Mitsuhiro Yoshida(http://mitstek.com/) +Paul Shew(http://ac.shew.jp) +[Credits] +Timothy Takemoto(http://eigodaigaku.com) +Thomas N. Robb(http://www.kyoto-su.ac.jp/~trobb/) +Toshihiro Kita(http://t-kita.net/) +Minoru Akiyama(http://www.e-learning-service.co.jp/) +Takahiro Kagoya(https://manabi.jin-ai.ac.jp/moodle/) -[TRANSLATORS] ----------------------------------------------------------------------- -Mitsuhiro Yoshida ( http://mitstek.com/ ) - Translating whole ja files, translation management. - -Paul Shew ( http://ac.shew.jp ) - Translation brushup - /lang/ja/help/quiz/formatgift.html - -Tatsuya Aoyagi - Translation brushup - Localization - /lang/ja/questionnaire.php - /lang/ja/help/questionnaire - -Masataka Nakaue ( http://ldt.stanford.edu/~mnakauye/ ) - /lang/ja/book.php - /lang/ja/help/book - -Hiroto Kagotani ( http://www.infsys.cne.okayama-u.ac.jp/~kagotani/ ) - Translation brushup - /lang/ja/help/* - - -[CONTRIBUTORS] ----------------------------------------------------------------------- -Timothy Takemoto ( http://eigodaigaku.com ) - Facilitator of Japanese moodle - Translation brushup - -Thomas N. Robb ( http://www.kyoto-su.ac.jp/~trobb/ ) - Translation brushup - -Toshihiro Kita ( http://t-kita.net/ ) - Translation brushup - -Minoru Akiyama ( http://www.e-learning-service.co.jp/ ) - Translation brushup - -Takahiro Kagoya ( https://manabi.jin-ai.ac.jp/moodle/ ) - Inventor of QUIZ result block, ranking system - Translation brushup - Localization - -Takahito Kashiwagi ( http://www.supertak.com/ ) - Localization - -Naoko Ueda ( http://knowledgestudio.biz/ ) - Translation brushup - ----------------------------------------------------------------------- -Any suggestion for Japanese language packs, please do not hesitate -to post your comments on moodle.org Japanese: -http://moodle.org/course/view.php?id=14 - -You can download latest Japanese language packs from: +All files are written in EUC-JP. +Any suggestion for Japanese version, feel free to contact Mitsuhiro Yoshida. +To get newest ja files please access: http://moodle.org/download/lang/ - +Á´¤Æ¤Î¥Õ¥¡¥¤¥ë¤ÏEUC-JP¤Çµ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¸íÌõ¡¦ÄûÀµÅù¤´¤¶¤¤¤Þ¤·¤¿¤é¤ªµ¤·Ú¤Ë¤´Ï¢Íí¤¯¤À¤µ¤¤¡£ +ºÇ¿·ÈÇ¤ÎÆüËܸì¥Õ¥¡¥¤¥ë¤Ï²¼µ­¤è¤ê¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£ +http://moodle.org/download/lang/ diff --git a/lang/ja/activitynames.php b/lang/ja/activitynames.php index 5f6f5aee327..1c70c25f1d2 100644 --- a/lang/ja/activitynames.php +++ b/lang/ja/activitynames.php @@ -1,10 +1,7 @@ - diff --git a/lang/ja/admin.php b/lang/ja/admin.php index efd96b8b8b4..210fd0e1130 100644 --- a/lang/ja/admin.php +++ b/lang/ja/admin.php @@ -1,127 +1,11 @@ ourcollege.edu.au .gov.au'; -$string['configallowunenroll'] = '¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤ËÀßÄꤷ¤¿¾ì¹ç¡¢³ØÀ¸¤Ï¤¤¤Ä¤Ç¤â¹¥¤­¤Ê»þ¤Ë¥³¡¼¥¹¤Î»²²Ã¤ò¼è¤ê¾Ã¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£\'No\'¤ËÀßÄꤷ¤¿¾ì¹ç¡¢³ØÀ¸¤Ï»²²Ã¼è¾Ã¤·¤ò¹Ô¤¦¤³¤È¤Ï¤Ç¤­¤º¡¢»²²Ã¤Ë´Ø¤¹¤ëÁ´¤Æ¤ò¶µ»Õ¤ª¤è¤Ó´ÉÍý¼Ô¤¬¥³¥ó¥È¥í¡¼¥ë¤·¤Þ¤¹¡£'; -$string['configallowuserblockhiding'] = '¥µ¥¤¥ÈÁ´ÂΤˤª¤¤¤Æ¥æ¡¼¥¶¤Ë¥Ö¥í¥Ã¥¯¤Îɽ¼¨/Èóɽ¼¨¤òµö²Ä¤·¤Þ¤¹¤«? ¤³¤Îµ¡Ç½¤Ç¤Ï¡¢Àޤꤿ¤¿¤ß²Äǽ¤Ê¥Ö¥í¥Ã¥¯¤Î¾õÂÖ¤òµ­²±¤¹¤ë¤¿¤á¤Ë¡¢Java¥¹¥¯¥ê¥×¥È¤È¥¯¥Ã¥­¡¼¤ò»ÈÍѤ·¤Þ¤¹¡£¤Þ¤¿¡¢¥Ö¥í¥Ã¥¯¤Îɽ¼¨/Èóɽ¼¨¤Ï¥æ¡¼¥¶¼«¿È¤Î»ÈÍѤˤΤ߱ƶÁ¤·¤Þ¤¹¡£'; -$string['configallowuserthemes'] = '¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤ËÀßÄꤷ¤¿¾ì¹ç¡¢¥æ¡¼¥¶¤Ï¼«Ê¬¤Î¥Æ¡¼¥Þ¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥µ¥¤¥È¥Æ¡¼¥Þ¤Ï¥æ¡¼¥¶¥Æ¡¼¥Þ¤Ë¾å½ñ¤­¤µ¤ì¤Þ¤¹ ( ¥³¡¼¥¹¥Æ¡¼¥Þ¤Ï¾å½ñ¤­¤µ¤ì¤Þ¤»¤ó ) ¡£'; -$string['configallusersaresitestudents'] = '¥µ¥¤¥È¤Îɽ»æ¤Ë¤¢¤ë³èư¤Ç¤Ï¡¢Á´¤Æ¤Î¥æ¡¼¥¶¤ò³ØÀ¸¤È¹Í¤¨¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«? Åú¤¨¤¬¡ÖYes¡×¤Î¾ì¹ç¡¢¾µÇ§¤µ¤ì¤¿¥æ¡¼¥¶¤Ï³ØÀ¸¤È¤·¤Æ¡¢¤³¤ì¤é¤Î³èư¤Ë»²²Ã¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Åú¤¨¤¬¡ÖNo¡×¤Î¾ì¹ç¡¢¾¯¤Ê¤¯¤È¤â1¤Ä¤Î¥³¡¼¥¹¤ËÅÐÏ¿ºÑ¤ß¤Î¥æ¡¼¥¶¤Î¤ß¤¬É½»æ¤Î³èư¤Ë»²²Ã¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['configautologinguests'] = 'ÍøÍѼԤ¬¥³¡¼¥¹¤Ë¥²¥¹¥È¥¢¥¯¥»¥¹¤·¤¿¾ì¹ç¡¢¼«Æ°Åª¤Ë¥²¥¹¥È¤È¤·¤Æ¥í¥°¥¤¥ó¤µ¤»¤Þ¤¹¤«?'; -$string['configcachetext'] = 'µ¬ÌϤÎÂ礭¤Ê¥µ¥¤¥È¤Þ¤¿¤Ï¥Æ¥­¥¹¥È¥Õ¥£¥ë¥¿¡¼¤ò»ÈÍѤ·¤Æ¤¤¤ë¥µ¥¤¥È¤Ç¤Ï¡¢¤³¤ÎÀßÄê¤ò¹Ô¤¦¤³¤È¤Ç½èÍý®ÅÙ¤ò¾å¤²¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Æ¥­¥¹¥È¤Î¥³¥Ô¡¼¤¬½èÍý¤ËŬ¤·¤¿·Á¤Ç°ìÄê»þ´ÖÊÝ»ý¤µ¤ì¤Þ¤¹¡£¤³¤Î¿ôÃͤò¾®¤µ¤¯¤·²á¤®¤ë¤È½èÍý®ÅÙ¤ò¼ã´³Íî¤È¤¹¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£Â礭²á¤®¤ë¤È¥ê¥Õ¥ì¥Ã¥·¥å¤¹¤ë¤Þ¤Ç¤Î¥Æ¥­¥¹¥È¤ÎÊÝ»ý¤¬Ä¹¤¯¤Ê¤ê²á¤®¤Þ¤¹ ( Îã ¿·¤·¤¤¥ê¥ó¥¯ )¡£'; -$string['configclamactlikevirus'] = '¥Õ¥¡¥¤¥ë¤ò¥¦¥¤¥ë¥¹¤È¤·¤Æ°·¤¦'; -$string['configclamdonothing'] = '¥Õ¥¡¥¤¥ë¤ò¥¦¥¤¥ë¥¹´¶À÷̵¤·¤È¤·¤Æ°·¤¦'; -$string['configclamfailureonupload'] = '¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë¤òclam¤¬¥¹¥­¥ã¥ó¤¹¤ë¤è¤¦¤ËÀßÄꤷ¤Æ¤â¡¢ÀßÄ꤬´Ö°ã¤Ã¤Æ¤¤¤ë¤Þ¤¿¤ÏÉÔÌÀ¤ÊÍýͳ¤Çưºî¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¤É¤Î¤è¤¦¤Ë½èÍý¤·¤Þ¤¹¤«? ¡Ö¥Õ¥¡¥¤¥ë¤ò¥¦¥¤¥ë¥¹¤È¤·¤Æ°·¤¦¡×¤òÁªÂò¤·¤¿¾ì¹ç¡¢´¶À÷¥Õ¥¡¥¤¥ë¤Ï³ÖÎ¥ÍÑ¥¨¥ê¥¢¤Ë°Üư¤µ¤ì¤ë¤«¡¢ºï½ü¤µ¤ì¤Þ¤¹¡£¡Ö¥Õ¥¡¥¤¥ë¤ò¥¦¥¤¥ë¥¹´¶À÷̵¤·¤È¤·¤Æ°·¤¦¡×¤òÁªÂò¤·¤¿¾ì¹ç¡¢Ä̾ï¤Î¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¤è¤¦¤Ë¡¢»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Üư¤µ¤ì¤Þ¤¹¡£¤É¤Á¤é¤Î¾ì¹ç¤Ç¤â¡¢´ÉÍý¼Ô¤Ë¤Ïclam¤ËÌäÂ꤬¤¢¤ë»Ý¤¬ÄÌÃΤµ¤ì¤Þ¤¹¡£¡Ö¥Õ¥¡¥¤¥ë¤ò¥¦¥¤¥ë¥¹¤È¤·¤Æ°·¤¦¡×¤òÁªÂò¤·¤Æ¡¢clam¤¬Àµ¾ï¤Ëưºî¤·¤Ê¤¤¾ì¹ç ( °ìÈÌŪ¤Ëclam¤Ë´Ö°ã¤Ã¤¿¥Ñ¥¹¤ò»ØÄê )¡¢¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¤¿Á´¤Æ¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢»ØÄꤵ¤ì¤¿³ÖÎ¥ÍÑ¥¨¥ê¥¢¤Ë°Üư¤µ¤ì¤ë¤«¡¢ºï½ü¤µ¤ì¤Þ¤¹¡£¤³¤ÎÀßÄê¤ÏÃí°Õ¤·¤Æ¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configcountry'] = '¤³¤³¤Ç¹ñ¤òÀßÄꤷ¤¿¾ì¹ç¡¢¿·µ¬¥¢¥«¥¦¥ó¥È¤Î¥æ¡¼¥¶¤Ë½é´üÃͤȤ·¤ÆÉ½¼¨¤µ¤ì¤Þ¤¹¡£¥æ¡¼¥¶¤Ë¹ñ¤òÁª¤Ð¤»¤ë¾ì¹ç¤Ï²¿¤âÁªÂò¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£'; -$string['configdbsessions'] = '¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤Ë¤·¤¿¾ì¹ç¡¢¸½ºß¤Î¥»¥Ã¥·¥ç¥ó¾ðÊó¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¤Þ¤¹¡£¤³¤ì¤ÏÆÃ¤Ëµ¬ÌϤÎÂ礭¤¤/¥¢¥¯¥»¥¹¿ô¤Î¿¤¤¥µ¥¤¥È¡¢¤Þ¤¿¤Ï¥¯¥é¥¹¥¿¥µ¡¼¥Ð¤Ë¹½ÃÛ¤µ¤ì¤¿¥µ¥¤¥È¤Ë¸þ¤¤¤Æ¤¤¤Þ¤¹¡£¤Û¤È¤ó¤É¤Î¥µ¥¤¥È¤Ç¤Ï¡¢¥»¥Ã¥·¥ç¥ó¤ÎÊݸ¤ò¥µ¡¼¥Ð¥Ç¥£¥¹¥¯¤Ë¹Ô¤¦¤è¤¦¤Ë¡¢¤³¤ÎÀßÄê¤ò¡ÖNo¡×¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎÀßÄê¤òÊѹ¹¤¹¤ë¤È¡¢¸½ºß¤Î¥æ¡¼¥¶ ( ¤¢¤Ê¤¿¤â´Þ¤á¤Æ ) ¤¬¥í¥°¥¢¥¦¥È¤µ¤ì¤Þ¤¹¡£'; -$string['configdebug'] = '¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤Ë¤·¤¿¾ì¹ç¡¢PHP¤Î¥¨¥é¡¼¥ì¥Ý¡¼¥È¤¬Áý²Ã¤·¤Æ¡¢¤è¤ê¿¤¯¤Î·Ù¹ð¤¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£³«È¯¼Ô¸þ¤±¤ÎÀßÄê¤Ç¤¹¡£'; -$string['configdeleteunconfirmed'] = '¥á¡¼¥ë¤Ë¤è¤ë¾µÇ§¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¢¤³¤ÎÃͤϥ桼¥¶¤«¤é¤ÎÊÖÅú¤ò¼õ¤±ÉÕ¤±¤ë´ü´Ö¤ò»Ø¤·¤Þ¤¹¡£¤³¤Î´ü´Ö¤Î½ªÎ»¸å¡¢¸Å¤¤Ì¤¾µÇ§¤Î¥¢¥«¥¦¥ó¥È¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£'; -$string['configdenyemailaddresses'] = 'ÆÃÄê¥É¥á¥¤¥ó¤«¤éÁ÷¿®¤µ¤ì¤ë¿·¤·¤¤¥á¡¼¥ë¤òµñÈݤ·¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤ÎÍó¤Ë¥¹¥Ú¡¼¥¹¤Ç¶èÀÚ¤Ã¤ÆÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£Â¾¤Î¥É¥á¥¤¥ó¤«¤éÁ÷¿®¤µ¤ì¤ë¥á¡¼¥ë¤ÏÁ´¤Æ¼õ¿®¤µ¤ì¤Þ¤¹¡£Îã hotmail.com yahoo.co.uk '; -$string['configdigestmailtime'] = '¥á¡¼¥ëÁ÷¿®¤¹¤ëÁªÂò¤ò¤·¤¿¥æ¡¼¥¶¤Ë¡¢Åê¹ÆÆâÍÆ¤òÍ×Ìó¤·¤¿¥á¡¼¥ë¤¬ËèÆüÁ÷¿®¤µ¤ì¤Þ¤¹¡£¤³¤³¤Ç¤Ï1Æü¤ÎÆâ¤Ç²¿»þ¤ËÍ×Ìó¥á¡¼¥ë¤òÁ÷¿®¤¹¤ë¤«¤òÀßÄꤷ¤Þ¤¹ ( ¼¡¤Îcron¤¬¤³¤³¤ÇÀßÄꤷ¤¿»þ´Ö¤Î¸å¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹ )¡£'; -$string['configdisplayloginfailures'] = '¤³¤³¤Ç¤Ï¥í¥°¥¤¥ó¼ºÇÔ¾ðÊó¤òÁªÂò¤·¤¿¥æ¡¼¥¶¤Ëɽ¼¨¤·¤Þ¤¹¡£'; -$string['configenablerssfeeds'] = '¤³¤³¤Ç¤ÏRSS¥Õ¥£¡¼¥É¤ÎÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£RSS¥Õ¥£¡¼¥É¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢´ÉÍý²èÌ̤Υ⥸¥å¡¼¥ë´ÉÍý¤Ë¤ÆRSS¥â¥¸¥å¡¼¥ë¤ò»ÈÍѲĤˤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£'; -$string['configenablerssfeedsdisabled'] = '¥µ¥¤¥ÈÁ´¤Æ¤Ë¤ª¤¤¤ÆRSS¥Õ¥£¡¼¥É¤¬ÍøÍÑÉԲĤˤµ¤ì¤Æ¤¤¤ë¤¿¤á¡¢ÍøÍѤǤ­¤Þ¤»¤ó¡£´ÉÍý¥á¥Ë¥å¡¼Æâ¤Î¾ÜºÙÀßÄê¤ÇRSS¥Õ¥£¡¼¥É¤òÍøÍѲĤˤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['configerrorlevel'] = 'ɽ¼¨¤·¤¿¤¤PHP¤Î·Ù¹ð¿ô¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£Ä̾ï¤ÏNormal¤¬ºÇŬ¤Ç¤¹¡£'; -$string['configextendedusernamechars'] = '¤³¤ÎÀßÄê¤ò¹Ô¤¦¤³¤È¤Ç¡¢³ØÀ¸¤Ï¥æ¡¼¥¶Ì¾¤Ë¤É¤Î¤è¤¦¤Êʸ»ú¤Ç¤â»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ ( ¼ÂºÝ¤Î̾Á°¤Ë¤Ï±Æ¶Á¤·¤Þ¤»¤ó )¡£¥Ç¥Õ¥©¥ë¥È¤Ï¡¢¥æ¡¼¥¶Ì¾¤ò¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤ËÀ©¸Â¤¹¤ë¡ÖNo¡×¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£'; -$string['configfilterall'] = '¥Ø¥Ã¥À¡¢¥¿¥¤¥È¥ë¡¢¥Ê¥Ó¥²¡¼¥·¥ç¥ó¥Ð¡¼¤ò´Þ¤àÁ´¤Æ¤Îʸ»ú¤ò¥Õ¥£¥ë¥¿¤·¤Þ¤¹¡£¤³¤ì¤Ï¿¸À¸ì¥Õ¥£¥ë¥¿¤ò»ÈÍѤ·¤Æ¤¤¤ë»þ¤ËºÇ¤âÊØÍø¤Ç¤¹¡£¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤Ëñ¤ËÉé²Ù¤¬¤«¤«¤ë¤À¤±¤Ë¤Ê¤ê¤Þ¤¹¡£'; -$string['configfilteruploadedfiles'] = '¤³¤ÎÀßÄê¤ò¹Ô¤Ã¤¿¾ì¹ç¡¢Moodle¤ÏÁ´¤Æ¤Î¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¤¿HTML¤ª¤è¤Ó¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤òɽ¼¨¤¹¤ëÁ°¤Ë¥Õ¥£¥ë¥¿¤Ë¤«¤±¤Þ¤¹¡£'; -$string['configforcelogin'] = 'Ä̾¥µ¥¤¥È¤È¥³¡¼¥¹°ìÍ÷ ( ¥³¡¼¥¹¤Ç¤Ï̵¤¤ ) ¤Î¥Õ¥í¥ó¥È¥Ú¡¼¥¸¤Ï¥µ¥¤¥È¤Ë¥í¥°¥¤¥ó¤»¤º¤Ë±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Á´¤Æ¤Îưºî¤ò¹Ô¤¦Á°¤Ë¥í¥°¥¤¥ó¤ò¶¯À©¤·¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤ÎÀßÄê¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configforceloginforprofiles'] = '¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤Ë¤·¤¿¾ì¹ç¡¢¥æ¡¼¥¶¥×¥í¥Õ¥£¡¼¥ë¥Ú¡¼¥¸¤ò±ÜÍ÷¤¹¤ë¤Ë¤Ï¼ÂºÝ¤Î¥¢¥«¥¦¥ó¥È¤Ç¥í¥°¥¤¥ó¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¡ÖNo¡×¤ËÀßÄꤵ¤ì¤Þ¤¹¤Î¤Ç¡¢³ØÀ¸¤Ï»öÁ°¤Ë³Æ¥³¡¼¥¹¤Î¶µ»Õ¤Î¥×¥í¥Õ¥£¡¼¥ë¤ò±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï¥µ¡¼¥Á¥¨¥ó¥¸¥ó¤«¤é¤â¥×¥í¥Õ¥£¡¼¥ë¥Ú¡¼¥¸¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤ë¤³¤È¤â°ÕÌ£¤·¤Þ¤¹¡£'; -$string['configframename'] = 'Moodle¤ò¥Õ¥ì¡¼¥àÆâ¤Ç»ÈÍѤ¹¤ë¾ì¹ç¡¢¥Õ¥ì¡¼¥à̾¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¥Õ¥ì¡¼¥à¤ò»ÈÍѤ·¤Ê¤¤¾ì¹ç¤Ï¡Ö_top¡×¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configfullnamedisplay'] = '¤³¤³¤Ç¤Ï¤É¤Î¤è¤¦¤Ë̾Á°¤¬É½¼¨¤µ¤ì¤ë¤Î¤«¤òÀßÄꤷ¤Þ¤¹¡£¤Û¤È¤ó¤É¤Îñ°ì¸À¸ì¤ò»ÈÍѤ·¤¿¥µ¥¤¥È¤Ç¤Ï¡Ö̾+À«¡×¤ò»ÈÍѤ·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£¤·¤«¤·¡¢Ì¾»ú¤ò±£¤·¤¿¤ê¡¢¸À¸ìÀßÄê¤Ëź¤Ã¤¿·Á ( ¤¤¤¯¤Ä¤«¤Î¸À¸ì¤Ç¤Ï°Û¤Ê¤ëÊÂ¤Ó ) ¤ÎʤӤˤ¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£'; -$string['configgdversion'] = '¥µ¡¼¥Ð¤ËGD¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¤½¤Î¥Ð¡¼¥¸¥ç¥ó¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£½é´üÃͤȤ·¤ÆÉ½¼¨¤µ¤ì¤Æ¤¤¤ë¥Ð¡¼¥¸¥ç¥ó¤Ï¼«Æ°Åª¤Ë¸¡ÃΤµ¤ì¤¿¤â¤Î¤Ç¤¹¡£Ê¬¤«¤é¤Ê¤¤¾ì¹ç¤Ï¤½¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['confightmleditor'] = 'Æâ¢¤µ¤ì¤¿HTML¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿»ÈÍѤòµö²Ä¤¹¤ë¤«Èݤ«ÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£¡Öµö²Ä¤¹¤ë¡×¤òÁªÂò¤·¤¿¾ì¹ç¡¢¸ß´¹À­¤Î¤¢¤ë¥Ö¥é¥¦¥¶¤¬»È¤ï¤ì¤ë¾ì¹ç¤Î¤ß¡¢¤³¤Î¥¨¥Ç¥£¥¿¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¥æ¡¼¥¶¤Ï¥¨¥Ç¥£¥¿¤ò»ÈÍѤ·¤Ê¤¤ÁªÂò¤â¤Ç¤­¤Þ¤¹¡£'; -$string['configidnumber'] = '¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï¼¡¤ÎÆâÍÆ¤òÀßÄꤷ¤Þ¤¹¡£(a)¥æ¡¼¥¶¤¬¥æ¡¼¥¶ID¤ÎÆþÎϤòµá¤á¤é¤ì¤Ê¤¤¡¢(b)¥æ¡¼¥¶¤¬¥æ¡¼¥¶ID¤ò¶õÇò¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡¢¤Þ¤¿¤Ï(c)¥æ¡¼¥¶¤Ï¥æ¡¼¥¶ID¤ÎÆþÎϤòµá¤á¤é¤ì¡¢¶õÇò¤Ë¤Ç¤­¤Ê¤¤¡£¥æ¡¼¥¶ID¤¬ÆþÎϤµ¤ì¤¿¤È¤­¤Ï¥×¥í¥Õ¥¡¥¤¥ë¤Ëɽ¼¨¤µ¤ì¤ë¡£'; -$string['configintro'] = '¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï¥µ¡¼¥Ð¤ÇMoodle¤¬ºÇŬ¤Ëư¤¯¤¿¤á¤ÎÀßÄêÃͤòÆþÎϤǤ­¤Þ¤¹¡£ÀßÄêÃͤò¿´ÇÛ¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£Ä̾ï½é´üÃͤǺÇŬ¤Ëưºî¤¹¤ë¤è¤¦¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£¤¤¤Ä¤Ç¤â¤³¤Î¥Ú¡¼¥¸¤ËÌá¤Ã¤ÆºÆÅÙÀßÄê¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['configintroadmin'] = '¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï¥µ¥¤¥È¤ÎÁ´´ÉÍý¤ò¹Ô¤¦¤³¤È¤Î¤Ç¤­¤ëºÇ¹â´ÉÍý¼Ô¤Î¥¢¥«¥¦¥ó¥È¤òºîÀ®¤·¤Þ¤¹¡£Àµ¤·¤¤¥á¡¼¥ë¥¢¥É¥ì¥¹¤ª¤è¤Ó°ÂÁ´¤Ê¥æ¡¼¥¶Ì¾¡¢¥Ñ¥¹¥ï¡¼¥É¤òÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¸å¤Ç¤µ¤é¤Ë´ÉÍý¼Ô¤ÎºîÀ®¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['configintrosite'] = '¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï¤³¤Î¥µ¥¤¥È¤Îɽ»æÀßÄꤪ¤è¤Ó¥µ¥¤¥È̾¤ÎÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£¥Û¡¼¥à¥Ú¡¼¥¸¤Î¡Ö¥µ¥¤¥È¥»¥Ã¥Æ¥£¥ó¥°¡×¥ê¥ó¥¯¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢¤¤¤Ä¤Ç¤â¤³¤ì¤é¤Î¥»¥Ã¥Æ¥£¥ó¥°¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['configintrotimezones'] = '¤³¤³¤Ç¤ÏÀ¤³¦¤Î¥¿¥¤¥à¥¾¡¼¥ó¾ðÊó ( ²Æ»þ´Ö¥ë¡¼¥ë¤ò´Þ¤à ) ¤ò¸¡º÷¤·¤Æ¡¢¤¢¤Ê¤¿¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¹¹¿·¤·¤Þ¤¹¡£²¼µ­¤Î¥í¥±¡¼¥·¥ç¥ó¤¬½çÈ֤˥Á¥§¥Ã¥¯¤µ¤ì¤Þ¤¹: $a ¤³¤Î½èÍý¤Ï°ìÈÌŪ¤ËÈó¾ï¤Ë°ÂÁ´¤Ç¤¢¤ê¡¢¥¤¥ó¥¹¥È¡¼¥ëºÑ¤ßMoodle¤ò²õ¤¹¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥¿¥¤¥à¥¾¡¼¥ó¾ðÊó¤ò¹¹¿·¤·¤Þ¤¹¤«?'; -$string['configlang'] = '¤¹¤Ù¤Æ¤Î²èÌ̤ËŬÍѤµ¤ì¤ë¸À¸ì¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£ÍøÍѼԤϸå¤ÇÀßÄê¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['configlangdir'] = '¤Û¤È¤ó¤É¤Î¸À¸ì¤Ïº¸¤«¤é±¦¤Ëµ­½Ò¤µ¤ì¤Þ¤¹¤¬¡¢¥¢¥é¥Ó¥¢¸ì¤ä¥Ø¥Ö¥é¥¤¸ìÅù¤Ï±¦¤«¤éº¸¤Ëµ­½Ò¤µ¤ì¤Þ¤¹¡£'; -$string['configlanglist'] = '¤³¤³¤ò¶õÇò¤Ë¤¹¤ë¤È¡¢¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿Moodle¤Ë´Þ¤Þ¤ì¤ëÁ´¤Æ¤Î¸À¸ì¤ò¥æ¡¼¥¶¤¬ÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥³¥ó¥Þ¤Ç¶èÀڤ뤳¤È¤Ë¤è¤ê¸À¸ì¥á¥Ë¥å¡¼¤òû¤¯¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Îã¡§ja,en,es_es,fr,it'; -$string['configlangmenu'] = '¸À¸ìÁªÂò¥á¥Ë¥å¡¼¤ò¥Û¡¼¥à¥Ú¡¼¥¸¡¢¥í¥°¥¤¥ó²èÌÌÅù¤Ëɽ¼¨¤·¤¿¤¤¾ì¹ç¤ËÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎÀßÄê¤Ï¥æ¡¼¥¶¥×¥í¥Õ¥£¡¼¥ë¤Îɽ¼¨¸À¸ìÀßÄê¤Ë±Æ¶Á¤·¤Þ¤»¤ó¡£'; -$string['configlocale'] = 'Á´ÂΤËŬÍѤµ¤ì¤ë¥í¥±¡¼¥ë¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤ÏÆüÉդνñ¼°¤È¸À¸ì¤Ë±Æ¶Á¤·¤Þ¤¹¡£»ØÄꤷ¤¿¸À¸ì¤¬É½¼¨¤µ¤ì¤ë¤¿¤á¤Ë¤Ï¡¢OS¤Ë¸À¸ì¥Ç¡¼¥¿¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£(Îã ja_JP.eucjp¡¢ja_JP.utf8¡¢en_US¡¢es_ES) ¤â¤·Ê¬¤«¤é¤Ê¤¤¾ì¹ç¤Ï¡¢¶õÇò¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configloginhttps'] = '¤³¤ÎÀßÄê¤òON¤Ë¤¹¤ë¤³¤È¤ÇMoodle¤Ï¡¢¥í¥°¥¤¥ó¥Ú¡¼¥¸¤Î¤ß¤Ç¥»¥­¥å¥¢httpsÀܳ(¥»¥­¥å¥¢¥í¥°¥¤¥ó)¤ò»ÈÍѤ·¤Þ¤¹¡£¤½¤Î¸å¡¢°ìÈÌŪ¤Ê®ÅÙ¤òÊݤĤ¿¤á¤ËÄ̾ï¤Îhttp URL¤ËÌá¤ê¤Þ¤¹¡£·Ù¹ð: ¤³¤ÎÀßÄê¤ò¹Ô¤¦¤Ë¤Ï¥¦¥§¥Ö¥µ¡¼¥Ð¤Çhttps¤ò»ÈÍѤǤ­¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤â¤·¡¢https¤¬»ÈÍѤǤ­¤Ê¤¤¾õÂ֤Ǥ³¤ÎÀßÄê¤ò¹Ô¤Ã¤¿¾ì¹ç¡¢¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤ËÆþ¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£'; -$string['configloglifetime'] = '¤³¤³¤Ç¤Ï¥æ¡¼¥¶¤Î³èư¤Ë´Ø¤¹¤ë¥í¥°¤ÎÊÝ»ý´ü´Ö¤òÀßÄꤷ¤Þ¤¹¡£»ØÄꤷ¤¿Ãͤè¤ê¸Å¤¤¥í¥°¤Ï¼«Æ°Åª¤Ëºï½ü¤µ¤ì¤Þ¤¹¡£²Äǽ¤Ê¸Â¤êŤ¤´Ö¥í¥°¤òÊÝ»ý¤¹¤ëÊý¤¬Îɤ¤¤Î¤Ç¤¹¤¬¡¢¥¢¥¯¥»¥¹·ï¿ô¤¬Â¿¤¯¡¢¥µ¡¼¥Ð¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ËÌäÂ꤬¤¢¤ë¾ì¹ç¤Ï¡¢Ã»¤¤´ü´Ö¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configlongtimenosee'] = '³ØÀ¸¤¬Ä¹´ü´Ö¥í¥°¥¤¥ó¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¼«Æ°Åª¤Ë¥³¡¼¥¹¤«¤éºï½ü¤µ¤ì¤Þ¤¹¡£¤³¤ÎÃͤϺï½ü´ü¸Â¤ò·èÄꤷ¤Þ¤¹¡£'; -$string['configmaxbytes'] = '¤³¤³¤Ç¤Ï¥µ¥¤¥ÈÁ´ÂΤǥ¢¥Ã¥×¥í¡¼¥É¤Ç¤­¤ë¥Õ¥¡¥¤¥ë¤ÎºÇÂ祵¥¤¥º¤òÀßÄꤷ¤Þ¤¹¡£¤³¤ÎÀßÄê¤ÏPHPÀßÄê¤Îupload_max_filesize¤ª¤è¤ÓApacheÀßÄê¤ÎLimitRequestBody¤ËÀ©¸Â¤µ¤ì¤Þ¤¹¡£maxbytes¤Ï¥³¡¼¥¹¥ì¥Ù¥ë¤Þ¤¿¤Ï¥â¥¸¥å¡¼¥ë¥ì¥Ù¥ë¤ÇÁªÂò¤¹¤ë¥µ¥¤¥ºÉý¤òÀ©¸Â¤·¤Þ¤¹¡£'; -$string['configmaxeditingtime'] = '¤³¤³¤Ç¤Ï¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ¤äÆü»ïÅù¤òÊÔ½¸²Äǽ¤Ê»þ´Ö¤òÀßÄꤷ¤Þ¤¹¡£Ä̾ï30ʬ¤¬Å¬ÀÚ¤ÊÃͤǤ¹¡£'; -$string['configmessaging'] = '¥µ¥¤¥È¤Î¥æ¡¼¥¶´Ö¤Ç¥á¥Ã¥»¡¼¥¸¥·¥¹¥Æ¥à¤òÍøÍѤǤ­¤ë¤è¤¦¤Ë¤·¤Þ¤¹¤«?'; -$string['confignoreplyaddress'] = 'Moodle¤Ç¤Ï¡¢¥á¡¼¥ë¤¬¥æ¡¼¥¶¤ËÁ÷¿®¤µ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹ ( Îã ¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ )¡£¤³¤³¤ÇÀßÄꤹ¤ë¥á¡¼¥ë¥¢¥É¥ì¥¹¤Ï¡¢¡ÖFrom¡×¤Ë»ÈÍѤµ¤ì¡¢¼õ¿®¼Ô¤¬Ä¾ÀÜÁ÷¿®¼Ô¤ËÊÖ¿®¤Ç¤­¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹ ( Î㠥桼¥¶¤¬¸Ä¿Í¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò±£¤·¤¿¤¤¾ì¹ç )¡£'; -$string['confignotifyloginfailures'] = '¥í¥°¥¤¥ó¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¡¢¥á¡¼¥ë¤Ë¤è¤ëÄÌÃΤò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Ã¯¤¬¥á¡¼¥ëÄÌÃΤò¼õ¤±¼è¤ê¤Þ¤¹¤«?'; -$string['confignotifyloginthreshold'] = '¥í¥°¥¤¥ó¼ºÇÔÄÌÃΤ¬Í­¸ú¤Î¾ì¹ç¡¢Æ±°ì¥æ¡¼¥¶¤Þ¤¿¤ÏIP¥¢¥É¥ì¥¹¤¬²¿²ó¥í¥°¥¤¥ó¤Ë¼ºÇÔ¤¹¤ë¤È¥á¡¼¥ëÄÌÃΤ·¤Þ¤¹¤«?'; -$string['configopentogoogle'] = '¤³¤ÎÀßÄê¤ò¹Ô¤Ã¤¿¾ì¹ç¡¢Google¤Ï¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤Ë¥²¥¹¥È¤È¤·¤ÆÆþ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£²Ã¤¨¤Æ¡¢Google¤¬¥²¥¹¥È¤È¤·¤Æ¼«Æ°Åª¤Ëµ­Ï¿¤·¤¿¥Ç¡¼¥¿¤ò¸µ¤Ë¡¢Â¾¤Î¿Í¤¬¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï´û¤Ë¥²¥¹¥È¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Æ¤¤¤ë¾ì¹ç¤ÎÆ©²á¥¢¥¯¥»¥¹¤Î¤ß¤òÄ󶡤·¤Þ¤¹¡£'; -$string['configpathtoclam'] = 'clam AV¤Î¥Ñ¥¹¡£¶²¤é¤¯¡¢/usr/bin/clamscan or /usr/bin/clamdscan ¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£clam AV¤òÀµ¾ï¤Ëưºî¤µ¤»¤ë¤¿¤á¤Ë¡¢¤³¤ÎÀßÄê¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£'; -$string['configproxyhost'] = '¥µ¡¼¥Ð¤Î¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥¢¥¯¥»¥¹¤Ë¥×¥í¥¯¥· ( Îã ¥Õ¥¡¥¤¥¢¡¼¥¦¥©¡¼¥ë ) ¤¬É¬Íפʾì¹ç¤Ï¡¢¥×¥í¥¯¥·¤Î¥Û¥¹¥È̾¤È¥Ý¡¼¥ÈÈÖ¹æ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£É¬ÍפǤʤ¤¾ì¹ç¤Ï¶õÇò¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configquarantinedir'] = 'clam AV¤Ë´¶À÷¥Õ¥¡¥¤¥ë¤ò³ÖÎ¥Íѥǥ£¥ì¥¯¥È¥ê¤Ë°Üư¤µ¤»¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤³¤Ë¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¥¦¥§¥Ö¥µ¡¼¥Ð¤è¤ê½ñ¤­¹þ¤ß¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤³¤ò¶õÇò¤Ë¤·¤¿¾ì¹ç¡¢¤Þ¤¿¤Ï¸ºß¤·¤Ê¤¤¤«¡¢½ñ¤­¹þ¤ß¸¢¤¬Ìµ¤¤¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤¿¾ì¹ç¡¢´¶À÷¥Õ¥¡¥¤¥ë¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£ËöÈø¤Ë¥¹¥é¥Ã¥·¥å¤òÉÕ¤±¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£'; -$string['configrunclamonupload'] = '¥Õ¥¡¥¤¥ë¥¢¥Ã¥×¥í¡¼¥É»þ¤Ëclam AV¤òưºî¤µ¤»¤Þ¤¹¤«? Àµ¾ï¤Ëưºî¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢pathtoclam¤ËÀµ¤·¤¤¥Ñ¥¹¤òÆþÎϤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ( Clam AV¤Ï¼¡¤Î¾ì½ê¤ÇÆþ¼ê¤Ç¤­¤ë̵ÎÁ¥¦¥¤¥ë¥¹¥¹¥­¥ã¥Ê¡¼¤Ç¤¹¡£ http://www.clamav.net/ )\''; -$string['configsectioninterface'] = '¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹'; -$string['configsectionmail'] = '¥á¡¼¥ë'; -$string['configsectionmaintenance'] = '¥á¥ó¥Æ¥Ê¥ó¥¹'; -$string['configsectionmisc'] = '¤½¤Î¾'; -$string['configsectionoperatingsystem'] = '¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à'; -$string['configsectionpermissions'] = '¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó'; -$string['configsectionsecurity'] = '¥»¥­¥å¥ê¥Æ¥£'; -$string['configsectionuser'] = '¥æ¡¼¥¶'; -$string['configsecureforms'] = 'Moodle¤Ç¤Ï¡¢¥Õ¥©¡¼¥à¥Ç¡¼¥¿¤ò¼õÆþ¤ì¤ë¾ì¹ç¤ÎÄɲÃŪ¤Ê¥ì¥Ù¥ë¤Î¥»¥­¥å¥ê¥Æ¥£¡¼¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ÎÀßÄê¤òYes¤Ë¤·¤¿¾ì¹ç¡¢¥Ö¥é¥¦¥¶¤ÎHTTP_REFERERÊÑ¿ô¤È¥Õ¥©¡¼¥àÀßÃ֤Υ¢¥É¥ì¥¹¤¬¾È¹ç¤µ¤ì¤Þ¤¹¡£ ¥æ¡¼¥¶¤¬¥Õ¥¡¥¤¥¢¡¼¥¦¥©¡¼¥ë¥½¥Õ¥È(Îã Zonealarm)¤ò»ÈÍѤ·¤Æ¥È¥é¥Õ¥£¥Ã¥¯¤«¤éHTTP_REFERER¤ò¼è½ü¤¯ÀßÄê¤ò¤·¤Æ¤¤¤ë¾ì¹ç¡¢µ©¤ËÌäÂ꤬ȯÀ¸¤¹¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢¥Õ¥©¡¼¥à»ÈÍÑ»þ¤Ë²èÌ̤¬¡Ö¸Ç¤Þ¤ë¡×¸½¾Ý¤Ç¤¹¡£¥æ¡¼¥¶¤¬¥í¥°¥¤¥ó¥Ú¡¼¥¸(Î㤨¤Ð)¤ÇÌäÂê¤òÊú¤¨¤Æ¤¤¤ë¾ì¹ç¤Ï¤³¤ÎÀßÄê¤òNo¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤·¤«¤·¤³¤ÎÀßÄê¤Ç¤Ï¥Ö¥ë¡¼¥È¥Õ¥©¡¼¥¹¡¦¥Ñ¥¹¥ï¡¼¥É¥¢¥¿¥Ã¥¯¤ËÂФ·¤ÆÌµËÉÈ÷¤Ê¾õÂ֤ˤʤê¤Þ¤¹¡£Ê¬¤«¤é¤Ê¤¤¾ì¹ç¤Ï¡¢¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configsessioncookie'] = '¤³¤³¤Ç¤ÏMoodle¤Î¥»¥Ã¥·¥ç¥ó¤Ç»ÈÍѤµ¤ì¤ë¥¯¥Ã¥­¡¼¤Î̾Á°¤òÀßÄꤷ¤Þ¤¹¡£¤³¤ÎÀßÄê¤Ï1¤Ä°Ê¾å¤ÎMoodle¤¬Æ±¤¸¥¦¥§¥Ö¥µ¥¤¥È¤Ç²Ôư¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¡¢¥¯¥Ã¥­¡¼¤¬º®Í𤹤ë¤Î¤òËɤ°¤¿¤á¤À¤±¤ËǤ°Õ¤Ç¤ª»È¤¤¤¯¤À¤µ¤¤¡£'; -$string['configsessiontimeout'] = '¤³¤Î¥µ¥¤¥È¤Ë¥í¥°¥¤¥ó¤·¤ÆÄ¹»þ´Ö²¿¤â¤·¤Ê¤¤ ( ¥Ú¡¼¥¸¤ò¹¹¿·¤·¤Ê¤¤ ) ¾ì¹ç¡¢¼«Æ°Åª¤Ë¥í¥°¥¢¥¦¥È ( ¥»¥Ã¥·¥ç¥ó¤ò½ªÎ» ) ¤µ¤»¤Þ¤¹¡£¤³¤ÎÊÑ¿ô¤Ï¥í¥°¥¢¥¦¥È¤µ¤»¤ë¤Þ¤Ç¤Î»þ´Ö¤òÀßÄꤷ¤Þ¤¹¡£'; -$string['configshowblocksonmodpages'] = '¤¤¤¯¤Ä¤«¤Î³èư¥â¥¸¥å¡¼¥ë¤Ç¤Ï¡¢¥Ú¡¼¥¸¤Ë¥Ö¥í¥Ã¥¯¤òɽ¼¨¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤ËÀßÄꤷ¤¿¾ì¹ç¡¢¶µ»Õ¤Ï¥µ¥¤¥É¥Ö¥í¥Ã¥¯¤ò¥Ú¡¼¥¸¤ËÄɲ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£¡ÖNo¡×¤Ë¤·¤¿¾ì¹ç¡¢¤³¤Îµ¡Ç½¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£'; -$string['configshowsiteparticipantslist'] = 'Á´¤Æ¤Î³ØÀ¸¤ª¤è¤Ó¶µ»Õ¤Ï»²²Ã¼Ô¥ê¥¹¥È¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£Ã¯¤¬¤³¤Î»²²Ã¼Ô¥ê¥¹¥È¤ò±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤«?'; -$string['configsitepolicy'] = '¤³¤Î¥µ¥¤¥È¤ò»ÈÍѤ¹¤ëÁ°¤Ë¡¢¥µ¥¤¥È»ÈÍѵöÂú¤ËÁ´¤Æ¤Î¥æ¡¼¥¶¤¬Æ±°Õ¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢¥µ¥¤¥È»ÈÍѵöÂú¤ÎURL¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£Æ±°Õ¤¹¤ëɬÍפ¬Ìµ¤¤¾ì¹ç¤Ï¶õÇò¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£URL¤Ï¼«Í³¤Ë»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ - ÊØÍø¤Ê¾ì½ê¤Ï¥µ¥¤¥È¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¤¹¡£Îã http://yoursite/file.php/1/policy.html'; -$string['configslasharguments'] = '¥Õ¥¡¥¤¥ë ( ¥¤¥á¡¼¥¸¡¢¥¢¥Ã¥×¥í¡¼¥ÉÅù ) ¤Ï/=¥¹¥é¥Ã¥·¥å ( ¤³¤³¤Ç¤Ï2¤ÄÌܤΥª¥×¥·¥ç¥ó ) ¤ò»È¤Ã¤Æ¥×¥í¥°¥é¥à¤Ë¼õ¤±ÅϤµ¤ì¤Þ¤¹¡£¤³¤ÎÊýË¡¤Ë¤è¤ê´Êñ¤Ë¥Ö¥é¥¦¥¶Æâ¤ä¥×¥í¥¯¥·¤Ë¥¤¥á¡¼¥¸¤ò°ì»þÊݸ¤µ¤»¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£¤¤¤¯¤Ä¤«¤ÎPHP¥µ¡¼¥Ð¤Ç¤Ï¤³¤ÎÊýË¡¤¬¼è¤ì¤Ê¤¤¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤â¤·¥Õ¥¡¥¤¥ë¤ä¥¤¥á¡¼¥¸(Î㠥桼¥¶¤Î´é¼Ì¿¿Åù)¤Î¥¢¥Ã¥×¥í¡¼¥É¤ËÌäÂ꤬¤¢¤ë¾ì¹ç¤ÏºÇ½é¤Î¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configsmtphosts'] = 'Moodle¤Ç¥á¡¼¥ë¤òÁ÷¿®¤¹¤ë¤È¤­¤Ë»ÈÍѤ¹¤ë1¤Ä°Ê¾å¤ÎSMTP¥µ¡¼¥Ð¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤ ( Îã mail.a.com ¤Þ¤¿¤Ïmail.a.com;mail.b.com )¡£¶õÇò¤Ë¤·¤¿¾ì¹ç¡¢Moodle¤Ï¼«Æ°Åª¤ËPHP¤Î¥á¡¼¥ëÁ÷¿®ÊýË¡¤ò»ÈÍѤ·¤Þ¤¹¡£'; -$string['configsmtpuser'] = '¾åµ­¤ÇSMTP¥µ¡¼¥Ð¤òÀßÄꤷ¤Æ¾°³î¤Äǧ¾Ú¤¬É¬Íפʾì¹ç¤Ï¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤òÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configteacherassignteachers'] = '°ìÈ̤ζµ»Õ¤Ï¾¤Î¶µ»Õ¤ò¥³¡¼¥¹Æâ¤Ë³äÅö¤Æ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤«? ¡ÖNo¡×¤Î¾ì¹ç¡¢¥³¡¼¥¹ºîÀ®¼Ô¤ª¤è¤Ó´ÉÍý¼Ô¤Î¤ß¤¬¶µ»Õ¤Î³äÅö¤Æ¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['configthemelist'] = '¶õÇò¤Ë¤·¤¿¾ì¹ç¡¢Á´¤Æ¤Î¥Æ¡¼¥Þ¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Æ¡¼¥Þ¥á¥Ë¥å¡¼¤òû¤¯¤·¤¿¤¤¾ì¹ç¤Ï¡¢¥³¥ó¥Þ¤Ç¶èÀڤ俥ơ¼¥Þ̾¤Î¥ê¥¹¥È¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£Îã: standard,orangewhite'; -$string['configtimezone'] = '¤³¤³¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¥¿¥¤¥à¥¾¡¼¥ó¤ÎÀßÄê¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤ÏÆüÉÕɽ¼¨¤Î¤¿¤á¤Î¥Ç¥Õ¥©¥ë¥È¥¿¥¤¥à¥¾¡¼¥ó¤òÀßÄꤹ¤ë¤Î¤ß¤Ç¡¢³Æ¥æ¡¼¥¶¤Ï¥×¥í¥Õ¥£¡¼¥ë¤ÎÀßÄê¤Ë¤è¤ê¡¢¤³¤ÎÀßÄê¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤³¤ÇÀßÄꤹ¤ë¡Ö¥µ¡¼¥Ð»þ´Ö¡×¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤ËÂФ¹¤ëMoodle¤Î¥Ç¥Õ¥©¥ë¥ÈÀßÄê¤Ç¤¹¡£¤³¤ì¤ËÂФ·¤Æ¥æ¡¼¥¶¥×¥í¥Õ¥£¡¼¥ë¤Î¡Ö¥µ¡¼¥Ð»þ´Ö¡×¤Ç¤Ï¥æ¡¼¥¶¤¬ÆÈ¼«¤Î¥Ç¥Õ¥©¥ë¥È¥¿¥¤¥à¥¾¡¼¥óÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£'; -$string['configunzip'] = 'UNZIP¥×¥í¥°¥é¥à¤Î¾ì½ê¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤ ( Unix¤Î¤ß¡¢Ç¤°Õ )¡£»ØÄꤷ¤¿¾ì¹ç¡¢zip¥Õ¥¡¥¤¥ë¤ò²òÅà¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£¶õÇò¤Ë¤·¤¿¾ì¹ç¡¢Moodle¤ÏÆâÉô¥ë¡¼¥Á¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£'; -$string['configvariables'] = '¾ÜºÙÀßÄê'; -$string['configwarning'] = '´Ö°ã¤Ã¤¿ÀßÄê¤Ï¥È¥é¥Ö¥ë¤Î¸¶°ø¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤é¤ÎÀßÄê¤òÊѹ¹¤¹¤ë¾ì¹ç¤ÏÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configzip'] = 'ZIP¥×¥í¥°¥é¥à¤Î¾ì½ê¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤ ( UNIX¤Î¤ß¡¢Ç¤°Õ )¡£¤³¤ì¤ÏZIP½ñ¸Ë¤ò¥µ¡¼¥ÐÆâ¤ÇºîÀ®¤¹¤ë¤¿¤á¤ËɬÍפǤ¹¡£¶õÇò¤Ë¤·¤¿¾ì¹ç¡¢Moodle¤ÏÆâÉô¥ë¡¼¥Á¥ó¤ò»ÈÍѤ·¤Þ¤¹'; -$string['confirmation'] = '³Îǧ'; -$string['cronwarning'] = 'cron.php¥á¥ó¥Æ¥Ê¥ó¥¹¥¹¥¯¥ê¥×¥È¤¬¾¯¤Ê¤¯¤È¤â24»þ´Ö²Ôư¤·¤Æ¤¤¤Þ¤»¤ó¡£
                cron.php¤Î¼«Æ°²½¤Ë´Ø¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¥É¥­¥å¥á¥ó¥È¤ò¤´Í÷¤¯¤À¤µ¤¤¡£'; -$string['edithelpdocs'] = '¥Ø¥ë¥×ʸ½ñ¤ÎÊÔ½¸'; -$string['editstrings'] = 'ËÝÌõ¥¹¥È¥ê¥ó¥°¤ÎÊÔ½¸'; -$string['filterall'] = 'Á´¤Æ¤Îʸ»ú¤ò¥Õ¥£¥ë¥¿¤¹¤ë'; $string['filteruploadedfiles'] = '¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë¤ò¥Õ¥£¥ë¥¿¤¹¤ë'; -$string['helpadminseesall'] = '´ÉÍý¼Ô¤ÏÁ´¤Æ¤Î¥«¥ì¥ó¥À¡¼¥¤¥Ù¥ó¥È¤ò±ÜÍ÷¤Þ¤¿¤Ï¼«Ê¬¼«¿È¤Î¥¤¥Ù¥ó¥È¤È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤«?'; -$string['helpcalendarsettings'] = 'Moodle¤Î¥«¥ì¥ó¥À¡¼¤ÎÆü/»þ´Ö¤Ë´Ø¤¹¤ëÍÍ¡¹¤ÊÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£'; -$string['helpforcetimezone'] = '¥æ¡¼¥¶¤ËÆÈ¼«¤Î¥¿¥¤¥à¥¾¡¼¥ó¤òÁªÂò¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¤Ï¡¢¥¿¥¤¥à¥¾¡¼¥ó¤ò¶¯À©¤·¤Þ¤¹¡£'; -$string['helpsitemaintenance'] = '¥¢¥Ã¥×¥°¥ì¡¼¥É¤ä¤½¤Î¾¤Îºî¶È»þ¤Ë»ÈÍѤ·¤Þ¤¹¡£'; -$string['helpstartofweek'] = '½µ¤Î»Ï¤á¤Ï²¿ÍËÆü¤Ç¤¹¤«?'; -$string['helpupcominglookahead'] = '¥Ç¥Õ¥©¥ë¥È¤Ç²¿ÆüÁ°¤Î¥¤¥Ù¥ó¥È¤òľ¶á¥¤¥Ù¥ó¥È¤È¤·¤ÆÉ½¼¨¤·¤Þ¤¹¤«?'; -$string['helpupcomingmaxevents'] = 'ľ¶á¥¤¥Ù¥ó¥È¤òºÇÂ粿·ï¥æ¡¼¥¶¤Ëɽ¼¨¤·¤Þ¤¹¤«?'; -$string['helpweekenddays'] = '²¿ÍËÆü¤ò¡Ö½µËö¡×¤È¤·¤ÆÊ̤理Çɽ¼¨¤·¤Þ¤¹¤«?'; -$string['importtimezones'] = '¥¿¥¤¥à¥¾¡¼¥ó¥ê¥¹¥È¤Î¹¹¿·'; -$string['importtimezonescount'] = '$a->source ¤è¤ê $a->count ¤Î¥¨¥ó¥È¥ê¤¬¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤Þ¤·¤¿¡£'; -$string['importtimezonesfailed'] = '¥½¡¼¥¹¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿!'; -$string['nodstpresetsexist'] = 'DST ( ²Æ»þ´Ö ) ¥×¥ê¥»¥Ã¥È¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤¿¤á¡¢DST ( ²Æ»þ´Ö ) ¥µ¥Ý¡¼¥È¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£²¼µ­¤Î¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¥×¥ê¥»¥Ã¥È¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['optionalmaintenancemessage'] = '¥ª¥×¥·¥ç¥ó¡¦¥á¥ó¥Æ¥Ê¥ó¥¹¥á¥Ã¥»¡¼¥¸'; -$string['sitemaintenance'] = '¤³¤Î¥µ¥¤¥È¤Ï¥á¥ó¥Æ¥Ê¥ó¥¹Ãæ¤Ç¤¹¡£¸½ºß¤´ÍøÍѤ¤¤¿¤À¤±¤Þ¤»¤ó¡£'; -$string['sitemaintenancemode'] = '¥á¥ó¥Æ¥Ê¥ó¥¹¥â¡¼¥É'; -$string['sitemaintenanceoff'] = '¥á¥ó¥Æ¥Ê¥ó¥¹¥â¡¼¥É¤¬²ò½ü¤µ¤ì¤Þ¤·¤¿¡£¥µ¥¤¥È¤ÏÀµ¾ï¤Ëưºî¤·¤Æ¤¤¤Þ¤¹¡£'; -$string['sitemaintenanceon'] = '¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤Ï¸½ºß¥á¥ó¥Æ¥Ê¥ó¥¹¥â¡¼¥É¤Ç±¿ÍѤµ¤ì¤Æ¤¤¤Þ¤¹ ( ´ÉÍý¼Ô¤Î¤ß¥í¥°¥¤¥ó¤Þ¤¿¤Ï¥µ¥¤¥È¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ ) ¡£'; -$string['sitemaintenancewarning'] = '¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤Ï¸½ºß¥á¥ó¥Æ¥Ê¥ó¥¹¥â¡¼¥É¤Ç±¿ÍѤµ¤ì¤Æ¤¤¤Þ¤¹ ( ´ÉÍý¼Ô¤Î¤ß¥í¥°¥¤¥ó¤Ç¤­¤Þ¤¹ ) ¡£Ä̾ﱿÍѤËÌ᤹¤Ë¤Ï¡¢¥á¥ó¥Æ¥Ê¥ó¥¹¥â¡¼¥É¤ò²ò½ü ¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['tabselectedtofront'] = '¥¿¥°ÉÕ¤­¤Î¥Æ¡¼¥Ö¥ë¤Ç¡¢¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¥¿¥°¤ÎÎó¤òºÇÁ°Ì̤Ëɽ¼¨¤¹¤ë¡£'; -$string['therewereerrors'] = '¥Ç¡¼¥¿¤Ë¥¨¥é¡¼¤¬¤¢¤ê¤Þ¤¹¡£'; -$string['timezoneforced'] = '¥µ¥¤¥È´ÉÍý¼Ô¤Ë¤è¤Ã¤Æ¶¯À©¤µ¤ì¤Æ¤¤¤Þ¤¹¡£'; -$string['timezoneisforcedto'] = '¥æ¡¼¥¶¤Ë»ÈÍѤò¶¯À©'; -$string['timezonenotforced'] = '¥æ¡¼¥¶¤¬ÆÈ¼«¤Î¥¿¥¤¥à¥¾¡¼¥ó¤ò»ÈÍÑ'; -$string['upgradelogs'] = 'Àµ¾ï¤Ëưºî¤µ¤»¤ë¤¿¤á¤Ë¤Ï¸Å¤¤¥í¥°¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤¬É¬ÍפǤ¹¡£¾ÜºÙ¤Ï¤³¤Á¤é'; -$string['upgradelogsinfo'] = '¥í¥°¤ÎÊݸÊýË¡¤ËÊѹ¹ÅÀ¤¬¤¢¤ê¤Þ¤¹¡£Á´³èư¥Ù¡¼¥¹¤Î¥í¥°¤ò±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢¸Å¤¤¥í¥°¤ò¥¢¥Ã¥×¥°¥ì¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥µ¥¤¥È¤Ë¤è¤Ã¤Æ¤Ï¥¢¥Ã¥×¥°¥ì¡¼¥Éºî¶È¤ËĹ»þ´Ö(Îã ¿ô»þ´Ö)¤òÍפ·¡¢µ¬ÌϤ¬Â礭¤Ê¥µ¥¤¥È¤Ç¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÉéô¤¬¤«¤«¤ê¤Þ¤¹¡£½èÍý¤ò³«»Ï¤·¤¿¾ì¹ç¤Ï½ªÎ»¤¹¤ë¤Þ¤Ç¤½¤Î¤Þ¤Þ(¥Ö¥é¥¦¥¶¤ò³«¤¤¤¿¤Þ¤Þ)¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¿´ÇÛ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó - ¥í¥°¤¬¹¹¿·¤µ¤ì¤¿¸å¤Ë¡¢¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤ÏÀµ¾ï¤Ëưºî¤·¤Þ¤¹¡£

                ËÜÅö¤Ë¥í¥°¤ò¥¢¥Ã¥×¥°¥ì¡¼¥É¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?'; -$string['upgradesure'] = '¤¢¤Ê¤¿¤ÎMoodle¥Õ¥¡¥¤¥ë¤¬¹¹¿·¤µ¤ì¤Þ¤·¤¿¡£¼«Æ°Åª¤Ë¼¡¤Î¥Ð¡¼¥¸¥ç¥ó¤ËÊѹ¹¤·¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹: -

                $a

                -

                °ìö¡¢¤³¤Îºî¶È¤ò¹Ô¤¦¤È¸µ¤ËÌ᤹¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

                -

                ËÜÅö¤ËMoodle¤ò¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¥¢¥Ã¥×¥°¥ì¡¼¥É¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?

                '; +$string['upgradelogs'] = 'Àµ¾ï¤Ëưºî¤µ¤»¤ë°Ù¤Ë¤Ï¸Å¤¤¥í¥°¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤¬É¬ÍפǤ¹¡£¾ÜºÙ¤Ï¤³¤Á¤é'; +$string['upgradelogsinfo'] = '¥í¥°¤ÎÊݸÊýË¡¤ËÊѹ¹ÅÀ¤¬¤¢¤ê¤Þ¤¹¡£Á´³èư¥Ù¡¼¥¹¤Î¥í¥°¤ò±ÜÍ÷¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢¸Å¤¤¥í¥°¤ò¥¢¥Ã¥×¥°¥ì¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥µ¥¤¥È¤Ë¤è¤Ã¤Æ¤Ï¥¢¥Ã¥×¥°¥ì¡¼¥Éºî¶È¤ËĹ»þ´Ö(Îã ¿ô»þ´Ö)¤òÍפ·¡¢µ¬ÌϤ¬Â礭¤Ê¥µ¥¤¥È¤Ç¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÉéô¤¬¤«¤«¤ê¤Þ¤¹¡£½èÍý¤ò³«»Ï¤·¤¿¾ì¹ç¤Ï½ªÎ»¤¹¤ë¤Þ¤Ç¤½¤Î¤Þ¤Þ(¥Ö¥é¥¦¥¶¤ò³«¤¤¤¿¤Þ¤Þ)¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¿´ÇÛ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó - ¥í¥°¤¬¹¹¿·¤µ¤ì¤¿¸å¤Ë¡¢¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤ÏÀµ¾ï¤Ëưºî¤·¤Þ¤¹¡£

                ËÜÅö¤Ë¥í¥°¤ò¥¢¥Ã¥×¥°¥ì¡¼¥É¤·¤Æ¤âµ¹¤·¤¤¤Ç¤¹¤«?'; $string['upgradinglogs'] = '¥í¥°¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É'; ?> diff --git a/lang/ja/algebra.php b/lang/ja/algebra.php index 320096a4688..7cbeea1e32f 100644 --- a/lang/ja/algebra.php +++ b/lang/ja/algebra.php @@ -1,5 +1,5 @@ teacher ¤¬¤¢¤Ê¤¿¤Î²ÝÂê¡Ö $a->assignment ¡×¤ËÂФ¹¤ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÅÐÏ¿¤·¤Þ¤·¤¿¡£ +$string['assignmentmail'] = '$a->teacher ¤¬¤¢¤Ê¤¿¤Î \'$a->assignment\' ¤ËÂФ¹¤ëÄó½Ð²ÝÂê¤Ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÅê¹Æ¤·¤Þ¤·¤¿¡£ ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤Ï¤¢¤Ê¤¿¤ÎÄó½Ð²ÝÂê¤ËÄɲäµ¤ì¤Æ¤¤¤Þ¤¹: $a->url'; -$string['assignmentmailhtml'] = '$a->teacher ¤¬¤¢¤Ê¤¿¤Î²ÝÂê¡Ö $a->assignment ¡× ¤ËÂФ¹¤ëÄó½Ð²ÝÂê¤Ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÅÐÏ¿¤·¤Þ¤·¤¿¡£ -

                +$string['assignmentmailhtml'] = '$a->teacher ¤¬¤¢¤Ê¤¿¤Î \'$a->assignment\' ¤ËÂФ¹¤ëÄó½Ð²ÝÂê¤Ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÅê¹Æ¤·¤Þ¤·¤¿¡£ +

                ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤Ï¤¢¤Ê¤¿¤Îurl\">Äó½Ð²ÝÂê¤ËÄɲäµ¤ì¤Æ¤¤¤Þ¤¹¡£'; $string['assignmentname'] = '²ÝÂê̾'; $string['assignmenttype'] = '²ÝÂ꥿¥¤¥×'; -$string['availabledate'] = 'Äó½Ð³«»Ï'; -$string['configmaxbytes'] = '¤³¤Î¥µ¥¤¥È¤Ë¤ª¤±¤ëÁ´¤Æ¤Î²ÝÂê¤Ë´Ø¤¹¤ë¥Ç¥Õ¥©¥ë¥È¤ÎºÇÂ祵¥¤¥º ( ¥³¡¼¥¹À©¸Â¤ª¤è¤Ó¾¤Î¥í¡¼¥«¥ëÀßÄê¤Ë½¾¤¤¤Þ¤¹ )'; +$string['configmaxbytes'] = '¤³¤Î¥µ¥¤¥È¤Ë¤ª¤±¤ëÁ´¤Æ¤Î²ÝÂê¤Ë´Ø¤¹¤ë¥Ç¥Õ¥©¥ë¥È¤ÎºÇÂ祵¥¤¥º(¥³¡¼¥¹À©¸ÂµÚ¤Ó¾¤Î¥í¡¼¥«¥ëÀßÄê¤Ë½¾¤¤¤Þ¤¹)'; $string['description'] = '¾ÜºÙ'; -$string['duedate'] = 'Äó½Ð½ªÎ»'; +$string['duedate'] = 'Äó½Ð´ü¸Â'; $string['duedateno'] = 'Äó½Ð´ü¸Â̵¤·'; $string['early'] = '$a Á᤯Äó½Ð'; -$string['emailteachermail'] = '$a->username ¤¬¡Ö $a->assignment ¡×¤ÎÄó½Ð²ÝÂê¤ò¹¹¿·¤·¤Þ¤·¤¿¡£ - -²¼µ­¤Ë¤Æ±ÜÍ÷²Äǽ¤Ç¤¹: - -$a->url'; -$string['emailteachermailhtml'] = '$a->username ¤¬¡Ö $a->assignment ¡×¤ÎÄó½Ð²ÝÂê¤ò¹¹¿·¤·¤Þ¤·¤¿¡£

                -url\">¥¦¥§¥Ö¥µ¥¤¥È¤Ë¤Æ±ÜÍ÷²Äǽ¤Ç¤¹¡£'; -$string['emailteachers'] = '¶µ»Õ¤Ë¥á¡¼¥ëÄÌÃΤò¹Ô¤¦'; -$string['existingfiledeleted'] = 'ÅÐÏ¿ºÑ¤ß¥Õ¥¡¥¤¥ë¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿: $a'; +$string['existingfiledeleted'] = '¥Õ¥¡¥¤¥ë¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿: $a'; $string['failedupdatefeedback'] = '¥æ¡¼¥¶ $a ¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¹¹¿·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿ '; $string['feedback'] = '¥Õ¥£¡¼¥É¥Ð¥Ã¥¯'; $string['feedbackupdated'] = '$a ¤Î»²²Ã¼Ô¤ËÂФ¹¤ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤Î¹¹¿·'; @@ -37,27 +28,25 @@ $string['maximumgrade'] = ' $string['maximumsize'] = 'ºÇÂ祵¥¤¥º'; $string['modulename'] = '²ÝÂê'; $string['modulenameplural'] = '²ÝÂê'; -$string['newsubmissions'] = '²ÝÂ꤬Äó½Ð¤µ¤ì¤Þ¤·¤¿¡£'; -$string['noassignments'] = '²ÝÂê¤Ï¤Þ¤À¤¢¤ê¤Þ¤»¤ó¡£'; +$string['newsubmissions'] = '²ÝÂ꤬Äó½Ð¤µ¤ì¤Þ¤·¤¿'; $string['notgradedyet'] = '̤ɾ²Á'; $string['notsubmittedyet'] = '̤Äó½Ð'; -$string['overwritewarning'] = 'Ãí°Õ: ºÆÅÙ¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤Ë¤è¤ê¸½ºß¤ÎÄó½Ðʪ¤ÏÃÖ¤­´¹¤¨¤é¤ì¤Þ¤¹¡£'; +$string['overwritewarning'] = 'Ãí°Õ:ºÆÅÙ¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤Ë¤è¤ê¸½ºß¤ÎÄó½Ðʪ¤ÏÃÖ¤­´¹¤¨¤é¤ì¤Þ¤¹'; $string['saveallfeedback'] = '¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÊݸ¤¹¤ë'; $string['submissionfeedback'] = 'Äó½Ð¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯'; $string['submissions'] = 'Äó½Ð'; -$string['submitassignment'] = '¤³¤Î¥Õ¥©¡¼¥à¤ò»ÈÍѤ·¤Æ²ÝÂê¤òÄó½Ð¤¹¤ë'; +$string['submitassignment'] = '¥Õ¥©¡¼¥à¤ò»ÈÍѤ·¤Æ²ÝÂê¤òÄó½Ð¤¹¤ë'; $string['submitted'] = 'Äó½Ð'; -$string['typeoffline'] = '¥ª¥Õ¥é¥¤¥ó³èư'; -$string['typeonline'] = '¥ª¥ó¥é¥¤¥ó³èư'; -$string['typeuploadsingle'] = 'ñ°ì¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É'; -$string['uploadbadname'] = 'ÉÔÀµ¤Êʸ»ú¤¬¥Õ¥¡¥¤¥ë̾¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤¿¤á¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£'; -$string['uploadedfiles'] = '¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤·¤Þ¤·¤¿¡£'; -$string['uploaderror'] = '¥µ¡¼¥Ð¤Ë¥Õ¥¡¥¤¥ë¤ÎÊÝÂ¸Ãæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£'; -$string['uploadfailnoupdate'] = '¥Õ¥¡¥¤¥ë¤Ï¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¤Þ¤·¤¿¤¬Äó½Ðʪ¤Î¹¹¿·¤Ï¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿!'; -$string['uploadfiletoobig'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤¬À©¸Â¤ò±Û¤¨¤Æ¤¤¤Þ¤¹ ( $a ¥Ð¥¤¥È°ÊÆâ )'; +$string['typeoffline'] = '¥ª¥Õ¥é¥¤¥ó²ÝÂê'; +$string['typeuploadsingle'] = '¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É'; +$string['uploadbadname'] = 'ÉÔÀµ¤Êʸ»ú¤¬¥Õ¥¡¥¤¥ë̾¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤¿¤á¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¥¢¥Ã¥×¥í¡¼¥É½ÐÍè¤Þ¤»¤ó'; +$string['uploadedfiles'] = '¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤·¤Þ¤·¤¿'; +$string['uploaderror'] = '¥µ¡¼¥Ð¤Ë¥Õ¥¡¥¤¥ë¤òÊÝÂ¸Ãæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿'; +$string['uploadfailnoupdate'] = '¥Õ¥¡¥¤¥ë¤Ï¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¤Þ¤·¤¿¤¬Äó½Ðʪ¤Î¹¹¿·¤Ï½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿!'; +$string['uploadfiletoobig'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤¬À©¸Â¤ò±Û¤¨¤Æ¤¤¤Þ¤¹($a ¥Ð¥¤¥È°ÊÆâ)'; $string['uploadnofilefound'] = '¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿ - ¼ÂºÝ¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë¤Ç¤¹¤«?'; -$string['uploadnotregistered'] = '¡Ö $a ¡×¤ÏÀµ¾ï¤Ë¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¤Þ¤·¤¿¤¬ÅÐÏ¿¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿!'; -$string['uploadsuccess'] = '¡Ö $a ¡×¤Î¥¢¥Ã¥×¥í¡¼¥É¤¬´°Î»¤·¤Þ¤·¤¿¡£'; +$string['uploadnotregistered'] = '\'$a\' ¤ÏÀµ¾ï¤Ë¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¤Þ¤·¤¿¤¬ÅÐÏ¿¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿!'; +$string['uploadsuccess'] = '\'$a\' ¤Î¥¢¥Ã¥×¥í¡¼¥É¤¬´°Î»¤·¤Þ¤·¤¿'; $string['viewfeedback'] = '²ÝÂê¤Îɾ²Á¤È¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤ò³Îǧ¤¹¤ë'; $string['viewsubmissions'] = '$a ·ï¤ÎÄó½Ð²ÝÂê¤ò³Îǧ¤¹¤ë'; $string['yoursubmission'] = '¤¢¤Ê¤¿¤ÎÄó½Ðʪ'; diff --git a/lang/ja/attendance.php b/lang/ja/attendance.php index 8661df1dc02..9d7e7d39c03 100644 --- a/lang/ja/attendance.php +++ b/lang/ja/attendance.php @@ -1,5 +1,5 @@ ¡Ö $a ¡×¤ò¥»¥Ã¥È¤·¤Æ¡¢ username¥Õ¥£¡¼¥ë¥É¤ª¤è¤Ópassword¥Õ¥£¡¼¥ë¥É¤òŬÀÚ¤ËMoodle¤ËÅϤ¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
                ´Ö°ã¤Ã¤¿URL¤òÀßÄꤹ¤ë¤È¡¢¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤«¤éÄù¤á½Ð¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤ÇÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
                ¥Ç¥Õ¥©¥ë¥È¤Î¥í¥°¥¤¥ó²èÌ̤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¶õÇò¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['alternateloginurl'] = 'ÂåÂØ¥í¥°¥¤¥óURL'; -$string['auth_cas_baseuri'] = '¥µ¡¼¥Ð¤ÎURI ( ¥Ù¡¼¥¹URI¤¬Ìµ¤¤¾ì¹ç¤Ï¶õÇò )
                CAS¥µ¡¼¥Ð¤¬ host.domaine.fr/CAS/ ¤Ë±þÅú¤¹¤ë¾ì¹ç¡¢
                cas_baseuri = CAS/'; -$string['auth_cas_create_user'] = 'Moodle¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËCASǧ¾Ú¥æ¡¼¥¶¤òÁÞÆþ¤·¤¿¤¤¾ì¹ç¤Ï¡¢¡ÖYes¡×¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£¡ÖNo¡×¤òÁªÂò¤·¤¿¾ì¹ç¤Ï¡¢Moodle¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥æ¡¼¥¶¤Î¤ß¤¬¥í¥°¥¤¥ó¤Ç¤­¤Þ¤¹¡£'; -$string['auth_cas_enabled'] = 'CASǧ¾Ú¤òÍøÍѤ·¤¿¤¤¾ì¹ç¤Ï¡¢¡ÖYes¡×¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['auth_cas_hostname'] = 'CAS¥µ¡¼¥Ð¤Î¥Û¥¹¥È̾
                Îã: host.domaine.fr'; -$string['auth_cas_invalidcaslogin'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢¥í¥°¥¤¥ó¤Ë¼ºÇÔ¤·¤Þ¤·¤¿ - ¤¢¤Ê¤¿¤Ïǧ¾Ú¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£'; -$string['auth_cas_language'] = '¸À¸ì¤ÎÁªÂò'; -$string['auth_cas_logincas'] = '¥»¥­¥å¥¢¥³¥Í¥¯¥·¥ç¥ó¡¦¥¢¥¯¥»¥¹'; -$string['auth_cas_port'] = 'CAS¥µ¡¼¥Ð¤Î¥Ý¡¼¥È'; -$string['auth_cas_server_settings'] = 'CAS¥µ¡¼¥ÐÀßÄê'; -$string['auth_cas_text'] = '¥»¥­¥å¥¢¥³¥Í¥¯¥·¥ç¥ó'; -$string['auth_cas_version'] = 'CAS¤Î¥Ð¡¼¥¸¥ç¥ó'; -$string['auth_casdescription'] = '¤³¤ÎÊýË¡¤Ï¡¢Ã±°ì¥í¥°¥¤¥ó´Ä¶­ (Single Sign On environment: SSO) ¤Ë¤Æ¡¢CAS¥µ¡¼¥Ð (Central Authentication Service) ¤ò¥æ¡¼¥¶Ç§¾Ú¤Ë»ÈÍѤ·¤Þ¤¹¡£¥·¥ó¥×¥ëLDAPǧ¾Ú¤ò»ÈÍѤ¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤¬CAS¤Çǧ¾Ú¤µ¤ì¤¿¾ì¹ç¡¢Moodle¤Ï¿·¤·¤¤¥æ¡¼¥¶¥¨¥ó¥È¥ê¤ò¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËºîÀ®¤·¤Þ¤¹¡£¤Þ¤¿¡¢É¬ÍפǤ¢¤ì¤Ð¡¢LDAP¤è¤ê¥æ¡¼¥¶Â°À­¤ò¼èÆÀ¤·¤Þ¤¹¡£¼¡²ó¤«¤é¤Ï¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤Î¤ß¤¬³Îǧ¤µ¤ì¤Þ¤¹¡£'; -$string['auth_castitle'] = 'CAS¥µ¡¼¥Ð (SSO)'; -$string['auth_common_settings'] = '°ìÈÌÀßÄê'; -$string['auth_data_mapping'] = '¥Ç¡¼¥¿¥Þ¥Ã¥Ô¥ó¥°'; $string['auth_dbdescription'] = '¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤ò³Îǧ¤¹¤ë¤¿¤á¤Ë³°Éô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»ÈÍѤ·¤Þ¤¹¡£¿·¤·¤¤¥¢¥«¥¦¥ó¥È¤òºîÀ®¤¹¤ë¾ì¹ç¡¢Â¾¤Î¥Õ¥£¡¼¥ë¥É¤Î¾ðÊó¤¬Moodle¤ØÊ£À½¤µ¤ì¤Þ¤¹¡£'; -$string['auth_dbextrafields'] = '¤³¤ì¤é¤Î¥Õ¥£¡¼¥ë¥É¤ÏǤ°Õ¹àÌܤǤ¹¡£³°Éô¥Ç¡¼¥¿¥Ù¡¼¥¹¥Õ¥£¡¼¥ë¥É¤è¤ê»öÁ°¤ËÆþÎϤµ¤ì¤¿Moodle¥æ¡¼¥¶¥Õ¥£¡¼¥ë¥É¤òÁªÂò¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£

                ¶õÇò¤Î¾ì¹ç¤Ï½é´üÃͤ¬»ÈÍѤµ¤ì¤Þ¤¹¡£

                ¤É¤Á¤é¤Î¾ì¹ç¤Ç¤â¡¢¥æ¡¼¥¶¤Ï¥í¥°¥¤¥ó¸å¤ËÁ´¤Æ¤Î¥Õ¥£¡¼¥ë¥É¤òÊÔ½¸²Äǽ¤Ç¤¹¡£'; +$string['auth_dbextrafields'] = '¤³¤ì¤é¤Î¥Õ¥£¡¼¥ë¥É¤ÏǤ°Õ¹àÌܤǤ¹¡£³°Éô¥Ç¡¼¥¿¥Ù¡¼¥¹¥Õ¥£¡¼¥ë¥É¤è¤ê»öÁ°¤ËÆþÎϤµ¤ì¤¿Moodle¥æ¡¼¥¶¥Õ¥£¡¼¥ë¥É¤òÁªÂò¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£

                ¶õÇò¤Î¾ì¹ç¤Ï½é´üÃͤ¬»ÈÍѤµ¤ì¤Þ¤¹¡£

                ¤É¤Á¤é¤Î¾ì¹ç¤Ç¤â¡¢¥æ¡¼¥¶¤Ï¥í¥°¥¤¥ó¸å¤ËÁ´¤Æ¤Î¥Õ¥£¡¼¥ë¥É¤òÊÔ½¸²Äǽ¤Ç¤¹¡£'; $string['auth_dbfieldpass'] = '¥Ñ¥¹¥ï¡¼¥É¤ò´Þ¤ó¤À¥Õ¥£¡¼¥ë¥É̾'; $string['auth_dbfielduser'] = '¥æ¡¼¥¶Ì¾¤ò´Þ¤ó¤À¥Õ¥£¡¼¥ë¥É̾'; $string['auth_dbhost'] = '¥Ç¡¼¥¿¥Ù¡¼¥¹¥µ¡¼¥Ð¤¬²Ôư¤·¤Æ¤¤¤ë¥³¥ó¥Ô¥å¡¼¥¿'; @@ -29,97 +12,66 @@ $string['auth_dbpass'] = ' $string['auth_dbpasstype'] = '¥Ñ¥¹¥ï¡¼¥É¥Õ¥£¡¼¥ë¥É¤Ç»ÈÍѤ¹¤ë¥Õ¥©¡¼¥Þ¥Ã¥È¤òÆÃÄꤷ¤Æ¤¯¤À¤µ¤¤¡£MD5°Å¹æ²½¤ÏPostNuke¤Î¤è¤¦¤Ê¾¤Î°ìÈÌŪ¤Ê¥¦¥§¥Ö¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ø¤ÎÀܳ¤ËÊØÍø¤Ç¤¹¡£'; $string['auth_dbtable'] = '¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Æ¡¼¥Ö¥ë̾'; $string['auth_dbtitle'] = '³°Éô¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»ÈÍÑ'; -$string['auth_dbtype'] = '¥Ç¡¼¥¿¥Ù¡¼¥¹¥¿¥¤¥× ( ¾ÜºÙ¤ÏADOdb documentation¤ò¤´Í÷¤¯¤À¤µ¤¤ )'; +$string['auth_dbtype'] = '¥Ç¡¼¥¿¥Ù¡¼¥¹¥¿¥¤¥×(¾ÜºÙ¤ÏADOdb documentation¤ò¤´Í÷¤¯¤À¤µ¤¤'; $string['auth_dbuser'] = '¥Ç¡¼¥¿¥Ù¡¼¥¹¥¢¥¯¥»¥¹ÍѤΥ桼¥¶Ì¾'; -$string['auth_editlock'] = '¥í¥Ã¥¯ÃÍ'; -$string['auth_editlock_expl'] = '

                ¥í¥Ã¥¯ÃÍ: ¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤Ë¤·¤¿¾ì¹ç¡¢Moodle¥æ¡¼¥¶¤ª¤è¤Ó´ÉÍý¼Ô¤¬¥Õ¥£¡¼¥ë¥É¤òľÀÜÊÔ½¸¤Ç¤­¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£³°Éôǧ¾Ú¥·¥¹¥Æ¥à¤Ë¤¢¤ë¤³¤ÎÃͤò¥á¥ó¥Æ¥Ê¥ó¥¹¤¹¤ë»þ¤Ë»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£

                '; -$string['auth_emaildescription'] = '¥á¡¼¥ë¤Ë¤è¤ë¥¢¥«¥¦¥ó¥È³ÎÄê¤Ï¥Ç¥Õ¥©¥ë¥È¤Îǧ¾ÚÊýË¡¤Ç¤¹¡£¥æ¡¼¥¶¤¬¿·¤·¤¤¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤òÁªÂò¤·¤Æ¥µ¥¤¥ó¥¢¥Ã¥×¤·¤¿¾ì¹ç¡¢¥¢¥«¥¦¥ó¥È³ÎÄêÍѥ᡼¥ë¤¬¥æ¡¼¥¶¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ËÁ÷¿®¤µ¤ì¤Þ¤¹¡£¤³¤Î¥á¡¼¥ë¤Ë¤Ï¥æ¡¼¥¶¤¬¥¢¥«¥¦¥ó¥È¤ò³ÎÄꤹ¤ë¤¿¤á¤Î¥ê¥ó¥¯¤¬µ­Æþ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥¢¥«¥¦¥ó¥È³ÎÄê¸å¤Î¥í¥°¥¤¥ó¤Ç¤ÏMoodle¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¤Æ¤¤¤ë¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤Î¤ß¤ò³Îǧ¤·¤Þ¤¹¡£'; +$string['auth_emaildescription'] = '¥á¡¼¥ë¤Ë¤è¤ë³ÎÄê¤Ïǧ¾ÚÊýË¡¤Î½é´üÃͤǤ¹¡£¥æ¡¼¥¶¤¬¿·¤·¤¤¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤òÁªÂò¤·¤Æ¥µ¥¤¥ó¥¢¥Ã¥×¤·¤¿¾ì¹ç¡¢³ÎÄêÍѥ᡼¥ë¤¬¥æ¡¼¥¶¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ËÁ÷¿®¤µ¤ì¤Þ¤¹¡£¤³¤Î¥á¡¼¥ë¤Ë¤Ï¥æ¡¼¥¶¤¬¥¢¥«¥¦¥ó¥È¤ò³ÎÄꤹ¤ë¤¿¤á¤Î¥ê¥ó¥¯¤¬µ­Æþ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥¢¥«¥¦¥ó¥È³ÎÄê¸å¤Î¥í¥°¥¤¥ó¤Ç¤ÏMoodle¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¤Æ¤¤¤ë¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤Î¤ß¤ò³Îǧ¤·¤Þ¤¹¡£'; $string['auth_emailtitle'] = 'Email¥Ù¡¼¥¹¤Îǧ¾Ú'; $string['auth_fccreators'] = '¥á¥ó¥Ð¡¼¤¬¥³¡¼¥¹¤ÎºîÀ®¤òµö²Ä¤µ¤ì¤Æ¤¤¤ë¥°¥ë¡¼¥×¤Î°ìÍ÷¤Ç¤¹¡£Ê£¿ô¤Î¥°¥ë¡¼¥×¤Ï¡Ö;¡×¤Çʬ¤±¤Æ¤¯¤À¤µ¤¤¡£¥°¥ë¡¼¥×̾¤ÏFirstClass¥µ¡¼¥Ð¤È¸·Ì©¤ËƱ¤¸Ì¾Á°¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¥·¥¹¥Æ¥à¤Ï¡¢Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Þ¤¹¡£'; -$string['auth_fcdescription'] = '¤³¤³¤Ç¤Ï¡¢¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤¬Àµ¤·¤¤¤«¥Á¥§¥Ã¥¯¤¹¤ë¤¿¤á¤ËFisrtClass¥µ¡¼¥Ð¤ò»ÈÍѤ·¤Þ¤¹¡£'; -$string['auth_fcfppport'] = '¥µ¡¼¥Ð¥Ý¡¼¥È ( 3333¤¬ºÇ¤â°ìÈÌŪ )'; -$string['auth_fchost'] = 'FirstClass¥µ¡¼¥Ð¥¢¥É¥ì¥¹¡£IP¥¢¥É¥ì¥¹¤Þ¤¿¤ÏDNS̾¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£'; +$string['auth_fcdescription'] = '¤³¤³¤Ç¤Ï¡¢¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤¬Àµ¤·¤¤¤«Èݤ«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤¿¤á¤ËFisrtClass¥µ¡¼¥Ð¤ò»ÈÍѤ·¤Þ¤¹¡£'; +$string['auth_fcfppport'] = '¥µ¡¼¥Ð¥Ý¡¼¥È(3333¤¬ºÇ¤â°ìÈÌŪ)'; +$string['auth_fchost'] = 'FirstClass¥µ¡¼¥Ð¥¢¥É¥ì¥¹¡£IP¥¢¥É¥ì¥¹Ëô¤ÏDNS̾¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£'; $string['auth_fcpasswd'] = '¾åµ­¥¢¥«¥¦¥ó¥È¤Î¥Ñ¥¹¥ï¡¼¥É¡£'; -$string['auth_fctitle'] = 'FirstClass¥µ¡¼¥Ð¤ò»ÈÍÑ'; +$string['auth_fctitle'] = 'FirstClass¥µ¡¼¥Ð¤ò»ÈÍѤ¹¤ë¡£'; $string['auth_fcuserid'] = '¸¢¸Â¡ÖSubadministrator¡×¤ò»ý¤Ã¤¿FirstClass¥¢¥«¥¦¥ó¥È¤Î¥æ¡¼¥¶ID¡£'; $string['auth_imapdescription'] = '¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤ò³Îǧ¤¹¤ë¤¿¤á¤ËIMAP¥µ¡¼¥Ð¤ò»ÈÍѤ·¤Þ¤¹¡£'; $string['auth_imaphost'] = 'IMAP¥µ¡¼¥Ð¡¼¥¢¥É¥ì¥¹¤Ç¤¹¡£IP¥¢¥É¥ì¥¹¤Ç¤Ï¤Ê¤¯¥É¥á¥¤¥ó̾¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['auth_imapport'] = 'IMAP¥µ¡¼¥Ð¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¹¡£Ä̾ï¤Ï143¤Þ¤¿¤Ï993¤Ç¤¹¡£'; +$string['auth_imapport'] = 'IMAP¥µ¡¼¥Ð¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¹¡£Ä̾ï¤Ï143Ëô¤Ï993¤Ç¤¹¡£'; $string['auth_imaptitle'] = 'IMAP¥µ¡¼¥Ð¤ò»ÈÍÑ'; -$string['auth_imaptype'] = 'IMAP¥µ¡¼¥Ð¥¿¥¤¥×¤Ç¤¹¡£IMAP¥µ¡¼¥Ð¤Ï°Û¤Ê¤ëǧ¾Ú¤ª¤è¤Ó¥Í¥´¥·¥¨¡¼¥·¥ç¥ó¤òÍøÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£'; +$string['auth_imaptype'] = 'IMAP¥µ¡¼¥Ð¥¿¥¤¥×¤Ç¤¹¡£IMAP¥µ¡¼¥Ð¤Ï°Û¤Ê¤ëǧ¾ÚµÚ¤Ó¥Í¥´¥·¥¨¡¼¥·¥ç¥ó¤òÍøÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£'; $string['auth_ldap_bind_dn'] = '¥æ¡¼¥¶¸¡º÷¤Ëbind¥æ¡¼¥¶¤òÍøÍѤ·¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤³¤ËÌÀ¼¨¤·¤Æ¤¯¤À¤µ¤¤¡£Îã \'cn=ldapuser,ou=public,o=org\''; $string['auth_ldap_bind_pw'] = 'bind¥æ¡¼¥¶ÍѤΥѥ¹¥ï¡¼¥É'; -$string['auth_ldap_bind_settings'] = 'BindÀßÄê'; $string['auth_ldap_contexts'] = '¥æ¡¼¥¶¤¬ÇÛÃÖ¤µ¤ì¤Æ¤¤¤ë¥³¥ó¥Æ¥­¥¹¥È°ìÍ÷¤Ç¤¹¡£°Û¤Ê¤ë¥³¥ó¥Æ¥­¥¹¥È¤Ï¡Ö;¡×¤Çʬ¤±¤Æ¤¯¤À¤µ¤¤¡£Îã \'ou=users,o=org; ou=others,o=org\''; $string['auth_ldap_create_context'] = '¥æ¡¼¥¶ºîÀ®¤ò¥á¡¼¥ë¤Ë¤è¤ëǧ¾Ú¤Ç¹Ô¤¦¾ì¹ç¡¢¥æ¡¼¥¶¤¬ºîÀ®¤µ¤ì¤ë¥³¥ó¥Æ¥­¥¹¥È¤òÆÃÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¥»¥­¥å¥ê¥Æ¥£¡¼¤Î´ÑÅÀ¤«¤é¡¢¤³¤Î¥³¥ó¥Æ¥­¥¹¥È¤Ï³Æ¥æ¡¼¥¶Ëè¤Ë°Û¤Ê¤ë¤â¤Î¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Moodle¤¬¼«Æ°Åª¤Ë¥³¥ó¥Æ¥­¥¹¥È¤«¤é¥æ¡¼¥¶¤òõ¤·¤Þ¤¹¤Î¤Ç¡¢ldap_context-vaiable¤ò¤³¤Î¥³¥ó¥Æ¥­¥¹¥È¤ËÄɲ乤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£'; $string['auth_ldap_creators'] = '¥á¥ó¥Ð¡¼¤¬¿·¤·¤¤¥³¡¼¥¹¤ÎºîÀ®¤òµö¤µ¤ì¤Æ¤¤¤ë¥°¥ë¡¼¥×¤Î¥ê¥¹¥È¤Ç¤¹¡£Ê£¿ô¤Î¥°¥ë¡¼¥×¤Ï¡Ö;¡×¤Çʬ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£Ä̾ï¤Ï\'cn=teachers,ou=staff,o=myorg\'¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£'; -$string['auth_ldap_expiration_desc'] = '¥Ñ¥¹¥ï¡¼¥É¥Á¥§¥Ã¥¯¤ÎÍ­¸ú´ü¸Â¤ò̵¸ú¤Ë¤¹¤ë¾ì¹ç¡¢¤Þ¤¿¤ÏLDAP¤¬LDAP¥µ¡¼¥Ð¤«¤éľÀÜpasswordexpiration¤ò»²¾È¤¹¤ë¾ì¹ç¤Ï¡¢¡ÖNo¡×¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£É¬¤ºÂ°À­Ì¾¤Ëldap_expireattr¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['auth_ldap_expiration_warning_desc'] = '¥Ñ¥¹¥ï¡¼¥É¤ÎÍ­¸ú´ü¸ÂÀÚ¤ì¤ò·Ù¹ð¤¹¤ë¤Þ¤Ç¤ÎÆü¿ô¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['auth_ldap_expireattr_desc'] = 'Ldap-attribute¤Ï¥Ñ¥¹¥ï¡¼¥É¤ÎÍ­¸ú´ü¸ÂPasswordAxpirationTime¤òÊݸ¤·¤Þ¤¹¡£'; -$string['auth_ldap_graceattr_desc'] = 'LDAP ͱͽ¥í¥°¥¤¥ó°À­'; -$string['auth_ldap_gracelogins_desc'] = 'LDAP¤Îͱͽ¥í¥°¥¤¥ó¥µ¥Ý¡¼¥È¤òÍ­¸ú¤Ë¤·¤Þ¤¹¡£¥Ñ¥¹¥ï¡¼¥É¤ÎÍ­¸ú´ü¸Â¤¬Àڤ줿¸å¡¢Í±Í½¥í¥°¥¤¥ó¥«¥¦¥ó¥È¤¬¥¼¥í¤Ë¤Ê¤ë¤Þ¤Ç¥í¥°¥¤¥ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤Ë¤¹¤ë¤È¡¢¥Ñ¥¹¥ï¡¼¥É¤¬´ü¸ÂÀÚ¤ì¤Ë¤Ê¤Ã¤¿¾ì¹ç¤Ëͱͽ¥í¥°¥¤¥ó¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£'; $string['auth_ldap_host_url'] = 'LDAP¥Û¥¹¥È¤ÎURL¤ò²¼µ­¤Î¤è¤¦¤ËÌÀ¼¨¤·¤Æ¤¯¤À¤µ¤¤¡£ -\'ldap://ldap.myorg.com/\' ¤Þ¤¿¤Ï \'ldaps://ldap.myorg.com/\' '; -$string['auth_ldap_login_settings'] = '¥í¥°¥¤¥óÀßÄê'; +\'ldap://ldap.myorg.com/\' Ëô¤Ï \'ldaps://ldap.myorg.com/\' '; $string['auth_ldap_memberattribute'] = '¥æ¡¼¥¶¤¬¥°¥ë¡¼¥×¤Ë°À­¤·¤Æ¤¤¤ë¾ì¹ç¡¢¥æ¡¼¥¶¤Î°À­¤òÆÃÄꤷ¤Æ¤¯¤À¤µ¤¤¡£Ä̾ï¤Ï\'member\'¤Ç¤¹¡£'; $string['auth_ldap_objectclass'] = '¥Õ¥£¥ë¥¿¤Ï¥æ¡¼¥¶Ì¾¸¡º÷»þ¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£Ä̾ï¤Ï¡¢objectClass=posixAccount¤Î¤è¤¦¤ËÀßÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤ÎobjectClass=*¤ÏÁ´¤Æ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òLDAP¤è¤êÊÖ¤·¤Þ¤¹¡£'; -$string['auth_ldap_opt_deref'] = '¸¡º÷»þ¤Ë¥¨¥¤¥ê¥¢¥¹¤¬¤É¤Î¤è¤¦¤Ë°·¤ï¤ì¤ë¤«·èÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¼¡¤ÎÃͤ«¤éÁªÂò¤·¤Æ¤¯¤À¤µ¤¤: ¡ÖNo¡× (LDAP_DEREF_NEVER) ¤Þ¤¿¤Ï ¡ÖYes¡× (LDAP_DEREF_ALWAYS)'; -$string['auth_ldap_passwdexpire_settings'] = 'LDAP¥Ñ¥¹¥ï¡¼¥ÉÍ­¸ú´ü¸ÂÀßÄê'; $string['auth_ldap_search_sub'] = '¥µ¥Ö¥³¥ó¥Æ¥­¥¹¥È¤«¤é¥æ¡¼¥¶¤ò¸¡º÷¤¹¤ë¾ì¹ç¤Ï¡¢ <> 0 ¤Î¤è¤¦¤ËÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['auth_ldap_server_settings'] = 'LDAP¥µ¡¼¥ÐÀßÄê'; -$string['auth_ldap_update_userinfo'] = 'LDAP¤è¤êMoodle¤Î¾ðÊó ( ̾¡¢À«¡¢½»½êÅù ) ¤ò¹¹¿·¤·¤Þ¤¹¡£¥Þ¥Ã¥Ô¥ó¥°¾ðÊó¤Ë´Ø¤·¤Æ¤Ï /auth/ldap/attr_mappings ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£'; +$string['auth_ldap_update_userinfo'] = 'LDAP¤è¤êMoodle¤Î¾ðÊó(̾Á°¡¢Ì¾»ú¡¢½»½êÅù)¤ò¹¹¿·¤·¤Þ¤¹¡£¥Þ¥Ã¥Ô¥ó¥°¾ðÊó¤Ë´Ø¤·¤Æ¤Ï /auth/ldap/attr_mappings ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£'; $string['auth_ldap_user_attribute'] = 'name/search¥æ¡¼¥¶¤Ë»È¤ï¤ì¤ë°À­¤Ç¤¹¡£Ä̾ï¤Ï\'cn\'¤Ç¤¹¡£'; -$string['auth_ldap_user_settings'] = '¥æ¡¼¥¶lookupÀßÄê'; -$string['auth_ldap_user_type'] = '¥æ¡¼¥¶¤¬¤É¤Î¤è¤¦¤ËLDAP¤ËÊݸ¤µ¤ì¤ë¤«ÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎÀßÄê¤Ç¤Ï¡¢Í­¸ú´ü¸Â¡¢Í±Í½¥í¥°¥¤¥ó¡¢¥æ¡¼¥¶ºîÀ®¤¬¤É¤Î¤è¤¦¤Ë¤Ê¤µ¤ì¤ë¤Î¤«¤â»ØÄꤷ¤Þ¤¹¡£'; $string['auth_ldap_version'] = '¥µ¡¼¥Ð¤Ç»ÈÍѤ·¤Æ¤¤¤ëLDAP¥×¥í¥È¥³¥ë¤Î¥Ð¡¼¥¸¥ç¥ó'; $string['auth_ldapdescription'] = '³°Éô¤ÎLDAP¥µ¡¼¥Ð¤ËÂФ·¤ÆÇ§¾Ú¤ò¹Ô¤¤¤Þ¤¹¡£¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤¬Àµ¤·¤¤¾ì¹ç¡¢Moodle¤Ï¿·¤·¤¤¥æ¡¼¥¶¤ò¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËºîÀ®¤·¤Þ¤¹¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ï¥æ¡¼¥¶Â°À­¤òLDAP¤«¤é¼èÆÀ¤·¤ÆMoodle¤Î¥Õ¥£¡¼¥ë¥É¤ËÆþÎϤ·¤Þ¤¹¡£Ç§¾Ú¸å¤Î¥í¥°¥¤¥ó¤Ç¤Ï¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤Î¤ß¤¬³Îǧ¤µ¤ì¤Þ¤¹¡£'; -$string['auth_ldapextrafields'] = '¤³¤ì¤é¤Î¥Õ¥£¡¼¥ë¥É¤ÏǤ°Õ¹àÌܤǤ¹¡£LDAP¥Õ¥£¡¼¥ë¥É¤è¤ê»öÁ°¤ËÆþÎϤµ¤ì¤¿Moodle¥æ¡¼¥¶¥Õ¥£¡¼¥ë¥É¤òÁªÂò¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£

                ¶õÇò¤Î¾ì¹ç¤ÏLDAP¤è¤ê¥Ç¡¼¥¿¤ÎžÁ÷¤Ï¹Ô¤ï¤ì¤º¤ËMoodle¤Î½é´üÃͤ¬»ÈÍѤµ¤ì¤Þ¤¹

                ¤É¤Á¤é¤Î¾ì¹ç¤Ç¤â¡¢¥æ¡¼¥¶¤Ï¥í¥°¥¤¥ó¸å¤ËÁ´¤Æ¤Î¥Õ¥£¡¼¥ë¥É¤òÊÔ½¸²Äǽ¤Ç¤¹¡£'; +$string['auth_ldapextrafields'] = '¤³¤ì¤é¤Î¥Õ¥£¡¼¥ë¥É¤ÏǤ°Õ¹àÌܤǤ¹¡£LDAP¥Õ¥£¡¼¥ë¥É¤è¤ê»öÁ°¤ËÆþÎϤµ¤ì¤¿Moodle¥æ¡¼¥¶¥Õ¥£¡¼¥ë¥É¤òÁªÂò¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£

                ¶õÇò¤Î¾ì¹ç¤ÏLDAP¤è¤ê¥Ç¡¼¥¿¤ÎžÁ÷¤Ï¹Ô¤ï¤ì¤º¤ËMoodle¤Î½é´üÃͤ¬»ÈÍѤµ¤ì¤Þ¤¹

                ¤É¤Á¤é¤Î¾ì¹ç¤Ç¤â¡¢¥æ¡¼¥¶¤Ï¥í¥°¥¤¥ó¸å¤ËÁ´¤Æ¤Î¥Õ¥£¡¼¥ë¥É¤òÊÔ½¸²Äǽ¤Ç¤¹¡£'; $string['auth_ldaptitle'] = 'LDAP¥µ¡¼¥Ð¤ò»ÈÍÑ'; $string['auth_manualdescription'] = '¤³¤ÎÊýË¡¤Ç¤Ï¥æ¡¼¥¶¤Ë¤è¤ë¥æ¡¼¥¶¥¢¥«¥¦¥ó¥ÈºîÀ®µ¡Ç½¤òÄä»ß¤·¤Þ¤¹¡£Á´¤Æ¤Î¥¢¥«¥¦¥ó¥ÈºîÀ®¤Ï´ÉÍý¼Ô¤Ë¤è¤ê¼êư¤Ç¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£'; $string['auth_manualtitle'] = '¼êư¥¢¥«¥¦¥ó¥ÈºîÀ®¤Î¤ß'; -$string['auth_multiplehosts'] = 'Ê£¿ô¤Î¥Û¥¹¥È¤òÀßÄê¤Ç¤­¤Þ¤¹ ( Îã host1.com;host2.com;host3.com ) '; +$string['auth_multiplehosts'] = 'Ê£¿ô¤Î¥Û¥¹¥È¤òÀßÄê½ÐÍè¤Þ¤¹(Îã host1.com;host2.com;host3.com)'; $string['auth_nntpdescription'] = '¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤ò³Îǧ¤¹¤ë¤¿¤á¤ËNNTP¥µ¡¼¥Ð¤ò»ÈÍѤ·¤Þ¤¹¡£'; $string['auth_nntphost'] = 'NNTP¥µ¡¼¥Ð¡¼¥¢¥É¥ì¥¹¤Ç¤¹¡£IP¥¢¥É¥ì¥¹¤Ç¤Ï¤Ê¤¯¥É¥á¥¤¥ó̾¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£'; $string['auth_nntpport'] = '¥µ¡¼¥Ð¡¼¥Ý¡¼¥È(119¤¬°ìÈÌŪ¤Ç¤¹)'; $string['auth_nntptitle'] = 'NNTP¥µ¡¼¥Ð¤ò»ÈÍÑ'; -$string['auth_nonedescription'] = '¥æ¡¼¥¶¤Ï¥í¥°¥¤¥ó¤·¤Æ³°Éô¥µ¡¼¥Ð¤ª¤è¤Ó¥á¡¼¥ë¤Ë¤è¤ëǧ¾Ú̵¤·¤Ë¥¢¥«¥¦¥ó¥È¤òľ¤Á¤ËºîÀ®¤Ç¤­¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¤­¤Ï½½Ê¬¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤ - ¥»¥­¥å¥ê¥Æ¥£¡¼¤ª¤è¤Ó´ÉÍý¾å¤ÎÌäÂ꤬ȯÀ¸¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤¤³¤È¤ò¹Í¤¨¤Æ¤¯¤À¤µ¤¤¡£'; +$string['auth_nonedescription'] = '¥æ¡¼¥¶¤Ï¥í¥°¥¤¥ó¤·¤Æ³°Éô¥µ¡¼¥ÐµÚ¤Ó¥á¡¼¥ë¤Ë¤è¤ëǧ¾Ú̵¤·¤Ë¥¢¥«¥¦¥ó¥È¤òľ¤Á¤ËºîÀ®½ÐÍè¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤È¤­¤Ï½½Ê¬¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤ - ¥»¥­¥å¥ê¥Æ¥£¡¼µÚ¤Ó´ÉÍý¾å¤ÎÌäÂ꤬ȯÀ¸¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤¤³¤È¤ò¹Í¤¨¤Æ¤¯¤À¤µ¤¤¡£'; $string['auth_nonetitle'] = 'ǧ¾Ú̵¤·'; -$string['auth_pamdescription'] = '¤³¤ÎÊý¼°¤Ç¤Ï¡¢¥µ¡¼¥Ð¤Î¥Í¥¤¥Æ¥£¥Ö¥æ¡¼¥¶Ì¾¤Ë¥¢¥¯¥»¥¹¤¹¤ë¼êÃʤȤ·¤ÆPAM¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢PHP4 PAM Authentication¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£'; -$string['auth_pamtitle'] = 'PAM ( Pluggable Authentication Modules )'; -$string['auth_passwordisexpired'] = '¤¢¤Ê¤¿¤Î¥Ñ¥¹¥ï¡¼¥É¤ÎÍ­¸ú´ü¸Â¤¬ÀÚ¤ì¤Þ¤·¤¿¡£¥Ñ¥¹¥ï¡¼¥É¤òÊѹ¹¤·¤Þ¤¹¤«?'; -$string['auth_passwordwillexpire'] = '¤¢¤Ê¤¿¤Î¥Ñ¥¹¥ï¡¼¥É¤ÎÍ­¸ú´ü¸Â¤Ï¡¢$a Æü¤ÇÀÚ¤ì¤Þ¤¹¡£¥Ñ¥¹¥ï¡¼¥É¤òÊѹ¹¤·¤Þ¤¹¤«?'; $string['auth_pop3description'] = '¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤ò³Îǧ¤¹¤ë¤¿¤á¤ËPOP3¥µ¡¼¥Ð¤ò»ÈÍѤ·¤Þ¤¹¡£'; $string['auth_pop3host'] = 'POP3¥µ¡¼¥Ð¡¼¥¢¥É¥ì¥¹¤Ç¤¹¡£IP¥¢¥É¥ì¥¹¤Ç¤Ï¤Ê¤¯¥É¥á¥¤¥ó̾¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£'; $string['auth_pop3mailbox'] = 'Àܳ¤ò»î¤ß¤ë¥á¡¼¥ë¥Ü¥Ã¥¯¥¹Ì¾(Ä̾ï¤Ï¼õ¿®¥Ü¥Ã¥¯¥¹)'; -$string['auth_pop3port'] = '¥µ¡¼¥Ð¡¼¥Ý¡¼¥È ( 110¤¬°ìÈÌŪ¤Ç¤¹ )'; +$string['auth_pop3port'] = '¥µ¡¼¥Ð¡¼¥Ý¡¼¥È (110¤¬°ìÈÌŪ¤Ç¤¹)'; $string['auth_pop3title'] = 'POP3¥µ¡¼¥Ð¤ò»ÈÍÑ'; $string['auth_pop3type'] = '¥µ¡¼¥Ð¥¿¥¤¥×¤Ç¤¹¡£¤â¤·Ç§¾Ú¤¬É¬Íפʾì¹ç¤Ïpop3cert¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['auth_shibbolethdescription'] = '¤³¤³¤Ç¤Ï¡¢¥æ¡¼¥¶¤Î¥Á¥§¥Ã¥¯¤ª¤è¤Ó¥¢¥«¥¦¥ó¥È¤ÎºîÀ®¤ò¹Ô¤¦¤¿¤á¤ËShibboleth¥µ¡¼¥Ð¤ËÀܳ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['auth_shibbolethtitle'] = 'Shibboleth'; -$string['auth_updatelocal'] = '¥í¡¼¥«¥ë¥Ç¡¼¥¿¤Î¹¹¿·'; -$string['auth_updatelocal_expl'] = '

                ¥í¡¼¥«¥ë¥Ç¡¼¥¿¤Î¹¹¿·: ¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤Ë¤·¤¿¾ì¹ç¡¢¤³¤Î¥Õ¥£¡¼¥ë¥É¤Ï(³°Éôǧ¾Ú¤òÄ̤·¤Æ)¥í¥°¥¤¥óËè¤Þ¤¿¤Ï¥æ¡¼¥¶¤ÎƱ´üËè¤Ë¹¹¿·¤µ¤ì¤Þ¤¹¡£¹¹¿·¤µ¤ì¤ë¥í¡¼¥«¥ë¥Õ¥£¡¼¥ë¥É¤Ï¥í¥Ã¥¯¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

                '; -$string['auth_updateremote'] = '³°Éô¥Ç¡¼¥¿¤Î¹¹¿·'; -$string['auth_updateremote_expl'] = '

                ³°Éô¥Ç¡¼¥¿¤Î¹¹¿·: ¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤Ë¤·¤¿¾ì¹ç¡¢¥æ¡¼¥¶¥ì¥³¡¼¥É¤¬¹¹¿·¤µ¤ì¤ë»þ¤Ë³°Éôǧ¾Ú¤¬¹¹¿·¤µ¤ì¤Þ¤¹¡£ÊÔ½¸¤Ç¤­¤ë¤è¤¦¤Ë¥Õ¥£¡¼¥ë¥É¤ò¥¢¥ó¥í¥Ã¥¯¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

                '; -$string['auth_updateremote_ldap'] = '

                Ãí°Õ: ³°ÉôLDAP¥Ç¡¼¥¿¤ò¹¹¿·¤¹¤ë¤¿¤á¤Ë¤Ï¡¢binddn¤Èbindpw¤ò½ñ¤­¹þ¤ß¸¢¤ò»ý¤Ã¤¿bind¥æ¡¼¥¶¤ËÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¸½ºß¡¢¥Þ¥ë¥Á¥Ð¥ê¥å¡¼Â°À­¤òÊݸ¤Þ¤»¤ó¡£¤Þ¤¿¡¢¹¹¿·»þ¤Ë¥¨¥¯¥¹¥È¥é¥Ð¥ê¥å¡¼¤Ï¼è¤ê½ü¤«¤ì¤Þ¤¹¡£

                '; $string['auth_user_create'] = '¥æ¡¼¥¶¤ÎºîÀ®¤òµö²Ä¤¹¤ë'; -$string['auth_user_creation'] = '¿·¤·¤¤ ( ƿ̾¤Î ) ¥æ¡¼¥¶¤Ï³°Éôǧ¾Ú¤Ë¤è¤ê¥æ¡¼¥¶¥¢¥«¥¦¥ó¥È¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥æ¡¼¥¶¤Î³ÎÄê¤Ï¥á¡¼¥ë¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍ­¸ú¤Ë¤·¤¿¾ì¹ç¡¢module-specific¥ª¥×¥·¥ç¥ó¤âƱ»þ¤ËÍ­¸ú¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£'; +$string['auth_user_creation'] = '¿·¤·¤¤(ƿ̾¤Î)¥æ¡¼¥¶¤Ï³°Éôǧ¾Ú¤Ë¤è¤ê¥æ¡¼¥¶¥¢¥«¥¦¥ó¥È¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¥æ¡¼¥¶¤Î³ÎÄê¤Ï¥á¡¼¥ë¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤òÍ­¸ú¤Ë¤·¤¿¾ì¹ç¡¢module-specific¥ª¥×¥·¥ç¥ó¤âƱ»þ¤ËÍ­¸ú¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£'; $string['auth_usernameexists'] = '¤³¤Î¥æ¡¼¥¶Ì¾¤Ï´û¤Ë¸ºß¤·¤Þ¤¹¡£¿·¤·¤¤¤â¤Î¤òÁª¤ó¤Ç¤¯¤À¤µ¤¤¡£'; $string['authenticationoptions'] = 'ǧ¾Ú¥ª¥×¥·¥ç¥ó'; $string['authinstructions'] = '¤É¤Î¤è¤¦¤Ê¥æ¡¼¥¶Ì¾¤ä¥Ñ¥¹¥ï¡¼¥É¤ò»ÈÍѤ·¤¿¤é¤è¤¤¤Î¤«¥æ¡¼¥¶¤ËÀâÌÀ¤·¤Þ¤¹¡£¤³¤³¤ËÆþÎϤ·¤¿Ê¸¾Ï¤Ï¥í¥°¥¤¥ó¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¶õÇò¤Î¾ì¹ç¡¢²¿¤âɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£'; $string['changepassword'] = '¥Ñ¥¹¥ï¡¼¥É¤ÎURL¤òÊѹ¹¤¹¤ë'; -$string['changepasswordhelp'] = '¥æ¡¼¥¶¤¬¥æ¡¼¥¶Ì¾/¥Ñ¥¹¥ï¡¼¥É¤ò˺¤ì¤¿¤È¤­¤Ë²óÉü¤Þ¤¿¤ÏÊѹ¹¤¹¤ë¤¿¤á¤Î¥Ü¥¿¥ó¤ò¥í¥°¥¤¥ó¥Ú¡¼¥¸¤Ëɽ¼¨¤·¤Þ¤¹¡£¶õÇò¤Î¾ì¹ç¡¢¥Ü¥¿¥ó¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£'; +$string['changepasswordhelp'] = '¥æ¡¼¥¶¤¬¥æ¡¼¥¶Ì¾/¥Ñ¥¹¥ï¡¼¥É¤ò˺¤ì¤¿¤È¤­¤Ë²óÉüËô¤ÏÊѹ¹¤¹¤ë¤¿¤á¤Î¥Ü¥¿¥ó¤ò¥í¥°¥¤¥ó¥Ú¡¼¥¸¤Ëɽ¼¨¤·¤Þ¤¹¡£¶õÇò¤Î¾ì¹ç¡¢¥Ü¥¿¥ó¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£'; $string['chooseauthmethod'] = 'ǧ¾ÚÊýË¡¤ÎÁªÂò:'; -$string['forcechangepassword'] = '¥Ñ¥¹¥ï¡¼¥ÉÊѹ¹¤Î¶¯À©'; -$string['forcechangepassword_help'] = '¼¡¤ËMoodle¤Ø¥í¥°¥¤¥ó¤¹¤ë»þ¤Ë¡¢¥æ¡¼¥¶¤Î¥Ñ¥¹¥ï¡¼¥ÉÊѹ¹¤ò¶¯À©¤·¤Þ¤¹¡£'; -$string['forcechangepasswordfirst_help'] = 'ºÇ½é¤ËMoodle¤Ø¥í¥°¥¤¥ó¤¹¤ë»þ¤Ë¡¢¥æ¡¼¥¶¤Î¥Ñ¥¹¥ï¡¼¥ÉÊѹ¹¤ò¶¯À©¤·¤Þ¤¹¡£'; $string['guestloginbutton'] = '¥²¥¹¥È¥í¥°¥¤¥ó¥Ü¥¿¥ó'; $string['instructions'] = 'ÀâÌÀ'; $string['md5'] = 'MD5°Å¹æ²½'; $string['plaintext'] = '¥Æ¥­¥¹¥È'; -$string['showguestlogin'] = '¥í¥°¥¤¥ó¥Ú¡¼¥¸¤Î¥²¥¹¥È¥í¥°¥¤¥ó¥Ü¥¿¥ó¤òɽ¼¨¡¿Èóɽ¼¨¤Ë¤Ç¤­¤Þ¤¹¡£'; -$string['stdchangepassword'] = 'ɸ½à¥Ñ¥¹¥ï¡¼¥ÉÊѹ¹¥Ú¡¼¥¸¤ò»ÈÍÑ'; -$string['stdchangepassword_expl'] = '³°Éôǧ¾Ú¥·¥¹¥Æ¥à¤¬Moodle¤Ë¥Ñ¥¹¥ï¡¼¥É¤ÎÊѹ¹¤òµö²Ä¤¹¤ë¾ì¹ç¡¢¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎÀßÄê¤Ï¡¢¡ÖChange Password URL¡×¤ò¾å½ñ¤­¤·¤Þ¤¹¡£'; -$string['stdchangepassword_explldap'] = 'Ãí°Õ: LDAP¥µ¡¼¥Ð¤ò¥ê¥â¡¼¥È¤Ç»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢SSL°Å¹æ²½¥È¥ó¥Í¥ë¤ò»ÈÍѤ¹¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£'; +$string['showguestlogin'] = '¥í¥°¥¤¥ó¥Ú¡¼¥¸¤Î¥²¥¹¥È¥í¥°¥¤¥ó¥Ü¥¿¥ó¤òɽ¼¨¡¿Èóɽ¼¨¤Ë½ÐÍè¤Þ¤¹¡£'; ?> diff --git a/lang/ja/block_course_list.php b/lang/ja/block_course_list.php index c67555ebf48..15b0146210f 100644 --- a/lang/ja/block_course_list.php +++ b/lang/ja/block_course_list.php @@ -1,10 +1,9 @@ diff --git a/lang/ja/block_course_summary.php b/lang/ja/block_course_summary.php index 4e7a7153265..1d775d61b37 100644 --- a/lang/ja/block_course_summary.php +++ b/lang/ja/block_course_summary.php @@ -1,8 +1,8 @@ diff --git a/lang/ja/block_glossary_random.php b/lang/ja/block_glossary_random.php deleted file mode 100644 index dec4b8a6bb2..00000000000 --- a/lang/ja/block_glossary_random.php +++ /dev/null @@ -1,27 +0,0 @@ -ºÇ¿·¤Î¹¹¿·
                ¤Ï¾ï¤ËºÇ¿·¤Î¹¹¿·¥¨¥ó¥È¥ê¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¥é¥ó¥À¥à ¤ÏËè²ó¿·¤·¤¤¥¨¥ó¥È¥ê¤¬¥é¥ó¥À¥à¤ËÁªÂò¤µ¤ì¤Þ¤¹¡£½ç¼¡ ¤ÏÍѸ콸¤Î¥¨¥ó¥È¥ê¤¬½çÈÖ¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¤³¤ÎºÇ¸å¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¿·¤·¤¤¥¨¥ó¥È¥ê¤È¤ß¤Ê¤µ¤ì¤ëÆü¿ô¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¡Öº£½µ¤Î°úÍѡפޤ¿¤Ï¡Öº£Æü¤Î¥Ò¥ó¥È¡×¤òɽ¼¨¤¹¤ë¤Î¤ËÆÃ¤ËÊØÍø¤Ç¤¹¡£'; -$string['viewglossary'] = '¤â¤Ã¤È ...'; -$string['whichfooter'] = '¤³¤Î¥Ö¥í¥Ã¥¯¤Ë´ØÏ¢¤¹¤ëÍѸ콸¤Î¥ê¥ó¥¯¤òɽ¼¨¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥ê¥ó¥¯¤ÏÍѸ콸¤Çµö²Ä¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Î¤ßɽ¼¨¤µ¤ì¤Þ¤¹¡£'; - -?> diff --git a/lang/ja/block_html.php b/lang/ja/block_html.php deleted file mode 100644 index d6150fcd3a9..00000000000 --- a/lang/ja/block_html.php +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/lang/ja/block_online_users.php b/lang/ja/block_online_users.php index ecbe57163a7..cf0defe4f97 100644 --- a/lang/ja/block_online_users.php +++ b/lang/ja/block_online_users.php @@ -1,9 +1,9 @@ diff --git a/lang/ja/block_quiz_results.php b/lang/ja/block_quiz_results.php deleted file mode 100644 index 0915439f647..00000000000 --- a/lang/ja/block_quiz_results.php +++ /dev/null @@ -1,28 +0,0 @@ - diff --git a/lang/ja/block_rss_client.php b/lang/ja/block_rss_client.php index 2765ac9edfb..a4f345aad90 100644 --- a/lang/ja/block_rss_client.php +++ b/lang/ja/block_rss_client.php @@ -1,19 +1,13 @@ diff --git a/lang/ja/block_section_links.php b/lang/ja/block_section_links.php index ce62026073a..3435d893b04 100644 --- a/lang/ja/block_section_links.php +++ b/lang/ja/block_section_links.php @@ -1,13 +1,10 @@ - diff --git a/lang/ja/calendar.php b/lang/ja/calendar.php index 6b79d5281a3..37bb07afbc8 100644 --- a/lang/ja/calendar.php +++ b/lang/ja/calendar.php @@ -1,36 +1,28 @@ activate_month ¤Î $a->activate_index $a->activate_weekday ¤Ë»þ´Ö¤ò $a->offset minutes $a->direction ¡£¤³¤ÎÀßÄê¤Ï $a->deactivate_month ¤Î $a->deactivate_index $a->deactivate_weekday ¤Þ¤Ç³¤­¤Þ¤¹¡£'; -$string['dstof'] = '·î:»þ´Ö'; -$string['dstonthe'] = 'ÍËÆü'; -$string['dstpresetactivated'] = 'ŬÍѳ«»Ï'; -$string['dstpresetadjusttime'] = '»þ´ÖÄ´À°'; -$string['dstpresetdeactivated'] = 'ŬÍѽªÎ»'; -$string['dstpresetname'] = '¥×¥ê¥»¥Ã¥È̾'; -$string['durationminutes'] = '´ü´Ö ( ʬ )'; +$string['detailedmonthview'] = '·îɽ¼¨¾ÜºÙ'; +$string['durationminutes'] = '´ü´Ö(ʬ)'; $string['durationnone'] = '´ü´Ö̵¤·'; $string['durationuntil'] = '½ªÎ»Æü:'; $string['editevent'] = '¥¤¥Ù¥ó¥È¤ÎÊÔ½¸'; -$string['errorbeforecoursestart'] = '¥³¡¼¥¹¤Î³«»ÏÆü°ÊÁ°¤Ë¤Ï¥¤¥Ù¥ó¥È¤òÅÐÏ¿¤Ç¤­¤Þ¤»¤ó'; +$string['errorbeforecoursestart'] = '¥³¡¼¥¹¤Î³«»ÏÆü°ÊÁ°¤Ë¤Ï¥¤¥Ù¥ó¥È¤òÅÐÏ¿½ÐÍè¤Þ¤»¤ó'; $string['errorinvaliddate'] = 'ÆüÉդ˴ְ㤤¤¬¤¢¤ê¤Þ¤¹'; -$string['errorinvalidminutes'] = '´ü´Ö ( ʬ ) ¤ò1¤«¤é999¤Î´Ö¤Ç»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£'; +$string['errorinvalidminutes'] = '´ü´Ö(ʬ)¤ò1¤«¤é999¤Î´Ö¤Ç»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£'; $string['errorinvalidrepeats'] = '¥¤¥Ù¥ó¥È¤ò1¤«¤é999¤Î´Ö¤Ç»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£'; $string['errornodescription'] = 'ÀâÌÀ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤'; $string['errornoeventname'] = '̾¾Î¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤'; @@ -47,33 +39,33 @@ $string['eventstarttime'] = ' $string['eventtime'] = '»þ´Ö'; $string['eventview'] = '¥¤¥Ù¥ó¥È¾ÜºÙ'; $string['expired'] = '´ü´Ö½ªÎ»'; -$string['explain_dstpreset'] = '¤É¤ÎÃϰè¤ÎDST ( ²Æ»þ´Ö )ÀßÄê¤ò»ÈÍѤ¹¤ë¤«¥É¥í¥Ã¥×¥À¥¦¥ó¥á¥Ë¥å¡¼¤è¤êÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['explain_dstpresetforced'] = '´ÉÍý¼Ô¤Ë¤è¤ê¤³¤Î¥ª¥×¥·¥ç¥ó¤ÎÊѹ¹¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£'; -$string['explain_lookahead'] = '¤³¤³¤Ç¤Ï¥¤¥Ù¥ó¥È¤¬Ä¾¶á¤Î¥¤¥Ù¥ó¥È¤È¤·¤ÆÉ½¼¨¤µ¤ì¤ë¤¿¤á¤ÎºÇÂçÆü¿ô¤òÀßÄꤷ¤Þ¤¹¡£¤³¤ÎÈϰϤè¤ê¸å¤Ë³«ºÅ¤µ¤ì¤ë¥¤¥Ù¥ó¥È¤Ï¡¢Ä¾¶á¥¤¥Ù¥ó¥È¤È¤·¤ÆÉ½¼¨¤µ¤ì¤Þ¤»¤ó¡£Á´¤Æ¤Î¥¤¥Ù¥ó¥È¤¬¤³¤Î¥¹¥±¥¸¥å¡¼¥ëÄ̤ê¤Ë³«»Ï¤µ¤ì¤ë¤³¤È¤ÏÊݾڤµ¤ì¤Þ¤»¤ó; ¤â¤·¿ô¿¤¯ ( ¡Öľ¶á¥¤¥Ù¥ó¥È¤ÎºÇÂçɽ¼¨¿ô¡×°Ê¾å ) ¤Î¥¤¥Ù¥ó¥È¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢»þ´Ö¤¬ÃÙ¤¤¥¤¥Ù¥ó¥È¤¬É½¼¨¤µ¤ì¤Þ¤»¤ó¡£'; -$string['explain_maxevents'] = '¤³¤³¤Ç¤Ïľ¶á¥¤¥Ù¥ó¥È¤ÎºÇÂçɽ¼¨¿ô¤òÀßÄꤷ¤Þ¤¹¡£¤³¤³¤ÇÂ礭¤Ê¿ô¤òÀßÄꤷ¤¿¾ì¹ç¤Ï¡¢Ä¾¶á¤Î¥¤¥Ù¥ó¥È¤òÂçÎ̤Ëɽ¼¨¤¹¤ë¤¿¤á¤Î²èÌÌ¥¹¥Ú¡¼¥¹¤¬É¬Íפˤʤê¤Þ¤¹¡£'; -$string['explain_persistflt'] = '¤³¤ÎÀßÄê¤ò¹Ô¤Ã¤¿¾ì¹ç¡¢Moodle¤Ï¤¢¤Ê¤¿¤ÎºÇ¿·¤Î¥¤¥Ù¥ó¥È¥Õ¥£¥ë¥¿ÀßÄê¤òµ­²±¤·¤Þ¤¹¡£¤Þ¤¿¡¢¤¢¤Ê¤¿¤¬¥í¥°¥¤¥ó¤¹¤ë¤¿¤Ó¤ËºÇ¿·¤Î¥¤¥Ù¥ó¥È¤ò¼«Æ°Åª¤Ëɽ¼¨¤·¤Þ¤¹¡£'; +$string['explain_lookahead'] = '¤³¤³¤Ç¤Ï¥¤¥Ù¥ó¥È¤¬Ä¾¶á¤Î¥¤¥Ù¥ó¥È¤È¤·¤ÆÉ½¼¨¤µ¤ì¤ë°Ù¤ÎºÇÂçÆü¿ô¤òÀßÄꤷ¤Þ¤¹¡£¤³¤ÎÈϰϤè¤ê¸å¤Ë³«ºÅ¤µ¤ì¤ë¥¤¥Ù¥ó¥È¤Ï¡¢Ä¾¶á¥¤¥Ù¥ó¥È¤È¤·¤ÆÉ½¼¨¤µ¤ì¤Þ¤»¤ó¡£Á´¤Æ¤Î¥¤¥Ù¥ó¥È¤¬¤³¤Î¥¹¥±¥¸¥å¡¼¥ëÄ̤ê¤Ë³«»Ï¤µ¤ì¤ë¤³¤È¤ÏÊݾڤµ¤ì¤Þ¤»¤ó; ¤â¤·¿ô¿¤¯(¡Öľ¶á¥¤¥Ù¥ó¥È¤ÎºÇÂçɽ¼¨¿ô¡×°Ê¾å)¤Î¥¤¥Ù¥ó¥È¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢»þ´Ö¤¬ÃÙ¤¤¥¤¥Ù¥ó¥È¤¬É½¼¨¤µ¤ì¤Þ¤»¤ó¡£'; +$string['explain_maxevents'] = '¤³¤³¤Ç¤Ïľ¶á¥¤¥Ù¥ó¥È¤ÎºÇÂçɽ¼¨¿ô¤òÀßÄꤷ¤Þ¤¹¡£¤³¤³¤ÇÂ礭¤Ê¿ô¤òÀßÄꤷ¤¿¾ì¹ç¤Ï¡¢Ä¾¶á¤Î¥¤¥Ù¥ó¥È¤òÂçÎ̤Ëɽ¼¨¤¹¤ë°Ù¤Î²èÌÌ¥¹¥Ú¡¼¥¹¤¬É¬Íפˤʤê¤Þ¤¹¡£'; $string['explain_startwday'] = '¤³¤³¤Ç¤ÏÁ´¤Æ¤Î·î´Ö¥«¥ì¥ó¥À¡¼¤Îɽ¼¨ÊýË¡¤òÀßÄꤷ¤Þ¤¹¡£¤¢¤Ê¤¿¤¬´·¤ì¿Æ¤·¤ó¤Àɽ¼¨¤Ë¤Ê¤ë¤è¤¦¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£'; -$string['explain_timeformat'] = '»þ´Ö¤Îɽ¼¨¤Ï12»þ´Öɽ¼¨¤Þ¤¿¤Ï24»þ´Öɽ¼¨¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤òÁªÂò¤·¤¿¾ì¹ç¤Ï¡¢»ÈÍѸÀ¸ì¤Ë¹ç¤ï¤»¤Æ¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¼«Æ°Åª¤ËÁªÂò¤µ¤ì¤Þ¤¹¡£'; -$string['first'] = 'ºÇ½é¤Î'; +$string['explain_timeformat'] = '»þ´Ö¤Îɽ¼¨¤Ï12»þ´Öɽ¼¨¤Þ¤¿¤Ï24»þ´Öɽ¼¨¤òÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤òÁªÂò¤·¤¿¾ì¹ç¤Ï¡¢»ÈÍѸÀ¸ì¤Ë¹ç¤ï¤»¤Æ¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¼«Æ°Åª¤ËÁªÂò¤µ¤ì¤Þ¤¹¡£'; +$string['february'] = '2·î'; $string['fri'] = '¶â'; $string['friday'] = '¶âÍËÆü'; $string['globalevents'] = 'Á´ÂΤΥ¤¥Ù¥ó¥È'; $string['gotocalendar'] = '¥«¥ì¥ó¥À¡¼¤Ø°Üư'; $string['groupevents'] = '¥°¥ë¡¼¥×¥¤¥Ù¥ó¥È'; $string['hidden'] = 'Èóɽ¼¨Ãæ'; -$string['last'] = 'ºÇ¸å¤Î'; +$string['january'] = '1·î'; +$string['july'] = '7·î'; +$string['june'] = '6·î'; $string['manyevents'] = '$a ¥¤¥Ù¥ó¥È'; +$string['march'] = '3·î'; +$string['may'] = '5·î'; $string['mon'] = '·î'; $string['monday'] = '·îÍËÆü'; -$string['monthlyview'] = '·îËèɽ¼¨'; +$string['monthlyview'] = '·îɽ¼¨'; $string['newevent'] = '¿·¤·¤¤¥¤¥Ù¥ó¥È'; -$string['notusingdst'] = 'DST ( ²Æ»þ´Ö ) ¤ò»ÈÍѤ·¤Ê¤¤'; $string['noupcomingevents'] = 'ľ¶á¤Î¥¤¥Ù¥ó¥È¤Ï¤¢¤ê¤Þ¤»¤ó'; -$string['nth'] = '{$a} ÈÖÌܤÎ'; +$string['november'] = '11·î'; +$string['october'] = '10·î'; $string['oneevent'] = '1 ¥¤¥Ù¥ó¥È'; $string['pref_lookahead'] = 'ľ¶á¥¤¥Ù¥ó¥È¤ÎÆü¿ôÈϰÏ'; $string['pref_maxevents'] = 'ľ¶á¥¤¥Ù¥ó¥È¤ÎºÇÂçɽ¼¨¿ô'; -$string['pref_persistflt'] = '¥Õ¥£¥ë¥¿ÀßÄê¤òµ­²±¤¹¤ë'; $string['pref_startwday'] = '½µ¤Î½é¤á'; $string['pref_timeformat'] = '»þ´Ö¥Õ¥©¡¼¥Þ¥Ã¥È'; $string['preferences'] = 'ÀßÄê'; @@ -83,29 +75,27 @@ $string['repeatweeksl'] = ' $string['repeatweeksr'] = '·ï'; $string['sat'] = 'ÅÚ'; $string['saturday'] = 'ÅÚÍËÆü'; +$string['september'] = '9·î'; $string['shown'] = 'ɽ¼¨Ãæ'; $string['spanningevents'] = '¿Ê¹ÔÃæ¥¤¥Ù¥ó¥È'; $string['sun'] = 'Æü'; $string['sunday'] = 'ÆüÍËÆü'; $string['thu'] = 'ÌÚ'; $string['thursday'] = 'ÌÚÍËÆü'; -$string['timeformat_12'] = '12»þ´Ö ( ¸áÁ°/¸á¸å )'; +$string['timeformat_12'] = '12»þ´Ö(¸áÁ°/¸á¸å)'; $string['timeformat_24'] = '24»þ´Ö'; -$string['timeforward'] = '¿Ê¤á¤Þ¤¹'; -$string['timerewind'] = 'Ìᤷ¤Þ¤¹'; -$string['timezonename'] = '¥¿¥¤¥à¥¾¡¼¥ó'; $string['today'] = 'º£Æü'; $string['tomorrow'] = 'ÌÀÆü'; $string['tt_deleteevent'] = '¥¤¥Ù¥ó¥È¤Îºï½ü'; $string['tt_editevent'] = '¥¤¥Ù¥ó¥È¤ÎÊÔ½¸'; -$string['tt_hidecourse'] = '¥³¡¼¥¹¥¤¥Ù¥ó¥È¤Ïɽ¼¨Ãæ¤Ç¤¹ ( ¥¯¥ê¥Ã¥¯¤ÇÈóɽ¼¨ )'; -$string['tt_hideglobal'] = 'Á´ÂΤΥ¤¥Ù¥ó¥È¤Ïɽ¼¨Ãæ¤Ç¤¹ ( ¥¯¥ê¥Ã¥¯¤ÇÈóɽ¼¨ )'; -$string['tt_hidegroups'] = '¥°¥ë¡¼¥×¥¤¥Ù¥ó¥È¤Ïɽ¼¨Ãæ¤Ç¤¹ ( ¥¯¥ê¥Ã¥¯¤ÇÈóɽ¼¨ )'; -$string['tt_hideuser'] = '¥æ¡¼¥¶¥¤¥Ù¥ó¥È¤Ïɽ¼¨Ãæ¤Ç¤¹ ( ¥¯¥ê¥Ã¥¯¤ÇÈóɽ¼¨ )'; -$string['tt_showcourse'] = '¥³¡¼¥¹¥¤¥Ù¥ó¥È¤ÏÈóɽ¼¨Ãæ¤Ç¤¹( ¥¯¥ê¥Ã¥¯¤Çɽ¼¨ )'; -$string['tt_showglobal'] = 'Á´ÂΤΥ¤¥Ù¥ó¥È¤ÏÈóɽ¼¨Ãæ¤Ç¤¹ ( ¥¯¥ê¥Ã¥¯¤Çɽ¼¨ )'; -$string['tt_showgroups'] = '¥°¥ë¡¼¥×¥¤¥Ù¥ó¥È¤ÏÈóɽ¼¨Ãæ¤Ç¤¹ ( ¥¯¥ê¥Ã¥¯¤Çɽ¼¨ )'; -$string['tt_showuser'] = '¥æ¡¼¥¶¥¤¥Ù¥ó¥È¤ÏÈóɽ¼¨Ãæ¤Ç¤¹ ( ¥¯¥ê¥Ã¥¯¤Çɽ¼¨ )'; +$string['tt_hidecourse'] = '¥³¡¼¥¹¥¤¥Ù¥ó¥È¤Ïɽ¼¨Ãæ¤Ç¤¹(¥¯¥ê¥Ã¥¯¤ÇÈóɽ¼¨)'; +$string['tt_hideglobal'] = 'Á´ÂΤΥ¤¥Ù¥ó¥È¤Ïɽ¼¨Ãæ¤Ç¤¹(¥¯¥ê¥Ã¥¯¤ÇÈóɽ¼¨)'; +$string['tt_hidegroups'] = '¥°¥ë¡¼¥×¥¤¥Ù¥ó¥È¤Ïɽ¼¨Ãæ¤Ç¤¹(¥¯¥ê¥Ã¥¯¤ÇÈóɽ¼¨)'; +$string['tt_hideuser'] = '¥æ¡¼¥¶¥¤¥Ù¥ó¥È¤Ïɽ¼¨Ãæ¤Ç¤¹(¥¯¥ê¥Ã¥¯¤ÇÈóɽ¼¨)'; +$string['tt_showcourse'] = '¥³¡¼¥¹¥¤¥Ù¥ó¥È¤ÏÈóɽ¼¨Ãæ¤Ç¤¹(¥¯¥ê¥Ã¥¯¤Çɽ¼¨)'; +$string['tt_showglobal'] = 'Á´ÂΤΥ¤¥Ù¥ó¥È¤ÏÈóɽ¼¨Ãæ¤Ç¤¹(¥¯¥ê¥Ã¥¯¤Çɽ¼¨)'; +$string['tt_showgroups'] = '¥°¥ë¡¼¥×¥¤¥Ù¥ó¥È¤ÏÈóɽ¼¨Ãæ¤Ç¤¹(¥¯¥ê¥Ã¥¯¤Çɽ¼¨)'; +$string['tt_showuser'] = '¥æ¡¼¥¶¥¤¥Ù¥ó¥È¤ÏÈóɽ¼¨Ãæ¤Ç¤¹(¥¯¥ê¥Ã¥¯¤Çɽ¼¨)'; $string['tue'] = '²Ð'; $string['tuesday'] = '²ÐÍËÆü'; $string['typecourse'] = '¥³¡¼¥¹¥¤¥Ù¥ó¥È'; diff --git a/lang/ja/censor.php b/lang/ja/censor.php index 4ac01c7a1b0..edda5c1b5c0 100644 --- a/lang/ja/censor.php +++ b/lang/ja/censor.php @@ -1,10 +1,7 @@ - diff --git a/lang/ja/chat.php b/lang/ja/chat.php index b33566dfbf5..2a4dd874fcb 100644 --- a/lang/ja/chat.php +++ b/lang/ja/chat.php @@ -1,5 +1,5 @@ ¾ï¤ËÈ¿±Ç¤µ¤ì¤Þ¤¹¡£'; -$string['explainmethoddaemon'] = '¤³¤ì¤é¤ÎÀßÄê¤Ï¡¢¥Á¥ã¥Ã¥È¥á¥½¥Ã¥É¤Ë¡ÖChat¥µ¡¼¥Ð¥Ç¡¼¥â¥ó¡×¤òÁªÂò¤·¤¿»þ¤Î¤ß±Æ¶Á¤·¤Þ¤¹¡£'; -$string['explainmethodnormal'] = '¤³¤ì¤é¤ÎÀßÄê¤Ï¡¢¥Á¥ã¥Ã¥È¥á¥½¥Ã¥É¤Ë¡Ö¥Î¡¼¥Þ¥ë¥á¥½¥Ã¥É¡×¤òÁªÂò¤·¤¿»þ¤Î¤ß±Æ¶Á¤·¤Þ¤¹¡£'; -$string['generalconfig'] = '°ìÈÌÀßÄê'; $string['helpchatting'] = '¥Á¥ã¥Ã¥È¥Ø¥ë¥×'; $string['idle'] = '¥¢¥¤¥É¥ë'; $string['messagebeepseveryone'] = '$a ¤¬Á´°÷¤Ë¥Ó¡¼¥×¤·¤Þ¤¹!'; @@ -39,7 +35,7 @@ $string['modulename'] = ' $string['modulenameplural'] = '¥Á¥ã¥Ã¥È'; $string['neverdeletemessages'] = '¥á¥Ã¥»¡¼¥¸¤òºï½ü¤·¤Ê¤¤'; $string['nextsession'] = '¼¡¤Î¥¹¥±¥¸¥å¡¼¥ë¥»¥Ã¥·¥ç¥ó'; -$string['noguests'] = '¥²¥¹¥È¤Ï¤³¤Î¥Á¥ã¥Ã¥È¤òÍøÍѤǤ­¤Þ¤»¤ó¡£'; +$string['noguests'] = '¥²¥¹¥È¤Ï¤³¤Î¥Á¥ã¥Ã¥È¤òÍøÍѽÐÍè¤Þ¤»¤ó¡£'; $string['nomessages'] = '¥á¥Ã¥»¡¼¥¸¤¬¤¢¤ê¤Þ¤»¤ó¡£'; $string['repeatdaily'] = 'ËèÆüƱ¤¸»þ´Ö¤Ë'; $string['repeatnone'] = '·«¤êÊÖ¤·Ìµ¤· - »ØÄꤷ¤¿»þ´Ö¤Ë¤Î¤ßɽ¼¨'; @@ -49,7 +45,7 @@ $string['savemessages'] = ' $string['seesession'] = '¤³¤Î¥»¥Ã¥·¥ç¥ó¤ò¸«¤ë'; $string['sessions'] = '¥Á¥ã¥Ã¥È¥»¥Ã¥·¥ç¥ó'; $string['strftimemessage'] = '%%H:%%M'; -$string['studentseereports'] = 'Á´¤Æ¤Î¿Í¤¬²áµî¤Î¥»¥Ã¥·¥ç¥ó¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤ë'; -$string['viewreport'] = '²áµî¤Î¥Á¥ã¥Ã¥È¥»¥Ã¥·¥ç¥ó¤òɽ¼¨'; +$string['studentseereports'] = 'Á´¤Æ¤Î¿Í¤¬²áµî¤Î¥»¥Ã¥·¥ç¥ó¤ò¸«¤ë¤³¤È¤¬½ÐÍè¤ë'; +$string['viewreport'] = '²áµî¤Î¥Á¥ã¥Ã¥È¥»¥Ã¥·¥ç¥ó¤ò±ÜÍ÷'; ?> diff --git a/lang/ja/choice.php b/lang/ja/choice.php index 75b70eb54ba..97ca39c705f 100644 --- a/lang/ja/choice.php +++ b/lang/ja/choice.php @@ -1,44 +1,33 @@ diff --git a/lang/ja/countries.php b/lang/ja/countries.php index 601357ff1d4..950bf82b049 100644 --- a/lang/ja/countries.php +++ b/lang/ja/countries.php @@ -1,5 +1,5 @@
                ËÜÅö¤Ë¤³¤Î¥À¥¤¥¢¥í¥°¤òÊĤ¸¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?'; -$string['deleteafter'] = '½ªÎ»¤·¤¿¥À¥¤¥¢¥í¥°¤òºï½ü¤¹¤ë ( ¡ûÆü¸å )'; +$string['confirmclosure'] = '$a ¤È¤Î¥À¥¤¥¢¥í¥°¤òÊĤ¸¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹¡£½ªÎ»¤·¤¿¥À¥¤¥¢¥í¥°¤ÏºÆ³«¤¹¤ë¤³¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£¤³¤Î¥À¥¤¥¢¥í¥°¤òÊĤ¸¤¿¾ì¹ç¡¢±ÜÍ÷¤¹¤ë¤³¤È¤Ï²Äǽ¤Ç¤¹¤¬Äɲ乤뤳¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£¤³¤Î¿Í¤È·×¬¤·¤Æ\"²ñÏÃ\"¤ò¹Ô¤¦¾ì¹ç¡¢ºÆÅÙ¥À¥¤¥¢¥í¥°¤ò³«»Ï¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

                ËÜÅö¤Ë¤³¤Î¥À¥¤¥¢¥í¥°¤òÊĤ¸¤Æ¤âµ¹¤·¤¤¤Ç¤¹¤«?'; +$string['deleteafter'] = '½ªÎ»¤·¤¿¥À¥¤¥¢¥í¥°¤òºï½ü¤¹¤ë(¡ûÆü¸å)'; $string['dialogueclosed'] = '¥À¥¤¥¢¥í¥°¤¬ÊĤ¸¤é¤ì¤Þ¤·¤¿'; $string['dialogueintro'] = '¥À¥¤¥¢¥í¥°ÀâÌÀ'; $string['dialoguemail'] = '$a->userfrom ¤¬¿·¤·¤¤¥¨¥ó¥È¥ê¤ò¤¢¤Ê¤¿¤Î¥À¥¤¥¢¥í¥°¥¨¥ó¥È¥ê \'$a->dialogue\' ¤ËÅê¹Æ¤·¤Þ¤·¤¿¡£ @@ -24,10 +24,9 @@ $string['dialoguename'] = ' $string['dialogueopened'] = '$a ¤Ë¤è¤ê³«¤«¤ì¤¿¥À¥¤¥¢¥í¥°'; $string['dialoguewith'] = '$a ¤È¤Î¥À¥¤¥¢¥í¥°'; $string['everybody'] = 'Á´°÷'; -$string['furtherinformation'] = '¾ÜºÙ¾ðÊó'; +$string['furtherinformation'] = '¾ÜºÙ'; $string['lastentry'] = 'ºÇ¿·¥¨¥ó¥È¥ê'; $string['maildefault'] = '¥Ç¥Õ¥©¥ë¥È¥á¡¼¥ë'; -$string['mailnotification'] = '¥á¡¼¥ëÄÌÃÎ'; $string['modulename'] = '¥À¥¤¥¢¥í¥°'; $string['modulenameplural'] = '¥À¥¤¥¢¥í¥°'; $string['namehascloseddialogue'] = '$a ¤¬¥À¥¤¥¢¥í¥°¤òÊĤ¸¤Þ¤·¤¿'; @@ -39,16 +38,16 @@ $string['nosubject'] = ' $string['notextentered'] = '¥Æ¥­¥¹¥È¤¬ÆþÎϤµ¤ì¤Æ¤¤¤Þ¤»¤ó'; $string['notstarted'] = '¤³¤Î¥À¥¤¥¢¥í¥°¤ò¤Þ¤À³«»Ï¤·¤Æ¤¤¤Þ¤»¤ó'; $string['notyetseen'] = '¤Þ¤À±ÜÍ÷¤µ¤ì¤Æ¤¤¤Þ¤»¤ó'; -$string['numberofentries'] = '¥¨¥ó¥È¥ê¿ô'; -$string['numberofentriesadded'] = 'Äɲ䵤줿¥¨¥ó¥È¥ê: $a'; +$string['numberofentries'] = '¥¨¥ó¥È¥ê¡¼¿ô'; +$string['numberofentriesadded'] = 'Äɲ䵤줿¥¨¥ó¥È¥ê¡¼: $a'; $string['of'] = 'Ãæ'; $string['onwrote'] = '½ñ¹þ¤ßÆü»þ: $a'; $string['onyouwrote'] = '¤¢¤Ê¤¿¤Î½ñ¹þ¤ßÆü»þ: $a'; $string['open'] = '³«ºÅÃæ'; $string['openadialoguewith'] = '¥À¥¤¥¢¥í¥°¤ò³«¤¯'; $string['opendialogue'] = '¥À¥¤¥¢¥í¥°¤ò³«¤¯'; -$string['opendialogueentries'] = '¥À¥¤¥¢¥í¥°¥¨¥ó¥È¥ê¤ò³«¤¯'; -$string['pane0'] = '³«ºÅÃæ¤Î¥À¥¤¥¢¥í¥°'; +$string['opendialogueentries'] = '¥À¥¤¥¢¥í¥°¥¨¥ó¥È¥ê¡¼¤ò³«¤¯'; +$string['pane0'] = '¥À¥¤¥¢¥í¥°¤ò³«¤¯'; $string['pane1'] = '¤¢¤Ê¤¿¤ÎÊÖ»ö¤òÂԤäƤ¤¤ë¥À¥¤¥¢¥í¥° $a ·ï'; $string['pane1one'] = '¤¢¤Ê¤¿¤ÎÊÖ»ö¤òÂԤäƤ¤¤ë¥À¥¤¥¢¥í¥° 1 ·ï'; $string['pane2'] = '¾¤Î¿Í¤ÎÊÖ»ö¤òÂԤäƤ¤¤ë¥À¥¤¥¢¥í¥° $a ·ï'; @@ -56,16 +55,16 @@ $string['pane2one'] = '¾ $string['pane3'] = '½ªÎ»¤·¤¿¥À¥¤¥¢¥í¥° $a ·ï'; $string['pane3one'] = '½ªÎ»¤·¤¿¥À¥¤¥¢¥í¥° 1 ·ï'; $string['seen'] = '$a °ÊÁ°¤Ë±ÜÍ÷'; -$string['sendmailmessages'] = '¿·¤·¤¤¥¨¥ó¥È¥ê¤Ë´Ø¤·¤Æ¥á¡¼¥ë¤òÁ÷¿®¤¹¤ë'; +$string['sendmailmessages'] = '¿·¤·¤¤¥¨¥ó¥È¥ê¡¼¤Ë´Ø¤·¤Æ¥á¡¼¥ë¤òÁ÷¿®¤¹¤ë'; $string['status'] = '¥¹¥Æ¡¼¥¿¥¹'; $string['studenttostudent'] = '³ØÀ¸ - ³ØÀ¸'; $string['subject'] = '¥Æ¡¼¥Þ'; $string['subjectadded'] = '¥Æ¡¼¥Þ¤¬Äɲ䵤ì¤Þ¤·¤¿'; $string['teachertostudent'] = '¶µ»Õ - ³ØÀ¸'; -$string['typefirstentry'] = 'ºÇ½é¤Î¥¨¥ó¥È¥ê¤ò¤³¤³¤ËÆþÎϤ·¤Æ¤¯¤À¤µ¤¤'; +$string['typefirstentry'] = 'ºÇ½é¤Î¥¨¥ó¥È¥ê¡¼¤ò¤³¤³¤ËÆþÎϤ·¤Æ¤¯¤À¤µ¤¤'; $string['typefollowup'] = '¥Õ¥©¥í¡¼¥¢¥Ã¥×¤ò¤³¤³¤ËÆþÎϤ·¤Æ¤¯¤À¤µ¤¤'; $string['typeofdialogue'] = '¥À¥¤¥¢¥í¥°¥¿¥¤¥×'; $string['typereply'] = 'ÊÖ»ö¤ò¤³¤³¤ËÆþÎϤ·¤Æ¤¯¤À¤µ¤¤'; -$string['viewallentries'] = '$a ¤Î¥À¥¤¥¢¥í¥°¥¨¥ó¥È¥ê¤òɽ¼¨¤¹¤ë'; +$string['viewallentries'] = '$a ¤Î¥À¥¤¥¢¥í¥°¥¨¥ó¥È¥ê¡¼¤òɽ¼¨¤¹¤ë'; ?> diff --git a/lang/ja/docs/background.html b/lang/ja/docs/background.html index 8d4b507de9f..61e42ff94f5 100644 --- a/lang/ja/docs/background.html +++ b/lang/ja/docs/background.html @@ -12,22 +12,22 @@

                Moodle¤ÏÆü¡¹È¯Ã£¤·¤Æ¤¤¤ë³«È¯¿Ê¹ÔÃæ¤Î¥·¥¹¥Æ¥à¤Ç¤¹¡£³«È¯¤Ï¸½ºß¤â¥×¥í¥¸¥§¥¯¥È¥ê¡¼¥À¡¼¤Ç¤¢¤ëMartin Dougiamas¤Ë¤è¤Ã¤Æ³«»Ï¤µ¤ì¤Þ¤·¤¿:

                -

                ¿ôǯ¤Î´Ö¡¢»ä¤Ï²¿¤È¤«Moodle¤Ë¼è¤êÁȤó¤Ç¤­¤Þ¤·¤¿¡£Moodle¤Ø¤Î¼è¤êÁȤߤϡ¢»ä¤¬¥«¡¼¥Æ¥£¥ó¹©²ÊÂç³Ø¤Ë¥¦¥§¥Ö¥Þ¥¹¥¿¡¼¤ª¤è¤ÓWebCT¤Î¥·¥¹¥Æ¥à´ÉÍý¼Ô¤È¤·¤Æ¶Ð̳¤·¤Æ¤¤¤¿º¢¤Ë»Ï¤Þ¤ê¤Þ¤·¤¿¡£»ä¤Ï¡¢WebCT¤Ç¾¯¤Ê¤«¤é¤º¥Õ¥é¥¹¥È¥ì¡¼¥·¥ç¥ó¤ò´¶¤¸¤Æ¤¤¤Þ¤·¤¿¤·¡¢áÚ¤µ¤ÇÁߤ­Ýۤꤿ¤¤¤è¤¦¤Ê»×¤¤¤Ë¶î¤é¤ì¤Þ¤·¤¿¡£Â¾¤ÎÊýË¡¤¬¤¢¤ë¤Î¤Ç¤Ï¤Ê¤¤¤«¤È(¤¤¤¤¤¨¡¢Blackboard¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó :-)

                -

                »ä¤Ï¤Þ¤¿³Ø¹»¤ä¾®µ¬ÌϤλÜÀß(¤¤¤¯¤Ä¤«¤ÏÂ絬ÌÏ!)¤Ç¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤ò¸úΨÎɤ¯ÍøÍѤ·¤¿¤¤¤È¹Í¤¨¤Æ¤¤¤ë¿Í¡¹¤òÃΤäƤ¤¤Þ¤·¤¿¡£Èà¤é¤Ï¥Æ¥¯¥Î¥í¥¸¡¼¤È¶µ°é³Ø¤ÎÌÂÏ©¤ÎÃæ¤Ç¤É¤³¤«¤é¥¹¥¿¡¼¥È¤¹¤ì¤ÐÎɤ¤¤Î¤«Ê¬¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£Èà¤é¤Î¶µ°é¥¹¥­¥ë¤ò¥ª¥ó¥é¥¤¥ó´Ä¶­¤Ë³è¤«¤¹¤³¤È¤¬¤Ç¤­¤Æ¡¢ÌµÎÁ¤ÇÍøÍѲÄǽ¤ÊÂå¤ï¤ê¤Î¥·¥¹¥Æ¥à¤¬¤¢¤ì¤Ð¤È¡¢»ä¤Ï¾ï¤Ë»×¤Ã¤Æ¤¤¤Þ¤·¤¿¡£

                -

                ̤¤À¼Â¸½¤µ¤ì¤Æ¤¤¤Ê¤¤¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤ò¥Ù¡¼¥¹¤È¤·¤¿¶µ°é¤Î²ÄǽÀ­¤ËÂФ¹¤ë»ä¤Î¶¯¤¤¿®Ç°¤¬¡¢¶µ°é¤Ë¤ª¤¤¤Æ½¤»Î²ÝÄø¡¢Çî»Î²ÝÄø¤Î½¤Î»¤ª¤è¤Ó¤½¤ì°ÊÁ°¤Î¥­¥ã¥ê¥¢¤Ç¤¢¤ë¾ðÊ󹩳Ø(³Ø½¬¤È¶¦Æ±ºî¶È¤ÎËܼÁ¤Ë´Ø¤·¤Æ¿·¤¿¤Ë¹½ÃÛ¤µ¤ì¤¿Ãμ±)¤È¤ÎÍ»¹ç¤ò²Äǽ¤Ë¤·¤Þ¤·¤¿¡£ÆÃ¤Ë¡¢»ä¤Ï¼Ò²ñŪ¹½À®ÏÀ¤Îǧ¼±ÏÀ¤ËÃø¤·¤¯±Æ¶Á¤ò¼õ¤±¤Þ¤·¤¿¡£¼Ò²ñŪ¹½À®ÏÀ¤Îǧ¼±ÏÀ¤Ç¤Ï¡¢³Ø½¬¤ò¼Ò²ñ³èư¤È¤·¤Æ¤Î¤ß°·¤¦¤Î¤Ç¤Ï̵¤¯¡¢Â¾¤Î¿Í¤¬¸«¤¿¤ê»È¤Ã¤¿¤ê¤¹¤ë¿Í¹©Êª(¥Æ¥­¥¹¥È¤Î¤è¤¦¤Ê)¤ò³èưŪ¤ËÀ½ºî¤¹¤ë²áÄø¤ÇȯÀ¸¤¹¤ë³Ø¤Ó¤Ë¤âÃí°Õ¤ò¸þ¤±¤Þ¤¹¡£

                -

                »ä¤Ë¤È¤Ã¤Æ¡¢¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î»È¤¤¤ä¤¹¤µ¤Ï½ÅÍפÊÉôʬ¤Ç¤¢¤ê¡¢¼ÂºÝ¤Ë²Äǽ¤Ê¸Â¤êľ´¶Åª¤Ë»ÈÍѤǤ­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£

                -

                »ä¤Ï¡¢Moodle¤Î·Ñ³Ū¤Ê³«È¯¤ª¤è¤ÓMoodle¤ò¥ª¡¼¥×¥ó³î¤Ä̵ÎÁ¤Ë¤¹¤ë¤³¤È¤ËÂФ·¤ÆÁ´ÎϤò·¹¤±¤Æ¤¤¤Þ¤¹¡£»ä¤Ï¡¢À©¸Â¤Î̵¤¤¶µ°é¤ª¤è¤ÓÎϤòÍ¿¤¨¤é¤ì¤¿¼ø¶È¤Î½ÅÍ×À­¤ò¿¼¤¯¿®¤¸¤Æ¤¤¤Þ¤¹¤·¡¢»ä¤Ë¤È¤Ã¤ÆMoodle¤Ï¤³¤Î¹Í¤¨Êý¤ò¼Â¸½¤¹¤ë¤¿¤á¤Î¼çÍפÊÊýË¡¤Ê¤Î¤Ç¤¹¡£

                +

                ¿ôǯ¤Î´Ö¡¢»ä¤Ï²¿¤È¤«Moodle¤Ë¼è¤êÁȤó¤Ç¤­¤Þ¤·¤¿¡£Moodle¤Ø¤Î¼è¤êÁȤߤϡ¢»ä¤¬¥«¡¼¥Æ¥£¥ó¹©²ÊÂç³Ø¤Ë¥¦¥§¥Ö¥Þ¥¹¥¿¡¼µÚ¤ÓWebCT¤Î¥·¥¹¥Æ¥à´ÉÍý¼Ô¤È¤·¤Æ¶Ð̳¤·¤Æ¤¤¤¿º¢¤Ë»Ï¤Þ¤ê¤Þ¤·¤¿¡£»ä¤Ï¡¢WebCT¤Ç¾¯¤Ê¤«¤é¤º¥Õ¥é¥¹¥È¥ì¡¼¥·¥ç¥ó¤ò´¶¤¸¤Þ¤·¤¿¤·¡¢áÚ¤µ¤ÇÁߤ­Ýۤꤿ¤¤¤è¤¦¤Ê»×¤¤¤Ë¶î¤é¤ì¤Þ¤·¤¿¡£Â¾¤ÎÊýË¡¤¬¤¢¤ë¤Î¤Ç¤Ï¤Ê¤¤¤«¤È(¤¤¤¤¤¨¡¢Blackboard¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó :-)

                +

                »ä¤Ï¤Þ¤¿³Ø¹»¤ä¾®µ¬ÌϤλÜÀß(¤¤¤¯¤Ä¤«¤ÏÂ絬ÌÏ!)¤Ç¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤ò¸úΨÎɤ¯ÍøÍѤ·¤¿¤¤¤È¹Í¤¨¤Æ¤¤¤ë¿Í¡¹¤òÃΤäƤ¤¤Þ¤·¤¿¡£Èà¤é¤Ï¥Æ¥¯¥Î¥í¥¸¡¼¤È¶µ°é³Ø¤ÎÌÂÏ©¤ÎÃæ¤Ç¤É¤³¤«¤é¥¹¥¿¡¼¥È¤¹¤ì¤ÐÎɤ¤¤Î¤«Ê¬¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£Èà¤é¤Î¶µ°é¥¹¥­¥ë¤ò¥ª¥ó¥é¥¤¥ó´Ä¶­¤Ë³è¤«¤¹¤³¤È¤¬½ÐÍè¤Æ¡¢ÌµÎÁ¤ÇÍøÍѲÄǽ¤ÊÂå¤ï¤ê¤Î¥·¥¹¥Æ¥à¤¬¤¢¤ì¤Ð¤È¡¢»ä¤Ï¾ï¤Ë»×¤Ã¤Æ¤¤¤Þ¤·¤¿¡£

                +

                ¼Â¸½¤µ¤ì¤Æ¤¤¤Ê¤¤¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤ò¥Ù¡¼¥¹¤È¤·¤¿¶µ°é¤Î²ÄǽÀ­¤ËÂФ¹¤ë»ä¤Î¶¯¤¤¿®Ç°¤¬¡¢¶µ°é¤Ë¤ª¤¤¤Æ½¤»Î²ÝÄø¡¢Çî»Î²ÝÄø¤Î½¤Î»µÚ¤Ó¤½¤ì°ÊÁ°¤Î¥­¥ã¥ê¥¢¤Ç¤¢¤ë¾ðÊ󹩳Ø(³Ø½¬¤È¶¦Æ±ºî¶È¤ÎËܼÁ¤Ë´Ø¤·¤Æ¿·¤¿¤Ë¹½ÃÛ¤µ¤ì¤¿Ãμ±)¤È¤ÎÍ»¹ç¤ò²Äǽ¤Ë¤·¤Þ¤·¤¿¡£ÆÃ¤Ë¡¢»ä¤Ï¼Ò²ñŪ¹½À®ÏÀ¤Îǧ¼±ÏÀ¤ËÃø¤·¤¯±Æ¶Á¤ò¼õ¤±¤Þ¤·¤¿¡£¼Ò²ñŪ¹½À®ÏÀ¤Îǧ¼±ÏÀ¤Ç¤Ï¡¢³Ø½¬¤ò¼Ò²ñ³èư¤È¤·¤Æ¤Î¤ß°·¤¦¤Î¤Ç¤Ï̵¤¯¡¢Â¾¤Î¿Í¤¬¸«¤¿¤ê»È¤Ã¤¿¤ê¤¹¤ë¿Í¹©Êª(¥Æ¥­¥¹¥È¤Î¤è¤¦¤Ê)¤ò³èưŪ¤ËÀ½ºî¤¹¤ë²áÄø¤ÇȯÀ¸¤¹¤ë³Ø¤Ó¤Ë¤âÃí°Õ¤ò¸þ¤±¤Þ¤¹¡£

                +

                »ä¤Ë¤È¤Ã¤Æ¡¢¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î»È¤¤¤ä¤¹¤µ¤Ï½ÅÍפÊÉôʬ¤Ç¤¢¤ê¡¢¼ÂºÝ¤Ë²Äǽ¤Ê¸Â¤êľ´¶Åª¤Ë»ÈÍѽÐÍè¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£

                +

                »ä¤Ï¡¢Moodle¤Î·Ñ³Ū¤Ê³«È¯µÚ¤ÓMoodle¤ò¥ª¡¼¥×¥ó³î¤Ä̵ÎÁ¤Ë¤¹¤ë¤³¤È¤ËÂФ·¤ÆÁ´ÎϤò·¹¤±¤Æ¤¤¤Þ¤¹¡£»ä¤Ï¡¢À©¸Â¤Î̵¤¤¶µ°éµÚ¤ÓÎϤòÍ¿¤¨¤é¤ì¤¿¼ø¶È¤Î½ÅÍ×À­¤ò¿¼¤¯¿®¤¸¤Æ¤¤¤Þ¤¹¤·¡¢»ä¤Ë¤È¤Ã¤ÆMoodle¤Ï¤³¤Î¹Í¤¨Êý¤ò¼Â¸½¤¹¤ë°Ù¤Î¼çÍפÊÊýË¡¤Ê¤Î¤Ç¤¹¡£

                2002ǯ8·î20Æü¤Ë¥Ð¡¼¥¸¥ç¥ó1.0¤¬À¤¤ËÁ÷¤ê½Ð¤µ¤ì¤ë¤Þ¤Ç¡¢¿ô¿¤¯¤Î½é´ü¤Î¥×¥í¥È¥¿¥¤¥×¤¬³«È¯¤µ¤ì¡¢¤½¤·¤ÆÇË´þ¤µ¤ì¤Þ¤·¤¿¡£¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢¾®µ¬Ìϳî¤Ä¿ÆÌ©¤ÊÂç³Ø¥ì¥Ù¥ë¤Î¥¯¥é¥¹¤ò¥¿¡¼¥²¥Ã¥È¤È¤·¤Æ¤¤¤Þ¤·¤¿¡£¤Þ¤¿¡¢ÌÊÌ©¤ËʬÀϤµ¤ì¤¿¡¢¾®µ¬ÌϤÊÀ®¿Í¤Î»²²Ã¼Ô¥°¥ë¡¼¥×Æâ¤Ë¤ª¤±¤ë¡¢¶¨Æ±³Ø½¬¤ÈÆâ¾Ê¤ÎËܼÁ¤Î¥±¡¼¥¹¥¹¥¿¥Ç¥£¡¼¤Ë´Ø¤¹¤ë¸¦µæ¤ò¥Æ¡¼¥Þ¤È¤·¤Æ¤¤¤Þ¤·¤¿¡£

                -

                ¤½¤ì°ÊÍè¡¢¿·µ¡Ç½¤òÄɲ䷤Ĥġ¢¤è¤êÎɤ¤³ÈÄ¥À­¤ª¤è¤Ó¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ò²þÁ±¤·¤¿°ÂÄꤷ¤¿¥·¥ê¡¼¥º¤¬¿·¤¿¤Ë¥ê¥ê¡¼¥¹¤µ¤ì¤Æ¤­¤Þ¤·¤¿¡£

                -

                Moodle¤¬¹­¤Þ¤ê¡¢¥³¥ß¥å¥Ë¥Æ¥£¡¼¤¬À®Ä¹¤¹¤ë¤Ë¤Ä¤ì¡¢¤µ¤é¤Ë°Û¤Ê¤ë¶µ°é´Ä¶­¤Ë¤¤¤ëÍÍ¡¹¤ÊÊý¤«¤é¤Î¾ðÊ󤬴󤻤é¤ì¤Þ¤·¤¿¡£Î㤨¤Ð¡¢¸½ºßMoodle¤ÏÂç³Ø¤Ç»ÈÍѤµ¤ì¤ë¤À¤±¤Ç¤Ê¤¯¡¢¹â¹»¡¢¾®³Ø¹»¡¢Èó±ÄÍøÃÄÂΡ¢²ñ¼Ò¤Ë¤ª¤±¤ë¶µ»Õ¤ä¼«Âð³Ø½¬¤ÎÊݸî¼Ô¤Ë¤â»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£Áý²Ã¤·¤Ä¤Ä¤¢¤ëÀ¤³¦Ãæ¤Î¥æ¡¼¥¶¤¬ÍÍ¡¹¤ÊÊýË¡¤ÇMoodle¤Ë¹×¸¥¤·¤Æ¤¤¤Þ¤¹¡£¾ÜºÙ¤Ï¼Õ¼­¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                -

                Moodle¥×¥í¥¸¥§¥¯¥È¤Î½ÅÍ×¤ÊÆÃħ¤Ï¡¢moodle.org¤Ë¤¢¤ê¤Þ¤¹¡£¤³¤Î¥µ¥¤¥È¤Ï¡¢¾ðÊó¤òÄ󶡤·¤¿¤ê¡¢¥·¥¹¥Æ¥à´ÉÍý¼Ô¡¢¶µ»Õ¡¢¸¦µæ¼Ô¡¢¶µ°é¥Ç¥¶¥¤¥Ê¡¼¡¢¥³¡¼¥¹³«È¯¼Ô¤ò´Þ¤àMoodle¥æ¡¼¥¶¤Î¶¦Æ±ºî¶È¤äµÄÏÀ¤Î¾ì¤È¤Ê¤ëÃæ¿´Åª¤Ê¸ºß¤Ç¤¹¡£Moodle¤Î¤è¤¦¤Ë¡¢¤³¤Î¥µ¥¤¥È¤Ï¥³¥ß¥å¥Ë¥Æ¥£¡¼¤ÎɬÍפ˱þ¤¸¤Æ¾ï¤Ë¿Ê²½¤·¤Æ¤¤¤Þ¤¹¤·¡¢Moodle¤Î¤è¤¦¤Ë¾ï¤Ë̵ÎÁ¤ÇÍøÍѤǤ­¤Þ¤¹¡£

                -

                2003ǯ¡¢ÉÕ²ÃŪ¤ÊÍ­½þ¥µ¥Ý¡¼¥È¡¢´ÉÍý¥Û¥¹¥Æ¥£¥ó¥°¡¢¥³¥ó¥µ¥ë¥Æ¥£¥ó¥°¤ª¤è¤Ó¤½¤Î¾¤Î¥µ¡¼¥Ó¥¹¤òÄ󶡤¹¤ë¤¿¤á¤Ë¡¢²ñ¼ÒÁÈ¿¥moodle.com¤¬ÀßΩ¤µ¤ì¤Þ¤·¤¿¡£

                -

                Moodle¤Ë´Ø¤¹¤ëº£¸å¤Î·×²è¤Ï̤Íè¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                +

                ¤½¤ì°ÊÍè¡¢¿·µ¡Ç½¤òÄɲ䷤Ĥġ¢¤è¤êÎɤ¤³ÈÄ¥À­µÚ¤Ó¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ò²þÁ±¤·¤¿°ÂÄꤷ¤¿¥·¥ê¡¼¥º¤¬¿·¤¿¤Ë¥ê¥ê¡¼¥¹¤µ¤ì¤Æ¤­¤Þ¤·¤¿¡£

                +

                Moodle¤¬¹­¤Þ¤ê¥³¥ß¥å¥Ë¥Æ¥£¡¼¤¬À®Ä¹¤¹¤ë¤Ë¤Ä¤ì¡¢¹¹¤Ë°Û¤Ê¤ë¶µ°é´Ä¶­¤Ë¤¤¤ëÍÍ¡¹¤ÊÊý¤«¤é¤Î¾ðÊ󤬴󤻤é¤ì¤Þ¤·¤¿¡£Î㤨¤Ð¡¢¸½ºßMoodle¤ÏÂç³Ø¤Ç»ÈÍѤµ¤ì¤ë¤À¤±¤Ç¤Ê¤¯¡¢¹â¹»¡¢¾®³Ø¹»¡¢Èó±ÄÍøÃÄÂΡ¢²ñ¼Ò¤Ë¤ª¤±¤ë¶µ»Õ¤ä¼«Âð³Ø½¬¤ÎÊݸî¼Ô¤Ë¤â»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£Áý²Ã¤·¤Ä¤Ä¤¢¤ëÀ¤³¦Ãæ¤Î¥æ¡¼¥¶¤¬ÍÍ¡¹¤ÊÊýË¡¤ÇMoodle¤Ë¹×¸¥¤·¤Æ¤¤¤Þ¤¹¡£¾ÜºÙ¤Ï¼Õ¼­¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                +

                Moodle¥×¥í¥¸¥§¥¯¥È¤Î½ÅÍ×¤ÊÆÃħ¤Ï¡¢moodle.org¤Ë¤¢¤ê¤Þ¤¹¡£¤³¤Î¥µ¥¤¥È¤Ï¡¢¾ðÊó¤òÄ󶡤·¤¿¤ê¡¢¥·¥¹¥Æ¥à´ÉÍý¼Ô¡¢¶µ»Õ¡¢¸¦µæ¼Ô¡¢¶µ°é¥Ç¥¶¥¤¥Ê¡¼¡¢¥³¡¼¥¹³«È¯¼Ô´Þ¤àMoodle¥æ¡¼¥¶¤Î¶¦Æ±ºî¶È¤äµÄÏÀ¤Î¾ì¤È¤Ê¤ëÃæ¿´Åª¤Ê¾ì¤Ç¤¹¡£Moodle¤Î¤è¤¦¤Ë¡¢¤³¤Î¥µ¥¤¥È¤Ï¥³¥ß¥å¥Ë¥Æ¥£¡¼¤ÎɬÍפ˱þ¤¸¤Æ¾ï¤Ë¿Ê²½¤·¤Æ¤¤¤Þ¤¹¤·¡¢Moodle¤Î¤è¤¦¤Ë¾ï¤Ë̵ÎÁ¤ÇÍøÍѤǤ­¤Þ¤¹¡£

                +

                2003ǯ¡¢ÉÕ²ÃŪ¤ÊÍ­½þ¥µ¥Ý¡¼¥È¡¢´ÉÍý¥Û¥¹¥Æ¥£¥ó¥°¡¢¥³¥ó¥µ¥ë¥Æ¥£¥ó¥°µÚ¤Ó¤½¤Î¾¤Î¥µ¡¼¥Ó¥¹¤òÄ󶡤¹¤ë°Ù¤Ë¡¢²ñ¼ÒÁÈ¿¥moodle.com¤¬ÀßΩ¤µ¤ì¤Þ¤·¤¿¡£

                +

                Moodle¤Ë´Ø¤¹¤ë¾­Íè¤Î·×²è¤Ï̤Íè¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                -

                Moodleʸ½ñ

                -

                Version: $Id$

                +

                Moodleʸ½ñ

                +

                Version: $Id$

                diff --git a/lang/ja/docs/docstyles.css b/lang/ja/docs/docstyles.css index 0af1b88cdb6..319597299dd 100644 --- a/lang/ja/docs/docstyles.css +++ b/lang/ja/docs/docstyles.css @@ -1,6 +1,5 @@ body, td, th, li { font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - background-color: #FFFFFF; } th { diff --git a/lang/ja/docs/faq.html b/lang/ja/docs/faq.html index f28e59fa89d..6f62ba90e55 100644 --- a/lang/ja/docs/faq.html +++ b/lang/ja/docs/faq.html @@ -20,15 +20,15 @@ Moodle

                -ÍÍ¡¹¤ÊÊýË¡¤ò»î¤·¤Æ¤ß¤Æ¤âÌäÂ꤬²ò·è¤·¤Ê¤¤¾ì¹ç¤Ç¡¢¥Õ¥¡¥¤¥¢¡¼¥¦¥©¡¼¥ë¤ÎÇØ¸å¤ÇMoodle¤òư¤«¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢É¬¿Ü¤Îµ¡Ç½¤Þ¤¿¤Ï +ÍÍ¡¹¤ÊÊýË¡¤ò»î¤·¤Æ¤ß¤Æ¤âÌäÂ꤬²ò·è¤·¤Ê¤¤¾ì¹ç¤Ç¡¢¥Õ¥¡¥¤¥¢¡¼¥¦¥©¡¼¥ë¤ÎÇØ¸å¤ÇMoodle¤òư¤«¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢É¬¿Ü¤Îµ¡Ç½Ëô¤Ï ɬÍפʥ³¥ß¥å¥Ë¥±¡¼¥·¥ç¥ó¤ò¥Ö¥í¥Ã¥¯¤·¤Ê¤¤¤è¤¦¤Ë¡¢¥Õ¥¡¥¤¥¢¡¼¥¦¥©¡¼¥ë¤òºÆÀßÄꤵ¤ì¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£ -¥Õ¥¡¥¤¥¢¡¼¥¦¥©¡¼¥ë¤¬Moodle¤Ë±Æ¶Á¤òµÚ¤Ü¤¹¤³¤È¤Ï¤Û¤È¤ó¤É¤¢¤ê¤Þ¤»¤ó¤¬¡¢¥Õ¥¡¥¤¥¢¡¼¥¦¥©¡¼¥ë¤ÎÀßÄê¥ß¥¹¤Ë¤è¤ê +¥Õ¥¡¥¤¥¢¡¼¥¦¥©¡¼¥ë¤¬Moodle¤Ë±Æ¶Á¤òµÚ¤Ü¤¹¤³¤È¤ÏËØ¤É¤¢¤ê¤Þ¤»¤ó¤¬¡¢¥Õ¥¡¥¤¥¢¡¼¥¦¥©¡¼¥ë¤ÎÀßÄê¥ß¥¹¤Ë¤è¤ê Moodle¤Îµ¡Ç½¤Ë±Æ¶Á¤òµÚ¤Ü¤¹¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£

                ³ºÅö¤¹¤ëÅú¤¨¤ò±ÜÍ÷¤¹¤ë»þ¤Ï²¼µ­¤Î¥ê¥ó¥¯¤ò¤ª»È¤¤¤¯¤À¤µ¤¤:

                - + @@ -40,19 +40,19 @@ Moodle - + - + - + @@ -63,24 +63,24 @@ Moodle -

                ¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤Ø¥¢¥¯¥»¥¹¤Þ¤¿¤Ï±ÜÍ÷¤¹¤ë»þ¤Ë¡¢¤¤¤Ä¤â¡ÖFile not Found¡×¤È¤¤¤¦¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

                +

                ¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤Ø¥¢¥¯¥»¥¹Ëô¤Ï±ÜÍ÷¤¹¤ë»þ¤Ë¡¢¤¤¤Ä¤â¡ÖFile not Found¡×¤È¤¤¤¦¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

                Î㤨¤Ð: Not Found: The requested URL /moodle/file.php/2/myfile.jpg was not found on this server. ¤Èɽ¼¨¤µ¤ì¤ë¾ì¹ç¡£

                ¥¹¥¯¥ê¥×¥È°Ê²¼¤ÎURL¤¬¡¢Ä¾ÀÜ¥¹¥¯¥ê¥×¥È¤ØÅϤµ¤ì¤ë¤è¤¦¤Ë¥¦¥§¥Ö¥µ¡¼¥Ð¤òÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ Apache 1¤Ç¤ÏÄ̾盧¤ÎÀßÄ꤬¤Ê¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢Apache 2¤Ç¤ÏÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ -¤³¤ÎÀßÄê¤ò¹Ô¤¦¤Ë¤Ï¡¢httpd.conf¤Þ¤¿¥í¡¼¥«¥ë¥Ç¥£¥ì¥¯¥È¥ê¤Î.htaccess¥Õ¥¡¥¤¥ë¤Ë²¼µ­¤Î¹Ô¤òÄɲ䷤Ƥ¯¤À¤µ¤¤ +¤³¤ÎÀßÄê¤ò¹Ô¤¦¤Ë¤Ï¡¢httpd.confËô¥í¡¼¥«¥ë¥Ç¥£¥ì¥¯¥È¥ê¤Î.htaccess¥Õ¥¡¥¤¥ë¤Ë²¼µ­¤Î¹Ô¤òÄɲ䷤Ƥ¯¤À¤µ¤¤ (¾ÜºÙ¤Ï¥¤¥ó¥¹¥È¡¼¥ë¥Þ¥Ë¥å¥¢¥ë¤ò¤´Í÷¤¯¤À¤µ¤¤):

                AcceptPathInfo on

                Ãí°Õ: ¤³¤ÎÀßÄê¤ÏApache versions 2.x¤Î¤ß¤ËÍ­¸ú¤Ç¤¹¡£

                -

                Apache 2¤ò»ÈÍѤ»¤º¤Ë¡¢¤³¤ÎÌäÂ꤬ȯÀ¸¤¹¤ë¾ì¹ç¤ÏÊ̤ÎÊýË¡¤ò»ÈÍѤ¹¤ë¤¿¤á¤ËMoodle¤òÀßÄêÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¤³¤ÎÊýË¡¤ò»ÈÍѤ¹¤ë¾å¤Ç¤Î¥Ç¥á¥ê¥Ã¥È¤Ï¡¢¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬¼ã´³Íî¤Á¤ë¤³¤È¤ª¤è¤ÓHTML¥ê¥½¡¼¥¹¤Ë¤ª¤¤¤ÆÁêÂÐ¥ê¥ó¥¯¤ò»ÈÍѤǤ­¤Ê¤¤¤³¤È¤Ç¤¹¡£

                +

                Apache 2¤ò»ÈÍѤ»¤º¤Ë¡¢¤³¤ÎÌäÂ꤬ȯÀ¸¤¹¤ë¾ì¹ç¤ÏÊ̤ÎÊýË¡¤ò»ÈÍѤ¹¤ë°Ù¤ËMoodle¤òÀßÄêÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +¤³¤ÎÊýË¡¤ò»ÈÍѤ¹¤ë¾å¤Ç¤Î¥Ç¥á¥ê¥Ã¥È¤Ï¡¢¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬¼ã´³Íî¤Á¤ë¤³¤ÈµÚ¤ÓHTML¥ê¥½¡¼¥¹¤Ë¤ª¤¤¤ÆÁêÂÐ¥ê¥ó¥¯¤ò»ÈÍѤǤ­¤Ê¤¤¤³¤È¤Ç¤¹¡£

                ¤³¤ÎÂåÂØÅª¤ÊÊýË¡¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï: ´ÉÍý¼Ô¤Ç¥í¥°¥¤¥ó¤·¤Æ¡¢¡Ö¾ÜºÙÀßÄê¡×¥Ú¡¼¥¸¤Ç¡Öslasharguments¡×¤ò -Êѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤Ç¡¢¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤Ø¥¢¥¯¥»¥¹¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

                +Êѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤Ç¡¢¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤Ø¥¢¥¯¥»¥¹½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

                 

                @@ -110,10 +110,10 @@ Apache 1

                ²¼µ­¤Î¤è¤¦¤Ê¥¨¥é¡¼¤¬É½¼¨¤µ¤ì¤ë¾ì¹ç¤Ï:

                -

                Parse error: parse error, unexpected T_VARIABLE in c:\program files\easyphp\www\moodle\config.php on line 94
                +

                Parse error: parse error, unexpected T_VARIABLE in c:\program files\easyphp\www\moodle\config.php on line 94
                Fatal error: Call to undefined function: get_string() in c:\program files\easyphp\www\moodle\mod\resource\lib.php on line 11

                -

                config.php(94¹ÔÌܤè¤êÁ°)¤Ç¡¢¥»¥ß¥³¥í¥ó¤Þ¤¿¤ÏÊĤ¸¥¯¥ª¡¼¥È¤¬È´¤±¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£

                +

                config.php(94¹ÔÌܤè¤êÁ°)¤Ç¡¢¥»¥ß¥³¥í¥óËô¤ÏÊĤ¸¥¯¥ª¡¼¥È¤¬È´¤±¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£

                ¤½¤Î¾¤Î¸¶°ø¤È¤·¤Æ¡¢config.php¤òWord¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤Ç³«¤¤¤ÆÊÔ½¸¤·¤¿¸å¤Ë¡¢¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤È¤·¤ÆÊݸ¤»¤º¤Ë¡¢ HTML¥Ú¡¼¥¸¤È¤·¤ÆÊݸ¤·¤Æ¤¤¤ë²ÄǽÀ­¤¬¹Í¤¨¤é¤ì¤Þ¤¹¡£

                @@ -130,8 +130,8 @@ HTML

                Warning: Cannot add header information - headers already sent by (output started at /webs/moodle/config.php:87) in /webs/moodle/login/index.php on line 54

                -

                config.php¤ÎºÇ¸å¤Î?>¤Î¸å¤Ë¶õÇò¹Ô¤Þ¤¿¤Ï¥¹¥Ú¡¼¥¹¤¬¤¢¤ê¤Þ¤¹¡£¤¤¤¯¤Ä¤«¤Î¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿(Î㤨¤ÐWindows¤Î¥ï¡¼¥É¥Ñ¥Ã¥É)¤Ï¡¢¶õÇò¹Ô¤ä¥¹¥Ú¡¼¥¹¤òÄɲ乤뤳¤È¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢ -¶õÇò¹Ô¤ä¥¹¥Ú¡¼¥¹¤ò´°Á´¤Ë¼è¤êµî¤ë¤¿¤á¤Ë¾¤Î¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¤ò¤ª»È¤¤¤¯¤À¤µ¤¤¡£

                +

                config.php¤ÎºÇ¸å¤Î?>¤Î¸å¤Ë¶õÇò¹ÔËô¤Ï¥¹¥Ú¡¼¥¹¤¬¤¢¤ê¤Þ¤¹¡£¤¤¤¯¤Ä¤«¤Î¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿(Î㤨¤ÐWindows¤Î¥ï¡¼¥É¥Ñ¥Ã¥É)¤Ï¡¢¶õÇò¹Ô¤ä¥¹¥Ú¡¼¥¹¤òÄɲ乤뤳¤È¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢ +¶õÇò¹Ô¤ä¥¹¥Ú¡¼¥¹¤ò´°Á´¤Ë¼è¤êµî¤ë°Ù¤Ë¾¤Î¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¤ò¤ª»È¤¤¤¯¤À¤µ¤¤¡£

                 

                @@ -143,11 +143,11 @@ HTML

                 

                -

                ¥¢¥Ý¥¹¥È¥í¥Õ¥£¡¼(')¤Þ¤¿¤Ï¥¯¥ª¡¼¥È(")¤òÄɲä·¤¿¥Æ¥­¥¹¥È¤Ï¡¢¥¨¥é¡¼¤òÀ¸¤¸¤ë¤«¥¹¥é¥Ã¥·¥å¤¬Äɲ䵤ì¤Þ¤¹¡£

                +

                ¥¢¥Ý¥¹¥È¥í¥Õ¥£¡¼(')Ëô¤Ï¥¯¥ª¡¼¥È(")¤òÄɲä·¤¿¥Æ¥­¥¹¥È¤Ï¡¢¥¨¥é¡¼¤òÀ¸¤¸¤ë¤«¥¹¥é¥Ã¥·¥å¤¬Äɲ䵤ì¤Þ¤¹¡£

                ¥¢¥Ý¥¹¥È¥í¥Õ¥£¡¼¤Ë¤è¤Ã¤ÆÀ¸¤¸¤ëÌäÂê¤Ï¡¢¡Ömagic quotes¡×¤ÎÀßÄê¥ß¥¹¤¬¸¶°ø¤·¤Æ¤¤¤Þ¤¹¡£ Moodle¤Ç¤Ï¼¡¤ÎÀßÄê¤òɬÍפȤ·¤Þ¤¹(Ä̾ï¥Ç¥Õ¥©¥ë¥È¤Ç¤¹):

                -

                magic_quotes_gpc = On
                +

                magic_quotes_gpc = On
                magic_quotes_runtime = Off

                @@ -166,10 +166,10 @@ HTML

                Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at G:\web\moodle\lib\setup.php:1) in G:\web\moodle\lib\setup.php on line 123

                -

                ... ¤³¤ì¤é¤Î¥¨¥é¡¼¤ÏPHP¤¬¡Ö¥»¥Ã¥·¥ç¥ó¡×¤ò¥Ï¡¼¥É¥Ç¥£¥¹¥¯(tmp¥Ç¥£¥ì¥¯¥È¥ê)¤ËÊݸ¤Ç¤­¤Ê¤¤¤³¤È¤Ë´Ø·¸¤·¤Æ¤¤¤Þ¤¹¡£ +

                ... ¤³¤ì¤é¤Î¥¨¥é¡¼¤ÏPHP¤¬¡Ö¥»¥Ã¥·¥ç¥ó¡×¤ò¥Ï¡¼¥É¥Ç¥£¥¹¥¯(tmp¥Ç¥£¥ì¥¯¥È¥ê)¤ËÊݸ½ÐÍè¤Ê¤¤¤³¤È¤Ë´Ø·¸¤·¤Æ¤¤¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢/tmp¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Ê¤¤¤³¤È¤¬¸¶°ø¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£Ä̾Windows¤ËMoodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¾ì¹ç¤ËÀ¸¤¸¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£

                -

                ²ò·èÊýË¡¤Ï¡¢¼Âºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ø¤·¼¨¤¹¤è¤¦¤ËPHP¤ÎÀßÄê¤òÊѤ¨¤ë¤³¤È¤Ç¤¹¡£php.ini¥Õ¥¡¥¤¥ë¤òÊѹ¹¤¹¤ë¤³¤È¤ÇÀßÄê¤òÊѹ¹¤Ç¤­¤Þ¤¹:

                +

                ²ò·èÊýË¡¤Ï¡¢¼Âºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ø¤·¼¨¤¹¤è¤¦¤ËPHP¤ÎÀßÄê¤òÊѤ¨¤ë¤³¤È¤Ç¤¹¡£php.ini¥Õ¥¡¥¤¥ë¤òÊѹ¹¤¹¤ë¤³¤È¤ÇÀßÄê¤òÊѹ¹½ÐÍè¤Þ¤¹:

                session.save_path = C:\temp

                @@ -183,7 +183,7 @@ HTML

                Moodle 1.0.9¤Ç²¼µ­¤Î¤è¤¦¤Ê¥¨¥é¡¼¤¬É½¼¨¤µ¤ì¤ë¾ì¹ç¤Ï:

                - +
                @@ -209,7 +209,7 @@ HTML

                 

                -

                ¥í¥°¥¤¥ó¤·¤Æ¤â¥í¥°¥¤¥ó¥ê¥ó¥¯¤¬ÊѤï¤ê¤Þ¤»¤ó¡£¥í¥°¥¤¥ó¤·¤Æ¼«Í³¤Ë¥µ¥¤¥È¤ò±ÜÍ÷¤Ç¤­¤Þ¤¹¡£

                +

                ¥í¥°¥¤¥ó¤·¤Æ¤â¥í¥°¥¤¥ó¥ê¥ó¥¯¤¬ÊѤï¤ê¤Þ¤»¤ó¡£¥í¥°¥¤¥ó¤·¤Æ¼«Í³¤Ë¥µ¥¤¥È¤ò±ÜÍ÷½ÐÍè¤Þ¤¹¡£

                $CFG->wwwroot¤ÎURLÀßÄ꤬¡¢¥µ¥¤¥È¤Ë¥¢¥¯¥»¥¹¤¹¤ëURL¤ÈƱ¤¸¤Ç¤¢¤ë¤«¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£

                @@ -224,7 +224,7 @@ HTML

                ½é´üÀßÄê¥×¥í¥»¥¹¤Ë¤ª¤¤¤Æ¡¢´ÉÍý¼Ô¥¢¥«¥¦¥ó¥È¤ÎºîÀ®¤òʹ¤«¤ì¤Þ¤»¤ó!

                -

                ¤³¤ì¤Ï¡¢Moodle¥Ð¡¼¥¸¥ç¥ó1.0.9¤Þ¤Ç¤Î´ûÃΤΥХ°¤Ç¤¹¡£¸½ºß¤Ï¡¢¥á¥¤¥ó¥³¡¼¥É¤ª¤è¤Ó¥Ð¡¼¥¸¥ç¥ó1.1¤Ë¤ª¤¤¤Æ½¤Àµ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

                +

                ¤³¤ì¤Ï¡¢Moodle¥Ð¡¼¥¸¥ç¥ó1.0.9¤Þ¤Ç¤Î´ûÃΤΥХ°¤Ç¤¹¡£¸½ºß¤Ï¡¢¥á¥¤¥ó¥³¡¼¥ÉµÚ¤Ó¥Ð¡¼¥¸¥ç¥ó1.1¤Ë¤ª¤¤¤Æ½¤Àµ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

                ¤³¤ì¤ÏÁ´¤Æ¤Î¿Í¤Ë±Æ¶Á¤¹¤ëÌõ¤Ç¤Ï¤Ê¤¯¡¢Moodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëºÝ¤Ë¾¤Î¥×¥í¥°¥é¥à¤Ë¤è¤Ã¤Æ½ñ¤­½Ð¤µ¤ì¤¿¡Öuser¡×¡Öadmin¡×¡Öteacher¡× ¤È¤¤¤¦Ì¾¾Î¤Î¥¯¥Ã¥­¡¼¤¬¥Ö¥é¥¦¥¶Æâ¤Ë¤¢¤ë¾ì¹ç¤ËÀ¸¤¸¤Þ¤¹¡£

                @@ -237,21 +237,21 @@ HTML

                 

                -

                Á´¤¯¥í¥°¥¤¥ó¤Ç¤­¤Þ¤»¤ó - ¥í¥°¥¤¥ó²èÌ̤è¤êÀè¤Ë¿Ê¤ß¤Þ¤»¤ó¡£

                +

                Á´¤¯¥í¥°¥¤¥ó½ÐÍè¤Þ¤»¤ó - ¥í¥°¥¤¥ó²èÌ̤è¤êÀè¤Ë¿Ê¤ß¤Þ¤»¤ó¡£

                ¿¤¯¤Ï¡¢¤¢¤Ê¤¿¤Î¥³¥ó¥Ô¥å¡¼¥¿(Moodle¥µ¡¼¥Ð¤Ç¤Ï̵¤¯)¤¬¥ê¥Õ¥¡¥é¾ðÊó¤ò¼è¤ê½ü¤¯¥Õ¥¡¥¤¥¢¡¼¥¦¥©¡¼¥ë¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ëµ¯¤³¤ê¤Þ¤¹¡£ Norton firewallÀ½ÉʤòMoodle¤¬Æ°ºî¤¹¤ë¤è¤¦¤ËÀßÄêÊѹ¹¤¹¤ë¾ì¹ç¤ÎÀâÌÀ¤Ï¤³¤Á¤é¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                -

                ¥µ¡¼¥Ð¤Î´ÉÍý¼Ô¤Ï¡¢´ÉÍý²èÌ̤ξܺÙÀßÄê¤Ë¤¢¤ë¡Ösecureforms¡×¤ò¡ÖNo¡×¤Ë¤¹¤ë¤³¤È¤Ç¡¢Á´¤Æ¤Î¥æ¡¼¥¶¤Î¤¿¤á¤Ë¤³¤ÎÌäÂê¤ò²ò¾Ã¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                +

                ¥µ¡¼¥Ð¤Î´ÉÍý¼Ô¤Ï¡¢´ÉÍý²èÌ̤ξܺÙÀßÄê¤Ë¤¢¤ë¡Ösecureforms¡×¤ò¡ÖNo¡×¤Ë¤¹¤ë¤³¤È¤Ç¡¢Á´¤Æ¤Î¥æ¡¼¥¶¤Î°Ù¤Ë¤³¤ÎÌäÂê¤ò²ò¾Ã¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                -

                Ê̤βÄǽÀ­¤È¤·¤Æ¡¢¥µ¡¼¥Ð¤Ë¤ª¤¤¤Æ¥»¥Ã¥·¥ç¥ó¤Ë´Ø¤¹¤ëÀßÄ꤬Àµ¤·¤¯¹Ô¤ï¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤¬µó¤²¤é¤ì¤Þ¤¹¡£http://yourserver/moodle/lib/session-test.php ¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ç¡¢¥»¥Ã¥·¥ç¥ó¤ÎÀßÄê¤ò¥Æ¥¹¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                +

                Ê̤βÄǽÀ­¤È¤·¤Æ¡¢¥µ¡¼¥Ð¤Ë¤ª¤¤¤Æ¥»¥Ã¥·¥ç¥ó¤Ë´Ø¤¹¤ëÀßÄ꤬Àµ¤·¤¯¹Ô¤ï¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤¬µó¤²¤é¤ì¤Þ¤¹¡£http://yourserver/moodle/lib/session-test.php ¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ç¡¢¥»¥Ã¥·¥ç¥ó¤ÎÀßÄê¤ò¥Æ¥¹¥È¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                 

                Moodle¥µ¥¤¥ÈÁ´ÂΤΥХ寥¢¥Ã¥×ÊýË¡¤Ï?

                ¥Ð¥Ã¥¯¥¢¥Ã¥×ÂоݤˤÏ2¤Ä¼çÍפʤΤâ¤Î¤¬¤¢¤ê¤Þ¤¹:¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤È¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤Ç¤¹¡£ -ɬÍפǤ¢¤ì¤Ð¡¢¤¤¤Ä¤Ç¤âºÇ¿·¤Î¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤Ç¤­¤Þ¤¹¤Î¤ÇMoodle¤Î¥¹¥¯¥ê¥×¥È¼«ÂΤϽÅÍפǤϤ¢¤ê¤Þ¤»¤ó¡£

                +ɬÍפǤ¢¤ì¤Ð¡¢¤¤¤Ä¤Ç¤âºÇ¿·¤Î¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É½ÐÍè¤Þ¤¹¤Î¤ÇMoodle¤Î¥¹¥¯¥ê¥×¥È¼«ÂΤϽÅÍפǤϤ¢¤ê¤Þ¤»¤ó¡£

                ¥Ð¥Ã¥¯¥¢¥Ã¥×¤Ë¤Ï¿ô¿¤¯¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£Unix¤Ç¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¥Ð¥Ã¥¯¥¢¥Ã¥×¤¹¤ë¾®¤µ¤Ê¥¹¥¯¥ê¥×¥ÈÎã¤òµ­¤·¤Þ¤¹¡£ ¤³¤ì¤Ïcron¤ò»ÈÍѤ·¤¿ËèÆü¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤Ë¸þ¤¤¤Æ¤¤¤Þ¤¹¡£

                @@ -264,7 +264,7 @@ Norton firewall

                gzip moodle-database.sql

                -

                ¥Õ¥¡¥¤¥ë¤Ë´Ø¤·¤Æ¤Ï¡¢¹¹¿·¤·¤¿¥Õ¥¡¥¤¥ë¤Î¤ß¤òÊ̤Υۥ¹¥È¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤¹¤ë¤³¤È¤¬¤Ç¤­¤ërsync¥³¥Þ¥ó¥É¤òÄê´üŪ¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹:

                +

                ¥Õ¥¡¥¤¥ë¤Ë´Ø¤·¤Æ¤Ï¡¢¹¹¿·¤·¤¿¥Õ¥¡¥¤¥ë¤Î¤ß¤òÊ̤Υۥ¹¥È¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤¹¤ë¤³¤È¤¬½ÐÍè¤ërsync¥³¥Þ¥ó¥É¤òÄê´üŪ¤Ë»È¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹:

                rsync -auvtz --delete -e ssh mysshusername@example.com:/my/server/directory @@ -275,15 +275,15 @@ Norton firewall

                ¤Ê¤¼¡¢Moodle¥µ¥¤¥È¤¬Àµ³Î¤Ë»þ´Ö¤ÈÆüÉÕ¤òɽ¼¨¤·¤Ê¤¤¤Î¤Ç¤¹¤«?

                -

                ³Æ¸À¸ì¤Ï¡¢ÆüÉÕ¤òÀµ³Î¤Ëɽ¼¨¤¹¤ë¤¿¤á¤Ë¡¢ÆÃÄê¤Î¸À¸ì¥³¡¼¥É(¥í¥±¡¼¥ë¥³¡¼¥É¤È¸Æ¤Ð¤ì¤Þ¤¹)¤òɬÍפȤ·¤Þ¤¹¡£ +

                ³Æ¸À¸ì¤Ï¡¢ÆüÉÕ¤òÀµ³Î¤Ëɽ¼¨¤¹¤ë°Ù¤Ë¡¢ÆÃÄê¤Î¸À¸ì¥³¡¼¥É(¥í¥±¡¼¥ë¥³¡¼¥É¤È¸Æ¤Ð¤ì¤Þ¤¹)¤òɬÍפȤ·¤Þ¤¹¡£ ¸À¸ì¥Ñ¥Ã¥¯¤Ï¡¢É¸½àŪ¤Ê¥í¥±¡¼¥ë¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¤¬¡¢Windows¥µ¡¼¥Ð¤Ç¤ÏÀµ¾ï¤Ëưºî¤·¤Ê¤¤¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£

                -

                ¼¡¤Î2¤Ä¤Î¥Ú¡¼¥¸¤ÇWindowsÍѤÎÀµ¤·¤¤¥í¥±¡¼¥ë¤Ë´Ø¤¹¤ë¾ðÊó¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹: +

                ¼¡¤Î2¤Ä¤Î¥Ú¡¼¥¸¤ÇWindowsÍѤÎÀµ¤·¤¤¥í¥±¡¼¥ë¤Ë´Ø¤¹¤ë¾ðÊó¤òÆÀ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹: ¸À¸ì¥³¡¼¥É -¤ª¤è¤Ó ¹ñ/Ãϰ襳¡¼¥É¡£ +µÚ¤Ó ¹ñ/Ãϰ襳¡¼¥É¡£ (Îã ¥¹¥Ú¥¤¥ó¸ì¤Ï¡Öesp_esp¡×)

                -

                ¿·¤·¤¤¥í¥±¡¼¥ë¥³¡¼¥É¤Ï¡¢´ÉÍý -> ÀßÄê -> ¾ÜºÙÀßÄê¤Ë¤ÆÅÐÏ¿¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥í¥±¡¼¥ë¥³¡¼¥É¤Ï¡¢¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¸À¸ì¤Î¥í¥±¡¼¥ë¥³¡¼¥É¤ËÍ¥À褷¤Þ¤¹¡£

                +

                ¿·¤·¤¤¥í¥±¡¼¥ë¥³¡¼¥É¤Ï¡¢´ÉÍý -> ÀßÄê -> ¾ÜºÙÀßÄê¤Ë¤ÆÅÐÏ¿¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤Î¥í¥±¡¼¥ë¥³¡¼¥É¤Ï¡¢¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¸À¸ì¤Î¥í¥±¡¼¥ë¥³¡¼¥É¤ËÍ¥À褷¤Þ¤¹¡£

                 

                @@ -296,24 +296,24 @@ Norton firewall ¥¤¥ó¥¹¥È¡¼¥ë¥Þ¥Ë¥å¥¢¥ë¤Îcron¤ÎÀßÄꥻ¥¯¥·¥ç¥ó¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                ¥Ò¥ó¥È: Moodle¤Î¾ÜºÙÀßÄê¥Ú¡¼¥¸¤Ç¡¢¥Ç¥Õ¥©¥ë¥ÈÀßÄê¤Î»ÈÍѤò»î¤·¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢smtphost¤ò¶õÇò¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ -¤³¤ÎÀßÄê¤Ï¤Û¤È¤ó¤É¤Î¥æ¡¼¥¶¤Î¾ò·ï¤òËþ¤¿¤·¤Æ¤¤¤Þ¤¹¡£

                +¤³¤ÎÀßÄê¤ÏËØ¤É¤Î¥æ¡¼¥¶¤Î¾ò·ï¤òËþ¤¿¤·¤Æ¤¤¤Þ¤¹¡£

                 

                 

                -
                +

                ¿·¤·¤¤FAQ¤ÎÄó°Æ (Åú¤¨¤â¤ª´ê¤¤¤·¤Þ¤¹!)

                -
                +

                ¤³¤ÎFAQ¤ÎÀ°È÷¤Ë¤´¶¨ÎÏ夤¤¿John Eyre»á¤Ë´¶¼Õ¤·¤Þ¤¹¡£

                -

                Moodleʸ½ñ

                +

                Moodleʸ½ñ

                -

                Version: $Id: faq.html,v 1.6 2003/03/30 13:54:28 +

                Version: $Id: faq.html,v 1.6 2003/03/30 13:54:28 moodler Exp $

                - + \ No newline at end of file diff --git a/lang/ja/docs/features.html b/lang/ja/docs/features.html index a2affdd0e23..683d9e9efb9 100644 --- a/lang/ja/docs/features.html +++ b/lang/ja/docs/features.html @@ -1,310 +1,218 @@ - - - - Moodle Docs: ÆÃħ - - - - - - - -

                ÆÃħ

                -
                -

                Moodle¤Ï³èȯ¤Ë¿Ê²½¤·Â³¤±¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤¹¡£¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï¡¢Moodle¤Î¿ô¿¤¯¤ÎÆÃħ¤ÎÃæ¤«¤é´ö¤Ä¤«¤ò¼è¤ê¾å¤²¤Þ¤¹:

                -

                Á´ÂÎŪ¤Ê¥Ç¥¶¥¤¥ó

                -
                  - -
                • ¼Ò²ñŪ¹½ÃÛ¼çµÁ¶µ¼øË¡(¶¨Ä´¡¢³èư¡¢ÈãȽŪ¾Ê»¡Åù)¤òÂ¥¿Ê¤·¤Þ¤¹¡£
                • - -
                • ÂÐÌ̶µ°é¤ÎÊä½õ¤ª¤è¤Ó100%¤Î¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤ËŬ¤·¤Æ¤¤¤Þ¤¹¡£
                • - -
                • ¥·¥ó¥×¥ë¡¢·Ú¤¤¡¢Ç½Î¨Åª¡¢¸ß´¹À­¤¬¤¢¤ë¡¢¥Ð¡¼¥¸¥ç¥ó¤ÎÄ㤤¥Ö¥é¥¦¥¶¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£
                • - -
                • PHP¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤Û¤È¤ó¤É¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ø´Êñ¤Ë¥¤¥ó¥¹¥È¡¼¥ë²Äǽ¡£1¤Ä¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤òɬÍ×(¶¦Í­²Ä)¤È¤·¤Þ¤¹¡£
                • - -
                • Á´¤Æ¤Î¥á¥¸¥ã¡¼¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÃê½Ð¤ò¥Õ¥ë¥µ¥Ý¡¼¥È(½é´ü¥Æ¡¼¥Ö¥ëºîÀ®¤ò½ü¤¯)¤·¤Æ¤¤¤Þ¤¹¡£
                • - -
                • ¥³¡¼¥¹°ìÍ÷¤Ç¤Ï¡¢¥²¥¹¥È¥¢¥¯¥»¥¹¤Î²ÄÈݤâ´Þ¤á¤Æ¡¢¥µ¡¼¥Ð¾å¤ÎÁ´¥³¡¼¥¹¤ÎÀâÌÀ¤òɽ¼¨¤·¤Þ¤¹¡£
                • - -
                • ¥³¡¼¥¹¤ò¥«¥Æ¥´¥êʬ¤±¡¢¸¡º÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£1¤Ä¤ÎMoodle¥µ¥¤¥È¤Ï¿ôÀé¤Î¥³¡¼¥¹¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£
                • - -
                • Moodle¤Ç¤Ï¡¢¥µ¥¤¥ÈÁ´ÂΤˤ錄¤ë¶¯¸Ç¤Ê¥»¥­¥å¥ê¥Æ¥£¤ò½ÅÍ׻뤷¤Æ¤¤¤Þ¤¹¡£¥Õ¥©¡¼¥à¤Ë´Ø¤·¤Æ¡¢Á´¤Æ¤Î¥Á¥§¥Ã¥¯¡¢¥Ç¡¼¥¿¤ÎÀµÅöÀ­³Îǧ¡¢¥¯¥Ã¥­¡¼¤Î°Å¹æ²½½èÍýÅù¤¬¹Ô¤ï¤ì¤Þ¤¹¡£
                • - -
                • ¤Û¤È¤ó¤É¤Î¥Æ¥­¥¹¥È¥¨¥ê¥¢ (¥ê¥½¡¼¥¹¡¢¥Õ¥©¡¼¥é¥àÅê¹ÆÍ󡢯ü»ï¥¨¥ó¥È¥êÅù)¤Ï¡¢¼ÂÁõºÑ¤ß¤ÎWYSIWYG HTML¥¨¥Ç¥£¥¿¤ÇÊÔ½¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - +
                • Promotes a social constructionist pedagogy (collaboration, activities, critical + reflection, etc)
                • +
                • Suitable for 100% online classes as well as supplementing face-to-face learning +
                • +
                • Simple, lightweight, efficient, compatible, low-tech browser interface
                • +
                • Easy to install on almost any platform that supports PHP. Requires only + one database (and can share it).
                • +
                • Full database abstraction supports all major brands of database (except + for initial table definition)
                • +
                • Course listing shows descriptions for every course on the server, including + accessibility to guests.
                • +
                • Courses can be categorised and searched - one Moodle site can support thousands + of courses
                • +
                • Emphasis on strong security throughout. Forms are all checked, data validated, + cookies encrypted etc
                • +
                • Most text entry areas (resources, forum postings, journal entries etc) can + be edited using an embedded WYSIWYG HTML editor
                -

                ¥µ¥¤¥È´ÉÍý

                -
                  - -
                • ¥µ¥¤¥È¤Ï¡¢¥»¥Ã¥È¥¢¥Ã¥×»þ¤ËÀßÄꤷ¤¿´ÉÍý¼Ô¤Ë¤è¤Ã¤Æ´ÉÍý¤µ¤ì¤Þ¤¹¡£
                • - -
                • ¡Ö¥Æ¡¼¥Þ¡×¥×¥é¥°¥¤¥ó¤Ë¤è¤ê¡¢´ÉÍý¼Ô¤ÏɬÍפ˱þ¤¸¤Æ¥µ¥¤¥È¤Î¿§¡¢¥Õ¥©¥ó¥È¡¢¥ì¥¤¥¢¥¦¥ÈÅù¤ò¥«¥¹¥¿¥Þ¥¤¥º¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ³èư¥â¥¸¥å¡¼¥ë¥×¥é¥°¥¤¥ó¤Ï¡¢¥¤¥ó¥¹¥È¡¼¥ëºÑ¤ß¤ÎMoodle¤ËÄɲ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¸À¸ì¥Ñ¥Ã¥¯¥×¥é¥°¥¤¥ó¤Ë¤è¤ê¡¢¿ô¿¤¯¤Î¸À¸ì¤ËÂбþ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤é¤ÏMoodle¤ËÁȤ߹þ¤Þ¤ì¤¿¥¦¥§¥Ö¥Ù¡¼¥¹¤Î¥¨¥Ç¥£¥¿¤ÇÊÔ½¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¸½ºß¡¢43°Ê¾å¤Î¸À¸ì¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤¹¡£
                • - -
                • ¥³¡¼¥É¤Ï¡¢GPL¥é¥¤¥»¥ó¥¹¤Î²¼¤Çʬ¤«¤ê¤ä¤¹¤¯µ­½Ò¤µ¤ì¡¢É¬Íפ˱þ¤¸¤Æ´Êñ¤Ë½¤Àµ¤ò²Ã¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - +
                • Site is managed by an admin user, defined during setup
                • +
                • Plug-in "themes" allow the admin to customise the site colours, fonts, layout + etc to suit local needs
                • +
                • Plug-in activity modules can be added to existing Moodle installations
                • +
                • Plug-in language packs allow full localisation to any language. These can + be edited using a built-in web-based editor. Currently there are language + packs for over 43 + languages.
                • +
                • The code is clearly-written PHP under a GPL license - easy to modify to + suit your needs
                -

                ¥æ¡¼¥¶´ÉÍý

                -
                  - -
                • ¥æ¡¼¥¶´ÉÍý¤Î¥´¡¼¥ë¤Ï¡¢¹âÅ٤ʥ»¥­¥å¥ê¥Æ¥£¤òÊݤ俤ޤޡ¢´ÉÍý¼Ô¤ÎÉéô¤ò¸º¤é¤¹¤³¤È¤Ç¤¹¡£
                • - -
                • ´û¸¤Î¥·¥¹¥Æ¥à¤Ë´Êñ¤ËÅý¹ç¤¹¤ë¤³¤È¤¬²Äǽ¤Êǧ¾Ú¥â¥¸¥å¡¼¥ë¥×¥é¥°¥¤¥ó¤Ë¤è¤ê¡¢ÍÍ¡¹¤Êǧ¾Ú¼êÃʤò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£
                • - -
                • ɸ½àŪ¤Ê¥á¡¼¥ë¤Ë¤è¤ëǧ¾Ú: ³ØÀ¸¤Ï¼«Ê¬¤Î¥¢¥«¥¦¥ó¥È¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥¢¥«¥¦¥ó¥È³ÎÄê»þ¤Ë¡¢¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬³Îǧ¤µ¤ì¤Þ¤¹¡£
                • - -
                • LDAP¤ò»ÈÍѤ·¤¿Ç§¾Ú: LDAP¥µ¡¼¥Ð¤ËÂФ·¤Æ¥¢¥«¥¦¥ó¥È¤Î¥í¥°¥¤¥ó¤ò¾È²ñ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£´ÉÍý¼Ô¤Ï¡¢¤É¤Î¥Õ¥£¡¼¥ë¥É¤ò»ÈÍѤ¹¤ë¤«»ØÄê¤Ç¤­¤Þ¤¹¡£
                • - -
                • IMAP¡¢POP3¡¢NNTP¤ò»ÈÍѤ·¤¿Ç§¾Ú: ¥á¡¼¥ë¥µ¡¼¥Ð¤Þ¤¿¤Ï¥Ë¥å¡¼¥¹¥µ¡¼¥Ð¤ËÂФ·¤Æ¥¢¥«¥¦¥ó¥È¤Î¥í¥°¥¤¥ó¤¬¾È²ñ¤µ¤ì¤Þ¤¹¡£SSLǧ¾Ú¤ª¤è¤ÓTLSǧ¾Ú¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¡£
                • - -
                • ³°Éô¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»ÈÍѤ·¤¿Ç§¾Ú: ¾¯¤Ê¤¯¤È¤â2¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤ò»ý¤Ä¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò³°Éôǧ¾ÚÍѤΥǡ¼¥¿¥Ù¡¼¥¹¤È¤·¤Æ»ÈÍѤǤ­¤Þ¤¹¡£
                • - -
                • ³Æ¥æ¡¼¥¶¤Ï¡¢¥µ¡¼¥ÐÁ´ÂΤÇ1¤Ä¤Î¥¢¥«¥¦¥ó¥È¤Î¤ßɬÍפǤ¹¡£³Æ¥¢¥«¥¦¥ó¥È¤Ï°Û¤Ê¤ë¥¢¥¯¥»¥¹¸¢¸Â¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ´ÉÍý¼Ô¤Î¥¢¥«¥¦¥ó¥È¤Ï¡¢¥³¡¼¥¹ºîÀ®¤ò¥³¥ó¥È¥í¡¼¥ë¤·¡¢¥æ¡¼¥¶¤ò¥³¡¼¥¹¤Ë³ä¤êÅö¤Æ¤ë¤³¤È¤Ç¶µ»Õ¤òºîÀ®¤·¤Þ¤¹¡£
                • - -
                • ¥³¡¼¥¹ºîÀ®¼Ô¤Ë¤Ï¡¢¥³¡¼¥¹¤ÎºîÀ®¤ª¤è¤Ó¥³¡¼¥¹Æâ¤Ç¶µ¤¨¤ë¤³¤È¤Î¤ßµö²Ä¤µ¤ì¤Þ¤¹¡£
                • - -
                • ¥³¡¼¥¹ÆâÍÆ¤òÊѹ¹¤Ç¤­¤Ê¤¤¤è¤¦¤Ë¡¢¶µ»Õ¤Î¥³¡¼¥¹ÊÔ½¸¸¢¸Â¤òºï½ü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£(Î㤨¤ÐÈó¾ï¶Ð¶µ»Õ)
                • - -
                • ¥»¥­¥å¥ê¥Æ¥£ - ¶µ»Õ¤Ï³ØÀ¸°Ê³°¤ò¥³¡¼¥¹Æâ¤ËÆþ¤é¤»¤Ê¤¤¤è¤¦¤Ë¡¢¡ÖÅÐÏ¿¥­¡¼¡×¤òÄɲ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ÅÐÏ¿¥­¡¼¤Ï¡¢Ä¾ÀÜÅϤ¹¤³¤È¤â¡¢¥á¡¼¥ëÅù¤ÇÅϤ¹¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
                • - -
                • ɬÍפ˱þ¤¸¤Æ¡¢¶µ»Õ¤Ï³ØÀ¸¤ò¼êư¤ÇÅÐÏ¿¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ɬÍפ˱þ¤¸¤Æ¡¢¶µ»Õ¤Ï³ØÀ¸¤òÅÐÏ¿Ëõ¾Ã¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢¤¢¤ë°ìÄê´ü´Ö(´ÉÍý¼Ô¤Ë¤è¤êÀßÄê)¤Î̤¥í¥°¥¤¥ó¤Ë¤è¤ê¼«Æ°Åª¤ËÅÐÏ¿Ëõ¾Ã¤µ¤ì¤Þ¤¹¡£
                • - -
                • ³ØÀ¸¤Ë¤Ï¼Ì¿¿¤ä¼«¸Ê¾Ò²ð¤ò´Þ¤ó¤À¥ª¥ó¥é¥¤¥ó¥×¥í¥Õ¥£¡¼¥ë¤ÎºîÀ®¤¬¾©Î夵¤ì¤Þ¤¹¡£¥á¡¼¥ë¥¢¥É¥ì¥¹¤ÏɬÍפ˱þ¤¸¤ÆÉ½¼¨¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • Á´¤Æ¤Î¥æ¡¼¥¶¤Ï¼«Ê¬¤Î¥¿¥¤¥à¥¾¡¼¥ó¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Moodle¤Ç»ÈÍѤµ¤ì¤ëÆüÉÕ¤ÏÀßÄꤷ¤¿¥¿¥¤¥à¥¾¡¼¥ó¤ËÊÑ´¹¤µ¤ì¤Þ¤¹(Îã Åê¹ÆÆü»þ¡¢²ÝÂê¤ÎÄó½ÐÆüÅù)¡£
                • - -
                • Á´¤Æ¤Î¥æ¡¼¥¶¤ÏMoodle¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ë»ÈÍѤµ¤ì¤ë¸À¸ì(Î㠱Ѹ졢¥Õ¥é¥ó¥¹¸ì¡¢¥É¥¤¥Ä¸ì¡¢¥¹¥Ú¥¤¥ó¸ì¡¢¥Ý¥ë¥È¥¬¥ë¸ìÅù)¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - +
                • Goals are to reduce admin involvement to a minimum, while retaining high + security
                • +
                • Supports a range of authentication mechanisms through plug-in authentication + modules, allowing easy integration with existing systems.
                • +
                • Standard email method: students can create their own login accounts. Email + addresses are verified by confirmation.
                • +
                • LDAP method: account logins can be checked against an LDAP server. Admin + can specify which fields to use.
                • +
                • IMAP, POP3, NNTP: account logins are checked against a mail or news server. + SSL, certificates and TLS are supported.
                • +
                • External database: any database containing at least two fields can be used + as an external authentication source.
                • +
                • Each person requires only one account for the whole server - each account + can have different access
                • +
                • An admin account controls the creation of courses and creates teachers by + assigning users to courses
                • +
                • A course creator account is only allowed to create courses and teach in + them
                • +
                • Teachers may have editing privileges removed so that they can't modify the + course (eg for part-time tutors)
                • +
                • 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
                • +
                • Teachers can enrol students manually if desired
                • +
                • Teachers can unenrol students manually if desired, otherwise they are automatically + unenrolled after a certain period of inactivity (set by the admin)
                • +
                • Students are encouraged to build an online profile including photos, description. + Email addresses can be protected from display if required.
                • +
                • Every user can specify their own timezone, and every date in Moodle is translated + to that timezone (eg posting dates, assignment due dates etc)
                • +
                • Every user can choose the language used for the Moodle interface (English, + French, German, Spanish, Portuguese etc)
                -

                ¥³¡¼¥¹´ÉÍý

                -
                  - -
                • ´°Á´¤Ê¸¢¸Â¤ò»ý¤Ã¤¿¶µ»Õ¤Ï¡¢Â¾¤Î¶µ»Õ¤ÎÀ©¸Â¤â´Þ¤á¤Æ¡¢¥³¡¼¥¹¤Ë´Ø¤¹¤ë¤¢¤é¤æ¤ë¥³¥ó¥È¥í¡¼¥ë¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤Ï¡¢¥¦¥¤¡¼¥¯¥ê¡¼¡¢¥È¥Ô¥Ã¥¯¡¢¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤Ë¾ÇÅÀ¤òÃÖ¤¤¤¿¥½¡¼¥·¥ã¥ë¥Õ¥©¡¼¥Þ¥Ã¥È¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ½ÀÆð¤Ê¥³¡¼¥¹³èư¤ÎÇÛÎó - ¥Õ¥©¡¼¥é¥à¡¢Æü»ï¡¢¾®¥Æ¥¹¥È¡¢¥ê¥½¡¼¥¹¡¢¥¢¥ó¥±¡¼¥È¡¢Ä´ºº¡¢²ÝÂê¡¢¥Á¥ã¥Ã¥È¡¢¥ï¡¼¥¯¥·¥ç¥Ã¥×
                • - -
                • ºÇ½ª¥í¥°¥¤¥ó¤è¤ê¹¹¿·¤µ¤ì¤¿ÆâÍÆ¤ò¥³¡¼¥¹¥Û¡¼¥à¥Ú¡¼¥¸¤Ëɽ¼¨¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥³¥ß¥å¥Ë¥Æ¥£¡¼°Õ¼±¤òÍ¿¤¨¤ë¼ê½õ¤±¤È¤Ê¤ê¤Þ¤¹¡£
                • - -
                • ¤Û¤È¤ó¤É¤Î¥Æ¥­¥¹¥È¥¨¥ê¥¢ (¥ê¥½¡¼¥¹¡¢¥Õ¥©¡¼¥é¥àÅê¹ÆÍ󡢯ü»ï¥¨¥ó¥È¥êÅù)¤Ï¡¢¼ÂÁõºÑ¤ß¤ÎWYSIWYG HTML¥¨¥Ç¥£¥¿¤ÇÊÔ½¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¥Õ¥©¡¼¥é¥à¡¢Æü»ï¡¢¾®¥Æ¥¹¥È¡¢²ÝÂê¤Îɾ²Á¤ÏƱ°ì¥Ú¡¼¥¸¤Ç±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¥¹¥×¥ì¥Ã¥É¥·¡¼¥È·Á¼°¤Î¥Õ¥¡¥¤¥ë¤È¤·¤Æ¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
                • - -
                • ´°Á´¤Ê¥æ¡¼¥¶¥í¥®¥ó¥°¤ª¤è¤Ó¥È¥é¥Ã¥­¥ó¥° - ³Æ¥â¥¸¥å¡¼¥ë¤Ç¡¢¤½¤ì¤¾¤ì¤Î³ØÀ¸¤Ë´Ø¤¹¤ë³èư¥ì¥Ý¡¼¥È¤ò¡¢¥°¥é¥Õ¤È¾ÜºÙ(ºÇ½ª¥¢¥¯¥»¥¹¡¢±ÜÍ÷¿ô)¤Ç¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Æ±Íͤˡ¢¤½¤ì¤¾¤ì¤Î³ØÀ¸¤¬´Ø¤ï¤Ã¤¿¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ¡¢Æü»ï¥¨¥ó¥È¥ê¡¼Åù¤Î¾ÜºÙ¤Ê¡Ö¥¹¥È¡¼¥ê¡¼¡×¤ò1¥Ú¡¼¥¸¤Ç¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¥á¡¼¥ë¥¤¥ó¥Æ¥°¥ì¡¼¥·¥ç¥ó - ¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ¤Î¥³¥Ô¡¼¡¢¶µ»Õ¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯Åù¤òHTML·Á¼°¤Þ¤¿¤Ï¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È·Á¼°¤Ç¥á¡¼¥ëÁ÷¿®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ÆÈ¼«É¾²Á¼ÜÅÙ - ¶µ»Õ¤Ï¡¢¥Õ¥©¡¼¥é¥à¡¢²ÝÂê¡¢Æü»ï¤Îɾ²Á¤ò¹Ô¤¦¤¿¤á¤ËÆÈ¼«¤Îɾ²Á¼ÜÅÙ¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¥³¡¼¥¹¤Ï¡¢¥Ð¥Ã¥¯¥¢¥Ã¥×µ¡Ç½¤ò»È¤Ã¤ÆÃ±ÆÈ¤Îzip¥Õ¥¡¥¤¥ë¤Ë°µ½Ì¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤é¤Ï¡¢¤É¤ÎMoodle¥µ¡¼¥Ð¤Ë¤Ç¤â¥ê¥¹¥È¥¢¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - +
                • A full teacher has full control over all settings for a course, including + restricting other teachers
                • +
                • Choice of course formats such as by week, by topic or a discussion-focussed + social format
                • +
                • Flexible array of course activities - Forums, Journals, Quizzes, Resources, + Choices, Surveys, Assignments, Chats, Workshops
                • +
                • Recent changes to the course since the last login can be displayed on the + course home page - helps give sense of community
                • +
                • Most text entry areas (resources, forum postings, journal entries etc) can + be edited using an embedded WYSIWYG HTML editor
                • +
                • All grades for Forums, Journals, Quizzes and Assignments can be viewed on + one page (and downloaded as a spreadsheet file)
                • +
                • 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.
                • +
                • Mail integration - copies of forum posts, teacher feedback etc can be mailed + in HTML or plain text.
                • +
                • Custom scales - teachers can define their own scales to be used for grading + forums, assignments and journals
                • +
                • Courses can be packaged as a single zip file using the Backup function. + These can be restored on any Moodle server.
                -

                ²ÝÂê¥â¥¸¥å¡¼¥ë

                -
                  - -
                • ²ÝÂê¥â¥¸¥å¡¼¥ë¤Ç¤Ï¡¢Äó½Ð´ü¸Â¤ª¤è¤ÓºÇÂçɾ²Á¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ³ØÀ¸¤ÏÄó½Ðʪ(¤É¤Î¤è¤¦¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â)¤ò¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É¤Ç¤­¤Þ¤¹¡£¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤ÎÄó½ÐÆü¤¬µ­Ï¿¤µ¤ì¤Þ¤¹¡£
                • - -
                • Äó½Ð´ü¸Â¤ò²á¤®¤¿Äó½Ð¤Ïµö²Ä¤µ¤ì¤Þ¤¹¤¬¡¢¤É¤ÎÄøÅÙÃ٤줿¤«ÌÀ³Î¤Ë¶µ»Õ¤ËÄ󼨤µ¤ì¤Þ¤¹¡£
                • - -
                • ³ÆÄó½Ðʪ¤ËÂФ·¤Æ¡¢1¥Ú¡¼¥¸Æâ¤Ç¥¯¥é¥¹Á´ÂΤòɾ²Á(ºÎÅÀ¤ª¤è¤Ó¥³¥á¥ó¥È)¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¶µ»Õ¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤Ï¡¢³Æ³ØÀ¸¤Î²ÝÂê¥Ú¡¼¥¸¤ËÄɲ䵤졢¤½¤Î»Ý¤¬³ØÀ¸¤Ë¥á¡¼¥ëÄÌÃΤµ¤ì¤Þ¤¹¡£
                • - -
                • ¶µ»Õ¤Ï¡¢É¾²Á¸å¤Ë(ºÆÉ¾²Á¤Î¤¿¤á)²ÝÂê¤òºÆÄó½Ð¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - +
                • Assignments can be specified with a due date and a maximum grade.
                • +
                • Students can upload their assignments (any file format) to the server - + they are date-stamped.
                • +
                • Late assignments are allowed, but the amount of lateness is shown clearly + to the teacher
                • +
                • For each particular assignment, the whole class can be assessed (grade and + comment) on one page in one form.
                • +
                • Teacher feedback is appended to the assignment page for each student, and + notification is mailed out.
                • +
                • The teacher can choose to allow resubmission of assignments after grading + (for regrading)
                -

                ¥Á¥ã¥Ã¥È¥â¥¸¥å¡¼¥ë

                -
                  - -
                • ¥Æ¥­¥¹¥È¤Ë¤è¤ë¥¹¥à¡¼¥º¤Ç¥ê¥¢¥ë¥¿¥¤¥à¤ÎÁê¸ß¸òή¤ò¼Â¸½¤·¤Þ¤¹¡£
                • - -
                • ¥Á¥ã¥Ã¥È¥¦¥¤¥ó¥É¥¦¤Ë¥×¥í¥Õ¥£¡¼¥ë¼Ì¿¿¤òɽ¼¨¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • URL¡¢¥¹¥Þ¥¤¥ê¡¼¡¢Ëä¤á¹þ¤ßHTML¡¢¥¤¥á¡¼¥¸Åù¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£
                • - -
                • Á´¤Æ¤Î¥»¥Ã¥·¥ç¥ó¤Ï¸å¤Ç±ÜÍ÷¤¹¤ë¤¿¤á¤Ëµ­Ï¿¤µ¤ì¡¢³ØÀ¸¤Ë¤â±ÜÍ÷¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - +
                • Allows smooth, synchronous text interaction
                • +
                • Includes profile pictures in the chat window
                • +
                • Supports URLs, smilies, embedded HTML, images etc
                • +
                • All sessions are logged for later viewing, and these can also be made available + to students
                - -

                Åêɼ¥â¥¸¥å¡¼¥ë

                - +

                ÁªÂò¥â¥¸¥å¡¼¥ë

                  - -
                • Åêɼ¤Î¤è¤¦¤Êµ¡Ç½¤ò»ý¤Ã¤¿¥â¥¸¥å¡¼¥ë¤Ç¤¹¡£Åêɼ¤ä¡¢³ØÀ¸¤«¤é¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤Î¼ý½¸¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£(Î㠥ꥵ¡¼¥Á¥³¥ó¥»¥ó¥È)
                • - -
                • ¶µ»Õ¤Ï¡¢Ã¯¤¬²¿¤òÁªÂò¤·¤¿¤«Ä¾´¶Åª¤Ëʬ¤«¤ëɽ¤ò±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • Ǥ°Õ¤Ç¡¢·ë²Ì¤Î¥ê¥¢¥ë¥¿¥¤¥à¥°¥é¥Õ¤ò³ØÀ¸¤Ë¸«¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - +
                • Like a poll. Can either be used to vote on something, or to get feedback + from every student (eg research consent)
                • +
                • Teacher sees intuitive table view of who chose what
                • +
                • Students can optionally be allowed to see an up-to-date graph of results
                -

                ¥Õ¥©¡¼¥é¥à¥â¥¸¥å¡¼¥ë

                -
                  - -
                • ¶µ»Õ¤Î¤ß¡¢¥³¡¼¥¹¥Ë¥å¡¼¥¹¡¢Á´¤Æ¤Ë¥ª¡¼¥×¥ó¡¢1¥æ¡¼¥¶1¥¹¥ì¥Ã¥ÉÅù¤Î°Û¤Ê¤ë¥¿¥¤¥×¤Î¥Õ¥©¡¼¥é¥à¤òÍøÍѤǤ­¤Þ¤¹¡£
                • - -
                • Á´¤Æ¤ÎÅê¹Æ¤Ë¤ÏÅê¹Æ¼Ô¤Î´é¼Ì¿¿¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
                • - -
                • ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤Ï¡¢¥Í¥¹¥È¡¢¥Õ¥é¥Ã¥È¡¢¥¹¥ì¥Ã¥É¤ª¤è¤ÓÅê¹ÆÆü»þ¤Î¹ß½ç¡¦¾º½ç¤Ëɽ¼¨¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¸Ä¡¹¤Î¥Õ¥©¡¼¥é¥à¤Ï¡¢¥³¥Ô¡¼¤¬¥á¡¼¥ë¤ÇÁ÷¿®¤µ¤ì¤ë¤è¤¦¤Ë¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¶µ»Õ¤Ï¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤ò¶¯À©Åª¤Ë¹Ô¤¦¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¶µ»Õ¤Ï¡¢ÊÖ¿®¤òµö²Ä¤·¤Ê¤¤¤³¤È¤â¤Ç¤­¤Þ¤¹ (Îã ¤ªÃΤ餻ÀìÍÑ¥Õ¥©¡¼¥é¥à)¡£
                • - -
                • ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥¹¥ì¥Ã¥É¤Ï¡¢¶µ»Õ¤Ë¤è¤ê´Êñ¤Ë¥Õ¥©¡¼¥é¥à´Ö¤ò°Üư¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • źÉÕ¥¤¥á¡¼¥¸¤Ï¥¤¥ó¥é¥¤¥óɽ¼¨¤µ¤ì¤Þ¤¹¡£
                • - -
                • ¥Õ¥©¡¼¥é¥à¤Ë¥ì¡¼¥Æ¥£¥ó¥°¤¬»ÈÍѤµ¤ì¤ë¾ì¹ç¡¢¥ì¡¼¥Æ¥£¥ó¥°¤Î´ü¸Â¤òÀߤ±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - +
                • Different types of forums are available, such as teacher-only, course news, + open-to-all, and one-thread-per-user.
                • +
                • All postings have the authors photo attached.
                • +
                • Discussions can be viewed nested, flat or threaded, oldest or newest first.
                • +
                • Individual forums can be subscribed to by each person so that copies are + forwarded via email, or the teacher can force subscription for all
                • +
                • The teacher can choose not to allow replies (eg for an announcements-only + forum)
                • +
                • Discussion threads can be easily moved between forums by the teacher
                • +
                • Attached images are shown inline
                • +
                • If forum ratings are being used, these can be restricted to a range of dates
                -

                Æü»ï¥â¥¸¥å¡¼¥ë

                -
                  - -
                • Æü»ï¤Ï³ØÀ¸¤È¶µ»Õ¤Î´Ö¤Î¥×¥é¥¤¥Ù¡¼¥È¤Ê³èư¤Ç¤¹¡£
                • - -
                • ¤½¤ì¤¾¤ì¤ÎÆü»ï¤ò¼«Í³²óÅú¼ÁÌä¤Ë¤è¤êÊý¸þÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ³ÆÆü»ï¥¨¥ó¥È¥ê¤ËÂФ·¤Æ¡¢1¥Ú¡¼¥¸Æâ¤Ç¥¯¥é¥¹Á´ÂΤòɾ²Á¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¶µ»Õ¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤Ï¡¢³Æ³ØÀ¸¤ÎÆü»ï¥Ú¡¼¥¸¤ËÄɲ䵤졢¤½¤Î»Ý¤¬³ØÀ¸¤Ë¥á¡¼¥ëÄÌÃΤµ¤ì¤Þ¤¹¡£
                • - +
                • Journals are private between student and teacher.
                • +
                • Each journal entry can be directed by an open question.
                • +
                • For each particular journal entry, the whole class can be assessed on one + page in one form
                • +
                • Teacher feedback is appended to the journal entry page, and notification + is mailed out.
                -

                ¾®¥Æ¥¹¥È¥â¥¸¥å¡¼¥ë

                -
                  - -
                • ¶µ»Õ¤Ï¡¢°Û¤Ê¤ë¾®¥Æ¥¹¥È¤ÇºÆÍøÍѤ¹¤ë¤¿¤á¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¼ÁÌä¤òÅÐÏ¿¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ´Êñ¤Ê¥¢¥¯¥»¥¹¤Î¤¿¤á¤Ë¡¢¼ÁÌä¤ò¥«¥Æ¥´¥êÆâ¤ËÊݸ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥µ¥¤¥ÈÆâ¤ÎÁ´¤Æ¤Î¥³¡¼¥¹¤«¤é¥¢¥¯¥»¥¹¤Ç¤­¤ë¤è¤¦¤Ë¡¢¥«¥Æ¥´¥ê¤ò¡Ö¸ø³«¡×¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¾®¥Æ¥¹¥È¤Ï¼«Æ°Åª¤Ëɾ²Á¤µ¤ì¡¢¼ÁÌ䤬½¤Àµ¤µ¤ì¤¿¾ì¹ç¤ÏºÆÉ¾²Á¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¾®¥Æ¥¹¥È¤Ë¤Ï¡¢´ü´Ö³°¤ÎÍøÍѤ¬¤Ç¤­¤Ê¤¤¤è¤¦¤Ë»þ´ÖÀ©¸Â¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¶µ»Õ¤Î¥ª¥×¥·¥ç¥óÀßÄê¤Ë¤è¤ê¡¢¾®¥Æ¥¹¥È¤òÊ£¿ô²ó¼õ¤±¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤äÀµÅú¤òɽ¼¨¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
                • - -
                • ÉÔÀµ¹Ô°Ù¤ò¸º¤é¤¹¤¿¤á¡¢¾®¥Æ¥¹¥È¤È¾®¥Æ¥¹¥È¤ÎÅú¤¨¤ò¥é¥ó¥À¥à¤Ëº®¤¼¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¾®¥Æ¥¹¥È¤Ç¤ÏHTML¤È¥¤¥á¡¼¥¸¤ò»ÈÍѤǤ­¤Þ¤¹¡£
                • - -
                • ³°Éô¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤«¤é¾®¥Æ¥¹¥È¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ɬÍפ˱þ¤¸¤Æ¡¢¾®¥Æ¥¹¥È¤òÊ£¿ô²ó¼õ¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ɬÍפ˱þ¤¸¤Æ¡¢¾®¥Æ¥¹¥È¤Î·ë²Ì¤ÏÃßÀѤµ¤ì¡¢Ê£¿ô²ó¤Î¼Â»Ü¤Ç½ªÎ»¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¿»èÁªÂò¼°ÌäÂê¤Ë¤Ï¡¢Ã±°ì¤Þ¤¿¤ÏÊ£¿ô¤ÎÅú¤¨¤òÍѰդ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • µ­½ÒÌäÂê(ñ¸ì¤Þ¤¿¥Õ¥ì¡¼¥º)
                • - -
                • ¡û/¡ßÌäÂê
                • - -
                • ÁȤ߹ç¤ï¤»ÌäÂê
                • - -
                • ¥é¥ó¥À¥àÊý¼°ÌäÂê
                • - -
                • ¿ôÃÍÌäÂê (µöÍÆÈϰÏ)
                • - -
                • ¥Æ¥­¥¹¥ÈÆâ¤ËÅú¤¨¤òÆþ¤ì¤ë·êËä¤áÌäÂê(cloze¥¹¥¿¥¤¥ë)
                • - -
                • ÀâÌÀ¤Î¤¿¤á¤Ë¥Æ¥­¥¹¥È¤È¥°¥é¥Õ¥£¥Ã¥¯¤òËä¤á¹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - +
                • Teachers can define a database of questions for re-use in different quizzes
                • +
                • Questions can be stored in categories for easy access, and these categories + can be "published" to make them accessible from any course on the + site.
                • +
                • Quizzes are automatically graded, and can be re-graded if questions are + modified
                • +
                • Quizzes can have a limited time window outside of which they are not available
                • +
                • At the teacher's option, quizzes can be attempted multiple times, and can + show feedback and/or correct answers
                • +
                • Quiz questions and quiz answers can be shuffled (randomised) to reduce cheating
                • +
                • Questions allow HTML and images
                • +
                • Questions can be imported from external text files
                • +
                • Quizzes can be attempted multiple times, if desired
                • +
                • Attempts can be cumulative, if desired, and finished over several sessions
                • +
                • Multiple-choice questions supporting single or multiple answers
                • +
                • Short Answer questions (words or phrases)
                • +
                • True-False questions
                • +
                • Matching questions
                • +
                • Random questions
                • +
                • Numerical questions (with allowable ranges)
                • +
                • Embedded-answer questions (cloze style) with answers within passages of + text
                • +
                • Embedded descriptive text and graphics
                -

                ¥ê¥½¡¼¥¹¥â¥¸¥å¡¼¥ë

                -
                  - -
                • Word¡¢PowerPoint¡¢Flash¡¢¥Ó¥Ç¥ª¡¢²»À¼Åù¤ò´Þ¤àÍÍ¡¹¤ÊÅŻҥ³¥ó¥Æ¥ó¥Ä¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£
                • - -
                • ¥Õ¥¡¥¤¥ë¤Ï¡¢¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É¤·¤Æ´ÉÍý¤¹¤ë¤³¤È¤â¡¢¥¦¥§¥Ö¥Õ¥©¡¼¥à¤ò»ÈÍѤ·¤ÆºîÀ®(¥Æ¥­¥¹¥È¡¢HTML)¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¥¦¥§¥Ö¾å¤Î³°Éô¥³¥ó¥Æ¥ó¥Ä¤Ï¡¢¥ê¥ó¥¯¤òÄ¥¤Ã¤¿¤ê¡¢¥³¡¼¥¹Æâ¤Ë·Ñ¤®ÌÜ̵¤·¤Ëɽ¼¨¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ³°Éô¤Î¥¦¥§¥Ö¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¤Ï¡¢¥ê¥ó¥¯¤òÄ¥¤Ã¤Æ¥Ñ¥é¥á¡¼¥¿¤òÅϤ¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - +
                • Supports display of any electronic content, Word, Powerpoint, Flash, Video, + Sounds etc
                • +
                • Files can be uploaded and managed on the server, or created on the fly using + web forms (text or HTML)
                • +
                • External content on the web can be linked to or seamlessly included within + the course interface.
                • +
                • External web applications can be linked in with data passed to them
                -

                Ä´ºº¥â¥¸¥å¡¼¥ë

                -
                  - -
                • Æâ¢¤µ¤ì¤Æ¤¤¤ëÄ´ºº(COLLES, ATTLS)¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥¯¥é¥¹¤ÎʬÀϤËŬ¤·¤¿¥Ä¡¼¥ë¤Ç¤¢¤ë¤È¾ÚÌÀ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
                • - -
                • Âô»³¤Î¥°¥é¥Õ¤ò´Þ¤ó¤À¡¢¥ª¥ó¥é¥¤¥óÄ´ºº¥ì¥Ý¡¼¥È¤ò¾ï¤ËÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Ç¡¼¥¿¤ÏExcel¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤Þ¤¿¤ÏCSV¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë·Á¼°¤Ç¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • Ä´ºº¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬¡¢°ìÉô½ªÎ»¤Î¤ß¤Ç½ªÎ»¤¹¤ëÄ´ºº¤òËɤ®¤Þ¤¹¡£
                • - -
                • ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤Ï¡¢¥¯¥é¥¹¤ÎÊ¿¶Ñ¤ÈÈæ³Ó¤µ¤ì¤Ê¤¬¤é¡¢³ØÀ¸¤Î·ë²Ì¤ËÂФ·¤ÆÄ󶡤µ¤ì¤Þ¤¹¡£
                • - +
                • Built-in surveys (COLLES, ATTLS) have been proven as instruments for analysing online classes
                • +
                • Online survey reports always available, including many graphs. Data is downloadable as an Excel spreadsheet or CSV text file.
                • +
                • Survey interface prevents partly-finished surveys.
                • +
                • Feedback is provided to the student of their results compared to the class averages +
                -

                ¥ï¡¼¥¯¥·¥ç¥Ã¥×¥â¥¸¥å¡¼¥ë

                -
                  - -
                • ¥É¥­¥å¥á¥ó¥È¤ËÂФ·¤ÆÁê¸ßɾ²Á¤òµö²Ä¤·¡¢¶µ»Õ¤Ï´ÉÍý¤ª¤è¤ÓÁê¸ßɾ²Á¤Ë´Ø¤¹¤ëɾ²Á¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ¹­ÈϰϤÎɾ²Á¼ÜÅÙ¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£
                • - -
                • ɾ²Á¤ÎÎý½¬¤ò¤¹¤ë¤¿¤á¡¢¶µ»Õ¤Ï³ØÀ¸¤Ë¥µ¥ó¥×¥ëʸ½ñ¤òÄ󶡤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                • - -
                • ÍÍ¡¹¤Ê¥ª¥×¥·¥ç¥ó¤òÈ÷¤¨¤¿Èó¾ï¤Ë½ÀÆð¤Ê¥â¥¸¥å¡¼¥ë¤Ç¤¹¡£
                • - +
                • Allows peer assessement of documents, and the teacher can manage and grade + the assessment.
                • +
                • Supports a wide range of possible grading scales
                • +
                • Teacher can provide sample documents for students to practice grading
                • +
                • Very flexible with many options.
                -

                 

                -
                - -

                Moodleʸ½ñ

                - -

                Version: $Id$

                - +

                Moodle Documentation

                +

                Version: $Id$

                - - diff --git a/lang/ja/docs/files.php b/lang/ja/docs/files.php index fece2887b4a..6f5169b72dc 100644 --- a/lang/ja/docs/files.php +++ b/lang/ja/docs/files.php @@ -6,7 +6,7 @@ $string['-about'] = "Moodle $string['intro.html'] = "¥¤¥ó¥È¥í¥À¥¯¥·¥ç¥ó"; $string['background.html'] = "ÇØ·Ê"; $string['philosophy.html'] = "Íýǰ"; -$string['licence.html'] = "Ãøºî¸¢¡¦»ÈÍѵöÂú¾ò·ï"; +$string['licence.html'] = "¥é¥¤¥»¥ó¥¹"; $string['features.html'] = "ÆÃħ"; $string['release.html'] = "¥ê¥ê¡¼¥¹¥Î¡¼¥È"; $string['future.html'] = "̤Íè"; @@ -15,7 +15,7 @@ $string['credits.html'] = " $string['-installation'] = "´ÉÍý"; $string['install.html'] = "¥¤¥ó¥¹¥È¡¼¥ë"; $string['faq.html'] = "¥¤¥ó¥¹¥È¡¼¥ë FAQ"; -$string['installamp.html'] = "¥¢¥Ñ¥Ã¥Á¡¢MySQL¡¢PHP¤Î¥¤¥ó¥¹¥È¡¼¥ë"; +$string['installamp.html'] = "¥¢¥Ñ¥Ã¥Á¡¢MySQL¡¢PHP"; $string['upgrade.html'] = "¥¢¥Ã¥×¥°¥ì¡¼¥É"; $string['-usage'] = "Moodle¤ÎÍøÍÑ"; diff --git a/lang/ja/docs/future.html b/lang/ja/docs/future.html deleted file mode 100644 index 1de41043092..00000000000 --- a/lang/ja/docs/future.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - -Moodle Docs: Future - - - - - - - - -

                Moodle¤Î̤Íè

                -
                -

                Moodle¤ÎÀ®½Ï²áÄø¤Ë¤ª¤¤¤Æ¡¢¤½¤ÎÊý¸þÀ­¤Ï³«È¯¼Ô¤È¥æ¡¼¥¶¤Î¥³¥ß¥å¥Ë¥Æ¥£¤Ë¤è¤Ã¤Æ¤Þ¤¹¤Þ¤¹±Æ¶Á¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤­¤Þ¤·¤¿¡£ - µ¡Ç½Äó°Æ¤È¤½¤Î¾õÂ֤˴ؤ¹¤ë³èưŪ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ï moodle.org/bugs ¤Ç¤´Í÷¤¤¤¿¤À¤±¤Þ¤¹¡£ - »äã¤Ï¤¢¤Ê¤¿¤Î¥¢¥¤¥Ç¥£¥¢¡¢¥³¡¼¥É¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¡¢¥×¥í¥â¡¼¥·¥ç¥ó¤Ë¤è¤ë ¹×¸¥ ¤ò¤¤¤Ä¤Ç¤â´¿·Þ¤·¤Þ¤¹ - ¾ÜºÙ¤Ï - ³«È¯¼Ô¥Þ¥Ë¥å¥¢¥ë ¤ª¤è¤Ó ¥³¥ß¥å¥Ë¥Æ¥£¥Õ¥©¡¼¥é¥à ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£ - ¤Þ¤¿¡¢ÆÃÄ굡ǽ¤ÎÁáµÞ¤Ê³«È¯¤òÍ­½þ¤Ë¤Æ¤ª¼õ¤±¤¤¤¿¤·¤Þ¤¹ - ¾ÜºÙ¤Ï moodle.com/development ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£ -

                -

                ²¼µ­¤Ï¡¢Moodle¤Î̤Íè¤Ë´Ø¤¹¤ë¸½ºß¤Î¥í¡¼¥É¥Þ¥Ã¥×¤Ç¤¹¡£¤³¤Î¥í¡¼¥É¥Þ¥Ã¥×¤Ï ¥¹¥Ý¥ó¥µ¡¼ ¤ª¤è¤Ó ³«È¯¼Ô ¤Î±Æ¶Á¤Ë¤è¤Ã¤Æ¾ï¤ËÊѤï¤ê¤Þ¤¹¡£

                -

                Version 1.5 - 2005ǯ2·î

                -
                -

                Moodle 1.5¤Ï¡¢Moodle¤òWAI(W3C)¡¢SENDA(UK)¡¢¤ª¤è¤ÓSection 508(ÊÆ¹ñ)¤Ê¤É¤Î½ÅÍפʥ¦¥§¥Ö¥¢¥¯¥»¥·¥Ó¥ê¥Æ¥£É¸½à¤Ë´°Á´¤ËŬ¹ç¤µ¤»¤ë¤³¤È¤òÌÜɸ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£

                -

                ɽ¼¨¥³¡¼¥É¤Ï¡¢XHTML Transitional1.0¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£CSS¤Ï¥¯¥ê¡¼¥ó¥¢¥Ã¥×¤µ¤ì¡¢¥Ç¥¶¥¤¥Ê¡¼¤¬¥µ¥¤¥È¤Î¥ë¥Ã¥¯¡õ¥Õ¥£¡¼¥ë¤Ë´Ø¤·¤Æ¡¢¤è¤ê´°Á´¤Ê¥³¥ó¥È¥í¡¼¥ë¤¬¤Ç¤­¤ë¤è¤¦¤Ë³ÈÄ¥¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢¤Þ¤À¥Æ¥ó¥×¥ì¡¼¥È¤ò»ÈÍѤ·¤Þ¤»¤ó¡£

                -

                ¿·¤·¤¤µ¡Ç½¤Ë´Ø¤¹¤ëŤ¤¥ê¥¹¥È¤Ç¤¹:

                -
                  -
                • ľÀÜŪ¤Ê¥³¥ß¥å¥Ë¥±¡¼¥·¥ç¥ó¤Î¤¿¤á¤ÎÅý¹ç¥¤¥ó¥¹¥¿¥ó¥È¥á¥Ã¥»¡¼¥¸µ¡Ç½
                • -
                • ¾®¥Æ¥¹¥È¥â¥¸¥å¡¼¥ë¤Ë´Ø¤¹¤ëÂçÉý¤Êµ¡Ç½²þÁ±: 1¥Ú¡¼¥¸¤¢¤¿¤ê¤ÎÌäÂê¿ô¤ÎÀßÄê; ÌäÂêºîÀ®¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î²þÁ±; ³¬ÁØÅª¤ÊÌäÂꥫ¥Æ¥´¥ê;
                • -
                • ¿·¤·¤¤¥Ö¥í¥Ã¥¯¥Õ¥©¡¼¥Þ¥Ã¥È¡¢¥Ö¥í¥Ã¥¯¤ÎÊ£¿ô¥³¥Ô¡¼¤ª¤è¤Ó¹¹¤Ë²þÁ±¤µ¤ì¤¿¥Ö¥í¥Ã¥¯ÀßÄê (¸Å¤¤¥µ¡¼¥É¥Ñ¡¼¥Æ¥£¡¼¤Î¥Ö¥í¥Ã¥¯¤Ï¥¢¥Ã¥×¥°¥ì¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Ö¥í¥Ã¥¯¥Ç¥£¥ì¥¯¥È¥ê¤Î¥É¥­¥å¥á¥ó¥È¤ò¤´Í÷¤¯¤À¤µ¤¤¡£)
                • -
                • ¥³¡¼¥¹ºîÀ®¡¢¥°¥ë¡¼¥×³ä¤êÅö¤Æ¡¢¥æ¡¼¥¶Æ±´üÅù¤ò¥³¥ó¥È¥í¡¼¥ë¤Ç¤­¤ë³ÈÄ¥LDAP¤ÎÅý¹ç
                • -
                • ´ÉÍý¼Ô¤Ë¤è¤ë¥æ¡¼¥¶¥Õ¥£¡¼¥ë¥É¤Î¥í¥Ã¥¯µ¡Ç½
                • -
                • ClamAV¤ò»ÈÍѤ·¤¿¿·¤·¤¤¥É¥­¥å¥á¥ó¥È¤Î¼«Æ°¥¦¥¤¥ë¥¹¥¹¥­¥ã¥Ë¥ó¥°¤òÄɲä·¤¿¥Õ¥¡¥¤¥ë¥¢¥Ã¥×¥í¡¼¥Éµ¡Ç½¤Î²þÁ±
                • -
                • ¥ï¡¼¥¯¥·¥ç¥Ã¥×¤ª¤è¤Ó¥ì¥Ã¥¹¥ó¥â¥¸¥å¡¼¥ë¤Î´ÊÁDz½¤·¤¿¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹
                • -
                • ¥æ¡¼¥¶¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤ë¥Æ¥­¥¹¥È¤òXHTML¤ËÊÑ´¹¤¹¤ë¿·¤·¤¤¥Õ¥£¥ë¥¿
                • -
                • PAMǧ¾Ú¥â¥¸¥å¡¼¥ë
                • -
                • ¥»¥Ã¥·¥ç¥ó¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ø¤ÎÊݸ (Moodle¤Î¥¯¥é¥¹¥¿²½¤ËÍ­±×)
                • -
                • ¥æ¡¼¥¶¤ËÂФ¹¤ë¥µ¥¤¥È»ÈÍѵöÂú
                • -
                • ¾¤Î¿¤¯¤Î²þÁ±¤ª¤è¤Ó¥Ð¥°¥Õ¥£¥Ã¥¯¥¹
                • -
                -

                -
                -

                Version 1.6 - 2005Ç¯Ãæ½Ü

                -
                -

                ¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¿¤¯¤Î¥á¥¤¥ó¥Ú¡¼¥¸¤¬HTML¥Æ¥ó¥×¥ì¡¼¥È¤ò»È¤Ã¤Æ¥«¥¹¥¿¥Þ¥¤¥º¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

                -

                ¥æ¡¼¥¶¥Ö¥í¥°¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹ (Æü»ï¤ÈÆþ¤ìÂØ¤¨)¡£

                -

                ¥Þ¥¤ Moodle ¥Ú¡¼¥¸

                -

                ¥³¡¼¥¹¤Îή¤ì¤Ë´Ø¤¹¤ë¹½Â¤¤ª¤è¤ÓÊݼé¤Î²þÁ±

                -

                -
                -

                Version 2.0 - 2005ǯ¸åȾ

                -
                -

                ¤³¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢¶¦Æ±ºî¶È¤Ë¤ª¤±¤ëMoodle¤Î¼«Á³¤Ê¿Ê²½¤Ë´ð¤Å¤­¡¢Moodle¤ò¹¹¤Ë¥Í¥Ã¥È¥ï¡¼¥¯»Ö¸þ¤Ë¤¹¤ë¥¨¥­¥µ¥¤¥Æ¥£¥ó¥°¤Ê³«È¯¤â´Þ¤Þ¤ì¤Þ¤¹¡£ - ¾ÜºÙ¤Ï¸åÆü¤³¤³¤Ëµ­¤·¤Þ¤¹¡£

                -
                -
                -

                -

                Moodle Documentation

                -

                Version: $Id$

                - \ No newline at end of file diff --git a/lang/ja/docs/install.html b/lang/ja/docs/install.html index ce60cd914d8..62b978cb296 100644 --- a/lang/ja/docs/install.html +++ b/lang/ja/docs/install.html @@ -1,82 +1,92 @@ - -Moodle Docs: ¥¤¥ó¥¹¥È¡¼¥ë - + +Moodle Docs: ¥¤¥ó¥¹¥È¡¼¥ë + - + + - + + + +

                Moodle¤Î¥¤¥ó¥¹¥È¡¼¥ë

                + +

                ¤³¤Î¥¬¥¤¥É¤ÏºÇ½é¤ËMoodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëÊýË¡¤Ë´Ø¤·¤ÆÀâÌÀ¤·¤¿¤â¤Î¤Ç¤¹¡£¥¦¥§¥Ö¥µ¡¼¥Ð¤Î¹­ÈϰϤËÅϤëºÙ¤«¤Ê°ã¤¤¤ò¥«¥Ð¡¼¤¹¤ë¤¿¤á¤Ë¡¢¾ÜºÙ¤Ë´Ø¤·¤Æ½Ò¤Ù¤Æ¤¢¤ëÉôʬ¤â¤¢¤ê¤Þ¤¹¡£¤³¤Î¤³¤È¤ÇÆÉ¤à¤Î¤òÅꤲ½Ð¤µ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ÉáÃÊ¡¢»ä¤Ï¿ôʬ¤ÇMoodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤Þ¤¹¤«¤é¡ª

                + +

                »þ´Ö¤ò¤«¤±¤Æ¤³¤Îʸ½ñ¤òÆÉ¤ó¤Ç¤¯¤À¤µ¤¤¡£Ãí°Õ¿¼¤¯ÆÉ¤à¤³¤È¤Ç¸å¤Îºî¶È»þ´Ö¤òÀáÌ󤹤뤳¤È¤¬½ÐÍè¤Þ¤¹¡£

                + +

                ʸ½ñ¤Î¹àÌÜ:

                + +
                  +
                1. ɬÍ×¾ò·ï
                2. +
                3. ¥À¥¦¥ó¥í¡¼¥É
                4. +
                5. ¥µ¥¤¥È¹½À®
                6. +
                7. ¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥ê¤ÎºîÀ®
                8. +
                9. ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºîÀ®
                10. +
                11. ¥¦¥§¥Ö¥µ¡¼¥ÐÀßÄê¤Î³Îǧ
                12. +
                13. config.php¤ÎÊÔ½¸
                14. +
                15. ´ÉÍý¥Ú¡¼¥¸¤Ë¿Ê¤à
                16. +
                17. cron¤ÎÀßÄê
                18. +
                19. ¿·¤·¤¤¥³¡¼¥¹¤ÎºîÀ®
                20. +
                + +

                1. ɬÍ×¾ò·ï

                +
                -

                ¤³¤Î¥¬¥¤¥É¤ÏºÇ½é¤ËMoodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëÊýË¡¤Ë´Ø¤·¤ÆÀâÌÀ¤·¤¿¤â¤Î¤Ç¤¹¡£¥¦¥§¥Ö¥µ¡¼¥Ð¤Î¹­ÈϰϤËÅϤëºÙ¤«¤Ê°ã¤¤¤ò¥«¥Ð¡¼¤¹¤ë¤¿¤á¤Ë¡¢¾ÜºÙ¤Ë´Ø¤·¤Æ½Ò¤Ù¤Æ¤¢¤ëÉôʬ¤â¤¢¤ê¤Þ¤¹¡£¤³¤Î¤³¤È¤ÇÆÉ¤à¤Î¤òÅꤲ½Ð¤µ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ÉáÃÊ¡¢»ä¤Ï¿ôʬ¤ÇMoodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤Þ¤¹¤«¤é¡ª

                -

                »þ´Ö¤ò¤«¤±¤Æ¤³¤Îʸ½ñ¤òÆÉ¤ó¤Ç¤¯¤À¤µ¤¤¡£Ãí°Õ¿¼¤¯ÆÉ¤à¤³¤È¤Ç¸å¤Îºî¶È»þ´Ö¤òÀáÌ󤹤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£

                -

                ʸ½ñ¤Î¹àÌÜ:

                -
                  -
                1. ¥·¥¹¥Æ¥àɬÍ×¾ò·ï
                2. -
                3. ¥À¥¦¥ó¥í¡¼¥É
                4. -
                5. ¥µ¥¤¥È¹½À®
                6. -
                7. ¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥ê¤ÎºîÀ®
                8. -
                9. ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºîÀ®
                10. -
                11. ¥¦¥§¥Ö¥µ¡¼¥ÐÀßÄê¤Î³Îǧ
                12. -
                13. config.php¤ÎÊÔ½¸
                14. -
                15. ´ÉÍý¥Ú¡¼¥¸¤Ë¿Ê¤à
                16. -
                17. cron¤ÎÀßÄê
                18. -
                19. ¿·¤·¤¤¥³¡¼¥¹¤ÎºîÀ®
                20. -
                -

                 

                + +

                Moodle¤Ï¼ç¤È¤·¤ÆPHP¡¢Apache¡¢MySQL¤ò»ÈÍѤ·¤¿Linux´Ä¶­¤Ç³«È¯¤·¤Æ¤¤¤Þ¤¹¡£Äê´üŪ¤ËPostgreSQL¡¢WindowsXP¡¢Mac OS X¤Î´Ä¶­¤Ç¥Æ¥¹¥È¤·¤Æ¤¤¤Þ¤¹¡£

                + +

                ¤¢¤¿¤Ê¤¬É¬Íפʤâ¤Î¤Ï:

                + +
                  +
                1. ²¼µ­¤Î¹àÌܤ¬ÍøÍѲÄǽ¤Ë¤µ¤ì¤Æ¤¤¤ë¡¢Æ°ºî²Äǽ¤ÊPHP(¥Ð¡¼¥¸¥ç¥ó4.1.0 °Ê¾å)¡¢(ºÇ¶á¤Ç¤ÏËØ¤É¤ÎPHP¤¬¤³¤ì¤é¤Î¾ò·ï¤òËþ¤¿¤·¤Æ¤¤¤Þ¤¹¡£): +
                    +
                  • JPG¤ÈPNG¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¥µ¥Ý¡¼¥È¤¹¤ëGD¥é¥¤¥Ö¥é¥ê
                  • +
                  • ¥»¥Ã¥·¥ç¥ó¥µ¥Ý¡¼¥È
                  • +
                  • ¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É²Ä
                  • +
                  +
                2. + +
                3. ưºî²Äǽ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹¥µ¡¼¥Ð: MySQL ¤Þ¤¿¤Ï PostgreSQL ¿ä¾©¡£ (MSSQL¡¢ Oracle¡¢ Interbase¡¢ Foxpro¡¢ Access¡¢ ADO¡¢ Sybase¡¢ DB2¡¢ODBC ¤Ç¤âÍýÏÀŪ¤Ë¤Ïưºî¤·¤Þ¤¹¤¬¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¥Æ¡¼¥Ö¥ë¤ò¼êưÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£)
                4. +
                + +

                Windows¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¡¢¤³¤ì¤é¤Î¾ò·ï¤òËþ¤¿¤¹°ìÈÖÁᤤÊýË¡¤ÏFoxServ¤Þ¤¿¤ÏEasyPHP¤ò¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤³¤È¤Ç¤¹¡£¤³¤ì¤é¤Î¥½¥Õ¥È¤ÇApache¡¢PHP¡¢MySQL¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Moodle¤¬²èÁü½èÍý¤ò¹Ô¤¨¤ë¤è¤¦¤ËGD¥â¥¸¥å¡¼¥ë¤ò»È¤¨¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ - php.ini¤òÊÔ½¸¤·¤Æ¼¡¤Î¥³¥á¥ó¥È(;)¤ò¼è¤ê½ü¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£: 'extension=php_gd.dll'. ¤Þ¤¿session.save_path¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¥Ç¥Õ¥©¥ë¥È¤Î"/tmp"¤«¤é"c:/temp"¤Î¤è¤¦¤ËWindows¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò»ÈÍѤ¹¤ë¤è¤¦¤ËÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

                + +

                Mac OS X¤Ë´Ø¤·¤Æ¤Ï¡¢¤³¤ì¤éÁ´¤Æ¤ò´Êñ¤Ç¥á¥ó¥Æ¥Ê¥ó¥¹²Äǽ¤Ê¥Ñ¥Ã¥±¡¼¥¸¤È¤·¤Æ¥À¥¦¥ó¥í¡¼¥É½ÐÍè¤ëfink project¤ò¶¯¤¯¤ª´«¤á¤·¤Þ¤¹¡£ ¤â¤·¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¼«¿®¤¬¤Ê¤¤¤Î¤Ç¤·¤¿¤éMarc Liyanage's PHP Apache Module¤Î»ÈÍѤ¬¿·¤·¤¤Mac OS X¾å¤Ç¡¢PHP¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ²Ôư¤µ¤»¤ëºÇ¤â´Êñ¤ÊÊýË¡¤Ç¤¹¡£

                + +

                ¤â¤·Linux¤Þ¤¿¤Ï¤½¤Î¾¤ÎUnix¤ò¤ª»È¤¤¤Ç¤·¤¿¤é¡¢¤³¤ì¤é¤Ë´Ø¤¹¤ëÁ´¤Æ¤Î¤³¤È¤ò¤ªÊ¬¤«¤ê¤Ç¤·¤ç¤¦;-)

                -

                1. ¥·¥¹¥Æ¥àɬÍ×¾ò·ï

                -
                -

                Moodle¤Ï¼ç¤È¤·¤ÆPHP¡¢Apache¡¢MySQL¤ò»ÈÍѤ·¤¿Linux´Ä¶­(LAMP¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤È¤â¸Æ¤Ð¤ì¤Þ¤¹)¤Ç³«È¯¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£ ¤·¤«¤·¡¢Äê´üŪ¤ËPostgreSQL¡¢WindowsXP¡¢Mac OS X¡¢Netware 6¤Î´Ä¶­¤Ç¥Æ¥¹¥È¤·¤Æ¤¤¤Þ¤¹¡£

                -

                Moodle¤Î¥·¥¹¥Æ¥àɬÍ×¾ò·ï¤Ï²¼µ­¤ÎÄ̤ê¤Ç¤¹:

                -
                  -
                1. ¥¦¥§¥Ö¥µ¡¼¥Ð¥½¥Õ¥È¥¦¥§¥¢¡£¤Û¤È¤ó¤É¤Î¥æ¡¼¥¶¤Ï¡¢Apache¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¤¬¡¢Moodle¤ÏWindows¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë¤ª¤±¤ëIIS¤Î¤è¤¦¤Ë¡¢PHP¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¢¤é¤æ¤ë¥¦¥§¥Ö¥µ¡¼¥Ð¤Çưºî¤·¤Þ¤¹¡£
                2. -
                3. ²¼µ­¤ÎÀßÄê¤ò¹Ô¤Ã¤¿PHP(¥Ð¡¼¥¸¥ç¥ó4.1.0 °Ê¾å): -
                    -
                  • GD¥é¥¤¥Ö¥é¥ê »ÈÍѲġ¢JPG¤ª¤è¤ÓPNG¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¥µ¥Ý¡¼¥È
                  • -
                  • zlib¥é¥¤¥Ö¥é¥ê »ÈÍÑ²Ä (Windows¤Ç¥Ð¥Ã¥¯¥¢¥Ã¥×/¥ê¥¹¥È¥¢µ¡Ç½¤ò»ÈÍѤ¹¤ë¾ì¹ç)
                  • -
                  • ¥»¥Ã¥·¥ç¥ó¥µ¥Ý¡¼¥È »ÈÍѲÄ
                  • -
                  • ¥Õ¥¡¥¤¥ë¥¢¥Ã¥×¥í¡¼¥É »ÈÍѲÄ
                  • -
                  • ¥»¡¼¥Õ¥â¡¼¥É »ÈÍѤ·¤Ê¤¤ (¥»¡¼¥Õ¥â¡¼¥É¤Î»ÈÍѤˤè¤ë¥È¥é¥Ö¥ë¤Ë´Ø¤·¤Æ¤Ïmoodle.org¤Î¥Õ¥©¡¼¥é¥à¤ò¤´Í÷¤¯¤À¤µ¤¤¡£)
                  • -
                  -
                4. -
                5. ưºî²Äǽ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹¥µ¡¼¥Ð: Moodle 1.1¤Ï¡¢MySQL ¤Þ¤¿¤Ï PostgreSQL¤ò´°Á´¤Ë¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤é¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¥µ¡¼¥Ð¤Î»ÈÍѤò¿ä¾©¤·¤Þ¤¹¡£¤Þ¤¿¡¢¾­ÍèŪ¤Ê¥ê¥ê¡¼¥¹¤Ç¤Ï¤½¤Î¾¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤â´°Á´¤Ë¥µ¥Ý¡¼¥È¤µ¤ì¤ëͽÄê¤Ç¤¹¡£
                6. -
                -

                ¤Û¤È¤ó¤É¤Î¥¦¥§¥Ö¥Û¥¹¥È²ñ¼Ò¤Ç¤Ï¡¢¤³¤ì¤é¤Îµ¡Ç½¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£¤â¤·¡¢¤¢¤Ê¤¿¤¬·ÀÌó¤·¤¿²ñ¼Ò¤¬¡¢¤³¤ì¤é¤Îµ¡Ç½¤ò¥µ¥Ý¡¼¥È¤·¤Ê¤¤¿ô¾¯¤Ê¤¤²ñ¼Ò¤Ç¤¢¤ë¾ì¹ç¡¢²¿¸Î¤½¤¦¤Ê¤Î¤«¿Ò¤Í¤Æ¡¢Â¾¤Î²ñ¼Ò¤È·ÀÌ󤹤뤳¤È¤ò¹Íθ¤·¤Æ¤¯¤À¤µ¤¤¡£

                -

                ¼«Ê¬¤Î¥³¥ó¥Ô¥å¡¼¥¿¤ÇMoodle¤òư¤«¤·¤¿¤¯¤Æ¤â¡¢¾¯¡¹¼è¤êÉÕ¤­¤Ë¤¯¤¤¤È¹Í¤¨¤Æ¤¤¤ëÊý¤Ï¡¢»ä¤¿¤Á¤Î¥¬¥¤¥ÉApache¡¢MySQL¡¢PHP¤Î¥¤¥ó¥¹¥È¡¼¥ë¤ò¤´Í÷¤¯¤À¤µ¤¤¡£¿Íµ¤¤Î¤¢¤ë¤Û¤È¤ó¤É¤Î¥×¥é¥Ã¥È¡¼¥Õ¥©¡¼¥à¤Ë¡¢¤³¤ì¤é¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤¿¤á¤Î¥¹¥Æ¥Ã¥×¥Ð¥¤¥¹¥Æ¥Ã¥×¤ÎÊýË¡¤¬µ­¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

                -

                 

                -
                -

                2. Download

                + +

                 

                + +

                2. ¥À¥¦¥ó¥í¡¼¥É

                +
                -

                Moodle¤òÆþ¼ê¤¹¤ë¤Ë¤Ï°µ½Ì¥Ñ¥Ã¥±¡¼¥¸¤ò¥À¥¦¥ó¥í¡¼¥É¤¹¤ëÊýË¡¤ÈCVS·Ðͳ¤ÇÆþ¼ê¤¹¤ëÊýË¡¤Î2¤Ä¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Ë´Ø¤¹¤ëÀâÌÀ¤Ï¥À¥¦¥ó¥í¡¼¥É¥Ú¡¼¥¸http://moodle.org/download/¤Ë·ÇºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

                -

                ¥Ñ¥Ã¥±¡¼¥¸¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ²òÅà¡¢¤Þ¤¿¤ÏCVS·Ðͳ¤Ç¥Á¥§¥Ã¥¯¥¢¥¦¥È¤·¤¿¸å¡¢¡Ömoodle¡×¤È¤¤¤¦Ì¾¾Î¤Î¿¤¯¤Î¥Õ¥¡¥¤¥ë¤È¥Õ¥©¥ë¥À¤¬´Þ¤Þ¤ì¤¿¥Õ¥©¥ë¥À¤¬¸½¤ì¤Þ¤¹¡£

                -

                moodle¥Õ¥©¥ë¥À¤ò´Ý¤´¤È¥¦¥§¥Ö¥µ¡¼¥Ð¤Î¥É¥­¥å¥á¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢http://yourwebserver.com/moodle¤È¤¤¤¦¤è¤¦¤ÊÇÛÃ֤ˤʤê¤Þ¤¹¡£¤Þ¤¿¤Ï¡¢moodle¥Õ¥©¥ë¥ÀÆâ¤ÎÁ´¥Õ¥©¥ë¥À¡¦¥Õ¥¡¥¤¥ë¤ò¥¦¥§¥Ö¥µ¡¼¥Ð¤Î¥É¥­¥å¥á¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ËľÀÜÆþ¤ì¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢¥·¥ó¥×¥ë¤Ëhttp://yourwebserver.com¤È¤¤¤¦¤è¤¦¤ÊÇÛÃ֤ˤʤê¤Þ¤¹¡£

                + +

                Moodle¤òÆþ¼ê¤¹¤ë¤Ë¤Ï°µ½Ì¥Ñ¥Ã¥±¡¼¥¸¤ò¥À¥¦¥ó¥í¡¼¥É¤¹¤ëÊýË¡¤ÈCVS·Ðͳ¤ÇÆþ¼ê¤¹¤ëÊýË¡¤ÎÆó¤Ä¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤é¤Ë´Ø¤¹¤ëÀâÌÀ¤Ï¥À¥¦¥ó¥í¡¼¥É¥Ú¡¼¥¸http://moodle.com/¤Ë·ÇºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

                + +

                ¥Ñ¥Ã¥±¡¼¥¸¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ²òÅà¡¢¤Þ¤¿¤ÏCVS·Ðͳ¤Ç¥Á¥§¥Ã¥¯¥¢¥¦¥È¤·¤¿¸å¤Ë¿¤¯¤Î¥Õ¥¡¥¤¥ë¤È¥Õ¥©¥ë¥À¤¬´Þ¤Þ¤ì¤¿"moodle"¤È¤¤¤¦Ì¾¾Î¤Î¥Õ¥©¥ë¥À¤¬¸½¤ì¤Þ¤¹¡£

                + +

                moodle¥Õ¥©¥ë¥À¤ò´Ý¤´¤È¥¦¥§¥Ö¥µ¡¼¥Ð¤Î¥É¥­¥å¥á¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ËÆþ¤ì¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ïhttp://yourwebserver.com/moodle¤È¤¤¤¦¤è¤¦¤ÊÇÛÃ֤ˤʤê¤Þ¤¹¡£¤Þ¤¿¤Ïmoodle¥Õ¥©¥ë¥ÀÆâ¤ÎÁ´¥Õ¥©¥ë¥À¡¦¥Õ¥¡¥¤¥ë¤ò¥¦¥§¥Ö¥µ¡¼¥Ð¤Î¥É¥­¥å¥á¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ËľÀÜÆþ¤ì¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ïhttp://yourwebserver.com¤È¤¤¤¦¤è¤¦¤ÊÇÛÃ֤ˤʤê¤Þ¤¹¡£

                +
                -

                 

                -

                3. ¥µ¥¤¥È¹½À®

                -
                + +

                 

                + +

                3. ¥µ¥¤¥È¹½À®

                + +
                +

                ¤è¤ê¿¼¤¤Íý²ò¤Î¤¿¤á¤Î¡¢Moodle¥Õ¥©¥ë¥À¹½À®¤Ë´Ø¤¹¤ë³µÍ×ÀâÌÀ¤Ç¤¹:

                +
                -

                - - - - - - - - -
                config-dist.php- - ¤³¤Î¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼¤·¤Æconfig.php¤È¤¤¤¦Ì¾¾Î¤ÇÊݸ¤·¤Æ¤¯¤À¤µ¤¤¡£ - ¥¤¥ó¥¹¥È¡¼¥ë»þ¤ËÊÔ½¸¤¹¤ëɬÍפΤ¢¤ëÍ£°ì¤Î¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ -
                version.php- - Moodle¥³¡¼¥É¤Î¸½¥Ð¡¼¥¸¥ç¥ó¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ -
                index.php- - Moodle¥µ¥¤¥È¤Îɽ»æ¤Ç¤¹¡£ -
                -

                + +

                config.php - ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤¿¤á¤ËÊÔ½¸¤¹¤ëɬÍפΤ¢¤ëÍ£°ì¤Î¥Õ¥¡¥¤¥ë¤Ç¤¹¡£
                + version.php - Moodle¥³¡¼¥É¤Î¸½¥Ð¡¼¥¸¥ç¥ó¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£
                + index.php - Moodle¥µ¥¤¥È¤Îɽ»æ¤Ç¤¹¡£

                • admin/ - Á´¥µ¡¼¥Ð¤ò´ÉÍý¤¹¤ë¥³¡¼¥É¤Ç¤¹¡£
                • auth/ - ¥æ¡¼¥¶Ç§¾Ú¤Î¤¿¤á¤Î¥×¥é¥°¥¤¥ó¥â¥¸¥å¡¼¥ë¤Ç¤¹¡£
                • @@ -87,207 +97,377 @@
                • lib/ - Moodle¥³¡¼¥É¤Î¥³¡¼¥É¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡£
                • login/ - ¥í¥°¥¤¥ó¤È¥¢¥«¥¦¥ó¥ÈºîÀ®¤ò¹Ô¤¦¤¿¤á¤Î¥³¡¼¥É¤Ç¤¹¡£
                • mod/ - Moodle¥³¡¼¥¹¥â¥¸¥å¡¼¥ë¤ÎÁ´¥³¡¼¥É¤Ç¤¹¡£
                • -
                • pix/ - Moodle¥µ¥¤¥È¤Ë»È¤ï¤ì¤ë°ìÈÌŪ¤Ê¥¤¥á¡¼¥¸¥Õ¥¡¥¤¥ë¤Ç¤¹¡£
                • +
                • pix/ - Moodle¥µ¥¤¥È¤Ë»È¤ï¤ì¤ë°ìÈÌŪ¤Ê²èÁü¥Õ¥¡¥¤¥ë¤Ç¤¹¡£
                • theme/ - Moodle¥µ¥¤¥È¤Î¥Ç¥¶¥¤¥ó¤òÊѹ¹¤¹¤ë¤¿¤á¤Î¥Æ¡¼¥Þ/¥¹¥­¥ó¤Ç¤¹¡£
                • user/ - ¥æ¡¼¥¶¤òɽ¼¨¡¦´ÉÍý¤¹¤ë¤¿¤á¤Î¥³¡¼¥É¤Ç¤¹¡£
                +

                 

                + - -

                4. ¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥ê¤ÎºîÀ®

                + + + +

                4. ¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥ê¤ÎºîÀ®

                +
                -

                Moodle¤Ç¤Ï¡¢¥³¡¼¥¹Ê¸½ñ¤ä¥æ¡¼¥¶¼Ì¿¿¤Î¤è¤¦¤Ê¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤òÊݸ¤¹¤ë¤¿¤á¤Î¥¹¥Ú¡¼¥¹¤ò¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤ÎÃæ¤ËɬÍפȤ·¤Þ¤¹¡£

                -

                ¤³¤ÎÌÜŪ¤Î¤¿¤á¤Ë¡¢¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£¥»¥­¥å¥ê¥Æ¥£¾å¤ÎÍýͳ¤Ç¡¢¥¦¥§¥Ö·Ðͳ¤Î¥¢¥¯¥»¥¹¤¬¤Ç¤­¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£ºÇ¤â´Êñ¤ÊÊýË¡¤Ï¥¦¥§¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Î³°¤Ë¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÃÖ¤¯¤³¤È¤Ç¤¹¡£¤Þ¤¿¤Ï¡¢¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë²¼µ­¤Î¹Ô¤ò´Þ¤à.htaccess¤È¸Æ¤Ð¤ì¤ë¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤Ç¡¢¥Ç¥£¥ì¥¯¥È¥ê¤òÊݸ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -

                - -
                deny from all
                -
                -

                Moodle¤¬¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë¤ò¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë½ñ¤­¹þ¤á¤ë¤è¤¦¤Ë¡¢¥¦¥§¥Ö¥µ¡¼¥Ð¥½¥Õ¥È¥¦¥§¥¢(Îã Apache)¤¬¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë½ñ¤­¹þ¤àµö²Ä¤ò¹Ô¤Ã¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£Unix¥Þ¥·¥ó¤Ç¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ª¡¼¥Ê¡¼¤¬"nobody" ¤Þ¤¿¤Ï "apache"¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£

                -

                ¿¤¯¤Î¶¦Í­¥µ¡¼¥Ð¡¼¤Ç¤Ï¡¢Â¾¤Î¸ÜµÒ¤¬¤¢¤Ê¤¿¤Î¥Õ¥¡¥¤¥ë¤ò±ÜÍ÷¤·¤¿¤êÊѹ¹¤¹¤ë¤Î¤òÈò¤±¤ë¤¿¤á¤Ë¡¢¤¢¤Ê¤¿¤¬Â°¤·¤Æ¤¤¤ë¡Ö¥°¥ë¡¼¥×¡×¤Î¥¢¥¯¥»¥¹¤òÀ©¸Â¤¹¤ëɬÍפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£¤·¤«¤·¡¢¥¦¥§¥Ö¥µ¡¼¥Ð¤¬¤¢¤Ê¤¿¤Î¥Õ¥¡¥¤¥ë¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤ë¤è¤¦¤ËÁ´¤Æ¤Î¿Í¤Ë´°Á´¤Êread/write¥¢¥¯¥»¥¹¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤â¤·¡¢³Î¼Â¤Ë¤³¤ÎÀßÄê¤ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï¡¢¤¢¤Ê¤¿¤Î¥µ¡¼¥Ð¤Î´ÉÍý¼Ô¤Ë¤ªÌä¹ç¤ï¤»¤¯¤À¤µ¤¤¡£

                -
                -

                 

                -

                5. ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºîÀ®

                -
                -

                ¶õ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹(Îã Moodle)¤ª¤è¤ÓÆÃÊ̤ʥ桼¥¶(Îã moodleuser)¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥æ¡¼¥¶¤ÏºîÀ®¤·¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¤Î¤ß¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î¥æ¡¼¥¶¤Ç¤¹¡£root¥æ¡¼¥¶¤â»È¤¨¤Þ¤¹¤¬¥·¥¹¥Æ¥à¤Ë¤È¤Ã¤Æ¤ª´«¤á¤Ç¤­¤ë¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤â¤·¥Ï¥Ã¥«¡¼¤¬¥Ñ¥¹¥ï¡¼¥É¤òȯ¸«¤·¤¿¤é¡¢1¤Ä¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤À¤±¤Ç¤Ï¤Ê¤¯Á´¤Æ¤Î¥Ç¡¼¥¿¥·¥¹¥Æ¥à¤¬´í¸±¤Ë»¯¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

                -

                MySQL¤Î¥³¥Þ¥ó¥É¥é¥¤¥óÎã:

                -
                -   # mysql -u root -p
                -   > CREATE DATABASE moodle; 
                -   > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.* 
                -           TO moodleuser@localhost IDENTIFIED BY 'yourpassword'; 
                -   > quit 
                -   # mysqladmin -p reload
                -
                -

                PostgreSQL¤Î¥³¥Þ¥ó¥É¥é¥¤¥óÎã:

                -
                -   # su - postgres
                -   > psql -c "create user moodleuser createdb;" template1
                -   > psql -c "create database moodle;" -U moodleuser template1
                -   > psql -c "alter user moodleuser nocreatedb;" template1
                -
                -

                (MySQL¤Î¾ì¹ç¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¤Î¤¿¤á¤ËphpMyAdmin¤ò»È¤ï¤ì¤ë¤³¤È¤ò¶¯¤¯¤ª´«¤á¤·¤Þ¤¹¡£)

                -

                ¥Ð¡¼¥¸¥ç¥ó 1.0.8¸½ºß¡¢Moodle¤Ï¥Æ¡¼¥Ö¥ëÀÜÆ¬¼­¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢°ÂÁ´¤Ë¾¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥Æ¡¼¥Ö¥ë¤È¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¶¦Í­¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                -
                -

                 

                -

                6. ¥¦¥§¥Ö¥µ¡¼¥ÐÀßÄê¤Î³Îǧ

                -
                -

                ºÇ½é¤Ë¡¢¤¢¤Ê¤¿¤Î¥¦¥§¥Ö¥µ¡¼¥Ð¤Çindex.php¤¬¥Ç¥Õ¥©¥ë¥È¥Ú¡¼¥¸¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£(¤½¤Î¾¤Ë¶²¤é¤¯index.html¡¢default.htmÅù¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤³¤È¤Ç¤·¤ç¤¦)

                -

                Apache¤Ç¤Ïhttpd.conf¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÎDirectoryIndex¥Ñ¥é¥á¡¼¥¿¤ÇÀßÄꤷ¤Þ¤¹¡£»ä¤ÎÀßÄê¤ÏÄ̾ﲼµ­¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹:

                -
                -
                DirectoryIndex index.php index.html index.htm 
                -
                -

                index.php¤¬¥ê¥¹¥È¤ÎÃæ¤Ë¤¢¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£(¸úΨ¤ò¹Í¤¨¤Þ¤¹¤È¥ê¥¹¥È¤ÎºÇ½é¤Ë ¤¢¤Ã¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦)

                -

                2ÈÖÌܤˡ¢¤¢¤Ê¤¿¤¬Apache2¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ç¤·¤¿¤é¡¢AcceptPathInfoÊÑ¿ô¤òÍ­¸ú¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎÀßÄê¤Ï¡¢¥¹¥¯¥ê¥×¥È¤¬http://server/file.php/arg1/arg2¤Î¤è¤¦¤Ê»²¾È¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£¤³¤ÎÀßÄê¤Ï¡¢¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤ËÂФ·¤ÆÁêÂÐ¥ê¥ó¥¯¤Î»ÈÍѤòµö²Ä¤·¡¢Moodle¥¦¥§¥Ö¥µ¥¤¥È¤òÍøÍѤ¹¤ë¥æ¡¼¥¶¤Ë¥ì¥¹¥Ý¥ó¥¹¸þ¾å¤ò¤â¤¿¤é¤¹¤¿¤á¤ËɬÍפǤ¹¡£²¼µ­¤Î¹Ô¤òhttpd.conf¥Õ¥¡¥¤¥ë¤ËÄɲ乤뤳¤È¤Ç¡¢¤³¤ÎÀßÄê¤òÍ­¸ú¤Ë¤Ç¤­¤Þ¤¹¡£

                -
                -
                AcceptPathInfo on 
                -
                -

                3ÈÖÌܤˡ¢Moodle¤¬Æ°ºî¤¹¤ë¤¿¤á¤Ë¡¢Â¿¤¯¤ÎPHP¤ÎÀßÄê¤ò¥¢¥¯¥Æ¥£¥Ö¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Â¿¤¯¤Î¥µ¡¼¥Ð¤Ç¤Ï²¼µ­¤ÎÀßÄê¤Ï´û¤Ë¥Ç¥Õ¥©¥ë¥È¥»¥Ã¥Æ¥£¥ó¥°¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¡¢¤¤¤¯¤Ä¤«¤ÎPHP¥µ¡¼¥Ð(¤½¤·¤Æ¡¢ºÇ¿·¤ÎPHP¥Ð¡¼¥¸¥ç¥ó)¤Ç¤ÏÀßÄêÆâÍÆ¤¬°Û¤Ê¤Ã¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£¤³¤ì¤é¤ÎÀßÄê¤ÏPHP¤ÎÀßÄê¥Õ¥¡¥¤¥ë(Ä̾ï¤Ïphp.ini¤È¸Æ¤Ð¤ì¤Þ¤¹)¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹:

                + +

                Moodle¤Ç¤Ï¡¢¥³¡¼¥¹Ê¸½ñ¤ä¥æ¡¼¥¶¼Ì¿¿¤Î¤è¤¦¤Ê¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤òÊݸ¤¹¤ë¤¿¤á¤Î¥¹¥Ú¡¼¥¹¤ò¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤ÎÃæ¤ËɬÍפȤ·¤Þ¤¹¡£

                + +

                ¤³¤ÎÌÜŪ¤Î¤¿¤á¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£¥»¥­¥å¥ê¥Æ¥£¾å¤ÎÍýͳ¤Ç¡¢¥¦¥§¥Ö·Ðͳ¤Î¥¢¥¯¥»¥¹¤¬½ÐÍè¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£ºÇ¤â´Êñ¤ÊÊýË¡¤Ï¥¦¥§¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Î³°¤Ë¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÃÖ¤¯¤³¤È¤Ç¤¹¡£¤Þ¤¿¤Ï¡¢¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë²¼µ­¤Î¹Ô¤ò´Þ¤à.htaccess¤È¸Æ¤Ð¤ì¤ë¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤Ç¥Ç¥£¥ì¥¯¥È¥ê¤òÊݸ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +

                -
                magic_quotes_gpc = 1    (preferred but not necessary)
                -magic_quotes_runtime = 0    (necessary)
                -file_uploads = 1
                -session.auto_start = 0
                -session.bug_compat_warn = 0
                -
                +
                deny from all
                +
                -

                ¤¢¤Ê¤¿¤¬¥µ¡¼¥ÐÆâ¤Îhttpd.conf¤äphp.ini¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¾ì¹ç¤ä¡¢Â¾¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç°Û¤Ê¤ëÀßÄê¤ò¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢Á´¤Æ¤Î¥Ç¥Õ¥©¥ë¥È¥»¥Ã¥Æ¥£¥ó¥°¤ò¾å½ñ¤­¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -

                ¤³¤ì¤ò¹Ô¤¦¤Ë¤Ï¡¢²¼µ­¤ÎÀßÄê¤òÄêµÁ¤·¤¿.htaccess¤È¤¤¤¦Ì¾¾Î¤Î¥Õ¥¡¥¤¥ë¤òMoodle¤Î¥á¥¤¥ó¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢ÀßÄê¤Î¾å½ñ¤­¤¬µö²Ä¤µ¤ì¤¿Apache¥µ¡¼¥Ð¤Î¤ß¤Çưºî¤·¤Þ¤¹¡£ - + +

                Moodle¤¬¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë¤ò¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë½ñ¤­¹þ¤á¤ë¤è¤¦¤Ë¡¢¥¦¥§¥Ö¥µ¡¼¥Ð¥½¥Õ¥È¥¦¥§¥¢(Îã Apache)¤¬¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë½ñ¤­¹þ¤àµö²Ä¤ò¹Ô¤Ã¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£Unix¥Þ¥·¥ó¤Ç¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ª¡¼¥Ê¡¼¤¬"nobody" ¤Þ¤¿¤Ï "apache"¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£

                + +

                ¿¤¯¤Î¶¦Í­¥µ¡¼¥Ð¡¼¤Ç¤Ï¡¢Â¾¤Î¸ÜµÒ¤¬¤¢¤Ê¤¿¤Î¥Õ¥¡¥¤¥ë¤ò±ÜÍ÷¤·¤¿¤êÊѹ¹¤¹¤ë¤Î¤òÈò¤±¤ë¤¿¤á¤Ë¡¢¤¢¤Ê¤¿¤¬Â°¤·¤Æ¤¤¤ë¡Ö¥°¥ë¡¼¥×¡×¤Î¥¢¥¯¥»¥¹¤òÀ©¸Â¤¹¤ëɬÍפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£¤·¤«¤·¡¢¥¦¥§¥Ö¥µ¡¼¥Ð¤¬¤¢¤Ê¤¿¤Î¥Õ¥¡¥¤¥ë¤Ë¥¢¥¯¥»¥¹½ÐÍè¤ë¤è¤¦¤ËÁ´¤Æ¤Î¿Í¤Ë¥Õ¥ëread/write¥¢¥¯¥»¥¹¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤â¤·³Î¼Â¤Ë¤³¤ÎÀßÄê¤ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Ê¤¤¾ì¹ç¤Ï¡¢¤¢¤Ê¤¿¤Î¥µ¡¼¥Ð¤Î´ÉÍý¼Ô¤Ë¤ªÌä¹ç¤ï¤»¤¯¤À¤µ¤¤¡£

                + +
                + +

                 

                + +

                5. ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºîÀ®

                + +
                + +

                ¶õ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹(Îã Moodle)µÚ¤ÓÆÃÊ̤ʥ桼¥¶(Îã moodleuser)¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥æ¡¼¥¶¤ÏºîÀ®¤·¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¤Î¤ß¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î¥æ¡¼¥¶¤Ç¤¹¡£root¥æ¡¼¥¶¤â»È¤¨¤Þ¤¹¤¬¥·¥¹¥Æ¥à¤Ë¤È¤Ã¤Æ¤ª´«¤á¤Ç¤­¤ë¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤â¤·¥Ï¥Ã¥«¡¼¤¬¥Ñ¥¹¥ï¡¼¥É¤òȯ¸«¤·¤¿¤é¡¢1¤Ä¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤À¤±¤Ç¤Ï¤Ê¤¯Á´¤Æ¤Î¥Ç¡¼¥¿¥·¥¹¥Æ¥à¤¬´í¸±¤Ë»¯¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

                + +

                MySQL¤Î¥³¥Þ¥ó¥É¥é¥¤¥óÎã:

                + +
                +
                +   # mysql -u root -p
                +
                +   > CREATE DATABASE moodle; 
                +
                +   > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.* 
                +
                +           TO moodleuser@localhost IDENTIFIED BY 'yourpassword'; 
                +
                +   > quit 
                +
                +   # mysqladmin -p reload
                +
                +
                + +

                PostgreSQL¤Î¥³¥Þ¥ó¥É¥é¥¤¥óÎã:

                + +
                +
                +   # su - postgres
                +
                +   > psql -c "create user moodleuser createdb;" template1
                +
                +   > psql -c "create database moodle;" -U moodleuser template1
                +
                +   > psql -c "alter user moodleuser nocreatedb;" template1
                +
                +
                + +

                (MySQL¤Î¾ì¹ç¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¤Î¤¿¤á¤ËphpMyAdmin + ¤ò»È¤ï¤ì¤ë¤³¤È¤ò¶¯¤¯¤ª´«¤á¤·¤Þ¤¹¡£)

                + +

                ¥Ð¡¼¥¸¥ç¥ó 1.0.8¸½ºß¡¢Moodle¤Ï¥Æ¡¼¥Ö¥ë¥×¥ê¥Õ¥£¥Ã¥¯¥¹¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Â¾¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥Æ¡¼¥Ö¥ë¤È¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò°ÂÁ´¤Ë¶¦Í­¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                + +
                + +

                 

                + +

                6. ¥¦¥§¥Ö¥µ¡¼¥ÐÀßÄê¤Î³Îǧ

                + +
                + +

                ºÇ½é¤Ë¡¢¤¢¤Ê¤¿¤Î¥¦¥§¥Ö¥µ¡¼¥Ð¤Çindex.php¤¬¥Ç¥Õ¥©¥ë¥È¥Ú¡¼¥¸¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£(¤½¤Î¾¤Ë¶²¤é¤¯index.html¡¢default.htmÅù¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤³¤È¤Ç¤·¤ç¤¦)

                + +

                Apache¤Ç¤Ïhttpd.conf¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÎDirectoryIndex¥Ñ¥é¥á¡¼¥¿¤ÇÀßÄꤷ¤Þ¤¹¡£»ä¤Î¤ÏÄ̾盧¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹:

                +
                -
                +
                +    
                DirectoryIndex index.php index.html index.htm 
                + +
                + +

                index.php¤¬¥ê¥¹¥È¤ÎÃæ¤Ë¤¢¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£(¸úΨ¤ò¹Í¤¨¤Þ¤¹¤È¥ê¥¹¥È¤ÎºÇ½é¤Ë ¤¢¤Ã¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦)

                + +

                2ÈÖÌܤˡ¢¤¢¤Ê¤¿¤¬Apache2¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ç¤·¤¿¤é¡¢AcceptPathInfoÊÑ¿ô¤òÍ­¸ú¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎÀßÄê¤Ï¡¢¥¹¥¯¥ê¥×¥È¤¬http://server/file.php/arg1/arg2¤Î¤è¤¦¤Ê»²¾È¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£¤³¤ÎÀßÄê¤Ï¡¢¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤ËÂФ·¤ÆÁêÂÐŪ¥ê¥ó¥¯¤Î»ÈÍѤòµö²Ä¤·¡¢Moodle¥¦¥§¥Ö¥µ¥¤¥È¤òÍøÍѤ¹¤ë¥æ¡¼¥¶¤Ë¥ì¥¹¥Ý¥ó¥¹¸þ¾å¤ò¤â¤¿¤é¤¹¤¿¤á¤ËɬÍפǤ¹¡£²¼µ­¤Î¹Ô¤òhttpd.conf¥Õ¥¡¥¤¥ë¤ËÄɲ乤뤳¤È¤Ç¡¢¤³¤ÎÀßÄê¤òÍ­¸ú¤Ë½ÐÍè¤Þ¤¹¡£

                + +
                + +
                magic_quotes_gpc = On
                +
                +magic_quotes_runtime = Off
                +
                +file_uploads = On
                +
                +short_open_tag = On
                +
                +session.auto_start = Off
                +
                +session.bug_compat_warn = Off
                +
                +
                + +
                + +

                3ÈÖÌܤˡ¢Moodle¤¬Æ°ºî¤¹¤ë¤¿¤á¤Ë¡¢Â¿¤¯¤ÎPHP¤ÎÀßÄê¤ò¥¢¥¯¥Æ¥£¥Ö¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Â¿¤¯¤Î¥µ¡¼¥Ð¤Ç¤Ï²¼µ­¤ÎÀßÄê¤Ï´û¤Ë¥Ç¥Õ¥©¥ë¥È¥»¥Ã¥Æ¥£¥ó¥°¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¡¢¤¤¤¯¤Ä¤«¤ÎPHP¥µ¡¼¥Ð(¤½¤·¤Æ¡¢ºÇ¿·¤ÎPHP¥Ð¡¼¥¸¥ç¥ó)¤Ç¤ÏÀßÄêÆâÍÆ¤¬°Û¤Ê¤Ã¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£¤³¤ì¤é¤ÎÀßÄê¤ÏPHP¤ÎÀßÄê¥Õ¥¡¥¤¥ë(Ä̾ï¤Ïphp.ini¤È¸Æ¤Ð¤ì¤Þ¤¹)¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹:

                + +
                + +
                file_uploads = 1
                +
                +magic_quotes_gpc = 1
                +
                +short_open_tag = 1
                +
                +session.auto_start = 0
                +
                +
                + +
                + +

                ¤¢¤Ê¤¿¤¬¥µ¡¼¥ÐÆâ¤Îhttpd.conf¤äphp.ini¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¾ì¹ç¤ä¡¢Â¾¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç°Û¤Ê¤ëÀßÄê¤ò¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢Á´¤Æ¤Î¥Ç¥Õ¥©¥ë¥È¥»¥Ã¥Æ¥£¥ó¥°¤ò¾å½ñ¤­¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ + +

                ¤³¤ì¤ò¹Ô¤¦¤Ë¤Ï¡¢²¼µ­¤ÎÀßÄê¤òÄêµÁ¤·¤¿.htaccess¤È¤¤¤¦Ì¾¾Î¤Î¥Õ¥¡¥¤¥ë¤òMoodle¤Î¥á¥¤¥ó¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¾å½ñ¤­¤¬µö²Ä¤µ¤ì¤¿Apache¥µ¡¼¥Ð¤Î¤ß¤Çưºî¤·¤Þ¤¹¡£ + +

                +
                 DirectoryIndex index.php index.html index.htm
                 
                +
                +
                 <IfDefine APACHE2>
                +
                      AcceptPathInfo on
                +
                 </IfDefine>
                 
                -php_flag magic_quotes_gpc 1
                -php_flag magic_quotes_runtime 0
                -php_flag file_uploads 1
                -php_flag session.auto_start 0
                -php_flag session.bug_compat_warn 0
                -
                -

                ¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë¤ÎºÇÂ祵¥¤¥º¤ò²¼µ­¤Î¤è¤¦¤ËÀßÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹:

                - -
                -
                -LimitRequestBody 0
                -php_value upload_max_filesize 2M
                -php_value post_max_size 2M
                -     
                -
                -

                ºÇ¤â´Êñ¤ÊÊýË¡¤Ïlib/htaccess¤è¤ê¥µ¥ó¥×¥ë¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼¤·¤Æ¤¢¤Ê¤¿¤ÎÌÜŪ¤ËŬ¤¦¤è¤¦¤ËÊÔ½¸¤¹¤ëÊýË¡¤Ç¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¤è¤ê¾Ü¤·¤¤ÀâÌÀ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£Unix¥·¥§¥ë¤ÎÎã: -

                -
                cp lib/htaccess .htaccess
                -
                -
                -

                 

                -

                7. config.php¤ÎÊÔ½¸

                -
                -

                ¤³¤ì¤Ç¤¢¤Ê¤¿¤ÏÀßÄê¥Õ¥¡¥¤¥ë¡¢config.php¤ò¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¤ÇÊÔ½¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤ÏMoodleÆâ¤ÎÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡£

                -

                ¤Þ¤ººÇ½é¤Ëconfig-dist.php¤ò¥³¥Ô¡¼¤·¤Æconfig.php¤È¤¤¤¦Ì¾¾Î¤Ë¥ê¥Í¡¼¥à¤·¤Æ¤¯¤À¤µ¤¤¡£¸å¤ÇMoodle¤ò¥¢¥Ã¥×¥°¥ì¡¼¥É¤·¤¿»þ¤Ëconfig.php¤¬¾å½ñ¤­¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¡¢¤³¤Î¤è¤¦¤Êºî¶È¤ò¹Ô¤¤¤Þ¤¹¡£

                -

                ¤¢¤Ê¤¿¤¬ÄêµÁ¤·¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¾ÜºÙ(¥Æ¡¼¥Ö¥ë¥×¥ê¥Õ¥£¥Ã¥¯¥¹¤ò´Þ¤à - PostgreSQL¤Ç¤Ïɬ¿Ü¤Ç¤¹)¤òÌÀ¼¨¤¹¤ë¤¿¤á¤Ëconfig.php¤òÊÔ½¸¤·¤Æ¤¯¤À¤µ¤¤¡£Æ±Íͤ˥µ¥¤¥È¤Î¥¢¥É¥ì¥¹¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¢¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥ê¤òÌÀ¼¨¤·¤Þ¤¹¡£ ¤³¤ÎÄêµÁ¥Õ¥¡¥¤¥ë¤Ë¤Ï¾ÜºÙ¤ÊÀâÌÀʸ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£

                -

                ¤³¤Î¥¤¥ó¥¹¥È¡¼¥ëʸ½ñ¤Î»Ä¤ê¤ÎÉôʬ¤Ç¤Ï¡¢¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤¬²¼µ­¤Ë°ÌÃÖ¤·¤Æ¤¤¤ë¤³¤È¤òÁ°Äó¤ËÀâÌÀ¤·¤Þ¤¹: http://example.com/moodle

                -
                -

                 

                -

                8. ´ÉÍý¥Ú¡¼¥¸¤Ë¿Ê¤à

                -
                -

                ´ÉÍý¥Ú¡¼¥¸¤Ïhttp://example.com/moodle/admin¤Çưºî¤·¤Æ¤¤¤ë¤³¤È¤Ç¤·¤ç¤¦¡£¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤Îɽ»æ¤Ë¥¢¥¯¥»¥¹¤¹¤ì¤Ð¼«Æ°Åª¤Ë´ÉÍý¥Ú¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¤¢¤Ê¤¿¤¬ºÇ½é¤Ë´ÉÍý¥Ú¡¼¥¸¤Ë¥¢¥¯¥»¥¹¤·¤¿»þ¤Ï¡¢¥»¥Ã¥È¥¢¥Ã¥×¤ò³¤±¤ë¤¿¤á¤ËƱ°Õ¤¹¤ëɬÍפ¬¤¢¤ëGPLƱ°Õ½ñ¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

                -

                (Ʊ»þ¤ËMoodle¤«¤é¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤Ë¤¤¤¯¤Ä¤«¤Îcookie¤¬ÀßÄꤵ¤ì¤Þ¤¹¡£¤â¤·¡¢¥Ö¥é¥¦¥¶¤ÎÀßÄê¤Çcookie¤ò¼õ¤±Æþ¤ì¤ë¤«Èݤ«ÀßÄê¤Ç¤­¤ë¤è¤¦¤Ç¤·¤¿¤éMoodle¤Îcookie¤ò¼õ¤±Æþ¤ì¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¤è¤¦¤Ë¤·¤Ê¤¤¾ì¹ç¡¢Moodle¤ÏÀµ¾ï¤Ëưºî¤·¤Þ¤»¤ó¡£) -

                Moodle¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥»¥Ã¥Æ¥£¥ó¥°¤ò³«»Ï¤·¤Æ¡¢¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤¿¤á¤Î¥Æ¡¼¥Ö¥ë¤òºîÀ®¤·¤Þ¤¹¡£ºÇ½é¤Ë¥á¥¤¥ó¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¥Æ¡¼¥Ö¥ë¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£²¼µ­¤Î¤è¤¦¤ÊSQLʸ¤Î¼¡¤Ë¥¹¥Æ¡¼¥¿¥¹¥á¥Ã¥»¡¼¥¸(Îп§¤Þ¤¿¤ÏÀÖ¿§)¤¬É½¼¨¤µ¤ì¤Þ¤¹:

                -
                -

                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

                -

                SUCCESS

                -

                ...and so on, followed by: Main databases set up - successfully.

                -
                -

                ¤â¤·¡¢¤³¤Î¤è¤¦¤Êɽ¼¨¤¬¤Ê¤µ¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Þ¤¿¤Ï¡¢¤¢¤Ê¤¿¤¬config.php¤ÇÄêµÁ¤·¤¿ÀßÄê¤ËÌäÂ꤬¤¢¤ë¤Ï¤º¤Ç¤¹¡£PHP¤¬À©¸Â¤µ¤ì¤¿¡Ö¥»¡¼¥Õ¥â¡¼¥É¡×(¾¦ÍÑ¥¦¥§¥Ö¥Û¥¹¥È¤Ç¤Ï»þ¡¹¥»¡¼¥Õ¥â¡¼¥É¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹)¤ËÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£PHP¤ÎÊÑ¿ô¤ò<? phpinfo() ?>¤ò´Þ¤ó¤À¾®¤µ¤Ê¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤Ç¥Ö¥é¥¦¥¶¤òÄ̤·¤Æ³Îǧ¤Ç¤­¤Þ¤¹¡£ ¤³¤ì¤é¤Î¤³¤È¤òÁ´¤Æ¥Á¥§¥Ã¥¯¤·¤Æ¡¢´ÉÍý¥Ú¡¼¥¸¤òºÆÅÙɽ¼¨¤µ¤»¤Æ¤¯¤À¤µ¤¤¡£

                -

                ¥Ú¡¼¥¸¤ÎºÇ¸å¤Þ¤Ç¥¹¥¯¥í¡¼¥ë¤·¤Æ"³¤±¤ë"¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤;

                -

                ¼¡¤Ë¡¢³ÆMoodle¥â¥¸¥å¡¼¥ë¤ÇɬÍפȤµ¤ì¤ëÁ´¥Æ¡¼¥Ö¥ë¤ÎÀßÄêÆâÍÆ¤¬Á°¥Ú¡¼¥¸¤ÈƱÍͤʷÁ¼°¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£Á°¥Ú¡¼¥¸¤ÈƱ¤¸¤è¤¦¤ËÁ´¤Æ¤¬Îп§¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

                -

                ¥Ú¡¼¥¸¤ÎºÇ¸å¤Þ¤Ç¥¹¥¯¥í¡¼¥ë¤·¤Æ"³¤±¤ë"¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤;

                -

                ¤µ¤é¤Ë»ÈÍѸÀ¸ì¡¢SMTP¥Û¥¹¥ÈÅù¤ÎÀßÄêÊÑ¿ô¤òÄêµÁ¤¹¤ë¤¿¤á¤Î¥Õ¥©¡¼¥à¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£Á´¤Æ¤ÎÀßÄê¤òÀµ¤·¤¯¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤È¿´ÇÛ¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤ - ¾ï¤Ë¡¢Á°¤ËÌá¤Ã¤Æ´ÉÍý²èÌ̤«¤é¤³¤ì¤é¤ÎÀßÄê¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Ú¡¼¥¸¤ÎºÇ¸å¤Þ¤Ç¥¹¥¯¥í¡¼¥ë¤·¤Æ"Save"¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤;

                -

                ¤â¤·(¤â¤·¡¢¤Î»þ¤À¤±)¤³¤Î¥Ú¡¼¥¸¤Þ¤¿¤Ï¡¢¼¡¤Î¥Ú¡¼¥¸¤Ç°ú¤Ã³Ý¤«¤Ã¤Æ¼¡¤Ë¿Ê¤á¤Ê¤¤¾ì¹ç¡¢¶²¤é¤¯¤¢¤Ê¤¿¤Î¥µ¡¼¥Ð¤Ë¤Ï»ä¤¬"buggy referrer"¤È¸Æ¤ó¤Ç¤¤¤ëÌäÂ꤬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤Ï´Êñ¤Ëľ¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹: config.php¤òÊÔ½¸¤·¤Æbuggy_referrerÊÑ¿ô¤òtrue¤Ë¤·¤¿¸å¤Ë¡¢¤³¤Î¥Ú¡¼¥¸¤òºÆÅÙɽ¼¨¤µ¤»¤Æ¤¯¤À¤µ¤¤¡£

                -

                ¼¡¤Î¥Ú¡¼¥¸¤Ï¡¢Ì¾¾Î¡¢¥Õ¥©¡¼¥Þ¥Ã¥È¡¢ÀâÌÀÅù¤ÎMoodle¥µ¥¤¥È¤Ë´Ø¤¹¤ë¥Ñ¥é¥á¡¼¥¿¤Èɽ»æ¤ÎÄêµÁ¤ò¹Ô¤¦¥Õ¥©¡¼¥à¤Ç¤¹¡£É¬Í×»ö¹à¤òÆþÎϤ·¤Æ(¤¤¤Ä¤Ç¤âÌá¤Ã¤ÆÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹)"ÀßÄê¤òÊݸ¤¹¤ë"¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£

                -

                ºÇ¸å¤Ë¡¢´ÉÍý¥Ú¡¼¥¸¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤ÎºÇ¹â´ÉÍý¼Ô¤ÎºîÀ®¤òµá¤á¤é¤ì¤Þ¤¹¡£¤¢¤Ê¤¿¤Î̾Á°¡¢¥á¡¼¥ë¥¢¥É¥ì¥¹Åù¤Î¾ÜºÙ¥Ç¡¼¥¿¤òÆþ¤ì¤Æ"ÀßÄê¤òÊݸ¤¹¤ë"¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£ Á´¤Æ¤Î¹àÌÜ¤ËÆþÎϤ¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¤¬¡¢½ÅÍפʹàÌܤ¬¶õÇò¤Î¾ì¹ç¡¢ºÆÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£

                -
                -
                -
                -
                -
                -

                ¸å¤Ç´ÉÍý¥Ú¡¼¥¸¤Ë¥¢¥¯¥»¥¹¤¹¤ë»þ¤ËɬÍפʴÉÍý¼Ô¤Î¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤ò˺¤ì¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

                -
                -
                -
                -
                -
                -

                (¤¤¤«¤Ê¤ëÍýͳ¤Ç¤â¡¢¥¤¥ó¥¹¥È¡¼¥ë¤¬ÃæÃǤµ¤ì¤¿¾ì¹ç¤ä¥í¥°¥¤¥ó¤Ç¤­¤Ê¤¤¤è¤¦¤Ê¥·¥¹¥Æ¥à¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¡¢Ä̾ï¤Ï¥æ¡¼¥¶Ì¾¡Öadmin¡×¡¢¥Ñ¥¹¥ï¡¼¥É¡Öadmin¡×¤Ç¥í¥°¥¤¥ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                -

                Àµ¾ï¤Ë½ªÎ»¤¹¤ë¤È¡¢¥á¥Ë¥å¡¼·Á¼°¤Ëʤó¤À¥ê¥ó¥¯¤ò´Þ¤ó¤À´ÉÍý¥Ú¡¼¥¸(´ÉÍý¼Ô¤È¤·¤Æ¥µ¥¤¥È¤Ë¥í¥°¥¤¥ó¤¹¤ë¤È¤³¤ì¤é¤Î¹àÌܤ¬É½¼¨¤µ¤ì¤Þ¤¹)¤ËÌá¤ê¤Þ¤¹¡£Á´¤Æ¤ÎMoodle¤Ë´Ø¤¹¤ë´ÉÍý¤Ï¡¢¤³¤ì¤é¤Î¥á¥Ë¥å¡¼¤òÍøÍѤ·¤Æ²¼µ­¤Î¤è¤¦¤Ê´ÉÍý¤ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹:

                -
                  -
                • ¥³¡¼¥¹¤ÎºîÀ®¤Èºï½ü
                • -
                • ¥æ¡¼¥¶¥¢¥«¥¦¥ó¥È¤ÎºîÀ®¤ÈÊÔ½¸
                • -
                • ¶µ»Õ¥¢¥«¥¦¥ó¥È¤Î´ÉÍý
                • -
                • ¥Æ¡¼¥ÞÅù¤Î¥µ¥¤¥ÈÁ´ÂΤËÅϤëÀßÄê¤ÎÊѹ¹
                • -
                -
                -

                 

                -

                9. cron¤ÎÀßÄê

                -
                -

                ¤¤¤¯¤Ä¤«¤ÎMoodle¥â¥¸¥å¡¼¥ë¤Ï¥¿¥¹¥¯¤òưºî¤µ¤»¤ë¤¿¤á¤Î·Ñ³Ū¤Ê¥Á¥§¥Ã¥¯¤òɬÍפȤ·¤Þ¤¹¡£Î㤨¤Ð¡¢Moodle¤ÏÅê¹Æ¼Ô¤ËÅê¹Æ¤Î¥³¥Ô¡¼¤ò¥á¡¼¥ëÁ÷¿®¤¹¤ë¤¿¤á¤Ë¡¢¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥Õ¥©¡¼¥é¥à¤Î¥Á¥§¥Ã¥¯¤òɬÍפȤ·¤Þ¤¹¡£

                -

                ¤³¤ì¤é¤Îºî¶È¤ò¹Ô¤¦¥¹¥¯¥ê¥×¥È¤Ïcron.php¤È¸Æ¤Ð¤ì¡¢admin¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤·¤«¤·¡¢¤³¤ì¼«ÂÎ¤Ç¤ÏÆ°ºî¤·¤Þ¤»¤ó¤Î¤Ç¡¢Äê´üŪ(Î㤨¤Ð5ʬËè¤Þ¤¿¤Ï10ʬËè)¤Ëưºî¤¹¤ë¤è¤¦¤ËÀßÄê¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï³Æ¥â¥¸¥å¡¼¥ë¤ÇÄêµÁ¤µ¤ì¤¿µ¡Ç½¤¬Æ°ºî¤Ç¤­¤ë¤è¤¦¤Ë¡Ö¿´Â¡¤Î¸Ýư¡×¤òÄ󶡤·¤Þ¤¹¡£

                -

                Cron¤òưºî¤µ¤»¤ë¥Þ¥·¥ó¤ÏMoodle¤¬Æ°ºî¤·¤Æ¤¤¤ë¥Þ¥·¥ó¤ÈƱ¤¸¥Þ¥·¥ó¤Ç¤¢¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Î㤨¤Ð¡¢¤¢¤Ê¤¿¤¬cron¤ò»È¤¨¤Ê¤¤¥¦¥§¥Ö¥Û¥¹¥Æ¥£¥ó¥°¥µ¡¼¥Ó¥¹¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¢cron¤ò¾¤Î¥µ¡¼¥Ð¤ä¼«Âð¤Î¥Ñ¥½¥³¥ó¤Çư¤«¤¹¤³¤È¤¬¤Ç¤­¤ë¤Ç¤·¤ç¤¦¡£ÂçÀڤʤ³¤È¤Ïcron.php¤òÄê´üŪ¤Ëư¤«¤¹¤³¤È¤Ç¤¹¡£

                -

                ¥¹¥¯¥ê¥×¥È¤Î¥í¡¼¥É¤Ï¤½¤ì¤Û¤É¹â¤¯¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢Ä̾ï¤Ï5ʬËè¤ÎÀßÄ꤬ÂÅÅö¤Ç¤·¤ç¤¦¡£´Ö³Ö¤òû¤¯¤¹¤ë¤³¤È¤¬¿´Çۤʾì¹ç¤Ï¡¢15¤Þ¤¿¤Ï30ʬ¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¥á¡¼¥ë¤ÎÃÙ±ä¤Ë¤è¤ê¥³¡¼¥¹¤Î³èư¤¬Á˳²¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Cron¤Îưºî´Ö³Ö¤òŤ¯¤·²á¤®¤Ê¤¤¤³¤È¤¬ÂçÀڤǤ¹¡£

                -

                ºÇ½é¤Ë²¼µ­¤Î¥¹¥¯¥ê¥×¥È¤¬Ä¾Àܥ֥饦¥¶¤Çư¤¯¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤:

                -
                -
                http://example.com/moodle/admin/cron.php
                -
                -

                ¼¡¤Ë¡¢¤³¤Î¥¹¥¯¥ê¥×¥È¤¬¼«Æ°Åª¤Ë³î¤ÄÄê´üŪ¤Ëưºî¤¹¤ë¤è¤¦¤ËÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

                -

                ¥¹¥¯¥ê¥×¥È¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤è¤ê¼Â¹Ô¤¹¤ë

                -

                ¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤écron.php¤ò¾åµ­Îã¤Î¤è¤¦¤Ë¼Â¹Ô¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð¡Öwget¡×¤Î¤è¤¦¤ÊUnix¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹:

                -
                -
                wget -q -O /dev/null http://example.com/moodle/admin/cron.php
                -
                -

                ¤³¤ÎÎã¤Î¾ì¹ç¡¢½ÐÎϤÏÍÞÀ©(/dev/null)¤µ¤ì¤Þ¤¹¡£

                -

                Ʊ¤¸¤³¤È¤òlynx¤Ç¹Ô¤¦¤È:

                -
                -
                lynx -dump http://example.com/moodle/admin/cron.php > /dev/null
                -
                -

                ÂåÂØ¼êÃʤȤ·¤Æ¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Çưºî¤¹¤ë¥¹¥¿¥ó¥É¥¢¥í¥ó¥Ð¡¼¥¸¥ç¥ó¤ÎPHP¤ò»È¤¦ÊýË¡¤â¤¢¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¤ÎÍøÅÀ¤Ï¤¢¤Ê¤¿¤Î¥¦¥§¥Ö¥µ¡¼¥Ð¤¬cron.php¤ËÂФ¹¤ëÄê´üŪ¤ÊÍ×µá¤Ë´Ø¤¹¤ë¥í¥°¤¬»Ä¤é¤Ê¤¤¤³¤È¤Ç¤¹¡£·çÅÀ¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¥Ð¡¼¥¸¥ç¥ó¤ÎPHP¤ò°·¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤Ç¤¹¡£

                -
                -
                /opt/bin/php /web/moodle/admin/cron.php
                 
                 
                +php_flag magic_quotes_gpc On
                +
                +php_flag magic_quotes_runtime Off
                +
                +php_flag file_uploads On
                +
                +php_flag short_open_tag On
                +
                +php_flag session.auto_start Off
                +
                +php_flag session.bug_compat_warn Off
                + +

                ¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë¤ÎºÇÂ祵¥¤¥º¤ò²¼µ­¤Î¤è¤¦¤ËÀßÄꤹ¤ë¤³¤È¤â½ÐÍè¤Þ¤¹: + +

                +
                +php_value upload_max_filesize 2M
                +
                +php_value post_max_size 2M
                +
                +     
                + +

                ºÇ¤â´Êñ¤ÊÊýË¡¤Ïlib/htaccess¤è¤ê¥µ¥ó¥×¥ë¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼¤·¤Æ¤¢¤Ê¤¿¤ÎÌÜŪ¤ËŬ¤¦¤è¤¦¤ËÊÔ½¸¤¹¤ëÊýË¡¤Ç¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¤è¤ê¾Ü¤·¤¤ÀâÌÀ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£Î㤨¤ÐUnix¤Î¥·¥§¥ë¤Ç: +

                + +
                cp lib/htaccess .htaccess
                + +
                + +
                + +

                 

                + +

                7. config.php¤ÎÊÔ½¸

                + +
                + +

                ¤³¤ì¤Ç¤¢¤Ê¤¿¤ÏÀßÄê¥Õ¥¡¥¤¥ë¡¢config.php¤ò¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¤ÇÊÔ½¸¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤ÏMoodleÆâ¤ÎÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡£

                + +

                ¤Þ¤ººÇ½é¤Ëconfig-dist.php¤ò¥³¥Ô¡¼¤·¤Æconfig.php¤È¤¤¤¦Ì¾¾Î¤Ë¥ê¥Í¡¼¥à¤·¤Æ¤¯¤À¤µ¤¤¡£¸å¤ÇMoodle¤ò¥¢¥Ã¥×¥°¥ì¡¼¥É¤·¤¿»þ¤Ëconfig.php¤¬¾å½ñ¤­¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¡¢¤³¤Î¤è¤¦¤Êºî¶È¤ò¹Ô¤¤¤Þ¤¹¡£

                + +

                ¤¢¤Ê¤¿¤¬ÄêµÁ¤·¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¾ÜºÙ(¥Æ¡¼¥Ö¥ë¥×¥ê¥Õ¥£¥Ã¥¯¥¹¤ò´Þ¤à - PostgreSQL¤Ç¤Ïɬ¿Ü¤Ç¤¹)¤òÌÀ¼¨¤¹¤ë¤¿¤á¤Ëconfig.php¤òÊÔ½¸¤·¤Æ¤¯¤À¤µ¤¤¡£Æ±Íͤ˥µ¥¤¥È¤Î¥¢¥É¥ì¥¹¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¢¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥ê¤òÌÀ¼¨¤·¤Þ¤¹¡£ ¤³¤ÎÄêµÁ¥Õ¥¡¥¤¥ë¤Ë¤Ï¾ÜºÙ¤ÊÀâÌÀʸ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£

                + +

                ¤³¤Î¥¤¥ó¥¹¥È¡¼¥ëʸ½ñ¤Î»Ä¤ê¤ÎÉôʬ¤Ç¤Ï¡¢¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤¬²¼µ­¤Ë°ÌÃÖ¤·¤Æ¤¤¤ë¤³¤È¤òÁ°Äó¤ËÀâÌÀ¤·¤Þ¤¹: + + http://example.com/moodle

                + +
                + +

                 

                + +

                8. ´ÉÍý¥Ú¡¼¥¸¤Ë¿Ê¤à

                + +
                + +

                ´ÉÍý¥Ú¡¼¥¸¤Ïhttp://example.com/moodle/admin¤Çưºî¤·¤Æ¤¤¤ë¤³¤È¤Ç¤·¤ç¤¦¡£¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤Îɽ»æ¤Ë¥¢¥¯¥»¥¹¤¹¤ì¤Ð¼«Æ°Åª¤Ë´ÉÍý¥Ú¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¤¢¤Ê¤¿¤¬ºÇ½é¤Ë´ÉÍý¥Ú¡¼¥¸¤Ë¥¢¥¯¥»¥¹¤·¤¿»þ¤Ï¡¢¥»¥Ã¥È¥¢¥Ã¥×¤ò³¤±¤ë¤¿¤á¤ËƱ°Õ¤¹¤ëɬÍפ¬¤¢¤ëGPLƱ°Õ½ñ¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

                + +

                (Ʊ»þ¤ËMoodle¤«¤é¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤Ë¤¤¤¯¤Ä¤«¤Îcookie¤¬ÀßÄꤵ¤ì¤Þ¤¹¡£¤â¤·¡¢¥Ö¥é¥¦¥¶¤ÎÀßÄê¤Çcookie¤ò¼õ¤±Æþ¤ì¤ë¤«Èݤ«ÀßÄê¤Ç¤­¤ë¤è¤¦¤Ç¤·¤¿¤éMoodle¤Îcookie¤ò¼õ¤±Æþ¤ì¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¤è¤¦¤Ë¤·¤Ê¤¤¾ì¹ç¡¢Moodle¤ÏÀµ¾ï¤Ëưºî¤·¤Þ¤»¤ó¡£) + +

                Moodle¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥»¥Ã¥Æ¥£¥ó¥°¤ò³«»Ï¤·¤Æ¡¢¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤¿¤á¤Î¥Æ¡¼¥Ö¥ë¤òºîÀ®¤·¤Þ¤¹¡£ºÇ½é¤Ë¥á¥¤¥ó¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¥Æ¡¼¥Ö¥ë¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£²¼µ­¤Î¤è¤¦¤ÊSQLʸ¤Î¼¡¤Ë¥¹¥Æ¡¼¥¿¥¹¥á¥Ã¥»¡¼¥¸(Îп§¤Þ¤¿¤ÏÀÖ¿§)¤¬É½¼¨¤µ¤ì¤Þ¤¹:

                + +
                + +

                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

                + +

                SUCCESS

                + +

                ...Åù¤Î¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤¿¸å: Main databases set up + + successfully.

                + +
                + +

                ¤â¤·¡¢¤³¤Î¤è¤¦¤Êɽ¼¨¤¬¤Ê¤µ¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Þ¤¿¤Ï¡¢¤¢¤Ê¤¿¤¬config.php¤ÇÄêµÁ¤·¤¿ÀßÄê¤ËÌäÂ꤬¤¢¤ë¤Ï¤º¤Ç¤¹¡£PHP¤¬À©¸Â¤µ¤ì¤¿¡Ö¥»¡¼¥Õ¥â¡¼¥É¡×(¾¦ÍÑ¥¦¥§¥Ö¥Û¥¹¥È¤Ç¤Ï»þ¡¹¥»¡¼¥Õ¥â¡¼¥É¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹)¤ËÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£PHP¤ÎÊÑ¿ô¤ò<? phpinfo() ?>¤ò´Þ¤ó¤À¾®¤µ¤Ê¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤Ç¥Ö¥é¥¦¥¶¤òÄ̤·¤Æ³Îǧ½ÐÍè¤Þ¤¹¡£ ¤³¤ì¤é¤Î¤³¤È¤òÁ´¤Æ¥Á¥§¥Ã¥¯¤·¤Æ¡¢´ÉÍý¥Ú¡¼¥¸¤òºÆÅÙɽ¼¨¤µ¤»¤Æ¤¯¤À¤µ¤¤¡£

                + +

                ¥Ú¡¼¥¸¤ÎºÇ¸å¤Þ¤Ç¥¹¥¯¥í¡¼¥ë¤·¤Æ"³¤±¤ë"¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤;

                + +

                ¼¡¤Ë¡¢³ÆMoodle¥â¥¸¥å¡¼¥ë¤ÇɬÍפȤµ¤ì¤ëÁ´¥Æ¡¼¥Ö¥ë¤ÎÀßÄêÆâÍÆ¤¬Á°¥Ú¡¼¥¸¤ÈƱÍͤʷÁ¼°¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£Á°¥Ú¡¼¥¸¤ÈƱ¤¸¤è¤¦¤ËÁ´¤Æ¤¬Îп§¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

                + +

                ¥Ú¡¼¥¸¤ÎºÇ¸å¤Þ¤Ç¥¹¥¯¥í¡¼¥ë¤·¤Æ"³¤±¤ë"¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤;

                + +

                ¹¹¤Ë»ÈÍѸÀ¸ì¡¢SMTP¥Û¥¹¥ÈÅù¤ÎÀßÄêÊÑ¿ô¤òÄêµÁ¤¹¤ë¤¿¤á¤Î¥Õ¥©¡¼¥à¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£Á´¤Æ¤ÎÀßÄê¤òÀµ¤·¤¯¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤È¿´ÇÛ¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤ - ¾ï¤Ë¡¢Á°¤ËÌá¤Ã¤Æ´ÉÍý²èÌ̤«¤é¤³¤ì¤é¤ÎÀßÄê¤òÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¥Ú¡¼¥¸¤ÎºÇ¸å¤Þ¤Ç¥¹¥¯¥í¡¼¥ë¤·¤Æ"Save"¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤;

                + +

                ¤â¤·(¤â¤·¡¢¤Î»þ¤À¤±)¤³¤Î¥Ú¡¼¥¸¤Þ¤¿¤Ï¡¢¼¡¤Î¥Ú¡¼¥¸¤Ç°ú¤Ã³Ý¤«¤Ã¤Æ¼¡¤Ë¿Ê¤á¤Ê¤¤¾ì¹ç¡¢¶²¤é¤¯¤¢¤Ê¤¿¤Î¥µ¡¼¥Ð¤Ë¤Ï»ä¤¬"buggy referrer"¤È¸Æ¤ó¤Ç¤¤¤ëÌäÂ꤬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤Ï´Êñ¤Ëľ¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹: config.php¤òÊÔ½¸¤·¤Æbuggy_referrerÊÑ¿ô¤òtrue¤Ë¤·¤¿¸å¤Ë¡¢¤³¤Î¥Ú¡¼¥¸¤òºÆÅÙɽ¼¨¤µ¤»¤Æ¤¯¤À¤µ¤¤¡£

                + +

                ¼¡¤Î¥Ú¡¼¥¸¤Ï¡¢Ì¾¾Î¡¢¥Õ¥©¡¼¥Þ¥Ã¥È¡¢ÀâÌÀÅù¤ÎMoodle¥µ¥¤¥È¤Ë´Ø¤¹¤ë¥Ñ¥é¥á¡¼¥¿¤Èɽ»æ¤ÎÄêµÁ¤ò¹Ô¤¦¥Õ¥©¡¼¥à¤Ç¤¹¡£É¬Í×»ö¹à¤òÆþÎϤ·¤Æ(¤¤¤Ä¤Ç¤âÌá¤Ã¤ÆÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹)"ÀßÄê¤òÊݸ¤¹¤ë"¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£

                + +

                ºÇ¸å¤Ë¡¢´ÉÍý¥Ú¡¼¥¸¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤ÎºÇ¹â´ÉÍý¼Ô¤ÎºîÀ®¤òµá¤á¤é¤ì¤Þ¤¹¡£¤¢¤Ê¤¿¤Î̾Á°¡¢¥á¡¼¥ë¥¢¥É¥ì¥¹Åù¤Î¾ÜºÙ¥Ç¡¼¥¿¤òÆþ¤ì¤Æ"ÀßÄê¤òÊݸ¤¹¤ë"¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£ Á´¤Æ¤Î¹àÌÜ¤ËÆþÎϤ¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¤¬¡¢½ÅÍפʹàÌܤ¬¶õÇò¤Î¾ì¹ç¡¢ºÆÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ + +

                + +
                + +

                ¸å¤Ç´ÉÍý¥Ú¡¼¥¸¤Ë¥¢¥¯¥»¥¹¤¹¤ë»þ¤ËɬÍפʴÉÍý¼Ô¤Î¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤ò˺¤ì¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

                + +
                + +

                Àµ¾ï¤Ë½ªÎ»¤¹¤ë¤È¡¢¥á¥Ë¥å¡¼·Á¼°¤Ëʤó¤À¥ê¥ó¥¯¤ò´Þ¤ó¤À´ÉÍý¥Ú¡¼¥¸(´ÉÍý¼Ô¤È¤·¤Æ¥µ¥¤¥È¤Ë¥í¥°¥¤¥ó¤¹¤ë¤È¤³¤ì¤é¤Î¹àÌܤ¬É½¼¨¤µ¤ì¤Þ¤¹)¤ËÌá¤ê¤Þ¤¹¡£Á´¤Æ¤ÎMoodle¤Ë´Ø¤¹¤ë´ÉÍý¤Ï¡¢¤³¤ì¤é¤Î¥á¥Ë¥å¡¼¤òÍøÍѤ·¤Æ²¼µ­¤Î¤è¤¦¤Ê´ÉÍý¤ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹:

                + +
                  + +
                • ¥³¡¼¥¹¤ÎºîÀ®¤Èºï½ü
                • + +
                • ¥æ¡¼¥¶¥¢¥«¥¦¥ó¥È¤ÎºîÀ®¤ÈÊÔ½¸
                • + +
                • ¶µ»Õ¥¢¥«¥¦¥ó¥È¤Î´ÉÍý
                • + +
                • ¥Æ¡¼¥ÞÅù¤Î¥µ¥¤¥ÈÁ´ÂΤËÅϤëÀßÄê¤ÎÊѹ¹
                • + +
                + +
                + +

                 

                + +

                9. cron¤ÎÀßÄê

                + +
                + +

                ¤¤¤¯¤Ä¤«¤ÎMoodle¥â¥¸¥å¡¼¥ë¤Ï¥¿¥¹¥¯¤òưºî¤µ¤»¤ë¤¿¤á¤Î·Ñ³Ū¤Ê¥Á¥§¥Ã¥¯¤òɬÍפȤ·¤Þ¤¹¡£Î㤨¤Ð¡¢Moodle¤ÏÅê¹Æ¼Ô¤ËÅê¹Æ¤Î¥³¥Ô¡¼¤ò¥á¡¼¥ëÁ÷¿®¤¹¤ë¤¿¤á¤Ë¡¢¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥Õ¥©¡¼¥é¥à¤Î¥Á¥§¥Ã¥¯¤òɬÍפȤ·¤Þ¤¹¡£

                + +

                ¤³¤ì¤é¤Îºî¶È¤ò¹Ô¤¦¥¹¥¯¥ê¥×¥È¤Ïcron.php¤È¸Æ¤Ð¤ì¡¢admin¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤·¤«¤·¡¢¤³¤ì¼«ÂÎ¤Ç¤ÏÆ°ºî¤·¤Þ¤»¤ó¤Î¤Ç¡¢Äê´üŪ(Î㤨¤Ð5ʬ¤ª¤­)¤Ëưºî¤¹¤ë¤è¤¦¤ËÀßÄê¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï³Æ¥â¥¸¥å¡¼¥ë¤ÇÄêµÁ¤µ¤ì¤¿µ¡Ç½¤¬Æ°ºî½ÐÍè¤ë¤è¤¦¤Ë¡Ö¿´Â¡¤Î¸Ýư¡×¤òÄ󶡤·¤Þ¤¹¡£

                + +

                Cron¤òưºî¤µ¤»¤ë¥Þ¥·¥ó¤ÏMoodle¤¬Æ°ºî¤·¤Æ¤¤¤ë¥Þ¥·¥ó¤ÈƱ¤¸¥Þ¥·¥ó¤Ç¤¢¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Î㤨¤Ð¡¢¤¢¤Ê¤¿¤¬cron¤ò»È¤¨¤Ê¤¤¥¦¥§¥Ö¥Û¥¹¥Æ¥£¥ó¥°¥µ¡¼¥Ó¥¹¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¢cron¤ò¾¤Î¥µ¡¼¥Ð¤ä¼«Âð¤Î¥Ñ¥½¥³¥ó¤Çư¤«¤¹¤³¤È¤¬½ÐÍè¤ë¤Ç¤·¤ç¤¦¡£ÂçÀڤʤ³¤È¤Ïcron.php¤ò5ʬËè¤Î¤è¤¦¤ËÄê´üŪ¤Ëư¤«¤¹¤³¤È¤Ç¤¹¡£

                + +

                ºÇ½é¤Ë²¼µ­¤Î¥¹¥¯¥ê¥×¥È¤¬Ä¾Àܥ֥饦¥¶¤Çư¤¯¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤:

                + +
                + +
                http://example.com/moodle/admin/cron.php
                + +
                + +

                ¼¡¤Ë¡¢¤³¤Î¥¹¥¯¥ê¥×¥È¤¬¼«Æ°Åª¤Ë³î¤ÄÄê´üŪ¤Ëưºî¤¹¤ë¤è¤¦¤ËÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

                + +

                ¥¹¥¯¥ê¥×¥È¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤è¤ê¼Â¹Ô¤¹¤ë

                + +

                ¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤écron.php¤ò¾åµ­Îã¤Î¤è¤¦¤Ë¼Â¹Ô¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Î㤨¤Ð¡Öwget¡×¤Î¤è¤¦¤ÊUnix¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤òÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹:

                + +
                + +
                wget -q -O /dev/null http://example.com/moodle/admin/cron.php
                + +
                + +

                ¤³¤ÎÎã¤Î¾ì¹ç¡¢½ÐÎϤÏÍÞÀ©(/dev/null)¤µ¤ì¤Þ¤¹¡£

                + +

                Ʊ¤¸¤³¤È¤òlynx¤Ç¹Ô¤¦¤È:

                + +
                + +
                lynx -dump http://example.com/moodle/admin/cron.php > /dev/null
                + +
                + +

                ÂåÂØ¼êÃʤȤ·¤Æ¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Çưºî¤¹¤ë¥¹¥¿¥ó¥É¥¢¥í¥ó¥Ð¡¼¥¸¥ç¥ó¤ÎPHP¤ò»È¤¦ÊýË¡¤â¤¢¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¤ÎÍøÅÀ¤Ï¤¢¤Ê¤¿¤Î¥¦¥§¥Ö¥µ¡¼¥Ð¤¬cron.php¤ËÂФ¹¤ëÄê´üŪ¤ÊÍ×µá¤Ë´Ø¤¹¤ë¥í¥°¤¬»Ä¤é¤Ê¤¤¤³¤È¤Ç¤¹¡£·çÅÀ¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¥Ð¡¼¥¸¥ç¥ó¤ÎPHP¤ò°·¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤Ç¤¹¡£

                + +
                + +
                /opt/bin/php /web/moodle/admin/cron.php
                +
                 (Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php
                 
                -
                + + + +
                -

                ¼«Æ°Åª¤Ë5ʬËè¤Ë¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤¹¤ë

                -

                Unix¥·¥¹¥Æ¥à¤Î¾ì¹ç: cron¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ cronÀßÄê¤ÎÊÔ½¸¤ò¹Ô¤¦¤¿¤á¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é"crontab -e"¤ÈÆþÎϤ·¤Æ¡¢¼¡¤Î¤è¤¦¤Ë1¹Ô¤òÄɲä·¤Þ¤¹:

                + +

                ¼«Æ°Åª¤Ë5ʬËè¤Ë¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤¹¤ë

                + +

                Unix¥·¥¹¥Æ¥à¤Î¾ì¹ç: cron¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ cronÀßÄê¤ÎÊÔ½¸¤ò¹Ô¤¦¤¿¤á¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é"crontab -e"¤ÈÆþÎϤ·¤Æ¡¢¼¡¤Î¤è¤¦¤Ë1¹Ô¤òÄɲä·¤Þ¤¹:

                +
                -
                */5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php
                + +
                */5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php
                +
                -

                Ä̾¡Öcrontab¡×¥³¥Þ¥ó¥É¤Ïvi¥¨¥Ç¥£¥¿¤ÇÆþÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥­¡¼¥Ü¡¼¥É¤Î¡Öi¡×¤ò²¡¤·¤Æ¡ÖÁÞÆþ¥â¡¼¥É¡×¤Ë¤·¤Æ¾åµ­¤Î¹Ô¤òÆþÎϤ·¤Þ¤¹¡£¤½¤Î¸å¡¢ESC¥­¡¼¤ò²¡¤·¤Æ¡ÖÁÞÆþ¥â¡¼¥É¡×¤«¤éÈ´¤±¤Þ¤¹¡£¡Ö:wq¡×¤ò²¡¤·¤ÆÊݸ¡¦½ªÎ»¤¹¤ë¤«¡¢¡Ö:q!¡×¤ò²¡¤·¤ÆÊݸ¤»¤º¤Ë½ªÎ»¤·¤Þ¤¹¡£

                -

                Windows¥·¥¹¥Æ¥à¤Î¾ì¹ç: °ìÈÖ´Êñ¤ÊÊýË¡¤ÏÁ´¤Æ¤Îºî¶È¤ò´Êñ¤Ë¹Ô¤¦¡¢»ä¤Î¥Ñ¥Ã¥±¡¼¥¸moodle-cron-for-windows.zip¤òÍøÍѤ¹¤ë¤³¤È¤Ç¤¹¡£WindowsÁȹþ¤ß¤Î¡Ö¥¿¥¹¥¯¡×¤ò»î¤·¤Æ¤ß¤Æ¤âÎɤ¤¤Ç¤·¤ç¤¦¡£

                -

                ¥¦¥§¥Ö¥Û¥¹¥È¤Î¾ì¹ç: ¥¦¥§¥Ö¥Ù¡¼¥¹¤Î¥³¥ó¥È¥í¡¼¥ë¥Ñ¥Í¥ë¤Ë¡¢¤³¤Îcron¥¸¥ç¥Ö¤òÀßÄê¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤Ç¤·¤ç¤¦¡£¾ÜºÙ¤Ï´ÉÍý¼Ô¤Ë¤ª¿Ò¤Í¤¯¤À¤µ¤¤¡£

                -

                + +

                Windows¥·¥¹¥Æ¥à¤Î¾ì¹ç: °ìÈÖ´Êñ¤ÊÊýË¡¤ÏÁ´¤Æ¤Îºî¶È¤ò´Êñ¤Ë¹Ô¤¦¡¢»ä¤Î¥Ñ¥Ã¥±¡¼¥¸moodle-cron-for-windows.zip¤òÍøÍѤ¹¤ë¤³¤È¤Ç¤¹¡£WindowsÁȹþ¤ß¤Î¡Ö¥¿¥¹¥¯¡×¤ò»î¤·¤Æ¤ß¤Æ¤âÎɤ¤¤Ç¤·¤ç¤¦¡£

                + +

                +
                -

                10. ¿·¤·¤¤¥³¡¼¥¹¤ÎºîÀ®

                + +

                10. ¿·¤·¤¤¥³¡¼¥¹¤ÎºîÀ®

                +
                -

                Moodle¤ÏÀµ¾ï¤Ëưºî¤·¤Æ¡¢¤¢¤Ê¤¿¤Ï¥³¡¼¥¹¤ÎºîÀ®¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                -

                ´ÉÍý¥Ú¡¼¥¸(¤Þ¤¿¤Ï¥Û¡¼¥à¥Ú¡¼¥¸¤Ë¤¢¤ë´ÉÍý¥á¥Ë¥å¡¼)¤è¤ê¡Ö¥³¡¼¥¹¤ÎÄɲáפòÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£

                -

                ¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¡¢½½Ê¬Ãí°Õ¤·¤Ê¤¬¤éɬÍ×¹àÌܤòÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎÃʳ¬¤Ç¤Ï¡¢ºÙ¤«¤ÊÅÀ¤òɬÍװʾå¤Ë¿´ÇÛ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Á´¤Æ¤ÎÀßÄê¤Ï¸å¤Ç¶µ»Õ¤Ë¤è¤Ã¤ÆÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                -

                ¡ÖÀßÄê¤òÊݸ¤¹¤ë¡×¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¿·¤¿¤Ê¶µ»Õ¤Î³äÅö¤Æ¤ò¹Ô¤¦¥Ú¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¼ÂºÝ¤Ë¸ºß¤·¤Æ¤¤¤ë¥¢¥«¥¦¥ó¥È¤Î¤ß¤ò¤³¤³¤ÇÄɲäǤ­¤Þ¤¹ - ¤â¤·¡¢¿·¤¿¤Ë¶µ»Õ¥¢¥«¥¦¥ó¥È¤òºîÀ®¤·¤¿¤¤¾ì¹ç¤Ï¡¢¶µ»Õ¼«¿È¤Ç¥¢¥«¥¦¥ó¥È¤òºîÀ®¤¹¤ë¤è¤¦¤Ë°ÍÍꤹ¤ë¤«(¥í¥°¥¤¥ó¥Ú¡¼¥¸¤ò¸«¤Æ¤¯¤À¤µ¤¤)¡¢´ÉÍý¥Ú¡¼¥¸¤Ç"¥æ¡¼¥¶¤ÎÄɲÃ"¤ò»È¤Ã¤Æ¥¢¥«¥¦¥ó¥È¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£

                -

                ¤³¤Îºî¶È¤¬´°Î»¤¹¤ë¤È¥³¡¼¥¹¤Ï¥«¥¹¥¿¥Þ¥¤¥º²Äǽ¤Ë¤Ê¤ê¡¢¥Û¡¼¥à¥Ú¡¼¥¸¤Î¡Ö¥³¡¼¥¹¡×¥ê¥ó¥¯¤è¤ê¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤¹¡£

                -

                ¥³¡¼¥¹ºîÀ®¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ï¡Ö¶µ»Õ¥Þ¥Ë¥å¥¢¥ë¡×¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                + +

                Moodle¤ÏÀµ¾ï¤Ëưºî¤·¤Æ¡¢¤¢¤Ê¤¿¤Ï¥³¡¼¥¹¤ÎºîÀ®¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                + +

                ´ÉÍý¥Ú¡¼¥¸(¤Þ¤¿¤Ï¥Û¡¼¥à¥Ú¡¼¥¸¤Ë¤¢¤ë´ÉÍý¥á¥Ë¥å¡¼)¤è¤ê"¥³¡¼¥¹¤ÎÄɲÃ"¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£

                + +

                ¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¡¢½½Ê¬Ãí°Õ¤·¤Ê¤¬¤éɬÍ×¹àÌܤòÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎÃʳ¬¤Ç¤Ï¡¢ºÙ¤«¤ÊÅÀ¤òɬÍװʾå¤Ë¿´ÇÛ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Á´¤Æ¤ÎÀßÄê¤Ï¸å¤Ç¶µ»Õ¤Ë¤è¤Ã¤ÆÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                + +

                "ÀßÄê¤òÊݸ¤¹¤ë"¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¿·¤¿¤Ê¶µ»Õ¤Î³äÅö¤Æ¤ò¹Ô¤¦¥Ú¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¼ÂºÝ¤Ë¸ºß¤·¤Æ¤¤¤ë¥¢¥«¥¦¥ó¥È¤Î¤ß¤ò¤³¤³¤ÇÄɲýÐÍè¤Þ¤¹ - ¤â¤·¡¢¿·¤¿¤Ë¶µ»Õ¥¢¥«¥¦¥ó¥È¤òºîÀ®¤·¤¿¤¤¾ì¹ç¤Ï¡¢¶µ»Õ¼«¿È¤Ç¥¢¥«¥¦¥ó¥È¤òºîÀ®¤¹¤ë¤è¤¦¤Ë°ÍÍꤹ¤ë¤«(¥í¥°¥¤¥ó¥Ú¡¼¥¸¤ò¸«¤Æ¤¯¤À¤µ¤¤)¡¢´ÉÍý¥Ú¡¼¥¸¤Ç"¥æ¡¼¥¶¤ÎÄɲÃ"¤ò»È¤Ã¤Æ¥¢¥«¥¦¥ó¥È¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£

                + +

                ¤³¤Îºî¶È¤¬´°Î»¤¹¤ë¤È¥³¡¼¥¹¤Ï¥«¥¹¥¿¥Þ¥¤¥º²Äǽ¤Ë¤Ê¤ê¡¢¥Û¡¼¥à¥Ú¡¼¥¸¤Î"¥³¡¼¥¹"¥ê¥ó¥¯¤è¤ê¥¢¥¯¥»¥¹½ÐÍè¤Þ¤¹¡£

                + +

                ¥³¡¼¥¹ºîÀ®¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ï"¶µ»ÕÍѥޥ˥奢¥ë"¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                +
                -

                 

                -

                Moodleʸ½ñ

                -

                Version: $Id$

                - + +

                 

                + +

                Moodleʸ½ñ

                + +

                Version: $Id$

                + + diff --git a/lang/ja/docs/installamp.html b/lang/ja/docs/installamp.html index b4959ab6b80..431b1d99602 100644 --- a/lang/ja/docs/installamp.html +++ b/lang/ja/docs/installamp.html @@ -5,9 +5,9 @@ -

                Apache¡¢MySQL¤ª¤è¤ÓPHP¤Î¥¤¥ó¥¹¥È¡¼¥ë

                +

                Apache¡¢MySQLµÚ¤ÓPHP¤Î¥¤¥ó¥¹¥È¡¼¥ë

                -

                Moodle¤Ï¤È¸Æ¤Ð¤ì¤ë¥¹¥¯¥ê¥×¥È¸À¸ì¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¡¢¤Û¤È¤ó¤É¤Î¥Ç¡¼¥¿¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¤Þ¤¹¡£Moodle¤ò»ÈÍѤ¹¤ë¾å¤Ç¤Î¿ä¾©¥Ç¡¼¥¿¡¼¥Ù¡¼¥¹¤ÏMySQL¤Ç¤¹¡£ Before installing Moodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëÁ°¤Ë²ÔÆ°Ãæ¤Î¥¦¥§¥Ö¥µ¡¼¥Ð¾å¤ÇPHP¤È¥Ç¡¼¥¿¥Ù¡¼¥¹¤¬Æ°ºî¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤é¤Î¥Ñ¥Ã¥±¡¼¥¸¤ÏÊ¿¶ÑŪ¤Ê¥³¥ó¥Ô¥å¡¼¥¿¥æ¡¼¥¶¤Ë¤È¤Ã¤ÆÆñ¤·¤¤ÀßÄ꤬ɬÍפǤ¹¡£¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï°Û¤Ê¤ë¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤â ÀßÄê¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¡¢¤Ç¤­¤ë¸Â¤ê¥·¥ó¥×¥ë¤ËÀâÌÀ¤òµ­½Ò¤·¤Æ¤¤¤Þ¤¹¡£

                +

                Moodle¤Ï¤È¸Æ¤Ð¤ì¤ë¥¹¥¯¥ê¥×¥È¸À¸ì¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¡¢ËؤɤΥǡ¼¥¿¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¤Þ¤¹¡£Moodle¤ò»ÈÍѤ¹¤ë¾å¤Ç¤Î¿ä¾©¥Ç¡¼¥¿¡¼¥Ù¡¼¥¹¤ÏMySQL¤Ç¤¹¡£ Before installing Moodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëÁ°¤Ë²ÔÆ°Ãæ¤Î¥¦¥§¥Ö¥µ¡¼¥Ð¾å¤ÇPHP¤È¥Ç¡¼¥¿¥Ù¡¼¥¹¤¬Æ°ºî¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤é¤Î¥Ñ¥Ã¥±¡¼¥¸¤ÏÊ¿¶ÑŪ¤Ê¥³¥ó¥Ô¥å¡¼¥¿¥æ¡¼¥¶¤Ë¤È¤Ã¤ÆÆñ¤·¤¤ÀßÄ꤬ɬÍפǤ¹¡£¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï°Û¤Ê¤ë¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤â ÀßÄê¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¡¢½ÐÍè¤ë¸Â¤ê¥·¥ó¥×¥ë¤ËÀâÌÀ¤òµ­½Ò¤·¤Æ¤¤¤Þ¤¹¡£

                • ¥Û¥¹¥Æ¥£¥ó¥°¥µ¡¼¥Ó¥¹
                • Mac OS X
                • @@ -18,13 +18,13 @@

                  ¥Û¥¹¥Æ¥£¥ó¥°¥µ¡¼¥Ó¥¹

                  »Äǰ¤Ê¤¬¤é¥Û¥¹¥Æ¥£¥ó¥°¥µ¡¼¥Ó¥¹¤ÎÆâÍÆ¤Ï¿´ô¤ËÅϤê¤Þ¤¹¡£Ãæ¤Ë¤ÏMoodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¯¤ì¤ë¥µ¡¼¥Ó¥¹¤â¤¢¤ê¤Þ¤¹¡£

                  -

                  ¤Û¤È¤ó¤É¤Î¥Û¥¹¥Æ¥£¥ó¥°¥µ¡¼¥Ó¥¹¤Ç¤Ï¡¢¥µ¥¤¥È¤ò´ÉÍý¤¹¤ë¤¿¤á¤Ë¥¦¥§¥Ö¥Ù¡¼¥¹¤Î¥³¥ó¥È¥í¡¼¥ë¥Ñ¥Í¥ë¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡£¥³¥ó¥È¥í¡¼¥ë¥Ñ¥Í¥ë¤Ç¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºîÀ®¤·¤¿¤êcron¤ÎÀßÄê¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¥³¥Þ¥ó¥É¥·¥§¥ë¤Çºî¶È¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¡¢ssh¤òÍøÍѤ·¤¿¥¿¡¼¥ß¥Ê¥ë¥¢¥¯¥»¥¹¤òÄ󶡤¹¤ë¥Û¥¹¥Æ¥£¥ó¥°¥µ¡¼¥Ó¥¹¤â¤¢¤ê¤Þ¤¹¡£

                  +

                  ËØ¤É¤Î¥Û¥¹¥Æ¥£¥ó¥°¥µ¡¼¥Ó¥¹¤Ç¤Ï¡¢¥µ¥¤¥È¤ò´ÉÍý¤¹¤ë°Ù¤Ë¥¦¥§¥Ö¥Ù¡¼¥¹¤Î¥³¥ó¥È¥í¡¼¥ë¥Ñ¥Í¥ë¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡£¥³¥ó¥È¥í¡¼¥ë¥Ñ¥Í¥ë¤Ç¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºîÀ®¤·¤¿¤êcron¤ÎÀßÄê¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤¿¥³¥Þ¥ó¥É¥·¥§¥ë¤Çºî¶È¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¡¢ssh¤òÍøÍѤ·¤¿¥¿¡¼¥ß¥Ê¥ë¥¢¥¯¥»¥¹¤òÄ󶡤¹¤ë¥Û¥¹¥Æ¥£¥ó¥°¥µ¡¼¥Ó¥¹¤â¤¢¤ê¤Þ¤¹¡£

                  ¥¤¥ó¥¹¥È¡¼¥ë¥¬¥¤¥É¤Ë½à¤¸¤Æ¤½¤ì¤¾¤ì¤Îºî¶È¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£ÉÔÌÀ¤ÊÅÀ¤Ï¥Û¥¹¥Æ¥£¥ó¥°¥×¥í¥Ð¥¤¥À¤Ë¤ªÊ¹¤­¤¯¤À¤µ¤¤¡£

                   

                  Mac OS X

                  -

                  ´Êñ¤ÊÊýË¡¤ÏApple¤¬Ä󶡤·¤Æ¤¤¤ëApache¥µ¡¼¥Ð¤ª¤è¤ÓMarc Liyanage's packages¤ÎPHP¤ÈMySQL¤òÄɲ乤ëÊýË¡¤Ç¤¹¡£²¼µ­¤Î¥Ú¡¼¥¸¤Ë¾ÜºÙÀâÌÀ¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤³¤Ç¤ÎÀâÌÀ¤Ï³ä°¦¤µ¤»¤ÆÄº¤­¤Þ¤¹:

                  +

                  ´Êñ¤ÊÊýË¡¤ÏApple¤¬Ä󶡤·¤Æ¤¤¤ëApache¥µ¡¼¥ÐµÚ¤ÓMarc Liyanage's packages¤ÎPHP¤ÈMySQL¤òÄɲ乤ëÊýË¡¤Ç¤¹¡£²¼µ­¤Î¥Ú¡¼¥¸¤Ë¾ÜºÙÀâÌÀ¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤³¤Ç¤ÎÀâÌÀ¤Ï³ä°¦¤µ¤»¤ÆÄº¤­¤Þ¤¹:

                  PHP: ¤³¤Á¤é¤«¤é¥À¥¦¥ó¥í¡¼¥É: http://www.entropy.ch/software/macosx/php/

                  MySQL: ¤³¤Á¤é¤«¤é¥À¥¦¥ó¥í¡¼¥É: http://www.entropy.ch/software/macosx/mysql/

                  @@ -35,7 +35,7 @@

                  Redhat Linux

                  -

                  Apache¡¢PHP¡¢MySQL¤Ë´Ø¤·¤ÆÁ´¤Æ¤ÎRPM¥Ñ¥Ã¥±¡¼¥¸¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤·¤Ð¤·¤Ð˺¤ì¤é¤ì¤ë¤Î¤¬¡¢MySQLÏ¢·È¤¹¤ë¤¿¤á¤ËɬÍפÊphp-mysql¥Ñ¥Ã¥±¡¼¥¸¤Ç¤¹¡£

                  +

                  Apache¡¢PHP¡¢MySQL¤Ë´Ø¤·¤ÆÁ´¤Æ¤ÎRPM¥Ñ¥Ã¥±¡¼¥¸¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤·¤Ð¤·¤Ð˺¤ì¤é¤ì¤ë¤Î¤¬¡¢MySQLÏ¢·È¤¹¤ë°Ù¤ËɬÍפÊphp-mysql¥Ñ¥Ã¥±¡¼¥¸¤Ç¤¹¡£

                  ¤³¤ì¤é¤Î¥Ñ¥Ã¥±¡¼¥¸¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¸å¤Ï¡¢Ä̾ï¤Î¥¤¥ó¥¹¥È¡¼¥ë¥¬¥¤¥ÉÄ̤ê¤Ëºî¶È¤¬¿Ê¤ß¤Þ¤¹¡£

                  ¤è¤ê¾ÜºÙ¤ÊÀâÌÀ¤Ï¤³¤Á¤é¤ò¤´Í÷¤¯¤À¤µ¤¤: http://moodle.org/wiki/index.php/InstallingMoodle

                  @@ -46,54 +46,54 @@ ¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¤¹¡£°Ê²¼¤ËÁ´¤Æ¤Î¥¹¥Æ¥Ã¥×¤Ë´Ø¤·¤ÆÀâÌÀ¤·¤Þ¤¹:

                  1. ºÇ½é¤Ë¡¢MySQL¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ë¾ì¹ç¤Ï(Ê̤Υѥ屡¼¥¸¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ë¾ì¹ç¤Ç¤â)¡¢ - Á´¤Æ¤ò¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤µ¤é¤ËMySQL¤Î¥Õ¥¡¥¤¥ë¤ª¤è¤Óc:\my.cnf¡¢c:\windows\my.ini + Á´¤Æ¤ò¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¯¤À¤µ¤¤¡£¹¹¤ËMySQL¤Î¥Õ¥¡¥¤¥ëµÚ¤Óc:\my.cnf¡¢c:\windows\my.ini ¤òºï½ü¤·¤Æ¤¯¤À¤µ¤¤¡£my.cnf¤È¤¤¤¦Ì¾¾Î¤Î¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤·¤Æºï½ü¤µ¤ì¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£
                  2. -
                  3. PHP¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢Windows¥Ç¥£¥ì¥¯¥È¥ê¤è¤êphp4ts.dll¤ª¤è¤Óphp.ini¤È¤¤¤¦Ì¾¾Î¤Î¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Æ¤¯¤À¤µ¤¤¡£
                  4. +
                  5. PHP¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢Windows¥Ç¥£¥ì¥¯¥È¥ê¤è¤êphp4ts.dllµÚ¤Óphp.ini¤È¤¤¤¦Ì¾¾Î¤Î¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Æ¤¯¤À¤µ¤¤¡£
                  6. EasyPHP¤ò¤³¤Á¤é¤è¤ê¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤: http://www.easyphp.org/telechargements/dn.php?F=easyphp1-7(Ìó10Mb)
                  7. ¥À¥¦¥ó¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤: easyphp1-7_setup.exe. ¥¤¥ó¥¹¥È¡¼¥ë¼ê½ç¤Ï¥Õ¥é¥ó¥¹¸ì¤Ç¤¹¤¬¡¢¤½¤Î¾¤ÎÅÀ¤Ç¤ÏWindows¥×¥í¥°¥é¥à¤Î¥¤¥ó¥¹¥È¡¼¥ë¼ê½ç¤Ë»÷¤Æ¤¤¤Þ¤¹ - ¥Ç¥Õ¥©¥ë¥È¤òÁªÂò¤·¤ÆÁ´¤Æ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£"Suivant"¤Ï¡Ö¼¡¤Ø¡×¡¢"Oui"¤Ï¡Ö¤Ï¤¤¡×¤ò°ÕÌ£¤·¤Þ¤¹¡£
                  8. ¥¤¥ó¥¹¥È¡¼¥ë¤ÎºÇ¸å¤Ç¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹"Lancer EasyPHP" (EasyPHP¤ò³«»Ï¤¹¤ë)¤ò¥Á¥§¥Ã¥¯¤·¤¿¤Þ¤Þ¤Ë¤·¤Æ¡¢"Terminer" ¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£¤½¤Î¸å¡¢Ìµ»ë¤·¤Æ¤âÂç¾æÉפʥڡ¼¥¸¤Ø°Üư¤·¤Þ¤¹¡£
                  9. -
                  10. Á´¤Æ¾å¼ê¤¯¹Ô¤Ã¤¿¾ì¹ç - ¤ª¤á¤Ç¤È¤¦¤´¤¶¤¤¤Þ¤¹! Apache¡¢PHP¡¢MySQLÁ´¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ÆÆ°ºî¤·¤Æ¤¤¤Þ¤¹! ¥Ä¡¼¥ë¥Ð¡¼¤Ë¹õ¤¤E¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£E¤Î¾å¤Ç±¦¥¯¥ê¥Ã¥¯¤Ë¤è¤ê¥×¥í¥°¥é¥à¤Î¥³¥ó¥È¥í¡¼¥ë¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¥á¥Ë¥å¡¼¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
                  11. -
                  12. ¤¤¤¯¤Ä¤«¤Ï¥Õ¥é¥ó¥¹¸ì¤Çµ­½Ò¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢±Ñ¸ì¤ÎÊý¤¬Îɤ¤¤È»×¤ï¤ì¤ë¤³¤È¤Ç¤·¤ç¤¦¡£EasyPHP1-7¥Õ¥©¥ë¥ÀÆâ¤Ë¤¢¤ëwww¤ª¤è¤Ó¥Û¡¼¥à¥Õ¥©¥ë¥À¤Î±Ñ¸ì¥Ð¡¼¥¸¥ç¥ó¤ò¤³¤Á¤é¤è¤ê¥À¥¦¥ó¥í¡¼¥É¤Ç¤­¤Þ¤¹: +
                  13. Á´¤Æ¾å¼ê¤¯¹Ô¤Ã¤¿¾ì¹ç - ¤ª¤á¤Ç¤È¤¦¤´¤¶¤¤¤Þ¤¹! Apache¡¢PHP¡¢MySQLÁ´¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ÆÆ°ºî¤·¤Æ¤¤¤Þ¤¹! ¥Ä¡¼¥ë¥Ð¡¼¤Ë¹õ¤¤E¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£E¤Î¾å¤Ç±¦¥¯¥ê¥Ã¥¯¤Ë¤è¤ê¥×¥í¥°¥é¥à¤Î¥³¥ó¥È¥í¡¼¥ë¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤ë¥á¥Ë¥å¡¼¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
                  14. +
                  15. ¤¤¤¯¤Ä¤«¤Ï¥Õ¥é¥ó¥¹¸ì¤Çµ­½Ò¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢±Ñ¸ì¤ÎÊý¤¬Îɤ¤¤È»×¤ï¤ì¤ë¤³¤È¤Ç¤·¤ç¤¦¡£EasyPHP1-7¥Õ¥©¥ë¥ÀÆâ¤Ë¤¢¤ëwwwµÚ¤Ó¥Û¡¼¥à¥Õ¥©¥ë¥À¤Î±Ñ¸ì¥Ð¡¼¥¸¥ç¥ó¤ò¤³¤Á¤é¤è¤ê¥À¥¦¥ó¥í¡¼¥É½ÐÍè¤Þ¤¹: http://www.easyphp.org/telechargements/dn.php?F=indexUS_1.7
                  16. ¼¡¤Ë¹Ô¤¦¤³¤È¤ÏMoodle¤Ç»ÈÍѤ¹¤ë¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÀßÄꤹ¤ë¤³¤È¤Ç¤¹¡£ ¥Ä¡¼¥ë¥Ð¡¼¤Î¹õ¤¤E¾å¤Ç±¦¥¯¥ê¥Ã¥¯¤Ë¤è¤êAdministration¤òÁªÂò¤·¤Þ¤¹¡£¤½¤·¤Æ¡¢DB Management(PHPMyAdmin¤ÎÎÙ)¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
                  17. -
                  18. ¥æ¡¼¥¶Ì¾¤òÍ׵ᤵ¤ì¤¿¾ì¹ç¡¢"root"¤ª¤è¤Ó¶õÇò¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£¿·¤·¤¤¥Ç¡¼¥¿¥Ù¡¼¥¹¤ª¤è¤Ó¥æ¡¼¥¶¥¢¥«¥¦¥ó¥È¤òºîÀ®¤¹¤ëphpMyAdmin¤Î²èÌ̤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
                  19. +
                  20. ¥æ¡¼¥¶Ì¾¤òÍ׵ᤵ¤ì¤¿¾ì¹ç¡¢"root"µÚ¤Ó¶õÇò¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£¿·¤·¤¤¥Ç¡¼¥¿¥Ù¡¼¥¹µÚ¤Ó¥æ¡¼¥¶¥¢¥«¥¦¥ó¥È¤òºîÀ®¤¹¤ëphpMyAdmin¤Î²èÌ̤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
                  21. ÆþÎÏÍó¤Ë"moodle"¤ÈÆþÎϸ塢"Create"¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¿·¤·¤¤¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£´Êñ¤À¤Ã¤¿¤Ç¤·¤ç¤¦!
                  22. -
                  23. ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤ë¥æ¡¼¥¶¤òºîÀ®¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£½é¤á¤Æ¤ÎÊý¤Ë¤Ï¡¢¤³¤Îºî¶È¤Ï¼ã´³Æñ¤·¤¤¤È»×¤¤¤Þ¤¹¤Î¤Ç¡¢Moodle¤ÎÀßÄê¤Ë¤Ï´û¤ËºîÀ®¤µ¤ì¤Æ¤¤¤ë¥æ¡¼¥¶"root"¤ò¥Ñ¥¹¥ï¡¼¥É̵¤·¤Ç»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£Moodle¤ÎÀßÄê¤Ï¸å¤ÇÊѹ¹²Äǽ¤Ç¤¹¡£
                  24. -
                  25. Moodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë½àÈ÷¤¬¤Ç¤­¤Þ¤·¤¿! ºÇ¿·ÈǤÎMoodle¤òhttp://moodle.org/download¤è¤ê¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¡¢°µ½Ì¥Õ¥¡¥¤¥ë¤ò²òÅष¤Æ¤¯¤À¤µ¤¤¡£
                  26. -
                  27. Moodle¥Õ¥¡¥¤¥ë¤òC:\Program Files\EasyPHP\www¤Ë¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£Moodle¤ÎÁ´¥Ç¥£¥ì¥¯¥È¥ê(Îã C:\Program Files\EasyPHP\www\moodle)¤ò¥³¥Ô¡¼¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¤·¡¢Moodle¥Ç¥£¥ì¥¯¥È¥ê¤Î¥³¥ó¥Æ¥ó¥Ä¤ò¥³¥Ô¡¼¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£2ÈÖÌܤÎÊýË¡¤ò¼è¤Ã¤¿¾ì¹ç¡¢ Moodle¥Û¡¼¥à¥Ú¡¼¥¸¤Ëhttp://localhost/moodle/¤È¥¢¥¯¥»¥¹¤¹¤ëÂå¤ï¤ê¤Ë¡¢http://localhost/¤È¥¢¥¯¥»¥¹¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£
                  28. -
                  29. Moodle¤Ç¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë¤òÊݸ¤¹¤ë¤¿¤á¤Î¶õ¤Î¥Õ¥©¥ë¥À¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£Îã:C:\moodledata
                  30. +
                  31. ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¥¢¥¯¥»¥¹½ÐÍè¤ë¥æ¡¼¥¶¤òºîÀ®¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£½é¤á¤Æ¤ÎÊý¤Ë¤Ï¡¢¤³¤Îºî¶È¤Ï¼ã´³Æñ¤·¤¤¤È»×¤¤¤Þ¤¹¤Î¤Ç¡¢Moodle¤ÎÀßÄê¤Ë¤Ï´û¤ËºîÀ®¤µ¤ì¤Æ¤¤¤ë¥æ¡¼¥¶"root"¤ò¥Ñ¥¹¥ï¡¼¥É̵¤·¤Ç»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£Moodle¤ÎÀßÄê¤Ï¸å¤ÇÊѹ¹²Äǽ¤Ç¤¹¡£
                  32. +
                  33. Moodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë½àÈ÷¤¬½ÐÍè¤Þ¤·¤¿! ºÇ¿·ÈǤÎMoodle¤òhttp://moodle.org/download¤è¤ê¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¡¢°µ½Ì¥Õ¥¡¥¤¥ë¤ò²òÅष¤Æ¤¯¤À¤µ¤¤¡£
                  34. +
                  35. Moodle¥Õ¥¡¥¤¥ë¤òC:\Program Files\EasyPHP\www¤Ë¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£Moodle¤ÎÁ´¥Ç¥£¥ì¥¯¥È¥ê(Îã C:\Program Files\EasyPHP\www\moodle)¤ò¥³¥Ô¡¼¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¤·¡¢Moodle¥Ç¥£¥ì¥¯¥È¥ê¤Î¥³¥ó¥Æ¥ó¥Ä¤ò¥³¥Ô¡¼¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£2ÈÖÌܤÎÊýË¡¤ò¼è¤Ã¤¿¾ì¹ç¡¢ Moodle¥Û¡¼¥à¥Ú¡¼¥¸¤Ëhttp://localhost/moodle/¤È¥¢¥¯¥»¥¹¤¹¤ëÂå¤ï¤ê¤Ë¡¢http://localhost/¤È¥¢¥¯¥»¥¹¤¹¤ë»ö¤¬½ÐÍè¤Þ¤¹¡£
                  36. +
                  37. Moodle¤Ç¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë¤òÊݸ¤¹¤ë°Ù¤Î¶õ¤Î¥Õ¥©¥ë¥À¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£Îã:C:\moodledata
                  38. Moodle¥Õ¥©¥ë¥À¤ËÆþ¤Ã¤Æ¤¯¤À¤µ¤¤¡£¥Õ¥©¥ë¥ÀÆâ¤Îconfig-dist.php¤òconfig.php¤Ë¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£
                  39. -
                  40. config.php¤ò¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¤ÇÊÔ½¸¤·¤Æ¤¯¤À¤µ¤¤(¥Î¡¼¥È¥Ñ¥Ã¥É¤ÇÊÔ½¸¤Ç¤­¤Þ¤¹¤¬¡¢ËöÈø¤Ë¥¹¥Ú¡¼¥¹¤¬Æþ¤é¤Ê¤¤¤è¤¦¤Ëµ¤¤ò¤Ä¤±¤Æ¤¯¤À¤µ¤¤)¡£
                  41. -
                  42. ¿·¤·¤¤¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´Ø¤·¤ÆÁ´¤Æ¤Î¾ðÊó¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:
                    - $CFG->dbtype = 'mysql';
                    - $CFG->dbhost = 'localhost';
                    - $CFG->dbname = 'moodle';
                    - $CFG->dbuser = 'root';
                    - $CFG->dbpass = '';
                    - $CFG->dbpersist = true;
                    +
                  43. config.php¤ò¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¤ÇÊÔ½¸¤·¤Æ¤¯¤À¤µ¤¤(¥Î¡¼¥È¥Ñ¥Ã¥É¤ÇÊÔ½¸½ÐÍè¤Þ¤¹¤¬¡¢ËöÈø¤Ë¥¹¥Ú¡¼¥¹¤¬Æþ¤é¤Ê¤¤¤è¤¦¤Ëµ¤¤ò¤Ä¤±¤Æ¤¯¤À¤µ¤¤)¡£
                  44. +
                  45. ¿·¤·¤¤¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´Ø¤·¤ÆÁ´¤Æ¤Î¾ðÊó¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:
                    + $CFG->dbtype = 'mysql';
                    + $CFG->dbhost = 'localhost';
                    + $CFG->dbname = 'moodle';
                    + $CFG->dbuser = 'root';
                    + $CFG->dbpass = '';
                    + $CFG->dbpersist = true;
                    $CFG->prefix = 'mdl_';
                  46. -
                  47. ¤½¤·¤ÆÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:
                    - $CFG->wwwroot = 'http://localhost/moodle'; // ÃΤäƤ¤¤ë¾ì¹ç¤Ï³°Éô¥¢¥É¥ì¥¹¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£
                    - $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
                    +
                  48. ¤½¤·¤ÆÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:
                    + $CFG->wwwroot = 'http://localhost/moodle'; // ÃΤäƤ¤¤ë¾ì¹ç¤Ï³°Éô¥¢¥É¥ì¥¹¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£
                    + $CFG->dirroot = 'C:\Program Files\EasyPHP\www\moodle';
                    $CFG->dataroot = 'C:\moodledata';
                  49. config.php¤òÊݸ¤·¤Æ¤¯¤À¤µ¤¤ - ¾¤ËÀßÄ꤬¤¢¤ë¾ì¹ç¤Ï̵»ë¤·¤Æ·ë¹½¤Ç¤¹¡£
                  50. -
                  51. ¤â¤¦¤¹¤°½ª¤ï¤ê¤Ç¤¹! »Ä¤ê¤Ï¥¦¥§¥Ö¥Ù¡¼¥¹¤ÎÀßÄê¤Ç¤¹¡£ ¥Ö¥é¥¦¥¶¤ÇÀßÄê¤ò³¤±¤ë¤¿¤á¤Ëhttp://localhost/moodle/admin/¤Ë¥¢¥¯¥»¥¹¤·¤Æ¤¯¤À¤µ¤¤¡£
                  52. -
                  53. Moodle¤Çzip¥Õ¥¡¥¤¥ë(Î㤨¤Ð¥Ð¥Ã¥¯¥¢¥Ã¥×¤Ëzip¤ò»È¤¦¾ì¹ç)¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë"zlib"¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£EasyPHP¥Ç¥£¥ì¥¯¥È¥ê(C:\Program Files\EasyPHP)Æâ¤Îphpini.exe¤ò¼Â¹Ô¤·¤Æ¤âƱ¤¸ÀßÄê¤ò¹Ô¤¦¤³¤È¤â¤Ç¤­¤Þ¤¹¡£"zlib.dll"¤ÎÎ٤ˤ¢¤ë¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£ ¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤Æ¡¢¥Ä¡¼¥ë¥Ð¡¼¤Ë¤¢¤ë¹õ¤¤E¤ËÌá¤ê¤Þ¤¹¡£±¦¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¥á¥Ë¥å¡¼¤è¤ê"Restart"¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£
                  54. +
                  55. ¤â¤¦¤¹¤°½ª¤ï¤ê¤Ç¤¹! »Ä¤ê¤Ï¥¦¥§¥Ö¥Ù¡¼¥¹¤ÎÀßÄê¤Ç¤¹¡£ ¥Ö¥é¥¦¥¶¤ÇÀßÄê¤ò³¤±¤ë°Ù¤Ëhttp://localhost/moodle/admin/¤Ë¥¢¥¯¥»¥¹¤·¤Æ¤¯¤À¤µ¤¤¡£
                  56. +
                  57. Moodle¤Çzip¥Õ¥¡¥¤¥ë(Î㤨¤Ð¥Ð¥Ã¥¯¥¢¥Ã¥×¤Ëzip¤ò»È¤¦¾ì¹ç)¤ò»ÈÍѤ¹¤ë°Ù¤Ë"zlib"¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£EasyPHP¥Ç¥£¥ì¥¯¥È¥ê(C:\Program Files\EasyPHP)Æâ¤Îphpini.exe¤ò¼Â¹Ô¤·¤Æ¤âƱ¤¸ÀßÄê¤ò¹Ô¤¦¤³¤È¤â½ÐÍè¤Þ¤¹¡£"zlib.dll"¤ÎÎ٤ˤ¢¤ë¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£ ¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤Æ¡¢¥Ä¡¼¥ë¥Ð¡¼¤Ë¤¢¤ë¹õ¤¤E¤ËÌá¤ê¤Þ¤¹¡£±¦¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¥á¥Ë¥å¡¼¤è¤ê"Restart"¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£
                  58. ºÇ¸å¤Ë¡¢cron¤òÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¾ÜºÙ¤Ï¥¤¥ó¥¹¥È¡¼¥ë¥¬¥¤¥É¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                  EasyPHP¤ò»È¤¨¤Ê¤¤¾ì¹ç¡¢PHP¤¬Àµ¾ï¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¤«³Îǧ¤·¤Æ°ìÈÌŪ¤ÊÌäÂê¤ò²óÈò¤¹¤ëÊýË¡¤¬¤¢¤ê¤Þ¤¹:

                    -
                  • Moodle¤¬¥¤¥á¡¼¥¸¤ò½èÍý¤Ç¤­¤ë¤è¤¦¤ËGD¥â¥¸¥å¡¼¥ë¤ò»ÈÍѲĤËÀßÄꤵ¤ì¤Æ¤¤¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤ - php.ini¤òÊÔ½¸¤·¤Æ'extension=php_gd2.dll'¤Î¹Ô¤Ë¤¢¤ë¥³¥á¥ó¥È(;)¤òºï½ü¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
                  • -
                  • Moodle¤Çzip¥Õ¥¡¥¤¥ë¤ÎºîÀ®¤ª¤è¤ÓŸ³«¤ò¤Ç¤­¤ë¤è¤¦¤ËZlib¥â¥¸¥å¡¼¥ë¤¬»ÈÍѲĤËÀßÄꤵ¤ì¤Æ¤¤¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
                  • +
                  • Moodle¤¬¥¤¥á¡¼¥¸¤ò½èÍý½ÐÍè¤ë¤è¤¦¤ËGD¥â¥¸¥å¡¼¥ë¤ò»ÈÍѲĤËÀßÄꤵ¤ì¤Æ¤¤¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤ - php.ini¤òÊÔ½¸¤·¤Æ'extension=php_gd2.dll'¤Î¹Ô¤Ë¤¢¤ë¥³¥á¥ó¥È(;)¤òºï½ü¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
                  • +
                  • Moodle¤Çzip¥Õ¥¡¥¤¥ë¤ÎºîÀ®µÚ¤ÓŸ³«¤ò½ÐÍè¤ë¤è¤¦¤ËZlib¥â¥¸¥å¡¼¥ë¤¬»ÈÍѲĤËÀßÄꤵ¤ì¤Æ¤¤¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
                  • ¥»¥Ã¥·¥ç¥ó¤¬»ÈÍѲĤˤʤäƤ¤¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤ - php.ini¤òÊÔ½¸¤·¤Æ¥Ç¥£¥ì¥¯¥È¥êsession.save_path¤ò ¥Ç¥Õ¥©¥ë¥È¤Î"/tmp"¤è¤ê¡¢Î㤨¤ÐWindows¥Ç¥£¥ì¥¯¥È¥ê¤Î"c:/temp"¤ËÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£

                   

                -

                Moodleʸ½ñ

                -

                Version: $Id$

                +

                Moodleʸ½ñ

                +

                Version: $Id$

                - + \ No newline at end of file diff --git a/lang/ja/docs/intro.html b/lang/ja/docs/intro.html index 54d3402103b..185ad8b867d 100644 --- a/lang/ja/docs/intro.html +++ b/lang/ja/docs/intro.html @@ -12,15 +12,15 @@

                ¥¤¥ó¥È¥í¥À¥¯¥·¥ç¥ó

                -

                Moodle¤Ï¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥Ù¡¼¥¹¤Î¥³¡¼¥¹¤ª¤è¤Ó¥¦¥§¥Ö¥µ¥¤¥È¤òºîÀ®¤¹¤ë¤¿¤á¤Î¥½¥Õ¥È¥¦¥§¥¢¥Ñ¥Ã¥±¡¼¥¸¤Ç¤¹¡£Moodle¥×¥í¥¸¥§¥¯¥È¤Ï¡¢¼Ò²ñ²ò¼áŪ¶µ°é¤ÎÏÈÁȤߤò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë¿Ê¹ÔÃæ¤Î³«È¯¥×¥í¥¸¥§¥¯¥È¤Ç¤¹¡£

                -

                Moodle¤Ï¡¢ÌµÎÁ¤ÇÄ󶡤µ¤ì¤ë¥ª¡¼¥×¥ó¥½¡¼¥¹¥½¥Õ¥È¥¦¥§¥¢(GNU¥Ñ¥Ö¥ê¥Ã¥¯¥é¥¤¥»¥ó¥¹)¤Ç¤¹¡£¤³¤Î¤³¤È¤ÏMoodle¤¬Ãøºî¸¢¤òÍ­¤·¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¤¬¡¢ Ʊ»þ¤Ë¤¢¤Ê¤¿¤¬¼«Í³¤ò»ý¤Ä¤³¤È¤â°ÕÌ£¤·¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¡¢Moodle¤Î¥³¥Ô¡¼¡¢ÍøÍѤª¤è¤Ó¼¡¤ÎÆâÍÆ¤ËƱ°Õ¤¹¤ë¾ì¹ç¤Ï¡¢½¤Àµ¤·¤¿¤â¤Î¤òÄ󶡤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹: ¥½¡¼¥¹¥³¡¼¥É¤òÄ󶡤¹¤ë; ¥ª¥ê¥¸¥Ê¥ë¤Î¥é¥¤¥»¥ó¥¹¤ª¤è¤ÓÃøºî¸¢É½¼¨¤òÊѹ¹¡¦ºï½ü¤·¤Ê¤¤¡¢Moodle¤ÎÇÉÀ¸Êª¤ËƱÍͤΥ饤¥»¥ó¥¹¤òŬÍѤ¹¤ë¡£ ¥é¥¤¥»¥ó¥¹¤ò½ÏÆÉ¤µ¤ì¤¿¾å¤Ç¡¢¤´¼ÁÌäÅù¤ÏÃøºî¸¢½êÍ­¼Ô¤Ë¤ª¿Ò¤Í¤¯¤À¤µ¤¤¡£

                -

                Moodle¤Ï¡¢PHP¤¬Æ°ºî¤¹¤ë¤¢¤é¤æ¤ë¥³¥ó¥Ô¥å¡¼¥¿¤Çưºî¤·¡¢Â¿¤¯¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹(ÆÃ¤ËMySQL)¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£

                -

                Moodle¤È¤¤¤¦¸ÀÍդϡ¢ Modular Object-Oriented Dynamic Learning Environment ¤ÎƬʸ»ú¤è¤êºî¤é¤ì¤¿¤â¤Î¤Ç¤¢¤ê¡¢¼ç¤Ë¥×¥í¥°¥é¥Þ¤ä¶µ°éÍýÏÀ²È¤Ë¤È¤Ã¤ÆÍ­±×¤Ê¥·¥¹¥Æ¥à¤Ç¤¹¡£Moodle¤Ï¡¢ÂÕ¤±¤Æ¶Ê¤¬¤ê¤¯¤Í¤Ã¤Æ¿Ê¤à¥×¥í¥»¥¹¡¢¤½¤Î¥×¥í¥»¥¹¤«¤éȯÀ¸¤¹¤ëʪ»ö¤Ë¼è¤êÁȤळ¤È¡¢Êª»ö¤ÎËܼÁ¤äÁϤÀ­¤ËƳ¤¤¤Æ¤¯¤ì¤ë³Ú¤·¤¤Ï®¤ê²ó¤·¤òɽ¤¹Æ°»ì¤Ç¤â¤¢¤ê¤Þ¤¹¡£½¾¤Ã¤ÆMoodle¤È¤¤¤¦¸ÀÍդϡ¢³«È¯¼êË¡¤ª¤è¤Ó³ØÀ¸¤È¶µ»Õ¤¬¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤Ç³Ø¤Ó¡¢¶µ¤¨¤ëÊýË¡¤ÎξÊý¤ËÅö¤Æ¤Ï¤Þ¤ê¤Þ¤¹¡£Moodle¤òÍøÍѤ¹¤ëÁ´¤Æ¤Î¿Í¤ÏMoodler¤È¸Æ¤Ù¤Þ¤¹¡£

                +

                Moodle¤Ï¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥Ù¡¼¥¹¤Î¥³¡¼¥¹µÚ¤Ó¥¦¥§¥Ö¥µ¥¤¥È¤òºîÀ®¤¹¤ë°Ù¤Î¥½¥Õ¥È¥¦¥§¥¢¥Ñ¥Ã¥±¡¼¥¸¤Ç¤¹¡£Moodle¥×¥í¥¸¥§¥¯¥È¤Ï¡¢¼Ò²ñ²ò¼áŪ¶µ°é¤ÎÏÈÁȤߤò¥µ¥Ý¡¼¥È¤¹¤ë°Ù¤Ë¿Ê¹ÔÃæ¤Î³«È¯¥×¥í¥¸¥§¥¯¥È¤Ç¤¹¡£

                +

                Moodle¤Ï¡¢ÌµÎÁ¤ÇÄ󶡤µ¤ì¤ë¥ª¡¼¥×¥ó¥½¡¼¥¹¥½¥Õ¥È¥¦¥§¥¢(GNU¥Ñ¥Ö¥ê¥Ã¥¯¥é¥¤¥»¥ó¥¹)¤Ç¤¹¡£´ðËÜŪ¤Ë¡¢¤³¤Î¤³¤È¤ÏMoodle¤¬Ãøºî¸¢¤ò¼èÆÀ¤·¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¤¬¡¢ Ʊ»þ¤Ë¤¢¤Ê¤¿¤¬¼«Í³¤ò»ý¤Ä¤³¤È¤â°ÕÌ£¤·¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¡¢Moodle¤Î¥³¥Ô¡¼¡¢ÍøÍѵڤӼ¡¤ÎÆâÍÆ¤ËƱ°Õ¤¹¤ë¾ì¹ç¤Ï¡¢½¤Àµ¤·¤¿¤â¤Î¤òÄ󶡤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹: ¥½¡¼¥¹¥³¡¼¥É¤òÄ󶡤¹¤ë; ¥ª¥ê¥¸¥Ê¥ë¤Î¥é¥¤¥»¥ó¥¹µÚ¤ÓÃøºî¸¢É½¼¨¤òÊѹ¹¡¦ºï½ü¤·¤Ê¤¤¡¢Moodle¤ÎÇÉÀ¸Êª¤ËƱÍͤΥ饤¥»¥ó¥¹¤òŬÍѤ¹¤ë¡£ ¥é¥¤¥»¥ó¥¹¤ò½ÏÆÉ¤µ¤ì¤¿¾å¤Ç¡¢¤´¼ÁÌäÅù¤ÏÃøºî¸¢½êÍ­¼Ô¤Ë¤ª¿Ò¤Í¤¯¤À¤µ¤¤¡£

                +

                Moodle¤Ï¡¢PHP¤¬Æ°ºî¤¹¤ë¤¢¤é¤æ¤ë¥³¥ó¥Ô¥å¡¼¥¿¤Çưºî¤·¡¢Â¿¼ï¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹(ÆÃ¤ËMySQL)¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£

                +

                The word Moodle¤È¤¤¤¦¸ÀÍդϡ¢ Modular Object-Oriented Dynamic Learning Environment ¤ÎƬʸ»ú¤è¤êºî¤é¤ì¤¿¤â¤Î¤Ç¤¢¤ê¡¢¼ç¤Ë¥×¥í¥°¥é¥Þ¡¼¤ä¶µ°éÍýÏÀ²È¤Ë¤È¤Ã¤ÆÍ­±×¤Ê¥·¥¹¥Æ¥à¤Ç¤¹¡£Moodle¤Ï¡¢ÂÕ¤±¤Æ¶Ê¤¬¤ê¤¯¤Í¤Ã¤Æ¿Ê¤à¥×¥í¥»¥¹¡¢¤½¤Î¥×¥í¥»¥¹¤«¤éȯÀ¸¤¹¤ëʪ»ö¤Ë¼è¤êÁȤळ¤È¡¢Êª»ö¤ÎËܼÁ¤äÁϤÀ­¤ËƳ¤¤¤Æ¤¯¤ì¤ë³Ú¤·¤¤Ï®¤ê²ó¤·¤òɽ¤¹Æ°»ì¤Ç¤â¤¢¤ê¤Þ¤¹¡£½¾¤Ã¤ÆMoodle¤È¤¤¤¦¸ÀÍդϡ¢³«È¯¼êË¡µÚ¤Ó³ØÀ¸¤È¶µ»Õ¤¬¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤Ç³Ø¤Ó¡¢¶µ¤¨¤ëÊýË¡¤ÎξÊý¤ËÅö¤Æ¤Ï¤Þ¤ê¤Þ¤¹¡£Moodle¤òÍøÍѤ¹¤ëÁ´¤Æ¤Î¿Í¤ÏMoodler¤È¸À¤¨¤Þ¤¹¡£

                »äã¤È°ì½ï¤Ëmoodle¤·¤Þ¤·¤ç¤¦!

                -


                +


                -

                Moodleʸ½ñ

                -

                Version: $Id$

                +

                Moodleʸ½ñ

                +

                Version: $Id$

                diff --git a/lang/ja/docs/licence.html b/lang/ja/docs/licence.html index 1598de32651..5634af197a4 100644 --- a/lang/ja/docs/licence.html +++ b/lang/ja/docs/licence.html @@ -12,428 +12,29 @@

                Moodle¤ÎÃøºî¸¢¡¦»ÈÍѵöÂú¾ò·ï

                -

                Moodle™¤Ï¡¢The Moodle Trust¼Ò¤ÎÅÐÏ¿¾¦É¸¤Ç¤¹¡£
                - ¤¢¤Ê¤¿¤Ï¤³¤Î̾¾Î¤ò²¼µ­¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤ëMoodle¥½¥Õ¥È¥¦¥§¥¢¤Ë
                - ´ØÏ¢¤·¤¿³èư¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

                Moodle™¤Ï¡¢The Moodle Trust¼Ò¤ÎÅÐÏ¿¾¦É¸¤Ç¤¹¡£
                + ¤¢¤Ê¤¿¤Ï¤³¤Î̾¾Î¤ò²¼µ­¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤ëMoodle¥½¥Õ¥È¥¦¥§¥¢¤Ë
                + ´ØÏ¢¤·¤¿³èư¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                -

                Moodle¥½¥Õ¥È¥¦¥§¥¢¤ÎÃøºî¸¢© 1999-2004¤Ï¡¢Martin Dougiamas¤¬
                +

                Moodle¥½¥Õ¥È¥¦¥§¥¢¤ÎÃøºî¸¢© 1999-2004¤Ï¡¢Martin Dougiamas¤¬
                Í­¤·¤Þ¤¹¡£

                -

                ¤³¤Î¥×¥í¥°¥é¥à¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹; ¤¢¤Ê¤¿¤Ï¤³¤Î¥×¥í¥°¥é¥à¤ò
                - ¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢ºâÃĤˤè¤Ã¤Æ¸ø³«¤µ¤ì¤¿GNU°ìÈ̸øÍ­»ÈÍѵöÂú¤Î
                - ²¼¤ÇºÆÇÛÉÛ¤Þ¤¿¤Ï½¤Àµ¤·¤¿¤â¤Î¤òºÆÇÛÉÛ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£GNU¤Ï
                - ¥Ð¡¼¥¸¥ç¥ó2¤Þ¤¿¤Ï¤½¤ì°Ê¹ß¤Î¥Ð¡¼¥¸¥ç¥ó(¤¢¤Ê¤¿¤Î¹Í¤¨¤Ç)¤¬Å¬ÍѤµ¤ì¤Þ¤¹¡£

                -

                ¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢Í­±×¤Ç¤¢¤ë¤È¤¤¤¦´õ˾¤ò¸µ¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢
                - °ìÀÚ¤ÎÊݾڤÏÃפ·¤Þ¤»¤ó¡£¤Þ¤¿¡¢°Å¤Ë´Þ¤Þ¤ì¤¿»Ô¾ìÀ­¤ª¤è¤ÓÆÃÄê¤ÎÌÜŪ
                - ¤Ø¤ÎŬ¹çÀ­¤Ë´Ø¤·¤Æ¤â°ìÀÚÊݾÚÃפ·¤Þ¤»¤ó¡£¾ÜºÙ¤Ï²¼µ­¤ËźÉÕ¤·¤¿
                - GNU°ìÈ̸øÍ­»ÈÍѵöÂú¤ò¤ªÆÉ¤ß¤¯¤À¤µ¤¤¡£
                +

                ¤³¤Î¥×¥í¥°¥é¥à¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹; ¤¢¤Ê¤¿¤Ï¤³¤Î¥×¥í¥°¥é¥à¤ò
                + ¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢ºâÃĤˤè¤Ã¤Æ¸ø³«¤µ¤ì¤¿GNU°ìÈ̸øÍ­»ÈÍѵöÂú¤Î
                + ²¼¤ÇºÆÇÛÉÛËô¤Ï½¤Àµ¤·¤¿¤â¤Î¤òºÆÇÛÉÛ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£GNU¤Ï
                + ¥Ð¡¼¥¸¥ç¥ó2Ëô¤Ï¤½¤ì°Ê¹ß¤Î¥Ð¡¼¥¸¥ç¥ó(¤¢¤Ê¤¿¤Î¹Í¤¨¤Ç)¤¬Å¬ÍѤµ¤ì¤Þ¤¹¡£

                +

                ¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢Í­±×¤Ç¤¢¤ë¤È¤¤¤¦´õ˾¤ò¸µ¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢
                + °ìÀÚ¤ÎÊݾڤÏÃפ·¤Þ¤»¤ó¡£¤Þ¤¿¡¢°Å¤Ë´Þ¤Þ¤ì¤¿»Ô¾ìÀ­µÚ¤ÓÆÃÄê¤ÎÌÜŪ
                + ¤Ø¤ÎŬ¹çÀ­¤Ë´Ø¤·¤Æ¤â°ìÀÚÊݾÚÃפ·¤Þ¤»¤ó¡£¾ÜºÙ¤Ï²¼µ­¤ËźÉÕ¤·¤¿
                + GNU°ìÈ̸øÍ­»ÈÍѵöÂú¤ò¤ªÆÉ¤ß¤¯¤À¤µ¤¤¡£


                -
                +
                -
                		    GNU GENERAL PUBLIC LICENSE
                Version 2, June 1991

                Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
                Everyone is permitted to copy and distribute verbatim copies
                of this license document, but changing it is not allowed.

                Preamble

                The licenses for most software are designed to take away your
                freedom to share and change it. By contrast, the GNU General Public
                License is intended to guarantee your freedom to share and change free
                software--to make sure the software is free for all its users. This
                General Public License applies to most of the Free Software
                Foundation's software and to any other program whose authors commit to
                using it. (Some other Free Software Foundation software is covered by
                the GNU Library General Public License instead.) You can apply it to
                your programs, too.

                When we speak of free software, we are referring to freedom, not
                price. Our General Public Licenses are designed to make sure that you
                have the freedom to distribute copies of free software (and charge for
                this service if you wish), that you receive source code or can get it
                if you want it, that you can change the software or use pieces of it
                in new free programs; and that you know you can do these things.

                To protect your rights, we need to make restrictions that forbid
                anyone to deny you these rights or to ask you to surrender the rights.
                These restrictions translate to certain responsibilities for you if you
                distribute copies of the software, or if you modify it.

                For example, if you distribute copies of such a program, whether
                gratis or for a fee, you must give the recipients all the rights that
                you have. You must make sure that they, too, receive or can get the
                source code. And you must show them these terms so they know their
                rights.

                We protect your rights with two steps: (1) copyright the software, and
                (2) offer you this license which gives you legal permission to copy,
                distribute and/or modify the software.

                Also, for each author's protection and ours, we want to make certain
                that everyone understands that there is no warranty for this free
                software. If the software is modified by someone else and passed on, we
                want its recipients to know that what they have is not the original, so
                that any problems introduced by others will not reflect on the original
                authors' reputations.

                Finally, any free program is threatened constantly by software
                patents. We wish to avoid the danger that redistributors of a free
                program will individually obtain patent licenses, in effect making the
                program proprietary. To prevent this, we have made it clear that any
                patent must be licensed for everyone's free use or not licensed at all.

                The precise terms and conditions for copying, distribution and
                modification follow.

                GNU GENERAL PUBLIC LICENSE
                TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

                0. This License applies to any program or other work which contains
                a notice placed by the copyright holder saying it may be distributed
                under the terms of this General Public License. The "Program", below,
                refers to any such program or work, and a "work based on the Program"
                means either the Program or any derivative work under copyright law:
                that is to say, a work containing the Program or a portion of it,
                either verbatim or with modifications and/or translated into another
                language. (Hereinafter, translation is included without limitation in
                the term "modification".) Each licensee is addressed as "you".

                Activities other than copying, distribution and modification are not
                covered by this License; they are outside its scope. The act of
                running the Program is not restricted, and the output from the Program
                is covered only if its contents constitute a work based on the
                Program (independent of having been made by running the Program).
                Whether that is true depends on what the Program does.

                1. You may copy and distribute verbatim copies of the Program's
                source code as you receive it, in any medium, provided that you
                conspicuously and appropriately publish on each copy an appropriate
                copyright notice and disclaimer of warranty; keep intact all the
                notices that refer to this License and to the absence of any warranty;
                and give any other recipients of the Program a copy of this License
                along with the Program.

                You may charge a fee for the physical act of transferring a copy, and
                you may at your option offer warranty protection in exchange for a fee.

                2. You may modify your copy or copies of the Program or any portion
                of it, thus forming a work based on the Program, and copy and
                distribute such modifications or work under the terms of Section 1
                above, provided that you also meet all of these conditions:

                a) You must cause the modified files to carry prominent notices
                stating that you changed the files and the date of any change.

                b) You must cause any work that you distribute or publish, that in
                whole or in part contains or is derived from the Program or any
                part thereof, to be licensed as a whole at no charge to all third
                parties under the terms of this License.

                c) If the modified program normally reads commands interactively
                when run, you must cause it, when started running for such
                interactive use in the most ordinary way, to print or display an
                announcement including an appropriate copyright notice and a
                notice that there is no warranty (or else, saying that you provide
                a warranty) and that users may redistribute the program under
                these conditions, and telling the user how to view a copy of this
                License. (Exception: if the Program itself is interactive but
                does not normally print such an announcement, your work based on
                the Program is not required to print an announcement.)

                These requirements apply to the modified work as a whole. If
                identifiable sections of that work are not derived from the Program,
                and can be reasonably considered independent and separate works in
                themselves, then this License, and its terms, do not apply to those
                sections when you distribute them as separate works. But when you
                distribute the same sections as part of a whole which is a work based
                on the Program, the distribution of the whole must be on the terms of
                this License, whose permissions for other licensees extend to the
                entire whole, and thus to each and every part regardless of who wrote it.

                Thus, it is not the intent of this section to claim rights or contest
                your rights to work written entirely by you; rather, the intent is to
                exercise the right to control the distribution of derivative or
                collective works based on the Program.

                In addition, mere aggregation of another work not based on the Program
                with the Program (or with a work based on the Program) on a volume of
                a storage or distribution medium does not bring the other work under
                the scope of this License.

                3. You may copy and distribute the Program (or a work based on it,
                under Section 2) in object code or executable form under the terms of
                Sections 1 and 2 above provided that you also do one of the following:

                a) Accompany it with the complete corresponding machine-readable
                source code, which must be distributed under the terms of Sections
                1 and 2 above on a medium customarily used for software interchange; or,

                b) Accompany it with a written offer, valid for at least three
                years, to give any third party, for a charge no more than your
                cost of physically performing source distribution, a complete
                machine-readable copy of the corresponding source code, to be
                distributed under the terms of Sections 1 and 2 above on a medium
                customarily used for software interchange; or,

                c) Accompany it with the information you received as to the offer
                to distribute corresponding source code. (This alternative is
                allowed only for noncommercial distribution and only if you
                received the program in object code or executable form with such
                an offer, in accord with Subsection b above.)

                The source code for a work means the preferred form of the work for
                making modifications to it. For an executable work, complete source
                code means all the source code for all modules it contains, plus any
                associated interface definition files, plus the scripts used to
                control compilation and installation of the executable. However, as a
                special exception, the source code distributed need not include
                anything that is normally distributed (in either source or binary
                form) with the major components (compiler, kernel, and so on) of the
                operating system on which the executable runs, unless that component
                itself accompanies the executable.

                If distribution of executable or object code is made by offering
                access to copy from a designated place, then offering equivalent
                access to copy the source code from the same place counts as
                distribution of the source code, even though third parties are not
                compelled to copy the source along with the object code.

                4. You may not copy, modify, sublicense, or distribute the Program
                except as expressly provided under this License. Any attempt
                otherwise to copy, modify, sublicense or distribute the Program is
                void, and will automatically terminate your rights under this License.
                However, parties who have received copies, or rights, from you under
                this License will not have their licenses terminated so long as such
                parties remain in full compliance.

                5. You are not required to accept this License, since you have not
                signed it. However, nothing else grants you permission to modify or
                distribute the Program or its derivative works. These actions are
                prohibited by law if you do not accept this License. Therefore, by
                modifying or distributing the Program (or any work based on the
                Program), you indicate your acceptance of this License to do so, and
                all its terms and conditions for copying, distributing or modifying
                the Program or works based on it.

                6. Each time you redistribute the Program (or any work based on the
                Program), the recipient automatically receives a license from the
                original licensor to copy, distribute or modify the Program subject to
                these terms and conditions. You may not impose any further
                restrictions on the recipients' exercise of the rights granted herein.
                You are not responsible for enforcing compliance by third parties to
                this License.

                7. If, as a consequence of a court judgment or allegation of patent
                infringement or for any other reason (not limited to patent issues),
                conditions are imposed on you (whether by court order, agreement or
                otherwise) that contradict the conditions of this License, they do not
                excuse you from the conditions of this License. If you cannot
                distribute so as to satisfy simultaneously your obligations under this
                License and any other pertinent obligations, then as a consequence you
                may not distribute the Program at all. For example, if a patent
                license would not permit royalty-free redistribution of the Program by
                all those who receive copies directly or indirectly through you, then
                the only way you could satisfy both it and this License would be to
                refrain entirely from distribution of the Program.

                If any portion of this section is held invalid or unenforceable under
                any particular circumstance, the balance of the section is intended to
                apply and the section as a whole is intended to apply in other
                circumstances.

                It is not the purpose of this section to induce you to infringe any
                patents or other property right claims or to contest validity of any
                such claims; this section has the sole purpose of protecting the
                integrity of the free software distribution system, which is
                implemented by public license practices. Many people have made
                generous contributions to the wide range of software distributed
                through that system in reliance on consistent application of that
                system; it is up to the author/donor to decide if he or she is willing
                to distribute software through any other system and a licensee cannot
                impose that choice.

                This section is intended to make thoroughly clear what is believed to
                be a consequence of the rest of this License.

                8. If the distribution and/or use of the Program is restricted in
                certain countries either by patents or by copyrighted interfaces, the
                original copyright holder who places the Program under this License
                may add an explicit geographical distribution limitation excluding
                those countries, so that distribution is permitted only in or among
                countries not thus excluded. In such case, this License incorporates
                the limitation as if written in the body of this License.

                9. The Free Software Foundation may publish revised and/or new versions
                of the General Public License from time to time. Such new versions will
                be similar in spirit to the present version, but may differ in detail to
                address new problems or concerns.

                Each version is given a distinguishing version number. If the Program
                specifies a version number of this License which applies to it and "any
                later version", you have the option of following the terms and conditions
                either of that version or of any later version published by the Free
                Software Foundation. If the Program does not specify a version number of
                this License, you may choose any version ever published by the Free Software
                Foundation.

                10. If you wish to incorporate parts of the Program into other free
                programs whose distribution conditions are different, write to the author
                to ask for permission. For software which is copyrighted by the Free
                Software Foundation, write to the Free Software Foundation; we sometimes
                make exceptions for this. Our decision will be guided by the two goals
                of preserving the free status of all derivatives of our free software and
                of promoting the sharing and reuse of software generally.

                NO WARRANTY

                11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
                FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
                OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
                PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
                OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
                MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
                TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
                PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
                REPAIR OR CORRECTION.

                12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
                WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
                REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
                INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
                OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
                TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
                YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
                PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
                POSSIBILITY OF SUCH DAMAGES.

                END OF TERMS AND CONDITIONS
                -
                -			    GNU  °ìÈ̸øÍ­»ÈÍѵöÂú½ñ
                -			    =======================
                -
                -
                -
                -                             1991 ǯ6 ·î¡¤¥Ð¡¼¥¸¥ç¥ó2
                -
                -                Copyright (C) 1989,1991 Free Software Foundation, Inc.
                -                     675 Mass Ave, Cambridge, MA 02139, USA
                -
                -
                -
                -²¿¿Í¤â¡¢°Ê²¼¤ÎÆâÍÆ¤òÊѹ¹¤·¤Ê¤¤¤Ç¤½¤Î¤Þ¤ÞÊ£¼Ì¤¹¤ë¾ì¹ç¤Ë¸Â¤ê¡¢ËÜ»ÈÍѵöÂú½ñ¤òÊ£À½¤·
                -¤¿¤êÈÒÉÛ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                -
                -
                -
                -¤Ï¤¸¤á¤Ë
                ---------
                -
                -
                -¤Û¤È¤ó¤É¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î»ÈÍѵöÂú¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢¤ò¶¦Í­¤·¡¢Êѹ¹¤¹¤ë¥æ¡¼¥¶¤Î¼«Í³¤ò
                -Ã¥¤¦¤³¤È¤ò°Õ¿Þ¤·¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤ËÂФ·¤Æ¡¢²æ¡¹¤ÎGNU °ìÈ̸øÍ­»ÈÍѵöÂú¤Ï¡¢¥Õ¥ê¡¼¡¦¥½
                -¥Õ¥È¥¦¥§¥¢¤ò¶¦Í­¤·¤¿¤êÊѹ¹¤¹¤ë¼«Í³¤ò¥æ¡¼¥¶¤ËÊݾڤ¹¤ë¤¿¤á¤Î¤â¤Î¡¢Â¨¤Á¥Õ¥ê¡¼¡¦¥½¥Õ
                -¥È¥¦¥§¥¢¤¬¤½¤Î¥æ¡¼¥¶Á´¤Æ¤Ë¤È¤Ã¤Æ¥Õ¥ê¡¼¤Ç¤¢¤ë¤³¤È¤òÊݾڤ¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£ËÜ»ÈÍÑ
                -µöÂú¤Ï¡¢Free Software Foundation ¤Î¤Û¤È¤ó¤ÉÁ´¤Æ¤Î¥½¥Õ¥È¥¦¥§¥¢¤ËŬÍѤµ¤ì¤ë¤À¤±¤Ç
                -¤Ê¤¯¡¢¥×¥í¥°¥é¥à¤ÎºîÀ®¼Ô¤¬ËÜ»ÈÍѵöÂú¤Ë°Í¤ë¤È¤·¤¿¾ì¹ç¤Î¤½¤Î¥×¥í¥°¥é¥à¤Ë¤âŬÍѤ¹¤ë
                -¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£(¤½¤Î¾¤ÎFree Software Foundation ¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î¤¤¤¯¤Ä¤«¤Ï¡¢ËÜ
                -µöÂú½ñ¤Ç¤Ï¤Ê¤¯¡¢GNU ¥é¥¤¥Ö¥é¥ê°ìÈ̸øÍ­»ÈÍѵöÂú¤ÇÊݸ¤ì¤Þ¤¹¡£) ¤¢¤Ê¤¿¤Ï¼«Ê¬¤Î¥×
                -¥í¥°¥é¥à¤Ë¤â¤³¤ì¤òŬÍѤǤ­¤Þ¤¹¡£²æ¡¹¤¬¥Õ¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤Ë¤Ä¤¤¤Æ¸À¤¦¾ì¹ç¤Ï¼«Í³
                -¤Î¤³¤È¤Ë¸ÀµÚ¤·¤Æ¤¤¤ë¤Î¤Ç¤¢¤Ã¤Æ¡¢²Á³Ê¤Î¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£²æ¡¹¤Î°ìÈ̸øÍ­»ÈÍѵöÂú
                -¤Î³Æ¾ò¹à¤Ï¡¢¼¡¤Î»öÊÁ¤ò³Î¼Â¤Ë¼Â¸½¤¹¤ë¤³¤È¤òÌÜŪ¤È¤·¤ÆÎ©°Æ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
                -
                -   ¡¦ ¥Õ¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤ÎÊ£À½Êª¤ò¼«Í³¤ËÈÒÉۤǤ­¤ë¤³¤È(¤½¤·¤Æ¡¢Ë¾¤à¤Ê¤é¤¢¤Ê¤¿
                -      ¤Î¤³¤Î¥µ¡¼¥Ó¥¹¤ËÂФ·¤ÆÂвÁ¤òÀÁµá¤Ç¤­¤ë¤³¤È)¡£
                -
                -   ¡¦ ¥½¡¼¥¹¡¦¥³¡¼¥É¤ò¼ÂºÝ¤Ë¼õ¤±¼è¤ë¤«¡¢¤¢¤ë¤¤¤Ï¡¢´õ˾¤·¤µ¤¨¤¹¤ì¤Ð¤½¤ì¤òÆþ¼ê¤¹¤ë
                -      ¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¤³¤È¡£
                -
                -   ¡¦ Æþ¼ê¤·¤¿¥½¥Õ¥È¥¦¥§¥¢¤òÊѹ¹¤·¤¿¤ê¡¢¿·¤·¤¤¥Õ¥ê¡¼¡¦¥×¥í¥°¥é¥à¤Î°ìÉô¤È¤·¤Æ»ÈÍÑ
                -      ¤Ç¤­¤ë¤³¤È¡£
                -
                -   ¡¦ °Ê¾å¤Î³ÆÆâÍÆ¤ò¹Ô¤Ê¤¦¤³¤È¤¬¤Ç¤­¤ë¤È¤¤¤¦¤³¤È¤ò¥æ¡¼¥¶¼«¿È¤¬ÃΤäƤ¤¤ë¤³¤È¡£
                -
                -¤³¤Î¤è¤¦¤Ê¥æ¡¼¥¶¤Î¸¢Íø¤ò¼é¤ë¤¿¤á¤Ë¡¢²æ¡¹¤Ï¡¢²¿¿Í¤â¤³¤ì¤é¤Î¸¢Íø¤òÈÝÄꤷ¤¿¤ê¡¢¤¢¤ë
                -¤¤¤ÏÊü´þ¤¹¤ë¤è¤¦¤Ë¥æ¡¼¥¶¤Ëµá¤á¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¤È¤¤¤¦À©¸Â¾ò¹à¤òÀߤ±¤ëɬÍפ¬¤¢¤ê¤Þ
                -¤¹¡£¤³¤ì¤é¤ÎÀ©¸Â¾ò¹à¤Ï¡¢¥æ¡¼¥¶¤¬¡¢¥Õ¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤ÎÊ£À½Êª¤òÈÒÉÛ¤·¤¿¤êÊѹ¹¤·
                -¤è¤¦¤È¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î¥æ¡¼¥¶¼«¿È¤¬¼é¤ë¤Ù¤­µÁ̳¤È¤â¤Ê¤ê¤Þ¤¹¡£Î㤨¤Ð¡¢¤¢¤Ê¤¿¤¬¥Õ
                -¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤ÎÊ£À½Êª¤òÈÒÉÛ¤¹¤ë¾ì¹ç¡¢Í­½þ¤«Ìµ½þ¤«¤Ë¤«¤«¤ï¤é¤º¡¢¤¢¤Ê¤¿¤Ï¼«Ê¬
                -¤Î»ý¤Ã¤Æ¤¤¤ë¸¢Íø¤òÁ´¤ÆÁê¼ê¤ËÍ¿¤¨¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤¢¤Ê¤¿¤Ï¡¢Áê¼ê¤â¤Þ¤¿¥½¡¼¥¹¡¦
                -¥³¡¼¥É¤ò¼õ¤±¼è¤Ã¤¿¤êÆþ¼ê¤Ç¤­¤ë¤È¤¤¤¦¤³¤È¤òǧ¤á¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤µ¤é¤Ë¤¢¤Ê¤¿¤Ï¡¢
                -Èà¤é¤¬¼«Ê¬¤¿¤Á¤Î¸¢Íø¤òÃΤë¤è¤¦¤Ë¡¢¤³¤ì¤é¤Î¾ò¹à¤òÃΤ餷¤á¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
                -
                -²æ¡¹¤Ï¼¡¤Î£²¤Ä¤ÎÊýË¡¤Ç¥æ¡¼¥¶¤Î¸¢Íø¤ò¼é¤ê¤Þ¤¹¡£(1) ¥½¥Õ¥È¥¦¥§¥¢¤ËÃøºî¸¢¤ò¼çÄ¥¤·¡¢
                -(2) ËÜ»ÈÍѵöÂú¤Î¾ò¹à¤Î²¼¤Ç¥½¥Õ¥È¥¦¥§¥¢¤òÊ£À½¡¦ÈÒÉÛ¡¦Êѹ¹¤¹¤ë¸¢Íø¤ò¥æ¡¼¥¶¤ËÍ¿¤¨¤Þ
                -¤¹¡£
                -
                -¤Þ¤¿¡¢³ÆºîÀ®¼Ô¤ä²æ¡¹¼«¿È¤ò¼é¤ë¤¿¤á¤Ë¡¢Ëܥե꡼¡¦¥½¥Õ¥È¥¦¥§¥¢¤¬ÌµÊݾڤǤ¢¤ë¤³¤È¤ò
                -Á´¤Æ¤Î¿Í¡¹¤¬Î»²ò¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤µ¤é¤Ë¡¢Â¾¤Î狼¤Ë¤è¤Ã¤ÆÊѹ¹¤µ¤ì¤¿¥½¥Õ¥È
                -¥¦¥§¥¢¤¬ÈÒÉÛ¤µ¤ì¤¿¾ì¹ç¡¢¼õÎμԤϤ½¤Î¥½¥Õ¥È¥¦¥§¥¢¤¬¥ª¥ê¥¸¥Ê¥ë¡¦¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¤Ê¤¤
                -¤È¤¤¤¦¤³¤È¤òÃΤ餵¤ì¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤Ï¡¢Â¾¿Í¤Î´ØÍ¿¤Ë¤è¤Ã¤Æ¸¶³«È¯¼Ô¤ËÂФ¹¤ë
                -ɾ²Á¤¬±Æ¶Á¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ç¤¹¡£
                -
                -ºÇ¸å¤Ë¡¢¤É¤Î¥Õ¥ê¡¼¡¦¥×¥í¥°¥é¥à¤â¥½¥Õ¥È¥¦¥§¥¢ÆÃµö¤ËÀ䤨¤º¶¼¤«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£²æ¡¹¤Ï¡¢
                -¥Õ¥ê¡¼¡¦¥×¥í¥°¥é¥à¤ÎºÆÈÒÉÛ¼Ô¤¬¸Ä¿ÍŪ¤ËÆÃµö¸¢¤ò¼èÆÀ¤·¡¢»ö¼Â¾å¤½¤Î¥×¥í¥°¥é¥à¤ò¼«Ê¬
                -¤Îºâ»º¤Ë¤·¤Æ¤·¤Þ¤¦¤È¤¤¤¦´í¸±¤òÈò¤±¤¿¤¤¤È´ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤òËɤ°¤¿¤á¤Ë²æ¡¹¤Ï¡¢¤¤
                -¤º¤ì¤ÎÆÃµö¤â¡¢Ã¯¤Ç¤â¼«Í³¤Ë»ÈÍѤǤ­¤ë¤è¤¦¤Ë»ÈÍѵöÂú¤µ¤ì¤ë¤Ù¤­¤«¡¢¤¢¤ë¤¤¤Ï²¿¿Í¤ËÂÐ
                -¤·¤Æ¤âÁ´¤¯»ÈÍѤµ¤»¤Ê¤¤¤«¤Î¡¢¤¤¤º¤ì¤«¤Ë¤¹¤Ù¤­¤Ç¤¢¤ë¤³¤È¤òÌÀ¤é¤«¤Ë¤·¤Æ¤­¤Þ¤·¤¿¡£
                -
                -  Ê£¼Ì¡¦ÈÒÉÛ¡¦Êѹ¹¤ËÂФ¹¤ëÀµ³Î¤Ê¾ò¹à¤È¾ò·ï¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£
                -
                -
                -
                -GNU °ìÈ̸øÍ­»ÈÍѵöÂú¤Î²¼¤Ç¤ÎÊ£À½¡¢ÈÒÉÛ¡¢Êѹ¹¤Ë´Ø¤¹¤ë¾ò¹à¤È¾ò·ï
                -==============================================================
                -
                -
                -   1. ËÜ»ÈÍѵöÂú¤Ï¡¢ËܰìÈ̸øÍ­»ÈÍѵöÂú¤Î³Æ¾ò¹à¤Ë½¾¤Ã¤ÆÈÒÉÛ¤µ¤ì¤ë¤È¤¤¤¦Ãøºî¸¢¼Ô¤«
                -      ¤é¤Î¹ðÃÎʸ¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤ä¤½¤Î¾¤ÎºîÀ®Êª¤ËŬÍѤµ¤ì¤Þ¤¹¡£°Ê²¼¤Ë
                -      ¤ª¤¤¤Æ¡Ö¥×¥í¥°¥é¥à¡×¤È¤Ï¡¢¤½¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤äºîÀ®Êª¤ò»Ø¤¹¤â¤Î¤È¤·¡¢¤Þ¤¿¡¢
                -     ¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×¤È¤Ï¡¢¾å½Ò¤·¤¿¡Ö¥×¥í¥°¥é¥à¡×¼«¿È¡¢¤Þ¤¿¤Ï¡¢Ãøºî¸¢Ë¡²¼¤Ë
                -     ¤ª¤±¤ëÁ´¤Æ¤ÎÇÉÀ¸Êª¡¨¤¹¤Ê¤ï¤Á¡¢¤½¤Î¡Ö¥×¥í¥°¥é¥à¡×¤ÎÁ´ÉôËô¤Ï°ìÉô¤ò¡¢¤½¤Î¤Þ¤Þ
                -     Ëô¤ÏÊѹ¹¤·¤Æ¡¢³î¤Ä¡¿Ëô¤Ï¾¤Î¸À¸ì¤ËÊÑ´¹¤·¤Æ¡¢ÆâÉô¤ËÁȤ߹þ¤ó¤ÀºîÀ®Êª¤ò°ÕÌ£¤·
                -     ¤Þ¤¹¡£(°Ê²¼¡¢¸À¸ìÊÑ´¹¤Ï¡ÖÊѹ¹¡×¤È¤¤¤¦ÍѸì¤ÎÃæ¤Ë̵¾ò·ï¤Ë´Þ¤Þ¤ì¤ë¤â¤Î¤È¤·¤Þ¤¹¡£)
                -     ËÜ»ÈÍѵöÂú¤Ë¤è¤Ã¤ÆµöÂú¤ò¼õ¤±¤ë¼Ô¤ò¡Ö¤¢¤Ê¤¿¡×¤È¸Æ¤Ó¤Þ¤¹¡£ 
                -
                -
                -     Ê£À½¡¢ÈÒÉÛ¡¢Êѹ¹°Ê³°¤Î¹Ô°Ù¤ÏËÜ»ÈÍѵöÂú¤ÎÂоݤȤ·¤Þ¤»¤ó¡£¤½¤ì¤é¤ÏËÜ»ÈÍѵöÂú
                -     ¤ÎÈϰϳ°¤Ç¤¹¡£¡Ö¥×¥í¥°¥é¥à¡×¤ò¼Â¹Ô¤µ¤»¤ë¹Ô°Ù¤Ë´Ø¤·¤ÆÀ©Ìó¤Ï¤¢¤ê¤Þ¤»¤ó¡£¡Ö¥×
                -     ¥í¥°¥é¥à¡×¤Î½ÐÎϤϡ¢( ¡Ö¥×¥í¥°¥é¥à¡×¤ò¼Â¹Ô¤µ¤»¤ÆºîÀ®¤µ¤»¤¿¤«¤É¤¦¤«¤È¤Ï̵´Ø
                -     ·¸¤Ë) ¤½¤ÎÆâÍÆ¤¬¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×¤Ç¤¢¤ë¾ì¹ç¤Ë¸Â¤êËÜ»ÈÍѵöÂú¤ÎÂоݤȤʤê
                -     ¤Þ¤¹¡£¤³¤ì¤¬Åö¤Æ¤Ï¤Þ¤ë¤«¤É¤¦¤«¤Ï¡¢¡Ö¥×¥í¥°¥é¥à¡×¤¬²¿¤ò¤¹¤ë¤â¤Î¤«¤Ë°Í¤ê¤Þ¤¹¡£
                -
                -
                -   2. ¤¢¤Ê¤¿¤Ï¡¢¤É¤Î¤è¤¦¤ÊÇÞÂÎ¾å¤ØÊ£À½¤·¤è¤¦¤È¤¹¤ë¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â¡¢Æþ¼ê¤·¤¿¡Ö¥×¥í
                -      ¥°¥é¥à¡×¤Î¥½¡¼¥¹¡¦¥³¡¼¥É¤ò¤½¤Î¤Þ¤Þ¤ÎÆâÍÆ¤ÇÊ£¼Ì¤·¤¿¾å¤ÇŬÀµ¤ÊÃøºî¸¢É½¼¨¤ÈÊÝ
                -      ¾Ú¤ÎÊü´þ¤òÌÀ³Î¡¢³î¤ÄŬÀµ¤ËÉÕµ­¤¹¤ë¾ì¹ç¤Ë¸Â¤ê¡¢Ê£À½Ëô¤ÏÈÒÉÛ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ
                -      ¤¹¡£¤½¤Î¾ì¹ç¡¢ËÜ»ÈÍѵöÂú¤ª¤è¤Ó̵Êݾڤ˴ؤ¹¤ëµ­ºÜÉôʬ¤Ï¡¢Á´¤Æ¸µ¤Î¤Þ¤Þ¤Î·Á¤Çɽ
                -      ¼¨¤·¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢¡Ö¥×¥í¥° ¥é¥à¡×¤ÎÈÒÉÛÀè¤ËÂФ·¤Æ¤Ï¡¢¡Ö¥×¥í¥°¥é¥à¡×¤È
                -      ¶¦¤ËËÜ»ÈÍѵöÂú½ñ¤Î¼Ì¤·¤òÅϤ·¤Æ¤¯¤À¤µ¤¤¡£Ê£À½Êª¤Î°ú¤­ÅϤ·¤ËÍפ¹¤ë¼ÂÈñ¤ÏÀÁµá
                -      ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¤¢¤Ê¤¿ÆÈ¼«¤ÎÊݾڤò¹Ô¤Ê¤¦¾ì¹ç¤Ï¤½¤ì¤òÍ­½þ¤È¤¹¤ë¤³
                -      ¤È¤¬¤Ç¤­¤Þ¤¹¡£
                -
                -
                -   3. ¼¡¤Î³Æ¾ò·ï¤òÁ´¤ÆËþ¤¿¤·¤Æ¤¤¤ë¸Â¤ê¡¢¤¢¤Ê¤¿¤Ï¡¢¡Ö¥×¥í¥°¥é¥à¡×Ëô¤Ï¤½¤Î°ìÉôʬ¤ò
                -      Êѹ¹¤·¤Æ¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×¤È¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤Ë¡¢Êѹ¹ÈǤ䱦ºîÀ®Êª¤ò¾å
                -      µ­Âè 2 ¹à¤Ë½¾¤Ã¤ÆÊ£À½Ëô¤ÏÈÒÉÛ¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
                -
                -     (a) ¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤¿»Ý¤È¤½¤ÎÊѹ¹Æü¤È¤ò¡¢Êѹ¹¤·¤¿¥Õ¥¡¥¤¥ë¾å¤ËÌÀ³Î¤Ëɽ¼¨¤¹
                -         ¤ë¤³¤È¡£
                -
                -     (b) Êѹ¹¤·¤¿¤«Èݤ«¤òÌä¤ï¤º¡¢ËÞ¤½¡Ö¥×¥í¥°¥é¥à¡×Ëô¤Ï¤½¤Î°ìÉôʬ¤òÆâÉô¤ËÁȤ߹þ
                -         ¤ó¤Ç¤¤¤ë¤«Ëô¤Ï¤½¤ì¤«¤éÇÉÀ¸¤·¤¿À¸À®Êª¤òÈÒÉÛ¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤ÎÁ´ÂΤòËÜ»È
                -         ÍѵöÂú¤Î¾ò¹à¤Ë½¾¤Ã¤ÆÂè»°¼Ô¤ØÌµ½þ¤Ç»ÈÍѵöÂú¤¹¤ë¤³¤È¡£
                -
                -     (c) Êѹ¹¤·¤¿¥×¥í¥°¥é¥à¤¬¼Â¹Ô»þ¤ËÄ̾ï¤ÎÂÐÏÃŪ¤ÊÊýË¡¤Ç¥³¥Þ¥ó¥É¤òÆÉ¤à¤è¤¦¤Ë¤Ê¤Ã 
                -         ¤Æ¤¤¤ë¤È¤¹¤ì¤Ð¡¢ºÇ¤âÉáÄ̤ÎÊýË¡¤ÇÂÐÏÃŪ¤Ë¤½¤Î¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë»þ¤Ë¡¢
                -         ¼¡¤ÎÆâÍÆ¤ò¼¨¤¹Ê¸¸À¤¬¥×¥ê¥ó¥¿¤Ø°õ»ú¤µ¤ì¤ë¤«¡¢°¿¤¤¤Ï²èÌ̤Ëɽ¼¨¤µ¤ì¤ë¤³¤È¡£
                -
                -         ¡¦Å¬ÀÚ¤ÊÃøºî¸¢É½¼¨¡£
                -         ¡¦ÌµÊݾڤǤ¢¤ë¤³¤È(¤¢¤Ê¤¿¤¬ÆÈ¼«¤ËÊݾڤ¹¤ë¾ì¹ç¤Ï¡¢¤½¤Î»Ý)¡£
                -         ¡¦ÈÒÉÛ¤ò¼õ¤±¤ë¼Ô¤â¡¢ËÜ»ÈÍѵöÂú¤ÈƱ°ì¤Î¾ò¹à¤Ë½¾¤Ã¤Æ¡Ö¥×¥í¥°¥é¥à¡×¤òºÆÈÒ
                -	   ÉۤǤ­¤ë¤³¤È¡£
                -         ¡¦ÈÒÉÛ¤ò¼õ¤±¤ë¼Ô¤¬ËÜ»ÈÍѵöÂú½ñ¤Î¼Ì¤·¤ò»²¾È¤¹¤ëÊýË¡¡£
                -
                -         (Îã³°¤È¤·¤Æ¡¢¡Ö¥×¥í¥°¥é¥à¡×¼«ÂΤÏÂÐÏÃŪ¤Ç¤¢¤Ã¤Æ¤âµ¯Æ°»þ¤Îʸ¸À¤òÄ̾ï¤Ï°õ
                -         »ú¤·¤Ê¤¤¤Î¤Ê¤é¤Ð¡¢¤¢¤Ê¤¿¤Î¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×¤Ï¤³¤Î¤è¤¦¤Êʸ¸À¤ò°õ»ú¤¹
                -         ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£)
                -
                -     ¤³¤ì¤é¤ÎÍ×·ï¤ÏÊѹ¹¤µ¤ì¤¿ºîÀ®Êª¤Ë¤âÁ´¤ÆÅ¬ÍѤµ¤ì¤Þ¤¹¡£¤½¤ÎÊѹ¹ÈǤΰ¿¤ëÉôʬ¤¬
                -    ¡Ö¥×¥í¥°¥é¥à¡×¤ÎÇÉÀ¸Êª¤Ç¤Ï¤Ê¤¯¡¢¤·¤«¤â¤½¤ì¼«ÂÎÆÈΩ¤Ç°Û¤Ê¤ëºîÀ®Êª¤À¤È¹çÍýŪ¤Ë
                -     ¹Í¤¨¤é¤ì¤ë¾ì¹ç¡¢¤¢¤Ê¤¿¤¬¤½¤ì¤é¤òÊ̤κîÀ®Êª¤È¤·¤ÆÈÒÉÛ¤·¤¿»þ¤Ï¡¢ËÜ»ÈÍѵöÂú¤È
                -     ¤½¤Î¾ò¹à¤Ï¤½¤ì¤é¤ÎÉôʬ¤Ë¤ÏŬÍѤµ¤ì¤Þ¤»¤ó¡£¤·¤«¤·¡¢¤½¤ì¤é¤ò¡Ö¥×¥í¥°¥é¥àÀ¸À®
                -     ʪ¡×¤Î°ìÉô¤È¤·¤ÆÈÒÉÛ¤¹¤ë¾ì¹ç¤Ï¡¢Á´ÂΤ¬ËÜ»ÈÍѵöÂú¤Î¾ò¹à¤Ë½¾¤Ã¤ÆÈÒÉÛ¤µ¤ì¤Ê¤±
                -     ¤ì¤Ð¤Ê¤é¤º¡¢»ÈÍѵöÂú¤ò¼õ¤±¤ë¾¤ÎÁ´¤Æ¤Î¼Ô¤ËÂФ¹¤ëµöÂú¤â¥×¥í¥°¥é¥àÁ´ÂΤˤ錄¤Ã
                -     ¤ÆÍ¿¤¨¤é¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢·ë²Ì¤È¤·¤Æ¡¢Ã¯¤¬½ñ¤¤¤¿¤«¤Ë¤«¤«¤ï¤é¤º¡¢Á´¤Æ¤ÎÉôʬ
                -     ¤ËËÜ»ÈÍѵöÂú¤¬Å¬ÍѤµ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
                -
                -     ¤³¤Î¤è¤¦¤Ë¡¢Ëܾò¹à¤Î°Õ¿Þ¤¹¤ë¤È¤³¤í¤Ï¡¢´°Á´¤Ë¤¢¤Ê¤¿¤Ë¤è¤Ã¤Æ½ñ¤«¤ì¤¿ºîÀ®Êª¤Ë
                -     ¤Ä¤¤¤Æ¡¢¸¢Íø¤òÍ׵ᤷ¤¿¤ê¡¢¤¢¤Ê¤¿¤È¸¢Íø´Ø·¸¤òÁ褦¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤à¤·¤í
                -     ¤½¤ÎÌÜŪ¤Ï¡¢ºîÀ®Êª¤¬¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×¤Ç¤¢¤ë¾ì¹ç¤Ë¤½¤ÎÇÉÀ¸Êª¤ä½¸¹çʪ¤ÎÈÒ
                -     ÉÛ¤òµ¬À©¤¹¤ë¤³¤È¤Ë¤¢¤ê¤Þ¤¹¡£
                -
                -     ¤µ¤é¤Ë¡¢¡Ö¥×¥í¥°¥é¥à¡×(Ëô¤Ï¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×) ¤È¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×¤È¤Ï
                -     ¤Ê¤é¤Ê¤¤Â¾¤Î¥×¥í¥°¥é¥à¤È¤ò¡¢Ã±¤ËÊݴɤäÈÒÉۤΤ¿¤á¤ËƱ°ì¤ÎÇÞÂξå¤Ë¤Þ¤È¤á¤Æµ­
                -     Ï¿¤·¤¿¤È¤·¤Æ¤â¡¢ËÜ»ÈÍѵöÂú¤Ï¾¤Î¥×¥í¥°¥é¥à¤Ë¤ÏŬÍѤµ¤ì¤Þ¤»¤ó¡£
                -
                -
                - 4. ¤¢¤Ê¤¿¤Ï¡¢°Ê²¼¤Î¤¦¤Á¤¤¤º¤ì¤«1 ¤Ä¤òËþ¤¿¤¹¸Â¤ê¡¢¾åµ­Âè2 ¹à¤ª¤è¤ÓÂè3 ¹à¤Ë½¾¤Ã¤Æ
                -    ¡Ö¥×¥í¥°¥é¥à¡×(Ëô¤Ï¡¢¾åµ­Âè3 ¹à¤Ç¸ÀµÚ¤·¤Æ¤¤¤ë¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×)¤ò¥ª¥Ö¥¸¥§
                -    ¥¯¥È¡¦¥³¡¼¥ÉËô¤Ï¼Â¹Ô²Äǽ¤Ê·Á¼°¤ÇÊ£À½¤ª¤è¤ÓÈÒÉÛ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                -
                -    (a) Âбþ¤¹¤ëµ¡³£ÆÉ¤ß¼è¤ê²Äǽ¤Ê¥½¡¼¥¹¡¦¥³¡¼¥É°ì¼°¤ò°ì½ï¤Ë°ú¤­ÅϤ¹¤³¤È¡£¤½¤Î¾ì
                -        ¹ç¡¢¤½¤Î¥½¡¼¥¹¡¦¥³¡¼¥É¤Î°ú¤­ÅϤ·¤Ï¾åµ­Âè2 ¹à¤ª¤è¤ÓÂè 3 ¹à¤Ë½¾¤Ã¤Æ¡¢Ä̾諒
                -        ¥Õ¥È¥¦¥§¥¢¤Î¸ò´¹¤ËÍѤ¤¤é¤ì¤ëÇÞÂΤǹԤʤï¤ì¤ë¤³¤È¡£
                -
                -    (b) ¾¯¤Ê¤¯¤È¤â3 ǯ´Ö¤ÎÍ­¸ú´ü´Ö¤òÄê¤á¡¢³î¤Ä¤½¤Î´ü´ÖÆâ¤Ç¤¢¤ì¤ÐÂбþ¤¹¤ëµ¡³£ÆÉ¤ß
                -        ¼è¤ê²Äǽ¤Ê¥½¡¼¥¹¡¦¥³¡¼¥É°ì¼°¤ÎÊ£À½¤ò¡¢¥½¡¼¥¹ÈÒÉۤ˴ؤï¤ë¼ÂÈñ°Ê¾å¤ÎÂвÁ¤ò
                -        Í׵᤻¤º¤ËÄ󶡤¹¤ë»Ý¡¢¤ª¤è¤Ó¤½¤Î¾ì¹ç¤Ë¤Ï¾åµ­Âè2 ¹à¤ª¤è¤ÓÂè3 ¹à¤Ë½¾¤Ã¤Æ¡¢Ä̾ï
                -        ¥½¥Õ¥È¥¦¥§¥¢¤Î¸ò´¹¤ËÍѤ¤¤é¤ì¤ëÇÞÂΤÇÄ󶡤µ¤ì¤ë»Ý¤òµ­ºÜ¤·¤¿½ñÌ̤ò¡¢Âè»°¼Ô
                -        ¤Ë°ì½ï¤Ë°ú¤­ÅϤ¹¤³¤È¡£
                -
                -    (c) Âбþ¤¹¤ë¥½¡¼¥¹¡¦¥³¡¼¥ÉÈÒÉۤ、·½Ð¤ËºÝ¤·¤Æ¡¢¤¢¤Ê¤¿¤¬ÆÀ¤¿¾ðÊó¤ò°ì½ï¤Ë°ú¤­
                -        ÅϤ¹¤³¤È¡£(¤³¤ÎÁªÂò»è¤Ï¡¢±ÄÍø¤òÌÜŪ¤È¤·¤Ê¤¤ÈÒÉۤǤ¢¤Ã¤Æ¡¢³î¤Ä¤¢¤Ê¤¿¤¬¾å
                -        µ­¤Î (b) ¹à¤Ë´ð¤Å¤¤¤Æ¡¢¥ª¥Ö¥¸¥§¥¯¥È¡¦¥³¡¼¥É°¿¤¤¤Ï¼Â¹Ô²Äǽ·Á¼°¤Î¥×¥í¥°¥é¥à
                -        ¤·¤«Æþ¼ê¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¸Â¤êŬÍѤµ¤ì¤ëÁªÂò¹àÌܤǤ¹¡£)
                -
                -
                -    ¤Ê¤ª¡¢¥½¡¼¥¹¡¦¥³¡¼¥É¤È¤Ï¡¢Êѹ¹ºî¶È¤ËŬ¤·¤¿µ­½Ò·Á¼°¤ò»Ø¤·¤Þ¤¹¡£¤Þ¤¿¡¢¼Â¹Ô²Äǽ
                -    ·Á¼°¤Î¥Õ¥¡¥¤¥ë¤ËÂбþ¤¹¤ë¥½¡¼¥¹¡¦¥³¡¼¥É°ì¼°¤È¤Ï¡¢¤½¤ì¤Ë´Þ¤Þ¤ì¤ëÁ´¥â¥¸¥å¡¼¥ë¤Ë
                -    Âбþ¤¹¤ëÁ´¤Æ¤Î¥½¡¼¥¹¡¦¥³¡¼¥É¡¢¤ª¤è¤Ó¤¢¤é¤æ¤ë´ØÏ¢¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹ÄêµÁ¥Õ¥¡¥¤¥ë¡¢
                -    ¤ª¤è¤Ó¼Â¹Ô¤ò²Äǽ¤Ë¤¹¤ë¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ë¤ÎÀ©¸æ¤Ë´Ø¤¹¤ëµ­½Ò¤ò»Ø¤·¤Þ¤¹¡£ÆÃ
                -    Ê̤ÊÎã³°¤È¤·¤Æ¡¢¼Â¹Ô²Äǽ¤Ê¥Õ¥¡¥¤¥ë¤¬Æ°ºî¤¹¤ë¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Î¼çÍ×
                -    ¤Ê¹½À®Í×ÁÇ(¥³¥ó¥Ñ¥¤¥é¡¢¥«¡¼¥Í¥ë¤Ê¤É) ¤È¶¦¤Ë(¥½¡¼¥¹¡¦¥³¡¼¥ÉËô¤Ï¥Ð¥¤¥Ê¥ê¤Î¤É¤Á
                -    ¤é¤«¤Ç) ÈÒÉÛ¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤½¤Î¹½À®Í×ÁǼ«ÂΤ¬¼Â¹Ô·Á¼°¤ËÉտ路¤Æ¤¤
                -    ¤Ê¤¤¾ì¹ç¤Ë¸Â¤ê¡¢ÈÒÉÛ¤µ¤ì¤ë¥½¡¼¥¹¡¦¥³¡¼¥É¤Ë´Þ¤á¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£
                -
                -    ¼Â¹Ô²Äǽ·Á¼°¤Þ¤¿¤Ï¥ª¥Ö¥¸¥§¥¯¥È¡¦¥³¡¼¥É¤ÎÈÒÉÛ¤¬¡¢»Ø¼¨¤µ¤ì¤¿¾ì½ê¤«¤é¤ÎÊ£À½¤Î¤¿
                -    ¤á¤Î¥¢¥¯¥»¥¹¸¢¤ÎÉêÍ¿¤Ç¤¢¤ë¾ì¹ç¡¢Æ±¤¸¾ì½ê¤«¤é¤Î¥½¡¼¥¹¡¦¥³¡¼¥É¤ÎÊ£À½¤Î¤¿¤á¤ÎƱ
                -    Åù¤Ê¥¢¥¯¥»¥¹¸¢¤òÉêÍ¿¤¹¤ì¤Ð¡¢¤¿¤È¤¨Âè»°¼Ô¤Ë¥ª¥Ö¥¸¥§¥¯¥È¡¦¥³¡¼¥É¤È¶¦¤Ë¥½¡¼¥¹¤Î
                -    Ê£À½¤ò¶¯¤¤¤Ê¤¯¤È¤â¡¢¥½¡¼¥¹¡¦¥³¡¼¥É¤òÈÒÉÛ¤·¤¿¤â¤Î¤È¤ß¤Ê¤·¤Þ¤¹¡£
                -
                -
                - 5. ËÜ»ÈÍѵöÂú¤¬ÌÀ¼¨Åª¤ËµöÂú¤·¤Æ¤¤¤ë¾ì¹ç¤ò½ü¤­¡¢¤¢¤Ê¤¿¤Ï¡¢¡Ö¥×¥í¥°¥é¥à¡×¤òÊ£À½¡¢
                -    Êѹ¹¡¢¥µ¥Ö¥é¥¤¥»¥ó¥¹¡¢ÈÒÉÛ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ËÜ»ÈÍѵöÂú¤Ë½¾¤ï¤º¤Ë¡Ö¥×¥í¥°
                -    ¥é¥à¡×¤òÊ£À½¡¢Êѹ¹¡¢¥µ¥Ö¥é¥¤¥»¥ó¥¹¡¢ÈÒÉÛ¤·¤è¤¦¤È¤¹¤ë¹Ô°Ù¤Ï¡¢¤½¤ì¼«ÂΤ¬Ìµ¸ú¤Ç
                -    ¤¢¤ê¡¢³î¤Ä¡¢ËÜ»ÈÍѵöÂú¤¬¤¢¤Ê¤¿¤ËµöÂú¤·¤Æ¤¤¤ë¡Ö¥×¥í¥°¥é¥à¡×¤Î¸¢Íø¤ò¼«Æ°Åª¤Ë¾Ã
                -    ÌǤµ¤»¤Þ¤¹¡£¤½¤Î¾ì¹ç¡¢ËÜ»ÈÍѵöÂú¤Ë½¾¤Ã¤Æ¤¢¤Ê¤¿¤«¤éÊ£À½Êª¤ä¤½¤Î¸¢Íø¤òÆÀ¤Æ¤¤¤ë
                -    Âè»°¼Ô¤Ï¡¢ËÜ»ÈÍѵöÂú¤Ë´°Á´¤Ë½¾¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¸Â¤ê¡¢°ú³¤­Í­¸ú¤Ê»ÈÍѸ¢¸Â¤ò»ý¤Ä
                -    ¤â¤Î¤È¤·¤Þ¤¹¡£
                -
                -
                - 6. ¤¢¤Ê¤¿¤Ï¤Þ¤ÀƱ°Õ¤Î°õ¤È¤·¤Æ½ð̾¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢ËÜ»ÈÍѵöÂú¤ò¼õ¤±Æþ¤ì¤ëɬÍפϤ¢
                -    ¤ê¤Þ¤»¤ó¡£¤·¤«¤·¡¢¤¢¤Ê¤¿¤Ë¡Ö¥×¥í¥°¥é¥à¡×Ëô¤Ï¤½¤ÎÇÉÀ¸Êª¤òÊѹ¹Ëô¤ÏºÆÈÒÉÛ¤¹¤ëµö
                -    ²Ä¤òÍ¿¤¨¤ë¤â¤Î¤ÏËÜ»ÈÍѵöÂú°Ê³°¤Ë¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤é¤Î¹Ô°Ù¤Ï¡¢¤¢¤Ê¤¿¤¬¤â¤·ËÜ
                -    »ÈÍѵöÂú¤ò¼õ¤±Æþ¤ì¤Ê¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢Ë¡Î§¤Ë¤è¤Ã¤Æ¶Ø¤¸¤é¤ì¤Þ¤¹¡£½¾¤Ã¤Æ¡¢¤¢¤Ê¤¿¤¬
                -    ¡Ö¥×¥í¥°¥é¥à¡×(Ëô¤Ï¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×) ¤ÎÊѹ¹Ëô¤ÏÈÒÉÛ¤ò¹Ô¤¨¤Ð¡¢¤½¤ì¼«ÂΤǤ¢
                -    ¤Ê¤¿¤ÏËÜ»ÈÍѵöÂú¤ò¼õ¤±Æþ¤ì¡¢³î¤Ä¡¢¡Ö¥×¥í¥°¥é¥à¡×Ëô¤Ï¤½¤Î¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×
                -    ¤ÎÊ£À½¡¢ÈÒÉÛ¡¢Êѹ¹¤Ë´Ø¤¹¤ë¤³¤ì¤é¤Î¾ò¹à¤È¾ò·ï¤ÎÁ´¤Æ¤ò¼õ¤±Æþ¤ì¤¿¤³¤È¤ò¼¨¤·¤Þ¤¹¡£
                -
                -
                - 7. ¤¢¤Ê¤¿¤¬¡Ö¥×¥í¥°¥é¥à¡×(Ëô¤Ï¤½¤Î¡Ö¥×¥í¥°¥é¥àÀ¸À®Êª¡×) ¤òºÆÈÒÉÛ¤¹¤ë¤È¼«Æ°Åª¤Ë¡¢
                -    ¤½¤Î¼õÎμԤϡ¢¸µ¤Î»ÈÍѵöÂú¼Ô¤«¤é¡¢ËÜ»ÈÍѵöÂú¤Î¾ò¹à¤Ë½¾¤Ã¤Æ¡Ö¥×¥í¥°¥é¥à¡×¤òÊ£
                -    À½¡¢ÈÒÉÛ¡¢Êѹ¹¤¹¤ë¤³¤È¤òÆâÍÆ¤È¤¹¤ë»ÈÍѵöÂú¤ò¼õ¤±¤¿¤â¤Î¤È¤·¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¡¢¼õ
                -    ÎμԤ˵öÂú¤µ¤ì¤¿¸¢Íø¤Î¹Ô»È¤Ë¤Ä¤¤¤Æ¡¢¤µ¤é¤ËÀ©Ìó¤ò²Ã¤¨¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤¢¤Ê
                -    ¤¿¤Ë¤Ï¡¢Âè»°¼Ô¤ËËÜ»ÈÍѵöÂú¤Î¼õ¤±Æþ¤ì¤ò¶¯¤¤¤ëÀÕǤ¤Ï¤¢¤ê¤Þ¤»¤ó¡£
                -
                - 8. ºÛȽ½ê¤ÎȽ·è¡¢Ëô¤ÏÆÃµö¿¯³²¤Î¿½¤·Î©¤Æ¡¢Ëô¤Ï(ÆÃµöÌäÂê¤Ë¸Â¤é¤Ê¤¤) ²¿¤é¤«¤ÎÍýͳ
                -    ¤Î·ë²Ì¤È¤·¤Æ¡¢¤¢¤Ê¤¿¤Ë²Ý¤»¤é¤ì¤¿¾ò·ï¤¬ËÜ»ÈÍѵöÂú¤ÈÁêÆþ¤ì¤Ê¤¤¤â¤Î¤Ç¤¢¤Ã¤¿¤È¤·
                -    ¤Æ¤â(ºÛȽ½ê¤ÎÌ¿Îá¡¢·ÀÌ󡢤½¤Î¾¤Ë¤è¤ë¤â¤Î¤Ç¤¢¤ì)¡¢ËÜ»ÈÍѵöÂú¤Î¾ò·ï¤¬ÌȽü¤µ¤ì
                -    ¤ë¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ËÜ»ÈÍѵöÂú¤Ë¤è¤ëÀÕ̳¤È¡¢¤½¤Î¾¤Î²¿¤é¤«¤Î´ØÏ¢ÀÕ̳¤òƱ»þ
                -    ¤ËËþ¤¿¤¹ÂÖÍͤÇÈÒÉÛ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤Ê¤é¤Ð¡¢¤¢¤Ê¤¿¤Ï¡Ö¥×¥í¥°¥é¥à¡×¤òÁ´¤¯ÈÒÉÛ
                -    ¤·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£Î㤨¤Ð¡¢ÆÃµö¸¢¤ÎÆâÍÆ¤¬¡¢¤¢¤Ê¤¿¤«¤éľÀÜËô¤Ï´ÖÀܤËÊ£À½¤ò¼õ¤±
                -    ¼è¤Ã¤¿Á´¤Æ¤Î¿Í¤Ë»ÈÍÑÎÁ¤Î¤Ê¤¤¥×¥í¥°¥é¥à¤ÎºÆÈÒÉÛ¤òµö¤µ¤Ê¤¤¤â¤Î¤Ç¤¢¤ì¤Ð¡¢¤¢¤Ê¤¿
                -    ¤¬¤«¤«¤ëÆÃµö¾å¤ÎÍ×ÀÁ¤ÈËÜ»ÈÍѵöÂú¤ÎξÊý¤òËþ­¤µ¤»¤ëÊýË¡¤Ï¡¢¡Ö¥×¥í¥°¥é¥à¡×¤ÎÈÒ
                -    ÉÛ¤ò´°Á´¤ËÃÇǰ¤¹¤ë¤³¤È¤À¤±¤Ç¤¹¡£
                -
                -    Ëܾò¹à¤Î°¿¤ëÉôʬ¤¬²¿¤é¤«¤ÎÆÃÊ̤ʾõ¶·²¼¤Ç̵¸ú¤Þ¤¿¤ÏŬÍÑÉÔ²Äǽ¤Ë¤Ê¤Ã¤¿¾ì¹ç¡¢ËÜ
                -    ¾ò¹à¤Î¤½¤Î¾¤Î»Ä¤ê¤ÎÉôʬ¤¬Å¬ÍѤµ¤ì¤ë¤è¤¦¤Ë°Õ¿Þ¤µ¤ì¤Æ¤ª¤ê¡¢¤Þ¤¿¡¢Ëܾò¹à¤ÏÁ´ÂÎ
                -    ¤È¤·¤Æ¤½¤Î¾¤Î¾õ¶·¤ËÅö¤Æ¤Ï¤Þ¤ë¤è¤¦¤Ë°Õ¿Þ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
                -
                -    Ëܾò¹à¤ÎÌÜŪ¤Ï¡¢ÆÃµö¤ä¤½¤Î¾¤Îºâ»º¸¢¤ò¿¯³²¤·¤¿¤ê¡¢¤½¤Î¤è¤¦¤Ê¸¢Íø¤Ë´ð¤Å¤¯¼çÄ¥
                -    ¤ÎÂÅÅöÀ­¤òÁ褦¤è¤¦¤Ë¤¢¤Ê¤¿¤Ë´«¤á¤ë¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Ëܾò¹à¤ÎÍ£°ì¤ÎÌÜŪ¤Ï¡¢
                -    ¥Õ¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤ÎÈÒÉÛ¥·¥¹¥Æ¥à¤Î´°Á´À­¤ò¼é¤ë¤³¤È¤Ç¡¢¤½¤ì¤Ï¸øÍ­»ÈÍѵöÂú¤Î
                -    ¼ÂÁ©¤Ë¤è¤Ã¤ÆÍú¹Ô¤µ¤ì¤Þ¤¹¡£Â¿¤¯¤Î¿Í¡¹¤¬¡¢¤³¤Î¥·¥¹¥Æ¥à¤Î°ì´Ó¤·¤¿Å¬ÍѤò¿®Íꤷ¤Æ¡¢
                -    ¤³¤Î¥·¥¹¥Æ¥à¤òÄ̤¸¤ÆÈÒÉÛ¤µ¤ì¤Æ¤¤¤ëÉý¹­¤¤ÈϰϤΥ½¥Õ¥È¥¦¥§¥¢¤ËÀˤ·¤ß¤Ê¤¤¹×¸¥¤ò
                -    ¤·¤Æ¤¯¤ì¤Þ¤·¤¿¡£ºîÀ®¼Ô¤ä´ó£¼Ô¤¬Â¾¤Î²¿¤é¤«¤Î¥·¥¹¥Æ¥à¤òÄ̤¸¤Æ¥½¥Õ¥È¥¦¥§¥¢¤òÈÒ
                -    ÉÛ¤·¤¿¤¤¤È·è¤á¤ë¤³¤È¤ÏÈà¤é¤Î¼«Í³°Õ»Ö¤Ç¤¢¤ê¡¢»ÈÍѵöÂú¤ò¼õ¤±¤ë¼Ô¤Ï¤½¤ÎÁªÂò¤ò¶¯
                -    ¤¤¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£
                -
                -    Ëܾò¹à¤Ï¡¢ËÜ»ÈÍѵöÂú¤Î¾¤Î¾ò¹à¤Î°ÕÌ£ÆâÍÆ¤¬²¿¤Ç¤¢¤ë¤«¤ò´°Á´¤ËÌÀ¤é¤«¤Ë¤¹¤ë¤³¤È
                -    ¤ò°Õ¿Þ¤·¤Æ¤¤¤Þ¤¹¡£
                -
                -
                - 9. ¡Ö¥×¥í¥°¥é¥à¡×¤ÎÈÒÉÛ¡¦»ÈÍѤ¬¡¢¤¢¤ë¹ñ¤Ë¤ª¤¤¤ÆÆÃµöËô¤ÏÃøºî¸¢¤ÇÊݸ¤ì¤¿¥¤¥ó¥¿
                -    ¥Õ¥§¡¼¥¹¤Î¤É¤Á¤é¤«¤ÇÀ©¸Â¤µ¤ì¤ë¾ì¹ç¡¢¡Ö¥×¥í¥°¥é¥à¡×¤òËÜ»ÈÍѵöÂú²¼¤Ë¤ª¤¤¤¿¸¶Ãø
                -    ºî¸¢ÊÝ»ý¼Ô¤Ï¡¢¤½¤Î¹ñ¤ò½ü³°¤¹¤ë»Ý¤ÎÌÀ¼¨Åª¤ÊÈÒÉÛÃϰèÀ©¸Â¤ò²Ã¤¨¡¢¤½¤ì°Ê³°¤Î(½ü
                -    ³°¤µ¤ì¤Ê¤¤) ¹ñ¤Ë¸ÂÄꤷ¤ÆÈÒÉÛ¤¬µö¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤Î¤è¤¦¤Ê¾ì
                -    ¹ç¡¢¤½¤ÎÀ©¸Â¤òËÜ»ÈÍѵöÂú¤ÎËÜʸ¤Ë¤¢¤¿¤«¤â½ñ¤«¤ì¤Æ¤¤¤ë¤«¤Î¤è¤¦¤ËËÜ»ÈÍѵöÂú¤ÎÃæ
                -    ¤ËÁÈ¤ßÆþ¤ì¤é¤ì¤ë¤â¤Î¤È¤·¤Þ¤¹¡£
                -
                -10. Free Software Foundation ¤Ï¿ï»þ¡¢ËܰìÈ̸øÍ­»ÈÍѵöÂú¤Î²þÄûÈÇ¡¢Ëô¤Ï¿·ÈǤò¸øÉ½
                -    ¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¤è¤¦¤Ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢¸½¹Ô¤Î¥Ð¡¼¥¸¥ç¥ó¤È´ðËÜŪ¤Ë
                -    ÊѤï¤ë¤È¤³¤í¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¿·¤·¤¤ÌäÂê¤ä·ü°Æ»ö¹à¤ËÂбþ¤¹¤ë¤¿¤á¤ËºÙÉô¤Ç¤Ï°Û¤Ê
                -    ¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
                -
                -    ³Æ¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤Ë¤è¤Ã¤Æ¶èÊ̤·¤Þ¤¹¡£¡Ö¥×¥í¥°¥é¥à¡×Ãæ¤ËËÜ»ÈÍѵö
                -    Âú¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤Î»ØÄ꤬¤¢¤ë¾ì¹ç¤Ï¡¢¤½¤Î»ØÄꤵ¤ì¤¿¥Ð¡¼¥¸¥ç¥ó¤«¡¢Ëô¤Ï¤½¤Î¸å
                -    ¤Ë Free Software Foundation ¤«¤é¸øÉ½¤µ¤ì¤Æ¤¤¤ë¤¤¤º¤ì¤«¤Î¥Ð¡¼¥¸¥ç¥ó¤«¤é1 ¤Ä¤ò
                -    ÁªÂò¤·¤Æ¡¢¤½¤Î¾ò¹à¤È¾ò·ï¤Ë½¾¤Ã¤Æ¤¯¤À¤µ¤¤¡£¡Ö¥×¥í¥°¥é¥à¡×Ãæ¤ËËÜ»ÈÍѵöÂú¤Î¥Ð¡¼
                -    ¥¸¥ç¥óÈÖ¹æ¤Î»ØÄ꤬¤Ê¤¤¾ì¹ç¤Ï¡¢Free Software Foundation ¤¬¸øÉ½¤·¤¿¤É¤Î¥Ð¡¼¥¸¥ç
                -    ¥ó¤Ç¤âÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                -
                -
                -11. ¡Ö¥×¥í¥°¥é¥à¡×¤Î°ìÉô¤òÈÒÉÛ¾ò·ï¤Î°Û¤Ê¤ë¾¤Î¥Õ¥ê¡¼¡¦¥×¥í¥°¥é¥à¤ËÁȤ߹þ¤ß¤¿¤¤¾ì
                -    ¹ç¤Ï¡¢¤½¤Î³«È¯¼Ô¤Ë½ñÌ̤ǵö²Ä¤òµá¤á¤Æ¤¯¤À¤µ¤¤¡£Free Software Foundation ¤¬Ãø
                -    ºî¸¢¤ò»ý¤Ã¤Æ¤¤¤ë¥½¥Õ¥È¥¦¥§¥¢¤Ë¤Ä¤¤¤Æ¤Ï¡¢Free Software Foundation ¤Ø½ñÌ̤òÄó
                -    ½Ð¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¤è¤¦¤Ê¾ì¹ç¤ËÂбþ¤¹¤ë¤¿¤á¤Ë²æ¡¹¤ÏÎ㳰Ū½èÍý¤ò¤¹¤ë¤³¤È¤â¤¢
                -    ¤ê¤Þ¤¹¤¬¡¢¤½¤ÎȽÃÇ´ð½à¤È¤Ê¤ë¤Î¤Ï¡¢¼¡¤Î2 ¤Ä¤ÎÌÜɸ¤Î¼Â¸½¤Ë¹çÃפ¹¤ë¤«Èݤ«¤È¤¤¤¦
                -    ÅÀ¤Ç¤¹¡£Â¨¤Á¡¢£±¤Ä¤Ï²æ¡¹¤Î¥Õ¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤ÎÁ´¤Æ¤ÎÇÉÀ¸Êª¤ò¥Õ¥ê¡¼¤Ê¾õÂÖ¤Ë
                -    ÊݤĤ³¤È¤Ç¤¢¤ê¡¢¤â¤¦£±¤Ä¤Ï¥½¥Õ¥È¥¦¥§¥¢¤Î¶¦Í­¤ÈºÆÍøÍѤȤò¹­¤¯Â¥¿Ê¤µ¤»¤ë¤³¤È¤Ç
                -    ¤¹¡£
                -
                -
                -    ̵ÊݾÚ
                -    ------
                -
                -
                -12. ¡Ö¥×¥í¥°¥é¥à¡×¤Ï̵½þ¤Ç»ÈÍѵöÂú¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Å¬ÍÑË¡Îá¤ÎÈÏ°ÏÆâ¤Ç¡¢¡Ö¥×¥í¥°¥é¥à¡×
                -    ¤ÎÊݾڤϰìÀÚ¤¢¤ê¤Þ¤»¤ó¡£Ãøºî¸¢¼Ô¤ä¤½¤Î¾¤ÎÂè»°¼Ô¤ÏÁ´¤¯ÌµÊݾڤǡ֤½¤Î¤Þ¤Þ¡×
                -    ¤Î¾õÂ֤ǡ¢³î¤Ä¡¢ÌÀ¼¨¤«°ÅÌۤǤ¢¤ë¤«¤òÌä¤ï¤º°ìÀÚ¤ÎÊݾڤò¤Ä¤±¤Ê¤¤¤ÇÄ󶡤¹¤ë¤â¤Î
                -    ¤È¤·¤Þ¤¹¡£¤³¤³¤Ç¤¤¤¦ÊݾڤȤϡ¢»Ô¾ìÀ­¤äÆÃÄêÌÜŪŬ¹çÀ­¤Ë¤Ä¤¤¤Æ¤Î°ÅÌÛ¤ÎÊݾڤâ´Þ
                -    ¤Þ¤ì¤Þ¤¹¤¬¡¢¤½¤ì¤Ë¸ÂÄꤵ¤ì¤ë¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¡Ö¥×¥í¥°¥é¥à¡×¤ÎÉʼÁ¤äÀ­Ç½¤Ë
                -    ´Ø¤¹¤ëÁ´¤Æ¤Î¥ê¥¹¥¯¤Ï¤¢¤Ê¤¿¤¬É餦¤â¤Î¤È¤·¤Þ¤¹¡£¡Ö¥×¥í¥°¥é¥à¡×¤Ë·ç´Ù¤¬¤¢¤ë¤È¤ï
                -    ¤«¤Ã¤¿¾ì¹ç¡¢¤½¤ì¤Ëȼ¤¦°ìÀÚ¤ÎÇÉÀ¸ÈñÍѤ佤Íý¡¦ÄûÀµ¤ËÍפ¹¤ëÈñÍѤÏÁ´¤Æ¤¢¤Ê¤¿¤ÎÉé
                -    ô¤È¤·¤Þ¤¹¡£
                -
                -
                -13. ŬÍÑË¡Îá¤ÎÄê¤á¡¢Ëô¤Ï½ñÌ̤ˤè¤ë¹ç°Õ¤¬¤¢¤ë¾ì¹ç¤ò½ü¤­¡¢Ãøºî¸¢¼Ô¤ä¾åµ­µöÂú¤ò¼õ¤±
                -    ¤Æ¡Ö¥×¥í¥°¥é¥à¡×¤ÎÊѹ¹¡¦ºÆÈÒÉÛ¤ò°Ù¤·ÆÀ¤ëÂè»°¼Ô¤Ï¡¢¡Ö¥×¥í¥°¥é¥à¡×¤ò»ÈÍѤ·¤¿¤³
                -    ¤È¡¢¤Þ¤¿¤Ï»ÈÍѤǤ­¤Ê¤¤¤³¤È¤Ëµ¯°ø¤¹¤ë°ìÀڤλ³²¤Ë¤Ä¤¤¤Æ²¿¤é¤ÎÀÕǤ¤âÉ餤¤Þ¤»¤ó¡£
                -    Ãøºî¸¢¼Ô¤äÁ°µ­¤ÎÂè»°¼Ô¤¬¡¢¤½¤Î¤è¤¦¤Ê»³²¤ÎȯÀ¸¤¹¤ë²ÄǽÀ­¤Ë¤Ä¤¤¤ÆÃΤ餵¤ì¤Æ¤¤
                -    ¤¿¾ì¹ç¤Ç¤âƱÍͤǤ¹¡£¤Ê¤ª¡¢¤³¤³¤Ç¤¤¤¦Â»³²¤Ë¤ÏÄ̾ﻳ²¡¢ÆÃÊÌ»³²¡¢¶öȯ»³²¡¢´Ö
                -    ÀÜ»³²¤¬´Þ¤Þ¤ì¤Þ¤¹(¥Ç¡¼¥¿¤Î¾Ã¼º¡¢Ëô¤Ï¤½¤ÎÀµ³Î¤µ¤ÎÁÓ¼º¡¢¤¢¤Ê¤¿¤äÂè»°¼Ô¤¬Èï¤Ã
                -    ¤¿Â»¼º¡¢Â¾¤Î¥×¥í¥°¥é¥à¤È¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎÉÔŬ¹ç²½¡¢Åù¤â´Þ¤Þ¤ì¤Þ¤¹¤¬¡¢¤³¤ì¤Ë
                -    ¸ÂÄꤵ¤ì¤ë¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó)¡£
                -
                -
                -    °Ê¾å
                -
                -
                -
                -Ãí°Õ
                -****
                -
                -
                -±Ñʸʸ½ñ(GNU General Public Licence) ¤òÀµ¼°Ê¸½ñ¤È¤¹¤ë¡£¤³¤ÎÏÂʸʸ½ñ¤ÏÊÛ¸î»Î¤Î°Õ
                -¸«¤òºÎ¤êÆþ¤ì¤Æ¡¢¤Ç¤­¤ë¤À¤±Àµ³Î¤Ë±Ñʸʸ½ñ¤òËÝÌõ¤·¤¿¤â¤Î¤Ç¤¢¤ë¤¬¡¢Ë¡Î§Åª¤ËÍ­¸ú¤Ê·À
                -Ìó½ñ¤Ç¤Ï¤Ê¤¤¡£
                -
                -
                -
                -ÏÂʸʸ½ñ¼«ÂΤκÆÇÛÉۤ˴ؤ·¤Æ
                -****************************
                -
                -
                - ¤¤¤«¤Ê¤ëÇÞÂΤǤ⼡¤Î¾ò·ï¤¬¤¹¤Ù¤ÆËþ¤¿¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¸Â¤ê¡¢ËÜÏÂʸʸ½ñ¤ò¤½¤Î¤Þ¤Þ
                -Ê£¼Ì¤·ÇÛÉÛ¤¹¤ë¤³¤È¤òµö²Ä¤¹¤ë¡£¤Þ¤¿¡¢¤¢¤Ê¤¿¤ÏÂè»°¼Ô¤ËÂФ·¤ÆËܵö²Ä¹ðÃÎ¤ÈÆ±°ì¤Îµö²Ä
                -¤òÍ¿¤¨¤ë¾ì¹ç¤Ë¸Â¤ê¡¢ºÆÇÛÉÛ¤¹¤ë¤³¤È¤¬µö²Ä¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
                -
                -   ¡¦¼õÎΡ¢ÇÛÉÛ¤µ¤ì¤¿¥³¥Ô¡¼¤ËÃøºî¸¢É½¼¨¤ª¤è¤ÓËܵöÂú¹ðÃΤ¬Á°¤â¤Ã¤ÆºÜ¤»¤é¤ì¤Æ¤¤¤ë
                -     ¤³¤È¡£ 
                -
                -   ¡¦¥³¥Ô¡¼¤Î¼õÎμԤ¬¤µ¤é¤ËºÆÇÛÉÛ¤¹¤ë¾ì¹ç¡¢¤½¤ÎÇÛÉÛ¼Ô¤¬ËܹðÃÎ¤ÈÆ±¤¸µö²Ä¤òÍ¿¤¨¤Æ
                -     ¤¤¤ë¤³¤È¡£
                -
                -   ¡¦ÏÂʸʸ½ñ¤ÎËÜʸ¤ò²þÊѤ·¤Ê¤¤¤³¤È¡£
                -
                -
                -
                -
                -¤¢¤Ê¤¿¤Î¿·¤·¤¤¥×¥í¥°¥é¥à¤Ë¤³¤ì¤é¤Î¾ò¹à¤òŬÍѤ¹¤ëÊýË¡
                -====================================================
                -
                -
                -¤¢¤Ê¤¿¤¬¿·¤·¤¯¥×¥í¥°¥é¥à¤òºîÀ®¤·¡¢¤½¤ì¤ò¸øÍѤ˶¡¤·¤¿¤¤¾ì¹ç¤Ï¡¢¥×¥í¥°¥é¥à¤ò¥Õ¥ê¡¼¡¦
                -¥½¥Õ¥È¥¦¥§¥¢¤Ë¤·¤Æ¡¢Á´¤Æ¤Î¿Í¡¹¤¬°Ê¾å¤Î³Æ¾ò¹à¤Ë½¾¤Ã¤Æ¤³¤ì¤òºÆÈÒÉÛ¤äÊѹ¹¤ò¤¹¤ë¤³¤È
                -¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¤Î¤¬ºÇÎɤÎÊýË¡¤Ç¤¹¡£
                -
                -
                -¤½¤¦¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¥×¥í¥°¥é¥à¤Ë°Ê²¼¤Îɽ¼¨¤ò¤·¤Æ¤¯¤À¤µ¤¤¡£¤½¤Î¾ì¹ç¡¢ÌµÊݾڤǤ¢¤ë¤È
                -¤¤¤¦¤³¤È¤òºÇ¤â¸ú²ÌŪ¤ËÅÁ¤¨¤ë¤¿¤á¤Ë¡¢¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎËÁƬ¤Ë¤½¤ÎÁ´Ê¸¤òɽ¼¨¤¹¤ì¤Ð
                -ºÇ¤â°ÂÁ´¤Ç¤¹¤¬¡¢¤½¤Î¾¤ÎÊýË¡¤Çɽ¼¨¤¹¤ë¾ì¹ç¤Ç¤â¡¢¡ÖÃøºî¸¢É½¼¨¡×¤ÈÁ´Ê¸¤òÆÉ¤ß½Ð¤¹°Ù
                -¤Î¥¢¥É¥ì¥¹¤Ø¤Î¥Ý¥¤¥ó¥¿¤À¤±¤Ï¥Õ¥¡¥¤¥ë¾å¤Ëɽ¼¨¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
                -
                -
                -
                -     ¥×¥í¥°¥é¥à̾¤È¤É¤ó¤Êưºî¤ò¤¹¤ë¤â¤Î¤«¤Ë¤Ä¤¤¤Æ¤Î´Êñ¤ÊÀâÌÀ¤Î¹Ô
                -     ------------------------------------------------------------
                -     Copyright (C) 19 ¡û¡ûǯ¡¢Ãøºî¸¢¼Ô̾
                -                              ----------
                -
                -     ËÜ¥×¥í¥°¥é¥à¤Ï¥Õ¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£¤¢¤Ê¤¿¤Ï¡¢Free Software Foundation 
                -     ¤¬¸øÉ½¤·¤¿GNU °ìÈ̸øÍ­»ÈÍѵöÂú¤Î¡Ö¥Ð¡¼¥¸¥ç¥ó£²¡×°¿¤¤¤Ï¤½¤ì°Ê¹ß¤Î³Æ¥Ð¡¼¥¸¥ç
                -     ¥ó¤ÎÃæ¤«¤é¤¤¤º¤ì¤«¤òÁªÂò¤·¡¢¤½¤Î¥Ð¡¼¥¸¥ç¥ó¤¬Äê¤á¤ë¾ò¹à¤Ë½¾¤Ã¤ÆËÜ¥×¥í¥°¥é¥à
                -     ¤òºÆÈÒÉÛ¤Þ¤¿¤ÏÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                -
                -     ËÜ¥×¥í¥°¥é¥à¤ÏÍ­ÍѤȤϻפ¤¤Þ¤¹¤¬¡¢ÈÒÉۤˤ¢¤¿¤Ã¤Æ¤Ï¡¢»Ô¾ìÀ­¤ª¤è¤ÓÆÃÄêÌÜŪŬ¹ç
                -     À­¤Ë¤Ä¤¤¤Æ¤Î°ÅÌÛ¤ÎÊݾڤò´Þ¤á¤Æ¡¢¤¤¤«¤Ê¤ëÊݾڤâ¹Ô¤Ê¤¤¤Þ¤»¤ó¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï
                -     GNU °ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤ò¤ªÆÉ¤ß¤¯¤À¤µ¤¤¡£
                -
                -     ¤¢¤Ê¤¿¤Ï¡¢ËÜ¥×¥í¥°¥é¥à¤È°ì½ï¤ËGNU °ìÈ̸øÍ­»ÈÍѵöÂú¤Î¼Ì¤·¤ò¼õ¤±¼è¤Ã¤Æ¤¤
                -     ¤ë¤Ï¤º¤Ç¤¹¡£¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢Free Software Foundation, Inc., 675 Mass Ave,
                -     Cambridge, MA 02139, USA ¤Ø¼ê»æ¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£
                -
                -
                -¤Þ¤¿¡¢¥æ¡¼¥¶¤¬ÅŻҥᥤ¥ë¤ä½ñ¿®¤Ç¤¢¤Ê¤¿¤ÈÏ¢Íí¤ò¤È¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤â½ñ¤­Åº¤¨¤Æ
                -¤¯¤À¤µ¤¤¡£
                -
                -¥×¥í¥°¥é¥à¤¬ÂÐÏÃŪ¤Ëưºî¤¹¤ë¾ì¹ç¤Ï¡¢ÂÐÏå⡼¥É¤Çµ¯Æ°¤·¤¿»þ¤Ë¼¡¤Î¤è¤¦¤Êû¤¤¹ðÃÎʸ
                -¤¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
                -
                -
                -     Gnomovision ¥Ð¡¼¥¸¥ç¥ó69¡¢Copyright (C) 19 ¡û¡ûÇ¯Ãøºî¸¢¼Ô̾
                -                                                      ----------
                -     Gnomovision ¤Ï´°Á´¤Ë̵ÊݾڤǤ¹¡£¾ÜºÙ¤Ï show w ¤È¥¿¥¤¥×¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤Ï
                -     ¥Õ¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤Ê¤Î¤Ç¡¢ÆÃÄê¤Î¾ò·ï¤Î²¼¤Ç¤³¤ì¤òºÆÈÒÉÛ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                -     ¾ÜºÙ¤Ï show c ¤È¥¿¥¤¥×¤·¤Æ¤¯¤À¤µ¤¤¡£
                -
                -
                -¾åµ­¤Îshow w ¤äshow c ¤Ï³Æ¡¹¡¢ËܰìÈ̸øÍ­»ÈÍѵöÂú¤Î´ØÏ¢¤¹¤ëÉôʬ¤òɽ¼¨¤¹¤ë¥³¥Þ¥ó¥É
                -¤ò»Ø¤·¤Þ¤¹¡£¤â¤Á¤í¤ó¡¢¤¢¤Ê¤¿¤¬»È¤¦¤³¤ì¤é¤Î¥³¥Þ¥ó¥É¤Ïshow w ¤äshow c ¤È¤¤¤Ã¤¿¸Æ¤Ó
                -̾¤Ç¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£¤µ¤é¤Ë¡¢¤½¤ì¤é¤Î¥³¥Þ¥ó¥É¤Ï¤¢¤Ê¤¿¤Î¥×¥í¥°¥é¥à¤Ë¹ç¤ï¤»¤ë°Ù
                -¤Ë¡¢¥Þ¥¦¥¹¤Ç¥¯¥ê¥Ã¥¯¤·¤¿¤ê¥á¥Ë¥å¡¼·Á¼°¤Ë¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
                -
                -
                -¤Þ¤¿¡¢É¬ÍפÈǧ¤á¤¿¾ì¹ç¤Ë¤Ï¡¢¤¢¤Ê¤¿¤Î¸Û¤¤¼ç(¤¢¤Ê¤¿¤¬¥×¥í¥°¥é¥Þ¤È¤·¤ÆÆ¯¤¤¤Æ¤¤¤ë¾ì
                -¹ç) ¤äºßÀÒ¤¹¤ë³Ø¹»¤«¤é¡¢¤½¤Î¥×¥í¥°¥é¥à¤ËÂФ¹¤ë¡ÖÃøºî¸¢Êü´þ¡×¤òǧ¤á¤¿½ð̾Æþ¤ê¤Î½ñ
                -Ì̤òÆþ¼ê¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤Ë¤½¤ÎʸÎã¤òºÜ¤»¤Þ¤¹¡£Ì¾Á°¤ÏÊѤ¨¤Æ¤¯¤À¤µ¤¤¡£
                -
                -
                -     Yoyodyne, Inc. ¤Ï¡¢James Hacker ¤¬³«È¯¤·¤¿¥×¥í¥°¥é¥à`Gnomovision' (¥³¥ó¥Ñ¥¤
                -     ¥é¤Ë¤Ä¤Ê¤²¤ë¥×¥í¥°¥é¥à) ¤Ë¤Ä¤¤¤Æ¤ÎÃøºî¸¢Ë¡¾å¤ÎÁ´¤Æ¤Î¸¢Íø¤òÊü´þ¤¹¤ë¡£
                -
                -
                -     Ty Coon ¤Î½ð̾, 1 April 1989
                -     --------------
                -     Ty Coon, Éû¼ÒĹ
                -
                -
                -
                -ËܰìÈ̸øÍ­»ÈÍѵöÂú¤Ï¡¢¤¢¤Ê¤¿¤Î¥×¥í¥°¥é¥à¤òºâ»º¸¢¤ÎÂоݤȤʤäƤ¤¤ë¾¤Î¥×¥í¥°¥é¥à
                -¤ËÁȤ߹þ¤à¤³¤È¤Ïǧ¤á¤Æ¤¤¤Þ¤»¤ó¡£¤¢¤Ê¤¿¤Î¥×¥í¥°¥é¥à¤¬¥µ¥Ö¥ë¡¼¥Á¥ó¡¦¥é¥¤¥Ö¥é¥ê¤Ç¤¢¤Ã
                -¤Æ¡¢¤¢¤Ê¤¿¤¬¤½¤Î¥é¥¤¥Ö¥é¥ê¤òºâ»º¸¢¤ÎÂоݤȤʤäƤ¤¤ë¾¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È¥ê¥ó¥¯
                -¤µ¤»¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤µ¤é¤ËÍ­ÍѤʤâ¤Î¤Ë¤·¤è¤¦¤È¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢ËÜ»ÈÍѵöÂú½ñ¤ÎÂå¤ï¤ê
                -¤Ë¡¢GNU ¥é¥¤¥Ö¥é¥ê°ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤Ë½¾¤Ã¤Æ¤¯¤À¤µ¤¤¡£
                -
                +
                		    GNU GENERAL PUBLIC LICENSE
                Version 2, June 1991

                Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
                Everyone is permitted to copy and distribute verbatim copies
                of this license document, but changing it is not allowed.

                Preamble

                The licenses for most software are designed to take away your
                freedom to share and change it. By contrast, the GNU General Public
                License is intended to guarantee your freedom to share and change free
                software--to make sure the software is free for all its users. This
                General Public License applies to most of the Free Software
                Foundation's software and to any other program whose authors commit to
                using it. (Some other Free Software Foundation software is covered by
                the GNU Library General Public License instead.) You can apply it to
                your programs, too.

                When we speak of free software, we are referring to freedom, not
                price. Our General Public Licenses are designed to make sure that you
                have the freedom to distribute copies of free software (and charge for
                this service if you wish), that you receive source code or can get it
                if you want it, that you can change the software or use pieces of it
                in new free programs; and that you know you can do these things.

                To protect your rights, we need to make restrictions that forbid
                anyone to deny you these rights or to ask you to surrender the rights.
                These restrictions translate to certain responsibilities for you if you
                distribute copies of the software, or if you modify it.

                For example, if you distribute copies of such a program, whether
                gratis or for a fee, you must give the recipients all the rights that
                you have. You must make sure that they, too, receive or can get the
                source code. And you must show them these terms so they know their
                rights.

                We protect your rights with two steps: (1) copyright the software, and
                (2) offer you this license which gives you legal permission to copy,
                distribute and/or modify the software.

                Also, for each author's protection and ours, we want to make certain
                that everyone understands that there is no warranty for this free
                software. If the software is modified by someone else and passed on, we
                want its recipients to know that what they have is not the original, so
                that any problems introduced by others will not reflect on the original
                authors' reputations.

                Finally, any free program is threatened constantly by software
                patents. We wish to avoid the danger that redistributors of a free
                program will individually obtain patent licenses, in effect making the
                program proprietary. To prevent this, we have made it clear that any
                patent must be licensed for everyone's free use or not licensed at all.

                The precise terms and conditions for copying, distribution and
                modification follow.

                GNU GENERAL PUBLIC LICENSE
                TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

                0. This License applies to any program or other work which contains
                a notice placed by the copyright holder saying it may be distributed
                under the terms of this General Public License. The "Program", below,
                refers to any such program or work, and a "work based on the Program"
                means either the Program or any derivative work under copyright law:
                that is to say, a work containing the Program or a portion of it,
                either verbatim or with modifications and/or translated into another
                language. (Hereinafter, translation is included without limitation in
                the term "modification".) Each licensee is addressed as "you".

                Activities other than copying, distribution and modification are not
                covered by this License; they are outside its scope. The act of
                running the Program is not restricted, and the output from the Program
                is covered only if its contents constitute a work based on the
                Program (independent of having been made by running the Program).
                Whether that is true depends on what the Program does.

                1. You may copy and distribute verbatim copies of the Program's
                source code as you receive it, in any medium, provided that you
                conspicuously and appropriately publish on each copy an appropriate
                copyright notice and disclaimer of warranty; keep intact all the
                notices that refer to this License and to the absence of any warranty;
                and give any other recipients of the Program a copy of this License
                along with the Program.

                You may charge a fee for the physical act of transferring a copy, and
                you may at your option offer warranty protection in exchange for a fee.

                2. You may modify your copy or copies of the Program or any portion
                of it, thus forming a work based on the Program, and copy and
                distribute such modifications or work under the terms of Section 1
                above, provided that you also meet all of these conditions:

                a) You must cause the modified files to carry prominent notices
                stating that you changed the files and the date of any change.

                b) You must cause any work that you distribute or publish, that in
                whole or in part contains or is derived from the Program or any
                part thereof, to be licensed as a whole at no charge to all third
                parties under the terms of this License.

                c) If the modified program normally reads commands interactively
                when run, you must cause it, when started running for such
                interactive use in the most ordinary way, to print or display an
                announcement including an appropriate copyright notice and a
                notice that there is no warranty (or else, saying that you provide
                a warranty) and that users may redistribute the program under
                these conditions, and telling the user how to view a copy of this
                License. (Exception: if the Program itself is interactive but
                does not normally print such an announcement, your work based on
                the Program is not required to print an announcement.)

                These requirements apply to the modified work as a whole. If
                identifiable sections of that work are not derived from the Program,
                and can be reasonably considered independent and separate works in
                themselves, then this License, and its terms, do not apply to those
                sections when you distribute them as separate works. But when you
                distribute the same sections as part of a whole which is a work based
                on the Program, the distribution of the whole must be on the terms of
                this License, whose permissions for other licensees extend to the
                entire whole, and thus to each and every part regardless of who wrote it.

                Thus, it is not the intent of this section to claim rights or contest
                your rights to work written entirely by you; rather, the intent is to
                exercise the right to control the distribution of derivative or
                collective works based on the Program.

                In addition, mere aggregation of another work not based on the Program
                with the Program (or with a work based on the Program) on a volume of
                a storage or distribution medium does not bring the other work under
                the scope of this License.

                3. You may copy and distribute the Program (or a work based on it,
                under Section 2) in object code or executable form under the terms of
                Sections 1 and 2 above provided that you also do one of the following:

                a) Accompany it with the complete corresponding machine-readable
                source code, which must be distributed under the terms of Sections
                1 and 2 above on a medium customarily used for software interchange; or,

                b) Accompany it with a written offer, valid for at least three
                years, to give any third party, for a charge no more than your
                cost of physically performing source distribution, a complete
                machine-readable copy of the corresponding source code, to be
                distributed under the terms of Sections 1 and 2 above on a medium
                customarily used for software interchange; or,

                c) Accompany it with the information you received as to the offer
                to distribute corresponding source code. (This alternative is
                allowed only for noncommercial distribution and only if you
                received the program in object code or executable form with such
                an offer, in accord with Subsection b above.)

                The source code for a work means the preferred form of the work for
                making modifications to it. For an executable work, complete source
                code means all the source code for all modules it contains, plus any
                associated interface definition files, plus the scripts used to
                control compilation and installation of the executable. However, as a
                special exception, the source code distributed need not include
                anything that is normally distributed (in either source or binary
                form) with the major components (compiler, kernel, and so on) of the
                operating system on which the executable runs, unless that component
                itself accompanies the executable.

                If distribution of executable or object code is made by offering
                access to copy from a designated place, then offering equivalent
                access to copy the source code from the same place counts as
                distribution of the source code, even though third parties are not
                compelled to copy the source along with the object code.

                4. You may not copy, modify, sublicense, or distribute the Program
                except as expressly provided under this License. Any attempt
                otherwise to copy, modify, sublicense or distribute the Program is
                void, and will automatically terminate your rights under this License.
                However, parties who have received copies, or rights, from you under
                this License will not have their licenses terminated so long as such
                parties remain in full compliance.

                5. You are not required to accept this License, since you have not
                signed it. However, nothing else grants you permission to modify or
                distribute the Program or its derivative works. These actions are
                prohibited by law if you do not accept this License. Therefore, by
                modifying or distributing the Program (or any work based on the
                Program), you indicate your acceptance of this License to do so, and
                all its terms and conditions for copying, distributing or modifying
                the Program or works based on it.

                6. Each time you redistribute the Program (or any work based on the
                Program), the recipient automatically receives a license from the
                original licensor to copy, distribute or modify the Program subject to
                these terms and conditions. You may not impose any further
                restrictions on the recipients' exercise of the rights granted herein.
                You are not responsible for enforcing compliance by third parties to
                this License.

                7. If, as a consequence of a court judgment or allegation of patent
                infringement or for any other reason (not limited to patent issues),
                conditions are imposed on you (whether by court order, agreement or
                otherwise) that contradict the conditions of this License, they do not
                excuse you from the conditions of this License. If you cannot
                distribute so as to satisfy simultaneously your obligations under this
                License and any other pertinent obligations, then as a consequence you
                may not distribute the Program at all. For example, if a patent
                license would not permit royalty-free redistribution of the Program by
                all those who receive copies directly or indirectly through you, then
                the only way you could satisfy both it and this License would be to
                refrain entirely from distribution of the Program.

                If any portion of this section is held invalid or unenforceable under
                any particular circumstance, the balance of the section is intended to
                apply and the section as a whole is intended to apply in other
                circumstances.

                It is not the purpose of this section to induce you to infringe any
                patents or other property right claims or to contest validity of any
                such claims; this section has the sole purpose of protecting the
                integrity of the free software distribution system, which is
                implemented by public license practices. Many people have made
                generous contributions to the wide range of software distributed
                through that system in reliance on consistent application of that
                system; it is up to the author/donor to decide if he or she is willing
                to distribute software through any other system and a licensee cannot
                impose that choice.

                This section is intended to make thoroughly clear what is believed to
                be a consequence of the rest of this License.

                8. If the distribution and/or use of the Program is restricted in
                certain countries either by patents or by copyrighted interfaces, the
                original copyright holder who places the Program under this License
                may add an explicit geographical distribution limitation excluding
                those countries, so that distribution is permitted only in or among
                countries not thus excluded. In such case, this License incorporates
                the limitation as if written in the body of this License.

                9. The Free Software Foundation may publish revised and/or new versions
                of the General Public License from time to time. Such new versions will
                be similar in spirit to the present version, but may differ in detail to
                address new problems or concerns.

                Each version is given a distinguishing version number. If the Program
                specifies a version number of this License which applies to it and "any
                later version", you have the option of following the terms and conditions
                either of that version or of any later version published by the Free
                Software Foundation. If the Program does not specify a version number of
                this License, you may choose any version ever published by the Free Software
                Foundation.

                10. If you wish to incorporate parts of the Program into other free
                programs whose distribution conditions are different, write to the author
                to ask for permission. For software which is copyrighted by the Free
                Software Foundation, write to the Free Software Foundation; we sometimes
                make exceptions for this. Our decision will be guided by the two goals
                of preserving the free status of all derivatives of our free software and
                of promoting the sharing and reuse of software generally.

                NO WARRANTY

                11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
                FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
                OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
                PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
                OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
                MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
                TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
                PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
                REPAIR OR CORRECTION.

                12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
                WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
                REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
                INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
                OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
                TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
                YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
                PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
                POSSIBILITY OF SUCH DAMAGES.

                END OF TERMS AND CONDITIONS
                -

                Moodle Documentation

                -

                Version: $Id$

                +

                Moodle Documentation

                +

                Version: $Id$

                diff --git a/lang/ja/docs/other.html b/lang/ja/docs/other.html index c8baaece066..3e175c4d080 100644 --- a/lang/ja/docs/other.html +++ b/lang/ja/docs/other.html @@ -1,19 +1,17 @@ - - + Moodle Docs: ¤½¤Î¾¤Îʸ½ñ - +

                ¤½¤Î¾¤Îʸ½ñ

                ¤½¤Î¾¤ÎMoodleʸ½ñ¤Î¥ê¥ó¥¯¤Ç¤¹:

                Moodle¥Ø¥ë¥×¥Ú¡¼¥¸¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹ - Moodle¤Î¥³¥ó¥Æ¥¯¥¹¥È¤Ë±þ¤¸¤¿¥Ø¥ë¥×¥Õ¥¡¥¤¥ë¤Î°ìÍ÷

                ¥æ¡¼¥¶´ó¹Æ¤Ë¤è¤ëʸ½ñ - Moodle¥æ¡¼¥¶¤Ë¤è¤Ã¤Æ´ó¹Æ¤µ¤ì¤¿¥Ú¡¼¥¸°ìÍ÷

                 

                -
                +

                Moodleʸ½ñ

                Version: $Id$

                diff --git a/lang/ja/docs/philosophy.html b/lang/ja/docs/philosophy.html index d2afccc30af..0fdd3da7660 100644 --- a/lang/ja/docs/philosophy.html +++ b/lang/ja/docs/philosophy.html @@ -13,39 +13,39 @@

                Íýǰ

                -

                Moodle¤Î¥Ç¥¶¥¤¥ó¤ª¤è¤Ó³«È¯ºî¶È¤ÏÆÃÄê¤Î³Ø½¬Íýǰ¤Ë´ð¤Å¤¤¤Æ¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£¶²¤é¤¯Î¬¤µ¤ì¤¿É½¸½¤ò¤´Í÷¤Ë¤Ê¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢¤³¤ì¤Ï¡Ö¼Ò²ñ²ò¼áŪ¶µ¼øË¡¡×¤È¤¤¤¦¹Í¤¨Êý¤Ç¤¹¡£(²¿¿Í¤«¤Î²Ê³Ø¼Ô¤Ï¡¢´û¤Ë¡Ö̵°ÕÌ£¤Ê¥½¥Õ¥È¥¨¥Ç¥£¥±¡¼¥·¥ç¥ó¡×¤À¤È»×¤Ã¤Æ¥Þ¥¦¥¹¤Ë¼ê¤ò¤«¤±¤¿¤È¤³¤í¤Ç¤·¤ç¤¦¡£¤·¤«¤·¡¢¤É¤¦¤«ÆÉ¤ß¿Ê¤á¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¹Í¤¨Êý¤Ï¤¢¤é¤æ¤ë¸¦µæÎΰè¤Ë¤È¤Ã¤ÆÍ­±×¤Ê¤â¤Î¤Ç¤¹¤«¤é!)

                -

                ¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï¡¢´Êñ¤ÊÍѸì¤ò»ÈÍѤ·¤Æ¡¢¤½¤ÎÇØ¸å¤Ë²£¤¿¤ï¤ë4¤Ä¤Î¼çÍפʳµÇ°¤òɳ²ò¤¤¤Æ¹Ô¤¯¤³¤È¤Ë¤·¤Þ¤¹¡£ËÄÂç¤ÊÎ̤ÎÍÍ¡¹¤Ê¸¦µæ¤Ë¤ª¤±¤ë1¤Ä¤Î»ëÅÀ¤òÍ×Ì󤹤ë·Á¤ÇÀâÌÀ¤ò¹Ô¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤é¤Î³µÇ°¤Ë´Ø¤·¤Æ»öÁ°¤ËÆÉ¤Þ¤ì¤¿Êý¤Ë¤È¤Ã¤Æ¤Ï¡¢ÆâÍÆ¤¬´õÇö¤Ç¤¢¤ë¤È»×¤ï¤ì¤Þ¤¹¡£

                -

                ¤³¤ì¤é¤Î³µÇ°¤¬¤¢¤Ê¤¿¤Ë¤È¤Ã¤ÆÁ´¤¯¿·¤·¤¤¤â¤Î¤Ç¤¢¤ë¾ì¹ç¡¢ºÇ½é¤ÏÍý²ò¤·¿É¤¤¤â¤Î¤Ç¤·¤ç¤¦¡£»ä¤¬¤´Äó°Æ¤Ç¤­¤Þ¤¹¤³¤È¤Ï¡¢¼«Ê¬¤¬²¿¤«¤ò³Ø¤Ü¤¦¤È¤·¤Æ¤¤¤ë»þ¤Î·Ð¸³¤ò»×¤¤É⤫¤Ù¤Ê¤¬¤éÆâÍÆ¤òÃí°Õ¿¼¤¯ÆÉ¤ß¿Ê¤á¤ë¤³¤È¤Ç¤¹¡£

                +

                Moodle¤Î¥Ç¥¶¥¤¥óµÚ¤Ó³«È¯ºî¶È¤ÏÆÃÄê¤Î³Ø½¬Íýǰ¤Ë´ð¤Å¤¤¤Æ¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£¶²¤é¤¯Î¬¤µ¤ì¤¿É½¸½¤ò¤´Í÷¤Ë¤Ê¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢¤³¤ì¤Ï¡Ö¼Ò²ñ²ò¼áŪ¶µ¼øË¡¡×¤È¤¤¤¦¹Í¤¨Êý¤Ç¤¹¡£(²¿¿Í¤«¤Î²Ê³Ø¼Ô¤Ï¡¢´û¤Ë¡Ö̵°ÕÌ£¤Ê¥½¥Õ¥È¥¨¥Ç¥£¥±¡¼¥·¥ç¥ó¡×¤À¤È»×¤Ã¤Æ¥Þ¥¦¥¹¤Ë¼ê¤ò¤«¤±¤¿¤È¤³¤í¤Ç¤·¤ç¤¦¡£¤·¤«¤·¡¢¤É¤¦¤«ÆÉ¤ß¿Ê¤á¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¹Í¤¨Êý¤Ï¤¢¤é¤æ¤ë¸¦µæÎΰè¤Ë¤È¤Ã¤ÆÍ­±×¤Ê¤â¤Î¤Ç¤¹¤«¤é!)

                +

                ¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï¡¢´Êñ¤ÊÍѸì¤ò»ÈÍѤ·¤Æ¡¢¤½¤ÎÇØ¸å¤Ë²£¤¿¤ï¤ë4¤Ä¤Î¼çÍפʳµÇ°¤òɳ²ò¤¤¤Æ¹Ô¤¯¤³¤È¤Ë¤·¤Þ¤¹¡£ËÄÂç¤ÊÎ̤ÎÍÍ¡¹¤Ê¸¦µæ¤Ë¤ª¤±¤ë°ì¤Ä¤Î»ëÅÀ¤òÍ×Ì󤹤ë·Á¤ÇÀâÌÀ¤ò¹Ô¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤é¤Î³µÇ°¤Ë´Ø¤·¤Æ»öÁ°¤ËÆÉ¤Þ¤ì¤¿Êý¤Ë¤È¤Ã¤Æ¤Ï¡¢ÆâÍÆ¤¬´õÇö¤Ç¤¢¤ë¤È»×¤ï¤ì¤Þ¤¹¡£

                +

                ¤³¤ì¤é¤Î³µÇ°¤¬¤¢¤Ê¤¿¤Ë¤È¤Ã¤ÆÁ´¤¯¿·¤·¤¤¤â¤Î¤Ç¤¢¤ë¾ì¹ç¡¢ºÇ½é¤ÏÍý²ò¤·¿É¤¤¤â¤Î¤Ç¤·¤ç¤¦¡£»ä¤¬¤´Ä󰯽ÐÍè¤Þ¤¹¤³¤È¤Ï¡¢¼«Ê¬¤¬²¿¤«¤ò³Ø¤Ü¤¦¤È¤·¤Æ¤¤¤ë»þ¤Î·Ð¸³¤ò»×¤¤É⤫¤Ù¤Ê¤¬¤éÆâÍÆ¤òÃí°Õ¿¼¤¯ÆÉ¤ß¿Ê¤á¤ë¤³¤È¤Ç¤¹¡£

                1. ¹½À®¼çµÁ

                ¤³¤Î¹Í¤¨Êý¤Ï¡¢¿Í¡¹¤¬¤½¤ì¤¾¤ì¤Î´Ä¶­¤Ë¤ª¤±¤ëÁê¸ßºîÍѤ«¤éÀ¸¤Þ¤ì¤ë¿·¤·¤¤Ã챤ò¹½À®¤¹¤ë¤È¤¤¤¦»ëÅÀ¤ËΩ¤Ã¤Æ¤¤¤Þ¤¹¡£

                -

                ¤¢¤Ê¤¿¤¬¡¢ÆÉ¤ó¤À¤ê¡¢¸«¤¿¤ê¡¢Ê¹¤¤¤¿¤ê¡¢´¶¤¸¤¿¤ê¡¢¿¨¤Ã¤¿¤ê¤¹¤ë¤â¤ÎÁ´¤Æ¤Ï¡¢¤¢¤Ê¤¿¤ÎÃμ±¤Ë¾È¤é¤·¹ç¤ï¤µ¤ì¤Þ¤¹¡£¤½¤·¤Æ¡¢¤â¤·¤½¤ì¤¬¡¢¤¢¤Ê¤¿¤ÎÀº¿ÀÀ¤³¦¤ËŬ¹ç¤¹¤ë¾ì¹ç¤Ï¡¢¿·¤¿¤ÊÃμ±¤È¤·¤ÆÃߤ¨¤é¤ì¤Þ¤¹¡£¤â¤·¡¢¹­ÈϤʴĶ­¤Ç¾å¼ê¤¯»È¤ï¤ì¤ë¾ì¹ç¡¢Ãμ±¤Ï¶¯²½¤µ¤ì¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¼õưŪ¤Ë¾ðÊó¤òµÛ¼ý¤¹¤ëµ­²±Ãù¢¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤·¡¢Ãμ±¤Ï²¿¤«¤òÆÉ¤ó¤À¤êʹ¤¤¤¿¤ê¤¹¤ë¤¿¤á¤À¤±¤ËÁ÷¿®¤µ¤ì¤ë¤â¤Î¤Ç¤â¤¢¤ê¤Þ¤»¤ó¡£

                -

                ¤³¤³¤Ç¤Ï¡¢¥¦¥§¥Ö¥Ú¡¼¥¸¤òÆÉ¤ó¤À¤ê¡¢¹ÖµÁ¤òݤ¤¤¿¤ê¤¹¤ë¤³¤È¤Ç²¿¤â³Ø¤Ö¤³¤È¤Ï¤Ç¤­¤Ê¤¤¤È¸À¤Ã¤Æ¤¤¤ë¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ÌÀ¤é¤«¤Ë³Ø¤Ö¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¾ðÊó¤¬Ç¾¤«¤éǾ¤ØÅ¾Á÷¤µ¤ì¤ë¤è¤ê¤â¿¤¯¤Î²ò¼á¤¬¤Ê¤µ¤ì¤ë¤È¤¤¤¦¤³¤È¤ò»ØÅ¦¤·¤¿¤À¤±¤Ç¤¹¡£

                +

                ¤¢¤Ê¤¿¤¬¡¢ÆÉ¤ó¤À¤ê¡¢¸«¤¿¤ê¡¢Ê¹¤¤¤¿¤ê¡¢´¶¤¸¤¿¤ê¡¢¿¨¤Ã¤¿¤ê¤¹¤ë¤â¤ÎÁ´¤Æ¤Ï¡¢¤¢¤Ê¤¿¤ÎÃμ±¤Ë¾È¤é¤·¹ç¤ï¤µ¤ì¤Þ¤¹¡£¤½¤·¤Æ¡¢¤â¤·¤½¤ì¤¬¡¢¤¢¤Ê¤¿¤ÎÀº¿ÀÀ¤³¦¤ËŬ¹ç¤¹¤ë¾ì¹ç¤Ï¡¢¿·¤¿¤ÊÃμ±¤È¤·¤ÆÃߤ¨¤é¤ì¤Þ¤¹¡£¤â¤·¡¢¹­ÈϤʴĶ­¤Ç¾å¼ê¤¯»È¤ï¤ì¤ë¾ì¹ç¡¢Ãμ±¤Ï¶¯²½¤µ¤ì¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¼õưŪ¤Ë¾ðÊó¤òµÛ¼ý¤¹¤ëµ­²±Ãù¢¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤·¡¢Ãμ±¤Ï²¿¤«¤òÆÉ¤ó¤À¤êʹ¤¤¤¿¤ê¤¹¤ë°Ù¤À¤±¤ËÁ÷¿®¤µ¤ì¤ë¤â¤Î¤Ç¤â¤¢¤ê¤Þ¤»¤ó¡£

                +

                ¤³¤³¤Ç¤Ï¡¢¥¦¥§¥Ö¥Ú¡¼¥¸¤òÆÉ¤ó¤À¤ê¡¢¹ÖµÁ¤òݤ¤¤¿¤ê¤¹¤ë¤³¤È¤Ç²¿¤â³Ø¤Ö¤³¤È¤Ï½ÐÍè¤Ê¤¤¤È¸À¤Ã¤Æ¤¤¤ë¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ÌÀ¤é¤«¤Ë³Ø¤Ö¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¾ðÊó¤¬Ç¾¤«¤éǾ¤ØÅ¾Á÷¤µ¤ì¤ë¤è¤ê¤â¿¤¯¤Î²ò¼á¤¬¤Ê¤µ¤ì¤ë¤È¤¤¤¦¤³¤È¤ò»ØÅ¦¤·¤¿¤À¤±¤Ç¤¹¡£

                2. ¹½ÃÛ¼çµÁ

                -

                ³Ø½¬¤Ï¡¢Â¾¤Î¿Í¤Î¤¿¤á¤Ë²¿¤«¤ò¹½ÃÛ¤¹¤ë¤È¤¤¤¦·Ð¸³¤ò¤¹¤ë»þ¤¬ÆÃ¤Ë¸ú²ÌŪ¤Ç¤¢¤ë¤È¡¢¹½ÃÛ¼çµÁ¤Ç¤Ï¼çÄ¥¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¡¢Ï䵤줿ʸ¾Ï¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¾å¤ÎÅê¹Æ¤«¤é¡¢¤µ¤é¤ËÊ£»¨¤Ê³¨²è¡¢²È¡¢¥½¥Õ¥È¥¦¥§¥¢¥Ñ¥Ã¥±¡¼¥¸¤Î¤è¤¦¤ÊºîÉʤǤ¢¤êÆÀ¤Þ¤¹¡£

                -

                Î㤨¤Ð¡¢¤³¤Î¥Ú¡¼¥¸¤ò¿ô²óÆÉ¤ó¤À¤È¤·¤Æ¤âÌÀÆü¤Ë¤Ê¤ì¤Ð˺¤ì¤Æ¤·¤Þ¤¦¤³¤È¤Ç¤·¤ç¤¦¡£¤·¤«¤·¡¢¤¢¤Ê¤¿¤¬¤³¤ì¤é¤Î¹Í¤¨Êý¤ò狼¤Ë¼«Ê¬¤Î¸ÀÍÕ¤ÇÀâÌÀ¤·¤è¤¦¤È»î¤ß¤ë¾ì¹ç¡¢¤Þ¤¿¤Ï¤³¤ì¤é¤Î³µÇ°¤Ë´Ø¤·¤Æ¥¹¥é¥¤¥É¥·¥ç¡¼¤òÀ½ºî¤¹¤ë¾ì¹ç¤Ï¡¢¤¢¤Ê¤¿¼«¿È¤Î¹Í¤¨Êý¤Î¤ËÅý¹ç¤µ¤ì¤¿¡¢¤è¤êÎɤ¤Íý²ò¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤ë¤³¤È¤òÊݾڤ·¤Þ¤¹¡£¤³¤ì¤¬¡¢¸å¤ÇÆÉ¤à¤³¤È¤¬Ìµ¤¤¤È¤·¤Æ¤â¡¢¿Í¡¹¤¬¹ÖµÁÃæ¤Ë¥Î¡¼¥È¤ò¼è¤ëÍýͳ¤Ç¤¹¡£

                +

                ³Ø½¬¤Ï¡¢Â¾¤Î¿Í¤Î°Ù¤Ë²¿¤«¤ò¹½ÃÛ¤¹¤ë¤È¤¤¤¦·Ð¸³¤ò¤¹¤ë»þ¤¬ÆÃ¤Ë¸ú²ÌŪ¤Ç¤¢¤ë¤È¡¢¹½ÃÛ¼çµÁ¤Ç¤Ï¼çÄ¥¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¡¢Ï䵤줿ʸ¾Ï¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¾å¤ÎÅê¹Æ¤«¤é¡¢¹¹¤ËÊ£»¨¤Ê³¨²è¡¢²È¡¢¥½¥Õ¥È¥¦¥§¥¢¥Ñ¥Ã¥±¡¼¥¸¤Î¤è¤¦¤ÊºîÉʤǤ¢¤êÆÀ¤Þ¤¹¡£

                +

                Î㤨¤Ð¡¢¤³¤Î¥Ú¡¼¥¸¤ò¿ô²óÆÉ¤ó¤À¤È¤·¤Æ¤âÌÀÆü¤Ë¤Ê¤ì¤Ð˺¤ì¤Æ¤·¤Þ¤¦¤³¤È¤Ç¤·¤ç¤¦¡£¤·¤«¤·¡¢¤¢¤Ê¤¿¤¬¤³¤ì¤é¤Î¹Í¤¨Êý¤ò狼¤Ë¼«Ê¬¤Î¸ÀÍÕ¤ÇÀâÌÀ¤·¤è¤¦¤È»î¤ß¤ë¾ì¹ç¡¢¤Þ¤¿¤Ï¤³¤ì¤é¤Î³µÇ°¤Ë´Ø¤·¤Æ¥¹¥é¥¤¥É¥·¥ç¡¼¤òÀ½ºî¤¹¤ë¾ì¹ç¤Ï¡¢¤¢¤Ê¤¿¼«¿È¤Î¹Í¤¨Êý¤Î¤ËÅý¹ç¤µ¤ì¤¿¡¢¤è¤êÎɤ¤Íý²ò¤òÆÀ¤ë¤³¤È¤¬½ÐÍè¤ë¤³¤È¤òÊݾڤ·¤Þ¤¹¡£¤³¤ì¤¬¡¢¸å¤ÇÆÉ¤à¤³¤È¤¬Ìµ¤¤¤È¤·¤Æ¤â¡¢¿Í¡¹¤¬¹ÖµÁÃæ¤Ë¥Î¡¼¥È¤ò¼è¤ëÍýͳ¤Ç¤¹¡£

                3. ¼Ò²ñ¹½À®¼çµÁ

                -

                ¤³¤ì¤Ï¾åµ­¤Î¹Í¤¨Êý¤ò¡¢¼Ò²ñ½¸ÃĤ¬Ê̤ν¸ÃĤΤ¿¤á¤Ë²¿¤«¤ò¹½ÃÛ¤¹¤ë¤³¤È¤Ë³ÈÄ¥¤·¤¿¤â¤Î¤Ç¤¹¡£¾®¤µ¤Êʸ²½Åª¤Ê¶¦Í­Êª¤ò¶¦Í­¤¹¤ë¤È¤¤¤¦°ÕÌ£¤Ë¤ª¤¤¤Æ¶¨Ä´¤·¤ÆºîÀ®¤¹¤ë¤â¤Î¤Ç¤¹¡£¤¢¤ë¿Í¤¬¤³¤Î¤è¤¦¤Êʸ²½¤Ë±Æ¶Á¤ò¼õ¤±¤¿¾ì¹ç¡¢¤¢¤é¤æ¤ë¥ì¥Ù¥ë¤ÇÇ¡²¿¤Ë¤·¤Æ¤³¤Îʸ²½¤Î°ì°÷¤Ë¤Ê¤ì¤ë¤«¤ò¡¢¾ï¤Ë³Ø¤Ö¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

                -

                Èó¾ï¤Ë´Êñ¤ÊÎã¤Ï¡¢¥«¥Ã¥×¤Î¤è¤¦¤ÊʪÂΤǤ¹¡£¤³¤ÎʪÂΤÏÍÍ¡¹¤ÊÍÑÅӤ˻ÈÍѤǤ­¤Þ¤¹¤¬¡¢¤³¤Î·Á¤¬±ÕÂΤòÆþ¤ì¤ë¤È¤¤¤¦¡ÖÃμ±¡×¤ò¼¨º¶¤·¤Æ¤¤¤Þ¤¹¡£¤â¤Ã¤ÈÊ£»¨¤ÊÎã¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤Ç¤¹¡£¥½¥Õ¥È¥¦¥§¥¢¥Ä¡¼¥ë¤Î¡Ö·Á¡×¤¬¡¢¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤¬¤É¤Î¤è¤¦¤Ëư¤¯¤«¤òɽ¤¹¤À¤±¤Ç¤Ï̵¤¯¡¢Á´ÂÎŪ¤ËºîÀ®¤µ¤ì¤¿¥°¥ë¡¼¥×Æâ¤Î³èư¤ª¤è¤Ó¥Æ¥­¥¹¥È¤¬¡¢¥°¥ë¡¼¥×Æâ¤Ç¤É¤Î¤è¤¦¤Ë¿¶Éñ¤¦¤«¤È¤¤¤¦·Á¤ò¥á¥ó¥Ð¡¼¤ËÂФ·¤Æ¼¨¤·¤Þ¤¹¡£

                +

                ¤³¤ì¤Ï¾åµ­¤Î¹Í¤¨Êý¤ò¡¢¼Ò²ñ½¸ÃĤ¬Ê̤ν¸ÃĤΰ٤˲¿¤«¤ò¹½ÃÛ¤¹¤ë¤³¤È¤Ë³ÈÄ¥¤·¤¿¤â¤Î¤Ç¤¹¡£¾®¤µ¤Êʸ²½Åª¤Ê¶¦Í­Êª¤ò¶¦Í­¤¹¤ë¤È¤¤¤¦°ÕÌ£¤Ë¤ª¤¤¤Æ¶¨Ä´¤·¤ÆºîÀ®¤¹¤ë¤â¤Î¤Ç¤¹¡£¤¢¤ë¿Í¤¬¤³¤Î¤è¤¦¤Êʸ²½¤Ë±Æ¶Á¤ò¼õ¤±¤¿¾ì¹ç¡¢¤¢¤é¤æ¤ë¥ì¥Ù¥ë¤ÇÇ¡²¿¤Ë¤·¤Æ¤³¤Îʸ²½¤Î°ì°÷¤Ë¤Ê¤ì¤ë¤«¤ò¡¢¾ï¤Ë³Ø¤Ö¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

                +

                Èó¾ï¤Ë´Êñ¤ÊÎã¤Ï¡¢¥«¥Ã¥×¤Î¤è¤¦¤ÊʪÂΤǤ¹¡£¤³¤ÎʪÂΤÏÍÍ¡¹¤ÊÍÑÅӤ˻ÈÍѤǤ­¤Þ¤¹¤¬¡¢¤³¤Î·Á¤¬±ÕÂΤòÆþ¤ì¤ë¤È¤¤¤¦¡ÖÃμ±¡×¤ò¼¨º¶¤·¤Æ¤¤¤Þ¤¹¡£¤â¤Ã¤ÈÊ£»¨¤ÊÎã¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤Ç¤¹¡£¥½¥Õ¥È¥¦¥§¥¢¥Ä¡¼¥ë¤Î¡Ö·Á¡×¤¬¡¢¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤¬¤É¤Î¤è¤¦¤Ëư¤¯¤«¤òɽ¤¹¤À¤±¤Ç¤Ï̵¤¯¡¢Á´ÂÎŪ¤ËºîÀ®¤µ¤ì¤¿¥°¥ë¡¼¥×Æâ¤Î³èưµÚ¤Ó¥Æ¥­¥¹¥È¤¬¡¢¥°¥ë¡¼¥×Æâ¤Ç¤É¤Î¤è¤¦¤Ë¿¶Éñ¤¦¤«¤È¤¤¤¦·Á¤ò¥á¥ó¥Ð¡¼¤ËÂФ·¤Æ¼¨¤·¤Þ¤¹¡£

                4. ´ØÏ¢Ç§¼±¤ÈʬΥǧ¼±

                ¤³¤Î¹Í¤¨Êý¤Ï¡¢¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤Ë¤ª¤±¤ë³Æ¸Ä¿Í¤Î¥â¥Á¥Ù¡¼¥·¥ç¥ó¤ò¿¼¤¯Ãµ¤ë¤â¤Î¤Ç¤¹¡£ ʬΥŪ¤Ê¹Ôư¤ò¤¹¤ë¿Í¤Ï¡¢¡ÖµÒ´ÑŪ¡×¤Ç¤¢¤ê¡Ö»ö¼Â¤Ë´ð¤Å¤¤¤Æ¡×¹Í¤¨¡¢ È¿ÂФιͤ¨Êý¤Î·ê¤ò¸«¤Ä¤±¤ë¤³¤È¤Ç¡¢¼«Ê¬¤Î¹Í¤¨¤ò¼é¤ë·¹¸þ¤¬¤¢¤ê¤Þ¤¹¡£ ´ØÏ¢Åª¤Ê¹Ôư¤ò¤¹¤ë¿Í¤Ï¡¢Â¾¤Î¿Í¤Î¹Í¤¨Êý¤ò¤â¤Ã¤È´¶¾ðŪ¤Ëª¤¨¡¢¼ç´ÑŪ¤Ë¼õ¤±Æþ¤ì¡¢Ê¹¤¤¤¿¤ê¿Ò¤Í¤¿¤ê¤¹¤ë¤³¤È¤ÇÍý²ò¤¹¤ëÅØÎϤò¤·¤Þ¤¹¡£ - ·úÀßŪ¤Ê¹Ôư¤ò¤¹¤ë¿Í¤È¤Ï¡¢Î¾Êý¤Î¥¢¥×¥í¡¼¥Á¤ËÉÒ´¶¤Ç¤¢¤ê¡¢¸½ºß¤Î¾õ¶·¤ËŬÀÚ¤Ê¹ÔÆ°¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                -

                °ìÈÌŪ¤Ë¡¢Àµ¾ï¤Ê¿ô¤Î´ØÏ¢Åª¤Ê¹Ôư¤ò¤¹¤ë¿Í¤¬³Ø½¬¥³¥ß¥å¥Ë¥Æ¥£¡¼¤Ë¸ºß¤¹¤ë¾ì¹ç¡¢¿Í¡¹¤òÌ©Àܤˤ¹¤ë¤À¤±¤Ç¤Ï¤Ê¤¯¡¢¤è¤ê¿¼¤¯¹Í¤¨¤ë¤³¤È¤ª¤è¤Ó¼Â¸¤¹¤ë¹Í¤¨Êý¤òºÆ¹Í¤¹¤ë¤³¤È¤Ë¤ª¤¤¤Æ¡¢³Ø½¬¤ËÂФ·¤ÆÈó¾ï¤Ë¥Ñ¥ï¥Õ¥ë¤Ê»É·ã¤È¤Ê¤ê¤Þ¤¹¡£

                + ·úÀßŪ¤Ê¹Ôư¤ò¤¹¤ë¿Í¤È¤Ï¡¢Î¾Êý¤Î¥¢¥×¥í¡¼¥Á¤ËÉÒ´¶¤Ç¤¢¤ê¡¢¸½ºß¤Î¾õ¶·¤ËŬÀÚ¤Ê¹ÔÆ°¤òÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                +

                °ìÈÌŪ¤Ë¡¢Àµ¾ï¤Ê¿ô¤Î´ØÏ¢Åª¤Ê¹Ôư¤ò¤¹¤ë¿Í¤¬³Ø½¬¥³¥ß¥å¥Ë¥Æ¥£¡¼¤Ë¸ºß¤¹¤ë¾ì¹ç¡¢¿Í¡¹¤òÌ©Àܤˤ¹¤ë¤À¤±¤Ç¤Ï¤Ê¤¯¡¢¤è¤ê¿¼¤¯¹Í¤¨¤ë¤³¤ÈµÚ¤Ó¼Â¸¤¹¤ë¹Í¤¨Êý¤òºÆ¹Í¤¹¤ë¤³¤È¤Ë¤ª¤¤¤Æ¡¢³Ø½¬¤ËÂФ·¤ÆÈó¾ï¤Ë¥Ñ¥ï¥Õ¥ë¤Ê»É·ã¤È¤Ê¤ê¤Þ¤¹¡£

                -
                -

                °ìö¤³¤ì¤é¤Î¤³¤È¤òÍý²ò¤¹¤ë¤È¡¢³Ø½¬¼Ô¤¬É¬ÍפÀ¤È¤¢¤Ê¤¿¤¬»×¤¦¾ðÊó¤òÄó¶¡¡¦É¾²Á¤¹¤ë¤è¤ê¤â¡¢³Ø½¬¼Ô¤Î»ëÅÀ¤Ë¾ÇÅÀ¤òÃÖ¤¯¼ê½õ¤±¤È¤Ê¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¤½¤ì¤¾¤ì¤Î¥³¡¼¥¹»²²Ã¼Ô¤¬¶µ»Õ¤Ç¤¢¤ë¤È¶¦¤Ë¡¢³Ø½¬¼Ô¤Ë¤â¤Ê¤êÆÀ¤ë¤³¤È¤òÍý²ò¤¹¤ë¼ê½õ¤±¤È¤Ê¤ê¤Þ¤¹¡£¡Ö¶µ»Õ¡×¤È¤·¤Æ¤Î¤¢¤Ê¤¿¤Î»Å»ö¤Ï¡¢¡ÖÃ챤Îȯ¿®¸»¡×¤«¤é±Æ¶Á¤òÍ¿¤¨¤ë¿Í¡¢¥¯¥é¥¹Ê¸²½¤ÎÌÏÈÏŪ¤Ê¿Í¤Ë¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢³ØÀ¸¤Î³Ø½¬¤ÎÍ×˾¤Ë¸Ä¿ÍŪ¤Ë¼è¤êÁȤߡ¢³ØÀ¸¤òÁí¹çŪ¤Ë¥¯¥é¥¹¤Î³Ø½¬¥´¡¼¥ë¤ØÆ³¤¯·Á¤Ç¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ä³èư¤ò¥â¥Ç¥ì¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                -

                ÌÀ¤é¤«¤ËMoodle¤Ï¤³¤ì¤é¤Î¹Ôư¥¹¥¿¥¤¥ë¤ò¶¯À©¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¥µ¥Ý¡¼¥È¤¹¤ë¤³¤È¤Ë¤ª¤¤¤ÆºÇŬ¤Ê¥·¥¹¥Æ¥à¤Ç¤¢¤ë¤È¸À¤¨¤Þ¤¹¡£¾­ÍèŪ¤Ë¡¢µ»½ÑŪ´ðÈפȤ·¤Æ¤ÎMoodle¤Î°ÂÄêÀ­¤òÁý¤¹¤³¤È¡¢¶µ°éŪ¤Ê¥µ¥Ý¡¼¥È¤ò¤µ¤é¤Ë²þÁ±¤¹¤ë¤³¤È¤Ï¡¢Moodle¤Î³«È¯¤Ë¤ª¤±¤ë½ÅÍפʻؿˤȤʤäƤ¤¤Þ¤¹¡£

                +
                +

                °ìö¤³¤ì¤é¤Î¤³¤È¤òÍý²ò¤¹¤ë¤È¡¢³Ø½¬¼Ô¤¬É¬ÍפÀ¤È¤¢¤Ê¤¿¤¬»×¤¦¾ðÊó¤òÄó¶¡¡¦É¾²Á¤¹¤ë¤è¤ê¤â¡¢³Ø½¬¼Ô¤Î»ëÅÀ¤Ë¾ÇÅÀ¤òÃÖ¤¯¼ê½õ¤±¤È¤Ê¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¤½¤ì¤¾¤ì¤Î¥³¡¼¥¹»²²Ã¼Ô¤¬¶µ»Õ¤Ç¤¢¤ë¤È¶¦¤Ë¡¢³Ø½¬¼Ô¤Ë¤â¤Ê¤êÆÀ¤ë¤³¤È¤òÍý²ò¤¹¤ë¼ê½õ¤±¤È¤Ê¤ê¤Þ¤¹¡£¡Ö¶µ»Õ¡×¤È¤·¤Æ¤Î¤¢¤Ê¤¿¤Î»Å»ö¤Ï¡¢¡ÖÃ챤Îȯ¿®¸»¡×¤«¤é±Æ¶Á¤òÍ¿¤¨¤ë¿Í¡¢¥¯¥é¥¹Ê¸²½¤ÎÌÏÈÏŪ¤Ê¿Í¤Ë¤Ê¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤¿¡¢³ØÀ¸¤Î³Ø½¬¤ÎÍ×˾¤Ë¸Ä¿ÍŪ¤Ë¼è¤êÁȤߡ¢³ØÀ¸¤òÁí¹çŪ¤Ë¥¯¥é¥¹¤Î³Ø½¬¥´¡¼¥ë¤ØÆ³¤¯·Á¤Ç¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ä³èư¤ò¥â¥Ç¥ì¡¼¥È¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                +

                ÌÀ¤é¤«¤ËMoodle¤Ï¤³¤ì¤é¤Î¹Ôư¥¹¥¿¥¤¥ë¤ò¶¯À©¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¥µ¥Ý¡¼¥È¤¹¤ë¤³¤È¤Ë¤ª¤¤¤ÆºÇŬ¤Ê¥·¥¹¥Æ¥à¤Ç¤¢¤ë¤È¸À¤¨¤Þ¤¹¡£¾­ÍèŪ¤Ë¡¢µ»½ÑŪ´ðÈפȤ·¤Æ¤ÎMoodle¤Î°ÂÄêÀ­¤òÁý¤¹¤³¤È¡¢¶µ°éŪ¤Ê¥µ¥Ý¡¼¥È¤ò¹¹¤Ë²þÁ±¤¹¤ë¤³¤È¤Ï¡¢Moodle¤Î³«È¯¤Ë¤ª¤±¤ë½ÅÍפʻؿˤȤʤäƤ¤¤Þ¤¹¡£

                -
                -

                Moodleʸ½ñ

                -

                Version: $Id$

                +
                +

                Moodleʸ½ñ

                +

                Version: $Id$

                diff --git a/lang/ja/docs/release.html b/lang/ja/docs/release.html index 8ad6d3df773..545cbd55997 100644 --- a/lang/ja/docs/release.html +++ b/lang/ja/docs/release.html @@ -1,6 +1,3 @@ - - Moodle Docs: Current Release notes @@ -10,15 +7,14 @@ - +

                ºÇ¿·¥ê¥ê¡¼¥¹¥Î¡¼¥È

                Moodle 1.4.3 (17 December, 2004)

                @@ -433,5 +429,5 @@

                 

                -

                Moodleʸ½ñ

                -

                Version: $Id$

                +

                Moodle Documentation

                +

                Version: $Id$

                diff --git a/lang/ja/docs/teacher.html b/lang/ja/docs/teacher.html index 27f4a3a185f..5abcd006a22 100644 --- a/lang/ja/docs/teacher.html +++ b/lang/ja/docs/teacher.html @@ -1,288 +1,144 @@ - Moodle Docs: Teachers Manual - - - - - -

                ¶µ»Õ¥Þ¥Ë¥å¥¢¥ë

                - -

                ¤³¤Î¥Ú¡¼¥¸¤ÏMoodle¤Ç¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤òºîÀ®¤¹¤ë¤¿¤á¤Î¥¯¥¤¥Ã¥¯¥¬¥¤¥É¤Ç¤¹¡£ - +

                ¤³¤Î¥Ú¡¼¥¸¤ÏMoodle¤Ç¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤òºîÀ®¤¹¤ë°Ù¤Î¥¯¥¤¥Ã¥¯¥¬¥¤¥É¤Ç¤¹¡£ ¤³¤³¤Ç¤Ï¡¢ÍøÍѲÄǽ¤Ê¼çÍפʵ¡Ç½¤Ë´Ø¤·¤Æ³µÍפòÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£Æ±»þ¤Ë¤¢¤Ê¤¿¤¬·èÄꤹ¤ëɬÍפΤ¢¤ë»öÊÁ¤Ë´Ø¤·¤Æ¤âÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£

                -

                ¤³¤Îʸ½ñ¤Î¹àÌÜ:

                -
                  -
                1. ¤Ï¤¸¤á¤Ë
                2. -
                3. ¥³¡¼¥¹ÀßÄê
                4. -
                5. ¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É
                6. -
                7. ³èư¤ÎÀßÄê
                8. -
                9. ¥³¡¼¥¹±¿±Ä
                10. -
                11. ¤½¤Î¾¤Î¾ðÊó
                12. -
                -

                ¤Ï¤¸¤á¤Ë

                -
                -

                ¤³¤Îʸ½ñ¤Ï¡¢¥µ¥¤¥È´ÉÍý¼Ô¤¬Moodle¤Î¥»¥Ã¥È¥¢¥Ã¥×¤ò´°Î»¤·¤Æ¡¢¤¢¤Ê¤¿¤Ë̵ÀßÄê¤Î¥³¡¼¥¹¤òÍ¿¤¨¤ë¤³¤È¤òÁ°Äó¤È¤·¤Æ¤¤¤Þ¤¹¡£ - ¤Þ¤¿¡¢¤¢¤Ê¤¿¤¬¶µ»ÕÍÑ¥¢¥«¥¦¥ó¥È¤Ç¥³¡¼¥¹¤Ë¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¤³¤È¤âÁ°Äó¤È¤·¤Æ¤¤¤Þ¤¹¡£

                -

                Moodle¤ò»È¤¤»Ï¤á¤ë¤¿¤á¤Î3¤Ä¤Î¥Ò¥ó¥È¤Ç¤¹¡£

                -
                  -
                1. ·Ð¸³¤¹¤ë¤³¤È¤ò¶²¤ì¤Ê¤¤¤Ç¤¯¤À¤µ¤¤: - -
                  ¼«Í³¤Ë¤¢¤Á¤³¤Á¤ò¿¨¤Ã¤¿¤êÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£Moodle¤Î¥³¡¼¥¹¤ò²õ¤¹¤³¤È¤Ï´Êñ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤â¤·²õ¤ì¤Æ¤â¡¢ÉáÄ̤ϴÊñ¤Ëľ¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ - +
                  ¼«Í³¤Ë¤¢¤Á¤³¤Á¤ò¿¨¤Ã¤¿¤êÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£Moodle¤Î¥³¡¼¥¹¤ò²õ¤¹¤³¤È¤Ï´Êñ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤â¤·²õ¤ì¤Æ¤â¡¢ÉáÄ̤ϴÊñ¤Ëľ¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
                  -
                2. ¾®¤µ¤Ê¥¢¥¤¥³¥ó¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤: -
                  -

                    - ÊÔ½¸¥¢¥¤¥³¥ó - - ¤Î¼¡¤Ë¤¢¤ë¤â¤Î¤Ï¤É¤ó¤Ê¤â¤Î¤Ç¤âÊÔ½¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                  - + ¤Î¼¡¤Ë¤¢¤ë¤â¤Î¤Ï¤É¤ó¤Ê¤â¤Î¤Ç¤âÊÔ½¸¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                  - ¥Ø¥ë¥×¥¢¥¤¥³¥ó - ¤Ï¥Ý¥Ã¥×¥¢¥Ã¥×¥Ø¥ë¥×¥¦¥¤¥ó¥É¥¦¤òÄ󶡤·¤Þ¤¹¡£

                  -

                    - the ³«¤¤¤¿ÌÜ¥¢¥¤¥³¥ó - ¤Ï³ØÀ¸¤«¤é²¿¤«¤ò±£¤·¤¿¤¤»þ¤Ë»È¤¤¤Þ¤¹¡£

                  -

                    - the ÊĤ¸¤¿ÌÜ¥¢¥¤¥³¥ó - ¤Ï±£¤·¤Æ¤¤¤¿¤â¤Î¤ò¸«¤¨¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£

                  -
                  -
                3. -
                4. ¤½¤ì¤¾¤ì¤Î¥Ú¡¼¥¸¾åÉô¤Ë¤¢¤ë¥Ê¥Ó¥²¡¼¥·¥ç¥ó¥Ð¡¼¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤ -
                  ¥Ê¥Ó¥²¡¼¥·¥ç¥ó¥Ð¡¼¤Ç¡¢¤¢¤Ê¤¿¤¬¤É¤³¤Ë¤¤¤ë¤Î¤«Ê¬¤«¤ê¤Þ¤¹¡£¤Þ¤¿¡¢Ì»Ҥˤʤë¤Î¤òËɤ®¤Þ¤¹¡£ -
                  -
                5. -
                -

                 

                -
                -

                ¥³¡¼¥¹ÀßÄê

                -
                - -

                ¤Þ¤ººÇ½é¤Ë¡Ö´ÉÍý¥á¥Ë¥å¡¼¡×¤Î²¼¤Ë¤¢¤ë¡ÖÀßÄê...¡×¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤(¤³¤Î¥ê¥ó¥¯¤ª¤è¤Ó´ÉÍý¥»¥¯¥·¥ç¥ó¤Ï¡¢¤¢¤Ê¤¿¤È¥µ¥¤¥È´ÉÍý¼Ô¤Î¤ß¤¬»ÈÍѤǤ­¤Þ¤¹¡£³ØÀ¸¤Ë¤Ïɽ¼¨¤µ¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤»¤ó¡£)¡£

                - -

                ÀßÄê¥Ú¡¼¥¸¤Ç¤Ï¥³¡¼¥¹Ì¾¤«¤é³«»ÏÆü¤Þ¤ÇÍÍ¡¹¤ÊÀßÄê¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î¹àÌܤβ£¤Ë¤¢¤ë¥Ø¥ë¥×¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¾ÜºÙ¤Ë´Ø¤¹¤ëÀâÌÀ¤ò±ÜÍ÷¤Ç¤­¤Þ¤¹¤Î¤Ç¡¢¤³¤³¤Ç¤Ï¾ÜºÙ¤Ë½Ò¤Ù¤Þ¤»¤ó¡£¤·¤«¤·¤Ê¤¬¤é¡¢°ìÈÖÂçÀڤʹàÌÜ - ¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë´Ø¤·¤ÆÀâÌÀ¤·¤Þ¤¹¡£

                - +

                ¤Þ¤ººÇ½é¤Ë¡Ö´ÉÍý¥á¥Ë¥å¡¼¡×¤Î²¼¤Ë¤¢¤ë¡ÖÀßÄê...¡×¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤(¤³¤Î¥ê¥ó¥¯µÚ¤Ó´ÉÍý¥»¥¯¥·¥ç¥ó¤Ï¡¢¤¢¤Ê¤¿¤È¥µ¥¤¥È´ÉÍý¼Ô¤Î¤ß¤¬»ÈÍѽÐÍè¤Þ¤¹¡£³ØÀ¸¤Ë¤Ïɽ¼¨¤µ¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤»¤ó¡£)¡£

                +

                ÀßÄê¥Ú¡¼¥¸¤Ç¤Ï¥³¡¼¥¹Ì¾¤«¤é³«»ÏÆü¤Þ¤ÇÍÍ¡¹¤ÊÀßÄê¤òÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î¹àÌܤβ£¤Ë¤¢¤ë¥Ø¥ë¥×¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¾ÜºÙ¤Ë´Ø¤¹¤ëÀâÌÀ¤ò±ÜÍ÷½ÐÍè¤Þ¤¹¤Î¤Ç¡¢¤³¤³¤Ç¤Ï¾ÜºÙ¤Ë½Ò¤Ù¤Þ¤»¤ó¡£¤·¤«¤·¤Ê¤¬¤é¡¢°ìÈÖÂçÀڤʹàÌÜ - ¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë´Ø¤·¤ÆÀâÌÀ¤·¤Þ¤¹¡£

                ¤¢¤Ê¤¿¤¬ÁªÂò¤¹¤ë¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢¥Æ¥ó¥×¥ì¡¼¥È¤Î¤è¤¦¤Ë¥³¡¼¥¹¤Î´ðËÜŪ¤Ê¥ì¥¤¥¢¥¦¥È¤ò·èÄꤷ¤Þ¤¹¡£Moodle¥Ð¡¼¥¸¥ç¥ó 1.0¤Ë¤Ï3¤Ä¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¤¢¤ê¤Þ¤¹ - ¾­ÍèŪ¤Ë¤ÏÁý¤¨¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹(¿·¤·¤¤¥¢¥¤¥Ç¥£¥¢¤ò martin@moodle.org¤Ë¤ªÁ÷¤ê¤¯¤À¤µ¤¤!)

                -

                3¤Ä¤Î¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤òŬÍѤ·¤¿¡¢3¤Ä¤Î¥µ¥ó¥×¥ë¥³¡¼¥¹¤Ç¤¹¡£(¥µ¥¤¥È´ÉÍý¼Ô¤Ë¤è¤ê¥µ¥¤¥ÈÁ´ÂΤËÀßÄꤵ¤ì¤ë¿§¤Î°ã¤¤¤Ï̵»ë¤·¤Æ¤¯¤À¤µ¤¤):

                -

                ¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È:

                -

                -

                 

                -

                ¥È¥Ô¥Ã¥¯¥Õ¥©¡¼¥Þ¥Ã¥È:

                -

                -

                 

                -

                ¥½¡¼¥·¥ã¥ë¥Õ¥©¡¼¥Þ¥Ã¥È:

                -

                -

                 

                -

                ¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È¤È¥È¥Ô¥Ã¥¯¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¹½Â¤Åª¤ËÎà»÷¤·¤Æ¤¤¤Þ¤¹¡£¼ç¤Ê°ã¤¤¤Ï¡¢¥È¥Ô¥Ã¥¯¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¥«¥Ð¡¼¤¹¤ë½µ¤¬Ç¤°Õ¤Ç¤¢¤ë¤Î¤ËÂФ·¤Æ¡¢¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È¤ÏÀµ³Î¤Ë1½µ¤ò¥«¥Ð¡¼¤·¤Þ¤¹¡£¥½¡¼¥·¥ã¥ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢Â¿¤¯¤Î¥³¥ó¥Æ¥ó¥Ä¤ò»ÈÍѤ»¤º¤Ë1¤Ä¤Î¥Õ¥©¡¼¥é¥à¤ò¥Ù¡¼¥¹¤È¤·¤Þ¤¹¡£¤³¤Î¥Õ¥©¡¼¥é¥à¤Ï¥á¥¤¥ó¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£

                -

                ¾ÜºÙ¤Ï¡¢¥³¡¼¥¹ÀßÄê¥Ú¡¼¥¸¤Ë¤¢¤ë¥Ø¥ë¥×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£

                -

                 

                -
                -

                ¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É

                -
                - -

                ¥³¡¼¥¹¤ËÄɲä·¤¿¤¤¥¦¥§¥Ö¥Ú¡¼¥¸¡¢¥ª¡¼¥Ç¥£¥ª¥Õ¥¡¥¤¥ë¡¢¥Ó¥Ç¥ª¥Õ¥¡¥¤¥ë¡¢¥ï¡¼¥É¥É¥­¥å¥á¥ó¥È¡¢¥Õ¥é¥Ã¥·¥å¥¢¥Ë¥á¡¼¥·¥ç¥óÅù¤ò¤ª»ý¤Á¤Î¤³¤È¤Ç¤·¤ç¤¦¡£¤É¤Î¤è¤¦¤Ê¼ïÎà¤Î¥Õ¥¡¥¤¥ë¤Ç¤â¡¢¤¢¤Ê¤¿¤Î¥³¡¼¥¹Æâ¤Ë¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤Ï¥µ¡¼¥Ð¤ËÊݸ¤µ¤ì¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤¬¥µ¡¼¥Ð¾å¤Ë¤¢¤ë´Ö¤Ï¡¢°Üư¡¢¥ê¥Í¡¼¥à¡¢ÊÔ½¸¡¢ºï½ü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                - -

                Á´¤Æ¤Î½èÍý¤Ï´ÉÍý¥á¥Ë¥å¡¼¤Î¥Õ¥¡¥¤¥ë¥ê¥ó¥¯¤è¤ê¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¥»¥¯¥·¥ç¥ó¤Ï²¼µ­¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹:

                - +

                ¥³¡¼¥¹¤ËÄɲä·¤¿¤¤¥¦¥§¥Ö¥Ú¡¼¥¸¡¢¥ª¡¼¥Ç¥£¥ª¥Õ¥¡¥¤¥ë¡¢¥Ó¥Ç¥ª¥Õ¥¡¥¤¥ë¡¢¥ï¡¼¥É¥É¥­¥å¥á¥ó¥È¡¢¥Õ¥é¥Ã¥·¥å¥¢¥Ë¥á¡¼¥·¥ç¥óÅù¤ò¤ª»ý¤Á¤Î¤³¤È¤Ç¤·¤ç¤¦¡£¤É¤Î¤è¤¦¤Ê¼ïÎà¤Î¥Õ¥¡¥¤¥ë¤Ç¤â¡¢¤¢¤Ê¤¿¤Î¥³¡¼¥¹Æâ¤Ë¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤Ï¥µ¡¼¥Ð¤ËÊݸ¤µ¤ì¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤¬¥µ¡¼¥Ð¾å¤Ë¤¢¤ë´Ö¤Ï¡¢°Üư¡¢¥ê¥Í¡¼¥à¡¢ÊÔ½¸¡¢ºï½ü¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                +

                Á´¤Æ¤Î½èÍý¤Ï´ÉÍý¥á¥Ë¥å¡¼¤Î¥Õ¥¡¥¤¥ë¥ê¥ó¥¯¤è¤ê¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¥»¥¯¥·¥ç¥ó¤Ï²¼µ­¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹:

                -

                 

                - -

                ¤³¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï¶µ»Õ¤Î¤ß¤¬»ÈÍѤǤ­¤Þ¤¹ - ³ØÀ¸¤Ë¤ÏɬÍפ¢¤ê¤Þ¤»¤ó¡£¤³¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¸å¤Ç³ØÀ¸¤Ë¸ø³«¤µ¤ì¤Þ¤¹(¥ê¥½¡¼¥¹¡×¤È¤·¤Æ - ¼¡¤Î¥»¥¯¥·¥ç¥ó¤ò¤´Í÷¤¯¤À¤µ¤¤)¡£

                - -

                ¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È¤Ç¤´Í÷¤Î¤è¤¦¤Ë¡¢¥Õ¥¡¥¤¥ë¤Ï¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ÈƱÎó¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤òÀ°Íý¤¹¤ë¤¿¤á¤Ë´ö¤Ä¤Ç¤â¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¥Õ¥¡¥¤¥ë¤ò¥Ç¥£¥ì¥¯¥È¥ê¤«¤éÊ̤Υǥ£¥ì¥¯¥È¥ê¤Ø°Üư¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

                - +

                ¤³¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï¶µ»Õ¤Î¤ß¤¬»ÈÍѽÐÍè¤Þ¤¹ - ³ØÀ¸¤Ë¤ÏɬÍפ¢¤ê¤Þ¤»¤ó¡£¤³¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¸å¤Ç³ØÀ¸¤Ë¸ø³«¤µ¤ì¤Þ¤¹(¥ê¥½¡¼¥¹¡×¤È¤·¤Æ - ¼¡¤Î¥»¥¯¥·¥ç¥ó¤ò¤´Í÷¤¯¤À¤µ¤¤)¡£

                +

                ¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È¤Ç¤´Í÷¤Î¤è¤¦¤Ë¡¢¥Õ¥¡¥¤¥ë¤Ï¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ÈƱÎó¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤òÀ°Íý¤¹¤ë¤¿¤á¤Ë´ö¤Ä¤Ç¤â¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤¿¡¢¥Õ¥¡¥¤¥ë¤ò¥Ç¥£¥ì¥¯¥È¥ê¤«¤éÊ̤Υǥ£¥ì¥¯¥È¥ê¤Ø°Üư¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£

                ¸½ºß¡¢¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É¤Ï1²ó¤Ë¤Ä¤­1¸Ä¤ËÀ©¸Â¤µ¤ì¤Æ¤¤¤Þ¤¹¡£1Å٤˿¤¯¤Î¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¤¤¾ì¹ç(Î㤨¤Ð¥µ¥¤¥ÈÁ´ÂÎ)¤Ï¡¢zip¥×¥í¥°¥é¥à¤ò»ÈÍѤ·¤ÆÊ£¿ô¤Î¥Õ¥¡¥¤¥ë¤ò1¤Ä¤Ë°µ½Ì¤·¤¿¸å¤Ë¡¢zip¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤·¤Æ¡¢¥µ¡¼¥Ð¤Ç²òÅह¤ëÊýË¡¤¬´Êñ¤Ç¤¹(zip½ñ¸Ë¤ÎÎ٤ˡÖunzip¡×¥ê¥ó¥¯¤¬É½¼¨¤µ¤ì¤Þ¤¹)¡£

                - -

                ¥Õ¥¡¥¤¥ë̾¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤ò¥×¥ì¥Ó¥å¡¼¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Ö¥é¥¦¥¶¤¬¼«Æ°Åª¤Ëɽ¼¨¤¹¤ë¤«¡¢¥³¥ó¥Ô¥å¡¼¥¿¤Ë¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤«È½ÃǤ·¤Þ¤¹¡£

                - -

                HTML¤ª¤è¤Ó¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ï¥ª¥ó¥é¥¤¥ó¤ÇÊÔ½¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Â¾¤Î¥Õ¥¡¥¤¥ë¤Ï¥í¡¼¥«¥ë¥³¥ó¥Ô¥å¡¼¥¿¤ÇÊÔ½¸¤·¤¿¸å¤ËºÆÅÙ¥¢¥Ã¥×¥í¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£´û¸¤Î¥Õ¥¡¥¤¥ë¤ÈƱ¤¸Ì¾Á°¤Ç¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¾ì¹ç¡¢¥Õ¥¡¥¤¥ë¤Ï¼«Æ°Åª¤Ë¾å½ñ¤­¤µ¤ì¤Þ¤¹¡£

                - -

                ºÇ¸å¤Ë: ¤â¤·¥³¥ó¥Æ¥ó¥Ä¤¬Moodle¥µ¥¤¥È°Ê³°¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É¤ò¹Ô¤¦É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡£¥³¡¼¥¹¤ÎÃæ¤«¤é¥³¥ó¥Æ¥ó¥Ä¤Ë¥ê¥ó¥¯¤òÄ¥¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹(¾ÜºÙ¤Ï¥ê¥½¡¼¥¹¥â¥¸¥å¡¼¥ë¤ª¤è¤Ó¼¡¤Î¥»¥¯¥·¥ç¥ó¤ò¤´Í÷¤¯¤À¤µ¤¤)¡£

                - +

                ¥Õ¥¡¥¤¥ë̾¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤ò¥×¥ì¥Ó¥å¡¼¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¥Ö¥é¥¦¥¶¤¬¼«Æ°Åª¤Ëɽ¼¨¤¹¤ë¤«¡¢¥³¥ó¥Ô¥å¡¼¥¿¤Ë¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤«È½ÃǤ·¤Þ¤¹¡£

                +

                HTMLµÚ¤Ó¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ï¥ª¥ó¥é¥¤¥ó¤ÇÊÔ½¸¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Â¾¤Î¥Õ¥¡¥¤¥ë¤Ï¥í¡¼¥«¥ë¥³¥ó¥Ô¥å¡¼¥¿¤ÇÊÔ½¸¤·¤¿¸å¤ËºÆÅÙ¥¢¥Ã¥×¥í¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£´û¸¤Î¥Õ¥¡¥¤¥ë¤ÈƱ¤¸Ì¾Á°¤Ç¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¾ì¹ç¡¢¥Õ¥¡¥¤¥ë¤Ï¼«Æ°Åª¤Ë¾å½ñ¤­¤µ¤ì¤Þ¤¹¡£

                +

                ºÇ¸å¤Ë: ¤â¤·¥³¥ó¥Æ¥ó¥Ä¤¬Moodle¥µ¥¤¥È°Ê³°¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É¤ò¹Ô¤¦É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡£¥³¡¼¥¹¤ÎÃæ¤«¤é¥³¥ó¥Æ¥ó¥Ä¤Ë¥ê¥ó¥¯¤òÄ¥¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹(¾ÜºÙ¤Ï¥ê¥½¡¼¥¹¥â¥¸¥å¡¼¥ëµÚ¤Ó¼¡¤Î¥»¥¯¥·¥ç¥ó¤ò¤´Í÷¤¯¤À¤µ¤¤)¡£

                 

                -
                -

                ³èư¤ÎÀßÄê

                -
                - -

                ¥³¡¼¥¹¤òºîÀ®¤¹¤ë¤Ë¤Ï¡¢³ØÀ¸¤¬»ÈÍѤ¹¤ë½çÈ֤˽¾¤Ã¤Æ¡¢¥³¡¼¥¹³èư¥â¥¸¥å¡¼¥ë¤ò¥á¥¤¥ó¥Ú¡¼¥¸¤ËÄɲ乤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥â¥¸¥å¡¼¥ë¤Îʤӽç¤Ï¤¤¤Ä¤Ç¤â¹¥¤­¤Ê¤è¤¦¤ËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                - -

                ÊÔ½¸¤¹¤ë¤Ë¤Ï¡¢´ÉÍý¥á¥Ë¥å¡¼¤Î²¼¤Ë¤¢¤ë¡ÖÊÔ½¸¥â¡¼¥É ON¡×¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥È¥°¥ë¥¹¥¤¥Ã¥Á¤Ë¤è¤ê¡¢¥á¥¤¥ó¥³¡¼¥¹¥Ú¡¼¥¸¤òÊѹ¹¤¹¤ëÆÃÊ̤ʥá¥Ë¥å¡¼¤Îɽ¼¨¡¦Èóɽ¼¨¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¾åµ­¤Î°ìÈÖÌܤΥ¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È(¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È)¤Ç¤Ï¡¢¡ÖÊÔ½¸¥â¡¼¥É ON¡×¤Ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

                - +

                ¥³¡¼¥¹¤òºîÀ®¤¹¤ë¤Ë¤Ï¡¢³ØÀ¸¤¬»ÈÍѤ¹¤ë½çÈ֤˽¾¤Ã¤Æ¡¢¥³¡¼¥¹³èư¥â¥¸¥å¡¼¥ë¤ò¥á¥¤¥ó¥Ú¡¼¥¸¤ËÄɲ乤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥â¥¸¥å¡¼¥ë¤Îʤӽç¤Ï¤¤¤Ä¤Ç¤â¹¥¤­¤Ê¤è¤¦¤ËÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                +

                ÊÔ½¸¤¹¤ë¤Ë¤Ï¡¢´ÉÍý¥á¥Ë¥å¡¼¤Î²¼¤Ë¤¢¤ë¡ÖÊÔ½¸¥â¡¼¥É ON¡×¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥È¥°¥ë¥¹¥¤¥Ã¥Á¤Ë¤è¤ê¡¢¥á¥¤¥ó¥³¡¼¥¹¥Ú¡¼¥¸¤òÊѹ¹¤¹¤ëÆÃÊ̤ʥá¥Ë¥å¡¼¤Îɽ¼¨¡¦Èóɽ¼¨¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¾åµ­¤Î°ìÈÖÌܤΥ¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È(¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È)¤Ç¤Ï¡¢¡ÖÊÔ½¸¥â¡¼¥É ON¡×¤Ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

                ¿·¤·¤¤³èư¤òÄɲ乤ë¾ì¹ç¤Ï¡¢½µ¡¢¥È¥Ô¥Ã¥¯¡¢¥»¥¯¥·¥ç¥ó²èÌ̤β¿¤ì¤«¤Ë¥¢¥¯¥»¥¹¤·¤Æ¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¥á¥Ë¥å¡¼¤è¤êÄɲä·¤¿¤¤³èư¤Î¥¿¥¤¥×¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£Moodle 1.0¤Îɸ½àŪ¤ÊÁ´³èư¤Î²òÀâ¤Ç¤¹:

                -
                -
                ²ÝÂê
                - -
                ²ÝÂê¤Ç¤Ï¡¢Äó½Ð´ü¸Â¤ª¤è¤ÓºÇÂçɾ²Á¤ò»ý¤Ã¤¿¥¿¥¹¥¯¤òÀßÄꤷ¤Þ¤¹¡£³ØÀ¸¤ÏÍ×µá¤òËþ¤¿¤·¤¿¥Õ¥¡¥¤¥ë¤ò1¤Ä¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤·¤¿Æü»þ¤Ïµ­Ï¿¤µ¤ì¤Þ¤¹¡£¤½¤Î¸å¡¢¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ë(¤ª¤è¤ÓÄó½Ð¤ÎÁᤤÃÙ¤¤)¤ò°ìÍ÷¤Ç¤­¤ë¥Ú¡¼¥¸¤¬ÍѰդµ¤ì¤Þ¤¹¤Î¤Ç¡¢É¾²Á¤ª¤è¤Ó¥³¥á¥ó¥È¤ÎÅê¹Æ¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£É¾²Á¤ò¹Ô¤Ã¤¿30ʬ¸å¤Ë¡¢É¾²Á¤ò¹Ô¤Ã¤¿³ØÀ¸°¸¤Æ¤ËMoodle¤«¤é¼«Æ°Åª¤ËÄÌÃΥ᡼¥ë¤¬Á÷¿®¤µ¤ì¤Þ¤¹¡£
                - -
                - -
                - +
                ²ÝÂê¤Ç¤Ï¡¢Äó½Ð´ü¸ÂµÚ¤ÓºÇÂçɾ²Á¤ò»ý¤Ã¤¿¥¿¥¹¥¯¤òÀßÄꤷ¤Þ¤¹¡£³ØÀ¸¤ÏÍ×µá¤òËþ¤¿¤·¤¿¥Õ¥¡¥¤¥ë¤ò1¤Ä¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤·¤¿Æü»þ¤Ïµ­Ï¿¤µ¤ì¤Þ¤¹¡£¤½¤Î¸å¡¢¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ë(µÚ¤ÓÄó½Ð¤ÎÁᤤÃÙ¤¤)¤ò°ìÍ÷½ÐÍè¤ë¥Ú¡¼¥¸¤¬ÍѰդµ¤ì¤Þ¤¹¤Î¤Ç¡¢É¾²ÁµÚ¤Ó¥³¥á¥ó¥È¤ÎÅê¹Æ¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£É¾²Á¤ò¹Ô¤Ã¤¿30ʬ¸å¤Ë¡¢É¾²Á¤ò¹Ô¤Ã¤¿³ØÀ¸°¸¤Æ¤ËMoodle¤«¤é¼«Æ°Åª¤ËÄÌÃΥ᡼¥ë¤¬Á÷¿®¤µ¤ì¤Þ¤¹¡£
                +
                +
                ÁªÂò
                - -
                ÁªÂò¤Ï¡¢¼ÁÌä¤ò¤·¤Æ¤½¤ì¤ËÂФ¹¤ëÊÖÅú¤ÎÁªÂò¤òÀßÄꤹ¤ë¥·¥ó¥×¥ë¤Ê³èư¤Ç¤¹¡£³ØÀ¸¤ÏÁªÂò¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¢¤Ê¤¿¤Ë¤Ï³ØÀ¸¤ÎÁªÂò·ë²Ì¤¬É½¼¨¤µ¤ì¤ë¥ì¥Ý¡¼¥È²èÌ̤¬ÍѰդµ¤ì¤Þ¤¹¡£»ä¤Ï³ØÀ¸¤Î°Õ¸«¤ò½¸¤á¤ë¤È¤­¤ËÁªÂò¤ò»ÈÍѤ·¤Þ¤¹¤¬¡¢´Êñ¤ÊÅêɼ¤ä¥¯¥é¥¹Åêɼ¤Ë»ÈÍѤ¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
                - -
                - -
                - +
                ÁªÂò¤Ï¡¢¼ÁÌä¤ò¤·¤Æ¤½¤ì¤ËÂФ¹¤ëÊÖÅú¤ÎÁªÂò¤òÀßÄꤹ¤ë¥·¥ó¥×¥ë¤Ê³èư¤Ç¤¹¡£³ØÀ¸¤ÏÁªÂò¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤¢¤Ê¤¿¤Ë¤Ï³ØÀ¸¤ÎÁªÂò·ë²Ì¤¬É½¼¨¤µ¤ì¤ë¥ì¥Ý¡¼¥È²èÌ̤¬ÍѰդµ¤ì¤Þ¤¹¡£»ä¤Ï³ØÀ¸¤Î°Õ¸«¤ò½¸¤á¤ë¤È¤­¤ËÁªÂò¤ò»ÈÍѤ·¤Þ¤¹¤¬¡¢´Êñ¤ÊÅêɼ¤ä¥¯¥é¥¹Åêɼ¤Ë»ÈÍѤ¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
                +
                +
                ¥Õ¥©¡¼¥é¥à
                - -
                ¥Õ¥©¡¼¥é¥à¤Ï¡¢¤³¤ÎÃæ¤ÇµÄÏÀ¤¬¹Ô¤ï¤ì¤ë°ìÈÖÂçÀڤʥ⥸¥å¡¼¥ë¤Ç¤¹¡£¥Õ¥©¡¼¥é¥à¤òÄɲ乤ë¾ì¹ç¡¢¡Öñ°ì¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¡×¡Öɸ½à¥Õ¥©¡¼¥é¥à¡×¡Ö¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò1·ïÅê¹Æ¡×¤ÎÃæ¤«¤é¥¿¥¤¥×¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                - -
                - -
                - +
                ¥Õ¥©¡¼¥é¥à¤Ï¡¢¤³¤ÎÃæ¤ÇµÄÏÀ¤¬¹Ô¤ï¤ì¤ë°ìÈÖÂçÀڤʥ⥸¥å¡¼¥ë¤Ç¤¹¡£¥Õ¥©¡¼¥é¥à¤òÄɲ乤ë¾ì¹ç¡¢¡Öñ°ì¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¡×¡Öɸ½à¥Õ¥©¡¼¥é¥à¡×¡Ö¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò1·ïÅê¹Æ¡×¤ÎÃæ¤«¤é¥¿¥¤¥×¤òÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
                +
                +
                Æü»ï
                - -
                ¤½¤ì¤¾¤ì¤ÎÆü»ï³èư¤Ï¡¢¥³¡¼¥¹Á´ÂΤ˴ؤï¤ëÆü»ï¤Î1¥¨¥ó¥È¥ê¤Ç¤¹¡£¤½¤ì¤¾¤ì¤ÎÆü»ï¤Ë¤Ï¡¢³ØÀ¸¤¬²¿¤ò½ñ¤¯¤Ù¤­¤«¤òƳ¤¯¡¢¼«Í³²óÅú¤Î¤Ç¤­¤ë¼ÁÌä¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Æ±»þ¤ËÆü»ï¤ÎÍøÍѲÄǽ¤Ê»þ´ÖÏÈ(¥¦¥¤¡¼¥¯¥ê¡¼¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¤ß)¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£°ìÈÌŪ¤ÊÌܰ¤Ȥ·¤Æ¡¢1½µÅö¤ê1¤Ä¤ÎÆü»ï¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£³ØÀ¸¤¬½Ï¹Í¤·¤ÆÈãɾŪ¤Ë½ñ¤±¤ë¤è¤¦¤Ë¡¢Æü»ï¤Ï¤¢¤Ê¤¿¤È³ØÀ¸¤Î¤ß¤¬ÍøÍѤǤ­¤Þ¤¹¡£¤½¤Î¸å¡¢¤½¤Î½µ¤Þ¤¿¤Ï¥È¥Ô¥Ã¥¯Á´¤Æ¤Î¥¨¥ó¥È¥ê¤Îɾ²Á¤ª¤è¤Ó¥³¥á¥ó¥È¤ÎÅê¹Æ¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£³ØÀ¸¤Ï¡¢¤¢¤Ê¤¿¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¬¹Ô¤ï¤ì¤¿»Ý¤ÎÄÌÃΥ᡼¥ë¤ò¼«Æ°Åª¤Ë¼õ¤±¼è¤ê¤Þ¤¹¡£Æü»ï¤Ï·Ñ³Ū¤ËÅÐÏ¿¤µ¤ì¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢É¬Íפʾì¹ç¤Ï¤µ¤é¤ËÆü»ï³èư¤òÄɲ䷤Ƥ¯¤À¤µ¤¤¡£
                - -
                - -
                - +
                ¤½¤ì¤¾¤ì¤ÎÆü»ï³èư¤Ï¡¢¥³¡¼¥¹Á´ÂΤ˴ؤï¤ëÆü»ï¤Î1¥¨¥ó¥È¥ê¡¼¤Ç¤¹¡£¤½¤ì¤¾¤ì¤ÎÆü»ï¤Ë¤Ï¡¢³ØÀ¸¤¬²¿¤ò½ñ¤¯¤Ù¤­¤«¤òƳ¤¯¡¢¼«Í³²óÅú¤Î½ÐÍè¤ë¼ÁÌä¤òÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Æ±»þ¤ËÆü»ï¤ÎÍøÍѲÄǽ¤Ê»þ´ÖÏÈ(¥¦¥¤¡¼¥¯¥ê¡¼¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¤ß)¤òÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£°ìÈÌŪ¤ÊÌܰ¤Ȥ·¤Æ¡¢1½µÅö¤ê1¤Ä¤ÎÆü»ï¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£³ØÀ¸¤¬½Ï¹Í¤·¤ÆÈãɾŪ¤Ë½ñ¤±¤ë¤è¤¦¤Ë¡¢Æü»ï¤Ï¤¢¤Ê¤¿¤È³ØÀ¸¤Î¤ß¤¬ÍøÍѽÐÍè¤Þ¤¹¡£¤½¤Î¸å¡¢¤½¤Î½µËô¤Ï¥È¥Ô¥Ã¥¯Á´¤Æ¤Î¥¨¥ó¥È¥ê¡¼¤Îɾ²ÁµÚ¤Ó¥³¥á¥ó¥È¤ÎÅê¹Æ¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£³ØÀ¸¤Ï¡¢¤¢¤Ê¤¿¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¬¹Ô¤ï¤ì¤¿»Ý¤ÎÄÌÃΥ᡼¥ë¤ò¼«Æ°Åª¤Ë¼õ¤±¼è¤ê¤Þ¤¹¡£Æü»ï¤Ï·Ñ³Ū¤ËÅÐÏ¿¤µ¤ì¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢É¬Íפʾì¹ç¤Ï¹¹¤ËÆü»ï³èư¤òÄɲ䷤Ƥ¯¤À¤µ¤¤¡£
                +
                +
                ¥ê¥½¡¼¥¹
                - -
                ¥ê¥½¡¼¥¹¤Ï¥³¡¼¥¹¤Î¥³¥ó¥Æ¥ó¥Ä¤Ç¤¹¡£¥¢¥Ã¥×¥í¡¼¥É¤Þ¤¿¤ÏURL¤ò»ÈÍѤ·¤¿¥ê¥ó¥¯¤Ë¤è¤ê¡¢¤É¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤Ç¤â¥ê¥½¡¼¥¹¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Õ¥©¡¼¥à¤ËľÀÜÆþÎϤ·¤Æ¡¢¥·¥ó¥×¥ë¤Ê¥Æ¥­¥¹¥È¥Ù¡¼¥¹¤Î¥Ú¡¼¥¸¤òÊݸ¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
                - -
                - -
                - +
                ¥ê¥½¡¼¥¹¤Ï¥³¡¼¥¹¤Î¥³¥ó¥Æ¥ó¥Ä¤Ç¤¹¡£¥¢¥Ã¥×¥í¡¼¥ÉËô¤ÏURL¤ò»ÈÍѤ·¤¿¥ê¥ó¥¯¤Ë¤è¤ê¡¢¤É¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤Ç¤â¥ê¥½¡¼¥¹¤Ë¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¥Õ¥©¡¼¥à¤ËľÀÜÆþÎϤ·¤Æ¡¢¥·¥ó¥×¥ë¤Ê¥Æ¥­¥¹¥È¥Ù¡¼¥¹¤Î¥Ú¡¼¥¸¤òÊݸ¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
                +
                +
                ¾®¥Æ¥¹¥È
                - -
                ¤³¤³¤Ç¤Ï¡¢Â¿»èÁªÂò¼°¡¢¡û/¡ßÌäÂê¡¢µ­½Ò¼°¤Î¼ÁÌ䤫¤éÀ®¤ë¥¯¥¤¥º·Á¼°¤Î¥Æ¥¹¥È¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¼ÁÌä¤Ï¥«¥Æ¥´¥ê¡¼Ê¬¤±¤µ¤ì¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¡¢¥³¡¼¥¹Æâ¤ª¤è¤Ó¥³¡¼¥¹´Ö¤ÇºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¾®¥Æ¥¹¥È¤Ç¤ÏÊ£¿ô²ó¤Î²óÅú¤ò¹Ô¤ï¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î²óÅú¤Ï¼«Æ°Åª¤Ëµ­Ï¿¤µ¤ì¡¢¶µ»Õ¤Ï¤½¤ì¤ËÂФ·¤Æ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÍ¿¤¨¤ë¤«ÀµÅú¤òɽ¼¨¤µ¤»¤ë¤«¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ïɾ²Áµ¡Ç½¤ò´Þ¤ß¤Þ¤¹¡£
                - -
                - -
                - +
                ¤³¤³¤Ç¤Ï¡¢Â¿»èÁªÂò¼°¡¢¡û/¡ßÊý¼°¡¢µ­½Ò¼°¤Î¼ÁÌ䤫¤éÀ®¤ë¥¯¥¤¥º·Á¼°¤Î¥Æ¥¹¥È¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤Î¼ÁÌä¤Ï¥«¥Æ¥´¥ê¡¼Ê¬¤±¤µ¤ì¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¡¢¥³¡¼¥¹ÆâµÚ¤Ó¥³¡¼¥¹´Ö¤ÇºÆÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¾®¥Æ¥¹¥È¤Ç¤ÏÊ£¿ô²ó¤Î²óÅú¤ò¹Ô¤ï¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î²óÅú¤Ï¼«Æ°Åª¤Ëµ­Ï¿¤µ¤ì¡¢¶µ»Õ¤Ï¤½¤ì¤ËÂФ·¤Æ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÍ¿¤¨¤ë¤«ÀµÅú¤òɽ¼¨¤µ¤»¤ë¤«¤òÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ïɾ²Áµ¡Ç½¤ò´Þ¤ß¤Þ¤¹¡£
                +
                +
                Ä´ºº
                - -
                Ä´ºº¥â¥¸¥å¡¼¥ë¤Ï¡¢¤¢¤Ê¤¿¤Î¥¯¥é¥¹¤òɾ²Á¤ª¤è¤ÓÍý²ò¤¹¤ë¤Î¤ËÍ­±×¤Ê¡¢¿ô¿¤¯¤ÎÄ´ºº¼êÃʤòÄ󶡤·¤Þ¤¹¡£¸½ºß¤Ï¡¢Ä´ºº¼êÃʤȤ·¤ÆCOLLES¤ÈATTLS¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Ä´ºº¤Ï¥³¡¼¥¹¤ÎºÇ½é¤ÎÊý¤Ç¿ÇÃǥġ¼¥ë¤È¤·¤Æ¡¢¥³¡¼¥¹¤Î½ª¤ï¤ê¤Ëɾ²Á¥Ä¡¼¥ë¤È¤·¤Æ»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹(»ä¤Ï¥³¡¼¥¹Æâ¤ÇË轵Ĵºº¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹)¡£
                - +
                Ä´ºº¥â¥¸¥å¡¼¥ë¤Ï¡¢¤¢¤Ê¤¿¤Î¥¯¥é¥¹¤òɾ²ÁµÚ¤ÓÍý²ò¤¹¤ë¤Î¤ËÍ­±×¤Ê¡¢¿ô¿¤¯¤ÎÄ´ºº¼êÃʤòÄ󶡤·¤Þ¤¹¡£¸½ºß¤Ï¡¢Ä´ºº¼êÃʤȤ·¤ÆCOLLES¤ÈATTLS¤òÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Ä´ºº¤Ï¥³¡¼¥¹¤ÎºÇ½é¤ÎÊý¤Ç¿ÇÃǥġ¼¥ë¤È¤·¤Æ¡¢¥³¡¼¥¹¤Î½ª¤ï¤ê¤Ëɾ²Á¥Ä¡¼¥ë¤È¤·¤Æ»ÈÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹(»ä¤Ï¥³¡¼¥¹Æâ¤ÇË轵Ĵºº¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹)¡£
                - -
                - -

                ³èư¤òÄɲä·¤¿¸å¡¢¤½¤ì¤¾¤ì¤Î³èư¤Î²£¤Ë¤¢¤ë¾®¤µ¤ÊÌð°õ¥¢¥¤¥³¥ó ( ) ¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢¥³¡¼¥¹¥ì¥¤¥¢¥¦¥ÈÆâ¤ò¾å²¼¤Ë°Üư¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡ß°õ¥¢¥¤¥³¥ó ¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢³èư¤òºï½ü¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢ÊÔ½¸¥¢¥¤¥³¥ó ¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢³èư¤òºÆÊÔ½¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                - +
                +

                ³èư¤òÄɲä·¤¿¸å¡¢¤½¤ì¤¾¤ì¤Î³èư¤Î²£¤Ë¤¢¤ë¾®¤µ¤ÊÌð°õ¥¢¥¤¥³¥ó ( ) ¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢¥³¡¼¥¹¥ì¥¤¥¢¥¦¥ÈÆâ¤ò¾å²¼¤Ë°Üư¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¡ß°õ¥¢¥¤¥³¥ó ¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢³èư¤òºï½ü¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£¤Þ¤¿¡¢ÊÔ½¸¥¢¥¤¥³¥ó ¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢³èư¤òºÆÊÔ½¸¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                 

                -
                -

                ¥³¡¼¥¹±¿±Ä

                -
                - -

                ¤³¤Î¥É¥­¥å¥á¥ó¥È¤ò¤µ¤é¤ËÁí¹çŪ¤Ê¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ë³ÈÂ礹¤ë·×²è¤¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤Þ¤Ç¡¢²¼µ­¤Î¥¢¥¤¥Ç¥£¥¢¤ò¤É¤¦¤¾:

                - +

                ¤³¤Î¥É¥­¥å¥á¥ó¥È¤ò¹¹¤ËÁí¹çŪ¤Ê¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ë³ÈÂ礹¤ë·×²è¤¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤Þ¤Ç¡¢²¼µ­¤Î¥¢¥¤¥Ç¥£¥¢¤ò¤É¤¦¤¾:

                  -
                1. ¥¯¥é¥¹³èư¤ÈÀÜ¿¨¤òÊݤĤ¿¤á¤Ë¡¢Á´¤Æ¤Î¥Õ¥©¡¼¥é¥à¤ËÅÐÏ¿¤·¤Æ¤¯¤À¤µ¤¤¡£
                2. - -
                3. Á´¤Æ¤Î³ØÀ¸¤Ë¥æ¡¼¥¶¥×¥í¥Õ¥£¡¼¥ë(¼Ì¿¿¤ò´Þ¤à)¤Ë¾ðÊó¤ò½ñ¤­¹þ¤à¤è¤¦¤Ë´«¤á¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢¤½¤ÎÆâÍÆ¤òÁ´¤ÆÆÉ¤ó¤Ç¤¯¤À¤µ¤¤¡£¤³¤Îºî¶È¤Ë¤è¤ê¡¢¸å¤Ç³ØÀ¸¤¬Ê¸¾Ï¤ò½ñ¤¯¤È¤­¤Î¥Ò¥ó¥È¤òÍ¿¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤·¡¢¤½¤ì¤¾¤ì¤Î³ØÀ¸¤ÎÍ×µá¤Ë¹çÃפ·¤¿Âбþ¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
                4. - +
                5. Á´¤Æ¤Î³ØÀ¸¤Ë¥æ¡¼¥¶¥×¥í¥Õ¥£¡¼¥ë(¼Ì¿¿¤ò´Þ¤à)¤Ë¾ðÊó¤ò½ñ¤­¹þ¤à¤è¤¦¤Ë´«¤á¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢¤½¤ÎÆâÍÆ¤òÁ´¤ÆÆÉ¤ó¤Ç¤¯¤À¤µ¤¤¡£¤³¤Îºî¶È¤Ë¤è¤ê¡¢¸å¤Ç³ØÀ¸¤¬Ê¸¾Ï¤ò½ñ¤¯¤È¤­¤Î¥Ò¥ó¥È¤òÍ¿¤¨¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¤·¡¢¤½¤ì¤¾¤ì¤Î³ØÀ¸¤ÎÍ×µá¤Ë¹çÃפ·¤¿Âбþ¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
                6. ´ÉÍý¥á¥Ë¥å¡¼¤Î²¼¤Ë¤¢¤ëÈó¸ø³«¤Î¡Ö¶µ»ÕÍÑ¥Õ¥©¡¼¥é¥à¡×¤ò³èÍѤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥Õ¥©¡¼¥é¥à¤Ï¡¢¥Á¡¼¥à»ØÆ³¤Ë¤ª¤¤¤ÆÆÃ¤ËÌòΩ¤Á¤Þ¤¹¡£
                7. - -
                8. ´°Á´¤ÊÀ¸¥í¥°¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë¡¢´ÉÍý¥á¥Ë¥å¡¼¤Î²¼¤Ë¤¢¤ë¡Ö¥í¥°¡×¥ê¥ó¥¯¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥Ú¡¼¥¸¤Ë¤Ï¡¢60ÉÃËè¤Ë¹¹¿·¤µ¤ì¤ë¡¢²áµî1»þ´Ö¤Î³èư¥í¥°¤òɽ¼¨¤¹¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¥¦¥¤¥ó¥É¥¦¤Î¥ê¥ó¥¯¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï£±ÆüÃæ¥Ç¥¹¥¯¥È¥Ã¥×¤Ëɽ¼¨¤·¤Æ¡¢¥³¡¼¥¹Æâ¤Ç²¿¤¬µ¯¤­¤Æ¤¤¤ë¤Î¤«¤òÇİ®¤¹¤ë¤Î¤ËÌò¤ËΩ¤Á¤Þ¤¹¡£
                9. - -
                10. ¡Ö³èư¥ì¥Ý¡¼¥È¡× (Á´»²²Ã¼Ô¥ê¥¹¥ÈÆâ¤Î̾Á°¤Î²£¤Þ¤¿¤Ï¥æ¡¼¥¶¥×¥í¥Õ¥£¡¼¥ë¥Ú¡¼¥¸)¤òÍøÍѤ·¤Æ¤¯¤À¤µ¤¤¡£³èư¥ì¥Ý¡¼¥È¤Ï¡¢ÆÃÄê¤Î¿Í¤¬¥³¡¼¥¹Æâ¤Ç²¿¤ò¹Ô¤Ã¤Æ¤¤¤ë¤«³Îǧ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ëÁÇÀ²¤é¤·¤¤µ¡Ç½¤Ç¤¹¡£
                11. - -
                12. ³ØÀ¸¤ËÂФ·¤ÆÂ¨ºÂ¤Ë±þÅú¤·¤Æ¤¯¤À¤µ¤¤¡£¸å²ó¤·¤Ë¤»¤º¤Ë¡¢¤¹¤°¤Ë¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£´Êñ¤Ë¡¢°µÅݤµ¤ì¤ëÄø¤Î¥Ü¥ê¥å¡¼¥à¤ò½èÍý¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¤·¡¢Â¨ºÂ¤Ë±þÅú¤¹¤ë¤³¤È¤Ï¡¢¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤Ç¥³¥ß¥å¥Ë¥Æ¥£¡¼¤ò¹½ÃÛ¡¦°Ý»ý¤·¤Æ¹Ô¤¯¤¿¤á¤Î½ÅÍפÊÉôʬ¤Ç¤¹¡£
                13. - +
                14. ´°Á´¤ÊÀ¸¥í¥°¤Ë¥¢¥¯¥»¥¹¤¹¤ë°Ù¤Ë¡¢´ÉÍý¥á¥Ë¥å¡¼¤Î²¼¤Ë¤¢¤ë¡Ö¥í¥°¡×¥ê¥ó¥¯¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥Ú¡¼¥¸¤Ë¤Ï¡¢60ÉÃËè¤Ë¹¹¿·¤µ¤ì¤ë¡¢²áµî1»þ´Ö¤Î³èư¥í¥°¤òɽ¼¨¤¹¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¥¦¥¤¥ó¥É¥¦¤Î¥ê¥ó¥¯¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï£±ÆüÃæ¥Ç¥¹¥¯¥È¥Ã¥×¤Ëɽ¼¨¤·¤Æ¡¢¥³¡¼¥¹Æâ¤Ç²¿¤¬µ¯¤­¤Æ¤¤¤ë¤Î¤«¤òÇİ®¤¹¤ë¤Î¤ËÌò¤ËΩ¤Á¤Þ¤¹¡£
                15. +
                16. ¡Ö³èư¥ì¥Ý¡¼¥È¡× (Á´»²²Ã¼Ô¥ê¥¹¥ÈÆâ¤Î̾Á°¤Î²£Ëô¤Ï¥æ¡¼¥¶¥×¥í¥Õ¥£¡¼¥ë¥Ú¡¼¥¸)¤òÍøÍѤ·¤Æ¤¯¤À¤µ¤¤¡£³èư¥ì¥Ý¡¼¥È¤Ï¡¢ÆÃÄê¤Î¿Í¤¬¥³¡¼¥¹Æâ¤Ç²¿¤ò¹Ô¤Ã¤Æ¤¤¤ë¤«³Îǧ¤¹¤ë¤³¤È¤¬½ÐÍè¤ëÁÇÀ²¤é¤·¤¤µ¡Ç½¤Ç¤¹¡£
                17. +
                18. ³ØÀ¸¤ËÂФ·¤ÆÂ¨ºÂ¤Ë±þÅú¤·¤Æ¤¯¤À¤µ¤¤¡£¸å²ó¤·¤Ë¤»¤º¤Ë¡¢¤¹¤°¤Ë¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£´Êñ¤Ë¡¢°µÅݤµ¤ì¤ëÄø¤Î¥Ü¥ê¥å¡¼¥à¤ò½èÍý½ÐÍè¤Ê¤¯¤Ê¤ê¤Þ¤¹¤·¡¢Â¨ºÂ¤Ë±þÅú¤¹¤ë¤³¤È¤Ï¡¢¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤Ç¥³¥ß¥å¥Ë¥Æ¥£¡¼¤ò¹½ÃÛ¡¦°Ý»ý¤·¤Æ¹Ô¤¯°Ù¤Î½ÅÍפÊÉôʬ¤Ç¤¹¡£
                -

                 

                -
                -

                ¤½¤Î¾¤Î¾ðÊó

                -
                -

                ¤¢¤Ê¤¿¤Î¥µ¥¤¥È¤ÇÌäÂ꤬ȯÀ¸¤·¤¿¾ì¹ç¤Ï¡¢¥µ¥¤¥È´ÉÍý¼Ô¤ËÏ¢Íí¤·¤Æ¤¯¤À¤µ¤¤¡£

                -

                Moodle¤Î²þÁ±¤Ë´Ø¤·¤Æ¥¢¥¤¥Ç¥£¥¢¤ò¤ª»ý¤Á¤Î¾ì¹ç¡¢Í­±×¤Ê¾ðÊó¤ò¤ª»ý¤Á¤Î¾ì¹ç¤Ï¡¢moodle.org¤Ë¥¢¥¯¥»¥¹¤·¤Æ¡¢¥³¡¼¥¹¡ÖUsing Moodle¡×¤Ë»²²Ã¤·¤Æ¤¯¤À¤µ¤¤¡£¤¢¤Ê¤¿¤Î¤´°Õ¸«¤ò¤ªÂÔ¤Á¤·¤Æ¤ª¤ê¤Þ¤¹¡£Moodle¤ÎȯŸ¤ËÎϤò¤ªÂߤ·¤¯¤À¤µ¤¤¡£

                - -

                ¿·¤·¤¤¥â¥¸¥å¡¼¥ë¤òºîÀ®¡¢¥É¥­¥å¥á¥ó¥È¡¦ÏÀʸ¤Î¼¹É®¤ò¹Ô¤¤¤¿¤¤¾ì¹ç¤Ï¡¢»ä¤Ë¤´Ï¢Íí¤¯¤À¤µ¤¤: Martin Dougiamas¤Ø¤´Ï¢Íí¤Þ¤¿¤Ïmoodle.org/bugs¤ÎMoodle¡Öbug tracker¡×¥µ¥¤¥È¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                - +

                ¿·¤·¤¤¥â¥¸¥å¡¼¥ë¤òºîÀ®¡¢¥É¥­¥å¥á¥ó¥È¡¦ÏÀʸ¤Î¼¹É®¤ò¹Ô¤¤¤¿¤¤¾ì¹ç¤Ï¡¢»ä¤Ë¤´Ï¢Íí¤¯¤À¤µ¤¤: Martin Dougiamas¤Ø¤´Ï¢ÍíËô¤Ïmoodle.org/bugs¤ÎMoodle¡Öbug tracker¡×¥µ¥¤¥È¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

                ºÇ¸å¤Ë¡¢¥Ø¥ë¥×¥¢¥¤¥³¥ó¤ò»È¤¦¤³¤È¤ò¤ªËº¤ì¤Ê¤¯ - Moodle¥Ø¥ë¥×¥Õ¥¡¥¤¥ë¤ÎÁ´¥ê¥¹¥È¤Ç¤¹¡£

                -

                Moodle¤ò¤ª»È¤¤Äº¤¤¤Æ¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹ - ¤¢¤Ê¤¿¤Î¼ø¶È¤Î¹¬±¿¤ò¤ªµ§¤êÃפ·¤Þ¤¹!

                - -
                - +

                 

                -
                - -

                Moodleʸ½ñ

                - -

                Version: $Id: teacher.html,v 1.4 2002/08/18 10:00:01 - +

                Moodleʸ½ñ

                +

                Version: $Id: teacher.html,v 1.4 2002/08/18 10:00:01 martin Exp $

                - - diff --git a/lang/ja/docs/upgrade.html b/lang/ja/docs/upgrade.html index f997e8fbda5..ca98779efa3 100644 --- a/lang/ja/docs/upgrade.html +++ b/lang/ja/docs/upgrade.html @@ -1,17 +1,14 @@ - - Moodle Docs: Upgrading - +

                Moodle¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É

                -

                Moodle¤Ï¡¢¤É¤Îµì¥Ð¡¼¥¸¥ç¥ó¤«¤é¤â¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ËÀµ¾ï¤Ê¥¢¥Ã¥×¥°¥ì¡¼¥É¤¬¤Ç¤­¤ë¤è¤¦À߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£

                +

                Moodle¤Ï¡¢¤É¤Îµì¥Ð¡¼¥¸¥ç¥ó¤«¤é¤â¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ËÀµ¾ï¤Ê¥¢¥Ã¥×¥°¥ì¡¼¥É¤¬½ÐÍè¤ë¤è¤¦À߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£

                Moodle¤ò¥¢¥Ã¥×¥°¥ì¡¼¥É¤¹¤ë¾ì¹ç¡¢²¼µ­¤Î¼ê½ç¤Ë±è¤Ã¤Æºî¶È¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤:

                1. ½ÅÍפʥǡ¼¥¿¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¹Ô¤¦

                @@ -20,19 +17,19 @@

                1. Moodle¥½¥Õ¥È¥¦¥§¥¢¥Ç¥£¥ì¥¯¥È¥ê

                -

                config.php¤ä¥Æ¡¼¥Þ¡¢¸À¸ìÅù¤Î¤¢¤Ê¤¿¤¬Äɲä·¤¿¥â¥¸¥å¡¼¥ë¤ò²óÉü¤Ç¤­¤ë¤è¤¦¤Ë¡¢»öÁ°¤Ë¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÊ̤ξì½ê¤Ë¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£

                +

                config.php¤ä¥Æ¡¼¥Þ¡¢¸À¸ìÅù¤Î¤¢¤Ê¤¿¤¬Äɲä·¤¿¥â¥¸¥å¡¼¥ë¤ò²óÉü½ÐÍè¤ë¤è¤¦¤Ë¡¢»öÁ°¤Ë¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÊ̤ξì½ê¤Ë¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£

                2. ¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥ê

                -

                ¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥³¥ó¥Æ¥ó¥Ä ( ¥³¡¼¥¹»ñÎÁ¤ä³ØÀ¸¤Î²ÝÂê ) ¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤ÏÈó¾ï¤Ë½ÅÍפǤ¹¡£¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤è¤ê¡¢»þ¡¹¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤¬¡¢¥ê¥Í¡¼¥à¤µ¤ì¤¿¤ê°Üư¤µ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£

                +

                ¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥³¥ó¥Æ¥ó¥Ä(¥³¡¼¥¹»ñÎÁ¤ä³ØÀ¸¤Î²ÝÂê)¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤ÏÈó¾ï¤Ë½ÅÍפǤ¹¡£¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤è¤ê¡¢»þ¡¹¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤¬¡¢¥ê¥Í¡¼¥à¤µ¤ì¤¿¤ê°Üư¤µ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£

                3. ¥Ç¡¼¥¿¥Ù¡¼¥¹

                -

                ¤Û¤È¤ó¤É¤Î¾ì¹çMoodle¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ç¤Ï¡¢¥Õ¥£¡¼¥ë¥É¤ÎÄɲäޤ¿¤ÏÊѤµ¤é¤Ë¤è¤ê¥Ç¡¼¥¿¥Ù¡¼¥¹¥Æ¡¼¥Ö¥ë¤Î¹¹¿·¤¬¹Ô¤ï¤ì¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¥·¥¹¥Æ¥à¤Ç¤Ï°Û¤Ê¤ëÊýË¡¤Ç¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¹Ô¤¤¤Þ¤¹¡£MySQL¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¼è¤ë1¤Ä¤ÎÊýË¡¤Ïñ°ì¤ÎSQL¥Õ¥¡¥¤¥ë¤Ë¡Ödump¡×¤¹¤ë¤³¤È¤Ç¤¹¡£ ¼¡¤ÎÎã¤ÏUnix¥³¥Þ¥ó¥É¤Ç"moodle"¤È¤¤¤¦Ì¾¾Î¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤òdump¤·¤Æ¤¤¤Þ¤¹:

                +

                ¤Û¤È¤ó¤É¤Î¾ì¹çMoodle¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ç¤Ï¡¢¥Õ¥£¡¼¥ë¥É¤ÎÄɲäޤ¿¤ÏÊѹ¹¤Ë¤è¤ê¥Ç¡¼¥¿¥Ù¡¼¥¹¥Æ¡¼¥Ö¥ë¤Î¹¹¿·¤¬¹Ô¤ï¤ì¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¥·¥¹¥Æ¥à¤Ç¤Ï°Û¤Ê¤ëÊýË¡¤Ç¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¹Ô¤¤¤Þ¤¹¡£MySQL¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¼è¤ë1¤Ä¤ÎÊýË¡¤Ïñ°ì¤ÎSQL¥Õ¥¡¥¤¥ë¤Ë¡Ödump¡×¤¹¤ë¤³¤È¤Ç¤¹¡£ ¼¡¤ÎÎã¤ÏUnix¥³¥Þ¥ó¥É¤Ç"moodle"¤È¤¤¤¦Ì¾¾Î¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤òdump¤·¤Æ¤¤¤Þ¤¹:

                mysqldump moodle > moodle-backup-2002-10-26.sql

                -

                ¤Þ¤¿¡¢Moodle¤Î¡Ö¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¡×¥¦¥§¥Ö¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¡Ö¥¨¥¯¥¹¥Ý¡¼¥È¡×¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢Á´¤Æ¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¾å¤ÇƱ¤¸¤è¤¦¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

                +

                ¤Þ¤¿¡¢Moodle¤Î¡Ö¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¡×¥¦¥§¥Ö¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¡Ö¥¨¥¯¥¹¥Ý¡¼¥È¡×¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢Á´¤Æ¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¾å¤ÇƱ¤¸¤è¤¦¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

                 

                @@ -43,13 +40,13 @@

                ¼«Ê¬¤¬²¿¤ò¤ä¤Ã¤Æ¤¤¤ë¤Î¤«Ê¬¤«¤é¤Ê¤¤¾ì¹ç¤Ï¡¢¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Ë¾å½ñ¤­¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤ ... »þ¡¹¸Å¤¤¥Õ¥¡¥¤¥ë¤¬¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ËÌäÂê¤òÀ¸¤¸¤µ¤»¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£°ìÈÖÎɤ¤ÊýË¡¤Ï¡¢¸½ºß¤ÎMoodle¥Ç¥£¥ì¥¯¥È¥ê¤ò¾¤Î̾Á°¤Ë¥ê¥Í¡¼¥à¤·¤Æ¡¢¿·¤·¤¤Moodle¥¢¡¼¥«¥¤¥Ö¤ò¸µ¤Î¾ì½ê¤Ë²òÅह¤ëÊýË¡¤Ç¤¹¡£

                -

                mv moodle moodle.backup
                +

                mv moodle moodle.backup
                tar xvzf moodle-1.1.tgz

                ¼¡¤Ë¡¢¤¢¤Ê¤¿¤Îconfig.php¤ä¥ª¥ê¥¸¥Ê¥ë¥Æ¡¼¥ÞÅù¤Î¥×¥é¥°¥¤¥ó¤ò¥³¥Ô¡¼¤·¤Þ¤¹:

                themes:

                -

                cp moodle.backup/config.php moodle
                +

                cp moodle.backup/config.php moodle
                cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme

                @@ -60,7 +57,7 @@

                cvs update -dP

                ¿·¤·¤¤¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢"d"¥Ñ¥é¥á¡¼¥¿¤ò¡¢¶õ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò½ü¤¯¾ì¹ç¤Ï¡¢"P"¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£

                -

                ¤â¤·¡¢¤¢¤Ê¤¿¤¬Moodle¤Î¥Õ¥¡¥¤¥ë¤òÊÔ½¸¤·¤Æ¤¤¤ë¤Î¤Ç¤·¤¿¤é¡¢µ¯¤³¤ê¤¦¤ë¥³¥ó¥Õ¥ê¥¯¥È ( ¾×ÆÍ ) ¤Ë´Ø¤¹¤ë¥á¥Ã¥»¡¼¥¸¤òÎɤ¯¸«¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£¤¢¤Ê¤¿¤¬¥«¥¹¥¿¥Þ¥¤¥º¤·¤¿¥Æ¡¼¥Þ¤ä¡¢É¸½àŪ¤Ç¤Ï¤Ê¤¤¥×¥é¥°¥¤¥ó¤ÏÊѹ¹¤µ¤ì¤Þ¤»¤ó¡£

                +

                ¤â¤·¡¢¤¢¤Ê¤¿¤¬Moodle¤Î¥Õ¥¡¥¤¥ë¤òÊÔ½¸¤·¤Æ¤¤¤ë¤Î¤Ç¤·¤¿¤é¡¢µ¯¤³¤ê¤¦¤ë¥³¥ó¥Õ¥ê¥¯¥È(¾×ÆÍ)¤Ë´Ø¤¹¤ë¥á¥Ã¥»¡¼¥¸¤òÎɤ¯¸«¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£¤¢¤Ê¤¿¤¬¥«¥¹¥¿¥Þ¥¤¥º¤·¤¿¥Æ¡¼¥Þ¤ä¡¢É¸½àŪ¤Ç¤Ï¤Ê¤¤¥×¥é¥°¥¤¥ó¤ÏÊѹ¹¤µ¤ì¤Þ¤»¤ó¡£

                 

                @@ -72,16 +69,16 @@

                http://example.com/moodle/admin

                admin¤Ç¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ï´Ø·¸¤¢¤ê¤Þ¤»¤ó¡£

                -

                Moodle¤Ï¿·¥Ð¡¼¥¸¥ç¥ó¤ò¸¡½Ð¤·¤Æ¡¢É¬Íפʥǡ¼¥¿¥Ù¡¼¥¹¤Þ¤¿¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤ò¹Ô¤¤¤Þ¤¹¡£¤â¤·¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤¬Àµ¾ï¤Ë¹Ô¤ï¤ì¤Ê¤¤¾ì¹ç ( Èó¾ï¤Ëµ©¤Ç¤¹ ) ¤Ï¡¢²¿¤ò¤¹¤ëɬÍפ¬¤¢¤ë¤Î¤«ÃΤ餻¤Æ¤¯¤ì¤ë¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

                +

                Moodle¤Ï¿·¥Ð¡¼¥¸¥ç¥ó¤ò¸¡½Ð¤·¤Æ¡¢É¬Íפʥǡ¼¥¿¥Ù¡¼¥¹¤Þ¤¿¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤ò¹Ô¤¤¤Þ¤¹¡£¤â¤·¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤¬Àµ¾ï¤Ë¹Ô¤ï¤ì¤Ê¤¤¾ì¹ç(Èó¾ï¤Ëµ©)¤Ï¡¢²¿¤ò¤¹¤ëɬÍפ¬¤¢¤ë¤Î¤«ÃΤ餻¤Æ¤¯¤ì¤ë¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

                 

                -

                Á´¤Æ¤¬Àµ¾ï ( ¥¨¥é¡¼Ìµ¤· ) ¤Ë½ªÎ»¤·¤¿¾ì¹ç¡¢¿·¤·¤¤Moodle¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¿·¤·¤¤µ¡Ç½¤ò¤ª³Ú¤·¤ß¤¯¤À¤µ¤¤!

                +

                Á´¤Æ¤¬Àµ¾ï(¥¨¥é¡¼Ìµ¤·¤Ë)¤Ë½ªÎ»¤·¤¿¾ì¹ç¡¢¿·¤·¤¤Moodle¤ò»È¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¿·¤·¤¤µ¡Ç½¤ò¤ª³Ú¤·¤ß¤¯¤À¤µ¤¤!

                ¤â¤·¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤ËÌäÂ꤬¤¢¤ë¾ì¹ç¤Ï¡¢moodle.com¤ÎInstallation Support Forum¤ËÅê¹Æ¤·¤Æ¤¯¤À¤µ¤¤¡£

                 

                 

                -

                Moodleʸ½ñ

                -

                Version: $Id$

                +

                Moodleʸ½ñ

                +

                Version: $Id$

                - + \ No newline at end of file diff --git a/lang/ja/editor.php b/lang/ja/editor.php index e9ae900c222..1ac32d5ae62 100644 --- a/lang/ja/editor.php +++ b/lang/ja/editor.php @@ -1,11 +1,11 @@ '; $string['enrolname'] = '¥Õ¥é¥Ã¥È¥Õ¥¡¥¤¥ë'; -$string['filelockedmail'] = '¥Õ¥¡¥¤¥ë¥Ù¡¼¥¹¤Î¥æ¡¼¥¶ÅÐÏ¿¤Ç»ÈÍѤ·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë($a)¤Ïcron¥×¥í¥»¥¹¤Ë¤è¤ëºï½ü¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¡£Ä̾¥Õ¥¡¥¤¥ë¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ÎÌäÂê¤Ë¤è¤êºï½ü¤µ¤ì¤Þ¤»¤ó¡£Moodle¤¬ºï½ü¤Ç¤­¤ë¤è¤¦¤Ë¥Õ¥¡¥¤¥ë¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤òÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£Êѹ¹¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¤³¤Î½èÍý¤¬·«¤êÊÖ¤·¹Ô¤ï¤ì¤Þ¤¹¡£'; +$string['filelockedmail'] = '¥Õ¥¡¥¤¥ë¥Ù¡¼¥¹¤Î¥æ¡¼¥¶ÅÐÏ¿¤Ç»ÈÍѤ·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë($a)¤Ïcron¥×¥í¥»¥¹¤Ë¤è¤ëºï½ü¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¡£Ä̾¥Õ¥¡¥¤¥ë¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ÎÌäÂê¤Ë¤è¤êºï½ü¤µ¤ì¤Þ¤»¤ó¡£Moodle¤¬ºï½ü½ÐÍè¤ë¤è¤¦¤Ë¥Õ¥¡¥¤¥ë¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤òÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£Êѹ¹¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¤³¤Î½èÍý¤¬·«¤êÊÖ¤·¹Ô¤ï¤ì¤Þ¤¹¡£'; $string['filelockedmailsubject'] = '½ÅÂç¤Ê¥¨¥é¡¼:¥¨¥ó¥í¡¼¥ë¥á¥ó¥È¥Õ¥¡¥¤¥ë'; $string['location'] = '¥Õ¥¡¥¤¥ë¤Î¾ì½ê'; $string['mailadmin'] = '´ÉÍý¼Ô¤Ë¥á¡¼¥ëÄÌÃÎ'; $string['mailusers'] = '¥æ¡¼¥¶¤Ë¥á¡¼¥ëÄÌÃÎ'; -$string['thischarset'] = 'EUC-JP'; -$string['thisdirection'] = 'ltr'; -$string['thislanguage'] = 'Japanese'; ?> diff --git a/lang/ja/enrol_internal.php b/lang/ja/enrol_internal.php index 82cac918efb..8771cd463d0 100644 --- a/lang/ja/enrol_internal.php +++ b/lang/ja/enrol_internal.php @@ -1,15 +1,12 @@ - -
              • ¶µ»Õ¤Þ¤¿¤Ï´ÉÍý¼Ô¤¬¥³¡¼¥¹¤Î¥³¡¼¥¹´ÉÍý¥á¥Ë¥å¡¼¤Ë¤¢¤ë¥ê¥ó¥¯¤ò»ÈÍѤ·¤Æ¼êư¤ÇÅÐÏ¿¤¹¤ë¡£
              • -
              • ¥³¡¼¥¹¤Ë¤Ï¡ÖÅÐÏ¿¥­¡¼¡×¤È¤¤¤¦¥Ñ¥¹¥ï¡¼¥É¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥­¡¼¤òÃΤäƤ¤¤ë¿Í¤Ïï¤Ç¤â¼«¤é¥³¡¼¥¹¤Ë»²²Ã¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
              • +
              • ¶µ»ÕËô¤Ï´ÉÍý¼Ô¤¬¥³¡¼¥¹¤Î¥³¡¼¥¹´ÉÍý¥á¥Ë¥å¡¼¤Ë¤¢¤ë¥ê¥ó¥¯¤ò»ÈÍѤ·¤Æ¼êư¤ÇÅÐÏ¿¤¹¤ë¡£
              • +
              • ¥³¡¼¥¹¤Ë¤Ï¡ÖÅÐÏ¿¥­¡¼¡×¤È¤¤¤¦¥Ñ¥¹¥ï¡¼¥É¤òÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤Î¥­¡¼¤òÃΤäƤ¤¤ë¿Í¤Ïï¤Ç¤â¼«¤é¥³¡¼¥¹¤Ë»²²Ã¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
              '; $string['enrolname'] = 'ÆâÉôÅÐÏ¿'; -$string['thischarset'] = 'EUC-JP'; -$string['thisdirection'] = 'ltr'; -$string['thislanguage'] = 'Japanese'; ?> diff --git a/lang/ja/enrol_paypal.php b/lang/ja/enrol_paypal.php index 099a4840570..5f57e986764 100644 --- a/lang/ja/enrol_paypal.php +++ b/lang/ja/enrol_paypal.php @@ -1,13 +1,10 @@ - diff --git a/lang/ja/error.php b/lang/ja/error.php index 28ee7dba83c..0b2d915283f 100644 --- a/lang/ja/error.php +++ b/lang/ja/error.php @@ -1,26 +1,21 @@ modulename ¡× ($a->moduleversion) ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤¿¤á¤Ë¤Ï¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ÎMoodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£(¸½ºß¡¢¤¢¤Ê¤¿¤Ï $a->currentmoodle ¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£ $a->requiremoodle ¤¬É¬ÍפǤ¹¡£)'; -$string['notavailable'] = '¸½ºßÍøÍѤǤ­¤Þ¤»¤ó'; -$string['onlyeditown'] = '¾¤Î¿Í¤Î¾ðÊó¤ÏÊÔ½¸¤Ç¤­¤Þ¤»¤ó¡£'; -$string['processingstops'] = '¥×¥í¥»¥¹¤¬Ää»ß¤·¤Þ¤·¤¿¡£»Ä¤ê¤Î¥ì¥³¡¼¥É¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£'; -$string['restricteduser'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡£¤¢¤Ê¤¿¤Î¥¢¥«¥¦¥ó¥È¡Ö $a ¡×¤Ç¤Ï¡¢¤³¤Î½èÍý¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£'; -$string['sessionipnomatch'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡£¤¢¤Ê¤¿¤ÎIP¥¢¥É¥ì¥¹¤Ï¡¢ºÇ½é¤Î¥í¥°¥¤¥ó¤«¤éÊѹ¹¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£¤³¤Î¥»¥­¥å¥ê¥Æ¥£¡¼µ¡Ç½¤Ï¡¢¤¢¤Ê¤¿¤¬¥µ¥¤¥È¤Ë¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë´Ö¤Ë¡¢¥¯¥é¥Ã¥«¡¼¤«¤é¸Ä¿Í¾ðÊó¤òÅð¤à¤³¤È¤òËɤ¤¤Ç¤¤¤Þ¤¹¡£Ä̾ï¤Î¥æ¡¼¥¶¤Ï¡¢¤³¤Î¥á¥Ã¥»¡¼¥¸¤ò¸«¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó - ¾ÜºÙ¤Ï¥·¥¹¥Æ¥à´ÉÍý¼Ô¤Ë¤ªÌä¹ç¤»¤¯¤À¤µ¤¤¡£'; -$string['unknowncourse'] = 'ÉÔÌÀ¤Ê¥³¡¼¥¹Ì¾ ¡Ö $a ¡×'; -$string['usernotaddederror'] = '¥æ¡¼¥¶ ¡Ö $a ¡× ¤ÏÄɲ䵤ì¤Þ¤»¤ó¤Ç¤·¤¿ - ¸¶°øÉÔÌÀ¤Î¥¨¥é¡¼'; -$string['usernotaddedregistered'] = '¥æ¡¼¥¶ ¡Ö $a ¡× ¤ÏÄɲ䵤ì¤Þ¤»¤ó¤Ç¤·¤¿ - ÅÐÏ¿ºÑ¤ß'; -$string['usernotavailable'] = '¤³¤Î¥æ¡¼¥¶¤Î¾ÜºÙ¤Ï±ÜÍ÷¤Ç¤­¤Þ¤»¤ó¡£'; +$string['groupunknown'] = '¥°¥ë¡¼¥× $a ¤Ï»ØÄꤵ¤ì¤¿¥³¡¼¥¹¤Ë´ØÏ¢¤·¤Æ¤¤¤Þ¤»¤ó'; +$string['invalidfieldname'] = '\"$a\" ¤ÏÀµ¤·¤¤¥Õ¥£¡¼¥ë¥É̾¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó'; +$string['missingfield'] = '\"$a\" ¤ËÆþÎϤ·¤Æ¤¯¤À¤µ¤¤'; +$string['modulerequirementsnotmet'] = '¥â¥¸¥å¡¼¥ë \"$a->modulename\" ($a->moduleversion) ¤ò¥¤¥ó¥¹¥È¡¼¥ë½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë°Ù¤Ë¤Ï¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ÎMoodle¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£(¸½ºß¡¢¤¢¤Ê¤¿¤Ï $a->currentmoodle ¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£ $a->requiremoodle ¤¬É¬ÍפǤ¹¡£)'; +$string['notavailable'] = '¸½ºßÍøÍѽÐÍè¤Þ¤»¤ó'; +$string['restricteduser'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡£¸½ºß¡¢¤³¤Î½èÍý¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¡£'; +$string['unknowncourse'] = 'ÉÔÌÀ¤Ê¥³¡¼¥¹Ì¾ \"$a\"'; +$string['usernotaddederror'] = '¥æ¡¼¥¶ \"$a\" ¤ÏÄɲ䵤ì¤Þ¤»¤ó¤Ç¤·¤¿ - ¸¶°øÉÔÌÀ'; +$string['usernotaddedregistered'] = '¥æ¡¼¥¶ \"$a\" ¤ÏÄɲ䵤ì¤Þ¤»¤ó¤Ç¤·¤¿ - ÅÐÏ¿ºÑ¤ß'; +$string['usernotavailable'] = '¤³¤Î¥æ¡¼¥¶¤Î¾ÜºÙ¤Ï±ÜÍ÷½ÐÍè¤Þ¤»¤ó¡£'; ?> diff --git a/lang/ja/exercise.php b/lang/ja/exercise.php index da935f720bf..d3f9f026471 100644 --- a/lang/ja/exercise.php +++ b/lang/ja/exercise.php @@ -1,13 +1,14 @@ -Í×ÁÇ¿ô¡¢É¾²Á´ð½à¡¢Í×ÁÇÈæ½Å¤òÊѹ¹¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£'; $string['weightederrorcount'] = 'Èæ½Å¥¨¥é¡¼¥«¥¦¥ó¥È: $a'; $string['weightforgradingofassessments'] = 'ɾ²Á¤Î¥°¥ì¡¼¥Ç¥£¥ó¥°¤ËÂФ¹¤ëÈæ½Å'; diff --git a/lang/ja/forum.php b/lang/ja/forum.php index a471504bf30..3a0d276178b 100644 --- a/lang/ja/forum.php +++ b/lang/ja/forum.php @@ -1,61 +1,54 @@ date - $a->name ¤ÎÅê¹Æ'; -$string['configcleanreadtime'] = '´ûÆÉ¥Æ¡¼¥Ö¥ë¤Î¸Å¤¤Åê¹Æ¤ò¥¯¥ê¥¢¤¹¤ë»þ´Ö'; $string['configdisplaymode'] = 'ɽ¼¨¥â¡¼¥É¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥Èɽ¼¨¥â¡¼¥É¤Ç¤¹¡£'; $string['configenablerssfeeds'] = '¤³¤³¤Ç¤ÏÁ´¥Õ¥©¡¼¥é¥à¤ÎRSS»ÈÍÑÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£¤³¤³¤ÎÀßÄê¤ò¤·¤Æ¤â¡¢³Æ¥Õ¥©¡¼¥é¥à¤ÇRSS¥Õ¥£¡¼¥É¤ÎÀßÄê¤ò¼êư¤Ç¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£'; -$string['configlongpost'] = '¤³¤Îʸ»úĹ°Ê¾å¤ÎŤµ ( HTML¤Ï´Þ¤Þ¤Ê¤¤ ) ¤ÏŤ¤¤È¹Í¤¨¤é¤ì¤Þ¤¹¡£'; +$string['configlongpost'] = '¤³¤Îʸ»úĹ°Ê¾å¤ÎŤµ(HTML¤Ï´Þ¤Þ¤Ê¤¤)¤ÏŤ¤¤È¹Í¤¨¤é¤ì¤Þ¤¹¡£'; $string['configmanydiscussions'] = '¥Õ¥©¡¼¥é¥à¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤ì¤ë¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ÎºÇÂç¿ô'; -$string['configmaxbytes'] = 'Á´¤Æ¤Î¥Õ¥©¡¼¥é¥àźÉÕ¥Õ¥¡¥¤¥ë¤Ë´Ø¤¹¤ë¥Ç¥Õ¥©¥ë¥È¤ÎºÇÂ祵¥¤¥º(¥³¡¼¥¹À©¸Â¤ª¤è¤Ó¾¤Î¥í¡¼¥«¥ëÀßÄê¤Ë½¾¤¤¤Þ¤¹)'; -$string['configoldpostdays'] = '¸Å¤¤Åê¹Æ¤ò´ûÆÉ¤È¤¹¤ëÆü¿ô'; -$string['configreplytouser'] = '¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ¤¬¥á¡¼¥ëÁ÷¿®¤µ¤ì¤ë¾ì¹ç¡¢¼õ¿®¼Ô¤¬¥Õ¥©¡¼¥é¥à¤òÄ̤µ¤º¤Ë¸Ä¿ÍŪ¤ËÊÖ¿®¤Ç¤­¤ë¤è¤¦¤Ë¡¢¥á¡¼¥ë¤Ë¥æ¡¼¥¶¥á¡¼¥ë¥¢¥É¥ì¥¹¤òɽ¼¨¤·¤¿Êý¤¬Îɤ¤¤Ç¤¹¤«?¡¡¡ÖYes¡×¤ËÀßÄꤷ¤¿¾ì¹ç¤Ç¤â¡¢¥æ¡¼¥¶¤Ï¥×¥í¥Õ¥£¡¼¥ëÆâ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò±£¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['configshortpost'] = '¤³¤Îʸ»úĹ°Ê²¼¤ÎŤµ ( HTML¤Ï´Þ¤Þ¤Ê¤¤ ) ¤Ïû¤¤¤È¹Í¤¨¤é¤ì¤Þ¤¹¡£'; -$string['configtrackreadposts'] = '³Æ¥æ¡¼¥¶¤Î´ûÆÉ/̤ÆÉ¤òÄÉÀפ¹¤ë¾ì¹ç¤Ï¡ÖYes¡×¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['configusermarksread'] = '¡ÖYes¡×¤ËÀßÄꤷ¤¿¾ì¹ç¡¢¥æ¡¼¥¶¤Ï¼êư¤ÇÅê¹Æ¤ò´ûÆÉ¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¡ÖNo¡×¤ËÀßÄꤷ¤¿¾ì¹ç¡¢Åê¹Æ¤¬±ÜÍ÷¤µ¤ì¤¿»þÅÀ¤Ç´ûÆÉ¤Ë¤µ¤ì¤Þ¤¹¡£'; -$string['couldnotadd'] = '¥¨¥é¡¼¤Î¤¿¤áÅê¹Æ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£'; -$string['couldnotdeleteratings'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢É¾²ÁºÑ¤ß¤Î¤¿¤áºï½ü¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£'; -$string['couldnotdeletereplies'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢ÊÖ¿®ºÑ¤ß¤Î¤¿¤áºï½ü¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£'; -$string['couldnotupdate'] = '̤³Îǧ¥¨¥é¡¼¤Î¤¿¤áÅê¹Æ¤ò¹¹¿·¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£'; +$string['configmaxbytes'] = 'Á´¤Æ¤Î¥Õ¥©¡¼¥é¥àźÉÕ¥Õ¥¡¥¤¥ë¤Ë´Ø¤¹¤ë¥Ç¥Õ¥©¥ë¥È¤ÎºÇÂ祵¥¤¥º(¥³¡¼¥¹À©¸ÂµÚ¤Ó¾¤Î¥í¡¼¥«¥ëÀßÄê¤Ë½¾¤¤¤Þ¤¹)'; +$string['configreplytouser'] = '¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ¤¬¥á¡¼¥ëÁ÷¿®¤µ¤ì¤ë¾ì¹ç¡¢¼õ¿®¼Ô¤¬¥Õ¥©¡¼¥é¥à¤òÄ̤µ¤º¤Ë¸Ä¿ÍŪ¤ËÊÖ¿®¤Ç¤­¤ë¤è¤¦¤Ë¡¢¥á¡¼¥ë¤Ë¥æ¡¼¥¶¥á¡¼¥ë¥¢¥É¥ì¥¹¤òɽ¼¨¤·¤¿Êý¤¬Îɤ¤¤Ç¤¹¤«?¡¡\'Yes\'¤ËÀßÄꤷ¤¿¾ì¹ç¤Ç¤â¡¢¥æ¡¼¥¶¤Ï¥×¥í¥Õ¥£¡¼¥ëÆâ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò±£¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£'; +$string['configshortpost'] = '¤³¤Îʸ»úĹ°Ê²¼¤ÎŤµ(HTML¤Ï´Þ¤Þ¤Ê¤¤)¤Ïû¤¤¤È¹Í¤¨¤é¤ì¤Þ¤¹¡£'; +$string['couldnotadd'] = '¥¨¥é¡¼¤Î¤¿¤áÅê¹Æ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿'; +$string['couldnotdeleteratings'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢É¾²ÁºÑ¤ß¤Î¤¿¤áºï½ü½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿'; +$string['couldnotdeletereplies'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢ÊÖ¿®ºÑ¤ß¤Î¤¿¤áºï½ü½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿'; +$string['couldnotupdate'] = '̤³Îǧ¥¨¥é¡¼¤Î¤¿¤áÅê¹Æ¤ò¹¹¿·¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿'; $string['delete'] = 'ºï½ü'; -$string['deleteddiscussion'] = '¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥È¥Ô¥Ã¥¯¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿¡£'; -$string['deletedpost'] = 'Åê¹Æ¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿¡£'; +$string['deleteddiscussion'] = '¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥È¥Ô¥Ã¥¯¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿'; +$string['deletedpost'] = 'Åê¹Æ¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿'; $string['deletesure'] = '¤³¤ÎÅê¹Æ¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?'; $string['digestmailheader'] = '¤³¤ì¤Ï¡¢ $a->sitename ¥Õ¥©¡¼¥é¥à¤ËÅê¹Æ¤µ¤ì¤¿ÆâÍÆ¤Î¥Ç¥¤¥ê¡¼¥À¥¤¥¸¥§¥¹¥È¤Ç¤¹¡£¥á¡¼¥ë¥¢¥É¥ì¥¹¤òÊѹ¹¤¹¤ë¾ì¹ç¤Ï¡¢ $a->userprefs ¤Ë¤ÆÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ '; $string['digestmailprefs'] = '¥æ¡¼¥¶¥×¥í¥Õ¥£¡¼¥ë'; $string['digestmailsubject'] = '$a: ¥Õ¥©¡¼¥é¥à¥À¥¤¥¸¥§¥¹¥È'; $string['digestsentusers'] = '¥á¡¼¥ë¥À¥¤¥¸¥§¥¹¥È¤¬ $a ̾¤Î¥æ¡¼¥¶¤ËÁ÷¿®¤µ¤ì¤Þ¤·¤¿¡£'; $string['discussion'] = '¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó'; -$string['discussionmoved'] = '¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤Ï ¡Ö $a ¡×¤Ë°Üư¤µ¤ì¤Þ¤·¤¿¡£'; +$string['discussionmoved'] = '¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤Ï \'$a\' ¤Ë°Üư¤µ¤ì¤Þ¤·¤¿¡£'; $string['discussionname'] = '¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó̾'; $string['discussions'] = '¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó'; $string['discussionsstartedby'] = '$a ¤µ¤ó¤è¤ê³«»Ï¤µ¤ì¤¿¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó'; $string['discussionsstartedbyrecent'] = '$a ¤µ¤ó¤è¤êºÇ¶á³«»Ï¤µ¤ì¤¿¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó'; -$string['discussthistopic'] = '¤³¤Î¥È¥Ô¥Ã¥¯¤òÆÉ¤à'; -$string['eachuserforum'] = '¥È¥Ô¥Ã¥¯°ì¿Í1·ï¤Î¥Õ¥©¡¼¥é¥à'; +$string['discussthistopic'] = 'Åê¹Æ'; +$string['eachuserforum'] = '¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò1·ïÅê¹Æ'; $string['edit'] = 'ÊÔ½¸'; -$string['editedby'] = 'ÊÔ½¸ $a->name - $a->date'; $string['editing'] = 'ÊÔ½¸'; $string['emptymessage'] = 'Åê¹Æ¤Ë°Û¾ï¤¬¤¢¤ê¤Þ¤¹¡£¶õÇò¤Î¤Þ¤Þ¤«ÅºÉÕ¥Õ¥¡¥¤¥ë¤Î¥µ¥¤¥º¤¬À©¸Â¤ò±Û¤¨¤Æ¤¤¤Þ¤¹¡£Êѹ¹¤ÏÊݸ¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£'; -$string['everyonecanchoose'] = '¥æ¡¼¥¶¤Ï¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤Ç¤­¤Þ¤¹'; -$string['everyoneissubscribed'] = '¥æ¡¼¥¶¤Ï¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤µ¤ì¤Þ¤¹'; -$string['existingsubscribers'] = '¥á¡¼¥ëÄÌÃÎÅÐÏ¿¥æ¡¼¥¶'; -$string['forcesubscribe'] = '¥æ¡¼¥¶¤ò¶¯À©Åª¤Ë¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤¹¤ë'; -$string['forcesubscribeq'] = '¥æ¡¼¥¶¤ò¶¯À©Åª¤Ë¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤·¤Þ¤¹¤«?'; +$string['everyonecanchoose'] = '¥æ¡¼¥¶¤ÏÅÐÏ¿¤òÁªÂò½ÐÍè¤Þ¤¹'; +$string['everyoneissubscribed'] = '¥æ¡¼¥¶¤Ï¶¯À©ÅÐÏ¿¤µ¤ì¤Þ¤¹'; +$string['existingsubscribers'] = 'ÅÐÏ¿¥æ¡¼¥¶'; +$string['forcesubscribe'] = '¥æ¡¼¥¶¤ò¶¯À©ÅÐÏ¿¤¹¤ë'; +$string['forcesubscribeq'] = '¥æ¡¼¥¶¤ò¶¯À©ÅÐÏ¿¤·¤Þ¤¹¤«?'; $string['forum'] = '¥Õ¥©¡¼¥é¥à'; $string['forumintro'] = '¥Õ¥©¡¼¥é¥à¾Ò²ð'; $string['forumname'] = '¥Õ¥©¡¼¥é¥à̾'; -$string['forumposts'] = '¥Õ¥©¡¼¥é¥àÅê¹Æ'; $string['forums'] = '¥Õ¥©¡¼¥é¥à'; $string['forumtype'] = '¥Õ¥©¡¼¥é¥à¥¿¥¤¥×'; $string['generalforum'] = 'ɸ½à¥Õ¥©¡¼¥é¥à'; @@ -66,12 +59,9 @@ $string['introsocial'] = ' $string['introteacher'] = '¶µ»ÕÀìÍÑ¥Õ¥©¡¼¥é¥à'; $string['lastpost'] = 'ºÇ¿·¤ÎÅê¹Æ'; $string['learningforums'] = '³Ø½¬¥Õ¥©¡¼¥é¥à'; -$string['markread'] = '´ûÆÉ¤Ë¤¹¤ë'; -$string['markunread'] = '̤ÆÉ¤Ë¤¹¤ë'; $string['maxattachmentsize'] = 'ºÇÂçźÉÕ¥Õ¥¡¥¤¥ë¥µ¥¤¥º'; -$string['maxtimehaspassed'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢¤³¤ÎÅê¹Æ ( $a ) ¤ËÂФ¹¤ëºÇÂçÊÔ½¸²ó¿ô¤òͤ¨¤Þ¤·¤¿!'; +$string['maxtimehaspassed'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢¤³¤ÎÅê¹Æ($a)¤ËÂФ¹¤ëºÇÂçÊÔ½¸²ó¿ô¤òͤ¨¤Þ¤·¤¿!'; $string['message'] = '¥á¥Ã¥»¡¼¥¸'; -$string['missingsearchterms'] = '¼¡¤Î¸¡º÷¸ì¤Ï¥á¥Ã¥»¡¼¥¸¤ÎHTML¥Þ¡¼¥¯¥¢¥Ã¥×¤Î¤ß¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£'; $string['modeflatnewestfirst'] = 'ÊÖ¿®¤ò¿·¤·¤¤¤â¤Î¤«¤é¥Õ¥é¥Ã¥Èɽ¼¨'; $string['modeflatoldestfirst'] = 'ÊÖ¿®¤ò¸Å¤¤¤â¤Î¤«¤é¥Õ¥é¥Ã¥Èɽ¼¨'; $string['modenested'] = 'ÊÖ¿®¤ò¥Í¥¹¥Èɽ¼¨'; @@ -83,103 +73,83 @@ $string['movethisdiscussionto'] = ' $string['namenews'] = '¥Ë¥å¡¼¥¹¥Õ¥©¡¼¥é¥à'; $string['namesocial'] = '°ìÈÌ¥Õ¥©¡¼¥é¥à'; $string['nameteacher'] = '¶µ»ÕÍÑ¥Õ¥©¡¼¥é¥à'; -$string['newforumposts'] = '¿·¤·¤¤Åê¹Æ'; -$string['nodiscussions'] = '¥È¥Ô¥Ã¥¯¤Ï¤¢¤ê¤Þ¤»¤ó¡£'; -$string['noguestpost'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢¥²¥¹¥È¤ÏÅê¹Æ¤Ç¤­¤Þ¤»¤ó¡£'; -$string['noguestsubscribe'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢¥²¥¹¥È¤Ï¥Õ¥©¡¼¥é¥à¤ÎÅê¹ÆÆâÍÆ¤ò¥á¡¼¥ë¤Ç¼õ¿®¤Ç¤­¤Þ¤»¤ó¡£'; -$string['nomorepostscontaining'] = '¤³¤ì°Ê¾å¡Ö $a ¡× ¤ò´Þ¤ó¤ÀÅê¹Æ¤Ï¤¢¤ê¤Þ¤»¤ó¡£'; -$string['nonews'] = '¿·¤·¤¤¥Ë¥å¡¼¥¹¤Ï¤¢¤ê¤Þ¤»¤ó¡£'; -$string['noposts'] = 'Åê¹Æ¤¬¤¢¤ê¤Þ¤»¤ó¡£'; -$string['nopostscontaining'] = '¡Ö $a ¡× ¤¬´Þ¤Þ¤ì¤ëÅê¹Æ¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£'; -$string['nosubscribers'] = '¤³¤Î¥Õ¥©¡¼¥é¥à¤Ë¤ÏÅÐÏ¿¼Ô¤Ï¤¤¤Þ¤»¤ó¡£'; +$string['newforumposts'] = '¿·µ¬Åê¹Æ'; +$string['nodiscussions'] = '¥È¥Ô¥Ã¥¯¤Ï¤¢¤ê¤Þ¤»¤ó'; +$string['noguestpost'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢¥²¥¹¥È¤ÏÅê¹Æ¤Ç¤­¤Þ¤»¤ó'; +$string['nomorepostscontaining'] = '¤³¤ì°Ê¾å \'$a\' ¤ò´Þ¤ó¤ÀÅê¹Æ¤Ï¤¢¤ê¤Þ¤»¤ó'; +$string['nonews'] = '¿·¤·¤¤¥Ë¥å¡¼¥¹¤Ï¤¢¤ê¤Þ¤»¤ó'; +$string['noposts'] = 'Åê¹Æ¤¬¤¢¤ê¤Þ¤»¤ó'; +$string['nopostscontaining'] = ' $a ¤¬´Þ¤Þ¤ì¤ëÅê¹Æ¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿'; +$string['nosubscribers'] = '¤³¤Î¥Õ¥©¡¼¥é¥à¤Ë¤ÏÅÐÏ¿¼Ô¤Ï¤¤¤Þ¤»¤ó'; $string['notingroup'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡£¥°¥ë¡¼¥×°Ê³°¤ÎÊý¤Ï¤³¤Î¥Õ¥©¡¼¥é¥à¤ò±ÜÍ÷¤Ç¤­¤Þ¤»¤ó¡£'; $string['nownotsubscribed'] = '$a->name °¸¤Ë¡Ö $a->forum ¡×¤ÎÅê¹Æµ­»ö¤Ï¥á¡¼¥ëÁ÷¿®¤µ¤ì¤Þ¤»¤ó¡£'; $string['nowsubscribed'] = '$a->name °¸¤Ë¡Ö $a->forum ¡×¤ÎÅê¹Æµ­»ö¤¬¥á¡¼¥ëÁ÷¿®¤µ¤ì¤Þ¤¹¡£'; $string['numposts'] = '$a Åê¹Æ'; $string['olderdiscussions'] = '²áµî¤Î¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó'; -$string['oldertopics'] = '²áµî¤Î¥È¥Ô¥Ã¥¯'; -$string['openmode0'] = '¿·¤·¤¤¥È¥Ô¥Ã¥¯ÉԲġ¢ÊÖ¿®ÉÔ²Ä'; -$string['openmode1'] = '¿·¤·¤¤¥È¥Ô¥Ã¥¯ÉԲġ¢ÊÖ¿®²Ä'; -$string['openmode2'] = '¿·¤·¤¤¥È¥Ô¥Ã¥¯²Ä¡¢ÊÖ¿®²Ä'; +$string['openmode0'] = '¿·¤·¤¤Åê¹ÆÉԲġ¢ÊÖ¿®²Ä'; +$string['openmode1'] = '¿·¤·¤¤Åê¹ÆÉԲġ¢ÊÖ¿®²Ä'; +$string['openmode2'] = '¿·¤·¤¤Åê¹Æ²Ä¡¢ÊÖ¿®²Ä'; $string['parent'] = '¿Æµ­»ö¤òɽ¼¨¤¹¤ë'; $string['parentofthispost'] = '¤³¤ÎÅê¹Æ¤Î¿Æµ­»ö'; -$string['postadded'] = 'Åê¹Æ¤¬Äɲ䵤ì¤Þ¤·¤¿¡£

              ¹¹¿·¤·¤¿¤¤¾ì¹ç¤Ï $a ÊÔ½¸¤Ç¤­¤Þ¤¹¡£'; -$string['postincontext'] = '´ØÏ¢¤·¤¿Åê¹Æ¤òɽ¼¨¤¹¤ë'; -$string['postmailinfo'] = '¤³¤ì¤Ï $a ¥¦¥§¥Ö¥µ¥¤¥È¤ËÅê¹Æ¤µ¤ì¤¿µ­»ö¤Î¥³¥Ô¡¼¤Ç¤¹¡£ÊÖ¿®¤ò¥¦¥§¥Ö¥µ¥¤¥È·Ðͳ¤ÇÄɲ乤ë¾ì¹ç¤Ï¡¢¤³¤Î¥ê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤:'; +$string['postadded'] = 'Åê¹Æ¤¬Äɲ䵤ì¤Þ¤·¤¿¡£

              ¹¹¿·¤·¤¿¤¤¾ì¹ç¤Ï $a ÊÔ½¸½ÐÍè¤Þ¤¹¡£'; +$string['postincontext'] = '´ØÏ¢¤·¤¿Åê¹Æ¤ò¸«¤ë'; +$string['postmailinfo'] = '¤³¤ì¤Ï $a ¥¦¥§¥Ö¥µ¥¤¥È¤ËÅê¹Æ¤µ¤ì¤¿Åê¹Æ¤Î¥³¥Ô¡¼¤Ç¤¹¡£ÊÖ¿®¤ò¥¦¥§¥Ö¥µ¥¤¥È·Ðͳ¤ÇÄɲ乤ë¾ì¹ç¤Ï¡¢¤³¤Î¥ê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤:'; $string['postrating1'] = '¼ç¤ËʬΥǧ¼±¤Î·¹¸þ¤¬¤¢¤ë'; $string['postrating2'] = 'ʬΥǧ¼±¤È´ØÏ¢Ç§¼±¤òƱÅù¤Ë»ý¤Ã¤Æ¤¤¤ë'; $string['postrating3'] = '¼ç¤Ë´ØÏ¢Ç§¼±¤Î·¹¸þ¤¬¤¢¤ë'; $string['posts'] = 'Åê¹Æ'; $string['posttoforum'] = '¥Õ¥©¡¼¥é¥à¤ËÅê¹Æ'; -$string['postupdated'] = 'Åê¹Æ¤¬¹¹¿·¤µ¤ì¤Þ¤·¤¿¡£'; +$string['postupdated'] = 'Åê¹Æ¤¬¹¹¿·¤µ¤ì¤Þ¤·¤¿'; $string['potentialsubscribers'] = 'ÀøºßŪÅÐÏ¿¥æ¡¼¥¶'; $string['processingdigest'] = '$a ¤Î¥á¡¼¥ë¥À¥¤¥¸¥§¥¹¥È¤ò½èÍýÃæ'; $string['processingpost'] = 'Åê¹Æ $a ¤ò½èÍýÃæ'; $string['prune'] = 'ÃæÃÇ'; $string['prunedpost'] = '¿·¤·¤¤¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤¬ºîÀ®¤µ¤ì¤Þ¤·¤¿¡£'; -$string['pruneheading'] = 'Åê¹Æ¤ÎÃæÃǤª¤è¤Ó¿·¤·¤¤¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤Ø¤Î°Üư'; +$string['pruneheading'] = 'Åê¹Æ¤ÎÃæÃǵڤӿ·¤·¤¤¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤Ø¤Î°Üư'; $string['rate'] = 'ɾ²Á'; $string['rating'] = 'ɾ²Á'; $string['ratingeveryone'] = 'ï¤Ç¤âÅê¹Æ¤òɾ²Á¤Ç¤­¤ë'; $string['ratingno'] = 'ɾ²Á̵¤·'; -$string['ratingonlyteachers'] = '$a ¤Î¤ß¤¬Åê¹Æ¤òɾ²Á¤Ç¤­¤ë'; -$string['ratingpublic'] = '$a ¤ÏÁ´°÷¤Îɾ²Á¤ò±ÜÍ÷¤Ç¤­¤ë'; -$string['ratingpublicnot'] = '$a ¤Ï¼«Ê¬¤Îɾ²Á¤Î¤ß±ÜÍ÷¤Ç¤­¤ë'; +$string['ratingonlyteachers'] = '$a ¤Î¤ß¤¬Åê¹Æ¤òɾ²Á½ÐÍè¤ë'; +$string['ratingpublic'] = '$a ¤ÏÁ´°÷¤Îɾ²Á¤ò±ÜÍ÷½ÐÍè¤ë'; +$string['ratingpublicnot'] = '$a ¤Ï¼«Ê¬¤Îɾ²Á¤Î¤ß±ÜÍ÷½ÐÍè¤ë'; $string['ratings'] = 'ɾ²Á'; $string['ratingssaved'] = 'ɾ²Á¤¬Êݸ¤µ¤ì¤Þ¤·¤¿'; $string['ratingsuse'] = 'ɾ²Á¤ò»ÈÍѤ¹¤ë'; $string['ratingtime'] = '¤³¤Î´ü´Ö¤ÎÅê¹Æ¤ËÂФ¹¤ëɾ²Á¤òÀ©¸Â¤¹¤ë:'; $string['re'] = 'Re:'; $string['readtherest'] = '»Ä¤ê¤Î¥È¥Ô¥Ã¥¯¤òÆÉ¤à'; -$string['replies'] = 'ÊÖ¿®'; -$string['repliesmany'] = 'ÊÖ¿®¿ô: $a ·ï'; -$string['repliesone'] = 'ÊÖ¿®¿ô: $a ·ï'; +$string['replies'] = 'ÊÖ»ö'; +$string['repliesmany'] = '$a ·ï¤ÎÊÖ¿®¤¬¤¢¤ê¤Þ¤¹'; +$string['repliesone'] = '$a ·ï¤ÎÊÖ¿®¤¬¤¢¤ê¤Þ¤¹'; $string['reply'] = 'ÊÖ¿®'; $string['replyforum'] = '¥Õ¥©¡¼¥é¥à¤ËÊÖ¿®'; -$string['rsssubscriberssdiscussions'] = '$a ·ï¤Î¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤Ë´Ø¤·¤ÆRSS¥Õ¥£¡¼¥É¤òɽ¼¨'; -$string['rsssubscriberssposts'] = '$a ·ï¤ÎÅê¹Æ¤Ë´Ø¤·¤ÆRSS¥Õ¥£¡¼¥É¤òɽ¼¨'; +$string['rsssubscriberssdiscussions'] = '\'$a\' ·ï¤Î¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤Ë´Ø¤·¤ÆRSS¥Õ¥£¡¼¥É¤òɽ¼¨'; +$string['rsssubscriberssposts'] = '\'$a\' ·ï¤ÎÅê¹Æ¤Ë´Ø¤·¤ÆRSS¥Õ¥£¡¼¥É¤òɽ¼¨'; $string['search'] = '¸¡º÷'; -$string['searchdatefrom'] = '¤³¤ÎÆüÉÕ¤è¤ê¤â¿·¤·¤¤'; -$string['searchdateto'] = '¤³¤ÎÆüÉÕ¤è¤ê¤â¸Å¤¤'; -$string['searchforumintro'] = '1¤Ä¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤Î¥­¡¼¥ï¡¼¥É¤ò²¼µ­¤Î¥Õ¥£¡¼¥ë¥É¤ËÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:'; $string['searchforums'] = '¥Õ¥©¡¼¥é¥àÆâ¤ò¸¡º÷'; -$string['searchfullwords'] = '¤¹¤Ù¤Æ¤Î¥­¡¼¥ï¡¼¥É¤ò´Þ¤à'; -$string['searchnotwords'] = '¥­¡¼¥ï¡¼¥É¤ò´Þ¤á¤Ê¤¤'; $string['searcholderposts'] = '²áµî¤ÎÅê¹Æ¤ò¸¡º÷ ...'; -$string['searchphrase'] = '¥Õ¥ì¡¼¥º¤ò´Þ¤à'; $string['searchresults'] = '¸¡º÷·ë²Ì'; -$string['searchsubject'] = 'Âê̾'; -$string['searchuser'] = 'Åê¹Æ¼Ô̾'; -$string['searchuserid'] = 'Åê¹Æ¼Ô¤ÎMoodle ID'; -$string['searchwhichforums'] = '¸¡º÷ÂоÝ'; -$string['searchwords'] = '¤¤¤º¤ì¤«¤Î¥­¡¼¥ï¡¼¥É¤ò´Þ¤à'; -$string['seeallposts'] = '¤³¤Î¥æ¡¼¥¶¤Ë¤è¤ëÁ´¤Æ¤ÎÅê¹Æ¤òɽ¼¨'; -$string['sendinratings'] = '»ä¤Îɾ²Á¤òÁ÷¿®¤¹¤ë'; -$string['showsubscribers'] = '¥á¡¼¥ëÄÌÃÎÅÐÏ¿¼Ô¤òɽ¼¨/ÊÔ½¸'; -$string['singleforum'] = '¥È¥Ô¥Ã¥¯1·ï¤Î¤ß¤Î¥Õ¥©¡¼¥é¥à'; +$string['sendinratings'] = 'ºÇ¿·¤Î¥ì¡¼¥Æ¥£¥ó¥°¤òÁ÷¿®¤¹¤ë'; +$string['showsubscribers'] = 'ÅÐÏ¿¼Ô¤òɽ¼¨/ÊÔ½¸'; +$string['singleforum'] = 'ñ°ì¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó'; $string['startedby'] = '¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤Î³«»Ï'; $string['subject'] = 'Âê̾'; $string['subscribe'] = '¥á¡¼¥ëÄÌÃÎÅÐÏ¿'; $string['subscribeall'] = 'Á´°÷¤Î¥á¡¼¥ëÄÌÃÎÅÐÏ¿'; -$string['subscribed'] = '¥á¡¼¥ëÄÌÃÎÅÐÏ¿'; +$string['subscribed'] = 'ÅÐÏ¿'; $string['subscribenone'] = 'Á´°÷¤Î¥á¡¼¥ëÄÌÃβò½ü'; -$string['subscribers'] = '¥á¡¼¥ëÄÌÃÎÅÐÏ¿¼Ô'; -$string['subscribersto'] = '¡Ö $a ¡× ¤Î¥á¡¼¥ëÄÌÃÎÅÐÏ¿'; +$string['subscribers'] = 'ÅÐÏ¿¼Ô'; +$string['subscribersto'] = '$a ¤ÎÅÐÏ¿¼Ô'; $string['subscribestart'] = '¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æµ­»ö¤ò¥á¡¼¥ëÁ÷¿®¤¹¤ë'; $string['subscribestop'] = '¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æµ­»ö¤ò¥á¡¼¥ëÁ÷¿®¤·¤Ê¤¤'; -$string['subscription'] = '¥á¡¼¥ëÄÌÃÎÅÐÏ¿'; -$string['subscriptions'] = '¥á¡¼¥ëÄÌÃÎÅÐÏ¿'; -$string['unread'] = '̤ÆÉ'; -$string['unreadposts'] = '̤ÆÉ¤ÎÅê¹Æ'; -$string['unreadpostsnumber'] = '̤ÆÉ·ï¿ô $a'; -$string['unreadpostsone'] = '̤ÆÉ·ï¿ô 1'; +$string['subscription'] = 'ÅÐÏ¿'; +$string['subscriptions'] = 'ÅÐÏ¿'; $string['unsubscribe'] = '¥á¡¼¥ëÄÌÃβò½ü'; -$string['unsubscribed'] = '¥á¡¼¥ëÄÌÃΤò²ò½ü¤·¤Þ¤·¤¿¡£'; +$string['unsubscribed'] = '¥á¡¼¥ëÄÌÃΤò²ò½ü¤·¤Þ¤·¤¿'; $string['unsubscribeshort'] = '¥á¡¼¥ëÄÌÃβò½ü'; -$string['yesforever'] = 'Yes, ̵´ü¸Â'; -$string['yesinitially'] = 'Yes, ºÇ½é¤Î¤ß'; $string['youratedthis'] = '¤¢¤Ê¤¿¤Îɾ²Á'; -$string['yournewtopic'] = '¤¢¤Ê¤¿¤Î¿·¤·¤¤¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥È¥Ô¥Ã¥¯'; +$string['yournewtopic'] = '¿·µ¬¥È¥Ô¥Ã¥¯'; $string['yourreply'] = '¤¢¤Ê¤¿¤ÎÊÖ¿®'; ?> diff --git a/lang/ja/glossary.php b/lang/ja/glossary.php index 8e28e90a484..14290d6aab7 100644 --- a/lang/ja/glossary.php +++ b/lang/ja/glossary.php @@ -1,48 +1,47 @@ ÍѸì¤ÈÄêµÁ¤Ïɬ¿ÜÆþÎϹàÌܤǤ¹¡£'; -$string['explainall'] = 'Á´¤Æ¤Î¥¨¥ó¥È¥ê¤ò1¥Ú¡¼¥¸¤Ëɽ¼¨'; -$string['explainalphabet'] = '¥¤¥ó¥Ç¥Ã¥¯¥¹¤òÍøÍѤ·¤ÆÍѸ콸¤òɽ¼¨'; -$string['explainexport'] = '¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤·¤¿¡£
              ¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ°ÂÁ´¤ËÊݴɤ·¤Æ¤¯¤À¤µ¤¤¡£¤¤¤Ä¤Ç¤âɬÍפʻþ¤Ë¡¢¤³¤Î¥³¡¼¥¹¤Þ¤¿¤Ï¾¤Î¥³¡¼¥¹¤Ë¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£'; -$string['explainimport'] = '¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥Õ¥¡¥¤¥ë¤ª¤è¤Ó½èÍýÊýË¡¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£

              ¼Â¹Ô¸å¡¢·ë²Ì¤ò¸¡¾Ú¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['explainspecial'] = '£±Ê¸»ú¤Ç»Ï¤Þ¤é¤Ê¤¤¥¨¥ó¥È¥ê¤òɽ¼¨¤·¤Þ¤¹¡£'; -$string['exportedentry'] = '¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤¿¥¨¥ó¥È¥ê'; +$string['entbypage'] = '1¥Ú¡¼¥¸¤¢¤¿¤ê¤Îɽ¼¨¥¨¥ó¥È¥ê¡¼¿ô'; +$string['entries'] = '¥¨¥ó¥È¥ê¡¼'; +$string['entrieswithoutcategory'] = '¥«¥Æ¥´¥ê̵¤·¤Î¥¨¥ó¥È¥ê¡¼'; +$string['entry'] = '¥¨¥ó¥È¥ê¡¼'; +$string['entryalreadyexist'] = '¥¨¥ó¥È¥ê¡¼¤¬´û¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£'; +$string['entryapproved'] = '¥¨¥ó¥È¥ê¡¼¤¬¾µÇ§¤µ¤ì¤Þ¤·¤¿'; +$string['entrydeleted'] = '¥¨¥ó¥È¥ê¡¼¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿¡£'; +$string['entryexported'] = '¥¨¥ó¥È¥ê¡¼¤¬Àµ¾ï¤Ë¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤Þ¤·¤¿¡£'; +$string['entryishidden'] = '(¤³¤Î¥¨¥ó¥È¥ê¡¼¤Ï¸½ºßÈóɽ¼¨¤Ç¤¹)'; +$string['entryleveldefaultsettings'] = '¥¨¥ó¥È¥ê¡¼¥ì¥Ù¥ë¥Ç¥Õ¥©¥ë¥ÈÀßÄê'; +$string['entryusedynalink'] = '¥¨¥ó¥È¥ê¡¼¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤µ¤»¤ë'; +$string['explainaddentry'] = 'ÍѸ콸¤Ë¿·¤·¤¤¥¨¥ó¥È¥ê¡¼¤òÄɲä·¤Þ¤¹¡£
              ÍѸì¤ÈÄêµÁ¤Ïɬ¿ÜÆþÎϹàÌܤǤ¹¡£'; +$string['explainall'] = 'Á´¤Æ¤Î¥¨¥ó¥È¥ê¡¼¤ò1¥Ú¡¼¥¸¤Ëɽ¼¨'; +$string['explainalphabet'] = '¥¤¥ó¥Ç¥Ã¥¯¥¹¤òÍøÍѤ·¤ÆÍѸ콸¤ò±ÜÍ÷'; +$string['explainexport'] = '¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤·¤¿¡£
              ¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ°ÂÁ´¤ËÊݴɤ·¤Æ¤¯¤À¤µ¤¤¡£¤¤¤Ä¤Ç¤âɬÍפʻþ¤Ë¡¢¤³¤Î¥³¡¼¥¹¤Þ¤¿¤Ï¾¤Î¥³¡¼¥¹¤Ë¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£'; +$string['explainimport'] = '¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥Õ¥¡¥¤¥ëµÚ¤Ó½èÍýÊýË¡¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£

              ¼Â¹Ô¸å¡¢·ë²Ì¤ò¸¡¾Ú¤·¤Æ¤¯¤À¤µ¤¤¡£'; +$string['explainspecial'] = '£±Ê¸»ú¤Ç»Ï¤Þ¤é¤Ê¤¤¥¨¥ó¥È¥ê¡¼¤òɽ¼¨¤·¤Þ¤¹'; +$string['exportedentry'] = '¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤¿¥¨¥ó¥È¥ê¡¼'; $string['exportedfile'] = '¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤¿¥Õ¥¡¥¤¥ë'; -$string['exportentries'] = '¥¨¥ó¥È¥ê¤Î¥¨¥¯¥¹¥Ý¡¼¥È'; +$string['exportentries'] = '¥¨¥ó¥È¥ê¡¼¤Î¥¨¥¯¥¹¥Ý¡¼¥È'; $string['exportglossary'] = 'ÍѸ콸¤Î¥¨¥¯¥¹¥Ý¡¼¥È'; $string['exporttomainglossary'] = '¥á¥¤¥óÍѸ콸¤Î¥¨¥¯¥¹¥Ý¡¼¥È'; $string['filetoimport'] = '¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥Õ¥¡¥¤¥ë'; @@ -110,38 +107,37 @@ $string['glossarytype'] = ' $string['glosssaryexported'] = 'ÍѸ콸¤¬¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤Þ¤·¤¿¡£'; $string['importcategories'] = '¥«¥Æ¥´¥ê¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë'; $string['importedcategories'] = '¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤¿¥«¥Æ¥´¥ê'; -$string['importedentries'] = '¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤¿¥¨¥ó¥È¥ê'; -$string['importentries'] = '¥¨¥ó¥È¥ê¤Î¥¤¥ó¥Ý¡¼¥È'; +$string['importedentries'] = '¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤¿¥¨¥ó¥È¥ê¡¼'; +$string['importentries'] = '¥¨¥ó¥È¥ê¡¼¤Î¥¤¥ó¥Ý¡¼¥È'; $string['isglobal'] = '¤³¤ÎÍѸ콸¤Ï¥°¥í¡¼¥Ð¥ë¤Ç¤¹¤«?'; $string['linkcategory'] = '¤³¤Î¥«¥Æ¥´¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤¹¤ë'; $string['mainglossary'] = '¥á¥¤¥óÍѸ콸'; $string['maxtimehaspassed'] = '¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡¢¤³¤Î¥³¥á¥ó¥È¤ÎºÇÂçÊÔ½¸²ó¿ô($a)¤òͤ¨¤Þ¤·¤¿!'; $string['modulename'] = 'ÍѸ콸'; $string['modulenameplural'] = 'ÍѸ콸'; -$string['newentries'] = '¿·¤·¤¤ÍѸ콸¥¨¥ó¥È¥ê'; +$string['newentries'] = '¿·¤·¤¤ÍѸ콸¥¨¥ó¥È¥ê¡¼'; $string['newglossary'] = '¿·¤·¤¤ÍѸ콸'; $string['newglossarycreated'] = '¿·¤·¤¤ÍѸ콸¤¬ºîÀ®¤µ¤ì¤Þ¤·¤¿¡£'; -$string['newglossaryentries'] = '¿·µ¬ÍѸ콸¥¨¥ó¥È¥ê'; +$string['newglossaryentries'] = '¿·µ¬ÍѸ콸¥¨¥ó¥È¥ê¡¼'; $string['nocomment'] = '¥³¥á¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó'; -$string['nocomments'] = '( ¤³¤Î¥¨¥ó¥È¥ê¤Ë¤Ï¥³¥á¥ó¥È¤¬¤¢¤ê¤Þ¤»¤ó )'; +$string['nocomments'] = '(¤³¤Î¥¨¥ó¥È¥ê¡¼¤Ë¤Ï¥³¥á¥ó¥È¤¬¤¢¤ê¤Þ¤»¤ó)'; $string['noconceptfound'] = 'ÍѸì¤Þ¤¿¤ÏÄêµÁ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£'; -$string['noentries'] = '¤³¤Î¥»¥¯¥·¥ç¥ó¤Ë¤Ï¥¨¥ó¥È¥ê¤¬¤¢¤ê¤Þ¤»¤ó¡£'; -$string['noentry'] = '¥¨¥ó¥È¥ê¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£'; +$string['noentries'] = '¤³¤Î¥»¥¯¥·¥ç¥ó¤Ë¤Ï¥¨¥ó¥È¥ê¡¼¤¬¤¢¤ê¤Þ¤»¤ó'; +$string['noentry'] = '¥¨¥ó¥È¥ê¡¼¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£'; $string['notcategorised'] = '¥«¥Æ¥´¥ê̵¤·'; -$string['numberofentries'] = '¥¨¥ó¥È¥ê¿ô'; +$string['numberofentries'] = '¥¨¥ó¥È¥ê¡¼¿ô'; $string['onebyline'] = '(1¹Ô¤¢¤¿¤ê1·ï)'; -$string['printerfriendly'] = '°õºþ¥â¡¼¥É'; -$string['printviewnotallowed'] = '°õºþ¥â¡¼¥É¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'; +$string['printerfriendly'] = '°õºþ·Á¼°'; $string['question'] = '¼ÁÌä'; $string['rate'] = 'ɾ²Á'; $string['rating'] = 'ɾ²Á'; -$string['ratingeveryone'] = 'ï¤Ç¤â¥¨¥ó¥È¥ê¤òɾ²Á¤Ç¤­¤ë'; +$string['ratingeveryone'] = 'ï¤Ç¤â¥¨¥ó¥È¥ê¡¼¤òɾ²Á½ÐÍè¤ë'; $string['ratingno'] = 'ɾ²Á̵¤·'; -$string['ratingonlyteachers'] = '$a ¤Î¤ß¤¬¥¨¥ó¥È¥ê¤òɾ²Á¤Ç¤­¤ë'; +$string['ratingonlyteachers'] = '$a ¤Î¤ß¤¬¥¨¥ó¥È¥ê¡¼¤òɾ²Á½ÐÍè¤ë'; $string['ratings'] = 'ɾ²Á'; $string['ratingssaved'] = 'ɾ²Á¤¬Êݸ¤µ¤ì¤Þ¤·¤¿'; $string['ratingsuse'] = 'ɾ²Á¤ò»ÈÍѤ¹¤ë'; -$string['ratingtime'] = '¥¨¥ó¥È¥êɾ²Á¤ò²¼µ­¤Î´ü´Ö¤ËÀ©¸Â¤¹¤ë:'; +$string['ratingtime'] = '²¼µ­¤Î´ü´Ö¤Î¥¨¥ó¥È¥ê¡¼É¾²Á¤òÀ©¸Â¤¹¤ë:'; $string['rejectedentries'] = 'µñÈݤµ¤ì¤¿¥¨¥ó¥È¥ê'; $string['rejectionrpt'] = 'µñÈÝ¥ì¥Ý¡¼¥È'; $string['rsssubscriberss'] = '\'$a\' ÍѸì¤ÎRSS¥Õ¥£¡¼¥É¤òɽ¼¨'; @@ -149,22 +145,22 @@ $string['searchindefinition'] = ' $string['secondaryglossary'] = '¥µ¥ÖÍѸ콸'; $string['sendinratings'] = 'ºÇ¿·¤Îɾ²Á¤òÁ÷¤ë'; $string['showall'] = 'Á´¤Æ¤Î¥ê¥ó¥¯¤òɽ¼¨'; -$string['showalphabet'] = '¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤òɽ¼¨'; +$string['showalphabet'] = '¸Þ½½²»¤òɽ¼¨'; $string['showspecial'] = 'ÆÃÊÌ¥ê¥ó¥¯¤òɽ¼¨'; $string['sortby'] = 'ʤÓÂØ¤¨'; $string['sortbycreation'] = 'ºîÀ®Æü»þ'; $string['sortbylastupdate'] = 'ºÇ½ª¹¹¿·Æü»þ'; $string['sortchronogically'] = 'ÆüÉÕ½ç¤ÎʤÓÂØ¤¨'; $string['special'] = 'ÆÃÊÌ'; -$string['standardview'] = '¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç'; -$string['studentcanpost'] = '³ØÀ¸¤Î¥¨¥ó¥È¥êÄɲäòµö²Ä¤¹¤ë'; -$string['totalentries'] = '¥¨¥ó¥È¥ê¹ç·×'; -$string['usedynalink'] = '¥¨¥ó¥È¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤¹¤ë'; +$string['standardview'] = '¸Þ½½²»½ç'; +$string['studentcanpost'] = '³ØÀ¸¤Î¥¨¥ó¥È¥ê¡¼Äɲäòµö²Ä¤¹¤ë'; +$string['totalentries'] = '¥¨¥ó¥È¥ê¡¼¹ç·×'; +$string['usedynalink'] = '¥¨¥ó¥È¥ê¡¼¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤¹¤ë'; $string['waitingapproval'] = '¾µÇ§ÂÔ¤Á'; -$string['warningstudentcapost'] = '( ÍѸ콸¤¬¥á¥¤¥ó¤Ç̵¤¤¾ì¹ç¤ËŬÍÑ )'; -$string['withauthor'] = 'ÍѸì ( Ãø¼ÔÍ­¤ê )'; -$string['withoutauthor'] = 'ÍѸì ( Ãø¼Ô̵¤· )'; +$string['warningstudentcapost'] = '(ÍѸ콸¤¬¥á¥¤¥ó¤Ç̵¤¤¾ì¹ç¤ËŬÍÑ)'; +$string['withauthor'] = 'ÍѸì(Ãø¼ÔÍ­¤ê)'; +$string['withoutauthor'] = 'ÍѸì(Ãø¼Ô̵¤·)'; $string['writtenby'] = 'ºîÀ®'; -$string['youarenottheauthor'] = '¤¢¤Ê¤¿¤Ï¤³¤Î¥³¥á¥ó¥È¤Îºî¼Ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ÊÔ½¸¤Ï¤Ç¤­¤Þ¤»¤ó¡£'; +$string['youarenottheauthor'] = '¤¢¤Ê¤¿¤Ï¤³¤Î¥³¥á¥ó¥È¤Îºî¼Ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ÊÔ½¸¤Ï½ÐÍè¤Þ¤»¤ó¡£'; ?> diff --git a/lang/ja/grades.php b/lang/ja/grades.php deleted file mode 100644 index 3df09069e3b..00000000000 --- a/lang/ja/grades.php +++ /dev/null @@ -1,125 +0,0 @@ -¶õÇò¤Ë¤·¤Æ¡ÖÊѹ¹¤òÊݸ¡×¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£'; -$string['gradepreferenceshelp'] = 'ɾÄꥪ¥×¥·¥ç¥ó¥Ø¥ë¥×'; -$string['grades'] = 'ɾÄê'; -$string['gradeweighthelp'] = 'ɾÄêÈæ½Å¥Ø¥ë¥×'; -$string['hidecategory'] = '±£¤¹'; -$string['highgradeascending'] = '¹âɾÅÀ¤Î¾º½ç¤ÇʤÓÂØ¤¨'; -$string['highgradedescending'] = '¹âɾÅÀ¤Î¹ß½ç¤ÇʤÓÂØ¤¨'; -$string['highgradeletter'] = '¹â¤¤'; -$string['incorrectcourseid'] = '¥³¡¼¥¹ID¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹¡£'; -$string['item'] = '¹àÌÜ'; -$string['items'] = '¹àÌÜ'; -$string['lettergrade'] = 'ɾÄêʸ»ú'; -$string['lettergradenonnumber'] = 'Ä㤤/¹â¤¤É¾ÅÀ¤Ï¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó:'; -$string['letters'] = 'ʸ»ú'; -$string['lowest'] = 'ºÇÄã'; -$string['lowgradeletter'] = 'Ä㤤'; -$string['max'] = 'ºÆ¹Í'; -$string['maxgrade'] = 'ºÇÂçɾÅÀ'; -$string['median'] = 'Ãæ´Ö'; -$string['min'] = 'ºÇÄã'; -$string['mode'] = '¥â¡¼¥É'; -$string['no'] = 'No'; -$string['nocategories'] = '¤³¤Î¥³¡¼¥¹¤ËɾÄꥫ¥Æ¥´¥ê¤ÏÄɲ䵤ì¤Ê¤«¤Ã¤¿¤«¡¢¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£'; -$string['nocategoryview'] = '¥«¥Æ¥´¥ê¤¬¤¢¤ê¤Þ¤»¤ó¡£'; -$string['nogradeletters'] = 'ɾÄêʸ»ú¥¬ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'; -$string['nogradesreturned'] = 'ɾÄ꤬¤¢¤ê¤Þ¤»¤ó¡£'; -$string['nolettergrade'] = 'ɾÄêʸ»ú¤¬¤¢¤ê¤Þ¤»¤ó:'; -$string['nomode'] = 'NA'; -$string['nonnumericweight'] = '¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó:'; -$string['nonweightedpct'] = 'Èæ½Å̵¤·%%'; -$string['pctoftotalgrade'] = 'ɾÅÀ¹ç·×¤Î%%'; -$string['percent'] = '¥Ñ¡¼¥»¥ó¥È'; -$string['percentascending'] = '¥Ñ¡¼¥»¥ó¥È¤Î¾º½ç¤ÇʤÓÂØ¤¨'; -$string['percentdescending'] = '¥Ñ¡¼¥»¥ó¥È¤Î¹ß½ç¤ÇʤÓÂØ¤¨'; -$string['percentshort'] = '%%'; -$string['points'] = 'ÅÀ¿ô'; -$string['pointsascending'] = 'ÅÀ¿ô¤Î¾º½ç¤ÇʤÓÂØ¤¨'; -$string['pointsdescending'] = 'ÅÀ¿ô¤Î¹ß½ç¤ÇʤÓÂØ¤¨'; -$string['preferences'] = '¥ª¥×¥·¥ç¥ó'; -$string['rawpct'] = '¼Â%%'; -$string['reprintheaders'] = 'Reprint¥Ø¥Ã¥À'; -$string['savechanges'] = 'Êѹ¹¤òÊݸ'; -$string['savepreferences'] = 'ÀßÄê¤òÊݸ'; -$string['scaledpct'] = '¿­½Ì%%'; -$string['setcategories'] = '¥«¥Æ¥´¥ê¤ÎÀßÄê'; -$string['setcategorieserror'] = 'Èæ½Å¤òÍ¿¤¨¤ëÁ°¤Ë¥³¡¼¥¹¤Ë¥«¥Æ¥´¥ê¤òÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£'; -$string['setgradeletters'] = 'ɾÄêʸ»ú¤ÎÀßÄê'; -$string['setpreferences'] = '¥ª¥×¥·¥ç¥óÀßÄê'; -$string['setting'] = 'ÀßÄê'; -$string['settings'] = 'ÀßÄê'; -$string['setweights'] = 'Èæ½Å¤ÎÀßÄê'; -$string['showallstudents'] = 'Á´¤Æ¤Î³ØÀ¸¤òɽ¼¨'; -$string['showhiddenitems'] = '±£¤·¹àÌܤòɽ¼¨¤¹¤ë'; -$string['sort'] = 'ʤÓÂØ¤¨'; -$string['sortbyfirstname'] = '̾¤ÇʤÙÂØ¤¨'; -$string['sortbylastname'] = 'À«¤ÇʤÓÂØ¤¨'; -$string['standarddeviation'] = 'ɸ½àÊк¹'; -$string['stats'] = 'Åý·×'; -$string['statslink'] = 'Åý·×'; -$string['student'] = '³ØÀ¸'; -$string['total'] = '¹ç·×'; -$string['totalweight100'] = '¹ç·×Èæ½Å¤Ï100¤Ç¤¹¡£'; -$string['totalweightnot100'] = '¹ç·×Èæ½Å¤Ï100¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£'; -$string['uncategorised'] = '¥«¥Æ¥´¥ê̵¤·'; -$string['useadvanced'] = '³ÈÄ¥µ¡Ç½¤ò»ÈÍѤ¹¤ë'; -$string['usepercent'] = '¥Ñ¡¼¥»¥ó¥È¤ò»ÈÍÑ'; -$string['useweighted'] = 'Èæ½Å¤ò»ÈÍÑ'; -$string['viewbygroup'] = '¥°¥ë¡¼¥×'; -$string['viewgrades'] = 'ɾÄê¤Îɽ¼¨'; -$string['weight'] = '¥¦¥§¥¤¥È'; -$string['weightedascending'] = 'Èæ½Å¥Ñ¡¼¥»¥ó¥È¤Î¾º½ç¤ÇʤÓÂØ¤¨'; -$string['weighteddescending'] = 'Èæ½Å¥Ñ¡¼¥»¥ó¥È¤Î¹ß½ç¤ÇʤÓÂØ¤¨'; -$string['weightedpct'] = 'Èæ½Å%%'; -$string['weightedpctcontribution'] = 'Èæ½Å%%¹×¸¥'; -$string['writinggradebookinfo'] = '¥°¥ì¡¼¥É¥Ö¥Ã¥¯ÀßÄê¤Î½ñ¤­¹þ¤ß'; -$string['yes'] = 'Yes'; - -?> diff --git a/lang/ja/help/advancedsettings.html b/lang/ja/help/advancedsettings.html deleted file mode 100644 index 77418ef7191..00000000000 --- a/lang/ja/help/advancedsettings.html +++ /dev/null @@ -1,5 +0,0 @@ -

              ¹âÅÙ¤ÊÀßÄê

              - -

              ¤³¤ì¤é¤Î¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤Î¤É¤ì¤«¤òÁªÂò¤¹¤ë¤È¡¢Âбþ¤¹¤ë¥ª¥×¥·¥ç¥ó¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¶µ»Õ¤«¤é±£¤µ¤ì¤Þ¤¹¡£

              - -

              ¤·¤«¤·¡¢¤³¤Î¥â¥¸¥å¡¼¥ë¤ÎÊÔ½¸¥Ú¡¼¥¸¤Ë¤¢¤ë¥Ü¥¿¥ó¤òÍѤ¤¤ì¤Ð¡¢¶µ»Õ¤â¤³¤ì¤é¤Î¡Ö¹âÅÙ¤ÊÀßÄê¡×¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

              \ No newline at end of file diff --git a/lang/ja/help/assignment/assignmenttype.html b/lang/ja/help/assignment/assignmenttype.html index d84369dc60d..6609cb10e5a 100644 --- a/lang/ja/help/assignment/assignmenttype.html +++ b/lang/ja/help/assignment/assignmenttype.html @@ -1,8 +1,8 @@ -

              ²ÝÂ꥿¥¤¥×

              +

              ²ÝÂ꥿¥¤¥×

              -

              ²ÝÂê¤Ë¤Ï°Û¤Ê¤ë¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹¡£

              +

              ²ÝÂê¤Ë¤Ï°Û¤Ê¤ë¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹¡£

              -

              ¥ª¥Õ¥é¥¤¥ó³èư - Moodle¤ò»ÈÍѤ»¤º¤Ë²ÝÂê¤ò²Ý¤¹¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£³ØÀ¸¤Ï²ÝÂê¤Ë´Ø¤¹¤ëÀâÌÀ¤òÆÉ¤à¤³¤È¤Ï¤Ç¤­¤Þ¤¹¤¬¡¢¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥ÉÅù¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤·¤«¤·¶µ»Õ¤ÏMoodle¤òÍøÍѤ·¤ÆÀ®ÀÓ¤ò¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤·¡¢³ØÀ¸¤Ï¼«Ê¬¤ÎÀ®ÀÓ¤¬½Ð¤µ¤ì¤¿¤«Èݤ«³Îǧ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

              ¥ª¥Õ¥é¥¤¥ó²ÝÂê - Moodle¤ò»ÈÍѤ»¤º¤Ë²ÝÂê¤ò¹Ô¤¦¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£³ØÀ¸¤Ï²ÝÂê¤Ë´Ø¤¹¤ëÀâÌÀ¤òÆÉ¤à¤³¤È¤Ï½ÐÍè¤Þ¤¹¤¬¡¢¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥ÉÅù¤Ï½ÐÍè¤Þ¤»¤ó¡£¤·¤«¤·¶µ»Õ¤ÏMoodle¤òÍøÍѤ·¤ÆÀ®ÀÓ¤ò¤Ä¤±¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¤·¡¢³ØÀ¸¤Ï¼«Ê¬¤ÎÀ®ÀÓ¤¬½Ð¤µ¤ì¤¿¤«Èݤ«³Îǧ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ -

              ñ°ì¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É - ³ØÀ¸¤¬ÍÍ¡¹¤Ê¼ïÎà¤Îñ°ì¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥ï¡¼¥×¥íʸ½ñ¡¢¥¤¥á¡¼¥¸¡¢Zip°µ½Ì¤µ¤ì¤¿¥Û¡¼¥à¥Ú¡¼¥¸¡¢¤Þ¤¿¤Ï¤¢¤Ê¤¿¤¬³ØÀ¸¤Ë»Ø¼¨¤·¤¿¥¿¥¤¥×¤Î¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤Ç¤­¤Þ¤¹¡£¶µ»Õ¤Ï³ØÀ¸¤¬Äó½Ð¤·¤¿²ÝÂê¤ò¥ª¥ó¥é¥¤¥ó¾å¤Çɾ²Á¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -

              \ No newline at end of file +

              ¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É - ³ØÀ¸¤¬ÍÍ¡¹¤Ê¼ïÎà¤Î¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¥ï¡¼¥×¥íʸ½ñ¡¢²èÁü¡¢Zip°µ½Ì¤µ¤ì¤¿¥Û¡¼¥à¥Ú¡¼¥¸¡¢Ëô¤Ï¤¢¤Ê¤¿¤¬³ØÀ¸¤Ë»Ø¼¨¤·¤¿¥¿¥¤¥×¤Î¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É½ÐÍè¤Þ¤¹¡£¶µ»Õ¤Ï¥ª¥ó¥é¥¤¥ó¾å¤Ç³ØÀ¸¤¬Äó½Ð¤·¤¿²ÝÂê¤Îɾ²Á¤ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +

              diff --git a/lang/ja/help/assignment/emailteachers.html b/lang/ja/help/assignment/emailteachers.html deleted file mode 100644 index 3633930192d..00000000000 --- a/lang/ja/help/assignment/emailteachers.html +++ /dev/null @@ -1,7 +0,0 @@ -

              ¶µ»Õ¤Ë¥á¡¼¥ëÄÌÃΤò¹Ô¤¦

              - -

              ¤³¤ÎÀßÄê¤ò¡ÖYes¡×¤Ë¤·¤¿¾ì¹ç¡¢³ØÀ¸¤Î²ÝÂêÄó½Ð¤Ë´Ø¤¹¤ëû¤¤ÄÌÃΥ᡼¥ë¤¬¶µ»Õ¤ËÁ÷¿®¤µ¤ì¤Þ¤¹¡£

              - -

              ²ÝÂê¤òɾ²Á¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¶µ»Õ¤Î¤ß¤ËÄÌÃΥ᡼¥ë¤¬Á÷¿®¤µ¤ì¤Þ¤¹¡£Î㤨¤Ð¡¢¥³¡¼¥¹¤¬Ê¬Î¥¥°¥ë¡¼¥×¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢ÆÃÄê¤Î¥°¥ë¡¼¥×¤ËÀ©¸Â¤µ¤ì¤Æ¤¤¤ë¶µ»Õ¤Ï¡¢Â¾¤Î¥°¥ë¡¼¥×¤Î³ØÀ¸¤Ë´Ø¤¹¤ëÄÌÃΥ᡼¥ë¤ò¼õ¤±¼è¤ê¤Þ¤»¤ó¡£

              - -

              ¤â¤Á¤í¤ó¡¢¥ª¥Õ¥é¥¤¥ó³èư¤Ë¤ª¤¤¤Æ¤Ï¡¢³ØÀ¸¤¬¥ª¥ó¥é¥¤¥ó¾å¤ÇÄó½Ð¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢ÄÌÃΥ᡼¥ë¤ÏÁ÷¿®¤µ¤ì¤Þ¤»¤ó¡£

              \ No newline at end of file diff --git a/lang/ja/help/assignment/index.html b/lang/ja/help/assignment/index.html index 04469dd243b..754f8b68de6 100644 --- a/lang/ja/help/assignment/index.html +++ b/lang/ja/help/assignment/index.html @@ -2,8 +2,8 @@ diff --git a/lang/ja/help/assignment/mods.html b/lang/ja/help/assignment/mods.html index eca96891610..b71c22a44f9 100644 --- a/lang/ja/help/assignment/mods.html +++ b/lang/ja/help/assignment/mods.html @@ -1,5 +1,6 @@ -

              ²ÝÂê

              -
              -²ÝÂê¤Ç¤Ï¡¢¶µ»Õ¤¬³ØÀ¸¤Ë¥Ç¥¸¥¿¥ë¥³¥ó¥Æ¥ó¥Ä ( ¤¢¤é¤æ¤ë¼ïÎà ) ¤ÎºîÀ®¤ò²Ý¤·¡¢¤½¤ì¤é¤ò¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É -¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Åµ·¿Åª¤Ê²ÝÂê¤Ë¤ÏÆü»ï¡¢¥×¥í¥¸¥§¥¯¥È¡¢¥ì¥Ý¡¼¥ÈÅù¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ïɾ²Áµ¡Ç½¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£ -
              \ No newline at end of file +

               ²ÝÂê

              +
                +

                ²ÝÂê¤Ç¤Ï¡¢¶µ»Õ¤¬³ØÀ¸¤Ë¥Ç¥¸¥¿¥ë¥³¥ó¥Æ¥ó¥Ä(¤¢¤é¤æ¤ë¼ïÎà)¤ÎºîÀ®¤ò²Ý¤·¡¢¤½¤ì¤é¤ò¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É +¤¹¤ë¤³¤È¤ÇÄó½Ð¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Åµ·¿Åª¤Ê²ÝÂê¤Ë¤ÏÆü»ï¡¢¥×¥í¥¸¥§¥¯¥È¡¢¥ì¥Ý¡¼¥ÈÅù¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤Î¥â¥¸¥å¡¼¥ë¤Ïɾ²Áµ¡Ç½¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£

                +
              diff --git a/lang/ja/help/assignment/resubmit.html b/lang/ja/help/assignment/resubmit.html index 8fb394da708..137072e95e5 100644 --- a/lang/ja/help/assignment/resubmit.html +++ b/lang/ja/help/assignment/resubmit.html @@ -1,7 +1,8 @@ -

              ²ÝÂê¤ÎºÆÄó½Ð

              +

              ²ÝÂê¤ÎºÆÄó½Ð

              -

              ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¶µ»Õ¤¬²ÝÂê¤òɾÄꤷ¤¿¸å¡¢³ØÀ¸¤Ï²ÝÂê¤òºÆÄó½Ð¤Ç¤­¤Þ¤»¤ó¡£

              +

              ¶µ»Õ¤¬²ÝÂê¤òɾ²Á¤·¤¿¾ì¹ç¡¢³ØÀ¸¤¬²ÝÂê¤òºÆÄó½ÐÍè¤Ê¤¤¾õÂÖ¤¬½é´üÃͤȤ·¤ÆÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£ -

              ¤³¤Î¥ª¥×¥·¥ç¥ó¤òÁª¤ó¤À¾ì¹ç¡¢¤¢¤Ê¤¿¤ÎɾÄê¸å¡¢ ( ¤¢¤Ê¤¿¤¬ºÆÉ¾Äꤹ¤ë¤¿¤á¤Ë ) ³ØÀ¸¤¬²ÝÂê¤òºÆÄó½Ð¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Ï¶µ»Õ¤¬³ØÀ¸¤ËÈ¿ÉüÎý½¬¤¹¤ë¤³¤È¤Ç¡¢¤è¤êÎɤ¤³Ø½¬¤ò¹Ô¤¦¤è¤¦Í¦µ¤ÉÕ¤±¤¿¤¤¾ì¹ç¤ËÍ­ÍѤǤ¹¡£

              +

              ¤³¤Î¥ª¥×¥·¥ç¥ó¤òÁª¤ó¤À¾ì¹ç¤Ï¡¢¤¢¤Ê¤¿¤Îɾ²Á¸å¤Ë³ØÀ¸¤¬²ÝÂê¤ÎºÆÄó½Ð¤ò½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£(¤³¤Î¾ì¹ç¡¢ºÆÉ¾²Á¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹) ¤³¤ì¤Ï¶µ»Õ¤¬³ØÀ¸¤ËÂФ·¤Æ¥ª¥ó¥é¥¤¥ó³Ø½¬¤òÄ̤·¤Æ¡¢¤è¤êÎɤ¤³Ø½¬¤ò¹Ô¤¦¤è¤¦Í¦µ¤ÉÕ¤±¤ë°ÕÌ£¤ÇÍ­ÍѤǤ¹¡£ -

              ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥ª¥Õ¥é¥¤¥ó¤Ï²ÝÂê¤ËŬ¤·¤Æ¤¤¤Þ¤»¤ó¡£

              \ No newline at end of file +

              ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥ª¥Õ¥é¥¤¥ó²ÝÂê¤ËŬ¤·¤Æ¤¤¤Þ¤»¤ó¡£ +

              diff --git a/lang/ja/help/attendance/autoattend.html b/lang/ja/help/attendance/autoattend.html index 0bdf0e91da9..9bd9aff480f 100644 --- a/lang/ja/help/attendance/autoattend.html +++ b/lang/ja/help/attendance/autoattend.html @@ -1,7 +1,8 @@

              ¥í¥°¤ò¸µ¤Ë¼«Æ°Åª¤Ë½ÐÀʤò¼è¤ë

              -

              ¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¡ÖYes¡×¤Ë¤·¤¿¾ì¹ç¡¢»ØÄꤵ¤ì¤¿ÆüÉդˤª¤±¤ë¥æ¡¼¥¶¤Î1Æü¤Î¹Ôư¤ò¸µ¤Ë½ÐÀʤ¬¼è¤é¤ì¤Þ¤¹¡£

              +

              ¤³¤Î¥ª¥×¥·¥ç¥ó¤òyes¤Ë¤·¤¿¾ì¹ç¡¢»ØÄꤵ¤ì¤¿ÆüÉդˤª¤±¤ë¥æ¡¼¥¶¤Î1Æü¤Î¹Ôư¤ò¸µ¤Ë½ÐÀʤ¬¼è¤é¤ì¤Þ¤¹¡£

              -

              ¼«Æ°½ÐÀʵ­Ï¿¤Ï¡¢ÆÃÄê¤ÎÆüÉդ˥桼¥¶¤¬¥í¥°¥¤¥ó¤·¤¿¾ì¹ç¡¢¤É¤Î¤è¤¦¤Êºî¶È¤ò¹Ô¤Ã¤Æ¤â½ÐÀʤȤ·¤Æ¥«¥¦¥ó¥È¤·¤Þ¤¹¡£

              +

              ¼«Æ°½ÐÀʤϡ¢ÆÃÄê¤ÎÆüÉդ˥桼¥¶¤¬¥í¥°¥¤¥ó¤·¤¿¾ì¹ç¡¢¤É¤Î¤è¤¦¤Êºî¶È¤ò¹Ô¤Ã¤Æ¤â½ÐÀʤȤ·¤Æ¥«¥¦¥ó¥È¤·¤Þ¤¹¡£

              + +

              ¤³¤Îµ¡Ç½¤òưºî¤µ¤»¤ë°Ù¤Ë¤Ï¡¢cron¤Îµ¡Ç½¤òɬ¤º»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£

              -

              ¤³¤Îµ¡Ç½¤òưºî¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢cron¤Îµ¡Ç½¤òÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

              diff --git a/lang/ja/help/attendance/choosedays.html b/lang/ja/help/attendance/choosedays.html index 5d19deebec4..b7627a892da 100644 --- a/lang/ja/help/attendance/choosedays.html +++ b/lang/ja/help/attendance/choosedays.html @@ -1,5 +1,6 @@

              ÍËÆü¤Î»ØÄê

              Ê£¿ô¤Î½ÐÀÊÊí¤òÄɲ乤ë¾ì¹ç¡¢¤³¤Î¥ê¥¹¥È¤Ç¥Á¥§¥Ã¥¯¤·¤¿½µ¤Ë1¤Ä¤Î½ÐÀÊÊí¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£ -Î㤨¤Ð¡¢Ëè½µ²ÐÍËÆü¤ÈÌÚÍËÆü¤Ë½ÐÀʤò¼è¤ê¤¿¤¤¾ì¹ç¤Ï¡¢²Ð¤ÈÌڤΤߤò¥Á¥§¥Ã¥¯¤·¤Æ»Ä¤ê¤Ï¥Á¥§¥Ã¥¯¤·¤Ê¤¤¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

              +Î㤨¤Ð¡¢Ëè½µ²ÐÍËÆü¤ÈÌÚÍËÆü¤Ë½ÐÀʤò¼è¤ê¤¿¤¤¾ì¹ç¤Ï¡¢²ÐµÚ¤ÓÌڤΤߤò¥Á¥§¥Ã¥¯¤·¤Æ»Ä¤ê¤Ï¥Á¥§¥Ã¥¯¤·¤Ê¤¤¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

              + diff --git a/lang/ja/help/attendance/dynsection.html b/lang/ja/help/attendance/dynsection.html index 4a943ee6d98..3ef7f5b9296 100644 --- a/lang/ja/help/attendance/dynsection.html +++ b/lang/ja/help/attendance/dynsection.html @@ -1,5 +1,6 @@

              ÆüÉÕ¤ò¸µ¤Ë½µ¤ò·èÄê

              -

              ÆüÉÕ¤ò¸µ¤Ë¤·¤Æ¡¢³ºÅö¤¹¤ë½µ¤Ë½ÐÀʤò¼«Æ°Åª¤Ë°Üư¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤¿¾ì¹ç¡¢¤¢¤Ê¤¿¤¬Êѹ¹¤òÊݸ¤·¤¿¸å¤Ë¡¢½ÐÀʤ¬Å¬Åö¤Ê½µ¤Ë°Üư¤µ¤ì¤Þ¤¹¡£

              +

              ÆüÉÕ¤ò¸µ¤Ë¤·¤Æ¡¢³ºÅö¤¹¤ë½µ¤Ë½ÐÀʤò¼«Æ°Åª¤Ë°Üư¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤¿¾ì¹ç¡¢½ÐÀʤ¬Å¬Åö¤Ê½µ¤ËÊݸ¤µ¤ì¤Þ¤¹¡£

              + +

              ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥³¡¼¥¹¤Î¤ß¤ËŬÍѤµ¤ì¤Þ¤¹¡£.

              -

              ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥³¡¼¥¹¤Î¤ß¤ËŬÍѤµ¤ì¤Þ¤¹¡£

              diff --git a/lang/ja/help/attendance/grade.html b/lang/ja/help/attendance/grade.html index 4abe1d215d8..5e38f0aa575 100644 --- a/lang/ja/help/attendance/grade.html +++ b/lang/ja/help/attendance/grade.html @@ -1,5 +1,7 @@ -

              ½ÐÀʤòɾÄꤹ¤ë

              +

              ½ÐÀʤòɾ²Á¤¹¤ë

              -

              ¤³¤³¤Ç¤ÏÀþ·Áɾ²Á¼ÜÅ٤ˤè¤ê½ÐÀʤòɾÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¹ç·×»þ´Ö¿ô¤ËÂФ¹¤ë³ØÀ¸¤Î½ÐÀÊ»þ´Ö¤ò¸µ¤ËɾÄêÊí¤ËɾÅÀ¤¬Äɲ䵤ì¤Þ¤¹¡£ÃÙ¹ï¤âɾÄêÂоݤȤµ¤ì¡¢¡Ö·çÀʤ¢¤¿¤ê¤ÎÃÙ¹ï¿ô¡×ÀßÄê¤ò¸µ¤ËɾÄꤵ¤ì¤Þ¤¹¡£

              +

              ¤³¤³¤Ç¤Ï¶ÑÅùÌÜÀ¹¤Ë¤è¤ê½ÐÀʤòɾ²Á¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¹ç·×»þ´Ö¿ô¤ËÂФ¹¤ë³ØÀ¸¤Î½ÐÀÊ»þ´Ö¤ò¸µ¤Ëɾ²ÁÊí¤Ëɾ²Á¤¬Äɲ䵤ì¤Þ¤¹¡£ +ÃÙ¹ï¤Ïɾ²ÁÂоݤȤµ¤ì¡¢"·çÀʤ¢¤¿¤ê¤ÎÃÙ¹ï¿ô" ÀßÄê¤ò¸µ¤Ëɾ²Á¤µ¤ì¤Þ¤¹¡£

              + +

              ¼«Æ°Åª¤Ë½ÐÀʤò¼è¤ë¾ì¹ç¡¢¥³¡¼¥¹¤ËÉôʬŪ¤Ë½ÐÀʤ¹¤ëÊýË¡¤¬¼è¤ì¤Ê¤¤°Ù¡¢¤³¤Îµ¡Ç½¤ÏÀµ¤·¤¯Æ°ºî¤·¤Þ¤»¤ó¡£¼«Æ°Åª¤Ë½ÐÀʤò¼è¤ë¾ì¹ç¡¢³ØÀ¸¤Ï100%½ÐÀÊËô¤Ï100%·çÀʤˤʤê¤Þ¤¹¡£

              -

              ¼«Æ°Åª¤Ë½ÐÀʤò¼è¤ë¾ì¹ç¡¢¥³¡¼¥¹¤ØÉôʬŪ¤Ë½ÐÀʤ¹¤ëÊýË¡¤¬¼è¤ì¤Ê¤¤¤¿¤á¡¢¤³¤Îµ¡Ç½¤ÏÀµ¤·¤¯Æ°ºî¤·¤Þ¤»¤ó¡£¼«Æ°Åª¤Ë½ÐÀʤò¼è¤ë¾ì¹ç¡¢³ØÀ¸¤Ï100%½ÐÀʤޤ¿¤Ï100%·çÀʤˤʤê¤Þ¤¹¡£

              diff --git a/lang/ja/help/attendance/hours.html b/lang/ja/help/attendance/hours.html index 1edfd079a7a..8cf3b5b8177 100644 --- a/lang/ja/help/attendance/hours.html +++ b/lang/ja/help/attendance/hours.html @@ -1,5 +1,5 @@

              ¼ø¶È»þ´Ö¿ô

              -

              ¥¯¥é¥¹¤Î¼ø¶È»þ´Ö¿ô¤òÀßÄꤷ¤Þ¤¹¡£½ÐÀʤϤ½¤ì¤¾¤ì¤Î¥¯¥é¥¹¤Î»þ´Ö¤ËÆÈΩ¤·¤Æµ­Ï¿¤µ¤ì¤Þ¤¹¡£»þ´Ö¤Î°ìÉô¤ò»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

              +

              ¤³¤Î¥¯¥é¥¹¤Î¼ø¶È»þ´Ö¿ô¤òÀßÄꤷ¤Þ¤¹¡£½ÐÀʤϤ½¤ì¤¾¤ì¤Î¥¯¥é¥¹¤Î»þ´Ö¤ËÆÈΩ¤·¤Æµ­Ï¿¤µ¤ì¤Þ¤¹¡£»þ´Ö¤Î°ìÉô¤ò»ØÄꤹ¤ë¤³¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£

              -

              ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¼«Æ°½ÐÀʵ­Ï¿¤Ë¤Ï¸þ¤¤¤Æ¤¤¤Þ¤»¤ó¡£

              +

              ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¼«Æ°½ÐÀʤˤϸþ¤¤¤Æ¤¤¤Þ¤»¤ó¡£

              diff --git a/lang/ja/help/attendance/index.html b/lang/ja/help/attendance/index.html index 838cb704052..4f835c5af41 100644 --- a/lang/ja/help/attendance/index.html +++ b/lang/ja/help/attendance/index.html @@ -1,10 +1,10 @@

              ½ÐÀÊ

              diff --git a/lang/ja/help/attendance/maxgrade.html b/lang/ja/help/attendance/maxgrade.html index 32609b4eacc..487ea1aaffd 100644 --- a/lang/ja/help/attendance/maxgrade.html +++ b/lang/ja/help/attendance/maxgrade.html @@ -1,3 +1,5 @@ -

              ³§¶Ð¤ÎºÇÂçɾÅÀ

              +

              ½ÐÀʤκÇÂçɾ²Á

              + +

              ¤³¤³¤Ç¤Ï¥³¡¼¥¹¤Ë¤ª¤±¤ë³§¶Ð¤Î¾ì¹ç¤ÎºÇÂçɾ²Á¤ò·èÄꤷ¤Þ¤¹¡£ÉôʬŪ¤Ê½ÐÀʤËÂФ·¤Æ¤Ï¡¢»þ´Ö¤Ë±þ¤¸¤ÆÉ¾²Á¤¬·è¤á¤é¤ì¤Þ¤¹¡£É¾²Á¥¼¥í¤Ï·çÀʤȤ·¤Æµ­Ï¿¤µ¤ì¤Þ¤¹¡£

              + -

              ¤³¤³¤Ç¤Ï¥³¡¼¥¹¤Ë¤ª¤±¤ë³§¶Ð¤ÎºÇÂçɾÅÀ¤ò·èÄꤷ¤Þ¤¹¡£¤³¤ÎÃͤϡ¢Éôʬ½ÐÀʤξì¹ç¤ÏÀþ·Áɾ²Á¼ÜÅ٤˴ð¤Å¤¤¤ÆÈæÎãÇÛʬ¤µ¤ì¤Þ¤¹¡£É¾ÅÀ¥¼¥í¤Ï·çÀʤȤ·¤Æµ­Ï¿¤µ¤ì¤Þ¤¹¡£

              diff --git a/lang/ja/help/attendance/mods.html b/lang/ja/help/attendance/mods.html index ab0c9ec6e97..d56929cc66e 100644 --- a/lang/ja/help/attendance/mods.html +++ b/lang/ja/help/attendance/mods.html @@ -1,4 +1,5 @@ -

               ½ÐÀÊ

              -
                -

                ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ç¤Ï¡¢¤½¤ì¤¾¤ì¤Î»²²Ã¼Ô¤Î¸½ºß¤Þ¤¿¤Ï¥ª¥ó¥é¥¤¥ó¥¯¥é¥¹¤Ç¤Î½ÐÀʤòµ­Ï¿¤·¤Þ¤¹¡£ ½ÐÀʤϡ¢¥³¡¼¥¹Æâ¤Ç¶µ»Õ¤Ë¤è¤ê¼êư¤Çµ­Ï¿¤µ¤ì¤¿¤ê¡¢»²²Ã¼Ô¤Î½ÐÀÊÆü24»þ´Ö¤Î³èư¤ò¸µ¤Ë¼«Æ°Åª¤Ëµ­Ï¿¤µ¤ì¤Þ¤¹¡£

                -
              +

               ½ÐÀÊ

              +
                +

                ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ç¤Ï¡¢ÆÃÄꥤ¥Ù¥ó¥È¤Ø¤Î»²²Ã¼Ô¤Î½ÐÀʤòµ­Ï¿¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +

                +
              \ No newline at end of file diff --git a/lang/ja/help/book/index.html b/lang/ja/help/book/index.html index 57e53da3d3a..b36ad2a3eb4 100644 --- a/lang/ja/help/book/index.html +++ b/lang/ja/help/book/index.html @@ -1,10 +1,10 @@

              Book module

              diff --git a/lang/ja/help/book/mods.html b/lang/ja/help/book/mods.html index 1faaeb38f58..ad6145b15a0 100644 --- a/lang/ja/help/book/mods.html +++ b/lang/ja/help/book/mods.html @@ -1,4 +1,4 @@ -

               ¥Ö¥Ã¥¯

              +

               ¥Ö¥Ã¥¯

                ¥Ö¥Ã¥¯¤È¤Ï¡¢Ê£¿ô¤Î¥Ú¡¼¥¸¤«¤é¤Ê¤ë¶µºà¤Ç¤¹¡£

              diff --git a/lang/ja/help/chat/chatting.html b/lang/ja/help/chat/chatting.html index aaf9d8a2821..b01871c2b53 100644 --- a/lang/ja/help/chat/chatting.html +++ b/lang/ja/help/chat/chatting.html @@ -1,20 +1,20 @@ -

              ¥Á¥ã¥Ã¥È¤Î»È¤¤Êý

              +

              ¥Á¥ã¥Ã¥È¤ò»È¤¦

              ¥Á¥ã¥Ã¥È¥â¥¸¥å¡¼¥ë¤Ë¤Ï¥Á¥ã¥Ã¥È¤ò¼ã´³²÷Ŭ¤Ë¤¹¤ë¤¿¤á¤Îµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£

              ¥¹¥Þ¥¤¥ê¡¼
              -
              Moodle¤Î¤É¤³¤Ç¤âÆþÎϤǤ­¤ë¾Ð´é ( ´¶¾ð¥¢¥¤¥³¥ó ) ¤Ï¡¢¤³¤³¤Ç¤âÆþÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¡¢Àµ¤·¤¯É½¼¨¤µ¤ì¤Þ¤¹¡£Î㤨¤Ð¡¢ :-) = ¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
              +
              Moodle¤Î¤É¤³¤Ç¤âÆþÎϽÐÍè¤ë¾Ð´é (´¶¾ð¥¢¥¤¥³¥ó) ¤Ï¡¢¤³¤³¤Ç¤âÆþÎϤ¹¤ë¤³¤È¤¬½ÐÍè¡¢Àµ¤·¤¯É½¼¨¤µ¤ì¤Þ¤¹¡£Î㤨¤Ð¡¢ :-) = ¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
              ¥ê¥ó¥¯
              ¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥¢¥É¥ì¥¹¤Ï¼«Æ°Åª¤Ë¥ê¥ó¥¯¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£
              ´¶¾ð
              -
              ¹Ô¤ò"/me" ¤Þ¤¿¤Ï ":" ¤Ç»Ï¤á¤ë¤³¤È¤Ç´¶¾ð¤òɽ¸½¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð¡¢¤¢¤Ê¤¿¤Î̾Á°¤¬Kim¤Î¾ì¹ç¡¢":laughs!" ¤Þ¤¿¤Ï "/me laughs!"¤ÈÆþÎϤ¹¤ë¤³¤È¤Ç¡¢¡ÖKim¤¬¾Ð¤Ã¤Æ¤¤¤ë!¡×¾õÂÖ¤òÁ´°÷¤¬¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
              +
              ¹Ô¤ò"/me" ¤Þ¤¿¤Ï ":" ¤Ç»Ï¤á¤ë¤³¤È¤Ç´¶¾ð¤òɽ¸½½ÐÍè¤Þ¤¹¡£Î㤨¤Ð¡¢¤¢¤Ê¤¿¤Î̾Á°¤¬Kim¤Î¾ì¹ç¡¢":laughs!" ¤Þ¤¿¤Ï "/me laughs!"¤ÈÆþÎϤ¹¤ë¤³¤È¤Ç¡¢"Kim¤¬¾Ð¤Ã¤Æ¤¤¤ë!"¾õÂÖ¤òÁ´°÷¤¬¸«¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
              ¥Ó¡¼¥×
              -
              ̾Á°¤ÎÎ٤ˤ¢¤ë¡Ö¥Ó¡¼¥×¡×¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢Â¾¤Î¿Í¤Ë¥µ¥¦¥ó¥É¤òÁ÷¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Öbeep all¡×¤ÈÆþÎϤ¹¤ë¤³¤È¤Ç¡¢¥Á¥ã¥Ã¥ÈÃæ¤ÎÁ´°÷¤Ë°ìÀƤ˥ӡ¼¥×¤Ç¤­¤ëÊØÍø¤Êµ¡Ç½¤â¤¢¤ê¤Þ¤¹¡£
              +
              ̾Á°¤ÎÎ٤ˤ¢¤ë"¥Ó¡¼¥×"¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¾¤Î¿Í¤Ë¥µ¥¦¥ó¥É¤òÁ÷¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£"beep all"¤ÈÆþÎϤ¹¤ë¤³¤È¤Ç¡¢¥Á¥ã¥Ã¥ÈÃæ¤ÎÁ´°÷¤Ë°ìÀƤ˥ӡ¼¥×¤¹¤ë¤³¤È¤¬½ÐÍè¤ëÊØÍø¤Êµ¡Ç½¤â¤¢¤ê¤Þ¤¹¡£
              HTML
              -
              ¤¢¤Ê¤¿¤¬HTML¥³¡¼¥É¤òÃΤäƤ¤¤ë¤Î¤Ç¤·¤¿¤é¡¢¥¤¥á¡¼¥¸¤òÁÞÆþ¤·¤¿¤ê¡¢²»¤òÌĤ餷¤¿¤ê¡¢¿§¤ä¥µ¥¤¥º¤Î°Û¤Ê¤ë¥Æ¥­¥¹¥È¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
              -
              \ No newline at end of file +
              HTML¥³¡¼¥É¤ò¤´Â¸ÃΤǤ·¤¿¤é¡¢²èÁü¤òÁÞÆþ¤·¤¿¤ê¡¢²»¤òÌĤ餷¤¿¤ê¡¢¿§¤ä¥µ¥¤¥º¤Î°Û¤Ê¤ë¥Æ¥­¥¹¥È¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
              + diff --git a/lang/ja/help/chat/index.html b/lang/ja/help/chat/index.html index bbf3dfb535a..75319daeb76 100644 --- a/lang/ja/help/chat/index.html +++ b/lang/ja/help/chat/index.html @@ -1,4 +1,4 @@

              ¥Á¥ã¥Ã¥È¥â¥¸¥å¡¼¥ë

              \ No newline at end of file +
            • ¥Á¥ã¥Ã¥È¤ò»È¤¦ +
            diff --git a/lang/ja/help/chat/mods.html b/lang/ja/help/chat/mods.html index 09ed7987038..e50be3c48b1 100644 --- a/lang/ja/help/chat/mods.html +++ b/lang/ja/help/chat/mods.html @@ -1,4 +1,4 @@ -

            ¥Á¥ã¥Ã¥È

            -
            -¥Á¥ã¥Ã¥È¥â¥¸¥å¡¼¥ë¤Ç¤Ï¡¢»²²Ã¼Ô¤¬¥¦¥§¥Ö¤òÄ̤·¤Æ¥ê¥¢¥ë¥¿¥¤¥à¤ËƱ»þ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï¡¢¤ª¸ß¤¤¤Î°Û¤Ê¤ëÍý²ò¤òÆÀ¤ë¤³¤È¡¢¤ª¤è¤Ó¥È¥Ô¥Ã¥¯¤òµÄÏÀ¤¹¤ë¤³¤È¤ËÍ­ÍѤǤ¹¡£¥Á¥ã¥Ã¥È¥ë¡¼¥à¤Î»ÈÍÑÊýË¡¤ÏÈ󯱴ü¤Î¥Õ¥©¡¼¥é¥à¤ÈÁ´¤¯°Û¤Ê¤ê¤Þ¤¹¡£¥Á¥ã¥Ã¥È¥â¥¸¥å¡¼¥ë¤Ë¤Ï¥Á¥ã¥Ã¥È¤Î´ÉÍý¡¢¤ª¤è¤Ó¥ì¥Ó¥å¡¼¤Î¤¿¤á¤Î¿¤¯¤Îµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£ -
            \ No newline at end of file +

             ¥Á¥ã¥Ã¥È

            +
              +

              ¥Á¥ã¥Ã¥È¥â¥¸¥å¡¼¥ë¤Ç¤Ï»²²Ã¼Ô¤¬¥¦¥§¥Ö¤òÄ̤·¤Æ¥ê¥¢¥ë¥¿¥¤¥à¤ËƱ»þŪ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤ì¤Ï¤ª¸ß¤¤¤Î°Û¤Ê¤ëÍý²ò¤òÆÀ¤ë¤³¤ÈµÚ¤Ó¥È¥Ô¥Ã¥¯¤òµÄÏÀ¤¹¤ë¤³¤È¤ËÍ­ÍѤǤ¹¡£¥Á¥ã¥Ã¥È¥ë¡¼¥à¤ò»ÈÍѤ¹¤ëÊýË¡¤ÏÈ󯱴ü¤Î¥Õ¥©¡¼¥é¥à¤ÈÁ´¤¯°Û¤Ê¤ê¤Þ¤¹¡£¥Á¥ã¥Ã¥È¥â¥¸¥å¡¼¥ë¤Ë¤Ï¥Á¥ã¥Ã¥È¤Î´ÉÍýµÚ¤Ó¥ì¥Ó¥å¡¼¤Î°Ù¤Î¿¤¯¤Îµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£

              +
            diff --git a/lang/ja/help/choice/index.html b/lang/ja/help/choice/index.html index e2287ea0a4d..0fef422147d 100644 --- a/lang/ja/help/choice/index.html +++ b/lang/ja/help/choice/index.html @@ -1,8 +1,7 @@ -

            Åêɼ

            +

            ÁªÂò

            \ No newline at end of file +
          diff --git a/lang/ja/help/choice/limit.html b/lang/ja/help/choice/limit.html deleted file mode 100644 index 96b485adfc0..00000000000 --- a/lang/ja/help/choice/limit.html +++ /dev/null @@ -1,7 +0,0 @@ -

          ÅêɼÀ©¸Â

          - -

          ¤³¤³¤Ç¤Ï»²²Ã¼Ô¤¬Åêɼ¤Ç¤­¤ë²ó¿ô¤ò»ØÄꤷ¤Þ¤¹¡£

          - -

          ¤³¤ÎÀ©¸Â¤ò¹Ô¤¦¤Ë¤Ï¡¢¡ÖÅêɼ²Äǽ²ó¿ô¤òÀ©¸Â¤¹¤ë¡×¤ò¡ÖYes¡×¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

          - -

          Ãͤò¥¼¥í¤Ë¤¹¤ë¤È¡¢Ã¯¤â¤½¤ÎÁªÂò»è¤òÁª¤Ö¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£

          \ No newline at end of file diff --git a/lang/ja/help/choice/mods.html b/lang/ja/help/choice/mods.html index aa96409572f..02f1147b22b 100644 --- a/lang/ja/help/choice/mods.html +++ b/lang/ja/help/choice/mods.html @@ -1,4 +1,6 @@ -

          Åêɼ

          -
          -

          Åêɼ¤Ï¤È¤Æ¤â´Êñ¤Ê³èư¤Ç¤¹ - ¶µ»Õ¤¬¼ÁÌä¤ò¹Ô¤¤¡¢¤½¤ì¤ËÂФ¹¤ëÊ£¿ô¤ÎÁªÂò»è¤òÄêµÁ¤·¤Þ¤¹¡£¤³¤ì¤Ï¥È¥Ô¥Ã¥¯¤ËÂФ¹¤ë¹Í¤¨¤ò»É·ã¤¹¤ë¤¿¤á¤ä¡¢¥³¡¼¥¹¤ÎÊý¸þÉÕ¤±¤ò¹Ô¤¦¤¿¤á¤ËÅêɼ¤·¤¿¤ê¡¢¥ê¥µ¡¼¥Á¥³¥ó¥»¥ó¥È¤ò½¸¤á¤ë¾ì¹ç¤ËÍ­ÍѤǤ¹¡£

          -
          \ No newline at end of file +

           ÁªÂò

          +
            +

            ÁªÂò¤Ï¤È¤Æ¤â´Êñ¤Ê³èư¤Ç¤¹ - ¶µ»Õ¤¬¼ÁÌä¤ò¹Ô¤¤¡¢¤½¤ì¤ËÂФ¹¤ëÊ£¿ô¤ÎÊÖÅú¤òÄêµÁ¤·¤Þ¤¹¡£ +¤³¤ì¤Ï¥È¥Ô¥Ã¥¯¤ËÂФ¹¤ë¹Í¤¨¤ò»É·ã¤¹¤ë°Ù¤ä¡¢¥³¡¼¥¹¤ÎÊý¸þÉÕ¤±¤ò¹Ô¤¦¤¿¤á¤ËÅêɼ¤·¤¿¤ê¡¢ +¡¢¥ê¥µ¡¼¥Á¥³¥ó¥»¥ó¥È¤ò½¸¤á¤ë¾ì¹ç¤ËÍ­ÍѤǤ¹¡£

            +
          diff --git a/lang/ja/help/choice/options.html b/lang/ja/help/choice/options.html index c8d408015cc..df3e71156f6 100644 --- a/lang/ja/help/choice/options.html +++ b/lang/ja/help/choice/options.html @@ -1,5 +1,6 @@ -

          ÁªÂò»è

          +

          ÁªÂò¥ª¥×¥·¥ç¥ó

          -

          ¤³¤³¤Ç¤Ï¡¢»²²Ã¼Ô¤¬ÁªÂò¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¹àÌܤòÀßÄꤷ¤Þ¤¹¡£ +

          ¤³¤³¤Ç¤Ï¡¢»²²Ã¼Ô¤¬ÁªÂò¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¹àÌܤòÀßÄꤷ¤Þ¤¹¡£ + +

          ¤É¤Î¹àÌܤˤǤâÆþÎϤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£6¹àÌÜÁ´ÉôɬÍפǤʤ¤¾ì¹ç¤Ï¡¢¶õÇò¤Î¤Þ¤Þ¤Ç¤â·ë¹½¤Ç¤¹¡£ -

          ¤É¤Î¹àÌܤˤǤâÆþÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£6¹àÌÜÁ´ÉôɬÍפǤʤ¤¾ì¹ç¤Ï¡¢¶õÇò¤Î¤Þ¤Þ¤Ç¤â·ë¹½¤Ç¤¹¡£ diff --git a/lang/ja/help/choice/timerestrict.html b/lang/ja/help/choice/timerestrict.html index 5dc3d4823ba..6eafbd3a957 100644 --- a/lang/ja/help/choice/timerestrict.html +++ b/lang/ja/help/choice/timerestrict.html @@ -1,7 +1,7 @@ -

          Åêɼ´ü´Ö¤òÀ©¸Â¤¹¤ë

          +

          »þ´ÖÀ©¸Â

          -

          ¤³¤³¤Ç¤Ï¡¢»²²Ã¼Ô¤¬Åêɼ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë´ü´Ö¤òÀßÄꤷ¤Þ¤¹¡£

          +

          ¤³¤³¤Ç¤Ï¡¢»þ´ÖÏȤòÀßÄꤷ¤Æ¡¢¤É¤Î»²²Ã¼Ô¤¬¤½¤Î»þ´ÖÂÓ¤ËÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤«¤òÀßÄꤷ¤Þ¤¹¡£

          ½ªÎ»Æü»þ¤ËÀ©¸Â¤òÀߤ±¤¿¤¯¤Ê¤¤¾ì¹ç¤Ï¡¢½ªÎ»Æü»þ¤ò±ó¤¤Ì¤Íè¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£

          -

          ¤³¤ÎÀßÄ꤬ɬÍפʤ¤¾ì¹ç¤Ï¡¢¥Á¥§¥Ã¥¯¤ò³°¤·¤Æ¤¯¤À¤µ¤¤¡£

          \ No newline at end of file +

          ¤³¤ÎÀßÄ꤬ɬÍפʤ¤¾ì¹ç¤Ï¡¢¥Á¥§¥Ã¥¯¤ò³°¤·¤Æ¤¯¤À¤µ¤¤¡£

          diff --git a/lang/ja/help/cookies.html b/lang/ja/help/cookies.html index c3e97c96285..74f996c29a3 100644 --- a/lang/ja/help/cookies.html +++ b/lang/ja/help/cookies.html @@ -2,6 +2,9 @@

          ¤³¤Î¥µ¥¤¥È¤Ç¤Ï2¼ïÎà¤Î¥¯¥Ã¥­¡¼¤¬ÍѤµ¤ì¤Þ¤¹¡£

          -

          ½ÅÍפʥ¯¥Ã¥­¡¼¤Ï¥»¥Ã¥·¥ç¥ó¥¯¥Ã¥­¡¼¤Ç¡¢Ä̾ïMoodleSession¤È¸Æ¤Ð¤ì¤Þ¤¹¡£·Ñ³Ū¤Ë¥í¥°¥¤¥ó¤·¤Æ³Æ¥Ú¡¼¥¸¤Ë°Üư¤¹¤ë¤¿¤á¤Ë¥Ö¥é¥¦¥¶¤ò¥¯¥Ã¥­¡¼ÍøÍѲĤˤ·¤Æ¤¯¤À¤µ¤¤¡£ ¥í¥°¥¢¥¦¥È¤Þ¤¿¤Ï¥Ö¥é¥¦¥¶¤òÊĤ¸¤¿»þ¤Ë¡¢¥Ö¥é¥¦¥¶¤È¥µ¡¼¥Ð¤Î¥¯¥Ã¥­¡¼¤ÏÇË´þ¤µ¤ì¤Þ¤¹¡£

          +

          ½ÅÍפʥ¯¥Ã¥­¡¼¤Ï¥»¥Ã¥·¥ç¥ó¥¯¥Ã¥­¡¼¤Ç¡¢Ä̾ïMoodleSession¤È¸Æ¤Ð¤ì¤Þ¤¹¡£·Ñ³Ū¤Ë¥í¥°¥¤¥ó¤·¤Æ³Æ¥Ú¡¼¥¸¤Ë°Üư¤¹¤ë¤¿¤á¤Ë +¥Ö¥é¥¦¥¶¤ò¥¯¥Ã¥­¡¼ÍøÍѲĤˤ·¤Æ¤¯¤À¤µ¤¤¡£ ¥í¥°¥¢¥¦¥È¤Þ¤¿¤Ï¥Ö¥é¥¦¥¶¤òÊĤ¸¤¿¾ì¹ç¡¢¥¯¥Ã¥­¡¼¤ÏÇË´þ¤µ¤ì¤Þ¤¹(¥Ö¥é¥¦¥¶¤È¥µ¡¼¥Ð)¡£

          + +

          ¤â¤¦°ì¤Ä¤Î¥¯¥Ã¥­¡¼¤Ï½ã¿è¤ËÊØµ¹Åª¤ÊÍýͳ¤Ç»ÈÍѤµ¤ì¡¢Ä̾ïMOODLEID¤È¸Æ¤Ð¤ì¤Þ¤¹¡£¥æ¡¼¥¶Ì¾¤ò¥Ö¥é¥¦¥¶¤Ë²±¤¨¤µ¤»¤ë°Ù¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢¥µ¥¤¥È¤ËÌá¤Ã¤ÆÍ褿¤È¤­¤Ë¥í¥°¥¤¥ó¥Ú¡¼¥¸¤Ë¥æ¡¼¥¶Ì¾¤¬½é¤á¤«¤éÆþÎϤµ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£¤³¤Î¥¯¥Ã¥­¡¼¤Ï»ÈÍѤòÃæ»ß¤·¤Æ¤â°ÂÁ´¤Ç¤¹ - ¥í¥°¥¤¥ó»þ¤Ë¥æ¡¼¥¶Ì¾¤òËè²óºÆÆþÎϤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

          -

          ¤â¤¦1¤Ä¤Î¥¯¥Ã¥­¡¼¤Ï½ã¿è¤ËÊØµ¹Åª¤ÊÍýͳ¤Ç»ÈÍѤµ¤ì¡¢Ä̾ïMOODLEID¤È¸Æ¤Ð¤ì¤Þ¤¹¡£¤³¤Î¥¯¥Ã¥­¡¼¤Ï¥æ¡¼¥¶Ì¾¤ò¥Ö¥é¥¦¥¶¤Ë²±¤¨¤µ¤»¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥µ¥¤¥È¤ËÌá¤Ã¤ÆÍ褿¤È¤­¤Ë¥í¥°¥¤¥ó¥Ú¡¼¥¸¤Ë¥æ¡¼¥¶Ì¾¤¬½é¤á¤«¤éÆþÎϤµ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£¤³¤Î¥¯¥Ã¥­¡¼¤ÏµñÈݤ·¤Æ¤â°ÂÁ´¤Ç¤¹ - ¥í¥°¥¤¥ó»þ¤Ë¥æ¡¼¥¶Ì¾¤òËè²óºÆÆþÎϤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

          \ No newline at end of file diff --git a/lang/ja/help/courseavailability.html b/lang/ja/help/courseavailability.html index f4528ea9eb9..414cd715393 100644 --- a/lang/ja/help/courseavailability.html +++ b/lang/ja/help/courseavailability.html @@ -1,7 +1,7 @@

          ¥³¡¼¥¹ÍøÍÑ

          -

          ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï¥³¡¼¥¹¤ò´°Á´¤Ë¡Ö±£¤¹¡×¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          +

          ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï¥³¡¼¥¹¤ò´°Á´¤Ë¡Ö±£¤¹¡×¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

          -

          ¥³¡¼¥¹¤Î¶µ»Õ¤ä´ÉÍý¼Ô¤ò½ü¤¤¤Æ¡¢±£¤µ¤ì¤¿¥³¡¼¥¹¤Ï¥³¡¼¥¹¥ê¥¹¥È¤Ëɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£

          +

          ¥³¡¼¥¹¤ò±£¤·¤¿¾ì¹ç¡¢¥³¡¼¥¹¤Î¶µ»Õ¤ä´ÉÍý¼Ô¤ò½ü¤¤¤Æ¡¢Á´¤Æ¤Î¥³¡¼¥¹¥ê¥¹¥È¤Ë±£¤µ¤ì¤¿¥³¡¼¥¹¤¬É½¼¨¤µ¤ì¤Þ¤»¤ó¡£

          -

          ³ØÀ¸¤¬Ä¾ÀÜURL¤ò»ØÄꤷ¤Æ¥³¡¼¥¹¤Ë¥¢¥¯¥»¥¹¤·¤Æ¤â¡¢Ãæ¤ËÆþ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£

          \ No newline at end of file +

          ³ØÀ¸¤¬Ä¾ÀÜURL¤ò»ØÄꤷ¤Æ¥³¡¼¥¹¤Ë¥¢¥¯¥»¥¹¤·¤Æ¤â¡¢Ãæ¤ËÆþ¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¡£

          diff --git a/lang/ja/help/coursecategory.html b/lang/ja/help/coursecategory.html index 2c75fb6dec3..3d2e7a2f1ae 100644 --- a/lang/ja/help/coursecategory.html +++ b/lang/ja/help/coursecategory.html @@ -1,7 +1,7 @@ -

          ¥³¡¼¥¹¥«¥Æ¥´¥ê

          +

          ¥³¡¼¥¹¥«¥Æ¥´¥ê

          -

          Moodle´ÉÍý¼Ô¤¬¤¤¤¯¤Ä¤«¤Î¥³¡¼¥¹¥«¥Æ¥´¥ê¤òÀßÄꤷ¤Þ¤¹¡£

          +

          Moodle´ÉÍý¼Ô¤¬¤¤¤¯¤Ä¤«¤Î¥³¡¼¥¹¥«¥Æ¥´¥ê¤òÀßÄꤷ¤Þ¤¹¡£ -

          Î㤨¤Ð¡¢¡Ö²Ê³Ø¡×¡¢¡Ö¿Íʸ³Ø¡×¡¢¡Ö¸ø½°±ÒÀ¸³Ø¡×Åù¤Ç¤¹¡£

          +

          Î㤨¤Ð¡¢¡Ö²Ê³Ø¡×¡¢¡Ö¿Íʸ³Ø¡×¡¢¡Ö¸ø½°±ÒÀ¸³Ø¡×Åù¤Ç¤¹¡£ -

          ¤¢¤Ê¤¿¤Ë°ìÈÖÅö¤Æ¤Ï¤Þ¤ë¥³¡¼¥¹¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤ÇÁª¤ó¤À¤â¤Î¤Ï¥³¡¼¥¹¥ê¥¹¥È¤Ëɽ¼¨¤µ¤ì¡¢³ØÀ¸¤¬¤¢¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤ò¸«¤Ä¤±¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£

          \ No newline at end of file +

          ¤¢¤Ê¤¿¤ÎÀì¹¶¤Ë°ìÈÖÅö¤Æ¤Ï¤Þ¤ë¤â¤Î¤òÁª¤ó¤Ç¤¯¤À¤µ¤¤¡£¤³¤³¤ÇÁª¤ó¤À¤â¤Î¤Ï¥³¡¼¥¹¥ê¥¹¥È¤Ëɽ¼¨¤µ¤ì¡¢³ØÀ¸¤¬¥³¡¼¥¹¤ò¸«¤Ä¤±¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£ diff --git a/lang/ja/help/courseformats.html b/lang/ja/help/courseformats.html index ad32cb77e3c..2f3daa1bb0a 100644 --- a/lang/ja/help/courseformats.html +++ b/lang/ja/help/courseformats.html @@ -1,17 +1,17 @@ -

          Moodle¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È

          +

          Moodle¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È

          -

          ¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È

          -
            +

            ¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È

            +
              ¥³¡¼¥¹¤Ï³«»ÏÆü¤È½ªÎ»Æü¤¬ÌÀ³Î¤Ê½µ¤Îñ°Ì¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£³Æ½µ¤Ï³èư¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ -Î㤨¤ÐÆü»ïÅù¤Ï¡¢2½µ´Ö¤ÎÄó½Ð´ü¸Â¤¬½ª¤ï¤Ã¤¿¸å¤Ï¡ÖÊÔ½¸ÉÔ²Äǽ¾õÂ֡פˤʤê¤Þ¤¹¡£ -
            +Æü»ïÅù¤ÏÎ㤨¤Ð2½µ´Ö¤ÎÄó½Ð´ü¸Â¤¬½ª¤ï¤Ã¤¿¸å¤Ï¡ÖÊÔ½¸ÉÔ²Äǽ¾õÂ֡פˤʤê¤Þ¤¹¡£ +
          -

          ¥È¥Ô¥Ã¥¯¥Õ¥©¡¼¥Þ¥Ã¥È

          -
            -¤½¤ì¤¾¤ì¤Î¡Ö½µ¡×¤¬¥È¥Ô¥Ã¥¯¤È¸Æ¤Ð¤ì¤ë°Ê³°¤Ï¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë»÷¤Æ¤¤¤Þ¤¹¡£¡Ö¥È¥Ô¥Ã¥¯¡×¤Ï´ü¸Â¤ËÀ©Ì󤵤ì¤Þ¤»¤ó¡£ÆüÉÕ¤òÀßÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ -
          +

          ¥È¥Ô¥Ã¥¯¥Õ¥©¡¼¥Þ¥Ã¥È

          +
            +¤½¤ì¤¾¤ì¤Î¡Ö½µ¡×¤¬¡¢¥È¥Ô¥Ã¥¯¤È¸Æ¤Ð¤ì¤ë°Ê³°¤Ï¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë»÷¤Æ¤¤¤Þ¤¹¡£¡Ö¥È¥Ô¥Ã¥¯¡×¤Ï´ü¸Â¤ËÀ©Ì󤵤ì¤Þ¤»¤ó¡£ÆüÉÕ¤òÀßÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +
          -

          ¥½¡¼¥·¥ã¥ë¥Õ¥©¡¼¥Þ¥Ã¥È

          -
            -¤³¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢£±¤Ä¤Î¥½¡¼¥·¥ã¥ë¥Õ¥©¡¼¥é¥à¤òÃæ¿´¤È¤·¤Æ¡¢¥á¥¤¥ó¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤ì¤ë¥Õ¥©¡¼¥é¥à¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢¤è¤ê¼«Í³¤Ê¹½À®¤ò¹Ô¤¤¤¿¤¤¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£¤³¤ì¤é¤Ï¥³¡¼¥¹¤È°Û¤Ê¤ê¤Þ¤¹¡£Î㤨¤Ð¡¢³Ø²Ê¤Î¤ªÃΤ餻¥Ü¡¼¥É¤Î¤è¤¦¤Ê»È¤¤Êý¤¬¤Ç¤­¤Þ¤¹¡£ -
          \ No newline at end of file +

          ¥½¡¼¥·¥ã¥ë¥Õ¥©¡¼¥Þ¥Ã¥È

          +
            +¤³¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢£±¤Ä¤Î°ìÈÌ¥Õ¥©¡¼¥é¥à¤òÃæ¿´¤È¤·¤Æ¥á¥¤¥ó¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤ì¤ë¥Õ¥©¡¼¥é¥à¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£¤è¤ê¼«Í³¤Ê¹½À®¤ò˾¤à¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£¤³¤ì¤é¤Ï¥³¡¼¥¹¤Ç¤â¤¢¤ê¤Þ¤»¤ó¡£Î㤨¤Ð¡¢³Ø²Ê¤Î¤ªÃΤ餻¥Ü¡¼¥É¤Î¤è¤¦¤Ê»È¤¤Êý¤¬½ÐÍè¤Þ¤¹¡£ +
          diff --git a/lang/ja/help/coursefullname.html b/lang/ja/help/coursefullname.html index 11510939852..3ac35314d90 100644 --- a/lang/ja/help/coursefullname.html +++ b/lang/ja/help/coursefullname.html @@ -1,3 +1,8 @@ -

          ¥³¡¼¥¹Ì¾

          +

          ¥³¡¼¥¹Ì¾

          + + + +

          ¥³¡¼¥¹Ì¾¤Ï²èÌ̤ξåÉôµÚ¤Ó¥³¡¼¥¹¥ê¥¹¥È¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£

          + + -

          ¥³¡¼¥¹Ì¾¤Ï²èÌ̤ξåÉô¤ª¤è¤Ó¥³¡¼¥¹¥ê¥¹¥È¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£

          \ No newline at end of file diff --git a/lang/ja/help/coursegrades.html b/lang/ja/help/coursegrades.html index a4fec10e4c2..77631278591 100644 --- a/lang/ja/help/coursegrades.html +++ b/lang/ja/help/coursegrades.html @@ -1,7 +1,8 @@ -

          ɾÄê

          +

          ɾ²Á

          -

          ¿¤¯¤Î³èư¤ÇɾÄê¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          +

          ¿¤¯¤Î³èư¤Çɾ²Á¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

          -

          ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥á¥¤¥ó¥³¡¼¥¹¥Ú¡¼¥¸¤ÇÍøÍѤǤ­¤ëÁ´¤Æ¤ÎɾÄê·ë²Ì¤Ï¡¢É¾ÅÀ¥Ú¡¼¥¸¤Ç±ÜÍ÷¤Ç¤­¤ë¤è¤¦¤ËÀßÄꤵ¤ì¤Þ¤¹¡£

          +

          ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥á¥¤¥ó¥³¡¼¥¹¥Ú¡¼¥¸¤ÇÍøÍѤǤ­¤ëÁ´¤Æ¤Îɾ²Á·ë²Ì¤Ï¡¢É¾²Á¥Ú¡¼¥¸¤Ç±ÜÍ÷²Äǽ¤ËÀßÄꤵ¤ì¤Þ¤¹¡£

          -

          ¶µ»Õ¤¬¥³¡¼¥¹¤ÇɾÄê¤ò¹Ô¤¤¤¿¤¯¤Ê¤¤¾ì¹ç¤ä³ØÀ¸¤«¤éɾÅÀ¤ò±£¤·¤¿¤¤¾ì¹ç¤Ï¡¢¥³¡¼¥¹¥»¥Ã¥Æ¥£¥ó¥°¤ÇÈóɽ¼¨¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï¡¢³ØÀ¸¤ËɾÅÀ¤òɽ¼¨¤·¤Ê¤¯¤¹¤ë¤Î¤ß¤Ç¡¢É¾Äê¤Î»ÈÍѤޤ¿¤ÏÀßÄê¤òÉԲĤˤ¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£

          \ No newline at end of file +

          ¶µ»Õ¤¬¥³¡¼¥¹¤Çɾ²Á¤ò¹Ô¤¤¤¿¤¯¤Ê¤¤¾ì¹ç¤ä³ØÀ¸¤è¤êɾ²Á¤ò±£¤·¤¿¤¤»þ¤Ï¡¢¥³¡¼¥¹¥»¥Ã¥Æ¥£¥ó¥°¤ÇÈóɽ¼¨¤Ë¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +³ØÀ¸¤Ëɾ²Á·ë²Ì¤òɽ¼¨¤·¤Ê¤¯¤¹¤ë¤Î¤ß¤Ç¡¢É¾²Á¤Î»ÈÍÑËô¤ÏÀßÄê¤òÉԲĤˤ¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£

          diff --git a/lang/ja/help/coursehiddensections.html b/lang/ja/help/coursehiddensections.html index 12f213d0a12..9c948380fa8 100644 --- a/lang/ja/help/coursehiddensections.html +++ b/lang/ja/help/coursehiddensections.html @@ -2,6 +2,6 @@

          ¤³¤³¤Ç¤Ï¡¢³ØÀ¸¤Ëɽ¼¨¤µ¤ì¤ë¥³¡¼¥¹¤ò¤É¤Î¤è¤¦¤ËÈóɽ¼¨¤Ë¤¹¤ë¤«»ØÄê¤Ç¤­¤Þ¤¹¡£

          -

          ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢Èóɽ¼¨¤Î¥»¥¯¥·¥ç¥ó¤¬Ê¬¤«¤ë¤è¤¦¤Ë¾®¤µ¤Ê¥Þ¡¼¥¯ ( Àޤꤿ¤¿¤ó¤À·Á¡¢Ä̾ï¤Ï³¥¿§ ) ¤¬É½¼¨¤µ¤ì¤Þ¤¹¤¬¡¢Èóɽ¼¨¤Î³èư¤È¥Æ¥­¥¹¥È¤ò¼ÂºÝ¤Ë¸«¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¥¯¥é¥¹¤¬Ìµ¤¤½µ¤¬ÌÀ³Î¤Ë¤Ê¤ë¤¿¤á¡¢¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¤ÏÆÃ¤ËÊØÍø¤Ç¤¹¡£

          +

          ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢Èóɽ¼¨¤Î¥»¥¯¥·¥ç¥ó¤¬Ê¬¤«¤ë¤è¤¦¤Ë¾®¤µ¤Ê¥Þ¡¼¥¯(Àޤꤿ¤¿¤ó¤À·Á¡¢Ä̾ï¤Ï³¥¿§)¤¬É½¼¨¤µ¤ì¤Þ¤¹¤¬¡¢Èóɽ¼¨¤Î³èư¤È¥Æ¥­¥¹¥È¤ò¼ÂºÝ¤Ë¸«¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¥¯¥é¥¹¤¬Ìµ¤¤½µ¤¬ÌÀ³Î¤Ë¤Ê¤ë¤¿¤á¡¢¥¦¥¤¡¼¥¯¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¤ÏÆÃ¤ËÊØÍø¤Ç¤¹¡£

          -

          ³ØÀ¸¤Ë¥³¡¼¥¹¥»¥¯¥·¥ç¥ó¤¬Èóɽ¼¨¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤µ¤¨Ê¬¤«¤é¤Ê¤¤¤è¤¦¤Ë¡¢´°Á´¤Ë¥³¡¼¥¹¥»¥¯¥·¥ç¥ó¤òÈóɽ¼¨¤Ë¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

          \ No newline at end of file +

          ³ØÀ¸¤Ë¥³¡¼¥¹¥»¥¯¥·¥ç¥ó¤¬Èóɽ¼¨¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤µ¤¨Ê¬¤«¤é¤Ê¤¤¤è¤¦¤Ë¡¢´°Á´¤Ë¥³¡¼¥¹¥»¥¯¥·¥ç¥ó¤òÈóɽ¼¨¤Ë¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

          diff --git a/lang/ja/help/courseidnumber.html b/lang/ja/help/courseidnumber.html index f2dd3c527d4..58b4d4fb5f3 100644 --- a/lang/ja/help/courseidnumber.html +++ b/lang/ja/help/courseidnumber.html @@ -1,3 +1,3 @@ -

          ¥³¡¼¥¹ID¥Ê¥ó¥Ð¡¼

          +

          ¥³¡¼¥¹ID¥Ê¥ó¥Ð¡¼

          -

          ¥³¡¼¥¹¤ÎID¥Ê¥ó¥Ð¡¼¤Ï¡¢³°Éô¤Î¥·¥¹¥Æ¥à¤È¥Þ¥Ã¥Á¥ó¥°¤ò¹Ô¤¦»þ¤Î¤ß»ÈÍѤµ¤ì¡¢MoodleÆâ¤Ëɽ¼¨¤µ¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤³¤Î¥³¡¼¥¹¤Ë´Ø¤ï¤ë¸ø¼°¤Î¥³¡¼¥É¤¬¤¢¤ë¾ì¹ç¤Ï¤³¤³¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¤½¤ì°Ê³°¤Ï¶õÇò¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

          \ No newline at end of file +

          ¥³¡¼¥¹¤ÎID¥Ê¥ó¥Ð¡¼¤Ï¡¢³°Éô¤Î¥·¥¹¥Æ¥à¤È¥Þ¥Ã¥Á¥ó¥°¤ò¹Ô¤¦»þ¤Î¤ß¤Ë»ÈÍѤµ¤ì¡¢MoodleÆâ¤Ëɽ¼¨¤µ¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤³¤Î¥³¡¼¥¹¤Ë´Ø¤ï¤ë¸ø¼°¤Î¥³¡¼¥É¤¬¤¢¤ë¾ì¹ç¤Ï¤³¤³¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¤½¤ì°Ê³°¤Ï¶õÇò¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

          diff --git a/lang/ja/help/coursenewsitems.html b/lang/ja/help/coursenewsitems.html index b553458e2eb..a0d1752004c 100644 --- a/lang/ja/help/coursenewsitems.html +++ b/lang/ja/help/coursenewsitems.html @@ -1,7 +1,7 @@ -

          ¥³¡¼¥¹¥Ë¥å¡¼¥¹¹àÌÜ

          +

          ¥³¡¼¥¹¥Ë¥å¡¼¥¹¹àÌÜ

          -

          ¡Ö¥Ë¥å¡¼¥¹¡×¤È¸Æ¤Ð¤ì¤ëÆÃÊ̤ʥե©¡¼¥é¥à¤Ï¡Ö¥¦¥¤¡¼¥¯¥ê¡¼¡×¤ª¤è¤Ó¡Ö¥È¥Ô¥Ã¥¯¡×¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï³ØÀ¸¤ËÂФ¹¤ëÏ¢Íí¤ò·ÇºÜ¤¹¤ë¤Î¤ËºÇŬ¤Ê¾ì½ê¤Ç¤¹¡£( ½é´üÃͤǤÏÁ´³ØÀ¸¤¬¤³¤Î¥Õ¥©¡¼¥é¥à¤Ë¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤µ¤ì¡¢Ï¢Íí¤¬¥á¡¼¥ë¤ÇÄÌÃΤµ¤ì¤Þ¤¹¡£ )

          +

          ¡Ö¥Ë¥å¡¼¥¹¡×¤È¸Æ¤Ð¤ì¤ëÆÃÊ̤ʥե©¡¼¥é¥à¤Ï¡Ö¥¦¥¤¡¼¥¯¥ê¡¼¡×µÚ¤Ó¡Ö¥È¥Ô¥Ã¥¯¡×¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï³ØÀ¸¤ËÂФ¹¤ëÏ¢Íí¤ò·ÇºÜ¤¹¤ë¤Î¤ËÎɤ¤¾ì½ê¤Ç¤¹¡£(½é´üÃͤǤÏÁ´³ØÀ¸¤¬¤³¤Î¥Õ¥©¡¼¥é¥à¤ËÅÐÏ¿¤µ¤ì¡¢Ï¢Íí¤Ï¥á¡¼¥ë¤ÇÄÌÃΤµ¤ì¤Þ¤¹¡£) -

          ¤³¤ÎÀßÄê¤Ç¤Ï¡¢¤¢¤Ê¤¿¤Î¥³¡¼¥¹¥Ú¡¼¥¸±¦Â¦¤Ë¤¢¤ë¥Ü¥Ã¥¯¥¹¤Ë²¿·ï¤ÎºÇ¿·¹àÌܤò·ÇºÜ¤¹¤ë¤«·èÄꤷ¤Þ¤¹¡£

          +

          ¤³¤ÎÀßÄê¤Ç¤Ï¡¢¤¢¤Ê¤¿¤Î¥³¡¼¥¹¥Ú¡¼¥¸±¦Â¦¤Ë¤¢¤ë¥Ü¥Ã¥¯¥¹¤Ë²¿·ï¤ÎºÇ¿·¹àÌܤò·ÇºÜ¤¹¤ë¤«¤ò·èÄꤷ¤Þ¤¹¡£ -

          ¡Ö0·ï¤Î¥Ë¥å¡¼¥¹¹àÌܤòɽ¼¨¡×¤ÈÀßÄꤷ¤¿¾ì¹ç¡¢¥Ü¥Ã¥¯¥¹¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£

          \ No newline at end of file +

          ¡Ö0·ï¤Î¥Ë¥å¡¼¥¹¹àÌܤòɽ¼¨¡×¤ÈÀßÄꤷ¤¿¾ì¹ç¡¢¥Ü¥Ã¥¯¥¹¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£ diff --git a/lang/ja/help/coursenumsections.html b/lang/ja/help/coursenumsections.html index 25768b2467a..57db224d828 100644 --- a/lang/ja/help/coursenumsections.html +++ b/lang/ja/help/coursenumsections.html @@ -1,9 +1,11 @@ -

          ½µ/¥È¥Ô¥Ã¥¯¤Îɽ¼¨¿ô

          +

          ½µ/¥È¥Ô¥Ã¥¯¤Îɽ¼¨¿ô

          -

          ¤³¤ÎÀßÄê¤Ï¡Ö¥¦¥¤¡¼¥¯¥ê¡¼¡×¤ª¤è¤Ó¡Ö¥È¥Ô¥Ã¥¯¡×¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¤ß¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£

          -

          ¡Ö¥¦¥¤¡¼¥¯¥ê¡¼¡×¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤Ï³«¹ÖÆü¤è¤ê²¿½µ´Ö¥³¡¼¥¹¤¬Â³¤¯¤«¤òÀßÄꤷ¤Þ¤¹¡£

          +

          ¤³¤ÎÀßÄê¤Ï¡Ö¥¦¥¤¡¼¥¯¥ê¡¼¡×µÚ¤Ó¡Ö¥È¥Ô¥Ã¥¯¡×¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¤ß¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ -

          ¡Ö¥È¥Ô¥Ã¥¯¡×¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤Ï¥³¡¼¥¹Ãæ¤Î¥È¥Ô¥Ã¥¯¿ô¤òÀßÄꤷ¤Þ¤¹¡£

          +

          ¡Ö¥¦¥¤¡¼¥¯¥ê¡¼¡×¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤Ï³«¹»Æü¤è¤ê²¿½µ´Ö¥³¡¼¥¹¤¬Â³¤¯¤Î¤«ÀßÄꤷ¤Þ¤¹¡£ -

          ¤³¤ÎÃͤϡ¢Î¾¼Ô¤Î¥³¡¼¥¹¥Ú¡¼¥¸Ãæ¿´¤Ëɽ¼¨¤µ¤ì¤ë¥Ü¥Ã¥¯¥¹¿ô¤Ë´Ø·¸¤·¤Þ¤¹¡£

          \ No newline at end of file + +

          ¡Ö¥È¥Ô¥Ã¥¯¡×¥Õ¥©¡¼¥é¥à¤Ç¤Ï¥³¡¼¥¹Ãæ¤Î¥È¥Ô¥Ã¥¯¿ô¤òÀßÄꤷ¤Þ¤¹¡£ + +

          ¤É¤Á¤é¤È¤â¡¢¥³¡¼¥¹¥Ú¡¼¥¸Ãæ¿´¤Ëɽ¼¨¤µ¤ì¤ë¥Ü¥Ã¥¯¥¹¿ô¤Ë´Ø·¸¤·¤Þ¤¹¡£ diff --git a/lang/ja/help/courserecent.html b/lang/ja/help/courserecent.html index 394920942d0..ff569d30ac4 100644 --- a/lang/ja/help/courserecent.html +++ b/lang/ja/help/courserecent.html @@ -1,10 +1,10 @@ -

          ºÇ¿·¤Î³èư

          +

          ºÇ¿·¤Î³èư

          -

          Moodle¤Ï¡ÖºÇ¿·¤Î³èư¡×¤ò¥³¡¼¥¹¥Û¡¼¥à¥Ú¡¼¥¸¾å¤Ëɽ¼¨¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          +

          Moodle¤Ï¡ÖºÇ¿·¤Î³èư¡×¤ò¥³¡¼¥¹¥Û¡¼¥à¥Ú¡¼¥¸¤Ëɽ¼¨¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ -

          ¤³¤³¤Ç¤Ï¡¢ÍøÍѼԤ¬ºÇ¸å¤Ë¥í¥°¥¤¥ó¤·¤¿¸å¤Ë¹Ô¤ï¤ì¤¿¿·µ¬Åê¹Æ¡¢¿·µ¬¥æ¡¼¥¶ÅÐÏ¿¡¢ -Æü»ï¤ÎºîÀ®Åù¤Î³èư¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

          +

          ¤³¤³¤Ç¤ÏÍøÍѼԤ¬ºÇ¸å¤Ë¥í¥°¥¤¥ó¤·¤Æ¤«¤é¹Ô¤ï¤ì¤¿¿·µ¬Åê¹Æ¡¢¿·µ¬¥æ¡¼¥¶ÅÐÏ¿¡¢ +Æü»ï¤ÎºîÀ®Åù¤Î³èư¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ -

          ¥³¡¼¥¹³èư¤Ë°ÕµÁ¤òÍ¿¤¨¤ë¼ê½õ¤±¤È¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤Îµ¡Ç½¤ò¤ª»È¤¤¤Ë¤Ê¤ë¤³¤È¤ò¶¯¤¯´«¤á¤Þ¤¹¡£¥¯¥é¥¹Á´°÷¤¬²¿¤ò¹Ô¤Ã¤Æ¤¤¤ë¤«¤òÃΤ뤳¤È¤Ë¤è¤ê¡¢¶¦Æ±ºî¶È¤ÎÊ·°Ïµ¤¤òÂ¥¿Ê¤·¤Þ¤¹¡£

          +

          ¥³¡¼¥¹³èư¤Ë°ÕµÁ¤òÍ¿¤¨¤ë¼ê½õ¤±¤È¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤Îµ¡Ç½¤ò¤ª»È¤¤¤Ë¤Ê¤ë¤³¤È¤ò¶¯¤¯´«¤á¤Þ¤¹¡£¥¯¥é¥¹¤Î¤ß¤ó¤Ê¤¬²¿¤ò¹Ô¤Ã¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤Ë¤è¤ê¡¢¶¦Æ±ºî¶È¤ÎÊ·°Ïµ¤¤òÂ¥¿Ê¤·¤Þ¤¹¡£ -

          ¶Ëü¤Ë³ØÀ¸¿ô¤¬Â¿¤«¤Ã¤¿¤ê¡¢¥³¡¼¥¹¤Î»ÈÍÑÉÑÅÙ¤¬¹â¤¤¾ì¹ç¡¢¥³¡¼¥¹¥Ú¡¼¥¸¤Îɽ¼¨Â®ÅÙ¤¬Äã²¼¤·¤Þ¤¹¤Î¤Ç¡¢¤³¤Îµ¡Ç½¤òÄä»ß¤µ¤»¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£

          \ No newline at end of file +

          ¶Ëü¤Ë³ØÀ¸¿ô¤¬Â¿¤«¤Ã¤¿¤ê¥³¡¼¥¹¤¬¥Ï¡¼¥É¤Ë»ÈÍѤµ¤ì¤ë¾ì¹ç¡¢¥³¡¼¥¹¥Ú¡¼¥¸¤Îɽ¼¨Â®ÅÙ¤¬Äã²¼¤·¤Þ¤¹¤Î¤Ç¡¢¤³¤Îµ¡Ç½¤òÄä»ß¤µ¤»¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ diff --git a/lang/ja/help/coursereports.html b/lang/ja/help/coursereports.html index 5b91232070a..274df4d75b8 100644 --- a/lang/ja/help/coursereports.html +++ b/lang/ja/help/coursereports.html @@ -1,9 +1,12 @@

          ³èư¥ì¥Ý¡¼¥È

          -

          ³èư¥ì¥Ý¡¼¥È¤Ï¡¢¸½ºß¤Î¥³¡¼¥¹¤Ë´Ø¤¹¤ë³èưÆâÍÆ¤òɽ¼¨¤·¡¢³Æ»²²Ã¼Ô¤¬ÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤é¤Î¥ì¥Ý¡¼¥È¤Ë¤Ï¡¢»²²Ã¼Ô¤ÎÅê¹ÆÆâÍÆ¤ª¤è¤Ó¾ÜºÙ¤Ê¥¢¥¯¥»¥¹¥í¥°¤â´Þ¤Þ¤ì¤Þ¤¹¡£

          +

          ³èư¥ì¥Ý¡¼¥È¤Ï¸½ºß¤Î¥³¡¼¥¹¤Ë´Ø¤¹¤ë³èưÆâÍÆ¤òɽ¼¨¤·¡¢³Æ»²²Ã¼Ô¤¬ÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +¤³¤ì¤é¤Î¥ì¥Ý¡¼¥È¤Ë¤Ï¡¢»²²Ã¼Ô¤ÎÅê¹ÆÆâÍÆµÚ¤Ó¾ÜºÙ¤Ê¥¢¥¯¥»¥¹¥í¥°¤â´Þ¤Þ¤ì¤Þ¤¹¡£

          -

          ¶µ»Õ¤Ï¡¢³Æ¸Ä¿Í¤Î¥×¥í¥Õ¥£¡¼¥ë¥Ú¡¼¥¸¤Ë¤¢¤ë¥Ü¥¿¥ó¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢¾ï¤Ë¤³¤ì¤é¤Î¥ì¥Ý¡¼¥È¤ò±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          +

          ¶µ»Õ¤Ï¡¢³Æ¸Ä¿Í¤Î¥×¥í¥Õ¥£¡¼¥ë¥Ú¡¼¥¸¤Ë¤¢¤ë¥Ü¥¿¥ó¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢¾ï¤Ë¤³¤ì¤é¤Î¥ì¥Ý¡¼¥È¤ò±ÜÍ÷¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

          -

          ³ØÀ¸¼«¿È¤Î³èư¥ì¥Ý¡¼¥È¤Ø¤Î¥¢¥¯¥»¥¹²ÄÈݤÎÀßÄê¤Ï¡¢¥³¡¼¥¹ÀßÄê¤Ë¤Æ¶µ»Õ¤¬¹Ô¤¤¤Þ¤¹¡£ÆÃÄê¤Î¥³¡¼¥¹¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥ì¥Ý¡¼¥È¤Ï»²²Ã¾õ¶·¤ò³ØÀ¸¤Ë¼¨¤¹Í­¸ú¤Ê¥Ä¡¼¥ë¤È¤Ê¤ê¤Þ¤¹¤¬¡¢Â¾¤Î¥³¡¼¥¹¤Ç¤ÏɬÍפǤϤ¢¤ê¤Þ¤»¤ó¡£

          +

          ³ØÀ¸¼«¿È¤Î³èư¥ì¥Ý¡¼¥È¤Ø¤Î¥¢¥¯¥»¥¹¤Ï¡¢¥³¡¼¥¹ÀßÄê·Ðͳ¤Ç¶µ»Õ¤Ë¥³¥ó¥È¥í¡¼¥ë¤µ¤ì¤Þ¤¹¡£ +ÆÃÄê¤Î¥³¡¼¥¹¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥ì¥Ý¡¼¥È¤Ï»²²Ã¾ðÊó¤ò³ØÀ¸¤Ë¼¨¤¹Í­¸ú¤Ê¥Ä¡¼¥ë¤È¤Ê¤ê¤Þ¤¹¤¬¡¢Â¾¤Î¥³¡¼¥¹¤Ç¤ÏɬÍפǤϤ¢¤ê¤Þ¤»¤ó¡£

          -

          ¤³¤ÎÀßÄê¤òOFF¤Ë¤¹¤ë¤â¤¦1¤Ä¤ÎÍýͳ¤Ï¡¢¥ì¥Ý¡¼¥È¤òÀ¸À®¤¹¤ë»þ¤Ë¥µ¡¼¥Ð¤ËÂФ·¤ÆÉé²Ù¤¬¤«¤«¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£µ¬ÌϤ¬Â礭¤¤¥¯¥é¥¹¡¢¤Þ¤¿¤Ï´ü´Ö¤¬Ä¹¤¤¥¯¥é¥¹¤Ç¤Ï¤³¤ÎÀßÄê¤òOFF¤Ë¤·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£

          \ No newline at end of file +

          ¤³¤ÎÀßÄê¤òOFF¤Ë¤¹¤ë¤â¤¦°ì¤Ä¤ÎÍýͳ¤Ï¡¢¥ì¥Ý¡¼¥È¤òÀ¸À®¤¹¤ë»þ¤Ë¥µ¡¼¥Ð¤ËÂФ·¤ÆÉԲĤ¬¤«¤«¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£ +µ¬ÌϤ¬Â礭¤¤Ëô¤ÏŤ¤¥¯¥é¥¹¤Ç¤Ï¤³¤ÎÀßÄê¤òOFF¤Ë¤·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£

          diff --git a/lang/ja/help/courseshortname.html b/lang/ja/help/courseshortname.html index f7030b6d6b2..219667e43b9 100644 --- a/lang/ja/help/courseshortname.html +++ b/lang/ja/help/courseshortname.html @@ -1,3 +1,6 @@ -

          ¥³¡¼¥¹¾Êά̾

          +

          ¥³¡¼¥¹¾Êά̾

          -

          ¿¤¯¤Î¶µ°éµ¡´Ø¤Ç¤Ï¡¢¥³¡¼¥¹¤ò»²¾È¤¹¤ë¤¿¤á¤ËBP102¤äCOMMSÅù¤Î¾Êά̾(Ⱦ³Ñ±Ñ¿ô»ú)¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤Î¤è¤¦¤Ê¾Êά̾¤¬Ìµ¤¤¾ì¹ç¤Ç¤â¡¢¤³¤³¤ÇȾ³Ñ±Ñ¿ô»ú¤Î¾Êά̾¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤Ï¥á¡¼¥ë¤Î·ï̾Åù¡¢Ä¹¤¤Ì¾¾Î¤¬Å¬ÀڤǤϤʤ¤¾ì½ê¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£

          \ No newline at end of file + +

          ¿¤¯¤Î¶µ°éµ¡´Ø¤Ç¤Ï¡¢¥³¡¼¥¹¤ò»²¾È¤¹¤ë¤¿¤á¤ËBP102¤äCOMMSÅù¤Î¾Êά̾(Ⱦ³Ñ±Ñ¿ô»ú)¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£ + +¤½¤Î¤è¤¦¤Ê¾Êά̾¤¬Ìµ¤¤¾ì¹ç¤Ç¤â¤³¤³¤ÇȾ³Ñ±Ñ¿ô»ú¤Î¾Êά̾¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤Ï¥á¡¼¥ë¤Î·ï̾Åù¡¢Ä¹¤¤Ì¾¾Î¤¬Å¬Åö¤Ç¤Ê¤¤¾ì½ê¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ diff --git a/lang/ja/help/coursestartdate.html b/lang/ja/help/coursestartdate.html index 5171fe2f63e..eb1fbbbf932 100644 --- a/lang/ja/help/coursestartdate.html +++ b/lang/ja/help/coursestartdate.html @@ -1,11 +1,11 @@ -

          ¥³¡¼¥¹³«¹ÖÆü

          +

          ¥³¡¼¥¹³«¹ÖÆü

          -

          ¤¢¤Ê¤¿¤Î¥¿¥¤¥à¥¾¡¼¥ó¤Ç¥³¡¼¥¹¤Î³«¹ÖÆü¤òÀßÄꤷ¤Þ¤¹¡£

          +

          ¤¢¤Ê¤¿¤Î¥¿¥¤¥à¥¾¡¼¥ó¤Ç¥³¡¼¥¹¤Î³«¹ÖÆü¤òÀßÄꤷ¤Þ¤¹¡£ -

          ¡Ö¥¦¥¤¡¼¥¯¥ê¡¼¡×¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï²èÌÌɽ¼¨¤Ë±Æ¶Á¤·¤Þ¤¹¡£Âè1½µ¤Ï¤³¤³¤ÇÀßÄꤵ¤ì¤¿Æü¤è¤ê»Ï¤Þ¤ê¤Þ¤¹¡£

          +

          ¡Ö¥¦¥¤¡¼¥¯¥ê¡¼¡×¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï²èÌÌɽ¼¨¤Ë±Æ¶Á¤·¤Þ¤¹¡£Âè1½µ¤Ï¤³¤³¤ÇÀßÄꤵ¤ì¤¿Æü¤è¤ê»Ï¤Þ¤ê¤Þ¤¹¡£ -

          ¤³¤ÎÀßÄê¤Ï¡Ö°ìÈ̡פä¡Ö¥È¥Ô¥Ã¥¯¡×¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤Ï±Æ¶Á¤·¤Þ¤»¤ó¡£

          +

          ¤³¤ÎÀßÄê¤Ï¡Ö°ìÈ̡פä¡Ö¥È¥Ô¥Ã¥¯¡×¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤Ï±Æ¶Á¤·¤Þ¤»¤ó¡£ -

          ¤·¤«¤·¡¢É½¼¨²Äǽ¤ÊºÇ¤â¸Å¤¤Æü»þ¤È¤·¤Æ¡¢¤³¤ÎÀßÄê¤ò»ÈÍѤ¹¤ë¥í¥°É½¼¨¤Ë´Ø¤·¤Æ¤Ï±Æ¶Á¤·¤Þ¤¹¡£

          +

          ¤·¤«¤·¡¢É½¼¨²Äǽ¤ÊºÇ¤â¸Å¤¤Æü»þ¤È¤·¤Æ¤³¤ÎÀßÄê¤ò»ÈÍѤ¹¤ë¥í¥°¤Îɽ¼¨¤Ë´Ø¤·¤Æ¤Ï±Æ¶Á¤·¤Þ¤¹¡£ -

          ¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤Ë¼ÂºÝ¤Î³«¹ÖÆü¤¬¤¢¤ë¾ì¹ç¤Ï¡¢°ìÈÌŪ¤Ë¤É¤Î¤è¤¦¤Ê¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤ª¤¤¤Æ¤â³«¹ÖÆü¤ÎÀßÄê¤Ï°ÕÌ£¤¬¤¢¤ê¤Þ¤¹¡£

          \ No newline at end of file +

          ¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤¬¼ÂºÝ¤Î³«¹ÖÆü¤ò·è¤á¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢°ìÈÌŪ¤Ë¤É¤Î¤è¤¦¤Ê¥³¡¼¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤ª¤¤¤Æ¤â³«¹ÖÆü¤ÎÀßÄê¤Ï°ÕÌ£¤¬¤¢¤ê¤Þ¤¹¡£ diff --git a/lang/ja/help/courseuploadsize.html b/lang/ja/help/courseuploadsize.html index 67d37f0f0f4..19170a6409e 100644 --- a/lang/ja/help/courseuploadsize.html +++ b/lang/ja/help/courseuploadsize.html @@ -1,5 +1,6 @@ -

          ¥³¡¼¥¹¥¢¥Ã¥×¥í¡¼¥É¥µ¥¤¥º

          +

          ¥³¡¼¥¹¥¢¥Ã¥×¥í¡¼¥É¥µ¥¤¥º

          -

          ¤³¤³¤Ç¤Ï¡¢¥³¡¼¥¹Æâ¤Ç³ØÀ¸¤¬¥¢¥Ã¥×¥í¡¼¥É¤Ç¤­¤ë¥Õ¥¡¥¤¥ë¤ÎºÇÂ祵¥¤¥º¤òÀßÄꤷ¤Þ¤¹¡£¤³¤Î¥µ¥¤¥º¤Ï´ÉÍý¼Ô¤¬¥µ¥¤¥ÈÁ´ÂΤËÂФ·¤ÆÀßÄꤷ¤¿¥µ¥¤¥º¤ËÀ©¸Â¤µ¤ì¤Þ¤¹¡£

          +

          ¤³¤³¤Ç¤Ï¥³¡¼¥¹Æâ¤Ç³ØÀ¸¤¬¥¢¥Ã¥×¥í¡¼¥É¤Ç¤­¤ë¥Õ¥¡¥¤¥ë¤ÎºÇÂ祵¥¤¥º¤òÀßÄꤷ¤Þ¤¹¡£ +¤³¤Î¥µ¥¤¥º¤Ï´ÉÍý¼Ô¤¬¥µ¥¤¥ÈÁ´ÂΤËÂФ·¤ÆÀßÄꤷ¤¿¥µ¥¤¥º¤ËÀ©¸Â¤µ¤ì¤Þ¤¹¡£

          -

          ¤½¤ì¤¾¤ì¤Î³èư¥â¥¸¥å¡¼¥ë¤Ç¡¢¤µ¤é¤Ë¤³¤Î¥µ¥¤¥º¤òÀ©¸Â¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£

          \ No newline at end of file +

          ¤½¤ì¤¾¤ì¤Î³èư¥â¥¸¥å¡¼¥ë¤Ç¡¢¹¹¤Ë¤³¤Î¥µ¥¤¥º¤òÀ©¸Â¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£

          diff --git a/lang/ja/help/dialogue/addsubject.html b/lang/ja/help/dialogue/addsubject.html index fbf4c61d87d..5aaec0b6c4b 100644 --- a/lang/ja/help/dialogue/addsubject.html +++ b/lang/ja/help/dialogue/addsubject.html @@ -1,6 +1,6 @@

          ¥Æ¡¼¥Þ¤ÎÄɲÃ

          -

          ¤³¤Î¥ê¥ó¥¯¤ò»ÈÍѤ·¤Æ¥À¥¤¥¢¥í¥°¤Ë¥Æ¡¼¥Þ¤òÄɲ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

          ¤³¤Î¥ê¥ó¥¯¤ò»ÈÍѤ·¤Æ¥À¥¤¥¢¥í¥°¤Ë¥Æ¡¼¥Þ¤òÄɲ乤뤳¤È¤¬½ÐÍè¤Þ¤¹¡£ ¾ï¤Ë¥À¥¤¥¢¥í¥°¤Ë¥Æ¡¼¥Þ¤ò»ý¤¿¤»¤ë¤³¤È¤ÏÎɤ¤¹Í¤¨Êý¤Ç¡¢¥À¥¤¥¢¥í¥°¤ò¾ï¤Ëµ°Æ»¤Ë¾è¤»¤Æ¡¢ -¥È¥Ô¥Ã¥¯¤ËÂФ¹¤ëÊÖ»ö¤Ë¾ÇÅÀ¤ò¹ç¤ï¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Â¾¤Î¥Æ¡¼¥Þ¤Ë¤Ä¤¤¤ÆÏä·¤¿¤¤¤È¤­¤Ï¡¢ +¥È¥Ô¥Ã¥¯¤ËÂФ¹¤ëÊÖ»ö¤Ë¾ÇÅÀ¤ò¹ç¤ï¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Â¾¤Î¥Æ¡¼¥Þ¤Ë¤Ä¤¤¤ÆÏä·¤¿¤¤¤È¤­¤Ï¡¢ ¸½ºß¤Î¥À¥¤¥¢¥í¥°¤òÊĤ¸¤Æ¡¢¤½¤Î¥È¥Ô¥Ã¥¯¤Ë´Ø¤¹¤ë¿·¤·¤¤¥À¥¤¥¢¥í¥°¤ò³«»Ï¤·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£

          diff --git a/lang/ja/help/dialogue/closedialogue.html b/lang/ja/help/dialogue/closedialogue.html index 8b7af778973..f29d4047057 100644 --- a/lang/ja/help/dialogue/closedialogue.html +++ b/lang/ja/help/dialogue/closedialogue.html @@ -1,10 +1,10 @@

          ¥À¥¤¥¢¥í¥°¤ÎÊĺ¿

          -

          ¤¢¤Ê¤¿¤Ï¤¤¤Ä¤Ç¤â¥À¥¤¥¢¥í¥°¤òÊĺ¿¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

          ¤¢¤Ê¤¿¤Ï¤¤¤Ä¤Ç¤â¥À¥¤¥¢¥í¥°¤òÊĺ¿¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ ¥À¥¤¥¢¥í¥°¤òÊĤ¸¤ë¤³¤È¤Ç¡¢¥À¥¤¥¢¥í¥°¤ÏÄä»ß¤µ¤ì¡¢¸½ºß¤Î¥À¥¤¥¢¥í¥°°ìÍ÷¤è¤êºï½ü¤µ¤ì¤Þ¤¹¡£ ÊĤ¸¤¿¥À¥¤¥¢¥í¥°¤Ï¤³¤Î¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤ì¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£

          -

          Êĺ¿¤µ¤ì¤¿¥À¥¤¥¢¥í¥°¤ò±ÜÍ÷¤¹¤ë¤³¤È¤Ï²Äǽ¤Ç¤¹¤¬¡¢Äɲ乤뤳¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ -¤·¤«¤·¡¢ºÇ½ªÅª¤Ë¤Ïºï½ü¤µ¤ì¡¢¤½¤Î»þÅÀ¤Ç±ÜÍ÷¤¹¤ë¤³¤È¤â¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

          +

          Êĺ¿¤µ¤ì¤¿¥À¥¤¥¢¥í¥°¤ò±ÜÍ÷¤¹¤ë¤³¤È¤Ï²Äǽ¤Ç¤¹¤¬¡¢Äɲ乤뤳¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£ +¤·¤«¤·¡¢ºÇ½ªÅª¤Ë¤Ïºï½ü¤µ¤ì¡¢¤½¤Î»þÅÀ¤Ç±ÜÍ÷¤¹¤ë¤³¤È¤â½ÐÍè¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

          -

          ¤³¤Î¥À¥¤¥¢¥í¥°¤òÊĤ¸¤Æ¡¢¤µ¤é¤Ë¤³¤Î¿Í¤È"²ñÏÃ"¤·¤¿¤¤¾ì¹ç¤Ï¡¢¿·¤·¤¤¥À¥¤¥¢¥í¥°¤ò +

          ¤³¤Î¥À¥¤¥¢¥í¥°¤òÊĤ¸¤Æ¡¢¹¹¤Ë¤³¤Î¿Í¤È"²ñÏÃ"¤·¤¿¤¤¾ì¹ç¤Ï¡¢¿·¤·¤¤¥À¥¤¥¢¥í¥°¤ò ³«»Ï¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¿Í¤Ï¥À¥¤¥¢¥í¥°¤ò³«»Ï¤¹¤ë»þ¤Î°ìÍ÷¤ËºÆÅÙɽ¼¨¤µ¤ì¤Þ¤¹¡£

          diff --git a/lang/ja/help/dialogue/deleteafter.html b/lang/ja/help/dialogue/deleteafter.html index bb9adf47064..fcf835f71b9 100644 --- a/lang/ja/help/dialogue/deleteafter.html +++ b/lang/ja/help/dialogue/deleteafter.html @@ -1,4 +1,4 @@

          ¥À¥¤¥¢¥í¥°¤Îºï½ü

          -

          ¤³¤³¤Ç¤Ï¡¢¥À¥¤¥¢¥í¥°¤òºï½ü¤¹¤ë´Ö³Ö¤òÀßÄꤷ¤Þ¤¹¡£¤³¤ì¤ÏÊĺ¿¤µ¤ì¤¿¥À¥¤¥¢¥í¥°¤Î¤ß¤ËŬÍѤµ¤ì¤Þ¤¹¡£

          +

          ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥À¥¤¥¢¥í¥°¤òºï½ü¤¹¤ëÆü¤Ë¤Á¤Î´Ö³Ö¤òÀßÄꤷ¤Þ¤¹¡£¤³¤ì¤ÏÊĤ¸¤é¤ì¤¿¥À¥¤¥¢¥í¥°¤Î¤ß¤ËŬÍѤµ¤ì¤Þ¤¹¡£

          -

          ´ü´Ö¤¬¥¼¥í¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢¥À¥¤¥¢¥í¥°¤Ï°ìÀÚºï½ü¤µ¤ì¤Þ¤»¤ó¡£

          \ No newline at end of file +

          ´ü´Ö¤¬¥¼¥í¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢¥À¥¤¥¢¥í¥°¤Ï°ìÀÚºï½ü¤µ¤ì¤Þ¤»¤ó¡£

          diff --git a/lang/ja/help/dialogue/dialoguetype.html b/lang/ja/help/dialogue/dialoguetype.html index 930697e7656..c3b1302c370 100644 --- a/lang/ja/help/dialogue/dialoguetype.html +++ b/lang/ja/help/dialogue/dialoguetype.html @@ -1,9 +1,11 @@

          ¥À¥¤¥¢¥í¥°¥¿¥¤¥×

          ¥À¥¤¥¢¥í¥°¤Î¥¿¥¤¥×¤Ë¤Ï²¼µ­¤Î3¤Ä¤¬¤¢¤ê¤Þ¤¹¡£

          -
          1. ¶µ»Õ - ³ØÀ¸ ¤³¤³¤Ç¤Ï¶µ»Õ¤È³ØÀ¸´Ö¤Ç¤Î¥À¥¤¥¢¥í¥°¤òµö²Ä¤·¤Þ¤¹¡£¥À¥¤¥¢¥í¥°¤Ï¶µ»Õ¤Þ¤¿¤Ï³ØÀ¸¤Î¤É¤Á¤é¤«¤é¤Ç¤â³«»Ï¤Ç¤­¤Þ¤¹¡£»²²Ã¼Ô¥ê¥¹¥È¤Ç¤Ï¶µ»Õ¤Ï³ØÀ¸¤Î¤ß¤ò¡¢³ØÀ¸¤Ï¶µ»Õ¤Î¤ß¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          2. +
            1. ¶µ»Õ - ³ØÀ¸ ¤³¤³¤Ç¤Ï¶µ»Õ¤È³ØÀ¸´Ö¤Ç¤Î¥À¥¤¥¢¥í¥°¤òµö²Ä¤·¤Þ¤¹¡£¥À¥¤¥¢¥í¥°¤Ï¶µ»Õ¤Þ¤¿¤Ï³ØÀ¸¤Î + ¤É¤Á¤é¤«¤é¤Ç¤â³«»Ï½ÐÍè¤Þ¤¹¡£¥ê¥¹¥È¤Ç¤Ï¶µ»Õ¤Ï³ØÀ¸¤Î¤ß¤ò¡¢³ØÀ¸¤Ï¶µ»Õ¤Î¤ß¤ò¸«¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

            2. ³ØÀ¸ - ³ØÀ¸ ¤³¤³¤Ç¤Ï³ØÀ¸Æ±»Î¤Î¥À¥¤¥¢¥í¥°¤òµö²Ä¤·¤Þ¤¹¡£¶µ»Õ¤Ï¤³¤Î¥¿¥¤¥×¤Î¥À¥¤¥¢¥í¥°¤ËÁ´¤¯´Þ¤Þ¤ì¤Þ¤»¤ó¡£

            3. -
            4. Á´°÷ ¤³¤³¤Ç¤Ï¥¯¥é¥¹Á´°÷¤¬Ã¯¤È¤Ç¤â¥À¥¤¥¢¥í¥°¤ò»Ï¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¶µ»Õ¤Ï¾¤Î¶µ»Õ¤ª¤è¤Ó³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«»Ï¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢³ØÀ¸¤Ï¾¤Î³ØÀ¸¤ª¤è¤Ó¶µ»Õ¤È¥À¥¤¥¢¥í¥°¤ò³«»Ï¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

            5. -
            \ No newline at end of file +
          3. Á´°÷ ¤³¤³¤Ç¤Ï¥¯¥é¥¹Á´°÷¤¬Ã¯¤È¤Ç¤â¥À¥¤¥¢¥í¥°¤ò»Ï¤á¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¶µ»Õ¤Ï¾¤Î¶µ»ÕµÚ¤Ó³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«»Ï¤¹¤ë¤³¤È¤¬ + ½ÐÍè¡¢³ØÀ¸¤Ï¾¤Î³ØÀ¸µÚ¤Ó¶µ»Õ¤È¥À¥¤¥¢¥í¥°¤ò³«»Ï¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

          4. +
          diff --git a/lang/ja/help/dialogue/index.html b/lang/ja/help/dialogue/index.html index 5207575173f..58352e33c7d 100644 --- a/lang/ja/help/dialogue/index.html +++ b/lang/ja/help/dialogue/index.html @@ -1,11 +1,11 @@

          ¥À¥¤¥¢¥í¥°

          \ No newline at end of file +
        • ¥Æ¡¼¥Þ¤ÎÄɲÃ
        • +
        • ¥À¥¤¥¢¥í¥°¤ÎÊĺ¿
        • +
        • ¥À¥¤¥¢¥í¥°¤Îºï½ü
        • +
        • ¥À¥¤¥¢¥í¥°¥¿¥¤¥×
        • +
        • ¾ÜºÙ¾ðÊó
        • +
        • ¥á¡¼¥ë¥Ç¥Õ¥©¥ë¥È¤ÎÀßÄê
        • +
        • Ê£¿ô¥À¥¤¥¢¥í
        • +
        diff --git a/lang/ja/help/dialogue/info.html b/lang/ja/help/dialogue/info.html index 7450e9ef70a..21c0043dee6 100644 --- a/lang/ja/help/dialogue/info.html +++ b/lang/ja/help/dialogue/info.html @@ -1,16 +1,17 @@ - ¥À¥¤¥¢¥í¥°

        + ¥À¥¤¥¢¥í¥°

        -

        ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ï¡¢¥æ¡¼¥¶´Ö¤Î´Êñ¤Ê¥³¥ß¥å¥Ë¥±¡¼¥·¥ç¥óÊý¼°¤òÄ󶡤·¤Þ¤¹¡£¶µ»Õ¤Ï³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬¤Ç¤­¡¢³ØÀ¸¤Ï¶µ»Õ¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢( Ǥ°Õ¤Ç ) ³ØÀ¸¤Ï¾¤Î³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¶µ»Õ¤Þ¤¿¤Ï¡¢³ØÀ¸¤Ï¤¤¤Ä¤Ç¤â¿¤¯¤Î¿Ê¹ÔÃæ¤Î¥À¥¤¥¢¥í¥°¤Ë»²²Ã¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ï¥æ¡¼¥¶´Ö¤Î´Êñ¤Ê¥³¥ß¥å¥Ë¥±¡¼¥·¥ç¥óÊý¼°¤òÄ󶡤·¤Þ¤¹¡£ +¶µ»Õ¤Ï³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬½ÐÍè¡¢³ØÀ¸¤Ï¶µ»Õ¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +¤Þ¤¿¡¢(Ǥ°Õ¤Ç)³ØÀ¸¤Ï¾¤Î³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¶µ»ÕËô¤Ï³ØÀ¸¤Ï¤¤¤Ä¤Ç¤â +¿¤¯¤Î¿Ê¹ÔÃæ¤Î¥À¥¤¥¢¥í¥°¤Ë»²²Ã¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        -

        ¥À¥¤¥¢¥í¥°¤Ï¿ô¤ËÀ©¸Â¤Î̵¤¤¥¨¥ó¥È¥ê¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Ä̾ï¡Ö²ñÏáפÏÁê¸ß¤ÎÊÖÅú¤Ë¤è¤êÀ®¤êΩ¤Á¤Þ¤¹¡£¤³¤Î·Á¼°¤Ï¶¯À©¤Ç¤Ï̵¤¯¡¢¤½¤ì¤¾¤ì¤Î¥á¥ó¥Ð¡¼¤Ï¤¤¤Ä¤Ç¤â¥À¥¤¥¢¥í¥°¤òÄɲ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¥À¥¤¥¢¥í¥°¤Ç¤Ï¿ô¤ËÀ©¸Â¤Î̵¤¤¥¨¥ó¥È¥ê¡¼¤ò»ý¤Ä¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Ä̾ï"²ñÏÃ"¤Ï +Áê¸ß¤ÎÊÖ»ö¤Ë¤è¤êÀ®¤êΩ¤Á¤Þ¤¹¡£¤³¤Î·Á¼°¤Ï¶¯À©¤Ç¤Ï̵¤¯¡¢¤½¤ì¤¾¤ì¤Î¥á¥ó¥Ð¡¼¤Ï¤¤¤Ä¤Ç¤â +¥À¥¤¥¢¥í¥°¤òÄɲ乤뤳¤È¤¬½ÐÍè¤Þ¤¹¡£

        -

        ¥À¥¤¥¢¥í¥°¤Ï¡¢¤½¤ì¤¾¤ì¤Î¥á¥ó¥Ð¡¼¤Ë¤è¤Ã¤Æ¡¢¤¤¤Ä¤Ç¤âÊĤ¸¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Êĺ¿¤µ¤ì¤¿¥À¥¤¥¢¥í¥°¤ÏºÆÅÙ³«¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤·¤«¤·¡¢Êĺ¿¤µ¤ì¤¿¥À¥¤¥¢¥í¥°¤Ï¡¢¥á¥ó¥Ð¡¼¤Ë¤è¤Ã¤Æ¡¢Â¸ºß¤¹¤ë´Ö¤Ï±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¥À¥¤¥¢¥í¥°¤Ï¡¢¤½¤ì¤¾¤ì¤Î¥á¥ó¥Ð¡¼¤Ë¤è¤Ã¤Æ¡¢¤¤¤Ä¤Ç¤âÊĤ¸¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +Êĺ¿¤µ¤ì¤¿¥À¥¤¥¢¥í¥°¤ÏºÆÅÙ³«¤¯¤³¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£¤·¤«¤·¡¢Êĺ¿¤µ¤ì¤¿¥À¥¤¥¢¥í¥°¤Ï¡¢ +¥á¥ó¥Ð¡¼¤Ë¤è¤Ã¤ÆÂ¸ºß¤¹¤ë´Ö¤Ï±ÜÍ÷¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        -

        ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ï°ìÄê´ü´Ö·Ð²á¸å¡¢Êĺ¿¤µ¤ì¤¿¥À¥¤¥¢¥í¥°¤ª¤è¤Ó¤½¤ÎÆâÍÆ¤òºï½ü¤·¤Þ¤¹¡£¤½¤Î´ü´Ö¤Ï¥À¥¤¥¢¥í¥°ºîÀ®»þ¤Ë¤³¤Î²èÌ̤ÇÀßÄꤷ¤Þ¤¹¡£

        - -

        ¥³¡¼¥¹¤¬¥°¥ë¡¼¥×¥â¡¼¥É¤ËÂбþ¤·¤Æ¤¤¤ë¾ì¹ç¡¢²¼µ­¤ÎÆâÍÆ¤¬Å¬ÍѤµ¤ì¤Þ¤¹¡£ -

        • ¿·¤·¤¤¥À¥¤¥¢¥í¥°¤ò³«¤¯¾ì¹ç¡¢¶µ»Õ¤Ë¤Ï¥°¥ë¡¼¥×¥â¡¼¥É¤Î¥À¥¤¥¢¥í¥°¡¢¤ª¤è¤Ó¥°¥ë¡¼¥×¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¤³¤Î¾ðÊó¤Ï¥¿¥Ö¥Ð¡¼¤Î²¼¤Ë¥ê¥¢¥ë¥¿¥¤¥à¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£
        • -
        • ¶µ»Õ¤Ï¡¢¥É¥í¥Ã¥×¥À¥¦¥ó¥á¥Ë¥å¡¼¤è¤ê¥°¥ë¡¼¥×̾¤òÁªÂò¤¹¤ë¤³¤È¤Ç¡¢¥°¥ë¡¼¥×Æâ¤ÎÁ´¤Æ¤Î³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«»Ï¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥À¥¤¥¢¥í¥°¤¬»Ï¤Þ¤Ã¤¿¾ì¹ç¡¢¶µ»Õ¤È³ØÀ¸1ÂÐ1¤È¤¤¤¦Ä̾ï¤ÎÊýË¡¤Ç¥À¥¤¥¢¥í¥°¤¬¹Ô¤ï¤ì¤Þ¤¹¡£
        • -
        • ¥À¥¤¥¢¥í¥°¤¬Ê¬Î¥¥°¥ë¡¼¥×¤Ç¹Ô¤ï¤ì¤¿¾ì¹ç¡¢³ØÀ¸¤ÏƱ¤¸¥°¥ë¡¼¥×¤Î¾¤Î³ØÀ¸¤·¤«¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó ( ³ØÀ¸ - ³ØÀ¸¤Î¥À¥¤¥¢¥í¥°µö²Ä»þ )¡£¤³¤Î¥â¡¼¥É¤Ç¤Ï¡¢¤É¤Î¥°¥ë¡¼¥×¤Ë¤â°¤·¤Æ¤¤¤Ê¤¤³ØÀ¸¤Ï¡¢Â¾¤Î³ØÀ¸¤ò¸«¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£
        • -
        -

        \ No newline at end of file +

        ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ï¡¢¤¢¤ë°ìÄê´ü´Ö¤ÇÊĺ¿¤µ¤ì¤¿¥À¥¤¥¢¥í¥°µÚ¤Ó¤½¤ÎÆâÍÆ¤òºï½ü¤·¤Þ¤¹¡£ +¤½¤Î´ü´Ö¤Ï¥À¥¤¥¢¥í¥°ºîÀ®»þ¤Ë¡¢¤³¤Î²èÌ̤ÇÀßÄꤷ¤Þ¤¹¡£

        diff --git a/lang/ja/help/dialogue/maildefault.html b/lang/ja/help/dialogue/maildefault.html index 39d8f60df2f..c800e951035 100644 --- a/lang/ja/help/dialogue/maildefault.html +++ b/lang/ja/help/dialogue/maildefault.html @@ -1,4 +1,3 @@ -

        ¥á¡¼¥ëÄÌÃΤÎÀßÄê

        -

        ¤³¤³¤Ç¤ÏÄÌÃΥ᡼¥ë¤¬Á÷¿®¤µ¤ì¤ë¤«Èݤ«ÀßÄꤷ¤Þ¤¹¡£¡ÖYes¡×¤Ë¤·¤¿¾ì¹ç¡¢¿·¤·¤¤¥¨¥ó¥È¥ê¤Î¼õ¿®¼Ô¤Ëû¤¤¥á¥Ã¥»¡¼¥¸¤¬¥á¡¼¥ëÁ÷¿®¤µ¤ì¤Þ¤¹¡£¥á¡¼¥ë¥á¥Ã¥»¡¼¥¸¤Ë¤Ï¥¨¥ó¥È¥ê¤ÎÆâÍÆ¤Ïµ­ºÜ¤µ¤ì¤º¡¢¿·¤·¤¤¥¨¥ó¥È¥ê¤¬Äɲ䵤줿¤³¤È¡¢¤ª¤è¤Ó¥À¥¤¥¢¥í¥°¤Ø¤Î¥ê¥ó¥¯¤¬µ­ºÜ¤µ¤ì¤Þ¤¹¡£

        +

        ¥á¡¼¥ë¥Ç¥Õ¥©¥ë¥È¤ÎÀßÄê

        +

        ¤³¤³¤Ç¤Ï¿·¤·¤¤¥¨¥ó¥È¥ê¤òÄɲ乤ë»þ¤Î¡¢"¤³¤Î¥á¥Ã¥»¡¼¥¸¤ò¥á¡¼¥ë¤ÇÁ÷¿®¤¹¤ë" ¥ª¥×¥·¥ç¥ó¤Î½é´üÃͤòÀßÄꤷ¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò"Yes" ¤Ë¤·¤¿¾ì¹ç¡¢¥á¡¼¥ëÁ÷¿®¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤¬¥Á¥§¥Ã¥¯¤µ¤ì¤Þ¤¹¡£¤½¤Î¾¤Î¾ì¹ç¤Ï¥Á¥§¥Ã¥¯¤µ¤ì¤Þ¤»¤ó¡£

        -

        Ãí°Õ¡§ ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥À¥¤¥¢¥í¥°¥¤¥ó¥¹¥¿¥ó¥¹¤ÎÃæ¤Ç¡¢Á´¤Æ¤Î¥¢¥¯¥Æ¥£¥Ö¤Ê¥À¥¤¥¢¥í¥°¤ËŬÍѤµ¤ì¤Þ¤¹¡£¤³¤ÎÀßÄê¤Ï¤¤¤Ä¤Ç¤âÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        \ No newline at end of file diff --git a/lang/ja/help/dialogue/mods.html b/lang/ja/help/dialogue/mods.html index 1887c38980d..1efc4235d25 100644 --- a/lang/ja/help/dialogue/mods.html +++ b/lang/ja/help/dialogue/mods.html @@ -1,4 +1,7 @@ -

        ¥À¥¤¥¢¥í¥°

        -
        -¤³¤Î¥â¥¸¥å¡¼¥ë¤Ï¡¢¥æ¡¼¥¶Æ±»Î¤Î´Êñ¤Ê¥³¥ß¥å¥Ë¥±¡¼¥·¥ç¥ó¼êÃʤòÄ󶡤·¤Þ¤¹¡£¶µ»Õ¤Ï³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬¤Ç¤­¡¢³ØÀ¸¤Ï¶µ»Õ¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢³ØÀ¸¤Ï ( Ǥ°Õ ) ¾¤Î³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¶µ»Õ¤Þ¤¿¤Ï³ØÀ¸¤Ï¡¢¤¤¤Ä¤Ç¤âƱ»þ¤Ë¿¿ô¤Î¥À¥¤¥¢¥í¥°¤Ë»²²Ã¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -
        \ No newline at end of file +

         ¥À¥¤¥¢¥í¥°

        +
          +

          ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ï¥æ¡¼¥¶Æ±»Î¤Î´Êñ¤Ê¥³¥ß¥å¥Ë¥±¡¼¥·¥ç¥ó¼êÃʤòÄ󶡤·¤Þ¤¹¡£ + ¶µ»Õ¤Ï³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬½ÐÍè¡¢³ØÀ¸¤Ï¶µ»Õ¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ + ¤Þ¤¿³ØÀ¸¤Ï(Ǥ°Õ¤Ë)¾¤Î³ØÀ¸¤È¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤â½ÐÍè¤Þ¤¹¡£¶µ»Õ¤Þ¤¿¤Ï³ØÀ¸¤Ï¡¢¤¤¤Ä¤Ç¤â + Ʊ»þ¤Ë¿¿ô¤Î·Ñ³Ū¤Ê¥À¥¤¥¢¥í¥°¤Ë»²²Ã¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

          +
        diff --git a/lang/ja/help/dialogue/multiple.html b/lang/ja/help/dialogue/multiple.html index 00be051efc9..114a8d94d09 100644 --- a/lang/ja/help/dialogue/multiple.html +++ b/lang/ja/help/dialogue/multiple.html @@ -1,5 +1,5 @@

        Ê£¿ô¥À¥¤¥¢¥í¥°

        -

        ¤³¤³¤Ç¤Ï¡¢Æ±°ì¿Íʪ¤¬¤¬1¤Ä°Ê¾å¤Î¥À¥¤¥¢¥í¥°¤ò¾¤Î¿Í¤È³«»Ï¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤«Èݤ«ÀßÄꤷ¤Þ¤¹¡£½é´üÃͤϡÖNo¡×¤Ç¡¢2¿Í¤Î´Ö¤Î¤ß¤Ç¥À¥¤¥¢¥í¥°¤ò³«»Ï¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¤³¤³¤Ç¤Ï1¿Í¤Î¿Í´Ö¤¬1¤Ä°Ê¾å¤Î¥À¥¤¥¢¥í¥°¤ò¾¤Î¿Í¤È³«»Ï¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤«Èݤ«¤òÀßÄꤷ¤Þ¤¹¡£½é´üÃͤÏNo¤Ç¡¢2¿Í¤Î´Ö¤Î¤ß¤Ç¥À¥¤¥¢¥í¥°¤ò³«¤¯¤³¤È¤¬µö²Ä¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

        -

        Ê£¿ô¤Î¥À¥¤¥¢¥í¥°ÍøÍѤòµö²Ä¤¹¤ë¤³¤È¤ÇÌäÂ꤬À¸¤¸¤ë²ÄǽÀ­¤â¤¢¤ê¤Þ¤¹¡£´õ˾¤·¤Ê¤¤Â¿¤¯¤Î¥À¥¤¥¢¥í¥°¤¬»Ï¤á¤é¤ì¤ë¤³¤È¤Ç¡ÖÉÔ²÷¤Ë»×¤¦¿Í¡×¤â½Ð¤Æ¤¯¤ë¤Ç¤·¤ç¤¦¡£

        \ No newline at end of file +

        Ê£¿ô¤Î¥À¥¤¥¢¥í¥°»ÅÍͤòµö²Ä¤¹¤ë¤³¤È¤ÇÌäÂ꤬À¸¤¸¤ë²ÄǽÀ­¤â¤¢¤ê¤Þ¤¹¡£Ë¾¤Þ¤ì¤Ê¤¤¥À¥¤¥¢¥í¥°¤ò¿¤¯¤Î¿Í¤È»Ï¤á¤ë¤³¤È¤Ç"·ù¤¬¤é¤»"¤ò¼õ¤±¤ë¿Í¤â½Ð¤Æ¤¯¤ë¤Ç¤·¤ç¤¦¡£

        diff --git a/lang/ja/help/dialogue/sendmail.html b/lang/ja/help/dialogue/sendmail.html index 115fa579079..6ea4e171aa2 100644 --- a/lang/ja/help/dialogue/sendmail.html +++ b/lang/ja/help/dialogue/sendmail.html @@ -1,5 +1,5 @@

        ¥á¥Ã¥»¡¼¥¸¥á¡¼¥ë¤ÎÁ÷¿®

        -

        ¤³¤Î¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ò¥Á¥§¥Ã¥¯¤·¤¿¾ì¹ç¡¢¤¢¤Ê¤¿¤¬¥À¥¤¥¢¥í¥°¤ËÄɲ䵤줿»Ý¤Î¥á¡¼¥ë¤¬Â¾¤Î¿Í¤ËÁ÷¿®¤µ¤ì¤Þ¤¹¡£¥á¥Ã¥»¡¼¥¸¤Ë¤Ï¥¨¥ó¥È¥ê¤ÎÆâÍÆ¤Ç¤Ï̵¤¯¡¢Ã»¤¤ÀâÌÀ¤ª¤è¤Ó¥À¥¤¥¢¥í¥°¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î¥ê¥ó¥¯¤¬µ­ºÜ¤µ¤ì¤Þ¤¹¡£

        +

        ¤³¤Î¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ò¥Á¥§¥Ã¥¯¤·¤¿¾ì¹ç¡¢¤¢¤Ê¤¿¤¬¥À¥¤¥¢¥í¥°¤ËÄɲ䵤줿»Ý¤Î¥á¡¼¥ë¤¬Â¾¤Î¿Í¤ËÁ÷¿®¤µ¤ì¤Þ¤¹¡£¥á¥Ã¥»¡¼¥¸¤Ë¤Ï¥¨¥ó¥È¥ê¤ÎÆâÍÆ¤Ç¤Ï̵¤¯¡¢Ã»¤¤ÀâÌÀµÚ¤Ó¥À¥¤¥¢¥í¥°¤Ë¥¢¥¯¥»¥¹¤¹¤ë°Ù¤Î¥ê¥ó¥¯¤¬µ­ºÜ¤µ¤ì¤Þ¤¹¡£

        -

        ¾¤Î¿Í¤¬¥³¡¼¥¹¤ò¾ï¤Ë±ÜÍ÷¤¹¤ë¤³¤È¤¬Ìµ¤¤¤È»×¤ï¤ì¤ë»þ¤Î¤ß¡¢¤³¤Î¤è¤¦¤Ê¥á¡¼¥ë¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£¥³¡¼¥¹¤ËÂФ¹¤ëºÇ½ª¥¢¥¯¥»¥¹Æü»þ¤Ï»²²Ã¼Ô¥ê¥¹¥È¤Ç±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¾¤Î¿Í¤¬¥³¡¼¥¹¤ò¾ï¤Ë±ÜÍ÷¤¹¤ë¤³¤È¤¬Ìµ¤¤¤È»×¤ï¤ì¤ë»þ¤Î¤ß¡¢¤³¤Î¤è¤¦¤Ê¥á¡¼¥ë¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£¥³¡¼¥¹¤ËÂФ¹¤ëºÇ½ª¥¢¥¯¥»¥¹Æü»þ¤Ï»²²Ã¼Ô¥ê¥¹¥È¤Ç±ÜÍ÷¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        diff --git a/lang/ja/help/dialogue/writing.html b/lang/ja/help/dialogue/writing.html index 37715d2664c..d3ee9ce5500 100644 --- a/lang/ja/help/dialogue/writing.html +++ b/lang/ja/help/dialogue/writing.html @@ -1,21 +1,21 @@ -

        ½ñ¤­Êý

        +

        ½ñ¤­Êý

        -

        ¾¤Î¿Í¤ËÆÉ¤Þ¤»¤ë¤¿¤á¤Ëʸ¾Ï¤ò½ñ¤¯¤È¤­¤Ï¡¢¤¢¤Ê¤¿¤Îݽ°¤Ë¸þ¤«¤Ã¤Æ½ñ¤¯¤è¤¦¤Êµ¤»ý¤Á¤Ç½ñ¤­¤Þ¤¹¡£

        +

        ¾¤Î¿Í¤ËÆÉ¤Þ¤»¤ë¤¿¤á¤Ëʸ¾Ï¤ò½ñ¤¯¤È¤­¤Ï¡¢¤¢¤Ê¤¿¤Îݽ°¤Ë¸þ¤«¤Ã¤Æ½ñ¤¯¤è¤¦¤Êµ¤»ý¤Á¤Ç½ñ¤­¤Þ¤¹¡£

        -

        ¸í²ò¤òÈò¤±¤ë¤¿¤á¤Ë¡¢¤¢¤Ê¤¿¤Î¹Í¤¨Êý¤òÌÀ³Î¤«¤ÄüŪ¤ËÀâÌÀ¤·¤Þ¤¹¡£¸í²ò¤òÈò¤±¤ë¤¿¤á¤Ë¤¢¤Ê¤¿¤¬¤Ç¤­¤ë¤³¤È¤ÏĹʸ¤Ç¤Ï¤Ê¤¯¡¢Ã»Ê¸¤ò½ñ¤¯¤³¤È¤Ç¤¹¡£¸í²ò¤òÈò¤±¤ë¤¿¤á¤Ë¡¢¤¢¤Ê¤¿¤Î¹Í¤¨Êý¤òÌÀ³Î¤«¤ÄüŪ¤ËÀâÌÀ¤·¤Þ¤¹¡£¸í²ò¤òÈò¤±¤ë¤¿¤á¤Ë¤¢¤Ê¤¿¤¬½ÐÍè¤ë¤³¤È¤ÏĹʸ¤Ç¤Ï¤Ê¤¯¡¢Ã»Ê¸¤ò½ñ¤¯¤³¤È¤Ç¤¹¡£Ã»Ê¸¤ò½ñ¤¯¤³¤È¤Ï¡¢¥À¥¤¥¢¥í¥°Æâ¤ÇÅê¹Æ¤òû¤¯¤«¤ÄÆâÍÆ¤Ë±è¤Ã¤¿¤â¤Î¤Ë¤¹¤ë¤³¤È¤ËÂ礤¤ËÌòΩ¤Á¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¤¤¤Ä¤Ç¤â¥À¥¤¥¢¥í¥°¤ò½ªÎ»¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤·¡¢Â¾¤ÎÏÃÂê¤òµÄÏÀ¤·¤¿¤¤¤È¤­¤ÏÊ̤ΥÀ¥¤¥¢¥í¥°¤ò³«»Ï¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

        ûʸ¤ò½ñ¤¯¤³¤È¤Ï¡¢¥À¥¤¥¢¥í¥°Æâ¤ÇÅê¹Æ¤òû¤¯¤«¤ÄÆâÍÆ¤Ë±è¤Ã¤¿¤â¤Î¤Ë¤¹¤ë¤³¤È¤ËÂ礤¤ËÌòΩ¤Á¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¤¤¤Ä¤Ç¤â¥À¥¤¥¢¥í¥°¤ò½ªÎ»¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¤·¡¢Â¾¤ÎÏÃÂê¤òµÄÏÀ¤·¤¿¤¤¤È¤­¤ÏÊ̤ΥÀ¥¤¥¢¥í¥°¤ò³«»Ï¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£ -

        ¾¤Î¿Í¤ÎÅê¹Æ¤ËÊÖ¿®¤¹¤ë¾ì¹ç¤Ï¡¢¶½Ì£¿¼¤¤¼ÁÌä¤ò¤¹¤ë¤è¤¦¤Ë¿´¤¬¤±¤Þ¤¹¡£¤³¤Î¤³¤È¤Ïξ¼Ô¤Ë¤È¤Ã¤Æ¡¢µÄÏÀ¤·¤Æ¤¤¤ë¼çÂê¤Ë´Ø¤·¤Æ¹Í¤¨¤ë(³Ø¤Ö?)¼ê½õ¤±¤È¤Ê¤ê¤Þ¤¹¡£

        +

        ¾¤Î¿Í¤ÎÅê¹Æ¤ËÊÖ¿®¤¹¤ë¾ì¹ç¤Ï¡¢¶½Ì£¿¼¤¤¼ÁÌä¤ò¤¹¤ë¤è¤¦¤Ë¿´¤¬¤±¤Þ¤¹¡£¤³¤Î¤³¤È¤Ïξ¼Ô¤Ë¤È¤Ã¤Æ¡¢µÄÏÀ¤·¤Æ¤¤¤ë¼çÂê¤Ë´Ø¤·¤Æ¹Í¤¨¤ë(³Ø¤Ö?)¼ê½õ¤±¤È¤Ê¤ê¤Þ¤¹¡£

        -

        ¼ÁÌä¤Î»ÅÊý¤Ë´Ø¤¹¤ë¾ðÊó

        +

        ¼ÁÌä¤Î»ÅÊý¤Ë´Ø¤¹¤ë¾ðÊó

        -

        ÆÉ¤ßÊý¤Ë´Ø¤¹¤ë¾ðÊó

        +

        ÆÉ¤ßÊý¤Ë´Ø¤¹¤ë¾ðÊó

        \ No newline at end of file diff --git a/lang/ja/help/emoticons.html b/lang/ja/help/emoticons.html index 652454fe1e1..15468a062ea 100644 --- a/lang/ja/help/emoticons.html +++ b/lang/ja/help/emoticons.html @@ -1,4 +1,4 @@ -

        ¥¹¥Þ¥¤¥ê¡¼¤ò»È¤¦ (´¶¾ð¥¢¥¤¥³¥ó)

        +

        ¥¹¥Þ¥¤¥ê¡¼¤ò»È¤¦ (´¶¾ð¥¢¥¤¥³¥ó)

        @@ -111,9 +111,9 @@
        -

        ¥ª¥ó¥é¥¤¥ó¤Çʸ¾Ï¤ò½ñ¤¯¤È¤­¤Ï¡¢¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È¤Ç¤Ï´¶¾ð¤Îɽ¸½¤¬Æñ¤·¤¤¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£ +

        ¥ª¥ó¥é¥¤¥ó¤Çʸ¾Ï¤ò½ñ¤¯¤È¤­¤Ï¡¢¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È¤Ç¤Ï´¶¾ð¤Îɽ¸½¤¬Æñ¤·¤¤¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤é¤Î¾®¤µ¤Ê¥¢¥¤¥³¥ó¤¬´¶¾ð¤Îɽ¸½¤ò¼ê½õ¤±¤·¤Þ¤¹¡£ -

        ¥¢¥¤¥³¥ó¤ò¥Æ¥­¥¹¥È¤ËÁÞÆþ¤¹¤ë¾ì¹ç: ¾åµ­¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤«¡¢¥³¡¼¥É¤ò¥Æ¥­¥¹¥È¤ËľÀܽñ¤­¹þ¤ó¤Ç¤¯¤À¤µ¤¤¡£

        +

        ¥¢¥¤¥³¥ó¤ò¥Æ¥­¥¹¥È¤ËÁÞÆþ¤¹¤ë¾ì¹ç: ¾åµ­¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤«¡¢¥³¡¼¥É¤ò¥Æ¥­¥¹¥È¤ËľÀܽñ¤­¹þ¤ó¤Ç¤¯¤À¤µ¤¤¡£

        -

        ¥³¡¼¥É¼«ÂΤϾ®¤µ¤Ê³¨¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤¹ - ¥³¡¼¥É¤ò¸«¤ë»þ¤Ïº¸¤Î¥¢¥¤¥³¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤

        +

        ¥³¡¼¥É¼«ÂΤϾ®¤µ¤Ê³¨¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤¹ - ¥³¡¼¥É¤ò¸«¤ë»þ¤Ïº¸¤Î¥¢¥¤¥³¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤

        diff --git a/lang/ja/help/enrolmentkey.html b/lang/ja/help/enrolmentkey.html index 8c9df9f55c3..34296de5763 100644 --- a/lang/ja/help/enrolmentkey.html +++ b/lang/ja/help/enrolmentkey.html @@ -1,11 +1,16 @@ -

        ¥³¡¼¥¹ÅÐÏ¿¥­¡¼

        +

        ¥³¡¼¥¹ÅÐÏ¿¥­¡¼

        -

        ¥³¡¼¥¹ÅÐÏ¿¥­¡¼¤ò»È¤¦¤³¤È¤Ç¡¢Éô³°¼Ô¤Ë¥³¡¼¥¹¤òÍøÍѤµ¤»¤Ê¤¤¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¥³¡¼¥¹ÅÐÏ¿¥­¡¼¤Ë¤è¤êÉô³°¼Ô¤Ë¥³¡¼¥¹¤òÍøÍѤµ¤»¤Ê¤¤¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ -

        ¶õÇò¤Î¤Þ¤Þ¤Ë¤·¤¿¾ì¹ç¡¢Ã¯¤Ç¤âMoodle¥æ¡¼¥¶Ì¾¤òºîÀ®¤·¤Æ¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤Ë»²²Ã¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¶õÇò¤Î¤Þ¤Þ¤Ë¤·¤¿¾ì¹ç¡¢Ã¯¤Ç¤âMoodle¥æ¡¼¥¶Ì¾¤òºîÀ®¤·¤Æ¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤Ë +»²²Ã¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ -

        ¥³¡¼¥¹ÅÐÏ¿¥­¡¼¤òÀßÄꤷ¤¿¾ì¹ç¡¢»²²Ã´õ˾¤Î³ØÀ¸¤Ï½é²ó¤Î¤ß¡¢Ê¸»ú¤Þ¤¿¤Ï¥Õ¥ì¡¼¥º¤ÎÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£

        +

        ²¿¤«¤òÆþÎϤ·¤¿¾ì¹ç¡¢»²²Ã´õ˾¤Î³ØÀ¸¤Ï½é²ó¤Î¤ß¤³¤Îʸ»úËô¤Ï¥Õ¥ì¡¼¥º¤Î +ÆþÎϤòµá¤á¤é¤ì¤Þ¤¹¡£ -

        ÍøÍѤòµö²Ä¤¹¤ë¿Í¤Ë¤Ï¡¢¥á¡¼¥ë¡¢Í¹ÊØ¡¢ÅÅÏᢸýƬ¤ÇÅÁ¤¨¤ëÅù¤ÎÊýË¡¤Ë¤è¤êÅÐÏ¿¥­¡¼¤òÅÁ¤¨¤Æ¤¯¤À¤µ¤¤¡£

        +

        ÍøÍѤòµö²Ä¤¹¤ë¿Í¤Ë¤Ï¡¢¥á¡¼¥ë¡¢Í¹ÊØ¡¢ÅÅÏᢸýƬ¤ÇÅÁ¤¨¤ëÅù¤ÎÊýË¡¤Ë¤è¤ê +ÅÐÏ¿¥­¡¼¤òÅÁ¤¨¤Æ¤¯¤À¤µ¤¤¡£ -

        ¤â¤·¡¢¤³¤Î¥Ñ¥¹¥ï¡¼¥É¤¬¡Öϳ±Ì¡×¤·¤ÆÉô³°¼Ô¤¬ÍøÍѤò³«»Ï¤·¤¿¾ì¹ç¡¢Èà¤é¤ÎÅÐÏ¿¤òËõ¾Ã¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ ( ¥æ¡¼¥¶¥×¥í¥Õ¥£¡¼¥ë¤Î¥Ú¡¼¥¸»²¾È )¡£ Àµ¼°¤ËÅÐÏ¿¤·¤¿³ØÀ¸¤Ë±Æ¶Á¤òÍ¿¤¨¤º¤Ë¡¢Éô³°¼Ô¤ÎÍøÍѤòµñÈݤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        \ No newline at end of file +

        ¤â¤·¤³¤Î¥Ñ¥¹¥ï¡¼¥É¤¬¡Öϳ±Ì¡×¤·¤ÆÉô³°¼Ô¤¬ÍøÍѤò³«»Ï¤·¤¿¾ì¹ç¡¢Èà¤é¤Î +ÅÐÏ¿Ëõ¾Ã¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£(¥æ¡¼¥¶¥×¥í¥Õ¥£¡¼¥ë¤Î¥Ú¡¼¥¸»²¾È) Àµ¼°¤Ë +ÅÐÏ¿¤·¤¿³ØÀ¸¤Ë±Æ¶Á¤òÍ¿¤¨¤º¤Ë¡¢Éô³°¼Ô¤ÎÍøÍѤòµñÈݤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ diff --git a/lang/ja/help/enrolperiod.html b/lang/ja/help/enrolperiod.html index 4c0909df85b..ca7754e5a57 100644 --- a/lang/ja/help/enrolperiod.html +++ b/lang/ja/help/enrolperiod.html @@ -1,9 +1,7 @@ -

        ÍøÍÑÍ­¸ú´ü´Ö

        +

        ÅÐÏ¿·Ñ³´ü´Ö

        -

        ¤³¤³¤Ç¤Ï¡¢³ØÀ¸¤¬¤³¤Î¥³¡¼¥¹¤òÍøÍѤǤ­¤ëÆü¿ô¤ò»ØÄꤷ¤Þ¤¹ ( ÅÐϿľ¸å¤«¤é·×»» ) ¡£

        +

        ¤³¤³¤Ç¤Ï¡¢³ØÀ¸¤¬¤³¤Î¥³¡¼¥¹¤ËÅÐÏ¿·Ñ³¤Ç¤­¤ëÆü¿ô¤ò»ØÄꤷ¤Þ¤¹(ÅÐϿľ¸å¤«¤é·×»»)¡£

        -

        ¤³¤ÎÀßÄê¤ò¹Ô¤Ã¤¿¾ì¹ç¡¢»ØÄꤷ¤¿»þ´Ö¤¬·Ð²á¤·¤¿¸å¡¢³ØÀ¸¤Ï¼«Æ°Åª¤ËÅÐÏ¿²ò½ü¤µ¤ì¤Þ¤¹¡£¤³¤ì¤ÏÆÃÄê¤Î³«¹ÖÆü¡¦ÊĹ֯ü¤ò·è¤á¤º¤Ë¥³¡¼¥¹¤ò±¿ÍѤ¹¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£

        +

        ¤³¤ÎÀßÄê¤ò¹Ô¤Ã¤¿¾ì¹ç¡¢»ØÄꤷ¤¿»þ´Ö¤¬·Ð²á¤·¤¿¸å¡¢³ØÀ¸¤Ï¼«Æ°Åª¤ËÅÐÏ¿²ò½ü¤µ¤ì¤Þ¤¹¡£

        ¤³¤ÎÀßÄê¤ò¹Ô¤ï¤Ê¤¤¾ì¹ç¡¢³ØÀ¸¤Ï¼êư¤ÇÅÐÏ¿¼è¾Ã¤·¤ò¹Ô¤¦¤«¡¢¥¯¥ê¡¼¥ó¥¢¥Ã¥×µ¡Ç½¤¬Ä¹´ṳ̈¥í¥°¥¤¥ó³ØÀ¸¤òºï½ü¤¹¤ë¤Þ¤ÇÅÐÏ¿¤µ¤ì¤¿¤Þ¤Þ¤Ë¤Ê¤ê¤Þ¤¹¡£

        - -

        ¤³¤Î¥³¡¼¥¹¤ò¥á¥¿¥³¡¼¥¹¤È¤·¤Æ´ÉÍý¤¹¤ë¾ì¹ç¤Ï¡¢ÍøÍÑÍ­¸ú´ü´Ö¤Ï»ÈÍѤµ¤ì¤Þ¤»¤ó¡£

        \ No newline at end of file diff --git a/lang/ja/help/exercise/grade.html b/lang/ja/help/exercise/grade.html index ef5c42be979..ab2b3567795 100644 --- a/lang/ja/help/exercise/grade.html +++ b/lang/ja/help/exercise/grade.html @@ -1,6 +1,6 @@

        ¥¨¥¯¥µ¥µ¥¤¥º¤Îɾ²Á

        ¤³¤³¤Ç¤Ï¥¨¥¯¥µ¥µ¥¤¥º¤ËÍ¿¤¨¤ëºÇÂçɾ²Á¤òÀßÄꤷ¤Þ¤¹¡£É¾²Á¤ÎÉý¤Ï0¤«¤é100¥Ñ¡¼¥»¥ó¥È¤Ç¤¹¡£ -¤³¤ÎÃͤϥ¨¥¯¥µ¥µ¥¤¥º¤¬¹Ô¤ï¤ì¤Æ¤¤¤ëºÇÃæ¡¢¤¤¤Ä¤Ç¤âÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¤¢¤é¤æ¤ëÊѹ¹¤Ï¡¢À®ÀÓ¥Ú¡¼¥¸¡¢É¾²Á¤ª¤è¤ÓÄó½Ðʪ¤ËÍ¿¤¨¤é¤ì¤¿À®ÀÓ¡¢ºÇ½ª»î¸³¡¢À®ÀÓɽ(Äó½Ðʪ¤¬¤½¤Î²áÄø¤Ë¤¢¤ë¾ì¹ç) +¤³¤ÎÃͤϥ¨¥¯¥µ¥µ¥¤¥º¤¬¹Ô¤ï¤ì¤Æ¤¤¤ëºÇÃæ¡¢¤¤¤Ä¤Ç¤âÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +¤¢¤é¤æ¤ëÊѹ¹¤Ï¡¢À®ÀÓ¥Ú¡¼¥¸¡¢É¾²ÁµÚ¤ÓÄó½Ðʪ¤ËÍ¿¤¨¤é¤ì¤¿À®ÀÓ¡¢ºÇ½ª»î¸³¡¢À®ÀÓɽ(Äó½Ðʪ¤¬¤½¤Î²áÄø¤Ë¤¢¤ë¾ì¹ç) ¤ËÂФ·¤ÆÂ¨ºÂ¤ËÈ¿±Ç¤µ¤ì¤Þ¤¹¡£

        diff --git a/lang/ja/help/exercise/mods.html b/lang/ja/help/exercise/mods.html index e0f9bf74e89..2f8a5828774 100644 --- a/lang/ja/help/exercise/mods.html +++ b/lang/ja/help/exercise/mods.html @@ -1,9 +1,9 @@ - ¥¨¥¯¥µ¥µ¥¤¥º + ¥¨¥¯¥µ¥µ¥¤¥º -
          -

          ¥¨¥¯¥µ¥µ¥¤¥º¤Ï´Êñ¤Ç¤¹¤¬¥Ñ¥ï¥Õ¥ë¤Ê²ÝÂê¤Ç¤¹¡£¥¨¥¯¥µ¥µ¥¤¥º¤Ç¤Ï¶µ»Õ¤Ï³ØÀ¸¤ËÂФ·¤Æ¡¢¼ÂÁ©Åª¤Êºî¶È¤ò¤¹¤ë¤è¤¦¤Ë -°ÍÍꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¶ñÂÎŪ¤Ë¤Ï¡¢ºîʸ¡¢¥ì¥Ý¡¼¥È¡¢¥×¥ì¥¼¥ó¥Æ¡¼¥·¥ç¥ó¤Î½àÈ÷¡¢¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ÎºîÀ®Åù¤¬¹Í¤¨¤é¤ì¤Þ¤¹¡£ -³ØÀ¸¤¬²ÝÂê¤ò½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢Äó½ÐÁ°¤ËºÇ½é¤Ë¼«¸Êɾ²Á¤ò¹Ô¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£²ÝÂêÄó½Ð¸å¡¢¶µ»Õ¤Ï³ØÀ¸¤Îɾ²Á¤ª¤è¤ÓÄó½Ðʪ¤Ë -¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¶µ»Õ¤Ï³ØÀ¸¤Ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¾ì¹ç¤Ë¤è¤Ã¤Æ²þÁ±¤·¤¿²ÝÂê¤ÎºÆÄó½Ð¤ò -³ØÀ¸¤Ë¹Ô¤ï¤»¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

          -
        +
          +

          ¥¨¥¯¥µ¥µ¥¤¥º¤Ï´Êñ¤Ç¤¹¤¬¥Ñ¥ï¥Õ¥ë¤Ê²ÝÂê¤Ç¤¹¡£¥¨¥¯¥µ¥µ¥¤¥º¤Ç¤Ï¶µ»Õ¤Ï³ØÀ¸¤ËÂФ·¤Æ¡¢¼ÂÁ©Åª¤Êºî¶È¤ò¤¹¤ë¤è¤¦¤Ë +°ÍÍꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¶ñÂÎŪ¤Ë¤Ï¡¢ºîʸ¡¢¥ì¥Ý¡¼¥È¡¢¥×¥ì¥¼¥ó¥Æ¡¼¥·¥ç¥ó¤Î½àÈ÷¡¢¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ÎºîÀ®Åù¤¬¹Í¤¨¤é¤ì¤Þ¤¹¡£ +³ØÀ¸¤¬²ÝÂê¤ò½ªÎ»¤·¤¿»þÅÀ¤Ç¡¢Äó½ÐÁ°¤ËºÇ½é¤Ë¼«¸Êɾ²Á¤ò¹Ô¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£²ÝÂêÄó½Ð¸å¡¢¶µ»Õ¤Ï³ØÀ¸¤Îɾ²ÁµÚ¤ÓÄó½Ðʪ¤Ë +¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¶µ»Õ¤Ï³ØÀ¸¤Ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤¿¡¢¾ì¹ç¤Ë¤è¤Ã¤Æ²þÁ±¤·¤¿²ÝÂê¤ÎºÆÄó½Ð¤ò +³ØÀ¸¤Ë¹Ô¤ï¤»¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£

          +
        diff --git a/lang/ja/help/exercise/submissionofdescriptions.html b/lang/ja/help/exercise/submissionofdescriptions.html index e7d9119c84d..f74d8e95e31 100644 --- a/lang/ja/help/exercise/submissionofdescriptions.html +++ b/lang/ja/help/exercise/submissionofdescriptions.html @@ -1,10 +1,10 @@ -

        ¥¨¥¯¥µ¥µ¥¤¥ºÀâÌÀ¤ÎºîÀ®

        +

        ¥¨¥¯¥µ¥µ¥¤¥ºÀâÌÀ¤ÎºîÀ®

        -

        ¶µ»Õ¤Ï¾¯¤Ê¤¯¤È¤â1¤Ä¤Î¥¨¥¯¥µ¥µ¥¤¥º¤Þ¤¿¤Ï¥¿¥¹¥¯¤ÎÀâÌÀ¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -ÀâÌÀ¤ÏWord¥É¥­¥å¥á¥ó¥È¤Þ¤¿¤ÏHTML¥Õ¥¡¥¤¥ë¤ÇºîÀ®(¤Þ¤¿¤Ï¥Ö¥é¥¦¥¶¤Çɽ¼¨¤Ç¤­¤ë·Á¼°¤Ç)¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

        ¶µ»Õ¤Ï¾¯¤Ê¤¯¤È¤â1¤Ä¤Î¥¨¥¯¥µ¥µ¥¤¥ºËô¤Ï¥¿¥¹¥¯¤ÎÀâÌÀ¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +ÀâÌÀ¤ÏWord¥É¥­¥å¥á¥ó¥ÈËô¤ÏHTML¥Õ¥¡¥¤¥ë¤ÇºîÀ®(Ëô¤Ï¥Ö¥é¥¦¥¶¤Çɽ¼¨½ÐÍè¤ë·Á¼°¤Ç)¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ ¤³¤Î¥Õ¥¡¥¤¥ë¤Ï³ØÀ¸¤ËÂФ·¤ÆÉ½¼¨¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢³ØÀ¸¤¬¥¨¥¯¥µ¥µ¥¤¥º¤òÂÚ¤ê¤Ê¤¯¹Ô¤¦¤è¤¦¤Ê»Ø¼¨¤òµ­½Ò¤·¤Æ ¤¯¤À¤µ¤¤¡£

        -

        ¶µ»Õ¤Ï1¤Ä°Ê¾å¤Î¥¨¥¯¥µ¥µ¥¤¥ºÀâÌÀ¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤é¤ÎÀâÌÀ¤Ï¥é¥ó¥À¥à¤Ëɽ¼¨¤µ¤ì¡¢³ØÀ¸¤Ï -°Û¤Ê¤ë¥Ð¡¼¥¸¥ç¥ó¤Î¥¨¥¯¥µ¥µ¥¤¥º¤Ç¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£²ÝÂê¤Îɾ²Á¤Ë¤Ï¡¢Æ±°ì¤Îɾ²Á¥Õ¥©¡¼¥à¤¬»ÈÍѤµ¤ì¤ë¤¿¤á¡¢ +

        ¶µ»Õ¤Ï1¤Ä°Ê¾å¤Î¥¨¥¯¥µ¥µ¥¤¥ºÀâÌÀ¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤ì¤é¤ÎÀâÌÀ¤Ï¥é¥ó¥À¥à¤Ëɽ¼¨¤µ¤ì¡¢³ØÀ¸¤Ï +°Û¤Ê¤ë¥Ð¡¼¥¸¥ç¥ó¤Î¥¨¥¯¥µ¥µ¥¤¥º¤Ç¸«¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£²ÝÂê¤Îɾ²Á¤Ë¤Ï¡¢Æ±°ì¤Îɾ²Á¥Õ¥©¡¼¥à¤¬»ÈÍѤµ¤ì¤ë°Ù¡¢ ¥¨¥¯¥µ¥µ¥¤¥ºÀâÌÀ¤Ï»÷¤¿¤è¤¦¤Ê¤â¤Î¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

        diff --git a/lang/ja/help/exercise/usemax.html b/lang/ja/help/exercise/usemax.html index cb1483d6530..75e0c809e71 100644 --- a/lang/ja/help/exercise/usemax.html +++ b/lang/ja/help/exercise/usemax.html @@ -1,7 +1,7 @@

        Ê£¿ôÄó½Ðʪ¤Î¼è¤ê°·¤¤

        ¤³¤³¤Ç¤Ï¡¢¥¨¥¯¥µ¥µ¥¤¥º¤Ë¤ª¤±¤ë³ØÀ¸¤ÎºÇ½ªÉ¾²Á¤ò¤É¤Î¤è¤¦¤Ë·èÄꤹ¤ë¤« -ÁªÂò¤·¤Þ¤¹¡£Ê£¿ô¤ÎÄó½Ðʪ¤¬¤¢¤ë¾ì¹ç¡¢¶µ»Õ¤Ï³Æ³ØÀ¸¤ÎÄó½Ðʪ¤ÎºÇ¹âÆÀÅÀ¤Þ¤¿¤Ï -Ê¿¶ÑÅÀ¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¤¤¤Ä¤Ç¤âÊѹ¹¤¹¤ë¤³¤È¤¬ +ÁªÂò¤·¤Þ¤¹¡£Ê£¿ô¤ÎÄó½Ðʪ¤¬¤¢¤ë¾ì¹ç¡¢¶µ»Õ¤Ï³Æ³ØÀ¸¤ÎÄó½Ðʪ¤ÎºÇ¹âÆÀÅÀËô¤Ï +Ê¿¶ÑÅÀ¤òÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¤¤¤Ä¤Ç¤âÊѹ¹¤¹¤ë¤³¤È¤¬ ²Äǽ¤Ç¤¹¡£Êѹ¹¤ÏÀ®ÀÓ¥Ú¡¼¥¸¤Ë¨ºÂ¤ËÈ¿±Ç¤µ¤ì¤Þ¤¹(⤷¡¢Ê£¿ô¤ÎÄó½Ðʪ¤¬¤¢¤ë»þ¤Ë ¸Â¤ê¤Þ¤¹)¡£

        diff --git a/lang/ja/help/forum/allowdiscussions.html b/lang/ja/help/forum/allowdiscussions.html index 90d8c60e7b9..66a6122690b 100644 --- a/lang/ja/help/forum/allowdiscussions.html +++ b/lang/ja/help/forum/allowdiscussions.html @@ -1,15 +1,15 @@ -

        ¿·¤·¤¤Åê¹Æ¤òµö²Ä¤¹¤ë

        +

        ¿·¤·¤¤Åê¹Æ¤òµö²Ä¤¹¤ë

        -

        ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï³ØÀ¸¤Ë¿·¤·¤¤Åê¹Æ¤òµö²Ä¤¹¤ë¤«Èݤ«¤òÀßÄꤷ¤Þ¤¹¡£ +

        ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï³ØÀ¸¤Ë¿·¤·¤¤Åê¹Æ¤òµö²Ä¤¹¤ë¤«Èݤ«¤òÀßÄꤷ¤Þ¤¹¡£ -

        ¤Û¤È¤ó¤É¤Î¥Õ¥©¡¼¥é¥à¤Ç¤Ï³ØÀ¸¤ÎÅê¹Æ¤òµö²Ä¤·¤¿¤¤¤³¤È¤Ç¤·¤ç¤¦¡£¤½¤Î¾ì¹ç¤Ï -ºÇ½é¤Î¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£¿·¤·¤¤¥È¥Ô¥Ã¥¯(¥¹¥ì¥Ã¥É)¤ÎºîÀ®¤ª¤è¤ÓÅê¹Æ¤Ë´Ø¤¹¤ëÊÖÅú¤òµö²Ä¤Ç¤­¤Þ¤¹¡£ +

        ¤Û¤È¤ó¤É¤Î¥Õ¥©¡¼¥é¥à¤Ç¤Ï³ØÀ¸¤ÎÅê¹Æ¤òµö²Ä¤·¤¿¤¤¤³¤È¤Ç¤·¤ç¤¦¡£¤½¤Î¾ì¹ç¤Ï +ºÇ½é¤Î¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£¿·¤·¤¤¥È¥Ô¥Ã¥¯(¥¹¥ì¥Ã¥É)¤ÎºîÀ®µÚ¤ÓÅê¹Æ¤Ë´Ø¤¹¤ëÊÖÅú¤òµö²Ä½ÐÍè¤Þ¤¹¡£ -

        ¤·¤«¤·»þ¡¹¤³¤Îµ¡Ç½¤òÄä»ß¤·¤¿¤¤¾ì¹ç¤â¤¢¤ë¤³¤È¤Ç¤·¤ç¤¦¡£Î㤨¤Ð¥³¡¼¥¹¤Î¥á¥¤¥ó +

        ¤·¤«¤·»þ¡¹¤³¤Îµ¡Ç½¤òÄä»ß¤·¤¿¤¤¾ì¹ç¤â¤¢¤ë¤³¤È¤Ç¤·¤ç¤¦¡£Î㤨¤Ð¥³¡¼¥¹¤Î¥á¥¤¥ó ¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤»¤ë¤¿¤á¡¢¶µ»Õ¤Î¤ßÅê¹Æ²Äǽ¤Ë¤¹¤ë¾ì¹ç¤Ç¤¹¡£¤³¤Î¾ì¹ç¤Ï¡¢3ÈÖÌܤΠ¥ª¥×¥·¥ç¥ó¡Ö¥Ç¥£¥¹¥«¥Ã¥·¥ç¥óÉÔµö²Ä¡¢ÊÖ¿®ÉÔµö²Ä¡×¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£ -

        »þ¡¹¶µ»Õ¤Î¤ß¤Ë¿·¤·¤¤¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò³«»Ï¤µ¤»¤Æ¡¢³ØÀ¸¤Ë¤ÏÊÖÅú¤Î¤ß¤µ¤»¤¿¤¤¾ì¹ç¤â +

        »þ¡¹¶µ»Õ¤Î¤ß¤Ë¿·¤·¤¤¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò³«»Ï¤µ¤»¤Æ¡¢³ØÀ¸¤Ë¤ÏÊÖÅú¤Î¤ß¤µ¤»¤¿¤¤¾ì¹ç¤â ¤¢¤ë¤³¤È¤Ç¤·¤ç¤¦¡£(Îã¡§¥Û¡¼¥à¥Ú¡¼¥¸¤Î¥Ë¥å¡¼¥¹¥Õ¥©¡¼¥é¥à) ¤³¤Î¾ì¹ç¤Ï¡¢2ÈÖÌܤΠ¥ª¥×¥·¥ç¥ó¡Ö¥Ç¥£¥¹¥«¥Ã¥·¥ç¥óÉÔµö²Ä¡¢ÊÖ¿®µö²Ä¡×¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£ -

        +

        diff --git a/lang/ja/help/forum/attachment.html b/lang/ja/help/forum/attachment.html index dbbfcd5a4c0..f1ebec0d953 100644 --- a/lang/ja/help/forum/attachment.html +++ b/lang/ja/help/forum/attachment.html @@ -1,11 +1,16 @@ -

        źÉÕ¥Õ¥¡¥¤¥ë

        +

        źÉÕ¥Õ¥¡¥¤¥ë

        -

        ¼«Ê¬¤Î¥³¥ó¥Ô¥å¡¼¥¿¤è¤ê¥Õ¥¡¥¤¥ë¤ò¥Õ¥©¡¼¥é¥àÆâ¤ÎÅê¹Æ¤ËźÉÕ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¡¢¤¢¤Ê¤¿¤ÎÅê¹Æ¤È°ì½ï¤ËÊݸ¤µ¤ì¤Þ¤¹¡£

        +

        ¼«Ê¬¤Î¥³¥ó¥Ô¥å¡¼¥¿¤è¤ê¥Õ¥¡¥¤¥ë¤ò¥Õ¥©¡¼¥é¥àÆâ¤ÎÅê¹Æ¤ËźÉÕ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¡¢¤¢¤Ê¤¿¤ÎÅê¹Æ¤È°ì½ï¤ËÊݸ¤µ¤ì¤Þ¤¹¡£ -

        ¤³¤Îµ¡Ç½¤Ï¼Ì¿¿¤ä¥ï¡¼¥×¥íʸ½ñ¤ò¶¦Í­¤¹¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£

        +

        ¤³¤Îµ¡Ç½¤Ï¼Ì¿¿¤ä¥ï¡¼¥×¥íʸ½ñ¤ò¶¦Í­¤¹¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¹¡£ -

        ¥Õ¥¡¥¤¥ë¤Ï¤É¤Î¤è¤¦¤Ê¼ïÎà¤Î¤â¤Î¤Ç¤âÎɤ¤¤Î¤Ç¤¹¤¬¡¢Wordʸ¾Ï.doc¡¢¥¤¥á¡¼¥¸.jpg¤Þ¤¿¤Ï.png¤Î¤è¤¦¤Ë3ʸ»ú¤Î³ÈÄ¥»Ò¤òÉÕ¤±¤ë¤³¤È¤ò¶¯¤¯¤ª´«¤á¤·¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¾¤Î¿Í¤¬¥Ö¥é¥¦¥¶¤ò»È¤Ã¤Æ¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤³¤È¤¬¤è¤ê´Êñ¤Ë¤Ê¤ê¤Þ¤¹¡£

        +

        ¥Õ¥¡¥¤¥ë¤Ï¤É¤Î¤è¤¦¤Ê¼ïÎà¤Î¤â¤Î¤Ç¤âÎɤ¤¤Î¤Ç¤¹¤¬¡¢Wordʸ¾Ï.doc¡¢²èÁü.jpgËô¤Ï +.png¤Î¤è¤¦¤Ë3ʸ»ú¤Î³ÈÄ¥»Ò¤òÉÕ¤±¤ë¤³¤È¤ò¶¯¤¯¤ª´«¤á¤·¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¾¤Î¿Í¤¬ +¥Ö¥é¥¦¥¶¤ò»È¤Ã¤Æ¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤³¤È¤¬¤è¤ê´Êñ¤Ë¤Ê¤ê¤Þ¤¹¡£ -

        Åê¹Æµ­»ö¤òºÆÊÔ½¸¤·¤ÆÅºÉÕ¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤¿¾ì¹ç¤Ï¡¢°ÊÁ°¤ÎźÉÕ¥Õ¥¡¥¤¥ë¤Ï¿·¤·¤¤¤â¤Î¤ËÃÖ´¹¤¨¤é¤ì¤Þ¤¹¡£

        +

        Åê¹Æµ­»ö¤òºÆÊÔ½¸¤·¤ÆÅºÉÕ¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤¿¾ì¹ç¤Ï¡¢°ÊÁ°¤ÎźÉÕ¥Õ¥¡¥¤¥ë¤Ï¿·¤·¤¤ +¤â¤Î¤ËÃÖ´¹¤¨¤é¤ì¤Þ¤¹¡£ -

        źÉÕ¥Õ¥¡¥¤¥ëÉÕ¤­¤ÎÅê¹Æµ­»ö¤òÊÔ½¸¤·¤Æ¤³¤ÎÍó¤ò¶õÇò¤Ë¤·¤¿¾ì¹ç¡¢»öÁ°¤Ë¥¢¥Ã¥×¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤ÏÊÝ»ý¤µ¤ì¤Þ¤¹¡£

        +

        źÉÕ¥Õ¥¡¥¤¥ëÉÕ¤­¤ÎÅê¹Æµ­»ö¤òÊÔ½¸¤·¤Æ¤³¤ÎÍó¤ò¶õÇò¤Ë¤·¤¿¾ì¹ç¡¢»öÁ°¤Ë¥¢¥Ã¥×¥í¡¼¥É +¤·¤¿¥Õ¥¡¥¤¥ë¤ÏÊÝ»ý¤µ¤ì¤Þ¤¹¡£ diff --git a/lang/ja/help/forum/forumtype.html b/lang/ja/help/forum/forumtype.html index ba1fabe6fd5..572e7a556b4 100644 --- a/lang/ja/help/forum/forumtype.html +++ b/lang/ja/help/forum/forumtype.html @@ -1,11 +1,11 @@ -

        ¥Õ¥©¡¼¥é¥à¥¿¥¤¥×

        +

        ¥Õ¥©¡¼¥é¥à¥¿¥¤¥×

        -

        ¥Õ¥©¡¼¥é¥à¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹: +

        ¥Õ¥©¡¼¥é¥à¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹: -

        ñ°ì¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó - ñ°ì¤Î¥È¥Ô¥Ã¥¯¤¬1¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£½¸Ã椷¤¿Ã»¤¤¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ËÍ­ÍѤǤ¹¡£ +

        ñ°ì¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó - ñ°ì¤Î¥È¥Ô¥Ã¥¯¤¬1¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£½¸Ã椷¤¿Ã»¤¤¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ËÍ­ÍѤǤ¹¡£ -

        ɸ½à¥Õ¥©¡¼¥é¥à - ï¤Ç¤â¾ï¤Ë¿·¤·¤¤¥È¥Ô¥Ã¥¯¤ò³«»Ï¤Ç¤­¤ë¡¢³«¤«¤ì¤¿¥Õ¥©¡¼¥é¥à¤Ç¤¹¡£°ìÈÌŪ¤ÊÍøÍѤ˺ÇŬ¤Ç¤¹¡£ +

        ɸ½à¥Õ¥©¡¼¥é¥à - ï¤Ç¤â¾ï¤Ë¿·¤·¤¤¥È¥Ô¥Ã¥¯¤ò³«»Ï¤Ç¤­¤ë¡¢³«¤«¤ì¤¿¥Õ¥©¡¼¥é¥à¤Ç¤¹¡£°ìÈÌŪ¤ÊÍøÍѤ˺ÇŬ¤Ç¤¹¡£ -

        ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò1·ïÅê¹Æ - ¤½¤ì¤¾¤ì¤Î¿Í¤Ïï¤Ç¤âÊÖ¿®²Äǽ¤Ê¡¢¿·¤·¤¤1¤Ä¤Î¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤òÅê¹Æ¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï¤¢¤Ê¤¿¤¬³ØÀ¸¤Ë¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò»Ï¤á¤Æ¤â¤é¤¤¤¿¤¤¤È¤­¤ËÊØÍø¤Ç¤¹¡£Î㤨¤Ð¡¢³ØÀ¸¤¬¤½¤Î½µ¤Î´¶ÁÛ¤òÅê¹Æ¤·¤Æ¡¢Â¾¤Î³ØÀ¸¤¬¤½¤ì¤ËÂФ¹¤ëÊÖ¿®¤òÅê¹Æ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

        ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò1·ïÅê¹Æ - ¤½¤ì¤¾¤ì¤Î¿Í¤Ïï¤Ç¤âÊÖ¿®²Äǽ¤Ê¡¢¿·¤·¤¤1¤Ä¤Î¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤òÅê¹Æ½ÐÍè¤Þ¤¹¡£¤³¤ì¤Ï¤¢¤Ê¤¿¤¬³ØÀ¸¤Ë¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ò»Ï¤á¤Æ¤â¤é¤¤¤¿¤¤¤È¤­¤ËÊØÍø¤Ç¤¹¡£Î㤨¤Ð¡¢³ØÀ¸¤¬¤½¤Î½µ¤Î´¶ÁÛ¤òÅê¹Æ¤·¤Æ¡¢Â¾¤Î³ØÀ¸¤¬¤½¤ì¤ËÂФ¹¤ëÊÖ¿®¤òÅê¹Æ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ -

        (Moodle¤Î¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Ë¤Ï¤µ¤é¤Ë¥Õ¥©¡¼¥é¥à¥¿¥¤¥×¤¬Äɲ䵤ì¤Þ¤¹) +

        (Moodle¤Î¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Ë¤Ï¹¹¤Ë¥Õ¥©¡¼¥é¥à¥¿¥¤¥×¤¬Äɲ䵤ì¤Þ¤¹) diff --git a/lang/ja/help/forum/index.html b/lang/ja/help/forum/index.html index e294355e592..5d4c5efec55 100644 --- a/lang/ja/help/forum/index.html +++ b/lang/ja/help/forum/index.html @@ -1,15 +1,16 @@ -

        ¥Õ¥©¡¼¥é¥à

        +

        Forums

        + diff --git a/lang/ja/help/forum/maxattachmentsize.html b/lang/ja/help/forum/maxattachmentsize.html index ffc285cab17..a5a5a42b404 100644 --- a/lang/ja/help/forum/maxattachmentsize.html +++ b/lang/ja/help/forum/maxattachmentsize.html @@ -1,5 +1,5 @@ -

        źÉÕ¥Õ¥¡¥¤¥ë¤ÎºÇÂ祵¥¤¥º

        +

        źÉÕ¥Õ¥¡¥¤¥ë¤ÎºÇÂ祵¥¤¥º

        -

        źÉÕ¥Õ¥¡¥¤¥ë¤ÎºÇÂ祵¥¤¥º¤Ï¡¢¥Õ¥©¡¼¥é¥à¤òºîÀ®¤·¤¿¿Í¤Ë¤è¤ê¡¢¤¢¤ë°ìÄê¤ÎÀ©¸Â¤òÀߤ±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        źÉÕ¥Õ¥¡¥¤¥ë¤ÎºÇÂ祵¥¤¥º¤Ï¡¢¥Õ¥©¡¼¥é¥à¤òºîÀ®¤·¤¿¿Í¤Ë¤è¤ê¡¢¤¢¤ë°ìÄê¤ÎÀ©¸Â¤òÀߤ±¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        -

        À©¸Â¥µ¥¤¥º¤è¤ê¤âÂ礭¤Ê¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¼ÂºÝ¤Ï¥µ¡¼¥Ð¤ËÊݸ¤µ¤ì¤º¤Ë¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

        +

        À©¸Â¥µ¥¤¥º¤è¤ê¤âÂ礭¤Ê¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¤¬¡¢¼ÂºÝ¤Ï¥µ¡¼¥Ð¤ËÊݸ¤µ¤ì¤º¤Ë¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

        diff --git a/lang/ja/help/forum/mods.html b/lang/ja/help/forum/mods.html index 04f7424f557..c0a7489b7b2 100644 --- a/lang/ja/help/forum/mods.html +++ b/lang/ja/help/forum/mods.html @@ -1,8 +1,8 @@ -

         ¥Õ¥©¡¼¥é¥à

        -
          -

          ¤³¤Î³èư¤ÏºÇ½ÅÍ×¤Î³èÆ°¤Ç¤¢¤êÆÀ¤Þ¤¹ - ¤Û¤È¤ó¤É¤ÎµÄÏÀ¤¬¤³¤³¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£ - ¥Õ¥©¡¼¥é¥à¤Ï°Û¤Ê¤ë·ÁÂÖ¤ò¼è¤ë¤³¤È¤ª¤è¤Ó¤½¤ì¤¾¤ì¤ÎÅê¹Æ¤ËÂФ·¤ÆÁê¸ßɾ²Á¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ - Åê¹Æ¤ÏÍÍ¡¹¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¥Õ¥¡¥¤¥ë¤ÎźÉÕ¤ò¹Ô¤¦¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ - ¥Õ¥©¡¼¥é¥à¤Ë¥á¡¼¥ëÄÌÃÎÀßÄê¤ò¹Ô¤¦¤³¤È¤Ç¡¢»²²Ã¼Ô¤Ï¿·¤·¤¤Åê¹Æ¤ò¥á¡¼¥ë¤Ç¼õ¿®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ - ¶µ»Õ¤Ï³ØÀ¸¤¬Ë¾¤à¤È¤­¤Ï¥á¡¼¥ëÄÌÃÎÀßÄê¤òÁ´°÷ÂФ·¤Æ¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -

        +

         ¥Õ¥©¡¼¥é¥à

        +
          +

          ¤³¤Î³èư¤ÏºÇ½ÅÍ×¤Î³èÆ°¤Ç¤¢¤êÆÀ¤Þ¤¹ - ËØ¤É¤ÎµÄÏÀ¤¬¤³¤³¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£ + ¥Õ¥©¡¼¥é¥à¤Ï°Û¤Ê¤ë·ÁÂÖ¤ò¼è¤ë¤³¤ÈµÚ¤Ó¤½¤ì¤¾¤ì¤ÎÅê¹Æ¤ËÂФ·¤ÆÁê¸ßɾ²Á¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ + Åê¹Æ¤ÏÍÍ¡¹¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç±ÜÍ÷¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤¿¥Õ¥¡¥¤¥ë¤ÎźÉÕ¤ò¹Ô¤¦¤³¤È¤â½ÐÍè¤Þ¤¹¡£ + ¥Õ¥©¡¼¥é¥à¤Ë¥á¡¼¥ëÄÌÃÎÀßÄê¤ò¹Ô¤¦¤³¤È¤Ç¡¢»²²Ã¼Ô¤Ï¿·¤·¤¤Åê¹Æ¤ò¥á¡¼¥ë¤Ç¼õ¿®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ + ¶µ»Õ¤Ï³ØÀ¸¤¬Ë¾¤à¤È¤­¤Ï¥á¡¼¥ëÄÌÃÎÀßÄê¤òÁ´°÷ÂФ·¤Æ¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +

        diff --git a/lang/ja/help/forum/ratings.html b/lang/ja/help/forum/ratings.html index 16b3dcf66b8..2aab3eed31c 100644 --- a/lang/ja/help/forum/ratings.html +++ b/lang/ja/help/forum/ratings.html @@ -1,24 +1,24 @@ ¤½¤ì¤½¤ì¤ÎÅê¹Æ¤ÏʬΥǧ¼±¤È´ØÏ¢Ç§¼±¤ÎÍýÏÀ¤Ë¤è¤êɾ²Á¤µ¤ì¤Þ¤¹¡£ -¤³¤ÎÍýÏÀ¤Ë¤è¤ê¿Í´Ö¤ÎÁê¸ßºîÍѤò¿·¤¿¤ÊÊýË¡¤ÇÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ÎÍýÏÀ¤Ç¤Ï »ä㤬¸«¤¿¤êʹ¤¤¤¿¤ê¤¹¤ë¤³¤È¤òɾ²Á¡¦³Ø½¬¤¹¤ë¡¢2¤ÄÊýË¡¤òÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£ +¤³¤ÎÍýÏÀ¤Ë¤è¤ê¿Í´Ö¤ÎÁê¸ßºîÍѤò¿·¤¿¤ÊÊýË¡¤ÇÃΤ뤳¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤ÎÍýÏÀ¤Ç¤Ï »ä㤬¸«¤¿¤êʹ¤¤¤¿¤ê¤¹¤ë¤³¤È¤òɾ²Á¡¦³Ø½¬¤¹¤ë¡¢2¤ÄÊýË¡¤òÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£ 2¤Ä¤ÎÊýË¡¤¬¤¢¤ë¤Î¤Ç¤¹¤¬¡¢»äã¤Ï¤½¤ì¤¾¤ì¤ÎÊýË¡¤ò°Û¤Ê¤ë³ä¹ç¤Ç¡¢°Û¤Ê¤ë»þ´Ö¤Ë¤³¤ì¤é¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£Î㤨¤Ð¤Û¤È¤ó¤ÉʬΥǧ¼±¤ò¹Ô¤¦¿Í(¥¸¥à)¤È¤Û¤È¤ó¤É´ØÏ¢Ç§¼±¤ò¹Ô¤¦¿Í(¥Þ¥ê¡¼)¤Î2¿Í¤ÎÎã¤òÁÛÁü¤·¤Æ¤¯¤À¤µ¤¤¡£
          -
        • ¥¸¥à¤Ï´¶³Ð¤ä´¶¾ð¤ò»ý¹þ¤Þ¤º¤Ë¤Ç¤­¤ë¤À¤±¡ÖÈ¿ÂСפ¹¤ë¤³¤È¤¬¹¥¤­¤Ç¤¹¡£°Û¤Ê¤ë¹Í¤¨Êý -¤Î¿Í¤ÈµÄÏÀ¤¹¤ë»þ¡¢Èà¤Ï¼«Ê¬¤Î¹Í¤¨Êý¤ò¼é¤ë¤³¤È¤ò¹¥¤ß¡¢Áê¼ê¤Î¹Í¤¨Êý¤Î·ê¤ò¸«¤Ä¤±¤Þ¤¹¡£Èà¤Ï¶µ²Ê½ñ¤ä¡¢Âº·É¤µ¤ì¤Æ¤¤¤ë¶µ»Õ¤ä¼«¿È¤Î·Ð¸³¤Ë¤è¤Ã¤Æ¾ÚÌÀ¤µ¤ì¤Æ¤¤¤Ê¤¤»ö¼Â¤Ë´Ø¤·¤Æ¤ÏÈãȽŪ¤Ç¤¹¡£¥¸¥à¤Ïŵ·¿Åª¤ÊʬΥǧ¼±¤Î»ý¤Á¼ç¤Ç¤¹¡£

          +
        • ¥¸¥à¤Ï´¶³Ð¤ä´¶¾ð¤ò»ý¹þ¤Þ¤º¤Ë½ÐÍè¤ë¤À¤±¡ÖÈ¿ÂСפ¹¤ë¤³¤È¤¬¹¥¤­¤Ç¤¹¡£°Û¤Ê¤ë¹Í¤¨Êý +¤Î¿Í¤ÈµÄÏÀ¤¹¤ë»þ¡¢Èà¤Ï¼«Ê¬¤Î¹Í¤¨Êý¤ò¼é¤ë¤³¤È¤ò¹¥¤ß¡¢Áê¼ê¤Î¹Í¤¨Êý¤Î·ê¤ò¸«¤Ä¤±¤Þ¤¹¡£Èà¤Ï¶µ²Ê½ñ¤ä¡¢Âº·É¤µ¤ì¤Æ¤¤¤ë¶µ»Õ¤ä¼«¿È¤Î·Ð¸³¤Ë¤è¤Ã¤Æ¾ÚÌÀ¤µ¤ì¤Æ¤¤¤Ê¤¤»ö¼Â¤Ë´Ø¤·¤Æ¤ÏÈãȽŪ¤Ç¤¹¡£¥¸¥à¤Ïŵ·¿Åª¤ÊʬΥǧ¼±¤Î»ý¤Á¼ç¤Ç¤¹¡£

        • -
        • ¥Þ¥ê¡¼¤Ï¾¤Î¿Í¤ËÂФ·¤ÆÉÒ´¶¤Ç¤¹¡£Èà½÷¤Ë¤ÏÁê¼ê¤Ë¶¦´¶¤¹¤ëǽÎϤ¬¤¢¤ê¡¢¼«Ê¬¤¬´Ø·¸¤Ç¤­¤Æ¡ÖÁê¼ê¤ÎΩ¾ì¤ËΩ¤Ã¤Æ¤â¤Î¤´¤È¤òÍý²ò¤Ç¤­¤¿¡×¤È´¶¤¸¤ë¤Þ¤ÇÏäòʹ¤¯·¹¸þ¤¬¤¢¤ê¤Þ¤¹¡£Èà½÷¤Ï¼«Ê¬¤ËÃ챤ò¤â¤¿¤é¤¹¡¢Â¾¤Î¿Í¤Î·Ð¸³¤ò¶¦Í­¤¹¤ë¤³¤È¤Ç³Ø¤Ü¤¦¤È¤·¤Þ¤¹¡£ ¾¤Î¿Í¤ÈÏä¹»þ¡¢Èà½÷¤ÏÂÐΩ¤òÈò¤±¡¢²Äǽ¤Ê¤é¤Ð¤·¤Ð¤·¤ÐÏÀÍýŪ¤ÊÄ󰯤Ǿ¤Î¿Í¤Î¼ê½õ¤±¤ò¤·¤è¤¦¤È»î¤ß¤Þ¤¹¡£¥Þ¥ê¡¼¤Ïŵ·¿Åª¤Ê´ØÏ¢Ç§¼±¤Î»ý¤Á¼ç¤Ç¤¹¡£
        • +
        • ¥Þ¥ê¡¼¤Ï¾¤Î¿Í¤ËÂФ·¤ÆÉÒ´¶¤Ç¤¹¡£Èà½÷¤Ë¤ÏÁê¼ê¤Ë¶¦´¶¤¹¤ëǽÎϤ¬¤¢¤ê¡¢¼«Ê¬¤¬´Ø·¸¤Ç¤­¤Æ¡ÖÁê¼ê¤ÎΩ¾ì¤ËΩ¤Ã¤Æ¤â¤Î¤´¤È¤òÍý²ò½ÐÍ褿¡×¤È´¶¤¸¤ë¤Þ¤ÇÏäòʹ¤¯·¹¸þ¤¬¤¢¤ê¤Þ¤¹¡£Èà½÷¤Ï¼«Ê¬¤ËÃ챤ò¤â¤¿¤é¤¹¡¢Â¾¤Î¿Í¤Î·Ð¸³¤ò¶¦Í­¤¹¤ë¤³¤È¤Ç³Ø¤Ü¤¦¤È¤·¤Þ¤¹¡£ ¾¤Î¿Í¤ÈÏä¹»þ¡¢Èà½÷¤ÏÂÐΩ¤òÈò¤±¡¢²Äǽ¤Ê¤é¤Ð¤·¤Ð¤·¤ÐÏÀÍýŪ¤ÊÄ󰯤Ǿ¤Î¿Í¤Î¼ê½õ¤±¤ò¤·¤è¤¦¤È»î¤ß¤Þ¤¹¡£¥Þ¥ê¡¼¤Ïŵ·¿Åª¤Ê´ØÏ¢Ç§¼±¤Î»ý¤Á¼ç¤Ç¤¹¡£
        -¤³¤ì¤é¤ÎÎã¤ÇʬΥǧ¼±¤ÏÃËÀ­¤Ç´ØÏ¢Ç§¼±¤Ï½÷À­¤Ç¤¢¤ë¤³¤È¤Ëµ¤ÉÕ¤­¤Þ¤·¤¿¤«? ¤¤¤¯¤Ä¤«¤Î¸¦µæ¤ÇÅý·×³ØÅª¤Ë¤³¤Î¤è¤¦¤Ë¤Ê¤ë·¹¸þ¤¬¤¢¤ë¤³¤È¤¬Ê¬¤«¤Ã¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¤Ê¤¬¤é³Æ¸Ä¿Í¤Ï2¤Ä¤Î¶Ëü¤ÊÈϰϤÎÃæ¤Î¤É¤³¤«¤Ë°ÌÃ֤Ť±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤ì¤é¤ÎÎã¤ÇʬΥǧ¼±¤ÏÃËÀ­¤Ç´ØÏ¢Ç§¼±¤Ï½÷À­¤Ç¤¢¤ë¤³¤È¤Ëµ¤ÉÕ¤­¤Þ¤·¤¿¤«? ¤¤¤¯¤Ä¤«¤Î¸¦µæ¤ÇÅý·×³ØÅª¤Ë¤³¤Î¤è¤¦¤Ë¤Ê¤ë·¹¸þ¤¬¤¢¤ë¤³¤È¤¬Ê¬¤«¤Ã¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¤Ê¤¬¤é³Æ¸Ä¿Í¤Ï2¤Ä¤Î¶Ëü¤ÊÈϰϤÎÃæ¤Î¤É¤³¤«¤Ë°ÌÃ֤Ť±¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ ¶¨ÎÏŪ¤«¤Ä¸ú²ÌŪ¤Ê¥°¥ë¡¼¥×³Ø½¬¤Ç¤ÏÁ´°÷¤¬Î¾Êý¤Îǧ¼±ÊýË¡¤ò»È¤¦¤³¤È¤¬ºÇÎɤÀ¤È¹Í¤¨¤é¤ì¤Þ¤¹¡£ -¥ª¥ó¥é¥¤¥ó¥Õ¥©¡¼¥é¥à¤Î¤è¤¦¤ÊÆÃÊ̤ʾõ¶·¤Ç¤Ï¡¢1¤Ä¤ÎÅê¹Æ¤Ç¤É¤Á¤é¤«¤ÎÀ­¼Á¤Þ¤¿¤ÏξÊý¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£°ìÈÌŪ¤Ë´ØÏ¢Ç§¼±¤ò»ý¤Ã¤¿¿Í¤Ï¡¢´ØÏ¢Ç§¼±¤¬¶¯¤¤Åê¹Æ¤Þ¤¿¤Ï¤½¤ÎµÕ¤ÎÅê¹Æ¤ò¹Ô¤¤¤Þ¤¹¡£¤³¤Î¹Í¤¨Êý¤ò¸µ¤Ë¤½¤ì¤¾¤ì¤ÎÅê¹Æ¤òɾ²Á¤¹¤ëÌÜŪ¤Ï²¼µ­¤ÎÄ̤ê¤Ç¤¹: +¥ª¥ó¥é¥¤¥ó¥Õ¥©¡¼¥é¥à¤Î¤è¤¦¤ÊÆÃÊ̤ʾõ¶·¤Ç¤Ï¡¢1¤Ä¤ÎÅê¹Æ¤Ç¤É¤Á¤é¤«¤ÎÀ­¼ÁËô¤ÏξÊý¤ò¸«¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£°ìÈÌŪ¤Ë´ØÏ¢Ç§¼±¤ò»ý¤Ã¤¿¿Í¤Ï¡¢´ØÏ¢Ç§¼±¤¬¶¯¤¤Åê¹ÆËô¤Ï¤½¤ÎµÕ¤ÎÅê¹Æ¤ò¹Ô¤¤¤Þ¤¹¡£¤³¤Î¹Í¤¨Êý¤ò¸µ¤Ë¤½¤ì¤¾¤ì¤ÎÅê¹Æ¤òɾ²Á¤¹¤ëÌÜŪ¤Ï²¼µ­¤Î¤È¤ª¤ê¤Ç¤¹:
        -a)¤¢¤Ê¤¿¤¬¤³¤ì¤é¤Îµ­»ö¤òÆÉ¤ó¤Ç¾¤ÎÅê¹Æ¤ò¤É¤Î¤è¤¦¤Ë¹Í¤¨¤ë¤«¤ò¼ê½õ¤±¤¹¤ë¤¿¤á
        +a)¤¢¤Ê¤¿¤¬¤³¤ì¤é¤Îµ­»ö¤òÆÉ¤ó¤Ç¾¤ÎÅê¹Æ¤ò¤É¤Î¤è¤¦¤Ë¹Í¤¨¤ë¤«¤ò¼ê½õ¤±¤¹¤ë¤¿¤á
        b)Åê¹Æ¼Ô¤Ë¾¤Î¿Í¤«¤é¤É¤Î¤è¤¦¤Ë¸«¤é¤ì¤Æ¤¤¤ë¤«¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¹¤ë¤¿¤á
        ·ë²Ì¤Ï¤É¤Î¤è¤¦¤Ê¾ì¹ç¤Ç¤â³ØÀ¸¤Îɾ²Á»È¤ï¤º¤Ë¡¢¥³¥ß¥å¥Ë¥±¡¼¥·¥ç¥óǽÎϤȳؽ¬¤ò¸þ¾å¤µ¤»¤ë¤¿¤á¤Ë »È¤¤¤Þ¤¹¡£ -
        +
        ¶½Ì£¤¬¤¢¤ëÊý¤Î¤¿¤á¤Ë¡¢¤³¤ì¤é¤ÎÍýÏÀ¤òÆÈ¼«¤Ë¹Í°Æ¤·¤¿¸¦µæ¼Ô¤Î»²¹Íʸ¸¥¤ò·ÇºÜ¤·¤Þ¤¹¡£:
          @@ -29,7 +29,7 @@ b)
        • Belenky, M.F. (Eds.), Knowledge, Difference, and Power; Essays inspired by “Women’s Ways of Knowing” (pp. 205-247). New York, NY: Basic Books.
        • 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.
        • 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. -
          +
        diff --git a/lang/ja/help/forum/rssarticles.html b/lang/ja/help/forum/rssarticles.html index 5094979b7c4..9153b9e5da0 100644 --- a/lang/ja/help/forum/rssarticles.html +++ b/lang/ja/help/forum/rssarticles.html @@ -1,5 +1,5 @@ -

        RSS¤ÎºÇ¿·µ­»ö¿ô

        +

        RSS¤ÎºÇ¿·µ­»ö¿ô

        -

        ¤³¤³¤Ç¤Ï¡¢RSS¥Õ¥£¡¼¥É¤Ë´Þ¤Þ¤ì¤ëµ­»ö¿ô¤òÀßÄꤷ¤Þ¤¹¡£

        +

        ¤³¤³¤Ç¤Ï¡¢RSS¥Õ¥£¡¼¥É¤Ë´Þ¤Þ¤ì¤ëµ­»ö¿ô¤òÀßÄꤷ¤Þ¤¹¡£ -

        ¤Û¤È¤ó¤É¤Î¥Õ¥©¡¼¥é¥à¤Ç¤Ï¡¢5¤«¤é20¤Î´Ö¤¬Å¬Åö¤Ç¤¢¤ë¤È»×¤ï¤ì¤Þ¤¹¡£¥Õ¥©¡¼¥é¥à¤¬³èȯ¤Ê¾ì¹ç¤Ï¡¢¤³¤ÎÃͤòÁý¤ä¤·¤Æ¤¯¤À¤µ¤¤¡£

        +

        ËØ¤É¤Î¥Õ¥©¡¼¥é¥à¤Ç¤Ï¡¢5¤«¤é20¤Î´Ö¤¬Å¬Åö¤Ç¤¢¤ë¤È»×¤ï¤ì¤Þ¤¹¡£¥Õ¥©¡¼¥é¥à¤¬³èȯ¤Ê¾ì¹ç¡¢¤³¤ÎÃͤòÁý¤ä¤·¤Æ¤¯¤À¤µ¤¤¡£ diff --git a/lang/ja/help/forum/rsstype.html b/lang/ja/help/forum/rsstype.html index e0a786657c0..20825f9c1d2 100644 --- a/lang/ja/help/forum/rsstype.html +++ b/lang/ja/help/forum/rsstype.html @@ -1,11 +1,11 @@ -

        ¥Õ¥©¡¼¥é¥à¤ÎRSS¥Õ¥£¡¼¥É

        +

        ¥Õ¥©¡¼¥é¥à¤ÎRSS¥Õ¥£¡¼¥É

        -

        ¤³¤³¤Ç¤Ï¡¢¥Õ¥©¡¼¥é¥à¤ÎRSS¥Õ¥£¡¼¥É¤òÍøÍѲĤˤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¤³¤³¤Ç¤Ï¡¢¥Õ¥©¡¼¥é¥à¤ÎRSS¥Õ¥£¡¼¥É¤òÍøÍѲĤˤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        -

        RSS¥Õ¥£¡¼¥É¤Ï¡¢2¼ïÎà¤ÎÃæ¤«¤éÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹:

        +

        RSS¥Õ¥£¡¼¥É¤Ï¡¢2¼ïÎà¤ÎÃæ¤«¤éÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹:

        -
          -
        • ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó: ¥Õ¥©¡¼¥é¥àÆâ¤Î¿·¤·¤¤¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤ª¤è¤ÓºÇ½é¤ÎÅê¹Æ¤Ë´Ø¤·¤ÆRSS¥Õ¥£¡¼¥É¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ +
            +
          • ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó: ¥Õ¥©¡¼¥é¥àÆâ¤Î¿·¤·¤¤¥Ç¥£¥¹¥«¥Ã¥·¥ç¥óµÚ¤ÓºÇ½é¤ÎÅê¹Æ¤Ë´Ø¤·¤ÆRSS¥Õ¥£¡¼¥É¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -
          • Åê¹Æ: ¥Õ¥©¡¼¥é¥àÆâ¤ÎÁ´¤Æ¤ÎÅê¹Æ¤Ë´Ø¤·¤Æ´Ø¤·¤ÆRSS¥Õ¥£¡¼¥É¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ -
          +
        • Åê¹Æ: ¥Õ¥©¡¼¥é¥àÆâ¤ÎÁ´¤Æ¤ÎÅê¹Æ¤Ë´Ø¤·¤Æ´Ø¤·¤ÆRSS¥Õ¥£¡¼¥É¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ +
        \ No newline at end of file diff --git a/lang/ja/help/forum/subscription.html b/lang/ja/help/forum/subscription.html index e1d9d9d9e45..146e995bd36 100644 --- a/lang/ja/help/forum/subscription.html +++ b/lang/ja/help/forum/subscription.html @@ -1,9 +1,12 @@ -

        ¥á¡¼¥ëÄÌÃÎÅÐÏ¿

        +

        ¥á¡¼¥ëÄÌÃÎÅÐÏ¿

        -

        ¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤ò¹Ô¤¦¤³¤È¤Ë¤è¤ê¡¢ÅÐÏ¿¼Ô¤Ë¤ÏÁ´¤Æ¤ÎÅê¹ÆÆâÍÆ¤¬¥á¡¼¥ëÇÛ¿®¤µ¤ì¤Þ¤¹¡£(¥á¡¼¥ë¤Ïµ­»ö¤ÎÅê¹Æ maxeditingtime/60 ?> ʬ¸å¤ËÇÛ¿®¤µ¤ì¤Þ¤¹)

        +

        ¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤ò¹Ô¤¦¤³¤È¤Ë¤è¤ê¡¢ÅÐÏ¿¼Ô¤Ë¤ÏÁ´¤Æ¤ÎÅê¹ÆÆâÍÆ¤¬¥á¡¼¥ëÇÛ¿®¤µ¤ì¤Þ¤¹¡£ +(¥á¡¼¥ë¤Ïµ­»ö¤ÎÅê¹Æ maxeditingtime/60 ?> ʬ¸å¤ËÇÛ¿®¤µ¤ì¤Þ¤¹) -

        Ä̾¤½¤ì¤¾¤ì¤¬¥Õ¥©¡¼¥é¥à¤Ç¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤ò¹Ô¤¦¤«Èݤ«¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        Ä̾綠¤ì¤¾¤ì¥Õ¥©¡¼¥é¥à¤Ç¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤ò¹Ô¤¦¤«Èݤ«¤òÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ -

        ¶µ»Õ¤¬ÆÃÄê¤Î¥Õ¥©¡¼¥é¥à¤Ø¶¯À©Åª¤ËÁ´°÷¤òÅÐÏ¿¤·¤¿¤È¤­¤Ï¡¢¥¯¥é¥¹¤ÎÁ´°÷¤ËÅê¹ÆÆâÍÆ¤¬¥á¡¼¥ëÇÛ¿®¤µ¤ì¤Þ¤¹¡£

        +

        ¶µ»Õ¤¬ÆÃÄê¤Î¥Õ¥©¡¼¥é¥à¤Ø¶¯À©Åª¤ËÁ´°÷¤òÅÐÏ¿¤·¤¿¤È¤­¤Ï¡¢¥¯¥é¥¹¤ÎÁ´°÷¤ËÅê¹ÆÆâÍÆ¤¬¥á¡¼¥ëÇÛ¿®¤µ¤ì¤Þ¤¹¡£ -

        ¤³¤Îµ¡Ç½¤Ï¡¢¥Ë¥å¡¼¥¹¥Õ¥©¡¼¥é¥à¤ä¿·¤¿¤Ë¥³¡¼¥¹¤ò³«¹Ö¤¹¤ë»þ¤ËÆÃ¤ËÊØÍø¤Ç¤¹¡£(»öÁ°¤Ë¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò³ØÀ¸¼«¿È¤ÇÅÐÏ¿¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹)

        +

        ¤³¤Îµ¡Ç½¤Ï¥Ë¥å¡¼¥¹¥Õ¥©¡¼¥é¥à¤ä¿·¤¿¤Ë¥³¡¼¥¹¤ò³«¹Ö¤¹¤ë»þ¤ËÆÃ¤ËÊØÍø¤Ç¤¹¡£ +(»öÁ°¤Ë¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò³ØÀ¸¼«¿È¤ÇÅÐÏ¿¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹) +

        diff --git a/lang/ja/help/forum/subscription2.html b/lang/ja/help/forum/subscription2.html index 87668c9c09a..b640cfd85a8 100644 --- a/lang/ja/help/forum/subscription2.html +++ b/lang/ja/help/forum/subscription2.html @@ -9,7 +9,7 @@

        ¤³¤Îµ¡Ç½¤Ï¡¢¥Ë¥å¡¼¥¹¥Õ¥©¡¼¥é¥à¤ä¿·¤¿¤Ë¥³¡¼¥¹¤ò³«¹Ö¤¹¤ë»þ¤ËÆÃ¤ËÊØÍø¤Ç¤¹¡£(»öÁ°¤Ë¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò³ØÀ¸¼«¿È¤ÇÅÐÏ¿¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹)

        -

        ¤â¤·¡¢¤¢¤Ê¤¿¤¬¡ÖYes, ºÇ½é¤Î¤ß¡×¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤¿¾ì¹ç¡¢¸½ºß¤ª¤è¤Ó̤Íè¤ÎÁ´¥³¡¼¥¹¥æ¡¼¥¶¤Ï½é´üŪ¤Ë¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤µ¤ì¤Þ¤¹¤¬¡¢¤¤¤Ä¤Ç¤â¼«Ê¬¤ÇÅÐÏ¿²ò½ü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤â¤·¡¢¡ÖYes, ̵´ü¸Â¡×¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤¿¾ì¹ç¤Ï¡¢¼«Ê¬¤ÇÅÐÏ¿²ò½ü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£

        +

        ¤â¤·¡¢¤¢¤Ê¤¿¤¬¡ÖYes, ºÇ½é¤Î¤ß¡×¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤¿¾ì¹ç¡¢¸½ºßµÚ¤Ó̤Íè¤ÎÁ´¥³¡¼¥¹¥æ¡¼¥¶¤Ï½é´üŪ¤Ë¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤µ¤ì¤Þ¤¹¤¬¡¢¤¤¤Ä¤Ç¤â¼«Ê¬¤ÇÅÐÏ¿²ò½ü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤â¤·¡¢¡ÖYes, ̵´ü¸Â¡×¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤¿¾ì¹ç¤Ï¡¢¼«Ê¬¤ÇÅÐÏ¿²ò½ü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£

        ¡ÖYes, ºÇ½é¤Î¤ß¡×¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤¿¥Õ¥©¡¼¥é¥à¤ò¹¹¿·¤¹¤ë¾ì¹ç¤ÎÃí°Õ: ¡ÖYes, ºÇ½é¤Î¤ß¡×¤«¤é¡ÖNo¡×¤ËÊѹ¹¤¹¤ë¤È¡¢¸½ºß¤Î¥æ¡¼¥¶¤ÏÅÐÏ¿²ò½ü¤µ¤ì¤Þ¤»¤ó¡£¤³¤ì¤Ï¡¢¥ª¥×¥·¥ç¥óÊѹ¹¸å¤ËÅÐÏ¿¤¹¤ë¥æ¡¼¥¶¤Ë¤Î¤ß±Æ¶Á¤·¤Þ¤¹¡£Æ±¤¸¤¯¡¢¡ÖYes, ºÇ½é¤Î¤ß¡×¤ËÊѹ¹¤¹¤ë¾ì¹ç¡¢¸½ºß¤Î¥³¡¼¥¹¥æ¡¼¥¶¤Ï¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤µ¤ì¤Þ¤»¤ó¡£¥ª¥×¥·¥ç¥óÊѹ¹¸å¤ËÅÐÏ¿¤¹¤ë¥æ¡¼¥¶¤Î¤ß¤¬¥á¡¼¥ëÄÌÃÎÅÐÏ¿¤µ¤ì¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/aliases.html b/lang/ja/help/glossary/aliases.html index 7131d218f9a..9501270709d 100644 --- a/lang/ja/help/glossary/aliases.html +++ b/lang/ja/help/glossary/aliases.html @@ -1,5 +1,5 @@ -

        ¥­¡¼¥ï¡¼¥É

        +

        ¥­¡¼¥ï¡¼¥É

        -

        ÍѸ콸¤Î³Æ¥¨¥ó¥È¥ê¤Ï´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥­¡¼¥ï¡¼¥É°ìÍ÷(¤Þ¤¿¤Ï¥¨¥¤¥ê¥¢¥¹)¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ÍѸ콸¤Î³Æ¥¨¥ó¥È¥ê¤Ï´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥­¡¼¥ï¡¼¥É°ìÍ÷(Ëô¤Ï¥¨¥¤¥ê¥¢¥¹)¤ò»ý¤Ä¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        -

        ¤³¤ì¤é¤Î¸ÀÍդϥ¨¥ó¥È¥ê¤ò»²¾È¤¹¤ë¤¿¤á¤Ë¡¢ÂåÂØÅª¤Ë»ÈÍѤǤ­¤Þ¤¹¡£Î㤨¤Ð¡¢¤³¤ì¤é¤Ï¼«Æ°¥ê¥ó¥¯¤¬ºîÀ®¤µ¤ì¤ë»þ¤ËÍøÍѤµ¤ì¤Þ¤¹¡£

        +

        ¤³¤ì¤é¤Î¸ÀÍդϥ¨¥ó¥È¥ê¤ò»²¾È¤¹¤ë°Ù¤Ë¡¢ÂåÂØÅª¤Ë»ÈÍѽÐÍè¤Þ¤¹¡£Î㤨¤Ð¡¢¤³¤ì¤é¤Ï¼«Æ°¥ê¥ó¥¯¤¬ºîÀ®¤µ¤ì¤ë»þ¤ËÍøÍѤµ¤ì¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/aliases2.html b/lang/ja/help/glossary/aliases2.html deleted file mode 100644 index bc507528b11..00000000000 --- a/lang/ja/help/glossary/aliases2.html +++ /dev/null @@ -1,8 +0,0 @@ -

        ¥­¡¼¥ï¡¼¥É

        - -

        ÍѸ콸¤Î³Æ¥¨¥ó¥È¥ê¤Ë¤Ï´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥­¡¼¥ï¡¼¥É¥ê¥¹¥È ( ¥¨¥¤¥ê¥¢¥¹ ) ¤òÉղ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£

        - -

        ¿·¤·¤¤¹Ô¤Ë¥«¥ó¥Þ¤ÇʬΥ¤»¤º¤Ë¥¨¥¤¥ê¥¢¥¹¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£

        - -

        ¥¨¥¤¥ê¥¢¥¹¤Îñ¸ì¤ä¥Õ¥ì¡¼¥º¤Ï¡¢¥¨¥ó¥È¥ê¤ò»²¾È¤¹¤ëÂåÂØ¼êÃʤȤ·¤Æ»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -Î㤨¤ÐÍѸ콸¤Î¼«Æ°¥ê¥ó¥¯¥Õ¥£¥ë¥¿¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¢¥¨¥¤¥ê¥¢¥¹ ( Ʊ»þ¤Ë¥¨¥ó¥È¥ê̾ ) ¤¬¥¨¥ó¥È¥ê¤Ø¤Î¼«Æ°¥ê¥ó¥¯¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/allowcomments.html b/lang/ja/help/glossary/allowcomments.html index f3edbc771a8..95fb19fb8ea 100644 --- a/lang/ja/help/glossary/allowcomments.html +++ b/lang/ja/help/glossary/allowcomments.html @@ -1,5 +1,5 @@ -

        ¥¨¥ó¥È¥ê¤Ø¤Î¥³¥á¥ó¥È¤òµö²Ä¤¹¤ë

        +

        ¥¨¥ó¥È¥ê¡¼¤Ø¤Î¥³¥á¥ó¥È¤òµö²Ä¤¹¤ë

        -

        ÍѸ콸¤Î¥¨¥ó¥È¥ê¤Ë¥³¥á¥ó¥È¤ÎÅê¹Æ¤òµö²Ä¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ÍѸ콸¤Î¥¨¥ó¥È¥ê¡¼¤Ë¥³¥á¥ó¥È¤ÎÅê¹Æ¤òµö²Ä¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        -

        ¤³¤ÎÀßÄê¤ò»ÈÍѤ¹¤ë¤«Èݤ«¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¤³¤ÎÀßÄê¤ò»ÈÍѤ¹¤ë¤«Èݤ«¤òÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/allowduplicatedentries.html b/lang/ja/help/glossary/allowduplicatedentries.html index 9741dc6ff60..5eb444f2a24 100644 --- a/lang/ja/help/glossary/allowduplicatedentries.html +++ b/lang/ja/help/glossary/allowduplicatedentries.html @@ -1,3 +1,3 @@ -

        ½ÅÊ£¥¨¥ó¥È¥ê¤òµö²Ä¤¹¤ë

        +

        ½ÅÊ£¥¨¥ó¥È¥ê¡¼¤òµö²Ä¤¹¤ë

        -

        ¤³¤ÎÀßÄê¤òYes¤Ë¤·¤¿¾ì¹ç¡¢Æ±°ì¤ÎÍѸì¤ËÊ£¿ô¤Î¥¨¥ó¥È¥ê¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¤³¤ÎÀßÄê¤òYes¤Ë¤·¤¿¾ì¹ç¡¢Æ±°ì¤ÎÍѸì¤ËÊ£¿ô¤Î¥¨¥ó¥È¥ê¡¼¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/allowprintview.html b/lang/ja/help/glossary/allowprintview.html deleted file mode 100644 index a0a850ca258..00000000000 --- a/lang/ja/help/glossary/allowprintview.html +++ /dev/null @@ -1,7 +0,0 @@ -

        °õºþ¥â¡¼¥É¤òµö²Ä¤¹¤ë

        - -

        ³ØÀ¸¤¬ÍѸ콸¤Î°õºþ¥â¡¼¥É¤Î»ÈÍѤòµö²Ä¤·¤Þ¤¹¡£

        - -

        ¤³¤Îµ¡Ç½¤ÎÍ­¸ú¡¦Ìµ¸ú¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        - -

        ¶µ»Õ¤Ï¾ï¤Ë°õºþ¥â¡¼¥É¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/attachment.html b/lang/ja/help/glossary/attachment.html deleted file mode 100644 index 58aa970e6d4..00000000000 --- a/lang/ja/help/glossary/attachment.html +++ /dev/null @@ -1,14 +0,0 @@ -

        ¥¨¥ó¥È¥ê¤Ø¤Î¥Õ¥¡¥¤¥ëźÉÕ

        - -

        1¤Ä¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤Î¥Õ¥¡¥¤¥ë¤òÍѸ콸¤Î¥¨¥ó¥È¥ê¤ËźÉÕ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¡¢¥¨¥ó¥È¥ê¤È°ì½ï¤ËÊݸ¤µ¤ì¤Þ¤¹¡£

        - -

        Î㤨¤Ð¡¢¼Ì¿¿¤äWord¥É¥­¥å¥á¥ó¥È¤ò¶¦Í­¤·¤¿¤¤»þ¤ËÊØÍø¤Ç¤¹¡£

        - -

        ¤É¤Î¤è¤¦¤Ê¼ïÎà¤Î¥Õ¥¡¥¤¥ë¤âźÉÕ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢Word¥É¥­¥å¥á¥ó¥È .doc¡¢ -¥¤¥á¡¼¥¸ .jpg ¤Þ¤¿¤Ï .png ¤Î¤è¤¦¤Êɸ½àŪ¤Ê3ʸ»ú¤ÎÀÜÈø¼­¤ò»ÈÍѤµ¤ì¤ë¤³¤È¤ò¶¯¤¯¤ª´«¤á¤·¤Þ¤¹¡£ -¤³¤Î¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç¡¢Â¾¤Î¿Í¤¬¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤¿¸å¤Ë¡¢ÆâÍÆ¤òɽ¼¨¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£

        - -

        ¥¨¥ó¥È¥ê¤òÊÔ½¸¤·¤Æ¿·¤·¤¤ÅºÉÕ¥Õ¥¡¥¤¥ë¤òÅÐÏ¿¤¹¤ë¾ì¹ç¡¢°ÊÁ°¤Î¥Õ¥¡¥¤¥ë¤ÏºÇ¿·¤Î¤â¤Î¤ÈÆþ¤ìÂØ¤¨¤é¤ì¤Þ¤¹¡£

        - -

        ¥¨¥ó¥È¥ê¤òÊÔ½¸¤·¤ÆÅºÉÕ¥Õ¥¡¥¤¥ëÍó¤ò¶õÇò¤Ë¤¹¤ë¾ì¹ç¡¢°ÊÁ°¤Î¥Õ¥¡¥¤¥ë¤Ï¤½¤Î¤Þ¤Þ¤Ë¤µ¤ì¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/casesensitive.html b/lang/ja/help/glossary/casesensitive.html index 6b9ac4648ed..5fe29b22de4 100644 --- a/lang/ja/help/glossary/casesensitive.html +++ b/lang/ja/help/glossary/casesensitive.html @@ -1,5 +1,5 @@ -

        Âçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤ò¹Ô¤¦

        +

        Âçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤ò¹Ô¤¦

        -

        ¤³¤³¤Ç¤Ï¥¨¥ó¥È¥ê¤Î¼«Æ°¥ê¥ó¥¯¤ò¹Ô¤¦¾ì¹ç¤Ë¡¢Âçʸ»ú¡¦¾®Ê¸»ú¤ò¸·Ì©¤Ë¶èÊ̤¹¤ëɬÍפ¬¤¢¤ë¤Î¤«Èݤ«¤òÀßÄꤷ¤Þ¤¹¡£

        +

        ¤³¤³¤Ç¤Ï¥¨¥ó¥È¥ê¤Î¼«Æ°¥ê¥ó¥¯¤ò¹Ô¤¦¾ì¹ç¤Ë¡¢Âçʸ»ú¡¦¾®Ê¸»ú¤ò¸·Ì©¤Ë¶èÊ̤¹¤ëɬÍפ¬¤¢¤ë¤Î¤«Èݤ«¤òÀßÄꤷ¤Þ¤¹¡£

        Î㤨¤Ð¡¢¤³¤ì¤ò¥Á¥§¥Ã¥¯¤·¤¿¾ì¹ç¡¢¡Öhtml¡×¤È¤¤¤¦¸ÀÍÕ¤¬¥Õ¥©¡¼¥é¥à¤Î¥Ý¥¹¥È¤ËÅê¹Æ¤µ¤ì¤Æ¤â¡¢ÍѸ콸¤Î¡ÖHTML¡×¤È¤¤¤¦ÍѸì¤Ë¤Ï¥ê¥ó¥¯¤µ¤ì¤Þ¤»¤ó¡£

        diff --git a/lang/ja/help/glossary/defaultapproval.html b/lang/ja/help/glossary/defaultapproval.html index 8a562760a22..48590960175 100644 --- a/lang/ja/help/glossary/defaultapproval.html +++ b/lang/ja/help/glossary/defaultapproval.html @@ -1,4 +1,4 @@ -

        ¥Ç¥Õ¥©¥ë¥È¤Î¾µÇ§¾õÂÖ

        +

        ¥Ç¥Õ¥©¥ë¥È¤Î¾µÇ§¾õÂÖ

        -

        ¤³¤³¤Ç¤Ï³ØÀ¸¤¬¥¨¥ó¥È¥ê¤òÄɲä·¤¿»þ¤Ë¡¢¤É¤Î¤è¤¦¤Ë½èÍý¤¹¤ë¤«¤ò¶µ»Õ¤¬ÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¥¨¥ó¥È¥ê¤ò¼«Æ°Åª¤Þ¤¿¤Ï¶µ»Õ¤Î¾µÇ§¸å¤Ë¸ø³«¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¤³¤³¤Ç¤Ï³ØÀ¸¤¬¥¨¥ó¥È¥ê¡¼¤òÄɲä·¤¿»þ¤Ë¡¢¤É¤Î¤è¤¦¤Ë½èÍý¤¹¤ë¤«¤ò¶µ»Õ¤¬ÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +¥¨¥ó¥È¥ê¡¼¤ò¼«Æ°ÅªËô¤Ï¶µ»Õ¤Î¾µÇ§¸å¤Ë¸ø³«¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/displayformat.html b/lang/ja/help/glossary/displayformat.html index 790e646956c..d57e6c4140f 100644 --- a/lang/ja/help/glossary/displayformat.html +++ b/lang/ja/help/glossary/displayformat.html @@ -14,7 +14,7 @@
        É´²Ê¼­½ñ:
        ¡Ö¥Õ¥ë¡¢Ãø¼ÔÍ­¤ê¡×¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¤¬¡¢¥¤¥á¡¼¥¸¤ÏÍѸ콸¤ÎÆâÉô¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
        FAQ:
        -
        Îɤ¯¤¢¤ë¼ÁÌä¤Î°ìÍ÷¤òɽ¼¨¤¹¤ë¤Î¤ËÍ­ÍѤǤ¹¡£¤½¤ì¤¾¤ì¤Î¡ÖÍѸì¡×¤ª¤è¤Ó¡ÖÄêµÁ¡×¤Ë¡¢¼«Æ°Åª¤Ë¡Ö¼ÁÌä¡×¤ª¤è¤Ó¡ÖÅú¤¨¡×¤Îʸ»ú¤¬Äɲ䵤ì¤Þ¤¹¡£
        +
        Îɤ¯¤¢¤ë¼ÁÌä¤Î°ìÍ÷¤òɽ¼¨¤¹¤ë¤Î¤ËÍ­ÍѤǤ¹¡£¤½¤ì¤¾¤ì¤Î¡ÖÍѸì¡×µÚ¤Ó¡ÖÄêµÁ¡×¤Ë¡¢¼«Æ°Åª¤Ë¡Ö¼ÁÌä¡×µÚ¤Ó¡ÖÅú¤¨¡×¤Îʸ»ú¤¬Äɲ䵤ì¤Þ¤¹¡£
        diff --git a/lang/ja/help/glossary/entbypage.html b/lang/ja/help/glossary/entbypage.html index 0690808c420..96bc42e8b98 100644 --- a/lang/ja/help/glossary/entbypage.html +++ b/lang/ja/help/glossary/entbypage.html @@ -1,5 +1,5 @@ -

        1¥Ú¡¼¥¸¤¢¤¿¤ê¤Îɽ¼¨¥¨¥ó¥È¥ê¿ô¤ÎÀßÄê

        +

        1¥Ú¡¼¥¸¤¢¤¿¤ê¤Îɽ¼¨¥¨¥ó¥È¥ê¡¼¿ô¤ÎÀßÄê

        -

        ÍѸ콸¤Ç¤Ï1¥Ú¡¼¥¸¤¢¤¿¤ê¤Ëɽ¼¨¤µ¤ì¤ë¥¨¥ó¥È¥ê¤Î¿ô¤òÀ©¸Â¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ÍѸ콸¤Ç¤Ï1¥Ú¡¼¥¸¤¢¤¿¤ê¤Ëɽ¼¨¤µ¤ì¤ë¥¨¥ó¥È¥ê¡¼¤Î¿ô¤òÀ©¸Â¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        -

        ¿¤¯¤Î¼«Æ°¥ê¥ó¥¯¥¨¥ó¥È¥ê¤¬¤¢¤ë¾ì¹ç¡¢Ä¹¤¤¥í¡¼¥Ç¥£¥ó¥°»þ´Ö¤òÈò¤±¤ë¤¿¤á¤Ë¡¢¤³¤ÎÃͤò¾®¤µ¤¯¤·¤Æ¤¯¤À¤µ¤¤¡£

        +

        ¿¤¯¤Î¼«Æ°¥ê¥ó¥¯¥¨¥ó¥È¥ê¡¼¤¬¤¢¤ë¾ì¹ç¡¢Ä¹¤¤¥í¡¼¥Ç¥£¥ó¥°»þ´Ö¤òÈò¤±¤ë°Ù¤Ë¡¢¤³¤ÎÃͤò¾®¤µ¤¯¤·¤Æ¤¯¤À¤µ¤¤¡£

        diff --git a/lang/ja/help/glossary/filetoimport.html b/lang/ja/help/glossary/filetoimport.html index f417ce80e49..2efc093d888 100644 --- a/lang/ja/help/glossary/filetoimport.html +++ b/lang/ja/help/glossary/filetoimport.html @@ -1,3 +1,3 @@ -

        ¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥Õ¥¡¥¤¥ë

        +

        ¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥Õ¥¡¥¤¥ë

        -

        ¤¢¤Ê¤¿¤Î¥³¥ó¥Ô¥å¡¼¥¿¤Ë¤¢¤ë¡¢¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥¨¥ó¥È¥ê¤ò´Þ¤ó¤ÀXML¥Õ¥¡¥¤¥ë¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£

        +

        ¤¢¤Ê¤¿¤Î¥³¥ó¥Ô¥å¡¼¥¿¤Ë¤¢¤ë¡¢¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥¨¥ó¥È¥ê¤ò´Þ¤ó¤ÀXML¥Õ¥¡¥¤¥ë¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£

        diff --git a/lang/ja/help/glossary/fullmatch.html b/lang/ja/help/glossary/fullmatch.html index 63ddbcf6dc2..2c9090839db 100644 --- a/lang/ja/help/glossary/fullmatch.html +++ b/lang/ja/help/glossary/fullmatch.html @@ -1,4 +1,4 @@ -

        ´°Á´°ìÃ×

        +

        ´°Á´°ìÃ×

        ¡Ö¥¨¥ó¥È¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤µ¤»¤ë¡×¤òON¤Ë¤·¤Æ¡¢¤³¤ÎÀßÄê¤òON¤Ë¤¹¤ë¤È¡¢Ã±¸ì¤¬´°Á´¤Ë°ìÃפ·¤¿¾ì¹ç¤Î¤ß¥ê¥ó¥¯¤¬Ä¥¤é¤ì¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/globalglossary.html b/lang/ja/help/glossary/globalglossary.html index f518d78d03e..6fc10569cea 100644 --- a/lang/ja/help/glossary/globalglossary.html +++ b/lang/ja/help/glossary/globalglossary.html @@ -1,7 +1,7 @@ -

        ¥°¥í¡¼¥Ð¥ëÍѸ콸¤ÎÄêµÁ

        +

        ¥°¥í¡¼¥Ð¥ëÍѸ콸¤ÎÄêµÁ

        -

        ´ÉÍý¼Ô¤ÏÍѸ콸¤ò¥°¥í¡¼¥Ð¥ë¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ´ÉÍý¼Ô¤ÏÍѸ콸¤ò¥°¥í¡¼¥Ð¥ë¤Ë¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        -

        ¥°¥í¡¼¥Ð¥ëÍѸ콸¤Ï¡¢Á´¤Æ¤Î¥³¡¼¥¹¤Ë°¤¹¤ë¤³¤È(Ä̾ï¤Ï¥Õ¥í¥ó¥È¥Ú¡¼¥¸)¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¥°¥í¡¼¥Ð¥ëÍѸ콸¤Ï¡¢Á´¤Æ¤Î¥³¡¼¥¹¤Ç¥Õ¥í¥ó¥È¥Ú¡¼¥¸¤Ë¤Æ»ÈÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        Ä̾ï¤Î¥í¡¼¥«¥ëÍѸ콸¤È¤Î°ã¤¤¤Ï¡¢¥°¥í¡¼¥Ð¥ëÍѸ콸¤¬Â°¤·¤Æ¤¤¤ëƱ°ì¥³¡¼¥¹¤À¤±¤Ç¤Ï̵¤¯¡¢Á´¥µ¥¤¥È¤òÄ̤·¤Æ¼«Æ°¥ê¥ó¥¯¤¬ºîÀ®¤µ¤ì¤ëÅÀ¤Ë¤¢¤ê¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/index.html b/lang/ja/help/glossary/index.html index d05f904cc14..842d2a8731f 100644 --- a/lang/ja/help/glossary/index.html +++ b/lang/ja/help/glossary/index.html @@ -3,31 +3,31 @@
        ÍѸ콸¥ì¥Ù¥ë¤Î¥Ø¥ë¥×¥Õ¥¡¥¤¥ë:
        ¥¨¥ó¥È¥ê¥ì¥Ù¥ë¤Î¥Ø¥ë¥×¥Õ¥¡¥¤¥ë:
        diff --git a/lang/ja/help/glossary/linkcategory.html b/lang/ja/help/glossary/linkcategory.html index b310e84c96b..9811cac30ce 100644 --- a/lang/ja/help/glossary/linkcategory.html +++ b/lang/ja/help/glossary/linkcategory.html @@ -1,5 +1,5 @@ -

        ¥«¥Æ¥´¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤¹¤ë

        +

        ¥«¥Æ¥´¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤¹¤ë

        -

        ¥«¥Æ¥´¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤µ¤»¤ë¤«Èݤ«¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¥«¥Æ¥´¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤µ¤»¤ë¤«Èݤ«¤òÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        Ãí°Õ: ¥«¥Æ¥´¥ê¤ÏÂçʸ»ú¡¦¾®Ê¸»ú¤Î¶èÊ̤ò¹Ô¤¤¡¢´°Á´°ìÃפ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/mainglossary.html b/lang/ja/help/glossary/mainglossary.html index 91c2b3388bd..b6c19c0aae8 100644 --- a/lang/ja/help/glossary/mainglossary.html +++ b/lang/ja/help/glossary/mainglossary.html @@ -1,7 +1,7 @@ -

        ¥³¡¼¥¹¤Î¥á¥¤¥óÍѸ콸¤ÎÄêµÁ

        +

        ¥³¡¼¥¹¤Î¥á¥¤¥óÍѸ콸¤ÎÄêµÁ

        -

        Á´¤Æ¤ÎÊä½õŪ¤ÊÍѸ콸¤è¤ê¡¢¥³¡¼¥¹¤Î¥á¥¤¥óÍѸ콸¤ËÂФ·¤Æ¥¨¥ó¥È¥ê¤ò¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        Á´¤Æ¤ÎÊä½õŪ¤ÊÍѸ콸¤è¤ê¡¢¥³¡¼¥¹¤Î¥á¥¤¥óÍѸ콸¤ËÂФ·¤Æ¥¨¥ó¥È¥ê¡¼¤ò¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        -

        ¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¤É¤ÎÍѸ콸¤¬¥á¥¤¥óÍѸ콸¤Ç¤¢¤ë¤«¤òÆÃÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

        +

        ¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë°Ù¤Ë¤Ï¡¢¤É¤ÎÍѸ콸¤¬¥á¥¤¥óÍѸ콸¤Ç¤¢¤ë¤«¤òÆÃÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

        -

        Ãí°Õ: 1¥³¡¼¥¹¤¢¤¿¤ê1¤Ä¤Î¥á¥¤¥óÍѸ콸¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¹¹¿·¤Ï¶µ»Õ¤Î¤ß¤¬¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        Ãí°Õ: 1¥³¡¼¥¹¤¢¤¿¤ê1¤Ä¤Î¥á¥¤¥óÍѸ콸¤òÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¹¹¿·¤Ï¶µ»Õ¤Î¤ß¤¬¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/mods.html b/lang/ja/help/glossary/mods.html index 10c1fdde37f..b4c8393faad 100644 --- a/lang/ja/help/glossary/mods.html +++ b/lang/ja/help/glossary/mods.html @@ -1,7 +1,7 @@ -

         ÍѸ콸

        -
          -

          ¤³¤³¤Ç¤Ï»²²Ã¼Ô¤¬¼­½ñ¤ÎÍͤÊÄêµÁ¥ê¥¹¥È¤òºîÀ®¡¦´ÉÍý¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -

          ÅÐÏ¿¥Ç¡¼¥¿¤Ï¡¢ÍÍ¡¹¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¸¡º÷¤Þ¤¿¤Ï±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -

          ¶µ»Õ¤Ï¡¢ÍѸ콸¤Î¥¨¥ó¥È¥ê¤òÊ̤Υᥤ¥óÍѸ콸¤Ë¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -

          ¥³¡¼¥¹Æâ¤«¤é¼«Æ°Åª¤Ë¡¢ÍѸ콸¤Î¥¨¥ó¥È¥ê¤Ë¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          -
        +

         ÍѸ콸

        +
          +

          ¤³¤³¤Ç¤Ï»²²Ã¼Ô¤¬¼­½ñ¤ÎÍͤÊÄêµÁ¥ê¥¹¥È¤òºîÀ®¡¦´ÉÍý¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +

          ÅÐÏ¿¥Ç¡¼¥¿¤Ï¡¢ÍÍ¡¹¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¸¡º÷Ëô¤Ï±ÜÍ÷¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +

          ¶µ»Õ¤Ï¡¢ÍѸ콸¤Î¥¨¥ó¥È¥ê¡¼¤òÊ̤Υᥤ¥óÍѸ콸¤Ë¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +

          ¥³¡¼¥¹Æâ¤«¤é¼«Æ°Åª¤Ë¡¢ÍѸ콸¤Î¥¨¥ó¥È¥ê¡¼¤Ë¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

          +
        diff --git a/lang/ja/help/glossary/shows.html b/lang/ja/help/glossary/shows.html index 235c18187be..4e47c57170f 100644 --- a/lang/ja/help/glossary/shows.html +++ b/lang/ja/help/glossary/shows.html @@ -1,6 +1,6 @@ -

        ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èɽ¼¨¥ª¥×¥·¥ç¥ó

        +

        ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èɽ¼¨¥ª¥×¥·¥ç¥ó

        -

        ¥æ¡¼¥¶¤¬ÍѸ콸¤ò±ÜÍ÷¤¹¤ëÊýË¡¤ò¥«¥¹¥¿¥Þ¥¤¥º¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£±ÜÍ÷¤ª¤è¤Ó¸¡º÷¤Ï¾ï¤Ë¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢²¼µ­¤Î3¤Ä¤Î¥ª¥×¥·¥ç¥ó¤òÀßÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹:

        +

        ¥æ¡¼¥¶¤¬ÍѸ콸¤ò±ÜÍ÷¤¹¤ëÊýË¡¤ò¥«¥¹¥¿¥Þ¥¤¥º¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£±ÜÍ÷µÚ¤Ó¸¡º÷¤Ï¾ï¤Ë¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¤¬¡¢²¼µ­¤Î3¤Ä¤Î¥ª¥×¥·¥ç¥ó¤òÀßÄꤹ¤ë¤³¤È¤â½ÐÍè¤Þ¤¹:

        ÆÃÊÌ¥ê¥ó¥¯¤òɽ¼¨ @¡¢#¤Î¤è¤¦¤ÊÆÃÊ̤Êʸ»ú¤òɽ¼¨¤¹¤ë¤«Èݤ«¤òÀßÄꤷ¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/studentcanpost.html b/lang/ja/help/glossary/studentcanpost.html index b92ab25544e..fe4ea001423 100644 --- a/lang/ja/help/glossary/studentcanpost.html +++ b/lang/ja/help/glossary/studentcanpost.html @@ -1,7 +1,7 @@ -

        ³ØÀ¸¤Î¥¨¥ó¥È¥êÄɲäòµö²Ä¤¹¤ë

        +

        ³ØÀ¸¤Î¥¨¥ó¥È¥ê¡¼Äɲäòµö²Ä¤¹¤ë

        -

        ³ØÀ¸¤¬¥¨¥ó¥È¥ê¤ÎÄɲá¢ÊÔ½¸¡¢ºï½ü¤ò¤Ç¤­¤ë¤«Èݤ«¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¥á¥¤¥óÍѸ콸¤Ë¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤¿¥¨¥ó¥È¥ê¤Ï¶µ»Õ¤Î¤ß¤¬¹¹¿·¡¦ºï½ü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤Î¤Ç¡¢ +

        ³ØÀ¸¤¬¥¨¥ó¥È¥ê¡¼¤ÎÄɲá¢ÊÔ½¸¡¢ºï½ü¤ò½ÐÍè¤ë¤«Èݤ«¤ò»ØÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +¥á¥¤¥óÍѸ콸¤Ë¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤¿¥¨¥ó¥È¥ê¡¼¤Ï¶µ»Õ¤Î¤ß¤¬¹¹¿·¡¦ºï½ü¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¤Î¤Ç¡¢ ¤³¤ÎÀßÄê¤ÏÊä½õŪ¤ÊÍѸ콸¤Î¤ß¤ËŬÍѤµ¤ì¤Þ¤¹¡£

        -

        Ãí°Õ:¶µ»Õ¤Ï¤¤¤Ä¤Ç¤â¥¨¥ó¥È¥ê¤ÎÊÔ½¸¡¦ºï½ü¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        Ãí°Õ:¶µ»Õ¤Ï¤¤¤Ä¤Ç¤â¥¨¥ó¥È¥ê¡¼¤ÎÊÔ½¸¡¦ºï½ü¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/usedynalink.html b/lang/ja/help/glossary/usedynalink.html index d915e6a76d9..e1194902410 100644 --- a/lang/ja/help/glossary/usedynalink.html +++ b/lang/ja/help/glossary/usedynalink.html @@ -1,8 +1,8 @@ -

        ¥¨¥ó¥È¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤¹¤ë

        +

        ¥¨¥ó¥È¥ê¡¼¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤¹¤ë

        -

        ¤³¤ÎÀßÄê¤òYes¤Ë¤¹¤ë¤È¡¢Æ±°ì¥³¡¼¥¹¤òÄ̤·¤Æ¡¢ÍѸ콸¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ëÍѸ줬»ÈÍѤµ¤ì¤¿¾ì¹ç¤Ï¡¢¼«Æ°Åª¤ËÍѸ콸¤È¥ê¥ó¥¯¤µ¤ì¤Þ¤¹¡£ -¼«Æ°¥ê¥ó¥¯¤µ¤ì¤ëÂоݤϡ¢¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ¡¢ÆâÉô¤Î¥ê¥½¡¼¥¹¡¢½µ¤Î³µÍס¢Æü»ïÅù¤Ë¤ª¤è¤Ó¤Þ¤¹¡£

        +

        ¤³¤ÎÀßÄê¤òYes¤Ë¤¹¤ë¤È¡¢Æ±°ì¥³¡¼¥¹¤òÄ̤·¤Æ¡¢ÍѸ콸¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ëÍѸ줬»ÈÍѤµ¤ì¤¿¾ì¹ç¤Ï¡¢¼«Æ°Åª¤ËÍѸ콸¤È¥ê¥ó¥¯¤µ¤ì¤Þ¤¹¡£ +¼«Æ°¥ê¥ó¥¯¤µ¤ì¤ëÂоݤϡ¢¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ¡¢ÆâÉô¤Î¥ê¥½¡¼¥¹¡¢½µ¤Î³µÍס¢Æü»ïÅù¤ËµÚ¤Ó¤Þ¤¹¡£

        -

        ÆÃÄê¤Î¥Æ¥­¥¹¥È¤ò¥ê¥ó¥¯¤µ¤»¤¿¤¯¤Ê¤¤¾ì¹ç(Î㤨¤Ð¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ)¤Ï¡¢¥Æ¥­¥¹¥È¤ÎÁ°¸å¤Ë <nolink> ¤ª¤è¤Ó </nolink> ¥¿¥°¤òÉղ䷤Ƥ¯¤À¤µ¤¤¡£

        +

        ÆÃÄê¤Î¥Æ¥­¥¹¥È¤ò¥ê¥ó¥¯¤µ¤»¤¿¤¯¤Ê¤¤¾ì¹ç(Î㤨¤Ð¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ)¤Ï¡¢¥Æ¥­¥¹¥È¤ÎÁ°¸å¤Ë <nolink> µÚ¤Ó </nolink> ¥¿¥°¤òÉղ䷤Ƥ¯¤À¤µ¤¤¡£

        ¥«¥Æ¥´¥ê̾¤â¼«Æ°¥ê¥ó¥¯¤µ¤ì¤Þ¤¹¡£

        diff --git a/lang/ja/help/glossary/usedynalinkentry.html b/lang/ja/help/glossary/usedynalinkentry.html index 8ba65e2461f..d716fc4c4ec 100644 --- a/lang/ja/help/glossary/usedynalinkentry.html +++ b/lang/ja/help/glossary/usedynalinkentry.html @@ -1,7 +1,7 @@ -

        ¥¨¥ó¥È¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤µ¤»¤ë

        +

        ¥¨¥ó¥È¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤µ¤»¤ë

        -

        ¤³¤ÎÀßÄê¤òON¤Ë¤¹¤ë¤È¡¢ÍѸ줬Ʊ°ì¥³¡¼¥¹Æâ¤Ë¸½¤ì¤¿¾ì¹ç¡¢¼«Æ°Åª¤Ë¥ê¥ó¥¯¤òÄ¥¤ê¤Þ¤¹¡£¤³¤Îµ¡Ç½¤Ï¡¢¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ¡¢ÆâÉô¥ê¥½¡¼¥¹¡¢½µ¤Î³µÍס¢Æü»ïÅù¤ËŬÍѤµ¤ì¤Þ¤¹¡£

        +

        ¤³¤ÎÀßÄê¤òON¤Ë¤¹¤ë¤È¡¢ÍѸ줬Ʊ°ì¥³¡¼¥¹Æâ¤Ë¸½¤ì¤¿¾ì¹ç¡¢¼«Æ°Åª¤Ë¥ê¥ó¥¯¤òÄ¥¤ê¤Þ¤¹¡£¤³¤Îµ¡Ç½¤Ï¡¢¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ¡¢ÆâÉô¥ê¥½¡¼¥¹¡¢½µ¤Î³µÍס¢Æü»ïÅù¤ËŬÍѤµ¤ì¤Þ¤¹¡£

        -

        ÆÃÄê¤ÎÍѸì¤Ë¼«Æ°Åª¤Ê¥ê¥ó¥¯¤òÄ¥¤é¤»¤¿¤¯¤Ê¤¤¾ì¹ç(Î㤨¤Ð¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ)¡¢¥Æ¥­¥¹¥È¤Î¼þ¤ê¤Ë <nolink> ¤ª¤è¤Ó </nolink> ¥¿¥°¤òÄɲ䷤Ƥ¯¤À¤µ¤¤¡£

        +

        ÆÃÄê¤ÎÍѸì¤Ë¼«Æ°Åª¤Ê¥ê¥ó¥¯¤òÄ¥¤é¤»¤¿¤¯¤Ê¤¤¾ì¹ç(Î㤨¤Ð¥Õ¥©¡¼¥é¥à¤ÎÅê¹Æ)¡¢¥Æ¥­¥¹¥È¤Î¼þ¤ê¤Ë <nolink> µÚ¤Ó </nolink> ¥¿¥°¤òÄɲ䷤Ƥ¯¤À¤µ¤¤¡£

        -

        ¤³¤Îµ¡Ç½¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢ÍѸ콸¥ì¥Ù¥ë¤Ç¼«Æ°¥ê¥ó¥¯µ¡Ç½¤òÍøÍѲĤˤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

        +

        ¤³¤Îµ¡Ç½¤ò»ÈÍѤ¹¤ë°Ù¤Ë¤Ï¡¢ÍѸ콸¥ì¥Ù¥ë¤Ç¼«Æ°¥ê¥ó¥¯µ¡Ç½¤òÍøÍѲĤˤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

        diff --git a/lang/ja/help/groupmode.html b/lang/ja/help/groupmode.html index 3902e24818b..b2c4daa4e55 100644 --- a/lang/ja/help/groupmode.html +++ b/lang/ja/help/groupmode.html @@ -1,22 +1,23 @@

        ¥°¥ë¡¼¥×¥â¡¼¥É

        -

        ¥°¥ë¡¼¥×¥â¡¼¥É¤Ë¤Ï¼¡¤Î3¤Ä¤Î¥â¡¼¥É¤¬¤¢¤ê¤Þ¤¹: +

        ¥°¥ë¡¼¥×¥â¡¼¥É¤Ë¤Ï¼¡¤Î3¤Ä¤Î¥ì¥Ù¥ë¤¬¤¢¤ê¤Þ¤¹:

          -
        • ¥°¥ë¡¼¥×̵¤· - ¥µ¥Ö¥°¥ë¡¼¥×¤Ï¤¢¤ê¤Þ¤»¤ó¡£Á´°÷¤¬Â礭¤Ê¥³¥ß¥å¥Ë¥Æ¥£¡¼¤Î°ì°÷¤Ç¤¹¡£
        • -
        • ʬΥ¥°¥ë¡¼¥× - ¤½¤ì¤¾¤ì¤Î¥°¥ë¡¼¥×¤Ï¤½¤Î¥°¥ë¡¼¥×¤Î¤ß¤ò±ÜÍ÷¤Ç¤­¤Þ¤¹¡£Â¾¤Î¥°¥ë¡¼¥×¤Ï±ÜÍ÷¤Ç¤­¤Þ¤»¤ó¡£
        • -
        • ²Ä»ë¥°¥ë¡¼¥× - ¤½¤ì¤¾¤ì¤Î¥°¥ë¡¼¥×¤Ï¤½¤Î¥°¥ë¡¼¥×¤ÎÃæ¤Çºî¶È¤·¤Þ¤¹¤¬¡¢Â¾¤Î¥°¥ë¡¼¥×¤ò±ÜÍ÷¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
        • +
        • ¥°¥ë¡¼¥×̵¤· - ¥µ¥Ö¥°¥ë¡¼¥×̵¤·¡¢Á´°÷¤¬Â礭¤Ê¥³¥ß¥å¥Ë¥Æ¥£¡¼¤Î°ì°÷
        • +
        • ʬΥ¥°¥ë¡¼¥× - ¤½¤ì¤¾¤ì¤Î¥°¥ë¡¼¥×¤Ï¼«¿È¤Î¥°¥ë¡¼¥×¤Î¤ß±ÜÍ÷²Äǽ¡¢Â¾¤Î¥°¥ë¡¼¥×¤Ï±ÜÍ÷ÉÔ²Ä
        • +
        • ²Ä»ë¥°¥ë¡¼¥× - ¤½¤ì¤¾¤ì¤Î¥°¥ë¡¼¥×¤Ï¼«¿È¤Î¥°¥ë¡¼¥×Æâ¤Ç³èư¡¢Â¾¤Î¥°¥ë¡¼¥×¤â±ÜÍ÷²Äǽ

        -

        ¥°¥ë¡¼¥×¥â¡¼¥É¤Ï²¼µ­¤Î2¤Ä¤Î¥ì¥Ù¥ë¤ÇÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹:

        +

        ¥°¥ë¡¼¥×¥â¡¼¥É¤Ï²¼µ­¤Î2¤Ä¤Î¥ì¥Ù¥ë¤ËÄêµÁ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹:

        1. ¥³¡¼¥¹¥ì¥Ù¥ë
        -
        ¥³¡¼¥¹¥ì¥Ù¥ë¤ÇÀßÄꤵ¤ì¤¿¥°¥ë¡¼¥×¥â¡¼¥É¤Ï¡¢¤½¤Î¥³¡¼¥¹¤ÇÄêµÁ¤µ¤ì¤¿Á´³èư¤Ë´Ø¤¹¤ë¥Ç¥Õ¥©¥ë¥È¥â¡¼¥É¤Ç¤¹

        +
        ¥³¡¼¥¹¥ì¥Ù¥ë¤ÇÄêµÁ¤µ¤ì¤¿¥°¥ë¡¼¥×¤Ï¡¢¥³¡¼¥¹¤ÇÄêµÁ¤µ¤ì¤¿Á´³èư¤Ë´Ø¤¹¤ë¥Ç¥Õ¥©¥ë¥È¥â¡¼¥É¤Ç¤¹

        2. ³èư¥ì¥Ù¥ë
        -
        ¥°¥ë¡¼¥×¤ò¥µ¥Ý¡¼¥È¤¹¤ë³èư¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤½¤ì¤¾¤ì¤ËÆÈ¼«¤Î¥°¥ë¡¼¥×¥â¡¼¥É¤òÀßÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ - ¥³¡¼¥¹¤¬ "¶¯À©¥°¥ë¡¼¥×¥â¡¼¥É" ¤ËÀßÄê - ¤µ¤ì¤¿¾ì¹ç¤Ï¡¢³èư¤´¤È¤ËÀßÄꤷ¤¿¥°¥ë¡¼¥×¥â¡¼¥É¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£
        +
        ¥°¥ë¡¼¥×¤¬¥µ¥Ý¡¼¥È¤¹¤ë¤½¤ì¤¾¤ì¤Î³èư¤Ç¤Ï¡¢ÆÈ¼«¤Î¥°¥ë¡¼¥×¥â¡¼¥É¤òÀßÄꤹ¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£ + ¥³¡¼¥¹¤¬ "¶¯À©¥°¥ë¡¼¥×¥â¡¼¥É" ¤ËÀßÄê + ¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¤½¤ì¤¾¤ì¤Î³èư¤Ë´Ø¤¹¤ëÀßÄê¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£
        -

        +

        + diff --git a/lang/ja/help/groupmodeforce.html b/lang/ja/help/groupmodeforce.html index 21a3a1c9268..0a0016c1f54 100644 --- a/lang/ja/help/groupmodeforce.html +++ b/lang/ja/help/groupmodeforce.html @@ -1,6 +1,7 @@

        ¶¯À©¥°¥ë¡¼¥×¥â¡¼¥É

        -

        ¥°¥ë¡¼¥×¥â¡¼¥É¤¬¥³¡¼¥¹¥ì¥Ù¥ë¤Ç "¶¯À©" ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢¥³¡¼¥¹¥ì¥Ù¥ë¤Î¥°¥ë¡¼¥×¥â¡¼¥É¤¬¤½¤Î¥³¡¼¥¹Æâ¤ÎÁ´¤Æ¤Î³èư¤ËŬÍѤµ¤ì¤Þ¤¹¡£ -³èư¥ì¥Ù¥ëËè¤Ë¸Ä¡¹¤ËÀßÄꤵ¤ì¤¿¥°¥ë¡¼¥×¥â¡¼¥É¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£

        +

        ¥°¥ë¡¼¥×¥â¡¼¥É¤¬¥°¥ë¡¼¥×¥ì¥Ù¥ë¤Ç "¶¯À©" ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢¥°¥ë¡¼¥×¥â¡¼¥É¤Ï¥³¡¼¥¹Æâ¤ÎÁ´¤Æ¤Î³èư¤ËŬÍѤµ¤ì¤Þ¤¹¡£ +¤½¤ì¤¾¤ì¤Î³èư¤Ë´Ø¤¹¤ë¸Ä¡¹¤Î¥°¥ë¡¼¥×ÀßÄê¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£

        Î㤨¤Ð¡¢Â¿¤¯¤Î´°Á´¤ËʬΥ¤µ¤ì¤¿½¸ÃĤËÂФ·¤Æ¥³¡¼¥¹¤òÀßÄꤷ¤¿¤¤»þ¤ËÊØÍø¤Ç¤¹¡£

        + diff --git a/lang/ja/help/guestaccess.html b/lang/ja/help/guestaccess.html index 39478fd9196..52d49baae4e 100644 --- a/lang/ja/help/guestaccess.html +++ b/lang/ja/help/guestaccess.html @@ -1,18 +1,18 @@ -

        ¥²¥¹¥È¥¢¥¯¥»¥¹

        +

        ¥²¥¹¥È¥¢¥¯¥»¥¹

        -

        ¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤Ë¡Ö¥²¥¹¥È¡×¤¬Æþ¤ì¤ë¤«Èݤ«ÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

        ¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤Ë¡Ö¥²¥¹¥È¡×¤¬Æþ¤ì¤ë¤«Èݤ«ÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ -

        ¥í¥°¥¤¥ó¥Ú¡¼¥¸¤Ë¤¢¤ë¡Ö¥²¥¹¥È¤È¤·¤Æ¥í¥°¥¤¥ó¤¹¤ë¡×¥Ü¥¿¥ó»ÈÍѤ·¤Æ¥²¥¹¥È -¥í¥°¥¤¥ó¤Ç¤­¤Þ¤¹¡£ +

        ¥í¥°¥¤¥ó¥Ú¡¼¥¸¤Ë¤¢¤ë¡Ö¥²¥¹¥È¤È¤·¤Æ¥í¥°¥¤¥ó¤¹¤ë¡×¥Ü¥¿¥ó»ÈÍѤ·¤Æ¥²¥¹¥È +¥í¥°¥¤¥ó½ÐÍè¤Þ¤¹¡£ -

        ¥²¥¹¥È¤Ï¾ï¤Ë¡Ö±ÜÍ÷¤Î¤ßµö²Ä¡×¤Î¥¢¥¯¥»¥¹¤Ç¤¹¡£¥²¥¹¥È¤ÏÅê¹Æ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó +

        ¥²¥¹¥È¤Ï¾ï¤Ë¡Ö±ÜÍ÷¤Î¤ßµö²Ä¡×¤Î¥¢¥¯¥»¥¹¤Ç¤¹¡£¥²¥¹¥È¤ÏÅê¹Æ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó ¤Î¤Ç¼ÂºÝ¤Î¥³¡¼¥¹¤Î³ØÀ¸¤òº®Í𤵤»¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ -

        ¤³¤Îµ¡Ç½¤Ë¤è¤ê¡¢Æ±Î½¤Ë¤¢¤Ê¤¿¤Î»Å»ö¤Î¿ÊĽ¾õ¶·¤ò¸«¤»¤¿¤ê¡¢¥³¡¼¥¹¤Ë»²²Ã¤¹¤ëÁ°¤Ë -³ØÀ¸¤Ë¸«³Ø¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

        ¤³¤Îµ¡Ç½¤Ë¤è¤ê¡¢Æ±Î½¤Ë¤¢¤Ê¤¿¤Î»Å»ö¤Î¿ÊĽ¾õ¶·¤ò¸«¤»¤¿¤ê¡¢¥³¡¼¥¹¤Ë»²²Ã¤¹¤ëÁ°¤Ë +³ØÀ¸¤Ë¸«³Ø¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ -

        ÅÐÏ¿¥­¡¼»ÈÍÑ¡¦Ì¤»ÈÍѤÎ2¼ïÎà¤Î¥²¥¹¥È¥¢¥¯¥»¥¹ÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£¥­¡¼¤ò»ý¤Ã¤Æ¤¤¤ë +

        ÅÐÏ¿¥­¡¼»ÈÍÑ¡¦Ì¤»ÈÍѤÎ2¼ïÎà¤Î¥²¥¹¥È¥¢¥¯¥»¥¹ÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£¥­¡¼¤ò»ý¤Ã¤Æ¤¤¤ë ¥²¥¹¥È¤ÎÍøÍѤòÁª¤ó¤À¾ì¹ç¡¢¥³¡¼¥¹»²²Ã¤Î³ØÀ¸¤¬1²ó¤Î¤ßÅÐÏ¿¥­¡¼ÆþÎϤòµá¤á¤é¤ì¤ë¤Î¤Ë ÂФ·¤Æ¡¢¥²¥¹¥È¤ÏËè²óÆþÎϤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Îµ¡Ç½¤Ç¥²¥¹¥È¤ËÀ©¸Â¤ò²Ã¤¨¤ë¤³¤È¤¬ -¤Ç¤­¤Þ¤¹¡£¥­¡¼¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¥²¥¹¥È¤òµö²Ä¤·¤¿¾ì¹ç¡¢Ã¯¤Ç¤â¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤Ë»²²Ã -¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +½ÐÍè¤Þ¤¹¡£¥­¡¼¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¥²¥¹¥È¤òµö²Ä¤·¤¿¾ì¹ç¡¢Ã¯¤Ç¤â¤¢¤Ê¤¿¤Î¥³¡¼¥¹¤Ë»²²Ã +¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ diff --git a/lang/ja/help/html.html b/lang/ja/help/html.html index dab0603d001..ea59e6f423b 100644 --- a/lang/ja/help/html.html +++ b/lang/ja/help/html.html @@ -1,13 +1,13 @@ -

        htmlºîÀ®Êä½õ

        +

        htmlºîÀ®Êä½õ

        -

        Moodle¤ÇHTML¤ò½ñ¤¯¾ì¹ç¤Ï¡¢¼«Ê¬¤¬¹¥¤­¤Ê¸ú²Ì¤ò½Ð¤¹¤¿¤á¤Ë¼«Í³¤ËHTML¥¿¥°¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ +

        Moodle¤ÇHTML¤ò½ñ¤¯¾ì¹ç¤Ï¡¢¼«Ê¬¤¬¹¥¤­¤Ê¸ú²Ì¤ò½Ð¤¹¤¿¤á¤Ë¼«Í³¤ËHTML¥¿¥°¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ -

        ¥³¡¼¥É¤ÏÄÌ¾ï¥Æ¡¼¥Ö¥ë¥»¥ë¤ÎÃæ¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

        ¥³¡¼¥É¤ÏÄÌ¾ï¥Æ¡¼¥Ö¥ë¥»¥ë¤ÎÃæ¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ -

          +
            -
          • <HEAD>¥¿¥°¤ä<BODY>¥¿¥°¤ò»ÈÍѤ¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +
          • <HEAD>¥¿¥°¤ä<BODY>¥¿¥°¤ò»ÈÍѤ¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ -
          • ɽ¼¨¤¬Êø¤ì¤Þ¤¹¤Î¤ÇÊĤ¸¤Æ¤¤¤Ê¤¤</TABLE>¥¿¥°¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ +
          • ɽ¼¨¤¬Êø¤ì¤Þ¤¹¤Î¤ÇÊĤ¸¤Æ¤¤¤Ê¤¤</TABLE>¥¿¥°¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -
          +
        diff --git a/lang/ja/help/index.html b/lang/ja/help/index.html index 23d93b75e4b..c45f5e85f86 100644 --- a/lang/ja/help/index.html +++ b/lang/ja/help/index.html @@ -1,53 +1,160 @@ -

        ¥Ø¥ë¥×¥Õ¥¡¥¤¥ë¥¤¥ó¥Ç¥Ã¥¯¥¹

        +

        ¥Ø¥ë¥×¥¤¥ó¥Ç¥Ã¥¯¥¹

        + +

        Á´ÂΤΥإë¥×

        -

        °ìÈÌ

        -

        ´ÉÍý

        + + +

        ²ÝÂê

        + -

        ¥³¡¼¥¹ÀßÄê

        + + +

        ÁªÂò

        + -

        ÆÉ¤ßÊý¡¢½ñ¤­Êý

        + + +

        ¥Õ¥©¡¼¥é¥à

        + \ No newline at end of file + +
      • ¿·¤·¤¤Åê¹Æ¤òµö²Ä¤¹¤ë + +
      • źÉÕ¥Õ¥¡¥¤¥ë + +
      • ¥Õ¥©¡¼¥é¥à¥¿¥¤¥× + +
      • ¥Õ¥©¡¼¥é¥àɾ²Á + +
      • ¥á¡¼¥ëÄÌÃÎÅÐÏ¿ + + + + + + + +

        ¾®¥Æ¥¹¥È

        + + + + + +

        ¥ê¥½¡¼¥¹¥â¥¸¥å¡¼¥ë

        + + + diff --git a/lang/ja/help/journal/mods.html b/lang/ja/help/journal/mods.html index bb5cc6026c3..654ba363930 100644 --- a/lang/ja/help/journal/mods.html +++ b/lang/ja/help/journal/mods.html @@ -1,5 +1,5 @@ -

         Æü»ï

        -
          -

          ¤³¤Î¥â¥¸¥å¡¼¥ë¤ÏÈó¾ï¤Ë½ÅÍ×¤Ê½Ï¹Í³èÆ°¤Ç¤¹¡£¶µ»Õ¤Ï³ØÀ¸¤ËÆÃÄê¤ÎÏÃÂê¤Ë¤Ä¤¤¤Æ½Ï¹Í¤¹¤ë¤è¤¦¤Ëµá¤á¤Þ¤¹¡£¤½¤·¤Æ³ØÀ¸¤Ï²¿ÅÙ¤âÈà¤é¤ÎÅú¤¨¤òÎý¤êľ¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ÎÅú¤¨¤Ï»äŪ¤Ê¤â¤Î¤Ç¶µ»Õ¤Î¤ß¤¬±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¶µ»Õ¤Ï¤½¤ì¤¾¤ì¤ÎÆü»ï¤ËÂФ·¤Æ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤ò¹Ô¤Ã¤¿¤ê¡¢É¾²Á¤ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£1½µÅö¤¿¤ê1¤Ä¤ÎÆü»ïºîÀ®¤¬ÍýÁÛŪ¤Ç¤¹¡£

          -
        +

         Æü»ï

        +
          +

          ¤³¤Î¥â¥¸¥å¡¼¥ë¤ÏÈó¾ï¤Ë½ÅÍ×¤Ê½Ï¹Í³èÆ°¤Ç¤¹¡£¶µ»Õ¤Ï³ØÀ¸¤ËÆÃÄê¤ÎÏÃÂê¤Ë¤Ä¤¤¤Æ½Ï¹Í¤¹¤ë¤è¤¦¤Ëµá¤á¤Þ¤¹¡£¤½¤·¤Æ³ØÀ¸¤Ï²¿ÅÙ¤âÈà¤é¤ÎÅú¤¨¤òÎý¤êľ¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤ÎÅú¤¨¤Ï»äŪ¤Ê¤â¤Î¤Ç¶µ»Õ¤Î¤ß¤¬±ÜÍ÷¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¶µ»Õ¤Ï¤½¤ì¤¾¤ì¤ÎÆü»ï¤ËÂФ·¤Æ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤ò¹Ô¤Ã¤¿¤ê¡¢É¾²Á¤ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£1½µÅö¤¿¤ê1¤Ä¤ÎÆü»ïºîÀ®¤¬ÍýÁÛŪ¤Ç¤¹¡£

          +
        diff --git a/lang/ja/help/label/mods.html b/lang/ja/help/label/mods.html index 0ff574aec5b..85338efdad7 100644 --- a/lang/ja/help/label/mods.html +++ b/lang/ja/help/label/mods.html @@ -1,4 +1,4 @@ -

         ¥é¥Ù¥ë

        +

         ¥é¥Ù¥ë

          ¤³¤ì¤ÏËÜÅö¤Î³èư¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó - ¤³¤ì¤Ï¥Æ¥­¥¹¥È¤ä¥°¥é¥Õ¥£¥Ã¥¯¤ÎÁÞÆþ¤¬²Äǽ¤Ê¡Ö¥À¥ß¡¼¡×¤Î³èư¤Ç¡¢¥³¡¼¥¹¥Ú¡¼¥¸¤Ë¾¤Î³èư¤È°ì½ï¤ËÀßÃÖ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        diff --git a/lang/ja/help/langedit.html b/lang/ja/help/langedit.html index b44d763cb29..056a594fd1f 100644 --- a/lang/ja/help/langedit.html +++ b/lang/ja/help/langedit.html @@ -1,11 +1,11 @@ -

        ¸À¸ì¤ÎÈæ³Ó¤ª¤è¤ÓÊÔ½¸

        +

        ¸À¸ì¤ÎÈæ³ÓµÚ¤ÓÊÔ½¸

        -

        ¤³¤Î¥Ú¡¼¥¸¤Ç¸À¸ì¤òÊÔ½¸¤¹¤ë¤Ë¤Ï¡¢¥¦¥§¥Ö¥µ¡¼¥Ð¾å¤Î¥Õ¥¡¥¤¥ë¤¬½ñ¹þ¤ß²Ä¤Ë¤Ê¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

        ¤³¤Î¥Ú¡¼¥¸¤Ç¸À¸ì¤òÊÔ½¸¤¹¤ë¤Ë¤Ï¡¢¥¦¥§¥Ö¥µ¡¼¥Ð¾å¤Î¥Õ¥¡¥¤¥ë¤¬½ñ¹þ¤ß²Ä¤Ë¤Ê¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -

        $a ¤ä $a->somethingÅù¤Îʸ»ú¤¬¤¢¤ê¤Þ¤¹¡£ +

        $a ¤ä $a->somethingÅù¤Îʸ»ú¤¬¤¢¤ê¤Þ¤¹¡£ -

        ¤³¤ì¤é¤ÏMoodleÆâÉô¤Ç¾¤Î¸ÀÍÕ¤ËÃÖ¤­´¹¤¨¤é¤ì¤ëÊÑ¿ô¤Ç¤¹¡£ +

        ¤³¤ì¤é¤ÏMoodleÆâÉô¤Ç¾¤Î¸ÀÍÕ¤ËÃÖ¤­´¹¤¨¤é¤ì¤ëÊÑ¿ô¤Ç¤¹¡£ -

        ÊÑ¿ô¤¬1¤Ä¤Î¾ì¹ç¤Ï$a¤¬»È¤ï¤ì¤Þ¤¹¡£2¤Ä¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤ÎÊÑ¿ô¤¬»È¤ï¤ì¤ë¾ì¹ç¤Ï¡¢ +

        ÊÑ¿ô¤¬1¤Ä¤Î¾ì¹ç¤Ï$a¤¬»È¤ï¤ì¤Þ¤¹¡£2¤Ä¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤ÎÊÑ¿ô¤¬»È¤ï¤ì¤ë¾ì¹ç¤Ï¡¢ Ê£¿ô¤Ç1¤Ä¤Î̾Á°¤ËÃÖ¤­´¹¤¨¤é¤ì¤Þ¤¹¡£ diff --git a/lang/ja/help/lesson/bgcolor.html b/lang/ja/help/lesson/bgcolor.html deleted file mode 100644 index 82b6381ca13..00000000000 --- a/lang/ja/help/lesson/bgcolor.html +++ /dev/null @@ -1,3 +0,0 @@ -

        ¥¹¥é¥¤¥É¥·¥ç¡¼¤ÎÇØ·Ê¿§

        - -

        ¥¹¥é¥¤¥É¥·¥ç¡¼¤ÎÇØ·Ê¿§¤òÀßÄꤹ¤ë¤¿¤á¤Ë¡¢6·å¤ÎÃͤòÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£

        \ No newline at end of file diff --git a/lang/ja/help/lesson/custom.html b/lang/ja/help/lesson/custom.html deleted file mode 100644 index 0564ee1a188..00000000000 --- a/lang/ja/help/lesson/custom.html +++ /dev/null @@ -1,6 +0,0 @@ -

        ¥«¥¹¥¿¥à¥¹¥³¥¢

        - -

        ¤½¤ì¤½¤ì¤ÎÅú¤¨¤ËÅÀ¿ô¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -ÅÀ¿ô¤Ë¤Ï¥Þ¥¤¥Ê¥¹¤Þ¤¿¤Ï¥×¥é¥¹¤ÎÃͤò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤¿ÌäÂê¤Ï¼«Æ°Åª¤Ë¡¢Àµ²ò=1¡¢ÉÔÀµ²ò=0¤¬³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¤¬ -¸å¤ÇÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        \ No newline at end of file diff --git a/lang/ja/help/lesson/displayleft.html b/lang/ja/help/lesson/displayleft.html deleted file mode 100644 index b8717248d4a..00000000000 --- a/lang/ja/help/lesson/displayleft.html +++ /dev/null @@ -1,5 +0,0 @@ -

        º¸¥á¥Ë¥å¡¼¤òɽ¼¨

        - -

        ¤³¤ÎÀßÄê¤Ë¤è¤ê¡¢¥ì¥Ã¥¹¥óÆâ¤Ë¥Ú¡¼¥¸ ( ʬ´ôɽ ) ¥ê¥¹¥È¤òɽ¼¨¤·¤Þ¤¹¡£ -ÌäÂê¥Ú¡¼¥¸¡¢¥¯¥é¥¹¥¿¥Ú¡¼¥¸Åù¤Ç¤¹¡£¤³¤ì¤é¤Î¥ê¥¹¥È¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó -( ÌäÂêÊÔ½¸¥Ú¡¼¥¸¤Çɽ¼¨¤¹¤ë¤«Èݤ«ÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ )¡£

        \ No newline at end of file diff --git a/lang/ja/help/lesson/grade.html b/lang/ja/help/lesson/grade.html index c2234a85c7e..49125728a40 100644 --- a/lang/ja/help/lesson/grade.html +++ b/lang/ja/help/lesson/grade.html @@ -1,6 +1,5 @@ -

        ¥ì¥Ã¥¹¥ó¤ÎɾÅÀ

        +

        ¥ì¥Ã¥¹¥ó¤Îɾ²Á

        -

        ¤³¤³¤Ç¤Ï¥ì¥Ã¥¹¥ó¤ÇÍ¿¤¨¤ë¤³¤È¤¬¤Ç¤­¤ëºÇÂçɾÅÀ¤òÀßÄꤷ¤Þ¤¹¡£ -ɾÅÀ¤ÎÈϰϤϡ¢0¤«¤é100%¤Ç¤¹¡£¤³¤ÎÃͤϥì¥Ã¥¹¥óÃæ¡¢¤¤¤Ä¤Ç¤âÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -Á´¤Æ¤ÎÊѹ¹¤Ï¡¢É¾ÅÀ¥Ú¡¼¥¸¤ª¤è¤Ó³Æ¼ï³ØÀ¸¥ê¥¹¥È¤Ë¨ºÂ¤ËÈ¿±Ç¤µ¤ì¤Þ¤¹¡£É¾ÅÀ¤Ë0¤¬ÀßÄê -¤µ¤ì¤¿¾ì¹ç¡¢¤½¤Î¥ì¥Ã¥¹¥ó¤Ï¤É¤ÎɾÅÀ¥Ú¡¼¥¸¤Ë¤âɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£

        +

        ¤³¤³¤Ç¤Ï¥ì¥Ã¥¹¥ó¤ÇÍ¿¤¨¤ë¤³¤È¤¬½ÐÍè¤ëºÇÂçɾ²Á¤òÀßÄꤷ¤Þ¤¹¡£ +ɾ²Á¤ÎÈϰϤϡ¢0¤«¤é100%¤Ç¤¹¡£¤³¤ÎÃͤϥì¥Ã¥¹¥óÃæ¡¢¤¤¤Ä¤Ç¤âÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +Á´¤Æ¤ÎÊѹ¹¤Ï¡¢É¾²Á¥Ú¡¼¥¸µÚ¤Ó³Æ¼ï³ØÀ¸¥ê¥¹¥È¤Ë¨ºÂ¤ËÈ¿±Ç¤µ¤ì¤Þ¤¹¡£

        diff --git a/lang/ja/help/lesson/height.html b/lang/ja/help/lesson/height.html deleted file mode 100644 index 623825365eb..00000000000 --- a/lang/ja/help/lesson/height.html +++ /dev/null @@ -1,3 +0,0 @@ -

        ¥¹¥é¥¤¥É¥·¥ç¡¼¤Î¹â¤µ

        - -

        ¥¹¥é¥¤¥É¥·¥ç¡¼¤Î¹â¤µ ( ¥Ô¥¯¥»¥ë ) ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£

        \ No newline at end of file diff --git a/lang/ja/help/lesson/import.html b/lang/ja/help/lesson/import.html index 8893bae43b3..087d2dbcfb8 100644 --- a/lang/ja/help/lesson/import.html +++ b/lang/ja/help/lesson/import.html @@ -9,7 +9,7 @@

        GIFT¤Ï¡¢¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤«¤éMoodle¾®¥Æ¥¹¥È¤ËÌäÂê¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Î¡¢ºÇ¤âÅý¹çŪ¤Ê¥¤¥ó¥Ý¡¼¥È¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤¹¡£ GIFT¤Ï¡¢¶µ»Õ¤¬ÌäÂê¤ò¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ç´Êñ¤Ë½ñ¤¯¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£Â¿»èÁªÂòÌäÂê¡¢ ¡¢¡û/¡ßÌäÂê¡¢µ­½ÒÌäÂê¡¢ÁȤ߹ç¤ï¤»ÌäÂê¡¢¿ôÃÍÌäÂê¡¢_____¤òÁÞÆþ¤¹¤ë¤³¤È¤Ç¡Ö·êËä¤áÌäÂê¡×¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£ -ÍÍ¡¹¤Ê¥¿¥¤¥×¤ÎÌäÂꤪ¤è¤Ó¥³¥á¥ó¥È¡¢ÌäÂê̾¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¡¢É¾ÅÀ¤ÎÈæ½Å³ä¹ç¤ò1¤Ä¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ëµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +ÍÍ¡¹¤Ê¥¿¥¤¥×¤ÎÌäÂêµÚ¤Ó¥³¥á¥ó¥È¡¢ÌäÂê̾¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¡¢É¾ÅÀ¤ÎÈæ½Å³ä¹ç¤ò°ì¤Ä¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ëµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ²¼µ­¤ËÎã¤òµó¤²¤Þ¤¹:

         ¥°¥é¥ó¥È¤ÎÊè¤Ë¤Ï郎Ëä¤á¤é¤ì¤Æ¤¤¤Þ¤¹¤«?{~¥°¥é¥ó¥È ~¥¸¥§¥Õ¥¡¡¼¥½¥ó =ï¤âËä¤á¤é¤ì¤Æ¤¤¤Ê¤¤}
        @@ -114,4 +114,4 @@ Moodle
         
         
         
        -

        WebCT¡¢IMS¡¢QTI¤ò´Þ¤ó¤À¿·¤¿¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¤µ¤é¤ËÄɲ䵤ì¤Þ¤¹¡£¤É¤Î¤è¤¦¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â¡¢Moodle¥æ¡¼¥¶¤¬¹×¸¥¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹!

        +

        WebCT¡¢IMS¡¢QTI¤ò´Þ¤ó¤À¿·¤¿¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¹¹¤ËÄɲ䵤ì¤Þ¤¹¡£¤É¤Î¤è¤¦¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â¡¢Moodle¥æ¡¼¥¶¤¬¹×¸¥¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹!

        diff --git a/lang/ja/help/lesson/maxanswers.html b/lang/ja/help/lesson/maxanswers.html index 21b32b71e1f..46a273b7d03 100644 --- a/lang/ja/help/lesson/maxanswers.html +++ b/lang/ja/help/lesson/maxanswers.html @@ -1,10 +1,10 @@

        ¥ì¥Ã¥¹¥ó¤ÎºÇÂç²òÅú¿ô

        ¤³¤³¤Ç¤Ï¶µ»Õ¤¬»ÈÍѤǤ­¤ëºÇÂç²òÅú¿ô¤òÀßÄꤷ¤Þ¤¹¡£ - ¥Ç¥Õ¥©¥ë¥È¤ÎÃͤÏ4¤Ç¤¹¡£Î㤨¤Ð¡û¡ßÌäÂê¤Î¾ì¹ç¡¢¤³¤ÎÃͤÏ2¤Ë¤·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£

        + ¥Ç¥Õ¥©¥ë¥È¤ÎÃͤÏ4¤Ç¤¹¡£Î㤨¤Ð¡û¡ß¼°¤ÎÌäÂê¤Î¾ì¹ç¡¢¤³¤ÎÃͤÏ2¤Ë¤·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£

        ¤³¤ÎÃͤÏÁªÂò»è¥Æ¡¼¥Ö¥ë¤Ç»ÈÍѤµ¤ì¤ëÁªÂò»è¤ÎºÇÂç¿ô¤Ë¤âŬÍѤµ¤ì¤Þ¤¹¡£

        -

        ¼Âºß¤¹¤ë¥³¥ó¥Æ¥ó¥Ä¤Ë±è¤Ã¤¿·Á¤Ç¤³¤ÎÃͤòÊѹ¹¤·¤¿Êý¤¬°ÂÁ´¤Ç¤¹¡£¼ÂºÝ¡¢¿ô¿¤¯¤ÎÁªÂò»è¤¬¤¢¤ëÌäÂê¤Þ¤¿¤Ï +

        ¼Âºß¤¹¤ë¥³¥ó¥Æ¥ó¥Ä¤Ë±è¤Ã¤¿·Á¤Ç¤³¤ÎÃͤòÊѹ¹¤·¤¿Êý¤¬°ÂÁ´¤Ç¤¹¡£¼ÂºÝ¡¢¿ô¿¤¯¤ÎÁªÂò»è¤¬¤¢¤ëÌäÂêËô¤Ï Ť¤Ê¬´ôɽ¤ò»ý¤ÄÌäÂê¤òÄɲ乤ë¾ì¹ç¤Ï¡¢¤³¤ÎÃͤòÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -Ãͤȳݤ±Î¥¤ì¤¿ÌäÂê¤Þ¤¿¤Ïʬ´ôɽ¤¬Äɲ䵤줿¾ì¹ç¤Ï¡¢¤è¤ê¡Öɸ½àŪ¤Ê¡×Ãͤ˸º¤é¤µ¤ì¤Þ¤¹¡£

        +Ãͤȳݤ±Î¥¤ì¤¿ÌäÂêËô¤Ïʬ´ôɽ¤¬Äɲ䵤줿¾ì¹ç¤Ï¡¢¤è¤ê"ɸ½àŪ¤Ê"Ãͤ˸º¤é¤µ¤ì¤Þ¤¹¡£

        diff --git a/lang/ja/help/lesson/maxtime.html b/lang/ja/help/lesson/maxtime.html deleted file mode 100644 index b96b4a9f3ed..00000000000 --- a/lang/ja/help/lesson/maxtime.html +++ /dev/null @@ -1,3 +0,0 @@ -

        À©¸Â»þ´Ö

        - -

        À©¸Â»þ´Ö(ʬ)¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£

        \ No newline at end of file diff --git a/lang/ja/help/lesson/mods.html b/lang/ja/help/lesson/mods.html index 4db17e1e151..2662e9a8a96 100644 --- a/lang/ja/help/lesson/mods.html +++ b/lang/ja/help/lesson/mods.html @@ -1,8 +1,8 @@ - ¥ì¥Ã¥¹¥ó + ¥ì¥Ã¥¹¥ó -
          -

          ¥ì¥Ã¥¹¥ó¤Ï³Ø½¬ÆâÍÆ¤ò³Ú¤·¤¯½ÀÆð¤ÊÊýË¡¤ÇÄ󶡤·¤Þ¤¹¡£¥ì¥Ã¥¹¥ó¤ÏÊ£¿ô¤Î¥Ú¡¼¥¸¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ -Ä̾綠¤ì¤¾¤ì¤Î¥Ú¡¼¥¸¤Ï¡¢¼ÁÌä¤ÈÊ£¿ô¤Î¹Í¤¨¤é¤ì¤ëÅú¤¨¤Ç½ªÎ»¤·¤Þ¤¹¡£ -³ØÀ¸¤¬ÁªÂò¤·¤¿Åú¤¨¤Ë¤è¤ê¡¢¼¡¤Î¥Ú¡¼¥¸¤Ë¿Ê¤à¤«Á°¤ËÌá¤ë¤«·èÄꤵ¤ì¤Þ¤¹¡£ +

            +

            ¥ì¥Ã¥¹¥ó¤Ï³Ø½¬ÆâÍÆ¤ò³Ú¤·¤¯½ÀÆð¤ÊÊýË¡¤ÇÄ󶡤·¤Þ¤¹¡£¥ì¥Ã¥¹¥ó¤ÏÊ£¿ô¤Î¥Ú¡¼¥¸¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ +Ä̾綠¤ì¤¾¤ì¤Î¥Ú¡¼¥¸¤Ë¤Ï¼ÁÌäµÚ¤ÓÊ£¿ô¤Î¹Í¤¨¤é¤ì¤ë²òÅú¤¬·ÇºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +³ØÀ¸¤¬ÁªÂò¤·¤¿²òÅú¤Ë¤è¤ê¡¢¼¡¤Î¥Ú¡¼¥¸¤Ë¿Ê¤à¤«Á°¤ËÌá¤ë¤«·èÄꤵ¤ì¤Þ¤¹¡£ ¥ì¥Ã¥¹¥ó¤Î¿Ê¹Ô¤¬Ã±½ã¤Ë¤Ê¤ë¤«Ê£»¨¤Ë¤Ê¤ë¤«¤Ï¡¢Ä󶡤µ¤ì¤ëÆâÍÆ¤Î¹½Â¤¤ËÂ礭¤¯°Í¸¤·¤Þ¤¹¡£

            -
          +
        \ No newline at end of file diff --git a/lang/ja/help/lesson/overview.html b/lang/ja/help/lesson/overview.html index 347e6a66a62..3a1989630a2 100644 --- a/lang/ja/help/lesson/overview.html +++ b/lang/ja/help/lesson/overview.html @@ -12,7 +12,7 @@
      • ³ØÀ¸¤ËÄ󼨤µ¤ì¤ë»þ¡¢Åú¤¨¤ÏÄ̾ﺮ¤¼¤é¤ì¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¶µ»Õ¤¬¹Í¤¨¤ëºÇ½é¤ÎÅú¤¨¤Ï¡¢É¬¤º¤·¤â³ØÀ¸¤ËºÇ½é¤Ëɽ¼¨¤µ¤ì¤ë¥ê¥¹¥È¤ÎºÇ½é¤ËÍè¤ëɬÍפϤʤ¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£(¤µ¤é¤Ë¡¢Ëè²óƱ¤¸¥»¥Ã¥È¤ÎÅú¤¨¤¬É½¼¨¤µ¤ì¤ë¾ì¹ç¤Ç¤â¡¢É½¼¨½ç¤Ï°Û¤Ê¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£) Î㳰Ū¤Ë¥Þ¥Ã¥Á¥ó¥°¥¿¥¤¥×¤ÎÌäÂê¤Ç¤Ï¡¢¶µ»Õ¤¬ÆþÎϤ·¤¿¤â¤Î¤ÈƱ¤¸½çÈÖ¤ÇÅú¤¨¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
      • Åú¤¨¤Î¿ô¤Ï¥Ú¡¼¥¸Ëè¤ËÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð¡¢1¤Ä¤ÎÀµÅú¤È3¤Ä¤Î´Ö°ã¤Ã¤¿ÁªÂò»è¤ÎÌäÂê¥Ú¡¼¥¸¤òºî¤ë¤³¤È¤â¡¢¡û/¡ßÌäÂê¤Î¤ß¤Î¥Ú¡¼¥¸¤òºî¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
      • Åú¤¨Ìµ¤·¤Î¥Ú¡¼¥¸¤òºîÀ®¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£³ØÀ¸¤Ë¤Ï¡¢º®¤¼¤¿Åú¤¨¤ÎÂå¤ï¤ê¤Ë³¤±¤ë¥ê¥ó¥¯¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
      • -
      • ¥ì¥Ã¥¹¥ó¤òɾ²Á¤¹¤ë¤¿¤á¡¢Àµ¤·¤¤Åú¤¨¤òÁªÂò¤·¤¿¾ì¹ç¡¢ÏÀÍýŪ½çÈ֤ˤª¤¤¤Æ¸½ºß¤Î¥Ú¡¼¥¸¤è¤ê¤â¤µ¤é¤Ë²¼¤Ø²¼¤¬¤ê¤Þ¤¹¡£´Ö°ã¤Ã¤¿Åú¤¨¤òÁªÂò¤·¤¿¾ì¹ç¡¢Æ±¤¸¥Ú¡¼¥¸¤Ëα¤Þ¤ë¤«¡¢ÏÀÍýŪ½çÈ֤ˤª¤¤¤Æ¸½ºß¤Î¥Ú¡¼¥¸¤è¤ê¤â¤µ¤é¤Ë¾å¤Ø¾å¤¬¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥¸¥ã¥ó¥×¤·¤Ê¤¤¾ì¹ç¡¢ºÇ½é¤ÎÅú¤¨¤ÏÀµ¤·¤¯¡¢Â¾¤ÎÅú¤¨¤Ï´Ö°ã¤Ã¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£
      • +
      • ¥ì¥Ã¥¹¥ó¤òɾ²Á¤¹¤ë¤¿¤á¡¢Àµ¤·¤¤Åú¤¨¤òÁªÂò¤·¤¿¾ì¹ç¡¢ÏÀÍýŪ½çÈ֤ˤª¤¤¤Æ¸½ºß¤Î¥Ú¡¼¥¸¤è¤ê¤â¹¹¤Ë²¼¤Ø²¼¤¬¤ê¤Þ¤¹¡£´Ö°ã¤Ã¤¿Åú¤¨¤òÁªÂò¤·¤¿¾ì¹ç¡¢Æ±¤¸¥Ú¡¼¥¸¤Ëα¤Þ¤ë¤«¡¢ÏÀÍýŪ½çÈ֤ˤª¤¤¤Æ¸½ºß¤Î¥Ú¡¼¥¸¤è¤ê¤â¹¹¤Ë¾å¤Ø¾å¤¬¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥¸¥ã¥ó¥×¤·¤Ê¤¤¾ì¹ç¡¢ºÇ½é¤ÎÅú¤¨¤ÏÀµ¤·¤¯¡¢Â¾¤ÎÅú¤¨¤Ï´Ö°ã¤Ã¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£
      • ÌäÂê¤Ï¡¢1¤Ä°Ê¾å¤ÎÀµ¤·¤¤Åú¤¨¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð¡¢2¤Ä¤ÎÅú¤¨¤¬¼¡¤Î¥Ú¡¼¥¸¤Ë¥¸¥ã¥ó¥×¤¹¤ë¾ì¹ç¡¢Î¾¼Ô¤ÏÀµ¤·¤¤Åú¤¨¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£(Ʊ¤¸¥Ú¡¼¥¸¤Ë¥¸¥ã¥ó¥×¤¹¤ë¾ì¹ç¤Ç¤â¡¢2¤Ä¤ÎÅú¤¨¤Î¥ì¥¹¥Ý¥ó¥¹¤ò¤½¤ì¤¾¤ì°Û¤Ê¤ë¤â¤Î¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£)
      • ¶µ»Õ¤Ë¤Ï¡¢¥ì¥Ã¥¹¥ó¤ÎÀµ¤·¤¤Åú¤¨¤Ë²¼Àþ¤¬°ú¤«¤ì¤¿¾õÂÖ¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£
      • ʬ´ôɽ¤Ï¡¢¥ì¥Ã¥¹¥óÆâ¤Î¥Ú¡¼¥¸¤Ø¤Î¥ê¥ó¥¯·²¤òµ­ºÜ¤·¤¿¥·¥ó¥×¥ë¤Ê¥Ú¡¼¥¸¤Ç¤¹¡£°ìÈÌŪ¤Ë¡¢¥ì¥Ã¥¹¥ó¤ÏÌܼ¡¤È¤·¤Æ»ÈÍѤ¹¤ëʬ´ôɽ¤«¤é³«»Ï¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
      • @@ -21,7 +21,7 @@
      • ¥ì¥Ã¥¹¥óÆâ¤Ë¤Ï¡¢1¤Ä°Ê¾å¤Îʬ´ôɽ¤òÃÖ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð¡¢¥á¥¤¥óʬ´ôɽ¤ÎÃæ¤Ë¥µ¥Öʬ´ôɽ¤òÃÖ¤¤¤¿¥ì¥Ã¥¹¥ó¤Ï¡¢ÀìÌç²È¤Ë¤È¤Ã¤Æ»È¤¤¤ä¤¹¤¤¹½Â¤¤Ç¤·¤ç¤¦¡£
      • ³ØÀ¸¤Ë¥ì¥Ã¥¹¥ó¤Î½ªÎ»¤òÃΤ餻¤ë¤³¤È¤Ï½ÅÍפǤ¹¡£¤³¤ì¤Ï¡Ö¥ì¥Ã¥¹¥ó½ªÎ»¡×¥ê¥ó¥¯¤ò¥á¥¤¥óʬ´ô¥Æ¡¼¥Ö¥ë¤ËÀßÄꤹ¤ë¤³¤È¤Ç¹Ô¤¤¤Þ¤¹¡£¤â¤¦1¤Ä¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢Ã±½ã¤Ë¥ì¥Ã¥¹¥ó¤ÎºÇ¸å¤Þ¤Ç¿Ê¤à¡¢¥ì¥Ã¥¹¥ó¤Îʬ´ô½ªÎ»¤Ç¤¹¡£¤³¤³¤Ç¤Ï¡ÖºÇ½ª¡×¤¬ÏÀÍýŪ½ç½ø¤ÎÃæ¤Ç»È¤ï¤ì¤Þ¤¹¡£Ê¬´ô½ªÎ»¥Ú¡¼¥¸¤Ë¤è¤Ã¤Æ¥ì¥Ã¥¹¥ó¤¬½ªÎ»¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
      • ¥ì¥Ã¥¹¥ó¤¬¡¢1¤Ä¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤Îʬ´ôɽ¤ò´Þ¤à¾ì¹ç¡¢¡ÖÌäÂê¤ÎºÇ¾®¿ô¡×¥Ñ¥é¥á¡¼¥¿¤òŬÀÚ¤ÊÃͤËÀßÄꤹ¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£¤³¤ÎÃͤϡ¢É¾ÅÀ¤¬·×»»¤µ¤ì¤ë»þ¤Ëɽ¼¨¤µ¤ì¤ëÌäÂê¥Ú¡¼¥¸¿ô¤Î²¼¸ÂÃͤǤ¹¡£¤³¤Î¥Ñ¥é¥á¡¼¥¿¤ÎÀßÄê¤ò¹Ô¤ï¤Ê¤¤¾ì¹ç¡¢³ØÀ¸¤Ï¥ì¥Ã¥¹¥óÆâ¤Îñ°ì¤Îʬ´ô¤Ë¥¢¥¯¥»¥¹¤·¤Æ¡¢Á´¤Æ¤ÎÌäÂê¤ËÀµ¤·¤¯Åú¤¨¤ë¤È¡¢ºÇÂçɾÅÀ¤Ç¥ì¥Ã¥¹¥ó¤ò½ªÎ»¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
      • -
      • ¤µ¤é¤Ë¡¢Ê¬´ôɽ¤¬¤¢¤ë¾ì¹ç¡¢³ØÀ¸¤ÏƱ¤¸Ê¬´ôɽ¤Ë1²ó°Ê¾å¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤·¤«¤·¡¢É¾ÅÀ¤Ïñ°ì¤ÎÌäÂê¤ËÂФ¹¤ëÅú¤¨¤Ë¤ò¸µ¤Ë·×»»¤µ¤ì¤Þ¤¹¡£¤Ç¤¹¤«¤é¡¢Æ±¤¸ÌäÂê¤Ë·«¤êÊÖ¤·Åú¤¨¤Æ¤â¡¢É¾ÅÀ¤ÏÁý²Ã¤·¤Þ¤»¤ó¡£(¼ÂºÝ¤ÏµÕ¤â¿¿¤Ê¤ê¤Ç¤¹¡£É¾ÅÀ¤ò·×»»¤¹¤ë»þ¤Ë·«¤êÊÖ¤·¤ò´Þ¤à¾ì¹ç¡¢±ÜÍ÷¤·¤¿¥Ú¡¼¥¸¿ô¤¬Ê¬Êì¤Ë²Ã»»¤µ¤ì¤Þ¤¹¤Î¤ÇɾÅÀ¤ÏÄ㤯¤Ê¤ê¤Þ¤¹¡£) ³ØÀ¸¤ËÂФ·¤Æ¥ì¥Ã¥¹¥ó¤Î¿ÊÊâ¤Ë´Ø¤¹¤ë¸øÀµ¤Ê¹Í¤¨Êý¤òÍ¿¤¨¤ë¤¿¤á¤Ë¡¢Á´¤Æ¤Îʬ´ôɽ¥Ú¡¼¥¸¤ÇÀµÅú¿ô¡¢±ÜÍ÷¥Ú¡¼¥¸¿ô¡¢¸½ºß¤ÎɾÅÀ¤Î¾ÜºÙ¤òɽ¼¨¤·¤Æ¤¯¤À¤µ¤¤¡£
      • +
      • ¹¹¤Ë¡¢Ê¬´ôɽ¤¬¤¢¤ë¾ì¹ç¡¢³ØÀ¸¤ÏƱ¤¸Ê¬´ôɽ¤Ë1²ó°Ê¾å¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤·¤«¤·¡¢É¾ÅÀ¤Ïñ°ì¤ÎÌäÂê¤ËÂФ¹¤ëÅú¤¨¤Ë¤ò¸µ¤Ë·×»»¤µ¤ì¤Þ¤¹¡£¤Ç¤¹¤«¤é¡¢Æ±¤¸ÌäÂê¤Ë·«¤êÊÖ¤·Åú¤¨¤Æ¤â¡¢É¾ÅÀ¤ÏÁý²Ã¤·¤Þ¤»¤ó¡£(¼ÂºÝ¤ÏµÕ¤â¿¿¤Ê¤ê¤Ç¤¹¡£É¾ÅÀ¤ò·×»»¤¹¤ë»þ¤Ë·«¤êÊÖ¤·¤ò´Þ¤à¾ì¹ç¡¢±ÜÍ÷¤·¤¿¥Ú¡¼¥¸¿ô¤¬Ê¬Êì¤Ë²Ã»»¤µ¤ì¤Þ¤¹¤Î¤ÇɾÅÀ¤ÏÄ㤯¤Ê¤ê¤Þ¤¹¡£) ³ØÀ¸¤ËÂФ·¤Æ¥ì¥Ã¥¹¥ó¤Î¿ÊÊâ¤Ë´Ø¤¹¤ë¸øÀµ¤Ê¹Í¤¨Êý¤òÍ¿¤¨¤ë¤¿¤á¤Ë¡¢Á´¤Æ¤Îʬ´ôɽ¥Ú¡¼¥¸¤ÇÀµÅú¿ô¡¢±ÜÍ÷¥Ú¡¼¥¸¿ô¡¢¸½ºß¤ÎɾÅÀ¤Î¾ÜºÙ¤òɽ¼¨¤·¤Æ¤¯¤À¤µ¤¤¡£
      • ¥ì¥Ã¥¹¥ó½ªÎ»¤Ï¡¢¥ì¥Ã¥¹¥ó½ªÎ»¤Î¥Ú¡¼¥¸¤ËÌÀ³Î¤ËÅþ㤷¤¿¤«¡¢¥ì¥Ã¥¹¥ó¤ÎºÇ½ª(ÏÀÍýŪ¤Ê)¥Ú¡¼¥¸¤«¤é¼¡¤Î¥Ú¡¼¥¸¤Ë¥¸¥ã¥ó¥×¤·¤¿¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£¥ì¥Ã¥¹¥ó½ªÎ»¤ËÅþ㤷¤¿¾ì¹ç¡¢³ØÀ¸¤Ë¤Ï¤ª½Ë¤¤¥á¥Ã¥»¡¼¥¸¤ÈɾÅÀ¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£É¾ÅÀ¤Ï¡¢(ÀµÅú¿ô / ¥Ú¡¼¥¸±ÜÍ÷¿ô) * ¥ì¥Ã¥¹¥ó¤Î¥¹¥³¥¢¤Ë¤è¤Ã¤Æµá¤á¤é¤ì¤Þ¤¹¡£
      • ¥ì¥Ã¥¹¥ó¤Î½ªÎ»¤ËÅþ㤻¤º¤Ë³ØÀ¸¤¬Ã±¤Ë¥ì¥Ã¥¹¥ó¤òÎ¥¤ì¤¿¾ì¹ç¡¢³ØÀ¸¤Ë¤ÏºÇ½é¤«¤é¥ì¥Ã¥¹¥ó¤ò¼õ¸³¤¹¤ë¤«¡¢ºÇ¸å¤ËÀµ¤·¤¯Åú¤¨¤¿¾ì½ê¤«¤é»Ï¤á¤ë¤«¤ÎÁªÂò¤¬Í¿¤¨¤é¤ì¤Þ¤¹¡£
      • ºÆ¼õ¸³¤¬µö²Ä¤µ¤ì¤Æ¤¤¤ë¥ì¥Ã¥¹¥ó¤Ç¤Ï¡¢¶µ»Õ¤Ï¡ÖºÇ½ª¡×ɾÅÀ¤ËºÇ¹âÆÀÅÀ¤Þ¤¿¤ÏÊ¿¶ÑÅÀ¤Î¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«ÁªÂò¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð¡¢¤³¤ÎɾÅÀ¤ÏɾÅÀ¥Ú¡¼¥¸¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
      • diff --git a/lang/ja/help/lesson/password.html b/lang/ja/help/lesson/password.html deleted file mode 100644 index 60bffad7260..00000000000 --- a/lang/ja/help/lesson/password.html +++ /dev/null @@ -1,3 +0,0 @@ -

        ¥Ñ¥¹¥ï¡¼¥É

        - -

        ¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸî¤ò¡ÖYes¡×¤Ë¤·¤¿¾ì¹ç¡¢¤³¤³¤Ë¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£

        \ No newline at end of file diff --git a/lang/ja/help/lesson/practice.html b/lang/ja/help/lesson/practice.html deleted file mode 100644 index 3f2c739731a..00000000000 --- a/lang/ja/help/lesson/practice.html +++ /dev/null @@ -1,3 +0,0 @@ -

        Îý½¬¥ì¥Ã¥¹¥ó

        - -

        Îý½¬¥ì¥Ã¥¹¥ó¤ÏÀ®ÀÓɽ¤Ëɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£

        \ No newline at end of file diff --git a/lang/ja/help/lesson/timed.html b/lang/ja/help/lesson/timed.html deleted file mode 100644 index 716eda4435c..00000000000 --- a/lang/ja/help/lesson/timed.html +++ /dev/null @@ -1,6 +0,0 @@ -

        »þ´ÖÀ©¸Â

        - -

        ¥ì¥Ã¥¹¥ó¤Ë»þ´ÖÀ©¸Â¤òÀߤ±¤Þ¤¹¡£³ØÀ¸¤Ë¤Ï¡¢Java¥¹¥¯¥ê¥×¥È¤Î¥«¥¦¥ó¥¿¤¬É½¼¨¤µ¤ì¡¢ -»þ´Ö¤¬¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ëµ­Ï¿¤µ¤ì¤Þ¤¹¡£Java¥¹¥¯¥ê¥×¥È¤ÎÉÔÀµ³Î¤µ¤Î¤¿¤á¡¢»þ´Ö½ªÎ»¸å¤â -³ØÀ¸¤¬Äɤ¤½Ð¤µ¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢»þ´Ö½ªÎ»¸å¤ËÅú¤¨¤¿ÆâÍÆ¤Ï¥«¥¦¥ó¥È¤µ¤ì¤Þ¤»¤ó¡£ -¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤Î»þ´Ö¤Ï¡¢³ØÀ¸¤¬Åú¤¨¤òÁ÷¿®¤¹¤ë¤¿¤Ó¤Ë¥Á¥§¥Ã¥¯¤µ¤ì¤Þ¤¹¡£

        \ No newline at end of file diff --git a/lang/ja/help/lesson/tree.html b/lang/ja/help/lesson/tree.html deleted file mode 100644 index 4cbadd3d221..00000000000 --- a/lang/ja/help/lesson/tree.html +++ /dev/null @@ -1,3 +0,0 @@ -

        ¥Ä¥ê¡¼¥Ó¥å¡¼

        - -

        ¤³¤³¤Ç¤Ï¡¢¥Ú¡¼¥¸¤ª¤è¤ÓÌäÂê¤Î¥ê¥ó¥¯°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£¥Ú¡¼¥¸¤ÏÀÄ¿§¡¢ÌäÂê¤ÏÀÖ¿§¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¿¤¯¤Î¥Ú¡¼¥¸¤ò´Þ¤ó¤À¥ì¥Ã¥¹¥ó¤ò°·¤¦¤È¤­¤ËÊØÍø¤Ç¤¹¡£

        \ No newline at end of file diff --git a/lang/ja/help/lesson/usepassword.html b/lang/ja/help/lesson/usepassword.html deleted file mode 100644 index 0cc012e5a72..00000000000 --- a/lang/ja/help/lesson/usepassword.html +++ /dev/null @@ -1,3 +0,0 @@ -

        ¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸî

        - -

        ¤³¤³¤Ç¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤò¹Ô¤ï¤Ê¤¤¤È³ØÀ¸¤¬¥ì¥Ã¥¹¥ó¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤ÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£

        \ No newline at end of file diff --git a/lang/ja/help/lesson/width.html b/lang/ja/help/lesson/width.html deleted file mode 100644 index 6e04c350e01..00000000000 --- a/lang/ja/help/lesson/width.html +++ /dev/null @@ -1,3 +0,0 @@ -

        ¥¹¥é¥¤¥É¥·¥ç¡¼¤ÎÉý

        - -

        ¥¹¥é¥¤¥É¥·¥ç¡¼¤ÎÉý ( ¥Ô¥¯¥»¥ë ) ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£

        \ No newline at end of file diff --git a/lang/ja/help/markdown.html b/lang/ja/help/markdown.html index 35bfa1fa5c2..02232dcc01f 100644 --- a/lang/ja/help/markdown.html +++ b/lang/ja/help/markdown.html @@ -130,7 +130,7 @@ Markdown

        Ãí°Õ: Markdown¥Õ¥©¡¼¥Þ¥Ã¥È¥·¥ó¥¿¥Ã¥¯¥¹¤Ï¥Ö¥í¥Ã¥¯Í×ÁǤÎÃæ¤Ç¤Ï½èÍý¤µ¤ì¤Þ¤»¤ó -Îã¡¢¤¢¤Ê¤¿¤ÏMarkdown¥¹¥¿¥¤¥ë *¶¯Ä´* ¤òHTML¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ç»ÈÍѤǤ­¤Þ¤»¤ó¡£

        +Îã¡¢¤¢¤Ê¤¿¤ÏMarkdown-style *¶¯Ä´* ¤òHTML¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ç»ÈÍѤǤ­¤Þ¤»¤ó¡£

        ÈÆÍÑŪ¤Ê¥¤¥ó¥é¥¤¥óÍ×ÁÇ - Îã <span>¡¢<cite>¡¢<del> - ¤Ï¡¢ MarkdownÃÊÍî¡¢¥ê¥¹¥È¡¢¥Ø¥Ã¥À¤Î¤É¤³¤Ç¤â»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¢¤Ê¤¿¤¬´õ˾¤¹¤ë¾ì¹ç¡¢Markdown¥Õ¥©¡¼¥Þ¥Ã¥È¤Î @@ -141,129 +141,251 @@ Markdown

        ¥¹¥Ú¥·¥ã¥ë¥­¥ã¥é¥¯¥¿¤Î¼«Æ°¥¨¥¹¥±¡¼¥×

        -

        HTML¤Ë¤ÏÆÃÊ̤˰·¤¦É¬ÍפΤ¢¤ë2¤Ä¤Îʸ»ú¤¬¤¢¤ê¤Þ¤¹: < ¤È &¤Ç¤¹¡£º¸¸°³ç¸Ì¥¿¥°¤Î³«»Ï¤Ë»ÈÍѤ·¡¢¥¢¥ó¥Ñ¥µ¥ó¥É¤ÏHTML¥¨¥ó¥Æ¥£¥Æ¥£¡¼¤ò¼¨¤¹¤¿¤á¤Ë»ÈÍѤ·¤Þ¤¹¡£ -¤³¤ì¤é¤Îʸ»ú¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¥¨¥ó¥Æ¥£¥Æ¥£¡¼¤È¤·¤Æ¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Îã¡¢&lt; ¤È &amp;¤Ç¤¹¡£

        -

        ÆÃ¤Ë¥¢¥ó¥Ñ¥µ¥ó¥É¤Ï¡¢¥Û¡¼¥à¥Ú¡¼¥¸À½ºî¼Ôµã¤«¤»¤Î¸ºß¤Ç¤¹¡£‘AT&T’¤È½ñ¤­¤¿¤¤¾ì¹ç¡¢‘AT&amp;T’¤È½ñ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ -¤µ¤é¤Ë¡¢URL¤ÎÃæ¤Ç¤â¥¢¥ó¥Ñ¥µ¥ó¥É¤ò¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£½¾¤Ã¤Æ¡¢¼¡¤Î¤è¤¦¤Ë¥ê¥ó¥¯¤·¤¿¤¤¾ì¹ç:

        + +

        In HTML, there are two characters that demand special treatment: < + +and &. Left angle brackets are used to start tags; ampersands are + +used to denote HTML entities. If you want to use them as literal + +characters, you must escape them as entities, e.g. &lt;, and + +&amp;.

        + + + +

        Ampersands in particular are bedeviling for web writers. If you want to + +write about ‘AT&T’, you need to write ‘AT&amp;T’. You even need to + +escape ampersands within URLs. Thus, if you want to link to:

        + +
        http://images.google.com/images?num=30&q=larry+bird
         
         
        -

        ¥¢¥ó¥«¡¼¥¿¥°href¤Î°À­¤Ë¤ª¤¤¤Æ¡¢URL¤ò¼¡¤Î¤è¤¦¤Ë¥¨¥ó¥³¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹:

        + + +

        you need to encode the URL as:

        + +
        http://images.google.com/images?num=30&amp;q=larry+bird
         
         
        -

        ¸À¤¦¤Þ¤Ç¤â¤Ê¤¯¡¢¤³¤Î¤³¤È¤Ï˺¤ì¤ä¤¹¤¯¡¢¶²¤é¤¯Å¬Àڤ˥ޡ¼¥¯¥¢¥Ã¥×¤µ¤ì¤¿¥¦¥§¥Ö¥µ¥¤¥È¤ÇHTMLÂÅÅöÀ­¥¨¥é¡¼¤¬È¯À¸¤¹¤ëºÇ¤â°ìÈÌŪ¤Ê¸¶°ø¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

        -

        Markdown¤ÏɬÍפ˱þ¤¸¤Æ¥¨¥¹¥±¡¼¥×½èÍý¤ò¹Ô¤¤¤Þ¤¹¤Î¤Ç¡¢¤¢¤Ê¤¿¤Ï¤³¤ì¤é¤Îʸ»ú¤ò¼«Á³¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¥¢¥ó¥Ñ¥µ¥ó¥É¤òHTML¥¨¥ó¥Æ¥£¥Æ¥£¡¼¤Î°ìÉô¤È¤·¤Æ»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï¡¢¤½¤Î¤Þ¤Þ¤Î¾õÂ֤ˤµ¤ì¤Þ¤¹¡£¤½¤¦¤Ç̵¤¤¾ì¹ç¤Ï¡¢&amp;¤Ë¥¨¥ó¥³¡¼¥É¤µ¤ì¤Þ¤¹¡£

        -

        ¤Ç¤¹¤«¤é¡¢¤¢¤Ê¤¿¤¬Ãøºî¸¢µ­¹æ¤òµ­»ö¤ËÆþ¤ì¤¿¤¤¾ì¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ëµ­½Ò¤Ç¤­¤Þ¤¹:

        +

        in your anchor tag href attribute. Needless to say, this is easy to + +forget, and is probably the single most common source of HTML validation + +errors in otherwise well-marked-up web sites.

        + + + +

        Markdown allows you to use these characters naturally, taking care of + +all the necessary escaping for you. If you use an ampersand as part of + +an HTML entity, it remains unchanged; otherwise it will be translated + +into &amp;.

        + + + +

        So, if you want to include a copyright symbol in your article, you can write:

        + +
        &copy;
         
         
        -

        Markdown¤Ï¥¢¥ó¥Ñ¥µ¥ó¥É¤ò¤½¤Î¤Þ¤Þ¤Ë¤·¤Þ¤¹¡£¤·¤«¤·¡¢¼¡¤Î¤è¤¦¤Ëµ­½Ò¤¹¤ë¤È:

        + + +

        and Markdown will leave it alone. But if you write:

        + +
        AT&T
         
         
        -

        Markdown¤Ï¼¡¤Î¤è¤¦¤Ë¥¨¥ó¥³¡¼¥É¤·¤Þ¤¹:

        + + +

        Markdown will translate it to:

        + +
        AT&amp;T
         
         
        -

        ƱÍͤˡ¢Markdown¤Ïinline HTML¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¸°³ç¸Ì¤òHTML¤Î¶èÀÚ¤êʸ»ú¤È¤·¤Æ»ÈÍѤ¹¤ë¾ì¹ç¡¢Markdown¤Ï¸°³ç¸Ì¤ò¤½¤Î¤Þ¤Þ¤Ë¤·¤Þ¤¹¡£¤·¤«¤·¡¢¼¡¤Î¤è¤¦¤Ëµ­½Ò¤¹¤ë¤È:

        + + +

        Similarly, because Markdown supports inline HTML, if you use + +angle brackets as delimiters for HTML tags, Markdown will treat them as + +such. But if you write:

        + +
        4 < 5
         
         
        -

        Markdown¤Ï¼¡¤Î¤è¤¦¤Ë¥¨¥ó¥³¡¼¥É¤·¤Þ¤¹:

        + + +

        Markdown will translate it to:

        + +
        4 &lt; 5
         
         
        -

        ¤·¤«¤·¡¢Markdown¥³¡¼¥Éspans¤Èblocks¤ÎÃæ¤Ç¤Ï¡¢¸°³ç¸Ì¡¢¥¢¥ó¥Ñ¥µ¥ó¥É¤Ï¾ï¤Ë¼«Æ°Åª¤Ë¥¨¥ó¥³¡¼¥É¤µ¤ì¤Þ¤¹¡£¤³¤Î¤³¤È¤Ë¤è¤ê¡¢Markdown¤ò»ÈÍѤ¹¤ë¤È´Êñ¤ËHTML¥³¡¼¥É¤òµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -(µÕ¤Ë¡¢À¸¤ÎHTML¤ÇHTML¥·¥ó¥¿¥Ã¥¯¥¹¤òµ­½Ò¤¹¤ë¤È¹ó¤¤¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤¢¤Ê¤¿¤Î¥µ¥ó¥×¥ë¥³¡¼¥ÉÆâ¤ÎÁ´¤Æ¤Î < ¤È & ¤ò¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפ¬¤¢¤ë¤«¤é¤Ç¤¹¡£)

        + + +

        However, inside Markdown code spans and blocks, angle brackets and + +ampersands are always encoded automatically. This makes it easy to use + +Markdown to write about HTML code. (As opposed to raw HTML, which is a + +terrible format for writing about HTML syntax, because every single < + +and & in your example code needs to be escaped.)

        + +
        + +

        ¥Ö¥í¥Ã¥¯Í×ÁÇ

        + +

        ÃÊÍî¤È²þ¹Ô

        -

        ÃÊÍî¤Ï¡¢Ã±½ã¤Ë1¤Ä¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤Î¶õÇò¹Ô¤Ç¶èÀÚ¤é¤ì¤¿¡¢1¤Ä¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤ÎϢ³¤·¤¿¥Æ¥­¥¹¥È¤Î¹Ô¤Ç¤¹¡£ -(¶õÇò¹Ô¤Ï¶õÇò¹Ô¤Ë¸«¤¨¤ë¤¢¤é¤æ¤ë¹Ô¤ò»Ø¤·¤Þ¤¹ - ¥¹¥Ú¡¼¥¹¤Þ¤¿¤Ï¥¿¥Ö¤ò´Þ¤ó¤Ç¤¤¤ë¤Ë²á¤®¤Ê¤¤¹Ô¤â¶õÇò¹Ô¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£) -ɸ½àŪ¤ÊÃÊÍî¤Ï¥¹¥Ú¡¼¥¹¤ä¥¿¥Ö¤Ç¶èÀÚ¤é¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£

        -

        ¡Ö1¤Ä¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤ÎϢ³¤·¤¿¥Æ¥­¥¹¥È¤Î¹Ô¡×¥ë¡¼¥ë¤Ï¡¢Markdown¤¬¡Ö¥Ï¡¼¥É¥é¥Ã¥×¡×¥Æ¥­¥¹¥È¤ÎÃÊÍî¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ -¤³¤ì¤Ï¾¤ÎËØ¤É¤Îtext-toHTML¥Õ¥©¡¼¥Þ¥Ã¥¿(Movable Type¤Î¡Ö²þ¹Ô¤ÎÊÑ´¹¡×¥ª¥×¥·¥ç¥ó¤â´Þ¤à)¤¬ÃÊÍîÆâ¤ÎÁ´¤Æ¤Î²þ¹Ô¤ò <br />¥¿¥°¤ËÊÑ´¹¤¹¤ë -¤Î¤È¶Ë¤á¤Æ°Û¤Ê¤ëÉôʬ¤Ç¤¹¡£ -

        -

        ¤¢¤Ê¤¿¤¬Markdown¤ò»È¤Ã¤Æ<br />¥¿¥°¤òÁÞÆþ¤·¤¿¤¤¾ì¹ç¤Ï¡¢¹Ô¤ò1¤Ä¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤Î¥¹¥Ú¡¼¥¹¤Ç½ª¤ï¤Ã¤Æ¡¢ -²þ¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£

        +

        A paragraph is simply one or more consecutive lines of text, separated + +by one or more blank lines. (A blank line is any line that looks like a + +blank line — a line containing nothing but spaces or tabs is considered + +blank.) Normal paragraphs should not be intended with spaces or tabs.

        + + + +

        The implication of the “one or more consecutive lines of text” rule is + +that Markdown supports “hard-wrapped” text paragraphs. This differs + +significantly from most other text-to-HTML formatters (including Movable + +Type’s “Convert Line Breaks” option) which translate every line break + +character in a paragraph into a <br /> tag.

        + + + +

        When you do want to insert a <br /> break tag using Markdown, you + +end a line with two or more spaces, then type return.

        + + + +

        Yes, this takes a tad more effort to create a <br />, but a simplistic + +“every line break is a <br />” rule wouldn’t work for Markdown. + +Markdown’s email-style blockquoting and multi-paragraph list items + +work best — and look better — when you format them with hard breaks.

        + -

        ¤½¤¦¤Ç¤¹¡¢<br />¤òºîÀ®¤¹¤ë¤Ë¤Ï¾¯¤·¤Ð¤«¤êÅØÎϤ¬É¬ÍפǤ¹¤¬¡¢Ã±½ã¤Ë¡ÖÁ´¤Æ¤Î²þ¹Ô¤Ï<br />¤ËÊÑ´¹¡× -¤È¤¤¤¦¥ë¡¼¥ë¤ÏMarkdown¤Ç¤ÏƯ¤­¤Þ¤»¤ó¡£Markdown¤Îemail¥¹¥¿¥¤¥ë°úÍѤÈÊ£¿ôÃÊÍî¤Î¥ê¥¹¥È¥¢¥¤¥Æ¥à¤Ï¡¢ -¥Ï¡¼¥É¥Ö¥ì¡¼¥¯¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¹Ô¤¦»þ¤Ë¡¢ºÇ¤âÎɤ¯Æ°ºî¤·¡¢¸«±É¤¨¤¬Îɤ¯¤Ê¤ê¤Þ¤¹¡£

        -

        Markdown¤Ï¡¢Setext ¤È atx ¤Î2¤Ä¤Î¥Ø¥Ã¥À¥¹¥¿¥¤¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£

        -

        Setext¥¹¥¿¥¤¥ë¥Ø¥Ã¥À¤Ï¡¢ ¥¤¥³¡¼¥ë¥µ¥¤¥ó (Âè°ì¥ì¥Ù¥ë¥Ø¥Ã¥À) ¤È¥À¥Ã¥·¥å (ÂèÆó¥ì¥Ù¥ë¥Ø¥Ã¥À) ¤ò»ÈÍѤ·¤Æ¡Ö²¼Àþ¡×¤ò°ú¤­¤Þ¤¹¡£Î㤨¤Ð:

        -
        ¤³¤ì¤Ï H1 ¤Ç¤¹¡£
        +

        Markdown supports two styles of headers, Setext and atx.

        + + + +

        Setext-style headers are “underlined” using equal signs (for first-level + +headers) and dashes (for second-level headers). For example:

        + + + +
        This is an H1
         
         =============
         
         
         
        -¤³¤ì¤Ï H2 ¤Ç¤¹¡£
        +This is an H2
         
         -------------
         
         
        -

        ²¼Àþ¤Ï = ¤Î¿ô¤Ë´Ø¤ï¤é¤ºÉ½¼¨¤µ¤ì¤Þ¤¹¡£

        -

        Atx¥¹¥¿¥¤¥ë¤Î¥Ø¥Ã¥À¤Ï¡¢¥Ø¥Ã¥À¥ì¥Ù¥ë1¡Á6¤Ë±þ¤¸¤Æ1¡Á6¤Î¥Ï¥Ã¥·¥å¥­¥ã¥é¥¯¥¿¤ò¹ÔƬ¤Ç»ÈÍѤ·¤Þ¤¹¡£Î㤨¤Ð:

        + +

        Any number of underlining =’s or -’s will work.

        -
        # ¤³¤ì¤Ï H1 ¤Ç¤¹¡£
        +

        Atx-style headers use 1-6 hash characters at the start of the line, + +corresponding to header levels 1-6. For example:

        -## ¤³¤ì¤Ï H2 ¤Ç¤¹¡£ +
        # This is an H1
         
         
         
        -###### ¤³¤ì¤Ï H6 ¤Ç¤¹¡£
        +## This is an H2
        +
        +
        +
        +###### This is an H6
         
         
        -

        Atx¥¹¥¿¥¤¥ë¥Ø¥Ã¥À¤ò¡ÖÊĤ¸¤ë¡×¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï½ã¿è¤ËÁõ¾þŪ¤Ê¤â¤Î¤Ç¤¹ - ¸«¤¿Ìܤ¬Îɤ¯¤Ê¤ë¾ì¹ç¤Ï»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£¥Ï¥Ã¥·¥å¤Î¿ô¤Ï¥Ø¥Ã¥À¤ò³«»Ï¤¹¤ë»þ¤Ë»ÈÍѤ¹¤ë¥Ï¥Ã¥·¥å¤Î¿ô¤Ë¹çÃפ¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£( ¥Ø¥Ã¥À¤ò³«»Ï¤¹¤ë»þ¤Î¥Ï¥Ã¥·¥å¿ô¤Ï¡¢¥Ø¥Ã¥À¥ì¥Ù¥ë¤ò·èÄꤷ¤Þ¤¹¡£):

        -
        # ¤³¤ì¤Ï H1 ¤Ç¤¹¡£ #
        +
        +

        Optionally, you may “close” atx-style headers. This is purely + +cosmetic — you can use this if you think it looks better. The + +closing hashes don’t even need to match the number of hashes + +used to open the header. (The number of opening hashes + +determines the header level.) :

        -## ¤³¤ì¤Ï H2 ¤Ç¤¹¡£ ## +
        # This is an H1 #
         
         
         
        -### ¤³¤ì¤Ï H3 ¤Ç¤¹¡£ ######
        +## This is an H2 ##
        +
        +
        +
        +### This is an H3 ######
         
         
        @@ -273,9 +395,13 @@ Markdown -

        Markdown¤Ç¤Ï¡¢E-¥á¡¼¥ë¤ÈƱ¤¸¤è¤¦¤Ë > ¤ò°úÍѤ˻ÈÍѤ·¤Þ¤¹¡£ -¤â¤·¡¢¤¢¤Ê¤¿¤¬¥á¡¼¥ë¥á¥Ã¥»¡¼¥¸¤Î°úÍѤ˴·¤ì¤Æ¤¤¤ë¤Î¤Ç¤·¤¿¤é¡¢Markdown¤Ç¤É¤Î¤è¤¦¤Ë°úÍѤòºîÀ®¤¹¤ì¤Ð¤è¤¤¤«Ê¬¤«¤ë¤Ç¤·¤ç¤¦¡£ -¥Ï¡¼¥É¥é¥Ã¥×¤Ë¤·¤Æ¡¢³Æ¹Ô¤ÎÁ°¤Ë > ¤òÉÕ¤±¤ë¤³¤È¤Ç¸«±É¤¨¤¬ºÇÎɤˤʤê¤Þ¤¹:

        +

        Markdown uses email-style > characters for blockquoting. If you’re + +familiar with quoting passages of text in an email message, then you + +know how to create a blockquote in Markdown. It looks best if you hard + +wrap the text and put a > before every line:

        @@ -295,7 +421,9 @@ Markdown -

        Markdown¤Ç¤Ï¡¢¥Ï¡¼¥É¥é¥Ã¥×¤·¤¿ÃÊÍî¤ÎºÇ½é¤Î¹Ô¤Î¤ß¤Ë > ¥³¡¼¥É¤òÉÕ¤±¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹:

        +

        Markdown allows you to be lazy and only put the > before the first + +line of a hard-wrapped paragraph:

        @@ -315,38 +443,43 @@ id sem consectetuer libero luctus adipiscing. -

        ¹¹¤Ë > ¥³¡¼¥É¤òÉÕ¤±¤ë¤³¤È¤Ç¡¢°úÍѤò¥Í¥¹¥È ( Îã °úÍѤÎÃæ¤Î°úÍÑ ) ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹:

        +

        Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by + +adding additional levels of >:

        -
        > ¤³¤ì¤ÏºÇ½é¤Î³¬ÁؤΰúÍѤǤ¹¡£
        +
        +
        > This is the first level of quoting.
         
         >
         
        -> > ¤³¤ì¤Ï¥Í¥¹¥È¤·¤¿°úÍѤǤ¹¡£
        +> > This is nested blockquote.
         
         >
         
        -> ºÇ½é¤Î³¬ÁؤËÌá¤ê¤Þ¤¹¡£
        +> Back to the first level.
         
         
        -

        °úÍѤϡ¢¥Ø¥Ã¥À¡¼¡¢¥ê¥¹¥È¡¢¥³¡¼¥É¥Ö¥í¥Ã¥¯Åù¡¢Â¾¤ÎMarkdownÍ×ÁǤò´Þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹:

        +

        Blockquotes can contain other Markdown elements, including headers, lists, + +and code blocks:

        -
        > ## ¤³¤ì¤Ï¥Ø¥Ã¥À¡¼¤Ç¤¹¡£
        +
        > ## This is a header.
         
         > 
         
        -> 1.   ¤³¤ì¤ÏºÇ½é¤Î¥ê¥¹¥È¥¢¥¤¥Æ¥à¤Ç¤¹¡£
        +> 1.   This is the first list item.
         
        -> 2.   ¤³¤ì¤Ï2ÈÖÌܤΥꥹ¥È¥¢¥¤¥Æ¥à¤Ç¤¹¡£
        +> 2.   This is the second list item.
         
         > 
         
        -> ¥µ¥ó¥×¥ë¥³¡¼¥É¤Ç¤¹:
        +> Here's some example code:
         
         > 
         
        @@ -355,50 +488,62 @@ id sem consectetuer libero luctus adipiscing.
         
        -

        Í¥¤ì¤¿¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¤Ç¤Ï¡¢¤É¤ì¤Ç¤âE-¥á¡¼¥ë¥¹¥¿¥¤¥ë¤Î°úÍѤò´Êñ¤ËÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -Î㤨¤Ð¡¢BBEdit¤Ç¤Ï¥Æ¥­¥¹¥È¤òÁªÂò¤·¤Æ¡¢¥Æ¥­¥¹¥È¥á¥Ë¥å¡¼¤è¤ê°úÍѤγ¬ÁØ¥ì¥Ù¥ë¤òÁý¤ä¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        -

        ¥ê¥¹¥È

        +

        Any decent text editor should make email-style quoting easy. For -

        Markdown¤Ï¡¢ÈÖ¹æÉÕ¤­¥ê¥¹¥È(ÈÖ¹æ) ¤È ÈÖ¹æÌµ¤·¥ê¥¹¥È(¹õ´Ý) ¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£

        +example, with BBEdit, you can make a selection and choose Increase -

        ÈÖ¹æÌµ¤·¥ê¥¹¥È¤Ï¡¢¥¢¥¹¥¿¥ê¥¹¥¯¡¢¥×¥é¥¹¡¢¥Ï¥¤¥Õ¥ó¤Î¤É¤ì¤«¤Çµ­½Ò¤·¤Þ¤¹:

        +Quote Level from the Text menu.

        -
        *   ÀÖ
        +

        Lists

        -* ÎÐ -* ÀÄ + +

        Markdown supports ordered (numbered) and unordered (bulleted) lists.

        + + + +

        Unordered lists use asterisks, pluses, and hyphens — interchangably + +— as list markers:

        + + + +
        *   Red
        +
        +*   Green
        +
        +*   Blue
         
         
        -

        ¤Ï²¼µ­¤ÈƱ¤¸¤Ç¤¹:

        +

        is equivalent to:

        -
        +   ÀÖ
        +
        +   Red
         
        -+   ÎÐ
        ++   Green
         
        -+   ÀÄ
        ++   Blue
         
         
        -

        ¤½¤·¤Æ²¼µ­¤È¤âƱ¤¸¤Ç¤¹:

        +

        and:

        -
        -   ÀÖ
        +
        -   Red
         
        --   ÎÐ
        +-   Green
         
        --   ÀÄ
        +-   Blue
         
         
        diff --git a/lang/ja/help/mods.html b/lang/ja/help/mods.html index 67fe3ec19e5..31e54d6ca06 100644 --- a/lang/ja/help/mods.html +++ b/lang/ja/help/mods.html @@ -1,39 +1,39 @@ -

        ³èư¥â¥¸¥å¡¼¥ë

        +

        ³èư¥â¥¸¥å¡¼¥ë

        -

        Moodle¤Ë¤Ï¤É¤Î¤è¤¦¤Ê¼ïÎà¤Î¥³¡¼¥¹¤Ç¤âºîÀ®¤Ç¤­¤ë¤è¤¦¤Ë¡¢Éý¹­¤¤³èư¥â¥¸¥å¡¼¥ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£

        +

        Moodle¤Ë¤Ï¤É¤Î¤è¤¦¤Ê¼ïÎà¤Î¥³¡¼¥¹¤Ç¤âºîÀ®½ÐÍè¤ë¤è¤¦¤Ë¡¢Éý¹­¤¤³èư¥â¥¸¥å¡¼¥ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£

        -

         ¥Õ¥©¡¼¥é¥à

        -
          -

          ¤³¤Î³èư¤Ï°ìÈÖÂçÀڤʤâ¤Î¤Ç¤¹¡£¤Û¤È¤ó¤É¤Î¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤¬¤³¤³¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£¥Õ¥©¡¼¥é¥à¤Ï°Û¤Ê¤ë¹½Â¤¤ËºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£»²²Ã¼Ô¤¬Â¾¤Î¿Í¤ÎÅê¹Æ¤òɾ²Á¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£Åê¹Æ¤Ï¿Íͤʥե©¡¼¥Þ¥Ã¥È¤Ç±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¥Õ¥¡¥¤¥ë¤ÎźÉÕ¤â²Äǽ¤Ç¤¹¡£¥Õ¥©¡¼¥é¥à¤Ë»²²Ã¤¹¤ë¤È¡¢»²²Ã¼Ô°¸¤Ë¤Ë¿·¤·¤¤Åê¹Æ¤¬¥á¡¼¥ë¤ÇÇÛ¿®¤µ¤ì¤Þ¤¹¡£¶µ»Õ¤ÏÁ´¤Æ¤Î³ØÀ¸¤Ë»²²Ã¤òµÁ̳ÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -

        +

         ¥Õ¥©¡¼¥é¥à

        +
          +

          ¤³¤Î³èư¤Ï°ìÈÖÂçÀڤʤâ¤Î¤Ç¤¹¡£¤Û¤È¤ó¤É¤Î¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¤¬¤³¤³¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£¥Õ¥©¡¼¥é¥à¤Ï°Û¤Ê¤ë¹½Â¤¤ËºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£»²²Ã¼Ô¤¬Â¾¤Î¿Í¤ÎÅê¹Æ¤òɾ²Á¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£Åê¹Æ¤Ï¿Íͤʥե©¡¼¥Þ¥Ã¥È¤Ç±ÜÍ÷¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤¿¥Õ¥¡¥¤¥ë¤ÎźÉÕ¤â²Äǽ¤Ç¤¹¡£¥Õ¥©¡¼¥é¥à¤Ë»²²Ã¤¹¤ë¤È¡¢»²²Ã¼Ô°¸¤Ë¤Ë¿·¤·¤¤Åê¹Æ¤¬¥á¡¼¥ë¤ÇÇÛ¿®¤µ¤ì¤Þ¤¹¡£¶µ»Õ¤ÏÁ´¤Æ¤Î³ØÀ¸¤Ë»²²Ã¤òµÁ̳ÉÕ¤±¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +

        -

         Æü»ï

        -
          -

          ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ï½Ï¹Í¤¹¤ë³èư¤Ë¤È¤Ã¤Æ½ÅÍפǤ¹¡£¶µ»Õ¤Ï³ØÀ¸¤ËÂФ·¤Æ¤¢¤ëÏÃÂê¤Ë´Ø¤·¤Æ½Ï¹Í¤¹¤ë¤è¤¦¤Ë»Ø¼¨¤Ç¤­¤Þ¤¹¡£³ØÀ¸¤Ï¼«Ê¬¤Î²óÅú¤òÊÔ½¸¤·¤¿¤êË᤭¤ò¤«¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£²óÅú¤Ï¥×¥é¥¤¥Ù¡¼¥È¤Ê¤â¤Î¤Ç¶µ»Õ¤Î¤ß±ÜÍ÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¶µ»Õ¤Ï¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÄ󶡤·¤¿¤ê¡¢Æü»ï¤Îɾ²Á¤ò¹Ô¤¨¤Þ¤¹¡£Ä̾1½µ´Ö¤¢¤¿¤ê1¤Ä¤ÎÆü»ï¤¬Å¬Åö¤Ç¤¹¡£

          -
        +

         Æü»ï

        +
          +

          ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ï½Ï¹Í¤¹¤ë³èư¤Ë¤È¤Ã¤Æ½ÅÍפǤ¹¡£¶µ»Õ¤Ï³ØÀ¸¤ËÂФ·¤Æ¤¢¤ëÏÃÂê¤Ë´Ø¤·¤Æ½Ï¹Í¤¹¤ë¤è¤¦¤Ë»Ø¼¨½ÐÍè¤Þ¤¹¡£³ØÀ¸¤Ï¼«Ê¬¤Î²óÅú¤òÊÔ½¸¤·¤¿¤êË᤭¤ò¤«¤±¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£²óÅú¤Ï¥×¥é¥¤¥Ù¡¼¥È¤Ê¤â¤Î¤Ç¶µ»Õ¤Î¤ß±ÜÍ÷¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¶µ»Õ¤Ï¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÄ󶡤·¤¿¤ê¡¢Æü»ï¤Îɾ²Á¤ò¹Ô¤¨¤Þ¤¹¡£Ä̾1½µ´Ö¤¢¤¿¤ê1¤Ä¤ÎÆü»ï¤¬Å¬Åö¤Ç¤¹¡£

          +
        -

         »ñÎÁ

        -
          -

          »ñÎÁ¤Ï¶µ»Õ¤¬¥³¡¼¥¹Æâ¤Ë»ý¤Á¹þ¤ß¤¿¤¤¾ðÊó¤Ç¤¹¡£»ñÎÁ¤Ï¥³¡¼¥¹¤Î¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É¡¢Moodle¤ÇľÀÜÊÔ½¸¡¢¤Þ¤¿¤Ï¥³¡¼¥¹Æâ¤Ë³°Éô¤Î¥Û¡¼¥à¥Ú¡¼¥¸¤òɽ¼¨¤µ¤»¤ë¤³¤È¤Ë¤è¤ê½àÈ÷¤Ç¤­¤Þ¤¹¡£ -

          -
        +

         »ñÎÁ

        +
          +

          »ñÎÁ¤Ï¶µ»Õ¤¬¥³¡¼¥¹Æâ¤Ë»ý¤Á¹þ¤ß¤¿¤¤¾ðÊó¤Ç¤¹¡£»ñÎÁ¤Ï¥³¡¼¥¹¤Î¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É¡¢Moodle¤ÇľÀÜÊÔ½¸¡¢¤Þ¤¿¤Ï¥³¡¼¥¹Æâ¤Ë³°Éô¤Î¥Û¡¼¥à¥Ú¡¼¥¸¤òɽ¼¨¤µ¤»¤ë¤³¤È¤Ë¤è¤ê½àÈ÷½ÐÍè¤Þ¤¹¡£ +

          +
        -

         ²ÝÂê

        -
          -

          ²ÝÂê¤Ç¤Ï¶µ»Õ¤¬³ØÀ¸¤ËÂФ·¤Æ¡¢¤¢¤é¤æ¤ë·ÁÂ֤Υǥ¸¥¿¥ë¥³¥ó¥Æ¥ó¥Ä¤ò¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Åµ·¿Åª¤Ê²ÝÂê¤Ë¤Ï¥¨¥Ã¥»¡¼¡¢¥×¥í¥¸¥§¥¯¥È¡¢¥ì¥Ý¡¼¥ÈÅù¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë¤Ïɾ²Á¥·¥¹¥Æ¥à¤¬´Þ¤Þ¤ì¤Þ¤¹¡£

          -
        +

         ²ÝÂê

        +
          +

          ²ÝÂê¤Ç¤Ï¶µ»Õ¤¬³ØÀ¸¤ËÂФ·¤Æ¡¢¤¢¤é¤æ¤ë·ÁÂ֤Υǥ¸¥¿¥ë¥³¥ó¥Æ¥ó¥Ä¤ò¥µ¡¼¥Ð¤Ë¥¢¥Ã¥×¥í¡¼¥É¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Åµ·¿Åª¤Ê²ÝÂê¤Ë¤Ï¥¨¥Ã¥»¡¼¡¢¥×¥í¥¸¥§¥¯¥È¡¢¥ì¥Ý¡¼¥ÈÅù¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë¤Ïɾ²Á¥·¥¹¥Æ¥à¤¬´Þ¤Þ¤ì¤Þ¤¹¡£

          +
        -

         ¾®¥Æ¥¹¥È

        -
          -

          ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ç¤Ï¶µ»Õ¤¬Â¿»èÁªÂòÊý¼°¡¢¡û¡ß¼°¡¢µ­½Ò¼°¤Î¾®¥Æ¥¹¥È¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤é¤Î¼ÁÌä¤ÏʬÎव¤ì¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¡¢¥³¡¼¥¹´Ö¤Ë¤Þ¤¿¤¬¤Ã¤ÆºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¾®¥Æ¥¹¥È¤Ë¤ÏÊ£¿ô²ó¤ÎÄ©À郎²Äǽ¤Ç¤¹¡£¤½¤ì¤¾¤ì¤ÎÄ©Àï¤Ï¼«Æ°Åª¤Ëµ­Ï¿¤µ¤ì¡¢¶µ»Õ¤Ï¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÍ¿¤¨¤¿¤ê¡¢Àµ²ò¤òɽ¼¨¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë¤Ïɾ²Á¥·¥¹¥Æ¥à¤¬´Þ¤Þ¤ì¤Þ¤¹¡£

          -
        +

         ¾®¥Æ¥¹¥È

        +
          +

          ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ç¤Ï¶µ»Õ¤¬Â¿»èÁªÂòÊý¼°¡¢¡û¡ß¼°¡¢µ­½Ò¼°¤Î¾®¥Æ¥¹¥È¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤ì¤é¤Î¼ÁÌä¤ÏʬÎव¤ì¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¡¢¥³¡¼¥¹´Ö¤Ë¤Þ¤¿¤¬¤Ã¤ÆºÆÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¾®¥Æ¥¹¥È¤Ë¤ÏÊ£¿ô²ó¤ÎÄ©À郎²Äǽ¤Ç¤¹¡£¤½¤ì¤¾¤ì¤ÎÄ©Àï¤Ï¼«Æ°Åª¤Ëµ­Ï¿¤µ¤ì¡¢¶µ»Õ¤Ï¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÍ¿¤¨¤¿¤ê¡¢Àµ²ò¤òɽ¼¨¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë¤Ïɾ²Á¥·¥¹¥Æ¥à¤¬´Þ¤Þ¤ì¤Þ¤¹¡£

          +
        -

         ÁªÂò

        -
          -

          ÁªÂò¤Ï¶µ»Õ¤¬Ê£¿ô²óÅú²Äǽ¤Ê¼ÁÌä¤ò¹Ô¤¦¤È¤Æ¤â´Êñ¤Ê³èư¤Ç¤¹¡£¥È¥Ô¥Ã¥¯¤ËÂФ¹¤ë¹Í¤¨¤ò»É·ã¤¹¤ë´Êñ¤ÊÅêɼ¤ä¥³¡¼¥¹¤ÎÊý¿Ë¤ËÂФ¹¤ëÅêɼ¡¢Ä´ºº¼ý½¸¤ËÍ­ÍѤǤ¹¡£

          -
        +

         ÁªÂò

        +
          +

          ÁªÂò¤Ï¶µ»Õ¤¬Ê£¿ô²óÅú²Äǽ¤Ê¼ÁÌä¤ò¹Ô¤¦¤È¤Æ¤â´Êñ¤Ê³èư¤Ç¤¹¡£¥È¥Ô¥Ã¥¯¤ËÂФ¹¤ë¹Í¤¨¤ò»É·ã¤¹¤ë´Êñ¤ÊÅêɼ¤ä¥³¡¼¥¹¤ÎÊý¿Ë¤ËÂФ¹¤ëÅêɼ¡¢Ä´ºº¼ý½¸¤ËÍ­ÍѤǤ¹¡£

          +
        -

         Ä´ºº

        -
          -

          Ä´ºº¥â¥¸¥å¡¼¥ë¤Ï¥ª¥ó¥é¥¤¥ó³Ø½¬¤Ë¤ª¤¤¤Æ³Ø½¬¤Îɾ²Á¤ª¤è¤Ó»É·ã¤ËÍ­ÍѤʼ¾ںѤߤοô¿¤¯¤ÎÄ´ºº¼êÃʤòÄ󶡤·¤Þ¤¹¡£¶µ»Õ¤Ï¤³¤ì¤é¤òÍøÍѤ·¤Æ³ØÀ¸¤«¤é¥Ç¡¼¥¿¤ò½¯½¸¤·¤Æ¡¢³Ø½¬¤ª¤è¤Ó¶µ°éÊý¿Ë¤Î¼ê½õ¤±¤È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          -
        +

         Ä´ºº

        +
          +

          Ä´ºº¥â¥¸¥å¡¼¥ë¤Ï¥ª¥ó¥é¥¤¥ó³Ø½¬¤Ë¤ª¤¤¤Æ³Ø½¬¤Îɾ²ÁµÚ¤Ó»É·ã¤ËÍ­ÍѤʼ¾ںѤߤοô¿¤¯¤ÎÄ´ºº¼êÃʤòÄ󶡤·¤Þ¤¹¡£¶µ»Õ¤Ï¤³¤ì¤é¤òÍøÍѤ·¤Æ³ØÀ¸¤«¤é¥Ç¡¼¥¿¤ò½¯½¸¤·¤Æ¡¢³Ø½¬µÚ¤Ó¶µ°éÊý¿Ë¤Î¼ê½õ¤±¤È¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

          +
        diff --git a/lang/ja/help/picture.html b/lang/ja/help/picture.html index 70719fbf594..2e316bc1022 100644 --- a/lang/ja/help/picture.html +++ b/lang/ja/help/picture.html @@ -1,22 +1,22 @@ -

        ¥¤¥á¡¼¥¸¤Î¥¢¥Ã¥×¥í¡¼¥É

        +

        ²èÁü¤Î¥¢¥Ã¥×¥í¡¼¥É

        -

        ¤¢¤Ê¤¿¤Î¥³¥ó¥Ô¥å¡¼¥¿¤«¤é¥µ¡¼¥Ð¤Ë¥¤¥á¡¼¥¸¤ò¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥¤¥á¡¼¥¸¤Ï +

        ¤¢¤Ê¤¿¤Î¥³¥ó¥Ô¥å¡¼¥¿¤«¤é¥µ¡¼¥Ð¤Ë²èÁü¤ò¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤Î²èÁü¤Ï ÍÍ¡¹¤Ê¾ì½ê¤Ç¤¢¤Ê¤¿¤òɽ¤¹¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ -

        ¤³¤ÎÍýͳ¤«¤é¡¢´é¤Î¥¯¥í¡¼¥º¥¢¥Ã¥×¼Ì¿¿¤¬°ìÈÖÎɤ¤¤Î¤Ç¤¹¤¬¡¢¤¢¤Ê¤¿¤¬¹¥¤­¤Ê¥¤¥á¡¼¥¸¤ò»ÈÍѤ¹¤ë¤³¤È¤â -¤Ç¤­¤Þ¤¹¡£ +

        ¤³¤ÎÍýͳ¤«¤é¡¢´é¤Î¥¯¥í¡¼¥º¥¢¥Ã¥×¼Ì¿¿¤¬°ìÈÖÎɤ¤¤Î¤Ç¤¹¤¬¡¢¤¢¤Ê¤¿¤¬¹¥¤­¤Ê²èÁü¤ò»ÈÍѤ¹¤ë¤³¤È¤â +½ÐÍè¤Þ¤¹¡£ -

        ¥¤¥á¡¼¥¸¥Õ¥¡¥¤¥ë¤ÏJPG¤Þ¤¿¤ÏPNG·Á¼°¤Î¤â¤Î¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£(¥Õ¥¡¥¤¥ë̾¤ÏÄ̾ï.jpg¤Þ¤¿¤Ï.png¤Ç½ª¤ï¤ê¤Þ¤¹) -

        °Ê²¼¤Î4¤Ä¤ÎÊýË¡¤Ç¼Ì¿¿¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

        ²èÁü¥Õ¥¡¥¤¥ë¤ÏJPGËô¤ÏPNG·Á¼°¤Î¤â¤Î¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£(¥Õ¥¡¥¤¥ë̾¤ÏÄ̾ï.jpgËô¤Ï.png¤Ç½ª¤ï¤ê¤Þ¤¹) +

        °Ê²¼¤Î4¤Ä¤ÎÊýË¡¤Ç¼Ì¿¿¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ -

          -
        1. ¥Ç¥¸¥¿¥ë¥«¥á¥é¤ò»ÈÍѤ¹¤ë¡£¼Ì¿¿¤Ï¤Û¤È¤ó¤É¤Î¾ì¹çÀµ¤·¤¤·Á¼°¤Ç¤¢¤Ê¤¿¤Î¥³¥ó¥Ô¥å¡¼¥¿¤ÎÃæ¤ËÊݸ¤µ¤ì¤Þ¤¹¡£ -
        2. ¥×¥ê¥ó¥È¼Ì¿¿¤ò¥¹¥­¥ã¥Ê¤Ç¼è¤ê¹þ¤à¤³¤È¤â¤Ç¤­¤Þ¤¹¡£JPG¤Þ¤¿¤ÏPNG¥Õ¥©¡¼¥Þ¥Ã¥È¤ÇÊݸ¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ -
        3. ¤¢¤Ê¤¿¤¬³¨¤òÉÁ¤±¤ë¤Î¤Ç¤·¤¿¤é¥Ú¥¤¥ó¥È¥×¥í¥°¥é¥à¤Ç¼«¥¤¥á¡¼¥¸¤òÉÁ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ -
        4. ºÇ¸å¤Ë¡¢¥¦¥§¥Ö¾å¤«¤é¥¤¥á¡¼¥¸¤ò¼è¤Ã¤Æ¤¯¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ http://images.google.com ¤Ï¥¤¥á¡¼¥¸¤òõ¤¹¤Î¤ËºÇŬ¤Ê¥µ¥¤¥È¤Ç¤¹¡£Å¬Åö¤Ê¥¤¥á¡¼¥¸¤¬¸«¤Ä¤«¤Ã¤¿¤é¡¢¥Þ¥¦¥¹¤Î¡Ö±¦¥¯¥ê¥Ã¥¯¡×¤Ç¥á¥Ë¥å¡¼¤«¤é¡Ö̾Á°¤òÉÕ¤±¤Æ¥¤¥á¡¼¥¸¤ò...¡×¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£(¥³¥ó¥Ô¥å¡¼¥¿¤Ë¤è¤Ã¤Æ¼ã´³°ã¤¦¾ì¹ç¤¬¤¢¤ê¤Þ¤¹) -
        +
          +
        1. ¥Ç¥¸¥¿¥ë¥«¥á¥é¤ò»ÈÍѤ¹¤ë¡£¼Ì¿¿¤Ï¤Û¤È¤ó¤É¤Î¾ì¹çÀµ¤·¤¤·Á¼°¤Ç¤¢¤Ê¤¿¤Î¥³¥ó¥Ô¥å¡¼¥¿¤ÎÃæ¤ËÊݸ¤µ¤ì¤Þ¤¹¡£ +
        2. ¥×¥ê¥ó¥È¼Ì¿¿¤ò¥¹¥­¥ã¥Ê¤Ç¼è¤ê¹þ¤à¤³¤È¤â½ÐÍè¤Þ¤¹¡£JPGËô¤ÏPNG¥Õ¥©¡¼¥Þ¥Ã¥È¤ÇÊݸ¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ +
        3. ¤¢¤Ê¤¿¤¬³¨¤òÉÁ¤±¤ë¤Î¤Ç¤·¤¿¤é¥Ú¥¤¥ó¥È¥×¥í¥°¥é¥à¤Ç¼«²èÁü¤òÉÁ¤¯¤³¤È¤â½ÐÍè¤Þ¤¹¡£ +
        4. ºÇ¸å¤Ë¡¢¥¦¥§¥Ö¾å¤«¤é²èÁü¤ò¼è¤Ã¤Æ¤¯¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£ http://images.google.com ¤Ï²èÁü¤òõ¤¹¤Î¤ËºÇŬ¤Ê¥µ¥¤¥È¤Ç¤¹¡£Å¬Åö¤Ê²èÁü¤¬¸«¤Ä¤«¤Ã¤¿¤é¡¢¥Þ¥¦¥¹¤Î¡Ö±¦¥¯¥ê¥Ã¥¯¡×¤Ç¥á¥Ë¥å¡¼¤«¤é¡Ö̾Á°¤òÉÕ¤±¤Æ²èÁü¤ò...¡×¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£(¥³¥ó¥Ô¥å¡¼¥¿¤Ë¤è¤Ã¤Æ¼ã´³°ã¤¦¾ì¹ç¤¬¤¢¤ê¤Þ¤¹) +
        -

        ¥¤¥á¡¼¥¸¤ò¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¾ì¹ç¡¢¤³¤Î¥Ú¡¼¥¸¤Î¡Ö»²¾È¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤è¤ê¥¤¥á¡¼¥¸¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£ -

        Ãí°Õ: ¥¢¥Ã¥×¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤¬ºÇÂ祵¥¤¥º¤òͤ¨¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ -

        ¤½¤·¤Æ¡Ö¥×¥í¥Õ¥£¡¼¥ë¤ò¹¹¿·¤¹¤ë¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£ ¥¤¥á¡¼¥¸¤¬¼è¤ê¹þ¤Þ¤ì¤Æ¡¢100¡ß100¥Ô¥¯¥»¥ë¤Ë¥ê¥µ¥¤¥º¤µ¤ì¤Þ¤¹¡£ -

        ¥×¥í¥Õ¥£¡¼¥ë¥Ú¡¼¥¸¤ËÌá¤Ã¤Æ¤â¥¤¥á¡¼¥¸¤¬É½¼¨¤µ¤ì¤Ê¤«¤Ã¤¿¤êÊѹ¹¤µ¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ö¥é¥¦¥¶¤Î¡Ö¹¹¿·¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£ -

        +

        ²èÁü¤ò¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¾ì¹ç¡¢¤³¤Î¥Ú¡¼¥¸¤Î¡Ö»²¾È¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤è¤ê²èÁü¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£ +

        Ãí°Õ: ¥¢¥Ã¥×¥í¡¼¥É½ÐÍè¤Þ¤»¤ó¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤¬ºÇÂ祵¥¤¥º¤òͤ¨¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ +

        ¤½¤·¤Æ¡Ö¥×¥í¥Õ¥£¡¼¥ë¤ò¹¹¿·¤¹¤ë¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£ ²èÁü¤¬¼è¤ê¹þ¤Þ¤ì¤Æ¡¢100¡ß100¥Ô¥¯¥»¥ë¤Ë¥ê¥µ¥¤¥º¤µ¤ì¤Þ¤¹¡£ +

        ¥×¥í¥Õ¥£¡¼¥ë¥Ú¡¼¥¸¤ËÌá¤Ã¤Æ¤â²èÁü¤¬É½¼¨¤µ¤ì¤Ê¤«¤Ã¤¿¤êÊѹ¹¤µ¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ö¥é¥¦¥¶¤Î¡Ö¹¹¿·¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£ +

        diff --git a/lang/ja/help/questions.html b/lang/ja/help/questions.html index f55c5abe51d..2176d0d20cf 100644 --- a/lang/ja/help/questions.html +++ b/lang/ja/help/questions.html @@ -1,17 +1,17 @@ -

        ¼ÁÌäÊýË¡

        +

        ¼ÁÌäÊýË¡

        -

        ÌäÂê¤Ë´Ø¤·¤ÆÂ¾¤Î¿Í¤Ë¹Í¤¨¤ë¼ê½õ¤±¤ò¤¹¤ëÎɤ¤ÊýË¡¤Ï¡¢Èà¤é¤Ë¤½¤Î¤³¤È¤Ë¤Ä¤¤¤Æ¼ÁÌ䤹¤ë¤³¤È¤Ç¤¹¡£ +

        ÌäÂê¤Ë´Ø¤·¤ÆÂ¾¤Î¿Í¤Ë¹Í¤¨¤ë¼ê½õ¤±¤ò¤¹¤ëÎɤ¤ÊýË¡¤Ï¡¢Èà¤é¤Ë¤½¤Î¤³¤È¤Ë¤Ä¤¤¤Æ¼ÁÌ䤹¤ë¤³¤È¤Ç¤¹¡£ Ū³Î¤Ê¼ÁÌä¤ò¤µ¤ì¤ë¤³¤È¤Ï¡¢¹Í¤¨¤ò¤Þ¤È¤á¤¿¤ê¡¢´û¸¤Î¹Í¤¨¤òɾ²Á¤·¤¿¤ê¡¢¿·¤·¤¤¹Í¤¨¤òÀ¸¤ß½Ð¤¹¤³¤È¤Ë -Èó¾ï¤ËÌòΩ¤Á¤Þ¤¹¡£

        +Èó¾ï¤ËÌòΩ¤Á¤Þ¤¹¡£

        -

        ÌÀ³Î¤Ë³Ø¤Ö¤³¤È¤ò¼ê½õ¤±¤¹¤ë°Õ¿Þ¤Ç¹Ô¤ï¤ì¤ë¼ÁÌä¤Ï¥½¥¯¥é¥Æ¥¹ÅªÈ¯Ìä¤È¤·¤ÆÃΤé¤ì¤Æ¤¤¤Þ¤¹¡£ -¤³¤ì¤Ï¸ÅÂ奮¥ê¥·¥ã¡¢¥½¥¯¥é¥Æ¥¹¤Î»à¸å¤Ë̾ÉÕ¤±¤é¤ì¤Þ¤·¤¿¡£

        +

        ÌÀ³Î¤Ë³Ø¤Ö¤³¤È¤ò¼ê½õ¤±¤¹¤ë°Õ¿Þ¤Ç¹Ô¤ï¤ì¤ë¼ÁÌä¤Ï¥½¥¯¥é¥Æ¥¹ÅªÈ¯Ìä¤È¤·¤ÆÃΤé¤ì¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤Ï¸ÅÂ奮¥ê¥·¥ã¡¢¥½¥¯¥é¥Æ¥¹¤Î»à¸å¤Ë̾ÉÕ¤±¤é¤ì¤Þ¤·¤¿¡£

        -

        ¥½¥¯¥é¥Æ¥¹ÅªÈ¯Ìä¤Ç¤Ï¾¤Î¿Í¤Îȯ¸À¤ò½½Ê¬¤ËÃí°Õ¤·¤ÆÊ¹¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

        ¥½¥¯¥é¥Æ¥¹ÅªÈ¯Ìä¤Ç¤Ï¾¤Î¿Í¤Îȯ¸À¤ò½½Ê¬¤ËÃí°Õ¤·¤ÆÊ¹¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ ¤³¤Î¤³¤È¤Ï¡¢¤¢¤Ê¤¿¤ÎȽÃǤμê½õ¤±¤È¤Ê¤ê¡¢¤Þ¤¿¤¢¤Ê¤¿¤Î¼ÁÌä¤òÍ­±×¤Ç¡¢·úÀßŪ¤Ç¡¢ -¤«¤ÄÍýÁÛŪ¤Ë¤ÏÂÐΩ¤·¤Ê¤¤¤â¤Î¤Ë¤¹¤ë¤¿¤á¤ËɬÍפǤ¹¡£

        +¤«¤ÄÍýÁÛŪ¤Ë¤ÏÂÐΩ¤·¤Ê¤¤¤â¤Î¤Ë¤¹¤ë¤¿¤á¤ËɬÍפǤ¹¡£

        -

        ²¼µ­¤Ë¤½¤Î¤è¤¦¤Ê¼ÁÌäÊýË¡¤ÎÎã¤òµó¤²¤Þ¤¹¡£

        +

        ²¼µ­¤Ë¤½¤Î¤è¤¦¤Ê¼ÁÌäÊýË¡¤ÎÎã¤òµó¤²¤Þ¤¹¡£

        @@ -31,7 +31,7 @@
        • ¤¢¤Ê¤¿¤Ï²¿¤ò²¾Äꤷ¤Æ¤¤¤Þ¤¹¤«?
        • ¥¸¥§¥Ë¡¼¤Ï²¿¤ò²¾Äꤷ¤Æ¤¤¤Þ¤¹¤«?
        • -
        • »äã¤ÏÂå¤ï¤ê¤Ë²¿¤ò²¾Äꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤«?
        • +
        • »äã¤ÏÂå¤ï¤ê¤Ë²¿¤ò²¾Äꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¤«?
        • ¤¢¤Ê¤¿¤Ï _____ ¤È²¾Äꤷ¤Æ¤¤¤ë¤è¤¦¤Ë»×¤¨¤Þ¤¹¡£»ä¤Ï¤¢¤Ê¤¿¤òÀµ¤·¤¯Íý²ò¤·¤Æ¤¤¤Þ¤¹¤«?
        • ¤¢¤Ê¤¿¤¬¤½¤Î¹Í¤¨Êý¤Ë¤³¤À¤ï¤Ã¤Æ¤¤¤ëÍýͳ¤Ï _____ ¤Ç¤¹¡£ ¤Ê¤¼¤¢¤Ê¤¿¤Ï _____ ¤Ç¤Ï̵¤¯ _____ ¤ò¥Ù¡¼¥¹¤È¤·¤¿¹Í¤¨Êý¤ò»ý¤Ã¤Æ¤¤¤ë¤Î¤Ç¤¹¤«?
        • @@ -48,9 +48,9 @@
        • ¤½¤Î¾Úµò¤òµ¿¤¦Íýͳ¤¬¤¢¤ê¤Þ¤¹¤«?
        • 郎¤½¤ì¤òÀµ¤·¤¤¤ÈÃΤëΩ¾ì¤Ë¤¢¤ê¤Þ¤¹¤«?
        • ¾¤Î¿Í¤¬ _____ ¤È¸À¤Ã¤¿¾ì¹ç¡¢¤¢¤Ê¤¿¤Ï²¿¤ÈÅú¤¨¤Þ¤¹¤«?
        • -
        • ¤½¤Î¹Í¤¨Êý¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë狼¾Úµò¤òÍ¿¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤«?
        • +
        • ¤½¤Î¹Í¤¨Êý¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë狼¾Úµò¤òÍ¿¤¨¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¤«?
        • ¤½¤ÎÍýͳÉÕ¤±¤Ç¤¢¤Ê¤¿¤Ï·ëÏÀ¤òƳ¤­½Ð¤»¤Þ¤¹¤«?
        • -
        • ¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð»äã¤Ï¤½¤ì¤¬¿¿¼Â¤Ç¤¢¤ë¤ÈȽÃǤǤ­¤Þ¤¹¤«?
        • +
        • ¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð»äã¤Ï¤½¤ì¤¬¿¿¼Â¤Ç¤¢¤ë¤ÈȽÃǽÐÍè¤Þ¤¹¤«?

        »ëÅÀ¤ä´ÑÅÀ¤Ë´Ø¤¹¤ë¼ÁÌä

        @@ -67,14 +67,14 @@

        ´ØÏ¢À­¤ä·ëÏÀ¤òÄ´ºº¤¹¤ë¼ÁÌä

          -
        • ¤É¤Î¤è¤¦¤Ë¤·¤Æ¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤«?
        • +
        • ¤É¤Î¤è¤¦¤Ë¤·¤Æ¸«¤Ä¤±¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¤«?
        • ¤½¤Î¼ÁÌä¤Ï²¿¤ò²¾Äꤷ¤Æ¤¤¤Þ¤¹¤«?
        • _____ ¤Ï°Û¤Ê¤Ã¤¿¼ÁÌä¤ò¤¹¤ë¤Ç¤·¤ç¤¦¤«?
        • ¾¤Î¿Í¤Ï¤³¤Î¼ÁÌä¤ò¤É¤Î¤è¤¦¤Ë¤·¤Æ²ò·è¤¹¤ë¤Ç¤·¤ç¤¦¤«?
        • -
        • »äã¤Ï¤³¤Î¼ÁÌä¤òʬÀϤǤ­¤Þ¤¹¤«?
        • +
        • »äã¤Ï¤³¤Î¼ÁÌä¤òʬÀϽÐÍè¤Þ¤¹¤«?
        • ¤³¤Î¼ÁÌä¤ÏÌÀ³Î¤Ç¤¹¤«? »äã¤ÏÍý²ò¤·¤Æ¤¤¤Þ¤¹¤«?
        • ¤³¤Î¼ÁÌä¤Ï´Êñ¤Ç¤¹¤«¡¢¤½¤ì¤È¤âÆñ¤·¤¤¤Ç¤¹¤«? ¤Ê¤¼¤Ç¤¹¤«?
        • -
        • »äã¤Ï¤½¤ì¤¬¼ÁÌä¤À¤ÈǼÆÀ¤Ç¤­¤Þ¤¹¤«?
        • +
        • »äã¤Ï¤½¤ì¤¬¼ÁÌä¤À¤ÈǼÆÀ½ÐÍè¤Þ¤¹¤«?
        • ¤³¤Î¼ÁÌä¤ËÅú¤¨¤ë¤¿¤á¤Ë¡¢¤É¤Î¤è¤¦¤Ê¼ÁÌ䤬ºÇ½é¤Ë¤Ê¤µ¤ì¤ë¤Ù¤­¤Ç¤¹¤«?
        • _____ ¤Ï¤³¤Î·ï¤Ë¤É¤¦ÀâÌÀ¤·¤Þ¤¹¤«?
        • ¤Ê¤¼¤½¤Î¤³¤È¤¬½ÅÍפʤΤǤ¹¤«?
        • @@ -82,9 +82,5 @@
        • ¤³¤ì¤¬¤É¤Î¤è¤¦¤Ë _____ ¤Ë´Ø·¸¤·¤Æ¤¤¤ë¤«Ê¬¤«¤ê¤Þ¤¹¤«?
        -
        -Questions adapted from Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA. - -

        ½ñ¤­Êý¤Î¾ÜºÙ¤Ï¤³¤Á¤é

        - -

        ÆÉ¤ßÊý¤Î¾ÜºÙ¤Ï¤³¤Á¤é

        \ No newline at end of file +
        +Questions adapted from Paul, R. (1993). Critical Thinking: How To Prepare Students for a Rapidly Changing World: Foundation for Critical Thinking, Santa Rosa, CA. diff --git a/lang/ja/help/quiz/attempts.html b/lang/ja/help/quiz/attempts.html index 043a234ed82..a1b7bcdaa26 100644 --- a/lang/ja/help/quiz/attempts.html +++ b/lang/ja/help/quiz/attempts.html @@ -1,5 +1,6 @@ -

        ¾®¥Æ¥¹¥È¼õ¸³²ó¿ô

        +

        ¾®¥Æ¥¹¥ÈÄ©Àï²ó¿ô

        -

        ³ØÀ¸¤Ë¾®¥Æ¥¹¥È¤òÊ£¿ô²ó¼õ¸³¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ³ØÀ¸¤ËÊ£¿ô²ó¾®¥Æ¥¹¥È¤ËÄ©À蘆¤»¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ -

        ñ¤Ë²ÝÂê¤ò½Ð¤¹¤è¤ê¡¢¾®¥Æ¥¹¥È¤ò²ò¤¯¤³¤È¤Ç³Ø½¬³èư¤ËÌòΩ¤Æ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ñ¤Ë²ÝÂê¤ò½Ð¤¹¤è¤ê¡¢¾®¥Æ¥¹¥È¤ò²ò¤¯¤³¤È¤Ç³Ø½¬³èư¤ËÌòΩ¤Æ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +

        diff --git a/lang/ja/help/quiz/calculated.html b/lang/ja/help/quiz/calculated.html index c807cc162ed..0972ffa43ad 100644 --- a/lang/ja/help/quiz/calculated.html +++ b/lang/ja/help/quiz/calculated.html @@ -32,9 +32,9 @@ -

        µöÍÆ¸íº¹¥¿¥¤¥×:

        +

        µöÍÆ¥¿¥¤¥×:

        - + @@ -46,7 +46,7 @@
        -¤³¤ÎÌäÂê¤Ë¤Ï¡¢¥Æ¥­¥¹¥ÈÆþÎÏÍ󤪤è¤Ó¡ÖÀµ²ò¤Î¸ø¼°¡×{a} ¤È {b} ¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤ÎÊÑ¿ô¤ª¤è¤Ó¤½¤Î¾¤Î{name}¤Ï¡¢¾®¥Æ¥¹¥È¼Â»Ü»þ¤ËÃͤÈÃÖ´¹¤µ¤ì¤ë¥ï¥¤¥ë¥É¥«¡¼¥É¤È¤·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£ +¤³¤ÎÌäÂê¤Ë¤Ï¡¢¥Æ¥­¥¹¥ÈÆþÎÏÍóµÚ¤Ó¡ÖÀµ²ò¤Î¸ø¼°¡×{a} ¤È {b} ¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤ÎÊÑ¿ôµÚ¤Ó¤½¤Î¾¤Î{name}¤Ï¡¢¾®¥Æ¥¹¥È¼Â»Ü»þ¤ËÃͤÈÃÖ´¹¤µ¤ì¤ë¥ï¥¤¥ë¥É¥«¡¼¥É¤È¤·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£ ¤Þ¤¿¡¢¥Ç¡¼¥¿Á÷¿®»þ¤Ë¡ÖÀµ²ò¤Î¸ø¼°¡×¤ò»ÈÍѤ·¤ÆÀµ²ò¤¬·×»»¤µ¤ì¤Þ¤¹¡£¡ÖÀµ²ò¤Î¸ø¼°¡×¤Ï¡¢¥ï¥¤¥ë¥É¥«¡¼¥É¤¬ÃͤÈÃÖ´¹¤µ¤ì¤¿¸å¤Ë·×»»¤µ¤ì¤ë¿ô¼°¤Ç¤¹¡£ ¥ï¥¤¥ë¥É¥«¡¼¥É¤ÎÃͤϡ¢¸å¤Î¥Ú¡¼¥¸¤Ë¤¢¤ë·×»»ÌäÂê¤Î¡ÖÊÔ½¸¥¦¥£¥¶¡¼¥É¡×¤ÇÀßÄê¤Þ¤¿¤ÏÀ¸À®¤µ¤ì¤Þ¤¹ ...
        Îã¤Ç¤Ï±é»»»Ò+¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£Â¾¤Ë»ÈÍѤǤ­¤ë±é»»»Ò¤Ï¡¢-*/ ¤È;¾ê±é»»»Ò¤Î % ¤Ç¤¹¡£¤Þ¤¿¡¢PHP¥¹¥¿¥¤¥ë¤Î¿ô³Ø´Ø¿ô¤â»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¼¡¤Ë°ú¿ô¤¬1¸Ä¤Î´Ø¿ô¤ò24¸Äµó¤Þ¤¹:
        @@ -57,14 +57,14 @@ atan2, pow
        PHP¥¹¥¿¥¤¥ë¤Î´Ø¿ô¤Î»ÈÍÑÊýË¡¤Ë´Ø¤·¤Æ¤Ï¡¢PHP¥¦¥§¥Ö¥µ¥¤¥È¤Îʸ½ñ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

        ¿ôÃÍÌäÂê¤È¤·¤Æ¡¢Á´¤Æ¤Î²òÅú¤¬Àµ¤·¤¤¤â¤Î¤È¤·¤Æ¼õ¤±Æþ¤ì¤é¤ì¤ë¤è¤¦¤Ë¥Þ¡¼¥¸¥ó¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡ÖµöÍÆÈϰϡפΥե£¡¼¥ë¥É¤Ï¡¢¥Þ¡¼¥¸¥ó¤òÀßÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤ·¤Þ¤¹¡£ -µöÍÆ¥¿¥¤¥×¤Ë¤Ï¡¢ÁêÂÐÅÙ¿ô¡¢Ì¾µÁ¼ÜÅÙ¡¢´ö²¿Ê¿¶ÑÃͤÎ3¤Ä¤¬¤¢¤ê¤Þ¤¹¡£¾®¥Æ¥¹¥È¤ÎÅú¤¨¤¬200¤È·×»»¤µ¤ì¤ÆµöÍÆÈϰϤ¬0.5¤Î¾ì¹ç¡¢¤½¤ì¤¾¤ì¤ÎµöÍÆ¥¿¥¤¥×¤Ï¼¡¤Î¤è¤¦¤Ëưºî¤·¤Þ¤¹: -

        ÁêÂÐÅÙ¿ô: µöÍÆÈϰϤÏÀµ²ò¤Ë0.5¤ò³Ý¤±¤Æ·×»»¤µ¤ì¤Þ¤¹¡£¤³¤ÎÎã¤Î¾ì¹ç¡¢µöÍÆÈϰϤÏ100¤È¤Ê¤ê¡¢Àµ¤·¤¤Åú¤¨¤Ï¡¢100¤È300¤Î´Ö(200 ± 100)¤Ë¤Ê¤ê¤Þ¤¹¡£
        ¤³¤ì¤Ï¡¢Àµ²ò¤ÎÂ礭¤µ¤¬¡¢¥ï¥¤¥ë¥É¥«¡¼¥ÉÃͤδ֤ÇÈó¾ï¤Ë°Û¤Ê¤ë¾ì¹ç¤ËÍ­ÍѤǤ¹¡£ -

        ̾µÁ¼ÜÅÙ: ¤³¤ì¤Ï°ìÈÖ¥·¥ó¥×¥ë¤ÊµöÍÆ¥¿¥¤¥×¤Ç¤¹¤¬¡¢Èó¾ï¤Ë¶¯ÎϤȤ¤¤¦¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Àµ¤·¤¤Åú¤¨¤Ï¡¢199.5¤È200.5¤Î´Ö(200 ± 0.5)¤Ë¤Ê¤ê¤Þ¤¹¡£
        +µöÍÆ¥¿¥¤¥×¤Ë¤Ï¡¢ÁêÂÐʬÉÛ¡¢Àµµ¬Ê¬ÉÛ¡¢´ö²¿Ê¬ÉÛ¤Î3¤Ä¤¬¤¢¤ê¤Þ¤¹¡£¾®¥Æ¥¹¥È¤ÎÅú¤¨¤¬200¤È·×»»¤µ¤ì¤ÆµöÍÆÈϰϤ¬0.5¤Î¾ì¹ç¡¢¤½¤ì¤¾¤ì¤ÎµöÍÆ¥¿¥¤¥×¤Ï¼¡¤Î¤è¤¦¤Ëưºî¤·¤Þ¤¹: +

        ÁêÂÐʬÉÛ: µöÍÆÈϰϤÏÀµ²ò¤Ë0.5¤ò³Ý¤±¤Æ·×»»¤µ¤ì¤Þ¤¹¡£¤³¤ÎÎã¤Î¾ì¹ç¡¢µöÍÆÈϰϤÏ100¤È¤Ê¤ê¡¢Àµ¤·¤¤Åú¤¨¤Ï¡¢100¤È300¤Î´Ö(200 ± 100)¤Ë¤Ê¤ê¤Þ¤¹¡£
        ¤³¤ì¤Ï¡¢Àµ²ò¤ÎÂ礭¤µ¤¬¡¢¥ï¥¤¥ë¥É¥«¡¼¥ÉÃͤδ֤ÇÈó¾ï¤Ë°Û¤Ê¤ë¾ì¹ç¤ËÍ­ÍѤǤ¹¡£ +

        Àµµ¬Ê¬ÉÛ: ¤³¤ì¤Ï°ìÈÖ¥·¥ó¥×¥ë¤ÊµöÍÆ¥¿¥¤¥×¤Ç¤¹¤¬¡¢Èó¾ï¤Ë¶¯ÎϤȤ¤¤¦¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Àµ¤·¤¤Åú¤¨¤Ï¡¢199.5¤È200.5¤Î´Ö(200 ± 0.5)¤Ë¤Ê¤ê¤Þ¤¹¡£
        ¤³¤ÎµöÍÆ¥¿¥¤¥×¤Ï¡¢°Û¤Ê¤ëÀµ²ò´Ö¤Îº¹¤¬¾®¤µ¤¤»þ¤ËÍ­ÍѤǤ¹¡£ -

        ´ö²¿Ê¿¶ÑÃÍ: µöÍÆÈϰϤξå¸Â¤Ï¡¢200 + 0.5*200¤È·×»»¤µ¤ì¡¢ÁêÂÐÅÙ¿ô¤ÈƱ¤¸Ãͤˤʤê¤Þ¤¹¡£²¼¸Â¤Ï¡¢200/(1 + 0.5)¤È·×»»¤µ¤ì¤Þ¤¹¡£Àµ¤·¤¤Åú¤¨¤Ï¡¢133.33¤È300¤Î´Ö¤Ë¤Ê¤ê¤Þ¤¹¡£
        -¤³¤ì¤Ï¡¢ÁêÂÐÅÙ¿ô¤ÎµöÍÆÈϰϤ¬1¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤È¤Ê¤ë¤è¤¦¤ÊÂ礭¤ÊÃͤò»ý¤ÄɬÍפ¬¤¢¤ë»þ¤Ë¡¢¾å¸Â¤Ï¼õ¤±Æþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤Æ¤â¡¢Á´¤Æ¤Î¥±¡¼¥¹¤Ç²¼¸Â¥¼¥í¤Ë¤Ê¤ë¤³¤È¤Ï¼õ¤±Æþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¾ì¹ç¤ÎÊ£»¨¤Ê·×»»¤ËÍ­ÍѤǤ¹¡£ +

        ´ö²¿Ê¬ÉÛ: µöÍÆÈϰϤξå¸Â¤Ï¡¢200 + 0.5*200¤È·×»»¤µ¤ì¡¢ÁêÂÐʬÉÛ¤ÈÆ±¤¸Ãͤˤʤê¤Þ¤¹¡£²¼¸Â¤Ï¡¢200/(1 + 0.5)¤È·×»»¤µ¤ì¤Þ¤¹¡£Àµ¤·¤¤Åú¤¨¤Ï¡¢133.33¤È300¤Î´Ö¤Ë¤Ê¤ê¤Þ¤¹¡£
        +¤³¤ì¤Ï¡¢ÁêÂÐʬÉۤεöÍÆÈϰϤ¬1¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤È¤Ê¤ë¤è¤¦¤ÊÂ礭¤ÊÃͤò»ý¤ÄɬÍפ¬¤¢¤ë»þ¤Ë¡¢¾å¸Â¤Ï¼õ¤±Æþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤Æ¤â¡¢Á´¤Æ¤Î¥±¡¼¥¹¤Ç²¼¸Â¥¼¥í¤Ë¤Ê¤ë¤³¤È¤Ï¼õ¤±Æþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¾ì¹ç¤ÎÊ£»¨¤Ê·×»»¤ËÍ­ÍѤǤ¹¡£

        Í­¸ú¿ô»ú¥Õ¥£¡¼¥ë¥É¤Ï¡¢Àµ²ò¤¬¥ì¥Ó¥å¡¼¤ä¥ì¥Ý¡¼¥È¤Ë¤É¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤ë¤«¤Î¤ß¤Ë´Ø·¸¤·¤Þ¤¹¡£Îã: Í­¸ú¿ô»ú3¤Ç¡¢Àµ¤·¤¤Åú¤¨¤¬13.333¤Î¾ì¹ç¡¢13.3¤Èɽ¼¨¤µ¤ì¤Þ¤¹¡£1236¤Ï¡¢1240¤Èɽ¼¨¤µ¤ì¤Þ¤¹¡£23¤Ï¡¢23.0¤Èɽ¼¨¤µ¤ì¤Þ¤¹¡£

        -¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¥Õ¥£¡¼¥ë¥É¤ª¤è¤Ó¥ª¥×¥·¥ç¥ó¥Õ¥£¡¼¥ë¥É¤Ï¿ôÃÍÌäÂê¤ÈƱÍÍ¤ÎÆ°¤­¤ò¤·¤Þ¤¹¡£ -
        +¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¥Õ¥£¡¼¥ë¥ÉµÚ¤Ó¥ª¥×¥·¥ç¥ó¥Õ¥£¡¼¥ë¥É¤Ï¿ôÃÍÌäÂê¤ÈƱÍÍ¤ÎÆ°¤­¤ò¤·¤Þ¤¹¡£ +
        \ No newline at end of file diff --git a/lang/ja/help/quiz/categories.html b/lang/ja/help/quiz/categories.html index 7fcf65420b6..98ec0c65989 100644 --- a/lang/ja/help/quiz/categories.html +++ b/lang/ja/help/quiz/categories.html @@ -1,9 +1,14 @@ -

        ÌäÂꥫ¥Æ¥´¥ê

        +

        ¥«¥Æ¥´¥ê

        -

        Â礭¤Ê¥ê¥¹¥È¤ËÁ´¤Æ¤Î¾®¥Æ¥¹¥È¤òÆþ¤ì¤ë¤è¤ê¡¢¾®¥Æ¥¹¥È¤òʬÎह¤ë¤¿¤á¤Î¥«¥Æ¥´¥ê¤òºîÀ®¤·¤¿¤Û¤¦¤¬¤è¤¤¤Ç¤·¤ç¤¦¡£

        +

        Â礭¤Ê¥ê¥¹¥È¤ËÁ´¤Æ¤Î¾®¥Æ¥¹¥È¤òÆþ¤ì¤ë¤è¤ê¡¢¾®¥Æ¥¹¥È¤òʬÎह¤ë¤¿¤á¤Î +¥«¥Æ¥´¥ê¤òºîÀ®¤·¤¿¤Û¤¦¤¬¤è¤¤¤Ç¤·¤ç¤¦¡£ -

        ³Æ¥«¥Æ¥´¥ê¤Ï¡¢Ì¾¾Î¤Èû¤¤ÀâÌÀ¤«¤éÀ®¤ê¤Þ¤¹¡£

        +

        ¥«¥Æ¥´¥ê¤Ë¤Ï̾¾Î¤ÈÀâÌÀ¤¬Æþ¤ê¤Þ¤¹¡£ -

        ¤½¤ì¤¾¤ì¤Î¥«¥Æ¥´¥ê¤ò¡Ö¸ø³«¤¹¤ë¡×¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï¥«¥Æ¥´¥ê¤È¤½¤ì¤Ë´Þ¤Þ¤ì¤ëÌäÂ꤬¡¢¤³¤Î¥µ¡¼¥Ð¤Ë¸ºß¤¹¤ëÁ´¤Æ¤Î¥³¡¼¥¹¤ÇÍøÍѲÄǽ¤Ç¤¢¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£Â¾¤Î¥³¡¼¥¹¤Î¾®¥Æ¥¹¥È¤Ç¤â¤¢¤Ê¤¿¤ÎÌäÂê¤òÍøÍѤǤ­¤Þ¤¹¡£

        +

        ¤½¤ì¤¾¤ì¤Î¥«¥Æ¥´¥ê¤ò¡Ö¸ø³«¤¹¤ë¡×¤³¤È¤â½ÐÍè¤Þ¤¹¡£¤³¤ì¤Ï¥«¥Æ¥´¥ê¤È +¤½¤ì¤Ë´Þ¤Þ¤ì¤ë¼ÁÌ䤬¡¢¤³¤Î¥µ¡¼¥Ð¤Ë¸ºß¤¹¤ëÁ´¤Æ¤Î¥³¡¼¥¹¤ÇÍøÍѲÄǽ¤Ç¤¢¤ë¤³¤È +¤ò°ÕÌ£¤·¤Þ¤¹¡£Â¾¤Î¥³¡¼¥¹¤Ç¤â¤¢¤Ê¤¿¤Î¼ÁÌä¤ò¾®¥Æ¥¹¥È¤È¤·¤ÆÍøÍѽÐÍè¤Þ¤¹¡£ -

        ¥«¥Æ¥´¥ê¤Ï¡¢ºîÀ®¤Þ¤¿¤Ïºï½ü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ÌäÂ꤬Æþ¤Ã¤¿¥«¥Æ¥´¥ê¤òºï½ü¤¹¤ë¾ì¹ç¤Ï¡¢ÌäÂê¤ò¾¤Î¥«¥Æ¥´¥ê¤Ë°Üư¤¹¤ë¤«Èݤ«¤ò¿Ò¤Í¤é¤ì¤Þ¤¹¡£

        +

        ¥«¥Æ¥´¥ê¤ÏºîÀ®¡¦ºï½ü²Äǽ¤Ç¤¹¡£¼ÁÌ䤬Æþ¤Ã¤¿¥«¥Æ¥´¥ê¤òºï½ü¤¹¤ë +¾ì¹ç¤Ï¡¢¼ÁÌä¤ò¾¤Î¥«¥Æ¥´¥ê¤Ë°Üư¤¹¤ë¤«Èݤ«¤ò¿Ò¤Í¤é¤ì¤Þ¤¹¡£ +

        diff --git a/lang/ja/help/quiz/categories_edit.html b/lang/ja/help/quiz/categories_edit.html deleted file mode 100644 index 7e65a86d384..00000000000 --- a/lang/ja/help/quiz/categories_edit.html +++ /dev/null @@ -1,17 +0,0 @@ -

        ÌäÂꥫ¥Æ¥´¥ê

        - -

        Â礭¤Ê¥ê¥¹¥È¤ËÁ´¤Æ¤Î¾®¥Æ¥¹¥È¤òÆþ¤ì¤ë¤è¤ê¡¢¾®¥Æ¥¹¥È¤òʬÎह¤ë¤¿¤á¤Î¥«¥Æ¥´¥ê¤òºîÀ®¤·¤¿¤Û¤¦¤¬¤è¤¤¤Ç¤·¤ç¤¦¡£

        - -

        ³Æ¥«¥Æ¥´¥ê¤Ï¡¢Ì¾¾Î¤Èû¤¤ÀâÌÀ¤«¤éÀ®¤ê¤Þ¤¹¡£

        - -

        ¤½¤ì¤¾¤ì¤Î¥«¥Æ¥´¥ê¤ò¡Ö¸ø³«¤¹¤ë¡×¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï¥«¥Æ¥´¥ê¤È¤½¤ì¤Ë´Þ¤Þ¤ì¤ëÌäÂ꤬¡¢¤³¤Î¥µ¡¼¥Ð¤Ë¸ºß¤¹¤ëÁ´¤Æ¤Î¥³¡¼¥¹¤ÇÍøÍѲÄǽ¤Ç¤¢¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£Â¾¤Î¥³¡¼¥¹¤Î¾®¥Æ¥¹¥È¤Ç¤â¤¢¤Ê¤¿¤ÎÌäÂê¤òÍøÍѤǤ­¤Þ¤¹¡£

        - -

        ¥Õ¥£¡¼¥ë¥É¤ÎÀâÌÀ

        - -

        ¿Æ: ¤³¤Î¥«¥Æ¥´¥ê¤¬ÃÖ¤«¤ì¤ë¿Æ¥«¥Æ¥´¥ê¡£¥«¥Æ¥´¥ê¤¬°ì¤Ä¤â¤Ê¤±¤ì¤Ð¡Ö¥È¥Ã¥×¡×¤·¤«ÁªÂò¤Ç¤­¤Þ¤»¤ó¡£

        - -

        ¥«¥Æ¥´¥ê: ¥«¥Æ¥´¥ê¤Î̾¾Î¡£

        - -

        ¥«¥Æ¥´¥ê¾ðÊó: ¥«¥Æ¥´¥ê¤Î´Êñ¤ÊÀâÌÀ¡£

        - -

        ¸ø³«: ¤³¤Î¥«¥Æ¥´¥ê¤ò¨ºÂ¤Ë¸ø³«¤¹¤ë¤«Èݤ«¡£

        \ No newline at end of file diff --git a/lang/ja/help/quiz/correctanswers.html b/lang/ja/help/quiz/correctanswers.html index e3aa5a87178..e18a3918a73 100644 --- a/lang/ja/help/quiz/correctanswers.html +++ b/lang/ja/help/quiz/correctanswers.html @@ -1,3 +1,5 @@ -

        Àµ²ò¤òɽ¼¨¤¹¤ë

        +

        Àµ²ò¤òɽ¼¨¤¹¤ë

        -

        Àµ²ò¤òɽ¼¨¤¹¤ë¤è¤¦¤Ë¤·¤¿¾ì¹ç¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯Ãæ¤Ë¤½¤ì¤¾¤ì¤ÎÌäÂê¤ÎÀµ²ò¤¬(ÌÀ¤ë¤¤¿§¤Ç¶¯Ä´)ɽ¼¨¤µ¤ì¤Þ¤¹¡£

        +

        Àµ²ò¤òɽ¼¨¤¹¤ë¤è¤¦¤Ë¤·¤¿¾ì¹ç¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯Ãæ¤Ë¤½¤ì¤¾¤ì¤Î¼ÁÌä¤Î +Àµ²ò¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£(ÌÀ¤ë¤¤¿§¤Ç¶¯Ä´¤µ¤ì¤Þ¤¹) +

        diff --git a/lang/ja/help/quiz/createmultiple.html b/lang/ja/help/quiz/createmultiple.html index fdf3602c9f2..5b9e3a3e78a 100644 --- a/lang/ja/help/quiz/createmultiple.html +++ b/lang/ja/help/quiz/createmultiple.html @@ -2,6 +2,6 @@

        ¤³¤Î¥Ú¡¼¥¸¤Ç¤ÏÊ£¿ô¤ÎÌäÂê¤ò°ìÅ٤˺îÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        -

        ¸½ºß¤Ï¡¢Â¿¤¯¤Î¥é¥ó¥À¥àÌäÂê¤òºîÀ®¤·¤Æ¡¢¾®¥Æ¥¹¥È¤ËÄɲÃ(Ǥ°Õ)¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤Î¤ß¤Ç¤¹¡£

        +

        ¸½ºß¤Ï¡¢Â¿¤¯¤Î¥é¥ó¥À¥àÌäÂê¤òºîÀ®¤·¤Æ¡¢¸½ºß¤Î¾®¥Æ¥¹¥È¤ËÄɲÃ(Ǥ°Õ)¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤Î¤ß¤Ç¤¹¡£

        -

        ¤³¤Î¥Ú¡¼¥¸¤Ï¡¢ºÇ½ªÅª¤Ë¤µ¤é¤Ë¿¤¯¤Î¥ª¥×¥·¥ç¥ó¤ò»ý¤ÄÂ礭¤Ê¥¦¥£¥¶¡¼¥É¤Ë¤Ê¤ê¤Þ¤¹¡£

        +

        ¤³¤Î¥Ú¡¼¥¸¤Ï¡¢ºÇ½ªÅª¤Ë¹¹¤Ë¿¤¯¤Î¥ª¥×¥·¥ç¥ó¤ò»ý¤ÄÂ礭¤Ê¥¦¥£¥¶¡¼¥É¤Ë¤Ê¤ê¤Þ¤¹¡£

        diff --git a/lang/ja/help/quiz/decimalpoints.html b/lang/ja/help/quiz/decimalpoints.html deleted file mode 100644 index 1f7bf68b67a..00000000000 --- a/lang/ja/help/quiz/decimalpoints.html +++ /dev/null @@ -1,3 +0,0 @@ -

        ¾®¿ôÅÀ

        - -

        ¤³¤ÎÀßÄê¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢³Æ¼õ¸³¤ÎɾÅÀ¤Ëɽ¼¨¤µ¤ì¤ë¾®¿ô¤Î·å¿ô¤òÁªÂò¤Ç¤­¤Þ¤¹¡£

        \ No newline at end of file diff --git a/lang/ja/help/quiz/description.html b/lang/ja/help/quiz/description.html index c46cd2d3685..b7740a03de2 100644 --- a/lang/ja/help/quiz/description.html +++ b/lang/ja/help/quiz/description.html @@ -1,7 +1,7 @@ -

        ÀâÌÀ

        +

        ÀâÌÀ

        -

        ¤³¤ì¤Ï¼ÂºÝ¤ÎÌäÂê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

        +

        ¤³¤Î¥¿¥¤¥×¤Î¼ÁÌä¤Ï¼ÂºÝ¤Î¼ÁÌä¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

        -

        Åú¤¨¤ë¤òÍ׵ᤵ¤ì¤º¤Ë¡¢Ã±¤Ë¥Æ¥­¥¹¥È¤¬É½¼¨¤µ¤ì¤ë¤À¤±¤Ç¤¹¡£

        +

        ÌÜŪ¤Ï²óÅú¤òµá¤á¤º¤Ë¥Æ¥­¥¹¥È¤ò°õºþ¤¹¤ë¤³¤È¤Ë¤¢¤ê¤Þ¤¹¡£

        -

        ¤³¤ì¤Ë³¤¯ÌäÂê¤Ë¾ðÊó¤òÉղ乤뤿¤á¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¼ÁÌ䥰¥ë¡¼¥×¤ËÂФ¹¤ëÀâÌÀʸ¤ò°õºþ¤¹¤ë»þ¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

        diff --git a/lang/ja/help/quiz/export.html b/lang/ja/help/quiz/export.html index 1a7b1787752..a5ef5b8eb3b 100644 --- a/lang/ja/help/quiz/export.html +++ b/lang/ja/help/quiz/export.html @@ -1,22 +1,21 @@

        ¥«¥Æ¥´¥ê¤«¤éÌäÂê¤ò¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë

        -

        ¤³¤Îµ¡Ç½¤Ç¡¢°ì¤Ä¤Î¥«¥Æ¥´¥êÁ´ÂΤÎÌäÂê¤ò¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ë¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        +

        ¤³¤Îµ¡Ç½¤Ç¡¢´°Á´¤Ê¥«¥Æ¥´¥ê¤ÎÌäÂê¤ò¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ë¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

        ¿¤¯¤Î¥Õ¥¡¥¤¥ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¡¢ÌäÂ꤬¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤ë»þ¤Ë¡¢¾ðÊ󤬼º¤ï¤ì¤ë¾ì¹ç¤¬¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -¤³¤ì¤Ï¡¢Â¿¤¯¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¡¢Moodle¤Î¾®¥Æ¥¹¥ÈÌäÂ꤬¤â¤Ã¤Æ¤¤¤ëµ¡Ç½¤Î¤¹¤Ù¤Æ¤ò½èÍý¤Ç¤­¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤¿¤á¤Ç¤¹¡£ -ÌäÂ꤬¥¨¥¯¥¹¥Ý¡¼¥È¤Ç¤­¤ë¤³¤È¤ä¡¢¥¤¥ó¥Ý¡¼¥È¤Ç¤­¤ë¤³¤È¡¢¥¨¥¯¥¹¥Ý¡¼¥È¤·¤Æ¥¤¥ó¥Ý¡¼¥È¤·¤¿ÌäÂ꤬Ʊ°ì¤Ç¤¢¤ë¤³¤È¤ò´üÂÔ¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ +¤³¤ì¤Ï¡¢Moodle¤ÎÌäÂê¤Ë¸ºß¤·¤Æ¤¤¤ëµ¡Ç½¤ò¿¤¯¤ÎÌäÂ꤬»ý¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤Ëµ¯°ø¤·¤Æ¤¤¤Þ¤¹¡£ +ÌäÂê¤Î¥¨¥¯¥¹¥Ý¡¼¥È¤È¥¤¥ó¥Ý¡¼¥È¤Ç¡¢Î¾¼Ô¤¬Æ±°ì¤Ç¤¢¤ë¤³¤È¤ò´üÂÔ¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ ¤Þ¤¿¡¢¤¢¤ëÌäÂ꥿¥¤¥×¤ÏÁ´¤¯¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤Ê¤¤¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ -ºÇ½ªÅª¤Ê´Ä¶­¤Ç»ÈÍѤ¹¤ëÁ°¤Ë¡¢¥¨¥¯¥¹¥Ý¡¼¥È¥Ç¡¼¥¿¤ò³Îǧ¤µ¤ì¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£

        +¥¤¥ó¥Ý¡¼¥È¤¹¤ë´Ä¶­¤Ç»ÈÍѤ¹¤ëÁ°¤Ë¡¢¥¨¥¯¥¹¥Ý¡¼¥È¥Ç¡¼¥¿¤ò³Îǧ¤µ¤ì¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£

        ¸½ºß¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï²¼µ­¤ÎÄ̤ê¤Ç¤¹:

        GIFT¥Õ¥©¡¼¥Þ¥Ã¥È

          -

          GIFT¤Ï¡¢Moodle¤Î¾®¥Æ¥¹¥È¤ò¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ë¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Î¡¢ºÇ¤âÊñ³çŪ¤Ê¥¤¥ó¥Ý¡¼¥È¡¦¥¨¥¯¥¹¥Ý¡¼¥È¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤¹¡£ -GIFT¤Ï¡¢¶µ»Õ¤¬ÌäÂê¤ò¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ç´Êñ¤Ë½ñ¤¯¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£ -¿»èÁªÂòÌäÂê¡¢¡û/¡ßÌäÂê¡¢µ­½ÒÌäÂê¡¢ÁȤ߹ç¤ï¤»ÌäÂê¡¢¿ôÃÍÌäÂê¡¢_____¤òÁÞÆþ¤¹¤ë¤³¤È¤Ç¡Ö·êËä¤áÌäÂê¡×¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£ -ClozeÌäÂê¤Ï¸½ºß¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -ÍÍ¡¹¤Ê¥¿¥¤¥×¤ÎÌäÂꤪ¤è¤Ó¥³¥á¥ó¥È¡¢ÌäÂê̾¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¡¢É¾ÅÀ¤ÎÈæ½Å³ä¹ç¤ò1¤Ä¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ëµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

          GIFT¤Ï¡¢¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤«¤éMoodle¾®¥Æ¥¹¥È¤ËÌäÂê¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Î¡¢ºÇ¤âÅý¹çŪ¤Ê¥¤¥ó¥Ý¡¼¥È¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤¹¡£ +GIFT¤Ï¡¢¶µ»Õ¤¬ÌäÂê¤ò¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ç´Êñ¤Ë½ñ¤¯¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£Â¿»èÁªÂòÌäÂê¡¢ +¡¢¡û/¡ßÌäÂê¡¢µ­½ÒÌäÂê¡¢ÁȤ߹ç¤ï¤»ÌäÂê¡¢¿ôÃÍÌäÂê¡¢_____¤òÁÞÆþ¤¹¤ë¤³¤È¤Ç¡Ö·êËä¤áÌäÂê¡×¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£ +ÍÍ¡¹¤Ê¥¿¥¤¥×¤ÎÌäÂêµÚ¤Ó¥³¥á¥ó¥È¡¢ÌäÂê̾¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¡¢É¾ÅÀ¤ÎÈæ½Å³ä¹ç¤ò°ì¤Ä¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ëµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ²¼µ­¤ËÎã¤òµó¤²¤Þ¤¹:

          @@ -34,18 +33,4 @@ Cloze
           

          ¡ÖGIFT¡×¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¾ÜºÙ¾ðÊó

        -

        Moodle XML¥Õ¥©¡¼¥Þ¥Ã¥È

        -
          -

          ¤³¤ÎMoodleÆÃÍ­¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¾®¥Æ¥¹¥ÈÌäÂê¤òñ½ã¤ÊXML¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¥¨¥¯¥¹¥Ý¡¼¥È¤·¤Þ¤¹¡£ -¤½¤·¤ÆÂ¾¤Î¾®¥Æ¥¹¥È¥«¥Æ¥´¥ê¤Ë¥¤¥ó¥Ý¡¼¥È¤·¤¿¤ê¡¢XSLTÊÑ´¹¤Î¤è¤¦¤Ê¾¤Î¥×¥í¥»¥¹¤ÇÍøÍѤ·¤¿¤ê¤â¤Ç¤­¤Þ¤¹¡£

          -
        - -

        IMS QTI

        -
          -

          ɸ½àŪ¤ÊIMS QTI¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¥¨¥¯¥¹¥Ý¡¼¥È¤·¤Þ¤¹¡£ -¤³¤ì¤ÏÊ£¿ô¤Î¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

          -

          IMS QTI¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¾ÜºÙ¾ðÊó - (³°Éô¥µ¥¤¥È¤òÊ̤Υ¦¥£¥ó¥É¥¦¤Ë³«¤­¤Þ¤¹)

          -
        - -

        WebCT¡¢IMS¡¢QTI¤ò´Þ¤ó¤À¿·¤¿¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¤µ¤é¤ËÄɲ䵤ì¤Þ¤¹¡£¤É¤Î¤è¤¦¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â¡¢Moodle¥æ¡¼¥¶¤¬¹×¸¥¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹!

        +

        WebCT¡¢IMS¡¢QTI¤ò´Þ¤ó¤À¿·¤¿¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¹¹¤ËÄɲ䵤ì¤Þ¤¹¡£¤É¤Î¤è¤¦¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â¡¢Moodle¥æ¡¼¥¶¤¬¹×¸¥¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹!

        diff --git a/lang/ja/help/quiz/feedback.html b/lang/ja/help/quiz/feedback.html index b54c884ada4..c213c075791 100644 --- a/lang/ja/help/quiz/feedback.html +++ b/lang/ja/help/quiz/feedback.html @@ -1,3 +1,5 @@ -

        ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯

        +

        ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯

        + +

        ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òɽ¼¨¤¹¤ë¤è¤¦¤Ë¤·¤¿¾ì¹ç¡¢³ØÀ¸¤ÏÀµ²ò¡¦ÉÔÀµ²ò¤òÌä¤ï¤ºÁ´¤Æ¤Î²òÅú¤Ç¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤ò¼õ¼è¤ê¤Þ¤¹¡£ +

        -

        ¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òɽ¼¨¤¹¤ë¤è¤¦¤Ë¤·¤¿¾ì¹ç¡¢³ØÀ¸¤ÏÁ´¤Æ¤ÎÅú¤¨(Àµ²ò¡¦ÉÔÀµ²ò¤òÌä¤ï¤º)¤Ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤ò¼õ¼è¤ê¤Þ¤¹¡£

        diff --git a/lang/ja/help/quiz/formatctm.html b/lang/ja/help/quiz/formatctm.html index 5f4ad545b25..8fcddb1ce59 100644 --- a/lang/ja/help/quiz/formatctm.html +++ b/lang/ja/help/quiz/formatctm.html @@ -30,7 +30,7 @@ CTM

        Linux¥Ù¡¼¥¹¤Îmoodle¥·¥¹¥Æ¥à¤Ç¤Ï¡¢ODBC Socket Server ¤È¸Æ¤Ð¤ì¤ë¥µ¡¼¥É¥Ñ¡¼¥Æ¥£¤Î¥½¥Õ¥È¥¦¥§¥¢¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬É¬ÍפǤ¹¡£Linux¤ËCTM¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤Ë¤Ï¡¢ºÇ½é¤Ë¤³¤Î¾®¤µ¤Ê ¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥à¤ò¡¢CTM¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÆþ¤ì¤Æ¤¤¤ëWindows¥·¥¹¥Æ¥à¤Ë¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -ODBC Socket Server¤Î¥¤¥ó¥¹¥È¡¼¥ë¼ê½ç¤Ë½¾¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤½¤ì¤é¤Ï¡¢É¬Íװʾå¤Ë¤µ¤é¤ËÊ£»¨¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹! +ODBC Socket Server¤Î¥¤¥ó¥¹¥È¡¼¥ë¼ê½ç¤Ë½¾¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤½¤ì¤é¤Ï¡¢É¬Íװʾå¤Ë¹¹¤ËÊ£»¨¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹! Âå¤ï¤ê¤Ë¡¢²¼µ­¤Î¼ê½ç¤Ë½¾¤Ã¤Æ¡¢¤¢¤Ê¤¿¤ÎWindows¥·¥¹¥Æ¥à¤Ë¤³¤Î¥×¥í¥°¥é¥à¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¯¤À¤µ¤¤:

        1. Windows¥·¥¹¥Æ¥à¤Ë°Ü¤Ã¤Æ¡¢ @@ -59,7 +59,7 @@ Windows
        2. ¤³¤ì¤Ç¥Æ¥¹¥È¥Ð¥ó¥¯¤òmoodle¤Ë¥¤¥ó¥Ý¡¼¥È¤¹¤ë½àÈ÷¤¬¤Ç¤­¤Þ¤·¤¿¡£¡Ö¥Õ¥¡¥¤¥ë¤«¤é¾®¥Æ¥¹¥È¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¡×¤ò»ÈÍѤ·¤Æ¡¢¤¢¤Ê¤¿¤Î¾®¥Æ¥¹¥È¤ò ºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤«¤éLINUX¥µ¡¼¥Ð¤ÇÀßÄ꤬°Û¤Ê¤ëÉôʬ¤òµó¤²¤Þ¤¹ - ¥¤¥ó¥Ý¡¼¥È¥×¥í¥»¥¹¤ò³«»Ï¤µ¤»¤ë¤¿¤á¤Ë¡¢¥¢¥Ã¥×¥í¡¼¥É¥Õ¥£¡¼¥ë¥É¤Ë¥À¥ß¡¼¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥Õ¥£¡¼¥ë¥É¤ËÆþ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¡¢½èÍý¤µ¤ì¤Þ¤»¤ó¡£ -¤³¤³¤Ç¤Ï¡¢¥¤¥ó¥Ý¡¼¥È¥Õ¥©¡¼¥à¤ËÂФ¹¤ëÂåÂØÅª¤ÊÃͤòÆþ¤ì¤ë¤À¤±¤Ç¤¹¡£¼¡¤Ë¡¢Windows¥µ¡¼¥Ð¤Ë´Ø¤¹¤ë¾ðÊó¤ò»ØÄꤹ¤ë²èÌ̤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¼¡¤Ë¡¢system¤ª¤è¤Ótestbank +¤³¤³¤Ç¤Ï¡¢¥¤¥ó¥Ý¡¼¥È¥Õ¥©¡¼¥à¤ËÂФ¹¤ëÂåÂØÅª¤ÊÃͤòÆþ¤ì¤ë¤À¤±¤Ç¤¹¡£¼¡¤Ë¡¢Windows¥µ¡¼¥Ð¤Ë´Ø¤¹¤ë¾ðÊó¤ò»ØÄꤹ¤ë²èÌ̤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¼¡¤Ë¡¢systemµÚ¤Ótestbank ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÈƱÍͤˡ¢Windows ODBC Socket Server¤Î¥Û¥¹¥È̾¤òÆþÎϤ¹¤ë²èÌ̤¬É½¼¨¤µ¤ì¤Þ¤¹¡£Á°¤Î¥¹¥Æ¥Ã¥×¤Ç»ØÄꤷ¤¿¾ðÊó¤òÆþÎϤ·¤Æ¡¢¡Ö¥µ¡¼¥Ð¤ËÀܳ¤¹¤ë¡×¥Ü¥¿¥ó¤ò ¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£Á´¤Æ¤¬Àµ¤·¤¯ÀßÄꤵ¤ì¤¿¾ì¹ç¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤éÌäÂê¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë¡¢¥µ¥Ö¥«¥Æ¥´¥ê¤òÁªÂò¤¹¤ë¥Õ¥©¡¼¥à¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ ¤³¤Î¥¹¥Æ¥Ã¥×¤¬¤¢¤ëÍýͳ¤Ï¡¢CTM¥Æ¥¹¥È¥Ð¥ó¥¯¤¬¤·¤Ð¤·¤Ð¡¢ËܤξϤޤ¿¤Ï¥³¡¼¥¹¤Î¥»¥¯¥·¥ç¥ó¤Î¤è¤¦¤Ë¥«¥Æ¥´¥êʬ¤±¤µ¤ì¤¿ÂçÎ̤ÎÌäÂê¤ò´Þ¤ó¤Ç¤¤¤ë¤³¤È¤¬¤¢¤ë¤«¤é¤Ç¤¹¡£ diff --git a/lang/ja/help/quiz/formatgift.html b/lang/ja/help/quiz/formatgift.html index b513d384302..288a0e6fb05 100644 --- a/lang/ja/help/quiz/formatgift.html +++ b/lang/ja/help/quiz/formatgift.html @@ -1,466 +1,233 @@ - - -

          "GIFT" ¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¤¥ó¥Ý¡¼¥È

          - +

          "GIFT" ¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥¤¥ó¥Ý¡¼¥È

          GIFT¤Ï¡¢Moodle¤Î¥Æ¥¹¥È¡¦¥¯¥¤¥ºÌäÂê¤ò¥Æ¥­¥¹¥È¤«¤é¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥Õ¥©¡¼¥Þ¥Ã¥È¤È¤·¤Æ¡¢ - -Éý¹­¤¯ÍøÍѤǤ­¤ë¤â¤Î¤Ç¤¹¡£GIFT¤Ë¤ª¤¤¤Æ¤Ï¡¢Â¿»èÁªÂòÌäÂê¡¢Àµ¸íÁªÂòÌäÂê¡Ê¡û¡ßÌäÂê¡Ë¡¢ - -µ­½ÒÌäÂê¡¢ÁȤ߹ç¤ï¤»ÌäÂê¤ä¿ôÃÍÌäÂê¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿³ÆÌäÂê¤ÎÃæ¤Ç¡¢ - -·êËä¤á¼°¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£1¤Ä¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¡¢ - -Ê£¿ô¤ÎÌäÂê·Á¼°¤òÍѤ¤¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤µ¤é¤Ë¤³¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤ª¤¤¤Æ¤Ï¡¢ - +Éý¹­¤¯ÍøÍѤǤ­¤ë¤â¤Î¤Ç¤¹¡£GIFT¤Ë¤ª¤¤¤Æ¤Ï¡¢Â¿»èÁªÂò¼°ÌäÂê¡¢Àµ¸íÁªÂòÌäÂê¡Ê¡û¡ßÌäÂê¡Ë¡¢ +µ­½Ò¼°ÌäÂê¡¢ÁȤ߹ç¤ï¤»ÌäÂê¤ä¿ôÃÍÌäÂê¤òÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤¿³ÆÌäÂê¤ÎÃæ¤Ç¡¢ +·êËä¤á¼°¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤òÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£°ì¤Ä¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¡¢ +Ê£¿ô¤ÎÌäÂê·Á¼°¤òÍѤ¤¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£¤µ¤é¤Ë¤³¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤ª¤¤¤Æ¤Ï¡¢ ÌäÂê¤Ë´Ø¤¹¤ë¥³¥á¥ó¥È¡¦¥á¥â¤ä³ÆÌäÂê¤Î¥¿¥¤¥È¥ë¤ò²Ã¤¨¤¿¤ê¡¢²òÅú¤ËÂФ¹¤ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤ò¹Ô¤Ã¤¿¤ê¡¢ - -²òÅú¤ËÂФ·¤ÆÉôʬÆÀÅÀ¡Ê%¡Ë¤òÀßÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

          - - +²òÅú¤ËÂФ·¤ÆÉôʬÆÀÅÀ¡Ê%¡Ë¤òÀßÄꤹ¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£

          ¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë»þ¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ï¡¢³Æ¼«¤Î¥à¡¼¥É¥ë¤Ç»ÈÍѤ·¤Æ¤¤¤ë¤â¤Î - ¤ÈƱ¤¸¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Æ¥¹¥È¡¦¥¯¥¤¥º¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤ÎÎã¤Ï¡¢ - gift/examples.txt - -¤Ç¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          - - +¤Ç¸«¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

          ÌäÂê·Á¼°

          - - -

          ¿»èÁªÂòÌäÂê¡Ê¤È°ìÈ̤ÎÀâÌÀ¡Ë¡§
          - - ¿»èÁªÂòÌäÂê¤òºîÀ®¤¹¤ë»þ¤Ï¡¢²òÅúÉôʬ¡Ê{ }¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ëÉôʬ¡Ë¤ËÁªÂò»è¤È¤Ê¤ë¹àÌܤòµ­¤·¡¢ - +

          ¿»èÁªÂò¼°ÌäÂê¡Ê¤È°ìÈ̤ÎÀâÌÀ¡Ë¡§
          + ¿»èÁªÂò¼°ÌäÂê¤òºîÀ®¤¹¤ë»þ¤Ï¡¢²òÅúÉôʬ¡Ê{ }¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ëÉôʬ¡Ë¤ËÁªÂò»è¤È¤Ê¤ë¹àÌܤòµ­¤·¡¢ ¤½¤ì¤é¤ÎÁªÂò»èÃæ¤Î¸í¤Ã¤Æ¤¤¤ë¹àÌܤÎÁ°¤Ë(~)¤ò¡¢Àµ¤·¤¤¹àÌܤÎÁ°¤Ë(=)¤òÉÕ¤±¤Þ¤¹¡£

          -
               Who's buried in Grant's tomb?{~Grant ~Jefferson =no one}
          - -

          ºîÀ®¤¹¤ëÌäÂê¤ÎÃæ¤Ç·êËä¤á¼°¤òÍѤ¤¤ë»þ¤Ï¡¢Ê¸¾ÏÃæ¤Î¶õÍó¤ÎÉôʬ¡Ê²òÅúÉôʬ¡Ë¤Ë¼«Æ°Åª¤Ë²¼Àþ¤¬°ú¤«¤ì¤Þ¤¹¡Ê¤³¤Î¤è¤¦¤Ê_____²¼Àþ¤Ç¤¹¡Ë¡£ - ·êËä¤á¼°¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢²òÅú¤¬Ëä¤á¹þ¤Þ¤ì¤ëÉôʬ¡Ê²¼Àþ¤ò°ú¤­¤¿¤¤Éôʬ¡Ë¤Ë²òÅúÉôʬ¤òÀßÄꤷ¡¢Åú¤¨¤òµ­Æþ¤·¤Æ²¼¤µ¤¤¡£

          -
               Grant is {~buried =entombed ~living} in Grant's tomb.
          +

          ʸ¾Ï¤ÎÃæ¤Ë²òÅú¤òÁÞÆþ¤¹¤ë¤è¤¦¤Ê·Á¤ÎÌäÂê¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤Î·êËä¤á¼°¤òÍѤ¤¤Æ²¼Àþ¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ + ¤É¤ÎÌäÂê·Á¼°¤ÇÌäÂê¤òºîÀ®¤¹¤ë¤Ç¤â¡¢·êËä¤á¼°¤òÍѤ¤¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

          - -

          ʸ¾Ï¤ÎÃæ¤Ë²òÅú¤òÁÞÆþ¤¹¤ë¤è¤¦¤Ê·Á¤ÎÌäÂê¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤Î·êËä¤á¼°¤òÍѤ¤¤Æ²¼Àþ¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ - - ¤É¤ÎÌäÂê·Á¼°¤ÇÌäÂê¤òºîÀ®¤¹¤ë¤Ç¤â¡¢·êËä¤á¼°¤òÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          - - - -

          ÌäÂê¹àÌܤÈÌäÂê¹àÌܤδ֤ϡ¢°ì¹Ô¶õ¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡Ê£²²ó²þ¹Ô¤ò²¡¤¹¡Ë¡£ - - ³ÆÌäÂê¹àÌܤÎÁªÂò»è¤Ë¤Ï¤½¤ì¤¾¤ì°ì¹Ô¤º¤ÄÍѤ¤¡¢¤Þ¤¿¤½¤ì¤é¤ò¥¤¥ó¥Ç¥ó¥È¤·¤ÆÉ½¼¨¤ò¤¹¤ë¤È¡¢ - +

          ¼ÁÌä¹àÌܤȼÁÌä¹àÌܤδ֤ϡ¢°ì¹Ô¶õ¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡Ê£²²ó²þ¹Ô¤ò²¡¤¹¡Ë¡£ + ³Æ¼ÁÌä¹àÌܤÎÁªÂò»è¤Ë¤Ï¤½¤ì¤¾¤ì°ì¹Ô¤º¤ÄÍѤ¤¡¢¤Þ¤¿¤½¤ì¤é¤ò¥¤¥ó¥Ç¥ó¥È¤·¤ÆÉ½¼¨¤ò¤¹¤ë¤È¡¢ À°¤Ã¤¿¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤Ê¤ê¤Þ¤¹¡£²¼¤ÎÎã¤ò¸«¤Æ²¼¤µ¤¤¡£

          -
               The American holiday of Thanksgiving is celebrated on the {
          -
                    ~second
          -
                    ~third
          -
                    =fourth
          -
                } Thursday of November.
          -
                
          -
                Japanese characters originally came from what country? {
          -
                    ~India
          -
                    =China
          -
                    ~Korea
          -
                    ~Egypt}
          - - -

          µ­½ÒÌäÂê¡§
          - - µ­½ÒÌäÂê¤Ë¤ª¤¤¤Æ¡¢²òÅú¤È¤Ê¤ëÁ´¤Æ¤Î¹àÌܤÎÁ°¤Ë(=)¤òÉÕ¤±¤Þ¤¹¡£ - +

          µ­½Ò¼°ÌäÂê¡§
          + µ­½Ò¼°ÌäÂê¤Ë¤ª¤¤¤Æ¡¢²òÅú¤È¤Ê¤ëÁ´¤Æ¤Î¹àÌܤÎÁ°¤Ë(=)¤òÉÕ¤±¤Þ¤¹¡£ ¤½¤¦¤¹¤ë¤³¤È¤Ç¡¢¤³¤ì¤é¤ÎÁ´¤Æ¤¬Àµ¤·¤¤Åú¤¨¤Ë¤Ê¤ë¤È¤¤¤¦¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ - ¤³¤ÎÌäÂê·Á¼°¤Ç¤Ï(~)¤Îµ­¹æ¤Ï»È¤¤¤Þ¤»¤ó¡£

          -
               Who's buried in Grant's tomb?{=no one =nobody}
           
          -
          -
                Two plus two equals {=four =4}.
          - -

          µ­½ÒÌäÂê¤Ø¤Î²òÅú¤È¤·¤Æ¡¢Àµ²ò¤¬1¤Ä¤·¤«¤Ê¤¤¾ì¹ç¤Ï¡¢ - - (=)µ­¹æ¤òÉÕ¤±¤º¤Ë¤½¤Î¤Þ¤ÞÅú¤¨¤ò½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¤¬¡¢ - - Àµ¸íÁªÂòÌäÂê¡Ê¡û¡ßÌäÂê¡Ë¤Èº®Í𤷤ʤ¤¤è¤¦¤Ëµ¤¤ò¤Ä¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

          - - +

          µ­½Ò¼°ÌäÂê¤Ø¤Î²òÅú¤È¤·¤Æ¡¢Àµ²ò¤¬°ì¤Ä¤·¤«¤Ê¤¤¾ì¹ç¤Ï¡¢ + (=)µ­¹æ¤òÉÕ¤±¤º¤Ë¤½¤Î¤Þ¤ÞÅú¤¨¤ò½ñ¤¯¤³¤È¤â½ÐÍè¤Þ¤¹¤¬¡¢ + Àµ¸íÁªÂò¼°ÌäÂê¡Ê¡û¡ßÌäÂê¡Ë¤Èº®Í𤷤ʤ¤¤è¤¦¤Ëµ¤¤ò¤Ä¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

          Àµ¸íÁªÂòÌäÂê¡Ê¡û¡ßÌäÂê¡Ë¡§:
          - ¤³¤ÎÌäÂê·Á¼°¤Ç¤Ï¡¢ÌäÂê¤È¤·¤Æµ­¤µ¤ì¤Æ¤¤¤ëʸ¾Ï¤¬Àµ¤·¤¤¤«¸í¤Ã¤Æ¤¤¤ë¤«¤òÁªÂò¤¹¤ë¤â¤Î¤Ç¤¹¡£ - ÌäÂê¤òºîÀ®¤¹¤ë»þ¤Ï¡¢³ÆÊ¸¾Ï¤ÎºÇ¸å¤Ë{TRUE} {FALSE}¡¢¤â¤·¤¯¤Ïû½Ì¤·¤Æ{T} {F}¤òµ­¤·¤Þ¤¹¡£

          -
               Grant is buried in Grant's tomb.{F}
           
          -
          -
                The sun rises in the east.{T}
          - -

          ÁȤ߹ç¤ï¤»¼°ÌäÂê¡§
          - - 2¤Ä¤Î¹àÌܤòÁȤ߹ç¤ï¤»¤ë¤¿¤á¤Ë¡¢¤Þ¤º(=)¤Ç»Ï¤á¡¢¤½¤ì¤¾¤ì¤Î¹àÌܤò -> ¤Îµ­¹æ¤Çʬ¤±¤Þ¤¹¡£ - - £±¤Ä¤ÎÌäÂê¤Î²òÅú¤È¤·¤Æ¡¢¾¯¤Ê¤¯¤È¤â£³¤Ä¤ÎÁȤ߹ç¤ï¤»¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

          - + Æó¤Ä¤Î¹àÌܤòÁȤ߹ç¤ï¤»¤ë¤¿¤á¤Ë¡¢¤Þ¤º(=)¤Ç»Ï¤á¡¢¤½¤ì¤¾¤ì¤Î¹àÌܤò -> ¤Îµ­¹æ¤Çʬ¤±¤Þ¤¹¡£ + £±¤Ä¤ÎÌäÂê¤Î²òÅú¤È¤·¤Æ¡¢¾¯¤Ê¤¯¤È¤â£³¤Ä¤ÎÁȤ߹ç¤ï¤»¤¬½ÐÍè¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

               Matching Question. {
          -
                    =subquestion1 -> subanswer1
          -
                    =subquestion2 -> subanswer2
          -
                    =subquestion3 -> subanswer3
          -
                    }
          -
                
          -
                Match the following countries with their corresponding capitals. {
          -
                    =Canada -> Ottawa
          -
                    =Italy  -> Rome
          -
                    =Japan  -> Tokyo
          -
                    =India  -> New Delhi
          -
                    }
          -

          MÁȤ߹ç¤ï¤»ÌäÂê¤Ç¤Ï¡¢²òÅú¤Ø¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤äÉôʬÆÀÅÀ¤ÎÀßÄê¤Î¥ª¥×¥·¥ç¥ó¤Ï¤¢¤ê¤Þ¤»¤ó¡£

          - -

          ¿ôÃͼ°ÌäÂê¡§
          - ²òÅú¤¬¿ôÃͤǤ¢¤ëÌäÂêºîÀ®¤Î¾ì¹ç¤Ï¡¢²òÅúÉôʬ¤ÎÀèÆ¬¤Ë # ¤òµ­Æþ¤·¤Þ¤¹¡£ - - ¤³¤ì¤é¤Î¿ôÃͼ°ÌäÂê¤Ë¤Ï¡¢Àµ¤·¤¤²òÅú¤È¤·¤ÆÇ§¤á¤é¤ì¤ë¸íº¹¤ÎÈϰϤòÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ - + ¤³¤ì¤é¤Î¿ôÃͼ°ÌäÂê¤Ë¤Ï¡¢Àµ¤·¤¤²òÅú¤È¤·¤ÆÇ§¤á¤é¤ì¤ë¸íº¹¤ÎÈϰϤòÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ ¤½¤Î¾ì¹ç¡¢Àµ¤·¤¤Åú¤¨¤Î¸å¤Ë¥³¥í¥ó(¡§)¤òµ­Æþ¤·¤ÆÀßÄꤷ¤Þ¤¹¡£ - Î㤨¤Ð¡¢1.5¤«¤é2.5¤Þ¤Ç¤ÎÈϰϤ¬Àµ²ò¤È¤·¤ÆÇ§¤á¤é¤ì¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢{#2:0.5}¤Èµ­¤·¤Þ¤¹¡£ - ¤³¤ì¤Ï¡¢£²¤«¤é¤½¤ì¤¾¤ì0.5¤Î¸íº¹¡Ê¤Ä¤Þ¤ê1.5¤«¤é2.5¡Ë¤òÀµ²ò¤È¤·¤ÆÇ§¤á¤ë¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ - ¸íº¹¤ÎµöÍÆÈϰϤ¬ÀßÄꤵ¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢µöÍÆÈϰϤ¬0¤Ç¤¢¤ë¤ÈȽÃǤµ¤ì¤Þ¤¹¡£

          -
               When was Ulysses S. Grant born? {#1822}
           
          -
          -
                What is the value of pi (to 3 decimal places)? {#3.1415:0.0005}.
          - - -

          ¤Þ¤¿¡¢¿ôÃͼ°ÌäÂê¤Î²òÅú¤Ï¡¢{#ºÇ¾®ÃÍ..ºÇÂçÃÍ} ¤ÈÈϰϤòÀßÄꤷ¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

          - +

          ¤Þ¤¿¡¢¿ôÃͼ°ÌäÂê¤Î²òÅú¤Ï¡¢{#ºÇ¾®ÃÍ..ºÇÂçÃÍ} ¤ÈÈϰϤòÀßÄꤷ¤Æ½ñ¤¯¤³¤È¤â½ÐÍè¤Þ¤¹¡£

               What is the value of pi (to 3 decimal places)? {#3.141..3.142}.
          - -

          ¥à¡¼¥É¥ë¤Î¥Ö¥é¥¦¥¶¡¼¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ç¤Ï¡¢¿ôÃͼ°ÌäÂê¤ÇÊ£¿ô¤Î²òÅú¤ò»ý¤Ä¤³¤È¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢ - ¥à¡¼¥É¥ë¤Î¥³¡¼¥É¤äGIFT¤Ç¤Ï¤½¤¦¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£¤³¤³¤Ç¤ÏÊ£¿ô¤Î¿ôÃͤÎÈϰϤòÀßÄê¤Ç¤­¡¢ - - ÉôʬÆÀÅÀ¤ÎÀßÄê¤Ê¤É¤â¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¿ôÃͼ°ÌäÂê¤ÇÊ£¿ô¤Î²òÅú¤òÍѤ¤¤ë»þ¤Ï¡¢µ­½Ò¼°¤ÎÌäÂê¤Î¤è¤¦¤Ë(=)µ­¹æ¤Ç¶èÊ̤·¤Þ¤¹¡£

          - + ÉôʬÆÀÅÀ¤ÎÀßÄê¤Ê¤É¤â¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¿ôÃͼ°ÌäÂê¤ÇÊ£¿ô¤Î²òÅú¤òÍѤ¤¤ë»þ¤Ï¡¢µ­½Ò¼°¤ÎÌäÂê¤Î¤è¤¦¤Ë(=)µ­¹æ¤Ç¶èÊ̤·¤Þ¤¹¡£

               When was Ulysses S. Grant born? {#
          -
                    =1822:0
          -
                    =%50%1822:2}
          - -

          ¤³¤³¤ÇÃí°Õ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ï¡¢¥à¡¼¥É¥ë¤Î¥Ö¥é¥¦¥¶¡¼¤¬¿ôÃͼ°ÌäÂê¤ÎÊ£¿ô¤Î²òÅú¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢ - - ¤³¤ì¤é¤ò¥à¡¼¥É¥ë¤òÄ̤·¤Æ¸«¤¿¤êÊÔ½¸¤·¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤ÅÀ¤Ç¤¹¡£ - + ¤³¤ì¤é¤ò¥à¡¼¥É¥ë¤òÄ̤·¤Æ¸«¤¿¤êÊÔ½¸¤·¤¿¤ê¤¹¤ë¤³¤È¤¬½ÐÍè¤Ê¤¤ÅÀ¤Ç¤¹¡£ Ê£¿ô¤Î¿ôÃͤβòÅú¤Î¤¢¤ëÌäÂê¤òÊѹ¹¤¹¤ëÍ£°ì¤ÎÊýË¡¤Ï¡¢ - ÌäÂê¤òºï½ü¤·¤Æ¤«¤éºÆÅÙ¥¤¥ó¥Ý¡¼¥È¤¹¤ë¡Ê¤â¤·¤¯¤Ï¡¢phpMyAdminÅù¤òÍøÍѤ¹¤ë¡Ë¤³¤È¤Ç¤¹¡£

          - - -

          OPTIONS ¥ª¥×¥·¥ç¥ó

          - -

          GIFT¤Î¥Õ¥£¥ë¥¿¡¼¤Ç¤Ï¡¢¤³¤ì¤Þ¤ÇÀâÌÀ¤·¤Æ¤­¤¿´ðËÜŪ¤ÊÌäÂê·Á¼°¤Ë²Ã¤¨¡¢ - ¥³¥á¥ó¥È¡¦¥á¥â¤ò²Ã¤¨¤ë¡¢ÌäÂê¤Î¥¿¥¤¥È¥ë¤òÀßÄꤹ¤ë¡¢²òÅú¤Ø¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÀßÄꤹ¤ë¡¢ - - ÉôʬÆÀÅÀ¤òÀßÄꤹ¤ëÅù¤Î¥ª¥×¥·¥ç¥ó¤òÍøÍѤ¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

          - - + ÉôʬÆÀÅÀ¤òÀßÄꤹ¤ëÅù¤Î¥ª¥×¥·¥ç¥ó¤òÍøÍѤ¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£

          ¥³¥á¥ó¥È¡¦¥á¥â¤ò²Ã¤¨¤ë¡§
          - GIFT¤Î¥Õ¥£¥ë¥¿¡¼¤Ç¤Ï¡¢¥à¡¼¥É¥ë¤Ë¤Ï¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤Ê¤¤¥³¥á¥ó¥È¤ä¥á¥â¤ò - - Ʊ¤¸¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤ËÁÞÆþ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥óµ¡Ç½¤Ï¡¢ - + Ʊ¤¸¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤ËÁÞÆþ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥óµ¡Ç½¤Ï¡¢ ¥Ø¥Ã¥À¡¼¤È¤·¤ÆÍѤ¤¤¿¤ê¡¢ÌäÂê¤Ë¤Ä¤¤¤Æ¤Î¾Ü¤·¤¤¾ðÊó¤ä¥á¥â¤òµ­Æþ¤¹¤ë¤³¤È¤ò²Äǽ¤È¤·¤Þ¤¹¡£ - //¤Ç»Ï¤Þ¤ëʸ¾Ï¡Ê¥¿¥Ö¤Ï¥¹¥Ú¡¼¥¹¤Ï¿ô¤¨¤Þ¤»¤ó¡Ë¤Ï¤¹¤Ù¤Æ¥Õ¥£¥ë¥¿¡¼¤Ë̵»ë¤µ¤ì¤Þ¤¹¡£ - -

               // Subheading: Numerical questions below
          -
                What's 2 plus 2? {#4}
          - -

          ÌäÂê¤Î¥¿¥¤¥È¥ë¤òÀßÄꤹ¤ë
          - ³ÆÌäÂê¤Î¥¿¥¤¥È¥ë¤Ï¥À¥Ö¥ë¡¦¥³¥í¥ó :: ¤Ç»Ï¤á¥À¥Ö¥ë¡¦¥³¥í¥ó :: ¤ÇÊĤ¸¤Þ¤¹¡£

          -
               ::Kanji Origins::Japanese characters originally
          -
                came from what country? {=China}
           
          -
          -
                ::Thanksgiving Date::The American holiday of Thanksgiving is 
          -
                celebrated on the {~second ~third =fourth} Thursday of November.
          -

          ÌäÂê¤Î¥¿¥¤¥È¥ë¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥Ç¥£¥Õ¥©¥ë¥È¤È¤·¤ÆÌäÂêʸÁ´ÂΤ¬¥¿¥¤¥È¥ë¤È¤·¤ÆÍѤ¤¤é¤ì¤Þ¤¹¡£

          - -

          ²òÅú¤Ø¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÀßÄꤹ¤ë
          - - ¤½¤ì¤¾¤ì¤Î²òÅú¤Î¸å¤Ë[#]µ­¹æ¤òµ­Æþ¤·¤Æ¤«¤é¥³¥á¥ó¥È¤òµ­Æþ¤¹¤ë¤³¤È¤Ç¡¢²òÅú¤Ø¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          - + ¤½¤ì¤¾¤ì¤Î²òÅú¤Î¸å¤Ë[#]µ­¹æ¤òµ­Æþ¤·¤Æ¤«¤é¥³¥á¥ó¥È¤òµ­Æþ¤¹¤ë¤³¤È¤Ç¡¢²òÅú¤Ø¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

               What's the answer to this multiple-choice question?{
          -
                ~wrong answer#feedback comment on the wrong answer
          -
                ~another wrong answer#feedback comment on this wrong answer
          -
                =right answer#Very good!}
          -
                
          -
                Who's buried in Grant's tomb?{
          -
                =no one#excellent answer!
          -
                =nobody#excellent answer!}
          -
                
          -
                Grant is buried in Grant's tomb.{FALSE#No one is buried in Grant's tomb.}
          - - -

          ¿»èÁªÂòÌäÂê¤Ç¤Ï¡¢À¸Å̤¬ÁªÂò¤·¤¿ÁªÂò»è¤Ø¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤Î¤ß¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ - - µ­½ÒÌäÂê¤Ç¤Ï¡¢À¸Å̤¬Àµ¤·¤¤Åú¤¨¤òµ­Æþ¤·¤¿»þ¤Î¤ß¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ - +

          ¿»èÁªÂò¼°ÌäÂê¤Ç¤Ï¡¢À¸Å̤¬ÁªÂò¤·¤¿ÁªÂò»è¤Ø¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤Î¤ß¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ + µ­½Ò¼°ÌäÂê¤Ç¤Ï¡¢À¸Å̤¬Àµ¤·¤¤Åú¤¨¤òµ­Æþ¤·¤¿»þ¤Î¤ß¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ Àµ¸íÁªÂòÌäÂê¤Ç¤Ï¡¢À¸Å̤¬´Ö°ã¤Ã¤¿»þ¤Ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ - ½¾¤Ã¤Æ¡¢¾åµ­¤ÎºÇ¸å¤ÎÎã¤Ç¤Ï¡¢À¸ÅÌ¡¦³ØÀ¸¤¬¡ÖÀµ¤·¤¤¡×¤ÈÅú¤¨¤¿»þ¤Ë¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¬É½¼¨¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

          - -

          ÉôʬÆÀÅÀ¤òÀßÄꤹ¤ë
          - - ÉôʬÆÀÅÀ¤Ï¡¢Â¿»èÁªÂòÌäÂê¤Èµ­½ÒÌäÂê¤Ë¤ª¤¤¤ÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¡¢ - - Àµ²ò¡Ê100%¡Ë¤ËÂФ·¤Æ²¿%¤ÎÆÀÅÀ¤ò³ä¤êÅö¤Æ¤ë¤«¤òÀßÄꤹ¤ë¤³¤È¤ÇÉôʬÆÀÅÀ¤ò¤Ç¤­¤Þ¤¹¡£ - - ¿»èÁªÂòÌäÂê¤Ë¤ª¤¤¤Æ¤Ï¡¢[~]µ­¹æ¤Î¸å¡¢µ­½ÒÌäÂê¤Ë¤ª¤¤¤Æ¤Ï[=]¤Î¸å¤Ë¡¢ - + ÉôʬÆÀÅÀ¤Ï¡¢Â¿»èÁªÂò¼°ÌäÂê¤Èµ­½Ò¼°ÌäÂê¤Ë¤ª¤¤¤ÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¡¢ + Àµ²ò¡Ê100%¡Ë¤ËÂФ·¤Æ²¿%¤ÎÆÀÅÀ¤ò³ä¤êÅö¤Æ¤ë¤«¤òÀßÄꤹ¤ë¤³¤È¤ÇÉôʬÆÀÅÀ¤ò½ÐÍè¤Þ¤¹¡£ + ¿»èÁªÂò¼°ÌäÂê¤Ë¤ª¤¤¤Æ¤Ï¡¢[~]µ­¹æ¤Î¸å¡¢µ­½Ò¼°ÌäÂê¤Ë¤ª¤¤¤Æ¤Ï[=]¤Î¸å¤Ë¡¢ ¡óµ­¹æ¤Ç´õ˾¤¹¤ë³ä¹ç¤Î¿ô»ú¤ò°Ï¤ó¤ÇÀßÄꤷ¤Þ¤¹¡ÊÎã¡§%50%¡Ë¡£ - - ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢²òÅú¤Ø¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤È°ì½ï¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          - + ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢²òÅú¤Ø¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤È°ì½ï¤Ë»È¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

               Difficult question.{~wrong answer ~%50%half credit answer =full credit answer}
          -
                     
          -
                ::Jesus' hometown::Jesus Christ was from {
          -
                ~Jerusalem#This was an important city, but the wrong answer.
          -
                ~%25%Bethlehem#He was born here, but not raised here.
          -
                ~%50%Galilee#You need to be more specific.
          -
                =Nazareth#Yes! That's right!}.
          -
                
          -
                ::Jesus' hometown:: Jesus Christ was from {
          -
                =Nazareth#Yes! That's right!
          -
                =%75%Nazereth#Right, but misspelled.
          -
                =%25%Bethlehem#He was born here, but not raised here.}
          - -

          ¾åµ­¤ÎºÇ¸å¤Î2¤Ä¤ÎÎã¤Ï¡¢´ðËÜŪ¤ËƱ¤¸ÌäÂê¤Ç¤¹¤¬¡¢1¤ÄÌܤÏ¿»èÁªÂòÌäÂê¤Ç¤¢¤ê¡¢2¤ÄÌܤϵ­½ÒÌäÂê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

          - - +

          ¾åµ­¤ÎºÇ¸å¤ÎÆó¤Ä¤ÎÎã¤Ï¡¢´ðËÜŪ¤ËƱ¤¸ÌäÂê¤Ç¤¹¤¬¡¢°ì¤ÄÌܤÏ¿»èÁªÂò¼°ÌäÂê¤Ç¤¢¤ê¡¢Æó¤ÄÌܤϵ­½Ò¼°ÌäÂê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

          ¥Ö¥é¥¦¥¶¡¼¤«¤é¤Ï¸«¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤·Á¤Ç¡¢ÉôʬÆÀÅÀ¤ÎÀßÄê¤ò¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ - ¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ï¡¢¥¤¥ó¥Ý¡¼¥È¤·¤¿»þ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¿ôÃͤˤè¤Ã¤ÆÆÀÅÀ¤¬·×»»¤µ¤ì¤Þ¤¹¤¬¡¢ - ¥Æ¥¹¥È¤ò¼õ¤±¤Æ¤¤¤ëÀ¸ÅÌ¡¦³ØÀ¸¤Ë¤ÏÉáÄ̤ˤ·¤«¸«¤¨¤Þ¤»¤ó¡£ - ¤·¤«¤·¡¢¤½¤Î¤è¤¦¤Ê·Á¤ÇÉôʬÆÀÅÀ¤òÀßÄꤷ¤¿¾ì¹ç¡¢¶µ»Õ¤¬¥à¡¼¥É¥ë¤Ë¤è¤Ã¤ÆÌäÂê¤ÎÊÔ½¸¤Ê¤É¤ò¹Ô¤¦»þ¤ËÀµ¤·¤¯É½¼¨¤µ¤ì¤Þ¤»¤ó¡£ - ¥×¥ë¥À¥¦¥ó¥á¥Ë¥å¡¼¤ÏÆÃÄê¤ÎÃͤ·¤«É½¼¨¤·¤Ê¤¤¤¿¤á¡¢¤½¤ì¤é¤ÎÃͤËÉôʬÆÀÅÀ¤ÎÀßÄ꤬°ìÃפ·¤Æ¤¤¤Ê¤¤¾ì¹ç¤ÏÀµ¤·¤¯É½¼¨¤µ¤ì¤Þ¤»¤ó¡£ - ¥Ö¥é¥¦¥¶¡¼¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ò»È¤Ã¤ÆÌäÂê¤ÎÊÔ½¸¤ò¤¹¤ë¾ì¹ç¡¢ÉôʬÆÀÅÀ¤ÎÀßÄê¤Ï¡¢¥Ö¥é¥¦¥¶¡¼¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤ËÊѹ¹¤µ¤ì¤Þ¤¹¡£

          - -

          Ê£¿ô²òÅú¡§
          - - Ê£¿ô²òÅú¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢Â¿»èÁªÂòÌäÂê¤Ë¤ª¤¤¤Æ¡¢2¤Ä°Ê¾å¤ÎÁªÂò»è¤òÁªÂò¤¹¤ë¤³¤È¤ÇÀµ²ò¤È¤¹¤ë¾ì¹ç¤ËÍѤ¤¤é¤ì¤Þ¤¹¡£ - + Ê£¿ô²òÅú¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢Â¿»èÁªÂò¼°ÌäÂê¤Ë¤ª¤¤¤Æ¡¢Æó¤Ä°Ê¾å¤ÎÁªÂò»è¤òÁªÂò¤¹¤ë¤³¤È¤ÇÀµ²ò¤È¤¹¤ë¾ì¹ç¤ËÍѤ¤¤é¤ì¤Þ¤¹¡£ Ê£¿ô²òÅú¤Î¥ª¥×¥·¥ç¥ó¤òÍøÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢¤½¤ì¤¾¤ì¤ÎÅú¤¨¤ËÉôʬÆÀÅÀ¤òÀßÄꤷ¤Þ¤¹¡£ - - ¤½¤¦¤¹¤ë¤³¤È¤Ç¡¢1¤Ä¤Î¹àÌܤòÁªÂò¤·¤¿¤À¤±¤Ç¤Ï¡¢Àµ²ò¤È¤·¤Æ¤ÎÆÀÅÀ¤òÆÀ¤é¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

          - + ¤½¤¦¤¹¤ë¤³¤È¤Ç¡¢°ì¤Ä¤Î¹àÌܤòÁªÂò¤·¤¿¤À¤±¤Ç¤Ï¡¢Àµ²ò¤È¤·¤Æ¤ÎÆÀÅÀ¤òÆÀ¤é¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

               What two people are entombed in Grant's tomb? {
          -
                     ~No one
          -
                     ~%50%Grant
          -
                     ~%50%Grant's wife
          -
                     ~Grant's father }
          - -

          ¾å¤ÎÎã¤Î¾ì¹ç¤Ë¡¢(=)¤¬¤É¤Î¹àÌܤˤâÍѤ¤¤é¤ì¤Æ¤¤¤Ê¤¤ÅÀ¤ÈÁ´¹àÌÜ¤ÎÆÀÅÀ¤Î¹ç·×¤¬100%°Ê²¼¤Ë¤Ê¤Ã¤Æ¤¤¤ëÅÀ¤ËÃí°Õ¤·¤Æ²¼¤µ¤¤¡£ - ¤½¤¦¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï¡¢Moodle¤Ï¡¢¥¨¥é¡¼¤È¤·¤Æ°·¤¤¤Þ¤¹¡£À¸ÅÌ¡¦³ØÀ¸¤¬¡¢Á´¹àÌÜÁª¤Ö¤³¤È¤Ç100%¤òÆÀ¤ë¤³¤È¤¬¤Ê¤¤¤è¤¦¤Ë¡¢ - ¸í¤Ã¤Æ¤¤¤ë²òÅú¤Î¹àÌܤˤϥޥ¤¥Ê¥¹¤òÉÕ¤±¤Æ-50%¤òÀßÄꤷ¤Æ¤ª¤¯¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡£

          - -
               What two people are entombed in Grant's tomb? {
          -
                     ~%-50%No one
          -
                     ~%50%Grant
          -
                     ~%50%Grant's wife
          -
                     ~%-50%Grant's father }
          - -

          ÆÃÊ̤ʵ­¹æ ~ = { } ¡§
          - +

          ÆÃÊ̤ʵ­¹æ ~ = { } ¡§
          GIFT¤Î¥Õ¥£¥ë¥¿¡¼¤Ï¤³¤Î( ~ = { } )ÆÃÊ̤Υ³¥ó¥È¥í¡¼¥ëµ­¹æ¤ò»È¤¤¤Þ¤¹¡£ - - ½¾¤Ã¤Æ¡¢ÉáÄ̤Îʸ»ú¤È¤·¤Æ¡¢Ê¸¾ÏÃæ¤ËÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ - + ½¾¤Ã¤Æ¡¢ÉáÄ̤Îʸ»ú¤È¤·¤Æ¡¢Ê¸¾ÏÃæ¤ËÍѤ¤¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¡£ ¤·¤«¤·¡¢HTML Entities¤È¤·¤Æ½ñ¤±¤Ð¡¢¤³¤Îʸ»ú¤òɽ¼¨¤¹¤ë¤³¤È¤¬²Äǽ¤È¤Ê¤ê¤Þ¤¹¡£ - HTML Entities¡Ê¥³¡¼¥É¡Ë¤ò»ÈÍѤ¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤³¤ì¤é¤Î¥³¥ó¥È¥í¡¼¥ëµ­¹æ¤òľÀÜ - - ÆþÎϤ·¤Ê¤¯¤Æ¤â¡¢¥Ö¥é¥¦¥¶¡¼¤Çɽ¼¨¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð¡¢&#061;¤òÆþÎϤ¹¤ì¤Ð¡¢ - + ÆþÎϤ·¤Ê¤¯¤Æ¤â¡¢¥Ö¥é¥¦¥¶¡¼¤Çɽ¼¨¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Î㤨¤Ð¡¢&#061;¤òÆþÎϤ¹¤ì¤Ð¡¢ ¥Ö¥é¥¦¥¶¡¼¤Ç¸«¤ë»þ¤Ë¤Ï¡¢¥¤¥³¡¼¥ëµ­¹æ(=)¤¬É½¼¨¤·¤Þ¤¹¡£ÌäÂê¤ÎÎã¤ò¸«¤Æ²¼¤µ¤¤¡£

          -
              Which answer equals 5? {
          -
                     ~&#061; 2 + 2
          -
                     =&#061; 2 + 3
          -
                     ~&#061; 2 + 4  }
          -

          ¤³¤ì¤é¤ÎÅú¤¨¤Ï = 2 + 2¡¢= 2 + 3¡¢= 2 + 4¤È¤·¤ÆÉ½¼¨¤·¤Þ¤¹¡£ - ¤³¤ÎÊýË¡¤òÍøÍѤ·¤Æ¡¢HTML¥³¡¼¥É¤ò¥³¡¼¥É¤È¤·¤ÆÉ½¼¨¤¹¤ë¤³¤È¤â²Äǽ¤È¤Ê¤ê¤Þ¤¹¡£ - °Ê²¼¤Î¥ê¥¹¥È¤Ï¤³¤ì¤é¤Î¥³¥ó¥È¥í¡¼¥ëµ­¹æ¤ÎHTML Entities¤Î¥³¡¼¥É¤¬µ­¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

          -
               µ­¹æ       ¥³¡¼¥É
          -
                  ~        &#126;
          -
                  =        &#061;
          -
                  {        &#123;
          -
                  }        &#125;
          -
                  <        &lt;
          -
                  >        &gt;
          - -

          ¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó¡§
          - - µ­½ÒÌäÂê¤Ë¤ª¤¤¤Æ¡¢Âçʸ»ú¡¢¾®Ê¸»ú¤Îǧ¼±¤ò¤¹¤ë¤è¤¦¤ËÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤Î¾ì¹ç¡¢°Ê²¼¤Î¥é¥¤¥ó¤ÎÃæ¤Ç¡¢ 0 ¤ò 1 ¤ËÊѹ¹¤¹¤ë¤³¤È¤ÇÀßÄê¤Ç¤­¤Þ¤¹¡£
          - + µ­½Ò¼°ÌäÂê¤Ë¤ª¤¤¤Æ¡¢Âçʸ»ú¡¢¾®Ê¸»ú¤Îǧ¼±¤ò¤¹¤ë¤è¤¦¤ËÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤½¤Î¾ì¹ç¡¢°Ê²¼¤Î¥é¥¤¥ó¤ÎÃæ¤Ç¡¢ 0 ¤ò 1 ¤ËÊѹ¹¤¹¤ë¤³¤È¤ÇÀßÄê½ÐÍè¤Þ¤¹¡£
          $question->usecase = 0; // Ignore case

          - -

          ¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢gift/format.php¤Î¥¤¥ó¥Ý¡¼¥È¥Õ¥£¥ë¥¿¡¼¤ÎÊÔ½¸¤Ë¤ª¤¤¤ÆÆþ¼ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

          - - +

          ¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢gift/format.php¤Î¥¤¥ó¥Ý¡¼¥È¥Õ¥£¥ë¥¿¡¼¤ÎÊÔ½¸¤Ë¤ª¤¤¤ÆÆþ¼ê¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

          -

          CREDITS

          -

          ¤³¤ÎGIFT¤Î¥Õ¥£¥ë¥¿¡¼¤Ï¡¢¥à¡¼¥É¥ë¡¦¥³¥ß¥å¥Ë¥Æ¥£¡¼¤Î¿¤¯¤ÎÊý¡¹¤ÎÎϤò¹ç¤ï¤»¤Æ½ñ¤«¤ì¤¿¤â¤Î¤Ç¤¹¡£ - »Ï¤á¤Ï·êËä¤á¼°¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë´ð¤Å¤¤¤¿¤â¤Î¤Ç¤¢¤ê¡¢¤³¤ì¤ÏMartin Dougiamas¤äThomas Robb¡¢¤½¤Î¾¤Ë¤â - ¿¤¯¤Î¿Í¡¹¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤¿¥³¡¼¥É¤òÍѤ¤¤¿¤â¤Î¤Ç¤¹¡£Paul Tsuchido Shew¤Ï2003ǯ12·î¤Ë¡¢ - ¥³¥ß¥å¥Ë¥Æ¥£¡¼¤«¤é¤Î¥¢¥É¥Ð¥¤¥¹¤Ê¤É¤òÅý¹ç¤·¡¢¤µ¤é¤ËÉý¹­¤¤¥Õ¥©¡¼¥Þ¥Ã¥È¤È¤·¤Æ¡¢ - ¤³¤Î¥Õ¥£¥ë¥¿¡¼¤òºîÀ®¤·¤Þ¤·¤¿¡£¤³¤Î¡ÖGIFT¡×¤È¤¤¤¦Ì¾Á°¤Ï¡¢¡ÖGeneral Import Format Technology¡×¤Î - Ƭʸ»ú¤ò¤È¤ê̾ÉÕ¤±¤é¤ì¤¿¤È»×¤ï¤ì¤Þ¤¹¤¬¡¢¤³¤Î¤è¤¦¤Ë¥·¥ó¥×¥ë¤Ê¥Õ¥£¥ë¥¿¡¼¤Ë¤Ï¡¢Ã»¤¯¡ÖGIFT¡×¤ÇÎɤ¤¤È»×¤¤¤Þ¤¹¡£ - -

          GIFT¥É¥­¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¤ÎÃø¼Ô¡§Paul Tsuchido Shew http://ac.shew.jp. ÆüËܸìÌõ¤âÆ±Ãø¼Ô¡£
          - - ¤³¤ÎËÝÌõ¤ÎºÇ¿·ÊÔ½¸¡§2004.02.21.

          - + ¤³¤ÎËÝÌõ¤ÎºÇ¿·ÊÔ½¸¡§2004.02.21.

          \ No newline at end of file diff --git a/lang/ja/help/quiz/formatwebct.html b/lang/ja/help/quiz/formatwebct.html index 1d1b9ad5692..369a5c72dcb 100644 --- a/lang/ja/help/quiz/formatwebct.html +++ b/lang/ja/help/quiz/formatwebct.html @@ -2,7 +2,7 @@

          WebCT¥¤¥ó¥Ý¡¼¥È¥Õ¥£¥ë¥¿¤Ï³«È¯Ãæ¤Ç¤¢¤ê¡¢¤¹¤Ù¤Æ¤ÎWebCTÌäÂ꥿¥¤¥×¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

          -

          ¤³¤ÎÀâÌÀ¤ò½ñ¤¤¤Æ¤¤¤ë¸½ºß¡¢Â¿»èÁªÂòÌäÂꤪ¤è¤Óµ­½ÒÌäÂê¤Î¤ß¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£

          +

          ¤³¤ÎÀâÌÀ¤ò½ñ¤¤¤Æ¤¤¤ë¸½ºß¡¢Â¿»èÁªÂòÌäÂêµÚ¤Óµ­½ÒÌäÂê¤Î¤ß¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£

          ¤³¤ì¤é¤ÎÌäÂ꥿¥¤¥×¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ëµ­½ÒÎã¤Ç¤¹:

          diff --git a/lang/ja/help/quiz/grademethod.html b/lang/ja/help/quiz/grademethod.html index e4339a7eead..8a55c3d39a2 100644 --- a/lang/ja/help/quiz/grademethod.html +++ b/lang/ja/help/quiz/grademethod.html @@ -1,23 +1,24 @@ -

          ɾÄêÊýË¡

          +

          ɾ²ÁÊýË¡

          -

          Ê£¿ô²ó¤Î¥Á¥ã¥ì¥ó¥¸¤òµö²Ä¤·¤¿¾ì¹ç¡¢°Û¤Ê¤ëÊýË¡¤Ç³ØÀ¸¤ÎºÇ½ªÉ¾ÅÀ¤ò½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

          Ê£¿ô²ó¤Î¥Á¥ã¥ì¥ó¥¸¤òµö²Ä¤·¤¿¾ì¹ç¡¢°Û¤Ê¤ëÊýË¡¤Ç³ØÀ¸¤ÎºÇ½ªÀ®ÀÓ¤ò½Ð¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ -

          ºÇ¹âɾÅÀ

          -

            -

            Á´¤Æ¤Î¼õ¸³¤ÎÃæ¤ÎºÇ¹âɾÅÀ¤¬ºÇ½ªÉ¾ÅÀ¤Ç¤¹¡£ -

          +

          ºÇ¹âÆÀÅÀ +

            +

            Á´¥Á¥ã¥ì¥ó¥¸Ãæ¤ÎºÇ¹âÆÀÅÀ¤¬ºÇ½ªÀ®ÀӤǤ¹¡£ +

          -

          Ê¿¶ÑɾÅÀ

          -

            -

            ºÇ½ªÉ¾ÅÀ¤Ï¡¢Á´¤Æ¤Î¼õ¸³¤ÎÊ¿¶ÑɾÅÀ(ñ½ã¤Ê°ÕÌ£¤Ç)¤Ç¤¹¡£ -

          +

          Ê¿¶ÑÆÀÅÀ +

            +

            Á´¤Æ¤Î¥Á¥ã¥ì¥ó¥¸¤ÎÊ¿¶ÑÅÀ¤¬ºÇ½ªÀ®ÀӤǤ¹¡£ +

          -

          ½é²ó¼õ¸³

          -

            -

            ºÇ½ªÉ¾ÅÀ¤Ï¡¢°ìÈֺǽé¤Î¼õ¸³¤ÇÆÀÅÀ¤·¤¿É¾ÅÀ(¾¤Ï̵»ë¤µ¤ì¤Þ¤¹)¤Ç¤¹¡£ -

          +

          ½é²óÆÀÅÀ +

            +

            ºÇ½é¤ÎÆÀÅÀ¤¬ºÇ½ªÀ®ÀӤǤ¹¡£(¾¤Î¥Á¥ã¥ì¥ó¥¸¤Ï̵»ë¤µ¤ì¤Þ¤¹) +

          -

          ºÇ¿·¼õ¸³

          -

            -

            ºÇ½ªÉ¾ÅÀ¤Ë¤Ï¡¢Ä¾¶á¤Î¼õ¸³¤ÇÆÀÅÀ¤·¤¿É¾ÅÀ¤Î¤ß¤¬¹Í褵¤ì¤Þ¤¹¡£ -

          +

          ºÇ½ªÆÀÅÀ +

            +

            ºÇ¿·¤Î¥Á¥ã¥ì¥ó¥¸¤ÎÆÀÅÀ¤¬ºÇ½ªÀ®ÀӤǤ¹¡£ +

            +
          diff --git a/lang/ja/help/quiz/import.html b/lang/ja/help/quiz/import.html index 8893bae43b3..087d2dbcfb8 100644 --- a/lang/ja/help/quiz/import.html +++ b/lang/ja/help/quiz/import.html @@ -9,7 +9,7 @@

          GIFT¤Ï¡¢¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤«¤éMoodle¾®¥Æ¥¹¥È¤ËÌäÂê¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Î¡¢ºÇ¤âÅý¹çŪ¤Ê¥¤¥ó¥Ý¡¼¥È¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤¹¡£ GIFT¤Ï¡¢¶µ»Õ¤¬ÌäÂê¤ò¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ç´Êñ¤Ë½ñ¤¯¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£Â¿»èÁªÂòÌäÂê¡¢ ¡¢¡û/¡ßÌäÂê¡¢µ­½ÒÌäÂê¡¢ÁȤ߹ç¤ï¤»ÌäÂê¡¢¿ôÃÍÌäÂê¡¢_____¤òÁÞÆþ¤¹¤ë¤³¤È¤Ç¡Ö·êËä¤áÌäÂê¡×¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£ -ÍÍ¡¹¤Ê¥¿¥¤¥×¤ÎÌäÂꤪ¤è¤Ó¥³¥á¥ó¥È¡¢ÌäÂê̾¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¡¢É¾ÅÀ¤ÎÈæ½Å³ä¹ç¤ò1¤Ä¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ëµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +ÍÍ¡¹¤Ê¥¿¥¤¥×¤ÎÌäÂêµÚ¤Ó¥³¥á¥ó¥È¡¢ÌäÂê̾¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¡¢É¾ÅÀ¤ÎÈæ½Å³ä¹ç¤ò°ì¤Ä¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ëµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ²¼µ­¤ËÎã¤òµó¤²¤Þ¤¹:

           ¥°¥é¥ó¥È¤ÎÊè¤Ë¤Ï郎Ëä¤á¤é¤ì¤Æ¤¤¤Þ¤¹¤«?{~¥°¥é¥ó¥È ~¥¸¥§¥Õ¥¡¡¼¥½¥ó =ï¤âËä¤á¤é¤ì¤Æ¤¤¤Ê¤¤}
          @@ -114,4 +114,4 @@ Moodle
           
           
           
          -

          WebCT¡¢IMS¡¢QTI¤ò´Þ¤ó¤À¿·¤¿¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¤µ¤é¤ËÄɲ䵤ì¤Þ¤¹¡£¤É¤Î¤è¤¦¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â¡¢Moodle¥æ¡¼¥¶¤¬¹×¸¥¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹!

          +

          WebCT¡¢IMS¡¢QTI¤ò´Þ¤ó¤À¿·¤¿¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¹¹¤ËÄɲ䵤ì¤Þ¤¹¡£¤É¤Î¤è¤¦¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â¡¢Moodle¥æ¡¼¥¶¤¬¹×¸¥¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹!

          diff --git a/lang/ja/help/quiz/index.html b/lang/ja/help/quiz/index.html index 0854aeedffc..c5132383708 100644 --- a/lang/ja/help/quiz/index.html +++ b/lang/ja/help/quiz/index.html @@ -1,34 +1,34 @@

          ¾®¥Æ¥¹¥È

          diff --git a/lang/ja/help/quiz/match.html b/lang/ja/help/quiz/match.html index ba94a0fdf2a..eb980fcdba5 100644 --- a/lang/ja/help/quiz/match.html +++ b/lang/ja/help/quiz/match.html @@ -1,7 +1,8 @@ -

          ÁȤ߹ç¤ï¤»ÌäÂê

          +

          ÁȤ߹ç¤ï¤»ÌäÂê

          -

          Ǥ°Õ¤ÎƳÆþʸ¤Î¸å¤Ë¡¢²òÅú¼Ô¤ËÂФ·¤Æ¤¤¤¯¤Ä¤«¤Î¾®ÌäÂꤪ¤è¤Óº®¤¼¤é¤ì¤¿Åú¤¨¤¬Í¿¤¨¤é¤ì¤Þ¤¹¡£¤½¤ì¤¾¤ì¤ÎÌäÂê¤Ë¤Ï1¤Ä¤ÎÀµÅú¤¬¤¢¤ê¤Þ¤¹¡£

          +

          Ǥ°Õ¤ÎƳÆþʸ¤Î¸å¤Ë¡¢²óÅú¼Ô¤ËÂФ·¤Æ¤¤¤¯¤Ä¤«¤Î¼ÁÌäµÚ¤Óº®¤¼¤é¤ì¤¿Åú¤¨¤¬Í¿¤¨¤é¤ì¤Þ¤¹¡£ +¤½¤ì¤¾¤ì¤Î¼ÁÌä¤Ë¤Ï1¤Ä¤ÎÀµÅö¤¬¤¢¤ê¤Þ¤¹¡£ -

          ²òÅú¼Ô¤Ï¤½¤ì¤¾¤ì¤Î¾®ÌäÂê¤Ë¹çÃפ·¤¿Åú¤¨¤òÁªÂò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

          +

          ²óÅú¼Ô¤Ï¤½¤ì¤¾¤ì¤Î¼ÁÌä¤Ë¹çÃפ·¤¿Åú¤¨¤òÁªÂò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -

          Á´¤Æ¤ÎÌäÂê¤ËÂФ¹¤ëÁí¹çɾÄê¤ò¹Ô¤¦¤¿¤á¡¢¤½¤ì¤¾¤ì¤Î¾®ÌäÂê¤ËƱ¤¸Èæ½Å¤¬¤«¤±¤é¤ì¤Þ¤¹¡£

          +

          ¤½¤ì¤¾¤ì¤Î¼ÁÌä¤Ë¤ÏÁ´¼ÁÌä¤ËÂФ¹¤ëÁí¹çɾ²Á¤ò¹Ô¤¦°Ù¤Ë¡¢Æ±ÍͤÎÈæ½Å¤¬¤«¤±¤é¤ì¤Þ¤¹¡£ diff --git a/lang/ja/help/quiz/maxgrade.html b/lang/ja/help/quiz/maxgrade.html index 0e403869d39..93b722d5cab 100644 --- a/lang/ja/help/quiz/maxgrade.html +++ b/lang/ja/help/quiz/maxgrade.html @@ -1,8 +1,8 @@ -

          ºÇÂçɾÅÀ

          +

          ºÇÂçɾ²Á

          -

          ¤¢¤Ê¤¿¤¬ÀßÄꤹ¤ë¾®¥Æ¥¹¥È¤ÎºÇÂçɾÅÀ¤Ë¤è¤ê¡¢Á´¤Æ¤ÎɾÅÀ¤¬·×»»¤µ¤ì¤Þ¤¹¡£

          +

          ¤¢¤Ê¤¿¤¬ÀßÄꤷ¤¿¾®¥Æ¥¹¥È¤ÎºÇÂçɾ²Á¤ÏÁ´¤Æ¤Î¾®¥Æ¥¹¥È¤Îɾ²Á¹ç·×¤ò°ÕÌ£¤·¤Þ¤¹¡£

          +

          Î㤨¤ÐºÇÂçɾ²Á¤ò20¤Ë¤·¤¿¾ì¹ç¡¢¾®¥Æ¥¹¥È¤Îɾ²Á³ä¹ç¤ÏÁ´ÂΤÎÃæ¤Ç20%¤Ë¤Ê¤ê¤Þ¤¹¡£

          -

          Î㤨¤ÐºÇÂçɾÅÀ¤ò20¤Ë¤·¤¿¾ì¹ç¡¢¾®¥Æ¥¹¥È¤ÎɾÅÀ³ä¹ç¤Ï¥³¡¼¥¹Á´ÂΤÎÃæ¤Ç20%¤Ë¤Ê¤ê¤Þ¤¹¡£

          - -

          ËþÅÀ50¤Ç10¤ÎÌäÂ꤬¤¢¤Ã¤¿¤È¤·¤Æ¤â¡¢¾®¥Æ¥¹¥È¤ÎºÇÂçɾÅÀ¤Ï20¤Ë¡Ö½Ì¾®¡×¤µ¤ì¤Þ¤¹¡£

          +

          ËþÅÀ50¤Ç10¤Î¼ÁÌ䤬¤¢¤Ã¤¿¤È¤·¤Æ¤â¡¢¾®¥Æ¥¹¥È¤ÎºÇÂçɾ²Á¤Ï1ÌäÅö¤¿¤ê +20¤Ë¥¹¥±¡¼¥ë¥À¥¦¥ó¤µ¤ì¤Þ¤¹¡£

          diff --git a/lang/ja/help/quiz/mods.html b/lang/ja/help/quiz/mods.html index e0826f0b0fc..bf5f8835a09 100644 --- a/lang/ja/help/quiz/mods.html +++ b/lang/ja/help/quiz/mods.html @@ -1,7 +1,7 @@ -

           ¾®¥Æ¥¹¥È

          +

           ¾®¥Æ¥¹¥È

            ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ç¤Ï¡¢¶µ»Õ¤¬Â¿»èÁªÂòÌäÂê¡¢¡û/¡ßÌäÂê¡¢µ­½ÒÌäÂ꤫¤éÀ®¤ë¾®¥Æ¥¹¥È¤ò¥Ç¥¶¥¤¥ó¡¦ÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¤³¤ì¤é¤ÎÌäÂê¤Ï¥«¥Æ¥´¥êʬ¤±¤µ¤ì¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¡¢¥³¡¼¥¹Æâ¤ª¤è¤Ó¥³¡¼¥¹´Ö¤ÇºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤ì¤é¤ÎÌäÂê¤Ï¥«¥Æ¥´¥êʬ¤±¤µ¤ì¤¿¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤µ¤ì¡¢¥³¡¼¥¹ÆâµÚ¤Ó¥³¡¼¥¹´Ö¤ÇºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¾®¥Æ¥¹¥È¤Ï¡¢Ê£¿ô²ó¤Î¼õ¸³¤òµö²Ä¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¤½¤ì¤¾¤ì¤Î¼õ¸³¤Ï¼«Æ°Åª¤ËºÎÅÀ¤µ¤ì¡¢¶µ»Õ¤Ï¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤òÍ¿¤¨¤ë¤«¡¢ Àµ²ò¤òɽ¼¨¤¹¤ë¤«¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë¤ÏɾÄ굡ǽ¤â¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

          diff --git a/lang/ja/help/quiz/multianswer.html b/lang/ja/help/quiz/multianswer.html index 2abb4393909..c36fae8acf4 100644 --- a/lang/ja/help/quiz/multianswer.html +++ b/lang/ja/help/quiz/multianswer.html @@ -12,9 +12,9 @@
          - +
          +
          + +

          Ten przyk³ad uka¿e siê uczniom w nastêpuj±cy sposób:

          + + +
          +

          3

          8 Marks


          +

          To pytanie zawiera nieco tekstu z pytaniami za³±czonymi w³a¶nie tutaj , po czym nale¿y poradziæ sobie z pytaniem do krótkiej odpowiedzi i ostatecznie mamy pytanie numeryczne .
          +
          +Zauwa¿, ¿e adresy, takie jak www.moodle.org i emotikony dzia³±j± tak jak normalnie:
          +a) Czy podoba Ci siê to?
          +b) Jak± ocenê by¶ za to przyzna³?
          +
          +Powodzenia!

          +
          + +
          + diff --git a/lang/pl/help/quiz/attempts.html b/lang/pl/help/quiz/attempts.html index 7da7b63020e..7bc10cc660a 100644 --- a/lang/pl/help/quiz/attempts.html +++ b/lang/pl/help/quiz/attempts.html @@ -1,5 +1,5 @@ -

          Próby rozwi±zania quizu

          - -

          Studentom mo¿na umo¿liwiæ wielokrotne podchodzenie do rozwi±zywania quizu.

          - -

          Dziêki temu quiz stanie siê dzia³aniem wspomagaj±cym proces uczenia siê, a nie tylko narzêdziem do oceny studenta.

          +

          Próby rozwi±zania quizu

          + +

          Studentom mo¿na umo¿liwiæ wielokrotne podchodzenie do rozwi±zywania quizu.

          + +

          Dziêki temu quiz stanie siê dzia³aniem wspomagaj±cym proces uczenia siê, a nie tylko narzêdziem do oceny studenta.

          diff --git a/lang/pl/help/quiz/categories.html b/lang/pl/help/quiz/categories.html index 67e133fba43..964db304018 100644 --- a/lang/pl/help/quiz/categories.html +++ b/lang/pl/help/quiz/categories.html @@ -1,11 +1,11 @@ -

          Kategorie pytañ

          - -

          Zamiast tworzyæ jedn± d³ug± listê pytañ, mo¿esz podzieliæ pytania na kategorie.

          - -

          Ka¿da kategoria zawiera nazwê i krótki opis.

          - -

          Ka¿da kategoria mo¿e równie¿ zostaæ "opublikowana" co oznacza, ¿e ta kategoria (i wszystkie pytania w niej) bêd± dostêpne we wszystkich kursach na tym serwerze, czyli Twoje pytania bêd± mog³y zostaæ wykorzystane w quizach nale¿±cych do innych kursów.

          - -

          Kategorie mog± byæ tworzone i usuwane gdy zechcesz. Jednak w przypadku usuniêcia kategorii zawieraj±cej pytania, musisz okre¶liæ inn± kategoriê, do której bêd± one mog³y zostaæ przeniesione.

          - - +

          Kategorie pytañ

          + +

          Zamiast tworzyæ jedn± d³ug± listê pytañ, mo¿esz podzieliæ pytania na kategorie.

          + +

          Ka¿da kategoria zawiera nazwê i krótki opis.

          + +

          Ka¿da kategoria mo¿e równie¿ zostaæ "opublikowana" co oznacza, ¿e ta kategoria (i wszystkie pytania w niej) bêd± dostêpne we wszystkich kursach na tym serwerze, czyli Twoje pytania bêd± mog³y zostaæ wykorzystane w quizach nale¿±cych do innych kursów.

          + +

          Kategorie mog± byæ tworzone i usuwane gdy zechcesz. Jednak w przypadku usuniêcia kategorii zawieraj±cej pytania, musisz okre¶liæ inn± kategoriê, do której bêd± one mog³y zostaæ przeniesione.

          + + diff --git a/lang/pl/help/quiz/correctanswers.html b/lang/pl/help/quiz/correctanswers.html index 66732e69426..c6e552b7d0e 100644 --- a/lang/pl/help/quiz/correctanswers.html +++ b/lang/pl/help/quiz/correctanswers.html @@ -1,5 +1,5 @@ -

          Poka¿ poprawne odpowiedzi

          - -

          W³±czenie funkcji pokazywania poprawnych odpowiedzi spowoduje, ¿e informacja zwrotna przekazywana studentowi bêdzie równie¿ zawieraæ poprawn± odpowied¥ na ka¿de pytanie (wyró¿nion± jasnym kolorem). -

          - +

          Poka¿ poprawne odpowiedzi

          + +

          W³±czenie funkcji pokazywania poprawnych odpowiedzi spowoduje, ¿e informacja zwrotna przekazywana studentowi bêdzie równie¿ zawieraæ poprawn± odpowied¼ na ka¿de pytanie (wyró¿nion± jasnym kolorem). +

          + diff --git a/lang/pl/help/quiz/createmultiple.html b/lang/pl/help/quiz/createmultiple.html index a4045ed2909..ab35d317dfd 100644 --- a/lang/pl/help/quiz/createmultiple.html +++ b/lang/pl/help/quiz/createmultiple.html @@ -1,7 +1,7 @@ -

          Tworzenie wielu pytañ

          -

          Ta strona umo¿liwia Ci tworzenie wielu pytañ równocze¶nie

          - -

          Na chwilê obecn± mo¿esz tu jedynie stworzyæ kilka pytañ wybieranych losowo i (opcjonalnie) - dodaæ je do aktualnego quizu

          - +

          Tworzenie wielu pytañ

          +

          Ta strona umo¿liwia Ci tworzenie wielu pytañ równocze¶nie

          + +

          Na chwilê obecn± mo¿esz tu jedynie stworzyæ kilka pytañ wybieranych losowo i (opcjonalnie) + dodaæ je do aktualnego quizu

          +

          Docelowo strona ta zostanie rozwiniêta do kreatora, który bêdzie posiada³ znacznie wiêcej opcji

          \ No newline at end of file diff --git a/lang/pl/help/quiz/description.html b/lang/pl/help/quiz/description.html index aabc706565f..5c2b7bd5f75 100644 --- a/lang/pl/help/quiz/description.html +++ b/lang/pl/help/quiz/description.html @@ -1,7 +1,7 @@ -

          Opis

          - -

          Formalnie rzecz ujmuj±c nie jest to pytanie.

          - -

          Wy¶wietla on jedynie pewien tekst nie wymagaj±c odpowiedzi.

          - -

          Mo¿e byæ u¿yty w celu lepszego wyja¶nienia nastêpuj±cej po nim grupy pytañ.

          +

          Opis

          + +

          Formalnie rzecz ujmuj±c nie jest to pytanie.

          + +

          Wy¶wietla on jedynie pewien tekst nie wymagaj±c odpowiedzi.

          + +

          Mo¿e byæ u¿yty w celu lepszego wyja¶nienia nastêpuj±cej po nim grupy pytañ.

          diff --git a/lang/pl/help/quiz/feedback.html b/lang/pl/help/quiz/feedback.html index 3015d244c59..f55b86f47ae 100644 --- a/lang/pl/help/quiz/feedback.html +++ b/lang/pl/help/quiz/feedback.html @@ -1,3 +1,3 @@ -

          Informacja zwrotna

          - -

          W³±czenie funkcji wysy³ania informacji zwrotnej spowoduje, ¿e studenci otrzymaj± informacjê na temat ka¿dej odpowiedzi (prawid³owej lub nieprawid³owej).

          +

          Informacja zwrotna

          + +

          W³±czenie funkcji wysy³ania informacji zwrotnej spowoduje, ¿e studenci otrzymaj± informacjê na temat ka¿dej odpowiedzi (prawid³owej lub nieprawid³owej).

          diff --git a/lang/pl/help/quiz/formataiken.html b/lang/pl/help/quiz/formataiken.html index 0ec04b8f770..5b7dd29dcaa 100644 --- a/lang/pl/help/quiz/formataiken.html +++ b/lang/pl/help/quiz/formataiken.html @@ -1,14 +1,14 @@ -

          Importowanie plików w formacie "Aiken"

          +

          Importing "Aiken" format files

          Format Akien to bardzo prosty sposób tworzenia pytañ wielokrotnego wyboru u¿ywaj±c ³atwego dla cz³owieka formatu. Oto przyk³ad:

          -Jaka jest poprawna odpowied¥ na to pytanie?
          -A. Czy to ta odpowied¥?
          +Jaka jest poprawna odpowied¼ na to pytanie?
          +A. Czy to ta odpowied¼?
           B. A mo¿e ta?
           C. A mo¿e jednak ta?
           D. Czy jednak mo¿e ta?
          -ANSWER: D
          +ODPOWIED¬: D
           
           Jaki LMS ma najwiêcej formatów quizów?
           A) Moodle
          @@ -17,9 +17,9 @@ C) Claroline
           D) Blackboard
           E) WebCT
           F) Ilias
          -ANSWER: A
          +ODPOWIED¬: A
           

          Ca³e pytanie musi zmie¶ciæ siê na jednej linii.

          -

          Ka¿da odpowied¥ musi zaczynaæ siê od pojedynczej litery, nastêpnie kropki '.' lub nawiasu ')' i spacji.

          -

          Linia zawieraj±ca poprawn± odpowied¥ musi zaczynaæ siê od "ANSWER:" po czym nastêpuje odpowiednia litera.

          +

          Ka¿da odpowied¼ musi zaczynaæ siê od pojedynczej litery, nastêpnie kropki '.' lub nawiasu ')' i spacji.

          +

          Linia zawieraj±ca poprawn± odpowied¼ musi zaczynaæ siê od "ODPOWIED¬:" po czym nastêpuje odpowiednia litera.

          diff --git a/lang/pl/help/quiz/formatctm.html b/lang/pl/help/quiz/formatctm.html index 747f32dc210..a0d660ed5ef 100755 --- a/lang/pl/help/quiz/formatctm.html +++ b/lang/pl/help/quiz/formatctm.html @@ -1,78 +1,78 @@ -

          Importowanie plików z CTM ("Course Test Manager")

          - -

          Course Test Manager jest to software napisany przez Course Technology. -Nie jest ju¿ on aktywnie rozwijany przez Course Technology. Zosta³ zast±piony przez -nowego mened¿era testów ExamView. Nigdy nie istania³ wspólny format, który by umo¿liwia³ -eksport tego formatu z banków testó CTM do innych wspólych formatów testów. Z tego w³anie -powodu napisano ten modu³.

          - -

          A¿eby móc zaimportowaæ pytania z CTM, musisz mieæ zainstalowany CTM w systemie Windows i dostêp do MS Access. -Dwa pliki s± potrzebne by uzyskaæ dostêp do danych:

          -
          • System.mda - Ten plik znajduje siê w g³ównym katalogu instalacji CTM. W ¿argonie MS Access, okre¶la siê go jako -"Systemowa baza danych" (ang. "System Database").
          • -
          • ctm.mdb - to jest baza danych, zawieraj±ca pytania testowe. Istnieje jedna taka baza danych dla ka¿dego kursu -zainstalowanego w CTM. Mo¿na odnale¥æ ten plik w katalogu jeden poziom poni¿ej instalacji CTM.
          • -
          - -

          Proces importowania pytañ jest ró¿ny w zale¿no¶ci od tego czy Moodle dzia³a na Linuxie czy Windows. -Bez wzglêdu na to czy Moodle dziala na Linuxie czy nie, musisz mieæ dostêp do komputera dzia³aj±cego w systemie -Windows aby miec dostep do plików MS Access.

          - -

          Proces importowania jest prostszy na Moodle dzia³aj±cym pod Windowsem. Wszystko co musisz zrobiæ aby -zaimportowaæ pliki to:

          - -
          1. Skopiowaæ plik system.mda do katalogu moodle. Nie ma znaczenia do jakiego kursu skopiujesz ten plik, poniewa¿ -Moodle odnajdzie go tak i tak.
          2. -
          3. Utwórz w³asny quiz i przejd¥ to sekcji "Importuj pytania z pliku". Wybierz ctm.mdb jako plik do importu. -Je¶li wykona³e¶ t± operacjê poprawnie, zobaczysz kolejny ekran, który pozwoli tobie wybraæ podkategorie pytañ do -zamimporotowania. Powodem dla takiej organizacji procesu importowania jest fakt, i¿ banki testów CTM czêsto zawieraj± -bardzo du¿± ilo¶æ pytañ, które s± pogrupowane w okre¶lony sposób.
          4. -
          - -

          Aby dokonaæ importu na platformie Moodle zainstanowanej na Linuxie potrzebny jest dodatkowy software zwany -ODBC Socket Server. A¿eby móc importowaæ pliki -baz danych CTM na Linuxie, musisz wpierw ¶ci±gn±æ ten program i go zainstalowaæ na komputerze, który na którym zainstalowana -jest baza danych CTM (komputer ten musi mieæ Windowsa - patrz wy¿ej). Jednak¿e, nie postêpuj zgodnie z domy¶lnymi -krokami instalacji ODBC Socket Server Installation. S± one bardziej skomplikowane, ni¿ byæ powinny. -Zamiast tego wykonaj nastêpuj±ce czynno¶ci aby zainstalowaæ ten program w systemie Windows:

          - -
          1. W systemie Windows rozpakuj ¶ci±gniêty program z strony -.
          2. -
          3. Skopiuj plik ODBCSocketServer.exe do wybranej lokalizacji takiej jak n.p. katalog Program Files.
          4. - -
          5. Zainstaluj ODBC Socket Server jako Us³ugê (Service) u¿ywaj±c nastêpuj±cej komendy wpisanej w Wierszu Poleceñ -albo w menu Uruchom:
            -<¶cie¿ka dostêpu/ODBCSocketServer.exe /Service
            .
          6. - -
          7. Otwórz Us³ugi: Start->Ustawienia->Panel Sterowania->Narzêdzia Administracyjne->Us³ugi lub klikaj±c prawym -przyciskiem na ikonêMój Komputer, Zarz±dzaj, wybierz w prawym panelu Us³ugi i Aplikacje->Us³ugi. -Mo¿esz tak¿e u¿yæ skrótu wpisuj±c w okienku Uruchom
          8. - -
          9. W okienku Us³ugi odszukaj i kliknij prawym przyciskim na ODBC Socket Server i wybierz opcjê Start. W tym momencie -status tej us³ugi powinien siê zmieniæ na "Uruchomiono". Zauwa¿, ¿e mo¿na zatrzymaæ b±d¥ ca³kowicie wy³±czyæ t± us³ugê -po zakoñczeniu procesu importowania plików.
          10. - -
          11. Upewnij siê, ¿e pliki system.mda and ctm.mdb s± dostêpne i ¿e zainstalowany jest równie¿ MS Access ODBC driver. -Powinien byæ on zainstalowany wraz ze standardow± instalacj± Windowsa. Mo¿na to sprawdziæ, wybieraj±c Panel Sterowania -> -Narzêdzia administracyjne -> ¬ród³a danych (ODBC) i klikaj±c na "Sterowniki". -Nastêpnie sprawd¥ gdzie s±zainstalowane pliki CTM i odnajd¥ plik system.mda i bazê danych ctm.mdb z której -zamierzasz importowaæ pytania. Zapisz pe³n± ¶ci¿kê dostêpu do tych plików a tak¿e adres IP i nazwê serwera Windowsa. -Te informacje bêd± potrzebne przy procesie importowania.
          12. - -
          13. Teraz jeste¶ gotowy aby rozpocz±æ proces importowania zbioru lub zbiorów pytañ do moodle'a. Stwórz swój w³asny quiz -i przejd¥ do sekcji "Importuj pytania z pliku". I W TYM MIEJSCU INACZEJ BÊDZIE WYGLL·DA£ TEN PROCES NA LINUXIE - -MUSISZ WYBRAÆ JAKIKOLWIEK PLIK(NAJLEPIEJ NOWO UTWORZONY)W POLU GDZIE WSKAZUJE SIÊ PLIK DO IMPORTU ABY ROZPOCZ·Æ TEN PROCES. -TEN PLIK NIE ZOSTANIE PRZETWORZONY - JEST TO TYLKO PEWIEN WYMÓG BY "OSZUKAÆ" SYSTEM. -DOPIERO NA NASTÊPNEJ STRONIE WSKA¯ESZ W£A¦CIWY PLIK. Na nastêpnej stronie trzeba bêdzie wpisaæ nazwê komputera na którym -zainstalowany jest ODBC Socket Server a tak¿e scie¿kê dostêpu do systemowej bazy danych i bazy danych CTM. -Wpisz ten informacje i kliknij na "Po³±cz siê ze serwerem". Je¿eli wszystko by³o wpisane poprawnie, wówczas -uka¿e siê lista z której bêdzie mo¿na wybraæ podkategorie pytañ, które mo¿na zaimportowaæ z danej bazy danych. -Powodem takiego rozwi±zania jest wcze¶niej ju¿ sygnalizowany fakt, i¿ banki danych CTM czêsto zawieraj± du¿± liczbê pytañ -skategoryzowanych wed³ug okre¶lonego klucza (n.p. uk³ad kursu, rozdzia³y ksi±¿ki). JE¯ELI UDA£O SIÊ TOBIE DOJ¦Æ DO TEGO -ETAPU BEZ WY¦WIETLENIA B£ÊDÓW OZNACZA TO, ¯E UDA£O SIÊ USTANOWIÆ PO£·CZENIE Z SERWEREM W CELU ZAIMPORTOWANIA PYTAÑ DO MOODLE!
          14. -
          - -

          Je¿li pojawi³y siê jakie¶ b³êdy, wówczas spróbuj wykorzytaæ poni¿sz± informacjê. ODBC Socket server wykorzystuje port -9628 do otwarcia wtyczki (ang.socket) i wymiany danych u¿ywaj±c zapytañ w formie XML aby otrzymaæ tabelê rezultatów w XML. -Program (klasa) która importuje plik, przetwarza ten plik XMLowy i wykorzystuje go tak jakby proces importowania +

          Importowanie plików z CTM ("Course Test Manager")

          + +

          Course Test Manager jest to software napisany przez Course Technology. +Nie jest ju¿ on aktywnie rozwijany przez Course Technology. Zosta³ zast±piony przez +nowego mened¿era testów ExamView. Nigdy nie istania³ wspólny format, który by umo¿liwia³ +eksport tego formatu z banków testó CTM do innych wspólych formatów testów. Z tego w³anie +powodu napisano ten modu³.

          + +

          A¿eby móc zaimportowaæ pytania z CTM, musisz mieæ zainstalowany CTM w systemie Windows i dostêp do MS Access. +Dwa pliki s± potrzebne by uzyskaæ dostêp do danych:

          +
          • System.mda - Ten plik znajduje siê w g³ównym katalogu instalacji CTM. W ¿argonie MS Access, okre¶la siê go jako +"Systemowa baza danych" (ang. "System Database").
          • +
          • ctm.mdb - to jest baza danych, zawieraj±ca pytania testowe. Istnieje jedna taka baza danych dla ka¿dego kursu +zainstalowanego w CTM. Mo¿na odnale¼æ ten plik w katalogu jeden poziom poni¿ej instalacji CTM.
          • +
          + +

          Proces importowania pytañ jest ró¿ny w zale¿no¶ci od tego czy Moodle dzia³a na Linuxie czy Windows. +Bez wzglêdu na to czy Moodle dziala na Linuxie czy nie, musisz mieæ dostêp do komputera dzia³aj±cego w systemie +Windows aby miec dostep do plików MS Access.

          + +

          Proces importowania jest prostszy na Moodle dzia³aj±cym pod Windowsem. Wszystko co musisz zrobiæ aby +zaimportowaæ pliki to:

          + +
          1. Skopiowaæ plik system.mda do katalogu moodle. Nie ma znaczenia do jakiego kursu skopiujesz ten plik, poniewa¿ +Moodle odnajdzie go tak i tak.
          2. +
          3. Utwórz w³asny quiz i przejd¼ to sekcji "Importuj pytania z pliku". Wybierz ctm.mdb jako plik do importu. +Je¶li wykona³e¶ t± operacjê poprawnie, zobaczysz kolejny ekran, który pozwoli tobie wybraæ podkategorie pytañ do +zamimporotowania. Powodem dla takiej organizacji procesu importowania jest fakt, i¿ banki testów CTM czêsto zawieraj± +bardzo du¿± ilo¶æ pytañ, które s± pogrupowane w okre¶lony sposób.
          4. +
          + +

          Aby dokonaæ importu na platformie Moodle zainstanowanej na Linuxie potrzebny jest dodatkowy software zwany +ODBC Socket Server. A¿eby móc importowaæ pliki +baz danych CTM na Linuxie, musisz wpierw ¶ci±gn±æ ten program i go zainstalowaæ na komputerze, który na którym zainstalowana +jest baza danych CTM (komputer ten musi mieæ Windowsa - patrz wy¿ej). Jednak¿e, nie postêpuj zgodnie z domy¶lnymi +krokami instalacji ODBC Socket Server Installation. S± one bardziej skomplikowane, ni¿ byæ powinny. +Zamiast tego wykonaj nastêpuj±ce czynno¶ci aby zainstalowaæ ten program w systemie Windows:

          + +
          1. W systemie Windows rozpakuj ¶ci±gniêty program z strony +.
          2. +
          3. Skopiuj plik ODBCSocketServer.exe do wybranej lokalizacji takiej jak n.p. katalog Program Files.
          4. + +
          5. Zainstaluj ODBC Socket Server jako Us³ugê (Service) u¿ywaj±c nastêpuj±cej komendy wpisanej w Wierszu Poleceñ +albo w menu Uruchom:
            +<¶cie¿ka dostêpu/ODBCSocketServer.exe /Service
            .
          6. + +
          7. Otwórz Us³ugi: Start->Ustawienia->Panel Sterowania->Narzêdzia Administracyjne->Us³ugi lub klikaj±c prawym +przyciskiem na ikonêMój Komputer, Zarz±dzaj, wybierz w prawym panelu Us³ugi i Aplikacje->Us³ugi. +Mo¿esz tak¿e u¿yæ skrótu wpisuj¹c w okienku Uruchom
          8. + +
          9. W okienku Us³ugi odszukaj i kliknij prawym przyciskim na ODBC Socket Server i wybierz opcjê Start. W tym momencie +status tej us³ugi powinien siê zmieniæ na "Uruchomiono". Zauwa¿, ¿e mo¿na zatrzymaæ b±d¼ ca³kowicie wy³±czyæ t± us³ugê +po zakoñczeniu procesu importowania plików.
          10. + +
          11. Upewnij siê, ¿e pliki system.mda and ctm.mdb s± dostêpne i ¿e zainstalowany jest równie¿ MS Access ODBC driver. +Powinien byæ on zainstalowany wraz ze standardow± instalacj± Windowsa. Mo¿na to sprawdziæ, wybieraj±c Panel Sterowania -> +Narzêdzia administracyjne -> ¬ród³a danych (ODBC) i klikaj±c na "Sterowniki". +Nastêpnie sprawd¼ gdzie s±zainstalowane pliki CTM i odnajd¼ plik system.mda i bazê danych ctm.mdb z której +zamierzasz importowaæ pytania. Zapisz pe³n± ¶ci¿kê dostêpu do tych plików a tak¿e adres IP i nazwê serwera Windowsa. +Te informacje bêd± potrzebne przy procesie importowania.
          12. + +
          13. Teraz jeste¶ gotowy aby rozpocz±æ proces importowania zbioru lub zbiorów pytañ do moodle'a. Stwórz swój w³asny quiz +i przejd¼ do sekcji "Importuj pytania z pliku". I W TYM MIEJSCU INACZEJ BÊDZIE WYGLL¡DA£ TEN PROCES NA LINUXIE - +MUSISZ WYBRAÆ JAKIKOLWIEK PLIK(NAJLEPIEJ NOWO UTWORZONY)W POLU GDZIE WSKAZUJE SIÊ PLIK DO IMPORTU ABY ROZPOCZ¡Æ TEN PROCES. +TEN PLIK NIE ZOSTANIE PRZETWORZONY - JEST TO TYLKO PEWIEN WYMÓG BY "OSZUKAÆ" SYSTEM. +DOPIERO NA NASTÊPNEJ STRONIE WSKA¯ESZ W£A¦CIWY PLIK. Na nastêpnej stronie trzeba bêdzie wpisaæ nazwê komputera na którym +zainstalowany jest ODBC Socket Server a tak¿e scie¿kê dostêpu do systemowej bazy danych i bazy danych CTM. +Wpisz ten informacje i kliknij na "Po³±cz siê ze serwerem". Je¿eli wszystko by³o wpisane poprawnie, wówczas +uka¿e siê lista z której bêdzie mo¿na wybraæ podkategorie pytañ, które mo¿na zaimportowaæ z danej bazy danych. +Powodem takiego rozwi±zania jest wcze¶niej ju¿ sygnalizowany fakt, i¿ banki danych CTM czêsto zawieraj± du¿± liczbê pytañ +skategoryzowanych wed³ug okre¶lonego klucza (n.p. uk³ad kursu, rozdzia³y ksi±¿ki). JE¯ELI UDA£O SIÊ TOBIE DOJ¦Æ DO TEGO +ETAPU BEZ WY¦WIETLENIA B£ÊDÓW OZNACZA TO, ¯E UDA£O SIÊ USTANOWIÆ PO£¡CZENIE Z SERWEREM W CELU ZAIMPORTOWANIA PYTAÑ DO MOODLE!
          14. +
          + +

          Je¿li pojawi³y siê jakie¶ b³êdy, wówczas spróbuj wykorzytaæ poni¿sz± informacjê. ODBC Socket server wykorzystuje port +9628 do otwarcia wtyczki (ang.socket) i wymiany danych u¿ywaj±c zapytañ w formie XML aby otrzymaæ tabelê rezultatów w XML. +Program (klasa) która importuje plik, przetwarza ten plik XMLowy i wykorzystuje go tak jakby proces importowania odbywa³ siê na lokalnym komputerze.

          \ No newline at end of file diff --git a/lang/pl/help/quiz/formatwebct.html b/lang/pl/help/quiz/formatwebct.html index 808b1ea8456..0cdd67d4853 100644 --- a/lang/pl/help/quiz/formatwebct.html +++ b/lang/pl/help/quiz/formatwebct.html @@ -2,7 +2,7 @@

          Filtr WebCT jest w tej chwili w fazie rozwojowej tak wiêc nie wszystkie opcje bêd± dzia³aæ.

          -

          Na razie tylko pytania typu "Wielokrotny wybór" i "Krótka odpowied¥" s± dostêpne.

          +

          Na razie tylko pytania typu "Wielokrotny wybór" i "Krótka odpowied¼" s± dostêpne.

          Oto przyk³ady u¿ycia tych typów pytañ w pliku tekstowym:

          diff --git a/lang/pl/help/quiz/grademethod.html b/lang/pl/help/quiz/grademethod.html index 0c47c4fafc4..73f110534c1 100644 --- a/lang/pl/help/quiz/grademethod.html +++ b/lang/pl/help/quiz/grademethod.html @@ -1,24 +1,24 @@ -

          Metoda oceniania

          - -

          Je¿eli dozwolone s± wielokrotne próby rozwi±zania quizu, to istniej± ró¿ne sposoby wykorzystania ocen za poszczególne próby do obliczenia ostatecznej oceny za rozwi±zanie quizu. - -

          Ocena najwy¿sza

          -

            -

            Ocen± ostateczn± jest najwy¿sza (najlepsza) ocena spo¶ród wszystkich ocen za poszczególne próby. -

          - -

          Ocena ¶rednia

          -

            -

            Ocen± ostateczn± jest ¶rednia ocen za wszystkie próby. -

          - -

          Ocena pierwsza

          -

            -

            Ocen± ostateczn± jest ocena za pierwsz± próbê rozwi±zania (inne próby s± zignorowane). -

          - -

          Ocena ostatnia

          -

            -

            Ocen± ostateczn± jest ocena przyznana za ostatni± próbê rozwi±zania. -

          - +

          Metoda oceniania

          + +

          Je¿eli dozwolone s± wielokrotne próby rozwi±zania quizu, to istniej± ró¿ne sposoby wykorzystania ocen za poszczególne próby do obliczenia ostatecznej oceny za rozwi±zanie quizu. + +

          Ocena najwy¿sza

          +

            +

            Ocen± ostateczn± jest najwy¿sza (najlepsza) ocena spo¶ród wszystkich ocen za poszczególne próby. +

          + +

          Ocena ¶rednia

          +

            +

            Ocen± ostateczn± jest ¶rednia ocen za wszystkie próby. +

          + +

          Ocena pierwsza

          +

            +

            Ocen± ostateczn± jest ocena za pierwsz± próbê rozwi±zania (inne próby s± zignorowane). +

          + +

          Ocena ostatnia

          +

            +

            Ocen± ostateczn± jest ocena przyznana za ostatni± próbê rozwi±zania. +

          + diff --git a/lang/pl/help/quiz/import.html b/lang/pl/help/quiz/import.html index 6eb81f47747..e3baf4be4bb 100644 --- a/lang/pl/help/quiz/import.html +++ b/lang/pl/help/quiz/import.html @@ -1,100 +1,33 @@ -

          Importowanie nowych pytañ

          - -

          Ta funkcja pozwala Ci zaimportowaæ pytania z zewnêtrznego pliku tekstowego, przes³anego na serwer za pomoc± formularza. - - -

          Import obs³uguje kilka formatów. - -

          Format GIFT

          -
            -

            Format GIFT jest najbardziej wszechstronnym formatem. Zosta³ zaprojektowany jako prosta metoda dla nauczycieli tworzacych pytania jako plik tekstowy. GIFT obs³uguje pytania Wielokrotnego wyboru, Prawda-Fa³sz, Krótkie odpowiedzi, Dopasuj odpowied¼, Numeryczne jak i zadania typu "wstaw brakuj±ce s³owo".

            - -

            Kilka typów pytañ mo¿e byæ u¿yytych w jednym pliku tekstowym. Ponadto format ten zezwala na umieszczanie komentarzy, nazw pytañ, informacji zwrotnych i wa¿enie ocen.

            - -

            Oto kilka przyk³adów:

            - -
            -CzasNaE-Biznes to?{~codzienna gazeta ~ksi±¿ka =serwis www i e-zin}
            -
            -CzasNaE-Biznes to {~codzienna gazeta ~ksi±¿ka =serwis www} o marketingu i biznesie.
            -
            -CzasNaE-Biznes to codzienna gazeta.{FALSE}
            -
            -CzasNaE-Biznes to?{=serwis www =e-zin}
            -
            -Kiedy powsta³ CzasNaE-Biznes?{#2000}
            -
            - -

            Wiêcej o formacie GIFT

            -
          - -

          Format Aiken

          -
            -

            Format Akien to bardzo prosty sposób tworzenia pytañ wielokrotnego wyboru u¿ywaj±c ³atwego dla cz³owieka formatu. Oto przyk³ad:

            -
            -Jaka jest poprawna odpowied¥ na to pytanie?
            -A. Czy to ta odpowied¥?
            -B. A mo¿e ta?
            -C. A mo¿e jednak ta?
            -D. Czy jednak mo¿e ta?
            -ANSWER: D
            -
            - -

            Wiêcej o formacie "Aiken"

            -
          - - -

          Brakuj±ce s³owo

          -
            -

            Format ten obs³uguje jedynie pytania wielokrotnego wyboru. Kaza odpowied¼ jest oddzielona tylk± (~). Poprawna odpowied¼ jest poprzedzona znakiem równo¶ci (=). Oto przyk³ad: - -

            Bed±c jeszcze niemowlêciami, gdy tylko rozpoczniemy poznawaæ w³asne cia³o, stajemy siê studentami {=anatomii i fizjologii ~prawa ~psychologii}. -
            - -

            Wiêcej o formacie "Brakuj±ce s³owo"

            -
          - - -

          AON

          -
            -

            Jest to inna wersja formatu "Brakuj±ce s³owo". W AON po zaimportowaniu -pytañ, wszystkie pytania typu krótkie odpowiedzi s± konwertowane po 4 na raz w pytania typu dopasuj odpowied¼.

            -

            Dodatkowo odpowiedzi pytañ wielokrotnego wyboru s± losowo wymieszane. -

            Format ten jest nazwany na czej¶æ organizacji, która wspiera³a stworzenie wielu cech quizu.

            -
          - - -

          Blackboard

          - - -

          CTM ("Course Test Manager")

          -
            -

            Modu³ ten pozwala importowaæ pytania stworzone przy pomocy programu Course Test Manager. Pliki CTM s± zapisane w formacie Microsoft Access, wiêc sposób importowanie zale¿ny jest od tego, czy Moodle dzia³a na Windows czy na Unixie. -

            - -

            W przypadku Windows mo¿esz po prostu zaimportowaæ plik z baz± danych pytañ tak, jak ka¿dy inny plik. -

            -

            W przypadku Linuxa musisz w³±czyæ maszynê windows w tej samej sieci z zainstalowan± baz± CTM oraz programeme ODBC Socket Server, który prze¶le dane w formacie XML do Moodle.

            - -

            Przeczytaj plik pomocy zanim zaczniesz importowaæ w tym formacie.

            - - -

            Wiêcej o formacie "CTM"

            -
          - -

          W³asny format

          -
            -

            Je¶li masz swój w³asny format, mo¿esz go uzywaæ, je¶li odpowiednio zmodyfikujesz mod/quiz/format/custom.php - -

            Liczba niezbêdnego nowego kodu jest dosyæ niewielka - tylko tyle aby -przetworzyæ tekst na pytanie. - -

            Wiêcej o W³asnym formacie

            -
          - - -

          Tworzymy ju¿ nowe formaty: WebCT, IMS QTI i cokolwiek jeszcze zapragn± cz³onkowie spo³eczno¶ci Moodle!

          +

          Importowanie nowych pytañ

          +

          Ta funkcja pozwala Ci na importowanie pytañ z zewnêtrznych plików tekstowych, wczytuj±c je poprzez formê

          + +

          Obs³ugiwane s± nastêpuj±ce formaty plików :

          + +Brakuj±ce S³owa

          +
            +

            Ten format przeznaczony jest jedynie do pytañ wielokrotnego wyboru. +Ka¿da odpowied¼ jest oddzielana tyld± (~), a prawid³owa odpowied¼ poprzedzona jest znakiem równo¶ci (=). Poni¿ej podano przyk³ad : +

            Ju¿ wtedy gdy rozpoczynamy odkrywaæ czê¶ci naszego cia³a jako noworodki zostajemy studentami {=anatomii i fizjologii ~refleksologii ~nauki ~do¶wiadczenia}, i w pewnym sensie pozostajemy studentami przez ca³e ¿ycie.
            + +

            Wiêcej informacji:

            + +
          +

          AON

          +
            +

            Ten format jest identyczny z formatem Brakuj±ce S³owa, z t± ró¿nic±, ¿e po zaimportowaniu pytañ wszystkie pytania typu Krótka Odpowied¼ zmieniane s± czwórkami na pytania typu Dopasuj Odpowiedzi.

            + +

            Nazwa pochodzi od organizacji która sponsorowa³a rozwój wielu cech quizów

          + +

          Blackboard (Tablica)

          + +

            Ten modu³ umo¿liwia importowanie pytañ zapisanych w formacie eksportowym Blackboard. Polega on na umieszczaniu funkcji XML w twoim pliku PHP

            + +

            Wiêcej informacji:

          + +

          Niestandardowy

          +

            Je¶li masz swój w³asny format, który chcesz zaimportowaæ mo¿esz zaimplementowaæ ten proces samodzielnie edytuj±c mod/quiz/format/custom.php +

            Dodaæ musisz jedynie niewielk± ilo¶æ kodu - jedynie tyle ile potrzeba by wyró¿niæ pojedyncze pytanie z danego tekstu.

            + +

            Wiêcej informacji:

          + +

          Planowana jest obs³uga wiêkszej ilo¶ci formatów, wliczaj±c w to WebCT, IMS QTI i wszelkie inne formaty, które mog± dostarczyæ u¿ytkownicy Moodle!

          \ No newline at end of file diff --git a/lang/pl/help/quiz/index.html b/lang/pl/help/quiz/index.html index 6f2da8071f3..6f0f3d7be38 100644 --- a/lang/pl/help/quiz/index.html +++ b/lang/pl/help/quiz/index.html @@ -21,7 +21,7 @@
        3. Informacja zwrotna
        4. Tworzenie nowych pytañ
        5. Pytania wybierane losowo -
        6. Losowo wybierane pytania typu "Dopasuj odpowied¥", wybierane z puli pytañ do krótkiej odpowiedzi +
        7. Losowo wybierane pytania typu "Dopasuj odpowied¼", wybierane z puli pytañ do krótkiej odpowiedzi
        8. Pytania do krótkiej odpowiedzi
        9. Mieszanie kolejno¶ci odpowiedzi
        10. Mieszanie kolejno¶ci pytañ diff --git a/lang/pl/help/quiz/match.html b/lang/pl/help/quiz/match.html index 4968055e7ea..f66860f69fb 100644 --- a/lang/pl/help/quiz/match.html +++ b/lang/pl/help/quiz/match.html @@ -1,4 +1,4 @@ -

          Pytania typu "Dopasuj Odpowiedzi"

          -

          Po opcjonalnym wstêpie odpowiadaj±cy otrzymuje kilka pod-pytañ, oraz kilka wymieszanych odpowiedzi. Istnieje jedna prawid³owa odpowied¥ na ka¿de z pod-pytañ.

          -

          Odpowiadaj±cy musi wybraæ po jednej odpowiedzi do ka¿dego z pod-pytañ

          +

          Pytania typu "Dopasuj Odpowiedzi"

          +

          Po opcjonalnym wstêpie odpowiadaj±cy otrzymuje kilka pod-pytañ, oraz kilka wymieszanych odpowiedzi. Istnieje jedna prawid³owa odpowied¼ na ka¿de z pod-pytañ.

          +

          Odpowiadaj±cy musi wybraæ po jednej odpowiedzi do ka¿dego z pod-pytañ

          Ka¿de z pod-pytañ ma tak± sam± wagê w ostatecznej ocenie odpowiedzi na ca³e pytanie

          \ No newline at end of file diff --git a/lang/pl/help/quiz/maxgrade.html b/lang/pl/help/quiz/maxgrade.html index 2797a4ebea6..fe0c0cae372 100644 --- a/lang/pl/help/quiz/maxgrade.html +++ b/lang/pl/help/quiz/maxgrade.html @@ -1,7 +1,7 @@ -

          Ocena maksymalna

          - -

          Wszystkie oceny dostosowane s± proporcjonalnie do ustalonej przez Ciebie oceny maksymalnej za dany quiz. - -

          Przyk³adowo, mo¿esz ustaliæ, ¿e ocena maksymalna wynosi 20 poniewa¿ ocena za quiz stanowi 20% oceny za ca³y kurs. - +

          Ocena maksymalna

          + +

          Wszystkie oceny dostosowane s± proporcjonalnie do ustalonej przez Ciebie oceny maksymalnej za dany quiz. + +

          Przyk³adowo, mo¿esz ustaliæ, ¿e ocena maksymalna wynosi 20 poniewa¿ ocena za quiz stanowi 20% oceny za ca³y kurs. +

          Oznacza to, ¿e nawet je¿eli quiz sk³ada siê z 10 pytañ, za które mo¿na uzyskaæ ³±cznie 50 punktów, to wszystkie oceny zostan± proporcjonalnie przeskalowane w taki sposób, by maksymalna ocena za quiz wynios³a 20. \ No newline at end of file diff --git a/lang/pl/help/quiz/multianswer.html b/lang/pl/help/quiz/multianswer.html index 606eac87c94..34ae0dea3b7 100644 --- a/lang/pl/help/quiz/multianswer.html +++ b/lang/pl/help/quiz/multianswer.html @@ -15,7 +15,7 @@

          - - - - -

          Image to display:

          - - - - - - -

          Correct Answer Formula:

          - -    - - - - -

          Tolerance:

          - - ± - - - -

          Tolerance Type:

          - - - - - -

          Significant Figures:

          - - - - - - -
          -In the question text input and "Correct Answer Formula" {a} and {b} can be seen. These and any other {name} can be used as a wildcard that is substituted by some value when the quiz is taken. Also, the correct answer is calculated when the quiz is submitted using the expression in "Correct Answer Formula", which is calculated as a numerical expression after the substitution of the wildcards. The possible wildcard values are set or generated on a later page in "editing wizard" for calculated questions... -
          The example formula uses the operator +. Other accepted operators are -*/ and % where % is the modulo operator. It is also possible to use some PHP-style mathematical function. Among these there are 24 single-argument function:
          -abs, acos, acosh, asin, asinh, atan, atanh, ceil, cos, cosh, deg2rad, exp, expm1, floor, log, log10, log1p, rad2deg, round, sin, sinh, sprt, tan, tanh -
          and two two-argument functions
          -atan2, pow -
          and the functions min and max that can take two or more arguments. It is also possible to use the function pi that takes no arguments but do not forget the use the parentheses - the correct usage is pi(). Similarly the other function must have their argument(s) within parentheses. Possible usage is for example sin({a}) + cos({b}) * 2. It should not be any problem to wrap functions within each other like cos(deg2rad({a} + 90)) etc. -
          More details on how to use these PHP-style functions can be found in the documentation at the PHP web site -

          -As for numerical questions it is possible to allow a margin within which all responses are accepted as correct. The "Tolerance" field is used for this. However, there are three different types of tolerances. These are Relative, Nominal and Geometric. If we say that the correct answer at quiz time is calculated to 200 and the tolerance is set to 0.5 then the different tolerance types work like this: -

          Relative: A tolerance interval is calculated by multiplying the correct answer with 0.5, ie in this case we get 100 so for this tolerance the correct response must be between 100 and 300. (200 ± 100)
          -This is useful if the magnitude of the correct answer can differ greatly between different wildcard values. -

          Nominal: This is the simplest tolerance type but not very powerful. The correct response must be between 199.5 and 200.5 (200 ± 0.5)
          -This tolerance type can be useful if the differences between different correct answers are small. -

          Geometric: The upper limit of the tolerance interval is calculated as 200 + 0.5*200 and is the same as for the relative case. The lower limit is calculated as 200/(1 + 0.5). The correct response must then be between 133.33 and 300.
          -This is useful for complex calculation that must have great tolerances where relative tolerances of 1 or more would be used for the upper limit but clearly not acceptable for the lower limit as it would make zero a correct answer for all cases. -

          -The field Significant Figures does only relate to how the correct answer should be presented in the review or the reports. Examples: If it is set to 3 then the correct answer 13.333 would be presented as 13.3; 1236 would be presented as 1240; 23 would be presented as 23.0 etc. -

          -The feedback field and the optional unit fields work just like they do for numerical questions. -
          \ No newline at end of file diff --git a/lang/sv/help/quiz/categories.html b/lang/sv/help/quiz/categories.html index 3a0231cf5a5..f6be975b462 100644 --- a/lang/sv/help/quiz/categories.html +++ b/lang/sv/help/quiz/categories.html @@ -1,18 +1,21 @@ -

          Kategorier av frågor

          +

          Kategorier av frågor

          -

          Det är bättre att skapa kategorier att förvara alla Dina frågor i än att ha dem i - en enda lång lista.

          - -

          Varje kategori består av ett namn och en kort beskrivning.

          - -

          Du kan även "publicera" varje kategori. Det innebär att kategorin (med alla de frågor som ingår) -kommer att vara tillgänglig för alla kurser på den här servern så att andra kurser kan använda Dina frågor i sina test.

          - -

          Du kan också skapa kategorier eller ta bort dem som Du vill. -Om Du försöker ta bort en kategori som innehåller frågor kommer Du att få en fråga om Du vill flytta frågorna till en annan kategori.

          - -

          Du kan också arrangera kategorier i en hierarki så att det blir lättare att hantera -dem. Fältet 'Flytta kategori till' låter Dig flytta en kategori till en annan kategori.

          - -

          Genom att klicka på pilarna i fältet 'Ordna' kan Du ändra på den ordning enligt vilken -kategorierna är listade.

          \ No newline at end of file +

          +Hellre än att ha alla Dina frågor i en enda lång +lista så kan Du skapa olika kategorier som Du kan dela upp frågorna i. +

          +

          +Varje kategori består av ett namn och en kort beskrivning. +

          +

          +Varje kategori kan också 'publiceras', vilket betyder att +kategorin (och alla frågor i den) kommer att vara tillgänglig +för alla kurser på denna server, så att andra kurser kan +använda Dina frågor i sina test. +

          +

          +Kategorier kan också skapas eller tas bort om man vill. + Men om Du försöker att ta bort en kategori som innehåller +frågor så kommer Du att bli ombedd att ange en annan kategori +som Du vill flytta dem till. +

          diff --git a/lang/sv/help/quiz/correctanswers.html b/lang/sv/help/quiz/correctanswers.html index 39294252bf7..699d88d24aa 100644 --- a/lang/sv/help/quiz/correctanswers.html +++ b/lang/sv/help/quiz/correctanswers.html @@ -1,4 +1,7 @@

          Visa de rätta svaren

          -

          Om Du aktiverar 'rätt svar' så kommer återkopplingen + +

          +Om Du aktiverar 'rätt svar' så kommer återkopplingen också att visa rätt svar på varje fråga (markerad med -en klar färg).

          \ No newline at end of file +en klar färg). +

          diff --git a/lang/sv/help/quiz/createmultiple.html b/lang/sv/help/quiz/createmultiple.html index fe76db76954..1107f3670d5 100644 --- a/lang/sv/help/quiz/createmultiple.html +++ b/lang/sv/help/quiz/createmultiple.html @@ -1,6 +1,14 @@

          Skapa flera frågor

          -

          Den här sidan låter Dig skapa flera frågor samtidigt.

          -

          F.n. kan Du bara skapa ett antal slumpade frågor och (som ett -alternativ) lägga till dem till det aktuella testet.

          -

          Så småningom kommer den här sidan att utvecklas -och innehålla fler alternativ.

          \ No newline at end of file + +

          +Den här sidan låter Dig skapa flera frågor samtidigt. +

          + +

          +F n kan Du bara skapa ett antal slumpade frågor och (som ett +alternativ) lägga till dem till det aktuella testet. +

          + +

          +Så småningom kommer den här sidan att utvecklas +och innehålla fler alternativ.

          diff --git a/lang/sv/help/quiz/decimalpoints.html b/lang/sv/help/quiz/decimalpoints.html deleted file mode 100644 index 16cee166e29..00000000000 --- a/lang/sv/help/quiz/decimalpoints.html +++ /dev/null @@ -1,4 +0,0 @@ -

          Decimalpoäng

          - -

          Genom att använda den här inställningen kan Du ange antalet decimaler som -ska visas i betyget/omdömet för varje försök.

          \ No newline at end of file diff --git a/lang/sv/help/quiz/description.html b/lang/sv/help/quiz/description.html index 9b25e37c3bc..75b2c6fa53b 100644 --- a/lang/sv/help/quiz/description.html +++ b/lang/sv/help/quiz/description.html @@ -1,6 +1,14 @@

          Beskrivning

          -

          Den här frågetypen är egentligen inte en fråga.

          -

          Det enda den gör är att skriva ut lite text -utan att efterfråga några svar.

          -

          Du kan använda den till att skriva ut en beskrivande text -som kan användas med en efterföljande grupp av frågor.

          \ No newline at end of file + +

          +Den här frågetypen är egentligen inte en fråga. +

          +

          +Det enda den gör är att skriva ut lite text +utan att efterfråga några svar. +

          + +

          +Du kan använda den till att skriva ut en beskrivande text +som kan användas med en efterföljande grupp av frågor. +

          diff --git a/lang/sv/help/quiz/discrimination.html b/lang/sv/help/quiz/discrimination.html index bf759262ea2..5e682776126 100644 --- a/lang/sv/help/quiz/discrimination.html +++ b/lang/sv/help/quiz/discrimination.html @@ -1,12 +1,18 @@

          Index för diskriminering

          -

          Detta ger i grova drag en indikator på prestanda hos varje testkomponent. + +

          +Detta ger i grova drag en indikator på prestanda hos varje testkomponent. Det beräknas genom att man räknar antalet studenter/elever/deltagare/lärande som hör till den tredjedel som har lyckats bäst på det här testet och sedan dividerar man det med antalet studenter/elever/deltagare/lärande som hör till den tredjedel som har lyckats sämst.

          +

          Om till exempel 30 studenter/elever/deltagare/lärande har gjort testet så skulle det finnas tio i den översta tredjedelen och tio i den nedre. Om nio av de bästa har fått rätt (på testkomponent 1) men bara tre av de sämsta så skulle index för diskriminering bli 9/3 = 3.0. Siffran i parentesen är:(övre tredjedelen rätt svar dividerat med nedre tredjedelen rätt svar).

          +

          Om index understiger 1.0 så betyder det att fler av de svagare fick rätt på testkomponenten än de starkare. Sådana testkomponenter bör betraktas som värdelösa. Faktum är att de minskar precisionen i det övergripande utfallet av testet.

          +

          Om inga av de svagare fick rätt på testkomponenten så skulle "denominatorn" få ett oändligt utfall. -Programmet byter ut en '10' för varje sådan testkomponent.

          \ No newline at end of file +Programmet byter ut en '10' för varje sådan testkomponent.

          + diff --git a/lang/sv/help/quiz/eachattemptbuildsonthelast.html b/lang/sv/help/quiz/eachattemptbuildsonthelast.html index 1596a3fbb24..628195d20ed 100644 --- a/lang/sv/help/quiz/eachattemptbuildsonthelast.html +++ b/lang/sv/help/quiz/eachattemptbuildsonthelast.html @@ -1,8 +1,11 @@

          Varje försök bygger på det senaste

          -

          Om Du har valt att tillåta upprepade försök och den här alternativet + +

          +Om Du har valt att tillåta upprepade försök och den här alternativet är ställt till Ja, då kommer varje nytt försök att innehålla resultatet från det föregående försöket. Det gör att man kan fullfölja testet genom att försöka tills man klarar det.

          -

          För att visa en ny fråga efter varje försök så får Du välja - Nej för det här alternativet.

          \ No newline at end of file +

          +För att visa en ny fråga efter varje försök så får Du välja + Nej för det här alternativet.

          diff --git a/lang/sv/help/quiz/export.html b/lang/sv/help/quiz/export.html index 7dc8b16b648..055327142dc 100644 --- a/lang/sv/help/quiz/export.html +++ b/lang/sv/help/quiz/export.html @@ -1,10 +1,13 @@

          Att exportera frågor från en kategori

          -

          Den här funktionen gör det möjligt för Dig att exportera en komplett kategori av frågor till en textfil.

          + +

          Den här funktionen gör det möjligt för Dig att exportera en komplett kategoi av frågor +till en textfil. +

          Lägg dock märke till att i många filformat är det så att viss information försvinner när man exporterar frågorna. Det beror på att det finns många format som inte stödjer alla de finesser som man kan använda i Moodle-frågor. -Du bör inte förvänta Dig att kunna exportera och importera frågor -samtidigt som Du bevarar dem i exakt samma format. +Du bör inte förvänta Dig att kunna exportera och importera frågor samtidigt som +Du bevarar dem i exakt samma format. Vissa typer av frågor kanske inte går att exportera alls. Du bör alltså testa exporterade frågor innan Du använder dem i en skarp produktionsmiljö.

          @@ -13,7 +16,7 @@ i en skarp produktionsmiljö.

          GIFT-formatet

            -
          • GIFT är det mest heltäckande import- och exportformatet som finns när det gäller att +

            GIFT är det mest heltäckande import- och exportformatet som finns när det gäller att exportera testfrågor av Moodle-typ till en textfil. Man har utformat det så att det ska vara en enkel metod för lärare att skriva frågor som en textfil. Det stödjer flervalsfrågor, frågor av typen Sant-Falskt, kortsvar, para-ihop och numeriska frågor. @@ -21,7 +24,7 @@ Det stödjer även test av typen: Vilket är det ord som saknas? L&a inte stödjs. Olika frågetyper kan blandas i en enda textfil. Formatet stödjer även kommentarer till rader, namn på frågor och procentviktade betyg/omdömen.

            -Nedan kommer några exempel: +Nedan kommer några exempel:

             Vem är begravd i "Grant's tomb"?{~Grant ~Jefferson =ingen}
             
            @@ -31,7 +34,9 @@ Grant är begravd i "Grant's tomb".{FALSE}
             Vem är begravd i "Grant's tomb"?{=ingen =ingen alls}
             
             När föddes Ulysses S. Grant?{#1822}
            -
          • +
        11. + +

          Mer info om "GIFT"-formatet

          -

          Mer info om "GIFT"-formatet

          -

          Fler format kommer att tillkomma, inklusive WebCT, IMS QTI och vad helst annat som Moodle-användare kan komma att bidra med!

          \ No newline at end of file + +

          Fler format kommer att tillkomma, inklusive WebCT, IMS QTI och vad helst annat som Moodle-användare kan komma att bidra med!

          diff --git a/lang/sv/help/quiz/feedback.html b/lang/sv/help/quiz/feedback.html index 29ae5fdd5d5..845e469f8e0 100644 --- a/lang/sv/help/quiz/feedback.html +++ b/lang/sv/help/quiz/feedback.html @@ -1,4 +1,8 @@

          Återkoppling

          -

          Om Du aktiverar återkoppling på testet så kommer -studenterna/eleverna/deltagarna/de lärande att få återkoppling -(rätt eller fel) på vart och ett av sina svar.

          \ No newline at end of file + +

          +Om Du aktiverar återkoppling på testet så kommer +studenterna/eleverna/deltagarna/de lärande att få återkoppling +(rätt eller fel) på vart och ett av sina svar. +

          + diff --git a/lang/sv/help/quiz/formataiken.html b/lang/sv/help/quiz/formataiken.html index 68f85d04625..af7899f6235 100644 --- a/lang/sv/help/quiz/formataiken.html +++ b/lang/sv/help/quiz/formataiken.html @@ -1,4 +1,5 @@

          Att importera filer i "Aiken"-format

          +

          Aiken-formatet är ett mycket enkelt sätt att skapa flervalsfrågor genom att använda ett format som är klart läsbart för människor. @@ -26,4 +27,4 @@ SVAR: A

          Hela frågan måste vara på en rad.

          Varje svar måste inledas med ett enda enskilt tecken (en bokstav, en siffra) åtföljt av en punkt '.' eller en högerparentes ')', och sedan ett mellanslag

          -

          Svarsraden måste komma omedelbart efter och inledas med "SVAR:". Sedan ska det aktuella tecknet för det korrekta svaret komma.

          \ No newline at end of file +

          Svarsraden måste komma omedelbart efter och inledas med "SVAR:". Sedan ska det aktuella tecknet för det korrekta svaret komma.

          diff --git a/lang/sv/help/quiz/formatblackboard.html b/lang/sv/help/quiz/formatblackboard.html index e0972b46785..8ce952fc0cf 100644 --- a/lang/sv/help/quiz/formatblackboard.html +++ b/lang/sv/help/quiz/formatblackboard.html @@ -1,2 +1,3 @@

          Att importera filer i "testformat för Blackboard"

          -

          Dokumentation för detta är inte klar.

          \ No newline at end of file + +

          Dokumentation för detta är inte klar.

          diff --git a/lang/sv/help/quiz/formatcustom.html b/lang/sv/help/quiz/formatcustom.html index c62e79f8f0b..f173c3c3509 100644 --- a/lang/sv/help/quiz/formatcustom.html +++ b/lang/sv/help/quiz/formatcustom.html @@ -1,2 +1,3 @@

          Att importera filer i specialtillverkade format

          -

          Dokumentation för detta är inte klar.

          \ No newline at end of file + +

          Dokumentation för detta är inte klar.

          diff --git a/lang/sv/help/quiz/formatmissingword.html b/lang/sv/help/quiz/formatmissingword.html index e4d7107e268..58ddb1d6ab4 100644 --- a/lang/sv/help/quiz/formatmissingword.html +++ b/lang/sv/help/quiz/formatmissingword.html @@ -1,2 +1,3 @@

          Att importera filer i formatet "Ord saknas"

          -

          Dokumentation för detta är inte klar.

          \ No newline at end of file + +

          Dokumentation för detta är inte klar.

          diff --git a/lang/sv/help/quiz/grademethod.html b/lang/sv/help/quiz/grademethod.html index 9d6c345afe3..9bde1b612ea 100644 --- a/lang/sv/help/quiz/grademethod.html +++ b/lang/sv/help/quiz/grademethod.html @@ -1,25 +1,31 @@

          Metoder för betygssättning

          -

          När det är tillåtet med upprepade försök så finns + +

          +När det är tillåtet med upprepade försök så finns det olika sätt som Du kan använda för att beräkna studentens/elevens/deltagarens/den lärandes -slutbetyg/omdöme på testet.

          +slutbetyg/omdöme på testet. +

          Högsta betyget/omdömet

          • Slutbetyget/omdömet är det högsta (bästa) av samtliga försök.
          -

          Genomsnittsligt (medel)betyg/omdöme

          + +

          Genomsnittsligt (medel)betyg/omdöme

          • Slutbetyget/omdömet är medelbetyget beräknat på alla försök.
          -

          Det första betyget/omdömet

          + +

          Det första betyget/omdömet

          • Slutbetyget/omdömet är det som har uppnåtts på det första försöket (de övriga räknas inte).
          -

          Det sista betyget/omdömet

          + +

          Det sista betyget/omdömet

          • Slutbetyget/omdömet är enbart det som har uppnåtts på det senaste försöket.
          • -
          \ No newline at end of file + diff --git a/lang/sv/help/quiz/import.html b/lang/sv/help/quiz/import.html index 0a012e076d2..787daffe3f0 100644 --- a/lang/sv/help/quiz/import.html +++ b/lang/sv/help/quiz/import.html @@ -1,7 +1,12 @@

          Att importera nya frågor

          -

          Den här funktionen låter Dig importera frågor från -externa textfiler som har laddats upp via ett formulär.

          -

          Det finns ett antal olika filformat som Du kan använda: + +

          +Den här funktionen låter Dig importera frågor från +externa textfiler som har laddats upp via ett formulär. +

          +

          +Det finns ett antal olika filformat som Du kan använda: +

          Utelämnade ord

          • @@ -21,6 +26,7 @@ så blir studenter/elever/lärande i ämnena

            Mer info om formatet "Utelämnade ord"

            +

            AON

            • @@ -38,6 +44,7 @@ av många egenskaper i testfunktioner av det här slaget.
            +

            Blackboard

            • @@ -67,4 +74,4 @@ Mer info om "Egentillverkade" format

              Fler format kommer att finnas så småningom, WebCT, IMS QTI och vad som helst annat som Moodle-användare kan komma att bidra med! -

              \ No newline at end of file +

              diff --git a/lang/sv/help/quiz/index.html b/lang/sv/help/quiz/index.html index 34de6122138..b098d8e9874 100644 --- a/lang/sv/help/quiz/index.html +++ b/lang/sv/help/quiz/index.html @@ -1,56 +1,37 @@

              Test (standardmodul)

              - -Allmänt - Frågetyper - - Återkoppling - - - Betyg/omdömen - - - Försök - - - Att importera och exportera frågor - - - Tidsbegränsning av test - - - Begränsa tillgång till test - \ No newline at end of file diff --git a/lang/sv/help/quiz/match.html b/lang/sv/help/quiz/match.html index 53aa0c9cb60..70a9cfbd885 100644 --- a/lang/sv/help/quiz/match.html +++ b/lang/sv/help/quiz/match.html @@ -1,9 +1,15 @@

              Para-ihop-frågor

              -

              Efter en valfri introduktion så får användaren se + +

              +Efter en valfri introduktion så får användaren se ett flertal delfrågor och ett flertal blandade (slumpmässigt ordnade) svar. -Det finns bara ett korrekt svar för varje fråga.

              -

              Användaren måste välja ett svar och para ihop det med varje +Det finns bara ett korrekt svar för varje fråga. +

              +

              +Användaren måste välja ett svar och para ihop det med varje delfråga.

              -

              Varje delfråga viktas lika när det gäller dess bidrag till +

              +Varje delfråga viktas lika när det gäller dess bidrag till det samlade betyget för hela frågan. -

              \ No newline at end of file +

              + diff --git a/lang/sv/help/quiz/maxgrade.html b/lang/sv/help/quiz/maxgrade.html index 71bc090b250..e6bb4b4bce1 100644 --- a/lang/sv/help/quiz/maxgrade.html +++ b/lang/sv/help/quiz/maxgrade.html @@ -1,10 +1,17 @@

              Maxbetyg

              -

              Maxbetyget som Du anger för ett test + +

              +Maxbetyget som Du anger för ett test är den del som detta utgör av det samlade -kursbetyget.

              -

              Du kan t ex ange maxbetyget till 20 om -testet är värt 20% av betyget för hela kursen.

              -

              Även om Du skulle ha 10 frågor i Ditt test +kursbetyget. +

              +

              +Du kan t ex ange maxbetyget till 20 om +testet är värt 20% av betyget för hela kursen. +

              +

              +Även om Du skulle ha 10 frågor i Ditt test som är värda totalt 50 poäng så kommer detta att skalas ner till maxbetyget 20 för testet -som del av kursbetyget.

              \ No newline at end of file +som del av kursbetyget. +

              \ No newline at end of file diff --git a/lang/sv/help/quiz/mods.html b/lang/sv/help/quiz/mods.html index 287f7ae8ef5..2486a6b2ca7 100644 --- a/lang/sv/help/quiz/mods.html +++ b/lang/sv/help/quiz/mods.html @@ -1,5 +1,6 @@ -

               Test

              -

              Den här modulen gör det möjligt för (distans)-läraren att +

               Test

              +
                +Den här modulen gör det möjligt för (distans)läraren att utforma test som kan innehålla flervalsfrågor, sant-falskt, och kortsvars-frågor.

                @@ -11,4 +12,5 @@ För varje försök räknas resultatet fram och distanslära kan välja att lämna återkoppling eller att visa de rätta svaren.

                Testen i den här modulen kan bedömas/värderas/betygssättas. -

                \ No newline at end of file +
              + diff --git a/lang/sv/help/quiz/multianswer.html b/lang/sv/help/quiz/multianswer.html index c40b24d0dc0..5cc7aeab4d3 100644 --- a/lang/sv/help/quiz/multianswer.html +++ b/lang/sv/help/quiz/multianswer.html @@ -1,17 +1,25 @@

              Inbäddade svar (en sorts lucktest)

              -

              Det här är ett mycket flexibelt format -som motsvarar det populära lucktestet.

              -

              Frågorna består av ett stycke text (i Moodle-format). + +

              +Det här är ett mycket flexibelt format +som motsvarar det populära lucktestet. +

              +

              +Frågorna består av ett stycke text (i Moodle-format). I texten finns olika svar inbäddade. Det kan vara svar på flervalsfrågor, -kortsvar och numeriska svar.

              -

              F n finns inget grafiskt gränssnitt för att skapa dessa +kortsvar och numeriska svar. +

              +

              +F n finns inget grafiskt gränsnitt för att skapa dessa frågor. Istället måste Du ange frågeformatet -genom att använda en textbox eller importera dem från externa filer.

              -

              Här är ett exempel på en inmatad text som har använts -för att ange en sådan fråga:

              - +genom att använda en textbox eller importera dem från externa filer. +

              +

              +Här är ett exempel på en inmatad text som har använts +för att ange en sådan fråga: +

              -'; } else { - $goodStr[$z] = str_replace(' ', ' ', $goodStr[$z] ); + + $goodStr[$z] = preg_replace( "/\s+/", ' ', $goodStr[$z] ); + } } + $badStr[$x] = implode('',$goodStr); + } } @@ -131,8 +122,8 @@ function html2text( $badStr ) { $goodStr = preg_replace( "/<(th|td)[^>]*>/i", "\t", $goodStr ); - // $goodStr = preg_replace( "/]* href=(\"((?!\"|#|javascript:)[^\"#]*)(\"|#)|'((?!'|#|javascript:)[^'#]*)('|#)|((?!'|\"|>|#|javascript:)[^#\"'> ]*))[^>]*>/i", "[LINK: $2$4$6] ", $goodStr ); // Moodle - $goodStr = preg_replace( "/]* href=(\"((?!\"|#|javascript:)[^\"#]*)(\"|#)|'((?!'|#|javascript:)[^'#]*)('|#)|((?!'|\"|>|#|javascript:)[^#\"'> ]*))[^>]*>([^<]*)<\/a>/i", "$7 [$2$4$6]", $goodStr ); + // $goodStr = preg_replace( "/]* href=(\"((?!\"|#|javascript:)[^\"#]*)(\"|#)|'((?!'|#|javascript:)[^'#]*)('|#)|((?!'|\"|>|#|javascript:)[^#\"'> ]*))[^>]*>/i", "[LINK: $2$4$6] ", $goodStr ); // Moodle + $goodStr = preg_replace( "/]* href=(\"((?!\"|#|javascript:)[^\"#]*)(\"|#)|'((?!'|#|javascript:)[^'#]*)('|#)|((?!'|\"|>|#|javascript:)[^#\"'> ]*))[^>]*>/i", "[$2$4$6] ", $goodStr ); // $goodStr = preg_replace( "/]* alt=(\"([^\"]+)\"|'([^']+)'|([^\"'> ]+))[^>]*>/i", "[IMAGE: $2$3$4] ", $goodStr ); // Moodle $goodStr = preg_replace( "/]* alt=(\"([^\"]+)\"|'([^']+)'|([^\"'> ]+))[^>]*>/i", "[$2$3$4] ", $goodStr ); @@ -154,15 +145,11 @@ function html2text( $badStr ) { //wordwrap // $goodStr = wordwrap( $goodStr ); // Moodle - $goodStr = wordwrap( $goodStr, 78 ); + $goodStr = wordwrap( $goodStr, 70 ); //make sure there are no more than 3 linebreaks in a row and trim whitespace - $goodStr = preg_replace("/\r\n?|\f/", "\n", $goodStr); - $goodStr = preg_replace("/\n(\s*\n){2}/", "\n\n\n", $goodStr); - $goodStr = preg_replace("/[ \t]+(\n|$)/", "$1", $goodStr); - $goodStr = preg_replace("/^\n*|\n*$/", '', $goodStr); - return $goodStr; + return preg_replace( "/^\n*|\n*$/", '', preg_replace( "/[ \t]+(\n|$)/", "$1", preg_replace( "/\n(\s*\n){2}/", "\n\n\n", preg_replace( "/\r\n?|\f/", "\n", str_replace( chr(160), ' ', $goodStr ) ) ) ) ); } diff --git a/lib/ipatlas/ip-atlas_prefs.php b/lib/ipatlas/ip-atlas_prefs.php index 8c752ae0aa7..99066bbdff4 100644 --- a/lib/ipatlas/ip-atlas_prefs.php +++ b/lib/ipatlas/ip-atlas_prefs.php @@ -3,14 +3,10 @@ include("plotconf.inc"); include("plot.inc"); -if($CFG->debug > 1) { - error_reporting(E_ALL); +if($warnings == "1") { +error_reporting(E_ALL); } else { - error_reporting(E_ERROR); -} - -if (isset($HTTP_GET_VARS["lastquery"])){ - $HTTP_GET_VARS["lastquery"] = clean_param($HTTP_GET_VARS["lastquery"], PARAM_HOST); +error_reporting(E_ERROR); } ?> @@ -23,33 +19,17 @@ if (isset($HTTP_GET_VARS["lastquery"])){ } if(isset($HTTP_POST_VARS["button"])) { - -// cleanup post data -$HTTP_POST_VARS["shape"] = clean_param($HTTP_POST_VARS["shape"], PARAM_ALPHA); -$HTTP_POST_VARS["color"] = clean_param($HTTP_POST_VARS["color"], PARAM_ALPHA); -$HTTP_POST_VARS["color"] = clean_param($HTTP_POST_VARS["size"], PARAM_INT); -$HTTP_POST_VARS["earthimage"] = clean_param($HTTP_POST_VARS["earthimage"], PARAM_FILE); -$HTTP_POST_VARS["cssdot"] = clean_param($HTTP_POST_VARS["cssdot"], PARAM_FILE); -$HTTP_POST_VARS["seldrawmode"] = clean_param($HTTP_POST_VARS["seldrawmode"],PARAM_ALPHA); -// unset the earth image if we don't have it in our list - if (!in_array($HTTP_POST_VARS["earthimage"],$earthimages)) { - unset($HTTP_POST_VARS["earthimage"]); - } - - // save data from the POST setcookie ("atlasprefs", "", time() - 36000000); setcookie ("atlasprefs", "$HTTP_POST_VARS[shape]:$HTTP_POST_VARS[color]:$HTTP_POST_VARS[size]:$HTTP_POST_VARS[earthimage]:$HTTP_POST_VARS[cssdot]:$HTTP_POST_VARS[seldrawmode]", time() + 36000000, $cookiepath); -$setshape = $HTTP_POST_VARS["shape"]; -$setcolor = $HTTP_POST_VARS["color"]; -$setsize = $HTTP_POST_VARS["size"]; +$setshape = $HTTP_POST_VARS["shape"]; +$setcolor = $HTTP_POST_VARS["color"]; +$setsize = $HTTP_POST_VARS["size"]; $setearthimage = $HTTP_POST_VARS["earthimage"]; -$setcssdot = $HTTP_POST_VARS["cssdot"]; +$setcssdot = $HTTP_POST_VARS["cssdot"]; $setseldrawmode = $HTTP_POST_VARS["seldrawmode"]; - - if($setseldrawmode == "1") { $drawmode = "GD"; } else { @@ -93,22 +73,22 @@ if(shouldrun($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) { -

              +

              ">"."

              "; +print t("Your settings have been saved. You can now try"); ?>
              ">"."

              "; } ?> -" method="POST"> +" method="POST"> "; if(!isset($setseldrawmode)) { if(shouldrun($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) { @@ -126,7 +106,7 @@ if($setseldrawmode == "1") { echo "
              -[ "> ]

              +[ "> ]

              diff --git a/lib/ipatlas/languages/messages.blank.inc b/lib/ipatlas/languages/messages.blank.inc index 11a5f78b550..90032c390ef 100644 --- a/lib/ipatlas/languages/messages.blank.inc +++ b/lib/ipatlas/languages/messages.blank.inc @@ -1,4 +1,4 @@ -debug > 1) { +if($warnings == "1") { error_reporting(E_ALL); } else { error_reporting(E_ERROR); } -// cleanup -if (isset($HTTP_GET_VARS["lastquery"])) { - $HTTP_GET_VARS["lastquery"] = clean_param($HTTP_GET_VARS["lastquery"], PARAM_HOST); -} - // check if it is the user's ip, or another host if(!isset($HTTP_GET_VARS["address"]) || ($HTTP_GET_VARS["address"] == "")) { $address = $HTTP_SERVER_VARS['REMOTE_ADDR']; $local = 1; } else { - $HTTP_GET_VARS["address"] = clean_param($HTTP_GET_VARS["address"], PARAM_HOST); $address = $HTTP_GET_VARS["address"]; $local = 0; } @@ -44,7 +38,6 @@ if(isset($logging) && is_writable("plotlog.txt")) { if(isset($HTTP_COOKIE_VARS["atlasprefs"]) && validcookie($HTTP_COOKIE_VARS["atlasprefs"])) { list( , , , $imagething) = split(":", $HTTP_COOKIE_VARS["atlasprefs"]); -$imagething = clean_param($imagething, PARAM_FILE); $earthimage = isvalidimage($imagething, $earthimages, $defaultimage); } else { $earthimage = $earthimages[$defaultimage]; @@ -71,12 +64,10 @@ list($x, $y) = getlocationcoords($values["lat"], $values["lon"], $width, $height if(isset($HTTP_COOKIE_VARS["atlasprefs"])) { list( , , , , $dotname) = split(":", $HTTP_COOKIE_VARS["atlasprefs"]); -$dotname = clean_param($dotname, PARAM_FILE); list($thedot, $dotwidth, $dotheight) = finddot($dotname, $cssdots, $defaultdot); } else { $dotname = $cssdots[$defaultdot]; list($dotname, , , ) = split(":", $dotname); -$dotname = clean_param($dotname, PARAM_FILE); list($thedot, $dotwidth, $dotheight) = finddot($dotname, $cssdots, $defaultdot); } @@ -97,7 +88,7 @@ $display = "
              \"\""; +$display = ""; } @@ -118,17 +109,17 @@ print '
              '.$display.'
              -
              +
              '; if(isset($address)) { print "$username $values[desc]"; } -$PHP_SELF = 'plot.php'; +$PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF']; print ' -

              +

              ', $text); + $parts = explode('',$text); foreach ($parts as $key => $val) { $parts[$key] = trim(strip_tags($val)); } - if ($parts[0] == 'GD Version') { - if (substr_count($parts[1], '2.0')) { - $parts[1] = '2.0'; + if ($parts[0] == "GD Version") { + if (substr_count($parts[1], "2.0")) { + $parts[1] = "2.0"; } $gdversion = intval($parts[1]); } @@ -4865,34 +2498,27 @@ function check_gd_version() { return $gdversion; // 1, 2 or 0 } -/** - * Determine if moodle installation requires update - * - * Checks version numbers of main code and all modules to see - * if there are any mismatches - * - * @uses $CFG - * @return boolean - * @todo Finish documenting this function - */ + function moodle_needs_upgrading() { +/// Checks version numbers of Main code and all modules to see +/// if there are any mismatches ... returns true or false global $CFG; - include_once($CFG->dirroot .'/version.php'); # defines $version and upgrades + include_once("$CFG->dirroot/version.php"); # defines $version and upgrades if ($CFG->version) { if ($version > $CFG->version) { return true; } - if ($mods = get_list_of_plugins('mod')) { + if ($mods = get_list_of_plugins("mod")) { foreach ($mods as $mod) { - $fullmod = $CFG->dirroot .'/mod/'. $mod; + $fullmod = "$CFG->dirroot/mod/$mod"; unset($module); - if (!is_readable($fullmod .'/version.php')) { - notify('Module "'. $mod .'" is not readable - check permissions'); + if (!is_readable("$fullmod/version.php")) { + notify("Module '$mod' is not readable - check permissions"); continue; } - include_once($fullmod .'/version.php'); # defines $module with version etc - if ($currmodule = get_record('modules', 'name', $mod)) { + include_once("$fullmod/version.php"); # defines $module with version etc + if ($currmodule = get_record("modules", "name", $mod)) { if ($module->version > $currmodule->version) { return true; } @@ -4908,17 +2534,10 @@ function moodle_needs_upgrading() { /// MISCELLANEOUS //////////////////////////////////////////////////////////////////// -/** - * Notify admin users or admin user of any failed logins (since last notification). - * - * @uses $CFG - * @uses $db - * @uses HOURSECS - * @todo Finish documenting this function. Add long description with more detail on what it does. - */ function notify_login_failures() { global $CFG, $db; + // notify admin users or admin user of any failed logins (since last notification). switch ($CFG->notifyloginfailures) { case 'mainadmin' : $recip = array(get_admin()); @@ -4927,51 +2546,51 @@ function notify_login_failures() { $recip = get_admins(); break; } - + if (empty($CFG->lastnotifyfailure)) { $CFG->lastnotifyfailure=0; } - - // we need to deal with the threshold stuff first. + + // we need to deal with the threshold stuff first. if (empty($CFG->notifyloginthreshold)) { $CFG->notifyloginthreshold = 10; // default to something sensible. } - $notifyipsrs = $db->Execute('SELECT ip FROM '. $CFG->prefix .'log WHERE time > '. $CFG->lastnotifyfailure .' - AND module=\'login\' AND action=\'error\' GROUP BY ip HAVING count(*) > '. $CFG->notifyloginthreshold); - - $notifyusersrs = $db->Execute('SELECT info FROM '. $CFG->prefix .'log WHERE time > '. $CFG->lastnotifyfailure .' - AND module=\'login\' AND action=\'error\' GROUP BY info HAVING count(*) > '. $CFG->notifyloginthreshold); + $notifyipsrs = $db->Execute("SELECT ip FROM {$CFG->prefix}log WHERE time > {$CFG->lastnotifyfailure} + AND module='login' AND action='error' GROUP BY ip HAVING count(*) > $CFG->notifyloginthreshold"); + $notifyusersrs = $db->Execute("SELECT info FROM {$CFG->prefix}log WHERE time > {$CFG->lastnotifyfailure} + AND module='login' AND action='error' GROUP BY info HAVING count(*) > $CFG->notifyloginthreshold"); + if ($notifyipsrs) { $ipstr = ''; while ($row = $notifyipsrs->FetchRow()) { - $ipstr .= "'". $row['ip'] ."',"; + $ipstr .= "'".$row['ip']."',"; } $ipstr = substr($ipstr,0,strlen($ipstr)-1); } if ($notifyusersrs) { $userstr = ''; while ($row = $notifyusersrs->FetchRow()) { - $userstr .= "'". $row['info'] ."',"; + $userstr .= "'".$row['info']."',"; } $userstr = substr($userstr,0,strlen($userstr)-1); } if (strlen($userstr) > 0 || strlen($ipstr) > 0) { $count = 0; - $logs = get_logs('time > '. $CFG->lastnotifyfailure .' AND module=\'login\' AND action=\'error\' ' - .((strlen($ipstr) > 0 && strlen($userstr) > 0) ? ' AND ( ip IN ('. $ipstr .') OR info IN ('. $userstr .') ) ' - : ((strlen($ipstr) != 0) ? ' AND ip IN ('. $ipstr .') ' : ' AND info IN ('. $userstr .') ')), 'l.time DESC', '', '', $count); - + $logs = get_logs("time > {$CFG->lastnotifyfailure} AND module='login' AND action='error' " + .((strlen($ipstr) > 0 && strlen($userstr) > 0) ? " AND ( ip IN ($ipstr) OR info IN ($userstr) ) " + : ((strlen($ipstr) != 0) ? " AND ip IN ($ipstr) " : " AND info IN ($userstr) ")),"l.time DESC","","",$count); + // if we haven't run in the last hour and we have something useful to report and we are actually supposed to be reporting to somebody - if (is_array($recip) and count($recip) > 0 and ((time() - HOURSECS) > $CFG->lastnotifyfailure) + if (is_array($recip) and count($recip) > 0 and ((time() - (60 * 60)) > $CFG->lastnotifyfailure) and is_array($logs) and count($logs) > 0) { - + $message = ''; $site = get_site(); - $subject = get_string('notifyloginfailuressubject', '', $site->fullname); - $message .= get_string('notifyloginfailuresmessagestart', '', $CFG->wwwroot) + $subject = get_string('notifyloginfailuressubject','',$site->fullname); + $message .= get_string('notifyloginfailuresmessagestart','',$CFG->wwwroot) .(($CFG->lastnotifyfailure != 0) ? '('.userdate($CFG->lastnotifyfailure).')' : '')."\n\n"; foreach ($logs as $log) { $log->time = userdate($log->time); @@ -4979,33 +2598,24 @@ function notify_login_failures() { } $message .= "\n\n".get_string('notifyloginfailuresmessageend','',$CFG->wwwroot)."\n\n"; foreach ($recip as $admin) { - mtrace('Emailing '. $admin->username .' about '. count($logs) .' failed login attempts'); + mtrace("Emailing $admin->username about ".count($logs)." failed login attempts"); email_to_user($admin,get_admin(),$subject,$message); } - $conf->name = 'lastnotifyfailure'; + $conf->name = "lastnotifyfailure"; $conf->value = time(); - if ($current = get_record('config', 'name', 'lastnotifyfailure')) { + if ($current = get_record("config", "name", "lastnotifyfailure")) { $conf->id = $current->id; - if (! update_record('config', $conf)) { - mtrace('Could not update last notify time'); + if (! update_record("config", $conf)) { + mtrace("Could not update last notify time"); } - } else if (! insert_record('config', $conf)) { - mtrace('Could not set last notify time'); + } else if (! insert_record("config", $conf)) { + mtrace("Could not set last notify time"); } } } } -/** - * moodle_setlocale - * - * @uses $CFG - * @uses $USER - * @uses $SESSION - * @param string $locale ? - * @todo Finish documenting this function - */ function moodle_setlocale($locale='') { global $SESSION, $USER, $CFG; @@ -5030,147 +2640,57 @@ function moodle_setlocale($locale='') { } } -/** - * Converts string to lowercase using most compatible function available. - * - * @param string $string The string to convert to all lowercase characters. - * @param string $encoding The encoding on the string. - * @return string - * @todo Add examples of calling this function with/without encoding types - */ function moodle_strtolower ($string, $encoding='') { +/// Converts string to lowercase using most compatible function available if (function_exists('mb_strtolower')) { if($encoding===''){ return mb_strtolower($string); //use multibyte support with default encoding } else { - return mb_strtolower($string, $encoding); //use given encoding + return mb_strtolower($string,$encoding); //use given encoding } } else { return strtolower($string); // use common function what rely on current locale setting } } -/** - * Count words in a string. - * - * Words are defined as things between whitespace. - * - * @param string $string The text to be searched for words. - * @return int The count of words in the specified string - */ function count_words($string) { +/// Words are defined as things between whitespace $string = strip_tags($string); return count(preg_split("/\w\b/", $string)) - 1; } -/** - * Generate and return a random string of the specified length. - * - * @param int $length The length of the string to be created. - * @return string - */ function random_string ($length=15) { - $pool = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; - $pool .= 'abcdefghijklmnopqrstuvwxyz'; - $pool .= '0123456789'; + $pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + $pool .= "abcdefghijklmnopqrstuvwxyz"; + $pool .= "0123456789"; $poollen = strlen($pool); mt_srand ((double) microtime() * 1000000); - $string = ''; + $string = ""; for ($i = 0; $i < $length; $i++) { $string .= substr($pool, (mt_rand()%($poollen)), 1); } return $string; } -/* - * Given some text (which may contain HTML) and an ideal length, - * this function truncates the text neatly on a word boundary if possible - */ -function shorten_text($text, $ideal=30) { - global $CFG; - - - $i = 0; - $tag = false; - $length = strlen($text); - $count = 0; - $stopzone = false; - $truncate = 0; - - if ($length <= $ideal) { - return $text; - } - - for ($i=0; $i<$length; $i++) { - $char = $text[$i]; - - switch ($char) { - case "<": - $tag = true; - break; - case ">": - $tag = false; - break; - default: - if (!$tag) { - if ($stopzone) { - if ($char == '.' or $char == ' ') { - $truncate = $i+1; - break 2; - } - } - $count++; - } - break; - } - if (!$stopzone) { - if ($count > $ideal) { - $stopzone = true; - } - } - } - - if (!$truncate) { - $truncate = $i; - } - - $ellipse = ($truncate < $length) ? '...' : ''; - - return substr($text, 0, $truncate).$ellipse; -} - - -/** - * Given dates in seconds, how many weeks is the date from startdate - * The first week is 1, the second 2 etc ... - * - * @uses WEEKSECS - * @param ? $startdate ? - * @param ? $thedate ? - * @return string - * @todo Finish documenting this function - */ function getweek ($startdate, $thedate) { +/// Given dates in seconds, how many weeks is the date from startdate +/// The first week is 1, the second 2 etc ... + if ($thedate < $startdate) { // error return 0; } - return floor(($thedate - $startdate) / WEEKSECS) + 1; + return floor(($thedate - $startdate) / 604800.0) + 1; } -/** - * returns a randomly generated password of length $maxlen. inspired by - * {@link http://www.phpbuilder.com/columns/jesus19990502.php3} - * - * @param int $maxlength The maximum size of the password being generated. - * @return string - * @todo Finish documenting this function - */ function generate_password($maxlen=10) { +/// returns a randomly generated password of length $maxlen. inspired by +/// http://www.phpbuilder.com/columns/jesus19990502.php3 + global $CFG; - $fillers = '1234567890!$-+'; + $fillers = "1234567890!$-+"; $wordlist = file($CFG->wordlist); srand((double) microtime() * 1000000); @@ -5181,25 +2701,14 @@ function generate_password($maxlen=10) { return substr($word1 . $filler1 . $word2, 0, $maxlen); } -/** - * Given a float, prints it nicely - * - * @param float $num The float to print - * @param int $places The number of decimal places to print. - * @return string - */ function format_float($num, $places=1) { +/// Given a float, prints it nicely return sprintf("%.$places"."f", $num); } -/** - * Given a simple array, this shuffles it up just like shuffle() - * Unlike PHP's shuffle() ihis function works on any machine. - * - * @param array $array The array to be rearranged - * @return array - */ function swapshuffle($array) { +/// Given a simple array, this shuffles it up just like shuffle() +/// Unlike PHP's shuffle() ihis function works on any machine. srand ((double) microtime() * 10000000); $last = count($array) - 1; @@ -5212,14 +2721,8 @@ function swapshuffle($array) { return $array; } -/** - * Like {@link swapshuffle()}, but works on associative arrays - * - * @param array $array The associative array to be rearranged - * @return array - */ function swapshuffle_assoc($array) { -/// +/// Like swapshuffle, but works on associative arrays $newkeys = swapshuffle(array_keys($array)); foreach ($newkeys as $newkey) { @@ -5228,17 +2731,11 @@ function swapshuffle_assoc($array) { return $newarray; } -/** - * Given an arbitrary array, and a number of draws, - * this function returns an array with that amount - * of items. The indexes are retained. - * - * @param array $array ? - * @param ? $draws ? - * @return ? - * @todo Finish documenting this function - */ function draw_rand_array($array, $draws) { +/// Given an arbitrary array, and a number of draws, +/// this function returns an array with that amount +/// of items. The indexes are retained. + srand ((double) microtime() * 10000000); $return = array(); @@ -5264,29 +2761,15 @@ function draw_rand_array($array, $draws) { return $return; } -/** - * microtime_diff - * - * @param string $a ? - * @param string $b ? - * @return string - * @todo Finish documenting this function - */ function microtime_diff($a, $b) { - list($a_dec, $a_sec) = explode(' ', $a); - list($b_dec, $b_sec) = explode(' ', $b); + list($a_dec, $a_sec) = explode(" ", $a); + list($b_dec, $b_sec) = explode(" ", $b); return $b_sec - $a_sec + $b_dec - $a_dec; } -/** - * Given a list (eg a,b,c,d,e) this function returns - * an array of 1->a, 2->b, 3->c etc - * - * @param array $list ? - * @param string $separator ? - * @todo Finish documenting this function - */ -function make_menu_from_list($list, $separator=',') { +function make_menu_from_list($list, $separator=",") { +/// Given a list (eg a,b,c,d,e) this function returns +/// an array of 1->a, 2->b, 3->c etc $array = array_reverse(explode($separator, $list), true); foreach ($array as $key => $item) { @@ -5295,41 +2778,29 @@ function make_menu_from_list($list, $separator=',') { return $outarray; } -/** - * Creates an array that represents all the current grades that - * can be chosen using the given grading type. Negative numbers - * are scales, zero is no grade, and positive numbers are maximum - * grades. - * - * @param int $gradingtype ? - * return int - * @todo Finish documenting this function - */ function make_grades_menu($gradingtype) { +/// Creates an array that represents all the current grades that +/// can be chosen using the given grading type. Negative numbers +/// are scales, zero is no grade, and positive numbers are maximum +/// grades. + $grades = array(); if ($gradingtype < 0) { - if ($scale = get_record('scale', 'id', - $gradingtype)) { + if ($scale = get_record("scale", "id", - $gradingtype)) { return make_menu_from_list($scale->scale); } } else if ($gradingtype > 0) { for ($i=$gradingtype; $i>=0; $i--) { - $grades[$i] = $i .' / '. $gradingtype; + $grades[$i] = "$i / $gradingtype"; } return $grades; } return $grades; } -/** - * This function returns the nummber of activities - * using scaleid in a courseid - * - * @param int $courseid ? - * @param int $scaleid ? - * @return int - * @todo Finish documenting this function - */ -function course_scale_used($courseid, $scaleid) { +function course_scale_used($courseid,$scaleid) { +////This function returns the nummber of activities +////using scaleid in a courseid global $CFG; @@ -5354,26 +2825,16 @@ function course_scale_used($courseid, $scaleid) { return $return; } -/** - * This function returns the nummber of activities - * using scaleid in the entire site - * - * @param int $scaleid ? - * @return int - * @todo Finish documenting this function. Is return type correct? - */ -function site_scale_used($scaleid,&$courses) { +function site_scale_used($scaleid) { +////This function returns the nummber of activities +////using scaleid in the entire site global $CFG; $return = 0; - if (!is_array($courses) || count($courses) == 0) { - $courses = get_courses("all",false,"c.id,c.shortname"); - } - if (!empty($scaleid)) { - if (is_array($courses) && count($courses) > 0) { + if ($courses = get_courses()) { foreach ($courses as $course) { $return += course_scale_used($course->id,$scaleid); } @@ -5382,24 +2843,17 @@ function site_scale_used($scaleid,&$courses) { return $return; } -/** - * make_unique_id_code - * - * @param string $extra ? - * @return string - * @todo Finish documenting this function - */ -function make_unique_id_code($extra='') { +function make_unique_id_code($extra="") { - $hostname = 'unknownhost'; - if (!empty($_SERVER['HTTP_HOST'])) { - $hostname = $_SERVER['HTTP_HOST']; - } else if (!empty($_ENV['HTTP_HOST'])) { - $hostname = $_ENV['HTTP_HOST']; - } else if (!empty($_SERVER['SERVER_NAME'])) { - $hostname = $_SERVER['SERVER_NAME']; - } else if (!empty($_ENV['SERVER_NAME'])) { - $hostname = $_ENV['SERVER_NAME']; + $hostname = "unknownhost"; + if (!empty($_SERVER["HTTP_HOST"])) { + $hostname = $_SERVER["HTTP_HOST"]; + } else if (!empty($_ENV["HTTP_HOST"])) { + $hostname = $_ENV["HTTP_HOST"]; + } else if (!empty($_SERVER["SERVER_NAME"])) { + $hostname = $_SERVER["SERVER_NAME"]; + } else if (!empty($_ENV["SERVER_NAME"])) { + $hostname = $_ENV["SERVER_NAME"]; } $date = gmdate("ymdHis"); @@ -5407,36 +2861,37 @@ function make_unique_id_code($extra='') { $random = random_string(6); if ($extra) { - return $hostname .'+'. $date .'+'. $random .'+'. $extra; + return "$hostname+$date+$random+$extra"; } else { - return $hostname .'+'. $date .'+'. $random; + return "$hostname+$date+$random"; } } /** - * Function to check the passed address is within the passed subnet - * - * The parameter is a comma separated string of subnet definitions. - * Subnet strings can be in one of two formats: - * 1: xxx.xxx.xxx.xxx/xx - * 2: xxx.xxx - * Code for type 1 modified from user posted comments by mediator at - * {@link http://au.php.net/manual/en/function.ip2long.php} - * - * @param string $addr The address you are checking - * @param string $subnetstr The string of subnet addresses - * @return boolean - */ +* Function to check the passed address is within the passed subnet +* +* The parameter is a comma separated string of subnet definitions. +* Subnet strings can be in one of two formats: +* 1: xxx.xxx.xxx.xxx/xx +* 2: xxx.xxx +* Return boolean +* Code for type 1 modified from user posted comments by mediator at +* http://au.php.net/manual/en/function.ip2long.php +* +* @param addr the address you are checking +* @param subnetstr the string of subnet addresses +*/ + function address_in_subnet($addr, $subnetstr) { - $subnets = explode(',', $subnetstr); + $subnets = explode(",", $subnetstr); $found = false; $addr = trim($addr); foreach ($subnets as $subnet) { $subnet = trim($subnet); - if (strpos($subnet, '/') !== false) { /// type 1 + if (strpos($subnet, "/") !== false) { /// type 1 list($ip, $mask) = explode('/', $subnet); $mask = 0xffffffff << (32 - $mask); @@ -5447,457 +2902,23 @@ function address_in_subnet($addr, $subnetstr) { } if ($found) { - break; + continue; } } return $found; } -/** - * For outputting debugging info - * - * @uses STDOUT - * @param string $string ? - * @param string $eol ? - * @todo Finish documenting this function - */ -function mtrace($string, $eol="\n", $sleep=0) { +function mtrace($string, $eol="\n") { +// For outputting debugging info if (defined('STDOUT')) { fwrite(STDOUT, $string.$eol); } else { - echo $string . $eol; + echo "$string$eol"; } flush(); - - //delay to keep message on user's screen in case of subsequent redirect - if ($sleep) { - sleep($sleep); - } -} - -//Replace 1 or more slashes or backslashes to 1 slash -function cleardoubleslashes ($path) { - return preg_replace('/(\/|\\\){1,}/','/',$path); -} - -function zip_files ($originalfiles, $destination) { -//Zip an array of files/dirs to a destination zip file -//Both parameters must be FULL paths to the files/dirs - - global $CFG; - - //Extract everything from destination - $path_parts = pathinfo(cleardoubleslashes($destination)); - $destpath = $path_parts["dirname"]; //The path of the zip file - $destfilename = $path_parts["basename"]; //The name of the zip file - $extension = $path_parts["extension"]; //The extension of the file - - //If no file, error - if (empty($destfilename)) { - return false; - } - - //If no extension, add it - if (empty($extension)) { - $extension = 'zip'; - $destfilename = $destfilename.'.'.$extension; - } - - //Check destination path exists - if (!is_dir($destpath)) { - return false; - } - - //Check destination path is writable. TODO!! - - //Clean destination filename - $destfilename = clean_filename($destfilename); - - //Now check and prepare every file - $files = array(); - $origpath = NULL; - - foreach ($originalfiles as $file) { //Iterate over each file - //Check for every file - $tempfile = cleardoubleslashes($file); // no doubleslashes! - //Calculate the base path for all files if it isn't set - if ($origpath === NULL) { - $origpath = rtrim(cleardoubleslashes(dirname($tempfile)), "/"); - } - //See if the file is readable - if (!is_readable($tempfile)) { //Is readable - continue; - } - //See if the file/dir is in the same directory than the rest - if (rtrim(cleardoubleslashes(dirname($tempfile)), "/") != $origpath) { - continue; - } - //Add the file to the array - $files[] = $tempfile; - } - - //Everything is ready: - // -$origpath is the path where ALL the files to be compressed reside (dir). - // -$destpath is the destination path where the zip file will go (dir). - // -$files is an array of files/dirs to compress (fullpath) - // -$destfilename is the name of the zip file (without path) - - //print_object($files); //Debug - - if (empty($CFG->zip)) { // Use built-in php-based zip function - - include_once("$CFG->libdir/pclzip/pclzip.lib.php"); - $archive = new PclZip(cleardoubleslashes("$destpath/$destfilename")); - if (($list = $archive->create($files, PCLZIP_OPT_REMOVE_PATH,$origpath) == 0)) { - notice($archive->errorInfo(true)); - return false; - } - - } else { // Use external zip program - - $filestozip = ""; - foreach ($files as $filetozip) { - $filestozip .= escapeshellarg(basename($filetozip)); - $filestozip .= " "; - } - //Construct the command - $separator = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? ' &' : ' ;'; - $command = 'cd '.escapeshellarg($origpath).$separator. - escapeshellarg($CFG->zip).' -r '. - escapeshellarg(cleardoubleslashes("$destpath/$destfilename")).' '.$filestozip; - //All converted to backslashes in WIN - if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { - $command = str_replace('/','\\',$command); - } - Exec($command); - } - return true; -} - -function unzip_file ($zipfile, $destination = '', $showstatus = true) { -//Unzip one zip file to a destination dir -//Both parameters must be FULL paths -//If destination isn't specified, it will be the -//SAME directory where the zip file resides. - - global $CFG; - - //Extract everything from zipfile - $path_parts = pathinfo(cleardoubleslashes($zipfile)); - $zippath = $path_parts["dirname"]; //The path of the zip file - $zipfilename = $path_parts["basename"]; //The name of the zip file - $extension = $path_parts["extension"]; //The extension of the file - - //If no file, error - if (empty($zipfilename)) { - return false; - } - - //If no extension, error - if (empty($extension)) { - return false; - } - - //If no destination, passed let's go with the same directory - if (empty($destination)) { - $destination = $zippath; - } - - //Clear $destination - $destpath = rtrim(cleardoubleslashes($destination), "/"); - - //Check destination path exists - if (!is_dir($destpath)) { - return false; - } - - //Check destination path is writable. TODO!! - - //Everything is ready: - // -$zippath is the path where the zip file resides (dir) - // -$zipfilename is the name of the zip file (without path) - // -$destpath is the destination path where the zip file will uncompressed (dir) - - if (empty($CFG->unzip)) { // Use built-in php-based unzip function - - include_once("$CFG->libdir/pclzip/pclzip.lib.php"); - $archive = new PclZip(cleardoubleslashes("$zippath/$zipfilename")); - if (!$list = $archive->extract(PCLZIP_OPT_PATH, $destpath, - PCLZIP_CB_PRE_EXTRACT, 'unzip_cleanfilename')) { - notice($archive->errorInfo(true)); - return false; - } - - } else { // Use external unzip program - - $separator = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? ' &' : ' ;'; - $redirection = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? '' : ' 2>&1'; - - $command = 'cd '.escapeshellarg($zippath).$separator. - escapeshellarg($CFG->unzip).' -o '. - escapeshellarg(cleardoubleslashes("$zippath/$zipfilename")).' -d '. - escapeshellarg($destpath).$redirection; - //All converted to backslashes in WIN - if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { - $command = str_replace('/','\\',$command); - } - Exec($command,$list); - } - - //Display some info about the unzip execution - if ($showstatus) { - unzip_show_status($list,$destpath); - } - - return true; -} - -function unzip_cleanfilename ($p_event, &$p_header) { -//This function is used as callback in unzip_file() function -//to clean illegal characters for given platform and to prevent directory traversal. -//Produces the same result as info-zip unzip. - $p_header['filename'] = ereg_replace('[[:cntrl:]]', '', $p_header['filename']); //strip control chars first! - $p_header['filename'] = ereg_replace('\.\.+', '', $p_header['filename']); //directory traversal protection - if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { - $p_header['filename'] = ereg_replace('[:*"?<>|]', '_', $p_header['filename']); //replace illegal chars - $p_header['filename'] = ereg_replace('^([a-zA-Z])_', '\1:', $p_header['filename']); //repair drive letter - } else { - //Add filtering for other systems here - // BSD: none (tested) - // Linux: ?? - // MacosX: ?? - } - $p_header['filename'] = cleardoubleslashes($p_header['filename']); //normalize the slashes/backslashes - return 1; -} - -function unzip_show_status ($list,$removepath) { -//This function shows the results of the unzip execution -//depending of the value of the $CFG->zip, results will be -//text or an array of files. - - global $CFG; - - if (empty($CFG->unzip)) { // Use built-in php-based zip function - $strname = get_string("name"); - $strsize = get_string("size"); - $strmodified = get_string("modified"); - $strstatus = get_string("status"); - echo "
              '.t("IP/Hostname:").' diff --git a/lib/ipatlas/plotconf.inc b/lib/ipatlas/plotconf.inc index c627e9709b2..e545dc8fb74 100644 --- a/lib/ipatlas/plotconf.inc +++ b/lib/ipatlas/plotconf.inc @@ -1,4 +1,4 @@ -dirroot.'/mod/'.$mod.'/javascript.php')) { - $output .= file_get_contents($CFG->dirroot.'/mod/'.$mod.'/javascript.php'); - } - } - } - - if ($filters = get_list_of_plugins('filter')) { - foreach ($filters as $filter) { - if (is_readable($CFG->dirroot.'/filter/'.$filter.'/javascript.php')) { - $output .= file_get_contents($CFG->dirroot.'/filter/'.$filter.'/javascript.php'); - } - } - } - - if ($blocks = get_list_of_plugins('blocks')) { - foreach ($blocks as $block) { - if (is_readable($CFG->dirroot.'/blocks/'.$block.'/javascript.php')) { - $output .= file_get_contents($CFG->dirroot.'/blocks/'.$block.'/javascript.php'); - } - } - } - - - $lifetime = '86400'; - - @header('Content-type: text/javascript'); - @header('Content-length: '.strlen($output)); - @header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT'); - @header('Cache-control: max-age='.$lifetime); - @header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .'GMT'); - @header('Pragma: '); - - echo $output; - -?> diff --git a/lib/javascript-static.js b/lib/javascript-static.js deleted file mode 100644 index fb258557d78..00000000000 --- a/lib/javascript-static.js +++ /dev/null @@ -1,198 +0,0 @@ -// Miscellaneous core Javascript functions for Moodle - -function popUpProperties(inobj) { - op = window.open(); - op.document.open('text/plain'); - for (objprop in inobj) { - op.document.write(objprop + ' => ' + inobj[objprop] + '\n'); - } - op.document.close(); -} - -function fillmessagebox(text) { - document.form.message.value = text; -} - -function copyrichtext(textname) { -/// Legacy stub for old editor - to be removed soon - return true; -} - -function checkall() { - void(d=document); - void(el=d.getElementsByTagName('INPUT')); - for(i=0;i
              "; - echo ""; - echo ""; - echo ""; - echo ""; - foreach ($list as $item) { - echo ""; - $item['filename'] = str_replace(cleardoubleslashes($removepath).'/', "", $item['filename']); - print_cell("left", $item['filename']); - if (! $item['folder']) { - print_cell("right", display_size($item['size'])); - } else { - echo ""; - } - $filedate = userdate($item['mtime'], get_string("strftimedatetime")); - print_cell("right", $filedate); - print_cell("right", $item['status']); - echo ""; - } - echo "
              $strname$strsize$strmodified$strstatus
               
              "; - - } else { // Use external zip program - print_simple_box_start("center"); - echo "
              ";
              -        foreach ($list as $item) {
              -            echo str_replace(cleardoubleslashes($removepath.'/'), '', $item).'
              '; - } - echo "
              "; - print_simple_box_end(); - } -} - -/** - * Returns most reliable client address - * - * @return string The remote IP address - */ - function getremoteaddr() { - if (!empty($_SERVER['HTTP_CLIENT_IP'])) { - return $_SERVER['HTTP_CLIENT_IP']; - } - if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { - return $_SERVER['HTTP_X_FORWARDED_FOR']; - } - if (!empty($_SERVER['REMOTE_ADDR'])) { - return $_SERVER['REMOTE_ADDR']; - } - return ''; -} - -/** - * html_entity_decode is only supported by php 4.3.0 and higher - * so if it is not predefined, define it here - * - * @param string $string ? - * @return string - * @todo Finish documenting this function - */ -if(!function_exists('html_entity_decode')) { - function html_entity_decode($string) { - $trans_tbl = get_html_translation_table(HTML_ENTITIES); - $trans_tbl = array_flip($trans_tbl); - return strtr($string, $trans_tbl); - } -} - -/** - * The clone keyword is only supported from PHP 5 onwards. - * The behaviour of $obj2 = $obj1 differs fundamentally - * between PHP 4 and PHP 5. In PHP 4 a copy of $obj1 was - * created, in PHP 5 $obj1 is referenced. To create a copy - * in PHP 5 the clone keyword was introduced. This function - * simulates this behaviour for PHP < 5.0.0. - * See also: http://mjtsai.com/blog/2004/07/15/php-5-object-references/ - * - * @param object $obj - * @return object - */ -if(!check_php_version('5.0.0')) { -// the eval is needed to prevent PHP 5 from getting a parse error! -eval(' - function clone($obj) { - return $obj; - } -'); -} - -/** - * If new messages are waiting for the current user, then return - * Javascript code to create a popup window - * - * @return string Javascript code - */ -function message_popup_window() { - global $USER; - - $popuplimit = 30; // Minimum seconds between popups - - if (!defined('MESSAGE_WINDOW')) { - if (isset($USER->id)) { - if (!isset($USER->message_lastpopup)) { - $USER->message_lastpopup = 0; - } - if ((time() - $USER->message_lastpopup) > $popuplimit) { /// It's been long enough - if (get_user_preferences('message_showmessagewindow', 1) == 1) { - if (count_records_select('message', 'useridto = \''.$USER->id.'\' AND timecreated > \''.$USER->message_lastpopup.'\'')) { - $USER->message_lastpopup = time(); - return '"; - } - } - } - } - } - - return ''; -} - -// Used to make sure that $min <= $value <= $max -function bounded_number($min, $value, $max) { - if($value < $min) { - return $min; - } - if($value > $max) { - return $max; - } - return $value; -} - - -/** - *** get_performance_info() pairs up with init_performance_info() - *** loaded in setup.php. Returns an array with 'html' and 'txt' - *** values ready for use, and each of the individual stats provided - *** separately as well. - *** - **/ -function get_performance_info() { - global $CFG, $PERF; - - $info = array(); - $info['html'] = ''; // holds userfriendly HTML representation - $info['txt'] = me() . ' '; // holds log-friendly representation - - $info['realtime'] = microtime_diff($PERF->starttime, microtime()); - - $info['html'] .= ''.$info['realtime'].' secs '; - $info['txt'] .= 'time: '.$info['realtime'].'s '; - - if (function_exists('memory_get_usage')) { - $info['memory_total'] = memory_get_usage(); - $info['memory_growth'] = memory_get_usage() - $PERF->startmemory; - $info['html'] .= 'RAM: '.display_size($info['memory_total']).' '; - $info['txt'] .= 'memory_total: '.$info['memory_total'].'B (' . display_size($info['memory_total']).') memory_growth: '.$info['memory_growth'].'B ('.display_size($info['memory_growth']).') '; - } - - $inc = get_included_files(); - //error_log(print_r($inc,1)); - $info['includecount'] = count($inc); - $info['html'] .= 'Included '.$info['includecount'].' files '; - $info['txt'] .= 'includecount: '.$info['includecount'].' '; - - if (!empty($PERF->dbqueries)) { - $info['dbqueries'] = $PERF->dbqueries; - $info['html'] .= 'DB queries '.$info['dbqueries'].' '; - $info['txt'] .= 'dbqueries: '.$info['dbqueries'].' '; - } - - if (!empty($PERF->logwrites)) { - $info['logwrites'] = $PERF->logwrites; - $info['html'] .= 'Log writes '.$info['logwrites'].' '; - $info['txt'] .= 'logwrites: '.$info['logwrites'].' '; - } - - if (function_exists('posix_times')) { - $ptimes = posix_times(); - foreach ($ptimes as $key => $val) { - $info[$key] = $ptimes[$key] - $PERF->startposixtimes[$key]; - } - $info['html'] .= "ticks: $info[ticks] user: $info[utime] sys: $info[stime] cuser: $info[cutime] csys: $info[cstime] "; - $info['txt'] .= "ticks: $info[ticks] user: $info[utime] sys: $info[stime] cuser: $info[cutime] csys: $info[cstime] "; - - } - - // Grab the load average for the last minute - // /proc will only work under some linux configurations - // while uptime is there under MacOSX/Darwin and other unices - if (is_readable('/proc/loadavg') && $loadavg = @file('/proc/loadavg')) { - list($server_load) = explode(' ', $loadavg[0]); - unset($loadavg); - } else if ( function_exists('is_executable') && is_executable('/usr/bin/uptime') && $loadavg = `/usr/bin/uptime` ) { - if (preg_match('/load averages?: (\d+:\d+)/', $loadavg, $matches)) { - $server_load = $matches[1]; - } else { - trigger_error('Could not parse uptime output!'); - } - } - if (!empty($server_load)) { - $info['serverload'] = $server_load; - $info['html'] .= 'Load average: '.$info['serverload'].'% '; - $info['txt'] .= 'serverload: '.$info['serverload'].'% '; - } - - - $info['html'] = '
              '.$info['html'].''; - return $info; -} - -if (!function_exists('file_get_contents')) { - function file_get_contents($file) { - $file = file($file); - return $file ? implode('', $file) : false; - } } diff --git a/lib/mp3player/mp3player.fla.zip b/lib/mp3player/mp3player.fla.zip index 1e5fa78ac38f9527df8c54216b7e7f85a79bbc78..25a10088b4c0340ded258be495786853ca602eb0 100644 GIT binary patch literal 12718 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 USh)W*AU_|e&syoftPF_%0}7Q-ivR!s literal 13945 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 diff --git a/lib/mp3player/mp3player.swf b/lib/mp3player/mp3player.swf index d8e8c57b4930e9a0c5a65dcb7cd74aac9158c202..051f93cd6e4b26f3bd8239f5e5c3ac52cd9c1a5e 100644 GIT binary patch literal 9801 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 z z|Kyc(+ij>8soXp}Vtv&)5+Zr(C4V~@RSW4N9SBc1k$Uw({?^Xzx0)`7W4-V%;&}zw zza0dzn;=F}s{P9M9G~8p_HB)|X%RM}ROHr3(-p@TN2b5Nu|7R+n@}q9!`QKF#`hJb qy5Uo(#!xEqxAL*F@kxdyJ7Of;5B9;a85x+m9sI)|;rtKFw52xs_Q(kU diff --git a/lib/mp3player/readme.txt b/lib/mp3player/readme.txt deleted file mode 100644 index b31444029eb..00000000000 --- a/lib/mp3player/readme.txt +++ /dev/null @@ -1,87 +0,0 @@ -Many aspects of the appearance and behaviour of the mp3 player can be customised, -these custom values are set by passing variables to the flash movie using "flashvars". -flashvars are supplied to the movie using - - - -alongside the other param tags, and with an extra attribute in the embed tag - -flashvars="some value" - -the "some value" part is a list of urlencoded variables - -&variableName=value&anotherVariable=anotherValue& - - +--------------------------------------------------------------------------------------------------------------------+ - | Variable Name | Possible Values | What it does | - |--------------------------------------------------------------------------------------------------------------------| - | bgColour | a colour in the format RRGGBB where | sets the background colour of the player. | - | | RR, GG and BB are hexadecimal values | | - | | (00 to FF) representing the Red, Green | | - | | and Blue parts of the colour. eg | | - | | ffffff is white, 000000 is black, | | - | | ff9900 is orange, 000033 is a dark blue. | | - | | the default colour is black. | | - |--------------------------------------------------------------------------------------------------------------------| - | btnColour | the same as bgColour, the default colour | sets the colour of the play and pause buttons. | - | | is white. | | - |--------------------------------------------------------------------------------------------------------------------| - | btnBorderColour | the same as bgColour, the default colour | the colour of the border around the buttons. | - | | is grey. | make this the same as btnColour if you don't want | - | | | a border. | - |--------------------------------------------------------------------------------------------------------------------| - | iconColour | the same as bgColour, the default colour | the colour of the play/pause icons. | - | | is black. | | - |--------------------------------------------------------------------------------------------------------------------| - | iconOverColour | the same as bgColour, the default colour | the colour of the play/pause icons when the mouse | - | | is green. | is over the button. | - |--------------------------------------------------------------------------------------------------------------------| - | handleColour | the same as bgColour, the default colour | the colour of the handles on the playback slider, | - | | is white. | volume and pan controls. | - |--------------------------------------------------------------------------------------------------------------------| - | trackColour | the same as bgColour, the default colour | the colour of the track for the playback slider, | - | | is grey. | volume and pan controls. | - |--------------------------------------------------------------------------------------------------------------------| - | loaderColour | the same as bgColour, the default colour | the colour of the loading bar. | - | | is white. | | - |--------------------------------------------------------------------------------------------------------------------| - | font | a name of a font, eg verdana. the | the font used in the movie. | - | | default value is Trebuchet MS. | | - |--------------------------------------------------------------------------------------------------------------------| - | fontColour | the same as bgColour, the default colour | the colour of the text. | - | | is white | | - |--------------------------------------------------------------------------------------------------------------------| - | waitForPlay | yes or no, the default is no. | should the player wait until the play button is | - | | | pressed before starting to download the file? | - |--------------------------------------------------------------------------------------------------------------------| - | autoPlay | yes or no, the default is yes. | will the player wait until the play button is | - | | | pressed before starting to play the file? if | - |--------------------------------------------------------------------------------------------------------------------| - | buffer | a value in seconds, the default is 20. | how many seconds of the file should be buffered | - | | | before playback starts? | - |--------------------------------------------------------------------------------------------------------------------| - | volText | a string (could this come from the | the text used in the player to label the volume | - | | language pack?) the default is "Vol". | control. | - |--------------------------------------------------------------------------------------------------------------------| - | panText | the same as volText. the default is "Pan". | the text used in the player to label the pan | - | | | control. | - +--------------------------------------------------------------------------------------------------------------------+ - - -a brightly coloured example ;) - - - -the content of the value attribute would need to be repeated and included as the value of -the flashvars attribute in the embed tag. - - -extra notes... - -the song information comes from 2 sources, initally the player displays the filename (minus the file extension) -as the title, once the file is fully loaded it checks the id3 data in the mp3 file for the songname, artist and year -and displays this information instead of the filename. - - -Andy Walker (www.altoncollege.ac.uk) - diff --git a/lib/odbc.php b/lib/odbc.php index c8830c59644..d241322555b 100755 --- a/lib/odbc.php +++ b/lib/odbc.php @@ -1,45 +1,16 @@ sHostName, $this->nPort, &$errno, &$errstr, 30); @@ -54,7 +25,7 @@ class ODBCSocketServer { //search and replace HTML chars in SQL first $sSQL = HTMLSpecialChars($sSQL); $sSend = "\r\n\r\n$this->sConnectionString\r\n$sSQL\r\n\r\n"; - //write request + //write request fputs($fToOpen, $sSend); //now read response while (!feof($fToOpen)) diff --git a/lib/olson.php b/lib/olson.php deleted file mode 100644 index 4ba602e757f..00000000000 --- a/lib/olson.php +++ /dev/null @@ -1,630 +0,0 @@ - $zbyyear) { // loop over zones - /** - *** Loop over years, only adding a rule when zone or rule - *** have changed. All loops preserver the last seen vars - *** until there's an explicit decision to delete them - *** - **/ - - // clean the slate for a new zone - $zone = NULL; - $rule = NULL; - - // - // Find the pre 1970 zone rule entries - // - for ($y = 1970 ; $y > 0 ; $y--) { - if (array_key_exists((string)$y, $zbyyear )) { // we have a zone entry for the year - $zone = $zbyyear[$y]; - //print_object("Zone $zname pre1970 is in $y\n"); - break; // Perl's last -- get outta here - } - } - if (!empty($zone['rule'])) { - $rule = NULL; - for ($y = 1970 ; $y > 0 ; $y--) { - if (array_key_exists((string)$y, $rules[$zone['rule']] )) { // we have a rule entry for the year - $rule = $rules[$zone['rule']][$y]; - //print_object("Rule $rule[name] pre1970 is $y\n"); - break; // Perl's last -- get outta here - } - - } - if (empty($rule)) { - // Colombia and a few others refer to rules before they exist - // Perhaps we should comment out this warning... - // trigger_error("Cannot find rule in $zone[rule] <= 1970"); - $rule = array(); - } - } else { - // no DST this year! - $rule = array(); - } - - // Prepare to insert the base 1970 zone+rule - if (!empty($rule)) { - // merge the two arrays into the moodle rule - unset($rule['name']); // warning: $rule must NOT be a reference! - unset($rule['year']); - $mdl_tz = array_merge($zone, $rule); - - //fix (de)activate_time (AT) field to be GMT - $mdl_tz['dst_time'] = olson_parse_at($mdl_tz['dst_time'], 'set', $mdl_tz['gmtoff']); - $mdl_tz['std_time'] = olson_parse_at($mdl_tz['std_time'], 'reset', $mdl_tz['gmtoff']); - } else { - // just a simple zone - $mdl_tz = $zone; - // TODO: Add other default values here! - $mdl_tz['dstoff'] = 0; - } - - // Fix the from year to 1970 - $mdl_tz['year'] = 1970; - - // add to the array - $mdl_zones[] = $mdl_tz; - //print_object("Zero entry for $zone[name] added"); - - $lasttimezone = $mdl_tz; - - /// - /// 1971 onwards - /// - for ($y = 1971; $y < $maxyear ; $y++) { - $changed = false; - /// - /// We create a "zonerule" entry if either zone or rule change... - /// - /// force $y to string to avoid PHP - /// thinking of a positional array - /// - if (array_key_exists((string)$y, $zbyyear)) { // we have a zone entry for the year - $changed = true; - $zone = $zbyyear[(string)$y]; - } - if (!empty($zone['rule'])){ - if (array_key_exists((string)$y, $rules[$zone['rule']])) { - $changed = true; - $rule = $rules[$zone['rule']][(string)$y]; - } - } else { - $rule = array(); - } - - if ($changed) { - //print_object("CHANGE YEAR $y Zone $zone[name] Rule $zone[rule]\n"); - if (!empty($rule)) { - // merge the two arrays into the moodle rule - unset($rule['name']); - unset($rule['year']); - $mdl_tz = array_merge($zone, $rule); - - // VERY IMPORTANT!! - $mdl_tz['year'] = $y; - - //fix (de)activate_time (AT) field to be GMT - $mdl_tz['dst_time'] = olson_parse_at($mdl_tz['dst_time'], 'set', $mdl_tz['gmtoff']); - $mdl_tz['std_time'] = olson_parse_at($mdl_tz['std_time'], 'reset', $mdl_tz['gmtoff']); - } else { - // just a simple zone - $mdl_tz = $zone; - } - -/* -if(isset($mdl_tz['dst_time']) && !strpos($mdl_tz['dst_time'], ':') || isset($mdl_tz['std_time']) && !strpos($mdl_tz['std_time'], ':')) { - print_object($mdl_tz); - print_object('---'); -} -*/ - // This is the simplest way to make the != operator just below NOT take the year into account - $lasttimezone['year'] = $mdl_tz['year']; - - // If not a duplicate, add and update $lasttimezone - if($lasttimezone != $mdl_tz) { - $mdl_zones[] = $lasttimezone = $mdl_tz; - } - } - } - - } - - /* - if (function_exists('memory_get_usage')) { - trigger_error("We are consuming this much memory: " . get_memory_usage()); - } - */ - - return $mdl_zones; -} - - -/*** - *** olson_simple_rule_parser($filename) - *** - *** Parses the olson files for DST rules. - *** It's a simple implementation that simplifies some fields - *** - *** Returns a multidimensional array, or false on error - *** - */ -function olson_simple_rule_parser ($filename) { - - $file = fopen($filename, 'r', 0); - - if (empty($file)) { - return false; - } - - $rules = array(); - while ($line = fgets($file)) { - // only pay attention to rules lines - if(!preg_match('/^Rule\s/', $line)){ - continue; - } - $line = preg_replace('/\n$/', '',$line); // chomp - $rule = preg_split('/\s+/', $line); - list($discard, - $name, - $from, - $to, - $type, - $in, - $on, - $at, - $save, - $letter) = $rule; - - $srs = ($save === '0') ? 'reset' : 'set'; - - if($to == 'only') { - $to = $from; - } - else if($to == 'max') { - $to = date('Y'); - } - - for($i = $from; $i <= $to; ++$i) { - $rules[$name][$i][$srs] = $rule; - } - - } - - fclose($file); - - $months = array('jan' => 1, 'feb' => 2, - 'mar' => 3, 'apr' => 4, - 'may' => 5, 'jun' => 6, - 'jul' => 7, 'aug' => 8, - 'sep' => 9, 'oct' => 10, - 'nov' => 11, 'dec' => 12); - - - // now reformat it a bit to match Moodle's DST table - $moodle_rules = array(); - foreach ($rules as $rule => $rulesbyyear) { - foreach ($rulesbyyear as $year => $rulesthisyear) { - - if(!isset($rulesthisyear['reset'])) { - // No "reset" rule. We will assume that this is somewhere in the southern hemisphere - // after a period of not using DST, otherwise it doesn't make sense at all. - // With that assumption, we can put in a fake reset e.g. on Jan 1, 12:00. - /* - print_object("no reset"); - print_object($rules); - die(); - */ - $rulesthisyear['reset'] = array( - NULL, NULL, NULL, NULL, NULL, 'jan', 1, '12:00', '00:00', NULL - ); - } - - if(!isset($rulesthisyear['set'])) { - // No "set" rule. We will assume that this is somewhere in the southern hemisphere - // and that it begins a period of not using DST, otherwise it doesn't make sense at all. - // With that assumption, we can put in a fake set on Dec 31, 12:00, shifting time by 0 minutes. - $rulesthisyear['set'] = array( - NULL, $rulesthisyear['reset'][1], NULL, NULL, NULL, 'dec', 31, '12:00', '00:00', NULL - ); - } - - list($discard, - $name, - $from, - $to, - $type, - $in, - $on, - $at, - $save, - $letter) = $rulesthisyear['set']; - - $moodle_rule = array(); - - // $save is sometimes just minutes - // and othertimes HH:MM -- only - // parse if relevant - if (!preg_match('/^\d+$/', $save)) { - list($hours, $mins) = explode(':', $save); - $save = $hours * 60 + $mins; - } - - // we'll parse $at later - // $at = olson_parse_at($at); - $in = strtolower($in); - if(!isset($months[$in])) { - trigger_error('Unknown month: '.$in); - } - - $moodle_rule['name'] = $name; - $moodle_rule['year'] = $year; - $moodle_rule['dstoff'] = $save; // time offset - - $moodle_rule['dst_month'] = $months[$in]; // the month - $moodle_rule['dst_time'] = $at; // the time - - // Encode index and day as per Moodle's specs - $on = olson_parse_on($on); - $moodle_rule['dst_startday'] = $on['startday']; - $moodle_rule['dst_weekday'] = $on['weekday']; - $moodle_rule['dst_skipweeks'] = $on['skipweeks']; - - // and now the "deactivate" data - list($discard, - $name, - $from, - $to, - $type, - $in, - $on, - $at, - $save, - $letter) = $rulesthisyear['reset']; - - // we'll parse $at later - // $at = olson_parse_at($at); - $in = strtolower($in); - if(!isset($months[$in])) { - trigger_error('Unknown month: '.$in); - } - - $moodle_rule['std_month'] = $months[$in]; // the month - $moodle_rule['std_time'] = $at; // the time - - // Encode index and day as per Moodle's specs - $on = olson_parse_on($on); - $moodle_rule['std_startday'] = $on['startday']; - $moodle_rule['std_weekday'] = $on['weekday']; - $moodle_rule['std_skipweeks'] = $on['skipweeks']; - - $moodle_rules[$moodle_rule['name']][$moodle_rule['year']] = $moodle_rule; - //print_object($moodle_rule); - } - - } - - return $moodle_rules; -} - -/*** - *** olson_simple_zone_parser($filename) - *** - *** Parses the olson files for zone info - *** - *** Returns a multidimensional array, or false on error - *** - */ -function olson_simple_zone_parser ($filename) { - - $file = fopen($filename, 'r', 0); - - if (empty($file)) { - return false; - } - - $zones = array(); - $lastzone = NULL; - - while ($line = fgets($file)) { - // skip obvious non-zone lines - if (preg_match('/^(?:#|Rule|Link|Leap)/',$line)) { - $lastzone = NULL; // reset lastzone - continue; - } - - // If there are blanks in the start of the line but the first non-ws character is a #, - // assume it's an "inline comment". The funny thing is that this happens only during - // the definition of the Rule for Europe/Athens. - if(substr(trim($line), 0, 1) == '#') { - continue; - } - - /*** Notes - *** - *** By splitting on space, we are only keeping the - *** year of the UNTIL field -- that's on purpose. - *** - *** The Zone lines are followed by continuation lines - *** were we reuse the info from the last one seen. - *** - *** We are transforming "until" fields into "from" fields - *** which make more sense from the Moodle perspective, so - *** each initial Zone entry is "from" the year 0, and for the - *** continuation lines, we shift the "until" from the previous field - *** into this line's "from". - *** - *** If a RULES field contains a time instead of a rule we discard it - *** I have no idea of how to create a DST rule out of that - *** (what are the start/end times?) - *** - *** We remove "until" from the data we keep, but preserve - *** it in $lastzone. - */ - if (preg_match('/^Zone/', $line)) { // a new zone - $line = trim($line); - $line = preg_split('/\s+/', $line); - $zone = array(); - list( $discard, // 'Zone' - $zone['name'], - $zone['gmtoff'], - $zone['rule'], - $discard // format - ) = $line; - // the things we do to avoid warnings - if (!empty($line[5])) { - $zone['until'] = $line[5]; - } - $zone['year'] = '0'; - - $zones[$zone['name']] = array(); - - } else if (!empty($lastzone) && preg_match('/^\s+/', $line)){ - // looks like a credible continuation line - $line = trim($line); - $line = preg_split('/\s+/', $line); - if (count($line) < 3) { - $lastzone = NULL; - continue; - } - // retrieve info from the lastzone - $zone = $lastzone; - $zone['year'] = $zone['until']; - // overwrite with current data - list( - $zone['gmtoff'], - $zone['rule'], - $discard // format - ) = $line; - // the things we do to avoid warnings - if (!empty($line[3])) { - $zone['until'] = $line[3]; - } - - } else { - $lastzone = NULL; - continue; - } - - // tidy up, we're done - // perhaps we should insert in the DB at this stage? - $lastzone = $zone; - unset($zone['until']); - $zone['gmtoff'] = olson_parse_offset($zone['gmtoff']); - if ($zone['rule'] === '-') { // cleanup empty rules - $zone['rule'] = ''; - } - if (preg_match('/:/',$zone['rule'])) { - // we are not handling direct SAVE rules here - // discard it - $zone['rule'] = ''; - } - - $zones[$zone['name']][(string)$zone['year']] = $zone; - } - - return $zones; -} - -/*** - *** olson_parse_offset($offset) - *** - *** parses time offsets from the GMTOFF and SAVE - *** fields into +/-MINUTES - */ -function olson_parse_offset ($offset) { - $offset = trim($offset); - - // perhaps it's just minutes - if (preg_match('/^(-?)(\d*)$/', $offset)) { - return intval($offset); - } - // (-)hours:minutes(:seconds) - if (preg_match('/^(-?)(\d*):(\d+)/', $offset, $matches)) { - // we are happy to discard the seconds - $sign = $matches[1]; - $hours = intval($matches[2]); - $seconds = intval($matches[3]); - $offset = $sign . ($hours*60 + $seconds); - return intval($offset); - } - - trigger_error('Strange time format in olson_parse_offset() ' .$offset); - return 0; - -} - - -/*** - *** olson_parse_on_($on) - *** - *** see `man zic`. This function translates the following formats - *** 5 the fifth of the month - *** lastSun the last Sunday in the month - *** lastMon the last Monday in the month - *** Sun>=8 first Sunday on or after the eighth - *** Sun<=25 last Sunday on or before the 25th - *** - *** to a moodle friendly format. Returns an array with: - *** - *** startday: the day of the month that we start counting from. - *** if negative, it means we start from that day and - *** count backwards. since -1 would be meaningless, - *** it means "end of month and backwards". - *** weekday: the day of the week that we must find. we will - *** scan days from the startday until we find the - *** first such weekday. 0...6 = Sun...Sat. - *** -1 means that any day of the week will do, - *** effectively ending the search on startday. - *** skipweeks:after finding our end day as outlined above, - *** skip this many weeks. this enables us to find - *** "the second sunday >= 10". usually will be 0. - */ -function olson_parse_on ($on) { - - $rule = array(); - $days = array('sun' => 0, 'mon' => 1, - 'tue' => 2, 'wed' => 3, - 'thu' => 4, 'fri' => 5, - 'sat' => 6); - - if(is_numeric($on)) { - $rule['startday'] = intval($on); // Start searching from that day - $rule['weekday'] = -1; // ...and stop there, no matter what weekday - $rule['skipweeks'] = 0; // Don't skip any weeks. - } - else { - $on = strtolower($on); - if(substr($on, 0, 4) == 'last') { - // e.g. lastSun - if(!isset($days[substr($on, 4)])) { - trigger_error('Unknown last weekday: '.substr($on, 4)); - } - else { - $rule['startday'] = -1; // Start from end of month - $rule['weekday'] = $days[substr($on, 4)]; // Find the first such weekday - $rule['skipweeks'] = 0; // Don't skip any weeks. - } - } - else if(substr($on, 3, 2) == '>=') { - // e.g. Sun>=8 - if(!isset($days[substr($on, 0, 3)])) { - trigger_error('Unknown >= weekday: '.substr($on, 0, 3)); - } - else { - $rule['startday'] = intval(substr($on, 5)); // Start from that day of the month - $rule['weekday'] = $days[substr($on, 0, 3)]; // Find the first such weekday - $rule['skipweeks'] = 0; // Don't skip any weeks. - } - } - else if(substr($on, 3, 2) == '<=') { - // e.g. Sun<=25 - if(!isset($days[substr($on, 0, 3)])) { - trigger_error('Unknown <= weekday: '.substr($on, 0, 3)); - } - else { - $rule['startday'] = -intval(substr($on, 5)); // Start from that day of the month; COUNT BACKWARDS (minus sign) - $rule['weekday'] = $days[substr($on, 0, 3)]; // Find the first such weekday - $rule['skipweeks'] = 0; // Don't skip any weeks. - } - } - else { - trigger_error('unknown on '.$on); - } - } - return $rule; -} - - -/*** - *** olson_parse_at($at, $set, $gmtoffset) - *** - *** see `man zic`. This function translates - *** - *** 2 time in hours - *** 2:00 time in hours and minutes - *** 15:00 24-hour format time (for times after noon) - *** 1:28:14 time in hours, minutes, and seconds - *** - *** Any of these forms may be followed by the letter w if the given - *** time is local "wall clock" time, s if the given time is local - *** "standard" time, or u (or g or z) if the given time is univer- - *** sal time; in the absence of an indicator, wall clock time is - *** assumed. - *** - *** returns a moodle friendly $at, in GMT, which is what Moodle wants - *** - *** - */ -function olson_parse_at ($at, $set = 'set', $gmtoffset) { - - // find the time "signature"; - $sig = ''; - if (preg_match('/[ugzs]$/', $at, $matches)) { - $sig = $matches[0]; - $at = substr($at, 0, strlen($at)-1); // chop - } - - list($hours, $mins) = explode(':', $at); - - // GMT -- return as is! - if ( !empty($sig) && ( $sig === 'u' - || $sig === 'g' - || $sig === 'z' )) { - return $at; - } - - // Wall clock - if (empty($sig) || $sig === 'w') { - if ($set !== 'set'){ // wall clock is on DST, assume by 1hr - $hours = $hours-1; - } - $sig = 's'; - } - - // Standard time - if (!empty($sig) && $sig === 's') { - $mins = $mins + $hours*60 + $gmtoffset; - $hours = $mins / 60; - $hours = (int)$hours; - $mins = abs($mins % 60); - return sprintf('%02d:%02d', $hours, $mins); - } - - trigger_error('unhandled case - AT flag is ' . $matches[0]); -} - - -?> diff --git a/lib/overlib.js b/lib/overlib.js index c6e9bd4ea33..7fd7e7c934f 100755 --- a/lib/overlib.js +++ b/lib/overlib.js @@ -1,711 +1,799 @@ -/* - Do not remove or change this notice. - overlibmws.js core module - Copyright Foteos Macrides 2002-2005. All rights reserved. - Initial: August 18, 2002 - Last Revised: January 12, 2005 - This module is subject to the same terms of usage as for Erik Bosrup's overLIB, - though only a minority of the code and API now correspond with Erik's version. - See the overlibmws Change History and Command Reference via: - - http://www.macridesweb.com/oltest/ - - Published under an open source license: http://www.macridesweb.com/oltest/license.html - Give credit on sites that use overlibmws and submit changes so others can use them as well. - You can get Erik's version via: http://www.bosrup.com/web/overlib/ -*/ - -// PRE-INIT -- Ignore these lines, configuration is below. -var OLloaded=0,pmCnt=1,pMtr=new Array(),OLv,OLudf,OLrefXY; -var OLpct=new Array("83%","67%","83%","100%","117%","150%","200%","267%"); -var OLbubblePI=0,OLcrossframePI=0,OLdebugPI=0,OLdraggablePI=0,OLexclusivePI=0,OLfilterPI=0; -var OLfunctionPI=0,OLhidePI=0,OLiframePI=0,OLovertwoPI=0,OLscrollPI=0,OLshadowPI=0; -if(typeof OLgateOK=='undefined')var OLgateOK=1; -OLregCmds( - 'inarray,caparray,caption,sticky,nofollow,background,noclose,mouseoff,offdelay,right,left,' -+'center,offsetx,offsety,fgcolor,bgcolor,cgcolor,textcolor,capcolor,closecolor,width,wrap,' -+'wrapmax,height,border,base,status,autostatus,autostatuscap,snapx,snapy,fixx,fixy,relx,rely,' -+'midx,midy,ref,refc,refp,refx,refy,fgbackground,bgbackground,cgbackground,padx,pady,fullhtml,' -+'below,above,vcenter,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,' -+'timeout,delay,hauto,vauto,nojustx,nojusty,closetext,closeclick,closetitle,fgclass,bgclass,' -+'cgclass,capbelow,textpadding,textfontclass,captionpadding,captionfontclass,closefontclass,' -+'label,donothing'); - -function OLud(v){return eval('typeof ol_'+v+'=="undefined"')?1:0;} - -// DEFAULT CONFIGURATION -- See overlibConfig.txt for descriptions. -if(OLud('fgcolor'))var ol_fgcolor="#CCCCFF"; -if(OLud('bgcolor'))var ol_bgcolor="#333399"; -if(OLud('cgcolor'))var ol_cgcolor="#333399"; -if(OLud('textcolor'))var ol_textcolor="#000000"; -if(OLud('capcolor'))var ol_capcolor="#FFFFFF"; -if(OLud('closecolor'))var ol_closecolor="#EEEEFF"; -if(OLud('textfont'))var ol_textfont="Verdana,Arial,Helvetica"; -if(OLud('captionfont'))var ol_captionfont="Verdana,Arial,Helvetica"; -if(OLud('closefont'))var ol_closefont="Verdana,Arial,Helvetica"; -if(OLud('textsize'))var ol_textsize=1; -if(OLud('captionsize'))var ol_captionsize=1; -if(OLud('closesize'))var ol_closesize=1; -if(OLud('fgclass'))var ol_fgclass=""; -if(OLud('bgclass'))var ol_bgclass=""; -if(OLud('cgclass'))var ol_cgclass=""; -if(OLud('textpadding'))var ol_textpadding=2; -if(OLud('textfontclass'))var ol_textfontclass=""; -if(OLud('captionpadding'))var ol_captionpadding=2; -if(OLud('captionfontclass'))var ol_captionfontclass=""; -if(OLud('closefontclass'))var ol_closefontclass=""; -if(OLud('close'))var ol_close="Close"; -if(OLud('closeclick'))var ol_closeclick=0; -if(OLud('closetitle'))var ol_closetitle="Click to Close"; -if(OLud('text'))var ol_text="Default Text"; -if(OLud('cap'))var ol_cap=""; -if(OLud('capbelow'))var ol_capbelow=0; -if(OLud('background'))var ol_background=""; -if(OLud('width'))var ol_width=200; -if(OLud('wrap'))var ol_wrap=0; -if(OLud('wrapmax'))var ol_wrapmax=0; -if(OLud('height'))var ol_height= -1; -if(OLud('border'))var ol_border=1; -if(OLud('base'))var ol_base=0; -if(OLud('offsetx'))var ol_offsetx=10; -if(OLud('offsety'))var ol_offsety=10; -if(OLud('sticky'))var ol_sticky=0; -if(OLud('nofollow'))var ol_nofollow=0; -if(OLud('noclose'))var ol_noclose=0; -if(OLud('mouseoff'))var ol_mouseoff=0; -if(OLud('offdelay'))var ol_offdelay=300; -if(OLud('hpos'))var ol_hpos=RIGHT; -if(OLud('vpos'))var ol_vpos=BELOW; -if(OLud('status'))var ol_status=""; -if(OLud('autostatus'))var ol_autostatus=0; -if(OLud('snapx'))var ol_snapx=0; -if(OLud('snapy'))var ol_snapy=0; -if(OLud('fixx'))var ol_fixx= -1; -if(OLud('fixy'))var ol_fixy= -1; -if(OLud('relx'))var ol_relx=null; -if(OLud('rely'))var ol_rely=null; -if(OLud('midx'))var ol_midx=null; -if(OLud('midy'))var ol_midy=null; -if(OLud('ref'))var ol_ref=""; -if(OLud('refc'))var ol_refc='UL'; -if(OLud('refp'))var ol_refp='UL'; -if(OLud('refx'))var ol_refx=0; -if(OLud('refy'))var ol_refy=0; -if(OLud('fgbackground'))var ol_fgbackground=""; -if(OLud('bgbackground'))var ol_bgbackground=""; -if(OLud('cgbackground'))var ol_cgbackground=""; -if(OLud('padxl'))var ol_padxl=1; -if(OLud('padxr'))var ol_padxr=1; -if(OLud('padyt'))var ol_padyt=1; -if(OLud('padyb'))var ol_padyb=1; -if(OLud('fullhtml'))var ol_fullhtml=0; -if(OLud('capicon'))var ol_capicon=""; -if(OLud('frame'))var ol_frame=self; -if(OLud('timeout'))var ol_timeout=0; -if(OLud('delay'))var ol_delay=0; -if(OLud('hauto'))var ol_hauto=0; -if(OLud('vauto'))var ol_vauto=0; -if(OLud('nojustx'))var ol_nojustx=0; -if(OLud('nojusty'))var ol_nojusty=0; -if(OLud('label'))var ol_label=""; -// ARRAY CONFIGURATION - See overlibConfig.txt for descriptions. -if(OLud('texts'))var ol_texts=new Array("Text 0","Text 1"); -if(OLud('caps'))var ol_caps=new Array("Caption 0","Caption 1"); -// END CONFIGURATION -- Don't change anything below, all configuration is above. - -// INIT -- Runtime variables. -var o3_text="",o3_cap="",o3_sticky=0,o3_nofollow=0,o3_background="",o3_noclose=0,o3_mouseoff=0; -var o3_offdelay=300,o3_hpos=RIGHT,o3_offsetx=10,o3_offsety=10,o3_fgcolor="",o3_bgcolor=""; -var o3_cgcolor="",o3_textcolor="",o3_capcolor="",o3_closecolor="",o3_width=200,o3_wrap=0; -var o3_wrapmax=0,o3_height= -1,o3_border=1,o3_base=0,o3_status="",o3_autostatus=0,o3_snapx=0; -var o3_snapy=0,o3_fixx= -1,o3_fixy= -1,o3_relx=null,o3_rely=null,o3_midx=null,o3_midy=null; -var o3_ref="",o3_refc='UL',o3_refp='UL',o3_refx=0,o3_refy=0,o3_fgbackground=""; -var o3_bgbackground="",o3_cgbackground="",o3_padxl=0,o3_padxr=0,o3_padyt=0,o3_padyb=0; -var o3_fullhtml=0,o3_vpos=BELOW,o3_capicon="",o3_textfont="Verdana,Arial,Helvetica"; -var o3_captionfont="Verdana,Arial,Helvetica",o3_closefont="Verdana,Arial,Helvetica"; -var o3_textsize=1,o3_captionsize=1,o3_closesize=1,o3_frame=self,o3_timeout=0,o3_delay=0; -var o3_hauto=0,o3_vauto=0,o3_nojustx=0,o3_nojusty=0,o3_close="Close",o3_closeclick=0; -var o3_closetitle="",o3_fgclass="",o3_bgclass="",o3_cgclass="",o3_textpadding=2; -var o3_textfontclass="",o3_captionpadding=2,o3_captionfontclass="",o3_closefontclass=""; -var o3_capbelow=0,o3_label="",CSSOFF=DONOTHING,CSSCLASS=DONOTHING; -var OLx=0,OLy=0,OLshowingsticky=0,OLallowmove=0,OLremovecounter=0; -var OLdelayid=0,OLtimerid=0,OLshowid=0,OLndt=0; -var over=null,OLfnRef="",OLhover=0; -var OLua=navigator.userAgent.toLowerCase(); -var OLns4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4); -var OLns6=(document.getElementById)?1:0; -var OLie4=(document.all)?1:0; -var OLgek=(OLv=OLua.match(/gecko\/(\d{8})/i))?parseInt(OLv[1]):0; -var OLmac=(OLua.indexOf('mac')>=0)?1:0; -var OLsaf=(OLua.indexOf('safari')>=0)?1:0; -var OLkon=(OLua.indexOf('konqueror')>=0)?1:0; -var OLkht=(OLsaf||OLkon)?1:0; -var OLopr=(OLua.indexOf('opera')>=0)?1:0; -var OLop7=(OLopr&&document.createTextNode)?1:0; -if(OLopr){OLns4=OLns6=0;if(!OLop7)OLie4=0;} -var OLieM=((OLie4&&OLmac)&&!(OLkht||OLopr))?1:0; -var OLie5=0,OLie55=0;if(OLie4&&!OLop7){ -if((OLv=OLua.match(/msie (\d\.\d+)\.*/i))&&(OLv=parseFloat(OLv[1]))>=5.0){ -OLie5=1;OLns6=0;if(OLv>=5.5)OLie55=1;}if(OLns6)OLie4=0;} -if(OLns4)window.onresize=function(){location.reload();} -var OLchkMh=1,OLdw; -if(OLns4||OLie4||OLns6)OLmh(); -else{overlib=nd=cClick=OLpageDefaults=no_overlib;} - -/* - PUBLIC FUNCTIONS -*/ -// Loads defaults then args into runtime variables. -function overlib(){ -if(!(OLloaded&&OLgateOK))return; -if((OLexclusivePI)&&OLisExclusive(overlib.arguments))return true; -if(OLchkMh)OLmh(); -if(OLndt&&!OLtimerid)OLndt=0;if(over)cClick(); -OLloadP1or2();OLload('close,closeclick,closetitle,noclose,mouseoff,offdelay,sticky,' -+'closecolor,closefont,closesize,closefontclass,frame,label');OLfnRef="";OLhover=0; -OLsetRunTimeVar(); -OLparseTokens('o3_',overlib.arguments); -if(!(over=OLmkLyr()))return false; -if(OLbubblePI)OLchkForBubbleEffect(); -if(OLdebugPI)OLsetDebugCanShow(); -if(OLshadowPI)OLinitShadow(); -if(OLiframePI)OLinitIfs(); -if(OLfilterPI)OLinitFilterLyr(); -if(OLexclusivePI&&o3_exclusive&&o3_exclusivestatus!="")o3_status=o3_exclusivestatus; -else if(o3_autostatus==2&&o3_cap!="")o3_status=o3_cap; -else if(o3_autostatus==1&&o3_text!="")o3_status=o3_text; -if(o3_delay==0){return OLmain(); -}else{OLdelayid=setTimeout("OLmain()",o3_delay); -if(o3_status!=""){self.status=o3_status;return true;} -else if(!(OLop7&&event&&event.type=='mouseover'))return false;} -} - -// Clears popups if appropriate -function nd(time){ -if(!(OLloaded&&OLgateOK))return; -if((OLexclusivePI)&&OLisExclusive())return true; -if(time&&over&&!o3_delay){if(OLtimerid>0)clearTimeout(OLtimerid); -OLtimerid=(OLhover&&o3_frame==self&&!OLcursorOff())?0: -setTimeout("cClick()",(o3_timeout=OLndt=time)); -}else{if(OLremovecounter>=1)OLshowingsticky=0;if(!OLshowingsticky){ -OLallowmove=0;if(over)OLhideObject(over);}else{OLremovecounter++;}} -return true; -} - -// Close function for stickies -function cClick(){ -if(OLloaded&&OLgateOK){OLhover=0;if(over)OLhideObject(over);OLshowingsticky=0;} -return false; -} - -// Sets page-specific defaults. -function OLpageDefaults(){ -OLparseTokens('ol_',OLpageDefaults.arguments); -} - -// For unsupported browsers. -function no_overlib(){return false;} - -/* - OVERLIB MAIN FUNCTION SET -*/ -function OLmain(){ -o3_delay=0; -if(o3_frame==self){if(o3_noclose)OLoptMOUSEOFF(0);else if(o3_mouseoff)OLoptMOUSEOFF(1);} -OLdoLyr(); -OLallowmove=0;if(o3_timeout>0){ -if(OLtimerid>0)clearTimeout(OLtimerid);OLtimerid=setTimeout("cClick()",o3_timeout);} -if(o3_ref){OLrefXY=OLgetRefXY(o3_ref);if(OLrefXY[0]==null){o3_ref="";o3_midx=0;o3_midy=0;}} -OLdisp(o3_status); -if(OLdraggablePI)OLcheckDrag(); -if(o3_status!="")return true;else if(!(OLop7&&event&&event.type=='mouseover'))return false; -} - -// Loads defaults for primaries or secondaries -function OLloadP1or2(){ -OLload('text,cap,capbelow,textpadding,captionpadding,border,base,status,autostatus,nofollow,' -+'width,wrap,wrapmax,height,hpos,vpos,offsetx,offsety,snapx,snapy,relx,rely,midx,midy,ref,' -+'refc,refp,refx,refy,fixx,fixy,nojustx,nojusty,hauto,vauto,timeout,delay,fgcolor,bgcolor,' -+'cgcolor,textcolor,capcolor,textfont,captionfont,textsize,captionsize,fgbackground,' -+'bgbackground,cgbackground,capicon,background,padxl,padxr,padyt,padyb,fullhtml,fgclass,' -+'bgclass,cgclass,textfontclass,captionfontclass'); -} -function OLload(c){var i,m=c.split(',');for(i=0;i
              ');d=fd.all[id]; -}else{d=fd.createElement('div');if(d){d.id=id;fd.body.appendChild(d);}}if(!d)return null; -if(OLns4)d.zIndex=z;else{var o=d.style;o.position='absolute';o.visibility='hidden';o.zIndex=z;}} -return d; -} - -// Creates and writes layer content -function OLdoLyr(){ -if(o3_background==''&&!o3_fullhtml){ -if(o3_fgbackground!='')o3_fgbackground=' background="'+o3_fgbackground+'"'; -if(o3_bgbackground!='')o3_bgbackground=' background="'+o3_bgbackground+'"'; -if(o3_cgbackground!='')o3_cgbackground=' background="'+o3_cgbackground+'"'; -if(o3_fgcolor!='')o3_fgcolor=' bgcolor="'+o3_fgcolor+'"'; -if(o3_bgcolor!='')o3_bgcolor=' bgcolor="'+o3_bgcolor+'"'; -if(o3_cgcolor!='')o3_cgcolor=' bgcolor="'+o3_cgcolor+'"'; -if(o3_height>0)o3_height=' height="'+o3_height+'"';else o3_height='';} -if(!OLns4)OLrepositionTo(over,(OLns6?20:0),0);var lyrHtml=OLdoLGF(); -if(o3_sticky){if(OLtimerid>0){clearTimeout(OLtimerid);OLtimerid=0;} -OLshowingsticky=1;OLremovecounter=0;} -if(o3_wrap&&!o3_fullhtml){OLlayerWrite(lyrHtml); -o3_width=(OLns4?over.clip.width:over.offsetWidth); -if(OLns4&&o3_wrapmax<1)o3_wrapmax=o3_frame.innerWidth-40; -o3_wrap=0;if(o3_wrapmax>0&&o3_width>o3_wrapmax)o3_width=o3_wrapmax;lyrHtml=OLdoLGF();} -OLlayerWrite(lyrHtml);o3_width=(OLns4?over.clip.width:over.offsetWidth); -if(OLbubblePI)OLgenerateBubble(lyrHtml); -} - -/* - LAYER GENERATION FUNCTIONS -*/ -// Makes simple table without caption -function OLcontentSimple(txt){ -var t=OLbgLGF()+OLfgLGF(txt)+OLbaseLGF(); -OLsetBackground('');return t; -} - -// Makes table with caption and optional close link -function OLcontentCaption(txt,title,close){ -var closing='',closeevent='onmouseover',caption,t; -if(o3_closeclick==1)closeevent=(o3_closetitle?'title="'+o3_closetitle+'" ':'')+'onclick'; -if(o3_capicon!='')o3_capicon=' '; -if(close!=''){closing='':'>'+OLlgfUtil(0,'','span',o3_closecolor,o3_closefont,o3_closesize))+close -+(o3_closefontclass?'':OLlgfUtil(1,'','span'))+'';} -caption='':'>')+(o3_captionfontclass?'
              ':'' -+OLlgfUtil(0,'','div',o3_capcolor,o3_captionfont,o3_captionsize))+o3_capicon+title -+OLlgfUtil(1,'','div')+(o3_captionfontclass?'':'')+''+closing+''; -t=OLbgLGF()+(o3_capbelow?OLfgLGF(txt)+caption:caption+OLfgLGF(txt))+OLbaseLGF(); -OLsetBackground('');return t; -} - -// For BACKGROUND and FULLHTML commands -function OLcontentBackground(txt, image, hasfullhtml){ -var t;if(hasfullhtml){t=txt;}else{t='' -+OLlgfUtil(0,o3_textfontclass,'div',o3_textcolor,o3_textfont,o3_textsize)+txt+ -OLlgfUtil(1,'','div')+'';} -OLsetBackground(image);return t; -} - -// LGF utilities -function OLbgLGF(){ -return ''; -} -function OLfgLGF(t){ -return '' -+OLlgfUtil(0,o3_textfontclass,'div',o3_textcolor,o3_textfont,o3_textsize)+t -+OLlgfUtil(1,'','div')+''; -} -function OLlgfUtil(end,tfc,ele,col,fac,siz){ -if(end)return ('');else return (tfc?'
              ': -('<'+(OLns4?'font color="'+col+'" face="'+OLquoteMultiNameFonts(fac)+'" size="'+siz:ele -+' style="color:'+col+';font-family:'+OLquoteMultiNameFonts(fac)+';font-size:'+siz+';' -+(ele=='span'?'text-decoration:underline;':''))+'">')); -} -function OLquoteMultiNameFonts(f){ -var i,v,pM=f.split(','); -for(i=0;i0&&!o3_wrap)?('
              '):'')+''; -} -function OLwd(a){ -return(o3_wrap?'':' width="'+(!a?'100%':(a==1?o3_width:(o3_width-o3_padxl-o3_padxr)))+'"'); -} - -// Loads image into the div. -function OLsetBackground(i){ -if(i==''){if(OLns4)over.background.src=null; -else{if(OLns6)over.style.width='';over.style.backgroundImage='none';} -}else{if(OLns4)over.background.src=i; -else{if(OLns6)over.style.width=o3_width+'px';over.style.backgroundImage='url('+i+')';}} -} - -/* - HANDLING FUNCTIONS -*/ -// Displays layer -function OLdisp(s){ -if(OLallowmove==0){if(OLshadowPI)OLdispShadow();if(OLiframePI)OLdispIfs();OLplaceLayer(); -if(OLndt)OLshowObject(over);else OLshowid=setTimeout("OLshowObject(over)",1); -OLallowmove=(o3_sticky||o3_nofollow)?0:1;}OLndt=0;if(s!="")self.status=s; -} - -// Decides placement of layer. -function OLplaceLayer(){ -var snp,X,Y,pgLeft,pgTop,pWd=o3_width,pHt,iWd=100,iHt=100,SB=0,LM=0,CX=0,TM=0,BM=0,CY=0; -var o=OLfd(),nsb=(OLgek>=20010505&&!o3_frame.scrollbars.visible)?1:0; -if(!OLkht&&o&&o.clientWidth)iWd=o.clientWidth; -else if(o3_frame.innerWidth){SB=Math.ceil(1.4*(o3_frame.outerWidth-o3_frame.innerWidth)); -if(SB>20)SB=20;iWd=o3_frame.innerWidth;} -pgLeft=(OLie4)?o.scrollLeft:o3_frame.pageXOffset; -if(OLie55&&OLfilterPI&&o3_filtershadow)SB=CX=5;else -if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowx){SB+=((o3_shadowx>0)?o3_shadowx:0); -LM=((o3_shadowx<0)?Math.abs(o3_shadowx):0);CX=Math.abs(o3_shadowx);} -if(o3_ref!=""||o3_fixx> -1||o3_relx!=null||o3_midx!=null){ -if(o3_ref!=""){ -X=OLrefXY[0];if(OLie55&&OLfilterPI&&o3_filtershadow){if(o3_refp=='UR'||o3_refp=='LR')X -= 5;} -else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowx){ -if(o3_shadowx<0&&(o3_refp=='UL'||o3_refp=='LL'))X += o3_shadowx; -else if(o3_shadowx>0&&(o3_refp=='UR'||o3_refp=='LR'))X -= o3_shadowx;} -}else{if(o3_midx!=null){ -X=parseInt(pgLeft+((iWd-pWd-SB-LM)/2)+o3_midx); -}else{if(o3_relx!=null){ -if(o3_relx>=0)X=pgLeft+o3_relx+LM;else X=pgLeft+o3_relx+iWd-pWd-SB; -}else{ -X=o3_fixx+LM;}}} -}else{ -if(o3_hauto){ -if(o3_hpos==LEFT&&OLx-pgLeftiWd/2&&OLx+pWd+o3_offsetx>pgLeft+iWd-SB)o3_hpos=LEFT;} -X=(o3_hpos==CENTER)?parseInt(OLx-((pWd+CX)/2)+o3_offsetx): -(o3_hpos==LEFT)?OLx-o3_offsetx-pWd:OLx+o3_offsetx; -if(o3_snapx>1){ -snp=X % o3_snapx; -if(o3_hpos==LEFT){X=X-(o3_snapx+snp);}else{X=X+(o3_snapx-snp);}}} -if(!o3_nojustx&&X+pWd>pgLeft+iWd-SB) -X=iWd+pgLeft-pWd-SB;if(!o3_nojustx&&X-LM0)?o3_shadowy:0;CY=Math.abs(o3_shadowy);} -if(o3_ref!=""||o3_fixy> -1||o3_rely!=null||o3_midy!=null){ -if(o3_ref!=""){ -Y=OLrefXY[1];if(OLie55&&OLfilterPI&&o3_filtershadow){if(o3_refp=='LL'||o3_refp=='LR')Y -= 5;} -else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowy){ -if(o3_shadowy<0&&(o3_refp=='UL'||o3_refp=='UR'))Y+=o3_shadowy;else -if(o3_shadowy>0&&(o3_refp=='LL'||o3_refp=='LR'))Y-=o3_shadowy;} -}else{if(o3_midy!=null){ -Y=parseInt(pgTop+((iHt-pHt-CY)/2)+o3_midy); -}else{if(o3_rely!=null){ -if(o3_rely>=0)Y=pgTop+o3_rely+TM;else Y=pgTop+o3_rely+iHt-pHt-BM;}else{ -Y=o3_fixy+TM;}}} -}else{ -if(o3_vauto){ -if(o3_vpos==ABOVE&&OLy-pgTopiHt/2&&OLy+pHt+o3_offsety+((OLns4||OLkht)?17:0)>pgTop+iHt-BM) -o3_vpos=ABOVE;}Y=(o3_vpos==VCENTER)?parseInt(OLy-((pHt+CY)/2)+o3_offsety): -(o3_vpos==ABOVE)?OLy-(pHt+o3_offsety+BM):OLy+o3_offsety+TM; -if(o3_snapy>1){ -snp=Y % o3_snapy; -if(pHt>0&&o3_vpos==ABOVE){Y=Y-(o3_snapy+snp);}else{Y=Y+(o3_snapy-snp);}}} -if(!o3_nojusty&&Y+pHt+BM>pgTop+iHt)Y=pgTop+iHt-pHt-BM;if(!o3_nojusty&&Y-TM1){ -o=mr[0];rXY[0]+=mr[0].x+mr[1].pageX;rXY[1]+=mr[0].y+mr[1].pageY; -}else{if((mr.toString().indexOf('Image')!= -1)||(mr.toString().indexOf('Anchor')!= -1)){ -rXY[0]+=mr.x;rXY[1]+=mr.y;}else{rXY[0]+=mr.pageX;rXY[1]+=mr.pageY;}} -}else{rXY[0]+=OLpageLoc(mr,'Left');rXY[1]+=OLpageLoc(mr,'Top');} -of=OLgetRefOffsets(o);rXY[0]+=of[0];rXY[1]+=of[1]; -return rXY; -} -function OLgetRef(l){var r=OLgetRefById(l);return (r)?r:OLgetRefByName(l);} - -// Seeks REFerence by id -function OLgetRefById(l,d){ -var r="",j;l=(l||'overDiv');d=(d||o3_frame.document); -if(OLie4&&d.all){return d.all[l];}else if(d.getElementById){return d.getElementById(l); -}else if(d.layers&&d.layers.length>0){if(d.layers[l])return d.layers[l]; -for(j=0;j0){ -for(j=0;j0)return r;else if(r)return [r,d.layers[j]];}} -return null; -} - -// Gets layer vs REFerence offsets -function OLgetRefOffsets(o){ -var mc=o3_refc.toUpperCase(),mp=o3_refp.toUpperCase(),mW=0,mH=0,pW=0,pH=0,off=[0,0]; -pW=(OLbubblePI&&o3_bubble)?o3_width:OLns4?over.clip.width:over.offsetWidth; -pH=(OLbubblePI&&o3_bubble)?OLbubbleHt:OLns4?over.clip.height:over.offsetHeight; -if((!OLop7)&&o.toString().indexOf('Image')!= -1){mW=o.width;mH=o.height; -}else if((!OLop7)&&o.toString().indexOf('Anchor')!= -1){mc=o3_refc='UL';}else{ -mW=(OLns4)?o.clip.width:o.offsetWidth;mH=(OLns4)?o.clip.height:o.offsetHeight;} -if(mc=='UL'){off=(mp=='UR')?[-pW,0]:(mp=='LL')?[0,-pH]:(mp=='LR')?[-pW,-pH]:[0,0]; -}else if(mc=='UR'){off=(mp=='UR')?[mW-pW,0]:(mp=='LL')?[mW,-pH]:(mp=='LR')?[mW-pW,-pH]:[mW,0]; -}else if(mc=='LL'){off=(mp=='UR')?[-pW,mH]:(mp=='LL')?[0,mH-pH]:(mp=='LR')?[-pW,mH-pH]:[0,mH]; -}else if(mc=='LR'){off=(mp=='UR')?[mW-pW,mH]:(mp=='LL')?[mW,mH-pH]:(mp=='LR')?[mW-pW,mH-pH]: -[mW,mH];} -return off; -} - -// Gets x or y location of object -function OLpageLoc(o,t){ -var l=0;while(o.offsetParent&&o.offsetParent.tagName.toLowerCase()!='html'){ -l+=o['offset'+t];o=o.offsetParent;}l+=o['offset'+t]; -return l; -} - -// Moves layer -function OLmouseMove(e){ -var e=(e||event); -OLx=(e.pageX||e.clientX+OLfd().scrollLeft);OLy=(e.pageY||e.clientY+OLfd().scrollTop); -if((OLallowmove&&over)&&(o3_frame==self||over==OLgetRefById())){ -OLplaceLayer();if(OLhidePI)OLhideUtil(0,1,1,0,0,0);} -if(OLhover&&over&&o3_frame==self&&OLcursorOff())if(o3_offdelay<1)cClick();else -{if(OLtimerid>0)clearTimeout(OLtimerid);OLtimerid=setTimeout("cClick()",o3_offdelay);} -} - -// Capture mouse and chain other scripts. -function OLmh(){ -var fN,f,j,k,s,mh=OLmouseMove,re=/function[ ]*(\w*)\(/;OLdw=document; -if(document.onmousemove||(!OLie4&&window.onmousemove)){ -if(window.onmousemove)OLdw=window;f=OLdw.onmousemove.toString(); -fN=f.match(re);if(!fN||fN[1]=='anonymous'||fN[1]=='OLmouseMove'){ -OLchkMh=0;return;}if(fN[1])s=fN[1]+'(e)';else{j=f.indexOf('{'); -k=f.lastIndexOf('}')+1;s=f.substring(j,k);} -s+=';OLmouseMove(e);';mh=new Function('e',s);} -OLdw.onmousemove=mh;if(OLns4)OLdw.captureEvents(Event.MOUSEMOVE); -} - -/* - PARSING -*/ -function OLparseTokens(pf,ar){ -var i,v,md= -1,par=(pf!='ol_'),e=eval,p=OLpar,q=OLparQuo,t=OLtoggle;OLudf=(par&&!ar.length?1:0); -for(i=0;i< ar.length;i++){if(md<0){if(typeof ar[i]=='number'){OLudf=(par?1:0);i--;} -else{switch(pf){case 'ol_':ol_text=ar[i];break;default:o3_text=ar[i];}}md=0; -}else{ -if(ar[i]==INARRAY){OLudf=0;e(pf+'text=ol_texts['+ar[++i]+']');continue;} -if(ar[i]==CAPARRAY){e(pf+'cap=ol_caps['+ar[++i]+']');continue;} -if(ar[i]==CAPTION){q(ar[++i],pf+'cap');continue;} -if(Math.abs(ar[i])==STICKY){t(ar[i],pf+'sticky');continue;} -if(Math.abs(ar[i])==NOFOLLOW){t(ar[i],pf+'nofollow');continue;} -if(ar[i]==BACKGROUND){q(ar[++i],pf+'background');continue;} -if(Math.abs(ar[i])==NOCLOSE){t(ar[i],pf+'noclose');continue;} -if(Math.abs(ar[i])==MOUSEOFF){t(ar[i],pf+'mouseoff');continue;} -if(ar[i]==OFFDELAY){p(ar[++i],pf+'offdelay');continue;} -if(ar[i]==RIGHT||ar[i]==LEFT||ar[i]==CENTER){p(ar[i],pf+'hpos');continue;} -if(ar[i]==OFFSETX){p(ar[++i],pf+'offsetx');continue;} -if(ar[i]==OFFSETY){p(ar[++i],pf+'offsety');continue;} -if(ar[i]==FGCOLOR){q(ar[++i],pf+'fgcolor');continue;} -if(ar[i]==BGCOLOR){q(ar[++i],pf+'bgcolor');continue;} -if(ar[i]==CGCOLOR){q(ar[++i],pf+'cgcolor');continue;} -if(ar[i]==TEXTCOLOR){q(ar[++i],pf+'textcolor');continue;} -if(ar[i]==CAPCOLOR){q(ar[++i],pf+'capcolor');continue;} -if(ar[i]==CLOSECOLOR){q(ar[++i],pf+'closecolor');continue;} -if(ar[i]==WIDTH){p(ar[++i],pf+'width');continue;} -if(Math.abs(ar[i])==WRAP){t(ar[i],pf+'wrap');continue;} -if(ar[i]==WRAPMAX){p(ar[++i],pf+'wrapmax');continue;} -if(ar[i]==HEIGHT){p(ar[++i],pf+'height');continue;} -if(ar[i]==BORDER){p(ar[++i],pf+'border');continue;} -if(ar[i]==BASE){p(ar[++i],pf+'base');continue;} -if(ar[i]==STATUS){q(ar[++i],pf+'status');continue;} -if(Math.abs(ar[i])==AUTOSTATUS){v=pf+'autostatus'; -e(v+'=('+ar[i]+'<0)?('+v+'==2?2:0):('+v+'==1?0:1)');continue;} -if(Math.abs(ar[i])==AUTOSTATUSCAP){v=pf+'autostatus'; -e(v+'=('+ar[i]+'<0)?('+v+'==1?1:0):('+v+'==2?0:2)');continue;} -if(ar[i]==CLOSETEXT){q(ar[++i],pf+'close');continue;} -if(ar[i]==SNAPX){p(ar[++i],pf+'snapx');continue;} -if(ar[i]==SNAPY){p(ar[++i],pf+'snapy');continue;} -if(ar[i]==FIXX){p(ar[++i],pf+'fixx');continue;} -if(ar[i]==FIXY){p(ar[++i],pf+'fixy');continue;} -if(ar[i]==RELX){p(ar[++i],pf+'relx');continue;} -if(ar[i]==RELY){p(ar[++i],pf+'rely');continue;} -if(ar[i]==MIDX){p(ar[++i],pf+'midx');continue;} -if(ar[i]==MIDY){p(ar[++i],pf+'midy');continue;} -if(ar[i]==REF){q(ar[++i],pf+'ref');continue;} -if(ar[i]==REFC){q(ar[++i],pf+'refc');continue;} -if(ar[i]==REFP){q(ar[++i],pf+'refp');continue;} -if(ar[i]==REFX){p(ar[++i],pf+'refx');continue;} -if(ar[i]==REFY){p(ar[++i],pf+'refy');continue;} -if(ar[i]==FGBACKGROUND){q(ar[++i],pf+'fgbackground');continue;} -if(ar[i]==BGBACKGROUND){q(ar[++i],pf+'bgbackground');continue;} -if(ar[i]==CGBACKGROUND){q(ar[++i],pf+'cgbackground');continue;} -if(ar[i]==PADX){p(ar[++i],pf+'padxl');p(ar[++i],pf+'padxr');continue;} -if(ar[i]==PADY){p(ar[++i],pf+'padyt');p(ar[++i],pf+'padyb');continue;} -if(Math.abs(ar[i])==FULLHTML){t(ar[i],pf+'fullhtml');continue;} -if(ar[i]==BELOW||ar[i]==ABOVE||ar[i]==VCENTER){p(ar[i],pf+'vpos');continue;} -if(ar[i]==CAPICON){q(ar[++i],pf+'capicon');continue;} -if(ar[i]==TEXTFONT){q(ar[++i],pf+'textfont');continue;} -if(ar[i]==CAPTIONFONT){q(ar[++i],pf+'captionfont');continue;} -if(ar[i]==CLOSEFONT){q(ar[++i],pf+'closefont');continue;} -if(ar[i]==TEXTSIZE){q(ar[++i],pf+'textsize');continue;} -if(ar[i]==CAPTIONSIZE){q(ar[++i],pf+'captionsize');continue;} -if(ar[i]==CLOSESIZE){q(ar[++i],pf+'closesize');continue;} -if(ar[i]==TIMEOUT){p(ar[++i],pf+'timeout');continue;} -if(ar[i]==DELAY){p(ar[++i],pf+'delay');continue;} -if(Math.abs(ar[i])==HAUTO){t(ar[i],pf+'hauto');continue;} -if(Math.abs(ar[i])==VAUTO){t(ar[i],pf+'vauto');continue;} -if(Math.abs(ar[i])==NOJUSTX){t(ar[i],pf+'nojustx');continue;} -if(Math.abs(ar[i])==NOJUSTY){t(ar[i],pf+'nojusty');continue;} -if(Math.abs(ar[i])==CLOSECLICK){t(ar[i],pf+'closeclick');continue;} -if(ar[i]==CLOSETITLE){q(ar[++i],pf+'closetitle');continue;} -if(ar[i]==FGCLASS){q(ar[++i],pf+'fgclass');continue;} -if(ar[i]==BGCLASS){q(ar[++i],pf+'bgclass');continue;} -if(ar[i]==CGCLASS){q(ar[++i],pf+'cgclass');continue;} -if(ar[i]==TEXTPADDING){p(ar[++i],pf+'textpadding');continue;} -if(ar[i]==TEXTFONTCLASS){q(ar[++i],pf+'textfontclass');continue;} -if(ar[i]==CAPTIONPADDING){p(ar[++i],pf+'captionpadding');continue;} -if(ar[i]==CAPTIONFONTCLASS){q(ar[++i],pf+'captionfontclass');continue;} -if(ar[i]==CLOSEFONTCLASS){q(ar[++i],pf+'closefontclass');continue;} -if(Math.abs(ar[i])==CAPBELOW){t(ar[i],pf+'capbelow');continue;} -if(ar[i]==LABEL){q(ar[++i],pf+'label');continue;} -if(ar[i]==DONOTHING){continue;} -i=OLparseCmdLine(pf,i,ar);}} -if((OLfunctionPI)&&OLudf&&o3_function)o3_text=o3_function(); -if(pf=='o3_')OLfontSize(); -} -function OLpar(a,v){eval(v+'='+a);} -function OLparQuo(a,v){eval(v+"='"+OLescSglQt(a)+"'");} -function OLescSglQt(s){return s.toString().replace(/'/g,"\\'");} -function OLtoggle(a,v){eval(v+'=('+v+'==0&&'+a+'>=0)?1:0');} -function OLhasDims(s){return /[%\-a-z]+$/.test(s);} -function OLfontSize(){ -var i;if(OLhasDims(o3_textsize)){if(OLns4)o3_textsize="2";}else -if(!OLns4){i=parseInt(o3_textsize);o3_textsize=(i>0&&i<8)?OLpct[i]:OLpct[0];} -if(OLhasDims(o3_captionsize)){if(OLns4)o3_captionsize="2";}else -if(!OLns4){i=parseInt(o3_captionsize);o3_captionsize=(i>0&&i<8)?OLpct[i]:OLpct[0];} -if(OLhasDims(o3_closesize)){if(OLns4)o3_closesize="2";}else -if(!OLns4){i=parseInt(o3_closesize);o3_closesize=(i>0&&i<8)?OLpct[i]:OLpct[0];} -} - -/* - LAYER FUNCTIONS -*/ -// Writes to layer -function OLlayerWrite(t){ -t+="\n"; -if(OLns4){over.document.write(t);over.document.close(); -}else if(typeof over.innerHTML!='undefined'){if(OLieM)over.innerHTML='';over.innerHTML=t; -}else{range=o3_frame.document.createRange();range.setStartAfter(over); -domfrag=range.createContextualFragment(t); -while(over.hasChildNodes()){over.removeChild(over.lastChild);} -over.appendChild(domfrag);} -} - -// Makes object visible -function OLshowObject(o){ -OLshowid=0;o=(OLns4)?o:o.style; -if(((OLfilterPI)&&!OLchkFilter(o))||!OLfilterPI)o.visibility="visible"; -if(OLshadowPI)OLshowShadow();if(OLiframePI)OLshowIfs();if(OLhidePI)OLhideUtil(1,1,0); -} - -// Hides object -function OLhideObject(o){ -if(OLshowid>0){clearTimeout(OLshowid);OLshowid=0;} -if(OLtimerid>0)clearTimeout(OLtimerid);if(OLdelayid>0)clearTimeout(OLdelayid); -OLtimerid=0;OLdelayid=0;self.status="";o3_label=ol_label; -if(o3_frame!=self)o=OLgetRefById(); -if(o){if(o.onmouseover)o.onmouseover=null; -if(OLscrollPI&&o==over)OLclearScroll(); -if(OLdraggablePI)OLclearDrag(); -if(OLfilterPI)OLcleanupFilter(o);if(OLshadowPI)OLhideShadow(); -var os=(OLns4)?o:o.style;os.visibility="hidden"; -if(OLhidePI&&o==over)OLhideUtil(0,0,1);if(OLiframePI)OLhideIfs(o);} -} - -// Moves layer -function OLrepositionTo(o,xL,yL){ -o=(OLns4)?o:o.style; -o.left=(OLns4?xL:xL+'px'); -o.top=(OLns4?yL:yL+'px'); -} - -// Handle NOCLOSE-MOUSEOFF -function OLoptMOUSEOFF(c){ -if(!c)o3_close=""; -over.onmouseover=function(){OLhover=1;if(OLtimerid>0){clearTimeout(OLtimerid);OLtimerid=0;}} -} -function OLcursorOff(){ -if(OLovertwoPI&&over==over2)return false; -var o=(OLns4?over:over.style),pHt=OLns4?over.clip.height:over.offsetHeight; -var left=parseInt(o.left),top=parseInt(o.top); -var right=left+o3_width,bottom=top+((OLbubblePI&&o3_bubble)?OLbubbleHt:pHt); -if(OLxright||OLybottom)return true; -return false; -} - -/* - REGISTRATION -*/ -var OLcmdLine=null,OLrunTime=null; -function OLsetRunTimeVar(){ -if(OLrunTime&&OLrunTime.length)for(var k=0;k-1){i=j;break;}}} -return i; -} -function OLisFunc(f){ -var r=1; -if(typeof f=='object'){for(var i=0;i=0)?1:0; +var OLsaf=(OLua.indexOf('safari')>=0)?1:0; +var OLkon=(OLua.indexOf('konqueror')>=0)?1:0; +var OLopr=(OLua.indexOf('opera')>=0)?1:0; +var OLop7=(OLopr&&document.createTextNode)?1:0; +if(OLopr){OLns4=OLns6=0;if(!OLop7)OLie4=0;} +var OLieM=((OLie4&&OLmac)&&!(OLsaf||OLkon||OLopr))?1:0; +var OLdr='document.body'; +var OLie5=0,OLie55=0;if(OLie4&&!OLopr){ +if((OLv=OLua.match(/msie (\d\.\d+)\.*/i))&&(OLv=parseFloat(OLv[1]))>=5.0){ +OLie5=1;OLns6=0;if(OLv>=5.5)OLie55=1; +if(typeof document.compatMode!='undefined'&&document.compatMode=='CSS1Compat') +OLdr='document.documentElement';}if(OLns6)OLie4=0;} +if(OLns4)window.onresize=function(){location.reload();} +// Capture events or diffuse the public functions. +var OLchkMseCapture=1,OLcapExtent; +if(OLns4||OLie4||OLns6)OLmouseCapture(); +else{overlib=nd=cClick=OLpageDefaults=no_overlib;ver3fix=true;} + +//////// +// PUBLIC FUNCTIONS +//////// +// overlib(arg0, ..., argN); Loads defaults then args into global runtime variables. +function overlib(){ +if(!(OLloaded&&OLgateOK))return; +if((OLexclusivePI)&&OLisExclusive(overlib.arguments))return true; +if(OLchkMseCapture)OLmouseCapture(); +if(over)cClick(); +// Load defaults to runtime. +OLloadP1or2();o3_close=ol_close;o3_closeclick=ol_closeclick;o3_closetitle=ol_closetitle; +o3_noclose=ol_noclose;o3_mouseoff=ol_mouseoff;o3_sticky=ol_sticky;o3_closecolor=ol_closecolor; +o3_closefont=ol_closefont;o3_closesize=ol_closesize;o3_closefontclass=ol_closefontclass; +OLsetRunTimeVar(); +OLfnRef="";OLhover=0;o3_frame=ol_frame; +if(OLns4)over=o3_frame.document.layers['overDiv']; +else if(OLie4)over=o3_frame.document.all['overDiv']; +else if(OLns6)over=o3_frame.document.getElementById("overDiv"); +OLparseTokens('o3_',overlib.arguments); +if(OLbubblePI&&o3_bubble)OLchkForBubbleEffect(); +if(OLdebugPI&&o3_allowdebug!="")OLsetDebugCanShow(o3_allowdebug); +if(OLshadowPI)OLinitShadow(); +if(OLiframePI)OLinitIframe(); +if(OLfilterPI)OLinitFilterLyr(); +// Prepare status line +if(OLexclusivePI&&o3_exclusive&&o3_exclusivestatus!="")o3_status=o3_exclusivestatus; +else if(o3_autostatus==2&&o3_cap!="")o3_status=o3_cap; +else if(o3_autostatus==1&&o3_text!="")o3_status=o3_text; +if(o3_delay==0){return OLmain(); +}else{o3_delayid=setTimeout("OLmain()",o3_delay); +// Set status line now if specified. +if(o3_status!=""){self.status=o3_status;return true;} +else if(!(OLop7&&event&&event.type=='mouseover'))return false;} +} + +// Clears popups if appropriate +function nd(time){ +if(!(OLloaded&&OLgateOK))return; +if((OLexclusivePI)&&OLisExclusive())return true; +if(time&&!o3_delay){ +if(o3_timerid>0)clearTimeout(o3_timerid);o3_timerid=setTimeout("cClick()",(o3_timeout=time)); +}else{if(o3_removecounter>=1)o3_showingsticky=0;if(o3_showingsticky==0){ +o3_allowmove=0;if(over)OLhideObject(over);}else{o3_removecounter++;}} +return true; +} + +// The Close function for stickies +function cClick(){ +if(OLloaded&&OLgateOK){OLhover=0;OLhideObject(over);o3_showingsticky=0;} +return false; +} + +// Set page-specific defaults. +function OLpageDefaults(){ +OLparseTokens('ol_',OLpageDefaults.arguments); +} + +// For unsupported browsers. +function no_overlib(){return ver3fix;} + +//////// +// OVERLIB MAIN FUNCTION SET +//////// +function OLmain(){ +o3_delay=0; +if(OLdraggablePI)OLcheckDrag(); +// Act on NOCLOSE or MOUSEOFF if in our frame, otherwise, ignore. +if(o3_frame==self){if(o3_noclose)OLoptMOUSEOFF(0);else if(o3_mouseoff)OLoptMOUSEOFF(1);} +// Create and write layer content +OLdoLyr(); +// For initial layer placement, even stickies may be moved. +o3_allowmove=0; +// Initiate a timer for timeout +if(o3_timeout>0){ +if(o3_timerid>0)clearTimeout(o3_timerid);o3_timerid=setTimeout("cClick()",o3_timeout);} +// Use REFerence if requested (center on failure) +if(o3_ref){OLrefXY=OLgetRefXY(o3_ref);if(OLrefXY[0]==null){o3_ref="";o3_midx=0;o3_midy=0;}} +// Place and show layer +OLdisp(o3_status);if(o3_status!="")return true; +else if(!(OLop7&&event&&event.type=='mouseover'))return false; +} + +// Loads defaults for primaries or secondaries +function OLloadP1or2(){ +o3_text=ol_text;o3_cap=ol_cap;o3_capbelow=ol_capbelow;o3_textpadding=ol_textpadding; +o3_captionpadding=ol_captionpadding;o3_border=ol_border;o3_base=ol_base;o3_status=ol_status; +o3_autostatus=ol_autostatus;o3_nofollow=ol_nofollow;o3_width=ol_width;o3_wrap=ol_wrap; +o3_wrapmax=ol_wrapmax;o3_height=ol_height;o3_hpos=ol_hpos;o3_vpos=ol_vpos;o3_offsetx=ol_offsetx; +o3_offsety=ol_offsety;o3_snapx=ol_snapx;o3_snapy=ol_snapy;o3_relx=ol_relx;o3_rely=ol_rely; +o3_midx=ol_midx;o3_midy=ol_midy;o3_ref=ol_ref;o3_refc=ol_refc;o3_refp=ol_refp;o3_refx=ol_refx; +o3_refy=ol_refy;o3_fixx=ol_fixx;o3_fixy=ol_fixy;o3_nojustx=ol_nojustx;o3_nojusty=ol_nojusty; +o3_hauto=ol_hauto;o3_vauto=ol_vauto;o3_timeout=ol_timeout;o3_delay=ol_delay; +o3_fgcolor=ol_fgcolor;o3_bgcolor=ol_bgcolor;o3_cgcolor=ol_cgcolor;o3_textcolor=ol_textcolor; +o3_capcolor=ol_capcolor;o3_textfont=ol_textfont;o3_captionfont=ol_captionfont; +o3_textsize=ol_textsize;o3_captionsize=ol_captionsize;o3_fgbackground=ol_fgbackground; +o3_bgbackground=ol_bgbackground;o3_cgbackground=ol_cgbackground;o3_capicon=ol_capicon; +o3_background=ol_background;o3_padxl=ol_padxl;o3_padxr=ol_padxr;o3_padyt=ol_padyt; +o3_padyb=ol_padyb;o3_fullhtml=ol_fullhtml;o3_fgclass=ol_fgclass;o3_bgclass=ol_bgclass; +o3_cgclass=ol_cgclass;o3_textfontclass=ol_textfontclass;o3_captionfontclass=ol_captionfontclass; +} + +// Chooses LGF +function OLdoLGF(){ +return (o3_background!=''||o3_fullhtml)?OLcontentBackground(o3_text,o3_background,o3_fullhtml): +(o3_cap=="")?OLcontentSimple(o3_text): +(o3_sticky)?OLcontentCaption(o3_text,o3_cap,o3_close):OLcontentCaption(o3_text,o3_cap,''); +} + +// Creates and writes layer content +function OLdoLyr(){ +// Create content +if(o3_background==''&&!o3_fullhtml){ +if(o3_fgbackground!='')o3_fgbackground=' background="'+o3_fgbackground+'"'; +if(o3_bgbackground!='')o3_bgbackground=' background="'+o3_bgbackground+'"'; +if(o3_cgbackground!='')o3_cgbackground=' background="'+o3_cgbackground+'"'; +if(o3_fgcolor!='')o3_fgcolor=' bgcolor="'+o3_fgcolor+'"'; +if(o3_bgcolor!='')o3_bgcolor=' bgcolor="'+o3_bgcolor+'"'; +if(o3_cgcolor!='')o3_cgcolor=' bgcolor="'+o3_cgcolor+'"'; +if(o3_height>0)o3_height=' height="'+o3_height+'"';else o3_height='';} +if(!OLns4)OLrepositionTo(over,(OLns6?20:0),0); +var lyrHtml=OLdoLGF(); +// If sticky, initialize +if(o3_sticky){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} +o3_showingsticky=1;o3_removecounter=0;} +// Write layer +if(o3_wrap&&!o3_fullhtml){ +OLlayerWrite(lyrHtml);o3_width=(OLns4?over.clip.width:over.offsetWidth); +o3_wrap=0;if(o3_wrapmax>0&&o3_width>o3_wrapmax)o3_width=o3_wrapmax;lyrHtml=OLdoLGF();} +OLlayerWrite(lyrHtml);o3_width=(OLns4?over.clip.width:over.offsetWidth); +if(OLbubblePI&&o3_bubble)OLgenerateBubble(lyrHtml); +} + +//////// +// LAYER GENERATION FUNCTIONS +//////// +// Makes simple table without caption +function OLcontentSimple(text){ +var txt= +'
              ' ++OLlgfUtil(0,o3_textfontclass,'div',o3_textcolor,o3_textfont,o3_textsize)+text ++OLlgfUtil(1,'','div')+'
              '+((o3_base>0&&!o3_wrap)? +('
              '):'')+''; +OLsetBackground(''); +return txt; +} + +// Makes table with caption and optional close link +function OLcontentCaption(text,title,close){ +var closing='',closeevent='onMouseOver',caption,maintxt,txt; +if(o3_closeclick==1)closeevent=(o3_closetitle?'title="'+o3_closetitle+'"':'')+' onClick'; +if(o3_capicon!='')o3_capicon=' '; +if(close!=''){closing='':'>'+OLlgfUtil(0,'','span',o3_closecolor,o3_closefont,o3_closesize))+close ++(o3_closefontclass?'':OLlgfUtil(1,'','span'))+'';} +caption='':'>')+(o3_captionfontclass?'
              ':'' ++OLlgfUtil(0,'','div',o3_capcolor,o3_captionfont,o3_captionsize))+o3_capicon+title ++OLlgfUtil(1,'','div')+(o3_captionfontclass?'':'')+''+closing+'
              '; +maintxt='
              ' ++OLlgfUtil(0,o3_textfontclass,'div',o3_textcolor,o3_textfont,o3_textsize)+text ++OLlgfUtil(1,'','div')+'
              '; +txt=''+(o3_capbelow?maintxt+caption:caption+maintxt)+((o3_base>0&&!o3_wrap)? +('
              '):'')+''; +OLsetBackground(''); +return txt; +} + +// Sets the background picture, padding and lots more. :) +function OLcontentBackground(text, picture, hasfullhtml){ +var txt;if(hasfullhtml){txt=text;}else{txt= +'' ++OLlgfUtil(0,o3_textfontclass,'div',o3_textcolor,o3_textfont,o3_textsize)+text+ +OLlgfUtil(1,'','div')+'';} +OLsetBackground(picture); +return txt; +} + +// LGF utility. +function OLlgfUtil(end,tfc,ele,col,fac,siz){ +if(end)return ('');else return (tfc?'
              ': +('<'+(OLns4?'font color="'+col+'" face="'+OLquoteMultiNameFonts(fac)+'" size="'+siz:ele ++' style="color:'+col+';font-family:'+OLquoteMultiNameFonts(fac)+';font-size:'+siz+';' ++(ele=='span'?'text-decoration:underline;':''))+'">')); +} + +// Quotes multi-word font names +function OLquoteMultiNameFonts(theFont){ +var i,v,pM=theFont.split(','); +for(i=0;i0)iWd=eval('o3_frame.'+OLdr).clientWidth; +else if(typeof(o3_frame.innerWidth)=='number'){ +SB=Math.ceil(1.4*(o3_frame.outerWidth-o3_frame.innerWidth));if(SB>20)SB=20; +iWd=o3_frame.innerWidth;}pgLeft=(OLie4)?eval('o3_frame.'+OLdr).scrollLeft:o3_frame.pageXOffset; +if(OLie55&&OLfilterPI&&o3_filtershadow)SB=CX=5;else +if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowx){SB+=((o3_shadowx>0)?o3_shadowx:0); +LM=((o3_shadowx<0)?Math.abs(o3_shadowx):0);CX=Math.abs(o3_shadowx);} +if(o3_ref!=""||o3_fixx> -1||o3_relx!=null||o3_midx!=null){ +if(o3_ref!=""){ +// Relative to a REFerence +X=OLrefXY[0];if(OLie55&&OLfilterPI&&o3_filtershadow){if(o3_refp=='UR'||o3_refp=='LR')X -= 5;} +else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowx){ +if(o3_shadowx<0&&(o3_refp=='UL'||o3_refp=='LL'))X += o3_shadowx; +else if(o3_shadowx>0&&(o3_refp=='UR'||o3_refp=='LR'))X -= o3_shadowx;} +}else{if(o3_midx!=null){ +// Middle of popup relative to middle of window +X=parseInt(pgLeft+((iWd-pWd-SB-LM)/2)+o3_midx); +}else{if(o3_relx!=null){ +// Relative to window margins +if(o3_relx>=0)X=pgLeft+o3_relx+LM;else X=pgLeft+o3_relx+iWd-pWd-SB; +}else{ +// Fixed position +X=o3_fixx+LM;}}} +}else{ +// From mouse +if(o3_hauto){ +if(o3_hpos==LEFT&&o3_x-pgLeftiWd/2&&o3_x+pWd+o3_offsetx>pgLeft+iWd-SB)o3_hpos=LEFT;} +X=(o3_hpos==CENTER)?parseInt(o3_x-((pWd+CX)/2)+o3_offsetx): +(o3_hpos==LEFT)?o3_x-o3_offsetx-pWd:o3_x+o3_offsetx; +if(o3_snapx>1){ +// Snapping +var snapping=X % o3_snapx; +if(o3_hpos==LEFT){X=X-(o3_snapx+snapping);}else{X=X+(o3_snapx-snapping);}}} +if(!o3_nojustx&&X+pWd>pgLeft+iWd-SB) +// Justify +X=iWd+pgLeft-pWd-SB;if(!o3_nojustx&&X-LM0))iHt=eval('o3_frame.'+OLdr).clientHeight; +else if(typeof(o3_frame.innerHeight)=='number')iHt=o3_frame.innerHeight; +if(OLbubblePI&&o3_bubble)pHt=OLbubbleHt;else pHt=OLns4?over.clip.height:over.offsetHeight; +if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowy){TM=(o3_shadowy<0)?Math.abs(o3_shadowy):0; +if(OLie55&&OLfilterPI&&o3_filtershadow)BM=CY=5;else +BM=(o3_shadowy>0)?o3_shadowy:0;CY=Math.abs(o3_shadowy);} +if(o3_ref!=""||o3_fixy> -1||o3_rely!=null||o3_midy!=null){ +if(o3_ref!=""){ +// Relative to a REFerence +Y=OLrefXY[1];if(OLie55&&OLfilterPI&&o3_filtershadow){if(o3_refp=='LL'||o3_refp=='LR')Y -= 5;} +else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowy){ +if(o3_shadowy<0&&(o3_refp=='UL'||o3_refp=='UR'))Y+=o3_shadowy;else +if(o3_shadowy>0&&(o3_refp=='LL'||o3_refp=='LR'))Y-=o3_shadowy;} +}else{if(o3_midy!=null){ +// Middle of popup relative to middle of window +Y=parseInt(pgTop+((iHt-pHt-CY)/2)+o3_midy); +}else{if(o3_rely!=null){ +// Relative to window margins +if(o3_rely>=0)Y=pgTop+o3_rely+TM;else Y=pgTop+o3_rely+iHt-pHt-BM;}else{ +// Fixed position +Y=o3_fixy+TM;}}} +}else{ +// From mouse +if(o3_vauto){ +if(o3_vpos==ABOVE&&o3_y-pgTopiHt/2&&o3_y+pHt+o3_offsety+(OLns4?17:0)>pgTop+iHt-BM) +o3_vpos=ABOVE;}Y=(o3_vpos==VCENTER)?parseInt(o3_y-((pHt+CY)/2)+o3_offsety): +(o3_vpos==ABOVE)?o3_y-(pHt+o3_offsety+BM):o3_y+o3_offsety+TM; +if(o3_snapy>1){ +// Snapping +var snapping=Y % o3_snapy; +if(pHt>0&&o3_vpos==ABOVE){Y=Y-(o3_snapy+snapping);}else{Y=Y+(o3_snapy-snapping);}}} +if(!o3_nojusty&&Y+pHt+BM>pgTop+iHt) +// Justify +Y=pgTop+iHt-pHt-BM;if(!o3_nojusty&&Y-TM1){ +mkObj=mref[0];refXY[0]+=mref[0].x+mref[1].pageX;refXY[1]+=mref[0].y+mref[1].pageY; +}else{if((mref.toString().indexOf('Image')!= -1)||(mref.toString().indexOf('Anchor')!= -1)){ +refXY[0]+=mref.x;refXY[1]+=mref.y;}else{refXY[0]+=mref.pageX;refXY[1]+=mref.pageY;}} +}else{refXY[0]+=OLpageLoc(mref,'Left');refXY[1]+=OLpageLoc(mref,'Top');} +of=OLgetRefOffsets(mkObj);refXY[0]+=of[0];refXY[1]+=of[1]; +return refXY; +} + +// Gets popup vs REFerence offsets +function OLgetRefOffsets(mkObj){ +var mc=o3_refc.toUpperCase(),mp=o3_refp.toUpperCase(),mW=mH=pW=pH=0,off=[0,0]; +pW=(OLbubblePI&&o3_bubble)?o3_width:OLns4?over.clip.width:over.offsetWidth; +pH=(OLbubblePI&&o3_bubble)?OLbubbleHt:OLns4?over.clip.height:over.offsetHeight; +if((!OLop7)&&mkObj.toString().indexOf('Image')!= -1){mW=mkObj.width;mH=mkObj.height; +}else if((!OLop7)&&mkObj.toString().indexOf('Anchor')!= -1){mc=o3_refc='UL';}else{ +mW=(OLns4)?mkObj.clip.width:mkObj.offsetWidth;mH=(OLns4)?mkObj.clip.height:mkObj.offsetHeight;} +if(mc=='UL'){off=(mp=='UR')?[-pW,0]:(mp=='LL')?[0,-pH]:(mp=='LR')?[-pW,-pH]:[0,0]; +}else if(mc=='UR'){off=(mp=='UR')?[mW-pW,0]:(mp=='LL')?[mW,-pH]:(mp=='LR')?[mW-pW,-pH]:[mW,0]; +}else if(mc=='LL'){off=(mp=='UR')?[-pW,mH]:(mp=='LL')?[0,mH-pH]:(mp=='LR')?[-pW,mH-pH]:[0,mH]; +}else if(mc=='LR'){off=(mp=='UR')?[mW-pW,mH]:(mp=='LL')?[mW,mH-pH]:(mp=='LR')?[mW-pW,mH-pH]: +[mW,mH];} +return off; +} + +// Gets x or y location of object +function OLpageLoc(o,t){ +var l=0; +while(o.offsetParent&&o.offsetParent.tagName.toLowerCase()!='html'){ +l+=o['offset'+t];o=o.offsetParent;}l+=o['offset'+t]; +return l; +} + +// Gets REFerence by id (or name synonym for post-NS4 browsers) +function OLgetRefById(l,d){ +var r="",j;d=(d||document); +if(d.all){return d.all[l];}else if(d.getElementById){return d.getElementById(l); +}else if(d.layers&&d.layers.length>0){if(d.layers[l])return d.layers[l]; +for(j=0;j0){ +for(j=0;j0)return r;else if(r)return [r,d.layers[j]];}} +return null; +} + +// Moves the layer +function OLmouseMove(e){ +var e=(e)?e:event; +if(e.pageX){o3_x=e.pageX;o3_y= e.pageY;} +else if(e.clientX){ +o3_x=e.clientX+eval('o3_frame.'+OLdr).scrollLeft; +o3_y=e.clientY+eval('o3_frame.'+OLdr).scrollTop;} +if(o3_allowmove){OLplaceLayer();if(OLhidePI)OLhideUtil(0,1,1,0,0,0);} +if(OLhover&&!OLns4&&OLcursorOff())cClick(); +} + +// Capture the mouse and chain other scripts. +function OLmouseCapture(){ +var fN,mseHandler=OLmouseMove,re=/function[ ]+(\w+)\(/; +OLcapExtent=document; +if(document.onmousemove||(!OLie4&&window.onmousemove)){ +if(window.onmousemove)OLcapExtent=window; +fN=OLcapExtent.onmousemove.toString().match(re) +if(!fN||fN[1]=='anonymous'||fN[1]=='OLmouseMove'){OLchkMseCapture=0;return;} +var str=fN[1]+'(e);'+'OLmouseMove(e);';mseHandler=new Function('e',str)} +OLcapExtent.onmousemove=mseHandler +if(OLns4)OLcapExtent.captureEvents(Event.MOUSEMOVE) +} + +//////// +// PARSING FUNCTION -- Does the actual command parsing. +//////// +function OLparseTokens(pf,ar){ +var v,md= -1,par=(pf!='ol_'); +OLudf=(par&&!ar.length?1:0); +for(i=0;i< ar.length;i++){ +if(md<0){ +// Arg is maintext,unless it's a number +if(typeof ar[i]=='number'){OLudf=(par?1:0);i--;} +else{switch(pf){ +case 'ol_':ol_text=ar[i];break; +default:o3_text=ar[i];}} +md=0; +}else{ +if(ar[i]==INARRAY){OLudf=0;eval(pf+'text=ol_texts['+ar[++i]+']');continue;} +if(ar[i]==CAPARRAY){eval(pf+'cap=ol_caps['+ar[++i]+']');continue;} +if(ar[i]==CAPTION){eval(pf+"cap='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==STICKY){eval(pf+'sticky=('+pf+'sticky==0)?1:0');continue;} +if(ar[i]==-STICKY){eval(pf+'sticky=0');continue;} +if(ar[i]==NOFOLLOW){eval(pf+'nofollow=('+pf+'nofollow==0)?1:0');continue;} +if(ar[i]==-NOFOLLOW){eval(pf+'nofollow=0');continue;} +if(ar[i]==BACKGROUND){eval(pf+"background='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==NOCLOSE){eval(pf+'noclose=('+pf+'noclose==0)?1:0');continue;} +if(ar[i]==-NOCLOSE){eval(pf+'noclose=0');continue;} +if(ar[i]==MOUSEOFF){eval(pf+'mouseoff=('+pf+'mouseoff==0)?1:0');continue;} +if(ar[i]==-MOUSEOFF){eval(pf+'mouseoff=0');continue;} +if(ar[i]==RIGHT||ar[i]==LEFT||ar[i]==CENTER){eval(pf+'hpos='+ar[i]);continue;} +if(ar[i]==OFFSETX){eval(pf+'offsetx='+ar[++i]);continue;} +if(ar[i]==OFFSETY){eval(pf+'offsety='+ar[++i]);continue;} +if(ar[i]==FGCOLOR){eval(pf+'fgcolor="'+ar[++i]+'"');continue;} +if(ar[i]==BGCOLOR){eval(pf+'bgcolor="'+ar[++i]+'"');continue;} +if(ar[i]==CGCOLOR){eval(pf+'cgcolor="'+ar[++i]+'"');continue;} +if(ar[i]==TEXTCOLOR){eval(pf+"textcolor='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==CAPCOLOR){eval(pf+"capcolor='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==CLOSECOLOR){eval(pf+"closecolor='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==WIDTH){eval(pf+'width='+ar[++i]);continue;} +if(ar[i]==WRAP){eval(pf+'wrap=('+pf+'wrap==0)?1:0');continue;} +if(ar[i]==-WRAP){eval(pf+'wrap=0');continue;} +if(ar[i]==WRAPMAX){eval(pf+'wrapmax='+ar[++i]);continue;} +if(ar[i]==HEIGHT){eval(pf+'height='+ar[++i]);continue;} +if(ar[i]==BORDER){eval(pf+'border='+ar[++i]);continue;} +if(ar[i]==BASE){eval(pf+'base='+ar[++i]);continue;} +if(ar[i]==STATUS){eval(pf+"status='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==AUTOSTATUS){eval(pf+'autostatus=('+pf+'autostatus==1)?0:1');continue;} +if(ar[i]==-AUTOSTATUS){eval(pf+'autostatus=('+pf+'autostatus==2)?2:0');continue;} +if(ar[i]==AUTOSTATUSCAP){eval(pf+'autostatus=('+pf+'autostatus==2)?0:2');continue;} +if(ar[i]==-AUTOSTATUSCAP){eval(pf+'autostatus=('+pf+'autostatus==1)?1:0');continue;} +if(ar[i]==CLOSETEXT){eval(pf+"close='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==SNAPX){eval(pf+'snapx='+ar[++i]);continue;} +if(ar[i]==SNAPY){eval(pf+'snapy='+ar[++i]);continue;} +if(ar[i]==FIXX){eval(pf+'fixx='+ar[++i]);continue;} +if(ar[i]==FIXY){eval(pf+'fixy='+ar[++i]);continue;} +if(ar[i]==RELX){eval(pf+'relx='+ar[++i]);continue;} +if(ar[i]==RELY){eval(pf+'rely='+ar[++i]);continue;} +if(ar[i]==MIDX){eval(pf+'midx='+ar[++i]);continue;} +if(ar[i]==MIDY){eval(pf+'midy='+ar[++i]);continue;} +if(ar[i]==REF){eval(pf+"ref='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==REFC){eval(pf+"refc='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==REFP){eval(pf+"refp='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==REFX){eval(pf+'refx='+ar[++i]);continue;} +if(ar[i]==REFY){eval(pf+'refy='+ar[++i]);continue;} +if(ar[i]==FGBACKGROUND){eval(pf+"fgbackground='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==BGBACKGROUND){eval(pf+"bgbackground='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==CGBACKGROUND){eval(pf+"cgbackground='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==PADX){eval(pf+'padxl='+ar[++i]);eval(pf+'padxr='+ar[++i]);continue;} +if(ar[i]==PADY){eval(pf+'padyt='+ar[++i]);eval(pf+'padyb='+ar[++i]);continue;} +if(ar[i]==FULLHTML){eval(pf+'fullhtml=('+pf+'fullhtml==0)?1:0');continue;} +if(ar[i]==-FULLHTML){eval(pf+'fullhtml=0');continue;} +if(ar[i]==BELOW||ar[i]==ABOVE||ar[i]==VCENTER){eval(pf+'vpos='+ar[i]);continue;} +if(ar[i]==CAPICON){eval(pf+'capicon="'+ar[++i]+'"');continue;} +if(ar[i]==TEXTFONT){eval(pf+"textfont='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==CAPTIONFONT){eval(pf+"captionfont='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==CLOSEFONT){eval(pf+"closefont='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==TEXTSIZE){eval(pf+"textsize='"+ar[++i]+"'");continue;} +if(ar[i]==CAPTIONSIZE){eval(pf+"captionsize='"+ar[++i]+"'");continue;} +if(ar[i]==CLOSESIZE){eval(pf+"closesize='"+ar[++i]+"'");continue;} +if(ar[i]==TIMEOUT){eval(pf+'timeout='+ar[++i]);continue;} +if(ar[i]==DELAY){eval(pf+'delay='+ar[++i]);continue;} +if(ar[i]==HAUTO){eval(pf+'hauto=('+pf+'hauto==0)?1:0');continue;} +if(ar[i]==-HAUTO){eval(pf+'hauto=0');continue;} +if(ar[i]==VAUTO){eval(pf+'vauto=('+pf+'vauto==0)?1:0');continue;} +if(ar[i]==-VAUTO){eval(pf+'vauto=0');continue;} +if(ar[i]==NOJUSTX){eval(pf+'nojustx=('+pf+'nojustx==0)?1:0');continue;} +if(ar[i]==-NOJUSTX){eval(pf+'nojustx=0');continue;} +if(ar[i]==NOJUSTY){eval(pf+'nojusty=('+pf+'nojusty==0)?1:0');continue;} +if(ar[i]==-NOJUSTY){eval(pf+'nojusty=0');continue;} +if(ar[i]==CLOSECLICK){eval(pf+'closeclick=('+pf+'closeclick==0)?1:0');continue;} +if(ar[i]==-CLOSECLICK){eval(pf+'closeclick=0');continue;} +if(ar[i]==CLOSETITLE){eval(pf+"closetitle='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==FGCLASS){eval(pf+"fgclass='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==BGCLASS){eval(pf+"bgclass='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==CGCLASS){eval(pf+"cgclass='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==TEXTPADDING){eval(pf+'textpadding='+ar[++i]);continue;} +if(ar[i]==TEXTFONTCLASS){eval(pf+"textfontclass='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==CAPTIONPADDING){eval(pf+'captionpadding='+ar[++i]);continue;} +if(ar[i]==CAPTIONFONTCLASS){eval(pf+"captionfontclass='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==CLOSEFONTCLASS){eval(pf+"closefontclass='"+OLescSglQt(ar[++i])+"'");continue;} +if(ar[i]==CAPBELOW){eval(pf+'capbelow=('+pf+'capbelow==0)?1:0');continue;} +if(ar[i]==-CAPBELOW){eval(pf+'capbelow=0');continue;} +if(ar[i]==DONOTHING){continue;} +i=OLparseCmdLine(pf,i,ar);}} +if((OLfunctionPI)&&OLudf&&o3_function)o3_text=o3_function(); +if(pf=='o3_')OLfontSize(); +} + +//////// +// LAYER FUNCTIONS +//////// +// Writes to a layer +function OLlayerWrite(txt){ +txt+="\n"; +if(OLns4){over.document.write(txt);over.document.close(); +}else if(typeof over.innerHTML!='undefined'){if(OLieM)over.innerHTML='';over.innerHTML=txt; +}else{range=o3_frame.document.createRange();range.setStartAfter(over); +domfrag=range.createContextualFragment(txt); +while(over.hasChildNodes()){over.removeChild(over.lastChild);} +over.appendChild(domfrag);} +} + +// Make an object visible +function OLshowObject(obj){ +var theObj=(OLns4?obj:obj.style);o3_showid=0; +if(((OLfilterPI)&&!OLchkFilter(theObj))||!OLfilterPI)theObj.visibility="visible"; +if(OLshadowPI)OLshowShadow();if(OLiframePI)OLshowIfShim();if(OLhidePI)OLhideUtil(1,1,0); +} + +// Hides an object +function OLhideObject(obj){ +var theObj=(OLns4?obj:obj.style); +if(o3_showid>0){clearTimeout(o3_showid);o3_showid=0;} +if(OLiframePI)OLhideIfShim();if(OLshadowPI)OLhideShadow(); +theObj.visibility="hidden"; +if(OLhidePI)OLhideUtil(0,0,1);if((OLfilterPI)&&o3_filter)OLcleanupFilter(theObj); +if(o3_timerid>0)clearTimeout(o3_timerid);if(o3_delayid>0)clearTimeout(o3_delayid); +o3_timerid=0;o3_delayid=0; +self.status=""; +if(OLdraggablePI&&o3_dragging)OLclearDrag(); +if(over.onmouseout||over.onmouseover){ +if(OLns4)over.releaseEvents(Event.MOUSEOUT||Event.MOUSEOVER); +over.onmouseout=over.onmouseover=null;} +if(OLscrollPI)OLclearScroll(); +} + +// Move a layer +function OLrepositionTo(obj,xL,yL){ +var theObj=(OLns4?obj:obj.style); +theObj.left=(OLns4?xL:xL+'px'); +theObj.top=(OLns4?yL:yL+'px'); +} + +// Check position of cursor relative to overDiv; mouseOut function +function OLcursorOff(){ +if(OLovertwoPI&&over==over2)return false; +var left=parseInt(over.style.left),top=parseInt(over.style.top); +var right=left+o3_width,bottom=top+((OLbubblePI&&o3_bubble)?OLbubbleHt:over.offsetHeight); +if(o3_xright||o3_ybottom)return true; +return false; +} + +//////// +// COMMAND FUNCTIONS +//////// +// Sets up mouseoff feature for stickies +function OLoptMOUSEOFF(close){ +if(!close)o3_close=""; +if(OLns4){ +over.captureEvents(Event.MOUSEOUT||Event.MOUSEOVER); +over.onmouseover=function(){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;}} +over.onmouseout=cClick; +}else if(OLie4||OLns6)over.onmouseover=function() +{OLhover=1;if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;}} +return 0; +} + +function OLescSglQt(str){ +return str.toString().replace(/'/g,"\\'"); +} + +function OLhasDims(str){ +return /[%\-a-z]+$/.test(str); +} + +function OLfontSize(){ +var i; +if(OLhasDims(o3_textsize)){if(OLns4)o3_textsize="2";}else +if(!OLns4){i=parseInt(o3_textsize);o3_textsize=(i>0&&i<8)?OLpct[i]:OLpct[0];} +if(OLhasDims(o3_captionsize)){if(OLns4)o3_captionsize="2";}else +if(!OLns4){i=parseInt(o3_captionsize);o3_captionsize=(i>0&&i<8)?OLpct[i]:OLpct[0];} +if(OLhasDims(o3_closesize)){if(OLns4)o3_closesize="2";}else +if(!OLns4){i=parseInt(o3_closesize);o3_closesize=(i>0&&i<8)?OLpct[i]:OLpct[0];} +} + +//////// +// REGISTRATION ROUTINES +//////// +function OLsetRunTimeVar(){ +if(typeof runTime!='undefined'&&runTime.length)for(var k=0;k-1){i=j;break;}}} +return i; +} + +function OLisFunc(fnRef){ +var rtn=true; +if(typeof fnRef=='object'){for(var i=0;iprefix.'block_instance SET pagetype = \'course-view\' WHERE pagetype = \'course\'', false); -} -// End of dirty compatibility hack -- remove this before 1.5 goes gold - -function page_import_types($path) { - global $CFG; - - static $types = array(); - - if(substr($path, -1) != '/') { - $path .= '/'; - } - - $path = clean_param($path, PARAM_PATH); - - if(isset($types[$path])) { - return $types[$path]; - } - - $file = $CFG->dirroot.'/'.$path.'pagelib.php'; - - if(is_file($file)) { - require($file); - if(!isset($DEFINEDPAGES)) { - error('Imported '.$file.' but found no page classes'); - } - return $types[$path] = $DEFINEDPAGES; - } - - return false; -} - -/** - * Factory function page_create_object(). Called with a numeric ID for a page, it autodetects - * the page type, constructs the correct object and returns it. - */ - -function page_create_instance($instance) { - page_id_and_class($id, $class); - return page_create_object($id, $instance); -} - -/** - * Factory function page_create_object(). Called with a pagetype identifier and possibly with - * its numeric ID. Returns a fully constructed page_base subclass you can work with. - */ - -function page_create_object($type, $id = NULL) { - global $CFG; - - $data = new stdClass; - $data->pagetype = $type; - $data->pageid = $id; - - $classname = page_map_class($type); - - $object = &new $classname; - // TODO: subclassing check here - - if ($object->get_type() !== $type) { - // Somehow somewhere someone made a mistake - if ($CFG->debug > 7) { - error('Page object\'s type ('. $object->get_type() .') does not match requested type ('. $type .')'); - } - } - - $object->init_quick($data); - return $object; -} - -/** - * Function page_map_class() is the way for your code to define its own page subclasses and let Moodle recognize them. - * Use it to associate the textual identifier of your Page with the actual class name that has to be instantiated. - */ - -function page_map_class($type, $classname = NULL) { - global $CFG; - - static $mappings = NULL; - - if ($mappings === NULL) { - $mappings = array( - PAGE_COURSE_VIEW => 'page_course' - ); - } - - if (!empty($type) && !empty($classname)) { - $mappings[$type] = $classname; - } - - if (!isset($mappings[$type])) { - if ($CFG->debug > 7) { - error('Page class mapping requested for unknown type: '.$type); - } - } - - if (!class_exists($mappings[$type])) { - if ($CFG->debug > 7) { - error('Page class mapping for id "'.$type.'" exists but class "'.$mappings[$type].'" is not defined'); - } - } - - return $mappings[$type]; -} - -/** - * Parent class from which all Moodle page classes derive - * - * @author Jon Papaioannou - * @package pages - * @todo This parent class is very messy still. Please for the moment ignore it and move on to the derived class page_course to see the comments there. - */ - -class page_base { - /** - * The string identifier for the type of page being described. - * @var string $type - */ - var $type = NULL; - - /** - * The numeric identifier of the page being described. - * @var int $id - */ - var $id = NULL; - - /** - * Class bool to determine if the instance's full initialization has been completed. - * @var boolean $full_init_done - */ - var $full_init_done = false; - - /** - * The class attribute that Moodle has to assign to the BODY tag for this page. - * @var string $body_class - */ - var $body_class = NULL; - - /** - * The id attribute that Moodle has to assign to the BODY tag for this page. - * @var string $body_id - */ - var $body_id = NULL; - -/// Class Functions - - // CONSTRUCTION - - // A whole battery of functions to allow standardized-name constructors in all versions of PHP. - // The constructor is actually called construct() - function page_base() { - $this->construct(); - } - - function __construct() { - $this->construct(); - } - - function construct() { - page_id_and_class($this->body_id, $this->body_class); - } - - // USER-RELATED THINGS - - // By default, no user is editing anything and none CAN edit anything. Developers - // will have to override these settings to let Moodle know when it should grant - // editing rights to the user viewing the page. - function user_allowed_editing() { - trigger_error('Page class does not implement method user_allowed_editing()', E_USER_WARNING); - return false; - } - function user_is_editing() { - trigger_error('Page class does not implement method user_is_editing()', E_USER_WARNING); - return false; - } - - // HTML OUTPUT SECTION - - // We have absolutely no idea what derived pages are all about - function print_header($title, $morebreadcrumbs) { - trigger_error('Page class does not implement method print_header()', E_USER_WARNING); - return; - } - - // BLOCKS RELATED SECTION - - // By default, pages don't have any blocks. Override this in your derived class if you need blocks. - function blocks_get_positions() { - return array(); - } - - // Thus there is no default block position. If you override the above you should override this one too. - // Because this makes sense only if blocks_get_positions() is overridden and because these two should - // be overridden as a group or not at all, this one issues a warning. The sneaky part is that this warning - // will only be seen if you override blocks_get_positions() but NOT blocks_default_position(). - function blocks_default_position() { - trigger_error('Page class does not implement method blocks_default_position()', E_USER_WARNING); - return NULL; - } - - // If you don't override this, newly constructed pages of this kind won't have any blocks. - function blocks_get_default() { - return ''; - } - - // If you don't override this, your blocks will not be able to change positions - function blocks_move_position(&$instance, $move) { - return $instance->position; - } - - // SELF-REPORTING SECTION - - // Derived classes HAVE to define their "home url" - function url_get_path() { - trigger_error('Page class does not implement method url_get_path()', E_USER_WARNING); - return NULL; - } - - // It's not always required to pass any arguments to the home url, so this doesn't trigger any errors (sensible default) - function url_get_parameters() { - return array(); - } - - // This should actually NEVER be overridden unless you have GOOD reason. Works fine as it is. - function url_get_full($extraparams = array()) { - $path = $this->url_get_path(); - if(empty($path)) { - return NULL; - } - - $params = $this->url_get_parameters(); - $params = array_merge($params, $extraparams); - - if(empty($params)) { - return $path; - } - - $first = true; - - foreach($params as $var => $value) { - $path .= $first? '?' : '&'; - $path .= $var .'='. urlencode($value); - $first = false; - } - - return $path; - } - - // This forces implementers to actually hardwire their page identification constant in the class. - // Good thing, if you ask me. That way we can later auto-detect "installed" page types by querying - // the classes themselves in the future. - function get_type() { - trigger_error('Page class does not implement method get_type()', E_USER_ERROR); - return NULL; - } - - // Simple stuff, do not override this. - function get_id() { - return $this->id; - } - - // "Sensible default" case here. Take it from the body id. - function get_format_name() { - return $this->body_id; - } - - // Returns $this->body_class - function get_body_class() { - return $this->body_class; - } - - // Returns $this->body_id - function get_body_id() { - return $this->body_id; - } - - // Initialize the data members of the parent class - function init_quick($data) { - $this->type = $data->pagetype; - $this->id = $data->pageid; - } - - function init_full() { - $this->full_init_done = true; - } -} - - -/** - * Class that models the behavior of a moodle course - * - * @author Jon Papaioannou - * @package pages - */ - -class page_course extends page_base { - - // Any data we might need to store specifically about ourself should be declared here. - // After init_full() is called for the first time, ALL of these variables should be - // initialized correctly and ready for use. - var $courserecord = NULL; - - // Do any validation of the officially recognized bits of the data and forward to parent. - // Do NOT load up "expensive" resouces (e.g. SQL data) here! - function init_quick($data) { - if(empty($data->pageid)) { - error('Cannot quickly initialize page: empty course id'); - } - parent::init_quick($data); - } - - // Here you should load up all heavy-duty data for your page. Basically everything that - // does not NEED to be loaded for the class to make basic decisions should NOT be loaded - // in init_quick() and instead deferred here. Of course this function had better recognize - // $this->full_init_done to prevent wasteful multiple-time data retrieval. - function init_full() { - if($this->full_init_done) { - return; - } - $this->courserecord = get_record('course', 'id', $this->id); - if(empty($this->courserecord)) { - error('Cannot fully initialize page: invalid course id '. $this->id); - } - $this->full_init_done = true; - } - - // USER-RELATED THINGS - - // When is a user said to have "editing rights" in this page? This would have something - // to do with roles, in the future. - function user_allowed_editing() { - return isteacheredit($this->id); - } - - // Is the user actually editing this page right now? This would have something - // to do with roles, in the future. - function user_is_editing() { - return isediting($this->id); - } - - // HTML OUTPUT SECTION - - // This function prints out the common part of the page's header. - // You should NEVER print the header "by hand" in other code. - function print_header($title, $morebreadcrumbs = NULL) { - global $USER, $CFG; - - $this->init_full(); - $replacements = array( - '%fullname%' => $this->courserecord->fullname - ); - foreach($replacements as $search => $replace) { - $title = str_replace($search, $replace, $title); - } - - if($this->courserecord->id == SITEID) { - $breadcrumbs = array(); - } - else { - $breadcrumbs = array($this->courserecord->shortname => $CFG->wwwroot.'/course/view.php?id='.$this->courserecord->id); - } - - if(!empty($morebreadcrumbs)) { - $breadcrumbs = array_merge($breadcrumbs, $morebreadcrumbs); - } - - $total = count($breadcrumbs); - $current = 1; - $crumbtext = ''; - foreach($breadcrumbs as $text => $href) { - if($current++ == $total) { - $crumbtext .= ' '.$text; - } - else { - $crumbtext .= ' '.$text.' ->'; - } - } - - // The "Editing On" button will be appearing only in the "main" course screen - // (i.e., no breadcrumbs other than the default one added inside this function) - $button = empty($morebreadcrumbs) ? update_course_icon($this->courserecord->id) : ' '; - - print_header($title, $this->courserecord->fullname, $crumbtext, - '', '', true, $button, user_login_string($this->courserecord, $USER)); - } - - // SELF-REPORTING SECTION - - // This is hardwired here so the factory function page_create_object() can be sure there was no mistake. - // Also, it doubles as a way to let others inquire about our type. - function get_type() { - return PAGE_COURSE_VIEW; - } - - // This is like the "category" of a page of this "type". For example, if the type is PAGE_COURSE_VIEW - // the format_name is the actual name of the course format. If the type were PAGE_ACTIVITY_VIEW, then - // the format_name might be that activity's name etc. - function get_format_name() { - $this->init_full(); - if($this->id == SITEID) { - return parent::get_format_name(); - } - return $this->body_id.'-'.$this->courserecord->format; - } - - // This should return a fully qualified path to the URL which is responsible for displaying us. - function url_get_path() { - global $CFG; - if($this->id == SITEID) { - return $CFG->wwwroot .'/index.php'; - } - else { - return $CFG->wwwroot .'/course/view.php'; - } - } - - // This should return an associative array of any GET/POST parameters that are needed by the URL - // which displays us to make it work. If none are needed, return an empty array. - function url_get_parameters() { - if($this->id == SITEID) { - return array(); - } - else { - return array('id' => $this->id); - } - } - - // BLOCKS RELATED SECTION - - // Which are the positions in this page which support blocks? Return an array containing their identifiers. - // BE CAREFUL, ORDER DOES MATTER! In textual representations, lists of blocks in a page use the ':' character - // to delimit different positions in the page. The part before the first ':' in such a representation will map - // directly to the first item of the array you return here, the second to the next one and so on. This way, - // you can add more positions in the future without interfering with legacy textual representations. - function blocks_get_positions() { - return array(BLOCK_POS_LEFT, BLOCK_POS_RIGHT); - } - - // When a new block is created in this page, which position should it go to? - function blocks_default_position() { - return BLOCK_POS_RIGHT; - } - - // When we are creating a new page, use the data at your disposal to provide a textual representation of the - // blocks that are going to get added to this new page. Delimit block names with commas (,) and use double - // colons (:) to delimit between block positions in the page. See blocks_get_positions() for additional info. - function blocks_get_default() { - global $CFG; - - $this->init_full(); - - if($this->id == SITEID) { - // Is it the site? - if (!empty($CFG->defaultblocks_site)) { - $blocknames = $CFG->defaultblocks_site; - } - /// Failsafe - in case nothing was defined. - else { - $blocknames = 'site_main_menu,admin,course_list:course_summary,calendar_month'; - } - } - // It's a normal course, so do it according to the course format - else { - $pageformat = $this->courserecord->format; - if (!empty($CFG->{'defaultblocks_'. $pageformat})) { - $blocknames = $CFG->{'defaultblocks_'. $pageformat}; - } - else { - $format_config = $CFG->dirroot.'/course/format/'.$pageformat.'/config.php'; - if (@is_file($format_config) && is_readable($format_config)) { - require($format_config); - } - if (!empty($format['defaultblocks'])) { - $blocknames = $format['defaultblocks']; - } - else if (!empty($CFG->defaultblocks)){ - $blocknames = $CFG->defaultblocks; - } - /// Failsafe - in case nothing was defined. - else { - $blocknames = 'participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity'; - } - } - } - - return $blocknames; - } - - // Given an instance of a block in this page and the direction in which we want to move it, where is - // it going to go? Return the identifier of the instance's new position. This allows us to tell blocklib - // how we want the blocks to move around in this page in an arbitrarily complex way. If the move as given - // does not make sense, make sure to return the instance's original position. - // - // Since this is going to get called a LOT, pass the instance by reference purely for speed. Do **NOT** - // modify its data in any way, this will actually confuse blocklib!!! - function blocks_move_position(&$instance, $move) { - if($instance->position == BLOCK_POS_LEFT && $move == BLOCK_MOVE_RIGHT) { - return BLOCK_POS_RIGHT; - } else if ($instance->position == BLOCK_POS_RIGHT && $move == BLOCK_MOVE_LEFT) { - return BLOCK_POS_LEFT; - } - return $instance->position; - } -} - -/** - * Class that models the common parts of all activity modules - * - * @author Jon Papaioannou - * @package pages - */ - -class page_generic_activity extends page_base { - var $activityname = NULL; - var $courserecord = NULL; - var $modulerecord = NULL; - var $activityrecord = NULL; - - function init_full() { - if($this->full_init_done) { - return; - } - if(empty($this->activityname)) { - error('Page object derived from page_generic_activity but did not define $this->activityname'); - } - $module = get_record('modules', 'name', $this->activityname); - $this->modulerecord = get_record('course_modules', 'module', $module->id, 'instance', $this->id); - if(empty($this->modulerecord)) { - error('Cannot fully initialize page: invalid '.$this->activityname.' instance id '. $this->id); - } - $this->courserecord = get_record('course', 'id', $this->modulerecord->course); - if(empty($this->courserecord)) { - error('Cannot fully initialize page: invalid course id '. $this->modulerecord->course); - } - $this->activityrecord = get_record($this->activityname, 'id', $this->id); - if(empty($this->courserecord)) { - error('Cannot fully initialize page: invalid '.$this->activityname.' id '. $this->id); - } - $this->full_init_done = true; - } - - function user_allowed_editing() { - $this->init_full(); - return isteacheredit($this->modulerecord->course); - } - - function user_is_editing() { - $this->init_full(); - return isediting($this->modulerecord->course); - } - - function url_get_path() { - global $CFG; - return $CFG->wwwroot .'/mod/'.$this->activityname.'/view.php'; - } - - function url_get_parameters() { - $this->init_full(); - return array('id' => $this->modulerecord->id); - } - - function blocks_get_positions() { - return array(BLOCK_POS_LEFT); - } - - function blocks_default_position() { - return BLOCK_POS_LEFT; - } -} - -?> diff --git a/lib/pclzip/pclzip.lib.php b/lib/pclzip/pclzip.lib.php index f5ac4f5361c..466997cdf18 100644 --- a/lib/pclzip/pclzip.lib.php +++ b/lib/pclzip/pclzip.lib.php @@ -1,5211 +1,4704 @@ -zipname = $p_zipname; - $this->zip_fd = 0; - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 1); - return; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // create($p_filelist, $p_add_dir="", $p_remove_dir="") - // create($p_filelist, $p_option, $p_option_value, ...) - // Description : - // This method supports two different synopsis. The first one is historical. - // This method creates a Zip Archive. The Zip file is created in the - // filesystem. The files and directories indicated in $p_filelist - // are added in the archive. See the parameters description for the - // supported format of $p_filelist. - // When a directory is in the list, the directory and its content is added - // in the archive. - // In this synopsis, the function takes an optional variable list of - // options. See bellow the supported options. - // Parameters : - // $p_filelist : An array containing file or directory names, or - // a string containing one filename or one directory name, or - // a string containing a list of filenames and/or directory - // names separated by spaces. - // $p_add_dir : A path to add before the real path of the archived file, - // in order to have it memorized in the archive. - // $p_remove_dir : A path to remove from the real path of the file to archive, - // in order to have a shorter path memorized in the archive. - // When $p_add_dir and $p_remove_dir are set, $p_remove_dir - // is removed first, before $p_add_dir is added. - // Options : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_OPT_COMMENT : - // PCLZIP_CB_PRE_ADD : - // PCLZIP_CB_POST_ADD : - // Return Values : - // 0 on failure, - // The list of the added files, with a status of the add action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- -// function create($p_filelist, $p_add_dir="", $p_remove_dir="") - function create($p_filelist /*, options */) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::create', "filelist='$p_filelist', ..."); - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Set default values - $v_options = array(); - $v_add_path = ""; - $v_remove_path = ""; - $v_remove_all_path = false; - $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method"); - - // ----- Look for arguments - if ($v_size > 1) { - // ----- Get the arguments - $v_arg_list = &func_get_args(); - - // ----- Remove form the options list the first argument - array_shift($v_arg_list); - $v_size--; - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected"); - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, - array (PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_ADD => 'optional', - PCLZIP_CB_POST_ADD => 'optional', - PCLZIP_OPT_NO_COMPRESSION => 'optional', - PCLZIP_OPT_COMMENT => 'optional' - //, PCLZIP_OPT_CRYPT => 'optional' - )); - if ($v_result != 1) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return 0; - } - - // ----- Set the arguments - if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { - $v_add_path = $v_options[PCLZIP_OPT_ADD_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { - $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { - $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; - } - } - - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis"); - - // ----- Get the first argument - $v_add_path = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_remove_path = $v_arg_list[1]; - } - else if ($v_size > 2) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, - "Invalid number / type of arguments"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return 0; - } - } - } - - // ----- Trace - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "add_path='$v_add_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_all_path?'true':'false')."'"); - - // ----- Look if the $p_filelist is really an array - $p_result_list = array(); - if (is_array($p_filelist)) - { - // ----- Call the create fct - $v_result = $this->privCreate($p_filelist, $p_result_list, $v_add_path, $v_remove_path, $v_remove_all_path, $v_options); - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_filelist)) - { - // ----- Create a list with the elements from the string - $v_list = explode(PCLZIP_SEPARATOR, $p_filelist); - - // ----- Call the create fct - $v_result = $this->privCreate($v_list, $p_result_list, $v_add_path, $v_remove_path, $v_remove_all_path, $v_options); - } - - // ----- Invalid variable - else - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); - $v_result = PCLZIP_ERR_INVALID_PARAMETER; - } - - if ($v_result != 1) - { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return 0; - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list); - return $p_result_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // add($p_filelist, $p_add_dir="", $p_remove_dir="") - // add($p_filelist, $p_option, $p_option_value, ...) - // Description : - // This method supports two synopsis. The first one is historical. - // This methods add the list of files in an existing archive. - // If a file with the same name already exists, it is added at the end of the - // archive, the first one is still present. - // If the archive does not exist, it is created. - // Parameters : - // $p_filelist : An array containing file or directory names, or - // a string containing one filename or one directory name, or - // a string containing a list of filenames and/or directory - // names separated by spaces. - // $p_add_dir : A path to add before the real path of the archived file, - // in order to have it memorized in the archive. - // $p_remove_dir : A path to remove from the real path of the file to archive, - // in order to have a shorter path memorized in the archive. - // When $p_add_dir and $p_remove_dir are set, $p_remove_dir - // is removed first, before $p_add_dir is added. - // Options : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_OPT_COMMENT : - // PCLZIP_OPT_ADD_COMMENT : - // PCLZIP_OPT_PREPEND_COMMENT : - // PCLZIP_CB_PRE_ADD : - // PCLZIP_CB_POST_ADD : - // Return Values : - // 0 on failure, - // The list of the added files, with a status of the add action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- -// function add($p_filelist, $p_add_dir="", $p_remove_dir="") - function add($p_filelist /* options */) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::add', "filelist='$p_filelist', ..."); - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Set default values - $v_options = array(); - $v_add_path = ""; - $v_remove_path = ""; - $v_remove_all_path = false; - $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method"); - - // ----- Look for arguments - if ($v_size > 1) { - // ----- Get the arguments - $v_arg_list = &func_get_args(); - - // ----- Remove form the options list the first argument - array_shift($v_arg_list); - $v_size--; - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected"); - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, - array (PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_ADD => 'optional', - PCLZIP_CB_POST_ADD => 'optional', - PCLZIP_OPT_NO_COMPRESSION => 'optional', - PCLZIP_OPT_COMMENT => 'optional', - PCLZIP_OPT_ADD_COMMENT => 'optional', - PCLZIP_OPT_PREPEND_COMMENT => 'optional' - //, PCLZIP_OPT_CRYPT => 'optional' - )); - if ($v_result != 1) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return 0; - } - - // ----- Set the arguments - if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { - $v_add_path = $v_options[PCLZIP_OPT_ADD_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { - $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { - $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; - } - } - - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis"); - - // ----- Get the first argument - $v_add_path = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_remove_path = $v_arg_list[1]; - } - else if ($v_size > 2) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return 0; - } - } - } - - // ----- Trace - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "add_path='$v_add_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_all_path?'true':'false')."'"); - - // ----- Look if the $p_filelist is really an array - $p_result_list = array(); - if (is_array($p_filelist)) - { - // ----- Call the create fct - $v_result = $this->privAdd($p_filelist, $p_result_list, $v_add_path, $v_remove_path, $v_remove_all_path, $v_options); - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_filelist)) - { - // ----- Create a list with the elements from the string - $v_list = explode(PCLZIP_SEPARATOR, $p_filelist); - - // ----- Call the create fct - $v_result = $this->privAdd($v_list, $p_result_list, $v_add_path, $v_remove_path, $v_remove_all_path, $v_options); - } - - // ----- Invalid variable - else - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); - $v_result = PCLZIP_ERR_INVALID_PARAMETER; - } - - if ($v_result != 1) - { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return 0; - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list); - return $p_result_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : listContent() - // Description : - // This public method, gives the list of the files and directories, with their - // properties. - // The properties of each entries in the list are (used also in other functions) : - // filename : Name of the file. For a create or add action it is the filename - // given by the user. For an extract function it is the filename - // of the extracted file. - // stored_filename : Name of the file / directory stored in the archive. - // size : Size of the stored file. - // compressed_size : Size of the file's data compressed in the archive - // (without the headers overhead) - // mtime : Last known modification date of the file (UNIX timestamp) - // comment : Comment associated with the file - // folder : true | false - // index : index of the file in the archive - // status : status of the action (depending of the action) : - // Values are : - // ok : OK ! - // filtered : the file / dir is not extracted (filtered by user) - // already_a_directory : the file can not be extracted because a - // directory with the same name already exists - // write_protected : the file can not be extracted because a file - // with the same name already exists and is - // write protected - // newer_exist : the file was not extracted because a newer file exists - // path_creation_fail : the file is not extracted because the folder - // does not exists and can not be created - // write_error : the file was not extracted because there was a - // error while writing the file - // read_error : the file was not extracted because there was a error - // while reading the file - // invalid_header : the file was not extracted because of an archive - // format error (bad file header) - // Note that each time a method can continue operating when there - // is an action error on a file, the error is only logged in the file status. - // Return Values : - // 0 on an unrecoverable failure, - // The list of the files in the archive. - // -------------------------------------------------------------------------------- - function listContent() - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::listContent', ""); - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return(0); - } - - // ----- Call the extracting fct - $p_list = array(); - if (($v_result = $this->privList($p_list)) != 1) - { - unset($p_list); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); - return(0); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list); - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // extract($p_path="./", $p_remove_path="") - // extract([$p_option, $p_option_value, ...]) - // Description : - // This method supports two synopsis. The first one is historical. - // This method extract all the files / directories from the archive to the - // folder indicated in $p_path. - // If you want to ignore the 'root' part of path of the memorized files - // you can indicate this in the optional $p_remove_path parameter. - // By default, if a newer file with the same name already exists, the - // file is not extracted. - // - // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions - // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append - // at the end of the path value of PCLZIP_OPT_PATH. - // Parameters : - // $p_path : Path where the files and directories are to be extracted - // $p_remove_path : First part ('root' part) of the memorized path - // (if any similar) to remove while extracting. - // Options : - // PCLZIP_OPT_PATH : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_CB_PRE_EXTRACT : - // PCLZIP_CB_POST_EXTRACT : - // Return Values : - // 0 or a negative value on failure, - // The list of the extracted files, with a status of the action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - //function extract($p_path="./", $p_remove_path="") - function extract(/* options */) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extract", ""); - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return(0); - } - - // ----- Set default values - $v_options = array(); - $v_path = "./"; - $v_remove_path = ""; - $v_remove_all_path = false; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method"); - - // ----- Default values for option - $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; - - // ----- Look for arguments - if ($v_size > 0) { - // ----- Get the arguments - $v_arg_list = &func_get_args(); - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options"); - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, - array (PCLZIP_OPT_PATH => 'optional', - PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_EXTRACT => 'optional', - PCLZIP_CB_POST_EXTRACT => 'optional', - PCLZIP_OPT_SET_CHMOD => 'optional', - PCLZIP_OPT_BY_NAME => 'optional', - PCLZIP_OPT_BY_EREG => 'optional', - PCLZIP_OPT_BY_PREG => 'optional', - PCLZIP_OPT_BY_INDEX => 'optional', - PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', - PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', - PCLZIP_OPT_REPLACE_NEWER => 'optional' - ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' - )); - if ($v_result != 1) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return 0; - } - - // ----- Set the arguments - if (isset($v_options[PCLZIP_OPT_PATH])) { - $v_path = $v_options[PCLZIP_OPT_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { - $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { - $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; - } - if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { - // ----- Check for '/' in last path char - if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { - $v_path .= '/'; - } - $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; - } - } - - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis"); - - // ----- Get the first argument - $v_path = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_remove_path = $v_arg_list[1]; - } - else if ($v_size > 2) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); - return 0; - } - } - } - - // ----- Trace - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'"); - - // ----- Call the extracting fct - $p_list = array(); - $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, - $v_remove_all_path, $v_options); - if ($v_result < 1) { - unset($p_list); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); - return(0); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list); - return $p_list; - } - // -------------------------------------------------------------------------------- - - - // -------------------------------------------------------------------------------- - // Function : - // extractByIndex($p_index, $p_path="./", $p_remove_path="") - // extractByIndex($p_index, [$p_option, $p_option_value, ...]) - // Description : - // This method supports two synopsis. The first one is historical. - // This method is doing a partial extract of the archive. - // The extracted files or folders are identified by their index in the - // archive (from 0 to n). - // Note that if the index identify a folder, only the folder entry is - // extracted, not all the files included in the archive. - // Parameters : - // $p_index : A single index (integer) or a string of indexes of files to - // extract. The form of the string is "0,4-6,8-12" with only numbers - // and '-' for range or ',' to separate ranges. No spaces or ';' - // are allowed. - // $p_path : Path where the files and directories are to be extracted - // $p_remove_path : First part ('root' part) of the memorized path - // (if any similar) to remove while extracting. - // Options : - // PCLZIP_OPT_PATH : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and - // not as files. - // The resulting content is in a new field 'content' in the file - // structure. - // This option must be used alone (any other options are ignored). - // PCLZIP_CB_PRE_EXTRACT : - // PCLZIP_CB_POST_EXTRACT : - // Return Values : - // 0 on failure, - // The list of the extracted files, with a status of the action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - function extractByIndex($p_index /* $options */) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extractByIndex", "index='$p_index', ..."); - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return(0); - } - - // ----- Set default values - $v_options = array(); - $v_path = "./"; - $v_remove_path = ""; - $v_remove_all_path = false; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method"); - - // ----- Default values for option - $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; - - // ----- Look for arguments - if ($v_size > 1) { - // ----- Get the arguments - $v_arg_list = &func_get_args(); - - // ----- Remove form the options list the first argument - array_shift($v_arg_list); - $v_size--; - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options"); - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, - array (PCLZIP_OPT_PATH => 'optional', - PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_EXTRACT => 'optional', - PCLZIP_CB_POST_EXTRACT => 'optional', - PCLZIP_OPT_SET_CHMOD => 'optional', - PCLZIP_OPT_REPLACE_NEWER => 'optional' - ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' - )); - if ($v_result != 1) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return 0; - } - - // ----- Set the arguments - if (isset($v_options[PCLZIP_OPT_PATH])) { - $v_path = $v_options[PCLZIP_OPT_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { - $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { - $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; - } - if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { - // ----- Check for '/' in last path char - if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { - $v_path .= '/'; - } - $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; - } - if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { - $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING not set."); - } - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING set."); - } - } - - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis"); - - // ----- Get the first argument - $v_path = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_remove_path = $v_arg_list[1]; - } - else if ($v_size > 2) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return 0; - } - } - } - - // ----- Trace - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "index='$p_index', path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'"); - - // ----- Trick - // Here I want to reuse extractByRule(), so I need to parse the $p_index - // with privParseOptions() - $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); - $v_options_trick = array(); - $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, - array (PCLZIP_OPT_BY_INDEX => 'optional' )); - if ($v_result != 1) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return 0; - } - $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; - - // ----- Call the extracting fct - if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); - return(0); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list); - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // delete([$p_option, $p_option_value, ...]) - // Description : - // Parameters : - // None - // Options : - // PCLZIP_OPT_BY_INDEX : - // Return Values : - // 0 on failure, - // The list of the files which are still present in the archive. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - function delete(/* options */) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::delete", ""); - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return(0); - } - - // ----- Set default values - $v_options = array(); - - // ----- Look for variable options arguments - $v_size = func_num_args(); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method"); - - // ----- Look for no arguments - if ($v_size <= 0) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing arguments"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); - return 0; - } - - // ----- Get the arguments - $v_arg_list = &func_get_args(); - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, - array (PCLZIP_OPT_BY_NAME => 'optional', - PCLZIP_OPT_BY_EREG => 'optional', - PCLZIP_OPT_BY_PREG => 'optional', - PCLZIP_OPT_BY_INDEX => 'optional' )); - if ($v_result != 1) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return 0; - } - - // ----- Check that at least one rule is set - if ( (!isset($v_options[PCLZIP_OPT_BY_NAME])) - && (!isset($v_options[PCLZIP_OPT_BY_EREG])) - && (!isset($v_options[PCLZIP_OPT_BY_PREG])) - && (!isset($v_options[PCLZIP_OPT_BY_INDEX]))) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "At least one filtering rule must be set"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); - return 0; - } - - // ----- Call the delete fct - $v_list = array(); - if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) - { - unset($v_list); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); - return(0); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_list); - return $v_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : deleteByIndex() - // Description : - // ***** Deprecated ***** - // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. - // -------------------------------------------------------------------------------- - function deleteByIndex($p_index) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::deleteByIndex", "index='$p_index'"); - - $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list); - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : properties() - // Description : - // This method gives the properties of the archive. - // The properties are : - // nb : Number of files in the archive - // comment : Comment associated with the archive file - // status : not_exist, ok - // Parameters : - // None - // Return Values : - // 0 on failure, - // An array with the archive properties. - // -------------------------------------------------------------------------------- - function properties() - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::properties", ""); - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return(0); - } - - // ----- Default properties - $v_prop = array(); - $v_prop['comment'] = ''; - $v_prop['nb'] = 0; - $v_prop['status'] = 'not_exist'; - - // ----- Look if file exists - if (@is_file($this->zipname)) - { - // ----- Open the zip file - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), 0); - return 0; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return 0; - } - - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Set the user attributes - $v_prop['comment'] = $v_central_dir['comment']; - $v_prop['nb'] = $v_central_dir['entries']; - $v_prop['status'] = 'ok'; - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_prop); - return $v_prop; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : duplicate() - // Description : - // This method creates an archive by copying the content of an other one. If - // the archive already exist, it is replaced by the new one without any warning. - // Parameters : - // $p_archive : The filename of a valid archive, or - // a valid PclZip object. - // Return Values : - // 1 on success. - // 0 or a negative value on error (error code). - // -------------------------------------------------------------------------------- - function duplicate($p_archive) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::duplicate", ""); - $v_result = 1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Look if the $p_archive is a PclZip object - if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is valid PclZip object '".$p_archive->zipname."'"); - - // ----- Duplicate the archive - $v_result = $this->privDuplicate($p_archive->zipname); - } - - // ----- Look if the $p_archive is a string (so a filename) - else if (is_string($p_archive)) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is a filename '$p_archive'"); - - // ----- Check that $p_archive is a valid zip file - // TBC : Should also check the archive format - if (!is_file($p_archive)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'"); - $v_result = PCLZIP_ERR_MISSING_FILE; - } - else { - // ----- Duplicate the archive - $v_result = $this->privDuplicate($p_archive); - } - } - - // ----- Invalid variable - else - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); - $v_result = PCLZIP_ERR_INVALID_PARAMETER; - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : merge() - // Description : - // This method merge the $p_archive_to_add archive at the end of the current - // one ($this). - // If the archive ($this) does not exist, the merge becomes a duplicate. - // If the $p_archive_to_add archive does not exist, the merge is a success. - // Parameters : - // $p_archive_to_add : It can be directly the filename of a valid zip archive, - // or a PclZip object archive. - // Return Values : - // 1 on success, - // 0 or negative values on error (see below). - // -------------------------------------------------------------------------------- - function merge($p_archive_to_add) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::merge", ""); - $v_result = 1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); - return(0); - } - - // ----- Look if the $p_archive_to_add is a PclZip object - if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is valid PclZip object"); - - // ----- Merge the archive - $v_result = $this->privMerge($p_archive_to_add); - } - - // ----- Look if the $p_archive_to_add is a string (so a filename) - else if (is_string($p_archive_to_add)) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is a filename"); - - // ----- Create a temporary archive - $v_object_archive = new PclZip($p_archive_to_add); - - // ----- Merge the archive - $v_result = $this->privMerge($v_object_archive); - } - - // ----- Invalid variable - else - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); - $v_result = PCLZIP_ERR_INVALID_PARAMETER; - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - - - // -------------------------------------------------------------------------------- - // Function : errorCode() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function errorCode() - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - return(PclErrorCode()); - } - else { - return($this->error_code); - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : errorName() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function errorName($p_with_code=false) - { - $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', - PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', - PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', - PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', - PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', - PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', - PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', - PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', - PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', - PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', - PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', - PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', - PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', - PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', - PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', - PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', - PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', - PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', - PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION' ); - - if (isset($v_name[$this->error_code])) { - $v_value = $v_name[$this->error_code]; - } - else { - $v_value = 'NoName'; - } - - if ($p_with_code) { - return($v_value.' ('.$this->error_code.')'); - } - else { - return($v_value); - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : errorInfo() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function errorInfo($p_full=false) - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - return(PclErrorString()); - } - else { - if ($p_full) { - return($this->errorName(true)." : ".$this->error_string); - } - else { - return($this->error_string." [code ".$this->error_code."]"); - } - } - } - // -------------------------------------------------------------------------------- - - -// -------------------------------------------------------------------------------- -// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** -// ***** ***** -// ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** -// -------------------------------------------------------------------------------- - - - - // -------------------------------------------------------------------------------- - // Function : privCheckFormat() - // Description : - // This method check that the archive exists and is a valid zip archive. - // Several level of check exists. (futur) - // Parameters : - // $p_level : Level of check. Default 0. - // 0 : Check the first bytes (magic codes) (default value)) - // 1 : 0 + Check the central directory (futur) - // 2 : 1 + Check each file header (futur) - // Return Values : - // true on success, - // false on error, the error code is set. - // -------------------------------------------------------------------------------- - function privCheckFormat($p_level=0) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFormat", ""); - $v_result = true; - - // ----- Reset the file system cache - clearstatcache(); - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Look if the file exits - if (!is_file($this->zipname)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo()); - return(false); - } - - // ----- Check that the file is readeable - if (!is_readable($this->zipname)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo()); - return(false); - } - - // ----- Check the magic code - // TBC - - // ----- Check the central header - // TBC - - // ----- Check each file header - // TBC - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privParseOptions() - // Description : - // This internal methods reads the variable list of arguments ($p_options_list, - // $p_size) and generate an array with the options and values ($v_result_list). - // $v_requested_options contains the options that can be present and those that - // must be present. - // $v_requested_options is an array, with the option value as key, and 'optional', - // or 'mandatory' as value. - // Parameters : - // See above. - // Return Values : - // 1 on success. - // 0 on failure. - // -------------------------------------------------------------------------------- - function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privParseOptions", ""); - $v_result=1; - - // ----- Read the options - $i=0; - while ($i<$p_size) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Looking for table index $i, option = '".PclZipUtilOptionText($p_options_list[$i])."(".$p_options_list[$i].")'"); - - // ----- Check if the option is requested - if (!isset($v_requested_options[$p_options_list[$i]])) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Look for next option - switch ($p_options_list[$i]) { - // ----- Look for options that request a path value - case PCLZIP_OPT_PATH : - case PCLZIP_OPT_REMOVE_PATH : - case PCLZIP_OPT_ADD_PATH : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Get the value - $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], false); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'"); - $i++; - break; - - // ----- Look for options that request an array of string for value - case PCLZIP_OPT_BY_NAME : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Get the value - if (is_string($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; - } - else if (is_array($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - } - else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'"); - $i++; - break; - - // ----- Look for options that request an EREG or PREG expression - case PCLZIP_OPT_BY_EREG : - case PCLZIP_OPT_BY_PREG : - //case PCLZIP_OPT_CRYPT : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Get the value - if (is_string($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - } - else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'"); - $i++; - break; - - // ----- Look for options that takes a string - case PCLZIP_OPT_COMMENT : - case PCLZIP_OPT_ADD_COMMENT : - case PCLZIP_OPT_PREPEND_COMMENT : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, - "Missing parameter value for option '" - .PclZipUtilOptionText($p_options_list[$i]) - ."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Get the value - if (is_string($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - } - else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, - "Wrong parameter value for option '" - .PclZipUtilOptionText($p_options_list[$i]) - ."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'"); - $i++; - break; - - // ----- Look for options that request an array of index - case PCLZIP_OPT_BY_INDEX : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Get the value - $v_work_list = array(); - if (is_string($p_options_list[$i+1])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is a string '".$p_options_list[$i+1]."'"); - - // ----- Remove spaces - $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); - - // ----- Parse items - $v_work_list = explode(",", $p_options_list[$i+1]); - } - else if (is_integer($p_options_list[$i+1])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an integer '".$p_options_list[$i+1]."'"); - $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; - } - else if (is_array($p_options_list[$i+1])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an array"); - $v_work_list = $p_options_list[$i+1]; - } - else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Reduce the index list - // each index item in the list must be a couple with a start and - // an end value : [0,3], [5-5], [8-10], ... - // ----- Check the format of each item - $v_sort_flag=false; - $v_sort_value=0; - for ($j=0; $j= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Get the value - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'"); - $i++; - break; - - // ----- Look for options that request a call-back - case PCLZIP_CB_PRE_EXTRACT : - case PCLZIP_CB_POST_EXTRACT : - case PCLZIP_CB_PRE_ADD : - case PCLZIP_CB_POST_ADD : - /* for futur use - case PCLZIP_CB_PRE_DELETE : - case PCLZIP_CB_POST_DELETE : - case PCLZIP_CB_PRE_LIST : - case PCLZIP_CB_POST_LIST : - */ - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Get the value - $v_function_name = $p_options_list[$i+1]; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "call-back ".PclZipUtilOptionText($p_options_list[$i])." = '".$v_function_name."'"); - - // ----- Check that the value is a valid existing function - if (!function_exists($v_function_name)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Set the attribute - $v_result_list[$p_options_list[$i]] = $v_function_name; - $i++; - break; - - default : - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, - "Unknown parameter '" - .$p_options_list[$i]."'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Next options - $i++; - } - - // ----- Look for mandatory options - if ($v_requested_options !== false) { - for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { - // ----- Look for mandatory option - if ($v_requested_options[$key] == 'mandatory') { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")"); - // ----- Look if present - if (!isset($v_result_list[$key])) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - } - } - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCreate() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privCreate($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCreate", "list, result_list, add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); - $v_result=1; - $v_list_detail = array(); - - // ----- Open the file in write mode - if (($v_result = $this->privOpenFd('wb')) != 1) - { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Add the list of files - $v_result = $this->privAddList($p_list, $p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options); - - // ----- Close - $this->privCloseFd(); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAdd() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privAdd($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAdd", "list, result_list, add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); - $v_result=1; - $v_list_detail = array(); - - // ----- Look if the archive exists or is empty - if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, or is empty, create it."); - - // ----- Do a create - $v_result = $this->privCreate($p_list, $p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Open the zip file - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($v_result=$this->privOpenFd('rb')) != 1) - { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - $this->privCloseFd(); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Go to beginning of File - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'"); - @rewind($this->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'"); - - // ----- Creates a temporay file - $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; - - // ----- Open the temporary file in write mode - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) - { - $this->privCloseFd(); - - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Copy the files from the archive to the temporary file - // TBC : Here I should better append the file and go back to erase the central dir - $v_size = $v_central_dir['offset']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); - $v_buffer = fread($this->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Swap the file descriptor - // Here is a trick : I swap the temporary fd with the zip fd, in order to use - // the following methods on the temporary fil and not the real archive - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Add the files - $v_header_list = array(); - if (($v_result = $this->privAddFileList($p_list, $v_header_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options)) != 1) - { - fclose($v_zip_temp_fd); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($this->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset"); - - // ----- Copy the block of file headers from the old archive - $v_size = $v_central_dir['size']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); - $v_buffer = @fread($v_zip_temp_fd, $v_read_size); - @fwrite($this->zip_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Create the Central Dir files header - for ($i=0, $v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { - fclose($v_zip_temp_fd); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - $v_count++; - } - - // ----- Transform the header to a 'usable' info - $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); - } - - // ----- Zip file comment - $v_comment = $v_central_dir['comment']; - if (isset($p_options[PCLZIP_OPT_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_COMMENT]; - } - if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { - $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT]; - } - if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment; - } - - // ----- Calculate the size of the central header - $v_size = @ftell($this->zip_fd)-$v_offset; - - // ----- Create the central dir footer - if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) - { - // ----- Reset the file list - unset($v_header_list); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Swap back the file descriptor - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Close - $this->privCloseFd(); - - // ----- Close the temporary file - @fclose($v_zip_temp_fd); - - // ----- Delete the zip file - // TBC : I should test the result ... - @unlink($this->zipname); - - // ----- Rename the temporary file - // TBC : I should test the result ... - //@rename($v_zip_temp_name, $this->zipname); - PclZipUtilRename($v_zip_temp_name, $this->zipname); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privOpenFd() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function privOpenFd($p_mode) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privOpenFd", 'mode='.$p_mode); - $v_result=1; - - // ----- Look if already open - if ($this->zip_fd != 0) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Open the zip file - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Open file in '.$p_mode.' mode'); - if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCloseFd() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function privCloseFd() - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCloseFd", ""); - $v_result=1; - - if ($this->zip_fd != 0) - @fclose($this->zip_fd); - $this->zip_fd = 0; - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddList() - // Description : - // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is - // different from the real path of the file. This is usefull if you want to have PclTar - // running in any directory, and memorize relative path from an other directory. - // Parameters : - // $p_list : An array containing the file or directory names to add in the tar - // $p_result_list : list of added files with their properties (specially the status field) - // $p_add_dir : Path to add in the filename path archived - // $p_remove_dir : Path to remove in the filename path archived - // Return Values : - // -------------------------------------------------------------------------------- - function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddList", "list, add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); - $v_result=1; - - // ----- Add the files - $v_header_list = array(); - if (($v_result = $this->privAddFileList($p_list, $v_header_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options)) != 1) - { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($this->zip_fd); - - // ----- Create the Central Dir files header - for ($i=0,$v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - $v_count++; - } - - // ----- Transform the header to a 'usable' info - $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); - } - - // ----- Zip file comment - $v_comment = ''; - if (isset($p_options[PCLZIP_OPT_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_COMMENT]; - } - - // ----- Calculate the size of the central header - $v_size = @ftell($this->zip_fd)-$v_offset; - - // ----- Create the central dir footer - if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) - { - // ----- Reset the file list - unset($v_header_list); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddFileList() - // Description : - // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is - // different from the real path of the file. This is usefull if you want to - // run the lib in any directory, and memorize relative path from an other directory. - // Parameters : - // $p_list : An array containing the file or directory names to add in the tar - // $p_result_list : list of added files with their properties (specially the status field) - // $p_add_dir : Path to add in the filename path archived - // $p_remove_dir : Path to remove in the filename path archived - // Return Values : - // -------------------------------------------------------------------------------- - function privAddFileList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFileList", "list, add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); - $v_result=1; - $v_header = array(); - - // ----- Recuperate the current number of elt in list - $v_nb = sizeof($p_result_list); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Before add, list have $v_nb elements"); - - // ----- Loop on the files - for ($j=0; ($jprivAddFile($p_filename, $v_header, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options)) != 1) - { - // ----- Return status - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Store the file infos - $p_result_list[$v_nb++] = $v_header; - } - - // ----- Look for directory - if (@is_dir($p_filename)) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "$p_filename is a directory"); - - // ----- Look for path - if ($p_filename != ".") - $v_path = $p_filename."/"; - else - $v_path = ""; - - // ----- Read the directory for files and sub-directories - if ($p_hdir = @opendir($p_filename)) { -// $p_hitem = @readdir($p_hdir); // '.' directory -// $p_hitem = @readdir($p_hdir); // '..' directory - while (($p_hitem = @readdir($p_hdir)) !== false) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for $p_hitem in the directory"); - - // ----- Skip '.' and '..' - if (($p_hitem == '.') || ($p_hitem == '..')) { - continue; - } - - // ----- Look for a file - if (@is_file($v_path.$p_hitem)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Add the file '".$v_path.$p_hitem."'"); - - // ----- Add the file - if (($v_result = $this->privAddFile($v_path.$p_hitem, $v_header, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options)) != 1) { - // ----- Return status - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Store the file infos - $p_result_list[$v_nb++] = $v_header; - } - - // ----- Recursive call to privAddFileList() - else if (@is_dir($v_path.$p_hitem)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Add the directory '".$v_path.$p_hitem."'"); - - // ----- Need an array as parameter - $p_temp_list[0] = $v_path.$p_hitem; - $v_result = $this->privAddFileList($p_temp_list, $p_result_list, - $p_add_dir, $p_remove_dir, - $p_remove_all_dir, $p_options); - - // ----- Update the number of elements of the list - $v_nb = sizeof($p_result_list); - } - - // ----- Unsupported file types - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Unsupported file type"); - } - } - @closedir($p_hdir); - } - - // ----- Free memory for the recursive loop - unset($p_temp_list); - unset($p_hdir); - unset($p_hitem); - } - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "After add, list have $v_nb elements"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddFile() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privAddFile($p_filename, &$p_header, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFile", "filename='$p_filename', add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); - $v_result=1; - - if ($p_filename == "") - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Calculate the stored filename - $v_stored_filename = $p_filename; - - // ----- Look for all path to remove - if ($p_remove_all_dir) { - $v_stored_filename = basename($p_filename); - } - // ----- Look for partial path remove - else if ($p_remove_dir != "") - { - if (substr($p_remove_dir, -1) != '/') - $p_remove_dir .= "/"; - - if ((substr($p_filename, 0, 2) == "./") || (substr($p_remove_dir, 0, 2) == "./")) - { - if ((substr($p_filename, 0, 2) == "./") && (substr($p_remove_dir, 0, 2) != "./")) - $p_remove_dir = "./".$p_remove_dir; - if ((substr($p_filename, 0, 2) != "./") && (substr($p_remove_dir, 0, 2) == "./")) - $p_remove_dir = substr($p_remove_dir, 2); - } - - $v_compare = PclZipUtilPathInclusion($p_remove_dir, $p_filename); - if ($v_compare > 0) -// if (substr($p_filename, 0, strlen($p_remove_dir)) == $p_remove_dir) - { - - if ($v_compare == 2) { - $v_stored_filename = ""; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Path to remove is the current folder"); - } - else { - $v_stored_filename = substr($p_filename, strlen($p_remove_dir)); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove path '$p_remove_dir' in file '$p_filename' = '$v_stored_filename'"); - } - } - } - // ----- Look for path to add - if ($p_add_dir != "") - { - if (substr($p_add_dir, -1) == "/") - $v_stored_filename = $p_add_dir.$v_stored_filename; - else - $v_stored_filename = $p_add_dir."/".$v_stored_filename; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Add path '$p_add_dir' in file '$p_filename' = '$v_stored_filename'"); - } - - // ----- Filename (reduce the path of stored name) - $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Filename (reduced) '$v_stored_filename', strlen ".strlen($v_stored_filename)); - - // ----- Set the file properties - clearstatcache(); - $p_header['version'] = 20; - $p_header['version_extracted'] = 10; - $p_header['flag'] = 0; - $p_header['compression'] = 0; - $p_header['mtime'] = filemtime($p_filename); - $p_header['crc'] = 0; - $p_header['compressed_size'] = 0; - $p_header['size'] = filesize($p_filename); - $p_header['filename_len'] = strlen($p_filename); - $p_header['extra_len'] = 0; - $p_header['comment_len'] = 0; - $p_header['disk'] = 0; - $p_header['internal'] = 0; -// $p_header['external'] = (is_file($p_filename)?0xFE49FFE0:0x41FF0010); - $p_header['external'] = (is_file($p_filename)?0x00000000:0x00000010); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header external extension '".sprintf("0x%X",$p_header['external'])."'"); - $p_header['offset'] = 0; - $p_header['filename'] = $p_filename; - $p_header['stored_filename'] = $v_stored_filename; - $p_header['extra'] = ''; - $p_header['comment'] = ''; - $p_header['status'] = 'ok'; - $p_header['index'] = -1; - - - // ----- Look for pre-add callback - if (isset($p_options[PCLZIP_CB_PRE_ADD])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_ADD]."()') is defined for the extraction"); - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_header, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);'); - if ($v_result == 0) { - // ----- Change the file status - $p_header['status'] = "skipped"; - $v_result = 1; - } - - // ----- Update the informations - // Only some fields can be modified - if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { - $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New stored filename is '".$p_header['stored_filename']."'"); - } - } - - // ----- Look for empty stored filename - if ($p_header['stored_filename'] == "") { - $p_header['status'] = "filtered"; - } - - // ----- Check the path length - if (strlen($p_header['stored_filename']) > 0xFF) { - $p_header['status'] = 'filename_too_long'; - } - - // ----- Look if no error, or file not skipped - if ($p_header['status'] == 'ok') { - - // ----- Look for a file - if (is_file($p_filename)) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a file"); - // ----- Open the source file - if (($v_file = @fopen($p_filename, "rb")) == 0) { - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be compressed"); - // ----- Read the file content - $v_content_compressed = @fread($v_file, $p_header['size']); - - // ----- Calculate the CRC - $p_header['crc'] = @crc32($v_content_compressed); - - // ----- Set header parameters - $p_header['compressed_size'] = $p_header['size']; - $p_header['compression'] = 0; - } - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will be compressed"); - // ----- Read the file content - $v_content = @fread($v_file, $p_header['size']); - - // ----- Calculate the CRC - $p_header['crc'] = @crc32($v_content); - - // ----- Compress the file - $v_content_compressed = @gzdeflate($v_content); - - // ----- Set header parameters - $p_header['compressed_size'] = strlen($v_content_compressed); - $p_header['compression'] = 8; - } - - // ----- Look for encryption - /* - if ((isset($p_options[PCLZIP_OPT_CRYPT])) - && ($p_options[PCLZIP_OPT_CRYPT] != "")) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File need to be crypted ...."); - - // Should be a random header - $v_header = 'xxxxxxxxxxxx'; - $v_content_compressed = PclZipUtilZipEncrypt($v_content_compressed, - $p_header['compressed_size'], - $v_header, - $p_header['crc'], - "test"); - - $p_header['compressed_size'] += 12; - $p_header['flag'] = 1; - - // ----- Add the header to the data - $v_content_compressed = $v_header.$v_content_compressed; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size after header : ".strlen($v_content_compressed).""); - } - */ - - // ----- Call the header generation - if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { - @fclose($v_file); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Write the compressed (or not) content - $v_binary_data = pack('a'.$p_header['compressed_size'], - $v_content_compressed); - @fwrite($this->zip_fd, $v_binary_data, $p_header['compressed_size']); - - // ----- Close the file - @fclose($v_file); - } - - // ----- Look for a directory - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a folder"); - // ----- Look for directory last '/' - if (@substr($p_header['stored_filename'], -1) != '/') { - $p_header['stored_filename'] .= '/'; - } - - // ----- Set the file properties - $p_header['size'] = 0; - //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked - $p_header['external'] = 0x00000010; // Value for a folder : to be checked - - // ----- Call the header generation - if (($v_result = $this->privWriteFileHeader($p_header)) != 1) - { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - } - } - - // ----- Look for pre-add callback - if (isset($p_options[PCLZIP_CB_POST_ADD])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_ADD]."()') is defined for the extraction"); - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_header, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);'); - if ($v_result == 0) { - // ----- Ignored - $v_result = 1; - } - - // ----- Update the informations - // Nothing can be modified - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privWriteFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privWriteFileHeader(&$p_header) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"'); - $v_result=1; - - // TBC - //for(reset($p_header); $key = key($p_header); next($p_header)) { - // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "header[$key] = ".$p_header[$key]); - //} - - // ----- Store the offset position of the file - $p_header['offset'] = ftell($this->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File offset of the header :'.$p_header['offset']); - - // ----- Transform UNIX mtime to DOS format mdate/mtime - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); - $v_date = getdate($p_header['mtime']); - $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; - $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; - - // ----- Packed data - $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, - $p_header['version_extracted'], $p_header['flag'], - $p_header['compression'], $v_mtime, $v_mdate, - $p_header['crc'], $p_header['compressed_size'], - $p_header['size'], - strlen($p_header['stored_filename']), - $p_header['extra_len']); - - // ----- Write the first 148 bytes of the header in the archive - fputs($this->zip_fd, $v_binary_data, 30); - - // ----- Write the variable fields - if (strlen($p_header['stored_filename']) != 0) - { - fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); - } - if ($p_header['extra_len'] != 0) - { - fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privWriteCentralFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privWriteCentralFileHeader(&$p_header) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"'); - $v_result=1; - - // TBC - //for(reset($p_header); $key = key($p_header); next($p_header)) { - // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "header[$key] = ".$p_header[$key]); - //} - - // ----- Transform UNIX mtime to DOS format mdate/mtime - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); - $v_date = getdate($p_header['mtime']); - $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; - $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; - - // ----- Packed data - $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, - $p_header['version'], $p_header['version_extracted'], - $p_header['flag'], $p_header['compression'], - $v_mtime, $v_mdate, $p_header['crc'], - $p_header['compressed_size'], $p_header['size'], - strlen($p_header['stored_filename']), - $p_header['extra_len'], $p_header['comment_len'], - $p_header['disk'], $p_header['internal'], - $p_header['external'], $p_header['offset']); - - // ----- Write the 42 bytes of the header in the zip file - fputs($this->zip_fd, $v_binary_data, 46); - - // ----- Write the variable fields - if (strlen($p_header['stored_filename']) != 0) - { - fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); - } - if ($p_header['extra_len'] != 0) - { - fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); - } - if ($p_header['comment_len'] != 0) - { - fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privWriteCentralHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralHeader", 'nb_entries='.$p_nb_entries.', size='.$p_size.', offset='.$p_offset.', comment="'.$p_comment.'"'); - $v_result=1; - - // ----- Packed data - $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, - $p_nb_entries, $p_size, - $p_offset, strlen($p_comment)); - - // ----- Write the 22 bytes of the header in the zip file - fputs($this->zip_fd, $v_binary_data, 22); - - // ----- Write the variable fields - if (strlen($p_comment) != 0) - { - fputs($this->zip_fd, $p_comment, strlen($p_comment)); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privList() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privList(&$p_list) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privList", "list"); - $v_result=1; - - // ----- Open the zip file - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Go to beginning of Central Dir - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Offset : ".$v_central_dir['offset']."'"); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'"); - @rewind($this->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'"); - if (@fseek($this->zip_fd, $v_central_dir['offset'])) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'"); - - // ----- Read each entry - for ($i=0; $i<$v_central_dir['entries']; $i++) - { - // ----- Read the file header - if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) - { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - $v_header['index'] = $i; - - // ----- Get the only interesting attributes - $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); - unset($v_header); - } - - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privConvertHeader2FileInfo() - // Description : - // This function takes the file informations from the central directory - // entries and extract the interesting parameters that will be given back. - // The resulting file infos are set in the array $p_info - // $p_info['filename'] : Filename with full path. Given by user (add), - // extracted in the filesystem (extract). - // $p_info['stored_filename'] : Stored filename in the archive. - // $p_info['size'] = Size of the file. - // $p_info['compressed_size'] = Compressed size of the file. - // $p_info['mtime'] = Last modification date of the file. - // $p_info['comment'] = Comment associated with the file. - // $p_info['folder'] = true/false : indicates if the entry is a folder or not. - // $p_info['status'] = status of the action on the file. - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privConvertHeader2FileInfo($p_header, &$p_info) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privConvertHeader2FileInfo", "Filename='".$p_header['filename']."'"); - $v_result=1; - - // ----- Get the interesting attributes - $p_info['filename'] = $p_header['filename']; - $p_info['stored_filename'] = $p_header['stored_filename']; - $p_info['size'] = $p_header['size']; - $p_info['compressed_size'] = $p_header['compressed_size']; - $p_info['mtime'] = $p_header['mtime']; - $p_info['comment'] = $p_header['comment']; - $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010); - $p_info['index'] = $p_header['index']; - $p_info['status'] = $p_header['status']; - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractByRule() - // Description : - // Extract a file or directory depending of rules (by index, by name, ...) - // Parameters : - // $p_file_list : An array where will be placed the properties of each - // extracted file - // $p_path : Path to add while writing the extracted files - // $p_remove_path : Path to remove (from the file memorized path) while writing the - // extracted files. If the path does not match the file path, - // the file is extracted with its memorized path. - // $p_remove_path does not apply to 'list' mode. - // $p_path and $p_remove_path are commulative. - // Return Values : - // 1 on success,0 or less on error (see error code list) - // -------------------------------------------------------------------------------- - function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privExtractByRule", "path='$p_path', remove_path='$p_remove_path', remove_all_path='".($p_remove_all_path?'true':'false')."'"); - $v_result=1; - - // ----- Check the path - if (($p_path == "") || ((substr($p_path, 0, 1) != "/") && (substr($p_path, 0, 3) != "../") && (substr($p_path,1,2)!=":/"))) - $p_path = "./".$p_path; - - // ----- Reduce the path last (and duplicated) '/' - if (($p_path != "./") && ($p_path != "/")) - { - // ----- Look for the path end '/' - while (substr($p_path, -1) == "/") - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Destination path [$p_path] ends by '/'"); - $p_path = substr($p_path, 0, strlen($p_path)-1); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Modified to [$p_path]"); - } - } - - // ----- Look for path to remove format (should end by /) - if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) - { - $p_remove_path .= '/'; - } - $p_remove_path_size = strlen($p_remove_path); - - // ----- Open the zip file - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($v_result = $this->privOpenFd('rb')) != 1) - { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - // ----- Close the zip file - $this->privCloseFd(); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Start at beginning of Central Dir - $v_pos_entry = $v_central_dir['offset']; - - // ----- Read each entry - $j_start = 0; - for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry : '$i'"); - - // ----- Read next Central dir entry - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position before rewind : ".ftell($this->zip_fd)."'"); - @rewind($this->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position after rewind : ".ftell($this->zip_fd)."'"); - if (@fseek($this->zip_fd, $v_pos_entry)) - { - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position after fseek : ".ftell($this->zip_fd)."'"); - - // ----- Read the file header - $v_header = array(); - if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) - { - // ----- Close the zip file - $this->privCloseFd(); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Store the index - $v_header['index'] = $i; - - // ----- Store the file position - $v_pos_entry = ftell($this->zip_fd); - - // ----- Look for the specific extract rules - $v_extract = false; - - // ----- Look for extract by name rule - if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) - && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'"); - - // ----- Look if the filename is in the list - for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) - && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The directory is in the file path"); - $v_extract = true; - } - } - // ----- Look for a filename - elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The file is the right one."); - $v_extract = true; - } - } - } - - // ----- Look for extract by ereg rule - else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) - && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'"); - - if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression"); - $v_extract = true; - } - } - - // ----- Look for extract by preg rule - else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) - && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'"); - - if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression"); - $v_extract = true; - } - } - - // ----- Look for extract by index rule - else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) - && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'"); - - // ----- Look if the index is in the list - for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found as part of an index range"); - $v_extract = true; - } - if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Do not look this index range for next loop"); - $j_start = $j+1; - } - - if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Index range is greater than index, stop loop"); - break; - } - } - } - - // ----- Look for no rule, which means extract all the archive - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with no rule (extract all)"); - $v_extract = true; - } - - // ----- Check compression method - if ( ($v_extract) - && ( ($v_header['compression'] != 8) - && ($v_header['compression'] != 0))) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported compression method (".$v_header['compression'].")"); - $v_header['status'] = 'unsupported_compression'; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) - && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped"); - - PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, - "Filename '".$v_header['stored_filename']."' is " - ."compressed by an unsupported compression " - ."method (".$v_header['compression'].") "); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - } - - // ----- Check encrypted files - if (($v_extract) && (($v_header['flag'] & 1) == 1)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unsupported file encryption"); - $v_header['status'] = 'unsupported_encryption'; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) - && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped"); - - PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, - "Unsupported encryption for " - ." filename '".$v_header['stored_filename'] - ."'"); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - } - - // ----- Look for real extraction - if (($v_extract) && ($v_header['status'] != 'ok')) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "No need for extract"); - $v_result = $this->privConvertHeader2FileInfo($v_header, - $p_file_list[$v_nb_extracted++]); - if ($v_result != 1) { - $this->privCloseFd(); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - $v_extract = false; - } - - // ----- Look for real extraction - if ($v_extract) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file '".$v_header['filename']."', index '$i'"); - - // ----- Go to the file position - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'"); - @rewind($this->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'"); - if (@fseek($this->zip_fd, $v_header['offset'])) - { - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'"); - - // ----- Look for extraction as string - if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { - - // ----- Extracting the file - $v_result1 = $this->privExtractFileAsString($v_header, $v_string); - if ($v_result1 < 1) { - $this->privCloseFd(); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1); - return $v_result1; - } - - // ----- Get the only interesting attributes - if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) - { - // ----- Close the zip file - $this->privCloseFd(); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Set the file content - $p_file_list[$v_nb_extracted]['content'] = $v_string; - - // ----- Next extracted file - $v_nb_extracted++; - - // ----- Look for user callback abort - if ($v_result1 == 2) { - break; - } - } - // ----- Look for extraction in standard output - elseif ( (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) - && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { - // ----- Extracting the file in standard output - $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); - if ($v_result1 < 1) { - $this->privCloseFd(); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1); - return $v_result1; - } - - // ----- Get the only interesting attributes - if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { - $this->privCloseFd(); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Look for user callback abort - if ($v_result1 == 2) { - break; - } - } - // ----- Look for normal extraction - else { - // ----- Extracting the file - $v_result1 = $this->privExtractFile($v_header, - $p_path, $p_remove_path, - $p_remove_all_path, - $p_options); - if ($v_result1 < 1) { - $this->privCloseFd(); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1); - return $v_result1; - } - - // ----- Get the only interesting attributes - if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) - { - // ----- Close the zip file - $this->privCloseFd(); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Look for user callback abort - if ($v_result1 == 2) { - break; - } - } - } - } - - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFile() - // Description : - // Parameters : - // Return Values : - // - // 1 : ... ? - // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback - // -------------------------------------------------------------------------------- - function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFile', "path='$p_path', remove_path='$p_remove_path', remove_all_path='".($p_remove_all_path?'true':'false')."'"); - $v_result=1; - - // ----- Read the file header - if (($v_result = $this->privReadFileHeader($v_header)) != 1) - { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'"); - - // ----- Check that the file header is coherent with $p_entry info - if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { - // TBC - } - - // ----- Look for all path to remove - if ($p_remove_all_path == true) { - // ----- Look for folder entry that not need to be extracted - if (($p_entry['external']&0x00000010)==0x00000010) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The entry is a folder : need to be filtered"); - - $p_entry['status'] = "filtered"; - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "All path is removed"); - // ----- Get the basename of the path - $p_entry['filename'] = basename($p_entry['filename']); - } - - // ----- Look for path to remove - else if ($p_remove_path != "") - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Look for some path to remove"); - if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The folder is the same as the removed path '".$p_entry['filename']."'"); - - // ----- Change the file status - $p_entry['status'] = "filtered"; - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - $p_remove_path_size = strlen($p_remove_path); - if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '".$p_entry['filename']."'"); - - // ----- Remove the path - $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Resulting file is '".$p_entry['filename']."'"); - } - } - - // ----- Add the path - if ($p_path != '') - { - $p_entry['filename'] = $p_path."/".$p_entry['filename']; - } - - // ----- Look for pre-extract callback - if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_EXTRACT]."()') is defined for the extraction"); - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); - if ($v_result == 0) { - // ----- Change the file status - $p_entry['status'] = "skipped"; - $v_result = 1; - } - - // ----- Look for abort result - if ($v_result == 2) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction"); - // ----- This status is internal and will be changed in 'skipped' - $p_entry['status'] = "aborted"; - $v_result = PCLZIP_ERR_USER_ABORTED; - } - - // ----- Update the informations - // Only some fields can be modified - $p_entry['filename'] = $v_local_header['filename']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'"); - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'"); - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - - // ----- Look for specific actions while the file exist - if (file_exists($p_entry['filename'])) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_entry['filename']."' already exists"); - - // ----- Look if file is a directory - if (is_dir($p_entry['filename'])) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is a directory"); - - // ----- Change the file status - $p_entry['status'] = "already_a_directory"; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - // For historical reason first PclZip implementation does not stop - // when this kind of error occurs. - if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) - && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped"); - - PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, - "Filename '".$p_entry['filename']."' is " - ."already used by an existing directory"); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - } - // ----- Look if file is write protected - else if (!is_writeable($p_entry['filename'])) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is write protected"); - - // ----- Change the file status - $p_entry['status'] = "write_protected"; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - // For historical reason first PclZip implementation does not stop - // when this kind of error occurs. - if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) - && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped"); - - PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, - "Filename '".$p_entry['filename']."' exists " - ."and is write protected"); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - } - - // ----- Look if the extracted file is older - else if (filemtime($p_entry['filename']) > $p_entry['mtime']) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is newer (".date("l dS of F Y h:i:s A", filemtime($p_entry['filename'])).") than the extracted file (".date("l dS of F Y h:i:s A", $p_entry['mtime']).")"); - // ----- Change the file status - if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) - && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_REPLACE_NEWER is selected, file will be replaced"); - } - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be replaced"); - $p_entry['status'] = "newer_exist"; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - // For historical reason first PclZip implementation does not stop - // when this kind of error occurs. - if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) - && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "PCLZIP_OPT_STOP_ON_ERROR is selected, extraction will be stopped"); - - PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, - "Newer version of '".$p_entry['filename']."' exists " - ."and option PCLZIP_OPT_REPLACE_NEWER is not selected"); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - } - } - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is older than the extrated one - will be replaced by the extracted one (".date("l dS of F Y h:i:s A", filemtime($p_entry['filename'])).") than the extracted file (".date("l dS of F Y h:i:s A", $p_entry['mtime']).")"); - } - } - - // ----- Check the directory availability and create it if necessary - else { - if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/')) - $v_dir_to_check = $p_entry['filename']; - else if (!strstr($p_entry['filename'], "/")) - $v_dir_to_check = ""; - else - $v_dir_to_check = dirname($p_entry['filename']); - - if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to create path for '".$p_entry['filename']."'"); - - // ----- Change the file status - $p_entry['status'] = "path_creation_fail"; - - // ----- Return - ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - //return $v_result; - $v_result = 1; - } - } - } - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - - // ----- Do the extraction (if not a folder) - if (!(($p_entry['external']&0x00000010)==0x00000010)) - { - // ----- Look for not compressed file - if ($p_entry['compression'] == 0) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file"); - - // ----- Opening destination file - if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode"); - - // ----- Change the file status - $p_entry['status'] = "write_error"; - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read '".$p_entry['size']."' bytes"); - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - $v_size = $p_entry['compressed_size']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read $v_read_size bytes"); - $v_buffer = fread($this->zip_fd, $v_read_size); - $v_binary_data = pack('a'.$v_read_size, $v_buffer); - @fwrite($v_dest_file, $v_binary_data, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Closing the destination file - fclose($v_dest_file); - - // ----- Change the file mtime - touch($p_entry['filename'], $p_entry['mtime']); - - - } - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (Compression method ".$p_entry['compression'].")"); - // ----- TBC - // Need to be finished - if (($p_entry['flag'] & 1) == 1) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File is encrypted"); - /* - // ----- Read the encryption header - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read 12 encryption header bytes"); - $v_encryption_header = @fread($this->zip_fd, 12); - - // ----- Read the encrypted & compressed file in a buffer - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read '".($p_entry['compressed_size']-12)."' compressed & encrypted bytes"); - $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']-12); - - // ----- Decrypt the buffer - $this->privDecrypt($v_encryption_header, $v_buffer, - $p_entry['compressed_size']-12, $p_entry['crc']); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Buffer is '".$v_buffer."'"); - */ - } - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read '".$p_entry['compressed_size']."' compressed bytes"); - // ----- Read the compressed file in a buffer (one shot) - $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - } - - // ----- Decompress the file - $v_file_content = @gzinflate($v_buffer); - unset($v_buffer); - if ($v_file_content === FALSE) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to inflate compressed file"); - - // ----- Change the file status - // TBC - $p_entry['status'] = "error"; - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Opening destination file - if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode"); - - // ----- Change the file status - $p_entry['status'] = "write_error"; - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Write the uncompressed data - @fwrite($v_dest_file, $v_file_content, $p_entry['size']); - unset($v_file_content); - - // ----- Closing the destination file - @fclose($v_dest_file); - - // ----- Change the file mtime - @touch($p_entry['filename'], $p_entry['mtime']); - } - - // ----- Look for chmod option - if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "chmod option activated '".$p_options[PCLZIP_OPT_SET_CHMOD]."'"); - - // ----- Change the mode of the file - @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done"); - } - } - - // ----- Change abort status - if ($p_entry['status'] == "aborted") { - $p_entry['status'] = "skipped"; - } - - // ----- Look for post-extract callback - elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_EXTRACT]."()') is defined for the extraction"); - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); - - // ----- Look for abort result - if ($v_result == 2) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction"); - $v_result = PCLZIP_ERR_USER_ABORTED; - } - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFileInOutput() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privExtractFileInOutput(&$p_entry, &$p_options) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileInOutput', ""); - $v_result=1; - - // ----- Read the file header - if (($v_result = $this->privReadFileHeader($v_header)) != 1) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'"); - - // ----- Check that the file header is coherent with $p_entry info - if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { - // TBC - } - - // ----- Look for pre-extract callback - if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_EXTRACT]."()') is defined for the extraction"); - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); - if ($v_result == 0) { - // ----- Change the file status - $p_entry['status'] = "skipped"; - $v_result = 1; - } - - // ----- Look for abort result - if ($v_result == 2) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction"); - // ----- This status is internal and will be changed in 'skipped' - $p_entry['status'] = "aborted"; - $v_result = PCLZIP_ERR_USER_ABORTED; - } - - // ----- Update the informations - // Only some fields can be modified - $p_entry['filename'] = $v_local_header['filename']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'"); - } - - // ----- Trace - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'"); - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - - // ----- Do the extraction (if not a folder) - if (!(($p_entry['external']&0x00000010)==0x00000010)) { - // ----- Look for not compressed file - if ($p_entry['compressed_size'] == $p_entry['size']) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file"); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes"); - - // ----- Read the file in a buffer (one shot) - $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Send the file to the output - echo $v_buffer; - unset($v_buffer); - } - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file"); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Reading '".$p_entry['size']."' bytes"); - - // ----- Read the compressed file in a buffer (one shot) - $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Decompress the file - $v_file_content = gzinflate($v_buffer); - unset($v_buffer); - - // ----- Send the file to the output - echo $v_file_content; - unset($v_file_content); - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done"); - } - } - - // ----- Change abort status - if ($p_entry['status'] == "aborted") { - $p_entry['status'] = "skipped"; - } - - // ----- Look for post-extract callback - elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_EXTRACT]."()') is defined for the extraction"); - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. - eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); - - // ----- Look for abort result - if ($v_result == 2) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "User callback abort the extraction"); - $v_result = PCLZIP_ERR_USER_ABORTED; - } - } - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFileAsString() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privExtractFileAsString(&$p_entry, &$p_string) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileAsString', "p_entry['filename']='".$p_entry['filename']."'"); - $v_result=1; - - // ----- Read the file header - $v_header = array(); - if (($v_result = $this->privReadFileHeader($v_header)) != 1) - { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'"); - - // ----- Check that the file header is coherent with $p_entry info - if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { - // TBC - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file in string (with path) '".$p_entry['filename']."', size '$v_header[size]'"); - - // ----- Do the extraction (if not a folder) - if (!(($p_entry['external']&0x00000010)==0x00000010)) - { - // ----- Look for not compressed file -// if ($p_entry['compressed_size'] == $p_entry['size']) - if ($p_entry['compression'] == 0) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file"); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes"); - - // ----- Reading the file - $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); - } - else { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (compression method '".$p_entry['compression']."')"); - - // ----- Reading the file - $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Decompress the file - if (($p_string = @gzinflate($v_data)) === FALSE) { - // TBC - } - } - - // ----- Trace - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done"); - } - else { - // TBC : error : can not extract a folder in a string - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privReadFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privReadFileHeader(&$p_header) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadFileHeader", ""); - $v_result=1; - - // ----- Read the 4 bytes signature - $v_binary_data = @fread($this->zip_fd, 4); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'"); - $v_data = unpack('Vid', $v_binary_data); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'"); - - // ----- Check signature - if ($v_data['id'] != 0x04034b50) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid File header"); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Read the first 42 bytes of the header - $v_binary_data = fread($this->zip_fd, 26); - - // ----- Look for invalid block size - if (strlen($v_binary_data) != 26) - { - $p_header['filename'] = ""; - $p_header['status'] = "invalid_header"; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data)); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Extract the values - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Header : '".$v_binary_data."'"); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Header (Hex) : '".bin2hex($v_binary_data)."'"); - $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); - - // ----- Get filename - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "File name length : ".$v_data['filename_len']); - $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename : \''.$p_header['filename'].'\''); - - // ----- Get extra_fields - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extra field length : ".$v_data['extra_len']); - if ($v_data['extra_len'] != 0) { - $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); - } - else { - $p_header['extra'] = ''; - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Extra field : \''.bin2hex($p_header['extra']).'\''); - - // ----- Extract properties - $p_header['version_extracted'] = $v_data['version']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : ('.$p_header['version_extracted'].') \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\''); - $p_header['compression'] = $v_data['compression']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compression method : \''.$p_header['compression'].'\''); - $p_header['size'] = $v_data['size']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_header['size'].'\''); - $p_header['compressed_size'] = $v_data['compressed_size']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_header['compressed_size'].'\''); - $p_header['crc'] = $v_data['crc']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_header['crc']).'\''); - $p_header['flag'] = $v_data['flag']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag : \''.$p_header['flag'].'\''); - - // ----- Recuperate date in UNIX format - $p_header['mdate'] = $v_data['mdate']; - $p_header['mtime'] = $v_data['mtime']; - if ($p_header['mdate'] && $p_header['mtime']) - { - // ----- Extract time - $v_hour = ($p_header['mtime'] & 0xF800) >> 11; - $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; - $v_seconde = ($p_header['mtime'] & 0x001F)*2; - - // ----- Extract date - $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; - $v_month = ($p_header['mdate'] & 0x01E0) >> 5; - $v_day = $p_header['mdate'] & 0x001F; - - // ----- Get UNIX date format - $p_header['mtime'] = mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); - } - else - { - $p_header['mtime'] = time(); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); - } - - // TBC - //for(reset($v_data); $key = key($v_data); next($v_data)) { - // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Attribut[$key] = ".$v_data[$key]); - //} - - // ----- Set the stored filename - $p_header['stored_filename'] = $p_header['filename']; - - // ----- Set the status field - $p_header['status'] = "ok"; - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privReadCentralFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privReadCentralFileHeader(&$p_header) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadCentralFileHeader", ""); - $v_result=1; - - // ----- Read the 4 bytes signature - $v_binary_data = @fread($this->zip_fd, 4); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'"); - $v_data = unpack('Vid', $v_binary_data); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'"); - - // ----- Check signature - if ($v_data['id'] != 0x02014b50) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid Central Dir File signature"); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Read the first 42 bytes of the header - $v_binary_data = fread($this->zip_fd, 42); - - // ----- Look for invalid block size - if (strlen($v_binary_data) != 42) - { - $p_header['filename'] = ""; - $p_header['status'] = "invalid_header"; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data)); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Extract the values - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header : '".$v_binary_data."'"); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header (Hex) : '".bin2hex($v_binary_data)."'"); - $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); - - // ----- Get filename - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File name length : ".$p_header['filename_len']); - if ($p_header['filename_len'] != 0) - $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); - else - $p_header['filename'] = ''; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Filename : \''.$p_header['filename'].'\''); - - // ----- Get extra - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Extra length : ".$p_header['extra_len']); - if ($p_header['extra_len'] != 0) - $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); - else - $p_header['extra'] = ''; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Extra : \''.$p_header['extra'].'\''); - - // ----- Get comment - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Comment length : ".$p_header['comment_len']); - if ($p_header['comment_len'] != 0) - $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); - else - $p_header['comment'] = ''; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Comment : \''.$p_header['comment'].'\''); - - // ----- Extract properties - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version : \''.($p_header['version']/10).'.'.($p_header['version']%10).'\''); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\''); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Size : \''.$p_header['size'].'\''); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Compressed Size : \''.$p_header['compressed_size'].'\''); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'CRC : \''.sprintf("0x%X", $p_header['crc']).'\''); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Flag : \''.$p_header['flag'].'\''); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Offset : \''.$p_header['offset'].'\''); - - // ----- Recuperate date in UNIX format - if ($p_header['mdate'] && $p_header['mtime']) - { - // ----- Extract time - $v_hour = ($p_header['mtime'] & 0xF800) >> 11; - $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; - $v_seconde = ($p_header['mtime'] & 0x001F)*2; - - // ----- Extract date - $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; - $v_month = ($p_header['mdate'] & 0x01E0) >> 5; - $v_day = $p_header['mdate'] & 0x001F; - - // ----- Get UNIX date format - $p_header['mtime'] = mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); - } - else - { - $p_header['mtime'] = time(); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); - } - - // ----- Set the stored filename - $p_header['stored_filename'] = $p_header['filename']; - - // ----- Set default status to ok - $p_header['status'] = 'ok'; - - // ----- Look if it is a directory - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Internal (Hex) : '".sprintf("Ox%04X", $p_header['internal'])."'"); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "External (Hex) : '".sprintf("Ox%04X", $p_header['external'])."' (".(($p_header['external']&0x00000010)==0x00000010?'is a folder':'is a file').')'); - if (substr($p_header['filename'], -1) == '/') { - //$p_header['external'] = 0x41FF0010; - $p_header['external'] = 0x00000010; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Force folder external : \''.sprintf("Ox%04X", $p_header['external']).'\''); - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Header of filename : \''.$p_header['filename'].'\''); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCheckFileHeaders() - // Description : - // Parameters : - // Return Values : - // 1 on success, - // 0 on error; - // -------------------------------------------------------------------------------- - function privCheckFileHeaders(&$p_local_header, &$p_central_header) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFileHeaders", ""); - $v_result=1; - - // ----- Check the static values - // TBC - if ($p_local_header['filename'] != $p_central_header['filename']) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "filename" : TBC To Be Completed'); - } - if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "version_extracted" : TBC To Be Completed'); - } - if ($p_local_header['flag'] != $p_central_header['flag']) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "flag" : TBC To Be Completed'); - } - if ($p_local_header['compression'] != $p_central_header['compression']) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "compression" : TBC To Be Completed'); - } - if ($p_local_header['mtime'] != $p_central_header['mtime']) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "mtime" : TBC To Be Completed'); - } - if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Bad check "filename_len" : TBC To Be Completed'); - } - - // ----- Look for flag bit 3 - if (($p_local_header['flag'] & 8) == 8) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Purpose bit flag bit 3 set !'); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'File size, compression size and crc found in central header'); - $p_local_header['size'] = $p_central_header['size']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_local_header['size'].'\''); - $p_local_header['compressed_size'] = $p_central_header['compressed_size']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_local_header['compressed_size'].'\''); - $p_local_header['crc'] = $p_central_header['crc']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.sprintf("0x%X", $p_local_header['crc']).'\''); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privReadEndCentralDir() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privReadEndCentralDir(&$p_central_dir) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadEndCentralDir", ""); - $v_result=1; - - // ----- Go to the end of the zip file - $v_size = filesize($this->zipname); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size of the file :$v_size"); - @fseek($this->zip_fd, $v_size); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position at end of zip file : \''.ftell($this->zip_fd).'\''); - if (@ftell($this->zip_fd) != $v_size) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- First try : look if this is an archive with no commentaries (most of the time) - // in this case the end of central dir is at 22 bytes of the file end - $v_found = 0; - if ($v_size > 26) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Look for central dir with no comment'); - @fseek($this->zip_fd, $v_size-22); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after min central position : \''.ftell($this->zip_fd).'\''); - if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Read for bytes - $v_binary_data = @fread($this->zip_fd, 4); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Binary data is : '".sprintf("%08x", $v_binary_data)."'"); - $v_data = @unpack('Vid', $v_binary_data); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'"); - - // ----- Check signature - if ($v_data['id'] == 0x06054b50) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found central dir at the default position."); - $v_found = 1; - } - - $v_pos = ftell($this->zip_fd); - } - - // ----- Go back to the maximum possible size of the Central Dir End Record - if (!$v_found) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Start extended search of end central dir'); - $v_maximum_size = 65557; // 0xFFFF + 22; - if ($v_maximum_size > $v_size) - $v_maximum_size = $v_size; - @fseek($this->zip_fd, $v_size-$v_maximum_size); - if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after max central position : \''.ftell($this->zip_fd).'\''); - - // ----- Read byte per byte in order to find the signature - $v_pos = ftell($this->zip_fd); - $v_bytes = 0x00000000; - while ($v_pos < $v_size) - { - // ----- Read a byte - $v_byte = @fread($this->zip_fd, 1); - - // ----- Add the byte - $v_bytes = ($v_bytes << 8) | Ord($v_byte); - - // ----- Compare the bytes - if ($v_bytes == 0x504b0506) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Found End Central Dir signature at position : \''.ftell($this->zip_fd).'\''); - $v_pos++; - break; - } - - $v_pos++; - } - - // ----- Look if not found end of central dir - if ($v_pos == $v_size) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to find End of Central Dir Record signature"); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - } - - // ----- Read the first 18 bytes of the header - $v_binary_data = fread($this->zip_fd, 18); - - // ----- Look for invalid block size - if (strlen($v_binary_data) != 18) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Extract the values - ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Central Dir Record : '".$v_binary_data."'"); - ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Central Dir Record (Hex) : '".bin2hex($v_binary_data)."'"); - $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); - - // ----- Check the global size - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Comment length : ".$v_data['comment_size']); - if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The central dir is not at the end of the archive. Some trailing bytes exists after the archive."); - - // ----- Removed in release 2.2 see readme file - // The check of the file size is a little too strict. - // Some bugs where found when a zip is encrypted/decrypted with 'crypt'. - // While decrypted, zip has training 0 bytes - if (0) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, - 'The central dir is not at the end of the archive.' - .' Some trailing bytes exists after the archive.'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - } - - // ----- Get comment - if ($v_data['comment_size'] != 0) - $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); - else - $p_central_dir['comment'] = ''; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment : \''.$p_central_dir['comment'].'\''); - - $p_central_dir['entries'] = $v_data['entries']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries : \''.$p_central_dir['entries'].'\''); - $p_central_dir['disk_entries'] = $v_data['disk_entries']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries for this disk : \''.$p_central_dir['disk_entries'].'\''); - $p_central_dir['offset'] = $v_data['offset']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Offset of Central Dir : \''.$p_central_dir['offset'].'\''); - $p_central_dir['size'] = $v_data['size']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size of Central Dir : \''.$p_central_dir['size'].'\''); - $p_central_dir['disk'] = $v_data['disk']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Disk number : \''.$p_central_dir['disk'].'\''); - $p_central_dir['disk_start'] = $v_data['disk_start']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Start disk number : \''.$p_central_dir['disk_start'].'\''); - - // TBC - //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { - // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "central_dir[$key] = ".$p_central_dir[$key]); - //} - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDeleteByRule() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privDeleteByRule(&$p_result_list, &$p_options) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDeleteByRule", ""); - $v_result=1; - $v_list_detail = array(); - - // ----- Open the zip file - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($v_result=$this->privOpenFd('rb')) != 1) - { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - $this->privCloseFd(); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Go to beginning of File - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'"); - @rewind($this->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'"); - - // ----- Scan all the files - // ----- Start at beginning of Central Dir - $v_pos_entry = $v_central_dir['offset']; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'"); - @rewind($this->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'"); - if (@fseek($this->zip_fd, $v_pos_entry)) - { - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'"); - - // ----- Read each entry - $v_header_list = array(); - $j_start = 0; - for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry (index '$i')"); - - // ----- Read the file header - $v_header_list[$v_nb_extracted] = array(); - if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) - { - // ----- Close the zip file - $this->privCloseFd(); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename (index '$i') : '".$v_header_list[$v_nb_extracted]['stored_filename']."'"); - - // ----- Store the index - $v_header_list[$v_nb_extracted]['index'] = $i; - - // ----- Look for the specific extract rules - $v_found = false; - - // ----- Look for extract by name rule - if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) - && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'"); - - // ----- Look if the filename is in the list - for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) - && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The directory is in the file path"); - $v_found = true; - } - elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ - && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The entry is the searched directory"); - $v_found = true; - } - } - // ----- Look for a filename - elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The file is the right one."); - $v_found = true; - } - } - } - - // ----- Look for extract by ereg rule - else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) - && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'"); - - if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression"); - $v_found = true; - } - } - - // ----- Look for extract by preg rule - else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) - && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'"); - - if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression"); - $v_found = true; - } - } - - // ----- Look for extract by index rule - else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) - && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'"); - - // ----- Look if the index is in the list - for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found as part of an index range"); - $v_found = true; - } - if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Do not look this index range for next loop"); - $j_start = $j+1; - } - - if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Index range is greater than index, stop loop"); - break; - } - } - } - - // ----- Look for deletion - if ($v_found) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' need to be deleted"); - unset($v_header_list[$v_nb_extracted]); - } - else - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' will not be deleted"); - $v_nb_extracted++; - } - } - - // ----- Look if something need to be deleted - if ($v_nb_extracted > 0) { - - // ----- Creates a temporay file - $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; - - // ----- Creates a temporary zip archive - $v_temp_zip = new PclZip($v_zip_temp_name); - - // ----- Open the temporary zip file in write mode - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary write mode"); - if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { - $this->privCloseFd(); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Look which file need to be kept - for ($i=0; $izip_fd)."'"); - @rewind($this->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'"); - if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'"); - - // ----- Read the file header - $v_local_header = array(); - if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Check that local file header is same as central file header - if ($this->privCheckFileHeaders($v_local_header, - $v_header_list[$i]) != 1) { - // TBC - } - unset($v_local_header); - - // ----- Write the file header - if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset for this file is '".$v_header_list[$i]['offset']."'"); - - // ----- Read/write the data block - if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($v_temp_zip->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "New offset of central dir : $v_offset"); - - // ----- Re-Create the Central Dir files header - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the new central directory"); - for ($i=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { - $v_temp_zip->privCloseFd(); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Transform the header to a 'usable' info - $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); - } - - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the central directory footer"); - - // ----- Zip file comment - $v_comment = ''; - if (isset($p_options[PCLZIP_OPT_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_COMMENT]; - } - - // ----- Calculate the size of the central header - $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; - - // ----- Create the central dir footer - if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { - // ----- Reset the file list - unset($v_header_list); - $v_temp_zip->privCloseFd(); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Close - $v_temp_zip->privCloseFd(); - $this->privCloseFd(); - - // ----- Delete the zip file - // TBC : I should test the result ... - @unlink($this->zipname); - - // ----- Rename the temporary file - // TBC : I should test the result ... - //@rename($v_zip_temp_name, $this->zipname); - PclZipUtilRename($v_zip_temp_name, $this->zipname); - - // ----- Destroy the temporary archive - unset($v_temp_zip); - } - - // ----- Remove every files : reset the file - else if ($v_central_dir['entries'] != 0) { - $this->privCloseFd(); - - if (($v_result = $this->privOpenFd('wb')) != 1) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - $this->privCloseFd(); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDirCheck() - // Description : - // Check if a directory exists, if not it creates it and all the parents directory - // which may be useful. - // Parameters : - // $p_dir : Directory path to check. - // Return Values : - // 1 : OK - // -1 : Unable to create directory - // -------------------------------------------------------------------------------- - function privDirCheck($p_dir, $p_is_dir=false) - { - $v_result = 1; - - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDirCheck", "entry='$p_dir', is_dir='".($p_is_dir?"true":"false")."'"); - - // ----- Remove the final '/' - if (($p_is_dir) && (substr($p_dir, -1)=='/')) - { - $p_dir = substr($p_dir, 0, strlen($p_dir)-1); - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for entry '$p_dir'"); - - // ----- Check the directory availability - if ((is_dir($p_dir)) || ($p_dir == "")) - { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, "'$p_dir' is a directory"); - return 1; - } - - // ----- Extract parent directory - $p_parent_dir = dirname($p_dir); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Parent directory is '$p_parent_dir'"); - - // ----- Just a check - if ($p_parent_dir != $p_dir) - { - // ----- Look for parent directory - if ($p_parent_dir != "") - { - if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) - { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - } - } - - // ----- Create the directory - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Create directory '$p_dir'"); - if (!@mkdir($p_dir, 0777)) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result, "Directory '$p_dir' created"); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privMerge() - // Description : - // If $p_archive_to_add does not exist, the function exit with a success result. - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privMerge(&$p_archive_to_add) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privMerge", "archive='".$p_archive_to_add->zipname."'"); - $v_result=1; - - // ----- Look if the archive_to_add exists - if (!is_file($p_archive_to_add->zipname)) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to add does not exist. End of merge."); - - // ----- Nothing to merge, so merge is a success - $v_result = 1; - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Look if the archive exists - if (!is_file($this->zipname)) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, duplicate the archive_to_add."); - - // ----- Do a duplicate - $v_result = $this->privDuplicate($p_archive_to_add->zipname); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Open the zip file - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($v_result=$this->privOpenFd('rb')) != 1) - { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - $this->privCloseFd(); - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Go to beginning of File - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'"); - @rewind($this->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'"); - - // ----- Open the archive_to_add file - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open archive_to_add in binary read mode"); - if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) - { - $this->privCloseFd(); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir_to_add = array(); - if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) - { - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Go to beginning of File - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'"); - @rewind($p_archive_to_add->zip_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'"); - - // ----- Creates a temporay file - $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; - - // ----- Open the temporary file in write mode - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) - { - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Copy the files from the archive to the temporary file - // TBC : Here I should better append the file and go back to erase the central dir - $v_size = $v_central_dir['offset']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); - $v_buffer = fread($this->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Copy the files from the archive_to_add into the temporary file - $v_size = $v_central_dir_to_add['offset']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); - $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($v_zip_temp_fd); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset"); - - // ----- Copy the block of file headers from the old archive - $v_size = $v_central_dir['size']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); - $v_buffer = @fread($this->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Copy the block of file headers from the archive_to_add - $v_size = $v_central_dir_to_add['size']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); - $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Merge the file comments - $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment']; - - // ----- Calculate the size of the (new) central header - $v_size = @ftell($v_zip_temp_fd)-$v_offset; - - // ----- Swap the file descriptor - // Here is a trick : I swap the temporary fd with the zip fd, in order to use - // the following methods on the temporary fil and not the real archive fd - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Create the central dir footer - if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) - { - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - @fclose($v_zip_temp_fd); - $this->zip_fd = null; - - // ----- Reset the file list - unset($v_header_list); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Swap back the file descriptor - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Close - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - - // ----- Close the temporary file - @fclose($v_zip_temp_fd); - - // ----- Delete the zip file - // TBC : I should test the result ... - @unlink($this->zipname); - - // ----- Rename the temporary file - // TBC : I should test the result ... - //@rename($v_zip_temp_name, $this->zipname); - PclZipUtilRename($v_zip_temp_name, $this->zipname); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDuplicate() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privDuplicate($p_archive_filename) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDuplicate", "archive_filename='$p_archive_filename'"); - $v_result=1; - - // ----- Look if the $p_archive_filename exists - if (!is_file($p_archive_filename)) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to duplicate does not exist. End of duplicate."); - - // ----- Nothing to duplicate, so duplicate is a success. - $v_result = 1; - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Open the zip file - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($v_result=$this->privOpenFd('wb')) != 1) - { - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Open the temporary file in write mode - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) - { - $this->privCloseFd(); - - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); - return PclZip::errorCode(); - } - - // ----- Copy the files from the archive to the temporary file - // TBC : Here I should better append the file and go back to erase the central dir - $v_size = filesize($p_archive_filename); - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read $v_read_size bytes"); - $v_buffer = fread($v_zip_temp_fd, $v_read_size); - @fwrite($this->zip_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Close - $this->privCloseFd(); - - // ----- Close the temporary file - @fclose($v_zip_temp_fd); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privErrorLog() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function privErrorLog($p_error_code=0, $p_error_string='') - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - PclError($p_error_code, $p_error_string); - } - else { - $this->error_code = $p_error_code; - $this->error_string = $p_error_string; - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privErrorReset() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function privErrorReset() - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - PclErrorReset(); - } - else { - $this->error_code = 0; - $this->error_string = ''; - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDecrypt() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privDecrypt($p_encryption_header, &$p_buffer, $p_size, $p_crc) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privDecrypt', "size=".$p_size.""); - $v_result=1; - - // ----- To Be Modified ;-) - $v_pwd = "test"; - - $p_buffer = PclZipUtilZipDecrypt($p_buffer, $p_size, $p_encryption_header, - $p_crc, $v_pwd); - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - } - // End of class - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilPathReduction() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclZipUtilPathReduction($p_dir) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathReduction", "dir='$p_dir'"); - $v_result = ""; - - // ----- Look for not empty path - if ($p_dir != "") - { - // ----- Explode path by directory names - $v_list = explode("/", $p_dir); - - // ----- Study directories from last to first - for ($i=sizeof($v_list)-1; $i>=0; $i--) - { - // ----- Look for current path - if ($v_list[$i] == ".") - { - // ----- Ignore this directory - // Should be the first $i=0, but no check is done - } - else if ($v_list[$i] == "..") - { - // ----- Ignore it and ignore the $i-1 - $i--; - } - else if (($v_list[$i] == "") && ($i!=(sizeof($v_list)-1)) && ($i!=0)) - { - // ----- Ignore only the double '//' in path, - // but not the first and last '/' - } - else - { - $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); - } - } - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilPathInclusion() - // Description : - // This function indicates if the path $p_path is under the $p_dir tree. Or, - // said in an other way, if the file or sub-dir $p_path is inside the dir - // $p_dir. - // The function indicates also if the path is exactly the same as the dir. - // This function supports path with duplicated '/' like '//', but does not - // support '.' or '..' statements. - // Parameters : - // Return Values : - // 0 if $p_path is not inside directory $p_dir - // 1 if $p_path is inside directory $p_dir - // 2 if $p_path is exactly the same as $p_dir - // -------------------------------------------------------------------------------- - function PclZipUtilPathInclusion($p_dir, $p_path) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathInclusion", "dir='$p_dir', path='$p_path'"); - $v_result = 1; - - // ----- Explode dir and path by directory separator - $v_list_dir = explode("/", $p_dir); - $v_list_dir_size = sizeof($v_list_dir); - $v_list_path = explode("/", $p_path); - $v_list_path_size = sizeof($v_list_path); - - // ----- Study directories paths - $i = 0; - $j = 0; - while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Working on dir($i)='".$v_list_dir[$i]."' and path($j)='".$v_list_path[$j]."'"); - - // ----- Look for empty dir (path reduction) - if ($v_list_dir[$i] == '') { - $i++; - continue; - } - if ($v_list_path[$j] == '') { - $j++; - continue; - } - - // ----- Compare the items - if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != '')) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Items ($i,$j) are different"); - $v_result = 0; - } - - // ----- Next items - $i++; - $j++; - } - - // ----- Look if everything seems to be the same - if ($v_result) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Look for tie break"); - // ----- Skip all the empty items - while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++; - while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++; - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Looking on dir($i)='".($i < $v_list_dir_size?$v_list_dir[$i]:'')."' and path($j)='".($j < $v_list_path_size?$v_list_path[$j]:'')."'"); - - if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { - // ----- There are exactly the same - $v_result = 2; - } - else if ($i < $v_list_dir_size) { - // ----- The path is shorter than the dir - $v_result = 0; - } - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilCopyBlock() - // Description : - // Parameters : - // $p_mode : read/write compression mode - // 0 : src & dest normal - // 1 : src gzip, dest normal - // 2 : src normal, dest gzip - // 3 : src & dest gzip - // Return Values : - // -------------------------------------------------------------------------------- - function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilCopyBlock", "size=$p_size, mode=$p_mode"); - $v_result = 1; - - if ($p_mode==0) - { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Src offset before read :".(@ftell($p_src))); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Dest offset before write :".(@ftell($p_dest))); - while ($p_size != 0) - { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); - $v_buffer = @fread($p_src, $v_read_size); - @fwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Src offset after read :".(@ftell($p_src))); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Dest offset after write :".(@ftell($p_dest))); - } - else if ($p_mode==1) - { - while ($p_size != 0) - { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); - $v_buffer = @gzread($p_src, $v_read_size); - @fwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } - else if ($p_mode==2) - { - while ($p_size != 0) - { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); - $v_buffer = @fread($p_src, $v_read_size); - @gzwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } - else if ($p_mode==3) - { - while ($p_size != 0) - { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); - $v_buffer = @gzread($p_src, $v_read_size); - @gzwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilRename() - // Description : - // This function tries to do a simple rename() function. If it fails, it - // tries to copy the $p_src file in a new $p_dest file and then unlink the - // first one. - // Parameters : - // $p_src : Old filename - // $p_dest : New filename - // Return Values : - // 1 on success, 0 on failure. - // -------------------------------------------------------------------------------- - function PclZipUtilRename($p_src, $p_dest) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilRename", "source=$p_src, destination=$p_dest"); - $v_result = 1; - - // ----- Try to rename the files - if (!@rename($p_src, $p_dest)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to rename file, try copy+unlink"); - - // ----- Try to copy & unlink the src - if (!@copy($p_src, $p_dest)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to copy file"); - $v_result = 0; - } - else if (!@unlink($p_src)) { - //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to unlink old filename"); - $v_result = 0; - } - } - - // ----- Return - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilOptionText() - // Description : - // Translate option value in text. Mainly for debug purpose. - // Parameters : - // $p_option : the option value. - // Return Values : - // The option text value. - // -------------------------------------------------------------------------------- - function PclZipUtilOptionText($p_option) - { - //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilOptionText", "option='".$p_option."'"); - - $v_list = get_defined_constants(); - for (reset($v_list); $v_key = key($v_list); next($v_list)) { - $v_prefix = substr($v_key, 0, 10); - if ((($v_prefix == 'PCLZIP_OPT') || ($v_prefix == 'PCLZIP_CB_')) - && ($v_list[$v_key] == $p_option)) { - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_key); - return $v_key; - } - } - - $v_result = 'Unknown'; - - //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilTranslateWinPath() - // Description : - // Translate windows path by replacing '\' by '/' and optionally removing - // drive letter. - // Parameters : - // $p_path : path to translate. - // $p_remove_disk_letter : true | false - // Return Values : - // The path translated. - // -------------------------------------------------------------------------------- - function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true) - { - if (stristr(php_uname(), 'windows')) { - // ----- Look for potential disk letter - if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { - $p_path = substr($p_path, $v_position+1); - } - // ----- Change potential windows directory separator - if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) { - $p_path = strtr($p_path, '\\', '/'); - } - } - return $p_path; - } - // -------------------------------------------------------------------------------- - - -?> +zipname = $p_zipname; + $this->zip_fd = 0; + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 1); + return; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // create($p_filelist, $p_add_dir="", $p_remove_dir="") + // create($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two different synopsis. The first one is historical. + // This method creates a Zip Archive. The Zip file is created in the + // filesystem. The files and directories indicated in $p_filelist + // are added in the archive. See the parameters description for the + // supported format of $p_filelist. + // When a directory is in the list, the directory and its content is added + // in the archive. + // In this synopsis, the function takes an optional variable list of + // options. See bellow the supported options. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- +// function create($p_filelist, $p_add_dir="", $p_remove_dir="") + function create($p_filelist /*, options */) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::create', "filelist='$p_filelist', ..."); + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_add_path = ""; + $v_remove_path = ""; + $v_remove_all_path = false; + $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method"); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = &func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected"); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional' )); + if ($v_result != 1) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + $v_add_path = $v_options[PCLZIP_OPT_ADD_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis"); + + // ----- Get the first argument + $v_add_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return 0; + } + } + } + + // ----- Trace + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "add_path='$v_add_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_all_path?'true':'false')."'"); + + // ----- Look if the $p_filelist is really an array + $p_result_list = array(); + if (is_array($p_filelist)) + { + // ----- Call the create fct + $v_result = $this->privCreate($p_filelist, $p_result_list, $v_add_path, $v_remove_path, $v_remove_all_path, $v_options); + } + + // ----- Look if the $p_filelist is a string + else if (is_string($p_filelist)) + { + // ----- Create a list with the elements from the string + $v_list = explode(PCLZIP_SEPARATOR, $p_filelist); + + // ----- Call the create fct + $v_result = $this->privCreate($v_list, $p_result_list, $v_add_path, $v_remove_path, $v_remove_all_path, $v_options); + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + if ($v_result != 1) + { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return 0; + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list); + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // add($p_filelist, $p_add_dir="", $p_remove_dir="") + // add($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two synopsis. The first one is historical. + // This methods add the list of files in an existing archive. + // If a file with the same name already exists, it is added at the end of the + // archive, the first one is still present. + // If the archive does not exist, it is created. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- +// function add($p_filelist, $p_add_dir="", $p_remove_dir="") + function add($p_filelist /* options */) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::add', "filelist='$p_filelist', ..."); + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_add_path = ""; + $v_remove_path = ""; + $v_remove_all_path = false; + $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method"); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = &func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected"); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional' )); + if ($v_result != 1) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + $v_add_path = $v_options[PCLZIP_OPT_ADD_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis"); + + // ----- Get the first argument + $v_add_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return 0; + } + } + } + + // ----- Trace + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "add_path='$v_add_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_all_path?'true':'false')."'"); + + // ----- Look if the $p_filelist is really an array + $p_result_list = array(); + if (is_array($p_filelist)) + { + // ----- Call the create fct + $v_result = $this->privAdd($p_filelist, $p_result_list, $v_add_path, $v_remove_path, $v_remove_all_path, $v_options); + } + + // ----- Look if the $p_filelist is a string + else if (is_string($p_filelist)) + { + // ----- Create a list with the elements from the string + $v_list = explode(PCLZIP_SEPARATOR, $p_filelist); + + // ----- Call the create fct + $v_result = $this->privAdd($v_list, $p_result_list, $v_add_path, $v_remove_path, $v_remove_all_path, $v_options); + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + if ($v_result != 1) + { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return 0; + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list); + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : listContent() + // Description : + // This public method, gives the list of the files and directories, with their + // properties. + // The properties of each entries in the list are (used also in other functions) : + // filename : Name of the file. For a create or add action it is the filename + // given by the user. For an extract function it is the filename + // of the extracted file. + // stored_filename : Name of the file / directory stored in the archive. + // size : Size of the stored file. + // compressed_size : Size of the file's data compressed in the archive + // (without the headers overhead) + // mtime : Last known modification date of the file (UNIX timestamp) + // comment : Comment associated with the file + // folder : true | false + // index : index of the file in the archive + // status : status of the action (depending of the action) : + // Values are : + // ok : OK ! + // filtered : the file / dir is not extracted (filtered by user) + // already_a_directory : the file can not be extracted because a + // directory with the same name already exists + // write_protected : the file can not be extracted because a file + // with the same name already exists and is + // write protected + // newer_exist : the file was not extracted because a newer file exists + // path_creation_fail : the file is not extracted because the folder + // does not exists and can not be created + // write_error : the file was not extracted because there was a + // error while writing the file + // read_error : the file was not extracted because there was a error + // while reading the file + // invalid_header : the file was not extracted because of an archive + // format error (bad file header) + // Note that each time a method can continue operating when there + // is an action error on a file, the error is only logged in the file status. + // Return Values : + // 0 on an unrecoverable failure, + // The list of the files in the archive. + // -------------------------------------------------------------------------------- + function listContent() + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::listContent', ""); + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return(0); + } + + // ----- Call the extracting fct + $p_list = array(); + if (($v_result = $this->privList($p_list)) != 1) + { + unset($p_list); + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); + return(0); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list); + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // extract($p_path="./", $p_remove_path="") + // extract([$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method extract all the files / directories from the archive to the + // folder indicated in $p_path. + // If you want to ignore the 'root' part of path of the memorized files + // you can indicate this in the optional $p_remove_path parameter. + // By default, if a newer file with the same name already exists, the + // file is not extracted. + // + // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions + // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append + // at the end of the path value of PCLZIP_OPT_PATH. + // Parameters : + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 or a negative value on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + //function extract($p_path="./", $p_remove_path="") + function extract(/* options */) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extract", ""); + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return(0); + } + + // ----- Set default values + $v_options = array(); + $v_path = "./"; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method"); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = &func_get_args(); + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options"); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional' )); + if ($v_result != 1) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis"); + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); + return 0; + } + } + } + + // ----- Trace + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'"); + + // ----- Call the extracting fct + $p_list = array(); + if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) != 1) + { + unset($p_list); + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); + return(0); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list); + return $p_list; + } + // -------------------------------------------------------------------------------- + + + // -------------------------------------------------------------------------------- + // Function : + // extractByIndex($p_index, $p_path="./", $p_remove_path="") + // extractByIndex($p_index, [$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method is doing a partial extract of the archive. + // The extracted files or folders are identified by their index in the + // archive (from 0 to n). + // Note that if the index identify a folder, only the folder entry is + // extracted, not all the files included in the archive. + // Parameters : + // $p_index : A single index (integer) or a string of indexes of files to + // extract. The form of the string is "0,4-6,8-12" with only numbers + // and '-' for range or ',' to separate ranges. No spaces or ';' + // are allowed. + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and + // not as files. + // The resulting content is in a new field 'content' in the file + // structure. + // This option must be used alone (any other options are ignored). + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function extractByIndex($p_index /* $options */) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extractByIndex", "index='$p_index', ..."); + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return(0); + } + + // ----- Set default values + $v_options = array(); + $v_path = "./"; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method"); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = &func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options"); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional' )); + if ($v_result != 1) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING not set."); + } + else { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Option PCLZIP_OPT_EXTRACT_AS_STRING set."); + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis"); + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return 0; + } + } + } + + // ----- Trace + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "index='$p_index', path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'"); + + // ----- Trick + // Here I want to reuse extractByRule(), so I need to parse the $p_index + // with privParseOptions() + $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); + $v_options_trick = array(); + $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, + array (PCLZIP_OPT_BY_INDEX => 'optional' )); + if ($v_result != 1) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return 0; + } + $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; + + // ----- Call the extracting fct + if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) != 1) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); + return(0); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list); + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // delete([$p_option, $p_option_value, ...]) + // Description : + // Parameters : + // None + // Options : + // PCLZIP_OPT_BY_INDEX : + // Return Values : + // 0 on failure, + // The list of the files which are still present in the archive. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function delete(/* options */) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::delete", ""); + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return(0); + } + + // ----- Set default values + $v_options = array(); + + // ----- Look for variable options arguments + $v_size = func_num_args(); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method"); + + // ----- Look for no arguments + if ($v_size <= 0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing arguments"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); + return 0; + } + + // ----- Get the arguments + $v_arg_list = &func_get_args(); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional' )); + if ($v_result != 1) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return 0; + } + + // ----- Check that at least one rule is set + if ( (!isset($v_options[PCLZIP_OPT_BY_NAME])) + && (!isset($v_options[PCLZIP_OPT_BY_EREG])) + && (!isset($v_options[PCLZIP_OPT_BY_PREG])) + && (!isset($v_options[PCLZIP_OPT_BY_INDEX]))) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "At least one filtering rule must be set"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); + return 0; + } + + // ----- Call the delete fct + $v_list = array(); + if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) + { + unset($v_list); + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo()); + return(0); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_list); + return $v_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : deleteByIndex() + // Description : + // ***** Deprecated ***** + // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. + // -------------------------------------------------------------------------------- + function deleteByIndex($p_index) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::deleteByIndex", "index='$p_index'"); + + $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list); + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : properties() + // Description : + // This method gives the properties of the archive. + // The properties are : + // nb : Number of files in the archive + // comment : Comment associated with the archive file + // status : not_exist, ok + // Parameters : + // None + // Return Values : + // 0 on failure, + // An array with the archive properties. + // -------------------------------------------------------------------------------- + function properties() + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::properties", ""); + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return(0); + } + + // ----- Default properties + $v_prop = array(); + $v_prop['comment'] = ''; + $v_prop['nb'] = 0; + $v_prop['status'] = 'not_exist'; + + // ----- Look if file exists + if (@is_file($this->zipname)) + { + // ----- Open the zip file + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), 0); + return 0; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return 0; + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Set the user attributes + $v_prop['comment'] = $v_central_dir['comment']; + $v_prop['nb'] = $v_central_dir['entries']; + $v_prop['status'] = 'ok'; + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_prop); + return $v_prop; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : duplicate() + // Description : + // This method creates an archive by copying the content of an other one. If + // the archive already exist, it is replaced by the new one without any warning. + // Parameters : + // $p_archive : The filename of a valid archive, or + // a valid PclZip object. + // Return Values : + // 1 on success. + // 0 or a negative value on error (error code). + // -------------------------------------------------------------------------------- + function duplicate($p_archive) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::duplicate", ""); + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the $p_archive is a PclZip object + if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is valid PclZip object '".$p_archive->zipname."'"); + + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive->zipname); + } + + // ----- Look if the $p_archive is a string (so a filename) + else if (is_string($p_archive)) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is a filename '$p_archive'"); + + // ----- Check that $p_archive is a valid zip file + // TBC : Should also check the archive format + if (!is_file($p_archive)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'"); + $v_result = PCLZIP_ERR_MISSING_FILE; + } + else { + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive); + } + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : merge() + // Description : + // This method merge the $p_archive_to_add archive at the end of the current + // one ($this). + // If the archive ($this) does not exist, the merge becomes a duplicate. + // If the $p_archive_to_add archive does not exist, the merge is a success. + // Parameters : + // $p_archive_to_add : It can be directly the filename of a valid zip archive, + // or a PclZip object archive. + // Return Values : + // 1 on success, + // 0 or negative values on error (see below). + // -------------------------------------------------------------------------------- + function merge($p_archive_to_add) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::merge", ""); + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0); + return(0); + } + + // ----- Look if the $p_archive_to_add is a PclZip object + if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is valid PclZip object"); + + // ----- Merge the archive + $v_result = $this->privMerge($p_archive_to_add); + } + + // ----- Look if the $p_archive_to_add is a string (so a filename) + else if (is_string($p_archive_to_add)) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is a filename"); + + // ----- Create a temporary archive + $v_object_archive = new PclZip($p_archive_to_add); + + // ----- Merge the archive + $v_result = $this->privMerge($v_object_archive); + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : errorCode() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorCode() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorCode()); + } + else { + return($this->error_code); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorName() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorName($p_with_code=false) + { + $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', + PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', + PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', + PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', + PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', + PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', + PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', + PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', + PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', + PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', + PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', + PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', + PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', + PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', + PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', + PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', + PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE' ); + + if (isset($v_name[$this->error_code])) { + $v_value = $v_name[$this->error_code]; + } + else { + $v_value = 'NoName'; + } + + if ($p_with_code) { + return($v_value.' ('.$this->error_code.')'); + } + else { + return($v_value); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorInfo() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorInfo($p_full=false) + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorString()); + } + else { + if ($p_full) { + return($this->errorName(true)." : ".$this->error_string); + } + else { + return($this->error_string." [code ".$this->error_code."]"); + } + } + } + // -------------------------------------------------------------------------------- + + +// -------------------------------------------------------------------------------- +// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** +// ***** ***** +// ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** +// -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : privCheckFormat() + // Description : + // This method check that the archive exists and is a valid zip archive. + // Several level of check exists. (futur) + // Parameters : + // $p_level : Level of check. Default 0. + // 0 : Check the first bytes (magic codes) (default value)) + // 1 : 0 + Check the central directory (futur) + // 2 : 1 + Check each file header (futur) + // Return Values : + // true on success, + // false on error, the error code is set. + // -------------------------------------------------------------------------------- + function privCheckFormat($p_level=0) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCheckFormat", ""); + $v_result = true; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the file exits + if (!is_file($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo()); + return(false); + } + + // ----- Check that the file is readeable + if (!is_readable($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, false, PclZip::errorInfo()); + return(false); + } + + // ----- Check the magic code + // TBC + + // ----- Check the central header + // TBC + + // ----- Check each file header + // TBC + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privParseOptions() + // Description : + // This internal methods reads the variable list of arguments ($p_options_list, + // $p_size) and generate an array with the options and values ($v_result_list). + // $v_requested_options contains the options that can be present and those that + // must be present. + // $v_requested_options is an array, with the option value as key, and 'optional', + // or 'mandatory' as value. + // Parameters : + // See above. + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privParseOptions", ""); + $v_result=1; + + // ----- Read the options + $i=0; + while ($i<$p_size) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Looking for table index $i, option = '".PclZipUtilOptionText($p_options_list[$i])."(".$p_options_list[$i].")'"); + + // ----- Check if the option is requested + if (!isset($v_requested_options[$p_options_list[$i]])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Look for next option + switch ($p_options_list[$i]) { + // ----- Look for options that request a path value + case PCLZIP_OPT_PATH : + case PCLZIP_OPT_REMOVE_PATH : + case PCLZIP_OPT_ADD_PATH : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], false); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'"); + $i++; + break; + + // ----- Look for options that request an array of string for value + case PCLZIP_OPT_BY_NAME : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; + } + else if (is_array($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'"); + $i++; + break; + + // ----- Look for options that request an EREG or PREG expression + case PCLZIP_OPT_BY_EREG : + case PCLZIP_OPT_BY_PREG : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'"); + $i++; + break; + + // ----- Look for options that request an array of index + case PCLZIP_OPT_BY_INDEX : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Get the value + $v_work_list = array(); + if (is_string($p_options_list[$i+1])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is a string '".$p_options_list[$i+1]."'"); + + // ----- Remove spaces + $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); + + // ----- Parse items + $v_work_list = explode(",", $p_options_list[$i+1]); + } + else if (is_integer($p_options_list[$i+1])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an integer '".$p_options_list[$i+1]."'"); + $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; + } + else if (is_array($p_options_list[$i+1])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Index value is an array"); + $v_work_list = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Reduce the index list + // each index item in the list must be a couple with a start and + // an end value : [0,3], [5-5], [8-10], ... + // ----- Check the format of each item + $v_sort_flag=false; + $v_sort_value=0; + for ($j=0; $j= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'"); + $i++; + break; + + // ----- Look for options that request a call-back + case PCLZIP_CB_PRE_EXTRACT : + case PCLZIP_CB_POST_EXTRACT : + case PCLZIP_CB_PRE_ADD : + case PCLZIP_CB_POST_ADD : + /* for futur use + case PCLZIP_CB_PRE_DELETE : + case PCLZIP_CB_POST_DELETE : + case PCLZIP_CB_PRE_LIST : + case PCLZIP_CB_POST_LIST : + */ + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Get the value + $v_function_name = $p_options_list[$i+1]; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "call-back ".PclZipUtilOptionText($p_options_list[$i])." = '".$v_function_name."'"); + + // ----- Check that the value is a valid existing function + if (!function_exists($v_function_name)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Set the attribute + $v_result_list[$p_options_list[$i]] = $v_function_name; + $i++; + break; + + default : + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown optional parameter '".$p_options_list[$i]."'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Next options + $i++; + } + + // ----- Look for mandatory options + for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Detect a mandatory option : ".PclZipUtilOptionText($key)."(".$key.")"); + // ----- Look if present + if (!isset($v_result_list[$key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + } + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCreate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privCreate($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCreate", "list, result_list, add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); + $v_result=1; + $v_list_detail = array(); + + // ----- Open the file in write mode + if (($v_result = $this->privOpenFd('wb')) != 1) + { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Add the list of files + $v_result = $this->privAddList($p_list, $p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options); + + // ----- Close + $this->privCloseFd(); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAdd() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAdd($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAdd", "list, result_list, add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); + $v_result=1; + $v_list_detail = array(); + + // ----- Look if the archive exists or is empty + if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, or is empty, create it."); + + // ----- Do a create + $v_result = $this->privCreate($p_list, $p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Open the zip file + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Go to beginning of File + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'"); + @rewind($this->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'"); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) + { + $this->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_list, $v_header_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options)) != 1) + { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset"); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); + $v_buffer = @fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Create the Central Dir files header + for ($i=0, $v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = ''; + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) + { + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOpenFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privOpenFd($p_mode) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privOpenFd", 'mode='.$p_mode); + $v_result=1; + + // ----- Look if already open + if ($this->zip_fd != 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Open the zip file + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Open file in '.$p_mode.' mode'); + if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCloseFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privCloseFd() + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privCloseFd", ""); + $v_result=1; + + if ($this->zip_fd != 0) + @fclose($this->zip_fd); + $this->zip_fd = 0; + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddList() + // Description : + // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is + // different from the real path of the file. This is usefull if you want to have PclTar + // running in any directory, and memorize relative path from an other directory. + // Parameters : + // $p_list : An array containing the file or directory names to add in the tar + // $p_result_list : list of added files with their properties (specially the status field) + // $p_add_dir : Path to add in the filename path archived + // $p_remove_dir : Path to remove in the filename path archived + // Return Values : + // -------------------------------------------------------------------------------- + function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddList", "list, add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); + $v_result=1; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_list, $v_header_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options)) != 1) + { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Create the Central Dir files header + for ($i=0,$v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = ''; + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) + { + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileList() + // Description : + // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is + // different from the real path of the file. This is usefull if you want to + // run the lib in any directory, and memorize relative path from an other directory. + // Parameters : + // $p_list : An array containing the file or directory names to add in the tar + // $p_result_list : list of added files with their properties (specially the status field) + // $p_add_dir : Path to add in the filename path archived + // $p_remove_dir : Path to remove in the filename path archived + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFileList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFileList", "list, add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); + $v_result=1; + $v_header = array(); + + // ----- Recuperate the current number of elt in list + $v_nb = sizeof($p_result_list); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Before add, list have $v_nb elements"); + + // ----- Loop on the files + for ($j=0; ($j 0xFF) + { + // ----- Error log + PclZip::privErrorLog(-5, "File name is too long (max. 255) : '$p_filename'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + */ + + // ----- Look if it is a file or a dir with no all pathnre move + if ((is_file($p_filename)) || ((is_dir($p_filename)) && !$p_remove_all_dir)) { + // ----- Add the file + if (($v_result = $this->privAddFile($p_filename, $v_header, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options)) != 1) + { + // ----- Return status + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Store the file infos + $p_result_list[$v_nb++] = $v_header; + } + + // ----- Look for directory + if (is_dir($p_filename)) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "$p_filename is a directory"); + + // ----- Look for path + if ($p_filename != ".") + $v_path = $p_filename."/"; + else + $v_path = ""; + + // ----- Read the directory for files and sub-directories + $p_hdir = opendir($p_filename); + $p_hitem = readdir($p_hdir); // '.' directory + $p_hitem = readdir($p_hdir); // '..' directory + while ($p_hitem = readdir($p_hdir)) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Looking for $p_hitem in the directory"); + + // ----- Look for a file + if (is_file($v_path.$p_hitem)) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Add the file '".$v_path.$p_hitem."'"); + + // ----- Add the file + if (($v_result = $this->privAddFile($v_path.$p_hitem, $v_header, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options)) != 1) + { + // ----- Return status + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Store the file infos + $p_result_list[$v_nb++] = $v_header; + } + + // ----- Recursive call to privAddFileList() + else + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Add the directory '".$v_path.$p_hitem."'"); + + // ----- Need an array as parameter + $p_temp_list[0] = $v_path.$p_hitem; + $v_result = $this->privAddFileList($p_temp_list, $p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_options); + + // ----- Update the number of elements of the list + $v_nb = sizeof($p_result_list); + } + } + + // ----- Free memory for the recursive loop + unset($p_temp_list); + unset($p_hdir); + unset($p_hitem); + } + } + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "After add, list have $v_nb elements"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFile($p_filename, &$p_header, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privAddFile", "filename='$p_filename', add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); + $v_result=1; + + if ($p_filename == "") + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Calculate the stored filename + $v_stored_filename = $p_filename; + + // ----- Look for all path to remove + if ($p_remove_all_dir) { + $v_stored_filename = basename($p_filename); + } + // ----- Look for partial path remove + else if ($p_remove_dir != "") + { + if (substr($p_remove_dir, -1) != '/') + $p_remove_dir .= "/"; + + if ((substr($p_filename, 0, 2) == "./") || (substr($p_remove_dir, 0, 2) == "./")) + { + if ((substr($p_filename, 0, 2) == "./") && (substr($p_remove_dir, 0, 2) != "./")) + $p_remove_dir = "./".$p_remove_dir; + if ((substr($p_filename, 0, 2) != "./") && (substr($p_remove_dir, 0, 2) == "./")) + $p_remove_dir = substr($p_remove_dir, 2); + } + + $v_compare = PclZipUtilPathInclusion($p_remove_dir, $p_filename); + if ($v_compare > 0) +// if (substr($p_filename, 0, strlen($p_remove_dir)) == $p_remove_dir) + { + + if ($v_compare == 2) { + $v_stored_filename = ""; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Path to remove is the current folder"); + } + else { + $v_stored_filename = substr($p_filename, strlen($p_remove_dir)); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Remove path '$p_remove_dir' in file '$p_filename' = '$v_stored_filename'"); + } + } + } + // ----- Look for path to add + if ($p_add_dir != "") + { + if (substr($p_add_dir, -1) == "/") + $v_stored_filename = $p_add_dir.$v_stored_filename; + else + $v_stored_filename = $p_add_dir."/".$v_stored_filename; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Add path '$p_add_dir' in file '$p_filename' = '$v_stored_filename'"); + } + + // ----- Filename (reduce the path of stored name) + $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Filename (reduced) '$v_stored_filename', strlen ".strlen($v_stored_filename)); + + /* filename length moved after call-back in release 1.3 + // ----- Check the path length + if (strlen($v_stored_filename) > 0xFF) + { + // ----- Error log + PclZip::privErrorLog(-5, "Stored file name is too long (max. 255) : '$v_stored_filename'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + */ + + // ----- Set the file properties + clearstatcache(); + $p_header['version'] = 20; + $p_header['version_extracted'] = 10; + $p_header['flag'] = 0; + $p_header['compression'] = 0; + $p_header['mtime'] = filemtime($p_filename); + $p_header['crc'] = 0; + $p_header['compressed_size'] = 0; + $p_header['size'] = filesize($p_filename); + $p_header['filename_len'] = strlen($p_filename); + $p_header['extra_len'] = 0; + $p_header['comment_len'] = 0; + $p_header['disk'] = 0; + $p_header['internal'] = 0; + $p_header['external'] = (is_file($p_filename)?0xFE49FFE0:0x41FF0010); + $p_header['offset'] = 0; + $p_header['filename'] = $p_filename; + $p_header['stored_filename'] = $v_stored_filename; + $p_header['extra'] = ''; + $p_header['comment'] = ''; + $p_header['status'] = 'ok'; + $p_header['index'] = -1; + + // ----- Look for pre-add callback + if (isset($p_options[PCLZIP_CB_PRE_ADD])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_ADD]."()') is defined for the extraction"); + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);'); + if ($v_result == 0) { + // ----- Change the file status + $p_header['status'] = "skipped"; + $v_result = 1; + } + + // ----- Update the informations + // Only some fields can be modified + if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { + $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New stored filename is '".$p_header['stored_filename']."'"); + } + } + + // ----- Look for empty stored filename + if ($p_header['stored_filename'] == "") { + $p_header['status'] = "filtered"; + } + + // ----- Check the path length + if (strlen($p_header['stored_filename']) > 0xFF) { + $p_header['status'] = 'filename_too_long'; + } + + // ----- Look if no error, or file not skipped + if ($p_header['status'] == 'ok') { + + // ----- Look for a file + if (is_file($p_filename)) + { + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Read the file content + $v_content_compressed = @fread($v_file, $p_header['size']); + + // ----- Calculate the CRC + $p_header['crc'] = crc32($v_content_compressed); + } + else { + // ----- Read the file content + $v_content = @fread($v_file, $p_header['size']); + + // ----- Calculate the CRC + $p_header['crc'] = crc32($v_content); + + // ----- Compress the file + $v_content_compressed = gzdeflate($v_content); + } + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content_compressed); + $p_header['compression'] = 8; + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Write the compressed content + $v_binary_data = pack('a'.$p_header['compressed_size'], $v_content_compressed); + @fwrite($this->zip_fd, $v_binary_data, $p_header['compressed_size']); + + // ----- Close the file + @fclose($v_file); + } + + // ----- Look for a directory + else + { + // ----- Set the file properties + $p_header['filename'] .= '/'; + $p_header['filename_len']++; + $p_header['size'] = 0; + $p_header['external'] = 0x41FF0010; // Value for a folder : to be checked + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) + { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + } + } + + // ----- Look for pre-add callback + if (isset($p_options[PCLZIP_CB_POST_ADD])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_ADD]."()') is defined for the extraction"); + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);'); + if ($v_result == 0) { + // ----- Ignored + $v_result = 1; + } + + // ----- Update the informations + // Nothing can be modified + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteFileHeader(&$p_header) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"'); + $v_result=1; + + // TBC + //for(reset($p_header); $key = key($p_header); next($p_header)) { + // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "header[$key] = ".$p_header[$key]); + //} + + // ----- Store the offset position of the file + $p_header['offset'] = ftell($this->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'File offset of the header :'.$p_header['offset']); + + // ----- Transform UNIX mtime to DOS format mdate/mtime + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + // ----- Packed data + $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, $p_header['version'], $p_header['flag'], + $p_header['compression'], $v_mtime, $v_mdate, + $p_header['crc'], $p_header['compressed_size'], $p_header['size'], + strlen($p_header['stored_filename']), $p_header['extra_len']); + + // ----- Write the first 148 bytes of the header in the archive + fputs($this->zip_fd, $v_binary_data, 30); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) + { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) + { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteCentralFileHeader(&$p_header) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralFileHeader", 'file="'.$p_header['filename'].'", stored as "'.$p_header['stored_filename'].'"'); + $v_result=1; + + // TBC + //for(reset($p_header); $key = key($p_header); next($p_header)) { + // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "header[$key] = ".$p_header[$key]); + //} + + // ----- Transform UNIX mtime to DOS format mdate/mtime + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + // ----- Packed data + $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, $p_header['version'], $p_header['version_extracted'], + $p_header['flag'], $p_header['compression'], $v_mtime, $v_mdate, $p_header['crc'], + $p_header['compressed_size'], $p_header['size'], + strlen($p_header['stored_filename']), $p_header['extra_len'], $p_header['comment_len'], + $p_header['disk'], $p_header['internal'], $p_header['external'], $p_header['offset']); + + // ----- Write the 42 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 46); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) + { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) + { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + if ($p_header['comment_len'] != 0) + { + fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privWriteCentralHeader", 'nb_entries='.$p_nb_entries.', size='.$p_size.', offset='.$p_offset.', comment="'.$p_comment.'"'); + $v_result=1; + + // ----- Packed data + $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, $p_nb_entries, $p_size, $p_offset, strlen($p_comment)); + + // ----- Write the 22 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 22); + + // ----- Write the variable fields + if (strlen($p_comment) != 0) + { + fputs($this->zip_fd, $p_comment, strlen($p_comment)); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privList() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privList(&$p_list) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privList", "list"); + $v_result=1; + + // ----- Open the zip file + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Go to beginning of Central Dir + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Offset : ".$v_central_dir['offset']."'"); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'"); + @rewind($this->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'"); + if (@fseek($this->zip_fd, $v_central_dir['offset'])) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position in file : ".ftell($this->zip_fd)."'"); + + // ----- Read each entry + for ($i=0; $i<$v_central_dir['entries']; $i++) + { + // ----- Read the file header + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) + { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + $v_header['index'] = $i; + + // ----- Get the only interesting attributes + $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); + unset($v_header); + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privConvertHeader2FileInfo() + // Description : + // This function takes the file informations from the central directory + // entries and extract the interesting parameters that will be given back. + // The resulting file infos are set in the array $p_info + // $p_info['filename'] : Filename with full path. Given by user (add), + // extracted in the filesystem (extract). + // $p_info['stored_filename'] : Stored filename in the archive. + // $p_info['size'] = Size of the file. + // $p_info['compressed_size'] = Compressed size of the file. + // $p_info['mtime'] = Last modification date of the file. + // $p_info['comment'] = Comment associated with the file. + // $p_info['folder'] = true/false : indicates if the entry is a folder or not. + // $p_info['status'] = status of the action on the file. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privConvertHeader2FileInfo($p_header, &$p_info) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privConvertHeader2FileInfo", "Filename='".$p_header['filename']."'"); + $v_result=1; + + // ----- Get the interesting attributes + $p_info['filename'] = $p_header['filename']; + $p_info['stored_filename'] = $p_header['stored_filename']; + $p_info['size'] = $p_header['size']; + $p_info['compressed_size'] = $p_header['compressed_size']; + $p_info['mtime'] = $p_header['mtime']; + $p_info['comment'] = $p_header['comment']; + $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010); + $p_info['index'] = $p_header['index']; + $p_info['status'] = $p_header['status']; + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractByRule() + // Description : + // Extract a file or directory depending of rules (by index, by name, ...) + // Parameters : + // $p_file_list : An array where will be placed the properties of each + // extracted file + // $p_path : Path to add while writing the extracted files + // $p_remove_path : Path to remove (from the file memorized path) while writing the + // extracted files. If the path does not match the file path, + // the file is extracted with its memorized path. + // $p_remove_path does not apply to 'list' mode. + // $p_path and $p_remove_path are commulative. + // Return Values : + // 1 on success,0 or less on error (see error code list) + // -------------------------------------------------------------------------------- + function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privExtractByRule", "path='$p_path', remove_path='$p_remove_path', remove_all_path='".($p_remove_all_path?'true':'false')."'"); + $v_result=1; + + // ----- Check the path + if (($p_path == "") || ((substr($p_path, 0, 1) != "/") && (substr($p_path, 0, 3) != "../") && (substr($p_path,1,1)!=":"))) + $p_path = "./".$p_path; + + // ----- Reduce the path last (and duplicated) '/' + if (($p_path != "./") && ($p_path != "/")) + { + // ----- Look for the path end '/' + while (substr($p_path, -1) == "/") + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Destination path [$p_path] ends by '/'"); + $p_path = substr($p_path, 0, strlen($p_path)-1); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Modified to [$p_path]"); + } + } + + // ----- Look for path to remove format (should end by /) + if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) + { + $p_remove_path .= '/'; + } + $p_remove_path_size = strlen($p_remove_path); + + // ----- Open the zip file + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); + if (($v_result = $this->privOpenFd('rb')) != 1) + { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + + // ----- Read each entry + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry : '$i'"); + + // ----- Read next Central dir entry + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position before rewind : ".ftell($this->zip_fd)."'"); + @rewind($this->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Position after rewind : ".ftell($this->zip_fd)."'"); + if (@fseek($this->zip_fd, $v_pos_entry)) + { + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Position after fseek : ".ftell($this->zip_fd)."'"); + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Store the index + $v_header['index'] = $i; + + // ----- Store the file position + $v_pos_entry = ftell($this->zip_fd); + + // ----- Look for the specific extract rules + $v_extract = false; + + // ----- Look for extract by name rule + if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) + && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'"); + + // ----- Look if the filename is in the list + for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) + && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The directory is in the file path"); + $v_extract = true; + } + } + // ----- Look for a filename + elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The file is the right one."); + $v_extract = true; + } + } + } + + // ----- Look for extract by ereg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'"); + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression"); + $v_extract = true; + } + } + + // ----- Look for extract by preg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) + && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'"); + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression"); + $v_extract = true; + } + } + + // ----- Look for extract by index rule + else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) + && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'"); + + // ----- Look if the index is in the list + for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found as part of an index range"); + $v_extract = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Do not look this index range for next loop"); + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Index range is greater than index, stop loop"); + break; + } + } + } + + // ----- Look for no rule, which means extract all the archive + else { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with no rule (extract all)"); + $v_extract = true; + } + + + // ----- Look for real extraction + if ($v_extract) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file '".$v_header['filename']."', index '$i'"); + + // ----- Go to the file position + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'"); + @rewind($this->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'"); + if (@fseek($this->zip_fd, $v_header['offset'])) + { + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'"); + + // ----- Look for extraction as string + if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { + + // ----- Extracting the file + if (($v_result = $this->privExtractFileAsString($v_header, $v_string)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Set the file content + $p_file_list[$v_nb_extracted]['content'] = $v_string; + + // ----- Next extracted file + $v_nb_extracted++; + } + else { + // ----- Extracting the file + if (($v_result = $this->privExtractFile($v_header, $p_path, $p_remove_path, $p_remove_all_path, $p_options)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + } + } + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFile', "path='$p_path', remove_path='$p_remove_path', remove_all_path='".($p_remove_all_path?'true':'false')."'"); + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) + { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'"); + + // ----- Check that the file header is coherent with $p_entry info + // TBC + + // ----- Look for all path to remove + if ($p_remove_all_path == true) { + // ----- Get the basename of the path + $p_entry['filename'] = basename($p_entry['filename']); + } + + // ----- Look for path to remove + else if ($p_remove_path != "") + { + //if (strcmp($p_remove_path, $p_entry['filename'])==0) + if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The folder is the same as the removed path '".$p_entry['filename']."'"); + + // ----- Change the file status + $p_entry['status'] = "filtered"; + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + $p_remove_path_size = strlen($p_remove_path); + if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '".$p_entry['filename']."'"); + + // ----- Remove the path + $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Resulting file is '".$p_entry['filename']."'"); + } + } + + // ----- Add the path + if ($p_path != '') + { + $p_entry['filename'] = $p_path."/".$p_entry['filename']; + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_EXTRACT]."()') is defined for the extraction"); + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "New filename is '".$p_entry['filename']."'"); + } + + // ----- Trace + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '".$p_entry['filename']."', size '$v_header[size]'"); + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Look for specific actions while the file exist + if (file_exists($p_entry['filename'])) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_entry['filename']."' already exists"); + + // ----- Look if file is a directory + if (is_dir($p_entry['filename'])) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is a directory"); + + // ----- Change the file status + $p_entry['status'] = "already_a_directory"; + + // ----- Return + ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + //return $v_result; + } + // ----- Look if file is write protected + else if (!is_writeable($p_entry['filename'])) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is write protected"); + + // ----- Change the file status + $p_entry['status'] = "write_protected"; + + // ----- Return + ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + //return $v_result; + } + + // ----- Look if the extracted file is older + else if (filemtime($p_entry['filename']) > $p_entry['mtime']) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Existing file '".$p_entry['filename']."' is newer (".date("l dS of F Y h:i:s A", filemtime($p_entry['filename'])).") than the extracted file (".date("l dS of F Y h:i:s A", $p_entry['mtime']).")"); + + // ----- Change the file status + $p_entry['status'] = "newer_exist"; + + // ----- Return + ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + //return $v_result; + } + } + + // ----- Check the directory availability and create it if necessary + else { + if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/')) + $v_dir_to_check = $p_entry['filename']; + else if (!strstr($p_entry['filename'], "/")) + $v_dir_to_check = ""; + else + $v_dir_to_check = dirname($p_entry['filename']); + + if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to create path for '".$p_entry['filename']."'"); + + // ----- Change the file status + $p_entry['status'] = "path_creation_fail"; + + // ----- Return + ////--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + //return $v_result; + $v_result = 1; + } + } + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) + { + + // ----- Look for not compressed file + if ($p_entry['compressed_size'] == $p_entry['size']) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file"); + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode"); + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes"); + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Read $v_read_size bytes"); + $v_buffer = fread($this->zip_fd, $v_read_size); + $v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_binary_data, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Closing the destination file + fclose($v_dest_file); + + // ----- Change the file mtime + touch($p_entry['filename'], $p_entry['mtime']); + } + else + { + // ----- Trace + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file"); + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Error while opening '".$p_entry['filename']."' in write binary mode"); + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Reading '".$p_entry['size']."' bytes"); + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = gzinflate($v_buffer); + unset($v_buffer); + + // ----- Write the uncompressed data + @fwrite($v_dest_file, $v_file_content, $p_entry['size']); + unset($v_file_content); + + // ----- Closing the destination file + @fclose($v_dest_file); + + // ----- Change the file mtime + touch($p_entry['filename'], $p_entry['mtime']); + } + + // ----- Look for chmod option + if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "chmod option activated '".$p_options[PCLZIP_OPT_SET_CHMOD]."'"); + + // ----- Change the mode of the file + chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); + } + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done"); + } + } + + // ----- Look for post-extract callback + if (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A post-callback '".$p_options[PCLZIP_CB_POST_EXTRACT]."()') is defined for the extraction"); + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileAsString() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileAsString(&$p_entry, &$p_string) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::privExtractFileAsString', "p_entry['filename']='".$p_entry['filename']."'"); + $v_result=1; + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadFileHeader($v_header)) != 1) + { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found file '".$v_header['filename']."', size '".$v_header['size']."'"); + + // ----- Check that the file header is coherent with $p_entry info + // TBC + + // ----- Trace + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting file in string (with path) '".$p_entry['filename']."', size '$v_header[size]'"); + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) + { + // ----- Look for not compressed file + if ($p_entry['compressed_size'] == $p_entry['size']) + { + // ----- Trace + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting an un-compressed file"); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Reading '".$p_entry['size']."' bytes"); + + // ----- Reading the file + $p_string = fread($this->zip_fd, $p_entry['compressed_size']); + } + else + { + // ----- Trace + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file"); + + // ----- Reading the file + $v_data = fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $p_string = gzinflate($v_data); + } + + // ----- Trace + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extraction done"); + } + else { + // TBC : error : can not extract a folder in a string + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadFileHeader(&$p_header) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadFileHeader", ""); + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'"); + $v_data = unpack('Vid', $v_binary_data); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'"); + + // ----- Check signature + if ($v_data['id'] != 0x04034b50) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid File header"); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 26); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 26) + { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Extract the values + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Header : '".$v_binary_data."'"); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Header (Hex) : '".bin2hex($v_binary_data)."'"); + $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); + + // ----- Get filename + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "File name length : ".$v_data['filename_len']); + $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Filename : \''.$p_header['filename'].'\''); + + // ----- Get extra_fields + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extra field length : ".$v_data['extra_len']); + if ($v_data['extra_len'] != 0) { + $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); + } + else { + $p_header['extra'] = ''; + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Extra field : \''.bin2hex($p_header['extra']).'\''); + + // ----- Extract properties + $p_header['compression'] = $v_data['compression']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compression method : \''.bin2hex($p_header['compression']).'\''); + $p_header['size'] = $v_data['size']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size : \''.$p_header['size'].'\''); + $p_header['compressed_size'] = $v_data['compressed_size']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Compressed Size : \''.$p_header['compressed_size'].'\''); + $p_header['crc'] = $v_data['crc']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'CRC : \''.$p_header['crc'].'\''); + $p_header['flag'] = $v_data['flag']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Flag : \''.$p_header['flag'].'\''); + + // ----- Recuperate date in UNIX format + $p_header['mdate'] = $v_data['mdate']; + $p_header['mtime'] = $v_data['mtime']; + if ($p_header['mdate'] && $p_header['mtime']) + { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); + } + else + { + $p_header['mtime'] = time(); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); + } + + // ----- Other informations + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Compression type : ".$v_data['compression']); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Version : ".$v_data['version']); + + // TBC + //for(reset($v_data); $key = key($v_data); next($v_data)) { + // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Attribut[$key] = ".$v_data[$key]); + //} + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set the status field + $p_header['status'] = "ok"; + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadCentralFileHeader(&$p_header) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadCentralFileHeader", ""); + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary data is : '".sprintf("%08x", $v_binary_data)."'"); + $v_data = unpack('Vid', $v_binary_data); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'"); + + // ----- Check signature + if ($v_data['id'] != 0x02014b50) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Invalid Central Dir File signature"); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 42); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 42) + { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Extract the values + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header : '".$v_binary_data."'"); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header (Hex) : '".bin2hex($v_binary_data)."'"); + $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); + + // ----- Get filename + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "File name length : ".$p_header['filename_len']); + if ($p_header['filename_len'] != 0) + $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); + else + $p_header['filename'] = ''; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Filename : \''.$p_header['filename'].'\''); + + // ----- Get extra + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Extra length : ".$p_header['extra_len']); + if ($p_header['extra_len'] != 0) + $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); + else + $p_header['extra'] = ''; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Extra : \''.$p_header['extra'].'\''); + + // ----- Get comment + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Comment length : ".$p_header['comment_len']); + if ($p_header['comment_len'] != 0) + $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); + else + $p_header['comment'] = ''; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Comment : \''.$p_header['comment'].'\''); + + // ----- Extract properties + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version : \''.($p_header['version']/10).'.'.($p_header['version']%10).'\''); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Version need to extract : \''.($p_header['version_extracted']/10).'.'.($p_header['version_extracted']%10).'\''); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Size : \''.$p_header['size'].'\''); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Compressed Size : \''.$p_header['compressed_size'].'\''); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'CRC : \''.$p_header['crc'].'\''); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Flag : \''.$p_header['flag'].'\''); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Offset : \''.$p_header['offset'].'\''); + + // ----- Recuperate date in UNIX format + if ($p_header['mdate'] && $p_header['mtime']) + { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); + } + else + { + $p_header['mtime'] = time(); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date is actual : \''.date("d/m/y H:i:s", $p_header['mtime']).'\''); + } + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set default status to ok + $p_header['status'] = 'ok'; + + // ----- Look if it is a directory + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Internal (Hex) : '".sprintf("Ox%04X", $p_header['internal'])."'"); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "External (Hex) : '".sprintf("Ox%04X", $p_header['external'])."' (".(($p_header['external']&0x00000010)==0x00000010?'is a folder':'is a file').')'); + if (substr($p_header['filename'], -1) == '/') + { + $p_header['external'] = 0x41FF0010; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Force folder external : \''.$p_header['external'].'\''); + } + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Header of filename : \''.$p_header['filename'].'\''); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadEndCentralDir() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadEndCentralDir(&$p_central_dir) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privReadEndCentralDir", ""); + $v_result=1; + + // ----- Go to the end of the zip file + $v_size = filesize($this->zipname); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Size of the file :$v_size"); + @fseek($this->zip_fd, $v_size); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position at end of zip file : \''.ftell($this->zip_fd).'\''); + if (@ftell($this->zip_fd) != $v_size) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- First try : look if this is an archive with no commentaries (most of the time) + // in this case the end of central dir is at 22 bytes of the file end + $v_found = 0; + if ($v_size > 26) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Look for central dir with no comment'); + @fseek($this->zip_fd, $v_size-22); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after min central position : \''.ftell($this->zip_fd).'\''); + if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Read for bytes + $v_binary_data = @fread($this->zip_fd, 4); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Binary data is : '".sprintf("%08x", $v_binary_data)."'"); + $v_data = unpack('Vid', $v_binary_data); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Binary signature is : '".sprintf("0x%08x", $v_data['id'])."'"); + + // ----- Check signature + if ($v_data['id'] == 0x06054b50) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Found central dir at the default position."); + $v_found = 1; + } + + $v_pos = ftell($this->zip_fd); + } + + // ----- Go back to the maximum possible size of the Central Dir End Record + if (!$v_found) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Start extended search of end central dir'); + $v_maximum_size = 65557; // 0xFFFF + 22; + if ($v_maximum_size > $v_size) + $v_maximum_size = $v_size; + @fseek($this->zip_fd, $v_size-$v_maximum_size); + if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Position after max central position : \''.ftell($this->zip_fd).'\''); + + // ----- Read byte per byte in order to find the signature + $v_pos = ftell($this->zip_fd); + $v_bytes = 0x00000000; + while ($v_pos < $v_size) + { + // ----- Read a byte + $v_byte = @fread($this->zip_fd, 1); + + // ----- Add the byte + $v_bytes = ($v_bytes << 8) | Ord($v_byte); + + // ----- Compare the bytes + if ($v_bytes == 0x504b0506) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Found End Central Dir signature at position : \''.ftell($this->zip_fd).'\''); + $v_pos++; + break; + } + + $v_pos++; + } + + // ----- Look if not found end of central dir + if ($v_pos == $v_size) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to find End of Central Dir Record signature"); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + } + + // ----- Read the first 18 bytes of the header + $v_binary_data = fread($this->zip_fd, 18); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 18) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Extract the values + ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Central Dir Record : '".$v_binary_data."'"); + ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Central Dir Record (Hex) : '".bin2hex($v_binary_data)."'"); + $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); + + // ----- Check the global size + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Comment length : ".$v_data['comment_size']); + if (($v_pos + $v_data['comment_size'] + 18) != $v_size) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Fail to find the right signature"); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Fail to find the right signature"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Get comment + if ($v_data['comment_size'] != 0) + $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); + else + $p_central_dir['comment'] = ''; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment : \''.$p_central_dir['comment'].'\''); + + $p_central_dir['entries'] = $v_data['entries']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries : \''.$p_central_dir['entries'].'\''); + $p_central_dir['disk_entries'] = $v_data['disk_entries']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Nb of entries for this disk : \''.$p_central_dir['disk_entries'].'\''); + $p_central_dir['offset'] = $v_data['offset']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Offset of Central Dir : \''.$p_central_dir['offset'].'\''); + $p_central_dir['size'] = $v_data['size']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Size of Central Dir : \''.$p_central_dir['size'].'\''); + $p_central_dir['disk'] = $v_data['disk']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Disk number : \''.$p_central_dir['disk'].'\''); + $p_central_dir['disk_start'] = $v_data['disk_start']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Start disk number : \''.$p_central_dir['disk_start'].'\''); + + // TBC + //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { + // //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "central_dir[$key] = ".$p_central_dir[$key]); + //} + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDeleteByRule() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDeleteByRule(&$p_result_list, &$p_options) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDeleteByRule", ""); + $v_result=1; + $v_list_detail = array(); + + // ----- Open the zip file + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Go to beginning of File + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'"); + @rewind($this->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in file : ".ftell($this->zip_fd)."'"); + + // ----- Scan all the files + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position before rewind : ".ftell($this->zip_fd)."'"); + @rewind($this->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'"); + if (@fseek($this->zip_fd, $v_pos_entry)) + { + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'"); + + // ----- Read each entry + $v_header_list = array(); + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Read next file header entry (index '$i')"); + + // ----- Read the file header + $v_header_list[$v_nb_extracted] = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename (index '$i') : '".$v_header_list[$v_nb_extracted]['stored_filename']."'"); + + // ----- Store the index + $v_header_list[$v_nb_extracted]['index'] = $i; + + // ----- Look for the specific extract rules + $v_found = false; + + // ----- Look for extract by name rule + if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) + && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByName'"); + + // ----- Look if the filename is in the list + for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) + && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The directory is in the file path"); + $v_found = true; + } + elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ + && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The entry is the searched directory"); + $v_found = true; + } + } + // ----- Look for a filename + elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The file is the right one."); + $v_found = true; + } + } + } + + // ----- Look for extract by ereg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract by ereg '".$p_options[PCLZIP_OPT_BY_EREG]."'"); + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression"); + $v_found = true; + } + } + + // ----- Look for extract by preg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) + && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByEreg'"); + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filename match the regular expression"); + $v_found = true; + } + } + + // ----- Look for extract by index rule + else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) + && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Extract with rule 'ByIndex'"); + + // ----- Look if the index is in the list + for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Found as part of an index range"); + $v_found = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Do not look this index range for next loop"); + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Index range is greater than index, stop loop"); + break; + } + } + } + + // ----- Look for deletion + if ($v_found) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' need to be deleted"); + unset($v_header_list[$v_nb_extracted]); + } + else + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_header_list[$v_nb_extracted]['stored_filename']."', index '$i' will not be deleted"); + $v_nb_extracted++; + } + } + + // ----- Look if something need to be deleted + if ($v_nb_extracted > 0) { + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Creates a temporary zip archive + $v_temp_zip = new PclZip($v_zip_temp_name); + + // ----- Open the temporary zip file in write mode + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary write mode"); + if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { + $this->privCloseFd(); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Look which file need to be kept + for ($i=0; $izip_fd)."'"); + @rewind($this->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after rewind : ".ftell($this->zip_fd)."'"); + if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position after fseek : ".ftell($this->zip_fd)."'"); + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header_list[$i])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Write the file header + if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Offset for this file is '".$v_header_list[$i]['offset']."'"); + + // ----- Read/write the data block + if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_temp_zip->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "New offset of central dir : $v_offset"); + + // ----- Re-Create the Central Dir files header + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the new central directory"); + for ($i=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Transform the header to a 'usable' info + $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Creates the central directory footer"); + + // ----- Zip file comment + $v_comment = ''; + + // ----- Calculate the size of the central header + $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Close + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Destroy the temporary archive + unset($v_temp_zip); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDirCheck() + // Description : + // Check if a directory exists, if not it creates it and all the parents directory + // which may be useful. + // Parameters : + // $p_dir : Directory path to check. + // Return Values : + // 1 : OK + // -1 : Unable to create directory + // -------------------------------------------------------------------------------- + function privDirCheck($p_dir, $p_is_dir=false) + { + $v_result = 1; + + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDirCheck", "entry='$p_dir', is_dir='".($p_is_dir?"true":"false")."'"); + + // ----- Remove the final '/' + if (($p_is_dir) && (substr($p_dir, -1)=='/')) + { + $p_dir = substr($p_dir, 0, strlen($p_dir)-1); + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for entry '$p_dir'"); + + // ----- Check the directory availability + if ((is_dir($p_dir)) || ($p_dir == "")) + { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, "'$p_dir' is a directory"); + return 1; + } + + // ----- Extract parent directory + $p_parent_dir = dirname($p_dir); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Parent directory is '$p_parent_dir'"); + + // ----- Just a check + if ($p_parent_dir != $p_dir) + { + // ----- Look for parent directory + if ($p_parent_dir != "") + { + if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) + { + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + } + } + + // ----- Create the directory + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Create directory '$p_dir'"); + if (!@mkdir($p_dir, 0777)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result, "Directory '$p_dir' created"); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privMerge() + // Description : + // If $p_archive_to_add does not exist, the function exit with a success result. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privMerge(&$p_archive_to_add) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privMerge", "archive='".$p_archive_to_add->zipname."'"); + $v_result=1; + + // ----- Look if the archive_to_add exists + if (!is_file($p_archive_to_add->zipname)) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to add does not exist. End of merge."); + + // ----- Nothing to merge, so merge is a success + $v_result = 1; + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Look if the archive exists + if (!is_file($this->zipname)) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive does not exist, duplicate the archive_to_add."); + + // ----- Do a duplicate + $v_result = $this->privDuplicate($p_archive_to_add->zipname); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Open the zip file + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Go to beginning of File + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'"); + @rewind($this->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in zip : ".ftell($this->zip_fd)."'"); + + // ----- Open the archive_to_add file + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open archive_to_add in binary read mode"); + if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) + { + $this->privCloseFd(); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir_to_add = array(); + if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Go to beginning of File + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'"); + @rewind($p_archive_to_add->zip_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'"); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the files from the archive_to_add into the temporary file + $v_size = $v_central_dir_to_add['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); + $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_zip_temp_fd); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset"); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); + $v_buffer = @fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the block of file headers from the archive_to_add + $v_size = $v_central_dir_to_add['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); + $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Zip file comment + // TBC : I should merge the two comments + $v_comment = ''; + + // ----- Calculate the size of the (new) central header + $v_size = @ftell($v_zip_temp_fd)-$v_offset; + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive fd + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + @fclose($v_zip_temp_fd); + $this->zip_fd = null; + + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDuplicate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDuplicate($p_archive_filename) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::privDuplicate", "archive_filename='$p_archive_filename'"); + $v_result=1; + + // ----- Look if the $p_archive_filename exists + if (!is_file($p_archive_filename)) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Archive to duplicate does not exist. End of duplicate."); + + // ----- Nothing to duplicate, so duplicate is a success. + $v_result = 1; + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Open the zip file + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); + if (($v_result=$this->privOpenFd('wb')) != 1) + { + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + + // ----- Open the temporary file in write mode + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); + if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) + { + $this->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo()); + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = filesize($p_archive_filename); + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Read $v_read_size bytes"); + $v_buffer = fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorLog() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privErrorLog($p_error_code=0, $p_error_string='') + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclError($p_error_code, $p_error_string); + } + else { + $this->error_code = $p_error_code; + $this->error_string = $p_error_string; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorReset() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privErrorReset() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclErrorReset(); + } + else { + $this->error_code = 1; + $this->error_string = ''; + } + } + // -------------------------------------------------------------------------------- + + } + // End of class + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilPathReduction() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function PclZipUtilPathReduction($p_dir) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathReduction", "dir='$p_dir'"); + $v_result = ""; + + // ----- Look for not empty path + if ($p_dir != "") + { + // ----- Explode path by directory names + $v_list = explode("/", $p_dir); + + // ----- Study directories from last to first + for ($i=sizeof($v_list)-1; $i>=0; $i--) + { + // ----- Look for current path + if ($v_list[$i] == ".") + { + // ----- Ignore this directory + // Should be the first $i=0, but no check is done + } + else if ($v_list[$i] == "..") + { + // ----- Ignore it and ignore the $i-1 + $i--; + } + else if (($v_list[$i] == "") && ($i!=(sizeof($v_list)-1)) && ($i!=0)) + { + // ----- Ignore only the double '//' in path, + // but not the first and last '/' + } + else + { + $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); + } + } + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilPathInclusion() + // Description : + // This function indicates if the path $p_path is under the $p_dir tree. Or, + // said in an other way, if the file or sub-dir $p_path is inside the dir + // $p_dir. + // The function indicates also if the path is exactly the same as the dir. + // This function supports path with duplicated '/' like '//', but does not + // support '.' or '..' statements. + // Parameters : + // Return Values : + // 0 if $p_path is not inside directory $p_dir + // 1 if $p_path is inside directory $p_dir + // 2 if $p_path is exactly the same as $p_dir + // -------------------------------------------------------------------------------- + function PclZipUtilPathInclusion($p_dir, $p_path) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilPathInclusion", "dir='$p_dir', path='$p_path'"); + $v_result = 1; + + // ----- Explode dir and path by directory separator + $v_list_dir = explode("/", $p_dir); + $v_list_dir_size = sizeof($v_list_dir); + $v_list_path = explode("/", $p_path); + $v_list_path_size = sizeof($v_list_path); + + // ----- Study directories paths + $i = 0; + $j = 0; + while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Working on dir($i)='".$v_list_dir[$i]."' and path($j)='".$v_list_path[$j]."'"); + + // ----- Look for empty dir (path reduction) + if ($v_list_dir[$i] == '') { + $i++; + continue; + } + if ($v_list_path[$j] == '') { + $j++; + continue; + } + + // ----- Compare the items + if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != '')) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Items ($i,$j) are different"); + $v_result = 0; + } + + // ----- Next items + $i++; + $j++; + } + + // ----- Look if everything seems to be the same + if ($v_result) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Look for tie break"); + // ----- Skip all the empty items + while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++; + while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++; + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Looking on dir($i)='".($i < $v_list_dir_size?$v_list_dir[$i]:'')."' and path($j)='".($j < $v_list_path_size?$v_list_path[$j]:'')."'"); + + if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { + // ----- There are exactly the same + $v_result = 2; + } + else if ($i < $v_list_dir_size) { + // ----- The path is shorter than the dir + $v_result = 0; + } + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilCopyBlock() + // Description : + // Parameters : + // $p_mode : read/write compression mode + // 0 : src & dest normal + // 1 : src gzip, dest normal + // 2 : src normal, dest gzip + // 3 : src & dest gzip + // Return Values : + // -------------------------------------------------------------------------------- + function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilCopyBlock", "size=$p_size, mode=$p_mode"); + $v_result = 1; + + if ($p_mode==0) + { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Src offset before read :".(@ftell($p_src))); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Dest offset before write :".(@ftell($p_dest))); + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); + $v_buffer = @fread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Src offset after read :".(@ftell($p_src))); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Dest offset after write :".(@ftell($p_dest))); + } + else if ($p_mode==1) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); + $v_buffer = @gzread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==2) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); + $v_buffer = @fread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==3) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes"); + $v_buffer = @gzread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilRename() + // Description : + // This function tries to do a simple rename() function. If it fails, it + // tries to copy the $p_src file in a new $p_dest file and then unlink the + // first one. + // Parameters : + // $p_src : Old filename + // $p_dest : New filename + // Return Values : + // 1 on success, 0 on failure. + // -------------------------------------------------------------------------------- + function PclZipUtilRename($p_src, $p_dest) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilRename", "source=$p_src, destination=$p_dest"); + $v_result = 1; + + // ----- Try to rename the files + if (!@rename($p_src, $p_dest)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to rename file, try copy+unlink"); + + // ----- Try to copy & unlink the src + if (!@copy($p_src, $p_dest)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to copy file"); + $v_result = 0; + } + else if (!@unlink($p_src)) { + //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Fail to unlink old filename"); + $v_result = 0; + } + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilOptionText() + // Description : + // Translate option value in text. Mainly for debug purpose. + // Parameters : + // $p_option : the option value. + // Return Values : + // The option text value. + // -------------------------------------------------------------------------------- + function PclZipUtilOptionText($p_option) + { + //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZipUtilOptionText", "option='".$p_option."'"); + + switch ($p_option) { + case PCLZIP_OPT_PATH : + $v_result = 'PCLZIP_OPT_PATH'; + break; + case PCLZIP_OPT_ADD_PATH : + $v_result = 'PCLZIP_OPT_ADD_PATH'; + break; + case PCLZIP_OPT_REMOVE_PATH : + $v_result = 'PCLZIP_OPT_REMOVE_PATH'; + break; + case PCLZIP_OPT_REMOVE_ALL_PATH : + $v_result = 'PCLZIP_OPT_REMOVE_ALL_PATH'; + break; + case PCLZIP_OPT_EXTRACT_AS_STRING : + $v_result = 'PCLZIP_OPT_EXTRACT_AS_STRING'; + break; + case PCLZIP_OPT_SET_CHMOD : + $v_result = 'PCLZIP_OPT_SET_CHMOD'; + break; + case PCLZIP_OPT_BY_NAME : + $v_result = 'PCLZIP_OPT_BY_NAME'; + break; + case PCLZIP_OPT_BY_INDEX : + $v_result = 'PCLZIP_OPT_BY_INDEX'; + break; + case PCLZIP_OPT_BY_EREG : + $v_result = 'PCLZIP_OPT_BY_EREG'; + break; + case PCLZIP_OPT_BY_PREG : + $v_result = 'PCLZIP_OPT_BY_PREG'; + break; + + + case PCLZIP_CB_PRE_EXTRACT : + $v_result = 'PCLZIP_CB_PRE_EXTRACT'; + break; + case PCLZIP_CB_POST_EXTRACT : + $v_result = 'PCLZIP_CB_POST_EXTRACT'; + break; + case PCLZIP_CB_PRE_ADD : + $v_result = 'PCLZIP_CB_PRE_ADD'; + break; + case PCLZIP_CB_POST_ADD : + $v_result = 'PCLZIP_CB_POST_ADD'; + break; + + default : + $v_result = 'Unknown'; + } + + // ----- Return + //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result); + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilTranslateWinPath() + // Description : + // Translate windows path by replacing '\' by '/' and optionally removing + // drive letter. + // Parameters : + // $p_path : path to translate. + // $p_remove_disk_letter : true | false + // Return Values : + // The path translated. + // -------------------------------------------------------------------------------- + function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true) + { + if (stristr(php_uname(), 'windows')) { + // ----- Look for potential disk letter + if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { + $p_path = substr($p_path, $v_position+1); + } + // ----- Change potential windows directory separator + if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) { + $p_path = strtr($p_path, '\\', '/'); + } + } + return $p_path; + } + // -------------------------------------------------------------------------------- + +?> diff --git a/lib/pclzip/readme.txt b/lib/pclzip/readme.txt index 721f9db42e3..4574840d87f 100644 --- a/lib/pclzip/readme.txt +++ b/lib/pclzip/readme.txt @@ -1,324 +1,260 @@ -// -------------------------------------------------------------------------------- -// PclZip 2.4-RC1 - readme.txt -// -------------------------------------------------------------------------------- -// License GNU/LGPL - November 2004 -// Vincent Blavet - vincent@phpconcept.net -// http://www.phpconcept.net -// -------------------------------------------------------------------------------- -// $Id$ -// -------------------------------------------------------------------------------- - - - -0 - Sommaire -============ - 1 - Introduction - 2 - What's new - 3 - Corrected bugs - 4 - Known bugs or limitations - 5 - License - 6 - Warning - 7 - Author - 8 - Contribute - -1 - Introduction -================ - - PclZip is a library that allow you to manage a Zip archive. - - Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip - -2 - What's new -============== - - Version 2.4-RC1 : - - Bug correction : PclZip now correctly unzip file in some specific situation, - when compressed content has same size as uncompressed content. - - Bug correction : When selecting option 'PCLZIP_OPT_REMOVE_ALL_PATH', - directories are not any more created. - - Code improvment : correct unclosed opendir(), better handling of . and .. in - loops. - - - Version 2.3 : - - Correct a bug with PHP5 : affecting the value 0xFE49FFE0 to a variable does not - give the same result in PHP4 and PHP5 .... - - Version 2.2 : - - Try development of PCLZIP_OPT_CRYPT ..... - However this becomes to a stop. To crypt/decrypt I need to multiply 2 long integers, - the result (greater than a long) is not supported by PHP. Even the use of bcmath - functions does not help. I did not find yet a solution ...; - - Add missing '/' at end of directory entries - - Check is a file is encrypted or not. Returns status 'unsupported_encryption' and/or - error code PCLZIP_ERR_UNSUPPORTED_ENCRYPTION. - - Corrected : Bad "version need to extract" field in local file header - - Add private method privCheckFileHeaders() in order to check local and central - file headers. PclZip is now supporting purpose bit flag bit 3. Purpose bit flag bit 3 gives - the ability to have a local file header without size, compressed size and crc filled. - - Add a generic status 'error' for file status - - Add control of compression type. PclZip only support deflate compression method. - Before v2.2, PclZip does not check the compression method used in an archive while - extracting. With v2.2 PclZip returns a new error status for a file using an unsupported - compression method. New status is "unsupported_compression". New error code is - PCLZIP_ERR_UNSUPPORTED_COMPRESSION. - - Add optional attribute PCLZIP_OPT_STOP_ON_ERROR. This will stop the extract of files - when errors like 'a folder with same name exists' or 'a newer file exists' or - 'a write protected file' exists, rather than set a status for the concerning file - and resume the extract of the zip. - - Add optional attribute PCLZIP_OPT_REPLACE_NEWER. This will force, during an extract' the - replacement of the file, even if a newer version of the file exists. - Note that today if a file with the same name already exists but is older it will be - replaced by the extracted one. - - Improve PclZipUtilOption() - - Support of zip archive with trailing bytes. Before 2.2, PclZip checks that the central - directory structure is the last data in the archive. Crypt encryption/decryption of - zip archive put trailing 0 bytes after decryption. PclZip is now supporting this. - - Version 2.1 : - - Add the ability to abort the extraction by using a user callback function. - The user can now return the value '2' in its callback which indicates to stop the - extraction. For a pre call-back extract is stopped before the extration of the current - file. For a post call back, the extraction is stopped after. - - Add the ability to extract a file (or several files) directly in the standard output. - This is done by the new parameter PCLZIP_OPT_EXTRACT_IN_OUTPUT with method extract(). - - Add support for parameters PCLZIP_OPT_COMMENT, PCLZIP_OPT_ADD_COMMENT, - PCLZIP_OPT_PREPEND_COMMENT. This will create, replace, add, or prepend comments - in the zip archive. - - When merging two archives, the comments are not any more lost, but merged, with a - blank space separator. - - Corrected bug : Files are not deleted when all files are asked to be deleted. - - Corrected bug : Folders with name '0' made PclZip to abort the create or add feature. - - - Version 2.0 : - ***** Warning : Some new features may break the backward compatibility for your scripts. - Please carefully read the readme file. - - Add the ability to delete by Index, name and regular expression. This feature is - performed by the method delete(), which uses the optional parameters - PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG. - - Add the ability to extract by regular expression. To extract by regexp you must use the method - extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG - (depending if you want to use ereg() or preg_match() syntax) followed by the - regular expression pattern. - - Add the ability to extract by index, directly with the extract() method. This is a - code improvment of the extractByIndex() method. - - Add the ability to extract by name. To extract by name you must use the method - extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to - extract or an array of filenames to extract. To extract all a folder, use the folder - name rather than the filename with a '/' at the end. - - Add the ability to add files without compression. This is done with a new attribute - which is PCLZIP_OPT_NO_COMPRESSION. - - Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly - in a string without using any file (or temporary file). - - Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string. - The default separator is now a comma (,) and not any more a blank space. - THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with - your script. - - Improve algorythm performance by removing the use of temporary files when adding or - extracting files in an archive. - - Add (correct) detection of empty filename zipping. This can occurs when the removed - path is the same - as a zipped dir. The dir is not zipped (['status'] = filtered), only its content. - - Add better support for windows paths (thanks for help from manus@manusfreedom.com). - - Corrected bug : When the archive file already exists with size=0, the add() method - fails. Corrected in 2.0. - - Remove the use of OS_WINDOWS constant. Use php_uname() function rather. - - Control the order of index ranges in extract by index feature. - - Change the internal management of folders (better handling of internal flag). - - - Version 1.3 : - - Removing the double include check. This is now done by include_once() and require_once() - PHP directives. - - Changing the error handling mecanism : Remove the use of an external error library. - The former PclError...() functions are replaced by internal equivalent methods. - By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library. - Introducing the use of constants for error codes rather than integer values. This will help - in futur improvment. - Introduction of error handling functions like errorCode(), errorName() and errorInfo(). - - Remove the deprecated use of calling function with arguments passed by reference. - - Add the calling of extract(), extractByIndex(), create() and add() functions - with variable options rather than fixed arguments. - - Add the ability to remove all the file path while extracting or adding, - without any need to specify the path to remove. - This is available for extract(), extractByIndex(), create() and add() functionS by using - the new variable options parameters : - - PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct. - - Ability to change the mode of a file after the extraction (chmod()). - This is available for extract() and extractByIndex() functionS by using - the new variable options parameters. - - PCLZIP_OPT_SET_CHMOD : by setting the value of this option. - - Ability to definition call-back options. These call-back will be called during the adding, - or the extracting of file (extract(), extractByIndex(), create() and add() functions) : - - PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user - can trigerred the change the filename of the extracted file. The user can triggered the - skip of the extraction. This is adding a 'skipped' status in the file list result value. - - PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file. - Nothing can be triggered from that point. - - PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user - can trigerred the change the stored filename of the added file. The user can triggered the - skip of the add. This is adding a 'skipped' status in the file list result value. - - PCLZIP_CB_POST_ADD : will be called after each add of a file. - Nothing can be triggered from that point. - - Two status are added in the file list returned as function result : skipped & filename_too_long - 'skipped' is used when a call-back function ask for skipping the file. - 'filename_too_long' is used while adding a file with a too long filename to archive (the file is - not added) - - Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into - a directory. - - Add a check of the presence of the archive file before some actions (like list, ...) - - Add the initialisation of field "index" in header array. This means that by - default index will be -1 when not explicitly set by the methods. - - Version 1.2 : - - Adding a duplicate function. - - Adding a merge function. The merge function is a "quick merge" function, - it just append the content of an archive at the end of the first one. There - is no check for duplicate files or more recent files. - - Improve the search of the central directory end. - - Version 1.1.2 : - - - Changing the license of PclZip. PclZip is now released under the GNU / LGPL license - (see License section). - - Adding the optional support of a static temporary directory. You will need to configure - the constant PCLZIP_TEMPORARY_DIR if you want to use this feature. - - Improving the rename() function. In some cases rename() does not work (different - Filesystems), so it will be replaced by a copy() + unlink() functions. - - Version 1.1.1 : - - - Maintenance release, no new feature. - - Version 1.1 : - - - New method Add() : adding files in the archive - - New method ExtractByIndex() : partial extract of the archive, files are identified by - their index in the archive - - New method DeleteByIndex() : delete some files/folder entries from the archive, - files are identified by their index in the archive. - - Adding a test of the zlib extension presence. If not present abort the script. - - Version 1.0.1 : - - - No new feature - - -3 - Corrected bugs -================== - - Corrected in Version 2.0 : - - Corrected : During an extraction, if a call-back fucntion is used and try to skip - a file, all the extraction process is stopped. - - Corrected in Version 1.3 : - - Corrected : Support of static synopsis for method extract() is broken. - - Corrected : invalid size of archive content field (0xFF) should be (0xFFFF). - - Corrected : When an extract is done with a remove_path parameter, the entry for - the directory with exactly the same path is not skipped/filtered. - - Corrected : extractByIndex() and deleteByIndex() were not managing index in the - right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This - is due to a sort of the index resulting table that puts 11 before 3-5 (sort on - string and not interger). The sort is temporarilly removed, this means that - you must provide a sorted list of index ranges. - - Corrected in Version 1.2 : - - - Nothing. - - Corrected in Version 1.1.2 : - - - Corrected : Winzip is unable to delete or add new files in a PclZip created archives. - - Corrected in Version 1.1.1 : - - - Corrected : When archived file is not compressed (0% compression), the - extract method fails. - - Corrected in Version 1.1 : - - - Corrected : Adding a complete tree of folder may result in a bad archive - creation. - - Corrected in Version 1.0.1 : - - - Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). - - -4 - Known bugs or limitations -============================= - - Please publish bugs reports in SourceForge : - http://sourceforge.net/tracker/?group_id=40254&atid=427564 - - In Version 2.x : - - PclZip does only support file uncompressed or compressed with deflate (compression method 8) - - PclZip does not support password protected zip archive - - In Version 1.2 : - - - merge() methods does not check for duplicate files or last date of modifications. - - In Version 1.1 : - - - Limitation : Using 'extract' fields in the file header in the zip archive is not supported. - - WinZip is unable to delete a single file in a PclZip created archive. It is also unable to - add a file in a PclZip created archive. (Corrected in v.1.2) - - In Version 1.0.1 : - - - Adding a complete tree of folder may result in a bad archive - creation. (Corrected in V.1.1). - - Path given to methods must be in the unix format (/) and not the Windows format (\). - Workaround : Use only / directory separators. - - PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz - added suffix. Files with these names may already exist and may be overwritten. - Workaround : none. - - PclZip does not check if the zlib extension is present. If it is absent, the zip - file is not created and the lib abort without warning. - Workaround : enable the zlib extension on the php install - - In Version 1.0 : - - - Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). - (Corrected in v.1.0.1) - - Limitation : Multi-disk zip archive are not supported. - - -5 - License -=========== - - Since version 1.1.2, PclZip Library is released under GNU/LGPL license. - This library is free, so you can use it at no cost. - - HOWEVER, if you release a script, an application, a library or any kind of - code using PclZip library (or a part of it), YOU MUST : - - Indicate in the documentation (or a readme file), that your work - uses PclZip Library, and make a reference to the author and the web site - http://www.phpconcept.net - - Gives the ability to the final user to update the PclZip libary. - - I will also appreciate that you send me a mail (vincent@phpconcept.net), just to - be aware that someone is using PclZip. - - For more information about GNU/LGPL license : http://www.gnu.org - -6 - Warning -================= - - This library and the associated files are non commercial, non professional work. - It should not have unexpected results. However if any damage is caused by this software - the author can not be responsible. - The use of this software is at the risk of the user. - -7 - Author -========== - - This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time. - -8 - Contribute -============== - If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net. - If you can help in financing PhpConcept hosting service, please go to - http://www.phpconcept.net/soutien.php +// -------------------------------------------------------------------------------- +// PclZip 2.0-rc2 - readme.txt +// -------------------------------------------------------------------------------- +// License GNU/GPL - january 2003 +// Vincent Blavet - vincent@phpconcept.net +// http://www.phpconcept.net +// -------------------------------------------------------------------------------- +// $Id$ +// -------------------------------------------------------------------------------- + + + +0 - Sommaire +============ + 1 - Introduction + 2 - What's new + 3 - Corrected bugs + 4 - Known bugs or limitations + 5 - License + 6 - Warning + 7 - Author + 8 - Contribute + +1 - Introduction +================ + + PclZip is a library that allow you to manage a Zip archive. + + Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip + +2 - What's new +============== + + Version 2.0-rc2 : + ***** Warning : Some new features may break the backward compatibility for your scripts. + Please carefully read the readme file. + - Add the ability to delete by Index, name and regular expression. This feature is + performed by the method delete(), which uses the optional parameters + PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG. + - Add the ability to extract by regular expression. To extract by regexp you must use the method + extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG + (depending if you want to use ereg() or preg_match() syntax) followed by the + regular expression pattern. + - Add the ability to extract by index, directly with the extract() method. This is a + code improvment of the extractByIndex() method. + - Add the ability to extract by name. To extract by name you must use the method + extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to + extract or an array of filenames to extract. To extract all a folder, use the folder + name rather than the filename with a '/' at the end. + - Add the ability to add files without compression. This is done with a new attribute + which is PCLZIP_OPT_NO_COMPRESSION. + - Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly + in a string without using any file (or temporary file). + - Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string. + The default separator is now a comma (,) and not any more a blank space. + THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with + your script. + - Improve algorythm performance by removing the use of temporary files when adding or + extracting files in an archive. + - Add (correct) detection of empty filename zipping. This can occurs when the removed + path is the same + as a zipped dir. The dir is not zipped (['status'] = filtered), only its content. + - Add better support for windows paths (thanks for help from manus@manusfreedom.com). + - Corrected bug : When the archive file already exists with size=0, the add() method + fails. Corrected in 2.0. + - Remove the use of OS_WINDOWS constant. Use php_uname() function rather. + - Control the order of index ranges in extract by index feature. + - Change the internal management of folders (better handling of internal flag). + + + Version 1.3 : + - Removing the double include check. This is now done by include_once() and require_once() + PHP directives. + - Changing the error handling mecanism : Remove the use of an external error library. + The former PclError...() functions are replaced by internal equivalent methods. + By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library. + Introducing the use of constants for error codes rather than integer values. This will help + in futur improvment. + Introduction of error handling functions like errorCode(), errorName() and errorInfo(). + - Remove the deprecated use of calling function with arguments passed by reference. + - Add the calling of extract(), extractByIndex(), create() and add() functions + with variable options rather than fixed arguments. + - Add the ability to remove all the file path while extracting or adding, + without any need to specify the path to remove. + This is available for extract(), extractByIndex(), create() and add() functionS by using + the new variable options parameters : + - PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct. + - Ability to change the mode of a file after the extraction (chmod()). + This is available for extract() and extractByIndex() functionS by using + the new variable options parameters. + - PCLZIP_OPT_SET_CHMOD : by setting the value of this option. + - Ability to definition call-back options. These call-back will be called during the adding, + or the extracting of file (extract(), extractByIndex(), create() and add() functions) : + - PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user + can trigerred the change the filename of the extracted file. The user can triggered the + skip of the extraction. This is adding a 'skipped' status in the file list result value. + - PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file. + Nothing can be triggered from that point. + - PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user + can trigerred the change the stored filename of the added file. The user can triggered the + skip of the add. This is adding a 'skipped' status in the file list result value. + - PCLZIP_CB_POST_ADD : will be called after each add of a file. + Nothing can be triggered from that point. + - Two status are added in the file list returned as function result : skipped & filename_too_long + 'skipped' is used when a call-back function ask for skipping the file. + 'filename_too_long' is used while adding a file with a too long filename to archive (the file is + not added) + - Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into + a directory. + - Add a check of the presence of the archive file before some actions (like list, ...) + - Add the initialisation of field "index" in header array. This means that by + default index will be -1 when not explicitly set by the methods. + + Version 1.2 : + - Adding a duplicate function. + - Adding a merge function. The merge function is a "quick merge" function, + it just append the content of an archive at the end of the first one. There + is no check for duplicate files or more recent files. + - Improve the search of the central directory end. + + Version 1.1.2 : + + - Changing the license of PclZip. PclZip is now released under the GNU / LGPL license + (see License section). + - Adding the optional support of a static temporary directory. You will need to configure + the constant PCLZIP_TEMPORARY_DIR if you want to use this feature. + - Improving the rename() function. In some cases rename() does not work (different + Filesystems), so it will be replaced by a copy() + unlink() functions. + + Version 1.1.1 : + + - Maintenance release, no new feature. + + Version 1.1 : + + - New method Add() : adding files in the archive + - New method ExtractByIndex() : partial extract of the archive, files are identified by + their index in the archive + - New method DeleteByIndex() : delete some files/folder entries from the archive, + files are identified by their index in the archive. + - Adding a test of the zlib extension presence. If not present abort the script. + + Version 1.0.1 : + + - No new feature + + +3 - Corrected bugs +================== + + Corrected in Version 2.0 : + - Corrected : During an extraction, if a call-back fucntion is used and try to skip + a file, all the extraction process is stopped. + + Corrected in Version 1.3 : + - Corrected : Support of static synopsis for method extract() is broken. + - Corrected : invalid size of archive content field (0xFF) should be (0xFFFF). + - Corrected : When an extract is done with a remove_path parameter, the entry for + the directory with exactly the same path is not skipped/filtered. + - Corrected : extractByIndex() and deleteByIndex() were not managing index in the + right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This + is due to a sort of the index resulting table that puts 11 before 3-5 (sort on + string and not interger). The sort is temporarilly removed, this means that + you must provide a sorted list of index ranges. + + Corrected in Version 1.2 : + + - Nothing. + + Corrected in Version 1.1.2 : + + - Corrected : Winzip is unable to delete or add new files in a PclZip created archives. + + Corrected in Version 1.1.1 : + + - Corrected : When archived file is not compressed (0% compression), the + extract method fails. + + Corrected in Version 1.1 : + + - Corrected : Adding a complete tree of folder may result in a bad archive + creation. + + Corrected in Version 1.0.1 : + + - Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). + + +4 - Known bugs or limitations +============================= + + Please publish bugs reports in SourceForge : + http://sourceforge.net/tracker/?group_id=40254&atid=427564 + + In Version 1.2 : + + - merge() methods does not check for duplicate files or last date of modifications. + + In Version 1.1 : + + - Limitation : Using 'extract' fields in the file header in the zip archive is not supported. + - WinZip is unable to delete a single file in a PclZip created archive. It is also unable to + add a file in a PclZip created archive. (Corrected in v.1.2) + + In Version 1.0.1 : + + - Adding a complete tree of folder may result in a bad archive + creation. (Corrected in V.1.1). + - Path given to methods must be in the unix format (/) and not the Windows format (\). + Workaround : Use only / directory separators. + - PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz + added suffix. Files with these names may already exist and may be overwritten. + Workaround : none. + - PclZip does not check if the zlib extension is present. If it is absent, the zip + file is not created and the lib abort without warning. + Workaround : enable the zlib extension on the php install + + In Version 1.0 : + + - Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). + (Corrected in v.1.0.1) + - Limitation : Multi-disk zip archive are not supported. + + +5 - License +=========== + + Since version 1.1.2, PclZip Library is released under GNU/LGPL license. + This library is free, so you can use it at no cost. + + HOWEVER, if you release a script, an application, a library or any kind of + code using PclZip library (or a part of it), YOU MUST : + - Indicate in the documentation (or a readme file), that your work + uses PclZip Library, and make a reference to the author and the web site + http://www.phpconcept.net + - Gives the ability to the final user to update the PclZip libary. + + I will also appreciate that you send me a mail (vincent@phpconcept.net), just to + be aware that someone is using PclZip. + + For more information about GNU/LGPL license : http://www.gnu.org + +6 - Warning +================= + + This library and the associated files are non commercial, non professional work. + It should not have unexpected results. However if any damage is caused by this software + the author can not be responsible. + The use of this software is at the risk of the user. + +7 - Author +========== + + This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time. + +8 - Contribute +============== + If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net. + If you can help in financing PhpConcept hosting service, please go to + http://www.phpconcept.net/soutien.php \ No newline at end of file diff --git a/lib/phpmailer/ChangeLog.txt b/lib/phpmailer/ChangeLog.txt index 254971167be..5753e97ce60 100644 --- a/lib/phpmailer/ChangeLog.txt +++ b/lib/phpmailer/ChangeLog.txt @@ -1,22 +1,5 @@ ChangeLog -Version 1.72 (Wed, May 25 2004) -* Added Dutch, Swedish, Czech, Norwegian, and Turkish translations. -* Received: Removed this method because spam filter programs like -SpamAssassin reject this header. -* Fixed error count bug. -* SetLanguage default is now "language/". -* Fixed magic_quotes_runtime bug. - -Version 1.71 (Tue, Jul 28 2003) -* Made several speed enhancements -* Added German and Italian translation files -* Fixed HELO/AUTH bugs on keep-alive connects -* Now provides an error message if language file does not load -* Fixed attachment EOL bug -* Updated some unclear documentation -* Added additional tests and improved others - Version 1.70 (Mon, Jun 20 2003) * Added SMTP keep-alive support * Added IsError method for error detection diff --git a/lib/phpmailer/README b/lib/phpmailer/README index de5876fc9ae..137349aff1e 100644 --- a/lib/phpmailer/README +++ b/lib/phpmailer/README @@ -1,102 +1,102 @@ -PHPMailer -Full Featured Email Transfer Class for PHP -========================================== - -http://phpmailer.sourceforge.net/ - -This software is licenced under the LGPL. Please read LICENSE for information on the -software availability and distribution. - -Class Features: -- Send emails with multiple TOs, CCs, BCCs and REPLY-TOs -- Redundant SMTP servers -- Multipart/alternative emails for mail clients that do not read HTML email -- Support for 8bit, base64, binary, and quoted-printable encoding -- Uses the same methods as the very popular AspEmail active server (COM) component -- SMTP authentication -- Native language support -- Word wrap, and more! - -Why you might need it: - -Many PHP developers utilize email in their code. The only PHP function -that supports this is the mail() function. However, it does not expose -any of the popular features that many email clients use nowadays like -HTML-based emails and attachments. There are two proprietary -development tools out there that have all the functionality built into -easy to use classes: AspEmail(tm) and AspMail. Both of these -programs are COM components only available on Windows. They are also a -little pricey for smaller projects. - -Since I do Linux development I’ve missed these tools for my PHP coding. -So I built a version myself that implements the same methods (object -calls) that the Windows-based components do. It is open source and the -LGPL license allows you to place the class in your proprietary PHP -projects. - - -Installation: - -Copy class.phpmailer.php into your php.ini include_path. If you are -using the SMTP mailer then place class.smtp.php in your path as well. -In the language directory you will find several files like -phpmailer.lang-en.php. If you look right before the .php extension -that there are two letters. These represent the language type of the -translation file. For instance "en" is the English file and "br" is -the Portuguese file. Chose the file that best fits with your language -and place it in the PHP include path. If your language is English -then you have nothing more to do. If it is a different language then -you must point PHPMailer to the correct translation. To do this, call -the PHPMailer SetLanguage method like so: - -// To load the Portuguese version -$mail->SetLanguage("br", "/optional/path/to/language/directory/"); - -That's it. You should now be ready to use PHPMailer! - - -A Simple Example: - -IsSMTP(); // set mailer to use SMTP -$mail->Host = "smtp1.example.com;smtp2.example.com"; // specify main and backup server -$mail->SMTPAuth = true; // turn on SMTP authentication -$mail->Username = "jswan"; // SMTP username -$mail->Password = "secret"; // SMTP password - -$mail->From = "from@example.com"; -$mail->FromName = "Mailer"; -$mail->AddAddress("josh@example.net", "Josh Adams"); -$mail->AddAddress("ellen@example.com"); // name is optional -$mail->AddReplyTo("info@example.com", "Information"); - -$mail->WordWrap = 50; // set word wrap to 50 characters -$mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments -$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name -$mail->IsHTML(true); // set email format to HTML - -$mail->Subject = "Here is the subject"; -$mail->Body = "This is the HTML message body in bold!"; -$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; - -if(!$mail->Send()) -{ - echo "Message could not be sent.

              "; - echo "Mailer Error: " . $mail->ErrorInfo; - exit; -} - -echo "Message has been sent"; -?> - -CHANGELOG - -See ChangeLog.txt - -Download: http://sourceforge.net/project/showfiles.php?group_id=26031 - -Brent R. Matzelle +PHPMailer +Full Featured Email Transfer Class for PHP +========================================== + +http://phpmailer.sourceforge.net/ + +This software is licenced under the LGPL. Please read LICENSE for information on the +software availability and distribution. + +Class Features: +- Send emails with multiple TOs, CCs, BCCs and REPLY-TOs +- Redundant SMTP servers +- Multipart/alternative emails for mail clients that do not read HTML email +- Support for 8bit, base64, binary, and quoted-printable encoding +- Uses the same methods as the very popular AspEmail active server (COM) component +- SMTP authentication +- Native language support +- Word wrap, and more! + +Why you might need it: + +Many PHP developers utilize email in their code. The only PHP function +that supports this is the mail() function. However, it does not expose +any of the popular features that many email clients use nowadays like +HTML-based emails and attachments. There are two proprietary +development tools out there that have all the functionality built into +easy to use classes: AspEmail(tm) and AspMail. Both of these +programs are COM components only available on Windows. They are also a +little pricey for smaller projects. + +Since I do Linux development I’ve missed these tools for my PHP coding. +So I built a version myself that implements the same methods (object +calls) that the Windows-based components do. It is open source and the +LGPL license allows you to place the class in your proprietary PHP +projects. + + +Installation: + +Copy class.phpmailer.php into your php.ini include_path. If you are +using the SMTP mailer then place class.smtp.php in your path as well. +In the language directory you will find several files like +phpmailer.lang-en.php. If you look right before the .php extension +that there are two letters. These represent the language type of the +translation file. For instance "en" is the English file and "br" is +the Portuguese file. Chose the file that best fits with your language +and place it in the PHP include path. If your language is English +then you have nothing more to do. If it is a different language then +you must point PHPMailer to the correct translation. To do this, call +the PHPMailer SetLanguage method like so: + +// To load the Portuguese version +$mail->SetLanguage("br", "/optional/path/to/language/directory"); + +That's it. You should now be ready to use PHPMailer! + + +A Simple Example: + +IsSMTP(); // set mailer to use SMTP +$mail->Host = "smtp1.example.com;smtp2.example.com"; // specify main and backup server +$mail->SMTPAuth = true // turn on SMTP authentication +$mail->Username = "jswan" // SMTP username +$mail->Password = "secret" // SMTP password + +$mail->From = "from@example.com"; +$mail->FromName = "Mailer"; +$mail->AddAddress("josh@example.net", "Josh Adams"); +$mail->AddAddress("ellen@example.com"); // name is optional +$mail->AddReplyTo("info@example.com", "Information"); + +$mail->WordWrap = 50; // set word wrap to 50 characters +$mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments +$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name +$mail->IsHTML(true); // set email format to HTML + +$mail->Subject = "Here is the subject"; +$mail->Body = "This is the HTML message body in bold!"; +$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; + +if(!$mail->Send()) +{ + echo "Message could not be sent.

              "; + echo "Mailer Error: " . $mail->ErrorInfo; + exit; +} + +echo "Message has been sent"; +?> + +CHANGELOG + +See ChangeLog.txt + +Download: http://sourceforge.net/project/showfiles.php?group_id=26031 + +Brent R. Matzelle diff --git a/lib/phpmailer/class.phpmailer.php b/lib/phpmailer/class.phpmailer.php index b315c178cd6..4e6a7079af1 100644 --- a/lib/phpmailer/class.phpmailer.php +++ b/lib/phpmailer/class.phpmailer.php @@ -67,8 +67,8 @@ class PHPMailer var $FromName = "Root User"; /** - * Sets the Sender email (Return-Path) of the message. If not empty, - * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode. + * Sets the Sender email of the message. If not empty, will be sent via -f to sendmail + * or as 'MAIL FROM' in smtp mode. * @var string */ var $Sender = ""; @@ -79,6 +79,12 @@ class PHPMailer */ var $Subject = ""; + /** + * Sets the Precedence level of this email. "bulk" will prevent some bounces + * @var string + */ + var $Precedence = ""; + /** * Sets the Body of the message. This can be either an HTML or text body. * If HTML then run IsHTML(true). @@ -119,13 +125,13 @@ class PHPMailer * is in a different directory than the PHP include path. * @var string */ - var $PluginDir = ''; + var $PluginDir = ""; /** * Holds PHPMailer version. * @var string */ - var $Version = "1.72"; + var $Version = "1.70"; /** * Sets the email address that a reading confirmation will be sent. @@ -141,6 +147,7 @@ class PHPMailer */ var $Hostname = ""; + ///////////////////////////////////////////////// // SMTP VARIABLES ///////////////////////////////////////////////// @@ -227,20 +234,6 @@ class PHPMailer // VARIABLE METHODS ///////////////////////////////////////////////// - /** - * Constructor - * Hack for Moodle as class may be included from various locations - * SE 20041001 - * @param void - * @return void - */ - function PHPMailer () { - global $CFG; - $this->PluginDir = $CFG->libdir.'/phpmailer/'; - } - - - /** * Sets message type to HTML. * @param bool $bool @@ -357,7 +350,6 @@ class PHPMailer function Send() { $header = ""; $body = ""; - $result = true; if((count($this->to) + count($this->cc) + count($this->bcc)) < 1) { @@ -369,7 +361,6 @@ class PHPMailer if(!empty($this->AltBody)) $this->ContentType = "multipart/alternative"; - $this->error_count = 0; // reset errors $this->SetMessageType(); $header .= $this->CreateHeader(); $body = $this->CreateBody(); @@ -377,24 +368,28 @@ class PHPMailer if($body == "") { return false; } // Choose the mailer - switch($this->Mailer) + if($this->Mailer == "sendmail") + { + if(!$this->SendmailSend($header, $body)) + return false; + } + elseif($this->Mailer == "mail") + { + if(!$this->MailSend($header, $body)) + return false; + } + elseif($this->Mailer == "smtp") + { + if(!$this->SmtpSend($header, $body)) + return false; + } + else { - case "sendmail": - $result = $this->SendmailSend($header, $body); - break; - case "mail": - $result = $this->MailSend($header, $body); - break; - case "smtp": - $result = $this->SmtpSend($header, $body); - break; - default: $this->SetError($this->Mailer . $this->Lang("mailer_not_supported")); - $result = false; - break; + return false; } - return $result; + return true; } /** @@ -433,20 +428,21 @@ class PHPMailer * @return bool */ function MailSend($header, $body) { - $to = ""; - for($i = 0; $i < count($this->to); $i++) - { - if($i != 0) { $to .= ", "; } - $to .= $this->to[$i][0]; - } + // Cannot add Bcc's to the $to + $to = $this->to[0][0]; // no extra comma + for($i = 1; $i < count($this->to); $i++) + $to .= sprintf(",%s", $this->to[$i][0]); - if ($this->Sender != "" && strlen(ini_get("safe_mode"))< 1) + if ($this->Sender != "" && PHP_VERSION >= "4.0") { $old_from = ini_get("sendmail_from"); ini_set("sendmail_from", $this->Sender); + } + + if ($this->Sender != "" && PHP_VERSION >= "4.0.5") + { $params = sprintf("-oi -f %s", $this->Sender); - $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, - $header, $params); + $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header, $params); } else $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header); @@ -471,12 +467,33 @@ class PHPMailer * @return bool */ function SmtpSend($header, $body) { - include_once($this->PluginDir.'class.smtp.php'); + // Include SMTP class code, but not twice + include_once($this->PluginDir . "class.smtp.php"); $error = ""; $bad_rcpt = array(); - if(!$this->SmtpConnect()) - return false; + if($this->smtp == NULL) + { + if(!$this->SmtpConnect()) + return false; + } + + // Must perform HELO before authentication + if ($this->Helo != '') + $this->smtp->Hello($this->Helo); + else + $this->smtp->Hello($this->ServerHostname()); + + // If user requests SMTP authentication + if($this->SMTPAuth) + { + if(!$this->smtp->Authenticate($this->Username, $this->Password)) + { + $this->SetError($this->Lang("authenticate")); + $this->smtp->Reset(); + return false; + } + } $smtp_from = ($this->Sender == "") ? $this->From : $this->Sender; if(!$this->smtp->Mail($smtp_from)) @@ -504,7 +521,8 @@ class PHPMailer $bad_rcpt[] = $this->bcc[$i][0]; } - if(count($bad_rcpt) > 0) // Create error message + // Create error message + if(count($bad_rcpt) > 0) { for($i = 0; $i < count($bad_rcpt); $i++) { @@ -557,24 +575,7 @@ class PHPMailer } if($this->smtp->Connect($host, $port, $this->Timeout)) - { - if ($this->Helo != '') - $this->smtp->Hello($this->Helo); - else - $this->smtp->Hello($this->ServerHostname()); - - if($this->SMTPAuth) - { - if(!$this->smtp->Authenticate($this->Username, - $this->Password)) - { - $this->SetError($this->Lang("authenticate")); - $this->smtp->Reset(); - $connection = false; - } - } $connection = true; - } $index++; } if(!$connection) @@ -602,18 +603,16 @@ class PHPMailer * Sets the language for all class error messages. Returns false * if it cannot load the language file. The default language type * is English. - * SE 20041001: Added '$this->PluginDir' for Moodle compatibility - * * @param string $lang_type Type of language (e.g. Portuguese: "br") * @param string $lang_path Path to the language file directory * @access public * @return bool */ - function SetLanguage($lang_type, $lang_path = "language/") { - if(file_exists($this->PluginDir.$lang_path.'phpmailer.lang-'.$lang_type.'.php')) - include($this->PluginDir.$lang_path.'phpmailer.lang-'.$lang_type.'.php'); + function SetLanguage($lang_type, $lang_path = "") { + if(file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php')) + include($lang_path.'phpmailer.lang-'.$lang_type.'.php'); else if(file_exists($lang_path.'phpmailer.lang-en.php')) - include($this->PluginDir.$lang_path.'phpmailer.lang-en.php'); + include($lang_path.'phpmailer.lang-en.php'); else { $this->SetError("Could not load language file"); @@ -639,9 +638,11 @@ class PHPMailer if(count($addr) > 1) { for($i = 1; $i < count($addr); $i++) - $addr_str .= ", " . $this->AddrFormat($addr[$i]); + $addr_str .= sprintf(", %s", $this->AddrFormat($addr[$i])); + $addr_str .= $this->LE; } - $addr_str .= $this->LE; + else + $addr_str .= $this->LE; return $addr_str; } @@ -655,10 +656,7 @@ class PHPMailer if(empty($addr[1])) $formatted = $addr[0]; else - { - $formatted = $this->EncodeHeader($addr[1], 'phrase') . " <" . - $addr[0] . ">"; - } + $formatted = sprintf('%s <%s>', $this->EncodeHeader($addr[1], 'phrase'), $addr[0]); return $formatted; } @@ -778,6 +776,7 @@ class PHPMailer $this->boundary[1] = "b1_" . $uniq_id; $this->boundary[2] = "b2_" . $uniq_id; + $result .= $this->Received(); $result .= $this->HeaderLine("Date", $this->RFCDate()); if($this->Sender == "") $result .= $this->HeaderLine("Return-Path", trim($this->From)); @@ -791,8 +790,6 @@ class PHPMailer $result .= $this->AddrAppend("To", $this->to); else if (count($this->cc) == 0) $result .= $this->HeaderLine("To", "undisclosed-recipients:;"); - if(count($this->cc) > 0) - $result .= $this->AddrAppend("Cc", $this->cc); } $from = array(); @@ -800,6 +797,9 @@ class PHPMailer $from[0][1] = $this->FromName; $result .= $this->AddrAppend("From", $from); + if(count($this->cc) > 0) + $result .= $this->AddrAppend("Cc", $this->cc); + // sendmail and mail() extract Bcc from the header before sending if((($this->Mailer == "sendmail") || ($this->Mailer == "mail")) && (count($this->bcc) > 0)) $result .= $this->AddrAppend("Bcc", $this->bcc); @@ -815,6 +815,10 @@ class PHPMailer $result .= $this->HeaderLine("X-Priority", $this->Priority); $result .= $this->HeaderLine("X-Mailer", "PHPMailer [version " . $this->Version . "]"); + if ($this->Precedence != "") { + $result .= $this->HeaderLine("Precedence", $this->Precedence); + } + if($this->ConfirmReadingTo != "") { $result .= $this->HeaderLine("Disposition-Notification-To", @@ -839,7 +843,7 @@ class PHPMailer case "attachments": // fall through case "alt_attachments": - if($this->InlineImageExists()) + if($this->EmbeddedImageCount() > 0) { $result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s", "multipart/related", $this->LE, $this->LE, @@ -941,9 +945,8 @@ class PHPMailer if($encoding == "") { $encoding = $this->Encoding; } $result .= $this->TextLine("--" . $boundary); - $result .= sprintf("Content-Type: %s; charset = \"%s\"", + $result .= sprintf("Content-Type: %s; charset = \"%s\"\n", $contentType, $charSet); - $result .= $this->LE; $result .= $this->HeaderLine("Content-Transfer-Encoding", $encoding); $result .= $this->LE; @@ -1006,7 +1009,7 @@ class PHPMailer * @param string $path Path to the attachment. * @param string $name Overrides the attachment name. * @param string $encoding File encoding (see $Encoding). - * @param string $type File extension (MIME) type. + * @param string $type File extension type. * @return bool */ function AddAttachment($path, $name = "", $encoding = "base64", @@ -1021,6 +1024,7 @@ class PHPMailer if($name == "") $name = $filename; + // Append to $attachment array $cur = count($this->attachment); $this->attachment[$cur][0] = $path; $this->attachment[$cur][1] = $filename; @@ -1123,18 +1127,22 @@ class PHPMailer // chunk_split is found in PHP >= 3.0.6 $encoded = chunk_split(base64_encode($str), 76, $this->LE); break; + case "7bit": case "8bit": $encoded = $this->FixEOL($str); if (substr($encoded, -(strlen($this->LE))) != $this->LE) $encoded .= $this->LE; break; + case "binary": $encoded = $str; break; + case "quoted-printable": $encoded = $this->EncodeQP($str); break; + default: $this->SetError($this->Lang("encoding") . $encoding); break; @@ -1254,7 +1262,7 @@ class PHPMailer * @param string $string String attachment data. * @param string $filename Name of the attachment. * @param string $encoding File encoding (see $Encoding). - * @param string $type File extension (MIME) type. + * @param string $type File extension type. * @return void */ function AddStringAttachment($string, $filename, $encoding = "base64", @@ -1273,15 +1281,13 @@ class PHPMailer /** * Adds an embedded attachment. This can include images, sounds, and - * just about any other document. Make sure to set the $type to an - * image type. For JPEG images use "image/jpeg" and for GIF images - * use "image/gif". + * just about any other document. * @param string $path Path to the attachment. * @param string $cid Content ID of the attachment. Use this to identify * the Id for accessing the image in an HTML form. * @param string $name Overrides the attachment name. * @param string $encoding File encoding (see $Encoding). - * @param string $type File extension (MIME) type. + * @param string $type File extension type. * @return bool */ function AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64", @@ -1312,19 +1318,16 @@ class PHPMailer } /** - * Returns true if an inline attachment is present. + * Returns the number of embedded images in an email. * @access private - * @return bool + * @return int */ - function InlineImageExists() { - $result = false; + function EmbeddedImageCount() { + $result = 0; for($i = 0; $i < count($this->attachment); $i++) { if($this->attachment[$i][6] == "inline") - { - $result = true; - break; - } + $result++; } return $result; @@ -1411,7 +1414,7 @@ class PHPMailer } /** - * Returns the proper RFC 822 formatted date. + * Returns the proper RFC 822 formatted date. Returns string. * @access private * @return string */ @@ -1424,6 +1427,36 @@ class PHPMailer return $result; } + + /** + * Returns Received header for message tracing. Returns string. + * @access private + * @return string + */ + function Received() { + if ($this->ServerVar('SERVER_NAME') != '') + { + $protocol = ($this->ServerVar('HTTPS') == 'on') ? 'HTTPS' : 'HTTP'; + $remote = $this->ServerVar('REMOTE_HOST'); + if($remote == "") + $remote = 'phpmailer'; + $remote .= ' (['.$this->ServerVar('REMOTE_ADDR').'])'; + } + else + { + $protocol = 'local'; + $remote = $this->ServerVar('USER'); + if($remote == '') + $remote = 'phpmailer'; + } + + $result = sprintf("Received: from %s %s\tby %s " . + "with %s (PHPMailer);%s\t%s%s", $remote, $this->LE, + $this->ServerHostname(), $protocol, $this->LE, + $this->RFCDate(), $this->LE); + + return $result; + } /** * Returns the appropriate server variable. Should work with both @@ -1477,7 +1510,7 @@ class PHPMailer if(isset($this->language[$key])) return $this->language[$key]; else - return "Language string failed to load: " . $key; + return ""; } /** @@ -1489,7 +1522,7 @@ class PHPMailer } /** - * Changes every end of line from CR or LF to CRLF. + * Changes every end of line from CR or LF to CRLF. Returns string. * @access private * @return string */ @@ -1501,7 +1534,7 @@ class PHPMailer } /** - * Adds a custom header. + * Adds a custom header. Returns void. * @return void */ function AddCustomHeader($custom_header) { diff --git a/lib/phpmailer/language/phpmailer.lang-cz.php b/lib/phpmailer/language/phpmailer.lang-cz.php deleted file mode 100755 index f272f92bde0..00000000000 --- a/lib/phpmailer/language/phpmailer.lang-cz.php +++ /dev/null @@ -1,24 +0,0 @@ - \ No newline at end of file diff --git a/lib/phpmailer/language/phpmailer.lang-de.php b/lib/phpmailer/language/phpmailer.lang-de.php deleted file mode 100755 index a7d34af85a6..00000000000 --- a/lib/phpmailer/language/phpmailer.lang-de.php +++ /dev/null @@ -1,23 +0,0 @@ - \ No newline at end of file diff --git a/lib/phpmailer/language/phpmailer.lang-en.php b/lib/phpmailer/language/phpmailer.lang-en.php index 2f45383feca..c5a6da82c76 100644 --- a/lib/phpmailer/language/phpmailer.lang-en.php +++ b/lib/phpmailer/language/phpmailer.lang-en.php @@ -21,3 +21,4 @@ $PHPMAILER_LANG["file_access"] = 'Could not access file: '; $PHPMAILER_LANG["file_open"] = 'File Error: Could not open file: '; $PHPMAILER_LANG["encoding"] = 'Unknown encoding: '; ?> + diff --git a/lib/phpmailer/language/phpmailer.lang-es.php b/lib/phpmailer/language/phpmailer.lang-es.php deleted file mode 100755 index 9e7713716ac..00000000000 --- a/lib/phpmailer/language/phpmailer.lang-es.php +++ /dev/null @@ -1,23 +0,0 @@ - \ No newline at end of file diff --git a/lib/phpmailer/language/phpmailer.lang-fr.php b/lib/phpmailer/language/phpmailer.lang-fr.php deleted file mode 100755 index 2c2f81bbb30..00000000000 --- a/lib/phpmailer/language/phpmailer.lang-fr.php +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/lib/phpmailer/language/phpmailer.lang-it.php b/lib/phpmailer/language/phpmailer.lang-it.php deleted file mode 100755 index 26ef64dd1c3..00000000000 --- a/lib/phpmailer/language/phpmailer.lang-it.php +++ /dev/null @@ -1,28 +0,0 @@ - -*/ - -$PHPMAILER_LANG = array(); - -$PHPMAILER_LANG["provide_address"] = 'Deve essere fornito almeno un'. - ' indirizzo ricevente'; -$PHPMAILER_LANG["mailer_not_supported"] = 'Mailer non supportato'; -$PHPMAILER_LANG["execute"] = "Impossibile eseguire l'operazione: "; -$PHPMAILER_LANG["instantiate"] = 'Impossibile istanziare la funzione mail'; -$PHPMAILER_LANG["authenticate"] = 'SMTP Error: Impossibile autenticarsi.'; -$PHPMAILER_LANG["from_failed"] = 'I seguenti indirizzi mittenti hanno'. - ' generato errore: '; -$PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: I seguenti indirizzi'. - 'destinatari hanno generato errore: '; -$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data non accettati dal'. - 'server.'; -$PHPMAILER_LANG["connect_host"] = 'SMTP Error: Impossibile connettersi'. - ' all\'host SMTP.'; -$PHPMAILER_LANG["file_access"] = 'Impossibile accedere al file: '; -$PHPMAILER_LANG["file_open"] = 'File Error: Impossibile aprire il file: '; -$PHPMAILER_LANG["encoding"] = 'Encoding set dei caratteri sconosciuto: '; -?> diff --git a/lib/phpmailer/language/phpmailer.lang-nl.php b/lib/phpmailer/language/phpmailer.lang-nl.php deleted file mode 100755 index 9cd3a7a19b6..00000000000 --- a/lib/phpmailer/language/phpmailer.lang-nl.php +++ /dev/null @@ -1,23 +0,0 @@ - \ No newline at end of file diff --git a/lib/phpmailer/language/phpmailer.lang-no.php b/lib/phpmailer/language/phpmailer.lang-no.php deleted file mode 100755 index cc42131babf..00000000000 --- a/lib/phpmailer/language/phpmailer.lang-no.php +++ /dev/null @@ -1,23 +0,0 @@ - \ No newline at end of file diff --git a/lib/phpmailer/language/phpmailer.lang-se.php b/lib/phpmailer/language/phpmailer.lang-se.php deleted file mode 100755 index 349c2ce441d..00000000000 --- a/lib/phpmailer/language/phpmailer.lang-se.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ - -$PHPMAILER_LANG = array(); - -$PHPMAILER_LANG["provide_address"] = 'Du måste ange minst en ' . - 'mottagares e-postadress.'; -$PHPMAILER_LANG["mailer_not_supported"] = ' mailer stöds inte.'; -$PHPMAILER_LANG["execute"] = 'Kunde inte köra: '; -$PHPMAILER_LANG["instantiate"] = 'Kunde inte initiera e-postfunktion.'; -$PHPMAILER_LANG["authenticate"] = 'SMTP fel: Kunde inte autentisera.'; -$PHPMAILER_LANG["from_failed"] = 'Följande avsändaradress är felaktig: '; -$PHPMAILER_LANG["recipients_failed"] = 'SMTP fel: Följande ' . - 'mottagare är felaktig: '; -$PHPMAILER_LANG["data_not_accepted"] = 'SMTP fel: Data accepterades inte.'; -$PHPMAILER_LANG["connect_host"] = 'SMTP fel: Kunde inte ansluta till SMTP-server.'; -$PHPMAILER_LANG["file_access"] = 'Ingen åtkomst till fil: '; -$PHPMAILER_LANG["file_open"] = 'Fil fel: Kunde inte öppna fil: '; -$PHPMAILER_LANG["encoding"] = 'Okänt encode-format: '; -?> \ No newline at end of file diff --git a/lib/phpmailer/language/phpmailer.lang-tr.php b/lib/phpmailer/language/phpmailer.lang-tr.php deleted file mode 100755 index 2d229e52970..00000000000 --- a/lib/phpmailer/language/phpmailer.lang-tr.php +++ /dev/null @@ -1,25 +0,0 @@ - \ No newline at end of file diff --git a/lib/rsslib.php b/lib/rsslib.php deleted file mode 100644 index b0adec3ad7e..00000000000 --- a/lib/rsslib.php +++ /dev/null @@ -1,408 +0,0 @@ -id. Bug 2048. - if ($courseid == SITEID and empty($userid)) { - $admin = get_admin(); - $userid = $admin->id; - } - - if ($CFG->slasharguments) { - $rsspath = "$CFG->wwwroot/rss/file.php/$courseid/$userid/$modulename/$id/rss.xml"; - } else { - $rsspath = "$CFG->wwwroot/rss/file.php?file=/$courseid/$userid/$modulename/$id/rss.xml"; - } - - $rsspix = $CFG->pixpath .'/i/rss.gif'; - - return ''; - -} - -//This function prints the icon (from theme) with the link to rss/file.php -function rss_print_link($courseid, $userid, $modulename, $id, $tooltiptext='') { - - print rss_get_link($courseid, $userid, $modulename, $id, $tooltiptext); - -} -//This function iterates over each module in the server to see if -//it supports generating rss feeds, searching for a MODULENAME_rss_feeds() -//function and invoking it foreach activity as necessary -function cron_rss_feeds () { - - global $CFG; - - $status = true; - - mtrace(' Generating rssfeeds...'); - - //Check for required functions... - if(!function_exists('utf8_encode')) { - mtrace(' ERROR: You need to add XML support to your PHP installation!'); - return true; - } - - if ($allmods = get_records('modules') ) { - foreach ($allmods as $mod) { - mtrace(' '.$mod->name.': ', ''); - $modname = $mod->name; - $modfile = "$CFG->dirroot/mod/$modname/rsslib.php"; - //If file exists and we have selected to restore that type of module - if (file_exists($modfile)) { - include_once($modfile); - $generaterssfeeds = $modname.'_rss_feeds'; - if (function_exists($generaterssfeeds)) { - if ($status) { - mtrace('generating ', '');; - $status = $generaterssfeeds(); - if (!empty($status)) { - mtrace('...OK'); - } else { - mtrace('...FAILED'); - } - } else { - mtrace('...SKIPPED (failed above)'); - } - } else { - mtrace('...NOT SUPPORTED (function)'); - } - } else { - mtrace('...NOT SUPPORTED (file)'); - } - } - } - mtrace(' Ending rssfeeds...', ''); - if (!empty($status)) { - mtrace('...OK'); - } else { - mtrace('...FAILED'); - } - - return $status; -} - -//This function saves to file the rss feed specified in the parameters -function rss_save_file ($modname, $mod, $result) { - - global $CFG; - - $status = true; - - if (! $basedir = make_upload_directory ('rss/'. $modname)) { - //Cannot be created, so error - $status = false; - } - - if ($status) { - $file = rss_file_name($modname, $mod); - $rss_file = fopen($file, "w"); - if ($rss_file) { - $status = fwrite ($rss_file, $result); - fclose($rss_file); - } else { - $status = false; - } - } - return $status; -} - - -function rss_file_name($modname, $mod) { - global $CFG; - - return "$CFG->dataroot/rss/$modname/$mod->id.xml"; -} - -//This function return all the common headers for every rss feed in the site -function rss_standard_header($title = NULL, $link = NULL, $description = NULL) { - - global $CFG, $USER; - - static $pixpath = ''; - - $status = true; - $result = ""; - - if (!$site = get_site()) { - $status = false; - } - - if ($status) { - - //Calculate title, link and description - if (empty($title)) { - $title = $site->fullname; - } - if (empty($link)) { - $link = $CFG->wwwroot; - } - if (empty($description)) { - $description = $site->summary; - } - - //xml headers - $result .= "\n"; - $result .= "\n"; - - //open the channel - $result .= rss_start_tag('channel', 1, true); - - //write channel info - $result .= rss_full_tag('title', 2, false, $title); - $result .= rss_full_tag('link', 2, false, $link); - $result .= rss_full_tag('description', 2, false, $description); - if (!empty($USER->lang)) { - $result .= rss_full_tag('language', 2, false, substr($USER->lang,0,2)); - } - $today = getdate(); - $result .= rss_full_tag('copyright', 2, false, '© '. $today['year'] .' '. $site->fullname); - if (!empty($USER->email)) { - $result .= rss_full_tag('managingEditor', 2, false, $USER->email); - $result .= rss_full_tag('webMaster', 2, false, $USER->email); - } - - //write image info - $rsspix = $CFG->pixpath."/i/rsssitelogo.gif"; - - //write the info - $result .= rss_start_tag('image', 2, true); - $result .= rss_full_tag('url', 3, false, $rsspix); - $result .= rss_full_tag('title', 3, false, 'moodle'); - $result .= rss_full_tag('link', 3, false, $CFG->wwwroot); - $result .= rss_full_tag('width', 3, false, '140'); - $result .= rss_full_tag('height', 3, false, '35'); - $result .= rss_end_tag('image', 2, true); - } - - if (!$status) { - return false; - } else { - return $result; - } -} - -//This function returns the rss XML code for every item passed in the array -//item->title: The title of the item -//item->author: The author of the item. Optional !! -//item->pubdate: The pubdate of the item -//item->link: The link url of the item -//item->description: The content of the item -function rss_add_items($items) { - - global $CFG; - - $result = ""; - - if (!empty($items)) { - foreach ($items as $item) { - $result .= rss_start_tag("item",2,true); - $result .= rss_full_tag("title",3,false,$item->title); - $result .= rss_full_tag("link",3,false,$item->link); - $result .= rss_full_tag("pubDate",3,false,date("r",$item->pubdate)); - //Include the author if exists - if (isset($item->author)) { - $item->description = get_string("byname","",$item->author)."

              ".$item->description; - } - $result .= rss_full_tag("description",3,false,$item->description); - $result .= rss_end_tag("item",2,true); - - } - } else { - $result = false; - } - return $result; -} - -//This function return all the common footers for every rss feed in the site -function rss_standard_footer($title = NULL, $link = NULL, $description = NULL) { - - global $CFG, $USER; - - $status = true; - $result = ""; - - //Close the chanel - $result .= rss_end_tag('channel', 1, true); - ////Close the rss tag - $result .= ''; - - return $result; -} - -//This function return an error xml file (string) -//to be sent when a rss is required (file.php) -//and something goes wrong -function rss_geterrorxmlfile() { - - global $CFG; - - $return = ''; - - //XML Header - $return = rss_standard_header(); - - //XML item - if ($return) { - $item->title = "RSS Error"; - $item->link = $CFG->wwwroot; - $item->pubdate = time(); - $item->description = get_string("rsserror"); - $return .= rss_add_items(array($item)); - } - - //XML Footer - if ($return) { - $return .= rss_standard_footer(); - } - - return $return; -} - -// ===== This function are used to write XML tags ========= -// [stronk7]: They are similar to the glossary export and backup generation -// but I've replicated them here because they have some minor -// diferences. Someday all they should go to a common place. - -//Return the xml start tag -function rss_start_tag($tag,$level=0,$endline=false) { - if ($endline) { - $endchar = "\n"; - } else { - $endchar = ""; - } - return str_repeat(" ",$level*2)."<".$tag.">".$endchar; -} - -//Return the xml end tag -function rss_end_tag($tag,$level=0,$endline=true) { - if ($endline) { - $endchar = "\n"; - } else { - $endchar = ""; - } - return str_repeat(" ",$level*2)."".$endchar; -} - -//Return the start tag, the contents and the end tag -function rss_full_tag($tag,$level=0,$endline=true,$content,$to_utf=true) { - //Here we encode absolute links - $st = rss_start_tag($tag,$level,$endline); - $co=""; - if ($to_utf) { - $co = preg_replace("/\r\n|\r/", "\n", utf8_encode(htmlspecialchars($content))); - } else { - $co = preg_replace("/\r\n|\r/", "\n", htmlspecialchars($content)); - } - $et = rss_end_tag($tag,0,true); - return $st.$co.$et; -} - -//////////////////// LIBRARY FUNCTIONS FOR RSS_CLIENT BLOCK //////////////// - -//initialize default config vars for rss_client block if needed -if (!isset($CFG->block_rss_client_submitters) ) { - $CFG->block_rss_client_submitters = 1; //default to admin only -} -if (empty($CFG->block_rss_client_num_entries) ) { - $CFG->block_rss_client_num_entries = 5; //default to 5 entries per block -} -if (!isset($CFG->block_rss_timeout) ) { - $CFG->block_rss_timeout = 30; -} - -// Defines for moodle's use of magpierss classes -define('MAGPIE_DIR', $CFG->dirroot.'/lib/magpie/'); -define('MAGPIE_CACHE_DIR', $CFG->dataroot .'/cache/rsscache'); -define('MAGPIE_CACHE_ON', true); //might want to expose as an admin config option, but perhaps this is something that should truly just be on unless the code is tweaked -define('MAGPIE_CACHE_FRESH_ONLY', false); //should be exposed as an admin config option -define('MAGPIE_CACHE_AGE', $CFG->block_rss_timeout); -if ($CFG->debug) { - define('MAGPIE_DEBUG', true); -} else { - define('MAGPIE_DEBUG', false); -} - -// defines for config var block_rss_client_submitters -define('SUBMITTERS_ALL_ACCOUNT_HOLDERS', 0); -define('SUBMITTERS_ADMIN_ONLY', 1); -define('SUBMITTERS_ADMIN_AND_TEACHER', 2); - -/** - * @param int $rssid . - */ -function rss_display_feeds($rssid='none') { - global $db, $USER, $CFG; - global $blogid; //hackish, but if there is a blogid it would be good to preserve it - - $rsspix = $CFG->pixpath .'/i/rss.gif'; - - $closeTable = false; - if ($rssid != 'none'){ - $feeds = get_records('block_rss_client', 'id', $rssid); - } else { - $feeds = get_records('block_rss_client'); - } - - if ($feeds){ - $closeTable = true; - ?> - - - - - - - userid == $USER->id || isadmin()) { - $editString = ''; - $editString .= ''. get_string('edit');
-                $editString .= ''; - - $deleteString = ''; - $deleteString .= ''. get_string('delete');
-                $deleteString .= ''; - } - if (!empty($feed->preferredtitle)) { - $feedtitle = stripslashes_safe($feed->preferredtitle); - } else { - $feedtitle = stripslashes_safe($feed->title); - } - print ''; - print '' ."\n"; - print '' ."\n"; - print ''."\n"; - } - } - if ($closeTable){ - print '
              '. $feedtitle .'
              ' ."\n"; - print ''. $feed->url .'
              '."\n"; - print $feed->description .'
              ' ."\n"; - print '
              '. $editString .''. $deleteString .'
              '."\n"; - } -} - -/** - * translates HTML special characters back to ASCII - * RSS feeds may have encoded html commands which we want to translate properly - * to display as intended rather than as source (html script visible in feed) - * This function taken from Simplog - www.simplog.net - */ -function rss_unhtmlentities($string) { - $trans_tbl = get_html_translation_table (HTML_ENTITIES); - $trans_tbl = array_flip ($trans_tbl); - return strtr ($string, $trans_tbl); -} -?> diff --git a/lib/searchlib.php b/lib/searchlib.php deleted file mode 100644 index d836acbb0b4..00000000000 --- a/lib/searchlib.php +++ /dev/null @@ -1,383 +0,0 @@ -libdir.'/lexer.php'); - -// Constants for the various types of tokens - -define("TOKEN_USER","0"); -define("TOKEN_META","1"); -define("TOKEN_EXACT","2"); -define("TOKEN_NEGATE","3"); -define("TOKEN_STRING","4"); -define("TOKEN_USERID","5"); -define("TOKEN_DATEFROM","6"); -define("TOKEN_DATETO","7"); -define("TOKEN_INSTANCE","8"); - -// Class to hold token/value pairs after they're parsed. - -class search_token { - var $value; - var $type; - function search_token($type,$value){ - $this->type = $type; - $this->value = $this->sanitize($value); - - } - - // Try to clean up user input to avoid potential security issues. - // Need to think about this some more. - - function sanitize($userstring){ - return htmlentities(addslashes($userstring)); - } - function getValue(){ - return $this->value; - } - function getType(){ - return $this->type; - } -} - - - -// This class does the heavy lifting of lexing the search string into tokens. -// Using a full-blown lexer is probably overkill for this application, but -// might be useful for other tasks. - -class search_lexer extends Lexer{ - - function search_lexer(&$parser){ - - // Call parent constructor. - $this->Lexer($parser); - - //Set up the state machine and pattern matches for transitions. - - // Patterns to handle strings of the form datefrom:foo - - // If we see the string datefrom: while in the base accept state, start - // parsing a username and go to the indatefrom state. - $this->addEntryPattern("datefrom:\S+","accept","indatefrom"); - - // Snarf everything into the username until we see whitespace, then exit - // back to the base accept state. - $this->addExitPattern("\s","indatefrom"); - - - // Patterns to handle strings of the form dateto:foo - - // If we see the string dateto: while in the base accept state, start - // parsing a username and go to the indateto state. - $this->addEntryPattern("dateto:\S+","accept","indateto"); - - // Snarf everything into the username until we see whitespace, then exit - // back to the base accept state. - $this->addExitPattern("\s","indateto"); - - - // Patterns to handle strings of the form instance:foo - - // If we see the string instance: while in the base accept state, start - // parsing for instance number and go to the ininstance state. - $this->addEntryPattern("instance:\S+","accept","ininstance"); - - // Snarf everything into the username until we see whitespace, then exit - // back to the base accept state. - $this->addExitPattern("\s","ininstance"); - - - // Patterns to handle strings of the form userid:foo - - // If we see the string userid: while in the base accept state, start - // parsing a username and go to the inuserid state. - $this->addEntryPattern("userid:\S+","accept","inuserid"); - - // Snarf everything into the username until we see whitespace, then exit - // back to the base accept state. - $this->addExitPattern("\s","inuserid"); - - - // Patterns to handle strings of the form user:foo - - // If we see the string user: while in the base accept state, start - // parsing a username and go to the inusername state. - $this->addEntryPattern("user:\S+","accept","inusername"); - - // Snarf everything into the username until we see whitespace, then exit - // back to the base accept state. - $this->addExitPattern("\s","inusername"); - - - // Patterns to handle strings of the form meta:foo - - // If we see the string meta: while in the base accept state, start - // parsing a username and go to the inmeta state. - $this->addEntryPattern("subject:\S+","accept","inmeta"); - - // Snarf everything into the meta token until we see whitespace, then exit - // back to the base accept state. - $this->addExitPattern("\s","inmeta"); - - - // Patterns to handle required exact match strings (+foo) . - - // If we see a + sign while in the base accept state, start - // parsing an exact match string and enter the inrequired state - $this->addEntryPattern("\+\S+","accept","inrequired"); - // When we see white space, exit back to accept state. - $this->addExitPattern("\s","inrequired"); - - // Handle excluded strings (-foo) - - // If we see a - sign while in the base accept state, start - // parsing an excluded string and enter the inexcluded state - $this->addEntryPattern("\-\S+","accept","inexcluded"); - // When we see white space, exit back to accept state. - $this->addExitPattern("\s","inexcluded"); - - - // Patterns to handle quoted strings. - - // If we see a quote while in the base accept state, start - // parsing a quoted string and enter the inquotedstring state. - // Grab everything until we see the closing quote. - - $this->addEntryPattern("\"[^\"]+","accept","inquotedstring"); - - // When we see a closing quote, reenter the base accept state. - $this->addExitPattern("\"","inquotedstring"); - - // Patterns to handle ordinary, nonquoted words. - - // When we see non-whitespace, snarf everything into the nonquoted word - // until we see whitespace again. - $this->addEntryPattern("\S+","accept","plainstring"); - - // Once we see whitespace, reenter the base accept state. - $this->addExitPattern("\s","plainstring"); - - } -} - - - - -// This class takes care of sticking the proper token type/value pairs into -// the parsed token array. -// Most functions in this class should only be called by the lexer, the -// one exception being getParseArray() which returns the result. - -class search_parser { - var $tokens; - - - // This function is called by the code that's interested in the result of the parse operation. - function get_parsed_array(){ - return $this->tokens; - } - - /* - * Functions below this are part of the state machine for the parse - * operation and should not be called directly. - */ - - // Base state. No output emitted. - function accept() { - return true; - } - - // State for handling datefrom:foo constructs. Potentially emits a token. - function indatefrom($content){ - if (strlen($content) < 10) { // State exit or missing parameter. - return true; - } - // Strip off the datefrom: part and add the reminder to the parsed token array - $param = trim(substr($content,9)); - $this->tokens[] = new search_token(TOKEN_DATEFROM,$param); - return true; - } - - // State for handling dateto:foo constructs. Potentially emits a token. - function indateto($content){ - if (strlen($content) < 8) { // State exit or missing parameter. - return true; - } - // Strip off the dateto: part and add the reminder to the parsed token array - $param = trim(substr($content,7)); - $this->tokens[] = new search_token(TOKEN_DATETO,$param); - return true; - } - - // State for handling instance:foo constructs. Potentially emits a token. - function ininstance($content){ - if (strlen($content) < 10) { // State exit or missing parameter. - return true; - } - // Strip off the instance: part and add the reminder to the parsed token array - $param = trim(substr($content,9)); - $this->tokens[] = new search_token(TOKEN_INSTANCE,$param); - return true; - } - - - // State for handling userid:foo constructs. Potentially emits a token. - function inuserid($content){ - if (strlen($content) < 8) { // State exit or missing parameter. - return true; - } - // Strip off the userid: part and add the reminder to the parsed token array - $param = trim(substr($content,7)); - $this->tokens[] = new search_token(TOKEN_USERID,$param); - return true; - } - - - // State for handling user:foo constructs. Potentially emits a token. - function inusername($content){ - if (strlen($content) < 6) { // State exit or missing parameter. - return true; - } - // Strip off the user: part and add the reminder to the parsed token array - $param = trim(substr($content,5)); - $this->tokens[] = new search_token(TOKEN_USER,$param); - return true; - } - - - // State for handling meta:foo constructs. Potentially emits a token. - function inmeta($content){ - if (strlen($content) < 9) { // Missing parameter. - return true; - } - // Strip off the meta: part and add the reminder to the parsed token array. - $param = trim(substr($content,8)); - $this->tokens[] = new search_token(TOKEN_META,$param); - return true; - } - - - // State entered when we've seen a required string (+foo). Potentially - // emits a token. - function inrequired($content){ - if (strlen($content) < 2) { // State exit or missing parameter, don't emit. - return true; - } - // Strip off the + sign and add the reminder to the parsed token array. - $this->tokens[] = new search_token(TOKEN_EXACT,substr($content,1)); - return true; - } - - // State entered when we've seen an excluded string (-foo). Potentially - // emits a token. - function inexcluded($content){ - if (strlen($content) < 2) { // State exit or missing parameter. - return true; - } - // Strip off the -sign and add the reminder to the parsed token array. - $this->tokens[] = new search_token(TOKEN_NEGATE,substr($content,1)); - return true; - } - - - // State entered when we've seen a quoted string. Potentially emits a token. - function inquotedstring($content){ - if (strlen($content) < 2) { // State exit or missing parameter. - return true; - } - // Strip off the opening quote and add the reminder to the parsed token array. - $this->tokens[] = new search_token(TOKEN_STRING,substr($content,1)); - return true; - } - - // State entered when we've seen an ordinary, non-quoted word. Potentially - // emits a token. - function plainstring($content){ - if (ctype_space($content)) { // State exit - return true; - } - // Add the string to the parsed token array. - $this->tokens[] = new search_token(TOKEN_STRING,$content); - return true; - } -} - - -// Primitive function to generate a SQL string from a parse tree. -// Parameters: -// -// $parsetree should be a parse tree generated by a -// search_lexer/search_parser combination. -// Other fields are database table names to search. - -function search_generate_SQL($parsetree, $datafield, $metafield, $mainidfield, $useridfield, - $userfirstnamefield, $userlastnamefield, $timefield, $instancefield) { - global $CFG; - - if ($CFG->dbtype == "postgres7") { - $LIKE = "ILIKE"; // case-insensitive - $NOTLIKE = "NOT ILIKE"; // case-insensitive - $REGEXP = "~*"; - $NOTREGEXP = "!~*"; - } else { - $LIKE = "LIKE"; - $NOTLIKE = "NOT LIKE"; - $REGEXP = "REGEXP"; - $NOTREGEXP = "NOT REGEXP"; - } - - $ntokens = count($parsetree); - if ($ntokens == 0) { - return ""; - } - - $SQLString = ''; - - for ($i=0; $i<$ntokens; $i++){ - if ($i > 0) {// We have more than one clause, need to tack on AND - $SQLString .= ' AND '; - } - - $type = $parsetree[$i]->getType(); - $value = $parsetree[$i]->getValue(); - - switch($type){ - case TOKEN_STRING: - $SQLString .= "(($datafield $LIKE '%$value%') OR ($metafield $LIKE '%$value%') )"; - break; - case TOKEN_EXACT: - $SQLString .= "(($datafield $REGEXP '[[:<:]]".$value."[[:>:]]') OR ($metafield $REGEXP '[[:<:]]".$value."[[:>:]]'))"; - break; - case TOKEN_META: - if ($metafield != '') { - $SQLString .= "($metafield $LIKE '%$value%')"; - } - break; - case TOKEN_USER: - $SQLString .= "(($mainidfield = $useridfield) AND (($userfirstnamefield $LIKE '%$value%') OR ($userlastnamefield $LIKE '%$value%')))"; - break; - case TOKEN_USERID: - $SQLString .= "($useridfield = $value)"; - break; - case TOKEN_INSTANCE: - $SQLString .= "($instancefield = $value)"; - break; - case TOKEN_DATETO: - $SQLString .= "($timefield <= $value)"; - break; - case TOKEN_DATEFROM: - $SQLString .= "($timefield >= $value)"; - break; - case TOKEN_NEGATE: - $SQLString .= "(NOT (($datafield $LIKE '%$value%') OR ($metafield $LIKE '%$value%')))"; - break; - default: - return ''; - - } - } - return $SQLString; -} - - -?> diff --git a/lib/session-test.php b/lib/session-test.php index 32aa7b91de4..5468b2a132e 100644 --- a/lib/session-test.php +++ b/lib/session-test.php @@ -1,4 +1,4 @@ -No session found - starting a session now."; + echo "

              No session found - starting a session now."; $_SESSION["test"] = "welcome back!"; } else { // Subsequent times you call it - echo "

              Session found - ".$_SESSION["test"]; - echo "

              Sessions are working correctly

              "; + echo "

              Session found - ".$_SESSION["test"]; + echo "

              Sessions are working correctly

              "; } -echo "

              Reload this page

              "; +echo "

              Reload this page

              "; ?> diff --git a/lib/setup.php b/lib/setup.php index 2ac3c32f3dd..86678ddc86e 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -1,90 +1,35 @@ -emailstop - Does the user want email sent to them? - * - $USER->email - The user's email address. - * - $USER->id - The unique integer identified of this user in the 'user' table. - * - $USER->email - The user's email address. - * - $USER->firstname - The user's first name. - * - $USER->lastname - The user's last name. - * - $USER->username - The user's login username. - * - $USER->secret - The user's ?. - * - $USER->lang - The user's language choice. - * - * @global object(user) $USER - */ -global $USER; -/** - * $USER is a global instance of a typical $user record. - * - * Items found in the user record: - * - $CFG->wwwroot - Path to moodle index directory in url format. - * - $CFG->dataroot - Path to moodle index directory on server's filesystem. - * - $CFG->libroot - Path to moodle's library folder on server's filesystem. - * - * @global object(cfg) $CFG - */ -global $CFG; -/** - * Definition of session type - * @global object(session) $SESSION - */ -global $SESSION; -/** - * Definition of course type - * @global object(course) $COURSE - */ -global $COURSE; -/** - * Definition of db type - * @global object(db) $db - */ -global $db; -/** - * $THEME is a global that defines the site theme. - * - * Items found in the theme record: - * - $THEME->cellheading - Cell colors. - * - $THEME->cellheading2 - Alternate cell colors. - * - * @global object(theme) $THEME - */ -global $THEME; +wwwroot)) { die; } - -/// Time to start counting - init_performance_info(); + if (!isset($CFG->enrol)) { // This is a hack to fix bug 1598 + $CFG->enrol = 'internal'; + } /// If there are any errors in the standard libraries we want to know! error_reporting(E_ALL); /// Connect to the database using adodb - $CFG->libdir = $CFG->dirroot .'/lib'; + $CFG->libdir = "$CFG->dirroot/lib"; - require_once($CFG->libdir .'/adodb/adodb.inc.php'); // Database access functions + require_once("$CFG->libdir/adodb/adodb.inc.php"); // Database access functions - $db = &ADONewConnection($CFG->dbtype); + $db = &ADONewConnection($CFG->dbtype); - error_reporting(0); // Hide errors + error_reporting(0); // Hide errors if (!isset($CFG->dbpersist) or !empty($CFG->dbpersist)) { // Use persistent connection (default) $dbconnected = $db->PConnect($CFG->dbhost,$CFG->dbuser,$CFG->dbpass,$CFG->dbname); @@ -92,30 +37,25 @@ global $THEME; $dbconnected = $db->Connect($CFG->dbhost,$CFG->dbuser,$CFG->dbpass,$CFG->dbname); } if (! $dbconnected) { - // In the name of protocol correctness, monitoring and performance - // profiling, set the appropriate error headers for machine comsumption - if (isset($_SERVER['SERVER_PROTOCOL'])) { - // Avoid it with cron.php. Note that we assume it's HTTP/1.x - header($_SERVER['SERVER_PROTOCOL'] . ' 503 Service Unavailable'); + echo ""; + echo "

              Error: Moodle could not connect to the database.

              "; + echo "

              It's possible the database itself is just not working at the moment.

              "; + echo "

              The admin should + also check that the database details have been correctly specified in config.php

              "; + echo "

              Database host: $CFG->dbhost
              "; + echo "Database name: $CFG->dbname
              "; + echo "Database user: $CFG->dbuser
              "; + if (!isset($CFG->dbpersist)) { + echo "

              The admin should also try setting this in config.php: $"."CFG->dbpersist = false;

              "; } - // and then for human consumption... - echo ''; - echo ''; - echo '
              '; - echo '

              Error: Database connection failed.

              '; - echo '

              It is possible that the database is overloaded or otherwise not running properly.

              '; - echo '

              The site administrator should also check that the database details have been correctly specified in config.php

              '; - echo '
              '; - echo ''; + echo "
              "; die; } error_reporting(E_ALL); // Show errors from now on. if (!isset($CFG->prefix)) { // Just in case it isn't defined in config.php - $CFG->prefix = ''; + $CFG->prefix = ""; } @@ -126,40 +66,30 @@ global $THEME; } -/// Load up standard libraries +/// Load up standard libraries - require_once($CFG->libdir .'/weblib.php'); // Functions for producing HTML - require_once($CFG->libdir .'/datalib.php'); // Functions for accessing databases - require_once($CFG->libdir .'/moodlelib.php'); // Other general-purpose functions + require_once("$CFG->libdir/weblib.php"); // Functions for producing HTML + require_once("$CFG->libdir/datalib.php"); // Functions for accessing databases + require_once("$CFG->libdir/moodlelib.php"); // Other general-purpose functions /// Increase memory limits if possible - raise_memory_limit('64M'); // We should never NEED this much but just in case... + @ini_set('memory_limit' , '16M'); /// Load up any configuration from the config table - + if ($configs = get_records('config')) { $CFG = (array)$CFG; foreach ($configs as $config) { - if (!isset($CFG[$config->name])) { - $CFG[$config->name] = $config->value; - } else { - error_log("\$CFG->$config->name in config.php overrides database setting"); - } + $CFG[$config->name] = $config->value; } - $CFG = (object)$CFG; unset($configs); unset($config); } -/// Turn on SQL logging if required - if (!empty($CFG->logsql)) { - $db->LogSQL(); - } - /// Set error reporting back to normal if (empty($CFG->debug)) { @@ -168,11 +98,6 @@ global $THEME; error_reporting($CFG->debug); -/// Set a default enrolment configuration (see bug 1598) - if (!isset($CFG->enrol)) { - $CFG->enrol = 'internal'; - } - /// File permissions on created directories in the $CFG->dataroot if (empty($CFG->directorypermissions)) { @@ -180,75 +105,80 @@ global $THEME; } /// Set up smarty template system - //require_once($CFG->libdir .'/smarty/Smarty.class.php'); - //$smarty = new Smarty; - //$smarty->template_dir = $CFG->dirroot .'/templates/'. $CFG->template; - //if (!file_exists($CFG->dataroot .'/cache')) { - // make_upload_directory('cache'); - //} - //$smarty->compile_dir = $CFG->dataroot .'/cache'; - -/// Set up session handling - if(empty($CFG->respectsessionsettings)) { - if (empty($CFG->dbsessions)) { /// File-based sessions - - // Some distros disable GC by setting probability to 0 - // overriding the PHP default of 1 - // (gc_probability is divided by gc_divisor, which defaults to 1000) - if (ini_get('session.gc_probability') == 0) { - ini_set('session.gc_probability', 1); - } - - if (!empty($CFG->sessiontimeout)) { - ini_set('session.gc_maxlifetime', $CFG->sessiontimeout); - } - - if (!file_exists($CFG->dataroot .'/sessions')) { - make_upload_directory('sessions'); - } - ini_set('session.save_path', $CFG->dataroot .'/sessions'); - - } else { /// Database sessions - ini_set('session.save_handler', 'user'); - - $ADODB_SESSION_DRIVER = $CFG->dbtype; - $ADODB_SESSION_CONNECT = $CFG->dbhost; - $ADODB_SESSION_USER = $CFG->dbuser; - $ADODB_SESSION_PWD = $CFG->dbpass; - $ADODB_SESSION_DB = $CFG->dbname; - $ADODB_SESSION_TBL = $CFG->prefix.'sessions'; - - require_once($CFG->libdir. '/adodb/session/adodb-session.php'); - } + require_once("$CFG->libdir/smarty/Smarty.class.php"); + $smarty = new Smarty; + $smarty->template_dir = "$CFG->dirroot/templates/$CFG->template"; + if (!file_exists("$CFG->dataroot/cache")) { + make_upload_directory('cache'); } + $smarty->compile_dir = "$CFG->dataroot/cache"; + +/// Set session timeouts + if (!empty($CFG->sessiontimeout)) { + ini_set('session.gc_maxlifetime', $CFG->sessiontimeout); + } + +/// Set custom session path + if (!file_exists("$CFG->dataroot/sessions")) { + make_upload_directory('sessions'); + } + ini_set('session.save_path', "$CFG->dataroot/sessions"); + /// Set sessioncookie variable if it isn't already if (!isset($CFG->sessioncookie)) { $CFG->sessioncookie = ''; } -/// Configure ampersands in URLs - - @ini_set('arg_separator.output', '&'); - /// Location of standard files - $CFG->wordlist = $CFG->libdir .'/wordlist.txt'; - $CFG->javascript = $CFG->libdir .'/javascript.php'; + $CFG->wordlist = "$CFG->libdir/wordlist.txt"; + $CFG->javascript = "$CFG->libdir/javascript.php"; $CFG->moddata = 'moddata'; +/// Load up theme variables (colours etc) + + if (!isset($CFG->theme)) { + $CFG->theme = 'standard'; + } + include("$CFG->dirroot/theme/$CFG->theme/config.php"); + + $CFG->stylesheet = "$CFG->wwwroot/theme/$CFG->theme/styles.php"; + $CFG->header = "$CFG->dirroot/theme/$CFG->theme/header.html"; + $CFG->footer = "$CFG->dirroot/theme/$CFG->theme/footer.html"; + + if (empty($THEME->custompix)) { + $CFG->pixpath = "$CFG->wwwroot/pix"; + $CFG->modpixpath = "$CFG->wwwroot/mod"; + } else { + $CFG->pixpath = "$CFG->wwwroot/theme/$CFG->theme/pix"; + $CFG->modpixpath = "$CFG->wwwroot/theme/$CFG->theme/pix/mod"; + } + + /// A hack to get around magic_quotes_gpc being turned off if (!ini_get_bool('magic_quotes_gpc') ) { - function addslashes_deep($value) { - $value = is_array($value) ? - array_map('addslashes_deep', $value) : - addslashes($value); - return $value; + foreach ($_GET as $key => $var) { + if (!is_array($var)) { + $_GET[$key] = addslashes($var); + } else { + foreach ($var as $arrkey => $arrvar) { + $var[$arrkey] = addslashes($arrvar); + } + $_GET[$key] = $var; + } + } + foreach ($_POST as $key => $var) { + if (!is_array($var)) { + $_POST[$key] = addslashes($var); + } else { + foreach ($var as $arrkey => $arrvar) { + $var[$arrkey] = addslashes($arrvar); + } + $_POST[$key] = $var; + } } - $_POST = array_map('addslashes_deep', $_POST); - $_GET = array_map('addslashes_deep', $_GET); - $_COOKIE = array_map('addslashes_deep', $_COOKIE); } @@ -262,83 +192,50 @@ global $THEME; if (isset($_POST)) { extract($_POST, EXTR_SKIP); // Skip existing variables, ie CFG } - if (isset($_SERVER)) { + if (isset($_SERVER)) { extract($_SERVER); } - + /// Load up global environment variables class object {}; - - unset(${'MoodleSession'.$CFG->sessioncookie}); - unset($_GET['MoodleSession'.$CFG->sessioncookie]); - unset($_POST['MoodleSession'.$CFG->sessioncookie]); - + if (!isset($nomoodlecookie)) { session_name('MoodleSession'.$CFG->sessioncookie); @session_start(); - if (! isset($_SESSION['SESSION'])) { - $_SESSION['SESSION'] = new object; + if (! isset($_SESSION['SESSION'])) { + $_SESSION['SESSION'] = new object; } - if (! isset($_SESSION['USER'])) { - $_SESSION['USER'] = new object; + if (! isset($_SESSION['USER'])) { + $_SESSION['USER'] = new object; } - + $SESSION = &$_SESSION['SESSION']; // Makes them easier to reference $USER = &$_SESSION['USER']; } - else { - $SESSION = NULL; - $USER = NULL; - } - if (defined('FULLME')) { // Usually in command-line scripts like admin/cron.php - $FULLME = FULLME; - $ME = FULLME; + if (isset($FULLME)) { + $ME = $FULLME; } else { $FULLME = qualified_me(); $ME = strip_querystring($FULLME); } -/// In VERY rare cases old PHP server bugs (it has been found on PHP 4.1.2 running +/// In VERY rare cases old PHP server bugs (it has been found on PHP 4.1.2 running /// as a CGI under IIS on Windows) may require that you uncomment the following: // session_register("USER"); // session_register("SESSION"); - -/// Load up theme variables (colours etc) - - if (!isset($CFG->themedir)) { - $CFG->themedir = $CFG->dirroot.'/theme/'; - $CFG->themewww = $CFG->wwwroot.'/theme/'; - } - - if (isset($_GET['theme'])) { - if ($CFG->allowthemechangeonurl || confirm_sesskey()) { - if (!detect_munged_arguments($_GET['theme'], 0) and file_exists($CFG->themedir. $_GET['theme'])) { - $SESSION->theme = $_GET['theme']; - } - } - } - - if (!isset($CFG->theme)) { - $CFG->theme = 'standard'; - } - - theme_setup(); // Sets up theme global variables - - - -/// Set language/locale of printed times. If user has chosen a language that -/// that is different from the site language, then use the locale specified +/// Set language/locale of printed times. If user has chosen a language that +/// that is different from the site language, then use the locale specified /// in the language file. Otherwise, if the admin hasn't specified a locale -/// then use the one from the default language. Otherwise (and this is the +/// then use the one from the default language. Otherwise (and this is the /// majority of cases), use the stored locale specified by admin. if (isset($_GET['lang'])) { - if (!detect_munged_arguments($lang, 0) and file_exists($CFG->dirroot .'/lang/'. $lang)) { + if (!detect_munged_arguments($lang, 0) and file_exists("$CFG->dirroot/lang/$lang")) { $SESSION->lang = $lang; $SESSION->encoding = get_string('thischarset'); } @@ -367,47 +264,4 @@ global $THEME; } } - if ($CFG->theme == 'standard' or $CFG->theme == 'standardwhite') { // Temporary measure to help with XHTML validation - if (empty($_SESSION['USER']->id)) { // Allow W3CValidator in as user called w3cvalidator (or guest) - if ((strpos($_SERVER['HTTP_USER_AGENT'], 'W3C_Validator') !== false) or - (strpos($_SERVER['HTTP_USER_AGENT'], 'Cynthia') !== false )) { - if ($USER = get_user_info_from_db("username", "w3cvalidator")) { - $USER->loggedin = true; - $USER->site = $CFG->wwwroot; - $USER->ignoresesskey = true; - } else { - $USER = guest_user(); - } - } - } - } - -/*** - *** init_performance_info() { - *** - *** Initializes our performance info early. - *** - *** Pairs up with get_performance_info() which is actually - *** in moodlelib.php. This function is here so that we can - *** call it before all the libs are pulled in. - *** - **/ -function init_performance_info() { - - global $PERF; - - $PERF = new Object; - $PERF->dbqueries = 0; - $PERF->logwrites = 0; - if (function_exists('microtime')) { - $PERF->starttime = microtime(); - } - if (function_exists('memory_get_usage')) { - $PERF->startmemory = memory_get_usage(); - } - if (function_exists('posix_times')) { - $PERF->startposixtimes = posix_times(); - } -} - ?> diff --git a/lib/smarty/core/core.assign_smarty_interface.php b/lib/smarty/core/core.assign_smarty_interface.php index 8660f3d96f9..7e65a73ec27 100644 --- a/lib/smarty/core/core.assign_smarty_interface.php +++ b/lib/smarty/core/core.assign_smarty_interface.php @@ -8,8 +8,8 @@ /** * Smarty assign_smarty_interface core plugin * - * Type: core
              - * Name: assign_smarty_interface
              + * Type: core
              + * Name: assign_smarty_interface
              * Purpose: assign the $smarty interface variable * @param array Format: null * @param Smarty diff --git a/lib/smarty/core/core.display_debug_console.php b/lib/smarty/core/core.display_debug_console.php index d67091eb354..c509ff72f39 100644 --- a/lib/smarty/core/core.display_debug_console.php +++ b/lib/smarty/core/core.display_debug_console.php @@ -8,8 +8,8 @@ /** * Smarty debug_console function plugin * - * Type: core
              - * Name: display_debug_console
              + * Type: core
              + * Name: display_debug_console
              * Purpose: display the javascript debug console window * @param array Format: null * @param Smarty diff --git a/lib/smarty/plugins/block.textformat.php b/lib/smarty/plugins/block.textformat.php index 3e7ce0c4746..760b313fd68 100644 --- a/lib/smarty/plugins/block.textformat.php +++ b/lib/smarty/plugins/block.textformat.php @@ -8,10 +8,10 @@ /** * Smarty {textformat}{/textformat} block plugin * - * Type: block function
              - * Name: textformat
              + * Type: block function
              + * Name: textformat
              * Purpose: format text a certain way with preset styles - * or custom wrap/indent settings
              + * or custom wrap/indent settings
              * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat} * (Smarty online manual) * @param array diff --git a/lib/smarty/plugins/compiler.assign.php b/lib/smarty/plugins/compiler.assign.php index bc8c58a3962..506083c592d 100644 --- a/lib/smarty/plugins/compiler.assign.php +++ b/lib/smarty/plugins/compiler.assign.php @@ -3,8 +3,8 @@ /** * Smarty {assign} compiler function plugin * - * Type: compiler function
              - * Name: assign
              + * Type: compiler function
              + * Name: assign
              * Purpose: assign a value to a template variable * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign} * (Smarty online manual) diff --git a/lib/smarty/plugins/function.assign_debug_info.php b/lib/smarty/plugins/function.assign_debug_info.php index a2061a19eeb..c281ce879d3 100644 --- a/lib/smarty/plugins/function.assign_debug_info.php +++ b/lib/smarty/plugins/function.assign_debug_info.php @@ -8,9 +8,9 @@ /** * Smarty {assign_debug_info} function plugin * - * Type: function
              - * Name: assign_debug_info
              - * Purpose: assign debug info to the template
              + * Type: function
              + * Name: assign_debug_info
              + * Purpose: assign debug info to the template
              * @param array unused in this plugin, this plugin uses {@link Smarty::$_config}, * {@link Smarty::$_tpl_vars} and {@link Smarty::$_smarty_debug_info} * @param Smarty diff --git a/lib/smarty/plugins/function.config_load.php b/lib/smarty/plugins/function.config_load.php index faff9e52c87..f0b8eddeef8 100644 --- a/lib/smarty/plugins/function.config_load.php +++ b/lib/smarty/plugins/function.config_load.php @@ -8,8 +8,8 @@ /** * Smarty {config_load} function plugin * - * Type: function
              - * Name: config_load
              + * Type: function
              + * Name: config_load
              * Purpose: load config file vars * @link http://smarty.php.net/manual/en/language.function.config.load.php {config_load} * (Smarty online manual) diff --git a/lib/smarty/plugins/function.counter.php b/lib/smarty/plugins/function.counter.php index 03c9ac501f9..cfe5dd886f9 100644 --- a/lib/smarty/plugins/function.counter.php +++ b/lib/smarty/plugins/function.counter.php @@ -9,8 +9,8 @@ /** * Smarty {counter} function plugin * - * Type: function
              - * Name: counter
              + * Type: function
              + * Name: counter
              * Purpose: print out a counter value * @link http://smarty.php.net/manual/en/language.function.counter.php {counter} * (Smarty online manual) diff --git a/lib/smarty/plugins/function.cycle.php b/lib/smarty/plugins/function.cycle.php index f89654978ec..1f4ec9e62ef 100644 --- a/lib/smarty/plugins/function.cycle.php +++ b/lib/smarty/plugins/function.cycle.php @@ -8,10 +8,10 @@ /** * Smarty {cycle} function plugin * - * Type: function
              - * Name: cycle
              - * Date: May 3, 2002
              - * Purpose: cycle through given values
              + * Type: function
              + * Name: cycle
              + * Date: May 3, 2002
              + * Purpose: cycle through given values
              * Input: * - name = name of cycle (optional) * - values = comma separated list of values to cycle, @@ -24,7 +24,7 @@ * - assign = boolean, assigns to template var instead of * printed. * - * Examples:
              + * Examples:
              *
                * {cycle values="#eeeeee,#d0d0d0d"}
                * {cycle name=row values="one,two,three" reset=true}
              diff --git a/lib/smarty/plugins/function.debug.php b/lib/smarty/plugins/function.debug.php
              index fc16eb48e1f..2452d625e8f 100644
              --- a/lib/smarty/plugins/function.debug.php
              +++ b/lib/smarty/plugins/function.debug.php
              @@ -9,9 +9,9 @@
               /**
                * Smarty {debug} function plugin
                *
              - * Type:     function
              - * Name: debug
              - * Date: July 1, 2002
              + * Type: function
              + * Name: debug
              + * Date: July 1, 2002
              * Purpose: popup debug window * @link http://smarty.php.net/manual/en/language.function.debug.php {debug} * (Smarty online manual) diff --git a/lib/smarty/plugins/function.eval.php b/lib/smarty/plugins/function.eval.php index b6c488a8718..3a4b8b2b8c4 100644 --- a/lib/smarty/plugins/function.eval.php +++ b/lib/smarty/plugins/function.eval.php @@ -9,9 +9,9 @@ /** * Smarty {eval} function plugin * - * Type: function
              - * Name: eval
              - * Purpose: evaluate a template variable as a template
              + * Type: function
              + * Name: eval
              + * Purpose: evaluate a template variable as a template
              * @link http://smarty.php.net/manual/en/language.function.eval.php {eval} * (Smarty online manual) * @param array diff --git a/lib/smarty/plugins/function.fetch.php b/lib/smarty/plugins/function.fetch.php index 49134a67cfa..a3273a1e43e 100644 --- a/lib/smarty/plugins/function.fetch.php +++ b/lib/smarty/plugins/function.fetch.php @@ -9,8 +9,8 @@ /** * Smarty {fetch} plugin * - * Type: function
              - * Name: fetch
              + * Type: function
              + * Name: fetch
              * Purpose: fetch file, web or ftp data and display results * @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch} * (Smarty online manual) diff --git a/lib/smarty/plugins/function.html_checkboxes.php b/lib/smarty/plugins/function.html_checkboxes.php index 25cef84c54f..6fd272a0cd2 100644 --- a/lib/smarty/plugins/function.html_checkboxes.php +++ b/lib/smarty/plugins/function.html_checkboxes.php @@ -9,23 +9,23 @@ /** * Smarty {html_checkboxes} function plugin * - * File: function.html_checkboxes.php
              - * Type: function
              - * Name: html_checkboxes
              - * Date: 24.Feb.2003
              - * Purpose: Prints out a list of checkbox input types
              - * Input:
              + * File: function.html_checkboxes.php
              + * Type: function
              + * Name: html_checkboxes
              + * Date: 24.Feb.2003
              + * Purpose: Prints out a list of checkbox input types
              + * Input:
              * - name (optional) - string default "checkbox" * - values (required) - array * - options (optional) - associative array * - checked (optional) - array default not set - * - separator (optional) - ie
              or   + * - separator (optional) - ie
              or   * - output (optional) - without this one the buttons don't have names * Examples: *
                * {html_checkboxes values=$ids output=$names}
              - * {html_checkboxes values=$ids name='box' separator='
              ' output=$names} - * {html_checkboxes values=$ids checked=$checked separator='
              ' output=$names} + * {html_checkboxes values=$ids name='box' separator='
              ' output=$names} + * {html_checkboxes values=$ids checked=$checked separator='
              ' output=$names} *
              * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} * (Smarty online manual) diff --git a/lib/smarty/plugins/function.html_image.php b/lib/smarty/plugins/function.html_image.php index d14ecdbd94a..2654b03d979 100644 --- a/lib/smarty/plugins/function.html_image.php +++ b/lib/smarty/plugins/function.html_image.php @@ -9,11 +9,11 @@ /** * Smarty {html_image} function plugin * - * Type: function
              - * Name: html_image
              - * Date: Feb 24, 2003
              - * Purpose: format HTML tags for the image
              - * Input:
              + * Type: function
              + * Name: html_image
              + * Date: Feb 24, 2003
              + * Purpose: format HTML tags for the image
              + * Input:
              * - file = file (and path) of image (required) * - border = border width (optional, default 0) * - height = image height (optional, default actual height) diff --git a/lib/smarty/plugins/function.html_options.php b/lib/smarty/plugins/function.html_options.php index 6ff0622737b..da5571c5b8e 100644 --- a/lib/smarty/plugins/function.html_options.php +++ b/lib/smarty/plugins/function.html_options.php @@ -9,9 +9,9 @@ /** * Smarty {html_options} function plugin * - * Type: function
              - * Name: html_options
              - * Input:
              + * Type: function
              + * Name: html_options
              + * Input:
              * - name (optional) - string default "select" * - values (required if no options supplied) - array * - options (required if no values supplied) - associative array diff --git a/lib/smarty/plugins/function.html_radios.php b/lib/smarty/plugins/function.html_radios.php index e19fad1dcc8..f74688f13ef 100644 --- a/lib/smarty/plugins/function.html_radios.php +++ b/lib/smarty/plugins/function.html_radios.php @@ -9,23 +9,23 @@ /** * Smarty {html_radios} function plugin * - * File: function.html_radios.php
              - * Type: function
              - * Name: html_radios
              - * Date: 24.Feb.2003
              - * Purpose: Prints out a list of radio input types
              - * Input:
              + * File: function.html_radios.php
              + * Type: function
              + * Name: html_radios
              + * Date: 24.Feb.2003
              + * Purpose: Prints out a list of radio input types
              + * Input:
              * - name (optional) - string default "radio" * - values (required) - array * - options (optional) - associative array * - checked (optional) - array default not set - * - separator (optional) - ie
              or   + * - separator (optional) - ie
              or   * - output (optional) - without this one the buttons don't have names * Examples: *
                * {html_radios values=$ids output=$names}
              - * {html_radios values=$ids name='box' separator='
              ' output=$names} - * {html_radios values=$ids checked=$checked separator='
              ' output=$names} + * {html_radios values=$ids name='box' separator='
              ' output=$names} + * {html_radios values=$ids checked=$checked separator='
              ' output=$names} *
              * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios} * (Smarty online manual) diff --git a/lib/smarty/plugins/function.html_select_date.php b/lib/smarty/plugins/function.html_select_date.php index e15f599bbab..ac4f2a14d07 100644 --- a/lib/smarty/plugins/function.html_select_date.php +++ b/lib/smarty/plugins/function.html_select_date.php @@ -8,11 +8,11 @@ /** * Smarty {html_select_date} plugin * - * Type: function
              - * Name: html_select_date
              + * Type: function
              + * Name: html_select_date
              * Purpose: Prints the dropdowns for date selection. * - * ChangeLog:
              + * ChangeLog:
              * - 1.0 initial release * - 1.1 added support for +/- N syntax for begin * and end year values. (Monte) diff --git a/lib/smarty/plugins/function.html_select_time.php b/lib/smarty/plugins/function.html_select_time.php index 805c118e6db..00cd1ae8896 100644 --- a/lib/smarty/plugins/function.html_select_time.php +++ b/lib/smarty/plugins/function.html_select_time.php @@ -9,8 +9,8 @@ /** * Smarty {html_select_time} function plugin * - * Type: function
              - * Name: html_select_time
              + * Type: function
              + * Name: html_select_time
              * Purpose: Prints the dropdowns for time selection * @link http://smarty.php.net/manual/en/language.function.html.select.time.php {html_select_time} * (Smarty online manual) diff --git a/lib/smarty/plugins/function.html_table.php b/lib/smarty/plugins/function.html_table.php index 623dbf1b740..c6693d88db6 100644 --- a/lib/smarty/plugins/function.html_table.php +++ b/lib/smarty/plugins/function.html_table.php @@ -9,11 +9,11 @@ /** * Smarty {html_table} function plugin * - * Type: function
              - * Name: html_table
              - * Date: Feb 17, 2003
              - * Purpose: make an html table from an array of data
              - * Input:
              + * Type: function
              + * Name: html_table
              + * Date: Feb 17, 2003
              + * Purpose: make an html table from an array of data
              + * Input:
              * - loop = array to loop through * - cols = number of columns * - rows = number of rows diff --git a/lib/smarty/plugins/function.mailto.php b/lib/smarty/plugins/function.mailto.php index 333fbc2233f..92bb9d3b8a6 100644 --- a/lib/smarty/plugins/function.mailto.php +++ b/lib/smarty/plugins/function.mailto.php @@ -9,12 +9,12 @@ /** * Smarty {mailto} function plugin * - * Type: function
              - * Name: mailto
              + * Type: function
              + * Name: mailto
              * Date: May 21, 2002 * Purpose: automate mailto address link creation, and optionally - * encode them.
              - * Input:
              + * encode them.
              + * Input:
              * - address = e-mail address * - text = (optional) text to display, default is address * - encode = (optional) can be one of: diff --git a/lib/smarty/plugins/function.math.php b/lib/smarty/plugins/function.math.php index 03d0368a032..c080d4dfe68 100644 --- a/lib/smarty/plugins/function.math.php +++ b/lib/smarty/plugins/function.math.php @@ -9,9 +9,9 @@ /** * Smarty {math} function plugin * - * Type: function
              - * Name: math
              - * Purpose: handle math computations in template
              + * Type: function
              + * Name: math
              + * Purpose: handle math computations in template
              * @link http://smarty.php.net/manual/en/language.function.math.php {math} * (Smarty online manual) * @param array diff --git a/lib/smarty/plugins/function.popup.php b/lib/smarty/plugins/function.popup.php index 0fa56ce2601..90323ce5029 100644 --- a/lib/smarty/plugins/function.popup.php +++ b/lib/smarty/plugins/function.popup.php @@ -9,8 +9,8 @@ /** * Smarty {popup} function plugin * - * Type: function
              - * Name: popup
              + * Type: function
              + * Name: popup
              * Purpose: make text pop up in windows via overlib * @link http://smarty.php.net/manual/en/language.function.popup.php {popup} * (Smarty online manual) diff --git a/lib/smarty/plugins/function.popup_init.php b/lib/smarty/plugins/function.popup_init.php index 04e52d40ab6..f62c33c13f6 100644 --- a/lib/smarty/plugins/function.popup_init.php +++ b/lib/smarty/plugins/function.popup_init.php @@ -9,8 +9,8 @@ /** * Smarty {popup_init} function plugin * - * Type: function
              - * Name: popup_init
              + * Type: function
              + * Name: popup_init
              * Purpose: initialize overlib * @link http://smarty.php.net/manual/en/language.function.popup.init.php {popup_init} * (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.capitalize.php b/lib/smarty/plugins/modifier.capitalize.php index 053fc4a65f4..adf862b3fe8 100644 --- a/lib/smarty/plugins/modifier.capitalize.php +++ b/lib/smarty/plugins/modifier.capitalize.php @@ -9,8 +9,8 @@ /** * Smarty capitalize modifier plugin * - * Type: modifier
              - * Name: capitalize
              + * Type: modifier
              + * Name: capitalize
              * Purpose: capitalize words in the string * @link http://smarty.php.net/manual/en/language.modifiers.php#LANGUAGE.MODIFIER.CAPITALIZE * capitalize (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.cat.php b/lib/smarty/plugins/modifier.cat.php index 4c6a7c68473..f5dc3d6893c 100644 --- a/lib/smarty/plugins/modifier.cat.php +++ b/lib/smarty/plugins/modifier.cat.php @@ -9,8 +9,8 @@ /** * Smarty cat modifier plugin * - * Type: modifier
              - * Name: cat
              + * Type: modifier
              + * Name: cat
              * Date: Feb 24, 2003 * Purpose: catenate a value to a variable * Input: string to catenate diff --git a/lib/smarty/plugins/modifier.count_characters.php b/lib/smarty/plugins/modifier.count_characters.php index 9b631aa6510..49ce655e853 100644 --- a/lib/smarty/plugins/modifier.count_characters.php +++ b/lib/smarty/plugins/modifier.count_characters.php @@ -9,8 +9,8 @@ /** * Smarty count_characters modifier plugin * - * Type: modifier
              - * Name: count_characteres
              + * Type: modifier
              + * Name: count_characteres
              * Purpose: count the number of characters in a text * @link http://smarty.php.net/manual/en/language.modifier.count.characters.php * count_characters (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.count_paragraphs.php b/lib/smarty/plugins/modifier.count_paragraphs.php index 4d99415108e..6a9833c97ca 100644 --- a/lib/smarty/plugins/modifier.count_paragraphs.php +++ b/lib/smarty/plugins/modifier.count_paragraphs.php @@ -9,8 +9,8 @@ /** * Smarty count_paragraphs modifier plugin * - * Type: modifier
              - * Name: count_paragraphs
              + * Type: modifier
              + * Name: count_paragraphs
              * Purpose: count the number of paragraphs in a text * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php * count_paragraphs (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.count_sentences.php b/lib/smarty/plugins/modifier.count_sentences.php index 1c8753f6cd3..0c210f08fe9 100644 --- a/lib/smarty/plugins/modifier.count_sentences.php +++ b/lib/smarty/plugins/modifier.count_sentences.php @@ -9,7 +9,7 @@ /** * Smarty count_sentences modifier plugin * - * Type: modifier
              + * Type: modifier
              * Name: count_sentences * Purpose: count the number of sentences in a text * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php diff --git a/lib/smarty/plugins/modifier.count_words.php b/lib/smarty/plugins/modifier.count_words.php index 1a6fcca0685..42c8a741c5c 100644 --- a/lib/smarty/plugins/modifier.count_words.php +++ b/lib/smarty/plugins/modifier.count_words.php @@ -9,8 +9,8 @@ /** * Smarty count_words modifier plugin * - * Type: modifier
              - * Name: count_words
              + * Type: modifier
              + * Name: count_words
              * Purpose: count the number of words in a text * @link http://smarty.php.net/manual/en/language.modifier.count.words.php * count_words (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.date_format.php b/lib/smarty/plugins/modifier.date_format.php index 0fd624cf0e9..351a4b65885 100644 --- a/lib/smarty/plugins/modifier.date_format.php +++ b/lib/smarty/plugins/modifier.date_format.php @@ -12,10 +12,10 @@ require_once $smarty->_get_plugin_filepath('shared','make_timestamp'); /** * Smarty date_format modifier plugin * - * Type: modifier
              - * Name: date_format
              - * Purpose: format datestamps via strftime
              - * Input:
              + * Type: modifier
              + * Name: date_format
              + * Purpose: format datestamps via strftime
              + * Input:
              * - string: input date string * - format: strftime format for output * - default_date: default date if $string is empty diff --git a/lib/smarty/plugins/modifier.debug_print_var.php b/lib/smarty/plugins/modifier.debug_print_var.php index cf358192946..b9bb1848802 100644 --- a/lib/smarty/plugins/modifier.debug_print_var.php +++ b/lib/smarty/plugins/modifier.debug_print_var.php @@ -9,8 +9,8 @@ /** * Smarty debug_print_var modifier plugin * - * Type: modifier
              - * Name: debug_print_var
              + * Type: modifier
              + * Name: debug_print_var
              * Purpose: formats variable contents for display in the console * @link http://smarty.php.net/manual/en/language.modifier.debug.print.var.php * debug_print_var (Smarty online manual) @@ -26,14 +26,14 @@ function smarty_modifier_debug_print_var($var, $depth = 0, $length = 40) $results = "Array (".count($var).")"; foreach ($var as $curr_key => $curr_val) { $return = smarty_modifier_debug_print_var($curr_val, $depth+1, $length); - $results .= "
              ".str_repeat(' ', $depth*2)."".strtr($curr_key, $_replace)." => $return"; + $results .= "
              ".str_repeat(' ', $depth*2)."".strtr($curr_key, $_replace)." => $return"; } } else if (is_object($var)) { $object_vars = get_object_vars($var); $results = "".get_class($var)." Object (".count($object_vars).")"; foreach ($object_vars as $curr_key => $curr_val) { $return = smarty_modifier_debug_print_var($curr_val, $depth+1, $length); - $results .= "
              ".str_repeat(' ', $depth*2)."$curr_key => $return"; + $results .= "
              ".str_repeat(' ', $depth*2)."$curr_key => $return"; } } else if (is_resource($var)) { $results = ''.(string)$var.''; diff --git a/lib/smarty/plugins/modifier.default.php b/lib/smarty/plugins/modifier.default.php index 4b8c1f6bde7..8268e396ff0 100644 --- a/lib/smarty/plugins/modifier.default.php +++ b/lib/smarty/plugins/modifier.default.php @@ -9,8 +9,8 @@ /** * Smarty default modifier plugin * - * Type: modifier
              - * Name: default
              + * Type: modifier
              + * Name: default
              * Purpose: designate default value for empty variables * @link http://smarty.php.net/manual/en/language.modifier.default.php * default (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.escape.php b/lib/smarty/plugins/modifier.escape.php index 61c83cb7476..b4979554363 100644 --- a/lib/smarty/plugins/modifier.escape.php +++ b/lib/smarty/plugins/modifier.escape.php @@ -9,8 +9,8 @@ /** * Smarty escape modifier plugin * - * Type: modifier
              - * Name: escape
              + * Type: modifier
              + * Name: escape
              * Purpose: Escape the string according to escapement type * @link http://smarty.php.net/manual/en/language.modifier.escape.php * escape (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.indent.php b/lib/smarty/plugins/modifier.indent.php index 661173a728a..1642bac3ded 100644 --- a/lib/smarty/plugins/modifier.indent.php +++ b/lib/smarty/plugins/modifier.indent.php @@ -9,8 +9,8 @@ /** * Smarty indent modifier plugin * - * Type: modifier
              - * Name: indent
              + * Type: modifier
              + * Name: indent
              * Purpose: indent lines of text * @link http://smarty.php.net/manual/en/language.modifier.indent.php * indent (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.lower.php b/lib/smarty/plugins/modifier.lower.php index b6e97e9ccbd..0b4d1517dc6 100644 --- a/lib/smarty/plugins/modifier.lower.php +++ b/lib/smarty/plugins/modifier.lower.php @@ -9,8 +9,8 @@ /** * Smarty lower modifier plugin * - * Type: modifier
              - * Name: lower
              + * Type: modifier
              + * Name: lower
              * Purpose: convert string to lowercase * @link http://smarty.php.net/manual/en/language.modifier.lower.php * lower (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.nl2br.php b/lib/smarty/plugins/modifier.nl2br.php index 80995891971..86a28d207ac 100644 --- a/lib/smarty/plugins/modifier.nl2br.php +++ b/lib/smarty/plugins/modifier.nl2br.php @@ -9,11 +9,11 @@ /** * Smarty plugin * - * Type: modifier
              - * Name: nl2br
              + * Type: modifier
              + * Name: nl2br
              * Date: Feb 26, 2003 - * Purpose: convert \r\n, \r or \n to <
              > - * Input:
              + * Purpose: convert \r\n, \r or \n to <
              > + * Input:
              * - contents = contents to replace * - preceed_test = if true, includes preceeding break tags * in replacement diff --git a/lib/smarty/plugins/modifier.regex_replace.php b/lib/smarty/plugins/modifier.regex_replace.php index e1134004671..b9cc865ea89 100644 --- a/lib/smarty/plugins/modifier.regex_replace.php +++ b/lib/smarty/plugins/modifier.regex_replace.php @@ -9,8 +9,8 @@ /** * Smarty regex_replace modifier plugin * - * Type: modifier
              - * Name: regex_replace
              + * Type: modifier
              + * Name: regex_replace
              * Purpose: regular epxression search/replace * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php * regex_replace (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.replace.php b/lib/smarty/plugins/modifier.replace.php index 35988a03ce6..2a43515f7ea 100644 --- a/lib/smarty/plugins/modifier.replace.php +++ b/lib/smarty/plugins/modifier.replace.php @@ -9,8 +9,8 @@ /** * Smarty replace modifier plugin * - * Type: modifier
              - * Name: replace
              + * Type: modifier
              + * Name: replace
              * Purpose: simple search/replace * @link http://smarty.php.net/manual/en/language.modifier.replace.php * replace (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.spacify.php b/lib/smarty/plugins/modifier.spacify.php index 16245731e22..dad057f9b5e 100644 --- a/lib/smarty/plugins/modifier.spacify.php +++ b/lib/smarty/plugins/modifier.spacify.php @@ -9,8 +9,8 @@ /** * Smarty spacify modifier plugin * - * Type: modifier
              - * Name: spacify
              + * Type: modifier
              + * Name: spacify
              * Purpose: add spaces between characters in a string * @link http://smarty.php.net/manual/en/language.modifier.spacify.php * spacify (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.string_format.php b/lib/smarty/plugins/modifier.string_format.php index d7646146abd..efd621506fa 100644 --- a/lib/smarty/plugins/modifier.string_format.php +++ b/lib/smarty/plugins/modifier.string_format.php @@ -9,8 +9,8 @@ /** * Smarty string_format modifier plugin * - * Type: modifier
              - * Name: string_format
              + * Type: modifier
              + * Name: string_format
              * Purpose: format strings via sprintf * @link http://smarty.php.net/manual/en/language.modifier.string.format.php * string_format (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.strip.php b/lib/smarty/plugins/modifier.strip.php index 0d4155aada3..738c6407e6c 100644 --- a/lib/smarty/plugins/modifier.strip.php +++ b/lib/smarty/plugins/modifier.strip.php @@ -9,10 +9,10 @@ /** * Smarty strip modifier plugin * - * Type: modifier
              - * Name: strip
              + * Type: modifier
              + * Name: strip
              * Purpose: Replace all repeated spaces, newlines, tabs - * with a single space or supplied replacement string.
              + * with a single space or supplied replacement string.
              * Example: {$var|strip} {$var|strip:" "} * Date: September 25th, 2002 * @link http://smarty.php.net/manual/en/language.modifier.strip.php diff --git a/lib/smarty/plugins/modifier.strip_tags.php b/lib/smarty/plugins/modifier.strip_tags.php index 2840032c8ff..45f1ec14d15 100644 --- a/lib/smarty/plugins/modifier.strip_tags.php +++ b/lib/smarty/plugins/modifier.strip_tags.php @@ -9,8 +9,8 @@ /** * Smarty strip_tags modifier plugin * - * Type: modifier
              - * Name: strip_tags
              + * Type: modifier
              + * Name: strip_tags
              * Purpose: strip html tags from text * @link http://smarty.php.net/manual/en/language.modifier.strip.tags.php * strip_tags (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.truncate.php b/lib/smarty/plugins/modifier.truncate.php index 0718a0fdea5..15a26ba9755 100644 --- a/lib/smarty/plugins/modifier.truncate.php +++ b/lib/smarty/plugins/modifier.truncate.php @@ -9,8 +9,8 @@ /** * Smarty truncate modifier plugin * - * Type: modifier
              - * Name: truncate
              + * Type: modifier
              + * Name: truncate
              * Purpose: Truncate a string to a certain length if necessary, * optionally splitting in the middle of a word, and * appending the $etc string. diff --git a/lib/smarty/plugins/modifier.upper.php b/lib/smarty/plugins/modifier.upper.php index bef09b7b6dd..69960ae7217 100644 --- a/lib/smarty/plugins/modifier.upper.php +++ b/lib/smarty/plugins/modifier.upper.php @@ -9,8 +9,8 @@ /** * Smarty upper modifier plugin * - * Type: modifier
              - * Name: upper
              + * Type: modifier
              + * Name: upper
              * Purpose: convert string to uppercase * @link http://smarty.php.net/manual/en/language.modifier.upper.php * upper (Smarty online manual) diff --git a/lib/smarty/plugins/modifier.wordwrap.php b/lib/smarty/plugins/modifier.wordwrap.php index 37dd014c8b2..b9a9fe94b3f 100644 --- a/lib/smarty/plugins/modifier.wordwrap.php +++ b/lib/smarty/plugins/modifier.wordwrap.php @@ -9,8 +9,8 @@ /** * Smarty wordwrap modifier plugin * - * Type: modifier
              - * Name: wordwrap
              + * Type: modifier
              + * Name: wordwrap
              * Purpose: wrap a string of text at a given length * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php * wordwrap (Smarty online manual) diff --git a/lib/smarty/plugins/outputfilter.trimwhitespace.php b/lib/smarty/plugins/outputfilter.trimwhitespace.php index 160cbac65a1..9979e85867a 100644 --- a/lib/smarty/plugins/outputfilter.trimwhitespace.php +++ b/lib/smarty/plugins/outputfilter.trimwhitespace.php @@ -8,14 +8,14 @@ /** * Smarty trimwhitespace outputfilter plugin * - * File: outputfilter.trimwhitespace.php
              - * Type: outputfilter
              - * Name: trimwhitespace
              - * Date: Jan 25, 2003
              + * File: outputfilter.trimwhitespace.php
              + * Type: outputfilter
              + * Name: trimwhitespace
              + * Date: Jan 25, 2003
              * Purpose: trim leading white space and blank lines from * template source after it gets interpreted, cleaning * up code and saving bandwidth. Does not affect - * <
              >
              and blocks.
              + * <
              >
              and blocks.
              * Install: Drop into the plugin directory, call * $smarty->load_filter('output','trimwhitespace'); * from application. diff --git a/lib/smarty/plugins/shared.escape_special_chars.php b/lib/smarty/plugins/shared.escape_special_chars.php index 69b3495dc1a..515763abedc 100644 --- a/lib/smarty/plugins/shared.escape_special_chars.php +++ b/lib/smarty/plugins/shared.escape_special_chars.php @@ -9,7 +9,7 @@ /** * escape_special_chars common function * - * Function: smarty_function_escape_special_chars
              + * Function: smarty_function_escape_special_chars
              * Purpose: used by other smarty functions to escape * special chars except for already escaped ones * @param string diff --git a/lib/smarty/plugins/shared.make_timestamp.php b/lib/smarty/plugins/shared.make_timestamp.php index ec961ff1638..acdd7773592 100644 --- a/lib/smarty/plugins/shared.make_timestamp.php +++ b/lib/smarty/plugins/shared.make_timestamp.php @@ -7,7 +7,7 @@ /** - * Function: smarty_make_timestamp
              + * Function: smarty_make_timestamp
              * Purpose: used by other smarty functions to make a timestamp * from a string. * @param string diff --git a/lib/speller/controls.html b/lib/speller/controls.html index 95e85ad085b..931108b4c25 100644 --- a/lib/speller/controls.html +++ b/lib/speller/controls.html @@ -4,7 +4,7 @@ -' . "\n"; - echo '' . "\n"; - echo '
              ' . "\n"; -} - -/* - * Try and close the current window immediately using Javascript - */ -function close_window($delay=0) { - echo ''."\n"; - exit; + echo "document.write('');\n"; + echo "document.write('');\n"; + echo "-->\n"; + echo "\n"; + echo "\n"; + echo "\n"; } -/** - * Given an array of value, creates a popup menu to be part of a form - * $options["value"]["label"] - * - * @param type description - * @todo Finish documenting this function - */ -function choose_from_menu ($options, $name, $selected='', $nothing='choose', $script='', $nothingvalue='0', $return=false, $disabled=false) { +function choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="", $nothingvalue="0", $return=false) { +/// Given an array of value, creates a popup menu to be part of a form +/// $options["value"]["label"] - if ($nothing == 'choose') { - $nothing = get_string('choose') .'...'; + if ($nothing == "choose") { + $nothing = get_string("choose")."..."; } - $attributes = ($script) ? 'onchange="'. $script .'"' : ''; - if ($disabled) { - $attributes .= ' disabled="disabled"'; + if ($script) { + $javascript = "onChange=\"$script\""; + } else { + $javascript = ""; } - $output = '\n"; if ($nothing) { - $output .= ' \n"; } if (!empty($options)) { foreach ($options as $value => $label) { - $output .= ' \n"; } else { - $output .= '>'. $label .'' . "\n"; + $output .= ">$label\n"; } } } - $output .= '' . "\n"; + $output .= "\n"; if ($return) { return $output; @@ -695,112 +418,79 @@ function choose_from_menu ($options, $name, $selected='', $nothing='choose', $sc } } -/** - * Implements a complete little popup form - * - * @uses $CFG - * @param string $common The URL up to the point of the variable that changes - * @param array $options Alist of value-label pairs for the popup list - * @param string $formname Name must be unique on the page - * @param string $selected The option that is already selected - * @param string $nothing The label for the "no choice" option - * @param string $help The name of a help page if help is required - * @param string $helptext The name of the label for the help button - * @param boolean $return Indicates whether the function should return the text - * as a string or echo it directly to the page being rendered - * @param string $targetwindow The name of the target page to open the linked page in. - * @return string If $return is true then the entire form is returned as a string. - * @todo Finish documenting this function
              - */ -function popup_form($common, $options, $formname, $selected='', $nothing='choose', $help='', $helptext='', $return=false, $targetwindow='self') { +function popup_form ($common, $options, $formname, $selected="", $nothing="choose", $help="", $helptext="", $return=false, $targetwindow="self") { +/// Implements a complete little popup form +/// $common = the URL up to the point of the variable that changes +/// $options = A list of value-label pairs for the popup list +/// $formname = name must be unique on the page +/// $selected = the option that is already selected +/// $nothing = The label for the "no choice" option +/// $help = The name of a help page if help is required +/// $helptext = The name of the label for the help button +/// $return = Boolean indicating whether the function should return the text +/// as a string or echo it directly to the page being rendered + +// TODO: +// +// * Make sure it's W3C conformant (
              has to go for example) +// * Code it in a way that doesn't require JS to be on. Example code: +// $selector .= ''; +// $selector .= ''; +// if(!empty($morevars)) { +// $getarray = explode('&', $morevars); +// foreach($getarray as $thisvar) { +// $selector .= ''; +// } +// } +// $selector .= ''; +// $selector .= ''; +// $selector .= ''; +// $selector .= '
              '; +// global $CFG; - static $go, $choose; /// Locally cached, in case there's lots on a page if (empty($options)) { return ''; } - if (!isset($go)) { - $go = get_string('go'); + if ($nothing == "choose") { + $nothing = get_string("choose")."..."; } - if ($nothing == 'choose') { - if (!isset($choose)) { - $choose = get_string('choose'); - } - $nothing = $choose.'...'; - } + $startoutput = "
              framename}\" name=\"$formname\">"; + $output = "'."\n"; - - if ($nothing != '') { + if ($nothing != "") { $output .= " \n"; } - $inoptgroup = false; foreach ($options as $value => $label) { - - if (substr($label,0,2) == '--') { /// we are starting a new optgroup - - /// Check to see if we already have a valid open optgroup - /// XHTML demands that there be at least 1 option within an optgroup - if ($inoptgroup and (count($optgr) > 1) ) { - $output .= implode('', $optgr); - $output .= ' '; - } - - unset($optgr); - $optgr = array(); - - $optgr[] = ' '; // Plain labels - - $inoptgroup = true; /// everything following will be in an optgroup + if (substr($label,0,2) == "--") { + $output .= " "; // Plain labels continue; - } else { - $optstr = ' ' . "\n"; - } - - if ($inoptgroup) { - $optgr[] = $optstr; - } else { - $output .= $optstr; + $output .= " selected=\"true\""; } } - + if ($label) { + $output .= ">$label\n"; + } else { + $output .= ">$value\n"; + } } - - /// catch the final group if not closed - if ($inoptgroup and count($optgr) > 1) { - $output .= implode('', $optgr); - $output .= ' '; - } - - $output .= ''; - $output .= ''; - $output .= ''; - $output .= '
              ' . "\n"; + $output .= ""; + $output .= "\n"; if ($help) { $button = helpbutton($help, $helptext, 'moodle', true, false, '', true); @@ -816,26 +506,17 @@ function popup_form($common, $options, $formname, $selected='', $nothing='choose } -/** - * Prints some red text - * - * @param string $error The text to be displayed in red - */ -function formerr($error) { +function formerr($error) { +/// Prints some red text if (!empty($error)) { - echo ''. $error .''; + echo "$error"; } } -/** - * Validates an email to make sure it makes sense. - * - * @param string $address The email address to validate. - * @return boolean - */ -function validate_email($address) { +function validate_email ($address) { +/// Validates an email to make sure it makes sense. return (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. '@'. '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'. @@ -843,61 +524,6 @@ function validate_email($address) { $address)); } -/** - * Extracts file argument either from file parameter or PATH_INFO - * - * @param string $scriptname name of the calling script - * @return string file path (only safe characters) - */ -function get_file_argument($scriptname) { - global $_SERVER; - - $relativepath = FALSE; - - // first try normal parameter (compatible method == no relative links!) - $relativepath = optional_param('file', FALSE, PARAM_PATH); - if ($relativepath === '/testslasharguments') { - echo 'test -1: Incorrect use - try "file.php/testslasharguments" instead'; //indicate fopen/fread works for health center - die; - } - - // then try extract file from PATH_INFO (slasharguments method) - if (!$relativepath and !empty($_SERVER['PATH_INFO'])) { - $path_info = $_SERVER['PATH_INFO']; - // check that PATH_INFO works == must not contain the script name - if (!strpos($path_info, $scriptname)) { - $relativepath = clean_param(rawurldecode($path_info), PARAM_PATH); - if ($relativepath === '/testslasharguments') { - echo 'test 1: Slasharguments test passed.'; //indicate ok for health center - die; - } - } - } - - // now if both fail try the old way - // (for compatibility with misconfigured or older buggy php implementations) - if (!$relativepath) { - $arr = explode($scriptname, me()); - if (!empty($arr[1])) { - $path_info = strip_querystring($arr[1]); - $relativepath = clean_param(rawurldecode($path_info), PARAM_PATH); - if ($relativepath === '/testslasharguments') { - echo 'test 2:Slasharguments test passed (compatibility hack).'; //indicate ok for health center - die; - } - } - } - - return $relativepath; -} - -/** - * Check for bad characters ? - * - * @param string $string ? - * @param int $allowdots ? - * @todo Finish documenting this function - more detail needed in description as well as details on arguments - */ function detect_munged_arguments($string, $allowdots=1) { if (substr_count($string, '..') > $allowdots) { // Sometimes we allow dots in references return true; @@ -912,13 +538,8 @@ function detect_munged_arguments($string, $allowdots=1) { return false; } -/** - * Searches the current environment variables for some slash arguments - * - * @param string $file ? - * @todo Finish documenting this function - */ -function get_slash_arguments($file='file.php') { +function get_slash_arguments($file="file.php") { +/// Searches the current environment variables for some slash arguments if (!$string = me()) { return false; @@ -927,27 +548,20 @@ function get_slash_arguments($file='file.php') { $pathinfo = explode($file, $string); if (!empty($pathinfo[1])) { - return addslashes($pathinfo[1]); + return $pathinfo[1]; } else { return false; } } -/** - * Extracts arguments from "/foo/bar/something" - * eg http://mysite.com/script.php/foo/bar/something - * - * @param string $string ? - * @param int $i ? - * @return array|string - * @todo Finish documenting this function - */ function parse_slash_arguments($string, $i=0) { +/// Extracts arguments from "/foo/bar/something" +/// eg http://mysite.com/script.php/foo/bar/something if (detect_munged_arguments($string)) { return false; } - $args = explode('/', $string); + $args = explode("/", $string); if ($i) { // return just the required argument return $args[$i]; @@ -958,42 +572,21 @@ function parse_slash_arguments($string, $i=0) { } } -/** - * Just returns an array of text formats suitable for a popup menu - * - * @uses FORMAT_MOODLE - * @uses FORMAT_HTML - * @uses FORMAT_PLAIN - * @uses FORMAT_MARKDOWN - * @return array - */ function format_text_menu() { - - return array (FORMAT_MOODLE => get_string('formattext'), - FORMAT_HTML => get_string('formathtml'), - FORMAT_PLAIN => get_string('formatplain'), - FORMAT_MARKDOWN => get_string('formatmarkdown')); +/// Just returns an array of formats suitable for a popup menu + return array (FORMAT_MOODLE => get_string("formattext"), + FORMAT_HTML => get_string("formathtml"), + FORMAT_PLAIN => get_string("formatplain"), + FORMAT_WIKI => get_string("formatwiki"), + FORMAT_MARKDOWN => get_string("formatmarkdown")); } -/** - * Given text in a variety of format codings, this function returns - * the text as safe HTML. - * - * @uses $CFG - * @uses FORMAT_MOODLE - * @uses FORMAT_HTML - * @uses FORMAT_PLAIN - * @uses FORMAT_WIKI - * @uses FORMAT_MARKDOWN - * @param string $text The text to be formatted. This is raw text originally from user input. - * @param int $format Identifier of the text format to be used - * (FORMAT_MOODLE, FORMAT_HTML, FORMAT_PLAIN, FORMAT_WIKI, FORMAT_MARKDOWN) - * @param array $options ? - * @param int $courseid ? - * @return string - * @todo Finish documenting this function - */ function format_text($text, $format=FORMAT_MOODLE, $options=NULL, $courseid=NULL ) { +/// Given text in a variety of format codings, this function returns +/// the text as safe HTML. +/// +/// $text is raw text (originally from a user) +/// $format is one of the format constants, defined above global $CFG, $course; @@ -1025,16 +618,17 @@ function format_text($text, $format=FORMAT_MOODLE, $options=NULL, $courseid=NULL case FORMAT_PLAIN: $text = htmlentities($text); $text = rebuildnolinktag($text); - $text = str_replace(' ', '  ', $text); + $text = str_replace(" ", "  ", $text); $text = nl2br($text); break; case FORMAT_WIKI: - // this format is deprecated - $text = '

              NOTICE: Wiki-like formatting has been removed from Moodle. You should not be seeing - this message as all texts should have been converted to Markdown format instead. - Please post a bug report to http://moodle.org/bugs with information about where you - saw this message.

              '.$text; + $text = wiki_to_html($text); + $text = rebuildnolinktag($text); + if (!isset($options->noclean)) { + $text = clean_text($text, $format); + } + $text = filter_text($text, $courseid); break; case FORMAT_MARKDOWN: @@ -1042,7 +636,6 @@ function format_text($text, $format=FORMAT_MOODLE, $options=NULL, $courseid=NULL if (!isset($options->noclean)) { $text = clean_text($text, $format); } - replace_smilies($text); $text = filter_text($text, $courseid); break; @@ -1074,64 +667,12 @@ function format_text($text, $format=FORMAT_MOODLE, $options=NULL, $courseid=NULL return $text; } -/** Given a simple string, this function returns the string - * processed by enabled filters if $CFG->filterall is enabled - * - * @param string $string The string to be filtered. - * @param boolean $striplinks To strip any link in the result text. - * @param int $courseid Current course as filters can, potentially, use it - * @return string - */ -function format_string ($string, $striplinks = false, $courseid=NULL ) { - - global $CFG, $course; - - //We'll use a in-memory cache here to speed up repeated strings - static $strcache; - - //Calculate md5 - $md5 = md5($string.$striplinks); - - //Fetch from cache if possible - if(isset($strcache[$md5])) { - return $strcache[$md5]; - } - - if (empty($courseid)) { - if (!empty($course->id)) { // An ugly hack for better compatibility - $courseid = $course->id; // (copied from format_text) - } - } - - if (!empty($CFG->filterall)) { - $string = filter_text($string, $courseid); - } - - if ($striplinks) { //strip links in string - $string = preg_replace('/(]+?>)(.+?)(<\/a>)/is','$2',$string); - } - - //Store to cache - $strcache[$md5] = $string; - - return $string; -} - -/** - * Given text in a variety of format codings, this function returns - * the text as plain text suitable for plain email. - * - * @uses FORMAT_MOODLE - * @uses FORMAT_HTML - * @uses FORMAT_PLAIN - * @uses FORMAT_WIKI - * @uses FORMAT_MARKDOWN - * @param string $text The text to be formatted. This is raw text originally from user input. - * @param int $format Identifier of the text format to be used - * (FORMAT_MOODLE, FORMAT_HTML, FORMAT_PLAIN, FORMAT_WIKI, FORMAT_MARKDOWN) - * @return string - */ function format_text_email($text, $format) { +/// Given text in a variety of format codings, this function returns +/// the text as plain text suitable for plain email. +/// +/// $text is raw text (originally from a user) +/// $format is one of the format constants, defined above switch ($format) { @@ -1160,30 +701,22 @@ function format_text_email($text, $format) { } } -/** - * Given some text in HTML format, this function will pass it - * through any filters that have been defined in $CFG->textfilterx - * The variable defines a filepath to a file containing the - * filter function. The file must contain a variable called - * $textfilter_function which contains the name of the function - * with $courseid and $text parameters - * - * @param string $text The text to be passed through format filters - * @param int $courseid ? - * @return string - * @todo Finish documenting this function - */ + function filter_text($text, $courseid=NULL) { +/// Given some text in HTML format, this function will pass it +/// through any filters that have been defined in $CFG->textfilterx +/// The variable defines a filepath to a file containing the +/// filter function. The file must contain a variable called +/// $textfilter_function which contains the name of the function +/// with $courseid and $text parameters global $CFG; - require_once($CFG->libdir.'/filterlib.php'); - if (!empty($CFG->textfilters)) { $textfilters = explode(',', $CFG->textfilters); foreach ($textfilters as $textfilter) { - if (is_readable($CFG->dirroot .'/'. $textfilter .'/filter.php')) { - include_once($CFG->dirroot .'/'. $textfilter .'/filter.php'); + if (is_readable("$CFG->dirroot/$textfilter/filter.php")) { + include_once("$CFG->dirroot/$textfilter/filter.php"); $functionname = basename($textfilter).'_filter'; if (function_exists($functionname)) { $text = $functionname($courseid, $text); @@ -1192,26 +725,13 @@ function filter_text($text, $courseid=NULL) { } } - /// tags removed for XHTML compatibility - $text = str_replace('', '', $text); - $text = str_replace('', '', $text); - return $text; } -/** - * Given raw text (eg typed in by a user), this function cleans it up - * and removes any nasty tags that could mess up Moodle pages. - * - * @uses FORMAT_MOODLE - * @uses FORMAT_PLAIN - * @uses ALLOWED_TAGS - * @param string $text The text to be cleaned - * @param int $format Identifier of the text format to be used - * (FORMAT_MOODLE, FORMAT_HTML, FORMAT_PLAIN, FORMAT_WIKI, FORMAT_MARKDOWN) - * @return string The cleaned up text - */ + function clean_text($text, $format=FORMAT_MOODLE) { +/// Given raw text (eg typed in by a user), this function cleans it up +/// and removes any nasty tags that could mess up Moodle pages. global $ALLOWED_TAGS; @@ -1224,27 +744,23 @@ function clean_text($text, $format=FORMAT_MOODLE) { /// Remove tags that are not allowed $text = strip_tags($text, $ALLOWED_TAGS); - /// Clean up embedded scripts and , using kses - $text = cleanAttributes($text); - /// Remove script events $text = eregi_replace("([^a-z])language([[:space:]]*)=", "\\1Xlanguage=", $text); $text = eregi_replace("([^a-z])on([a-z]+)([[:space:]]*)=", "\\1Xon\\2=", $text); + /// Clean up embedded scripts and , using kses + $text = cleanAttributes($text); + return $text; } } -/** - * This function takes a string and examines it for HTML tags. - * If tags are detected it passes the string to a helper function {@link cleanAttributes2()} - * which checks for attributes and filters them for malicious content - * 17/08/2004 :: Eamon DOT Costello AT dcu DOT ie - * - * @param string $str The string to be examined for html tags - * @return string - */ + function cleanAttributes($str){ +/// This function takes a string and examines it for html tags. +/// If tags are detected it passes the string to a helper function cleanAttributes2 +/// which checks for attributes and filters them for malicious content +/// 17/08/2004 :: Eamon DOT Costello AT dcu DOT ie $result = preg_replace( '%(<[^>]*(>|$)|>)%me', #search for html tags "cleanAttributes2('\\1')", @@ -1253,57 +769,45 @@ function cleanAttributes($str){ return $result; } -/** - * This function takes a string with an html tag and strips out any unallowed - * protocols e.g. javascript: - * It calls ancillary functions in kses which are prefixed by kses -* 17/08/2004 :: Eamon DOT Costello AT dcu DOT ie - * - * @param string $htmlTag An html tag to be examined - * @return string - */ -function cleanAttributes2($htmlTag){ - global $CFG, $ALLOWED_PROTOCOLS; - require_once($CFG->libdir .'/kses.php'); +function cleanAttributes2($htmlTag){ + /// This function takes a string with an html tag and strips out any unallowed + /// protocols e.g. javascript: + /// It calls ancillary functions in kses which are prefixed by kses + /// 17/08/2004 :: Eamon DOT Costello AT dcu DOT ie + + global $CFG; + require_once("$CFG->libdir/kses.php"); $htmlTag = kses_stripslashes($htmlTag); - if (substr($htmlTag, 0, 1) != '<') { + if (substr($htmlTag, 0, 1) != '<'){ return '>'; //a single character ">" detected } - if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9]+)([^>]*)>?$%', $htmlTag, $matches)) { + if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9]+)([^>]*)>?$%', $htmlTag, $matches)){ return ''; // It's seriously malformed } $slash = trim($matches[1]); //trailing xhtml slash $elem = $matches[2]; //the element name $attrlist = $matches[3]; // the list of attributes as a string - $attrArray = kses_hair($attrlist, $ALLOWED_PROTOCOLS); + $allowed_protocols = array('http', 'https', 'ftp', 'news', 'mailto', 'teamspeak', 'gopher'); + $attrArray = kses_hair($attrlist, $allowed_protocols) ; $attStr = ''; - foreach ($attrArray as $arreach) { + foreach ($attrArray as $arreach) + { $attStr .= ' '.strtolower($arreach['name']).'="'.$arreach['value'].'" '; } - - // Remove last space from attribute list - $attStr = rtrim($attStr); - $xhtml_slash = ''; - if (preg_match('%/\s*$%', $attrlist)) { + if (preg_match('%/\s*$%', $attrlist)){ $xhtml_slash = ' /'; } - return '<'. $slash . $elem . $attStr . $xhtml_slash .'>'; + return "<$slash$elem$attStr$xhtml_slash>"; } -/** - * Replaces all known smileys in the text with image equivalents - * - * @uses $CFG - * @param string $text Passed by reference. The string to search for smily strings. - * @return string - */ + function replace_smilies(&$text) { -/// +/// Replaces all known smileys in the text with image equivalents global $CFG; /// this builds the mapping array only once @@ -1340,7 +844,7 @@ function replace_smilies(&$text) { $alttext = get_string($image, 'pix'); $e[] = $emoticon; - $img[] = ''. $alttext .''; + $img[] = "\"$alttext\"pixpath/s/$image.gif\" />"; } $runonce = true; } @@ -1371,20 +875,9 @@ function replace_smilies(&$text) { } } -/** - * Given plain text, makes it into HTML as nicely as possible. - * May contain HTML tags already - * - * @uses $CFG - * @param string $text The string to convert. - * @param boolean $smiley Convert any smiley characters to smiley images? - * @param boolean $para If true then the returned string will be wrapped in paragraph tags - * @param boolean $newlines If true then lines newline breaks will be converted to HTML newline breaks. - * @return string - */ - function text_to_html($text, $smiley=true, $para=true, $newlines=true) { -/// +/// Given plain text, makes it into HTML as nicely as possible. +/// May contain HTML tags already global $CFG; @@ -1409,84 +902,72 @@ function text_to_html($text, $smiley=true, $para=true, $newlines=true) { /// Wrap the whole thing in a paragraph tag if required if ($para) { - return '

              '.$text.'

              '; + return "

              ".$text."

              "; } else { return $text; } } -/** - * Given Markdown formatted text, make it into XHTML using external function - * - * @uses $CFG - * @param string $text The markdown formatted text to be converted. - * @return string Converted text - */ +function wiki_to_html($text) { +/// Given Wiki formatted text, make it into XHTML using external function + global $CFG, $course; + + require_once("$CFG->libdir/wiki.php"); + + $wiki = new Wiki; + return $wiki->format($text); +} + function markdown_to_html($text) { +/// Given Markdown formatted text, make it into XHTML using external function global $CFG; - require_once($CFG->libdir .'/markdown.php'); + require_once("$CFG->libdir/markdown.php"); return Markdown($text); } -/** - * Given HTML text, make it into plain text using external function - * - * @uses $CFG - * @param string $html The text to be converted. - * @return string - */ function html_to_text($html) { - +/// Given HTML text, make it into plain text using external function global $CFG; - require_once($CFG->libdir .'/html2text.php'); + require_once("$CFG->libdir/html2text.php"); return html2text($html); } -/** - * Given some text this function converts any URLs it finds into HTML links - * - * @param string $text Passed in by reference. The string to be searched for urls. - */ + function convert_urls_into_links(&$text) { +/// Given some text, it converts any URLs it finds into HTML links. + /// Make lone URLs into links. eg http://moodle.com/ $text = eregi_replace("([[:space:]]|^|\(|\[)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", - "\\1\\2://\\3\\4", $text); + "\\1\\2://\\3\\4", $text); /// eg www.moodle.com $text = eregi_replace("([[:space:]]|^|\(|\[)www\.([^[:space:]]*)([[:alnum:]#?/&=])", - "\\1www.\\2\\3", $text); + "\\1www.\\2\\3", $text); } -/** - * This function will highlight search words in a given string - * It cares about HTML and will not ruin links. It's best to use - * this function after performing any conversions to HTML. - * Function found here: http://forums.devshed.com/t67822/scdaa2d1c3d4bacb4671d075ad41f0854.html - * - * @param string $needle The string to search for - * @param string $haystack The string to search for $needle in - * @param int $case ? - * @return string - * @todo Finish documenting this function - */ function highlight($needle, $haystack, $case=0, - $left_string='', $right_string='') { + $left_string="", $right_string="") { +/// This function will highlight search words in a given string +/// It cares about HTML and will not ruin links. It's best to use +/// this function after performing any conversions to HTML. +/// Function found here: http://forums.devshed.com/t67822/scdaa2d1c3d4bacb4671d075ad41f0854.html + if (empty($needle)) { return $haystack; } - $list_of_words = eregi_replace("[^-a-zA-Z0-9&.']", " ", $needle); - $list_array = explode(' ', $list_of_words); + $list_of_words = eregi_replace("[^-a-zA-Z0-9&']", " ", $needle); + $list_array = explode(" ", $list_of_words); for ($i=0; $i/is',$haystack,$list_of_words); @@ -1496,42 +977,30 @@ function highlight($needle, $haystack, $case=0, } $haystack = str_replace($final,array_keys($final),$haystack); - $list_of_words_cp = eregi_replace(' +', '|', $list_of_words_cp); + $list_of_words_cp = eregi_replace(" +", "|", $list_of_words_cp); - if ($list_of_words_cp{0}=='|') { - $list_of_words_cp{0} = ''; + if ($list_of_words_cp{0}=="|") { + $list_of_words_cp{0} = ""; } - if ($list_of_words_cp{strlen($list_of_words_cp)-1}=='|') { - $list_of_words_cp{strlen($list_of_words_cp)-1}=''; + if ($list_of_words_cp{strlen($list_of_words_cp)-1}=="|") { + $list_of_words_cp{strlen($list_of_words_cp)-1}=""; } + $list_of_words_cp = "(".trim($list_of_words_cp).")"; - $list_of_words_cp = trim($list_of_words_cp); - - if ($list_of_words_cp) { - - $list_of_words_cp = "(". $list_of_words_cp .")"; - - if (!$case){ + if (!$case){ $haystack = eregi_replace("$list_of_words_cp", "$left_string"."\\1"."$right_string", $haystack); - } else { + } else { $haystack = ereg_replace("$list_of_words_cp", "$left_string"."\\1"."$right_string", $haystack); - } } $haystack = str_replace(array_keys($final),$final,$haystack); - return $haystack; + return stripslashes($haystack); } -/** - * This function will highlight instances of $needle in $haystack - * It's faster that the above function and doesn't care about - * HTML or anything. - * - * @param string $needle The string to search for - * @param string $haystack The string to search for $needle in - * @return string - */ function highlightfast($needle, $haystack) { +/// This function will highlight instances of $needle in $haystack +/// It's faster that the above function and doesn't care about +/// HTML or anything. $parts = explode(strtolower($needle), strtolower($haystack)); @@ -1541,7 +1010,7 @@ function highlightfast($needle, $haystack) { $parts[$key] = substr($haystack, $pos, strlen($part)); $pos += strlen($part); - $parts[$key] .= ''.substr($haystack, $pos, strlen($needle)).''; + $parts[$key] .= "".substr($haystack, $pos, strlen($needle)).""; $pos += strlen($needle); } @@ -1551,66 +1020,41 @@ function highlightfast($needle, $haystack) { /// STANDARD WEB PAGE PARTS /////////////////////////////////////////////////// -/** - * Print a standard header - * - * @uses $USER - * @uses $CFG - * @uses $SESSION - * @param string $title Appears at the top of the window - * @param string $heading Appears at the top of the page - * @param string $navigation Premade navigation string (for use as breadcrumbs links) - * @param string $focus Indicates form element to get cursor focus on load eg inputform.password - * @param string $meta Meta tags to be added to the header - * @param boolean $cache Should this page be cacheable? - * @param string $button HTML code for a button (usually for module editing) - * @param string $menu HTML code for a popup menu - * @param boolean $usexml use XML for this page - * @param string $bodytags This text will be included verbatim in the tag (useful for onload() etc) - */ -function print_header ($title='', $heading='', $navigation='', $focus='', $meta='', - $cache=true, $button=' ', $menu='', $usexml=false, $bodytags='') { +function print_header ($title="", $heading="", $navigation="", $focus="", $meta="", + $cache=true, $button=" ", $menu="", $usexml=false, $bodytags="") { +// $title - appears top of window +// $heading - appears top of page +// $navigation - premade navigation string +// $focus - indicates form element eg inputform.password +// $meta - meta tags in the header +// $cache - should this page be cacheable? +// $button - HTML code for a button (usually for module editing) +// $menu - HTML code for a popup menu +// $usexml - use XML for this page +// $bodytags - this text will be included verbatim in the tag (useful for onload() etc) - global $USER, $CFG, $THEME, $SESSION, $ME, $SITE; + global $USER, $CFG, $THEME, $SESSION; -/// This is an ugly hack to be replaced later by a proper global $COURSE - global $course; + global $course; // This is a bit of an ugly hack to be gotten rid of later if (!empty($course->lang)) { $CFG->courselang = $course->lang; } - if (!empty($course->theme)) { - if (!empty($CFG->allowcoursethemes)) { - $CFG->coursetheme = $course->theme; - theme_setup(); - } + + if (file_exists("$CFG->dirroot/theme/$CFG->theme/styles.php")) { + $styles = $CFG->stylesheet; + } else { + $styles = "$CFG->wwwroot/theme/standard/styles.php"; } - -/// Add the required stylesheets - $stylesheetshtml = ''; - foreach ($CFG->stylesheets as $stylesheet) { - $stylesheetshtml .= ''."\n"; - } - $meta = $stylesheetshtml.$meta; - - - if ($navigation == 'home') { + if ($navigation == "home") { $home = true; - $navigation = ''; + $navigation = ""; } else { $home = false; } -/// This is another ugly hack to make navigation elements available to print_footer later - $THEME->title = $title; - $THEME->heading = $heading; - $THEME->navigation = $navigation; - $THEME->button = $button; - $THEME->menu = $menu; - $navmenulist = isset($THEME->navmenulist) ? $THEME->navmenulist : ''; - - if ($button == '') { - $button = ' '; + if ($button == "") { + $button = " "; } if (!$menu and $navigation) { @@ -1619,10 +1063,10 @@ function print_header ($title='', $heading='', $navigation='', $focus='', $meta= } else { $wwwroot = str_replace('http','https',$CFG->wwwroot); } - if (isset($course->id)) { - $menu = user_login_string($course); + if (isset($USER->id)) { + $menu = "framename\" href=\"$wwwroot/login/logout.php\">".get_string("logout").""; } else { - $menu = user_login_string($SITE); + $menu = "framename\" href=\"$wwwroot/login/index.php\">".get_string("login").""; } } @@ -1639,7 +1083,7 @@ function print_header ($title='', $heading='', $navigation='', $focus='', $meta= } if (isadmin()) { $menu .= ' ('.get_string('logs').')'; + '?chooselog=1&id=1&modid=site_errors">'.get_string('logs').')'; } $menu .= '
              '; } @@ -1647,449 +1091,154 @@ function print_header ($title='', $heading='', $navigation='', $focus='', $meta= } } + // Add a stylesheet for the HTML editor + $meta = "\n$meta\n"; if (!empty($CFG->unicode)) { - $encoding = 'utf-8'; + $encoding = "utf-8"; } else if (!empty($CFG->courselang)) { - $encoding = get_string('thischarset'); + $encoding = get_string("thischarset"); moodle_setlocale(); } else { if (!empty($SESSION->encoding)) { $encoding = $SESSION->encoding; } else { - $SESSION->encoding = $encoding = get_string('thischarset'); + $SESSION->encoding = $encoding = get_string("thischarset"); } } - $meta = ''. "\n". $meta ."\n"; + $meta = "\n$meta\n"; if (!$usexml) { @header('Content-type: text/html; charset='.$encoding); } - if ( get_string('thisdirection') == 'rtl' ) { - $direction = ' dir="rtl"'; + if ( get_string("thisdirection") == "rtl" ) { + $direction = " dir=\"rtl\""; } else { - $direction = ' dir="ltr"'; + $direction = " dir=\"ltr\""; } - if ($cache) { // Allow caching on "back" (but not on normal clicks) - @header('Cache-Control: private, pre-check=0, post-check=0, max-age=0'); - @header('Pragma: no-cache'); - @header('Expires: '); - } else { // Do everything we can to always prevent clients and proxies caching + if (!$cache) { // Do everything we can to prevent clients and proxies caching + @header('Expires: Mon, 20 Aug 1969 09:23:00 GMT'); + @header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); @header('Cache-Control: no-store, no-cache, must-revalidate'); @header('Cache-Control: post-check=0, pre-check=0', false); @header('Pragma: no-cache'); - @header('Expires: Mon, 20 Aug 1969 09:23:00 GMT'); - @header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); $meta .= "\n"; $meta .= "\n"; } - @header('Accept-Ranges: none'); if ($usexml) { // Added by Gustav Delius / Mad Alex for MathML output - // Modified by Julian Sedding $currentlanguage = current_language(); - $mathplayer = preg_match("/MathPlayer/i", $_SERVER['HTTP_USER_AGENT']); - if(!$mathplayer) { - header('Content-Type: application/xhtml+xml'); - } - echo ''."\n"; + + @header("Content-type: text/xml"); + echo "\n"; if (!empty($CFG->xml_stylesheets)) { - $stylesheets = explode(';', $CFG->xml_stylesheets); + $stylesheets = explode(";", $CFG->xml_stylesheets); foreach ($stylesheets as $stylesheet) { - echo 'wwwroot .'/'. $stylesheet .'" ?>' . "\n"; + echo "wwwroot/$stylesheet\" ?>\n"; } } - echo 'xml_doctype_extra)) { - echo ' plus '. $CFG->xml_doctype_extra; - } - echo '//' . strtoupper($currentlanguage) . '" "'. $CFG->xml_dtd .'">'."\n"; - $direction = " xmlns=\"http://www.w3.org/1999/xhtml\" - xmlns:math=\"http://www.w3.org/1998/Math/MathML\" - xml:lang=\"en\" - xmlns:xlink=\"http://www.w3.org/1999/xlink\" - $direction"; - if($mathplayer) { - $meta .= '' . "\n"; - $meta .= ''."\n"; - $meta .= ''."\n"; - $meta .= '' . "\n"; + echo " plus $CFG->xml_doctype_extra"; } + echo "//" . strtoupper($currentlanguage) . "\" \"$CFG->xml_dtd\">\n"; + $direction = " xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"$currentlanguage\" $direction"; } - // Clean up the title - $title = str_replace('"', '"', $title); $title = strip_tags($title); - // Create class and id for this page - - page_id_and_class($pageid, $pageclass); - - if (isset($course->id)) { - $pageclass .= ' course-'.$course->id; - } else { - $pageclass .= ' course-'.SITEID; - } - - if (!empty($USER->editing)) { - $pageclass .= ' editing'; - } - - $bodytags .= ' class="'.$pageclass.'" id="'.$pageid.'"'; - - include ($CFG->themedir.current_theme().'/header.html'); - - if (!empty($CFG->messaging)) { - echo message_popup_window(); - } + include ("$CFG->dirroot/theme/$CFG->theme/header.html"); } -/** - * This version of print_header is simpler because the course name does not have to be - * provided explicitly in the strings. It can be used on the site page as in courses - * Eventually all print_header could be replaced by print_header_simple - * - * @param string $title Appears at the top of the window - * @param string $heading Appears at the top of the page - * @param string $navigation Premade navigation string (for use as breadcrumbs links) - * @param string $focus Indicates form element to get cursor focus on load eg inputform.password - * @param string $meta Meta tags to be added to the header - * @param boolean $cache Should this page be cacheable? - * @param string $button HTML code for a button (usually for module editing) - * @param string $menu HTML code for a popup menu - * @param boolean $usexml use XML for this page - * @param string $bodytags This text will be included verbatim in the tag (useful for onload() etc) - */ -function print_header_simple($title='', $heading='', $navigation='', $focus='', $meta='', - $cache=true, $button=' ', $menu='', $usexml=false, $bodytags='') { + +function print_header_simple($title="", $heading="", $navigation="", $focus="", $meta="", + $cache=true, $button=" ", $menu="", $usexml=false, $bodytags="") { +/// This version of print_header is simpler because the course name does not have to be +/// provided explicitly in the strings. It can be used on the site page as in courses +/// Eventually all print_header could be replaced by print_header_simple global $course; // The same hack is used in print_header $shortname =''; if ($course->category) { - $shortname = ''. $course->shortname .' ->'; + $shortname = "id\">$course->shortname ->"; } - print_header($course->shortname .': '. $title, $course->fullname .' '. $heading, $shortname .' '. $navigation, $focus, $meta, + print_header("$course->shortname: $title", "$course->fullname $heading", "$shortname $navigation", $focus, $meta, $cache, $button, $menu, $usexml, $bodytags); } -/** - * Can provide a course object to make the footer contain a link to - * to the course home page, otherwise the link will go to the site home - * - * @uses $CFG - * @uses $USER - * @param course $course {@link $COURSE} object containing course information - * @param ? $usercourse ? - * @todo Finish documenting this function - */ -function print_footer($course=NULL, $usercourse=NULL) { + +function print_footer ($course=NULL, $usercourse=NULL) { +// Can provide a course object to make the footer contain a link to +// to the course home page, otherwise the link will go to the site home global $USER, $CFG, $THEME; /// Course links if ($course) { - if ($course == 'none') { // Don't print any links etc - $homelink = ''; - $loggedinas = ''; - $home = false; - } else if ($course == 'home') { // special case for site home page - please do not remove + if ($course == "home") { // special case for site home page - please do not remove + $homelink = "

              release ($CFG->version)\" href=\"http://moodle.org/\" target=\"_blank\">"; + $homelink .= "

              "; $course = get_site(); - $homelink = ''; - $home = true; + $homepage = true; } else { - $homelink = ''; - $home = false; + $homelink = "framename}\" href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname"; } } else { - $course = get_site(); // Set course as site course by default - $homelink = ''; - $home = false; + $homelink = "framename}\" href=\"$CFG->wwwroot/\">".get_string("home").""; + $course = get_site(); } -/// Set up some other navigation links (passed from print_header by ugly hack) - $menu = isset($THEME->menu) ? str_replace('navmenu', 'navmenufooter', $THEME->menu) : ''; - $title = isset($THEME->title) ? $THEME->title : ''; - $button = isset($THEME->button) ? $THEME->button : ''; - $heading = isset($THEME->heading) ? $THEME->heading : ''; - $navigation = isset($THEME->navigation) ? $THEME->navigation : ''; - $navmenulist = isset($THEME->navmenulist) ? $THEME->navmenulist : ''; - - -/// Set the user link if necessary - if (!$usercourse and is_object($course)) { + if (!$usercourse) { $usercourse = $course; } - if (!isset($loggedinas)) { - $loggedinas = user_login_string($usercourse, $USER); - } - - if ($loggedinas == $menu) { - $menu = ''; - } - -/// Provide some performance info if required - $performanceinfo = ''; - if (defined('MDL_PERF') || $CFG->debug > 7) { - $perf = get_performance_info(); - if (defined('MDL_PERFTOLOG')) { - error_log("PERF: " . $perf['txt']); - } - if (defined('MDL_PERFTOFOOT') || $CFG->debug > 7) { - $performanceinfo = $perf['html']; - } - } - - -/// Include the actual footer file - - include ($CFG->themedir.current_theme().'/footer.html'); +/// User links + $loggedinas = user_login_string($usercourse, $USER); + include ("$CFG->dirroot/theme/$CFG->theme/footer.html"); } -/** - * Returns the name of the current theme - * - * @uses $CFG - * @param $USER - * @param $SESSION - * @return string - */ -function current_theme() { - global $CFG, $USER, $SESSION, $course; +function style_sheet_setup($lastmodified=0, $lifetime=300, $themename="") { +/// This function is called by stylesheets to set up the header +/// approriately as well as the current path -/// Logic for this will probably change to accomodate local theme rules. + global $CFG; - if (!empty($CFG->coursetheme) and !empty($CFG->allowcoursethemes)) { // Course theme can override all others - return $CFG->coursetheme; + header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); + header("Expires: " . gmdate("D, d M Y H:i:s", time() + $lifetime) . " GMT"); + header("Cache-control: max_age = $lifetime"); + header("Pragma: "); + header("Content-type: text/css"); // Correct MIME type - } else if (!empty($SESSION->theme)) { // Session theme can override other settings - return $SESSION->theme; - - } else if (!empty($USER->theme) and !empty($CFG->allowuserthemes)) { // User theme can override site theme - return $USER->theme; - - } else { - return $CFG->theme; - } -} - - -/** - * This function is called by stylesheets to set up the header - * approriately as well as the current path - * - * @uses $CFG - * @param int $lastmodified ? - * @param int $lifetime ? - * @param string $thename ? - */ -function style_sheet_setup($lastmodified=0, $lifetime=300, $themename='', $forceconfig='') { - - global $CFG, $THEME; - - header('Last-Modified: ' . gmdate("D, d M Y H:i:s", $lastmodified) . ' GMT'); - header('Expires: ' . gmdate("D, d M Y H:i:s", time() + $lifetime) . ' GMT'); - header('Cache-control: max_age = '. $lifetime); - header('Pragma: '); - header('Content-type: text/css'); // Correct MIME type - - $DEFAULT_SHEET_LIST = array('styles_layout', 'styles_fonts', 'styles_color'); - - if (empty($themename)) { - $themename = current_theme(); // So we have something. Normally not needed. + if (!empty($themename)) { + $CFG->theme = $themename; } - if (!empty($forceconfig)) { // Page wants to use the config from this theme instead - unset($THEME); - include($CFG->themedir.$forceconfig.'/'.'config.php'); - } - -/// If this is the standard theme calling us, then find out what sheets we need - - if ($themename == 'standard') { - if (!isset($THEME->standardsheets) or $THEME->standardsheets === true) { // Use all the sheets we have - $THEME->sheets = $DEFAULT_SHEET_LIST; - } else if (empty($THEME->standardsheets)) { // We can stop right now! - echo "/***** Nothing required from this stylesheet by main theme *****/\n\n"; - exit; - } else { // Use the provided subset only - $THEME->sheets = $THEME->standardsheets; - } - -/// If we are a parent theme, then check for parent definitions - - } else if (!empty($THEME->parent) && $themename == $THEME->parent) { - if (!isset($THEME->parentsheets) or $THEME->parentsheets === true) { // Use all the sheets we have - $THEME->sheets = $DEFAULT_SHEET_LIST; - } else if (empty($THEME->parentsheets)) { // We can stop right now! - echo "/***** Nothing required from this stylesheet by main theme *****/\n\n"; - exit; - } else { // Use the provided subset only - $THEME->sheets = $THEME->parentsheets; - } - } - -/// Work out the last modified date for this theme - - foreach ($THEME->sheets as $sheet) { - if (file_exists($CFG->themedir.$themename.'/'.$sheet.'.css')) { - $sheetmodified = filemtime($CFG->themedir.$themename.'/'.$sheet.'.css'); - if ($sheetmodified > $lastmodified) { - $lastmodified = $sheetmodified; - } - } - } - - -/// Get a list of all the files we want to include - $files = array(); - - foreach ($THEME->sheets as $sheet) { - $files[] = array($CFG->themedir, $themename.'/'.$sheet.'.css'); - } - - if ($themename == 'standard') { // Add any standard styles included in any modules - if (!empty($THEME->modsheets)) { // Search for styles.php within activity modules - if ($mods = get_list_of_plugins('mod')) { - foreach ($mods as $mod) { - if (file_exists($CFG->dirroot.'/mod/'.$mod.'/styles.php')) { - $files[] = array($CFG->dirroot, '/mod/'.$mod.'/styles.php'); - } - } - } - } - - if (!empty($THEME->blocksheets)) { // Search for styles.php within block modules - if ($mods = get_list_of_plugins('blocks')) { - foreach ($mods as $mod) { - if (file_exists($CFG->dirroot.'/blocks/'.$mod.'/styles.php')) { - $files[] = array($CFG->dirroot, '/blocks/'.$mod.'/styles.php'); - } - } - } - } - - if (!empty($THEME->langsheets)) { // Search for styles.php within the current language - $lang = current_language(); - if (file_exists($CFG->dirroot.'/lang/'.$lang.'/styles.php')) { - $files[] = array($CFG->dirroot, '/lang/'.$lang.'/styles.php'); - } - } - } - - - if ($files) { - /// Produce a list of all the files first - echo '/**************************************'."\n"; - echo ' * THEME NAME: '.$themename."\n *\n"; - echo ' * Files included in this sheet:'."\n *\n"; - foreach ($files as $file) { - echo ' * '.$file[1]."\n"; - } - echo ' **************************************/'."\n\n"; - - - /// Actually output all the files in order. - foreach ($files as $file) { - echo '/***** '.$file[1].' start *****/'."\n\n"; - @include_once($file[0].$file[1]); - echo '/***** '.$file[1].' end *****/'."\n\n"; - } - } - - return $CFG->themewww.$themename; // Only to help old themes (1.4 and earlier) -} - - -function theme_setup($theme = '', $params=NULL) { -/// Sets up global variables related to themes - - global $CFG, $THEME, $SESSION, $USER; - - if (empty($theme)) { - $theme = current_theme(); - } - -/// Put together the parameters - if (!$params) { - $params = array(); - } - if ($theme != $CFG->theme) { - $params[] = 'forceconfig='.$theme; - } - if ($params) { - $paramstring = '?'.implode('&', $params); - } else { - $paramstring = ''; - } - -/// Load up the theme config - $THEME = NULL; // Just to be sure - include($CFG->themedir. $theme .'/config.php'); // Main config for current theme - -/// Set up image paths - if (empty($CFG->custompix)) { // Could be set in the above file - $CFG->pixpath = $CFG->wwwroot .'/pix'; - $CFG->modpixpath = $CFG->wwwroot .'/mod'; - } else { - $CFG->pixpath = $CFG->themewww . $theme .'/pix'; - $CFG->modpixpath = $CFG->themewww . $theme .'/pix/mod'; - } - -/// Header and footer paths - $CFG->header = $CFG->themedir . $theme .'/header.html'; - $CFG->footer = $CFG->themedir . $theme .'/footer.html'; - -/// Define stylesheet loading order - $CFG->stylesheets = array(); - if ($theme != 'standard') { /// The standard sheet is always loaded first - $CFG->stylesheets[] = $CFG->themewww.'standard/styles.php'.$paramstring; - } - if (!empty($THEME->parent)) { /// Parent stylesheets are loaded next - $CFG->stylesheets[] = $CFG->themewww.$THEME->parent.'/styles.php'.$paramstring; - } - $CFG->stylesheets[] = $CFG->themewww.$theme.'/styles.php'.$paramstring; + return "$CFG->wwwroot/theme/$CFG->theme"; } -/** - * Returns text to be displayed to the user which reflects their login status - * - * @uses $CFG - * @uses $USER - * @param course $course {@link $COURSE} object containing course information - * @param user $user {@link $USER} object containing user information - * @return string - */ -function user_login_string($course=NULL, $user=NULL) { - global $USER, $CFG, $SITE; +function user_login_string($course, $user=NULL) { + global $USER, $CFG; - if (empty($user) and isset($USER->id)) { + if (empty($user)) { $user = $USER; } - if (empty($course)) { - $course = $SITE; - } - if (isset($user->realuser)) { - if ($realuser = get_record('user', 'id', $user->realuser)) { + if ($realuser = get_record("user", "id", $user->realuser)) { $fullname = fullname($realuser, true); $realuserinfo = " [framename}\" href=\"$CFG->wwwroot/course/loginas.php?id=$course->id&return=$realuser->id\">$fullname] "; } } else { - $realuserinfo = ''; + $realuserinfo = ""; } if (empty($CFG->loginhttps)) { @@ -2102,282 +1251,162 @@ function user_login_string($course=NULL, $user=NULL) { $fullname = fullname($user, true); $username = "framename}\" href=\"$CFG->wwwroot/user/view.php?id=$user->id&course=$course->id\">$fullname"; if (isguest($user->id)) { - $loggedinas = $realuserinfo.get_string('loggedinas', 'moodle', $username). - " (framename}\" href=\"$wwwroot/login/index.php\">".get_string('login').')'; + $loggedinas = $realuserinfo.get_string("loggedinas", "moodle", "$username"). + " (framename}\" href=\"$wwwroot/login/index.php\">".get_string("login").")"; } else { - $loggedinas = $realuserinfo.get_string('loggedinas', 'moodle', $username). - " (framename}\" href=\"$CFG->wwwroot/login/logout.php\">".get_string('logout').')'; + $loggedinas = $realuserinfo.get_string("loggedinas", "moodle", "$username"). + " (framename}\" href=\"$CFG->wwwroot/login/logout.php\">".get_string("logout").")"; } } else { - $loggedinas = get_string('loggedinnot', 'moodle'). - " (framename}\" href=\"$wwwroot/login/index.php\">".get_string('login').')'; + $loggedinas = get_string("loggedinnot", "moodle"). + " (framename}\" href=\"$wwwroot/login/index.php\">".get_string("login").")"; } - return '
              '.$loggedinas.'
              '; + return $loggedinas; } -/** - * Prints breadcrumbs links - * - * @uses $CFG - * @param string $navigation The breadcrumbs string to be printed - */ + function print_navigation ($navigation) { global $CFG; if ($navigation) { if (! $site = get_site()) { - $site->shortname = get_string('home');; + $site->shortname = get_string("home");; } $navigation = str_replace('->', '»', $navigation); - echo ''. $site->shortname .' » '. $navigation; + echo "framename}\" href=\"$CFG->wwwroot/\">$site->shortname » $navigation"; } } -/** - * Prints a string in a specified size (retained for backward compatibility) - * - * @param string $text The text to be displayed - * @param int $size The size to set the font for text display. - */ function print_headline($text, $size=2) { - print_heading($text, 'left', $size); + echo "$text
              \n"; } -/** - * Prints text in a format for use in headings. - * - * @param string $text The text to be displayed - * @param string $align The alignment of the printed paragraph of text - * @param int $size The size to set the font for text display. - */ -function print_heading($text, $align='', $size=2, $class='main') { - if ($align) { - $align = ' align="'.$align.'"'; - } - if ($class) { - $class = ' class="'.$class.'"'; - } - echo "".stripslashes_safe($text).""; +function print_heading($text, $align="center", $size=3) { + echo "

              ".stripslashes_safe($text)."

              "; } -/** - * Centered heading with attached help button (same title text) - * and optional icon attached - * - * @param string $text The text to be displayed - * @param string $helppage The help page to link to - * @param string $module The module whose help should be linked to - * @param string $icon Image to display if needed - */ -function print_heading_with_help($text, $helppage, $module='moodle', $icon='') { - echo '

              '.$icon.stripslashes_safe($text); +function print_heading_with_help($text, $helppage, $module="moodle", $icon="") { +// Centered heading with attached help button (same title text) +// and optional icon attached + echo "

              $icon".stripslashes_safe($text); helpbutton($helppage, $text, $module); - echo '

              '; + echo "

              "; } - -function print_heading_block($heading, $class='') { - echo '
              '.stripslashes($heading).'
              '; -} - - -/** - * Print a link to continue on to another page. - * - * @uses $CFG - * @param string $link The url to create a link to. - */ function print_continue($link) { global $CFG; if (!$link) { - $link = $_SERVER['HTTP_REFERER']; + $link = $_SERVER["HTTP_REFERER"]; } - echo '
              '; - print_single_button($link, NULL, get_string('continue'), 'post', $CFG->framename); - echo '
              '."\n"; + print_heading("framename}\" href=\"$link\">".get_string("continue").""); } -/** - * Print a message in a standard themed box. - * - * @param string $message ? - * @param string $align ? - * @param string $width ? - * @param string $color ? - * @param int $padding ? - * @param string $class ? - * @todo Finish documenting this function - */ -function print_simple_box($message, $align='', $width='', $color='', $padding=5, $class='generalbox', $id='') { - print_simple_box_start($align, $width, $color, $padding, $class, $id); + +function print_simple_box($message, $align="", $width="", $color="#FFFFFF", $padding=5, $class="generalbox") { + print_simple_box_start($align, $width, $color, $padding, $class); echo stripslashes_safe($message); print_simple_box_end(); } -/** - * Print the top portion of a standard themed box. - * - * @param string $align ? - * @param string $width ? - * @param string $color ? - * @param int $padding ? - * @param string $class ? - * @todo Finish documenting this function - */ -function print_simple_box_start($align='', $width='', $color='', $padding=5, $class='generalbox', $id='') { +function print_simple_box_start($align="", $width="", $color="#FFFFFF", $padding=5, $class="generalbox") { + global $THEME; - if ($color) { - $color = 'bgcolor="'. $color .'"'; - } if ($align) { - $align = 'align="'. $align .'"'; + $align = "align=\"$align\""; } if ($width) { - $width = 'width="'. $width .'"'; + $width = "width=\"$width\""; } - if ($id) { - $id = 'id="'. $id .'"'; - } - echo "". - "
              "; + echo "
              "; } -/** - * Print the end portion of a standard themed box. - */ function print_simple_box_end() { - echo '
              '; + echo "
              "; } -/** - * Print a self contained form with a single submit button. - * - * @param string $link ? - * @param array $options ? - * @param string $label ? - * @param string $method ? - * @todo Finish documenting this function - */ -function print_single_button($link, $options, $label='OK', $method='get', $target='_self') { - echo '
              '; - echo '
              '; +function print_single_button($link, $options, $label="OK", $method="get") { + echo ""; if ($options) { foreach ($options as $name => $value) { - echo ''; + echo ""; } } - echo '
              '; + echo ""; } -/** - * Print a spacer image with the option of including a line break. - * - * @param int $height ? - * @param int $width ? - * @param boolean $br ? - * @todo Finish documenting this function - */ function print_spacer($height=1, $width=1, $br=true) { global $CFG; - echo ''; + echo "wwwroot/pix/spacer.gif\" alt=\"\" />"; if ($br) { - echo '
              '."\n"; + echo "
              \n"; } } -/** - * Given the path to a picture file in a course, or a URL, - * this function includes the picture in the page. - * - * @param string $path ? - * @param int $courseid ? - * @param int $height ? - * @param int $width ? - * @param string $link ? - * @todo Finish documenting this function - */ -function print_file_picture($path, $courseid=0, $height='', $width='', $link='') { +function print_file_picture($path, $courseid=0, $height="", $width="", $link="") { +// Given the path to a picture file in a course, or a URL, +// this function includes the picture in the page. global $CFG; if ($height) { - $height = 'height="'. $height .'"'; + $height = "height=\"$height\""; } if ($width) { - $width = 'width="'. $width .'"'; + $width = "width=\"$width\""; } if ($link) { - echo ''; + echo ""; } - if (substr(strtolower($path), 0, 7) == 'http://') { - echo ''; + if (substr(strtolower($path), 0, 7) == "http://") { + echo ""; } else if ($courseid) { - echo 'slasharguments) { // Use this method if possible for better caching - echo $CFG->wwwroot .'/file.php/'. $courseid .'/'. $path; + echo "$CFG->wwwroot/file.php/$courseid/$path"; } else { - echo $CFG->wwwroot .'/file.php?file=/'. $courseid .'/'. $path; + echo "$CFG->wwwroot/file.php?file=/$courseid/$path"; } - echo '" />'; + echo "\" />"; } else { - echo 'Error: must pass URL or course'; + echo "Error: must pass URL or course"; } if ($link) { - echo ''; + echo ""; } } -/** - * Print the specified user's avatar. - * - * @param int $userid ? - * @param int $courseid ? - * @param boolean $picture Print the user picture? - * @param int $size Size in pixels. Special values are (true/1 = 100px) and (false/0 = 35px) for backward compatability - * @param boolean $returnstring If false print picture to current page, otherwise return the output as string - * @param boolean $link Enclose printed image in a link to view specified course? - * return string - * @todo Finish documenting this function - */ -function print_user_picture($userid, $courseid, $picture, $size=0, $returnstring=false, $link=true, $target='') { +function print_user_picture($userid, $courseid, $picture, $large=false, $returnstring=false, $link=true) { global $CFG; if ($link) { - if ($target) { - $target=' target="_blank"'; - } - $output = ''; + $output = "wwwroot/user/view.php?id=$userid&course=$courseid\">"; } else { - $output = ''; + $output = ""; } - if (empty($size)) { - $file = 'f2'; - $size = 35; - } else if ($size === true or $size == 1) { - $file = 'f1'; + if ($large) { + $file = "f1"; $size = 100; - } else if ($size >= 50) { - $file = 'f1'; } else { - $file = 'f2'; + $file = "f2"; + $size = 35; } if ($picture) { // Print custom user picture if ($CFG->slasharguments) { // Use this method if possible for better caching - $output .= ''; + $output .= "wwwroot/user/pix.php/$userid/$file.jpg\"". + " border=\"0\" width=\"$size\" height=\"$size\" alt=\"\" />"; } else { - $output .= ''; + $output .= "wwwroot/user/pix.php?file=/$userid/$file.jpg\"". + " border=\"0\" width=\"$size\" height=\"$size\" alt=\"\" />"; } } else { // Print default user pictures (use theme version if available) - $output .= "pixpath/u/$file.png\"". + $output .= "pixpath/u/$file.png\"". " border=\"0\" width=\"$size\" height=\"$size\" alt=\"\" />"; } if ($link) { - $output .= ''; + $output .= ""; } if ($returnstring) { @@ -2387,68 +1416,60 @@ function print_user_picture($userid, $courseid, $picture, $size=0, $returnstring } } -/** - * Prints a summary of a user in a nice little box. - * - * @uses $CFG - * @uses $USER - * @param user $user A {@link $USER} object representing a user - * @param course $course A {@link $COURSE} object representing a course - */ function print_user($user, $course) { +/// Prints a summary of a user in a nice little box - global $CFG, $USER; + global $CFG,$USER; static $string; static $datestring; static $countries; static $isteacher; - static $isadmin; if (empty($string)) { // Cache all the strings for the rest of the page - $string->email = get_string('email'); - $string->location = get_string('location'); - $string->lastaccess = get_string('lastaccess'); - $string->activity = get_string('activity'); - $string->unenrol = get_string('unenrol'); - $string->loginas = get_string('loginas'); - $string->fullprofile = get_string('fullprofile'); - $string->role = get_string('role'); - $string->name = get_string('name'); - $string->never = get_string('never'); + $string->email = get_string("email"); + $string->location = get_string("location"); + $string->lastaccess = get_string("lastaccess"); + $string->activity = get_string("activity"); + $string->unenrol = get_string("unenrol"); + $string->loginas = get_string("loginas"); + $string->fullprofile = get_string("fullprofile"); + $string->role = get_string("role"); + $string->name = get_string("name"); + $string->never = get_string("never"); - $datestring->day = get_string('day'); - $datestring->days = get_string('days'); - $datestring->hour = get_string('hour'); - $datestring->hours = get_string('hours'); - $datestring->min = get_string('min'); - $datestring->mins = get_string('mins'); - $datestring->sec = get_string('sec'); - $datestring->secs = get_string('secs'); + $datestring->day = get_string("day"); + $datestring->days = get_string("days"); + $datestring->hour = get_string("hour"); + $datestring->hours = get_string("hours"); + $datestring->min = get_string("min"); + $datestring->mins = get_string("mins"); + $datestring->sec = get_string("sec"); + $datestring->secs = get_string("secs"); $countries = get_list_of_countries(); $isteacher = isteacher($course->id); - $isadmin = isadmin(); } - echo ''; + echo '
              '; echo ''; - echo ''; - echo '
              '; + echo ''; print_user_picture($user->id, $course->id, $user->picture, true); echo ''; - echo '
              '.fullname($user, $isteacher).'
              '; - echo '
              '; + echo '
              '; + echo ''; + echo ''.fullname($user, $isteacher).''; + echo '

              '; if (!empty($user->role) and ($user->role <> $course->teacher)) { - echo $string->role .': '. $user->role .'
              '; + echo "$string->role: $user->role
              "; } if ($user->maildisplay == 1 or ($user->maildisplay == 2 and $course->category and !isguest()) or $isteacher) { - echo $string->email .': '. $user->email .'
              '; + echo "$string->email: email\">$user->email
              "; } if ($user->city or $user->country) { - echo $string->location .': '; + echo "$string->location: "; if ($user->city) { echo $user->city; } @@ -2458,44 +1479,36 @@ function print_user($user, $course) { } echo $countries[$user->country]; } - echo '
              '; + echo "
              "; } if ($user->lastaccess) { - echo $string->lastaccess .': '. userdate($user->lastaccess); - echo '  ('. format_time(time() - $user->lastaccess, $datestring) .')'; + echo "$string->lastaccess: ".userdate($user->lastaccess); + echo "  (".format_time(time() - $user->lastaccess, $datestring).")"; } else { - echo $string->lastaccess .': '. $string->never; + echo "$string->lastaccess: $string->never"; } - echo '

              '; + echo ''; if ($isteacher) { $timemidnight = usergetmidnight(time()); - echo ''. $string->activity .'
              '; - if (!iscreator($user->id) or ($isadmin and !isadmin($user->id))) { // Includes admins + echo "wwwroot/course/user.php?id=$course->id&user=$user->id\">$string->activity
              "; + if (!iscreator($user->id)) { // Includes admins if ($course->category and isteacheredit($course->id) and isstudent($course->id, $user->id)) { // Includes admins - echo ''. $string->unenrol .'
              '; + echo "wwwroot/course/unenrol.php?id=$course->id&user=$user->id\">$string->unenrol
              "; } if ($USER->id != $user->id) { - echo ''. $string->loginas .'
              '; + echo "wwwroot/course/loginas.php?id=$course->id&user=$user->id\">$string->loginas
              "; } } } - echo ''. $string->fullprofile .'...'; + echo "wwwroot/user/view.php?id=$user->id&course=$course->id\">$string->fullprofile..."; + echo '
              '; echo '
              '; } -/** - * Print a specified group's avatar. - * - * @param group $group A {@link group} object representing a group - * @param int $courseid ? - * @param boolean $large ? - * @param boolean $returnstring ? - * @param boolean $link ? - * @return string - * @todo Finish documenting this function - */ + function print_group_picture($group, $courseid, $large=false, $returnstring=false, $link=true) { global $CFG; @@ -2510,28 +1523,28 @@ function print_group_picture($group, $courseid, $large=false, $returnstring=fals } if ($link or $isteacheredit) { - $output = ''; + $output = "wwwroot/course/group.php?id=$courseid&group=$group->id\">"; } else { $output = ''; } if ($large) { - $file = 'f1'; + $file = "f1"; $size = 100; } else { - $file = 'f2'; + $file = "f2"; $size = 35; } if ($group->picture) { // Print custom group picture if ($CFG->slasharguments) { // Use this method if possible for better caching - $output .= ''; + $output .= "wwwroot/user/pixgroup.php/$group->id/$file.jpg\"". + " border=\"0\" width=\"$size\" height=\"$size\" alt=\"\" title=\"$group->name\"/>"; } else { - $output .= ''; + $output .= "wwwroot/user/pixgroup.php?file=/$group->id/$file.jpg\"". + " border=\"0\" width=\"$size\" height=\"$size\" alt=\"\" title=\"$group->name\"/>"; } } if ($link or $isteacheredit) { - $output .= ''; + $output .= ""; } if ($returnstring) { @@ -2541,16 +1554,7 @@ function print_group_picture($group, $courseid, $large=false, $returnstring=fals } } -/** - * Print a png image. - * - * @param string $url ? - * @param int $sizex ? - * @param int $sizey ? - * @param boolean $returnstring ? - * @param string $parameters ? - * @todo Finish documenting this function - */ + function print_png($url, $sizex, $sizey, $returnstring, $parameters='alt=""') { global $CFG; static $recentIE; @@ -2560,14 +1564,13 @@ function print_png($url, $sizex, $sizey, $returnstring, $parameters='alt=""') { } if ($recentIE) { // work around the HORRIBLE bug IE has with alpha transparencies - $output .= ''; + $output .= "pixpath/spacer.gif\" width=\"$sizex\" height=\"$sizey\"". + " border=\"0\" style=\"width: {$sizex}px; height: {$sizey}px; ". + " filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='$url', sizingMethod='scale') ". + " $parameters />"; } else { - $output .= ''; + $output .= ""; } if ($returnstring) { @@ -2577,276 +1580,224 @@ function print_png($url, $sizex, $sizey, $returnstring, $parameters='alt=""') { } } -/** - * Print a nicely formatted table. - * - * @param array $table is an object with several properties. - * $table->head - An array of heading names. - *
            • $table->align - An array of column alignments - *
            • $table->size - An array of column sizes - *
            • $table->wrap - An array of "nowrap"s or nothing - *
            • $table->data[] - An array of arrays containing the data. - *
            • $table->width - A percentage of the page - *
            • $table->cellpadding - Padding on each cell - *
            • $table->cellspacing - Spacing between cells - *
            - * @return boolean - * @todo Finish documenting this function - */ + function print_table($table) { +// Prints a nicely formatted table. +// $table is an object with several properties. +// $table->head is an array of heading names. +// $table->align is an array of column alignments +// $table->size is an array of column sizes +// $table->wrap is an array of "nowrap"s or nothing +// $table->data[] is an array of arrays containing the data. +// $table->width is an percentage of the page +// $table->cellpadding padding on each cell +// $table->cellspacing spacing between cells + + global $THEME; if (isset($table->align)) { foreach ($table->align as $key => $aa) { if ($aa) { - $align[$key] = ' align="'. $aa .'"'; + $align[$key] = " align=\"$aa\""; } else { - $align[$key] = ''; + $align[$key] = ""; } } } if (isset($table->size)) { foreach ($table->size as $key => $ss) { if ($ss) { - $size[$key] = ' width="'. $ss .'"'; + $size[$key] = " width=\"$ss\""; } else { - $size[$key] = ''; + $size[$key] = ""; } } } if (isset($table->wrap)) { foreach ($table->wrap as $key => $ww) { if ($ww) { - $wrap[$key] = ' nowrap="nowrap" '; + $wrap[$key] = " nowrap=\"nowrap\" "; } else { - $wrap[$key] = ''; + $wrap[$key] = ""; } } } if (empty($table->width)) { - $table->width = '80%'; + $table->width = "80%"; } if (empty($table->cellpadding)) { - $table->cellpadding = '5'; + $table->cellpadding = "5"; } if (empty($table->cellspacing)) { - $table->cellspacing = '1'; + $table->cellspacing = "1"; } - if (empty($table->class)) { - $table->class = 'generaltable'; - } - - $tableid = empty($table->id) ? '' : 'id="'.$table->id.'"'; - - print_simple_box_start('center', $table->width, '#ffffff', 0); - echo 'cellpadding\" cellspacing=\"$table->cellspacing\" class=\"$table->class\" $tableid>\n"; + print_simple_box_start("center", "$table->width", "#ffffff", 0); + echo "
            cellpadding\" cellspacing=\"$table->cellspacing\" class=\"generaltable\">\n"; $countcols = 0; if (!empty($table->head)) { $countcols = count($table->head);; - echo ''; + echo ""; foreach ($table->head as $key => $heading) { if (!isset($size[$key])) { - $size[$key] = ''; + $size[$key] = ""; } if (!isset($align[$key])) { - $align[$key] = ''; + $align[$key] = ""; } - echo ''; + echo ""; } - echo ''."\n"; + echo "\n"; } if (!empty($table->data)) { - $oddeven = 1; - foreach ($table->data as $key => $row) { - $oddeven = $oddeven ? 0 : 1; - echo ''."\n"; - if ($row == 'hr' and $countcols) { - echo ''; + foreach ($table->data as $row) { + echo ""; + if ($row == "hr" and $countcols) { + echo ""; } else { /// it's a normal row of data foreach ($row as $key => $item) { if (!isset($size[$key])) { - $size[$key] = ''; + $size[$key] = ""; } if (!isset($align[$key])) { - $align[$key] = ''; + $align[$key] = ""; } if (!isset($wrap[$key])) { - $wrap[$key] = ''; + $wrap[$key] = ""; } - echo ''; + echo ""; } } - echo ''."\n"; + echo "\n"; } } - echo '
            '. $heading .'$heading
            '. $item .'$item
            '."\n"; + echo "\n"; print_simple_box_end(); return true; } -/** - * Creates a nicely formatted table and returns it. - * - * @param array $table is an object with several properties. - * $table->head - An array of heading names. - *
          • $table->align - An array of column alignments - *
          • $table->size - An array of column sizes - *
          • $table->wrap - An array of "nowrap"s or nothing - *
          • $table->data[] - An array of arrays containing the data. - *
          • $table->class - A css class name - *
          • $table->fontsize - Is the size of all the text - *
          • $table->tablealign - Align the whole table - *
          • $table->width - A percentage of the page - *
          • $table->cellpadding - Padding on each cell - *
          • $table->cellspacing - Spacing between cells - *
          - * @return string - * @todo Finish documenting this function - */ function make_table($table) { +// Creates a nicely formatted table and returns it +// $table is an object with several properties. +// $table->head is an array of heading names. +// $table->align is an array of column alignments +// $table->size is an array of column sizes +// $table->wrap is an array of "nowrap"s or nothing +// $table->data[] is an array of arrays containing the data. +// $table->width is an percentage of the page +// $table->class is a class +// $table->fontsize is the size of all the text +// $table->tablealign align the whole table +// $table->cellpadding padding on each cell +// $table->cellspacing spacing between cells if (isset($table->align)) { foreach ($table->align as $key => $aa) { if ($aa) { - $align[$key] = ' align="'. $aa .'"'; + $align[$key] = " align=\"$aa\""; } else { - $align[$key] = ''; + $align[$key] = ""; } } } if (isset($table->size)) { foreach ($table->size as $key => $ss) { if ($ss) { - $size[$key] = ' width="'. $ss .'"'; + $size[$key] = " width=\"$ss\""; } else { - $size[$key] = ''; + $size[$key] = ""; } } } if (isset($table->wrap)) { foreach ($table->wrap as $key => $ww) { if ($ww) { - $wrap[$key] = ' nowrap="nowrap" '; + $wrap[$key] = " nowrap=\"nowrap\" "; } else { - $wrap[$key] = ''; + $wrap[$key] = ""; } } } if (empty($table->width)) { - $table->width = '80%'; + $table->width = "80%"; } if (empty($table->tablealign)) { - $table->tablealign = 'center'; + $table->tablealign = "center"; } if (empty($table->cellpadding)) { - $table->cellpadding = '5'; + $table->cellpadding = "5"; } if (empty($table->cellspacing)) { - $table->cellspacing = '1'; + $table->cellspacing = "1"; } if (empty($table->class)) { - $table->class = 'generaltable'; + $table->class = "generaltable"; } if (empty($table->fontsize)) { - $fontsize = ''; + $fontsize = ""; } else { - $fontsize = ''; + $fontsize = "fontsize\">"; } - $output = 'cellpadding .'" cellspacing="'. $table->cellspacing .'" class="'. $table->class .'">'."\n"; + $output = "
          width\" valign=\"top\" align=\"$table->tablealign\" "; + $output .= " cellpadding=\"$table->cellpadding\" cellspacing=\"$table->cellspacing\" class=\"$table->class\">\n"; if (!empty($table->head)) { - $output .= ''; + $output .= ""; foreach ($table->head as $key => $heading) { if (!isset($size[$key])) { - $size[$key] = ''; + $size[$key] = ""; } if (!isset($align[$key])) { - $align[$key] = ''; + $align[$key] = ""; } - $output .= ''; + $output .= ""; } - $output .= ''."\n"; + $output .= "\n"; } foreach ($table->data as $row) { - $output .= ''; + $output .= ""; foreach ($row as $key => $item) { if (!isset($size[$key])) { - $size[$key] = ''; + $size[$key] = ""; } if (!isset($align[$key])) { - $align[$key] = ''; + $align[$key] = ""; } if (!isset($wrap[$key])) { - $wrap[$key] = ''; + $wrap[$key] = ""; } - $output .= ''; + $output .= ""; } - $output .= ''."\n"; + $output .= "\n"; } - $output .= '
          '.$fontsize.$heading.'class}header\">$fontsize$heading
          '. $fontsize . $item .'class}cell\">$fontsize$item
          '."\n"; + $output .= "\n"; return $output; } -function print_recent_activity_note($time, $user, $isteacher, $text, $link) { - static $strftimerecent; - - if (empty($strftimerecent)) { - $strftimerecent = get_string('strftimerecent'); - } - - $date = userdate($time, $strftimerecent); - $name = fullname($user, $isteacher); - - echo '
          '; - echo ''.$date.' - '. - ''.fullname($user, $isteacher).''; - echo '
          '; - echo ''; -} - - -/** - * Prints a basic textarea field. - * - * @uses $CFG - * @param boolean $usehtmleditor ? - * @param int $rows ? - * @param int $cols ? - * @param null $width Legacy field no longer used! Set to zero to get control over mincols - * @param null $height Legacy field no longer used! Set to zero to get control over minrows - * @param string $name ? - * @param string $value ? - * @param int $courseid ? - * @todo Finish documenting this function - */ -function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $value='', $courseid=0) { -/// $width and height are legacy fields and no longer used as pixels like they used to be. -/// However, you can set them to zero to override the mincols and minrows values below. +function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $value="", $courseid=0) { +/// Prints a basic textarea field +/// $width and height are legacy fields and no longer used global $CFG, $course; - $mincols = 65; - $minrows = 10; - if (empty($courseid)) { if (!empty($course->id)) { // search for it in global context $courseid = $course->id; @@ -2855,84 +1806,62 @@ function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $v if ($usehtmleditor) { if (!empty($courseid) and isteacher($courseid)) { - echo ''."\n"; + echo "\n"; } else { - echo ''."\n"; + echo "\n"; } - echo ''."\n"; - echo ''."\n"; - echo ''."\n"; + echo "\n"; + echo "\n"; + echo "\n"; - if ($height) { // Usually with legacy calls - if ($rows < $minrows) { - $rows = $minrows; - } + if ($rows < 10) { + $rows = 10; } - if ($width) { // Usually with legacy calls - if ($cols < $mincols) { - $cols = $mincols; - } + if ($cols < 65) { + $cols = 65; } } - echo ''."\n"; + echo "\n"; } -/** - * Legacy function, provided for backward compatability. - * This method now simply calls {@link use_html_editor()} - * - * @deprecated Use {@link use_html_editor()} instead. - * @param string $name Form element to replace with HTMl editor by name - * @todo Finish documenting this function - */ -function print_richedit_javascript($form, $name, $source='no') { +function print_richedit_javascript($form, $name, $source="no") { +/// Legacy function, provided for backward compatability use_html_editor($name); } -/** - * Sets up the HTML editor on textareas in the current page. - * If a field name is provided, then it will only be - * applied to that field - otherwise it will be used - * on every textarea in the page. - * - * In most cases no arguments need to be supplied - * - * @param string $name Form element to replace with HTMl editor by name - */ -function use_html_editor($name='', $editorhidebuttons='') { - echo ''."\n"; + echo "\n"; } -/** - * Returns a turn edit on/off button for course in a self contained form. - * Used to be an icon, but it's now a simple form button - * - * @uses $CFG - * @uses $USER - * @param int $courseid The course to update by id as found in 'course' table - * @return string - */ -function update_course_icon($courseid) { +function update_course_icon($courseid) { +// Used to be an icon, but it's now a simple form button global $CFG, $USER; if (isteacheredit($courseid)) { if (!empty($USER->editing)) { - $string = get_string('turneditingoff'); - $edit = 'off'; + $string = get_string("turneditingoff"); + $edit = "off"; } else { - $string = get_string('turneditingon'); - $edit = 'on'; + $string = get_string("turneditingon"); + $edit = "on"; } return "
          framename\" method=\"get\" action=\"$CFG->wwwroot/course/view.php\">". "". @@ -2941,122 +1870,83 @@ function update_course_icon($courseid) { } } -/** - * Prints the editing button on a module "view" page - * - * @uses $CFG - * @param type description - * @todo Finish documenting this function - */ function update_module_button($moduleid, $courseid, $string) { - global $CFG, $USER; +// Prints the editing button on a module "view" page + global $CFG; if (isteacheredit($courseid)) { - $string = get_string('updatethis', '', $string); + $string = get_string("updatethis", "", $string); return "framename\" method=\"get\" action=\"$CFG->wwwroot/course/mod.php\">". "". "". - "". "
          "; } else { - return ''; + return ""; } } -/** - * Prints the editing button on a category page - * - * @uses $CFG - * @uses $USER - * @param int $categoryid ? - * @return string - * @todo Finish documenting this function - */ function update_category_button($categoryid) { +// Prints the editing button on a category page global $CFG, $USER; if (iscreator()) { if (!empty($USER->categoryediting)) { - $string = get_string('turneditingoff'); - $edit = 'off'; + $string = get_string("turneditingoff"); + $edit = "off"; } else { - $string = get_string('turneditingon'); - $edit = 'on'; + $string = get_string("turneditingon"); + $edit = "on"; } return "
          framename\" method=\"get\" action=\"$CFG->wwwroot/course/category.php\">". "". "". - "sesskey\" />". "
          "; } } -/** - * Prints the editing button on categories listing - * - * @uses $CFG - * @uses $USER - * @return string - */ function update_categories_button() { +// Prints the editing button on categories listing global $CFG, $USER; if (isadmin()) { if (!empty($USER->categoriesediting)) { - $string = get_string('turneditingoff'); - $edit = 'off'; + $string = get_string("turneditingoff"); + $edit = "off"; } else { - $string = get_string('turneditingon'); - $edit = 'on'; + $string = get_string("turneditingon"); + $edit = "on"; } return "
          framename\" method=\"get\" action=\"$CFG->wwwroot/course/index.php\">". - ''. - ''. - '
          '; + "". + ""; } } -/** - * Prints the editing button on group page - * - * @uses $CFG - * @uses $USER - * @param int $courseid The course group is associated with - * @param int $groupid The group to update - * @return string - */ function update_group_button($courseid, $groupid) { +// Prints the editing button on group page global $CFG, $USER; if (isteacheredit($courseid)) { $string = get_string('editgroupprofile'); return "
          framename\" method=\"get\" action=\"$CFG->wwwroot/course/group.php\">". - ''. - ''. - ''. - '
          '; + "". + "". + "". + ""; } } -/** - * Prints the editing button on groups page - * - * @uses $CFG - * @uses $USER - * @param int $courseid The id of the course to be edited - * @return string - * @todo Finish documenting this function - */ function update_groups_button($courseid) { +// Prints the editing button on groups page global $CFG, $USER; if (isteacheredit($courseid)) { if (!empty($USER->groupsediting)) { - $string = get_string('turneditingoff'); - $edit = 'off'; + $string = get_string("turneditingoff"); + $edit = "off"; } else { - $string = get_string('turneditingon'); - $edit = 'on'; + $string = get_string("turneditingon"); + $edit = "on"; } return "
          framename\" method=\"get\" action=\"$CFG->wwwroot/course/groups.php\">". "". @@ -3065,20 +1955,11 @@ function update_groups_button($courseid) { } } -/** - * Prints an appropriate group selection menu - * - * @uses VISIBLEGROUPS - * @param array $groups ? - * @param int $groupmode ? - * @param string $currentgroup ? - * @param string $urlroot ? - * @todo Finish documenting this function - */ function print_group_menu($groups, $groupmode, $currentgroup, $urlroot) { +/// Prints an appropriate group selection menu /// Add an "All groups" to the start of the menu - $groupsmenu[0] = get_string('allparticipants'); + $groupsmenu[0] = get_string("allparticipants"); foreach ($groups as $key => $groupname) { $groupsmenu[$key] = $groupname; } @@ -3091,52 +1972,38 @@ function print_group_menu($groups, $groupmode, $currentgroup, $urlroot) { } echo ':'; echo ''; - popup_form($urlroot.'&group=', $groupsmenu, 'selectgroup', $currentgroup, '', '', '', false, 'self'); - echo ''; + popup_form($urlroot.'&group=', $groupsmenu, 'selectgroup', $currentgroup, "", "", "", false, "self"); + echo ''; } -/** - * Given a course and a (current) coursemodule - * This function returns a small popup menu with all the - * course activity modules in it, as a navigation menu - * The data is taken from the serialised array stored in - * the course record - * - * @param course $course A {@link $COURSE} object. - * @param course $cm A {@link $COURSE} object. - * @param string $targetwindow ? - * @return string - * @todo Finish documenting this function - */ -function navmenu($course, $cm=NULL, $targetwindow='self') { - global $CFG, $THEME; +function navmenu($course, $cm=NULL, $targetwindow="self") { +// Given a course and a (current) coursemodule +// This function returns a small popup menu with all the +// course activity modules in it, as a navigation menu +// The data is taken from the serialised array stored in +// the course record - if (empty($THEME->navmenuwidth)) { - $width = 50; - } else { - $width = $THEME->navmenuwidth; - } + global $CFG; if ($cm) { $cm = $cm->id; } if ($course->format == 'weeks') { - $strsection = get_string('week'); + $strsection = get_string("week"); } else { - $strsection = get_string('topic'); + $strsection = get_string("topic"); } - $strjumpto = get_string('jumpto'); if (!$modinfo = unserialize($course->modinfo)) { - return ''; + return ""; } $isteacher = isteacher($course->id); $section = -1; - $selected = ''; - $url = ''; + $selected = ""; + $url = ""; $previousmod = NULL; $backmod = NULL; $nextmod = NULL; @@ -3144,35 +2011,27 @@ function navmenu($course, $cm=NULL, $targetwindow='self') { $logslink = NULL; $flag = false; $menu = array(); + $strjumpto = get_string('jumpto'); - $sections = get_records('course_sections','course',$course->id,'section','section,visible,summary'); - - if (!empty($THEME->makenavmenulist)) { /// A hack to produce an XHTML navmenu list for use in themes - $THEME->navmenulist = navmenulist($course, $sections, $modinfo, - $isteacher, $strsection, $strjumpto, $width, $cm); - } + $sections = get_records('course_sections','course',$course->id,'section',"section,visible,summary"); foreach ($modinfo as $mod) { - if ($mod->mod == 'label') { + if ($mod->mod == "label") { continue; } - if ($mod->section > $course->numsections) { /// Don't show excess hidden sections - break; - } - if ($mod->section > 0 and $section <> $mod->section) { $thissection = $sections[$mod->section]; if ($thissection->visible or !$course->hiddensections or $isteacher) { - $thissection->summary = strip_tags(format_string($thissection->summary,true)); + $thissection->summary = strip_tags($thissection->summary); if ($course->format == 'weeks' or empty($thissection->summary)) { - $menu[] = '-------------- '. $strsection ." ". $mod->section .' --------------'; + $menu[] = "-------------- $strsection $mod->section --------------"; } else { - if (strlen($thissection->summary) < ($width-3)) { + if (strlen($thissection->summary) < 47) { $menu[] = '-- '.$thissection->summary; } else { - $menu[] = '-- '.substr($thissection->summary, 0, $width).'...'; + $menu[] = '-- '.substr($thissection->summary, 0, 50).'...'; } } } @@ -3182,7 +2041,7 @@ function navmenu($course, $cm=NULL, $targetwindow='self') { //Only add visible or teacher mods to jumpmenu if ($mod->visible or $isteacher) { - $url = $mod->mod .'/view.php?id='. $mod->cm; + $url = "$mod->mod/view.php?id=$mod->cm"; if ($flag) { // the current mod is the "next" mod $nextmod = $mod; $flag = false; @@ -3195,12 +2054,12 @@ function navmenu($course, $cm=NULL, $targetwindow='self') { $mod->name = $strjumpto; $strjumpto = ''; } else { - $mod->name = strip_tags(format_string(urldecode($mod->name),true)); - if (strlen($mod->name) > ($width+5)) { - $mod->name = substr($mod->name, 0, $width).'...'; + $mod->name = strip_tags(urldecode($mod->name)); + if (strlen($mod->name) > 55) { + $mod->name = substr($mod->name, 0, 50)."..."; } if (!$mod->visible) { - $mod->name = '('.$mod->name.')'; + $mod->name = "(".$mod->name.")"; } } $menu[$url] = $mod->name; @@ -3209,132 +2068,30 @@ function navmenu($course, $cm=NULL, $targetwindow='self') { } if ($selectmod and $isteacher) { $logslink = "framename\" href=". - "\"$CFG->wwwroot/course/log.php?chooselog=1&user=0&date=0&id=$course->id&modid=$selectmod->cm\">". - "pixpath/i/log.gif\" alt=\"\" />"; + "\"$CFG->wwwroot/course/log.php?chooselog=1&user=0&date=0&id=$course->id&modid=$selectmod->cm\">". + "pixpath/i/log.gif\">"; } if ($backmod) { $backmod = "wwwroot/mod/$backmod->mod/view.php\" target=\"$CFG->framename\">". - "cm\" />". - "
          "; + "cm\">". + ""; } if ($nextmod) { $nextmod = "
          wwwroot/mod/$nextmod->mod/view.php\" target=\"$CFG->framename\">". - "cm\" />". - "
          "; + "cm\">". + ""; } - - return ''.$logslink .'
          '. $backmod .'' . - popup_form($CFG->wwwroot .'/mod/', $menu, 'navmenu', $selected, $strjumpto, - '', '', true, $targetwindow). - ''. $nextmod .'
          '; + return "$logslink
          $backmod" . + popup_form("$CFG->wwwroot/mod/", $menu, "navmenu", $selected, $strjumpto, + "", "", true, $targetwindow). + "$nextmod
          "; } -/** - * Given a course - * This function returns a small popup menu with all the - * course activity modules in it, as a navigation menu - * outputs a simple list structure in XHTML - * The data is taken from the serialised array stored in - * the course record - * - * @param course $course A {@link $COURSE} object. - * @return string - * @todo Finish documenting this function - */ -function navmenulist($course, $sections, $modinfo, $isteacher, $strsection, $strjumpto, $width=50, $cmid=0) { - - global $CFG; - - $section = -1; - $selected = ''; - $url = ''; - $previousmod = NULL; - $backmod = NULL; - $nextmod = NULL; - $selectmod = NULL; - $logslink = NULL; - $flag = false; - $menu = array(); - - $menu[] = '
        12. '; - - return implode("\n", $menu); -} - - - -/** - * Prints form items with the names $day, $month and $year - * - * @param int $day ? - * @param int $month ? - * @param int $year ? - * @param int $currenttime A default timestamp in GMT - * @todo Finish documenting this function - */ function print_date_selector($day, $month, $year, $currenttime=0) { +// Currenttime is a default timestamp in GMT +// Prints form items with the names $day, $month and $year if (!$currenttime) { $currenttime = time(); @@ -3342,7 +2099,7 @@ function print_date_selector($day, $month, $year, $currenttime=0) { $currentdate = usergetdate($currenttime); for ($i=1; $i<=31; $i++) { - $days[$i] = $i; + $days[$i] = "$i"; } for ($i=1; $i<=12; $i++) { $months[$i] = userdate(gmmktime(12,0,0,$i,1,2000), "%B"); @@ -3350,21 +2107,14 @@ function print_date_selector($day, $month, $year, $currenttime=0) { for ($i=2000; $i<=2010; $i++) { $years[$i] = $i; } - choose_from_menu($days, $day, $currentdate['mday'], ''); - choose_from_menu($months, $month, $currentdate['mon'], ''); - choose_from_menu($years, $year, $currentdate['year'], ''); + choose_from_menu($days, $day, $currentdate['mday'], ""); + choose_from_menu($months, $month, $currentdate['mon'], ""); + choose_from_menu($years, $year, $currentdate['year'], ""); } -/** - *Prints form items with the names $hour and $minute - * - * @param ? $hour ? - * @param ? $minute ? - * @param $currenttime A default timestamp in GMT - * @param int $step ? - * @todo Finish documenting this function - */ function print_time_selector($hour, $minute, $currenttime=0, $step=5) { +// Currenttime is a default timestamp in GMT +// Prints form items with the names $hour and $minute if (!$currenttime) { $currenttime = time(); @@ -3379,19 +2129,12 @@ function print_time_selector($hour, $minute, $currenttime=0, $step=5) { for ($i=0; $i<=59; $i+=$step) { $minutes[$i] = sprintf("%02d",$i); } - choose_from_menu($hours, $hour, $currentdate['hours'], ''); - choose_from_menu($minutes, $minute, $currentdate['minutes'], ''); + choose_from_menu($hours, $hour, $currentdate['hours'], ""); + choose_from_menu($minutes, $minute, $currentdate['minutes'], ""); } -/** - * Prints time limit value selector - * - * @uses $CFG - * @param int $timelimit ? - * @param string $unit ? - * @todo Finish documenting this function - */ -function print_timer_selector($timelimit = 0, $unit = '', $name = 'timelimit') { +function print_timer_selector($timelimit = 0, $unit = "") { +/// Prints time limit value selector global $CFG; @@ -3405,111 +2148,78 @@ function print_timer_selector($timelimit = 0, $unit = '', $name = 'timelimit') { for ($i=1; $i<=$maxvalue; $i++) { $minutes[$i] = $i.$unit; } - choose_from_menu($minutes, $name, $timelimit, get_string('none')); + choose_from_menu($minutes, "timelimit", $timelimit, get_string("none")); } -/** - * Prints a grade menu (as part of an existing form) with help - * Showing all possible numerical grades and scales - * - * @uses $CFG - * @param int $courseid ? - * @param string $name ? - * @param string $current ? - * @param boolean $includenograde ? - * @todo Finish documenting this function - */ function print_grade_menu($courseid, $name, $current, $includenograde=true) { +/// Prints a grade menu (as part of an existing form) with help +/// Showing all possible numerical grades and scales global $CFG; - $strscale = get_string('scale'); - $strscales = get_string('scales'); + $strscale = get_string("scale"); + $strscales = get_string("scales"); $scales = get_scales_menu($courseid); foreach ($scales as $i => $scalename) { - $grades[-$i] = $strscale .': '. $scalename; + $grades[-$i] = "$strscale: $scalename"; } if ($includenograde) { - $grades[0] = get_string('nograde'); + $grades[0] = get_string("nograde"); } for ($i=100; $i>=1; $i--) { $grades[$i] = $i; } - choose_from_menu($grades, $name, $current, ''); + choose_from_menu($grades, "$name", "$current", ""); - $helpicon = $CFG->pixpath .'/help.gif'; - $linkobject = "\"$strscales\""; - link_to_popup_window ('/course/scales.php?id='. $courseid .'&list=true', 'ratingscales', + $helpicon = "$CFG->pixpath/help.gif"; + $linkobject = "\"$strscales\""; + link_to_popup_window ("/course/scales.php?id=$courseid&list=true", "ratingscales", $linkobject, 400, 500, $strscales); } -/** - * Prints a scale menu (as part of an existing form) including help button - * Just like {@link print_grade_menu()} but without the numeric grades - * - * @param int $courseid ? - * @param string $name ? - * @param string $current ? - * @todo Finish documenting this function - */ function print_scale_menu($courseid, $name, $current) { +/// Prints a scale menu (as part of an existing form) including help button +/// Just like print_grade_menu but without the numerical grades global $CFG; - $strscales = get_string('scales'); - choose_from_menu(get_scales_menu($courseid), $name, $current, ''); - $helpicon = $CFG->pixpath .'/help.gif'; - $linkobject = ''. $strscales .''; - link_to_popup_window ('/course/scales.php?id='. $courseid .'&list=true', 'ratingscales', + $strscales = get_string("scales"); + choose_from_menu(get_scales_menu($courseid), "$name", $current, ""); + $helpicon = "$CFG->pixpath/help.gif"; + $linkobject = "\"$strscales\""; + link_to_popup_window ("/course/scales.php?id=$courseid&list=true", "ratingscales", $linkobject, 400, 500, $strscales); } -/** - * Prints a help button about a scale - * - * @uses $CFG - * @param id $courseid ? - * @param object $scale ? - * @todo Finish documenting this function - */ + function print_scale_menu_helpbutton($courseid, $scale) { +/// Prints a help button about a scale +/// scale is an object global $CFG; - $strscales = get_string('scales'); - $helpicon = $CFG->pixpath .'/help.gif'; - $linkobject = "\"$scale-name\" src=\"$helpicon\" />"; - link_to_popup_window ('/course/scales.php?id='. $courseid .'&list=true&scale='. $scale->id, 'ratingscale', + $strscales = get_string("scales"); + $helpicon = "$CFG->pixpath/help.gif"; + $linkobject = "\"$scale-name\" src=\"$helpicon\" />"; + link_to_popup_window ("/course/scales.php?id=$courseid&list=true&scale=$scale->id", "ratingscale", $linkobject, 400, 500, $scale->name); } -/** - * Print an error page displaying an error message. - * Old method, don't call directly in new code - use print_error instead. - * - * - * @uses $SESSION - * @uses $CFG - * @param string $message The message to display to the user about the error. - * @param string $link The url where the user will be prompted to continue. If no url is provided the user will be directed to the site index page. - */ -function error ($message, $link='') { + +function error ($message, $link="") { global $CFG, $SESSION; - print_header(get_string('error')); - echo '
          '; - - $message = clean_text($message); // In case nasties are in here - - print_simple_box($message, 'center', '', '#FFBBBB', 5, 'errorbox'); + print_header(get_string("error")); + echo "
          "; + print_simple_box($message, "center", "", "#FFBBBB"); if (!$link) { if ( !empty($SESSION->fromurl) ) { - $link = $SESSION->fromurl; + $link = "$SESSION->fromurl"; unset($SESSION->fromurl); } else { - $link = $CFG->wwwroot .'/'; + $link = "$CFG->wwwroot/"; } } print_continue($link); @@ -3517,70 +2227,38 @@ function error ($message, $link='') { die; } -/** - * Print an error page displaying an error message. New method - use this for new code. - * - * @uses $SESSION - * @uses $CFG - * @param string $string The name of the string from error.php to print - * @param string $link The url where the user will be prompted to continue. If no url is provided the user will be directed to the site index page. - */ -function print_error ($string, $link='') { +function helpbutton ($page, $title="", $module="moodle", $image=true, $linktext=false, $text="", $return=false) { + // $page = the keyword that defines a help page + // $title = the title of links, rollover tips, alt tags etc + // $module = which module is the page defined in + // $image = use a help image for the link? (true/false/"both") + // $text = if defined then this text is used in the page, and + // the $page variable is ignored. + global $CFG, $THEME; - $string = get_string($string, 'error'); - error($string, $link); -} - - -/** - * Print a help button. - * - * @uses $CFG - * @param string $page The keyword that defines a help page - * @param string $title The title of links, rollover tips, alt tags etc - * @param string $module Which module is the page defined in - * @param mixed $image Use a help image for the link? (true/false/"both") - * @param string $text If defined then this text is used in the page, and - * the $page variable is ignored. - * @param boolean $return If true then the output is returned as a string, if false it is printed to the current page. - * @param string $imagetext The full text for the helpbutton icon. If empty use default help.gif - * @return string - * @todo Finish documenting this function - */ -function helpbutton ($page, $title='', $module='moodle', $image=true, $linktext=false, $text='', $return=false, - $imagetext='') { - global $CFG; - - if ($module == '') { - $module = 'moodle'; + if ($module == "") { + $module = "moodle"; } - $linkobject = ''; - if ($image) { - if ($imagetext == '') { - $imagetext = ''.$title.''; - } + $icon = "$CFG->pixpath/help.gif"; if ($linktext) { - $linkobject .= $title.' '; + $linkobject = "$title\"\""; + } else { + $linkobject = "\"$title\""; } - - $linkobject .= $imagetext; - } else { - $linkobject .= $title; + $linkobject = "$title"; } - - $linkobject .= ''; - if ($text) { - $url = '/help.php?module='. $module .'&text='. htmlentities(urlencode($text)); + $url = "/help.php?module=$module&text=".htmlentities(urlencode($text)); } else { - $url = '/help.php?module='. $module .'&file='. $page .'.html'; + $url = "/help.php?module=$module&file=$page.html"; } - $link = link_to_popup_window ($url, 'popup', $linkobject, 400, 500, $title, 'none', true); + $link = link_to_popup_window ($url, "popup", $linkobject, 400, 500, $title, 'none', true); if ($return) { return $link; @@ -3589,151 +2267,82 @@ function helpbutton ($page, $title='', $module='moodle', $image=true, $linktext= } } -/** - * Print a help button. - * - * Prints a special help button that is a link to the "live" emoticon popup - * @uses $CFG - * @uses $SESSION - * @param string $form ? - * @param string $field ? - * @todo Finish documenting this function - */ function emoticonhelpbutton($form, $field) { - +/// Prints a special help button that is a link to the "live" emoticon popup global $CFG, $SESSION; $SESSION->inserttextform = $form; $SESSION->inserttextfield = $field; - $imagetext = ''; - - helpbutton('emoticons', get_string('helpemoticons'), 'moodle', true, true, '', false, $imagetext); + helpbutton("emoticons", get_string("helpemoticons"), "moodle", false, true); + echo " "; + link_to_popup_window ("/help.php?module=moodle&file=emoticons.html", "popup", + "pixpath/s/smiley.gif\" border=\"0\" align=\"absmiddle\" width=\"15\" height=\"15\" />", + 400, 500, get_string("helpemoticons")); + echo "
          "; } -/** - * Print a message and exit. - * - * @uses $CFG - * @param string $message ? - * @param string $link ? - * @todo Finish documenting this function - */ -function notice ($message, $link='') { - global $CFG; - - $message = clean_text($message); - $link = clean_text($link); +function notice ($message, $link="") { + global $CFG, $THEME; if (!$link) { - if (!empty($_SERVER['HTTP_REFERER'])) { - $link = $_SERVER['HTTP_REFERER']; + if (!empty($_SERVER["HTTP_REFERER"])) { + $link = $_SERVER["HTTP_REFERER"]; } else { - $link = $CFG->wwwroot .'/'; + $link = "$CFG->wwwroot/"; } } - echo '
          '; - print_simple_box($message, 'center', '50%', '', '20', 'noticebox'); - print_continue($link); + echo "
          "; + print_simple_box($message, "center", "50%", "$THEME->cellheading", "20", "noticebox"); + print_heading("".get_string("continue").""); print_footer(get_site()); die; } -/** - * Print a message along with "Yes" and "No" links for the user to continue. - * - * @param string $message The text to display - * @param string $linkyes The link to take the user to if they choose "Yes" - * @param string $linkno The link to take the user to if they choose "No" - */ function notice_yesno ($message, $linkyes, $linkno) { + global $THEME; - global $CFG; - - $message = clean_text($message); - $linkyes = clean_text($linkyes); - $linkno = clean_text($linkno); - - print_simple_box_start('center', '60%', '', 5, 'noticebox', 'notice'); - echo '

          '. $message .'

          '; - echo '
          '; - print_single_button($linkyes, NULL, get_string('yes'), 'post', $CFG->framename); - echo ''; - print_single_button($linkno, NULL, get_string('no'), 'post', $CFG->framename); - echo '
          '; + print_simple_box_start("center", "60%", "$THEME->cellheading"); + echo "

          $message

          "; + echo "

          "; + echo "".get_string("yes").""; + echo "      "; + echo "".get_string("no").""; + echo "

          "; print_simple_box_end(); } -/** - * Redirects the user to another page, after printing a notice - * - * @param string $url The url to take the user to - * @param string $message The text message to display to the user about the redirect, if any - * @param string $delay How long before refreshing to the new page at $url? - * @todo '&' needs to be encoded into '&' for XHTML compliance, - * however, this is not true for javascript. Therefore we - * first decode all entities in $url (since we cannot rely on) - * the correct input) and then encode for where it's needed - * echo ""; - */ -function redirect($url, $message='', $delay='0') { - - $url = clean_text($url); - $message = clean_text($message); - - $url = html_entity_decode($url); // for php < 4.3.0 this is defined in moodlelib.php - $encodedurl = htmlentities($url); +function redirect($url, $message="", $delay="0") { +// Redirects the user to another page, after printing a notice if (empty($message)) { - echo ''; - echo ''; // To cope with Mozilla bug + echo ""; + echo ""; // To cope with Mozilla bug } else { if (empty($delay)) { $delay = 3; // There's no point having a message with no delay } - print_header('', '', '', '', ''); - echo '
          '; - echo '

          '. $message .'

          '; - echo '

          ( '. get_string('continue') .' )

          '; - echo '
          '; + print_header("", "", "", "", ""); + echo "
          "; + echo "

          $message

          "; + echo "

          ( ".get_string("continue")." )

          "; + echo "
          "; flush(); sleep($delay); - echo ''; // To cope with Mozilla bug + echo ""; // To cope with Mozilla bug } die; } -/** - * Print a bold message in an optional color. - * - * @param string $message The message to print out - * @param string $style Optional style to display message text in - * @param string $align Alignment option - */ -function notify ($message, $style='notifyproblem', $align='center') { - - if ($style == 'green') { - $style = 'notifysuccess'; // backward compatible with old color system - } - - $message = clean_text($message); - - echo '
          '. $message .'
          '."
          \n"; +function notify ($message, $color="red", $align="center") { + echo "

          $message

          \n"; } - -/** - * Given an email address, this function will return an obfuscated version of it - * - * @param string $email The email address to obfuscate - * @return string - */ - function obfuscate_email($email) { - +function obfuscate_email($email) { +/// Given an email address, this function will return an obfuscated version of it $i = 0; $length = strlen($email); - $obfuscated = ''; + $obfuscated = ""; while ($i < $length) { if (rand(0,2)) { $obfuscated.='%'.dechex(ord($email{$i})); @@ -3745,26 +2354,20 @@ function notify ($message, $style='notifyproblem', $align='center') { return $obfuscated; } -/** - * This function takes some text and replaces about half of the characters - * with HTML entity equivalents. Return string is obviously longer. - * - * @param string $plaintext The text to be obfuscated - * @return string - */ function obfuscate_text($plaintext) { - +/// This function takes some text and replaces about half of the characters +/// with HTML entity equivalents. Return string is obviously longer. $i=0; $length = strlen($plaintext); - $obfuscated=''; + $obfuscated=""; $prev_obfuscated = false; while ($i < $length) { $c = ord($plaintext{$i}); $numerical = ($c >= ord('0')) && ($c <= ord('9')); if ($prev_obfuscated and $numerical ) { - $obfuscated.='&#'.ord($plaintext{$i}).';'; + $obfuscated.='&#'.ord($plaintext{$i}); } else if (rand(0,2)) { - $obfuscated.='&#'.ord($plaintext{$i}).';'; + $obfuscated.='&#'.ord($plaintext{$i}); $prev_obfuscated = true; } else { $obfuscated.=$plaintext{$i}; @@ -3775,16 +2378,9 @@ function obfuscate_text($plaintext) { return $obfuscated; } -/** - * This function uses the {@link obfuscate_email()} and {@link obfuscate_text()} - * to generate a fully obfuscated email link, ready to use. - * - * @param string $email The email address to display - * @param string $label The text to dispalyed as hyperlink to $email - * @param boolean $dimmed If true then use css class 'dimmed' for hyperlink - * @return string - */ -function obfuscate_mailto($email, $label='', $dimmed=false) { +function obfuscate_mailto($email, $label="", $dimmed=false) { +/// This function uses the above two functions to generate a fully +/// obfuscated email link, ready to use. if (empty($label)) { $label = $email; @@ -3801,30 +2397,22 @@ function obfuscate_mailto($email, $label='', $dimmed=false) { obfuscate_text($label)); } -/** - * Prints a single paging bar to provide access to other pages (usually in a search) - * - * @param int $totalcount ? - * @param int $page ? - * @param int $perpage ? - * @param string $baseurl ? - * @todo Finish documenting this function - */ function print_paging_bar($totalcount, $page, $perpage, $baseurl) { +/// Prints a single paging bar to provide access to other pages (usually in a search) $maxdisplay = 18; if ($totalcount > $perpage) { - echo '
          '; - echo get_string('page').':'; + echo "
          "; + echo "

          ".get_string("page").":"; if ($page > 0) { $pagenum=$page-1; - echo ' ('. get_string('previous') .') '; + echo " (".get_string("previous").") "; } $lastpage = ceil($totalcount / $perpage); if ($page > 15) { $startpage = $page - 10; - echo ' 1 ...'; + echo " 1 ..."; } else { $startpage = 0; } @@ -3833,32 +2421,28 @@ function print_paging_bar($totalcount, $page, $perpage, $baseurl) { while ($displaycount < $maxdisplay and $currpage < $lastpage) { $displaypage = $currpage+1; if ($page == $currpage) { - echo '  '. $displaypage; + echo "  $displaypage"; } else { - echo '  '. $displaypage .''; + echo "  $displaypage"; } $displaycount++; $currpage++; } if ($currpage < $lastpage) { $lastpageactual = $lastpage - 1; - echo ' ...'. $lastpage .' '; + echo " ...$lastpage "; } $pagenum = $page + 1; if ($pagenum != $displaypage) { - echo '  ('. get_string('next') .')'; + echo "  (".get_string("next").")"; } - echo '

          '; + echo "

          "; + echo ""; } } -/** - * This function is used to rebuild the tag because some formats (PLAIN and WIKI) - * will transform it to html entities - * - * @param string $text Text to search for nolink tag in - * @return string - */ +//This function is used to rebuild the tag because some formats (PLAIN and WIKI) +//will transform it to html entities function rebuildnolinktag($text) { $text = preg_replace('/<(\/*nolink)>/i','<$1>',$text); @@ -3873,129 +2457,93 @@ function rebuildnolinktag($text) { // THREE FUNCTIONS MOVED HERE FROM course/lib.php // ================================================ -/** - * Prints a nice side block with an optional header. The content can either - * be a block of HTML or a list of text with optional icons. - * - * @param string $heading ? - * @param string $content ? - * @param array $list ? - * @param array $icons ? - * @param string $footer ? - * @param array $attributes ? - * @todo Finish documenting this function. Show example of various attributes, etc. - */ function print_side_block($heading='', $content='', $list=NULL, $icons=NULL, $footer='', $attributes = array()) { +// Prints a nice side block with an optional header. The content can either +// be a block of HTML or a list of text with optional icons. + + global $THEME; print_side_block_start($heading, $attributes); if ($content) { echo $content; if ($footer) { - echo ''; + echo "
          $footer
          "; } } else { + echo ""; if ($list) { - $row = 0; - echo '
          '; foreach ($list as $key => $string) { - echo ''; + echo "cellcontent2\">"; if ($icons) { - echo ''; + echo ""; } - echo ''; - echo ''; - $row = $row ? 0:1; + echo ""; + echo ""; } - echo '
          '. $icons[$key] .'".$icons[$key]."'. $string .'
          $string
          '; } if ($footer) { - echo ''; + echo "cellcontent2\">"; + echo "'; + echo "
          $footer
          "; + echo ""; } - + echo ""; } - print_side_block_end($attributes); + print_side_block_end(); } -/** - * Starts a nice side block with an optional header. - * - * @param string $heading ? - * @param array $attributes ? - * @todo Finish documenting this function - */ function print_side_block_start($heading='', $attributes = array()) { - - global $CFG; +// Starts a nice side block with an optional header. + global $THEME; // If there are no special attributes, give a default CSS class - if (empty($attributes) || !is_array($attributes)) { + if(empty($attributes) || !is_array($attributes)) { $attributes = array('class' => 'sideblock'); - - } else if(!isset($attributes['class'])) { + } + else if(!isset($attributes['class'])) { $attributes['class'] = 'sideblock'; - - } else if(!strpos($attributes['class'], 'sideblock')) { + } + else if(!strpos($attributes['class'], 'sideblock')) { $attributes['class'] .= ' sideblock'; } - // OK, the class is surely there and in addition to anything // else, it's tagged as a sideblock - /* - - // IE misery: if I do it this way, blocks which start hidden cannot be "unhidden" - - // If there is a cookie to hide this thing, start it hidden - if (!empty($attributes['id']) && isset($_COOKIE['hide:'.$attributes['id']])) { - $attributes['class'] = 'hidden '.$attributes['class']; - } - */ - $attrtext = ''; - foreach ($attributes as $attr => $val) { - $attrtext .= ' '.$attr.'="'.$val.'"'; + foreach($attributes as $attr => $val) { + $attrtext .= ' '.$attr.'="'.$val.'"'; } - echo ''; // cellspacing is to fix IE bug :-( + // [pj] UGLY UGLY UGLY! I hate myself for doing this! + // When the Lord Moodle 2.0 cometh, his mercy shalt move all this mess + // to CSS and banish the evil to the abyss from whence it came. + echo '
          '; if ($heading) { - echo ''; + echo ''; } - - echo '
          '.$heading; - if (!empty($CFG->allowuserblockhiding)) { - echo '
          '; - } - echo '
          '.$heading.'
          '; + echo '
          '; } -/** - * Print table ending tags for a side block box. - */ -function print_side_block_end($attributes) { - global $CFG; - echo '
          '; - // IE workaround: if I do it THIS way, it works! WTF? - if (!empty($CFG->allowuserblockhiding) && isset($attributes['id'])) { - echo ''; - } +function print_side_block_end() { + echo '
          '; + echo "\n"; } - -/** - * Prints out the HTML editor config. - * - * @uses $CFG - */ - function print_editor_config($editorhidebuttons='') { +function print_editor_config() { +/// prints out the editor config. global $CFG; // print new config - echo 'var config = new HTMLArea.Config();'."\n"; + echo "var config = new HTMLArea.Config();\n"; echo "config.pageStyle = \"body {"; if(!(empty($CFG->editorbackgroundcolor))) { echo " background-color: $CFG->editorbackgroundcolor;"; @@ -4012,56 +2560,43 @@ function print_side_block_end($attributes) { echo " }\";\n"; echo "config.killWordOnPaste = "; echo(empty($CFG->editorkillword)) ? "false":"true"; - echo ';'."\n"; - echo 'config.fontname = {'."\n"; + echo ";\n"; + echo "config.fontname = {\n"; $fontlist = isset($CFG->editorfontlist) ? explode(';', $CFG->editorfontlist) : array(); $i = 1; // Counter is used to get rid of the last comma. + $count = count($fontlist); // Otherwise IE doesn't load the editor. foreach($fontlist as $fontline) { if(!empty($fontline)) { - if ($i > 1) { - echo ','."\n"; + list($fontkey, $fontvalue) = split(":", $fontline); + echo "\"". $fontkey ."\":\t'". $fontvalue ."'"; + if($i < $count) { + echo ",\n"; } - list($fontkey, $fontvalue) = split(':', $fontline); - echo '"'. $fontkey ."\":\t'". $fontvalue ."'"; - - $i++; } + $i++; } - echo '};'; - - if (!empty($editorhidebuttons)) { - echo "\nconfig.hideSomeButtons(\" ". $editorhidebuttons ." \");\n"; - } else if (!empty($CFG->editorhidebuttons)) { - echo "\nconfig.hideSomeButtons(\" ". $CFG->editorhidebuttons ." \");\n"; - } - + echo "};"; if(!empty($CFG->editorspelling) && !empty($CFG->aspellpath)) { print_speller_code($usehtmleditor=true); } } -/** - * Prints out code needed for spellchecking. - * Original idea by Ludo (Marc Alier). - * - * @uses $CFG - * @param boolean $usehtmleditor ? - * @todo Finish documenting this function - */ function print_speller_code ($usehtmleditor=false) { +/// Prints out code needed for spellchecking. +/// Original idea by Ludo (Marc Alier). global $CFG; if(!$usehtmleditor) { - echo "\n".''."\n"; + echo "}\n"; + echo "\n"; } else { echo "\nfunction spellClickHandler(editor, buttonId) {\n"; echo "\teditor._textArea.value = editor.getHTML();\n"; @@ -4071,209 +2606,16 @@ function print_speller_code ($usehtmleditor=false) { echo "\tspeller._moogle_edit=1;\n"; echo "\tspeller._editor=editor;\n"; echo "\tspeller.openChecker();\n"; - echo '}'."\n"; + echo "}\n"; + echo "config.registerButton(\"spell-check\", \"spell-check\", \"". $CFG->wwwroot ."/lib/speller/spell.gif\", false, spellClickHandler);\n"; + echo "config.toolbar.push([\"spell-check\"]);\n"; } } -/** - * Print button for spellchecking when editor is disabled - */ function print_speller_button () { - echo ''."\n"; +// print button for spellchecking +// when editor is disabled + echo "\n"; } - - -function page_id_and_class(&$getid, &$getclass) { - // Create class and id for this page - global $CFG, $ME; - - static $class = NULL; - static $id = NULL; - - if(empty($class) || empty($id)) { - $path = str_replace($CFG->wwwroot.'/', '', $ME); - $path = str_replace('.php', '', $path); - if (substr($path, -1) == '/') { - $path .= 'index'; - } - if (empty($path) || $path == 'index') { - $id = 'site-index'; - $class = 'course'; - } else { - $id = str_replace('/', '-', $path); - $class = explode('-', $id); - array_pop($class); - $class = implode('-', $class); - } - } - - $getid = $id; - $getclass = $class; -} - -/** - * Prints a maintenance message from /maintenance.html - */ -function print_maintenance_message () { - global $CFG, $SITE; - - print_header(strip_tags($SITE->fullname), $SITE->fullname, 'home'); - print_simple_box_start('center'); - print_heading(get_string('sitemaintenance', 'admin')); - @include($CFG->dataroot.'/1/maintenance.html'); - print_simple_box_end(); - print_footer(); -} - - - -/// Some code to print tabs - -/// A class for tabs -class tabobject { - var $id; - var $link; - var $text; - - /// A constructor just because I like constructors - function tabobject ($id, $link='', $text='') { - $this->id = $id; - $this->link = $link; - $this->text = $text; - } - - - /// a method to look after the messy business of setting up a tab cell - /// with all the appropriate classes and things - function createtab ($selected=false, $inactive=false, $last=false) { - $str = ''; - $astr = ''; - $cstr = ''; - - /// The text and anchor for this tab - if ($inactive) { - $astr .= $this->text; - } else { - $astr .= ''.$this->text.''; - } - - /// There's an IE bug with background images in tags - /// so we put a div around so that we can add a background image - $astr = ''; - - /// Set the class for inactive cells - if ($inactive) { - $cstr .= ' inactive'; - - /// Set the class for the selected cell - } else if ($selected) { - $cstr .= ' selected'; - - /// Set the standard class for a cell - } else { - $cstr .= ' active'; - } - - - /// Are we on the last tab in this row? - if ($last) { - $cstr .= ' last'; - $astr = ''.$astr.''; - } - - /// Lets set up the tab cell - $str .= 'tabselectedtofront) and ($selected !== NULL) ) { - $found = false; - $frontrows = array(); - $rearrows = array(); - foreach ($tabrows as $row) { - if ($found) { - $rearrows[] = $row; - } else { - foreach ($row as $tab) { - if ($found) { - continue; - } - $found = ($selected == $tab->id); - } - $frontrows[] = $row; - } - } - $tabrows = array_merge($rearrows,$frontrows); - } - -/// $inactive must be an array - if (!is_array($inactive)) { - $inactive = array(); - } - -/// A table to encapsulate the tabs - $str = ''; - $str .= ''; - $str .= '
          '; - - $rowcount = count($tabrows); -/// Cycle through the tab rows - foreach ($tabrows as $row) { - - $rowcount--; - - $str .= ''; - $str .= ''; - - $numberoftabs = count($row); - $currenttab = 0; - $cstr = ''; - $astr = ''; - - - /// Cycle through the tabs - foreach ($row as $tab) { - $currenttab++; - - $str .= $tab->createtab( ($selected == $tab->id), - (in_array($tab->id, $inactive)), - ($currenttab == $numberoftabs) ); - } - - $str .= ''; - $str .= '
          '; - } - $str .= '
          '; - - if ($return) { - return $str; - } - echo $str; -} - - // vim:autoindent:expandtab:shiftwidth=4:tabstop=4:tw=140: ?> diff --git a/lib/wiki_to_markdown.php b/lib/wiki.php similarity index 52% rename from lib/wiki_to_markdown.php rename to lib/wiki.php index d161f1f3a89..2d88fe296fb 100644 --- a/lib/wiki_to_markdown.php +++ b/lib/wiki.php @@ -1,399 +1,431 @@ -list_state != LIST_NONE) { - $lclose = $this->do_list( " ",true ); - } - - $sclose = ""; - switch ($state) { - case STATE_PARAGRAPH: - $sclose = "\n"; - break; - case STATE_BLOCKQUOTE: - $sclose = "\n"; - break; - case STATE_PREFORM: - $sclose = "
        \n"; - break; - case STATE_NOTIKI: - $sclose = "\n"; - break; - } - - return $lclose . $sclose; - } - - function do_replace( $line, $mark, $tag ) { - // do the regex thingy for things like bold, italic etc - // $mark is the magic character, and $tag the HTML tag to insert - - // BODGE: replace inline $mark characters in places where we want them ignored - // they will be put back after main substitutue, stops problems with eg, and/or - $bodge = chr(1); - $line = eregi_replace( '([[:alnum:]])'.$mark.'([[:alnum:]])', '\\1'.$bodge.'\\2',$line ); - - $regex = '(^| |[(.,])'.$mark.'([^'.$mark.']*)'.$mark.'([^[:alnum:]]|$)'; - $replace = '\\1<'.$tag.'>\\2\\3'; - $line = eregi_replace( $regex, $replace, $line ); - - // BODGE: back we go - $line = eregi_replace( $bodge, $mark, $line ); - - return $line; - } - - - function do_replace_markdown( $line, $mark, $tag ) { - // do the regex thingy for things like bold, italic etc - // $mark is the magic character, and $tag the HTML tag to insert - // MARKDOWN version does not generate HTML tags, just straigt replace - - // BODGE: replace inline $mark characters in places where we want them ignored - // they will be put back after main substitutue, stops problems with eg, and/or - $bodge = chr(1); - $line = eregi_replace( '([[:alnum:]])'.$mark.'([[:alnum:]])', '\\1'.$bodge.'\\2',$line ); - - $regex = '(^| |[(.,])'.$mark.'([^'.$mark.']*)'.$mark.'([^[:alnum:]]|$)'; - $replace = '\\1'.$tag.'\\2'.$tag.'\\3'; - $line = eregi_replace( $regex, $replace, $line ); - - // BODGE: back we go - $line = eregi_replace( $bodge, $mark, $line ); - - return $line; - } - - - function do_replace_sub( $line, $mark, $tag ) { - // do regex for subscript and superscript (slightly different) - // $mark is the magic character and $tag the HTML tag to insert - - $regex = $mark.'([^'.$mark.']*)'.$mark; - $replace = '<'.$tag.'>\\1'; - - return eregi_replace( $regex, $replace, $line ); - } - - function do_list( $line, $blank=false ) { - // handle line with list character on it - // if blank line implies drop to level 0 - - // get magic character and then delete it from the line if not blank - if ($blank) { - $listchar=""; - $count = 0; - } - else { - $listchar = $line{0}; - $count = strspn( $line, $listchar ); - $line = eregi_replace( "^[".$listchar."]+ ", "", $line ); - } - - // find what sort of list this character represents - $list_tag = ""; - $list_close_tag = ""; - $item_tag = ""; - $item_close_tag = ""; - $list_style = LIST_NONE; - switch ($listchar) { - case '*': - $list_tag = ""; - $list_close_tag = ""; - $item_tag = "*"; - $item_close_tag = ""; - $list_style = LIST_UNORDERED; - break; - case '#': - $list_tag = ""; - $list_close_tag = ""; - $item_tag = "1."; - $item_close_tag = ""; - $list_style = LIST_ORDERED; - break; - case ';': - $list_tag = "
        "; - $list_close_tag = "
        "; - $item_tag = "
        "; - $item_close_tag = "
        "; - $list_style = LIST_DEFINITION; - break; - case ':': - $list_tag = "
        "; - $list_close_tag = "
        "; - $item_tag = "
        "; - $item_close_tag = "
        "; - $list_style = LIST_DEFINITION; - break; - } - - // tag opening/closing regime now - fun bit :-) - $tags = ""; - - // if depth has reduced do number of closes to restore level - for ($i=$this->list_depth; $i>$count; $i-- ) { - $close_tag = array_pop( $this->list_backtrack ); - $tags = $tags . $close_tag; - } - - // if depth has increased do number of opens to balance - for ($i=$this->list_depth; $i<$count; $i++ ) { - array_push( $this->list_backtrack, "$list_close_tag" ); - $tags = $tags . "$list_tag"; - } - - // ok, so list state is now same as style and depth same as count - $this->list_state = $list_style; - $this->list_depth = $count; - - // get indent - $indent = substr( " ",1,$count-1 ); - - if ($blank) { - $newline = $tags; - } - else { - $newline = $tags . $indent . "$item_tag " . $line . "$item_close_tag"; - } - - return $newline; - } - - - function line_replace( $line ) { - // return line after various formatting replacements - // have been made - order is vital to stop them interfering with each other - - global $CFG; - - // ---- (at least) means a
        - // MARKDOWN: no change so leave - - // is this a list line (starts with * # ; :) - if (eregi( "^([*]+|[#]+|[;]+|[:]+) ", $line )) { - $line = $this->do_list( $line ); - } - - // typographic conventions - // MARKDOWN: no equiv. so convert to entity as before - // $line = str_replace( "--", "—", $line ); - // $line = str_replace( " - ", " – ", $line ); - $line = str_replace( "...", " … ", $line ); - $line = str_replace( "(R)", "®", $line ); - $line = str_replace( "(r)", "®", $line ); - $line = str_replace( "(TM)", "™", $line ); - $line = str_replace( "(tm)", "™", $line ); - $line = str_replace( "(C)", "©", $line ); - $line = str_replace( "1/4", "¼", $line ); - $line = str_replace( "1/2", "½", $line ); - $line = str_replace( "3/4", "¾", $line ); - $line = eregi_replace( "([[:digit:]]+[[:space:]]*)x([[:space:]]*[[:digit:]]+)", "\\1×\\2", $line ); // (digits) x (digits) - multiply - // do formatting tags - // NOTE: The / replacement *has* to be first, or it will screw the - // HTML tags that are added by the other ones - // MARKDOWN: only bold and italic change, rest are just HTML - $line = $this->do_replace_markdown( $line, "\*", "**" ); - $line = $this->do_replace_markdown( $line, "/", "*" ); - $line = $this->do_replace( $line, "\+", "ins" ); - // $line = $this->do_replace( $line, "-", "del" ); - $line = $this->do_replace_sub( $line, "~", "sub" ); - $line = $this->do_replace_sub( $line, "\^", "sup" ); - $line = $this->do_replace( $line, "%", "code" ); - $line = $this->do_replace( $line, "@", "cite" ); - - // convert urls into proper link with optional link text URL(text) - // MARDOWN: HTML conversion should work fine - $line = eregi_replace("([[:space:]]|^)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])\(([^)]+)\)", - "\\1[\\5](\\2://\\3\\4)", $line); - $line = eregi_replace("([[:space:]])www\.([^[:space:]]*)([[:alnum:]#?/&=])\(([^)]+)\)", - "\\1[\\5](http://www.\\2\\3)", $line); - - // make urls (with and without httpd) into proper links - $line = eregi_replace("([[:space:]]|^)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", - "\\1<\\2://\\3\\4>", $line); - $line = eregi_replace("([[:space:]])www\.([^[:space:]]*)([[:alnum:]#?/&=])", - "\\1", $line); - - // make email addresses into mailtos.... - // MARKDOWN doesn't quite support this, so do as html - $line = eregi_replace("([[:space:]]|^)([[:alnum:]._-]+@[[:alnum:]._-]+)\(([^)]+)\)", - "\\1
        \\3", $line); - - // !# at the beginning of any lines means a heading - // MARKDOWN: value (1-6) becomes number of hashes - if (eregi( "^!([1-6]) (.*)$", $line, $regs )) { - $depth = substr( $line, 1, 1 ); - $out = substr( '##########', 0, $depth); - $line = eregi_replace( "^!([1-6]) (.*)$", "$out \\2", $line ); - } - - // acronym handing, example HTML(Hypertext Markyp Language) - // MARKDOWN: no equiv. so just leave as HTML - $line = ereg_replace( "([A-Z]+)\(([^)]+)\)", "\\1", $line ); - - // Replace resource link >>##(Description Text) - // MARKDOWN: change to MD web link style - $line = eregi_replace( " ([a-zA-Z]+):([0-9]+)\(([^)]+)\)", - " [\\3](".$CFG->wwwroot."/mod/\\1/view.php?id=\\2) ", $line ); - - // Replace picture resource link - if ($CFG->slasharguments) { - $line = eregi_replace( "/([a-zA-Z0-9./_-]+)(png|gif|jpg)\(([^)]+)\)", - "![\\3]($CFG->wwwroot/file.php/$this->courseid/\\1\\2)", $line ); - } else { - $line = eregi_replace( "/([a-zA-Z0-9./_-]+)(png|gif|jpg)\(([^)]+)\)", - "![\\3]($CFG->wwwroot/file.php?file=/$this->courseid/\\1\\2)", $line ); - } - - // Replace file resource link - if ($CFG->slasharguments) { - $line = eregi_replace( "file:/([[:alnum:]/._-]+)\(([^)]+)\)", - "[\\2]($CFG->wwwroot/file.php/$this->courseid/\\1)", $line ); - } else { - $line = eregi_replace( "file:/([[:alnum:]/._-]+)\(([^)]+)\)", - "[\\2]($CFG->wwwroot/file.php?file=/$this->courseid/\\1)", $line ); - } - - - return $line; - } - - function convert( $content,$courseid ) { - - // main entry point for processing Wiki-like text - // $content is string containing text with Wiki-Like formatting - // return: string containing Markdown formatting - - // initialisation stuff - $this->output = ""; - $this->block_state = STATE_NONE; - $this->list_state = LIST_NONE; - $this->list_depth = 0; - $this->list_backtrack = array(); - $this->spelling_on = false; - $this->courseid = $courseid; - - // split content into array of single lines - $lines = explode( "\n",$content ); - $buffer = ""; - - // run through lines - foreach( $lines as $line ) { - // is this a blank line? - $blank_line = eregi( "^[[:blank:]\r]*$", $line ); - if ($blank_line) { - // first end current block according to state - $buffer = $buffer . $this->close_block( $this->block_state ); - $this->block_state = STATE_NONE; - continue; - } - - // act now depending on current block state - if ($this->block_state == STATE_NONE) { - // first character of line defines block type - if (eregi( "^> ",$line )) { - // blockquote - $buffer = $buffer . $this->line_replace( $line ). "\n"; - $this->block_state = STATE_BLOCKQUOTE; - } - else - if (eregi( "^ ",$line) ) { - // preformatted text - // MARKDOWN: no real equiv. so just use
        -          $buffer = $buffer . "
        \n";
        -          $buffer = $buffer . $this->line_replace($line) . "\n";
        -          $this->block_state = STATE_PREFORM;
        -        }
        -        else 
        -        if (eregi("^\% ",$line) ) {
        -        	// preformatted text - no processing
        -		// MARKDOWN: this is MD code form of a paragraph
        -        	$buffer = $buffer . "    " . eregi_replace( "^\%","",$line) . "\n";
        -        	$this->block_state = STATE_NOTIKI;
        -        } 	
        -        else {
        -          // ordinary paragraph
        -          $buffer = $buffer . $this->line_replace($line) . "\n";
        -          $this->block_state = STATE_PARAGRAPH; 
        -        }
        -        continue;
        -      }
        -
        -      if (($this->block_state == STATE_PARAGRAPH) |
        -          ($this->block_state == STATE_BLOCKQUOTE) |
        -          ($this->block_state == STATE_PREFORM) ) {
        -        $buffer = $buffer . $this->line_replace($line) . "\n";
        -        continue;
        -      }
        -      elseif ($this->block_state == STATE_NOTIKI) {
        -        $buffer = $buffer . "    " .$line . "\n";
        -      }  	
        -    }
        -
        -    // close off any block level tags
        -    $buffer = $buffer . $this->close_block( $this->block_state );
        -
        -    //return $buffer;    
        -    return $buffer;
        -  }
        -
        -  function update( $thing, $textfield, $formatfield, $coursesql='' ) {
        -    // converts the text in a particular activity (or sub-activity)
        -    // $thing = the database name for that 'thing' (eg, resource, choice)
        -    // $textfield = the name of the field that might hold the wiki-text
        -    // $formatfield = the name of the field that contains the format type
        -    // $coursesql = if supplied, the query to get the courseid, if not get from the 'course' field 
        -    //   ($id of record is tacked on right at the end, so phrase accordingly)
        -    // returns a count of records converted 
        -    $count = 0;
        -    if ($records = get_records( $thing,$formatfield,FORMAT_WIKI )) {
        -        foreach( $records as $record ) {
        -          $text = $record->$textfield;
        -          $id = $record->id;
        -          if (!$coursesql) {
        -            $courseid = $record->course;
        -          } else {
        -            $r = get_record( $coursesql . "$id" );
        -            $courseid = $r->course;
        -          }
        -          $newtext = $this->convert( $text,$courseid );
        -      
        -          $record->$textfield = $newtext;
        -          $record->$formatfield = FORMAT_MARKDOWN;
        -          update_record( $thing, addslashes_object( $record ) );
        -          $count++;
        -        }
        -    }
        -    return $count; 
        -  }
        -}
        -?>
        -
        +list_state != LIST_NONE) {
        +      $lclose = $this->do_list( " ",true );
        +    }
        +    	
        +    $sclose = "";
        +    switch ($state) {
        +      case STATE_PARAGRAPH:
        +        $sclose =  "

        \n"; + break; + case STATE_BLOCKQUOTE: + $sclose = "\n"; + break; + case STATE_PREFORM: + $sclose = "
        \n"; + break; + case STATE_NOTIKI: + $sclose = "
        \n"; + break; + } + + return $lclose . $sclose; + } + + + function do_replace( $line, $mark, $tag ) { + // do the regex thingy for things like bold, italic etc + // $mark is the magic character, and $tag the HTML tag to insert + + // BODGE: replace inline $mark characters in places where we want them ignored + // they will be put back after main substitutue, stops problems with eg, and/or + $bodge = chr(1); + $line = eregi_replace( '([[:alnum:]])'.$mark.'([[:alnum:]])', '\\1'.$bodge.'\\2',$line ); + + $regex = '(^| |[(.,])'.$mark.'([^'.$mark.']*)'.$mark.'([^[:alnum:]]|$)'; + $replace = '\\1<'.$tag.'>\\2\\3'; + $line = eregi_replace( $regex, $replace, $line ); + + // BODGE: back we go + $line = eregi_replace( $bodge, $mark, $line ); + + return $line; + } + + function do_replace_sub( $line, $mark, $tag ) { + // do regex for subscript and superscript (slightly different) + // $mark is the magic character and $tag the HTML tag to insert + + $regex = $mark.'([^'.$mark.']*)'.$mark; + $replace = '<'.$tag.'>\\1'; + return eregi_replace( $regex, $replace, $line ); + } + + function do_list( $line, $blank=false ) { + // handle line with list character on it + // if blank line implies drop to level 0 + + // get magic character and then delete it from the line if not blank + if ($blank) { + $listchar=""; + $count = 0; + } + else { + $listchar = $line{0}; + $count = strspn( $line, $listchar ); + $line = eregi_replace( "^[".$listchar."]+ ", "", $line ); + } + + // find what sort of list this character represents + $list_tag = ""; + $item_tag = ""; + $list_style = LIST_NONE; + switch ($listchar) { + case '*': + $list_tag = "ul"; + $item_tag = "li"; + $list_style = LIST_UNORDERED; + break; + case '#': + $list_tag = "ol"; + $item_tag = "li"; + $list_style = LIST_ORDERED; + break; + case ';': + $list_tag = "dl"; + $item_tag = "dd"; + $list_style = LIST_DEFINITION; + break; + case ':': + $list_tag = "dl"; + $item_tag = "dt"; + $list_style = LIST_DEFINITION; + break; + } + + // tag opening/closing regime now - fun bit :-) + $tags = ""; + + // if depth has reduced do number of closes to restore level + for ($i=$this->list_depth; $i>$count; $i-- ) { + $close_tag = array_pop( $this->list_backtrack ); + $tags = $tags . $close_tag; + } + + // if depth has increased do number of opens to balance + for ($i=$this->list_depth; $i<$count; $i++ ) { + array_push( $this->list_backtrack, "" ); + $tags = $tags . "<$list_tag>"; + } + + // ok, so list state is now same as style and depth same as count + $this->list_state = $list_style; + $this->list_depth = $count; + + // apply formatting to remainder of line + $line = $this->line_replace( $line ); + + if ($blank) { + $newline = $tags; + } + else { + $newline = $tags . "<$item_tag>" . $line . ""; + } + + return $newline; + } + + function line_replace( $line ) { + // return line after various formatting replacements + // have been made - order is vital to stop them interfering with each other + + if (IN_MOODLE==1) { + global $CFG; + } + + // convert < and > (kills HTML) + $line = str_replace( ">", ">", $line ); + $line = str_replace( "<", "<", $line ); + + // ---- (at least) means a
        + $line = eregi_replace( "^-{4}.*", "

        ", $line ); + + // is this a list line (starts with * # ; :) + if (eregi( "^([*]+|[#]+|[;]+|[:]+) ", $line )) { + $line = $this->do_list( $line ); + } + + // typographic conventions + $line = str_replace( "--", "—", $line ); + $line = str_replace( " - ", " – ", $line ); + $line = str_replace( "...", " … ", $line ); + $line = str_replace( "(R)", "®", $line ); + $line = str_replace( "(r)", "®", $line ); + $line = str_replace( "(TM)", "™", $line ); + $line = str_replace( "(tm)", "™", $line ); + $line = str_replace( "(C)", "©", $line ); + // $line = str_replace( "(c)", "©", $line ); + $line = str_replace( "1/4", "¼", $line ); + $line = str_replace( "1/2", "½", $line ); + $line = str_replace( "3/4", "¾", $line ); + + $line = eregi_replace( "([[:digit:]]+[[:space:]]*)x([[:space:]]*[[:digit:]]+)", "\\1×\\2", $line ); // (digits) x (digits) - multiply + + // do formatting tags + // NOTE: The / replacement *has* to be first, or it will screw the + // HTML tags that are added by the other ones + $line = $this->do_replace( $line, "/", "em" ); + $line = $this->do_replace( $line, "\*", "strong" ); + $line = $this->do_replace( $line, "\+", "ins" ); + $line = $this->do_replace( $line, "-", "del" ); + $line = $this->do_replace_sub( $line, "~", "sub" ); + $line = $this->do_replace_sub( $line, "\^", "sup" ); + // $line = $this->do_replace( $line, "\"", "q" ); + // $line = $this->do_replace( $line, "'", "q" ); + $line = $this->do_replace( $line, "%", "code" ); + $line = $this->do_replace( $line, "@", "cite" ); + + // replace quotes + $regex = '(^| |[(.,])\"([^\"]*)\"([^[:alnum:]]|$)'; + $replace = '\\1“\\2”\\3'; + $line = eregi_replace( $regex, $replace, $line ); + + // convert urls into proper link with optional link text URL(text) + $line = eregi_replace("([[:space:]]|^)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])\(([^)]+)\)", + "\\1\\5", $line); + $line = eregi_replace("([[:space:]])www\.([^[:space:]]*)([[:alnum:]#?/&=])\(([^)]+)\)", + "\\1\\5", $line); + + // make urls (with and without httpd) into proper links + $line = eregi_replace("([[:space:]]|^)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", + "\\1\\2://\\3\\4", $line); + $line = eregi_replace("([[:space:]])www\.([^[:space:]]*)([[:alnum:]#?/&=])", + "\\1www.\\2\\3", $line); + + // make email addresses into mailtos.... + $line = eregi_replace("([[:space:]]|^)([[:alnum:]._-]+@[[:alnum:]._-]+)\(([^)]+)\)", + "\\1\\3", $line); + + // !# at the beginning of any lines means a heading + $line = eregi_replace( "^!([1-6]) (.*)$", "\\2", $line ); + + // acronym handing, example HTML(Hypertext Markyp Language) + $line = ereg_replace( "([A-Z]+)\(([^)]+)\)", "\\1", $line ); + + // *Moodle Specific* + if (IN_MOODLE==1) { + // Replace resource link >>##(Description Text) + $line = eregi_replace( " ([a-zA-Z]+):([0-9]+)\(([^)]+)\)", + " wwwroot."/mod/\\1/view.php?id=\\2\">\\3 ", $line ); + + // Replace picture resource link + global $course; // This is a bit risky - it won't work everywhere + + if ($CFG->slasharguments) { + $line = eregi_replace( "/([a-zA-Z0-9./_-]+)(png|gif|jpg)\(([^)]+)\)", + "wwwroot/file.php/$course->id/\\1\\2\" alt=\"\\3\" />", $line ); + } else { + $line = eregi_replace( "/([a-zA-Z0-9./_-]+)(png|gif|jpg)\(([^)]+)\)", + "wwwroot/file.php\?file=$course->id/\\1\\2\" alt=\"\\3\" />", $line ); + } + + // Replace everything else resource link + if ($CFG->slasharguments) { + $line = eregi_replace( "file:/([[:alnum:]/._-]+)\(([^)]+)\)", + "wwwroot/file.php/$course->id/\\1\" >\\2", $line ); + } else { + $line = eregi_replace( "file:/([[:alnum:]/._-]+)\(([^)]+)\)", + "wwwroot/file.php\?file=$course->id/\\1\" >\\2", $line ); + } + + replace_smilies( $line ); + + } + + return $line; + } + + + function spellcheck( $line,$pspell_link ) { + + // split line into words + $words = preg_split( "/[\s,-.]/ ", $line ); + + // run through words + $newline = ""; + foreach($words as $word) { + $check_word = eregi_replace( "[,;:./&()* ?\"]", "", $word ); + $check_word = eregi_replace( "^'|'$","",$check_word ); + + // words not to check + $docheck = true; + if (eregi("[0-9]",$check_word)) { $docheck=false; } + + if ( $docheck && (!pspell_check( $pspell_link, $check_word)) ) { + $suggests = pspell_suggest( $pspell_link,$check_word ); + $suggest_line = ""; + foreach($suggests as $suggest) { + $suggest_line = $suggest_line . " " . $suggest; + } + $word = "$word"; + } + $newline = $newline . " " . $word; + } + + return $newline; + } + + + function format( $content ) { + // main entry point for processing TikiText + // $content is string containing text with Tiki formatting + // return: string containing XHTML formatting + + // initialisation stuff + $this->output = ""; + $this->block_state = STATE_NONE; + $this->list_state = LIST_NONE; + $this->list_depth = 0; + $this->list_backtrack = array(); + $this->spelling_on = false; + + // split content into array of single lines + $lines = explode( "\n",$content ); + $buffer = ""; + + // add a wiki div tag for CSS + $buffer = $buffer . "
        \n"; + + // run through lines + foreach( $lines as $line ) { + + // is this a blank line? + $blank_line = eregi( "^[[:blank:]\r]*$", $line ); + if ($blank_line) { + // first end current block according to state + $buffer = $buffer . $this->close_block( $this->block_state ); + $this->block_state = STATE_NONE; + continue; + } + + // is this a spelling line + $spell_parms = array(); + $spelling = eregi( "^!SPELL:([a-z]+):?(american|british|canadian)?(\r| |$)", $line,$spell_parms ); + if ($spelling) { + $this->spelling_on = true; + $pspell_link = pspell_new( $spell_parms[1], $spell_parms[2] ); + $line = ""; + } + + // spellcheck + if ($this->spelling_on) { + $line = $this->spellcheck( $line, $pspell_link ); + } + + // act now depending on current block state + if ($this->block_state == STATE_NONE) { + // first character of line defines block type + if (eregi( "^> ",$line )) { + // blockquote + $buffer = $buffer . "
        \n"; + $buffer = $buffer . $this->line_replace( eregi_replace( "^>","",$line) ). "\n"; + $this->block_state = STATE_BLOCKQUOTE; + } + else + if (eregi( "^ ",$line) ) { + // preformatted text + $buffer = $buffer . "
        \n";
        +          $buffer = $buffer . $this->line_replace($line) . "\n";
        +          $this->block_state = STATE_PREFORM;
        +        }
        +        else 
        +        if (eregi("^\% ",$line) ) {
        +        	// preformatted text - no processing
        +        	$buffer = $buffer . "
        \n";
        +        	$buffer = $buffer . eregi_replace( "^\%","",$line) . "\n";
        +        	$this->block_state = STATE_NOTIKI;
        +        } 	
        +        else {
        +          // ordinary paragraph
        +          $buffer = $buffer . "

        \n"; + $buffer = $buffer . $this->line_replace($line) . "\n"; + $this->block_state = STATE_PARAGRAPH; + } + continue; + } + + if (($this->block_state == STATE_PARAGRAPH) | + ($this->block_state == STATE_BLOCKQUOTE) | + ($this->block_state == STATE_PREFORM) ) { + $buffer = $buffer . $this->line_replace($line) . "\n"; + continue; + } + elseif ($this->block_state == STATE_NOTIKI) { + $buffer = $buffer . $line . "\n"; + } + } + + // close off any block level tags + $buffer = $buffer . $this->close_block( $this->block_state ); + + // close off wiki div + $buffer = $buffer . "

        \n"; + + //return $buffer; + return $buffer; + } + +} + +?> diff --git a/lib/womenslib.php b/lib/womenslib.php deleted file mode 100644 index 52004f2f91b..00000000000 --- a/lib/womenslib.php +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/lib/xmlize.php b/lib/xmlize.php index 8493d2c1db7..3bffc6a0397 100644 --- a/lib/xmlize.php +++ b/lib/xmlize.php @@ -1,7 +1,6 @@ - * - * $xml = xmlize($array); - * - * See the function {@link traverse_xmlize()} for information about the + * usage: $xml = xmlize($array); + * + * See the function traverse_xmlize() for information about the * structure of the array, it's much easier to explain by showing you. * Be aware that the array is somewhat tricky. I use xmlize all the time, - * but still need to use {@link traverse_xmlize()} quite often to show me the structure! + * but still need to use traverse_xmlize quite often to show me the structure! * - * THIS IS A PHP 5 VERSION: - * - * This modified version basically has a new optional parameter - * to specify an OUTPUT encoding. If not specified, it defaults to UTF-8. - * I recommend you to read this PHP bug. There you can see how PHP4, PHP5.0.0 - * and PHP5.0.2 will handle this. - * {@link http://bugs.php.net/bug.php?id=29711} - * Ciao, Eloy :-) - * - * - * @author Hans Anderson - * @param array $data The array to be converted - * @param int $WHITE If set to 1 allows the parser to skip "space" characters in xml document. Default is 0 - * @param string $encoding Specify an OUTPUT encoding. If not specified, it defaults to UTF-8. - * @return array */ -function xmlize($data, $WHITE=1, $encoding='UTF-8') { + +function xmlize($data, $WHITE=1) { $data = trim($data); $vals = $index = $array = array(); - $parser = xml_parser_create($encoding); + $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, $WHITE); xml_parse_into_struct($parser, $data, $vals, $index); @@ -69,12 +46,15 @@ function xmlize($data, $WHITE=1, $encoding='UTF-8') { return $array; } -/** - * @internal You don't need to do anything with this function, it's called by - * xmlize. It's a recursive function, calling itself as it goes deeper +/* + * + * You don't need to do anything with this function, it's called by + * xmlize. It's a recursive function, calling itself as it goes deeper * into the xml levels. If you make any improvements, please let me know. - * @access private + * + * */ + function xml_depth($vals, &$i) { $children = array(); @@ -154,29 +134,24 @@ function xml_depth($vals, &$i) { } -/** - * This helps you understand the structure of the array {@link xmlize()} outputs +/* function by acebone@f2s.com, a HUGE help! * - * Function by acebone@f2s.com, a HUGE help!
        - * Usage:
        - * + * this helps you understand the structure of the array xmlize() outputs + * + * usage: * traverse_xmlize($xml, 'xml_'); * print '
        ' . implode("", $traverse_array . '
        '; - *
        - * @author acebone@f2s.com - * @param array $array ? - * @param string $arrName ? - * @param int $level ? - * @return int - * @todo Finish documenting this function + * + * */ -function traverse_xmlize($array, $arrName = 'array', $level = 0) { + +function traverse_xmlize($array, $arrName = "array", $level = 0) { foreach($array as $key=>$val) { if ( is_array($val) ) { - traverse_xmlize($val, $arrName . '[' . $key . ']', $level + 1); + traverse_xmlize($val, $arrName . "[" . $key . "]", $level + 1); } else { $GLOBALS['traverse_array'][] = '$' . $arrName . '[' . $key . '] = "' . $val . "\"\n"; } @@ -186,4 +161,5 @@ function traverse_xmlize($array, $arrName = 'array', $level = 0) { } -?> \ No newline at end of file +?> + diff --git a/login/change_password.php b/login/change_password.php index 02d0257cb49..b31e8b4b859 100644 --- a/login/change_password.php +++ b/login/change_password.php @@ -28,55 +28,33 @@ error("Can't change guest password!"); } - if (is_internal_auth($user->auth)){ - if (set_field("user", "password", $password, "username", $username)) { - $user->password = $password; - } else { - error("Could not set the new password"); - } - } else { // external users - // the relevant auth libs should be loaded already - // as validate_form() calls authenticate_user_login() - // check that we allow changes through moodle - if (!empty($CFG->{'auth_'. $user->auth.'_stdchangepassword'})) { - if (function_exists('auth_user_update_password')){ - // note that we pass cleartext password - if (auth_user_update_password($user->username, $frm->newpassword1)){ - $user->password = $password; - } else { - error('Could not set the new password'); - } - } else { - error('The authentication module is misconfigured (missing auth_user_update_password)'); - } - } else { - error("You cannot change your password this way."); - } + if (set_field("user", "password", $password, "username", $username)) { + $user->password = $password; + } else { + error("Could not set the new password"); } - + $USER = $user; $USER->loggedin = true; $USER->site = $CFG->wwwroot; // for added security - // register success changing password - unset_user_preference('auth_forcepasswordchange'); - set_moodle_cookie($USER->username); reset_login_count(); $strpasswordchanged = get_string("passwordchanged"); - if (!empty($course->id)) { - add_to_log($course->id, "user", "change password", "view.php?id=$user->id&course=$course->id", "$user->id"); + if ($course->id) { + add_to_log($course->id, "user", "change password", "view.php?id=$user->id&course=$course->id", "$user->id"); $fullname = fullname($USER, true); print_header($strpasswordchanged, $strpasswordchanged, - "wwwroot/course/view.php?id=$course->id\">$course->shortname -> - wwwroot/user/index.php?id=$course->id\">".get_string("participants")." -> - wwwroot/user/view.php?id=$USER->id&course=$course->id\">$fullname -> $strpasswordchanged", $focus); - notice($strpasswordchanged, "$CFG->wwwroot/user/view.php?id=$USER->id&course=$id"); + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> + wwwroot/user/index.php?id=$course->id\">".get_string("participants")." -> + wwwroot/user/view.php?id=$USER->id&course=$course->id\">$fullname -> $strpasswordchanged", $focus); + notice($strpasswordchanged, "$CFG->wwwroot/user/view.php?id=$USER->id&course=$id"); } else { - add_to_log(SITEID, "user", "change password", "view.php?id=$user->id&course=".SITEID, "$course->id"); + $site = get_site(); + add_to_log($site->id, "user", "change password", "view.php?id=$user->id&course=$site->id", "$course->id"); print_header($strpasswordchanged, $strpasswordchanged, $strpasswordchanged, ""); notice($strpasswordchanged, "$CFG->wwwroot/"); } @@ -86,8 +64,11 @@ } } - // We NEED to set this, because the form assumes it has a value! - $frm->id = empty($course->id) ? 0 : $course->id; + + + if ($course->id) { + $frm->id = $id; + } if (empty($frm->username)) { $frm->username = get_moodle_cookie(); @@ -103,14 +84,14 @@ if (!empty($course->id)) { $fullname = fullname($USER, true); print_header($strchangepassword, $strchangepassword, - "wwwroot/course/view.php?id=$course->id\">$course->shortname -> - wwwroot/user/index.php?id=$course->id\">".get_string("participants")." -> - wwwroot/user/view.php?id=$USER->id&course=$course->id\">$fullname -> $strchangepassword", $focus); + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> + wwwroot/user/index.php?id=$course->id\">".get_string("participants")." -> + wwwroot/user/view.php?id=$USER->id&course=$course->id\">$fullname -> $strchangepassword", $focus); } else { print_header($strchangepassword, $strchangepassword, $strchangepassword, $focus); } - print_simple_box_start("center"); + print_simple_box_start("center", "", $THEME->cellheading); include("change_password_form.html"); print_simple_box_end(); print_footer(); @@ -123,35 +104,24 @@ *****************************************************************************/ function validate_form($frm, &$err) { - if (empty($frm->username)){ + if (empty($frm->username)) $err->username = get_string("missingusername"); - } else { - if (empty($frm->password)){ - $err->password = get_string("missingpassword"); - } else { - //require non adminusers to give valid password - if (!isadmin() && !authenticate_user_login($frm->username, $frm->password)){ - $err->password = get_string("wrongpassword"); - } - } - } - if (empty($frm->newpassword1)){ + else if (empty($frm->password)) + $err->password = get_string("missingpassword"); + + else if (!authenticate_user_login($frm->username, $frm->password)) + $err->password = get_string("wrongpassword"); + + if (empty($frm->newpassword1)) $err->newpassword1 = get_string("missingnewpassword"); - } - if (empty($frm->newpassword2)){ + if (empty($frm->newpassword2)) $err->newpassword2 = get_string("missingnewpassword"); - } else { - if ($frm->newpassword1 <> $frm->newpassword2) { - $err->newpassword2 = get_string("passwordsdiffer"); - } else { - if($frm->password === $frm->newpassword1){ - $err->newpassword1 = get_string("mustchangepassword"); - } - } - } - + + else if ($frm->newpassword1 <> $frm->newpassword2) + $err->newpassword2 = get_string("passwordsdiffer"); + return; } diff --git a/login/change_password_form.html b/login/change_password_form.html index a42d29f9eab..226b54020fe 100644 --- a/login/change_password_form.html +++ b/login/change_password_form.html @@ -15,37 +15,27 @@ ?>
        - - - + - - - - - - - - - - + + + + + - - + diff --git a/login/confirm.php b/login/confirm.php index 5befc8b21ac..cbc3e391bc0 100644 --- a/login/confirm.php +++ b/login/confirm.php @@ -1,24 +1,24 @@ -auth/lib.php"); if (isset($_GET['p']) and isset($_GET['s']) ) { # p = user.secret s = user.username - $user = get_user_info_from_db("username", $_GET['s']); + $user = get_user_info_from_db("username", "$s"); if (!empty($user)) { if ($user->confirmed) { print_header(get_string("alreadyconfirmed"), get_string("alreadyconfirmed"), "", ""); - echo "

        ".get_string("thanks").", ". fullname($user) . "

        \n"; - echo "

        ".get_string("alreadyconfirmed")."

        \n"; - echo "

        -> wwwroot/course/\">".get_string("courses")."

        \n"; + echo "

        ".get_string("thanks").", ". $user->firstname ." ". $user->lastname . "

        \n"; + echo "

        ".get_string("alreadyconfirmed")."

        \n"; + echo "

        -> wwwroot/course/\">".get_string("courses")."

        \n"; print_footer(); exit; } - if ($user->secret == $_GET['p']) { // They have provided the secret key to get in + if ($user->secret == $p) { // They have provided the secret key to get in if (!set_field("user", "confirmed", 1, "id", $user->id)) { error("Could not confirm this user!"); @@ -50,9 +50,9 @@ } print_header(get_string("confirmed"), get_string("confirmed"), "", ""); - echo "

        ".get_string("thanks").", ". fullname($USER) . "

        \n"; - echo "

        ".get_string("confirmed")."

        \n"; - echo "

        -> wwwroot/course/\">".get_string("courses")."

        \n"; + echo "

        ".get_string("thanks").", ". $USER->firstname ." ". $USER->lastname . "

        \n"; + echo "

        ".get_string("confirmed")."

        \n"; + echo "

        -> wwwroot/course/\">".get_string("courses")."

        \n"; print_footer(); exit; diff --git a/login/forgot_password.php b/login/forgot_password.php index 910abc50324..d83341a6d1d 100644 --- a/login/forgot_password.php +++ b/login/forgot_password.php @@ -1,4 +1,4 @@ -emailstop = 0; // Send mail even if sending mail was forbidden - if (! send_password_change_confirmation_email($user)) { error("Could not send you an email to confirm the password change"); } @@ -75,7 +73,7 @@ } print_header(get_string("senddetails"), get_string("senddetails"), - "wwwroot/login/index.php\">".get_string("login")." -> ".get_string("senddetails"), + "wwwroot/login/index.php\">".get_string("login")." -> ".get_string("senddetails"), "form.email"); include("forgot_password_form.html"); print_footer(); diff --git a/login/forgot_password_form.html b/login/forgot_password_form.html index c1c14f2058b..2450dd26e30 100644 --- a/login/forgot_password_form.html +++ b/login/forgot_password_form.html @@ -1,23 +1,23 @@ -
        : - - " /> - - username)?> - +

        :

        username)) { formerr($err->username); } ?>
        :" /> - password)) { formerr($err->password); } ?> -
        :" /> +

        :

        + password)) { formerr($err->password); } ?> +

        :

        newpassword1)) { formerr($err->newpassword1); } ?>
        (): ()" /> +

        ():

        newpassword2)) { formerr($err->newpassword2); } ?>
        +
        - -
        - + +

        + wwwroot/login/forgot_password.php") ?>" method="post" name="form" id="form"> -
        :" /> + email)) {formerr($err->email);} ?>
        " /> - " onclick="javascript: history.go(-1)" /> + " onClick="javascript: history.go(-1)" />
        diff --git a/login/index.php b/login/index.php index 4dd0fa8f5f3..6a4df7f3d7c 100644 --- a/login/index.php +++ b/login/index.php @@ -1,4 +1,4 @@ -auth == 'cas' && !empty($CFG->cas_enabled)) { - require($CFG->dirroot.'/auth/cas/login.php'); + $frm = false; + if ((!empty($SESSION->wantsurl) and strstr($SESSION->wantsurl,"username=guest")) or $loginguest) { + /// Log in as guest automatically (idea from Zbigniew Fiedorowicz) + $frm->username = "guest"; + $frm->password = "guest"; + } else { + $frm = data_submitted(); + } + + if ($frm) { + $frm->username = trim(moodle_strtolower($frm->username)); + $user = authenticate_user_login($frm->username, $frm->password); + update_login_count(); + + if ($user) { + if (! $user->confirmed ) { // they never confirmed via email + print_header(get_string("mustconfirm"), get_string("mustconfirm") ); + print_heading(get_string("mustconfirm")); + print_simple_box(get_string("emailconfirmsent", "", $user->email), "center"); + print_footer(); + die; + } + + $USER = $user; + if (!empty($USER->description)) { + $USER->description = true; // No need to cart all of it around + } + $USER->loggedin = true; + $USER->site = $CFG->wwwroot; // for added security + + if ($USER->username == "guest") { + $USER->lang = $CFG->lang; // Guest language always same as site + $USER->firstname = get_string("guestuser"); // Name always in current language + $USER->lastname = " "; + } + + if (!update_user_in_db()) { + error("Weird error: User not found"); + } + + if (!update_user_login_times()) { + error("Wierd error: could not update login records"); + } + + set_moodle_cookie($USER->username); + + $wantsurl = $SESSION->wantsurl; + + unset($SESSION->wantsurl); + unset($SESSION->lang); + $SESSION->justloggedin = true; + + if (user_not_fully_set_up($USER)) { + $site = get_site(); + redirect("$CFG->wwwroot/user/edit.php?id=$USER->id&course=$site->id"); + + } else if (strpos($wantsurl, $CFG->wwwroot) === 0) { /// Matches site address + redirect($wantsurl); + + } else { + redirect("$CFG->wwwroot/"); /// Go to the standard home page + } + + reset_login_count(); + + die; + + } else { + $errormsg = get_string("invalidlogin"); + } + } + + + if (empty($errormsg)) { + $errormsg = ""; + } + + if (empty($SESSION->wantsurl)) { + $SESSION->wantsurl = $_SERVER["HTTP_REFERER"]; + } + + if (empty($frm->username)) { + $frm->username = get_moodle_cookie(); + $frm->password = ""; + } + + if (!empty($frm->username)) { + $focus = "login.password"; + } else { + $focus = "login.username"; + } + + if ($CFG->auth == "email" or $CFG->auth == "none" or chop($CFG->auth_instructions) <> "" ) { + $show_instructions = true; + } else { + $show_instructions = false; } - //Define variables used in page if (!$site = get_site()) { error("No site found!"); } @@ -45,198 +138,12 @@ $loginsite = get_string("loginsite"); - $loginurl = (!empty($CFG->alternateloginurl)) ? $CFG->alternateloginurl : ''; - - $frm = false; - $user = false; - if ((!empty($SESSION->wantsurl) and strstr($SESSION->wantsurl,'username=guest')) or $loginguest) { - /// Log in as guest automatically (idea from Zbigniew Fiedorowicz) - $frm->username = 'guest'; - $frm->password = 'guest'; - } else if (!empty($SESSION->wantsurl) && file_exists($CFG->dirroot.'/login/weblinkauth.php')) { - // Handles the case of another Moodle site linking into a page on this site - include($CFG->dirroot.'/login/weblinkauth.php'); - if (function_exists(weblink_auth)) { - $user = weblink_auth($SESSION->wantsurl); - } - if ($user) { - $frm->username = $user->username; - } else { - $frm = data_submitted($loginurl); - } - } else { - $frm = data_submitted($loginurl); - } - - if ($frm and (get_moodle_cookie() == '')) { // Login without cookie - - $errormsg = get_string("cookiesnotenabled"); - - } else if ($frm) { // Login WITH cookies - - $frm->username = trim(moodle_strtolower($frm->username)); - - if (($frm->username == 'guest') and empty($CFG->guestloginbutton)) { - $user = false; /// Can't log in as guest if guest button is disabled - $frm = false; - } else if (!$user) { - $user = authenticate_user_login($frm->username, $frm->password); - } - update_login_count(); - - if ($user) { - if (! $user->confirmed ) { // they never confirmed via email - print_header(get_string("mustconfirm"), get_string("mustconfirm") ); - print_heading(get_string("mustconfirm")); - print_simple_box(get_string("emailconfirmsent", "", $user->email), "center"); - print_footer(); - die; - } - - $USER = $user; - if (!empty($USER->description)) { - $USER->description = true; // No need to cart all of it around - } - $USER->loggedin = true; - $USER->site = $CFG->wwwroot; // for added security, store the site in the session - sesskey(); // for added security, used to check script parameters - - if ($USER->username == "guest") { - $USER->lang = $CFG->lang; // Guest language always same as site - $USER->firstname = get_string("guestuser"); // Name always in current language - $USER->lastname = " "; - } - - if (!update_user_login_times()) { - error("Wierd error: could not update login records"); - } - - set_moodle_cookie($USER->username); - - unset($SESSION->lang); - unset($SESSION->encoding); - - $SESSION->justloggedin = true; - $SESSION->encoding = get_string('thischarset'); - - // Restore the calendar filters, if saved - if(intval(get_user_preferences('calendar_persistflt', 0))) { - include_once($CFG->dirroot.'/calendar/lib.php'); - calendar_set_filters_status(get_user_preferences('calendar_savedflt', 0xff)); - } - - //Select password change url - if (is_internal_auth() || $CFG->{'auth_'.$USER->auth.'_stdchangepassword'}){ - $passwordchangeurl=$CFG->wwwroot.'/login/change_password.php'; - } elseif($CFG->changepassword) { - $passwordchangeurl=$CFG->changepassword; - } - - - // check whether the user should be changing password - if (get_user_preferences('auth_forcepasswordchange', false)){ - if (isset($passwordchangeurl)) { - redirect($passwordchangeurl); - } else { - error("You cannot proceed without changing your password. - However there is no available page for changing it. - Please contact your Moodle Administrator."); - } - } - - - add_to_log(SITEID, "user", "login", "view.php?id=$user->id&course=".SITEID, $user->id, 0, $user->id); - - if (user_not_fully_set_up($USER)) { - $urltogo = $CFG->wwwroot.'/user/edit.php?id='.$USER->id.'&course='.SITEID; - // We don't delete $SESSION->wantsurl yet, so we get there later - - } else if (isset($SESSION->wantsurl) and (strpos($SESSION->wantsurl, $CFG->wwwroot) === 0)) { - $urltogo = $SESSION->wantsurl; /// Because it's an address in this site - unset($SESSION->wantsurl); - - } else { - $urltogo = $CFG->wwwroot.'/'; /// Go to the standard home page - unset($SESSION->wantsurl); /// Just in case - } - - // check if user password has expired - // Currently supported only for ldap-authentication module - if (isset($CFG->ldap_expiration) && $CFG->ldap_expiration == 1 ) { - if (function_exists('auth_password_expire')){ - $days2expire = auth_password_expire($USER->username); - if (intval($days2expire) > 0 && intval($days2expire) < intval($CFG->{$USER->auth.'_expiration_warning'})) { - print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "
        $langmenu
        "); - notice_yesno(get_string('auth_passwordwillexpire', 'auth', $days2expire), $passwordchangeurl, $urltogo); - print_footer(); - exit; - } elseif (intval($days2expire) < 0 ) { - print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "
        $langmenu
        "); - notice_yesno(get_string('auth_passwordisexpired', 'auth'), $passwordchangeurl, $urltogo); - print_footer(); - exit; - } - } - } - - reset_login_count(); - - redirect($urltogo); - - exit; - - } else { - $errormsg = get_string("invalidlogin"); - } - } - - -/// We need to show a login form - -/// First, let's remember where the user was trying to get to before they got here - - if (empty($SESSION->wantsurl)) { - $SESSION->wantsurl = array_key_exists('HTTP_REFERER',$_SERVER) ? $_SERVER["HTTP_REFERER"] : $CFG->wwwroot; - } - - if (!empty($loginurl)) { // We don't want the standard forms, go elsewhere - redirect($loginurl); - } - - -/// Generate the login page - - if (empty($errormsg)) { - $errormsg = ''; - } - - if (get_moodle_cookie() == '') { - set_moodle_cookie('nobody'); // To help search for cookies - } - - if (empty($frm->username)) { - $frm->username = get_moodle_cookie() === 'nobody' ? '' : get_moodle_cookie(); - $frm->password = ""; - } - - if (!empty($frm->username)) { - $focus = "login.password"; - } else { - $focus = "login.username"; - } - - if ($CFG->auth == "email" or $CFG->auth == "none" or chop($CFG->auth_instructions) <> "" ) { - $show_instructions = true; - } else { - $show_instructions = false; - } - - print_header("$site->fullname: $loginsite", $site->fullname, $loginsite, $focus, - '', true, '
        '.$langmenu.'
        '); - + print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "
        $langmenu
        "); include("index_form.html"); - print_footer(); + exit; + + // No footer on this page ?> diff --git a/login/index_form.html b/login/index_form.html index 45bd557d69f..d06e5a96f10 100644 --- a/login/index_form.html +++ b/login/index_form.html @@ -1,39 +1,39 @@ - +
        + - - - - + + + -
        - - - -
        +

        +
        +

        +
        +

        :
        ()

        - +
        - - - -
        - : + + + - - - + -
        +

        :

        - " /> + +
        - : +
        +

        :

        - " /> + +
        @@ -48,11 +48,13 @@ guestloginbutton) { ?>

        :

        +

        " /> +

        changepassword or is_internal_auth() ) { @@ -66,18 +68,20 @@ ?>

        +

        +

        + auth) { case "email": - print_string("loginsteps", "", "signup.php"); + echo "

        ".get_string("loginsteps", "", "signup.php")."

        "; ?>
        @@ -86,13 +90,11 @@
        ".get_string("loginstepsnone")."

        "; break; default: echo format_text($CFG->auth_instructions); - if (!function_exists('auth_user_login')) { - require_once("../auth/$CFG->auth/lib.php"); - } + require_once("../auth/$CFG->auth/lib.php"); if (!empty($CFG->auth_user_create) and function_exists('auth_user_create') ){ ?>
        diff --git a/login/logout.php b/login/logout.php index a7de02faedd..ec50a1ab0c6 100644 --- a/login/logout.php +++ b/login/logout.php @@ -1,17 +1,8 @@ -id)) { - add_to_log(SITEID, "user", "logout", "view.php?id=$USER->id&course=".SITEID, $USER->id, 0, $USER->id); - - if ($USER->auth == 'cas' && !empty($CFG->cas_enabled)) { - require($CFG->dirroot.'/auth/cas/logout.php'); - } - } - - if (ini_get_bool("register_globals") and check_php_version("4.3.0")) { // This method is just to try to avoid silly warnings from PHP 4.3.0 session_unregister("USER"); diff --git a/login/signup.php b/login/signup.php index 58a238d7bea..6385bd35af7 100644 --- a/login/signup.php +++ b/login/signup.php @@ -1,4 +1,4 @@ -auth/lib.php"); @@ -70,7 +70,7 @@ $langmenu = popup_form ("$CFG->wwwroot/login/signup.php?lang=", $langs, "chooselang", $currlang, "", "", "", true); } - print_header($newaccount, $newaccount, "$login -> $newaccount", $focus, "", true, "
        $langmenu
        "); + print_header($newaccount, $newaccount, "$login -> $newaccount", $focus, "", true, "
        $langmenu
        "); include("signup_form.html"); print_footer(); @@ -126,7 +126,7 @@ function validate_form($user, &$err) { $err->email = get_string("invalidemail"); } else if (record_exists("user", "email", $user->email)) { - $err->email = get_string("emailexists")." ".get_string("newpassword")."?"; + $err->email = get_string("emailexists")." ".get_string("newpassword")."?"; } @@ -146,12 +146,6 @@ function validate_form($user, &$err) { $err->country = get_string("missingcountry"); } - if (empty($err->email)) { - if ($error = email_is_not_allowed($user->email)) { - $err->email = $error; - } - } - return; } diff --git a/login/signup_form.html b/login/signup_form.html index 1f6ea611970..14cd3f1fdcd 100644 --- a/login/signup_form.html +++ b/login/signup_form.html @@ -1,193 +1,96 @@ -username)) { - - $user->username = ""; - - } - - if (empty($user->password)) { - - $user->password = ""; - - } - - if (empty($user->email)) { - - $user->email = ""; - - } - - if (empty($user->email2)) { - - $user->email2 = ""; - - } - - if (empty($user->firstname)) { - - $user->firstname = ""; - - } - - if (empty($user->lastname)) { - - $user->lastname = ""; - - } - - if (empty($user->city)) { - - $user->city = ""; - - } - - if (empty($user->country)) { - - $user->country = ""; - - } - - - -?> - -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        :
        :" /> - - username)) { formerr($err->username); } ?> - -
        :" /> - - password)) { formerr($err->password); } ?> - -


        - - :
        - - ()

        - -
        :" /> - - email)) { formerr($err->email); } ?> - -
        :" /> - - email2)) { formerr($err->email2); } ?> - -
        :" /> - - firstname)) { formerr($err->firstname);} ?> - -
        :" /> - - lastname)) { formerr($err->lastname);} ?> - -
        :" /> - - city)) { formerr($err->city);} ?> - -
        :country, get_string("selectacountry"), "", "") ?> - - country)) { formerr($err->country);} ?> - -
        " />
        - - - - - -
        - +username)) { + $user->username = ""; + } + if (empty($user->password)) { + $user->password = ""; + } + if (empty($user->email)) { + $user->email = ""; + } + if (empty($user->email2)) { + $user->email2 = ""; + } + if (empty($user->firstname)) { + $user->firstname = ""; + } + if (empty($user->lastname)) { + $user->lastname = ""; + } + if (empty($user->city)) { + $user->city = ""; + } + if (empty($user->country)) { + $user->country = ""; + } + +?> +
        + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        :

        :

        + username)) { formerr($err->username); } ?> +

        :

        + password)) { formerr($err->password); } ?> +


        + :
        + ()

        +

        :

        + email)) { formerr($err->email); } ?> +

        :

        + email2)) { formerr($err->email2); } ?> +

        :

        + firstname)) { formerr($err->firstname);} ?> +

        :

        + lastname)) { formerr($err->lastname);} ?> +

        :

        + city)) { formerr($err->city);} ?> +

        :

        country, get_string("selectacountry"), "", "") ?> + country)) { formerr($err->country);} ?> +
        " />
        +
        + +
        diff --git a/message/bell.wav b/message/bell.wav deleted file mode 100644 index cb19faca25a882c91fe7f2e8b220f5ab4deb38fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5272 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 - } - - if (empty($CFG->messaging)) { - error("Messaging is disabled on this site"); - } - -/// Script parameters - $userid = required_param('id', PARAM_INT); - -/// Check the user we are talking to is valid - if (! $user = get_record('user', 'id', $userid)) { - error("User ID was incorrect"); - } - -/// Print frameset to contain all the various panes -?> - - - <?php echo get_string('discussion', 'message').': '.fullname($user) ?> - - - - - - - Sorry, but support for Frames is required to use Messaging - - diff --git a/message/history.php b/message/history.php deleted file mode 100644 index 7936156c8d9..00000000000 --- a/message/history.php +++ /dev/null @@ -1,88 +0,0 @@ -wwwroot); - } - - if (empty($CFG->messaging)) { - error("Messaging is disabled on this site"); - } - -/// Script parameters - $userid1 = required_param('user1', PARAM_INT); - if (! $user1 = get_record("user", "id", $userid1)) { // Check it's correct - error("User ID 1 was incorrect"); - } - - if (isadmin()) { // Able to see any discussion - $userid2 = optional_param('user2', $USER->id, PARAM_INT); - if (! $user2 = get_record("user", "id", $userid2)) { // Check - error("User ID 2 was incorrect"); - } - } else { - $userid2 = $USER->id; // Can only see messages involving yourself - $user2 = $USER; - } - $search = optional_param('search', '', PARAM_CLEAN); - - add_to_log(SITEID, 'message', 'history', 'history.php?user1='.$userid1.'&user2='.$userid2, $userid1); - -/// Our two users are defined - let's set up the page - - print_header(get_string('messagehistory', 'message'), '', '', '', ''); - -/// Print out a heading including the users we are looking at - - print_simple_box_start('center'); - echo ''; - echo ''; - echo ''; - echo ''; - echo '
        '; - echo print_user_picture($user1->id, SITEID, $user1->picture, 100, true, true, 'userwindow').'
        '; - echo fullname($user1); - echo '
        '; - echo ''; - echo ''; - echo ''; - echo print_user_picture($user2->id, SITEID, $user2->picture, 100, true, true, 'userwindow').'
        '; - echo fullname($user2); - echo '
        '; - print_simple_box_end(); - - -/// Get all the messages and print them - - if ($messages = message_get_history($user1, $user2)) { - $current->mday = ''; - $current->month = ''; - $current->year = ''; - $messagedate = get_string('strftimetime'); - $blockdate = get_string('strftimedaydate'); - foreach ($messages as $message) { - $date = usergetdate($message->timecreated); - if ($current->mday != $date['mday'] | $current->month != $date['month'] | $current->year != $date['year']) { - $current->mday = $date['mday']; - $current->month = $date['month']; - $current->year = $date['year']; - echo ''; - print_heading(userdate($message->timecreated, $blockdate), 'center', 4); - } - if ($message->useridfrom == $user1->id) { - echo message_format_message($message, $user1, $messagedate, $search); - } else { - echo message_format_message($message, $user2, $messagedate, $search); - } - } - } else { - print_heading(get_string('nomessagesfound', 'message')); - } - - -?> diff --git a/message/index.php b/message/index.php deleted file mode 100644 index 30ef83dab65..00000000000 --- a/message/index.php +++ /dev/null @@ -1,88 +0,0 @@ -wwwroot); - } - - if (empty($CFG->messaging)) { - error("Messaging is disabled on this site"); - } - -/// Optional variables that may be passed in - $tab = optional_param('tab', 'contacts'); // current tab - default to contacts - $addcontact = optional_param('addcontact', 0, PARAM_INT); // adding a contact - $removecontact = optional_param('removecontact', 0, PARAM_INT); // removing a contact - $blockcontact = optional_param('blockcontact', 0, PARAM_INT); // blocking a contact - $unblockcontact = optional_param('unblockcontact', 0, PARAM_INT); // unblocking a contact - $popup = optional_param('popup', false, PARAM_ALPHA); // If set then starts a new popup window - -/// Popup a window if required and quit (usually from external links). - if ($popup) { - print_header(); - echo '"; - redirect("$CFG->wwwroot/"); - exit; - } - -/// Process any contact maintenance requests there may be - if ($addcontact and confirm_sesskey()) { - add_to_log(SITEID, 'message', 'add contact', 'history.php?user1='.$addcontact.'&user2='.$USER->id, $addcontact); - message_add_contact($addcontact); - } - if ($removecontact and confirm_sesskey()) { - add_to_log(SITEID, 'message', 'remove contact', 'history.php?user1='.$removecontact.'&user2='.$USER->id, $removecontact); - message_remove_contact($removecontact); - } - if ($blockcontact and confirm_sesskey()) { - add_to_log(SITEID, 'message', 'block contact', 'history.php?user1='.$blockcontact.'&user2='.$USER->id, $blockcontact); - message_block_contact($blockcontact); - } - if ($unblockcontact and confirm_sesskey()) { - add_to_log(SITEID, 'message', 'unblock contact', 'history.php?user1='.$unblockcontact.'&user2='.$USER->id, $unblockcontact); - message_unblock_contact($unblockcontact); - } - - -/// Header on this page - if ($tab == 'contacts') { - print_header(get_string('messages', 'message').' - '.$SITE->fullname, '', '', '', - ''); - } else { - print_header(get_string('messages', 'message').' - '.$SITE->fullname); - } - - echo ''; - echo ''; - -/// Print out the tabs - echo ''; - - - echo ''; - -/// Print out contents of the tab - echo '
        '; - $tabrow = array(); - $tabrow[] = new tabobject('contacts', $CFG->wwwroot.'/message/index.php?tab=contacts', 'contacts'); - $tabrow[] = new tabobject('search', $CFG->wwwroot.'/message/index.php?tab=search', 'search'); - $tabrow[] = new tabobject('settings', $CFG->wwwroot.'/message/index.php?tab=settings', 'settings'); - $tabrows = array($tabrow); - - print_tabs($tabrows, $tab); - - echo '
        '; - -/// a print function is associated with each tab - $tabprintfunction = 'message_print_'.$tab; - if (function_exists($tabprintfunction)) { - $tabprintfunction(); - } - - echo '
        '; - echo ' '; diff --git a/message/lib.php b/message/lib.php deleted file mode 100644 index 3e700317e3c..00000000000 --- a/message/lib.php +++ /dev/null @@ -1,1014 +0,0 @@ -message_contacts_refresh)) { // Refresh the contacts list every 60 seconds - $CFG->message_contacts_refresh = 60; -} -if (!isset($CFG->message_chat_refresh)) { // Look for new comments every 5 seconds - $CFG->message_chat_refresh = 5; -} -if (!isset($CFG->message_offline_time)) { - $CFG->message_offline_time = 300; -} - - -function message_print_contacts() { - global $USER, $CFG; - - $timetoshowusers = 300; //Seconds default - if (isset($CFG->block_online_users_timetosee)) { - $timetoshowusers = $CFG->block_online_users_timetosee * 60; - } - $timefrom = time()-$timetoshowusers; - - - /// get lists of contacts and unread messages - $onlinecontacts = get_records_sql("SELECT u.id, u.firstname, u.lastname, u.picture, mc.blocked - FROM {$CFG->prefix}user u, {$CFG->prefix}message_contacts mc - WHERE mc.userid='$USER->id' AND u.id=mc.contactid AND u.lastaccess>=$timefrom - AND mc.blocked='0' - ORDER BY u.firstname ASC"); - - $offlinecontacts = get_records_sql("SELECT u.id, u.firstname, u.lastname, u.picture, mc.blocked - FROM {$CFG->prefix}user u, {$CFG->prefix}message_contacts mc - WHERE mc.userid='$USER->id' AND u.id=mc.contactid AND u.lastaccess<$timefrom - AND mc.blocked='0' - ORDER BY u.firstname ASC"); - - $unreadmessages = get_records_sql("SELECT m.id, m.useridfrom, u.firstname, u.lastname, u.picture - FROM {$CFG->prefix}user u, {$CFG->prefix}message m - WHERE m.useridto='$USER->id' AND u.id=m.useridfrom"); - - $blockedcontacts = get_records_select('message_contacts', "userid='$USER->id' AND blocked='1'", '', 'contactid, id'); - - - echo ''; - - -/// print out list of online contacts - - $countcontacts = (is_array($onlinecontacts)) ? count($onlinecontacts) : 0; - - echo ''; - - if (!empty($onlinecontacts)) { - foreach ($onlinecontacts as $contact) { - if ($contact->blocked == 1) continue; - $fullname = fullname($contact); - $fullnamelink = $fullname; - /// are there any unread messages for this contact? - if (($unread = message_count_messages($unreadmessages, 'useridfrom', $contact->id)) > 0) { - $fullnamelink = ''.$fullnamelink.' ('.$unread.')'; - } - /// link to remove from contact list - $strcontact = message_contact_link($contact->id, 'remove', true); - $strhistory = message_history_link($contact->id, 0, true, '', '', 'icon'); - - echo ''; - echo ''; - echo ''; - echo ''; - } - } - echo ''; - - -/// print out list of offline contacts - - $countcontacts = (is_array($offlinecontacts)) ? count($offlinecontacts) : 0; - - echo ''; - - if (!empty($offlinecontacts)) { - foreach ($offlinecontacts as $contact) { - if ($contact->blocked == 1) continue; - $fullname = fullname($contact); - $fullnamelink = $fullname; - /// are there any unread messages for this contact? - if (($unread = message_count_messages($unreadmessages, 'useridfrom', $contact->id)) > 0) { - $fullnamelink = ''.$fullnamelink.' ('.$unread.')'; - } - /// link to remove from contact list - $strcontact = message_contact_link($contact->id, 'remove', true); - $strhistory = message_history_link($contact->id, 0, true, '', '', 'icon'); - - echo ''; - echo ''; - echo ''; - echo ''; - } - } - echo ''; - - -/// Cycle through messages and extract those that are from unknown contacts -/// We can take advantage of the keys for $onlinecontacts and $offlinecontacts -/// which are set to the userid and therefore we just need to see if the key -/// exists in either of those arrays -/// We can also discard any messages from users in our blocked contact list - $unknownmessages = array(); - if (!empty($unreadmessages)) { - /// make sure we have valid arrays to test against - they may be boolean false - if (empty($onlinecontacts)) $onlinecontacts = array(); - if (empty($offlinecontacts)) $offlinecontacts = array(); - if (empty($blockedcontacts)) $blockedcontacts = array(); - foreach ($unreadmessages as $unreadmessage) { - if (array_key_exists($unreadmessage->useridfrom, $onlinecontacts) or - array_key_exists($unreadmessage->useridfrom, $offlinecontacts) or - array_key_exists($unreadmessage->useridfrom, $blockedcontacts) ) { - continue; - } - if (!isset($unknownmessages[$unreadmessage->useridfrom])) { - $message = $unreadmessage; - $message->count = 1; - $unknownmessages[$unreadmessage->useridfrom] = $message; - } else { - $unknownmessages[$unreadmessage->useridfrom]->count++; - } - } - } - -/// print out list of incoming contacts - if (!empty($unknownmessages)) { - echo ''; - - foreach ($unknownmessages as $messageuser) { - $fullname = fullname($messageuser); - $fullnamelink = $fullname; - if ($messageuser->count) { - $fullnamelink = ''.$fullnamelink.' ('.$messageuser->count.')'; - } - /// link to add to contact list - - $strcontact = message_contact_link($messageuser->useridfrom, 'add', true); - $strblock = message_contact_link($messageuser->useridfrom, 'block', true); - $strhistory = message_history_link($messageuser->useridfrom, 0, true, '', '', 'icon'); - - echo ''; - echo ''; - echo ''; - echo ''; - } - } - - echo '
        '; - echo get_string('onlinecontacts', 'message', $countcontacts); - echo '
        '; - print_user_picture($contact->id, SITEID, $contact->picture, 20, false, true, 'userwindow'); - echo ''; - link_to_popup_window("/message/discussion.php?id=$contact->id", "message_$contact->id", - $fullnamelink, 500, 500, get_string('sendmessageto', 'message', $fullname), - 'menubar=0,location=0,status,scrollbars,resizable,width=500,height=500'); - echo '
         
        '; - echo get_string('offlinecontacts', 'message', $countcontacts); - echo '
        '; - print_user_picture($contact->id, SITEID, $contact->picture, 20, false, true, 'userwindow'); - echo ''; - link_to_popup_window("/message/discussion.php?id=$contact->id", "message_$contact->id", - $fullnamelink, 500, 500, get_string('sendmessageto', 'message', $fullname), - 'menubar=0,location=0,status,scrollbars,resizable,width=500,height=500'); - echo '
         
        '; - echo get_string('incomingcontacts', 'message', count($unknownmessages)); - echo '
        '; - print_user_picture($messageuser->useridfrom, SITEID, $messageuser->picture, 20, false, true, 'userwindow'); - echo ''; - link_to_popup_window("/message/discussion.php?id=$messageuser->useridfrom", "message_$messageuser->useridfrom", - $fullnamelink, 500, 500, get_string('sendmessageto', 'message', $fullname), - 'menubar=0,location=0,status,scrollbars,resizable,width=500,height=500'); - echo '
        '; - - echo '

        '.get_string('pagerefreshes', 'message', $CFG->message_contacts_refresh).'

        '; - -} - - - - -/// $messagearray is an array of objects -/// $field is a valid property of object -/// $value is the value $field should equal to be counted -/// if $field is empty then return count of the whole array -/// if $field is non-existent then return 0; -function message_count_messages($messagearray, $field='', $value='') { - if (!is_array($messagearray)) return 0; - if ($field == '' or empty($messagearray)) return count($messagearray); - - $count = 0; - foreach ($messagearray as $message) { - $count += ($message->$field == $value) ? 1 : 0; - } - return $count; -} - - -function message_print_search() { - global $USER; - - if ($frm = data_submitted()) { - - message_print_search_results($frm); - - } else { - if ($teachers = get_records('user_teachers', 'userid', $USER->id, '', 'id, course')) { - - $courses = get_courses('all', 'c.sortorder ASC', 'c.id, c.shortname'); - $cs = ''; - } - - include('search.html'); - } -} - -function message_print_settings() { - global $USER; - - if ($frm = data_submitted()) { - - $pref = array(); - $pref['message_showmessagewindow'] = (isset($frm->showmessagewindow)) ? '1' : '0'; - $pref['message_beepnewmessage'] = (isset($frm->beepnewmessage)) ? '1' : '0'; - $pref['message_usehtmleditor'] = (isset($frm->usehtmleditor)) ? '1' : '0'; - $pref['message_emailmessages'] = (isset($frm->emailmessages)) ? '1' : '0'; - $pref['message_emailtimenosee'] = ((int)$frm->emailtimenosee > 0) ? (int)$frm->emailtimenosee : '10'; - $pref['message_emailaddress'] = (!empty($frm->emailaddress)) ? $frm->emailaddress : $USER->email; - $pref['message_emailformat'] = (isset($frm->emailformat)) ? $frm->emailformat : FORMAT_PLAIN; - - set_user_preferences($pref); - - redirect('index.php', get_string('settingssaved', 'message'), 1); - } - - $cbshowmessagewindow = (get_user_preferences('message_showmessagewindow', 1) == '1') ? 'checked="checked"' : ''; - $cbbeepnewmessage = (get_user_preferences('message_beepnewmessage', 0) == '1') ? 'checked="checked"' : ''; - $cbusehtmleditor = (get_user_preferences('message_usehtmleditor', 0) == '1') ? 'checked="checked"' : ''; - $cbemailmessages = (get_user_preferences('message_emailmessages', 1) == '1') ? 'checked="checked"' : ''; - $txemailaddress = get_user_preferences('message_emailaddress', $USER->email); - $txemailtimenosee = get_user_preferences('message_emailtimenosee', 10); - $format_select = choose_from_menu( array(FORMAT_PLAIN => get_string('formatplain'), - FORMAT_HTML => get_string('formathtml')), - 'emailformat', - get_user_preferences('message_emailformat', FORMAT_PLAIN), - false, '', '0', true ); - - include('settings.html'); -} - - - -function message_add_contact($contactid, $blocked=0) { - global $USER; - - if (!record_exists('user', 'id', $contactid)) { // invalid userid - return false; - } - - if (($contact = get_record('message_contacts', 'userid', $USER->id, 'contactid', $contactid)) !== false) { - /// record already exists - we may be changing blocking status - - if ($contact->blocked !== $blocked) { - /// change to blocking status - $contact->blocked = $blocked; - return update_record('message_contacts', $contact); - } else { - /// no changes to blocking status - return true; - } - - } else { - /// new contact record - unset($contact); - $contact->userid = $USER->id; - $contact->contactid = $contactid; - $contact->blocked = $blocked; - return insert_record('message_contacts', $contact, false); - } -} - -function message_remove_contact($contactid) { - global $USER; - return delete_records('message_contacts', 'userid', $USER->id, 'contactid', $contactid); -} - -function message_unblock_contact($contactid) { - global $USER; - return delete_records('message_contacts', 'userid', $USER->id, 'contactid', $contactid); -} - -function message_block_contact($contactid) { - return message_add_contact($contactid, 1); -} - -function message_get_contact($contactid) { - global $USER; - return get_record('message_contacts', 'userid', $USER->id, 'contactid', $contactid); -} - - - -function message_print_search_results($frm) { - global $USER, $CFG; - - echo '
        '; - - /// search for person - if (!empty($frm->personsubmit) and !empty($frm->name)) { - - if ($frm->mycourses) { - $users = array(); - $mycourses = get_my_courses($USER->id); - foreach ($mycourses as $mycourse) { - if (is_array($susers = message_search_users($mycourse->id, $frm->name))) { - foreach ($susers as $suser) $users[$suser->id] = $suser; - } - } - } else { - $users = message_search_users(SITEID, $frm->name); - } - - if (!empty($users)) { - echo ''.get_string('userssearchresults', 'message', count($users)).''; - echo ''; - foreach ($users as $user) { - - if (($contact = message_get_contact($user->id)) !== false) { - if ($contact->blocked == 0) { /// not blocked - $strcontact = message_contact_link($user->id, 'remove', true); - $strblock = message_contact_link($user->id, 'block', true); - } else { // blocked - $strcontact = message_contact_link($user->id, 'add', true); - $strblock = message_contact_link($user->id, 'unblock', true); - } - } else { - $strcontact = message_contact_link($user->id, 'add', true); - $strblock = message_contact_link($user->id, 'block', true); - } - $strhistory = message_history_link($user->id, 0, true, '', '', 'icon'); - - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
        '; - print_user_picture($user->id, SITEID, $user->picture, 20, false, true, 'userwindow'); - echo ''; - link_to_popup_window("/message/discussion.php?id=$user->id", "message_$user->id", fullname($user), - 500, 500, get_string('sendmessageto', 'message', fullname($user)), - 'menubar=0,location=0,status,scrollbars,resizable,width=500,height=500'); - echo '
        '; - - } else { - notify(get_string('nosearchresults', 'message')); - } - - - /// search messages for keywords - } else if (!empty($frm->keywordssubmit) and !empty($frm->keywords)) { - $keywordstring = clean_text(trim($frm->keywords)); - $keywords = explode(' ', $keywordstring); - $tome = false; - $fromme = false; - $courseid = 'none'; - - switch ($frm->keywordsoption) { - case 'tome': - $tome = true; - break; - case 'fromme': - $fromme = true; - break; - case 'allmine': - $tome = true; - $fromme = true; - break; - case 'allusers': - $courseid = SITEID; - break; - case 'courseusers': - $courseid = $frm->courseid; - break; - default: - $tome = true; - $fromme = true; - } - - if (($messages = message_search($keywords, $fromme, $tome, $courseid)) !== false) { - - /// get a list of contacts - if (($contacts = get_records('message_contacts', 'userid', $USER->id, '', 'contactid, blocked') ) === false) { - $contacts = array(); - } - - /// print heading with number of results - echo '

        '.get_string('keywordssearchresults', 'message', count($messages)).' ("'.s($keywordstring).'")

        '; - - /// print table headings - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo "\n"; - - $blockedcount = 0; - $dateformat = get_string('strftimedatetime'); - $strcontext = get_string('context', 'message'); - foreach ($messages as $message) { - - /// ignore messages to and from blocked users unless $frm->includeblocked is set - if ((!$frm->includeblocked) and ( - ( isset($contacts[$message->useridfrom]) and ($contacts[$message->useridfrom]->blocked == 1)) or - ( isset($contacts[$message->useridto] ) and ($contacts[$message->useridto]->blocked == 1)) - ) - ) { - $blockedcount ++; - continue; - } - - /// load up user to record - if ($message->useridto !== $USER->id) { - $userto = get_record('user', 'id', $message->useridto); - $tocontact = (array_key_exists($message->useridto, $contacts) and - ($contacts[$message->useridto]->blocked == 0) ); - $toblocked = (array_key_exists($message->useridto, $contacts) and - ($contacts[$message->useridto]->blocked == 1) ); - } else { - $userto = false; - $tocontact = false; - $toblocked = false; - } - - /// load up user from record - if ($message->useridfrom !== $USER->id) { - $userfrom = get_record('user', 'id', $message->useridfrom); - $fromcontact = (array_key_exists($message->useridfrom, $contacts) and - ($contacts[$message->useridfrom]->blocked == 0) ); - $fromblocked = (array_key_exists($message->useridfrom, $contacts) and - ($contacts[$message->useridfrom]->blocked == 1) ); - } else { - $userfrom = false; - $fromcontact = false; - $fromblocked = false; - } - - /// find date string for this message - $date = usergetdate($message->timecreated); - $datestring = $date['year'].$date['mon'].$date['mday']; - - /// print out message row - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo "\n"; - } - - - if ($blockedcount > 0) { - echo ''; - } - echo '
        '.get_string('from').''.get_string('to').''.get_string('message', 'message').''.get_string('timesent', 'message').'
        '; - message_print_user($userfrom, $fromcontact, $fromblocked); - echo ''; - message_print_user($userto, $tocontact, $toblocked); - echo ''.message_get_fragment($message->message, $keywords); - echo '
        '; - echo '
        '.userdate($message->timecreated, $dateformat).'
        '.get_string('blockedmessages', 'message', $blockedcount).'
        '; - - } else { - notify(get_string('nosearchresults', 'message')); - } - - - /// what the ????, probably an empty search string, duh! - } else { - notify(get_string('emptysearchstring', 'message')); - } - - echo '
        '; - print_single_button('index.php', array( 'tab' => 'search'), get_string('newsearch', 'message') ); - - echo '
        '; -} - - -function message_print_user ($user=false, $iscontact=false, $isblocked=false) { - global $USER; - if ($user === false) { - print_user_picture($USER->id, SITEID, $USER->picture, 20, false, true, 'userwindow'); - } else { - print_user_picture($user->id, SITEID, $user->picture, 20, false, true, 'userwindow'); - echo ' '; - if ($iscontact) { - message_contact_link($user->id, 'remove'); - } else { - message_contact_link($user->id, 'add'); - } - echo ' '; - if ($isblocked) { - message_contact_link($user->id, 'unblock'); - } else { - message_contact_link($user->id, 'block'); - } - echo '
        '; - link_to_popup_window("/message/discussion.php?id=$user->id", "message_$user->id", - fullname($user), 400, 400, get_string('sendmessageto', 'message', fullname($user)), - 'menubar=0,location=0,status,scrollbars,resizable,width=500,height=500'); - } -} - - -/// linktype can be: add, remove, block, unblock -function message_contact_link($userid, $linktype='add', $return=false, $script="index.php?tab=contacts", $text=false) { - global $USER, $CFG; - - static $str; - - if (empty($str->blockcontact)) { - $str->blockcontact = get_string('blockcontact', 'message'); - $str->unblockcontact = get_string('unblockcontact', 'message'); - $str->removecontact = get_string('removecontact', 'message'); - $str->addcontact = get_string('addcontact', 'message'); - } - - $command = $linktype.'contact'; - $string = $str->{$command}; - $text = $text ? ' '.$string : ''; - - switch ($linktype) { - case 'block': - $icon = '/t/go.gif'; - break; - case 'unblock': - $icon = '/t/stop.gif'; - break; - case 'remove': - $icon = '/t/user.gif'; - break; - case 'add': - default: - $icon = '/t/usernot.gif'; - } - - $output = ''. - ''. - ''. - $text.''; - - if ($return) { - return $output; - } else { - echo $output; - return true; - } -} - -function message_history_link($userid1, $userid2=0, $returnstr=false, $keywords='', $position='', $linktext='') { - global $USER, $CFG; - - $str->messagehistory = get_string('messagehistory', 'message'); - - if (!$userid2) { - $userid2 = $USER->id; - } - if ($position) { - $position = "#$position"; - } - if ($keywords) { - $keywords = "&search=".urlencode($keywords); - } - - $fulllink = ''; - if ($linktext == 'icon' or $linktext == 'both') { - $fulllink .= ''; - } - if ($linktext == 'both') { - $fulllink .= ' '; - } - if ($linktext == '' or $linktext == 'both') { - $fulllink .= $str->messagehistory; - } - - $str = link_to_popup_window("/message/history.php?user1=$userid1&user2=$userid2$keywords$position", - "message_history_$userid1", $fulllink, 500, 500, $str->messagehistory, - 'menubar=0,location=0,status,scrollbars,resizable,width=500,height=500', true); - - $str = ''.$str.''; - - if ($returnstr) { - return $str; - } else { - echo $str; - return true; - } -} - - -/** - * Search through course users - * - * If $coursid specifies the site course then this function searches - * through all undeleted and confirmed users - * - * @uses $CFG - * @uses SITEID - * @param int $courseid The course in question. - * @param string $searchtext ? - * @param string $sort ? - * @param string $exceptions ? - * @return array An array of {@link $USER} records. - * @todo Finish documenting this function - */ -function message_search_users($courseid, $searchtext, $sort='', $exceptions='') { - global $CFG; - - switch ($CFG->dbtype) { - case 'mysql': - $fullname = ' CONCAT(u.firstname," ",u.lastname) '; - $LIKE = 'LIKE'; - break; - case 'postgres7': - $fullname = " u.firstname||' '||u.lastname "; - $LIKE = 'ILIKE'; - break; - default: - $fullname = ' u.firstname||" "||u.lastname '; - $LIKE = 'ILIKE'; - } - - if (!empty($exceptions)) { - $except = ' AND u.id NOT IN ('. $exceptions .') '; - } else { - $except = ''; - } - - if (!empty($sort)) { - $order = ' ORDER BY '. $sort; - } else { - $order = ''; - } - - $select = 'u.deleted = \'0\' AND u.confirmed = \'1\''; - $fields = 'u.id, u.firstname, u.lastname, u.picture'; - - if (!$courseid or $courseid == SITEID) { - return get_records_sql("SELECT $fields - FROM {$CFG->prefix}user u - WHERE $select - AND ($fullname $LIKE '%$searchtext%') - $except $order"); - } else { - - - if (!$teachers = get_records_sql("SELECT $fields - FROM {$CFG->prefix}user u, - {$CFG->prefix}user_teachers s - WHERE $select AND s.course = '$courseid' AND s.userid = u.id - AND ($fullname $LIKE '%$searchtext%') - $except $order")) { - $teachers = array(); - } - if (!$students = get_records_sql("SELECT $fields - FROM {$CFG->prefix}user u, - {$CFG->prefix}user_students s - WHERE $select AND s.course = '$courseid' AND s.userid = u.id - AND ($fullname $LIKE '%$searchtext%') - $except $order")) { - $students = array(); - } - return $teachers + $students; - } -} - - - - -function message_search($searchterms, $fromme=true, $tome=true, $courseid='none', $userid=0) { -/// Returns a list of posts found using an array of search terms -/// eg word +word -word -/// - - global $CFG, $USER; - - /// If no userid sent then assume current user - if ($userid == 0) $userid = $USER->id; - - /// Some differences in syntax for PostgreSQL - if ($CFG->dbtype == "postgres7") { - $LIKE = "ILIKE"; // case-insensitive - $NOTLIKE = "NOT ILIKE"; // case-insensitive - $REGEXP = "~*"; - $NOTREGEXP = "!~*"; - } else { - $LIKE = "LIKE"; - $NOTLIKE = "NOT LIKE"; - $REGEXP = "REGEXP"; - $NOTREGEXP = "NOT REGEXP"; - } - - $messagesearch = ""; - - foreach ($searchterms as $searchterm) { - if (strlen($searchterm) < 2) { - continue; - } - if ($messagesearch) { - $messagesearch .= " AND "; - } - - if (substr($searchterm,0,1) == "+") { - $searchterm = substr($searchterm,1); - $messagesearch .= " m.message $REGEXP '(^|[^a-zA-Z0-9])$searchterm([^a-zA-Z0-9]|$)' "; - } else if (substr($searchterm,0,1) == "-") { - $searchterm = substr($searchterm,1); - $messagesearch .= " m.message $NOTREGEXP '(^|[^a-zA-Z0-9])$searchterm([^a-zA-Z0-9]|$)' "; - } else { - $messagesearch .= " m.message $LIKE '%$searchterm%' "; - } - } - - - $messagesearch = "($messagesearch) "; - - - /// There are several possibilities - /// 1. courseid = SITEID : The admin is searching messages by all users - /// 2. courseid = ?? : A teacher is searching messages by users in - /// one of their courses - currently disabled - /// 3. courseid = none : User is searching their own messages; - /// a. Messages from user - /// b. Messages to user - /// c. Messages to and from user - - if ($courseid == SITEID) { /// admin is searching all messages - $m_read = get_records_sql("SELECT m.id, m.useridto, m.useridfrom, m.message, m.timecreated - FROM {$CFG->prefix}message_read m - WHERE $messagesearch"); - $m_unread = get_records_sql("SELECT m.id, m.useridto, m.useridfrom, m.message, m.timecreated - FROM {$CFG->prefix}message m - WHERE $messagesearch"); - - if ($m_read === false) $m_read = array(); - if ($m_unread === false) $m_unread = array(); - - } elseif ($courseid !== 'none') { - /// This has not been implemented due to security concerns - - } else { - - if ($fromme and $tome) $messagesearch .= "AND (m.useridfrom='$userid' OR m.useridto='$userid') "; - elseif ($fromme) $messagesearch .= "AND m.useridfrom='$userid' "; - elseif ($tome) $messagesearch .= "AND m.useridto='$userid' "; - - $m_read = get_records_sql("SELECT m.id, m.useridto, m.useridfrom, m.message, m.timecreated - FROM {$CFG->prefix}message_read m - WHERE $messagesearch"); - $m_unread = get_records_sql("SELECT m.id, m.useridto, m.useridfrom, m.message, m.timecreated - FROM {$CFG->prefix}message m - WHERE $messagesearch"); - - if ($m_read === false) $m_read = array(); - if ($m_unread === false) $m_unread = array(); - - } - - /// The keys may be duplicated in $m_read and $m_unread so we can't - /// do a simple concatenation - $message = array(); - foreach ($m_read as $m) $messages[] = $m; - foreach ($m_unread as $m) $messages[] = $m; - - - return (empty($messages)) ? false : $messages; -} - - - -/// Borrowed with changes from mod/forum/lib.php -function message_shorten_message($message, $minlength=0) { -// Given a post object that we already know has a long message -// this function truncates the message nicely to the first -// sane place between $CFG->forum_longpost and $CFG->forum_shortpost - - $i = 0; - $tag = false; - $length = strlen($message); - $count = 0; - $stopzone = false; - $truncate = 0; - if ($minlength == 0) $minlength = MESSAGE_SHORTLENGTH; - - - for ($i=0; $i<$length; $i++) { - $char = $message[$i]; - - switch ($char) { - case "<": - $tag = true; - break; - case ">": - $tag = false; - break; - default: - if (!$tag) { - if ($stopzone) { - if ($char == '.' or $char == ' ') { - $truncate = $i+1; - break 2; - } - } - $count++; - } - break; - } - if (!$stopzone) { - if ($count > $minlength) { - $stopzone = true; - } - } - } - - if (!$truncate) { - $truncate = $i; - } - - return substr($message, 0, $truncate); -} - - -/* - * Given a string and an array of keywords, this function looks - * for the first keyword in the string, and then chops out a - * small section from the text that shows that word in context. - */ -function message_get_fragment($message, $keywords) { - - $fullsize = 120; - $halfsize = (int)($fullsize/2); - - $message = strip_tags($message); - - foreach ($keywords as $keyword) { // Just get the first one - if ($keyword !== '') { - break; - } - } - if (empty($keyword)) { // None found, so just return start of message - return message_shorten_message($message, 30); - } - - $leadin = $leadout = ''; - -/// Find the start of the fragment - $start = 0; - $length = strlen($message); - - $pos = strpos($message, $keyword); - if ($pos > $halfsize) { - $start = $pos - $halfsize; - $leadin = '...'; - } -/// Find the end of the fragment - $end = $start + $fullsize; - if ($end > $length) { - $end = $length; - } else { - $leadout = '...'; - } - -/// Pull out the fragment and format it - - $fragment = substr($message, $start, $end - $start); - $fragment = $leadin.highlight(implode(' ',$keywords), $fragment).$leadout; - return $fragment; -} - - -function message_get_history($user1, $user2) { - $messages = get_records_select('message_read', "(useridto = '$user1->id' AND useridfrom = '$user2->id') OR - (useridto = '$user2->id' AND useridfrom = '$user1->id')", - 'timecreated'); - if ($messages_new = get_records_select('message', "(useridto = '$user1->id' AND useridfrom = '$user2->id') OR - (useridto = '$user2->id' AND useridfrom = '$user1->id')", - 'timecreated')) { - foreach ($messages_new as $message) { - $messages[] = $message; - } - } - return $messages; -} - -function message_format_message(&$message, &$user, $format='', $keywords='') { - - static $dateformat; - - if (empty($dateformat)) { - if ($format) { - $dateformat = $format; - } else { - $format = get_string('strftimedaytime'); - } - } - $time = userdate($message->timecreated, $dateformat); - $options->para = false; - $messagetext = format_text($message->message, $message->format, $options); - if ($keywords) { - $messagetext = highlight($keywords, $messagetext); - } - return '
        '.s(fullname($user)).' ['.$time.']: '.$messagetext.'
        '; -} - -/* - * Inserts a message into the database, but also forwards it - * via other means if appropriate. - */ -function message_post_message($userfrom, $userto, $message, $format, $messagetype) { - - global $CFG, $SITE; - -/// Save the new message in the database - - $savemessage = NULL; - $savemessage->useridfrom = $userfrom->id; - $savemessage->useridto = $userto->id; - $savemessage->message = $message; - $savemessage->format = $format; - $savemessage->timecreated = time(); - $savemessage->messagetype = 'direct'; - - if (!$savemessage->id = insert_record('message', $savemessage)) { - return false; - } - - -/// Check to see if anything else needs to be done with it - - $preference = (object)get_user_preferences(NULL, NULL, $userto->id); - - if (!empty($preference->message_emailmessages)) { // Receiver wants mail forwarding - if ((time() - $userto->lastaccess) > ((int)$preference->message_emailtimenosee * 60)) { // Long enough - - $message = stripslashes_safe($message); - $tagline = get_string('emailtagline', 'message', $SITE->shortname); - - $messagesubject = message_shorten_message(strip_tags($message), 30).'...'; - - $messagetext = format_text_email($message, $format). - "\n\n--\n".$tagline."\n"."$CFG->wwwroot/message/index.php?popup=1"; - - if ($preference->message_emailformat == FORMAT_HTML) { - $messagehtml = format_text($message, $format); - $messagehtml .= '

        '.$tagline.'

        '; - } else { - $messagehtml = NULL; - } - - $userto->email = $preference->message_emailaddress; // Use custom messaging address - email_to_user($userto, $userfrom, $messagesubject, $messagetext, $messagehtml); - } - } - - return $savemessage->id; -} - - -/* - * Returns a list of all user ids who have used messaging in the site - * This was the simple way to code the SQL ... is it going to blow up - * on large datasets? - */ -function message_get_participants() { - - global $CFG; - - return get_records_sql("SELECT DISTINCT u.id, u.id - FROM {$CFG->prefix}user as u, - {$CFG->prefix}message as m, - {$CFG->prefix}message_read as mr, - {$CFG->prefix}message_contacts as mc - WHERE m.useridfrom = u.id - OR m.useridto = u.id - OR mr.useridfrom = u.id - OR mr.useridto = u.id - OR mc.userid = u.id - OR mc.contactid = u.id"); -} - -?> diff --git a/message/messages.php b/message/messages.php deleted file mode 100644 index 678b075cfe0..00000000000 --- a/message/messages.php +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/message/refresh.php b/message/refresh.php deleted file mode 100644 index 975e6825db2..00000000000 --- a/message/refresh.php +++ /dev/null @@ -1,111 +0,0 @@ -wwwroot); - } - - if (empty($CFG->messaging)) { - error("Messaging is disabled on this site"); - } - -/// Script parameters - $userid = required_param('id', PARAM_INT); - $userfullname = strip_tags(required_param('name', PARAM_RAW)); - $wait = optional_param('wait', MESSAGE_DEFAULT_REFRESH, PARAM_INT); - - $stylesheetshtml = ''; - foreach ($CFG->stylesheets as $stylesheet) { - $stylesheetshtml .= ''; - } - header('Expires: Sun, 28 Dec 1997 09:32:45 GMT'); - header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); - header('Cache-Control: no-cache, must-revalidate'); - header('Pragma: no-cache'); - header('Content-Type: text/html'); - - echo ''."\n"; - echo ' '; - echo ''."\n"; - echo ''."\n"; - echo ''."\n"; - - if (!empty($playbeep)) { - echo ''; - } - - // Javascript for Mozilla to cope with the redirect bug from editor being on in this page - ?> - - - - - diff --git a/message/search.html b/message/search.html deleted file mode 100644 index 84fd00c57e5..00000000000 --- a/message/search.html +++ /dev/null @@ -1,60 +0,0 @@ -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'; - -*/ - -?> - -
        :
          - -

        :
          - -
         
         
         
         
        '.get_string('allstudents', 'message').'
           '.$cs.';
        - -
        diff --git a/message/send.php b/message/send.php deleted file mode 100644 index 47fc9d88b80..00000000000 --- a/message/send.php +++ /dev/null @@ -1,100 +0,0 @@ -wwwroot); - } - - if (empty($CFG->messaging)) { - error("Messaging is disabled on this site"); - } - -/// Don't use print_header, for more speed - $stylesheetshtml = ''; - foreach ($CFG->stylesheets as $stylesheet) { - $stylesheetshtml .= ''; - } - - echo ''; - echo $stylesheetshtml; - -/// Script parameters - $userid = required_param('id', PARAM_INT); - $message = optional_param('message', '', PARAM_CLEANHTML); - $format = optional_param('format', FORMAT_MOODLE, PARAM_INT); - -/// Check the user we are talking to is valid - if (! $user = get_record('user', 'id', $userid)) { - error("User ID was incorrect"); - } - -/// Check that the user is not blocking us!! - if ($contact = get_record('message_contacts', 'userid', $user->id, 'contactid', $USER->id)) { - if ($contact->blocked and !isadmin()) { - print_heading(get_string('userisblockingyou', 'message')); - exit; - } - } - - if ($message and confirm_sesskey()) { /// Current user has just sent a message - - /// Save it to the database... - $messageid = message_post_message($USER, $user, addslashes($message), $format, 'direct'); - - /// Format the message as HTML - $options = NULL; - $options->para = false; - $options->newlines = true; - $message = format_text($message, $format, $options, 0); - - $message = str_replace("\r", ' ', $message); - $message = str_replace("\n", ' ', $message); - $time = userdate(time(), get_string('strftimedaytime')); - $message = '
        '.fullname($USER).' '. - '['.$time.']: '. - ''.$message.'
        '; - $message = addslashes($message); // So Javascript can write it - $message = str_replace('\n\n\n\n"; - - $date = usergetdate($message->timecreated); - $datestring = $date['year'].$date['mon'].$date['mday']; - - add_to_log(SITEID, 'message', 'write', 'history.php?user1='.$user->id.'&user2='.$USER->id.'#m'.$messageid, $user->id); - } - - echo ''; - - - echo ''; - echo '
        '; - echo '
        '; - echo ''; - echo ''; - - $usehtmleditor = (can_use_html_editor() && get_user_preferences('message_usehtmleditor', 0)); - if ($usehtmleditor) { - echo '
        '; - print_textarea($usehtmleditor, 8, 34, 0, 0, 'message', ''); - echo '
        '; - use_html_editor('message', 'formatblock subscript superscript copy cut paste clean undo redo justifyleft justifycenter justifyright justifyfull lefttoright righttoleft insertorderedlist insertunorderedlist outdent indent forecolor hilitecolor inserthorizontalrule createanchor nolink inserttable'); - echo ''; - } else { - print_textarea(false, 5, 34, 0, 0, 'message', ''); - echo ''; - } - echo '
        '; - echo '
        '; - echo '
        '; - echo ''; - -?> diff --git a/message/settings.html b/message/settings.html deleted file mode 100644 index 36c0bd0c7e7..00000000000 --- a/message/settings.html +++ /dev/null @@ -1,50 +0,0 @@ -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        />
        />
        />
        />
         :
         :
         : -

        - -
        diff --git a/message/user.php b/message/user.php deleted file mode 100644 index 13c213cb595..00000000000 --- a/message/user.php +++ /dev/null @@ -1,92 +0,0 @@ -wwwroot); - } - - if (empty($CFG->messaging)) { - error("Messaging is disabled on this site"); - } - -/// Script parameters - $userid = required_param('id', PARAM_INT); - - $addcontact = optional_param('addcontact', 0, PARAM_INT); // adding a contact - $removecontact = optional_param('removecontact', 0, PARAM_INT); // removing a contact - $blockcontact = optional_param('blockcontact', 0, PARAM_INT); // blocking a contact - $unblockcontact = optional_param('unblockcontact', 0, PARAM_INT); // unblocking a contact - -/// Check the user we are talking to is valid - if (! $user = get_record('user', 'id', $userid)) { - error("User ID was incorrect"); - } - -/// Possibly change some contacts if requested - - if ($addcontact and confirm_sesskey()) { - add_to_log(SITEID, 'message', 'add contact', - 'history.php?user1='.$addcontact.'&user2='.$USER->id, $addcontact); - message_add_contact($addcontact); - } - if ($removecontact and confirm_sesskey()) { - add_to_log(SITEID, 'message', 'remove contact', - 'history.php?user1='.$removecontact.'&user2='.$USER->id, $removecontact); - message_remove_contact($removecontact); - } - if ($blockcontact and confirm_sesskey()) { - add_to_log(SITEID, 'message', 'block contact', - 'history.php?user1='.$blockcontact.'&user2='.$USER->id, $blockcontact); - message_block_contact($blockcontact); - } - if ($unblockcontact and confirm_sesskey()) { - add_to_log(SITEID, 'message', 'unblock contact', - 'history.php?user1='.$unblockcontact.'&user2='.$USER->id, $unblockcontact); - message_unblock_contact($unblockcontact); - } - - print_header('','','','','',false,'','',false,'leftmargin="2" topmargin="2" marginwidth="2" marginheight="2"'); - echo ''; - echo ''; - echo '
        '; - echo print_user_picture($user->id, SITEID, $user->picture, true, true, true, 'userwindow').''; - - echo '
        '.fullname($user).'
        '; - - //echo '
        '; /// Print login status of this user - //if ($user->lastaccess) { - // if (time() - $user->lastaccess > $CFG->message_offline_time) { - // echo get_string('offline', 'message').': '.format_time(time() - $user->lastaccess); - // } else { - // echo get_string('lastaccess').': '.get_string('ago', 'message', format_time(time() - $user->lastaccess)); - // } - //} else { - // echo get_string("lastaccess").":". get_string("never"); - //} - //echo ''; - - echo '
        '; - if ($contact = get_record('message_contacts', 'userid', $USER->id, 'contactid', $user->id)) { - if ($contact->blocked) { - message_contact_link($user->id, 'add', false, 'user.php?id='.$user->id, true); - message_contact_link($user->id, 'unblock', false, 'user.php?id='.$user->id, true); - } else { - message_contact_link($user->id, 'remove', false, 'user.php?id='.$user->id, true); - message_contact_link($user->id, 'block', false, 'user.php?id='.$user->id, true); - } - } else { - message_contact_link($user->id, 'add', false, 'user.php?id='.$user->id, true); - message_contact_link($user->id, 'block', false, 'user.php?id='.$user->id, true); - } - message_history_link($user->id, 0, false, '', '', 'both'); - echo '
        '; - - echo '
        '; - - echo '
        '; // Close possible theme tables off - -?> diff --git a/mod/assignment/backuplib.php b/mod/assignment/backuplib.php index 19b6bfa9a03..eced0647567 100644 --- a/mod/assignment/backuplib.php +++ b/mod/assignment/backuplib.php @@ -1,4 +1,4 @@ -description)); fwrite ($bf,full_tag("FORMAT",4,false,$assignment->format)); fwrite ($bf,full_tag("RESUBMIT",4,false,$assignment->resubmit)); - fwrite ($bf,full_tag("EMAILTEACHERS",4,false,$assignment->emailteachers)); - fwrite ($bf,full_tag("ASSIGNMENTTYPE",4,false,$assignment->assignmenttype)); + fwrite ($bf,full_tag("TYPE",4,false,$assignment->type)); fwrite ($bf,full_tag("MAXBYTES",4,false,$assignment->maxbytes)); fwrite ($bf,full_tag("TIMEDUE",4,false,$assignment->timedue)); - fwrite ($bf,full_tag("TIMEAVAILABLE",4,false,$assignment->timeavailable)); fwrite ($bf,full_tag("GRADE",4,false,$assignment->grade)); fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$assignment->timemodified)); //if we've selected to backup users info, then execute backup_assignment_submisions @@ -87,8 +85,6 @@ fwrite ($bf,full_tag("TIMECREATED",6,false,$ass_sub->timecreated)); fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$ass_sub->timemodified)); fwrite ($bf,full_tag("NUMFILES",6,false,$ass_sub->numfiles)); - fwrite ($bf,full_tag("DATA1",6,false,$ass_sub->data1)); - fwrite ($bf,full_tag("DATA2",6,false,$ass_sub->data2)); fwrite ($bf,full_tag("GRADE",6,false,$ass_sub->grade)); fwrite ($bf,full_tag("COMMENT",6,false,$ass_sub->comment)); fwrite ($bf,full_tag("TEACHER",6,false,$ass_sub->teacher)); diff --git a/mod/assignment/db/mysql.php b/mod/assignment/db/mysql.php index ddd1dabb828..6546f0fca22 100644 --- a/mod/assignment/db/mysql.php +++ b/mod/assignment/db/mysql.php @@ -1,4 +1,4 @@ -prefix}assignment DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}assignment_submissions DROP INDEX assignment;",false); - execute_sql("ALTER TABLE {$CFG->prefix}assignment_submissions DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}assignment_submissions DROP INDEX mailed;",false); - execute_sql("ALTER TABLE {$CFG->prefix}assignment_submissions DROP INDEX timemarked;",false); - - modify_database('','ALTER TABLE prefix_assignment ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_assignment_submissions ADD INDEX assignment(assignment);'); - modify_database('','ALTER TABLE prefix_assignment_submissions ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_assignment_submissions ADD INDEX mailed (mailed);'); - modify_database('','ALTER TABLE prefix_assignment_submissions ADD INDEX timemarked (timemarked);'); - } - - if ($oldversion < 2005010500) { // New field for sending out mail to teachers - table_column('assignment', '', 'emailteachers', 'integer', '2', 'unsigned', 0, 'not null', 'resubmit'); - } - - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $wtm->update( 'assignment','description','format' ); - } - - if ($oldversion < 2005041400) { // Add new fields for the new refactored version of assignment - table_column('assignment', '', 'timeavailable', 'integer', '10', 'unsigned', 0, 'not null', 'timedue'); - table_column('assignment', '', 'assignmenttype', 'varchar', '50', '', '', 'not null', 'format'); - execute_sql("UPDATE {$CFG->prefix}assignment SET assignmenttype = 'offline' WHERE type = '0';"); - execute_sql("UPDATE {$CFG->prefix}assignment SET assignmenttype = 'uploadsingle' WHERE type = '1';"); - execute_sql('ALTER TABLE '.$CFG->prefix.'assignment DROP type;'); - } - - if ($oldversion < 2005041501) { // Add two new fields for general data handling, - // so most assignment types won't need new fields and backups stay simple - table_column('assignment_submissions', '', 'data2', 'MEDIUMTEXT', '', '', '', 'not null', 'numfiles'); - table_column('assignment_submissions', '', 'data1', 'MEDIUMTEXT', '', '', '', 'not null', 'numfiles'); - } - - -/// These lines ALWAYS need to be here at the end of this file. Don't mess with them. :-) - include_once("$CFG->dirroot/mod/assignment/lib.php"); - assignment_upgrade_submodules(); - return true; } diff --git a/mod/assignment/db/mysql.sql b/mod/assignment/db/mysql.sql index f8d57a74bbf..a8d75e08f13 100644 --- a/mod/assignment/db/mysql.sql +++ b/mod/assignment/db/mysql.sql @@ -8,16 +8,13 @@ CREATE TABLE `prefix_assignment` ( `name` varchar(255) NOT NULL default '', `description` text NOT NULL, `format` tinyint(2) unsigned NOT NULL default '0', - `assignmenttype` varchar(50) NOT NULL default '', `resubmit` tinyint(2) unsigned NOT NULL default '0', - `emailteachers` tinyint(2) unsigned NOT NULL default '0', + `type` int(10) unsigned NOT NULL default '1', `maxbytes` int(10) unsigned NOT NULL default '100000', `timedue` int(10) unsigned NOT NULL default '0', - `timeavailable` int(10) unsigned NOT NULL default '0', `grade` int(10) NOT NULL default '0', `timemodified` int(10) unsigned NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `course` (`course`) + PRIMARY KEY (`id`) ) COMMENT='Defines assignments'; # -------------------------------------------------------- @@ -32,18 +29,12 @@ CREATE TABLE `prefix_assignment_submissions` ( `timecreated` int(10) unsigned NOT NULL default '0', `timemodified` int(10) unsigned NOT NULL default '0', `numfiles` int(10) unsigned NOT NULL default '0', - `data1` text NOT NULL, - `data2` text NOT NULL, `grade` int(11) NOT NULL default '0', `comment` text NOT NULL, `teacher` int(10) unsigned NOT NULL default '0', `timemarked` int(10) unsigned NOT NULL default '0', `mailed` tinyint(1) unsigned NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `assignment` (`assignment`), - KEY `userid` (`userid`), - KEY `mailed` (`mailed`), - KEY `timemarked` (`timemarked`) + PRIMARY KEY (`id`) ) COMMENT='Info about submitted assignments'; # -------------------------------------------------------- diff --git a/mod/assignment/db/oci8po.php b/mod/assignment/db/oci8po.php new file mode 100755 index 00000000000..c1e24bdbcf8 --- /dev/null +++ b/mod/assignment/db/oci8po.php @@ -0,0 +1,14 @@ + + diff --git a/mod/assignment/db/oci8po.sql b/mod/assignment/db/oci8po.sql new file mode 100755 index 00000000000..c92ffc11451 --- /dev/null +++ b/mod/assignment/db/oci8po.sql @@ -0,0 +1,98 @@ +rem +rem Table structure for table assignment +rem + +drop TABLE prefix_assignment; +CREATE TABLE prefix_assignment ( + id number(10) primary key, + course number(10) default '0' not null, + name varchar(255) default '' not null, + description varchar2(255) NOT NULL, + format number(2) default '0' not null, + resubmit number(2) default '0' not null, + type number(10) default '1' not null, + maxbytes number(10) default '100000' not null, + timedue number(10) default '0' not null, + grade number(10) default '0' not null, + timemodified number(10) default '0' not null +); + +COMMENT on table prefix_assignment is 'Defines assignments'; + +drop sequence p_assignment_seq; +create sequence p_assignment_seq; + +create or replace trigger p_assignment_trig + before insert on prefix_assignment + referencing new as new_row + for each row + begin + select p_assignment_seq.nextval into :new_row.id from dual; + end; +. +/ + +insert into prefix_assignment (course,name,description,format,resubmit,type,maxbytes,timedue,grade,timemodified) values (1,'name1','description1','1','1','1','111111','1','1','1'); +insert into prefix_assignment (course,name,description,format,resubmit,type,maxbytes,timedue,grade,timemodified) values (2,'name2','description2','2','2','2','222222','2','2','2'); +insert into prefix_assignment (course,name,description,format,resubmit,type,maxbytes,timedue,grade,timemodified) values (3,'name3','description3','3','3','3','333333','3','3','3'); +insert into prefix_assignment (course,name,description,format,resubmit,type,maxbytes,timedue,grade,timemodified) values (4,'name4','description4','4','4','4','444444','4','4','4'); + +col format format 99 +select * from prefix_assignment order by 1,2; + +rem -------------------------------------------------------- + +rem +rem Table structure for table assignment_submissions +rem + +drop TABLE prefix_assignment_submissions; +CREATE TABLE prefix_assignment_submissions ( + id number(10) primary key , + assignment number(10) default '0' not null, + userid number(10) default '0' not null, + timecreated number(10) default '0' not null, + timemodified number(10) default '0' not null, + numfiles number(10) default '0' not null, + grade number(11) default '0' not null, + commentt varchar2(255) not null, + teacher number(10) default '0' not null, + timemarked number(10) default '0' not null, + mailed number(1) default '0' not null +); + + +COMMENT on table prefix_assignment_submissions is 'Info about submitted assignments'; + +drop sequence p_assignment_sub_seq; +create sequence p_assignment_sub_seq; + +create or replace trigger p_assignment_sub_trig + before insert on prefix_assignment_submissions + referencing new as new_row + for each row + begin + select p_assignment_sub_seq.nextval into :new_row.id from dual; + end; +. +/ + +insert into prefix_assignment_submissions( + assignment,userid,timecreated,timemodified,numfiles,grade,commentt,teacher,timemarked,mailed) values ('1','1','1','1','1','1','comment1','1','1','1'); +insert into prefix_assignment_submissions(assignment,userid,timecreated,timemodified,numfiles,grade,commentt,teacher,timemarked,mailed) values ('2','2','2','2','2','2','comment2','2','2','2'); +insert into prefix_assignment_submissions(assignment,userid,timecreated,timemodified,numfiles,grade,commentt,teacher,timemarked,mailed) values ('3','3','3','3','3','3','comment3','3','3','3'); +insert into prefix_assignment_submissions(assignment,userid,timecreated,timemodified,numfiles,grade,commentt,teacher,timemarked,mailed) values ('4','4','4','4','4','4','comment4','4','4','4'); + +col teacher format 99 +select * from prefix_assignment_submissions order by 1,2; + +rem -------------------------------------------------------- + +delete from prefix_log_display where module='assignment'; +INSERT INTO prefix_log_display VALUES ('assignment', 'view', 'assignment', 'name'); +INSERT INTO prefix_log_display VALUES ('assignment', 'add', 'assignment', 'name'); +INSERT INTO prefix_log_display VALUES ('assignment', 'update', 'assignment', 'name'); +INSERT INTO prefix_log_display VALUES ('assignment', 'view submissions', 'assignment', 'name'); +INSERT INTO prefix_log_display VALUES ('assignment', 'upload', 'assignment', 'name'); + +select * from prefix_log_display where module='assignment' order by 1,2; diff --git a/mod/assignment/db/postgres7.php b/mod/assignment/db/postgres7.php index 0f2744db8e8..c15072c0f89 100644 --- a/mod/assignment/db/postgres7.php +++ b/mod/assignment/db/postgres7.php @@ -1,4 +1,4 @@ -prefix}assignment_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}assignment_submissions_assignment_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}assignment_submissions_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}assignment_submissions_mailed_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}assignment_submissions_timemarked_idx;",false); - - modify_database('','CREATE INDEX prefix_assignment_course_idx ON prefix_assignment (course);'); - modify_database('','CREATE INDEX prefix_assignment_submissions_assignment_idx ON prefix_assignment_submissions (assignment);'); - modify_database('','CREATE INDEX prefix_assignment_submissions_userid_idx ON prefix_assignment_submissions (userid);'); - modify_database('','CREATE INDEX prefix_assignment_submissions_mailed_idx ON prefix_assignment_submissions (mailed);'); - modify_database('','CREATE INDEX prefix_assignment_submissions_timemarked_idx ON prefix_assignment_submissions (timemarked);'); - } - - if ($oldversion < 2005010500) { - table_column('assignment', '', 'emailteachers', 'integer', '2', 'unsigned', 0, 'not null', 'resubmit'); - } - - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $wtm->update( 'assignment','description','format' ); - } - - if ($oldversion < 2005041400) { // Add new fields for the new refactored version of assignment - table_column('assignment', '', 'timeavailable', 'integer', '10', 'unsigned', 0, 'not null', 'timedue'); - table_column('assignment', '', 'assignmenttype', 'varchar', '50', '', '', 'not null', 'format'); - execute_sql("UPDATE {$CFG->prefix}assignment SET assignmenttype = 'offline' WHERE type = '0';",false); - execute_sql("UPDATE {$CFG->prefix}assignment SET assignmenttype = 'uploadsingle' WHERE type = '1';",false); - execute_sql('ALTER TABLE '.$CFG->prefix.'assignment DROP type;'); - } - - if ($oldversion < 2005041501) { // Add two new fields for general data handling, - // so most assignment types won't need new fields and backups stay simple - table_column('assignment_submissions', '', 'data2', 'TEXT', '', '', '', 'not null', 'numfiles'); - table_column('assignment_submissions', '', 'data1', 'TEXT', '', '', '', 'not null', 'numfiles'); - } - - - -/// These lines ALWAYS need to be here at the end of this file. Don't mess with them. :-) - include_once("$CFG->dirroot/mod/assignment/lib.php"); - assignment_upgrade_submodules(); - return true; } diff --git a/mod/assignment/db/postgres7.sql b/mod/assignment/db/postgres7.sql index 9097beef45a..3738bbccb74 100644 --- a/mod/assignment/db/postgres7.sql +++ b/mod/assignment/db/postgres7.sql @@ -8,18 +8,13 @@ CREATE TABLE prefix_assignment ( name varchar(255) NOT NULL default '', description text NOT NULL default '', format integer NOT NULL default '0', - assignmenttype varchar(50) NOT NULL default '', resubmit integer NOT NULL default '0', - emailteachers integer NOT NULL default '0', + type integer NOT NULL default '1', maxbytes integer NOT NULL default '100000', timedue integer NOT NULL default '0', - timeavailable integer NOT NULL default '0', grade integer NOT NULL default '0', timemodified integer NOT NULL default '0' ); - -CREATE INDEX prefix_assignment_course_idx ON prefix_assignment (course); - # -------------------------------------------------------- # @@ -33,21 +28,12 @@ CREATE TABLE prefix_assignment_submissions ( timecreated integer NOT NULL default '0', timemodified integer NOT NULL default '0', numfiles integer NOT NULL default '0', - data1 text NOT NULL default '', - data2 text NOT NULL default '', grade integer NOT NULL default '0', comment text NOT NULL default '', teacher integer NOT NULL default '0', timemarked integer NOT NULL default '0', mailed integer NOT NULL default '0' ); - -CREATE INDEX prefix_assignment_submissions_assignment_idx ON prefix_assignment_submissions (assignment); -CREATE INDEX prefix_assignment_submissions_userid_idx ON prefix_assignment_submissions (userid); -CREATE INDEX prefix_assignment_submissions_mailed_idx ON prefix_assignment_submissions (mailed); -CREATE INDEX prefix_assignment_submissions_timemarked_idx ON prefix_assignment_submissions (timemarked); - - # -------------------------------------------------------- diff --git a/mod/assignment/details.php b/mod/assignment/details.php deleted file mode 100644 index d83408004c3..00000000000 --- a/mod/assignment/details.php +++ /dev/null @@ -1,40 +0,0 @@ -course)) { - error("Non-existent course!"); - } - - require_login($course->id); - - if (!isteacheredit($course->id)) { - redirect($CFG->wwwroot.'/course/view.php?id='.$course->id); - } - -/// Set up things for a HTML editor if it's needed - - if ($usehtmleditor = can_use_html_editor()) { - $defaultformat = FORMAT_HTML; - $editorfields = ''; - } else { - $defaultformat = FORMAT_MOODLE; - } - - require_once("$CFG->dirroot/mod/assignment/type/$form->assignmenttype/assignment.class.php"); - - $assignmentclass = "assignment_$form->assignmenttype"; - - $assignmentinstance = new $assignmentclass(); - - echo $assignmentinstance->setup($form); /// The actual form is all printed here - - -?> diff --git a/mod/assignment/index.php b/mod/assignment/index.php index 2c22b8be008..7cbe078eba9 100644 --- a/mod/assignment/index.php +++ b/mod/assignment/index.php @@ -1,4 +1,4 @@ -id"); + notice("There are no assignments", "../../course/view.php?id=$course->id"); die; } @@ -52,12 +52,27 @@ $currentsection = ""; foreach ($assignments as $assignment) { - - require_once ($CFG->dirroot.'/mod/assignment/type/'.$assignment->assignmenttype.'/assignment.class.php'); - $assignmentclass = 'assignment_'.$assignment->assignmenttype; - $assignmentinstance = new $assignmentclass($assignment->coursemodule); - - $submitted = $assignmentinstance->submittedlink(); + $submitted = get_string("no"); + if (isteacher($course->id)) { + if ($assignment->type == OFFLINE) { + $submitted = "id\">" . + get_string("viewfeedback", "assignment") . ""; + } else { + $count = assignment_count_real_submissions($assignment, $currentgroup); + $submitted = "id\">" . + get_string("viewsubmissions", "assignment", $count) . "$groupname"; + } + } else { + if (isset($USER->id)) { + if ($submission = assignment_get_submission($assignment, $USER)) { + if ($submission->timemodified <= $assignment->timedue) { + $submitted = userdate($submission->timemodified); + } else { + $submitted = "".userdate($submission->timemodified).""; + } + } + } + } $due = userdate($assignment->timedue); if (!$assignment->visible) { diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index af6b16e55a9..234c83daa98 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -1,834 +1,827 @@ dirroot/files/mimetypes.php"); + +define("OFFLINE", "0"); +define("UPLOADSINGLE", "1"); + +$ASSIGNMENT_TYPE = array (OFFLINE => get_string("typeoffline", "assignment"), + UPLOADSINGLE => get_string("typeuploadsingle", "assignment") ); if (!isset($CFG->assignment_maxbytes)) { set_config("assignment_maxbytes", 1024000); // Default maximum size for all assignments -} - - -/* - * Standard base class for all assignment submodules (assignment types). - * - * - */ -class assignment_base { - - var $cm; - var $course; - var $assignment; - - /** - * Constructor for the base assignment class - * - * Constructor for the base assignment class. - * If cmid is set create the cm, course, assignment objects. - * - * @param cmid integer, the current course module id - not set for new assignments - */ - function assignment_base($cmid=0) { - - global $CFG; - - if ($cmid) { - if (! $this->cm = get_record("course_modules", "id", $cmid)) { - error("Course Module ID was incorrect"); - } - - if (! $this->course = get_record("course", "id", $this->cm->course)) { - error("Course is misconfigured"); - } - - if (! $this->assignment = get_record("assignment", "id", $this->cm->instance)) { - error("assignment ID was incorrect"); - } - - $this->strassignment = get_string('modulename', 'assignment'); - $this->strassignments = get_string('modulenameplural', 'assignment'); - $this->strsubmissions = get_string('submissions', 'assignment'); - $this->strlastmodified = get_string('lastmodified'); - - if ($this->course->category) { - $this->navigation = "framename}\" href=\"$CFG->wwwroot/course/view.php?id={$this->course->id}\">{$this->course->shortname} -> ". - "framename}\" href=\"index.php?id={$this->course->id}\">$this->strassignments ->"; - } else { - $this->navigation = "framename}\" href=\"index.php?id={$this->course->id}\">$this->strassignments ->"; - } - - $this->pagetitle = strip_tags($this->course->shortname.': '.$this->strassignment.': '.$this->assignment->name); - - if (!$this->cm->visible and !isteacher($this->course->id)) { - $pagetitle = strip_tags($this->course->shortname.': '.$this->strassignment); - print_header($pagetitle, $this->course->fullname, "$this->navigation $this->strassignment", - "", "", true, '', navmenu($this->course, $this->cm)); - notice(get_string("activityiscurrentlyhidden"), "$CFG->wwwroot/course/view.php?id={$this->course->id}"); - } - - $this->currentgroup = get_current_group($this->course->id); - - } - } - - /* - * Display the assignment to students (sub-modules will most likely override this) - */ - - function view() { - global $CFG; - - add_to_log($this->course->id, "assignment", "view", "view.php?id={$this->cm->id}", - $this->assignment->id, $this->cm->id); - - print_header($this->pagetitle, $this->course->fullname, $this->navigation.' '.$this->assignment->name, '', '', - true, update_module_button($this->cm->id, $this->course->id, $this->strassignment), - navmenu($this->course, $this->cm)); - - echo ''; - - print_simple_box_start('center'); - echo format_text($this->assignment->description, $this->assignment->format); - print_simple_box_end(); - - print_simple_box_start('center', '', '', '', 'time'); - echo ''; - echo ''; - echo ' '; - echo ''; - echo ' '; - echo '
        '.get_string('availabledate','assignment').':'.userdate($this->assignment->timeavailable).'
        '.get_string('duedate','assignment').':'.userdate($this->assignment->timedue).'
        '; - - print_simple_box_end(); - - $this->view_feedback(); - - print_footer($this->course); - } - - - function view_feedback() { - global $USER; - - /// Get submission for this assignment - /// If no submission then just return quietly - $submission = $this->get_submission($USER->id); - if (empty($submission->timemarked)) { - return; - } - - /// We need the teacher info - if (! $teacher = get_record('user', 'id', $submission->teacher)) { - print_object($submission); - error('Could not find the teacher'); - } - - /// Print the feedback - print_heading(get_string('feedbackfromteacher', 'assignment', $this->course->teacher)); - - echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - - echo ''; - } - - - - /* - * Print the start of the setup form for the current assignment type - */ - function setup(&$form, $action='') { - global $CFG, $THEME; - - if (empty($this->course)) { - if (! $this->course = get_record("course", "id", $form->course)) { - error("Course is misconfigured"); - } - } - if (empty($action)) { // Default destination for this form - $action = $CFG->wwwroot.'/course/mod.php'; - } - - if (empty($form->name)) { - $form->name = ""; - } - if (empty($form->assignmenttype)) { - $form->assignmenttype = ""; - } - if (empty($form->description)) { - $form->description = ""; - } - - $strname = get_string('name'); - $strassignments = get_string('modulenameplural', 'assignment'); - $strheading = empty($form->name) ? get_string("type$form->assignmenttype",'assignment') : $form->name; - - print_header($this->course->shortname.': '.$strheading, "$strheading", - "wwwroot/course/view.php?id={$this->course->id}\">{$this->course->shortname} -> ". - "wwwroot/mod/assignment/index.php?id={$this->course->id}\">$strassignments -> $strheading"); - - print_simple_box_start("center"); - print_heading(get_string("type$form->assignmenttype",'assignment')); - include("$CFG->dirroot/mod/assignment/type/common.html"); - } - - /* - * Print the end of the setup form for the current assignment type - */ - function setup_end() { - global $CFG, $usehtmleditor; - - include($CFG->dirroot.'/mod/assignment/type/common_end.html'); - - print_simple_box_end(); - - if ($usehtmleditor) { - use_html_editor(); - } - - print_footer($this->course); - } - - - function add_instance($assignment) { - // Given an object containing all the necessary data, - // (defined by the form in mod.html) this function - // will create a new instance and return the id number - // of the new instance. - - $assignment->timemodified = time(); - $assignment->timedue = make_timestamp($assignment->dueyear, $assignment->duemonth, - $assignment->dueday, $assignment->duehour, - $assignment->dueminute); - $assignment->timeavailable = make_timestamp($assignment->availableyear, $assignment->availablemonth, - $assignment->availableday, $assignment->availablehour, - $assignment->availableminute); - - return insert_record("assignment", $assignment); - } - - function delete_instance($assignment) { - if (! delete_records("assignment", "id", "$assignment->id")) { - $result = false; - } - return $result; - } - - function update_instance($assignment) { - // Given an object containing all the necessary data, - // (defined by the form in mod.html) this function - // will create a new instance and return the id number - // of the new instance. - - $assignment->timemodified = time(); - $assignment->timedue = make_timestamp($assignment->dueyear, $assignment->duemonth, - $assignment->dueday, $assignment->duehour, - $assignment->dueminute); - $assignment->timeavailable = make_timestamp($assignment->availableyear, $assignment->availablemonth, - $assignment->availableday, $assignment->availablehour, - $assignment->availableminute); - $assignment->id = $assignment->instance; - return update_record("assignment", $assignment); - } - - - - /* - * Top-level function for handling of submissions called by submissions.php - * - */ - function submissions($mode) { - switch ($mode) { - case 'grade': // We are in a popup window grading - if ($submission = $this->process_feedback()) { - print_heading(get_string('changessaved')); - $this->update_main_listing($submission); - } - close_window(); - break; - - case 'single': // We are in a popup window displaying submission - $this->display_submission(); - break; - - case 'all': // Main window, display everything - $this->display_submissions(); - break; - } - } - - function update_main_listing($submission) { - global $SESSION; - - /// Run some Javascript to try and update the parent page - echo '"; - fflush(); - } - - /* - * Display a grade in user-friendly form, whether it's a scale or not - * - */ - function display_grade($grade) { - - static $scalegrades; // Cached because we only have one per assignment - - if ($this->assignment->grade >= 0) { // Normal number - return $grade; - - } else { // Scale - if (empty($scalegrades)) { - if ($scale = get_record('scale', 'id', -($this->assignment->grade))) { - $scalegrades = make_menu_from_list($scale->scale); - } else { - return '-'; - } - } - if (isset($scalegrades[$grade])) { - return $scalegrades[$grade]; - } - return ''; - } - } - - /* - * Display a single submission, ready for grading on a popup window - * - */ - function display_submission() { - - $userid = required_param('userid'); - - if (!$user = get_record('user', 'id', $userid)) { - error('No such user!'); - } - - if (!$submission = $this->get_submission($user->id, true)) { // Get one or make one - error('Could not find submission!'); - } - - if ($submission->timemodified > $submission->timemarked) { - $subtype = 'assignmentnew'; - } else { - $subtype = 'assignmentold'; - } - - print_header($this->assignment->name.' '.fullname($user, true)); - - echo '
        '; - echo ''; - echo ''; - echo ''; - - echo ''; - - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - echo '
        '; - print_user_picture($user->id, $this->course->id, $user->picture); - echo ''.fullname($user, true).'
        '; - if ($submission->teacher) { - $teacher = get_record('user', 'id', $submission->teacher); - } else { - global $USER; - $teacher = $USER; - } - print_user_picture($teacher->id, $this->course->id, $teacher->picture); - echo ''; - - if (!$submission->grade and !$submission->timemarked) { - $submission->grade = -1; /// Hack to stop zero being selected on the menu below (so it shows 'no grade') - } - echo get_string('feedback', 'assignment').':'; - choose_from_menu(make_grades_menu($this->assignment->grade), 'grade', - $submission->grade, get_string('nograde')); - - if ($submission->timemarked) { - echo '  '.userdate($submission->timemarked); - } - echo '
        '; - print_textarea(false, 6, 60, 500, 400, 'comment', $submission->comment, $this->course->id); - echo '
        '; - - echo ''; - echo ''; - echo '
        '; - print_footer('none'); - } - - - /* - * Display all the submissions ready for grading - */ - function display_submissions() { - - global $CFG, $db; - - $teacherattempts = true; /// Temporary measure - - $page = optional_param('page', 0); - $perpage = optional_param('perpage', 10); - - $strsaveallfeedback = get_string('saveallfeedback', 'assignment'); - - /// Some shortcuts to make the code read better - - $course = $this->course; - $assignment = $this->assignment; - $cm = $this->cm; - - - add_to_log($course->id, 'assignment', 'view submission', 'submissions.php?id='.$this->assignment->id, $this->assignment->id, $this->cm->id); - - print_header_simple($this->assignment->name, "", ''.$this->strassignments.' -> '.$this->assignment->name.' -> '. $this->strsubmissions, '', '', true, update_module_button($cm->id, $course->id, $this->strassignment), navmenu($course, $cm)); - - - $tablecolumns = array('picture', 'fullname', 'grade', 'comment', 'timemodified', 'timemarked', 'status'); - $tableheaders = array('', get_string('fullname'), get_string('grade'), get_string('comment', 'assignment'), get_string('lastmodified').' ('.$course->student.')', get_string('lastmodified').' ('.$course->teacher.')', get_string('status')); - - - require_once($CFG->libdir.'/tablelib.php'); - $table = new flexible_table('mod-assignment-submissions'); - - $table->define_columns($tablecolumns); - $table->define_headers($tableheaders); - $table->define_baseurl($CFG->wwwroot.'/mod/assignment/submissions.php?id='.$this->cm->id); - - $table->sortable(true); - $table->collapsible(true); - $table->initialbars(true); - - $table->column_suppress('picture'); - $table->column_suppress('fullname'); - - $table->column_class('picture', 'picture'); - $table->column_class('fullname', 'fullname'); - $table->column_class('grade', 'grade'); - $table->column_class('comment', 'comment'); - $table->column_class('timemodified', 'timemodified'); - $table->column_class('timemarked', 'timemarked'); - $table->column_class('status', 'status'); - - $table->set_attribute('cellspacing', '0'); - $table->set_attribute('id', 'attempts'); - $table->set_attribute('class', 'submissions'); - $table->set_attribute('width', '90%'); - $table->set_attribute('align', 'center'); - - // Start working -- this is necessary as soon as the niceties are over - $table->setup(); - - - - /// Check to see if groups are being used in this assignment - if ($groupmode = groupmode($course, $cm)) { // Groups are being used - $currentgroup = setup_and_print_groups($course, $groupmode, 'submissions.php?id='.$this->cm->id); - } else { - $currentgroup = false; - } - - - /// Get all teachers and students - if ($currentgroup) { - $users = get_group_users($currentgroup); - } else { - $users = get_course_users($course->id); - } - - if (!$teacherattempts) { - $teachers = get_course_teachers($course->id); - if (!empty($teachers)) { - $keys = array_keys($teachers); - } - foreach ($keys as $key) { - unset($users[$key]); - } - } - - if (empty($users)) { - print_heading($strnoattempts); - return true; - } - - - /// Construct the SQL - - if ($where = $table->get_sql_where()) { - $where = str_replace('firstname', 'u.firstname', $where); - $where = str_replace('lastname', 'u.lastname', $where); - $where .= ' AND '; - } - - if ($sort = $table->get_sql_sort()) { - $sortparts = explode(',', $sort); - $newsort = array(); - foreach ($sortparts as $sortpart) { - $sortpart = trim($sortpart); - $newsort[] = $sortpart; - } - $sort = ' ORDER BY '.implode(', ', $newsort); - } - - - $select = 'SELECT '.$db->Concat('u.id', '\'#\'', $db->IfNull('s.userid', '0')).' AS uvs, u.id, u.firstname, u.lastname, u.picture, s.id AS submissionid, s.grade, s.comment, s.timemodified, s.timemarked, ((s.timemarked > 0) && (s.timemarked >= s.timemodified)) AS status '; - $group = 'GROUP BY uvs '; - $sql = 'FROM '.$CFG->prefix.'user u '. - 'LEFT JOIN '.$CFG->prefix.'assignment_submissions s ON u.id = s.userid AND s.assignment = '.$this->assignment->id.' '. - 'WHERE '.$where.'u.id IN ('.implode(',', array_keys($users)).') '; - - - $total = count_records_sql('SELECT COUNT(DISTINCT('.$db->Concat('u.id', '\'#\'', $db->IfNull('s.userid', '0')).')) '.$sql); - - $table->pagesize($perpage, $total); - - if($table->get_page_start() !== '' && $table->get_page_size() !== '') { - $limit = ' '.sql_paging_limit($table->get_page_start(), $table->get_page_size()); - } - else { - $limit = ''; - } - - $strupdate = get_string('update'); - $strgrade = get_string('grade'); - $grademenu = make_grades_menu($this->assignment->grade); - - if (($ausers = get_records_sql($select.$sql.$group.$sort.$limit)) !== false) { - - foreach ($ausers as $auser) { - $picture = print_user_picture($auser->id, $course->id, $auser->picture, false, true); - if (!empty($auser->submissionid)) { - if ($auser->timemodified > 0) { - $studentmodified = '
        '.userdate($auser->timemodified).'
        '; - } else { - $studentmodified = '
         
        '; - } - if ($auser->timemarked > 0) { - $teachermodified = '
        '.userdate($auser->timemarked).'
        '; - } else { - $teachermodified = '
         
        '; - } - - $grade = '
        '.$this->display_grade($auser->grade).'
        '; - $comment = '
        '.shorten_text($auser->comment, 15).'
        '; - - } else { - $studentmodified = '
         
        '; - $teachermodified = '
         
        '; - $status = '
        '; - $grade = '
         
        '; - $comment = '
         
        '; - } - - if ($auser->status === NULL) { - $auser->status = 0; - } - - $buttontext = ($auser->status == 1) ? $strupdate : $strgrade; - - $button = button_to_popup_window ('/mod/assignment/submissions.php?id='.$this->cm->id.'&userid='.$auser->id.'&mode=single', - 'grade'.$auser->id, $buttontext, 450, 600, $buttontext, 'none', true, 'button'.$auser->id); - - $status = '
        '.$button.'
        '; - - $row = array($picture, fullname($auser), $grade, $comment, $studentmodified, $teachermodified, $status); - $table->add_data($row); - } - } - - $table->print_html(); - - print_footer($this->course); - - } - - - - /* - * Display and process the submissions - */ - function process_feedback() { - - global $USER; - - if (!$feedback = data_submitted()) { // No incoming data? - return false; - } - - if (!empty($feedback->cancel)) { // User hit cancel button - return false; - } - - $newsubmission = $this->get_submission($feedback->userid, true); // Get or make one - - $newsubmission->grade = $feedback->grade; - $newsubmission->comment = $feedback->comment; - $newsubmission->teacher = $USER->id; - $newsubmission->mailed = 0; // Make sure mail goes out (again, even) - $newsubmission->timemarked = time(); - - if (empty($submission->timemodified)) { // eg for offline assignments - $newsubmission->timemodified = time(); - } - - if (! update_record('assignment_submissions', $newsubmission)) { - return false; - } - - add_to_log($this->course->id, 'assignment', 'update grades', - 'submissions.php?id='.$this->assignment->id.'&user='.$feedback->userid, $feedback->userid, $this->cm->id); - - return $newsubmission; - - } - - - function get_submission($userid, $createnew=false) { - $submission = get_record('assignment_submissions', 'assignment', $this->assignment->id, 'userid', $userid); - - if ($submission || !$createnew) { - return $submission; - } - - $newsubmission = new Object; - $newsubmission->assignment = $this->assignment->id; - $newsubmission->userid = $userid; - $newsubmission->timecreated = time(); - if (!insert_record("assignment_submissions", $newsubmission)) { - error("Could not insert a new empty submission"); - } - - return get_record('assignment_submissions', 'assignment', $this->assignment->id, 'userid', $userid); - } - - - function get_submissions($sort='', $dir='DESC') { - /// Return all assignment submissions by ENROLLED students (even empty) - global $CFG; - - if ($sort == "lastname" or $sort == "firstname") { - $sort = "u.$sort $dir"; - } else if (empty($sort)) { - $sort = "a.timemodified DESC"; - } else { - $sort = "a.$sort $dir"; - } - - $select = "s.course = '$this->assignment->course' AND"; - $site = get_site(); - if ($this->assignment->course == $site->id) { - $select = ''; - } - return get_records_sql("SELECT a.* - FROM {$CFG->prefix}assignment_submissions a, - {$CFG->prefix}user_students s, - {$CFG->prefix}user u - WHERE a.userid = s.userid - AND u.id = a.userid - AND $select a.assignment = '$this->assignment->id' - ORDER BY $sort"); - } - - - function count_real_submissions($groupid=0) { - /// Return all real assignment submissions by ENROLLED students (not empty ones) - global $CFG; - - if ($groupid) { /// How many in a particular group? - return count_records_sql("SELECT COUNT(DISTINCT g.userid, g.groupid) - FROM {$CFG->prefix}assignment_submissions a, - {$CFG->prefix}groups_members g - WHERE a.assignment = {$this->assignment->id} - AND a.timemodified > 0 - AND g.groupid = '$groupid' - AND a.userid = g.userid "); - } else { - $select = "s.course = '{$this->assignment->course}' AND"; - if ($this->assignment->course == SITEID) { - $select = ''; - } - return count_records_sql("SELECT COUNT(*) - FROM {$CFG->prefix}assignment_submissions a, - {$CFG->prefix}user_students s - WHERE a.assignment = '{$this->assignment->id}' - AND a.timemodified > 0 - AND $select a.userid = s.userid "); - } - } - -} ////// End of the assignment_base class - - - -/// OTHER STANDARD FUNCTIONS //////////////////////////////////////////////////////// - - -function assignment_delete_instance($id){ - global $CFG; - - if (! $assignment = get_record('assignment', 'id', $id)) { - return false; - } - - require_once("$CFG->dirroot/mod/assignment/type/$assignment->assignmenttype/assignment.class.php"); - $assignmentclass = "assignment_$assignment->assignmenttype"; - $ass = new $assignmentclass(); - return $ass->delete_instance($assignment); -} - - -function assignment_update_instance($assignment){ - global $CFG; - - require_once("$CFG->dirroot/mod/assignment/type/$assignment->assignmenttype/assignment.class.php"); - $assignmentclass = "assignment_$assignment->assignmenttype"; - $ass = new $assignmentclass(); - return $ass->update_instance($assignment); -} +} function assignment_add_instance($assignment) { - global $CFG; +// Given an object containing all the necessary data, +// (defined by the form in mod.html) this function +// will create a new instance and return the id number +// of the new instance. - require_once("$CFG->dirroot/mod/assignment/type/$assignment->assignmenttype/assignment.class.php"); - $assignmentclass = "assignment_$assignment->assignmenttype"; - $ass = new $assignmentclass(); - return $ass->add_instance($assignment); -} + $assignment->timemodified = time(); + + $assignment->timedue = make_timestamp($assignment->dueyear, $assignment->duemonth, $assignment->dueday, + $assignment->duehour, $assignment->dueminute); -function assignment_types() { - $types = array(); - $names = get_list_of_plugins('mod/assignment/type'); - foreach ($names as $name) { - $types[$name] = get_string('type'.$name, 'assignment'); + if ($returnid = insert_record("assignment", $assignment)) { + + $event = NULL; + $event->name = $assignment->name; + $event->description = $assignment->description; + $event->courseid = $assignment->course; + $event->groupid = 0; + $event->userid = 0; + $event->modulename = 'assignment'; + $event->instance = $returnid; + $event->eventtype = 'due'; + $event->timestart = $assignment->timedue; + $event->timeduration = 0; + + add_event($event); } - asort($types); - return $types; + + return $returnid; } -function assignment_upgrade_submodules() { - global $CFG; - $types = assignment_types(); +function assignment_update_instance($assignment) { +// Given an object containing all the necessary data, +// (defined by the form in mod.html) this function +// will update an existing instance with new data. - include_once($CFG->dirroot.'/mod/assignment/version.php'); // defines $module with version etc + $assignment->timemodified = time(); + $assignment->timedue = make_timestamp($assignment->dueyear, $assignment->duemonth, $assignment->dueday, + $assignment->duehour, $assignment->dueminute); + $assignment->id = $assignment->instance; - foreach ($types as $type) { - $fullpath = $CFG->dirroot.'/mod/assignment/type/'.$type; + if ($returnid = update_record("assignment", $assignment)) { - /// Check for an external version file (defines $submodule) + $event = NULL; - if (!is_readable($fullpath .'/version.php')) { - continue; + if ($event->id = get_field('event', 'id', 'modulename', 'assignment', 'instance', $assignment->id)) { + + $event->name = $assignment->name; + $event->description = $assignment->description; + $event->timestart = $assignment->timedue; + + update_event($event); } - unset($module); - include_once($fullpath .'/version.php'); + } - /// Check whether we need to upgrade + return $returnid; +} - if (!isset($submodule->version)) { - continue; + +function assignment_delete_instance($id) { +// Given an ID of an instance of this module, +// this function will permanently delete the instance +// and any data that depends on it. + + if (! $assignment = get_record("assignment", "id", "$id")) { + return false; + } + + $result = true; + + if (! delete_records("assignment_submissions", "assignment", "$assignment->id")) { + $result = false; + } + + if (! delete_records("assignment", "id", "$assignment->id")) { + $result = false; + } + + if (! delete_records('event', 'modulename', 'assignment', 'instance', $assignment->id)) { + $result = false; + } + + return $result; +} + +function assignment_refresh_events($courseid = 0) { +// This standard function will check all instances of this module +// and make sure there are up-to-date events created for each of them. +// If courseid = 0, then every assignment event in the site is checked, else +// only assignment events belonging to the course specified are checked. +// This function is used, in its new format, by restore_refresh_events() + + if ($courseid == 0) { + if (! $assignments = get_records("assignment")) { + return true; + } + } else { + if (! $assignments = get_records("assignment", "course", $courseid)) { + return true; + } + } + $moduleid = get_field('modules', 'id', 'name', 'assignment'); + + foreach ($assignments as $assignment) { + $event = NULL; + $event->name = addslashes($assignment->name); + $event->description = addslashes($assignment->description); + $event->timestart = $assignment->timedue; + + if ($event->id = get_field('event', 'id', 'modulename', 'assignment', 'instance', $assignment->id)) { + update_event($event); + + } else { + $event->courseid = $assignment->course; + $event->groupid = 0; + $event->userid = 0; + $event->modulename = 'assignment'; + $event->instance = $assignment->id; + $event->eventtype = 'due'; + $event->timeduration = 0; + $event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $assignment->id); + add_event($event); } - /// Make sure this submodule will work with this assignment version + } + return true; +} - if (isset($submodule->requires) and ($submodules->requires > $module->version)) { - notify("Assignment submodule '$type' is too new for your assignment"); - continue; - } - /// If we use versions, make sure an internal record exists - - $currentversion = 'assignment_'.$type.'_version'; - - if (!isset($CFG->$currentversion)) { - set_config($currentversion, 0); - } - - /// See if we need to upgrade +function assignment_user_outline($course, $user, $mod, $assignment) { + if ($submission = assignment_get_submission($assignment, $user)) { - if ($submodule->version <= $CFG->$currentversion) { - continue; + if ($submission->grade) { + $result->info = get_string("grade").": $submission->grade"; } + $result->time = $submission->timemodified; + return $result; + } + return NULL; +} - /// Look for the upgrade file +function assignment_user_complete($course, $user, $mod, $assignment) { + if ($submission = assignment_get_submission($assignment, $user)) { + if ($basedir = assignment_file_area($assignment, $user)) { + if ($files = get_directory_list($basedir)) { + $countfiles = count($files)." ".get_string("uploadedfiles", "assignment"); + foreach ($files as $file) { + $countfiles .= "; $file"; + } + } + } + + print_simple_box_start(); + echo "

        "; + echo get_string("lastmodified").": "; + echo userdate($submission->timemodified); + echo assignment_print_difference($assignment->timedue - $submission->timemodified); + echo "

        "; + + assignment_print_user_files($assignment, $user); + + echo "
        "; + + if (empty($submission->timemarked)) { + print_string("notgradedyet", "assignment"); + } else { + assignment_print_feedback($course, $submission, $assignment); + } + + print_simple_box_end(); + + } else { + print_string("notsubmittedyet", "assignment"); + } +} + + +function assignment_cron () { +// Function to be run periodically according to the moodle cron +// Finds all assignment notifications that have yet to be mailed out, and mails them + + global $CFG, $USER; + + $cutofftime = time() - $CFG->maxeditingtime; + + if ($submissions = assignment_get_unmailed_submissions($cutofftime)) { - if (!is_readable($fullpath .'/db/'.$CFG->dbtype.'.php')) { - continue; + foreach ($submissions as $key => $submission) { + if (! set_field("assignment_submissions", "mailed", "1", "id", "$submission->id")) { + echo "Could not update the mailed field for id $submission->id. Not mailed.\n"; + unset($submissions[$key]); + } } + + $timenow = time(); + + foreach ($submissions as $submission) { + + echo "Processing assignment submission $submission->id\n"; + + if (! $user = get_record("user", "id", "$submission->userid")) { + echo "Could not find user $post->userid\n"; + continue; + } + + $USER->lang = $user->lang; + + if (! $course = get_record("course", "id", "$submission->course")) { + echo "Could not find course $submission->course\n"; + continue; + } + + if (! isstudent($course->id, $user->id) and !isteacher($course->id, $user->id)) { + echo fullname($user)." not an active participant in $course->shortname\n"; + continue; + } + + if (! $teacher = get_record("user", "id", "$submission->teacher")) { + echo "Could not find teacher $submission->teacher\n"; + continue; + } + + if (! $mod = get_coursemodule_from_instance("assignment", $submission->assignment, $course->id)) { + echo "Could not find course module for assignment id $submission->assignment\n"; + continue; + } + + if (! $mod->visible) { /// Hold mail notification for hidden assignments until later + continue; + } + + $strassignments = get_string("modulenameplural", "assignment"); + $strassignment = get_string("modulename", "assignment"); + + unset($assignmentinfo); + $assignmentinfo->teacher = fullname($teacher); + $assignmentinfo->assignment = "$submission->name"; + $assignmentinfo->url = "$CFG->wwwroot/mod/assignment/view.php?id=$mod->id"; - include_once($fullpath .'/db/'. $CFG->dbtype .'.php'); // defines assignment_xxx_upgrade + $postsubject = "$course->shortname: $strassignments: $submission->name"; + $posttext = "$course->shortname -> $strassignments -> $submission->name\n"; + $posttext .= "---------------------------------------------------------------------\n"; + $posttext .= get_string("assignmentmail", "assignment", $assignmentinfo); + $posttext .= "---------------------------------------------------------------------\n"; - /// Perform the upgrade + if ($user->mailformat == 1) { // HTML + $posthtml = "

        ". + "wwwroot/course/view.php?id=$course->id\">$course->shortname ->". + "wwwroot/mod/assignment/index.php?id=$course->id\">$strassignments ->". + "wwwroot/mod/assignment/view.php?id=$mod->id\">$submission->name

        "; + $posthtml .= "
        "; + $posthtml .= "

        ".get_string("assignmentmailhtml", "assignment", $assignmentinfo)."

        "; + $posthtml .= "

        "; + } else { + $posthtml = ""; + } - $upgrade_function = 'assignment_'.$type.'_upgrade'; - if (function_exists($upgrade_function)) { - $db->debug=true; - if ($upgrade_function($CFG->$currentversion)) { - $db->debug=false; - set_config($currentversion, $submodule->version); + if (! email_to_user($user, $teacher, $postsubject, $posttext, $posthtml)) { + echo "Error: assignment cron: Could not send out mail for id $submission->id to user $user->id ($user->email)\n"; } - $db->debug=false; } } + return true; +} +function assignment_print_recent_activity($course, $isteacher, $timestart) { + global $CFG; + + $content = false; + $assignments = NULL; + + if (!$logs = get_records_select("log", "time > '$timestart' AND ". + "course = '$course->id' AND ". + "module = 'assignment' AND ". + "action = 'upload' ", "time ASC")) { + return false; + } + + foreach ($logs as $log) { + //Create a temp valid module structure (course,id) + $tempmod->course = $log->course; + $tempmod->id = $log->info; + //Obtain the visible property from the instance + $modvisible = instance_is_visible($log->module,$tempmod); + + //Only if the mod is visible + if ($modvisible) { + $assignments[$log->info] = assignment_log_info($log); + $assignments[$log->info]->time = $log->time; + $assignments[$log->info]->url = $log->url; + } + } + + if ($assignments) { + $strftimerecent = get_string("strftimerecent"); + $content = true; + print_headline(get_string("newsubmissions", "assignment").":"); + foreach ($assignments as $assignment) { + $date = userdate($assignment->time, $strftimerecent); + echo "

        $date - ".fullname($assignment)."
        "; + echo "\"wwwroot/mod/assignment/$assignment->url\">"; + echo "$assignment->name"; + echo "\"

        "; + } + } + + return $content; +} + +function assignment_grades($assignmentid) { +/// Must return an array of grades, indexed by user, and a max grade. + + + if (!$assignment = get_record("assignment", "id", $assignmentid)) { + return NULL; + } + + $grades = get_records_menu("assignment_submissions", "assignment", + $assignment->id, "", "userid,grade"); + + if ($assignment->grade >= 0) { + $return->grades = $grades; + $return->maxgrade = $assignment->grade; + + } else { + $scaleid = - ($assignment->grade); + if ($scale = get_record("scale", "id", $scaleid)) { + $scalegrades = make_menu_from_list($scale->scale); + if ($grades) { + foreach ($grades as $key => $grade) { + $grades[$key] = $scalegrades[$grade]; + } + } + } + $return->grades = $grades; + $return->maxgrade = ""; + } + + return $return; +} + +function assignment_get_participants($assignmentid) { +//Returns the users with data in one assignment +//(users with records in assignment_submissions, students and teachers) + + global $CFG; + + //Get students + $students = get_records_sql("SELECT DISTINCT u.* + FROM {$CFG->prefix}user u, + {$CFG->prefix}assignment_submissions a + WHERE a.assignment = '$assignmentid' and + u.id = a.userid"); + //Get teachers + $teachers = get_records_sql("SELECT DISTINCT u.* + FROM {$CFG->prefix}user u, + {$CFG->prefix}assignment_submissions a + WHERE a.assignment = '$assignmentid' and + u.id = a.teacher"); + + //Add teachers to students + if ($teachers) { + foreach ($teachers as $teacher) { + $students[$teacher->id] = $teacher; + } + } + //Return students array (it contains an array of unique users) + return ($students); +} + +function assignment_scale_used ($assignmentid,$scaleid) { +//This function returns if a scale is being used by one assignment + + $return = false; + + $rec = get_record("assignment","id","$assignmentid","grade","-$scaleid"); + + if (!empty($rec) && !empty($scaleid)) { + $return = true; + } + + return $return; +} + +/// SQL STATEMENTS ////////////////////////////////////////////////////////////////// + +function assignment_log_info($log) { + global $CFG; + return get_record_sql("SELECT a.name, u.firstname, u.lastname + FROM {$CFG->prefix}assignment a, + {$CFG->prefix}user u + WHERE a.id = '$log->info' + AND u.id = '$log->userid'"); +} + +function assignment_count_real_submissions($assignment, $groupid=0) { +/// Return all real assignment submissions by ENROLLED students (not empty ones) + global $CFG; + + if ($groupid) { /// How many in a particular group? + return count_records_sql("SELECT COUNT(DISTINCT g.userid, g.groupid) + FROM {$CFG->prefix}assignment_submissions a, + {$CFG->prefix}groups_members g + WHERE a.assignment = $assignment->id + AND a.timemodified > 0 + AND g.groupid = '$groupid' + AND a.userid = g.userid "); + } else { + $select = "s.course = '$assignment->course' AND"; + $site = get_site(); + if ($assignment->course == $site->id) { + $select = ''; + } + return count_records_sql("SELECT COUNT(*) + FROM {$CFG->prefix}assignment_submissions a, + {$CFG->prefix}user_students s + WHERE a.assignment = '$assignment->id' + AND a.timemodified > 0 + AND $select a.userid = s.userid "); + } +} + +function assignment_get_all_submissions($assignment, $sort="", $dir="DESC") { +/// Return all assignment submissions by ENROLLED students (even empty) + global $CFG; + + if ($sort == "lastname" or $sort == "firstname") { + $sort = "u.$sort $dir"; + } else if (empty($sort)) { + $sort = "a.timemodified DESC"; + } else { + $sort = "a.$sort $dir"; + } + + $select = "s.course = '$assignment->course' AND"; + $site = get_site(); + if ($assignment->course == $site->id) { + $select = ''; + } + return get_records_sql("SELECT a.* + FROM {$CFG->prefix}assignment_submissions a, + {$CFG->prefix}user_students s, + {$CFG->prefix}user u + WHERE a.userid = s.userid + AND u.id = a.userid + AND $select a.assignment = '$assignment->id' + ORDER BY $sort"); +} + +function assignment_get_users_done($assignment) { +/// Return list of users who have done an assignment + global $CFG; + + $select = "s.course = '$assignment->course' AND"; + $site = get_site(); + if ($assignment->course == $site->id) { + $select = ''; + } + return get_records_sql("SELECT u.* + FROM {$CFG->prefix}user u, + {$CFG->prefix}user_students s, + {$CFG->prefix}assignment_submissions a + WHERE $select s.userid = u.id + AND u.id = a.userid + AND a.assignment = '$assignment->id' + ORDER BY a.timemodified DESC"); +} + +function assignment_get_unmailed_submissions($cutofftime) { +/// Return list of marked submissions that have not been mailed out for currently enrolled students + global $CFG; + $records = get_records_sql("SELECT s.*, a.course, a.name + FROM {$CFG->prefix}assignment_submissions s, + {$CFG->prefix}assignment a, + {$CFG->prefix}user_students us + WHERE s.mailed = 0 + AND s.timemarked < $cutofftime + AND s.timemarked > 0 + AND s.assignment = a.id + AND s.userid = us.userid + AND a.course = us.course"); + $site = get_site(); + if (record_exists('assignment', 'course', $site->id)) { + $records += get_records_sql("SELECT s.*, a.course, a.name + FROM {$CFG->prefix}assignment_submissions s, + {$CFG->prefix}assignment a, + {$CFG->prefix}user_students us + WHERE s.mailed = 0 + AND s.timemarked < $cutofftime + AND s.timemarked > 0 + AND s.assignment = a.id + AND s.userid = us.userid + AND a.course = $site->id"); + } +} + + +////////////////////////////////////////////////////////////////////////////////////// + +function assignment_file_area_name($assignment, $user) { +// Creates a directory file name, suitable for make_upload_directory() + global $CFG; + + return "$assignment->course/$CFG->moddata/assignment/$assignment->id/$user->id"; +} + +function assignment_file_area($assignment, $user) { + return make_upload_directory( assignment_file_area_name($assignment, $user) ); +} + +function assignment_get_submission($assignment, $user) { + $submission = get_record("assignment_submissions", "assignment", $assignment->id, "userid", $user->id); + if (!empty($submission->timemodified)) { + return $submission; + } + return NULL; +} + +function assignment_print_difference($time) { + if ($time < 0) { + $timetext = get_string("late", "assignment", format_time($time)); + return " ($timetext)"; + } else { + $timetext = get_string("early", "assignment", format_time($time)); + return " ($timetext)"; + } +} + +function assignment_print_submission($assignment, $user, $submission, $teachers, $grades) { + global $THEME, $USER; + + echo "\n"; + + echo "\n"; + if ($assignment->type == OFFLINE) { + echo "\n"; + echo ""; + + if ($assignment->type != OFFLINE) { + echo "\n"; + } + + echo "\n"; + echo ""; + + echo "
        body\" WIDTH=35 VALIGN=TOP>"; + } else { + echo "\nbody\" WIDTH=35 VALIGN=TOP>"; + } + print_user_picture($user->id, $assignment->course, $user->picture); + echo "cellheading\">".fullname($user, true); + if ($assignment->type != OFFLINE and $submission->timemodified) { + echo "  ".get_string("lastmodified").": "; + echo userdate($submission->timemodified); + echo assignment_print_difference($assignment->timedue - $submission->timemodified); + echo ""; + } + echo "
        cellcontent\">"; + if ($submission->timemodified) { + assignment_print_user_files($assignment, $user); + } else { + print_string("notsubmittedyet", "assignment"); + } + echo "
        "; + if (!$submission->teacher) { + $submission->teacher = $USER->id; + } + print_user_picture($submission->teacher, $assignment->course, $teachers[$submission->teacher]->picture); + if ($submission->timemodified > $submission->timemarked) { + echo "cellheading2\">"; + } else { + echo "cellheading\">"; + } + if (!$submission->grade and !$submission->timemarked) { + $submission->grade = -1; /// Hack to stop zero being selected on the menu below (so it shows 'no grade') + } + echo get_string("feedback", "assignment").":"; + choose_from_menu($grades, "g$submission->id", $submission->grade, get_string("nograde")); + if ($submission->timemarked) { + echo "  ".userdate($submission->timemarked).""; + } + echo "

        "; + echo "

        \n"; +} + +function assignment_print_feedback($course, $submission, $assignment) { + global $CFG, $THEME, $RATING; + + if (! $teacher = get_record("user", "id", $submission->teacher)) { + error("Weird assignment error"); + } + + echo "\n
        "; + echo "\n"; + + echo "\n"; + echo "\n"; + echo ""; + + echo "\n
        body\" WIDTH=35 VALIGN=TOP>"; + print_user_picture($teacher->id, $course->id, $teacher->picture); + echo "cellheading\">".fullname($teacher); + echo "  ".userdate($submission->timemarked).""; + echo "
        cellcontent\">"; + + echo "

        "; + if ($assignment->grade) { + if ($submission->grade or $submission->timemarked) { + echo get_string("grade").": $submission->grade"; + } else { + echo get_string("nograde"); + } + } + echo "

        "; + + echo text_to_html($submission->comment); + echo "
        "; + echo "
        "; +} + + +function assignment_print_user_files($assignment, $user) { +// Arguments are objects + + global $CFG; + + $filearea = assignment_file_area_name($assignment, $user); + + if ($basedir = assignment_file_area($assignment, $user)) { + if ($files = get_directory_list($basedir)) { + foreach ($files as $file) { + $icon = mimeinfo("icon", $file); + if ($CFG->slasharguments) { + $ffurl = "file.php/$filearea/$file"; + } else { + $ffurl = "file.php?file=/$filearea/$file"; + } + + echo "pixpath/f/$icon\" height=16 width=16 border=0 alt=\"file\">"; + echo " wwwroot/$ffurl\">$file"; + echo "
        "; + } + } + } +} + +function assignment_delete_user_files($assignment, $user, $exception) { +// Deletes all the user files in the assignment area for a user +// EXCEPT for any file named $exception + + if ($basedir = assignment_file_area($assignment, $user)) { + if ($files = get_directory_list($basedir)) { + foreach ($files as $file) { + if ($file != $exception) { + unlink("$basedir/$file"); + notify(get_string("existingfiledeleted", "assignment", $file)); + } + } + } + } +} + +function assignment_print_upload_form($assignment) { +// Arguments are objects + + echo "
        "; + echo "
        "; + echo " maxbytes\">"; + echo " id\">"; + echo " "; + echo " "; + echo "
        "; + echo "
        "; +} + +function assignment_get_recent_mod_activity(&$activities, &$index, $sincetime, $courseid, $assignment="0", $user="", $groupid="") { +// Returns all assignments since a given time. If assignment is specified then +// this restricts the results + + global $CFG; + + if ($assignment) { + $assignmentselect = " AND cm.id = '$assignment'"; + } else { + $assignmentselect = ""; + } + if ($user) { + $userselect = " AND u.id = '$user'"; + } else { + $userselect = ""; + } + + $assignments = get_records_sql("SELECT asub.*, u.firstname, u.lastname, u.picture, u.id as userid, + a.grade as maxgrade, name, cm.instance, cm.section, a.type + FROM {$CFG->prefix}assignment_submissions asub, + {$CFG->prefix}user u, + {$CFG->prefix}assignment a, + {$CFG->prefix}course_modules cm + WHERE asub.timemodified > '$sincetime' + AND asub.userid = u.id $userselect + AND a.id = asub.assignment $assignmentselect + AND cm.course = '$courseid' + AND cm.instance = a.id + ORDER BY asub.timemodified ASC"); + + if (empty($assignments)) + return; + + foreach ($assignments as $assignment) { + if (empty($groupid) || ismember($groupid, $assignment->userid)) { + + $tmpactivity->type = "assignment"; + $tmpactivity->defaultindex = $index; + $tmpactivity->instance = $assignment->instance; + $tmpactivity->name = $assignment->name; + $tmpactivity->section = $assignment->section; + + $tmpactivity->content->grade = $assignment->grade; + $tmpactivity->content->maxgrade = $assignment->maxgrade; + $tmpactivity->content->type = $assignment->type; + + $tmpactivity->user->userid = $assignment->userid; + $tmpactivity->user->fullname = fullname($assignment); + $tmpactivity->user->picture = $assignment->picture; + + $tmpactivity->timestamp = $assignment->timemodified; + + $activities[] = $tmpactivity; + + $index++; + } + } + + return; +} + +function assignment_print_recent_mod_activity($activity, $course, $detail=false) { + global $CFG, $THEME; + + echo ''; + + echo ""; + echo "
        cellcontent2\" class=\"forumpostpicture\" width=\"35\" valign=\"top\">"; + print_user_picture($activity->user->userid, $course, $activity->user->picture); + echo ""; + + + if ($detail) { + echo "modpixpath/$activity->type/icon.gif\" ". + "height=16 width=16 alt=\"$activity->type\"> "; + echo "wwwroot/mod/assignment/view.php?id=" . $activity->instance . "\">" + . $activity->name . " - "; + + } + + if (isteacher($USER)) { + $grades = "(" . $activity->content->grade . " / " . $activity->content->maxgrade . ") "; + + $assignment->id = $activity->instance; + $assignment->course = $course; + $user->id = $activity->user->userid; + + echo $grades; + if ($activity->content->type == UPLOADSINGLE) { + $file = assignment_get_user_file($assignment, $user); + echo "pixpath/f/$file->icon\" height=16 width=16 border=0 alt=\"file\">"; + echo " wwwroot/$file->url\">$file->name"; + } + echo "
        "; + } + echo "wwwroot/user/view.php?id=" + . $activity->user->userid . "&course=$course\">" + . $activity->user->fullname . " "; + + echo " - " . userdate($activity->timestamp); + + echo "
        "; + + return; +} + +function assignment_get_user_file($assignment, $user) { + global $CFG; + + $tmpfile = ""; + + $filearea = assignment_file_area_name($assignment, $user); + + if ($basedir = assignment_file_area($assignment, $user)) { + if ($files = get_directory_list($basedir)) { + foreach ($files as $file) { + $icon = mimeinfo("icon", $file); + if ($CFG->slasharguments) { + $ffurl = "file.php/$filearea/$file"; + } else { + $ffurl = "file.php?file=/$filearea/$file"; + } + $tmpfile->url = $ffurl; + $tmpfile->name = $file; + $tmpfile->icon = $icon; + } + } + } + return $tmpfile; } ?> diff --git a/mod/assignment/mod.html b/mod/assignment/mod.html index ebdd58fe400..c4c9d0e7faa 100644 --- a/mod/assignment/mod.html +++ b/mod/assignment/mod.html @@ -1,6 +1,4 @@ dirroot/mod/assignment/lib.php"); - if (empty($form->name)) { $form->name = ""; } @@ -10,8 +8,8 @@ if (empty($form->format)) { $form->format = ""; } - if (empty($form->assignmenttype)) { - $form->assignmenttype = "uploadsingle"; + if (empty($form->type)) { + $form->type = ""; } if (empty($form->resubmit)) { $form->resubmit = ""; @@ -19,15 +17,6 @@ if (!isset($form->grade)) { $form->grade = 100; } - if (!isset($form->timedue)) { - $form->timedue = time()+7*24*3600; - } - if (!isset($form->timeavailable)) { - $form->timeavailable = time(); - } - if (!isset($form->grade)) { - $form->grade = 100; - } if (empty($form->maxbytes)) { $form->maxbytes = $CFG->assignment_maxbytes; } @@ -35,17 +24,18 @@ $form->timedue = ""; } ?> -
        + + - + - + + + + + + + + - + - - - + + + - - - - - - - + -
        :

        :

        : -

        +

        :

        + "; @@ -57,6 +47,8 @@ emoticonhelpbutton("form", "description"); } ?> +
        +
        '; } else { - echo '
        '; + echo '

        '; helpbutton("textformat", get_string("formattexttype")); print_string("formattexttype"); echo ': '; @@ -73,60 +65,67 @@ $form->format = $defaultformat; } choose_from_menu(format_text_menu(), "format", $form->format, ""); - echo '

        '; + echo '

        '; } ?>

        :

        + dirroot/mod/assignment/lib.php"); + asort($ASSIGNMENT_TYPE); + choose_from_menu($ASSIGNMENT_TYPE, "type", $form->type, ""); + helpbutton("assignmenttype", get_string("assignmenttype", "assignment"), "assignment"); + ?> +

        :

        + resubmit, ""); + helpbutton("resubmit", get_string("allowresubmit", "assignment"), "assignment"); + ?> +
        :

        :

        id, "grade", "$form->grade"); ?>
        : - assignmenttype, ""); - helpbutton("assignmenttype", get_string("assignmenttype", "assignment"), "assignment"); +

        :

        maxbytes, $course->maxbytes); + choose_from_menu ($choices, "maxbytes", $form->maxbytes, ""); ?> -
        :timeavailable); - echo " - "; - print_time_selector("availablehour", "availableminute", $form->timeavailable); - ?>
        :

        :

        timedue); echo " - "; print_time_selector("duehour", "dueminute", $form->timedue); ?>

        - - - - - - - - - - + + + + + + + +" /> +" />
        diff --git a/mod/assignment/plan.txt b/mod/assignment/plan.txt deleted file mode 100644 index 06b071182f0..00000000000 --- a/mod/assignment/plan.txt +++ /dev/null @@ -1,48 +0,0 @@ -Development priorities - -1) The first is to refactor the assignment module into a - class-based structure that allows new assignment types - to be plugged in. (Some similar work is already starting - with quiz questions and resources). This is easiest to - do now while assignment is still fairly small, and will allow - a lot of growth and assignment variants in the future. - - The idea is that new plugins like Exercise should just be - dropped into mod/assignment/types/exercise and will then - appear as a new type in the assignment menu. - - Each directory contains a subclass of a main class file - (eg mod/assignments/types/types.php) which define a number - of functions used in various places within the assignment - interface. - - -2) The second thing is to make this module more scalable for - teachers (ie on the grading screen). - - The format I'm thinking of is something like this (you may - have some ideas also). It's meant to still allow the quick - run down the page technique we have now (but even quicker) while - also allowing for detailed feedback. Imagine a long table with - lines like this: - - Student name {Info} [grade] [short comment field...] {More} - - The {Info} could be a filename, or a link to a popup that shows a full - assignment, or something else defined by the plugin. - - The {More} is a button that creates a popup window containing - longer feedback, again defined by the plugin. There would usually be - the grade menu (or text field), a large textarea, an upload button, - etc ... - - -3) Online assignments. This is just like the Journal module except - Teachers can also edit the assignment and perhaps ask them to - revise and resubmit. Versions of pages are kept, like the Wiki, - but there's only one page. All in the HTML editor. This should - be trivial to implement once the above framework exists. - - This will also allow me to get rid of the current Journal module - which duplicates alot of assignment code (but not well). - diff --git a/mod/assignment/restorelib.php b/mod/assignment/restorelib.php index 77f1f04b166..f93cc6cff07 100644 --- a/mod/assignment/restorelib.php +++ b/mod/assignment/restorelib.php @@ -1,4 +1,4 @@ -description = backup_todb($info['MOD']['#']['DESCRIPTION']['0']['#']); $assignment->format = backup_todb($info['MOD']['#']['FORMAT']['0']['#']); $assignment->resubmit = backup_todb($info['MOD']['#']['RESUBMIT']['0']['#']); - $assignment->emailteachers = backup_todb($info['MOD']['#']['EMAILTEACHERS']['0']['#']); $assignment->type = backup_todb($info['MOD']['#']['TYPE']['0']['#']); - $assignment->assignmenttype = backup_todb($info['MOD']['#']['ASSIGNMENTTYPE']['0']['#']); $assignment->maxbytes = backup_todb($info['MOD']['#']['MAXBYTES']['0']['#']); $assignment->timedue = backup_todb($info['MOD']['#']['TIMEDUE']['0']['#']); - $assignment->timeavailable = backup_todb($info['MOD']['#']['TIMEAVAILABLE']['0']['#']); $assignment->grade = backup_todb($info['MOD']['#']['GRADE']['0']['#']); $assignment->timemodified = backup_todb($info['MOD']['#']['TIMEMODIFIED']['0']['#']); @@ -61,19 +58,11 @@ } } - if (empty($assignment->assignmenttype)) { /// Pre 1.5 assignment - if ($assignment->type == 1) { - $assignment->assignmenttype = 'uploadsingle'; - } else { - $assignment->assignmenttype = 'offline'; - } - } - //The structure is equal to the db, so insert the assignment $newid = insert_record ("assignment",$assignment); //Do some output - echo "
      • ".get_string("modulename","assignment")." \"".format_string(stripslashes($assignment->name),true)."\"
      • "; + echo "
        • ".get_string("modulename","assignment")." \"".$assignment->name."\"
          "; backup_flush(300); if ($newid) { @@ -88,6 +77,10 @@ } else { $status = false; } + + //Finalize ul + echo "
        "; + } else { $status = false; } @@ -122,8 +115,6 @@ $submission->timecreated = backup_todb($sub_info['#']['TIMECREATED']['0']['#']); $submission->timemodified = backup_todb($sub_info['#']['TIMEMODIFIED']['0']['#']); $submission->numfiles = backup_todb($sub_info['#']['NUMFILES']['0']['#']); - $submission->data1 = backup_todb($sub_info['#']['DATA1']['0']['#']); - $submission->data2 = backup_todb($sub_info['#']['DATA2']['0']['#']); $submission->grade = backup_todb($sub_info['#']['GRADE']['0']['#']); $submission->comment = backup_todb($sub_info['#']['COMMENT']['0']['#']); $submission->teacher = backup_todb($sub_info['#']['TEACHER']['0']['#']); @@ -149,7 +140,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "
        "; + echo "
        "; } backup_flush(300); } @@ -225,47 +216,7 @@ return $status; } - //This function converts texts in FORMAT_WIKI to FORMAT_MARKDOWN for - //some texts in the module - function assignment_restore_wiki2markdown ($restore) { - - global $CFG; - - $status = true; - - //Convert assignment->description - if ($records = get_records_sql ("SELECT a.id, a.description, a.format - FROM {$CFG->prefix}assignment a, - {$CFG->prefix}backup_ids b - WHERE a.course = $restore->course_id AND - a.format = ".FORMAT_WIKI. " AND - b.backup_code = $restore->backup_unique_code AND - b.table_name = 'assignment' AND - b.new_id = a.id")) { - foreach ($records as $record) { - //Rebuild wiki links - $record->description = restore_decode_wiki_content($record->description, $restore); - //Convert to Markdown - $wtm = new WikiToMarkdown(); - $record->description = $wtm->convert($record->description, $restore->course_id); - $record->format = FORMAT_MARKDOWN; - $status = update_record('assignment', addslashes_object($record)); - //Do some output - $i++; - if (($i+1) % 1 == 0) { - echo "."; - if (($i+1) % 20 == 0) { - echo "
        "; - } - backup_flush(300); - } - } - - } - return $status; - } - - //This function returns a log record with all the necessay transformations +//This function returns a log record with all the necessay transformations //done. It's used by restore_log_module() to restore modules log. function assignment_restore_logs($restore,$log) { @@ -345,7 +296,7 @@ } break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored
        "; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored
        "; //Debug break; } diff --git a/mod/assignment/styles.php b/mod/assignment/styles.php deleted file mode 100644 index e0a820c90c0..00000000000 --- a/mod/assignment/styles.php +++ /dev/null @@ -1,93 +0,0 @@ -#mod-assignment-submissions .submission td { - padding: 10px; -} - -#mod-assignment-submissions .generaltable .r1 { - background-color: #FFFFFF; -} - -#mod-assignment-submissions .header .commands { - display: inline; -} - -#mod-assignment-submissions .s0 { - background: #FFD991; -} - -#mod-assignment-submissions .submissions td, -#mod-assignment-submissions .submissions th -{ - border-width: 1px; - border-style: solid; - border-color: #DDDDDD; - vertical-align: middle; - padding-left: 5px; - padding-right: 5px; -} - -#mod-assignment-submissions .grade { - text-align: right; - font-weight:bold; -} - -#mod-assignment-submissions .picture { - width: 35px; -} - -#mod-assignment-submissions .fullname { - text-align: left; -} - -#mod-assignment-submissions .timemodified, -#mod-assignment-submissions .timemarked -{ - text-align: left; - font-size: 0.9em; -} - -#mod-assignment-submissions .status { - text-align: center; -} - - -#mod-assignment-view .feedback { - border-width:1px; - border-style:solid; - border-color:#DDDDDD; - margin-top: 15px; - width: 80%; - margin-left: 10%; - margin-right: 10%; -} - -#mod-assignment-view .feedback .topic { - padding: 4px; - border-style:solid; - border-width: 0px; - border-bottom-width: 1px; - border-color:#DDDDDD; -} - -#mod-assignment-view .feedback .author { - font-weight: bold; -} - -#mod-assignment-view .feedback .date { - font-size: 0.8em; -} - -#mod-assignment-view .feedback .content { - padding: 4px; -} - -#mod-assignment-view .feedback .grade { - text-align: right; - font-weight:bold; -} - -#mod-assignment-view .feedback .left { - width: 35px; - padding: 4px; - text-align: center; - vertical-align: top; -} diff --git a/mod/assignment/submissions.php b/mod/assignment/submissions.php index 2a2b29444f9..2a245772348 100644 --- a/mod/assignment/submissions.php +++ b/mod/assignment/submissions.php @@ -1,47 +1,199 @@ -instance)) { - error("assignment ID was incorrect"); - } - - if (! $course = get_record("course", "id", $assignment->course)) { - error("Course is misconfigured"); - } - } else { - if (!$assignment = get_record("assignment", "id", $a)) { - error("Course module is incorrect"); - } - if (! $course = get_record("course", "id", $assignment->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("assignment", $assignment->id, $course->id)) { - error("Course Module ID was incorrect"); - } + if (! $assignment = get_record("assignment", "id", $id)) { + error("Course module is incorrect"); + } + if (! $course = get_record("course", "id", $assignment->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("assignment", $assignment->id, $course->id)) { + error("Course Module ID was incorrect"); } - require_login($course->id, false, $cm); + require_login($course->id); if (!isteacher($course->id)) { error("Only teachers can look at this page"); } -/// Load up the required assignment code - require($CFG->dirroot.'/mod/assignment/type/'.$assignment->assignmenttype.'/assignment.class.php'); - $assignmentclass = 'assignment_'.$assignment->assignmenttype; - $assignmentinstance = new $assignmentclass($cm->id); + $strassignments = get_string("modulenameplural", "assignment"); + $strassignment = get_string("modulename", "assignment"); + $strsubmissions = get_string("submissions", "assignment"); + $strsaveallfeedback = get_string("saveallfeedback", "assignment"); - $assignmentinstance->submissions($mode); // Display or process the submissions + print_header_simple($assignment->name, "", + "id\">$strassignments -> + id\">$assignment->name -> $strsubmissions", + "", "", true, update_module_button($cm->id, $course->id, $strassignment), navmenu($course, $cm)); +/// Check to see if groups are being used in this assignment + if ($groupmode = groupmode($course, $cm)) { // Groups are being used + $currentgroup = setup_and_print_groups($course, $groupmode, "submissions.php?id=$assignment->id&sort=$sort&dir=$dir"); + } else { + $currentgroup = false; + } + +/// Get all teachers and students + $teachers = get_course_teachers($course->id); + + if ($currentgroup) { + $users = get_group_users($currentgroup); + } else { + $users = get_course_students($course->id); + } + if (!$users) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; + } + +/// Make some easy ways to reference submissions + if ($submissions = assignment_get_all_submissions($assignment, $sort, $dir)) { + foreach ($submissions as $submission) { + $submissionbyuser[$submission->userid] = $submission; + } + } + +/// Get all existing submissions and check for missing ones + foreach($users as $user) { + if (!isset($submissionbyuser[$user->id])) { // Need to create empty entry + $newsubmission->assignment = $assignment->id; + $newsubmission->userid = $user->id; + $newsubmission->timecreated = time(); + if (!insert_record("assignment_submissions", $newsubmission)) { + error("Could not insert a new empty submission"); + } + } + } + + if (isset($newsubmission)) { // Get them all out again to be sure + $submissions = assignment_get_all_submissions($assignment, $sort, $dir); + } + + +/// If data is being submitted, then process it + if ($data = data_submitted()) { + + $feedback = array(); + // Peel out all the data from variable names. + foreach ($data as $key => $val) { + if (!in_array($key, array("id", "timenow"))) { + $type = substr($key,0,1); + $num = substr($key,1); + $feedback[$num][$type] = $val; + } + } + + $count = 0; + foreach ($feedback as $num => $vals) { + $submission = $submissions[$num]; + // Only update entries where feedback has actually changed. + if (($vals['g'] <> $submission->grade) || ($vals['c'] <> addslashes($submission->comment))) { + unset($newsubmission); + $newsubmission->grade = $vals['g']; + $newsubmission->comment = $vals['c']; + $newsubmission->teacher = $USER->id; + $newsubmission->timemarked = $timenow; + $newsubmission->mailed = 0; // Make sure mail goes out (again, even) + $newsubmission->id = $num; + + // Make sure that we aren't overwriting any recent feedback from other teachers. (see bug #324) + if ($timewas < $submission->timemarked && (!empty($submission->grade)) && (!empty($submission->comment))) { + notify(get_string("failedupdatefeedback", "assignment", fullname($users[$submission->userid])) + . "
        " . get_string("grade") . ": $newsubmission->grade" + . "
        " . get_string("feedback", "assignment") . ": $newsubmission->comment\n"); + } else { //print out old feedback and grade + if (empty($submission->timemodified)) { // eg for offline assignments + $newsubmission->timemodified = $timenow; + } + if (! update_record("assignment_submissions", $newsubmission)) { + notify(get_string("failedupdatefeedback", "assignment", $submission->userid)); + } else { + $count++; + } + } + } + } + $submissions = assignment_get_all_submissions($assignment,$sort, $dir); + add_to_log($course->id, "assignment", "update grades", "submissions.php?id=$assignment->id", "$count users", $cm->id); + notify(get_string("feedbackupdated", "assignment", $count)); + } else { + add_to_log($course->id, "assignment", "view submission", "submissions.php?id=$assignment->id", "$assignment->id", $cm->id); + } + + // Submission sorting + + $sorttypes = array('firstname', 'lastname', 'timemodified', 'grade'); + + print_simple_box_start("center", "50%"); + echo '

        '.get_string('order').':  '; + + foreach ($sorttypes as $sorttype) { + if ($sorttype == 'timemodified') { + $label = get_string("lastmodified"); + } else { + $label = get_string($sorttype); + } + if ($sort == $sorttype) { // Current sort + $newdir = $dir == 'ASC' ? 'DESC' : 'ASC'; + } else { + $newdir = 'ASC'; + } + echo "id&sort=$sorttype&dir=$newdir\">$label"; + if ($sort == $sorttype) { // Current sort + $diricon = $dir == 'ASC' ? 'down' : 'up'; + echo " pixpath/t/$diricon.gif\" />"; + } + echo "      "; + } + + echo "

        "; + print_simple_box_end(); + + print_spacer(8,1); + + $allowedtograde = ($groupmode != VISIBLEGROUPS or isteacheredit($course->id) or ismember($currentgroup)); + + if ($allowedtograde) { + echo '
        '; + echo "
        "; + echo ""; + echo ""; + echo "id\">"; + echo ""; + echo "
        "; + } + + $grades = make_grades_menu($assignment->grade); + + foreach ($submissions as $submission) { + if (isset($users[$submission->userid])) { + $user = $users[$submission->userid]; + assignment_print_submission($assignment, $user, $submission, $teachers, $grades); + } + } + + if ($allowedtograde) { + echo "
        "; + echo ""; + echo ""; + echo "id\">"; + echo ""; + echo "
        "; + echo "
        "; + } + + print_footer($course); + ?> diff --git a/mod/assignment/type/common.html b/mod/assignment/type/common.html deleted file mode 100644 index e0ba22c4db1..00000000000 --- a/mod/assignment/type/common.html +++ /dev/null @@ -1,26 +0,0 @@ -
        - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mod/assignment/type/common_end.html b/mod/assignment/type/common_end.html deleted file mode 100644 index 55823541d1e..00000000000 --- a/mod/assignment/type/common_end.html +++ /dev/null @@ -1 +0,0 @@ -
        diff --git a/mod/assignment/type/offline/assignment.class.php b/mod/assignment/type/offline/assignment.class.php deleted file mode 100644 index cec552fdd4f..00000000000 --- a/mod/assignment/type/offline/assignment.class.php +++ /dev/null @@ -1,48 +0,0 @@ -dirroot/mod/assignment/type/offline/mod.html"); - parent::setup_end(); - } - - function submittedlink() { - global $USER; - - $submitted = ''; - - if (isteacher($this->course->id)) { - $submitted = '' . - get_string('viewfeedback', 'assignment') . ''; - } else { - if (isset($USER->id)) { - if ($submission = $this->get_submission($USER->id)) { - if ($submission->timemodified <= $assignment->timedue) { - $submitted = userdate($submission->timemodified); - } else { - $submitted = ''.userdate($submission->timemodified).''; - } - } - } - } - - return $submitted; - } - - - -} - -?> diff --git a/mod/assignment/type/offline/mod.html b/mod/assignment/type/offline/mod.html deleted file mode 100644 index 7f98198e7c2..00000000000 --- a/mod/assignment/type/offline/mod.html +++ /dev/null @@ -1,3 +0,0 @@ -
        -"> -
        diff --git a/mod/assignment/type/postdata.html b/mod/assignment/type/postdata.html deleted file mode 100644 index 7c19c582e22..00000000000 --- a/mod/assignment/type/postdata.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mod/assignment/type/uploadsingle/assignment.class.php b/mod/assignment/type/uploadsingle/assignment.class.php deleted file mode 100644 index 8cdf38ca906..00000000000 --- a/mod/assignment/type/uploadsingle/assignment.class.php +++ /dev/null @@ -1,55 +0,0 @@ -dirroot/mod/assignment/type/uploadsingle/mod.html"); - parent::setup_end(); - } - - function submittedlink() { - global $USER; - - $submitted = ''; - - if (isteacher($this->course->id)) { - if ($this->currentgroup and isteacheredit($this->course->id)) { - $group = get_record('groups', 'id', $this->currentgroup); - $groupname = ' ('.$group->name.')'; - } else { - $groupname = ''; - } - $count = $this->count_real_submissions($this->currentgroup); - $submitted = ''. - get_string('viewsubmissions', 'assignment', $count).''.$groupname; - } else { - if (isset($USER->id)) { - if ($submission = $this->get_submission($USER)) { - if ($submission->timemodified <= $this->assignment->timedue) { - $submitted = userdate($submission->timemodified); - } else { - $submitted = ''.userdate($submission->timemodified).''; - } - } - } - } - - return $submitted; - } - - -} - -?> diff --git a/mod/assignment/type/uploadsingle/mod.html b/mod/assignment/type/uploadsingle/mod.html deleted file mode 100644 index 7f98198e7c2..00000000000 --- a/mod/assignment/type/uploadsingle/mod.html +++ /dev/null @@ -1,3 +0,0 @@ -
        -"> -
        diff --git a/mod/assignment/upload.php b/mod/assignment/upload.php index fb73f967517..ad9a6b4a2e8 100644 --- a/mod/assignment/upload.php +++ b/mod/assignment/upload.php @@ -1,10 +1,14 @@ -id, false, $cm); + require_login($course->id); + + add_to_log($course->id, "assignment", "upload", "view.php?a=$assignment->id", "$assignment->id", $cm->id); $strassignments = get_string("modulenameplural", "assignment"); $strassignment = get_string("modulename", "assignment"); $strupload = get_string("upload"); print_header_simple("$assignment->name : $strupload", "", - "id>$strassignments -> - id\">$assignment->name -> $strupload", + "id>$strassignments -> + id\">$assignment->name -> $strupload", "", "", true); if ($submission = get_record("assignment_submissions", "assignment", $assignment->id, "userid", $USER->id)) { @@ -34,38 +40,54 @@ } } - $dir = assignment_file_area_name($assignment,$USER); - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $um = new upload_manager('newfile',true,false,$course,false,$assignment->maxbytes); - if ($um->process_file_uploads($dir)) { - $newfile_name = $um->get_new_filename(); - if ($submission) { - $submission->timemodified = time(); - $submission->numfiles = 1; - $submission->comment = addslashes($submission->comment); - if (update_record("assignment_submissions", $submission)) { - assignment_email_teachers($course, $cm, $assignment, $submission); - print_heading(get_string('uploadedfile')); - } else { - notify(get_string("uploadfailnoupdate", "assignment")); - } + if (! $dir = assignment_file_area($assignment, $USER)) { + error("Sorry, an error in the system prevents you from uploading files: contact your teacher or system administrator"); + } + + if (empty($newfile)) { + notify(get_string("uploadnofilefound", "assignment") ); + + } else if (is_uploaded_file($newfile['tmp_name']) and $newfile['size'] > 0) { + if ($newfile['size'] > $assignment->maxbytes) { + notify(get_string("uploadfiletoobig", "assignment", $assignment->maxbytes)); } else { - $newsubmission->assignment = $assignment->id; - $newsubmission->userid = $USER->id; - $newsubmission->timecreated = time(); - $newsubmission->timemodified = time(); - $newsubmission->numfiles = 1; - if (insert_record("assignment_submissions", $newsubmission)) { - add_to_log($course->id, "assignment", "upload", "view.php?a=$assignment->id", "$assignment->id", $cm->id); - assignment_email_teachers($course, $cm, $assignment, $newsubmission); - print_heading(get_string('uploadedfile')); + $newfile_name = clean_filename($newfile['name']); + if ($newfile_name) { + if (move_uploaded_file($newfile['tmp_name'], "$dir/$newfile_name")) { + chmod("$dir/$newfile_name", $CFG->directorypermissions); + assignment_delete_user_files($assignment, $USER, $newfile_name); + if ($submission) { + $submission->timemodified = time(); + $submission->numfiles = 1; + $submission->comment = addslashes($submission->comment); + if (update_record("assignment_submissions", $submission)) { + print_heading(get_string("uploadsuccess", "assignment", $newfile_name) ); + } else { + notify(get_string("uploadfailnoupdate", "assignment")); + } + } else { + $newsubmission->assignment = $assignment->id; + $newsubmission->userid = $USER->id; + $newsubmission->timecreated = time(); + $newsubmission->timemodified = time(); + $newsubmission->numfiles = 1; + if (insert_record("assignment_submissions", $newsubmission)) { + print_heading(get_string("uploadsuccess", "assignment", $newfile_name) ); + } else { + notify(get_string("uploadnotregistered", "assignment", $newfile_name) ); + } + } + } else { + notify(get_string("uploaderror", "assignment") ); + } } else { - notify(get_string("uploadnotregistered", "assignment", $newfile_name) ); + notify(get_string("uploadbadname", "assignment") ); } } + } else { + notify(get_string("uploadnofilefound", "assignment") ); } - // upload class will take care of printing out errors. - + print_continue("view.php?a=$assignment->id"); print_footer($course); diff --git a/mod/assignment/version.php b/mod/assignment/version.php index d11f9f668d0..a4c4a2b8bca 100644 --- a/mod/assignment/version.php +++ b/mod/assignment/version.php @@ -5,8 +5,8 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2005041501; -$module->requires = 2005031000; // Requires this Moodle version +$module->version = 2004060400; +$module->requires = 2004052501; // Requires this Moodle version $module->cron = 60; ?> diff --git a/mod/assignment/view.php b/mod/assignment/view.php index 42cc6239db3..1f058f30b47 100644 --- a/mod/assignment/view.php +++ b/mod/assignment/view.php @@ -1,29 +1,26 @@ -forcelogin)) { - require_login(); - } + optional_variable($id); // Course Module ID + optional_variable($a); // Assignment ID if ($id) { if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); } - if (! $assignment = get_record("assignment", "id", $cm->instance)) { - error("assignment ID was incorrect"); - } - - if (! $course = get_record("course", "id", $assignment->course)) { + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); } + + if (! $assignment = get_record("assignment", "id", $cm->instance)) { + error("Course module is incorrect"); + } + } else { - if (!$assignment = get_record("assignment", "id", $a)) { + if (! $assignment = get_record("assignment", "id", $a)) { error("Course module is incorrect"); } if (! $course = get_record("course", "id", $assignment->course)) { @@ -34,10 +31,110 @@ } } - require ("$CFG->dirroot/mod/assignment/type/$assignment->assignmenttype/assignment.class.php"); - $assignmentclass = "assignment_$assignment->assignmenttype"; - $assignmentinstance = new $assignmentclass($cm->id); + require_course_login($course); - $assignmentinstance->view(); // Actually display the assignment! + add_to_log($course->id, "assignment", "view", "view.php?id=$cm->id", $assignment->id, $cm->id); + + $strassignments = get_string("modulenameplural", "assignment"); + $strassignment = get_string("modulename", "assignment"); + + print_header_simple($assignment->name, "", + "id>$strassignments -> $assignment->name", + "", "", true, update_module_button($cm->id, $course->id, $strassignment), navmenu($course, $cm)); + + if (isteacher($course->id)) { + echo '

        '; + if ($assignment->type == OFFLINE) { + echo "id\">". + get_string("viewfeedback", "assignment").""; + } else { + $currentgroup = get_current_group($course->id); + if ($currentgroup and isteacheredit($course->id)) { + $group = get_record("groups", "id", $currentgroup); + $groupname = " ($group->name)"; + } else { + $groupname = ""; + } + $count = assignment_count_real_submissions($assignment, $currentgroup); + echo "id\">". + get_string("viewsubmissions", "assignment", $count)."$groupname"; + } + echo '

        '; + } else if (!$cm->visible) { + notice(get_string("activityiscurrentlyhidden")); + } + + print_simple_box_start("CENTER"); + print_heading($assignment->name, "CENTER"); + + $timedifference = $assignment->timedue - time(); + if ($timedifference < 31536000) { // Don't bother showing dates over a year in the future + $strdifference = format_time($timedifference); + if ($timedifference < 0) { + $strdifference = "$strdifference"; + } + $strduedate = userdate($assignment->timedue)." ($strdifference)"; + echo "".get_string("duedate", "assignment").": $strduedate
        "; + } + + if ($assignment->grade < 0) { + $scaleid = - ($assignment->grade); + if ($scale = get_record("scale", "id", $scaleid)) { + $scalegrades = make_menu_from_list($scale->scale); + echo "".get_string("grade").": $scale->name "; + print_scale_menu_helpbutton($course->id, $scale); + echo "
        "; + } + } else if ($assignment->grade > 0) { + echo "".get_string("maximumgrade").": $assignment->grade
        "; + } + + echo "
        "; + echo format_text($assignment->description, $assignment->format); + print_simple_box_end(); + echo "
        "; + + if (isstudent($course->id)) { + $submission = assignment_get_submission($assignment, $USER); + + if ($assignment->type == OFFLINE) { + if ($submission->timemarked) { + if (isset($scalegrades)) { + $submission->grade = $scalegrades[$submission->grade]; + } + assignment_print_feedback($course, $submission, $assignment); + } + } else { + if ($submission and $submission->timemodified) { + print_simple_box_start("center"); + echo "
        "; + print_heading(get_string("yoursubmission","assignment").":", "center"); + echo "

        ".get_string("lastmodified").": ".userdate($submission->timemodified)."

        "; + assignment_print_user_files($assignment, $USER); + print_simple_box_end(); + } else { + print_heading(get_string("notsubmittedyet","assignment")); + } + + echo "
        "; + + if ($submission and $submission->timemarked) { + print_heading(get_string("submissionfeedback", "assignment").":", "center"); + if (isset($scalegrades)) { + $submission->grade = $scalegrades[$submission->grade]; + } + assignment_print_feedback($course, $submission, $assignment); + } + if (!$submission->timemarked or $assignment->resubmit) { + if ($submission and $submission->timemodified) { + echo "

        ".get_string("overwritewarning", "assignment")."

        "; + } + print_heading(get_string("submitassignment", "assignment").":", "center"); + assignment_print_upload_form($assignment); + } + } + } + + print_footer($course); ?> diff --git a/mod/attendance/add.php b/mod/attendance/add.php index c9cf4765b1e..5ce7d9d69f1 100644 --- a/mod/attendance/add.php +++ b/mod/attendance/add.php @@ -17,7 +17,7 @@ if (isset($_POST["course"])) { $mod = (object)$_POST; } - if (isset($cancel)) { + if (isset($cancel)) { if (!empty($SESSION->returnpage)) { $return = $SESSION->returnpage; unset($SESSION->returnpage); @@ -40,30 +40,30 @@ if (isset($_POST["course"])) { /* // set the information for the new instances $attendance->dynsection = !empty($attendance->dynsection) ? 1 : 0; - $attendance->day = make_timestamp($attendance->theyear, - $attendance->themonth, $attendance->theday); + $attendance->day = make_timestamp($attendance->theyear, + $attendance->themonth, $attendance->theday); $attendance->name=userdate($attendance->day, get_string("strftimedate")); - if ($attendance->notes) { - $attendance->name = $attendance->name . " - " . $attendance->notes; - } + if ($attendance->notes) { + $attendance->name = $attendance->name . " - " . $attendance->notes; + } */ $curdate = make_timestamp($mod->startyear, $mod->startmonth, $mod->startday); $stopdate = make_timestamp($mod->endyear, $mod->endmonth, $mod->endday); - $enddate = $curdate + $mod->numsections * 604800; + $enddate = $curdate + $mod->numsections * 604800; if ($curdate > $stopdate) { - error(get_string("endbeforestart", "attendance")); - } + error(get_string("endbeforestart", "attendance")); + } if ($enddate < $curdate) { - error(get_string("startafterend", "attendance")); - } + error(get_string("startafterend", "attendance")); + } if ($stopdate > $enddate) { // if stop date is after end of course, just move it to end of course - $stopdate = $enddate; - } + $stopdate = $enddate; + } while ($curdate <= $stopdate) { $mod->day = $curdate; $mod->name=userdate($mod->day, get_string("strftimedate")); - if (isset($mod->notes)) {$mod->name = $mod->name . " - " . $mod->notes;} + if (isset($mod->notes)) {$mod->name = $mod->name . " - " . $mod->notes;} switch(userdate($curdate, "%u")) { case 1: if (!empty($mod->mon)) {attendance_add_module($mod);}break; case 2: if (!empty($mod->tue)) {attendance_add_module($mod);}break; @@ -75,7 +75,7 @@ if (isset($_POST["course"])) { } // switch $curdate = $curdate + 86400; // add one day to the date } // while for days - + if (!empty($SESSION->returnpage)) { $return = $SESSION->returnpage; unset($SESSION->returnpage); @@ -84,13 +84,13 @@ if (isset($_POST["course"])) { redirect("index.php?id=$mod->course"); } exit; - + } else { /// ----------------------------------------------------------------------------------- /// ------------------ SECTION FOR MAKING THE FORM TO BE POSTED ----------------------- /// ----------------------------------------------------------------------------------- -/// @include_once("$CFG->dirroot/mod/attendance/lib.php"); +/// @include_once("$CFG->dirroot/mod/attendance/lib.php"); /// error_reporting(E_ALL); require_variable($id); @@ -132,8 +132,8 @@ if (isset($_POST["course"])) { if ($course->category) { print_header("$course->shortname: $streditinga", "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname -> - wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural -> + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> + wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural -> $streditinga", "form.name", "", false); } else { print_header("$course->shortname: $streditinga", "$course->fullname", @@ -143,12 +143,12 @@ if (isset($_POST["course"])) { unset($SESSION->modform); // Clear any old ones that may be hanging around. - $icon = "modpixpath/$module->name/icon.gif\" alt=\"\" /> "; + $icon = "modpixpath/$module->name/icon.gif\"> "; print_heading_with_help($pageheading, "mods", $module->name, $icon); - print_simple_box_start('center'); - + print_simple_box_start("center", "", "$THEME->cellheading"); + /// Print the main part of the page // adaptation of mod code to view code needs this: @@ -164,45 +164,45 @@ $form->maxgrade = isset($CFG->attendance_maxgrade)?$CFG->attendance_maxgrade:0; $form->hours = isset($CFG->attendance_default_hours)?$CFG->attendance_default_hours:1; ?> -
        -
        -" /> -" /> - + +
        +"> +"> +
        - - - - - - - - + + + + + + + + - - - + + - + + - - + + + - - + + + - - - + + - - + + + - - - + + -

        :

        startdate) ?>

        :

        enddate) ?>

        :

        startdate) ?>

        :

        enddate) ?>

        :

        +

        :

        - + - + - + - + - + - + - + -

        :

        +

        :

        hours = isset($CFG->attendance_default_hours)?$CFG->attendance_default_ho choose_from_menu($options, "dynsection", "", ""); helpbutton("dynsection", get_string("dynamicsectionmulti","attendance"), "attendance"); ?> - -

        :

        +

        :

        hours = isset($CFG->attendance_default_hours)?$CFG->attendance_default_ho ?> - -

        :

        hours, "1","","1") ?> +

        :

        hours, "1","","1") ?>

        :

        +

        :

        helpbutton("grade", get_string("gradevalue","attendance"), "attendance"); ?> - -

        :

        maxgrade, "0","","0"); +

        :

        maxgrade, "0","","0"); helpbutton("maxgrade", get_string("maxgradevalue","attendance"), "attendance"); ?>
        +
        - - - - - - - - -
        -" /> -" /> - - + + + + + + + + +
        +"> +"> + + attendance_dynsection)) { - $CFG->attendance_dynsection = ''; - } - if (!isset($CFG->attendance_default_hours)) { - $CFG->attendance_default_hours = ''; - } - if (!isset($CFG->attendance_tardies_per_absence)) { - $CFG->attendance_tardies_per_absence = ''; - } - if (!isset($CFG->attendance_hours_in_full_report)) { - $CFG->attendance_hours_in_full_report = ''; - } - if (!isset($CFG->attendance_default_student_status)) { - $CFG->attendance_default_student_status = ''; - } - if (!isset($CFG->attendance_autoattend)) { - $CFG->attendance_autoattend = ''; - } - if (!isset($CFG->attendance_grade)) { - $CFG->attendance_grade = ''; - } - if (!isset($CFG->attendance_maxgrade)) { - $CFG->attendance_maxgrade = ''; - } -?>
        - - + - + - + - + - +
        attendance_dynsection:

        attendance_dynsection:

        attendance_dynsection, ""); ?> @@ -40,7 +13,7 @@
        attendance_default_hours:

        attendance_default_hours:

        attendance_default_hours, ""); ?> @@ -51,7 +24,7 @@
        attendance_tardies_per_absence:

        attendance_tardies_per_absence:

        attendance_tardies_per_absence, "none","","0"); ?> @@ -62,7 +35,7 @@
        attendance_hours_in_full_report:

        attendance_hours_in_full_report:

        attendance_tardies_per_absence, ""); ?> @@ -73,7 +46,7 @@
        attendance_default_student_status:

        attendance_default_student_status:

        attendance_default_student_status == 1) {$r2c="checked";} elseif ($CFG->attendance_default_student_status == 2) {$r3c="checked";} else {$r1c="checked";} - $radio1=""; - $radio2=""; - $radio3=""; + $radio1=""; + $radio2=""; + $radio3=""; echo "\n"; echo " - + - + - + + ">
        ". $radio1.$P."". @@ -101,7 +74,7 @@
        attendance_autoattend:

        attendance_autoattend:

        attendance_autoattend, ""); ?> @@ -112,7 +85,7 @@
        attendance_grade:

        attendance_grade:

        attendance_grade, ""); ?> @@ -123,7 +96,7 @@
        attendance_maxgrade:

        attendance_maxgrade:

        attendance_maxgrade, ""); ?> @@ -136,7 +109,7 @@
        - " />
        diff --git a/mod/attendance/db/mysql.php b/mod/attendance/db/mysql.php index 285495169d7..7fa84dbc55b 100644 --- a/mod/attendance/db/mysql.php +++ b/mod/attendance/db/mysql.php @@ -1,59 +1,28 @@ -prefix}attendance` ADD `edited` TINYINT( 1 ) DEFAULT '0' NOT NULL;"); - - execute_sql("UPDATE `{$CFG->prefix}attendance` set `edited` = 1;"); - - } - - if ($oldversion < 2003092500) { - - execute_sql("ALTER TABLE `{$CFG->prefix}attendance` ADD `autoattend` TINYINT( 1 ) DEFAULT '0' NOT NULL;"); - - } - - - - if ($oldversion < 2004050301) { - - modify_database("", "INSERT INTO {$CFG->prefix}log_display VALUES ('attendance', 'view', 'attendance', 'name');"); - - modify_database("", "INSERT INTO {$CFG->prefix}log_display VALUES ('attendance', 'viewall', 'attendance', 'name');"); - - modify_database("", "INSERT INTO {$CFG->prefix}log_display VALUES ('attendance', 'viewweek', 'attendance', 'name');"); - - } - - if ($oldversion < 2004111200) { - execute_sql("ALTER TABLE {$CFG->prefix}attendance DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}attendance_roll DROP INDEX dayid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}attendance_roll DROP INDEX userid;",false); - - modify_database('','ALTER TABLE prefix_attendance ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_attendance_roll ADD INDEX dayid (dayid);'); - modify_database('','ALTER TABLE prefix_attendance_roll ADD INDEX userid (userid);'); - } - - return true; - -} - - - -?> +prefix}attendance` ADD `edited` TINYINT( 1 ) DEFAULT '0' NOT NULL;"); + execute_sql("UPDATE `{$CFG->prefix}attendance` set `edited` = 1;"); + } + if ($oldversion < 2003092500) { + execute_sql("ALTER TABLE `{$CFG->prefix}attendance` ADD `autoattend` TINYINT( 1 ) DEFAULT '0' NOT NULL;"); + } + + if ($oldversion < 2004050301) { + modify_database("", "INSERT INTO {$CFG->prefix}log_display VALUES ('attendance', 'view', 'attendance', 'name');"); + modify_database("", "INSERT INTO {$CFG->prefix}log_display VALUES ('attendance', 'viewall', 'attendance', 'name');"); + modify_database("", "INSERT INTO {$CFG->prefix}log_display VALUES ('attendance', 'viewweek', 'attendance', 'name');"); + } + + + + return true; +} + +?> diff --git a/mod/attendance/db/mysql.sql b/mod/attendance/db/mysql.sql index 8526c7f2389..c559b9256b0 100755 --- a/mod/attendance/db/mysql.sql +++ b/mod/attendance/db/mysql.sql @@ -14,8 +14,7 @@ CREATE TABLE prefix_attendance ( dynsection tinyint(1) NOT NULL default '0', edited tinyint(1) NOT NULL default '0', autoattend tinyint(1) NOT NULL default '0', - PRIMARY KEY (id), - KEY `course` (`course`) + PRIMARY KEY (id) ) TYPE=MyISAM; # @@ -29,11 +28,5 @@ CREATE TABLE prefix_attendance_roll ( hour tinyint(1) unsigned NOT NULL default '0', status int(11) NOT NULL default '0', notes varchar(64) NOT NULL default '', - PRIMARY KEY (id), - KEY `dayid` (`dayid`), - KEY `userid` (`userid`) + PRIMARY KEY (id) ) TYPE=MyISAM; -INSERT INTO prefix_log_display VALUES ('attendance', 'view', 'attendance', 'name'); -INSERT INTO prefix_log_display VALUES ('attendance', 'view', 'attendance', 'name'); -INSERT INTO prefix_log_display VALUES ('attendance', 'viewall', 'attendance', 'name'); - diff --git a/mod/attendance/db/oci8po.php b/mod/attendance/db/oci8po.php index 451707bdbd6..8d14e8e8991 100755 --- a/mod/attendance/db/oci8po.php +++ b/mod/attendance/db/oci8po.php @@ -1,22 +1,11 @@ - - + diff --git a/mod/attendance/db/postgres7.php b/mod/attendance/db/postgres7.php index b518d872c29..6f4af9fdb59 100644 --- a/mod/attendance/db/postgres7.php +++ b/mod/attendance/db/postgres7.php @@ -18,28 +18,6 @@ function attendance_upgrade($oldversion) { table_column("attendance", "", "autoattend", "integer", 2, "unsigned", "0", "not null"); } - if ($oldversion < 2004050301) { - - modify_database("", "INSERT INTO {$CFG->prefix}log_display VALUES ('attendance', 'view', 'attendance', 'name');"); - - modify_database("", "INSERT INTO {$CFG->prefix}log_display VALUES ('attendance', 'viewall', 'attendance', 'name');"); - - modify_database("", "INSERT INTO {$CFG->prefix}log_display VALUES ('attendance', 'viewweek', 'attendance', 'name');"); - - } - - - - if ($oldversion < 2004111200) { - execute_sql("DROP INDEX {$CFG->prefix}attendance_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}attendance_roll_dayid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}attendance_roll_userid_idx;",false); - - modify_database('','CREATE INDEX prefix_attendance_course_idx ON prefix_attendance (course);'); - modify_database('','CREATE INDEX prefix_attendance_roll_dayid_idx ON prefix_attendance_roll (dayid);'); - modify_database('','CREATE INDEX prefix_attendance_roll_userid_idx ON prefix_attendance_roll (userid);'); - } - return true; } diff --git a/mod/attendance/db/postgres7.sql b/mod/attendance/db/postgres7.sql index b9d0180c935..170336037c9 100644 --- a/mod/attendance/db/postgres7.sql +++ b/mod/attendance/db/postgres7.sql @@ -3,40 +3,30 @@ # CREATE TABLE prefix_attendance ( - id SERIAL8, + id SERIAL, name varchar(255) NOT NULL default '', - course int8 NOT NULL default '0', - day int8 NOT NULL default '0', + course int4 NOT NULL default '0', + day int4 NOT NULL default '0', hours int2 NOT NULL default '0', roll int2 NOT NULL default '0', notes varchar(64) NOT NULL default '', - timemodified int8 NOT NULL default '0', + timemodified int4 NOT NULL default '0', dynsection int2 NOT NULL default '0', edited int2 NOT NULL default '0', autoattend int2 NOT NULL default '0', PRIMARY KEY(id) ); -CREATE INDEX prefix_attendance_course_idx ON prefix_attendance (course); - # # Table structure for table `prefix_attendance_roll` # CREATE TABLE prefix_attendance_roll ( - id SERIAL8, + id SERIAL, dayid int4 NOT NULL default '0', - userid int8 NOT NULL default '0', + userid int4 NOT NULL default '0', hour int2 NOT NULL default '0', status int4 NOT NULL default '0', notes varchar(64) NOT NULL default '', PRIMARY KEY (id) ); - -CREATE INDEX prefix_attendance_roll_dayid_idx ON prefix_attendance_roll (dayid); -CREATE INDEX prefix_attendance_roll_userid_idx ON prefix_attendance_roll (userid); - -INSERT INTO prefix_log_display VALUES ('attendance', 'view', 'attendance', 'name'); -INSERT INTO prefix_log_display VALUES ('attendance', 'view', 'attendance', 'name'); -INSERT INTO prefix_log_display VALUES ('attendance', 'viewall', 'attendance', 'name'); - diff --git a/mod/attendance/index.php b/mod/attendance/index.php index ceafb7e817d..7922744f016 100644 --- a/mod/attendance/index.php +++ b/mod/attendance/index.php @@ -1,4 +1,4 @@ -visible) { //Show dimmed if the mod is hidden - $link = "coursemodule\">$attendance->name"; + $link = "coursemodule\">$attendance->name"; } else { //Show normal if the mod is visible - $link = "coursemodule\">$attendance->name"; + $link = "coursemodule\">$attendance->name"; } if ($course->format == "weeks" or $course->format == "topics") { @@ -69,7 +69,7 @@ } } - echo "
        "; + echo "
        "; print_table($table); diff --git a/mod/attendance/lib.php b/mod/attendance/lib.php index 1d8aa0ca180..bee964aff23 100755 --- a/mod/attendance/lib.php +++ b/mod/attendance/lib.php @@ -1,4 +1,4 @@ -prefix}user u, {$CFG->prefix}attendance_roll a WHERE a.dayid = '$attendanceid' and @@ -378,7 +387,8 @@ function attendance_get_course_students($courseid, $sort="u.lastaccess DESC") { // make sure it works on the site course $select = "s.course = '$courseid' AND"; - if ($courseid == SITEID) { + $site = get_site(); + if ($courseid == $site->id) { $select = ''; } return get_records_sql("SELECT u.id, u.username, u.firstname, u.lastname, u.maildisplay, u.mailformat, diff --git a/mod/attendance/mod.html b/mod/attendance/mod.html index 4fbb1d33275..7674f0c6302 100755 --- a/mod/attendance/mod.html +++ b/mod/attendance/mod.html @@ -16,44 +16,42 @@ if (empty($form->autoattend)) { if (empty($form->grade)) { $form->grade = 0; } -if (empty($form->maxgrade)) { - $form->maxgrade = 0; -} // error_reporting(E_ALL); // if we're adding a new instance if (empty($form->id)) { - if (isset($CFG->attendance_dynsection) && ($CFG->attendance_dynsection == "1")) { $form->dynsection = 1; } - if (isset($CFG->attendance_autoattend) && ($CFG->attendance_autoattend == "1")) { $form->autoattend = 1; } - if (isset($CFG->attendance_grade) && ($CFG->attendance_grade == "1")) { $form->grade = 1; } - $form->maxgrade = isset($CFG->attendance_maxgrade)?$CFG->attendance_maxgrade:0; - $form->hours = isset($CFG->attendance_default_hours)?$CFG->attendance_default_hours:1; - $form->day = time(); - $form->notes = ""; + if (isset($CFG->attendance_dynsection) && ($CFG->attendance_dynsection == "1")) { $form->dynsection = 1; } + if (isset($CFG->attendance_autoattend) && ($CFG->attendance_autoattend == "1")) { $form->autoattend = 1; } + if (isset($CFG->attendance_grade) && ($CFG->attendance_grade == "1")) { $form->grade = 1; } + $form->maxgrade = isset($CFG->attendance_maxgrade)?$CFG->attendance_maxgrade:0; + $form->hours = isset($CFG->attendance_default_hours)?$CFG->attendance_default_hours:1; + $form->day = time(); + $form->notes = ""; } ?> - -
        - + +
        +
        - - - + + + - - + + - - - - - - - + + + + + + + + - - - + + + + - - - + + - - - + + + + - - - + + - -
        :

        :

        - " /> +
        :day) ?>
        : + +

        :

        day) ?>

        :

        id)) { choose_from_menu($options, "dynsection", "$form->dynsection", ""); helpbutton("dynsection", get_string("dynamicsection","attendance"), "attendance"); ?> - -
        : +

        :

        id)) { helpbutton("autoattend", get_string("autoattend","attendance"), "attendance"); ?> - -
        :hours, "1","","1") ?> +

        :

        hours, "1","","1") ?>
        : +

        :

        choose_from_menu($options, "grade", "$form->grade", ""); helpbutton("grade", get_string("gradevalue","attendance"), "attendance"); ?> - -
        :maxgrade, "0","","0"); +

        :

        maxgrade, "0","","0"); helpbutton("maxgrade", get_string("maxgradevalue","attendance"), "attendance"); ?>
        + +
        foreach ($rolls as $roll) { $sroll[$roll->userid][$roll->hour]->status=$roll->status; $sroll[$roll->userid][$roll->hour]->notes=$roll->notes; - } + } } // get the list of students along with student ID field // get back array of stdclass objects in sorted order, with members: @@ -137,27 +135,27 @@ for ($i=0;$i<=100;$i++){ $opt2[$i] = $i; } ?> echo ""; if ($form->hours >1) { - echo "\n"; - for($i=1;$i<=$form->hours;$i++) { - echo "\n"; - } - echo "\n"; + echo "\n"; + for($i=1;$i<=$form->hours;$i++) { + echo "\n"; + } + echo "\n"; } // if more than one hour for each day - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; $P=get_string("presentshort","attendance"); $T=get_string("tardyshort","attendance"); $A=get_string("absentshort","attendance"); // generate the headers for the attendance hours - for($i=1;$i<=$form->hours;$i++) { - echo "\n"; - echo "\n"; - echo "\n"; - } - echo "\n"; + for($i=1;$i<=$form->hours;$i++) { + echo "\n"; + echo "\n"; + echo "\n"; + } + echo "\n"; $table->head = array("Last Name","First Name","ID", get_string("presentlong","attendance"), get_string("tardylong","attendance"), @@ -172,27 +170,27 @@ if ($form->hours >1) { echo "\n"; echo "\n"; echo "\n"; - for($j=1;$j<=$form->hours;$j++) { + for($j=1;$j<=$form->hours;$j++) { // set the attendance defaults for each student - $r1c=$r2c=$r3c=" "; + $r1c=$r2c=$r3c=" "; $rollstatus = (($form->edited==0)?$CFG->attendance_default_student_status: ((isset($sroll[$student->id][$j]->status)?$sroll[$student->id][$j]->status:0))); - if ($rollstatus==1) {$r2c="checked=\"checked\"";} - elseif ($rollstatus==2) {$r3c="checked=\"checked\"";} - else {$r1c="checked=\"checked\"";} - $radio1="id."_".$j."\" value=\"0\" ".$r1c." />"; - $radio2="id."_".$j."\" value=\"1\" ".$r2c." />"; - $radio3="id."_".$j."\" value=\"2\" ".$r3c." />"; + if ($rollstatus==1) {$r2c="checked";} + elseif ($rollstatus==2) {$r3c="checked";} + else {$r1c="checked";} + $radio1="id."_".$j."\" value=\"0\" ".$r1c.">"; + $radio2="id."_".$j."\" value=\"1\" ".$r2c.">"; + $radio3="id."_".$j."\" value=\"2\" ".$r3c.">"; echo "\n"; echo "\n"; echo "\n"; - } // for loop + } // for loop echo "\n"; -// $radio1="id."\" value=\"0\" checked=\"checked\" />"; -// $radio2="id."\" value=\"1\" />"; -// $radio3="id."\" value=\"2\" />"; +// $radio1="id."\" value=\"0\" checked>"; +// $radio2="id."\" value=\"1\">"; +// $radio3="id."\" value=\"2\">"; // $table->data[$i]=array($student->lastname, $student->firstname, -// $student->idnumber, $radio1,$radio2,$radio3); +// $student->idnumber, $radio1,$radio2,$radio3); // $i++; } // doing the table manually now @@ -202,19 +200,18 @@ if ($form->hours >1) { } // if ($form->id) ?> - - - - - - - - -
        + + + + + + + +
        course . "&section=".$form->section ."\">" . get_string("addmultiple","attendance") . "

        "; + echo "course . "§ion=".$form->section ."\">" . get_string("addmultiple","attendance") . "

        "; ?> -" /> -" /> - - +"> +"> + + diff --git a/mod/attendance/restorelib.php b/mod/attendance/restorelib.php index 316c5c8ff0e..993dc388329 100644 --- a/mod/attendance/restorelib.php +++ b/mod/attendance/restorelib.php @@ -1,4 +1,4 @@ -".get_string("modulename","attendance")." \"".$attendance->name."\""; + echo "
        • ".get_string("modulename","attendance")." \"".$attendance->name."\"
          "; backup_flush(300); if ($newid) { @@ -69,6 +69,10 @@ } else { $status = false; } + + //Finalize ul + echo "
        "; + } else { $status = false; } @@ -117,7 +121,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "
        "; + echo "
        "; } backup_flush(300); } diff --git a/mod/attendance/teacheredit.php b/mod/attendance/teacheredit.php index 6f52fba005a..2a2a1e2657a 100755 --- a/mod/attendance/teacheredit.php +++ b/mod/attendance/teacheredit.php @@ -74,18 +74,18 @@ if ($course->category) { print_header("$course->shortname: $streditinga", "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname -> - wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural -> + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> + wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural -> $streditinga", $focuscursor, "", false); } else { print_header("$course->shortname: $streditinga", "$course->fullname", "$streditinga", $focuscursor, "", false); } - $icon = "modpixpath/$module->name/icon.gif\" alt=\"\" /> "; + $icon = "modpixpath/$module->name/icon.gif\"> "; print_heading_with_help($pageheading, "mods", $module->name, $icon); - print_simple_box_start('center'); + print_simple_box_start("center", "", "$THEME->cellheading"); @@ -109,10 +109,10 @@ if (empty($form->id)) { $form->notes = ""; } ?> -wwwroot/course/mod.php"; ?>"> -
        -" /> -" /> +wwwroot/course/mod.php"; ?>"> +
        +"> +"> hours >1) { if ($rollstatus==1) {$r2c="checked";} elseif ($rollstatus==2) {$r3c="checked";} else {$r1c="checked";} - $radio1="id."_".$j."\" value=\"0\" ".$r1c." />"; - $radio2="id."_".$j."\" value=\"1\" ".$r2c." />"; - $radio3="id."_".$j."\" value=\"2\" ".$r3c." />"; + $radio1="id."_".$j."\" value=\"0\" ".$r1c.">"; + $radio2="id."_".$j."\" value=\"1\" ".$r2c.">"; + $radio3="id."_".$j."\" value=\"2\" ".$r3c.">"; echo "
        \n"; echo "\n"; echo "\n"; @@ -204,21 +204,21 @@ if ($form->hours >1) { } // if ($form->id) ?> - - - - - - - -
        + + + + + + + +
        course . "&section=".$form->section ."\">Add multiple rolls

        "; + echo "course . "§ion=".$form->section ."\">Add multiple rolls

        "; ?> -" /> -" /> - - +"> +"> + + @@ -230,4 +230,4 @@ if ($form->hours >1) { print_footer($course); -?> +?> \ No newline at end of file diff --git a/mod/attendance/version.php b/mod/attendance/version.php index eecfc993b96..a574183c509 100644 --- a/mod/attendance/version.php +++ b/mod/attendance/version.php @@ -1,12 +1,12 @@ -version = 2005021600; // The current module version (Date: YYYYMMDDXX) -$module->requires = 2005021600; // Requires this Moodle version +$module->version = 2004060400; // The current module version (Date: YYYYMMDDXX) +$module->requires = 2004052501; // Requires this Moodle version $module->cron = 3600; // Period for cron to check this module (secs) ?> diff --git a/mod/attendance/view.php b/mod/attendance/view.php index f22c187a896..d5f7b25ab01 100644 --- a/mod/attendance/view.php +++ b/mod/attendance/view.php @@ -9,7 +9,7 @@ if ($id) { if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); - } + } if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); } @@ -28,7 +28,7 @@ } } - require_login($course->id, true, $cm); + require_login($course->id); add_to_log($course->id, "attendance", "view", "view.php?id=$cm->id", $attendance->id, $cm->id); @@ -39,8 +39,8 @@ $strteacheredit = get_string("teacheredit", "attendance"); print_header_simple($attendance->name, "", - "id>$strattendances -> $attendance->name", - "", "", true, update_module_button($cm->id, $course->id, $strattendance), + "id>$strattendances -> $attendance->name", + "", "", true, update_module_button($cm->id, $course->id, $strattendance), navmenu($course, $cm)); /// Print the main part of the page @@ -64,21 +64,18 @@ $sroll[$roll->userid][$roll->hour]->status=$roll->status; $sroll[$roll->userid][$roll->hour]->notes=$roll->notes; } - } else { - $sroll = array(); //just to set default value } - // get the list of attendance records for all hours of the given day and + // get the list of attendance records for all hours of the given day and // put it in the array for use in the attendance table $strviewall = get_string("viewall", "attendance"); $strviewweek = get_string("viewweek", "attendance"); - echo '"; + echo "id."\">$strviewweek

        "; // this is the wrapper table echo "
        ". - "Hours:". - "$i
        ". + "Hours:". + "$i
        Last NameFirst NameID
        Last NameFirst NameID".$P."".$T."".$A."
        ".$P."".$T."".$A."
        ".$student->lastname."".$student->firstname."".$student->idnumber."".$radio1."".$radio2."".$radio3."
        ".$radio1."".$radio2."".$radio3."
        \n"; @@ -131,8 +128,8 @@ $abs=$tar=0; for($j=1;$j<=$form->hours;$j++) { // set the attendance defaults for each student - if (isset ($sroll[$student->id][$j]->status) && $sroll[$student->id][$j]->status == 1 ) {$status=$T;$tar++;} - elseif (isset ($sroll[$student->id][$j]->status) && $sroll[$student->id][$j]->status == 2 ) {$status=$A;$abs++;} + if ($sroll[$student->id][$j]->status == 1) {$status=$T;$tar++;} + elseif ($sroll[$student->id][$j]->status == 2) {$status=$A;$abs++;} else {$status=$P;} echo "\n"; } /// for loop @@ -143,8 +140,8 @@ } /// ending for the table echo "
        ".$student->lastname."".$status."
        \n"; - - + + /// print the miscellaneous settings information before the attendance roll echo "
        ". diff --git a/mod/attendance/viewall.php b/mod/attendance/viewall.php index e0ede0137ab..bba41088172 100644 --- a/mod/attendance/viewall.php +++ b/mod/attendance/viewall.php @@ -308,23 +308,23 @@ while (($multipage || $onepage) && (!$endonepage)) { if ($onepage) { // one page for all tables echo "

        id."\">"; echo "$strviewmulti
        "; - echo "id."&onetable=1\">"; + echo "id."&onetable=1\">"; echo "$strviewtable
        "; - echo "attendance->id."\">"; + echo "attendance->id."\">"; echo "$strviewweek

        "; } else if ($onetable) { // one table for all echo "

        id."\">"; echo "$strviewmulti
        "; - echo "id."&onepage=1\">"; + echo "id."&onepage=1\">"; echo "$strviewone
        "; - echo "attendance->id."\">"; + echo "attendance->id."\">"; echo "$strviewweek

        "; } else { // multiple pages - echo "

        id."&onepage=1\">"; + echo "

        id."&onepage=1\">"; echo "$strviewone
        "; - echo "id."&onetable=1\">"; + echo "id."&onetable=1\">"; echo "$strviewtable
        "; - echo "attendance->id."\">"; + echo "attendance->id."\">"; echo "$strviewweek

        "; } @@ -437,31 +437,31 @@ if ($onepage) {$page++; echo "

        \n"; } if (!$onepage) { attendance_print_pagenav(); } - echo "
        "; - echo "
        "; + echo "
        "; + echo "
        "; if (($numhours-4) > 255) { echo "
        "; + " Please try downloading the report week by week instead.')\">"; } else { $options["id"] = "$course->id"; $options["download"] = "xls"; $options["dlsub"] = "all"; print_single_button("viewall.php", $options, get_string("downloadexcelfull", "attendance")); } - echo "
        "; + echo ""; $options["id"] = "$course->id"; $options["download"] = "xls"; $options["dlsub"] = "totals"; print_single_button("viewall.php", $options, get_string("downloadexceltotals", "attendance")); - echo ""; + echo ""; $options["download"] = "txt"; $options["dlsub"] = "all"; print_single_button("viewall.php", $options, get_string("downloadtextfull", "attendance")); - echo ""; + echo ""; $options["dlsub"] = "totals"; print_single_button("viewall.php", $options, get_string("downloadtexttotals", "attendance")); - echo "
        "; + echo "
        "; } else { error("There are no attendance rolls in this course.");} // for no attendance rolls @@ -479,7 +479,7 @@ function attendance_print_header() { $strattendance = get_string("modulename", "attendance"); $strallattendance = get_string("allmodulename", "attendance"); print_header_simple("$strallattendance", "", - "id>$strattendances -> $strallattendance", + "id>$strattendances -> $strallattendance", "", "", true, " ", navmenu($course, $cm)); } @@ -499,8 +499,8 @@ function attendance_print_pagenav() { echo ""; if ($minatt!=0) { echo "". - "id ."&pagereport=1&page=1\"><< \n". - "id ."&pagereport=1&page=".($page-1)."\"><\n"; + "id ."&pagereport=1&page=1\"><< \n". + "id ."&pagereport=1&page=".($page-1)."\"><\n"; } else { echo "<< <\n"; } @@ -508,8 +508,8 @@ function attendance_print_pagenav() { "$pg $page $of $maxpages\n"; if ($maxatt!=$numatt) { echo "". - "id ."&pagereport=1&page=". ($page+1)."\">> ". - "id ."&pagereport=1&page=$maxpages\">>>"; + "id ."&pagereport=1&page=". ($page+1)."\">> ". + "id ."&pagereport=1&page=$maxpages\">>>"; } else { echo "> >>\n"; } diff --git a/mod/attendance/viewweek.php b/mod/attendance/viewweek.php index 79c97392989..798e8d82a39 100644 --- a/mod/attendance/viewweek.php +++ b/mod/attendance/viewweek.php @@ -33,7 +33,7 @@ require_login($course->id); - add_to_log($course->id, "attendance", "viewweek", "viewweek.php?scope=".$scope."&id=$course->id"); + add_to_log($course->id, "attendance", "viewweek", "viewweek.php?scope=".$scope."&id=$course->id"); if ($attendances) { @@ -309,26 +309,26 @@ while (($multipage || $onepage) && (!$endonepage)) { echo "

        id."\">"; echo "$strviewall
        "; if ($onepage) { // one page for all tables - echo ""; + echo ""; echo "$strviewmulti
        "; - echo ""; + echo ""; echo "$strviewtable
        "; } else if ($onetable) { // one table for all - echo ""; + echo ""; echo "$strviewmulti
        "; - echo ""; + echo ""; echo "$strviewone
        "; } else { // multiple pages - echo ""; + echo ""; echo "$strviewone
        "; - echo ""; + echo ""; echo "$strviewtable
        "; } if ($scope=="week") { // week view for scope - echo ""; + echo ""; echo "$strviewsection

        "; } else { // section view for scope - echo ""; + echo ""; echo "$strviewweek

        "; } @@ -444,31 +444,31 @@ if ($onepage) {$page++; echo "

        \n"; } if (!$onepage) { attendance_print_pagenav(); } - echo "
        "; - echo "
        "; + echo "
        "; + echo "
        "; if (($numhours-4) > 255) { echo "
        "; + " Please try downloading the report week by week instead.')\">"; } else { $options["id"] = "$id"; $options["download"] = "xls"; $options["dlsub"] = "all"; print_single_button("viewweek.php", $options, get_string("downloadexcelfull", "attendance")); } - echo "
        "; + echo ""; $options["id"] = "$id"; $options["download"] = "xls"; $options["dlsub"] = "totals"; print_single_button("viewweek.php", $options, get_string("downloadexceltotals", "attendance")); - echo ""; + echo ""; $options["download"] = "txt"; $options["dlsub"] = "all"; print_single_button("viewweek.php", $options, get_string("downloadtextfull", "attendance")); - echo ""; + echo ""; $options["dlsub"] = "totals"; print_single_button("viewweek.php", $options, get_string("downloadtexttotals", "attendance")); - echo "
        "; + echo "
        "; @@ -493,8 +493,8 @@ function attendance_print_pagenav() { echo ""; if ($minatt!=0) { echo "". - "< \n"; - "<<\n"; + "< \n"; + "<<\n"; } else { echo "<< <\n"; } @@ -502,8 +502,8 @@ function attendance_print_pagenav() { "$pg $page $of $maxpages\n"; if ($maxatt!=$numatt) { echo "". - "> ". - ">>"; + "> ". + ">>"; } else { echo "> >>\n"; } @@ -521,7 +521,7 @@ function attendance_print_header() { $strattendance = get_string("modulename", "attendance"); $strweekattendance = get_string("weekmodulename", "attendance"); print_header_simple("$strallattendance", "", - "id>$strattendances -> $strweekattendance", + "id>$strattendances -> $strweekattendance", "", "", true, " ", navmenu($course, $cm)); } diff --git a/mod/chat/backuplib.php b/mod/chat/backuplib.php index b6e34f88558..af7dc77a16f 100644 --- a/mod/chat/backuplib.php +++ b/mod/chat/backuplib.php @@ -1,4 +1,4 @@ -chat_serverhost; -$_SERVER['PHP_SELF'] = "http://$CFG->chat_serverhost:$CFG->chat_serverport/mod/chat/chatd.php"; +$_SERVER['PHP_SELF'] = "http://$CFG->chat_serverhost:$CFG->chat_serverport/mod/chat/chatd.php"; $safemode = ini_get('safe_mode'); -if($phpversion < '4.3') { - die("Error: The Moodle chat daemon requires at least PHP version 4.3 to run.\n Since your version is $phpversion, you have to upgrade.\n\n"); -} if(!empty($safemode)) { - die("Error: Cannot run with PHP safe_mode = On. Turn off safe_mode in php.ini.\n"); + die("Error: Cannot run with PHP safe_mode = On. Turn off safe_mode.\n"); } @set_time_limit (0); set_magic_quotes_runtime(0); + error_reporting(E_ALL); function chat_empty_connection() { @@ -70,145 +53,34 @@ class ChatConnection { } class ChatDaemon { - var $_resetsocket = false; - var $_readytogo = false; - var $_logfile = false; - var $_trace_to_console = true; - var $_trace_to_stdout = true; - var $_logfile_name = 'chatd.log'; - var $_last_idle_poll = 0; - - var $conn_ufo = array(); // Connections not identified yet + var $conn_ufo = array(); // Connections not identified yet var $conn_side = array(); // Sessions with sidekicks waiting for the main connection to be processed var $conn_half = array(); // Sessions that have valid connections but not all of them var $conn_sets = array(); // Sessions with complete connection sets sets var $sets_info = array(); // Keyed by sessionid exactly like conn_sets, one of these for each of those - var $chatrooms = array(); // Keyed by chatid, holding arrays of data - // IMPORTANT: $conn_sets, $sets_info and $chatrooms must remain synchronized! - // Pay extra attention when you write code that affects any of them! + var $message_queue = array(); // Holds messages that we haven't committed to the DB yet - function ChatDaemon() { - $this->_trace_level = E_ALL ^ E_USER_NOTICE; - $this->_pcntl_exists = function_exists('pcntl_fork'); - $this->_time_rest_socket = 20; - $this->_beepsoundsrc = $GLOBALS['CFG']->wwwroot.'/mod/chat/beep.wav'; - $this->_freq_update_records = 20; - $this->_freq_poll_idle_chat = $GLOBALS['CFG']->chat_old_ping; - $this->_stdout = fopen('php://stdout', 'w'); - if($this->_stdout) { - // Avoid double traces for everything - $this->_trace_to_console = false; - } - } - - function error_handler ($errno, $errmsg, $filename, $linenum, $vars) { - // Checks if an error needs to be suppressed due to @ - if(error_reporting() != 0) { - $this->trace($errmsg.' on line '.$linenum, $errno); - } - return true; - } - - function poll_idle_chats($now) { - $this->trace('Polling chats to detect disconnected users'); - if(!empty($this->chatrooms)) { - foreach($this->chatrooms as $chatid => $chatroom) { - if(!empty($chatroom['users'])) { - foreach($chatroom['users'] as $sessionid => $userid) { - // We will be polling each user as required - $this->trace('...shall we poll '.$sessionid.'?'); - if($this->sets_info[$sessionid]['chatuser']->lastmessageping < $this->_last_idle_poll) { - $this->trace('YES!'); - // This user hasn't been polled since his last message - if($this->write_data($this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL], '') === false) { - // User appears to have disconnected - $this->disconnect_session($sessionid); - } - } - } - } - } - } - $this->_last_idle_poll = $now; - } - - function query_start() { - return $this->_readytogo; - } - - function trace($message, $level = E_USER_NOTICE) { - $severity = ''; - - switch($level) { - case E_USER_WARNING: $severity = '*IMPORTANT* '; break; - case E_USER_ERROR: $severity = ' *CRITICAL* '; break; - case E_NOTICE: - case E_WARNING: $severity = ' *CRITICAL* [php] '; break; - } - - $date = date('[Y-m-d H:i:s] '); - $message = $date.$severity.$message."\n"; - - if ($this->_trace_level & $level) { - // It is accepted for output - - // Error-class traces go to STDERR too - if($level & E_USER_ERROR) { - fwrite(STDERR, $message); - } - - // Emit the message to wherever we should - if($this->_trace_to_stdout) { - fwrite($this->_stdout, $message); - fflush($this->_stdout); - } - if($this->_trace_to_console) { - echo $message; - flush(); - } - if($this->_logfile) { - fwrite($this->_logfile, $message); - fflush($this->_logfile); - } - } - } - - function write_data($connection, $text) { - $written = @socket_write($connection, $text, strlen($text)); - if($written === false) { - // $this->trace("socket_write() failed: reason: " . socket_strerror(socket_last_error($connection))); - return false; - } - return true; - - // Enclosing the above code inside this blocks makes sure that - // "a socket write operation will not block". I 'm not so sure - // if this is needed, as we have a nonblocking socket anyway. - // If trouble starts to creep up, we 'll restore this. -// $check_socket = array($connection); -// $socket_changed = socket_select($read = NULL, $check_socket, $except = NULL, 0, 0); -// if($socket_changed > 0) { -// -// // ABOVE CODE GOES HERE -// -// } -// return false; - } - - function user_lazy_update($sessionid) { + function update_lastmessageping($sessionid, $time = NULL) { // TODO: this can and should be written as a single UPDATE query if(empty($this->sets_info[$sessionid])) { - $this->trace('user_lazy_update() called for an invalid SID: '.$sessionid, E_USER_WARNING); + trace('update_lastmessageping() called for an invalid SID: '.$sessionid, E_USER_WARNING); return false; } $now = time(); + if(empty($time)) { + $time = $now; + } - // We 'll be cheating a little, and NOT updating the record data as - // often as we can, so that we save on DB queries (imagine MANY users) - if($now - $this->sets_info[$sessionid]['lastinfocommit'] > $this->_freq_update_records) { + // We 'll be cheating a little, and NOT updating lastmessageping + // as often as we have to, so we can save on DB queries (imagine MANY users) + $this->sets_info[$sessionid]['chatuser']->lastmessageping = $time; + + // This will set it just fine for bookkeeping purposes. + if($now - $this->sets_info[$sessionid]['lastinfocommit'] > $this->live_data_update_threshold) { // commit to permanent storage + // trace('Committing volatile lastmessageping for session '.$sessionid); $this->sets_info[$sessionid]['lastinfocommit'] = $now; update_record('chat_users', $this->sets_info[$sessionid]['chatuser']); } @@ -217,12 +89,12 @@ class ChatDaemon { function get_user_window($sessionid) { - global $CFG; + global $CFG, $THEME; static $str; $info = &$this->sets_info[$sessionid]; - chat_force_language($info['lang']); + $oldlang = chat_language_override($info['lang']); $timenow = time(); @@ -254,32 +126,30 @@ class ChatDaemon { echo 'windowobj.focus();'; echo 'return false;'; echo "}\n-->\n"; - echo ''; + echo ''; echo ''; - - // Get the users from that chatroom - $users = $this->chatrooms[$info['chatid']]['users']; - - foreach ($users as $usersessionid => $userid) { - // Fetch each user's sessionid and then the rest of his data from $this->sets_info - $userinfo = $this->sets_info[$usersessionid]; - - $lastping = $timenow - $userinfo['chatuser']->lastmessageping; - $popuppar = '\'/user/view.php?id='.$userinfo['user']->id.'&course='.$userinfo['courseid'].'\',\'user'.$userinfo['chatuser']->id.'\',\'\''; - echo '"; + if(empty($this->sets_info)) { + // No users + echo ''; + } + else { + foreach ($this->sets_info as $usersid => $userinfo) { + $lastping = $timenow - $userinfo['chatuser']->lastmessageping; + $popuppar = '\'/user/view.php?id='.$userinfo['user']->id.'&course='.$userinfo['courseid'].'\',\'user'.$userinfo['chatuser']->id.'\',\'\''; + echo '"; + } } - echo '
        '; - echo ''; - print_user_picture($userinfo['user']->id, 0, $userinfo['user']->picture, false, false, false); - echo ""; - echo "

        "; - echo fullname($userinfo['user'])."
        "; - echo "$str->idle: ".format_time($lastping, $str)." "; - echo ''.$str->beep."\n"; - echo "

        "; - echo "
         
        '; + echo ''; + print_user_picture($userinfo['user']->id, 0, $userinfo['user']->picture, false, false, false); + echo ""; + echo "

        "; + echo fullname($userinfo['user'])."
        "; + echo "$str->idle: ".format_time($lastping, $str)." "; + echo ''.$str->beep."\n"; + echo "

        "; + echo "
        '; // About 2K of HTML comments to force browsers to render the HTML @@ -287,6 +157,7 @@ class ChatDaemon { echo "\n\n"; + chat_language_restore($oldlang); return ob_get_clean(); } @@ -326,15 +197,13 @@ class ChatDaemon { $msg->timestamp = time(); // Commit to DB - insert_record('chat_messages', $msg, false); + insert_record('chat_messages', $msg); // OK, now push it out to all users $this->message_broadcast($msg, $this->sets_info[$sessionid]['user']); // Update that user's lastmessageping - $this->sets_info[$sessionid]['chatuser']->lastping = $msg->timestamp; - $this->sets_info[$sessionid]['chatuser']->lastmessageping = $msg->timestamp; - $this->user_lazy_update($sessionid); + $this->update_lastmessageping($sessionid, $msg->timestamp); // We did our work, but before slamming the door on the poor browser // show the courtesy of responding to the HTTP request. Otherwise, some @@ -351,7 +220,7 @@ class ChatDaemon { $header .= "\n"; // That's enough headers for one lousy dummy response - $this->write_data($handle, $header); + chat_socket_write($handle, $header); // All done break; @@ -369,32 +238,37 @@ class ChatDaemon { $header .= "Cache-Control: no-cache, must-revalidate\n"; $header .= "Expires: Wed, 4 Oct 1978 09:32:45 GMT\n"; $header .= "Content-Length: ".strlen($content)."\n"; - - // The refresh value is 2 seconds higher than the configuration variable because we are doing JS refreshes all the time. - // However, if the JS doesn't work for some reason, we still want to refresh once in a while. - $header .= "Refresh: ".(intval($CFG->chat_refresh_userlist) + 2)."; url=http://$CFG->chat_serverhost:$CFG->chat_serverport/?win=users&". - "chat_sid=".$sessionid."\n"; + $header .= "Refresh: $CFG->chat_refresh_userlist; URL=http://$CFG->chat_serverhost:$CFG->chat_serverport/?win=users&". + "chat_sid=".$sessionid."&groupid=".$this->sets_info[$sessionid]['groupid']."\n"; $header .= "\n"; // That's enough headers for one lousy dummy response - $this->trace('writing users http response to handle '.$handle); - $this->write_data($handle, $header . $content); - - // Update that user's lastping - $this->sets_info[$sessionid]['chatuser']->lastping = time(); - $this->user_lazy_update($sessionid); + trace('writing users http response to handle '.$handle); + chat_socket_write($handle, $header . $content); +/* + $header = "HTTP/1.1 200 OK\n"; + $header .= "Connection: close\n"; + $header .= "Date: ".date('r')."\n"; + $header .= "Server: Moodle\n"; + $header .= "Content-Type: text/html\n"; + $header .= "Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT\n"; + $header .= "Cache-Control: no-cache, must-revalidate\n"; + $header .= "Expires: Wed, 4 Oct 1978 09:32:45 GMT\n"; + $header .= "\n"; + trace('writing users http response to handle '.$handle); + chat_socket_write($handle, $header); +*/ break; - case CHAT_SIDEKICK_MESSAGE: // Incoming message // Browser stupidity protection from duplicate messages: $messageindex = intval($customdata['index']); - + if($this->sets_info[$sessionid]['lastmessageindex'] >= $messageindex) { // We have already broadcasted that! - // $this->trace('discarding message with stale index'); + trace('discarding message with stale index'); break; } else { @@ -415,23 +289,14 @@ class ChatDaemon { break; } - // A slight hack to prevent malformed SQL inserts - $origmsg = $msg->message; - $msg->message = addslashes($msg->message); - // Commit to DB - insert_record('chat_messages', $msg, false); - - // Undo the hack - $msg->message = $origmsg; + insert_record('chat_messages', $msg); // OK, now push it out to all users $this->message_broadcast($msg, $this->sets_info[$sessionid]['user']); // Update that user's lastmessageping - $this->sets_info[$sessionid]['chatuser']->lastping = $msg->timestamp; - $this->sets_info[$sessionid]['chatuser']->lastmessageping = $msg->timestamp; - $this->user_lazy_update($sessionid); + $this->update_lastmessageping($sessionid, $msg->timestamp); // We did our work, but before slamming the door on the poor browser // show the courtesy of responding to the HTTP request. Otherwise, some @@ -448,7 +313,7 @@ class ChatDaemon { $header .= "\n"; // That's enough headers for one lousy dummy response - $this->write_data($handle, $header); + chat_socket_write($handle, $header); // All done break; @@ -458,9 +323,9 @@ class ChatDaemon { socket_close($handle); } - function promote_final($sessionid, $customdata) { + function promote_final($sessionid, $groupid, $customdata) { if(isset($this->conn_sets[$sessionid])) { - $this->trace('Set cannot be finalized: Session '.$sessionid.' is already active'); + trace('Set cannot be finalized: Session '.$sessionid.' is already active'); return false; } @@ -480,7 +345,7 @@ class ChatDaemon { return false; } $course = get_record('course', 'id', $chat->course); { - if($course === false) { + if($course === false) { $this->dismiss_half($sessionid); return false; } @@ -488,6 +353,18 @@ class ChatDaemon { global $CHAT_HTMLHEAD_JS, $CFG; + // A really sad thing, to have to do this by hand.... :-( + $lang = NULL; + if(empty($lang) && !empty($course->lang)) { + $lang = $course->lang; + } + if(empty($lang) && !empty($user->lang)) { + $lang = $user->lang; + } + if(empty($lang)) { + $lang = $CFG->lang; + } + $this->conn_sets[$sessionid] = $this->conn_half[$sessionid]; // This whole thing needs to be purged of redundant info, and the @@ -497,46 +374,37 @@ class ChatDaemon { 'lastmessageindex' => 0, 'courseid' => $course->id, 'chatuser' => $chatuser, - 'chatid' => $chat->id, + 'chatid' => $chatuser->chatid, 'user' => $user, - 'userid' => $user->id, - 'groupid' => $chatuser->groupid, - 'lang' => $chatuser->lang, + 'userid' => $chatuser->userid, + 'groupid' => $groupid, + 'lang' => $lang, 'quirks' => $customdata['quirks'] ); - // If we know nothing about this chatroom, initialize it and add the user - if(!isset($this->chatrooms[$chat->id]['users'])) { - $this->chatrooms[$chat->id]['users'] = array($sessionid => $user->id); - } - else { - // Otherwise just add the user - $this->chatrooms[$chat->id]['users'][$sessionid] = $user->id; - } - - // $this->trace('QUIRKS value for this connection is '.$customdata['quirks']); + trace('QUIRKS value for this connection is '.$customdata['quirks']); $this->dismiss_half($sessionid, false); - $this->write_data($this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL], $CHAT_HTMLHEAD_JS); - $this->trace('Connection accepted: '.$this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL].', SID: '.$sessionid.' UID: '.$chatuser->userid.' GID: '.$chatuser->groupid, E_USER_WARNING); + chat_socket_write($this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL], $CHAT_HTMLHEAD_JS); + trace('Connection accepted: '.$this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL].', SID: '.$sessionid.' UID: '.$chatuser->userid.' GID: '.intval($groupid)); // Finally, broadcast the "entered the chat" message $msg = &New stdClass; $msg->chatid = $chatuser->chatid; $msg->userid = $chatuser->userid; - $msg->groupid = $chatuser->groupid; + $msg->groupid = 0; $msg->system = 1; $msg->message = 'enter'; $msg->timestamp = time(); - insert_record('chat_messages', $msg, false); + insert_record('chat_messages', $msg); $this->message_broadcast($msg, $this->sets_info[$sessionid]['user']); return true; } - function promote_ufo($handle, $type, $sessionid, $customdata) { + function promote_ufo($handle, $type, $sessionid, $groupid, $customdata) { if(empty($this->conn_ufo)) { return false; } @@ -548,13 +416,13 @@ class ChatDaemon { // Is the main connection ready? if(isset($this->conn_sets[$sessionid])) { // Yes, so dispatch this sidekick now and be done with it - //$this->trace('Dispatching sidekick immediately'); + //trace('Dispatching sidekick immediately'); $this->dispatch_sidekick($handle, $type, $sessionid, $customdata); $this->dismiss_ufo($handle, false); } else { // No, so put it in the waiting list - $this->trace('sidekick waiting'); + trace('sidekick waiting'); $this->conn_side[$sessionid][] = array('type' => $type, 'handle' => $handle, 'customdata' => $customdata); } return true; @@ -564,13 +432,13 @@ class ChatDaemon { if($type & CHAT_CONNECTION) { // This forces a new connection right now... - $this->trace('Incoming connection from '.$ufo->ip.':'.$ufo->port); + trace('Incoming connection from '.$ufo->ip.':'.$ufo->port); // Do we have such a connection active? if(isset($this->conn_sets[$sessionid])) { // Yes, so regrettably we cannot promote you - $this->trace('Connection rejected: session '.$sessionid.' is already final'); - $this->dismiss_ufo($handle, true, 'Your SID was rejected.'); + trace('Connection rejected: session '.$sessionid.' is already final'); + $this->dismiss_ufo($handle); return false; } @@ -578,7 +446,7 @@ class ChatDaemon { $this->conn_half[$sessionid][$type] = $handle; // Do the bookkeeping - $this->promote_final($sessionid, $customdata); + $this->promote_final($sessionid, $groupid, $customdata); // It's not an UFO anymore $this->dismiss_ufo($handle, false); @@ -615,17 +483,13 @@ class ChatDaemon { @socket_close($handle); } } - $chatroom = $this->sets_info[$sessionid]['chatid']; - $userid = $this->sets_info[$sessionid]['userid']; unset($this->conn_sets[$sessionid]); unset($this->sets_info[$sessionid]); - unset($this->chatrooms[$chatroom]['users'][$sessionid]); - $this->trace('Removed all traces of user with session '.$sessionid, E_USER_NOTICE); return true; } - function dismiss_ufo($handle, $disconnect = true, $message = NULL) { + function dismiss_ufo($handle, $disconnect = true) { if(empty($this->conn_ufo)) { return false; } @@ -633,9 +497,7 @@ class ChatDaemon { if($ufo->handle == $handle) { unset($this->conn_ufo[$id]); if($disconnect) { - if(!empty($message)) { - $this->write_data($handle, $message."\n\n"); - } + chat_socket_write($handle, "You don't seem to be a valid client.\n"); socket_shutdown($handle); socket_close($handle); } @@ -646,13 +508,7 @@ class ChatDaemon { } function conn_accept() { - $read_socket = array($this->listen_socket); - $changed = socket_select($read_socket, $write = NULL, $except = NULL, 0, 0); - - if(!$changed) { - return false; - } - $handle = socket_accept($this->listen_socket); + $handle = @socket_accept($this->listen_socket); if(!$handle) { return false; } @@ -661,7 +517,7 @@ class ChatDaemon { $id = $this->new_ufo_id(); $this->conn_ufo[$id] = $newconn; - //$this->trace('UFO #'.$id.': connection from '.$newconn->ip.' on port '.$newconn->port.', '.$newconn->handle); + //trace('UFO #'.$id.': connection from '.$newconn->ip.' on port '.$newconn->port.', '.$newconn->handle); } function conn_activity_ufo (&$handles) { @@ -688,11 +544,6 @@ class ChatDaemon { return true; } - $now = time(); - - // First of all, mark this chatroom as having had activity now - $this->chatrooms[$message->chatid]['lastactivity'] = $now; - foreach($this->sets_info as $sessionid => $info) { // We need to get handles from users that are in the same chatroom, same group if($info['chatid'] == $message->chatid && @@ -700,12 +551,11 @@ class ChatDaemon { { // Simply give them the message - chat_force_language($info['lang']); - $output = chat_format_message_manually($message, $info['courseid'], $sender, $info['user']); - $this->trace('Delivering message "'.$output->text.'" to '.$this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL]); + $output = chat_format_message_manually($message, 0, $sender, $info['user'], $info['lang']); + trace('Delivering message "'.$output->text.'" to '.$this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL]); if($output->beep) { - $this->write_data($this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL], ''); + chat_socket_write($this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL], ''); } if($info['quirks'] & QUIRK_CHUNK_UPDATE) { @@ -714,187 +564,139 @@ class ChatDaemon { $output->html .= $GLOBALS['CHAT_DUMMY_DATA']; } - if(!$this->write_data($this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL], $output->html)) { - $this->disconnect_session($sessionid); + if(!chat_socket_write($this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL], $output->html)) { + + // Send failed! We must now disconnect/forget about the user FIRST + // and THEN broadcast a message to all others... otherwise, infinite recursion. + + delete_records('chat_users', 'sid', $sessionid); + $msg = &New stdClass; + $msg->chatid = $info['chatid']; + $msg->userid = $info['userid']; + $msg->groupid = 0; + $msg->system = 1; + $msg->message = 'exit'; + $msg->timestamp = time(); + + trace('Client socket write failed, destroying uid '.$info['userid'].' with SID '.$sessionid); + insert_record('chat_messages', $msg); + + // *************************** IMPORTANT + // + // Kill him BEFORE broadcasting, otherwise we 'll get infinite recursion! + // + // ********************************************************************** + $latesender = $this->sets_info[$sessionid]['user']; + $this->dismiss_set($sessionid); + $this->message_broadcast($msg, $latesender); } - //$this->trace('Sent to UID '.$this->sets_info[$sessionid]['userid'].': '.$message->text_); + //trace('Sent to UID '.$this->sets_info[$sessionid]['userid'].': '.$message->text_); } } } - function disconnect_session($sessionid) { - $info = $this->sets_info[$sessionid]; - - delete_records('chat_users', 'sid', $sessionid); - $msg = &New stdClass; - $msg->chatid = $info['chatid']; - $msg->userid = $info['userid']; - $msg->groupid = $info['groupid']; - $msg->system = 1; - $msg->message = 'exit'; - $msg->timestamp = time(); - - $this->trace('User has disconnected, destroying uid '.$info['userid'].' with SID '.$sessionid, E_USER_WARNING); - insert_record('chat_messages', $msg, false); - - // *************************** IMPORTANT - // - // Kill him BEFORE broadcasting, otherwise we 'll get infinite recursion! - // - // ********************************************************************** - $latesender = $info['user']; - $this->dismiss_set($sessionid); - $this->message_broadcast($msg, $latesender); - } - - function fatal($message) { - $message .= "\n"; - if($this->_logfile) { - $this->trace($message, E_USER_ERROR); - } - echo "FATAL ERROR:: $message\n"; - die(); - } - - function init_sockets() { - global $CFG; - - $this->trace('Setting up sockets'); - - if(false === ($this->listen_socket = socket_create(AF_INET, SOCK_STREAM, 0))) { - // Failed to create socket - $lasterr = socket_last_error(); - $this->fatal('socket_create() failed: '. socket_strerror($lasterr).' ['.$lasterr.']'); - } - - //socket_close($DAEMON->listen_socket); - //die(); - - if(!socket_bind($this->listen_socket, $CFG->chat_serverip, $CFG->chat_serverport)) { - // Failed to bind socket - $lasterr = socket_last_error(); - $this->fatal('socket_bind() failed: '. socket_strerror($lasterr).' ['.$lasterr.']'); - } - - if(!socket_listen($this->listen_socket, $CFG->chat_servermax)) { - // Failed to get socket to listen - $lasterr = socket_last_error(); - $this->fatal('socket_listen() failed: '. socket_strerror($lasterr).' ['.$lasterr.']'); - } - - // Socket has been initialized and is ready - $this->trace('Socket opened on port '.$CFG->chat_serverport); - - // [pj]: I really must have a good read on sockets. What exactly does this do? - // http://www.unixguide.net/network/socketfaq/4.5.shtml is still not enlightening enough for me. - socket_setopt($this->listen_socket, SOL_SOCKET, SO_REUSEADDR, 1); - socket_set_nonblock($this->listen_socket); - } - - function cli_switch($switch, $param = NULL) { - switch($switch) { //LOL - case 'reset': - // Reset sockets - $this->_resetsocket = true; - return false; - case 'start': - // Start the daemon - $this->_readytogo = true; - return false; - break; - case 'v': - // Verbose mode - $this->_trace_level = E_ALL; - return false; - break; - case 'l': - // Use logfile - if(!empty($param)) { - $this->_logfile_name = $param; - } - $this->_logfile = @fopen($this->_logfile_name, 'a+'); - if($this->_logfile == false) { - $this->fatal('Failed to open '.$this->_logfile_name.' for writing'); - } - return false; - default: - // Unrecognized - $this->fatal('Unrecognized command line switch: '.$switch); - break; - } - return false; + function message_commit() { } } +// Connection telltale +define('CHAT_CONNECTION', 0x10); +// Connections: Incrementing sequence, 0x10 to 0x1f +define('CHAT_CONNECTION_CHANNEL', 0x11); + +// Sidekick telltale +define('CHAT_SIDEKICK', 0x20); +// Sidekicks: Incrementing sequence, 0x21 to 0x2f +define('CHAT_SIDEKICK_USERS', 0x21); +define('CHAT_SIDEKICK_MESSAGE', 0x22); +define('CHAT_SIDEKICK_BEEP', 0x23); + + $DAEMON = New ChatDaemon; -set_error_handler(array($DAEMON, 'error_handler')); +$DAEMON->socket_active = false; +$DAEMON->trace_level = E_ALL; +$DAEMON->socketserver_refresh = 20; +$DAEMON->can_daemonize = function_exists('pcntl_fork'); +$DAEMON->beepsoundsrc = $CFG->wwwroot.'/mod/chat/beep.wav'; +$DAEMON->live_data_update_threshold = 15; /// Check the parameters ////////////////////////////////////////////////////// -unset($argv[0]); -$commandline = implode(' ', $argv); -if(strpos($commandline, '-') === false) { - if(!empty($commandline)) { - // We cannot have received any meaningful parameters - $DAEMON->fatal('Garbage in command line'); + $param = empty($argv[1]) ? NULL : trim(strtolower($argv[1])); + + if (empty($param) || eregi('^(\-\-help|\-h)$', $param)) { + echo 'Starts the Moodle chat socket server on port '.$CFG->chat_serverport; + echo "\n\n"; + echo "Usage: chatd.php [-h|--start]\n\n"; + echo "Example:\n"; + echo " chatd.php --start\n\n"; + echo "Options:\n"; + echo " --start Starts the daemon\n"; + echo " -h, --help Show this help\n"; + echo "\n"; + die(); } -} -else { - // Parse command line - $switches = preg_split('/(-{1,2}[a-zA-Z]+) */', $commandline, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); - // Taking advantage of the fact that $switches is indexed with incrementing numeric keys - // We will be using that to pass additional information to those switches who need it - $numswitches = count($switches); - // Fancy way to give a "hyphen" boolean flag to each "switch" - $switches = array_map(create_function('$x', 'return array("str" => $x, "hyphen" => (substr($x, 0, 1) == "-"));'), $switches); +$logfile = fopen('chatd.log', 'a+'); - for($i = 0; $i < $numswitches; ++$i) { +/// Try to set up all the sockets //////////////////////////////////////////////// - $switch = $switches[$i]['str']; - $params = ($i == $numswitches - 1 ? NULL : - ($switches[$i + 1]['hyphen'] ? NULL : trim($switches[$i + 1]['str'])) - ); +trace('Setting up sockets'); - if(substr($switch, 0, 2) == '--') { - // Double-hyphen switch - $DAEMON->cli_switch(strtolower(substr($switch, 2)), $params); - } - else if(substr($switch, 0, 1) == '-') { - // Single-hyphen switch(es), may be more than one run together - $switch = substr($switch, 1); // Get rid of the - - $len = strlen($switch); - for($j = 0; $j < $len; ++$j) { - $DAEMON->cli_switch(strtolower(substr($switch, $j, 1)), $params); - } - } +if (!function_exists('socket_set_option')) { + // PHP < 4.3 + if (!function_exists('socket_setopt')) { + // No socket_setopt! + echo "Error: Neither socket_setopt() nor socket_set_option() exists.\n"; + echo "Possibly PHP has not been compiled with --enable-sockets.\n\n"; + die(); + } + function socket_set_option($socket, $level, $name, $val) { + return socket_setopt($socket, $level, $name, $val); } } -if(!$DAEMON->query_start()) { - // For some reason we didn't start, so print out some info - echo 'Starts the Moodle chat socket server on port '.$CFG->chat_serverport; - echo "\n\n"; - echo "Usage: chatd.php [parameters]\n\n"; - echo "Parameters:\n"; - echo " --start Starts the daemon\n"; - echo " -v Verbose mode (prints trivial information messages)\n"; - echo " -l [logfile] Log all messages to logfile (if not specified, chatd.log)\n"; - echo "Example:\n"; - echo " chatd.php --start -l\n\n"; +// Creating socket + +if(false === ($DAEMON->listen_socket = socket_create(AF_INET, SOCK_STREAM, 0))) { + // Failed to create socket + $DAEMON->last_error = socket_last_error(); + echo "Error: socket_create() failed: ". socket_strerror(socket_last_error($DAEMON->last_error)).' ['.$DAEMON->last_error."]\n"; die(); } -if (!function_exists('socket_setopt')) { - echo "Error: Function socket_setopt() does not exist.\n"; - echo "Possibly PHP has not been compiled with --enable-sockets.\n\n"; +//socket_close($DAEMON->listen_socket); +//die(); + +if(!socket_bind($DAEMON->listen_socket, $CFG->chat_serverip, $CFG->chat_serverport)) { + // Failed to bind socket + $DAEMON->last_error = socket_last_error(); + echo "Error: socket_bind() failed: ". socket_strerror(socket_last_error($DAEMON->last_error)).' ['.$DAEMON->last_error."]\n"; + + if($DAEMON->last_error != 98) { + die(); + } + +} +if(!socket_listen($DAEMON->listen_socket, $CFG->chat_servermax)) { + // Failed to get socket to listen + $DAEMON->last_error = socket_last_error(); + echo "Error: socket_listen() failed: ". socket_strerror(socket_last_error($DAEMON->last_error)).' ['.$DAEMON->last_error."]\n"; die(); } -$DAEMON->init_sockets(); +// Socket has been initialized and is ready +trace('Socket opened on port '.$CFG->chat_serverport); +$DAEMON->socket_active = true; +// [pj]: I really must have a good read on sockets. What exactly does this do? +// http://www.unixguide.net/network/socketfaq/4.5.shtml is still not enlightening enough for me. +socket_set_option($DAEMON->listen_socket, SOL_SOCKET, SO_REUSEADDR, 1); +socket_set_nonblock($DAEMON->listen_socket); + +/// Sockets all set up! Now we loop and process incoming data. /* declare(ticks=1); @@ -915,17 +717,18 @@ if (!posix_setsid()) { // setup signal handlers pcntl_signal(SIGTERM, "sig_handler"); pcntl_signal(SIGHUP, "sig_handler"); +*/ -if($DAEMON->_pcntl_exists && false) { - $DAEMON->trace('Unholy spirit possession: daemonizing'); +if($DAEMON->can_daemonize) { + trace('Unholy spirit possession: daemonizing'); $DAEMON->pid = pcntl_fork(); if($pid == -1) { - $DAEMON->trace('Process fork failed, terminating'); + trace('Process fork failed, terminating'); die(); } else if($pid) { // We are the parent - $DAEMON->trace('Successfully forked the daemon with PID '.$pid); + trace('Successfully forked the daemon with PID '.$pid); die(); } else { @@ -936,19 +739,15 @@ if($DAEMON->_pcntl_exists && false) { // Detach from controlling terminal if(!posix_setsid()) { - $DAEMON->trace('Could not detach daemon process from terminal!'); + trace('Could not detach daemon process from terminal!'); } } else { // Cannot go demonic - $DAEMON->trace('Unholy spirit possession failed: PHP is not compiled with --enable-pcntl'); + trace('Unholy spirit possession failed: PHP is not compiled with --enable-pcntl'); } -*/ -$DAEMON->trace('Started Moodle chatd on port '.$CFG->chat_serverport.', listening socket '.$DAEMON->listen_socket, E_USER_WARNING); - -/// Clear the decks of old stuff -delete_records('chat_users', 'version', 'sockets'); +trace('Started Moodle chatd on port '.$CFG->chat_serverport.', listening socket '.$DAEMON->listen_socket, E_USER_WARNING); while(true) { $active = array(); @@ -962,26 +761,21 @@ while(true) { if($changed > 0) { // Let's see what it has to say - $data = socket_read($handle, 2048); // should be more than 512 to prevent empty pages and repeated messages!! + $data = socket_read($handle, 512); if(empty($data)) { continue; } - if (strlen($data) == 2048) { // socket_read has more data, ignore all data - $DAEMON->trace('UFO with '.$handle.': Data too long; connection closed', E_USER_WARNING); - $DAEMON->dismiss_ufo($handle, true, 'Data too long; connection closed'); - continue; - } - - if(!ereg('win=(chat|users|message|beep).*&chat_sid=([a-zA-Z0-9]*) HTTP', $data, $info)) { + if(!ereg('win=(chat|users|message|beep).*&chat_sid=([a-zA-Z0-9]*)&groupid=([0-9]*) HTTP', $data, $info)) { // Malformed data - $DAEMON->trace('UFO with '.$handle.': Request with malformed data; connection closed', E_USER_WARNING); - $DAEMON->dismiss_ufo($handle, true, 'Request with malformed data; connection closed'); + trace('UFO with '.$handle.': Request with malformed data; connection closed', E_USER_WARNING); + $DAEMON->dismiss_ufo($handle); continue; } $type = $info[1]; $sessionid = $info[2]; + $groupid = $info[3]; $customdata = array(); @@ -990,7 +784,7 @@ while(true) { $type = CHAT_CONNECTION_CHANNEL; $customdata['quirks'] = 0; if(strpos($data, 'Safari')) { - $DAEMON->trace('Safari identified...', E_USER_WARNING); + trace('Safari identified...', E_USER_WARNING); $customdata['quirks'] += QUIRK_CHUNK_UPDATE; } break; @@ -1000,8 +794,8 @@ while(true) { case 'beep': $type = CHAT_SIDEKICK_BEEP; if(!ereg('beep=([^&]*)[& ]', $data, $info)) { - $DAEMON->trace('Beep sidekick did not contain a valid userid', E_USER_WARNING); - $DAEMON->dismiss_ufo($handle, true, 'Request with malformed data; connection closed'); + trace('Beep sidekick did not contain a valid userid', E_USER_WARNING); + $DAEMON->dismiss_ufo($handle); continue; } else { @@ -1011,8 +805,8 @@ while(true) { case 'message': $type = CHAT_SIDEKICK_MESSAGE; if(!ereg('chat_message=([^&]*)[& ]chat_msgidnr=([^&]*)[& ]', $data, $info)) { - $DAEMON->trace('Message sidekick did not contain a valid message', E_USER_WARNING); - $DAEMON->dismiss_ufo($handle, true, 'Request with malformed data; connection closed'); + trace('Message sidekick did not contain a valid message', E_USER_WARNING); + $DAEMON->dismiss_ufo($handle); continue; } else { @@ -1020,33 +814,63 @@ while(true) { } break; default: - $DAEMON->trace('UFO with '.$handle.': Request with unknown type; connection closed', E_USER_WARNING); - $DAEMON->dismiss_ufo($handle, true, 'Request with unknown type; connection closed'); + trace('UFO with '.$handle.': Request with unknown type; connection closed', E_USER_WARNING); + $DAEMON->dismiss_ufo($handle); continue; break; } // OK, now we know it's something good... promote it and pass it all the data it needs - $DAEMON->promote_ufo($handle, $type, $sessionid, $customdata); + $DAEMON->promote_ufo($handle, $type, $sessionid, $groupid, $customdata); continue; } } } - $now = time(); - - // Clean up chatrooms with no activity as required - if($now - $DAEMON->_last_idle_poll >= $DAEMON->_freq_poll_idle_chat) { - $DAEMON->poll_idle_chats($now); - } - // Finally, accept new connections $DAEMON->conn_accept(); - usleep($DAEMON->_time_rest_socket); + usleep($DAEMON->socketserver_refresh); } @socket_shutdown($DAEMON->listen_socket, 0); die("\n\n-- terminated --\n"); + +function trace($message, $level = E_USER_NOTICE) { + global $DAEMON, $logfile; + + $date = date('[Y-m-d H:i:s] '); + $severity = ''; + + switch($level) { + case E_USER_WARNING: $severity = '*IMPORTANT* '; break; + case E_USER_ERROR: $severity = ' *CRITICAL* '; break; + } + + $message = $date.$severity.$message."\n"; + + if ($DAEMON->trace_level & $level) { + if($level & E_USER_ERROR) { + fwrite(STDERR, $message); + } + fwrite(STDOUT, $message); + fwrite($logfile, $message); + fflush($logfile); + } + flush(); +} + +function chat_socket_write($connection, $text) { + $check_socket = array($connection); + $socket_changed = socket_select($read = NULL, $check_socket, $except = NULL, 0, 0); + if($socket_changed > 0) { + $written = socket_write($connection, $text, strlen($text)); + //trace('socket_write wrote '.$written.' of '.strlen($text).' bytes'); + return true; + } + return false; +} + + ?> diff --git a/mod/chat/config.html b/mod/chat/config.html index 1fde636e85e..898db8297f8 100644 --- a/mod/chat/config.html +++ b/mod/chat/config.html @@ -1,18 +1,8 @@
        - - - - - - - - - - +
        -
        -
        ()
        -
        chat_method:
        + + - - + + + + + + + + + + - - + + - - - + - - + + - - - - - - - - - - - - + + - - + + - - + + - +

        chat_method:

        chat_refresh_userlist:

        chat_refresh_room:

        - + + + +

        chat_refresh_userlist:

        +
        chat_old_ping:

        chat_old_ping:

        - +

        -
        -
        ()
        -

        chat_refresh_room:

        chat_serverhost:

        - - - -

        -
        -
        ()
        -
        chat_serverhost: - +
        chat_serverip:

        chat_serverip:

        - +
        chat_serverport:

        chat_serverport:

        - +
        chat_servermax:

        chat_servermax:

        - + @@ -106,8 +86,8 @@
        - " /> + ">
        diff --git a/mod/chat/db/mysql.php b/mod/chat/db/mysql.php index d38f0cf5feb..1bb74215a32 100644 --- a/mod/chat/db/mysql.php +++ b/mod/chat/db/mysql.php @@ -1,4 +1,4 @@ -prefix}chat DROP INDEX `course`;",false); - execute_sql("ALTER TABLE {$CFG->prefix}chat_messages DROP INDEX `chatid`;",false); - execute_sql("ALTER TABLE {$CFG->prefix}chat_messages DROP INDEX `userid`;",false); - execute_sql("ALTER TABLE {$CFG->prefix}chat_messages DROP INDEX `groupid`;",false); - execute_sql("ALTER TABLE {$CFG->prefix}chat_users DROP INDEX `chatid`;",false); - execute_sql("ALTER TABLE {$CFG->prefix}chat_users DROP INDEX `groupid`;",false); - - modify_database('','ALTER TABLE prefix_chat ADD INDEX `course` (`course`);'); - modify_database('','ALTER TABLE prefix_chat_messages ADD INDEX `chatid` (`chatid`);'); - modify_database('','ALTER TABLE prefix_chat_messages ADD INDEX `userid` (`userid`);'); - modify_database('','ALTER TABLE prefix_chat_messages ADD INDEX `groupid` (`groupid`);'); - modify_database('','ALTER TABLE prefix_chat_users ADD INDEX `chatid` (`chatid`);'); - modify_database('','ALTER TABLE prefix_chat_users ADD INDEX `groupid` (`groupid`);'); - } - - if ($oldversion < 2005020300) { - table_column('chat_users', '', 'course', 'integer', '10', 'unsigned', '0', 'not null', ''); - table_column('chat_users', '', 'lang' , 'varchar', '10', '' , '' , 'not null', ''); - } - return true; } diff --git a/mod/chat/db/mysql.sql b/mod/chat/db/mysql.sql index 2972a0debca..6efe107078d 100644 --- a/mod/chat/db/mysql.sql +++ b/mod/chat/db/mysql.sql @@ -12,8 +12,7 @@ CREATE TABLE `prefix_chat` ( `chattime` int(10) unsigned NOT NULL default '0', `schedule` int(4) NOT NULL default '0', `timemodified` int(10) unsigned NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `course` (`course`) + PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT='Each of these is a chat room'; # -------------------------------------------------------- @@ -30,10 +29,7 @@ CREATE TABLE `prefix_chat_messages` ( `message` text NOT NULL, `timestamp` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`), - KEY `timemodifiedchat` (`timestamp`,`chatid`), - KEY `chatid` (`chatid`), - KEY `userid` (`userid`), - KEY `groupid` (`groupid`) + KEY `timemodifiedchat` (`timestamp`,`chatid`) ) TYPE=MyISAM COMMENT='Stores all the actual chat messages'; # -------------------------------------------------------- @@ -52,13 +48,9 @@ CREATE TABLE `prefix_chat_users` ( `lastping` int(10) unsigned NOT NULL default '0', `lastmessageping` int(10) unsigned NOT NULL default '0', `sid` varchar(32) NOT NULL default '', - `course` int(10) NOT NULL default '0', - `lang` varchar(10) NOT NULL default '', PRIMARY KEY (`id`), KEY `userid` (`userid`), - KEY `lastping` (`lastping`), - KEY `chatid` (`chatid`), - KEY `groupid` (`groupid`) + KEY `lastping` (`lastping`) ) TYPE=MyISAM COMMENT='Keeps track of which users are in which chat rooms'; diff --git a/mod/chat/db/oci8po.php b/mod/chat/db/oci8po.php index 1adaac760c4..aca0fe44c09 100755 --- a/mod/chat/db/oci8po.php +++ b/mod/chat/db/oci8po.php @@ -1,4 +1,4 @@ -prefix}chat_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}chat_messages_chatid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}chat_messages_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}chat_messages_groupid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}chat_messages_timemodifiedchatid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}chat_users_chatid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}chat_users_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}chat_users_groupid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}chat_users_lastping_idx;",false); - - modify_database('','CREATE INDEX prefix_chat_course_idx ON prefix_chat(course);'); - modify_database('','CREATE INDEX prefix_chat_messages_chatid_idx ON prefix_chat_messages (chatid);'); - modify_database('','CREATE INDEX prefix_chat_messages_userid_idx ON prefix_chat_messages (userid);'); - modify_database('','CREATE INDEX prefix_chat_messages_groupid_idx ON prefix_chat_messages (groupid);'); - modify_database('','CREATE INDEX prefix_chat_messages_timemodifiedchatid_idx ON prefix_chat_messages(timestamp,chatid);'); - modify_database('','CREATE INDEX prefix_chat_users_chatid_idx ON prefix_chat_users (chatid);'); - modify_database('','CREATE INDEX prefix_chat_users_userid_idx ON prefix_chat_users (userid);'); - modify_database('','CREATE INDEX prefix_chat_users_groupid_idx ON prefix_chat_users (groupid);'); - modify_database('','CREATE INDEX prefix_chat_users_lastping_idx ON prefix_chat_users (lastping);'); - } - - if ($oldversion < 2005020300) { - table_column('chat_users', '', 'course', 'integer', '10', 'unsigned', '0', 'not null', ''); - table_column('chat_users', '', 'lang' , 'varchar', '10', '' , '' , 'not null', ''); - } - return true; } ?> + diff --git a/mod/chat/db/postgres7.sql b/mod/chat/db/postgres7.sql index 5d70f9af1a3..b77d1187f1d 100644 --- a/mod/chat/db/postgres7.sql +++ b/mod/chat/db/postgres7.sql @@ -14,9 +14,6 @@ CREATE TABLE prefix_chat ( timemodified INTEGER NOT NULL default '0', PRIMARY KEY (id) ); - -CREATE INDEX prefix_chat_course_idx ON prefix_chat(course); - # -------------------------------------------------------- # @@ -33,12 +30,6 @@ CREATE TABLE prefix_chat_messages ( timestamp integer NOT NULL default '0', PRIMARY KEY (id) ); - -CREATE INDEX prefix_chat_messages_chatid_idx ON prefix_chat_messages (chatid); -CREATE INDEX prefix_chat_messages_userid_idx ON prefix_chat_messages (userid); -CREATE INDEX prefix_chat_messages_groupid_idx ON prefix_chat_messages (groupid); -CREATE INDEX prefix_chat_messages_timemodifiedchatid_idx ON prefix_chat_messages(timestamp,chatid); - # -------------------------------------------------------- # @@ -56,15 +47,9 @@ CREATE TABLE prefix_chat_users ( lastping integer NOT NULL default '0', lastmessageping integer NOT NULL default '0', sid varchar(32) NOT NULL default '', - course integer NOT NULL default '0', - lang varchar(10) NOT NULL default '', PRIMARY KEY (id) ); -CREATE INDEX prefix_chat_users_chatid_idx ON prefix_chat_users (chatid); -CREATE INDEX prefix_chat_users_userid_idx ON prefix_chat_users (userid); -CREATE INDEX prefix_chat_users_groupid_idx ON prefix_chat_users (groupid); -CREATE INDEX prefix_chat_users_lastping_idx ON prefix_chat_users (lastping); INSERT INTO prefix_log_display VALUES ('chat', 'view', 'chat', 'name'); INSERT INTO prefix_log_display VALUES ('chat', 'add', 'chat', 'name'); diff --git a/mod/chat/drawboard.php b/mod/chat/drawboard.php new file mode 100644 index 00000000000..5edb4e9e31f --- /dev/null +++ b/mod/chat/drawboard.php @@ -0,0 +1,38 @@ + + + + + + Abacho - Drawboard + + + + " HEIGHT=""> + "> + + + + + + + Unfortunatelly, your browser doesn't support Java applets. You have to use another one. + + + + \ No newline at end of file diff --git a/mod/chat/gui_header/chatinput.php b/mod/chat/gui_header/chatinput.php new file mode 100644 index 00000000000..24f6c3ea1cd --- /dev/null +++ b/mod/chat/gui_header/chatinput.php @@ -0,0 +1,33 @@ += 0) + { + echo $arsc_parameters["htmlhead_msginput"]; + ?> + + + + " value=""> + "> +
        + + + diff --git a/mod/chat/gui_header/chatmsg.php b/mod/chat/gui_header/chatmsg.php new file mode 100644 index 00000000000..635188df5aa --- /dev/null +++ b/mod/chat/gui_header/chatmsg.php @@ -0,0 +1,74 @@ +".$arsc_message."
        ", $arsc_room, 0); + ?> + + + '$arsc_lastid' ORDER BY timeid ASC"); + while ($arsc_a = mysql_fetch_array($arsc_result)) + { + echo arsc_filter_posting($arsc_a["user"], $arsc_a["sendtime"], $arsc_a["message"], $arsc_room, $arsc_a["flag_ripped"])."\n"; + } + $arsc_ping = time(); + $arsc_ip = getenv("REMOTE_ADDR"); + mysql_query("UPDATE arsc_users SET lastping = '$arsc_ping', ip = '$arsc_ip' WHERE user = '$arsc_user'"); + ?> + + + + diff --git a/mod/chat/gui_header/index.php b/mod/chat/gui_header/index.php new file mode 100644 index 00000000000..ffaf8270787 --- /dev/null +++ b/mod/chat/gui_header/index.php @@ -0,0 +1,23 @@ + + + + + + ARSC - ARSC Really Simple Chat + + + + + + + + + + + + Sorry, this version of ARSC needs a browser that understands framesets. We have a Lynx friendly version too. + + diff --git a/mod/chat/gui_header_js/chatinput.php b/mod/chat/gui_header_js/chatinput.php index 67f53eaf489..c9e7b3514bb 100644 --- a/mod/chat/gui_header_js/chatinput.php +++ b/mod/chat/gui_header_js/chatinput.php @@ -1,46 +1,64 @@ -chatid)) { + error("No chat found"); +} - chat_force_language($chatuser->lang); - - ob_start(); - ?> - - course); ?> -
        - >> - -
        + + + + +Message Input + +javascript"); ?> + + + + + + + +
        +>> + +
        + +
        + + + + +
        -
        - - -
        + diff --git a/mod/chat/gui_header_js/chatmsg.php b/mod/chat/gui_header_js/chatmsg.php index b2f9f5d206a..678b075cfe0 100644 --- a/mod/chat/gui_header_js/chatmsg.php +++ b/mod/chat/gui_header_js/chatmsg.php @@ -1,2 +1,2 @@ - - + + diff --git a/mod/chat/gui_header_js/index.php b/mod/chat/gui_header_js/index.php index e9443e997d9..82e69f2bfe4 100644 --- a/mod/chat/gui_header_js/index.php +++ b/mod/chat/gui_header_js/index.php @@ -1,75 +1,73 @@ -course)) { + error("Could not find the course this belongs to!"); } - if (!$course = get_record('course', 'id', $chat->course)) { - error('Could not find the course this belongs to!'); + if (!$cm = get_coursemodule_from_instance("chat", $chat->id, $course->id)) { + error("Course Module ID was incorrect"); } - - if (!$cm = get_coursemodule_from_instance('chat', $chat->id, $course->id)) { - error('Course Module ID was incorrect'); - } - - require_login($course->id, false, $cm); - + + require_login($course->id); + if (isguest()) { - error('Guest does not have access to chat rooms'); - } - - if (!$cm->visible and !isteacher($course->id)) { - print_header(); - notice(get_string("activityiscurrentlyhidden")); + error("Guest does not have access to chat rooms"); } /// Check to see if groups are being used here - if ($groupmode = groupmode($course, $cm)) { // Groups are being used - if ($groupid = get_and_set_current_group($course, $groupmode, $groupid)) { - if (!$group = get_record('groups', 'id', $groupid)) { - error("That group (id $groupid) doesn't exist!"); + if ($groupmode = groupmode($course, $cm)) { // Groups are being used + if ($currentgroup = get_and_set_current_group($course, $groupmode, $groupid)) { + if (!$group = get_record('groups', 'id', $currentgroup)) { + error("That group (id $currentgroup) doesn't exist!"); } $groupname = ': '.$group->name; } else { $groupname = ': '.get_string('allparticipants'); } } else { - $groupid = 0; + $currentgroup = false; $groupname = ''; } - $strchat = get_string('modulename', 'chat'); // must be before current_language() in chat_login_user() to force course language!!! - - if (!$chat_sid = chat_login_user($chat->id, 'header_js', $groupid, $course)) { - error('Could not log in to chat room!!'); + if (!$chat_sid = chat_login_user($chat->id, "header_js", $currentgroup)) { + error("Could not log in to chat room!!"); } - $params = "chat_sid=$chat_sid"; + if ($currentgroup !== false) { + $params = "chat_enter=true&chat_sid=$chat_sid&groupid=$currentgroup"; + } else { + $params = "chat_enter=true&chat_sid=$chat_sid"; + } + + $strchat = get_string("modulename", "chat"); + ?> - - - <?php echo "$strchat: $course->shortname: ".format_string($chat->name,true)."$groupname" ?> + <?php echo "$strchat: $course->shortname: $chat->name$groupname" ?> - - - - + + + + - + Sorry, this version of Moodle Chat needs a browser that handles frames. diff --git a/mod/chat/gui_header_js/insert.php b/mod/chat/gui_header_js/insert.php deleted file mode 100644 index 5321fc02b29..00000000000 --- a/mod/chat/gui_header_js/insert.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php // $Id$ - - include('../../../config.php'); - include('../lib.php'); - - $chat_sid = required_param('chat_sid', PARAM_ALPHANUM); - $chat_message = required_param('chat_message', PARAM_RAW); - - if (!$chatuser = get_record('chat_users', 'sid', $chat_sid)) { - error('Not logged in!'); - } - - if (!$chat = get_record('chat', 'id', $chatuser->chatid)) { - error('No chat found'); - } - - if (!$course = get_record('course', 'id', $chat->course)) { - error('Could not find the course this belongs to!'); - } - - require_login($course->id); - - if (isguest()) { - error('Guest does not have access to chat rooms'); - } - - session_write_close(); - -/// Delete old users now - - chat_delete_old_users(); - -/// Clean up the message - - $chat_message = addslashes(clean_text(stripslashes($chat_message), FORMAT_MOODLE)); // Strip bad tags - -/// Add the message to the database - - if (!empty($chat_message)) { - - $message->chatid = $chatuser->chatid; - $message->userid = $chatuser->userid; - $message->groupid = $chatuser->groupid; - $message->message = $chat_message; - $message->timestamp = time(); - - if (!insert_record('chat_messages', $message)) { - error('Could not insert a chat message!'); - } - - $chatuser->lastmessageping = time() - 2; - update_record('chat_users', $chatuser); - - if ($cm = get_coursemodule_from_instance('chat', $chat->id, $course->id)) { - add_to_log($course->id, 'chat', 'talk', "view.php?id=$cm->id", $chat->id, $cm->id); - } - } - - if ($chatuser->version == 'header_js') { - /// force msg referesh ASAP - echo '<script type="text/javascript">parent.jsupdate.location.href = parent.jsupdate.document.anchors[0].href;</script>'; - } - - redirect('../empty.php'); -?> diff --git a/mod/chat/gui_header_js/jsupdate.php b/mod/chat/gui_header_js/jsupdate.php index 8f91c06a521..659df29e327 100644 --- a/mod/chat/gui_header_js/jsupdate.php +++ b/mod/chat/gui_header_js/jsupdate.php @@ -1,124 +1,73 @@ -<?php // $Id$ +<?php - $nomoodlecookie = true; // Session not needed! +require("../../../config.php"); +require("../lib.php"); - require('../../../config.php'); - require('../lib.php'); +$groupid = empty($_GET['groupid']) ? 0 : $_GET['groupid']; +$groupselect = $groupid ? " AND (groupid='$groupid' OR groupid='0') " : ""; - $chat_sid = required_param('chat_sid', PARAM_ALPHANUM); - $chat_lasttime = optional_param('chat_lasttime', 0, PARAM_INT); +if (!$chatuser = get_record("chat_users", "sid", $chat_sid)) { + echo "Not logged in!"; + die; +} - if (!$chatuser = get_record('chat_users', 'sid', $chat_sid)) { - error('Not logged in!'); - } +if (!$chat = get_record("chat", "id", $chatuser->chatid)) { + error("No chat found"); +} - chat_force_language($chatuser->lang); +require_login($chat->course); - // force deleting of timed out users if there is a silence in room or just entering - if ((time() - $chat_lasttime) > $CFG->chat_old_ping) { - // must be done before chat_get_latest_message!!! - chat_delete_old_users(); - } +if ($message = chat_get_latest_message($chatuser->chatid, $groupid)) { + $chat_newlasttime = $message->timestamp; +} else { + $chat_newlasttime = 0; +} - if ($message = chat_get_latest_message($chatuser->chatid, $chatuser->groupid)) { - $chat_newlasttime = $message->timestamp; - } else { - $chat_newlasttime = 0; - } +if (empty($chat_lasttime)) { + $chat_lasttime = 0; +} - if ($chat_lasttime == 0) { //display some previous messages - $chat_lasttime = time() - $CFG->chat_old_ping; //TO DO - any better value?? - } - $refreshurl = "jsupdate.php?chat_sid=$chat_sid&chat_lasttime=$chat_newlasttime"; // no &amp; in url, does not work in header! - $timenow = time(); - - $groupselect = $chatuser->groupid ? " AND (groupid='".$chatuser->groupid."' OR groupid='0') " : ""; - - header('Expires: Sun, 28 Dec 1997 09:32:45 GMT'); - header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); - header('Cache-Control: no-cache, must-revalidate'); - header('Pragma: no-cache'); - header('Content-Type: text/html'); - header("Refresh: $CFG->chat_refresh_room; url=$refreshurl"); - - /// required stylesheets - $stylesheetshtml = ''; - foreach ($CFG->stylesheets as $stylesheet) { - $stylesheetshtml .= '<link rel=\\"stylesheet\\" type=\\"text/css\\" href=\\"'.$stylesheet.'\\" />'; - } +header("Expires: Sun, 28 Dec 1997 09:32:45 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); +header("Cache-Control: no-cache, must-revalidate"); +header("Pragma: no-cache"); +header("Content-Type: text/html"); +header("Refresh: $CFG->chat_refresh_room; URL=jsupdate.php?chat_sid=$chat_sid&chat_lasttime=$chat_newlasttime&groupid=$groupid"); ?> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> -<html> - <head> - <meta http-equiv="content-type" content="text/html; charset=<?php echo get_string('thischarset'); ?>" /> - <script type="text/javascript"> - <!-- - if (parent.msg.document.getElementById("msgStarted") == null) { - parent.msg.document.close(); - parent.msg.document.open("text/html","replace"); - parent.msg.document.write("<html><head>"); - parent.msg.document.write("<meta http-equiv=\"content-type\" content=\"text/html; charset=<?php echo get_string('thischarset'); ?>\" />"); - parent.msg.document.write("<base target=\"_blank\" />"); - parent.msg.document.write("<?php echo $stylesheetshtml ?>"); - parent.msg.document.write("</head><body><div style=\"display: none\" id=\"msgStarted\">&nbsp;</div>"); - } - <?php - $beep = false; - $refreshusers = false; - $us = array (); - if (($chat_lasttime != $chat_newlasttime) - and $messages = get_records_select("chat_messages", - "chatid = '$chatuser->chatid' AND timestamp > '$chat_lasttime' $groupselect", - "timestamp ASC")) { + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> + <html> + <head> + <script language="Javascript"> + <!-- +<?php + $beep = false; - if (!$currentuser = get_record('user', 'id', $chatuser->userid)) { - error('User does not exist!'); - } - $currentuser->description = ''; - - foreach ($messages as $message) { - $formatmessage = chat_format_message($message, $chatuser->course, $currentuser); - if ($formatmessage->beep) { - $beep = true; - } - if ($formatmessage->refreshusers) { - $refreshusers = true; - } - $us[$message->userid] = $timenow - $message->timestamp; - echo "parent.msg.document.write('".addslashes($formatmessage->html)."\\n');\n"; + if ($chat_lasttime) { + if ($messages = get_records_select("chat_messages", + "chatid = '$chatuser->chatid' AND timestamp > '$chat_lasttime' $groupselect", + "timestamp ASC")) { + foreach ($messages as $message) { + $formatmessage = chat_format_message($message, $chat->course); + if ($formatmessage->beep) { + $beep = $formatmessage->beep; + } + echo "parent.msg.document.write('".addslashes($formatmessage->html)."\\n');"; } - } + } + } - $chatuser->lastping = time(); - update_record('chat_users', $chatuser); - - if ($refreshusers) { - echo "if (parent.users.document.anchors[0] != null) {" . - "parent.users.location.href = parent.users.document.anchors[0].href;}\n"; - } else { - foreach($us as $uid=>$lastping) { - $min = (int) ($lastping/60); - $sec = $lastping - ($min*60); - $min = $min < 10 ? '0'.$min : $min; - $sec = $sec < 10 ? '0'.$sec : $sec; - $idle = $min.':'.$sec; - echo "if (parent.users.document.getElementById('uidle{$uid}') != null) {". - "parent.users.document.getElementById('uidle{$uid}').innerHTML = '$idle';}\n"; - } - } - ?> - parent.msg.scroll(1,5000000); - // --> - </script> - </head> - <body> - <?php - if ($beep) { - echo '<embed src="../beep.wav" autostart="true" hidden="true" name="beep" />'; - } - ?> - <a href="<? echo $refreshurl ?>" name="refreshLink">Refresh link</a> - </body> -</html> + $chatuser->lastping = time(); + update_record("chat_users", $chatuser); + ?> + parent.msg.scroll(1,5000000); + // --> + </script> + </head> + <body> + <?php if ($beep) { ?> + <embed src="../beep.wav" autostart="true" hidden="true" /> + <?php } ?> + </body> + </html> diff --git a/mod/chat/gui_header_js/users.php b/mod/chat/gui_header_js/users.php deleted file mode 100644 index 8a5330ba906..00000000000 --- a/mod/chat/gui_header_js/users.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php // $Id$ - - $nomoodlecookie = true; // Session not needed! - - include('../../../config.php'); - include('../lib.php'); - - $chat_sid = required_param('chat_sid', PARAM_ALPHANUM); - $beep = optional_param('beep', 0, PARAM_INT); // beep target - - if (!$chatuser = get_record('chat_users', 'sid', $chat_sid)) { - error('Not logged in!'); - } - - chat_force_language($chatuser->lang); - - $courseid = $chatuser->course; - - if ($beep) { - $message->chatid = $chatuser->chatid; - $message->userid = $chatuser->userid; - $message->groupid = $chatuser->groupid; - $message->message = "beep $beep"; - $message->system = 0; - $message->timestamp = time(); - - if (!insert_record('chat_messages', $message)) { - error('Could not insert a chat message!'); - } - - $chatuser->lastmessageping = time(); // A beep is a ping ;-) - } - - $chatuser->lastping = time(); - update_record('chat_users', $chatuser); - - $refreshurl = "users.php?chat_sid=$chat_sid"; - - /// Get list of users - - if (!$chatusers = chat_get_users($chatuser->chatid, $chatuser->groupid)) { - error(get_string('errornousers', 'chat')); - } - - ob_start(); - ?> - <script type="text/javascript"> - <!-- - var timer = null - var f = 1; //seconds - var uidles = new Array(<?php echo count($chatusers) ?>); - <?php - $i = 0; - foreach ($chatusers as $chatuser) { - echo "uidles[$i] = 'uidle{$chatuser->id}';\n"; - $i++; - } - ?> - - function stop() { - clearTimeout(timer) - } - - function start() { - timer = setTimeout("update()", f*1000); - } - - function update() { - for(i=0; i<uidles.length; i++) { - el = document.getElementById(uidles[i]); - if (el != null) { - parts = el.innerHTML.split(":"); - time = f + (parseInt(parts[0], 10)*60) + parseInt(parts[1], 10); - min = Math.floor(time/60); - sec = time % 60; - el.innerHTML = ((min < 10) ? "0" : "") + min + ":" + ((sec < 10) ? "0" : "") + sec; - } - } - timer = setTimeout("update()", f*1000); - } - // --> - </script> - <?php - - - /// Print headers - $meta = ob_get_clean(); - print_header('', '', '', '', $meta, false, '', '', false, 'onload="start()" onunload="stop()"'); - - - /// Print user panel body - $timenow = time(); - $stridle = get_string('idle', 'chat'); - $strbeep = get_string('beep', 'chat'); - - - echo '<div style="display: none"><a href="'.$refreshurl.'" name="refreshLink">Refresh link</a></div>'; - echo '<table width="100%">'; - foreach ($chatusers as $chatuser) { - $lastping = $timenow - $chatuser->lastmessageping; - $min = (int) ($lastping/60); - $sec = $lastping - ($min*60); - $min = $min < 10 ? '0'.$min : $min; - $sec = $sec < 10 ? '0'.$sec : $sec; - $idle = $min.':'.$sec; - echo '<tr><td width="35">'; - echo "<a target=\"_blank\" onClick=\"return openpopup('/user/view.php?id=$chatuser->id&amp;course=$courseid','user$chatuser->id','');\" href=\"$CFG->wwwroot/user/view.php?id=$chatuser->id&amp;course=$courseid\">"; - print_user_picture($chatuser->id, 0, $chatuser->picture, false, false, false); - echo '</a></td><td valign="center">'; - echo '<p><font size="1">'; - echo fullname($chatuser).'<br />'; - echo "<span class=\"dimmed_text\">$stridle <span name=\"uidles\" id=\"uidle{$chatuser->id}\">$idle</span></span>"; - echo " <a href=\"users.php?chat_sid=$chat_sid&amp;beep=$chatuser->id\">$strbeep</a>"; - echo '</font></p>'; - echo '<td></tr>'; - } - echo '</table></body></html>'; -?> diff --git a/mod/chat/gui_java/MainFrameGui.java b/mod/chat/gui_java/MainFrameGui.java new file mode 100644 index 00000000000..53c292b2e05 --- /dev/null +++ b/mod/chat/gui_java/MainFrameGui.java @@ -0,0 +1,177 @@ +import java.awt.*; +import java.awt.event.*; + +public class MainFrameGui +extends Frame +{ + public static TextArea messages; + public static TextField eingabe; + public static List userliste; + public static Checkbox cb; + public static Button hilfebutton; + public static GridBagConstraints makegbc; + public static TextDialog hilfedialog; + public static MenuBar menu; + + public MainFrameGui() + { + super ("ARSC Really Simple Chat"); + setBackground(Color.lightGray); + addWindowListener(new WindowClosingAdapter(true)); + + //Menü + MenuBar menu = new MenuBar(); + Menu menuConnection = new Menu("Connection"); + menuConnection.add("Connect to server"); + menuConnection.add("Disconnect from server"); + menuConnection.add("Quit"); + Menu menuConfiguration = new Menu("Configuration"); + Menu menuHelp = new Menu("Help"); + MenuItem mi = new MenuItem("Show commands"); + mi.addActionListener(new hilfebuttonListener()); + menuHelp.add(mi); + menuHelp.add("About..."); + menu.add(menuConnection); + menu.add(menuConfiguration); + menu.add(menuHelp); + + setMenuBar(menu); + + //Layout setzen und Komponenten hinzufügen + GridBagLayout gbl = new GridBagLayout(); + GridBagConstraints gbc; + setLayout(gbl); + + //TextArea hinzufügen + messages = new TextArea("", 20, 20, TextArea.SCROLLBARS_VERTICAL_ONLY); + gbc = makegbc(0, 0, 2, 2); + gbc.weightx = 100; + gbc.weighty = 100; + gbc.fill = GridBagConstraints.BOTH; + gbl.setConstraints(messages, gbc); + add(messages); + + //Userliste + userliste = new List(); + userliste.add("pgod"); + userliste.add("HanSolo"); + userliste.add("dArUdE"); + gbc = makegbc(2, 0, 2, 2); + gbc.fill = GridBagConstraints.BOTH; + gbl.setConstraints(userliste, gbc); + userliste.addActionListener(new userlisteListener()); + add(userliste); + + //Eingabefeld + eingabe = new TextField(); + gbc = makegbc(0, 2, 1, 1); + gbc.weightx = 100; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.anchor = GridBagConstraints.SOUTH; + gbl.setConstraints(eingabe, gbc); + eingabe.addActionListener(new eingabeListener()); + add(eingabe); + + //Checkbox + cb = new Checkbox("Scrolling"); + cb.setState(true); + gbc = makegbc(1, 2, 1, 1); + gbc.fill = GridBagConstraints.NONE; + gbc.anchor = GridBagConstraints.SOUTH; + gbl.setConstraints(cb, gbc); + add(cb); + + //Hilfebutton + hilfebutton = new Button("Help"); + gbc = makegbc(2, 2, 1, 1); + gbc.fill = GridBagConstraints.NONE; + gbc.anchor = GridBagConstraints.WEST; + gbl.setConstraints(hilfebutton, gbc); + hilfebutton.addActionListener(new hilfebuttonListener()); + add(hilfebutton); + //Gib ihm + pack(); + hilfedialog = new TextDialog(this, "Hilfe", "Hilfe\nLala\nLulu...", "Schliessen", false, 200, 400); + } + + //Die Listener + public class eingabeListener + implements ActionListener + { + public void actionPerformed(ActionEvent event) + { + System.out.println("Event erhalten"); + TextField source = (TextField)event.getSource(); + messages.append("\n" + source.getText()); + source.selectAll(); + } + } + + public class userlisteListener + implements ActionListener + { + public void actionPerformed(ActionEvent event) + { + System.out.println("userliste Event erhalten"); + List source = (List)event.getSource(); + eingabe.setText("/msg " + source.getSelectedItem() + " "); + eingabe.setCaretPosition(99); + eingabe.requestFocus(); + } + } + + public class hilfebuttonListener + implements ActionListener + { + public void actionPerformed(ActionEvent event) + { + System.out.println("hilfebutton Event erhalten"); + if(getToolkit().getScreenSize().width - (getBounds().x + getBounds().width) >= hilfedialog.getSize().width) + { + hilfedialog.setLocation(getBounds().x + getBounds().width, getBounds().y); + } + else + { + hilfedialog.setLocation(getToolkit().getScreenSize().width - hilfedialog.getSize().width, getBounds().y); + } + hilfedialog.setVisible(true); + } + } + + public class WindowClosingAdapter + extends WindowAdapter + { + private boolean exitSystem; + + public WindowClosingAdapter(boolean exitSystem) + { + this.exitSystem = exitSystem; + } + + public WindowClosingAdapter() + { + this(true); + } + + public void windowClosing(WindowEvent event) + { + event.getWindow().setVisible(false); + event.getWindow().dispose(); + if (exitSystem) + { + System.exit(0); + } + } + } + + public static GridBagConstraints makegbc(int x, int y, int width, int height) + { + GridBagConstraints gbc = new GridBagConstraints(); + gbc.gridx = x; + gbc.gridy = y; + gbc.gridwidth = width; + gbc.gridheight = height; + gbc.insets = new Insets(1, 1, 1, 1); + return gbc; + } +} diff --git a/mod/chat/gui_java/TextDialog.java b/mod/chat/gui_java/TextDialog.java new file mode 100644 index 00000000000..52e3a120217 --- /dev/null +++ b/mod/chat/gui_java/TextDialog.java @@ -0,0 +1,68 @@ +import java.awt.*; +import java.awt.event.*; + +public class TextDialog +extends Dialog +implements ActionListener +{ + public TextDialog(Frame owner, String title, String textAreaText, String buttonText, boolean modal, int sizeX, int sizeY) + { + super(owner, title, modal); + setBackground(Color.lightGray); + setLocation(getToolkit().getScreenSize().width - sizeY, 0); + + //Layout setzen und Komponenten hinzufügen + GridBagLayout gbl = new GridBagLayout(); + GridBagConstraints gbc; + setLayout(gbl); + + //TextArea hinzufügen + TextArea text = new TextArea(textAreaText, 1, 1, TextArea.SCROLLBARS_VERTICAL_ONLY); + gbc = MainFrameGui.makegbc(0, 0, 1, 1); + gbc.weightx = 100; + gbc.weighty = 100; + gbc.fill = GridBagConstraints.BOTH; + gbl.setConstraints(text, gbc); + add(text); + + //Button + Button button = new Button(buttonText); + gbc = MainFrameGui.makegbc(0, 1, 1, 1); + gbc.fill = GridBagConstraints.NONE; + gbc.anchor = GridBagConstraints.SOUTH; + gbl.setConstraints(button, gbc); + button.addActionListener(this); + add(button); + + pack(); + setSize(sizeX, sizeY); + } + + public void actionPerformed(ActionEvent event) + { + int i = getSize().height; + int j = i / 20; + int oldWidth = getSize().width; + int oldHeight = getSize().height; + + System.out.println(i + " - " + j); + + while(i > -1) + { + //System.out.println(i); + setSize(getSize().width, i); + try + { + Thread.sleep(5); + } + catch (InterruptedException e) + { + //nix + } + i = i - j; + } + setVisible(false); + setSize(oldWidth, oldHeight); + dispose(); + } +} diff --git a/mod/chat/gui_java/arsc.java b/mod/chat/gui_java/arsc.java new file mode 100644 index 00000000000..b45a6b4bc17 --- /dev/null +++ b/mod/chat/gui_java/arsc.java @@ -0,0 +1,90 @@ +import java.awt.*; +import java.awt.event.*; +import java.net.*; +import java.io.*; +import java.sql.*; +import java.util.*; + +public class arsc +{ + static String DBUrl = "jdbc:mysql://194.231.30.146/arscdev?user=user&password=password"; + static String arsc_sid = "dhndewbz2798z23dzdewßdew"; + + public static void main(String[] args) + { + MainFrameGui gui = new MainFrameGui(); + gui.setSize(480,300); + gui.setVisible(true); + + try + { + try + { + Class.forName("org.gjt.mm.mysql.Driver").newInstance(); + } + catch (Exception e) + { + System.err.println(e.toString()); + } + + Connection conn = null; + Statement stmt = null; + PreparedStatement pStmt = null; + + conn = DriverManager.getConnection(DBUrl); + stmt = conn.createStatement(); + stmt.executeUpdate("INSERT INTO arsc_users (id, user, lastping, ip, room, language, version, level, sid, lastmessageping) VALUES ('', 'javapgod', '', '', 'lounge', 'german', 'sockets', '1', 'abcdefg', '') "); + } + catch (SQLException sqlEx) { System.err.println(sqlEx.toString()); } + + try + { + Thread.sleep(5000); + } + catch (InterruptedException e) + { + //nix + } + + try + { + Socket sock = new Socket("194.231.30.146", 12345); + BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream())); + OutputStream out = sock.getOutputStream(); + String line = "arsc_sid=abcdefg HTTP"; + out.write(line.getBytes()); + out.write('\r'); + out.write('\n'); + String blubb = new String(); + while ((blubb = in.readLine()) != null) + { + gui.messages.append(blubb); + } + in.close(); + out.close(); + sock.close(); + } + catch (IOException e) + { + System.err.println(e.toString()); + //System.exit; + } + + while (true) + { + try + { + Thread.sleep(500); + } + catch (InterruptedException e) + { + //nix + } + //gui.messages.append("blah...\n"); + if (gui.cb.getState() == true) + { + gui.messages.setCaretPosition(99999999); + } + } + } +} diff --git a/mod/chat/gui_push_js/chatinput.php b/mod/chat/gui_push_js/chatinput.php new file mode 100644 index 00000000000..ac790d5ba98 --- /dev/null +++ b/mod/chat/gui_push_js/chatinput.php @@ -0,0 +1,35 @@ +<?php + +include("../config.inc.php"); +include("../functions.inc.php"); + +if ($arsc_my = arsc_getdatafromsid($arsc_sid)) +{ + include("../shared/language/".$arsc_my["language"].".inc.php"); + + if ($arsc_my["level"] >= 0) + { + echo $arsc_parameters["htmlhead_msginput_js"]; + ?> + <form action="../shared/chatins.php" method="GET" target="empty" name="f" OnSubmit="return empty_field_and_submit()"> + <input type="text" name="arsc_message" size="50" maxlength="<?php echo $arsc_parameters["input_maxsize"]; ?>" value="<?php echo $arsc_pretext; ?>"> + </form> + <form action="../shared/chatins.php" method="GET" target="empty" name="fdummy" OnSubmit="return empty_field_and_submit()"> + <input type="hidden" name="arsc_sid" value="<?php echo $arsc_sid; ?>"> + <input type="hidden" name="arsc_chatversion" value="header_js"> + <input type="hidden" name="arsc_message"> + </form> + </body> + </html> + <?php + } + else + { + echo $arsc_htmlhead_out; + } +} +else +{ + echo $arsc_htmlhead_out; +} +?> diff --git a/mod/chat/gui_push_js/chatmsg.php b/mod/chat/gui_push_js/chatmsg.php new file mode 100644 index 00000000000..6ec3678be5c --- /dev/null +++ b/mod/chat/gui_push_js/chatmsg.php @@ -0,0 +1,98 @@ +<?php + +function arsc_shutdown() +{ + GLOBAL $arsc_sid, + $arsc_my; + if ($arsc_my["user"] <> "") + { + $arsc_user = $arsc_my["user"]; + $arsc_room = $arsc_my["room"]; + $arsc_nice_room = arsc_nice_room($arsc_room); + $arsc_timeid = arsc_microtime(); + $arsc_sendtime = date("H:i:s"); + mysql_query("DELETE from arsc_users WHERE sid = '$arsc_sid'"); + mysql_query("INSERT into arsc_room_$arsc_room (message, user, sendtime, timeid) VALUES ('arsc_user_quit~~$arsc_user~~$arsc_nice_room', 'System', '$arsc_sendtime', '$arsc_timeid')"); + } +} + +register_shutdown_function("arsc_shutdown"); + +include("../config.inc.php"); +include("../functions.inc.php"); +include("../filter.inc.php"); + +if ($arsc_my = arsc_getdatafromsid($arsc_sid)) +{ + include("../shared/language/".$arsc_my["language"].".inc.php"); + + $arsc_room = $arsc_my["room"]; + if ($arsc_lastid == "") + { + $arsc_result = mysql_query("SELECT * from arsc_room_$arsc_room ORDER BY timeid DESC"); + $arsc_b = mysql_fetch_array($arsc_result); + $arsc_lastid = $arsc_b["timeid"]; + } + + echo $arsc_parameters["htmlhead_js"]; + + set_magic_quotes_runtime(0); + @set_time_limit(0); + $arsc_sendtime = date("H:i:s"); + $arsc_timeid = arsc_microtime(); + $arsc_message = "/msg ".$arsc_my["user"]." ".$arsc_lang["welcome"]; + echo arsc_filter_posting("System", $arsc_sendtime, $arsc_message, $arsc_room, 0); + $i = 0; + while(!connection_aborted()) + { + $arsc_my = arsc_getdatafromsid($arsc_sid); + $arsc_room = $arsc_my["room"]; + if(!$arsc_result = mysql_query("SELECT * from arsc_room_$arsc_room ORDER BY timeid DESC")) + { + arsc_shutdown(); + die(); + } + $arsc_b = mysql_fetch_array($arsc_result); + if ($arsc_lastid == "") + { + $arsc_lastid = $arsc_b["timeid"]; + } + $arsc_lastid_save = $arsc_b["timeid"]; + if ($arsc_my["level"] < 0) + { + switch($arsc_my["level"]) + { + case "-1": echo arsc_filter_posting("System", date("H:i:s"), "<font size=\"4\"><b>".$arsc_lang["youwerekicked"]."</b></font>", $arsc_room, 0); + mysql_query("DELETE from arsc_users WHERE sid = '$arsc_sid'"); + break; + } + break; + } + + $i++; + $arsc_result = mysql_query("SELECT * from arsc_room_$arsc_room WHERE timeid > '$arsc_lastid' ORDER BY timeid ASC, id ASC"); + while ($arsc_a = mysql_fetch_array($arsc_result)) + { + $arsc_posting = arsc_filter_posting($arsc_a["user"], $arsc_a["sendtime"], $arsc_a["message"], $arsc_room, $arsc_a["flag_ripped"]); + echo "$arsc_posting"; + } + $arsc_lastid = $arsc_lastid_save; + $arsc_ping = time(); + $arsc_ip = getenv("REMOTE_ADDR"); + mysql_query("UPDATE arsc_users SET lastping = '$arsc_ping', ip = '$arsc_ip' WHERE sid = '$arsc_sid'"); + echo " "; + flush(); + usleep($arsc_parameters["socketserver_refresh"]); + flush(); + flush(); + flush(); + flush(); + flush(); + // just to be sure :) + } +} +else +{ + echo $arsc_parameters["htmlhead_out"]; +} +?> diff --git a/mod/chat/gui_push_js/index.php b/mod/chat/gui_push_js/index.php new file mode 100644 index 00000000000..656d18cdf87 --- /dev/null +++ b/mod/chat/gui_push_js/index.php @@ -0,0 +1,24 @@ +<?php +include("../config.inc.php"); +include("../functions.inc.php"); +?> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> +<html> + <head> + <title> + ARSC - ARSC Really Simple Chat + </title> + </head> + <frameset cols="193,*,120" border="0" framespacing="no" frameborder="0" marginwidth="2" marginheight="1"> + <frame src="../shared/roomlist.php?arsc_sid=<?php echo $arsc_sid; ?>" name="roomlist" scrolling="auto" noresize marginwidth="0" marginheight="0"> + <frameset rows="1,*,40" border="1" framespacing="no" frameborder="0" marginwidth="2" marginheight="1"> + <frame src="../shared/empty.php" NAME="empty" scrolling="no" noresize marginwidth="0" marginheight="0"> + <frame src="chatmsg.php?arsc_sid=<?php echo $arsc_sid; ?>" NAME="msg" scrolling="auto" noresize marginwidth="2" marginheight="1"> + <frame src="chatinput.php?arsc_sid=<?php echo $arsc_sid; ?>" name="input" scrolling="no" noresize marginwidth="2" marginheight="1"> + </frameset> + <frame src="../shared/userlist.php?arsc_sid=<?php echo $arsc_sid; ?>&arsc_enter=true" name="users" scrolling="auto" noresize marginwidth="5" marginheight="5"> + </frameset> + <noframes> + Sorry, ARSC needs a browser that understands framesets. We have a Lynx friendly version too. + + diff --git a/mod/chat/gui_sockets/chatinput.php b/mod/chat/gui_sockets/chatinput.php index 6cef94d8eaa..990c43d3be6 100644 --- a/mod/chat/gui_sockets/chatinput.php +++ b/mod/chat/gui_sockets/chatinput.php @@ -1,72 +1,74 @@ -lang); - - ob_start(); - ?> - - - -
        - >> - -
        - -
        chat_serverhost:$CFG->chat_serverport/"; ?>" method="get" target="empty" id="sendform"> - - - - -
        - - - +chatid)) { + error("No chat found"); +} + +require_login($chat->course); +optional_variable($chat_pretext, ''); + +?> + + + + +Message Input + +javascript"); ?> + + + + + + + +
        + +>> + +
        + + + +
        chat_serverhost:$CFG->chat_serverport/"; ?>" method="GET" target="empty" id="chatform"> + + + + + + + +
        + + + + + diff --git a/mod/chat/gui_sockets/index.php b/mod/chat/gui_sockets/index.php index 7cf551b3c35..2b5783d506c 100644 --- a/mod/chat/gui_sockets/index.php +++ b/mod/chat/gui_sockets/index.php @@ -1,10 +1,9 @@ -id, false, $cm); + require_login($course->id); if (isguest()) { error('Guest does not have access to chat rooms'); } - if (!$cm->visible and !isteacher($course->id)) { - print_header(); - notice(get_string("activityiscurrentlyhidden")); - } - /// Check to see if groups are being used here - if ($groupmode = groupmode($course, $cm)) { // Groups are being used - if ($groupid = get_and_set_current_group($course, $groupmode, $groupid)) { - if (!$group = get_record('groups', 'id', $groupid)) { - error("That group (id $groupid) doesn't exist!"); + if ($groupmode = groupmode($course, $cm)) { // Groups are being used + if ($currentgroup = get_and_set_current_group($course, $groupmode, $groupid)) { + if (!$group = get_record('groups', 'id', $currentgroup)) { + error("That group (id $currentgroup) doesn't exist!"); } $groupname = ': '.$group->name; } else { $groupname = ': '.get_string('allparticipants'); } } else { - $groupid = 0; + $currentgroup = false; $groupname = ''; } - $strchat = get_string('modulename', 'chat'); // must be before current_language() in chat_login_user() to force course language!!! - - if (!$chat_sid = chat_login_user($chat->id, 'sockets', $groupid, $course)) { - error('Could not log in to chat room!!'); + if (!$chat_sid = chat_login_user($chat->id, 'sockets', $currentgroup)) { + error("Could not log in to chat room!!"); } - $params = "chat_sid=$chat_sid"; + if ($currentgroup !== false) { + $params = "chat_enter=true&chat_sid=$chat_sid&groupid=$currentgroup"; + } else { + $params = "chat_enter=true&chat_sid=$chat_sid&groupid=0"; + } + + $strchat = get_string("modulename", "chat"); + ?> - - <?php echo "$strchat: $course->shortname: ".format_string($chat->name,true)."$groupname" ?> + <?php echo "$strchat: $course->shortname: $chat->name$groupname" ?> - + - chat_serverhost:$CFG->chat_serverport?win=chat&$params"; ?>" name="msg" scrolling="auto" noresize marginwidth="2" marginheight="0"> + chat_serverhost:$CFG->chat_serverport?win=chat&$params"; ?>" NAME="msg" scrolling="auto" noresize marginwidth="2" marginheight="0"> - chat_serverhost:$CFG->chat_serverport?win=users&$params"; ?>" name="users" scrolling="auto" marginwidth="5" marginheight="5"> + chat_serverhost:$CFG->chat_serverport?win=users&$params"; ?>" name="users" scrolling="auto" marginwidth="5" marginheight="5"> + Sorry, this version of Moodle Chat needs a browser that handles frames. diff --git a/mod/chat/gui_text/index.php b/mod/chat/gui_text/index.php new file mode 100644 index 00000000000..85e38341e58 --- /dev/null +++ b/mod/chat/gui_text/index.php @@ -0,0 +1,122 @@ +<?php + +include("../config.inc.php"); +include("../functions.inc.php"); +include("../filter.inc.php"); + +if ($arsc_my = arsc_getdatafromsid($arsc_sid)) +{ + include("../shared/language/".$arsc_my["language"].".inc.php"); + + $arsc_user = $arsc_my["user"]; + $arsc_room = $arsc_my["room"]; + if ($arsc_lastid == "") + { + $arsc_result = mysql_query("SELECT * from arsc_room_$arsc_room ORDER BY timeid DESC"); + $arsc_b = mysql_fetch_array($arsc_result); + $arsc_lastid = $arsc_b["timeid"]; + } + + if ($arsc_my["level"] < 0) + { + switch($arsc_my["level"]) + { + case "-1": $arsc_message = $arsc_lang["youwerekicked"]; + mysql_query("DELETE from arsc_users WHERE sid = '$arsc_sid'"); + break; + } + header("Expires: Sun, 28 Dec 1997 09:32:45 GMT"); + header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + header("Cache-Control: no-cache, must-revalidate"); + header("Pragma: no-cache"); + header("Content-Type: text/html"); + ?> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> + <html> + <body> + <?php echo arsc_filter_posting("System", date("H:i:s"), "<font size=4><b>".$arsc_message."</b></font>", $arsc_room, 0); ?> + </body> + </html> + <?php + } + else + { + if ($arsc_enter == "true") + { + $arsc_sendtime = date("H:i:s"); + $arsc_timeid = arsc_microtime(); + $arsc_message = "arsc_user_enter~~".$arsc_my["user"]."~~".arsc_nice_room($arsc_room); + mysql_query("INSERT into arsc_room_$arsc_room (message, user, sendtime, timeid) VALUES ('$arsc_message', 'System', '$arsc_sendtime', '$arsc_timeid')"); + } + header("Expires: Sun, 28 Dec 1997 09:32:45 GMT"); + header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + header("Cache-Control: no-cache, must-revalidate"); + header("Pragma: no-cache"); + header("Content-Type: text/html"); + + ?> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> + <html> + <head> + <title> + <?php echo $arsc_parameters["title"]; ?> + </title> + </head> + <body> + <form action="../shared/chatins.php" METHOD="POST"> + <a href="index.php?arsc_sid=<?php echo $arsc_sid; ?>&arsc_lastid=<?php echo $arsc_lastid; ?>"><?php echo $arsc_lang["refreshmessages"]; ?></a> + <input type="hidden" name="arsc_sid" value="<?php echo $arsc_sid; ?>"> + <input type="hidden" name="arsc_lastid" value="<?php echo $arsc_lastid; ?>"> + <input type="hidden" name="arsc_chatversion" value="text"> + <input type="text" name="arsc_message" size="30" maxlength="<?php echo $arsc_parameters["input_maxsize"]; ?>" value="<?php echo $arsc_pretext; ?>"> + <input type="submit" value="<?php echo $arsc_lang["sendmessage"]; ?>"> + &nbsp;&nbsp;&nbsp;<a href="../logout.php?arsc_sid=<?php echo $arsc_sid; ?>"><?php echo $arsc_lang["leave"]; ?></a> + </form> + <?php + set_magic_quotes_runtime(0); + echo $arsc_lang["usersinroom"]." ".arsc_nice_room($arsc_room).": "; + $arsc_result = mysql_query("SELECT user, level from arsc_users WHERE room = '$arsc_room' ORDER BY level DESC, user ASC"); + while ($arsc_a = mysql_fetch_array($arsc_result)) + { + $arsc_opstring = ""; + if ($arsc_a["level"] == 1) + { + $arsc_opstring = "@"; + } + if ($arsc_a["level"] == 2) + { + $arsc_opstring = "<b>@</b>"; + } + if ($arsc_a["user"] == $arsc_my["user"]) + { + echo "<i>".$arsc_opstring.$arsc_a["user"]."</i>\n"; + } + else + { + echo "<a href=\"../version_".$arsc_my["version"]."/index.php?arsc_sid=".$arsc_my["sid"]."&arsc_lastid=".$arsc_lastid."&arsc_pretext=".urlencode("/msg ".$arsc_a["user"]." ")."\">".$arsc_opstring.$arsc_a["user"]."</a>\n"; + } + } + echo "<br>"; + $arsc_result = mysql_query("SELECT * from arsc_room_$arsc_room WHERE timeid > '$arsc_lastid' ORDER BY timeid DESC"); + while ($arsc_a = mysql_fetch_array($arsc_result)) + { + echo arsc_filter_posting($arsc_a["user"], $arsc_a["sendtime"], $arsc_a["message"], $arsc_room, $arsc_a["flag_ripped"])."\n"; + } + $arsc_sendtime = date("H:i:s"); + $arsc_timeid = arsc_microtime(); + $arsc_message = "/msg ".$arsc_my["user"]." ".$arsc_lang["welcome"]; + echo arsc_filter_posting("System", $arsc_sendtime, $arsc_message, $arsc_room, 0); + $arsc_ping = time(); + $arsc_ip = getenv("REMOTE_ADDR"); + mysql_query("UPDATE arsc_users SET lastping = '$arsc_ping', ip = '$arsc_ip' WHERE user = '$arsc_user'"); + ?> + </body> + </html> + <?php + } +} +else +{ + echo $arsc_htmlhead_out; +} +?> diff --git a/mod/chat/index.php b/mod/chat/index.php index d9d5be8cc0f..f2df2e3bd9a 100644 --- a/mod/chat/index.php +++ b/mod/chat/index.php @@ -1,81 +1,81 @@ -<?php // $Id$ +<?PHP // $Id$ - require_once('../../config.php'); - require_once('lib.php'); + require_once("../../config.php"); + require_once("lib.php"); - $id = required_param('id', PARAM_INT); // course + require_variable($id); // course - if (! $course = get_record('course', 'id', $id)) { - error('Course ID is incorrect'); + if (! $course = get_record("course", "id", $id)) { + error("Course ID is incorrect"); } require_course_login($course); - add_to_log($course->id, 'chat', 'view all', "index.php?id=$course->id", ''); + add_to_log($course->id, "chat", "view all", "index.php?id=$course->id", ""); /// Get all required strings - $strchats = get_string('modulenameplural', 'chat'); - $strchat = get_string('modulename', 'chat'); + $strchats = get_string("modulenameplural", "chat"); + $strchat = get_string("modulename", "chat"); /// Print the header - print_header_simple($strchats, '', $strchats, '', '', true, '', navmenu($course)); + print_header_simple($strchats, "", $strchats, "", "", true, "", navmenu($course)); /// Get all the appropriate data - if (! $chats = get_all_instances_in_course('chat', $course)) { - notice('There are no chats', "../../course/view.php?id=$course->id"); - die(); + if (! $chats = get_all_instances_in_course("chat", $course)) { + notice("There are no chats", "../../course/view.php?id=$course->id"); + die; } /// Print the list of instances (your module will probably extend this) - $timenow = time(); - $strname = get_string('name'); - $strweek = get_string('week'); - $strtopic = get_string('topic'); + $timenow = time(); + $strname = get_string("name"); + $strweek = get_string("week"); + $strtopic = get_string("topic"); - if ($course->format == 'weeks') { + if ($course->format == "weeks") { $table->head = array ($strweek, $strname); - $table->align = array ('center', 'left'); - } else if ($course->format == 'topics') { + $table->align = array ("center", "left"); + } else if ($course->format == "topics") { $table->head = array ($strtopic, $strname); - $table->align = array ('center', 'left', 'left', 'left'); + $table->align = array ("center", "left", "left", "left"); } else { $table->head = array ($strname); - $table->align = array ('left', 'left', 'left'); + $table->align = array ("left", "left", "left"); } - $currentsection = ''; + $currentsection = ""; foreach ($chats as $chat) { if (!$chat->visible) { //Show dimmed if the mod is hidden - $link = "<a class=\"dimmed\" href=\"view.php?id=$chat->coursemodule\">".format_string($chat->name,true)."</a>"; + $link = "<a class=\"dimmed\" href=\"view.php?id=$chat->coursemodule\">$chat->name</a>"; } else { //Show normal if the mod is visible - $link = "<a href=\"view.php?id=$chat->coursemodule\">".format_string($chat->name,true)."</a>"; + $link = "<a href=\"view.php?id=$chat->coursemodule\">$chat->name</a>"; } - $printsection = ''; + $printsection = ""; if ($chat->section !== $currentsection) { if ($chat->section) { $printsection = $chat->section; } - if ($currentsection !== '') { + if ($currentsection !== "") { $table->data[] = 'hr'; } $currentsection = $chat->section; } - if ($course->format == 'weeks' or $course->format == 'topics') { + if ($course->format == "weeks" or $course->format == "topics") { $table->data[] = array ($printsection, $link); } else { $table->data[] = array ($link); } } - echo '<br />'; + echo "<br />"; print_table($table); diff --git a/mod/chat/insert.php b/mod/chat/insert.php new file mode 100644 index 00000000000..1192a768458 --- /dev/null +++ b/mod/chat/insert.php @@ -0,0 +1,69 @@ +<?php + + include("../../config.php"); + include("lib.php"); + + require_variable($chat_sid); + require_variable($chat_version); + require_variable($chat_message); + optional_variable($groupid); + + if (!$chatuser = get_record("chat_users", "sid", $chat_sid)) { + echo "Not logged in!"; + die; + } + + if (!$chat = get_record("chat", "id", $chatuser->chatid)) { + error("No chat found"); + } + + require_login($chat->course); + + if ($groupid) { + if (!isteacheredit($chat->course) and !ismember($groupid)) { + error("You can't chat here!"); + } + } + +/// Clean up the message + + $chat_message = clean_text($chat_message, FORMAT_MOODLE); // Strip bad tags + +/// Add the message to the database + + if (!empty($chat_message)) { + + $message->chatid = $chatuser->chatid; + $message->userid = $chatuser->userid; + $message->groupid = $groupid; + $message->message = $chat_message; + $message->timestamp = time(); + + if (!insert_record("chat_messages", $message)) { + error("Could not insert a chat message!"); + } + + $chatuser->lastmessageping = time() - 2; + update_record("chat_users", $chatuser); + + if ($cm = get_coursemodule_from_instance("chat", $chat->id, $chat->course)) { + add_to_log($chat->course, "chat", "talk", "view.php?id=$cm->id", $chat->id, $cm->id); + } + } + +/// Go back to the other page + + if ($chat_version == "header" OR $chat_version == "box") { + redirect("../gui_$chat_version/chatinput.php?chat_sid=$chat_sid&groupid=$groupid"); + + } else if ($chat_version == 'sockets') { + //redirect('./gui_sockets/chatinput.php?chat_sid='.$chat_sid.'&groupid='.$groupid); + + } else if ($chat_version == "text") { + redirect("../gui_$chat_version/index.php?chat_sid=$chat_sid&chat_lastid=$chat_lastid&groupid=$groupid"); + + } else { + redirect("empty.php"); + } + +?> diff --git a/mod/chat/lib.php b/mod/chat/lib.php index aa0b1b6bb29..2bba3c2d511 100644 --- a/mod/chat/lib.php +++ b/mod/chat/lib.php @@ -1,9 +1,7 @@ -<?php // $Id$ +<?PHP // $Id$ /// Library of functions and constants for module chat -require_once($CFG->libdir.'/pagelib.php'); - if (!isset($CFG->chat_refresh_room)) { set_config("chat_refresh_room", 5); } @@ -20,7 +18,7 @@ if (!isset($CFG->chat_serverhost)) { set_config("chat_serverhost", $_SERVER['HTTP_HOST']); } if (!isset($CFG->chat_serverip)) { - set_config("chat_serverip", '127.0.0.1'); + set_config("chat_serverip", $_SERVER['SERVER_ADDR']); } if (!isset($CFG->chat_serverport)) { set_config("chat_serverport", 9111); @@ -29,6 +27,10 @@ if (!isset($CFG->chat_servermax)) { set_config("chat_servermax", 100); } +define("CHAT_DRAWBOARD", false); // Look into this later + +global $THEME; + // The HTML head for the message window to start with (<!-- nix --> is used to get some browsers starting with output $CHAT_HTMLHEAD = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head></head>\n<body bgcolor=\"#FFFFFF\">\n\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n"; @@ -36,13 +38,13 @@ $CHAT_HTMLHEAD = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\ $CHAT_HTMLHEAD_JS = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><script language=\"JavaScript\">\n<!--\nfunction move()\n{\nif (scroll_active) window.scroll(1,400000);\nwindow.setTimeout(\"move()\",100);\n}\nscroll_active = true;\nmove();\n//-->\n</script>\n</head>\n<body bgcolor=\"#FFFFFF\" onBlur=\"scroll_active = true\" onFocus=\"scroll_active = false\">\n\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n"; // The HTML code for standard empty pages (e.g. if a user was kicked out) -$CHAT_HTMLHEAD_OUT = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><title>You are out!</title></head><body bgcolor=\"#FFFFFF\"></body></html>"; +$CHAT_HTMLHEAD_OUT = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><title>You are out!</title></head><body bgcolor=\"$THEME->body\"></body></html>"; // The HTML head for the message input page -$CHAT_HTMLHEAD_MSGINPUT = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><title>Message Input</title></head><body bgcolor=\"#FFFFFF\">"; +$CHAT_HTMLHEAD_MSGINPUT = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><title>Message Input</title></head><body bgcolor=\"$THEME->body\">"; // The HTML code for the message input page, with JavaScript -$CHAT_HTMLHEAD_MSGINPUT_JS = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><title>Message Input</title>\n<script language=\"Javascript\">\n<!--\nscroll_active = true;\nfunction empty_field_and_submit()\n{\ndocument.fdummy.arsc_message.value=document.f.arsc_message.value;\ndocument.fdummy.submit();\ndocument.f.arsc_message.focus();\ndocument.f.arsc_message.select();\nreturn false;\n}\n// -->\n</script>\n</head><body bgcolor=\"#FFFFFF\" OnLoad=\"document.f.arsc_message.focus();document.f.arsc_message.select();\">"; +$CHAT_HTMLHEAD_MSGINPUT_JS = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><title>Message Input</title>\n<script language=\"Javascript\">\n<!--\nscroll_active = true;\nfunction empty_field_and_submit()\n{\ndocument.fdummy.arsc_message.value=document.f.arsc_message.value;\ndocument.fdummy.submit();\ndocument.f.arsc_message.focus();\ndocument.f.arsc_message.select();\nreturn false;\n}\n// -->\n</script>\n</head><body bgcolor=\"$THEME->body\" OnLoad=\"document.f.arsc_message.focus();document.f.arsc_message.select();\">"; // Dummy data that gets output to the browser as needed, in order to make it show output $CHAT_DUMMY_DATA = "<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n"; @@ -113,7 +115,7 @@ function chat_delete_instance($id) { /// this function will permanently delete the instance /// and any data that depends on it. - if (! $chat = get_record('chat', 'id', $id)) { + if (! $chat = get_record("chat", "id", "$id")) { return false; } @@ -121,22 +123,9 @@ function chat_delete_instance($id) { # Delete any dependent records here # - if (! delete_records('chat', 'id', $chat->id)) { + if (! delete_records("chat", "id", "$chat->id")) { $result = false; } - if (! delete_records('chat_messages', 'chatid', $chat->id)) { - $result = false; - } - if (! delete_records('chat_users', 'chatid', $chat->id)) { - $result = false; - } - - $pagetypes = page_import_types('mod/chat/'); - foreach($pagetypes as $pagetype) { - if(!delete_records('block_instance', 'pageid', $chat->id, 'pagetype', $pagetype)) { - $result = false; - } - } if (! delete_records('event', 'modulename', 'chat', 'instance', $chat->id)) { $result = false; @@ -152,7 +141,6 @@ function chat_user_outline($course, $user, $mod, $chat) { /// $return->time = the time they did it /// $return->info = a short text description - $return = NULL; return $return; } @@ -172,14 +160,13 @@ function chat_print_recent_activity($course, $isteacher, $timestart) { $timeold = time() - $CFG->chat_old_ping; - $lastpingsearch = ($CFG->chat_method == 'sockets') ? '': 'AND cu.lastping > \''.$timeold.'\''; - if (!$chatusers = get_records_sql("SELECT u.id, cu.chatid, u.firstname, u.lastname FROM {$CFG->prefix}chat_users as cu, {$CFG->prefix}chat as ch, {$CFG->prefix}user as u WHERE cu.userid = u.id - AND cu.chatid = ch.id $lastpingsearch + AND cu.chatid = ch.id + AND cu.lastping > '$timeold' AND ch.course = '$course->id' ORDER BY cu.chatid ASC") ) { return false; @@ -192,33 +179,28 @@ function chat_print_recent_activity($course, $isteacher, $timestart) { foreach ($chatusers as $chatuser) { if ($current != $chatuser->chatid) { if ($current) { - echo '</ul></div>'; // room - $current = 0; + echo "</p>"; } - if ($chat = get_record('chat', 'id', $chatuser->chatid)) { + if ($chat = get_record("chat", "id", $chatuser->chatid)) { if (!($isteacher or instance_is_visible('chat', $chat))) { // Chat hidden to students continue; } if (!$outputstarted) { - print_headline(get_string('currentchats', 'chat').':'); + print_headline(get_string("currentchats", "chat").":"); $outputstarted = true; } - echo '<div class="room"><p class="head"><a href="'.$CFG->wwwroot.'/mod/chat/view.php?c='.$chat->id.'">'.format_string($chat->name,true).'</a></p><ul>'; + echo "<p><font size=1><a href=\"$CFG->wwwroot/mod/chat/view.php?c=$chat->id\">$chat->name</a></font><br />"; } $current = $chatuser->chatid; } - $fullname = fullname($chatuser, $isteacher); - echo '<li class="info name">'.$fullname.'</li>'; - } - - if ($current) { - echo '</ul></div>'; // room + $fullname = fullname($chatuser); + echo "&nbsp;&nbsp;&nbsp;<font size=1>- $fullname</font><br />"; } + echo "<br />"; return true; } - function chat_cron () { /// Function to be run periodically according to the moodle cron /// This function searches for things that need to be done, such @@ -256,7 +238,7 @@ function chat_get_participants($chatid, $groupid=0) { } //Get students - $students = get_records_sql("SELECT DISTINCT u.id, u.id + $students = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}chat_messages c WHERE c.chatid = '$chatid' $groupselect @@ -309,22 +291,6 @@ function chat_refresh_events($courseid = 0) { return true; } -function chat_force_language($lang) { -/// This function prepares moodle to operate in given language -/// usable when $nomoodlecookie = true; -/// BEWARE: there must be no $course, $USER or $SESSION - global $CFG; - - if(!empty($CFG->courselang)) { - unset($CFG->courselang); - } - if(!empty($CFG->locale)) { - unset($CFG->locale); - } - $CFG->lang = $lang; - moodle_setlocale(); -} - ////////////////////////////////////////////////////////////////////// /// Functions that require some SQL @@ -375,52 +341,20 @@ function chat_get_latest_message($chatid, $groupid=0) { ////////////////////////////////////////////////////////////////////// -// login if not already logged in -function chat_login_user($chatid, $version, $groupid, $course) { +function chat_login_user($chatid, $version="header_js", $groupid=0) { global $USER; - if (($version != 'sockets') and $chatuser = get_record_select('chat_users', "chatid='$chatid' AND userid='$USER->id' AND groupid='$groupid'")) { - $chatuser->version = $version; - $chatuser->ip = $USER->lastIP; - $chatuser->lastping = time(); - $chatuser->lang = current_language(); - if (($chatuser->course != $course->id) - or ($chatuser->userid != $USER->id)) { - return false; - } - if (!update_record('chat_users', $chatuser)) { - return false; - } - } else { - $chatuser->chatid = $chatid; - $chatuser->userid = $USER->id; - $chatuser->groupid = $groupid; - $chatuser->version = $version; - $chatuser->ip = $USER->lastIP; - $chatuser->lastping = $chatuser->firstping = $chatuser->lastmessageping = time(); - $chatuser->sid = random_string(32); - $chatuser->course = $course->id; //caching - needed for current_language too - $chatuser->lang = current_language(); //caching - to resource intensive to find out later + $chatuser->chatid = $chatid; + $chatuser->userid = $USER->id; + $chatuser->groupid = $groupid; + $chatuser->version = $version; + $chatuser->ip = $USER->lastIP; + $chatuser->lastping = $chatuser->firstping = $chatuser->lastmessageping = time(); + $chatuser->sid = random_string(32); - if (!insert_record('chat_users', $chatuser)) { - return false; - } - - if ($version == 'sockets') { - // do not send 'enter' message, chatd will do it - } else { - $message->chatid = $chatuser->chatid; - $message->userid = $chatuser->userid; - $message->groupid = $groupid; - $message->message = 'enter'; - $message->system = 1; - $message->timestamp = time(); - - if (!insert_record('chat_messages', $message)) { - error('Could not insert a chat message!'); - } - } + if (!insert_record("chat_users", $chatuser)) { + return false; } return $chatuser->sid; @@ -433,20 +367,18 @@ function chat_delete_old_users() { $timeold = time() - $CFG->chat_old_ping; - $query = "lastping < '$timeold'"; - - if ($oldusers = get_records_select('chat_users', $query) ) { - delete_records_select('chat_users', $query); + if ($oldusers = get_records_select("chat_users", "lastping < '$timeold'") ) { + delete_records_select("chat_users", "lastping < '$timeold'"); foreach ($oldusers as $olduser) { - $message->chatid = $olduser->chatid; - $message->userid = $olduser->userid; - $message->groupid = $olduser->groupid; - $message->message = 'exit'; - $message->system = 1; + $message->chatid = $olduser->chatid; + $message->userid = $olduser->userid; + $message->groupid = $olduser->groupid; + $message->message = "exit"; + $message->system = 1; $message->timestamp = time(); - if (!insert_record('chat_messages', $message)) { - error('Could not insert a chat message!'); + if (!insert_record("chat_messages", $message)) { + error("Could not insert a chat message!"); } } } @@ -493,23 +425,224 @@ function chat_update_chat_times($chatid=0) { } -function chat_format_message_manually($message, $courseid, $sender, $currentuser) { +function chat_browser_detect($HTTP_USER_AGENT) { + + if(eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}", $HTTP_USER_AGENT, $match) + || eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}", $HTTP_USER_AGENT, $match)) + { + $BName = "Opera"; $BVersion=$match[2]; + } + elseif( eregi("(konqueror)/([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match) ) + { + $BName = "Konqueror"; $BVersion=$match[2]; + } + elseif( eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})", $HTTP_USER_AGENT, $match) ) + { + $BName = "Lynx"; $BVersion=$match[2]; + } + elseif( eregi("(links) \(([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match) ) + { + $BName = "Links"; $BVersion=$match[2]; + } + elseif( eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match) ) + { + $BName = "MSIE"; $BVersion=$match[2]; + } + elseif( eregi("(netscape6)/(6.[0-9]{1,3})", $HTTP_USER_AGENT, $match) ) + { + $BName = "Netscape"; $BVersion=$match[2]; + } + elseif( eregi("mozilla/5", $HTTP_USER_AGENT) ) + { + $BName = "Netscape"; $BVersion="Unknown"; + } + elseif( eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match) ) + { + $BName = "Netscape"; $BVersion=$match[2]; + } + elseif( eregi("w3m", $HTTP_USER_AGENT) ) + { + $BName = "w3m"; $BVersion="Unknown"; + } + else + { + $BName = "Unknown"; $BVersion="Unknown"; + } + + if(eregi("linux", $HTTP_USER_AGENT)) + { + $BPlatform = "Linux"; + } + elseif( eregi("win32", $HTTP_USER_AGENT) ) + { + $BPlatform = "Windows"; + } + elseif( (eregi("(win)([0-9]{2})", $HTTP_USER_AGENT, $match) ) + || (eregi("(windows) ([0-9]{2})", $HTTP_USER_AGENT, $match) )) + { + $BPlatform = "Windows $match[2]"; + } + elseif( eregi("(winnt)([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match) ) + { + $BPlatform = "Windows NT $match[2]"; + } + elseif( eregi("(windows nt)( ){0,1}([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match) ) + { + $BPlatform = "Windows NT $match[3]"; + } + elseif( eregi("mac", $HTTP_USER_AGENT) ) + { + $BPlatform = "Macintosh"; + } + elseif( eregi("(sunos) ([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match) ) + { + $BPlatform = "SunOS $match[2]"; + } + elseif( eregi("(beos) r([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match) ) + { + $BPlatform = "BeOS $match[2]"; + } + elseif( eregi("freebsd", $HTTP_USER_AGENT) ) + { + $BPlatform = "FreeBSD"; + } + elseif( eregi("openbsd", $HTTP_USER_AGENT) ) + { + $BPlatform = "OpenBSD"; + } + elseif( eregi("irix", $HTTP_USER_AGENT) ) + { + $BPlatform = "IRIX"; + } + elseif( eregi("os/2", $HTTP_USER_AGENT) ) + { + $BPlatform = "OS/2"; + } + elseif( eregi("plan9", $HTTP_USER_AGENT) ) + { + $BPlatform = "Plan9"; + } + elseif( eregi("unix", $HTTP_USER_AGENT) + || eregi("hp-ux", $HTTP_USER_AGENT) ) + { + $BPlatform = "Unix"; + } + elseif( eregi("osf", $HTTP_USER_AGENT) ) + { + $BPlatform = "OSF"; + } + else + { + $BPlatform = "Unknown"; + } + + $return["name"] = $BName; + $return["version"] = $BVersion; + $return["platform"] = $BPlatform; + return $return; +} + +function chat_display_version($version, $browser) +{ + GLOBAL $CFG; + + $checked = ""; + if (($version == "sockets") OR ($version == "push_js")) + { + $checked = "checked"; + } + if (($version == "sockets" OR $version == "push_js") + AND + ($browser["name"] == "Lynx" + OR + $browser["name"] == "Links" + OR + $browser["name"] == "w3m" + OR + $browser["name"] == "Konqueror" + OR + ($browser["name"] == "Netscape" AND substr($browser["version"], 0, 1) == "2"))) + { + $checked = ""; + } + if (($version == "text") + AND + ($browser["name"] == "Lynx" + OR + $browser["name"] == "Links" + OR + $browser["name"] == "w3m")) + { + $checked = "checked"; + } + if (($version == "header") + AND + ($browser["name"] == "Konqueror")) + { + $checked = "checked"; + } + if (($version == "header_js") + AND + ($browser["name"] == "Netscape" AND substr($browser["version"], 0, 1) == "2")) + { + $checked = "checked"; + } + ?> + <tr> + <td valign="top"> + <input type="radio" name="chat_chatversion" value="<?php echo $version; ?>"<?php echo $checked; ?>> + </td> + <td valign="top" align="left"> + <font face="Arial" size="2"> + <?php echo $chat_lang["gui_".$version]; ?> + </font> + </td> + </tr> + <?php + +} + +function chat_language_override($language) { + // Override the highest-ranking language variable from current_language() + // And save it so we can restore it again afterwards + global $CFG; + + $oldlang = empty($CFG->courselang) ? NULL : $CFG->courselang; + $CFG->courselang = $language; + + return $oldlang; +} + +function chat_language_restore($language = NULL) { + // Restore the highest-ranking language variable from current_language() + global $CFG; + + if(!empty($language)) { + $CFG->courselang = $language; + } +} + +function chat_format_message_manually($message, $courseid, $sender, $currentuser, $language = NULL) { global $CFG; $output = New stdClass; - $output->beep = false; // by default - $output->refreshusers = false; // by default + $output->beep = false; // by default - // Get some additional info + if(empty($language)) { + $language = current_language(); + } - // But before that :-) let's override get_user_timezone_offset() for this call... messy stuff... - // TODO - FIX THIS TO MANAGE NEW TIMEZONES + $oldcfglang = chat_language_override($language); + + // Get some additional info now that the language has been correctly set + + // But before that :-) let's override get_user_timezone() for this call... messy stuff... $tz = ($currentuser->timezone == 99) ? $CFG->timezone : $currentuser->timezone; $message->strtime = userdate($message->timestamp, get_string('strftimemessage', 'chat'), $tz); $message->picture = print_user_picture($sender->id, 0, $sender->picture, false, true, false); if ($courseid) { - $message->picture = "<a target=\"_new\" href=\"$CFG->wwwroot/user/view.php?id=$sender->id&amp;course=$courseid\">$message->picture</a>"; + $message->picture = "<a target=\"_new\" href=\"$CFG->wwwroot/user/view.php?id=$sender->id&course=$courseid\">$message->picture</a>"; } // Start processing the message @@ -518,12 +651,12 @@ function chat_format_message_manually($message, $courseid, $sender, $currentuser // System event $output->text = $message->strtime.': '.get_string('message'.$message->message, 'chat', fullname($sender)); $output->html = '<table><tr><td style="vertical-align: top;">'.$message->picture.'</td><td>'; - $output->html .= '<font size="2" color="#ccaaaa">'.$output->text.'</font></td></tr></table>'; + $output->html .= '<font size=2 color="#CCAAAA">'.$output->text.'</font></td></tr></table>'; - if($message->message == 'exit' or $message->message == 'enter') { - $output->refreshusers = true; //force user panel refresh ASAP + // Don't forget to reset the language before returning!!! + if(!empty($oldcfglang)) { + $CFG->courselang = $oldcfglang; } - return $output; } @@ -579,26 +712,31 @@ function chat_format_message_manually($message, $courseid, $sender, $currentuser $output->text = strip_tags($outinfo.': '.$outmain); - $output->html = "<table><tr><td valign=\"top\">$message->picture</td><td><font size=\"2\">"; + $output->html = "<table><tr><td valign=top>$message->picture</td><td><font size=2>"; $output->html .= "<font color=\"#888888\">$outinfo</font>"; if ($outmain) { $output->html .= ": $outmain"; } $output->html .= "</font></td></tr></table>"; + // Don't forget to reset the language before returning!!! + chat_language_restore($oldcfglang); + return $output; } -function chat_format_message($message, $courseid, $currentuser) { +function chat_format_message($message, $courseid=0) { /// Given a message object full of information, this function /// formats it appropriately into text and html, then /// returns the formatted data. + global $CFG, $USER; + if (!$user = get_record("user", "id", $message->userid)) { return "Error finding user id = $message->userid"; } - return chat_format_message_manually($message, $courseid, $user, $currentuser); + return chat_format_message_manually($message, $courseid, $user, $USER); } diff --git a/mod/chat/mod.html b/mod/chat/mod.html index 5eb226b56cb..d91e1ed8b75 100644 --- a/mod/chat/mod.html +++ b/mod/chat/mod.html @@ -1,9 +1,9 @@ -<?php // $Id$ +<?php if (!isset($form->name)) { - $form->name = ''; + $form->name = ""; } if (!isset($form->intro)) { - $form->intro = ''; + $form->intro = ""; } if (!isset($form->keepdays)) { $form->keepdays = 30; @@ -19,92 +19,94 @@ } ?> <form name="form" method="post" action="mod.php"> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string('chatname', 'chat')?>:</b></td> +<table cellpadding=5> +<tr> +<tr valign=top> + <td align=right><p><b><?php print_string("chatname", "chat")?>:</b></p></td> <td> - <input type="text" name="name" size="30" value="<?php p($form->name) ?>" alt="<?php print_string('chatname', 'chat') ?>" /> + <input type="text" name="name" size=30 value="<?php p($form->name) ?>"> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string('chatintro', 'chat')?>:</b><br /><br /> +<tr valign=top> + <td align=right><p><b><?php print_string("chatintro", "chat")?>:</b></p> + <font size="1"> <?php - helpbutton('writing', get_string('helpwriting'), 'moodle', true, true); - echo '<br />'; - helpbutton('questions', get_string('helpquestions'), 'moodle', true, true); - echo '<br />'; - emoticonhelpbutton('form', 'intro'); - echo '<br />'; + helpbutton("writing", get_string("helpwriting"), "moodle", true, true); + echo "<br />"; + helpbutton("questions", get_string("helpquestions"), "moodle", true, true); + echo "<br />"; + emoticonhelpbutton("form", "intro"); + echo " <br />"; ?> + </font> </td> <td> - <?php print_textarea($usehtmleditor, 20, 50, 680, 400, 'intro', $form->intro); ?> + <?php print_textarea($usehtmleditor, 20, 50, 680, 400, "intro", $form->intro); ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string('chattime', 'chat') ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("chattime", "chat") ?>:</b></td> <td><?php - print_date_selector('chatday', 'chatmonth', 'chatyear', $form->chattime); - echo '&nbsp;-&nbsp;'; - print_time_selector('chathour', 'chatminute', $form->chattime); + print_date_selector("chatday", "chatmonth", "chatyear", $form->chattime); + echo "&nbsp;-&nbsp;"; + print_time_selector("chathour", "chatminute", $form->chattime); ?></td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string('repeattimes', 'chat') ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("repeattimes", "chat") ?>:</b></td> <td><?php unset($options); - $options[0] = get_string('donotusechattime', 'chat'); - $options[1] = get_string('repeatnone', 'chat'); - $options[2] = get_string('repeatdaily', 'chat'); - $options[3] = get_string('repeatweekly', 'chat'); - choose_from_menu ($options, 'schedule', $form->schedule, '', '', ''); + $options[0] = get_string("donotusechattime", "chat"); + $options[1] = get_string("repeatnone", "chat"); + $options[2] = get_string("repeatdaily", "chat"); + $options[3] = get_string("repeatweekly", "chat"); + choose_from_menu ($options, "schedule", $form->schedule, "", "", ""); ?></td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string('savemessages', 'chat')?>:</b></td> - <td> +<tr valign=top> + <td align=right><p><b><?php print_string("savemessages", "chat")?>:</b></p> + <td> <?php unset($options); - $options[0] = get_string('neverdeletemessages', 'chat'); - $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[21] = get_string('numdays', '', 21); - $options[14] = get_string('numdays', '', 14); - $options[7] = get_string('numdays', '', 7); - $options[2] = get_string('numdays', '', 2); + $options[0] = get_string("neverdeletemessages", "chat"); + $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[21] = get_string("numdays", "", 21); + $options[14] = get_string("numdays", "", 14); + $options[7] = get_string("numdays", "", 7); + $options[2] = get_string("numdays", "", 2); - choose_from_menu ($options, 'keepdays', $form->keepdays, '', '', ''); + choose_from_menu ($options, "keepdays", $form->keepdays, "", "", ""); ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string('studentseereports', 'chat')?>:</b></td> - <td> +<tr valign=top> + <td align=right><p><b><?php print_string("studentseereports", "chat")?>:</b></p> + <td> <?php unset($options); - $options[0] = get_string('no'); - $options[1] = get_string('yes'); - choose_from_menu ($options, 'studentlogs', $form->studentlogs, '', '', ''); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); + choose_from_menu ($options, "studentlogs", $form->studentlogs, "", "", ""); ?> </td> </tr> -<?php print_standard_coursemodule_settings($form); ?> + </table> <center> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string('savechanges') ?>" /> -<input type="submit" name="cancel" value="<?php print_string('cancel') ?>" /> +<input type="hidden" name=course value="<?php p($form->course) ?>"> +<input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name=section value="<?php p($form->section) ?>"> +<input type="hidden" name=module value="<?php p($form->module) ?>"> +<input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<input type="hidden" name=instance value="<?php p($form->instance) ?>"> +<input type="hidden" name=mode value="<?php p($form->mode) ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> +<input type="submit" name=cancel value="<?php print_string("cancel") ?>"> </center> -</form> \ No newline at end of file +</form> diff --git a/mod/chat/pagelib.php b/mod/chat/pagelib.php deleted file mode 100644 index 89bf62816f9..00000000000 --- a/mod/chat/pagelib.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php // $Id$ - -require_once($CFG->libdir.'/pagelib.php'); - -define('PAGE_CHAT_VIEW', 'mod-chat-view'); - -page_map_class(PAGE_CHAT_VIEW, 'page_chat'); - -$DEFINEDPAGES = array(PAGE_CHAT_VIEW); - -/** - * Class that models the behavior of a chat - * - * @author Jon Papaioannou - * @package pages - */ - -class page_chat extends page_generic_activity { - - function init_quick($data) { - if(empty($data->pageid)) { - error('Cannot quickly initialize page: empty course id'); - } - $this->activityname = 'chat'; - parent::init_quick($data); - } - - function print_header($title, $morebreadcrumbs = NULL) { - global $USER, $CFG; - - $this->init_full(); - $replacements = array( - '%fullname%' => format_string($this->activityrecord->name) - ); - foreach($replacements as $search => $replace) { - $title = str_replace($search, $replace, $title); - } - - if($this->courserecord->id == SITEID) { - $breadcrumbs = array(); - } - else { - $breadcrumbs = array($this->courserecord->shortname => $CFG->wwwroot.'/course/view.php?id='.$this->courserecord->id); - } - - $breadcrumbs[get_string('modulenameplural', 'chat')] = $CFG->wwwroot.'/mod/chat/index.php?id='.$this->courserecord->id; - $breadcrumbs[format_string($this->activityrecord->name)] = $CFG->wwwroot.'/mod/chat/view.php?id='.$this->modulerecord->id; - - if(!empty($morebreadcrumbs)) { - $breadcrumbs = array_merge($breadcrumbs, $morebreadcrumbs); - } - - $total = count($breadcrumbs); - $current = 1; - $crumbtext = ''; - foreach($breadcrumbs as $text => $href) { - if($current++ == $total) { - $crumbtext .= ' '.$text; - } - else { - $crumbtext .= ' <a href="'.$href.'">'.$text.'</a> ->'; - } - } - - if(empty($morebreadcrumbs) && $this->user_allowed_editing()) { - $buttons = '<table><tr><td>'.update_module_button($this->modulerecord->id, $this->courserecord->id, get_string('modulename', 'chat')).'</td>'; - if(!empty($CFG->showblocksonmodpages)) { - $buttons .= '<td><form target="'.$CFG->framename.'" method="get" action="view.php">'. - '<input type="hidden" name="id" value="'.$this->modulerecord->id.'" />'. - '<input type="hidden" name="edit" value="'.($this->user_is_editing()?'off':'on').'" />'. - '<input type="submit" value="'.get_string($this->user_is_editing()?'blockseditoff':'blocksediton').'" /></form></td>'; - } - $buttons .= '</tr></table>'; - } - else { - $buttons = '&nbsp;'; - } - print_header($title, $this->courserecord->fullname, $crumbtext, '', '', true, $buttons, navmenu($this->courserecord, $this->modulerecord)); - - } - - function get_type() { - return PAGE_CHAT_VIEW; - } -} - -?> diff --git a/mod/chat/report.php b/mod/chat/report.php index 720bf3ac976..c58aca4f6cd 100644 --- a/mod/chat/report.php +++ b/mod/chat/report.php @@ -1,87 +1,83 @@ -<?php // $Id$ +<?PHP // $Id$ /// This page prints reports and info about chats - require_once('../../config.php'); - require_once('lib.php'); + require_once("../../config.php"); + require_once("lib.php"); - $id = required_param('id', PARAM_INT); - $start = optional_param('start', 0, PARAM_INT); // Start of period - $end = optional_param('end', 0, PARAM_INT); // End of period - $deletesession = optional_param('deletesession', 0, PARAM_BOOL); - $confirmdelete = optional_param('confirmdelete', 0, PARAM_BOOL); + require_variable($id); // Course module ID + optional_variable($groupid, ""); // Group + optional_variable($start, ""); // Start of period + optional_variable($end, ""); // End of period + optional_variable($deletesession, ""); // Delete a session + optional_variable($confirmdelete, ""); // End of period - if (! $cm = get_record('course_modules', 'id', $id)) { - error('Course Module ID was incorrect'); + if (! $cm = get_record("course_modules", "id", $id)) { + error("Course Module ID was incorrect"); } - if (! $chat = get_record('chat', 'id', $cm->instance)) { - error('Course module is incorrect'); + if (! $chat = get_record("chat", "id", $cm->instance)) { + error("Course module is incorrect"); } - if (! $course = get_record('course', 'id', $chat->course)) { - error('Course is misconfigured'); + if (! $course = get_record("course", "id", $chat->course)) { + error("Course is misconfigured"); } - require_login($course->id, false, $cm); + require_login($course->id); - $isteacher = isteacher($course->id); + $isteacher = isteacher($course->id); $isteacheredit = isteacheredit($course->id); if (isguest() or (!$isteacher and !$chat->studentlogs)) { - error('You can not view these chat reports'); + error("You can not view these chat reports"); } - add_to_log($course->id, 'chat', 'report', "report.php?id=$cm->id", $chat->id, $cm->id); + add_to_log($course->id, "chat", "report", "report.php?id=$cm->id", "$chat->id", "$cm->id"); - $strchats = get_string('modulenameplural', 'chat'); - $strchat = get_string('modulename', 'chat'); - $strchatreport = get_string('chatreport', 'chat'); - $strseesession = get_string('seesession', 'chat'); - $strdeletesession = get_string('deletesession', 'chat'); + $strchats = get_string("modulenameplural", "chat"); + $strchat = get_string("modulename", "chat"); + $strchatreport = get_string("chatreport", "chat"); + $strseesession = get_string("seesession", "chat"); + $strdeletesession = get_string("deletesession", "chat"); -/// Print a session if one has been specified +/// Print a session if once has been specified if ($start and $end and !$confirmdelete) { // Show a full transcript - print_header_simple(format_string($chat->name).": $strchatreport", '', - "<a href=\"index.php?id=$course->id\">$strchats</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($chat->name,true)."</a> -> - <a href=\"report.php?id=$cm->id\">$strchatreport</a>", - '', '', true, '', navmenu($course, $cm)); - - /// Check to see if groups are being used here - if ($groupmode = groupmode($course, $cm)) { // Groups are being used - $currentgroup = setup_and_print_groups($course, $groupmode, "report.php?id=$cm->id"); - } else { - $currentgroup = false; - } - - if (!empty($currentgroup)) { + if ($groupid) { $groupselect = " AND groupid = '$currentgroup'"; + $groupparam = "&groupid=$currentgroup"; } else { $groupselect = ""; + $groupparam = ""; } + print_header_simple("$chat->name: $strchatreport", "", + "<a href=\"index.php?id=$course->id\">$strchats</a> -> + <a href=\"view.php?id=$cm->id\">$chat->name</a> -> + <a href=\"report.php?id=$cm->id\">$strchatreport</a>", + "", "", true, "", navmenu($course, $cm)); + if ($deletesession and $isteacheredit) { - notice_yesno(get_string('deletesessionsure', 'chat'), - "report.php?id=$cm->id&amp;deletesession=1&amp;confirmdelete=1&amp;start=$start&amp;end=$end&amp;sesskey=$USER->sesskey", + notice_yesno(get_string("deletesessionsure", "chat"), + "report.php?id=$cm->id&deletesession=1&confirmdelete=1&start=$start&end=$end$groupparam", "report.php?id=$cm->id"); } - if (!$messages = get_records_select('chat_messages', "chatid = $chat->id AND - timestamp >= '$start' AND + if (!$messages = get_records_select("chat_messages", "chatid = $chat->id AND + timestamp >= '$start' AND timestamp <= '$end' $groupselect", "timestamp ASC")) { - print_heading(get_string('nomessages', 'chat')); + print_heading(get_string("nomessages", "chat")); } else { - echo '<p align="center">'.userdate($start).' --> '. userdate($end).'</p>'; + echo "<p align=\"center\">".userdate($start)." --> ". userdate($end)."</p>"; - print_simple_box_start('center'); + print_simple_box_start("center"); foreach ($messages as $message) { // We are walking FORWARDS through messages - $formatmessage = chat_format_message($message, $course->id, $USER); + $formatmessage = chat_format_message($message, $course->id); echo $formatmessage->html; } - print_simple_box_end('center'); + print_simple_box_end("center"); } if (!$deletesession or !$isteacheredit) { @@ -95,12 +91,12 @@ /// Print the Sessions display - print_header_simple(format_string($chat->name).": $strchatreport", '', - "<a href=\"index.php?id=$course->id\">$strchats</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($chat->name,true)."</a> -> $strchatreport", - '', '', true, '', navmenu($course, $cm)); + print_header_simple("$chat->name: $strchatreport", "", + "<a href=\"index.php?id=$course->id\">$strchats</a> -> + <a href=\"view.php?id=$cm->id\">$chat->name</a> -> $strchatreport", + "", "", true, "", navmenu($course, $cm)); - print_heading(format_string($chat->name).': '.get_string('sessions', 'chat')); + print_heading($chat->name.": ".get_string("sessions", "chat")); /// Check to see if groups are being used here @@ -110,20 +106,22 @@ $currentgroup = false; } - if (!empty($currentgroup)) { + if ($currentgroup) { $groupselect = " AND groupid = '$currentgroup'"; + $groupparam = "&groupid=$currentgroup"; } else { $groupselect = ""; + $groupparam = ""; } /// Delete a session if one has been specified - if ($deletesession and $isteacheredit and $confirmdelete and $start and $end and confirm_sesskey()) { - delete_records_select('chat_messages', "chatid = $chat->id AND - timestamp >= '$start' AND + if ($deletesession and $isteacheredit and $confirmdelete and $start and $end) { + delete_records_select("chat_messages", "chatid = $chat->id AND + timestamp >= '$start' AND timestamp <= '$end' $groupselect"); - $strdeleted = get_string('deleted'); - notify("$strdeleted: ".userdate($start).' --> '. userdate($end)); + $strdeleted = get_string("deleted"); + notify("$strdeleted: ".userdate($start)." --> ". userdate($end)); unset($deletesession); } @@ -131,8 +129,8 @@ /// Get the messages if (empty($messages)) { /// May have already got them above - if (!$messages = get_records_select('chat_messages', "chatid = '$chat->id' $groupselect", "timestamp DESC")) { - print_heading(get_string('nomessages', 'chat')); + if (!$messages = get_records_select("chat_messages", "chatid = '$chat->id' $groupselect", "timestamp DESC")) { + print_heading(get_string("nomessages", "chat")); print_footer($course); exit; } @@ -146,19 +144,14 @@ $sessionusers = array(); $lasttime = 0; - $messagesleft = count($messages); - foreach ($messages as $message) { // We are walking BACKWARDS through the messages - - $messagesleft --; // Countdown - if (!$lasttime) { $lasttime = $message->timestamp; } if (!$sessionend) { $sessionend = $message->timestamp; } - if ((($lasttime - $message->timestamp) < $sessiongap) and $messagesleft) { // Same session + if (($lasttime - $message->timestamp) < $sessiongap) { // Same session if ($message->userid and !$message->system) { // Remember user and count messages if (empty($sessionusers[$message->userid])) { $sessionusers[$message->userid] = 1; @@ -166,30 +159,30 @@ $sessionusers[$message->userid] ++; } } - } else { + } else { $sessionstart = $lasttime; if ($sessionend - $sessionstart > 60 and count($sessionusers) > 1) { - echo '<p align="center">'.userdate($sessionstart).' --> '. userdate($sessionend).'</p>'; + echo "<p align=\"center\">".userdate($sessionstart)." --> ". userdate($sessionend)."</p>"; - print_simple_box_start('center'); + print_simple_box_start("center"); arsort($sessionusers); foreach ($sessionusers as $sessionuser => $usermessagecount) { - if ($user = get_record('user', 'id', $sessionuser)) { + if ($user = get_record("user", "id", $sessionuser)) { print_user_picture($user->id, $course->id, $user->picture); - echo '&nbsp;'.fullname($user, $isteacher); + echo "&nbsp;".fullname($user, $isteacher); echo "&nbsp;($usermessagecount)<br />"; } } - echo '<p align="right">'; - echo "<a href=\"report.php?id=$cm->id&amp;start=$sessionstart&amp;end=$sessionend\">$strseesession</a>"; + echo "<p align=\"right\">"; + echo "<a href=\"report.php?id=$cm->id&start=$sessionstart&end=$sessionend$groupparam\">$strseesession</a>"; if ($isteacheredit) { - echo "<br /><a href=\"report.php?id=$cm->id&amp;start=$sessionstart&amp;end=$sessionend&amp;deletesession=1\">$strdeletesession</a>"; + echo "<br /><a href=\"report.php?id=$cm->id&start=$sessionstart&end=$sessionend&deletesession=1$groupparam\">$strdeletesession</a>"; } - echo '</p>'; + echo "</p>"; print_simple_box_end(); } diff --git a/mod/chat/restorelib.php b/mod/chat/restorelib.php index 52192bc56f6..ea4088d8086 100644 --- a/mod/chat/restorelib.php +++ b/mod/chat/restorelib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //chat mods @@ -52,7 +52,7 @@ $newid = insert_record ("chat",$chat); //Do some output - echo "<li>".get_string("modulename","chat")." \"".format_string(stripslashes($chat->name),true)."\"</li>"; + echo "<ul><li>".get_string("modulename","chat")." \"".$chat->name."\"<br>"; backup_flush(300); if ($newid) { @@ -67,6 +67,10 @@ } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -122,7 +126,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -175,19 +179,8 @@ $log->url = "index.php?id=".$log->course; $status = true; break; - case "report": - if ($log->cmid) { - //Get the new_id of the module (to recode the info field) - $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); - if ($mod) { - $log->url = "report.php?id=".$log->cmid; - $log->info = $mod->new_id; - $status = true; - } - } - break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored<br />"; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>"; //Debug break; } diff --git a/mod/chat/users.php b/mod/chat/users.php new file mode 100644 index 00000000000..e9f4d8fec4b --- /dev/null +++ b/mod/chat/users.php @@ -0,0 +1,110 @@ +<?php + +include("../../config.php"); +include("lib.php"); + +require_variable($chat_sid); +optional_variable($groupid, 0); + +if (!$chatuser = get_record("chat_users", "sid", $chat_sid)) { + echo "Not logged in!"; + die; +} + +if (!$chat = get_record("chat", "id", $chatuser->chatid)) { + error("No chat found"); +} + +require_login($chat->course); + + +if (!$chat = get_record("chat", "id", $chatuser->chatid)) { + error("Could not find chat! id = $chatuser->chatid"); +} + +if (isset($_GET['chat_enter'])) { + $message->chatid = $chatuser->chatid; + $message->userid = $chatuser->userid; + $message->groupid = $groupid; + $message->message = "enter"; + $message->system = 1; + $message->timestamp = time(); + + if (!insert_record("chat_messages", $message)) { + error("Could not insert a chat message!"); + } +} + +if (isset($_GET['beep'])) { + $message->chatid = $chatuser->chatid; + $message->userid = $chatuser->userid; + $message->groupid = $groupid; + $message->message = "beep $beep"; + $message->system = 0; + $message->timestamp = time(); + + if (!insert_record("chat_messages", $message)) { + error("Could not insert a chat message!"); + } + + $chatuser->lastmessageping = time(); // A beep is a ping ;-) + update_record("chat_users", $chatuser); +} + +$chatuser->lastping = time(); +update_record("chat_users", $chatuser); + +/// Delete users who are using text version and are old + +chat_delete_old_users(); + + +/// Print headers + +header("Expires: Wed, 4 Oct 1978 09:32:45 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); +header("Cache-Control: no-cache, must-revalidate"); +header("Pragma: no-cache"); +header("Content-Type: text/html"); +header("Refresh: $CFG->chat_refresh_userlist; URL=users.php?chat_sid=$chat_sid&groupid=$groupid"); + +print_header(); + +$timenow = time(); + +$stridle = get_string("idle", "chat"); +$strbeep = get_string("beep", "chat"); +$str->day = get_string("day"); +$str->days = get_string("days"); +$str->hour = get_string("hour"); +$str->hours = get_string("hours"); +$str->min = get_string("min"); +$str->mins = get_string("mins"); +$str->sec = get_string("sec"); +$str->secs = get_string("secs"); + +/// Get list of users + +if (!$chatusers = chat_get_users($chatuser->chatid, $groupid)) { + print_string("errornousers", "chat"); + exit; +} + + +echo "<table width=\"100%\">"; +foreach ($chatusers as $chatuser) { + $lastping = $timenow - $chatuser->lastmessageping; + echo "<tr><td width=35>"; + echo "<a target=\"_new\" onClick=\"return openpopup('/user/view.php?id=$chatuser->id&course=$chat->course','user$chatuser->id','');\" href=\"$CFG->wwwroot/user/view.php?id=$chatuser->id&course=$chat->course\">"; + print_user_picture($chatuser->id, 0, $chatuser->picture, false, false, false); + echo "</a></td><td valign=center>"; + echo "<p><font size=1>"; + echo fullname($chatuser)."<br />"; + echo "<font color=\"#888888\">$stridle: ".format_time($lastping, $str)."</font>"; + echo " <a href=\"users.php?chat_sid=$chat_sid&beep=$chatuser->id&groupid=$groupid\">$strbeep</a>"; + echo "</font></p>"; + echo "<td></tr>"; +} +echo "</table>"; + +?> diff --git a/mod/chat/version.php b/mod/chat/version.php index 7dcc3ebce16..e64d9584a73 100644 --- a/mod/chat/version.php +++ b/mod/chat/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ ///////////////////////////////////////////////////////////////////////////////// /// Code fragment to define the version of chat /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2005031000; // The (date) version of this module -$module->requires = 2005031000; // Requires this Moodle version +$module->version = 2004060400; // The (date) version of this module +$module->requires = 2004052501; // Requires this Moodle version $module->cron = 300; // How often should cron check this module (seconds)? ?> diff --git a/mod/chat/view.php b/mod/chat/view.php index 619bb3a4f9b..e611f64c639 100644 --- a/mod/chat/view.php +++ b/mod/chat/view.php @@ -1,101 +1,77 @@ -<?php // $Id$ +<?PHP // $Id$ /// This page prints a particular instance of chat - require_once('../../config.php'); - require_once('lib.php'); - require_once($CFG->libdir.'/blocklib.php'); - require_once('pagelib.php'); + require_once("../../config.php"); + require_once("lib.php"); - $id = optional_param('id', 0, PARAM_INT); - $c = optional_param('c', 0, PARAM_INT); - $edit = optional_param('edit', ''); + optional_variable($id); // Course Module ID, or + optional_variable($c); // chat ID if ($id) { - if (! $cm = get_record('course_modules', 'id', $id)) { - error('Course Module ID was incorrect'); + if (! $cm = get_record("course_modules", "id", $id)) { + error("Course Module ID was incorrect"); } - - if (! $course = get_record('course', 'id', $cm->course)) { - error('Course is misconfigured'); + + if (! $course = get_record("course", "id", $cm->course)) { + error("Course is misconfigured"); } chat_update_chat_times($cm->instance); - - if (! $chat = get_record('chat', 'id', $cm->instance)) { - error('Course module is incorrect'); + + if (! $chat = get_record("chat", "id", $cm->instance)) { + error("Course module is incorrect"); } } else { chat_update_chat_times($c); - if (! $chat = get_record('chat', 'id', $c)) { - error('Course module is incorrect'); + if (! $chat = get_record("chat", "id", $c)) { + error("Course module is incorrect"); } - if (! $course = get_record('course', 'id', $chat->course)) { - error('Course is misconfigured'); + if (! $course = get_record("course", "id", $chat->course)) { + error("Course is misconfigured"); } - if (! $cm = get_coursemodule_from_instance('chat', $chat->id, $course->id)) { - error('Course Module ID was incorrect'); + if (! $cm = get_coursemodule_from_instance("chat", $chat->id, $course->id)) { + error("Course Module ID was incorrect"); } } - require_course_login($course, true, $cm); + require_course_login($course); - add_to_log($course->id, 'chat', 'view', "view.php?id=$cm->id", $chat->id, $cm->id); - -// Initialize $PAGE, compute blocks - - $PAGE = page_create_instance($chat->id); - $pageblocks = blocks_setup($PAGE); - $blocks_preferred_width = bounded_number(180, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT]), 210); + add_to_log($course->id, "chat", "view", "view.php?id=$cm->id", $chat->id, $cm->id); /// Print the page header - $strenterchat = get_string('enterchat', 'chat'); - $stridle = get_string('idle', 'chat'); - $strcurrentusers = get_string('currentusers', 'chat'); - $strnextsession = get_string('nextsession', 'chat'); + $strchats = get_string("modulenameplural", "chat"); + $strchat = get_string("modulename", "chat"); + $strenterchat = get_string("enterchat", "chat"); + $stridle = get_string("idle", "chat"); + $strcurrentusers = get_string("currentusers", "chat"); + $strnextsession = get_string("nextsession", "chat"); - if (!empty($edit) && $PAGE->user_allowed_editing()) { - if ($edit == 'on') { - $USER->editing = true; - } else if ($edit == 'off') { - $USER->editing = false; - } - } - - $PAGE->print_header($course->shortname.': %fullname%'); - - echo '<table id="layout-table"><tr>'; - - if(!empty($CFG->showblocksonmodpages) && (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $PAGE->user_is_editing())) { - echo '<td style="width: '.$blocks_preferred_width.'px;" id="left-column">'; - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); - echo '</td>'; - } - - echo '<td id="middle-column">'; + print_header_simple("$chat->name", "", + "<A HREF=index.php?id=$course->id>$strchats</A> -> $chat->name", + "", "", true, update_module_button($cm->id, $course->id, $strchat), + navmenu($course, $cm)); if (($chat->studentlogs or isteacher($course->id)) and !isguest()) { - echo '<div class="reportlink">'; - echo "<a href=\"report.php?id=$cm->id\">". - get_string('viewreport', 'chat').'</a>'; - echo '</div>'; + echo "<p align=right><a href=\"report.php?id=$cm->id\">". + get_string("viewreport", "chat")."</a></p>"; } - print_heading(format_string($chat->name)); + print_heading($chat->name); /// Check to see if groups are being used here if ($groupmode = groupmode($course, $cm)) { // Groups are being used $currentgroup = setup_and_print_groups($course, $groupmode, "view.php?id=$cm->id"); } else { - $currentgroup = 0; + $currentgroup = false; } if ($currentgroup) { $groupselect = " AND groupid = '$currentgroup'"; - $groupparam = "&amp;groupid=$currentgroup"; + $groupparam = "&groupid=$currentgroup"; } else { $groupselect = ""; $groupparam = ""; @@ -103,10 +79,28 @@ /// Print the main part of the page + // Do the browser-detection etc later on. + // $chatversion = "header_js"; + + // $browser = chat_browser_detect($HTTP_USER_AGENT); + + // print_object($browser); + + //if ($CFG->chatsocketserver == true) { + // chat_display_version("sockets", $browser); + //} else { + // chat_display_version("push_js", $browser); + // } + // chat_display_version("header_js", $browser); + // chat_display_version("header", $browser); + // chat_display_version("box", $browser); + // chat_display_version("text", $browser); + + if (!isguest()) { - print_simple_box_start('center'); - link_to_popup_window ("/mod/chat/gui_$CFG->chat_method/index.php?id=$chat->id$groupparam", - "chat$course->id$chat->id$groupparam", "$strenterchat", 500, 700, get_string('modulename', 'chat')); + print_simple_box_start("center"); + link_to_popup_window ("/mod/chat/gui_$CFG->chat_method/index.php?id=$chat->id$groupparam", + "chat$course->id$chat->id$groupparam", "$strenterchat", 500, 700, $strchat); print_simple_box_end(); } else { notice(get_string('noguests', 'chat')); @@ -115,49 +109,47 @@ if ($chat->chattime and $chat->schedule) { // A chat is scheduled if (abs($USER->timezone) > 13) { - $timezone = get_string('serverlocaltime'); + $timezone = get_string("serverlocaltime"); } else if ($USER->timezone < 0) { - $timezone = 'GMT'.$USER->timezone; + $timezone = "GMT".$USER->timezone; } else { - $timezone = 'GMT+'.$USER->timezone; + $timezone = "GMT+".$USER->timezone; } echo "<p align=\"center\">$strnextsession: ".userdate($chat->chattime)." ($timezone)</p>"; } else { - echo '<br />'; + echo "<br />"; } if ($chat->intro) { - print_simple_box(format_text($chat->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); - echo '<br />'; + print_simple_box( format_text($chat->intro) , "center"); + echo "<br />"; } chat_delete_old_users(); if ($chatusers = chat_get_users($chat->id, $currentgroup)) { $timenow = time(); - print_simple_box_start('center'); + print_simple_box_start("center"); print_heading($strcurrentusers); - echo '<table width="100%">'; + echo "<table width=\"100%\">"; foreach ($chatusers as $chatuser) { $lastping = $timenow - $chatuser->lastmessageping; - echo '<tr><td width="35">'; - echo "<a href=\"$CFG->wwwroot/user/view.php?id=$chatuser->id&amp;course=$chat->course\">"; + echo "<tr><td width=35>"; + echo "<a href=\"$CFG->wwwroot/user/view.php?id=$chatuser->id&course=$chat->course\">"; print_user_picture($chatuser->id, 0, $chatuser->picture, false, false, false); - echo '</a></td><td valign="center">'; - echo '<p><font size="1">'; + echo "</a></td><td valign=center>"; + echo "<p><font size=1>"; echo fullname($chatuser).'<br />'; echo "<font color=\"#888888\">$stridle: ".format_time($lastping)."</font>"; - echo '</font></p>'; - echo '<td></tr>'; + echo "</font></p>"; + echo "<td></tr>"; } - echo '</table>'; + echo "</table>"; print_simple_box_end(); } /// Finish the page - echo '</td></tr></table>'; - print_footer($course); ?> diff --git a/mod/choice/backuplib.php b/mod/choice/backuplib.php index 1289e8586af..a3d3115c39f 100644 --- a/mod/choice/backuplib.php +++ b/mod/choice/backuplib.php @@ -1,21 +1,16 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //choice mods //This is the "graphical" structure of the choice mod: // // choice - // (CL,pk->id)----------| - // | | - // | | - // | | - // choice_options | - // (UL,pk->id, fk->choiceid) | - // | | - // | | - // | | - // choice_answers | - // (UL,pk->id, fk->choiceid, fk->optionid) + // (CL,pk->id) + // | + // | + // | + // choice_answers + // (UL,pk->id, fk->choice) // // Meaning: pk->primary key field of the table // fk->foreign key to link with parent @@ -44,21 +39,21 @@ fwrite ($bf,full_tag("NAME",4,false,$choice->name)); fwrite ($bf,full_tag("TEXT",4,false,$choice->text)); fwrite ($bf,full_tag("FORMAT",4,false,$choice->format)); - fwrite ($bf,full_tag("PUBLISH",4,false,$choice->publish)); - fwrite ($bf,full_tag("RELEASE",4,false,$choice->release)); - fwrite ($bf,full_tag("DISPLAY",4,false,$choice->display)); - fwrite ($bf,full_tag("ALLOWUPDATE",4,false,$choice->allowupdate)); + fwrite ($bf,full_tag("ANSWER1",4,false,$choice->answer1)); + fwrite ($bf,full_tag("ANSWER2",4,false,$choice->answer2)); + fwrite ($bf,full_tag("ANSWER3",4,false,$choice->answer3)); + fwrite ($bf,full_tag("ANSWER4",4,false,$choice->answer4)); + fwrite ($bf,full_tag("ANSWER5",4,false,$choice->answer5)); + fwrite ($bf,full_tag("ANSWER6",4,false,$choice->answer6)); fwrite ($bf,full_tag("SHOWUNANSWERED",4,false,$choice->showunanswered)); - fwrite ($bf,full_tag("LIMITANSWERS",4,false,$choice->limitanswers)); fwrite ($bf,full_tag("TIMEOPEN",4,false,$choice->timeopen)); fwrite ($bf,full_tag("TIMECLOSE",4,false,$choice->timeclose)); + fwrite ($bf,full_tag("PUBLISH",4,false,$choice->publish)); + fwrite ($bf,full_tag("RELEASE",4,false,$choice->release)); + fwrite ($bf,full_tag("ALLOWUPDATE",4,false,$choice->allowupdate)); fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$choice->timemodified)); - - //Now backup choice_options - $status = backup_choice_options($bf,$preferences,$choice->id); - //if we've selected to backup users info, then execute backup_choice_answers - if ($preferences->mods["choice"]->userinfo && $status) { + if ($preferences->mods["choice"]->userinfo) { $status = backup_choice_answers($bf,$preferences,$choice->id); } //End mod @@ -75,8 +70,8 @@ $status = true; - $choice_answers = get_records("choice_answers","choiceid",$choice,"id"); - //If there is answers + $choice_answers = get_records("choice_answers","choice",$choice,"id"); + //If there is submissions if ($choice_answers) { //Write start tag $status =fwrite ($bf,start_tag("ANSWERS",4,true)); @@ -84,10 +79,10 @@ foreach ($choice_answers as $cho_ans) { //Start answer $status =fwrite ($bf,start_tag("ANSWER",5,true)); - //Print answer contents + //Print submission contents fwrite ($bf,full_tag("ID",6,false,$cho_ans->id)); fwrite ($bf,full_tag("USERID",6,false,$cho_ans->userid)); - fwrite ($bf,full_tag("OPTIONID",6,false,$cho_ans->optionid)); + fwrite ($bf,full_tag("CHOICE_ANSWER",6,false,$cho_ans->answer)); fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$cho_ans->timemodified)); //End answer $status =fwrite ($bf,end_tag("ANSWER",5,true)); @@ -97,37 +92,6 @@ } return $status; } - - - //backup choice_options contents (executed from choice_backup_mods) - function backup_choice_options ($bf,$preferences,$choice) { - - global $CFG; - - $status = true; - - $choice_options = get_records("choice_options","choiceid",$choice,"id"); - //If there is options - if ($choice_options) { - //Write start tag - $status =fwrite ($bf,start_tag("OPTIONS",4,true)); - //Iterate over each answer - foreach ($choice_options as $cho_opt) { - //Start option - $status =fwrite ($bf,start_tag("OPTION",5,true)); - //Print option contents - fwrite ($bf,full_tag("ID",6,false,$cho_opt->id)); - fwrite ($bf,full_tag("TEXT",6,false,$cho_opt->text)); - fwrite ($bf,full_tag("MAXANSWERS",6,false,$cho_opt->maxanswers)); - fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$cho_opt->timemodified)); - //End answer - $status =fwrite ($bf,end_tag("OPTION",5,true)); - } - //Write end tag - $status =fwrite ($bf,end_tag("OPTIONS",4,true)); - } - return $status; - } ////Return an array of info (name,value) function choice_check_backup_mods($course,$user_data=false,$backup_unique_code) { @@ -153,6 +117,9 @@ + + + // INTERNAL FUNCTIONS. BASED IN THE MOD STRUCTURE //Returns an array of choices id @@ -170,10 +137,10 @@ global $CFG; - return get_records_sql ("SELECT s.id , s.choiceid + return get_records_sql ("SELECT s.id , s.choice FROM {$CFG->prefix}choice_answers s, {$CFG->prefix}choice a WHERE a.course = '$course' AND - s.choiceid = a.id"); + s.choice = a.id"); } ?> diff --git a/mod/choice/db/mysql.php b/mod/choice/db/mysql.php index 25d118ec897..cb9d2863d73 100644 --- a/mod/choice/db/mysql.php +++ b/mod/choice/db/mysql.php @@ -1,9 +1,6 @@ -<?php // $Id$ +<?PHP // $Id$ function choice_upgrade($oldversion) { - - global $CFG; - // This function does anything necessary to upgrade // older versions to match current functionality @@ -46,79 +43,6 @@ function choice_upgrade($oldversion) { modify_database("", "UPDATE prefix_choice SET publish = publish - 1 WHERE publish > 0;"); } - if ($oldversion < 2004111200){ // drop first to avoid conflicts when upgrading from 1.4+ - execute_sql("ALTER TABLE {$CFG->prefix}choice DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}choice_answers DROP INDEX choice;",false); - execute_sql("ALTER TABLE {$CFG->prefix}choice_answers DROP INDEX userid;",false); - - modify_database('','ALTER TABLE prefix_choice ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_choice_answers ADD INDEX choice (choice);'); - modify_database('','ALTER TABLE prefix_choice_answers ADD INDEX userid (userid);'); - } - - if ($oldversion < 2005033001){ - if (execute_sql("CREATE TABLE {$CFG->prefix}choice_options ( - `id` int(10) unsigned NOT NULL auto_increment, - `choiceid` int(10) unsigned NOT NULL default '0', - `text` TEXT, - `timemodified` int(10) NOT NULL default '0', - PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY choiceid (choiceid) - ) TYPE=MyISAM;")) { - - table_column('choice_answers', 'choice', 'choiceid', 'integer', '10', 'unsigned', 0, 'not null'); - table_column('choice_answers', 'answer', 'optionid', 'integer', '10', 'unsigned', 0, 'not null'); - - table_column('choice', '', 'display', 'integer', '4', 'unsigned', 0, 'not null', 'release'); - - - /// move old answers from choice to choice_options - - if ($choices = get_records('choice')) { - foreach ($choices as $choice) { - for ($i=1; $i<=6; $i++) { // We used to have six columns - $option = new stdClass; - $option->text = $choice->{'answer'.$i}; - if ($option->text) { /// Don't bother with blank options - $option->choiceid = $choice->id; - $option->timemodified = $choice->timemodified; - if ($option->id = insert_record('choice_options', $option)) { - /// Update all the user answers to fit the new value - execute_sql("UPDATE {$CFG->prefix}choice_answers - SET optionid='$option->id' - WHERE choiceid='$choice->id' - AND optionid='$i'"); - } - } - } - } - } - - //drop old fields - - modify_database('','ALTER TABLE prefix_choice DROP `answer1`;'); - modify_database('','ALTER TABLE prefix_choice DROP `answer2`;'); - modify_database('','ALTER TABLE prefix_choice DROP `answer3`;'); - modify_database('','ALTER TABLE prefix_choice DROP `answer4`;'); - modify_database('','ALTER TABLE prefix_choice DROP `answer5`;'); - modify_database('','ALTER TABLE prefix_choice DROP `answer6`;'); - - } else { - notify('SERIOUS PROBLEM OCCURRED WHILE UPGRADING A TABLE - you may have to manually upgrade your tables ... see mod/choice/db/mysql.php'); - return false; - } - } - - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $wtm->update( 'choice','text','format' ); - } - if ($oldversion < 2005041500) { //new limit feature - table_column('choice', '', 'limitanswers', 'TINYINT', '2', 'unsigned', 0, 'not null', 'showunanswered'); - table_column('choice_options', '', 'maxanswers', 'INTEGER', '10', 'unsigned', 0, 'null', 'text'); - } return true; } diff --git a/mod/choice/db/mysql.sql b/mod/choice/db/mysql.sql index 20491bee19d..8c2cbea7453 100755 --- a/mod/choice/db/mysql.sql +++ b/mod/choice/db/mysql.sql @@ -20,17 +20,21 @@ CREATE TABLE prefix_choice ( name varchar(255) NOT NULL default '', text text NOT NULL, format tinyint(2) unsigned NOT NULL default '0', + answer1 varchar(255) NOT NULL default 'Yes', + answer2 varchar(255) NOT NULL default 'No', + answer3 varchar(255) default NULL, + answer4 varchar(255) default NULL, + answer5 varchar(255) default NULL, + answer6 varchar(255) default NULL, publish tinyint(2) unsigned NOT NULL default '0', release tinyint(2) unsigned NOT NULL default '0', - display tinyint(4) unsigned NOT NULL default '0', allowupdate tinyint(2) unsigned NOT NULL default '0', - showunanswered tinyint(2) unsigned NOT NULL default '0', limitanswers tinyint(2) unsigned NOT NULL default '0', + showunanswered tinyint(2) unsigned NOT NULL default '0', timeopen int(10) unsigned NOT NULL default '0', timeclose int(10) unsigned NOT NULL default '0', timemodified int(10) unsigned NOT NULL default '0', PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY course (course) + UNIQUE KEY id (id) ) TYPE=MyISAM COMMENT='Available choices are stored here.'; @@ -42,31 +46,12 @@ CREATE TABLE prefix_choice ( CREATE TABLE prefix_choice_answers ( id int(10) unsigned NOT NULL auto_increment, - choiceid int(10) unsigned NOT NULL default '0', + choice int(10) unsigned NOT NULL default '0', userid int(10) unsigned NOT NULL default '0', - optionid int(10) NOT NULL default '0', + answer tinyint(4) NOT NULL default '0', timemodified int(10) NOT NULL default '0', PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY userid (userid), - KEY choiceid (choiceid) -) TYPE=MyISAM; - - -# -------------------------------------------------------- - -# -# Table structure for table `choice_options` -# - -CREATE TABLE prefix_choice_options ( - id int(10) unsigned NOT NULL auto_increment, - choiceid int(10) unsigned NOT NULL default '0', - `text` TEXT, maxanswers int(10) unsigned NULL default '0', - timemodified int(10) NOT NULL default '0', - PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY choiceid (choiceid) + UNIQUE KEY id (id) ) TYPE=MyISAM; # diff --git a/mod/choice/db/oci8po.php b/mod/choice/db/oci8po.php index 70ad03e55c1..75bf1f2c76d 100755 --- a/mod/choice/db/oci8po.php +++ b/mod/choice/db/oci8po.php @@ -1,4 +1,4 @@ -<?php +<?PHP function choice_upgrade($oldversion) { // This function does anything necessary to upgrade diff --git a/mod/choice/db/postgres7.php b/mod/choice/db/postgres7.php index c67f0ad5576..1d4062fc63c 100644 --- a/mod/choice/db/postgres7.php +++ b/mod/choice/db/postgres7.php @@ -1,9 +1,6 @@ -<?php // $Id$ +<?PHP // $Id$ function choice_upgrade($oldversion) { - - global $CFG; - // This function does anything necessary to upgrade // older versions to match current functionality @@ -32,65 +29,9 @@ function choice_upgrade($oldversion) { modify_database("", "UPDATE prefix_choice SET publish = publish - 1 WHERE publish > 0;"); } - if ($oldversion < 2004111200) { // drop first to avoid conflicts when upgrading from 1.4+ - execute_sql("DROP INDEX {$CFG->prefix}choice_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}choice_answers_choice_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}choice_answers_userid_idx;",false); - - modify_database('','CREATE INDEX prefix_choice_course_idx ON prefix_choice (course);'); - modify_database('','CREATE INDEX prefix_choice_answers_choice_idx ON prefix_choice_answers (choice);'); - modify_database('','CREATE INDEX prefix_choice_answers_userid_idx ON prefix_choice_answers (userid);'); - } - if ($oldversion < 2005033000){ - if (execute_sql("CREATE TABLE {$CFG->prefix}choice_options (id SERIAL PRIMARY KEY, choiceid integer NOT NULL default '0', text TEXT, timemodified integer NOT NULL default '0');") ) { - execute_sql("CREATE INDEX {$CFG->prefix}choice_options_choice_idx ON {$CFG->prefix}choice_options (choiceid);"); - - table_column('choice_answers', 'choice', 'choiceid', 'integer', '10', 'unsigned', 0, 'not null'); - table_column('choice_answers', 'answer', 'optionid', 'integer', '10', 'unsigned', 0, 'not null'); - table_column('choice', '', 'display', 'integer', '4', 'unsigned', 0, 'not null', 'release'); - - // move old answers from choice to choice_options - if ($choices = get_records('choice')) { - foreach ($choices as $choice) { - for ($i=1; $i<=6; $i++) { // We used to have six columns - $option = new stdClass; - $option->text = $choice->{'answer'.$i}; - if ($option->text) { /// Don't bother with blank options - $option->choiceid = $choice->id; - $option->timemodified = $choice->timemodified; - if ($option->id = insert_record('choice_options', $option)) { - /// Update all the user answers to fit the new value - execute_sql("UPDATE {$CFG->prefix}choice_answers - SET optionid={$option->id} - WHERE choiceid={$choice->id} - AND optionid={$i}"); - } - } - } - } - } - - // drop old fields - modify_database('','ALTER TABLE prefix_choice DROP answer1;'); - modify_database('','ALTER TABLE prefix_choice DROP answer2;'); - modify_database('','ALTER TABLE prefix_choice DROP answer3;'); - modify_database('','ALTER TABLE prefix_choice DROP answer4;'); - modify_database('','ALTER TABLE prefix_choice DROP answer5;'); - modify_database('','ALTER TABLE prefix_choice DROP answer6;'); - - } - } - - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $wtm->update( 'choice','text','format' ); - } - if ($oldversion < 2005041500) { //new limit feature - table_column('choice', '', 'limitanswers', 'INTEGER', '2', 'unsigned', 0, 'not null', 'showunanswered'); - table_column('choice_options', '', 'maxanswers', 'INTEGER', '10', 'unsigned', 0, 'null', 'text'); - } return true; } + ?> + diff --git a/mod/choice/db/postgres7.sql b/mod/choice/db/postgres7.sql index 5cae84ec3ff..114425c294a 100755 --- a/mod/choice/db/postgres7.sql +++ b/mod/choice/db/postgres7.sql @@ -20,18 +20,21 @@ CREATE TABLE prefix_choice ( name varchar(255) NOT NULL default '', text text NOT NULL default '', format integer NOT NULL default '0', + answer1 varchar(255) NOT NULL default 'Yes', + answer2 varchar(255) NOT NULL default 'No', + answer3 varchar(255) default NULL, + answer4 varchar(255) default NULL, + answer5 varchar(255) default NULL, + answer6 varchar(255) default NULL, showunanswered integer NOT NULL default '0', - limitanswers integer NOT NULL default '0', publish integer NOT NULL default '0', release integer NOT NULL default '0', - display integer NOT NULL default '0', allowupdate integer NOT NULL default '0', timeopen integer NOT NULL default '0', timeclose integer NOT NULL default '0', timemodified integer NOT NULL default '0' ); -CREATE INDEX prefix_choice_course_idx ON prefix_choice (course); # -------------------------------------------------------- @@ -41,31 +44,12 @@ CREATE INDEX prefix_choice_course_idx ON prefix_choice (course); CREATE TABLE prefix_choice_answers ( id SERIAL PRIMARY KEY, - choiceid integer NOT NULL default '0', + choice integer NOT NULL default '0', userid integer NOT NULL default '0', - optionid integer NOT NULL default '0', + answer integer NOT NULL default '0', timemodified integer NOT NULL default '0' ); -CREATE INDEX prefix_choice_responses_choice_idx ON prefix_choice_responses (choiceid); -CREATE INDEX prefix_choice_responses_userid_idx ON prefix_choice_responses (userid); - -# -------------------------------------------------------- - -# -# Table structure for table `choice_options` -# - -CREATE TABLE prefix_choice_options ( - id SERIAL PRIMARY KEY, - choiceid integer NOT NULL default '0', - text TEXT, - maxanswers integer NULL default '0', - timemodified integer NOT NULL default '0' -); - -CREATE INDEX prefix_choice_answers_choice_idx ON prefix_choice_answers (choice); - # # Dumping data for table `log_display` # diff --git a/mod/choice/index.php b/mod/choice/index.php index 0da26a1c043..a90f67f371b 100644 --- a/mod/choice/index.php +++ b/mod/choice/index.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); @@ -26,7 +26,7 @@ if ( isset($USER->id) and $allanswers = get_records("choice_answers", "userid", $USER->id)) { foreach ($allanswers as $aa) { - $answers[$aa->choiceid] = $aa; + $answers[$aa->choice] = $aa; } } else { @@ -38,13 +38,13 @@ if ($course->format == "weeks") { $table->head = array (get_string("week"), get_string("question"), get_string("answer")); - $table->align = array ("center", "left", "left"); + $table->align = array ("CENTER", "LEFT", "LEFT"); } else if ($course->format == "topics") { $table->head = array (get_string("topic"), get_string("question"), get_string("answer")); - $table->align = array ("center", "left", "left"); + $table->align = array ("CENTER", "LEFT", "LEFT"); } else { $table->head = array (get_string("question"), get_string("answer")); - $table->align = array ("left", "left"); + $table->align = array ("LEFT", "LEFT"); } $currentsection = ""; @@ -55,8 +55,8 @@ } else { $answer = ""; } - if (!empty($answer->optionid)) { - $aa = format_string(choice_get_option_text($choice, $answer->optionid)); + if (!empty($answer->answer)) { + $aa = choice_get_answer($choice, $answer->answer); } else { $aa = ""; } @@ -74,10 +74,10 @@ //Calculate the href if (!$choice->visible) { //Show dimmed if the mod is hidden - $tt_href = "<a class=\"dimmed\" href=\"view.php?id=$choice->coursemodule\">".format_string($choice->name,true)."</a>"; + $tt_href = "<a class=\"dimmed\" href=\"view.php?id=$choice->coursemodule\">$choice->name</a>"; } else { //Show normal if the mod is visible - $tt_href = "<a href=\"view.php?id=$choice->coursemodule\">".format_string($choice->name,true)."</a>"; + $tt_href = "<a href=\"view.php?id=$choice->coursemodule\">$choice->name</a>"; } if ($course->format == "weeks" || $course->format == "topics") { $table->data[] = array ($printsection, $tt_href, $aa); diff --git a/mod/choice/lib.php b/mod/choice/lib.php index 55acee6e8ea..73c8e21f935 100644 --- a/mod/choice/lib.php +++ b/mod/choice/lib.php @@ -1,35 +1,32 @@ -<?php // $Id$ +<?PHP // $Id$ + +$CHOICE_MAX_NUMBER = 6; $COLUMN_HEIGHT = 300; -define('CHOICE_PUBLISH_ANONYMOUS', '0'); -define('CHOICE_PUBLISH_NAMES', '1'); +define("CHOICE_PUBLISH_ANONYMOUS", "0"); +define("CHOICE_PUBLISH_NAMES", "1"); -define('CHOICE_RELEASE_NOT', '0'); -define('CHOICE_RELEASE_AFTER_ANSWER', '1'); -define('CHOICE_RELEASE_AFTER_CLOSE', '2'); -define('CHOICE_RELEASE_ALWAYS', '3'); +define("CHOICE_RELEASE_NOT", "0"); +define("CHOICE_RELEASE_AFTER_ANSWER", "1"); +define("CHOICE_RELEASE_AFTER_CLOSE", "2"); +define("CHOICE_RELEASE_ALWAYS", "3"); -define('CHOICE_DISPLAY_HORIZONTAL', '0'); -define('CHOICE_DISPLAY_VERTICAL', '1'); +$CHOICE_PUBLISH = array (CHOICE_PUBLISH_ANONYMOUS => get_string("publishanonymous", "choice"), + CHOICE_PUBLISH_NAMES => get_string("publishnames", "choice")); -$CHOICE_PUBLISH = array (CHOICE_PUBLISH_ANONYMOUS => get_string('publishanonymous', 'choice'), - CHOICE_PUBLISH_NAMES => get_string('publishnames', 'choice')); +$CHOICE_RELEASE = array (CHOICE_RELEASE_NOT => get_string("publishnot", "choice"), + CHOICE_RELEASE_AFTER_ANSWER => get_string("publishafteranswer", "choice"), + CHOICE_RELEASE_AFTER_CLOSE => get_string("publishafterclose", "choice"), + CHOICE_RELEASE_ALWAYS => get_string("publishalways", "choice")); -$CHOICE_RELEASE = array (CHOICE_RELEASE_NOT => get_string('publishnot', 'choice'), - CHOICE_RELEASE_AFTER_ANSWER => get_string('publishafteranswer', 'choice'), - CHOICE_RELEASE_AFTER_CLOSE => get_string('publishafterclose', 'choice'), - CHOICE_RELEASE_ALWAYS => get_string('publishalways', 'choice')); - -$CHOICE_DISPLAY = array (CHOICE_DISPLAY_HORIZONTAL => get_string('displayhorizontal', 'choice'), - CHOICE_DISPLAY_VERTICAL => get_string('displayvertical','choice')); /// Standard functions ///////////////////////////////////////////////////////// function choice_user_outline($course, $user, $mod, $choice) { - if ($answer = get_record('choice_answers', 'choiceid', $choice->id, 'userid', $user->id)) { - $result->info = "'".format_string(choice_get_option_text($choice, $answer->optionid))."'"; - $result->time = $answer->timemodified; + if ($current = get_record("choice_answers", "choice", $choice->id, "userid", $user->id)) { + $result->info = "'".choice_get_answer($choice, $current->answer)."'"; + $result->time = $current->timemodified; return $result; } return NULL; @@ -37,10 +34,10 @@ function choice_user_outline($course, $user, $mod, $choice) { function choice_user_complete($course, $user, $mod, $choice) { - if ($answer = get_record('choice_answers', "choiceid", $choice->id, "userid", $user->id)) { - $result->info = "'".format_string(choice_get_option_text($choice, $answer->optionid))."'"; - $result->time = $answer->timemodified; - echo get_string("answered", "choice").": $result->info. ".get_string("updated", '', userdate($result->time)); + if ($current = get_record("choice_answers", "choice", $choice->id, "userid", $user->id)) { + $result->info = "'".choice_get_answer($choice, $current->answer)."'"; + $result->time = $current->timemodified; + echo get_string("answered", "choice").": $result->info , last updated ".userdate($result->time); } else { print_string("notanswered", "choice"); } @@ -65,23 +62,7 @@ function choice_add_instance($choice) { $choice->timeclose = 0; } - //insert answers - if ($choice->id = insert_record("choice", $choice)) { - foreach ($choice as $name => $value) { - if (strstr($name, "newoption")) { /// New option - $value = trim($value); - if ($value) { - $option = NULL; - $option->text = $value; - $option->choiceid = $choice->id; - $option->maxanswers = $choice->{'newlimit'.substr($name, 9)}; - $option->timemodified = time(); - insert_record("choice_options", $option); - } - } - } - } - return $choice->id; + return insert_record("choice", $choice); } @@ -104,37 +85,9 @@ function choice_update_instance($choice) { $choice->timeclose = 0; } - //update answers - - foreach ($choice as $name => $value) { - $value = trim($value); +// global $db; $db->debug=true; - if (strstr($name, "oldoption")) { // Old option - if ($value) { - $option = NULL; - $option->id = substr($name, 9); // Get the ID of the answer that needs to be updated. - $option->text = $value; - $option->choiceid = $choice->id; - $option->maxanswers = $choice->{'oldlimit'.substr($name, 9)}; - $option->timemodified = time(); - update_record("choice_options", $option); - } else { //empty old option - needs to be deleted. - delete_records("choice_options", "id", substr($name, 9)); - } - } else if (strstr($name, "newoption")) { /// New option - if ($value) { - $option = NULL; - $option->text = $value; - $option->choiceid = $choice->id; - $option->maxanswers = $choice->{'newlimit'.substr($name, 9)}; - $option->timemodified = time(); - insert_record("choice_options", $option); - } - } - } - - return update_record('choice', $choice); - + return update_record("choice", $choice); } @@ -149,62 +102,69 @@ function choice_delete_instance($id) { $result = true; - if (! delete_records("choice_answers", "choiceid", "$choice->id")) { - $result = false; - } - - if (! delete_records("choice_options", "choiceid", "$choice->id")) { + if (! delete_records("choice_answers", "choice", "$choice->id")) { $result = false; } if (! delete_records("choice", "id", "$choice->id")) { $result = false; } - return $result; } function choice_get_participants($choiceid) { //Returns the users with data in one choice -//(users with records in choice_responses, students) +//(users with records in choice_answers, students) global $CFG; //Get students - $students = get_records_sql("SELECT DISTINCT u.id, u.id + $students = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, - {$CFG->prefix}choice_answers a - WHERE a.choiceid = '$choiceid' and - u.id = a.userid"); + {$CFG->prefix}choice_answers c + WHERE c.choice = '$choiceid' and + u.id = c.userid"); //Return students array (it contains an array of unique users) return ($students); } -function choice_get_option_text($choice, $id) { -// Returns text string which is the answer that matches the id - if ($result = get_record("choice_options", "id", $id)) { - return $result->text; - } else { - return get_string("notanswered", "choice"); - } +function choice_get_answer($choice, $code) { +// Returns text string which is the answer that matches the code + switch ($code) { + case 1: + return "$choice->answer1"; + case 2: + return "$choice->answer2"; + case 3: + return "$choice->answer3"; + case 4: + return "$choice->answer4"; + case 5: + return "$choice->answer5"; + case 6: + return "$choice->answer6"; + default: + return get_string("notanswered", "choice"); + } } function choice_get_choice($choiceid) { -// Gets a full choice record +// Gets a full choice record if ($choice = get_record("choice", "id", $choiceid)) { - if ($options = get_records("choice_options", "choiceid", $choiceid, "id")) { - foreach ($options as $option) { - $choice->option[$option->id] = $option->text; - $choice->maxanswers[$option->id] = $option->maxanswers; - } - return $choice; - } + $choice->answer[1] = $choice->answer1; + $choice->answer[2] = $choice->answer2; + $choice->answer[3] = $choice->answer3; + $choice->answer[4] = $choice->answer4; + $choice->answer[5] = $choice->answer5; + $choice->answer[6] = $choice->answer6; + return $choice; + } else { + return false; } - return false; } ?> diff --git a/mod/choice/mod.html b/mod/choice/mod.html index dc5c2b245ad..f69d662eb0b 100644 --- a/mod/choice/mod.html +++ b/mod/choice/mod.html @@ -8,8 +8,23 @@ if (empty($form->format)) { $form->format = 0; } - if (empty($form->display)) { - $form->display = 0; + if (empty($form->answer1)) { + $form->answer1 = get_string("yes"); + } + if (empty($form->answer2)) { + $form->answer2 = get_string("no"); + } + if (empty($form->answer3)) { + $form->answer3 = ""; + } + if (empty($form->answer4)) { + $form->answer4 = ""; + } + if (empty($form->answer5)) { + $form->answer5 = ""; + } + if (empty($form->answer6)) { + $form->answer6 = ""; } if (empty($form->timeopen)) { $form->timeopen = ""; @@ -32,45 +47,22 @@ if (empty($form->showunanswered)) { $form->showunanswered = 0; } - if (empty($form->limitanswers)) { - $form->limitanswers = 0; - } ?> -<script type="text/javascript"> -function lockselects(form, master, subitems) { - // subitems is an array of names of sub items - // requires that each item in subitems has a - // companion hidden item in the form with the - // same name but prefixed by "h" - // master is the name of the selct - // x is the option that is selcted to enforce the lock. - if (eval("document."+form+"."+master+".selected")) { - for (i=0; i<subitems.length; i++) { - lockoption(form, subitems[i]); - } - } else { - for (i=0; i<subitems.length; i++) { - unlockoption(form, subitems[i]); - } - } - return(true); -} - -</script> <form name="form" method="post" action="mod.php"> -<table cellpadding="5"> +<table cellpadding=5> -<tr valign="top"> - <td align="right"><strong><?php print_string("choicename","choice") ?>:</strong></td> - <td colspan="2"> - <input type="text" name="name" size="30" alt="<?php print_string("choicename","choice") ?>" value="<?php p($form->name) ?>" /> +<tr valign=top> + <td align=right><p><b><?php print_string("choicename","choice") ?>:</b></p></td> + <td> + <input type="text" name="name" size=30 value="<?php p($form->name) ?>"> </td> </tr> -<tr valign="top"> - <td align="right"><strong><?php print_string("choicetext","choice") ?>:</strong><br /><br /> +<tr valign=top> + <td align=right><p><b><?php print_string("choicetext","choice") ?>:</b></p> + <font size="1"> <?php helpbutton("writing", get_string("helpwriting"), "moodle", true, true); echo "<br />"; @@ -80,118 +72,99 @@ function lockselects(form, master, subitems) { helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); } else { emoticonhelpbutton("form", "text"); - } - echo "<br />"; + } ?> + <br /> + </font> </td> - <td colspan="2"> - <?php + <td> + <?php print_textarea($usehtmleditor, 20, 60, 680, 400, "text", $form->text); - + if ($usehtmleditor) { echo '<input type="hidden" name="format" value="'.FORMAT_HTML.'" />'; } else { - echo "<div align=\"right\">"; + echo "<p align=right>"; helpbutton("textformat", get_string("formattexttype")); print_string("formattexttype"); echo ":&nbsp;"; if (!$form->format) { $form->format = $defaultformat; } - choose_from_menu(format_text_menu(), "format", $form->format, ""); - echo "</div>"; + choose_from_menu(format_text_menu(), "format", $form->format, ""); + echo "</p>"; } ?> </td> </tr> -<?php -$standardblanks = 10; -$count = 0; -$limitfieldlist = ''; -if (($options = get_records_menu('choice_options','choiceid', $form->instance, 'id', 'id,text')) && ($options2 = get_records_menu('choice_options','choiceid', $form->instance, 'id', 'id,maxanswers')) ) { - foreach ($options as $id => $text) { - $count++; - ?> - <tr valign=top> - <td align="right"><strong><?php echo get_string("choice","choice").' '.$count; ?>:</strong></td> - <td> - <input type="text" name="oldoption<?php p($id) ?>" size="60" value="<?php p($text) ?>" id="oldoption<?php p($id) ?>" /> - <?php helpbutton("options", get_string("modulenameplural", "choice"), "choice") ?> - </td> - <td align="right"><strong><?php p(get_string("limit","choice")) ?>:</strong> - <input type="text" name="oldlimit<?php p($id) ?>" size="4" value="<?php p($options2[$id]) ?>" id="oldlimit<?php p($id) ?>" /> - <input type="hidden" name="holdlimit<?php p($id) ?>" value="0"/> - </td> - </tr> - <?php - $limitfieldlist .= "'oldlimit".$id."',"; - } - $standardblanks = 2; -} -for ($i=1; $i<=$standardblanks; $i++) { - $count++; - ?> - <tr valign=top> - <td align="right"><strong><?php echo get_string("choice","choice").' '.$count; ?>:</strong></td> - <td> - <input type="text" name="newoption<?php p($i) ?>" size="60" value="" id="newoption<?php p($i) ?>"> - <?php helpbutton("options", get_string("modulenameplural", "choice"), "choice") ?> - </td> - <td align="right"><strong><?php p(get_string("limit","choice")) ?>:</strong> - <input type="text" name="newlimit<?php p($i)?>" size="4" value="0" id="newlimit<?php p($i) ?>" /> - <input type="hidden" name="hnewlimit<?php p($i) ?>" value="0" /> - </td> - </tr> - <?php - $limitfieldlist .= "'newlimit".$i."',"; -} -$lim = trim($limitfieldlist, ","); -?> -<script type="text/javascript"> - limititems = [<?php p($limitfieldlist); ?>]; -</script> - -<tr valign="top"> - <td align="right" colspan="2"><strong><?php print_string("limitanswers", "choice") ?>:</strong></td> - <td align="right"> - <?php - $menuoptions[0] = get_string("disable"); - $menuoptions[1] = get_string("enable"); - helpbutton("limit", get_string("limit", "choice"), "choice"); - echo '&nbsp;'; - choose_from_menu($menuoptions, "limitanswers", "$form->limitanswers", "", "return lockselects('form','limitanswers.options[0]', limititems)"); - ?> +<tr valign=top> + <td align=right><p><b><?php print_string("choice","choice","1") ?>:</b></p></td> + <td> + <input type="text" name="answer1" size=60 value="<?php p($form->answer1) ?>"> + <?php helpbutton("options", get_string("modulenameplural", "choice"), "choice") ?> </td> </tr> -<?php if ($form->limitanswers == 0) { //lock the limit fields if limit isn't used. ?> -<script type="text/javascript"> - lockoptions('form','limitanswers', limititems); -</script> -<?php }?> +<tr valign=top> + <td align=right><p><b><?php print_string("choice","choice","2") ?>:</b></p></td> + <td> + <input type="text" name="answer2" size=60 value="<?php p($form->answer2) ?>"> + <?php helpbutton("options", get_string("modulenameplural", "choice"), "choice") ?> + </td> +</tr> -<tr valign="top"> - <td align="right"><strong><?php print_string("timerestrict", "choice") ?>:</strong></td> - <td colspan="2"> - <script type="text/javascript"> +<tr valign=top> + <td align=right><p><b><?php print_string("choice","choice","3") ?>:</b></p></td> + <td> + <input type="text" name="answer3" size=60 value="<?php p($form->answer3) ?>"> + <?php helpbutton("options", get_string("modulenameplural", "choice"), "choice") ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("choice","choice","4") ?>:</b></p></td> + <td> + <input type="text" name="answer4" size=60 value="<?php p($form->answer4) ?>"> + <?php helpbutton("options", get_string("modulenameplural", "choice"), "choice") ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("choice","choice","5") ?>:</b></p></td> + <td> + <input type="text" name="answer5" size=60 value="<?php p($form->answer5) ?>"> + <?php helpbutton("options", get_string("modulenameplural", "choice"), "choice") ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("choice","choice","6") ?>:</b></p></td> + <td> + <input type="text" name="answer6" size=60 value="<?php p($form->answer6) ?>"> + <?php helpbutton("options", get_string("modulenameplural", "choice"), "choice") ?> + </td> +</tr> + +<tr valign=top> + <td align=right><p><b><?php print_string("timerestrict", "choice") ?>:</b></p></td> + <td> + <script> var timeitems = ['openday','openmonth','openyear','openhour', 'openminute', 'closeday','closemonth','closeyear','closehour','closeminute']; </script> - <input name="timerestrict" type="checkbox" value="1" alt="<?php print_string("timerestrict", "choice") ?>" onclick="return lockoptions('form','timerestrict', timeitems)" <?php if ($form->timerestrict) echo 'checked="checked"'; ?> /> + <input name="timerestrict" type="checkbox" value="1" onclick="return lockoptions('form','timerestrict', timeitems)" <?php if ($form->timerestrict) echo "checked"; ?> > <?php helpbutton("timerestrict", get_string("timerestrict","choice"), "choice"); ?> </td> </tr> -<tr valign="top"> - <td>&nbsp;</td> - <td colspan="2"> +<tr valign=top> + <td><p>&nbsp;</p></td> + <td> + <table> <tr> - <td align="right"><strong><?php print_string("choiceopen", "choice") ?>:</strong></td> + <td align="right"><p><b><?php print_string("choiceopen", "choice") ?>:</b></p></td> <td> - + <?php if (!$form->timeopen and $course->format == "weeks") { $form->timeopen = $course->startdate + (($form->section - 1) * 608400); @@ -199,18 +172,18 @@ $lim = trim($limitfieldlist, ","); print_date_selector("openday", "openmonth", "openyear", $form->timeopen); print_time_selector("openhour", "openminute", $form->timeopen); ?> - - <input type="hidden" name="hopenday" value="0" /> - <input type="hidden" name="hopenmonth" value="0" /> - <input type="hidden" name="hopenyear" value="0" /> - <input type="hidden" name="hopenhour" value="0" /> - <input type="hidden" name="hopenminute" value="0" /> + + <input type="hidden" name="hopenday" value="0"> + <input type="hidden" name="hopenmonth" value="0"> + <input type="hidden" name="hopenyear" value="0"> + <input type="hidden" name="hopenhour" value="0"> + <input type="hidden" name="hopenminute" value="0"> </td> </tr> <tr> - <td align="right"><strong><?php print_string("choiceclose", "choice") ?>:</strong></td> + <td align=right><p><b><?php print_string("choiceclose", "choice") ?>:</b></p></td> <td> - + <?php if (!$form->timeclose and $course->format == "weeks") { $form->timeclose = $course->startdate + (($form->section) * 608400); @@ -218,16 +191,16 @@ $lim = trim($limitfieldlist, ","); print_date_selector("closeday", "closemonth", "closeyear", $form->timeclose); print_time_selector("closehour", "closeminute", $form->timeclose); ?> - - <input type="hidden" name="hcloseday" value="0" /> - <input type="hidden" name="hclosemonth" value="0" /> - <input type="hidden" name="hcloseyear" value="0" /> - <input type="hidden" name="hclosehour" value="0" /> - <input type="hidden" name="hcloseminute" value="0" /> + + <input type="hidden" name="hcloseday" value="0"> + <input type="hidden" name="hclosemonth" value="0"> + <input type="hidden" name="hcloseyear" value="0"> + <input type="hidden" name="hclosehour" value="0"> + <input type="hidden" name="hcloseminute" value="0"> <?php if (! $form->timerestrict) { - echo "<script type=\"text/javascript\">"; + echo "<script>"; echo "lockoptions('form','timerestrict', timeitems);"; echo "</script>\n"; } @@ -240,80 +213,65 @@ $lim = trim($limitfieldlist, ","); </td> </tr> -<tr valign="top"> - <td align="right"><strong><?php print_string("displaymode","choice") ?>:</strong></td> - <td colspan="2"> +<tr valign=top> + <td align=right><P><B><?php print_string("publish","choice") ?>:</b></p></td> + <td> <?php require_once("$CFG->dirroot/mod/choice/lib.php"); - choose_from_menu($CHOICE_DISPLAY, "display", "$form->display", ""); + choose_from_menu($CHOICE_RELEASE, "release", "$form->release", ""); ?> <br /> </td> </tr> -<tr valign="top"> - <td align="right"><strong><?php print_string("publish","choice") ?>:</strong></td> - <td colspan="2"> - <?php - require_once("$CFG->dirroot/mod/choice/lib.php"); - choose_from_menu($CHOICE_RELEASE, "release", "$form->release", "", "return lockselects('form','release.options[0]',['publish'])"); - ?> - <br /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><strong><?php print_string("privacy","choice") ?>:</strong></td> - <td colspan="2"> +<tr valign=top> + <td align=right><P><B><?php print_string("privacy","choice") ?>:</b></p></td> + <td> <?php require_once("$CFG->dirroot/mod/choice/lib.php"); choose_from_menu($CHOICE_PUBLISH, "publish", "$form->publish", ""); ?> <br /> - <input type="hidden" name="hpublish" value="0" /> </td> </tr> -<script type="text/javascript"> - lockselects('form','release.options[0]',['publish']); -</script> -<tr valign="top"> - <td align="right"><strong><?php print_string("allowupdate","choice") ?>:</strong></td> - <td colspan="2"> + +<tr valign=top> + <td align=right><P><B><?php print_string("allowupdate","choice") ?>:</b></p></td> + <td> <?php - $menuoptions[0] = get_string("no"); - $menuoptions[1] = get_string("yes"); - choose_from_menu($menuoptions, "allowupdate", "$form->allowupdate", ""); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); + choose_from_menu($options, "allowupdate", "$form->allowupdate", ""); ?> <br /> </td> </tr> -<tr valign="top"> - <td align="right"><strong><?php print_string("showunanswered","choice") ?>:</strong></td> - <td colspan="2"> +<tr valign=top> + <td align=right><P><B><?php print_string("showunanswered","choice") ?>:</b></p></td> + <td> <?php - $menuoptions[0] = get_string("no"); - $menuoptions[1] = get_string("yes"); - choose_from_menu($menuoptions, "showunanswered", "$form->showunanswered", ""); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); + choose_from_menu($options, "showunanswered", "$form->showunanswered", ""); ?> <br /> </td> </tr> -<?php print_standard_coursemodule_settings($form); ?> + </table> <center> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -<input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> +<input type="hidden" name=course value="<?php p($form->course) ?>"> +<input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name=section value="<?php p($form->section) ?>"> +<input type="hidden" name=module value="<?php p($form->module) ?>"> +<input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<input type="hidden" name=instance value="<?php p($form->instance) ?>"> +<input type="hidden" name=mode value="<?php p($form->mode) ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> +<input type="submit" name=cancel value="<?php print_string("cancel") ?>"> </center> </form> diff --git a/mod/choice/report.php b/mod/choice/report.php index 6d59ad1e0b0..1f77f531cef 100644 --- a/mod/choice/report.php +++ b/mod/choice/report.php @@ -1,12 +1,9 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); - $id = required_param('id'); //moduleid - - $format = optional_param('format', CHOICE_PUBLISH_NAMES, PARAM_INT); - $download = optional_param('download', '', PARAM_ALPHA); + require_variable($id); // course module if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); @@ -16,7 +13,7 @@ error("Course module is misconfigured"); } - require_login($course->id, false, $cm); + require_login($course->id); if (!isteacher($course->id)) { error("Only teachers can look at this page"); @@ -30,8 +27,11 @@ $strchoices = get_string("modulenameplural", "choice"); $strresponses = get_string("responses", "choice"); - add_to_log($course->id, "choice", "report", "report.php?id=$cm->id", "$choice->id",$cm->id); + add_to_log($course->id, "choice", "report", "report.php?id=$cm->id", "$choice->id"); + print_header_simple("$choice->name: $strresponses", "", + "<a href=\"index.php?id=$course->id\">$strchoices</a> -> + <a href=\"view.php?id=$cm->id\">$choice->name</a> -> $strresponses", ""); /// Check to see if groups are being used in this choice if ($groupmode = groupmode($course, $cm)) { // Groups are being used @@ -41,9 +41,9 @@ } if ($currentgroup) { - $users = get_group_users($currentgroup, "u.firstname ASC", '', 'u.id, u.picture, u.firstname, u.lastname') + get_admins(); + $users = get_group_users($currentgroup, "u.firstname ASC"); } else { - $users = get_course_users($course->id, "u.firstname ASC", '', 'u.id, u.picture, u.firstname, u.lastname') + get_admins(); + $users = get_course_users($course->id, "u.firstname ASC"); } if (!$users) { @@ -52,8 +52,8 @@ exit; } - if ($allresponses = get_records("choice_answers", "choiceid", $choice->id)) { - foreach ($allresponses as $aa) { + if ( $allanswers = get_records("choice_answers", "choice", $choice->id)) { + foreach ($allanswers as $aa) { $answers[$aa->userid] = $aa; } } else { @@ -62,224 +62,62 @@ $timenow = time(); - foreach ($choice->option as $optionid => $text) { - $useranswer[$optionid] = array(); + foreach ($choice->answer as $key => $answer) { + $useranswer[$key] = array(); } foreach ($users as $user) { - if (!empty($user->id) and !empty($answers[$user->id])) { + if (!empty($answers[$user->id])) { $answer = $answers[$user->id]; - $useranswer[(int)$answer->optionid][] = $user; } else { - $useranswer[0][] = $user; + $answer->answer = 0; } + $useranswer[(int)$answer->answer][] = $user; } - foreach ($choice->option as $optionid => $text) { - if (!$choice->option[$optionid]) { - unset($useranswer[$optionid]); // Throw away any data that doesn't apply + foreach ($choice->answer as $key => $answer) { + if (!$choice->answer[$key]) { + unset($useranswer[$key]); // Throw away any data that doesn't apply } } ksort($useranswer); - - //print spreadsheet if one is asked for: - if ($download == "xls") { - require_once("$CFG->libdir/excel/Worksheet.php"); - require_once("$CFG->libdir/excel/Workbook.php"); - - // HTTP headers - $filename = clean_filename("$course->shortname ".strip_tags(format_string($choice->name,true))).'.xls'; - - header("Content-type: application/vnd.ms-excel"); - header("Content-Disposition: attachment; filename=$filename" ); - header("Expires: 0"); - header("Cache-Control: must-revalidate, post-check=0,pre-check=0"); - header("Pragma: public"); - - // Creating a workbook - $workbook = new Workbook("-"); - // Creating the first worksheet - $myxls =& $workbook->add_worksheet('Responses'); + $tablewidth = (int) (100.0 / count($useranswer)); - $myxls->write_string(0,0,get_string("lastname")); - $myxls->write_string(0,1,get_string("firstname")); - $myxls->write_string(0,2,get_string("idnumber")); - $myxls->write_string(0,3,get_string("choice","choice")); - - - /// generate the data for the body of the spreadsheet - $i=0; - $row=1; - if ($users) foreach ($users as $user) { - if (!($answers[$user->id]->optionid==0 && isadmin($user->id)) && - (!($answers[$user->id]->optionid==0 && isteacher($course->id, $user->id) && !(isteacheredit($course->id, $user->id)) ) ) && - !($choice->showunanswered==0 && $answers[$user->id]->optionid==0) ) { //make sure admins and hidden teachers are not shown in not answered yet column, and not answered only shown if set in config page. - - $myxls->write_string($row,0,$user->lastname); - $myxls->write_string($row,1,$user->firstname); - $studentid=(($user->idnumber != "") ? $user->idnumber : " "); - $myxls->write_string($row,2,$studentid); - $useroption = choice_get_option_text($choice, $answers[$user->id]->optionid); - if (isset($useroption)) { - $myxls->write_string($row,3,format_string($useroption,true)); - } - $row++; - } - $pos=4; - } - - $workbook->close(); - exit; - } - // print text file - if ($download == "txt") { - $filename = clean_filename("$course->shortname ".strip_tags(format_string($choice->name,true))).'.txt'; - header("Content-Type: application/download\n"); - header("Content-Disposition: attachment; filename=\"".$filename."\""); - - /// Print names of all the fields - - echo get_string("firstname")."\t".get_string("lastname") . "\t". get_string("idnumber") . "\t"; - echo get_string("choice","choice"). "\n"; - - /// generate the data for the body of the spreadsheet - $i=0; - $row=1; - if ($users) foreach ($users as $user) { - if (!($answers[$user->id]->optionid==0 && isadmin($user->id)) && - (!($answers[$user->id]->optionid==0 && isteacher($course->id, $user->id) && !(isteacheredit($course->id, $user->id)) ) ) && - !($choice->showunanswered==0 && $answers[$user->id]->optionid==0) ) { //make sure admins and hidden teachers are not shown in not answered yet column, and not answered only shown if set in config page. - - echo $user->lastname; - echo "\t".$user->firstname; - $studentid=(($user->idnumber != "") ? $user->idnumber : " "); - echo "\t". $studentid."\t"; - echo format_string(choice_get_option_text($choice, $answers[$user->id]->optionid),true). "\n"; - } - $row++; - } - exit; -} - - print_header_simple(format_string($choice->name).": $strresponses", "", - "<a href=\"index.php?id=$course->id\">$strchoices</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($choice->name,true)."</a> -> $strresponses", ""); - - switch ($format) { - case CHOICE_PUBLISH_NAMES: - - $tablewidth = (int) (100.0 / count($useranswer)); - - echo "<table cellpadding=\"5\" cellspacing=\"10\" align=\"center\">"; - echo "<tr>"; - foreach ($useranswer as $optionid => $userlist) { - if ($optionid) { - echo "<th class=\"col$optionid\" width=\"$tablewidth%\">"; - } else if ($choice->showunanswered) { - echo "<th class=\"col$optionid\" width=\"$tablewidth%\">"; - } else { - continue; - } - echo format_string(choice_get_option_text($choice, $optionid)); - echo "</th>"; - } - echo "</tr><tr>"; - - foreach ($useranswer as $optionid => $userlist) { - if ($optionid) { - echo "<td class=\"col$optionid\" width=\"$tablewidth%\" valign=\"top\" nowrap=\"nowrap\">"; - } else if ($choice->showunanswered) { - echo "<td class=\"col$optionid\" width=\"$tablewidth%\" valign=\"top\" nowrap=\"nowrap\">"; - } else { - continue; - } - - echo "<table width=\"100%\">"; - foreach ($userlist as $user) { - if (!($optionid==0 && isadmin($user->id)) && !($optionid==0 && isteacher($course->id, $user->id) && !(isteacheredit($course->id, $user->id)) ) ) { //make sure admins and hidden teachers are not shown in not answered yet column. - echo "<tr><td width=\"10\" nowrap=\"nowrap\">"; - print_user_picture($user->id, $course->id, $user->picture); - echo "</td><td width=\"100%\" nowrap=\"nowrap\">"; - echo "<p>".fullname($user, true)."</p>"; - echo "</td></tr>"; - } - } - echo "</table>"; - - echo "</td>"; - } - echo "</tr></table>"; - break; - - - case CHOICE_PUBLISH_ANONYMOUS: - $tablewidth = (int) (100.0 / count($useranswer)); - - echo "<table cellpadding=\"5\" cellspacing=\"10\" align=\"center\">"; - echo "<tr>"; - foreach ($useranswer as $optionid => $userlist) { - if ($optionid) { - echo "<th width=\"$tablewidth%\">"; - } else if ($choice->showunanswered) { - echo "<th width=\"$tablewidth%\">"; - } else { - continue; - } - echo choice_get_option_text($choice, $optionid); - echo "</th>"; - } - echo "</tr>"; - - $maxcolumn = 0; - foreach ($useranswer as $optionid => $userlist) { - if (!$optionid and !$choice->showunanswered) { - continue; - } - $column[$optionid] = count($userlist); - if ($column[$optionid] > $maxcolumn) { - $maxcolumn = $column[$optionid]; - } - } - - echo "<tr>"; - foreach ($useranswer as $optionid => $userlist) { - if (!$optionid and !$choice->showunanswered) { - continue; - } - $height = 0; - if ($maxcolumn) { - $height = $COLUMN_HEIGHT * ((float)$column[$optionid] / (float)$maxcolumn); - } - echo "<td valign=\"bottom\" align=\"center\">"; - echo "<img src=\"column.png\" height=\"$height\" width=\"49\" alt=\"\" />"; - echo "</td>"; - } - echo "</tr>"; - - echo "<tr>"; - foreach ($useranswer as $optionid => $userlist) { - if (!$optionid and !$choice->showunanswered) { - continue; - } - echo "<td align=\"center\">".$column[$optionid]."</td>"; - } - echo "</tr></table>"; - - break; + echo "<table cellpadding=\"5\" cellspacing=\"10\" align=\"center\">"; + echo "<tr>"; + foreach ($useranswer as $key => $answer) { + if ($key) { + echo "<th width=\"$tablewidth%\">"; + } else { + echo "<th bgcolor=\"$THEME->body\" width=\"$tablewidth%\">"; + } + echo choice_get_answer($choice, $key); + echo "</th>"; } - - echo "<br />\n"; - echo "<table border=\"0\" align=\"center\"><tr>\n"; - echo "<td>"; - unset($options); - $options["id"] = "$cm->id"; - $options["download"] = "xls"; - print_single_button("report.php", $options, get_string("downloadexcel")); - echo "</td><td>"; - $options["download"] = "txt"; - print_single_button("report.php", $options, get_string("downloadtext")); + echo "</tr><tr>"; - echo "</td></tr></table>"; -print_footer($course); + foreach ($useranswer as $key => $answer) { + if ($key) { + echo "<td width=\"$tablewidth%\" valign=top nowrap bgcolor=\"$THEME->cellcontent\">"; + } else { + echo "<td width=\"$tablewidth%\" valign=top nowrap bgcolor=\"$THEME->body\">"; + } + echo "<table width=\"100%\">"; + foreach ($answer as $user) { + echo "<tr><td width=\"10\" nowrap>"; + print_user_picture($user->id, $course->id, $user->picture); + echo "</td><td width=\"100%\" nowrap>"; + echo "<p>".fullname($user, true)."</p>"; + echo "</td></tr>"; + } + echo "</table>"; + echo "</td>"; + } + echo "</tr></table>"; + + print_footer($course); + + ?> + diff --git a/mod/choice/restorelib.php b/mod/choice/restorelib.php index a13510945dd..2d0f3bd5336 100644 --- a/mod/choice/restorelib.php +++ b/mod/choice/restorelib.php @@ -1,21 +1,16 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //choice mods //This is the "graphical" structure of the choice mod: // - // choice - // (CL,pk->id)----------| - // | | - // | | - // | | - // choice_options | - // (UL,pk->id, fk->choiceid) | - // | | - // | | - // | | - // choice_answers | - // (UL,pk->id, fk->choiceid, fk->optionid) + // choice + // (CL,pk->id) + // | + // | + // | + // choice_answers + // (UL,pk->id, fk->choice) // // Meaning: pk->primary key field of the table // fk->foreign key to link with parent @@ -48,14 +43,18 @@ $choice->name = backup_todb($info['MOD']['#']['NAME']['0']['#']); $choice->text = backup_todb($info['MOD']['#']['TEXT']['0']['#']); $choice->format = backup_todb($info['MOD']['#']['FORMAT']['0']['#']); - $choice->publish = backup_todb($info['MOD']['#']['PUBLISH']['0']['#']); - $choice->release = backup_todb($info['MOD']['#']['RELEASE']['0']['#']); - $choice->display = backup_todb($info['MOD']['#']['DISPLAY']['0']['#']); - $choice->allowupdate = backup_todb($info['MOD']['#']['ALLOWUPDATE']['0']['#']); + $choice->answer1 = backup_todb($info['MOD']['#']['ANSWER1']['0']['#']); + $choice->answer2 = backup_todb($info['MOD']['#']['ANSWER2']['0']['#']); + $choice->answer3 = backup_todb($info['MOD']['#']['ANSWER3']['0']['#']); + $choice->answer4 = backup_todb($info['MOD']['#']['ANSWER4']['0']['#']); + $choice->answer5 = backup_todb($info['MOD']['#']['ANSWER5']['0']['#']); + $choice->answer6 = backup_todb($info['MOD']['#']['ANSWER6']['0']['#']); $choice->showunanswered = backup_todb($info['MOD']['#']['SHOWUNANSWERED']['0']['#']); - $choice->limitanswers = backup_todb($info['MOD']['#']['LIMITANSWERS']['0']['#']); $choice->timeopen = backup_todb($info['MOD']['#']['TIMEOPEN']['0']['#']); $choice->timeclose = backup_todb($info['MOD']['#']['TIMECLOSE']['0']['#']); + $choice->publish = backup_todb($info['MOD']['#']['PUBLISH']['0']['#']); + $choice->release = backup_todb($info['MOD']['#']['RELEASE']['0']['#']); + $choice->allowupdate = backup_todb($info['MOD']['#']['ALLOWUPDATE']['0']['#']); $choice->timemodified = backup_todb($info['MOD']['#']['TIMEMODIFIED']['0']['#']); //To mantain compatibilty, in 1.4 the publish setting meaning has changed. We @@ -74,152 +73,63 @@ $choice->publish--; } } - + //The structure is equal to the db, so insert the choice $newid = insert_record ("choice",$choice); - + + //Do some output + echo "<ul><li>".get_string("modulename","choice")." \"".$choice->name."\"<br>"; + backup_flush(300); + if ($newid) { //We have the newid, update backup_ids backup_putid($restore->backup_unique_code,$mod->modtype, $mod->id, $newid); - - //Check to see how answers (curently choice_options) are stored in the table - //If answer1 - answer6 exist, this is a pre 1.5 version of choice - if (isset($info['MOD']['#']['ANSWER1']['0']['#']) || - isset($info['MOD']['#']['ANSWER2']['0']['#']) || - isset($info['MOD']['#']['ANSWER3']['0']['#']) || - isset($info['MOD']['#']['ANSWER4']['0']['#']) || - isset($info['MOD']['#']['ANSWER5']['0']['#']) || - isset($info['MOD']['#']['ANSWER6']['0']['#']) ) { - - //This is a pre 1.5 choice backup, special work begins - $options = array(); - $options[1] = backup_todb($info['MOD']['#']['ANSWER1']['0']['#']); - $options[2] = backup_todb($info['MOD']['#']['ANSWER2']['0']['#']); - $options[3] = backup_todb($info['MOD']['#']['ANSWER3']['0']['#']); - $options[4] = backup_todb($info['MOD']['#']['ANSWER4']['0']['#']); - $options[5] = backup_todb($info['MOD']['#']['ANSWER5']['0']['#']); - $options[6] = backup_todb($info['MOD']['#']['ANSWER6']['0']['#']); - - for($i = 1; $i < 7; $i++) { //insert old answers (in 1.4) as choice_options (1.5) to db. - if (!empty($options[$i])) { //make sure this option has something in it! - $option->choiceid = $newid; - $option->text = $options[$i]; - $option->timemodified = $choice->timemodified; - $newoptionid = insert_record ("choice_options",$option); - //Save this choice_option to backup_ids - backup_putid($restore->backup_unique_code,"choice_options",$i,$newoptionid); - } - } - } else { //Now we are in a "standard" 1.5 choice, so restore choice_options normally - $status = choice_options_restore_mods($newid,$info,$restore); - } - - //now restore the answers for this choice. - if ($restore->mods['choice']->userinfo) { + //Now check if want to restore user data and do it. + if ($restore->mods['choice']->userinfo) { //Restore choice_answers - $status = choice_answers_restore_mods($newid,$info,$restore); - } + $status = choice_answers_restore_mods ($newid,$info,$restore); + } } else { $status = false; } - //Do some output - echo "<li>".get_string("modulename","choice")." \"".format_string(stripslashes($choice->name),true)."\"</li>"; - backup_flush(300); + //Finalize ul + echo "</ul>"; } else { $status = false; } - return $status; - } - -function choice_options_restore_mods($choiceid,$info,$restore) { - - global $CFG; - - $status = true; - - $options = $info['MOD']['#']['OPTIONS']['0']['#']['OPTION']; - - //Iterate over options - for($i = 0; $i < sizeof($options); $i++) { - $opt_info = $options[$i]; - //traverse_xmlize($opt_info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - - //We'll need this later!! - $oldid = backup_todb($opt_info['#']['ID']['0']['#']); - $olduserid = backup_todb($opt_info['#']['USERID']['0']['#']); - - //Now, build the CHOICE_OPTIONS record structure - $option->choiceid = $choiceid; - $option->text = backup_todb($opt_info['#']['TEXT']['0']['#']); - $option->maxanswers = backup_todb($opt_info['#']['MAXANSWERS']['0']['#']); - $option->timemodified = backup_todb($opt_info['#']['TIMEMODIFIED']['0']['#']); - - //The structure is equal to the db, so insert the choice_options - $newid = insert_record ("choice_options",$option); - - //Do some output - if (($i+1) % 50 == 0) { - echo "."; - if (($i+1) % 1000 == 0) { - echo "<br />"; - } - backup_flush(300); - } - - if ($newid) { - //We have the newid, update backup_ids - backup_putid($restore->backup_unique_code,"choice_options",$oldid, - $newid); - } else { - $status = false; - } - } return $status; } //This function restores the choice_answers - function choice_answers_restore_mods($choiceid,$info,$restore) { + function choice_answers_restore_mods($choice_id,$info,$restore) { global $CFG; $status = true; + //Get the answers array $answers = $info['MOD']['#']['ANSWERS']['0']['#']['ANSWER']; //Iterate over answers for($i = 0; $i < sizeof($answers); $i++) { - $ans_info = $answers[$i]; + $sub_info = $answers[$i]; //traverse_xmlize($sub_info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug //We'll need this later!! - $oldid = backup_todb($ans_info['#']['ID']['0']['#']); - $olduserid = backup_todb($ans_info['#']['USERID']['0']['#']); + $oldid = backup_todb($sub_info['#']['ID']['0']['#']); + $olduserid = backup_todb($sub_info['#']['USERID']['0']['#']); //Now, build the CHOICE_ANSWERS record structure - $answer->choiceid = $choiceid; - $answer->userid = backup_todb($ans_info['#']['USERID']['0']['#']); - $answer->optionid = backup_todb($ans_info['#']['OPTIONID']['0']['#']); - $answer->timemodified = backup_todb($ans_info['#']['TIMEMODIFIED']['0']['#']); - - //If the answer contains CHOICE_ANSWER, it's a pre 1.5 backup - if (!empty($ans_info['#']['CHOICE_ANSWER']['0']['#'])) { - //optionid was, in pre 1.5 backups, choice_answer - $answer->optionid = backup_todb($ans_info['#']['CHOICE_ANSWER']['0']['#']); - } - - //We have to recode the optionid field - $option = backup_getid($restore->backup_unique_code,"choice_options",$answer->optionid); - if ($option) { - $answer->optionid = $option->new_id; - } + $answer->choice = $choice_id; + $answer->userid = backup_todb($sub_info['#']['USERID']['0']['#']); + $answer->answer = backup_todb($sub_info['#']['CHOICE_ANSWER']['0']['#']); + $answer->timemodified = backup_todb($sub_info['#']['TIMEMODIFIED']['0']['#']); //We have to recode the userid field $user = backup_getid($restore->backup_unique_code,"user",$answer->userid); @@ -234,7 +144,7 @@ function choice_options_restore_mods($choiceid,$info,$restore) { if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -250,47 +160,6 @@ function choice_options_restore_mods($choiceid,$info,$restore) { return $status; } - - //This function converts texts in FORMAT_WIKI to FORMAT_MARKDOWN for - //some texts in the module - function choice_restore_wiki2markdown ($restore) { - - global $CFG; - - $status = true; - - //Convert choice->text - if ($records = get_records_sql ("SELECT c.id, c.text, c.format - FROM {$CFG->prefix}choice c, - {$CFG->prefix}backup_ids b - WHERE c.course = $restore->course_id AND - c.format = ".FORMAT_WIKI. " AND - b.backup_code = $restore->backup_unique_code AND - b.table_name = 'choice' AND - b.new_id = c.id")) { - foreach ($records as $record) { - //Rebuild wiki links - $record->text = restore_decode_wiki_content($record->text, $restore); - //Convert to Markdown - $wtm = new WikiToMarkdown(); - $record->text = $wtm->convert($record->text, $restore->course_id); - $record->format = FORMAT_MARKDOWN; - $status = update_record('choice', addslashes_object($record)); - //Do some output - $i++; - if (($i+1) % 1 == 0) { - echo "."; - if (($i+1) % 20 == 0) { - echo "<br />"; - } - backup_flush(300); - } - } - - } - return $status; - } - //This function returns a log record with all the necessay transformations //done. It's used by restore_log_module() to restore modules log. function choice_restore_logs($restore,$log) { @@ -358,19 +227,8 @@ function choice_options_restore_mods($choiceid,$info,$restore) { $log->url = "index.php?id=".$log->course; $status = true; break; - case "report": - if ($log->cmid) { - //Get the new_id of the module (to recode the info field) - $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); - if ($mod) { - $log->url = "report.php?id=".$log->cmid; - $log->info = $mod->new_id; - $status = true; - } - } - break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored<br />"; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>"; //Debug break; } diff --git a/mod/choice/version.php b/mod/choice/version.php index 7298d916fdf..f80f7b30cf3 100644 --- a/mod/choice/version.php +++ b/mod/choice/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////////// // Code fragment to define the module version etc. // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2005041500; -$module->requires = 2005021600; // Requires this Moodle version +$module->version = 2004070102; +$module->requires = 2004052501; // Requires this Moodle version $module->cron = 0; ?> diff --git a/mod/choice/view.php b/mod/choice/view.php index 71b8a0ffa27..3940a607383 100644 --- a/mod/choice/view.php +++ b/mod/choice/view.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); @@ -13,26 +13,21 @@ error("Course is misconfigured"); } - require_course_login($course, false, $cm); + require_course_login($course); if (!$choice = choice_get_choice($cm->instance)) { error("Course module is incorrect"); } - if ($choice->option) { - foreach ($choice->option as $optionid => $text) { - $answerchecked[$optionid] = ''; - } + for ($i=1; $i <= $CHOICE_MAX_NUMBER; $i++) { + $answerchecked[$i] = ''; } - - if (isset($USER->id) && $current = get_record('choice_answers', 'choiceid', $choice->id, 'userid', $USER->id)) { - $answerchecked[$current->optionid] = 'checked="checked"'; + if (isset($USER->id) and $current = get_record("choice_answers", "choice", $choice->id, "userid", $USER->id)) { + $answerchecked[$current->answer] = 'CHECKED'; } else { $current = false; } -/// Submit any new data if there is any - if ($form = data_submitted()) { $timenow = time(); @@ -40,51 +35,36 @@ redirect("view.php?id=$cm->id", get_string('mustchooseone', 'choice')); } else { - $countanswers = get_records("choice_answers", "optionid", $form->answer); - if ($countanswers) { - $countanswers = count($countanswers); - } else { - $countanswers = 0; - } - $maxans = $choice->maxanswers[$form->answer]; - if (!($choice->limitanswers && ($countanswers >= $maxans) )) { - if ($current) { - $newanswer = $current; - $newanswer->optionid = $form->answer; - $newanswer->timemodified = $timenow; - if (! update_record("choice_answers", $newanswer)) { - error("Could not update your choice because of a database error"); - } - add_to_log($course->id, "choice", "choose again", "view.php?id=$cm->id", $choice->id, $cm->id); - } else { - $newanswer = NULL; - $newanswer->choiceid = $choice->id; - $newanswer->userid = $USER->id; - $newanswer->optionid = $form->answer; - $newanswer->timemodified = $timenow; - if (! insert_record("choice_answers", $newanswer)) { - error("Could not save your choice"); - } - add_to_log($course->id, "choice", "choose", "view.php?id=$cm->id", $choice->id, $cm->id); + if ($current) { + $newanswer = $current; + $newanswer->answer = $form->answer; + $newanswer->timemodified = $timenow; + if (! update_record("choice_answers", $newanswer)) { + error("Could not update your choice"); } + add_to_log($course->id, "choice", "choose again", "view.php?id=$cm->id", $choice->id, $cm->id); } else { - error("this choice is full!"); + $newanswer->choice = $choice->id; + $newanswer->userid = $USER->id; + $newanswer->answer = $form->answer; + $newanswer->timemodified = $timenow; + if (! insert_record("choice_answers", $newanswer)) { + error("Could not save your choice"); + } + add_to_log($course->id, "choice", "choose", "view.php?id=$cm->id", $choice->id, $cm->id); } } redirect("view.php?id=$cm->id"); exit; } - -/// Display the choice and possibly results - $strchoice = get_string("modulename", "choice"); $strchoices = get_string("modulenameplural", "choice"); add_to_log($course->id, "choice", "view", "view.php?id=$cm->id", $choice->id, $cm->id); - print_header_simple(format_string($choice->name), "", - "<a href=\"index.php?id=$course->id\">$strchoices</a> -> ".format_string($choice->name), "", "", true, + print_header_simple("$choice->name", "", + "<A HREF=index.php?id=$course->id>$strchoices</A> -> $choice->name", "", "", true, update_module_button($cm->id, $course->id, $strchoice), navmenu($course, $cm)); /// Check to see if groups are being used in this choice @@ -95,166 +75,77 @@ } if (isteacher($course->id)) { - if ( $allanswers = get_records("choice_answers", "choiceid", $choice->id)) { - $responsecount = 0; - foreach ($allanswers as $aa) { - if (isstudent($course->id, $aa->userid) or isteacher($course->id, $aa->userid)) { //check to make sure user is enrolled in course. - $responsecount++; - } - } + if ( $allanswers = get_records("choice_answers", "choice", $choice->id)) { + $responsecount = count($allanswers); } else { $responsecount = 0; } - echo '<div class="reportlink">'; - echo "<a href=\"report.php?id=$cm->id\">".get_string("viewallresponses", "choice", $responsecount)."</a>"; - echo '</div>'; + echo "<P align=right><A HREF=\"report.php?id=$cm->id\">".get_string("viewallresponses", "choice", $responsecount)."</A></P>"; } else if (!$cm->visible) { notice(get_string("activityiscurrentlyhidden")); } - if ($choice->text) { - print_simple_box(format_text($choice->text, $choice->format), 'center', '70%', '', 5, 'generalbox', 'intro'); - } + print_simple_box( format_text($choice->text) , "center"); - //if user has already made a selection, and they are not allowed to update it, show their selected answer. - if (isset($USER->id) && ($current = get_record('choice_answers', 'choiceid', $choice->id, 'userid', $USER->id)) && !$choice->allowupdate) { - print_simple_box(get_string("yourselection", "choice", userdate($choice->timeopen)).": ".format_string(choice_get_option_text($choice, $current->optionid)), "center"); - } - -/// Print the form + // print the form + if ($choice->timeopen > time() ) { print_simple_box(get_string("notopenyet", "choice", userdate($choice->timeopen)), "center"); - print_footer($course); + print_footer(); exit; } - if ( (!$current or $choice->allowupdate) and ($choice->timeclose >= time() or $choice->timeclose == 0) ) { + if ( (!$current or $choice->allowupdate) and ($choice->timeclose >= time() or $choice->timeclose == 0) ) { // They haven't made their choice yet or updates allowed and choice is open + + echo "<CENTER><P><FORM name=\"form\" method=\"post\" action=\"view.php\">"; + echo "<TABLE CELLPADDING=20 CELLSPACING=20><TR>"; - echo "<form name=\"form\" method=\"post\" action=\"view.php\">"; - - switch ($choice->display) { - case CHOICE_DISPLAY_HORIZONTAL: - echo "<table cellpadding=\"20\" cellspacing=\"20\" align=\"center\"><tr>"; - $aid = 0; - foreach ($choice->option as $optionid => $text) { - if ($text) { - echo "<td align=\"center\" valign=\"top\">"; - echo "<input type=\"radio\" name=\"answer\" value=\"".$optionid."\" ".$answerchecked[$optionid]." alt=\"".strip_tags(format_text($text))."\" />"; - $countanswers = (get_records("choice_answers", "optionid", $optionid)); - if ($countanswers) { - $countanswers = count($countanswers); - } else { - $countanswers = 0; - } - $maxans = $choice->maxanswers[$optionid]; - if ($choice->limitanswers && ($countanswers >= $maxans) ) { - if (!($answerchecked[$optionid])) { - echo "<script type=\"text/javascript\">"; - echo "document.form.answer[".$aid."].disabled = true;"; - echo "</script>"; - } - echo format_text($text."<br><strong>".get_string('full', 'choice')."</strong>"); - } else { - echo format_text($text); - - } - echo "</td>"; - $aid++; - } - } - echo "</tr>"; - echo "</table>"; - break; - - case CHOICE_DISPLAY_VERTICAL: - $aid = 0; - $displayoptions->para = false; - echo "<table cellpadding=\"10\" cellspacing=\"10\" align=\"center\">"; - foreach ($choice->option as $optionid => $text) { - if ($text) { - echo "<tr><td align=\"left\">"; - echo "<input type=\"radio\" name=\"answer\" value=\"".$optionid."\" ".$answerchecked[$optionid]." alt=\"".strip_tags(format_text($text, FORMAT_MOODLE, $displayoptions))."\" />"; - $countanswers = get_records("choice_answers", "optionid", $optionid); - if ($countanswers) { - $countanswers = count($countanswers); - } else { - $countanswers = 0; - } - $maxans = $choice->maxanswers[$optionid]; - if ($choice->limitanswers && ($countanswers >= $maxans) ) { - if (!($answerchecked[$optionid])) { - echo "<script type=\"text/javascript\">"; - echo "document.form.answer[".$aid."].disabled = true;"; - echo "</script>"; - } - } - echo format_text($text. ' ', FORMAT_MOODLE, $displayoptions); - - if ($choice->limitanswers && ($choice->release==CHOICE_RELEASE_ALWAYS) ){ - echo "</td><td>"; - - if ($maxans-$countanswers==0) { - echo get_string('full', 'choice'); - } elseif ($maxans-$countanswers==1) { - echo ($maxans - $countanswers); - echo " ".get_string('spaceleft', 'choice'); - } else { - echo ($maxans - $countanswers); - echo " ".get_string('spacesleft', 'choice'); - } - echo "</td>"; - } else if ($choice->limitanswers && ($countanswers >= $maxans)) { - echo " <strong>".get_string('full', 'choice')."</strong>"; - } - - echo "</td>"; - echo "</tr>"; - $aid++; - } - } - echo "</table>"; - break; + foreach ($choice->answer as $key => $answer) { + if ($answer) { + echo "<TD ALIGN=CENTER>"; + echo "<INPUT type=radio name=answer value=\"$key\" ".$answerchecked[$key].">"; + p($answer); + echo "</TD>"; + } } - - echo "<center>"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />"; - if (isstudent($course->id) or isteacher($course->id, 0)) { - echo "<input type=\"submit\" value=\"".get_string("savemychoice","choice")."\" />"; + + echo "</TR></TABLE>"; + echo "<INPUT type=hidden name=id value=\"$cm->id\">"; + if (isstudent($course->id) or isteacher($course->id, 0, false)) { + echo "<INPUT type=submit value=\"".get_string("savemychoice","choice")."\">"; } else { print_string('havetologin', 'choice'); } - echo "</center>"; - echo "</form>"; + echo "</P></FORM></CENTER>"; } + - - // print the results at the bottom of the screen + // print the results if ( $choice->release == CHOICE_RELEASE_ALWAYS or ( $choice->release == CHOICE_RELEASE_AFTER_ANSWER and $current ) or ( $choice->release == CHOICE_RELEASE_AFTER_CLOSE and $choice->timeclose <= time() ) ) { - + print_heading(get_string("responses", "choice")); if ($currentgroup) { - $users = get_group_users($currentgroup, "u.firstname ASC", '', 'u.id, u.picture, u.firstname, u.lastname') + get_admins(); + $users = get_group_users($currentgroup, "u.firstname ASC"); } else { - $users = get_course_users($course->id, "u.firstname ASC", '', 'u.id, u.picture, u.firstname, u.lastname') + get_admins(); + $users = get_course_users($course->id, "u.firstname ASC"); } - if (!$users) { print_heading(get_string("nousersyet")); print_footer($course); exit; } - if ($allresponses = get_records("choice_answers", "choiceid", $choice->id)) { - foreach ($allresponses as $aa) { + if ( $allanswers = get_records("choice_answers", "choice", $choice->id)) { + foreach ($allanswers as $aa) { $answers[$aa->userid] = $aa; } } else { @@ -263,20 +154,20 @@ $timenow = time(); - foreach ($choice->option as $optionid => $text) { - $useranswer[$optionid] = array(); + foreach ($choice->answer as $key => $answer) { + $useranswer[$key] = array(); } foreach ($users as $user) { if (!empty($user->id) and !empty($answers[$user->id])) { $answer = $answers[$user->id]; - $useranswer[(int)$answer->optionid][] = $user; + $useranswer[(int)$answer->answer][] = $user; } else { $useranswer[0][] = $user; } } - foreach ($choice->option as $optionid => $text) { - if (!$choice->option[$optionid]) { - unset($useranswer[$optionid]); // Throw away any data that doesn't apply + foreach ($choice->answer as $key => $answer) { + if (!$choice->answer[$key]) { + unset($useranswer[$key]); // Throw away any data that doesn't apply } } ksort($useranswer); @@ -288,70 +179,42 @@ $tablewidth = (int) (100.0 / count($useranswer)); - echo "<table cellpadding=\"5\" cellspacing=\"10\" align=\"center\">"; + echo "<table cellpadding=5 cellspacing=10 align=center>"; echo "<tr>"; - foreach ($useranswer as $optionid => $userlist) { - if ($optionid) { - echo "<th class=\"col$optionid\" width=\"$tablewidth%\">"; + foreach ($useranswer as $key => $answer) { + if ($key) { + echo "<th width=\"$tablewidth%\">"; } else if ($choice->showunanswered) { - echo "<th class=\"col$optionid\" width=\"$tablewidth%\">"; + echo "<th bgcolor=\"$THEME->body\" width=\"$tablewidth%\">"; } else { continue; } - echo format_string(choice_get_option_text($choice, $optionid)); + echo choice_get_answer($choice, $key); echo "</th>"; } echo "</tr><tr>"; - - foreach ($useranswer as $optionid => $userlist) { - if ($optionid) { - echo "<td class=\"col$optionid\" width=\"$tablewidth%\" valign=\"top\" nowrap=\"nowrap\">"; + + foreach ($useranswer as $key => $answer) { + if ($key) { + echo "<td width=\"$tablewidth%\" valign=top nowrap bgcolor=\"$THEME->cellcontent\">"; } else if ($choice->showunanswered) { - echo "<td class=\"col$optionid\" width=\"$tablewidth%\" valign=\"top\" nowrap=\"nowrap\">"; + echo "<td width=\"$tablewidth%\" valign=top nowrap bgcolor=\"$THEME->body\">"; } else { continue; } - - echo "<table width=\"100%\">"; - foreach ($userlist as $user) { - if (!($optionid==0 && isadmin($user->id)) && !($optionid==0 && isteacher($course->id, $user->id) && !(isteacheredit($course->id, $user->id)) ) ) { //make sure admins and hidden teachers are not shown in not answered yet column. - echo "<tr><td width=\"10\" nowrap=\"nowrap\">"; - print_user_picture($user->id, $course->id, $user->picture); - echo "</td><td width=\"100%\" nowrap=\"nowrap\">"; - echo "<p>".fullname($user, $isteacher)."</p>"; - echo "</td></tr>"; - } + + echo "<table width=100%>"; + foreach ($answer as $user) { + echo "<tr><td width=10 nowrap>"; + print_user_picture($user->id, $course->id, $user->picture); + echo "</td><td width=100% nowrap>"; + echo "<p>".fullname($user, $isteacher)."</p>"; + echo "</td></tr>"; } echo "</table>"; - + echo "</td>"; } - echo "</tr><tr>"; - foreach ($useranswer as $optionid => $userlist) { - if (!$optionid and !$choice->showunanswered) { - continue; - } - echo "<td align=\"center\">"; - $countanswers = get_records("choice_answers", "optionid", $optionid); - if ($countanswers) { - $countanswers = count($countanswers); - } else { - $countanswers = 0; - } - if ($choice->limitanswers && !$optionid==0) { - echo get_string("taken", "choice").":"; - echo $countanswers; - echo "<br>"; - echo get_string("limit", "choice").":"; - $choice_option = get_record("choice_options", "id", $optionid); - echo $choice_option->maxanswers; - echo "</td>"; - } - } - - - - echo "</tr></table>"; break; @@ -359,76 +222,60 @@ case CHOICE_PUBLISH_ANONYMOUS: $tablewidth = (int) (100.0 / count($useranswer)); - echo "<table cellpadding=\"5\" cellspacing=\"10\" align=\"center\">"; + echo "<table cellpadding=5 cellspacing=10 align=center>"; echo "<tr>"; - foreach ($useranswer as $optionid => $userlist) { - if ($optionid) { + foreach ($useranswer as $key => $answer) { + if ($key) { echo "<th width=\"$tablewidth%\">"; } else if ($choice->showunanswered) { - echo "<th width=\"$tablewidth%\">"; + echo "<th bgcolor=\"$THEME->body\" width=\"$tablewidth%\">"; } else { continue; } - echo format_string(choice_get_option_text($choice, $optionid)); + echo choice_get_answer($choice, $key); echo "</th>"; } - echo "</tr><tr>"; + echo "</tr>"; $maxcolumn = 0; - foreach ($useranswer as $optionid => $userlist) { - if (!$optionid and !$choice->showunanswered) { + foreach ($useranswer as $key => $answer) { + if (!$key and !$choice->showunanswered) { continue; } - $column[$optionid] = 0; - foreach ($userlist as $user) { - if (!($optionid==0 && isadmin($user->id)) && !($optionid==0 && isteacher($course->id, $user->id) && !(isteacheredit($course->id, $user->id)) ) ) { //make sure admins and hidden teachers are not shown in not answered yet column. - $column[$optionid]++; - } - } - if ($column[$optionid] > $maxcolumn) { - $maxcolumn = $column[$optionid]; + $column[$key] = count($answer); + if ($column[$key] > $maxcolumn) { + $maxcolumn = $column[$key]; } } - echo "</tr><tr>"; - foreach ($useranswer as $optionid => $userlist) { - if (!$optionid and !$choice->showunanswered) { + echo "<tr>"; + foreach ($useranswer as $key => $answer) { + if (!$key and !$choice->showunanswered) { continue; } $height = 0; if ($maxcolumn) { - $height = $COLUMN_HEIGHT * ((float)$column[$optionid] / (float)$maxcolumn); + $height = $COLUMN_HEIGHT * ((float)$column[$key] / (float)$maxcolumn); } echo "<td valign=\"bottom\" align=\"center\">"; - echo "<img src=\"column.png\" height=\"$height\" width=\"49\" alt=\"\" />"; + echo "<img src=\"column.png\" height=\"$height\" width=\"49\">"; echo "</td>"; } echo "</tr>"; echo "<tr>"; - foreach ($useranswer as $optionid => $userlist) { - if (!$optionid and !$choice->showunanswered) { + foreach ($useranswer as $key => $answer) { + if (!$key and !$choice->showunanswered) { continue; } - echo "<td align=\"center\">"; - if ($choice->limitanswers && !$optionid==0) { - echo get_string("taken", "choice").":"; - echo $column[$optionid]; - echo "<br>"; - echo get_string("limit", "choice").":"; - $choice_option = get_record("choice_options", "id", $optionid); - echo $choice_option->maxanswers; - echo "</td>"; - } else { - echo $column[$optionid]; - } + echo "<td align=\"center\">".$column[$key]."</td>"; } echo "</tr></table>"; break; } } - + print_footer($course); diff --git a/mod/dialogue/backuplib.php b/mod/dialogue/backuplib.php index 1ad94113a3a..9b5798a0da5 100644 --- a/mod/dialogue/backuplib.php +++ b/mod/dialogue/backuplib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //dialogue mods @@ -87,13 +87,12 @@ fwrite ($bf,full_tag("CTYPE",6,false,$conversation->ctype)); fwrite ($bf,full_tag("FORMAT",6,false,$conversation->format)); fwrite ($bf,full_tag("SUBJECT",6,false,$conversation->subject)); - - //if we've selected to backup users info, then execute backup_dialogue_entries - if ($preferences->mods["dialogue"]->userinfo) { - $status = backup_dialogue_entries($bf,$preferences,$conversation->id); - } //End entry $status =fwrite ($bf,end_tag("CONVERSATION",5,true)); + } + //if we've selected to backup users info, then execute backup_dialogue_entries + if ($preferences->mods["dialogue"]->userinfo) { + $status = backup_dialogue_entries($bf,$preferences,$conversation->id); } //Write end tag diff --git a/mod/dialogue/db/mysql.php b/mod/dialogue/db/mysql.php index 6a34befb477..c2f7df0aa3e 100644 --- a/mod/dialogue/db/mysql.php +++ b/mod/dialogue/db/mysql.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function dialogue_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -14,21 +14,7 @@ function dialogue_upgrade($oldversion) { if ($oldversion < 2003101300) { execute_sql(" ALTER TABLE `{$CFG->prefix}dialogue_conversations` ADD `seenon` INT(10) unsigned NOT NULL DEFAULT '0' AFTER `closed`"); } - - if ($oldversion < 2004111000) { - execute_sql("ALTER TABLE {$CFG->prefix}dialogue DROP KEY course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}dialogue_conversations DROP KEY recipientid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}dialogue_conversations DROP KEY userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}dialogue_entries DROP KEY dialogueid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}dialogue_entries DROP KEY userid;",false); - modify_database('','ALTER TABLE prefix_dialogue ADD KEY course (course);'); - modify_database('','ALTER TABLE prefix_dialogue_conversations ADD KEY recipientid (recipientid);'); - modify_database('','ALTER TABLE prefix_dialogue_conversations ADD KEY userid (userid);'); - modify_database('','ALTER TABLE prefix_dialogue_entries ADD KEY dialogueid (dialogueid);'); - modify_database('','ALTER TABLE prefix_dialogue_entries ADD KEY userid (userid);'); - } - $result = true; return $result; } diff --git a/mod/dialogue/db/mysql.sql b/mod/dialogue/db/mysql.sql index 44c44544868..a6fb38d8605 100644 --- a/mod/dialogue/db/mysql.sql +++ b/mod/dialogue/db/mysql.sql @@ -30,8 +30,7 @@ CREATE TABLE prefix_dialogue ( timemodified int(10) unsigned NOT NULL default '0', name varchar(255) default NULL, intro text, - PRIMARY KEY (id), - KEY course (course) + PRIMARY KEY (id) ) TYPE=MyISAM; # -------------------------------------------------------- @@ -52,10 +51,8 @@ CREATE TABLE prefix_dialogue_conversations ( format tinyint(2) NOT NULL default '0', subject varchar(100) not null default '', PRIMARY KEY (id), - KEY dialogueid (dialogueid), - KEY timemodified (timemodified), - KEY userid (userid), - KEY recipientid (recipientid) + KEY (dialogueid), + KEY (timemodified) ) TYPE=MyISAM COMMENT='All the conversations between pairs of people'; # @@ -71,9 +68,7 @@ CREATE TABLE prefix_dialogue_entries ( mailed int(1) unsigned NOT NULL default '0', text text NOT NULL, PRIMARY KEY (id), - KEY conversationid (conversationid), - KEY dialogueid (dialogueid), - KEY userid (userid) + KEY (conversationid) ) TYPE=MyISAM COMMENT='All the conversation entries'; # diff --git a/mod/dialogue/db/postgres7.php b/mod/dialogue/db/postgres7.php index 7f66c0878f6..51920dd1171 100644 --- a/mod/dialogue/db/postgres7.php +++ b/mod/dialogue/db/postgres7.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function dialogue_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -6,20 +6,6 @@ function dialogue_upgrade($oldversion) { global $CFG; - if ($oldversion < 2004111000) { - execute_sql("DROP INDEX {$CFG->prefix}dialogue_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}dialogue_conversations_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}dialogue_conversations_recipientid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}dialogue_entries_dialogueid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}dialogue_entries_userid_idx;",false); - - modify_database('','CREATE INDEX prefix_dialogue_course_idx ON prefix_dialogue (course);'); - modify_database('','CREATE INDEX prefix_dialogue_conversations_userid_idx ON prefix_dialogue_conversations (userid);'); - modify_database('','CREATE INDEX prefix_dialogue_conversations_recipientid_idx ON prefix_dialogue_conversations (recipientid);'); - modify_database('','CREATE INDEX prefix_dialogue_entries_dialogueid_idx ON prefix_dialogue_entries (dialogueid);'); - modify_database('','CREATE INDEX prefix_dialogue_entries_userid_idx ON prefix_dialogue_entries (userid);'); - } - $result = true; return $result; } diff --git a/mod/dialogue/db/postgres7.sql b/mod/dialogue/db/postgres7.sql index 6ea981eee21..6a8bcbf5269 100644 --- a/mod/dialogue/db/postgres7.sql +++ b/mod/dialogue/db/postgres7.sql @@ -28,13 +28,9 @@ CREATE TABLE prefix_dialogue ( multipleconversations INT NOT NULL default '0', maildefault INT NOT NULL default '0', timemodified INT8 NOT NULL default '0', - name varchar(255) NOT NULL default '', + name varchar(255) default NULL, intro text ) ; - -CREATE INDEX prefix_dialogue_course_idx ON prefix_dialogue (course); - - # -------------------------------------------------------- # @@ -56,8 +52,6 @@ CREATE TABLE prefix_dialogue_conversations ( ) ; CREATE INDEX prefix_dialogue_conversations_timemodified_idx ON prefix_dialogue_conversations (timemodified) ; CREATE INDEX prefix_dialogue_conversations_dialogueid_idx ON prefix_dialogue_conversations (dialogueid) ; -CREATE INDEX prefix_dialogue_conversations_userid_idx ON prefix_dialogue_conversations (userid); -CREATE INDEX prefix_dialogue_conversations_recipientid_idx ON prefix_dialogue_conversations (recipientid); # # Table structure for table dialogue_entries @@ -73,12 +67,9 @@ CREATE TABLE prefix_dialogue_entries ( text text NOT NULL default '' ) ; CREATE INDEX prefix_dialogue_entries_conversationid_idx ON prefix_dialogue_entries (conversationid) ; -CREATE INDEX prefix_dialogue_entries_dialogueid_idx ON prefix_dialogue_entries (dialogueid); -CREATE INDEX prefix_dialogue_entries_userid_idx ON prefix_dialogue_entries (userid); # # Data for the table log_display # INSERT INTO prefix_log_display VALUES ('dialogue', 'view', 'dialogue', 'name'); - diff --git a/mod/dialogue/dialogues.php b/mod/dialogue/dialogues.php index 9f169421aa1..76118262815 100644 --- a/mod/dialogue/dialogues.php +++ b/mod/dialogue/dialogues.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /************************************************* ACTIONS handled are: @@ -11,7 +11,7 @@ printdialogue showdialogues updatesubject - + ************************************************/ require_once("../../config.php"); @@ -32,34 +32,23 @@ error("Course module dialogue is incorrect"); } - require_login($course->id, false, $cm); - + require_login($course->id); + // set up some general variables $usehtmleditor = can_use_html_editor(); $strdialogues = get_string("modulenameplural", "dialogue"); $strdialogue = get_string("modulename", "dialogue"); - + // ... print the header and... print_header_simple("$dialogue->name", "", - "<a href=\"index.php?id=$course->id\">$strdialogues</a> -> - <a hre=\"view.php?id=$cm->id\">$dialogue->name</a>", + "<A HREF=index.php?id=$course->id>$strdialogues</A> -> + <A HREF=\"view.php?id=$cm->id\">$dialogue->name</A>", "", "", true); require_variable($action); // need something to do! - - // vet conversation id, if present - if (!empty($_REQUEST['cid'])) { - if ($conversation = get_record("dialogue_conversations", "id", $_REQUEST['cid'])) { - if (($conversation->userid <> $USER->id) and ($conversation->recipientid <> $USER->id)) { - error("Dialogue id incorrect"); - } - } else { - error("Dialogue: Conversation record not found"); - } - } - + /************** close conversation ************************************/ if ($action == 'closeconversation') { if (empty($_GET['cid'])) { @@ -77,10 +66,10 @@ $pane=$_GET['pane']; add_to_log($course->id, "dialogue", "closed", "view.php?id=$cm->id", "$conversationid"); - redirect("view.php?id=$cm->id&amp;pane=$pane", get_string("dialogueclosed", "dialogue")); + redirect("view.php?id=$cm->id&pane=$pane", get_string("dialogueclosed", "dialogue")); } - - + + /****************** confirm close ************************************/ elseif ($action == 'confirmclose' ) { @@ -101,11 +90,11 @@ } } $pane = $_GET['pane']; - notice_yesno(get_string("confirmclosure", "dialogue", fullname($user)), - "dialogues.php?action=closeconversation&amp;id=$cm->id&amp;cid=$conversation->id&amp;pane=$pane", - "view.php?id=$cm->id&amp;pane=$pane"); + notice_yesno(get_string("confirmclosure", "dialogue", fullname($user)), + "dialogues.php?action=closeconversation&id=$cm->id&cid=$conversation->id&pane=$pane", + "view.php?id=$cm->id&pane=$pane"); } - + /****************** get subject ************************************/ elseif ($action == 'getsubject' ) { @@ -114,20 +103,20 @@ } print_heading(get_string("addsubject", "dialogue")); echo "<form name=\"getsubjectform\" method=\"post\" action=\"dialogues.php\">\n"; - echo "<input type=\"hidden\" name=\"action\" value=\"updatesubject\"/>\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"".p($_GET[id])."\"/>\n"; - echo "<input type=\"hidden\" name=\"cid\" value=\"".p($_GET[cid])."\"/>\n"; - echo "<input type=\"hidden\" name=\"pane\" value=\"".p($_GET[pane])."\"/>\n"; - echo "<table align=\"center\" border=\"1\" width=\"60%\">\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"updatesubject\">\n"; + echo "<input type=\"hidden\" name=\"id\" value=\"$_GET[id]\">\n"; + echo "<input type=\"hidden\" name=\"cid\" value=\"$_GET[cid]\">\n"; + echo "<input type=\"hidden\" name=\"pane\" value=\"$_GET[pane]\">\n"; + echo "<center><table border=\"1\" width=\"60%\">\n"; echo "<tr><td align=\"right\"><b>".get_string("subject", "dialogue")."</b></td>"; - echo "<td><input type=\"text\" size=\"50\" maxsize=\"100\" name=\"subject\" - value=\"\" /></td></tr>\n"; + echo "<td><input type=\"text\" size=\"50\" maxsize=\"100\" name=\"subject\" + value=\"\"></td></tr>\n"; echo "<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"". - get_string("addsubject", "dialogue")."\" /></td></tr>\n"; - echo "</table></form>\n"; + get_string("addsubject", "dialogue")."\"></td></tr>\n"; + echo "</table></center></form>\n"; } - - + + /****************** insert conversation entries ******************************/ elseif ($action == 'insertentries' ) { @@ -146,22 +135,22 @@ $item->dialogueid = $dialogue->id; $item->conversationid = $conversation->id; $item->userid = $USER->id; - $item->timecreated = time(); - // reverse the dialogue mail default + $item->timecreated = time(); + // reverse the dialogue mail default $item->mailed = !$dialogue->maildefault; - $item->text = clean_text($_POST[$textarea_name]); + $item->text = $_POST[$textarea_name]; if (!$item->id = insert_record("dialogue_entries", $item)) { error("Insert Entries: Could not insert dialogue record!"); } if (!set_field("dialogue_conversations", "lastid", $USER->id, "id", $conversation->id)) { error("Insert Dialogue Entries: could not set lastid"); } - if (!set_field("dialogue_conversations", "timemodified", $timenow, "id", + if (!set_field("dialogue_conversations", "timemodified", $timenow, "id", $conversation->id)) { error("Insert Dialogue Entries: could not set lastid"); } // reset seenon time - if (!set_field("dialogue_conversations", "seenon", 0, "id", + if (!set_field("dialogue_conversations", "seenon", 0, "id", $conversation->id)) { error("Insert Dialogue Entries: could not reset seenon"); } @@ -170,19 +159,20 @@ } } } - redirect("view.php?id=$cm->id&amp;pane={$_POST['pane']}", get_string("numberofentriesadded", + redirect("view.php?id=$cm->id&pane={$_POST['pane']}", get_string("numberofentriesadded", "dialogue", $n)); } - + /****************** list closed conversations *********************************/ elseif ($action == 'listclosed') { - + + echo "<center>\n"; print_simple_box( text_to_html($dialogue->intro) , "center"); echo "<br />"; - + dialogue_list_closed_conversations($dialogue); } - + /****************** open conversation ************************************/ elseif ($action == 'openconversation' ) { @@ -206,7 +196,7 @@ } if ($recipients) { $n = 0; - foreach ($recipients as $recipient) { + foreach ($recipients as $recipient) { if ($recipient->id == $USER->id) { // teacher could be member of a group continue; } @@ -220,7 +210,7 @@ $conversation->recipientid = $recipient->id; $conversation->lastid = $USER->id; // this USER is adding an entry too $conversation->timemodified = time(); - $conversation->subject = clean_text($_POST['subject']); // may be blank + $conversation->subject = $_POST['subject']; // may be blank if (!$conversation->id = insert_record("dialogue_conversations", $conversation)) { error("Open dialogue: Could not insert dialogue record!"); } @@ -231,10 +221,10 @@ $entry->dialogueid = $dialogue->id; $entry->conversationid = $conversation->id; $entry->userid = $USER->id; - $entry->timecreated = time(); + $entry->timecreated = time(); // reverse the dialogue default value $entry->mailed = !$dialogue->maildefault; - $entry->text = clean_text($_POST['firstentry']); + $entry->text = $_POST['firstentry']; if (!$entry->id = insert_record("dialogue_entries", $entry)) { error("Insert Entries: Could not insert dialogue record!"); } @@ -252,7 +242,7 @@ } redirect("view.php?id=$cm->id", get_string("dialogueopened", "dialogue", $group->name)); } else { // all participants - redirect("view.php?id=$cm->id", get_string("dialogueopened", "dialogue", + redirect("view.php?id=$cm->id", get_string("dialogueopened", "dialogue", get_string("allparticipants"))); } } else { @@ -263,52 +253,54 @@ } } } - + /****************** print dialogue (allowing new entry)********************/ elseif ($action == 'printdialogue') { - - // if (!$conversation = get_record("dialogue_conversations", "id", $_GET['cid'])) { - // error("Print Dialogue: can not get conversation record"); - // } - + + if (!$conversation = get_record("dialogue_conversations", "id", $_GET['cid'])) { + error("Print Dialogue: can not get conversation record"); + } + + echo "<center>\n"; print_simple_box( text_to_html($dialogue->intro) , "center"); echo "<br />"; - + dialogue_print_conversation($dialogue, $conversation); } - + /****************** show dialogues ****************************************/ elseif ($action == 'showdialogues') { - + if (!$conversation = get_record("dialogue_conversations", "id", $_GET['cid'])) { error("Show Dialogue: can not get conversation record"); } - + + echo "<center>\n"; print_simple_box( text_to_html($dialogue->intro) , "center"); echo "<br />"; - + dialogue_show_conversation($dialogue, $conversation); dialogue_show_other_conversations($dialogue, $conversation); } - + /****************** update subject ****************************************/ elseif ($action == 'updatesubject') { - + if (!$conversation = get_record("dialogue_conversations", "id", $_POST['cid'])) { error("Update Subject: can not get conversation record"); } - + if (!$_POST['subject']) { - redirect("view.php?id=$cm->id&amp;pane=$_POST[pane]", get_string("nosubject", "dialogue")); - } elseif (!set_field("dialogue_conversations", "subject", clean_text($_POST['subject']), "id", $_POST['cid'])) { + redirect("view.php?id=$cm->id&pane=$_POST[pane]", get_string("nosubject", "dialogue")); + } elseif (!set_field("dialogue_conversations", "subject", $_POST['subject'], "id", $_POST['cid'])) { error("Update subject: could not update conversation record"); } - redirect("view.php?id=$cm->id&amp;pane=$_POST[pane]", get_string("subjectadded", "dialogue")); + redirect("view.php?id=$cm->id&pane=$_POST[pane]", get_string("subjectadded", "dialogue")); } - + /*************** no man's land **************************************/ else { diff --git a/mod/dialogue/index.php b/mod/dialogue/index.php index 385008dda63..a7606af8fda 100644 --- a/mod/dialogue/index.php +++ b/mod/dialogue/index.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); @@ -31,7 +31,7 @@ $timenow = time(); $table->head = array ($strname, $stropendialogues, $strcloseddialogues); - $table->align = array ("center", "center", "center"); + $table->align = array ("CENTER", "CENTER", "CENTER"); foreach ($dialogues as $dialogue) { diff --git a/mod/dialogue/lib.php b/mod/dialogue/lib.php index 519195f14f5..fc36fbfab17 100644 --- a/mod/dialogue/lib.php +++ b/mod/dialogue/lib.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ $DIALOGUE_DAYS = array (0 => 0, 7 => 7, 14 => 14, 30 => 30, 150 => 150, 365 => 365 ); @@ -85,16 +85,16 @@ function dialogue_cron () { get_string("newentry", "dialogue"); $posttext = "$course->shortname -> $strdialogues -> $dialogue->name\n"; $posttext .= "---------------------------------------------------------------------\n"; - $posttext .= get_string("dialoguemail", "dialogue", $dialogueinfo)." \n"; + $posttext .= get_string("dialoguemail", "dialogue", $dialogueinfo); $posttext .= "---------------------------------------------------------------------\n"; if ($userto->mailformat == 1) { // HTML $posthtml = "<p><font face=\"sans-serif\">". "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ->". "<a href=\"$CFG->wwwroot/mod/dialogue/index.php?id=$course->id\">dialogues</a> ->". "<a href=\"$CFG->wwwroot/mod/dialogue/view.php?id=$cm->id\">$dialogue->name</a></font></p>"; - $posthtml .= "<hr /><font face=\"sans-serif\">"; + $posthtml .= "<hr><font face=\"sans-serif\">"; $posthtml .= "<p>".get_string("dialoguemailhtml", "dialogue", $dialogueinfo)."</p>"; - $posthtml .= "</font><hr />"; + $posthtml .= "</font><hr>"; } else { $posthtml = ""; } @@ -161,15 +161,19 @@ function dialogue_print_recent_activity($course, $isteacher, $timestart) { } // if we got some "live" ones then output them if ($addentrycontent) { - print_headline(get_string('newdialogueentries', 'dialogue').':'); + $strftimerecent = get_string("strftimerecent"); + print_headline(get_string("newdialogueentries", "dialogue").":"); foreach ($logs as $log) { //Create a temp valid module structure (only need courseid, moduleid) $tempmod->course = $course->id; $tempmod->id = $log->dialogueid; //Obtain the visible property from the instance if (instance_is_visible("dialogue",$tempmod)) { - print_recent_activity_note($log->time, $log, $isteacher, $log->name, - $CFG->wwwroot.'/mod/dialogue/'.str_replace('&', '&amp;', $log->url)); + $date = userdate($log->time, $strftimerecent); + echo '<p><font size="1">'.$date.' - '.fullname($log).'<br />'; + echo "\"<a href=\"$CFG->wwwroot/mod/dialogue/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; } } } @@ -184,28 +188,66 @@ function dialogue_print_recent_activity($course, $isteacher, $timestart) { $tempmod->course = $course->id; $tempmod->id = $log->dialogueid; //Obtain the visible property from the instance - if (instance_is_visible('dialogue',$tempmod)) { + if (instance_is_visible("dialogue",$tempmod)) { $opencontent = true; break; } } - // if we got some 'live' ones then output them + // if we got some "live" ones then output them if ($opencontent) { - print_headline(get_string('opendialogueentries', 'dialogue').':'); + $strftimerecent = get_string("strftimerecent"); + print_headline(get_string("opendialogueentries", "dialogue").":"); foreach ($logs as $log) { //Create a temp valid module structure (only need courseid, moduleid) $tempmod->course = $course->id; $tempmod->id = $log->dialogueid; //Obtain the visible property from the instance - if (instance_is_visible('dialogue',$tempmod)) { - print_recent_activity_note($log->time, $log, $isteacher, $log->name, - $CFG->wwwroot.'/mod/dialogue/'.str_replace('&', '&amp;', $log->url)); + if (instance_is_visible("dialogue",$tempmod)) { + $date = userdate($log->time, $strftimerecent); + echo '<p><font size="1">'.$date.' - '.fullname($log).'<br />'; + echo "\"<a href=\"$CFG->wwwroot/mod/dialogue/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; } } } } - return $addentrycontent or $opencontent; + // have a look for closed conversations + $closedcontent = false; + if ($logs = dialogue_get_closed_logs($course, $timestart)) { + // got some, see if any belong to a visible module + foreach ($logs as $log) { + // Create a temp valid module structure (only need courseid, moduleid) + $tempmod->course = $course->id; + $tempmod->id = $log->dialogueid; + //Obtain the visible property from the instance + if (instance_is_visible("dialogue",$tempmod)) { + $closedcontent = true; + break; + } + } + // if we got some "live" ones then output them + if ($closedcontent) { + $strftimerecent = get_string("strftimerecent"); + print_headline(get_string("modulenameplural", "dialogue").":"); + foreach ($logs as $log) { + //Create a temp valid module structure (only need courseid, moduleid) + $tempmod->course = $course->id; + $tempmod->id = $log->dialogueid; + //Obtain the visible property from the instance + if (instance_is_visible("dialogue",$tempmod)) { + $date = userdate($log->time, $strftimerecent); + echo "<p><font size=1>$date - ".get_string("namehascloseddialogue", "dialogue", + fullname($log))."<br />"; + echo "\"<a href=\"$CFG->wwwroot/mod/dialogue/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; + } + } + } + } + return $addentrycontent or $closedcontent; } @@ -391,7 +433,7 @@ function dialogue_get_open_conversations($course) { if (empty($USER->id)) { return false; } - if ($conversations = get_records_sql("SELECT d.name AS dialoguename, c.id, c.dialogueid, c.timemodified, c.lastid + if ($conversations = get_records_sql("SELECT d.name dialoguename, c.id, c.dialogueid, c.timemodified, c.lastid FROM {$CFG->prefix}dialogue d, {$CFG->prefix}dialogue_conversations c WHERE d.course = $course->id AND c.dialogueid = d.id diff --git a/mod/dialogue/locallib.php b/mod/dialogue/locallib.php index ee2e763d814..3db47524176 100644 --- a/mod/dialogue/locallib.php +++ b/mod/dialogue/locallib.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// Library of extra functions for the dialogue module @@ -61,14 +61,14 @@ function dialogue_get_participants($dialogueid) { global $CFG; //Get conversation's creators - $creators = get_records_sql("SELECT DISTINCT u.id, u.id + $creators = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}dialogue_conversations c WHERE c.dialogueid = '$dialogueid' and u.id = c.userid"); //Get conversation's receivers - $receivers = get_records_sql("SELECT DISTINCT u.id, u.id + $receivers = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}dialogue_conversations c WHERE c.dialogueid = '$dialogueid' and @@ -139,7 +139,7 @@ global $USER; $groupid = get_current_group($course->id); // add current group before list of students if it's the teacher - if (isteacher($course->id) and groupmode($course, $cm)) { + if (isteacher($course->id) and groupmode($course)) { // show teacher their current group if ($groupid) { if (!$group = get_record("groups", "id", $groupid)) { @@ -157,7 +157,7 @@ global $USER; // ...exclude self and... if ($USER->id != $otheruser->id) { // ...if teacher and groups then exclude students not in the current group - if (isteacher($course->id) and groupmode($course, $cm) and $groupid) { + if (isteacher($course->id) and groupmode($course) and $groupid) { if (!ismember($groupid, $otheruser->id)) { continue; } @@ -204,23 +204,12 @@ global $USER; if (! $course = get_record("course", "id", $dialogue->course)) { error("Course is misconfigured"); } - if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { - error("Course Module ID was incorrect"); - } - - $groupid = get_current_group($course->id); // get the teachers on this course (default sort order)... if ($users = get_course_teachers($course->id)) { // $names[0] = "-----------------------"; foreach ($users as $otheruser) { // ...exclude self and ... if ($USER->id != $otheruser->id) { - // ...if groupmode is SEPARATEGROUPS then exclude teachers not in student's group - if ($groupid and (groupmode($course, $cm) == SEPARATEGROUPS)) { - if (!ismember($groupid, $otheruser->id)) { - continue; - } - } // ...any already in open conversations unless multiple conversations allowed if ($dialogue->multipleconversations or count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND ((userid = $USER->id AND @@ -246,7 +235,8 @@ function dialogue_get_users_done($dialogue) { // make sure it works on the site course $select = "s.course = '$dialogue->course' AND"; - if ($courseid == SITEID) { + $site = get_site(); + if ($courseid == $site->id) { $select = ''; } if (!$students = get_records_sql("SELECT u.* @@ -316,7 +306,7 @@ function dialogue_list_conversations_closed($dialogue) { } natcasesort($names); - print_simple_box_start("center"); + print_simple_box_start(); $table->head = array (get_string("dialoguewith", "dialogue"), get_string("subject", "dialogue"), get_string("numberofentries", "dialogue"), get_string("lastentry", "dialogue"), get_string("status", "dialogue")); @@ -337,8 +327,8 @@ function dialogue_list_conversations_closed($dialogue) { } else { $status = get_string("open", "dialogue"); } - $table->data[] = array("<a href=\"dialogues.php?id=$cm->id&amp;action=showdialogues&amp;cid=$conversation->id\">". - "$name</a>", clean_text($conversation->subject), $byuser." ".get_string("of", "dialogue")." ".$total, + $table->data[] = array("<a href=\"dialogues.php?id=$cm->id&action=showdialogues&cid=$conversation->id\">". + "$name</a>", $conversation->subject, $byuser." ".get_string("of", "dialogue")." ".$total, userdate($conversation->timemodified), $status); } print_table($table); @@ -377,7 +367,7 @@ function dialogue_list_conversations_other($dialogue) { } natcasesort($names); - print_simple_box_start("center"); + print_simple_box_start(); $table->head = array (get_string("dialoguewith", "dialogue"), get_string("subject", "dialogue"), get_string("numberofentries", "dialogue"), get_string("lastentry", "dialogue"), get_string("status", "dialogue")); @@ -398,8 +388,8 @@ function dialogue_list_conversations_other($dialogue) { } else { $status = get_string("notyetseen", "dialogue"); } - $table->data[] = array("<a href=\"dialogues.php?id=$cm->id&amp;action=printdialogue&amp;cid=$conversation->id\">". - "$name</a>", clean_text($conversation->subject), $byuser." ".get_string("of", "dialogue")." ".$total, + $table->data[] = array("<a href=\"dialogues.php?id=$cm->id&action=printdialogue&cid=$conversation->id\">". + "$name</a>", $conversation->subject, $byuser." ".get_string("of", "dialogue")." ".$total, userdate($conversation->timemodified), $status); } print_table($table); @@ -427,9 +417,9 @@ function dialogue_list_conversations_self($dialogue) { $showbutton = false; echo "<form name=\"replies\" method=\"post\" action=\"dialogues.php\">\n"; - echo "<input type=\"hidden\" name=\"action\" value=\"insertentries\"/>\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n"; - echo "<input type=\"hidden\" name=\"pane\" value=\"1\" />\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"insertentries\">\n"; + echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; + echo "<input type=\"hidden\" name=\"pane\" value=\"1\">\n"; // list the conversations requiring a resonse from this user in full if ($conversations = dialogue_get_conversations($dialogue, $USER, "lastid != $USER->id AND closed = 0")) { @@ -442,9 +432,9 @@ function dialogue_list_conversations_self($dialogue) { error("List conversations self: could not set seenon"); } } - echo "<table align=\"center\" border=\"1\" cellspacing=\"0\" valign=\"top\" cellpadding=\"4\" + echo "<center><table border=\"1\" cellspacing=\"0\" valign=\"top\" cellpadding=\"4\" width=\"100%\">\n"; - echo "<tr><td bgcolor=\"$THEME->cellheading2\" valign=\"top\">\n"; + echo "<tr><TD BGCOLOR=\"$THEME->cellheading2\" valign=\"top\">\n"; if ($conversation->userid == $USER->id) { if (!$otheruser = get_record("user", "id", $conversation->recipientid)) { error("User not found"); @@ -455,20 +445,20 @@ function dialogue_list_conversations_self($dialogue) { error("User not found"); } } - $picture = print_user_picture($otheruser->id, $course->id, $otheruser->picture, false, true); - echo $picture." <b>".get_string("dialoguewith", "dialogue", fullname($otheruser)). + // print_user_picture($user->id, $course->id, $user->picture); + echo "<b>".get_string("dialoguewith", "dialogue", fullname($otheruser)). "</b></td>"; - echo "<td bgcolor=\"$THEME->cellheading2\"><i>".clean_text($conversation->subject)."&nbsp;</i><br />\n"; + echo "<td bgcolor=\"$THEME->cellheading2\"><i>$conversation->subject&nbsp;</i><br />\n"; echo "<div align=\"right\">\n"; if (!$conversation->subject) { // conversation does not have a subject, show add subject link - echo "<a href=\"dialogues.php?action=getsubject&amp;id=$cm->id&amp;cid=$conversation->id&amp;pane=2\">". + echo "<a href=\"dialogues.php?action=getsubject&id=$cm->id&cid=$conversation->id&pane=2\">". get_string("addsubject", "dialogue")."</a>\n"; helpbutton("addsubject", get_string("addsubject", "dialogue"), "dialogue"); echo "&nbsp; | "; } if (dialogue_count_entries($dialogue, $conversation)) { - echo "<a href=\"dialogues.php?action=confirmclose&amp;id=$cm->id&amp;cid=$conversation->id&amp;pane=1\">". + echo "<a href=\"dialogues.php?action=confirmclose&id=$cm->id&cid=$conversation->id&pane=1\">". get_string("close", "dialogue")."</a>\n"; helpbutton("closedialogue", get_string("close", "dialogue"), "dialogue"); } @@ -483,14 +473,14 @@ function dialogue_list_conversations_self($dialogue) { if ($entry->userid == $USER->id) { echo "<tr><td colspan=\"2\" bgcolor=\"#FFFFFF\">\n"; echo text_to_html("<font size=\"1\">".get_string("onyouwrote", "dialogue", - userdate($entry->timecreated)).":</font><br />".clean_text($entry->text)); + userdate($entry->timecreated)).":</font><br />".$entry->text); echo "</td></tr>\n"; } else { echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->body\">\n"; echo text_to_html("<font size=\"1\">".get_string("onwrote", "dialogue", userdate($entry->timecreated)." ".$otheruser->firstname). - ":</font><br />".clean_text($entry->text)); + ":</font><br />".$entry->text); echo "</td></tr>\n"; } } @@ -511,14 +501,13 @@ function dialogue_list_conversations_self($dialogue) { // use a cumbersome name on the textarea is just historical :-) print_textarea($usehtmleditor, 20, 75, 630, 300, "reply$conversation->id"); echo "</td></tr>"; - echo "</table><br />\n"; + echo "</table></center><br />\n"; } print_simple_box_end(); use_html_editor(); if ($showbutton) { echo "<hr />\n"; - echo "<p align=\"center\"><input type=\"submit\" value=\"".get_string("addmynewentries", "dialogue"). - "\"/></p>\n"; + echo "<br /><input type=\"submit\" value=\"".get_string("addmynewentries", "dialogue")."\">\n"; } echo "</form>\n"; } @@ -541,13 +530,13 @@ function dialogue_print_conversation($dialogue, $conversation) { $showbutton = false; echo "<form name=\"replies\" method=\"post\" action=\"dialogues.php\">\n"; - echo "<input type=\"hidden\" name=\"action\" value=\"insertentries\"/>\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n"; - echo "<input type=\"hidden\" name=\"pane\" value=\"2\" />\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"insertentries\">\n"; + echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; + echo "<input type=\"hidden\" name=\"pane\" value=\"2\">\n"; $showbutton = true; print_simple_box_start("center", "", $THEME->cellcontent2); - echo "<table align=\"center\" border=\"1\" cellspacing=\"0\" valign=\"top\" cellpadding=\"4\" + echo "<center><table border=\"1\" cellspacing=\"0\" valign=\"top\" cellpadding=\"4\" width=\"100%\">\n"; echo "<tr><td bgcolor=\"$THEME->cellheading2\" valign=\"top\">\n"; if ($conversation->userid == $USER->id) { @@ -560,19 +549,19 @@ function dialogue_print_conversation($dialogue, $conversation) { error("User not found"); } } - $picture = print_user_picture($otheruser->id, $course->id, $otheruser->picture, false, true); - echo $picture." <b>".get_string("dialoguewith", "dialogue", fullname($otheruser)). + // print_user_picture($user->id, $course->id, $user->picture); + echo "<b>".get_string("dialoguewith", "dialogue", fullname($otheruser)). "</b></td>"; - echo "<td bgcolor=\"$THEME->cellheading2\"><i>".clean_text($conversation->subject)."&nbsp;</i><br />\n"; + echo "<td bgcolor=\"$THEME->cellheading2\"><i>$conversation->subject&nbsp;</i><br />\n"; echo "<div align=\"right\">\n"; if (!$conversation->subject) { // conversation does not have a subject, show add subject link - echo "<a href=\"dialogues.php?action=getsubject&amp;id=$cm->id&amp;cid=$conversation->id&amp;pane=2\">". + echo "<a href=\"dialogues.php?action=getsubject&id=$cm->id&cid=$conversation->id&pane=2\">". get_string("addsubject", "dialogue")."</a>\n"; helpbutton("addsubject", get_string("addsubject", "dialogue"), "dialogue"); echo "&nbsp; | "; } - echo "<a href=\"dialogues.php?action=confirmclose&amp;id=$cm->id&amp;cid=$conversation->id&amp;pane=2\">". + echo "<a href=\"dialogues.php?action=confirmclose&id=$cm->id&cid=$conversation->id&pane=2\">". get_string("close", "dialogue")."</a>\n"; helpbutton("closedialogue", get_string("close", "dialogue"), "dialogue"); echo "</div></td></tr>\n"; @@ -582,13 +571,13 @@ function dialogue_print_conversation($dialogue, $conversation) { if ($entry->userid == $USER->id) { echo "<tr><td colspan=\"2\" bgcolor=\"#FFFFFF\">\n"; echo text_to_html("<font size=\"1\">".get_string("onyouwrote", "dialogue", - userdate($entry->timecreated)).":</font><br />".clean_text($entry->text)); + userdate($entry->timecreated)).":</font><br />".$entry->text); } else { echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->body\">\n"; echo text_to_html("<font size=\"1\">".get_string("onwrote", "dialogue", userdate($entry->timecreated)." ".$otheruser->firstname).":</font><br />". - clean_text($entry->text)); + $entry->text); } } echo "</td></tr>\n"; @@ -604,11 +593,11 @@ function dialogue_print_conversation($dialogue, $conversation) { print_textarea($usehtmleditor, 20, 75, 630, 300, "reply$conversation->id"); use_html_editor(); echo "</td></tr>"; - echo "</table><br />\n"; + echo "</table></center><br />\n"; print_simple_box_end(); if ($showbutton) { echo "<hr />\n"; - echo "<br /><input type=\"submit\" value=\"".get_string("addmynewentry", "dialogue")."\" />\n"; + echo "<br /><input type=\"submit\" value=\"".get_string("addmynewentry", "dialogue")."\">\n"; } echo "</form>\n"; } @@ -659,7 +648,7 @@ function dialogue_print_tabbed_heading($tabs) { if (!empty($tabs->names)) { echo "<tr>"; echo "<td class=\"generaltablecell\">". - "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\" /></td>\n"; + "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td>\n"; foreach ($tabcontents as $key => $tab) { if (isset($align[$key])) { $alignment = "align=\"$align[$key]\""; @@ -682,7 +671,7 @@ function dialogue_print_tabbed_heading($tabs) { echo "<td valign=top class=\"generaltab\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading\">$tab</td>\n"; } echo "<td class=\"generaltablecell\">". - "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\" /></td>\n"; + "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td>\n"; } echo "</tr>\n"; } else { @@ -692,7 +681,7 @@ function dialogue_print_tabbed_heading($tabs) { $ncells = count($tabs->names)*2 +1; $height = 2; echo "<tr><td colspan=\"$ncells\" bgcolor=\"$THEME->cellheading2\">". - "<img height=\"$height\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\" /></td></tr>\n"; + "<img height=\"$height\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td></tr>\n"; echo "</table>\n"; // print_simple_box_end(); @@ -714,7 +703,7 @@ function dialogue_show_conversation($dialogue, $conversation) { $timenow = time(); print_simple_box_start("center"); - echo "<table border=\"1\" cellspacing=\"0\" valign=\"top\" cellpadding=\"4\" width=\"100%\">\n"; + echo "<center><TABLE BORDER=1 CELLSPACING=0 valign=top cellpadding=4 width=\"100%\">\n"; echo "<tr>"; echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\">\n"; @@ -728,10 +717,10 @@ function dialogue_show_conversation($dialogue, $conversation) { error("User not found"); } } - $picture = print_user_picture($otheruser->id, $course->id, $otheruser->picture, false, true); - echo $picture." <b>".get_string("dialoguewith", "dialogue", fullname($otheruser)). + // print_user_picture($user->id, $course->id, $user->picture); + echo "<b>".get_string("dialoguewith", "dialogue", fullname($otheruser)). "</b></td>"; - echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\"><i>".clean_text($conversation->subject)."&nbsp;</i></td></tr>"; + echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\"><i>$conversation->subject&nbsp;</i></td></tr>"; if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id", "id")) { foreach ($entries as $entry) { @@ -739,20 +728,20 @@ function dialogue_show_conversation($dialogue, $conversation) { echo "<tr><td colspan=\"2\" bgcolor=\"#FFFFFF\">\n"; echo text_to_html("<font size=\"1\">".get_string("onyouwrote", "dialogue", userdate($entry->timecreated)). - ":</font><br />".clean_text($entry->text)); + ":</font><br />".$entry->text); echo "</td></tr>\n"; } else { echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->body\">\n"; echo text_to_html("<font size=\"1\">".get_string("onwrote", "dialogue", - userdate($entry->timecreated)." ".$otheruser->firstname).":</font><br />".clean_text($entry->text)); + userdate($entry->timecreated)." ".$otheruser->firstname).":</font><br />".$entry->text); echo "</td></tr>\n"; } } } - echo "</table><br />\n"; + echo "</TABLE></center><BR CLEAR=ALL>\n"; print_simple_box_end(); - print_continue("view.php?id=$cm->id&amp;pane=3"); + print_continue("view.php?id=$cm->id&pane=3"); } @@ -794,38 +783,38 @@ function dialogue_show_other_conversations($dialogue, $conversation) { } } print_simple_box_start("center"); - echo "<table align=\"center\" border=\"1\" cellspacing=\"0\" valign=\"top\" cellpadding=\"4\" - width=\"100%\">\n"; - echo "<tr>"; - echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\">\n"; + echo "<center><TABLE BORDER=1 CELLSPACING=0 valign=top cellpadding=4 width=\"100%\">\n"; + + echo "<TR>"; + echo "<TD BGCOLOR=\"$THEME->cellheading2\" VALIGN=TOP>\n"; // print_user_picture($otheruser->id, $course->id, $otheruser->picture); echo "<b>".get_string("dialoguewith", "dialogue", fullname($otheruser))."</b></td>"; - echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\"><i>".clean_text($otherconversation->subject)."&nbsp;</i></td></tr>"; + echo "<td bgcolor=\"$THEME->cellheading2\" valign=\"top\"><i>$otherconversation->subject&nbsp;</i></td></tr>"; if ($entries = get_records_select("dialogue_entries", "conversationid = $otherconversation->id", "id")) { foreach ($entries as $entry) { if ($entry->userid == $user->id) { echo "<tr><td colspan=\"2\" bgcolor=\"#FFFFFF\">\n"; echo text_to_html("<font size=\"1\">".get_string("onyouwrote", "dialogue", - userdate($entry->timecreated)).":</font><br />".clean_text($entry->text)); + userdate($entry->timecreated)).":</font><br />".$entry->text); echo "</td></tr>\n"; } else { echo "<tr><td colspan=\"2\" bgcolor=\"$THEME->body\">\n"; echo text_to_html("<font size=\"1\">".get_string("onwrote", "dialogue", userdate($entry->timecreated)." ".$otheruser->firstname). - ":</font><br />".clean_text($entry->text)); + ":</font><br />".$entry->text); echo "</td></tr>\n"; } } } - echo "</table><br />\n"; + echo "</TABLE></center><BR CLEAR=ALL>\n"; print_simple_box_end(); } } - print_continue("view.php?id=$cm->id&amp;pane=3"); + print_continue("view.php?id=$cm->id&pane=3"); } } } diff --git a/mod/dialogue/mod.html b/mod/dialogue/mod.html index 4daad865f4c..176e97610b1 100644 --- a/mod/dialogue/mod.html +++ b/mod/dialogue/mod.html @@ -22,15 +22,15 @@ print_heading_with_help(get_string("furtherinformation", "dialogue"), "info", "d <form name="form" method="post" action="mod.php"> <table cellpadding=5> -<tr valign="top"> - <td align="right"><p><b><?php print_string("dialoguename", "dialogue") ?>:</b></p></td> +<tr valign=top> + <td align=right><p><b><?php print_string("dialoguename", "dialogue") ?>:</b></p></td> <td> - <input type="text" name="name" size="30" value="<?php p($form->name) ?>" /> + <input type="text" name="name" size=30 value="<?php p($form->name) ?>"> </td> </tr> -<tr valign="top"> - <td align="right"><p><b><?php print_string("dialogueintro", "dialogue") ?>:</b></p> - <font size="1"> +<tr valign=top> + <td align=right><p><b><?php print_string("dialogueintro", "dialogue") ?>:</b></p> + <font SIZE="1"> <?php helpbutton("writing", get_string("helpwriting"), "moodle", true, true); echo "<br />"; @@ -39,24 +39,24 @@ print_heading_with_help(get_string("furtherinformation", "dialogue"), "info", "d <br /> </font> - </td> + </TD> <td> <?php print_textarea($usehtmleditor, 20, 50, 680, 400, "intro", $form->intro); ?> </td> </tr> -<tr valign="top"> - <td align="right"><p><b><?php print_string("deleteafter", "dialogue") ?>:</b></p></td> +<tr valign=top> + <td align=right><p><b><?php print_string("deleteafter", "dialogue") ?>:</b></p></td> <td> <?php - require("$CFG->dirroot/mod/dialogue/lib.php"); - choose_from_menu($DIALOGUE_DAYS, "deleteafter", $form->deleteafter, ""); - helpbutton("deleteafter", get_string("deleteafter", "dialogue"), "dialogue"); + require("$CFG->dirroot/mod/dialogue/lib.php"); + choose_from_menu($DIALOGUE_DAYS, "deleteafter", $form->deleteafter, ""); + helpbutton("deleteafter", get_string("deleteafter", "dialogue"), "dialogue"); ?> </td> </tr> <tr> - <td align="right"><p><b><?php print_string("typeofdialogue", "dialogue") ?>:</b></p></td> + <td align=right><P><B><?php print_string("typeofdialogue", "dialogue") ?>:</B></P></TD> <td> <?php $options[0] = get_string("teachertostudent", "dialogue"); @@ -69,7 +69,7 @@ print_heading_with_help(get_string("furtherinformation", "dialogue"), "info", "d </tr> <tr> - <td align="right"><p><b><?php print_string("allowmultiple", "dialogue") ?>:</b></p></td> + <td align=right><P><B><?php print_string("allowmultiple", "dialogue") ?>:</B></P></TD> <td> <?php unset($options); @@ -81,29 +81,28 @@ print_heading_with_help(get_string("furtherinformation", "dialogue"), "info", "d </tr> <tr> - <td align="right"><p><b><?php print_string("mailnotification", "dialogue") ?>:</b></p></td> + <td align=right><P><B><?php print_string("maildefault", "dialogue") ?>:</B></P></TD> <td> <?php unset($options); $options[0] = get_string("no"); $options[1] = get_string("yes"); choose_from_menu($options, "maildefault", $form->maildefault, ""); - helpbutton("maildefault", get_string("mailnotification", "dialogue"), "dialogue"); + helpbutton("maildefault", get_string("maildefault", "dialogue"), "dialogue"); ?> </td> </tr> -<?php print_standard_coursemodule_settings($form); ?> + </table> <center> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -<input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> -</center> +<input type="hidden" name=course value="<?php p($form->course) ?>"> +<input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name=section value="<?php p($form->section) ?>"> +<input type="hidden" name=module value="<?php p($form->module) ?>"> +<input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<input type="hidden" name=instance value="<?php p($form->instance) ?>"> +<input type="hidden" name=mode value="<?php p($form->mode) ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> +<input type="submit" name=cancel value="<?php print_string("cancel") ?>"> </form> +</center> diff --git a/mod/dialogue/restorelib.php b/mod/dialogue/restorelib.php index 24133021b3e..73600f8fad7 100644 --- a/mod/dialogue/restorelib.php +++ b/mod/dialogue/restorelib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //dialogue mods @@ -57,7 +57,7 @@ $newid = insert_record ("dialogue",$dialogue); //Do some output - echo "<li>".get_string("modulename","dialogue")." \"".$dialogue->name."\"</li>"; + echo "<ul><li>".get_string("modulename","dialogue")." \"".$dialogue->name."\"<br>"; backup_flush(300); if ($newid) { @@ -72,6 +72,10 @@ } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -130,7 +134,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -178,7 +182,7 @@ $olduserid = backup_todb($entry_info['#']['USERID']['0']['#']); //Now, build the dialogue_ENTRIES record structure - $entry->dialogueid = $new_dialogue_id; + $entry->dialogue = $new_dialogue_id; $entry->conversationid = $new_conversation_id; $entry->userid = backup_todb($entry_info['#']['USERID']['0']['#']); $entry->timecreated = backup_todb($entry_info['#']['TIMECREATED']['0']['#']); @@ -198,7 +202,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } diff --git a/mod/dialogue/version.php b/mod/dialogue/version.php index c821728e701..a4c4a2b8bca 100644 --- a/mod/dialogue/version.php +++ b/mod/dialogue/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////////// // Code fragment to define the module version etc. // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2005031000; -$module->requires = 2005031000; // Requires this Moodle version +$module->version = 2004060400; +$module->requires = 2004052501; // Requires this Moodle version $module->cron = 60; ?> diff --git a/mod/dialogue/view.php b/mod/dialogue/view.php index 2a7d80f67bb..5aa57187355 100644 --- a/mod/dialogue/view.php +++ b/mod/dialogue/view.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); @@ -18,7 +18,7 @@ error("Course module is incorrect"); } - require_login($course->id, false, $cm); + require_login($course->id); add_to_log($course->id, "dialogue", "view", "view.php?id=$cm->id", $dialogue->id, $cm->id); @@ -37,10 +37,10 @@ "", "", true, update_module_button($cm->id, $course->id, $strdialogue), navmenu($course, $cm)); - // ...and if necessary set default action - + // ...and if necessary set default action + optional_variable($action); - + if (!isguest()) { // it's a teacher or student if (!$cm->visible and isstudent($course->id)) { $action = 'notavailable'; @@ -52,7 +52,7 @@ else { // it's a guest, oh no! $action = 'notavailable'; } - + /*********************** dialogue not available (for gusets mainly)***********************/ @@ -63,8 +63,8 @@ /************ view **************************************************/ elseif ($action == 'view') { - - print_simple_box(format_text($dialogue->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); + + print_simple_box( format_text($dialogue->intro) , "center"); echo "<br />"; // get some stats $countneedingrepliesself = dialogue_count_needing_replies_self($dialogue, $USER); @@ -84,12 +84,12 @@ $pane =1; } } - + // override pane setting if teacher has changed group if (isset($_GET['group'])) { $pane = 0; } - + // set up tab table $tabs->names[0] = get_string("pane0", "dialogue"); if ($countneedingrepliesself == 1) { @@ -101,22 +101,22 @@ $tabs->names[2] = get_string("pane2one", "dialogue"); } else { $tabs->names[2] = get_string("pane2", "dialogue", $countneedingrepliesother); - } + } if ($countclosed == 1) { $tabs->names[3] = get_string("pane3one", "dialogue"); } else { $tabs->names[3] = get_string("pane3", "dialogue", $countclosed); } - $tabs->urls[0] = "view.php?id=$cm->id&amp;pane=0"; - $tabs->urls[1] = "view.php?id=$cm->id&amp;pane=1"; - $tabs->urls[2] = "view.php?id=$cm->id&amp;pane=2"; - $tabs->urls[3] = "view.php?id=$cm->id&amp;pane=3"; + $tabs->urls[0] = "view.php?id=$cm->id&pane=0"; + $tabs->urls[1] = "view.php?id=$cm->id&pane=1"; + $tabs->urls[2] = "view.php?id=$cm->id&pane=2"; + $tabs->urls[3] = "view.php?id=$cm->id&pane=3"; $tabs->highlight = $pane; dialogue_print_tabbed_heading($tabs); - echo "<br />\n"; - - + echo "<br/><center>\n"; + + switch ($pane) { case 0: if (isteacher($course->id)) { @@ -136,19 +136,20 @@ if ($names = dialogue_get_available_users($dialogue)) { print_simple_box_start("center"); + echo "<center>"; echo "<form name=\"startform\" method=\"post\" action=\"dialogues.php\">\n"; - echo "<input type=\"hidden\" name=\"id\"value=\"$cm->id\"/ />\n"; - echo "<input type=\"hidden\" name=\"action\" value=\"openconversation\"/ />\n"; - echo "<table align=\"center\" border=\"0\"><tr>\n"; + echo "<input type=\"hidden\" name=\"id\"value=\"$cm->id\">\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"openconversation\">\n"; + echo "<table border=\"0\"><tr>\n"; echo "<td align=\"right\"><b>".get_string("openadialoguewith", "dialogue"). " : </b></td>\n"; echo "<td>"; - + choose_from_menu($names, "recipientid"); echo "</td></tr>\n"; echo "<tr><td align=\"right\"><b>".get_string("subject", "dialogue")." : </b></td>\n"; - echo "<td><input type=\"text\" size=\"50\" maxsize=\"100\" name=\"subject\" - value=\"\" /></td></tr>\n"; + echo "<td><input type=\"text\" size=\"50\" maxsize=\"100\" name=\"subject\" + value=\"\"></td></tr>\n"; echo "<tr><td colspan=\"2\" align=\"center\" valign=\"top\"><i>". get_string("typefirstentry", "dialogue")."</i></td></tr>\n"; echo "<tr><td valign=\"top\" align=\"right\">\n"; @@ -159,8 +160,9 @@ use_html_editor(); echo "</td></tr>"; echo "<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"". - get_string("opendialogue","dialogue")."\"/></td></tr>\n"; + get_string("opendialogue","dialogue")."\"></td></tr>\n"; echo "</table></form>\n"; + echo "</center>"; print_simple_box_end(); } else { print_heading(get_string("noavailablepeople", "dialogue")); @@ -179,7 +181,7 @@ dialogue_list_conversations_closed($dialogue, $USER); } } - + /*************** no man's land **************************************/ else { error("Fatal Error: Unknown Action: ".$action."\n"); diff --git a/mod/exercise/assessments.php b/mod/exercise/assessments.php index 3c26c19728b..18954a2367f 100644 --- a/mod/exercise/assessments.php +++ b/mod/exercise/assessments.php @@ -1,4 +1,4 @@ -<?php // $Id: lib.php,v 1.1 22 Aug 2003 +<?PHP // $Id: lib.php,v 1.1 22 Aug 2003 /************************************************* ACTIONS handled are: @@ -33,7 +33,7 @@ require("locallib.php"); require_variable($id); // Course Module ID - + // get some esential stuff... if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); @@ -49,21 +49,21 @@ exercise_add_custom_scales($exercise); - require_login($course->id, false, $cm); + require_login($course->id); $strexercises = get_string("modulenameplural", "exercise"); $strexercise = get_string("modulename", "exercise"); $strassessments = get_string("assessments", "exercise"); - + // ... print the header and... - print_header_simple(format_string($exercise->name), "", - "<a href=\"index.php?id=$course->id\">$strexercises</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($exercise->name,true)."</a> -> $strassessments", + print_header_simple("$exercise->name", "", + "<A HREF=index.php?id=$course->id>$strexercises</A> -> + <A HREF=\"view.php?id=$cm->id\">$exercise->name</A> -> $strassessments", "", "", true); - //...get the action + //...get the action require_variable($action); - + /******************* admin amend Grading Grade ************************************/ if ($action == 'adminamendgradinggrade' ) { @@ -74,34 +74,34 @@ if (empty($_GET['aid'])) { error("Admin Amend Grading grade: assessment id missing"); } - + if (!$assessment = get_record("exercise_assessments", "id", $_GET['aid'])) { error("Amin Amend Grading grade: assessment not found"); } - print_heading(get_string("amend", "exercise")." ".get_string("gradeforstudentsassessment", + print_heading(get_string("amend", "exercise")." ".get_string("gradeforstudentsassessment", "exercise", $course->student)); echo "<form name=\"amendgrade\" method=\"post\" action=\"assessments.php\">\n"; - echo "<input type=\"hidden\" name=\"aid\" value=\"$_GET[aid]\" />\n"; - echo "<input type=\"hidden\" name=\"action\" value=\"updategradinggrade\" />\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n"; - echo "<table width=\"50%\" align=\"center\" border=\"1\" />\n"; - echo "<tr><td align=\"right\"><b>".get_string("gradeforstudentsassessment", "exercise", + echo "<input type=\"hidden\" name=\"aid\" value=\"$_GET[aid]\">\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"updategradinggrade\">\n"; + echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; + echo "<table width=\"50%\" align=\"center\" border=\"1\">\n"; + echo "<tr><td align=\"right\"><b>".get_string("gradeforstudentsassessment", "exercise", $course->student)." :</td><td>\n"; // set up coment scale for ($i=$exercise->gradinggrade; $i>=0; $i--) { $num[$i] = $i; } - choose_from_menu($num, "gradinggrade", + choose_from_menu($num, "gradinggrade", number_format($exercise->gradinggrade * $assessment->gradinggrade / 100, 0), ""); echo "</td></tr>\n"; - echo "<tr><td colspan=\"2\" align=\"center\">"; - echo "<input type=\"submit\" value=\"".get_string("amend", "exercise")."\" />\n"; + echo "<tr><td colspan=\"2\" align=\"center\">"; + echo "<INPUT TYPE=submit VALUE=\"".get_string("amend", "exercise")."\">\n"; echo "</td></tr>\n"; echo "</table>\n"; - echo "</center>"; - echo "</form>\n"; + echo "</CENTER>"; + echo "</FORM>\n"; } - + /******************* admin confirm delete ************************************/ elseif ($action == 'adminconfirmdelete' ) { @@ -112,12 +112,12 @@ if (empty($_GET['aid'])) { error("Admin confirm delete: assessment id missing"); } - - notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("assessment", "exercise")), - "assessments.php?action=admindelete&amp;id=$cm->id&amp;aid=$_GET[aid]", - "submissions.php?action=adminlist&amp;id=$cm->id"); + + notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("assessment", "exercise")), + "assessments.php?action=admindelete&id=$cm->id&aid=$_GET[aid]", + "submissions.php?action=adminlist&id=$cm->id"); } - + /******************* admin delete ************************************/ elseif ($action == 'admindelete' ) { @@ -128,16 +128,16 @@ if (empty($_GET['aid'])) { error("Admin delete: submission id missing"); } - + print_string("deleting", "exercise"); // first delete all the associated records... delete_records("exercise_grades", "assessmentid", $_GET['aid']); // ...now delete the assessment... delete_records("exercise_assessments", "id", $_GET['aid']); - - print_continue("submissions.php?id=$cm->id&amp;action=adminlist"); + + print_continue("submissions.php?id=$cm->id&action=adminlist"); } - + /*********************** admin list of asssessments (of a submission) (by teachers)**************/ elseif ($action == 'adminlist') { @@ -145,13 +145,13 @@ if (!isteacher($course->id)) { error("Only teachers can look at this page"); } - + if (empty($_GET['sid'])) { error ("exercise asssessments: adminlist called with no sid"); } $submission = get_record("exercise_submissions", "id", $_GET['sid']); exercise_print_assessments_for_admin($exercise, $submission); - print_continue("submissions.php?action=adminlist&amp;id=$cm->id"); + print_continue("submissions.php?action=adminlist&id=$cm->id"); } @@ -161,13 +161,13 @@ if (!isteacher($course->id)) { error("Only teachers can look at this page"); } - + if (empty($_GET['userid'])) { error ("exercise asssessments: adminlistbystudent called with no userid"); } $user = get_record("user", "id", $_GET['userid']); exercise_print_assessments_by_user_for_admin($exercise, $user); - print_continue("submissions.php?action=adminlist&amp;id=$cm->id"); + print_continue("submissions.php?action=adminlist&id=$cm->id"); } @@ -175,14 +175,14 @@ elseif ($action == 'assessresubmission') { require_variable($sid); - + if (! $submission = get_record("exercise_submissions", "id", $sid)) { error("Assess submission is misconfigured - no submission record!"); } if (!$submissionowner = get_record("user", "id", $submission->userid)) { error("Assess resubmission: user record not found"); } - + // there can be an assessment record, if there isn't... if (!$assessment = exercise_get_submission_assessment($submission, $USER)) { if (!$submissions = exercise_get_user_submissions($exercise, $submissionowner)) { @@ -201,8 +201,8 @@ // copy this assessment with comments... $assessment = exercise_copy_assessment($prevassessment, $submission, true); } - - print_heading(get_string("thisisaresubmission", "exercise", + + print_heading(get_string("thisisaresubmission", "exercise", fullname($submissionowner))); // show assessment and allow changes exercise_print_assessment_form($exercise, $assessment, true, $_SERVER["HTTP_REFERER"]); @@ -213,11 +213,11 @@ elseif ($action == 'assesssubmission') { require_variable($sid); - + if (! $submission = get_record("exercise_submissions", "id", $sid)) { error("Assess submission is misconfigured - no submission record!"); } - + // there can be an assessment record (for teacher submissions), if there isn't... if (!$assessment = exercise_get_submission_assessment($submission, $USER)) { $yearfromnow = time() + 365 * 86400; @@ -232,7 +232,7 @@ error("Could not insert exercise assessment!"); } } - + // show assessment and allow changes exercise_print_assessment_form($exercise, $assessment, true, $_SERVER["HTTP_REFERER"]); } @@ -242,7 +242,7 @@ elseif ($action == 'displaygradingform') { print_heading_with_help(get_string("specimenassessmentform", "exercise"), "specimen", "exercise"); - + exercise_print_assessment_form($exercise); // called with no assessment print_continue("view.php?id=$cm->id"); } @@ -263,18 +263,18 @@ print_heading_with_help(get_string("editingassessmentelements", "exercise"), "elements", "exercise"); ?> <form name="form" method="post" action="assessments.php"> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="action" value="insertelements" /> - <center><table cellpadding="5" border="1"> - <?php - + <input type="hidden" name="id" value="<?PHP echo $cm->id ?>"> + <input type="hidden" name="action" value="insertelements"> + <CENTER><TABLE cellpadding=5 border=1> + <?PHP + // get existing elements, if none set up appropriate default ones if ($elementsraw = get_records("exercise_elements", "exerciseid", $exercise->id, "elementno ASC" )) { foreach ($elementsraw as $element) { $elements[] = $element; // to renumber index 0,1,2... } } - // check for missing elements (this happens either the first time round or when the number + // check for missing elements (this happens either the first time round or when the number // of elements is icreased) for ($i=0; $i<$exercise->nelements; $i++) { if (!isset($elements[$i])) { @@ -288,14 +288,14 @@ case 0: // no grading for ($i=0; $i<$exercise->nelements; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","exercise")." $iplus1:</b></td>\n"; - echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">". + echo "<TR valign=top>\n"; + echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $iplus1:</B></TD>\n"; + echo "<TD><textarea name=\"description[]\" rows=3 cols=75 wrap=\"virtual\">". $elements[$i]->description."</textarea>\n"; - echo " </td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo " </TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } break; @@ -304,92 +304,92 @@ foreach ($EXERCISE_SCALES as $KEY => $SCALE) { $SCALES[] = $SCALE['name']; } - + for ($i=0; $i<$exercise->nelements; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","exercise")." $iplus1:</b></td>\n"; - echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">". + echo "<TR valign=top>\n"; + echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $iplus1:</B></TD>\n"; + echo "<TD><textarea name=\"description[]\" rows=3 cols=75 wrap=\"virtual\">". $elements[$i]->description."</textarea>\n"; - echo " </td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("typeofscale", "exercise"). ":</b></p></td>\n"; - echo "<td valign=\"top\">\n"; + echo " </TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("typeofscale", "exercise"). ":</B></P></TD>\n"; + echo "<TD valign=\"top\">\n"; choose_from_menu($SCALES, "scale[]", $elements[$i]->scale, ""); if ($elements[$i]->weight == '') { // not set $elements[$i]->weight = 11; // unity } - echo "</tr>\n"; - echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "exercise"). - ":</b></td><td>\n"; + echo "</TR>\n"; + echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "exercise"). + ":</B></TD><TD>\n"; exercise_choose_from_menu($EXERCISE_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } break; - + case 2: // error banded grading for ($i=0; $i<$exercise->nelements; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","exercise")." $iplus1:</b></td>\n"; - echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">". + echo "<TR valign=top>\n"; + echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $iplus1:</B></TD>\n"; + echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">". $elements[$i]->description."</textarea>\n"; - echo " </td></tr>\n"; + echo " </TD></TR>\n"; if ($elements[$i]->weight == '') { // not set $elements[$i]->weight = 11; // unity } - echo "</tr>\n"; - echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "exercise"). - ":</b></td><td>\n"; + echo "</TR>\n"; + echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "exercise"). + ":</B></TD><TD>\n"; exercise_choose_from_menu($EXERCISE_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } - echo "</center></table><br />\n"; - echo "<p><center><b>".get_string("gradetable","exercise")."</b></center>\n"; - echo "<center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"CENTER\">". + echo "</CENTER></TABLE><BR>\n"; + echo "<P><CENTER><B>".get_string("gradetable","exercise")."</B></CENTER>\n"; + echo "<CENTER><TABLE cellpadding=5 border=1><TR><TD ALIGN=\"CENTER\">". get_string("numberofnegativeresponses", "exercise"); - echo "</td><td>". get_string("suggestedgrade", "exercise")."</td></tr>\n"; + echo "</TD><TD>". get_string("suggestedgrade", "exercise")."</TD></TR>\n"; for ($j = $exercise->grade; $j >= 0; $j--) { $numbers[$j] = $j; } for ($i=0; $i<=$exercise->nelements; $i++) { - echo "<tr><td align=\"CENTER\">$i</td><td align=\"CENTER\">"; + echo "<TR><TD ALIGN=\"CENTER\">$i</TD><TD ALIGN=\"CENTER\">"; if (!isset($elements[$i])) { // the "last one" will be! $elements[$i]->description = ""; $elements[$i]->maxscore = 0; } choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, ""); - echo "</td></tr>\n"; + echo "</TD></TR>\n"; } break; - + case 3: // criterion grading for ($j = $exercise->grade; $j >= 0; $j--) { $numbers[$j] = $j; } for ($i=0; $i<$exercise->nelements; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; + echo "<TR valign=top>\n"; - echo " <td align=\"right\"><p><b>". get_string("criterion","exercise")." $iplus1:</b></td>\n"; - echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">". + echo " <TD ALIGN=RIGHT><P><B>". get_string("criterion","exercise")." $iplus1:</B></TD>\n"; + echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">". $elements[$i]->description."</textarea>\n"; - echo " </td></tr>\n"; - echo "<tr><td><b>". get_string("suggestedgrade", "exercise").":</b></td><td>\n"; + echo " </TD></TR>\n"; + echo "<TR><TD><B>". get_string("suggestedgrade", "exercise").":</B></TD><TD>\n"; choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, ""); - echo "</td></tr>\n"; - echo "<tr valign=\"top\">\n"; + echo "</TD></TR>\n"; + echo "<TR valign=top>\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } break; @@ -404,31 +404,31 @@ } for ($i=0; $i<$exercise->nelements; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","exercise")." $iplus1:</b></td>\n"; - echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">". + echo "<TR valign=top>\n"; + echo " <TD ALIGN=RIGHT><P><B>". get_string("element","exercise")." $iplus1:</B></TD>\n"; + echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">". $elements[$i]->description."</textarea>\n"; - echo " </td></tr>\n"; - echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "exercise"). - ":</b></td><td>\n"; + echo " </TD></TR>\n"; + echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "exercise"). + ":</B></TD><TD>\n"; exercise_choose_from_menu($EXERCISE_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); - echo " </td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; for ($j=0; $j<5; $j++) { $jplus1 = $j+1; if (empty($rubrics[$i][$j])) { $rubrics[$i][$j] = ""; } - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("grade")." $j:</b></td>\n"; - echo "<td><textarea name=\"rubric[$i][$j]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">". + echo "<TR valign=top>\n"; + echo " <TD ALIGN=RIGHT><P><B>". get_string("grade")." $j:</B></TD>\n"; + echo "<TD><textarea name=\"rubric[$i][$j]\" rows=3 cols=75 wrap=\"virtual\">". $rubrics[$i][$j]."</textarea>\n"; - echo " </td></tr>\n"; + echo " </TD></TR>\n"; } - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo "<TR valign=top>\n"; + echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } break; } @@ -436,15 +436,15 @@ ?> </table><br /> - <input type="submit" value="<?php print_string("savechanges") ?>" /> - <input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> + <input type="submit" value="<?php print_string("savechanges") ?>"> + <input type="submit" name=cancel value="<?php print_string("cancel") ?>"> </center> </form> - <?php + <?PHP } - - + + /****************** insert/update assignment elements (for teachers)***********************/ elseif ($action == 'insertelements') { @@ -452,11 +452,11 @@ error("Only teachers can look at this page"); } - $form = data_submitted(); - + $form = (object)$HTTP_POST_VARS; + // let's not fool around here, dump the junk! delete_records("exercise_elements", "exerciseid", $exercise->id); - + // determine wich type of grading switch ($exercise->gradingstrategy) { case 0: // no grading @@ -473,7 +473,7 @@ } } break; - + case 1: // accumulative grading // Insert all the elements that contain something foreach ($form->description as $key => $description) { @@ -500,10 +500,10 @@ } } break; - + case 2: // error banded grading... case 3: // ...and criterion grading - // Insert all the elements that contain something, the number of descriptions is + // Insert all the elements that contain something, the number of descriptions is // one less than the number of grades foreach ($form->maxscore as $key => $themaxscore) { unset($element); @@ -521,7 +521,7 @@ } } break; - + case 4: // ...and criteria grading // Insert all the elements that contain something foreach ($form->description as $key => $description) { @@ -573,7 +573,7 @@ } - /***************** list assessments for grading student assessments ( linked to the + /***************** list assessments for grading student assessments ( linked to the ******************Teacher's submissions) (by teachers)****/ elseif ($action == 'listungradedstudentassessments') { @@ -603,12 +603,12 @@ if ($assessments = exercise_get_teacher_submission_assessments($exercise)) { foreach ($assessments as $studentassessment) { if ($studentassessment->timegraded > 0) { - if (!$submissions = get_records_select("exercise_submissions", + if (!$submissions = get_records_select("exercise_submissions", "userid = $studentassessment->userid AND exerciseid = $exercise->id", "timecreated ASC")) { error("Regrade student assessments: student submission not found"); } foreach ($submissions as $submission) { // only the first one is relavant - if (!$teacherassessments = get_records("exercise_assessments", "submissionid", + if (!$teacherassessments = get_records("exercise_assessments", "submissionid", $submission->id, "timecreated ASC")) { error("Regrade student assessments: teacher assessment(s) not found"); } @@ -616,19 +616,19 @@ $newgrade = exercise_compare_assessments($exercise, $studentassessment, $teacherassessment); set_field("exercise_assessments", "gradinggrade", $newgrade, "id", $studentassessment->id); break; - } + } break; } } } } - redirect("submissions.php?id=$cm->id&amp;action=adminlist"); + redirect("submissions.php?id=$cm->id&action=adminlist"); } - + /****************** teacher assessment : grading of assessment and submission (from student) ************/ elseif ($action == 'teacherassessment') { - + if (!isteacher($course->id)) { error("Only teachers can look at this page"); } @@ -647,7 +647,7 @@ /****************** teacher table : show assessments by exercise and teacher ************/ elseif ($action == 'teachertable') { - + if (!isteacher($course->id)) { error("Only teachers can look at this page"); } @@ -661,7 +661,7 @@ elseif ($action == 'updateassessment') { $timenow = time(); - $form = data_submitted(); + $form = (object)$HTTP_POST_VARS; require_variable($aid); if (! $assessment = get_record("exercise_assessments", "id", $aid)) { @@ -680,7 +680,7 @@ // don't fiddle about, delete all the old and then add the new! delete_records("exercise_grades", "assessmentid", $assessment->id); - + //determine what kind of grading we have switch ($exercise->gradingstrategy) { case 0: // no grading @@ -697,7 +697,7 @@ } $grade = 0; // set to satisfy save to db break; - + case 1: // accumulative grading // Insert all the elements that contain something foreach ($form->grade as $key => $thegrade) { @@ -717,18 +717,18 @@ foreach ($form->grade as $key => $grade) { $maxscore = $elements[$key]->maxscore; $weight = $EXERCISE_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { + if ($weight > 0) { $totalweight += $weight; } $rawgrade += ($grade / $maxscore) * $weight; - // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />"; + // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<BR>"; } $grade = 100.0 * ($rawgrade / $totalweight); break; case 2: // error banded graded // Insert all the elements that contain something - $error = 0.0; + $error = 0.0; for ($i =0; $i < $exercise->nelements; $i++) { unset($element); $element->exerciseid = $exercise->id; @@ -755,8 +755,8 @@ } $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100.0 / $exercise->grade; - // echo "<p><b>".get_string("weightederrorcount", "exercise", intval($error + 0.5)). - // " ".get_string("adjustment", "exercise").": ".$form->grade[$i]."</b>\n"; + // echo "<P><B>".get_string("weightederrorcount", "exercise", intval($error + 0.5)). + // " ".get_string("adjustment", "exercise").": ".$form->grade[$i]."</B>\n"; // check the grade for sanity! if ($grade > 100.0) { $grade = 100.0; @@ -765,9 +765,9 @@ $grade = 0.0; } break; - + case 3: // criteria grading - // save in the selected criteria value in element zero, + // save in the selected criteria value in element zero, unset($element); $element->exerciseid = $exercise->id; $element->assessmentid = $assessment->id; @@ -814,7 +814,7 @@ foreach ($form->grade as $key => $grade) { $maxscore = $elements[$key]->maxscore; $weight = $EXERCISE_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { + if ($weight > 0) { $totalweight += $weight; } $rawgrade += ($grade / $maxscore) * $weight; @@ -823,19 +823,19 @@ break; } // end of switch - + // update the time of the assessment record (may be re-edited)... set_field("exercise_assessments", "timecreated", $timenow, "id", $assessment->id); set_field("exercise_assessments", "grade", $grade, "id", $assessment->id); // ...and clear any grading of this assessment (these assessments are never graded but...) set_field("exercise_assessments", "timegraded", 0, "id", $assessment->id); set_field("exercise_assessments", "gradinggrade", 0, "id", $assessment->id); - + // any comment? if (!empty($form->generalcomment)) { set_field("exercise_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id); } - + // is user allowed to resubmit? if (isteacher($course->id)) { if (!$submission = get_record("exercise_submissions", "id", $assessment->submissionid)) { @@ -849,14 +849,14 @@ set_field("exercise_submissions", "resubmit", 0, "id", $submission->id); } } - + add_to_log($course->id, "exercise", "assess", "view.php?id=$cm->id", "$assessment->id"); - + // set up return address if (!$returnto = $form->returnto) { $returnto = "view.php?id=$cm->id"; } - + // show grade if grading strategy is not zero if ($exercise->gradingstrategy) { redirect($returnto, "<p align=\"center\"><b>".get_string("thegradeis", "exercise").": ". @@ -877,8 +877,9 @@ } $timenow = time(); - $form = data_submitted(); + $form = (object)$HTTP_POST_VARS; + // first do the (teacher's) assessment of the student's submission if (! $submission = get_record("exercise_submissions", "id", $form->sid)) { error("Update teacher assessment: student's submission record not found"); @@ -899,7 +900,7 @@ // don't fiddle about, delete all the old and then add the new! delete_records("exercise_grades", "assessmentid", $assessment->id); - + //determine what kind of grading we have switch ($exercise->gradingstrategy) { case 0: // no grading @@ -916,7 +917,7 @@ } $grade = 0; // set to satisfy save to db break; - + case 1: // accumulative grading // Insert all the elements that contain something foreach ($form->grade as $key => $thegrade) { @@ -936,18 +937,18 @@ foreach ($form->grade as $key => $grade) { $maxscore = $elements[$key]->maxscore; $weight = $EXERCISE_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { + if ($weight > 0) { $totalweight += $weight; } $rawgrade += ($grade / $maxscore) * $weight; - // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />"; + // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<BR>"; } $grade = 100.0 * ($rawgrade / $totalweight); break; case 2: // error banded graded // Insert all the elements that contain something - $error = 0.0; + $error = 0.0; for ($i =0; $i < $exercise->nelements; $i++) { unset($element); $element->exerciseid = $exercise->id; @@ -973,11 +974,11 @@ error("Could not insert exercise element!"); } $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $exercise->grade; - echo "<p><b>".get_string("weightederrorcount", "exercise", intval($error + 0.5))."</b>\n"; + echo "<P><B>".get_string("weightederrorcount", "exercise", intval($error + 0.5))."</B>\n"; break; - + case 3: // criteria grading - // save in the selected criteria value in element zero, + // save in the selected criteria value in element zero, unset($element); $element->exerciseid = $exercise->id; $element->assessmentid = $assessment->id; @@ -1017,7 +1018,7 @@ foreach ($form->grade as $key => $grade) { $maxscore = $elements[$key]->maxscore; $weight = $EXERCISE_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { + if ($weight > 0) { $totalweight += $weight; } $rawgrade += ($grade / $maxscore) * $weight; @@ -1026,32 +1027,32 @@ break; } // end of switch - + // update the time of the assessment record (may be re-edited)... set_field("exercise_assessments", "timecreated", $timenow, "id", $assessment->id); set_field("exercise_assessments", "grade", $grade, "id", $assessment->id); // ...and clear any grading of this assessment (never needed but...) set_field("exercise_assessments", "timegraded", 0, "id", $assessment->id); set_field("exercise_assessments", "gradinggrade", 0, "id", $assessment->id); - + // any comment? if (!empty($form->generalcomment)) { set_field("exercise_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id); } - + // now calculate the (grading) grade of the student's assessment... if (!$stassessment = get_record("exercise_assessments", "id", $form->said)) { error("Update teacher assessment: student's assessment record not found"); } $gradinggrade = exercise_compare_assessments($exercise, $assessment, $stassessment); - // ...and save the grade for the assessment + // ...and save the grade for the assessment set_field("exercise_assessments", "gradinggrade", $gradinggrade, "id", $stassessment->id); set_field("exercise_assessments", "timegraded", $timenow, "id", $stassessment->id); set_field("exercise_assessments", "mailed", 0, "id", $stassessment->id); - echo "<centre><b>".get_string("savedok", "exercise")."</b></centre><br />\n"; + echo "<CENTRE><B>".get_string("savedok", "exercise")."</B></CENTRE><BR>\n"; add_to_log($course->id, "exercise", "grade", "view.php?id=$cm->id", "$stassessment->id"); - + // is user allowed to resubmit? if ($form->resubmit == 1) { set_field("exercise_submissions", "resubmit", 1, "id", $submission->id); @@ -1060,17 +1061,17 @@ // clear resubmit flag set_field("exercise_submissions", "resubmit", 0, "id", $submission->id); } - + add_to_log($course->id, "exercise", "assess", "view.php?id=$cm->id", "$assessment->id"); - + // set up return address if (!$returnto = $form->returnto) { $returnto = "view.php?id=$cm->id"; } - + // show grade if grading strategy is not zero if ($exercise->gradingstrategy) { - redirect($returnto, "<p align=\"center\"><b>".get_string("gradeforstudentsassessment", + redirect($returnto, "<p align=\"center\"><b>".get_string("gradeforstudentsassessment", "exercise", $course->student).": ".number_format($gradinggrade * $exercise->gradinggrade / 100.0, 1). " (".get_string("maximumgrade")." ".number_format($exercise->gradinggrade, 1).")</b></p><p><b>". get_string("thegradeis", "exercise").": ".number_format($grade * $exercise->grade / 100.0, 1). @@ -1092,11 +1093,11 @@ require_variable($aid); // normalise gradinggrade $gradinggrade = $_POST['gradinggrade'] * 100 / $exercise->gradinggrade; - if (!set_field("exercise_assessments", "gradinggrade", $gradinggrade, "id", + if (!set_field("exercise_assessments", "gradinggrade", $gradinggrade, "id", $_POST['aid'])) { error("Update grading grade: asseesment not updated"); } - redirect("submissions.php?id=$cm->id&amp;action=adminlist", get_string("savedok", "exercise"), 1); + redirect("submissions.php?id=$cm->id&action=adminlist", get_string("savedok", "exercise"), 1); } @@ -1106,11 +1107,11 @@ if (empty($_GET['aid'])) { error("User confirm delete: assessment id missing"); } - - notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("assessment", "exercise")), - "assessments.php?action=userdelete&amp;id=$cm->id&amp;aid=$_GET[aid]", "view.php?id=$cm->id"); + + notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("assessment", "exercise")), + "assessments.php?action=userdelete&id=$cm->id&aid=$_GET[aid]", "view.php?id=$cm->id"); } - + /****************** user delete ************************************/ elseif ($action == 'userdelete' ) { @@ -1118,16 +1119,16 @@ if (empty($_GET['aid'])) { error("User delete: assessment id missing"); } - + print_string("deleting", "exercise"); // first delete all the associated records... delete_records("exercise_grades", "assessmentid", $_GET['aid']); // ...now delete the assessment... delete_records("exercise_assessments", "id", $_GET['aid']); - + print_continue("view.php?id=$cm->id"); } - + /****************** view assessment ***********************/ elseif ($action == 'viewassessment') { @@ -1135,11 +1136,11 @@ // get the assessment record if (!$assessment = get_record("exercise_assessments", "id", $_GET['aid'])) { error("Assessment record not found"); - } + } // show assessment but don't allow changes exercise_print_assessment_form($exercise, $assessment); - + print_continue("view.php?id=$cm->id"); } @@ -1150,6 +1151,6 @@ } print_footer($course); - + ?> diff --git a/mod/exercise/backuplib.php b/mod/exercise/backuplib.php index d660bb2c0e1..3a97ffbca60 100644 --- a/mod/exercise/backuplib.php +++ b/mod/exercise/backuplib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //exercise mods @@ -65,8 +65,6 @@ fwrite ($bf,full_tag("GRADE",4,false,$exercise->grade)); fwrite ($bf,full_tag("GRADINGGRADE",4,false,$exercise->gradinggrade)); fwrite ($bf,full_tag("SHOWLEAGUETABLE",4,false,$exercise->showleaguetable)); - fwrite ($bf,full_tag("USEPASSWORD",4,false,$exercise->usepassword)); - fwrite ($bf,full_tag("PASSWORD",4,false,$exercise->password)); //Now we backup exercise elements $status = backup_exercise_elements($bf,$preferences,$exercise->id); //Now we backup any teacher submissions (these are an integral part of the exercise) diff --git a/mod/exercise/db/mysql.php b/mod/exercise/db/mysql.php index 45c82108d8b..2538b788f77 100644 --- a/mod/exercise/db/mysql.php +++ b/mod/exercise/db/mysql.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function exercise_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -25,37 +25,6 @@ function exercise_upgrade($oldversion) { execute_sql("ALTER TABLE `{$CFG->prefix}exercise` DROP COLUMN `gradingweight`"); } - if ($oldversion < 2004090200) { - table_column("exercise", "", "usepassword", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL"); - table_column("exercise", "", "password", "VARCHAR", "32", "", "", "NOT NULL"); - } - - if ($oldversion < 2004091000) { - table_column("exercise_assessments","generalcomment","generalcomment","text","","","","NOT NULL"); - table_column("exercise_assessments","teachercomment","teachercomment","text","","","","NOT NULL"); - } - - if ($oldversion < 2004100800) { - include_once("$CFG->dirroot/mod/exercise/lib.php"); - exercise_refresh_events(); - } - - if ($oldversion < 2004111200) { - execute_sql("ALTER TABLE {$CFG->prefix}exercise DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}exercise_submissions DROP INDEX exerciseid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}exercise_assessments DROP INDEX exerciseid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}exercise_elements DROP INDEX exerciseid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}exercise_rubrics DROP INDEX exerciseid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}exercise_grades DROP INDEX exerciseid;",false); - - modify_database('','ALTER TABLE prefix_exercise ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_exercise_submissions ADD INDEX exerciseid (exerciseid);'); - modify_database('','ALTER TABLE prefix_exercise_assessments ADD INDEX exerciseid (exerciseid);'); - modify_database('','ALTER TABLE prefix_exercise_elements ADD INDEX exerciseid (exerciseid);'); - modify_database('','ALTER TABLE prefix_exercise_rubrics ADD INDEX exerciseid (exerciseid);'); - modify_database('','ALTER TABLE prefix_exercise_grades ADD INDEX exerciseid (exerciseid);'); - } - return true; } diff --git a/mod/exercise/db/mysql.sql b/mod/exercise/db/mysql.sql index 27fd5c91cc5..39fb61f7257 100644 --- a/mod/exercise/db/mysql.sql +++ b/mod/exercise/db/mysql.sql @@ -18,10 +18,7 @@ CREATE TABLE `prefix_exercise` ( `grade` tinyint(3) NOT NULL default '0', `gradinggrade` tinyint(3) NOT NULL default '0', `showleaguetable` tinyint(3) unsigned NOT NULL default '0', - `usepassword` tinyint(3) unsigned NOT NULL default '0', - `password` varchar(32) NOT NULL default '', - PRIMARY KEY (`id`), - KEY `course` (`course`) + PRIMARY KEY (`id`) ) COMMENT='Defines exercise'; # -------------------------------------------------------- @@ -40,8 +37,7 @@ CREATE TABLE `prefix_exercise_submissions` ( `isexercise` tinyint(3) unsigned NOT NULL default '0', `late` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`id`), - INDEX `userid` (`userid`), - INDEX `exerciseid` (`exerciseid`) + INDEX `userid` (`userid`) ) COMMENT='Info about submitted work from teacher and students'; # -------------------------------------------------------- @@ -59,12 +55,11 @@ CREATE TABLE `prefix_exercise_assessments` ( `grade` float NOT NULL default '0', `gradinggrade` int(3) NOT NULL default '0', `mailed` tinyint(2) unsigned NOT NULL default '0', - `generalcomment` text NOT NULL default '', - `teachercomment` text NOT NULL default '', + `generalcomment` text NOT NULL, + `teachercomment` text NOT NULL, PRIMARY KEY (`id`), INDEX (`submissionid`), - INDEX (`userid`), - INDEX (`exerciseid`) + INDEX (`userid`) ) COMMENT='Info about assessments by teacher and students'; # -------------------------------------------------------- @@ -80,8 +75,7 @@ CREATE TABLE `prefix_exercise_elements` ( `scale` tinyint(3) unsigned NOT NULL default '0', `maxscore` tinyint(3) unsigned NOT NULL default '1', `weight` tinyint(3) unsigned NOT NULL default '11', - PRIMARY KEY (`id`), - KEY `exerciseid` (`exerciseid`) + PRIMARY KEY (`id`) ) COMMENT='Info about marking scheme of assignment'; # -------------------------------------------------------- @@ -96,8 +90,7 @@ CREATE TABLE `prefix_exercise_rubrics` ( `elementno` int(10) unsigned NOT NULL default '0', `rubricno` tinyint(3) unsigned NOT NULL default '0', `description` text NOT NULL, - PRIMARY KEY (`id`), - KEY `exerciseid` (`exerciseid`) + PRIMARY KEY (`id`) ) COMMENT='Info about the rubrics marking scheme'; # -------------------------------------------------------- @@ -113,8 +106,7 @@ CREATE TABLE `prefix_exercise_grades` ( `feedback` text NOT NULL default '', `grade` tinyint(3) NOT NULL default '0', PRIMARY KEY (`id`), - INDEX (`assessmentid`), - INDEX `exerciseid` (`exerciseid`) + INDEX (`assessmentid`) ) COMMENT='Info about individual grades given to each element'; # -------------------------------------------------------- diff --git a/mod/exercise/db/postgres7.php b/mod/exercise/db/postgres7.php index b5ab4a75309..202a3ae87ca 100644 --- a/mod/exercise/db/postgres7.php +++ b/mod/exercise/db/postgres7.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function exercise_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -15,35 +15,6 @@ function exercise_upgrade($oldversion) { table_column("exercise", "", "assessmentcomps", "INTEGER", "4", "UNSIGNED", "2", "NOT NULL", "usemaximum"); } - if ($oldversion < 2004090200) { - table_column("exercise", "", "usepassword", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL"); - table_column("exercise", "", "password", "VARCHAR", "32", "", "", "NOT NULL"); - } - - if ($oldversion < 2004091000) { - table_column("exercise_assessments","generalcomment","generalcomment","text","","","","NOT NULL"); - table_column("exercise_assessments","teachercomment","teachercomment","text","","","","NOT NULL"); - } - - if ($oldversion < 2004100800) { - include_once("$CFG->dirroot/mod/exercise/lib.php"); - exercise_refresh_events(); - } - - if ($oldversion < 2004111200) { - execute_sql("DROP INDEX {$CFG->prefix}exercise_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}exercise_submissions_exerciseid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}exercise_assessments_exerciseid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}exercise_rubrics_exerciseid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}exercise_grades_exerciseid_idx;",false); - - modify_database('','CREATE INDEX prefix_exercise_course_idx ON prefix_exercise (course);'); - modify_database('','CREATE INDEX prefix_exercise_submissions_exerciseid_idx ON prefix_exercise_submissions (exerciseid);'); - modify_database('','CREATE INDEX prefix_exercise_assessments_exerciseid_idx ON prefix_exercise_assessments (exerciseid);'); - modify_database('','CREATE INDEX prefix_exercise_rubrics_exerciseid_idx ON prefix_exercise_rubrics (exerciseid);'); - modify_database('','CREATE INDEX prefix_exercise_grades_exerciseid_idx ON prefix_exercise_grades (exerciseid);'); - } - return true; } diff --git a/mod/exercise/db/postgres7.sql b/mod/exercise/db/postgres7.sql index 6c5c7e077d4..7b402d0d71b 100644 --- a/mod/exercise/db/postgres7.sql +++ b/mod/exercise/db/postgres7.sql @@ -17,14 +17,8 @@ CREATE TABLE prefix_exercise ( timemodified INT8 NOT NULL default '0', grade INT NOT NULL default '0', gradinggrade INT NOT NULL default '0', - showleaguetable INT NOT NULL default '0', - usepassword INT4 NOT NULL default '0', - password VARCHAR(32) NOT NULL default '' - + showleaguetable INT NOT NULL default '0' ); - -CREATE INDEX prefix_exercise_course_idx ON prefix_exercise (course); - # -------------------------------------------------------- # @@ -42,8 +36,6 @@ CREATE TABLE prefix_exercise_submissions ( isexercise INT NOT NULL default '0' ); CREATE INDEX prefix_exercise_submissions_userid_idx ON prefix_exercise_submissions (userid); -CREATE INDEX prefix_exercise_submissions_exerciseid_idx ON prefix_exercise_submissions (exerciseid); - # -------------------------------------------------------- # @@ -60,13 +52,12 @@ CREATE TABLE prefix_exercise_assessments ( grade float NOT NULL default '0', gradinggrade INT NOT NULL default '0', mailed INT2 NOT NULL default '0', - generalcomment text NOT NULL default '', - teachercomment text NOT NULL default '' + generalcomment text NOT NULL, + teachercomment text NOT NULL ); # -------------------------------------------------------- CREATE INDEX prefix_exercise_assessments_submissionid_idx ON prefix_exercise_assessments (submissionid); CREATE INDEX prefix_exercise_assessments_userid_idx ON prefix_exercise_assessments (userid); -CREATE INDEX prefix_exercise_assessments_exerciseid_idx ON prefix_exercise_assessments (exerciseid); # Table structure for table exercise_elements # @@ -94,9 +85,6 @@ CREATE TABLE prefix_exercise_rubrics ( rubricno INT NOT NULL default '0', description text NOT NULL ); - -CREATE INDEX prefix_exercise_rubrics_exerciseid_idx ON prefix_exercise_rubrics (exerciseid); - # -------------------------------------------------------- # @@ -113,8 +101,6 @@ CREATE TABLE prefix_exercise_grades ( ); CREATE INDEX prefix_exercise_grades_assessmentid_idx ON prefix_exercise_grades (assessmentid); -CREATE INDEX prefix_exercise_grades_exerciseid_idx ON prefix_exercise_grades (exerciseid); - # -------------------------------------------------------- diff --git a/mod/exercise/index.php b/mod/exercise/index.php index 9c6bea6569a..2c6602a7c5e 100644 --- a/mod/exercise/index.php +++ b/mod/exercise/index.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require("../../config.php"); require("lib.php"); @@ -39,40 +39,39 @@ } else { $table->head = array ($strweek, $strname, $strtitle, $strgrade, $strsubmitted, $strdeadline); } - $table->align = array ("center", "left", "left","center","left", "left"); + $table->align = array ("CENTER", "LEFT", "LEFT","center","LEFT", "LEFT"); } else if ($course->format == "topics") { if (isteacher($course->id)) { $table->head = array ($strtopic, $strname, $strtitle, $strphase, $strsubmitted, $strdeadline); } else { $table->head = array ($strtopic, $strname, $strtitle, $strgrade, $strsubmitted, $strdeadline); } - $table->align = array ("center", "left", "left", "center", "left", "left"); + $table->align = array ("CENTER", "LEFT", "LEFT", "center", "LEFT", "LEFT"); } else { $table->head = array ($strname, $strsubmitted, $strdeadline); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); } foreach ($exercises as $exercise) { if ($exercise->deadline > $timenow) { $due = userdate($exercise->deadline); } else { - $due = "<font color=\"red\">".userdate($exercise->deadline)."</font>"; + $due = "<FONT COLOR=\"red\">".userdate($exercise->deadline)."</FONT>"; } if ($submissions = exercise_get_user_submissions($exercise, $USER)) { foreach ($submissions as $submission) { if ($submission->late) { - $submitted = "<font color=\"red\">".userdate($submission->timecreated)."</font>"; + $submitted = "<FONT COLOR=\"red\">".userdate($submission->timecreated)."</FONT>"; } else { $submitted = userdate($submission->timecreated); } - $link = "<a href=\"view.php?id=$exercise->coursemodule\">".format_string($exercise->name,true)."</a>"; + $link = "<A HREF=\"view.php?id=$exercise->coursemodule\">$exercise->name</A>"; $title = $submission->title; if ($course->format == "weeks" or $course->format == "topics") { if (isteacher($course->id)) { $phase = ''; switch ($exercise->phase) { - case 0: case 1: $phase = get_string("phase1short", "exercise"); break; case 2: $phase = get_string("phase2short", "exercise"); @@ -119,7 +118,7 @@ } else { $submitted = get_string("no"); $title = ''; - $link = "<a href=\"view.php?id=$exercise->coursemodule\">".format_string($exercise->name,true)."</a>"; + $link = "<A HREF=\"view.php?id=$exercise->coursemodule\">$exercise->name</A>"; if ($course->format == "weeks" or $course->format == "topics") { if (isteacher($course->id)) { $table->data[] = array ($exercise->section, $link, $title, $exercise->phase, @@ -132,7 +131,7 @@ } } } - echo "<br />"; + echo "<BR>"; print_table($table); diff --git a/mod/exercise/lib.php b/mod/exercise/lib.php index 6907e97924b..ff188723109 100644 --- a/mod/exercise/lib.php +++ b/mod/exercise/lib.php @@ -1,9 +1,9 @@ -<?php // $Id: lib.php,v 1.1 23 Aug 2003 +<?PHP // $Id: lib.php,v 1.1 23 Aug 2003 // exercise constants and standard moodle functions plus those functions called directly // see locallib.php for other non-standard exercise functions -require_once($CFG->libdir.'/filelib.php'); +include_once("$CFG->dirroot/files/mimetypes.php"); /*** Constants **********************************/ @@ -60,32 +60,7 @@ function exercise_add_instance($exercise) { $exercise->deadlinemonth, $exercise->deadlineday, $exercise->deadlinehour, $exercise->deadlineminute); - // encode password if necessary - if (!empty($exercise->password)) { - $exercise->password = md5($exercise->password); - } else { - unset($exercise->password); - } - - if ($returnid = insert_record("exercise", $exercise)) { - - $event = NULL; - $event->name = $exercise->name; - $event->description = $exercise->description; - $event->courseid = $exercise->course; - $event->groupid = 0; - $event->userid = 0; - $event->modulename = 'exercise'; - $event->instance = $returnid; - $event->eventtype = 'deadline'; - $event->timestart = $exercise->deadline; - $event->timeduration = 0; - - add_event($event); - } - - - return $returnid; + return insert_record("exercise", $exercise); } @@ -104,31 +79,31 @@ function exercise_choose_from_menu ($options, $name, $selected="", $nothing="cho $javascript = ""; } - $output = "<select name=$name $javascript>\n"; + $output = "<SELECT NAME=$name $javascript>\n"; if ($nothing) { - $output .= " <option value=\"$nothingvalue\"\n"; + $output .= " <OPTION VALUE=\"$nothingvalue\"\n"; if ($nothingvalue == $selected) { - $output .= " selected=\"selected\""; + $output .= " SELECTED"; } - $output .= ">$nothing</option>\n"; + $output .= ">$nothing</OPTION>\n"; } if (!empty($options)) { foreach ($options as $value => $label) { - $output .= " <option value=\"$value\""; + $output .= " <OPTION VALUE=\"$value\""; if ($value == $selected) { - $output .= " selected=\"selected\""; + $output .= " SELECTED"; } // stop zero label being replaced by array index value // if ($label) { - // $output .= ">$label</option>\n"; + // $output .= ">$label</OPTION>\n"; // } else { - // $output .= ">$value</option>\n"; + // $output .= ">$value</OPTION>\n"; // } - $output .= ">$label</option>\n"; + $output .= ">$label</OPTION>\n"; } } - $output .= "</select>\n"; + $output .= "</SELECT>\n"; if ($return) { return $output; @@ -202,10 +177,10 @@ function exercise_cron() { // "Your assignment \"$submission->title\" has been assessed by" $msg = get_string("mail1", "exercise", $submission->title).' '.fullname($assessmentowner).".\n"; // "The comments and grade can be seen in the exercise assignment '$exercise->name' - $msg .= get_string("mail2", "exercise", format_string($exercise->name,true))."\n\n"; + $msg .= get_string("mail2", "exercise", $exercise->name)."\n\n"; - $postsubject = "$course->shortname: $strexercises: ".format_string($exercise->name,true); - $posttext = "$course->shortname -> $strexercises -> ".format_string($exercise->name,true)."\n"; + $postsubject = "$course->shortname: $strexercises: $exercise->name"; + $posttext = "$course->shortname -> $strexercises -> $exercise->name\n"; $posttext .= "---------------------------------------------------------------------\n"; $posttext .= $msg; // "You can see it in your exercise assignment" @@ -213,14 +188,14 @@ function exercise_cron() { $posttext .= " $CFG->wwwroot/mod/exercise/view.php?id=$cm->id\n"; $posttext .= "---------------------------------------------------------------------\n"; if ($sendto->mailformat == 1) { // HTML - $posthtml = "<p><font face=\"sans-serif\">". - "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ->". - "<a href=\"$CFG->wwwroot/mod/exercise/index.php?id=$course->id\">$strexercises</a> ->". - "<a href=\"$CFG->wwwroot/mod/exercise/view.php?id=$cm->id\">".format_string($exercise->name,true)."</a></font></p>"; - $posthtml .= "<hr /><font face=\"sans-serif\">"; - $posthtml .= "<p>$msg</p>"; - $posthtml .= "<p>".get_string("mail3", "exercise"). - " <a href=\"$CFG->wwwroot/mod/exercise/view.php?id=$cm->id\">".format_string($exercise->name,true)."</a>.</p></font><hr />"; + $posthtml = "<P><FONT FACE=sans-serif>". + "<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/exercise/index.php?id=$course->id\">$strexercises</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/exercise/view.php?id=$cm->id\">$exercise->name</A></FONT></P>"; + $posthtml .= "<HR><FONT FACE=sans-serif>"; + $posthtml .= "<P>$msg</P>"; + $posthtml .= "<P>".get_string("mail3", "exercise"). + " <A HREF=\"$CFG->wwwroot/mod/exercise/view.php?id=$cm->id\">$exercise->name</A>.</P></FONT><HR>"; } else { $posthtml = ""; } @@ -343,27 +318,31 @@ function exercise_print_recent_activity($course, $isteacher, $timestart) { $tempmod->course = $course->id; $tempmod->id = $log->exerciseid; //Obtain the visible property from the instance - if (instance_is_visible('exercise',$tempmod)) { + if (instance_is_visible("exercise",$tempmod)) { $submitcontent = true; break; } } - // if we got some 'live' ones then output them + // if we got some "live" ones then output them if ($submitcontent) { - print_headline(get_string('exercisesubmissions', 'exercise').':'); + $strftimerecent = get_string("strftimerecent"); + print_headline(get_string("exercisesubmissions", "exercise").":"); foreach ($logs as $log) { //Create a temp valid module structure (only need courseid, moduleid) $tempmod->course = $course->id; $tempmod->id = $log->exerciseid; //Obtain the visible property from the instance - if (instance_is_visible('exercise',$tempmod)) { - print_recent_activity_note($log->time, $log, $isteacher, $log->name, - $CFG->wwwroot.'/mod/exercise/'.str_replace('&', '&amp;', $log->url)); + if (instance_is_visible("exercise",$tempmod)) { + $date = userdate($log->time, $strftimerecent); + echo '<p><font size="1">'.$date.' - '.fullname($log).'<br />'; + echo "\"<a href=\"$CFG->wwwroot/mod/exercise/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; + } } } } } - } // have a look for new assessment gradings for this user $gradecontent = false; @@ -377,23 +356,27 @@ function exercise_print_recent_activity($course, $isteacher, $timestart) { if (instance_is_visible("exercise",$tempmod)) { $gradecontent = true; break; + } } - } // if we got some "live" ones then output them if ($gradecontent) { - print_headline(get_string('exercisefeedback', 'exercise').':'); + $strftimerecent = get_string("strftimerecent"); + print_headline(get_string("exercisefeedback", "exercise").":"); foreach ($logs as $log) { //Create a temp valid module structure (only need courseid, moduleid) $tempmod->course = $course->id; $tempmod->id = $log->exerciseid; //Obtain the visible property from the instance - if (instance_is_visible('exercise',$tempmod)) { - print_recent_activity_note($log->time, $log, $isteacher, $log->name, - $CFG->wwwroot.'/mod/exercise/'.str_replace('&', '&amp;', $log->url)); + if (instance_is_visible("exercise",$tempmod)) { + $date = userdate($log->time, $strftimerecent); + echo '<p><font size="1">'.$date.' - '.fullname($log).'<br />'; + echo "\"<a href=\"$CFG->wwwroot/mod/exercise/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; + } } } } - } // have a look for new assessments for this user $assesscontent = false; @@ -412,69 +395,28 @@ function exercise_print_recent_activity($course, $isteacher, $timestart) { } // if we got some "live" ones then output them if ($assesscontent) { - print_headline(get_string('exerciseassessments', 'exercise').':'); + $strftimerecent = get_string("strftimerecent"); + print_headline(get_string("exerciseassessments", "exercise").":"); foreach ($logs as $log) { //Create a temp valid module structure (only need courseid, moduleid) $tempmod->course = $course->id; $tempmod->id = $log->exerciseid; //Obtain the visible property from the instance - if (instance_is_visible('exercise',$tempmod)) { - print_recent_activity_note($log->time, $log, $isteacher, $log->name, - $CFG->wwwroot.'/mod/exercise/'.str_replace('&', '&amp;', $log->url)); + if (instance_is_visible("exercise",$tempmod)) { + $date = userdate($log->time, $strftimerecent); + echo '<p><font size="1">'.$date.' - '.fullname($log).'<br />'; + echo "\"<a href=\"$CFG->wwwroot/mod/exercise/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; + } } } } } - } return $submitcontent or $gradecontent or $assesscontent; } -/////////////////////////////////////////////////////////////////////////////// -function exercise_refresh_events($courseid = 0) { -// This standard function will check all instances of this module -// and make sure there are up-to-date events created for each of them. -// If courseid = 0, then every exercise event in the site is checked, else -// only exercise events belonging to the course specified are checked. -// This function is used, in its new format, by restore_refresh_events() - - if ($courseid == 0) { - if (! $exercises = get_records("exercise")) { - return true; - } - } else { - if (! $exercises = get_records("exercise", "course", $courseid)) { - return true; - } - } - $moduleid = get_field('modules', 'id', 'name', 'exercise'); - - foreach ($exercises as $exercise) { - $event = NULL; - $event->name = addslashes($exercise->name); - $event->description = addslashes($exercise->description); - $event->timestart = $exercise->deadline; - - if ($event->id = get_field('event', 'id', 'modulename', 'exercise', 'instance', $exercise->id)) { - update_event($event); - - } else { - $event->courseid = $exercise->course; - $event->groupid = 0; - $event->userid = 0; - $event->modulename = 'exercise'; - $event->instance = $exercise->id; - $event->eventtype = 'deadline'; - $event->timeduration = 0; - $event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $exercise->id); - add_event($event); - } - - } - return true; -} - - /*******************************************************************/ function exercise_update_instance($exercise) { // Given an object containing all the necessary data, @@ -487,30 +429,9 @@ function exercise_update_instance($exercise) { $exercise->deadlinemonth, $exercise->deadlineday, $exercise->deadlinehour, $exercise->deadlineminute); - // encode password if necessary - if (!empty($exercise->password)) { - $exercise->password = md5($exercise->password); - } else { - unset($exercise->password); - } - $exercise->id = $exercise->instance; - if ($returnid = update_record("exercise", $exercise)) { - - $event = NULL; - - if ($event->id = get_field('event', 'id', 'modulename', 'exercise', 'instance', $exercise->id)) { - - $event->name = $exercise->name; - $event->description = $exercise->description; - $event->timestart = $exercise->deadline; - - update_event($event); - } - } - - return $returnid; + return update_record("exercise", $exercise); } @@ -570,13 +491,13 @@ function exercise_get_participants($exerciseid) { global $CFG; //Get students from exercise_submissions - $st_submissions = get_records_sql("SELECT DISTINCT u.id, u.id + $st_submissions = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}exercise_submissions s WHERE s.exerciseid = '$exerciseid' and u.id = s.userid"); //Get students from exercise_assessments - $st_assessments = get_records_sql("SELECT DISTINCT u.id, u.id + $st_assessments = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}exercise_assessments a WHERE a.exerciseid = '$exerciseid' and @@ -704,7 +625,7 @@ function exercise_get_submit_logs($course, $timestart) { global $CFG, $USER; $timethen = time() - $CFG->maxeditingtime; - return get_records_sql("SELECT l.time, l.url, u.firstname, u.lastname, l.info as exerciseid, e.name + return get_records_sql("SELECT l.time, l.url, u.firstname, u.lastname, l.info exerciseid, e.name FROM {$CFG->prefix}log l, {$CFG->prefix}exercise e, {$CFG->prefix}user u @@ -774,8 +695,8 @@ function exercise_print_submission_title($exercise, $submission) { } else { $ffurl = "file.php?file=/$filearea/$file"; } - return "<img src=\"$CFG->pixpath/f/$icon\" height=\"16\" width=\"16\" border=\"0\" alt=\"File\" />". - "&nbsp;<a target=\"uploadedfile\" href=\"$CFG->wwwroot/$ffurl\">$submission->title</a>"; + return "<IMG SRC=\"$CFG->pixpath/f/$icon\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"File\">". + "&nbsp;<A TARGET=\"uploadedfile\" HREF=\"$CFG->wwwroot/$ffurl\">$submission->title</A>"; } } } diff --git a/mod/exercise/locallib.php b/mod/exercise/locallib.php index dc5ebfb2897..49d5bb86db2 100644 --- a/mod/exercise/locallib.php +++ b/mod/exercise/locallib.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// Library of extra functions for the exercise module @@ -239,7 +239,8 @@ function exercise_count_student_submissions($exercise) { // make sure it works on the site course $select = "u.course = '$exercise->course' AND"; - if ($exercise->course == SITEID) { + $site = get_site(); + if ($exercise->course == $site->id) { $select = ''; } @@ -488,7 +489,8 @@ function exercise_get_best_submission_grades($exercise) { // make sure it works on the site course $select = "u.course = '$exercise->course' AND"; - if ($exercise->course == SITEID) { + $site = get_site(); + if ($exercise->course == $site->id) { $select = ''; } @@ -541,7 +543,8 @@ function exercise_get_student_submissions($exercise, $order = "time", $groupid = // make sure it works on the site course $select = "u.course = '$exercise->course' AND"; - if ($exercise->course == SITEID) { + $site = get_site(); + if ($exercise->course == $site->id) { $select = ''; } @@ -567,7 +570,8 @@ function exercise_get_student_submissions($exercise, $order = "time", $groupid = // make sure it works on the site course $select = "u.course = '$exercise->course' AND"; - if ($exercise->course == SITEID) { + $site = get_site(); + if ($exercise->course == $site->id) { $select = ''; } @@ -587,7 +591,8 @@ function exercise_get_student_submissions($exercise, $order = "time", $groupid = // make sure it works on the site course $select = "u.course = '$exercise->course' AND"; - if ($exercise->course == SITEID) { + $site = get_site(); + if ($exercise->course == $site->id) { $select = ''; } @@ -610,7 +615,8 @@ function exercise_get_student_submissions($exercise, $order = "time", $groupid = // make sure it works on the site course $select = "u.course = '$exercise->course' AND"; - if ($exercise->course == SITEID) { + $site = get_site(); + if ($exercise->course == $site->id) { $select = ''; } @@ -664,7 +670,8 @@ function exercise_get_ungraded_assessments_student($exercise) { // make sure it works on the site course $select = "u.course = '$exercise->course' AND"; - if ($exercise->course == SITEID) { + $site = get_site(); + if ($exercise->course == $site->id) { $select = ''; } @@ -711,7 +718,7 @@ function exercise_list_all_ungraded_assessments($exercise) { global $CFG; $table->head = array (get_string("title", "exercise"), get_string("timeassessed", "exercise"), get_string("action", "exercise")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -721,12 +728,12 @@ function exercise_list_all_ungraded_assessments($exercise) { foreach ($assessments as $assessment) { if (!isteacher($exercise->course, $assessment->userid)) { if (($timenow - $assessment->timegraded) < $CFG->maxeditingtime) { - $action = "<a href=\"assessments.php?action=gradeassessment&amp;a=$exercise->id&amp;aid=$assessment->id\">". - get_string("edit", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=gradeassessment&a=$exercise->id&aid=$assessment->id\">". + get_string("edit", "exercise")."</A>"; } else { - $action = "<a href=\"assessments.php?action=gradeassessment&amp;a=$exercise->id&amp;aid=$assessment->id\">". - get_string("gradeassessment", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=gradeassessment&a=$exercise->id&aid=$assessment->id\">". + get_string("gradeassessment", "exercise")."</A>"; } $submission = get_record("exercise_submissions", "id", $assessment->submissionid); $table->data[] = array(exercise_print_submission_title($exercise, $submission), @@ -743,7 +750,7 @@ function exercise_list_all_ungraded_assessments($exercise) { /////////////////////////////////////////////////////////////////////////////////////////////// function exercise_list_submissions_for_admin($exercise) { // list the teacher sublmissions first - global $CFG, $USER; + global $CFG, $THEME, $USER; if (! $course = get_record("course", "id", $exercise->course)) { error("Course is misconfigured"); @@ -755,7 +762,7 @@ function exercise_list_submissions_for_admin($exercise) { exercise_print_assignment_info($exercise); print_heading_with_help(get_string("administration"), "administration", "exercise"); - echo"<p align=\"center\"><b><a href=\"assessments.php?action=teachertable&amp;id=$cm->id\">". + echo"<p align=\"center\"><b><a href=\"assessments.php?action=teachertable&id=$cm->id\">". get_string("teacherassessmenttable", "exercise", $course->teacher)."</a></b></p>\n"; @@ -770,12 +777,10 @@ function exercise_list_submissions_for_admin($exercise) { if ($submissions = exercise_get_teacher_submissions($exercise)) { foreach ($submissions as $submission) { - $action = "<a href=\"submissions.php?action=adminamendtitle&amp;id=$cm->id&amp;sid=$submission->id\">". + $action = "<a href=\"submissions.php?action=adminamendtitle&id=$cm->id&sid=$submission->id\">". get_string("amendtitle", "exercise")."</a>"; - if (isteacheredit($course->id)) { - $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("delete", "exercise")."</a>"; - } + $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&id=$cm->id&sid=$submission->id\">". + get_string("delete", "exercise")."</a>"; $table->data[] = array(exercise_print_submission_title($exercise, $submission), userdate($submission->timecreated), $action); } @@ -820,7 +825,7 @@ function exercise_list_submissions_for_admin($exercise) { } $title .= "} "; if ($realassessments = exercise_count_user_assessments_done($exercise, $user)) { - $action = "<a href=\"assessments.php?action=adminlistbystudent&amp;id=$cm->id&amp;userid=$user->id\">". + $action = "<a href=\"assessments.php?action=adminlistbystudent&id=$cm->id&userid=$user->id\">". get_string("view", "exercise")."</a>"; } else { @@ -874,7 +879,7 @@ function exercise_list_submissions_for_admin($exercise) { number_format($stats->min * $exercise->gradinggrade / 100.0, 1)); print_heading(get_string("gradinggrade", "exercise")." ".get_string("analysis", "exercise")); print_table($table); - echo "<p align=\"center\"><a href=\"assessments.php?id=$cm->id&amp;action=regradestudentassessments\">". + echo "<p align=\"center\"><a href=\"assessments.php?id=$cm->id&action=regradestudentassessments\">". get_string("regradestudentassessments", "exercise")."</a> "; helpbutton("regrading", get_string("regradestudentassessments", "exercise"), "exercise"); echo "</p>\n"; @@ -902,34 +907,34 @@ function exercise_list_submissions_for_admin($exercise) { } if ($submissions = exercise_get_user_submissions($exercise, $user)) { foreach ($submissions as $submission) { - $action = "<a href=\"submissions.php?action=adminamendtitle&amp;id=$cm->id&amp;sid=$submission->id\">". + $action = "<a href=\"submissions.php?action=adminamendtitle&id=$cm->id&sid=$submission->id\">". get_string("amendtitle", "exercise")."</a>"; // has teacher already assessed this submission if ($assessment = get_record_select("exercise_assessments", "submissionid = $submission->id AND userid = $USER->id")) { $curtime = time(); if (($curtime - $assessment->timecreated) > $CFG->maxeditingtime) { - $action .= " | <a href=\"assessments.php?action=assesssubmission&amp;id=$cm->id&amp;sid=$submission->id\">". + $action .= " | <a href=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">". get_string("reassess", "exercise")."</a>"; } else { // there's still time left to edit... - $action .= " | <a href=\"assessments.php?action=assesssubmission&amp;id=$cm->id&amp;sid=$submission->id\">". + $action .= " | <a href=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">". get_string("edit", "exercise")."</a>"; } } else { // user has not assessed this submission - $action .= " | <a href=\"assessments.php?action=assesssubmission&amp;id=$cm->id&amp;sid=$submission->id\">". + $action .= " | <a href=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">". get_string("assess", "exercise")."</a>"; } if ($nassessments = exercise_count_assessments($submission)) { - $action .= " | <a href=\"assessments.php?action=adminlist&amp;id=$cm->id&amp;sid=$submission->id\">". + $action .= " | <a href=\"assessments.php?action=adminlist&id=$cm->id&sid=$submission->id\">". get_string("view", "exercise")." ($nassessments)</a>"; } if ($submission->late) { - $action .= " | <a href=\"submissions.php?action=adminlateflag&amp;id=$cm->id&amp;sid=$submission->id\">". + $action .= " | <a href=\"submissions.php?action=adminlateflag&id=$cm->id&sid=$submission->id\">". get_string("clearlateflag", "exercise")."</a>"; } - $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&amp;id=$cm->id&amp;sid=$submission->id\">". + $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&id=$cm->id&sid=$submission->id\">". get_string("delete", "exercise")."</a>"; $title = $submission->title; if ($submission->resubmit) { @@ -1002,7 +1007,7 @@ function exercise_list_teacher_assessments($exercise, $user) { error("Course is misconfigured"); } $table->head = array (get_string("title", "exercise"), get_string("action", "exercise"), get_string("comment", "exercise")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1014,8 +1019,8 @@ function exercise_list_teacher_assessments($exercise, $user) { if ($assessments = exercise_get_assessments($submission)) { foreach ($assessments as $assessment) { if (isteacher($exercise->course, $assessment->userid)) { // assessments by teachers only - $action = "<a href=\"assessments.php?action=viewassessment&amp;a=$exercise->id&amp;aid=$assessment->id\">". - get_string("view", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=viewassessment&a=$exercise->id&aid=$assessment->id\">". + get_string("view", "exercise")."</A>"; // has teacher commented on teacher's assessment? shouldn't happen but leave test in if ($assessment->timegraded and ($timenow - $assessment->timegraded > $CFG->maxeditingtime)) { $comment = get_string("gradedbyteacher", "exercise", $course->teacher); @@ -1033,7 +1038,7 @@ function exercise_list_teacher_assessments($exercise, $user) { print_table($table); } else { - echo "<center>".get_string("noassessmentsdone", "exercise")."</center>\n"; + echo "<CENTER>".get_string("noassessmentsdone", "exercise")."</CENTER>\n"; } } @@ -1105,7 +1110,7 @@ function exercise_list_teacher_submissions($exercise, $user, $reassess = false) $table->head = array (get_string("action", "exercise"), get_string("assessed", "exercise"), get_string("comment", "exercise")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1123,25 +1128,25 @@ function exercise_list_teacher_submissions($exercise, $user, $reassess = false) if ($submission->isexercise) { $comment = ''; if ($reassess) { // just show re-assess - $action = "<a href=\"assessments.php?action=assesssubmission&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("reassess", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">". + get_string("reassess", "exercise")."</A>"; } else { // reassess is false - assessment is a "normal state" // user assessment has three states: record created but not assessed (date created // in the future); just assessed but still editable; and "static" (may or may not // have been graded by teacher, that is shown in the comment) if ($assessment->timecreated > $timenow) { // user needs to assess this submission - $action = "<a href=\"assessments.php?action=assesssubmission&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("assess", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">". + get_string("assess", "exercise")."</A>"; } elseif ($assessment->timecreated > ($timenow - $CFG->maxeditingtime)) { // there's still time left to edit... - $action = "<a href=\"assessments.php?action=assesssubmission&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("edit", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">". + get_string("edit", "exercise")."</A>"; } else { - $action = "<a href=\"assessments.php?action=viewassessment&amp;id=$cm->id&amp;aid=$assessment->id\">" - .get_string("view", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">" + .get_string("view", "exercise")."</A>"; } } // show the date if in the past (otherwise the user hasn't done the assessment yet @@ -1189,7 +1194,7 @@ function exercise_list_unassessed_student_submissions($exercise, $user) { $table->head = array (get_string("title", "exercise"), get_string("submittedby", "exercise"), get_string("submitted", "exercise"), get_string("action", "exercise"), get_string("comment", "exercise")); - $table->align = array ("left", "left", "left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1239,14 +1244,14 @@ function exercise_list_unassessed_student_submissions($exercise, $user) { } if ($warm) { // last chance salon - $action = "<a href=\"assessments.php?action=teacherassessment&amp;id=$cm->id&amp;aid=$studentassessment->id&amp;sid=$submission->id\">". - get_string("edit", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=teacherassessment&id=$cm->id&aid=$studentassessment->id&sid=$submission->id\">". + get_string("edit", "exercise")."</A>"; $table->data[] = array(exercise_print_submission_title($exercise, $submission), fullname($submissionowner), $timegap, $action, $comment); } else { - $action = "<a href=\"assessments.php?action=teacherassessment&amp;id=$cm->id&amp;aid=$studentassessment->id&amp;sid=$submission->id\">". - get_string("assess", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=teacherassessment&id=$cm->id&aid=$studentassessment->id&sid=$submission->id\">". + get_string("assess", "exercise")."</A>"; $table->data[] = array(exercise_print_submission_title($exercise, $submission), fullname($submissionowner), $timegap, $action, $comment); @@ -1278,8 +1283,8 @@ function exercise_list_unassessed_student_submissions($exercise, $user) { } if ($teacherassessed and $warm) { // last chance salon - $action = "<a href=\"assessments.php?action=assessresubmission&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("edit", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=assessresubmission&id=$cm->id&sid=$submission->id\">". + get_string("edit", "exercise")."</A>"; $timegap = get_string("ago", "exercise", format_time($submission->timecreated - $timenow)); if ($submission->late) { @@ -1315,8 +1320,8 @@ function exercise_list_unassessed_student_submissions($exercise, $user) { } } } - $action = "<a href=\"assessments.php?action=assessresubmission&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("assess", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=assessresubmission&id=$cm->id&sid=$submission->id\">". + get_string("assess", "exercise")."</A>"; $timegap = get_string("ago", "exercise", format_time($submission->timecreated - $timenow)); if ($submission->late) { @@ -1342,7 +1347,7 @@ function exercise_list_unassessed_teacher_submissions($exercise, $user) { global $CFG; $table->head = array (get_string("title", "exercise"), get_string("action", "exercise"), get_string("comment", "exercise")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1356,14 +1361,14 @@ function exercise_list_unassessed_teacher_submissions($exercise, $user) { $timenow = time(); if (($timenow - $assessment->timecreated < $CFG->maxeditingtime)) { // last chance salon - $action = "<a href=\"assessments.php?action=assesssubmission&amp;a=$exercise->id&amp;sid=$submission->id\">". - get_string("edit", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$exercise->id&sid=$submission->id\">". + get_string("edit", "exercise")."</A>"; $table->data[] = array(exercise_print_submission_title($exercise, $submission), $action, $comment); } } else { // no assessment - $action = "<a href=\"assessments.php?action=assesssubmission&amp;a=$exercise->id&amp;sid=$submission->id\">". - get_string("assess", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$exercise->id&sid=$submission->id\">". + get_string("assess", "exercise")."</A>"; $table->data[] = array(exercise_print_submission_title($exercise, $submission), $action, $comment); } } @@ -1388,7 +1393,7 @@ function exercise_list_ungraded_assessments($exercise, $stype) { // lists all the assessments of student submissions for grading by teacher $table->head = array (get_string("title", "exercise"), get_string("submittedby", "exercise"), get_string("assessor", "exercise"), get_string("timeassessed", "exercise"), get_string("action", "exercise")); - $table->align = array ("left", "left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1406,12 +1411,12 @@ function exercise_list_ungraded_assessments($exercise, $stype) { foreach ($assessments as $assessment) { if (!isteacher($exercise->course, $assessment->userid)) { // don't let teacher grade their own assessments if (($timenow - $assessment->timegraded) < $CFG->maxeditingtime) { - $action = "<a href=\"assessments.php?action=gradeassessment&amp;id=$cm->id&amp;stype=$stype&amp;aid=$assessment->id\">". - get_string("edit", "exercise")."</a>"; + $action = "<A HREF=\"assessments.php?action=gradeassessment&id=$cm->id&stype=$stype&aid=$assessment->id\">". + get_string("edit", "exercise")."</A>"; } else { - $action = "<a href=\"assessments.php?action=gradeassessment&amp;id=$cm->id&amp;stype=$stype&amp;aid=$assessment->id\">". - get_string("grade")."</a>"; + $action = "<A HREF=\"assessments.php?action=gradeassessment&id=$cm->id&stype=$stype&aid=$assessment->id\">". + get_string("grade")."</A>"; } $submission = get_record("exercise_submissions", "id", $assessment->submissionid); $submissionowner = get_record("user", "id", $submission->userid); @@ -1442,7 +1447,7 @@ function exercise_list_user_submissions($exercise, $user) { $timenow = time(); $table->head = array (get_string("title", "exercise"), get_string("action", "exercise"), get_string("submitted", "exercise"), get_string("assessment", "exercise")); - $table->align = array ("left", "left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1453,7 +1458,7 @@ function exercise_list_user_submissions($exercise, $user) { $comment = ''; // allow user to delete submission if it's warm if ($submission->timecreated > $timenow - $CFG->maxeditingtime) { - $action = "<a href=\"submissions.php?action=userconfirmdelete&amp;id=$cm->id&amp;sid=$submission->id\">". + $action = "<a href=\"submissions.php?action=userconfirmdelete&id=$cm->id&sid=$submission->id\">". get_string("delete", "exercise")."</a>"; } // if this is a teacher's submission (an exercise description) ignore any assessments @@ -1467,7 +1472,7 @@ function exercise_list_user_submissions($exercise, $user) { if ($action) { $action .= " | "; } - $action .= "<a href=\"assessments.php?action=viewassessment&amp;id=$cm->id&amp;aid=$assessment->id\">". + $action .= "<a href=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">". get_string("viewteacherassessment", "exercise", $course->teacher)."</a>"; if ($comment) { $comment .= " | "; @@ -1497,7 +1502,7 @@ function exercise_list_user_submissions($exercise, $user) { /////////////////////////////////////////////////////////////////////////////////////////////// function exercise_print_assessment_form($exercise, $assessment = false, $allowchanges = false, $returnto = '') { // prints several variants of the assessment form - global $CFG, $USER, $EXERCISE_SCALES, $EXERCISE_EWEIGHTS; + global $CFG, $THEME, $USER, $EXERCISE_SCALES, $EXERCISE_EWEIGHTS; if (! $course = get_record("course", "id", $exercise->course)) { error("Course is misconfigured"); @@ -1539,10 +1544,10 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch if ($exercisefound) { print_heading(get_string("theexerciseandthesubmissionby", "exercise", fullname($submissionowner))); - echo "<center><table border=\"1\" width=\"30%\"><tr> - <td align=\"center\">\n"; + echo "<CENTER><TABLE BORDER=\"1\" WIDTH=\"30%\"><TR> + <TD ALIGN=CENTER BGCOLOR=\"$THEME->cellcontent\">\n"; echo exercise_print_submission_title($exercise, $teachersubmission); - echo "</td></tr></table><br clear=\"all\" />\n"; + echo "</TD></TR></TABLE><BR CLEAR=ALL>\n"; } } else { @@ -1552,17 +1557,17 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch } } - echo "<center><table border=\"1\" width=\"30%\"><tr> - <td align=\"center\">\n"; + echo "<CENTER><TABLE BORDER=\"1\" WIDTH=\"30%\"><TR> + <TD ALIGN=CENTER BGCOLOR=\"$THEME->cellcontent\">\n"; echo exercise_print_submission_title($exercise, $submission); - echo "</td></tr></table><br clear=\"all\" />\n"; + echo "</TD></TR></TABLE><BR CLEAR=ALL>\n"; // only show the grade if grading strategy > 0 and the grade is positive if ($exercise->gradingstrategy and $assessment->grade >= 0) { - echo "<center><b>".get_string("thegradeis", "exercise").": ". + echo "<CENTER><B>".get_string("thegradeis", "exercise").": ". number_format($assessment->grade * $exercise->grade / 100.0, 2)." (". - get_string("maximumgrade")." ".number_format($exercise->grade, 0).")</b></center><br clear=\"all\" />\n"; + get_string("maximumgrade")." ".number_format($exercise->grade, 0).")</B></CENTER><BR CLEAR=ALL>\n"; } } @@ -1570,12 +1575,12 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch // FORM is needed for Mozilla browsers, else radio bttons are not checked ?> <form name="assessmentform" method="post" action="assessments.php"> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="aid" value="<?php echo $assessment->id ?>" /> - <input type="hidden" name="action" value="updateassessment" /> - <input type="hidden" name="resubmit" value="0" /> - <input type="hidden" name="returnto" value="<?php echo $returnto ?>" /> - <?php + <INPUT TYPE="hidden" NAME="id" VALUE="<?PHP echo $cm->id ?>"> + <input type="hidden" name="aid" value="<?PHP echo $assessment->id ?>"> + <input type="hidden" name="action" value="updateassessment"> + <input type="hidden" name="resubmit" value="0"> + <input type="hidden" name="returnto" value="<?PHP echo $returnto ?>"> + <?PHP if ($assessment) { if (!$assessmentowner = get_record("user", "id", $assessment->userid)) { error("Exercise_print_assessment_form: could not find user record"); @@ -1591,9 +1596,9 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch $formtitle = get_string("assessmentform", "exercise"); } echo "<center><table cellpadding=\"2\" border=\"1\">\n"; - echo "<tr valign=\"top\">\n"; + echo "<tr valign=top>\n"; - echo " <td colspan=\"2\"><center><b>$formtitle</b></center></td>\n"; + echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\"><center><b>$formtitle</b></center></td>\n"; echo "</tr>\n"; @@ -1629,15 +1634,15 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch // now print the form for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","exercise")." $iplus1:</b></p></td>\n"; - echo " <td>".text_to_html($elements[$i]->description); - echo "</td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("element","exercise")." $iplus1:</B></P></TD>\n"; + echo " <TD>".text_to_html($elements[$i]->description); + echo "</TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback[]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">\n"; + echo " <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } @@ -1646,11 +1651,11 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch else { echo text_to_html($grades[$i]->feedback); } - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } break; @@ -1658,16 +1663,16 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch // now print the form for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","exercise")." $iplus1:</b></p></td>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("element","exercise")." $iplus1:</B></P></TD>\n"; - echo " <td>".text_to_html($elements[$i]->description); - echo "<p align=\"right\"><font size=\"1\">Weight: " - .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</font>\n"; - echo "</td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("grade"). ":</b></p></td>\n"; - echo " <td valign=\"top\">\n"; + echo " <TD>".text_to_html($elements[$i]->description); + echo "<P align=right><FONT size=1>Weight: " + .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</FONT>\n"; + echo "</TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("grade"). ":</B></P></TD>\n"; + echo " <TD valign=\"top\">\n"; // get the appropriate scale $scalenumber=$elements[$i]->scale; @@ -1675,7 +1680,7 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch switch ($SCALE->type) { case 'radio' : // show selections highest first - echo "<center><b>$SCALE->start</b>&nbsp;&nbsp;&nbsp;"; + echo "<CENTER><B>$SCALE->start</B>&nbsp;&nbsp;&nbsp;"; for ($j = $SCALE->size - 1; $j >= 0 ; $j--) { $checked = false; if (isset($grades[$i]->grade)) { @@ -1689,13 +1694,13 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch } } if ($checked) { - echo " <input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" checked=\"checked\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\" CHECKED> &nbsp;&nbsp;&nbsp;\n"; } else { - echo " <input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\"> &nbsp;&nbsp;&nbsp;\n"; } } - echo "&nbsp;&nbsp;&nbsp;<b>$SCALE->end</b></center>\n"; + echo "&nbsp;&nbsp;&nbsp;<B>$SCALE->end</B></CENTER>\n"; break; case 'selection' : unset($numbers); @@ -1710,14 +1715,14 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch } break; - echo " </td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; } - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback[]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">\n"; + echo " <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } @@ -1726,11 +1731,11 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch else { echo text_to_html($grades[$i]->feedback); } - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } break; @@ -1739,24 +1744,24 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch $error = 0; for ($i=0; $i < count($elements) - 1; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; + echo "<TR valign=top>\n"; - echo " <td align=\"right\"><p><b>". get_string("element","exercise")." $iplus1:</b></p></td>\n"; + echo " <TD align=right><P><B>". get_string("element","exercise")." $iplus1:</B></P></TD>\n"; - echo " <td>".text_to_html($elements[$i]->description); - echo "<p align=\"right\"><font size=\"1\">Weight: " - .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</font>\n"; - echo "</td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("grade"). ":</b></p></td>\n"; - echo " <td valign=\"top\">\n"; + echo " <TD>".text_to_html($elements[$i]->description); + echo "<P align=right><FONT size=1>Weight: " + .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</FONT>\n"; + echo "</TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("grade"). ":</B></P></TD>\n"; + echo " <TD valign=\"top\">\n"; // get the appropriate scale - yes/no scale (0) $SCALE = (object) $EXERCISE_SCALES[0]; switch ($SCALE->type) { case 'radio' : // show selections highest first - echo "<center><b>$SCALE->start</b>&nbsp;&nbsp;&nbsp;"; + echo "<CENTER><B>$SCALE->start</B>&nbsp;&nbsp;&nbsp;"; for ($j = $SCALE->size - 1; $j >= 0 ; $j--) { $checked = false; if (isset($grades[$i]->grade)) { @@ -1770,13 +1775,13 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch } } if ($checked) { - echo " <input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" checked=\"checked\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\" CHECKED> &nbsp;&nbsp;&nbsp;\n"; } else { - echo " <input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\"> &nbsp;&nbsp;&nbsp;\n"; } } - echo "&nbsp;&nbsp;&nbsp;<b>$SCALE->end</b></center>\n"; + echo "&nbsp;&nbsp;&nbsp;<B>$SCALE->end</B></CENTER>\n"; break; case 'selection' : unset($numbers); @@ -1792,13 +1797,13 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch break; } - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback[$i]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">\n"; + echo " <textarea name=\"feedback[$i]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } @@ -1809,36 +1814,36 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch echo text_to_html($grades[$i]->feedback); } } - echo "&nbsp;</td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo "&nbsp;</TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; if (empty($grades[$i]->grade)) { $error += $EXERCISE_EWEIGHTS[$elements[$i]->weight]; } } // print the number of negative elements - // echo "<tr><td>".get_string("numberofnegativeitems", "exercise")."</td><td>$negativecount</td></tr>\n"; - // echo "<tr valign=\"top\">\n"; - // echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</table></center>\n"; + // echo "<TR><TD>".get_string("numberofnegativeitems", "exercise")."</TD><TD>$negativecount</TD></TR>\n"; + // echo "<TR valign=top>\n"; + // echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TABLE></CENTER>\n"; // now print the grade table - echo "<p><center><b>".get_string("gradetable","exercise")."</b></center>\n"; - echo "<center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"CENTER\">". + echo "<P><CENTER><B>".get_string("gradetable","exercise")."</B></CENTER>\n"; + echo "<CENTER><TABLE cellpadding=5 border=1><TR><TD ALIGN=\"CENTER\">". get_string("numberofnegativeresponses", "exercise"); - echo "</td><td>". get_string("suggestedgrade", "exercise")."</td></tr>\n"; + echo "</TD><TD>". get_string("suggestedgrade", "exercise")."</TD></TR>\n"; for ($i=0; $i<=$exercise->nelements; $i++) { if ($i == intval($error + 0.5)) { - echo "<tr><td align=\"CENTER\"><img src=\"$CFG->pixpath/t/right.gif\" alt=\"\" /> $i</td><td align=\"CENTER\">{$elements[$i]->maxscore}</td></tr>\n"; + echo "<TR><TD ALIGN=\"CENTER\"><IMG SRC=\"$CFG->pixpath/t/right.gif\"> $i</TD><TD ALIGN=\"CENTER\">{$elements[$i]->maxscore}</TD></TR>\n"; } else { - echo "<tr><td align=\"CENTER\">$i</td><td align=\"CENTER\">{$elements[$i]->maxscore}</td></tr>\n"; + echo "<TR><TD ALIGN=\"CENTER\">$i</TD><TD ALIGN=\"CENTER\">{$elements[$i]->maxscore}</TD></TR>\n"; } } - echo "</table></center>\n"; - echo "<p><center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"right\"><b>". - get_string("optionaladjustment", "exercise").":</b></td><td>\n"; + echo "</TABLE></CENTER>\n"; + echo "<P><CENTER><TABLE cellpadding=5 border=1><TR><TD align=\"right\"><b>". + get_string("optionaladjustment", "exercise").":</b></TD><TD>\n"; unset($numbers); for ($j = 20; $j >= -20; $j--) { $numbers[$j] = $j; @@ -1849,18 +1854,18 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch else { choose_from_menu($numbers, "grade[$exercise->nelements]", 0, ""); } - echo "</td></tr>\n"; + echo "</TD></TR>\n"; break; case 3: // criteria grading - echo "<tr valign=\"top\">\n"; + echo "<TR valign=top>\n"; - echo " <td>&nbsp;</td>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; - echo " <td><b>". get_string("criterion","exercise")."</b></td>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>". get_string("criterion","exercise")."</B></TD>\n"; - echo " <td><b>".get_string("select")."</b></td>\n"; - echo " <td><b>".get_string("suggestedgrade", "exercise")."</b></td>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("select")."</B></TD>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("suggestedgrade", "exercise")."</B></TD>\n"; // find which criteria has been selected (saved in the zero element), if any if (isset($grades[0]->grade)) { $selection = $grades[0]->grade; @@ -1871,20 +1876,20 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch // now run through the elements for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; + echo "<TR valign=top>\n"; - echo " <td>$iplus1</td><td>".text_to_html($elements[$i]->description)."</td>\n"; + echo " <TD>$iplus1</TD><TD>".text_to_html($elements[$i]->description)."</TD>\n"; if ($selection == $i) { - echo " <td align=\"center\"><input type=\"RADIO\" name=\"grade[0]\" value=\"$i\" checked=\"checked\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[0]\" VALUE=\"$i\" CHECKED></TD>\n"; } else { - echo " <td align=\"center\"><input type=\"RADIO\" name=\"grade[0]\" value=\"$i\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[0]\" VALUE=\"$i\"></TD>\n"; } - echo "<td align=\"center\">{$elements[$i]->maxscore}</td></tr>\n"; + echo "<TD align=center>{$elements[$i]->maxscore}</TD></TR>\n"; } - echo "</table></center>\n"; - echo "<p><center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"right\"><b>". - get_string("optionaladjustment", "exercise")."</b></td><td>\n"; + echo "</TABLE></CENTER>\n"; + echo "<P><CENTER><TABLE cellpadding=5 border=1><TR><TD align=\"right\"><b>". + get_string("optionaladjustment", "exercise")."</b></TD><TD>\n"; unset($numbers); for ($j = 20; $j >= -20; $j--) { $numbers[$j] = $j; @@ -1895,23 +1900,23 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch else { choose_from_menu($numbers, "grade[1]", 0, ""); } - echo "</td></tr>\n"; + echo "</TD></TR>\n"; break; case 4: // rubric grading // now run through the elements... for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; + echo "<TR valign=\"top\">\n"; - echo "<td align=\"right\"><b>".get_string("element", "exercise")." $iplus1:</b></td>\n"; - echo "<td>".text_to_html($elements[$i]->description). - "<p align=\"right\"><font size=\"1\">Weight: " - .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</font></td></tr>\n"; - echo "<tr valign=\"top\">\n"; + echo "<TD align=\"right\"><b>".get_string("element", "exercise")." $iplus1:</b></TD>\n"; + echo "<TD>".text_to_html($elements[$i]->description). + "<P align=\"right\"><font size=\"1\">Weight: " + .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</font></TD></tr>\n"; + echo "<TR valign=\"top\">\n"; - echo " <td align=\"center\"><b>".get_string("select")."</b></td>\n"; - echo " <td><b>". get_string("criterion","exercise")."</b></td></tr>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\" align=\"center\"><B>".get_string("select")."</B></TD>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>". get_string("criterion","exercise")."</B></TD></tr>\n"; if (isset($grades[$i])) { $selection = $grades[$i]->grade; @@ -1929,20 +1934,20 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch if (empty($rubrics[$j]->description)) { break; // out of inner for loop } - echo "<tr valign=\"top\">\n"; + echo "<TR valign=top>\n"; if ($selection == $j) { - echo " <td align=\"center\"><input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" checked=\"checked\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\" CHECKED></TD>\n"; }else { - echo " <td align=\"center\"><input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\"></TD>\n"; } - echo "<td>".text_to_html($rubrics[$j]->description)."</td>\n"; + echo "<TD>".text_to_html($rubrics[$j]->description)."</TD>\n"; } - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback[]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">\n"; + echo " <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } @@ -1954,7 +1959,7 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch echo " </td>\n"; echo "</tr>\n"; echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; + echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</TD>\n"; echo "</tr>\n"; } } @@ -1967,14 +1972,14 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch case 0: case 1: case 4 : // no grading, accumulative and rubic - echo " <td align=\"right\"><p><b>". get_string("generalcomment", "exercise").":</b></p></td>\n"; + echo " <td align=\"right\"><P><B>". get_string("generalcomment", "exercise").":</B></P></TD>\n"; break; default : - echo " <td align=\"right\"><p><b>". get_string("reasonforadjustment", "exercise").":</b></p></td>\n"; + echo " <td align=\"right\"><P><B>". get_string("reasonforadjustment", "exercise").":</B></P></TD>\n"; } echo " <td>\n"; if ($allowchanges) { - echo " <textarea name=\"generalcomment\" rows=\"5\" cols=\"75\" wrap=\"virtual\">\n"; + echo " <textarea name=\"generalcomment\" rows=5 cols=75 wrap=\"virtual\">\n"; if (isset($assessment->generalcomment)) { echo $assessment->generalcomment; } @@ -1997,7 +2002,7 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; + echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</TD>\n"; echo "</tr>\n"; @@ -2017,13 +2022,13 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch if (isteacher($course->id)) { // ...show two buttons...to resubmit or not to resubmit echo "<input type=\"button\" value=\"".get_string("studentnotallowed", "exercise", $course->student)."\" - onclick=\"document.assessmentform.submit();\" />\n"; + onclick=\"document.assessmentform.submit();\">\n"; echo "<input type=\"button\" value=\"".get_string("studentallowedtoresubmit", "exercise", $course->student)."\" - onclick=\"document.assessmentform.resubmit.value='1';document.assessmentform.submit();\" />\n"; + onclick=\"document.assessmentform.resubmit.value='1';document.assessmentform.submit();\">\n"; } else { // ... show save button - echo "<input type=\"submit\" value=\"".get_string("savemyassessment", "exercise")."\" />\n"; + echo "<input type=\"submit\" value=\"".get_string("savemyassessment", "exercise")."\">\n"; } } echo "</center></form>\n"; @@ -2045,11 +2050,11 @@ function exercise_print_assessments_by_user_for_admin($exercise, $user) { foreach ($assessments as $assessment) { echo "<p><center><b>".get_string("assessmentby", "exercise", fullname($user))."</b></center></p>\n"; exercise_print_assessment_form($exercise, $assessment); - echo "<p align=\"right\"><a href=\"assessments.php?action=adminamendgradinggrade&amp;id=$cm->id&amp;aid=$assessment->id\">". + echo "<p align=\"right\"><a href=\"assessments.php?action=adminamendgradinggrade&id=$cm->id&aid=$assessment->id\">". get_string("amend", "exercise")." ".get_string("gradeforstudentsassessment","exercise", $course->student)."</a>\n"; - echo " | <a href=\"assessments.php?action=adminconfirmdelete&amp;id=$cm->id&amp;aid=$assessment->id\">". - get_string("delete", "exercise")."</a></p><hr />\n"; + echo " | <a href=\"assessments.php?action=adminconfirmdelete&id=$cm->id&aid=$assessment->id\">". + get_string("delete", "exercise")."</a></p><hr>\n"; } } } @@ -2072,8 +2077,8 @@ function exercise_print_assessments_for_admin($exercise, $submission) { } echo "<p><center><b>".get_string("assessmentby", "exercise", fullname($user))."</b></center></p>\n"; exercise_print_assessment_form($exercise, $assessment); - echo "<p align=\"right\"><a href=\"assessments.php?action=adminconfirmdelete&amp;id=$cm->id&amp;aid=$assessment->id\">". - get_string("delete", "exercise")."</a></p><hr />\n"; + echo "<p align=\"right\"><a href=\"assessments.php?action=adminconfirmdelete&id=$cm->id&aid=$assessment->id\">". + get_string("delete", "exercise")."</a></p><hr>\n"; } } } @@ -2095,7 +2100,7 @@ function exercise_print_assignment_info($exercise) { } $strduedate = userdate($exercise->deadline)." ($strdifference)"; print_simple_box_start("center"); - print_heading(format_string($exercise->name), "center"); + print_heading($exercise->name, "center"); print_simple_box_start("center"); echo "<b>".get_string("duedate", "exercise")."</b>: $strduedate<br />"; $maxgrade = $exercise->grade + $exercise->gradinggrade; @@ -2108,7 +2113,7 @@ function exercise_print_assignment_info($exercise) { echo get_string("usemean", "exercise")."<br />\n"; } echo "<b>".get_string("detailsofassessment", "exercise")."</b>: - <a href=\"assessments.php?id=$cm->id&amp;action=displaygradingform\">". + <a href=\"assessments.php?id=$cm->id&action=displaygradingform\">". get_string("specimenassessmentform", "exercise")."</a><br />"; print_simple_box_end(); print_simple_box_end(); @@ -2120,7 +2125,7 @@ function exercise_print_assignment_info($exercise) { function exercise_print_difference($time) { if ($time < 0) { $timetext = get_string("late", "assignment", format_time($time)); - return " (<font color=\"red\">$timetext</font>)"; + return " (<FONT COLOR=RED>$timetext</FONT>)"; } else { $timetext = get_string("early", "assignment", format_time($time)); return " ($timetext)"; @@ -2130,36 +2135,36 @@ function exercise_print_difference($time) { /////////////////////////////////////////////////////////////////////////////////////////////// function exercise_print_feedback($course, $submission) { - global $CFG, $RATING; + global $CFG, $THEME, $RATING; if (! $teacher = get_record("user", "id", $submission->teacher)) { error("Weird exercise error"); } - echo "\n<table border=\"0\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\"><tr><td bgcolor=#888888>"; - echo "\n<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" valign=\"top\">"; + echo "\n<TABLE BORDER=0 CELLPADDING=1 CELLSPACING=1 ALIGN=CENTER><TR><TD BGCOLOR=#888888>"; + echo "\n<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=0 VALIGN=TOP>"; - echo "\n<tr>"; - echo "\n<td rowspan=\"3\" width=\"35\" valign=\"top\">"; + echo "\n<TR>"; + echo "\n<TD ROWSPAN=3 BGCOLOR=\"$THEME->body\" WIDTH=35 VALIGN=TOP>"; print_user_picture($teacher->id, $course->id, $teacher->picture); - echo "</td>"; - echo "<td nowrap=\"nowrap\" width=\"100%\">".fullname($teacher); - echo "&nbsp;&nbsp;<font size=\"2\"><i>".userdate($submission->timemarked)."</i>"; - echo "</tr>"; + echo "</TD>"; + echo "<TD NOWRAP WIDTH=100% BGCOLOR=\"$THEME->cellheading\">".fullname($teacher); + echo "&nbsp;&nbsp;<FONT SIZE=2><I>".userdate($submission->timemarked)."</I>"; + echo "</TR>"; - echo "\n<tr><td width=\"100%\">"; + echo "\n<TR><TD WIDTH=100% BGCOLOR=\"$THEME->cellcontent\">"; - echo "<p align=\"right\"><font size=-1><i>"; + echo "<P ALIGN=RIGHT><FONT SIZE=-1><I>"; if ($submission->grade) { echo get_string("grade").": $submission->grade"; } else { echo get_string("nograde"); } - echo "</i></font></p>"; + echo "</I></FONT></P>"; echo text_to_html($submission->assessorcomment); - echo "</td></tr></table>"; - echo "</td></tr></table>"; + echo "</TD></TR></TABLE>"; + echo "</TD></TR></TABLE>"; } @@ -2261,7 +2266,7 @@ function exercise_print_tabbed_heading($tabs) { // $tabs->width is an percentage of the page (defualts to 80%) // $tabs->cellpadding padding on each cell (defaults to 5) - global $CFG; + global $CFG, $THEME; if (isset($tabs->names)) { foreach ($tabs->names as $key => $name) { @@ -2293,7 +2298,7 @@ function exercise_print_tabbed_heading($tabs) { if (!empty($tabs->names)) { echo "<tr>"; echo "<td class=\"generaltablecell\">". - "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\" /></td>\n"; + "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td>\n"; foreach ($tabcontents as $key => $tab) { if (isset($align[$key])) { $alignment = "align=\"$align[$key]\""; @@ -2311,12 +2316,12 @@ function exercise_print_tabbed_heading($tabs) { $wrapping = ""; } if ($key == $tabs->highlight) { - echo "<td valign=\"top\" class=\"generaltabselected\" $alignment $width $wrapping>$tab</td>\n"; + echo "<td valign=top class=\"generaltabselected\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading2\">$tab</td>\n"; } else { - echo "<td valign=\"top\" class=\"generaltab\" $alignment $width $wrapping>$tab</td>\n"; + echo "<td valign=top class=\"generaltab\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading\">$tab</td>\n"; } echo "<td class=\"generaltablecell\">". - "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\" /></td>\n"; + "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td>\n"; } echo "</tr>\n"; } else { @@ -2325,8 +2330,8 @@ function exercise_print_tabbed_heading($tabs) { // bottom stripe $ncells = count($tabs->names)*2 +1; $height = 2; - echo "<tr><td colspan=\"$ncells\">". - "<img height=\"$height\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\" /></td></tr>\n"; + echo "<tr><td colspan=\"$ncells\" bgcolor=\"$THEME->cellheading2\">". + "<img height=\"$height\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td></tr>\n"; echo "</table>\n"; // print_simple_box_end(); @@ -2339,7 +2344,7 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss // prints an assessment form based on the student's assessment // if the teacher is re-assessing a submission they would use exercise_print_assessment_form() // (for teachers only) - global $CFG, $USER, $EXERCISE_SCALES, $EXERCISE_EWEIGHTS; + global $CFG, $THEME, $USER, $EXERCISE_SCALES, $EXERCISE_EWEIGHTS; if (! $course = get_record("course", "id", $exercise->course)) { error("Course is misconfigured"); @@ -2354,28 +2359,28 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss error("Print teacher assessment form: User record not found"); } - echo "<center><table border=\"1\" width=\"30%\"><tr> - <td align=\"center\">\n"; + echo "<CENTER><TABLE BORDER=\"1\" WIDTH=\"30%\"><TR> + <TD ALIGN=CENTER BGCOLOR=\"$THEME->cellcontent\">\n"; if (!$teachersubmission = get_record("exercise_submissions", "id", $assessment->submissionid)) { error ("Print teacher assessment form: Submission record not found"); } echo exercise_print_submission_title($exercise, $teachersubmission); - echo "</td></tr></table><br clear=\"all\" />\n"; + echo "</TD></TR></TABLE><BR CLEAR=ALL>\n"; - echo "<center><table border=\"1\" width=\"30%\"><tr> - <td align=\"center\">\n"; + echo "<CENTER><TABLE BORDER=\"1\" WIDTH=\"30%\"><TR> + <TD ALIGN=CENTER BGCOLOR=\"$THEME->cellcontent\">\n"; echo exercise_print_submission_title($exercise, $submission); - echo "</td></tr></table></center><br clear=\"all\" />\n"; + echo "</TD></TR></TABLE></center><BR CLEAR=ALL>\n"; ?> <form name="assessmentform" method="post" action="assessments.php"> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="said" value="<?php echo $assessment->id ?>" /> - <input type="hidden" name="sid" value="<?php echo $submission->id ?>" /> - <input type="hidden" name="action" value="updateteacherassessment" /> - <input type="hidden" name="resubmit" value="0" /> - <input type="hidden" name="returnto" value="<?php echo $returnto ?>" /> - <?php + <INPUT TYPE="hidden" NAME="id" VALUE="<?PHP echo $cm->id ?>"> + <input type="hidden" name="said" value="<?PHP echo $assessment->id ?>"> + <input type="hidden" name="sid" value="<?PHP echo $submission->id ?>"> + <input type="hidden" name="action" value="updateteacherassessment"> + <input type="hidden" name="resubmit" value="0"> + <input type="hidden" name="returnto" value="<?PHP echo $returnto ?>"> + <?PHP // now print a normal assessment form based on the student's assessment for this submission // and allow the teacher to grade and add additional comments @@ -2393,14 +2398,14 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss // only show the grade if grading strategy > 0 and the grade is positive if ($exercise->gradingstrategy and $assessment->grade >= 0) { - echo "<center><b>".get_string("thegradeis", "exercise").": ". + echo "<CENTER><B>".get_string("thegradeis", "exercise").": ". number_format($assessment->grade * $exercise->grade / 100.0, 2)." (". - get_string("maximumgrade")." ".number_format($exercise->grade, 0).")</b></center><br clear=\"all\" />\n"; + get_string("maximumgrade")." ".number_format($exercise->grade, 0).")</B></CENTER><BR CLEAR=ALL>\n"; } echo "<center><table cellpadding=\"2\" border=\"1\">\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\"><center><b>".get_string("yourassessment", "exercise"). + echo "<tr valign=top>\n"; + echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\"><center><b>".get_string("yourassessment", "exercise"). "</b></center></td>\n"; echo "</tr>\n"; @@ -2425,15 +2430,15 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss // now print the form for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","exercise")." $iplus1:</b></p></td>\n"; - echo " <td>".text_to_html($elements[$i]->description); - echo "</td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("element","exercise")." $iplus1:</B></P></TD>\n"; + echo " <TD>".text_to_html($elements[$i]->description); + echo "</TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback[]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">\n"; + echo " <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } @@ -2442,11 +2447,11 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss else { echo text_to_html($grades[$i]->feedback); } - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } break; @@ -2454,15 +2459,15 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss // now print the form for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","exercise")." $iplus1:</b></p></td>\n"; - echo " <td>".text_to_html($elements[$i]->description); - echo "<p align=\"right\"><font size=\"1\">Weight: " - .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</font>\n"; - echo "</td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("grade"). ":</b></p></td>\n"; - echo " <td valign=\"top\">\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("element","exercise")." $iplus1:</B></P></TD>\n"; + echo " <TD>".text_to_html($elements[$i]->description); + echo "<P align=right><FONT size=1>Weight: " + .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</FONT>\n"; + echo "</TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("grade"). ":</B></P></TD>\n"; + echo " <TD valign=\"top\">\n"; // get the appropriate scale $scalenumber=$elements[$i]->scale; @@ -2470,7 +2475,7 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss switch ($SCALE->type) { case 'radio' : // show selections highest first - echo "<center><b>$SCALE->start</b>&nbsp;&nbsp;&nbsp;"; + echo "<CENTER><B>$SCALE->start</B>&nbsp;&nbsp;&nbsp;"; for ($j = $SCALE->size - 1; $j >= 0 ; $j--) { $checked = false; if (isset($grades[$i]->grade)) { @@ -2484,13 +2489,13 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss } } if ($checked) { - echo " <input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" checked=\"checked\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\" CHECKED> &nbsp;&nbsp;&nbsp;\n"; } else { - echo " <input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\"> &nbsp;&nbsp;&nbsp;\n"; } } - echo "&nbsp;&nbsp;&nbsp;<b>$SCALE->end</b></center>\n"; + echo "&nbsp;&nbsp;&nbsp;<B>$SCALE->end</B></CENTER>\n"; break; case 'selection' : unset($numbers); @@ -2505,14 +2510,14 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss } break; - echo " </td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; } - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback[]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">\n"; + echo " <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } @@ -2521,11 +2526,11 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss else { echo text_to_html($grades[$i]->feedback); } - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } break; @@ -2534,22 +2539,22 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss $error = 0; for ($i=0; $i < count($elements) - 1; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","exercise")." $iplus1:</b></p></td>\n"; - echo " <td>".text_to_html($elements[$i]->description); - echo "<p align=\"right\"><font size=\"1\">Weight: " - .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</font>\n"; - echo "</td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("grade"). ":</b></p></td>\n"; - echo " <td valign=\"top\">\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("element","exercise")." $iplus1:</B></P></TD>\n"; + echo " <TD>".text_to_html($elements[$i]->description); + echo "<P align=right><FONT size=1>Weight: " + .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</FONT>\n"; + echo "</TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("grade"). ":</B></P></TD>\n"; + echo " <TD valign=\"top\">\n"; // get the appropriate scale - yes/no scale (0) $SCALE = (object) $EXERCISE_SCALES[0]; switch ($SCALE->type) { case 'radio' : // show selections highest first - echo "<center><b>$SCALE->start</b>&nbsp;&nbsp;&nbsp;"; + echo "<CENTER><B>$SCALE->start</B>&nbsp;&nbsp;&nbsp;"; for ($j = $SCALE->size - 1; $j >= 0 ; $j--) { $checked = false; if (isset($grades[$i]->grade)) { @@ -2563,13 +2568,13 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss } } if ($checked) { - echo " <input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" checked=\"checked\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\" CHECKED> &nbsp;&nbsp;&nbsp;\n"; } else { - echo " <input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\"> &nbsp;&nbsp;&nbsp;\n"; } } - echo "&nbsp;&nbsp;&nbsp;<b>$SCALE->end</b></center>\n"; + echo "&nbsp;&nbsp;&nbsp;<B>$SCALE->end</B></CENTER>\n"; break; case 'selection' : unset($numbers); @@ -2585,13 +2590,13 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss break; } - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback[$i]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">\n"; + echo " <textarea name=\"feedback[$i]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } @@ -2602,36 +2607,36 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss echo text_to_html($grades[$i]->feedback); } } - echo "&nbsp;</td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo "&nbsp;</TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; if (empty($grades[$i]->grade)) { $error += $EXERCISE_EWEIGHTS[$elements[$i]->weight]; } } // print the number of negative elements - // echo "<tr><td>".get_string("numberofnegativeitems", "exercise")."</td><td>$negativecount</td></tr>\n"; - // echo "<tr valign=\"top\">\n"; - // echo " <td colspan=\"2\">&nbsp;</td>\n"; - echo "</table></center>\n"; + // echo "<TR><TD>".get_string("numberofnegativeitems", "exercise")."</TD><TD>$negativecount</TD></TR>\n"; + // echo "<TR valign=top>\n"; + // echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TABLE></CENTER>\n"; // now print the grade table - echo "<p><center><b>".get_string("gradetable","exercise")."</b></center>\n"; - echo "<center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"CENTER\">". + echo "<P><CENTER><B>".get_string("gradetable","exercise")."</B></CENTER>\n"; + echo "<CENTER><TABLE cellpadding=5 border=1><TR><TD ALIGN=\"CENTER\">". get_string("numberofnegativeresponses", "exercise"); - echo "</td><td>". get_string("suggestedgrade", "exercise")."</td></tr>\n"; + echo "</TD><TD>". get_string("suggestedgrade", "exercise")."</TD></TR>\n"; for ($i=0; $i<=$exercise->nelements; $i++) { if ($i == intval($error + 0.5)) { - echo "<tr><td align=\"CENTER\"><img src=\"$CFG->pixpath/t/right.gif\" alt=\"\" /> $i</td><td align=\"CENTER\">{$elements[$i]->maxscore}</td></tr>\n"; + echo "<TR><TD ALIGN=\"CENTER\"><IMG SRC=\"$CFG->pixpath/t/right.gif\"> $i</TD><TD ALIGN=\"CENTER\">{$elements[$i]->maxscore}</TD></TR>\n"; } else { - echo "<tr><td align=\"CENTER\">$i</td><td align=\"CENTER\">{$elements[$i]->maxscore}</td></tr>\n"; + echo "<TR><TD ALIGN=\"CENTER\">$i</TD><TD ALIGN=\"CENTER\">{$elements[$i]->maxscore}</TD></TR>\n"; } } - echo "</table></center>\n"; - echo "<p><center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"right\"><b>". - get_string("optionaladjustment", "exercise")."</b></td><td>\n"; + echo "</TABLE></CENTER>\n"; + echo "<P><CENTER><TABLE cellpadding=5 border=1><TR><TD align=\"right\"><b>". + get_string("optionaladjustment", "exercise")."</b></TD><TD>\n"; unset($numbers); for ($j = 20; $j >= -20; $j--) { $numbers[$j] = $j; @@ -2642,15 +2647,15 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss else { choose_from_menu($numbers, "grade[$exercise->nelements]", 0, ""); } - echo "</td></tr>\n"; + echo "</TD></TR>\n"; break; case 3: // criteria grading - echo "<tr valign=\"top\">\n"; - echo " <td>&nbsp;</td>\n"; - echo " <td><b>". get_string("criterion","exercise")."</b></td>\n"; - echo " <td><b>".get_string("select")."</b></td>\n"; - echo " <td><b>".get_string("suggestedgrade", "exercise")."</b></td>\n"; + echo "<TR valign=top>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>". get_string("criterion","exercise")."</B></TD>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("select")."</B></TD>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("suggestedgrade", "exercise")."</B></TD>\n"; // find which criteria has been selected (saved in the zero element), if any if (isset($grades[0]->grade)) { $selection = $grades[0]->grade; @@ -2661,19 +2666,19 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss // now run through the elements for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td>$iplus1</td><td>".text_to_html($elements[$i]->description)."</td>\n"; + echo "<TR valign=top>\n"; + echo " <TD>$iplus1</TD><TD>".text_to_html($elements[$i]->description)."</TD>\n"; if ($selection == $i) { - echo " <td align=\"center\"><input type=\"RADIO\" name=\"grade[0]\" value=\"$i\" checked=\"checked\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[0]\" VALUE=\"$i\" CHECKED></TD>\n"; } else { - echo " <td align=\"center\"><input type=\"RADIO\" name=\"grade[0]\" value=\"$i\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[0]\" VALUE=\"$i\"></TD>\n"; } - echo "<td align=\"center\">{$elements[$i]->maxscore}</td></tr>\n"; + echo "<TD align=center>{$elements[$i]->maxscore}</TD></TR>\n"; } - echo "</table></center>\n"; - echo "<p><center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"right\"><b>". - get_string("optionaladjustment", "exercise")."</b></td><td>\n"; + echo "</TABLE></CENTER>\n"; + echo "<P><CENTER><TABLE cellpadding=5 border=1><TR><TD align=\"right\"><b>". + get_string("optionaladjustment", "exercise")."</b></TD><TD>\n"; unset($numbers); for ($j = 20; $j >= -20; $j--) { $numbers[$j] = $j; @@ -2684,21 +2689,21 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss else { choose_from_menu($numbers, "grade[1]", 0, ""); } - echo "</td></tr>\n"; + echo "</TD></TR>\n"; break; case 4: // rubric grading // now run through the elements... for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo "<td align=\"right\"><b>".get_string("element", "exercise")." $iplus1:</b></td>\n"; - echo "<td>".text_to_html($elements[$i]->description). - "<p align=\"right\"><font size=\"1\">Weight: " - .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</font></td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"center\"><b>".get_string("select")."</b></td>\n"; - echo " <td><b>". get_string("criterion","exercise")."</b></td></tr>\n"; + echo "<TR valign=\"top\">\n"; + echo "<TD align=\"right\"><b>".get_string("element", "exercise")." $iplus1:</b></TD>\n"; + echo "<TD>".text_to_html($elements[$i]->description). + "<P align=\"right\"><font size=\"1\">Weight: " + .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."</font></TD></tr>\n"; + echo "<TR valign=\"top\">\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\" align=\"center\"><B>".get_string("select")."</B></TD>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>". get_string("criterion","exercise")."</B></TD></tr>\n"; if (isset($grades[$i])) { $selection = $grades[$i]->grade; } else { @@ -2715,19 +2720,19 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss if (empty($rubrics[$j]->description)) { break; // out of inner for loop } - echo "<tr valign=\"top\">\n"; + echo "<TR valign=top>\n"; if ($selection == $j) { - echo " <td align=\"center\"><input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" checked=\"checked\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\" CHECKED></TD>\n"; } else { - echo " <td align=\"center\"><input type=\"RADIO\" name=\"grade[$i]\" value=\"$j\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\"></TD>\n"; } - echo "<td>".text_to_html($rubrics[$j]->description)."</td>\n"; + echo "<TD>".text_to_html($rubrics[$j]->description)."</TD>\n"; } - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback[]\" rows=\"3\" cols=\"75\" wrap=\"virtual\">\n"; + echo " <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } @@ -2739,7 +2744,7 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss echo " </td>\n"; echo "</tr>\n"; echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; + echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</TD>\n"; echo "</tr>\n"; } } @@ -2752,14 +2757,14 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss case 0: case 1: case 4 : // no grading, accumulative and rubic - echo " <td align=\"right\"><p><b>". get_string("generalcomment", "exercise").":</b></p></td>\n"; + echo " <td align=\"right\"><P><B>". get_string("generalcomment", "exercise").":</B></P></TD>\n"; break; default : - echo " <td align=\"right\"><p><b>". get_string("reasonforadjustment", "exercise").":</b></p></td>\n"; + echo " <td align=\"right\"><P><B>". get_string("reasonforadjustment", "exercise").":</B></P></TD>\n"; } echo " <td>\n"; if ($allowchanges) { - echo " <textarea name=\"generalcomment\" rows=\"5\" cols=\"75\" wrap=\"virtual\">\n"; + echo " <textarea name=\"generalcomment\" rows=5 cols=75 wrap=\"virtual\">\n"; if (isset($assessment->generalcomment)) { echo $assessment->generalcomment; } @@ -2778,15 +2783,15 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss echo "&nbsp;</td>\n"; echo "</tr>\n"; echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\">&nbsp;</td>\n"; + echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</TD>\n"; echo "</tr>\n"; // ...and close the table and show two buttons...to resubmit or not to resubmit echo "</table>\n"; echo "<br /><input type=\"button\" value=\"".get_string("studentnotallowed", "exercise", $course->student)."\" - onclick=\"document.assessmentform.submit();\" />\n"; + onclick=\"document.assessmentform.submit();\">\n"; echo "<input type=\"button\" value=\"".get_string("studentallowedtoresubmit", "exercise", $course->student)."\" - onclick=\"document.assessmentform.resubmit.value='1';document.assessmentform.submit();\" />\n"; + onclick=\"document.assessmentform.resubmit.value='1';document.assessmentform.submit();\">\n"; echo "</center></form>\n"; } @@ -2809,7 +2814,7 @@ function exercise_print_teacher_table($course) { $table->align[] = "center"; $table->size[] = "*"; foreach ($exercises as $exercise) { - $table->head[] = format_string($exercise->name); + $table->head[] = $exercise->name; $table->align[] = "center"; $table->size[] = "*"; } @@ -2847,7 +2852,7 @@ function exercise_print_teacher_table($course) { function exercise_print_time_to_deadline($time) { if ($time < 0) { $timetext = get_string("afterdeadline", "exercise", format_time($time)); - return " (<font color=\"red\">$timetext</font>)"; + return " (<FONT COLOR=RED>$timetext</FONT>)"; } else { $timetext = get_string("beforedeadline", "exercise", format_time($time)); return " ($timetext)"; @@ -2858,8 +2863,6 @@ function exercise_print_time_to_deadline($time) { /////////////////////////////////////////////////////////////////////////////////////////////// function exercise_print_upload_form($exercise) { - global $CFG; - if (! $course = get_record("course", "id", $exercise->course)) { error("Course is misconfigured"); } @@ -2867,15 +2870,16 @@ function exercise_print_upload_form($exercise) { error("Course Module ID was incorrect"); } - echo "<div align=\"center\">"; - echo "<form enctype=\"multipart/form-data\" method=\"POST\" action=\"upload.php\">"; - echo " <input type=\"hidden\" name=\"id\" value=\"$cm->id\" />"; - require_once($CFG->dirroot.'/lib/uploadlib.php'); - upload_print_form_fragment(1,array('newfile'),null,true,array('title'),$course->maxbytes,$exercise->maxbytes,false); - echo " <input type=\"submit\" name=\"save\" value=\"".get_string("uploadthisfile")."\" />"; + echo "<DIV ALIGN=CENTER>"; + echo "<FORM ENCTYPE=\"multipart/form-data\" METHOD=\"POST\" ACTION=upload.php>"; + echo " <INPUT TYPE=hidden NAME=MAX_FILE_SIZE value=\"$exercise->maxbytes\">"; + echo " <INPUT TYPE=hidden NAME=id VALUE=\"$cm->id\">"; + echo "<b>".get_string("title", "exercise")."</b>: <INPUT NAME=\"title\" TYPE=\"text\" SIZE=\"60\" MAXSIZE=\"100\"><BR><BR>\n"; + echo " <INPUT NAME=\"newfile\" TYPE=\"file\" size=\"50\">"; + echo " <INPUT TYPE=submit NAME=save VALUE=\"".get_string("uploadthisfile")."\">"; echo " (".get_string("maximumupload").": ".display_size($exercise->maxbytes).")\n"; - echo "</form>"; - echo "</div>"; + echo "</FORM>"; + echo "</DIV>"; } @@ -2889,12 +2893,12 @@ function exercise_print_user_assessments($exercise, $user) { foreach ($assessments as $assessment) { if ($assessment->timegraded) { $gradingscaled = round($assessment->gradinggrade * $exercise->gradinggrade / 100.0); - $str .= "<a href=\"assessments.php?action=viewassessment&amp;a=$exercise->id&amp;aid=$assessment->id\">"; - $str .= "$gradingscaled</a> "; + $str .= "<A HREF=\"assessments.php?action=viewassessment&a=$exercise->id&aid=$assessment->id\">"; + $str .= "$gradingscaled</A> "; } else { - $str .= "<a href=\"assessments.php?action=viewassessment&amp;a=$exercise->id&amp;aid=$assessment->id\">"; - $str .= "-</a> "; + $str .= "<A HREF=\"assessments.php?action=viewassessment&a=$exercise->id&aid=$assessment->id\">"; + $str .= "-</A> "; } } $str .= ")"; diff --git a/mod/exercise/mod.html b/mod/exercise/mod.html index 3e215b53326..52ab0987b02 100644 --- a/mod/exercise/mod.html +++ b/mod/exercise/mod.html @@ -1,12 +1,12 @@ <?php - require("$CFG->dirroot/mod/exercise/lib.php"); // for parameter arrays - // ...and fill the form if needed + require("$CFG->dirroot/mod/exercise/lib.php"); // for parameter arrays + // ...and fill the form if needed if (empty($form->name)) { $form->name = ""; } if (!isset($form->gradingstrategy)) { - $form->gradingstrategy = 1; - } + $form->gradingstrategy = 1; + } if (empty($form->usemaximum)) { $form->usemaximum = 0; } @@ -28,9 +28,6 @@ if (empty($form->deadline)) { $form->deadline = ""; } - if (!isset($form->usepassword)) { - $form->usepassword = 0; - } if (empty($form->showleaguetable)) { $form->showleaguetable = ""; } @@ -42,25 +39,24 @@ ?> <form name="form" method="post" action="mod.php"> -<table cellpadding="5"> -<tr valign="top"> - <td align="right" width="50%"><b><?php print_string("title", "exercise") ?>:</b></td> - <td width="50%"> - <input type="text" name="name" size="60" value="<?php p($form->name) ?>" alt="<?php print_string("title", "exercise") ?>"/> +<table cellpadding=5> +<tr valign=top> + <td align=right width=\"50%\"><P><B><?php print_string("title", "exercise") ?>:</B></P></TD> + <td width=\"50%\"> + <input type="text" name="name" size=60 value="<?php p($form->name) ?>"> </td> </tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("description", "exercise") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("description", "exercise") ?>:</B></P></TD> <td> <?php - echo get_string("descriptionofexercise", "exercise", $course->students); + echo get_string("descriptionofexercise", "exercise", $course->students); ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("gradeforstudentsassessment", "exercise", $course->student) ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("gradeforstudentsassessment", "exercise", $course->student) ?>:</B></P></TD> <td> <?php for ($i=100; $i>=0; $i--) { @@ -72,8 +68,8 @@ </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("gradeforsubmission", "exercise") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("gradeforsubmission", "exercise") ?>:</B></P></TD> <td> <?php choose_from_menu($grades, "grade", "$form->grade", ""); @@ -82,8 +78,8 @@ </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("gradingstrategy", "exercise") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("gradingstrategy", "exercise") ?>:</B></P></TD> <td> <?php choose_from_menu($EXERCISE_TYPE, "gradingstrategy", $form->gradingstrategy, ""); @@ -93,7 +89,7 @@ </tr> <tr> - <td align="right"><b><?php print_string("handlingofmultiplesubmissions", "exercise") ?>:</b></td> + <td align=right><P><B><?php print_string("handlingofmultiplesubmissions", "exercise") ?>:</B></P></TD> <td> <?php $options[0] = get_string("usemean", "exercise"); $options[1] = get_string("usemaximum", "exercise"); @@ -103,8 +99,8 @@ </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("numberofassessmentelements", "exercise") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("numberofassessmentelements", "exercise") ?>:</B></P></TD> <td valign="middle"> <?php for ($i=20; $i>=0; $i--) { @@ -117,40 +113,21 @@ </tr> <tr> - <td align="right"><b><?php print_string("comparisonofassessments", "exercise") ?>:</b></td> + <td align=right><P><B><?php print_string("comparisonofassessments", "exercise") ?>:</B></P></TD> <td> <?php - // set up comparison names + // set up comparison names foreach ($EXERCISE_ASSESSMENT_COMPS as $KEY => $COMPARISON) { $COMPARISONS[] = $COMPARISON['name']; - } + } choose_from_menu($COMPARISONS, "assessmentcomps", $form->assessmentcomps, ""); helpbutton("comparisonofassessments", get_string("comparisonofassessments", "exercise"), "exercise"); ?> </td> </tr> -<tr> - <td align="right"><b><?php print_string("usepassword", "exercise"); ?>:</b></td> - <td> - <?php - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "usepassword", $form->usepassword, ""); - helpbutton("usepassword", get_string("usepassword", "exercise"), "exercise"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("password"); ?>:</b></td> - <td> - <input type="text" name="password" size="10" value="" alt="<?php print_string("password"); ?>" /> <?php echo " (".get_string("leavetokeep").")"; ?> - <?php helpbutton("password", get_string("password"), "exercise"); ?> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("maximumsize", "exercise") ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("maximumsize", "exercise") ?>:</b></p></td> <td> <?php $sizelist = array("10Kb", "50Kb", "100Kb", "500Kb", "1Mb", "2Mb", "5Mb", "10Mb", "20Mb", "50Mb"); @@ -175,8 +152,8 @@ </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("deadline", "exercise") ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("deadline", "exercise") ?>:</b></p></td> <td><?php print_date_selector("deadlineday", "deadlinemonth", "deadlineyear", $form->deadline); echo "&nbsp;-&nbsp;"; @@ -184,8 +161,8 @@ ?></td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("numberofentriesinleaguetable", "exercise") ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("numberofentriesinleaguetable", "exercise") ?>:</b></p></td> <td><?php unset($numbers); $numbers[22] = 'All'; @@ -199,8 +176,8 @@ </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("hidenamesfromstudents", "exercise", $course->students) ?>:</b></td> +<tr valign=top>> + <td align=right><p><b><?php print_string("hidenamesfromstudents", "exercise", $course->students) ?>:</b></p></td> <td><?php $options[0] = get_string("no"); $options[1] = get_string("yes"); choose_from_menu($options, "anonymous", $form->anonymous, ""); @@ -208,25 +185,21 @@ ?> </td> </tr> -<?php print_standard_coursemodule_settings($form); ?> -<tr> - <td colspan="2"> - -<center> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -<input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> -</center> - - </td> -</tr> </table> -</form> +<br /> +<center> +<input type="hidden" name=course value="<?php p($form->course) ?>"> +<input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name=section value="<?php p($form->section) ?>"> +<input type="hidden" name=module value="<?php p($form->module) ?>"> +<input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<input type="hidden" name=instance value="<?php p($form->instance) ?>"> +<input type="hidden" name=mode value="<?php p($form->mode) ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> +<input type="submit" name=cancel value="<?php print_string("cancel") ?>"> +<p> +<p><?PHP notify(get_string("noteonassessmentelements", "exercise")); ?> + +</CENTER> + diff --git a/mod/exercise/restorelib.php b/mod/exercise/restorelib.php index 6a0b08715d0..d6e45c49d8b 100644 --- a/mod/exercise/restorelib.php +++ b/mod/exercise/restorelib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //exercise mods @@ -68,14 +68,12 @@ $exercise->grade = backup_todb($info['MOD']['#']['GRADE']['0']['#']); $exercise->gradinggrade = backup_todb($info['MOD']['#']['GRADINGGRADE']['0']['#']); $exercise->showleaguetable = backup_todb($info['MOD']['#']['SHOWLEAGUETABLE']['0']['#']); - $exercise->usepassword = backup_todb($info['MOD']['#']['USEPASSWORD']['0']['#']); - $exercise->password = backup_todb($info['MOD']['#']['PASSWORD']['0']['#']); //The structure is equal to the db, so insert the exercise $newid = insert_record ("exercise",$exercise); //Do some output - echo "<li>".get_string("modulename","exercise")." \"".format_string(stripslashes($exercise->name),true)."\"</li>"; + echo "<ul><li>".get_string("modulename","exercise")." \"".$exercise->name."\"<br>"; backup_flush(300); if ($newid) { @@ -89,6 +87,10 @@ } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -128,7 +130,7 @@ if (($i+1) % 10 == 0) { echo "."; if (($i+1) % 200 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -176,7 +178,7 @@ if (($i+1) % 10 == 0) { echo "."; if (($i+1) % 200 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -235,7 +237,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -307,7 +309,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -362,7 +364,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } diff --git a/mod/exercise/submissions.php b/mod/exercise/submissions.php index aa1fd8c11a1..d2f0af40908 100644 --- a/mod/exercise/submissions.php +++ b/mod/exercise/submissions.php @@ -1,4 +1,4 @@ -<?php // $Id: submissions.php,v 1.0 22 Aug 2003 +<?PHP // $Id: submissions.php,v 1.0 22 Aug 2003 /************************************************* ACTIONS handled are: @@ -15,7 +15,7 @@ saveweights userconfirmdelete userdelete - + ************************************************/ @@ -25,7 +25,7 @@ require("version.php"); require_variable($id); // Course Module ID - + // get some essential stuff... if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); @@ -39,21 +39,21 @@ error("Course module is incorrect"); } - require_login($course->id, false, $cm); + require_login($course->id); $strexercises = get_string("modulenameplural", "exercise"); $strexercise = get_string("modulename", "exercise"); $strsubmissions = get_string("submissions", "exercise"); // ... print the header and... - print_header_simple(format_string($exercise->name), "", - "<a href=\"index.php?id=$course->id\">$strexercises</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($exercise->name,true)."</a> -> $strsubmissions", + print_header_simple("$exercise->name", "", + "$<A HREF=index.php?id=$course->id>$strexercises</A> -> + <A HREF=\"view.php?id=$cm->id\">$exercise->name</A> -> $strsubmissions", "", "", true); //...get the action! require_variable($action); - + /******************* admin amend title ************************************/ if ($action == 'adminamendtitle' ) { @@ -64,29 +64,29 @@ if (empty($_GET['sid'])) { error("Admin Amend Title: submission id missing"); } - + $submission = get_record("exercise_submissions", "id", $_GET['sid']); print_heading(get_string("amendtitle", "exercise")); ?> <form name="amendtitleform" action="submissions.php" method="post"> - <input type="hidden" name="action" value="adminupdatetitle" /> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="sid" value="<?php echo $_REQUEST['sid'] ?>" /> + <input type="hidden" name="action" value="adminupdatetitle"> + <input type="hidden" name="id" value="<?PHP echo $cm->id ?>"> + <input type="hidden" name="sid" value="<?PHP echo $_REQUEST['sid'] ?>"> <center> <table celpadding="5" border="1"> - <?php + <?PHP // now get the comment echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("title", "exercise").":</b></p></td>\n"; + echo " <td align=\"right\"><P><B>". get_string("title", "exercise").":</b></p></td>\n"; echo " <td>\n"; - echo " <input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"$submission->title\" />\n"; + echo " <input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"$submission->title\">\n"; echo " </td></tr></table>\n"; - echo "<input type=\"submit\" value=\"".get_string("amendtitle", "exercise")."\" />\n"; + echo "<input type=submit VALUE=\"".get_string("amendtitle", "exercise")."\">\n"; echo "</center></form>\n"; } - + /******************* admin clear late (flag) ************************************/ elseif ($action == 'adminclearlate' ) { @@ -97,19 +97,19 @@ if (empty($_GET['sid'])) { error("Admin clear late flag: submission id missing"); } - + if (!$submission = get_record("exercise_submissions", "id", $_GET['sid'])) { error("Admin clear late flag: can not get submission record"); } if (set_field("exercise_submissions", "late", 0, "id", $_GET['sid'])) { print_heading(get_string("clearlateflag", "exercise")." ".get_string("ok")); } - + add_to_log($course->id, "exercise", "late flag cleared", "view.php?id=$cm->id", "submission $submission->id"); - - redirect("submissions.php?id=$cm->id&amp;action=adminlist"); + + redirect("submissions.php?id=$cm->id&action=adminlist"); } - + /******************* admin confirm delete ************************************/ elseif ($action == 'adminconfirmdelete' ) { @@ -133,10 +133,10 @@ "</p>\n"; } } - notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("submission", "exercise")), - "submissions.php?action=admindelete&amp;id=$cm->id&amp;sid=$_GET[sid]", "submissions.php?id=$cm->id&amp;action=adminlist"); + notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("submission", "exercise")), + "submissions.php?action=admindelete&id=$cm->id&sid=$_GET[sid]", "submissions.php?id=$cm->id&action=adminlist"); } - + /******************* admin delete ************************************/ elseif ($action == 'admindelete' ) { @@ -147,7 +147,7 @@ if (empty($_GET['sid'])) { error("Admin delete: submission id missing"); } - + if (!$submission = get_record("exercise_submissions", "id", $_GET['sid'])) { error("Admin delete: can not get submission record"); } @@ -167,10 +167,10 @@ // ..and finally the submitted file exercise_delete_submitted_files($exercise, $submission); add_to_log($course->id, "exercise", "delete", "view.php?id=$cm->id", "submission $submission->id"); - - print_continue("submissions.php?id=$cm->id&amp;action=adminlist"); + + print_continue("submissions.php?id=$cm->id&action=adminlist"); } - + /******************* admin (confirm) late flag ************************************/ elseif ($action == 'adminlateflag' ) { @@ -185,11 +185,11 @@ error("Admin confirm late flag: can not get submission record"); } - notice_yesno(get_string("clearlateflag","exercise")."?", - "submissions.php?action=adminclearlate&amp;id=$cm->id&amp;sid=$_GET[sid]", - "submissions.php?id=$cm->id&amp;action=adminlist"); + notice_yesno(get_string("clearlateflag","exercise")."?", + "submissions.php?action=adminclearlate&id=$cm->id&sid=$_GET[sid]", + "submissions.php?id=$cm->id&action=adminlist"); } - + /******************* list all submissions ************************************/ elseif ($action == 'adminlist' ) { @@ -197,13 +197,13 @@ if (!isteacher($course->id)) { error("Only teachers can look at this page"); } - + echo "<p><small>Exercise Version-> $module->version</small></p>"; exercise_list_submissions_for_admin($exercise); print_continue("view.php?id=$cm->id"); - + } - + /******************* admin update title ************************************/ elseif ($action == 'adminupdatetitle' ) { @@ -214,13 +214,13 @@ if (empty($_POST['sid'])) { error("Admin Update Title: submission id missing"); } - + if (set_field("exercise_submissions", "title", $_POST['title'], "id", $_POST['sid'])) { print_heading(get_string("amendtitle", "exercise")." ".get_string("ok")); } - redirect("submissions.php?id=$cm->id&amp;action=adminlist"); + redirect("submissions.php?id=$cm->id&action=adminlist"); } - + /*************** display final grades (by teacher) ***************************/ elseif ($action == 'displayfinalgrades') { @@ -231,21 +231,21 @@ print_footer($course); exit; } - + // show the final grades as stored in the tables... print_heading_with_help(get_string("displayoffinalgrades", "exercise"), "finalgrades", "exercise"); echo "<center><table border=\"1\" width=\"90%\"><tr>\n"; - echo "<td><b>".$course->student."</b></td>"; - echo "<td><b>".get_string("submission", "exercise")."</b></td>"; - echo "<td align=\"center\"><b>".get_string("gradeforassessment", "exercise")."</b></td>"; - echo "<td align=\"center\"><b>".get_string("gradeforsubmission", "exercise")."</b></td>"; - echo "<td align=\"center\"><b>".get_string("overallgrade", "exercise")."</b></td></tr>\n"; + echo "<td bgcolor=\"$THEME->cellheading2\"><b>".$course->student."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submission", "exercise")."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforassessment", "exercise")."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforsubmission", "exercise")."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "exercise")."</b></td></TR>\n"; // now the weights - echo "<tr><td><b>".get_string("maximumgrade")."</b></td>"; - echo "<td><b>&nbsp;</b></td>\n"; - echo "<td align=\"center\"><b>$exercise->gradinggrade</b></td>\n"; - echo "<td align=\"center\"><b>$exercise->grade</b></td>\n"; - echo "<td><b>&nbsp;</b></td></tr>\n"; + echo "<tr><td bgcolor=\"$THEME->cellheading2\"><b>".get_string("maximumgrade")."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\"><b>&nbsp;</b></td>\n"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$exercise->gradinggrade</b></td>\n"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$exercise->grade</b></td>\n"; + echo "<td bgcolor=\"$THEME->cellheading2\"><b>&nbsp;</b></td></tr>\n"; foreach ($users as $user) { // check group membership, if necessary if ($groupid) { @@ -270,7 +270,7 @@ $gradinggrade = number_format($ownassessment->gradinggrade * $exercise->gradinggrade / 100.0, 1); $grade = number_format($assessment->grade * $exercise->grade / 100.0, 1); - $overallgrade = number_format(($assessment->grade * $exercise->grade / 100.0) + + $overallgrade = number_format(($assessment->grade * $exercise->grade / 100.0) + ($ownassessment->gradinggrade * $exercise->gradinggrade / 100.0), 1); if ($submission->late) { $grade = "<font color=\"red\">(".$grade.")</font>"; @@ -286,7 +286,7 @@ } } } - echo "</table><br clear=\"all\" />\n"; + echo "</table><br clear=\"all\">\n"; if ($exercise->showleaguetable) { exercise_print_league_table($exercise); echo "<br />\n"; @@ -308,9 +308,9 @@ } exercise_list_unassessed_student_submissions($exercise, $USER); print_continue("view.php?id=$cm->id"); - + } - + /******************* list for assessment teacher (submissions) ************************************/ elseif ($action == 'listforassessmentteacher' ) { @@ -321,15 +321,15 @@ } exercise_list_unassessed_teacher_submissions($exercise, $USER); print_continue("view.php?id=$cm->id"); - + } - + /****************** save league table entries and anonimity setting (by teacher) **************/ elseif ($action == 'saveleaguetable') { $form = (object)$_POST; - + if (!isteacher($course->id)) { error("Only teachers can look at this page"); } @@ -340,20 +340,20 @@ } else { $nentries = $form->nentries; } - // ...and save it + // ...and save it set_field("exercise", "showleaguetable", $nentries, "id", "$exercise->id"); - - // ...and save the anonimity setting + + // ...and save the anonimity setting set_field("exercise", "anonymous", $form->anonymous, "id", "$exercise->id"); - - redirect("submissions.php?id=$cm->id&amp;action=adminlist", get_string("entriessaved", "exercise")); + + redirect("submissions.php?id=$cm->id&action=adminlist", get_string("entriessaved", "exercise")); } - + /*************** save weights (by teacher) ***************************/ elseif ($action == 'saveweights') { $form = (object)$_POST; - + if (!isteacher($course->id)) { error("Only teachers can look at this page"); } @@ -361,31 +361,31 @@ // save the weights from the form... if (isset($form->teacherweight)) { $teacherweight = $form->teacherweight; - // ...and save them + // ...and save them set_field("exercise", "teacherweight", $teacherweight, "id", "$exercise->id"); } - + if (isset($form->gradingweight)) { $gradingweight = $form->gradingweight; - // ...and save them + // ...and save them set_field("exercise", "gradingweight", $gradingweight, "id", "$exercise->id"); } - - redirect("submissions.php?id=$cm->id&amp;action=adminlist", get_string("weightssaved", "exercise")); + + redirect("submissions.php?id=$cm->id&action=adminlist", get_string("weightssaved", "exercise")); } - - + + /******************* user confirm delete ************************************/ elseif ($action == 'userconfirmdelete' ) { if (empty($_GET['sid'])) { error("User Confirm Delete: submission id missing"); } - - notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("submission", "exercise")), - "submissions.php?action=userdelete&amp;id=$cm->id&amp;sid=$_GET[sid]", "view.php?id=$cm->id"); + + notice_yesno(get_string("confirmdeletionofthisitem","exercise", get_string("submission", "exercise")), + "submissions.php?action=userdelete&id=$cm->id&sid=$_GET[sid]", "view.php?id=$cm->id"); } - + /******************* user delete ************************************/ elseif ($action == 'userdelete' ) { @@ -393,7 +393,7 @@ if (empty($_GET['sid'])) { error("User Delete: submission id missing"); } - + if (!$submission = get_record("exercise_submissions", "id", $_GET['sid'])) { error("User Delete: can not get submission record"); } @@ -413,10 +413,10 @@ // ..and finally the submitted file exercise_delete_submitted_files($exercise, $submission); add_to_log($course->id, "exercise", "delete", "view.php?id=$cm->id", "submission $submission->id"); - + print_continue("view.php?id=$cm->id"); } - + /*************** no man's land **************************************/ @@ -428,5 +428,5 @@ print_footer($course); - + ?> diff --git a/mod/exercise/upload.php b/mod/exercise/upload.php index 09a2a50edcb..83b0b006826 100644 --- a/mod/exercise/upload.php +++ b/mod/exercise/upload.php @@ -1,4 +1,4 @@ -<?php // $Id: upload.php, v1.0 30th April 2003 +<?PHP // $Id: upload.php, v1.0 30th April 2003 require("../../config.php"); require("lib.php"); @@ -7,6 +7,8 @@ require_variable($id); // course module ID $timenow = time(); + $newfile = $HTTP_POST_FILES["newfile"]; + // get some esential stuff... if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); @@ -20,15 +22,15 @@ error("Course module is incorrect"); } - require_login($course->id, false, $cm); + require_login($course->id); $strexercises = get_string("modulenameplural", "exercise"); $strexercise = get_string("modulename", "exercise"); $strupload = get_string("upload"); - print_header_simple(format_string($exercise->name)." : $strupload", "", - "<a href=\"index.php?id=$course->id\">$strexercises</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($exercise->name,true)."</a> -> $strupload", + print_header_simple("$exercise->name : $strupload", "", + "<A HREF=index.php?id=$course->id>$strexercises</A> -> + <A HREF=\"view.php?id=$cm->id\">$exercise->name</A> -> $strupload", "", "", true); // check that this is not a "rapid" second submission, caused by using the back button @@ -46,44 +48,61 @@ } } } - + // check existence of title if (!$title = $_POST['title']) { notify(get_string("notitlegiven", "exercise") ); } - else { - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $um = new upload_manager('newfile',false,false,$course,false,$exercise->maxbytes); - if ($um->preprocess_files()) { - $newsubmission->exerciseid = $exercise->id; - if (isteacher($course->id)) { - // it's an exercise submission, flag it as such - $newsubmission->userid = 0; - $newsubmission->isexercise = 1; // it's a description of an exercise - } + else { + if (is_uploaded_file($newfile['tmp_name']) and $newfile['size'] > 0) { + if ($newfile['size'] > $exercise->maxbytes) { + notify(get_string("uploadfiletoobig", "assignment", $exercise->maxbytes)); + } else { - $newsubmission->userid = $USER->id; - } - $newsubmission->title = $title; - $newsubmission->timecreated = $timenow; - if ($timenow > $exercise->deadline) { - $newsubmission->late = 1; - } - if (!$newsubmission->id = insert_record("exercise_submissions", $newsubmission)) { - error("exercise upload: Failure to create new submission record!"); - } - $dir = exercise_file_area_name($exercise, $newsubmission); - if ($um->save_files($dir)) { - add_to_log($course->id, "exercise", "submit", "view.php?id=$cm->id", "$exercise->id"); - print_heading(get_string("uploadsuccess", "assignment", $um->get_new_filename()) ); - } - // upload manager will print errors. - // clear resubmit flags - if (!set_field("exercise_submissions", "resubmit", 0, "exerciseid", $exercise->id, "userid", $USER->id)) { - error("Exercise Upload: unable to reset resubmit flag"); + $newfile_name = clean_filename($newfile['name']); + if ($newfile_name) { + $newsubmission->exerciseid = $exercise->id; + if (isteacher($course->id)) { + // it's an exercise submission, flag it as such + $newsubmission->userid = 0; + $newsubmission->isexercise = 1; // it's a description of an exercise + } + else { + $newsubmission->userid = $USER->id; + } + $newsubmission->title = $title; + $newsubmission->timecreated = $timenow; + if ($timenow > $exercise->deadline) { + $newsubmission->late = 1; + } + if (!$newsubmission->id = insert_record("exercise_submissions", $newsubmission)) { + error("exercise upload: Failure to create new submission record!"); + } + if (! $dir = exercise_file_area($exercise, $newsubmission)) { + error("Sorry, an error in the system prevents you from uploading files: contact your teacher or system administrator"); + } + if (move_uploaded_file($newfile['tmp_name'], "$dir/$newfile_name")) { + add_to_log($course->id, "exercise", "submit", "view.php?id=$cm->id", "$exercise->id"); + print_heading(get_string("uploadsuccess", "assignment", $newfile_name) ); + } + else { + notify(get_string("uploaderror", "assignment") ); + } + // clear resubmit flags + if (!set_field("exercise_submissions", "resubmit", 0, "exerciseid", $exercise->id, "userid", $USER->id)) { + error("Exercise Upload: unable to reset resubmit flag"); + } + } + else { + notify(get_string("uploadbadname", "assignment") ); + } } } - // upload manager will print errors. + elseif (!is_uploaded_file($newfile['tmp_name']) and !$newfile['size'] > 0 and $newfile['name']) { + notify(get_string("uploadfiletoobig", "assignment", $exercise->maxbytes)); + } else { + notify(get_string("uploadnofilefound", "assignment")); + } } print_continue("view.php?id=$cm->id"); diff --git a/mod/exercise/version.php b/mod/exercise/version.php index c821728e701..f1aa3b12e7b 100644 --- a/mod/exercise/version.php +++ b/mod/exercise/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////////// // Code fragment to define the module version etc. // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2005031000; -$module->requires = 2005031000; // Requires this Moodle version +$module->version = 2004062300; +$module->requires = 2004052501; // Requires this Moodle version $module->cron = 60; ?> diff --git a/mod/exercise/view.php b/mod/exercise/view.php index f528439382d..4031b102d9b 100644 --- a/mod/exercise/view.php +++ b/mod/exercise/view.php @@ -1,4 +1,4 @@ -<?php // $Id: view.php, v1.1 23 Aug 2003 +<?PHP // $Id: view.php, v1.1 23 Aug 2003 /************************************************* ACTIONS handled are: @@ -10,15 +10,15 @@ setupassignment (for teachers) showsubmissions (for students) studentsview - submitassignment + submitassignment teachersview - + ************************************************/ require("../../config.php"); require("lib.php"); require("locallib.php"); - + require_variable($id); // Course Module ID // get some esential stuff... @@ -34,7 +34,7 @@ error("Course module is incorrect"); } - require_login($course->id, false, $cm); + require_login($course->id); // ...log activity... add_to_log($course->id, "exercise", "view", "view.php?id=$cm->id", $exercise->id, $cm->id); @@ -43,12 +43,12 @@ $strexercise = get_string("modulename", "exercise"); // ...display header... - print_header_simple(format_string($exercise->name), "", - "<a href=\"index.php?id=$course->id\">$strexercises</a> -> ".format_string($exercise->name), + print_header_simple("$exercise->name", "", + "<A HREF=index.php?id=$course->id>$strexercises</A> -> $exercise->name", "", "", true, update_module_button($cm->id, $course->id, $strexercise), navmenu($course, $cm)); - // ...and if necessary set default action - + // ...and if necessary set default action + optional_variable($action); if (isteacher($course->id)) { if (empty($action)) { // no action specified, either go straight to elements page else the admin page @@ -57,7 +57,7 @@ $action = "teachersview"; } else { - redirect("assessments.php?action=editelements&amp;id=$cm->id"); + redirect("assessments.php?action=editelements&id=$cm->id"); } } } @@ -75,8 +75,8 @@ else { // it's a guest, oh no! $action = 'notavailable'; } - - + + /****************** display final grade (for students) ************************************/ if ($action == 'displayfinalgrade' ) { @@ -84,15 +84,15 @@ print_heading(get_string("displayoffinalgrades", "exercise")); if ($submissions = exercise_get_user_submissions($exercise, $USER)) { // any submissions from user? echo "<center><table border=\"1\" width=\"90%\"><tr>"; - echo "<td><b>".get_string("submissions", "exercise")."</b></td>"; - echo "<td align=\"center\"><b>".get_string("gradeforassessment", "exercise")."</b></td>"; - echo "<td align=\"center\"><b>".get_string("gradeforsubmission", "exercise", $course->teacher)."</b></td>"; - echo "<td align=\"center\"><b>".get_string("overallgrade", "exercise")."</b></td></tr>\n"; + echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submissions", "exercise")."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforassessment", "exercise")."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforsubmission", "exercise", $course->teacher)."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "exercise")."</b></td></TR>\n"; // now the weights - echo "<tr><td><b>".get_string("maximumgrade")."</b></td>"; - echo "<td align=\"center\"><b>$exercise->gradinggrade</b></td>\n"; - echo "<td align=\"center\"><b>$exercise->grade</b></td>\n"; - echo "<td><b>&nbsp;</b></td></tr>\n"; + echo "<TR><td bgcolor=\"$THEME->cellheading2\"><b>".get_string("maximumgrade")."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$exercise->gradinggrade</b></td>\n"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$exercise->grade</b></td>\n"; + echo "<td bgcolor=\"$THEME->cellheading2\"><b>&nbsp;</b></td></TR>\n"; // first get user's own assessment reord, it should contain their grading grade if ($ownassessments = exercise_get_user_assessments($exercise, $USER)) { foreach ($ownassessments as $ownassessment) { @@ -108,21 +108,21 @@ $gradinggrade = number_format($ownassessment->gradinggrade * $exercise->gradinggrade / 100.0, 1); $grade = number_format($assessment->grade * $exercise->grade / 100.0, 1); - $overallgrade = number_format(($assessment->grade * $exercise->grade / 100.0) + + $overallgrade = number_format(($assessment->grade * $exercise->grade / 100.0) + ($ownassessment->gradinggrade * $exercise->gradinggrade / 100.0 ), 1); if ($submission->late) { $grade = "<font color=\"red\">(".$grade.")</font>"; $overallgrade = "<font color=\"red\">(".$overallgrade.")</font>"; } - echo "<tr><td>".exercise_print_submission_title($exercise, $submission)."</td>\n"; + echo "<TR><td>".exercise_print_submission_title($exercise, $submission)."</td>\n"; echo "<td align=\"center\">$gradinggrade</td>"; echo "<td align=\"center\">$grade</td>"; - echo "<td align=\"center\">$overallgrade</td></tr>\n"; + echo "<td align=\"center\">$overallgrade</td></TR>\n"; } } } } - echo "</table><br clear=\"all\" />\n"; + echo "</TABLE><BR CLEAR=ALL>\n"; if ($exercise->showleaguetable) { exercise_print_league_table($exercise); } @@ -141,8 +141,8 @@ add_to_log($course->id, "exercise", "display", "view.php?id=$cm->id", "$exercise->id", $cm->id); redirect("view.php?id=$cm->id", get_string("movingtophase", "exercise", 3)); } - - + + /*********************** assignment not available (for students)***********************/ elseif ($action == 'notavailable') { print_heading(get_string("notavailable", "exercise")); @@ -182,8 +182,8 @@ add_to_log($course->id, "exercise", "set up", "view.php?id=$cm->id", "$exercise->id", $cm->id); redirect("view.php?id=$cm->id", get_string("movingtophase", "exercise", 1)); } - - + + /****************** showsubmissions (for students, in phase 3)***********************/ elseif ($action == 'showsubmissions') { exercise_print_assignment_info($exercise); @@ -207,13 +207,13 @@ if ($assessments = exercise_get_assessments($submission)) { // should only be one but we'll loop anyway foreach ($assessments as $assessment) { - $table->data[] = array(exercise_print_submission_title($exercise, $submission), - userdate($submission->timecreated), userdate($assessment->timecreated), - "<a href=\"assessments.php?action=viewassessment&amp;id=$cm->id&amp;aid=$assessment->id\">".$assessment->grade * $exercise->grade / 100.0."</a>"); + $table->data[] = array(exercise_print_submission_title($exercise, $submission), + userdate($submission->timecreated), userdate($assessment->timecreated), + "<a href=\"assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id\">".$assessment->grade * $exercise->grade / 100.0."</a>"); } } else { // submission not yet assessed (by teacher) - $table->data[] = array(exercise_print_submission_title($exercise, $submission), + $table->data[] = array(exercise_print_submission_title($exercise, $submission), userdate($submission->timecreated), get_string("notassessedyet", "exercise"), 0); } } @@ -236,42 +236,6 @@ /****************** student's view could be in 1 of 3 stages ***********************/ elseif ($action == 'studentsview') { exercise_print_assignment_info($exercise); - // is a password needed? - if ($exercise->usepassword) { - $correctpass = false; - if (isset($_POST['userpassword'])) { - if ($exercise->password == md5(trim($_POST['userpassword']))) { - $USER->exerciseloggedin[$exercise->id] = true; - $correctpass = true; - } - } elseif (isset($USER->exerciseloggedin[$exercise->id])) { - $correctpass = true; - } - - if (!$correctpass) { - print_simple_box_start("center"); - echo "<form name=\"password\" method=\"post\" action=\"view.php\">\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n"; - echo "<table cellpadding=\"7px\">"; - if (isset($_POST['userpassword'])) { - echo "<tr align=\"center\" style='color:#DF041E;'><td>".get_string("wrongpassword", "exercise"). - "</td></tr>"; - } - echo "<tr align=\"center\"><td>".get_string("passwordprotectedexercise", "exercise", format_string($exercise->name)). - "</td></tr>"; - echo "<tr align=\"center\"><td>".get_string("enterpassword", "exercise"). - " <input type=\"password\" name=\"userpassword\" /></td></tr>"; - - echo "<tr align=\"center\"><td>"; - echo "<input type=\"button\" value=\"".get_string("cancel"). - "\" onclick=\"parent.location='../../course/view.php?id=$course->id';\"> "; - echo "<input type=\"button\" value=\"".get_string("continue"). - "\" onclick=\"document.password.submit();\" />"; - echo "</td></tr></table>"; - print_simple_box_end(); - exit(); - } - } // in Stage 1 - the student must make an assessment (linked to the teacher's exercise/submission if (!exercise_test_user_assessments($exercise, $USER)) { print_heading(get_string("pleaseviewtheexercise", "exercise", $course->teacher)); @@ -287,7 +251,7 @@ print_heading(get_string("pleasesubmityourwork", "exercise").":"); exercise_print_upload_form($exercise); } - // in stage 3? - awaiting grading of assessment and assessment of work by teacher, + // in stage 3? - awaiting grading of assessment and assessment of work by teacher, // may resubmit if allowed else { exercise_list_teacher_submissions($exercise, $USER); @@ -308,18 +272,18 @@ /****************** submission of assignment by teacher only***********************/ elseif ($action == 'submitassignment') { - + if (!isteacheredit($course->id)) { error("Only teachers with editing permissions can do this."); } - + exercise_print_assignment_info($exercise); - + // list previous submissions from this user exercise_list_user_submissions($exercise, $USER); - - echo "<hr size=\"1\" NOSHADE>"; - + + echo "<HR SIZE=1 NOSHADE>"; + // print upload form print_heading(get_string("submitexercisedescription", "exercise").":"); exercise_print_upload_form($exercise); @@ -338,80 +302,73 @@ $changegroup = isset($_GET['group']) ? $_GET['group'] : -1; // Group change requested? $groupmode = groupmode($course, $cm); // Groups are being used? $currentgroup = get_and_set_current_group($course, $groupmode, $changegroup); - + /// Allow the teacher to change groups (for this session) if ($groupmode) { if ($groups = get_records_menu("groups", "courseid", $course->id, "name ASC", "id,name")) { print_group_menu($groups, $groupmode, $currentgroup, "view.php?id=$cm->id"); } } - + print_heading_with_help(get_string("managingassignment", "exercise"), "managing", "exercise"); - + exercise_print_assignment_info($exercise); - $tabs->names = array("1. ".get_string("phase1", "exercise"), - "2. ".get_string("phase2", "exercise", $course->student), - "3. ".get_string("phase3", "exercise", $course->student)); - if (isteacheredit($course->id)) { - $tabs->urls = array("view.php?id=$cm->id&amp;action=setupassignment", - "view.php?id=$cm->id&amp;action=openexercise", - "view.php?id=$cm->id&amp;action=makeleaguetableavailable"); - } else { - // don't allow non-editing teacher to change phase - $tabs->urls = array("view.php?id=$cm->id", - "view.php?id=$cm->id", - "view.php?id=$cm->id"); - } + $tabs->names = array("1. ".get_string("phase1", "exercise"), + "2. ".get_string("phase2", "exercise", $course->student), + "3. ".get_string("phase3", "exercise", $course->student)); + $tabs->urls = array("view.php?id=$cm->id&action=setupassignment", + "view.php?id=$cm->id&action=openexercise", + "view.php?id=$cm->id&action=makeleaguetableavailable"); if ($exercise->phase) { // phase 1 or more $tabs->highlight = $exercise->phase - 1; } else { $tabs->highlight = 0; // phase is zero } exercise_print_tabbed_heading($tabs); - + echo "<center>\n"; switch ($exercise->phase) { case 0: case 1: // set up assignment if (isteacheredit($course->id)) { - echo "<p><b><a href=\"assessments.php?id=$cm->id&amp;action=editelements\">". + echo "<p><b><a href=\"assessments.php?id=$cm->id&action=editelements\">". get_string("amendassessmentelements", "exercise")."</a></b> \n"; helpbutton("elements", get_string("amendassessmentelements", "exercise"), "exercise"); - echo "<p><b><a href=\"view.php?id=$cm->id&amp;action=submitassignment\">". + echo "<p><b><a href=\"view.php?id=$cm->id&action=submitassignment\">". get_string("submitexercisedescription", "exercise")."</a></b> \n"; helpbutton("submissionofdescriptions", get_string("submitexercisedescription", "exercise"), "exercise"); } break; - + case 2: // submissions and assessments - // just show student submissions link, the (self) assessments are show above the assessment form for + // just show student submissions link, the (self) assessments are show above the assessment form for // the submissions - echo "<p><b><a href=\"submissions.php?id=$cm->id&amp;action=listforassessmentstudent\">". - get_string("studentsubmissionsforassessment", "exercise", + echo "<p><b><a href=\"submissions.php?id=$cm->id&action=listforassessmentstudent\">". + get_string("studentsubmissionsforassessment", "exercise", exercise_count_unassessed_student_submissions($exercise))."</a></b> \n"; - helpbutton("grading", get_string("studentsubmissionsforassessment", "exercise"), + helpbutton("grading", get_string("studentsubmissionsforassessment", "exercise"), "exercise"); break; - + case 3: // show final grades - echo "<p><b><a href=\"submissions.php?id=$cm->id&amp;action=listforassessmentstudent\">". - get_string("studentsubmissionsforassessment", "exercise", + echo "<p><b><a href=\"submissions.php?id=$cm->id&action=listforassessmentstudent\">". + get_string("studentsubmissionsforassessment", "exercise", exercise_count_unassessed_student_submissions($exercise))."</a></b> \n"; - helpbutton("grading", get_string("studentsubmissionsforassessment", "exercise"), + helpbutton("grading", get_string("studentsubmissionsforassessment", "exercise"), "exercise"); - print_heading("<a href=\"submissions.php?id=$cm->id&amp;action=displayfinalgrades\">". - get_string("displayoffinalgrades", "exercise")."</a>"); + print_heading("<A HREF=\"submissions.php?id=$cm->id&action=displayfinalgrades\">". + get_string("displayoffinalgrades", "exercise")."</A>"); } - print_heading("<a href=\"submissions.php?id=$cm->id&amp;action=adminlist\">". - get_string("administration")."</a>"); + print_heading("<A HREF=\"submissions.php?id=$cm->id&action=adminlist\">". + get_string("administration")."</A>"); } - - + + /*************** no man's land **************************************/ else { error("Fatal Error: Unknown Action: ".$action."\n"); } print_footer($course); - + ?> diff --git a/mod/forum/backuplib.php b/mod/forum/backuplib.php index 8823407bd22..8711083d4d2 100644 --- a/mod/forum/backuplib.php +++ b/mod/forum/backuplib.php @@ -1,27 +1,26 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //forum mods //This is the "graphical" structure of the forum mod: // - // forum - // (CL,pk->id) - // | - // --------------------------------------------------- - // | | - // subscriptions forum_discussions - //(UL,pk->id, fk->forum) ---------------(UL,pk->id, fk->forum) - // | | - // | | - // | | - // | forum_posts - // |-------------(UL,pk->id,fk->discussion, - // | nt->parent,files) - // | | - // | | - // | | - // forum_read forum_ratings - // (UL,pk->id,fk->post (UL,pk->id,fk->post) + // forum + // (CL,pk->id) + // | + // ----------------------------------- + // | | + // subscriptions forum_discussions + // (UL,pk->id, fk->forum) (UL,pk->id, fk->forum) + // | + // | + // | + // forum_posts + // (UL,pk->id,fk->discussion,nt->parent,files) + // | + // | + // | + // forum_ratings + // (UL,pk->id,fk->post) // // Meaning: pk->primary key field of the table // fk->foreign key to link with parent @@ -69,9 +68,6 @@ if ($status) { $status = backup_forum_discussions($bf,$preferences,$forum->id); } - if ($status) { - $status = backup_forum_read($bf,$preferences,$forum->id); - } } //End mod $status =fwrite ($bf,end_tag("MOD",3,true)); @@ -150,38 +146,6 @@ return $status; } - //Backup forum_read contents (executed from forum_backup_mods) - function backup_forum_read ($bf,$preferences,$forum) { - - global $CFG; - - $status = true; - - $forum_read = get_records("forum_read","forumid",$forum,"id"); - //If there are read - if ($forum_read) { - //Write start tag - $status =fwrite ($bf,start_tag("READPOSTS",4,true)); - //Iterate over each read - foreach ($forum_read as $for_rea) { - //Start read - $status =fwrite ($bf,start_tag("READ",5,true)); - //Print forum_read contents - fwrite ($bf,full_tag("ID",6,false,$for_rea->id)); - fwrite ($bf,full_tag("USERID",6,false,$for_rea->userid)); - fwrite ($bf,full_tag("DISCUSSIONID",6,false,$for_rea->discussionid)); - fwrite ($bf,full_tag("POSTID",6,false,$for_rea->postid)); - fwrite ($bf,full_tag("FIRSTREAD",6,false,$for_rea->firstread)); - fwrite ($bf,full_tag("LASTREAD",6,false,$for_rea->lastread)); - //End read - $status =fwrite ($bf,end_tag("READ",5,true)); - } - //Write end tag - $status =fwrite ($bf,end_tag("READPOSTS",4,true)); - } - return $status; - } - //Backup forum_posts contents (executed from backup_forum_discussions) function backup_forum_posts ($bf,$preferences,$discussion) { diff --git a/mod/forum/config.html b/mod/forum/config.html index d43787360bd..e142eb074a8 100644 --- a/mod/forum/config.html +++ b/mod/forum/config.html @@ -1,9 +1,8 @@ <form method="post" action="module.php" name="form"> -<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>"> -<table cellpadding="9" cellspacing="0" > -<tr valign="top"> - <td align="right">forum_displaymode:</td> +<table cellpadding=9 cellspacing=0 > +<tr valign=top> + <td align=right><p>forum_displaymode:</td> <td> <?php choose_from_menu ($FORUM_LAYOUT_MODES, "forum_displaymode", $CFG->forum_displaymode, "", "", ""); ?> </td> @@ -11,8 +10,8 @@ <?php print_string("configdisplaymode", "forum") ?> </td> </tr> -<tr valign="top"> - <td align="right">forum_replytouser:</td> +<tr valign=top> + <td align=right><p>forum_replytouser:</td> <td> <?php unset($options); @@ -25,35 +24,35 @@ <?php print_string("configreplytouser", "forum") ?> </td> </tr> -<tr valign="top"> - <td align="right">forum_shortpost:</td> +<tr valign=top> + <td align=right><p>forum_shortpost:</td> <td> - <input name="forum_shortpost" type="text" size="5" value="<?php p($CFG->forum_shortpost) ?>" /> + <input name=forum_shortpost type=text size=5 value="<?php p($CFG->forum_shortpost) ?>"> </td> <td> <?php print_string("configshortpost", "forum") ?> </td> </tr> -<tr valign="top"> - <td align="right">forum_longpost:</td> +<tr valign=top> + <td align=right><p>forum_longpost:</td> <td> - <input name="forum_longpost" type="text" size="5" value="<?php p($CFG->forum_longpost) ?>" /> + <input name=forum_longpost type=text size=5 value="<?php p($CFG->forum_longpost) ?>"> </td> <td> <?php print_string("configlongpost", "forum") ?> </td> </tr> -<tr valign="top"> - <td align="right">forum_manydiscussions:</td> +<tr valign=top> + <td align=right><p>forum_manydiscussions:</td> <td> - <input name="forum_manydiscussions" type="text" size="5" value="<?php p($CFG->forum_manydiscussions) ?>" /> + <input name=forum_manydiscussions type=text size=5 value="<?php p($CFG->forum_manydiscussions) ?>"> </td> <td> <?php print_string("configmanydiscussions", "forum") ?> </td> </tr> -<tr valign="top"> - <td align="right">forum_maxbytes:</td> +<tr valign=top> + <td align=right><p>forum_maxbytes:</td> <td><?php $choices = get_max_upload_sizes($CFG->maxbytes); choose_from_menu ($choices, "forum_maxbytes", $CFG->forum_maxbytes, ""); @@ -63,83 +62,8 @@ <?php print_string("configmaxbytes", "forum") ?> </td> </tr> - -<tr valign="top"> - <td align="right">forum_trackreadposts:</td> - <td> - <?php - unset($options); - $options[0] = get_string("no"); - $options[1] = get_string("yes"); - choose_from_menu ($options, "forum_trackreadposts", $CFG->forum_trackreadposts, "", "", ""); - ?> - </td> - <td> - <?php print_string("configtrackreadposts", "forum") ?> - </td> -</tr> -<tr valign="top"> - <td align="right">forum_oldpostdays:</td> - <td> - <input name="forum_oldpostdays" type="text" size="5" value="<?php p($CFG->forum_oldpostdays) ?>" /> - </td> - <td> - <?php print_string("configoldpostdays", "forum") ?> - </td> -</tr> -<tr valign="top"> - <td align="right">forum_usermarksread:</td> - <td> - <?php - unset($options); - $options[0] = get_string("no"); - $options[1] = get_string("yes"); - choose_from_menu ($options, "forum_usermarksread", $CFG->forum_usermarksread, "", "", ""); - ?> - </td> - <td> - <?php print_string("configusermarksread", "forum") ?> - </td> -</tr> -<tr valign="top"> - <td align="right">forum_cleanreadtime:</td> - <td> - <?php - unset($options); - $options[0] = '0'; - $options[1] = '1'; - $options[2] = '2'; - $options[3] = '3'; - $options[4] = '4'; - $options[5] = '5'; - $options[6] = '6'; - $options[7] = '7'; - $options[8] = '8'; - $options[9] = '9'; - $options[10] = '10'; - $options[11] = '11'; - $options[12] = '12'; - $options[13] = '13'; - $options[14] = '14'; - $options[15] = '15'; - $options[16] = '16'; - $options[17] = '17'; - $options[18] = '18'; - $options[19] = '19'; - $options[20] = '20'; - $options[21] = '21'; - $options[22] = '22'; - $options[23] = '23'; - choose_from_menu ($options, "forum_cleanreadtime", $CFG->forum_cleanreadtime, "", "", ""); - ?> - </td> - <td> - <?php print_string("configcleanreadtime", "forum") ?> - </td> -</tr> - -<tr valign="top"> - <td align="right">forum_enablerssfeeds:</td> +<tr valign=top> + <td align=right><p>forum_enablerssfeeds:</td> <td> <?php if (!isset($CFG->enablerssfeeds) || $CFG->enablerssfeeds == 0) { @@ -170,8 +94,8 @@ </tr> <tr> - <td colspan="3" align="center"> - <input type="submit" value="<?php print_string("savechanges") ?>" /></td> + <td colspan=3 align=center> + <input type="submit" value="<?php print_string("savechanges") ?>"></td> </tr> </table> diff --git a/mod/forum/db/mysql.php b/mod/forum/db/mysql.php index 91fa4869b1b..ffb527f819a 100644 --- a/mod/forum/db/mysql.php +++ b/mod/forum/db/mysql.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function forum_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -39,7 +39,7 @@ function forum_upgrade($oldversion) { if ($oldversion < 2002091000) { if (! execute_sql(" ALTER TABLE `forum_posts` ADD `attachment` VARCHAR(100) NOT NULL AFTER `message` ")) { - echo "<p>Don't worry about this error - your server already had this upgrade applied"; + echo "<P>Don't worry about this error - your server already had this upgrade applied"; } } @@ -130,103 +130,9 @@ function forum_upgrade($oldversion) { if ($oldversion < 2004070700) { // This may be redoing it from STABLE but that's OK table_column("forum_discussions", "groupid", "groupid", "integer", "10", "", "0", ""); } - - if ($oldversion < 2004111700) { - execute_sql(" ALTER TABLE `{$CFG->prefix}forum_posts` DROP INDEX {$CFG->prefix}forum_posts_parent_idx;",false); - execute_sql(" ALTER TABLE `{$CFG->prefix}forum_posts` DROP INDEX {$CFG->prefix}forum_posts_discussion_idx;",false); - execute_sql(" ALTER TABLE `{$CFG->prefix}forum_posts` DROP INDEX {$CFG->prefix}forum_posts_userid_idx;",false); - execute_sql(" ALTER TABLE `{$CFG->prefix}forum_discussions` DROP INDEX {$CFG->prefix}forum_discussions_forum_idx;",false); - execute_sql(" ALTER TABLE `{$CFG->prefix}forum_discussions` DROP INDEX {$CFG->prefix}forum_discussions_userid_idx;",false); - - execute_sql(" ALTER TABLE `{$CFG->prefix}forum_posts` ADD INDEX {$CFG->prefix}forum_posts_parent_idx (parent) "); - execute_sql(" ALTER TABLE `{$CFG->prefix}forum_posts` ADD INDEX {$CFG->prefix}forum_posts_discussion_idx (discussion) "); - execute_sql(" ALTER TABLE `{$CFG->prefix}forum_posts` ADD INDEX {$CFG->prefix}forum_posts_userid_idx (userid) "); - execute_sql(" ALTER TABLE `{$CFG->prefix}forum_discussions` ADD INDEX {$CFG->prefix}forum_discussions_forum_idx (forum) "); - execute_sql(" ALTER TABLE `{$CFG->prefix}forum_discussions` ADD INDEX {$CFG->prefix}forum_discussions_userid_idx (userid) "); - } - - if ($oldversion < 2004111700) { - execute_sql("ALTER TABLE {$CFG->prefix}forum DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}forum_ratings DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}forum_ratings DROP INDEX post;",false); - execute_sql("ALTER TABLE {$CFG->prefix}forum_subscriptions DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}forum_subscriptions DROP INDEX forum;",false); - - modify_database('','ALTER TABLE prefix_forum ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_forum_ratings ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_forum_ratings ADD INDEX post (post);'); - modify_database('','ALTER TABLE prefix_forum_subscriptions ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_forum_subscriptions ADD INDEX forum (forum);'); - } - - if ($oldversion < 2005011500) { - modify_database('','CREATE TABLE prefix_forum_read ( - `id` int(10) unsigned NOT NULL auto_increment, - `userid` int(10) NOT NULL default \'0\', - `forumid` int(10) NOT NULL default \'0\', - `discussionid` int(10) NOT NULL default \'0\', - `postid` int(10) NOT NULL default \'0\', - `firstread` int(10) NOT NULL default \'0\', - `lastread` int(10) NOT NULL default \'0\', - PRIMARY KEY (`id`), - KEY `prefix_forum_user_forum_idx` (`userid`,`forumid`), - KEY `prefix_forum_user_discussion_idx` (`userid`,`discussionid`), - KEY `prefix_forum_user_post_idx` (`userid`,`postid`) - ) COMMENT=\'Tracks each users read posts\';'); - - /// Enter initial read records for all posts older than 1 day. - - require $CFG->dirroot.'/mod/forum/lib.php'; - /// Timestamp for old posts (and therefore considered read). - $dateafter = time() - ($CFG->forum_oldpostdays*24*60*60); - /// Timestamp for one day ago. - $onedayago = time() - (24*60*60); - - /// Get all discussions that have had posts since the old post date. - if ($discrecords = get_records_select('forum_discussions', 'timemodified > '.$dateafter, - 'course', 'id,course,forum,groupid')) { - $currcourse = 0; - $users = 0; - foreach ($discrecords as $discrecord) { - if ($discrecord->course != $currcourse) { - /// Discussions are ordered by course, so we only need to get any course's users once. - $currcourse = $discrecord->course; - $users = get_course_users($currcourse); - } - /// If this course has users, and posts more than a day old, mark them for each user. - if (is_array($users) && - ($posts = get_records_select('forum_posts', 'discussion = '.$discrecord->id. - ' AND modified < '.$onedayago, '', 'id,discussion,modified'))) { - foreach($posts as $post) { - foreach ($users as $user) { - /// If its a group discussion, make sure the user is in the group. - if (!$discrecord->groupid || ismember($discrecord->groupid, $user->id)) { - forum_tp_mark_post_read($user->id, $post, $discrecord->forum); - } - } - } - } - } - } - - } - - if ($oldversion < 2005032900) { - modify_database('','ALTER TABLE prefix_forum_posts ADD INDEX prefix_form_posts_created_idx (created);'); - modify_database('','ALTER TABLE prefix_forum_posts ADD INDEX prefix_form_posts_mailed_idx (mailed);'); - } - - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $sql = "select course from {$CFG->prefix}forum_discussions, {$CFG->prefix}forum_posts "; - $sql .= "where {$CFG->prefix}forum_posts.discussion = {$CFG->prefix}forum_discussions.id "; - $sql .= "and {$CFG->prefix}forum_posts.id = "; - $wtm->update( 'forum_posts','message','format',$sql ); - } return true; - + } diff --git a/mod/forum/db/mysql.sql b/mod/forum/db/mysql.sql index 57ab281af4d..278675243ac 100644 --- a/mod/forum/db/mysql.sql +++ b/mod/forum/db/mysql.sql @@ -20,8 +20,7 @@ CREATE TABLE prefix_forum ( rssarticles tinyint(2) unsigned NOT NULL default '0', timemodified int(10) unsigned NOT NULL default '0', PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY course (course) + UNIQUE KEY id (id) ) COMMENT='Forums contain and structure discussion'; # -------------------------------------------------------- @@ -40,9 +39,7 @@ CREATE TABLE prefix_forum_discussions ( assessed tinyint(1) NOT NULL default '1', timemodified int(10) unsigned NOT NULL default '0', usermodified int(10) unsigned NOT NULL default '0', - PRIMARY KEY (id), - KEY prefix_forum_discussions_forum_idx (forum), - KEY prefix_forum_discussions_userid_idx (userid) + PRIMARY KEY (id) ) COMMENT='Forums are composed of discussions'; # -------------------------------------------------------- @@ -63,12 +60,7 @@ CREATE TABLE prefix_forum_posts ( format tinyint(2) NOT NULL default '0', attachment VARCHAR(100) NOT NULL default '', totalscore tinyint(4) NOT NULL default '0', - PRIMARY KEY (id), - KEY prefix_forum_posts_parent_idx (parent), - KEY prefix_forum_posts_discussion_idx (discussion), - KEY prefix_forum_posts_userid_idx (userid), - KEY prefix_forum_posts_created_idx (created), - KEY prefix_forum_posts_mailed_idx (mailed) + PRIMARY KEY (id) ) COMMENT='All posts are stored in this table'; # -------------------------------------------------------- @@ -97,9 +89,7 @@ CREATE TABLE prefix_forum_ratings ( post int(10) unsigned NOT NULL default '0', time int(10) unsigned NOT NULL default '0', rating tinyint(4) NOT NULL default '0', - PRIMARY KEY (id), - KEY userid (userid), - KEY post (post) + PRIMARY KEY (id) ) COMMENT='Contains user ratings for individual posts'; # -------------------------------------------------------- @@ -112,30 +102,10 @@ CREATE TABLE prefix_forum_subscriptions ( userid int(10) unsigned NOT NULL default '0', forum int(10) unsigned NOT NULL default '0', PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY userid (userid), - KEY forum (forum) + UNIQUE KEY id (id) ) COMMENT='Keeps track of who is subscribed to what forum'; # -------------------------------------------------------- -# -# Table structure for table `forum_read` -# - -CREATE TABLE prefix_forum_read ( - `id` int(10) unsigned NOT NULL auto_increment, - `userid` int(10) NOT NULL default '0', - `forumid` int(10) NOT NULL default '0', - `discussionid` int(10) NOT NULL default '0', - `postid` int(10) NOT NULL default '0', - `firstread` int(10) NOT NULL default '0', - `lastread` int(10) NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `prefix_forum_user_forum_idx` (`userid`,`forumid`), - KEY `prefix_forum_user_discussion_idx` (`userid`,`discussionid`), - KEY `prefix_forum_user_post_idx` (`userid`,`postid`) -) COMMENT='Tracks each users read posts'; - # # Dumping data for table `log_display` # diff --git a/mod/forum/db/oci8po.php b/mod/forum/db/oci8po.php index b25d8472a37..121e5e26904 100755 --- a/mod/forum/db/oci8po.php +++ b/mod/forum/db/oci8po.php @@ -1,4 +1,4 @@ -<?php +<?PHP function forum_upgrade($oldversion) { // This function does anything necessary to upgrade diff --git a/mod/forum/db/postgres7.php b/mod/forum/db/postgres7.php index 1279e0c9600..8f2cc67c450 100644 --- a/mod/forum/db/postgres7.php +++ b/mod/forum/db/postgres7.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function forum_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -62,112 +62,6 @@ function forum_upgrade($oldversion) { );"); } - if ($oldversion < 2004070700) { // This may be redoing it from STABLE but that's OK - table_column("forum_discussions", "groupid", "groupid", "integer", "10", "", "0", ""); - } - - - if ($oldversion < 2004111700) { - execute_sql(" DROP INDEX {$CFG->prefix}forum_posts_parent_idx;",false); - execute_sql(" DROP INDEX {$CFG->prefix}forum_posts_discussion_idx;",false); - execute_sql(" DROP INDEX {$CFG->prefix}forum_posts_userid_idx;",false); - execute_sql(" DROP INDEX {$CFG->prefix}forum_discussions_forum_idx;",false); - execute_sql(" DROP INDEX {$CFG->prefix}forum_discussions_userid_idx;",false); - - execute_sql(" CREATE INDEX {$CFG->prefix}forum_posts_parent_idx ON {$CFG->prefix}forum_posts (parent) "); - execute_sql(" CREATE INDEX {$CFG->prefix}forum_posts_discussion_idx ON {$CFG->prefix}forum_posts (discussion) "); - execute_sql(" CREATE INDEX {$CFG->prefix}forum_posts_userid_idx ON {$CFG->prefix}forum_posts (userid) "); - execute_sql(" CREATE INDEX {$CFG->prefix}forum_discussions_forum_idx ON {$CFG->prefix}forum_discussions (forum) "); - execute_sql(" CREATE INDEX {$CFG->prefix}forum_discussions_userid_idx ON {$CFG->prefix}forum_discussions (userid) "); - } - - if ($oldversion < 2004111200) { - execute_sql("DROP INDEX {$CFG->prefix}forum_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}forum_queue_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}forum_queue_discussion_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}forum_queue_postid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}forum_ratings_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}forum_ratings_post_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}forum_subscriptions_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}forum_subscriptions_forum_idx;",false); - - modify_database('','CREATE INDEX prefix_forum_course_idx ON prefix_forum (course);'); - modify_database('','CREATE INDEX prefix_forum_queue_userid_idx ON prefix_forum_queue (userid);'); - modify_database('','CREATE INDEX prefix_forum_queue_discussion_idx ON prefix_forum_queue (discussionid);'); - modify_database('','CREATE INDEX prefix_forum_queue_postid_idx ON prefix_forum_queue (postid);'); - modify_database('','CREATE INDEX prefix_forum_ratings_userid_idx ON prefix_forum_ratings (userid);'); - modify_database('','CREATE INDEX prefix_forum_ratings_post_idx ON prefix_forum_ratings (post);'); - modify_database('','CREATE INDEX prefix_forum_subscriptions_userid_idx ON prefix_forum_subscriptions (userid);'); - modify_database('','CREATE INDEX prefix_forum_subscriptions_forum_idx ON prefix_forum_subscriptions (forum);'); - } - - if ($oldversion < 2005011500) { - modify_database('','CREATE TABLE prefix_forum_read ( - id SERIAL PRIMARY KEY, - userid integer default 0 NOT NULL, - forumid integer default 0 NOT NULL, - discussionid integer default 0 NOT NULL, - postid integer default 0 NOT NULL, - firstread integer default 0 NOT NULL, - lastread integer default 0 NOT NULL - );'); - - modify_database('','CREATE INDEX prefix_forum_user_forum_idx ON prefix_forum_read (userid, forumid);'); - modify_database('','CREATE INDEX prefix_forum_user_discussion_idx ON prefix_forum_read (userid, discussionid);'); - modify_database('','CREATE INDEX prefix_forum_user_post_idx ON prefix_forum_read (userid, postid);'); - - /// Enter initial read records for all posts older than 1 day. - - require_once($CFG->dirroot.'/mod/forum/lib.php'); - /// Timestamp for old posts (and therefore considered read). - $dateafter = time() - ($CFG->forum_oldpostdays*24*60*60); - /// Timestamp for one day ago. - $onedayago = time() - (24*60*60); - - /// Get all discussions that have had posts since the old post date. - if ($discrecords = get_records_select('forum_discussions', 'timemodified > '.$dateafter, - 'course', 'id,course,forum,groupid')) { - $currcourse = 0; - $users = 0; - foreach ($discrecords as $discrecord) { - if ($discrecord->course != $currcourse) { - /// Discussions are ordered by course, so we only need to get any course's users once. - $currcourse = $discrecord->course; - $users = get_course_users($currcourse); - } - /// If this course has users, and posts more than a day old, mark them for each user. - if (is_array($users) && - ($posts = get_records_select('forum_posts', 'discussion = '.$discrecord->id. - ' AND modified < '.$onedayago, '', 'id,discussion,modified'))) { - foreach($posts as $post) { - foreach ($users as $user) { - /// If its a group discussion, make sure the user is in the group. - if (!$discrecord->groupid || ismember($discrecord->groupid, $user->id)) { - forum_tp_mark_post_read($user->id, $post, $discrecord->forum); - } - } - } - } - } - } - - } - - if ($oldversion < 2005032900) { - modify_database('','CREATE INDEX prefix_forum_posts_created_idx ON prefix_forum_posts (created);'); - modify_database('','CREATE INDEX prefix_forum_posts_mailed_idx ON prefix_forum_posts (mailed);'); - - } - - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $sql = "select course from {$CFG->prefix}forum_discussions, {$CFG->prefix}forum_posts "; - $sql .= "where {$CFG->prefix}forum_posts.discussion = {$CFG->prefix}forum_discussions.id "; - $sql .= "and {$CFG->prefix}forum_posts.id = "; - $wtm->update( 'forum_posts','message','format',$sql ); - } - return true; } diff --git a/mod/forum/db/postgres7.sql b/mod/forum/db/postgres7.sql index e67fcdfcff5..3087d222f13 100644 --- a/mod/forum/db/postgres7.sql +++ b/mod/forum/db/postgres7.sql @@ -20,8 +20,6 @@ CREATE TABLE prefix_forum ( rssarticles integer NOT NULL default '0', timemodified integer NOT NULL default '0' ); - -CREATE INDEX prefix_forum_course_idx ON prefix_forum (course); # -------------------------------------------------------- # @@ -40,10 +38,6 @@ CREATE TABLE prefix_forum_discussions ( timemodified integer NOT NULL default '0', usermodified integer NOT NULL default '0' ); - -CREATE INDEX prefix_forum_discussions_forum_idx ON prefix_forum_discussions (forum); -CREATE INDEX prefix_forum_discussions_userid_idx ON prefix_forum_discussions (userid); - # -------------------------------------------------------- # @@ -64,13 +58,6 @@ CREATE TABLE prefix_forum_posts ( attachment VARCHAR(100) NOT NULL default '', totalscore integer NOT NULL default '0' ); - -CREATE INDEX prefix_forum_posts_discussion_idx ON prefix_forum_posts (discussion); -CREATE INDEX prefix_forum_posts_parent_idx ON prefix_forum_posts (parent); -CREATE INDEX prefix_forum_posts_userid_idx ON prefix_forum_posts (userid); -CREATE INDEX prefix_forum_posts_created_idx ON prefix_forum_posts (created); -CREATE INDEX prefix_forum_posts_mailed_idx ON prefix_forum_posts (mailed); - # -------------------------------------------------------- # @@ -84,9 +71,6 @@ CREATE TABLE prefix_forum_queue ( postid integer default 0 NOT NULL ); -CREATE INDEX prefix_forum_queue_userid_idx ON prefix_forum_queue (userid); -CREATE INDEX prefix_forum_queue_discussion_idx ON prefix_forum_queue (discussionid); -CREATE INDEX prefix_forum_queue_postid_idx ON prefix_forum_queue (postid); # -------------------------------------------------------- @@ -101,10 +85,6 @@ CREATE TABLE prefix_forum_ratings ( time integer NOT NULL default '0', rating integer NOT NULL default '0' ); - -CREATE INDEX prefix_forum_ratings_userid_idx ON prefix_forum_ratings (userid); -CREATE INDEX prefix_forum_ratings_post_idx ON prefix_forum_ratings (post); - # -------------------------------------------------------- # @@ -116,32 +96,6 @@ CREATE TABLE prefix_forum_subscriptions ( userid integer NOT NULL default '0', forum integer NOT NULL default '0' ); - -CREATE INDEX prefix_forum_subscriptions_userid_idx ON prefix_forum_subscriptions (userid); -CREATE INDEX prefix_forum_subscriptions_forum_idx ON prefix_forum_subscriptions (forum); - -# -------------------------------------------------------- - - -# -# Table structure for table `forum_read` -# - -CREATE TABLE prefix_forum_read ( - id SERIAL PRIMARY KEY, - userid integer NOT NULL default '0', - forumid integer NOT NULL default '0', - discussionid integer NOT NULL default '0', - postid integer NOT NULL default '0', - firstread integer NOT NULL default '0', - lastread integer NOT NULL default '0' -); - -CREATE INDEX prefix_forum_user_forum_idx ON prefix_forum_read (userid, forumid); -CREATE INDEX prefix_forum_user_discussion_idx ON prefix_forum_read (userid, discussionid); -CREATE INDEX prefix_forum_user_post_idx ON prefix_forum_read (userid, postid); - - # -------------------------------------------------------- # diff --git a/mod/forum/delete.php b/mod/forum/delete.php new file mode 100644 index 00000000000..a6cab3ff30b --- /dev/null +++ b/mod/forum/delete.php @@ -0,0 +1,27 @@ +<?PHP // $Id$ + +// Deletes a forum entirely. + + require_once("../../config.php"); + require_once("mod.php"); + + require_variable($f); // The forum to delete. + + if (! $forum = get_record("forum", "id", $f)) { + error("Forum ID was incorrect"); + } + + if (! $course = get_record("course", "id", $forum->course)) { + error("Forum course was incorrect"); + } + + if (!isteacher($forum->course)) { + error("You are not allowed to do this"); + } + + if (! delete_instance($forum->id)) { + error("Could not delete that forum"); + } + + redirect("$CFG->wwwroot/mod/forum/index.php?id=$course->id"); +?> diff --git a/mod/forum/discuss.php b/mod/forum/discuss.php index 2fc4a0e2bb1..50301a99cb0 100644 --- a/mod/forum/discuss.php +++ b/mod/forum/discuss.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // Displays a post, and all the posts below it. // If no post is given, displays all posts in a discussion @@ -10,8 +10,6 @@ optional_variable($parent); // If set, then display this post and all children. optional_variable($mode); // If set, changes the layout of the thread optional_variable($move); // If set, moves this discussion to another forum - optional_variable($mark); // Used for tracking read posts if user initiated. - optional_variable($postid); // Used for tracking read posts if user initiated. if (! $discussion = get_record("forum_discussions", "id", $d)) { error("Discussion ID was incorrect or no longer exists"); @@ -21,26 +19,15 @@ error("Course ID is incorrect - discussion is faulty"); } - if (! $forum = get_record("forum", "id", $discussion->forum)) { - notify("Bad forum ID stored in this discussion"); + if ($CFG->forcelogin) { + require_login(); } - if ($forum->type == "teacher") { + if ($course->category) { require_login($course->id); - - if (!isteacher($course->id)) { - error("You must be a $course->teacher to view this forum"); - } - - } else { - if (! $cm = get_coursemodule_from_instance("forum", $discussion->forum, $course->id)) { - error("Course Module ID was incorrect"); - } - require_course_login($course, false, $cm); } - - if (!empty($move)) { + if (!empty($move)) { if (!isteacher($course->id)) { error("Only teachers can do that!"); } @@ -62,10 +49,21 @@ } } + if (empty($forum)) { + if (! $forum = get_record("forum", "id", $discussion->forum)) { + notify("Bad forum ID stored in this discussion"); + } + } + + if ($forum->type == "teacher") { + if (!isteacher($course->id)) { + error("You must be a $course->teacher to view this forum"); + } + } $logparameters = "d=$discussion->id"; if ($parent) { - $logparameters .= "&amp;parent=$parent"; + $logparameters .= "&parent=$parent"; } if ($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) { @@ -88,35 +86,27 @@ } } else { $parent = $discussion->firstpost; - $navtail = format_string($discussion->name); + $navtail = "$discussion->name"; } if (! $post = forum_get_post_full($parent)) { error("Discussion no longer exists", "$CFG->wwwroot/mod/forum/view.php?f=$forum->id"); } - if ($CFG->forum_trackreadposts && $CFG->forum_usermarksread) { - if ($mark == 'read') { - forum_tp_add_read_record($USER->id, $postid, $discussion->id, $forum->id); - } else if ($mark == 'unread') { - forum_tp_delete_read_records($USER->id, $postid); - } - } - if (empty($navtail)) { - $navtail = "<a href=\"discuss.php?d=$discussion->id\">".format_string($discussion->name,true)."</a> -> ".format_string($post->subject); + $navtail = "<A HREF=\"discuss.php?d=$discussion->id\">$discussion->name</A> -> $post->subject"; } - $navmiddle = "<a href=\"../forum/index.php?id=$course->id\">".get_string("forums", "forum")."</a> -> <a href=\"../forum/view.php?f=$forum->id\">".format_string($forum->name,true)."</a>"; + $navmiddle = "<A HREF=\"../forum/index.php?id=$course->id\">".get_string("forums", "forum")."</A> -> <A HREF=\"../forum/view.php?f=$forum->id\">$forum->name</A>"; - $searchform = forum_search_form($course); + $searchform = forum_print_search_form($course, "", true, "plain"); if ($course->category) { - print_header("$course->shortname: ".format_string($discussion->name), "$course->fullname", - "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> -> + print_header("$course->shortname: $discussion->name", "$course->fullname", + "<A HREF=../../course/view.php?id=$course->id>$course->shortname</A> -> $navmiddle -> $navtail", "", "", true, $searchform, navmenu($course, $cm)); } else { - print_header("$course->shortname: ".format_string($discussion->name), "$course->fullname", + print_header("$course->shortname: $discussion->name", "$course->fullname", "$navmiddle -> $navtail", "", "", true, $searchform, navmenu($course, $cm)); } @@ -134,34 +124,32 @@ } if ($groupmode and !isteacheredit($course->id)) { // Groups must be kept separate - $mygroupid = mygroupid($course->id); - if ($groupmode == SEPARATEGROUPS) { require_login(); - if ((empty($mygroupid) and $discussion->groupid == -1) || ($mygroupid == $discussion->groupid)) { + if (mygroupid($course->id) == $discussion->groupid) { $canreply = true; } elseif ($discussion->groupid == -1) { $canreply = false; } else { print_heading("Sorry, you can't see this discussion because you are not in this group"); - print_footer($course); + print_footer(); die; } } else if ($groupmode == VISIBLEGROUPS) { - $canreply = ((empty($mygroupid) and $discussion->groupid == -1) || ($mygroupid == $discussion->groupid)); + $canreply = (mygroupid($course->id) == $discussion->groupid); } } /// Print the controls across the top - echo '<table width="100%"><tr><td width="33%">'; + echo "<table width=\"100%\"><tr><td width=\"33%\">"; if ($groupmode == VISIBLEGROUPS or ($groupmode and isteacheredit($course->id))) { - if ($groups = get_records_menu('groups', 'courseid', $course->id, 'name ASC', 'id,name')) { - print_group_menu($groups, $groupmode, $discussion->groupid, "view.php?id=$cm->id&amp;group="); + if ($groups = get_records_menu("groups", "courseid", $course->id, "name ASC", "id,name")) { + print_group_menu($groups, $groupmode, $discussion->groupid, "view.php?id=$cm->id&group="); } } @@ -183,13 +171,13 @@ } $section = $courseforum->section; if ($courseforum->id != $forum->id) { - $url = "discuss.php?d=$discussion->id&amp;move=$courseforum->id"; - $forummenu[$url] = format_string($courseforum->name,true); + $url = "discuss.php?d=$discussion->id&move=$courseforum->id"; + $forummenu[$url] = $courseforum->name; } } if (!empty($forummenu)) { echo "<div align=\"right\">"; - echo popup_form("$CFG->wwwroot/mod/forum/", $forummenu, "forummenu", "", + echo popup_form("$CFG->wwwroot/mod/forum/", $forummenu, "forummenu", "", get_string("movethisdiscussionto", "forum"), "", "", true); echo "</div>"; } @@ -198,7 +186,7 @@ echo "</td></tr></table>"; if (isset($discussionmoved)) { - notify(get_string("discussionmoved", "forum", format_string($forum->name,true))); + notify(get_string("discussionmoved", "forum", $forum->name)); } @@ -206,6 +194,7 @@ forum_print_discussion($course, $forum, $discussion, $post, $displaymode, $canreply); + print_footer($course); ?> diff --git a/mod/forum/index.php b/mod/forum/index.php index 28fce4d7374..e23c8834647 100644 --- a/mod/forum/index.php +++ b/mod/forum/index.php @@ -1,8 +1,8 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); - require_once("$CFG->libdir/rsslib.php"); + require_once("$CFG->dirroot/rss/rsslib.php"); optional_variable($id); // course @@ -16,7 +16,13 @@ } } - require_course_login($course); + if ($CFG->forcelogin) { + require_login(); + } + + if ($course->category) { + require_login($course->id); + } $currentgroup = get_current_group($course->id); @@ -29,37 +35,31 @@ $strdescription = get_string("description"); $strdiscussions = get_string("discussions", "forum"); $strsubscribed = get_string("subscribed", "forum"); - $strunreadposts = get_string("unreadposts", "forum"); $strrss = get_string("rss"); - $searchform = forum_search_form($course); + $searchform = forum_print_search_form($course, "", true, "plain"); - // Start of the table for General Forums + // Build up the tables $generaltable->head = array ($strforum, $strdescription, $strdiscussions); - $generaltable->align = array ('left', 'left', 'center'); - - if ($CFG->forum_trackreadposts) { - $generaltable->head[] = $strunreadposts; - $generaltable->align[] = 'center'; - } + $generaltable->align = array ("LEFT", "LEFT", "CENTER"); if ($can_subscribe = (isstudent($course->id) or isteacher($course->id) or isadmin())) { $generaltable->head[] = $strsubscribed; - $generaltable->align[] = 'center'; + $generaltable->align[] = "CENTER"; } - if ($show_rss = (($can_subscribe || $course->id == SITEID) && - isset($CFG->enablerssfeeds) && isset($CFG->forum_enablerssfeeds) && + if ($show_rss = ($can_subscribe && isset($CFG->enablerssfeeds) && isset($CFG->forum_enablerssfeeds) && $CFG->enablerssfeeds && $CFG->forum_enablerssfeeds)) { $generaltable->head[] = $strrss; - $generaltable->align[] = 'center'; + $generaltable->align[] = "CENTER"; } + $learningtable = $generaltable; // Headers etc are the same - // Parse and organise all the forums. Most forums are course modules but - // some special ones are not. These get placed in the general forums + // Parse and organise all the forums. Most forums are course modules but + // some special ones are not. These get placed in the general forums // category with the forums in section 0. $generalforums = array(); // For now @@ -92,7 +92,7 @@ unset($learningforums[$forum->keyreference]); } break; - case "teacher": + case "teacher": if (isteacher($course->id)) { $forum->visible = true; $generalforums[] = $forum; @@ -104,7 +104,7 @@ if (isset($forum->keyreference)) { unset($learningforums[$forum->keyreference]); } - } + } break; } } @@ -119,52 +119,21 @@ } else { $groupmode = NOGROUPS; } - + if ($groupmode == SEPARATEGROUPS and !isteacheredit($course->id)) { $count = count_records_select("forum_discussions", "forum = '$forum->id' AND (groupid = '$currentgroup' OR groupid = '-1')"); } else { $count = count_records("forum_discussions", "forum", "$forum->id"); } - - if ($CFG->forum_trackreadposts) { - $groupid = ($groupmode==SEPARATEGROUPS && !isteacheredit($course->id)) ? $currentgroup : false; -// $unread = forum_tp_count_forum_posts($forum->id, $groupid) - -// forum_tp_count_forum_read_records($USER->id, $forum->id, $groupid); - $unread = forum_tp_count_forum_unread_posts($USER->id, $forum->id, $groupid); - if ($unread > 0) { - $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>'; - } else { - $unreadlink = '<span class="read"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>'; - } - } - - $forum->intro = format_text(forum_shorten_post($forum->intro)); + + $forum->intro = forum_shorten_post($forum->intro); + replace_smilies($forum->intro); $forum->intro = "<span style=\"font-size:x-small;\">$forum->intro</span>";; if ($forum->visible) { - $forumlink = "<a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>"; + $forumlink = "<a href=\"view.php?f=$forum->id\">$forum->name</a>"; } else { - $forumlink = "<a class=\"dimmed\" href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>"; - } - - //If this forum has RSS activated, calculate it - $rsslink = ''; - if ($show_rss) { - if ($forum->rsstype and $forum->rssarticles) { - //Calculate the tolltip text - if ($forum->rsstype == 1) { - $tooltiptext = get_string("rsssubscriberssdiscussions","forum",format_string($forum->name)); - } else { - $tooltiptext = get_string("rsssubscriberssposts","forum",format_string($forum->name)); - } - if (empty($USER->id)) { - $userid = 0; - } else { - $userid = $USER->id; - } - //Get html code for RSS link - $rsslink = rss_get_link($course->id, $userid, "forum", $forum->id, $tooltiptext); - } + $forumlink = "<a class=\"dimmed\" href=\"view.php?f=$forum->id\">$forum->name</a>"; } if ($can_subscribe) { @@ -173,7 +142,7 @@ } else { if ($groupmode and !isteacheredit($course->id) and !mygroupid($course->id)) { $sublink = get_string("no"); // Can't subscribe to a group forum (not in a group) - $forumlink = format_string($forum->name,true); + $forumlink = $forum->name; } else { if (forum_is_subscribed($USER->id, $forum->id)) { $subscribed = get_string("yes"); @@ -185,49 +154,29 @@ $sublink = "<a title=\"$subtitle\" href=\"subscribe.php?id=$forum->id\">$subscribed</a>"; } } - $row = array ($forumlink, $forum->intro, "$count"); - if ($CFG->forum_trackreadposts) { - $row[] = $unreadlink; + //If this forum has RSS activated, calculate it + if ($show_rss) { + $rsslink = ''; + if ($forum->rsstype and $forum->rssarticles) { + //Calculate the tolltip text + if ($forum->rsstype == 1) { + $tooltiptext = get_string("rsssubscriberssdiscussions","forum",$forum->name); + } else { + $tooltiptext = get_string("rsssubscriberssposts","forum",$forum->name); + } + //Get html code for RSS link + $rsslink = rss_get_link($course->id, $USER->id, "forum", $forum->id, $tooltiptext); + } + //Save data + $generaltable->data[] = array ($forumlink, "$forum->intro", "$count", $sublink,$rsslink); + } else { + $generaltable->data[] = array ($forumlink, "$forum->intro", "$count", $sublink); } - $row[] = $sublink; - if (!empty($rsslink)) { - $row[] = $rsslink; - } - $generaltable->data[] = $row; } else { - $row = array ($forumlink, $forum->intro, "$count"); - if ($CFG->forum_trackreadposts) { - $row[] = $unreadlink; - } - if (!empty($rsslink)) { - $row[] = $rsslink; - } - $generaltable->data[] = $row; + $generaltable->data[] = array ($forumlink, "$forum->intro", "$count"); } } - } - - - // Start of the table for Learning Forums - $learningtable->head = array ($strforum, $strdescription, $strdiscussions); - $learningtable->align = array ("left", "left", "center"); - - if ($CFG->forum_trackreadposts) { - $learningtable->head[] = $strunreadposts; - $learningtable->align[] = 'center'; - } - - if ($can_subscribe = (isstudent($course->id) or isteacher($course->id) or isadmin())) { - $learningtable->head[] = $strsubscribed; - $learningtable->align[] = 'center'; - } - - if ($show_rss = (($can_subscribe || $course->id == SITEID) && - isset($CFG->enablerssfeeds) && isset($CFG->forum_enablerssfeeds) && - $CFG->enablerssfeeds && $CFG->forum_enablerssfeeds)) { - $learningtable->head[] = $strrss; - $learningtable->align[] = 'center'; - } + } /// Now let's process the learning forums @@ -235,35 +184,24 @@ // Add extra field for section number, at the front array_unshift($learningtable->head, ""); array_unshift($learningtable->align, "center"); - + if ($learningforums) { $currentsection = ""; foreach ($learningforums as $key => $forum) { $groupmode = groupmode($course, $forum); /// Can do this because forum->groupmode is defined - + if ($groupmode == SEPARATEGROUPS and !isteacheredit($course->id)) { $count = count_records("forum_discussions", "forum", "$forum->id", "groupid", $currentgroup); } else { $count = count_records("forum_discussions", "forum", "$forum->id"); } - - if ($CFG->forum_trackreadposts) { - $groupid = ($groupmode==SEPARATEGROUPS && !isteacheredit($course->id)) ? $currentgroup : false; -// $unread = forum_tp_count_forum_posts($forum->id, $groupid) - -// forum_tp_count_forum_read_records($USER->id, $forum->id, $groupid); - $unread = forum_tp_count_forum_unread_posts($USER->id, $forum->id, $groupid); - if ($unread > 0) { - $unreadlink = '<span class="unread">'.$unread.'</span>'; - } else { - $unreadlink = '<span class="read">'.$unread.'</span>'; - } - } - - $forum->intro = format_text(forum_shorten_post($forum->intro)); + + $forum->intro = forum_shorten_post($forum->intro); + replace_smilies($forum->intro); $forum->intro = "<span style=\"font-size:x-small;\">$forum->intro</span>"; - + if ($forum->section != $currentsection) { $printsection = $forum->section; if ($currentsection) { @@ -275,31 +213,11 @@ } if ($forum->visible) { - $forumlink = "<a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>"; + $forumlink = "<a href=\"view.php?f=$forum->id\">$forum->name</a>"; } else { - $forumlink = "<a class=\"dimmed\" href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>"; + $forumlink = "<a class=\"dimmed\" href=\"view.php?f=$forum->id\">$forum->name</a>"; } - - //If this forum has RSS activated, calculate it - $rsslink = ''; - if ($show_rss) { - if ($forum->rsstype and $forum->rssarticles) { - //Calculate the tolltip text - if ($forum->rsstype == 1) { - $tooltiptext = get_string("rsssubscriberssdiscussions","forum",format_string($forum->name)); - } else { - $tooltiptext = get_string("rsssubscriberssposts","forum",format_string($forum->name)); - } - if (empty($USER->id)) { - $userid = 0; - } else { - $userid = $USER->id; - } - //Get html code for RSS link - $rsslink = rss_get_link($course->id, $userid, "forum", $forum->id, $tooltiptext); - } - } - + if ($can_subscribe) { if (forum_is_forcesubscribed($forum->id)) { $sublink = get_string("yes"); @@ -307,7 +225,7 @@ if ($groupmode and !isteacheredit($course->id) and !mygroupid($course->id)) { $sublink = get_string("no"); // Can't subscribe to a group forum (not in a group) if ($groupmode == SEPARATEGROUPS) { - $forumlink = format_string($forum->name,true); + $forumlink = $forum->name; } } else { if (forum_is_subscribed($USER->id, $forum->id)) { @@ -320,26 +238,26 @@ $sublink = "<a title=\"$subtitle\" href=\"subscribe.php?id=$forum->id\">$subscribed</a>"; } } - - $row = array ($printsection, $forumlink, $forum->intro, $count); - if ($CFG->forum_trackreadposts) { - $row[] = $unreadlink; + //If this forum has RSS activated, calculate it + if ($show_rss) { + $rsslink = ''; + if ($forum->rsstype and $forum->rssarticles) { + //Calculate the tolltip text + if ($forum->rsstype == 1) { + $tooltiptext = get_string("rsssubscriberssdiscussions","forum",$forum->name); + } else { + $tooltiptext = get_string("rsssubscriberssposts","forum",$forum->name); + } + //Get html code for RSS link + $rsslink = rss_get_link($course->id, $USER->id, "forum", $forum->id, $tooltiptext); + } + //Save data + $learningtable->data[] = array ($printsection,$forumlink, "$forum->intro", "$count", $sublink,$rsslink); + } else { + $learningtable->data[] = array ($printsection,$forumlink, "$forum->intro", "$count", $sublink); } - $row[] = $sublink; - if (!empty($rsslink)) { - $row[] = $rsslink; - } - $learningtable->data[] = $row; - } else { - $row = array ($printsection, $forumlink, $forum->intro, $count); - if ($CFG->forum_trackreadposts) { - $row[] = $unreadlink; - } - if (!empty($rsslink)) { - $row[] = $rsslink; - } - $learningtable->data[] = $row; + $learningtable->data[] = array ($printsection, $forumlink, "$forum->intro", "$count"); } } } @@ -350,10 +268,10 @@ if ($course->category) { print_header("$course->shortname: $strforums", "$course->fullname", - "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> -> $strforums", + "<A HREF=../../course/view.php?id=$course->id>$course->shortname</A> -> $strforums", "", "", true, $searchform, navmenu($course)); } else { - print_header("$course->shortname: $strforums", "$course->fullname", "$strforums", + print_header("$course->shortname: $strforums", "$course->fullname", "$strforums", "", "", true, $searchform, navmenu($course)); } diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 6761b6dae32..7d19fab4d44 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -1,74 +1,52 @@ -<?php // $Id$ +<?PHP // $Id$ -require_once($CFG->libdir.'/filelib.php'); +require_once("$CFG->dirroot/files/mimetypes.php"); /// CONSTANTS /////////////////////////////////////////////////////////// -define('FORUM_MODE_FLATOLDEST', 1); -define('FORUM_MODE_FLATNEWEST', -1); -define('FORUM_MODE_THREADED', 2); -define('FORUM_MODE_NESTED', 3); +define("FORUM_MODE_FLATOLDEST", 1); +define("FORUM_MODE_FLATNEWEST", -1); +define("FORUM_MODE_THREADED", 2); +define("FORUM_MODE_NESTED", 3); -define('FORUM_FORCESUBSCRIBE', 1); -define('FORUM_INITIALSUBSCRIBE', 2); - -$FORUM_LAYOUT_MODES = array ( FORUM_MODE_FLATOLDEST => get_string('modeflatoldestfirst', 'forum'), - FORUM_MODE_FLATNEWEST => get_string('modeflatnewestfirst', 'forum'), - FORUM_MODE_THREADED => get_string('modethreaded', 'forum'), - FORUM_MODE_NESTED => get_string('modenested', 'forum') ); +$FORUM_LAYOUT_MODES = array ( FORUM_MODE_FLATOLDEST => get_string("modeflatoldestfirst", "forum"), + FORUM_MODE_FLATNEWEST => get_string("modeflatnewestfirst", "forum"), + FORUM_MODE_THREADED => get_string("modethreaded", "forum"), + FORUM_MODE_NESTED => get_string("modenested", "forum") ); // These are course content forums that can be added to the course manually -$FORUM_TYPES = array ('general' => get_string('generalforum', 'forum'), - 'eachuser' => get_string('eachuserforum', 'forum'), - 'single' => get_string('singleforum', 'forum') ); +$FORUM_TYPES = array ("general" => get_string("generalforum", "forum"), + "eachuser" => get_string("eachuserforum", "forum"), + "single" => get_string("singleforum", "forum") ); -$FORUM_OPEN_MODES = array ('2' => get_string('openmode2', 'forum'), - '1' => get_string('openmode1', 'forum'), - '0' => get_string('openmode0', 'forum') ); +$FORUM_OPEN_MODES = array ("2" => get_string("openmode2", "forum"), + "1" => get_string("openmode1", "forum"), + "0" => get_string("openmode0", "forum") ); if (!isset($CFG->forum_displaymode)) { - set_config('forum_displaymode', FORUM_MODE_NESTED); + set_config("forum_displaymode", FORUM_MODE_NESTED); } if (!isset($CFG->forum_shortpost)) { - set_config('forum_shortpost', 300); // Less non-HTML characters than this is short + set_config("forum_shortpost", 300); // Less non-HTML characters than this is short } if (!isset($CFG->forum_longpost)) { - set_config('forum_longpost', 600); // More non-HTML characters than this is long + set_config("forum_longpost", 600); // More non-HTML characters than this is long } if (!isset($CFG->forum_manydiscussions)) { - set_config('forum_manydiscussions', 100); // Number of discussions on a page + set_config("forum_manydiscussions", 100); // Number of discussions on a page } if (!isset($CFG->forum_maxbytes)) { - set_config('forum_maxbytes', 512000); // Default maximum size for all forums -} - -if (!isset($CFG->forum_trackreadposts)) { - set_config('forum_trackreadposts', true); // Default whether user needs to mark a post as read -} - -if (!isset($CFG->forum_oldpostdays)) { - set_config('forum_oldpostdays', 30); // Default number of days that a post is considered old -} - -if (!isset($CFG->forum_usermarksread)) { - set_config('forum_usermarksread', false); // Default whether user needs to mark a post as read -} - -if (!isset($CFG->forum_cleanreadtime)) { - set_config('forum_cleanreadtime', 2); // Default time (hour) to execute 'clean_read_records' cron + set_config("forum_maxbytes", 512000); // Default maximum size for all forums } if (!isset($CFG->forum_replytouser)) { - set_config('forum_replytouser', true); // Default maximum size for all forums + set_config("forum_replytouser", true); // Default maximum size for all forums } -if (empty($USER->id) or isguest()) { - $CFG->forum_trackreadposts = false; // This feature never works when a user isn't logged in -} /// STANDARD FUNCTIONS /////////////////////////////////////////////////////////// @@ -97,11 +75,11 @@ function forum_add_instance($forum) { $forum->assesstimefinish = 0; } - if (! $forum->id = insert_record('forum', $forum)) { + if (! $forum->id = insert_record("forum", $forum)) { return false; } - if ($forum->type == 'single') { // Create related discussion. + if ($forum->type == "single") { // Create related discussion. $discussion->course = $forum->course; $discussion->forum = $forum->id; $discussion->name = $forum->name; @@ -109,14 +87,7 @@ function forum_add_instance($forum) { $discussion->assessed = $forum->assessed; if (! forum_add_discussion($discussion)) { - error('Could not add the discussion for this forum'); - } - } - - if ($forum->forcesubscribe == FORUM_INITIALSUBSCRIBE) { // all users should be subscribed initially - $users = get_course_users($forum->course); - foreach ($users as $user) { - forum_subscribe($user->id, $forum->id); + error("Could not add the discussion for this forum"); } } @@ -146,35 +117,35 @@ function forum_update_instance($forum) { $forum->assesstimefinish = 0; } - if ($forum->type == 'single') { // Update related discussion and post. - if (! $discussion = get_record('forum_discussions', 'forum', $forum->id)) { - if ($discussions = get_records('forum_discussions', 'forum', $forum->id, 'timemodified ASC')) { - notify('Warning! There is more than one discussion in this forum - using the most recent'); + if ($forum->type == "single") { // Update related discussion and post. + if (! $discussion = get_record("forum_discussions", "forum", $forum->id)) { + if ($discussions = get_records("forum_discussions", "forum", $forum->id, "timemodified ASC")) { + notify("Warning! There is more than one discussion in this forum - using the most recent"); $discussion = array_pop($discussions); } else { - error('Could not find the discussion in this forum'); + error("Could not find the discussion in this forum"); } } - if (! $post = get_record('forum_posts', 'id', $discussion->firstpost)) { - error('Could not find the first post in this forum discussion'); + if (! $post = get_record("forum_posts", "id", $discussion->firstpost)) { + error("Could not find the first post in this forum discussion"); } $post->subject = $forum->name; $post->message = $forum->intro; $post->modified = $forum->timemodified; - if (! update_record('forum_posts', $post)) { - error('Could not update the first post'); + if (! update_record("forum_posts", $post)) { + error("Could not update the first post"); } $discussion->name = $forum->name; - if (! update_record('forum_discussions', $discussion)) { - error('Could not update the discussion'); + if (! update_record("forum_discussions", $discussion)) { + error("Could not update the discussion"); } } - return update_record('forum', $forum); + return update_record("forum", $forum); } @@ -183,13 +154,13 @@ function forum_delete_instance($id) { // this function will permanently delete the instance // and any data that depends on it. - if (! $forum = get_record('forum', 'id', $id)) { + if (! $forum = get_record("forum", "id", "$id")) { return false; } $result = true; - if ($discussions = get_records('forum_discussions', 'forum', $forum->id)) { + if ($discussions = get_records("forum_discussions", "forum", $forum->id)) { foreach ($discussions as $discussion) { if (! forum_delete_discussion($discussion)) { $result = false; @@ -197,13 +168,11 @@ function forum_delete_instance($id) { } } - if (! delete_records('forum_subscriptions', 'forum', $forum->id)) { + if (! delete_records("forum_subscriptions", "forum", "$forum->id")) { $result = false; } - forum_tp_delete_read_records(-1, -1, -1, $forum->id); - - if (! delete_records('forum', 'id', $forum->id)) { + if (! delete_records("forum", "id", "$forum->id")) { $result = false; } @@ -216,14 +185,14 @@ function forum_cron () { /// Finds all posts that have yet to be mailed out, and mails them /// out to all subscribers - global $CFG, $USER; static $strforums = NULL; - - if ($strforums === NULL) { + if($strforums === NULL) { $strforums = get_string('forums', 'forum'); } - if (!empty($USER->id)) { // Remember real USER account if necessary + global $CFG, $USER, $THEME; + + if (!empty($USER)) { // Remember real USER account if necessary $realuser = $USER; } @@ -243,33 +212,22 @@ function forum_cron () { /// prevents the risk of duplicated mails, which is a worse problem. if (!forum_mark_old_posts_as_mailed($endtime)) { - mtrace('Errors occurred while trying to mark some posts as being mailed.'); + mtrace("Errors occurred while trying to mark some posts as being mailed."); return false; // Don't continue trying to mail them, in case we are in a cron loop } @set_time_limit(0); /// so that script does not get timed out when posting to many users - $urlinfo = parse_url($CFG->wwwroot); - $hostname = $urlinfo['host']; - foreach ($posts as $post) { - mtrace(get_string('processingpost', 'forum', $post->id), ''); + mtrace(get_string("processingpost", "forum", $post->id), ''); - if (! $userfrom = get_record('user', 'id', $post->userid)) { - mtrace('Could not find user '.$post->userid); + if (! $userfrom = get_record("user", "id", "$post->userid")) { + mtrace("Could not find user $post->userid"); continue; } - - $userfrom->customheaders = array ( // Headers to make emails easier to track - "Precedence: Bulk", - "List-id: <moodlecourse{$post->course}@$hostname>", - "Message-Id: <moodlepost{$post->id}@$hostname>", - "In-Reply-To: <moodlepost{$post->parent}@$hostname>", - "References: <moodlepost{$post->parent}@$hostname>" - ); - + $userfrom->precedence = "bulk"; // This gets added to the email header if (! $discussion = get_record("forum_discussions", "id", "$post->discussion")) { mtrace("Could not find discussion $post->discussion"); @@ -335,30 +293,22 @@ function forum_cron () { $USER->lang = $userto->lang; $USER->timezone = $userto->timezone; - $postsubject = "$course->shortname: ".format_string($post->subject,true); + $postsubject = "$course->shortname: $post->subject"; $posttext = forum_make_mail_text($course, $forum, $discussion, $post, $userfrom, $userto); $posthtml = forum_make_mail_html($course, $forum, $discussion, $post, $userfrom, $userto); - if (!$mailresult = email_to_user($userto, $userfrom, $postsubject, $posttext, + if (!$mailresult = email_to_user($userto, $userfrom, $postsubject, $posttext, $posthtml, '', '', $CFG->forum_replytouser)) { mtrace("Error: mod/forum/cron.php: Could not send out mail for id $post->id to user $userto->id". " ($userto->email) .. not trying again."); - add_to_log($course->id, 'forum', 'mail error', "discuss.php?d=$discussion->id#$post->id", - substr(format_string($post->subject,true),0,30), $cm->id, $userto->id); + add_to_log($course->id, 'forum', 'mail error', "discuss.php?d=$discussion->id#$post->id", + substr($post->subject,0,30), $cm->id, $userto->id); $errorcount++; } else if ($mailresult === 'emailstop') { - add_to_log($course->id, 'forum', 'mail blocked', "discuss.php?d=$discussion->id#$post->id", - substr(format_string($post->subject,true),0,30), $cm->id, $userto->id); + add_to_log($course->id, 'forum', 'mail blocked', "discuss.php?d=$discussion->id#$post->id", + substr($post->subject,0,30), $cm->id, $userto->id); } else { $mailcount++; - - /// Mark post as read if forum_usermarksread is set off - if ($CFG->forum_trackreadposts && !$CFG->forum_usermarksread) { - if (!forum_tp_mark_post_read($userto->id, $post, $forum->id)) { - mtrace("Error: mod/forum/cron.php: Could not mark post $post->id read for user $userto->id". - " while sending email."); - } - } } } @@ -382,7 +332,7 @@ function forum_cron () { /// Now see if there are any digest mails waiting to be sent, and if we should send them - if (!isset($CFG->digestmailtimelast)) { // To catch the first time + if (!isset($CFG->digestmailtimelast)) { // To catch the first time set_config('digestmailtimelast', 0); } @@ -440,16 +390,18 @@ function forum_cron () { $postsubject = get_string('digestmailsubject', 'forum', $site->shortname); $headerdata = New stdClass; $headerdata->sitename = $site->fullname; - $headerdata->userprefs = $CFG->wwwroot.'/user/edit.php?id='.$userid.'&amp;course='.$site->id; + $headerdata->userprefs = $CFG->wwwroot.'/user/edit.php?id='.$userid.'&course='.$site->id; $posttext = get_string('digestmailheader', 'forum', $headerdata)."\n\n"; $headerdata->userprefs = '<a target="_blank" href="'.$headerdata->userprefs.'">'.get_string('digestmailprefs', 'forum').'</a>'; - $posthtml = "<head>"; - foreach ($CFG->stylesheets as $stylesheet) { - $posthtml .= '<link rel="stylesheet" type="text/css" href="'.$stylesheet.'" />'."\n"; - } - $posthtml .= "</head>\n<body>\n"; + $posthtml = "<head><link rel=\"stylesheet\" type=\"text/css\" href=\"".$CFG->stylesheet."\" /></head>\n"; + $posthtml .= "<body bgcolor=\"$THEME->cellcontent2\">"; + $posthtml .= "<style> <!--"; /// Inline styles for autolinks + $posthtml .= "a.autolink:link {text-decoration: none; color: black; background-color: $THEME->autolink}\n"; + $posthtml .= "a.autolink:visited {text-decoration: none; color: black; background-color: $THEME->autolink}\n"; + $posthtml .= "a.autolink:hover {text-decoration: underline; color: red}\n"; + $posthtml .= "--> </style>\n\n"; $posthtml .= '<p>'.get_string('digestmailheader', 'forum', $headerdata).'</p><br /><hr size="1" noshade="noshade" />'; foreach($thesediscussions as $discussionid) { @@ -475,31 +427,27 @@ function forum_cron () { $posttext .= "\n \n"; $posttext .= '====================================================================='; $posttext .= "\n \n"; - $posttext .= "$course->shortname -> $strforums -> ".format_string($forum->name,true); + $posttext .= "$course->shortname -> $strforums -> $forum->name"; if ($discussion->name != $forum->name) { - $posttext .= " -> ".format_string($discussion->name,true); + $posttext .= " -> $discussion->name"; } $posttext .= "\n"; $posthtml .= "<p><font face=\"sans-serif\">". "<a target=\"_blank\" href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> -> ". "<a target=\"_blank\" href=\"$CFG->wwwroot/mod/forum/index.php?id=$course->id\">$strforums</a> -> ". - "<a target=\"_blank\" href=\"$CFG->wwwroot/mod/forum/view.php?f=$forum->id\">".format_string($forum->name,true)."</a>"; + "<a target=\"_blank\" href=\"$CFG->wwwroot/mod/forum/view.php?f=$forum->id\">$forum->name</a>"; if ($discussion->name == $forum->name) { $posthtml .= "</font></p>"; } else { - $posthtml .= " -> <a target=\"_blank\" href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$discussion->id\">".format_string($discussion->name,true)."</a></font></p>"; + $posthtml .= " -> <a target=\"_blank\" href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$discussion->id\">$discussion->name</a></font></p>"; } $posthtml .= '<p>'; $postsarray = $discussionposts[$discussionid]; sort($postsarray); - /// Create an empty array to use for marking read posts. - /// (I'm sure there's already a structure I can use here, but I can't be sure.) - $markread = array(); - - foreach ($postsarray as $postid) { + foreach($postsarray as $postid) { if (! $post = get_record("forum_posts", "id", "$postid")) { mtrace("Error: Could not find post $postid"); continue; @@ -509,46 +457,35 @@ function forum_cron () { continue; } - $userfrom->customheaders = array ("Precedence: Bulk"); - - if ($userto->maildigest == 2) { + $userfrom->precedence = "bulk"; // This gets added to the email header + if($userto->maildigest == 2) { // Subjects only $by = New stdClass; $by->name = fullname($userfrom); $by->date = userdate($post->modified); - $posttext .= "\n".format_string($post->subject,true).' '.get_string("bynameondate", "forum", $by); + $posttext .= "\n".$post->subject.' '.get_string("bynameondate", "forum", $by); $posttext .= "\n---------------------------------------------------------------------"; - $by->name = "<a target=\"_blank\" href=\"$CFG->wwwroot/user/view.php?id=$userfrom->id&amp;course=$course->id\">$by->name</a>"; - $posthtml .= '<div><a target="_blank" href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='.$discussion->id.'#'.$post->id.'">'.format_string($post->subject,true).'</a> '.get_string("bynameondate", "forum", $by).'</div>'; - - } else { + $by->name = "<a target=\"_blank\" href=\"$CFG->wwwroot/user/view.php?id=$userfrom->id&course=$course->id\">$by->name</a>"; + $posthtml .= '<div><a target="_blank" href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='.$discussion->id.'#'.$post->id.'">'.$post->subject.'</a> '.get_string("bynameondate", "forum", $by).'</div>'; + } + else { // The full treatment $posttext .= forum_make_mail_text($course, $forum, $discussion, $post, $userfrom, $userto, true); $posthtml .= forum_make_mail_post($post, $userfrom, $userto, $course, false, $canreply, false, false); - - /// Create an array of postid's for this user to mark as read. - if ($CFG->forum_trackreadposts && !$CFG->forum_usermarksread) { - $markread[$post->id]->post = $post; - $markread[$post->id]->forumid = $forum->id; - } } } if ($canunsubscribe) { $posthtml .= "\n<div align=\"right\"><font size=\"1\"><a href=\"$CFG->wwwroot/mod/forum/subscribe.php?id=$forum->id\">".get_string("unsubscribe", "forum")."</a></font></div>"; - } else { + } + else { $posthtml .= "\n<div align=\"right\"><font size=\"1\">".get_string("everyoneissubscribed", "forum")."</font></div>"; } $posthtml .= '<hr size="1" noshade="noshade" /></p>'; } $posthtml .= '</body>'; - if($userto->mailformat != 1) { - // This user DOESN'T want to receive HTML - $posthtml = ''; - } - - if (!$mailresult = email_to_user($userto, $site->shortname, $postsubject, $posttext, $posthtml, + if (!$mailresult = email_to_user($userto, $site->shortname, $postsubject, $posttext, $posthtml, '', '', $CFG->forum_replytouser)) { mtrace("ERROR!"); echo "Error: mod/forum/cron.php: Could not send out digest mail to user $userto->id ($userto->email)... not trying again.\n"; @@ -558,16 +495,6 @@ function forum_cron () { } else { mtrace("success."); $usermailcount++; - - /// Mark post as read if forum_usermarksread is set off - if ($CFG->forum_trackreadposts && !$CFG->forum_usermarksread) { - foreach ($markread as $postinfo) { - if (!forum_tp_mark_post_read($userto->id, $postinfo->post, $postinfo->forumid)) { - mtrace("Error: mod/forum/cron.php: Could not mark post $postid read for user $userto->id". - " while sending digest email."); - } - } - } } } @@ -583,21 +510,6 @@ function forum_cron () { $USER = $realuser; } - if (($lastreadclean = get_record("config", "name", "forum_lastreadclean"))) { - $cleantime = mktime($CFG->forum_cleanreadtime, 0); - $timenow = time(); - if (($timenow > $cleantime) && ($lastreadclean->value+(24*3600) < $timenow)) { - $lastreadclean->value = $timenow; - update_record("config", $lastreadclean); - forum_tp_clean_read_records(); - } - } else { - $lastreadclean->name = 'forum_lastreadclean'; - $lastreadclean->value = time(); - insert_record("config", $lastreadclean); - } - - return true; } @@ -618,15 +530,15 @@ function forum_make_mail_text($course, $forum, $discussion, $post, $userfrom, $u $posttext = ''; if(!$bare) { - $posttext = "$course->shortname -> $strforums -> ".format_string($forum->name,true); + $posttext = "$course->shortname -> $strforums -> $forum->name"; if ($discussion->name != $forum->name) { - $posttext .= " -> ".format_string($discussion->name,true); + $posttext .= " -> $discussion->name"; } } $posttext .= "\n---------------------------------------------------------------------\n"; - $posttext .= format_string($post->subject,true); + $posttext .= $post->subject; if($bare) { $posttext .= " ($CFG->wwwroot/mod/forum/discuss.php?d=$discussion->id#$post->id)"; } @@ -663,21 +575,21 @@ function forum_make_mail_html($course, $forum, $discussion, $post, $userfrom, $u $canunsubscribe = ! forum_is_forcesubscribed($forum->id); $posthtml = ''; - $posthtml .= '<head>'; - foreach ($CFG->stylesheets as $stylesheet) { - $posthtml .= '<link rel="stylesheet" type="text/css" href="'.$stylesheet.'" />'."\n"; - } - $posthtml .= '</head>'; - $posthtml .= "\n<body>\n\n"; + $posthtml .= "<head><link rel=\"stylesheet\" type=\"text/css\" href=\"".$CFG->stylesheet."\" /></head>\n"; + $posthtml .= "<body><style> <!--"; /// Inline styles for autolinks + $posthtml .= "a.autolink:link {text-decoration: none; color: black; background-color: $THEME->autolink}\n"; + $posthtml .= "a.autolink:visited {text-decoration: none; color: black; background-color: $THEME->autolink}\n"; + $posthtml .= "a.autolink:hover {text-decoration: underline; color: red}\n"; + $posthtml .= "--> </style>\n\n"; $posthtml .= "<p><font face=\"sans-serif\">". "<a target=\"_blank\" href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> &raquo; ". "<a target=\"_blank\" href=\"$CFG->wwwroot/mod/forum/index.php?id=$course->id\">$strforums</a> &raquo; ". - "<a target=\"_blank\" href=\"$CFG->wwwroot/mod/forum/view.php?f=$forum->id\">".format_string($forum->name,true)."</a>"; + "<a target=\"_blank\" href=\"$CFG->wwwroot/mod/forum/view.php?f=$forum->id\">$forum->name</a>"; if ($discussion->name == $forum->name) { $posthtml .= "</font></p>"; } else { - $posthtml .= " &raquo; <a target=\"_blank\" href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$discussion->id\">".format_string($discussion->name,true)."</a></font></p>"; + $posthtml .= " &raquo; <a target=\"_blank\" href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$discussion->id\">$discussion->name</a></font></p>"; } $posthtml .= forum_make_mail_post($post, $userfrom, $userto, $course, false, $canreply, false, false); @@ -710,15 +622,11 @@ function forum_user_complete($course, $user, $mod, $forum) { if ($posts = forum_get_user_posts($forum->id, $user->id)) { foreach ($posts as $post) { - - /// Add the forum id to the post object - used by read tracking. - $post->forum = $forum->id; - forum_print_post($post, $course->id, $ownpost=false, $reply=false, $link=false, $rate=false); } } else { - echo "<p>".get_string("noposts", "forum")."</p>"; + echo "<P>".get_string("noposts", "forum")."</P>"; } } @@ -731,14 +639,14 @@ function forum_print_recent_activity($course, $isteacher, $timestart) { $heading = false; $content = false; - if (!$logs = get_records_select('log', 'time > \''.$timestart.'\' AND '. - 'course = \''.$course->id.'\' AND '. - 'module = \'forum\' AND '. - 'action LIKE \'add %\' ', 'time ASC')){ + if (!$logs = get_records_select("log", "time > '$timestart' AND ". + "course = '$course->id' AND ". + "module = 'forum' AND ". + "action LIKE 'add %' ", "time ASC")){ return false; } - $strftimerecent = get_string('strftimerecent'); + $strftimerecent = get_string("strftimerecent"); $isteacheredit = isteacheredit($course->id); $mygroupid = mygroupid($course->id); @@ -747,56 +655,62 @@ function forum_print_recent_activity($course, $isteacher, $timestart) { foreach ($logs as $log) { //Get post info, I'll need it later - if ($post = forum_get_post_from_log($log)) { - //Create a temp valid module structure (course,id) - $tempmod->course = $log->course; - $tempmod->id = $post->forum; - //Obtain the visible property from the instance - $modvisible = instance_is_visible('forum', $tempmod); - } + $post = forum_get_post_from_log($log); - //Only if the post exists and mod is visible - if ($post && $modvisible) { - /// Check whether this is for teachers only - $teacheronly = ''; - if ($post->forumtype == 'teacher') { - if ($isteacher) { - $teacheronly = 'class=\'teacheronly\''; - } else { - continue; - } - } - /// Check whether this is belongs to a discussion in a group that - /// should NOT be accessible to the current user + //Create a temp valid module structure (course,id) + $tempmod->course = $log->course; + $tempmod->id = $post->forum; + //Obtain the visible property from the instance + $modvisible = instance_is_visible($log->module, $tempmod); - if (!$isteacheredit and $post->groupid != -1) { /// Editing teachers or open discussions - if (!isset($cm[$post->forum])) { - $cm[$post->forum] = get_coursemodule_from_instance('forum', $post->forum, $course->id); - $groupmode[$post->forum] = groupmode($course, $cm[$post->forum]); - } - if ($groupmode[$post->forum]) { - if ($mygroupid != $post->groupid) { - continue; + //Only if the mod is visible + if ($modvisible) { + if ($post) { + /// Check whether this is for teachers only + $teacheronly = ""; + if ($forum = get_record("forum", "id", $post->forum)) { + if ($forum->type == "teacher") { + if ($isteacher) { + $teacheronly = "class=\"teacheronly\""; + } else { + continue; + } } } + /// Check whether this is belongs to a discussion in a group that + /// should NOT be accessible to the current user + + if (!$isteacheredit and $post->groupid != -1) { /// Editing teachers or open discussions + if (!isset($cm[$post->forum])) { + $cm[$forum->id] = get_coursemodule_from_instance("forum", $forum->id, $course->id); + $groupmode[$forum->id] = groupmode($course, $cm[$forum->id]); + } + if ($groupmode[$forum->id]) { + if ($mygroupid != $post->groupid) { + continue; + } + } + } + + if (! $heading) { + print_headline(get_string("newforumposts", "forum").":"); + $heading = true; + $content = true; + } + $date = userdate($post->modified, $strftimerecent); + $fullname = fullname($post, $isteacher); + echo "<p $teacheronly><font size=1>$date - $fullname<br>"; + echo "\"<a href=\"$CFG->wwwroot/mod/forum/$log->url\">"; + if (!empty($CFG->filterall)) { + $post->subject = filter_text("<nolink>$post->subject</nolink>", $course->id); + } + if ($log->action == "add discussion") { + echo "<b>$post->subject</b>"; + } else { + echo "$post->subject"; + } + echo "</a>\"</font></p>"; } - - if (! $heading) { - print_headline(get_string('newforumposts', 'forum').':'); - $heading = true; - $content = true; - } - $date = userdate($post->modified, $strftimerecent); - - $subjectclass = ($log->action == 'add discussion') ? ' bold' : ''; - - echo '<div class="head'.$teacheronly.'"><span class="date">'; - echo $date.'</span> - <span class="name">'.fullname($post, $isteacher); - echo '</span></div><div class="info'.$subjectclass.'">'; - echo '"<a href="'.$CFG->wwwroot.'/mod/forum/'.str_replace('&', '&amp;', $log->url).'">'; - $post->subject = break_up_long_words(format_string($post->subject,true)); - echo $post->subject; - echo '</a>"</div>'; } } @@ -877,13 +791,13 @@ function forum_get_participants($forumid) { global $CFG; //Get students from forum_subscriptions - $st_subscriptions = get_records_sql("SELECT DISTINCT u.id, u.id + $st_subscriptions = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}forum_subscriptions s WHERE s.forum = '$forumid' and u.id = s.userid"); //Get students from forum_posts - $st_posts = get_records_sql("SELECT DISTINCT u.id, u.id + $st_posts = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}forum_discussions d, {$CFG->prefix}forum_posts p @@ -892,7 +806,7 @@ function forum_get_participants($forumid) { u.id = p.userid"); //Get students from forum_ratings - $st_ratings = get_records_sql("SELECT DISTINCT u.id, u.id + $st_ratings = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}forum_discussions d, {$CFG->prefix}forum_posts p, @@ -970,39 +884,36 @@ function forum_get_child_posts($parent) { } -function forum_search_posts($searchterms, $courseid, $page=0, $recordsperpage=50, &$totalcount, $groupid=0, $extrasql='') { +function forum_search_posts($searchterms, $courseid, $page=0, $recordsperpage=50, &$totalcount) { /// Returns a list of posts found using an array of search terms /// eg word +word -word /// global $CFG; - require_once($CFG->libdir.'/searchlib.php'); if (!isteacher($courseid)) { $notteacherforum = "AND f.type <> 'teacher'"; + $forummodule = get_record("modules", "name", "forum"); $onlyvisible = " AND f.id = cm.instance AND cm.visible = 1 AND cm.module = $forummodule->id"; $onlyvisibletable = ", {$CFG->prefix}course_modules cm"; - if ($groupid) { - $separategroups = SEPARATEGROUPS; - $selectgroup = " AND (cm.groupmode <> '$separategroups' OR d.groupid = '$groupid')"; - } else { - $selectgroup = ''; - } - $selectcourse = " AND d.course = '$courseid'"; } else { $notteacherforum = ""; - $selectgroup = ''; + $onlyvisible = ""; $onlyvisibletable = ""; - if ($courseid == SITEID && isadmin()) { - $selectcourse = ''; - } else { - $selectcourse = " AND d.course = '$courseid'"; - } } - $limit = sql_paging_limit($page, $recordsperpage); + switch ($CFG->dbtype) { + case "mysql": + $limit = "LIMIT $page,$recordsperpage"; + break; + case "postgres7": + $limit = "LIMIT $recordsperpage OFFSET ".($page * $recordsperpage); + break; + default: + $limit = "LIMIT $recordsperpage,$page"; + } /// Some differences in syntax for PostgreSQL if ($CFG->dbtype == "postgres7") { @@ -1018,34 +929,43 @@ function forum_search_posts($searchterms, $courseid, $page=0, $recordsperpage=50 } $messagesearch = ""; - $searchstring = ""; - // Need to concat these back together for parser to work. - foreach($searchterms as $searchterm){ - if ($searchstring != "") { - $searchstring .= " "; + $subjectsearch = ""; + + + foreach ($searchterms as $searchterm) { + if (strlen($searchterm) < 2) { + continue; + } + if ($messagesearch) { + $messagesearch .= " AND "; + } + if ($subjectsearch) { + $subjectsearch .= " AND "; } - $searchstring .= $searchterm; - } - // We need to allow quoted strings for the search. The quotes *should* be stripped - // by the parser, but this should be examined carefully for security implications. - $searchstring = str_replace("\\\"","\"",$searchstring); - $parser = new search_parser(); - $lexer = new search_lexer($parser); - - if ($lexer->parse($searchstring)) { - $parsearray = $parser->get_parsed_array(); - $messagesearch = search_generate_SQL($parsearray,'p.message','p.subject','p.userid','u.id','u.firstname','u.lastname','p.modified', 'd.forum'); + if (substr($searchterm,0,1) == "+") { + $searchterm = substr($searchterm,1); + $messagesearch .= " p.message $REGEXP '(^|[^a-zA-Z0-9])$searchterm([^a-zA-Z0-9]|$)' "; + $subjectsearch .= " p.subject $REGEXP '(^|[^a-zA-Z0-9])$searchterm([^a-zA-Z0-9]|$)' "; + } else if (substr($searchterm,0,1) == "-") { + $searchterm = substr($searchterm,1); + $messagesearch .= " p.message $NOTREGEXP '(^|[^a-zA-Z0-9])$searchterm([^a-zA-Z0-9]|$)' "; + $subjectsearch .= " p.subject $NOTREGEXP '(^|[^a-zA-Z0-9])$searchterm([^a-zA-Z0-9]|$)' "; + } else { + $messagesearch .= " p.message $LIKE '%$searchterm%' "; + $subjectsearch .= " p.subject $LIKE '%$searchterm%' "; + } } $selectsql = "{$CFG->prefix}forum_posts p, {$CFG->prefix}forum_discussions d, {$CFG->prefix}user u, {$CFG->prefix}forum f $onlyvisibletable - WHERE ($messagesearch) + WHERE ($messagesearch OR $subjectsearch) AND p.userid = u.id - AND p.discussion = d.id $selectcourse - AND d.forum = f.id $notteacherforum $onlyvisible $selectgroup $extrasql"; + AND p.discussion = d.id + AND d.course = '$courseid' + AND d.forum = f.id $notteacherforum $onlyvisible"; $totalcount = count_records_sql("SELECT COUNT(*) FROM $selectsql"); @@ -1083,7 +1003,7 @@ function forum_mark_old_posts_as_mailed($endtime) { global $CFG; return execute_sql("UPDATE {$CFG->prefix}forum_posts SET mailed = '1' - WHERE created < '$endtime' AND mailed ='0'"); + WHERE created < '$endtime'"); } function forum_get_user_posts($forumid, $userid) { @@ -1109,32 +1029,26 @@ function forum_get_post_from_log($log) { if ($log->action == "add post") { - return get_record_sql("SELECT p.*, f.type AS forumtype, d.forum, d.groupid, - u.firstname, u.lastname, u.email, u.picture + return get_record_sql("SELECT p.*, d.forum, d.groupid, u.firstname, u.lastname, u.email, u.picture FROM {$CFG->prefix}forum_discussions d, {$CFG->prefix}forum_posts p, - {$CFG->prefix}forum f, {$CFG->prefix}user u WHERE p.id = '$log->info' AND d.id = p.discussion AND p.userid = u.id - AND u.deleted <> '1' - AND f.id = d.forum"); + AND u.deleted <> '1'"); } else if ($log->action == "add discussion") { - return get_record_sql("SELECT p.*, f.type AS forumtype, d.forum, d.groupid, - u.firstname, u.lastname, u.email, u.picture + return get_record_sql("SELECT p.*, d.forum, d.groupid, u.firstname, u.lastname, u.email, u.picture FROM {$CFG->prefix}forum_discussions d, {$CFG->prefix}forum_posts p, - {$CFG->prefix}forum f, {$CFG->prefix}user u WHERE d.id = '$log->info' AND d.firstpost = p.id AND p.userid = u.id - AND u.deleted <> '1' - AND f.id = d.forum"); + AND u.deleted <> '1'"); } return NULL; } @@ -1166,25 +1080,17 @@ function forum_get_user_grades($forumid) { } -function forum_count_discussion_replies($forum='0', $course='0', $user='0') { -// Returns an array of counts of replies to each discussion (optionally in one forum or course and/or user) +function forum_count_discussion_replies($forum="0") { +// Returns an array of counts of replies to each discussion (optionally in one forum) global $CFG; - $forumselect = $courseselect = $userselect = ''; - if ($forum) { $forumselect = " AND d.forum = '$forum'"; } - if ($course) { - $courseselect = " AND d.course = '$course'"; - } - if ($user) { - $userselect = " AND d.userid = '$user'"; - } return get_records_sql("SELECT p.discussion, (count(*)) as replies, max(p.id) as lastpostid FROM {$CFG->prefix}forum_posts p, {$CFG->prefix}forum_discussions d - WHERE p.parent > 0 $forumselect $courseselect $userselect + WHERE p.parent > 0 AND p.discussion = d.id GROUP BY p.discussion"); } @@ -1219,7 +1125,7 @@ function forum_count_unrated_posts($discussionid, $userid) { } function forum_get_discussions($forum="0", $forumsort="d.timemodified DESC", - $user=0, $fullpost=true, $visiblegroups=-1, $limit=0) { + $user=0, $fullpost=true, $visiblegroups=-1) { /// Get all discussions in a forum global $CFG; @@ -1229,12 +1135,7 @@ function forum_get_discussions($forum="0", $forumsort="d.timemodified DESC", $userselect = ""; } - if ($limit) { - $limit = " LIMIT $limit "; - } else { - $limit = ""; - } - + if ($visiblegroups == -1) { $groupselect = ""; } else { @@ -1250,26 +1151,22 @@ function forum_get_discussions($forum="0", $forumsort="d.timemodified DESC", $postdata = "p.*"; } - return get_records_sql("SELECT $postdata, d.name, d.timemodified, d.usermodified, d.groupid, - u.firstname, u.lastname, u.email, u.picture, - um.firstname AS umfirstname, um.lastname AS umlastname + return get_records_sql("SELECT $postdata, d.name, d.timemodified, d.usermodified, + u.firstname, u.lastname, u.email, u.picture FROM {$CFG->prefix}forum_discussions d, {$CFG->prefix}forum_posts p, - {$CFG->prefix}user um, {$CFG->prefix}user u WHERE d.forum = '$forum' AND p.discussion = d.id AND p.parent = 0 AND p.userid = u.id $groupselect $userselect - AND (d.usermodified = um.id OR d.usermodified = 0) - ORDER BY $forumsort $limit"); + ORDER BY $forumsort"); } function forum_get_user_discussions($courseid, $userid, $groupid=0) { /// Get all discussions started by a particular user in a course (or group) -/// This function no longer used ... global $CFG; if ($groupid) { @@ -1306,11 +1203,15 @@ function forum_subscribed_users($course, $forum, $groupid=0) { $groupselect = ""; } - if (forum_is_forcesubscribed($forum->id)) { - if ($forum->type == "teacher") { - return get_course_teachers($course->id); // Only teachers can be subscribed to teacher forums + if ($forum->forcesubscribe) { + if ($course->category) { + if ($forum->type == "teacher") { + return get_course_teachers($course->id); // Only teachers can be subscribed to teacher forums + } else { + return get_course_users($course->id); // Otherwise get everyone in the course + } } else { - return get_course_users($course->id); // Otherwise get everyone in the course + return get_site_users(); } } return get_records_sql("SELECT u.id, u.username, u.firstname, u.lastname, u.maildisplay, u.mailformat, u.maildigest, u.emailstop, @@ -1347,12 +1248,14 @@ function forum_get_course_forum($courseid, $type) { case "news": $forum->name = addslashes(get_string("namenews", "forum")); $forum->intro = addslashes(get_string("intronews", "forum")); - $forum->forcesubscribe = FORUM_FORCESUBSCRIBE; + $forum->forcesubscribe = 1; $forum->open = 1; // 0 - no, 1 - posts only, 2 - discuss and post $forum->assessed = 0; - if ($courseid == SITEID) { - $forum->name = get_string("sitenews"); - $forum->forcesubscribe = 0; + if ($site = get_site()) { + if ($courseid == $site->id) { + $forum->name = get_string("sitenews"); + $forum->forcesubscribe = 0; + } } break; case "social": @@ -1412,7 +1315,7 @@ function forum_make_mail_post(&$post, $user, $touser, $course, // Given the data about a posting, builds up the HTML to display it and // returns the HTML in a string. This is designed for sending via HTML email. - global $CFG; + global $THEME, $CFG; static $formattedtext; // Cached version of formatted text for a post static $formattedtextid; // The ID number of the post @@ -1426,43 +1329,43 @@ function forum_make_mail_post(&$post, $user, $touser, $course, $output .= '<table border="0" cellpadding="3" cellspacing="0" class="forumpost">'; - $output .= "<tr><td width=\"35\" valign=\"top\" class=\"forumpostpicture\">"; + $output .= "<tr><td bgcolor=\"$THEME->cellcontent2\" width=\"35\" valign=\"top\" class=\"forumpostpicture\">"; $output .= print_user_picture($user->id, $course->id, $user->picture, false, true); $output .= "</td>"; if ($post->parent) { - $output .= "<td nowrap=\"nowrap\" class=\"forumpostheader\">"; + $output .= "<td nowrap bgcolor=\"$THEME->cellheading\" class=\"forumpostheader\">"; } else { - $output .= "<td nowrap=\"nowrap\" class=\"forumpostheadertopic\">"; + $output .= "<td nowrap bgcolor=\"$THEME->cellheading2\" class=\"forumpostheadertopic\">"; } $output .= "<p>"; - $output .= "<font size=\"3\"><b>".format_string($post->subject)."</b></font><br />"; - $output .= "<font size=\"2\">"; + $output .= "<font size=3><b>$post->subject</b></font><br />"; + $output .= "<font size=2>"; $fullname = fullname($user, isteacher($course->id)); - $by->name = "<a href=\"$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id\">$fullname</a>"; + $by->name = "<a href=\"$CFG->wwwroot/user/view.php?id=$user->id&course=$course->id\">$fullname</a>"; $by->date = userdate($post->modified, "", $touser->timezone); $output .= get_string("bynameondate", "forum", $by); $output .= "</font></p></td></tr>"; - $output .= "<tr><td width=\"10\" class=\"forumpostside\">"; + $output .= "<tr><td bgcolor=\"$THEME->cellcontent2\" width=\"10\" class=\"forumpostside\">"; $output .= "&nbsp;"; - $output .= "</td><td class=\"forumpostmessage\">\n"; + $output .= "</td><td bgcolor=\"$THEME->cellcontent\" class=\"forumpostmessage\">\n"; if ($post->attachment) { $post->course = $course->id; $post->forum = get_field("forum_discussions", "forum", "id", $post->discussion); - $output .= "<div align=\"right\">"; + $output .= "<div align=right>"; $output .= forum_print_attachments($post, "html"); $output .= "</div>"; } $output .= $formattedtext; - $output .= "<p align=\"right\"><font size=\"-1\">"; + $output .= "<p align=right><font size=-1>"; if ($post->parent) { - $output .= "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$post->discussion&amp;parent=$post->parent\">".get_string("parent", "forum")."</a> | "; + $output .= "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$post->discussion&parent=$post->parent\">".get_string("parent", "forum")."</a> | "; } $age = time() - $post->created; @@ -1479,7 +1382,7 @@ function forum_make_mail_post(&$post, $user, $touser, $course, } $output .= "</p>"; - $output .= "<div align=\"right\"><p align=\"right\">"; + $output .= "<div align=right><p align=right>"; if ($link) { if ($post->replies == 1) { @@ -1487,7 +1390,7 @@ function forum_make_mail_post(&$post, $user, $touser, $course, } else { $replystring = get_string("repliesmany", "forum", $post->replies); } - $output .= "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$post->discussion\"><b>".get_string("discussthistopic", "forum")."</b></a> ($replystring)&nbsp;&nbsp;"; + $output .= "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$post->discussion\"><B>".get_string("discussthistopic", "forum")."</b></a> ($replystring)&nbsp;&nbsp;"; } $output .= "</p></div>"; if ($footer) { @@ -1500,96 +1403,77 @@ function forum_make_mail_post(&$post, $user, $touser, $course, function forum_print_post(&$post, $courseid, $ownpost=false, $reply=false, $link=false, - $ratings=NULL, $footer="", $highlight="", $post_read=-99) { + $ratings=NULL, $footer="", $highlight="") { - global $USER, $CFG; + global $THEME, $USER, $CFG; - static $stredit, $strdelete, $strreply, $strparent, $strprune, $strpruneheading, $threadedmode, $isteacher, $adminedit; - - static $strmarkread, $strmarkunread; + static $stredit, $strdelete, $strreply, $strparent, $threadedmode, $isteacher, $adminedit; if (empty($stredit)) { - $stredit = get_string('edit', 'forum'); - $strdelete = get_string('delete', 'forum'); - $strreply = get_string('reply', 'forum'); - $strparent = get_string('parent', 'forum'); - $strpruneheading = get_string('pruneheading', 'forum'); - $strprune = get_string('prune', 'forum'); + $stredit = get_string("edit", "forum"); + $strdelete = get_string("delete", "forum"); + $strreply = get_string("reply", "forum"); + $strparent = get_string("parent", "forum"); $threadedmode = (!empty($USER->mode) and ($USER->mode == FORUM_MODE_THREADED)); $isteacher = isteacher($courseid); $adminedit = (isadmin() and !empty($CFG->admineditalways)); - $strmarkread = get_string('markread', 'forum'); - $strmarkunread = get_string('markunread', 'forum'); } - if ($CFG->forum_trackreadposts) { - if ($post_read == -99) { // If we don't know yet... - /// The front page can display a news item post to non-logged in users. This should - /// always appear as 'read'. - $post_read = empty($USER) || forum_tp_is_post_read($USER->id, $post); - } - if ($post_read) { - $read_style = ' read'; - } else { - $read_style = ' unread'; - echo '<a name="unread"></a>'; - } + echo "<a name=\"$post->id\"></a>"; + if ($post->parent) { + echo '<table border="0" cellpadding="3" cellspacing="0" class="forumpost">'; } else { - $read_style = ''; + echo '<table border="0" cellpadding="3" cellspacing="0" class="forumpost" width="100%">'; } - echo '<a name="'.$post->id.'"></a>'; - echo '<table cellspacing="0" class="forumpost'.$read_style.'">'; - - echo '<tr class="header"><td class="picture left">'; + echo "<tr><td bgcolor=\"$THEME->cellcontent2\" class=\"forumpostpicture\" width=\"35\" valign=\"top\">"; print_user_picture($post->userid, $courseid, $post->picture); - echo '</td>'; + echo "</td>"; if ($post->parent) { - echo '<td class="topic">'; + echo "<td bgcolor=\"$THEME->cellheading\" class=\"forumpostheader\" width=\"100%\">"; } else { - echo '<td class="topic starter">'; + echo "<td bgcolor=\"$THEME->cellheading2\" class=\"forumpostheadertopic\" width=\"100%\">"; } - echo '<div class="subject">'.$post->subject.'</div>'; + if (!empty($CFG->filterall)) { /// Put the subject through the filters + $post->subject = filter_text("<nolink>$post->subject</nolink>", $courseid); + } + echo "<p>"; + echo "<font size=3><b>$post->subject</b></font><br />"; + echo "<font size=2>"; - echo '<div class="author">'; $fullname = fullname($post, $isteacher); - $by->name = '<a href="'.$CFG->wwwroot.'/user/view.php?id='. - $post->userid.'&amp;course='.$courseid.'">'.$fullname.'</a>'; + $by->name = "<a href=\"$CFG->wwwroot/user/view.php?id=$post->userid&course=$courseid\">$fullname</a>"; $by->date = userdate($post->modified); - print_string('bynameondate', 'forum', $by); - echo '</div></td></tr>'; + print_string("bynameondate", "forum", $by); - echo '<tr><td class="left side">'; + echo "</font></p></td></tr>"; + echo "<tr><td bgcolor=\"$THEME->cellcontent2\" valign=\"top\" class=\"forumpostside\" width=\"10\">"; if ($group = user_group($courseid, $post->userid)) { print_group_picture($group, $courseid, false, false, true); } else { - echo '&nbsp;'; + echo "&nbsp;"; } - -/// Actual content - - echo '</td><td class="content">'."\n"; + echo "</td><td bgcolor=\"$THEME->cellcontent\" class=\"forumpostmessage\">\n"; if ($post->attachment) { $post->course = $courseid; - $post->forum = get_field('forum_discussions', 'forum', 'id', $post->discussion); - echo '<div class="attachments">'; + $post->forum = get_field("forum_discussions", "forum", "id", $post->discussion); + echo "<div align=\"right\">"; $attachedimages = forum_print_attachments($post); - echo '</div>'; + echo "</div>"; } else { - $attachedimages = ''; + $attachedimages = ""; } - if ($link and (strlen(strip_tags($post->message)) > $CFG->forum_longpost)) { // Print shortened version echo format_text(forum_shorten_post($post->message), $post->format, NULL, $courseid); $numwords = count_words(strip_tags($post->message)); - echo '<p><a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'">'; - echo get_string('readtherest', 'forum'); - echo '</a> ('.get_string('numwords', '', $numwords).')...</p>'; + echo "<p><a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$post->discussion\">"; + echo get_string("readtherest", "forum"); + echo "</a> (".get_string("numwords", "", $numwords).")...</p>"; } else { // Print whole message if ($highlight) { @@ -1600,72 +1484,46 @@ function forum_print_post(&$post, $courseid, $ownpost=false, $reply=false, $link echo $attachedimages; } - -/// Commands - - $commands = array(); - - if ($CFG->forum_trackreadposts) { - /// SPECIAL CASE: The front page can display a news item post to non-logged in users. - /// Don't display the mark read / unread controls in this case. - if ($CFG->forum_usermarksread && !empty($USER)) { - if ($post_read) { - $mcmd = '&amp;mark=unread&amp;postid='.$post->id; - $mtxt = $strmarkunread; - } else { - $mcmd = '&amp;mark=read&amp;postid='.$post->id; - $mtxt = $strmarkread; - } - if ($threadedmode) { - $commands[] = '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='. - $post->discussion.'&amp;parent='.$post->id.$mcmd.'">'.$mtxt.'</a>'; - } else { - $commands[] = '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='. - $post->discussion.$mcmd.'#'.$post->id.'">'.$mtxt.'</a>'; - } - } - } + echo "<p align=right><font size=-1>"; if ($post->parent) { if ($threadedmode) { - $commands[] = '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='. - $post->discussion.'&amp;parent='.$post->parent.'">'.$strparent.'</a>'; + echo "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$post->discussion&parent=$post->parent\">$strparent</a> | "; } else { - $commands[] = '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='. - $post->discussion.'#'.$post->parent.'">'.$strparent.'</a>'; + echo "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$post->discussion#$post->parent\">$strparent</a> | "; } } $age = time() - $post->created; if ($ownpost or $adminedit) { if (($age < $CFG->maxeditingtime) or $adminedit) { - $commands[] = '<a href="'.$CFG->wwwroot.'/mod/forum/post.php?edit='.$post->id.'">'.$stredit.'</a>'; + echo "<a href=\"$CFG->wwwroot/mod/forum/post.php?edit=$post->id\">$stredit</a> | "; } } if (isteacheredit($courseid) and $post->parent) { - $commands[] = '<a href="'.$CFG->wwwroot.'/mod/forum/post.php?prune='.$post->id. - '" title="'.$strpruneheading.'">'.$strprune.'</a>'; + echo "<a href=\"$CFG->wwwroot/mod/forum/post.php?prune=$post->id\" title=\"".get_string('pruneheading', 'forum').'">'. + get_string("prune", "forum")."</a> | "; } - if (($ownpost and $age < $CFG->maxeditingtime) or $isteacher) { - $commands[] = '<a href="'.$CFG->wwwroot.'/mod/forum/post.php?delete='.$post->id.'">'.$strdelete.'</a>'; + if ($ownpost or $isteacher) { + echo "<a href=\"$CFG->wwwroot/mod/forum/post.php?delete=$post->id\">$strdelete</a>"; + if ($reply) { + echo " | "; + } else { + echo "&nbsp;&nbsp;"; + } } - if ($reply) { - $commands[] = '<a href="'.$CFG->wwwroot.'/mod/forum/post.php?reply='.$post->id.'">'.$strreply.'</a>'; + echo "<a href=\"$CFG->wwwroot/mod/forum/post.php?reply=$post->id\">$strreply</a>"; + echo "&nbsp;&nbsp;"; } + echo "</p>"; - echo '<div class="commands">'; - echo implode(' | ', $commands); - echo '</div>'; - - -/// Ratings + echo "<div align=right><p align=right>"; $ratingsmenuused = false; if (!empty($ratings) and !empty($USER->id)) { - echo '<div class="ratings">'; $useratings = true; if ($ratings->assesstimestart and $ratings->assesstimefinish) { if ($post->created < $ratings->assesstimestart or $post->created > $ratings->assesstimefinish) { @@ -1678,7 +1536,6 @@ function forum_print_post(&$post, $courseid, $ownpost=false, $reply=false, $link if (($isteacher or $ratings->assesspublic) and !$mypost) { forum_print_ratings_mean($post->id, $ratings->scale, $isteacher); if (!empty($ratings->allow)) { - echo '&nbsp;'; forum_print_rating_menu($post->id, $USER->id, $ratings->scale); $ratingsmenuused = true; } @@ -1691,117 +1548,72 @@ function forum_print_post(&$post, $courseid, $ownpost=false, $reply=false, $link $ratingsmenuused = true; } } - echo '</div>'; } -/// Link to post if required - if ($link) { - echo '<div class="link">'; if ($post->replies == 1) { - $replystring = get_string('repliesone', 'forum', $post->replies); + $replystring = get_string("repliesone", "forum", $post->replies); } else { - $replystring = get_string('repliesmany', 'forum', $post->replies); + $replystring = get_string("repliesmany", "forum", $post->replies); } - echo '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'">'. - get_string('discussthistopic', 'forum').'</a>&nbsp;('.$replystring.')'; - echo '</div>'; + echo "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$post->discussion\"><b>". + get_string("discussthistopic", "forum")."</b></a> ($replystring)&nbsp;&nbsp;"; } - + echo "</p>"; if ($footer) { - echo '<div class="footer">'.$footer.'</div>'; - } - echo '</td></tr></table>'."\n\n"; - - if ($CFG->forum_trackreadposts && !$CFG->forum_usermarksread && !empty($post->forum)) { - forum_tp_mark_post_read($USER->id, $post, $post->forum); + echo "<p>$footer</p>"; } + echo "</div>"; + echo "</td></tr>\n</table>\n\n"; return $ratingsmenuused; } -function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring="") { +function forum_print_discussion_header(&$post, $forum, $datestring="") { /// This function prints the overview of a discussion in the forum listing. /// It needs some discussion information and some post information, these -/// happen to be combined for efficiency in the $post parameter by the function +/// happen to be combined for efficiency in the $post parameter by the function /// that calls this one /// forum_print_latest_discussions() - global $USER, $CFG; + global $THEME, $USER, $CFG; - static $rowcount; - - if (!isset($rowcount)) { - $rowcount = 0; - } else { - $rowcount = ($rowcount + 1) % 2; + if (!empty($CFG->filterall)) { + $post->subject = filter_text("<nolink>$post->subject</nolink>", $forum->course); } - $post->subject = format_string($post->subject,true); - - echo "\n\n"; - echo '<tr class="discussion r'.$rowcount.'">'; + echo "<tr class=\"forumpostheader\">"; // Topic - echo '<td class="topic starter">'; - echo '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'">'.$post->subject.'</a>'; + echo "<td bgcolor=\"$THEME->cellheading2\" class=\"forumpostheadertopic\" width=\"100%\">"; + echo "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$post->discussion\">$post->subject</a>"; echo "</td>\n"; // Picture - echo '<td class="picture">'; + echo "<td bgcolor=\"$THEME->cellcontent2\" class=\"forumpostheaderpicture\" width=35>"; print_user_picture($post->userid, $forum->course, $post->picture); echo "</td>\n"; // User name $fullname = fullname($post, isteacher($forum->course)); - echo '<td class="author">'; - echo '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$post->userid.'&amp;course='.$forum->course.'">'.$fullname.'</a>'; + echo "<td bgcolor=\"$THEME->cellcontent2\" class=\"forumpostheadername\" align=left nowrap>"; + echo "<a href=\"$CFG->wwwroot/user/view.php?id=$post->userid&course=$forum->course\">$fullname</a>"; echo "</td>\n"; - // Group picture - if ($group !== -1) { // Groups are active - group is a group data object or NULL - echo '<td class="picture group">'; - if (!empty($group->picture) and empty($group->hidepicture)) { - print_group_picture($group, $forum->course, false, false, true); - } else if (isset($group->id)) { - echo '<a href="'.$CFG->wwwroot.'/course/group.php?id='.$forum->course.'&amp;group='.$group->id.'">'.$group->name.'</a>'; - } + if ($forum->open or $forum->type == "teacher") { // Show the column with replies + echo "<td bgcolor=\"$THEME->cellcontent2\" class=\"forumpostheaderreplies\" align=center nowrap>"; + echo "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$post->discussion\">$post->replies</a>"; echo "</td>\n"; } - if ($forum->open or $forum->type == 'teacher') { // Show the column with replies - echo '<td class="replies">'; - echo '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'">'; - echo $post->replies.'</a>'; - echo "</td>\n"; - - if ($CFG->forum_trackreadposts) { - echo '<td class="replies">'; - echo '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'#unread">'; - if ($post->unread > 0) { - echo '<span class="unread">'.$post->unread.'</span>'; - } else { - echo $post->unread; - } - echo '</a>'; - echo "</td>\n"; - } - - } - - echo '<td class="lastpost">'; + echo "<td bgcolor=\"$THEME->cellcontent2\" class=\"forumpostheaderdate\" align=right nowrap>"; $usedate = (empty($post->timemodified)) ? $post->modified : $post->timemodified; // Just in case - $parenturl = (empty($post->lastpostid)) ? '' : '&amp;parent='.$post->lastpostid; - $usermodified->firstname = $post->umfirstname; - $usermodified->lastname = $post->umlastname; - echo '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$post->usermodified.'&amp;course='.$forum->course.'">'. - fullname($usermodified).'</a><br />'; - echo '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.$parenturl.'">'. + echo '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'&parent='.$post->lastpostid.'">'. userdate($usedate, $datestring).'</a>'; echo "</td>\n"; - echo "</tr>\n\n"; + echo "</tr>\n"; } @@ -1977,24 +1789,40 @@ function forum_print_rating_menu($postid, $userid, $scale) { function forum_print_mode_form($discussion, $mode) { GLOBAL $FORUM_LAYOUT_MODES; - echo "<div align=\"center\">"; - popup_form("discuss.php?d=$discussion&amp;mode=", $FORUM_LAYOUT_MODES, "mode", $mode, ""); - echo "</div>\n"; + echo "<center><p>"; + popup_form("discuss.php?d=$discussion&mode=", $FORUM_LAYOUT_MODES, "mode", $mode, ""); + echo "</p></center>\n"; } -function forum_search_form($course, $search='') { +function forum_print_search_form($course, $search="", $return=false, $type="") { global $CFG; - $output = '<table border="0" cellpadding="0" cellspacing="0"><tr><td nowrap="nowrap">'; - $output .= helpbutton('search', get_string('search'), 'moodle', true, false, '', true); - $output .= '&nbsp;<form name="search" action="'.$CFG->wwwroot.'/mod/forum/search.php" style="display:inline">'; - $output .= '<input name="search" type="text" size="18" value="'.$search.'" alt="search" />'; - $output .= '<input value="'.get_string('searchforums', 'forum').'" type="submit" />'; - $output .= '<input name="id" type="hidden" value="'.$course->id.'" />'; - $output .= '</form>'; - $output .= '</td></tr></table>'; + if ($type == "plain") { + $output = "<table border=0 cellpadding=0 cellspacing=0><tr><td nowrap>"; + $output .= "<form name=search action=\"$CFG->wwwroot/mod/forum/search.php\">"; + $output .= "<font size=\"-1\">"; + $output .= "<input name=search type=text size=15 value=\"$search\">"; + $output .= "<input value=\"".get_string("searchforums", "forum")."\" type=submit>"; + $output .= "</font>"; + $output .= "<input name=id type=hidden value=\"$course->id\">"; + $output .= "</form>"; + $output .= "</td></tr></table>"; + } else { + $output = "<table border=0 cellpadding=10 cellspacing=0><tr><td align=center>"; + $output .= "<form name=search action=\"$CFG->wwwroot/mod/forum/search.php\">"; + $output .= "<font size=\"-1\">"; + $output .= "<input name=search type=text size=15 value=\"$search\"><br>"; + $output .= "<input value=\"".get_string("searchforums", "forum")."\" type=submit>"; + $output .= "</font>"; + $output .= "<input name=id type=hidden value=\"$course->id\">"; + $output .= "</form>"; + $output .= "</td></tr></table>"; + } - return $output; + if ($return) { + return $output; + } + echo $output; } @@ -2065,8 +1893,6 @@ function forum_move_attachments($discussion, $forumid) { global $CFG; - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $return = true; if ($posts = get_records_select("forum_posts", "discussion = '$discussion->id' AND attachment <> ''")) { @@ -2078,13 +1904,9 @@ function forum_move_attachments($discussion, $forumid) { $newpost = $oldpost; $newpost->forum = $forumid; $newpostdir = forum_file_area($newpost); - $files = get_directory_list($oldpostdir); // get it before we rename it. if (! @rename($oldpostdir, $newpostdir)) { $return = false; } - foreach ($files as $file) { - clam_change_log($oldpostdir.'/'.$file,$newpostdir.'/'.$file); - } } } } @@ -2114,7 +1936,7 @@ function forum_print_attachments($post, $return=NULL) { } else { $ffurl = "file.php?file=/$filearea/$file"; } - $image = "<img border=\"0\" src=\"$CFG->pixpath/f/$icon\" height=\"16\" width=\"16\" alt=\"$strpopupwindow\" />"; + $image = "<img border=\"0\" src=\"$CFG->pixpath/f/$icon\" height=\"16\" width=\"16\" alt=\"$strpopupwindow\">"; if ($return == "html") { $output .= "<a href=\"$CFG->wwwroot/$ffurl\">$image</a> "; @@ -2125,7 +1947,7 @@ function forum_print_attachments($post, $return=NULL) { } else { if ($icon == "image.gif") { // Image attachments don't get printed as links - $imagereturn .= "<br /><img src=\"$CFG->wwwroot/$ffurl\" alt=\"\" />"; + $imagereturn .= "<br /><img src=\"$CFG->wwwroot/$ffurl\">"; } else { link_to_popup_window("/$ffurl", "attachment", $image, 500, 500, $strattachment); echo "<a href=\"$CFG->wwwroot/$ffurl\">$file</a>"; @@ -2142,17 +1964,18 @@ function forum_print_attachments($post, $return=NULL) { return $imagereturn; } -/** - * If successful, this function returns the name of the file - * @param $post is a full post record, including course and forum - * @param $newfile is a full upload array from $_FILES - * @param $message is a string to hold the messages. - */ -function forum_add_attachment($post, $inputname,&$message) { +function forum_add_attachment($post, $newfile) { +// $post is a full post record, including course and forum +// $newfile is a full upload array from $_FILES +// If successful, this function returns the name of the file global $CFG; + if (empty($newfile['name'])) { + return ""; + } + if (!$forum = get_record("forum", "id", $post->forum)) { return ""; } @@ -2161,30 +1984,50 @@ function forum_add_attachment($post, $inputname,&$message) { return ""; } - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $um = new upload_manager($inputname,true,false,$course,false,$forum->maxbytes,true,true); - $dir = forum_file_area_name($post); - if ($um->process_file_uploads($dir)) { - $message .= $um->get_errors(); - return $um->get_new_filename(); + $maxbytes = get_max_upload_file_size($CFG->maxbytes, $course->maxbytes, $forum->maxbytes); + + $newfile_name = clean_filename($newfile['name']); + + if (valid_uploaded_file($newfile)) { + if ($maxbytes and $newfile['size'] > $maxbytes) { + return ""; + } + if (! $newfile_name) { + notify("This file had a wierd filename and couldn't be uploaded"); + + } else if (! $dir = forum_file_area($post)) { + notify("Attachment could not be stored"); + $newfile_name = ""; + + } else { + if (move_uploaded_file($newfile['tmp_name'], "$dir/$newfile_name")) { + chmod("$dir/$newfile_name", $CFG->directorypermissions); + forum_delete_old_attachments($post, $newfile_name); + } else { + notify("An error happened while saving the file on the server"); + $newfile_name = ""; + } + } + } else { + $newfile_name = ""; } - $message .= $um->get_errors(); + + return $newfile_name; } -function forum_add_new_post($post,&$message) { - - global $USER, $CFG; +function forum_add_new_post($post) { $post->created = $post->modified = time(); $post->mailed = "0"; - $post->userid = $USER->id; + + $newfile = $post->attachment; $post->attachment = ""; if (! $post->id = insert_record("forum_posts", $post)) { return false; } - if ($post->attachment = forum_add_attachment($post, 'attachment',$message)) { + if ($post->attachment = forum_add_attachment($post, $newfile)) { set_field("forum_posts", "attachment", $post->attachment, "id", $post->id); } @@ -2192,36 +2035,18 @@ function forum_add_new_post($post,&$message) { set_field("forum_discussions", "timemodified", $post->modified, "id", $post->discussion); set_field("forum_discussions", "usermodified", $post->userid, "id", $post->discussion); - if ($CFG->forum_trackreadposts) { - forum_tp_mark_post_read($post->userid, $post, $post->forum); - } - return $post->id; } -function forum_update_post($post,&$message) { - - global $USER, $CFG; +function forum_update_post($post) { $post->modified = time(); - if ($USER->id != $post->userid) { // Not the original author - $data->name = '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$USER->id.'&course='.$post->course.'">'. - fullname($USER).'</a>'; - $data->date = userdate($post->modified); - $editedby = get_string('editedby', 'forum', $data); - if ($post->format == FORMAT_HTML) { - $post->message .= '<p>(<i><span class="edited">'.$editedby.'</span></i>)</p>'; - } else { - $post->message .= "\n\n(".$editedby.')'; - } - } - if (!$post->parent) { // Post is a discussion starter - update discussion title too set_field("forum_discussions", "name", $post->subject, "id", $post->discussion); } - if ($newfilename = forum_add_attachment($post, 'attachment',$message)) { + if ($newfilename = forum_add_attachment($post, $post->attachment)) { $post->attachment = $newfilename; } else { unset($post->attachment); @@ -2231,18 +2056,14 @@ function forum_update_post($post,&$message) { set_field("forum_discussions", "timemodified", $post->modified, "id", $post->discussion); set_field("forum_discussions", "usermodified", $post->userid, "id", $post->discussion); - if ($CFG->forum_trackreadposts) { - forum_tp_mark_post_read($post->userid, $post, $post->forum); - } - return update_record("forum_posts", $post); } -function forum_add_discussion($discussion,&$message) { +function forum_add_discussion($discussion) { // Given an object containing all the necessary data, // create a new discussion and return the id - GLOBAL $USER, $CFG; + GLOBAL $USER; $timenow = time(); @@ -2266,7 +2087,7 @@ function forum_add_discussion($discussion,&$message) { return 0; } - if ($post->attachment = forum_add_attachment($post, 'attachment',$message)) { + if ($post->attachment = forum_add_attachment($post, $discussion->attachment)) { set_field("forum_posts", "attachment", $post->attachment, "id", $post->id); //ignore errors } @@ -2276,25 +2097,20 @@ function forum_add_discussion($discussion,&$message) { $discussion->firstpost = $post->id; $discussion->timemodified = $timenow; $discussion->usermodified = $post->userid; - $discussion->userid = $USER->id; - if (! $post->discussion = insert_record("forum_discussions", $discussion) ) { + if (! $discussion->id = insert_record("forum_discussions", $discussion) ) { delete_records("forum_posts", "id", $post->id); return 0; } // Finally, set the pointer on the post. - if (! set_field("forum_posts", "discussion", $post->discussion, "id", $post->id)) { + if (! set_field("forum_posts", "discussion", $discussion->id, "id", $post->id)) { delete_records("forum_posts", "id", $post->id); - delete_records("forum_discussions", "id", $post->discussion); + delete_records("forum_discussions", "id", $discussion->id); return 0; } - if ($CFG->forum_trackreadposts) { - forum_tp_mark_post_read($post->userid, $post, $post->forum); - } - - return $post->discussion; + return $discussion->id; } @@ -2316,8 +2132,6 @@ function forum_delete_discussion($discussion) { } } - forum_tp_delete_read_records(-1, -1, $discussion->id); - if (! delete_records("forum_discussions", "id", "$discussion->id")) { $result = false; } @@ -2329,9 +2143,6 @@ function forum_delete_discussion($discussion) { function forum_delete_post($post) { if (delete_records("forum_posts", "id", $post->id)) { delete_records("forum_ratings", "post", $post->id); // Just in case - - forum_tp_delete_read_records(-1, $post->id); - if ($post->attachment) { $discussion = get_record("forum_discussions", "id", $post->discussion); $post->course = $discussion->course; @@ -2343,12 +2154,88 @@ function forum_delete_post($post) { return false; } + +function forum_print_user_discussions($courseid, $userid, $groupid=0) { + global $CFG, $USER; + + $maxdiscussions = 10; + $countdiscussions = 0; + + $visible = array(); + + $course = get_record("course", "id", $courseid); + + $currentgroup = get_current_group($courseid); + $isteacheredit = isteacheredit($courseid); + + if ($discussions = forum_get_user_discussions($courseid, $userid, $groupid=0)) { + + $user = get_record("user", "id", $userid); + $fullname = fullname($user, isteacher($courseid)); + + $replies = forum_count_discussion_replies(); + + echo "<hr />"; + + print_heading( get_string("discussionsstartedbyrecent", "forum", $fullname) ); + + foreach ($discussions as $discussion) { + $countdiscussions++; + if ($countdiscussions > $maxdiscussions) { + break; + } + if (($discussion->forumtype == "teacher") and !isteacher($courseid)) { + continue; + } + if(!isset($visible[$discussion->forumid])) { + $mod = New stdClass; + $mod->course = $courseid; + $mod->id = $discussion->forumid; + $visible[$discussion->forumid] = instance_is_visible('forum', $mod); + } + if(!$visible[$discussion->forumid] && !isteacheredit($courseid, $USER->id)) { + continue; + } + + /// Check whether this is belongs to a discussion in a group that + /// should NOT be accessible to the current user + + if (!$isteacheredit and $discussion->groupid != -1) { /// Editing teachers or open discussions + if (!isset($cm[$discussion->forum])) { + $cm[$discussion->forum] = get_coursemodule_from_instance("forum", $discussion->forum, $courseid); + $groupmode[$discussion->forum] = groupmode($course, $cm[$discussion->forum]); + } + if ($groupmode[$discussion->forum] == SEPARATEGROUPS) { + if ($currentgroup != $discussion->groupid) { + continue; + } + } + } + + if (!empty($replies[$discussion->discussion])) { + $discussion->replies = $replies[$discussion->discussion]->replies; + } else { + $discussion->replies = 0; + } + $inforum = get_string("inforum", "forum", "<A HREF=\"$CFG->wwwroot/mod/forum/view.php?f=$discussion->forumid\">$discussion->forumname</A>"); + $discussion->subject .= " ($inforum)"; + if (!empty($USER->id)) { + $ownpost = ($discussion->userid == $USER->id); + } else { + $ownpost = false; + } + forum_print_post($discussion, $courseid, $ownpost, $reply=0, $link=1, $assessed=false); + echo "<BR>\n"; + } + } +} + function forum_forcesubscribe($forumid, $value=1) { return set_field("forum", "forcesubscribe", $value, "id", $forumid); } function forum_is_forcesubscribed($forumid) { - return (get_field("forum", "forcesubscribe", "id", $forumid) == 1); + return get_field("forum", "forcesubscribe", "id", $forumid); } function forum_is_subscribed($userid, $forumid) { @@ -2447,157 +2334,152 @@ function forum_user_can_post($forum, $user=NULL) { } -function forum_print_latest_discussions($course, $forum, $maxdiscussions=5, $displayformat='plain', $sort='', - $currentgroup=-1, $groupmode=-1, $page=-1) { +function forum_print_latest_discussions($forum_id=0, $forum_numdiscussions=5, + $forum_style="plain", $forum_sort="", + $currentgroup=0, $groupmode=-1, $page=-1) { global $CFG, $USER; + if ($forum_id) { + if (! $forum = get_record("forum", "id", $forum_id)) { + error("Forum ID was incorrect"); + } + if (! $course = get_record("course", "id", $forum->course)) { + error("Could not find the course this forum belongs to!"); + } -/// Sort out some defaults + if ($course->category) { + require_login($course->id); + } - if ((!$maxdiscussions) && ($displayformat == 'plain')) { - $displayformat = 'header'; // Abbreviate display by default + } else { + if (! $course = get_record("course", "category", 0)) { + error("Could not find a top-level course!"); + } + if (! $forum = forum_get_course_forum($course->id, "news")) { + error("Could not find or create a main forum in this course (id $course->id)"); + } } - $fullpost = false; - if ($displayformat == 'plain') { - $fullpost = true; - } - - -/// Decide if current user is allowed to see ALL the current discussions or not - -/// First check the group stuff - if ($groupmode == -1) { /// We need to reconstruct groupmode because none was given - if ($cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { + if ($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) { $groupmode = groupmode($course, $cm); } else { $groupmode = SEPARATEGROUPS; } } + - if ($currentgroup == -1) { /// We need to reconstruct currentgroup because none was given - $currentgroup = get_current_group($course->id); + if (forum_user_can_post_discussion($forum, $currentgroup)) { + echo "<p align=center>"; + echo "<a href=\"$CFG->wwwroot/mod/forum/post.php?forum=$forum->id\">"; + if ($forum->type == "news") { + echo get_string("addanewtopic", "forum")."</a>..."; + } else { + echo get_string("addanewdiscussion", "forum")."</a>..."; + } + echo "</p>\n"; } - if (!$currentgroup and ($groupmode != SEPARATEGROUPS or isteacheredit($course->id)) ) { + if ((!$forum_numdiscussions) && ($forum_style == "plain")) { + $forum_style = "header"; // Abbreviate display by default + } + + if ($forum_style == "minimal") { + $forum_sort = "p.modified DESC"; + } + + $fullpost = false; + if ($forum_style == "plain") { + $fullpost = true; + } + + +/// Decides if current user is allowed to see ALL the current discussions or not + + if (!$currentgroup and ($groupmode != SEPARATEGROUPS or isteacheredit($forum->course)) ) { $visiblegroups = -1; } else { $visiblegroups = $currentgroup; } -/// If the user can post discussions, then this is a good place to put the button for it - - if (forum_user_can_post_discussion($forum, $currentgroup)) { - echo '<div class="singlebutton forumaddnew">'; - echo "<form name=\"newdiscussionform\" method=\"get\" action=\"$CFG->wwwroot/mod/forum/post.php\">"; - echo "<input type=\"hidden\" name=\"forum\" value=\"$forum->id\" />"; - echo '<input type="submit" value="'; - echo ($forum->type == 'news') ? get_string('addanewtopic', 'forum') : get_string('addanewdiscussion', 'forum'); - echo '" />'; - echo '</form>'; - echo "</div>\n"; - } - - /// Get all the recent discussions we're allowed to see - if (! $discussions = forum_get_discussions($forum->id, $sort, 0, $fullpost, $visiblegroups) ) { - echo '<div class="forumnodiscuss">'; - if ($forum->type == 'news') { - echo '('.get_string('nonews', 'forum').')'; + if (! $discussions = forum_get_discussions($forum->id, $forum_sort, 0, $fullpost, $visiblegroups) ) { + if ($forum->type == "news") { + echo "<p align=center><b>(".get_string("nonews", "forum").")</b></p>"; } else { - echo '('.get_string('nodiscussions', 'forum').')'; + echo "<p align=center><b>(".get_string("nodiscussions", "forum").")</b></p>"; } - echo "</div>\n"; return; } -/// If no discussions then don't use paging (to avoid some divide by 0 errors) - - if ($maxdiscussions <= 0) { + //If forum_numdiscussions <= 0 don't paging (to avoid some divided by 0 errors) + if ($forum_numdiscussions <= 0) { $page = -1; - $maxdiscussions = 0; + $forum_numdiscussions = 0; } -/// If we want paging - + //If we want paging if ($page != -1) { ///Get the number of discussions found $numdiscussions = count($discussions); ///Show the paging bar - print_paging_bar($numdiscussions, $page, $maxdiscussions, "view.php?f=$forum->id&"); + echo "<center>"; + print_paging_bar($numdiscussions, $page, $forum_numdiscussions, "view.php?f=$forum->id&"); + echo "</center>"; //Calculate the page "window" - $pagestart = ($page * $maxdiscussions) + 1; - $pageend = $pagestart + $maxdiscussions - 1; + $pagestart = ($page * $forum_numdiscussions) + 1; + $pageend = $pagestart + $forum_numdiscussions - 1; } - $replies = forum_count_discussion_replies($forum->id); $canreply = forum_user_can_post($forum); - $discussioncount = 0; $olddiscussionlink = false; - $strdatestring = get_string('strftimerecentfull'); + $strdatestring = get_string("strftimerecentfull"); - if ($displayformat == 'header') { - echo '<table cellspacing="0" class="forumheaderlist">'; - echo '<thead>'; - echo '<tr>'; - echo '<th class="header topic">'.get_string('discussion', 'forum').'</th>'; - echo '<th class="header author" colspan="2">'.get_string('startedby', 'forum').'</th>'; - if ($groupmode > 0) { - echo '<th class="header group">'.get_string('group').'</th>'; + if ($forum_style == "minimal") { + $strftimerecent = get_string("strftimerecent"); + $strmore = get_string("more", "forum"); + } + + if ($forum_style == "header") { + echo "<table width=\"100%\" border=0 cellpadding=3 cellspacing=1 class=\"forumheaderlist\">"; + echo "<tr class=\"forumpostheader\">"; + echo "<th>".get_string("discussion", "forum")."</th>"; + echo "<th colspan=2>".get_string("startedby", "forum")."</th>"; + if ($forum->open or $forum->type == "teacher") { + echo "<th>".get_string("replies", "forum")."</th>"; } - if ($forum->open or $forum->type == 'teacher') { - echo '<th class="header replies">'.get_string('replies', 'forum').'</th>'; - } - if ($CFG->forum_trackreadposts) { - echo '<th class="header replies">'.get_string('unread', 'forum').'</th>'; - } - echo '<th class="header lastpost">'.get_string('lastpost', 'forum').'</th>'; - echo '</tr>'; - echo '</thead>'; - echo '<tbody>'; + echo "<th>".get_string("lastpost", "forum")."</th>"; + echo "</tr>"; } foreach ($discussions as $discussion) { $discussioncount++; - if ($page != -1) { // We are using paging - if ($discussioncount < $pagestart) { // Not there yet + //If we want paging + if ($page != -1) { + //And we aren't inside the page "window" + if ($discussioncount < $pagestart || $discussioncount > $pageend) { + //Skip this discussion continue; } - if ($discussioncount > $pageend) { // All done, finish the loop - break; - } //Without paging, old approach - } else if ($maxdiscussions && ($discussioncount > $maxdiscussions)) { + } else if ($forum_numdiscussions && ($discussioncount > $forum_numdiscussions)) { $olddiscussionlink = true; break; } - if (!empty($replies[$discussion->discussion])) { $discussion->replies = $replies[$discussion->discussion]->replies; $discussion->lastpostid = $replies[$discussion->discussion]->lastpostid; } else { $discussion->replies = 0; } - - if ($CFG->forum_trackreadposts) { - /// SPECIAL CASE: The front page can display a news item post to non-logged in users. - /// All posts are read in this case. - if (empty($USER)) { - $discussion->unread = 0; - } else { - $discussion->unread = forum_tp_count_discussion_unread_posts($USER->id, $discussion->discussion); - } - } - if (!empty($USER->id)) { $ownpost = ($discussion->userid == $USER->id); } else { @@ -2606,18 +2488,23 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions=5, $dis // Use discussion name instead of subject of first post $discussion->subject = $discussion->name; - switch ($displayformat) { - case 'header': - if ($groupmode > 0) { - if (isset($groups[$discussion->groupid])) { - $group = $groups[$discussion->groupid]; - } else { - $group = $groups[$discussion->groupid] = get_record('groups', 'id', $discussion->groupid); - } - } else { - $group = -1; + switch ($forum_style) { + case "minimal": + if (!empty($CFG->filterall)) { + $discussion->subject = filter_text($discussion->subject, $forum->course); } - forum_print_discussion_header($discussion, $forum, $group, $strdatestring); + echo "<p><span class=\"smallinfohead\">". + userdate($discussion->modified, $strftimerecent). + " - ". + fullname($discussion). + "</span><br />"; + echo "<span class=\"smallinfo\">$discussion->subject "; + echo "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=$discussion->discussion\">"; + echo $strmore."...</a></span>"; + echo "</p>\n"; + break; + case "header": + forum_print_discussion_header($discussion, $forum, $strdatestring); break; default: if ($canreply or $discussion->replies) { @@ -2625,35 +2512,38 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions=5, $dis } else { $link = false; } - - /// Need to add in the forum id for forum_print_post. - $discussion->forum = $forum->id; - - forum_print_post($discussion, $course->id, $ownpost, $reply=0, $link, $assessed=false); + forum_print_post($discussion, $forum->course, $ownpost, $reply=0, $link, $assessed=false); + echo "<br>\n"; break; } } - if ($displayformat == "header") { - echo '</tbody>'; - echo '</table>'; + if ($forum_style == "header") { + echo "</table>"; } if ($olddiscussionlink) { - echo '<div class="forumolddiscuss">'; - echo '<a href="'.$CFG->wwwroot.'/mod/forum/view.php?f='.$forum->id.'&amp;showall=1">'; - echo get_string('olderdiscussions', 'forum').'</a> ...</div>'; + if ($forum_style == "minimal") { + echo '<p align="center">'; + } else { + echo '<p align="right">'; + } + echo "<a href=\"$CFG->wwwroot/mod/forum/view.php?f=$forum->id&showall=1\">"; + echo get_string("olderdiscussions", "forum")."</a> ...</p>"; } - if ($page != -1) { ///Show the paging bar - print_paging_bar($numdiscussions, $page, $maxdiscussions, "view.php?f=$forum->id&"); + //If we want paging + if ($page != -1) { + ///Show the paging bar + echo "<center>"; + print_paging_bar($numdiscussions, $page, $forum_numdiscussions, "view.php?f=$forum->id&"); + echo "</center>"; } } - function forum_print_discussion($course, $forum, $discussion, $post, $mode, $canreply=NULL) { - global $USER, $CFG; + global $USER; if (!empty($USER->id)) { $ownpost = ($USER->id == $post->userid); @@ -2673,28 +2563,14 @@ function forum_print_discussion($course, $forum, $discussion, $post, $mode, $can $ratings->assesspublic = $forum->assesspublic; $ratings->assesstimestart = $forum->assesstimestart; $ratings->assesstimefinish = $forum->assesstimefinish; - $ratings->allow = (($forum->assessed != 2 or isteacher($course->id)) && !isguest()); + $ratings->allow = ($forum->assessed != 2 or isteacher($course->id)); - if ($ratings->allow) { - echo '<form name="form" method="post" action="rate.php">'; - echo '<input type="hidden" name="id" value="'.$course->id.'" />'; - } + echo "<form name=form method=post action=rate.php>"; + echo "<input type=hidden name=id value=\"$course->id\">"; } } -/// Add the forum id to the post object - used by read tracking. - $post->forum = $forum->id; - - $post->subject = format_string($post->subject); - - if ($CFG->forum_trackreadposts) { - $user_read_array = forum_tp_get_discussion_read_records($USER->id, $post->discussion); - } else { - $user_read_array = array(); - } - - if (forum_print_post($post, $course->id, $ownpost, $reply, $link=false, $ratings, - '', '', (isset($user_read_array[$post->id]) || forum_tp_is_post_old($post)))) { + if (forum_print_post($post, $course->id, $ownpost, $reply, $link=false, $ratings)) { $ratingsmenuused = true; } @@ -2702,29 +2578,28 @@ function forum_print_discussion($course, $forum, $discussion, $post, $mode, $can case FORUM_MODE_FLATOLDEST : case FORUM_MODE_FLATNEWEST : default: - if (forum_print_posts_flat($post->discussion, $course->id, $mode, $ratings, $reply, - $user_read_array, $post->forum)) { + echo "<ul>"; + if (forum_print_posts_flat($post->discussion, $course->id, $mode, $ratings, $reply)) { $ratingsmenuused = true; } + echo "</ul>"; break; case FORUM_MODE_THREADED : - if (forum_print_posts_threaded($post->id, $course->id, 0, $ratings, $reply, - $user_read_array, $post->forum)) { + if (forum_print_posts_threaded($post->id, $course->id, 0, $ratings, $reply)) { $ratingsmenuused = true; } break; case FORUM_MODE_NESTED : - if (forum_print_posts_nested($post->id, $course->id, $ratings, $reply, - $user_read_array, $post->forum)) { + if (forum_print_posts_nested($post->id, $course->id, $ratings, $reply)) { $ratingsmenuused = true; } break; } if ($ratingsmenuused) { - echo "<center><input type=\"submit\" value=\"".get_string("sendinratings", "forum")."\" />"; + echo "<center><input type=\"submit\" value=\"".get_string("sendinratings", "forum")."\">"; if ($forum->scale < 0) { if ($scale = get_record("scale", "id", abs($forum->scale))) { print_scale_menu_helpbutton($course->id, $scale ); @@ -2735,10 +2610,8 @@ function forum_print_discussion($course, $forum, $discussion, $post, $mode, $can } } -/// Add the forum id to the argument list, for use in 'forum_print_post'. -/// Add the user_read_array to the argument list. -function forum_print_posts_flat($discussion, $courseid, $direction, $ratings, $reply, &$user_read_array, $forumid=0) { - global $USER, $CFG; +function forum_print_posts_flat($discussion, $course, $direction, $ratings, $reply) { + global $USER; $link = false; $ratingsmenuused = false; @@ -2751,19 +2624,8 @@ function forum_print_posts_flat($discussion, $courseid, $direction, $ratings, $r if ($posts = forum_get_discussion_posts($discussion, $sort)) { foreach ($posts as $post) { - - /// Add the forum id to the post object - used by read tracking. - if (!$CFG->forum_usermarksread) { - $post->forum = $forumid; - } else { - $post->forum = 0; - } - - $post->subject = format_string($post->subject); - $ownpost = ($USER->id == $post->userid); - if (forum_print_post($post, $courseid, $ownpost, $reply, $link, $ratings, - '', '', (isset($user_read_array[$post->id]) || forum_tp_is_post_old($post)))) { + if (forum_print_post($post, $course, $ownpost, $reply, $link, $ratings)) { $ratingsmenuused = true; } } @@ -2772,10 +2634,8 @@ function forum_print_posts_flat($discussion, $courseid, $direction, $ratings, $r return $ratingsmenuused; } -/// Add the forum id to the argument list, for use in 'forum_print_post'. -/// Add the user_read_array to the argument list. -function forum_print_posts_threaded($parent, $courseid, $depth, $ratings, $reply, &$user_read_array, $forumid=0) { - global $USER, $CFG; +function forum_print_posts_threaded($parent, $course, $depth, $ratings, $reply) { + global $USER; $link = false; $ratingsmenuused = false; @@ -2783,55 +2643,32 @@ function forum_print_posts_threaded($parent, $courseid, $depth, $ratings, $reply if ($posts = forum_get_child_posts($parent)) { foreach ($posts as $post) { - echo '<div class="indent">'; + echo "<ul>"; if ($depth > 0) { $ownpost = ($USER->id == $post->userid); - - if (!$CFG->forum_usermarksread) { - $post->forum = $forumid; - } else { - $post->forum = 0; - } - - $post->subject = format_string($post->subject); - - if (forum_print_post($post, $courseid, $ownpost, $reply, $link, $ratings, - '', '', (isset($user_read_array[$post->id]) || forum_tp_is_post_old($post)))) { + if (forum_print_post($post, $course, $ownpost, $reply, $link, $ratings)) { $ratingsmenuused = true; } + echo "<br />"; } else { - $by->name = fullname($post, isteacher($courseid)); + $by->name = fullname($post, isteacher($course->id)); $by->date = userdate($post->modified); - - if ($CFG->forum_trackreadposts) { - if (isset($user_read_array[$post->id]) || forum_tp_is_post_old($post)) { - $style = '<span class="forumthread read">'; - } else { - $style = '<span class="forumthread unread">'; - } - } else { - $style = '<span class="forumthread">'; - } - echo $style."<a name=\"$post->id\"></a>". - "<a href=\"discuss.php?d=$post->discussion&amp;parent=$post->id\">".format_string($post->subject,true)."</a> "; + echo "<li><p><a name=\"$post->id\"></a><font size=-1><b><a href=\"discuss.php?d=$post->discussion&parent=$post->id\">$post->subject</a></b> "; print_string("bynameondate", "forum", $by); - echo "</span>"; + echo "</font></p></li>"; } - if (forum_print_posts_threaded($post->id, $courseid, $depth-1, $ratings, $reply, - $user_read_array, $forumid)) { + if (forum_print_posts_threaded($post->id, $course, $depth-1, $ratings, $reply)) { $ratingsmenuused = true; } - echo "</div>\n"; + echo "</ul>\n"; } } return $ratingsmenuused; } -/// Add the forum id to the argument list, for use in 'forum_print_post'. -/// Add the user_read_array to the argument list. -function forum_print_posts_nested($parent, $courseid, $ratings, $reply, &$user_read_array, $forumid=0) { - global $USER, $CFG; +function forum_print_posts_nested($parent, $course, $ratings, $reply) { + global $USER; $link = false; $ratingsmenuused = false; @@ -2839,30 +2676,21 @@ function forum_print_posts_nested($parent, $courseid, $ratings, $reply, &$user_r if ($posts = forum_get_child_posts($parent)) { foreach ($posts as $post) { - echo '<div class="indent">'; if (empty($USER->id)) { $ownpost = false; } else { $ownpost = ($USER->id == $post->userid); } - /// Add the forum id to the post object - used by read tracking. - if (!$CFG->forum_usermarksread) { - $post->forum = $forumid; - } else { - $post->forum = 0; - } - - $post->subject = format_string($post->subject); - - if (forum_print_post($post, $courseid, $ownpost, $reply, $link, $ratings, - '', '', (isset($user_read_array[$post->id]) || forum_tp_is_post_old($post)))) { + echo "<ul>"; + if (forum_print_post($post, $course, $ownpost, $reply, $link, $ratings)) { $ratingsmenuused = true; } - if (forum_print_posts_nested($post->id, $courseid, $ratings, $reply, $user_read_array, $forumid)) { + echo "<br />"; + if (forum_print_posts_nested($post->id, $course, $ratings, $reply)) { $ratingsmenuused = true; } - echo "</div>\n"; + echo "</ul>\n"; } } return $ratingsmenuused; @@ -2896,12 +2724,12 @@ function forum_get_recent_mod_activity(&$activities, &$index, $sincetime, $cours WHERE p.modified > '$sincetime' $forumselect AND p.userid = u.id $userselect AND d.course = '$courseid' - AND p.discussion = d.id + AND p.discussion = d.id AND cm.instance = f.id AND cm.course = d.course AND cm.course = f.course AND f.id = d.forum - ORDER BY p.discussion ASC,p.created ASC"); + ORDER BY d.id"); if (empty($posts)) { return; @@ -2915,8 +2743,6 @@ function forum_get_recent_mod_activity(&$activities, &$index, $sincetime, $cours continue; } - $tmpactivity = new Object; - $tmpactivity->type = "forum"; $tmpactivity->defaultindex = $index; $tmpactivity->instance = $post->instance; @@ -2955,22 +2781,22 @@ function forum_print_recent_mod_activity($activity, $course, $detail=false) { $closeformat = "</b>"; } - echo "<tr><td class=\"forumpostpicture\" width=\"35\" valign=\"top\">"; + echo "<tr><td bgcolor=\"$THEME->cellcontent2\" class=\"forumpostpicture\" width=\"35\" valign=\"top\">"; print_user_picture($activity->user->userid, $course, $activity->user->picture); echo "</td><td>$openformat"; if ($detail) { echo "<img src=\"$CFG->modpixpath/$activity->type/icon.gif\" ". - "height=\"16\" width=\"16\" alt=\"".strip_tags(format_string($activity->name,true))."\" /> "; + "height=16 width=16 alt=\"$activity->name\"> "; } echo "<a href=\"$CFG->wwwroot/mod/forum/discuss.php?d=" . $activity->content->discussion . "#" . $activity->content->id . "\">"; - echo format_string($activity->content->subject,true); + echo $activity->content->subject; echo "</a>$closeformat"; - echo "<br /><font size=\"2\">"; - echo "<a href=\"$CFG->wwwroot/user/view.php?id=" . $activity->user->userid . "&amp;course=" . "$course\">" + echo "<br><font size=\"2\">"; + echo "<a href=\"$CFG->wwwroot/user/view.php?id=" . $activity->user->userid . "&course=" . "$course\">" . $activity->user->fullname . "</a>"; echo " - " . userdate($activity->timestamp) . "</font></td></tr>"; echo "</table>"; @@ -3009,239 +2835,4 @@ function forum_update_subscriptions_button($courseid, $forumid) { } } -function forum_add_user($userid, $courseid) { -/// Add subscriptions for new users - if ($forums = get_records_select('forum', "course = '$courseid' AND forcesubscribe = '".FORUM_INITIALSUBSCRIBE."'")) { - foreach ($forums as $forum) { - forum_subscribe($userid, $forum->id); - } - } - if ($forums = get_records_select('forum', "course = '".SITEID."' AND forcesubscribe = '".FORUM_INITIALSUBSCRIBE."'")) { - foreach ($forums as $forum) { - forum_subscribe($userid, $forum->id); - } - } -} - -function forum_tp_add_read_record($userid, $postid, $discussionid=-1, $forumid=-1) { - if (($readrecord = forum_tp_get_read_records($userid, $postid)) === false) { - /// New read record - unset($readrecord); - $readrecord->userid = $userid; - $readrecord->postid = $postid; - $readrecord->discussionid = $discussionid; - $readrecord->forumid = $forumid; - $readrecord->firstread = time(); - $readrecord->lastread = $readrecord->firstread; - return insert_record('forum_read', $readrecord, true); - } - else { - /// Update read record - $readrecord = reset($readrecord); - $readrecord->lastread = time(); - - /// This shouldn't happen, but just in case... - if (!$readrecord->firstread) { - $readrecord->firstread = $readrecord->lastread; - /// Update the 'firstread' field. - set_field('forum_read', 'firstread', $readrecord->firstread, 'userid', $userid, 'postid', $postid); - } - if ($discussionid > -1) { - /// Update the 'discussionid' field. - set_field('forum_read', 'discussionid', $discussionid, 'userid', $userid, 'postid', $postid); - } - if ($forumid > -1) { - /// Update the 'forumid' field. - set_field('forum_read', 'forumid', $forumid, 'userid', $userid, 'postid', $postid); - } - - $readrecord->forumid = $forumid; - /// Update the 'lastread' field. - return set_field('forum_read', 'lastread', $readrecord->lastread, 'userid', $userid, 'postid', $postid); - } -} - -function forum_tp_get_read_records($userid=-1, $postid=-1, $discussionid=-1, $forumid=-1) { - /// Returns all records in the 'forum_read' table matching the passed keys, indexed - /// by userid. - $select = ''; - if ($userid > -1) { - if ($select != '') $select .= ' AND '; - $select .= 'userid = \''.$userid.'\''; - } - if ($postid > -1) { - if ($select != '') $select .= ' AND '; - $select .= 'postid = \''.$postid.'\''; - } - if ($discussionid > -1) { - if ($select != '') $select .= ' AND '; - $select .= 'discussionid = \''.$discussionid.'\''; - } - if ($forumid > -1) { - if ($select != '') $select .= ' AND '; - $select .= 'forumid = \''.$forumid.'\''; - } - - return get_records_select('forum_read', $select); -} - -function forum_tp_get_discussion_read_records($userid, $discussionid) { - /// Returns all read records for the provided user and discussion, indexed by postid. - $select = 'userid = \''.$userid.'\' AND discussionid = \''.$discussionid.'\''; - $fields = 'postid, firstread, lastread'; - return get_records_select('forum_read', $select, '', $fields); -} - -function forum_tp_mark_post_read($userid, &$post, $forumid) { -/// If its an old post, do nothing. If the record exists, the maintenance will clear it up later. - if (!forum_tp_is_post_old($post)) { - return forum_tp_add_read_record($userid, $post->id, $post->discussion, $forumid); - } else { - return true; - } -} - -function forum_tp_is_post_read($userid, &$post) { - return (forum_tp_is_post_old($post) || - (get_record('forum_read', 'userid', $userid, 'postid', $post->id) !== false)); -} - -function forum_tp_is_post_old(&$post, $time=null) { - global $CFG; - - if (is_null($time)) $time = time(); - return ($post->modified < ($time - ($CFG->forum_oldpostdays * 24 * 3600))); -} - -function forum_tp_count_discussion_read_records($userid, $discussionid) { - /// Returns the count of records for the provided user and discussion. - global $CFG; - - $cutoffdate = isset($CFG->forum_oldpostdays) ? (time() - ($CFG->forum_oldpostdays*24*60*60)) : 0; - - $sql = 'SELECT COUNT(DISTINCT p.id) '. - 'FROM '.$CFG->prefix.'forum_discussions d '. - 'LEFT JOIN '.$CFG->prefix.'forum_read r ON d.id = r.discussionid AND r.userid = '.$userid.' '. - 'LEFT JOIN '.$CFG->prefix.'forum_posts p ON p.discussion = d.id '. - 'AND (p.modified < '.$cutoffdate.' OR p.id = r.postid) '. - 'WHERE d.id = '.$discussionid; - - return (count_records_sql($sql)); -} - -function forum_tp_count_discussion_unread_posts($userid, $discussionid) { - /// Returns the count of records for the provided user and discussion. - global $CFG; - - $cutoffdate = isset($CFG->forum_oldpostdays) ? (time() - ($CFG->forum_oldpostdays*24*60*60)) : 0; - - $sql = 'SELECT COUNT(p.id) '. - 'FROM '.$CFG->prefix.'forum_posts p '. - 'LEFT JOIN '.$CFG->prefix.'forum_read r ON r.postid = p.id AND r.userid = '.$userid.' '. - 'WHERE p.discussion = '.$discussionid.' '. - 'AND p.modified >= '.$cutoffdate.' AND r.id is NULL'; - - return (count_records_sql($sql)); -} - -function forum_tp_count_forum_posts($forumid, $groupid=false) { - /// Returns the count of posts for the provided forum and [optionally] group. - global $CFG; - - $sql = 'SELECT COUNT(*) '. - 'FROM '.$CFG->prefix.'forum_posts fp,'.$CFG->prefix.'forum_discussions fd '. - 'WHERE fd.forum = '.$forumid.' AND fp.discussion = fd.id'; - if ($groupid !== false) { - $sql .= ' AND (fd.groupid = '.$groupid.' OR fd.groupid = -1)'; - } - $count = count_records_sql($sql); - - - return $count; -} - -function forum_tp_count_forum_read_records($userid, $forumid, $groupid=false) { - /// Returns the count of records for the provided user and forum and [optionally] group. - global $CFG; - - $cutoffdate = isset($CFG->forum_oldpostdays) ? (time() - ($CFG->forum_oldpostdays*24*60*60)) : 0; - - $groupsel = ''; - if ($groupid !== false) { - $groupsel = ' AND (d.groupid = '.$groupid.' OR d.groupid = -1)'; - } - - $sql = 'SELECT COUNT(DISTINCT p.id) '. - 'FROM '.$CFG->prefix.'forum_posts p,'.$CFG->prefix.'forum_read r,'.$CFG->prefix.'forum_discussions d '. - 'WHERE d.forum = '.$forumid.$groupsel.' AND p.discussion = d.id AND '. - '((p.id = r.postid AND r.userid = '.$userid.') OR p.modified < '.$cutoffdate.' ) '; - - return (count_records_sql($sql)); -} - -function forum_tp_count_forum_unread_posts($userid, $forumid, $groupid=false) { - /// Returns the count of records for the provided user and forum and [optionally] group. - global $CFG; - - $cutoffdate = isset($CFG->forum_oldpostdays) ? (time() - ($CFG->forum_oldpostdays*24*60*60)) : 0; - - $groupsel = ''; - if ($groupid !== false) { - $groupsel = ' AND (d.groupid = '.$groupid.' OR d.groupid = -1)'; - } - - $sql = 'SELECT COUNT(p.id) '. - 'FROM '.$CFG->prefix.'forum_posts p '. - 'LEFT JOIN '.$CFG->prefix.'forum_discussions d ON p.discussion = d.id '. - 'LEFT JOIN '.$CFG->prefix.'forum_read r ON r.postid = p.id AND r.userid = '.$userid.' '. - 'WHERE d.forum = '.$forumid.$groupsel. - ' AND p.modified >= '.$cutoffdate.' AND r.id is NULL'; - - return (count_records_sql($sql)); -} - -function forum_tp_delete_read_records($userid=-1, $postid=-1, $discussionid=-1, $forumid=-1) { -/// Deletes read records for the specified index. At least one parameter must be specified. - $select = ''; - if ($userid > -1) { - if ($select != '') $select .= ' AND '; - $select .= 'userid = \''.$userid.'\''; - } - if ($postid > -1) { - if ($select != '') $select .= ' AND '; - $select .= 'postid = \''.$postid.'\''; - } - if ($discussionid > -1) { - if ($select != '') $select .= ' AND '; - $select .= 'discussionid = \''.$discussionid.'\''; - } - if ($forumid > -1) { - if ($select != '') $select .= ' AND '; - $select .= 'forumid = \''.$forumid.'\''; - } - if ($select == '') { - return false; - } - else { - return delete_records_select('forum_read', $select); - } -} - -/// Clean old records from the forum_read table. -function forum_tp_clean_read_records() { - global $CFG; - -/// Look for records older than the cutoffdate that are still in the forum_read table. - $cutoffdate = isset($CFG->forum_oldpostdays) ? (time() - ($CFG->forum_oldpostdays*24*60*60)) : 0; - $sql = 'SELECT fr.id, fr.userid, fr.postid '. - 'FROM '.$CFG->prefix.'forum_posts fp, '.$CFG->prefix.'forum_read fr '. - 'WHERE fp.modified < '.$cutoffdate.' AND fp.id = fr.postid'; - if (($oldreadposts = get_records_sql($sql))) { - foreach($oldreadposts as $oldreadpost) { - delete_records('forum_read', 'userid', $oldreadpost->userid, 'postid', $oldreadpost->postid); - } - } - -} - ?> diff --git a/mod/forum/mod.html b/mod/forum/mod.html index 12b3952a7ae..35217c46726 100644 --- a/mod/forum/mod.html +++ b/mod/forum/mod.html @@ -1,12 +1,12 @@ <?php if (!isset($form->name)) { - $form->name = ''; + $form->name = ""; } if (!isset($form->type)) { - $form->type = ''; + $form->type = ""; } if (!isset($form->intro)) { - $form->intro = ''; + $form->intro = ""; } if (!isset($form->open)) { $form->open = 2; @@ -40,82 +40,80 @@ } ?> <form name="form" method="post" action="mod.php"> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string('forumname', 'forum')?>:</b></td> +<table cellpadding=5> +<tr> +<tr valign=top> + <td align=right><p><b><?php print_string("forumname", "forum")?>:</b></p></td> <td> - <input type="text" name="name" size="30" alt="<?php print_string('forumname', 'forum')?>" value="<?php p($form->name) ?>" /> + <input type="text" name="name" size=30 value="<?php p($form->name) ?>"> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string('forumtype', 'forum')?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("forumtype", "forum")?>:</b></p></td> <td> <?php $student = strtolower($course->student); - require_once("$CFG->dirroot/mod/forum/lib.php"); + require("$CFG->dirroot/mod/forum/lib.php"); asort($FORUM_TYPES); if (! $form->type) { - $form->type = 'general'; + $form->type = "general"; } - if ($form->type == 'news') { - print_string('namenews', 'forum'); - echo '<input type="hidden" name="type" value="news" />'; - } else if ($form->type == 'social') { - print_string('namesocial', 'forum'); - echo '<input type="hidden" name="type" value="social" />'; + if ($form->type == "news") { + print_string("namenews", "forum"); + echo "<input type=\"hidden\" name=\"type\" value=\"news\">"; + } else if ($form->type == "social") { + print_string("namesocial", "forum"); + echo "<input type=\"hidden\" name=\"type\" value=\"social\">"; } else { - choose_from_menu($FORUM_TYPES, 'type', $form->type, ''); - helpbutton('forumtype', get_string('forumtype', 'forum'), 'forum'); + choose_from_menu($FORUM_TYPES, "type", $form->type, ""); + helpbutton("forumtype", get_string("forumtype", "forum"), "forum"); } ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string('forumintro', 'forum')?>:</b><br /><br /> +<tr valign=top> + <td align=right><p><b><?php print_string("forumintro", "forum")?>:</b></p> + <font size="1"> <?php - helpbutton('writing', get_string('helpwriting'), 'moodle', true, true); - echo '<br />'; - helpbutton('questions', get_string('helpquestions'), 'moodle', true, true); - echo '<br />'; - if ($usehtmleditor) { - helpbutton('richtext', get_string('helprichtext'), 'moodle', true, true); - } else { - emoticonhelpbutton('form', 'intro'); - } - echo '<br />'; + helpbutton("writing", get_string("helpwriting"), "moodle", true, true); + echo "<br />"; + helpbutton("questions", get_string("helpquestions"), "moodle", true, true); + echo "<br />"; + emoticonhelpbutton("form", "intro"); + echo " <br />"; ?> + </font> </td> <td> - <?php print_textarea($usehtmleditor, 20, 50, 680, 400, 'intro', $form->intro); ?> + <?php print_textarea($usehtmleditor, 20, 50, 680, 400, "intro", $form->intro); ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string('allowdiscussions', 'forum', strtolower("$course->student")) ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("allowdiscussions", "forum", strtolower("$course->student")) ?>:</b></p></td> <td> <?php - choose_from_menu($FORUM_OPEN_MODES, 'open', $form->open, ''); - helpbutton('allowdiscussions', get_string('allowdiscussions', - 'forum', moodle_strtolower("$course->student")), 'forum'); + choose_from_menu($FORUM_OPEN_MODES, "open", $form->open, ""); + helpbutton("allowdiscussions", get_string("allowdiscussions", + "forum", moodle_strtolower("$course->student")), "forum"); ?> </td> </tr> <tr> - <td align="right"><b><?php print_string('forcesubscribeq', 'forum') ?>:</b></td> + <td align=right><p><b><?php print_string("forcesubscribeq", "forum") ?>:</b></p></td> <td> <?php unset($options); - $options[0] = get_string('no'); - $options[1] = get_string('yesforever', 'forum'); - $options[FORUM_INITIALSUBSCRIBE] = get_string('yesinitially', 'forum'); - choose_from_menu($options, 'forcesubscribe', $form->forcesubscribe, ''); - helpbutton('subscription2', get_string('forcesubscribeq', 'forum'), 'forum'); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); + choose_from_menu($options, "forcesubscribe", $form->forcesubscribe, ""); + helpbutton("subscription", get_string("forcesubscribeq", "forum"), "forum"); ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("maxattachmentsize", "forum") ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("maxattachmentsize", "forum") ?>:</b></p></td> <td> <?php $choices = get_max_upload_sizes($CFG->maxbytes, $course->maxbytes); @@ -129,155 +127,137 @@ <?php //Only show rss parameters if rss is activated at site and forum levels if ($CFG->enablerssfeeds && $CFG->forum_enablerssfeeds) { - echo '<tr valign="top">'; - echo '<td align="right"><b>'.get_string('rsstype').':</b></td>'; - echo '<td>'; + echo "<tr valign=top>"; + echo "<td align=right><p><b>".get_string("rsstype").":</b></p></td>"; + echo "<td>"; unset($choices); - $choices[0] = get_string('none'); - $choices[1] = get_string('discussions', 'forum'); - $choices[2] = get_string('posts', 'forum'); - choose_from_menu ($choices, 'rsstype', $form->rsstype, ''); - helpbutton('rsstype', get_string('rsstype'), 'forum'); - echo '</td>'; - echo '</tr>'; + $choices[0] = get_string("none"); + $choices[1] = get_string("discussions", "forum"); + $choices[2] = get_string("posts", "forum"); + choose_from_menu ($choices, "rsstype", $form->rsstype, ""); + helpbutton("rsstype", get_string("rsstype"), "forum"); + echo "</td>"; + echo "</tr>"; - echo '<tr valign="top">'; - echo '<td align="right"><b>'.get_string('rssarticles').':</b></td>'; - echo '<td>'; + echo "<tr valign=top>"; + echo "<td align=right><p><b>".get_string("rssarticles").":</b></p></td>"; + echo "<td>"; unset($choices); - $choices[0] = '0'; - $choices[1] = '1'; - $choices[2] = '2'; - $choices[3] = '3'; - $choices[4] = '4'; - $choices[5] = '5'; - $choices[10] = '10'; - $choices[15] = '15'; - $choices[20] = '20'; - $choices[25] = '25'; - $choices[30] = '30'; - $choices[40] = '40'; - $choices[50] = '50'; - choose_from_menu ($choices, 'rssarticles', $form->rssarticles, ''); - helpbutton('rssarticles', get_string('rssarticles'), 'forum'); - echo '</td>'; - echo '</tr>'; + $choices[0] = "0"; + $choices[1] = "1"; + $choices[2] = "2"; + $choices[3] = "3"; + $choices[4] = "4"; + $choices[5] = "5"; + $choices[10] = "10"; + $choices[15] = "15"; + $choices[20] = "20"; + $choices[25] = "25"; + $choices[30] = "30"; + $choices[40] = "40"; + $choices[50] = "50"; + choose_from_menu ($choices, "rssarticles", $form->rssarticles, ""); + helpbutton("rssarticles", get_string("rssarticles"), "forum"); + echo "</td>"; + echo "</tr>"; } ?> <tr> - <td align="right" valign="top"><b><?php print_string("allowratings", "forum") ?>:</b></td> + <td align=right valign=top><p><b><?php print_string("allowratings", "forum") ?>:</b></p></td> <td> - <table cellpadding="1"> - <tr> - <td colspan="2"> <?php - echo '<script type="text/javascript">'; + echo "<script>"; echo " var subitemstime = ['startday','startmonth','startyear','starthour', 'startminute',". "'finishday','finishmonth','finishyear','finishhour','finishminute'];"; echo " var subitemsall = ['assessed', 'assesspublic', 'ratingtime', 'scale', ". "'startday','startmonth','startyear','starthour', 'startminute',". "'finishday','finishmonth','finishyear','finishhour','finishminute'];"; - echo '</script>'; + echo "</script>"; - echo '<input name="userating" type="checkbox" alt="'.get_string('ratingsuse', 'forum').'" value="1" '; + echo "<input name=\"userating\" type=checkbox value=1 "; echo " onclick=\"return lockoptions('form','userating', subitemsall)\" "; if ($form->assessed) { - echo ' checked="checked" '; + echo " checked "; } - echo ' />'; - echo '&nbsp;'.get_string('ratingsuse', 'forum').':'; - echo '</td></tr>'; + echo ">"; + echo get_string("ratingsuse", "forum").":"; + echo "<br />"; - echo '<tr><td>'; // The odd order below was to maintain backward compatibility unset($options); - $options[2] = get_string('ratingonlyteachers', 'forum', moodle_strtolower($course->teachers)); - $options[1] = get_string('ratingeveryone', 'forum'); - echo get_string('users').': '; - echo '</td><td>'; - choose_from_menu($options, 'assessed', $form->assessed, ''); - echo '</td></tr>'; + $options[2] = get_string("ratingonlyteachers", "forum", moodle_strtolower($course->teachers)); + $options[1] = get_string("ratingeveryone", "forum"); + echo get_string("users").":"; + choose_from_menu($options, "assessed", $form->assessed, ""); + echo "<br />"; - echo '<tr><td>'; unset($options); - $options[0] = get_string('ratingpublicnot', 'forum', $course->students); - $options[1] = get_string('ratingpublic', 'forum', $course->students); - echo get_string('view').': '; - echo '</td><td>'; - choose_from_menu($options, 'assesspublic', $form->assesspublic, ''); - echo '</td></tr>'; + $options[0] = get_string("ratingpublicnot", "forum", $course->students); + $options[1] = get_string("ratingpublic", "forum", $course->students); + echo get_string("view").":"; + choose_from_menu($options, "assesspublic", $form->assesspublic, ""); + echo "<br />"; - echo '<tr><td>'; - echo get_string('grade').': '; - echo '</td><td>'; - print_grade_menu($course->id, 'scale', $form->scale, false); - echo '</td></tr>'; + echo get_string("grade").":"; + print_grade_menu($course->id, "scale", $form->scale, false); + echo "<br />"; - echo '<tr><td colspan="2">'; - echo '<input name="ratingtime" type="checkbox" alt="'.get_string('ratingtime', 'forum').'"value="1" '; + echo "<input name=\"ratingtime\" type=checkbox value=1 "; echo " onclick=\"return lockoptions('form','ratingtime', subitemstime)\" "; if ($form->assesstimestart and $form->assesstimefinish and $form->assessed) { $form->ratingtime = 1; - echo ' checked="checked" '; + echo " checked "; } - echo ' /> '; - print_string('ratingtime', 'forum'); + echo ">"; - echo '</td></tr>'; - echo '<tr><td>&nbsp</td><td>'; - - echo '<table align="left"><tr><td align="right" nowrap="nowrap">'; - echo get_string('from').': '; - print_date_selector('startday', 'startmonth', 'startyear', $form->assesstimestart); - print_time_selector('starthour', 'startminute', $form->assesstimestart); - echo '<br />'; - echo get_string('to').': '; - print_date_selector('finishday', 'finishmonth', 'finishyear', $form->assesstimefinish); - print_time_selector('finishhour', 'finishminute', $form->assesstimefinish); - echo '<br />'; - echo '</td></tr></table>'; + print_string("ratingtime", "forum"); + echo "<table align=left><tr><td align=right nowrap>"; + echo get_string("from").":"; + print_date_selector("startday", "startmonth", "startyear", $form->assesstimestart); + print_time_selector("starthour", "startminute", $form->assesstimestart); + echo "<br />"; + echo get_string("to").":"; + print_date_selector("finishday", "finishmonth", "finishyear", $form->assesstimefinish); + print_time_selector("finishhour", "finishminute", $form->assesstimefinish); + echo "<br />"; + echo "</td></tr></table>"; + echo "<input type=\"hidden\" name=\"hratingtime\" value=0>"; + echo "<input type=\"hidden\" name=\"hassessed\" value=0>"; + echo "<input type=\"hidden\" name=\"hassesspublic\" value=0>"; + echo "<input type=\"hidden\" name=\"hscale\" value=0>"; + echo "<input type=\"hidden\" name=\"hstartday\" value=0>"; + echo "<input type=\"hidden\" name=\"hstartmonth\" value=0>"; + echo "<input type=\"hidden\" name=\"hstartyear\" value=0>"; + echo "<input type=\"hidden\" name=\"hstarthour\" value=0>"; + echo "<input type=\"hidden\" name=\"hstartminute\" value=0>"; + echo "<input type=\"hidden\" name=\"hfinishday\" value=0>"; + echo "<input type=\"hidden\" name=\"hfinishmonth\" value=0>"; + echo "<input type=\"hidden\" name=\"hfinishyear\" value=0>"; + echo "<input type=\"hidden\" name=\"hfinishhour\" value=0>"; + echo "<input type=\"hidden\" name=\"hfinishminute\" value=0>"; - echo '</td></tr></table>'; - - echo '<input type="hidden" name="hratingtime" value="0" />'; - echo '<input type="hidden" name="hassessed" value="0" />'; - echo '<input type="hidden" name="hassesspublic" value="0" />'; - echo '<input type="hidden" name="hscale" value="0" />'; - echo '<input type="hidden" name="hstartday" value="0" />'; - echo '<input type="hidden" name="hstartmonth" value="0" />'; - echo '<input type="hidden" name="hstartyear" value="0" />'; - echo '<input type="hidden" name="hstarthour" value="0" />'; - echo '<input type="hidden" name="hstartminute" value="0" />'; - echo '<input type="hidden" name="hfinishday" value="0" />'; - echo '<input type="hidden" name="hfinishmonth" value="0" />'; - echo '<input type="hidden" name="hfinishyear" value="0" />'; - echo '<input type="hidden" name="hfinishhour" value="0" />'; - echo '<input type="hidden" name="hfinishminute" value="0" />'; - - echo '<script type="text/javascript">'; + echo "<script>"; echo "lockoptions('form','userating', subitemsall);"; - echo '</script>'; + echo "</script>"; if (empty($form->ratingtime)) { - echo '<script type="text/javascript">'; + echo "<script>"; echo "lockoptions('form','ratingtime', subitemstime);"; - echo '</script>'; + echo "</script>"; } ?> </td> </tr> -<?php print_standard_coursemodule_settings($form); ?> </table> <center> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -<input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> +<input type="hidden" name=course value="<?php p($form->course) ?>"> +<input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name=section value="<?php p($form->section) ?>"> +<input type="hidden" name=module value="<?php p($form->module) ?>"> +<input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<input type="hidden" name=instance value="<?php p($form->instance) ?>"> +<input type="hidden" name=mode value="<?php p($form->mode) ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> +<input type="submit" name=cancel value="<?php print_string("cancel") ?>"> </center> </form> diff --git a/mod/forum/post.html b/mod/forum/post.html index f0cb95f000e..9391f6e32bf 100644 --- a/mod/forum/post.html +++ b/mod/forum/post.html @@ -1,15 +1,24 @@ <form name="theform" method="post" action="post.php" enctype="multipart/form-data"> <table border="0" cellpadding="5"> <tr valign="top"> - <td align="right"><b><?php print_string("subject", "forum"); ?>:</b></td> + <td align=right><p><b><?php print_string("subject", "forum"); ?>:</b></p></td> <td> - <input type="text" name="subject" size="60" value="<?php p($post->subject) ?>" alt="<?php print_string("subject", "forum"); ?>" /> + <input type="text" name="subject" size=60 value="<?php p($post->subject) ?>"> </td> </tr> <tr valign="top"> - <td align="right"><b><?php print_string("message", "forum"); ?>:</b> - <br /><br /> - <?php + <td align=right><p><b> + <?php print_string("message", "forum"); ?>: + </b></p></td> + <td align=left rowspan=2> + <?php print_textarea($usehtmleditor, 25, 65, 630, 400, "message", $post->message); ?> + </td> +</tr> +<tr valign="top"> + <td align="right" valign="center" nowrap> + + <font SIZE="1"> + <?php helpbutton("reading", get_string("helpreading"), "moodle", true, true); echo "<br />"; helpbutton("writing", get_string("helpwriting"), "moodle", true, true); @@ -21,21 +30,22 @@ } else { emoticonhelpbutton("theform", "message"); } - echo "<br />"; ?> - </td> - <td align="left"> - <?php print_textarea($usehtmleditor, 25, 65, 630, 400, "message", $post->message); ?> + <br /> + </font> + </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("formattexttype"); ?>:</b></td> + + +<tr valign=top> + <td align=right><p><b><?php print_string("formattexttype"); ?>:</b></p></td> <td> <?php if ($usehtmleditor) { /// Trying this out for a while print_string('formathtml'); - echo '<input type="hidden" name="format" value="'.FORMAT_HTML.'" />'; + echo '<input type="hidden" name="format" value="'.FORMAT_HTML.'">'; } else { choose_from_menu(format_text_menu(), "format", $post->format, ""); } @@ -45,11 +55,11 @@ </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("subscription", "forum") ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("subscription", "forum") ?>:</b></p></td> <td> <?php - if (forum_is_forcesubscribed($forum->id)) { + if ($forum->forcesubscribe) { print_string("everyoneissubscribed", "forum"); } else { unset($options); @@ -75,16 +85,15 @@ <?php if ($forum->maxbytes != 1) { // 1 = No attachments at all ?> -<tr valign="top"> - <td align="right"><b><?php print_string("attachment", "forum") ?>:<br />(<?php print_string("optional") ?>)&nbsp;</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("attachment", "forum") ?>:<br />(<?php print_string("optional") ?>)&nbsp;</b></p></td> <td> <?php $maxbytes = get_max_upload_file_size($CFG->maxbytes, $course->maxbytes, $forum->maxbytes); ?> - <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $maxbytes ?>" /> - <input type="file" name="attachment" size="40" alt="<?php print_string("attachment", "forum") ?>" /> - <?php - helpbutton("attachment", get_string("attachment", "forum"), "forum"); - echo '&nbsp;'; - print_string("maxsize", "", display_size($maxbytes)); + <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $maxbytes ?>"> + <input type="file" name="attachment" size=40> + <?php + helpbutton("attachment", get_string("attachment", "forum"), "forum"); + print_string("maxsize", "", display_size($maxbytes)); ?> </td> </tr> @@ -93,15 +102,15 @@ <tr> - <td align="center" colspan="2"> - <input type="hidden" name="course" value="<?php p($post->course) ?>" /> - <input type="hidden" name="forum" value="<?php p($post->forum) ?>" /> - <input type="hidden" name="discussion" value="<?php p($post->discussion) ?>" /> - <input type="hidden" name="parent" value="<?php p($post->parent) ?>" /> - <input type="hidden" name="userid" value="<?php p($post->userid) ?>" /> - <input type="hidden" name="groupid" value="<?php p($post->groupid) ?>" /> - <input type="hidden" name="edit" value="<?php p($post->edit) ?>" /> - <input type="submit" value="<?php p(($post->edit) ? get_string('savechanges') : get_string('posttoforum', 'forum')); ?>" /> + <td align=center colspan=2> + <input type="hidden" name=course value="<?php p($post->course) ?>"> + <input type="hidden" name=forum value="<?php p($post->forum) ?>"> + <input type="hidden" name=discussion value="<?php p($post->discussion) ?>"> + <input type="hidden" name=parent value="<?php p($post->parent) ?>"> + <input type="hidden" name=userid value="<?php p($post->userid) ?>"> + <input type="hidden" name=groupid value="<?php p($post->groupid) ?>"> + <input type="hidden" name=edit value="<?php p($post->edit) ?>"> + <input type="submit" value="<?php p(($post->edit) ? get_string('savechanges') : get_string('posttoforum', 'forum')); ?>"> </td> </tr> diff --git a/mod/forum/post.php b/mod/forum/post.php index fc0f0bdf13e..90893e8f6d6 100644 --- a/mod/forum/post.php +++ b/mod/forum/post.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // Edit and save a new post to a discussion @@ -7,63 +7,18 @@ require_once("lib.php"); if (isguest()) { - $wwwroot = $CFG->wwwroot.'/login/index.php'; - if (!empty($CFG->loginhttps)) { - $wwwroot = str_replace('http','https', $wwwroot); - } - - if (isset($forum)) { // User is starting a new discussion in a forum - if (! $forum = get_record('forum', 'id', $forum)) { - error('The forum number was incorrect'); - } - } else if (isset($reply)) { // User is writing a new reply - if (! $parent = forum_get_post_full($reply)) { - error('Parent post ID was incorrect'); - } - if (! $discussion = get_record('forum_discussions', 'id', $parent->discussion)) { - error('This post is not part of a discussion!'); - } - if (! $forum = get_record('forum', 'id', $discussion->forum)) { - error('The forum number was incorrect'); - } - } - if (! $course = get_record('course', 'id', $forum->course)) { - error('The course number was incorrect'); - } - if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { // For the logs - $cm->id = 0; - } - - $strforums = get_string('modulenameplural', 'forum'); - if ($course->category) { - print_header($course->shortname, $course->fullname, - "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> -> - <a href=\"../forum/index.php?id=$course->id\">$strforums</a> -> - <a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>", '', '', true, "", navmenu($course, $cm)); - } else { - print_header($course->shortname, $course->fullname, - "<a href=\"../forum/index.php?id=$course->id\">$strforums</a> -> - <a href=\"view.php?f=$forum->id\">".format_string($forum->name)."</a>", '', '', true, "", navmenu($course, $cm)); - } - notice_yesno(get_string('noguestpost', 'forum').'<br /><br />'.get_string('liketologin'), - $wwwroot, $_SERVER['HTTP_REFERER']); - print_footer($course); - exit; + error(get_string("noguestpost", "forum"), $_SERVER["HTTP_REFERER"]); } require_login(0, false); // Script is useless unless they're logged in if ($post = data_submitted()) { - if (empty($post->course)) { - error('No course was defined!'); - } - - if (!$course = get_record('course', 'id', $post->course)) { - error('Could not find specified course!'); - } - - if (!empty($course->lang)) { // Override current language - $CFG->courselang = $course->lang; + if (!empty($post->course)) { + if ($course = get_record('course', 'id', $post->course)) { + if (!empty($course->lang)) { + $CFG->courselang = $course->lang; + } + } } if (empty($SESSION->fromurl)) { @@ -73,12 +28,13 @@ } $post->subject = strip_tags($post->subject, '<lang>'); // Strip all tags except lang + $post->subject = break_up_long_words($post->subject); //$post->message = clean_text($post->message, $post->format); // Clean up any bad tags $post->attachment = isset($_FILES['attachment']) ? $_FILES['attachment'] : NULL; - if (!$cm = get_coursemodule_from_instance("forum", $post->forum, $course->id)) { // For the logs + if (!$cm = get_coursemodule_from_instance("forum", $post->forum, $post->course)) { // For the logs $cm->id = 0; } @@ -87,40 +43,32 @@ } else if ($post->edit) { // Updating a post $post->id = $post->edit; - $message = ''; - if (forum_update_post($post,$message)) { + if (forum_update_post($post)) { - add_to_log($course->id, "forum", "update post", - "discuss.php?d=$post->discussion&amp;parent=$post->id", "$post->id", $cm->id); + add_to_log($post->course, "forum", "update post", + "discuss.php?d=$post->discussion&parent=$post->id", "$post->id", $cm->id); - $timemessage = 2; - if (!empty($message)) { // if we're printing stuff about the file upload - $timemessage = 4; - } - $message .= '<br />'.get_string("postupdated", "forum"); + $message = get_string("postupdated", "forum"); + $timemessage = 1; if ($subscribemessage = forum_post_subscription($post)) { - $timemessage = 4; + $timemessage = 2; } redirect(forum_go_back_to("discuss.php?d=$post->discussion#$post->id"), $message.$subscribemessage, $timemessage); } else { - error(get_string("couldnotupdate", "forum"), $errordestination); + error(get_string("couldnotupdate", "forum"), $errordestination); } exit; } else if ($post->discussion) { // Adding a new post to an existing discussion - $message = ''; - if ($post->id = forum_add_new_post($post,$message)) { + if ($post->id = forum_add_new_post($post)) { - add_to_log($course->id, "forum", "add post", - "discuss.php?d=$post->discussion&amp;parent=$post->id", "$post->id", $cm->id); + add_to_log($post->course, "forum", "add post", + "discuss.php?d=$post->discussion&parent=$post->id", "$post->id", $cm->id); + $message = get_string("postadded", "forum", format_time($CFG->maxeditingtime)); $timemessage = 2; - if (!empty($message)) { // if we're printing stuff about the file upload - $timemessage = 4; - } - $message .= '<br />'.get_string("postadded", "forum", format_time($CFG->maxeditingtime)); if ($subscribemessage = forum_post_subscription($post)) { $timemessage = 4; @@ -129,7 +77,7 @@ redirect(forum_go_back_to("discuss.php?d=$post->discussion#$post->id"), $message.$subscribemessage, $timemessage); } else { - error(get_string("couldnotadd", "forum"), $errordestination); + error(get_string("couldnotadd", "forum"), $errordestination); } exit; @@ -137,17 +85,13 @@ $discussion = $post; $discussion->name = $post->subject; $discussion->intro = $post->message; - $message = ''; - if ($discussion->id = forum_add_discussion($discussion,$message)) { + if ($discussion->id = forum_add_discussion($discussion)) { - add_to_log($course->id, "forum", "add discussion", + add_to_log($post->course, "forum", "add discussion", "discuss.php?d=$discussion->id", "$discussion->id", $cm->id); + $message = get_string("postadded", "forum", format_time($CFG->maxeditingtime)); $timemessage = 2; - if (!empty($message)) { // if we're printing stuff about the file upload - $timemessage = 4; - } - $message .= '<br />'.get_string("postadded", "forum", format_time($CFG->maxeditingtime)); if ($subscribemessage = forum_post_subscription($discussion)) { $timemessage = 4; @@ -156,7 +100,7 @@ redirect(forum_go_back_to("view.php?f=$post->forum"), $message.$subscribemessage, $timemessage); } else { - error(get_string("couldnotadd", "forum"), $errordestination); + error(get_string("couldnotadd", "forum"), $errordestination); } exit; } @@ -168,8 +112,6 @@ $defaultformat = FORMAT_MOODLE; } - $parent=NULL; // Initialise some things - if (isset($post->error)) { // User is re-editing a failed posting @@ -255,8 +197,7 @@ if ($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) { if (groupmode($course, $cm) and !isteacheredit($course->id)) { // Make sure user can post here - $mygroupid = mygroupid($course->id); - if (!((empty($mygroupid) and $discussion->groupid == -1) || ($mygroupid == $discussion->groupid))) { + if (mygroupid($course->id) != $discussion->groupid) { error("Sorry, but you can not post in this discussion."); } } @@ -346,12 +287,12 @@ if (isset($confirm)) { // User has confirmed the delete if ($post->totalscore) { - notice(get_string("couldnotdeleteratings", "forum"), + notice(get_string("couldnotdeleteratings", "forum"), forum_go_back_to("discuss.php?d=$post->discussion")); } else if (record_exists("forum_posts", "parent", $delete)) { error(get_string("couldnotdeletereplies", "forum"), - forum_go_back_to("discuss.php?d=$post->discussion")); + forum_go_back_to("discuss.php?id=$post->discussion")); } else { if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $forum->course)) { // For the logs @@ -359,23 +300,23 @@ } if (! $post->parent) { // post is a discussion topic as well, so delete discussion if ($forum->type == "single") { - notice("Sorry, but you are not allowed to delete that discussion!", + notice("Sorry, but you are not allowed to delete that discussion!", forum_go_back_to("discuss.php?d=$post->discussion")); } forum_delete_discussion($discussion); - add_to_log($discussion->course, "forum", "delete discussion", + add_to_log($discussion->course, "forum", "delete discussion", "view.php?id=$cm->id", "$forum->id", $cm->id); - redirect("view.php?f=$discussion->forum", + redirect("view.php?f=$discussion->forum", get_string("deleteddiscussion", "forum"), 1); } else if (forum_delete_post($post)) { - add_to_log($discussion->course, "forum", "delete post", + add_to_log($discussion->course, "forum", "delete post", "discuss.php?d=$post->discussion", "$post->id", $cm->id); - redirect(forum_go_back_to("discuss.php?d=$post->discussion"), + redirect(forum_go_back_to("discuss.php?d=$post->discussion"), get_string("deletedpost", "forum"), 1); } else { error("An error occurred while deleting record $post->id"); @@ -388,20 +329,19 @@ forum_set_return(); print_header(); - notice_yesno(get_string("deletesure", "forum"), - "post.php?delete=$delete&amp;confirm=$delete", + notice_yesno(get_string("deletesure", "forum"), + "post.php?delete=$delete&confirm=$delete", $_SERVER["HTTP_REFERER"]); - - echo "<center><hr />"; + + echo "<CENTER><HR>"; forum_print_post($post, $forum->course, $ownpost=false, $reply=false, $link=false); - echo "</center>"; } - print_footer($course); + die; } else if (isset($prune)) { // Teacher is pruning - + if (! $post = forum_get_post_full($prune)) { error("Post ID was incorrect"); } @@ -419,7 +359,7 @@ } if (isset($_REQUEST['name'])) { // User has confirmed the prune - + $newdiscussion->course = $discussion->course; $newdiscussion->forum = $discussion->forum; $newdiscussion->name = $name; @@ -428,11 +368,11 @@ $newdiscussion->groupid = $discussion->groupid; $newdiscussion->assessed = $discussion->assessed; $newdiscussion->usermodified = $post->userid; - + if (!$newid = insert_record('forum_discussions', $newdiscussion)) { error('Could not create new discussion'); } - + $newpost->id = $post->id; $newpost->parent = 0; $newpost->subject = $name; @@ -442,22 +382,22 @@ } forum_change_discussionid($post->id, $newid); - + // set timemodified to time of last post in each discussion $lastpost = get_record_sql("SELECT MAX(modified) AS time - FROM {$CFG->prefix}forum_posts + FROM {$CFG->prefix}forum_posts WHERE discussion = '$discussion->id'"); set_field('forum_discussions', 'timemodified', $lastpost->time, 'id', $discussion->id); $lastpost = get_record_sql("SELECT MAX(modified) AS time - FROM {$CFG->prefix}forum_posts + FROM {$CFG->prefix}forum_posts WHERE discussion = '$newid'"); - set_field('forum_discussions', 'timemodified', $lastpost->time, 'id', $newid); + set_field('forum_discussions', 'timemodified', $lastpost->time, 'id', $newid); if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $forum->course)) { // For the logs $cm->id = 0; } - add_to_log($discussion->course, "forum", "prune post", + add_to_log($discussion->course, "forum", "prune post", "discuss.php?d=$newid", "$post->id", $cm->id); redirect(forum_go_back_to("discuss.php?d=$newid"), get_string("prunedpost", "forum"), 1); @@ -466,21 +406,20 @@ $course = get_record('course', 'id', $forum->course); $strforums = get_string("modulenameplural", "forum"); - print_header_simple(format_string($discussion->name).": ".format_string($post->subject), "", - "<a href=\"../forum/index.php?id=$course->id\">$strforums</a> -> - <a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a> -> - <a href=\"discuss.php?d=$discussion->id\">".format_string($post->subject,true)."</a> -> ". + print_header_simple("$discussion->name: $post->subject", "", + "<a href=\"../forum/index.php?id=$course->id\">$strforums</a> -> + <a href=\"view.php?f=$forum->id\">$forum->name</a> -> + <a href=\"discuss.php?d=$discussion->id\">$post->subject</a> -> ". get_string("prune", "forum"), '', "", true, "", navmenu($course, $cm)); - + print_heading(get_string('pruneheading', 'forum')); echo '<center>'; - + include('prune.html'); - + forum_print_post($post, $forum->course, $ownpost=false, $reply=false, $link=false); - echo '</center>'; } - print_footer($course); + die; @@ -490,15 +429,13 @@ } - // To get here they need to edit a post, and the $post + // To get here they need to edit a post, and the $post // variable will be loaded with all the particulars, // so bring up the form. // $course, $forum are defined. $discussion is for edit and reply only. - $cm = get_coursemodule_from_instance("forum", $forum->id, $course->id); - - require_login($course->id, false, $cm); + require_login($course->id); if ($post->discussion) { @@ -506,8 +443,7 @@ error("Could not find top parent of post $post->id"); } } else { - $toppost->subject = ($forum->type == "news") ? get_string("addanewtopic", "forum") : - get_string("addanewdiscussion", "forum"); + $toppost->subject = get_string("yournewtopic", "forum"); } if (empty($post->subject)) { @@ -517,9 +453,9 @@ } if ($post->parent) { - $navtail = "<a href=\"discuss.php?d=$discussion->id\">".format_string($toppost->subject,true)."</a> -> ".get_string("editing", "forum"); + $navtail = "<A HREF=\"discuss.php?d=$discussion->id\">$toppost->subject</A> -> ".get_string("editing", "forum"); } else { - $navtail = format_string($toppost->subject); + $navtail = "$toppost->subject"; } if (empty($post->edit)) { @@ -529,19 +465,20 @@ $strforums = get_string("modulenameplural", "forum"); - $navmiddle = "<a href=\"../forum/index.php?id=$course->id\">$strforums</a> -> <a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>"; + $navmiddle = "<A HREF=\"../forum/index.php?id=$course->id\">$strforums</A> -> <A HREF=\"view.php?f=$forum->id\">$forum->name</A>"; + + $cm = get_coursemodule_from_instance("forum", $forum->id, $course->id); if (empty($discussion->name)) { $discussion->name = $forum->name; } if ($course->category) { - print_header("$course->shortname: ".format_string($discussion->name).": ".format_string($toppost->subject), "$course->fullname", - "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> -> + print_header("$course->shortname: $discussion->name: $toppost->subject", "$course->fullname", + "<A HREF=../../course/view.php?id=$course->id>$course->shortname</A> -> $navmiddle -> $navtail", $formstart, "", true, "", navmenu($course, $cm)); - } else { - print_header("$course->shortname: ".format_string($discussion->name).": ".format_string($toppost->subject), "$course->fullname", + print_header("$course->shortname: $discussion->name: $toppost->subject", "$course->fullname", "$navmiddle -> $navtail", "$formstart", "", true, "", navmenu($course, $cm)); } @@ -549,28 +486,20 @@ if (!empty($parent)) { forum_print_post($parent, $course->id, $ownpost=false, $reply=false, $link=false); if (empty($post->edit)) { - if ($CFG->forum_trackreadposts) { - $user_read_array = forum_tp_get_discussion_read_records($USER->id, $discussion->id); - } else { - $user_read_array = array(); - } - forum_print_posts_threaded($parent->id, $course->id, 0, false, false, $user_read_array, $discussion->forum); + forum_print_posts_threaded($parent->id, $course, 0, false, false); } - print_heading(get_string("yourreply", "forum").':'); + echo "<center>"; + echo "<H2>".get_string("yourreply", "forum").":</H2>"; } else { - $forum->intro = trim($forum->intro); - if (!empty($forum->intro)) { - print_simple_box(format_text($forum->intro), 'center'); - } - print_heading(get_string('yournewtopic', 'forum')); + echo "<center>"; + echo "<H2>".get_string("yournewtopic", "forum")."</H2>"; } - echo '<center>'; if (!empty($post->error)) { notify($post->error); } - echo '</center>'; + echo "</center>"; - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); require("post.html"); print_simple_box_end(); diff --git a/mod/forum/prune.html b/mod/forum/prune.html index c8bb3fafdff..1f25b939625 100644 --- a/mod/forum/prune.html +++ b/mod/forum/prune.html @@ -1,18 +1,18 @@ <form name="prune" method="get" action="post.php" enctype="multipart/form-data"> <table border="0" cellpadding="5"> <tr valign="top"> - <td align="right"><b><?php print_string("discussionname", "forum"); ?>:</b></td> + <td align=right><p><b><?php print_string("discussionname", "forum"); ?>:</b></p></td> <td> - <input type="text" name="name" size="60" value="<?php p($post->subject) ?>" /> + <input type="text" name="name" size=60 value="<?php p($post->subject) ?>"> </td> </tr> <tr> - <td align="center" colspan="2"> - <input type="hidden" name="prune" value="<?php p($prune) ?>" /> - <input type="hidden" name="confirm" value="<?php p($prune) ?>" /> - <input type="submit" value="<?php print_string('prune', 'forum'); ?>" /> + <td align=center colspan=2> + <input type="hidden" name=prune value="<?php p($prune) ?>"> + <input type="hidden" name=confirm value="<?php p($prune) ?>"> + <input type="submit" value="<?php print_string('prune', 'forum'); ?>"> </td> </tr> diff --git a/mod/forum/rate.php b/mod/forum/rate.php index 990f5c6c7a4..93c2df06f9a 100644 --- a/mod/forum/rate.php +++ b/mod/forum/rate.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // Collect ratings, store them, then return to where we came from @@ -29,15 +29,10 @@ if ($data) { - $lastpostid = 0; - - foreach ((array)$data as $postid => $rating) { + foreach ($data as $postid => $rating) { if ($postid == "id") { continue; } - - $lastpostid = $postid; - if ($oldrating = get_record("forum_ratings", "userid", $USER->id, "post", $postid)) { if ($rating != $oldrating->rating) { $oldrating->rating = $rating; @@ -58,7 +53,7 @@ } } } - if ($post = get_record('forum_posts', 'id', $lastpostid)) { // To find discussion we're in + if ($post = get_record('forum_posts', 'id', $postid)) { if ($returntoview and ($discussion = get_record('forum_discussions', 'id', $post->discussion))) { redirect("$CFG->wwwroot/mod/forum/view.php?f=$discussion->forum", get_string("ratingssaved", "forum")); } else { diff --git a/mod/forum/report.php b/mod/forum/report.php index 5f07d0c6ecf..6af231e55b5 100644 --- a/mod/forum/report.php +++ b/mod/forum/report.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // For a given post, shows a report of all the ratings it has @@ -38,29 +38,29 @@ $strname = get_string("name"); $strtime = get_string("time"); - print_header("$strratings: ".format_string($post->subject)); + print_header("$strratings: $post->subject"); if (!$ratings = forum_get_ratings($post->id, $sort)) { - error("No ratings for this post: \"".format_string($post->subject)."\""); + error("No ratings for this post: \"$post->subject\""); } else { - echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"3\" class=\"generalbox\" width=\"100%\">"; + echo "<table border=0 cellpadding=3 cellspacing=3 class=generalbox width=100%>"; echo "<tr>"; echo "<th>&nbsp;</th>"; - echo "<th><a href=\"report.php?id=$post->id&amp;sort=u.firstname\">$strname</a>"; - echo "<th width=\"100%\"><a \"href=report.php?id=$post->id&amp;sort=r.rating\">$strrating</a>"; - echo "<th><a href=\"report.php?id=$post->id&amp;sort=r.time\">$strtime</a>"; + echo "<th><a href=report.php?id=$post->id&sort=u.firstname>$strname</a>"; + echo "<th width=100%><a href=report.php?id=$post->id&sort=r.rating>$strrating</a>"; + echo "<th><a href=report.php?id=$post->id&sort=r.time>$strtime</a>"; foreach ($ratings as $rating) { if (isteacher($discussion->course, $rating->id)) { - echo '<tr class="forumpostheadertopic">'; + echo "<tr bgcolor=\"$THEME->cellcontent2\">"; } else { - echo '<tr class="forumpostheader">'; + echo "<tr bgcolor=\"$THEME->cellcontent\">"; } echo "<td>"; print_user_picture($rating->id, $forum->course, $rating->picture); - echo '<td nowrap="nowrap"><p><font size="-1">'.fullname($rating).'</p>'; - echo '<td nowrap="nowrap" align="center"><p><font size="-1">'.$scalemenu[$rating->rating]."</p>"; - echo '<td nowrap="nowrap" align="center"><p><font size="-1">'.userdate($rating->time)."</p>"; + echo '<td nowrap><p><font size="-1">'.fullname($rating).'</p>'; + echo '<td nowrap align="center"><p><font size="-1">'.$scalemenu[$rating->rating]."</p>"; + echo '<td nowrap align="center"><p><font size="-1">'.userdate($rating->time)."</p>"; echo "</tr>\n"; } echo "</table>"; diff --git a/mod/forum/restorelib.php b/mod/forum/restorelib.php index 1ee91218201..d09764a377d 100644 --- a/mod/forum/restorelib.php +++ b/mod/forum/restorelib.php @@ -1,27 +1,26 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //forum mods //This is the "graphical" structure of the forum mod: // - // forum - // (CL,pk->id) - // | - // --------------------------------------------------- - // | | - // subscriptions forum_discussions - //(UL,pk->id, fk->forum) ---------------(UL,pk->id, fk->forum) - // | | - // | | - // | | - // | forum_posts - // |-------------(UL,pk->id,fk->discussion, - // | nt->parent,files) - // | | - // | | - // | | - // forum_read forum_ratings - // (UL,pk->id,fk->post (UL,pk->id,fk->post) + // forum + // (CL,pk->id) + // | + // ----------------------------------- + // | | + // subscriptions forum_discussions + // (UL,pk->id, fk->forum) (UL,pk->id, fk->forum) + // | + // | + // | + // forum_posts + // (UL,pk->id,fk->discussion,nt->parent,files) + // | + // | + // | + // forum_ratings + // (UL,pk->id,fk->post) // // Meaning: pk->primary key field of the table // fk->foreign key to link with parent @@ -72,7 +71,7 @@ $forum->scale = -($scale->new_id); } } - + $forumtobeinserted = true; //If the forum is a teacher forum, then we have to look if it exists in destination course if ($forum->type == "teacher") { @@ -91,7 +90,7 @@ } //Do some output - echo "<li>".get_string("modulename","forum")." \"".format_string(stripslashes($forum->name),true)."\""; + echo "<ul><li>".get_string("modulename","forum")." \"".$forum->name."\"<br>"; backup_flush(300); if ($newid) { @@ -106,14 +105,14 @@ //Restore forum_discussions $status = forum_discussions_restore_mods ($newid,$info,$restore); } - if ($status) { - //Restore forum_read - $status = forum_read_restore_mods ($newid,$info,$restore); - } } } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -159,7 +158,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -233,7 +232,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -264,89 +263,7 @@ $temp_discussion->userid = $discussion->userid; //Update discussion (only firstpost and userid will be changed) $status = update_record("forum_discussions",$temp_discussion); - //echo "Updated firstpost ".$old_firstpost." to ".$temp_discussion->firstpost."<br />"; //Debug - } else { - $status = false; - } - } - - return $status; - } - - //This function restores the forum_read - function forum_read_restore_mods($forum_id,$info,$restore) { - - global $CFG; - - $status = true; - - //Get the read array - $readposts = $info['MOD']['#']['READPOSTS']['0']['#']['READ']; - - //Iterate over readposts - for($i = 0; $i < sizeof($readposts); $i++) { - $rea_info = $readposts[$i]; - //traverse_xmlize($rea_info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - - //We'll need this later!! - $oldid = backup_todb($rea_info['#']['ID']['0']['#']); - - //Now, build the FORUM_READ record structure - $read->forumid = $forum_id; - $read->userid = backup_todb($rea_info['#']['USERID']['0']['#']); - $read->discussionid = backup_todb($rea_info['#']['DISCUSSIONID']['0']['#']); - $read->postid = backup_todb($rea_info['#']['POSTID']['0']['#']); - $read->firstread = backup_todb($rea_info['#']['FIRSTREAD']['0']['#']); - $read->lastread = backup_todb($rea_info['#']['LASTREAD']['0']['#']); - - //Some recoding and check are performed now - $toinsert = true; - - //We have to recode the userid field - $user = backup_getid($restore->backup_unique_code,"user",$read->userid); - if ($user) { - $read->userid = $user->new_id; - } else { - $toinsert = false; - } - - //We have to recode the discussionid field - $discussion = backup_getid($restore->backup_unique_code,"forum_discussions",$read->discussionid); - if ($discussion) { - $read->discussionid = $discussion->new_id; - } else { - $toinsert = false; - } - - //We have to recode the postid field - $post = backup_getid($restore->backup_unique_code,"forum_posts",$read->postid); - if ($post) { - $read->postid = $post->new_id; - } else { - $toinsert = false; - } - - //The structure is equal to the db, so insert the forum_read - $newid = 0; - if ($toinsert) { - $newid = insert_record ("forum_read",$read); - } - - //Do some output - if (($i+1) % 50 == 0) { - echo "."; - if (($i+1) % 1000 == 0) { - echo "<br />"; - } - backup_flush(300); - } - - if ($newid) { - //We have the newid, update backup_ids - backup_putid($restore->backup_unique_code,"forum_read",$oldid, - $newid); + //echo "Updated firstpost ".$old_firstpost." to ".$temp_discussion->firstpost."<br>"; //Debug } else { $status = false; } @@ -394,7 +311,7 @@ if ($user) { $post->userid = $user->new_id; } - + //The structure is equal to the db, so insert the forum_posts $newid = insert_record ("forum_posts",$post); @@ -402,7 +319,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -446,7 +363,7 @@ //Create temp post record $temp_post->id = $post->id; $temp_post->parent = $post->parent; - //echo "Updated parent ".$old_parent." to ".$temp_post->parent."<br />"; //Debug + //echo "Updated parent ".$old_parent." to ".$temp_post->parent."<br>"; //Debug //Update post (only parent will be changed) $status = update_record("forum_posts",$temp_post); } @@ -474,7 +391,7 @@ //First, locate course's moddata directory $moddata_path = $CFG->dataroot."/".$restore->course_id."/".$CFG->moddata; - + //Check it exists and create it $status = check_dir_exists($moddata_path,true); @@ -549,7 +466,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -566,56 +483,12 @@ return $status; } - //This function converts texts in FORMAT_WIKI to FORMAT_MARKDOWN for - //some texts in the module - function forum_restore_wiki2markdown ($restore) { - - global $CFG; - - $status = true; - - //Convert forum_posts->message - if ($records = get_records_sql ("SELECT p.id, p.message, p.format - FROM {$CFG->prefix}forum_posts p, - {$CFG->prefix}forum_discussions d, - {$CFG->prefix}forum f, - {$CFG->prefix}backup_ids b - WHERE d.id = p.discussion AND - f.id = d.forum AND - f.course = $restore->course_id AND - p.format = ".FORMAT_WIKI. " AND - b.backup_code = $restore->backup_unique_code AND - b.table_name = 'forum_posts' AND - b.new_id = p.id")) { - foreach ($records as $record) { - //Rebuild wiki links - $record->message = restore_decode_wiki_content($record->message, $restore); - //Convert to Markdown - $wtm = new WikiToMarkdown(); - $record->message = $wtm->convert($record->message, $restore->course_id); - $record->format = FORMAT_MARKDOWN; - $status = update_record('forum_posts', addslashes_object($record)); - //Do some output - $i++; - if (($i+1) % 1 == 0) { - echo "."; - if (($i+1) % 20 == 0) { - echo "<br />"; - } - backup_flush(300); - } - } - - } - return $status; - } - //This function returns a log record with all the necessay transformations //done. It's used by restore_log_module() to restore modules log. function forum_restore_logs($restore,$log) { - + $status = false; - + //Depending of the action, we recode different things switch ($log->action) { case "add": @@ -740,7 +613,7 @@ //Get the post record from database $dbpos = get_record("forum_posts","id","$pos->new_id"); if ($dbpos) { - $log->url = "discuss.php?d=".$dbpos->discussion."&amp;parent=".$pos->new_id; + $log->url = "discuss.php?d=".$dbpos->discussion."&parent=".$pos->new_id; $log->info = $pos->new_id; $status = true; } @@ -755,12 +628,12 @@ //Get the post record from database $dbpos = get_record("forum_posts","id","$pos->new_id"); if ($dbpos) { - $log->url = "discuss.php?d=".$dbpos->discussion."&amp;parent=".$pos->new_id; + $log->url = "discuss.php?d=".$dbpos->discussion."&parent=".$pos->new_id; $log->info = $pos->new_id; $status = true; } } - } + } break; case "delete post": if ($log->cmid) { @@ -775,11 +648,11 @@ } break; case "search": - $log->url = "search.php?id=".$log->course."&amp;search=".urlencode($log->info); + $log->url = "search.php?id=".$log->course."&search=".urlencode($log->info); $status = true; break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored<br />"; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>"; //Debug break; } @@ -790,7 +663,7 @@ } //Return a content decoded to support interactivities linking. Every module - //should have its own. They are called automatically from + //should have its own. They are called automatically from //forum_decode_content_links_caller() function in each module //in the restore process function forum_decode_content_links ($content,$restore) { @@ -968,12 +841,12 @@ $status = true; echo "<ul>"; - + //FORUM: Decode every POST (message) in the coure - + //Check we are restoring forums if ($restore->mods['forum']->restore == 1) { - echo "<li>".get_string("from")." ".get_string("modulenameplural","forum").'</li>'; + echo "<li>".get_string("from")." ".get_string("modulenameplural","forum"); //Get all course posts if ($posts = get_records_sql ("SELECT p.id, p.message FROM {$CFG->prefix}forum_posts p, @@ -984,7 +857,7 @@ $i = 0; //Counter to send some output to the browser to avoid timeouts foreach ($posts as $post) { //Increment counter - $i++; + $i++; $content = $post->message; $result = forum_decode_content_links($content,$restore); if ($result != $content) { @@ -992,14 +865,14 @@ $post->message = addslashes($result); $status = update_record("forum_posts",$post); if ($CFG->debug>7) { - echo "<br /><hr />".$content."<br />changed to<br />".$result."<hr /><br />"; + echo "<br><hr>".$content."<br>changed to</br>".$result."<hr><br>"; } } //Do some output if (($i+1) % 5 == 0) { echo "."; if (($i+1) % 100 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -1027,14 +900,14 @@ $forum->intro = addslashes($result); $status = update_record("forum",$forum); if ($CFG->debug>7) { - echo "<br /><hr />".$content."<br />changed to</br>".$result."<hr /><br />"; + echo "<br><hr>".$content."<br>changed to</br>".$result."<hr><br>"; } } //Do some output if (($i+1) % 5 == 0) { echo "."; if (($i+1) % 100 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -1046,7 +919,7 @@ //Check we are restoring resources if ($restore->mods['resource']->restore == 1) { - echo "<li>".get_string("from")." ".get_string("modulenameplural","resource").'</li>'; + echo "<li>".get_string("from")." ".get_string("modulenameplural","resource"); //Get all course resources if ($resources = get_records_sql ("SELECT r.id, r.alltext FROM {$CFG->prefix}resource r @@ -1063,14 +936,14 @@ $resource->alltext = addslashes($result); $status = update_record("resource",$resource); if ($CFG->debug>7) { - echo "<br /><hr />".$content."<br />changed to</br>".$result."<hr /><br />"; + echo "<br><hr>".$content."<br>changed to</br>".$result."<hr><br>"; } } //Do some output if (($i+1) % 5 == 0) { echo "."; if (($i+1) % 100 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -1098,14 +971,14 @@ $resource->summary = addslashes($result); $status = update_record("resource",$resource); if ($CFG->debug>7) { - echo "<br /><hr />".$content."<br />changed to</br>".$result."<hr /><br />"; + echo "<br><hr>".$content."<br>changed to</br>".$result."<hr><br>"; } } //Do some output if (($i+1) % 5 == 0) { echo "."; if (($i+1) % 100 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } diff --git a/mod/forum/rsslib.php b/mod/forum/rsslib.php index e9519ae2745..d17fd857b16 100644 --- a/mod/forum/rsslib.php +++ b/mod/forum/rsslib.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ //This file adds support to rss feeds generation //This function is the main entry point to forum @@ -48,7 +48,7 @@ continue; } - mtrace("Updating RSS feed for ".format_string($forum->name,true).", ID: $forum->id"); + mtrace("Updating RSS feed for $forum->name, ID: $forum->id"); //Some debug... if ($CFG->debug > 7) { @@ -82,9 +82,9 @@ function forum_rss_newstuff($forum, $time) { // If there is new stuff in the forum since $time then this returns // true. Otherwise it returns false. - if ($forum->rsstype == 1) { + if ($forum->rsstype == 1) { $items = forum_rss_feed_discussions($forum, $time); - } else { + } else { $items = forum_rss_feed_posts($forum, $time); } return (!empty($items)); @@ -102,14 +102,14 @@ if (empty($CFG->enablerssfeeds)) { //Some debug... if ($CFG->debug > 7) { - echo "DISABLED (admin variables)"; - } + echo "DISABLED (admin variables)"; + } //Check CFG->forum_enablerssfeeds } else if (empty($CFG->forum_enablerssfeeds)) { - //Some debug... + //Some debug... if ($CFG->debug > 7) { echo "DISABLED (module configuration)"; - } + } //It's working so we start... } else { //Check the forum has rss activated @@ -119,14 +119,14 @@ $items = forum_rss_feed_discussions($forum); } else { //Post RSS $items = forum_rss_feed_posts($forum); - + } //Now, if items, we begin building the structure if (!empty($items)) { //First all rss feeds common headers - $header = rss_standard_header(format_string($forum->name,true), + $header = rss_standard_header($forum->name, $CFG->wwwroot."/mod/forum/view.php?f=".$forum->id, - format_string($forum->intro,true)); + $forum->intro); //Now all the rss items if (!empty($header)) { $articles = rss_add_items($items); @@ -140,7 +140,7 @@ $status = $header.$articles.$footer; } else { $status = false; - } + } } else { $status = false; } @@ -163,14 +163,14 @@ $newsince = ""; } - if ($recs = get_records_sql ("SELECT d.id AS discussionid, - d.name AS discussionname, - u.id AS userid, - u.firstname AS userfirstname, - u.lastname AS userlastname, - p.message AS postmessage, - p.created AS postcreated, - p.format AS postformat + if ($recs = get_records_sql ("SELECT d.id discussionid, + d.name discussionname, + u.id userid, + u.firstname userfirstname, + u.lastname userlastname, + p.message postmessage, + p.created postcreated, + p.format postformat FROM {$CFG->prefix}forum_discussions d, {$CFG->prefix}forum_posts p, {$CFG->prefix}user u @@ -208,7 +208,7 @@ } return $items; } - + //This function returns "items" record array to be used to build the rss feed //for a Type=posts forum function forum_rss_feed_posts($forum, $newsince=0) { @@ -223,15 +223,15 @@ $newsince = ""; } - if ($recs = get_records_sql ("SELECT p.id AS postid, - d.id AS discussionid, - u.id AS userid, - u.firstname AS userfirstname, - u.lastname AS userlastname, - p.subject AS postsubject, - p.message AS postmessage, - p.created AS postcreated, - p.format AS postformat + if ($recs = get_records_sql ("SELECT p.id postid, + d.id discussionid, + u.id userid, + u.firstname userfirstname, + u.lastname userlastname, + p.subject postsubject, + p.message postmessage, + p.created postcreated, + p.format postformat FROM {$CFG->prefix}forum_discussions d, {$CFG->prefix}forum_posts p, {$CFG->prefix}user u diff --git a/mod/forum/search.php b/mod/forum/search.php index 65b09d3a14f..ed147ec0d9f 100644 --- a/mod/forum/search.php +++ b/mod/forum/search.php @@ -1,390 +1,127 @@ -<?php // $Id$ +<?PHP // $Id$ - require_once('../../config.php'); - require_once('lib.php'); + require_once("../../config.php"); + require_once("lib.php"); - $id = required_param('id', PARAM_INT); // course id - $search = trim(optional_param('search', '', PARAM_NOTAGS)); // search string - $page = optional_param('page', 0, PARAM_INT); // which page to show - $perpage = optional_param('perpage', 20, PARAM_INT); // which page to show + require_variable($id); // course id + optional_variable($search, ""); // search string + optional_variable($page, "0"); // which page to show + optional_variable($perpage, "20"); // which page to show - $user = trim(optional_param('user', '', PARAM_NOTAGS)); // Names to search for - $userid = trim(optional_param('userid', 0, PARAM_INT)); // UserID to search for - $forumid = trim(optional_param('forumid', 0, PARAM_INT)); // ForumID to search for - $subject = trim(optional_param('subject', '', PARAM_NOTAGS)); // Subject - $phrase = trim(optional_param('phrase', '', PARAM_NOTAGS)); // Phrase - $words = trim(optional_param('words', '', PARAM_NOTAGS)); // Words - $fullwords = trim(optional_param('fullwords', '', PARAM_NOTAGS)); // Whole words - $notwords = trim(optional_param('notwords', '', PARAM_NOTAGS)); // Words we don't want - - $timefromrestrict = optional_param('timefromrestrict', 0, PARAM_INT); // Use starting date - $fromday = optional_param('fromday', 0, PARAM_INT); // Starting date - $frommonth = optional_param('frommonth', 0, PARAM_INT); // Starting date - $fromyear = optional_param('fromyear', 0, PARAM_INT); // Starting date - $fromhour = optional_param('fromhour', 0, PARAM_INT); // Starting date - $fromminute = optional_param('fromminute', 0, PARAM_INT); // Starting date - if ($timefromrestrict) { - $datefrom = make_timestamp($fromyear, $frommonth, $fromday, $fromhour, $fromminute); - } else { - $datefrom = optional_param('datefrom', 0, PARAM_INT); // Starting date - } - - $timetorestrict = optional_param('timetorestrict', 0, PARAM_INT); // Use ending date - $today = optional_param('today', 0, PARAM_INT); // Ending date - $tomonth = optional_param('tomonth', 0, PARAM_INT); // Ending date - $toyear = optional_param('toyear', 0, PARAM_INT); // Ending date - $tohour = optional_param('tohour', 0, PARAM_INT); // Ending date - $tominute = optional_param('tominute', 0, PARAM_INT); // Ending date - if ($timetorestrict) { - $dateto = make_timestamp($toyear, $tomonth, $today, $tohour, $tominute); - } else { - $dateto = optional_param('datefrom', 0, PARAM_INT); // Ending date - } - - - - if (empty($search)) { // Check the other parameters instead - if (!empty($words)) { - $search .= ' '.$words; - } - if (!empty($userid)) { - $search .= ' userid:'.$userid; - } - if (!empty($forumid)) { - $search .= ' forumid:'.$forumid; - } - if (!empty($user)) { - $search .= ' '.forum_clean_search_terms($user, 'user:'); - } - if (!empty($subject)) { - $search .= ' '.forum_clean_search_terms($subject, 'subject:'); - } - if (!empty($fullwords)) { - $search .= ' '.forum_clean_search_terms($fullwords, '+'); - } - if (!empty($notwords)) { - $search .= ' '.forum_clean_search_terms($notwords, '-'); - } - if (!empty($phrase)) { - $search .= ' "'.$phrase.'"'; - } - if (!empty($datefrom)) { - $search .= ' datefrom:'.$datefrom; - } - if (!empty($dateto)) { - $search .= ' dateto:'.$dateto; - } - $individualparams = true; - } else { - $individualparams = false; - } + $search = trim(strip_tags($search)); if ($search) { - $search = forum_clean_search_terms($search); + $searchterms = explode(" ", $search); // Search for words independently + foreach ($searchterms as $key => $searchterm) { + if (strlen($searchterm) < 2) { + unset($searchterms[$key]); + } + } + $search = s(trim(implode(" ", $searchterms))); } if (! $course = get_record("course", "id", $id)) { error("Course id is incorrect."); } - require_course_login($course); + if ($course->category or $CFG->forcelogin) { + require_login($course->id); + } - add_to_log($course->id, "forum", "search", "search.php?id=$course->id&amp;search=".urlencode($search), $search); + add_to_log($course->id, "forum", "search", "search.php?id=$course->id&search=".urlencode($search), $search); $strforums = get_string("modulenameplural", "forum"); $strsearch = get_string("search", "forum"); $strsearchresults = get_string("searchresults", "forum"); $strpage = get_string("page"); + $searchform = forum_print_search_form($course, $search, true, "plain"); + if (!$search) { print_header_simple("$strsearch", "", - "<a href=\"index.php?id=$course->id\">$strforums</a> -> $strsearch", 'search.words', + "<A HREF=\"index.php?id=$course->id\">$strforums</A> -> $strsearch", "search.search", "", "", "&nbsp;", navmenu($course)); - forum_print_big_search_form($course); - print_footer($course); - exit; + print_simple_box_start("center"); + echo "<center>"; + echo "<br />"; + echo $searchform; + echo "<br /><p>"; + print_string("searchhelp"); + echo "</p>"; + echo "</center>"; + print_simple_box_end(); } -/// We need to do a search now and print results + if ($search) { - $searchterms = str_replace('forumid:', 'instance:', $search); - $searchterms = explode(' ', $searchterms); + if (!$posts = forum_search_posts($searchterms, $course->id, $page*$perpage, $perpage, $totalcount)) { - $searchform = forum_search_form($course, $search); - if ($group = user_group($course->id, $USER->id)) { - $groupid = $group->id; - } else { - $groupid = 0; - } + print_header_simple("$strsearchresults", "", + "<a href=\"index.php?id=$course->id\">$strforums</a> -> + <a href=\"search.php?id=$course->id\">$strsearch</a> -> \"$search\"", "search.search", + "", "", "&nbsp;", navmenu($course)); + print_heading(get_string("nopostscontaining", "forum", $search)); - if (!$posts = forum_search_posts($searchterms, $course->id, $page*$perpage, $perpage, $totalcount, $groupid)) { + print_simple_box_start("center"); + echo "<center>"; + echo "<br />"; + echo $searchform; + echo "<br /><p>"; + print_string("searchhelp"); + echo "</p>"; + echo "</center>"; + print_simple_box_end(); + print_footer($course); + exit; + } print_header_simple("$strsearchresults", "", - "<a href=\"index.php?id=$course->id\">$strforums</a> -> - <a href=\"search.php?id=$course->id\">$strsearch</a> -> ".s($search), 'search.words', - "", "", "&nbsp;", navmenu($course)); - print_heading(get_string("nopostscontaining", "forum", $search)); + "<a href=\"index.php?id=$course->id\">$strforums</a> -> + <a href=\"search.php?id=$course->id\">$strsearch</a> -> \"$search\"", "search.search", + "", "", $searchform, navmenu($course)); - if (!$individualparams) { - $words = $search; - } + print_heading("$strsearchresults: $totalcount"); - forum_print_big_search_form($course); + echo "<center>"; + print_paging_bar($totalcount, $page, $perpage, "search.php?search=$search&id=$course->id&perpage=$perpage&"); + echo "</center>"; - print_footer($course); - exit; - } + foreach ($posts as $post) { - print_header_simple("$strsearchresults", "", - "<a href=\"index.php?id=$course->id\">$strforums</a> -> - <a href=\"search.php?id=$course->id\">$strsearch</a> -> ".s($search), '', - "", "", $searchform, navmenu($course)); - - print_heading("$strsearchresults: $totalcount"); - - print_paging_bar($totalcount, $page, $perpage, "search.php?search=$search&amp;id=$course->id&amp;perpage=$perpage&amp;"); - - //added to implement highlighting of search terms found only in HTML markup - //fiedorow - 9/2/2005 - $strippedsearch = str_replace('user:','',$search); - $strippedsearch = str_replace('subject:','',$strippedsearch); - $strippedsearch = str_replace('&quot;','',$strippedsearch); - $searchterms = explode(' ', $strippedsearch); // Search for words independently - foreach ($searchterms as $key => $searchterm) { - if (preg_match('/^\-/',$searchterm)) { - unset($searchterms[$key]); - } else { - $searchterms[$key] = preg_replace('/^\+/','',$searchterm); - } - } - - foreach ($posts as $post) { - - if (! $discussion = get_record('forum_discussions', 'id', $post->discussion)) { - error('Discussion ID was incorrect'); - } - if (! $forum = get_record('forum', 'id', "$discussion->forum")) { - error("Could not find forum $discussion->forum"); - } - - $post->subject = highlight("$strippedsearch", $post->subject); - $discussion->name = highlight("$strippedsearch", $discussion->name); - - $fullsubject = "<a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>"; - if ($forum->type != 'single') { - $fullsubject .= " -> <a href=\"discuss.php?d=$discussion->id\">".format_string($discussion->name,true)."</a>"; - if ($post->parent != 0) { - $fullsubject .= " -> <a href=\"discuss.php?d=$post->discussion&amp;parent=$post->id\">".format_string($post->subject,true)."</a>"; + if (! $discussion = get_record("forum_discussions", "id", $post->discussion)) { + error("Discussion ID was incorrect"); } - } - - $post->subject = $fullsubject; - - /// Add the forum id to the post object - used by read tracking. - $post->forum = $forum->id; - - //Indicate search terms only found in HTML markup - //Use highlight() with nonsense tags to spot search terms in the - //actual text content first. fiedorow - 9/2/2005 - $missing_terms = ""; - $message = highlight($strippedsearch,format_text($post->message, $post->format, NULL, $course->id), - 0,'<fgw9sdpq4>','</fgw9sdpq4>'); - - foreach ($searchterms as $searchterm) { - if (preg_match("/$searchterm/i",$message) && !preg_match('/<fgw9sdpq4>'.$searchterm.'<\/fgw9sdpq4>/i',$message)) { - $missing_terms .= " $searchterm"; + if (! $forum = get_record("forum", "id", "$discussion->forum")) { + error("Could not find forum $discussion->forum"); } + + $post->subject = highlight("$search", $post->subject); + $discussion->name = highlight("$search", $discussion->name); + + $fullsubject = "<a href=\"view.php?f=$forum->id\">$forum->name</a>"; + if ($forum->type != "single") { + $fullsubject .= " -> <a href=\"discuss.php?d=$discussion->id\">$discussion->name</a>"; + if ($post->parent != 0) { + $fullsubject .= " -> <a href=\"discuss.php?d=$post->discussion&parent=$post->id\">$post->subject</a>"; + } + } + + $post->subject = $fullsubject; + + $fulllink = "<p align=\"right\"><a href=\"discuss.php?d=$post->discussion#$post->id\">".get_string("postincontext", "forum")."</a></p>"; + forum_print_post($post, $course->id, false, false, false, false, $fulllink, $search); + + echo "<br />"; } - $message = str_replace('<fgw9sdpq4>','<span class="highlight">',$message); - $message = str_replace('</fgw9sdpq4>','</span>',$message); - - if ($missing_terms) { - $strmissingsearchterms = get_string('missingsearchterms','forum'); - $post->message = '<p class="highlight2">'.$strmissingsearchterms.' '.$missing_terms.'</p>'.$message; - } else { - $post->message = $message; - } - - $fulllink = "<a href=\"discuss.php?d=$post->discussion#$post->id\">".get_string("postincontext", "forum")."</a>"; - //search terms already highlighted - fiedorow - 9/2/2005 - forum_print_post($post, $course->id, false, false, false, false, $fulllink); - - echo "<br />"; + echo "<center>"; + print_paging_bar($totalcount, $page, $perpage, "search.php?search=".urlencode($search)."&id=$course->id&perpage=$perpage&"); + echo "</center>"; } - print_paging_bar($totalcount, $page, $perpage, "search.php?search=".urlencode($search)."&amp;id=$course->id&amp;perpage=$perpage&amp;"); - print_footer($course); - - -function forum_print_big_search_form($course) { - global $words, $subject, $phrase, $user, $userid, $fullwords, $notwords, $datefrom, $dateto; - - print_simple_box(get_string('searchforumintro', 'forum'), 'center', '', '', 'searchbox', 'intro'); - - print_simple_box_start("center"); - - echo "<script type=\"text/javascript\" language=\"javascript\">\n"; - echo "var timefromitems = ['fromday','frommonth','fromyear','fromhour', 'fromminute'];\n"; - echo "var timetoitems = ['today','tomonth','toyear','tohour','tominute'];\n"; - echo "</script>\n"; - - echo '<form name="search" action="search.php" method="get">'; - echo '<input type="hidden" value="'.$course->id.'" name="id" alt="">'; - echo '<table cellpadding="10" class="searchbox" id="form">'; - - echo '<tr>'; - echo '<td class="c0">'.get_string('searchwords', 'forum').':</td>'; - echo '<td class="c1"><input type="text" size="35" name="words" value="'.s($words).'" alt=""></td>'; - echo '</tr>'; - - echo '<tr>'; - echo '<td class="c0">'.get_string('searchphrase', 'forum').':</td>'; - echo '<td class="c1"><input type="text" size="35" name="phrase" value="'.s($phrase).'" alt=""></td>'; - echo '</tr>'; - - echo '<tr>'; - echo '<td class="c0">'.get_string('searchnotwords', 'forum').':</td>'; - echo '<td class="c1"><input type="text" size="35" name="notwords" value="'.s($notwords).'" alt=""></td>'; - echo '</tr>'; - - echo '<tr>'; - echo '<td class="c0">'.get_string('searchfullwords', 'forum').':</td>'; - echo '<td class="c1"><input type="text" size="35" name="fullwords" value="'.s($fullwords).'" alt=""></td>'; - echo '</tr>'; - - echo '<tr>'; - echo '<td class="c0">'.get_string('searchdatefrom', 'forum').':</td>'; - echo '<td class="c1">'; - echo '<input name="timefromrestrict" type="checkbox" value="1" alt="'.get_string('searchdatefrom', 'forum').'" onclick="return lockoptions(\'search\', \'timefromrestrict\', timefromitems)" /> '; - if (empty($dateto)) { - $datefrom = make_timestamp(2000, 1, 1, 0, 0, 0); - } - print_date_selector('fromday', 'frommonth', 'fromyear', $datefrom); - print_time_selector('fromhour', 'fromminute', $datefrom); - - echo '<input type="hidden" name="hfromday" value="0" />'; - echo '<input type="hidden" name="hfrommonth" value="0" />'; - echo '<input type="hidden" name="hfromyear" value="0" />'; - echo '<input type="hidden" name="hfromhour" value="0" />'; - echo '<input type="hidden" name="hfromminute" value="0" />'; - - echo '</td>'; - echo '</tr>'; - - echo '<tr>'; - echo '<td class="c0">'.get_string('searchdateto', 'forum').':</td>'; - echo '<td class="c1">'; - echo '<input name="timetorestrict" type="checkbox" value="1" alt="'.get_string('searchdateto', 'forum').'" onclick="return lockoptions(\'search\', \'timetorestrict\', timetoitems)" /> '; - if (empty($dateto)) { - $dateto = time()+3600; - } - print_date_selector('today', 'tomonth', 'toyear', $dateto); - print_time_selector('tohour', 'tominute', $dateto); - - echo '<input type="hidden" name="htoday" value="0" />'; - echo '<input type="hidden" name="htomonth" value="0" />'; - echo '<input type="hidden" name="htoyear" value="0" />'; - echo '<input type="hidden" name="htohour" value="0" />'; - echo '<input type="hidden" name="htominute" value="0" />'; - - echo '</td>'; - echo '</tr>'; - - echo '<tr>'; - echo '<td class="c0">'.get_string('searchwhichforums', 'forum').':</td>'; - echo '<td class="c1">'; - choose_from_menu(forum_menu_list($course), 'forumid', '', get_string('allforums', 'forum'), ''); - echo '</td>'; - echo '</tr>'; - - echo '<tr>'; - echo '<td class="c0">'.get_string('searchsubject', 'forum').':</td>'; - echo '<td class="c1"><input type="text" size="35" name="subject" value="'.s($subject).'" alt=""></td>'; - echo '</tr>'; - - echo '<tr>'; - echo '<td class="c0">'.get_string('searchuser', 'forum').':</td>'; - echo '<td class="c1"><input type="text" size="35" name="user" value="'.s($user).'" alt=""></td>'; - echo '</tr>'; - - echo '<tr>'; - echo '<td class="submit" colspan="2" align="center">'; - echo '<input type="submit" value="'.get_string('searchforums', 'forum').'" alt=""></td>'; - echo '</tr>'; - - echo '</table>'; - echo '</form>'; - - echo "<script type=\"text/javascript\">"; - echo "lockoptions('search','timefromrestrict', timefromitems);"; - echo "lockoptions('search','timetorestrict', timetoitems);"; - echo "</script>\n"; - - print_simple_box_end(); -} - - -function forum_clean_search_terms($words, $prefix='') { - $searchterms = explode(' ', $words); - foreach ($searchterms as $key => $searchterm) { - if (strlen($searchterm) < 2) { - unset($searchterms[$key]); - } else if ($prefix) { - $searchterms[$key] = $prefix.$searchterm; - } - } - return trim(implode(' ', $searchterms)); -} - -function forum_menu_list($course) { - - $menu = array(); - - $currentgroup = get_current_group($course->id); - $isteacher = isteacher($course->id); - - if ($isteacher) { // Add teacher forum - if ($forum = forum_get_course_forum($course->id, 'teacher')) { - $menu[$forum->id] = format_string($forum->name,true); - } - } - - if ($forums = get_all_instances_in_course("forum", $course)) { - if ($course->format == 'weeks') { - $strsection = get_string('week'); - } else { - $strsection = get_string('topic'); - } - - foreach ($forums as $forum) { - if (!$isteacher) { // Non-teachers - if ($forum->type == "teacher") { - continue; - } - if (!isset($forum->visible)) { - if (! instance_is_visible("forum", $forum)) { - continue; - } - } - if ($cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { - $groupmode = groupmode($course, $cm); // Groups are being used - if (($groupmode == SEPARATEGROUPS) and ($currentgroup === false)) { - continue; - } - } - } - - $menu[$forum->id] = format_string($forum->name,true); - } - } - - return $menu; -} - ?> diff --git a/mod/forum/subscribe.php b/mod/forum/subscribe.php index 09bbae455b1..84704423d04 100644 --- a/mod/forum/subscribe.php +++ b/mod/forum/subscribe.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // Subscribe to or unsubscribe from a forum. @@ -7,7 +7,11 @@ require_variable($id); // The forum to subscribe or unsubscribe to optional_variable($force); // Force everyone to be subscribed to this forum? - optional_variable($user); + optional_variable($user); // Force everyone to be subscribed to this forum? + + if (isguest()) { + error("Guests are not allowed to subscribe to posts.", $_SERVER["HTTP_REFERER"]); + } if (! $forum = get_record("forum", "id", $id)) { error("Forum ID was incorrect"); @@ -17,16 +21,6 @@ error("Forum doesn't belong to a course!"); } - if ($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) { - if (groupmode($course, $cm) and !isteacheredit($course->id)) { // Make sure user is allowed - if (! mygroupid($course->id)) { - error("Sorry, but you must be a group member to subscribe."); - } - } - } else { - $cm->id = NULL; - } - if ($user) { if (!isteacher($course->id)) { error("Only teachers can subscribe/unsubscribe other people!"); @@ -38,29 +32,10 @@ $user = $USER; } - require_course_login($course, false, $cm); - - if (isguest()) { // Guests can't subscribe - $wwwroot = $CFG->wwwroot.'/login/index.php'; - if (!empty($CFG->loginhttps)) { - $wwwroot = str_replace('http','https', $wwwroot); - } - - $strforums = get_string('modulenameplural', 'forum'); - if ($course->category) { - print_header($course->shortname, $course->fullname, - "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> -> - <a href=\"../forum/index.php?id=$course->id\">$strforums</a> -> - <a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>", '', '', true, "", navmenu($course, $cm)); - } else { - print_header($course->shortname, $course->fullname, - "<a href=\"../forum/index.php?id=$course->id\">$strforums</a> -> - <a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>", '', '', true, "", navmenu($course, $cm)); - } - notice_yesno(get_string('noguestsubscribe', 'forum').'<br /><br />'.get_string('liketologin'), - $wwwroot, $_SERVER['HTTP_REFERER']); - print_footer($course); - exit; + if ($course->category) { + require_login($forum->course); + } else { + require_login(); } if ($forum->type == "teacher") { @@ -69,6 +44,16 @@ } } + if ($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) { + if (groupmode($course, $cm) and !isteacheredit($course->id)) { // Make sure user is allowed + if (! mygroupid($course->id)) { + error("Sorry, but you must be a group member to subscribe."); + } + } + } else { + $cm->id = NULL; + } + $returnto = forum_go_back_to("index.php?id=$course->id"); if ($force and isteacher($course->id)) { @@ -86,7 +71,7 @@ } $info->name = fullname($user); - $info->forum = format_string($forum->name); + $info->forum = $forum->name; if ( forum_is_subscribed($user->id, $forum->id) ) { if (forum_unsubscribe($user->id, $forum->id) ) { @@ -95,7 +80,7 @@ } else { error("Could not unsubscribe you from that forum", $_SERVER["HTTP_REFERER"]); } - + } else { // subscribe if (forum_subscribe($user->id, $forum->id) ) { add_to_log($course->id, "forum", "subscribe", "view.php?f=$forum->id", $forum->id, $cm->id); diff --git a/mod/forum/subscriber.html b/mod/forum/subscriber.html index 9417bbeb70f..a78fa1ecb51 100644 --- a/mod/forum/subscriber.html +++ b/mod/forum/subscriber.html @@ -1,7 +1,7 @@ <form name="subscriberform" id="subscriberform" method="post" action="subscribers.php"> -<input type="hidden" name="previoussearch" value="<?php echo $previoussearch ?>" /> -<input type="hidden" name="id" value="<?php echo $id?>" /> +<input type="hidden" name="previoussearch" value="<?php echo $previoussearch ?>"> +<input type="hidden" name="id" value="<?php echo $id?>"> <table align="center" border="0" cellpadding="5" cellspacing="0"> <tr> <td valign="top"> diff --git a/mod/forum/subscribers.php b/mod/forum/subscribers.php index 2f7ecde0711..d1d5a56519a 100644 --- a/mod/forum/subscribers.php +++ b/mod/forum/subscribers.php @@ -1,11 +1,11 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); require_variable($id); // forum optional_variable($group); // change of group - + optional_variable($edit); // Turn editing on and off if (! $forum = get_record("forum", "id", $id)) { @@ -20,7 +20,7 @@ $cm->id = 0; } - require_login($course->id, false, $cm); + require_login($course->id); if (!isteacher($course->id)) { error("This page is for teachers only"); @@ -29,7 +29,7 @@ unset($SESSION->fromdiscussion); add_to_log($course->id, "forum", "view subscribers", "subscribers.php?id=$forum->id", $forum->id, $cm->id); - + if (isset($_GET['edit'])) { if($edit == "on") { $USER->subscriptionsediting = true; @@ -43,11 +43,11 @@ $strsubscribers = get_string("subscribers", "forum"); $strforums = get_string("forums", "forum"); - $navigation = "<a href=\"index.php?id=$course->id\">$strforums</a> -> - <a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a> -> $strsubscribers"; + $navigation = "<a href=\"index.php?id=$course->id\">$strforums</a> -> + <a href=\"view.php?f=$forum->id\">$forum->name</a> -> $strsubscribers"; - print_header_simple("$strsubscribers", "", "$navigation", - "", "", true, forum_update_subscriptions_button($course->id, $id), true); + print_header_simple("$strsubscribers", "", "$navigation", + "", "", true, forum_update_subscriptions_button($course->id, $id)); /// Check to see if groups are being used in this forum if ($groupmode = groupmode($course, $cm)) { // Groups are being used @@ -57,28 +57,28 @@ } if (empty($USER->subscriptionsediting)) { /// Display an overview of subscribers - + if (! $users = forum_subscribed_users($course, $forum, $currentgroup) ) { - + print_heading(get_string("nosubscribers", "forum")); - + } else { - - print_heading(get_string("subscribersto","forum", "'".format_string($forum->name)."'")); - + + print_heading(get_string("subscribersto","forum", "'$forum->name'")); + echo '<table align="center" cellpadding="5" cellspacing="5">'; foreach ($users as $user) { - echo '<tr><td>'; + echo "<tr><td>"; print_user_picture($user->id, $course->id, $user->picture); - echo '</td><td>'; + echo "</td><td bgcolor=\"$THEME->cellcontent\">"; echo fullname($user); - echo '</td><td>'; - echo $user->email; - echo '</td></tr>'; + echo "</td><td bgcolor=\"$THEME->cellcontent\">"; + echo "$user->email"; + echo "</td></tr>"; } echo "</table>"; } - + print_footer($course); exit; } @@ -124,13 +124,13 @@ if (!$subscribers = forum_subscribed_users($course, $forum, $currentgroup)) { $subscribers = array(); } - + $subscriberarray = array(); foreach ($subscribers as $subscriber) { $subscriberarray[] = $subscriber->id; } $subscriberlist = implode(',', $subscriberarray); - + unset($subscriberarray); /// Get search results excluding any users already subscribed @@ -138,7 +138,7 @@ if (!empty($frm->searchtext) and $previoussearch) { $searchusers = search_users($course->id, $currentgroup, $frm->searchtext, 'firstname ASC, lastname ASC', $subscriberlist); } - + /// If no search results then get potential subscribers for this forum excluding users already subscribed if (empty($searchusers)) { if ($currentgroup) { @@ -155,12 +155,12 @@ $searchtext = (isset($frm->searchtext)) ? $frm->searchtext : ""; $previoussearch = ($previoussearch) ? '1' : '0'; - print_simple_box_start('center'); + print_simple_box_start("center", "", "$THEME->cellheading"); include('subscriber.html'); print_simple_box_end(); - print_footer($course); + print_footer(); ?> diff --git a/mod/forum/user.php b/mod/forum/user.php deleted file mode 100644 index 9cd84a0b2c0..00000000000 --- a/mod/forum/user.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php // $Id$ - -// Display user activity reports for a course - - require_once('../../config.php'); - require_once('lib.php'); - - $id = required_param('id'); // user id - $course = required_param('course'); // course id - $mode = optional_param('mode', 'posts'); - $page = optional_param('page', 0); - $perpage = optional_param('perpage', 5); - - if (! $user = get_record("user", "id", $id)) { - error("User ID is incorrect"); - } - - if (! $course = get_record("course", "id", $course)) { - error("Course id is incorrect."); - } - - require_course_login($course); - - - add_to_log($course->id, "forum", "user report", "user.php?id=$course->id&amp;user=$user->id&amp;mode=$mode", "$user->id"); - - $strforumposts = get_string('forumposts', 'forum'); - $strparticipants = get_string('participants'); - $strmode = get_string($mode, 'forum'); - $fullname = fullname($user, isteacher($course->id)); - - if ($course->category) { - print_header("$course->shortname: $fullname: $strmode", "$course->fullname", - "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> -> - <a href=\"$CFG->wwwroot/user/index.php?id=$course->id\">$strparticipants</a> -> - <a href=\"$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id\">$fullname</a> -> - $strforumposts -> $strmode"); - } else { - print_header("$course->shortname: $fullname: $strmode", "$course->fullname", - "<a href=\"$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id\">$fullname</a> -> - $strforumposts -> $strmode"); - } - - $currenttab = $mode; - include($CFG->dirroot.'/user/tabs.php'); /// Prints out tabs as part of user page - - $isseparategroups = ($course->groupmode == SEPARATEGROUPS and - $course->groupmodeforce and - !isteacheredit($course->id)); - - $groupid = $isseparategroups ? get_current_group($course->id) : NULL; - - switch ($mode) { - case 'posts' : - $searchterms = array('userid:'.$user->id); - $extrasql = ''; - break; - - default: - $searchterms = array('userid:'.$user->id); - $extrasql = 'AND p.parent = 0'; - break; - } - - if ($posts = forum_search_posts($searchterms, $course->id, $page*$perpage, $perpage, - $totalcount, $groupid, $extrasql)) { - print_paging_bar($totalcount, $page, $perpage, - "user.php?id=$user->id&amp;course=$course->id&amp;mode=$mode&amp;perpage=$perpage&amp;"); - foreach ($posts as $post) { - - if (! $discussion = get_record('forum_discussions', 'id', $post->discussion)) { - error('Discussion ID was incorrect'); - } - if (! $forum = get_record('forum', 'id', "$discussion->forum")) { - error("Could not find forum $discussion->forum"); - } - - $fullsubject = "<a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>"; - if ($forum->type != 'single') { - $fullsubject .= " -> <a href=\"discuss.php?d=$discussion->id\">".format_string($discussion->name,true)."</a>"; - if ($post->parent != 0) { - $fullsubject .= " -> <a href=\"discuss.php?d=$post->discussion&amp;parent=$post->id\">".format_string($post->subject,true)."</a>"; - } - } - - if (isadmin() && $course->id == SITEID) { - $postcoursename = get_field('course', 'shortname', 'id', $forum->course); - $fullsubject = '<a href="'.$CFG->wwwroot.'/course/view.php?id='.$forum->course.'">'.$postcoursename.'</a> -> '. $fullsubject; - } - - $post->subject = $fullsubject; - - /// Add the forum id to the post object - used by read tracking. - $post->forum = $forum->id; - - $fulllink = "<a href=\"discuss.php?d=$post->discussion#$post->id\">". - get_string("postincontext", "forum")."</a>"; - - forum_print_post($post, $course->id, false, false, false, false, $fulllink); - - echo "<br />"; - } - - print_paging_bar($totalcount, $page, $perpage, - "user.php?id=$user->id&amp;course=$course->id&amp;mode=$mode&amp;perpage=$perpage&amp;"); - } else { - print_heading(get_string('noposts', 'forum')); - } - print_footer($course); - -?> - diff --git a/mod/forum/version.php b/mod/forum/version.php index e85d4d8164c..833d82a863b 100644 --- a/mod/forum/version.php +++ b/mod/forum/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////////// // Code fragment to define the module version etc. // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2005041100; -$module->requires = 2005031000; // Requires this Moodle version +$module->version = 2004081800; +$module->requires = 2004060100; // Requires this Moodle version $module->cron = 60; ?> diff --git a/mod/forum/view.php b/mod/forum/view.php index 088ce800682..4f33c9acae0 100644 --- a/mod/forum/view.php +++ b/mod/forum/view.php @@ -1,16 +1,16 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); - require_once("$CFG->libdir/rsslib.php"); + require_once("$CFG->dirroot/rss/rsslib.php"); - $id = optional_param('id', 0, PARAM_INT); // Course Module ID - $f = optional_param('f', 0, PARAM_INT); // Forum ID - $mode = optional_param('mode', 0, PARAM_INT); // Display mode (for single forum) - $showall = optional_param('showall', '', PARAM_INT); // show all discussions on one page - $group = optional_param('group', -1, PARAM_INT); // choose the current group - $page = optional_param('page', 0, PARAM_INT); // which page to show - $search = optional_param('search', ''); // search string + optional_variable($id); // Course Module ID + optional_variable($f); // Forum ID + optional_variable($mode); // Display mode (for single forum) + optional_variable($search, ""); // search string + optional_variable($showall, ""); // show all discussions on one page + optional_variable($group, -1); // choose the current group + optional_variable($page, "0"); // which page to show if ($id) { if (! $cm = get_record("course_modules", "id", $id)) { @@ -43,8 +43,6 @@ $buttontext = update_module_button($cm->id, $course->id, $strforum); } else { $cm->id = NULL; - $cm->visible = 1; - $cm->course = $course->id; $buttontext = ""; } @@ -53,11 +51,16 @@ } if (!$buttontext) { - $buttontext = forum_search_form($course, $search); + $buttontext = forum_print_search_form($course, $search, true, "plain"); + } + + if ($CFG->forcelogin) { + require_login(); } - require_course_login($course, true, $cm); - + if ($course->category) { + require_login($course->id); + } $navigation = "<a href=\"index.php?id=$course->id\">$strforums</a> ->"; if ($forum->type == "teacher") { @@ -72,10 +75,10 @@ add_to_log($course->id, "forum", "view forum", "view.php?f=$forum->id", "$forum->id"); } - print_header_simple(format_string($forum->name), "", - "$navigation ".format_string($forum->name), "", "", true, $buttontext, navmenu($course, $cm)); + print_header_simple("$forum->name", "", + "$navigation $forum->name", "", "", true, $buttontext, navmenu($course, $cm)); - if (empty($cm->visible) and !isteacher($course->id)) { + if (!$cm->visible and !isteacher($course->id)) { notice(get_string("activityiscurrentlyhidden")); } @@ -112,20 +115,20 @@ } - if (!empty($USER->id)) { - echo '<td align="right" class="subscription">'; + if ($USER) { + echo '<td align="right">'; $SESSION->fromdiscussion = "$FULLME"; if (forum_is_forcesubscribed($forum->id)) { - $streveryoneissubscribed = get_string('everyoneissubscribed', 'forum'); - $strallowchoice = get_string('allowchoice', 'forum'); + $streveryoneissubscribed = get_string("everyoneissubscribed", "forum"); + $strallowchoice = get_string("allowchoice", "forum"); helpbutton("subscription", $streveryoneissubscribed, "forum"); - echo '&nbsp;<span class="helplink">'; + echo "<font size=1>"; if (isteacher($course->id)) { - echo "<a title=\"$strallowchoice\" href=\"subscribe.php?id=$forum->id&amp;force=no\">$streveryoneissubscribed</a>"; + echo "<a title=\"$strallowchoice\" href=\"subscribe.php?id=$forum->id&force=no\">$streveryoneissubscribed</a>"; } else { echo $streveryoneissubscribed; } - echo '</span>'; + echo "</font>"; } else { $streveryonecanchoose = get_string("everyonecanchoose", "forum"); @@ -133,14 +136,16 @@ $strshowsubscribers = get_string("showsubscribers", "forum"); helpbutton("subscription", $streveryonecanchoose, "forum"); - echo '&nbsp;'; + echo "<font size=1>"; + if (isteacher($course->id)) { - echo "<span class=\"helplink\"><a title=\"$strforcesubscribe\" href=\"subscribe.php?id=$forum->id&amp;force=yes\">$streveryonecanchoose</a></span>"; - echo "<br />"; - echo "<span class=\"helplink\"><a href=\"subscribers.php?id=$forum->id\">$strshowsubscribers</a></span>"; + echo "<a title=\"$strforcesubscribe\" href=\"subscribe.php?id=$forum->id&force=yes\">$streveryonecanchoose</a>"; + echo "</font><br /><font size=1>"; + echo "<a href=\"subscribers.php?id=$forum->id\">$strshowsubscribers</a>"; } else { - echo '<span class="helplink">'.$streveryonecanchoose.'</span>'; + echo $streveryonecanchoose; } + echo "</font>"; if (forum_is_subscribed($USER->id, $forum->id)) { $subtexttitle = get_string("subscribestop", "forum"); @@ -150,27 +155,20 @@ $subtext = get_string("subscribe", "forum"); } echo "<br />"; - echo "<span class=\"helplink\"><a title=\"$subtexttitle\" href=\"subscribe.php?id=$forum->id\">$subtext</a></span>"; + echo "<font size=1><a title=\"$subtexttitle\" href=\"subscribe.php?id=$forum->id\">$subtext</a></font>"; } - echo '</td>'; - } + //If rss are activated at site and forum level and this forum has rss defined, show link + if ($CFG->enablerssfeeds && $CFG->forum_enablerssfeeds && $forum->rsstype and $forum->rssarticles) { + echo "<br />"; + if ($forum->rsstype == 1) { + $tooltiptext = get_string("rsssubscriberssdiscussions","forum",$forum->name); + } else { + $tooltiptext = get_string("rsssubscriberssposts","forum",$forum->name); + } + rss_print_link($course->id, $USER->id, "forum", $forum->id, $tooltiptext); + } - //If rss are activated at site and forum level and this forum has rss defined, show link - if (isset($CFG->enablerssfeeds) && isset($CFG->forum_enablerssfeeds) && - $CFG->enablerssfeeds && $CFG->forum_enablerssfeeds && $forum->rsstype and $forum->rssarticles) { - echo '</tr><tr><td align="right">'; - if ($forum->rsstype == 1) { - $tooltiptext = get_string("rsssubscriberssdiscussions","forum",format_string($forum->name)); - } else { - $tooltiptext = get_string("rsssubscriberssposts","forum",format_string($forum->name)); - } - if (empty($USER->id)) { - $userid = 0; - } else { - $userid = $USER->id; - } - rss_print_link($course->id, $userid, "forum", $forum->id, $tooltiptext); echo '</td>'; } @@ -200,7 +198,7 @@ case 'eachuser': if (!empty($forum->intro)) { - print_simple_box(format_text($forum->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); + print_simple_box(format_text($forum->intro), 'center'); } echo '<p align="center">'; if (forum_user_can_post_discussion($forum)) { @@ -210,33 +208,34 @@ } echo '</p>'; if (!empty($showall)) { - forum_print_latest_discussions($course, $forum, 0, 'header', '', $currentgroup, $groupmode); + forum_print_latest_discussions($forum->id, 0, 'header', '', $currentgroup, $groupmode); } else { - forum_print_latest_discussions($course, $forum, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page); + forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page); } break; case 'teacher': if (!empty($showall)) { - forum_print_latest_discussions($course, $forum, 0, 'header', '', $currentgroup, $groupmode); + forum_print_latest_discussions($forum->id, 0, 'header', '', $currentgroup, $groupmode); } else { - forum_print_latest_discussions($course, $forum, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page); + forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page); } break; default: if (!empty($forum->intro)) { - print_simple_box(format_text($forum->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); + print_simple_box(format_text($forum->intro), 'center'); } - echo '<br />'; + echo '<p>&nbsp;</p>'; if (!empty($showall)) { - forum_print_latest_discussions($course, $forum, 0, 'header', '', $currentgroup, $groupmode); + forum_print_latest_discussions($forum->id, 0, 'header', '', $currentgroup, $groupmode); } else { - forum_print_latest_discussions($course, $forum, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page); + forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page); } break; } + print_footer($course); ?> diff --git a/mod/glossary/approve.php b/mod/glossary/approve.php index f5f01c28508..a1258690daa 100644 --- a/mod/glossary/approve.php +++ b/mod/glossary/approve.php @@ -2,37 +2,37 @@ require_once("../../config.php"); require_once("lib.php"); - + require_variable($id); // Course Module ID optional_variable($eid); // Entry ID - $mode = optional_param('mode','approval'); - $hook = optional_param('hook','ALL'); + optional_variable($mode,"approval"); + optional_variable($hook,"ALL"); if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); - } - + } + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); - } - + } + if (! $glossary = get_record("glossary", "id", $cm->instance)) { error("Course module is incorrect"); - } - - require_login($course->id, false, $cm); + } + + require_login($course->id); if (!isteacher($course->id)) { error("You must be a teacher to use this page."); - } + } $newentry->id = $eid; $newentry->approved = 1; if (! update_record("glossary_entries", $newentry)) { error("Could not update your glossary"); } else { - add_to_log($course->id, "glossary", "approve entry", "showentry.php?id=$cm->id&amp;eid=$eid", "$eid",$cm->id); + add_to_log($course->id, "glossary", "approve entry", "showentry.php?id=$cm->id&eid=$eid", "$eid",$cm->id); } - redirect("view.php?id=$cm->id&amp;mode=$mode&amp;hook=$hook",get_string("entryapproved","glossary"),1); + redirect("view.php?id=$cm->id&mode=$mode&hook=$hook",get_string("entryapproved","glossary"),1); die; ?> diff --git a/mod/glossary/backuplib.php b/mod/glossary/backuplib.php index 195e988b68c..31a8bc51a84 100644 --- a/mod/glossary/backuplib.php +++ b/mod/glossary/backuplib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //glossary mods @@ -53,7 +53,6 @@ fwrite ($bf,full_tag("SHOWALPHABET",4,false,$glossary->showalphabet)); fwrite ($bf,full_tag("SHOWALL",4,false,$glossary->showall)); fwrite ($bf,full_tag("ALLOWCOMMENTS",4,false,$glossary->allowcomments)); - fwrite ($bf,full_tag("ALLOWPRINTVIEW",4,false,$glossary->allowprintview)); fwrite ($bf,full_tag("USEDYNALINK",4,false,$glossary->usedynalink)); fwrite ($bf,full_tag("DEFAULTAPPROVAL",4,false,$glossary->defaultapproval)); fwrite ($bf,full_tag("GLOBALGLOSSARY",4,false,$glossary->globalglossary)); diff --git a/mod/glossary/comment.html b/mod/glossary/comment.html index 0c77b84d781..61cae6900ad 100644 --- a/mod/glossary/comment.html +++ b/mod/glossary/comment.html @@ -1,62 +1,57 @@ -<form name="form" method="post" action="comment.php"> -<table class="generalbox"> -<tr valign="top"> - <td align="right"><b> - <?php echo get_string("comment","glossary") ?>: - </b></td> - <td rowspan="2"> - <?php print_textarea($usehtmleditor, 25, 65, 630, 400, "text", $form->text); ?> - </td> -</tr> -<tr valign="top"> - <td align="right" nowrap="nowrap"> +<FORM name="theform" method="post" action="comment.php"> +<table class=generalbox cellpadding=5 bgcolor="<?php p($THEME->cellheading)?>"> +<tr valign=top> + <td align=right><p><b><?php echo get_string("comment","glossary") ?>:</b></p> + <font size="1"> <?php helpbutton("writing", get_string("helpwriting"), "moodle", true, true); echo "<br />"; if ($usehtmleditor) { helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); } else { - emoticonhelpbutton("form", "text"); - } - echo "<br />"; + emoticonhelpbutton("form", "comment"); + } ?> + <br /> + </font> </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("formattexttype"); ?>:</b></td> <td> <?php - if ($usehtmleditor) { /// Trying this out for a while - print_string('formathtml'); - echo '<input type="hidden" name="format" value="'.FORMAT_HTML.'" />'; - } else { - if (!isset($form->format)) { - $form->format = $defaultformat; - } - choose_from_menu(format_text_menu(), "format", $form->format, ""); - } - helpbutton("textformat", get_string("helpformatting")); - ?> + print_textarea($usehtmleditor, 20, 60, 680, 400, "text", $form->text); + + echo "<p align=right>"; + helpbutton("textformat", get_string("helpformatting")); + print_string("formattexttype"); + echo ":&nbsp;"; + if (!isset($form->format)) { + if (!$form->format) { + $form->format = $defaultformat; + } + } + choose_from_menu(format_text_menu(), "format", $form->format, ""); + echo "</p>"; + ?> </td> </tr> <tr> -<td colspan="2"> - <center> +<td colspan=2> + <p align=center> <?php if (isset($comment->id)) { - echo "<input type=\"hidden\" name=\"cid\" value=\"$comment->id\" />"; + echo "<input type=\"hidden\" name=cid value=\"$comment->id\">"; } ?> - <input type="hidden" name="id" value="<?php p($cm->id) ?>" /> - <input type="hidden" name="eid" value="<?php p($entry->id) ?>" /> - <input type="hidden" name="action" value="<?php p($action) ?>" /> - <input type="hidden" name="confirm" value="1" /> + <input type="hidden" name=id value="<?php p($cm->id) ?>"> + <input type="hidden" name=eid value="<?php p($entry->id) ?>"> + <input type="hidden" name=action value="<?php p($action) ?>"> + <input type="hidden" name=confirm value="1"> - <input type="submit" value="<?php print_string("savechanges") ?>" /> - <input type="reset" value="<?php print_string("revert") ?>" /> - </center> + <input type="submit" value="<?php print_string("savechanges") ?>"> + <input type="reset" value="<?php print_string("revert") ?>"> + </P> </td> </tr> </table> +</p> </form> diff --git a/mod/glossary/comment.php b/mod/glossary/comment.php index 79b66a99048..f80912dfc34 100644 --- a/mod/glossary/comment.php +++ b/mod/glossary/comment.php @@ -1,111 +1,102 @@ <?php // $Id$ /// This page prints a particular instance of glossary - require_once('../../config.php'); - require_once('lib.php'); + require_once("../../config.php"); + require_once("lib.php"); require_variable($id); // Course Module ID require_variable($eid); // Entry ID optional_variable($cid,0); // Comment ID + optional_variable($action,"add"); // Action to perform optional_variable($confirm,0); // Confirm the action - $action = optional_param('action','add'); - $action = strtolower($action); - global $USER, $CFG; + global $THEME, $USER, $CFG; - if (! $cm = get_record('course_modules', 'id', $id)) { - error('Course Module ID was incorrect'); - } + if (! $cm = get_record("course_modules", "id", $id)) { + error("Course Module ID was incorrect"); + } - if (! $course = get_record('course', 'id', $cm->course)) { - error('Course is misconfigured'); - } + if (! $course = get_record("course", "id", $cm->course)) { + error("Course is misconfigured"); + } - if (! $glossary = get_record('glossary', 'id', $cm->instance)) { - error('Course module is incorrect'); - } + if (! $glossary = get_record("glossary", "id", $cm->instance)) { + error("Course module is incorrect"); + } - if (! $entry = get_record('glossary_entries', 'id', $eid)) { - error('Entry is incorrect'); + if (! $entry = get_record("glossary_entries", "id", $eid)) { + error("Entry is incorrect"); } if ( $cid ) { - if (! $comment = get_record('glossary_comments', 'id', $cid)) { - error('Comment is incorrect'); + if (! $comment = get_record("glossary_comments", "id", $cid)) { + error("Comment is incorrect"); } - } - - require_login($course->id, false, $cm); + } + require_login($course->id); + if (!$cm->visible and !isteacher($course->id)) { + notice(get_string("activityiscurrentlyhidden")); + } if (isguest()) { - error('Guests are not allowed to post comments', $_SERVER['HTTP_REFERER']); - } - add_to_log($course->id, 'glossary', 'view', "view.php?id=$cm->id", "$glossary->id",$cm->id); + error("Guests are not allowed to post comments", $_SERVER["HTTP_REFERER"]); + } + add_to_log($course->id, "glossary", "view", "view.php?id=$cm->id", "$glossary->id",$cm->id); switch ( $action ){ - case 'add': - $straction = get_string('addingcomment','glossary'); - break; - case 'edit': - $straction = get_string('editingcomment','glossary'); - break; - case 'delete': - $straction = get_string('deletingcomment','glossary'); - break; - default: - $action = 'add'; - $straction = get_string('addingcomment','glossary'); - break; + case "add": + $straction = get_string("addingcomment","glossary"); + break; + case "edit": + $straction = get_string("editingcomment","glossary"); + break; + case "delete": + $straction = get_string("deletingcomment","glossary"); + break; } - $strglossaries = get_string('modulenameplural', 'glossary'); - $strglossary = get_string('modulename', 'glossary'); - $strcomments = get_string('comments', 'glossary'); + $strglossaries = get_string("modulenameplural", "glossary"); + $strglossary = get_string("modulename", "glossary"); + $strcomments = get_string("comments", "glossary"); - print_header_simple(format_string($glossary->name), '', - "<a href=\"index.php?id=$course->id\">$strglossaries</a> -> <a href=\"view.php?id=$cm->id\">".format_string($glossary->name,true)."</a> -> <a href=\"comments.php?id=$cm->id&amp;eid=$entry->id\">$strcomments</a> -> " . $straction, - '', '', true, update_module_button($cm->id, $course->id, $strglossary), + print_header_simple(strip_tags("$glossary->name"), "", + "<A HREF=index.php?id=$course->id>$strglossaries</A> -> <A HREF=view.php?id=$cm->id>$glossary->name</a> -> <A HREF=comments.php?id=$cm->id&eid=$entry->id>$strcomments</a> -> " . $straction, + "", "", true, update_module_button($cm->id, $course->id, $strglossary), navmenu($course, $cm)); - - echo '<center>'; + + echo "<center>"; /// Input section - if ( $action == 'delete' ) { - if (($comment->userid <> $USER->id) and !isteacher($glossary->course)) { - error('You can\'t delete other people\'s comments!'); - } - if (!$glossary->allowcomments && !isteacher($glossary->course)) { - error('You can\'t delete comments in this glossary!'); - } + if ( $action == "delete" ) { if ( $confirm ) { - delete_records('glossary_comments','id', $cid); + delete_records("glossary_comments","id", $cid); - print_simple_box_start('center','40%', '#FFBBBB'); - echo '<center>'.get_string('commentdeleted','glossary').'</center>'; + print_simple_box_start("center","40%", "#FFBBBB"); + echo "<center>" . get_string("commentdeleted","glossary") . "</center>"; print_simple_box_end(); print_footer($course); - add_to_log($course->id, 'glossary', 'delete comment', "comments.php?id=$cm->id&amp;eid=$entry->id", "$comment->id",$cm->id); - redirect("comments.php?id=$cm->id&amp;eid=$entry->id"); + add_to_log($course->id, "glossary", "delete comment", "comments.php?id=$cm->id&eid=$entry->id", "$comment->id",$cm->id); + redirect("comments.php?id=$cm->id&eid=$entry->id"); } else { glossary_print_comment($course, $cm, $glossary, $entry, $comment); - print_simple_box_start('center','40%', '#FFBBBB'); - echo '<center><br />'.get_string('areyousuredeletecomment','glossary'); + print_simple_box_start("center","40%", "#FFBBBB"); + echo "<center><br>" . get_string("areyousuredeletecomment","glossary"); ?> <form name="form" method="post" action="comment.php"> - <input type="hidden" name="id" value="<?php p($id) ?>" /> - <input type="hidden" name="eid" value="<?php p($eid) ?>" /> - <input type="hidden" name="cid" value="<?php p($cid) ?>" /> - <input type="hidden" name="action" value="delete" /> - <input type="hidden" name="confirm" value="1" /> - <input type="submit" value="<?php print_string('yes')?>" /> - <input type="button" value="<?php print_string('no')?>" onclick="javascript:history.go(-1);" /> + <input type="hidden" name=id value="<?php p($id) ?>"> + <input type="hidden" name=eid value="<?php p($eid) ?>"> + <input type="hidden" name=cid value="<?php p($cid) ?>"> + <input type="hidden" name=action value="delete"> + <input type="hidden" name=confirm value="1"> + <input type="submit" value=" <?php print_string("yes")?> "> + <input type=button value=" <?php print_string("no")?> " onclick="javascript:history.go(-1);"> </form> </center> @@ -113,64 +104,59 @@ print_simple_box_end(); } } else { - if (!$glossary->allowcomments && !isteacher($glossary->course)) { - error('You can\'t add/edit comments to this glossary!'); - } - if ( $action == 'edit' ) { - if (!isset($comment->timemodified)) { - $timetocheck = 0; - } else { - $timetocheck = $comment->timemodified; - } - $ineditperiod = ((time() - $timetocheck < $CFG->maxeditingtime) || $glossary->editalways); - if ( (!$ineditperiod || $USER->id != $comment->userid) and !isteacher($course->id) and $cid) { + if ( $action == "edit" ) { + if ( (time() - $comment->timemodified >= $CFG->maxeditingtime or + $USER->id != $comment->userid) and !isteacher($course->id) ) { + echo "<center><strong>"; if ( $USER->id != $comment->userid ) { - error('You can\'t edit other people\'s comments!'); - } elseif (!$ineditperiod) { - error('You can\'t edit this. Time expired!'); + echo get_string("youarenottheauthor","glossary",$CFG->maxeditingtime); + } elseif (time() - $comment->timemodified >= $CFG->maxeditingtime ) { + echo get_string("maxtimehaspassed","glossary",$CFG->maxeditingtime); } + echo "</strong></center>"; + print_footer($course); die; } } if ( $confirm and $form = data_submitted() ) { - //$form->text = clean_text($form->text, $form->format); + $form->text = clean_text($form->text, $form->format); $newentry->entryid = $entry->id; $newentry->comment = $form->text; $newentry->format = $form->format; $newentry->timemodified = time(); - if ( $action == 'add' ) { + if ( $action == "add" ) { $newentry->userid = $USER->id; - if (! $newentry->id = insert_record('glossary_comments', $newentry)) { - error('Could not insert this new comment'); + if (! $newentry->id = insert_record("glossary_comments", $newentry)) { + error("Could not insert this new comment"); } else { - add_to_log($course->id, 'glossary', 'add comment', "comments.php?id=$cm->id&amp;eid=$entry->id", "$newentry->id", $cm->id); + add_to_log($course->id, "glossary", "add comment", "comments.php?id=$cm->id&eid=$entry->id", "$newentry->id", $cm->id); } } else { $newentry->id = $form->cid; $newentry->userid = $comment->userid; - if (! update_record('glossary_comments', $newentry)) { - error('Could not update this comment'); + if (! update_record("glossary_comments", $newentry)) { + error("Could not update this comment"); } else { - add_to_log($course->id, 'glossary', 'update comment', "comments.php?id=$cm->id&amp;eid=$entry->id", "$newentry->id",$cm->id); + add_to_log($course->id, "glossary", "update comment", "comments.php?id=$cm->id&eid=$entry->id", "$newentry->id",$cm->id); } } - print_simple_box_start('center','40%', '#FFBBBB'); - echo '<center>'.get_string('commentupdated','glossary').'</center>'; + print_simple_box_start("center","40%", "#FFBBBB"); + echo "<center>" . get_string("commentupdated","glossary") . "</center>"; print_simple_box_end(); print_footer($course); - redirect("comments.php?id=$cm->id&amp;eid=$entry->id"); + redirect("comments.php?id=$cm->id&eid=$entry->id"); } else { /// original glossary entry - glossary_print_entry($course, $cm, $glossary, $entry, '', '', false); - echo '<br />'; + glossary_print_entry($course, $cm, $glossary, $entry, "", "", false); + echo "<br />"; if ($usehtmleditor = can_use_html_editor()) { $defaultformat = FORMAT_HTML; @@ -181,19 +167,16 @@ $form->text = $comment->comment; $form->format = $comment->format; } else { - $form->text = ''; + $form->text = ""; $form->format = $defaultformat; } - include('comment.html'); + include("comment.html"); - if ($usehtmleditor) { - use_html_editor('text'); + if ($usehtmleditor) { + use_html_editor("text"); } } } - - echo '</center>'; - /// Finish the page print_footer($course); ?> diff --git a/mod/glossary/comments.php b/mod/glossary/comments.php index eac76891602..d69eb54b859 100644 --- a/mod/glossary/comments.php +++ b/mod/glossary/comments.php @@ -1,35 +1,38 @@ <?php // $Id$ /// This page prints a particular instance of glossary - require_once('../../config.php'); - require_once('lib.php'); - + require_once("../../config.php"); + require_once("lib.php"); + require_variable($id); // Course Module ID require_variable($eid); // Entry ID - - global $USER, $CFG; - + + global $THEME, $USER, $CFG; + if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); - } - + } + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); - } - + } + if (! $glossary = get_record("glossary", "id", $cm->instance)) { error("Course module is incorrect"); - } - + } + if (! $entry = get_record("glossary_entries", "id", $eid)) { error("Entry is incorrect"); - } + } - require_login($course->id, false, $cm); - + require_login($course->id); + if (!$cm->visible and !isteacher($course->id)) { + notice(get_string("activityiscurrentlyhidden")); + } + add_to_log($course->id, "glossary", "view", "view.php?id=$cm->id", "$glossary->id",$cm->id); - + $strglossaries = get_string("modulenameplural", "glossary"); $strglossary = get_string("modulename", "glossary"); $strallcategories = get_string("allcategories", "glossary"); @@ -40,12 +43,12 @@ $strsearch = get_string("search"); $strcomments = get_string("comments", "glossary"); $straddcomment = get_string("addcomment", "glossary"); - + print_header_simple(strip_tags("$strcomments: $entry->concept"), "", - "<a href=index.php?id=$course->id>$strglossaries</a> -> <a href=view.php?id=$cm->id>".format_string($glossary->name,true)."</a> -> $strcomments", + "<A HREF=index.php?id=$course->id>$strglossaries</A> -> <A HREF=view.php?id=$cm->id>$glossary->name</a> -> $strcomments", "", "", true, update_module_button($cm->id, $course->id, $strglossary), navmenu($course, $cm)); - + /// original glossary entry echo "<center>"; @@ -56,8 +59,8 @@ print_heading(get_string('commentson','glossary')." <b>\"$entry->concept\"</b>"); - if ($glossary->allowcomments || isteacher($glossary->course)) { - print_heading("<a href=\"comment.php?id=$cm->id&amp;eid=$entry->id\">$straddcomment</a> <img title=\"$straddcomment\" src=\"comment.gif\" height=\"11\" width=\"11\" border=\"0\" alt=\"\" />"); + if ($glossary->allowcomments) { + print_heading("<a href=\"comment.php?id=$cm->id&eid=$entry->id\">$straddcomment</a> <img title=\"$straddcomment\" src=\"comment.gif\" height=11 width=11 border=0>"); } if ($comments = get_records("glossary_comments","entryid",$entry->id,"timemodified ASC")) { diff --git a/mod/glossary/config.html b/mod/glossary/config.html index e28eba3c12c..57ac5bf72d8 100644 --- a/mod/glossary/config.html +++ b/mod/glossary/config.html @@ -3,128 +3,235 @@ $no = get_string("no"); ?> <form method="post" action="module.php" name="form"> -<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>"> <table cellpadding=9 cellspacing=0 > <tr valign=top> <td colspan = 3 align=center><strong><?php print_string("glossaryleveldefaultsettings","glossary") ?></strong></td> </tr> <tr valign=top> - <td align=right>glossary_entbypage:</td> + <td align=right><p>glossary_entbypage:</td> <td> - <input name=glossary_entbypage type=text size=3 value="<?php p(isset($CFG->glossary_entbypage) ? $CFG->glossary_entbypage : 10) ?>" /> + <input name=glossary_entbypage type=text size=3 value="<?php p(isset($CFG->glossary_entbypage) ? $CFG->glossary_entbypage : 10) ?>"> </td> <td> <?php print_string("entbypage", "glossary") ?> </td> </tr> <tr valign=top> - <td align=right>glossary_studentspost:</td> + <td align=right><p>glossary_studentspost:</td> <td> - <select size=1 name=glossary_studentspost> + <SELECT size=1 name=glossary_studentspost> <?php $yselected = ""; $nselected = ""; if ($CFG->glossary_studentspost) { - $yselected = " selected=\"selected\" "; + $yselected = " SELECTED "; } else { - $nselected = " selected=\"selected\" "; + $nselected = " SELECTED "; } ?> - <option value=1 <?php p($yselected) ?>><?php p($yes)?></option> - <option value=0 <?php p($nselected) ?>><?php p($no)?></option> - </select> + <OPTION value=1 <?php p($yselected) ?>><?php p($yes)?></OPTION> + <OPTION value=0 <?php p($nselected) ?>><?php p($no)?></OPTION> + </SELECT> </td> <td> <?php print_string("cnfstudentcanpost", "glossary") ?> </td> </tr> <tr valign=top> - <td align=right>glossary_dupentries:</td> + <td align=right><p>glossary_dupentries:</td> <td> - <select size=1 name=glossary_dupentries> + <SELECT size=1 name=glossary_dupentries> <?php $yselected = ""; $nselected = ""; if ($CFG->glossary_dupentries) { - $yselected = " selected=\"selected\" "; + $yselected = " SELECTED "; } else { - $nselected = " selected=\"selected\" "; + $nselected = " SELECTED "; } ?> - <option value=1 <?php p($yselected) ?>><?php p($yes)?></option> - <option value=0 <?php p($nselected) ?>><?php p($no)?></option> - </select> + <OPTION value=1 <?php p($yselected) ?>><?php p($yes)?></OPTION> + <OPTION value=0 <?php p($nselected) ?>><?php p($no)?></OPTION> + </SELECT> </td> <td> <?php print_string("cnfallowdupentries", "glossary") ?> </td> </tr> <tr valign=top> - <td align=right>glossary_allowcomments:</td> + <td align=right><p>glossary_allowcomments:</td> <td> - <select size=1 name=glossary_allowcomments> + <SELECT size=1 name=glossary_allowcomments> <?php $yselected = ""; $nselected = ""; if ($CFG->glossary_allowcomments) { - $yselected = " selected=\"selected\" "; + $yselected = " SELECTED "; } else { - $nselected = " selected=\"selected\" "; + $nselected = " SELECTED "; } ?> - <option value=1 <?php p($yselected) ?>><?php p($yes)?></option> - <option value=0 <?php p($nselected) ?>><?php p($no)?></option> - </select> + <OPTION value=1 <?php p($yselected) ?>><?php p($yes)?></OPTION> + <OPTION value=0 <?php p($nselected) ?>><?php p($no)?></OPTION> + </SELECT> </td> <td> <?php print_string("cnfallowcomments", "glossary") ?> </td> </tr> <tr valign=top> - <td align=right>glossary_linkbydefault:</td> + <td align=right><p>glossary_linkbydefault:</td> <td> - <select size=1 name=glossary_linkbydefault> + <SELECT size=1 name=glossary_linkbydefault> <?php $yselected = ""; $nselected = ""; if ($CFG->glossary_linkbydefault) { - $yselected = " selected=\"selected\" "; + $yselected = " SELECTED "; } else { - $nselected = " selected=\"selected\" "; + $nselected = " SELECTED "; } ?> - <option value=1 <?php p($yselected) ?>><?php p($yes)?></option> - <option value=0 <?php p($nselected) ?>><?php p($no)?></option> - </select> + <OPTION value=1 <?php p($yselected) ?>><?php p($yes)?></OPTION> + <OPTION value=0 <?php p($nselected) ?>><?php p($no)?></OPTION> + </SELECT> </td> <td> <?php print_string("cnflinkglossaries", "glossary") ?> </td> </tr> <tr valign=top> - <td align=right>glossary_defaultapproval:</td> + <td align=right><p>glossary_defaultapproval:</td> <td> - <select size=1 name=glossary_defaultapproval> + <SELECT size=1 name=glossary_defaultapproval> <?php $yselected = ""; $nselected = ""; if ($CFG->glossary_defaultapproval) { - $yselected = " selected=\"selected\" "; + $yselected = " SELECTED "; } else { - $nselected = " selected=\"selected\" "; + $nselected = " SELECTED "; } ?> - <option value=1 <?php p($yselected) ?>><?php p($yes)?></option> - <option value=0 <?php p($nselected) ?>><?php p($no)?></option> - </select> + <OPTION value=1 <?php p($yselected) ?>><?php p($yes)?></OPTION> + <OPTION value=0 <?php p($nselected) ?>><?php p($no)?></OPTION> + </SELECT> </td> <td> <?php print_string("cnfapprovalstatus", "glossary") ?> </td> </tr> <tr valign=top> - <td align=right>glossary_enablerssfeeds:</td> + <td colspan = 3 align=center><strong><?php print_string("entryleveldefaultsettings","glossary") ?></strong></td> +</tr> +<tr valign=top> + <td align=right><p>glossary_linkentries:</td> + <td> + <SELECT size=1 name=glossary_linkentries> +<?php + $yselected = ""; + $nselected = ""; + if ($CFG->glossary_linkentries) { + $yselected = " SELECTED "; + } else { + $nselected = " SELECTED "; + } +?> + <OPTION value=1 <?php p($yselected) ?>><?php p($yes)?></OPTION> + <OPTION value=0 <?php p($nselected) ?>><?php p($no)?></OPTION> + </SELECT> + </td> + <td> + <?php print_string("cnflinkentry", "glossary") ?> + </td> +</tr> +<tr valign=top> + <td align=right><p>glossary_casesensitive:</td> + <td> + <SELECT size=1 name=glossary_casesensitive> +<?php + $yselected = ""; + $nselected = ""; + if ($CFG->glossary_casesensitive) { + $yselected = " SELECTED "; + } else { + $nselected = " SELECTED "; + } +?> + <OPTION value=1 <?php p($yselected) ?>><?php p($yes)?></OPTION> + <OPTION value=0 <?php p($nselected) ?>><?php p($no)?></OPTION> + </SELECT> + </td> + <td> + <?php print_string("cnfcasesensitive", "glossary") ?> + </td> +</tr> +<tr valign=top> + <td align=right><p>glossary_fullmatch:</td> + <td> + <SELECT size=1 name=glossary_fullmatch> +<?php + $yselected = ""; + $nselected = ""; + if ($CFG->glossary_fullmatch) { + $yselected = " SELECTED "; + } else { + $nselected = " SELECTED "; + } +?> + <OPTION value=1 <?php p($yselected) ?>><?php p($yes)?></OPTION> + <OPTION value=0 <?php p($nselected) ?>><?php p($no)?></OPTION> + </SELECT> + </td> + <td> + <?php print_string("cnffullmatch", "glossary") ?> + </td> +</tr> +<tr valign=top> + <td colspan = 3 align=center><a name=formats><strong><?php print_string("displayformatssetup","glossary") ?></strong></td> +</tr> +<tr> + <td colspan=3 align=center> +<?php + + //Update and get available formats + $recformats = glossary_get_available_formats(); + + $formats = array(); + + //Take names + foreach ($recformats as $format) { + $formats[$format->id] = get_string("displayformat$format->name", "glossary"); + } + asort($formats); + + echo '<table cellpadding="5" bgcolor="#FFFFFF" class="generaltab" width="40%" align="center">'; + foreach ($formats as $formatid=>$formatname) { + $recformat = get_record('glossary_formats','id',$formatid); + echo '<tr>'; + echo '<td>' . $formatname . '</td>'; + $eicon = "<a title=\"" . get_string("edit") . "\" href=\"$CFG->wwwroot/mod/glossary/formats.php?id=$formatid&mode=edit\"><img border=\"0\" src=\"../pix/t/edit.gif\"></a>"; + if ( $recformat->visible ) { + $vtitle = get_string("hide"); + $vicon = "hide.gif"; + } else { + $vtitle = get_string("show"); + $vicon = "show.gif"; + } + $vicon = "<a title=\"" . $vtitle . "\" href=\"$CFG->wwwroot/mod/glossary/formats.php?id=$formatid&mode=visible\"><img border=\"0\" src=\"../pix/t/" . $vicon . "\"></a>"; + + echo '<td align="center" nowrap>' . $eicon . '&nbsp;&nbsp;' . $vicon . '</td>'; + echo '</tr>'; + } + echo '</table>'; + +?> + + </td> +</tr> +<tr valign=top> + <td align=right><p>glossary_enablerssfeeds:</td> <td> <?php if (!isset($CFG->enablerssfeeds) || $CFG->enablerssfeeds == 0) { @@ -152,117 +259,9 @@ ?> </td> </tr> -<tr valign=top> - <td colspan = 3 align=center><strong><?php print_string("entryleveldefaultsettings","glossary") ?></strong></td> -</tr> -<tr valign=top> - <td align=right>glossary_linkentries:</td> - <td> - <select size=1 name=glossary_linkentries> -<?php - $yselected = ""; - $nselected = ""; - if ($CFG->glossary_linkentries) { - $yselected = " selected=\"selected\" "; - } else { - $nselected = " selected=\"selected\" "; - } -?> - <option value=1 <?php p($yselected) ?>><?php p($yes)?></option> - <option value=0 <?php p($nselected) ?>><?php p($no)?></option> - </select> - </td> - <td> - <?php print_string("cnflinkentry", "glossary") ?> - </td> -</tr> -<tr valign=top> - <td align=right>glossary_casesensitive:</td> - <td> - <select size=1 name=glossary_casesensitive> -<?php - $yselected = ""; - $nselected = ""; - if ($CFG->glossary_casesensitive) { - $yselected = " selected=\"selected\" "; - } else { - $nselected = " selected=\"selected\" "; - } -?> - <option value=1 <?php p($yselected) ?>><?php p($yes)?></option> - <option value=0 <?php p($nselected) ?>><?php p($no)?></option> - </select> - </td> - <td> - <?php print_string("cnfcasesensitive", "glossary") ?> - </td> -</tr> -<tr valign=top> - <td align=right>glossary_fullmatch:</td> - <td> - <select size=1 name=glossary_fullmatch> -<?php - $yselected = ""; - $nselected = ""; - if ($CFG->glossary_fullmatch) { - $yselected = " selected=\"selected\" "; - } else { - $nselected = " selected=\"selected\" "; - } -?> - <option value=1 <?php p($yselected) ?>><?php p($yes)?></option> - <option value=0 <?php p($nselected) ?>><?php p($no)?></option> - </select> - </td> - <td> - <?php print_string("cnffullmatch", "glossary") ?> - </td> -</tr> -<tr valign=top> - <td colspan = 3 align=center><a name=formats><strong><?php print_string("displayformatssetup","glossary") ?></strong></td> -</tr> <tr> <td colspan=3 align=center> -<?php - - //Update and get available formats - $recformats = glossary_get_available_formats(); - - $formats = array(); - - //Take names - foreach ($recformats as $format) { - $formats[$format->id] = get_string("displayformat$format->name", "glossary"); - } - asort($formats); - - print_simple_box_start('center'); - foreach ($formats as $formatid=>$formatname) { - $recformat = get_record('glossary_formats','id',$formatid); - echo '<tr>'; - echo '<td>' . $formatname . '</td>'; - $eicon = "<a title=\"" . get_string("edit") . "\" href=\"$CFG->wwwroot/mod/glossary/formats.php?id=$formatid&mode=edit\"><img border=\"0\" src=\"../pix/t/edit.gif\" alt=\"\" /></a>"; - if ( $recformat->visible ) { - $vtitle = get_string("hide"); - $vicon = "hide.gif"; - } else { - $vtitle = get_string("show"); - $vicon = "show.gif"; - } - $vicon = "<a title=\"" . $vtitle . "\" href=\"$CFG->wwwroot/mod/glossary/formats.php?id=$formatid&mode=visible\"><img border=\"0\" src=\"../pix/t/" . $vicon . "\" alt=\"\" /></a>"; - - echo '<td align="center" nowrap="nowrap">' . $eicon . '&nbsp;&nbsp;' . $vicon . '</td>'; - echo '</tr>'; - } - print_simple_box_end(); - -?> - - </td> -</tr> -<tr> - <td colspan=3 align=center> - <input type="submit" value="<?php print_string("savechanges") ?>" /></td> + <input type="submit" value="<?php print_string("savechanges") ?>"></td> </tr> </table> diff --git a/mod/glossary/db/mysql.php b/mod/glossary/db/mysql.php index c197b458f8c..038d1e01406 100644 --- a/mod/glossary/db/mysql.php +++ b/mod/glossary/db/mysql.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ @@ -125,7 +125,7 @@ function glossary_upgrade($oldversion) { } if ( $oldversion < 2003103100 ) { - print_simple_box('This update might take several seconds.<br />The more glossaries, entries and categories you have created, the more it will take so please be patient.','center', '50%', '', '20', 'noticebox'); + print_simple_box("This update might take several seconds.<p>The more glossaries, entries and categories you have created, the more it will take so please be patient.","center", "50%", "$THEME->cellheading", "20", "noticebox"); if ( $glossaries = get_records("glossary")) { $gids = ""; foreach ( $glossaries as $glossary ) { @@ -258,7 +258,7 @@ function glossary_upgrade($oldversion) { if ( $oldversion < 2004051400 ) { - print_simple_box("This update might take several seconds.<p>The more glossaries, entries and aliases you have created, the more it will take so please be patient.","center", "50%", '', "20", "noticebox"); + print_simple_box("This update might take several seconds.<p>The more glossaries, entries and aliases you have created, the more it will take so please be patient.","center", "50%", "$THEME->cellheading", "20", "noticebox"); if ( $entries = get_records("glossary_entries", '', '', '', 'id,concept')) { foreach($entries as $entry) { set_field("glossary_entries","concept",addslashes(trim($entry->concept)),"id",$entry->id); @@ -344,80 +344,7 @@ function glossary_upgrade($oldversion) { if ( $oldversion < 2004080900) { set_field('glossary','editalways','1','mainglossary','0'); } - - if ($oldversion < 2004111200) { - execute_sql("ALTER TABLE {$CFG->prefix}glossary DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_alias DROP INDEX entryid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_categories DROP INDEX glossaryid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_comments DROP INDEX entryid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_comments DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_entries DROP INDEX glossaryid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_entries DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_entries DROP INDEX concept;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_entries_categories DROP INDEX entryid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_entries_categories DROP INDEX categoryid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_ratings DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}glossary_ratings DROP INDEX entryid;",false); - - modify_database('','ALTER TABLE prefix_glossary ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_glossary_alias ADD INDEX entryid (entryid);'); - modify_database('','ALTER TABLE prefix_glossary_categories ADD INDEX glossaryid (glossaryid);'); - modify_database('','ALTER TABLE prefix_glossary_comments ADD INDEX entryid (entryid);'); - modify_database('','ALTER TABLE prefix_glossary_comments ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_glossary_entries ADD INDEX glossaryid (glossaryid);'); - modify_database('','ALTER TABLE prefix_glossary_entries ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_glossary_entries ADD INDEX concept (concept);'); - modify_database('','ALTER TABLE prefix_glossary_entries_categories ADD INDEX entryid (entryid);'); - modify_database('','ALTER TABLE prefix_glossary_entries_categories ADD INDEX categoryid (categoryid);'); - modify_database('','ALTER TABLE prefix_glossary_ratings ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_glossary_ratings ADD INDEX entryid (entryid);'); - - } - - //Delete orphaned categories (bug 2140) - if ($oldversion < 2005011100) { - $categories = get_records('glossary_categories', '', '', '', 'id, glossaryid'); - if ($categories) { - foreach ($categories as $category) { - $glossary = get_record('glossary', 'id', "$category->glossaryid"); - if (!$glossary) { - delete_records('glossary_categories', 'id', "$category->id"); - } - } - } - } - - //Allowprintview flag - if ($oldversion < 2005011200) { - table_column('glossary','','allowprintview','tinyint','2', 'unsigned', '1', '', 'allowcomments'); - $glossaries = get_records('glossary', '', '', '', 'id, name'); - if ($glossaries) { - foreach ($glossaries as $glossary) { - set_field('glossary', 'allowprintview', '1', 'id', "$glossary->id"); - } - } - } - - if ($oldversion < 2005031001) { - modify_database('',"INSERT INTO prefix_log_display VALUES ('glossary', 'view entry', 'glossary_entries', 'concept');"); - } - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - // update glossary_entries->definition - $sql = "select course from {$CFG->prefix}glossary,{$CFG->prefix}glossary_entries "; - $sql .= "where {$CFG->prefix}glossary.id = {$CFG->prefix}glossary_entries.glossaryid "; - $sql .= "and {$CFG->prefix}glossary_entries.id = "; - $wtm->update( 'glossary_entries','definition','format' ); - // update glossary_comments->text - $sql = "select course from {$CFG->prefix}glossary,{$CFG->prefix}glossary_entries,{$CFG->prefix}glossary_comments "; - $sql .= "where {$CFG->prefix}glossary.id = {$CFG->prefix}glossary_entries.glossaryid "; - $sql .= "and {$CFG->prefix}glossary_entries.id = {$CFG->prefix}glossary_comments.entryid "; - $sql .= "and {$CFG->prefix}glossary_comments.id = "; - $wtm->update( 'glossary_comments','text','format',$sql ); - } - return true; } diff --git a/mod/glossary/db/mysql.sql b/mod/glossary/db/mysql.sql index 752e293bf01..404a51b2209 100644 --- a/mod/glossary/db/mysql.sql +++ b/mod/glossary/db/mysql.sql @@ -21,7 +21,6 @@ CREATE TABLE prefix_glossary ( showalphabet tinyint(2) unsigned NOT NULL default '1', showall tinyint(2) unsigned NOT NULL default '1', allowcomments tinyint(2) unsigned NOT NULL default '0', - allowprintview tinyint(2) unsigned NOT NULL default '1', usedynalink tinyint(2) unsigned NOT NULL default '1', defaultapproval tinyint(2) unsigned NOT NULL default '1', globalglossary tinyint(2) unsigned NOT NULL default '0', @@ -35,8 +34,7 @@ CREATE TABLE prefix_glossary ( scale int(10) NOT NULL default '0', timecreated int(10) unsigned NOT NULL default '0', timemodified int(10) unsigned NOT NULL default '0', - PRIMARY KEY (id), - KEY course (course) + PRIMARY KEY (id) ) TYPE=MyISAM COMMENT='all glossaries'; # @@ -59,10 +57,7 @@ CREATE TABLE prefix_glossary_entries ( casesensitive tinyint(2) unsigned NOT NULL default '0', fullmatch tinyint(2) unsigned NOT NULL default '1', approved tinyint(2) unsigned NOT NULL default '1', - PRIMARY KEY (id), - KEY glossaryid (glossaryid), - KEY userid (userid), - KEY concept (concept) + PRIMARY KEY (id) ) TYPE=MyISAM COMMENT='all glossary entries'; # @@ -73,8 +68,7 @@ CREATE TABLE prefix_glossary_alias ( id int(10) unsigned NOT NULL auto_increment, entryid int(10) unsigned NOT NULL default '0', alias varchar(255) NOT NULL, - PRIMARY KEY (id), - KEY entryid (entryid) + PRIMARY KEY (id) ) TYPE=MyISAM COMMENT='entries alias'; # @@ -86,8 +80,7 @@ CREATE TABLE prefix_glossary_categories ( glossaryid int(10) unsigned NOT NULL default '0', name varchar(255) NOT NULL default '', usedynalink tinyint(2) unsigned NOT NULL default '1', - PRIMARY KEY (id), - KEY glossaryid (glossaryid) + PRIMARY KEY (id) ) TYPE=MyISAM COMMENT='all categories for glossary entries'; # @@ -98,9 +91,7 @@ CREATE TABLE prefix_glossary_entries_categories ( id int(10) unsigned NOT NULL auto_increment, categoryid int(10) unsigned NOT NULL default '0', entryid int(10) unsigned NOT NULL default '0', - PRIMARY KEY (id), - KEY entryid (entryid), - KEY categoryid (categoryid) + PRIMARY KEY (id) ) TYPE=MyISAM COMMENT='categories of each glossary entry'; CREATE TABLE prefix_glossary_comments ( @@ -110,9 +101,8 @@ CREATE TABLE prefix_glossary_comments ( comment text NOT NULL, format tinyint(2) unsigned NOT NULL default '0', timemodified int(10) unsigned NOT NULL default '0', - PRIMARY KEY (id), - KEY userid (userid), - KEY entryid (entryid) + + PRIMARY KEY (id) ) TYPE=MyISAM COMMENT='comments on glossary entries'; CREATE TABLE prefix_glossary_formats ( @@ -138,9 +128,7 @@ CREATE TABLE prefix_glossary_ratings ( entryid int(10) unsigned NOT NULL default '0', time int(10) unsigned NOT NULL default '0', rating tinyint(4) NOT NULL default '0', - PRIMARY KEY (id), - KEY userid (userid), - KEY entryid (entryid) + PRIMARY KEY (id) ) COMMENT='Contains user ratings for entries'; # -------------------------------------------------------- @@ -161,5 +149,4 @@ INSERT INTO prefix_log_display VALUES ('glossary', 'add comment', 'glossary', 'n INSERT INTO prefix_log_display VALUES ('glossary', 'update comment', 'glossary', 'name'); INSERT INTO prefix_log_display VALUES ('glossary', 'delete comment', 'glossary', 'name'); INSERT INTO prefix_log_display VALUES ('glossary', 'approve entry', 'glossary', 'name'); -INSERT INTO prefix_log_display VALUES ('glossary', 'view entry', 'glossary_entries', 'concept'); diff --git a/mod/glossary/db/oci8po.php b/mod/glossary/db/oci8po.php index 3eedb5ce536..5306ec06d95 100644 --- a/mod/glossary/db/oci8po.php +++ b/mod/glossary/db/oci8po.php @@ -1,28 +1,14 @@ -<?php // $Id$ - - - -function glossary_upgrade($oldversion) { - -/// This function does anything necessary to upgrade - -/// older versions to match current functionality - - - - global $CFG; - - - - - - return true; - -} - - - -?> - - - +<?PHP // $Id$ + +function glossary_upgrade($oldversion) { +/// This function does anything necessary to upgrade +/// older versions to match current functionality + + global $CFG; + + + return true; +} + +?> + diff --git a/mod/glossary/db/postgres7.php b/mod/glossary/db/postgres7.php index 20d615cdf34..c846dbe4560 100644 --- a/mod/glossary/db/postgres7.php +++ b/mod/glossary/db/postgres7.php @@ -20,7 +20,7 @@ function glossary_upgrade($oldversion) { } if ( $oldversion < 2004051400 ) { - print_simple_box("This update might take several seconds.<p>The more glossaries, entries and aliases you have created, the more it will take so please be patient.","center", "50%", '', "20", "noticebox"); + print_simple_box("This update might take several seconds.<p>The more glossaries, entries and aliases you have created, the more it will take so please be patient.","center", "50%", "$THEME->cellheading", "20", "noticebox"); if ( $entries = get_records("glossary_entries", '', '', '', 'id,concept')) { foreach($entries as $entry) { set_field("glossary_entries","concept",addslashes(trim($entry->concept)),"id",$entry->id); @@ -106,78 +106,6 @@ function glossary_upgrade($oldversion) { set_field('glossary','editalways','1','mainglossary','0'); } - if ($oldversion < 2004111200) { - execute_sql("DROP INDEX {$CFG->prefix}glossary_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_alias_entryid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_categories_glossaryid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_comments_entryid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_comments_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_entries_glossaryid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_entries_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_entries_concept_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_entries_categories_category_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_entries_categories_entryid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_ratings_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}glossary_ratings_entryid_idx;",false); - - modify_database('','CREATE INDEX prefix_glossary_course_idx ON prefix_glossary (course);'); - modify_database('','CREATE INDEX prefix_glossary_alias_entryid_idx ON prefix_glossary_alias (entryid);'); - modify_database('','CREATE INDEX prefix_glossary_categories_glossaryid_idx ON prefix_glossary_categories (glossaryid);'); - modify_database('','CREATE INDEX prefix_glossary_comments_entryid_idx ON prefix_glossary_comments (entryid);'); - modify_database('','CREATE INDEX prefix_glossary_comments_userid_idx ON prefix_glossary_comments (userid);'); - modify_database('','CREATE INDEX prefix_glossary_entries_glossaryid_idx ON prefix_glossary_entries (glossaryid);'); - modify_database('','CREATE INDEX prefix_glossary_entries_userid_idx ON prefix_glossary_entries (userid);'); - modify_database('','CREATE INDEX prefix_glossary_entries_concept_idx ON prefix_glossary_entries (concept);'); - modify_database('','CREATE INDEX prefix_glossary_entries_categories_category_idx ON prefix_glossary_entries_categories (categoryid);'); - modify_database('','CREATE INDEX prefix_glossary_entries_categories_entryid_idx ON prefix_glossary_entries_categories (entryid);'); - modify_database('','CREATE INDEX prefix_glossary_ratings_userid_idx ON prefix_glossary_ratings (userid);'); - modify_database('','CREATE INDEX prefix_glossary_ratings_entryid_idx ON prefix_glossary_ratings (entryid);'); - } - - //Delete orphaned categories (bug 2140) - if ($oldversion < 2005011100) { - $categories = get_records('glossary_categories', '', '', '', 'id, glossaryid'); - if ($categories) { - foreach ($categories as $category) { - $glossary = get_record('glossary', 'id', "$category->glossaryid"); - if (!$glossary) { - delete_records('glossary_categories', 'id', "$category->id"); - } - } - } - } - - //Allowprintview flag - if ($oldversion < 2005011200) { - table_column('glossary','','allowprintview','integer','2', 'unsigned', '1', '', 'allowcomments'); - $glossaries = get_records('glossary', '', '', '', 'id, name'); - if ($glossaries) { - foreach ($glossaries as $glossary) { - set_field('glossary', 'allowprintview', '1', 'id', "$glossary->id"); - } - } - } - - if ($oldversion < 2005031001) { - modify_database('',"INSERT INTO prefix_log_display VALUES ('glossary', 'view entry', 'glossary_entries', 'concept');"); - } - - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - // update glossary_entries->definition - $sql = "select course from {$CFG->prefix}glossary,{$CFG->prefix}glossary_entries "; - $sql .= "where {$CFG->prefix}glossary.id = {$CFG->prefix}glossary_entries.glossaryid "; - $sql .= "and {$CFG->prefix}glossary_entries.id = "; - $wtm->update( 'glossary_entries','definition','format' ); - // update glossary_comments->text - $sql = "select course from {$CFG->prefix}glossary,{$CFG->prefix}glossary_entries,{$CFG->prefix}glossary_comments "; - $sql .= "where {$CFG->prefix}glossary.id = {$CFG->prefix}glossary_entries.glossaryid "; - $sql .= "and {$CFG->prefix}glossary_entries.id = {$CFG->prefix}glossary_comments.entryid "; - $sql .= "and {$CFG->prefix}glossary_comments.id = "; - $wtm->update( 'glossary_comments','text','format',$sql ); - } - return true; } diff --git a/mod/glossary/db/postgres7.sql b/mod/glossary/db/postgres7.sql index e8a120a80e6..3840cef6d33 100644 --- a/mod/glossary/db/postgres7.sql +++ b/mod/glossary/db/postgres7.sql @@ -21,7 +21,6 @@ CREATE TABLE prefix_glossary ( showalphabet int2 NOT NULL default '1', showall int2 NOT NULL default '1', allowcomments int2 NOT NULL default '0', - allowprintview int2 NOT NULL default '1', usedynalink int2 NOT NULL default '1', defaultapproval int2 NOT NULL default '1', globalglossary int2 NOT NULL default '0', @@ -38,9 +37,6 @@ CREATE TABLE prefix_glossary ( PRIMARY KEY (id) ); -CREATE INDEX prefix_glossary_course_idx ON prefix_glossary (course); - - # # Table structure for table `glossary_entries` # @@ -64,10 +60,6 @@ CREATE TABLE prefix_glossary_entries ( PRIMARY KEY(id) ); -CREATE INDEX prefix_glossary_entries_glossaryid_idx ON prefix_glossary_entries (glossaryid); -CREATE INDEX prefix_glossary_entries_userid_idx ON prefix_glossary_entries (userid); -CREATE INDEX prefix_glossary_entries_concept_idx ON prefix_glossary_entries (concept); - # # Table structure for table `glossary_cageories` # @@ -80,8 +72,6 @@ CREATE TABLE prefix_glossary_categories ( PRIMARY KEY (id) ); -CREATE INDEX prefix_glossary_categories_glossaryid_idx ON prefix_glossary_categories (glossaryid); - # # Table structure for table `glossary_alias` # @@ -93,8 +83,6 @@ CREATE TABLE prefix_glossary_alias ( PRIMARY KEY (id) ); -CREATE INDEX prefix_glossary_alias_entryid_idx ON prefix_glossary_alias (entryid); - # # Table structure for table `glossary_entries_category` # @@ -106,9 +94,6 @@ CREATE TABLE prefix_glossary_entries_categories ( PRIMARY KEY (id) ); -CREATE INDEX prefix_glossary_entries_categories_category_idx ON prefix_glossary_entries_categories (categoryid); -CREATE INDEX prefix_glossary_entries_categories_entryid_idx ON prefix_glossary_entries_categories (entryid); - # # Table structure for table `glossary_comments` # @@ -123,9 +108,6 @@ CREATE TABLE prefix_glossary_comments ( PRIMARY KEY (id) ); -CREATE INDEX prefix_glossary_comments_entryid_idx ON prefix_glossary_comments (entryid); -CREATE INDEX prefix_glossary_comments_userid_idx ON prefix_glossary_comments (userid); - # # Table structure for table `glossary_formats` # @@ -157,9 +139,6 @@ CREATE TABLE prefix_glossary_ratings ( PRIMARY KEY (id) ); -CREATE INDEX prefix_glossary_ratings_userid_idx ON prefix_glossary_ratings (userid); -CREATE INDEX prefix_glossary_ratings_entryid_idx ON prefix_glossary_ratings (entryid); - # # Dumping data for table `log_display` # @@ -177,4 +156,3 @@ INSERT INTO prefix_log_display VALUES ('glossary', 'add comment', 'glossary', 'n INSERT INTO prefix_log_display VALUES ('glossary', 'update comment', 'glossary', 'name'); INSERT INTO prefix_log_display VALUES ('glossary', 'delete comment', 'glossary', 'name'); INSERT INTO prefix_log_display VALUES ('glossary', 'approve entry', 'glossary', 'name'); -INSERT INTO prefix_log_display VALUES ('glossary', 'view entry', 'glossary_entries', 'concept'); diff --git a/mod/glossary/deleteentry.php b/mod/glossary/deleteentry.php index 1bbfa30a63f..30f355c6cdc 100644 --- a/mod/glossary/deleteentry.php +++ b/mod/glossary/deleteentry.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); @@ -6,9 +6,8 @@ require_variable($id); // course module ID optional_variable($confirm); // commit the operation? optional_variable($entry); // entry id - - $prevmode = required_param('prevmode'); - $hook = optional_param('hook'); + require_variable($prevmode); // current frame + optional_variable($hook); // pivot id $strglossary = get_string("modulename", "glossary"); $strglossaries = get_string("modulenameplural", "glossary"); @@ -24,11 +23,7 @@ error("Course is misconfigured"); } - if (! $entry = get_record("glossary_entries","id", $entry)) { - error("Entry ID was incorrect"); - } - - require_login($course->id, false, $cm); + require_login($course->id); if (isguest()) { error("Guests are not allowed to edit or delete entries", $_SERVER["HTTP_REFERER"]); @@ -42,26 +37,19 @@ error("You are not allowed to edit or delete entries"); } + $entryfields = get_record("glossary_entries", "id", $entry); $strareyousuredelete = get_string("areyousuredelete","glossary"); - print_header_simple(format_string($glossary->name), "", - "<a href=\"index.php?id=$course->id\">$strglossaries</a> -> ".format_string($glossary->name), - "", "", true, update_module_button($cm->id, $course->id, $strglossary), + print_header_simple("$glossary->name", "", + "<A HREF=index.php?id=$course->id>$strglossaries</A> -> $glossary->name", + "", "", true, update_module_button($cm->id, $course->id, $strglossary), navmenu($course, $cm)); - - if (($entry->userid != $USER->id) and !isteacher($course->id)) { - error("You can't delete other people's entries!"); - } - $ineditperiod = ((time() - $entry->timecreated < $CFG->maxeditingtime) || $glossary->editalways); - if (!$ineditperiod and !isteacher($course->id)) { - error("You can't delete this. Time expired!"); - } - /// If data submitted, then process and store. - + if ($confirm) { // the operation was confirmed. // if it is an imported entry, just delete the relation + $entry = get_record("glossary_entries","id", $entry); if ( $entry->sourceglossaryid ) { $entry->glossaryid = $entry->sourceglossaryid; @@ -77,17 +65,17 @@ delete_records("glossary_comments", "entryid",$entry->id); delete_records("glossary_alias", "entryid", $entry->id); delete_records("glossary_ratings", "entryid", $entry->id); - delete_records("glossary_entries","id", $entry->id); + delete_records("glossary_entries","id", $entry->id); } - add_to_log($course->id, "glossary", "delete entry", "view.php?id=$cm->id&amp;mode=$prevmode&amp;hook=$hook", $entry->id,$cm->id); - redirect("view.php?id=$cm->id&amp;mode=$prevmode&amp;hook=$hook", $entrydeleted); + add_to_log($course->id, "glossary", "delete entry", "view.php?id=$cm->id&mode=$prevmode&hook=$hook", $entry,$cm->id); + redirect("view.php?id=$cm->id&mode=$prevmode&hook=$hook", $entrydeleted); } else { // the operation has not been confirmed yet so ask the user to do so - notice_yesno("<b>$entry->concept</b><p>$strareyousuredelete</p>", - "deleteentry.php?id=$cm->id&amp;mode=delete&amp;confirm=1&amp;entry=".s($entry->id)."&amp;prevmode=$prevmode&amp;hook=$hook", - "view.php?id=$cm->id&amp;mode=$prevmode&amp;hook=$hook"); + notice_yesno("<b>$entryfields->concept</b><p>$strareyousuredelete</p>", + "deleteentry.php?id=$cm->id&mode=delete&confirm=1&entry=".s($entry)."&prevmode=$prevmode&hook=$hook", + "view.php?id=$cm->id&mode=$prevmode&hook=$hook"); } diff --git a/mod/glossary/edit.html b/mod/glossary/edit.html index 1d71b3b5e75..f3aa2812a4f 100644 --- a/mod/glossary/edit.html +++ b/mod/glossary/edit.html @@ -1,79 +1,81 @@ -<form name="form" method="post" action="edit.php" enctype="multipart/form-data"> -<table border="0" cellpadding="5"> +<center> +<form name="form" method="post" <?php p($onsubmit) ?> action="edit.php" enctype="multipart/form-data"> +<table class=generalbox cellpadding=5 bgcolor="<?php p($THEME->cellheading)?>"> <?php if (isset($errors)) { ?> - <tr valign="top"> - <td colspan="2" align="center"><strong><font color="red"><?php p($errors) ?></font></strong> + <tr valign=top> + <td colspan=2 align=center><strong><font color=red><?php p($errors) ?></font></strong> </td> </tr> <?php } ?> -<tr valign="top"> -<td colspan="2"> +<tr valign=top> +<td colspan=2> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> - <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="5"> + <td valign="top"><table border="0" width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> - <td width="150" align="right"><b><?php echo get_string("concept","glossary") ?>:</b></td> - <td><input type="text" name="concept" size="30" value="<?php p(clean_text($newentry->concept)) ?>" alt="<?php print_string("concept","glossary") ?>" /></td> + <td width="150" align=right><p><b><?php echo get_string("concept","glossary") ?>:</b></p></td> + <td><input type="text" name="concept" size=30 value="<?php p($newentry->concept) ?>"></td> </tr> <tr> - <td align="right"><b><?php echo get_string("categories","glossary") ?>:</b></td> + <td align="right"><p><b><?php echo get_string("categories","glossary") ?>:</b></p></td> <td valign="top"> <?php $categories = get_records("glossary_categories","glossaryid",$glossary->id,'name ASC'); - echo "<select size=\"5\" name=\"categories[]\" multiple=\"multiple\" >"; - echo "<option value=\"0\">" . get_string("notcategorised","glossary") . "</option>"; + echo "<select size=\"5\" name=\"categories[]\" multiple=\"yes\">"; + echo "<option value=\"0\">" . get_string("notcategorised","glossary") . "</optioon>"; if ( $categories ) { foreach ( $categories as $category ) { echo " <option "; if (isset($newentry->id)) { if ( record_exists("glossary_entries_categories","entryid",$newentry->id,"categoryid",$category->id) ) { - echo "selected=\"selected\" " ; + echo "selected " ; } } - echo "value=\"$category->id\">".clean_text($category->name)."</option>\n"; + echo "value=\"$category->id\">$category->name</option>\n"; } } - echo "</select>\n"; ?> </td> </tr> </table></td> <td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> - <td valign="top" align="right"><b> + <td valign="top" align=right><p><b> <?php echo get_string("aliases","glossary"); echo ':<br />'; - helpbutton("aliases2", strip_tags(get_string("aliases", "glossary")), "glossary"); - ?></b> + helpbutton("aliases", strip_tags(get_string("aliases", "glossary")), "glossary"); + ?></b></p></td> </td> <td valign="top"> - <textarea rows="2" name="aliases" cols="20"><?php p(clean_text($newentry->aliases)) ?></textarea> + <textarea rows="2" name="aliases" cols="20"><?php p($newentry->aliases) ?></textarea> </td> </tr> <tr> <td colspan="2"> <?php if ( !$glossary->usedynalink ) { - echo '<input type="hidden" name="usedynalink" value="0" />'; - echo '<input type="hidden" name="casesensitive" value="0" />'; - echo '<input type="hidden" name="fullmatch" value="0" />'; + echo '<input type="hidden" name=usedynalink value="0">'; + echo '<input type="hidden" name=casesensitive value="0">'; + echo '<input type="hidden" name=fullmatch value="0">'; } else { - echo '<script type="text/javascript">var items = [\'casesensitive\',\'fullmatch\'];</script>'; + echo '<script>var items = [\'casesensitive\',\'fullmatch\'];</script>'; if (!empty($newentry->usedynalink)) { - $selected = "checked=\"checked\""; + $selected = "checked"; } else { $selected = ""; } - echo '<input type="checkbox" name="usedynalink" value="1" alt="' . get_string("entryusedynalink","glossary") . '" ' . $selected . ' onclick="return lockoptions(\'form\',\'usedynalink\', items)" /> '; + echo '<input type="checkbox" name="usedynalink" value=1 ' . $selected . ' onclick="return lockoptions(\'form\',\'usedynalink\', items)"> '; + echo '<font size="-1">'; print_string("entryusedynalink","glossary"); - echo helpbutton("usedynalinkentry", strip_tags(get_string("usedynalink", "glossary")), "glossary"); + echo '</font>'; + echo helpbutton("usedynalink", strip_tags(get_string("usedynalink", "glossary")), "glossary"); echo '<br />'; if (!empty($newentry->casesensitive)) { @@ -81,8 +83,10 @@ if (isset($errors)) { } else { $selected = ""; } - echo '<input type="checkbox" name="casesensitive" value="1" alt="' . get_string("casesensitive","glossary") . '" ' . $selected . ' /> '; + echo '<input type="checkbox" name="casesensitive" value=1 ' . $selected . '> '; + echo '<font size="-1">'; print_string("casesensitive","glossary"); + echo '</font>'; echo helpbutton("casesensitive", strip_tags(get_string("casesensitive", "glossary")), "glossary"); echo '<br />'; @@ -92,8 +96,10 @@ if (isset($errors)) { } else { $selected = ""; } - echo '<input type="checkbox" name="fullmatch" value="1" alt="' . get_string("fullmatch","glossary") . '" ' . $selected . ' /> '; + echo '<input type="checkbox" name="fullmatch" value=1 ' . $selected . '> '; + echo '<font size="-1">'; print_string("fullmatch","glossary"); + echo '</font>'; echo helpbutton("fullmatch", strip_tags(get_string("fullmatch", "glossary")), "glossary"); echo '<br />'; } @@ -105,81 +111,74 @@ if (isset($errors)) { </table> </td> </tr> -<tr valign="top"> - <td align="right"><b> - <?php print_string("definition", "glossary"); ?>: - </b></td> - <td align="left" rowspan="2"> - <?php print_textarea($usehtmleditor, 25, 65, 630, 400, "text", $newentry->definition); ?> - </td> -</tr> -<tr valign="top"> - <td align="right" valign="middle" nowrap="nowrap"> +<tr valign=top> + <td align=right><p><b><?php echo get_string("definition","glossary") ?>:</b></p> + <font size="1"> <?php helpbutton("writing", get_string("helpwriting"), "moodle", true, true); echo "<br />"; if ($usehtmleditor) { helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); } else { - emoticonhelpbutton("form", "text"); + emoticonhelpbutton("form", "description"); } - echo "<br />"; ?> - + <br /> + </font> </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("formattexttype"); ?>:</b></td> <td> <?php - if ($usehtmleditor) { /// Trying this out for a while - print_string('formathtml'); - echo '<input type="hidden" name="format" value="'.FORMAT_HTML.'" />'; - } else { - if (!isset($newentry->format)) { - $newentry->format = $defaultformat; - } - choose_from_menu(format_text_menu(), "format", $newentry->format, ""); - } - helpbutton("textformat", get_string("helpformatting")); - ?> + print_textarea($usehtmleditor, 20, 60, 680, 400, "text", $newentry->definition); + + echo "<p align=right>"; + helpbutton("textformat", get_string("helpformatting")); + print_string("formattexttype"); + echo ":&nbsp;"; + if (!isset($newentry->format)) { + $newentry->format = $defaultformat; + } + choose_from_menu(format_text_menu(), "format", $newentry->format, ""); + echo "</p>"; + ?> </td> </tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("attachment", "glossary") ?>:<br />(<?php print_string("optional") ?>)&nbsp;</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("attachment", "glossary") ?>:<br />(<?php print_string("optional") ?>)&nbsp;</b></p></td> <td> + <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo get_max_upload_file_size($CFG->maxbytes, $course->maxbytes) ?>"> + <input type="file" name="attachment" size=40> <?php - require_once($CFG->dirroot.'/lib/uploadlib.php'); - upload_print_form_fragment(1,array('attachment'),null,false,null,$course->maxbytes,0,false); helpbutton("attachment", get_string("attachment", "glossary"), "glossary"); - echo '&nbsp;'; print_string("maxsize", "", display_size(get_max_upload_file_size($CFG->maxbytes, $course->maxbytes))); ?> </td> </tr> <tr> -<td colspan="2"> - <p align="center"> +<td colspan=2> + <p align=center> <?php if (isset($newentry->id)) { - echo "<input type=\"hidden\" name=\"e\" value=\"$newentry->id\" />"; - } + echo "<input type=\"hidden\" name=e value=\"$newentry->id\">"; + } ?> - <input type="hidden" name="husedynalink" value="1" /> - <input type="hidden" name="hcasesensitive" value="0" /> - <input type="hidden" name="hfullmatch" value="1" /> + <input type="hidden" name=husedynalink value="1"> + <input type="hidden" name=hcasesensitive value="0"> + <input type="hidden" name=hfullmatch value="1"> - <input type="hidden" name="id" value="<?php p($cm->id) ?>" /> - <input type="hidden" name="mode" value="<?php p($mode) ?>" /> - <input type="hidden" name="hook" value="<?php p($hook) ?>" /> - <input type="hidden" name="confirm" value="1" /> + <input type="hidden" name=id value="<?php p($cm->id) ?>"> + <input type="hidden" name=mode value="<?php p($mode) ?>"> + <input type="hidden" name=hook value="<?php p($hook) ?>"> + <input type="hidden" name=confirm value="1"> - <input type="submit" value="<?php print_string("savechanges") ?>" /> - <input type="reset" value="<?php print_string("revert") ?>" /> - </p> + <input type="submit" value="<?php print_string("savechanges") ?>"> + <input type="reset" value="<?php print_string("revert") ?>"> + </P> </td> </tr> </table> +</center> + + </form> + diff --git a/mod/glossary/edit.php b/mod/glossary/edit.php index 49dae1744fa..084e38b114c 100644 --- a/mod/glossary/edit.php +++ b/mod/glossary/edit.php @@ -1,16 +1,16 @@ -<?php // $Id$ +<?PHP // $Id$ -require_once('../../config.php'); -require_once('lib.php'); +require_once("../../config.php"); +require_once("lib.php"); -global $CFG, $USER; +global $CFG, $USER, $THEME; require_variable($id); // Course Module ID optional_variable($e); // EntryID optional_variable($confirm,0); // proceed. Edit the edtry -$mode = optional_param('mode'); // categories if by category? -$hook = optional_param('hook'); // CategoryID +optional_variable($mode); // categories if by category? +optional_variable($hook); // CategoryID if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); @@ -20,7 +20,7 @@ if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); } -require_login($course->id, false, $cm); +require_login($course->id); if ( isguest() ) { error("Guests are not allowed to edit glossaries", $_SERVER["HTTP_REFERER"]); @@ -29,16 +29,6 @@ if ( isguest() ) { if (! $glossary = get_record("glossary", "id", $cm->instance)) { error("Course module is incorrect"); } - -if ($CFG->dbtype == 'postgres7' ) { - $ucase = 'upper'; -} else { - $ucase = 'ucase'; -} - -if (!$glossary->studentcanpost && !isteacher($glossary->course)) { - error("You can't add/edit entries to this glossary!"); -} if ( $confirm ) { $form = data_submitted(); if ( !isset($form->usedynalink) ) { @@ -51,12 +41,12 @@ if ( $confirm ) { $form->fullmatch = 0; } $timenow = time(); - //$form->text = clean_text($form->text, $form->format); + $form->text = clean_text($form->text, $form->format); $newentry->course = $glossary->course; $newentry->glossaryid = $glossary->id; - $newentry->concept = clean_text(trim($form->concept)); + $newentry->concept = trim($form->concept); $newentry->definition = $form->text; $newentry->format = $form->format; $newentry->usedynalink = $form->usedynalink; @@ -64,29 +54,30 @@ if ( $confirm ) { $newentry->fullmatch = $form->fullmatch; $newentry->timemodified = $timenow; $newentry->approved = 0; - $newentry->aliases = ""; if ( $glossary->defaultapproval or isteacher($course->id) ) { $newentry->approved = 1; } - $strglossary = get_string("modulename", "glossary"); - $strglossaries = get_string("modulenameplural", "glossary"); - $stredit = get_string("edit"); - if ($form->concept == '' or trim($form->text) == '' ) { $errors = get_string('fillfields','glossary'); + $strglossary = get_string("modulename", "glossary"); + $strglossaries = get_string("modulenameplural", "glossary"); + $stredit = get_string("edit"); + if ($usehtmleditor = can_use_richtext_editor()) { $defaultformat = FORMAT_HTML; + $onsubmit = "onsubmit=\"copyrichtext(form.text);\""; } else { $defaultformat = FORMAT_MOODLE; + $onsubmit = ""; } - print_header_simple(format_string($glossary->name), "", - "<a href=\"index.php?id=$course->id\">$strglossaries</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($glossary->name,true)."</a> -> $stredit", "form.text", + print_header_simple(strip_tags("$glossary->name"), "", + "<A HREF=\"index.php?id=$course->id\">$strglossaries</A> -> + <A HREF=\"view.php?id=$cm->id\">$glossary->name</A> -> $stredit", "form.text", "", true, "", navmenu($course, $cm)); - print_heading(format_string($glossary->name)); + print_heading($glossary->name); include("edit.html"); @@ -95,25 +86,11 @@ if ( $confirm ) { } if ($e) { - //We are updating an entry, so we compare current session user with - //existing entry user to avoid some potential problems if secureforms=off - //Perhaps too much security? Anyway thanks to skodak (Bug 1823) - $old = get_record('glossary_entries', 'id', $e); - $ineditperiod = ((time() - $old->timecreated < $CFG->maxeditingtime) || $glossary->editalways); - if ( (!$ineditperiod || $USER->id != $old->userid) and !isteacher($course->id) and $e) { - if ( $USER->id != $old->userid ) { - error("You can't edit other people's entries!"); - } elseif (!$ineditperiod) { - error("You can't edit this. Time expired!"); - } - die; - } - $newentry->id = $e; $permissiongranted = 1; if ( !$glossary->allowduplicatedentries ) { - if ($dupentries = get_records("glossary_entries","$ucase(concept)", strtoupper($newentry->concept))) { + if ($dupentries = get_records("glossary_entries","UCASE(concept)", strtoupper($newentry->concept))) { foreach ($dupentries as $curentry) { if ( $glossary->id == $curentry->glossaryid ) { if ( $curentry->id != $e ) { @@ -127,19 +104,16 @@ if ( $confirm ) { if ( $permissiongranted ) { $newentry->attachment = $_FILES["attachment"]; - if ($newfilename = glossary_add_attachment($newentry, 'attachment')) { + if ($newfilename = glossary_add_attachment($newentry, $newentry->attachment)) { $newentry->attachment = $newfilename; } else { unset($newentry->attachment); } - if (update_record("glossary_entries", $newentry)) { - add_to_log($course->id, "glossary", "update entry", - "view.php?id=$cm->id&amp;mode=entry&amp;hook=$newentry->id", - $newentry->id, $cm->id); - $redirectmessage = get_string('entryupdated','glossary'); - } else { + if (! update_record("glossary_entries", $newentry)) { error("Could not update your glossary"); + } else { + add_to_log($course->id, "glossary", "update entry", "view.php?id=$cm->id&mode=entry&hook=$newentry->id", $newentry->id,$cm->id); } } else { error("Could not update this glossary entry because this concept already exist."); @@ -153,25 +127,23 @@ if ( $confirm ) { $permissiongranted = 1; if ( !$glossary->allowduplicatedentries ) { - if ($dupentries = get_record("glossary_entries","$ucase(concept)", strtoupper($newentry->concept), "glossaryid", $glossary->id)) { + if ($dupentries = get_record("glossary_entries","UCASE(concept)", strtoupper($newentry->concept), "glossaryid", $glossary->id)) { $permissiongranted = 0; } } if ( $permissiongranted ) { - if ($newentry->id = insert_record("glossary_entries", $newentry)) { + if (! $newentry->id = insert_record("glossary_entries", $newentry)) { + error("Could not insert this new entry"); + } else { $e = $newentry->id; $newentry->attachment = $_FILES["attachment"]; - if ($newfilename = glossary_add_attachment($newentry, 'attachment')) { + if ($newfilename = glossary_add_attachment($newentry, $newentry->attachment)) { $newentry->attachment = $newfilename; } else { unset($newentry->attachment); } set_field("glossary_entries", "attachment", $newfilename, "id", $newentry->id); - add_to_log($course->id, "glossary", "add entry", - "view.php?id=$cm->id&amp;mode=entry&amp;hook=$newentry->id", $newentry->id,$cm->id); - $redirectmessage = get_string('entrysaved','glossary'); - } else { - error("Could not insert this new entry"); + add_to_log($course->id, "glossary", "add entry", "view.php?id=$cm->id&mode=entry&hook=$newentry->id", $newentry->id,$cm->id); } } else { error("Could not insert this glossary entry because this concept already exist."); @@ -186,27 +158,28 @@ if ( $confirm ) { foreach ($form->categories as $category) { if ( $category > 0 ) { $newcategory->categoryid = $category; - insert_record("glossary_entries_categories",$newcategory, false); + insert_record("glossary_entries_categories",$newcategory); } else { break; } } } if ( isset($form->aliases) ) { - if ( $aliases = explode("\n",clean_text($form->aliases)) ) { + if ( $aliases = explode("\n",$form->aliases) ) { foreach ($aliases as $alias) { $alias = trim($alias); if ($alias) { unset($newalias); $newalias->entryid = $e; $newalias->alias = $alias; - insert_record("glossary_alias",$newalias, false); + insert_record("glossary_alias",$newalias); } } } } - redirect("view.php?id=$cm->id&amp;mode=entry&amp;hook=$newentry->id", $redirectmessage); + redirect("view.php?id=$cm->id&mode=entry&hook=$newentry->id"); + die; } else { if ($e) { $form = get_record("glossary_entries", "id", $e); @@ -221,8 +194,6 @@ if ( $confirm ) { $newentry->casesensitive = $form->casesensitive; $newentry->fullmatch = $form->fullmatch; $newentry->aliases = ""; - $newentry->userid = $form->userid; - $newentry->timecreated = $form->timecreated; if ( $aliases = get_records("glossary_alias","entryid",$e) ) { foreach ($aliases as $alias) { @@ -231,8 +202,6 @@ if ( $confirm ) { } } } - - //Fill and print the form. //We check every field has a default values here!! if (!isset($newentry->concept)) { @@ -265,47 +234,34 @@ if (!isset($newentry->fullmatch)) { if (!isset($newentry->definition)) { $newentry->definition = ""; } -if (!isset($newentry->timecreated)) { - $newentry->timecreated = 0; -} -if (!isset($newentry->userid)) { - $newentry->userid = $USER->id; -} $strglossary = get_string("modulename", "glossary"); $strglossaries = get_string("modulenameplural", "glossary"); $stredit = get_string("edit"); if ($usehtmleditor = can_use_richtext_editor()) { $defaultformat = FORMAT_HTML; + $onsubmit = "onsubmit=\"copyrichtext(form.text);\""; } else { $defaultformat = FORMAT_MOODLE; + $onsubmit = ""; } -print_header_simple(format_string($glossary->name), "", - "<a href=\"index.php?id=$course->id\">$strglossaries</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($glossary->name,true)."</a> -> $stredit", "", +print_header_simple(strip_tags("$glossary->name"), "", + "<A HREF=\"index.php?id=$course->id\">$strglossaries</A> -> + <A HREF=\"view.php?id=$cm->id\">$glossary->name</A> -> $stredit", "", "", true, "", navmenu($course, $cm)); -$ineditperiod = ((time() - $newentry->timecreated < $CFG->maxeditingtime) || $glossary->editalways); -if ( (!$ineditperiod || $USER->id != $newentry->userid) and !isteacher($course->id) and $e) { - if ( $USER->id != $newentry->userid ) { - error("You can't edit other people's entries!"); - } elseif (!$ineditperiod) { - error("You can't edit this. Time expired!"); - } - die; -} - - print_heading(format_string($glossary->name)); + echo '<p align="center"><font size="3"><b>' . stripslashes_safe($glossary->name); + echo '</b></font></p>'; /// Info box if ( $glossary->intro ) { - print_simple_box(format_text($glossary->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); + print_simple_box_start('center','70%'); + echo format_text($glossary->intro); + print_simple_box_end(); } - echo '<br />'; - /// Tabbed browsing sections $tab = GLOSSARY_ADDENTRY_VIEW; include("tabs.html"); @@ -321,7 +277,6 @@ glossary_print_tabbed_table_end(); use_html_editor("text"); } - print_footer($course); ?> diff --git a/mod/glossary/editcategories.html b/mod/glossary/editcategories.html index 2464104e7a6..9c4742b7e7c 100644 --- a/mod/glossary/editcategories.html +++ b/mod/glossary/editcategories.html @@ -1,44 +1,44 @@ -<?php // $Id$ - global $CFG; +<?PHP // $Id$ + global $CFG, $THEME; require_once("../../config.php"); ?> <center> -<form name="form" method="post" action="editcategories.php"> -<table class="generalbox" cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php echo get_string("name") ?>:</b></td> +<FORM name="form" method="post" action="editcategories.php"> +<table class=generalbox cellpadding=5 bgcolor="<?php p($THEME->cellheading)?>"> +<tr valign=top> + <td align=right><p><b><?php echo get_string("name") ?>:</b></p></td> <td> - <input type="text" name="name" size="30" value="<?php p($name) ?>" /> + <INPUT type="text" name="name" size=30 value="<?php p($name) ?>"> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("linkcategory","glossary") ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php echo get_string("linkcategory","glossary") ?>:</b></p></td> <td> <select size="1" name="usedynalink"> <option value="1" <?php if ( $usedynalink ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("yes") ?></option> <option value="0" <?php if ( !$usedynalink ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("no") ?> </option> </select> <?php helpbutton("linkcategory", get_string("linkcategory", "glossary"), "glossary") ?> </td> </tr> -<td colspan="2"> - <p align="center"> - <input type="hidden" name="id" value="<?php p($cm->id) ?>" /> - <input type="hidden" name="action" value="<?php p($action) ?>" /> - <input type="hidden" name="confirm" value="1" /> - <input type="hidden" name="mode" value='cat' /> - <input type="hidden" name="hook" value="<?php p($hook) ?>" /> - <input type="submit" value="<?php print_string("savechanges") ?>" /> - <input type="reset" value="<?php print_string("back","glossary") ?>" onclick="javascript:history.go(-1);" /> - </p> +<td colspan=2> + <p align=center> + <input type="hidden" name=id value="<?php p($cm->id) ?>"> + <input type="hidden" name=action value="<?php p($action) ?>"> + <input type="hidden" name=confirm value=1> + <input type="hidden" name=mode value='cat'> + <input type="hidden" name=hook value="<?php p($hook) ?>"> + <input type="submit" value="<?php print_string("savechanges") ?>"> + <input type="reset" value="<?php print_string("back","glossary") ?>" onclick="javascript:history.go(-1);"> + </P> </td> </tr> </table> diff --git a/mod/glossary/editcategories.php b/mod/glossary/editcategories.php index 19a8bb012f9..03a0168c5e1 100644 --- a/mod/glossary/editcategories.php +++ b/mod/glossary/editcategories.php @@ -1,24 +1,21 @@ -<?php // $Id$ +<?PHP // $Id$ /// This page allows to edit entries categories for a particular instance of glossary require_once("../../config.php"); require_once("lib.php"); - require_variable($id); // Course Module ID, or - optional_variable($usedynalink); // category ID - optional_variable($confirm); // confirm the action + require_variable($id); // Course Module ID, or + optional_variable($mode); // cat + optional_variable($hook); // category ID + optional_variable($action); // what to do + optional_variable($usedynalink); // category ID + optional_variable($confirm); // confirm the action - optional_variable($name); // confirm the name - - $name = clean_text($name); - - $action = optional_param('action'); // what to do - $hook = optional_param('hook',0); // category ID - $mode = optional_param('mode'); // cat - - $action = strtolower($action); + optional_variable($name); // confirm the action + $action = strtolower($action); + if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); } @@ -31,203 +28,192 @@ error("Course module is incorrect"); } - if ($hook > 0) { - if ($category = get_record("glossary_categories","id",$hook)) { - //Check it belongs to the same glossary - if ($category->glossaryid != $glossary->id) { - error("Glossary is incorrect"); - } - } else { - error("Category is incorrect"); - } - } + require_login($course->id); - require_login($course->id, false); - - if ( !isteacher($course->id) ) { + if ( !isteacher($course->id) ) { error("You must be a teacher to use this page."); - } + } + +// add_to_log($course->id, "glossary", "edit categories", "view.php?id=$cm->id", "$glossary->id", $cm->id); $strglossaries = get_string("modulenameplural", "glossary"); $strglossary = get_string("modulename", "glossary"); - print_header_simple(format_string($glossary->name), "", - "<a href=\"index.php?id=$course->id\">$strglossaries</a> -> <a href=\"view.php?id=$cm->id&amp;tab=GLOSSARY_CATEGORY_VIEW\">".format_string($glossary->name,true)."</a> -> " . get_string("categories","glossary"), - "", "", true, update_module_button($cm->id, $course->id, $strglossary), - navmenu($course, $cm)); + print_header_simple(strip_tags("$glossary->name"), "", + "<A HREF=index.php?id=$course->id>$strglossaries</A> -> <A HREF=view.php?id=$cm->id&tab=GLOSSARY_CATEGORY_VIEW>$glossary->name</a> -> " . get_string("categories","glossary"), + "", "", true, update_module_button($cm->id, $course->id, $strglossary), + navmenu($course, $cm)); - if ( $hook >0 ) { + if ( $hook ) { + $category = get_record("glossary_categories","id",$hook); - if ( $action == "edit" ) { - if ( $confirm ) { - $action = ""; - $cat->id = $hook; - $cat->name = $name; - $cat->usedynalink = $usedynalink; + if ( $action == "edit" ) { + if ( $confirm ) { + $action = ""; + $cat->id = $hook; + $cat->name = $name; + $cat->usedynalink = $usedynalink; - if ( !update_record("glossary_categories", $cat) ) { - error("Weird error. The category was not updated."); + if ( !update_record("glossary_categories", $cat) ) { + error("Weird error. The category was not updated."); + redirect("editcategories.php?id=$cm->id"); + } else { + add_to_log($course->id, "glossary", "edit category", "editcategories.php?id=$cm->id", $hook,$cm->id); + } + } else { + echo "<p align=\"center\">" . get_string("edit"). " " . get_string("category","glossary") . "<font size=\"3\">"; + + $name = $category->name; + $usedynalink = $category->usedynalink; + require "editcategories.html"; + print_footer(); + die; + } + } elseif ( $action == "delete" ) { + if ( $confirm ) { + + delete_records("glossary_entries_categories","categoryid", $hook); + delete_records("glossary_categories","id", $hook); + + print_simple_box_start("center","40%", "#FFBBBB"); + echo "<center>" . get_string("categorydeleted","glossary") ."</center>"; + echo "</center>"; + print_simple_box_end(); + + print_footer($course); + + add_to_log($course->id, "glossary", "delete category", "editcategories.php?id=$cm->id", $hook,$cm->id); + redirect("editcategories.php?id=$cm->id"); - } else { - add_to_log($course->id, "glossary", "edit category", "editcategories.php?id=$cm->id", $hook,$cm->id); - } - } else { - echo "<p align=\"center\">" . get_string("edit"). " " . get_string("category","glossary") . "<font size=\"3\">"; + } else { + echo "<p align=\"center\">" . get_string("delete"). " " . get_string("category","glossary") . "<font size=\"3\">"; - $name = $category->name; - $usedynalink = $category->usedynalink; - require "editcategories.html"; - print_footer(); - die; - } + print_simple_box_start("center","40%", "#FFBBBB"); + echo "<center><b>$category->name</b><br>"; + + $num_entries = count_records("glossary_entries_categories","categoryid",$category->id); + if ( $num_entries ) { + print_string("deletingnoneemptycategory","glossary"); + } + echo "<p>"; + print_string("areyousuredelete","glossary"); + + ?> + <form name="form" method="post" action="editcategories.php"> - } elseif ( $action == "delete" ) { - if ( $confirm ) { - delete_records("glossary_entries_categories","categoryid", $hook); - delete_records("glossary_categories","id", $hook); + <input type="hidden" name=id value="<?php p($cm->id) ?>"> + <input type="hidden" name=action value="delete"> + <input type="hidden" name=confirm value="1"> + <input type="hidden" name=mode value="<?php echo $mode ?>"> + <input type="hidden" name=hook value="<?php echo $hook ?>"> + <table border=0 widTH=100><tr><td align=right width=50%> + <input type="submit" value=" <?php print_string("yes")?> "> + </form> + </td><td align=left width=50%> + <?php + unset($options); + $options = array ("id" => $id); + print_single_button("editcategories.php", $options, get_string("no") ); + echo "</td></tr></table>"; + echo "</center>"; + print_simple_box_end(); + } + } + } elseif ( $action == "add" ) { + if ( $confirm ) { + $dupcategory = get_record("glossary_categories","lcase(name)",strtolower($name),"glossaryid",$glossary->id); + if ( $dupcategory ) { + echo "<p align=\"center\">" . get_string("add"). " " . get_string("category","glossary") . "<font size=\"3\">"; + + print_simple_box_start("center","40%", "#FFBBBB"); + echo "<center>" . get_string("duplicatedcategory","glossary") ."</center>"; + echo "</center>"; + print_simple_box_end(); + + print_footer($course); - print_simple_box_start("center","40%", "#FFBBBB"); - echo "<center>" . get_string("categorydeleted","glossary") ."</center>"; - echo "</center>"; - print_simple_box_end(); - print_footer($course); + redirect("editcategories.php?id=$cm->id&action=add&&name=$name"); - add_to_log($course->id, "glossary", "delete category", "editcategories.php?id=$cm->id", $hook,$cm->id); + } else { + $action = ""; + $cat->name = $name; + $cat->usedynalink = $usedynalink; + $cat->glossaryid = $glossary->id; - redirect("editcategories.php?id=$cm->id"); - } else { - echo "<p align=\"center\">" . get_string("delete"). " " . get_string("category","glossary") . "<font size=\"3\">"; - - print_simple_box_start("center","40%", "#FFBBBB"); - echo "<center><b>".format_text($category->name)."</b><br>"; - - $num_entries = count_records("glossary_entries_categories","categoryid",$category->id); - if ( $num_entries ) { - print_string("deletingnoneemptycategory","glossary"); - } - echo "<p>"; - print_string("areyousuredelete","glossary"); -?> - <form name="form" method="post" action="editcategories.php"> - - <input type="hidden" name="id" value="<?php p($cm->id) ?>" /> - <input type="hidden" name="action" value="delete" /> - <input type="hidden" name="confirm" value="1" /> - <input type="hidden" name="mode" value="<?php echo $mode ?>" /> - <input type="hidden" name="hook" value="<?php echo $hook ?>" /> - <table border="0" width="100"><tr><td align="right" width="50%" /> - <input type="submit" value=" <?php print_string("yes")?> " /> - </form> - </td><td align="left" width="50%"> - -<?php - unset($options); - $options = array ("id" => $id); - print_single_button("editcategories.php", $options, get_string("no") ); - echo "</td></tr></table>"; - echo "</center>"; - print_simple_box_end(); - } - } - - } elseif ( $action == "add" ) { - if ( $confirm ) { - $lcase = db_lowercase(); - $dupcategory = get_record("glossary_categories","$lcase(name)",strtolower($name),"glossaryid",$glossary->id); - if ( $dupcategory ) { - echo "<p align=\"center\">" . get_string("add"). " " . get_string("category","glossary") . "<font size=\"3\">"; - - print_simple_box_start("center","40%", "#FFBBBB"); - echo "<center>" . get_string("duplicatedcategory","glossary") ."</center>"; - echo "</center>"; - print_simple_box_end(); - - print_footer($course); - - redirect("editcategories.php?id=$cm->id&amp;action=add&&amp;name=$name"); - - } else { - $action = ""; - $cat->name = $name; - $cat->usedynalink = $usedynalink; - $cat->glossaryid = $glossary->id; - - if ( ! $cat->id = insert_record("glossary_categories", $cat) ) { - error("Weird error. The category was not inserted."); - - redirect("editcategories.php?id=$cm->id"); - } else { - add_to_log($course->id, "glossary", "add category", "editcategories.php?id=$cm->id", $cat->id,$cm->id); - } - } - } else { - echo "<p align=\"center\">" . get_string("add"). " " . get_string("category","glossary") . "<font size=\"3\">"; - $name=""; - require "editcategories.html"; - } - } - - if ( $action ) { - print_footer(); - die; - } + if ( ! $cat->id = insert_record("glossary_categories", $cat) ) { + error("Weird error. The category was not inserted."); + + redirect("editcategories.php?id=$cm->id"); + } else { + add_to_log($course->id, "glossary", "add category", "editcategories.php?id=$cm->id", $cat->id,$cm->id); + } + } + } else { + echo "<p align=\"center\">" . get_string("add"). " " . get_string("category","glossary") . "<font size=\"3\">"; + $name=""; + require "editcategories.html"; + } + } + + if ( $action ) { + print_footer(); + die; + } ?> <div align="center"> -<form name="theform" method="post" action="editcategories.php"> -<table width="40%" class="generalbox" cellpadding="5"> +<FORM name="theform" method="post" action="editcategories.php"> +<table width="40%" class=generalbox cellpadding=5 bgcolor="<?php p($THEME->cellheading)?>"> <tr> <td width="90%" align="center"><b> <?php p(get_string("categories","glossary")) ?></b></td> <td width="10%" align="center"><b> <?php p(get_string("action")) ?></b></td> </tr> - <tr><td width="100%" colspan="2"> - - <table width="100%"> - + <tr><td width=100% colspan=2 bgcolor="<?php p($THEME->cellheading2)?>"> + + <table width=100%> <?php - $categories = get_records("glossary_categories","glossaryid",$glossary->id,"name ASC"); + $categories = get_records("glossary_categories","glossaryid",$glossary->id,"name ASC"); - if ( $categories ) { - foreach ($categories as $category) { - $num_entries = count_records("glossary_entries_categories","categoryid",$category->id); -?> - - <tr> + if ( $categories ) { + foreach ($categories as $category) { + $num_entries = count_records("glossary_entries_categories","categoryid",$category->id); + ?> + <tr bgcolor="<?php p($THEME->cellheading2)?>"> <td width="90%" align="left"> <?php - echo "<b>".format_text($category->name)."</b> <font size=-1>($num_entries " . get_string("entries","glossary") . ")</font>"; + echo "<b>$category->name</b> <font size=-1>($num_entries " . get_string("entries","glossary") . ")</font>"; ?> </td> <td width="10%" align="center"><b> <?php - echo "<a href=\"editcategories.php?id=$cm->id&amp;action=delete&amp;mode=cat&amp;hook=$category->id\"><img alt=\"" . get_string("delete") . "\"src=\"../../pix/t/delete.gif\" height=\"11\" width=\"11\" border=\"0\" /></a> "; - echo "<a href=\"editcategories.php?id=$cm->id&amp;action=edit&amp;mode=cat&amp;hook=$category->id\"><img alt=\"" . get_string("edit") . "\" src=\"../../pix/t/edit.gif\" height=\"11\" width=\"11\" border=\"0\" /></a>"; + echo "<a href=\"editcategories.php?id=$cm->id&action=delete&mode=cat&hook=$category->id\"><img alt=\"" . get_string("delete") . "\"src=\"../../pix/t/delete.gif\" height=11 width=11 border=0></a> "; + echo "<a href=\"editcategories.php?id=$cm->id&action=edit&mode=cat&hook=$category->id\"><img alt=\"" . get_string("edit") . "\" src=\"../../pix/t/edit.gif\" height=11 width=11 border=0></a>"; ?> </b></td> </tr> - + <?php } } ?> </table> - + </td> <tr> - <td width="100%" colspan="2" align="center"> + <td width=100% colspan=2 align=center bgcolor="<?php p($THEME->cellheading2)?>"> <?php - + $options['id'] = $cm->id; $options['action'] = "add"; - - echo "<table border=\"0\"><tr><td align=\"right\">"; + + echo "<table border=0><tr><td align=right>"; echo print_single_button("editcategories.php", $options, get_string("add") . " " . get_string("category","glossary"), "get"); - echo "</td><td align=\"left\">"; + echo "</td><td align=left>"; unset($options['action']); $options['mode'] = 'cat'; $options['hook'] = $hook; diff --git a/mod/glossary/export.php b/mod/glossary/export.php index 381c9dd0b89..493acdfb3e2 100644 --- a/mod/glossary/export.php +++ b/mod/glossary/export.php @@ -3,7 +3,7 @@ require_once("../../config.php"); require_once("lib.php"); global $CFG, $USER; - + require_variable($id); // Course Module ID optional_variable($l,""); @@ -11,20 +11,20 @@ if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); - } - + } + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); - } - + } + if (! $glossary = get_record("glossary", "id", $cm->instance)) { error("Course module is incorrect"); - } - - require_login($course->id, false); + } + + require_login($course->id); if (!isteacher($course->id)) { error("You must be a teacher to use this page."); - } + } $strglossaries = get_string("modulenameplural", "glossary"); $strglossary = get_string("modulename", "glossary"); @@ -34,25 +34,27 @@ $strsearchconcept = get_string("searchconcept", "glossary"); $strsearchindefinition = get_string("searchindefinition", "glossary"); $strsearch = get_string("search"); - + $navigation = ""; if ($course->category) { $navigation = "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->"; require_login($course->id); } - print_header("$course->shortname: ".format_string($glossary->name), "$course->fullname", - "$navigation <a href=\"index.php?id=$course->id\">$strglossaries</a> -> ".format_string($glossary->name), + print_header(strip_tags("$course->shortname: $glossary->name"), "$course->fullname", + "$navigation <A HREF=index.php?id=$course->id>$strglossaries</A> -> $glossary->name", "", "", true, update_module_button($cm->id, $course->id, $strglossary), navmenu($course, $cm)); - - print_heading(format_string($glossary->name)); + + echo '<p align="center"><font size="3"><b>' . stripslashes_safe($glossary->name); + echo '</b></font></p>'; /// Info box if ( $glossary->intro ) { - print_simple_box(format_text($glossary->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); - echo '<br />'; + print_simple_box_start('center','70%'); + echo format_text($glossary->intro); + print_simple_box_end(); } /// Tabbed browsing sections @@ -64,15 +66,11 @@ glossary_generate_export_file($glossary,$lastl,$lastcat); print_string("glosssaryexported","glossary"); - $ffurl = "/$course->id/glossary/" . clean_filename(strip_tags(format_string($glossary->name,true))) ."/glossary.xml"; + $ffurl = "/$course->id/glossary/" . clean_filename(strip_tags($glossary->name)) ."/glossary.xml"; if ($CFG->slasharguments) { $ffurl = "../../file.php$ffurl" ; } else { $ffurl = "../../file.php?file=$ffurl"; } - echo '<p align="center"><a href="' . $ffurl . '" target="_blank">' . get_string("exportedfile","glossary") . '</a></p>'; - - echo '</center>'; - glossary_print_tabbed_table_end(); - print_footer(); + echo '<p><center><a href="' . $ffurl . '" target=_blank>' . get_string("exportedfile","glossary") . '</a></center><p>' ?> diff --git a/mod/glossary/exportentry.php b/mod/glossary/exportentry.php index da0e6f5674d..93809a5b00a 100644 --- a/mod/glossary/exportentry.php +++ b/mod/glossary/exportentry.php @@ -1,15 +1,14 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); - require_variable($id); // course module ID - require_variable($entry); // Entry ID - optional_variable($confirm); // confirmation - - $hook = optional_param('hook'); - $mode = optional_param('mode'); + require_variable($id); // course module ID + require_variable($entry); // Entry ID + optional_variable($confirm); // confirmation + optional_variable($mode); + optional_variable($hook); - global $USER, $CFG; + global $THEME, $USER, $CFG; $PermissionGranted = 1; @@ -22,12 +21,6 @@ $PermissionGranted = 0; } } - - if ($CFG->dbtype == 'postgres7' ) { - $ucase = 'upper'; - } else { - $ucase = 'ucase'; - } if ( !isteacher($cm->course) ) { $PermissionGranted = 0; @@ -46,8 +39,8 @@ $entryalreadyexist = get_string("entryalreadyexist","glossary"); $entryexported = get_string("entryexported","glossary"); - print_header_simple(format_string($glossary->name), "", - "<a href=\"index.php?id=$course->id\">$strglossaries</a> -> ".format_string($glossary->name), + print_header_simple("$glossary->name", "", + "<A HREF=index.php?id=$course->id>$strglossaries</A> -> $glossary->name", "", "", true, "", navmenu($course, $cm)); @@ -57,13 +50,13 @@ if ( !$confirm ) { echo "<center>"; $areyousure = get_string("areyousureexport","glossary"); - notice_yesno ("<center><h2>$entry->concept</h2><p align=\"center\">$areyousure<br /><b>".format_string($mainglossary->name)."</b>?", - "exportentry.php?id=$id&amp;mode=$mode&amp;hook=$hook&amp;entry=$entry->id&amp;confirm=1", - "view.php?id=$cm->id&amp;mode=$mode&amp;hook=$hook" ); + notice_yesno ("<center><h2>$entry->concept</h2><p align=center>$areyousure<br><b>$mainglossary->name</b>?", + "exportentry.php?id=$id&mode=$mode&hook=$hook&entry=$entry->id&confirm=1", + "view.php?id=$cm->id&mode=$mode&hook=$hook" ); } else { if ( ! $mainglossary->allowduplicatedentries ) { - $dupentry = get_record("glossary_entries","glossaryid", $mainglossary->id, "$ucase(concept)",strtoupper($entry->concept)); + $dupentry = get_record("glossary_entries","glossaryid", $mainglossary->id, "UCASE(concept)",strtoupper($entry->concept)); if ( $dupentry ) { $PermissionGranted = 0; } @@ -76,23 +69,23 @@ if (! update_record("glossary_entries", $entry)) { error("Could not export the entry to the main glossary"); } else { - print_simple_box_start("center", "60%"); - echo "<p align=\"center\"><font size=\"3\">$entryexported</font></p></font>"; + print_simple_box_start("center", "60%", "$THEME->cellheading"); + echo "<p align=center><font size=3>$entryexported</font></p></font>"; - print_continue("view.php?id=$cm->id&amp;mode=entry&amp;hook=".$entry->id); + print_continue("view.php?id=$cm->id&mode=entry&hook=".$entry->id); print_simple_box_end(); print_footer(); - redirect("view.php?id=$cm->id&amp;mode=entry&amp;hook=".$entry->id); + redirect("view.php?id=$cm->id&mode=entry&hook=".$entry->id); die; } } else { print_simple_box_start("center", "60%", "#FFBBBB"); - echo "<p align=\"center\"><font size=\"3\">$entryalreadyexist</font></p></font>"; - echo "<p align=\"center\">"; + echo "<p align=center><font size=3>$entryalreadyexist</font></p></font>"; + echo "<p align=center>"; - print_continue("view.php?id=$cm->id&amp;mode=entry&amp;hook=".$entry->id); + print_continue("view.php?id=$cm->id&mode=entry&hook=".$entry->id); print_simple_box_end(); } @@ -101,7 +94,7 @@ print_simple_box_start("center", "60%", "#FFBBBB"); notice("A weird error was found while trying to export this entry. Operation cancelled."); - print_continue("view.php?id=$cm->id&amp;mode=entry&amp;hook=".$entry->id); + print_continue("view.php?id=$cm->id&mode=entry&hook=".$entry->id); print_simple_box_end(); } diff --git a/mod/glossary/filter.php b/mod/glossary/filter.php index f8354ecb4e7..3544778d4df 100644 --- a/mod/glossary/filter.php +++ b/mod/glossary/filter.php @@ -1,10 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ function glossary_filter($courseid, $text) { global $CFG; if (empty($courseid)) { - $courseid = SITEID; + if ($site = get_site()) { + $courseid = $site->id; + } } $GLOSSARY_CONCEPT_IS_ENTRY = 0; @@ -16,29 +18,17 @@ case 'mysql': $as = ''; break; - } + } - $conceptlist = array(); - - $glossarieslist = get_records_sql ("SELECT g.* - FROM {$CFG->prefix}glossary g, - {$CFG->prefix}course_modules cm, - {$CFG->prefix}modules m - WHERE m.name = 'glossary' AND - cm.module = m.id AND - cm.visible = 1 AND - g.id = cm.instance AND - g.usedynalink != 0 AND - (g.course = '$courseid' OR g.globalglossary = 1) - ORDER BY g.globalglossary, g.id"); + $glossarieslist = get_records_select("glossary", "usedynalink != 0 and (course = $courseid or globalglossary != 0)","globalglossary, id"); if ( $glossarieslist ) { $glossaries = ""; foreach ( $glossarieslist as $glossary ) { $glossaries .= "$glossary->id,"; } $glossaries=substr($glossaries,0,-1); -/// sorting by the length of the concept in order to assure that large concepts -/// are linked first, if they exist in the text to parse +/// sorting by the lenght of the concept in order to assure that large concepts +/// could be linked first, if they exist in the text to parse switch ($CFG->dbtype) { case "postgres7": case "mysql": @@ -50,12 +40,12 @@ $cbylenght = ""; break; } - + $entries = get_records_select("glossary_entries", "glossaryid IN ($glossaries) AND usedynalink != 0 and approved != 0 and concept != ''","$ebylenght glossaryid","id,glossaryid, concept,casesensitive,$GLOSSARY_CONCEPT_IS_ENTRY $as category,fullmatch"); $categories = get_records_select("glossary_categories", "glossaryid IN ($glossaries) AND usedynalink != 0", "$cbylenght glossaryid","id,glossaryid, name $as concept, 1 $as casesensitive,$GLOSSARY_CONCEPT_IS_CATEGORY $as category, 1 $as fullmatch"); if ( $entries and $categories ) { $concepts = array_merge($entries, $categories); - usort($concepts,'glossary_sort_entries_by_length'); + usort($concepts,'glossary_sort_entries_by_lenght'); } elseif ( $categories ) { $concepts = $categories; } elseif ( $entries ) { @@ -64,14 +54,14 @@ if ( isset($concepts) ) { $lastglossary = 0; - $lastcategory = 0; + $lastcategory = 0; $cm = ''; foreach ( $concepts as $concept ) { if ( $concept->category ) { if ( $lastcategory != $concept->id ) { $category = get_record("glossary_categories","id",$concept->id); $lastcategory = $concept->id; - if ( empty($cm->instance) || $cm->instance != $category->glossaryid ) { + if ( $cm->instance != $category->glossaryid ) { $gcat = get_record("glossary","id",$category->glossaryid); if ( !$cm = get_coursemodule_from_instance("glossary", $category->glossaryid, $gcat->course) ) { $cm->id = 1; @@ -80,7 +70,7 @@ } $title = strip_tags("$glossary->name: " . get_string("category","glossary"). " $category->name"); - $href_tag_begin = "<a class=\"glossary autolink\" title=\"$title\" href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&amp;mode=cat&amp;hook=$concept->id\">"; + $href_tag_begin = "<a class=\"autolink\" title=\"$title\" href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&mode=cat&hook=$concept->id\">"; } else { if ( $lastglossary != $concept->glossaryid ) { $glossary = get_record("glossary","id",$concept->glossaryid); @@ -89,11 +79,16 @@ $encodedconcept = urlencode($concept->concept); $title = str_replace('"', "'", strip_tags("$glossary->name: $concept->concept")); - $href_tag_begin = "<a target=\"entry\" class=\"glossary autolink\" title=\"$title\" href=\"$CFG->wwwroot/mod/glossary/showentry.php?courseid=$courseid&amp;concept=$encodedconcept\" ". - "onclick=\"return openpopup('/mod/glossary/showentry.php?courseid=$courseid\&amp;concept=$encodedconcept', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);\">"; + $href_tag_begin = "<a target=\"entry\" class=\"autolink\" title=\"$title\" href=\"$CFG->wwwroot/mod/glossary/showentry.php?courseid=$courseid&concept=$encodedconcept\" ". + "onClick=\"return openpopup('/mod/glossary/showentry.php?courseid=$courseid\&concept=$encodedconcept', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);\">"; } $currentconcept = $concept->concept; if ( $currentconcept = trim(strip_tags($currentconcept)) ) { + //Avoid integers < 1000 to be linked. See bug 1446. + $intcurrent = intval($currentconcept); + if (!empty($intcurrent) && strval($intcurrent) == $currentconcept && $intcurrent < 1000) { + $currentconcept = ''; + } if ( !$concept->category ) { if ( $aliases = get_records("glossary_alias","entryid",$concept->id, "alias") ) { foreach ($aliases as $alias) { @@ -102,32 +97,109 @@ $intcurrent = intval($currentalias); if (!(!empty($intcurrent) && strval($intcurrent) == $currentalias && $intcurrent < 1000)) { if ( $currentalias != '' ) { - $conceptlist[] = new filterobject($currentalias, $href_tag_begin, '</a>', $concept->casesensitive, $concept->fullmatch); + $currentconcept .= "|" . $currentalias; } } } } } if ($currentconcept) { - $conceptlist[] = new filterobject($currentconcept, $href_tag_begin, '</a>', $concept->casesensitive, $concept->fullmatch); + $text = glossary_link_concepts($text,$currentconcept,$href_tag_begin, "</a>",$concept->casesensitive,$concept->fullmatch); } } } } } - - /// Remove any duplicate entries - $conceptlist = filter_remove_duplicates($conceptlist); - - //return $text; - return filter_phrases($text, $conceptlist); + return $text; } + + function glossary_link_concepts($text,$concept,$href_tag_begin,$href_tag_end = "</a>",$casesensitive,$fullmatch) { + + $list_of_words_cp = strip_tags($concept); + + $list_of_words_cp = trim($list_of_words_cp,'|'); + + $list_of_words_cp = trim($list_of_words_cp); + + $list_of_words_cp = preg_quote($list_of_words_cp,'/'); + + //Take out scaped pipes + $list_of_words_cp = str_replace('\|','|',$list_of_words_cp); + + if ($fullmatch) { + $invalidprefixs = "([a-zA-Z0-9])"; + $invalidsufixs = "([a-zA-Z0-9])"; + + //Avoid seaching in the string if it's inside invalidprefixs and invalidsufixs + $words = array(); + $regexp = '/'.$invalidprefixs.'('.$list_of_words_cp.')|('.$list_of_words_cp.')'.$invalidsufixs.'/is'; + + preg_match_all($regexp,$text,$list_of_words); + + if ($list_of_words) { + foreach (array_unique($list_of_words[0]) as $key=>$value) { + $words['<*'.$key.'*>'] = $value; + } + if (!empty($words)) { + $text = str_replace($words,array_keys($words),$text); + } + } + } + + //Now avoid searching inside the <nolink>tag + $excludes = array(); + preg_match_all('/<nolink>(.+?)<\/nolink>/is',$text,$list_of_excludes); + foreach (array_unique($list_of_excludes[0]) as $key=>$value) { + $excludes['<+'.$key.'+>'] = $value; + } + if (!empty($excludes)) { + $text = str_replace($excludes,array_keys($excludes),$text); + } + + //Now avoid searching inside links + $links = array(); + preg_match_all('/<A[\s](.+?)>(.+?)<\/A>/is',$text,$list_of_links); + foreach (array_unique($list_of_links[0]) as $key=>$value) { + $links['<@'.$key.'@>'] = $value; + } + if (!empty($links)) { + $text = str_replace($links,array_keys($links),$text); + } + + //Now avoid searching inside every tag + $final = array(); + preg_match_all('/<(.+?)>/is',$text,$list_of_tags); + foreach (array_unique($list_of_tags[0]) as $key=>$value) { + $final['<|'.$key.'|>'] = $value; + } + if (!empty($final)) { + $text = str_replace($final,array_keys($final),$text); + } + if ($casesensitive) { + $text = preg_replace('/('.$list_of_words_cp.')/s', $href_tag_begin.'$1'.$href_tag_end, $text); + } else { + $text = preg_replace('/('.$list_of_words_cp.')/is', $href_tag_begin.'$1'.$href_tag_end, $text); + } - - - function glossary_sort_entries_by_length ( $entry0, $entry1 ) { + //Now rebuild excluded areas + if (!empty($final)) { + $text = str_replace(array_keys($final),$final,$text); + } + if (!empty($links)) { + $text = str_replace(array_keys($links),$links,$text); + } + if (!empty( $excludes)) { + $text = str_replace(array_keys($excludes),$excludes,$text); + } + if ($fullmatch and !empty($words)) { + $text = str_replace(array_keys($words),$words,$text); + } + return $text; + } + + function glossary_sort_entries_by_lenght ( $entry0, $entry1 ) { if ( strlen(trim($entry0->concept)) < strlen(trim($entry1->concept)) ) { return 1; } elseif ( strlen(trim($entry0->concept)) > strlen(trim($entry1->concept)) ) { @@ -145,5 +217,4 @@ } return $text; } - ?> diff --git a/mod/glossary/formats.php b/mod/glossary/formats.php index ef5d3444645..d7ae740f328 100644 --- a/mod/glossary/formats.php +++ b/mod/glossary/formats.php @@ -1,14 +1,13 @@ -<?php // $Id$ - /// This file allows to manage the default behaviour of the display formats - +<?PHP // $Id$ + /// This file allows to manage the default behave of the display formats + require_once("../../config.php"); require_once("lib.php"); - global $CFG; - - require_variable($id); - - $mode = optional_param('mode'); - + global $CFG, $THEME; + + require_variable($id); + optional_variable($mode); + require_login(); if ( !isadmin() ) { error("You must be an admin to use this page."); @@ -16,7 +15,7 @@ if (!$site = get_site()) { error("Site isn't defined!"); } - + if ( !$displayformat = get_record("glossary_formats","id",$id) ) { error ("Invalid Glossary Format"); } @@ -31,22 +30,22 @@ } update_record("glossary_formats",$displayformat); } - redirect("../../$CFG->admin/module.php?sesskey=$USER->sesskey&module=glossary#formats"); + redirect("../../admin/module.php?module=glossary#formats"); die; } elseif ( $mode == 'edit' and $form) { - + $displayformat->popupformatname = $form->popupformatname; $displayformat->showgroup = $form->showgroup; $displayformat->defaultmode = $form->defaultmode; $displayformat->defaulthook = $form->defaulthook; $displayformat->sortkey = $form->sortkey; $displayformat->sortorder = $form->sortorder; - + update_record("glossary_formats",$displayformat); - redirect("../../$CFG->admin/module.php?sesskey=$USER->sesskey&module=glossary#formats"); + redirect("../../admin/module.php?module=glossary#formats"); die; } - + $stradmin = get_string("administration"); $strconfiguration = get_string("configuration"); $strmanagemodules = get_string("managemodules"); @@ -54,44 +53,44 @@ $strdisplayformats = get_string("displayformats","glossary"); print_header("$strmodulename: $strconfiguration", $site->fullname, - "<a href=\"../../$CFG->admin/index.php\">$stradmin</a> -> ". - "<a href=\"../../$CFG->admin/configure.php\">$strconfiguration</a> -> ". - "<a href=\"../../$CFG->admin/modules.php\">$strmanagemodules</a> -> <a href=\"../../$CFG->admin/module.php?module=glossary&sesskey=$USER->sesskey\">$strmodulename</a> -> $strdisplayformats"); + "<a href=\"../../admin/index.php\">$stradmin</a> -> ". + "<a href=\"../../admin/configure.php\">$strconfiguration</a> -> ". + "<a href=\"../../admin/modules.php\">$strmanagemodules</a> -> <a href=\"../../admin/module.php?module=glossary\">$strmodulename</a> -> $strdisplayformats"); print_heading($strmodulename . ': ' . get_string("displayformats","glossary")); - echo '<table cellspacing="0" align="center" class="glossaryformatheader">'; - echo '<tr><td align="center">'; - echo get_string('configwarning','admin'); + echo '<table width="90%" align="center" bgcolor="#FFFFFF" class="generaltab" style="border-color: #000000; border-style: solid; border-width: 1px;">'; + echo '<tr><td align=center>'; + echo get_string("configwarning"); echo '</td></tr></table>'; $yes = get_string("yes"); $no = get_string("no"); echo '<form method="post" action="formats.php" name="form">'; - echo '<table width="90%" align="center" class="generalbox">'; + echo '<table width="90%" align="center" bgcolor="' . $THEME->cellheading . '" class="generalbox">'; ?> <tr> - <td colspan="3" align="center"><strong> - <?php echo get_string('displayformat'.$displayformat->name,'glossary'); ?> + <td colspan=3 align=center><strong> + <?php echo get_string('displayformat'.$displayformat->name,"glossary"); ?> </strong></td> </tr> - <tr valign="top"> - <td align="right" width="20%"><?php print_string('popupformat','glossary'); ?></td> + <tr valign=top> + <td align="right" width="20%"><?PHP print_string('popupformat','glossary'); ?></td> <td> - <?php + <?PHP //get and update available formats $recformats = glossary_get_available_formats(); $formats = array(); - + //Take names foreach ($recformats as $format) { $formats[$format->name] = get_string("displayformat$format->name", "glossary"); } //Sort it asort($formats); - + choose_from_menu($formats,'popupformatname',$displayformat->popupformatname); ?> </td> @@ -99,172 +98,172 @@ <?php print_string("cnfrelatedview", "glossary") ?><br /><br /> </td> </tr> - <tr valign="top"> - <td align="right" width="20%"><?php print_string('defaultmode','glossary'); ?></td> + <tr valign=top> + <td align="right" width="20%"><?PHP print_string('defaultmode','glossary'); ?></td> <td> - <select size="1" name="defaultmode"> - <?php + <SELECT size=1 name=defaultmode> + <?php $sletter = ''; $scat = ''; $sauthor = ''; $sdate = ''; switch ( strtolower($displayformat->defaultmode) ) { - case 'letter': - $sletter = ' selected="selected" '; + case 'letter': + $sletter = ' SELECTED '; + break; + + case 'cat': + $scat = ' SELECTED '; + break; + + case 'date': + $sdate = ' SELECTED '; break; - case 'cat': - $scat = ' selected="selected" '; - break; - - case 'date': - $sdate = ' selected="selected" '; - break; - - case 'author': - $sauthor = ' selected="selected" '; + case 'author': + $sauthor = ' SELECTED '; break; } ?> - <option value="letter" <?php p($sletter)?>>letter</option> - <option value="cat" <?php p($scat)?>>cat</option> - <option value="date" <?php p($sdate)?>>date</option> - <option value="author" <?php p($sauthor)?>>author</option> - </select> + <OPTION value="letter" <?PHP p($sletter)?>>letter</OPTION> + <OPTION value="cat" <?PHP p($scat)?>>cat</OPTION> + <OPTION value="date" <?PHP p($sdate)?>>date</OPTION> + <OPTION value="author" <?PHP p($sauthor)?>>author</OPTION> + </SELECT> </td> <td width="60%"> <?php print_string("cnfdefaultmode", "glossary") ?><br /><br /> </td> </tr> - <tr valign="top"> - <td align="right" width="20%"><?php print_string('defaulthook','glossary'); ?></td> + <tr valign=top> + <td align="right" width="20%"><?PHP print_string('defaulthook','glossary'); ?></td> <td> - <select size="1" name="defaulthook"> - <?php + <SELECT size=1 name=defaulthook> + <?php $sall = ''; $sspecial = ''; $sallcategories = ''; $snocategorised = ''; switch ( strtolower($displayformat->defaulthook) ) { - case 'all': - $sall = ' selected="selected" '; + case 'all': + $sall = ' SELECTED '; + break; + + case 'special': + $sspecial = ' SELECTED '; + break; + + case '0': + $sallcategories = ' SELECTED '; break; - case 'special': - $sspecial = ' selected="selected" '; - break; - - case '0': - $sallcategories = ' selected="selected" '; - break; - - case '-1': - $snocategorised = ' selected="selected" '; + case '-1': + $snocategorised = ' SELECTED '; break; } ?> - <option value="ALL" <?php p($sall)?>><?php p(get_string("allentries","glossary"))?></option> - <option value="SPECIAL" <?php p($sspecial)?>><?php p(get_string("special","glossary"))?></option> - <option value="0" <?php p($sallcategories)?>><?php p(get_string("allcategories","glossary"))?></option> - <option value="-1" <?php p($snocategorised)?>><?php p(get_string("notcategorised","glossary"))?></option> - </select> + <OPTION value="ALL" <?PHP p($sall)?>><?PHP p(get_string("allentries","glossary"))?></OPTION> + <OPTION value="SPECIAL" <?PHP p($sspecial)?>><?PHP p(get_string("special","glossary"))?></OPTION> + <OPTION value="0" <?PHP p($sallcategories)?>><?PHP p(get_string("allcategories","glossary"))?></OPTION> + <OPTION value="-1" <?PHP p($snocategorised)?>><?PHP p(get_string("notcategorised","glossary"))?></OPTION> + </SELECT> </td> <td width="60%"> <?php print_string("cnfdefaulthook", "glossary") ?><br /><br /> </td> </tr> - <tr valign="top"> - <td align="right" width="20%"><?php print_string('defaultsortkey','glossary'); ?></td> + <tr valign=top> + <td align="right" width="20%"><?PHP print_string('defaultsortkey','glossary'); ?></td> <td> - <select size="1" name="sortkey"> - <?php + <SELECT size=1 name=sortkey> + <?php $sfname = ''; $slname = ''; $supdate = ''; $screation = ''; switch ( strtolower($displayformat->sortkey) ) { - case 'firstname': - $sfname = ' selected="selected" '; + case 'firstname': + $sfname = ' SELECTED '; + break; + + case 'lastname': + $slname = ' SELECTED '; + break; + + case 'creation': + $screation = ' SELECTED '; break; - case 'lastname': - $slname = ' selected="selected" '; - break; - - case 'creation': - $screation = ' selected="selected" '; - break; - - case 'update': - $supdate = ' selected="selected" '; + case 'update': + $supdate = ' SELECTED '; break; } ?> - <option value="CREATION" <?php p($screation)?>><?php p(get_string("sortbycreation","glossary"))?></option> - <option value="UPDATE" <?php p($supdate)?>><?php p(get_string("sortbylastupdate","glossary"))?></option> - <option value="FIRSTNAME" <?php p($sfname)?>><?php p(get_string("firstname"))?></option> - <option value="LASTNAME" <?php p($slname)?>><?php p(get_string("lastname"))?></option> - </select> + <OPTION value="CREATION" <?PHP p($screation)?>><?PHP p(get_string("sortbycreation","glossary"))?></OPTION> + <OPTION value="UPDATE" <?PHP p($supdate)?>><?PHP p(get_string("sortbylastupdate","glossary"))?></OPTION> + <OPTION value="FIRSTNAME" <?PHP p($sfname)?>><?PHP p(get_string("firstname"))?></OPTION> + <OPTION value="LASTNAME" <?PHP p($slname)?>><?PHP p(get_string("lastname"))?></OPTION> + </SELECT> </td> <td width="60%"> <?php print_string("cnfsortkey", "glossary") ?><br /><br /> </td> </tr> - <tr valign="top"> - <td align="right" width="20%"><?php print_string('defaultsortorder','glossary'); ?></td> + <tr valign=top> + <td align="right" width="20%"><?PHP print_string('defaultsortorder','glossary'); ?></td> <td> - <select size="1" name="sortorder"> - <?php + <SELECT size=1 name=sortorder> + <?php $sasc = ''; $sdesc = ''; switch ( strtolower($displayformat->sortorder) ) { - case 'asc': - $sasc = ' selected="selected" '; + case 'asc': + $sasc = ' SELECTED '; break; - - case 'desc': - $sdesc = ' selected="selected" '; + + case 'desc': + $sdesc = ' SELECTED '; break; } ?> - <option value="asc" <?php p($sasc)?>><?php p(get_string("ascending","glossary"))?></option> - <option value="desc" <?php p($sdesc)?>><?php p(get_string("descending","glossary"))?></option> - </select> + <OPTION value="asc" <?PHP p($sasc)?>><?PHP p(get_string("ascending","glossary"))?></OPTION> + <OPTION value="desc" <?PHP p($sdesc)?>><?PHP p(get_string("descending","glossary"))?></OPTION> + </SELECT> </td> <td width="60%"> <?php print_string("cnfsortorder", "glossary") ?><br /><br /> </td> </tr> - <tr valign="top"> + <tr valign=top> <td align="right" width="20%"><p>Include Group Breaks:</td> <td> - <select size="1" name="showgroup"> + <SELECT size=1 name=showgroup> <?php $yselected = ""; $nselected = ""; if ($displayformat->showgroup) { - $yselected = " selected=\"selected\" "; + $yselected = " SELECTED "; } else { - $nselected = " selected=\"selected\" "; + $nselected = " SELECTED "; } ?> - <option value="1" <?php p($yselected) ?>><?php p($yes)?></option> - <option value="0" <?php p($nselected) ?>><?php p($no)?></option> - </select> + <OPTION value=1 <?php p($yselected) ?>><?php p($yes)?></OPTION> + <OPTION value=0 <?php p($nselected) ?>><?php p($no)?></OPTION> + </SELECT> </td> <td width="60%"> <?php print_string("cnfshowgroup", "glossary") ?><br /><br /> </td> </tr> <tr> - <td colspan="3" align="center"> - <input type="submit" value="<?php print_string("savechanges") ?>" /></td> + <td colspan=3 align=center> + <input type="submit" value="<?php print_string("savechanges") ?>"></td> </tr> - <input type="hidden" name="id" value="<?php p($id) ?>" /> - <input type="hidden" name="mode" value="edit" /> - <?php - - print_simple_box_end(); + <input type="hidden" name=id value="<?php p($id) ?>"> + <input type="hidden" name=mode value="edit"> + <?PHP + + print_simple_box_end(); echo '</form>'; print_footer(); diff --git a/mod/glossary/formats/TEMPLATE/TEMPLATE_format.php b/mod/glossary/formats/TEMPLATE/TEMPLATE_format.php index 1346b875b2b..e5346d836fe 100755 --- a/mod/glossary/formats/TEMPLATE/TEMPLATE_format.php +++ b/mod/glossary/formats/TEMPLATE/TEMPLATE_format.php @@ -1,35 +1,35 @@ -<?php // $Id$ +<?PHP // $Id$ -function glossary_show_entry_TEMPLATE($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL, $aliases=true) { +function glossary_show_entry_TEMPLATE($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) { - global $CFG, $USER; - + global $THEME, $CFG, $USER; - $user = get_record('user', 'id', $entry->userid); - $strby = get_string('writtenby', 'glossary'); + $colour = $THEME->cellheading2; + + $user = get_record("user", "id", $entry->userid); + $strby = get_string("writtenby", "glossary"); + + echo "<table border=\"0\" width=\"95%\" cellspacing=\"0\" cellpadding=\"3\" class=\"forumpost\" align=\"center\"r>\n"; + echo "<tr>\n"; + echo "<td width=\"100%\" valign=\"top\" bgcolor=\"#FFFFFF\">\n"; if ($entry) { - - echo '<table class="glossarypost TEMPLATE">'; - echo '<tr>'; - echo '<td class="entryheader">'; - //Use this function to show author's image //Comments: Configuration not supported print_user_picture($user->id, $course->id, $user->picture); //Line separator to show this template fine. :-) - echo '<br />'; + echo "<br />\n"; //Use this code to show author's name //Comments: Configuration not supported - echo '<span class="author">'.$strby.' '.fullname($user, isteacher($course->id)) . '<br />'; + echo "$strby " . fullname($user, isteacher($course->id)) . "<br />\n"; //Use this code to show modification date //Comments: Configuration not supported - echo get_string('lastedited').': '. userdate($entry->timemodified) . '<br /></span>'; + echo get_string("lastedited").": ". userdate($entry->timemodified) . "<br />\n"; - //Use this function to show the approval button. It'll be shown if necessary + //Use this function to show the approval button. It'll be showed if necessary //Comments: You can configure this parameters: //----Define where to show the approval button $approvalalign = 'right'; //Values: left, center and right (default right) @@ -39,11 +39,7 @@ function glossary_show_entry_TEMPLATE($course, $cm, $glossary, $entry, $mode='', glossary_print_entry_approval($cm, $entry, $mode, $approvalalign, $approvalinsidetable); //Line separator to show this template fine. :-) - echo '<br />'; - - echo '</td>'; - - echo '<td class="entryattachment">'; + echo "<br />\n"; //Use this function to show the attachment. It'll be showed if necessary //Comments: You can configure this parameters: @@ -59,11 +55,6 @@ function glossary_show_entry_TEMPLATE($course, $cm, $glossary, $entry, $mode='', //Line separator to show this template fine. :-) echo "<br />\n"; - echo '</td></tr>'; - - echo '<tr valign="top">'; - echo '<td class="entry">'; - //Use this function to print the concept //Comments: Configuration not supported glossary_print_entry_concept($entry); @@ -78,42 +69,27 @@ function glossary_show_entry_TEMPLATE($course, $cm, $glossary, $entry, $mode='', //Line separator to show this template fine. :-) echo "<br />\n"; - //Use this function to show aliases, editing icons and ratings (all know as the 'lower section') + //Use this function to show aliases, editing icons and ratings //Comments: You can configure this parameters: //----Define when to show the aliases popup - // use it only if you are really sure! - //$aliases = true; //Values: true, false (Default: true) + $aliases = true; //Values: true, false (Default: true) //----Uncoment this line to avoid ratings being showed // use it only if you are really sure! You can define this in the glossary conf. page. //$ratings = NULL; //----Uncoment this line to avoid editing icons being showed // use it only if you are really sure! //$printicons = false; - $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook, $printicons, $ratings, $aliases); - - echo '</td>'; - echo '</tr>'; - echo "</table>\n"; + $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry,$mode,$hook,$printicons,$ratings,$aliases); } else { - echo '<center>'; - print_string('noentry', 'glossary'); - echo '</center>'; + echo "<center>"; + print_string("noentry", "glossary"); + echo "</center>"; } + echo "</td>\n"; + echo "</tr>\n"; + echo "</table>\n"; return $return; } -function glossary_print_entry_TEMPLATE($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) { - - //The print view for this format is exactly the normal view, so we use it - //Anyway, you can modify this to use your own print format!! - - //Take out autolinking in definitions in print view - $entry->definition = '<span class="nolink">'.$entry->definition.'</span>'; - - //Call to view function (without icons, ratings and aliases) and return its result - return glossary_show_entry_TEMPLATE($course, $cm, $glossary, $entry, $mode, $hook, false, false, false); - -} - ?> diff --git a/mod/glossary/formats/continuous/continuous_format.php b/mod/glossary/formats/continuous/continuous_format.php index a1152bd04a5..9627176e10e 100644 --- a/mod/glossary/formats/continuous/continuous_format.php +++ b/mod/glossary/formats/continuous/continuous_format.php @@ -1,40 +1,27 @@ -<?php // $Id$ +<?PHP // $Id$ -function glossary_show_entry_continuous($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL, $aliases=false) { +function glossary_show_entry_continuous($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) { - global $USER; + global $THEME, $USER; - echo '<table class="glossarypost continuous" cellspacing="0">'; - echo '<tr valign="top">'; - echo '<td class="entry">'; + $colour = $THEME->cellheading2; + + echo "\n<table border=0 width=95% cellspacing=0 valign=top cellpadding=0 align=center>\n"; + echo "<tr>\n"; + echo "<td width=\"100%\" valign=\"top\"\n"; glossary_print_entry_approval($cm, $entry, $mode); - glossary_print_entry_attachment($entry,'html','right'); - echo '<span class="concept">'; + glossary_print_entry_attachment($entry,"html","right"); + echo "<b>"; glossary_print_entry_concept($entry); - echo ':</span> '; + echo ":</b> "; glossary_print_entry_definition($entry); - $entry->alias = ''; - echo '</td></tr>'; - - echo '<tr valign="top"><td class="entrylowersection">'; - $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook, $printicons, $ratings, $aliases); - echo '</td>'; - echo '</tr>'; + $entry->alias = ""; + $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry,$mode,$hook,$printicons,$ratings,false); + echo "</td>\n"; + echo "</tr>\n"; echo "</table>\n"; return $return; } -function glossary_print_entry_continuous($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) { - - //The print view for this format is exactly the normal view, so we use it - - //Take out autolinking in definitions un print view - $entry->definition = '<span class="nolink">'.$entry->definition.'</span>'; - - //Call to view function (without icons, ratings and aliases) and return its result - return glossary_show_entry_continuous($course, $cm, $glossary, $entry, $mode, $hook, false, false, false); - -} - ?> diff --git a/mod/glossary/formats/dictionary/dictionary_format.php b/mod/glossary/formats/dictionary/dictionary_format.php index db5634b536d..781c13ca8ee 100644 --- a/mod/glossary/formats/dictionary/dictionary_format.php +++ b/mod/glossary/formats/dictionary/dictionary_format.php @@ -1,37 +1,26 @@ -<?php // $Id$ +<?PHP // $Id$ -function glossary_show_entry_dictionary($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL, $aliases=true) { +function glossary_show_entry_dictionary($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) { - global $CFG, $USER; + global $THEME, $CFG, $USER; - echo '<table class="glossarypost dictionary" cellspacing="0">'; - echo '<tr valign="top">'; - echo '<td class="entry">'; + $colour = $THEME->cellheading2; + + echo "\n<table border=0 width=95% cellspacing=0 valign=top cellpadding=3 class=forumpost align=center>\n"; + echo "<tr>\n"; + echo "<td width=\"100%\" valign=\"top\" bgcolor=\"#FFFFFF\">\n"; glossary_print_entry_approval($cm, $entry, $mode); - glossary_print_entry_attachment($entry,'html','right'); - echo '<span class="concept">'; + glossary_print_entry_attachment($entry,"html","right"); + echo "<b>"; glossary_print_entry_concept($entry); - echo ':</span> '; + echo ":</b> "; glossary_print_entry_definition($entry); - echo '</td></tr>'; - echo '<tr valign="top"><td class="entrylowersection">'; - $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook, $printicons, $ratings, $aliases); - echo '</td>'; - echo '</tr>'; + $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry,$mode,$hook,$printicons,$ratings); + echo "</td>\n"; + echo "</tr>\n"; echo "</table>\n"; return $return; } -function glossary_print_entry_dictionary($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) { - - //The print view for this format is exactly the normal view, so we use it - - //Take out autolinking in definitions in print view - $entry->definition = '<span class="nolink">'.$entry->definition.'</span>'; - - //Call to view function (without icons, ratings and aliases) and return its result - return glossary_show_entry_dictionary($course, $cm, $glossary, $entry, $mode, $hook, false, false, false); -} - ?> diff --git a/mod/glossary/formats/encyclopedia/encyclopedia_format.php b/mod/glossary/formats/encyclopedia/encyclopedia_format.php index 7720e1bf8bc..850f385d82e 100644 --- a/mod/glossary/formats/encyclopedia/encyclopedia_format.php +++ b/mod/glossary/formats/encyclopedia/encyclopedia_format.php @@ -1,82 +1,65 @@ -<?php // $Id$ +<?PHP // $Id$ -function glossary_show_entry_encyclopedia($course, $cm, $glossary, $entry, $mode='',$hook='',$printicons=1,$ratings=NULL, $aliases=true) { - global $CFG, $USER; +function glossary_show_entry_encyclopedia($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) { + global $THEME, $CFG, $USER; + $colour = $THEME->cellheading2; - $user = get_record('user', 'id', $entry->userid); - $strby = get_string('writtenby', 'glossary'); + $user = get_record("user", "id", $entry->userid); + $strby = get_string("writtenby", "glossary"); + echo "\n<br /><table border=0 width=95% cellspacing=0 valign=top cellpadding=3 class=forumpost align=center>"; + + echo "\n<tr>"; + echo "\n<td bgcolor=\"$colour\" width=35 valign=top class=\"forumpostpicture\">"; $return = false; if ($entry) { - echo '<table class="glossarypost encyclopedia" cellspacing="0">'; - echo '<tr valign="top">'; - echo '<td class="left picture">'; - print_user_picture($user->id, $course->id, $user->picture); - echo '</td>'; - echo '<td class="entryheader">'; - echo '<span class="concept">'; + echo "</td>"; + echo "<td valign=\"top\" width=100% bgcolor=\"$THEME->cellheading\" class=\"forumpostheader\">"; + echo "<b>"; glossary_print_entry_concept($entry); - echo '</span><br />'; - echo '<span class="author">'.$strby.' '.fullname($user, isteacher($course->id)).'</span>'; - echo '&nbsp;&nbsp;<span class="time">('.get_string('lastedited').': '. - userdate($entry->timemodified).')</span>'; - echo '</td>'; - - echo '<td class="entryapproval">'; - glossary_print_entry_approval($cm, $entry, $mode); - echo '</td>'; - - echo '</tr>'; + echo "</b><br />"; + + echo "<font size=\"2\">$strby " . fullname($user, isteacher($course->id)) . "</font>"; + echo "&nbsp;&nbsp;<font size=1>(".get_string("lastedited").": ". + userdate($entry->timemodified).")</font>"; + echo "</td>"; + echo "\n<td bgcolor=\"$THEME->cellheading\" width=35 valign=top class=\"forumpostheader\">"; - echo '<tr valign="top">'; - echo '<td class="left side" rowspan="2">&nbsp;</td>'; - echo '<td colspan="2" class="entry">'; + glossary_print_entry_approval($cm, $entry, $mode); + echo "</td>"; + + echo "</tr>"; + + echo "\n<tr>"; + echo "\n<td bgcolor=\"$colour\" width=35 valign=top class=\"forumpostside\">&nbsp;</td>"; + echo "\n<td width=100% colspan=\"2\" bgcolor=\"$THEME->cellcontent\" class=\"forumpostmessage\">"; if ($entry->attachment) { $entry->course = $course->id; if (strlen($entry->definition)%2) { - $align = 'right'; + $align = "right"; } else { - $align = 'left'; + $align = "left"; } - glossary_print_entry_attachment($entry,'',$align,false); + glossary_print_entry_attachment($entry,"",$align,false); } glossary_print_entry_definition($entry); - if ($printicons or $ratings or $aliases) { - echo '</td></tr>'; - echo '<tr>'; - echo '<td colspan="2" class="entrylowersection">'; - $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry,$mode,$hook,$printicons,$ratings, $aliases); - echo ' '; - } - - echo '</td></tr>'; - echo "</table>\n"; - + $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry,$mode,$hook,$printicons,$ratings); + echo ' '; } else { - echo '<center>'; - print_string('noentry', 'glossary'); - echo '</center>'; + echo "<center>"; + print_string("noentry", "glossary"); + echo "</center>"; } + echo "</td></tr>"; + + echo "</table>\n"; return $return; } -function glossary_print_entry_encyclopedia($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) { - - //The print view for this format is exactly the normal view, so we use it - - //Take out autolinking in definitions un print view - $entry->definition = '<span class="nolink">'.$entry->definition.'</span>'; - - //Call to view function (without icons, ratings and aliases) and return its result - - return glossary_show_entry_encyclopedia($course, $cm, $glossary, $entry, $mode, $hook, false, false, false); - -} - ?> diff --git a/mod/glossary/formats/entrylist/entrylist_format.php b/mod/glossary/formats/entrylist/entrylist_format.php index fb60e656f56..729efe4a2c8 100644 --- a/mod/glossary/formats/entrylist/entrylist_format.php +++ b/mod/glossary/formats/entrylist/entrylist_format.php @@ -1,58 +1,34 @@ -<?php // $Id$ +<?PHP // $Id$ -function glossary_show_entry_entrylist($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL, $aliases=true) { - global $USER; +function glossary_show_entry_entrylist($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) { + global $THEME, $USER; + $colour = "#FFFFFF"; $return = false; - echo '<table class="glossarypost entrylist" cellspacing="0">'; + echo "\n<table border=0 cellspacing=0 width=95% valign=top cellpadding=10>"; - echo '<tr valign="top">'; - echo '<td class="entry">'; + echo "\n<tr>"; + echo "<td width=100% bgcolor=\"$colour\">"; if ($entry) { - glossary_print_entry_approval($cm, $entry, $mode); - echo "<span class=\"concept\"><a href=\"showentry.php?courseid=$course->id\&amp;eid=$entry->id\&amp;displayformat=dictionary\" target=\"_blank\" onClick=\"return openpopup('/mod/glossary/showentry.php?courseid=$course->id\&amp;eid=$entry->id\&amp;displayformat=dictionary', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);\">"; - glossary_print_entry_concept($entry); - echo '</a></span> '; + echo "<b><a href=\"showentry.php?courseid=$course->id\&eid=$entry->id\&displayformat=dictionary\" target=\"_blank\" onClick=\"return openpopup('/mod/glossary/showentry.php?courseid=$course->id\&eid=$entry->id\&displayformat=dictionary', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);\">"; + glossary_print_entry_concept($entry); + echo '</a></b> '; if ( $return = glossary_print_entry_commentslink($course, $cm, $glossary, $entry,$mode,$hook, 'html') ) { - echo "($return)"; + echo "<font size=-1>($return)</font>"; } echo '<br />'; } else { - echo '<center>'; - print_string('noentry', 'glossary'); - echo '</center>'; + echo "<center>"; + print_string("noentry", "glossary"); + echo "</center>"; } - echo '</td></tr>'; + echo "</td></tr>"; echo "</table>\n"; return $return; } -function glossary_print_entry_entrylist($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) { - - //The print view for this format is different from the normal view, so we implement it here completely - global $CFG, $USER; - - - //Take out autolinking in definitions un print view - $entry->definition = '<span class="nolink">'.$entry->definition.'</span>'; - - echo '<table class="glossarypost entrylist">'; - echo '<tr valign="top">'; - echo '<td class="entry">'; - echo '<b>'; - glossary_print_entry_concept($entry); - echo ':</b> '; - glossary_print_entry_definition($entry); - $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook, false, false, false); - echo '</td>'; - echo '</tr>'; - echo "</table>\n"; - - return $return; -} - ?> diff --git a/mod/glossary/formats/faq/faq_format.php b/mod/glossary/formats/faq/faq_format.php index b2fcccc2f81..87ac0dd6214 100644 --- a/mod/glossary/formats/faq/faq_format.php +++ b/mod/glossary/formats/faq/faq_format.php @@ -1,60 +1,48 @@ -<?php // $Id$ +<?PHP // $Id$ -function glossary_show_entry_faq($course, $cm, $glossary, $entry, $mode="", $hook="", $printicons=1, $ratings=NULL, $aliases=true) { - global $USER; +function glossary_show_entry_faq($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) { + global $THEME, $USER; $return = false; if ( $entry ) { + $colour = $THEME->cellheading2; - echo '<table class="glossarypost faq" cellspacing="0">'; + echo "\n<br /><table border=0 width=95% cellspacing=0 valign=top cellpadding=3 class=forumpost align=center>"; - echo '<tr valign="top">'; - echo '<td class="entryheader">'; + echo '<tr>'; + echo "<td valign=\"top\" width=100% bgcolor=\"$colour\">"; $entry->course = $course->id; - echo '<span class="concept">' . get_string('question','glossary') . ': '; + echo '<b>' . get_string("question","glossary") . ':</b> '; glossary_print_entry_concept($entry); - echo '</span><br />'; + echo '<br />'; - echo '<span class="author">('.get_string('lastedited').': '. - userdate($entry->timemodified).')</span>'; - echo '</td>'; - echo '<td class="entryattachment">'; + echo "<font size=1>(".get_string("lastedited").": ". + userdate($entry->timemodified).")</font>"; + echo "</td>"; + echo "\n<td bgcolor=\"$colour\" width=35 valign=top class=\"forumpostheader\">"; glossary_print_entry_approval($cm, $entry, $mode); - glossary_print_entry_attachment($entry,'html','right'); - echo '</td>'; + glossary_print_entry_attachment($entry,"html","right"); + echo "</td>"; - echo '</tr>'; + echo "</tr>"; echo "\n<tr>"; - echo '<td colspan="2" class="entry">'; - echo '<b>'.get_string('answer','glossary').':</b> '; + echo "\n<td width=100% colspan=\"2\" bgcolor=\"$THEME->cellcontent\" class=\"forumpostmessage\">"; + echo '<b>' . get_string("answer","glossary") . ':</b> '; glossary_print_entry_definition($entry); - echo '</td></tr>'; - echo '<tr valign="top"><td colspan="3" class="entrylowersection">'; - $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook, $printicons, $ratings, $aliases); + + $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook,$printicons,$ratings); echo '</td></tr></table>'; } else { echo '<center>'; - print_string('noentry', 'glossary'); + print_string("noentry", "glossary"); echo '</center>'; } return $return; } -function glossary_print_entry_faq($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) { - - //The print view for this format is exactly the normal view, so we use it - - //Take out autolinking in definitions un print view - $entry->definition = '<span class="nolink">'.$entry->definition.'</span>'; - - //Call to view function (without icons, ratings and aliases) and return its result - return glossary_show_entry_faq($course, $cm, $glossary, $entry, $mode, $hook, false, false, false); - -} - ?> diff --git a/mod/glossary/formats/fullwithauthor/fullwithauthor_format.php b/mod/glossary/formats/fullwithauthor/fullwithauthor_format.php index 79d14c88e38..225e27dfa8b 100644 --- a/mod/glossary/formats/fullwithauthor/fullwithauthor_format.php +++ b/mod/glossary/formats/fullwithauthor/fullwithauthor_format.php @@ -1,72 +1,56 @@ -<?php // $Id$ +<?PHP // $Id$ -function glossary_show_entry_fullwithauthor($course, $cm, $glossary, $entry, $mode="", $hook="", $printicons=1, $ratings=NULL, $aliases=true) { - global $CFG, $USER; +function glossary_show_entry_fullwithauthor($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) { + global $THEME, $CFG, $USER; + $colour = $THEME->cellheading2; - $user = get_record('user', 'id', $entry->userid); - $strby = get_string('writtenby', 'glossary'); + $user = get_record("user", "id", $entry->userid); + $strby = get_string("writtenby", "glossary"); + echo "\n<br /><table border=0 width=95% cellspacing=0 valign=top cellpadding=3 class=forumpost align=center>"; + + echo "\n<tr>"; + echo "\n<td bgcolor=\"$colour\" width=35 valign=top class=\"forumpostpicture\">"; $return = false; if ($entry) { - echo '<table class="glossarypost fullwithauthor" cellspacing="0">'; - echo '<tr valign="top">'; - - echo '<td class="picture">'; print_user_picture($user->id, $course->id, $user->picture); - echo '</td>'; - - echo '<td class="entryheader">'; - echo '<span class="concept">'; + echo "</td>"; + echo "<td valign=\"top\" width=100% bgcolor=\"$THEME->cellheading\" class=\"forumpostheader\">"; + + echo "<b>"; glossary_print_entry_concept($entry); - echo '</span><br />'; + echo "</b><br />"; - echo '<span class="author">'.$strby.' '.fullname($user, isteacher($course->id)); - echo '&nbsp;&nbsp;('.get_string('lastedited').': '. - userdate($entry->timemodified).')</span>'; - echo '</td>'; - echo '<td class="entryattachment">'; + echo "<font size=\"2\">$strby " . fullname($user, isteacher($course->id)) . "</font>"; + echo "&nbsp;&nbsp;<font size=1>(".get_string("lastedited").": ". + userdate($entry->timemodified).")</font>"; + echo "</td>"; + echo "\n<td bgcolor=\"$THEME->cellheading\" width=35 valign=top class=\"forumpostheader\">"; glossary_print_entry_approval($cm, $entry, $mode); - glossary_print_entry_attachment($entry,'html','right'); - echo '</td>'; + glossary_print_entry_attachment($entry,"html","right"); + echo "</td>"; - echo '</tr>'; + echo "</tr>"; - echo '<tr valign="top">'; - echo '<td class="left">&nbsp;</td>'; - echo '<td colspan="2" class="entry">'; + echo "\n<tr>"; + echo "\n<td bgcolor=\"$colour\" width=35 valign=top class=\"forumpostside\">&nbsp;</td>"; + echo "\n<td width=100% colspan=\"2\" bgcolor=\"$THEME->cellcontent\" class=\"forumpostmessage\">"; glossary_print_entry_definition($entry); - - echo '</td></tr>'; - echo '<tr valign="top">'; - echo '<td class="left">&nbsp;</td>'; - echo '<td colspan="2" class="entrylowersection">'; - - $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook, $printicons, $ratings, $aliases); + $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry,$mode,$hook,$printicons,$ratings); echo ' '; - echo '</td></tr>'; - echo "</table>\n"; } else { - echo '<center>'; - print_string('noentry', 'glossary'); - echo '</center>'; + echo "<center>"; + print_string("noentry", "glossary"); + echo "</center>"; } + echo "</td></tr>"; + + echo "</table>\n"; return $return; } -function glossary_print_entry_fullwithauthor($course, $cm, $glossary, $entry, $mode="", $hook="", $printicons=1, $ratings=NULL) { - - //The print view for this format is exactly the normal view, so we use it - - //Take out autolinking in definitions un print view - $entry->definition = '<span class="nolink">'.$entry->definition.'</span>'; - - //Call to view function (without icons, ratings and aliases) and return its result - return glossary_show_entry_fullwithauthor($course, $cm, $glossary, $entry, $mode, $hook, false, false, false); - -} - ?> diff --git a/mod/glossary/formats/fullwithoutauthor/fullwithoutauthor_format.php b/mod/glossary/formats/fullwithoutauthor/fullwithoutauthor_format.php index 4b72331c175..492e7749360 100644 --- a/mod/glossary/formats/fullwithoutauthor/fullwithoutauthor_format.php +++ b/mod/glossary/formats/fullwithoutauthor/fullwithoutauthor_format.php @@ -1,61 +1,48 @@ -<?php // $Id$ +<?PHP // $Id$ -function glossary_show_entry_fullwithoutauthor($course, $cm, $glossary, $entry, $mode="", $hook="", $printicons=1, $ratings=NULL, $aliases=true) { - global $CFG, $USER; +function glossary_show_entry_fullwithoutauthor($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) { + global $THEME, $CFG, $USER; + $colour = $THEME->cellheading2; + echo "\n<br /><table border=0 width=95% cellspacing=0 valign=top cellpadding=3 class=forumpost align=center>"; + + echo "\n<tr>"; $return = false; if ($entry) { - echo '<table class="glossarypost fullwithoutauthor" cellspacing="0">'; - echo '<tr valign="top">'; - echo '<td class="entryheader">'; + echo "<td valign=\"top\" width=100% bgcolor=\"$THEME->cellheading\" class=\"forumpostheader\">"; - echo '<span class="concept">'; + echo "<b>"; glossary_print_entry_concept($entry); - echo '</span><br />'; + echo "</b><br />"; - echo '('.get_string('lastedited').': '. - userdate($entry->timemodified).')'; - echo '</td>'; - echo '<td class="entryattachment">'; + echo "<font size=1>(".get_string("lastedited").": ". + userdate($entry->timemodified).")</font>"; + echo "</td>"; + echo "\n<td bgcolor=\"$THEME->cellheading\" width=35 valign=top class=\"forumpostheader\">"; glossary_print_entry_approval($cm, $entry, $mode); - glossary_print_entry_attachment($entry,'html','right'); - echo '</td>'; + glossary_print_entry_attachment($entry,"html","right"); + echo "</td>"; - echo '</tr>'; + echo "</tr>"; - echo '<tr valign="top">'; - echo '<td width="100%" colspan="2" class="entry">'; + echo "\n<tr>"; + echo "\n<td width=100% colspan=\"2\" bgcolor=\"$THEME->cellcontent\" class=\"forumpostmessage\">"; glossary_print_entry_definition($entry); - - echo '</td></tr>'; - echo '<tr valign="top"><td colspan="2" class="entrylowersection">'; - $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook, $printicons, $ratings, $aliases); - + $return = glossary_print_entry_lower_section($course, $cm, $glossary, $entry,$mode,$hook,$printicons,$ratings); echo ' '; - echo '</td></tr>'; - echo "</table>\n"; } else { - echo '<center>'; - print_string('noentry', 'glossary'); - echo '</center>'; + echo "<center>"; + print_string("noentry", "glossary"); + echo "</center>"; } + echo "</td></tr>"; + + echo "</table>\n"; return $return; } -function glossary_print_entry_fullwithoutauthor($course, $cm, $glossary, $entry, $mode="", $hook="", $printicons=1, $ratings=NULL) { - - //The print view for this format is exactly the normal view, so we use it - - //Take out autolinking in definitions un print view - $entry->definition = '<span class="nolink">'.$entry->definition.'</span>'; - - //Call to view function (without icons, ratings and aliases) and return its result - return glossary_show_entry_fullwithoutauthor($course, $cm, $glossary, $entry, $mode, $hook, false, false, false); - -} - ?> diff --git a/mod/glossary/import.html b/mod/glossary/import.html index 8c9204f9e3e..756d4362e26 100644 --- a/mod/glossary/import.html +++ b/mod/glossary/import.html @@ -1,45 +1,47 @@ -<form method="post" action="import.php" name="form" enctype="multipart/form-data"> +<form method="POST" action="import.php" name="form" enctype="multipart/form-data"> <table border="0" cellpadding="3" cellspacing="3" width="100%"> <tr> - <td align="right" valign="top" width="30%"><b><?php print_string("filetoimport","glossary") ?>:</b></td> + <td align=right valign=top width="30%"><p><b><?php print_string("filetoimport","glossary") ?>:</b></p></td> <td width="70%"> + <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo get_max_upload_file_size() ?>"> + <input type="file" name="file" size=40> <br /> <?php - require_once($CFG->dirroot.'/lib/uploadlib.php'); - upload_print_form_fragment(1,array('file'),null,false,null,0,0); helpbutton("filetoimport", get_string("filetoimport", "glossary"), "glossary"); - echo '&nbsp;'; print_string("maxsize", "", display_size(get_max_upload_file_size())); ?> </td> </tr> -<tr valign="top"> - <td align="right" colspan="2"> +<tr valign=top> + <td align=right colspan="2"> <table border="0" cellpadding="0" cellspacing="3" width="100%"> <tr> - <td width="25%" align="right"><?php print_string("destination","glossary") ?>:</td> + <td width="25%"> + <p align="right"><?PHP p(get_string("destination","glossary")) ?>:</td> <td width="25%"><select size="1" name="dest"> - <option selected="selected" value="current"><?php print_string("currentglossary","glossary") ?></option> - <option value="new"><?php print_string("newglossary","glossary") ?></option> - </select> <?php helpbutton("destination", get_string("destination", "glossary"), "glossary") ?></td> - <td width="25%" align="right"><?php print_string("importcategories","glossary") ?>:</td> - <td width="25%"><input type="checkbox" name="catsincl" value="1" alt="<?php print_string("importcategories","glossary") ?>" /> <?php helpbutton("importcategories", get_string("importcategories", "glossary"), "glossary") ?></td> + <option selected value="current"><?PHP p(get_string("currentglossary","glossary")) ?></option> + <option value="new"><?PHP p(get_string("newglossary","glossary")) ?></option> + </select> <?PHP helpbutton("destination", get_string("destination", "glossary"), "glossary") ?></td> + <td width="25%"> + <p align="right"><?PHP p(get_string("importcategories","glossary")) ?>:</td> + <td width="25%"><input type="checkbox" name="catsincl" value="1"> <?PHP helpbutton("importcategories", get_string("importcategories", "glossary"), "glossary") ?></td> </tr> </table> </td> </tr> <tr> - <td align="right" colspan="2"> + <td align=right colspan="2"> <table border="0" cellpadding="3" cellspacing="3" width="100%"> <tr> - <td width="50%" align="right"><input type="submit" value="<?php print_string("savechanges") ?>" /></td> - <td width="50%"><input type="reset" value="<?php print_string("revert") ?>" /></td> + <td width="50%"> + <p align="right"><input type="submit" value="<?php print_string("savechanges") ?>"></td> + <td width="50%"><input type="reset" value="<?php print_string("revert") ?>"></td> </tr> </table> </td> </tr> </table> -<input type="hidden" name="id" value="<?php p($id) ?>" /> -<input type="hidden" name="l" value="<?php p($l) ?>" /> -<input type="hidden" name="lasttab" value="<?php p($lasttab) ?>" /> -<input type="hidden" name="step" value="1" /> +<input type="hidden" name="id" value="<?PHP p($id) ?>"> +<input type="hidden" name="l" value="<?PHP p($l) ?>"> +<input type="hidden" name="lasttab" value="<?PHP p($lasttab) ?>"> +<input type="hidden" name="step" value="1"> </form> diff --git a/mod/glossary/import.php b/mod/glossary/import.php index ce4028cfc6c..94695ec3c59 100644 --- a/mod/glossary/import.php +++ b/mod/glossary/import.php @@ -7,7 +7,7 @@ require_variable($id); // Course Module ID - optional_variable($step,0); + optional_variable($step,0); optional_variable($dest,"current"); // current | new optional_variable($file); // file to import optional_variable($catsincl,0); // Import Categories too? @@ -17,20 +17,20 @@ if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); - } - + } + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); - } - + } + if (! $glossary = get_record("glossary", "id", $cm->instance)) { error("Course module is incorrect"); - } - - require_login($course->id, false); + } + + require_login($course->id); if (!isteacher($course->id)) { error("You must be a teacher to use this page."); - } + } if ($dest != 'new' and $dest != 'current') { $dest = 'current'; @@ -43,19 +43,21 @@ $strsearchconcept = get_string("searchconcept", "glossary"); $strsearchindefinition = get_string("searchindefinition", "glossary"); $strsearch = get_string("search"); - - print_header_simple(format_string($glossary->name), "", - "<a href=\"index.php?id=$course->id\">$strglossaries</a> -> ".format_string($glossary->name), + + print_header_simple(strip_tags("$glossary->name"), "", + "<A HREF=index.php?id=$course->id>$strglossaries</A> -> $glossary->name", "", "", true, update_module_button($cm->id, $course->id, $strglossary), navmenu($course, $cm)); - - print_heading(format_string($glossary->name)); + + echo '<p align="center"><font size="3"><b>' . stripslashes_safe($glossary->name); + echo '</b></font></p>'; /// Info box if ( $glossary->intro ) { - print_simple_box(format_text($glossary->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); - echo '<br />'; + print_simple_box_start('center','70%'); + echo format_text($glossary->intro); + print_simple_box_end(); } /// Tabbed browsing sections @@ -63,28 +65,16 @@ include("tabs.html"); if ( !$step ) { - include("import.html"); + include("import.html"); - echo '</center>'; glossary_print_tabbed_table_end(); print_footer($course); exit; - } + } $form = data_submitted(); $file = $_FILES["file"]; - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $um = new upload_manager('file',false,false,$course,false,0); - - if (!$um->preprocess_files()) { - echo '</center>'; - glossary_print_tabbed_table_end(); - print_continue('import.php?id='.$id); - print_footer(); - die(); - } - if ($xml = glossary_read_imported_file($file['tmp_name']) ) { $importedentries = 0; @@ -94,7 +84,7 @@ if ($dest == 'new') { // If the user chose to create a new glossary $xmlglossary = $xml['GLOSSARY']['#']['INFO'][0]['#']; - + if ( $xmlglossary['NAME'][0]['#'] ) { unset($glossary); $glossary->name = addslashes(utf8_decode($xmlglossary['NAME'][0]['#'])); @@ -147,7 +137,6 @@ // Include new glossary and return the new ID if ( !$glossary->id = glossary_add_instance($glossary) ) { notify("Error while trying to create the new glossary."); - echo '</center>'; glossary_print_tabbed_table_end(); print_footer($course); exit; @@ -198,7 +187,6 @@ } } else { notify("Error while trying to create the new glossary."); - echo '</center>'; glossary_print_tabbed_table_end(); print_footer($course); exit; @@ -221,15 +209,11 @@ $permissiongranted = 1; if ( $newentry->concept and $newentry->definition ) { if ( !$glossary->allowduplicatedentries ) { - // checking if the entry is valid (checking if it is duplicated when should not be) + // checking if the entry is valid (checking if it is duplicated when should not be) if ( $newentry->casesensitive ) { $dupentry = get_record("glossary_entries","concept",$newentry->concept,"glossaryid",$glossary->id); } else { - if ($CFG->dbtype == 'postgres7') { - $dupentry = get_record("glossary_entries","upper(concept)",strtoupper($newentry->concept),"glossaryid",$glossary->id); - }else { - $dupentry = get_record("glossary_entries","ucase(concept)",strtoupper($newentry->concept),"glossaryid",$glossary->id); - } + $dupentry = get_record("glossary_entries","ucase(concept)",strtoupper($newentry->concept),"glossaryid",$glossary->id); } if ($dupentry) { $permissiongranted = 0; @@ -247,7 +231,7 @@ $newentry->format = $xmlentry['#']['FORMAT'][0]['#']; $newentry->timecreated = time(); $newentry->timemodified = time(); - + // Setting the default values if no values were passed if ( isset($xmlentry['#']['USEDYNALINK'][0]['#']) ) { $newentry->usedynalink = $xmlentry['#']['USEDYNALINK'][0]['#']; @@ -283,7 +267,7 @@ for($k = 0; $k < sizeof($xmlcats); $k++) { $xmlcat = $xmlcats[$k]; unset($newcat); - + $newcat->name = addslashes(utf8_decode($xmlcat['#']['NAME'][0]['#'])); $newcat->usedynalink = $xmlcat['#']['USEDYNALINK'][0]['#']; if ( !$category = get_record("glossary_categories","glossaryid",$glossary->id,"name",$newcat->name) ) { @@ -332,20 +316,20 @@ } } // processed entries - echo '<table border="0" width="100%">'; + echo '<table border=0 width=100%>'; echo '<tr>'; - echo '<td width="50%" align="right">'; + echo '<td width=50% align=right>'; echo get_string("totalentries","glossary"); echo ':</td>'; - echo '<td width="50%">'; + echo '<td width=50%>'; echo $importedentries + $entriesrejected; echo '</td>'; echo '</tr>'; echo '<tr>'; - echo '<td width="50%" align="right">'; + echo '<td width=50% align=right>'; echo get_string("importedentries","glossary"); echo ':</td>'; - echo '<td width="50%">'; + echo '<td width=50%>'; echo $importedentries; if ( $entriesrejected ) { echo ' <small>(' . get_string("rejectedentries","glossary") . ": $entriesrejected)</small>"; @@ -354,22 +338,22 @@ echo '</tr>'; if ( $catsincl ) { echo '<tr>'; - echo '<td width="50%" align="right">'; + echo '<td width=50% align=right>'; echo get_string("importedcategories","glossary"); echo ':</td>'; - echo '<td width="50%">'; + echo '<td width=50%>'; echo $importedcats; echo '</td>'; echo '</tr>'; } - echo '</table><hr width="75%">'; + echo '</table><hr width=75%>'; - // rejected entries + // rejected entries if ($rejections) { - echo '<center><table border="0" width="70%">'; - echo '<tr><td align="center" colspan="2" width="100%"><strong>' . get_string("rejectionrpt","glossary") . '</strong></tr>'; + echo '<center><table border=0 width=70%>'; + echo '<tr><td align=center colspan=2 width=100%><strong>' . get_string("rejectionrpt","glossary") . '</strong></tr>'; echo $rejections; - echo '</table></center><p><hr width="75%">'; + echo '</table></center><p><hr width=75%>'; } } else { notify("Error while trying to read the file."); @@ -378,7 +362,6 @@ glossary_print_tabbed_table_end(); /// Finish the page - print_footer($course); ?> diff --git a/mod/glossary/index.php b/mod/glossary/index.php index 92d70bc64a5..f8454875cf1 100644 --- a/mod/glossary/index.php +++ b/mod/glossary/index.php @@ -1,11 +1,11 @@ -<?php // $Id$ +<?PHP // $Id$ /// This page lists all the instances of glossary in a particular course /// Replace glossary with the name of your module require_once("../../config.php"); require_once("lib.php"); - require_once("$CFG->libdir/rsslib.php"); + require_once("$CFG->dirroot/rss/rsslib.php"); require_variable($id); // course @@ -57,8 +57,7 @@ $can_subscribe = (isstudent($course->id) or isteacher($course->id) or isadmin()); - if ($show_rss = (($can_subscribe || $course->id == SITEID) && - isset($CFG->enablerssfeeds) && isset($CFG->glossary_enablerssfeeds) && + if ($show_rss = ($can_subscribe && isset($CFG->enablerssfeeds) && isset($CFG->glossary_enablerssfeeds) && $CFG->enablerssfeeds && $CFG->glossary_enablerssfeeds)) { $table->head[] = $strrss; $table->align[] = "CENTER"; @@ -69,10 +68,10 @@ foreach ($glossarys as $glossary) { if (!$glossary->visible) { //Show dimmed if the mod is hidden - $link = "<a class=\"dimmed\" href=\"view.php?id=$glossary->coursemodule\">".format_string($glossary->name,true)."</a>"; + $link = "<A class=\"dimmed\" HREF=\"view.php?id=$glossary->coursemodule\">$glossary->name</A>"; } else { //Show normal if the mod is visible - $link = "<a href=\"view.php?id=$glossary->coursemodule\">".format_string($glossary->name,true)."</a>"; + $link = "<A HREF=\"view.php?id=$glossary->coursemodule\">$glossary->name</A>"; } $printsection = ""; if ($glossary->section !== $currentsection) { @@ -92,14 +91,9 @@ $rsslink = ''; if ($glossary->rsstype and $glossary->rssarticles) { //Calculate the tolltip text - $tooltiptext = get_string("rsssubscriberss","glossary",format_string($glossary->name)); - if (empty($USER->id)) { - $userid = 0; - } else { - $userid = $USER->id; - } + $tooltiptext = get_string("rsssubscriberss","glossary",$glossary->name); //Get html code for RSS link - $rsslink = rss_get_link($course->id, $userid, "glossary", $glossary->id, $tooltiptext); + $rsslink = rss_get_link($course->id, $USER->id, "glossary", $glossary->id, $tooltiptext); } } diff --git a/mod/glossary/lib.php b/mod/glossary/lib.php index 511bb7b162a..0b5b8c5bad8 100644 --- a/mod/glossary/lib.php +++ b/mod/glossary/lib.php @@ -1,9 +1,9 @@ -<?php // $Id$ +<?PHP // $Id$ /// Library of functions and constants for module glossary /// (replace glossary with the name of your module and delete this line) -require_once($CFG->libdir.'/filelib.php'); +require_once("$CFG->dirroot/files/mimetypes.php"); define("GLOSSARY_SHOW_ALL_CATEGORIES", 0); define("GLOSSARY_SHOW_NOT_CATEGORISED", -1); @@ -18,41 +18,13 @@ define("GLOSSARY_IMPORT_VIEW", 5); define("GLOSSARY_EXPORT_VIEW", 6); define("GLOSSARY_APPROVAL_VIEW", 7); -//Check for global configure default variables - -if (!isset($CFG->glossary_studentspost)) { - set_config("glossary_studentspost", 1); // Students can post entries. -} - -if (!isset($CFG->glossary_dupentries)) { - set_config("glossary_dupentries", 0); // Duplicate entries are not allowed. -} - -if (!isset($CFG->glossary_allowcomments)) { - set_config("glossary_allowcomments", 0); // Comments are not allowed. -} - -if (!isset($CFG->glossary_linkbydefault)) { - set_config("glossary_linkbydefault", 1); // Linking entries is enabled. -} - -if (!isset($CFG->glossary_defaultapproval)) { - set_config("glossary_defaultapproval", 1); // Entries are approved. -} - -if (!isset($CFG->glossary_entbypage)) { - set_config("glossary_entbypage", 10); // 10 entries are showed. -} - -/// STANDARD FUNCTIONS /////////////////////////////////////////////////////////// - function glossary_add_instance($glossary) { /// Given an object containing all the necessary data, /// (defined by the form in mod.html) this function /// will create a new instance and return the id number /// of the new instance. - if (!isset($glossary->userating) || !$glossary->userating) { + if (!$glossary->userating) { $glossary->assessed = 0; } @@ -75,11 +47,7 @@ function glossary_add_instance($glossary) { $glossary->timecreated = time(); $glossary->timemodified = $glossary->timecreated; - //Check displayformat is a valid one - $formats = get_list_of_plugins('mod/glossary/formats','TEMPLATE'); - if (!in_array($glossary->displayformat, $formats)) { - error("This format doesn't exist!"); - } + # May have to add extra stuff in here # return insert_record("glossary", $glossary); } @@ -100,7 +68,7 @@ global $CFG; $glossary->timemodified = time(); $glossary->id = $glossary->instance; - if (!isset($glossary->userating) || !$glossary->userating) { + if (!$glossary->userating) { $glossary->assessed = 0; } @@ -114,12 +82,6 @@ global $CFG; $glossary->assesstimefinish = 0; } - //Check displayformat is a valid one - $formats = get_list_of_plugins('mod/glossary/formats','TEMPLATE'); - if (!in_array($glossary->displayformat, $formats)) { - error("This format doesn't exist!"); - } - $return = update_record("glossary", $glossary); if ($return and $glossary->defaultapproval) { execute_sql("update {$CFG->prefix}glossary_entries SET approved = 1 where approved != 1 and glossaryid = " . $glossary->id,false); @@ -147,7 +109,7 @@ function glossary_delete_instance($id) { } else { if ($categories = get_records("glossary_categories","glossaryid",$glossary->id)) { $cats = ""; - foreach ( $categories as $cat ) { + foreach ( $categories as $hook ) { $cats .= "$cat->id,"; } $cats = substr($cats,0,-1); @@ -234,13 +196,13 @@ function glossary_print_recent_activity($course, $isteacher, $timestart) { /// that has occurred in glossary activities and print it out. /// Return true if there was output, or false is there was none. - global $CFG; + global $CFG, $THEME; - if (!$logs = get_records_select('log', 'time > \''.$timestart.'\' AND '. - 'course = \''.$course->id.'\' AND '. - 'module = \'glossary\' AND '. - '(action = \'add entry\' OR '. - ' action = \'approve entry\')', 'time ASC')) { + if (!$logs = get_records_select("log", "time > '$timestart' AND ". + "course = '$course->id' AND ". + "module = 'glossary' AND ". + "(action = 'add entry' OR ". + " action = 'approve entry')", "time ASC")) { return false; } @@ -249,7 +211,7 @@ function glossary_print_recent_activity($course, $isteacher, $timestart) { foreach ($logs as $log) { //Create a temp valid module structure (course,id) $tempmod->course = $log->course; - $entry = get_record('glossary_entries','id',$log->info); + $entry = get_record("glossary_entries","id",$log->info); $tempmod->id = $entry->glossaryid; //Obtain the visible property from the instance $modvisible = instance_is_visible($log->module,$tempmod); @@ -258,27 +220,30 @@ function glossary_print_recent_activity($course, $isteacher, $timestart) { if ($modvisible and $entry->approved) { $entries[$log->info] = glossary_log_info($log); $entries[$log->info]->time = $log->time; - $entries[$log->info]->url = str_replace('&', '&amp;', $log->url); + $entries[$log->info]->url = $log->url; } } $content = false; if ($entries) { + $strftimerecent = get_string("strftimerecent"); $content = true; - print_headline(get_string('newentries', 'glossary').':'); + print_headline(get_string("newentries", "glossary").":"); foreach ($entries as $entry) { - $user = get_record('user','id',$entry->userid, '','', '','', 'firstname,lastname'); - - print_recent_activity_note($entry->timemodified, $user, $isteacher, $entry->concept, - $CFG->wwwroot.'/mod/glossary/view.php?g='.$entry->glossaryid. - '&amp;mode=entry&amp;hook='.$entry->id); + $date = userdate($entry->timemodified, $strftimerecent); + + $user = get_record("user","id",$entry->userid); + $fullname = fullname($user, $isteacher); + echo "<p><font size=1>$date - $fullname<br>"; + echo "\"<a href=\"$CFG->wwwroot/mod/glossary/view.php?g=$entry->glossaryid&mode=entry&hook=$entry->id\">"; + echo "$entry->concept"; + echo "</a>\"</font></p>"; } } return $content; } - function glossary_log_info($log) { global $CFG; @@ -379,7 +344,7 @@ function glossary_get_participants($glossaryid) { global $CFG; //Get students - $students = get_records_sql("SELECT DISTINCT u.id, u.id + $students = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}glossary_entries g WHERE g.glossaryid = '$glossaryid' and @@ -467,9 +432,9 @@ function glossary_get_available_formats() { function glossary_debug($debug,$text,$br=1) { if ( $debug ) { - echo '<font color="red">' . $text . '</font>'; + echo '<font color=red>' . $text . '</font>'; if ( $br ) { - echo '<br />'; + echo '<br>'; } } } @@ -485,43 +450,6 @@ function glossary_get_entries($glossaryid, $entrylist, $pivot = "") { WHERE glossaryid = '$glossaryid' AND id IN ($entrylist)"); } - -function glossary_get_entries_search($concept, $courseid) { - - global $CFG; - - //Check if the user is an admin - $bypassadmin = 1; //This means NO (by default) - if (isadmin()) { - $bypassadmin = 0; //This means YES - } - - //Check if the user is a teacher - $bypassteacher = 1; //This means NO (by default) - if (isteacher($courseid)) { - $bypassteacher = 0; //This means YES - } - - $conceptupper = strtoupper(trim($concept)); - - return get_records_sql("SELECT e.*, g.name as glossaryname, cm.id as cmid, cm.course as courseid - FROM {$CFG->prefix}glossary_entries e, - {$CFG->prefix}glossary g, - {$CFG->prefix}course_modules cm, - {$CFG->prefix}modules m - WHERE m.name = 'glossary' AND - cm.module = m.id AND - (cm.visible = 1 OR cm.visible = $bypassadmin OR - (cm.course = '$courseid' AND cm.visible = $bypassteacher)) AND - g.id = cm.instance AND - e.glossaryid = g.id AND - ( (e.casesensitive != 0 AND UPPER(concept) = '$conceptupper') OR - (e.casesensitive = 0 and concept = '$concept')) AND - (g.course = '$courseid' OR g.globalglossary = 1) AND - e.usedynalink != 0 AND - g.usedynalink != 0"); -} - function glossary_get_entries_sorted($glossary, $where="", $orderby="", $pivot = "") { global $CFG; if ($where) { @@ -555,45 +483,29 @@ global $CFG; (ge.glossaryid = $glossary->id or ge.sourceglossaryid = $glossary->id) $where $orderby"); } -function glossary_print_entry($course, $cm, $glossary, $entry, $mode='',$hook='',$printicons = 1, $displayformat = -1, $ratings = NULL, $printview = false) { - global $USER, $CFG; +function glossary_print_entry($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons = 1, $displayformat = -1, $ratings = NULL) { + global $THEME, $USER, $CFG; $return = false; if ( $displayformat < 0 ) { $displayformat = $glossary->displayformat; } if ($entry->approved or ($USER->id == $entry->userid) or ($mode == 'approval' and !$entry->approved) ) { $formatfile = $CFG->dirroot.'/mod/glossary/formats/'.$displayformat.'/'.$displayformat.'_format.php'; - if ($printview) { - $functionname = 'glossary_print_entry_'.$displayformat; - } else { - $functionname = 'glossary_show_entry_'.$displayformat; - } + $functionname = 'glossary_show_entry_'.$displayformat; if (file_exists($formatfile)) { include_once($formatfile); if (function_exists($functionname)) { $return = $functionname($course, $cm, $glossary, $entry,$mode,$hook,$printicons,$ratings); - } else if ($printview) { - //If the glossary_print_entry_XXXX function doesn't exist, print default (old) print format - $return = glossary_print_entry_default($entry); } } } return $return; } - //Default (old) print format used if custom function doesn't exist in format -function glossary_print_entry_default ($entry) { - echo '<b>'. strip_tags($entry->concept) . ': </b>'; - $options->para = false; - $definition = format_text('<span class="nolink">' . strip_tags($entry->definition) . '</span>', $entry->format,$options); - echo ($definition); - echo '<br /><br />'; -} - function glossary_print_entry_concept($entry) { $options->para = false; - $text = format_text('<span class="nolink">' . $entry->concept . '</span>', FORMAT_MOODLE, $options); + $text = format_text('<nolink>' . $entry->concept . '</nolink>', FORMAT_MOODLE, $options); if (!empty($entry->highlight)) { $text = highlight($entry->highlight, $text); } @@ -605,18 +517,16 @@ function glossary_print_entry_definition($entry) { $definition = $entry->definition; $tags = array(); - $urls = array(); - $addrs = array(); //Calculate all the strings to be no-linked //First, the concept - $term = preg_quote(trim($entry->concept),'/'); + $term = preg_quote(trim($entry->concept),"/"); $pat = '/('.$term.')/is'; $doNolinks[] = $pat; //Now the aliases - if ( $aliases = get_records('glossary_alias','entryid',$entry->id) ) { + if ( $aliases = get_records("glossary_alias","entryid",$entry->id) ) { foreach ($aliases as $alias) { - $term = preg_quote(trim($alias->alias),'/'); + $term = preg_quote(trim($alias->alias),"/"); $pat = '/('.$term.')/is'; $doNolinks[] = $pat; } @@ -634,46 +544,10 @@ function glossary_print_entry_definition($entry) { if ( $tags ) { $definition = str_replace($tags,array_keys($tags),$definition); } - - //Extract all URLS with protocol (http://domain.com) from definition - preg_match_all('/([[:space:]]|^|\(|\[)([[:alnum:]]+):\/\/([^[:space:]]*)([[:alnum:]#?\/&=])/is',$definition,$list_of_urls); - - //Save them into urls array to use them later - foreach (array_unique($list_of_urls[0]) as $key=>$value) { - $urls['<*'.$key.'*>'] = $value; - } - - //Take off every url from definition - if ( $urls ) { - $definition = str_replace($urls,array_keys($urls),$definition); - } - - //Extract all WEB ADDRESSES (www.domain.com) from definition - preg_match_all('/([[:space:]]|^|\(|\[)www\.([^[:space:]]*)([[:alnum:]#?\/&=])/is',$definition,$list_of_addresses); - - //Save them into addrs array to use them later - foreach (array_unique($list_of_addresses[0]) as $key=>$value) { - $addrs['<+'.$key.'+>'] = $value; - } - - //Take off every addr from definition - if ( $addrs ) { - $definition = str_replace($addrs,array_keys($addrs),$definition); - } - + //Put doNolinks (concept + aliases) enclosed by <nolink> tag - $definition= preg_replace($doNolinks,'<span class="nolink">$1</span>',$definition); - - //Restore addrs - if ( $addrs ) { - $definition = str_replace(array_keys($addrs),$addrs,$definition); - } - - //Restore urls - if ( $urls ) { - $definition = str_replace(array_keys($urls),$urls,$definition); - } - + $definition= preg_replace($doNolinks,'<nolink>$1</nolink>',$definition); + //Restore tags if ( $tags ) { $definition = str_replace(array_keys($tags),$tags,$definition); @@ -684,15 +558,12 @@ function glossary_print_entry_definition($entry) { if (!empty($entry->highlight)) { $text = highlight($entry->highlight, $text); } - if (isset($entry->footer)) { // Unparsed footer info - $text .= $entry->footer; - } echo $text; } -function glossary_print_entry_aliases($course, $cm, $glossary, $entry,$mode='',$hook='', $type = 'print') { +function glossary_print_entry_aliases($course, $cm, $glossary, $entry,$mode="",$hook="", $type = 'print') { $return = ''; - if ( $aliases = get_records('glossary_alias','entryid',$entry->id) ) { + if ( $aliases = get_records("glossary_alias","entryid",$entry->id) ) { foreach ($aliases as $alias) { if (trim($alias->alias)) { if ($return == '') { @@ -703,6 +574,7 @@ function glossary_print_entry_aliases($course, $cm, $glossary, $entry,$mode='', } if ($return != '') { $return .= '</select>'; +// $return = "<table border=0 align=$align><tr><td>$return</td></tr></table>"; } } if ($type == 'print') { @@ -712,35 +584,34 @@ function glossary_print_entry_aliases($course, $cm, $glossary, $entry,$mode='', } } -function glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode='',$hook='', $type = 'print') { - global $USER, $CFG; +function glossary_print_entry_icons($course, $cm, $glossary, $entry,$mode="",$hook="", $type = 'print') { + global $THEME, $USER, $CFG; - $output = false; //To decide if we must really return text in "return". Activate when needed only! $importedentry = ($entry->sourceglossaryid == $glossary->id); $isteacher = isteacher($course->id); $ismainglossary = $glossary->mainglossary; - - - $return = '<span class="commands">'; + + $return = "<font size=1>"; if (!$entry->approved) { - $output = true; - $return .= get_string('entryishidden','glossary'); + $return .= get_string("entryishidden","glossary"); } $return .= glossary_print_entry_commentslink($course, $cm, $glossary, $entry,$mode,$hook,'html'); + + $return .= "</font> "; + - if ( (!empty($USER->id) && $glossary->allowcomments && !isguest()) || $isteacher) { - $output = true; - $return .= '<a title="' . get_string('addcomment','glossary') . '" href="comment.php?id='.$cm->id.'&amp;eid='.$entry->id.'"><img src="comment.gif" height="11" width="11" border="0" alt="'.get_string('addcomment','glossary').'" /></a>'; + if ( $glossary->allowcomments and !isguest()) { + $return .= " <a title=\"" . get_string("addcomment","glossary") . "\" href=\"comment.php?id=$cm->id&eid=$entry->id\"><img src=\"comment.gif\" height=11 width=11 border=0></a> "; } - - if ($isteacher or (!empty($USER->id) and $glossary->studentcanpost and $entry->userid == $USER->id)) { + if ($isteacher or $glossary->studentcanpost and $entry->userid == $USER->id) { // only teachers can export entries so check it out if ($isteacher and !$ismainglossary and !$importedentry) { - $mainglossary = get_record('glossary','mainglossary',1,'course',$course->id); + $mainglossary = get_record("glossary","mainglossary",1,"course",$course->id); if ( $mainglossary ) { // if there is a main glossary defined, allow to export the current entry - $output = true; - $return .= '<a title="'.get_string('exporttomainglossary','glossary') . '" href="exportentry.php?id='.$cm->id.'&amp;entry='.$entry->id.'&amp;mode='.$mode.'&amp;hook='.$hook.'"><img src="export.gif" height="11" width="11" border="0" alt="'.get_string('exporttomainglossary','glossary').'" /></a>'; + + $return .= " <a title=\"" . get_string("exporttomainglossary","glossary") . "\" href=\"exportentry.php?id=$cm->id&entry=$entry->id&mode=$mode&hook=$hook\"><img src=\"export.gif\" height=11 width=11 border=0></a> "; + } } @@ -753,27 +624,18 @@ function glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode='',$h //Decide if an entry is editable: // -It isn't a imported entry (so nobody can edit a imported (from secondary to main) entry)) and // -The user is teacher or he is a student with time permissions (edit period or editalways defined). - $ineditperiod = ((time() - $entry->timecreated < $CFG->maxeditingtime) || $glossary->editalways); - if ( !$importedentry and ($isteacher or ($entry->userid == $USER->id and $ineditperiod))) { - $output = true; - $return .= " <a title=\"" . get_string("delete") . "\" href=\"deleteentry.php?id=$cm->id&amp;mode=delete&amp;entry=$entry->id&amp;prevmode=$mode&amp;hook=$hook\"><img src=\""; + $ineditperiod = (time() - $entry->timemodified < $CFG->maxeditingtime); + if ( !$importedentry and ($isteacher or ($entry->userid == $USER->id and ($glossary->editalways or $ineditperiod)))) { + $return .= " <a title=\"" . get_string("delete") . "\" href=\"deleteentry.php?id=$cm->id&mode=delete&entry=$entry->id&prevmode=$mode&hook=$hook\"><img src=\""; $return .= $icon; - $return .= "\" height=\"11\" width=\"11\" border=\"0\" alt=\"\" /></a> "; + $return .= "\" height=11 width=11 border=0></a> "; - $return .= " <a title=\"" . get_string("edit") . "\" href=\"edit.php?id=$cm->id&amp;e=$entry->id&amp;mode=$mode&amp;hook=$hook\"><img src=\"$CFG->pixpath/t/edit.gif\" height=\"11\" width=\"11\" border=\"0\" alt=\"\" /></a>"; + $return .= " <a title=\"" . get_string("edit") . "\" href=\"edit.php?id=$cm->id&e=$entry->id&mode=$mode&hook=$hook\"><img src=\"$CFG->pixpath/t/edit.gif\" height=11 width=11 border=0></a>"; } elseif ( $importedentry ) { - $return .= " <font size=\"-1\">" . get_string("exportedentry","glossary") . "</font>"; + $return .= " <font size=-1>" . get_string("exportedentry","glossary") . "</font>"; } } $return .= "&nbsp;&nbsp;"; // just to make up a little the output in Mozilla ;) - - $return .= '</span>'; - - //If we haven't calculated any REAL thing, delete result ($return) - if (!$output) { - $return = ''; - } - //Print or get if ($type == 'print') { echo $return; } else { @@ -784,16 +646,17 @@ function glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode='',$h function glossary_print_entry_commentslink($course, $cm, $glossary, $entry,$mode,$hook, $type = 'print') { $return = ''; - $count = count_records('glossary_comments','entryid',$entry->id); + $count = count_records("glossary_comments","entryid",$entry->id); if ($count) { - $return = ''; - $return .= "<a href=\"comments.php?id=$cm->id&amp;eid=$entry->id\">$count "; + $return = "<font size=1>"; + $return .= "<a href=\"comments.php?id=$cm->id&eid=$entry->id\">$count "; if ($count == 1) { - $return .= get_string('comment', 'glossary'); + $return .= get_string("comment", "glossary"); } else { - $return .= get_string('comments', 'glossary'); + $return .= get_string("comments", "glossary"); } - $return .= '</a>'; + $return .= "</a>"; + $return .= "</font>"; } if ($type == 'print') { @@ -806,24 +669,24 @@ function glossary_print_entry_commentslink($course, $cm, $glossary, $entry,$mode function glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook,$printicons,$ratings,$aliases=true) { if ($aliases) { - $aliases = glossary_print_entry_aliases($course, $cm, $glossary, $entry, $mode, $hook,'html'); + $aliases = glossary_print_entry_aliases($course, $cm, $glossary, $entry, $mode, $hook,"html"); } - $icons = ''; - $return = ''; + $icons = ""; + $return = ""; if ( $printicons ) { - $icons = glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode, $hook,'html'); + $icons = glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode, $hook,"html"); } - if ($aliases || $icons || $ratings) { - echo '<table>'; + if ($aliases || $printicons || $ratings) { + echo '<table border="0" width="100%" align="center">'; if ( $aliases ) { - echo '<tr valign="top"><td class="aliases">' . - get_string('aliases','glossary').': '.$aliases . '</td></tr>'; + echo '<tr><td align="center" valign="top"><font size=1>' . + get_string("aliases","glossary") . ': ' . $aliases . '</td></tr>'; } if ($icons) { - echo '<tr valign="top"><td class="icons">'.$icons.'</td></tr>'; + echo '<tr><td align=right valign=top>'. $icons . '</td></tr>'; } if ($ratings) { - echo '<tr valign="top"><td class="ratings">'; + echo '<tr><td align=right valign=top>'; $return = glossary_print_entry_ratings($course, $entry, $ratings); echo '</td></tr>'; } @@ -840,7 +703,7 @@ function glossary_print_entry_attachment($entry,$format=NULL,$align="right",$ins $glossary = get_record("glossary","id",$entry->glossaryid); $entry->course = $glossary->course; //used inside print_attachment if ($insidetable) { - echo "<table border=\"0\" width=\"100%\" align=\"$align\"><tr><td align=\"$align\" nowrap=\"nowrap\">\n"; + echo "<table border=\"0\" width=\"100%\" align=\"$align\"><tr><td align=\"$align\" nowrap>\n"; } echo glossary_print_attachments($entry,$format,$align); if ($insidetable) { @@ -852,11 +715,11 @@ function glossary_print_entry_attachment($entry,$format=NULL,$align="right",$ins function glossary_print_entry_approval($cm, $entry, $mode,$align="right",$insidetable=true) { if ( $mode == 'approval' and !$entry->approved ) { if ($insidetable) { - echo '<table class="glossaryapproval" align="'.$align.'"><tr><td align="'.$align.'">'; + echo "<table border=\"0\" width=\"100%\" align=\"$align\"><tr><td align=\"$align\">\n"; } - echo '<a title="'.get_string('approve','glossary').'" href="approve.php?id='.$cm->id.'&amp;eid='.$entry->id.'&amp;mode='.$mode.'"><img align="'.$align.'" src="check.gif" border="0" width="34" height="34" alt="" /></a>'; + echo "<a title=\"" . get_string("approve","glossary"). "\" href=\"approve.php?id=$cm->id&eid=$entry->id&mode=$mode\"><img align=\"$align\" src=\"check.gif\" border=0 width=\"34\" height=\"34\"></a>\n"; if ($insidetable) { - echo '</td></tr></table>'; + echo "</td></tr></table>\n"; } } } @@ -1061,8 +924,6 @@ function glossary_move_attachments($entry, $glossaryid) { global $CFG; - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $return = true; if ($entries = get_records_select("glossary_entries", "glossaryid = '$entry->id' AND attachment <> ''")) { @@ -1074,43 +935,50 @@ function glossary_move_attachments($entry, $glossaryid) { $newentry = $oldentry; $newentry->glossaryid = $glossaryid; $newentrydir = "$CFG->dataroot/".glossary_file_area_name($newentry); - $files = get_directory_list($oldentrydir); // get it before we rename it. if (! @rename($oldentrydir, $newentrydir)) { $return = false; } - foreach ($files as $file) { - // this is not tested as I can't find anywhere that calls this function, grepping the source. - clam_change_log($oldentrydir.'/'.$file,$newentrydir.'/'.$file); - } } } } return $return; } -function glossary_add_attachment($entry, $inputname) { +function glossary_add_attachment($entry, $newfile) { // $entry is a full entry record, including course and glossary // $newfile is a full upload array from $_FILES // If successful, this function returns the name of the file global $CFG; - if (!$glossary = get_record("glossary","id",$entry->glossaryid)) { - return false; - } - - if (!$course = get_record("course","id",$glossary->course)) { - return false; + if (empty($newfile['name'])) { + return ""; } - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $um = new upload_manager($inputname,true,false,$course,false,0,false,true); - $dir = glossary_file_area_name($entry); + $newfile_name = clean_filename($newfile['name']); - if ($um->process_file_uploads($dir)) { - return $um->get_new_filename(); + if (valid_uploaded_file($newfile)) { + if (! $newfile_name) { + notify("This file had a wierd filename and couldn't be uploaded"); + + } else if (! $dir = glossary_file_area($entry)) { + notify("Attachment could not be stored"); + $newfile_name = ""; + + } else { + if (move_uploaded_file($newfile['tmp_name'], "$dir/$newfile_name")) { + chmod("$dir/$newfile_name", $CFG->directorypermissions); + glossary_delete_old_attachments($entry, $newfile_name); + } else { + notify("An error happened while saving the file on the server"); + $newfile_name = ""; + } + } + } else { + $newfile_name = ""; } - // upload manager will take care of errors. + + return $newfile_name; } function glossary_print_attachments($entry, $return=NULL, $align="left") { @@ -1141,20 +1009,20 @@ function glossary_print_attachments($entry, $return=NULL, $align="left") { } else { $ffurl = "file.php?file=/$filearea/$file"; } - $image = "<img border=\"0\" src=\"$CFG->pixpath/f/$icon\" height=\"16\" width=\"16\" alt=\"$strpopupwindow\" />"; + $image = "<img border=0 src=\"$CFG->pixpath/f/$icon\" height=16 width=16 alt=\"$strpopupwindow\">"; if ($return == "html") { - $output .= "<a target=\"_image\" href=\"$CFG->wwwroot/$ffurl\">$image</a> "; - $output .= "<a target=\"_image\" href=\"$CFG->wwwroot/$ffurl\">$file</a><br />"; + $output .= "<a target=_image href=\"$CFG->wwwroot/$ffurl\">$image</a> "; + $output .= "<a target=_image href=\"$CFG->wwwroot/$ffurl\">$file</a><br />"; } else if ($return == "text") { $output .= "$strattachment $file:\n$CFG->wwwroot/$ffurl\n"; } else { if ($icon == "image.gif") { // Image attachments don't get printed as links - $imagereturn .= "<img src=\"$CFG->wwwroot/$ffurl\" align=\"$align\" alt=\"\" />"; + $imagereturn .= "<img src=\"$CFG->wwwroot/$ffurl\" align=$align>"; } else { link_to_popup_window("/$ffurl", "attachment", $image, 500, 500, $strattachment); - echo "<a target=\"_image\" href=\"$CFG->wwwroot/$ffurl\">$file</a>"; + echo "<a target=_image href=\"$CFG->wwwroot/$ffurl\">$file</a>"; echo "<br />"; } } @@ -1169,7 +1037,21 @@ function glossary_print_attachments($entry, $return=NULL, $align="left") { return $imagereturn; } -function glossary_print_tabbed_table_start($data, $currenttab, $tabsperrow=4) { +function glossary_print_tabbed_table_start($data, $currenttab, $tTHEME = NULL) { + +if ( !$tTHEME ) { + global $THEME; + $tTHEME = $THEME; +} + +$tablecolor = $tTHEME->TabTableBGColor; +$currenttabcolor = $tTHEME->ActiveTabColor; +$tabcolor = $tTHEME->InactiveTabColor; +$inactivefontcolor = $tTHEME->InactiveFontColor; + +$tablewidth = $tTHEME->TabTableWidth; +$tabsperrow = $tTHEME->TabsPerRow; +$tabseparation = $tTHEME->TabSeparation; $tabs = count($data); $tabwidth = (int) (100 / $tabsperrow); @@ -1178,57 +1060,137 @@ $currentrow = ( $currenttab - ( $currenttab % $tabsperrow) ) / $tabspe $numrows = (int) ( $tabs / $tabsperrow ) + 1; - -/// Following lines are to create a tab object so that -/// we can use the new tab objects and functions -$tabrows = array(); -$tabnumber = 0; -$row = array(); -$inactive = array(); -foreach ($data as $tab) { - $row[] = new tabobject($tabnumber, $tab->link, $tab->caption); - if (empty($tab->link)) { - $inactive[] = $tabnumber; - } - $tabnumber++; - if (($tabnumber % $tabsperrow) == 0) { - $tabrows[] = $row; - unset($row); - $row = array(); - } -} -//Add the last row! if it contains anything! -if (!empty($row)) { - $tabrows[] = $row; -} - - ?> - <table cellspacing="0" class="glossarydisplay"> + <center> + <table border="0" cellpadding="0" cellspacing="0" width="<?php p($tablewidth) ?>"> <tr> <td width="100%"> -<?php print_tabs($tabrows, $currenttab, $inactive); + <table border="0" cellpadding="0" cellspacing="0" width="100%"> -?> +<?php +$tabproccessed = 0; +for ($row = 0; $row < $numrows; $row++) { + echo "<tr>\n"; + if ( $row != $currentrow ) { + for ($col = 0; $col < $tabsperrow; $col++) { + if ( $tabproccessed < $tabs ) { + if ( $col == 0 ) { + echo "<td width=\"$tabseparation\" align=\"center\">&nbsp;</td>"; + } + if ($tabproccessed == $currenttab) { + $currentcolor = $currenttabcolor; + $currentstyle = 'generaltabselected'; + } else { + $currentcolor = $tabcolor; + $currentstyle = 'generaltab'; + } + echo "<td class=\"$currentstyle\" width=\"$tabwidth%\" bgcolor=\"$currentcolor\" align=\"center\"><b>"; + if ($tabproccessed != $currenttab and $data[$tabproccessed]->link) { + echo "<a href=\"" . $data[$tabproccessed]->link . "\">"; + } + + if ( !$data[$tabproccessed]->link ) { + echo "<font color=\"$inactivefontcolor\">"; + } + echo $data[$tabproccessed]->caption; + if ( !$data[$tabproccessed]->link ) { + echo "</font>"; + } + + if ($tabproccessed != $currenttab and $data[$tabproccessed]->link) { + echo "</a>"; + } + echo "</b></td>"; + + if ( $col < $tabsperrow ) { + echo "<td width=\"$tabseparation\" align=\"center\">&nbsp;</td>"; + } + } else { + $currentcolor = ""; + } + $tabproccessed++; + } + } else { + $firsttabincurrentrow = $tabproccessed; + $tabproccessed += $tabsperrow; + } + echo "</tr><tr><td colspan=" . (2* $tabsperrow) . " ></td></tr>\n"; +} + echo "<tr>\n"; + $tabproccessed = $firsttabincurrentrow; + for ($col = 0; $col < $tabsperrow; $col++) { + if ( $tabproccessed < $tabs ) { + if ( $col == 0 ) { + echo "<td width=\"$tabseparation\" align=\"center\">&nbsp;</td>"; + } + if ($tabproccessed == $currenttab) { + $currentcolor = $currenttabcolor; + $currentstyle = 'generaltabselected'; + } else { + $currentcolor = $tabcolor; + $currentstyle = 'generaltab'; + } + + if (!isset($data[$tabproccessed]->link)) { + $data[$tabproccessed]->link = NULL; + } + echo "<td class=\"$currentstyle\" width=\"$tabwidth%\" bgcolor=\"$currentcolor\" align=\"center\"><b>"; + if ($tabproccessed != $currenttab and $data[$tabproccessed]->link) { + echo "<a href=\"" . $data[$tabproccessed]->link . "\">"; + } + + if ( !$data[$tabproccessed]->link ) { + echo "<font color=\"$inactivefontcolor\">"; + } + echo $data[$tabproccessed]->caption; + if ( !$data[$tabproccessed]->link ) { + echo "</font>"; + } + + if ($tabproccessed != $currenttab and $data[$tabproccessed]->link) { + echo "</a>"; + } + echo "</b></td>"; + + if ($col < $tabsperrow) { + echo "<td width=\"$tabseparation\" align=\"center\">&nbsp;</td>"; + } + } else { + if ($numrows > 1) { + $currentcolor = $tabcolor; + } else { + $currentcolor = ""; + } + echo "<td colspan = " . (2 * ($tabsperrow - $col)) . " bgcolor=\"$currentcolor\" align=\"center\">"; + echo "</td>"; + + $col = $tabsperrow; + } + $tabproccessed++; + } + echo "</tr>\n"; + ?> + + </table> </td> </tr> <tr> - <td width="100%" class="entryboxheader"><hr /></td> + <td width="100%" bgcolor="<?php p($tablecolor) ?>"><hr></td> </tr> <tr> - <td width="100%" class="entrybox"> + <td width="100%" bgcolor="<?php p($tablecolor) ?>"> <center> <?php } function glossary_print_tabbed_table_end() { - echo "</td></tr></table></center>"; + echo "</center><p></td></tr></table></center>"; } function glossary_print_approval_menu($cm, $glossary,$mode, $hook, $sortkey = '', $sortorder = '') { if ($glossary->showalphabet) { - echo '<center>' . get_string("explainalphabet","glossary") . '</center><br />'; + echo '<center>' . get_string("explainalphabet","glossary") . '<p>'; } glossary_print_special_links($cm, $glossary, $mode, $hook); @@ -1240,21 +1202,21 @@ function glossary_print_approval_menu($cm, $glossary,$mode, $hook, $sortkey = '' } function glossary_print_addentry_menu($cm, $glossary, $mode, $hook, $sortkey='', $sortorder = '') { - echo '<center>' . get_string("explainaddentry","glossary") . '</center><br />'; + echo '<center>' . get_string("explainaddentry","glossary") . '<p>'; } function glossary_print_import_menu($cm, $glossary, $mode, $hook, $sortkey='', $sortorder = '') { - echo '<center>' . get_string("explainimport","glossary") . '</center><br />'; + echo '<center>' . get_string("explainimport","glossary") . '<p>'; } function glossary_print_export_menu($cm, $glossary, $mode, $hook, $sortkey='', $sortorder = '') { - echo '<center>' . get_string("explainexport","glossary") . '</center><br />'; + echo '<center>' . get_string("explainexport","glossary") . '<p>'; } function glossary_print_alphabet_menu($cm, $glossary, $mode, $hook, $sortkey='', $sortorder = '') { if ( $mode != 'date' ) { if ($glossary->showalphabet) { - echo '<center>' . get_string("explainalphabet","glossary") . '</center><br />'; + echo '<center>' . get_string("explainalphabet","glossary") . '<p>'; } glossary_print_special_links($cm, $glossary, $mode, $hook); @@ -1269,21 +1231,21 @@ function glossary_print_alphabet_menu($cm, $glossary, $mode, $hook, $sortkey='', function glossary_print_author_menu($cm, $glossary,$mode, $hook, $sortkey = '', $sortorder = '') { if ($glossary->showalphabet) { - echo '<center>' . get_string("explainalphabet","glossary") . '</center><br />'; + echo '<center>' . get_string("explainalphabet","glossary") . '<br />'; } glossary_print_sorting_links($cm, $mode, $sortkey,$sortorder); glossary_print_alphabet_links($cm, $glossary, $mode, $hook, $sortkey, $sortorder); glossary_print_all_links($cm, $glossary, $mode, $hook); +// echo "<br />"; } function glossary_print_categories_menu($cm, $glossary, $hook, $category) { - global $CFG; - - echo '<table border="0" width="100%">'; +global $CFG, $THEME; + echo '<table border=0 width=100%>'; echo '<tr>'; - echo '<td align="center" width="20%">'; + echo '<td align=center width=20%>'; if ( isteacher($glossary->course) ) { $options['id'] = $cm->id; $options['mode'] = 'cat'; @@ -1292,7 +1254,7 @@ function glossary_print_categories_menu($cm, $glossary, $hook, $category) { } echo '</td>'; - echo '<td align="center" width="60%">'; + echo '<td align=center width=60%>'; echo '<b>'; $menu[GLOSSARY_SHOW_ALL_CATEGORIES] = get_string("allcategories","glossary"); @@ -1308,7 +1270,7 @@ function glossary_print_categories_menu($cm, $glossary, $hook, $category) { $selected = $url; } } - $menu[$url] = clean_text($currentcategory->name); //Only clean, not filters + $menu[$url] = $currentcategory->name; } } if ( !$selected ) { @@ -1316,7 +1278,7 @@ function glossary_print_categories_menu($cm, $glossary, $hook, $category) { } if ( $category ) { - echo format_text($category->name); + echo $category->name; } else { if ( $hook == GLOSSARY_SHOW_NOT_CATEGORISED ) { @@ -1331,9 +1293,9 @@ function glossary_print_categories_menu($cm, $glossary, $hook, $category) { } } echo '</b></td>'; - echo '<td align="center" width="20%">'; + echo '<td align=center width=20%>'; - echo popup_form("$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&amp;mode=cat&amp;hook=", $menu, "catmenu", $selected, "", + echo popup_form("$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&mode=cat&hook=", $menu, "catmenu", $selected, "", "", "", false); echo '</td>'; @@ -1350,7 +1312,7 @@ global $CFG; echo "<b>$strallentries</b>"; } else { $strexplainall = strip_tags(get_string("explainall","glossary")); - echo "<a title=\"$strexplainall\" href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&amp;mode=$mode&amp;hook=ALL\">$strallentries</a>"; + echo "<a title=\"$strexplainall\" href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&mode=$mode&hook=ALL\">$strallentries</a>"; } } } @@ -1363,7 +1325,7 @@ global $CFG; echo "<b>$strspecial</b> | "; } else { $strexplainspecial = strip_tags(get_string("explainspecial","glossary")); - echo "<a title=\"$strexplainspecial\" href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&amp;mode=$mode&amp;hook=SPECIAL\">$strspecial</a> | "; + echo "<a title=\"$strexplainspecial\" href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&mode=$mode&hook=SPECIAL\">$strspecial</a> | "; } } } @@ -1377,12 +1339,12 @@ global $CFG; if ( $hook == $alphabet[$i] and $hook) { echo "<b>$alphabet[$i]</b>"; } else { - echo "<a href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&amp;mode=$mode&amp;hook=$alphabet[$i]&amp;sortkey=$sortkey&amp;sortorder=$sortorder\">$alphabet[$i]</a>"; + echo "<a href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&mode=$mode&hook=$alphabet[$i]&sortkey=$sortkey&sortorder=$sortorder\">$alphabet[$i]</a>"; } if ((int) ($i % $letters_by_line) != 0 or $i == 0) { echo ' | '; } else { - echo '<br />'; + echo '<br>'; } } } @@ -1399,13 +1361,13 @@ global $CFG; $neworder = ''; if ( $sortorder ) { if ( $sortorder == 'asc' ) { - $neworder = '&amp;sortorder=desc'; + $neworder = '&sortorder=desc'; $newordertitle = $desc; } else { - $neworder = '&amp;sortorder=asc'; + $neworder = '&sortorder=asc'; $newordertitle = $asc; } - $icon = " <img src=\"$sortorder.gif\" border=\"0\" width=\"16\" height=\"16\" alt=\"\" />"; + $icon = " <img src=\"$sortorder.gif\" border=0 width=16 height=16>"; } else { if ( $sortkey != 'CREATION' and $sortkey != 'UPDATE' and $sortkey != 'FIRSTNAME' and $sortkey != 'LASTNAME' ) { @@ -1413,8 +1375,8 @@ global $CFG; $newordertitle = $asc; } else { $newordertitle = $desc; - $neworder = '&amp;sortorder=desc'; - $icon = ' <img src="asc.gif" border="0" width="16" height="16" alt="" />'; + $neworder = '&sortorder=desc'; + $icon = ' <img src="asc.gif" border=0 width=16 height=16>'; } } $ficon = ''; @@ -1467,8 +1429,8 @@ global $CFG; $sort = get_string("sortby", "glossary"); } - echo "<br />$sort: $sbtag<a title=\"$ssort $sordertitle\" href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&amp;sortkey=$sorder$sneworder&amp;mode=$mode\">$ssort$sicon</a>$sendbtag | ". - "$fbtag<a title=\"$fsort $fordertitle\" href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&amp;sortkey=$forder$fneworder&amp;mode=$mode\">$fsort$ficon</a>$fendbtag<br />"; + echo "<br>$sort: $sbtag<a title=\"$ssort $sordertitle\" href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&sortkey=$sorder$sneworder&mode=$mode\">$ssort$sicon</a>$sendbtag | ". + "$fbtag<a title=\"$fsort $fordertitle\" href=\"$CFG->wwwroot/mod/glossary/view.php?id=$cm->id&sortkey=$forder$fneworder&mode=$mode\">$fsort$ficon</a>$fendbtag<br />"; } function glossary_sort_entries ( $entry0, $entry1 ) { @@ -1482,43 +1444,44 @@ function glossary_sort_entries ( $entry0, $entry1 ) { } function glossary_print_comment($course, $cm, $glossary, $entry, $comment) { - global $CFG, $USER; + global $THEME, $CFG, $USER; - $user = get_record('user', 'id', $comment->userid); - $strby = get_string('writtenby','glossary'); + $colour = $THEME->cellheading2; + + $user = get_record("user", "id", $comment->userid); + $strby = get_string("writtenby","glossary"); $fullname = fullname($user, isteacher($course->id)); - echo '<center>'; - echo '<table class="glossarycomment" cellspacing="0">'; - echo '<tr valign="top">'; - echo '<tr><td class="left picture">'; + echo '<table align="center" border="0" width="70%" cellpadding="3" cellspacing="0" class="forumpost">'; + echo "<tr>"; + echo "<tr><td bgcolor=\"$THEME->cellcontent2\" class=\"forumpostpicture\" width=\"35\" valign=\"top\">"; print_user_picture($user->id, $course->id, $user->picture); - echo '</td>'; - echo '<td class="entryheader">'; - echo "<span class=\"author\"><a href=\"$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id\">$fullname</a></span><br />"; - echo '<span class="time">'.get_string('lastedited').': '.userdate($comment->timemodified).'</span>'; - echo '</td></tr>'; + echo "</td>"; + echo "<td bgcolor=\"$THEME->cellheading\" class=\"forumpostheader\" width=\"100%\">"; + echo "<p>"; + echo "<font size=2><a href=\"$CFG->wwwroot/user/view.php?id=$user->id&course=$course->id\">$fullname</a></font><br />"; + echo "<font size=1>".get_string("lastedited").": ".userdate($comment->timemodified)."</font>"; + echo "</p></td></tr>"; - echo '<tr valign="top"><td class="left side">'; - echo '&nbsp;'; - echo '</td><td class="entry">'; + echo "<tr><td bgcolor=\"$THEME->cellcontent2\" class=\"forumpostside\" width=\"10\">"; + echo "&nbsp;"; + echo "</td><td bgcolor=\"$THEME->cellcontent\" class=\"forumpostmessage\">\n"; echo format_text($comment->comment, $comment->format); - echo '<div class="icons commands">'; - - $ineditperiod = ((time() - $comment->timemodified < $CFG->maxeditingtime) || $glossary->editalways); - if ( ($glossary->allowcomments && $ineditperiod && $USER->id == $comment->userid) || isteacher($course->id) ) { - echo "<a href=\"comment.php?id=$cm->id&amp;eid=$entry->id&amp;cid=$comment->id&amp;action=edit\"><img - alt=\"" . get_string("edit") . "\" src=\"$CFG->pixpath/t/edit.gif\" height=\"11\" width=\"11\" border=\"0\" /></a> "; + echo "<div align=right><p align=right>"; + if ( (time() - $comment->timemodified < $CFG->maxeditingtime and $USER->id == $comment->userid) or isteacher($course->id) ) { + echo "<a href=\"comment.php?id=$cm->id&eid=$entry->id&cid=$comment->id&action=edit\"><img + alt=\"" . get_string("edit") . "\" src=\"$CFG->pixpath/t/edit.gif\" height=11 width=11 border=0></a> "; } - if ( ($glossary->allowcomments && $USER->id == $comment->userid) || isteacher($course->id) ) { - echo "<a href=\"comment.php?id=$cm->id&amp;eid=$entry->id&amp;cid=$comment->id&amp;action=delete\"><img - alt=\"" . get_string("delete") . "\" src=\"$CFG->pixpath/t/delete.gif\" height=\"11\" width=\"11\" border=\"0\" /></a>"; + if ( $USER->id == $comment->userid or isteacher($course->id) ) { + echo "<a href=\"comment.php?id=$cm->id&eid=$entry->id&cid=$comment->id&action=delete\"><img + alt=\"" . get_string("delete") . "\" src=\"$CFG->pixpath/t/delete.gif\" height=11 width=11 border=0></a>"; } - - echo '</div></td></tr>'; - echo '</table></center>'; + + echo "</p>"; + echo "</div>"; + echo "</td></tr>\n</table>\n\n"; } @@ -1553,21 +1516,22 @@ function glossary_print_entry_ratings($course, $entry, $ratings = NULL) { } function glossary_print_dynaentry($courseid, $entries, $displayformat = -1) { - global $USER,$CFG; + global $THEME, $USER,$CFG; - echo '<center>'; - echo '<table class="glossarypopup" cellspacing="0"><tr>'; - echo '<td>'; + $colour = $THEME->cellheading2; + + echo "\n<center><table width=95% border=0><tr>"; + echo "<td width=100%\">"; if ( $entries ) { foreach ( $entries as $entry ) { - if (! $glossary = get_record('glossary', 'id', $entry->glossaryid)) { - error('Glossary ID was incorrect or no longer exists'); + if (! $glossary = get_record("glossary", "id", $entry->glossaryid)) { + error("Glossary ID was incorrect or no longer exists"); } - if (! $course = get_record('course', 'id', $glossary->course)) { - error('Glossary is misconfigured - don\'t know what course it\'s from'); + if (! $course = get_record("course", "id", $glossary->course)) { + error("Glossary is misconfigured - don't know what course it's from"); } - if (!$cm = get_coursemodule_from_instance('glossary', $entry->glossaryid, $glossary->course) ) { - error('Glossary is misconfigured - don\'t know what course module it is'); + if (!$cm = get_coursemodule_from_instance("glossary", $entry->glossaryid, $glossary->course) ) { + error("Glossary is misconfigured - don't know what course module it is "); } //If displayformat is present, override glossary->displayformat @@ -1597,8 +1561,8 @@ function glossary_print_dynaentry($courseid, $entries, $displayformat = -1) { } } } - echo '</td>'; - echo '</tr></table></center>'; + echo "</td>"; + echo "</tr></table></center>"; } function glossary_generate_export_file($glossary, $hook = "", $hook = 0) { @@ -1705,7 +1669,7 @@ function glossary_open_xml($glossary) { //Open for writing - $glossaryname = clean_filename(strip_tags(format_string($glossary->name,true))); + $glossaryname = clean_filename(strip_tags($glossary->name)); $pathname = make_upload_directory("$glossary->course/glossary/$glossaryname"); $filename = "$pathname/glossary.xml"; @@ -1737,7 +1701,7 @@ require_once "../../lib/xmlize.php"; } fclose($h); } - return xmlize($line, 0); + return xmlize($line); } //Close the file function glossary_close_xml($h) { @@ -1790,7 +1754,7 @@ function glossary_check_moddata_dir($glossary) { if ( $status ) { $status = glossary_check_dir_exists($CFG->dataroot."/$glossary->course/glossary",true); if ( $status ) { - $status = glossary_check_dir_exists($CFG->dataroot."/$glossary->course/glossary/". clean_filename(strip_tags(format_string($glossary->name,true))),true); + $status = glossary_check_dir_exists($CFG->dataroot."/$glossary->course/glossary/". clean_filename($glossary->name),true); } } return $status; @@ -1882,8 +1846,9 @@ function glossary_print_ratings_mean($entryid, $scale) { $strratings = get_string("ratings", "glossary"); } - echo "$strratings: "; + echo "<font size=-1>$strratings: "; link_to_popup_window ("/mod/glossary/report.php?id=$entryid", "ratings", $mean, 400, 600); + echo "</font>"; } } @@ -1971,152 +1936,14 @@ function glossary_print_rating_menu($entryid, $userid, $scale) { static $strrate; if (!$rating = get_record("glossary_ratings", "userid", $userid, "entryid", $entryid)) { - $rating->rating = -999; + $rating->rating = 0; } if (empty($strrate)) { $strrate = get_string("rate", "glossary"); } - choose_from_menu($scale, $entryid, $rating->rating, "$strrate...",'',-999); -} - - -function glossary_get_paging_bar($totalcount, $page, $perpage, $baseurl, $maxpageallowed=99999, $maxdisplay=20, $separator="&nbsp;", $specialtext="", $specialvalue=-1, $previousandnext = true) { -// Returns the html code to represent any pagging bar. Paramenters are: -// -// Mandatory: -// $totalcount: total number of records to be displayed -// $page: page currently selected (0 based) -// $perpage: number of records per page -// $baseurl: url to link in each page, the string 'page=XX' will be added automatically. -// Optional: -// $maxpageallowed: maximum number of page allowed. -// $maxdisplay: maximum number of page links to show in the bar -// $separator: string to be used between pages in the bar -// $specialtext: string to be showed as an special link -// $specialvalue: value (page) to be used in the special link -// $previousandnext: to decide if we want the previous and next links -// -// The function dinamically show the first and last pages, and "scroll" over pages. -// Fully compatible with Moodle's print_paging_bar() function. Perhaps some day this -// could replace the general one. ;-) - - $code = ''; - - $showspecial = false; - $specialselected = false; - - //Check if we have to show the special link - if (!empty($specialtext)) { - $showspecial = true; - } - //Check if we are with the special link selected - if ($showspecial && $page == $specialvalue) { - $specialselected = true; - } - - //If there are results (more than 1 page) - if ($totalcount > $perpage) { - $code .= "<center>"; - $code .= "<p>".get_string("page").":"; - - $maxpage = (int)(($totalcount-1)/$perpage); - - //Lower and upper limit of page - if ($page < 0) { - $page = 0; - } - if ($page > $maxpageallowed) { - $page = $maxpageallowed; - } - if ($page > $maxpage) { - $page = $maxpage; - } - - //Calculate the window of pages - $pagefrom = $page - ((int)($maxdisplay / 2)); - if ($pagefrom < 0) { - $pagefrom = 0; - } - $pageto = $pagefrom + $maxdisplay - 1; - if ($pageto > $maxpageallowed) { - $pageto = $maxpageallowed; - } - if ($pageto > $maxpage) { - $pageto = $maxpage; - } - - //Some movements can be necessary if don't see enought pages - if ($pageto - $pagefrom < $maxdisplay - 1) { - if ($pageto - $maxdisplay + 1 > 0) { - $pagefrom = $pageto - $maxdisplay + 1; - } - } - - //Calculate first and last if necessary - $firstpagecode = ''; - $lastpagecode = ''; - if ($pagefrom > 0) { - $firstpagecode = "$separator<a href=\"{$baseurl}page=0\">1</a>"; - if ($pagefrom > 1) { - $firstpagecode .= "$separator..."; - } - } - if ($pageto < $maxpage) { - if ($pageto < $maxpage -1) { - $lastpagecode = "$separator..."; - } - $lastpagecode .= "$separator<a href=\"{$baseurl}page=$maxpage\">".($maxpage+1)."</a>"; - } - - //Previous - if ($page > 0 && $previousandnext) { - $pagenum = $page - 1; - $code .= "&nbsp;(<a href=\"{$baseurl}page=$pagenum\">".get_string("previous")."</a>)&nbsp;"; - } - - //Add first - $code .= $firstpagecode; - - $pagenum = $pagefrom; - - //List of maxdisplay pages - while ($pagenum <= $pageto) { - $pagetoshow = $pagenum +1; - if ($pagenum == $page && !$specialselected) { - $code .= "$separator$pagetoshow"; - } else { - $code .= "$separator<a href=\"{$baseurl}page=$pagenum\">$pagetoshow</a>"; - } - $pagenum++; - } - - //Add last - $code .= $lastpagecode; - - //Next - if ($page < $maxpage && $page < $maxpageallowed && $previousandnext) { - $pagenum = $page + 1; - $code .= "$separator(<a href=\"{$baseurl}page=$pagenum\">".get_string("next")."</a>)"; - } - - //Add special - if ($showspecial) { - $code .= '<br />'; - if ($specialselected) { - $code .= $specialtext; - } else { - $code .= "$separator<a href=\"{$baseurl}page=$specialvalue\">$specialtext</a>"; - } - } - - //End html - $code .= "</p>"; - $code .= "</center>"; - } - - return $code; + choose_from_menu($scale, $entryid, $rating->rating, "$strrate..."); } ?> diff --git a/mod/glossary/mod.html b/mod/glossary/mod.html index 2512bf7d117..99f086ffbac 100644 --- a/mod/glossary/mod.html +++ b/mod/glossary/mod.html @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ include_once($CFG->dirroot.'/mod/glossary/lib.php'); @@ -11,9 +11,6 @@ if (!isset($form->allowduplicatedentries)) { if (!isset($form->allowcomments)) { $form->allowcomments = $CFG->glossary_allowcomments; } -if (!isset($form->allowprintview)) { - $form->allowprintview = 1; -} if (!isset($form->usedynalink)) { $form->usedynalink = $CFG->glossary_linkbydefault; } @@ -56,30 +53,19 @@ if (!isset($form->rsstype)) { if (!isset($form->rssarticles)) { $form->rssarticles = 0; } -if (!isset($form->assessed)) { - $form->assessed = 0; -} -if (!isset($form->scale)) { - $form->scale = 0; -} -if (!isset($form->assesstimestart)) { - $form->assesstimestart = 0; -} -if (!isset($form->assesstimefinish)) { - $form->assesstimefinish = 0; -} ?> -<form name="form" method="post" action="mod.php"> -<center> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("name") ?>:</b></td> - <td align="left"> - <input type="text" name="name" size="30" value="<?php p($form->name) ?>" /> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("description") ?>:</b><br /> +<FORM name="form" method="post" action="<?php p($ME) ?>"> +<CENTER> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string("name") ?>:</B></P></TD> + <TD> + <INPUT type="text" name="name" size=30 value="<?php p($form->name) ?>"> + </TD> +</TR> +<tr valign=top> + <td align=right><p><b><?php print_string("description") ?>:</b></p> + <font size="1"> <?php helpbutton("description", get_string("description"), "glossary", true, true); echo "<br />"; @@ -87,188 +73,173 @@ if (!isset($form->assesstimefinish)) { echo "<br />"; helpbutton("text", get_string("helptext"), "moodle", true, true); ?> + <br /> + </font> </td> - <td align="left"> + <td> <?php print_textarea($usehtmleditor, 20, 50, 680, 400, "intro", $form->intro); ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("entbypage", "glossary") ?>:</b></td> - <td align="left"> - <input name="entbypage" type="text" size="2" value="<?php p($form->entbypage) ?>" /> <?php helpbutton("entbypage", get_string("entbypage", "glossary"), "glossary") ?> - </td> -</tr> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("entbypage", "glossary") ?>:</B></P></TD> + <TD> + <input name=entbypage type=text size=2 value="<?php p($form->entbypage) ?>"> <?php helpbutton("entbypage", get_string("entbypage", "glossary"), "glossary") ?> + </TD> +</TR> <!-- More rows go in here... --> <?php if (isadmin() ) { ?> -<tr valign="top"> - <td align="right"><b><?php echo get_string("isglobal", "glossary") ?>:</b></td> - <td align="left"> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("isglobal", "glossary") ?>:</B></P></TD> + <TD> <?php - $selected = ''; - if ($form->globalglossary) { - $selected = 'checked="checked"'; + $selected = ""; + if ( isset($form->globalglossary) ) { + if ($form->globalglossary) { + $selected = "checked"; + } } ?> -<input type="checkbox" name="globalglossary" value="1" <?php p($selected)?> /> <?php helpbutton("globalglossary", get_string("globalglossary", "glossary"), "glossary") ?> - </td> -</tr> + <input type="checkbox" name="globalglossary" value=1 <?PHP p($selected)?>> <?php helpbutton("globalglossary", get_string("globalglossary", "glossary"), "glossary") ?> + </TD> +</TR> <?php } else { - echo '<input type="hidden" name="globalglossary" value="' . $form->globalglossary . '" />'; + echo '<INPUT type="hidden" name=globalglossary value="' . $form->globalglossary . '">'; } ?> <?php $mainglossary = get_record("glossary","mainglossary",1,"course",$form->course); if (!$mainglossary or $mainglossary->id == $form->instance ) { ?> -<tr valign="top"> - <td align="right"><b><?php echo get_string("glossarytype", "glossary") ?>:</b></td> - <td align="left"> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("glossarytype", "glossary") ?>:</B></P></TD> + <TD> <select size="1" name="mainglossary"> <option value="1" <?php if ( $form->mainglossary ) { - echo "selected=\"selected\""; + echo "selected"; } ?>> <?php echo get_string("mainglossary", "glossary") ?></option> <option value="0" <?php if ( !$form->mainglossary ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("secondaryglossary", "glossary") ?> </option> </select> <?php helpbutton("mainglossary", get_string("mainglossary", "glossary"), "glossary") ?> - </td> -</tr> + </TD> +</TR> <?php } else { - echo "<input type=\"hidden\" name=\"mainglossary\" value=\"0\" />"; + echo "<INPUT type=\"hidden\" name=mainglossary value=\"0\">"; } ?> -<tr valign="top"> - <td align="right"><b><?php p(get_string("studentcanpost", "glossary")) ?>:</b><br /> - <font size="1"><?php p(get_string("warningstudentcapost","glossary")) ?></font></td> - <td align="left"> +<TR valign=top> + <TD align=right><P><B><?php p(get_string("studentcanpost", "glossary")) ?>:</B><br> + <font size=1><?php p(get_string("warningstudentcapost","glossary")) ?></font></P></TD> + <TD> <select size="1" name="studentcanpost"> <option value="1" <?php if ( $form->studentcanpost ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("yes") ?></option> <option value="0" <?php if ( !$form->studentcanpost ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("no") ?> </option> </select> <?php helpbutton("studentcanpost", get_string("studentcanpost", "glossary"), "glossary") ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("allowduplicatedentries", "glossary") ?>:</b></td> - <td align="left"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("allowduplicatedentries", "glossary") ?>:</B></P></TD> + <TD> <select size="1" name="allowduplicatedentries"> <option value="1" <?php if ( $form->allowduplicatedentries ) { - echo "selected=\"selected\""; + echo "selected"; } ?> ><?php echo get_string("yes") ?></option> <option value="0" <?php if ( !$form->allowduplicatedentries ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("no") ?> </option> </select> <?php helpbutton("allowduplicatedentries", get_string("allowduplicatedentries", "glossary"), "glossary") ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("allowcomments", "glossary") ?>:</b></td> - <td align="left"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("allowcomments", "glossary") ?>:</B></P></TD> + <TD> <select size="1" name="allowcomments"> <option value="1" <?php if ( $form->allowcomments ) { - echo "selected=\"selected\""; + echo "selected"; } ?> ><?php echo get_string("yes") ?></option> <option value="0" <?php if ( !$form->allowcomments ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("no") ?> </option> </select> <?php helpbutton("allowcomments", get_string("allowcomments", "glossary"), "glossary") ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("allowprintview", "glossary") ?>:</b></td> - <td align="left"> - <select size="1" name="allowprintview"> - <option value="1" <?php - if ( $form->allowprintview ) { - echo "selected=\"selected\""; - } - ?> - ><?php echo get_string("yes") ?></option> - <option value="0" <?php - if ( !$form->allowprintview ) { - echo "selected=\"selected\""; - } - ?>><?php echo get_string("no") ?> - </option> - </select> <?php helpbutton("allowprintview", get_string("allowprintview", "glossary"), "glossary") ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("usedynalink", "glossary") ?>:</b></td> - <td align="left"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("usedynalink", "glossary") ?>:</B></P></TD> + <TD> <select size="1" name="usedynalink"> <option value="1" <?php if ( $form->usedynalink ) { - echo "selected=\"selected\""; + echo "selected"; } ?> ><?php echo get_string("yes") ?></option> <option value="0" <?php if ( !$form->usedynalink ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("no") ?> </option> </select> <?php helpbutton("usedynalink", get_string("usedynalink", "glossary"), "glossary") ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("defaultapproval", "glossary") ?>:</b></td> - <td align="left"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("defaultapproval", "glossary") ?>:</B></P></TD> + <TD> <select size="1" name="defaultapproval"> <option value="1" <?php if ( $form->defaultapproval ) { - echo "selected=\"selected\""; + echo "selected"; } ?> ><?php echo get_string("yes") ?></option> <option value="0" <?php if ( !$form->defaultapproval ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("no") ?> </option> </select> <?php helpbutton("defaultapproval", get_string("defaultapproval", "glossary"), "glossary") ?> - </td> -</tr> -<tr valign="top"> -<td colspan="2"><hr /> + </TD> +</TR> +<TR valign=top> +<td colspan=2><hr> </tr> </tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("displayformat", "glossary") ?>:</b></td> - <td align="left"> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("displayformat", "glossary") ?>:</B></P></TD> + <TD> <?php //get and update available formats $recformats = glossary_get_available_formats(); @@ -291,91 +262,91 @@ if (!$mainglossary or $mainglossary->id == $form->instance ) { choose_from_menu($formats,'displayformat',$form->displayformat,''); ?> <?php helpbutton("displayformat", get_string("displayformat", "glossary"), "glossary") ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("showspecial", "glossary") ?>:</b></td> - <td align="left"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("showspecial", "glossary") ?>:</B></P></TD> + <TD> <select size="1" name="showspecial"> <option value="1" <?php if ( $form->showspecial ) { - echo "selected=\"selected\""; + echo "selected"; } ?> ><?php echo get_string("yes") ?></option> <option value="0" <?php if ( !$form->showspecial ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("no") ?> </option> </select> <?php helpbutton("shows", get_string("showspecial", "glossary"), "glossary") ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("showalphabet", "glossary") ?>:</b></td> - <td align="left"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("showalphabet", "glossary") ?>:</B></P></TD> + <TD> <select size="1" name="showalphabet"> <option value="1" <?php if ( $form->showalphabet ) { - echo "selected=\"selected\""; + echo "selected"; } ?> ><?php echo get_string("yes") ?></option> <option value="0" <?php if ( !$form->showalphabet ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("no") ?> </option> </select> <?php helpbutton("shows", get_string("showalphabet", "glossary"), "glossary") ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("showall", "glossary") ?>:</b></td> - <td align="left"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("showall", "glossary") ?>:</B></P></TD> + <TD> <select size="1" name="showall"> <option value="1" <?php if ( $form->showall ) { - echo "selected=\"selected\""; + echo "selected"; } ?> ><?php echo get_string("yes") ?></option> <option value="0" <?php if ( !$form->showall ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("no") ?> </option> </select> <?php helpbutton("shows", get_string("showall", "glossary"), "glossary") ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php echo get_string("editalways", "glossary") ?>:</b></td> - <td align="left"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("editalways", "glossary") ?>:</B></P></TD> + <TD> <select size="1" name="editalways"> <option value="1" <?php if ( $form->editalways ) { - echo "selected=\"selected\""; + echo "selected"; } ?> ><?php echo get_string("yes") ?></option> <option value="0" <?php if ( !$form->editalways ) { - echo "selected=\"selected\""; + echo "selected"; } ?>><?php echo get_string("no") ?> </option> </select> <?php helpbutton("editalways", get_string("editalways", "glossary"), "glossary") ?> - </td> -</tr> + </TD> +</TR> <?php //Only show rss parameters if rss is activated at site and glossary levels if (isset($CFG->enablerssfeeds) && isset($CFG->glossary_enablerssfeeds) && $CFG->enablerssfeeds && $CFG->glossary_enablerssfeeds) { - echo "<tr valign=\"top\">"; - echo "<td align=\"right\"><b>".get_string("rsstype").":</b></td>"; - echo "<td align=\"left\">"; + echo "<tr valign=top>"; + echo "<td align=right><p><b>".get_string("rsstype").":</b></p></td>"; + echo "<td>"; unset($choices); $choices[0] = get_string("none"); $choices[1] = get_string("withauthor", "glossary"); @@ -385,9 +356,9 @@ if (!$mainglossary or $mainglossary->id == $form->instance ) { echo "</td>"; echo "</tr>"; - echo "<tr valign=\"top\">"; - echo "<td align=\"right\"><b>".get_string("rssarticles").":</b></td>"; - echo "<td align=\"left\">"; + echo "<tr valign=top>"; + echo "<td align=right><p><b>".get_string("rssarticles").":</b></p></td>"; + echo "<td>"; unset($choices); $choices[0] = "0"; $choices[1] = "1"; @@ -409,22 +380,22 @@ if (!$mainglossary or $mainglossary->id == $form->instance ) { } ?> <tr> - <td align="right" valign="top"><b><?php print_string("allowratings", "glossary") ?>:</b></td> - <td align="left"> + <td align=right valign=top><p><b><?php print_string("allowratings", "glossary") ?>:</b></p></td> + <td> <?php - echo "<script type=\"text/javascript\">"; + echo "<script>"; echo " var subitemstime = ['startday','startmonth','startyear','starthour', 'startminute',". "'finishday','finishmonth','finishyear','finishhour','finishminute'];"; echo " var subitemsall = ['assessed', 'ratingtime', 'scale', 'startday','startmonth','startyear','starthour', 'startminute',". "'finishday','finishmonth','finishyear','finishhour','finishminute'];"; echo "</script>"; - echo "<input name=\"userating\" type=\"checkbox\" value=\"1\" "; + echo "<input name=\"userating\" type=checkbox value=1 "; echo " onclick=\"return lockoptions('form','userating', subitemsall)\" "; if ($form->assessed) { - echo " checked=\"checked\" "; + echo " checked "; } - echo " />"; + echo ">"; echo get_string("ratingsuse", "glossary").":"; echo "<br />"; @@ -432,81 +403,68 @@ if (!$mainglossary or $mainglossary->id == $form->instance ) { unset($options); $options[2] = get_string("ratingonlyteachers", "glossary", moodle_strtolower($course->teachers)); $options[1] = get_string("ratingeveryone", "glossary"); - - echo "\n\n<table cellpadding=\"5\" align=\"left\">"; - echo "<tr><td align=\"right\" nowrap=\"nowrap\">"; echo get_string("users").":"; - echo "</td><td align=\"left\" nowrap=\"nowrap\">"; choose_from_menu($options, "assessed", $form->assessed, ""); - echo "</td></tr>"; - echo "<tr><td align=\"right\" nowrap=\"nowrap\">"; + echo "<br />"; + echo get_string("grade").":"; - echo "</td><td align=\"left\" nowrap=\"nowrap\">"; print_grade_menu($course->id, "scale", $form->scale, false); - echo "</td></tr></table>\n\n"; + echo "<br />"; - echo "<br clear=\"all\" />"; - - echo "<input name=\"ratingtime\" type=\"checkbox\" value=\"1\" "; + echo "<input name=\"ratingtime\" type=checkbox value=1 "; echo " onclick=\"return lockoptions('form','ratingtime', subitemstime)\" "; if ($form->assesstimestart and $form->assesstimefinish and $form->assessed) { $form->ratingtime = 1; - echo " checked=\"checked\" "; + echo " checked "; } - echo " />"; + echo ">"; print_string("ratingtime", "glossary"); - - echo "<table cellpadding=\"5\" align=\"left\"><tr><td align=\"right\" nowrap=\"nowrap\">"; + echo "<table align=left><tr><td align=right nowrap>"; echo get_string("from").":"; - echo "</td><td align=\"left\" nowrap=\"nowrap\">"; print_date_selector("startday", "startmonth", "startyear", $form->assesstimestart); print_time_selector("starthour", "startminute", $form->assesstimestart); - echo "</td></tr>"; - echo "<tr><td align=\"right\" nowrap=\"nowrap\">"; + echo "<br />"; echo get_string("to").":"; - echo "</td><td align=\"left\" nowrap=\"nowrap\">"; print_date_selector("finishday", "finishmonth", "finishyear", $form->assesstimefinish); print_time_selector("finishhour", "finishminute", $form->assesstimefinish); + echo "<br />"; echo "</td></tr></table>"; - - echo "<input type=\"hidden\" name=\"hratingtime\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hassessed\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hscale\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hstartday\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hstartmonth\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hstartyear\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hstarthour\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hstartminute\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hfinishday\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hfinishmonth\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hfinishyear\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hfinishhour\" value=\"0\" />"; - echo "<input type=\"hidden\" name=\"hfinishminute\" value=\"0\" />"; + echo "<input type=\"hidden\" name=\"hratingtime\" value=0>"; + echo "<input type=\"hidden\" name=\"hassessed\" value=0>"; + echo "<input type=\"hidden\" name=\"hscale\" value=0>"; + echo "<input type=\"hidden\" name=\"hstartday\" value=0>"; + echo "<input type=\"hidden\" name=\"hstartmonth\" value=0>"; + echo "<input type=\"hidden\" name=\"hstartyear\" value=0>"; + echo "<input type=\"hidden\" name=\"hstarthour\" value=0>"; + echo "<input type=\"hidden\" name=\"hstartminute\" value=0>"; + echo "<input type=\"hidden\" name=\"hfinishday\" value=0>"; + echo "<input type=\"hidden\" name=\"hfinishmonth\" value=0>"; + echo "<input type=\"hidden\" name=\"hfinishyear\" value=0>"; + echo "<input type=\"hidden\" name=\"hfinishhour\" value=0>"; + echo "<input type=\"hidden\" name=\"hfinishminute\" value=0>"; - echo "<script type=\"text/javascript\">"; + echo "<script>"; echo "lockoptions('form','userating', subitemsall);"; echo "</script>"; if (empty($form->ratingtime)) { - echo "<script type=\"text/javascript\">"; + echo "<script>"; echo "lockoptions('form','ratingtime', subitemstime);"; echo "</script>"; } ?> </td> </tr> -<?php print_visible_setting($form); ?> -</table> +</TABLE> <!-- These hidden variables are always the same --> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -</center> -</form> +<INPUT type="hidden" name=course value="<?php p($form->course) ?>"> +<INPUT type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<INPUT type="hidden" name=section value="<?php p($form->section) ?>"> +<INPUT type="hidden" name=module value="<?php p($form->module) ?>"> +<INPUT type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<INPUT type="hidden" name=instance value="<?php p($form->instance) ?>"> +<INPUT type="hidden" name=mode value="<?php p($form->mode) ?>"> +<INPUT type="submit" value="<?php print_string("savechanges") ?>"> +</CENTER> +</FORM> diff --git a/mod/glossary/print.php b/mod/glossary/print.php index 0933ce4adc2..995cf1ca85d 100644 --- a/mod/glossary/print.php +++ b/mod/glossary/print.php @@ -4,43 +4,48 @@ require_once("../../config.php"); require_once("lib.php"); - + require_variable($id); // Course Module ID - optional_variable($sortorder,"asc"); // Sorting order - optional_variable($offset,0,PARAM_INT); // number of entries to bypass - optional_variable($displayformat,-1); + require_variable($mode,"letter"); // mode to show the entries + optional_variable($hook,"ALL"); // what to show + optional_variable($sortkey,"UPDATE"); // Sorting key + optional_variable($sortorder,"asc"); // Sorting order + optional_variable($offset); // number of entries to bypass + optional_variable($displayformat,-1); - $mode = required_param('mode'); // mode to show the entries - $hook = optional_param('hook','ALL'); // what to show - $sortkey = optional_param('sortkey','UPDATE'); // Sorting key if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); - } - + } + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); - } - + } + if (! $glossary = get_record("glossary", "id", $cm->instance)) { error("Course module is incorrect"); - } - + } + if ( !$entriesbypage = $glossary->entbypage ) { $entriesbypage = $CFG->glossary_entbypage; } - print_header(); + print_header_simple(strip_tags("$glossary->name")); - require_course_login($course, true, $cm); + if ($CFG->forcelogin) { + require_login(); + } - if (!isteacher($course->id) and !$glossary->allowprintview) { - notice(get_string('printviewnotallowed', 'glossary')); + if ($course->category) { + require_login($course->id); + if (isguest()) { + error("You must be logged to use this page."); + } } /// setting the default values for the display mode of the current glossary /// only if the glossary is viewed by the first time - if ( $dp = get_record('glossary_formats','name', addslashes($glossary->displayformat)) ) { + if ( $dp = get_record('glossary_formats','name', $glossary->displayformat) ) { $printpivot = $dp->showgroup; if ( $mode == '' and $hook == '' and $show == '') { $mode = $dp->defaultmode; @@ -67,9 +72,9 @@ } } if ( $sortkey = strtoupper($sortkey) ) { - if ($sortkey != 'CREATION' and - $sortkey != 'UPDATE' and - $sortkey != 'FIRSTNAME' and + if ($sortkey != 'CREATION' and + $sortkey != 'UPDATE' and + $sortkey != 'FIRSTNAME' and $sortkey != 'LASTNAME' ) { $sortkey = ''; @@ -80,7 +85,7 @@ case 'entry': /// Looking for a certain entry id $tab = GLOSSARY_STANDARD_VIEW; break; - + case 'cat': /// Looking for a certain cat $tab = GLOSSARY_CATEGORY_VIEW; if ( $hook > 0 ) { @@ -103,20 +108,20 @@ $tab = GLOSSARY_DATE_VIEW; if ( !$sortkey ) { $sortkey = 'UPDATE'; - } + } if ( !$sortorder ) { $sortorder = 'desc'; } break; - + case 'author': /// Looking for entries, browsed by author $tab = GLOSSARY_AUTHOR_VIEW; if ( !$hook ) { $hook = 'ALL'; - } + } if ( !$sortkey ) { $sortkey = 'FIRSTNAME'; - } + } if ( !$sortorder ) { $sortorder = 'asc'; } @@ -126,13 +131,13 @@ default: $tab = GLOSSARY_STANDARD_VIEW; if ( !$hook ) { - $hook = 'ALL'; - } + $hook = 'ALL'; + } break; - } + } include_once("sql.php"); - + $entriesshown = 0; $currentpivot = ''; if ( $hook == 'SPECIAL' ) { @@ -140,38 +145,86 @@ } $site = get_record("course","id",1); - echo '<p align="right"><font size="-1">' . userdate(time()) . '</font></p>'; - echo get_string("site") . ': <strong>' . $site->fullname . '</strong><br />'; + echo '<p align="right"><font size=-1>' . userdate(time()) . '</font></p>'; + echo '<strong>' . $site->fullname . '</strong><br>'; echo get_string("course") . ': <strong>' . $course->fullname . ' ('. $course->shortname . ')</strong><br />'; - echo get_string("modulename","glossary") . ': <strong>' . format_string($glossary->name, true) . '</strong><p>'; + echo get_string("modulename","glossary") . ': <strong>' . $glossary->name . '</strong><p>'; if ( $allentries ) { foreach ($allentries as $entry) { - - // Setting the pivot for the current entry + /// Setting the pivot for the current entry $pivot = $entry->pivot; if ( !$fullpivot ) { - $pivot = substr($pivot, 0, 1); + $pivot = $pivot[0]; } - // If there's group break - if ( $currentpivot != strtoupper($pivot) ) { - - // print the group break if apply - if ( $printpivot ) { - $currentpivot = strtoupper($pivot); - - $pivottoshow = $currentpivot; - if ( isset($entry->uid) ) { - // printing the user icon if defined (only when browsing authors) - $user = get_record("user","id",$entry->uid); - $pivottoshow = fullname($user, isteacher($course->id)); - } - - echo "<p align=\"center\"><strong><i>".clean_text($pivottoshow)."</i></strong></p>" ; + /// + /// Validating special cases not covered by the SQL statement + /// + + /// if we're browsing by alphabet and the current concept does not begin with + /// the letter we are look for. + $showentry = 1; + if ( $mode == 'letter' and $hook != 'SPECIAL' and $hook != 'ALL' ) { + if ( substr($entry->concept, 0, strlen($hook)) != $hook ) { + $showentry = 0; } + } + + /// if we're browsing for letter, looking for special characters not covered + /// in the alphabet + if ( $showentry and $hook == 'SPECIAL' ) { + $initial = $entry->concept[0]; + for ($i = 0; $i < count($alphabet); $i++) { + $curletter = $alphabet[$i]; + if ( $curletter == $initial ) { + + $showentry = 0; + break; + } + } + } + + /// if we're browsing categories, looking for entries not categorised. + if ( $showentry and $mode == 'cat' and $hook == GLOSSARY_SHOW_NOT_CATEGORISED ) { + if ( record_exists("glossary_entries_categories", "entryid", $entry->id)) { + $showentry = 0; + } + } + + /// if the entry is not approved, deal with it based on the current view and + /// user. + if ( $showentry and $mode != 'approval' ) { + if ( !$entry->approved and isteacher($course->id, $entry->userid) ) { + $showentry = 0; + } + } + + /// ok, if it's a valid entry.. Print it. + if ( $showentry ) { + + if ( $currentpivot != strtoupper($pivot) ) { + // print the group break if apply + if ( $printpivot ) { + $currentpivot = strtoupper($pivot); + + $pivottoshow = $currentpivot; + if ( isset($entry->uid) ) { + $user = get_record("user","id",$entry->uid); + $pivottoshow = fullname($user, isteacher($course->id)); + } + + echo "<p align=\"center\"><strong><i>$pivottoshow</i></strong></p>" ; + } + } + + echo '<b>'. strip_tags($entry->concept) . ': </b>'; + $options->para = false; + $definition = format_text('<nolink>' . strip_tags($entry->definition) . '</nolink>', $entry->format,$options); + + echo ($definition); + + echo '<br><br>'; } - - glossary_print_entry($course, $cm, $glossary, $entry, $mode, $hook,1,$displayformat,false,true); } } diff --git a/mod/glossary/rate.php b/mod/glossary/rate.php index 647e26a52da..262eb7150bb 100644 --- a/mod/glossary/rate.php +++ b/mod/glossary/rate.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // Collect ratings, store them, then return to where we came from @@ -6,6 +6,9 @@ require_once("../../config.php"); require_once("lib.php"); + if (isguest()) { + error("Guests are not allowed to rate entries.", $_SERVER["HTTP_REFERER"]); + } require_variable($id); // The course these ratings are part of @@ -15,28 +18,21 @@ require_login($course->id); - if (isguest()) { - error("Guests are not allowed to rate entries.", $_SERVER["HTTP_REFERER"]); - } - if ($data = data_submitted("$CFG->wwwroot/mod/glossary/view.php")) { // form submitted - foreach ((array)$data as $entry => $rating) { + foreach ($data as $entry => $rating) { if ($entry == "id") { continue; } if ($oldrating = get_record("glossary_ratings", "userid", $USER->id, "entryid", $entry)) { - //Check if we must delete the rate - if ($rating == -999) { - delete_records('glossary_ratings','userid',$oldrating->userid, 'entryid',$oldrating->entryid); - } else if ($rating != $oldrating->rating) { + if ($rating != $oldrating->rating) { $oldrating->rating = $rating; $oldrating->time = time(); if (! update_record("glossary_ratings", $oldrating)) { error("Could not update an old rating ($entry = $rating)"); } } - } else if ($rating >= 0) { + } else if ($rating) { unset($newrating); $newrating->userid = $USER->id; $newrating->time = time(); diff --git a/mod/glossary/report.php b/mod/glossary/report.php index 057a221ea46..da72a7702d7 100644 --- a/mod/glossary/report.php +++ b/mod/glossary/report.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // For a given entry, shows a report of all the ratings it has require_once("../../config.php"); @@ -34,30 +34,29 @@ $strname = get_string("name"); $strtime = get_string("time"); - print_header("$strratings: $entry->concept"); + print_header("$strratings: $entry->subject"); if (!$ratings = glossary_get_ratings($entry->id, $sort)) { - error("No ratings for this entry: \"$entry->concept\""); + error("No ratings for this entry: \"$entry->subject\""); } else { - echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"3\" class=\"generalbox\" width=\"100%\">"; + echo "<table border=0 cellpadding=3 cellspacing=3 class=generalbox width=100%>"; echo "<tr>"; echo "<th>&nbsp;</th>"; - echo "<th><a href=\"report.php?id=$entry->id&amp;sort=u.firstname\">$strname</a></th>"; - echo "<th width=\"100%\"><a href=\"report.php?id=$entry->id&amp;sort=r.rating\">$strrating</a></th>"; - echo "<th><a href=\"report.php?id=$entry->id&amp;sort=r.time\">$strtime</a></th>"; + echo "<th><a href=report.php?id=$entry->id&sort=u.firstname>$strname</a>"; + echo "<th width=100%><a href=report.php?id=$entry->id&sort=r.rating>$strrating</a>"; + echo "<th><a href=report.php?id=$entry->id&sort=r.time>$strtime</a>"; foreach ($ratings as $rating) { if (isteacher($glossary->course, $rating->id)) { - echo '<tr class="teacher">'; + echo "<tr bgcolor=\"$THEME->cellcontent2\">"; } else { - echo '<tr>'; + echo "<tr bgcolor=\"$THEME->cellcontent\">"; } - echo '<td class="picture">'; + echo "<td>"; print_user_picture($rating->id, $glossary->course, $rating->picture); - echo '</td>'; - echo '<td nowrap="nowrap" class="author">'.fullname($rating).'</td>'; - echo '<td nowrap="nowrap" align="center" class="author">'.$scalemenu[$rating->rating].'</td>'; - echo '<td nowrap="nowrap" align="center" class="author">'.userdate($rating->time).'</td>'; + echo '<td nowrap><p><font size="-1">'.fullname($rating).'</p>'; + echo '<td nowrap align="center"><p><font size="-1">'.$scalemenu[$rating->rating]."</p>"; + echo '<td nowrap align="center"><p><font size="-1">'.userdate($rating->time)."</p>"; echo "</tr>\n"; } echo "</table>"; diff --git a/mod/glossary/restorelib.php b/mod/glossary/restorelib.php index e5c802b28fb..e5b80b22836 100644 --- a/mod/glossary/restorelib.php +++ b/mod/glossary/restorelib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //glossary mods @@ -57,7 +57,6 @@ $glossary->showalphabet = backup_todb($info['MOD']['#']['SHOWALPHABET']['0']['#']); $glossary->showall = backup_todb($info['MOD']['#']['SHOWALL']['0']['#']); $glossary->allowcomments = backup_todb($info['MOD']['#']['ALLOWCOMMENTS']['0']['#']); - $glossary->allowprintview = backup_todb($info['MOD']['#']['ALLOWPRINTVIEW']['0']['#']); $glossary->usedynalink = backup_todb($info['MOD']['#']['USEDYNALINK']['0']['#']); $glossary->defaultapproval = backup_todb($info['MOD']['#']['DEFAULTAPPROVAL']['0']['#']); $glossary->globalglossary = backup_todb($info['MOD']['#']['GLOBALGLOSSARY']['0']['#']); @@ -113,7 +112,7 @@ $newid = insert_record ("glossary",$glossary); //Do some output - echo "<li>".get_string("modulename","glossary")." \"".format_string(stripslashes($glossary->name),true)."\"</li>"; + echo "<ul><li>".get_string("modulename","glossary")." \"".$glossary->name."\"<br>"; backup_flush(300); if ($newid) { @@ -127,6 +126,10 @@ } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -190,7 +193,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -222,7 +225,7 @@ global $CFG; - $status = true; + $status = true; //Get the comments array $comments = $info['#']['COMMENTS']['0']['#']['COMMENT']; @@ -257,11 +260,11 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } - if ($newid) { + if ($newid) { //We have the newid, update backup_ids backup_putid($restore->backup_unique_code,"glossary_comments",$oldid,$newid); } else { @@ -308,7 +311,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -326,7 +329,7 @@ global $CFG; - $status = true; + $status = true; //Get the comments array $aliases = $info['#']['ALIASES']['0']['#']['ALIAS']; @@ -346,7 +349,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -390,7 +393,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -414,7 +417,7 @@ global $CFG; - $status = true; + $status = true; //Get the entryids array $entryids = $info['#']['ENTRIES']['0']['#']['ENTRY']; @@ -429,7 +432,7 @@ //Now, build the GLOSSARY_ENTRIES_CATEGORIES record structure $entry_category->categoryid = $new_category_id; $entry_category->entryid = backup_todb($ent_info['#']['ENTRYID']['0']['#']); - + //We have to recode the entryid field $entry = backup_getid($restore->backup_unique_code,"glossary_entries",$entry_category->entryid); if ($entry) { @@ -442,7 +445,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -509,89 +512,12 @@ return $status; } - //This function converts texts in FORMAT_WIKI to FORMAT_MARKDOWN for - //some texts in the module - function glossary_restore_wiki2markdown ($restore) { - - global $CFG; - - $status = true; - - //Convert glossary_comments->comment - if ($records = get_records_sql ("SELECT c.id, c.comment, c.format - FROM {$CFG->prefix}glossary_comments c, - {$CFG->prefix}glossary_entries e, - {$CFG->prefix}glossary g, - {$CFG->prefix}backup_ids b - WHERE e.id = c.entryid AND - g.id = e.glossaryid AND - g.course = $restore->course_id AND - c.format = ".FORMAT_WIKI. " AND - b.backup_code = $restore->backup_unique_code AND - b.table_name = 'glossary_comments' AND - b.new_id = c.id")) { - foreach ($records as $record) { - //Rebuild wiki links - $record->comment = restore_decode_wiki_content($record->comment, $restore); - //Convert to Markdown - $wtm = new WikiToMarkdown(); - $record->comment = $wtm->convert($record->comment, $restore->course_id); - $record->format = FORMAT_MARKDOWN; - $status = update_record('glossary_comments', addslashes_object($record)); - //Do some output - $i++; - if (($i+1) % 1 == 0) { - echo "."; - if (($i+1) % 20 == 0) { - echo "<br />"; - } - backup_flush(300); - } - } - - } - - //Convert glossary_entries->definition - if ($records = get_records_sql ("SELECT e.id, e.definition, e.format - FROM {$CFG->prefix}glossary_entries e, - {$CFG->prefix}glossary g, - {$CFG->prefix}backup_ids b - WHERE g.id = e.glossaryid AND - g.course = $restore->course_id AND - e.format = ".FORMAT_WIKI. " AND - b.backup_code = $restore->backup_unique_code AND - b.table_name = 'glossary_entries' AND - b.new_id = e.id")) { - foreach ($records as $record) { - //Rebuild wiki links - $record->definition = restore_decode_wiki_content($record->definition, $restore); - //Convert to Markdown - $wtm = new WikiToMarkdown(); - $record->definition = $wtm->convert($record->definition, $restore->course_id); - $record->format = FORMAT_MARKDOWN; - $status = update_record('glossary_entries', addslashes_object($record)); - //Do some output - $i++; - if (($i+1) % 1 == 0) { - echo "."; - if (($i+1) % 20 == 0) { - echo "<br />"; - } - backup_flush(300); - } - } - - } - - return $status; - } - //This function returns a log record with all the necessay transformations //done. It's used by restore_log_module() to restore modules log. function glossary_restore_logs($restore,$log) { - + $status = false; - + //Depending of the action, we recode different things switch ($log->action) { case "add": @@ -669,7 +595,7 @@ //Get the new_id of the glossary_entry (to recode the info and url field) $ent = backup_getid($restore->backup_unique_code,"glossary_entries",$log->info); if ($ent) { - $log->url = "view.php?id=".$log->cmid."&amp;mode=entry&amp;hook=".$ent->new_id; + $log->url = "view.php?id=".$log->cmid."&mode=entry&hook=".$ent->new_id; $log->info = $ent->new_id; $status = true; } @@ -708,17 +634,6 @@ } } break; - case "view entry": - if ($log->cmid) { - //Get the new_id of the glossary_entry (to recode the info and url field) - $ent = backup_getid($restore->backup_unique_code,"glossary_entries",$log->info); - if ($ent) { - $log->url = "showentry.php?&eid=".$ent->new_id; - $log->info = $ent->new_id; - $status = true; - } - } - break; case "add comment": if ($log->cmid) { //Extract the entryid from the url field @@ -765,7 +680,7 @@ } break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored<br />"; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>"; //Debug break; } diff --git a/mod/glossary/rsslib.php b/mod/glossary/rsslib.php index bbef6395565..9170786410a 100644 --- a/mod/glossary/rsslib.php +++ b/mod/glossary/rsslib.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ //This file adds support to rss feeds generation //This function is the main entry point to glossary @@ -48,7 +48,7 @@ continue; } - mtrace("Updating RSS feed for ".format_string($glossary->name,true).", ID: $glossary->id"); + mtrace("Updating RSS feed for $glossary->name, ID: $glossary->id"); //Some debug... if ($CFG->debug > 7) { @@ -102,14 +102,14 @@ if (empty($CFG->enablerssfeeds)) { //Some debug... if ($CFG->debug > 7) { - echo "DISABLED (admin variables)"; - } + echo "DISABLED (admin variables)"; + } //Check CFG->glossary_enablerssfeeds } else if (empty($CFG->glossary_enablerssfeeds)) { - //Some debug... + //Some debug... if ($CFG->debug > 7) { echo "DISABLED (module configuration)"; - } + } //It's working so we start... } else { //Check the glossary has rss activated @@ -119,14 +119,14 @@ $items = glossary_rss_feed_withauthor($glossary); } else { //Without author RSS $items = glossary_rss_feed_withoutauthor($glossary); - + } //Now, if items, we begin building the structure if (!empty($items)) { //First all rss feeds common headers - $header = rss_standard_header(format_string($glossary->name,true), + $header = rss_standard_header($glossary->name, $CFG->wwwroot."/mod/glossary/view.php?f=".$glossary->id, - format_string($glossary->intro,true)); + $glossary->intro); //Now all the rss items if (!empty($header)) { $articles = rss_add_items($items); @@ -140,7 +140,7 @@ $status = $header.$articles.$footer; } else { $status = false; - } + } } else { $status = false; } @@ -159,18 +159,18 @@ if ($newsince) { $newsince = " AND e.timecreated > '$newsince'"; - } else { + } else { $newsince = ""; - } + } - if ($recs = get_records_sql ("SELECT e.id AS entryid, - e.concept AS entryconcept, - e.definition AS entrydefinition, - e.format AS entryformat, - e.timecreated AS entrytimecreated, - u.id AS userid, - u.firstname AS userfirstname, - u.lastname AS userlastname + if ($recs = get_records_sql ("SELECT e.id entryid, + e.concept entryconcept, + e.definition entrydefinition, + e.format entryformat, + e.timecreated entrytimecreated, + u.id userid, + u.firstname userfirstname, + u.lastname userlastname FROM {$CFG->prefix}glossary_entries e, {$CFG->prefix}user u WHERE e.glossaryid = '$glossary->id' AND @@ -220,14 +220,14 @@ $newsince = ""; } - if ($recs = get_records_sql ("SELECT e.id AS entryid, - e.concept AS entryconcept, - e.definition AS entrydefinition, - e.format AS entryformat, - e.timecreated AS entrytimecreated, - u.id AS userid, - u.firstname AS userfirstname, - u.lastname AS userlastname + if ($recs = get_records_sql ("SELECT e.id entryid, + e.concept entryconcept, + e.definition entrydefinition, + e.format entryformat, + e.timecreated entrytimecreated, + u.id userid, + u.firstname userfirstname, + u.lastname userlastname FROM {$CFG->prefix}glossary_entries e, {$CFG->prefix}user u WHERE e.glossaryid = '$glossary->id' AND @@ -263,5 +263,5 @@ } return $items; } - + ?> diff --git a/mod/glossary/showentry.php b/mod/glossary/showentry.php index 6d9251c7d0a..d8fe45765f4 100644 --- a/mod/glossary/showentry.php +++ b/mod/glossary/showentry.php @@ -1,10 +1,10 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); optional_variable($concept); optional_variable($courseid,0); - optional_variable($eid,0); // glossary entry id + optional_variable($eid,0); optional_variable($displayformat,-1); if ($CFG->forcelogin) { @@ -12,30 +12,19 @@ } if ($eid) { - $entry = get_record("glossary_entries", "id", $eid); - $glossary = get_record('glossary','id',$entry->glossaryid); - $entry->glossaryname = format_string($glossary->name,true); - if (!$cm = get_coursemodule_from_instance("glossary", $glossary->id)) { - error("Could not determine which course module this belonged to!"); - } - if (!$cm->visible and !isteacher($cm->course)) { - redirect($CFG->wwwroot.'/course/view.php?id='.$cm->course, get_string('activityiscurrentlyhidden')); - } - $entry->cmid = $cm->id; - $entry->courseid = $cm->course; - $entries[] = $entry; + $entries[] = get_record("glossary_entries", "id", $eid); + } else if ($concept) { - $entries = glossary_get_entries_search($concept, $courseid); - } else { - error('No valid entry specified'); + $entries = get_records_sql("select e.* from {$CFG->prefix}glossary_entries e, {$CFG->prefix}glossary g". + " where e.glossaryid = g.id and". + " (e.casesensitive != 0 and ucase(concept) = '" . strtoupper(trim($concept)). "' or". + " e.casesensitive = 0 and concept = '$concept') and". + " (g.course = $courseid or g.globalglossary) and". + " e.usedynalink != 0 and g.usedynalink != 0"); } - if ($entries) { - foreach ($entries as $key => $entry) { - //$entries[$key]->footer = "<p align=\"right\">&raquo;&nbsp;<a onClick=\"if (window.opener) {window.opener.location.href='$CFG->wwwroot/mod/glossary/view.php?g=$entry->glossaryid'; return false;} else {openpopup('/mod/glossary/view.php?g=$entry->glossaryid', 'glossary', 'menubar=1,location=1,toolbar=1,scrollbars=1,directories=1,status=1,resizable=1', 0); return false;}\" href=\"$CFG->wwwroot/mod/glossary/view.php?g=$entry->glossaryid\" target=\"_blank\">".format_string($entry->glossaryname,true)."</a></p>"; // Could not get this to work satisfactorily in all cases - Martin - $entries[$key]->footer = "<p align=\"right\">&raquo;&nbsp;<a target=\"_blank\" href=\"$CFG->wwwroot/mod/glossary/view.php?g=$entry->glossaryid\">".format_string($entry->glossaryname,true)."</a></p>"; - add_to_log($entry->courseid, "glossary", "view entry", "showentry.php?eid=$entry->id", $entry->id, $entry->cmid); - } + foreach ($entries as $entry) { + $glossary = get_record('glossary','id',$entry->glossaryid); } if (!empty($courseid)) { @@ -49,10 +38,10 @@ $CFG->framename = "newwindow"; if ($course->category) { - print_header(strip_tags("$course->shortname: $strglossaries $strsearch"), "$course->fullname", + print_header(strip_tags("$course->shortname: $glossary->name"), "$course->fullname", "<a target=\"newwindow\" href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> -> $strglossaries -> $strsearch", "", "", true, "&nbsp;", "&nbsp;"); } else { - print_header(strip_tags("$course->shortname: $strglossaries $strsearch"), "$course->fullname", + print_header(strip_tags("$course->shortname: $glossary->name"), "$course->fullname", "$strglossaries -> $strsearch", "", "", true, "&nbsp;", "&nbsp;"); } @@ -62,8 +51,8 @@ if ($entries) { glossary_print_dynaentry($courseid, $entries, $displayformat); - } - + } + close_window_button(); ?> diff --git a/mod/glossary/sql.php b/mod/glossary/sql.php index d576088e830..f7fa2af0932 100644 --- a/mod/glossary/sql.php +++ b/mod/glossary/sql.php @@ -9,9 +9,6 @@ /// Creating the SQL statements -/// Initialise some variables - $sqlorderby = ''; - /// Pivot is the field that set the break by groups (category, initial, author name, etc) /// fullpivot indicate if the whole pivot should be compared agasint the db or just the first letter @@ -46,7 +43,7 @@ case GLOSSARY_CATEGORY_VIEW: if ($hook == GLOSSARY_SHOW_ALL_CATEGORIES ) { - $sqlselect = "SELECT gec.id, ge.*, gec.entryid, gc.name $as pivot"; + $sqlselect = "SELECT ge.*, gec.entryid, gc.name $as pivot"; $sqlfrom = "FROM {$CFG->prefix}glossary_entries ge, {$CFG->prefix}glossary_entries_categories gec, {$CFG->prefix}glossary_categories gc"; @@ -60,10 +57,9 @@ $printpivot = 0; $sqlselect = "SELECT ge.*, concept $as pivot"; - $sqlfrom = "FROM {$CFG->prefix}glossary_entries ge LEFT JOIN {$CFG->prefix}glossary_entries_categories gec - ON ge.id = gec.entryid"; + $sqlfrom = "FROM {$CFG->prefix}glossary_entries ge"; $sqlwhere = "WHERE (glossaryid = '$glossary->id' OR sourceglossaryid = '$glossary->id') AND - (ge.approved != 0 $userid) AND gec.entryid IS NULL"; + (ge.approved != 0 $userid)"; $sqlorderby = ' ORDER BY concept'; @@ -73,9 +69,9 @@ $printpivot = 0; $sqlselect = "SELECT ge.*, ce.entryid, c.name $as pivot"; $sqlfrom = "FROM {$CFG->prefix}glossary_entries ge, {$CFG->prefix}glossary_entries_categories ce, {$CFG->prefix}glossary_categories c"; - $sqlwhere = "WHERE ge.id = ce.entryid AND ce.categoryid = '$hook' AND + $sqlwhere = "WHERE ge.id = ce.entryid AND ce.categoryid = $hook AND ce.categoryid = c.id AND ge.approved != 0 AND - (ge.glossaryid = '$glossary->id' OR ge.sourceglossaryid = '$glossary->id') AND + (ge.glossaryid = $glossary->id OR ge.sourceglossaryid = $glossary->id) AND (ge.approved != 0 $userid)"; $sqlorderby = ' ORDER BY c.name, ge.concept'; @@ -97,7 +93,7 @@ } else { $usernamefield = "u.lastname || ' ' || u.firstname"; } - $where = "AND substr(upper($usernamefield),1," . strlen($hook) . ") = '" . strtoupper($hook) . "'"; + $where = "AND substr(ucase($usernamefield),1," . strlen($hook) . ") = '" . strtoupper($hook) . "'"; break; case 'mysql': if ( $sqlsortkey == 'FIRSTNAME' ) { @@ -112,12 +108,12 @@ $where = ''; } - $sqlselect = "SELECT ge.id, $usernamefield $as pivot, u.id as uid, ge.*"; + $sqlselect = "SELECT ge.id, $usernamefield $as pivot, u.id uid, ge.*"; $sqlfrom = "FROM {$CFG->prefix}glossary_entries ge, {$CFG->prefix}user u"; $sqlwhere = "WHERE ge.userid = u.id AND (ge.approved != 0 $userid) $where AND - (ge.glossaryid = '$glossary->id' OR ge.sourceglossaryid = '$glossary->id')"; + (ge.glossaryid = $glossary->id OR ge.sourceglossaryid = $glossary->id)"; $sqlorderby = "ORDER BY $usernamefield $sqlsortorder, ge.concept"; break; case GLOSSARY_APPROVAL_VIEW: @@ -132,7 +128,7 @@ if ($hook != 'ALL' and $hook != 'SPECIAL') { switch ($CFG->dbtype) { case 'postgres7': - $where = 'AND substr(upper(concept),1,' . strlen($hook) . ') = \'' . strtoupper($hook) . '\''; + $where = 'AND substr(ucase(concept),1,' . strlen($hook) . ') = \'' . strtoupper($hook) . '\''; break; case 'mysql': $where = 'AND left(ucase(concept),' . strlen($hook) . ") = '$hook'"; @@ -142,7 +138,7 @@ $sqlselect = "SELECT ge.*, ge.concept $as pivot"; $sqlfrom = "FROM {$CFG->prefix}glossary_entries ge"; - $sqlwhere = "WHERE (ge.glossaryid = '$glossary->id' OR ge.sourceglossaryid = '$glossary->id') AND + $sqlwhere = "WHERE (ge.glossaryid = $glossary->id OR ge.sourceglossaryid = $glossary->id) AND ge.approved = 0 $where"; if ( $sqlsortkey ) { @@ -167,31 +163,10 @@ switch ( $mode ) { case 'search': - //First, look in aliases (bug 2242) - $idaliases = ''; - $listaliases = array(); - $recaliases = get_records_sql ("SELECT al.id, al.entryid - FROM {$CFG->prefix}glossary_alias al, - {$CFG->prefix}glossary_entries ge - WHERE (ge.glossaryid = '$glossary->id' OR - ge.sourceglossaryid = '$glossary->id') AND - (ge.approved != 0 $userid) AND - ge.id = al.entryid AND - al.alias $LIKE '%$hook%'"); - if ($recaliases) { - foreach ($recaliases as $recalias) { - $listaliases[] = $recalias->entryid; - } - $idaliases = implode (',',$listaliases); - } $printpivot = 0; $where = "AND ( ge.concept $LIKE '%$hook%'"; - //Include aliases in resultset (if any) - if (!empty($idaliases)) { - $where .= " OR ge.id IN ($idaliases)"; - } if ( $fullsearch ) { - $where .= " OR ge.definition $LIKE '%$hook%')"; + $where .= "OR ge.definition $LIKE '%$hook%')"; } else { $where .= ")"; } @@ -206,43 +181,24 @@ case 'entry': $printpivot = 0; - $where = "AND ge.id = '$hook'"; + $where = "AND ge.id = $hook"; break; case 'letter': if ($hook != 'ALL' and $hook != 'SPECIAL') { switch ($CFG->dbtype) { case 'postgres7': - $where = 'AND substr(upper(concept),1,' . strlen($hook) . ') = \'' . strtoupper($hook) . '\''; + $where = 'AND substr(ucase(concept),1,' . strlen($hook) . ') = \'' . strtoupper($hook) . '\''; break; case 'mysql': $where = 'AND left(ucase(concept),' . strlen($hook) . ") = '" . strtoupper($hook) . "'"; break; } } - if ($hook == 'SPECIAL') { - //Create appropiate IN contents - $alphabet = explode(",", get_string("alphabet")); - $sqlalphabet = ''; - for ($i = 0; $i < count($alphabet); $i++) { - if ($i != 0) { - $sqlalphabet .= ','; - } - $sqlalphabet .= '\''.$alphabet[$i].'\''; - } - switch ($CFG->dbtype) { - case 'postgres7': - $where = 'AND substr(upper(concept),1,1) NOT IN (' . strtoupper($sqlalphabet) . ')'; - break; - case 'mysql': - $where = 'AND left(ucase(concept),1) NOT IN (' . strtoupper($sqlalphabet) . ')'; - break; - } - } break; } - $sqlwhere = "WHERE (ge.glossaryid = '$glossary->id' or ge.sourceglossaryid = '$glossary->id') AND + $sqlwhere = "WHERE (ge.glossaryid = $glossary->id or ge.sourceglossaryid = $glossary->id) AND (ge.approved != 0 $userid) $where"; switch ( $tab ) { @@ -273,5 +229,4 @@ } $allentries = get_records_sql("$sqlselect $sqlfrom $sqlwhere $sqlorderby $sqllimit"); - ?> diff --git a/mod/glossary/tabs.html b/mod/glossary/tabs.html index 06ebfc53c6d..241bd7b89db 100644 --- a/mod/glossary/tabs.html +++ b/mod/glossary/tabs.html @@ -5,8 +5,14 @@ if (!isset($sortkey)) { $sortkey = ''; } - - echo '<center>'; + echo '<p align="center">'; + $glossary_tCFG->TabTableBGColor = $THEME->cellheading; + $glossary_tCFG->ActiveTabColor = $THEME->cellheading; + $glossary_tCFG->InactiveTabColor = $THEME->cellcontent2; + $glossary_tCFG->InactiveFontColor= $THEME->hidden; + $glossary_tCFG->TabTableWidth = "70%"; + $glossary_tCFG->TabsPerRow = 4; + $glossary_tCFG->TabSeparation = 4; $data[GLOSSARY_STANDARD_VIEW]->caption = get_string("standardview", "glossary"); $data[GLOSSARY_CATEGORY_VIEW]->caption = get_string("categoryview", "glossary"); @@ -24,17 +30,17 @@ $data[GLOSSARY_EXPORT_VIEW]->caption = get_string("exportentries", "glossary"); $data[GLOSSARY_IMPORT_VIEW]->link = "import.php?id=$cm->id"; - $data[GLOSSARY_EXPORT_VIEW]->link = "export.php?id=$cm->id&amp;mode=$mode&amp;hook=$hook"; + $data[GLOSSARY_EXPORT_VIEW]->link = "export.php?id=$cm->id&mode=$mode&hook=$hook"; } -// $data[GLOSSARY_DATE_VIEW]->link = "view.php?id=$id&amp;tab=".GLOSSARY_DATE_VIEW; +// $data[GLOSSARY_DATE_VIEW]->link = "view.php?id=$id&tab=".GLOSSARY_DATE_VIEW; - $data[GLOSSARY_DATE_VIEW]->link = "view.php?id=$id&amp;mode=date"; + $data[GLOSSARY_DATE_VIEW]->link = "view.php?id=$id&mode=date"; - $data[GLOSSARY_STANDARD_VIEW]->link = "view.php?id=$id&amp;mode=letter"; - $data[GLOSSARY_CATEGORY_VIEW]->link = "view.php?id=$id&amp;mode=cat"; - $data[GLOSSARY_AUTHOR_VIEW]->link = "view.php?id=$id&amp;mode=author"; + $data[GLOSSARY_STANDARD_VIEW]->link = "view.php?id=$id&mode=letter"; + $data[GLOSSARY_CATEGORY_VIEW]->link = "view.php?id=$id&mode=cat"; + $data[GLOSSARY_AUTHOR_VIEW]->link = "view.php?id=$id&mode=author"; if (isteacher($course->id)) { @@ -43,10 +49,10 @@ $hiddenentries = get_records_select("glossary_entries","glossaryid = $glossary->id and approved = 0"); if ($hiddenentries) { - $data[GLOSSARY_APPROVAL_VIEW]->caption .= " (" . count($hiddenentries) . " " . get_string("entries","glossary") . ")"; - $data[GLOSSARY_APPROVAL_VIEW]->link = "view.php?id=$id&amp;tab=".GLOSSARY_APPROVAL_VIEW; + $data[GLOSSARY_APPROVAL_VIEW]->caption .= "<br><font size=1>(" . count($hiddenentries) . " " . get_string("entries","glossary") . ")</font>"; + $data[GLOSSARY_APPROVAL_VIEW]->link = "view.php?id=$id&tab=".GLOSSARY_APPROVAL_VIEW; - $data[GLOSSARY_APPROVAL_VIEW]->link = "view.php?id=$id&amp;mode=approval"; + $data[GLOSSARY_APPROVAL_VIEW]->link = "view.php?id=$id&mode=approval"; } elseif ( $tab == GLOSSARY_APPROVAL_VIEW ) { $tab = $framebydefault; @@ -56,12 +62,12 @@ } /// printing header of the current tab - glossary_print_tabbed_table_start($data, $tab, 4); + echo '<center>'; + glossary_print_tabbed_table_start($data, $tab, $glossary_tCFG); if (!isset($category)) { $category = ""; } - switch ($tab) { case GLOSSARY_CATEGORY_VIEW: @@ -106,5 +112,5 @@ } break; } - echo '<hr />'; + echo '<hr>'; ?> diff --git a/mod/glossary/version.php b/mod/glossary/version.php index 3d8a300e85e..f19361e7fb6 100644 --- a/mod/glossary/version.php +++ b/mod/glossary/version.php @@ -1,14 +1,14 @@ -<?php // $Id$ +<?PHP // $Id$ ///////////////////////////////////////////////////////////////////////////////// /// Code fragment to define the version of glossary /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2005041101; -$module->requires = 2005031000; // Requires this Moodle version +$module->version = 2004080900; // The current module version (Date: YYYYMMDDXX) +$module->requires = 2004080300; // Requires this Moodle version $module->cron = 0; // Period for cron to check this module (secs) -$release = "1.5 development"; // User-friendly version number +$release = "1.4 development"; // User-friendly version number ?> diff --git a/mod/glossary/view.php b/mod/glossary/view.php index 7d42bc72fe5..42b3e05dfa8 100644 --- a/mod/glossary/view.php +++ b/mod/glossary/view.php @@ -2,45 +2,53 @@ /// This page prints a particular instance of glossary require_once("../../config.php"); require_once("lib.php"); - require_once("$CFG->libdir/rsslib.php"); + require_once("$CFG->dirroot/rss/rsslib.php"); + global $CFG, $THEME, $USER; + $debug = 0; + $CFG->startpagetime = microtime(); + optional_variable($id); // Course Module ID optional_variable($g); // Glossary ID optional_variable($tab,GLOSSARY_NO_VIEW); // browsing entries by categories? - optional_variable($displayformat,-1); // override of the glossary display format + optional_variable($mode,""); // [ "term" | "entry" | "cat" | "date" | + // "letter" | "search" | "author" | "approval" ] + optional_variable($hook,""); // the term, entry, cat, etc... to look for based on mode - $mode = optional_param('mode'); // term entry cat date letter search author approval - $hook = optional_param('hook'); // the term, entry, cat, etc... to look for based on mode - $fullsearch = optional_param('fullsearch',0);// full search (concept and definition) when searching? - $sortkey = optional_param('sortkey'); // Sorted view: CREATION | UPDATE | FIRSTNAME | LASTNAME... - $sortorder = optional_param('sortorder'); // it defines the order of the sorting (ASC or DESC) - $offset = optional_param('offset',0,PARAM_INT); // entries to bypass (for paging purpouses) - $page = optional_param('page',0,PARAM_INT); // Page to show (for paging purpouses) - $show = optional_param('show'); // [ concept | alias ] => mode=term hook=$show + optional_variable($fullsearch,0); // full search (concept and definition) when searching? + + optional_variable($sortkey,""); // Sorted view: + // [ CREATION | UPDATE | FIRSTNAME | LASTNAME | + // concept | timecreated | ... ] + optional_variable($sortorder,""); // it defines the order of the sorting (ASC or DESC) + + optional_variable($offset,0); // entries to bypass (for paging purpouses) + + optional_variable($show,""); // [ concept | alias ] => mode=term hook=$show + optional_variable($displayformat,-1); // override of the glossary display format if (!empty($id)) { if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); - } + } if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); - } + } if (! $glossary = get_record("glossary", "id", $cm->instance)) { error("Course module is incorrect"); - } + } } else if (!empty($g)) { if (! $glossary = get_record("glossary", "id", $g)) { error("Course module is incorrect"); - } + } if (! $course = get_record("course", "id", $glossary->course)) { error("Could not determine which course this belonged to!"); - } + } if (!$cm = get_coursemodule_from_instance("glossary", $glossary->id, $course->id)) { error("Could not determine which course module this belonged to!"); } - $id = $cm->id; } else { error("Must specify glossary ID or course module ID"); } @@ -48,32 +56,27 @@ if ($CFG->forcelogin) { require_login(); } - + /// redirecting if adding a new entry if ($tab == GLOSSARY_ADDENTRY_VIEW ) { - redirect("edit.php?id=$cm->id&amp;mode=$mode"); + redirect("edit.php?id=$cm->id&mode=$mode"); } /// setting the defaut number of entries per page if not set - + if ( !$entriesbypage = $glossary->entbypage ) { $entriesbypage = $CFG->glossary_entbypage; } -/// If we have received a page, recalculate offset - if ($page != 0 && $offset == 0) { - $offset = $page * $entriesbypage; - } - /// setting the default values for the display mode of the current glossary /// only if the glossary is viewed by the first time - if ( $dp = get_record('glossary_formats','name', addslashes($glossary->displayformat)) ) { + if ( $dp = get_record('glossary_formats','name', $glossary->displayformat) ) { $printpivot = $dp->showgroup; if ( $mode == '' and $hook == '' and $show == '') { $mode = $dp->defaultmode; $hook = $dp->defaulthook; $sortkey = $dp->sortkey; - $sortorder = $dp->sortorder; + $sortorder = $dp->sortorder; } } else { $printpivot = 1; @@ -85,7 +88,7 @@ if ( $displayformat == -1 ) { $displayformat = $glossary->displayformat; - } + } if ( $show ) { $mode = 'term'; @@ -99,10 +102,9 @@ require_login($course->id); } if (!$cm->visible and !isteacher($course->id)) { - print_header(); notice(get_string("activityiscurrentlyhidden")); - } - add_to_log($course->id, "glossary", "view", "view.php?id=$cm->id&amp;tab=$tab", $glossary->id, $cm->id); + } + add_to_log($course->id, "glossary", "view", "view.php?id=$cm->id&tab=$tab", $glossary->id, $cm->id); /// stablishing flag variables if ( $sortorder = strtolower($sortorder) ) { @@ -111,9 +113,9 @@ } } if ( $sortkey = strtoupper($sortkey) ) { - if ($sortkey != 'CREATION' and - $sortkey != 'UPDATE' and - $sortkey != 'FIRSTNAME' and + if ($sortkey != 'CREATION' and + $sortkey != 'UPDATE' and + $sortkey != 'FIRSTNAME' and $sortkey != 'LASTNAME' ) { $sortkey = ''; @@ -128,18 +130,18 @@ foreach ($searchterms as $key => $searchterm) { if (strlen($searchterm) < 2) { unset($searchterms[$key]); - } - } + } + } $hook = trim(implode(' ', $searchterms)); break; - + case 'entry': /// Looking for a certain entry id $tab = GLOSSARY_STANDARD_VIEW; if ( $dp = get_record("glossary_formats","name", $glossary->displayformat) ) { $displayformat = $dp->popupformatname; } break; - + case 'cat': /// Looking for a certain cat $tab = GLOSSARY_CATEGORY_VIEW; if ( $hook > 0 ) { @@ -162,20 +164,20 @@ $tab = GLOSSARY_DATE_VIEW; if ( !$sortkey ) { $sortkey = 'UPDATE'; - } + } if ( !$sortorder ) { $sortorder = 'desc'; } break; - + case 'author': /// Looking for entries, browsed by author $tab = GLOSSARY_AUTHOR_VIEW; if ( !$hook ) { $hook = 'ALL'; - } + } if ( !$sortkey ) { $sortkey = 'FIRSTNAME'; - } + } if ( !$sortorder ) { $sortorder = 'asc'; } @@ -185,18 +187,18 @@ default: $tab = GLOSSARY_STANDARD_VIEW; if ( !$hook ) { - $hook = 'ALL'; - } + $hook = 'ALL'; + } break; - } + } switch ( $tab ) { - case GLOSSARY_IMPORT_VIEW: - case GLOSSARY_EXPORT_VIEW: + case GLOSSARY_IMPORT_VIEW: + case GLOSSARY_EXPORT_VIEW: case GLOSSARY_APPROVAL_VIEW: $isuserframe = 0; break; - + default: $isuserframe = 1; break; @@ -211,68 +213,62 @@ $strsearchconcept = get_string("searchconcept", "glossary"); $strsearchindefinition = get_string("searchindefinition", "glossary"); $strsearch = get_string("search"); - - $navigation = "<a href=\"index.php?id=$course->id\">$strglossaries</a> ->"; - - print_header_simple(format_string($glossary->name), "", - "$navigation ".format_string($glossary->name), "", "", true, update_module_button($cm->id, $course->id, $strglossary), navmenu($course, $cm)); + + print_header(strip_tags("$course->shortname: $glossary->name"), "$course->fullname", + "$navigation <A HREF=index.php?id=$course->id>$strglossaries</A> -> $glossary->name", + "", "", true, update_module_button($cm->id, $course->id, $strglossary), + navmenu($course, $cm)); //If rss are activated at site and glossary level and this glossary has rss defined, show link if (isset($CFG->enablerssfeeds) && isset($CFG->glossary_enablerssfeeds) && - $CFG->enablerssfeeds && $CFG->glossary_enablerssfeeds && $glossary->rsstype && $glossary->rssarticles) { + $CFG->enablerssfeeds && $CFG->glossary_enablerssfeeds && $glossary->rsstype and $glossary->rssarticles) { echo '<table width="100%" border="0" cellpadding="3" cellspacing="0"><tr valign="top"><td align="right">'; - $tooltiptext = get_string("rsssubscriberss","glossary",format_string($glossary->name,true)); - if (empty($USER->id)) { - $userid = 0; - } else { - $userid = $USER->id; + $tooltiptext = get_string("rsssubscriberss","glossary",$glossary->name); + if (isset($USER->id)) { + rss_print_link($course->id, $USER->id, "glossary", $glossary->id, $tooltiptext); } - rss_print_link($course->id, $userid, "glossary", $glossary->id, $tooltiptext); echo '</td></tr></table>'; } - - - /// the "Print" icon - $printicon = ''; + + echo '<p align="center"><font size="3"><b>' . stripslashes_safe($glossary->name); if ( $isuserframe and $mode != 'search') { - if (isteacher($course->id) or $glossary->allowprintview) { - $printicon = " <a title =\"". get_string("printerfriendly","glossary") . "\" target=\"printview\" href=\"print.php?id=$cm->id&amp;mode=$mode&amp;hook=$hook&amp;sortkey=$sortkey&amp;sortorder=$sortorder&amp;offset=$offset\"><img border=\"0\" src=\"print.gif\" alt=\"\" /></a>"; - } + /// the "Print" icon + echo " <a title =\"". get_string("printerfriendly","glossary") . "\" target=\"printview\" href=\"print.php?id=$cm->id&mode=$mode&hook=$hook&sortkey=$sortkey&sortorder=$sortorder&offset=$offset\">"; + echo '<img border=0 src="print.gif"/></a>'; } - print_heading(format_string($glossary->name).$printicon); - + echo '</b></font></p>'; /// Info box if ( $glossary->intro ) { - print_simple_box(format_text($glossary->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); + echo '<table align="center" width="70%" bgcolor="#FFFFFF" class="generaltab"><tr><td>'; + echo format_text($glossary->intro); + print_simple_box_end(); } /// Search box - - echo '<form method="post" action="view.php">'; - - echo '<table align="center" width="70%" border="0">'; - echo '<tr><td align="center" class="glossarysearchbox">'; - - echo '<input type="submit" value="'.$strsearch.'" name="searchbutton" /> '; +// echo '<p>'; + echo '<table align="center" width="70%" bgcolor="' . $THEME->cellheading .'" class="generalbox"><tr><td align=center>'; + + echo '<p align="center">'; + echo '<form method="POST" action="view.php">'; + echo '<input type="submit" value="'.$strsearch.'" name="searchbutton"> '; if ($mode == 'search') { - echo '<input type="text" name="hook" size="20" value="'.$hook.'" alt="'.$strsearch.'" /> '; + echo '<input type="text" name="hook" size="20" value="'.$hook.'"> '; } else { - echo '<input type="text" name="hook" size="20" value="" alt="'.$strsearch.'" /> '; + echo '<input type="text" name="hook" size="20" value=""> '; } if ($fullsearch) { $fullsearchchecked = 'checked="checked"'; } else { $fullsearchchecked = ''; } - echo '<input type="checkbox" name="fullsearch" value="1" '.$fullsearchchecked.' alt="'.$strsearchindefinition.'" />'; - echo '<input type="hidden" name="mode" value="search" />'; - echo '<input type="hidden" name="id" value="'.$cm->id.'" />'; + echo '<input type="checkbox" name="fullsearch" value="1" '.$fullsearchchecked.'>'; + echo '<input type="hidden" name="mode" value="search">'; + echo '<input type="hidden" name="id" value="'.$cm->id.'">'; echo $strsearchindefinition; - print_simple_box_end(); - echo '</form>'; - echo '<br />'; + echo '</p>'; + print_simple_box_end(); include("tabs.html"); @@ -283,14 +279,39 @@ $currentpivot = ''; $ratingsmenuused = NULL; $paging = NULL; - + if ( $hook == 'SPECIAL' ) { + $alphabet = explode(",", get_string("alphabet")); + } if ($allentries) { + /// printing the paging links - $paging = glossary_get_paging_bar($count, $page, $entriesbypage, "view.php?id=$id&mode=$mode&hook=$hook&sortkey=$sortkey&sortorder=$sortorder&fullsearch=$fullsearch&",9999,10,'&nbsp;&nbsp;', get_string("allentries","glossary"), -1); - - echo '<div style="font-size: smaller;">'; + $paging = get_string("allentries","glossary"); + if ( $offset < 0 ) { + $paging = '<strong>' . $paging . '</strong>'; + } else { + $paging = "<a href=\"view.php?id=$id&mode=$mode&hook=$hook&offset=-1&sortkey=$sortkey&sortorder=$sortorder&fullsearch=$fullsearch\">" . $paging . '</a>'; + } + if ($count > $entriesbypage ) { + for ($i = 0; ($i*$entriesbypage) < $count ; $i++ ) { + if ( $paging != '' ) { + if ($i % 20 == 0 and $i) { + $paging .= '<br>'; + } else { + $paging .= ' | '; + } + } + $pagenumber = (string) ($i + 1 ); + if ($offset / $entriesbypage == $i) { + $paging .= '<strong>' . $pagenumber . '</strong>'; + } else { + $paging .= "<a href=\"view.php?id=$id&mode=$mode&hook=$hook&offset=" . ($i*$entriesbypage) . "&sortkey=$sortkey&sortorder=$sortorder&fullsearch=$fullsearch\">" . $pagenumber . '</a>'; + } + } + $paging = "<font size=1><center>" . get_string ("jumpto") . " $paging</center></font>"; + } else { + $paging = ''; + } echo $paging; - echo '</div>'; $ratings = NULL; $ratingsmenuused = false; @@ -305,71 +326,116 @@ $ratings->allow = true; } - echo "<form name=\"form\" method=\"post\" action=\"rate.php\">"; - echo "<input type=\"hidden\" name=\"id\" value=\"$course->id\" />"; + echo "<form name=form method=post action=rate.php>"; + echo "<input type=hidden name=id value=\"$course->id\">"; } foreach ($allentries as $entry) { - - /// Setting the pivot for the current entry + /// Setting the pivot for the current entry $pivot = $entry->pivot; if ( !$fullpivot ) { - $pivot = substr($pivot, 0, 1); + $pivot = $pivot[0]; } - /// if there's a group break - if ( $currentpivot != strtoupper($pivot) ) { - - // print the group break if apply - if ( $printpivot ) { - $currentpivot = strtoupper($pivot); - - echo '<div>'; - echo '<table cellspacing="0" class="categoryheader">'; - - echo '<tr>'; - $pivottoshow = $currentpivot; - if ( isset($entry->uid) ) { - // printing the user icon if defined (only when browsing authors) - echo '<td align="left">'; - - $user = get_record("user","id",$entry->uid); - print_user_picture($user->id, $course->id, $user->picture); - $pivottoshow = fullname($user, isteacher($course->id));; - } else { - echo '<td align="center">'; - } - - echo "<strong> $pivottoshow</strong>" ; - echo '</td></tr></table></div>'; + /// + /// Validating special cases not covered by the SQL statement + /// + /// if we're browsing by alphabet and the current concept does not begin with + /// the letter we are look for. + $showentry = 1; + $num = 0; + if ( $mode == 'letter' and $hook != 'SPECIAL' and $hook != 'ALL' ) { + if ( strtoupper(substr($entry->concept, 0, strlen($hook))) != strtoupper($hook) ) { + $showentry = 0; } + } + + /// if we're browsing for letter, looking for special characters not covered + /// in the alphabet + if ( $showentry and $hook == 'SPECIAL' ) { + $initial = $entry->concept[0]; + for ($i = 0; $i < count($alphabet); $i++) { + $curletter = $alphabet[$i]; + if ( $curletter == $initial ) { + + $showentry = 0; + break; + } + } + } + + /// if we're browsing categories, looking for entries not categorised. + if ( $showentry and $mode == 'cat' and $hook == GLOSSARY_SHOW_NOT_CATEGORISED ) { + if ( record_exists("glossary_entries_categories", "entryid", $entry->id)) { + $showentry = 0; + } } - $concept = $entry->concept; - $definition = $entry->definition; - - /// highlight the term if necessary - if ($mode == 'search') { - $entry->highlight = $hook; + /// if the entry is not approved, deal with it based on the current view and + /// user. + if ( $showentry and $mode != 'approval' ) { + if ( !$entry->approved and $USER->id != $entry->userid ) { + $showentry = 0; + } } - /// and finally print the entry. + /// ok, if it's a valid entry.. Print it. + if ( $showentry ) { + + /// if there's a group break + if ( $currentpivot != strtoupper($pivot) ) { - if ( glossary_print_entry($course, $cm, $glossary, $entry, $mode, $hook,1,$displayformat,$ratings) ) { - $ratingsmenuused = true; + // print the group break if apply + if ( $printpivot ) { + $currentpivot = strtoupper($pivot); + + echo '<p>'; + echo '<table width="95%" border="0" class="generaltabselected" bgcolor="' . $THEME->cellheading2 . '">'; + + echo '<tr>'; + $pivottoshow = $currentpivot; + if ( isset($entry->uid) ) { + // printing the user icon if defined (only when browsing authors) + echo '<td align="left">'; + + $user = get_record("user","id",$entry->uid); + print_user_picture($user->id, $course->id, $user->picture); + $pivottoshow = fullname($user, isteacher($course->id));; + } else { + echo '<td align="center">'; + } + + echo "<strong> $pivottoshow</strong>" ; + echo '</td></tr></table>'; + + } + } + + $concept = $entry->concept; + $definition = $entry->definition; + + /// highlight the term if necessary + if ($mode == 'search') { + $entry->highlight = $hook; + } + + /// and finally print the entry. + + if ( glossary_print_entry($course, $cm, $glossary, $entry, $mode, $hook,1,$displayformat,$ratings) ) { + $ratingsmenuused = true; + } + + $entriesshown++; } - - $entriesshown++; } } if ( !$entriesshown ) { print_simple_box('<center>' . get_string("noentries","glossary") . '</center>',"center","95%"); } - if ($ratingsmenuused) { - echo "<center><input type=\"submit\" value=\"".get_string("sendinratings", "glossary")."\" />"; + echo "<p><center><input type=\"submit\" value=\"".get_string("sendinratings", "glossary")."\">"; if ($glossary->scale < 0) { if ($scale = get_record("scale", "id", abs($glossary->scale))) { print_scale_menu_helpbutton($course->id, $scale ); @@ -380,25 +446,21 @@ } if ( $paging ) { - echo '<hr />'; - echo '<div style="font-size: smaller;">'; - echo $paging; - echo '</div>'; + echo "<hr />$paging"; } - echo '<br />'; + echo '<p>'; echo '</center>'; glossary_print_tabbed_table_end(); - if ( !empty($debug) and isadmin() ) { + if ( $debug and isadmin() ) { echo '<p>'; - print_simple_box("$sqlselect<br /> $sqlfrom<br /> $sqlwhere<br /> $sqlorderby<br /> $sqllimit","center","85%"); + print_simple_box("$sqlselect<br> $sqlfrom<br> $sqlwhere<br> $sqlorderby<br> $sqllimit","center","85%"); - echo "<p align=\"right\"><font size=\"-3\">"; + echo "<p align=right><font size=-3>"; echo microtime_diff($CFG->startpagetime, microtime()); echo "</font></p>"; } /// Finish the page - print_footer($course); ?> diff --git a/mod/index.html b/mod/index.html deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/mod/journal/backuplib.php b/mod/journal/backuplib.php index 928b7f4af9f..bdc85c4a10b 100644 --- a/mod/journal/backuplib.php +++ b/mod/journal/backuplib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //journal mods diff --git a/mod/journal/db/mysql.php b/mod/journal/db/mysql.php index fd03952fa01..836c9b8eeb9 100644 --- a/mod/journal/db/mysql.php +++ b/mod/journal/db/mysql.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function journal_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -47,28 +47,7 @@ function journal_upgrade($oldversion) { table_column("journal", "", "introformat", "integer", "2", "", "1", "not null", "intro"); } - if ($oldversion < 2004111200) { - execute_sql("ALTER TABLE {$CFG->prefix}journal DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}journal_entries DROP INDEX journal;",false); - execute_sql("ALTER TABLE {$CFG->prefix}journal_entries DROP INDEX userid;",false); - - modify_database('','ALTER TABLE prefix_journal ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_journal_entries ADD INDEX journal (journal);'); - modify_database('','ALTER TABLE prefix_journal_entries ADD INDEX userid (userid);'); - } - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - // journal intro - $wtm->update( 'journal','intro','introformat' ); - // journal entries - $sql = "select course from {$CFG->prefix}journal, {$CFG->prefix}journal_entries "; - $sql .= "where {$CFG->prefix}journal.id = {$CFG->prefix}journal_entries.journal "; - $sql .= "and {$CFG->prefix}journal_entries.id = "; - $wtm->update( 'journal_entries', 'text', 'format', $sql ); - } - return $result; } diff --git a/mod/journal/db/mysql.sql b/mod/journal/db/mysql.sql index 09af26dbd56..e1c259aa4f2 100755 --- a/mod/journal/db/mysql.sql +++ b/mod/journal/db/mysql.sql @@ -23,8 +23,7 @@ CREATE TABLE prefix_journal ( days smallint(5) unsigned NOT NULL default '7', assessed int(10) NOT NULL default '0', timemodified int(10) unsigned NOT NULL default '0', - PRIMARY KEY (id), - KEY course (course) + PRIMARY KEY (id) ) TYPE=MyISAM; # -------------------------------------------------------- @@ -44,9 +43,7 @@ CREATE TABLE prefix_journal_entries ( teacher int(10) unsigned NOT NULL default '0', timemarked int(10) unsigned NOT NULL default '0', mailed int(1) unsigned NOT NULL default '0', - PRIMARY KEY (id), - KEY journal (journal), - KEY userid (userid) + PRIMARY KEY (id) ) TYPE=MyISAM COMMENT='All the journal entries of all people'; # diff --git a/mod/journal/db/oci8po.php b/mod/journal/db/oci8po.php index f5be3021c72..5913191938f 100755 --- a/mod/journal/db/oci8po.php +++ b/mod/journal/db/oci8po.php @@ -1,24 +1,12 @@ -<?php - - - -function journal_upgrade($oldversion) { - -/// This function does anything necessary to upgrade - -/// older versions to match current functionality - - - - global $CFG; - - return true; - -} - - - -?> - - - +<?PHP + +function journal_upgrade($oldversion) { +/// This function does anything necessary to upgrade +/// older versions to match current functionality + + global $CFG; + return true; +} + +?> + diff --git a/mod/journal/db/postgres7.php b/mod/journal/db/postgres7.php index 11fda37df42..acdaaa39e3d 100644 --- a/mod/journal/db/postgres7.php +++ b/mod/journal/db/postgres7.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function journal_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -30,27 +30,6 @@ function journal_upgrade($oldversion) { table_column("journal", "", "introformat", "integer", "2", "", "1", "not null", "intro"); } - if ($oldversion < 2004111200) { - execute_sql("DROP INDEX {$CFG->prefix}journal_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}journal_entries_journal_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}journal_entries_userid_idx;",false); - - modify_database('','CREATE INDEX prefix_journal_course_idx ON prefix_journal (course);'); - modify_database('','CREATE INDEX prefix_journal_entries_journal_idx ON prefix_journal_entries (journal);'); - modify_database('','CREATE INDEX prefix_journal_entries_userid_idx ON prefix_journal_entries (userid);'); - } - - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - // journal intro - $wtm->update( 'journal','intro','introformat' ); - // journal entries - $sql = "select course from {$CFG->prefix}journal, {$CFG->prefix}journal_entries "; - $sql .= "where {$CFG->prefix}journal.id = {$CFG->prefix}journal_entries.journal "; - $sql .= "and {$CFG->prefix}journal_entries.id = "; - $wtm->update( 'journal_entries', 'text', 'format', $sql ); - } return $result; } diff --git a/mod/journal/db/postgres7.sql b/mod/journal/db/postgres7.sql index b740ff7a3c3..8b5dbecc6b0 100755 --- a/mod/journal/db/postgres7.sql +++ b/mod/journal/db/postgres7.sql @@ -24,9 +24,6 @@ CREATE TABLE prefix_journal ( assessed integer NOT NULL default '0', timemodified integer NOT NULL default '0' ); - -CREATE INDEX prefix_journal_course_idx ON prefix_journal (course); - # -------------------------------------------------------- # @@ -47,9 +44,6 @@ CREATE TABLE prefix_journal_entries ( mailed integer NOT NULL default '0' ); -CREATE INDEX prefix_journal_entries_journal_idx ON prefix_journal_entries (journal); -CREATE INDEX prefix_journal_entries_userid_idx ON prefix_journal_entries (userid); - # # Dumping data for table `log_display` # diff --git a/mod/journal/edit.html b/mod/journal/edit.html index 84561c3d286..60f870dde6b 100644 --- a/mod/journal/edit.html +++ b/mod/journal/edit.html @@ -1,34 +1,38 @@ <form name="theform" method="post" action="edit.php"> -<table cellpadding="10" cellspacing="0" class="generalbox"> - <tr><td align="right" bgcolor="<?php echo $THEME->cellheading2 ?>"> - <?php - helpbutton('reading', get_string('helpreading'), 'moodle', true, true); - echo '<br />'; - helpbutton('writing', get_string('helpwriting'), 'moodle', true, true); - echo '<br />'; +<table cellpadding=10 cellspacing=0 class=generalbox> + <tr><td align=right bgcolor="<?php echo $THEME->cellheading2 ?>"> + <font size="1"> + <?PHP + helpbutton("reading", get_string("helpreading"), "moodle", true, true); + echo "<br />"; + helpbutton("writing", get_string("helpwriting"), "moodle", true, true); + echo "<br />"; if ($usehtmleditor) { - helpbutton('richtext', get_string('helprichtext'), 'moodle', true, true); + helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); } else { - emoticonhelpbutton('theform', 'text'); + emoticonhelpbutton("theform", "text"); } - echo '<br />'; ?> + <br /> + </font> </td></tr> -<tr><td align="center" bgcolor="<?php echo $THEME->cellheading2 ?>"> +<tr><td align=center bgcolor="<?php echo $THEME->cellheading2 ?>"> <?php print_textarea($usehtmleditor, 20, 60, 630, 400, "text", $entry->text); ?> </td></tr> -<tr><td align="center" bgcolor="<?php echo $THEME->cellheading2 ?>"> +<tr><td align=center bgcolor="<?php echo $THEME->cellheading2 ?>"> <?php - print_string('formattexttype'); - echo ':&nbsp;'; - choose_from_menu(format_text_menu(), 'format', $entry->format, ''); - helpbutton('textformat', get_string('helpformatting')); + print_string("formattexttype"); + echo ":&nbsp;"; + choose_from_menu(format_text_menu(), "format", $entry->format, ""); + echo "<font size=\"1\">"; + helpbutton("textformat", get_string("helpformatting")); + echo "</font>"; ?> </td></tr> -<tr><td align="center" bgcolor="<?php echo $THEME->cellheading2 ?>" class="generalboxcontent"> -<input type="hidden" name="id" value="<?php echo $cm->id ?>" /> -<input type="submit" value="<?php print_string('savechanges') ?>" /> -<input type="reset" value="<?php print_string('revert') ?>" /> +<tr><td align=center bgcolor="<?php echo $THEME->cellheading2 ?>" class=generalboxcontent> +<input type="hidden" name=id value="<?php echo $cm->id ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> +<input type="reset" value="<?php print_string("revert") ?>"> </td></tr></table> </form> diff --git a/mod/journal/edit.php b/mod/journal/edit.php index 410a5a59b40..95cf1f0f539 100644 --- a/mod/journal/edit.php +++ b/mod/journal/edit.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); @@ -12,7 +12,7 @@ error("Course is misconfigured"); } - require_login($course->id, false, $cm); + require_login($course->id); if (isguest()) { error("Guests are not allowed to edit journals", $_SERVER["HTTP_REFERER"]); @@ -52,8 +52,8 @@ error("Could not insert a new journal entry"); } add_to_log($course->id, "journal", "add entry", "view.php?id=$cm->id", "$newentry->id", $cm->id); - } - + } + redirect("view.php?id=$cm->id"); die; } @@ -69,15 +69,15 @@ } else { $defaultformat = FORMAT_MOODLE; } - + if (empty($entry)) { $entry->text = ""; $entry->format = $defaultformat; } - print_header_simple(format_string($journal->name), "", - "<a href=\"index.php?id=$course->id\">$strjournals</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($journal->name,true)."</a> -> $stredit", "", + print_header_simple("$journal->name", "", + "<A HREF=\"index.php?id=$course->id\">$strjournals</A> -> + <A HREF=\"view.php?id=$cm->id\">$journal->name</A> -> $stredit", "", "", true, "", navmenu($course, $cm)); echo "<center>\n"; diff --git a/mod/journal/index.php b/mod/journal/index.php index 60329fb8cfd..a395d65a93e 100644 --- a/mod/journal/index.php +++ b/mod/journal/index.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); diff --git a/mod/journal/lib.php b/mod/journal/lib.php index 8ea48759291..073c75091c7 100644 --- a/mod/journal/lib.php +++ b/mod/journal/lib.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ if (!isset($CFG->journal_showrecentactivity)) { @@ -28,7 +28,7 @@ function journal_user_complete($course, $user, $mod, $journal) { print_simple_box_start(); if ($entry->modified) { - echo "<p><font size=\"1\">".get_string("lastedited").": ".userdate($entry->modified)."</font></p>"; + echo "<P><FONT SIZE=1>".get_string("lastedited").": ".userdate($entry->modified)."</FONT></P>"; } if ($entry->text) { echo format_text($entry->text, $entry->format); @@ -55,7 +55,7 @@ function journal_user_complete_index($course, $user, $journal, $journalopen, $he $entryinfo = ""; } - $journal->name = "<a href=\"view.php?id=$journal->coursemodule\">".format_string($journal->name,true)."</a>"; + $journal->name = "<a href=\"view.php?id=$journal->coursemodule\">$journal->name</a>"; if ($heading) { echo "<h3>$heading - $journal->name$entryinfo</h3>"; @@ -66,7 +66,7 @@ function journal_user_complete_index($course, $user, $journal, $journalopen, $he print_simple_box_start("left", "90%"); echo format_text($journal->intro, $journal->introformat); print_simple_box_end(); - echo "<br clear=\"all\" />"; + echo "<br clear=all />"; echo "<br />"; if (isstudent($course->id) or isteacher($course->id)) { @@ -74,16 +74,16 @@ function journal_user_complete_index($course, $user, $journal, $journalopen, $he print_simple_box_start("right", "90%"); if ($journalopen) { - echo "<p align=\"right\"><a href=\"edit.php?id=$journal->coursemodule\">"; + echo "<p align=right><a href=\"edit.php?id=$journal->coursemodule\">"; echo get_string("edit")."</a></p>"; } else { - echo "<p align=\"right\"><a href=\"view.php?id=$journal->coursemodule\">"; + echo "<p align=right><a href=\"view.php?id=$journal->coursemodule\">"; echo get_string("view")."</a></p>"; } if ($entry = get_record("journal_entries", "userid", $user->id, "journal", $journal->id)) { if ($entry->modified) { - echo "<p align=\"center\"><font size=\"1\">".get_string("lastedited").": ".userdate($entry->modified)."</font></p>"; + echo "<p align=\"center\"><font size=1>".get_string("lastedited").": ".userdate($entry->modified)."</font></p>"; } if ($entry->text) { echo format_text($entry->text, $entry->format); @@ -97,7 +97,7 @@ function journal_user_complete_index($course, $user, $journal, $journalopen, $he } print_simple_box_end(); - echo "<br clear=\"all\" />"; + echo "<br clear=all />"; echo "<br />"; } @@ -148,24 +148,22 @@ function journal_cron () { unset($journalinfo); $journalinfo->teacher = fullname($teacher); - $journalinfo->journal = format_string($entry->name,true); + $journalinfo->journal = "$entry->name"; $journalinfo->url = "$CFG->wwwroot/mod/journal/view.php?id=$mod->id"; - $modnamepl = get_string( 'modulenameplural','journal' ); - $msubject = get_string( 'mailsubject','journal' ); - $postsubject = "$course->shortname: $msubject: ".format_string($entry->name,true); - $posttext = "$course->shortname -> $modnamepl -> ".format_string($entry->name,true)."\n"; + $postsubject = "$course->shortname: Journal feedback: $entry->name"; + $posttext = "$course->shortname -> Journals -> $entry->name\n"; $posttext .= "---------------------------------------------------------------------\n"; - $posttext .= get_string("journalmail", "journal", $journalinfo)."\n"; + $posttext .= get_string("journalmail", "journal", $journalinfo); $posttext .= "---------------------------------------------------------------------\n"; if ($user->mailformat == 1) { // HTML $posthtml = "<p><font face=\"sans-serif\">". "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ->". "<a href=\"$CFG->wwwroot/mod/journal/index.php?id=$course->id\">journals</a> ->". - "<a href=\"$CFG->wwwroot/mod/journal/view.php?id=$mod->id\">".format_string($entry->name,true)."</a></font></p>"; - $posthtml .= "<hr /><font face=\"sans-serif\">"; + "<a href=\"$CFG->wwwroot/mod/journal/view.php?id=$mod->id\">$entry->name</a></font></p>"; + $posthtml .= "<hr><font face=\"sans-serif\">"; $posthtml .= "<p>".get_string("journalmailhtml", "journal", $journalinfo)."</p>"; - $posthtml .= "</font><hr />"; + $posthtml .= "</font><hr>"; } else { $posthtml = ""; } @@ -185,17 +183,17 @@ function journal_cron () { function journal_print_recent_activity($course, $isteacher, $timestart) { global $CFG; - if (!empty($CFG->journal_showrecentactivity)) { // Don't even bother + if (empty($CFG->journal_showrecentactivity)) { // Don't even bother return false; } $content = false; $journals = NULL; - if (!$logs = get_records_select('log', 'time > \''.$timestart.'\' AND '. - 'course = \''.$course->id.'\' AND '. - 'module = \'journal\' AND '. - '(action = \'add entry\' OR action = \'update entry\')', 'time ASC')){ + if (!$logs = get_records_select("log", "time > '$timestart' AND ". + "course = '$course->id' AND ". + "module = 'journal' AND ". + "(action = 'add entry' OR action = 'update entry')", "time ASC")){ return false; } @@ -214,17 +212,21 @@ function journal_print_recent_activity($course, $isteacher, $timestart) { if (!isset($journals[$log->info])) { $journals[$log->info] = $j_log_info; $journals[$log->info]->time = $log->time; - $journals[$log->info]->url = str_replace('&', '&amp;', $log->url); + $journals[$log->info]->url = $log->url; } } } if ($journals) { $content = true; - print_headline(get_string('newjournalentries', 'journal').':'); + $strftimerecent = get_string("strftimerecent"); + print_headline(get_string("newjournalentries", "journal").":"); foreach ($journals as $journal) { - print_recent_activity_note($journal->time, $journal, $isteacher, $journal->name, - $CFG->wwwroot.'/mod/journal/'.$journal->url); + $date = userdate($journal->time, $strftimerecent); + echo "<p><font size=1>$date - ".fullname($journal)."<br />"; + echo "\"<a href=\"$CFG->wwwroot/mod/journal/$journal->url\">"; + echo "$journal->name"; + echo "</a>\"</font></p>"; } } @@ -271,13 +273,13 @@ function journal_get_participants($journalid) { global $CFG; //Get students - $students = get_records_sql("SELECT DISTINCT u.id, u.id + $students = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}journal_entries j WHERE j.journal = '$journalid' and u.id = j.userid"); //Get teachers - $teachers = get_records_sql("SELECT DISTINCT u.id, u.id + $teachers = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}journal_entries j WHERE j.journal = '$journalid' and @@ -314,7 +316,8 @@ function journal_get_users_done($journal) { // make sure it works on the site course $select = "s.course = '$journal->course' AND"; - if ($journal->course == SITEID) { + $site = get_site(); + if ($journal->course == $site->id) { $select = ''; } @@ -366,7 +369,8 @@ function journal_count_entries($journal, $groupid=0) { // make sure it works on the site course $select = "s.course = '$journal->course' AND"; - if ($journal->course == SITEID) { + $site = get_site(); + if ($journal->course == $site->id) { $select = ''; } @@ -426,44 +430,44 @@ function journal_print_user_entry($course, $user, $entry, $teachers, $grades) { $colour = $THEME->cellheading; } - echo "\n<table border=\"1\" cellspacing=\"0\" valign=\"top\" cellpadding=\"10\">"; + echo "\n<TABLE BORDER=1 CELLSPACING=0 valign=top cellpadding=10>"; - echo "\n<tr>"; - echo "\n<td rowspan=\"2\" bgcolor=\"$THEME->body\" width=\"35\" valign=\"top\">"; + echo "\n<TR>"; + echo "\n<TD ROWSPAN=2 BGCOLOR=\"$THEME->body\" WIDTH=35 VALIGN=TOP>"; print_user_picture($user->id, $course->id, $user->picture); - echo "</td>"; - echo "<td nowrap=\"nowrap\" width=\"100%\" bgcolor=\"$colour\">".fullname($user); + echo "</TD>"; + echo "<TD NOWRAP WIDTH=100% BGCOLOR=\"$colour\">".fullname($user); if ($entry) { - echo "&nbsp;&nbsp;<font size=\"1\">".get_string("lastedited").": ".userdate($entry->modified)."</font>"; + echo "&nbsp;&nbsp;<FONT SIZE=1>".get_string("lastedited").": ".userdate($entry->modified)."</FONT>"; } - echo "</tr>"; + echo "</TR>"; - echo "\n<tr><td width=\"100%\" bgcolor=\"$THEME->cellcontent\">"; + echo "\n<TR><TD WIDTH=100% BGCOLOR=\"$THEME->cellcontent\">"; if ($entry) { echo format_text($entry->text, $entry->format); } else { print_string("noentry", "journal"); } - echo "</td></tr>"; + echo "</TD></TR>"; if ($entry) { - echo "\n<tr>"; - echo "<td width=\"35\" valign=\"top\">"; + echo "\n<TR>"; + echo "<TD WIDTH=35 VALIGN=TOP>"; if (!$entry->teacher) { $entry->teacher = $USER->id; } print_user_picture($entry->teacher, $course->id, $teachers[$entry->teacher]->picture); - echo "<td bgcolor=\"$colour\">".get_string("feedback").":"; + echo "<TD BGCOLOR=\"$colour\">".get_string("feedback").":"; choose_from_menu($grades, "r$entry->id", $entry->rating, get_string("nograde")."..."); if ($entry->timemarked) { - echo "&nbsp;&nbsp;<font size=\"1\">".userdate($entry->timemarked)."</font>"; + echo "&nbsp;&nbsp;<FONT SIZE=1>".userdate($entry->timemarked)."</FONT>"; } - echo "<br /><textarea name=\"c$entry->id\" rows=\"12\" cols=\"60\" wrap=\"virtual\">"; + echo "<BR><TEXTAREA NAME=\"c$entry->id\" ROWS=12 COLS=60 WRAP=virtual>"; p($entry->comment); - echo "</textarea><br />"; - echo "</td></tr>"; + echo "</TEXTAREA><BR>"; + echo "</TD></TR>"; } - echo "</table><br clear=\"all\" />\n"; + echo "</TABLE><BR CLEAR=ALL>\n"; } @@ -518,37 +522,35 @@ function journal_delete_instance($id) { function journal_print_feedback($course, $entry, $grades) { global $CFG, $THEME; - if (! $teacher = get_record('user', 'id', $entry->teacher)) { - error('Weird journal error'); + if (! $teacher = get_record("user", "id", $entry->teacher)) { + error("Weird journal error"); } - echo '<table cellspacing="0" align="center" class="feedbackbox">'; + echo "\n<TABLE BORDER=0 CELLPADDING=1 CELLSPACING=1 ALIGN=CENTER><TR><TD BGCOLOR=#888888>"; + echo "\n<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=0 VALIGN=TOP>"; - echo '<tr>'; - echo '<td class="left picture">'; + echo "\n<TR>"; + echo "\n<TD ROWSPAN=3 BGCOLOR=\"$THEME->body\" WIDTH=35 VALIGN=TOP>"; print_user_picture($teacher->id, $course->id, $teacher->picture); - echo '</td>'; - echo '<td class="entryheader">'; - echo '<span class="author">'.fullname($teacher).'</span>'; - echo '&nbsp;&nbsp;<span class="time">'.userdate($entry->timemarked).'</span>'; - echo '</tr>'; + echo "</TD>"; + echo "<TD NOWRAP WIDTH=100% BGCOLOR=\"$THEME->cellheading\">".fullname($teacher); + echo "&nbsp;&nbsp;<FONT SIZE=2><I>".userdate($entry->timemarked)."</I>"; + echo "</TR>"; - echo '<tr>'; - echo '<td class="left side">&nbsp;</td>'; - echo '<td class="entrycontent">'; + echo "\n<TR><TD WIDTH=100% BGCOLOR=\"$THEME->cellcontent\">"; - echo '<div class="grade">'; - - if (!empty($entry->rating) and !empty($grades[$entry->rating])) { - echo get_string('grade').': '; + echo "<P ALIGN=RIGHT><FONT SIZE=-1><I>"; + if ($grades[$entry->rating]) { + echo get_string("grade").": "; echo $grades[$entry->rating]; } else { - print_string('nograde'); + print_string("nograde"); } - echo '</div>'; + echo "</I></FONT></P>"; echo format_text($entry->comment); - echo '</td></tr></table>'; + echo "</TD></TR></TABLE>"; + echo "</TD></TR></TABLE>"; } ?> diff --git a/mod/journal/mod.html b/mod/journal/mod.html index 270e098b838..48e1c61c2dd 100644 --- a/mod/journal/mod.html +++ b/mod/journal/mod.html @@ -1,62 +1,63 @@ <?php if (!isset($form->name)) { - $form->name = ''; + $form->name = ""; } if (!isset($form->intro)) { - $form->intro = ''; + $form->intro = ""; } if (!isset($form->assessed)) { - $form->assessed = '0'; + $form->assessed = "0"; } if (!isset($form->days)) { - if ($course->format == 'weeks') { - $form->days = '7'; + if ($course->format == "weeks") { + $form->days = "7"; } else { - $form->days = '0'; + $form->days = "0"; } } ?> <form name="form" method="post" action="mod.php"> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><strong><?php print_string('journalname', 'journal') ?>:</strong></td> +<table cellpadding=5> +<tr valign=top> + <td align=right><p><b><?php print_string("journalname", "journal") ?>:</b></p></td> <td> - <input type="text" name="name" size="30" value="<?php p($form->name) ?>" alt="<?php print_string('journalname', 'journal') ?>"/> + <input type="text" name="name" size=30 value="<?php p($form->name) ?>"> </td> </tr> -<tr valign="top"> - <td align="right"><strong><?php print_string('journalquestion', 'journal') ?>:</strong> +<tr valign=top> + <td align=right><p><b><?php print_string("journalquestion", "journal") ?>:</b></p> + <font size="1"> <?php - echo '<br />'; - helpbutton('writing', get_string('helpwriting'), 'moodle', true, true); - echo '<br />'; - helpbutton('questions', get_string('helpquestions'), 'moodle', true, true); - echo '<br />'; + helpbutton("writing", get_string("helpwriting"), "moodle", true, true); + echo "<br />"; + helpbutton("questions", get_string("helpquestions"), "moodle", true, true); + echo "<br />"; if ($usehtmleditor) { - helpbutton('richtext', get_string('helprichtext'), 'moodle', true, true); + helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); } else { - emoticonhelpbutton('form', 'intro'); + emoticonhelpbutton("form", "intro"); } - echo '<br />'; ?> + <br /> + </font> </td> <td> <?php - print_textarea($usehtmleditor, 20, 60, 680, 400, 'intro', $form->intro); + print_textarea($usehtmleditor, 20, 60, 680, 400, "intro", $form->intro); if ($usehtmleditor) { echo '<input type="hidden" name="format" value="'.FORMAT_HTML.'" />'; } else { - echo '<p align="right">'; - helpbutton('textformat', get_string('formattexttype')); - print_string('formattexttype'); - echo ':&nbsp;'; + echo "<p align=right>"; + helpbutton("textformat", get_string("formattexttype")); + print_string("formattexttype"); + echo ":&nbsp;"; if (!$form->introformat) { $form->introformat = $defaultformat; } - choose_from_menu(format_text_menu(), 'introformat', $form->introformat, ''); + choose_from_menu(format_text_menu(), "introformat", $form->introformat, ""); echo "</p>"; } ?> @@ -64,44 +65,43 @@ </tr> -<tr valign="top"> - <td align="right"><strong><?php print_string('grade') ?>:</strong></td> +<tr valign=top> + <td align=right><p><b><?php print_string("grade") ?>:</b></p></td> <td> <?php - print_grade_menu($course->id, 'assessed', "$form->assessed"); + print_grade_menu($course->id, "assessed", "$form->assessed"); ?> </td> </tr> -<tr valign="top"> - <td align="right"><strong><?php print_string('daysavailable', 'journal') ?>:</strong></td> +<tr valign=top> + <td align=right><p><b><?php print_string("daysavailable", "journal") ?>:</b></p></td> <td> <?php $options = array(); - $options[0] = get_string('alwaysopen', 'journal'); + $options[0] = get_string("alwaysopen", "journal"); for ($i=1;$i<=13;$i++) { - $options[$i] = get_string('numdays', '', $i); + $options[$i] = get_string("numdays", "", $i); } for ($i=2;$i<=16;$i++) { $days = $i * 7; - $options[$days] = get_string('numweeks', '', $i); + $options[$days] = get_string("numweeks", "", $i); } - $options[365] = get_string('numweeks', '', 52); - choose_from_menu($options, 'days', "$form->days"); + $options[365] = get_string("numweeks", "", 52); + choose_from_menu($options, "days", "$form->days"); ?> </td> </tr> -<?php print_standard_coursemodule_settings($form); ?> + </table> <center> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string('savechanges') ?>" /> -<input type="submit" name="cancel" value="<?php print_string('cancel') ?>" /> -</center> +<input type="hidden" name=course value="<?php p($form->course) ?>"> +<input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name=section value="<?php p($form->section) ?>"> +<input type="hidden" name=module value="<?php p($form->module) ?>"> +<input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<input type="hidden" name=instance value="<?php p($form->instance) ?>"> +<input type="hidden" name=mode value="<?php p($form->mode) ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> +<input type="submit" name=cancel value="<?php print_string("cancel") ?>"> </form> +</center> diff --git a/mod/journal/report.php b/mod/journal/report.php index e3bfaf182fa..0e5922a8a0e 100644 --- a/mod/journal/report.php +++ b/mod/journal/report.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); @@ -13,7 +13,7 @@ error("Course module is misconfigured"); } - require_login($course->id, false); + require_login($course->id); if (!isteacher($course->id)) { error("Only teachers can look at this page"); @@ -29,7 +29,7 @@ $entrybyuser[$ee->userid] = $ee; $entrybyentry[$ee->id] = $ee; } - + } else { $entrybyuser = array () ; $entrybyentry = array () ; @@ -40,7 +40,7 @@ print_header_simple("$strjournals", "", "<a href=\"index.php?id=$course->id\">$strjournals</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($journal->name,true)."</a> -> $strentries", "", "", true); + <a href=\"view.php?id=$cm->id\">$journal->name</a> -> $strentries", "", "", true); /// Check to see if groups are being used in this journal @@ -52,7 +52,7 @@ /// Process incoming data if there is any if ($data = data_submitted()) { - + $feedback = array(); $data = (array)$data; @@ -60,7 +60,7 @@ foreach ($data as $key => $val) { if ($key <> "id") { $type = substr($key,0,1); - $num = substr($key,1); + $num = substr($key,1); $feedback[$num][$type] = $val; } } @@ -70,9 +70,9 @@ foreach ($feedback as $num => $vals) { $entry = $entrybyentry[$num]; // Only update entries where feedback has actually changed. - if (($vals['r'] <> $entry->rating) || ($vals['c'] <> addslashes($entry->comment))) { - $newentry->rating = $vals['r']; - $newentry->comment = $vals['c']; + if (($vals[r] <> $entry->rating) || ($vals[c] <> addslashes($entry->comment))) { + $newentry->rating = $vals[r]; + $newentry->comment = $vals[c]; $newentry->teacher = $USER->id; $newentry->timemarked = $timenow; $newentry->mailed = 0; // Make sure mail goes out (again, even) @@ -82,8 +82,8 @@ } else { $count++; } - $entrybyuser[$entry->userid]->rating = $vals['r']; - $entrybyuser[$entry->userid]->comment = $vals['c']; + $entrybyuser[$entry->userid]->rating = $vals[r]; + $entrybyuser[$entry->userid]->comment = $vals[c]; $entrybyuser[$entry->userid]->teacher = $USER->id; $entrybyuser[$entry->userid]->timemarked = $timenow; } @@ -134,14 +134,14 @@ if ($allowedtograde) { echo "<center>"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />"; - echo "<input type=\"submit\" value=\"".get_string("saveallfeedback", "journal")."\" />"; + echo "<input type=hidden name=id value=\"$cm->id\">"; + echo "<input type=submit value=\"".get_string("saveallfeedback", "journal")."\">"; echo "</center>"; echo "</form>"; } } - + print_footer($course); - + ?> diff --git a/mod/journal/restorelib.php b/mod/journal/restorelib.php index fbf783b2243..e642d10721b 100644 --- a/mod/journal/restorelib.php +++ b/mod/journal/restorelib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //journal mods @@ -59,7 +59,7 @@ $newid = insert_record ("journal",$journal); //Do some output - echo "<li>".get_string("modulename","journal")." \"".format_string(stripslashes($journal->name),true)."\"</li>"; + echo "<ul><li>".get_string("modulename","journal")." \"".$journal->name."\"<br>"; backup_flush(300); if ($newid) { @@ -74,6 +74,10 @@ } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -134,7 +138,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -151,79 +155,6 @@ return $status; } - //This function converts texts in FORMAT_WIKI to FORMAT_MARKDOWN for - //some texts in the module - function journal_restore_wiki2markdown ($restore) { - - global $CFG; - - $status = true; - - //Convert journal_entries->text - if ($records = get_records_sql ("SELECT e.id, e.text, e.format - FROM {$CFG->prefix}journal_entries e, - {$CFG->prefix}journal j, - {$CFG->prefix}backup_ids b - WHERE j.id = e.journal AND - j.course = $restore->course_id AND - e.format = ".FORMAT_WIKI. " AND - b.backup_code = $restore->backup_unique_code AND - b.table_name = 'journal_entries' AND - b.new_id = e.id")) { - foreach ($records as $record) { - //Rebuild wiki links - $record->text = restore_decode_wiki_content($record->text, $restore); - //Convert to Markdown - $wtm = new WikiToMarkdown(); - $record->text = $wtm->convert($record->text, $restore->course_id); - $record->format = FORMAT_MARKDOWN; - $status = update_record('journal_entries', addslashes_object($record)); - //Do some output - $i++; - if (($i+1) % 1 == 0) { - echo "."; - if (($i+1) % 20 == 0) { - echo "<br />"; - } - backup_flush(300); - } - } - - } - - //Convert journal->intro - if ($records = get_records_sql ("SELECT j.id, j.intro, j.introformat - FROM {$CFG->prefix}journal j, - {$CFG->prefix}backup_ids b - WHERE j.course = $restore->course_id AND - j.introformat = ".FORMAT_WIKI. " AND - b.backup_code = $restore->backup_unique_code AND - b.table_name = 'journal' AND - b.new_id = j.id")) { - foreach ($records as $record) { - //Rebuild wiki links - $record->intro = restore_decode_wiki_content($record->intro, $restore); - //Convert to Markdown - $wtm = new WikiToMarkdown(); - $record->intro = $wtm->convert($record->intro, $restore->course_id); - $record->introformat = FORMAT_MARKDOWN; - $status = update_record('journal', addslashes_object($record)); - //Do some output - $i++; - if (($i+1) % 1 == 0) { - echo "."; - if (($i+1) % 20 == 0) { - echo "<br />"; - } - backup_flush(300); - } - } - - } - - return $status; - } - //This function returns a log record with all the necessay transformations //done. It's used by restore_log_module() to restore modules log. function journal_restore_logs($restore,$log) { @@ -309,7 +240,7 @@ $status = true; break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored<br />"; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>"; //Debug break; } diff --git a/mod/journal/version.php b/mod/journal/version.php index e85d4d8164c..a4c4a2b8bca 100644 --- a/mod/journal/version.php +++ b/mod/journal/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////////// // Code fragment to define the module version etc. // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2005041100; -$module->requires = 2005031000; // Requires this Moodle version +$module->version = 2004060400; +$module->requires = 2004052501; // Requires this Moodle version $module->cron = 60; ?> diff --git a/mod/journal/view.php b/mod/journal/view.php index d9308697582..040b3540479 100644 --- a/mod/journal/view.php +++ b/mod/journal/view.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); @@ -13,7 +13,7 @@ error("Course is misconfigured"); } - require_login($course->id, true, $cm); + require_login($course->id); if (! $journal = get_record("journal", "id", $cm->instance)) { error("Course module is incorrect"); @@ -28,8 +28,8 @@ $strjournal = get_string("modulename", "journal"); $strjournals = get_string("modulenameplural", "journal"); - print_header_simple(format_string($journal->name), '', - "<a href=\"index.php?id=$course->id\">$strjournals</a> -> ".format_string($journal->name), '', '', true, + print_header_simple("$journal->name", "", + "<A HREF=index.php?id=$course->id>$strjournals</A> -> $journal->name", "", "", true, update_module_button($cm->id, $course->id, $strjournal), navmenu($course, $cm)); if (isteacher($course->id)) { @@ -42,24 +42,26 @@ } $entrycount = journal_count_entries($journal, $currentgroup); - echo '<div class="reportlink"><a href="report.php?id='.$cm->id.'">'. - get_string('viewallentries','journal', $entrycount)."</a>$groupname</div>"; + echo "<p align=right><a href=\"report.php?id=$cm->id\">". + get_string("viewallentries","journal", $entrycount)."</a>$groupname</p>"; } else if (!$cm->visible) { - notice(get_string('activityiscurrentlyhidden')); + notice(get_string("activityiscurrentlyhidden")); } + echo "<center>\n"; + $journal->intro = trim($journal->intro); if (!empty($journal->intro)) { - print_simple_box( format_text($journal->intro, $journal->introformat), 'center', '70%', '', 5, 'generalbox', 'intro'); + print_simple_box( format_text($journal->intro, $journal->introformat) , "center"); } - echo '<br />'; + echo "<br />"; $timenow = time(); - if ($course->format == 'weeks' and $journal->days) { + if ($course->format == "weeks" and $journal->days) { $timestart = $course->startdate + (($cw->section - 1) * 604800); if ($journal->days) { $timefinish = $timestart + (3600 * 24 * $journal->days); @@ -75,61 +77,60 @@ if ($timenow > $timestart) { - print_simple_box_start('center'); + print_simple_box_start("center"); if ($timenow < $timefinish) { - $options = array ('id' => "$cm->id"); - echo '<center>'; + $options = array ("id" => "$cm->id"); + echo "<CENTER>"; if (!isguest()) { - print_single_button('edit.php', $options, get_string('startoredit','journal')); + print_single_button("edit.php", $options, get_string("startoredit","journal")); } - echo '</center>'; + echo "</CENTER>"; } - if ($entry = get_record('journal_entries', 'userid', $USER->id, 'journal', $journal->id)) { + if ($entry = get_record("journal_entries", "userid", $USER->id, "journal", $journal->id)) { if (empty($entry->text)) { - echo '<p align="center"><b>'.get_string('blankentry','journal').'</b></p>'; + echo "<P ALIGN=center><B>".get_string("blankentry","journal")."</B></P>"; } else { echo format_text($entry->text, $entry->format); } - + } else { - echo '<span class="warning">'.get_string('notstarted','journal').'</span>'; + echo "<B><I>".get_string("notstarted","journal")."</I></B>"; } print_simple_box_end(); if ($timenow < $timefinish) { if ($entry->modified) { - echo '<div class="lastedit"><strong>'.get_string('lastedited').':</strong> '; + echo "<P><FONT SIZE=-2><B>".get_string("lastedited").":</B> "; echo userdate($entry->modified); - echo ' ('.get_string('numwords', '', count_words($entry->text)).')'; - echo "</div>"; + echo " (".get_string("numwords", "", count_words($entry->text)).")"; + echo "</FONT></P>"; } if ($journal->days) { - echo '<div class="editend"><strong>'.get_string('editingends', 'journal').':</strong> '; - echo userdate($timefinish).'</div>'; + echo "<P><FONT SIZE=-2><B>".get_string("editingends", "journal").":</B> "; + echo userdate($timefinish)."</FONT></P>"; } } else { - echo '<div class="editend"><strong>'.get_string('editingended', 'journal').':</strong> '; - echo userdate($timefinish).'</div>'; + echo "<P><FONT SIZE=-2><B>".get_string("editingended", "journal").":</B> "; + echo userdate($timefinish)."</P>"; } if ($entry->comment or $entry->rating) { $grades = make_grades_menu($journal->assessed); - print_heading(get_string('feedback')); + print_heading(get_string("feedback")); journal_print_feedback($course, $entry, $grades); } } else { - echo '<div class="warning">'.get_string('notopenuntil', 'journal').': '; - echo userdate($timestart).'</div>'; + echo "<P><B>".get_string("notopenuntil", "journal").": "; + echo userdate($timestart)."</B></P>"; } - print_footer($course); ?> diff --git a/mod/label/backuplib.php b/mod/label/backuplib.php index 8ad40c028cd..d1a9f83afe7 100644 --- a/mod/label/backuplib.php +++ b/mod/label/backuplib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //label mods diff --git a/mod/label/db/mysql.php b/mod/label/db/mysql.php index 37fa12a61b0..74e0f571eb5 100644 --- a/mod/label/db/mysql.php +++ b/mod/label/db/mysql.php @@ -1,28 +1,22 @@ -<?php // $Id$ - -function label_upgrade($oldversion) { - -/// This function does anything necessary to upgrade -/// older versions to match current functionality - - global $CFG; - - if ($oldversion < 2003091400) { - table_column("label", "", "course", "integer", "10", "unsigned", "0", "not null", "id"); - } - - if ($oldversion < 2004021900) { - modify_database("", "INSERT INTO prefix_log_display VALUES ('label', 'add', 'quiz', 'name');"); - modify_database("", "INSERT INTO prefix_log_display VALUES ('label', 'update', 'quiz', 'name');"); - } - - if ($oldversion < 2004111200) { //DROP first - execute_sql("ALTER TABLE {$CFG->prefix}label DROP INDEX course;",false); - modify_database('','ALTER TABLE prefix_label ADD INDEX course (course);'); - } - - return true; - -} - -?> +<?PHP + +function label_upgrade($oldversion) { +/// This function does anything necessary to upgrade +/// older versions to match current functionality + + global $CFG; + + if ($oldversion < 2003091400) { + table_column("label", "", "course", "integer", "10", "unsigned", "0", "not null", "id"); + } + + if ($oldversion < 2004021900) { + modify_database("", "INSERT INTO prefix_log_display VALUES ('label', 'add', 'quiz', 'name');"); + modify_database("", "INSERT INTO prefix_log_display VALUES ('label', 'update', 'quiz', 'name');"); + } + + + return true; +} + +?> diff --git a/mod/label/db/mysql.sql b/mod/label/db/mysql.sql index c3a3f4dd51f..836a64e90ff 100644 --- a/mod/label/db/mysql.sql +++ b/mod/label/db/mysql.sql @@ -4,8 +4,7 @@ CREATE TABLE `prefix_label` ( `name` varchar(255) NOT NULL default '', `content` text NOT NULL, `timemodified` int(10) unsigned NOT NULL default '0', - PRIMARY KEY (`id`), - KEY course (course) + PRIMARY KEY (`id`) ) COMMENT='Defines labels'; INSERT INTO prefix_log_display VALUES ('label', 'add', 'quiz', 'name'); diff --git a/mod/label/db/postgres7.php b/mod/label/db/postgres7.php index e42ae4eaf74..854c2977b77 100644 --- a/mod/label/db/postgres7.php +++ b/mod/label/db/postgres7.php @@ -1,46 +1,21 @@ -<?php - - - -function label_upgrade($oldversion) { - -/// This function does anything necessary to upgrade - -/// older versions to match current functionality - - - - global $CFG; - - - - if ($oldversion < 2003091400) { - - table_column("label", "", "course", "integer", "10", "unsigned", "0", "not null", "id"); - - } - - - - if ($oldversion < 2004021900) { - - modify_database("", "INSERT INTO prefix_log_display VALUES ('label', 'add', 'quiz', 'name');"); - - modify_database("", "INSERT INTO prefix_log_display VALUES ('label', 'update', 'quiz', 'name');"); - - } - - if ($oldversion < 2004111200) { //DROP first - execute_sql("DROP INDEX {$CFG->prefix}label_course_idx;",false); - - modify_database('','CREATE INDEX prefix_label_course_idx ON prefix_label (course);'); - } - - return true; - -} - - - -?> - +<?PHP + +function label_upgrade($oldversion) { +/// This function does anything necessary to upgrade +/// older versions to match current functionality + + global $CFG; + + if ($oldversion < 2003091400) { + table_column("label", "", "course", "integer", "10", "unsigned", "0", "not null", "id"); + } + + if ($oldversion < 2004021900) { + modify_database("", "INSERT INTO prefix_log_display VALUES ('label', 'add', 'quiz', 'name');"); + modify_database("", "INSERT INTO prefix_log_display VALUES ('label', 'update', 'quiz', 'name');"); + } + + return true; +} + +?> diff --git a/mod/label/db/postgres7.sql b/mod/label/db/postgres7.sql index 8a90726ca7c..bcf4ef2bc2c 100644 --- a/mod/label/db/postgres7.sql +++ b/mod/label/db/postgres7.sql @@ -6,7 +6,5 @@ CREATE TABLE prefix_label ( timemodified integer NOT NULL default '0' ); -CREATE INDEX prefix_label_course_idx ON prefix_label (course); - INSERT INTO prefix_log_display VALUES ('label', 'add', 'quiz', 'name'); INSERT INTO prefix_log_display VALUES ('label', 'update', 'quiz', 'name'); diff --git a/mod/label/index.php b/mod/label/index.php index 0141b614cd0..0ee6428cc14 100644 --- a/mod/label/index.php +++ b/mod/label/index.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); diff --git a/mod/label/lib.php b/mod/label/lib.php index fb4695bf3d3..628b0108331 100644 --- a/mod/label/lib.php +++ b/mod/label/lib.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// Library of functions and constants for module label @@ -11,7 +11,7 @@ function label_add_instance($label) { /// will create a new instance and return the id number /// of the new instance. - $label->name = strip_tags(format_string(stripslashes($label->content),true)); + $label->name = strip_tags($label->content); if (strlen($label->name) > LABEL_MAX_NAME_LENGTH) { $label->name = substr($label->name, 0, LABEL_MAX_NAME_LENGTH)."..."; } @@ -25,7 +25,8 @@ function label_update_instance($label) { /// Given an object containing all the necessary data, /// (defined by the form in mod.html) this function /// will update an existing instance with new data. - $label->name = strip_tags(format_string(stripslashes($label->content),true)); + + $label->name = strip_tags($label->content); if (strlen($label->name) > LABEL_MAX_NAME_LENGTH) { $label->name = substr($label->name, 0, LABEL_MAX_NAME_LENGTH)."..."; } diff --git a/mod/label/mod.html b/mod/label/mod.html index e67856f7ebd..629e4834419 100644 --- a/mod/label/mod.html +++ b/mod/label/mod.html @@ -1,4 +1,4 @@ -<?php +<?php if (!isset($form->content)) { $form->content = ''; } @@ -6,9 +6,9 @@ <form name="form" method="post" action="mod.php"> <center> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><p><b><?php print_string("labeltext", "label") ?>:</b></p> +<table cellpadding=5> +<tr valign=top> + <td align=right><p><b><?php print_string("labeltext", "label") ?>:</b></p> <font size="1"> <?php helpbutton("writing", get_string("helpwriting"), "moodle", true, true); @@ -17,7 +17,7 @@ helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); } else { emoticonhelpbutton("form", "description"); - } + } ?> <br /> </font> @@ -28,17 +28,16 @@ ?> </td> </tr> -<?php print_visible_setting($form); ?> + </table> <!-- these hidden variables are always the same --> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> +<input type="hidden" name=course value="<?php p($form->course) ?>"> +<input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name=section value="<?php p($form->section) ?>"> +<input type="hidden" name=module value="<?php p($form->module) ?>"> +<input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<input type="hidden" name=instance value="<?php p($form->instance) ?>"> +<input type="hidden" name=mode value="<?php p($form->mode) ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> </center> </form> diff --git a/mod/label/restorelib.php b/mod/label/restorelib.php index a6888d7f919..45e4b6b8fb9 100644 --- a/mod/label/restorelib.php +++ b/mod/label/restorelib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //label mods @@ -43,7 +43,7 @@ $newid = insert_record ("label",$label); //Do some output - echo "<li>".get_string("modulename","label")." \"".format_string(stripslashes($label->name),true)."\"</li>"; + echo "<ul><li>".get_string("modulename","label")." \"".$label->name."\"<br>"; backup_flush(300); if ($newid) { @@ -54,6 +54,10 @@ } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -92,7 +96,7 @@ } break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored<br />"; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>"; //Debug break; } diff --git a/mod/label/version.php b/mod/label/version.php index 00b8102e040..27ca6e9593f 100644 --- a/mod/label/version.php +++ b/mod/label/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ ///////////////////////////////////////////////////////////////////////////////// /// Code fragment to define the version of label /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2004111200; // The current module version (Date: YYYYMMDDXX) -$module->requires = 2004052505; // Requires this Moodle version +$module->version = 2004060400; // The current module version (Date: YYYYMMDDXX) +$module->requires = 2004052501; // Requires this Moodle version $module->cron = 0; // Period for cron to check this module (secs) ?> diff --git a/mod/label/view.php b/mod/label/view.php index 683275aee2e..8e115c698de 100644 --- a/mod/label/view.php +++ b/mod/label/view.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); diff --git a/mod/lesson/action/addbranchtable.php b/mod/lesson/action/addbranchtable.php deleted file mode 100644 index b539ce48e55..00000000000 --- a/mod/lesson/action/addbranchtable.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php -/************** add branch table ************************************/ - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - // first get the preceeding page - $pageid = required_param('pageid', PARAM_INT); - - // set of jump array - $jump = array(); - $jump[0] = get_string("thispage", "lesson"); - $jump[LESSON_NEXTPAGE] = get_string("nextpage", "lesson"); - //// CDC-FLAG ///// - $jump[LESSON_PREVIOUSPAGE] = get_string("previouspage", "lesson"); - if (!isset($_GET['firstpage'])) { - $jump[LESSON_EOL] = get_string("endoflesson", "lesson"); - if (!$apageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { - error("Add page: first page not found"); - } - while (true) { - if ($apageid) { - $title = get_field("lesson_pages", "title", "id", $apageid); - $jump[$apageid] = $title; - $apageid = get_field("lesson_pages", "nextpageid", "id", $apageid); - } else { - // last page reached - break; - } - } - } - //// CDC-FLAG ///// - // give teacher a blank proforma - print_heading_with_help(get_string("addabranchtable", "lesson"), "overview", "lesson"); - ?> - <form name="form" method="post" action="lesson.php" /> - <input type="hidden" name="id" value="<?PHP echo $cm->id ?>" /> - <input type="hidden" name="action" value="insertpage"> - <input type="hidden" name="pageid" value="<?PHP echo $pageid ?>" /> - <input type="hidden" name="qtype" value="<?PHP echo LESSON_BRANCHTABLE ?>" /> - <input type="hidden" name="sesskey" value="<?PHP echo $USER->sesskey ?>" /> - <center><table cellpadding=5 border=1> - <tr><td align="center"> - <tr valign="top"> - <td><b><?php print_string("pagetitle", "lesson"); ?>:</b><br /> - <!-- //CDC hidden-label added.--><label for="title" class="hidden-label">Title</label><input type="text" id="title" name="title" size="80" maxsize="255" value="" /></td></tr> - <?PHP - echo "<tr><td><b>"; - echo get_string("pagecontents", "lesson").":</b><br />\n"; - print_textarea($usehtmleditor, 25,70, 630, 400, "contents"); - use_html_editor("contents"); - echo "</td></tr>\n"; - /// CDC-FLAG /// 6/16/04 - echo "<tr><td>\n"; - echo "<center><input name=\"layout\" type=\"checkbox\" value=\"1\" checked=\"checked\" />"; - echo get_string("arrangebuttonshorizontally", "lesson")."\n"; - echo "<br><input name=\"display\" type=\"checkbox\" value=\"1\" checked=\"checked\" />"; - echo get_string("displayinleftmenu", "lesson"); - echo "</center>\n"; - echo "</td></tr>\n"; - /// CDC-FLAG /// - for ($i = 0; $i < $lesson->maxanswers; $i++) { - $iplus1 = $i + 1; - echo "<tr><td><b>".get_string("description", "lesson")." $iplus1:</b><br />\n"; - print_textarea(false, 10, 70, 630, 300, "answer[$i]"); // made the default set to off also removed use_html_editor(); line from down below, which made all textareas turn into html editors - echo "</td></tr>\n"; - echo "<tr><td><B>".get_string("jump", "lesson")." $iplus1:</b> \n"; - if ($i) { - // answers 2, 3, 4... jumpto this page - lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); - } else { - // answer 1 jumpto next page - lesson_choose_from_menu($jump, "jumpto[$i]", LESSON_NEXTPAGE, ""); - } - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - echo "</td></tr>\n"; - } - // close table and form - ?> - </table><br /> - <input type="submit" value="<?php print_string("addabranchtable", "lesson") ?>" /> - <input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> - </center> - </form> \ No newline at end of file diff --git a/mod/lesson/action/addcluster.php b/mod/lesson/action/addcluster.php deleted file mode 100644 index 887b5f8eee1..00000000000 --- a/mod/lesson/action/addcluster.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -/************** add cluster ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - confirm_sesskey(); - - // first get the preceeding page - // if $pageid = 0, then we are inserting a new page at the beginning of the lesson - $pageid = required_param('pageid', PARAM_INT); - - $timenow = time(); - - if ($pageid == 0) { - if (!$page = get_record("lesson_pages", "prevpageid", 0, "lessonid", $lesson->id)) { - error("Error: Add cluster: page record not found"); - } - } else { - if (!$page = get_record("lesson_pages", "id", $pageid)) { - error("Error: Add cluster: page record not found"); - } - } - $newpage = new stdClass; - $newpage->lessonid = $lesson->id; - $newpage->prevpageid = $pageid; - if ($pageid != 0) { - $newpage->nextpageid = $page->nextpageid; - } else { - $newpage->nextpageid = $page->id; - } - $newpage->qtype = LESSON_CLUSTER; - $newpage->timecreated = $timenow; - $newpage->title = get_string("clustertitle", "lesson"); - $newpage->contents = get_string("clustertitle", "lesson"); - if (!$newpageid = insert_record("lesson_pages", $newpage)) { - error("Insert page: new page not inserted"); - } - // update the linked list... - if ($pageid != 0) { - if (!set_field("lesson_pages", "nextpageid", $newpageid, "id", $pageid)) { - error("Add cluster: unable to update link"); - } - } - - if ($pageid == 0) { - $page->nextpageid = $page->id; - } - if ($page->nextpageid) { - // the new page is not the last page - if (!set_field("lesson_pages", "prevpageid", $newpageid, "id", $page->nextpageid)) { - error("Insert page: unable to update previous link"); - } - } - // ..and the single "answer" - $newanswer = new stdClass; - $newanswer->lessonid = $lesson->id; - $newanswer->pageid = $newpageid; - $newanswer->timecreated = $timenow; - $newanswer->jumpto = LESSON_CLUSTERJUMP; - if(!$newanswerid = insert_record("lesson_answers", $newanswer)) { - error("Add cluster: answer record not inserted"); - } - redirect("view.php?id=$cm->id", get_string('addedcluster', 'lesson')); -?> \ No newline at end of file diff --git a/mod/lesson/action/addendofbranch.php b/mod/lesson/action/addendofbranch.php deleted file mode 100644 index 8266eb9030a..00000000000 --- a/mod/lesson/action/addendofbranch.php +++ /dev/null @@ -1,66 +0,0 @@ -<?php - -/************** add end of branch ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - confirm_sesskey(); - - // first get the preceeding page - $pageid = required_param('pageid', PARAM_INT); - - $timenow = time(); - - // the new page is not the first page (end of branch always comes after an existing page) - if (!$page = get_record("lesson_pages", "id", $pageid)) { - error("Add end of branch: page record not found"); - } - // chain back up to find the (nearest branch table) - $btpageid = $pageid; - if (!$btpage = get_record("lesson_pages", "id", $btpageid)) { - error("Add end of branch: btpage record not found"); - } - while (($btpage->qtype != LESSON_BRANCHTABLE) AND ($btpage->prevpageid > 0)) { - $btpageid = $btpage->prevpageid; - if (!$btpage = get_record("lesson_pages", "id", $btpageid)) { - error("Add end of branch: btpage record not found"); - } - } - if ($btpage->qtype == LESSON_BRANCHTABLE) { - $newpage = new stdClass; - $newpage->lessonid = $lesson->id; - $newpage->prevpageid = $pageid; - $newpage->nextpageid = $page->nextpageid; - $newpage->qtype = LESSON_ENDOFBRANCH; - $newpage->timecreated = $timenow; - $newpage->title = get_string("endofbranch", "lesson"); - $newpage->contents = get_string("endofbranch", "lesson"); - if (!$newpageid = insert_record("lesson_pages", $newpage)) { - error("Insert page: new page not inserted"); - } - // update the linked list... - if (!set_field("lesson_pages", "nextpageid", $newpageid, "id", $pageid)) { - error("Add end of branch: unable to update link"); - } - if ($page->nextpageid) { - // the new page is not the last page - if (!set_field("lesson_pages", "prevpageid", $newpageid, "id", $page->nextpageid)) { - error("Insert page: unable to update previous link"); - } - } - // ..and the single "answer" - $newanswer = new stdClass; - $newanswer->lessonid = $lesson->id; - $newanswer->pageid = $newpageid; - $newanswer->timecreated = $timenow; - $newanswer->jumpto = $btpageid; - if(!$newanswerid = insert_record("lesson_answers", $newanswer)) { - error("Add end of branch: answer record not inserted"); - } - redirect("view.php?id=$cm->id", get_string('addedanendofbranch', 'lesson')); - } else { - notice(get_string("nobranchtablefound", "lesson"), "view.php?id=$cm->id"); - } -?> \ No newline at end of file diff --git a/mod/lesson/action/addendofcluster.php b/mod/lesson/action/addendofcluster.php deleted file mode 100644 index a949edf3853..00000000000 --- a/mod/lesson/action/addendofcluster.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php - -/************** add end of cluster ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - confirm_sesskey(); - - // first get the preceeding page - $pageid = required_param('pageid', PARAM_INT); - - $timenow = time(); - - // the new page is not the first page (end of cluster always comes after an existing page) - if (!$page = get_record("lesson_pages", "id", $pageid)) { - error("Error: Could not find page"); - } - - // could put code in here to check if the user really can insert an end of cluster - - $newpage = new stdClass; - $newpage->lessonid = $lesson->id; - $newpage->prevpageid = $pageid; - $newpage->nextpageid = $page->nextpageid; - $newpage->qtype = LESSON_ENDOFCLUSTER; - $newpage->timecreated = $timenow; - $newpage->title = get_string("endofclustertitle", "lesson"); - $newpage->contents = get_string("endofclustertitle", "lesson"); - if (!$newpageid = insert_record("lesson_pages", $newpage)) { - error("Insert page: end of cluster page not inserted"); - } - // update the linked list... - if (!set_field("lesson_pages", "nextpageid", $newpageid, "id", $pageid)) { - error("Add end of cluster: unable to update link"); - } - if ($page->nextpageid) { - // the new page is not the last page - if (!set_field("lesson_pages", "prevpageid", $newpageid, "id", $page->nextpageid)) { - error("Insert end of cluster: unable to update previous link"); - } - } - // ..and the single "answer" - $newanswer = new stdClass; - $newanswer->lessonid = $lesson->id; - $newanswer->pageid = $newpageid; - $newanswer->timecreated = $timenow; - $newanswer->jumpto = LESSON_NEXTPAGE; - if(!$newanswerid = insert_record("lesson_answers", $newanswer)) { - error("Add end of cluster: answer record not inserted"); - } - redirect("view.php?id=$cm->id", get_string('addedendofcluster', 'lesson')); \ No newline at end of file diff --git a/mod/lesson/action/addpage.php b/mod/lesson/action/addpage.php deleted file mode 100644 index 58c6ee22bb6..00000000000 --- a/mod/lesson/action/addpage.php +++ /dev/null @@ -1,241 +0,0 @@ -<?php - -/************** add page ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - // first get the preceeding page - $pageid = required_param('pageid', PARAM_INT); - - // set of jump array - $jump = array(); - $jump[0] = get_string("thispage", "lesson"); - $jump[LESSON_NEXTPAGE] = get_string("nextpage", "lesson"); - //// CDC-FLAG 6/18/04 ///// - $jump[LESSON_PREVIOUSPAGE] = get_string("previouspage", "lesson"); - if(lesson_display_branch_jumps($lesson->id, $pageid)) { - $jump[LESSON_UNSEENBRANCHPAGE] = get_string("unseenpageinbranch", "lesson"); - $jump[LESSON_RANDOMPAGE] = get_string("randompageinbranch", "lesson"); - } - if(lesson_display_cluster_jump($lesson->id, $pageid)) { - $jump[LESSON_CLUSTERJUMP] = get_string("clusterjump", "lesson"); - } - /// CDC-FLAG /// - if (!isset($_GET['firstpage'])) { - $linkadd = ""; - $jump[LESSON_EOL] = get_string("endoflesson", "lesson"); - if (!$apageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { - error("Add page: first page not found"); - } - while (true) { - if ($apageid) { - $title = get_field("lesson_pages", "title", "id", $apageid); - $jump[$apageid] = $title; - $apageid = get_field("lesson_pages", "nextpageid", "id", $apageid); - } else { - // last page reached - break; - } - } - } else { - $linkadd = "&firstpage=1"; - } - - // give teacher a blank proforma - print_heading_with_help(get_string("addaquestionpage", "lesson"), "overview", "lesson"); - ?> - <form name="form" method="post" action="lesson.php"> - <input type="hidden" name="id" value="<?PHP echo $cm->id ?>"> - <input type="hidden" name="action" value="insertpage"> - <input type="hidden" name="pageid" value="<?PHP echo $pageid ?>"> - <input type="hidden" name="sesskey" value="<?PHP echo $USER->sesskey ?>"> - <center><table cellpadding=5 border=1> - <?php - echo "<tr><td align=\"center\"><b>"; - echo get_string("questiontype", "lesson").":</b> \n"; - echo helpbutton("questiontypes", get_string("questiontype", "lesson"), "lesson")."<br>"; - if (isset($_GET['qtype'])) { - $qtype = clean_param($_GET['qtype'], PARAM_INT); - lesson_qtype_menu($LESSON_QUESTION_TYPE, $qtype, - "lesson.php?id=$cm->id&action=addpage&pageid=".$pageid.$linkadd); - // NoticeFix rearraged - if ( $qtype == LESSON_SHORTANSWER || $qtype == LESSON_MULTICHOICE ) { // only display this option for Multichoice and shortanswer - if ($qtype == LESSON_SHORTANSWER) { - echo "<br><br><b>".get_string("casesensitive", "lesson").":</b> \n"; - } else { - echo "<br><br><b>".get_string("multianswer", "lesson").":</b> \n"; - } - echo " <label for=\"qoption\" class=\"hidden-label\">Question Option</label><input type=\"checkbox\" id=\"qoption\" name=\"qoption\" value=\"1\"/>"; //CDC hidden label added. - helpbutton("questionoption", get_string("questionoption", "lesson"), "lesson"); - } - } else { - lesson_qtype_menu($LESSON_QUESTION_TYPE, LESSON_MULTICHOICE, - "lesson.php?id=$cm->id&action=addpage&pageid=".$pageid.$linkadd); - echo "<br><br><b>".get_string("multianswer", "lesson").":</b> \n"; - echo " <label for=\"qoption\" class=\"hidden-label\">Question Option</label><input type=\"checkbox\" id=\"qoption\" name=\"qoption\" value=\"1\"/>"; //CDC hidden label added. - helpbutton("questionoption", get_string("questionoption", "lesson"), "lesson"); - } - echo "</td></tr>\n"; - ?> - <tr><td align="center"> - <tr valign="top"> - <td><b><?php print_string("pagetitle", "lesson"); ?>:</b><br /> - <!-- //CDC hidden-label added.--><label for="title" class="hidden-label">Title</label><input type="text" id="title" name="title" size="80" maxsize="255" value=""></td></tr> - <?PHP - echo "<tr><td><b>"; - echo get_string("pagecontents", "lesson").":</b><br />\n"; - print_textarea($usehtmleditor, 25,70, 630, 400, "contents"); - use_html_editor("contents"); - echo "</td></tr>\n"; - if (isset($_GET['qtype'])) { - switch ($_GET['qtype']) { - case LESSON_TRUEFALSE : - for ($i = 0; $i < 2; $i++) { - $iplus1 = $i + 1; - echo "<tr><td><b>".get_string("answer", "lesson")." $iplus1:</b><br />\n"; - print_textarea(false, 6, 70, 630, 300, "answer[$i]"); - echo "</td></tr>\n"; - echo "<tr><td><b>".get_string("response", "lesson")." $iplus1:</b><br />\n"; - print_textarea(false, 6, 70, 630, 300, "response[$i]"); - echo "</td></tr>\n"; - echo "<tr><td><B>".get_string("jump", "lesson")." $iplus1:</b> \n"; - if ($i) { - // answers 2, 3, 4... jumpto this page - lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); - } else { - // answer 1 jumpto next page - lesson_choose_from_menu($jump, "jumpto[$i]", LESSON_NEXTPAGE, ""); - } - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - /// CDC-FLAG /// - if($lesson->custom) { - if ($i) { - echo get_string("score", "lesson")." $iplus1: <input type=\"text\" name=\"score[$i]\" value=\"0\" size=\"5\">"; - } else { - echo get_string("score", "lesson")." $iplus1: <input type=\"text\" name=\"score[$i]\" value=\"1\" size=\"5\">"; - } - } - /// CDC-FLAG /// - echo "</td></tr>\n"; - } - break; - case LESSON_ESSAY : - echo "<tr><td><B>".get_string("jump", "lesson").":</b> \n"; - lesson_choose_from_menu($jump, "jumpto[0]", LESSON_NEXTPAGE, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if ($lesson->custom) { - echo get_string("score", "lesson").": <input type=\"text\" name=\"score[0]\" value=\"1\" size=\"5\">"; - } - echo "</td></tr>\n"; - break; - case LESSON_MATCHING : - for ($i = 0; $i < $lesson->maxanswers+2; $i++) { - $icorrected = $i - 1; - if ($i == 0) { - echo "<tr><td><b>".get_string("correctresponse", "lesson").":</b><br />\n"; - print_textarea(false, 6, 70, 630, 300, "answer[$i]"); - echo "</td></tr>\n"; - } elseif ($i == 1) { - echo "<tr><td><b>".get_string("wrongresponse", "lesson").":</b><br />\n"; - print_textarea(false, 6, 70, 630, 300, "answer[$i]"); - echo "</td></tr>\n"; - } else { - echo "<tr><td><b>".get_string("answer", "lesson")." $icorrected:</b><br />\n"; - print_textarea(false, 6, 70, 630, 300, "answer[$i]"); - echo "</td></tr>\n"; - echo "<tr><td><b>".get_string("matchesanswer", "lesson")." $icorrected:</b><br />\n"; - print_textarea(false, 6, 70, 630, 300, "response[$i]"); - echo "</td></tr>\n"; - } - if ($i == 2) { - echo "<tr><td><B>".get_string("correctanswerjump", "lesson").":</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$i]", LESSON_NEXTPAGE, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if($lesson->custom) { - echo get_string("correctanswerscore", "lesson").": <input type=\"text\" name=\"score[$i]\" value=\"1\" size=\"5\">"; - } - echo "</td></tr>\n"; - } elseif ($i == 3) { - echo "<tr><td><B>".get_string("wronganswerjump", "lesson").":</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if($lesson->custom) { - echo get_string("wronganswerscore", "lesson").": <input type=\"text\" name=\"score[$i]\" value=\"0\" size=\"5\">"; - } - echo "</td></tr>\n"; - } - } - break; - case LESSON_SHORTANSWER : - case LESSON_NUMERICAL : - case LESSON_MULTICHOICE : - // default code - for ($i = 0; $i < $lesson->maxanswers; $i++) { - $iplus1 = $i + 1; - echo "<tr><td><b>".get_string("answer", "lesson")." $iplus1:</b><br />\n"; - print_textarea(false, 6, 70, 630, 300, "answer[$i]"); - echo "</td></tr>\n"; - echo "<tr><td><b>".get_string("response", "lesson")." $iplus1:</b><br />\n"; - print_textarea(false, 6, 70, 630, 300, "response[$i]"); - echo "</td></tr>\n"; - echo "<tr><td><B>".get_string("jump", "lesson")." $iplus1:</b> \n"; - if ($i) { - // answers 2, 3, 4... jumpto this page - lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); - } else { - // answer 1 jumpto next page - lesson_choose_from_menu($jump, "jumpto[$i]", LESSON_NEXTPAGE, ""); - } - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - /// CDC-FLAG /// - if($lesson->custom) { - if ($i) { - echo get_string("score", "lesson")." $iplus1: <input type=\"text\" name=\"score[$i]\" value=\"0\" size=\"5\">"; - } else { - echo get_string("score", "lesson")." $iplus1: <input type=\"text\" name=\"score[$i]\" value=\"1\" size=\"5\">"; - } - } - /// CDC-FLAG /// - echo "</td></tr>\n"; - } - break; - } - } else { - for ($i = 0; $i < $lesson->maxanswers; $i++) { - $iplus1 = $i + 1; - echo "<tr><td><b>".get_string("answer", "lesson")." $iplus1:</b><br />\n"; - print_textarea(false, 6, 70, 630, 300, "answer[$i]"); - echo "</td></tr>\n"; - echo "<tr><td><b>".get_string("response", "lesson")." $iplus1:</b><br />\n"; - print_textarea(false, 6, 70, 630, 300, "response[$i]"); - echo "</td></tr>\n"; - echo "<tr><td><B>".get_string("jump", "lesson")." $iplus1:</b> \n"; - if ($i) { - // answers 2, 3, 4... jumpto this page - lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); - } else { - // answer 1 jumpto next page - lesson_choose_from_menu($jump, "jumpto[$i]", LESSON_NEXTPAGE, ""); - } - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - /// CDC-FLAG /// - if($lesson->custom) { - if ($i) { - echo get_string("score", "lesson")." $iplus1: <input type=\"text\" name=\"score[$i]\" value=\"0\" size=\"5\">"; - } else { - echo get_string("score", "lesson")." $iplus1: <input type=\"text\" name=\"score[$i]\" value=\"1\" size=\"5\">"; - } - } - /// CDC-FLAG /// - echo "</td></tr>\n"; - } - } - // close table and form - ?> - </table><br /> - <input type="submit" value="<?php print_string("addaquestionpage", "lesson") ?>"> - <input type="submit" name="cancel" value="<?php print_string("cancel") ?>"> - </center> - </form> \ No newline at end of file diff --git a/mod/lesson/action/confirmdelete.php b/mod/lesson/action/confirmdelete.php deleted file mode 100644 index c668e0b1651..00000000000 --- a/mod/lesson/action/confirmdelete.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -/******************* confirm delete ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - confirm_sesskey(); - - $pageid = required_param('pageid', PARAM_INT); - if (!$thispage = get_record("lesson_pages", "id", $pageid)) { - error("Confirm delete: the page record not found"); - } - print_heading(get_string("deletingpage", "lesson", $thispage->title)); - // print the jumps to this page - if ($answers = get_records_select("lesson_answers", "lessonid = $lesson->id AND jumpto = $pageid + 1")) { - print_heading(get_string("thefollowingpagesjumptothispage", "lesson")); - echo "<p align=\"center\">\n"; - foreach ($answers as $answer) { - if (!$title = get_field("lesson_pages", "title", "id", $answer->pageid)) { - error("Confirm delete: page title not found"); - } - echo $title."<br />\n"; - } - } - notice_yesno(get_string("confirmdeletionofthispage","lesson"), - "lesson.php?action=delete&amp;id=$cm->id&amp;pageid=$pageid&amp;sesskey=".$USER->sesskey, - "view.php?id=$cm->id"); -?> - diff --git a/mod/lesson/action/continue.php b/mod/lesson/action/continue.php deleted file mode 100644 index e7b68556524..00000000000 --- a/mod/lesson/action/continue.php +++ /dev/null @@ -1,794 +0,0 @@ -<?php -/****************** continue ************************************/ - - confirm_sesskey(); - - // left menu code - if ($lesson->displayleft) { - if($firstpageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0)) { - echo '<table><tr valign="top"><td>'; - // print the pages - echo '<form name="lessonpages2" method="post" action="view.php">'; - echo '<input type="hidden" name="id" value="'. $cm->id .'" />'; - echo '<input type="hidden" name="action" value="navigation" />'; - echo '<input type="hidden" name="pageid" />'; - echo "<table><tr><td valign=\"top\">"; - echo "<div class=\"leftmenutable\">".get_string('lessonmenu', 'lesson')."<br />"; - echo "<div class=\"main\">"; - echo "<a href=\"../../course/view.php?id=$course->id\">".get_string("mainmenu", "lesson")."</a><br />"; echo "</div>"; - echo '<div class="leftmenu">'; - lesson_print_tree_menu($lesson->id, $firstpageid, $cm->id); - echo '</div></div></td></tr></table>'; //close lmlinks - echo '</form>'; - echo '</td><td align="center" width="100%">'; - } - } - - /// CDC-FLAG /// 6/21/04 This is the warning msg for teachers to inform them that cluster and unseen does not work while logged in as a teacher - if(isteacher($course->id)) { - if (execute_teacherwarning($lesson->id)) { - $warningvars->cluster = get_string("clusterjump", "lesson"); - $warningvars->unseen = get_string("unseenpageinbranch", "lesson"); - echo "<p align=\"center\">".get_string("teacherjumpwarning", "lesson", $warningvars)."</p>"; - } - } - /// CDC-FLAG /// - - /// CDC-FLAG /// 6/14/04 -- This is the code updates the lesson time for a timed test - // get time information for this user - if (!isteacher($course->id)) { - if (!$timer = get_records_select('lesson_timer', "lessonid = $lesson->id AND userid = $USER->id", 'starttime')) { - error('Error: could not find records'); - } else { - $timer = array_pop($timer); // this will get the latest start time record - } - } - $outoftime = false; - if($lesson->timed) { - if(isteacher($course->id)) { - echo "<p align=\"center\">".get_string("teachertimerwarning", "lesson")."</p>"; - } else { - if ((($timer->starttime + $lesson->maxtime * 60) - time()) > 0) { - // code for the clock - print_simple_box_start("right", "150px", "#ffffff", 0); - echo "<table border=\"0\" valign=\"top\" align=\"center\" class=\"generaltable\" width=\"100%\" cellspacing=\"0\">". - "<tr><th valign=\"top\" class=\"generaltableheader\">".get_string("timeremaining", "lesson"). - "</th></tr><tr><td align=\"center\" class=\"generaltablecell\">"; - echo "<script language=\"javascript\">\n"; - echo "var starttime = ". $timer->starttime . ";\n"; - echo "var servertime = ". time() . ";\n"; - echo "var testlength = ". $lesson->maxtime * 60 .";\n"; - echo "document.write('<SCRIPT LANGUAGE=\"JavaScript\" SRC=\"timer.js\"><\/SCRIPT>');\n"; - echo "window.onload = function () { show_clock(); }\n"; - echo "</script>\n"; - echo "</td></tr></table>"; - print_simple_box_end(); - echo "<br /><br /><br /><br />"; - } else { - redirect("view.php?id=$cm->id&action=navigation&pageid=".LESSON_EOL."&outoftime=normal", get_string("outoftime", "lesson")); - } - if ((($timer->starttime + $lesson->maxtime * 60) - time()) < 60 && !((($timer->starttime + $lesson->maxtime * 60) - time()) < 0)) { - echo "<p align=\"center\">".get_string("studentoneminwarning", "lesson")."</p>"; - } elseif (($timer->starttime + $lesson->maxtime * 60) < time()) { - echo "<p align=\"center\">".get_string("studentoutoftime", "lesson")."</p>"; - $outoftime = true; - } - } - } - // update the clock - if (!isteacher($course->id)) { - $timer->lessontime = time(); - if (!update_record("lesson_timer", $timer)) { - error("Error: could not update lesson_timer table"); - } - } - /// CDC-FLAG /// - - // record answer (if necessary) and show response (if none say if answer is correct or not) - if (empty($_POST['pageid'])) { - error("Continue: pageid missing"); - } - $pageid = required_param('pageid', PARAM_INT); - if (!$page = get_record("lesson_pages", "id", $pageid)) { - error("Continue: Page record not found"); - } - // set up some defaults - $answerid = 0; - $noanswer = false; - $correctanswer = false; - $isessayquestion = false; // use this to turn off review button on essay questions - $newpageid = 0; // stay on the page - switch ($page->qtype) { - /// CDC-FLAG /// - case LESSON_ESSAY : - $isessayquestion = true; - if (!$useranswer = $_POST['answer']) { - $noanswer = true; - break; - } - $useranswer = clean_param($useranswer, PARAM_CLEAN); - - if (!$answers = get_records("lesson_answers", "pageid", $pageid, "id")) { - error("Continue: No answers found"); - } - $correctanswer = false; - $response = "Your essay will be graded by the course instructor."; - foreach ($answers as $answer) { - $answerid = $answer->id; - $newpageid = $answer->jumpto; - } - /// 6/29/04 // - $userresponse->sent=0; - $userresponse->graded = 0; - $userresponse->score = 0; - $userresponse->answer = $useranswer; - $userresponse->response = ""; - $userresponse = addslashes(serialize($userresponse)); - - break; - /// CDC-FLAG /// - case LESSON_SHORTANSWER : - if (!$useranswer = $_POST['answer']) { - $noanswer = true; - break; - } - $useranswer = clean_param($useranswer, PARAM_CLEAN); - $userresponse = addslashes($useranswer); - - if (!$answers = get_records("lesson_answers", "pageid", $pageid, "id")) { - error("Continue: No answers found"); - } - foreach ($answers as $answer) { - /// CDC-FLAG /// - if ($lesson->custom && $answer->score > 0) { - if ($page->qoption) { - // case sensitive - if ($answer->answer == $useranswer) { - $correctanswer = true; - $answerid = $answer->id; - $newpageid = $answer->jumpto; - if (trim(strip_tags($answer->response))) { - $response = $answer->response; - } - } - } else { - // case insensitive - if (strcasecmp($answer->answer, $useranswer) == 0) { - $correctanswer = true; - $answerid = $answer->id; - $newpageid = $answer->jumpto; - if (trim(strip_tags($answer->response))) { - $response = $answer->response; - } - } - } - } elseif (lesson_iscorrect($pageid, $answer->jumpto) && !$lesson->custom) { /// CDC-FLAG 6/21/04 /// - if ($page->qoption) { - // case sensitive - if ($answer->answer == $useranswer) { - $correctanswer = true; - $newpageid = $answer->jumpto; - if (trim(strip_tags($answer->response))) { - $response = $answer->response; - } - } - } else { - // case insensitive - if (strcasecmp($answer->answer, $useranswer) == 0) { - $correctanswer = true; - $newpageid = $answer->jumpto; - if (trim(strip_tags($answer->response))) { - $response = $answer->response; - } - } - } - } else { - // see if user typed in any of the wrong answers - // don't worry about case - if (strcasecmp($answer->answer, $useranswer) == 0) { - $newpageid = $answer->jumpto; - $answerid = $answer->id; - if (trim(strip_tags($answer->response))) { - $response = $answer->response; - } - } - } - } - if (!isset($response)) { - if ($correctanswer) { - $response = get_string("thatsthecorrectanswer", "lesson"); - } else { - $response = get_string("thatsthewronganswer", "lesson"); - } - } - break; - - case LESSON_TRUEFALSE : - if (empty($_POST['answerid'])) { - $noanswer = true; - break; - } - $answerid = required_param('answerid', PARAM_INT); - if (!$answer = get_record("lesson_answers", "id", $answerid)) { - error("Continue: answer record not found"); - } - if (lesson_iscorrect($pageid, $answer->jumpto)) { - $correctanswer = true; - } - /* CDC-FLAG */ - if ($lesson->custom) { - if ($answer->score > 0) { - $correctanswer = true; - } else { - $correctanswer = false; - } - } - /// CDC-FLAG 6/21/04 /// - $newpageid = $answer->jumpto; - if (!$response = trim($answer->response)) { - if ($correctanswer) { - $response = get_string("thatsthecorrectanswer", "lesson"); - } else { - $response = get_string("thatsthewronganswer", "lesson"); - } - } - break; - - case LESSON_MULTICHOICE : - if ($page->qoption) { - // MULTIANSWER allowed, user's answer is an array - if (isset($_POST['answer'])) { - $useranswers = $_POST['answer']; - foreach ($useranswers as $key => $useranswer) { - $useranswers[$key] = clean_param($useranswer, PARAM_INT); - } - } else { - $noanswer = true; - break; - } - // get what the user answered - $userresponse = implode(",", $useranswers); - // get the answers in a set order, the id order - if (!$answers = get_records("lesson_answers", "pageid", $pageid, "id")) { - error("Continue: No answers found"); - } - $ncorrect = 0; - $nhits = 0; - $correctresponse = ''; - $wrongresponse = ''; - /// CDC-FLAG /// 6/11/04 this is for custom scores. If score on answer is positive, it is correct - if ($lesson->custom) { - $ncorrect = 0; - $nhits = 0; - foreach ($answers as $answer) { - if ($answer->score > 0) { - $ncorrect++; - - foreach ($useranswers as $key => $answerid) { - if ($answerid == $answer->id) { - $nhits++; - } - } - // save the first jumpto page id, may be needed!... - if (!isset($correctpageid)) { - // leave in its "raw" state - will converted into a proper page id later - $correctpageid = $answer->jumpto; - } - // ...also save any response from the correct answers... - if (trim(strip_tags($answer->response))) { - $correctresponse = $answer->response; - } - } else { - // save the first jumpto page id, may be needed!... - if (!isset($wrongpageid)) { - // leave in its "raw" state - will converted into a proper page id later - $wrongpageid = $answer->jumpto; - } - // ...and from the incorrect ones, don't know which to use at this stage - if (trim(strip_tags($answer->response))) { - $wrongresponse = $answer->response; - } - } - } - } else { - foreach ($answers as $answer) { - if (lesson_iscorrect($pageid, $answer->jumpto)) { - $ncorrect++; - foreach ($useranswers as $key => $answerid) { - if ($answerid == $answer->id) { - $nhits++; - } - } - // save the first jumpto page id, may be needed!... - if (!isset($correctpageid)) { - // leave in its "raw" state - will converted into a proper page id later - $correctpageid = $answer->jumpto; - } - // ...also save any response from the correct answers... - if (trim(strip_tags($answer->response))) { - $correctresponse = $answer->response; - } - } else { - // save the first jumpto page id, may be needed!... - if (!isset($wrongpageid)) { - // leave in its "raw" state - will converted into a proper page id later - $wrongpageid = $answer->jumpto; - } - // ...and from the incorrect ones, don't know which to use at this stage - if (trim(strip_tags($answer->response))) { - $wrongresponse = $answer->response; - } - } - } - } - /// CDC-FLAG /// - if ((count($useranswers) == $ncorrect) and ($nhits == $ncorrect)) { - $correctanswer = true; - if (!$response = $correctresponse) { - $response = get_string("thatsthecorrectanswer", "lesson"); - } - $newpageid = $correctpageid; - } else { - if (!$response = $wrongresponse) { - $response = get_string("thatsthewronganswer", "lesson"); - } - $newpageid = $wrongpageid; - } - } else { - // only one answer allowed - if (empty($_POST['answerid'])) { - $noanswer = true; - break; - } - $answerid = required_param('answerid', PARAM_INT); - if (!$answer = get_record("lesson_answers", "id", $answerid)) { - error("Continue: answer record not found"); - } - if (lesson_iscorrect($pageid, $answer->jumpto)) { - $correctanswer = true; - } - /* CDC-FLAG */ - if ($lesson->custom) { - if ($answer->score > 0) { - $correctanswer = true; - } else { - $correctanswer = false; - } - } - /// CDC-FLAG /// - $newpageid = $answer->jumpto; - if (!$response = trim($answer->response)) { - if ($correctanswer) { - $response = get_string("thatsthecorrectanswer", "lesson"); - } else { - $response = get_string("thatsthewronganswer", "lesson"); - } - } - } - break; - - /// CDC-FLAG /// 6/14/04 -- added responses - case LESSON_MATCHING : - if (isset($_POST['response']) && is_array($_POST['response'])) { // only arrays should be submitted - $response = $_POST['response']; - } else { - $noanswer = true; - break; - } - - if (!$answers = get_records("lesson_answers", "pageid", $pageid, "id")) { - error("Continue: No answers found"); - } - $ncorrect = 0; - $i = 0; - foreach ($answers as $answer) { - if ($i == 0 || $i == 1) { - // ignore first two answers, they are correct response - // and wrong response - $i++; - continue; - } - if ($answer->response == $response[$answer->id]) { - $ncorrect++; - } - if ($i == 2) { - $correctpageid = $answer->jumpto; - $correctanswerid = $answer->id; - } - if ($i == 3) { - $wrongpageid = $answer->jumpto; - $wronganswerid = $answer->id; - } - $i++; - } - // get he users exact responses for record keeping - foreach ($response as $value) { - foreach($answers as $answer) { - if ($value == $answer->response) { - $userresponse[] = $answer->id; - } - } - } - $userresponse = implode(",", $userresponse); - - if ($ncorrect == count($answers)-2) { // dont count correct/wrong responses in the total. - $response = get_string("thatsthecorrectanswer", "lesson"); - foreach ($answers as $answer) { - if ($answer->response == NULL && $answer->answer != NULL) { - $response = $answer->answer; - break; - } - } - // NoticeFix - if (isset($correctpageid)) { - $newpageid = $correctpageid; - } - if (isset($correctanswerid)) { - $answerid = $correctanswerid; - } - $correctanswer = true; - } else { - $response = get_string("thatsthewronganswer", "lesson"); - $t = 0; - foreach ($answers as $answer) { - if ($answer->response == NULL && $answer->answer != NULL) { - if ($t == 1) { - $response = $answer->answer; - break; - } - $t++; - } - } - $newpageid = $wrongpageid; - $answerid = $wronganswerid; - } - break; - /// CDC-FLAG /// - - case LESSON_NUMERICAL : - // set defaults - $response = ''; - $newpageid = 0; - - if (isset($_POST['answer'])) { - $useranswer = (float) optional_param('answer'); // just doing default PARAM_CLEAN, not doing PARAM_INT because it could be a float - } else { - $noanswer = true; - break; - } - $userresponse = $useranswer; - if (!$answers = get_records("lesson_answers", "pageid", $pageid, "id")) { - error("Continue: No answers found"); - } - foreach ($answers as $answer) { - if (strpos($answer->answer, ':')) { - // there's a pairs of values - list($min, $max) = explode(':', $answer->answer); - $minimum = (float) $min; - $maximum = (float) $max; - } else { - // there's only one value - $minimum = (float) $answer->answer; - $maximum = $minimum; - } - if (($useranswer >= $minimum) and ($useranswer <= $maximum)) { - $newpageid = $answer->jumpto; - $response = trim($answer->response); - if (lesson_iscorrect($pageid, $newpageid)) { - $correctanswer = true; - } - /// CDC-FLAG /// - if ($lesson->custom) { - if ($answer->score > 0) { - $correctanswer = true; - $answerid = $answer->id; - } else { - $correctanswer = false; - } - } - /// CDC-FLAG /// - break; - } - } - if ($correctanswer) { - if (!$response) { - $response = get_string("thatsthecorrectanswer", "lesson"); - } - } else { - if (!$response) { - $response = get_string("thatsthewronganswer", "lesson"); - } - } - break; - - case LESSON_BRANCHTABLE: - $noanswer = false; - $newpageid = optional_param('jumpto', NULL, PARAM_INT); - /// CDC-FLAG /// 6/15/04 going to insert into lesson_branch - if ($newpageid == LESSON_RANDOMBRANCH) { - $branchflag = 1; - } else { - $branchflag = 0; - } - if ($grades = get_records_select("lesson_grades", "lessonid = $lesson->id AND userid = $USER->id", - "grade DESC")) { - $retries = count($grades); - } else { - $retries = 0; - } - $branch = new stdClass; - $branch->lessonid = $lesson->id; - $branch->userid = $USER->id; - $branch->pageid = $pageid; - $branch->retry = $retries; - $branch->flag = $branchflag; - $branch->timeseen = time(); - - if (!insert_record("lesson_branch", $branch)) { - error("Error: could not insert row into lesson_branch table"); - } - /// CDC-FLAG /// - - /// CDC-FLAG /// this is called when jumping to random from a branch table - if($newpageid == LESSON_UNSEENBRANCHPAGE) { - if (isteacher($course->id)) { - $newpageid = LESSON_NEXTPAGE; - } else { - $newpageid = lesson_unseen_question_jump($lesson->id, $USER->id, $pageid); // this may return 0 //CDC Chris Berri.....this is where it sets the next page id for unseen? - } - } - /// CDC-FLAG 6/15/04 /// - // convert jumpto page into a proper page id - if ($newpageid == 0) { - $newpageid = $pageid; - } elseif ($newpageid == LESSON_NEXTPAGE) { - if (!$newpageid = $page->nextpageid) { - // no nextpage go to end of lesson - $newpageid = LESSON_EOL; - } - /* CDC-FLAG */ } elseif ($newpageid == LESSON_PREVIOUSPAGE) { - $newpageid = $page->prevpageid; - } elseif ($newpageid == LESSON_RANDOMPAGE) { - $newpageid = lesson_random_question_jump($lesson->id, $pageid); - } elseif ($newpageid == LESSON_RANDOMBRANCH) { // 6/15/04 - $newpageid = lesson_unseen_branch_jump($lesson->id, $USER->id); - } - /// CDC-FLAG /// - // no need to record anything in lesson_attempts - redirect("view.php?id=$cm->id&amp;action=navigation&amp;pageid=$newpageid"); - print_footer($course); - exit(); - break; - - } - if ($noanswer) { - $newpageid = $pageid; // display same page again - print_simple_box(get_string("noanswer", "lesson"), "center"); - } else { - $nretakes = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); - if (isstudent($course->id)) { - // record student's attempt - $attempt = new stdClass; - $attempt->lessonid = $lesson->id; - $attempt->pageid = $pageid; - $attempt->userid = $USER->id; - $attempt->answerid = $answerid; - $attempt->retry = $nretakes; - $attempt->correct = $correctanswer; - if(isset($userresponse)) { - $attempt->useranswer = $userresponse; - } - $attempt->timeseen = time(); - /// CDC-FLAG /// -- dont want to insert the attempt if they ran out of time - if (!$outoftime) { - // if allow modattempts, then update the old attempt record, otherwise, insert new answer record - if (isset($USER->modattempts[$lesson->id])) { - $attempt->retry = $nretakes - 1; // they are going through on review, $nretakes will be too high - } - if (!$newattemptid = insert_record("lesson_attempts", $attempt)) { - error("Continue: attempt not inserted"); - } - } - /// CDC-FLAG /// - if (!$correctanswer and ($newpageid == 0)) { - // wrong answer and student is stuck on this page - check how many attempts - // the student has had at this page/question - $nattempts = count_records("lesson_attempts", "pageid", $pageid, "userid", $USER->id, - "retry", $nretakes); - - if ($nattempts >= $lesson->maxattempts) { - if ($lesson->maxattempts > 1) { // don't bother with message if only one attempt - echo "<p align=\"center\">(".get_string("maximumnumberofattempts", "lesson"). - " ".get_string("reached", "lesson")." - ". - get_string("movingtonextpage", "lesson").")</p>\n"; - } - $newpageid = LESSON_NEXTPAGE; - } - } - } - // convert jumpto page into a proper page id - if ($newpageid == 0) { - $newpageid = $pageid; - } elseif ($newpageid == LESSON_NEXTPAGE) { - if ($lesson->nextpagedefault) { - // in Flash Card mode... - // ... first get the page ids (lessonid the 5th param is needed to make get_records play) - $allpages = get_records("lesson_pages", "lessonid", $lesson->id, "id", "id,lessonid,qtype"); - shuffle ($allpages); - $found = false; - if ($lesson->nextpagedefault == LESSON_UNSEENPAGE) { - foreach ($allpages as $thispage) { - if (!count_records("lesson_attempts", "pageid", $thispage->id, "userid", - $USER->id, "retry", $nretakes)) { - $found = true; - break; - } - } - } elseif ($lesson->nextpagedefault == LESSON_UNANSWEREDPAGE) { - foreach ($allpages as $thispage) { - if ($thispage->qtype == LESSON_ESSAY) { - if (!count_records_select("lesson_attempts", "pageid = $thispage->id AND - userid = $USER->id AND retry = $nretakes")) { - $found = true; - break; - } - } else { - if (!count_records_select("lesson_attempts", "pageid = $thispage->id AND - userid = $USER->id AND correct = 1 AND retry = $nretakes")) { - $found = true; - break; - } - } - } - } - if ($found) { - $newpageid = $thispage->id; - if ($lesson->maxpages) { - // check number of pages viewed (in the lesson) - if (count_records("lesson_attempts", "lessonid", $lesson->id, "userid", $USER->id, - "retry", $nretakes) >= $lesson->maxpages) { - $newpageid = LESSON_EOL; - } - } - } else { - $newpageid = LESSON_EOL; - } - } elseif (!$newpageid = $page->nextpageid) { - // no nextpage go to end of lesson - $newpageid = LESSON_EOL; - } - } - - /// CDC-FLAG 6/21/04 /// this calculates the ongoing score - if ($lesson->ongoing) { - if (isteacher($course->id)) { - echo "<div align=\"center\">".get_string("teacherongoingwarning", "lesson")."</div><br>"; - } else { - $ntries = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); - if (isset($USER->modattempts[$lesson->id])) { - $ntries--; - } - lesson_calculate_ongoing_score($lesson, $USER->id, $ntries); - } - } - /// CDC-FLAG /// - - // display response (if there is one - there should be!) - if ($response) { - //$title = get_field("lesson_pages", "title", "id", $pageid); - //print_heading($title); - echo "<table width=\"80%\" border=\"0\" align=\"center\"><tr><td>\n"; - if ($lesson->review && !$correctanswer && !$isessayquestion) { - $nretakes = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); - $qattempts = count_records("lesson_attempts", "userid", $USER->id, "retry", $nretakes, "pageid", $pageid); - echo "<br><br>"; - if ($qattempts == 1) { - print_simple_box(get_string("firstwrong", "lesson"), "center"); - } else { - print_simple_box(get_string("secondpluswrong", "lesson"), "center"); - } - } else { - print_simple_box(format_text($response), 'center'); - } - echo "</td></tr></table>\n"; - } - } - - - /// CDC-FLAG 6/18/04 /// - this is where some jump numbers are interpreted - if($outoftime) { - $newpageid = LESSON_EOL; // ran out of time for the test, so go to eol - } elseif (isset($USER->modattempts[$lesson->id])) { - // make sure if the student is reviewing, that he/she sees the same pages/page path that he/she saw the first time - if ($USER->modattempts[$lesson->id] == $pageid) { // remember, this session variable holds the pageid of the last page that the user saw - $newpageid = LESSON_EOL; - } else { - $nretakes--; // make sure we are looking at the right try. - $attempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND userid = $USER->id AND retry = $nretakes", "timeseen", "id, pageid"); - $found = false; - $temppageid = 0; - foreach($attempts as $attempt) { - if ($found && $temppageid != $attempt->pageid) { // now try to find the next page, make sure next few attempts do no belong to current page - $newpageid = $attempt->pageid; - break; - } - if ($attempt->pageid == $pageid) { - $found = true; // if found current page - $temppageid = $attempt->pageid; - } - } - } - } elseif ($newpageid != LESSON_CLUSTERJUMP && $pageid != 0 && $newpageid > 0) { // going to check to see if the page that the user is going to view next, is a cluster page. If so, dont display, go into the cluster. The $newpageid > 0 is used to filter out all of the negative code jumps. - if (!$page = get_record("lesson_pages", "id", $newpageid)) { - error("Error: could not find page"); - } - if ($page->qtype == LESSON_CLUSTER) { - $newpageid = LESSON_CLUSTERJUMP; - } elseif ($page->qtype == LESSON_ENDOFCLUSTER) { - $jump = get_field("lesson_answers", "jumpto", "pageid", $page->id, "lessonid", $lesson->id); - if ($jump == LESSON_NEXTPAGE) { - if ($page->nextpageid == 0) { - $newpageid = LESSON_EOL; - } else { - $newpageid = $page->nextpageid; - } - } else { - $newpageid = $jump; - } - } - } elseif ($newpageid == LESSON_UNSEENBRANCHPAGE) { - if (isteacher($course->id)) { - if ($page->nextpageid == 0) { - $newpageid = LESSON_EOL; - } else { - $newpageid = $page->nextpageid; - } - } else { - $newpageid = lesson_unseen_question_jump($lesson->id, $USER->id, $pageid); - } - } elseif ($newpageid == LESSON_PREVIOUSPAGE) { - $newpageid = $page->prevpageid; - } elseif ($newpageid == LESSON_RANDOMPAGE) { - $newpageid = lesson_random_question_jump($lesson->id, $pageid); - } elseif ($newpageid == LESSON_CLUSTERJUMP) { - if (isteacher($course->id)) { - if ($page->nextpageid == 0) { // if teacher, go to next page - $newpageid = LESSON_EOL; - } else { - $newpageid = $page->nextpageid; - } - } else { - $newpageid = lesson_cluster_jump($lesson->id, $USER->id, $pageid); - } - } - - echo "<form name=\"pageform\" method =\"post\" action=\"view.php\">\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; - echo "<input type=\"hidden\" name=\"action\" value=\"navigation\">\n"; - echo "<input type=\"hidden\" name=\"pageid\" value=\"$newpageid\">\n"; - - if (isset($USER->modattempts[$lesson->id])) { - echo "<p align=\"center\">". - get_string("savechangesandeol", "lesson")."<br /><br />". - "<input type=\"submit\" onClick='pageform.pageid.value=".LESSON_EOL.";' name=\"save\" value=\"". - get_string("savechanges", "lesson")."\"></p>\n"; - echo "<p align=\"center\">".get_string("or", "lesson")."<br /><br />". - get_string("continuetoanswer", "lesson")."</p>\n"; - } - - if ($lesson->review && !$correctanswer && !$noanswer && !$isessayquestion) { - echo "<p align=\"center\"><input type=\"submit\" onClick='pageform.pageid.value=$pageid;' name=\"review\" value=\"". - get_string("reviewquestionback", "lesson")."\"></p>\n"; - echo "<p align=\"center\"><input type=\"submit\" name=\"continue\" value=\"". - get_string("reviewquestioncontinue", "lesson")."\"></p>\n"; - } else { - echo "<p align=\"center\"><input type=\"submit\" name=\"continue\" value=\"". - get_string("continue", "lesson")."\"></p>\n"; - } - echo "</form>\n"; - - if ($lesson->displayleft) { - echo "</td></tr></table>"; - } - -?> \ No newline at end of file diff --git a/mod/lesson/action/delete.php b/mod/lesson/action/delete.php deleted file mode 100644 index f977a077969..00000000000 --- a/mod/lesson/action/delete.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php - -/******************* delete ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - confirm_sesskey(); - - if (empty($_GET['pageid'])) { - error("Delete: pageid missing"); - } - $pageid = required_param('pageid', PARAM_INT); - if (!$thispage = get_record("lesson_pages", "id", $pageid)) { - error("Delete: page record not found"); - } - - print_string("deleting", "lesson"); - // first delete all the associated records... - delete_records("lesson_attempts", "pageid", $pageid); - // ...now delete the answers... - delete_records("lesson_answers", "pageid", $pageid); - // ..and the page itself - delete_records("lesson_pages", "id", $pageid); - - // repair the hole in the linkage - if (!$thispage->prevpageid) { - // this is the first page... - if (!$page = get_record("lesson_pages", "id", $thispage->nextpageid)) { - error("Delete: next page not found"); - } - if (!set_field("lesson_pages", "prevpageid", 0, "id", $page->id)) { - error("Delete: unable to set prevpage link"); - } - } elseif (!$thispage->nextpageid) { - // this is the last page... - if (!$page = get_record("lesson_pages", "id", $thispage->prevpageid)) { - error("Delete: prev page not found"); - } - if (!set_field("lesson_pages", "nextpageid", 0, "id", $page->id)) { - error("Delete: unable to set nextpage link"); - } - } else { - // page is in the middle... - if (!$prevpage = get_record("lesson_pages", "id", $thispage->prevpageid)) { - error("Delete: prev page not found"); - } - if (!$nextpage = get_record("lesson_pages", "id", $thispage->nextpageid)) { - error("Delete: next page not found"); - } - if (!set_field("lesson_pages", "nextpageid", $nextpage->id, "id", $prevpage->id)) { - error("Delete: unable to set next link"); - } - if (!set_field("lesson_pages", "prevpageid", $prevpage->id, "id", $nextpage->id)) { - error("Delete: unable to set prev link"); - } - } - redirect("view.php?id=$cm->id", get_string('deletedpage', 'lesson')); -?> \ No newline at end of file diff --git a/mod/lesson/action/editpage.php b/mod/lesson/action/editpage.php deleted file mode 100644 index 12eb0506244..00000000000 --- a/mod/lesson/action/editpage.php +++ /dev/null @@ -1,473 +0,0 @@ -<?php - -/************** edit page ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - // get the page - $pageid = required_param('pageid', PARAM_INT); - if (!$page = get_record("lesson_pages", "id", $pageid)) { - error("Edit page: page record not found"); - } - - if (isset($_GET['qtype'])) { - $page->qtype = required_param('qtype', PARAM_INT); - } - - // set of jump array - $jump = array(); - $jump[0] = get_string("thispage", "lesson"); - $jump[LESSON_NEXTPAGE] = get_string("nextpage", "lesson"); - //// CDC-FLAG 6/18/04 ///// - $jump[LESSON_PREVIOUSPAGE] = get_string("previouspage", "lesson"); - if(lesson_display_branch_jumps($lesson->id, $page->id)) { - $jump[LESSON_UNSEENBRANCHPAGE] = get_string("unseenpageinbranch", "lesson"); - $jump[LESSON_RANDOMPAGE] = get_string("randompageinbranch", "lesson"); - } - if ($page->qtype == LESSON_ENDOFBRANCH || $page->qtype == LESSON_BRANCHTABLE) { - $jump[LESSON_RANDOMBRANCH] = get_string("randombranch", "lesson"); - } - if(lesson_display_cluster_jump($lesson->id, $page->id) && $page->qtype != LESSON_BRANCHTABLE && $page->qtype != LESSON_ENDOFCLUSTER) { - $jump[LESSON_CLUSTERJUMP] = get_string("clusterjump", "lesson"); - } - //// CDC-FLAG ///// - $jump[LESSON_EOL] = get_string("endoflesson", "lesson"); - if (!$apageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { - error("Edit page: first page not found"); - } - while (true) { - if ($apageid) { - if (!$apage = get_record("lesson_pages", "id", $apageid)) { - error("Edit page: apage record not found"); - } - /// CDC-FLAG /// 6/15/04 removed != LESSON_ENDOFBRANCH... - if (trim($page->title)) { // ...nor nuffin pages - $jump[$apageid] = $apage->title; - } - $apageid = $apage->nextpageid; - } else { - // last page reached - break; - } - } - // give teacher a proforma - ?> - <form name="editpage" method="post" action="lesson.php"> - <input type="hidden" name="id" value="<?PHP echo $cm->id ?>"> - <input type="hidden" name="action" value="updatepage"> - <input type="hidden" name="pageid" value="<?PHP echo $pageid ?>"> - <input type="hidden" name="sesskey" value="<?PHP echo $USER->sesskey ?>"> - <input type="hidden" name="redisplay" value="0"> - <center><table cellpadding=5 border=1> - <?php - switch ($page->qtype) { - case LESSON_MULTICHOICE : - echo "<tr><td align=\"center\"><b>"; - echo get_string("questiontype", "lesson").":</b> \n"; - echo helpbutton("questiontypes", get_string("questiontype", "lesson"), "lesson")."<br>"; - lesson_qtype_menu($LESSON_QUESTION_TYPE, $page->qtype, - "lesson.php?id=$cm->id&action=editpage&pageid=$page->id", - "document.editpage.redisplay.value=1;document.editpage.submit();"); - echo "<br><br><b>".get_string("multianswer", "lesson").":</b> \n"; - if ($page->qoption) { - echo "<label for=\"qoption\" class=\"hidden-label\">Question Option</label><input type=\"checkbox\" id=\"qoption\" name=\"qoption\" value=\"1\" checked=\"checked\"/>"; //CDC hidden label added. - } else { - echo "<label for=\"qoption\" class=\"hidden-label\">Question Option</label><input type=\"checkbox\" id=\"qoption\" name=\"qoption\" value=\"1\"/>"; //CDC hidden label added. - } - helpbutton("questionoption", get_string("questionoption", "lesson"), "lesson"); - echo "</td></tr>\n"; - break; - case LESSON_SHORTANSWER : - echo "<tr><td align=\"center\"><b>"; - echo get_string("questiontype", "lesson").":</b> \n"; - echo helpbutton("questiontype", get_string("questiontype", "lesson"), "lesson")."<br>"; - lesson_qtype_menu($LESSON_QUESTION_TYPE, $page->qtype, - "lesson.php?id=$cm->id&action=editpage&pageid=$page->id", - "document.editpage.redisplay.value=1;document.editpage.submit();"); - echo "<br><br><b>".get_string("casesensitive", "lesson").":</b> \n"; - if ($page->qoption) { - echo "<label for=\"qoption\" class=\"hidden-label\">Question Option</label><input type=\"checkbox\" id=\"qoption\" name=\"qoption\" value=\"1\" checked=\"checked\"/>"; //CDC hidden label added. - } else { - echo "<label for=\"qoption\" class=\"hidden-label\">Question Option</label><input type=\"checkbox\" id=\"qoption\" name=\"qoption\" value=\"1\"/>"; //CDC hidden label added. - } - helpbutton("questionoption", get_string("questionoption", "lesson"), "lesson"); - echo "</td></tr>\n"; - break; - case LESSON_TRUEFALSE : - case LESSON_ESSAY : - case LESSON_MATCHING : - case LESSON_NUMERICAL : - echo "<tr><td align=\"center\"><b>"; - echo get_string("questiontype", "lesson").":</b> \n"; - echo helpbutton("questiontype", get_string("questiontype", "lesson"), "lesson")."<br>"; - lesson_qtype_menu($LESSON_QUESTION_TYPE, $page->qtype, - "lesson.php?id=$cm->id&action=editpage&pageid=$page->id", - "document.editpage.redisplay.value=1;document.editpage.submit();"); - echo "</td></tr>\n"; - break; - } - ?> - <tr><td align="center"> - <tr valign="top"> - <td><b><?php print_string("pagetitle", "lesson"); ?>:</b><br /> - <!-- //CDC hidden-label added.--><label for="title" class="hidden-label">Title</label><input type="text" id="title" name="title" size="80" maxsize="255" value="<?PHP echo $page->title ?>"></td> - </tr> - <?PHP - echo "<tr><td><b>"; - echo get_string("pagecontents", "lesson").":</b><br />\n"; - print_textarea($usehtmleditor, 25, 70, 630, 400, "contents", $page->contents); - use_html_editor("contents"); // always the editor - echo "</td></tr>\n"; - $n = 0; - switch ($page->qtype) { - case LESSON_BRANCHTABLE : - echo "<input type=\"hidden\" name=\"qtype\" value=\"$page->qtype\">\n"; - /// CDC-FLAG /// 6/16/04 - echo "<tr><td>\n"; - echo "<center>"; - if ($page->layout) { - echo "<input checked=\"checked\" name=\"layout\" type=\"checkbox\" value=\"1\">"; - } else { - echo "<input name=\"layout\" type=\"checkbox\" value=\"1\">"; - } - echo get_string("arrangebuttonshorizontally", "lesson")."<center>\n"; - echo "<br>"; - if ($page->display) { - echo "<center><input name=\"display\" type=\"checkbox\" value=\"1\" checked=\"checked\">"; - } else { - echo "<center><input name=\"display\" type=\"checkbox\" value=\"1\">"; - } - echo get_string("displayinleftmenu", "lesson")."<center>\n"; - echo "</td></tr>\n"; - /// CDC-FLAG /// - echo "<tr><td><b>".get_string("branchtable", "lesson")."</b> \n"; - break; - case LESSON_CLUSTER : - echo "<input type=\"hidden\" name=\"qtype\" value=\"$page->qtype\">\n"; - echo "<tr><td><b>".get_string("clustertitle", "lesson")."</b> \n"; - break; - case LESSON_ENDOFCLUSTER : - echo "<input type=\"hidden\" name=\"qtype\" value=\"$page->qtype\">\n"; - echo "<tr><td><b>".get_string("endofclustertitle", "lesson")."</b> \n"; - break; - case LESSON_ENDOFBRANCH : - echo "<input type=\"hidden\" name=\"qtype\" value=\"$page->qtype\">\n"; - echo "<tr><td><b>".get_string("endofbranch", "lesson")."</b> \n"; - break; - } - echo "</td></tr>\n"; - // get the answers in a set order, the id order - if ($answers = get_records("lesson_answers", "pageid", $page->id, "id")) { - foreach ($answers as $answer) { - $flags = intval($answer->flags); // force into an integer - $nplus1 = $n + 1; - echo "<input type=\"hidden\" name=\"answerid[$n]\" value=\"$answer->id\">\n"; - switch ($page->qtype) { - case LESSON_MATCHING: - if ($n == 0) { - echo "<tr><td><b>".get_string("correctresponse", "lesson").":</b>\n"; - if ($flags & LESSON_ANSWER_EDITOR) { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"answereditor[$n]\" class=\"hidden-label\">answereditor[$n]</label><input type=\"checkbox\" id=\"answereditor[$n]\" name=\"answereditor[$n]\" value=\"1\" - checked=\"checked\">"; //CDC hidden label added. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea($usehtmleditor, 20, 70, 630, 300, "answer[$n]", $answer->answer); - use_html_editor("answer[$n]"); // switch on the editor - } else { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"answereditor[$n]\" class=\"hidden-label\">answereditor[$n]</label><input type=\"checkbox\" id=\answereditor[$n]\" name=\"answereditor[$n]\" value=\"1\">"; //CDC hidden label. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 6, 70, 630, 300, "answer[$n]", $answer->answer); - } - } elseif ($n == 1) { - echo "<tr><td><b>".get_string("wrongresponse", "lesson").":</b>\n"; - if ($flags & LESSON_ANSWER_EDITOR) { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"answereditor[$n]\" class=\"hidden-label\">answereditor[$n]</label><input type=\"checkbox\" id=\"answereditor[$n]\" name=\"answereditor[$n]\" value=\"1\" - checked=\"checked\">"; //CDC hidden label added. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea($usehtmleditor, 20, 70, 630, 300, "answer[$n]", $answer->answer); - use_html_editor("answer[$n]"); // switch on the editor - } else { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"answereditor[$n]\" class=\"hidden-label\">answereditor[$n]</label><input type=\"checkbox\" id=\answereditor[$n]\" name=\"answereditor[$n]\" value=\"1\">"; //CDC hidden label. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 6, 70, 630, 300, "answer[$n]", $answer->answer); - } - } else { - $ncorrected = $n - 1; - echo "<tr><td><b>".get_string("answer", "lesson")." $ncorrected:</b>\n"; - if ($flags & LESSON_ANSWER_EDITOR) { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"answereditor[$n]\" class=\"hidden-label\">answereditor[$n]</label><input type=\"checkbox\" id=\"answereditor[$n]\" name=\"answereditor[$n]\" value=\"1\" - checked=\"checked\">"; //CDC hidden label added. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea($usehtmleditor, 20, 70, 630, 300, "answer[$n]", $answer->answer); - use_html_editor("answer[$n]"); // switch on the editor - } else { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"answereditor[$n]\" class=\"hidden-label\">answereditor[$n]</label><input type=\"checkbox\" id=\answereditor[$n]\" name=\"answereditor[$n]\" value=\"1\">"; //CDC hidden label. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 6, 70, 630, 300, "answer[$n]", $answer->answer); - } - echo "</td></tr>\n"; - echo "<tr><td><b>".get_string("matchesanswer", "lesson")." $ncorrected:</b>\n"; - if ($flags & LESSON_RESPONSE_EDITOR) { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"responseeditor[$n]\" class=\"hidden-label\">responseeditor[$n]</label><input type=\"checkbox\" id=\"responseeditor[$n]\" name=\"responseeditor[$n]\" value=\"1\" - checked=\"checked\">"; //CDC hidden label added. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea($usehtmleditor, 20, 70, 630, 300, "response[$n]", $answer->response); - use_html_editor("response[$n]"); // switch on the editor - } else { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"responseeditor[$n]\" class=\"hidden-label\">responseeditor[$n]</label><input type=\"checkbox\" id=\"responseeditor[$n]\" name=\"responseeditor[$n]\" value=\"1\">"; //CDC hidden label added. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 6, 70, 630, 300, "response[$n]", $answer->response); - } - } - echo "</td></tr>\n"; - break; - case LESSON_TRUEFALSE: - case LESSON_MULTICHOICE: - case LESSON_SHORTANSWER: - case LESSON_NUMERICAL: - echo "<tr><td><b>".get_string("answer", "lesson")." $nplus1:</b>\n"; - if ($flags & LESSON_ANSWER_EDITOR) { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"answereditor[$n]\" class=\"hidden-label\">answereditor[$n]</label><input type=\"checkbox\" id=\"answereditor[$n]\" name=\"answereditor[$n]\" value=\"1\" - checked=\"checked\">"; //CDC hidden label added. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea($usehtmleditor, 20, 70, 630, 300, "answer[$n]", $answer->answer); - use_html_editor("answer[$n]"); // switch on the editor - } else { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"answereditor[$n]\" class=\"hidden-label\">answereditor[$n]</label><input type=\"checkbox\" id=\answereditor[$n]\" name=\"answereditor[$n]\" value=\"1\">"; //CDC hidden label. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 6, 70, 630, 300, "answer[$n]", $answer->answer); - } - echo "</td></tr>\n"; - echo "<tr><td><b>".get_string("response", "lesson")." $nplus1:</b>\n"; - if ($flags & LESSON_RESPONSE_EDITOR) { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"responseeditor[$n]\" class=\"hidden-label\">responseeditor[$n]</label><input type=\"checkbox\" id=\"responseeditor[$n]\" name=\"responseeditor[$n]\" value=\"1\" - checked=\"checked\">"; //CDC hidden label added. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea($usehtmleditor, 20, 70, 630, 300, "response[$n]", $answer->response); - use_html_editor("response[$n]"); // switch on the editor - } else { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"responseeditor[$n]\" class=\"hidden-label\">responseeditor[$n]</label><input type=\"checkbox\" id=\"responseeditor[$n]\" name=\"responseeditor[$n]\" value=\"1\">"; //CDC hidden label added. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 6, 70, 630, 300, "response[$n]", $answer->response); - } - echo "</td></tr>\n"; - break; - case LESSON_BRANCHTABLE: - echo "<tr><td><b>".get_string("description", "lesson")." $nplus1:</b>\n"; - if ($flags & LESSON_ANSWER_EDITOR) { - echo " [".get_string("useeditor", "lesson").": ". - "<label for=\"answereditor[$n]\" class=\"hidden-label\">answereditor[$n]</label><input type=\"checkbox\" name=\"answereditor[$n]\" value=\"1\" - checked=\"checked\">"; //CDC hidden label added. - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea($usehtmleditor, 20, 70, 630, 300, "answer[$n]", $answer->answer); - use_html_editor("answer[$n]"); // switch on the editor CDC-FLAG added in this line... editor would not turn on w/o it - } else { - echo " [".get_string("useeditor", "lesson").": ". - "<input type=\"checkbox\" name=\"answereditor[$n]\" value=\"1\">"; - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 10, 70, 630, 300, "answer[$n]", $answer->answer); - } - echo "</td></tr>\n"; - break; - } - switch ($page->qtype) { - case LESSON_MATCHING : - if ($n == 2) { - echo "<tr><td><b>".get_string("correctanswerjump", "lesson").":</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$n]", $answer->jumpto, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if($lesson->custom) - echo get_string("correctanswerscore", "lesson").": <input type=\"text\" name=\"score[$n]\" value=\"$answer->score\" size=\"5\">"; - } - if ($n == 3) { - echo "<tr><td><b>".get_string("wronganswerjump", "lesson").":</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$n]", $answer->jumpto, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if($lesson->custom) - echo get_string("wronganswerscore", "lesson").": <input type=\"text\" name=\"score[$n]\" value=\"$answer->score\" size=\"5\">"; - } - echo "</td></tr>\n"; - break; - case LESSON_ESSAY : - echo "<tr><td><b>".get_string("jump", "lesson").":</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$n]", $answer->jumpto, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if($lesson->custom) { - echo get_string("score", "lesson").": <input type=\"text\" name=\"score[$n]\" value=\"$answer->score\" size=\"5\">"; - } - echo "</td></tr>\n"; - break; - case LESSON_TRUEFALSE: - case LESSON_MULTICHOICE: - case LESSON_SHORTANSWER: - case LESSON_NUMERICAL: - echo "<tr><td><b>".get_string("jump", "lesson")." $nplus1:</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$n]", $answer->jumpto, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if($lesson->custom) { - echo get_string("score", "lesson")." $nplus1: <input type=\"text\" name=\"score[$n]\" value=\"$answer->score\" size=\"5\">"; - } - echo "</td></tr>\n"; - break; - case LESSON_BRANCHTABLE: - case LESSON_CLUSTER: - case LESSON_ENDOFCLUSTER: - case LESSON_ENDOFBRANCH: - echo "<tr><td><b>".get_string("jump", "lesson")." $nplus1:</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$n]", $answer->jumpto, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - echo "</td></tr>\n"; - break; - } - $n++; - if ($page->qtype == LESSON_ESSAY) { - break; // only one answer for essays - } - } - } - if ($page->qtype != LESSON_ENDOFBRANCH && $page->qtype != LESSON_CLUSTER && $page->qtype != LESSON_ENDOFCLUSTER) { /// CDC-FLAG 6/17/04 added to the condition /// - if ($page->qtype == LESSON_MATCHING) { - $maxanswers = $lesson->maxanswers + 2; - } else { - $maxanswers = $lesson->maxanswers; - } - for ($i = $n; $i < $maxanswers; $i++) { - if ($page->qtype == LESSON_TRUEFALSE && $i > 1) { - break; // stop printing answers... only need two for true/false - } - $iplus1 = $i + 1; - echo "<input type=\"hidden\" name=\"answerid[$i]\" value=\"0\">\n"; - switch ($page->qtype) { - case LESSON_MATCHING: - $icorrected = $i - 1; - echo "<tr><td><b>".get_string("answer", "lesson")." $icorrected:</b>\n"; - echo " [".get_string("useeditor", "lesson").": ". - "<input type=\"checkbox\" name=\"answereditor[$i]\" value=\"1\">"; - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 10, 70, 630, 300, "answer[$i]"); - echo "</td></tr>\n"; - echo "<tr><td><b>".get_string("matchesanswer", "lesson")." $icorrected:</b>\n"; - echo " [".get_string("useeditor", "lesson").": ". - "<input type=\"checkbox\" name=\"responseeditor[$i]\" value=\"1\">"; - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 10, 70, 630, 300, "response[$i]"); - echo "</td></tr>\n"; - break; - case LESSON_TRUEFALSE: - case LESSON_MULTICHOICE: - case LESSON_SHORTANSWER: - case LESSON_NUMERICAL: - echo "<tr><td><b>".get_string("answer", "lesson")." $iplus1:</b>\n"; - echo " [".get_string("useeditor", "lesson").": ". - "<input type=\"checkbox\" name=\"answereditor[$i]\" value=\"1\">"; - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 10, 70, 630, 300, "answer[$i]"); - echo "</td></tr>\n"; - echo "<tr><td><b>".get_string("response", "lesson")." $iplus1:</b>\n"; - echo " [".get_string("useeditor", "lesson").": ". - "<input type=\"checkbox\" name=\"responseeditor[$i]\" value=\"1\">"; - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 10, 70, 630, 300, "response[$i]"); - echo "</td></tr>\n"; - break; - case LESSON_BRANCHTABLE: - echo "<tr><td><b>".get_string("description", "lesson")." $iplus1:</b>\n"; - echo " [".get_string("useeditor", "lesson").": ". - "<input type=\"checkbox\" name=\"answereditor[$i]\" value=\"1\">"; - helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); - echo "]<br />\n"; - print_textarea(false, 10, 70, 630, 300, "answer[$i]"); - echo "</td></tr>\n"; - break; - } - switch ($page->qtype) { - case LESSON_ESSAY : - if ($i < 1) { - echo "<tr><td><B>".get_string("jump", "lesson").":</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if($lesson->custom) { - echo get_string("score", "lesson").": <input type=\"text\" name=\"score[$i]\" value=\"1\" size=\"5\">"; - } - echo "</td></tr>\n"; - } - break; - case LESSON_MATCHING : - if ($i == 2) { - echo "<tr><td><b>".get_string("correctanswerjump", "lesson").":</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$i]", $answer->jumpto, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if($lesson->custom) - echo get_string("correctanswerscore", "lesson").": <input type=\"text\" name=\"score[$i]\" value=\"$answer->score\" size=\"5\">"; - } - if ($i == 3) { - echo "<tr><td><b>".get_string("wronganswerjump", "lesson").":</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$i]", $answer->jumpto, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if($lesson->custom) - echo get_string("wronganswerscore", "lesson").": <input type=\"text\" name=\"score[$i]\" value=\"$answer->score\" size=\"5\">"; - } - - echo "</td></tr>\n"; - break; - case LESSON_TRUEFALSE: - case LESSON_MULTICHOICE: - case LESSON_SHORTANSWER: - case LESSON_NUMERICAL: - echo "<tr><td><B>".get_string("jump", "lesson")." $iplus1:</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - if($lesson->custom) { - echo get_string("score", "lesson")." $iplus1: <input type=\"text\" name=\"score[$i]\" value=\"0\" size=\"5\">"; - } - echo "</td></tr>\n"; - break; - case LESSON_BRANCHTABLE : - echo "<tr><td><B>".get_string("jump", "lesson")." $iplus1:</b> \n"; - lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); - helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); - echo "</td></tr>\n"; - break; - } - } - } - // close table and form - ?> - </table><br /> - <input type="button" value="<?php print_string("redisplaypage", "lesson") ?>" - onClick="document.editpage.redisplay.value=1;document.editpage.submit();" /> - <input type="submit" value="<?php print_string("savepage", "lesson") ?>" /> - <input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> - </center> - </form> \ No newline at end of file diff --git a/mod/lesson/action/insertpage.php b/mod/lesson/action/insertpage.php deleted file mode 100644 index d4505b34f60..00000000000 --- a/mod/lesson/action/insertpage.php +++ /dev/null @@ -1,191 +0,0 @@ -<?php - -/****************** insert page ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - confirm_sesskey(); - - $timenow = time(); - - $form = data_submitted(); - $newpage = new stdClass; - $newanswer = new stdClass; - if ($form->pageid) { - // the new page is not the first page - if (!$page = get_record("lesson_pages", "id", $form->pageid)) { - error("Insert page: page record not found"); - } - $newpage->lessonid = clean_param($lesson->id, PARAM_INT); - $newpage->prevpageid = clean_param($form->pageid, PARAM_INT); - $newpage->nextpageid = clean_param($page->nextpageid, PARAM_INT); - $newpage->timecreated = $timenow; - $newpage->qtype = $form->qtype; - if (isset($form->qoption)) { - $newpage->qoption = clean_param($form->qoption, PARAM_INT); - } else { - $newpage->qoption = 0; - } - /// CDC-FLAG /// 6/16/04 - if (isset($form->layout)) { - $newpage->layout = clean_param($form->layout, PARAM_INT); - } else { - $newpage->layout = 0; - } - if (isset($form->display)) { - $newpage->display = clean_param($form->display, PARAM_INT); - } else { - $newpage->display = 0; - } - /// CDC-FLAG /// - $newpage->title = clean_param($form->title, PARAM_CLEAN); - $newpage->contents = clean_param(trim($form->contents), PARAM_CLEANHTML); - $newpageid = insert_record("lesson_pages", $newpage); - if (!$newpageid) { - error("Insert page: new page not inserted"); - } - // update the linked list (point the previous page to this new one) - if (!set_field("lesson_pages", "nextpageid", $newpageid, "id", $newpage->prevpageid)) { - error("Insert page: unable to update next link"); - } - if ($page->nextpageid) { - // new page is not the last page - if (!set_field("lesson_pages", "prevpageid", $newpageid, "id", $page->nextpageid)) { - error("Insert page: unable to update previous link"); - } - } - } else { - // new page is the first page - // get the existing (first) page (if any) - if (!$page = get_record_select("lesson_pages", "lessonid = $lesson->id AND prevpageid = 0")) { - // there are no existing pages - $newpage->lessonid = $lesson->id; - $newpage->prevpageid = 0; // this is a first page - $newpage->nextpageid = 0; // this is the only page - $newpage->timecreated = $timenow; - $newpage->qtype = clean_param($form->qtype, PARAM_INT); - if (isset($form->qoption)) { - $newpage->qoption = clean_param($form->qoption, PARAM_INT); - } else { - $newpage->qoption = 0; - } - /// CDC-FLAG /// 6/16/04 - if (isset($form->layout)) { - $newpage->layout = clean_param($form->layout, PARAM_INT); - } else { - $newpage->layout = 0; - } - if (isset($form->display)) { - $newpage->display = clean_param($form->display, PARAM_INT); - } else { - $newpage->display = 0; - } - /// CDC-FLAG /// - $newpage->title = clean_param($form->title, PARAM_CLEAN); - $newpage->contents = clean_param(trim($form->contents), PARAM_CLEANHTML); - $newpageid = insert_record("lesson_pages", $newpage); - if (!$newpageid) { - error("Insert page: new first page not inserted"); - } - } else { - // there are existing pages put this at the start - $newpage->lessonid = $lesson->id; - $newpage->prevpageid = 0; // this is a first page - $newpage->nextpageid = $page->id; - $newpage->timecreated = $timenow; - $newpage->qtype = clean_param($form->qtype, PARAM_INT); - if (isset($form->qoption)) { - $newpage->qoption = clean_param($form->qoption, PARAM_INT); - } else { - $newpage->qoption = 0; - } - /// CDC-FLAG /// 6/16/04 - if (isset($form->layout)) { - $newpage->layout = clean_param($form->layout, PARAM_INT); - } else { - $newpage->layout = 0; - } - if (isset($form->display)) { - $newpage->display = clean_param($form->display, PARAM_INT); - } else { - $newpage->display = 0; - } - /// CDC-FLAG /// - $newpage->title = clean_param($form->title, PARAM_CLEAN); - $newpage->contents = clean_param(trim($form->contents), PARAM_CLEANHTML); - $newpageid = insert_record("lesson_pages", $newpage); - if (!$newpageid) { - error("Insert page: first page not inserted"); - } - // update the linked list - if (!set_field("lesson_pages", "prevpageid", $newpageid, "id", $newpage->nextpageid)) { - error("Insert page: unable to update link"); - } - } - } - // now add the answers - /// CDC-FLAG 6/16/04 added new code to handle essays - if ($form->qtype == LESSON_ESSAY) { - $newanswer->lessonid = $lesson->id; - $newanswer->pageid = $newpageid; - $newanswer->timecreated = $timenow; - if (isset($form->jumpto[0])) { - $newanswer->jumpto = clean_param($form->jumpto[0], PARAM_INT); - } - if (isset($form->score[0])) { - $newanswer->score = clean_param($form->score[0], PARAM_INT); - } - $newanswerid = insert_record("lesson_answers", $newanswer); - if (!$newanswerid) { - error("Insert Page: answer record not inserted"); - } - } else { - if ($form->qtype == LESSON_MATCHING) { - // need to add two to offset correct response and wrong response - $lesson->maxanswers = $lesson->maxanswers + 2; - } - for ($i = 0; $i < $lesson->maxanswers; $i++) { - if (trim(strip_tags($form->answer[$i]))) { // strip_tags because the HTML editor adds <p><br />... - $newanswer->lessonid = $lesson->id; - $newanswer->pageid = $newpageid; - $newanswer->timecreated = $timenow; - $newanswer->answer = clean_param(trim($form->answer[$i]), PARAM_CLEANHTML); - if (isset($form->response[$i])) { - $newanswer->response = clean_param(trim($form->response[$i]), PARAM_CLEANHTML); - } - if (isset($form->jumpto[$i])) { - $newanswer->jumpto = clean_param($form->jumpto[$i], PARAM_INT); - } - /// CDC-FLAG /// - if ($lesson->custom) { - if (isset($form->score[$i])) { - $newanswer->score = clean_param($form->score[$i], PARAM_INT); - } - } - /// CDC-FLAG /// - $newanswerid = insert_record("lesson_answers", $newanswer); - if (!$newanswerid) { - error("Insert Page: answer record $i not inserted"); - } - } else { - if ($form->qtype == LESSON_MATCHING) { - if ($i < 2) { - $newanswer->lessonid = $lesson->id; - $newanswer->pageid = $newpageid; - $newanswer->timecreated = $timenow; - $newanswerid = insert_record("lesson_answers", $newanswer); - if (!$newanswerid) { - error("Insert Page: answer record $i not inserted"); - } - } - } else { - break; - } - } - } - } - /// CDC-FLAG /// - redirect("view.php?id=$cm->id", get_string('insertedpage', 'lesson')); -?> \ No newline at end of file diff --git a/mod/lesson/action/move.php b/mod/lesson/action/move.php deleted file mode 100644 index 1c4f4a818b0..00000000000 --- a/mod/lesson/action/move.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -/****************** move ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - $pageid = required_param('pageid', PARAM_INT); - $title = get_field("lesson_pages", "title", "id", $pageid); - print_heading(get_string("moving", "lesson", $title)); - - if (!$page = get_record_select("lesson_pages", "lessonid = $lesson->id AND prevpageid = 0")) { - error("Move: first page not found"); - } - - echo "<center><table cellpadding=\"5\" border=\"1\">\n"; - echo "<tr><td><a href=\"lesson.php?id=$cm->id&amp;sesskey=".$USER->sesskey."&amp;action=moveit&amp;pageid=$pageid&amp;after=0\"><small>". - get_string("movepagehere", "lesson")."</small></a></td></tr>\n"; - while (true) { - if ($page->id != $pageid) { - if (!$title = trim($page->title)) { - $title = "<< ".get_string("notitle", "lesson")." >>"; - } - echo "<tr><td><b>$title</b></td></tr>\n"; - echo "<tr><td><a href=\"lesson.php?id=$cm->id&amp;sesskey=".$USER->sesskey."&amp;action=moveit&amp;pageid=$pageid&amp;after={$page->id}\"><small>". - get_string("movepagehere", "lesson")."</small></a></td></tr>\n"; - } - if ($page->nextpageid) { - if (!$page = get_record("lesson_pages", "id", $page->nextpageid)) { - error("Teacher view: Next page not found!"); - } - } else { - // last page reached - break; - } - } - echo "</table>\n"; -?> \ No newline at end of file diff --git a/mod/lesson/action/moveit.php b/mod/lesson/action/moveit.php deleted file mode 100644 index 0b3e11f64b8..00000000000 --- a/mod/lesson/action/moveit.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/****************** moveit ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - confirm_sesskey(); - - $pageid = required_param('pageid', PARAM_INT); // page to move - if (!$page = get_record("lesson_pages", "id", $pageid)) { - error("Moveit: page not found"); - } - $after = required_param('after', PARAM_INT); // target page - - print_heading(get_string("moving", "lesson", $page->title)); - - // first step. determine the new first page - // (this is done first as the current first page will be lost in the next step) - if (!$after) { - // the moved page is the new first page - $newfirstpageid = $pageid; - // reset $after so that is points to the last page - // (when the pages are in a ring this will in effect be the first page) - if ($page->nextpageid) { - if (!$after = get_field("lesson_pages", "id", "lessonid", $lesson->id, "nextpageid", 0)) { - error("Moveit: last page id not found"); - } - } else { - // the page being moved is the last page, so the new last page will be - $after = $page->prevpageid; - } - } elseif (!$page->prevpageid) { - // the page to be moved was the first page, so the following page must be the new first page - $newfirstpageid = $page->nextpageid; - } else { - // the current first page remains the first page - if (!$newfirstpageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { - error("Moveit: current first page id not found"); - } - } - // the rest is all unconditional... - - // second step. join pages into a ring - if (!$firstpageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { - error("Moveit: firstpageid not found"); - } - if (!$lastpageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "nextpageid", 0)) { - error("Moveit: lastpage not found"); - } - if (!set_field("lesson_pages", "prevpageid", $lastpageid, "id", $firstpageid)) { - error("Moveit: unable to update link"); - } - if (!set_field("lesson_pages", "nextpageid", $firstpageid, "id", $lastpageid)) { - error("Moveit: unable to update link"); - } - - // third step. remove the page to be moved - if (!$prevpageid = get_field("lesson_pages", "prevpageid", "id", $pageid)) { - error("Moveit: prevpageid not found"); - } - if (!$nextpageid = get_field("lesson_pages", "nextpageid", "id", $pageid)) { - error("Moveit: nextpageid not found"); - } - if (!set_field("lesson_pages", "nextpageid", $nextpageid, "id", $prevpageid)) { - error("Moveit: unable to update link"); - } - if (!set_field("lesson_pages", "prevpageid", $prevpageid, "id", $nextpageid)) { - error("Moveit: unable to update link"); - } - - // fourth step. insert page to be moved in new place... - if (!$nextpageid = get_field("lesson_pages", "nextpageid", "id", $after)) { - error("Movit: nextpageid not found"); - } - if (!set_field("lesson_pages", "nextpageid", $pageid, "id", $after)) { - error("Moveit: unable to update link"); - } - if (!set_field("lesson_pages", "prevpageid", $pageid, "id", $nextpageid)) { - error("Moveit: unable to update link"); - } - // ...and set the links in the moved page - if (!set_field("lesson_pages", "prevpageid", $after, "id", $pageid)) { - error("Moveit: unable to update link"); - } - if (!set_field("lesson_pages", "nextpageid", $nextpageid, "id", $pageid)) { - error("Moveit: unable to update link"); - } - - // fifth step. break the ring - if (!$newlastpageid = get_field("lesson_pages", "prevpageid", "id", $newfirstpageid)) { - error("Moveit: newlastpageid not found"); - } - if (!set_field("lesson_pages", "prevpageid", 0, "id", $newfirstpageid)) { - error("Moveit: unable to update link"); - } - if (!set_field("lesson_pages", "nextpageid", 0, "id", $newlastpageid)) { - error("Moveit: unable to update link"); - } - redirect("view.php?id=$cm->id", get_string('movedpage', 'lesson')); -?> \ No newline at end of file diff --git a/mod/lesson/action/updatepage.php b/mod/lesson/action/updatepage.php deleted file mode 100644 index 85d2f85fca7..00000000000 --- a/mod/lesson/action/updatepage.php +++ /dev/null @@ -1,148 +0,0 @@ -<?php - -/****************** update page ************************************/ - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - confirm_sesskey(); - - $timenow = time(); - $form = data_submitted(); - - $page = new stdClass; - $page->id = clean_param($form->pageid, PARAM_INT); - $page->timemodified = $timenow; - $page->qtype = clean_param($form->qtype, PARAM_INT); - if (isset($form->qoption)) { - $page->qoption = clean_param($form->qoption, PARAM_INT); - } else { - $page->qoption = 0; - } - /// CDC-FLAG /// 6/16/04 - if (isset($form->layout)) { - $page->layout = clean_param($form->layout, PARAM_INT); - } else { - $page->layout = 0; - } - if (isset($form->display)) { - $page->display = clean_param($form->display, PARAM_INT); - } else { - $page->display = 0; - } - /// CDC-FLAG /// - $page->title = clean_param($form->title, PARAM_CLEAN); - $page->contents = clean_param(trim($form->contents), PARAM_CLEANHTML); - if (!update_record("lesson_pages", $page)) { - error("Update page: page not updated"); - } - if ($page->qtype == LESSON_ENDOFBRANCH || $page->qtype == LESSON_ESSAY || $page->qtype == LESSON_CLUSTER || $page->qtype == LESSON_ENDOFCLUSTER) { - // there's just a single answer with a jump - $oldanswer = new stdClass; - $oldanswer->id = $form->answerid[0]; - $oldanswer->timemodified = $timenow; - $oldanswer->jumpto = clean_param($form->jumpto[0], PARAM_INT); - if (isset($form->score[0])) { - $oldanswer->score = clean_param($form->score[0], PARAM_INT); - } - // delete other answers this if mainly for essay questions. If one switches from using a qtype like Multichoice, - // then switches to essay, the old answers need to be removed because essay is - // supposed to only have one answer record - if ($answers = get_records_select("lesson_answers", "pageid = ".$page->id)) { - foreach ($answers as $answer) { - if ($answer->id != clean_param($form->answerid[0], PARAM_INT)) { - if (!delete_records("lesson_answers", "id", $answer->id)) { - error("Update page: unable to delete answer record"); - } - } - } - } - if (!update_record("lesson_answers", $oldanswer)) { - error("Update page: EOB not updated"); - } - } else { - // it's an "ordinary" page - if ($page->qtype == LESSON_MATCHING) { - // need to add two to offset correct response and wrong response - $lesson->maxanswers = $lesson->maxanswers + 2; - } - for ($i = 0; $i < $lesson->maxanswers; $i++) { - // strip tags because the editor gives <p><br />... - // also save any answers where the editor is (going to be) used - if (trim(strip_tags($form->answer[$i])) or $form->answereditor[$i] or $form->responseeditor[$i]) { - if ($form->answerid[$i]) { - $oldanswer = new stdClass; - $oldanswer->id = clean_param($form->answerid[$i], PARAM_INT); - $oldanswer->flags = clean_param($form->answereditor[$i], PARAM_INT) * LESSON_ANSWER_EDITOR + - clean_param($form->responseeditor[$i], PARAM_INT) * LESSON_RESPONSE_EDITOR; - $oldanswer->timemodified = $timenow; - $oldanswer->answer = clean_param(trim($form->answer[$i]), PARAM_CLEANHTML); - if (isset($form->response[$i])) { - $oldanswer->response = clean_param(trim($form->response[$i]), PARAM_CLEANHTML); - } - $oldanswer->jumpto = clean_param($form->jumpto[$i], PARAM_INT); - /// CDC-FLAG /// - if ($lesson->custom) { - $oldanswer->score = clean_param($form->score[$i], PARAM_INT); - } - /// CDC-FLAG /// - if (!update_record("lesson_answers", $oldanswer)) { - error("Update page: answer $i not updated"); - } - } else { - // it's a new answer - $newanswer = new stdClass; // need to clear id if more than one new answer is ben added - $newanswer->lessonid = $lesson->id; - $newanswer->pageid = $page->id; - $newanswer->flags = clean_param($form->answereditor[$i], PARAM_INT) * LESSON_ANSWER_EDITOR + - clean_param($form->responseeditor[$i], PARAM_INT) * LESSON_RESPONSE_EDITOR; - $newanswer->timecreated = $timenow; - $newanswer->answer = clean_param(trim($form->answer[$i]), PARAM_CLEANHTML); - if (isset($form->response[$i])) { - $newanswer->response = clean_param(trim($form->response[$i]), PARAM_CLEANHTML); - } - $newanswer->jumpto = clean_param($form->jumpto[$i], PARAM_INT); - /// CDC-FLAG /// - $newanswer->score = clean_param($form->score[$i], PARAM_INT); - /// CDC-FLAG /// - $newanswerid = insert_record("lesson_answers", $newanswer); - if (!$newanswerid) { - error("Update page: answer record not inserted"); - } - } - } else { - if ($form->qtype == LESSON_MATCHING) { - if ($i >= 2) { - if ($form->answerid[$i]) { - // need to delete blanked out answer - if (!delete_records("lesson_answers", "id", clean_param($form->answerid[$i], PARAM_INT))) { - error("Update page: unable to delete answer record"); - } - } - } else { - $oldanswer = new stdClass; - $oldanswer->id = clean_param($form->answerid[$i], PARAM_INT); - $oldanswer->flags = clean_param($form->answereditor[$i], PARAM_INT) * LESSON_ANSWER_EDITOR + - clean_param($form->responseeditor[$i], PARAM_INT) * LESSON_RESPONSE_EDITOR; - $oldanswer->timemodified = $timenow; - $oldanswer->answer = NULL; - if (!update_record("lesson_answers", $oldanswer)) { - error("Update page: answer $i not updated"); - } - } - } elseif ($form->answerid[$i]) { - // need to delete blanked out answer - if (!delete_records("lesson_answers", "id", clean_param($form->answerid[$i], PARAM_INT))) { - error("Update page: unable to delete answer record"); - } - } - } - } - } - if ($form->redisplay) { - redirect("lesson.php?id=$cm->id&amp;action=editpage&amp;pageid=$page->id"); - } else { - redirect("view.php?id=$cm->id", get_string('updatedpage', 'lesson')); - } -?> \ No newline at end of file diff --git a/mod/lesson/backuplib.php b/mod/lesson/backuplib.php index 317ad30f82c..8f9be96a046 100644 --- a/mod/lesson/backuplib.php +++ b/mod/lesson/backuplib.php @@ -1,22 +1,19 @@ <?PHP //$Id$ - //This php script contains all the stuff to backup/restore //lesson mods //This is the "graphical" structure of the lesson mod: // - // lesson_default lesson ----------------------------|--------------------------|--------------------------| - // (UL, pk->id,fk->courseid) (CL,pk->id) | | | - // | | | | - // | lesson_grades lesson_high_scores lesson_timer - // | (UL, pk->id,fk->lessonid) (UL, pk->id,fk->lessonid) (UL, pk->id,fk->lessonid) - // | - // | - // lesson_pages---------------------------| - // (CL,pk->id,fk->lessonid) | + // lesson ----------------------------| + // (CL,pk->id) | // | | - // | lesson_branch - // | (UL, pk->id,fk->pageid) + // | lesson_grades + // | (UL, pk->id,fk->lessonid) + // lesson_pages + // (CL,pk->id,fk->lessonid) + // | + // | + // | // lesson_answers // (CL,pk->id,fk->pageid) // | @@ -51,57 +48,26 @@ fwrite ($bf,full_tag("ID",4,false,$lesson->id)); fwrite ($bf,full_tag("MODTYPE",4,false,"lesson")); fwrite ($bf,full_tag("NAME",4,false,$lesson->name)); - fwrite ($bf,full_tag("PRACTICE",4,false,$lesson->practice)); - fwrite ($bf,full_tag("MODATTEMPTS",4,false,$lesson->modattempts)); - fwrite ($bf,full_tag("PASSWORD",4,false,$lesson->password)); - fwrite ($bf,full_tag("USEPASSWORD",4,false,$lesson->usepassword)); fwrite ($bf,full_tag("GRADE",4,false,$lesson->grade)); - fwrite ($bf,full_tag("CUSTOM",4,false,$lesson->custom)); - fwrite ($bf,full_tag("ONGOING",4,false,$lesson->ongoing)); fwrite ($bf,full_tag("USEMAXGRADE",4,false,$lesson->usemaxgrade)); fwrite ($bf,full_tag("MAXANSWERS",4,false,$lesson->maxanswers)); fwrite ($bf,full_tag("MAXATTEMPTS",4,false,$lesson->maxattempts)); - fwrite ($bf,full_tag("REVIEW",4,false,$lesson->review)); fwrite ($bf,full_tag("NEXTPAGEDEFAULT",4,false,$lesson->nextpagedefault)); fwrite ($bf,full_tag("MINQUESTIONS",4,false,$lesson->minquestions)); fwrite ($bf,full_tag("MAXPAGES",4,false,$lesson->maxpages)); - fwrite ($bf,full_tag("TIMED",4,false,$lesson->timed)); - fwrite ($bf,full_tag("MAXTIME",4,false,$lesson->maxtime)); fwrite ($bf,full_tag("RETAKE",4,false,$lesson->retake)); - fwrite ($bf,full_tag("TREE",4,false,$lesson->tree)); - fwrite ($bf,full_tag("SLIDESHOW",4,false,$lesson->slideshow)); - fwrite ($bf,full_tag("WIDTH",4,false,$lesson->width)); - fwrite ($bf,full_tag("HEIGHT",4,false,$lesson->height)); - fwrite ($bf,full_tag("BGCOLOR",4,false,$lesson->bgcolor)); - fwrite ($bf,full_tag("DISPLAYLEFT",4,false,$lesson->displayleft)); - fwrite ($bf,full_tag("SHOWHIGHSCORES",4,false,$lesson->highscores)); - fwrite ($bf,full_tag("MAXHIGHSCORES",4,false,$lesson->maxhighscores)); fwrite ($bf,full_tag("AVAILABLE",4,false,$lesson->available)); fwrite ($bf,full_tag("DEADLINE",4,false,$lesson->deadline)); fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$lesson->timemodified)); - //Now we backup lesson pages $status = backup_lesson_pages($bf,$preferences,$lesson->id); - //if we've selected to backup users info, then backup grades, high scores, and timer info + //if we've selected to backup users info, then backup grades if ($status) { if ($preferences->mods["lesson"]->userinfo) { - if(!backup_lesson_grades($bf, $preferences, $lesson->id)) { - return false; - } - if (!backup_lesson_high_scores($bf, $preferences, $lesson->id)) { - return false; - } - if (!backup_lesson_timer($bf, $preferences, $lesson->id)) { - return false; - } - } - // back up the default for the course. There might not be one, but if there - // is, there will only be one. - $status = backup_lesson_default($bf,$preferences); - //End mod - if ($status) { - $status =fwrite ($bf,end_tag("MOD",3,true)); + $status = backup_lesson_grades($bf, $preferences, $lesson->id); } + //End mod + $status =fwrite ($bf,end_tag("MOD",3,true)); } } } @@ -127,20 +93,12 @@ fwrite ($bf,full_tag("PAGEID",6,false,$page->id)); // needed to fix (absolute) jumps fwrite ($bf,full_tag("QTYPE",6,false,$page->qtype)); fwrite ($bf,full_tag("QOPTION",6,false,$page->qoption)); - fwrite ($bf,full_tag("LAYOUT",6,false,$page->layout)); - fwrite ($bf,full_tag("DISPLAY",6,false,$page->display)); fwrite ($bf,full_tag("TIMECREATED",6,false,$page->timecreated)); fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$page->timemodified)); fwrite ($bf,full_tag("TITLE",6,false,$page->title)); fwrite ($bf,full_tag("CONTENTS",6,false,$page->contents)); //Now we backup lesson answers for this page $status = backup_lesson_answers($bf, $preferences, $page->id); - // backup branch table info for branch tables. - if ($status && $preferences->mods["lesson"]->userinfo) { - if (!backup_lesson_branch($bf, $preferences, $page->id)) { - return false; - } - } //End of page $status =fwrite ($bf,end_tag("PAGE",5,true)); // move to the next (logical) page @@ -179,10 +137,8 @@ //Start answer $status =fwrite ($bf,start_tag("ANSWER",7,true)); //Print answer contents - fwrite ($bf,full_tag("ID",8,false,$answer->id)); fwrite ($bf,full_tag("JUMPTO",8,false,$answer->jumpto)); fwrite ($bf,full_tag("GRADE",8,false,$answer->grade)); - fwrite ($bf,full_tag("SCORE",8,false,$answer->score)); fwrite ($bf,full_tag("FLAGS",8,false,$answer->flags)); fwrite ($bf,full_tag("TIMECREATED",8,false,$answer->timecreated)); fwrite ($bf,full_tag("TIMEMODIFIED",8,false,$answer->timemodified)); @@ -212,22 +168,21 @@ //If there are attempts if ($lesson_attempts) { //Write start tag - $status =fwrite ($bf,start_tag("ATTEMPTS",8,true)); + $status =fwrite ($bf,start_tag("ATTEMPTS",4,true)); //Iterate over each attempt foreach ($lesson_attempts as $attempt) { //Start Attempt - $status =fwrite ($bf,start_tag("ATTEMPT",9,true)); + $status =fwrite ($bf,start_tag("ATTEMPT",5,true)); //Print attempt contents - fwrite ($bf,full_tag("USERID",10,false,$attempt->userid)); - fwrite ($bf,full_tag("RETRY",10,false,$attempt->retry)); - fwrite ($bf,full_tag("CORRECT",10,false,$attempt->correct)); - fwrite ($bf,full_tag("USERANSWER",10,false,$attempt->useranswer)); - fwrite ($bf,full_tag("TIMESEEN",10,false,$attempt->timeseen)); + fwrite ($bf,full_tag("USERID",6,false,$attempt->userid)); + fwrite ($bf,full_tag("RETRY",6,false,$attempt->retry)); + fwrite ($bf,full_tag("CORRECT",6,false,$attempt->correct)); + fwrite ($bf,full_tag("TIMESEEN",6,false,$attempt->timeseen)); //End attempt - $status =fwrite ($bf,end_tag("ATTEMPT",9,true)); + $status =fwrite ($bf,end_tag("ATTEMPT",5,true)); } //Write end tag - $status =fwrite ($bf,end_tag("ATTEMPTS",8,true)); + $status =fwrite ($bf,end_tag("ATTEMPTS",4,true)); } return $status; } @@ -245,158 +200,24 @@ //If there is grades if ($grades) { //Write start tag - $status =fwrite ($bf,start_tag("GRADES",4,true)); + $status =fwrite ($bf,start_tag("GRADES",8,true)); //Iterate over each grade foreach ($grades as $grade) { //Start grade - $status =fwrite ($bf,start_tag("GRADE",5,true)); + $status =fwrite ($bf,start_tag("GRADE",9,true)); //Print grade contents - fwrite ($bf,full_tag("USERID",6,false,$grade->userid)); - fwrite ($bf,full_tag("GRADE_VALUE",6,false,$grade->grade)); - fwrite ($bf,full_tag("LATE",6,false,$grade->late)); - fwrite ($bf,full_tag("COMPLETED",6,false,$grade->completed)); - //End grade - $status =fwrite ($bf,end_tag("GRADE",5,true)); + fwrite ($bf,full_tag("USERID",10,false,$grade->userid)); + fwrite ($bf,full_tag("GRADE_VALUE",10,false,$grade->grade)); + fwrite ($bf,full_tag("LATE",10,false,$grade->late)); + fwrite ($bf,full_tag("COMPLETED",10,false,$grade->completed)); + //End comment + $status =fwrite ($bf,end_tag("GRADE",9,true)); } //Write end tag - $status =fwrite ($bf,end_tag("GRADES",4,true)); + $status =fwrite ($bf,end_tag("GRADES",8,true)); } return $status; } - - //Backup lesson_branch contents (executed from backup_lesson_pages) - function backup_lesson_branch($bf,$preferences,$pageno) { - - global $CFG; - - $status = true; - - // get the branches in a set order, the id order - $lesson_branch = get_records("lesson_branch", "pageid", $pageno, "id"); - - //If there is lesson_branch - if ($lesson_branch) { - //Write start tag - $status =fwrite ($bf,start_tag("BRANCHES",6,true)); - //Iterate over each element - foreach ($lesson_branch as $branch) { - //Start branch - $status =fwrite ($bf,start_tag("BRANCH",7,true)); - //Print branch contents - fwrite ($bf,full_tag("USERID",8,false,$branch->userid)); - fwrite ($bf,full_tag("RETRY",8,false,$branch->retry)); - fwrite ($bf,full_tag("FLAG",8,false,$branch->flag)); - fwrite ($bf,full_tag("TIMESEEN",8,false,$branch->timeseen)); - // END BRANCH - $status =fwrite ($bf,end_tag("BRANCH",7,true)); - } - //Write end tag - $status =fwrite ($bf,end_tag("BRANCHES",6,true)); - } - return $status; - } - - //Backup lesson_timer contents (executed from backup_lesson_mods) - function backup_lesson_timer ($bf,$preferences,$lessonid) { - - global $CFG; - - $status = true; - - $times = get_records("lesson_timer", "lessonid", $lessonid); - - //If there is times - if ($times) { - //Write start tag - $status =fwrite ($bf,start_tag("TIMES",4,true)); - //Iterate over each time - foreach ($times as $time) { - //Start time - $status =fwrite ($bf,start_tag("TIME",5,true)); - //Print time contents - fwrite ($bf,full_tag("USERID",6,false,$time->userid)); - fwrite ($bf,full_tag("STARTTIME",6,false,$time->starttime)); - fwrite ($bf,full_tag("LESSONTIME",6,false,$time->lessontime)); - //End time - $status =fwrite ($bf,end_tag("TIME",5,true)); - } - //Write end tag - $status =fwrite ($bf,end_tag("TIMES",4,true)); - } - return $status; - } - - // backup lesson_high_score contents (executed from backup_lesson_mods) - function backup_lesson_high_scores($bf, $preferences, $lessonid) { - global $CFG; - - $status = true; - - $highscores = get_records("lesson_high_scores", "lessonid", $lessonid); - - //If there is highscores - if ($highscores) { - //Write start tag - $status =fwrite ($bf,start_tag("HIGHSCORES",4,true)); - //Iterate over each highscore - foreach ($highscores as $highscore) { - //Start highscore - $status =fwrite ($bf,start_tag("HIGHSCORE",5,true)); - //Print highscore contents - fwrite ($bf,full_tag("USERID",6,false,$highscore->userid)); - fwrite ($bf,full_tag("GRADEID",6,false,$highscore->gradeid)); - fwrite ($bf,full_tag("NICKNAME",6,false,$highscore->nickname)); - //End highscore - $status =fwrite ($bf,end_tag("HIGHSCORE",5,true)); - } - //Write end tag - $status =fwrite ($bf,end_tag("HIGHSCORES",4,true)); - } - return $status; - } - - // backup lesson_default contents (executed from backup_lesson_mods) - function backup_lesson_default ($bf,$preferences) { - global $CFG; - - $status = true; - - //only one default record per course - $default = get_record("lesson_default", "course", $preferences->backup_course); - if ($default) { - //Start mod - $status =fwrite ($bf,start_tag("DEFAULTS",4,true)); - //Print default data - fwrite ($bf,full_tag("PRACTICE",5,false,$default->practice)); - fwrite ($bf,full_tag("MODATTEMPTS",5,false,$default->modattempts)); - fwrite ($bf,full_tag("PASSWORD",5,false,$default->password)); - fwrite ($bf,full_tag("USEPASSWORD",5,false,$default->usepassword)); - fwrite ($bf,full_tag("GRADE",5,false,$default->grade)); - fwrite ($bf,full_tag("CUSTOM",5,false,$default->custom)); - fwrite ($bf,full_tag("ONGOING",5,false,$default->ongoing)); - fwrite ($bf,full_tag("USEMAXGRADE",5,false,$default->usemaxgrade)); - fwrite ($bf,full_tag("MAXANSWERS",5,false,$default->maxanswers)); - fwrite ($bf,full_tag("MAXATTEMPTS",5,false,$default->maxattempts)); - fwrite ($bf,full_tag("REVIEW",5,false,$default->review)); - fwrite ($bf,full_tag("NEXTPAGEDEFAULT",5,false,$default->nextpagedefault)); - fwrite ($bf,full_tag("MINQUESTIONS",5,false,$default->minquestions)); - fwrite ($bf,full_tag("MAXPAGES",5,false,$default->maxpages)); - fwrite ($bf,full_tag("TIMED",5,false,$default->timed)); - fwrite ($bf,full_tag("MAXTIME",5,false,$default->maxtime)); - fwrite ($bf,full_tag("RETAKE",5,false,$default->retake)); - fwrite ($bf,full_tag("TREE",5,false,$default->tree)); - fwrite ($bf,full_tag("SLIDESHOW",5,false,$default->slideshow)); - fwrite ($bf,full_tag("WIDTH",5,false,$default->width)); - fwrite ($bf,full_tag("HEIGHT",5,false,$default->height)); - fwrite ($bf,full_tag("BGCOLOR",5,false,$default->bgcolor)); - fwrite ($bf,full_tag("DISPLAYLEFT",5,false,$default->displayleft)); - fwrite ($bf,full_tag("HIGHSCORES",5,false,$default->highscores)); - fwrite ($bf,full_tag("MAXHIGHSCORES",5,false,$default->maxhighscores)); - $status =fwrite ($bf,end_tag("DEFAULTS",4,true)); - } - return $status; - } - //Return an array of info (name,value) function lesson_check_backup_mods($course,$user_data=false,$backup_unique_code) { //First the course data diff --git a/mod/lesson/db/mysql.php b/mod/lesson/db/mysql.php index 2c102533dc2..d6be6b236b4 100644 --- a/mod/lesson/db/mysql.php +++ b/mod/lesson/db/mysql.php @@ -18,154 +18,28 @@ function lesson_upgrade($oldversion) { if ($oldversion < 2004022200) { - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `maxattempts` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER maxanswers"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `nextpagedefault` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER maxattempts"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `maxpages` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER nextpagedefault"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_pages` ADD `qtype` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER lessonid"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_pages` ADD `qoption` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER qtype"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_answers` ADD `grade` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER jumpto"); + execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `maxattempts` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER maxanswers"); + execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `nextpagedefault` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER maxattempts"); + execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `maxpages` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER nextpagedefault"); + execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_pages` ADD `qtype` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER lessonid"); + execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_pages` ADD `qoption` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER qtype"); + execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_answers` ADD `grade` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER jumpto"); } if ($oldversion < 2004032000) { // Upgrade some old beta lessons - execute_sql(" UPDATE `{$CFG->prefix}lesson_pages` SET qtype = 3 WHERE qtype = 0"); + execute_sql(" UPDATE `{$CFG->prefix}lesson_pages` SET qtype = 3 WHERE qtype = 0"); } if ($oldversion < 2004032400) { - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `usemaxgrade` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER grade"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `minquestions` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER nextpagedefault"); + execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `usemaxgrade` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER grade"); + execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `minquestions` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER nextpagedefault"); } if ($oldversion < 2004032700) { - table_column("lesson_answers", "", "flags", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); + table_column("lesson_answers", "", "flags", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); } - - // CDC-FLAG - if ($oldversion < 2004072100) { - execute_sql(" create table ".$CFG->prefix."lesson_high_scores - ( id int(10) unsigned not null auto_increment, - lessonid int(10) unsigned not null, - userid int(10) unsigned not null, - gradeid int(10) unsigned not null, - nickname varchar(5) not null, - PRIMARY KEY (`id`) - )"); - - execute_sql(" create table ".$CFG->prefix."lesson_branch - ( id int(10) unsigned not null auto_increment, - lessonid int(10) unsigned not null, - userid int(10) unsigned not null, - pageid int(10) unsigned not null, - retry int(10) unsigned not null, - flag tinyint(3) unsigned not null, - timeseen int(10) unsigned not null, - PRIMARY KEY (`id`) - )"); - - - execute_sql(" create table ".$CFG->prefix."lesson_timer - ( id int(10) unsigned not null auto_increment, - lessonid int(10) unsigned not null, - userid int(10) unsigned not null, - starttime int(10) unsigned not null, - lessontime int(10) unsigned not null, - PRIMARY KEY (`id`) - )"); - - - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_pages` ADD `layout` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1' AFTER qoption"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_pages` ADD `display` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1' AFTER layout"); - - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_answers` ADD `score` INT(10) NOT NULL DEFAULT '0' AFTER grade"); - - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `usepassword` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER name"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `password` VARCHAR(32) NOT NULL DEFAULT '' AFTER usepassword"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `custom` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER grade"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `ongoing` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER custom"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `timed` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER maxpages"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `maxtime` INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER timed"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `tree` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER retake"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `slideshow` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER tree"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `width` INT(10) UNSIGNED NOT NULL DEFAULT '640' AFTER slideshow"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `height` INT(10) UNSIGNED NOT NULL DEFAULT '480' AFTER width"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `bgcolor` CHAR(7) NOT NULL DEFAULT '#FFFFFF' AFTER height"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `displayleft` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER bgcolor"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `highscores` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER displayleft"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `maxhighscores` INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER highscores"); - - } - - if ($oldversion < 2004081100) { - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `practice` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER name"); - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `review` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER maxattempts"); - } - - if ($oldversion < 2004081700) { - execute_sql("CREATE TABLE `{$CFG->prefix}lesson_default` - ( `id` int(10) unsigned NOT NULL auto_increment, - `course` int(10) unsigned NOT NULL default '0', - `practice` tinyint(3) unsigned NOT NULL default '0', - `password` varchar(32) NOT NULL default '', - `usepassword` int(3) unsigned NOT NULL default '0', - `grade` tinyint(3) NOT NULL default '0', - `custom` int(3) unsigned NOT NULL default '0', - `ongoing` int(3) unsigned NOT NULL default '0', - `usemaxgrade` tinyint(3) unsigned NOT NULL default '0', - `maxanswers` int(3) unsigned NOT NULL default '4', - `maxattempts` int(3) unsigned NOT NULL default '5', - `review` tinyint(3) unsigned NOT NULL default '0', - `nextpagedefault` int(3) unsigned NOT NULL default '0', - `minquestions` tinyint(3) unsigned NOT NULL default '0', - `maxpages` int(3) unsigned NOT NULL default '0', - `timed` int(3) unsigned NOT NULL default '0', - `maxtime` int(10) unsigned NOT NULL default '0', - `retake` int(3) unsigned NOT NULL default '1', - `tree` int(3) unsigned NOT NULL default '0', - `slideshow` int(3) unsigned NOT NULL default '0', - `width` int(10) unsigned NOT NULL default '640', - `height` int(10) unsigned NOT NULL default '480', - `bgcolor` varchar(7) default '#FFFFFF', - `displayleft` int(3) unsigned NOT NULL default '0', - `highscores` int(3) unsigned NOT NULL default '0', - `maxhighscores` int(10) NOT NULL default '0', - PRIMARY KEY (`id`) - ) COMMENT = 'Defines lesson_default'"); - } - - if ($oldversion < 2004100400) { - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_attempts` ADD `useranswer` text NOT NULL AFTER correct"); - } - - if ($oldversion < 2004100700) { - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `modattempts` tinyint(3) unsigned NOT NULL default '0' AFTER practice"); - } - - if ($oldversion < 2004102600) { - execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_default` ADD `modattempts` tinyint(3) unsigned NOT NULL default '0' AFTER practice"); - } - - // CDC-FLAG end - - if ($oldversion < 2004111200) { - execute_sql("ALTER TABLE {$CFG->prefix}lesson DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}lesson_answers DROP INDEX lessonid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}lesson_attempts DROP INDEX lessonid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}lesson_attempts DROP INDEX pageid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}lesson_grades DROP INDEX lessonid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}lesson_grades DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}lesson_pages DROP INDEX lessonid;",false); - - modify_database('','ALTER TABLE prefix_lesson ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_lesson_answers ADD INDEX lessonid (lessonid);'); - modify_database('','ALTER TABLE prefix_lesson_attempts ADD INDEX lessonid (lessonid);'); - modify_database('','ALTER TABLE prefix_lesson_attempts ADD INDEX pageid (pageid);'); - modify_database('','ALTER TABLE prefix_lesson_grades ADD INDEX lessonid (lessonid);'); - modify_database('','ALTER TABLE prefix_lesson_grades ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_lesson_pages ADD INDEX lessonid (lessonid);'); - } - - - + return true; } diff --git a/mod/lesson/db/mysql.sql b/mod/lesson/db/mysql.sql index 866079db9ad..195782e7d6e 100644 --- a/mod/lesson/db/mysql.sql +++ b/mod/lesson/db/mysql.sql @@ -8,36 +8,18 @@ CREATE TABLE `prefix_lesson` ( `id` int(10) unsigned NOT NULL auto_increment, `course` int(10) unsigned NOT NULL default '0', `name` varchar(255) NOT NULL default '', - `practice` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', - `modattempts` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', - `usepassword` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', - `password` VARCHAR(32) NOT NULL default '', `grade` tinyint(3) NOT NULL default '0', - `custom` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', - `ongoing` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', `usemaxgrade` tinyint(3) NOT NULL default '0', `maxanswers` int(3) unsigned NOT NULL default '4', `maxattempts` int(3) unsigned NOT NULL default '5', - `review` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', `nextpagedefault` int(3) unsigned NOT NULL default '0', `minquestions` int(3) unsigned NOT NULL default '0', `maxpages` int(3) unsigned NOT NULL default '0', - `timed` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', - `maxtime` INT(10) UNSIGNED NOT NULL DEFAULT '0', `retake` int(3) unsigned NOT NULL default '1', - `tree` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', - `slideshow` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', - `width` INT(10) UNSIGNED NOT NULL DEFAULT '640', - `height` INT(10) UNSIGNED NOT NULL DEFAULT '480', - `bgcolor` CHAR(7) NOT NULL DEFAULT '#FFFFFF', - `displayleft` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', - `highscores` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', - `maxhighscores` INT(10) UNSIGNED NOT NULL DEFAULT '0', `available` int(10) unsigned NOT NULL default '0', `deadline` int(10) unsigned NOT NULL default '0', `timemodified` int(10) unsigned NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `course` (`course`) + PRIMARY KEY (`id`) ) COMMENT='Defines lesson'; # -------------------------------------------------------- @@ -48,14 +30,11 @@ CREATE TABLE `prefix_lesson_pages` ( `nextpageid` int(10) unsigned NOT NULL default '0', `qtype` tinyint(3) unsigned NOT NULL default '0', `qoption` tinyint(3) unsigned NOT NULL default '0', - `layout` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1', - `display` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1', `timecreated` int(10) unsigned NOT NULL default '0', `timemodified` int(10) unsigned NOT NULL default '0', `title` varchar(255) NOT NULL default '', `contents` text NOT NULL default '', - PRIMARY KEY (`id`), - KEY `lessonid` (`lessonid`) + PRIMARY KEY (`id`) ) COMMENT='Defines lesson_pages'; # -------------------------------------------------------- @@ -65,15 +44,13 @@ CREATE TABLE `prefix_lesson_answers` ( `pageid` int(10) unsigned NOT NULL default '0', `jumpto` int(11) NOT NULL default '0', `grade` tinyint(3) unsigned NOT NULL default '0', - `score` INT(10) NOT NULL DEFAULT '0', `flags` tinyint(3) unsigned NOT NULL default '0', `timecreated` int(10) unsigned NOT NULL default '0', `timemodified` int(10) unsigned NOT NULL default '0', `answer` text NOT NULL default '', `response` text NOT NULL default '', PRIMARY KEY (`id`), - KEY (`pageid`), - KEY `lessonid` (`lessonid`) + KEY (`pageid`) ) COMMENT='Defines lesson_answers'; # -------------------------------------------------------- @@ -85,12 +62,9 @@ CREATE TABLE `prefix_lesson_attempts` ( `answerid` int(10) unsigned NOT NULL default '0', `retry` int(3) unsigned NOT NULL default '0', `correct` int(10) unsigned NOT NULL default '0', - `useranswer` text NOT NULL default '', `timeseen` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`), - KEY (`userid`), - KEY `lessonid` (`lessonid`), - KEY `pageid` (`pageid`) + KEY (`userid`) ) COMMENT='Defines lesson_attempts'; # -------------------------------------------------------- @@ -101,76 +75,10 @@ CREATE TABLE `prefix_lesson_grades` ( `grade` int(3) unsigned NOT NULL default '0', `late` int(3) unsigned NOT NULL default '0', `completed` int(10) unsigned NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `lessonid` (`lessonid`), - KEY `userid` (`userid`) + PRIMARY KEY (`id`) ) COMMENT='Defines lesson_grades'; # -------------------------------------------------------- -CREATE TABLE `prefix_lesson_default` - ( `id` int(10) unsigned NOT NULL auto_increment, - `course` int(10) unsigned NOT NULL default '0', - `practice` tinyint(3) unsigned NOT NULL default '0', - `modattempts` tinyint(3) unsigned NOT NULL default '0', - `password` varchar(32) NOT NULL default '', - `usepassword` int(3) unsigned NOT NULL default '0', - `grade` tinyint(3) NOT NULL default '0', - `custom` int(3) unsigned NOT NULL default '0', - `ongoing` int(3) unsigned NOT NULL default '0', - `usemaxgrade` tinyint(3) unsigned NOT NULL default '0', - `maxanswers` int(3) unsigned NOT NULL default '4', - `maxattempts` int(3) unsigned NOT NULL default '5', - `review` tinyint(3) unsigned NOT NULL default '0', - `nextpagedefault` int(3) unsigned NOT NULL default '0', - `minquestions` tinyint(3) unsigned NOT NULL default '0', - `maxpages` int(3) unsigned NOT NULL default '0', - `timed` int(3) unsigned NOT NULL default '0', - `maxtime` int(10) unsigned NOT NULL default '0', - `retake` int(3) unsigned NOT NULL default '1', - `tree` int(3) unsigned NOT NULL default '0', - `slideshow` int(3) unsigned NOT NULL default '0', - `width` int(10) unsigned NOT NULL default '640', - `height` int(10) unsigned NOT NULL default '480', - `bgcolor` varchar(7) default '#FFFFFF', - `displayleft` int(3) unsigned NOT NULL default '0', - `highscores` int(3) unsigned NOT NULL default '0', - `maxhighscores` int(10) NOT NULL default '0', - PRIMARY KEY (`id`) - ) COMMENT = 'Defines lesson_default'; -# -------------------------------------------------------- - -CREATE TABLE `prefix_lesson_timer` - ( `id` int(10) unsigned NOT NULL auto_increment, - `lessonid` int(10) unsigned not null, - `userid` int(10) unsigned not null, - `starttime` int(10) unsigned not null, - `lessontime` int(10) unsigned not null, - PRIMARY KEY (`id`) - ); -# -------------------------------------------------------- - -CREATE TABLE `prefix_lesson_branch` - ( `id` int(10) unsigned not null auto_increment, - `lessonid` int(10) unsigned not null, - `userid` int(10) unsigned not null, - `pageid` int(10) unsigned not null, - `retry` int(10) unsigned not null, - `flag` tinyint(3) unsigned not null, - `timeseen` int(10) unsigned not null, - PRIMARY KEY (`id`) - ); -# -------------------------------------------------------- - -CREATE TABLE `prefix_lesson_high_scores` - ( `id` int(10) unsigned not null auto_increment, - `lessonid` int(10) unsigned not null, - `userid` int(10) unsigned not null, - `gradeid` int(10) unsigned not null, - `nickname` varchar(5) not null, - PRIMARY KEY (`id`) - ); -# -------------------------------------------------------- - INSERT INTO prefix_log_display VALUES ('lesson', 'start', 'lesson', 'name'); INSERT INTO prefix_log_display VALUES ('lesson', 'end', 'lesson', 'name'); diff --git a/mod/lesson/db/postgres7.php b/mod/lesson/db/postgres7.php index 986cc88b076..1f52e6fe04d 100644 --- a/mod/lesson/db/postgres7.php +++ b/mod/lesson/db/postgres7.php @@ -18,201 +18,29 @@ function lesson_upgrade($oldversion) { if ($oldversion < 2004022200) { - table_column("lesson", "", "maxattempts", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "maxanswers"); - table_column("lesson", "", "nextpagedefault", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "maxattempts"); - table_column("lesson", "", "maxpages", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "nextpagedefault"); - table_column("lesson_pages", "", "qtype", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "lessonid"); - table_column("lesson_pages", "", "qoption", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "qtype"); - table_column("lesson_answers", "", "grade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "jumpto"); + table_column("lesson", "", "maxattempts", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "maxanswers"); + table_column("lesson", "", "nextpagedefault", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "maxattempts"); + table_column("lesson", "", "maxpages", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "nextpagedefault"); + table_column("lesson_pages", "", "qtype", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "lessonid"); + table_column("lesson_pages", "", "qoption", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "qtype"); + table_column("lesson_answers", "", "grade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "jumpto"); } if ($oldversion < 2004032000) { // Upgrade some old beta lessons - execute_sql(" UPDATE \"{$CFG->prefix}lesson_pages\" SET qtype = 3 WHERE qtype = 0"); + execute_sql(" UPDATE \"{$CFG->prefix}lesson_pages\" SET qtype = 3 WHERE qtype = 0"); } if ($oldversion < 2004032400) { - table_column("lesson", "", "usemaxgrade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); - table_column("lesson", "", "minquestions", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "nextpagedefault"); + table_column("lesson", "", "usemaxgrade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); + table_column("lesson", "", "minquestions", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "nextpagedefault"); } if ($oldversion < 2004032700) { - table_column("lesson_answers", "", "flags", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); + table_column("lesson_answers", "", "flags", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); } - // CDC-FLAG - if ($oldversion < 2004072100) { - execute_sql(" create table ".$CFG->prefix."lesson_high_scores - ( id serial8 primary key, - lessonid int8 not null, - userid int8 not null, - gradeid int8 not null, - nickname varchar(5) not null - )"); - - execute_sql(" create table ".$CFG->prefix."lesson_essay - ( id serial8 primary key, - lessonid int8 not null, - userid int8 not null, - pageid int8 not null, - answerid int8 not null, - try int8 not null, - answer text not null, - graded int4 not null default 0, - score int8 not null default 0, - response text not null, - sent int4 not null default 0, - timesubmitted int8 not null - )"); - - execute_sql(" create table ".$CFG->prefix."lesson_branch - ( id serial8 primary key, - lessonid int8 not null, - userid int8 not null, - pageid int8 not null, - retry int8 not null, - flag int4 not null, - timeseen int8 not null - )"); - - - execute_sql(" create table ".$CFG->prefix."lesson_timer - ( id serial8 primary key, - lessonid int8 not null, - userid int8 not null, - starttime int8 not null, - lessontime int8 not null - )"); - - - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson_pages ADD layout TINYINT(3) UNSIGNED NOT NULL DEFAULT '1' AFTER qoption"); - table_column('lesson_pages','','layout','int','3','unsigned', '1', 'not null', 'qoption'); - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson_pages ADD display TINYINT(3) UNSIGNED NOT NULL DEFAULT '1' AFTER layout"); - table_column('lesson_pages','','display','int','3','unsigned', '1', 'not null', 'layout'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson_answers ADD score INT(10) NOT NULL DEFAULT '0' AFTER grade"); - table_column('lesson_answers','','score','int','10','unsigned', '1', 'not null', 'grade'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD usepassword TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER name"); - table_column('lesson','','usepassword','int','3','unsigned', '0', 'not null', 'name'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD password VARCHAR(32) NOT NULL DEFAULT '' AFTER usepassword"); - table_column('lesson','','password','varchar','32','', '', 'not null', 'usepassword'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD custom TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER grade"); - table_column('lesson','','custom','int','3','unsigned', '0', 'not null', 'grade'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD ongoing TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER custom"); - table_column('lesson','','ongoing','int','3','unsigned', '0', 'not null', 'custom'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD timed TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER maxpages"); - table_column('lesson','','timed','int','3','unsigned', '0', 'not null', 'maxpages'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD maxtime INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER timed"); - table_column('lesson','','maxtime','int','10','unsigned', '0', 'not null', 'timed'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD tree TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER retake"); - table_column('lesson','','tree','int','3','unsigned', '0', 'not null', 'retake'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD slideshow TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER tree"); - table_column('lesson','','slideshow','int','3','unsigned', '0', 'not null', 'tree'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD width INT(10) UNSIGNED NOT NULL DEFAULT '640' AFTER slideshow"); - table_column('lesson','','width','int','10','unsigned', '640', 'not null', 'slideshow'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD height INT(10) UNSIGNED NOT NULL DEFAULT '480' AFTER width"); - table_column('lesson','','height','int','10','unsigned', '480', 'not null', 'width'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD bgcolor CHAR(7) NOT NULL DEFAULT '#FFFFFF' AFTER height"); - table_column('lesson','','bgcolor','varchar','7','unsigned', '#FFFFFF', 'not null', 'height'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD displayleft TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER bgcolor"); - table_column('lesson','','displayleft','int','3','unsigned', '0', 'not null', 'bgcolor'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD highscores TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER displayleft"); - table_column('lesson','','highscores','int','3','unsigned', '0', 'not null', 'displayleft'); - - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD maxhighscores INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER highscores"); - table_column('lesson','','maxhighscores','int','10','unsigned', '0', 'not null', 'highscores'); - - } - - if ($oldversion < 2004081100) { - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD practice TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER name"); - table_column('lesson','','practice','int','3','unsigned', '0', 'not null', 'name'); - //execute_sql(" ALTER TABLE {$CFG->prefix}lesson ADD review TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER maxattempts"); - table_column('lesson','','review','int','3','unsigned', '0', 'not null', 'maxattempts'); - } - - if ($oldversion < 2004081700) { - execute_sql("CREATE TABLE {$CFG->prefix}lesson_default - ( id serial8 primary key, - course int8 NOT NULL default '0', - practice int4 NOT NULL default '0', - password varchar(32) NOT NULL default '', - usepassword int4 NOT NULL default '0', - grade int4 NOT NULL default '0', - custom int4 NOT NULL default '0', - ongoing int4 NOT NULL default '0', - usemaxgrade int4 NOT NULL default '0', - maxanswers int4 NOT NULL default '4', - maxattempts int4 NOT NULL default '5', - review int4 NOT NULL default '0', - nextpagedefault int4 NOT NULL default '0', - minquestions int4 NOT NULL default '0', - maxpages int4 NOT NULL default '0', - timed int4 NOT NULL default '0', - maxtime int8 NOT NULL default '0', - retake int4 NOT NULL default '1', - tree int4 NOT NULL default '0', - slideshow int4 NOT NULL default '0', - width int8 NOT NULL default '640', - height int8 NOT NULL default '480', - bgcolor varchar(7) default '#FFFFFF', - displayleft int4 NOT NULL default '0', - highscores int4 NOT NULL default '0', - maxhighscores int8 NOT NULL default '0' - )"); - } - // CDC-FLAG end - if ($oldversion < 2004100400) { - //execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_attempts` ADD `useranswer` text NOT NULL AFTER correct"); - table_column('lesson_attempts', '', 'useranswer', 'text', '', '', '', 'NOT NULL', 'correct'); - } - - if ($oldversion < 2004100700) { - //execute_sql(" ALTER TABLE `{$CFG->prefix}lesson` ADD `modattempts` tinyint(3) unsigned NOT NULL default '0' AFTER practice"); - table_column('lesson', '', 'modattempts', 'INT', '4', 'unsigned', '0', 'NOT NULL', 'practice'); - } - - if ($oldversion < 2004102600) { - //execute_sql(" ALTER TABLE `{$CFG->prefix}lesson_default` ADD `modattempts` tinyint(3) unsigned NOT NULL default '0' AFTER practice"); - table_column('lesson_default', '', 'modattempts', 'INT', '4', 'unsigned', '0', 'NOT NULL', 'practice'); - } - - if ($oldversion < 2004111200) { - execute_sql("DROP INDEX {$CFG->prefix}lesson_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}lesson_answers_lessonid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}lesson_answers_pageid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}lesson_attempts_lessonid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}lesson_attempts_pageid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}lesson_attempts_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}lesson_grades_lessonid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}lesson_grades_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}lesson_pages_lessonid_idx;",false); - - modify_database('','CREATE INDEX prefix_lesson_course_idx ON prefix_lesson (course);'); - modify_database('','CREATE INDEX prefix_lesson_answers_lessonid_idx ON prefix_lesson_answers (lessonid);'); - modify_database('','CREATE INDEX prefix_lesson_answers_pageid_idx ON prefix_lesson_answers (pageid);'); - modify_database('','CREATE INDEX prefix_lesson_attempts_lessonid_idx ON prefix_lesson_attempts (lessonid);'); - modify_database('','CREATE INDEX prefix_lesson_attempts_pageid_idx ON prefix_lesson_attempts (pageid);'); - modify_database('','CREATE INDEX prefix_lesson_attempts_userid_idx ON prefix_lesson_attempts (userid);'); - modify_database('','CREATE INDEX prefix_lesson_grades_lessonid_idx ON prefix_lesson_grades (lessonid);'); - modify_database('','CREATE INDEX prefix_lesson_grades_userid_idx ON prefix_lesson_grades (userid);'); - modify_database('','CREATE INDEX prefix_lesson_pages_lessonid_idx ON prefix_lesson_pages (lessonid);'); - } - - return true; + + return true; } ?> diff --git a/mod/lesson/db/postgres7.sql b/mod/lesson/db/postgres7.sql index c7d285aa525..f6ff75e2a32 100644 --- a/mod/lesson/db/postgres7.sql +++ b/mod/lesson/db/postgres7.sql @@ -1,72 +1,55 @@ +# This file contains a complete database schema for all the +# tables used by the mlesson module, written in SQL + +# It may also contain INSERT statements for particular data +# that may be used, especially new entries in the table log_display + CREATE TABLE prefix_lesson ( id SERIAL8 PRIMARY KEY, course INT8 NOT NULL default '0', name varchar(255) NOT NULL default '', - practice INT NOT NULL DEFAULT '0', - modattempts INT4 NOT NULL DEFAULT '0', - usepassword INT NOT NULL DEFAULT '0', - password VARCHAR(32) NOT NULL default '', grade INT NOT NULL default '0', - custom INT NOT NULL DEFAULT '0', - ongoing INT NOT NULL DEFAULT '0', usemaxgrade INT NOT NULL default '0', maxanswers INT NOT NULL default '4', - maxattempts INT NOT NULL default '5', - review INT NOT NULL DEFAULT '0', - nextpagedefault INT NOT NULL default '0', - minquestions INT NOT NULL default '0', - maxpages INT NOT NULL default '0', - timed INT NOT NULL DEFAULT '0', - maxtime INT8 NOT NULL DEFAULT '0', + maxattempts INT NOT NULL default '0', + nextpagedefault INT NOT NULL default '0', + maxpages INT NOT NULL default '0', retake INT NOT NULL default '1', - tree INT NOT NULL DEFAULT '0', - slideshow INT NOT NULL DEFAULT '0', - width INT8 NOT NULL DEFAULT '640', - height INT8 NOT NULL DEFAULT '480', - bgcolor VARCHAR(7) NOT NULL DEFAULT '#FFFFFF', - displayleft INT NOT NULL DEFAULT '0', - highscores INT NOT NULL DEFAULT '0', - maxhighscores INT8 NOT NULL DEFAULT '0', available INT8 NOT NULL default '0', deadline INT8 NOT NULL default '0', timemodified INT8 NOT NULL default '0' ); - -CREATE INDEX prefix_lesson_course_idx ON prefix_lesson (course); +# -------------------------------------------------------- CREATE TABLE prefix_lesson_pages ( id SERIAL8 PRIMARY KEY, lessonid INT8 NOT NULL default '0', prevpageid INT8 NOT NULL default '0', nextpageid INT8 NOT NULL default '0', - qtype INT NOT NULL default '0', - qoption INT NOT NULL default '0', - layout INT NOT NULL DEFAULT '1', - display INT NOT NULL DEFAULT '1', + qtype INT8 NOT NULL default '0', + qoption INT8 NOT NULL default '0', timecreated INT8 NOT NULL default '0', timemodified INT8 NOT NULL default '0', title varchar(255) NOT NULL default '', contents text NOT NULL default '' -) ; - -CREATE INDEX prefix_lesson_pages_lessonid_idx ON prefix_lesson_pages (lessonid); +); +# COMMENT='Defines lesson_pages'; +# -------------------------------------------------------- CREATE TABLE prefix_lesson_answers ( id SERIAL8 PRIMARY KEY, lessonid INT8 NOT NULL default '0', pageid INT8 NOT NULL default '0', - jumpto int8 NOT NULL default '0', - grade INT NOT NULL default '0', - score INT8 NOT NULL DEFAULT '0', - flags INT NOT NULL default '0', + jumpto INT8 NOT NULL default '0', + grade INT8 NOT NULL default '0', + flags INT8 NOT NULL default '0', timecreated INT8 NOT NULL default '0', timemodified INT8 NOT NULL default '0', answer text NOT NULL default '', response text NOT NULL default '' -) ; - -CREATE INDEX prefix_lesson_answers_pageid_idx ON prefix_lesson_answers (pageid); -CREATE INDEX prefix_lesson_answers_lessonid_idx ON prefix_lesson_answers (lessonid); +); +# COMMENT='Defines lesson_answers'; +# -------------------------------------------------------- CREATE TABLE prefix_lesson_attempts ( id SERIAL8 PRIMARY KEY, @@ -76,12 +59,10 @@ CREATE TABLE prefix_lesson_attempts ( answerid INT8 NOT NULL default '0', retry INT NOT NULL default '0', correct INT8 NOT NULL default '0', - useranswer text NOT NULL default '', timeseen INT8 NOT NULL default '0' -) ; -CREATE INDEX prefix_lesson_attempts_lessonid_idx ON prefix_lesson_attempts (lessonid); -CREATE INDEX prefix_lesson_attempts_pageid_idx ON prefix_lesson_attempts (pageid); -CREATE INDEX prefix_lesson_attempts_userid_idx ON prefix_lesson_attempts (userid); +); +#COMMENT='Defines lesson_attempts'; +# -------------------------------------------------------- CREATE TABLE prefix_lesson_grades ( id SERIAL8 PRIMARY KEY, @@ -90,81 +71,9 @@ CREATE TABLE prefix_lesson_grades ( grade INT NOT NULL default '0', late INT NOT NULL default '0', completed INT8 NOT NULL default '0' -) ; - -CREATE INDEX prefix_lesson_grades_lessonid_idx ON prefix_lesson_grades (lessonid); -CREATE INDEX prefix_lesson_grades_userid_idx ON prefix_lesson_grades (userid); - -CREATE TABLE prefix_lesson_default - ( id SERIAL8 PRIMARY KEY, - course INT8 NOT NULL default '0', - practice INT NOT NULL default '0', - modattempts INT4 NOT NULL default '0', - password varchar(32) NOT NULL default '', - usepassword INT NOT NULL default '0', - grade INT NOT NULL default '0', - custom INT NOT NULL default '0', - ongoing INT NOT NULL default '0', - usemaxgrade INT NOT NULL default '0', - maxanswers INT NOT NULL default '4', - maxattempts INT NOT NULL default '5', - review INT NOT NULL default '0', - nextpagedefault INT NOT NULL default '0', - minquestions INT NOT NULL default '0', - maxpages INT NOT NULL default '0', - timed INT NOT NULL default '0', - maxtime INT8 NOT NULL default '0', - retake INT NOT NULL default '1', - tree INT NOT NULL default '0', - slideshow INT NOT NULL default '0', - width INT8 NOT NULL default '640', - height INT8 NOT NULL default '480', - bgcolor varchar(7) default '#FFFFFF', - displayleft INT NOT NULL default '0', - highscores INT NOT NULL default '0', - maxhighscores INT8 NOT NULL default '0' - ) ; - -CREATE TABLE prefix_lesson_timer - ( id SERIAL8 PRIMARY KEY, - lessonid INT8 not null, - userid INT8 not null, - starttime INT8 not null, - lessontime INT8 not null - ); - -CREATE TABLE prefix_lesson_branch - ( id SERIAL8 PRIMARY KEY, - lessonid INT8 not null, - userid INT8 not null, - pageid INT8 not null, - retry INT8 not null, - flag INT not null, - timeseen INT8 not null - ); - -CREATE TABLE prefix_lesson_essay - ( id SERIAL8 PRIMARY KEY, - lessonid INT8 not null, - userid INT8 not null, - pageid INT8 not null, - answerid INT8 not null, - try INT8 not null, - answer text not null, - graded INT not null default 0, - score INT8 not null default 0, - response text not null, - sent INT not null default 0, - timesubmitted INT8 not null - ); - -CREATE TABLE prefix_lesson_high_scores - ( id SERIAL8 PRIMARY KEY, - lessonid INT8 not null, - userid INT8 not null, - gradeid INT8 not null, - nickname varchar(5) not null - ); +); +# COMMENT='Defines lesson_grades'; +# -------------------------------------------------------- INSERT INTO prefix_log_display VALUES ('lesson', 'start', 'lesson', 'name'); diff --git a/mod/lesson/format.php b/mod/lesson/format.php index e40dcebc233..34bc2523bf5 100644 --- a/mod/lesson/format.php +++ b/mod/lesson/format.php @@ -51,7 +51,7 @@ class quiz_default_format { $count++; echo "<hr><p><b>$count</b>. ".stripslashes($question->questiontext)."</p>"; - $newpage = new stdClass; + unset($newpage); $newpage->lessonid = $lesson->id; $newpage->qtype = $question->qtype; switch ($question->qtype) { diff --git a/mod/lesson/import.php b/mod/lesson/import.php index 8392d3a8fad..c82b7756b54 100644 --- a/mod/lesson/import.php +++ b/mod/lesson/import.php @@ -4,8 +4,8 @@ require_once("../../config.php"); require_once("lib.php"); - $id = required_param('id', PARAM_INT); // Course Module ID - $pageid = optional_param('pageid', '', PARAM_INT); // Page ID + optional_variable($format); + require_variable($id); // Course Module ID if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); @@ -20,7 +20,7 @@ } - require_login($course->id, false); + require_login($course->id); if (!isteacher($course->id)) { error("Only the teacher can import questions!"); @@ -34,13 +34,18 @@ if ($form = data_submitted()) { /// Filename - $form->format = clean_filename($form->format); // For safety + if (isset($form->filename)) { // file already on server + $newfile['tmp_name'] = $form->filename; + $newfile['size'] = filesize($form->filename); - if (empty($_FILES['newfile'])) { // file was just uploaded - notify(get_string("uploadproblem") ); + } else if (!empty($_FILES['newfile'])) { // file was just uploaded + $newfile = $_FILES['newfile']; } - if ((!is_uploaded_file($_FILES['newfile']['tmp_name']) or $_FILES['newfile']['size'] == 0)) { + if (empty($newfile)) { + notify(get_string("uploadproblem") ); + + } else if (!isset($filename) and (!is_uploaded_file($newfile['tmp_name']) or $newfile['size'] == 0)) { notify(get_string("uploadnofilefound") ); } else { // Valid file is found @@ -50,8 +55,8 @@ } require("format.php"); // Parent class - require("$CFG->dirroot/mod/quiz/lib.php"); // for the constants used in quiz/format/<format>/format.php - require("$CFG->dirroot/mod/quiz/format/$form->format/format.php"); + require("../quiz/lib.php"); // for the constants used in quiz/format/<format>/format.php + require("../quiz/format/$form->format/format.php"); $format = new quiz_file_format(); @@ -59,7 +64,7 @@ error("Error occurred during pre-processing!"); } - if (! $format->importprocess($_FILES['newfile']['tmp_name'], $lesson, $pageid)) { // Process the uploaded file + if (! $format->importprocess($newfile['tmp_name'], $lesson, $_POST['pageid'])) { // Process the uploaded file error("Error occurred during processing!"); } @@ -72,7 +77,7 @@ print_footer($course); exit; } - } + } /// Print upload form @@ -90,10 +95,10 @@ print_heading_with_help($strimportquestions, "import", "lesson"); - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); echo "<form enctype=\"multipart/form-data\" method=\"post\" action=import.php>"; echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; - echo "<input type=\"hidden\" name=\"pageid\" value=\"$pageid\">\n"; + echo "<input type=\"hidden\" name=\"pageid\" value=\"".$_GET['pageid']."\">\n"; echo "<table cellpadding=5>"; echo "<tr><td align=right>"; diff --git a/mod/lesson/index.php b/mod/lesson/index.php index e9611ddc66a..c88ad3e6f9b 100644 --- a/mod/lesson/index.php +++ b/mod/lesson/index.php @@ -3,7 +3,7 @@ /// This page lists all the instances of lesson in a particular course require_once("../../config.php"); - require_once("locallib.php"); + require_once("lib.php"); require_variable($id); // course @@ -11,7 +11,7 @@ error("Course ID is incorrect"); } - require_login($course->id); + require_course_login($course); add_to_log($course->id, "lesson", "view all", "index.php?id=$course->id", ""); @@ -24,11 +24,7 @@ /// Print the header - if ($course->category) { - $navigation = "<A HREF=\"../../course/view.php?id=$course->id\">$course->shortname</A> ->"; - } - - print_header("$course->shortname: $strlessons", "$course->fullname", "$navigation $strlessons", "", "", true, "", navmenu($course)); + print_header_simple("$strlessons", "", "$strlessons", "", "", true, "", navmenu($course)); /// Get all the appropriate data @@ -45,7 +41,6 @@ $strdeadline = get_string("deadline", "lesson"); $strweek = get_string("week"); $strtopic = get_string("topic"); - $table = new stdClass; if ($course->format == "weeks") { $table->head = array ($strweek, $strname, $strgrade, $strdeadline); @@ -73,10 +68,11 @@ $due = "<FONT COLOR=\"red\">".userdate($lesson->deadline)."</FONT>"; } + $grade_value = ''; if ($course->format == "weeks" or $course->format == "topics") { if (isteacher($course->id)) { $grade_value = $lesson->grade; - } else { + } elseif (isstudent($course->id)) { // it's a student, show their mean or maximum grade if ($lesson->usemaxgrade) { $grade = get_record_sql("SELECT MAX(grade) as grade FROM {$CFG->prefix}lesson_grades @@ -88,8 +84,6 @@ if ($grade) { // grades are stored as percentages $grade_value = number_format($grade->grade * $lesson->grade / 100, 1); - } else { - $grade_value = 0; } } $table->data[] = array ($lesson->section, $link, $grade_value, $due); diff --git a/mod/lesson/lesson.php b/mod/lesson/lesson.php index 1ba41a708df..23296cfa47e 100644 --- a/mod/lesson/lesson.php +++ b/mod/lesson/lesson.php @@ -1,69 +1,1325 @@ <?PHP // $Id: lesson.php, v 1.0 25 Jan 2004 /************************************************* - ACTIONS handled are: + ACTIONS handled are: - addbranchtable + addbranchtable addendofbranch - addcluster /// CDC-FLAG /// added two new items - addendofcluster addpage confirmdelete continue - delete - editpage + delete + editpage insertpage move - moveit - updatepage + moveit + updatepage ************************************************/ require("../../config.php"); - require("locallib.php"); - - $id = required_param('id', PARAM_INT); // Course Module ID - $action = required_param('action', PARAM_ALPHA); // Action + require("lib.php"); + + require_variable($id); // Course Module ID // get some esential stuff... - if (! $cm = get_record("course_modules", "id", $id)) { - error("Course Module ID was incorrect"); - } + if (! $cm = get_record("course_modules", "id", $id)) { + error("Course Module ID was incorrect"); + } - if (! $course = get_record("course", "id", $cm->course)) { - error("Course is misconfigured"); - } + if (! $course = get_record("course", "id", $cm->course)) { + error("Course is misconfigured"); + } - if (! $lesson = get_record("lesson", "id", $cm->instance)) { - error("Course module is incorrect"); - } + if (! $lesson = get_record("lesson", "id", $cm->instance)) { + error("Course module is incorrect"); + } require_login($course->id); - + // set up some general variables $usehtmleditor = can_use_html_editor(); $navigation = ""; if ($course->category) { - $navigation = "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->"; + $navigation = "<A HREF=\"../../course/view.php?id=$course->id\">$course->shortname</A> ->"; } $strlessons = get_string("modulenameplural", "lesson"); $strlesson = get_string("modulename", "lesson"); $strlessonname = $lesson->name; - - // ... print the header and... + + // ... print the header and... print_header("$course->shortname: $lesson->name", "$course->fullname", - "$navigation <a href=index.php?id=$course->id>$strlessons</a> -> - <a href=\"view.php?id=$cm->id\">$lesson->name</a>", "", "", true); + "$navigation <A HREF=index.php?id=$course->id>$strlessons</A> -> + <A HREF=\"view.php?id=$cm->id\">$lesson->name</A>", + "", "", true); - // include the appropriate action (check to make sure the file is there first) - if (file_exists($CFG->dirroot.'/mod/lesson/action/'.$action.'.php')) { - include($CFG->dirroot.'/mod/lesson/action/'.$action.'.php'); - } else { - error("Fatal Error: Unknown action\n"); + //...get the action + require_variable($action); + + + /************** add branch table ************************************/ + if ($action == 'addbranchtable' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + // first get the preceeding page + $pageid = $_GET['pageid']; + + // set of jump array + $jump[0] = get_string("thispage", "lesson"); + $jump[LESSON_NEXTPAGE] = get_string("nextpage", "lesson"); + $jump[LESSON_EOL] = get_string("endoflesson", "lesson"); + if (!$apageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { + error("Add page: first page not found"); + } + while (true) { + if ($apageid) { + $title = get_field("lesson_pages", "title", "id", $apageid); + $jump[$apageid] = $title; + $apageid = get_field("lesson_pages", "nextpageid", "id", $apageid); + } else { + // last page reached + break; + } + } + + // give teacher a blank proforma + print_heading_with_help(get_string("addabranchtable", "lesson"), "overview", "lesson"); + ?> + <form name="form" method="post" action="lesson.php"> + <input type="hidden" name="id" value="<?PHP echo $cm->id ?>"> + <input type="hidden" name="action" value="insertpage"> + <input type="hidden" name="pageid" value="<?PHP echo $_GET['pageid'] ?>"> + <input type="hidden" name="qtype" value="<?PHP echo LESSON_BRANCHTABLE ?>"> + <center><table cellpadding=5 border=1> + <tr><td align="center"> + <tr valign="top"> + <td><b><?php print_string("pagetitle", "lesson"); ?>:</b><br /> + <input type="text" name="title" size="80" maxsize="255" value=""></td></tr> + <?PHP + echo "<tr><td><b>"; + echo get_string("pagecontents", "lesson").":</b><br />\n"; + print_textarea($usehtmleditor, 25,70, 630, 400, "contents"); + echo "</td></tr>\n"; + for ($i = 0; $i < $lesson->maxanswers; $i++) { + $iplus1 = $i + 1; + echo "<tr><td><b>".get_string("description", "lesson")." $iplus1:</b><br />\n"; + print_textarea($usehtmleditor, 20, 70, 630, 300, "answer[$i]"); + echo "</td></tr>\n"; + echo "<tr><td><B>".get_string("jump", "lesson")." $iplus1:</b> \n"; + if ($i) { + // answers 2, 3, 4... jumpto this page + lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); + } else { + // answer 1 jumpto next page + lesson_choose_from_menu($jump, "jumpto[$i]", LESSON_NEXTPAGE, ""); + } + helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); + echo "</td></tr>\n"; + } + use_html_editor(); + // close table and form + ?> + </table><br /> + <input type="submit" value="<?php print_string("addabranchtable", "lesson") ?>"> + <input type="submit" name="cancel" value="<?php print_string("cancel") ?>"> + </center> + </form> + <?PHP } - print_footer($course); + + /************** add end of branch ************************************/ + elseif ($action == 'addendofbranch' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + // first get the preceeding page + $pageid = $_GET['pageid']; + + $timenow = time(); + + // the new page is not the first page (end of branch always comes after an existing page) + if (!$page = get_record("lesson_pages", "id", $pageid)) { + error("Add end of branch: page record not found"); + } + // chain back up to find the (nearest branch table) + $btpageid = $pageid; + if (!$btpage = get_record("lesson_pages", "id", $btpageid)) { + error("Add end of branch: btpage record not found"); + } + while (($btpage->qtype != LESSON_BRANCHTABLE) AND ($btpage->prevpageid > 0)) { + $btpageid = $btpage->prevpageid; + if (!$btpage = get_record("lesson_pages", "id", $btpageid)) { + error("Add end of branch: btpage record not found"); + } + } + if ($btpage->qtype == LESSON_BRANCHTABLE) { + $newpage->lessonid = $lesson->id; + $newpage->prevpageid = $pageid; + $newpage->nextpageid = $page->nextpageid; + $newpage->qtype = LESSON_ENDOFBRANCH; + $newpage->timecreated = $timenow; + $newpage->title = get_string("endofbranch", "lesson"); + $newpage->contents = get_string("endofbranch", "lesson"); + if (!$newpageid = insert_record("lesson_pages", $newpage)) { + error("Insert page: new page not inserted"); + } + // update the linked list... + if (!set_field("lesson_pages", "nextpageid", $newpageid, "id", $pageid)) { + error("Add end of branch: unable to update link"); + } + if ($page->nextpageid) { + // the new page is not the last page + if (!set_field("lesson_pages", "prevpageid", $newpageid, "id", $page->nextpageid)) { + error("Insert page: unable to update previous link"); + } + } + // ..and the single "answer" + $newanswer->lessonid = $lesson->id; + $newanswer->pageid = $newpageid; + $newanswer->timecreated = $timenow; + $newanswer->jumpto = $btpageid; + if(!$newanswerid = insert_record("lesson_answers", $newanswer)) { + error("Add end of branch: answer record not inserted"); + } + redirect("view.php?id=$cm->id", get_string("ok")); + } else { + notice(get_string("nobranchtablefound", "lesson"), "view.php?id=$cm->id"); + } + } + + + /************** add page ************************************/ + elseif ($action == 'addpage' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + // first get the preceeding page + $pageid = $_GET['pageid']; + + // set of jump array + $jump[0] = get_string("thispage", "lesson"); + $jump[LESSON_NEXTPAGE] = get_string("nextpage", "lesson"); + $jump[LESSON_EOL] = get_string("endoflesson", "lesson"); + if (!$apageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { + error("Add page: first page not found"); + } + while (true) { + if ($apageid) { + $title = get_field("lesson_pages", "title", "id", $apageid); + $jump[$apageid] = $title; + $apageid = get_field("lesson_pages", "nextpageid", "id", $apageid); + } else { + // last page reached + break; + } + } + + // give teacher a blank proforma + print_heading_with_help(get_string("addaquestionpage", "lesson"), "overview", "lesson"); + ?> + <form name="form" method="post" action="lesson.php"> + <input type="hidden" name="id" value="<?PHP echo $cm->id ?>"> + <input type="hidden" name="action" value="insertpage"> + <input type="hidden" name="pageid" value="<?PHP echo $_GET['pageid'] ?>"> + <center><table cellpadding=5 border=1> + <tr><td align="center"> + <tr valign="top"> + <td><b><?php print_string("pagetitle", "lesson"); ?>:</b><br /> + <input type="text" name="title" size="80" maxsize="255" value=""></td></tr> + <?PHP + echo "<tr><td><b>"; + echo get_string("pagecontents", "lesson").":</b><br />\n"; + print_textarea($usehtmleditor, 25,70, 630, 400, "contents"); + use_html_editor("contents"); + echo "</td></tr>\n"; + echo "<tr><td><b>".get_string("questiontype", "lesson").":</b> \n"; + choose_from_menu($LESSON_QUESTION_TYPE, "qtype", LESSON_MULTICHOICE, ""); + helpbutton("questiontype", get_string("questiontype", "lesson"), "lesson"); + echo "<br /><b>".get_string("questionoption", "lesson").":</b>\n"; + echo " <input type=\"checkbox\" name=\"qoption\" value=\"1\"/>"; + helpbutton("questionoption", get_string("questionoption", "lesson"), "lesson"); + echo "</td></tr>\n"; + for ($i = 0; $i < $lesson->maxanswers; $i++) { + $iplus1 = $i + 1; + echo "<tr><td><b>".get_string("answer", "lesson")." $iplus1:</b><br />\n"; + print_textarea(false, 6, 70, 630, 300, "answer[$i]"); + echo "</td></tr>\n"; + echo "<tr><td><b>".get_string("response", "lesson")." $iplus1:</b><br />\n"; + print_textarea(false, 6, 70, 630, 300, "response[$i]"); + echo "</td></tr>\n"; + echo "<tr><td><B>".get_string("jump", "lesson")." $iplus1:</b> \n"; + if ($i) { + // answers 2, 3, 4... jumpto this page + lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); + } else { + // answer 1 jumpto next page + lesson_choose_from_menu($jump, "jumpto[$i]", LESSON_NEXTPAGE, ""); + } + helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); + echo "</td></tr>\n"; + } + // close table and form + ?> + </table><br /> + <input type="submit" value="<?php print_string("addaquestionpage", "lesson") ?>"> + <input type="submit" name="cancel" value="<?php print_string("cancel") ?>"> + </center> + </form> + <?PHP + } + + + /******************* confirm delete ************************************/ + elseif ($action == 'confirmdelete' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + if (empty($_GET['pageid'])) { + error("Confirm delete: pageid missing"); + } + $pageid = $_GET['pageid']; + if (!$thispage = get_record("lesson_pages", "id", $pageid)) { + error("Confirm delete: the page record not found"); + } + print_heading(get_string("deletingpage", "lesson", $thispage->title)); + // print the jumps to this page + if ($answers = get_records_select("lesson_answers", "lessonid = $lesson->id AND jumpto = $pageid + 1")) { + print_heading(get_string("thefollowingpagesjumptothispage", "lesson")); + echo "<p align=\"center\">\n"; + foreach ($answers as $answer) { + if (!$title = get_field("lesson_pages", "title", "id", $answer->pageid)) { + error("Confirm delete: page title not found"); + } + echo $title."<br />\n"; + } + } + notice_yesno(get_string("confirmdeletionofthispage","lesson"), + "lesson.php?action=delete&id=$cm->id&pageid=$pageid", + "view.php?id=$cm->id"); + } + + + /****************** continue ************************************/ + elseif ($action == 'continue' ) { + // record answer (if necessary) and show response (if none say if answer is correct or not) + + + if (empty($_POST['pageid'])) { + error("Continue: pageid missing"); + } + $pageid = $_POST['pageid']; + if (!$page = get_record("lesson_pages", "id", $pageid)) { + error("Continue: Page record not found"); + } + // set up some defaults + $answerid = 0; + $noanswer = false; + $correctanswer = false; + $newpageid = 0; // stay on the page + switch ($page->qtype) { + case LESSON_SHORTANSWER : + if (!$useranswer = $_POST['answer']) { + $noanswer = true; + break; + } + if (!$answers = get_records("lesson_answers", "pageid", $pageid, "id")) { + error("Continue: No answers found"); + } + foreach ($answers as $answer) { + // massage the wild cards (if present) + if (strpos(' '.$answer->answer, '*')) { + $answer->answer = str_replace('\*','@@@@@@', $answer->answer); + $answer->answer = str_replace('*','.*', $answer->answer); + $answer->answer = str_replace('@@@@@@', '\*', $answer->answer); + $answer->answer = str_replace('+', '\+', $answer->answer); + } + if (lesson_iscorrect($pageid, $answer->jumpto)) { + if ($page->qoption) { + // case sensitive + if (ereg('^'.$answer->answer.'$', $useranswer)) { + $correctanswer = true; + $newpageid = $answer->jumpto; + if (trim(strip_tags($answer->response))) { + $response = $answer->response; + } + } + } else { + // case insensitive + if (eregi('^'.$answer->answer.'$', $useranswer)) { + $correctanswer = true; + $newpageid = $answer->jumpto; + if (trim(strip_tags($answer->response))) { + $response = $answer->response; + } + } + } + } else { + // see if user typed in any of the wrong answers + // don't worry about case + if (eregi('^'.$answer->answer.'$', $useranswer)) { + $newpageid = $answer->jumpto; + if (trim(strip_tags($answer->response))) { + $response = $answer->response; + } + } + } + } + if (!isset($response)) { + if ($correctanswer) { + $response = get_string("thatsthecorrectanswer", "lesson"); + } else { + $response = get_string("thatsthewronganswer", "lesson"); + } + } + break; + + case LESSON_TRUEFALSE : + if (empty($_POST['answerid'])) { + $noanswer = true; + break; + } + $answerid = $_POST['answerid']; + if (!$answer = get_record("lesson_answers", "id", $answerid)) { + error("Continue: answer record not found"); + } + if (lesson_iscorrect($pageid, $answer->jumpto)) { + $correctanswer = true; + } + $newpageid = $answer->jumpto; + if (!$response = trim($answer->response)) { + if ($correctanswer) { + $response = get_string("thatsthecorrectanswer", "lesson"); + } else { + $response = get_string("thatsthewronganswer", "lesson"); + } + } + break; + + case LESSON_MULTICHOICE : + if ($page->qoption) { + // MULTIANSWER allowed, user's answer is an array + if (isset($_POST['answer'])) { + $useranswers = $_POST['answer']; + } else { + $noanswer = true; + break; + } + // get the answers in a set order, the id order + if (!$answers = get_records("lesson_answers", "pageid", $pageid, "id")) { + error("Continue: No answers found"); + } + $ncorrect = 0; + $nhits = 0; + $correctresponse = ''; + $wrongresponse = ''; + foreach ($answers as $answer) { + if (lesson_iscorrect($pageid, $answer->jumpto)) { + $ncorrect++; + foreach ($useranswers as $key => $answerid) { + if ($answerid == $answer->id) { + $nhits++; + } + } + // save the first jumpto page id, may be needed!... + if (!isset($correctpageid)) { + // leave in its "raw" state - will converted into a proper page id later + $correctpageid = $answer->jumpto; + } + // ...also save any response from the correct answers... + if (trim(strip_tags($answer->response))) { + $correctresponse = $answer->response; + } + } else { + // save the first jumpto page id, may be needed!... + if (!isset($wrongpageid)) { + // leave in its "raw" state - will converted into a proper page id later + $wrongpageid = $answer->jumpto; + } + // ...and from the incorrect ones, don't know which to use at this stage + if (trim(strip_tags($answer->response))) { + $wrongresponse = $answer->response; + } + } + } + if ((count($useranswers) == $ncorrect) and ($nhits == $ncorrect)) { + $correctanswer = true; + if (!$response = $correctresponse) { + $response = get_string("thatsthecorrectanswer", "lesson"); + } + $newpageid = $correctpageid; + } else { + if (!$response = $wrongresponse) { + $response = get_string("thatsthewronganswer", "lesson"); + } + $newpageid = $wrongpageid; + } + } else { + // only one answer allowed + if (empty($_POST['answerid'])) { + $noanswer = true; + break; + } + $answerid = $_POST['answerid']; + if (!$answer = get_record("lesson_answers", "id", $answerid)) { + error("Continue: answer record not found"); + } + if (lesson_iscorrect($pageid, $answer->jumpto)) { + $correctanswer = true; + } + $newpageid = $answer->jumpto; + if (!$response = trim($answer->response)) { + if ($correctanswer) { + $response = get_string("thatsthecorrectanswer", "lesson"); + } else { + $response = get_string("thatsthewronganswer", "lesson"); + } + } + } + break; + + case LESSON_MATCHING : + if (isset($_POST['response'])) { + $response = $_POST['response']; + } else { + $noanswer = true; + break; + } + if (!$answers = get_records("lesson_answers", "pageid", $pageid, "id")) { + error("Continue: No answers found"); + } + $ncorrect = 0; + $i = 0; + foreach ($answers as $answer) { + if ($answer->response == $response[$answer->id]) { + $ncorrect++; + } + if ($i == 0) { + $correctpageid = $answer->jumpto; + } + if ($i == 1) { + $wrongpageid = $answer->jumpto; + } + $i++; + } + if ($ncorrect == count($answers)) { + $response = get_string("thatsthecorrectanswer", "lesson"); + $newpageid = $correctpageid; + $correctanswer = true; + } else { + $response = get_string("numberofcorrectmatches", "lesson", $ncorrect); + $newpageid = $wrongpageid; + } + break; + + case LESSON_NUMERICAL : + // set defaults + $response = ''; + $newpageid = 0; + + if (!$useranswer = (float) $_POST['answer']) { + $noanswer = true; + break; + } + if (!$answers = get_records("lesson_answers", "pageid", $pageid, "id")) { + error("Continue: No answers found"); + } + foreach ($answers as $answer) { + if (strpos($answer->answer, ':')) { + // there's a pairs of values + list($min, $max) = explode(':', $answer->answer); + $minimum = (float) $min; + $maximum = (float) $max; + } else { + // there's only one value + $minimum = (float) $answer->answer; + $maximum = $minimum; + } + if (($useranswer >= $minimum) and ($useranswer <= $maximum)) { + $newpageid = $answer->jumpto; + $response = trim($answer->response); + if (lesson_iscorrect($pageid, $newpageid)) { + $correctanswer = true; + } + break; + } + } + + if ($correctanswer) { + if (!$response) { + $response = get_string("thatsthecorrectanswer", "lesson"); + } + } else { + if (!$response) { + $response = get_string("thatsthewronganswer", "lesson"); + } + } + break; + + case LESSON_BRANCHTABLE: + $noanswer = false; + $newpageid = $_POST['jumpto']; + // convert jumpto page into a proper page id + if ($newpageid == 0) { + $newpageid = $pageid; + } elseif ($newpageid == LESSON_NEXTPAGE) { + if (!$newpageid = $page->nextpageid) { + // no nextpage go to end of lesson + $newpageid = LESSON_EOL; + } + } + // no need to record anything in lesson_attempts + redirect("view.php?id=$cm->id&action=navigation&pageid=$newpageid"); + print_footer($course); + exit(); + break; + + } + if ($noanswer) { + $newpageid = $pageid; // display same page again + print_simple_box(get_string("noanswer", "lesson"), "center"); + } else { + $nretakes = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); + if (isstudent($course->id)) { + // record student's attempt + $attempt->lessonid = $lesson->id; + $attempt->pageid = $pageid; + $attempt->userid = $USER->id; + $attempt->answerid = $answerid; + $attempt->retry = $nretakes; + $attempt->correct = $correctanswer; + $attempt->timeseen = time(); + if (!$newattemptid = insert_record("lesson_attempts", $attempt)) { + error("Continue: attempt not inserted"); + } + if (!$correctanswer and ($newpageid == 0)) { + // wrong answer and student is stuck on this page - check how many attempts + // the student has had at this page/question + $nattempts = count_records("lesson_attempts", "pageid", $pageid, "userid", $USER->id, + "retry", $nretakes); + + if ($nattempts >= $lesson->maxattempts) { + if ($lesson->maxattempts > 1) { // don't bother with message if only one attempt + echo "<p align=\"center\">(".get_string("maximumnumberofattempts", "lesson"). + " ".get_string("reached", "lesson")." - ". + get_string("movingtonextpage", "lesson").")</p>\n"; + } + $newpageid = LESSON_NEXTPAGE; + } + } + } + // convert jumpto page into a proper page id + if ($newpageid == 0) { + $newpageid = $pageid; + } elseif ($newpageid == LESSON_NEXTPAGE) { + if ($lesson->nextpagedefault) { + // in Flash Card mode... + // ... first get the page ids (lessonid the 5th param is needed to make get_records play) + $allpages = get_records("lesson_pages", "lessonid", $lesson->id, "id", "id,lessonid"); + shuffle ($allpages); + $found = false; + if ($lesson->nextpagedefault == LESSON_UNSEENPAGE) { + foreach ($allpages as $thispage) { + if (!count_records("lesson_attempts", "pageid", $thispage->id, "userid", + $USER->id, "retry", $nretakes)) { + $found = true; + break; + } + } + } elseif ($lesson->nextpagedefault == LESSON_UNANSWEREDPAGE) { + foreach ($allpages as $thispage) { + if (!count_records_select("lesson_attempts", "pageid = $thispage->id AND + userid = $USER->id AND correct = 1 AND retry = $nretakes")) { + $found = true; + break; + } + } + } + if ($found) { + $newpageid = $thispage->id; + if ($lesson->maxpages) { + // check number of pages viewed (in the lesson) + if (count_records("lesson_attempts", "lessonid", $lesson->id, "userid", $USER->id, + "retry", $nretakes) >= $lesson->maxpages) { + $newpageid = LESSON_EOL; + } + } + } else { + $newpageid = LESSON_EOL; + } + } elseif (!$newpageid = $page->nextpageid) { + // no nextpage go to end of lesson + $newpageid = LESSON_EOL; + } + } + + // display response (if there is one - there should be!) + if ($response) { + $title = get_field("lesson_pages", "title", "id", $pageid); + print_heading($title); + echo "<table width=\"80%\" border=\"0\" align=\"center\"><tr><td>\n"; + print_simple_box(format_text($response), 'center'); + echo "</td></tr></table>\n"; + } + } + echo "<form name=\"pageform\" method =\"post\" action=\"view.php\">\n"; + echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"navigation\">\n"; + echo "<input type=\"hidden\" name=\"pageid\" value=\"$newpageid\">\n"; + echo "<p align=\"center\"><input type=\"submit\" name=\"continue\" value=\"". + get_string("continue", "lesson")."\"></p>\n"; + echo "</form>\n"; + } + + + + /******************* delete ************************************/ + elseif ($action == 'delete' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + if (empty($_GET['pageid'])) { + error("Delete: pageid missing"); + } + $pageid = $_GET['pageid']; + if (!$thispage = get_record("lesson_pages", "id", $pageid)) { + error("Delete: page record not found"); + } + + print_string("deleting", "lesson"); + // first delete all the associated records... + delete_records("lesson_attempts", "pageid", $pageid); + // ...now delete the answers... + delete_records("lesson_answers", "pageid", $pageid); + // ..and the page itself + delete_records("lesson_pages", "id", $pageid); + + // repair the hole in the linkage + if (!$thispage->prevpageid) { + // this is the first page... + if (!$page = get_record("lesson_pages", "id", $thispage->nextpageid)) { + error("Delete: next page not found"); + } + if (!set_field("lesson_pages", "prevpageid", 0, "id", $page->id)) { + error("Delete: unable to set prevpage link"); + } + } elseif (!$thispage->nextpageid) { + // this is the last page... + if (!$page = get_record("lesson_pages", "id", $thispage->prevpageid)) { + error("Delete: prev page not found"); + } + if (!set_field("lesson_pages", "nextpageid", 0, "id", $page->id)) { + error("Delete: unable to set nextpage link"); + } + } else { + // page is in the middle... + if (!$prevpage = get_record("lesson_pages", "id", $thispage->prevpageid)) { + error("Delete: prev page not found"); + } + if (!$nextpage = get_record("lesson_pages", "id", $thispage->nextpageid)) { + error("Delete: next page not found"); + } + if (!set_field("lesson_pages", "nextpageid", $nextpage->id, "id", $prevpage->id)) { + error("Delete: unable to set next link"); + } + if (!set_field("lesson_pages", "prevpageid", $prevpage->id, "id", $nextpage->id)) { + error("Delete: unable to set prev link"); + } + } + redirect("view.php?id=$cm->id", get_string("ok")); + } + + + + /************** edit page ************************************/ + elseif ($action == 'editpage' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + // get the page + if (!$page = get_record("lesson_pages", "id", $_GET['pageid'])) { + error("Edit page: page record not found"); + } + // set of jump array + $jump[0] = get_string("thispage", "lesson"); + $jump[LESSON_NEXTPAGE] = get_string("nextpage", "lesson"); + $jump[LESSON_EOL] = get_string("endoflesson", "lesson"); + if (!$apageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { + error("Edit page: first page not found"); + } + while (true) { + if ($apageid) { + if (!$apage = get_record("lesson_pages", "id", $apageid)) { + error("Edit page: apage record not found"); + } + if ($apage->qtype != LESSON_ENDOFBRANCH) { + // don't include EOB's in the list... + if (trim($page->title)) { // ...nor nuffin pages + $jump[$apageid] = $apage->title; + } + } + $apageid = $apage->nextpageid; + } else { + // last page reached + break; + } + } + + // give teacher a proforma + ?> + <form name="editpage" method="post" action="lesson.php"> + <input type="hidden" name="id" value="<?PHP echo $cm->id ?>"> + <input type="hidden" name="action" value="updatepage"> + <input type="hidden" name="pageid" value="<?PHP echo $_GET['pageid'] ?>"> + <input type="hidden" name="redisplay" value="0"> + <center><table cellpadding=5 border=1> + <tr><td align="center"> + <tr valign="top"> + <td><b><?php print_string("pagetitle", "lesson"); ?>:</b><br /> + <input type="text" name="title" size="80" maxsize="255" value="<?PHP echo $page->title ?>"></td> + </tr> + <?PHP + echo "<tr><td><b>"; + echo get_string("pagecontents", "lesson").":</b><br />\n"; + print_textarea($usehtmleditor, 25, 70, 630, 400, "contents", $page->contents); + use_html_editor("contents"); // always the editor + echo "</td></tr>\n"; + $n = 0; + switch ($page->qtype) { + case LESSON_SHORTANSWER : + echo "<tr><td><b>".get_string("questiontype", "lesson").":</b> \n"; + choose_from_menu($LESSON_QUESTION_TYPE, "qtype", $page->qtype, ""); + echo "&nbsp;&nbsp;"; + echo " <b>".get_string("casesensitive", "lesson").":</b> \n"; + if ($page->qoption) { + echo "<input type=\"checkbox\" name=\"qoption\" value=\"1\" checked=\"checked\"/>"; + } else { + echo "<input type=\"checkbox\" name=\"qoption\" value=\"1\"/>"; + } + helpbutton("questiontypes", get_string("questiontype", "lesson"), "lesson"); + break; + case LESSON_MULTICHOICE : + echo "<tr><td><b>".get_string("questiontype", "lesson").":</b> \n"; + choose_from_menu($LESSON_QUESTION_TYPE, "qtype", $page->qtype, ""); + echo "&nbsp;&nbsp;"; + echo " <b>".get_string("multianswer", "lesson").":</b> \n"; + if ($page->qoption) { + echo "<input type=\"checkbox\" name=\"qoption\" value=\"1\" checked=\"checked\"/>"; + } else { + echo "<input type=\"checkbox\" name=\"qoption\" value=\"1\"/>"; + } + helpbutton("questiontypes", get_string("questiontype", "lesson"), "lesson"); + break; + case LESSON_TRUEFALSE : + case LESSON_MATCHING : + case LESSON_NUMERICAL : + echo "<tr><td><b>".get_string("questiontype", "lesson").":</b> \n"; + choose_from_menu($LESSON_QUESTION_TYPE, "qtype", $page->qtype, ""); + helpbutton("questiontypes", get_string("questiontype", "lesson"), "lesson"); + break; + case LESSON_BRANCHTABLE : + echo "<input type=\"hidden\" name=\"qtype\" value=\"$page->qtype\">\n"; + echo "<tr><td><b>".get_string("branchtable", "lesson")."</b> \n"; + break; + case LESSON_ENDOFBRANCH : + echo "<input type=\"hidden\" name=\"qtype\" value=\"$page->qtype\">\n"; + echo "<tr><td><b>".get_string("endofbranch", "lesson")."</b> \n"; + break; + } + echo "</td></tr>\n"; + // get the answers in a set order, the id order + if ($answers = get_records("lesson_answers", "pageid", $page->id, "id")) { + foreach ($answers as $answer) { + $flags = intval($answer->flags); // force into an integer + $nplus1 = $n + 1; + echo "<input type=\"hidden\" name=\"answerid[$n]\" value=\"$answer->id\">\n"; + switch ($page->qtype) { + case LESSON_MULTICHOICE: + case LESSON_TRUEFALSE: + case LESSON_SHORTANSWER: + case LESSON_NUMERICAL: + case LESSON_MATCHING: + echo "<tr><td><b>".get_string("answer", "lesson")." $nplus1:</b>\n"; + if ($flags & LESSON_ANSWER_EDITOR) { + echo " [".get_string("useeditor", "lesson").": ". + "<input type=\"checkbox\" name=\"answereditor[$n]\" value=\"1\" + checked=\"checked\">"; + helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); + echo "]<br />\n"; + print_textarea($usehtmleditor, 20, 70, 630, 300, "answer[$n]", $answer->answer); + use_html_editor("answer[$n]"); // switch on the editor + } else { + echo " [".get_string("useeditor", "lesson").": ". + "<input type=\"checkbox\" name=\"answereditor[$n]\" value=\"1\">"; + helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); + echo "]<br />\n"; + print_textarea(false, 6, 70, 630, 300, "answer[$n]", $answer->answer); + } + echo "</td></tr>\n"; + echo "<tr><td><b>".get_string("response", "lesson")." $nplus1:</b>\n"; + if ($flags & LESSON_RESPONSE_EDITOR) { + echo " [".get_string("useeditor", "lesson").": ". + "<input type=\"checkbox\" name=\"responseeditor[$n]\" value=\"1\" + checked=\"checked\">"; + helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); + echo "]<br />\n"; + print_textarea($usehtmleditor, 20, 70, 630, 300, "response[$n]", $answer->response); + use_html_editor("response[$n]"); // switch on the editor + } else { + echo " [".get_string("useeditor", "lesson").": ". + "<input type=\"checkbox\" name=\"responseeditor[$n]\" value=\"1\">"; + helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); + echo "]<br />\n"; + print_textarea(false, 6, 70, 630, 300, "response[$n]", $answer->response); + } + echo "</td></tr>\n"; + break; + case LESSON_BRANCHTABLE: + echo "<tr><td><b>".get_string("description", "lesson")." $nplus1:</b>\n"; + if ($flags & LESSON_ANSWER_EDITOR) { + echo " [".get_string("useeditor", "lesson").": ". + "<input type=\"checkbox\" name=\"answereditor[$n]\" value=\"1\" + checked=\"checked\">"; + helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); + echo "]<br />\n"; + print_textarea($usehtmleditor, 20, 70, 630, 300, "answer[$n]", $answer->answer); + } else { + echo " [".get_string("useeditor", "lesson").": ". + "<input type=\"checkbox\" name=\"answereditor[$n]\" value=\"1\">"; + helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); + echo "]<br />\n"; + print_textarea(false, 10, 70, 630, 300, "answer[$n]", $answer->answer); + } + echo "</td></tr>\n"; + break; + } + echo "<tr><td><b>".get_string("jump", "lesson")." $nplus1:</b> \n"; + lesson_choose_from_menu($jump, "jumpto[$n]", $answer->jumpto, ""); + helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); + echo "</td></tr>\n"; + $n++; + } + } + if ($page->qtype != LESSON_ENDOFBRANCH) { + for ($i = $n; $i < $lesson->maxanswers; $i++) { + $iplus1 = $i + 1; + echo "<input type=\"hidden\" name=\"answerid[$i]\" value=\"0\">\n"; + switch ($page->qtype) { + case LESSON_MULTICHOICE: + case LESSON_TRUEFALSE: + case LESSON_SHORTANSWER: + case LESSON_NUMERICAL: + case LESSON_MATCHING: + echo "<tr><td><b>".get_string("answer", "lesson")." $iplus1:</b>\n"; + echo " [".get_string("useeditor", "lesson").": ". + "<input type=\"checkbox\" name=\"answereditor[$i]\" value=\"1\">"; + helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); + echo "]<br />\n"; + print_textarea(false, 10, 70, 630, 300, "answer[$i]"); + echo "</td></tr>\n"; + echo "<tr><td><b>".get_string("response", "lesson")." $iplus1:</b>\n"; + echo " [".get_string("useeditor", "lesson").": ". + "<input type=\"checkbox\" name=\"responseeditor[$i]\" value=\"1\">"; + helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); + echo "]<br />\n"; + print_textarea(false, 10, 70, 630, 300, "response[$i]"); + echo "</td></tr>\n"; + break; + case LESSON_BRANCHTABLE: + echo "<tr><td><b>".get_string("description", "lesson")." $iplus1:</b>\n"; + echo " [".get_string("useeditor", "lesson").": ". + "<input type=\"checkbox\" name=\"answereditor[$i]\" value=\"1\">"; + helpbutton("useeditor", get_string("useeditor", "lesson"), "lesson"); + echo "]<br />\n"; + print_textarea(false, 10, 70, 630, 300, "answer[$i]"); + echo "</td></tr>\n"; + break; + } + echo "<tr><td><B>".get_string("jump", "lesson")." $iplus1:</b> \n"; + lesson_choose_from_menu($jump, "jumpto[$i]", 0, ""); + helpbutton("jumpto", get_string("jump", "lesson"), "lesson"); + echo "</td></tr>\n"; + } + } + // close table and form + ?> + </table><br /> + <input type="button" value="<?php print_string("redisplaypage", "lesson") ?>" + onclick="document.editpage.redisplay.value=1;document.editpage.submit();"> + <input type="submit" value="<?php print_string("savepage", "lesson") ?>"> + <input type="submit" name="cancel" value="<?php print_string("cancel") ?>"> + </center> + </form> + <?PHP + } + + + /****************** insert page ************************************/ + elseif ($action == 'insertpage' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + $timenow = time(); + $form = data_submitted(); + + if ($form->pageid) { + // the new page is not the first page + if (!$page = get_record("lesson_pages", "id", $form->pageid)) { + error("Insert page: page record not found"); + } + $newpage->lessonid = $lesson->id; + $newpage->prevpageid = $form->pageid; + $newpage->nextpageid = $page->nextpageid; + $newpage->timecreated = $timenow; + $newpage->qtype = $form->qtype; + if (isset($form->qoption)) { + $newpage->qoption = $form->qoption; + } else { + $newpage->qoption = 0; + } + $newpage->title = $form->title; + $newpage->contents = trim($form->contents); + $newpageid = insert_record("lesson_pages", $newpage); + if (!$newpageid) { + error("Insert page: new page not inserted"); + } + // update the linked list + if (!set_field("lesson_pages", "nextpageid", $newpageid, "id", $form->pageid)) { + error("Insert page: unable to update next link"); + } + if ($page->nextpageid) { + // new page is not the last page + if (!set_field("lesson_pages", "prevpageid", $newpageid, "id", $page->nextpageid)) { + error("Insert page: unable to update previous link"); + } + } + } else { + // new page is the first page + // get the existing (first) page (if any) + if (!$page = get_record_select("lesson_pages", "lessonid = $lesson->id AND prevpageid = 0")) { + // there are no existing pages + $newpage->lessonid = $lesson->id; + $newpage->prevpageid = 0; // this is a first page + $newpage->nextpageid = 0; // this is the only page + $newpage->timecreated = $timenow; + $newpage->qtype = $form->qtype; + if (isset($form->qoption)) { + $newpage->qoption = $form->qoption; + } else { + $newpage->qoption = 0; + } + $newpage->title = $form->title; + $newpage->contents = trim($form->contents); + $newpageid = insert_record("lesson_pages", $newpage); + if (!$newpageid) { + error("Insert page: new first page not inserted"); + } + } else { + // there are existing pages put this at the start + $newpage->lessonid = $lesson->id; + $newpage->prevpageid = 0; // this is a first page + $newpage->nextpageid = $page->id; + $newpage->timecreated = $timenow; + $newpage->qtype = $form->qtype; + if (isset($form->qoption)) { + $newpage->qoption = $form->qoption; + } else { + $newpage->qoption = 0; + } + $newpage->title = $form->title; + $newpage->contents = trim($form->contents); + $newpageid = insert_record("lesson_pages", $newpage); + if (!$newpageid) { + error("Insert page: first page not inserted"); + } + // update the linked list + if (!set_field("lesson_pages", "prevpageid", $newpageid, "id", $page->id)) { + error("Insert page: unable to update link"); + } + } + } + // now add the answers + for ($i = 0; $i < $lesson->maxanswers; $i++) { + if (trim(strip_tags($form->answer[$i]))) { // strip_tags because the HTML editor adds <p><br />... + $newanswer->lessonid = $lesson->id; + $newanswer->pageid = $newpageid; + $newanswer->timecreated = $timenow; + $newanswer->answer = trim($form->answer[$i]); + if (isset($form->response[$i])) { + $newanswer->response = trim($form->response[$i]); + } + if (isset($form->jumpto[$i])) { + $newanswer->jumpto = $form->jumpto[$i]; + } + $newanswerid = insert_record("lesson_answers", $newanswer); + if (!$newanswerid) { + error("Insert Page: answer record $i not inserted"); + } + } else { + break; + } + } + redirect("view.php?id=$cm->id", get_string("ok")); + } + + + /****************** move ************************************/ + elseif ($action == 'move') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + $pageid = $_GET['pageid']; + $title = get_field("lesson_pages", "title", "id", $pageid); + print_heading(get_string("moving", "lesson", $title)); + + if (!$page = get_record_select("lesson_pages", "lessonid = $lesson->id AND prevpageid = 0")) { + error("Move: first page not found"); + } + + echo "<center><table cellpadding=\"5\" border=\"1\">\n"; + echo "<tr><td><a href=\"lesson.php?id=$cm->id&action=moveit&pageid=$pageid&after=0\"><small>". + get_string("movepagehere", "lesson")."</small></a></td></tr>\n"; + while (true) { + if ($page->id != $pageid) { + if (!$title = trim($page->title)) { + $title = "<< ".get_string("notitle", "lesson")." >>"; + } + echo "<tr><td bgcolor=\"$THEME->cellheading2\"><b>$title</b></td></tr>\n"; + echo "<tr><td><a href=\"lesson.php?id=$cm->id&action=moveit&pageid=$pageid&after={$page->id}\"><small>". + get_string("movepagehere", "lesson")."</small></a></td></tr>\n"; + } + if ($page->nextpageid) { + if (!$page = get_record("lesson_pages", "id", $page->nextpageid)) { + error("Teacher view: Next page not found!"); + } + } else { + // last page reached + break; + } + } + echo "</table>\n"; + } + + + /****************** moveit ************************************/ + elseif ($action == 'moveit') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + $pageid = $_GET['pageid']; // page to move + if (!$page = get_record("lesson_pages", "id", $pageid)) { + error("Moveit: page not found"); + } + $after = $_GET['after']; // target page + + print_heading(get_string("moving", "lesson", $page->title)); + + // first step. determine the new first page + // (this is done first as the current first page will be lost in the next step) + if (!$after) { + // the moved page is the new first page + $newfirstpageid = $pageid; + // reset $after so that is points to the last page + // (when the pages are in a ring this will in effect be the first page) + if ($page->nextpageid) { + if (!$after = get_field("lesson_pages", "id", "lessonid", $lesson->id, "nextpageid", 0)) { + error("Moveit: last page id not found"); + } + } else { + // the page being moved is the last page, so the new last page will be + $after = $page->prevpageid; + } + } elseif (!$page->prevpageid) { + // the page to be moved was the first page, so the following page must be the new first page + $newfirstpageid = $page->nextpageid; + } else { + // the current first page remains the first page + if (!$newfirstpageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { + error("Moveit: current first page id not found"); + } + } + // the rest is all unconditional... + + // second step. join pages into a ring + if (!$firstpageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { + error("Moveit: firstpageid not found"); + } + if (!$lastpageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "nextpageid", 0)) { + error("Moveit: lastpage not found"); + } + if (!set_field("lesson_pages", "prevpageid", $lastpageid, "id", $firstpageid)) { + error("Moveit: unable to update link"); + } + if (!set_field("lesson_pages", "nextpageid", $firstpageid, "id", $lastpageid)) { + error("Moveit: unable to update link"); + } + + // third step. remove the page to be moved + if (!$prevpageid = get_field("lesson_pages", "prevpageid", "id", $pageid)) { + error("Moveit: prevpageid not found"); + } + if (!$nextpageid = get_field("lesson_pages", "nextpageid", "id", $pageid)) { + error("Moveit: nextpageid not found"); + } + if (!set_field("lesson_pages", "nextpageid", $nextpageid, "id", $prevpageid)) { + error("Moveit: unable to update link"); + } + if (!set_field("lesson_pages", "prevpageid", $prevpageid, "id", $nextpageid)) { + error("Moveit: unable to update link"); + } + + // fourth step. insert page to be moved in new place... + if (!$nextpageid = get_field("lesson_pages", "nextpageid", "id", $after)) { + error("Movit: nextpageid not found"); + } + if (!set_field("lesson_pages", "nextpageid", $pageid, "id", $after)) { + error("Moveit: unable to update link"); + } + if (!set_field("lesson_pages", "prevpageid", $pageid, "id", $nextpageid)) { + error("Moveit: unable to update link"); + } + // ...and set the links in the moved page + if (!set_field("lesson_pages", "prevpageid", $after, "id", $pageid)) { + error("Moveit: unable to update link"); + } + if (!set_field("lesson_pages", "nextpageid", $nextpageid, "id", $pageid)) { + error("Moveit: unable to update link"); + } + + // fifth step. break the ring + if (!$newlastpageid = get_field("lesson_pages", "prevpageid", "id", $newfirstpageid)) { + error("Moveit: newlastpageid not found"); + } + if (!set_field("lesson_pages", "prevpageid", 0, "id", $newfirstpageid)) { + error("Moveit: unable to update link"); + } + if (!set_field("lesson_pages", "nextpageid", 0, "id", $newlastpageid)) { + error("Moveit: unable to update link"); + } + redirect("view.php?id=$cm->id", get_string("ok")); + } + + + /****************** update page ************************************/ + elseif ($action == 'updatepage' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + $timenow = time(); + $form = data_submitted(); + + $page->id = $form->pageid; + $page->timemodified = $timenow; + $page->qtype = $form->qtype; + if (isset($form->qoption)) { + $page->qoption = $form->qoption; + } else { + $page->qoption = 0; + } + $page->title = $form->title; + $page->contents = trim($form->contents); + if (!update_record("lesson_pages", $page)) { + error("Update page: page not updated"); + } + if ($page->qtype == LESSON_ENDOFBRANCH) { + // there's just a single answer with a jump + $oldanswer->id = $form->answerid[0]; + $oldanswer->timemodified = $timenow; + $oldanswer->jumpto = $form->jumpto[0]; + if (!update_record("lesson_answers", $oldanswer)) { + error("Update page: EOB not updated"); + } + } else { + // it's an "ordinary" page + for ($i = 0; $i < $lesson->maxanswers; $i++) { + // strip tags because the editor gives <p><br />... + // also save any answers where the editor is (going to be) used + if (!isset($form->answereditor[$i])) { // clean up check box + $form->answereditor[$i] = 0; + } + if (!isset($form->responseeditor[$i])) { // clean up check box + $form->responseeditor[$i] = 0; + } + if (trim(strip_tags($form->answer[$i])) or $form->answereditor[$i] or $form->responseeditor[$i]) { + if ($form->answerid[$i]) { + unset($oldanswer); + $oldanswer->id = $form->answerid[$i]; + $oldanswer->flags = $form->answereditor[$i] * LESSON_ANSWER_EDITOR + + $form->responseeditor[$i] * LESSON_RESPONSE_EDITOR; + $oldanswer->timemodified = $timenow; + $oldanswer->answer = trim($form->answer[$i]); + if (isset($form->response[$i])) { + $oldanswer->response = trim($form->response[$i]); + } + $oldanswer->jumpto = $form->jumpto[$i]; + if (!update_record("lesson_answers", $oldanswer)) { + error("Update page: answer $i not updated"); + } + } else { + // it's a new answer + unset($newanswer); // need to clear id if more than one new answer is ben added + $newanswer->lessonid = $lesson->id; + $newanswer->pageid = $page->id; + $newanswer->flags = $form->answereditor[$i] * LESSON_ANSWER_EDITOR + + $form->responseeditor[$i] * LESSON_RESPONSE_EDITOR; + $newanswer->timecreated = $timenow; + $newanswer->answer = trim($form->answer[$i]); + if (isset($form->response[$i])) { + $newanswer->response = trim($form->response[$i]); + } + $newanswer->jumpto = $form->jumpto[$i]; + $newanswerid = insert_record("lesson_answers", $newanswer); + if (!$newanswerid) { + error("Update page: answer record not inserted"); + } + } + } else { + if ($form->answerid[$i]) { + // need to delete blanked out answer + if (!delete_records("lesson_answers", "id", $form->answerid[$i])) { + error("Update page: unable to delete answer record"); + } + } + } + } + } + if ($form->redisplay) { + redirect("lesson.php?id=$cm->id&action=editpage&pageid=$page->id"); + } else { + redirect("view.php?id=$cm->id", get_string("ok")); + } + } + + + /*************** no man's land **************************************/ + else { + error("Fatal Error: Unknown Action: ".$action."\n"); + } + + print_footer($course); ?> + diff --git a/mod/lesson/lib.php b/mod/lesson/lib.php index e46b506c1fc..87ccf2e06fd 100644 --- a/mod/lesson/lib.php +++ b/mod/lesson/lib.php @@ -1,22 +1,138 @@ -<?PHP // $Id$ - // modified by mnielsen @ CDC - /// Update: The lib.php now contains only the functions that are - /// used outside of the lesson module. All functions (I hope) that are only local - /// are now in locallib.php. +<?PHP // $Id$ /// Library of functions and constants for module lesson - -define("LESSON_MAX_EVENT_LENGTH", "432000"); // 5 days maximum - /// (replace lesson with the name of your module and delete this line) + +if (!defined("LESSON_UNSEENPAGE")) { + define("LESSON_UNSEENPAGE", 1); // Next page -> any page not seen before + } +if (!defined("LESSON_UNANSWEREDPAGE")) { + define("LESSON_UNANSWEREDPAGE", 2); // Next page -> any page not answered correctly + } + +$LESSON_NEXTPAGE_ACTION = array (0 => get_string("normal", "lesson"), + LESSON_UNSEENPAGE => get_string("showanunseenpage", "lesson"), + LESSON_UNANSWEREDPAGE => get_string("showanunansweredpage", "lesson") ); + + +if (!defined("LESSON_NEXTPAGE")) { + define("LESSON_NEXTPAGE", -1); // Next page + } +if (!defined("LESSON_EOL")) { + define("LESSON_EOL", -9); // End of Lesson + } +if (!defined("LESSON_UNDEFINED")) { + define("LESSON_UNDEFINED", -99); // undefined + } + +if (!defined("LESSON_SHORTANSWER")) { + define("LESSON_SHORTANSWER", "1"); +} +if (!defined("LESSON_TRUEFALSE")) { + define("LESSON_TRUEFALSE", "2"); +} +if (!defined("LESSON_MULTICHOICE")) { + define("LESSON_MULTICHOICE", "3"); +} +if (!defined("LESSON_RANDOM")) { + define("LESSON_RANDOM", "4"); +} +if (!defined("LESSON_MATCHING")) { + define("LESSON_MATCHING", "5"); +} +if (!defined("LESSON_RANDOMSAMATCH")) { + define("LESSON_RANDOMSAMATCH", "6"); +} +if (!defined("LESSON_DESCRIPTION")) { + define("LESSON_DESCRIPTION", "7"); +} +if (!defined("LESSON_NUMERICAL")) { + define("LESSON_NUMERICAL", "8"); +} +if (!defined("LESSON_MULTIANSWER")) { + define("LESSON_MULTIANSWER", "9"); +} + +$LESSON_QUESTION_TYPE = array ( LESSON_MULTICHOICE => get_string("multichoice", "quiz"), + LESSON_TRUEFALSE => get_string("truefalse", "quiz"), + LESSON_SHORTANSWER => get_string("shortanswer", "quiz"), + LESSON_NUMERICAL => get_string("numerical", "quiz"), + LESSON_MATCHING => get_string("match", "quiz") +// LESSON_DESCRIPTION => get_string("description", "quiz"), +// LESSON_RANDOM => get_string("random", "quiz"), +// LESSON_RANDOMSAMATCH => get_string("randomsamatch", "quiz"), +// LESSON_MULTIANSWER => get_string("multianswer", "quiz"), + ); + +if (!defined("LESSON_BRANCHTABLE")) { + define("LESSON_BRANCHTABLE", "20"); +} +if (!defined("LESSON_ENDOFBRANCH")) { + define("LESSON_ENDOFBRANCH", "21"); +} + +if (!defined("LESSON_ANSWER_EDITOR")) { + define("LESSON_ANSWER_EDITOR", "1"); +} +if (!defined("LESSON_RESPONSE_EDITOR")) { + define("LESSON_RESPONSE_EDITOR", "2"); +} +/*******************************************************************/ +function lesson_choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="", $nothingvalue="0", $return=false) { +/// Given an array of value, creates a popup menu to be part of a form +/// $options["value"]["label"] + + if ($nothing == "choose") { + $nothing = get_string("choose")."..."; + } + + if ($script) { + $javascript = "onChange=\"$script\""; + } else { + $javascript = ""; + } + + $output = "<SELECT NAME=$name $javascript>\n"; + if ($nothing) { + $output .= " <OPTION VALUE=\"$nothingvalue\"\n"; + if ($nothingvalue == $selected) { + $output .= " SELECTED"; + } + $output .= ">$nothing</OPTION>\n"; + } + if (!empty($options)) { + foreach ($options as $value => $label) { + $output .= " <OPTION VALUE=\"$value\""; + if ($value == $selected) { + $output .= " SELECTED"; + } + // stop zero label being replaced by array index value + // if ($label) { + // $output .= ">$label</OPTION>\n"; + // } else { + // $output .= ">$value</OPTION>\n"; + // } + $output .= ">$label</OPTION>\n"; + + } + } + $output .= "</SELECT>\n"; + + if ($return) { + return $output; + } else { + echo $output; + } +} + + /*******************************************************************/ function lesson_add_instance($lesson) { /// Given an object containing all the necessary data, /// (defined by the form in mod.html) this function /// will create a new instance and return the id number /// of the new instance. - global $SESSION; $lesson->timemodified = time(); @@ -27,67 +143,8 @@ function lesson_add_instance($lesson) { $lesson->deadline = make_timestamp($lesson->deadlineyear, $lesson->deadlinemonth, $lesson->deadlineday, $lesson->deadlinehour, $lesson->deadlineminute); - - /// CDC-FLAG /// - if (!empty($lesson->password)) { - $lesson->password = md5($lesson->password); - } else { - unset($lesson->password); - } - /// CDC-FLAG /// - if (!$lesson->id = insert_record("lesson", $lesson)) { - return false; // bad - } - - if ($lesson->lessondefault) { - $lessondefault = $lesson; - unset($lessondefault->lessondefault); - unset($lessondefault->name); - unset($lessondefault->timemodified); - unset($lessondefault->available); - unset($lessondefault->deadline); - if ($lessondefault->id = get_field("lesson_default", "id", "course", $lessondefault->course)) { - update_record("lesson_default", $lessondefault); - } else { - insert_record("lesson_default", $lessondefault); - } - } else { - unset($lesson->lessondefault); - } - - // got this code from quiz, thanks quiz!!! - delete_records('event', 'modulename', 'lesson', 'instance', $lesson->id); // Just in case - $event = new stdClass; - $event->name = addslashes($lesson->name); - $event->description = addslashes($lesson->name); - $event->courseid = $lesson->course; - $event->groupid = 0; - $event->userid = 0; - $event->modulename = 'lesson'; - $event->instance = $lesson->id; - $event->eventtype = 'open'; - $event->timestart = $lesson->available; - $event->visible = instance_is_visible('lesson', $lesson); - $event->timeduration = ($lesson->deadline - $lesson->available); - - if ($event->timeduration > LESSON_MAX_EVENT_LENGTH) { /// Long durations create two events - $event2 = $event; - - $event->name .= ' ('.get_string('lessonopens', 'lesson').')'; - $event->timeduration = 0; - - $event2->timestart = $lesson->deadline; - $event2->eventtype = 'close'; - $event2->timeduration = 0; - $event2->name .= ' ('.get_string('lessoncloses', 'lesson').')'; - - add_event($event2); - } - - add_event($event); - - return $lesson->id; + return insert_record("lesson", $lesson); } @@ -106,109 +163,6 @@ function lesson_update_instance($lesson) { $lesson->deadlineminute); $lesson->id = $lesson->instance; - /// CDC-FLAG /// - if (!empty($lesson->password)) { - $lesson->password = md5($lesson->password); - } else { - unset($lesson->password); - } - /// CDC-FLAG /// - - if ($lesson->lessondefault) { - $lessondefault = $lesson; - unset($lessondefault->lessondefault); - unset($lessondefault->name); - unset($lessondefault->timemodified); - unset($lessondefault->available); - unset($lessondefault->deadline); - if ($lessondefault->id = get_field("lesson_default", "id", "course", $lessondefault->course)) { - update_record("lesson_default", $lessondefault); - } else { - insert_record("lesson_default", $lessondefault); - } - } else { - unset($lesson->lessondefault); - } - - // update the calendar events (credit goes to quiz module) - if ($events = get_records_select('event', "modulename = 'lesson' and instance = '$lesson->id'")) { - foreach($events as $event) { - delete_event($event->id); - } - } - - $event = new stdClass; - $event->name = addslashes($lesson->name); - $event->description = addslashes($lesson->name); - $event->courseid = $lesson->course; - $event->groupid = 0; - $event->userid = 0; - $event->modulename = 'lesson'; - $event->instance = $lesson->id; - $event->eventtype = 'open'; - $event->timestart = $lesson->available; - $event->visible = instance_is_visible('lesson', $lesson); - $event->timeduration = ($lesson->deadline - $lesson->available); - - if ($event->timeduration > LESSON_MAX_EVENT_LENGTH) { /// Long durations create two events - $event2 = $event; - - $event->name .= ' ('.get_string('lessonopens', 'lesson').')'; - $event->timeduration = 0; - - $event2->timestart = $lesson->deadline; - $event2->eventtype = 'close'; - $event2->timeduration = 0; - $event2->name .= ' ('.get_string('lessoncloses', 'lesson').')'; - - add_event($event2); - } - - add_event($event); - - if (!empty($lesson->deleteattempts)) { - $subject = "Delete User Attempts"; - $message = ""; - - if ($userid = get_field("user", "id", "username", $lesson->deleteattempts)) { - if (delete_records("lesson_attempts", "lessonid", $lesson->id, "userid", $userid)) { - // email good - $message .= "Successfully deleted attempts from \"$lesson->name\" lesson!<br />"; - } else { - // email couldnt delete - $message .= "Failed to delete attempts from \"$lesson->name\" lesson!<br />"; - } - if (delete_records("lesson_grades", "lessonid", $lesson->id, "userid", $userid)) { - // email good - $message .= "Successfully deleted grades from \"$lesson->name\" lesson!<br />"; - } else { - // email couldnt delete - $message .= "Failed to delete grades from \"$lesson->name\" lesson!<br />"; - } - if (delete_records("lesson_timer", "lessonid", $lesson->id, "userid", $userid)) { - // email good - $message .= "Successfully deleted time records from \"$lesson->name\" lesson!<br />"; - } else { - // email couldnt delete - $message .= "Failed to delete time records from \"$lesson->name\" lesson!<br />"; - } - - } else { - // email couldnt find user - $message .= "Could not find user in database.<br />"; - } - $message .= "<br /> User ID used: $lesson->deleteattempts <br />"; - - $txt = format_text_email($message, FORMAT_HTML); - - if ($currentuser = get_record("user", "id", $lesson->deleteattemptsid)) { - email_to_user($currentuser, $currentuser, $subject, $txt, $message); - } - // unset lessondefault - } - unset($lesson->deleteattempts); - unset($lesson->deleteattemptsid); - return update_record("lesson", $lesson); } @@ -240,22 +194,8 @@ function lesson_delete_instance($id) { if (! delete_records("lesson_grades", "lessonid", "$lesson->id")) { $result = false; } - if (! delete_records("lesson_timer", "lessonid", "$lesson->id")) { - $result = false; - } - if (! delete_records("lesson_branch", "lessonid", "$lesson->id")) { - $result = false; - } - if (! delete_records("lesson_high_scores", "lessonid", "$lesson->id")) { - $result = false; - } - if ($events = get_records_select('event', "modulename = 'lesson' and instance = '$lesson->id'")) { - foreach($events as $event) { - delete_event($event->id); - } - } - - return $result; + + return $result; } /*******************************************************************/ @@ -379,9 +319,12 @@ function lesson_grades($lessonid) { global $CFG; if (!$lesson = get_record("lesson", "id", $lessonid)) { + error("Lesson record not found"); + } + if (!$return->maxgrade = $lesson->grade) { return NULL; } - if ($lesson->usemaxgrade) { + if (!empty($lesson->usemaxgrade)) { $grades = get_records_sql_menu("SELECT userid,MAX(grade) FROM {$CFG->prefix}lesson_grades WHERE lessonid = $lessonid GROUP BY userid"); } else { @@ -390,18 +333,13 @@ function lesson_grades($lessonid) { } // convert grades from percentages and tidy the numbers - if (!$lesson->practice) { // dont display practice lessons CDC-FLAG - if ($grades) { - foreach ($grades as $userid => $grade) { - $return->grades[$userid] = number_format($grade * $lesson->grade / 100.0, 1); - } + if ($grades) { + foreach ($grades as $userid => $grade) { + $return->grades[$userid] = number_format($grade * $lesson->grade / 100.0, 1); } - $return->maxgrade = $lesson->grade; - - return $return; - } else { - return NULL; } + + return $return; } /*******************************************************************/ @@ -413,7 +351,7 @@ function lesson_get_participants($lessonid) { global $CFG; //Get students - $students = get_records_sql("SELECT DISTINCT u.id, u.id + $students = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}lesson_attempts a WHERE a.lessonid = '$lessonid' and @@ -422,4 +360,337 @@ function lesson_get_participants($lessonid) { //Return students array (it contains an array of unique users) return ($students); } + +////////////////////////////////////////////////////////////////////////////////////// +/// Any other lesson functions go here. Each of them must have a name that +/// starts with lesson_ + +/*******************************************************************/ +function lesson_iscorrect($pageid, $jumpto) { + // returns true is jumpto page is (logically) after the pageid page, other returns false + + // first test the special values + if (!$jumpto) { + // same page + return false; + } elseif ($jumpto == LESSON_NEXTPAGE) { + return true; + } elseif ($jumpto == LESSON_EOL) { + return true; + } + // we have to run through the pages from pageid looking for jumpid + $apageid = get_field("lesson_pages", "nextpageid", "id", $pageid); + while (true) { + if ($jumpto == $apageid) { + return true; + } + if ($apageid) { + $apageid = get_field("lesson_pages", "nextpageid", "id", $apageid); + } else { + return false; + } + } + return false; // should never be reached +} + + +/*******************************************************************/ +function lesson_save_question_options($question) { +/// Given some question info and some data about the the answers +/// this function parses, organises and saves the question +/// This is only used when IMPORTING questions and is only called +/// from format.php +/// Lifted from mod/quiz/lib.php - +/// 1. all reference to oldanswers removed +/// 2. all reference to quiz_multichoice table removed +/// 3. In SHORTANSWER questions usecase is store in the qoption field +/// 4. In NUMERIC questions store the range as two answers +/// 5. TRUEFALSE options are ignored +/// 6. For MULTICHOICE questions with more than one answer the qoption field is true +/// +/// Returns $result->error or $result->notice + + $timenow = time(); + switch ($question->qtype) { + case LESSON_SHORTANSWER: + + $answers = array(); + $maxfraction = -1; + + // Insert all the new answers + foreach ($question->answer as $key => $dataanswer) { + if ($dataanswer != "") { + unset($answer); + $answer->lessonid = $question->lessonid; + $answer->pageid = $question->id; + if ($question->fraction[$key] >=0.5) { + $answer->jumpto = LESSON_NEXTPAGE; + } + $answer->timecreated = $timenow; + $answer->grade = $question->fraction[$key] * 100; + $answer->answer = $dataanswer; + $answer->feedback = $question->feedback[$key]; + if (!$answer->id = insert_record("lesson_answers", $answer)) { + $result->error = "Could not insert shortanswer quiz answer!"; + return $result; + } + $answers[] = $answer->id; + if ($question->fraction[$key] > $maxfraction) { + $maxfraction = $question->fraction[$key]; + } + } + } + + + /// Perform sanity checks on fractional grades + if ($maxfraction != 1) { + $maxfraction = $maxfraction * 100; + $result->notice = get_string("fractionsnomax", "quiz", $maxfraction); + return $result; + } + break; + + case LESSON_NUMERICAL: // Note similarities to SHORTANSWER + + $answers = array(); + $maxfraction = -1; + + + // for each answer store the pair of min and max values even if they are the same + foreach ($question->answer as $key => $dataanswer) { + if ($dataanswer != "") { + unset($answer); + $answer->lessonid = $question->lessonid; + $answer->pageid = $question->id; + $answer->jumpto = LESSON_NEXTPAGE; + $answer->timecreated = $timenow; + $answer->grade = $question->fraction[$key] * 100; + $answer->answer = $question->min[$key].":".$question->max[$key]; + $answer->response = $question->feedback[$key]; + if (!$answer->id = insert_record("lesson_answers", $answer)) { + $result->error = "Could not insert numerical quiz answer!"; + return $result; + } + + $answers[] = $answer->id; + if ($question->fraction[$key] > $maxfraction) { + $maxfraction = $question->fraction[$key]; + } + } + } + + /// Perform sanity checks on fractional grades + if ($maxfraction != 1) { + $maxfraction = $maxfraction * 100; + $result->notice = get_string("fractionsnomax", "quiz", $maxfraction); + return $result; + } + break; + + + case LESSON_TRUEFALSE: + + // the truth + $answer->lessonid = $question->lessonid; + $answer->pageid = $question->id; + $answer->timecreated = $timenow; + $answer->answer = get_string("true", "quiz"); + $answer->grade = $question->answer * 100; + if ($answer->grade > 50 ) { + $answer->jumpto = LESSON_NEXTPAGE; + } + if (isset($question->feedbacktrue)) { + $answer->response = $question->feedbacktrue; + } + if (!$true->id = insert_record("lesson_answers", $answer)) { + $result->error = "Could not insert quiz answer \"true\")!"; + return $result; + } + + // the lie + unset($answer); + $answer->lessonid = $question->lessonid; + $answer->pageid = $question->id; + $answer->timecreated = $timenow; + $answer->answer = get_string("false", "quiz"); + $answer->grade = (1 - (int)$question->answer) * 100; + if ($answer->grade > 50 ) { + $answer->jumpto = LESSON_NEXTPAGE; + } + if (isset($question->feedbackfalse)) { + $answer->response = $question->feedbackfalse; + } + if (!$false->id = insert_record("lesson_answers", $answer)) { + $result->error = "Could not insert quiz answer \"false\")!"; + return $result; + } + + break; + + + case LESSON_MULTICHOICE: + + $totalfraction = 0; + $maxfraction = -1; + + $answers = array(); + + // Insert all the new answers + foreach ($question->answer as $key => $dataanswer) { + if ($dataanswer != "") { + unset($answer); + $answer->lessonid = $question->lessonid; + $answer->pageid = $question->id; + $answer->timecreated = $timenow; + $answer->grade = $question->fraction[$key] * 100; + if ($answer->grade > 50 ) { + $answer->jumpto = LESSON_NEXTPAGE; + } + $answer->answer = $dataanswer; + $answer->response = $question->feedback[$key]; + if (!$answer->id = insert_record("lesson_answers", $answer)) { + $result->error = "Could not insert multichoice quiz answer! "; + return $result; + } + // for Sanity checks + if ($question->fraction[$key] > 0) { + $totalfraction += $question->fraction[$key]; + } + if ($question->fraction[$key] > $maxfraction) { + $maxfraction = $question->fraction[$key]; + } + } + } + + /// Perform sanity checks on fractional grades + if ($question->single) { + if ($maxfraction != 1) { + $maxfraction = $maxfraction * 100; + $result->notice = get_string("fractionsnomax", "quiz", $maxfraction); + return $result; + } + } else { + $totalfraction = round($totalfraction,2); + if ($totalfraction != 1) { + $totalfraction = $totalfraction * 100; + $result->notice = get_string("fractionsaddwrong", "quiz", $totalfraction); + return $result; + } + } + break; + + case LESSON_MATCHING: + + $subquestions = array(); + + $i = 0; + // Insert all the new question+answer pairs + foreach ($question->subquestions as $key => $questiontext) { + $answertext = $question->subanswers[$key]; + if (!empty($questiontext) and !empty($answertext)) { + unset($answer); + $answer->lessonid = $question->lessonid; + $answer->pageid = $question->id; + $answer->timecreated = $timenow; + $answer->answer = $questiontext; + $answer->response = $answertext; + if ($i == 0) { + // first answer contains the correct answer jump + $answer->jumpto = LESSON_NEXTPAGE; + } + if (!$subquestion->id = insert_record("lesson_answers", $answer)) { + $result->error = "Could not insert quiz match subquestion!"; + return $result; + } + $subquestions[] = $subquestion->id; + $i++; + } + } + + if (count($subquestions) < 3) { + $result->notice = get_string("notenoughsubquestions", "quiz"); + return $result; + } + + break; + + + case LESSON_RANDOMSAMATCH: + $options->question = $question->id; + $options->choose = $question->choose; + if ($existing = get_record("quiz_randomsamatch", "question", $options->question)) { + $options->id = $existing->id; + if (!update_record("quiz_randomsamatch", $options)) { + $result->error = "Could not update quiz randomsamatch options!"; + return $result; + } + } else { + if (!insert_record("quiz_randomsamatch", $options)) { + $result->error = "Could not insert quiz randomsamatch options!"; + return $result; + } + } + break; + + case LESSON_MULTIANSWER: + if (!$oldmultianswers = get_records("quiz_multianswers", "question", $question->id, "id ASC")) { + $oldmultianswers = array(); + } + + // Insert all the new multi answers + foreach ($question->answers as $dataanswer) { + if ($oldmultianswer = array_shift($oldmultianswers)) { // Existing answer, so reuse it + $multianswer = $oldmultianswer; + $multianswer->positionkey = $dataanswer->positionkey; + $multianswer->norm = $dataanswer->norm; + $multianswer->answertype = $dataanswer->answertype; + + if (! $multianswer->answers = quiz_save_multianswer_alternatives + ($question->id, $dataanswer->answertype, + $dataanswer->alternatives, $oldmultianswer->answers)) + { + $result->error = "Could not update multianswer alternatives! (id=$multianswer->id)"; + return $result; + } + if (!update_record("quiz_multianswers", $multianswer)) { + $result->error = "Could not update quiz multianswer! (id=$multianswer->id)"; + return $result; + } + } else { // This is a completely new answer + unset($multianswer); + $multianswer->question = $question->id; + $multianswer->positionkey = $dataanswer->positionkey; + $multianswer->norm = $dataanswer->norm; + $multianswer->answertype = $dataanswer->answertype; + + if (! $multianswer->answers = quiz_save_multianswer_alternatives + ($question->id, $dataanswer->answertype, + $dataanswer->alternatives)) + { + $result->error = "Could not insert multianswer alternatives! (questionid=$question->id)"; + return $result; + } + if (!insert_record("quiz_multianswers", $multianswer)) { + $result->error = "Could not insert quiz multianswer!"; + return $result; + } + } + } + break; + + case LESSON_RANDOM: + break; + + case LESSON_DESCRIPTION: + break; + + default: + $result->error = "Unsupported question type ($question->qtype)!"; + return $result; + break; + } + return true; +} + + ?> diff --git a/mod/lesson/locallib.php b/mod/lesson/locallib.php deleted file mode 100644 index 3cb74e3ada4..00000000000 --- a/mod/lesson/locallib.php +++ /dev/null @@ -1,1153 +0,0 @@ -<?php -/// mnielsen @ CDC -/// locallib.php is the new lib file for lesson module. -/// including locallib.php is the same as including the old lib.php - -if (!defined("LESSON_UNSEENPAGE")) { - define("LESSON_UNSEENPAGE", 1); // Next page -> any page not seen before - } -if (!defined("LESSON_UNANSWEREDPAGE")) { - define("LESSON_UNANSWEREDPAGE", 2); // Next page -> any page not answered correctly - } - -$LESSON_NEXTPAGE_ACTION = array (0 => get_string("normal", "lesson"), - LESSON_UNSEENPAGE => get_string("showanunseenpage", "lesson"), - LESSON_UNANSWEREDPAGE => get_string("showanunansweredpage", "lesson") ); - - -if (!defined("LESSON_NEXTPAGE")) { - define("LESSON_NEXTPAGE", -1); // Next page - } -if (!defined("LESSON_EOL")) { - define("LESSON_EOL", -9); // End of Lesson - } -/// CDC-FLAG 6/14/04 /// -if (!defined("LESSON_UNSEENBRANCHPAGE")) { - define("LESSON_UNSEENBRANCHPAGE", -50); // Unseen branch page - } -if (!defined("LESSON_PREVIOUSPAGE")) { - define("LESSON_PREVIOUSPAGE", -40); // previous page - } -if (!defined("LESSON_RANDOMPAGE")) { - define("LESSON_RANDOMPAGE", -60); // random branch page - } -if (!defined("LESSON_RANDOMBRANCH")) { - define("LESSON_RANDOMBRANCH", -70); // random branch - } -if (!defined("LESSON_CLUSTERJUMP")) { - define("LESSON_CLUSTERJUMP", -80); // random within a cluster - } -/// CDC-FLAG /// -if (!defined("LESSON_UNDEFINED")) { - define("LESSON_UNDEFINED", -99); // undefined - } - -if (!defined("LESSON_SHORTANSWER")) { - define("LESSON_SHORTANSWER", "1"); -} -if (!defined("LESSON_TRUEFALSE")) { - define("LESSON_TRUEFALSE", "2"); -} -if (!defined("LESSON_MULTICHOICE")) { // if you change the value of this (WHICH YOU SHOULDNT) then you need to change it in restorelib.php as well - define("LESSON_MULTICHOICE", "3"); -} -if (!defined("LESSON_RANDOM")) { - define("LESSON_RANDOM", "4"); -} -if (!defined("LESSON_MATCHING")) { // if you change the value of this (WHICH YOU SHOULDNT) then you need to change it in restorelib.php as well - define("LESSON_MATCHING", "5"); -} -if (!defined("LESSON_RANDOMSAMATCH")) { - define("LESSON_RANDOMSAMATCH", "6"); -} -if (!defined("LESSON_DESCRIPTION")) { - define("LESSON_DESCRIPTION", "7"); -} -if (!defined("LESSON_NUMERICAL")) { - define("LESSON_NUMERICAL", "8"); -} -if (!defined("LESSON_MULTIANSWER")) { - define("LESSON_MULTIANSWER", "9"); -} -/// CDC-FLAG /// 6/16/04 -if (!defined("LESSON_ESSAY")) { - define("LESSON_ESSAY", "10"); -} -if (!defined("LESSON_CLUSTER")) { - define("LESSON_CLUSTER", "30"); -} -if (!defined("LESSON_ENDOFCLUSTER")) { - define("LESSON_ENDOFCLUSTER", "31"); -} -/// CDC-FLAG /// - -$LESSON_QUESTION_TYPE = array ( LESSON_MULTICHOICE => get_string("multichoice", "quiz"), - LESSON_TRUEFALSE => get_string("truefalse", "quiz"), - LESSON_SHORTANSWER => get_string("shortanswer", "quiz"), - LESSON_NUMERICAL => get_string("numerical", "quiz"), - LESSON_MATCHING => get_string("match", "quiz"), - LESSON_ESSAY => get_string("essay", "lesson") /// CDC-FLAG 6/16/04 -// LESSON_DESCRIPTION => get_string("description", "quiz"), -// LESSON_RANDOM => get_string("random", "quiz"), -// LESSON_RANDOMSAMATCH => get_string("randomsamatch", "quiz"), -// LESSON_MULTIANSWER => get_string("multianswer", "quiz"), - ); - -if (!defined("LESSON_BRANCHTABLE")) { - define("LESSON_BRANCHTABLE", "20"); -} -if (!defined("LESSON_ENDOFBRANCH")) { - define("LESSON_ENDOFBRANCH", "21"); -} - -if (!defined("LESSON_ANSWER_EDITOR")) { - define("LESSON_ANSWER_EDITOR", "1"); -} -if (!defined("LESSON_RESPONSE_EDITOR")) { - define("LESSON_RESPONSE_EDITOR", "2"); -} - -////////////////////////////////////////////////////////////////////////////////////// -/// Any other lesson functions go here. Each of them must have a name that -/// starts with lesson_ - -/*******************************************************************/ -function lesson_save_question_options($question) { -/// Given some question info and some data about the the answers -/// this function parses, organises and saves the question -/// This is only used when IMPORTING questions and is only called -/// from format.php -/// Lifted from mod/quiz/lib.php - -/// 1. all reference to oldanswers removed -/// 2. all reference to quiz_multichoice table removed -/// 3. In SHORTANSWER questions usecase is store in the qoption field -/// 4. In NUMERIC questions store the range as two answers -/// 5. TRUEFALSE options are ignored -/// 6. For MULTICHOICE questions with more than one answer the qoption field is true -/// -/// Returns $result->error or $result->notice - - $timenow = time(); - switch ($question->qtype) { - case LESSON_SHORTANSWER: - - $answers = array(); - $maxfraction = -1; - - // Insert all the new answers - foreach ($question->answer as $key => $dataanswer) { - if ($dataanswer != "") { - $answer = new stdClass; - $answer->lessonid = $question->lessonid; - $answer->pageid = $question->id; - if ($question->fraction[$key] >=0.5) { - $answer->jumpto = LESSON_NEXTPAGE; - } - $answer->timecreated = $timenow; - $answer->grade = $question->fraction[$key] * 100; - $answer->answer = $dataanswer; - $answer->feedback = $question->feedback[$key]; - if (!$answer->id = insert_record("lesson_answers", $answer)) { - $result->error = "Could not insert shortanswer quiz answer!"; - return $result; - } - $answers[] = $answer->id; - if ($question->fraction[$key] > $maxfraction) { - $maxfraction = $question->fraction[$key]; - } - } - } - - - /// Perform sanity checks on fractional grades - if ($maxfraction != 1) { - $maxfraction = $maxfraction * 100; - $result->notice = get_string("fractionsnomax", "quiz", $maxfraction); - return $result; - } - break; - - case LESSON_NUMERICAL: // Note similarities to SHORTANSWER - - $answers = array(); - $maxfraction = -1; - - - // for each answer store the pair of min and max values even if they are the same - foreach ($question->answer as $key => $dataanswer) { - if ($dataanswer != "") { - $answer = new stdClass; - $answer->lessonid = $question->lessonid; - $answer->pageid = $question->id; - $answer->jumpto = LESSON_NEXTPAGE; - $answer->timecreated = $timenow; - $answer->grade = $question->fraction[$key] * 100; - $answer->answer = $question->min[$key].":".$question->max[$key]; - $answer->response = $question->feedback[$key]; - if (!$answer->id = insert_record("lesson_answers", $answer)) { - $result->error = "Could not insert numerical quiz answer!"; - return $result; - } - - $answers[] = $answer->id; - if ($question->fraction[$key] > $maxfraction) { - $maxfraction = $question->fraction[$key]; - } - } - } - - /// Perform sanity checks on fractional grades - if ($maxfraction != 1) { - $maxfraction = $maxfraction * 100; - $result->notice = get_string("fractionsnomax", "quiz", $maxfraction); - return $result; - } - break; - - - case LESSON_TRUEFALSE: - - // the truth - $answer->lessonid = $question->lessonid; - $answer->pageid = $question->id; - $answer->timecreated = $timenow; - $answer->answer = get_string("true", "quiz"); - $answer->grade = $question->answer * 100; - if ($answer->grade > 50 ) { - $answer->jumpto = LESSON_NEXTPAGE; - } - if (isset($question->feedbacktrue)) { - $answer->response = $question->feedbacktrue; - } - if (!$true->id = insert_record("lesson_answers", $answer)) { - $result->error = "Could not insert quiz answer \"true\")!"; - return $result; - } - - // the lie - $answer = new stdClass; - $answer->lessonid = $question->lessonid; - $answer->pageid = $question->id; - $answer->timecreated = $timenow; - $answer->answer = get_string("false", "quiz"); - $answer->grade = (1 - (int)$question->answer) * 100; - if ($answer->grade > 50 ) { - $answer->jumpto = LESSON_NEXTPAGE; - } - if (isset($question->feedbackfalse)) { - $answer->response = $question->feedbackfalse; - } - if (!$false->id = insert_record("lesson_answers", $answer)) { - $result->error = "Could not insert quiz answer \"false\")!"; - return $result; - } - - break; - - - case LESSON_MULTICHOICE: - - $totalfraction = 0; - $maxfraction = -1; - - $answers = array(); - - // Insert all the new answers - foreach ($question->answer as $key => $dataanswer) { - if ($dataanswer != "") { - $answer = new stdClass; - $answer->lessonid = $question->lessonid; - $answer->pageid = $question->id; - $answer->timecreated = $timenow; - $answer->grade = $question->fraction[$key] * 100; - /// CDC-FLAG changed some defaults - /* Original Code - if ($answer->grade > 50 ) { - $answer->jumpto = LESSON_NEXTPAGE; - } - Replaced with: */ - if ($answer->grade > 50 ) { - $answer->jumpto = LESSON_NEXTPAGE; - $answer->score = 1; - } - // end Replace - $answer->answer = $dataanswer; - $answer->response = $question->feedback[$key]; - if (!$answer->id = insert_record("lesson_answers", $answer)) { - $result->error = "Could not insert multichoice quiz answer! "; - return $result; - } - // for Sanity checks - if ($question->fraction[$key] > 0) { - $totalfraction += $question->fraction[$key]; - } - if ($question->fraction[$key] > $maxfraction) { - $maxfraction = $question->fraction[$key]; - } - } - } - - /// Perform sanity checks on fractional grades - if ($question->single) { - if ($maxfraction != 1) { - $maxfraction = $maxfraction * 100; - $result->notice = get_string("fractionsnomax", "quiz", $maxfraction); - return $result; - } - } else { - $totalfraction = round($totalfraction,2); - if ($totalfraction != 1) { - $totalfraction = $totalfraction * 100; - $result->notice = get_string("fractionsaddwrong", "quiz", $totalfraction); - return $result; - } - } - break; - - case LESSON_MATCHING: - - $subquestions = array(); - - $i = 0; - // Insert all the new question+answer pairs - foreach ($question->subquestions as $key => $questiontext) { - $answertext = $question->subanswers[$key]; echo $answertext; echo "<br>"; exit; - if (!empty($questiontext) and !empty($answertext)) { - $answer = new stdClass; - $answer->lessonid = $question->lessonid; - $answer->pageid = $question->id; - $answer->timecreated = $timenow; - $answer->answer = $questiontext; - $answer->response = $answertext; - if ($i == 0) { - // first answer contains the correct answer jump - $answer->jumpto = LESSON_NEXTPAGE; - } - if (!$subquestion->id = insert_record("lesson_answers", $answer)) { - $result->error = "Could not insert quiz match subquestion!"; - return $result; - } - $subquestions[] = $subquestion->id; - $i++; - } - } - - if (count($subquestions) < 3) { - $result->notice = get_string("notenoughsubquestions", "quiz"); - return $result; - } - - break; - - - case LESSON_RANDOMSAMATCH: - $options->question = $question->id; - $options->choose = $question->choose; - if ($existing = get_record("quiz_randomsamatch", "question", $options->question)) { - $options->id = $existing->id; - if (!update_record("quiz_randomsamatch", $options)) { - $result->error = "Could not update quiz randomsamatch options!"; - return $result; - } - } else { - if (!insert_record("quiz_randomsamatch", $options)) { - $result->error = "Could not insert quiz randomsamatch options!"; - return $result; - } - } - break; - - case LESSON_MULTIANSWER: - if (!$oldmultianswers = get_records("quiz_multianswers", "question", $question->id, "id ASC")) { - $oldmultianswers = array(); - } - - // Insert all the new multi answers - foreach ($question->answers as $dataanswer) { - if ($oldmultianswer = array_shift($oldmultianswers)) { // Existing answer, so reuse it - $multianswer = $oldmultianswer; - $multianswer->positionkey = $dataanswer->positionkey; - $multianswer->norm = $dataanswer->norm; - $multianswer->answertype = $dataanswer->answertype; - - if (! $multianswer->answers = quiz_save_multianswer_alternatives - ($question->id, $dataanswer->answertype, - $dataanswer->alternatives, $oldmultianswer->answers)) - { - $result->error = "Could not update multianswer alternatives! (id=$multianswer->id)"; - return $result; - } - if (!update_record("quiz_multianswers", $multianswer)) { - $result->error = "Could not update quiz multianswer! (id=$multianswer->id)"; - return $result; - } - } else { // This is a completely new answer - $multianswer = new stdClass; - $multianswer->question = $question->id; - $multianswer->positionkey = $dataanswer->positionkey; - $multianswer->norm = $dataanswer->norm; - $multianswer->answertype = $dataanswer->answertype; - - if (! $multianswer->answers = quiz_save_multianswer_alternatives - ($question->id, $dataanswer->answertype, - $dataanswer->alternatives)) - { - $result->error = "Could not insert multianswer alternatives! (questionid=$question->id)"; - return $result; - } - if (!insert_record("quiz_multianswers", $multianswer)) { - $result->error = "Could not insert quiz multianswer!"; - return $result; - } - } - } - break; - - case LESSON_RANDOM: - break; - - case LESSON_DESCRIPTION: - break; - - default: - $result->error = "Unsupported question type ($question->qtype)!"; - return $result; - break; - } - return true; -} -/*******************************************************************/ -function lesson_choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="", $nothingvalue="0", $return=false) { -/// Given an array of value, creates a popup menu to be part of a form -/// $options["value"]["label"] - - if ($nothing == "choose") { - $nothing = get_string("choose")."..."; - } - - if ($script) { - $javascript = "onChange=\"$script\""; - } else { - $javascript = ""; - } - - $output = "<label for=$name class=hidden-label>$name</label><SELECT id=$name NAME=$name $javascript>\n"; //CDC hidden label added. - if ($nothing) { - $output .= " <OPTION VALUE=\"$nothingvalue\"\n"; - if ($nothingvalue == $selected) { - $output .= " SELECTED"; - } - $output .= ">$nothing</OPTION>\n"; - } - if (!empty($options)) { - foreach ($options as $value => $label) { - $output .= " <OPTION VALUE=\"$value\""; - if ($value == $selected) { - $output .= " SELECTED"; - } - // stop zero label being replaced by array index value - // if ($label) { - // $output .= ">$label</OPTION>\n"; - // } else { - // $output .= ">$value</OPTION>\n"; - // } - $output .= ">$label</OPTION>\n"; - - } - } - $output .= "</SELECT>\n"; - - if ($return) { - return $output; - } else { - echo $output; - } -} - -/*******************************************************************/ -function lesson_iscorrect($pageid, $jumpto) { - // returns true is jumpto page is (logically) after the pageid page, other returns false - - // first test the special values - if (!$jumpto) { - // same page - return false; - } elseif ($jumpto == LESSON_NEXTPAGE) { - return true; - /// CDC-FLAG 6/21/04 /// - } elseif ($jumpto == LESSON_UNSEENBRANCHPAGE) { - return true; - } elseif ($jumpto == LESSON_RANDOMPAGE) { - return true; - } elseif ($jumpto == LESSON_CLUSTERJUMP) { - return true; - /// CDC-FLAG /// - } elseif ($jumpto == LESSON_EOL) { - return true; - } - // we have to run through the pages from pageid looking for jumpid - $apageid = get_field("lesson_pages", "nextpageid", "id", $pageid); - while (true) { - if ($jumpto == $apageid) { - return true; - } - if ($apageid) { - $apageid = get_field("lesson_pages", "nextpageid", "id", $apageid); - } else { - return false; - } - } - return false; // should never be reached -} - -/// CDC-FLAG /// -/*******************************************************************/ -function lesson_display_branch_jumps($lesson_id, $pageid) { -// this fucntion checks to see if a page is a branch or is -// a page that is enclosed by a branch table and an endofbranch/eol - - // NoticeFix ... this may cause problems... not sure - if($pageid == 0) { - // first page - return false; - } - // get all of the lesson pages - if (!$lessonpages = get_records_select("lesson_pages", "lessonid = $lesson_id")) { - // adding first page - return false; - } - - if ($lessonpages[$pageid]->qtype == LESSON_BRANCHTABLE) { - return true; - } - - return lesson_is_page_in_branch($lessonpages, $pageid); -} - -/*******************************************************************/ -function lesson_display_cluster_jump($lesson_id, $pageid) { -// this fucntion checks to see if a page is a cluster page or is -// a page that is enclosed by a cluster page and an endofcluster/eol - - // NoticeFix ... this may cause problems... not sure - if($pageid == 0) { - // first page - return false; - } - // get all of the lesson pages - if (!$lessonpages = get_records_select("lesson_pages", "lessonid = $lesson_id")) { - // adding first page - return false; - } - - if ($lessonpages[$pageid]->qtype == LESSON_CLUSTER) { - return true; - } - - return lesson_is_page_in_cluster($lessonpages, $pageid); - -} - -// 6/21/04 -/*******************************************************************/ -function execute_teacherwarning($lesson) { -// this function checks to see if a LESSON_CLUSTERJUMP or -// a LESSON_UNSEENBRANCHPAGE is used in a lesson. -// This function is only executed when a teacher is -// checking the navigation for a lesson. - - // get all of the lesson answers - if (!$lessonanswers = get_records_select("lesson_answers", "lessonid = $lesson")) { - // no answers, then not useing cluster or unseen - return false; - } - // just check for the first one that fulfills the requirements - foreach ($lessonanswers as $lessonanswer) { - if ($lessonanswer->jumpto == LESSON_CLUSTERJUMP || $lessonanswer->jumpto == LESSON_UNSEENBRANCHPAGE) { - return true; - } - } - - // if no answers use either of the two jumps - return false; -} - - -// 6/18/04 -/*******************************************************************/ -function lesson_cluster_jump($lesson, $user, $pageid) { -// this fucntion interprets LESSON_CLUSTERJUMP -// it will select a page randomly -// and the page selected will be inbetween a cluster page and endofcluter/eol -// and the page selected will be a page that has not been viewed already -// and if any pages are within a branchtable/endofbranch then only 1 page within -// the branchtable/endofbranch will be randomly selected (sub clustering) - - // get the number of retakes - if (!$retakes = count_records("lesson_grades", "lessonid", $lesson, "userid", $user)) { - $retakes = 0; - } - - // get all the lesson_attempts aka what the user has seen - if ($seen = get_records_select("lesson_attempts", "lessonid = $lesson AND userid = $user AND retry = $retakes", "timeseen DESC")) { - foreach ($seen as $value) { // load it into an array that I can more easily use - $seenpages[$value->pageid] = $value->pageid; - } - } else { - $seenpages = array(); - } - - // get the lesson pages - if (!$lessonpages = get_records_select("lesson_pages", "lessonid = $lesson")) { - error("Error: could not find records in lesson_pages table"); - } - // find the start of the cluster - while ($pageid != 0) { // this condition should not be satisfied... should be a cluster page - if ($lessonpages[$pageid]->qtype == LESSON_CLUSTER) { - break; - } - $pageid = $lessonpages[$pageid]->prevpageid; - } - - $pageid = $lessonpages[$pageid]->nextpageid; // move down from the cluster page - - $clusterpages = array(); - while (true) { // now load all the pages into the cluster that are not already inside of a branch table. - if ($lessonpages[$pageid]->qtype == LESSON_ENDOFCLUSTER) { - // store the endofcluster page's jump - $exitjump = get_field("lesson_answers", "jumpto", "pageid", $pageid, "lessonid", $lesson); - if ($exitjump == LESSON_NEXTPAGE) { - $exitjump = $lessonpages[$pageid]->nextpageid; - } - if ($exitjump == 0) { - $exitjump = LESSON_EOL; - } - break; - } elseif (!lesson_is_page_in_branch($lessonpages, $pageid) && $lessonpages[$pageid]->qtype != LESSON_ENDOFBRANCH) { - // load page into array when it is not in a branch table and when it is not an endofbranch - $clusterpages[] = $lessonpages[$pageid]; - } - if ($lessonpages[$pageid]->nextpageid == 0) { - // shouldn't ever get here... should be using endofcluster - $exitjump = LESSON_EOL; - break; - } else { - $pageid = $lessonpages[$pageid]->nextpageid; - } - } - - // filter out the ones we have seen - $unseen = array(); - foreach ($clusterpages as $clusterpage) { - if ($clusterpage->qtype == LESSON_BRANCHTABLE) { // if branchtable, check to see if any pages inside have been viewed - $branchpages = lesson_pages_in_branch($lessonpages, $clusterpage->id); // get the pages in the branchtable - $flag = true; - foreach ($branchpages as $branchpage) { - if (array_key_exists($branchpage->id, $seenpages)) { // check if any of the pages have been viewed - $flag = false; - } - } - if ($flag && count($branchpages) > 0) { - // add branch table - $unseen[] = $clusterpage; - } - } else { - // add any other type of page that has not already been viewed - if (!array_key_exists($clusterpage->id, $seenpages)) { - $unseen[] = $clusterpage; - } - } - } - - if (count($unseen) > 0) { // it does not contain elements, then use exitjump, otherwise find out next page/branch - $nextpage = $unseen[rand(0, count($unseen)-1)]; - } else { - return $exitjump; // seen all there is to see, leave the cluster - } - - if ($nextpage->qtype == LESSON_BRANCHTABLE) { // if branch table, then pick a random page inside of it - $branchpages = lesson_pages_in_branch($lessonpages, $nextpage->id); - return $branchpages[rand(0, count($branchpages)-1)]->id; - } else { // otherwise, return the page's id - return $nextpage->id; - } -} - -/*******************************************************************/ -function lesson_pages_in_branch($lessonpages, $branchid) { -// returns pages that are within a branch - - $pageid = $lessonpages[$branchid]->nextpageid; // move to the first page after the branch table - $pagesinbranch = array(); - - while (true) { - if ($pageid == 0) { // EOL - break; - } elseif ($lessonpages[$pageid]->qtype == LESSON_BRANCHTABLE) { - break; - } elseif ($lessonpages[$pageid]->qtype == LESSON_ENDOFBRANCH) { - break; - } - $pagesinbranch[] = $lessonpages[$pageid]; - $pageid = $lessonpages[$pageid]->nextpageid; - } - - return $pagesinbranch; -} - -/*******************************************************************/ -function lesson_unseen_question_jump($lesson, $user, $pageid) { -// This function interprets the LESSON_UNSEENBRANCHPAGE jump. -// will return the pageid of a random unseen page that is within a branch - - // get the number of retakes - if (!$retakes = count_records("lesson_grades", "lessonid", $lesson, "userid", $user)) { - $retakes = 0; - } - - // get all the lesson_attempts aka what the user has seen - if ($viewedpages = get_records_select("lesson_attempts", "lessonid = $lesson AND userid = $user AND retry = $retakes", "timeseen DESC")) { - foreach($viewedpages as $viewed) { - $seenpages[] = $viewed->pageid; - } - } else { - $seenpages = array(); - } - - // get the lesson pages - if (!$lessonpages = get_records_select("lesson_pages", "lessonid = $lesson")) { - error("Error: could not find records in lesson_pages table"); - } - - if ($pageid == LESSON_UNSEENBRANCHPAGE) { // this only happens when a student leaves in the middle of an unseen question within a branch series - $pageid = $seenpages[0]; // just change the pageid to the last page viewed inside the branch table - } - - // go up the pages till branch table - while ($pageid != 0) { // this condition should never be satisfied... only happens if there are no branch tables above this page - if ($lessonpages[$pageid]->qtype == LESSON_BRANCHTABLE) { - break; - } - $pageid = $lessonpages[$pageid]->prevpageid; - } - - $pagesinbranch = lesson_pages_in_branch($lessonpages, $pageid); - - // this foreach loop stores all the pages that are within the branch table but are not in the $seenpages array - $unseen = array(); - foreach($pagesinbranch as $page) { - if (!in_array($page->id, $seenpages)) { - $unseen[] = $page->id; - } - } - - if(count($unseen) == 0) { - if(isset($pagesinbranch)) { - $temp = end($pagesinbranch); - $nextpage = $temp->nextpageid; // they have seen all the pages in the branch, so go to EOB/next branch table/EOL - } else { - // there are no pages inside the branch, so return the next page - $nextpage = $lessonpages[$pageid]->nextpageid; - } - if ($nextpage == 0) { - return LESSON_EOL; - } else { - return $nextpage; - } - } else { - return $unseen[rand(0, count($unseen)-1)]; // returns a random page id for the next page - } -} - -// 6/15/04 -/*******************************************************************/ -function lesson_unseen_branch_jump($lesson, $user) { -// This will return a random unseen branch table - - if (!$retakes = count_records("lesson_grades", "lessonid", $lesson, "userid", $user)) { - $retakes = 0; - } - - if (!$seenbranches = get_records_select("lesson_branch", "lessonid = $lesson AND userid = $user AND retry = $retakes", - "timeseen DESC")) { - error("Error: could not find records in lesson_branch table"); - } - - // get the lesson pages - if (!$lessonpages = get_records_select("lesson_pages", "lessonid = $lesson")) { - error("Error: could not find records in lesson_pages table"); - } - - // this loads all the viewed branch tables into $seen untill it finds the branch table with the flag - // which is the branch table that starts the unseenbranch function - $seen = array(); - foreach ($seenbranches as $seenbranch) { - if (!$seenbranch->flag) { - $seen[$seenbranch->pageid] = $seenbranch->pageid; - } else { - $start = $seenbranch->pageid; - break; - } - } - // this function searches through the lesson pages to find all the branch tables - // that follow the flagged branch table - $pageid = $lessonpages[$start]->nextpageid; // move down from the flagged branch table - while ($pageid != 0) { // grab all of the branch table till eol - if ($lessonpages[$pageid]->qtype == LESSON_BRANCHTABLE) { - $branchtables[] = $lessonpages[$pageid]->id; - } - $pageid = $lessonpages[$pageid]->nextpageid; - } - $unseen = array(); - foreach ($branchtables as $branchtable) { - // load all of the unseen branch tables into unseen - if (!array_key_exists($branchtable, $seen)) { - $unseen[] = $branchtable; - } - } - if (count($unseen) > 0) { - return $unseen[rand(0, count($unseen)-1)]; // returns a random page id for the next page - } else { - return LESSON_EOL; // has viewed all of the branch tables - } -} - -/*******************************************************************/ -function lesson_random_question_jump($lesson, $pageid) { -// This function will return the pageid of a random page -// that is within a branch table - - // get the lesson pages - if (!$lessonpages = get_records_select("lesson_pages", "lessonid = $lesson")) { - error("Error: could not find records in lesson_pages table"); - } - - // go up the pages till branch table - while ($pageid != 0) { // this condition should never be satisfied... only happens if there are no branch tables above this page - - if ($lessonpages[$pageid]->qtype == LESSON_BRANCHTABLE) { - break; - } - $pageid = $lessonpages[$pageid]->prevpageid; - } - - // get the pages within the branch - $pagesinbranch = lesson_pages_in_branch($lessonpages, $pageid); - - if(count($pagesinbranch) == 0) { - // there are no pages inside the branch, so return the next page - return $lessonpages[$pageid]->nextpageid; - } else { - return $pagesinbranch[rand(0, count($pagesinbranch)-1)]->id; // returns a random page id for the next page - } -} - -// 6/15/04 -/*******************************************************************/ -function lesson_is_page_in_branch($pages, $pageid) { -// This function's purpose is to check if a page is within a branch or not - - $pageid = $pages[$pageid]->prevpageid; // move up one - - // go up the pages till branch table - while (true) { - if ($pageid == 0) { // ran into the beginning of the lesson - return false; - } elseif ($pages[$pageid]->qtype == LESSON_ENDOFBRANCH) { // ran into the end of another branch table - return false; - } elseif ($pages[$pageid]->qtype == LESSON_CLUSTER) { // do not look beyond a cluster - return false; - } elseif ($pages[$pageid]->qtype == LESSON_BRANCHTABLE) { // hit a branch table - return true; - } - $pageid = $pages[$pageid]->prevpageid; - } - -} - -/*******************************************************************/ -function lesson_is_page_in_cluster($pages, $pageid) { -// This function checks to see if a page is within a cluster or not - - $pageid = $pages[$pageid]->prevpageid; // move up one - - // go up the pages till branch table - while (true) { - if ($pageid == 0) { // ran into the beginning of the lesson - return false; - } elseif ($pages[$pageid]->qtype == LESSON_ENDOFCLUSTER) { // ran into the end of another branch table - return false; - } elseif ($pages[$pageid]->qtype == LESSON_CLUSTER) { // hit a branch table - return true; - } - $pageid = $pages[$pageid]->prevpageid; - } -} - -/*******************************************************************/ -function lesson_print_tree_menu($lessonid, $pageid, $id, $showpages=false) { -// prints the contents of the left menu - - if(!$pages = get_records_select("lesson_pages", "lessonid = $lessonid")) { - error("Error: could not find lesson pages"); - } - while ($pageid != 0) { - lesson_print_tree_link_menu($pages[$pageid], $id, true); - $pageid = $pages[$pageid]->nextpageid; - } -} - -/*******************************************************************/ -function lesson_print_tree_link_menu($page, $id, $showpages=false) { -// prints the actual link for the left menu - - if ($page->qtype == LESSON_BRANCHTABLE && !$page->display) { - return false; - } elseif ($page->qtype != LESSON_BRANCHTABLE) { - return false; - } - - /*elseif ($page->qtype != LESSON_BRANCHTABLE && !$showpages) { - return false; - } elseif (!in_array($page->qtype, $LESSON_QUESTION_TYPE)) { - return false; - }*/ - - // set up some variables NoticeFix changed whole function - $output = ""; - $close = false; - $link="id=$id&amp;action=navigation&amp;pageid=".$page->id; - - $output = "<li>"; - - if (isset($_REQUEST['pageid'])) { - if($page->id == $_REQUEST['pageid']) { - $close=true; - $output.="<em>"; - } - } - - $output .= "<a href=\"view.php?id=$id&amp;action=navigation&amp;pageid=$page->id\">".$page->title."</a>\n"; - - if($close) { - $output.="</em>"; - } - $output .= "</li>"; - - - echo $output; - -} - -/*******************************************************************/ -function lesson_print_tree($pageid, $lessonid, $cmid, $pixpath) { -// this function prints out the tree view list - global $USER; - - if(!$pages = get_records_select("lesson_pages", "lessonid = $lessonid")) { - error("Error: could not find lesson pages"); - } - echo "<table>"; - while ($pageid != 0) { - echo "<tr><td>"; - if(($pages[$pageid]->qtype != LESSON_BRANCHTABLE) && ($pages[$pageid]->qtype != LESSON_ENDOFBRANCH)) { - $output = "<a style='color:#DF041E;' href=\"view.php?id=$cmid&display=".$pages[$pageid]->id."\">".$pages[$pageid]->title."</a>\n"; - } else { - $output = "<a href=\"view.php?id=$cmid&display=".$pages[$pageid]->id."\">".$pages[$pageid]->title."</a>\n"; - - if($answers = get_records_select("lesson_answers", "lessonid = $lessonid and pageid = $pageid")) { - $output .= "Jumps to: "; - $end = end($answers); - foreach ($answers as $answer) { - if ($answer->jumpto == 0) { - $output .= get_string("thispage", "lesson"); - } elseif ($answer->jumpto == LESSON_NEXTPAGE) { - $output .= get_string("nextpage", "lesson"); - } elseif ($answer->jumpto == LESSON_EOL) { - $output .= get_string("endoflesson", "lesson"); - } elseif ($answer->jumpto == LESSON_UNSEENBRANCHPAGE) { - $output .= get_string("unseenpageinbranch", "lesson"); - } elseif ($answer->jumpto == LESSON_PREVIOUSPAGE) { - $output .= get_string("previouspage", "lesson"); - } elseif ($answer->jumpto == LESSON_RANDOMPAGE) { - $output .= get_string("randompageinbranch", "lesson"); - } elseif ($answer->jumpto == LESSON_RANDOMBRANCH) { - $output .= get_string("randombranch", "lesson"); - } elseif ($answer->jumpto == LESSON_CLUSTERJUMP) { - $output .= get_string("clusterjump", "lesson"); - } else { - $output .= $pages[$answer->jumpto]->title; - } - if ($answer->id != $end->id) { - $output .= ", "; - } - } - } - } - - echo $output; - if (count($pages) > 1) { - echo "<a title=\"move\" href=\"lesson.php?id=$cmid&action=move&pageid=".$pages[$pageid]->id."\">\n". - "<img src=\"$pixpath/t/move.gif\" hspace=\"2\" height=11 width=11 alt=\"move\" border=0></a>\n"; //CDC alt text added. - } - echo "<a title=\"update\" href=\"lesson.php?id=$cmid&amp;action=editpage&amp;pageid=".$pages[$pageid]->id."\">\n". - "<img src=\"$pixpath/t/edit.gif\" hspace=\"2\" height=11 width=11 alt=\"edit\" border=0></a>\n". - "<a title=\"delete\" href=\"lesson.php?id=$cmid&amp;sesskey=".$USER->sesskey."&amp;action=confirmdelete&amp;pageid=".$pages[$pageid]->id."\">\n". - "<img src=\"$pixpath/t/delete.gif\" hspace=\"2\" height=11 width=11 alt=\"delete\" border=0></a>\n"; //CDC alt text added. - - echo "</tr></td>"; - $pageid = $pages[$pageid]->nextpageid; - } - echo "</table>"; -} - -/*******************************************************************/ -function lesson_calculate_ongoing_score($lesson, $userid, $retries, $return=false) { -// this calculates and prints the ongoing score for students - if (!$lesson->custom) { - $ncorrect = 0; - $temp = array(); - if ($pagesanswered = get_records_select("lesson_attempts", "lessonid = $lesson->id AND - userid = $userid AND retry = $retries order by timeseen")) { - - foreach ($pagesanswered as $pageanswered) { - if (!array_key_exists($pageanswered->pageid, $temp)) { - $temp[$pageanswered->pageid] = array($pageanswered->correct, 1); - } else { - if ($temp[$pageanswered->pageid][1] < $lesson->maxattempts) { - $n = $temp[$pageanswered->pageid][1] + 1; - $temp[$pageanswered->pageid] = array($pageanswered->correct, $n); - } - } - } - foreach ($temp as $value => $key) { - if ($key[0] == 1) { - $ncorrect += 1; - } - } - } - $nviewed = count($temp); // this counts number of Questions the user viewed - if ($nviewed != 0) { - $thegrade = intval(100 * $ncorrect / $nviewed); - } else { - $thegrade = 0; - } - - - if ($return) { - return $thegrade; - } else { - $output = new stdClass; - $output->correct = $ncorrect; - $output->viewed = $nviewed; - print_simple_box(get_string("ongoingnormal", "lesson", $output), "center"); - } - - } else { - $score = 0; - $essayquestions = 0; - $essayquestionpoints = 0; - $bestscore = 0; - $thegrade = 0; - - if ($useranswers = get_records_select("lesson_attempts", "lessonid = $lesson->id AND - userid = $userid AND retry = $retries", "timeseen")) { - // group each try with its page - foreach ($useranswers as $useranswer) { - $attemptset[$useranswer->pageid][] = $useranswer; - } - - $pageids = array_keys($attemptset); - $pageids = implode(",", $pageids); - - // get only the pages and their answers that the user answered - $answeredpages = get_records_select("lesson_pages", "lessonid = $lesson->id AND id IN($pageids)"); - $pageanswers = get_records_select("lesson_answers", "lessonid = $lesson->id AND pageid IN($pageids)"); - - foreach ($attemptset as $attempts) { - if(count($attempts) > $lesson->maxattempts) { // if there are more tries than the max that is allowed, grab the last "legal" attempt - $attempt = $attempts[$lesson->maxattempts - 1]; - } else { - // else, user attempted the question less than the max, so grab the last one - $attempt = end($attempts); - } - // if essay question, handle it, otherwise add to score - if ($answeredpages[$attempt->pageid]->qtype == LESSON_ESSAY) { - $essayinfo = unserialize($attempt->useranswer); - $score += $essayinfo->score; - $essayquestions++; - $essayquestionpoints += $pageanswers[$attempt->answerid]->score; - } else { - $score += $pageanswers[$attempt->answerid]->score; - } - } - $bestscores = array(); - // find the highest possible score per page - foreach ($pageanswers as $pageanswer) { - if(isset($bestscores[$pageanswer->pageid])) { - if ($bestscores[$pageanswer->pageid] < $pageanswer->score) { - $bestscores[$pageanswer->pageid] = $pageanswer->score; - } - } else { - $bestscores[$pageanswer->pageid] = $pageanswer->score; - } - } - - $bestscore = array_sum($bestscores); - $thegrade = intval(100 * $score / $bestscore); - } - - - if ($return) { - return $thegrade; - } else { - // not taking into account essay questions... may want to? - $ongoingoutput = new stdClass; - $ongoingoutput->score = $score; - $ongoingoutput->currenthigh = $bestscore; - print_simple_box(get_string("ongoingcustom", "lesson", $ongoingoutput), "center"); - } - } -} - -/*******************************************************************/ -function lesson_qtype_menu($qtypes, $selected="", $link="", $onclick="") { -// prints the question types for when editing and adding a page - - $output = ""; - foreach ($qtypes as $value => $label) { - if ($value == $selected) { - $output .= "<b>$label</b>"; - $output .= "<input type=\"hidden\" name=\"qtype\" value=\"$value\" /> \n"; - } else { - $output .= "<a onClick=\"$onclick\" href=\"$link"."&qtype=$value\">$label</a>"; - } - if ($label != end($qtypes)) { - $output .= " | "; - } - } - echo $output; -} - -/*******************************************************************/ -function lesson_check_nickname($name) { -// used to check high score nicknames. -// checks nickname against a list of "bad words" - - if (empty($name)) { - return false; - } - - $filterwords = explode(',', get_string('censorbadwords')); - - foreach ($filterwords as $filterword) { - if (strstr($name, $filterword)) { - return false; - } - } - return true; -} - -/// CDC-FLAG /// - -?> diff --git a/mod/lesson/mod.html b/mod/lesson/mod.html index 25d301cf1c0..92d58bcc564 100644 --- a/mod/lesson/mod.html +++ b/mod/lesson/mod.html @@ -1,16 +1,9 @@ <!-- define a new instance of lesson --> <!-- It is used from /course/mod.php. The whole instance is available as $form. --> <?php -require("$CFG->dirroot/mod/lesson/locallib.php"); // for parameter array -if ($form->mode == "add") { - if ($defaults = get_record("lesson_default", "course", $form->course)) { - foreach ($defaults as $name => $value) { - if (!is_numeric($name)) { - $form->$name = $value; - } - } - } -} + + require_once("$CFG->dirroot/mod/lesson/lib.php"); // for parameter array + $nohtmleditorneeded = true; // set the defaults if (empty($form->name)) { @@ -26,7 +19,7 @@ if ($form->mode == "add") { $form->maxanswers = 4; } if (!isset($form->maxattempts)) { - $form->maxattempts = 1; + $form->maxattempts = 5; } if (!isset($form->nextpagedefault)) { $form->nextpagedefault = 0; @@ -38,161 +31,31 @@ if ($form->mode == "add") { $form->maxpages = 0; } if (!isset($form->retake)) { - $form->retake = 0; + $form->retake = 1; } if (!isset($form->available)) { $form->available = 0; } if (!isset($form->deadline)) { - $currentdate = usergetdate(time()); - $form->deadline = gmmktime($currentdate["hours"], $currentdate["minutes"], $currentdate["seconds"], $currentdate["mon"]+1, $currentdate["mday"], $currentdate["year"]); - } - /// CDC-FLAG /// - if (!isset($form->usepassword)) { - $form->usepassword = 0; - } - if (!isset($form->custom)) { - $form->custom = 1; - } - if (!isset($form->ongoing)) { - $form->ongoing = 0; - } - if (!isset($form->timed)) { - $form->timed = 0; - } - if (!isset($form->maxtime)) { - $form->maxtime = 20; - } - if (!isset($form->tree)) { - $form->tree = 0; - } - if (!isset($form->slideshow)) { - $form->slideshow = 0; - } - if (!isset($form->width)) { - $form->width = 640; - } - if (!isset($form->height)) { - $form->height = 400; - } - if (!isset($form->bgcolor)) { - $form->bgcolor = "#FFFFFF"; - } - if (!isset($form->displayleft)) { - $form->displayleft = 0; - } - if (!isset($form->highscores)) { - $form->highscores = 0; - } - if (!isset($form->maxhighscores)) { - $form->maxhighscores = 10; - } - if (!isset($form->practice)) { - $form->practice = 0; - } - if (!isset($form->review)) { - $form->review = 0; - } - if (!isset($form->lessondefault)) { - $form->lessondefault = 0; - } - if (!isset($form->modattempts)) { - $form->modattempts = 0; + $form->deadline = 0; } - - $form->deleteattempts = ""; - - /// CDC-FLAG /// ?> -<form name="form" method="post" action="mod.php"> -<center> +<FORM name="form" method="post" action="<?php echo $ME ?>"> +<CENTER> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string("name") ?>:</B></P></TD> + <TD> + <INPUT type="text" name="name" size=30 value="<?php p($form->name) ?>"> + </TD> +</TR> -<table cellpadding="5"> - -<tr> - <td> - <?php print_heading(get_string("general", "lesson"), "left", 4); ?> - </td><td></td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("name") ?>:</b></td> - <td> - <!-- //CDC hidden label added. --><label for="name" class="hidden-label">Name</label><input type="text" id="name" name="name" size="30" value="<?php p($form->name) ?>" /> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("timed", "lesson"); ?>:</b></td> - <td> - <?PHP - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "timed", $form->timed, ""); - helpbutton("timed", get_string("timed", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("maxtime", "lesson"); ?>:</b></td> - <td> - <input type="text" name="maxtime" maxlength="7" size="7" value="<?php p($form->maxtime) ?>" /> - <?php helpbutton("maxtime", get_string("maxtime", "lesson"), "lesson"); ?> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("maximumnumberofanswersbranches", "lesson") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("maximumgrade") ?>:</B></P></TD> <td> <?php - $numbers = array(); - for ($i=20; $i>1; $i--) { - $numbers[$i] = $i; - } - choose_from_menu($numbers, "maxanswers", "$form->maxanswers", ""); - helpbutton("maxanswers", get_string("maximumnumberofanswersbranches", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr> - <td> - <br/><?php print_heading(get_string("gradeoptions", "lesson"), "left", 4); ?> - </td><td></td> -</tr> - -<tr> - <td align="right"><b><?php print_string("practice", "lesson"); ?>:</b></td> - <td> - <?PHP - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "practice", $form->practice, ""); - helpbutton("practice", get_string("practice", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("customscoring", "lesson"); ?>:</b></td> - <td> - <?PHP - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "custom", $form->custom, ""); - helpbutton("custom", get_string("customscoring", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("maximumgrade") ?>:</b></td> - <td> - <?php - $grades = array(); for ($i=100; $i>=0; $i--) { $grades[$i] = $i; } @@ -202,77 +65,24 @@ if ($form->mode == "add") { </td> </tr> -<tr> - <td align="right"><b><?php print_string("canretake", "lesson", $course->student) ?>:</b></td> - <td> - <?PHP - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "retake", $form->retake, ""); - helpbutton("retake", get_string("canretake", "lesson", $course->student), "lesson"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("handlingofretakes", "lesson") ?>:</b></td> - <td> - <?PHP - $options = array(); - $options[0] = get_string("usemean", "lesson"); $options[1] = get_string("usemaximum", "lesson"); - choose_from_menu($options, "usemaxgrade", $form->usemaxgrade, ""); - helpbutton("handlingofretakes", get_string("handlingofretakes", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("ongoing", "lesson"); ?>:</b></td> - <td> - <?php - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "ongoing", $form->ongoing, ""); - helpbutton("ongoing", get_string("ongoing", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr> - <td> - <br/><?php print_heading(get_string("flowcontrol", "lesson"), "left", 4); ?> - </td><td></td> -</tr> - -<tr> - <td align="right"><b><?php print_string("modattempts", "lesson"); ?>:</b></td> - <td> - <?PHP - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "modattempts", $form->modattempts, ""); - helpbutton("modattempts", get_string("modattempts", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("displayreview", "lesson"); ?>:</b></td> - <td> - <?php - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "review", $form->review, ""); - helpbutton("review", get_string("displayreview", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("maximumnumberofattempts", "lesson") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("maximumnumberofanswersbranches", "lesson") ?>:</B></P></TD> <td> <?php - $numbers = array(); + for ($i=10; $i>1; $i--) { + $numbers[$i] = $i; + } + choose_from_menu($numbers, "maxanswers", "$form->maxanswers", ""); + helpbutton("maxanswers", get_string("maximumnumberofanswersbranches", "lesson"), "lesson"); + ?> + </td> +</tr> + +<tr valign=top> + <td align=right><P><B><?php print_string("maximumnumberofattempts", "lesson") ?>:</B></P></TD> + <td> + <?php + unset($numbers); for ($i=10; $i>0; $i--) { $numbers[$i] = $i; } @@ -283,20 +93,20 @@ if ($form->mode == "add") { </tr> <tr> - <td align="right"><b><?php print_string("actionaftercorrectanswer", "lesson") ?>:</b></td> + <td align=right><P><B><?php print_string("actionaftercorrectanswer", "lesson") ?>:</B></P></TD> <td> - <?php + <?PHP choose_from_menu($LESSON_NEXTPAGE_ACTION, "nextpagedefault", $form->nextpagedefault, ""); helpbutton("nextpageaction", get_string("actionaftercorrectanswer", "lesson"), "lesson"); ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("minimumnumberofquestions", "lesson") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("minimumnumberofquestions", "lesson") ?>:</B></P></TD> <td> <?php - $numbers = array(); + unset($numbers); for ($i=100; $i>=0; $i--) { $numbers[$i] = $i; } @@ -306,11 +116,11 @@ if ($form->mode == "add") { </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("numberofpagestoshow", "lesson") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("numberofpagestoshow", "lesson") ?>:</B></P></TD> <td> <?php - $numbers = array(); + unset($numbers); for ($i=100; $i>=0; $i--) { $numbers[$i] = $i; } @@ -321,88 +131,29 @@ if ($form->mode == "add") { </tr> <tr> - <td> - <br/><?php print_heading(get_string("lessonformating", "lesson"), "left", 4); ?> - </td><td></td> -</tr> - -<tr> - <td align="right"><b><?php print_string("slideshow", "lesson"); ?>:</b></td> + <td align=right><P><B><?php print_string("canretake", "lesson", $course->student) ?>:</B></P></TD> <td> <?PHP - $options = array(); $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "slideshow", $form->slideshow, ""); - helpbutton("slideshow", get_string("slideshow", "lesson"), "lesson"); + choose_from_menu($options, "retake", $form->retake, ""); + helpbutton("retake", get_string("canretake", "lesson", $course->student), "lesson"); ?> </td> </tr> <tr> - <td align="right"><b><?php print_string("slideshowwidth", "lesson"); ?>:</b></td> - <td> - <input type="text" name="width" maxlength="7" size="7" value="<?php p($form->width) ?>" />px - <?php helpbutton("width", get_string("slideshowwidth", "lesson"), "lesson"); ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("slideshowheight", "lesson"); ?>:</b></td> - <td> - <input type="text" name="height" maxlength="7" size="7" value="<?php p($form->height) ?>" />px - <?php helpbutton("height", get_string("slideshowheight", "lesson"), "lesson"); ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("slideshowbgcolor", "lesson"); ?>:</b></td> - <td> - <input type="text" name="bgcolor" maxlength="7" size="7" value="<?php p($form->bgcolor) ?>" /> - <?php helpbutton("bgcolor", get_string("slideshowbgcolor", "lesson"), "lesson"); ?> - - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("displayleftmenu", "lesson"); ?>:</b></td> + <td align=right><P><B><?php print_string("handlingofretakes", "lesson") ?>:</B></P></TD> <td> <?PHP - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "displayleft", $form->displayleft, ""); - helpbutton("displayleft", get_string("displayleftmenu", "lesson"), "lesson"); + $options[0] = get_string("usemean", "lesson"); $options[1] = get_string("usemaximum", "lesson"); + choose_from_menu($options, "usemaxgrade", $form->usemaxgrade, ""); + helpbutton("handlingofretakes", get_string("handlingofretakes", "lesson"), "lesson"); ?> </td> </tr> -<tr> - <td> - <br/><?php print_heading(get_string("accesscontrol", "lesson"), "left", 4); ?> - </td><td></td> -</tr> - -<tr> - <td align="right"><b><?php print_string("usepassword", "lesson"); ?>:</b></td> - <td> - <?PHP - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "usepassword", $form->usepassword, ""); - helpbutton("usepassword", get_string("usepassword", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("password", "lesson"); ?>:</b></td> - <td> - <input type="text" name="password" size="7" value="" /> <?php echo " (".get_string("leavetokeep").")"; ?> - <?php helpbutton("password", get_string("password", "lesson"), "lesson"); ?> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("available", "lesson") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("available", "lesson") ?>:</B></td> <td><?php print_date_selector("availableday", "availablemonth", "availableyear", $form->available); echo "&nbsp;-&nbsp;"; @@ -410,8 +161,8 @@ if ($form->mode == "add") { ?></td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("deadline", "lesson") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("deadline", "lesson") ?>:</B></td> <td><?php print_date_selector("deadlineday", "deadlinemonth", "deadlineyear", $form->deadline); echo "&nbsp;-&nbsp;"; @@ -419,80 +170,15 @@ if ($form->mode == "add") { ?></td> </tr> -<tr> - <td> - <br/><?php print_heading(get_string("other", "lesson"), "left", 4); ?> - </td><td></td> -</tr> - -<tr> - <td align="right"><b><?php print_string("treeview", "lesson"); ?>:</b></td> - <td> - <?PHP - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "tree", $form->tree, ""); - helpbutton("tree", get_string("treeview", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("displayhighscores", "lesson"); ?>:</b></td> - <td> - <?PHP - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "highscores", $form->highscores, ""); - helpbutton("highscores", get_string("displayhighscores", "lesson"), "lesson"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("maxhighscores", "lesson"); ?>:</b></td> - <td> - <input type="text" name="maxhighscores" maxlength="7" size="7" value="<?php p($form->maxhighscores) ?>" /> - <?php helpbutton("maxhighscores", get_string("maxhighscores", "lesson"), "lesson"); ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("lessondefault", "lesson"); ?>:</b></td> - <td> - <?PHP - $options = array(); - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "lessondefault", $form->lessondefault, ""); - helpbutton("lessondefault", get_string("lessondefault", "lesson"), "lesson"); - ?> - </td> -</tr> -<?php - if ($form->mode != "add") { -?> -<tr> - <td align="right"><b><?php print_string("deleteattempts", "lesson"); ?>:</b></td> - <td> - <input type="text" name="deleteattempts" size="7" value="" /> - <?php helpbutton("deleteattempts", get_string("deleteattempts", "lesson"), "lesson"); ?> - <input type="hidden" name="deleteattemptsid" value="<?php echo $USER->id; ?>" /> - </td> -</tr> -<?php - } // end if statement if ($form->mode != "add") { -?> -<?php print_visible_setting($form); ?> -</table> +</TABLE> <!-- These hidden variables are always the same --> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -</center> -</form> +<INPUT type="hidden" name=course value="<?php p($form->course) ?>"> +<INPUT type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<INPUT type="hidden" name=section value="<?php p($form->section) ?>"> +<INPUT type="hidden" name=module value="<?php p($form->module) ?>"> +<INPUT type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<INPUT type="hidden" name=instance value="<?php p($form->instance) ?>"> +<INPUT type="hidden" name=mode value="<?php p($form->mode) ?>"> +<INPUT type="submit" value="<?php print_string("savechanges") ?>"> +</CENTER> +</FORM> diff --git a/mod/lesson/reformat.php b/mod/lesson/reformat.php deleted file mode 100644 index 8501c7e145a..00000000000 --- a/mod/lesson/reformat.php +++ /dev/null @@ -1,178 +0,0 @@ -<?php -// jjg7:8/9/2004 -function removedoublecr($filename) { -// This function will adjust a file in roughly Aiken style by replacing extra newlines with <BR> tags -// so that instructors can have newlines wherever they like as long as the overall format is in Aiken - - $filearray = file($filename); - /// Check for Macintosh OS line returns (ie file on one line), and fix - if (ereg("\r", $filearray[0]) AND !ereg("\n", $filearray[0])) { - $outfile = explode("\r", $filearray[0]); - } else { - $outfile = $filearray; - } - - foreach ($outfile as $line) { - // remove leading and trailing whitespace - trim($line); - // check it's length, if 0 do not output... if it is > 0 output - if ($line[0] == "\n" OR strlen($line)==0 ) { - if (count($outarray) ) { - // get the last item in the outarray - $cur_pos = (count($outarray) - 1); - $outarray[$cur_pos] = trim($outarray[$cur_pos])."<br>\n"; - } - } - else { - $length=strlen($line); - if ($length==0) { - // don't do anything - } - else { - if ($line[$length-1] == "\n") { - $outarray[] = $line; - } - else { - $outarray[] = $line."\n"; - } - } - } - } - // output modified file to original - if ( is_writable($filename) ) { - - if (! $handle =fopen ($filename ,'w' )) { - echo "Cannot open file ($filename)" ; - exit; - } - foreach ($outarray as $outline) { - fwrite($handle, $outline); - } - fclose($handle); - } - else { - // file not writeable - } -} - -// jjg7:8/9/2004 -function importmodifiedaikenstyle($filename) { -// This function converts from Brusca style to Aiken - $lines = file($filename); - $answer_found = 0; - $responses = 0; - $outlines = array(); - foreach ($lines as $line) { - // strip leading and trailing whitespace - $line = trim($line); - // add a space at the end, quick hack to make sure words from different lines don't run together - $line = $line. ' '; - - // ignore lines less than 2 characters - if (strlen($line) < 2) { - continue; - } - - - // see if we have the answer line - if ($line[0] =='*') { - if ($line[0] == '*') { - $answer_found = 1; - $line[0]="\t"; - $line = ltrim($line); - $answer = $line[0]; - } - } - - $leadin = substr($line, 0,2); - if (strpos(".A)B)C)D)E)F)G)H)I)J)a)b)c)d)e)f)g)h)i)j)A.B.C.D.E.F.G.H.I.J.a.b.c.d.e.f.g.h.i.j.", $leadin)>0) { - - // re-add newline to indicate end of previous question/response - if (count($outlines)) { - $cur_pos = (count($outlines) - 1); - $outlines[$cur_pos] = $outlines[$cur_pos]."\n"; - } - - - $responses = 1; - // make character uppercase - $line[0]=strtoupper($line[0]); - - // make entry followed by '.' - $line[1]='.'; - } - elseif ( ($responses AND $answer_found) OR (count(outlines)<=1) ) { - // we have found responses and an answer and the current line is not an answer - switch ($line[0]) { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - - // re-add newline to indicate end of previous question/response - if (count($outlines)) { - $cur_pos = (count($outlines) - 1); - $outlines[$cur_pos] = $outlines[$cur_pos]."\n"; - } - - // this next ugly block is to strip out the numbers at the beginning - $np = 0; - // this probably could be done cleaner... it escapes me at the moment - while ($line[$np] == '0' OR $line[$np] == '1' OR $line[$np] == '2' - OR $line[$np] == '3' OR $line[$np] == '4' OR $line[$np] == '5' - OR $line[$np] == '6' OR $line[$np] == '7' OR $line[$np] == '8' - OR $line[$np] == '9' ) { - $np++; - } - // grab everything after '###.' - $line = substr($line, $np+1, strlen($line)); - - if ($responses AND $answer_found) { - $responses = 0; - $answer_found = 0; - $answer = strtoupper($answer); - $outlines[] = "ANSWER: $answer\n\n"; - } - break; - } - } - if (substr($line, 0, 14) == 'ANSWER CHOICES') { - // don't output this line - } - else { - $outlines[]=$line; - } - } // close for each line - - // re-add newline to indicate end of previous question/response - if (count($outlines)) { - $cur_pos = (count($outlines) - 1); - $outlines[$cur_pos] = $outlines[$cur_pos]."\n"; - } - - // output the last answer - $answer = strtoupper($answer); - $outlines[] = "ANSWER: $answer\n\n"; - - // output modified file to original - if ( is_writable($filename) ) { - if (! $handle =fopen ($filename ,'w' )) { - echo "Cannot open file ($filename)" ; - exit; - } - foreach ($outlines as $outline) { - fwrite($handle, $outline); - } - fclose($handle); - return true; - } - else { - return false; - } -} -?> diff --git a/mod/lesson/report.php b/mod/lesson/report.php deleted file mode 100644 index 2ca3c54be1c..00000000000 --- a/mod/lesson/report.php +++ /dev/null @@ -1,874 +0,0 @@ -<?PHP - - /************************************************************************** - this file displays the lesson statistics. - **************************************************************************/ - - require_once('../../config.php'); - require_once('locallib.php'); - - $id = required_param('id', PARAM_INT); // Course Module ID - $pageid = optional_param('pageid', NULL, PARAM_INT); // Lesson Page ID - $action = optional_param('action'); // action to take - - if (! $cm = get_record('course_modules', 'id', $id)) { - error('Course Module ID was incorrect'); - } - - if (! $course = get_record('course', 'id', $cm->course)) { - error('Course is misconfigured'); - } - - if (! $lesson = get_record('lesson', 'id', $cm->instance)) { - error('Course module is incorrect'); - } - - if (! $attempts = get_records('lesson_attempts', 'lessonid', $lesson->id, 'timeseen')) { - error('Could not find any attempts for this lesson'); - } - - if (! $students = get_records_sql("SELECT DISTINCT u.* - FROM {$CFG->prefix}user u, - {$CFG->prefix}lesson_attempts a - WHERE a.lessonid = '$lesson->id' and - u.id = a.userid - ORDER BY u.lastname")) { - error("Error: could not find users"); - } - - - if (! $grades = get_records('lesson_grades', 'lessonid', $lesson->id, 'completed')) { - $grades = array(); - } - - if (! $times = get_records('lesson_timer', 'lessonid', $lesson->id, 'starttime')) { - $times = array(); - } - -// make sure people are where they should be - require_login($course->id, false); - - if (!isteacheredit($course->id)) { - error("Must be teacher to view Reports"); - } - -/// Print the page header - $strlessons = get_string('modulenameplural', 'lesson'); - - if ($course->category) { - $navigation = '<a href="../../course/view.php?id='. $course->id .'">'. $course->shortname .'</a> ->'; - } - $button = '<form target="'. $CFG->framename .'" method="get" action="'. $CFG->wwwroot .'/course/mod.php">'. - '<input type="hidden" name="update" value="'. $cm->id .'" />'. - '<input type="hidden" name="sesskey" value="'. $USER->sesskey .'" />'. - '<input type="hidden" name="return" value="true" />'. - '<input type="submit" value="'. get_string('editlessonsettings', 'lesson') .'" /></form>'; - - print_header($course->shortname .': '. $lesson->name, $course->fullname, - "$navigation <A HREF=index.php?id=$course->id>$strlessons</A> -> <a href=\"view.php?id=$cm->id\">$lesson->name</a> - -> <a href=\"report.php?id=$cm->id\">".get_string("report", "lesson")."</a>", - '', '', true, $button, - navmenu($course, $cm)); - - print_heading(get_string("lesson", "lesson", $lesson->name), "center", 5); - - // navigational links - $detaillink = "<a href=\"report.php?id=$cm->id&amp;action=detail\">".get_string("detailedstats", "lesson")."</a>"; - $overviewlink = "<a href=\"report.php?id=$cm->id\">".get_string("overview", "lesson")."</a>"; - print_heading($overviewlink."&nbsp;&nbsp;&nbsp;".$detaillink); - - - /************************************************************************** - this action is for default view and overview view - **************************************************************************/ - if (empty($action) || $action == 'view') { - $studentdata = array(); - - // build an array for output - foreach ($attempts as $attempt) { - // if the user is not in the array or if the retry number is not in the sub array, add the data for that try. - if (!array_key_exists($attempt->userid, $studentdata) || !array_key_exists($attempt->retry, $studentdata[$attempt->userid])) { - // restore/setup defaults - $n = 0; - $timestart = 0; - $timeend = 0; - $usergrade = NULL; - - // search for the grade record for this try. if not there, the nulls defined above will be used. - foreach($grades as $grade) { - // check to see if the grade matches the correct user - if ($grade->userid == $attempt->userid) { - // see if n is = to the retry - if ($n == $attempt->retry) { - // get grade info - $usergrade = $grade->grade; - break; - } - $n++; // if not equal, then increment n - } - } - $n = 0; - // search for the time record for this try. if not there, the nulls defined above will be used. - foreach($times as $time) { - // check to see if the grade matches the correct user - if ($time->userid == $attempt->userid) { - // see if n is = to the retry - if ($n == $attempt->retry) { - // get grade info - $timeend = $time->lessontime; - $timestart = $time->starttime; - break; - } - $n++; // if not equal, then increment n - } - } - - // build up the array. - // this array represents each student and all of their tries at the lesson - $studentdata[$attempt->userid][$attempt->retry] = array( "timestart" => $timestart, - "timeend" => $timeend, - "grade" => $usergrade, - "try" => $attempt->retry, - "userid" => $attempt->userid); - } - } - // set all the stats variables - $numofattempts = 0; - $avescore = 0; - $avetime = 0; - $highscore = NULL; - $lowscore = NULL; - $hightime = NULL; - $lowtime = NULL; - $table = new stdClass; - - // set up the table object - $table->head = array(get_string('studentname', 'lesson', $course->student), get_string('attempts', 'lesson'), get_string('highscore', 'lesson')); - $table->align = array("center", "left", "left"); - $table->wrap = array("nowrap", "nowrap", "nowrap"); - $table->width = "90%"; - $table->size = array("*", "70%", "*"); - - // print out the $studentdata array - // going through each student that has attempted the lesson, so, each student should have something to be displayed - foreach ($students as $student) { - // check to see if the student has attempts to print out - if (array_key_exists($student->id, $studentdata)) { - // set/reset some variables - $attempts = array(); - // gather the data for each user attempt - $bestgrade = 0; - $bestgradefound = false; - // $tries holds all the tries/retries a student has done - $tries = $studentdata[$student->id]; - $studentname = "{$student->lastname},&nbsp;$student->firstname"; - foreach ($tries as $try) { - // start to build up the link - $temp = "<a href=\"report.php?id=$cm->id&amp;action=detail&amp;userid=".$try["userid"]."&amp;try=".$try["try"]."\">"; - if ($try["grade"] != NULL) { // if NULL then not done yet - // this is what the link does when the user has completed the try - $timetotake = $try["timeend"] - $try["timestart"]; - - $temp .= $try["grade"]."%"; - $bestgradefound = true; - if ($try["grade"] > $bestgrade) { - $bestgrade = $try["grade"]; - } - $temp .= "&nbsp;".userdate($try["timestart"]); - $temp .= ",&nbsp;(".format_time($timetotake).")</a>"; - } else { - // this is what the link does/looks like when the user has not completed the try - $temp .= get_string("notcompleted", "lesson"); - $temp .= "&nbsp;".userdate($try["timestart"])."</a>"; - $timetotake = NULL; - } - // build up the attempts array - $attempts[] = $temp; - - // run these lines for the stats only if the user finnished the lesson - if ($try["grade"] != NULL) { - $numofattempts++; - $avescore += $try["grade"]; - $avetime += $timetotake; - if ($try["grade"] > $highscore || $highscore == NULL) { - $highscore = $try["grade"]; - } - if ($try["grade"] < $lowscore || $lowscore == NULL) { - $lowscore = $try["grade"]; - } - if ($timetotake > $hightime || $hightime == NULL) { - $hightime = $timetotake; - } - if ($timetotake < $lowtime || $lowtime == NULL) { - $lowtime = $timetotake; - } - } - } - // get line breaks in after each attempt - $attempts = implode("<br />\n", $attempts); - // add it to the table data[] object - $table->data[] = array($studentname, $attempts, $bestgrade."%"); - } - } - // print it all out ! - print_table($table); - - // some stat calculations - if ($numofattempts == 0) { - $avescore = get_string("notcompleted", "lesson"); - } else { - $avescore = format_float($avescore/$numofattempts, 2, ".", ","); - } - if ($avetime == NULL) { - $avetime = get_string("notcompleted", "lesson"); - } else { - $avetime = format_float($avetime/$numofattempts, 0, ".", ","); - $avetime = format_time($avetime); - } - if ($hightime == NULL) { - $hightime = get_string("notcompleted", "lesson"); - } else { - $hightime = format_time($hightime); - } - if ($lowtime == NULL) { - $lowtime = get_string("notcompleted", "lesson"); - } else { - $lowtime = format_time($lowtime); - } - if ($highscore == NULL) { - $highscore = get_string("notcompleted", "lesson"); - } - if ($lowscore == NULL) { - $lowscore = get_string("notcompleted", "lesson"); - } - - // output the stats - print_heading(get_string('lessonstats', 'lesson')); - $stattable = new stdClass; - $stattable->head = array(get_string('averagescore', 'lesson'), get_string('averagetime', 'lesson'), - get_string('highscore', 'lesson'), get_string('lowscore', 'lesson'), - get_string('hightime', 'lesson'), get_string('lowtime', 'lesson')); - $stattable->align = array("center", "center", "center", "center", "center", "center"); - $stattable->wrap = array("nowrap", "nowrap", "nowrap", "nowrap", "nowrap", "nowrap"); - $stattable->width = "90%"; - $stattable->size = array("*", "*", "*", "*", "*", "*"); - $stattable->data[] = array($avescore, $avetime, $highscore, $lowscore, $hightime, $lowtime); - - print_table($stattable); -} - /************************************************************************** - this action is for a student detailed view and for the general detailed view - - General flow of this section of the code - 1. Generate a object which holds values for the statistics for each question/answer - 2. Cycle through all the pages to create a object. Foreach page, see if the student actually answered - the page. Then process the page appropriatly. Display all info about the question, - Highlight correct answers, show how the user answered the question, and display statistics - about each page - 3. Print out info about the try (if needed) - 4. Print out the object which contains all the try info - - **************************************************************************/ - else if ($action == 'detail') { - $userid = optional_param('userid', NULL, PARAM_INT); // if empty, then will display the general detailed view - $try = optional_param('try', NULL, PARAM_INT); - - if (! $lessonpages = get_records("lesson_pages", "lessonid", $lesson->id)) { - error("Could not find Lesson Pages"); - } - if (! $pageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { - error("Could not find first page"); - } - - if (!empty($userid)) { - // print out users name - $headingobject->lastname = $students[$userid]->lastname; - $headingobject->firstname = $students[$userid]->firstname; - $headingobject->attempt = $try + 1; - print_heading(get_string("studentattemptlesson", "lesson", $headingobject)); - } - - // now gather the stats into an object - $firstpageid = $pageid; - $pagestats = array(); - while ($pageid != 0) { // EOL - $page = $lessonpages[$pageid]; - - if ($allanswers = get_records_select("lesson_attempts", "lessonid = $lesson->id AND pageid = $page->id", "timeseen")) { - // get them ready for processing - $orderedanswers = array(); - foreach ($allanswers as $singleanswer) { - // ordering them like this, will help to find the single attempt record that we want to keep. - $orderedanswers[$singleanswer->userid][$singleanswer->retry][] = $singleanswer; - } - // this is foreach user and for each try for that user, keep one attempt record - foreach ($orderedanswers as $orderedanswer) { - foreach($orderedanswer as $tries) { - if(count($tries) > $lesson->maxattempts) { // if there are more tries than the max that is allowed, grab the last "legal" attempt - $temp = $tries[$lesson->maxattempts - 1]; - } else { - // else, user attempted the question less than the max, so grab the last one - $temp = end($tries); - } - // page interpretation - // depending on the page type, process stat info for that page - switch ($page->qtype) { - case LESSON_MULTICHOICE: - case LESSON_TRUEFALSE: - if ($page->qoption) { - $userresponse = explode(",", $temp->useranswer); - foreach ($userresponse as $response) { - if (isset($pagestats[$temp->pageid][$response])) { - $pagestats[$temp->pageid][$response]++; - } else { - $pagestats[$temp->pageid][$response] = 1; - } - } - } else { - if (isset($pagestats[$temp->pageid][$temp->answerid])) { - $pagestats[$temp->pageid][$temp->answerid]++; - } else { - $pagestats[$temp->pageid][$temp->answerid] = 1; - } - } - if (isset($pagestats[$temp->pageid]["total"])) { - $pagestats[$temp->pageid]["total"]++; - } else { - $pagestats[$temp->pageid]["total"] = 1; - } - break; - case LESSON_SHORTANSWER: - case LESSON_NUMERICAL: - if (isset($pagestats[$temp->pageid][$temp->useranswer])) { - $pagestats[$temp->pageid][$temp->useranswer]++; - } else { - $pagestats[$temp->pageid][$temp->useranswer] = 1; - } - if (isset($pagestats[$temp->pageid]["total"])) { - $pagestats[$temp->pageid]["total"]++; - } else { - $pagestats[$temp->pageid]["total"] = 1; - } - break; - case LESSON_MATCHING: - if ($temp->correct) { - if (isset($pagestats[$temp->pageid]["correct"])) { - $pagestats[$temp->pageid]["correct"]++; - } else { - $pagestats[$temp->pageid]["correct"] = 1; - } - } - if (isset($pagestats[$temp->pageid]["total"])) { - $pagestats[$temp->pageid]["total"]++; - } else { - $pagestats[$temp->pageid]["total"] = 1; - } - break; - case LESSON_ESSAY: - $essayinfo = unserialize($temp->useranswer); - if ($essayinfo->graded) { - if (isset($pagestats[$temp->pageid])) { - $essaystats = $pagestats[$temp->pageid]; - $essaystats->totalscore += $essayinfo->score; - $essaystats->total++; - $pagestats[$temp->pageid] = $essaystats; - } else { - $essaystats->totalscore = $essayinfo->score; - $essaystats->total = 1; - $pagestats[$temp->pageid] = $essaystats; - } - } - break; - } - } - } - - } else { - // no one answered yet... - } - //unset($orderedanswers); initialized above now - $pageid = $page->nextpageid; - } - - - - $answerpages = array(); - $answerpage = ""; - $pageid = $firstpageid; - // cycle through all the pages - // foreach page, add to the $answerpages[] array all the data that is needed - // from the question, the users attempt, and the statistics - // grayout pages that the user did not answer and Branch, end of branch, cluster - // and end of cluster pages - while ($pageid != 0) { // EOL - $page = $lessonpages[$pageid]; - $answerpage = new stdClass; - $data =''; - $answerdata = new stdClass; - - $answerpage->title = $page->title; - $answerpage->contents = $page->contents; - - // get the page qtype - switch ($page->qtype) { - case LESSON_ESSAY : - case LESSON_MATCHING : - case LESSON_TRUEFALSE : - case LESSON_NUMERICAL : - $answerpage->qtype = $LESSON_QUESTION_TYPE[$page->qtype]; - $answerpage->grayout = 0; - break; - case LESSON_SHORTANSWER : - $answerpage->qtype = $LESSON_QUESTION_TYPE[$page->qtype]; - if ($page->qoption) { - $answerpage->qtype .= " - ".get_string("casesensitive", "lesson"); - } - $answerpage->grayout = 0; - break; - case LESSON_MULTICHOICE : - $answerpage->qtype = $LESSON_QUESTION_TYPE[$page->qtype]; - if ($page->qoption) { - $answerpage->qtype .= " - ".get_string("multianswer", "lesson"); - } - $answerpage->grayout = 0; - break; - case LESSON_BRANCHTABLE : - $answerpage->qtype = get_string("branchtable", "lesson"); - $answerpage->grayout = 1; - break; - case LESSON_ENDOFBRANCH : - $answerpage->qtype = get_string("endofbranch", "lesson"); - $answerpage->grayout = 1; - break; - case LESSON_CLUSTER : - $answerpage->qtype = get_string("clustertitle", "lesson"); - $answerpage->grayout = 1; - break; - case LESSON_ENDOFCLUSTER : - $answerpage->qtype = get_string("endofclustertitle", "lesson"); - $answerpage->grayout = 1; - break; - } - - - if (empty($userid)) { - // there is no userid, so set these vars and display stats. - $answerpage->grayout = 0; - $useranswer = NULL; - $answerdata->score = NULL; - $answerdata->response = NULL; - } elseif ($useranswers = get_records_select("lesson_attempts", - "lessonid = $lesson->id AND userid = $userid AND retry = $try AND pageid = $page->id", "timeseen")) { - // get the user's answer for this page - // need to find the right one - $i = 0; - foreach ($useranswers as $userattempt) { - $useranswer = $userattempt; - $i++; - if ($lesson->maxattempts == $i) { - break; // reached maxattempts, break out - } - } - } else { - // user did not answer this page, gray it out and set some nulls - $answerpage->grayout = 1; - $useranswer = NULL; - $answerdata->score = NULL; - $answerdata->response = NULL; - - } - // build up the answer data - if ($answers = get_records("lesson_answers", "pageid", $page->id, "id")) { - $i = 0; - $n = 0; - // go through each answer and display it properly with statistics, highlight if correct answer, - // and display what the user entered - foreach ($answers as $answer) { - switch ($page->qtype) { - case LESSON_MULTICHOICE: - case LESSON_TRUEFALSE: - if ($page->qoption) { - $userresponse = explode(",", $useranswer->useranswer); - if (in_array($answer->id, $userresponse)) { - // make checked - $data = "<input readonly=\"readonly\" disabled=\"disabled\" name=\"answer[$i]\" checked=\"checked\" type=\"checkbox\" value=\"1\" />"; - if (!isset($answerdata->response)) { - if ($answer->response == NULL) { - if ($useranswer->correct) { - $answerdata->response = get_string("thatsthecorrectanswer", "lesson"); - } else { - $answerdata->response = get_string("thatsthewronganswer", "lesson"); - } - } else { - $answerdata->response = $answer->response; - } - } - if (!isset($answerdata->score)) { - if ($lesson->custom) { - $answerdata->score = get_string("pointsearned", "lesson").": ".$answer->score; - } elseif ($useranswer->correct) { - $answerdata->score = get_string("receivedcredit", "lesson"); - } else { - $answerdata->score = get_string("didnotreceivecredit", "lesson"); - } - } - } else { - // unchecked - $data = "<input type=\"checkbox\" readonly=\"readonly\" name=\"answer[$i]\" value=\"0\" disabled=\"disabled\" />"; - } - if (($answer->score > 0 && $lesson->custom) || (lesson_iscorrect($page->id, $answer->jumpto) && !$lesson->custom)) { - $data .= "<font class=highlight>$answer->answer</font>"; - } else { - $data .= $answer->answer; - } - } else { - if ($answer->id == $useranswer->answerid) { - // make checked - $data = "<input readonly=\"readonly\" disabled=\"disabled\" name=\"answer[$i]\" checked=\"checked\" type=\"checkbox\" value=\"1\" />"; - if ($answer->response == NULL) { - if ($useranswer->correct) { - $answerdata->response = get_string("thatsthecorrectanswer", "lesson"); - } else { - $answerdata->response = get_string("thatsthewronganswer", "lesson"); - } - } else { - $answerdata->response = $answer->response; - } - if ($lesson->custom) { - $answerdata->score = get_string("pointsearned", "lesson").": ".$answer->score; - } elseif ($useranswer->correct) { - $answerdata->score = get_string("receivedcredit", "lesson"); - } else { - $answerdata->score = get_string("didnotreceivecredit", "lesson"); - } - } else { - // unchecked - $data = "<input type=\"checkbox\" readonly=\"readonly\" name=\"answer[$i]\" value=\"0\" disabled=\"disabled\" />"; - } - if (($answer->score > 0 && $lesson->custom) || (lesson_iscorrect($page->id, $answer->jumpto) && !$lesson->custom)) { - $data .= "<font class=\"highlight\">$answer->answer</font>"; - } else { - $data .= $answer->answer; - } - } - if (isset($pagestats[$page->id][$answer->id])) { - $percent = $pagestats[$page->id][$answer->id] / $pagestats[$page->id]["total"] * 100; - $percent = round($percent, 2); - $percent .= "% ".get_string("checkedthisone", "lesson"); - } else { - $percent = get_string("noonecheckedthis", "lesson"); - } - - $answerdata->answers[] = array($data, $percent); - break; - case LESSON_SHORTANSWER: - case LESSON_NUMERICAL: - if ($useranswer == NULL && $i == 0) { - // I have the $i == 0 because it is easier to blast through it all at once. - if (isset($pagestats[$page->id])) { - $stats = $pagestats[$page->id]; - $total = $stats["total"]; - unset($stats["total"]); - foreach ($stats as $valentered => $ntimes) { - $data = "<input type=\"text\" size=\"50\" disabled=\"disabled\" readonly=\"readonly\" value=\"$valentered\">"; - $percent = $ntimes / $total * 100; - $percent = round($percent, 2); - $percent .= "% ".get_string("enteredthis", "lesson"); - $answerdata->answers[] = array($data, $percent); - } - } else { - $answerdata->answers[] = array(get_string("nooneansweredthisquestion", "lesson"), " "); - } - $i++; - } else if ($answer->answer == $useranswer->useranswer && $useranswer != NULL) { - // get in here when a user answer matches one of the answers to the page - $data = "<input type=\"text\" size=\"50\" disabled=\"disabled\" readonly=\"readonly\" value=\"$useranswer->useranswer\">"; - if (isset($pagestats[$page->id][$answer->answer])) { - $percent = $pagestats[$page->id][$answer->answer] / $pagestats[$page->id]["total"] * 100; - $percent = round($percent, 2); - $percent .= "% ".get_string("enteredthis", "lesson"); - } else { - $percent = get_string("nooneenteredthis", "lesson"); - } - $answerdata->answers[] = array($data, $percent); - - if ($answer->response == NULL) { - if ($useranswer->correct) { - $answerdata->response = get_string("thatsthecorrectanswer", "lesson"); - } else { - $answerdata->response = get_string("thatsthewronganswer", "lesson"); - } - } else { - $answerdata->response = $answer->response; - } - if ($lesson->custom) { - $answerdata->score = get_string("pointsearned", "lesson").": ".$answer->score; - } elseif ($useranswer->correct) { - $answerdata->score = get_string("receivedcredit", "lesson"); - } else { - $answerdata->score = get_string("didnotreceivecredit", "lesson"); - } - } elseif ($answer == end($answers) && !isset($answerdata) && $useranswer != NULL) { - // get in here when what the user entered is not one of the answers - $data = "<input type=\"text\" size=\"50\" disabled=\"disabled\" readonly=\"readonly\" value=\"$useranswer->useranswer\">"; - if (isset($pagestats[$page->id][$answer->answer])) { - $percent = $pagestats[$page->id][$answer->answer] / $pagestats[$page->id]["total"] * 100; - $percent = round($percent, 2); - $percent .= "% ".get_string("enteredthis", "lesson"); - } else { - $percent = get_string("nooneenteredthis", "lesson"); - } - $answerdata->answers[] = array($data, $percent); - - $answerdata->response = get_string("thatsthewronganswer", "lesson"); - if ($lesson->custom) { - $answerdata->score = get_string("pointsearned", "lesson").": 0"; - } else { - $answerdata->score = get_string("didnotreceivecredit", "lesson"); - } - } - break; - case LESSON_MATCHING: - if ($n == 0 && $useranswer->correct) { - if ($answer->response == NULL && $useranswer != NULL) { - $answerdata->response = get_string("thatsthecorrectanswer", "lesson"); - } else { - $answerdata->response = $answer->response; - } - } elseif ($n == 1 && !$useranswer->correct) { - if ($answer->response == NULL && $useranswer != NULL) { - $answerdata->response = get_string("thatsthewronganswer", "lesson"); - } else { - $answerdata->response = $answer->response; - } - } elseif ($n > 1) { - if ($n == 2 && $useranswer->correct && $useranswer != NULL) { - if ($lesson->custom) { - $answerdata->score = get_string("pointsearned", "lesson").": ".$answer->score; - } else { - $answerdata->score = get_string("receivedcredit", "lesson"); - } - } elseif ($n == 3 && !$useranswer->correct && $useranswer != NULL) { - if ($lesson->custom) { - $answerdata->score = get_string("pointsearned", "lesson").": ".$answer->score; - } else { - $answerdata->score = get_string("didnotreceivecredit", "lesson"); - } - } - $data = "<select disabled=\"disabled\"><option selected>$answer->answer</option></select>"; - if ($useranswer != NULL) { - $userresponse = explode(",", $useranswer->useranswer); - $data .= "<select disabled=\"disabled\"><option selected>".$answers[$userresponse[$i]]->response."</option></select>"; - } else { - $data .= "<select disabled=\"disabled\"><option selected>$answer->response</option></select>"; - } - - if ($n == 2) { - if (isset($pagestats[$page->id])) { - $percent = $pagestats[$page->id]["correct"] / $pagestats[$page->id]["total"] * 100; - $percent = round($percent, 2); - $percent .= "% ".get_string("answeredcorrectly", "lesson"); - } else { - $percent = get_string("nooneansweredthisquestion", "lesson"); - } - } else { - $percent = ""; - } - - $answerdata->answers[] = array($data, $percent); - $i++; - } - $n++; - break; - case LESSON_ESSAY : - if ($useranswer != NULL) { - $essayinfo = unserialize($useranswer->useranswer); - if ($essayinfo->response == NULL) { - $answerdata->response = get_string("nocommentyet", "lesson"); - } else { - $answerdata->response = $essayinfo->response; - } - if (isset($pagestats[$page->id])) { - $percent = $pagestats[$page->id]->totalscore / $pagestats[$page->id]->total * 100; - $percent = round($percent, 2); - $percent = get_string("averagescore", "lesson").": ". $percent ."%"; - } else { - // dont think this should ever be reached.... - $percent = get_string("nooneansweredthisquestion", "lesson"); - } - if ($essayinfo->graded) { - if ($lesson->custom) { - $answerdata->score = get_string("pointsearned", "lesson").": ".$essayinfo->score; - } elseif ($essayinfo->score) { - $answerdata->score = get_string("receivedcredit", "lesson"); - } else { - $answerdata->score = get_string("didnotreceivecredit", "lesson"); - } - } else { - $answerdata->score = get_string("havenotgradedyet", "lesson"); - } - } else { - $essayinfo->answer = get_string("didnotanswerquestion", "lesson"); - } - - if (isset($pagestats[$page->id])) { - $avescore = $pagestats[$page->id]->totalscore / $pagestats[$page->id]->total; - $avescore = round($avescore, 2); - $avescore = get_string("averagescore", "lesson").": ". $avescore ; - } else { - // dont think this should ever be reached.... - $avescore = get_string("nooneansweredthisquestion", "lesson"); - } - $answerdata->answers[] = array($essayinfo->answer, $avescore); - break; - case LESSON_BRANCHTABLE : - $data = "<input type=\"button\" name=\"$answer->id\" value=\"$answer->answer\" disabled=\"disabled\"> "; - $data .= get_string("jumptsto", "lesson").": "; - if ($answer->jumpto == 0) { - $data .= get_string("thispage", "lesson"); - } elseif ($answer->jumpto == LESSON_NEXTPAGE) { - $data .= get_string("nextpage", "lesson"); - } elseif ($answer->jumpto == LESSON_EOL) { - $data .= get_string("endoflesson", "lesson"); - } elseif ($answer->jumpto == LESSON_UNSEENBRANCHPAGE) { - $data .= get_string("unseenpageinbranch", "lesson"); - } elseif ($answer->jumpto == LESSON_PREVIOUSPAGE) { - $data .= get_string("previouspage", "lesson"); - } elseif ($answer->jumpto == LESSON_RANDOMPAGE) { - $data .= get_string("randompageinbranch", "lesson"); - } elseif ($answer->jumpto == LESSON_RANDOMBRANCH) { - $data .= get_string("randombranch", "lesson"); - } elseif ($answer->jumpto == LESSON_CLUSTERJUMP) { - $data .= get_string("clusterjump", "lesson"); - } else { - $data .= $lessonpages[$answer->jumpto]->title." ".get_string("page", "lesson"); - } - - $answerdata->answers[] = array($data, ""); - $answerpage->grayout = 1; // always grayed out - break; - case LESSON_ENDOFBRANCH : - case LESSON_CLUSTER : - case LESSON_ENDOFCLUSTER : - $data = get_string("jumptsto", "lesson").": "; - if ($answer->jumpto == 0) { - $data .= get_string("thispage", "lesson"); - } elseif ($answer->jumpto == LESSON_NEXTPAGE) { - $data .= get_string("nextpage", "lesson"); - } elseif ($answer->jumpto == LESSON_EOL) { - $data .= get_string("endoflesson", "lesson"); - } elseif ($answer->jumpto == LESSON_UNSEENBRANCHPAGE) { - $data .= get_string("unseenpageinbranch", "lesson"); - } elseif ($answer->jumpto == LESSON_PREVIOUSPAGE) { - $data .= get_string("previouspage", "lesson"); - } elseif ($answer->jumpto == LESSON_RANDOMPAGE) { - $data .= get_string("randompageinbranch", "lesson"); - } elseif ($answer->jumpto == LESSON_RANDOMBRANCH) { - $data .= get_string("randombranch", "lesson"); - } elseif ($answer->jumpto == LESSON_CLUSTERJUMP) { - $data .= get_string("clusterjump", "lesson"); - } else { - $data .= $lessonpages[$answer->jumpto]->title." ".get_string("page", "lesson"); - } - $answerdata->answers[] = array($data, ""); - $answerpage->grayout = 1; // always grayed out - break; - } - if (isset($answerdata)) { - $answerpage->answerdata = $answerdata; - } - } - $answerpages[] = $answerpage; - } - $pageid = $page->nextpageid; - } - - /// actually start printing something - $table = new stdClass; - $table->wrap = array(); - $table->width = "60%"; - - - if (!empty($userid)) { - // if looking at a students try, print out some basic stats at the top - $table->head = array(); - $table->align = array("right", "left"); - $table->size = array("*", "*"); - - if (!$grades = get_records_select("lesson_grades", "lessonid = $lesson->id and userid = $userid", "completed", "*", $try, 1)) { - $grade = -1; - } else { - $grade = current($grades); - $grade = $grade->grade; - } - if (!$times = get_records_select("lesson_timer", "lessonid = $lesson->id and userid = $userid", "starttime", "*", $try, 1)) { - $timetotake = -1; - } else { - $timetotake = current($times); - $timetotake = $timetotake->lessontime - $timetotake->starttime; - } - - if ($timetotake == -1 || $completed == -1 || $grade == -1) { - $table->align = array("center"); - $table->size = array("*"); - - $table->data[] = array(get_string("notcompleted", "lesson")); - } else { - $table->align = array("right", "left"); - $table->size = array("*", "*"); - - $table->data[] = array(get_string("timetaken", "lesson").":", format_time($timetotake)); - $table->data[] = array(get_string("completed", "lesson").":", userdate($completed)); - $table->data[] = array(get_string("grade", "lesson").":", $grade."%"); - } - print_table($table); - echo "<br />"; - } - - - $table->align = array("left", "left"); - $table->size = array("70%", "*"); - - foreach ($answerpages as $page) { - unset($table->data); - if ($page->grayout) { // set the color of text - $fontstart = "<span class=\"dimmed\">"; - $fontend = "</font>"; - $fontstart2 = $fontstart; - $fontend2 = $fontend; - } else { - $fontstart = ""; - $fontend = ""; - $fontstart2 = ""; - $fontend2 = ""; - } - - $table->head = array($fontstart2.$page->qtype.": ".$page->title.$fontend2, $fontstart2.get_string("classstats", "lesson").$fontend2); - $table->data[] = array($fontstart.get_string("question", "lesson").": <br />".$fontend.$fontstart2.$page->contents.$fontend2, " "); - $table->data[] = array($fontstart.get_string("answer", "lesson").":".$fontend); - // apply the font to each answer - foreach ($page->answerdata->answers as $answer){ - $modified = array(); - foreach ($answer as $single) { - // need to apply a font to each one - $modified[] = $fontstart2.$single.$fontend2; - } - $table->data[] = $modified; - } - if ($page->answerdata->response != NULL) { - $table->data[] = array($fontstart.get_string("response", "lesson").": <br />".$fontend.$fontstart2.$page->answerdata->response.$fontend2, " "); - } - $table->data[] = array($page->answerdata->score, " "); - print_table($table); - echo "<br />"; - } - } - - else { - error("Fatal Error: Unknown Action: ".$action."\n"); - } - -/// Finish the page - print_footer($course); - -?> diff --git a/mod/lesson/restorelib.php b/mod/lesson/restorelib.php index 0382f1e6a69..c19399a1301 100644 --- a/mod/lesson/restorelib.php +++ b/mod/lesson/restorelib.php @@ -1,22 +1,19 @@ <?PHP //$Id$ - //This php script contains all the stuff to backup/restore //lesson mods //This is the "graphical" structure of the lesson mod: // - // lesson_default lesson ----------------------------|--------------------------|--------------------------| - // (UL, pk->id,fk->courseid) (CL,pk->id) | | | - // | | | | - // | lesson_grades lesson_high_scores lesson_timer - // | (UL, pk->id,fk->lessonid) (UL, pk->id,fk->lessonid) (UL, pk->id,fk->lessonid) - // | - // | - // lesson_pages---------------------------| - // (CL,pk->id,fk->lessonid) | + // lesson ----------------------------| + // (CL,pk->id) | // | | - // | lesson_branch - // | (UL, pk->id,fk->pageid) + // | lesson_grades + // | (UL, pk->id,fk->lessonid) + // lesson_pages + // (CL,pk->id,fk->lessonid) + // | + // | + // | // lesson_answers // (CL,pk->id,fk->pageid) // | @@ -45,7 +42,7 @@ $data = backup_getid($restore->backup_unique_code,$mod->modtype,$mod->id); if ($data) { - //Now get completed xmlized object + //Now get completed xmlized object $info = $data->info; //traverse_xmlize($info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug @@ -54,31 +51,14 @@ //Now, build the lesson record structure $lesson->course = $restore->course_id; $lesson->name = backup_todb($info['MOD']['#']['NAME']['0']['#']); - $lesson->practice = backup_todb($info['MOD']['#']['PRACTICE']['0']['#']); - $lesson->modattempts = backup_todb($info['MOD']['#']['MODATTEMPTS']['0']['#']); - $lesson->password = backup_todb($info['MOD']['#']['PASSWORD']['0']['#']); - $lesson->usepassword = backup_todb($info['MOD']['#']['USEPASSWORD']['0']['#']); $lesson->grade = backup_todb($info['MOD']['#']['GRADE']['0']['#']); - $lesson->custom = backup_todb($info['MOD']['#']['CUSTOM']['0']['#']); - $lesson->ongoing = backup_todb($info['MOD']['#']['ONGOING']['0']['#']); $lesson->usemaxgrade = backup_todb($info['MOD']['#']['USEMAXGRADE']['0']['#']); $lesson->maxanswers = backup_todb($info['MOD']['#']['MAXANSWERS']['0']['#']); $lesson->maxattempts = backup_todb($info['MOD']['#']['MAXATTEMPTS']['0']['#']); - $lesson->review = backup_todb($info['MOD']['#']['REVIEW']['0']['#']); $lesson->nextpagedefault = backup_todb($info['MOD']['#']['NEXTPAGEDEFAULT']['0']['#']); $lesson->minquestions = backup_todb($info['MOD']['#']['MINQUESTIONS']['0']['#']); $lesson->maxpages = backup_todb($info['MOD']['#']['MAXPAGES']['0']['#']); - $lesson->timed = backup_todb($info['MOD']['#']['TIMED']['0']['#']); - $lesson->maxtime = backup_todb($info['MOD']['#']['MAXTIME']['0']['#']); $lesson->retake = backup_todb($info['MOD']['#']['RETAKE']['0']['#']); - $lesson->tree = backup_todb($info['MOD']['#']['TREE']['0']['#']); - $lesson->slideshow = backup_todb($info['MOD']['#']['SLIDESHOW']['0']['#']); - $lesson->width = backup_todb($info['MOD']['#']['WIDTH']['0']['#']); - $lesson->height = backup_todb($info['MOD']['#']['HEIGHT']['0']['#']); - $lesson->bgcolor = backup_todb($info['MOD']['#']['BGCOLOR']['0']['#']); - $lesson->displayleft = backup_todb($info['MOD']['#']['DISPLAYLEFT']['0']['#']); - $lesson->highscores = backup_todb($info['MOD']['#']['SHOWHIGHSCORES']['0']['#']); - $lesson->maxhighscores = backup_todb($info['MOD']['#']['MAXHIGHSCORES']['0']['#']); $lesson->available = backup_todb($info['MOD']['#']['AVAILABLE']['0']['#']); $lesson->deadline = backup_todb($info['MOD']['#']['DEADLINE']['0']['#']); $lesson->timemodified = backup_todb($info['MOD']['#']['TIMEMODIFIED']['0']['#']); @@ -86,8 +66,8 @@ //The structure is equal to the db, so insert the lesson $newid = insert_record("lesson", $lesson); - //Do some output - echo "<li>".get_string("modulename","lesson")." \"".$lesson->name."\"</li>"; + //Do some output + echo "<ul><li>".get_string("modulename","lesson")." \"".$lesson->name."\"<br>"; backup_flush(300); if ($newid) { @@ -96,29 +76,21 @@ $mod->id, $newid); //We have to restore the lesson pages which are held in their logical order... $status = lesson_pages_restore_mods($newid,$info,$restore); - //...and the user grades, high scores, and timer (if required) - if ($status) { - if ($restore->mods["lesson"]->userinfo) { - if(!lesson_grades_restore_mods($newid,$info,$restore)) { - return false; - } - if (!lesson_high_scores_restore_mods($newid,$info,$restore)) { - return false; - } - if (!lesson_timer_restore_mods($newid,$info,$restore)) { - return false; - } - } - // restore the default for the course. There might not be one, but if there - // is, there will only be one. - $status = lesson_default_restore_mods($info,$restore); + //...and the user grades (if required) + if ($restore->mods['lesson']->userinfo) { + $status = lesson_grades_restore_mods($newid,$info,$restore); } } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } + return $status; } @@ -142,14 +114,12 @@ //We'll need this later!! $oldid = backup_todb($page_info['#']['PAGEID']['0']['#']); - + //Now, build the lesson_pages record structure $page->lessonid = $lessonid; $page->prevpageid = $prevpageid; $page->qtype = backup_todb($page_info['#']['QTYPE']['0']['#']); $page->qoption = backup_todb($page_info['#']['QOPTION']['0']['#']); - $page->layout = backup_todb($page_info['#']['LAYOUT']['0']['#']); - $page->display = backup_todb($page_info['#']['DISPLAY']['0']['#']); $page->timecreated = backup_todb($page_info['#']['TIMECREATED']['0']['#']); $page->timemodified = backup_todb($page_info['#']['TIMEMODIFIED']['0']['#']); $page->title = backup_todb($page_info['#']['TITLE']['0']['#']); @@ -158,14 +128,17 @@ //The structure is equal to the db, so insert the lesson_pages $newid = insert_record ("lesson_pages",$page); - //Fix the forwards link of the previous page + // save the new pageids (needed to fix the absolute jumps in the answers) + $newpageid[backup_todb($page_info['#']['PAGEID']['0']['#'])] = $newid; + + // fix the forwards link of the previous page if ($prevpageid) { if (!set_field("lesson_pages", "nextpageid", $newid, "id", $prevpageid)) { error("Lesson restorelib: unable to update link"); } } $prevpageid = $newid; - + //Do some output if (($i+1) % 10 == 0) { echo "."; @@ -180,61 +153,25 @@ backup_putid($restore->backup_unique_code,"lesson_pages", $oldid, $newid); //We have to restore the lesson_answers table now (a page level table) $status = lesson_answers_restore($lessonid,$newid,$page_info,$restore); - - //Need to update useranswer field (which has answer id's in it) - //for matching and multi-answer multi-choice questions - if ($restore->mods["lesson"]->userinfo) { // firs check to see if we even have to do this - // if multi-answer multi-choice question or matching - if (($page->qtype == 3 && $page->qoption) || - $page->qtype == 5) { - // get all the attempt records for this page - if ($attempts = get_records("lesson_attempts", "pageid", $newid)) { - foreach ($attempts as $attempt) { - unset($newuseranswer); - if ($attempt->useranswer != NULL) { - // explode the user answer. Each element in - // $useranswer is an old answer id, so needs to be updated - $useranswer = explode(",", $attempt->useranswer); - foreach ($useranswer as $oldanswerid) { - $backupdata = backup_getid($restore->backup_unique_code,"lesson_answers",$oldanswerid); - $newuseranswer[] = $backupdata->new_id; - } - // get the useranswer in the right format - $attempt->useranswer = implode(",", $newuseranswer); - // update it - update_record("lesson_attempts", $attempt); - } - } - } - } - } - - // backup branch table info for branch tables. - if ($status && $restore->mods["lesson"]->userinfo) { - if (!lesson_branch_restore($lessonid,$newid,$page_info,$restore)) { - return false; - } - } } else { $status = false; } } - - //We've restored all the pages and answers, we now need to fix the jumps in the - //answer records if they are absolute + + // we've restored all the pages and answers, we now need to fix the jumps in the + // answer records if they are absolute if ($answers = get_records("lesson_answers", "lessonid", $lessonid)) { foreach ($answers as $answer) { if ($answer->jumpto > 0) { // change the absolute page id - $page = backup_getid($restore->backup_unique_code,"lesson_pages",$answer->jumpto); - if ($page) { - if (!set_field("lesson_answers", "jumpto", $page->new_id, "id", $answer->id)) { - error("Lesson restorelib: unable to reset jump"); - } + if (!set_field("lesson_answers", "jumpto", $newpageid[$answer->jumpto], "id", + $answer->id)) { + error("Lesson restorelib: unable to reset jump"); } } } } + return $status; } @@ -257,16 +194,12 @@ //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug - //We'll need this later!! - $oldid = backup_todb($answer_info['#']['ID']['0']['#']); - //Now, build the lesson_answers record structure $answer->lessonid = $lessonid; $answer->pageid = $pageid; - // the absolute jumps will need fixing later + // the absolute jumps will need fixing $answer->jumpto = backup_todb($answer_info['#']['JUMPTO']['0']['#']); $answer->grade = backup_todb($answer_info['#']['GRADE']['0']['#']); - $answer->score = backup_todb($answer_info['#']['SCORE']['0']['#']); $answer->flags = backup_todb($answer_info['#']['FLAGS']['0']['#']); $answer->timecreated = backup_todb($answer_info['#']['TIMECREATED']['0']['#']); $answer->timemodified = backup_todb($answer_info['#']['TIMEMODIFIED']['0']['#']); @@ -286,10 +219,6 @@ } if ($newid) { - // need to store the id so we can update the useranswer - // field in attempts. This is done in the lesson_pages_restore_mods - backup_putid($restore->backup_unique_code,"lesson_answers", $oldid, $newid); - if ($restore->mods['lesson']->userinfo) { //We have to restore the lesson_attempts table now (a answers level table) $status = lesson_attempts_restore($lessonid, $pageid, $newid, $answer_info, $restore); @@ -330,7 +259,6 @@ $attempt->userid = backup_todb($attempt_info['#']['USERID']['0']['#']); $attempt->retry = backup_todb($attempt_info['#']['RETRY']['0']['#']); $attempt->correct = backup_todb($attempt_info['#']['CORRECT']['0']['#']); - $attempt->useranswer = backup_todb($attempt_info['#']['USERANSWER']['0']['#']); $attempt->timeseen = backup_todb($attempt_info['#']['TIMESEEN']['0']['#']); //We have to recode the userid field @@ -373,7 +301,7 @@ //traverse_xmlize($grade_info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug - + //We'll need this later!! $olduserid = backup_todb($grade_info['#']['USERID']['0']['#']); @@ -387,7 +315,7 @@ //We have to recode the userid field $user = backup_getid($restore->backup_unique_code,"user",$olduserid); if ($user) { - $grade->userid = $user->new_id; + $attempt->userid = $user->new_id; } //The structure is equal to the db, so insert the lesson_grade @@ -410,238 +338,13 @@ return $status; } - - - - //This function restores the lesson_branch - function lesson_branch_restore($lessonid, $pageid, $info, $restore) { - global $CFG; - - $status = true; - - //Get the branch array (optional) - if (isset($info['#']['BRANCHES']['0']['#']['BRANCH'])) { - $branches = $info['#']['BRANCHES']['0']['#']['BRANCH']; - //Iterate over branches - for($i = 0; $i < sizeof($branches); $i++) { - $branch_info = $branches[$i]; - //traverse_xmlize($branch_info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - - //We'll need this later!! - $olduserid = backup_todb($branch_info['#']['USERID']['0']['#']); - - //Now, build the lesson_attempts record structure - $branch->lessonid = $lessonid; - $branch->userid = backup_todb($branch_info['#']['USERID']['0']['#']); - $branch->pageid = $pageid; - $branch->retry = backup_todb($branch_info['#']['RETRY']['0']['#']); - $branch->flag = backup_todb($branch_info['#']['FLAG']['0']['#']); - $branch->timeseen = backup_todb($branch_info['#']['TIMESEEN']['0']['#']); - - //We have to recode the userid field - $user = backup_getid($restore->backup_unique_code,"user",$olduserid); - if ($user) { - $branch->userid = $user->new_id; - } - - //The structure is equal to the db, so insert the lesson_attempt - $newid = insert_record ("lesson_branch",$branch); - - //Do some output - if (($i+1) % 50 == 0) { - echo "."; - if (($i+1) % 1000 == 0) { - echo "<br>"; - } - backup_flush(300); - } - } - } - - return $status; - } - - //This function restores the lesson_timer - function lesson_timer_restore_mods($lessonid, $info, $restore) { - - global $CFG; - - $status = true; - //Get the timer array (optional) - if (isset($info['MOD']['#']['TIMES']['0']['#']['TIME'])) { - $times = $info['MOD']['#']['TIMES']['0']['#']['TIME']; - //Iterate over times - for($i = 0; $i < sizeof($times); $i++) { - $time_info = $times[$i]; - //traverse_xmlize($time_info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - - //We'll need this later!! - $olduserid = backup_todb($time_info['#']['USERID']['0']['#']); - - //Now, build the lesson_time record structure - $time->lessonid = $lessonid; - $time->userid = backup_todb($time_info['#']['USERID']['0']['#']); - $time->starttime = backup_todb($time_info['#']['STARTTIME']['0']['#']); - $time->lessontime = backup_todb($time_info['#']['LESSONTIME']['0']['#']); - - //We have to recode the userid field - $user = backup_getid($restore->backup_unique_code,"user",$olduserid); - if ($user) { - $time->userid = $user->new_id; - } - - //The structure is equal to the db, so insert the lesson_grade - $newid = insert_record ("lesson_timer",$time); - - //Do some output - if (($i+1) % 50 == 0) { - echo "."; - if (($i+1) % 1000 == 0) { - echo "<br>"; - } - backup_flush(300); - } - - if (!$newid) { - $status = false; - } - } - } - - return $status; - } - - //This function restores the lesson_high_scores - function lesson_high_scores_restore_mods($lessonid, $info, $restore) { - - global $CFG; - - $status = true; - - //Get the highscores array (optional) - if (isset($info['MOD']['#']['HIGHSCORES']['0']['#']['HIGHSCORE'])) { - $highscores = $info['MOD']['#']['HIGHSCORES']['0']['#']['HIGHSCORE']; - //Iterate over highscores - for($i = 0; $i < sizeof($highscores); $i++) { - $highscore_info = $highscores[$i]; - //traverse_xmlize($highscore_info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - - //We'll need this later!! - $olduserid = backup_todb($highscore_info['#']['USERID']['0']['#']); - - //Now, build the lesson_highscores record structure - $highscore->lessonid = $lessonid; - $highscore->userid = backup_todb($highscore_info['#']['USERID']['0']['#']); - $highscore->gradeid = backup_todb($highscore_info['#']['GRADEID']['0']['#']); - $highscore->nickname = backup_todb($highscore_info['#']['NICKNAME']['0']['#']); - - //We have to recode the userid field - $user = backup_getid($restore->backup_unique_code,"user",$olduserid); - if ($user) { - $highscore->userid = $user->new_id; - } - - //The structure is equal to the db, so insert the lesson_grade - $newid = insert_record ("lesson_high_scores",$highscore); - - //Do some output - if (($i+1) % 50 == 0) { - echo "."; - if (($i+1) % 1000 == 0) { - echo "<br>"; - } - backup_flush(300); - } - - if (!$newid) { - $status = false; - } - } - } - - return $status; - } - - //This function restores the lesson_default - function lesson_default_restore_mods($info, $restore) { - - global $CFG; - - $status = true; - - //Get the default array (optional) - if (isset($info['MOD']['#']['DEFAULTS'])) { - $defaults = $info['MOD']['#']['DEFAULTS']; - - //Iterate over defaults (should only be 1!) - for($i = 0; $i < sizeof($defaults); $i++) { - $default_info = $defaults[$i]; - //traverse_xmlize($default_info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - - //Now, build the lesson_default record structure - $default->course = $restore->course_id; - $default->practice = backup_todb($default_info['#']['PRACTICE']['0']['#']); - $default->modattempts = backup_todb($default_info['#']['MODATTEMPTS']['0']['#']); - $default->password = backup_todb($default_info['#']['PASSWORD']['0']['#']); - $default->usepassword = backup_todb($default_info['#']['USEPASSWORD']['0']['#']); - $default->grade = backup_todb($default_info['#']['GRADE']['0']['#']); - $default->custom = backup_todb($default_info['#']['CUSTOM']['0']['#']); - $default->ongoing = backup_todb($default_info['#']['ONGOING']['0']['#']); - $default->usemaxgrade = backup_todb($default_info['#']['USEMAXGRADE']['0']['#']); - $default->maxanswers = backup_todb($default_info['#']['MAXANSWERS']['0']['#']); - $default->maxattempts = backup_todb($default_info['#']['MAXATTEMPTS']['0']['#']); - $default->review = backup_todb($default_info['#']['REVIEW']['0']['#']); - $default->nextpagedefault = backup_todb($default_info['#']['NEXTPAGEDEFAULT']['0']['#']); - $default->minquestions = backup_todb($default_info['#']['MINQUESTIONS']['0']['#']); - $default->maxpages = backup_todb($default_info['#']['MAXPAGES']['0']['#']); - $default->timed = backup_todb($default_info['#']['TIMED']['0']['#']); - $default->maxtime = backup_todb($default_info['#']['MAXTIME']['0']['#']); - $default->retake = backup_todb($default_info['#']['RETAKE']['0']['#']); - $default->tree = backup_todb($default_info['#']['TREE']['0']['#']); - $default->slideshow = backup_todb($default_info['#']['SLIDESHOW']['0']['#']); - $default->width = backup_todb($default_info['#']['WIDTH']['0']['#']); - $default->height = backup_todb($default_info['#']['HEIGHT']['0']['#']); - $default->bgcolor = backup_todb($default_info['#']['BGCOLOR']['0']['#']); - $default->displayleft = backup_todb($default_info['#']['DISPLAYLEFT']['0']['#']); - $default->highscores = backup_todb($default_info['#']['HIGHSCORES']['0']['#']); - $default->maxhighscores = backup_todb($default_info['#']['MAXHIGHSCORES']['0']['#']); - - //The structure is equal to the db, so insert the lesson_grade - $newid = insert_record ("lesson_default",$default); - - //Do some output - if (($i+1) % 50 == 0) { - echo "."; - if (($i+1) % 1000 == 0) { - echo "<br>"; - } - backup_flush(300); - } - - if (!$newid) { - $status = false; - } - } - } - - return $status; - } - //This function returns a log record with all the necessay transformations //done. It's used by restore_log_module() to restore modules log. function lesson_restore_logs($restore,$log) { - + $status = false; - + //Depending of the action, we recode different things switch ($log->action) { case "add": diff --git a/mod/lesson/styles.php b/mod/lesson/styles.php deleted file mode 100644 index 8264befe806..00000000000 --- a/mod/lesson/styles.php +++ /dev/null @@ -1,34 +0,0 @@ -.mod-lesson img { - border:0; -} - -.mod-lesson .hidden-label { - display: none; -} - -.mod-lesson .footer { - padding-top:40px; margin-top:40px; -} - -.mod-lesson .footer a:link, .footer v:link, .footer a:visited { -} - -.mod-lesson .leftmenutable { - width:170px; - height:400px; - overflow:auto; - vertical-align:top; -} - -.mod-lesson .leftmenu a:link, .leftmenu a:active, .leftmenu a:visited, .leftmenu1 a:link, .leftmenu1 a:active, .leftmenu1 a:visited{ - font-size:.7em; - vertical-align:top; -} - -.mod-lesson .main a:link, .main a:active, .main a:visited{ - font-size:.9em; - vertical-align:top; -} - -.mod-lesson .viewpos { -} diff --git a/mod/lesson/timer.js b/mod/lesson/timer.js deleted file mode 100644 index 454ced24b5b..00000000000 --- a/mod/lesson/timer.js +++ /dev/null @@ -1,113 +0,0 @@ -/*///////////////////////////////////////////////////////// -// This code is based off of -// "Live Clock Lite" script - Version 1.0 -// By Mark Plachetta (astroboy@zip.com.au) -// -// The original script displayed a clock. -// Mark Nielsen modified it to be a countdown timer -// for the lesson module in moodle. -// -// Below is the code that is used to call this page. -// echo "<script language=\"javascript\">\n"; -// echo "var starttime = ". $timer->starttime . ";\n"; -// echo "var servertime = ". time() . ";\n"; -// echo "var testlength = ". $lesson->maxtime * 60 .";\n"; -// echo "document.write('<SCRIPT LANGUAGE=\"JavaScript\" SRC=\"liveclock_lite.js\"><\/SCRIPT>');\n"; -// echo "window.onload = function () { show_clock(); }"; -// echo "</script>\n"; -// -//////////////////////////////////////////////////////////*/ - - var myfont_face = "Arial"; - var myfont_size = "12"; - var myfont_color = "#000000"; - var myback_color = "#FFFFFF"; - var mywidth = 80; - var my12_hour = 1; - var stopclock = 0; - var myclock = ''; - var timeleft, hours, minutes, secs; - var javatimeDate = new Date(); - var javatime = javatimeDate.getTime(); - javatime = Math.floor(javatime/1000); - - difference = javatime - servertime; - starttime = starttime + difference; - - var dn = ""; - var old = ""; - - if (document.all||document.getElementById) { - document.write('<span id="LiveClockIE" style="width:'+mywidth+'px;"></span>'); - } else if (document.layers) { - document.write('<ilayer id="ClockPosNS"><layer width="'+mywidth+'" id="LiveClockNS"></layer></ilayer>'); - } else { - old = "true"; show_clock(); - } - - /*function leave() { // feable attempt to run a script when someone leaves a timed test early, failed so far - window.onunload = window.open('http://www.google.com','','toolbar=no,menubar=no,location=no,height=500,width=500'); - } - leave();*/ - - function show_clock() { - - //show clock in NS 4 - if (document.layers) - document.ClockPosNS.visibility="show" - if (old == "die") { return; } - - currentDate = new Date(); - current = currentDate.getTime(); - current = Math.floor(current/1000); - - if (current > starttime + testlength) { - myclock = ''; - myclock += '<font style="color:'+myfont_color+'; font-family:'+myfont_face+'; font-size:'+myfont_size+'pt;">'; - myclock += "Time is up"; - myclock += '</font>'; - stopclock = 1; - } else { - timeleft = starttime + testlength - current; - hours = Math.floor(timeleft/3600); - timeleft = timeleft - (hours * 3600); - minutes = Math.floor(timeleft/60); - secs = timeleft - (minutes * 60); - - if (secs < 10) { - secs = "0"+secs; - } - - myclock = ''; - myclock += '<font style="color:'+myfont_color+'; font-family:'+myfont_face+'; font-size:'+myfont_size+'pt;">'; - if (hours > 0) { - myclock += hours+":"; - if (minutes < 10) { - minutes = "0"+minutes; - } - } - myclock += minutes+":"+secs; - myclock += '</font>'; - } - - if (old == "true") { - document.write(myclock); - old = "die"; return; - } - - if (document.layers) { - clockpos = document.ClockPosNS; - liveclock = clockpos.document.LiveClockNS; - liveclock.document.write(myclock); - liveclock.document.close(); - } else if (document.all) { - LiveClockIE.innerHTML = myclock; - } else if (document.getElementById) { - document.getElementById("LiveClockIE").innerHTML = myclock; - } - - if (stopclock == 0) { - setTimeout("show_clock()",1000); - } -} - diff --git a/mod/lesson/version.php b/mod/lesson/version.php index 48a1296971b..a5601863e63 100644 --- a/mod/lesson/version.php +++ b/mod/lesson/version.php @@ -5,8 +5,8 @@ /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2005021600; // The current module version (Date: YYYYMMDDXX) -$module->requires = 2005021600; // Requires this Moodle version +$module->version = 2004060400; // The current module version (Date: YYYYMMDDXX) +$module->requires = 2004052501; // Requires this Moodle version $module->cron = 0; // Period for cron to check this module (secs) ?> diff --git a/mod/lesson/view.php b/mod/lesson/view.php index 3a5a3782076..f03e3fa18e3 100644 --- a/mod/lesson/view.php +++ b/mod/lesson/view.php @@ -3,177 +3,87 @@ /// This page prints a particular instance of lesson /// (Replace lesson with the name of your module) - require_once('../../config.php'); - require_once('locallib.php'); - require_once('lib.php'); + require_once("../../config.php"); + require_once("lib.php"); - $id = required_param('id', PARAM_INT); // Course Module ID - $pageid = optional_param('pageid', NULL, PARAM_INT); // Lesson Page ID + require_variable($id); // Course Module ID + optional_variable($pageid); // Lesson Page ID - if (! $cm = get_record('course_modules', 'id', $id)) { - error('Course Module ID was incorrect'); + if (! $cm = get_record("course_modules", "id", $id)) { + error("Course Module ID was incorrect"); } - if (! $course = get_record('course', 'id', $cm->course)) { - error('Course is misconfigured'); + if (! $course = get_record("course", "id", $cm->course)) { + error("Course is misconfigured"); } - if (! $lesson = get_record('lesson', 'id', $cm->instance)) { - error('Course module is incorrect'); + if (! $lesson = get_record("lesson", "id", $cm->instance)) { + error("Course module is incorrect"); } - require_login($course->id, false, $cm); + require_login($course->id); + /// Print the page header - if ($course->category) { - $navigation = '<a href="../../course/view.php?id='. $course->id .'">'. $course->shortname .'</a> ->'; - } + $strlessons = get_string("modulenameplural", "lesson"); + $strlesson = get_string("modulename", "lesson"); - $strlessons = get_string('modulenameplural', 'lesson'); - $strlesson = get_string('modulename', 'lesson'); - - /// CDC-FLAG moved the action up because I needed to know what the action will be before the header is printed - if (empty($action)) { - if (isteacher($course->id)) { - $action = 'teacherview'; - } elseif (time() < $lesson->available) { - print_header($course->shortname .': '. $lesson->name, $course->fullname, - $navigation .'<a href="index.php?id='. $course->id .'">'. $strlessons .'</a> -> '. - '<a href="view.php?id='. $cm->id .'">'. $lesson->name .'</a>', - '', '', true, '', navmenu($course, $cm)); - print_simple_box_start('center'); - echo '<div align="center">'; - echo get_string('lessonopen', 'lesson', userdate($lesson->available)).'<br />'; - echo '<a href="../../course/view.php?id='. $course->id .'">'. get_string('returnmainmenu', 'lesson') .'</a>'; - echo '</div>'; - print_simple_box_end(); - print_footer($course); - exit(); - } elseif (time() > $lesson->deadline) { - print_header($course->shortname .': '. $lesson->name, $course->fullname, - "$navigation <a href=\"index.php?id=$course->id\">$strlessons</a> -> <a href=\"view.php?id=$cm->id\">$lesson->name</a>", '', "", true, - '', navmenu($course, $cm)); - print_simple_box_start('center'); - echo '<div align="center">'; - echo get_string('lessonclosed', 'lesson', userdate($lesson->deadline)) .'<br />'; - echo '<a href="../../course/view.php?id='. $course->id. '">'. get_string('returnmainmenu', 'lesson') .'</a>'; - echo '</div>'; - print_simple_box_end(); - print_footer($course); - exit(); - } elseif ($lesson->highscores) { - $action = 'highscores'; - } else { - $action = 'navigation'; - } - } - - /// CDC-FLAG changed the update_module_button and added another button when a teacher is checking the navigation of the lesson - if (isteacheredit($course->id)) { - $button = '<table><tr><td>'; - $button .= '<form target="'. $CFG->framename .'" method="get" action="'. $CFG->wwwroot .'/course/mod.php">'. - '<input type="hidden" name="sesskey" value="'. $USER->sesskey .'" />'. - '<input type="hidden" name="update" value="'. $cm->id .'" />'. - '<input type="hidden" name="return" value="true" />'. - '<input type="submit" value="'. get_string('editlessonsettings', 'lesson') .'" /></form>'; - if ($action == 'navigation' && $pageid != LESSON_EOL) { - $button .= '</td><td>'. - '<form target="'. $CFG->framename .'" method="get" action="'. $CFG->wwwroot .'/mod/lesson/lesson.php">'. - '<input type="hidden" name="id" value="'. $cm->id .'" />'. - '<input type="hidden" name="action" value="editpage" />'. - '<input type="hidden" name="pageid" value="'. $pageid .'" />'. - '<input type="submit" value="'. get_string('editpagecontent', 'lesson') .'" /></form>'; - } - $button .= '</td></tr></table>'; - } else { - $button = ''; - } - - print_header($course->shortname .': '. $lesson->name, $course->fullname, - "$navigation <a href=\"index.php?id=$course->id\">$strlessons</a> -> <a href=\"view.php?id=$cm->id\">$lesson->name</a>", '', '', true, - $button, // took out update_module_button($cm->id, $course->id, $strlesson) and replaced it with $button + print_header_simple("$lesson->name", "", + "<A HREF=index.php?id=$course->id>$strlessons</A> -> <a href=\"view.php?id=$cm->id\">$lesson->name</a>", + "", "", true, update_module_button($cm->id, $course->id, $strlesson), navmenu($course, $cm)); // set up some general variables $usehtmleditor = can_use_html_editor(); - $path = $CFG->wwwroot .'/course'; + $path = "$CFG->wwwroot/course"; + if (empty($THEME->custompix)) { + $pixpath = "$path/../pix"; + } else { + $pixpath = "$path/../theme/$CFG->theme/pix"; + } + + if (empty($action)) { + if (isteacher($course->id)) { + $action = 'teacherview'; + } else { + $action = 'navigation'; + } + } /************** navigation **************************************/ if ($action == 'navigation') { - /// CDC-FLAG /// password protected lesson code - if ($lesson->usepassword && !isteacher($course->id)) { - $correctpass = false; - if (isset($_POST['userpassword'])) { - if ($lesson->password == md5(trim(clean_param($_POST['userpassword'], PARAM_CLEAN)))) { - $USER->lessonloggedin[$lesson->id] = true; - $correctpass = true; - } - } elseif (isset($USER->lessonloggedin[$lesson->id])) { - $correctpass = true; - } - - if (!$correctpass) { - print_simple_box_start('center'); - echo '<form name="password" method="post" action="view.php">' . "\n"; - echo '<input type="hidden" name="id" value="'. $cm->id .'" />' . "\n"; - echo '<input type="hidden" name="action" value="navigation" />' . "\n"; - echo '<table cellpadding="7px">'; - if (isset($_POST['userpassword'])) { - echo "<tr align=\"center\" style='color:#DF041E;'><td>".get_string('loginfail', 'lesson') .'</td></tr>'; - } - echo '<tr align="center"><td>'. get_string('passwordprotectedlesson', 'lesson', $lesson->name) .'</td></tr>'; - echo '<tr align="center"><td>'. get_string('enterpassword', 'lesson').' <input type="password" name="userpassword" /></td></tr>'; - - echo '<tr align="center"><td>'; - echo '<input type="button" value="'. get_string('cancel', 'lesson') .'" onclick="parent.location=\'../../course/view.php?id='. $course->id .'\';" /> '; - echo '<input type="button" value="'. get_string('continue', 'lesson') .'" onclick="document.password.submit();" />'; - echo '</td></tr></table>'; - print_simple_box_end(); - exit(); - } - } - - // this is called if a student leaves during a lesson - if($pageid == LESSON_UNSEENBRANCHPAGE) { - $pageid = lesson_unseen_question_jump($lesson->id, $USER->id, $pageid); - } - // display individual pages and their sets of answers // if pageid is EOL then the end of the lesson has been reached - // for flow, changed to simple echo for flow styles, michaelp, moved lesson name and page title down - //print_heading($lesson->name); - $timedflag = false; - $attemptflag = false; + print_heading($lesson->name); if (empty($pageid)) { - add_to_log($course->id, 'lesson', 'start', 'view.php?id='. $cm->id, $lesson->id, $cm->id); + add_to_log($course->id, "lesson", "start", "view.php?id=$cm->id", "$lesson->id", $cm->id); // if no pageid given see if the lesson has been started - if ($grades = get_records_select('lesson_grades', 'lessonid = '. $lesson->id .' AND userid = '. $USER->id, - 'grade DESC')) { + if ($grades = get_records_select("lesson_grades", "lessonid = $lesson->id AND userid = $USER->id", + "grade DESC")) { $retries = count($grades); } else { $retries = 0; } if ($retries) { - $attemptflag = true; + print_heading(get_string("attempt", "lesson", $retries + 1)); } - - if (isset($USER->modattempts[$lesson->id])) { - unset($USER->modattempts[$lesson->id]); // if no pageid, then student is NOT reviewing - } - // if there are any questions have been answered correctly in this attempt - if ($attempts = get_records_select('lesson_attempts', - "lessonid = $lesson->id AND userid = $USER->id AND retry = $retries AND - correct = 1", 'timeseen DESC')) { - + if ($attempts = get_records_select("lesson_attempts", + "lessonid = $lesson->id AND userid = $USER->id AND retry = $retries AND + correct = 1", "timeseen DESC")) { + // get the first page + if (!$firstpageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, + "prevpageid", 0)) { + error("Navigation: first page not found"); + } foreach ($attempts as $attempt) { - $jumpto = get_field('lesson_answers', 'jumpto', 'id', $attempt->answerid); + $jumpto = get_field("lesson_answers", "jumpto", "id", $attempt->answerid); // convert the jumpto to a proper page id if ($jumpto == 0) { // unlikely value! $lastpageseen = $attempt->pageid; } elseif ($jumpto == LESSON_NEXTPAGE) { - if (!$lastpageseen = get_field('lesson_pages', 'nextpageid', 'id', + if (!$lastpageseen = get_field("lesson_pages", "nextpageid", "id", $attempt->pageid)) { // no nextpage go to end of lesson $lastpageseen = LESSON_EOL; @@ -181,343 +91,70 @@ } else { $lastpageseen = $jumpto; } - break; // only look at the latest correct attempt + break; // only look at the latest correct attempt } - } else { - $attempts = NULL; - } - - if ($branchtables = get_records_select('lesson_branch', - "lessonid = $lesson->id AND userid = $USER->id AND retry = $retries", 'timeseen DESC')) { - // in here, user has viewed a branch table - $lastbranchtable = current($branchtables); - if ($attempts != NULL) { - foreach($attempts as $attempt) { - if ($lastbranchtable->timeseen > $attempt->timeseen) { - // branch table was viewed later than the last attempt - $lastpageseen = $lastbranchtable->pageid; - } - break; - } - } else { - // hasnt answered any questions but has viewed a branch table - $lastpageseen = $lastbranchtable->pageid; - } - - } - //if ($lastpageseen != $firstpageid) { - if (isset($lastpageseen) and count_records('lesson_attempts', 'lessonid', $lesson->id, 'userid', $USER->id, 'retry', $retries) > 0) { - // get the first page - if (!$firstpageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, - 'prevpageid', 0)) { - error('Navigation: first page not found'); - } - /// CDC-FLAG /// - if ($lesson->timed) { - if ($lesson->retake) { - echo '<form name="queryform" method ="post" action="view.php">' . "\n"; - echo '<input type="hidden" name="id" value="'. $cm->id .'" />' . "\n"; - echo '<input type="hidden" name="action" value="navigation" />' . "\n"; - echo '<input type="hidden" name="pageid" />' . "\n"; - echo '<input type="hidden" name="startlastseen" />' . "\n"; /// CDC-FLAG added this line - print_simple_box('<p align="center">'. get_string('leftduringtimed', 'lesson') .'</p>', 'center'); - echo '<p align="center"><input type="button" value="'. get_string('continue', 'lesson'). - "\" onclick=\"document.queryform.pageid.value='$firstpageid';document.queryform.startlastseen.value='no';document.queryform.submit();\" /></p>\n"; /// CDC-FLAG added document.queryform.startlastseen.value='yes' - echo '</form>' . "\n"; - echo '</div></div>';///CDC Chris Berri added close div tag - } else { - print_simple_box_start('center'); - echo '<div align="center">'; - echo get_string('leftduringtimednoretake', 'lesson'); - echo '<br /><br /><a href="../../course/view.php?id='. $course->id .'">'. get_string('returntocourse', 'lesson') .'</a>'; - echo '</div>'; - print_simple_box_end(); - } - - } else { + if ($lastpageseen != $firstpageid) { echo "<form name=\"queryform\" method =\"post\" action=\"view.php\">\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n"; - echo "<input type=\"hidden\" name=\"action\" value=\"navigation\" />\n"; - echo "<input type=\"hidden\" name=\"pageid\" />\n"; - echo "<input type=\"hidden\" name=\"startlastseen\" />\n"; /// CDC-FLAG added this line - print_simple_box("<p align=\"center\">".get_string('youhaveseen','lesson').'</p>', + echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"navigation\">\n"; + echo "<input type=\"hidden\" name=\"pageid\">\n"; + print_simple_box("<p align=\"center\">".get_string("youhaveseen","lesson")."</p>", "center"); - echo "<p align=\"center\"><input type=\"button\" value=\"".get_string('yes'). - "\" onclick=\"document.queryform.pageid.value='$lastpageseen';document.queryform.startlastseen.value='yes';document.queryform.submit();\" />&nbsp;&nbsp;&nbsp;<input type=\"button\" value=\"".get_string("no"). /// CDC-FLAG 6/11/04 /// - "\" onclick=\"document.queryform.pageid.value='$firstpageid';document.queryform.startlastseen.value='no';document.queryform.submit();\" /></p>\n"; /// CDC-FLAG added document.queryform.startlastseen.value='yes' - echo "</form>\n"; echo "</div></div>";///CDC Chris Berri added close div tag + echo "<p align=\"center\"><input type=\"button\" value=\"".get_string("yes"). + "\" onclick=\"document.queryform.pageid.value='$lastpageseen';document.queryform.submit();\">&nbsp;&nbsp;&nbsp;<input type=\"button\" value=\"".get_string("no"). + "\" onclick=\"document.queryform.pageid.value='$firstpageid';document.queryform.submit();\"></p>\n"; + echo "</form>\n"; + print_footer($course); + exit(); } - print_footer($course); - exit(); } - if ($grades) { foreach ($grades as $grade) { $bestgrade = $grade->grade; break; } if (!$lesson->retake) { - print_simple_box_start('center'); - echo "<div align=\"center\">"; - echo get_string("noretake", "lesson"); - echo "<br /><br /><a href=\"../../course/view.php?id=$course->id\">".get_string('returntocourse', 'lesson').'</a>'; - echo "</div>"; - print_simple_box_end(); - print_footer($course); - exit(); - //redirect("../../course/view.php?id=$course->id", get_string("alreadytaken", "lesson")); + redirect("../../course/view.php?id=$course->id", get_string("alreadytaken", "lesson")); // allow student to retake course even if they have the maximum grade // } elseif ($bestgrade == 100) { - // redirect("../../course/view.php?id=$course->id", get_string("maximumgradeachieved", + // redirect("../../course/view.php?id=$course->id", get_string("maximumgradeachieved", // "lesson")); } } // start at the first page - if (!$pageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0)) { - error('Navigation: first page not found'); + if (!$pageid = get_field("lesson_pages", "id", "lessonid", $lesson->id, "prevpageid", 0)) { + error("Navigation: first page not found"); } - /// CDC-FLAG /// -- This is the code for starting a timed test - if(!isset($USER->startlesson[$lesson->id]) && !isteacher($course->id)) { - $USER->startlesson[$lesson->id] = true; - $startlesson = new stdClass; - $startlesson->lessonid = $lesson->id; - $startlesson->userid = $USER->id; - $startlesson->starttime = time(); - $startlesson->lessontime = time(); - - if (!insert_record('lesson_timer', $startlesson)) { - error('Error: could not insert row into lesson_timer table'); - } - if ($lesson->timed) { - $timedflag = true; - } - } - /// CDC-FLAG /// } - if ($pageid != LESSON_EOL) { - /// This is the code updates the lessontime for a timed test - if (isset($_POST['startlastseen'])) { /// this deletes old records not totally sure if this is necessary anymore - if ($_POST['startlastseen'] == 'no') { - if ($grades = get_records_select('lesson_grades', "lessonid = $lesson->id AND userid = $USER->id", - 'grade DESC')) { - $retries = count($grades); - } else { - $retries = 0; - } - // NoticeFix big fix on the two delete_records - if (!delete_records('lesson_attempts', 'userid', $USER->id, 'lessonid', $lesson->id, 'retry', $retries)) { - error('Error: could not delete old attempts'); - } - if (!delete_records('lesson_branch', 'userid', $USER->id, 'lessonid', $lesson->id, 'retry', $retries)) { - error('Error: could not delete old seen branches'); - } - } + add_to_log($course->id, "lesson", "view", "view.php?id=$cm->id", "$pageid", $cm->id); + if (!$page = get_record("lesson_pages", "id", $pageid)) { + error("Navigation: the page record not found"); } - - add_to_log($course->id, 'lesson', 'view', 'view.php?id='. $cm->id, $pageid, $cm->id); - if (!$page = get_record('lesson_pages', 'id', $pageid)) { - error('Navigation: the page record not found'); - } - - if ($page->qtype == LESSON_CLUSTER) { //this only gets called when a user starts up a new lesson and the first page is a cluster page - if (!isteacher($course->id)) { - // get new id - $pageid = lesson_cluster_jump($lesson->id, $USER->id, $pageid); - // get new page info - if (!$page = get_record('lesson_pages', 'id', $pageid)) { - error('Navigation: the page record not found'); - } - add_to_log($course->id, 'lesson', 'view', 'view.php?id='. $cm->id, $pageid, $cm->id); - } else { - // get the next page - $pageid = $page->nextpageid; - if (!$page = get_record('lesson_pages', 'id', $pageid)) { - error('Navigation: the page record not found'); - } - } - } elseif ($page->qtype == LESSON_ENDOFCLUSTER) { - if ($page->nextpageid == 0) { - $nextpageid = LESSON_EOL; - } else { - $nextpageid = $page->nextpageid; - } - redirect("view.php?id=$cm->id&amp;action=navigation&amp;pageid=$nextpageid", get_string('endofclustertitle', 'lesson')); - } - - // start of left menu - if ($lesson->displayleft) { - echo '<table><tr valign="top"><td>'; - if($firstpageid = get_field('lesson_pages', 'id', 'lessonid', $lesson->id, 'prevpageid', 0)) { - // print the pages - echo '<form name="lessonpages2" method="post" action="view.php">'; - echo '<input type="hidden" name="id" value="'. $cm->id .'" />'; - echo '<input type="hidden" name="action" value="navigation" />'; - echo '<input type="hidden" name="pageid" />'; - echo "<table><tr><td valign=\"top\">"; - echo "<div class=\"leftmenutable\">".get_string('lessonmenu', 'lesson')."<br />"; - echo "<div class=\"main\">"; - echo "<a href=\"../../course/view.php?id=$course->id\">".get_string("mainmenu", "lesson")."</a><br />"; echo "</div>"; - echo '<div class="leftmenu">'; - lesson_print_tree_menu($lesson->id, $firstpageid, $cm->id); - echo '</div></div></td></tr></table>'; //close lmlinks - echo '</form>'; - } - echo '</td><td align="center" width="100%">'; - } elseif ($lesson->slideshow && $page->qtype == LESSON_BRANCHTABLE) { - echo '<table align="center"><tr><td>'; // only want this if no left menu - } - - // starts the slideshow div - if($lesson->slideshow && $page->qtype == LESSON_BRANCHTABLE) { - echo "<div style=\" - background-color: $lesson->bgcolor; - height: ".$lesson->height."px; - width: ".$lesson->width."px; - overflow: auto; - border: 0px solid #ccc; - padding-right: 16px; /* for the benefit of macIE5 only */ - /* \ commented backslash hack - recover from macIE5 workarounds, it will ignore the following rule */ - padding-right: 0; - padding: 15px; - \">\n"; - echo "<table align=\"center\" width=\"100%\" border=\"0\"><tr><td>\n"; - } else { - echo "<table align=\"center\" width=\"100%\" border=\"0\"><tr><td>\n"; - $lesson->slideshow = false; // turn off slide show for all pages other than LESSON_BRANTCHTABLE - } - - // This is where several messages (usually warnings) are displayed - // all of this is displayed above the actual page - - // clock code - // get time information for this user - if(!isteacher($course->id)) { - if (!$timer = get_records_select('lesson_timer', "lessonid = $lesson->id AND userid = $USER->id", 'starttime')) { - error('Error: could not find records'); - } else { - $timer = array_pop($timer); // this will get the latest start time record - } - } - - if (isset($_POST['startlastseen'])) { - if ($_POST['startlastseen'] == 'yes') { // continue a previous test, need to update the clock (think this option is disabled atm) - $timer->starttime = time() - ($timer->lessontime - $timer->starttime); - $timer->lessontime = time(); - } elseif ($_POST['startlastseen'] == 'no') { // starting over - // starting over, so reset the clock - $timer->starttime = time(); - $timer->lessontime = time(); - } - } - - // for timed lessons, display clock - if ($lesson->timed) { - if(isteacher($course->id)) { - echo '<p align="center">'. get_string('teachertimerwarning', 'lesson') .'<p>'; - } else { - if ((($timer->starttime + $lesson->maxtime * 60) - time()) > 0) { - // code for the clock - print_simple_box_start("right", "150px", "#ffffff", 0); - echo "<table border=\"0\" valign=\"top\" align=\"center\" class=\"generaltable\" width=\"100%\" cellspacing=\"0\">". - "<tr><th valign=\"top\" class=\"generaltableheader\">".get_string("timeremaining", "lesson"). - "</th></tr><tr><td align=\"center\" class=\"generaltablecell\">"; - echo "<script language=\"javascript\">\n"; - echo "var starttime = ". $timer->starttime . ";\n"; - echo "var servertime = ". time() . ";\n"; - echo "var testlength = ". $lesson->maxtime * 60 .";\n"; - echo "document.write('<SCRIPT LANGUAGE=\"JavaScript\" SRC=\"timer.js\"><\/SCRIPT>');\n"; - echo "window.onload = function () { show_clock(); }\n"; - echo "</script>\n"; - echo "</td></tr></table>"; - print_simple_box_end(); - echo "<br /><br /><br />"; - } else { - redirect("view.php?id=$cm->id&amp;action=navigation&amp;pageid=".LESSON_EOL."&amp;outoftime=normal", get_string("outoftime", "lesson")); - } - // update clock when viewing a new page... no special treatment - if ((($timer->starttime + $lesson->maxtime * 60) - time()) < 60) { - echo "<p align=\"center\">".get_string('studentoneminwarning', 'lesson')."</p>"; - } - - if ($timedflag) { - print_simple_box(get_string('maxtimewarning', 'lesson', $lesson->maxtime), 'center'); - } - } - } - - // update the clock - if (!isteacher($course->id)) { - $timer->lessontime = time(); - if (!update_record('lesson_timer', $timer)) { - error('Error: could not update lesson_timer table'); - } - } - - if ($attemptflag) { - print_heading(get_string('attempt', 'lesson', $retries + 1)); - } - - // before we output everything check to see if the page is a EOB, if so jump directly + // before we output everything check to see if the page is a EOB, if so jump directly // to it's associated branch table if ($page->qtype == LESSON_ENDOFBRANCH) { - if ($answers = get_records('lesson_answers', 'pageid', $page->id, 'id')) { - // print_heading(get_string('endofbranch', 'lesson')); + if ($answers = get_records("lesson_answers", "pageid", $page->id, "id")) { + // print_heading(get_string("endofbranch", "lesson")); foreach ($answers as $answer) { // just need the first answer - /// CDC-FLAG 6/21/04 /// - if ($answer->jumpto == LESSON_RANDOMBRANCH) { - $answer->jumpto = lesson_unseen_branch_jump($lesson->id, $USER->id); - } elseif ($answer->jumpto == LESSON_CLUSTERJUMP) { - if (!isteacher($course->id)) { - $answer->jumpto = lesson_cluster_jump($lesson->id, $USER->id, $pageid); - } else { - if ($page->nextpageid == 0) { - $answer->jumpto = LESSON_EOL; - } else { - $answer->jumpto = $page->nextpageid; - } - } - } - /// CDC-FLAG /// - redirect("view.php?id=$cm->id&amp;action=navigation&amp;pageid=$answer->jumpto", + redirect("view.php?id=$cm->id&action=navigation&pageid=$answer->jumpto", get_string("endofbranch", "lesson")); break; - } + } print_footer($course); exit(); } else { - error('Navigation: No answers on EOB'); + error("Navigation: No answers on EOB"); } } - - /// This is the warning msg for teachers to inform them that cluster and unseen does not work while logged in as a teacher - if(isteacher($course->id)) { - if (execute_teacherwarning($lesson->id)) { - $warningvars->cluster = get_string('clusterjump', 'lesson'); - $warningvars->unseen = get_string('unseenpageinbranch', 'lesson'); - echo '<p align="center">'. get_string('teacherjumpwarning', 'lesson', $warningvars) .'</p>'; - } - } - - /// this calculates the ongoing score - if ($lesson->ongoing && !empty($pageid)) { - if (isteacher($course->id)) { - echo "<p align=\"center\">".get_string('teacherongoingwarning', 'lesson').'</p>'; - } else { - $ntries = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); - if (isset($USER->modattempts[$lesson->id])) { - $ntries--; - } - lesson_calculate_ongoing_score($lesson, $USER->id, $ntries); - } - } - + // it's not a EOB process it... + echo "<table align=\"center\" width=\"80%\" border=\"0\"><tr><td>\n"; if ($page->qtype == LESSON_BRANCHTABLE) { if ($lesson->minquestions and isstudent($course->id)) { // tell student how many questions they have seen, how many are required and their grade $ntries = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); - $nviewed = count_records("lesson_attempts", "lessonid", $lesson->id, "userid", + $nviewed = count_records("lesson_attempts", "lessonid", $lesson->id, "userid", $USER->id, "retry", $ntries); if ($nviewed) { echo "<p align=\"center\">".get_string("numberofpagesviewed", "lesson", $nviewed). @@ -537,290 +174,134 @@ } echo get_string("numberofcorrectanswers", "lesson", $ncorrect)."<br />\n"; $thegrade = intval(100 * $ncorrect / $nviewed); - echo get_string("yourcurrentgradeis", "lesson", + echo get_string("yourcurrentgradeis", "lesson", number_format($thegrade * $lesson->grade / 100, 1)). " (".get_string("outof", "lesson", $lesson->grade).")</p>\n"; } } } - - // now starting to print the page's contents - echo "<div align=\"center\">"; - echo "<em><strong>"; - echo ($lesson->name) . "</strong></em>"; - if ($page->qtype == LESSON_BRANCHTABLE) { - echo ":<br />"; - print_heading($page->title); - } - echo "</div><br />"; - - if ($lesson->slideshow) { - echo format_text($page->contents); - } else { - print_simple_box(format_text($page->contents), 'center'); - } + print_heading($page->title); + print_simple_box(format_text($page->contents), 'center'); echo "<br />\n"; - - // this is for modattempts option. Find the users previous answer to this page, - // and then display it below in answer processing - if (isset($USER->modattempts[$lesson->id])) { - $retries = count_records('lesson_grades', "lessonid", $lesson->id, "userid", $USER->id); - $retries--; - if (! $attempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND userid = $USER->id AND pageid = $page->id AND retry = $retries", "timeseen")) { - error("Previous attempt record could not be found!"); - } - $attempt = end($attempts); - } - // get the answers in a set order, the id order if ($answers = get_records("lesson_answers", "pageid", $page->id, "id")) { echo "<form name=\"answerform\" method =\"post\" action=\"lesson.php\">"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />"; - echo "<input type=\"hidden\" name=\"action\" value=\"continue\" />"; - echo "<input type=\"hidden\" name=\"pageid\" value=\"$pageid\" />"; - echo "<input type=\"hidden\" name=\"sesskey\" value=\"".$USER->sesskey."\" />"; - if (!$lesson->slideshow) { - print_simple_box_start("center"); - echo '<table width="100%">'; - } + echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">"; + echo "<input type=\"hidden\" name=\"action\" value=\"continue\">"; + echo "<input type=\"hidden\" name=\"pageid\" value=\"$pageid\">"; + print_simple_box_start("center"); + echo '<table width="100%">'; switch ($page->qtype) { case LESSON_SHORTANSWER : case LESSON_NUMERICAL : - if (isset($USER->modattempts[$lesson->id])) { - $value = "value=\"$attempt->useranswer\""; - } else { - $value = ""; - } echo "<tr><td align=\"center\">".get_string("youranswer", "lesson"). - ": <label for=\"answer\" class=\"hidden-label\">Answer</label><input type=\"text\" id=\"answer\" name=\"answer\" size=\"50\" maxlength=\"200\" $value />\n"; //CDC hidden label added. + ": <input type=\"text\" name=\"answer\" size=\"50\" maxlength=\"200\">\n"; echo '</table>'; print_simple_box_end(); echo "<p align=\"center\"><input type=\"submit\" name=\"continue\" value=\"". - get_string("pleaseenteryouranswerinthebox", "lesson")."\" /></p>\n"; + get_string("pleaseenteryouranswerinthebox", "lesson")."\"></p>\n"; break; case LESSON_TRUEFALSE : shuffle($answers); foreach ($answers as $answer) { - echo "<tr><td valign=\"top\">"; - if (isset($USER->modattempts[$lesson->id]) && $answer->id == $attempt->answerid) { - $checked = "checked=\"checked\""; - } else { - $checked = ""; - } - echo "<label for=\"answerid\" class=\"hidden-label\">Answer ID</label><input type=\"radio\" id=\"answerid\" name=\"answerid\" value=\"{$answer->id}\" $checked />"; //CDC hidden label added. + echo "<tr><td>"; + echo "<input type=\"radio\" name=\"answerid\" value=\"{$answer->id}\">"; echo "</td><td>"; $options->para = false; // no <p></p> echo format_text(trim($answer->answer), FORMAT_MOODLE, $options); echo "</td></tr>"; - if ($answer != end($answers)) { - echo "<tr><td><br></td></tr>"; - } } echo '</table>'; print_simple_box_end(); echo "<p align=\"center\"><input type=\"submit\" name=\"continue\" value=\"". - get_string("pleasecheckoneanswer", "lesson")."\" /></p>\n"; + get_string("pleasecheckoneanswer", "lesson")."\"></p>\n"; break; case LESSON_MULTICHOICE : $i = 0; shuffle($answers); foreach ($answers as $answer) { - echo "<tr><td valign=\"top\">"; + echo "<tr><td>"; if ($page->qoption) { - $checked = ""; - if (isset($USER->modattempts[$lesson->id])) { - $answerids = explode(",", $attempt->useranswer); - if (in_array($answer->id, $answerids)) { - $checked = "checked=\"checked\""; - } else { - $checked = ""; - } - } - // more than one answer allowed - echo "<label for=\"answer[$i]\" class=\"hidden-label\">answer[$i]</label><input type=\"checkbox\" id=\"answer[$i]\" name=\"answer[$i]\" value=\"{$answer->id}\" $checked />"; //CDC hidden label added. + // more than one answer allowed + echo "<input type=\"checkbox\" name=\"answer[$i]\" value=\"{$answer->id}\">"; } else { - if (isset($USER->modattempts[$lesson->id]) && $answer->id == $attempt->answerid) { - $checked = "checked=\"checked\""; - } else { - $checked = ""; - } // only one answer allowed - echo "<label for=\"answerid\" class=\"hidden-label\">answer id</label><input type=\"radio\" id=\"answerid\" name=\"answerid\" value=\"{$answer->id}\" $checked />"; //CDC hidden label added. + echo "<input type=\"radio\" name=\"answerid\" value=\"{$answer->id}\">"; } echo "</td><td>"; $options->para = false; // no <p></p> - echo format_text(trim($answer->answer), FORMAT_MOODLE, $options); + echo format_text(trim($answer->answer), FORMAT_MOODLE, $options); echo "</td></tr>"; - if ($answer != end($answers)) { - echo "<tr><td><br></td></tr>"; - } $i++; } echo '</table>'; print_simple_box_end(); if ($page->qoption) { echo "<p align=\"center\"><input type=\"submit\" name=\"continue\" value=\"". - get_string("pleasecheckoneormoreanswers", "lesson")."\" /></p>\n"; + get_string("pleasecheckoneormoreanswers", "lesson")."\"></p>\n"; } else { echo "<p align=\"center\"><input type=\"submit\" name=\"continue\" value=\"". - get_string("pleasecheckoneanswer", "lesson")."\" /></p>\n"; + get_string("pleasecheckoneanswer", "lesson")."\"></p>\n"; } break; - - /// CDC-FLAG /// 6/14/04 --- changed how matching works + case LESSON_MATCHING : echo "<tr><td><table width=\"100%\">"; // don't suffle answers (could be an option??) foreach ($answers as $answer) { - // get all the response - if ($answer->response != NULL) { - $responses[] = trim($answer->response); - } + // get all the responses + $responses[] = trim($answer->response); } shuffle($responses); - $responses = array_unique($responses); - - if (isset($USER->modattempts[$lesson->id])) { - $useranswers = explode(",", $attempt->useranswer); - $t = 0; - } foreach ($answers as $answer) { - if ($answer->response != NULL) { - echo "<tr><td align=\"right\">"; - echo "<b>$answer->answer: </b></td><td valign=\"bottom\">"; - echo "<label for=\"response[$answer->id]\" class=\"hidden-label\">response[$answer->id]</label><select id=\"response[$answer->id]\" name=\"response[$answer->id]\">"; //CDC hidden label added. - if (isset($USER->modattempts[$lesson->id])) { - $selected = trim($answers[$useranswers[$t]]->response); - echo "<option value=\"$selected\" selected=\"selected\">$selected</option>"; - foreach ($responses as $response) { - if (trim($answers[$useranswers[$t]]->response) != $response) { - echo "<option value=\"$response\">$response</option>"; - } - } - $t++; - } else { - echo "<option value=\"0\" selected=\"selected\">Choose...</option>"; - foreach ($responses as $response) { - echo "<option value=\"$response\">$response</option>"; - } - } - echo "</select>"; - echo "</td></tr>"; - if ($answer != end($answers)) { - echo "<tr><td><br></td></tr>"; - } + echo "<tr><td align=\"right\">"; + echo "<b>$answer->answer: </b></td><td>"; + echo "<select name=\"response[$answer->id]\">"; + echo "<option value=\"0\" selected=\"selected\">Choose...</option>"; + foreach ($responses as $response) { + echo "<option value=\"$response\">$response</option>"; } + echo "</select>"; + echo "</td></tr>"; } echo '</table></table>'; print_simple_box_end(); echo "<p align=\"center\"><input type=\"submit\" name=\"continue\" value=\"". - get_string("pleasematchtheabovepairs", "lesson")."\" /></p>\n"; + get_string("pleasematchtheabovepairs", "lesson")."\"></p>\n"; break; - case LESSON_BRANCHTABLE : - if ($lesson->slideshow) { - echo "</table></div><table cellpadding=\"5\" cellspacing=\"5\" align=\"center\">"; - } else { - echo "<tr><td><table width=\"100%\">"; - } - echo "<input type=\"hidden\" name=\"jumpto\" />"; - $nextprevious = array(); - $otherjumps = array(); - // seperate out next and previous jumps from the other jumps + case LESSON_BRANCHTABLE : + echo "<tr><td><table width=\"100%\">"; + echo "<input type=\"hidden\" name=\"jumpto\">"; + // don't suffle answers foreach ($answers as $answer) { - if($answer->jumpto == LESSON_NEXTPAGE || $answer->jumpto == LESSON_PREVIOUSPAGE) { - $nextprevious[] = $answer; - } else { - $otherjumps[] = $answer; - } + echo "<tr><td align=\"center\">"; + echo "<input type=\"button\" value=\"$answer->answer\""; + echo "onclick=\"document.answerform.jumpto.value=$answer->jumpto;document.answerform.submit();\">"; + echo "</td></tr>"; } - if ($page->layout) { - echo "<tr>"; - // next 3 foreach loops print out the links in correct order - foreach ($nextprevious as $jump) { - if ($jump->jumpto == LESSON_PREVIOUSPAGE) { - echo "<td align=\"left\"><input type=\"button\" onclick=\"document.answerform.jumpto.value=$jump->jumpto;document.answerform.submit();\"". - "value = \"$jump->answer\" /></td>"; - } - } - echo "<td align=\"center\"><table><tr>"; - foreach ($otherjumps as $otherjump) { - echo "<td><input type=\"button\" onclick=\"document.answerform.jumpto.value=$otherjump->jumpto;document.answerform.submit();\"". - "value = \"$otherjump->answer\" /></td>"; - } - echo "</tr></table></td>"; - foreach ($nextprevious as $jump) { - if ($jump->jumpto == LESSON_NEXTPAGE) { - echo "<td align=\"right\"><input type=\"button\" onclick=\"document.answerform.jumpto.value=$jump->jumpto;document.answerform.submit();\"". - "value = \"$jump->answer\" /></td>"; - } - } - echo "</tr>"; - } else { - // next 3 foreach loops print out the links in correct order - foreach ($nextprevious as $jump) { - if ($jump->jumpto == LESSON_NEXTPAGE) { - echo "<tr><td><input type=\"button\" onclick=\"document.answerform.jumpto.value=$jump->jumpto;document.answerform.submit();\"". - "value = \"$jump->answer\" /></td></tr>"; - } - } - foreach ($otherjumps as $otherjump) { - echo "<tr><td><input type=\"button\" onclick=\"document.answerform.jumpto.value=$otherjump->jumpto;document.answerform.submit();\"". - "value = \"$otherjump->answer\" /></td></tr>"; - } - foreach ($nextprevious as $jump) { - if ($jump->jumpto == LESSON_PREVIOUSPAGE) { - echo "<tr><td><input type=\"button\" onclick=\"document.answerform.jumpto.value=$jump->jumpto;document.answerform.submit();\"". - "value = \"$jump->answer\" /></td></tr>"; - } - } - } - - /* if(!$lesson->slideshow) { - foreach ($answers as $answer) { - echo "<tr><td align=\"center\">"; - echo "<input type=\"button\" value=\"$answer->answer\""; - echo "onclick=\"document.answerform.jumpto.value=$answer->jumpto;document.answerform.submit();\" />"; - echo "</td></tr>"; - } - }*/ - if (!$lesson->slideshow) { - echo '</table></table>'; - print_simple_box_end(); - } - break; - case LESSON_ESSAY : - if (isset($USER->modattempts[$lesson->id])) { - $essayinfo = unserialize($attempt->useranswer); - $value = $essayinfo->answer; - } else { - $value = ""; - } - echo "<tr><td align=\"center\" valign=\"top\" nowrap>".get_string("youranswer", "lesson").":</td><td>". - "<label for=\"answer\" class=\"hidden-label\">Answer</label><textarea id=\"answer\" name=\"answer\" rows=\"15\" cols=\"60\">$value</textarea>\n"; //CDC hidden label added. - echo "</td></tr></table>"; + echo '</table></table>'; print_simple_box_end(); - echo "<p align=\"center\"><input type=\"submit\" name=\"continue\" value=\"". - get_string("pleaseenteryouranswerinthebox", "lesson")."\" /></p>\n"; break; + } - echo "</form>\n"; + echo "</form>\n"; } else { // a page without answers - find the next (logical) page echo "<form name=\"pageform\" method =\"post\" action=\"view.php\">\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n"; - echo "<input type=\"hidden\" name=\"action\" value=\"navigation\" />\n"; + echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"navigation\">\n"; if ($lesson->nextpagedefault) { // in Flash Card mode... // ...first get number of retakes - $nretakes = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); + $nretakes = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); // ...then get the page ids (lessonid the 5th param is needed to make get_records play) $allpages = get_records("lesson_pages", "lessonid", $lesson->id, "id", "id,lessonid"); shuffle ($allpages); $found = false; if ($lesson->nextpagedefault == LESSON_UNSEENPAGE) { foreach ($allpages as $thispage) { - if (!count_records("lesson_attempts", "pageid", $thispage->id, "userid", + if (!count_records("lesson_attempts", "pageid", $thispage->id, "userid", $USER->id, "retry", $nretakes)) { $found = true; break; @@ -854,284 +335,72 @@ $newpageid = LESSON_EOL; } } - echo "<input type=\"hidden\" name=\"pageid\" value=\"$newpageid\" />\n"; + echo "<input type=\"hidden\" name=\"pageid\" value=\"$newpageid\">\n"; echo "<p align=\"center\"><input type=\"submit\" name=\"continue\" value=\"". - get_string("continue", "lesson")."\" /></p>\n"; + get_string("continue", "lesson")."\"></p>\n"; echo "</form>\n"; } - echo "</table>\n"; + echo "</table>\n"; } else { // end of lesson reached work out grade - /// CDC-FLAG /// - if ($lesson->timed && !isteacher($course->id)) { - if (isset($_GET["outoftime"])) { - if ($_GET["outoftime"] == "normal") { - print_simple_box(get_string("eolstudentoutoftime", "lesson"), "center"); - } - } - } - if (isset($USER->lessonloggedin[$lesson->id])) { - unset($USER->lessonloggedin[$lesson->id]); - } - // Update the clock / get time information for this user - if (!isteacher($course->id)) { - unset($USER->startlesson[$lesson->id]); - if (!$timer = get_records_select('lesson_timer', "lessonid = $lesson->id AND userid = $USER->id", 'starttime')) { - error('Error: could not find records'); - } else { - $timer = array_pop($timer); // this will get the latest start time record - } - $timer->lessontime = time(); - - if (!update_record("lesson_timer", $timer)) { - error("Error: could not update lesson_timer table"); - } - } - add_to_log($course->id, "lesson", "end", "view.php?id=$cm->id", "$lesson->id", $cm->id); print_heading(get_string("congratulations", "lesson")); print_simple_box_start("center"); $ntries = count_records("lesson_grades", "lessonid", $lesson->id, "userid", $USER->id); - if (isset($USER->modattempts[$lesson->id])) { - $ntries--; // need to look at the old attempts :) - } if (isstudent($course->id)) { - if ($nviewed = count_records("lesson_attempts", "lessonid", $lesson->id, "userid", + if ($nviewed = count_records("lesson_attempts", "lessonid", $lesson->id, "userid", $USER->id, "retry", $ntries)) { - /// CDC-FLAG /// 6/11/04 - if (!$lesson->custom) { - $ncorrect = 0; - $temp = array(); - if ($pagesanswered = get_records_select("lesson_attempts", "lessonid = $lesson->id AND - userid = $USER->id AND retry = $ntries order by timeseen")) { - - foreach ($pagesanswered as $pageanswered) { - if (!array_key_exists($pageanswered->pageid, $temp)) { - $temp[$pageanswered->pageid] = array($pageanswered->correct, 1); - } else { - if ($temp[$pageanswered->pageid][1] < $lesson->maxattempts) { - $n = $temp[$pageanswered->pageid][1] + 1; - $temp[$pageanswered->pageid] = array($pageanswered->correct, $n); - } - } - } - foreach ($temp as $value => $key) { - if ($key[0] == 1) { - $ncorrect += 1; - } - } + // count the number of distinct correct pages + if ($correctpages = get_records_select("lesson_attempts", "lessonid = $lesson->id AND + userid = $USER->id AND retry = $ntries AND correct = 1")) { + foreach ($correctpages as $correctpage) { + $temp[$correctpage->pageid] = 1; } - $nviewed = count($temp); // this counts number of Questions the user viewed - - echo "<p align=\"center\">".get_string("numberofpagesviewed", "lesson", $nviewed). - "</p>\n"; - if ($lesson->minquestions) { - if ($nviewed < $lesson->minquestions) { - // print a warning and set nviewed to minquestions - echo "<p align=\"center\">".get_string("youshouldview", "lesson", - $lesson->minquestions)." ".get_string("pages", "lesson")."</p>\n"; - $nviewed = $lesson->minquestions; - } - } - echo "<p align=\"center\">".get_string("numberofcorrectanswers", "lesson", $ncorrect). - "</p>\n"; - $thegrade = intval(100 * $ncorrect / $nviewed); - echo "<p align=\"center\">".get_string("gradeis", "lesson", - number_format($thegrade * $lesson->grade / 100, 1)). - " (".get_string("outof", "lesson", $lesson->grade).")</p>\n"; - + $ncorrect = count($temp); } else { - $score = 0; - $essayquestions = 0; - $essayquestionpoints = 0; - - if ($useranswers = get_records_select("lesson_attempts", "lessonid = $lesson->id AND - userid = $USER->id AND retry = $ntries", "timeseen")) { - // group each try with its page - foreach ($useranswers as $useranswer) { - $attemptset[$useranswer->pageid][] = $useranswer; - } - - $pageids = array_keys($attemptset); - $pageids = implode(",", $pageids); - - // get only the pages and their answers that the user answered - $answeredpages = get_records_select("lesson_pages", "lessonid = $lesson->id AND id IN($pageids)"); - $pageanswers = get_records_select("lesson_answers", "lessonid = $lesson->id AND pageid IN($pageids)"); - - foreach ($attemptset as $attempts) { - if(count($attempts) > $lesson->maxattempts) { // if there are more tries than the max that is allowed, grab the last "legal" attempt - $attempt = $attempts[$lesson->maxattempts - 1]; - } else { - // else, user attempted the question less than the max, so grab the last one - $attempt = end($attempts); - } - // if essay question, handle it, otherwise add to score - if ($answeredpages[$attempt->pageid]->qtype == LESSON_ESSAY) { - $essayinfo = unserialize($attempt->useranswer); - $score += $essayinfo->score; - $essayquestions++; - $essayquestionpoints += $pageanswers[$attempt->answerid]->score; - } else { - $score += $pageanswers[$attempt->answerid]->score; - } - } - $bestscores = array(); - // find the highest possible score per page - foreach ($pageanswers as $pageanswer) { - if(isset($bestscores[$pageanswer->pageid])) { - if ($bestscores[$pageanswer->pageid] < $pageanswer->score) { - $bestscores[$pageanswer->pageid] = $pageanswer->score; - } - } else { - $bestscores[$pageanswer->pageid] = $pageanswer->score; - } - } - - $bestscore = array_sum($bestscores); - } - - $thegrade = intval(100 * $score / $bestscore); - $a = new stdClass; - if ($essayquestions > 0) { - $a->score = $score; - $a->tempmaxgrade = $bestscore - $essayquestionpoints; - $a->essayquestions = $essayquestions; - $a->grade = $bestscore; - echo "<div align=\"center\">".get_string("displayscorewithessays", "lesson", $a)."</div>"; - } else { - $a->score = $score; - $a->grade = $bestscore; - echo "<div align=\"center\">".get_string("displayscorewithoutessays", "lesson", $a)."</div>"; - } - echo "<p align=\"center\">".get_string("gradeis", "lesson", - number_format($thegrade * $lesson->grade / 100, 1)). - " (".get_string("outof", "lesson", $lesson->grade).")</p>\n"; - + $ncorrect = 0; } - /// CDC-FLAG /// + echo "<p align=\"center\">".get_string("numberofpagesviewed", "lesson", $nviewed). + "</p>\n"; + if ($lesson->minquestions) { + if ($nviewed < $lesson->minquestions) { + // print a warning and set nviewed to minquestions + echo "<p align=\"center\">".get_string("youshouldview", "lesson", + $lesson->minquestions)." ".get_string("pages", "lesson")."</p>\n"; + $nviewed = $lesson->minquestions; + } + } + echo "<p align=\"center\">".get_string("numberofcorrectanswers", "lesson", $ncorrect). + "</p>\n"; + $thegrade = intval(100 * $ncorrect / $nviewed); + echo "<p align=\"center\">".get_string("gradeis", "lesson", + number_format($thegrade * $lesson->grade / 100, 1)). + " (".get_string("outof", "lesson", $lesson->grade).")</p>\n"; $grade->lessonid = $lesson->id; $grade->userid = $USER->id; $grade->grade = $thegrade; $grade->completed = time(); - if (!$lesson->practice) { - if (isset($USER->modattempts[$lesson->id])) { // if reviewing, make sure update old grade record - if (!$grades = get_records_select("lesson_grades", "lessonid = $lesson->id and userid = $USER->id", "completed")) { - error("Could not find Grade Records"); - } - $oldgrade = end($grades); - $grade->id = $oldgrade->id; - if (!$update = update_record("lesson_grades", $grade)) { - error("Navigation: grade not updated"); - } - } else { - if (!$newgradeid = insert_record("lesson_grades", $grade)) { - error("Navigation: grade not inserted"); - } - } - } else { - if (!delete_records("lesson_attempts", "lessonid", $lesson->id, "userid", $USER->id, "retry", $ntries)) { - error("Could not delete lesson attempts"); - } + if (!$newgradeid = insert_record("lesson_grades", $grade)) { + error("Navigation: grade not inserted"); } } else { - //print_string("noattemptrecordsfound", "lesson"); - if ($lesson->timed) { - if (isset($_GET["outoftime"])) { - if ($_GET["outoftime"] == "normal") { - $grade = new stdClass; - $grade->lessonid = $lesson->id; - $grade->userid = $USER->id; - $grade->grade = 0; - $grade->completed = time(); - if (!$lesson->practice) { - if (!$newgradeid = insert_record("lesson_grades", $grade)) { - error("Navigation: grade not inserted"); - } - } - echo get_string("eolstudentoutoftimenoanswers", "lesson"); - } - } - } else { - echo get_string("welldone", "lesson"); - } - } - } else { + print_string("noattemptrecordsfound", "lesson"); + $thegrade = 0; + } + } else { // display for teacher echo "<p align=\"center\">".get_string("displayofgrade", "lesson")."</p>\n"; } - print_simple_box_end(); //End of Lesson button to Continue. - - // after all the grade processing, check to see if "Show Grades" is off for the course - // if yes, redirect to the course page - if (!$course->showgrades) { - redirect($CFG->wwwroot.'/course/view.php?id='.$course->id); - } - - ///CDC-FLAG /// high scores code - if ($lesson->highscores && !isteacher($course->id)) { - echo "<div align=\"center\"><br>"; - if (!$grades = get_records_select("lesson_grades", "lessonid = $lesson->id", "completed")) { - echo get_string("youmadehighscore", "lesson", $lesson->maxhighscores)."<br>"; - echo "<a href=\"view.php?id=$cm->id&amp;action=nameforhighscores\">".get_string("clicktopost", "lesson")."</a><br>"; - } else { - if (!$highscores = get_records_select("lesson_high_scores", "lessonid = $lesson->id")) { - echo get_string("youmadehighscore", "lesson", $lesson->maxhighsores)."<br>"; - echo "<a href=\"view.php?id=$cm->id&amp;action=nameforhighscores\">".get_string("clicktopost", "lesson")."</a><br>"; - } else { - // get all the high scores into an array - foreach ($highscores as $highscore) { - $grade = $grades[$highscore->gradeid]->grade; - $topscores[] = $grade; - } - // sort to find the lowest score - sort($topscores); - $lowscore = $topscores[0]; - - if ($thegrade >= $lowscore || count($topscores) <= $lesson->maxhighscores) { - echo get_string("youmadehighscore", "lesson", $lesson->maxhighscores)."<br>"; - echo "<a href=\"view.php?id=$cm->id&amp;action=nameforhighscores\">".get_string("clicktopost", "lesson")."</a><br>"; - } else { - echo get_string("nothighscore", "lesson", $lesson->maxhighscores)."<br>"; - } - } - } - echo "<br><a href=\"view.php?id=$cm->id&amp;action=highscores&link=1\">".get_string("viewhighscores", "lesson")."</a>"; - echo "</div>"; - } - /// CDC-FLAG /// - if ($lesson->modattempts && !isteacher($course->id)) { - // make sure if the student is reviewing, that he/she sees the same pages/page path that he/she saw the first time - // look at the attempt records to find the first QUESTION page that the user answered, then use that page id - // to pass to view again. This is slick cause it wont call the empty($pageid) code - // $ntries is decremented above - $attempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND userid = $USER->id AND retry = $ntries", "timeseen"); - $firstattempt = current($attempts); - $pageid = $firstattempt->pageid; - // IF the student wishes to review, need to know the last question page that the student answered. This will help to make - // sure that the student can leave the lesson via pushing the continue button. - $lastattempt = end($attempts); - $USER->modattempts[$lesson->id] = $lastattempt->pageid; - echo "<form name=\"reviewform\" method=\"post\" action=\"view.php?id=$cm->id\">"; - echo "<input type=\"hidden\" name=\"pageid\" value=\"$pageid\" />"; - echo "</form>"; - echo "<p align=\"center\"><a href=\"javascript:document.reviewform.submit();\">".get_string("reviewlesson", "lesson")."</a></p>\n"; - } elseif ($lesson->modattempts && isteacher($course->id)) { - echo "<p align=\"center\">".get_string("modattemptsnoteacher", "lesson")."</p>"; - } - echo "<p align=\"center\"><a href=\"../../course/view.php?id=$course->id\">".get_string("mainmenu", "lesson")."</a></p>\n"; //CDC Back to the menu (course view). - echo "<p align=\"center\"><a href=\"../../course/grade.php?id=$course->id\">".get_string("viewgrades", "lesson")."</a></p>\n"; //CDC view grades + print_simple_box_end(); + print_continue("../../course/view.php?id=$course->id"); } - if ($lesson->displayleft || $lesson->slideshow) { // this ends the table cell and table for the leftmenu or for slideshow - echo "</td></tr></table>"; - } } /*******************teacher view **************************************/ elseif ($action == 'teacherview') { - print_heading_with_help($lesson->name, "overview", "lesson"); + print_heading_with_help($lesson->name, "overview", "lesson"); // get number of pages if ($page = get_record_select("lesson_pages", "lessonid = $lesson->id AND prevpageid = 0")) { $npages = 1; @@ -1149,138 +418,94 @@ } if (!$page = get_record_select("lesson_pages", "lessonid = $lesson->id AND prevpageid = 0")) { - /// CDC-FLAG /// - // if there are no pages give teacher the option to create a new page or a new branch table - echo "<div align=\"center\">"; - if (isteacheredit($course->id)) { - print_simple_box( "<table cellpadding=\"5\" border=\"0\">\n<tr><th>".get_string("whatdofirst", "lesson")."</th></tr><tr><td>". - "<a href=\"import.php?id=$cm->id&amp;pageid=0\">". - get_string("importquestions", "lesson")."</a></td></tr><tr><td>". - "<a href=\"lesson.php?id=$cm->id&amp;action=addbranchtable&amp;pageid=0&amp;firstpage=1\">". - get_string("addabranchtable", "lesson")."</a></td></tr><tr><td>". - "<a href=\"lesson.php?id=$cm->id&amp;action=addpage&amp;pageid=0&amp;firstpage=1\">". - get_string("addaquestionpage", "lesson")." ".get_string("here","lesson"). - "</a></td></tr></table\n"); + // if there are no pages give teacher a blank proforma + ?> + <form name="form" method="post" action="lesson.php"> + <input type="hidden" name="id" value="<?PHP echo $cm->id ?>"> + <input type="hidden" name="action" value="insertpage"> + <input type="hidden" name="pageid" value="0"> + <center><table cellpadding=5 border=1> + <tr><td align="center"> + <tr valign="top"> + <td><p><b><?php print_string("pagetitle", "lesson"); ?>:</b></p></td></tr> + <tr><td><input type="text" name="title" size="80" maxsize="255" value=""></td></tr> + <?PHP + echo "<tr><td><b>"; + echo get_string("pagecontents", "lesson").":</b><br />\n"; + print_textarea($usehtmleditor, 25, 70, 630, 400, "contents"); + echo "</td></tr>\n"; + echo "<tr><td><b>".get_string("questiontype", "lesson").":</b> \n"; + choose_from_menu($LESSON_QUESTION_TYPE, "qtype", LESSON_MULTICHOICE, ""); + helpbutton("questiontypes", get_string("questiontype", "lesson"), "lesson"); + echo "<br /><b>".get_string("questionoption", "lesson").":</b>\n"; + echo " <input type=\"checkbox\" name=\"qoption\" value=\"1\"/>"; + helpbutton("questionoption", get_string("questionoption", "lesson"), "lesson"); + echo "</td></tr>\n"; + for ($i = 0; $i < $lesson->maxanswers; $i++) { + $iplus1 = $i + 1; + echo "<tr><td><b>".get_string("answer", "lesson")." $iplus1:</b><br />\n"; + print_textarea(false, 6, 70, 630, 100, "answer[$i]"); + echo "</td></tr>\n"; + echo "<tr><td><b>".get_string("response", "lesson")." $iplus1:</b><br />\n"; + print_textarea(false, 6, 70, 630, 100, "response[$i]"); + echo "</td></tr>\n"; + if ($i) { + // answers 2,3,4... jump to this page + echo "<input type=\"hidden\" name=\"jumpto[$i]\" value =\"0\">\n"; + } else { + // answer 1 jumps to next page + echo "<input type=\"hidden\" name=\"jumpto[$i]\" value =\"".LESSON_NEXTPAGE."\">\n"; + } } - print_simple_box_end(); - echo "</div>"; //CDC Chris Berri added. - /// CDC-FLAG /// + // close table and form + ?> + </table><br /> + <input type="submit" value="<?php print_string("savepage", "lesson") ?>"> + <input type="submit" name="cancel" value="<?php print_string("cancel") ?>"> + </center> + </form> + <?PHP + use_html_editor("contents"); // Lets give IE more time load the page before replacing textarea. + // show import link + print_heading("<a href=\"import.php?id=$cm->id&pageid=0\">".get_string("importquestions", + "lesson")."</a>\n"); } else { - print_heading("<a href=\"view.php?id=$cm->id&amp;action=navigation\">".get_string("checknavigation", - "lesson")."</a>\n"); // print the pages echo "<form name=\"lessonpages\" method=\"post\" action=\"view.php\">\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n"; - echo "<input type=\"hidden\" name=\"action\" value=\"navigation\" />\n"; - echo "<input type=\"hidden\" name=\"pageid\" />\n"; - /// CDC-FLAG /// link to grade essay questions and to report - if ($testattempts = get_records("lesson_attempts", "lessonid", $lesson->id)) { // just check to see if anyone has answered any questions. - echo "<div align=\"center\"><a href=\"report.php?id=$cm->id\">".get_string("viewlessonstats", "lesson")."</a></div>"; + echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"navigation\">\n"; + echo "<input type=\"hidden\" name=\"pageid\">\n"; + echo "<center><table cellpadding=\"5\" border=\"0\" width=\"80%\">\n"; + if (isteacheredit($course->id)) { + echo "<tr><td align=\"right\"><small><a href=\"import.php?id=$cm->id&pageid=0\">". + get_string("importquestions", "lesson")."</a> | ". + "<a href=\"lesson.php?id=$cm->id&action=addbranchtable&pageid=0\">". + get_string("addabranchtable", "lesson")."</a> | ". + "<a href=\"lesson.php?id=$cm->id&action=addpage&pageid=0\">". + get_string("addaquestionpage", "lesson")." ".get_string("here","lesson"). + "</a></small></td></tr>\n"; } - if ($essaypages = get_records_select("lesson_pages", "lessonid = $lesson->id AND qtype = ".LESSON_ESSAY)) { // get pages that are essay - // get only the attempts that are in response to essay questions - $essaypageids = implode(",", array_keys($essaypages)); // all the pageids in comma seperated list - if ($essayattempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND pageid IN($essaypageids)")) { - echo "<div align=\"center\"><a href=\"view.php?id=$cm->id&amp;action=essayview\">".get_string("gradeessay", "lesson")."</a></div><br />"; - } - } - /// CDC-FLAG /// tree code - in final release, will use lang file for all text output. - // NoticeFix next two lines and bowth viewAlls - $branch = false; - $singlePage = false; - if($lesson->tree && !isset($_GET['display']) && !isset($_GET['viewAll'])) { - echo "<div align=\"center\">"; - echo get_string("treeview", "lesson")."<br /><br />"; - echo "<a href=\"view.php?id=$id&amp;viewAll=1\">".get_string("viewallpages", "lesson")."</a><br /><br />\n"; - echo "<table><tr><td>"; - lesson_print_tree($page->id, $lesson->id, $cm->id, $CFG->pixpath); - echo "</td></tr></table>"; - echo "<br /><a href=\"view.php?id=$id&amp;viewAll=1\">".get_string("viewallpages", "lesson")."</a>\n"; - echo "</div>"; - } else { - if(isset($_GET['display']) && !isset($_GET['viewAll'])) { - $display = clean_param($_GET['display'], PARAM_INT); - while(true) - { - if($page->id == $display && $page->qtype == LESSON_BRANCHTABLE) { - $branch = true; - $singlePage = false; - break; - } elseif($page->id == $display) { - $branch = false; - $singlePage = true; - break; - } elseif ($page->nextpageid) { - if (!$page = get_record("lesson_pages", "id", $page->nextpageid)) { - error("Teacher view: Next page not found!"); - } - } else { - // last page reached - break; - } - } - echo "<center><a href=\"view.php?id=$id&amp;viewAll=1\">".get_string("viewallpages", "lesson")."</a><br />\n"; - echo "<a href=\"view.php?id=$id\">".get_string("backtreeview", "lesson")."</a><br />\n"; - echo "<table cellpadding=\"5\" border=\"0\" width=\"80%\">\n"; - if (isteacheredit($course->id)) { - /// CDC-FLAG 6/16/04 /// - echo "<tr><td align=\"left\"><small><a href=\"import.php?id=$cm->id&amp;pageid=$page->prevpageid\">". - get_string("importquestions", "lesson")."</a> | ". - "<a href=\"lesson.php?id=$cm->id&amp;sesskey=".$USER->sesskey."&amp;action=addcluster&amp;pageid=$page->prevpageid\">". - get_string("addcluster", "lesson")."</a> | ". - "<a href=\"lesson.php?id=$cm->id&amp;sesskey=".$USER->sesskey."&amp;action=addendofcluster&amp;pageid=$page->prevpageid\">". - get_string("addendofcluster", "lesson")."</a> | ". - "<a href=\"lesson.php?id=$cm->id&amp;action=addbranchtable&amp;pageid=$page->prevpageid\">". - get_string("addabranchtable", "lesson")."</a> | ". - "<a href=\"lesson.php?id=$cm->id&amp;action=addpage&amp;pageid=$page->prevpageid\">". - get_string("addaquestionpage", "lesson")." ".get_string("here","lesson"). - "</a></small></td></tr>\n"; - /// CDC-FLAG /// - } - } else { - if($lesson->tree) { - echo "<center><a href=\"view.php?id=$id\">".get_string("backtreeview", "lesson")."</a><br /></center>\n"; - } - echo "<table align=\"center\" cellpadding=\"5\" border=\"0\" width=\"80%\">\n"; - if (isteacheredit($course->id)) { - /// CDC-FLAG 6/16/04 /// - echo "<tr><td align=\"left\"><small><a href=\"import.php?id=$cm->id&amp;pageid=0\">". - get_string("importquestions", "lesson")."</a> | ". - "<a href=\"lesson.php?id=$cm->id&amp;sesskey=".$USER->sesskey."&amp;action=addcluster&amp;pageid=0\">". - get_string("addcluster", "lesson")."</a> | ". - "<a href=\"lesson.php?id=$cm->id&amp;action=addbranchtable&amp;pageid=0\">". - get_string("addabranchtable", "lesson")."</a> | ". - "<a href=\"lesson.php?id=$cm->id&amp;action=addpage&amp;pageid=0\">". - get_string("addaquestionpage", "lesson")." ".get_string("here","lesson"). - "</a></small></td></tr>\n"; - /// CDC-FLAG /// - } - } - /// CDC-FLAG /// end tree code (note, there is an "}" below for an else above) + echo "<tr><td>\n"; while (true) { - echo "<tr><td>\n"; - echo "<table width=\"100%\" border=\"1\"><tr><th colspan=\"2\">$page->title&nbsp;&nbsp;\n"; + echo "<table width=\"100%\" border=\"1\"><tr><td bgcolor=\"$THEME->cellheading2\" colspan=\"2\"><b>$page->title</b>&nbsp;&nbsp;\n"; if (isteacheredit($course->id)) { if ($npages > 1) { - echo "<a title=\"".get_string("move")."\" href=\"lesson.php?id=$cm->id&amp;action=move&amp;pageid=$page->id\">\n". - "<img src=\"$CFG->pixpath/t/move.gif\" hspace=\"2\" height=\"11\" width=\"11\" border=\"0\" alt=\"move\" /></a>\n"; + echo "<a title=\"".get_string("move")."\" href=\"lesson.php?id=$cm->id&action=move&pageid=$page->id\">\n". + "<img src=\"$pixpath/t/move.gif\" hspace=\"2\" height=11 width=11 border=0></a>\n"; } - echo "<a title=\"".get_string("update")."\" href=\"lesson.php?id=$cm->id&amp;action=editpage&amp;pageid=$page->id\">\n". - "<img src=\"$CFG->pixpath/t/edit.gif\" hspace=\"2\" height=\"11\" width=\"11\" border=\"0\" alt=\"edit\" /></a>\n". - "<a title=\"".get_string("delete")."\" href=\"lesson.php?id=$cm->id&amp;sesskey=".$USER->sesskey."&amp;action=confirmdelete&amp;pageid=$page->id\">\n". - "<img src=\"$CFG->pixpath/t/delete.gif\" hspace=\"2\" height=\"11\" width=\"11\" border=\"0\" alt=\"delete\" /></a>\n"; - } - echo "</th></tr>\n"; + echo "<a title=\"".get_string("update")."\" href=\"lesson.php?id=$cm->id&action=editpage&pageid=$page->id\">\n". + "<img src=\"$pixpath/t/edit.gif\" hspace=\"2\" height=11 width=11 border=0></a>\n". + "<a title=\"".get_string("delete")."\" href=\"lesson.php?id=$cm->id&action=confirmdelete&pageid=$page->id\">\n". + "<img src=\"$pixpath/t/delete.gif\" hspace=\"2\" height=11 width=11 border=0></a>\n"; + } + echo "</td></tr>\n"; echo "<tr><td colspan=\"2\">\n"; print_simple_box(format_text($page->contents), "center"); echo "</td></tr>\n"; // get the answers in a set order, the id order if ($answers = get_records("lesson_answers", "pageid", $page->id, "id")) { - echo "<tr><td colspan=\"2\" align=\"center\"><b>\n"; + echo "<tr><td bgcolor=\"$THEME->cellheading2\" colspan=\"2\" align=\"center\"><b>\n"; switch ($page->qtype) { - case LESSON_ESSAY : /// CDC-FLAG /// 6/16/04 this line and the next - echo $LESSON_QUESTION_TYPE[$page->qtype]; - break; case LESSON_SHORTANSWER : echo $LESSON_QUESTION_TYPE[$page->qtype]; if ($page->qoption) { @@ -1295,96 +520,44 @@ break; case LESSON_MATCHING : echo $LESSON_QUESTION_TYPE[$page->qtype]; - echo get_string("firstanswershould", "lesson"); + if (!lesson_iscorrect($page->id, $answer->jumpto)) { + echo " - ".get_string("firstanswershould", "lesson"); + } break; case LESSON_TRUEFALSE : case LESSON_NUMERICAL : echo $LESSON_QUESTION_TYPE[$page->qtype]; break; - case LESSON_BRANCHTABLE : + case LESSON_BRANCHTABLE : echo get_string("branchtable", "lesson"); break; case LESSON_ENDOFBRANCH : echo get_string("endofbranch", "lesson"); break; } - echo "</b></td></tr>\n"; + echo "</td></tr>\n"; $i = 1; - $n = 0; foreach ($answers as $answer) { switch ($page->qtype) { case LESSON_MULTICHOICE: case LESSON_TRUEFALSE: case LESSON_SHORTANSWER: case LESSON_NUMERICAL: - echo "<tr><td align=\"right\" valign=\"top\" width=\"20%\">\n"; - /// CDC-FLAG /// 6/11/04 - if ($lesson->custom) { - // if the score is > 0, then it is correct - if ($answer->score > 0) { - echo "<b><u>".get_string("answer", "lesson")." $i:</u></b> \n"; - } else { - echo "<b>".get_string("answer", "lesson")." $i:</b> \n"; - } + case LESSON_MATCHING: + echo "<tr><td bgcolor=\"$THEME->cellheading2\" align=\"right\" valign=\"top\" width=\"20%\">\n"; + if (lesson_iscorrect($page->id, $answer->jumpto)) { + // underline correct answers + echo "<b><u>".get_string("answer", "lesson")." $i:</u></b> \n"; } else { - if (lesson_iscorrect($page->id, $answer->jumpto)) { - // underline correct answers - echo "<b><u>".get_string("answer", "lesson")." $i:</u></b> \n"; - } else { - echo "<b>".get_string("answer", "lesson")." $i:</b> \n"; - } + echo "<b>".get_string("answer", "lesson")." $i:</b> \n"; } - /// CDC-FLAG /// echo "</td><td width=\"80%\">\n"; echo format_text($answer->answer); echo "</td></tr>\n"; - echo "<tr><td align=\"right\" valign=\"top\"><b>".get_string("response", "lesson")." $i:</b> \n"; + echo "<tr><td align=\"right\" valign=\"top\"><b>".get_string("response", "lesson")." $i:</b> \n"; echo "</td><td>\n"; - echo format_text($answer->response); + echo format_text($answer->response); echo "</td></tr>\n"; - break; - case LESSON_MATCHING: - if ($n < 2) { - if ($answer->answer != NULL) { - if ($n == 0) { - echo "<tr><td align=\"right\" valign=\"top\"><b>".get_string("correctresponse", "lesson").":</b> \n"; - echo "</td><td>\n"; - echo format_text($answer->answer); - echo "</td></tr>\n"; - } else { - echo "<tr><td align=\"right\" valign=\"top\"><b>".get_string("wrongresponse", "lesson").":</b> \n"; - echo "</td><td>\n"; - echo format_text($answer->answer); - echo "</td></tr>\n"; - } - } - $n++; - $i--; - } else { - echo "<tr><td align=\"right\" valign=\"top\" width=\"20%\">\n"; - if ($lesson->custom) { - // if the score is > 0, then it is correct - if ($answer->score > 0) { - echo "<b><u>".get_string("answer", "lesson")." $i:</u></b> \n"; - } else { - echo "<b>".get_string("answer", "lesson")." $i:</b> \n"; - } - } else { - if (lesson_iscorrect($page->id, $answer->jumpto)) { - // underline correct answers - echo "<b><u>".get_string("answer", "lesson")." $i:</u></b> \n"; - } else { - echo "<b>".get_string("answer", "lesson")." $i:</b> \n"; - } - } - echo "</td><td width=\"80%\">\n"; - echo format_text($answer->answer); - echo "</td></tr>\n"; - echo "<tr><td align=\"right\" valign=\"top\"><b>".get_string("matchesanswer", "lesson")." $i:</b> \n"; - echo "</td><td>\n"; - echo format_text($answer->response); - echo "</td></tr>\n"; - } break; case LESSON_BRANCHTABLE: echo "<tr><td align=\"right\" valign=\"top\" width=\"20%\">\n"; @@ -1400,52 +573,18 @@ $jumptitle = get_string("nextpage", "lesson"); } elseif ($answer->jumpto == LESSON_EOL) { $jumptitle = get_string("endoflesson", "lesson"); -/* CDC-FLAG 6/17/04 */ } elseif ($answer->jumpto == LESSON_UNSEENBRANCHPAGE) { - $jumptitle = get_string("unseenpageinbranch", "lesson"); // a better way is get_string("unseenbranchpage", "lesson"); and define in lang file - } elseif ($answer->jumpto == LESSON_PREVIOUSPAGE) { - $jumptitle = get_string("previouspage", "lesson"); - } elseif ($answer->jumpto == LESSON_RANDOMPAGE) { - $jumptitle = get_string("randompageinbranch", "lesson"); - } elseif ($answer->jumpto == LESSON_RANDOMBRANCH) { - $jumptitle = get_string("randombranch", "lesson"); - } elseif ($answer->jumpto == LESSON_CLUSTERJUMP) { - $jumptitle = get_string("clusterjump", "lesson"); /// CDC-FLAG /// } else { if (!$jumptitle = get_field("lesson_pages", "title", "id", $answer->jumpto)) { $jumptitle = "<b>".get_string("notdefined", "lesson")."</b>"; } } - /// CDC-FLAG /// - if ($page->qtype == LESSON_MATCHING) { - if ($i == 1) { - echo "<tr><td align=\"right\" width=\"20%\"><b>".get_string("correctanswerscore", "lesson").":"; - echo "</b></td><td width=\"80%\">\n"; - echo "$answer->score</td></tr>\n"; - echo "<tr><td align=\"right\" width=\"20%\"><b>".get_string("correctanswerjump", "lesson").":"; - echo "</b></td><td width=\"80%\">\n"; - echo "$jumptitle</td></tr>\n"; - } elseif ($i == 2) { - echo "<tr><td align=\"right\" width=\"20%\"><b>".get_string("wronganswerscore", "lesson").":"; - echo "</b></td><td width=\"80%\">\n"; - echo "$answer->score</td></tr>\n"; - echo "<tr><td align=\"right\" width=\"20%\"><b>".get_string("wronganswerjump", "lesson").":"; - echo "</b></td><td width=\"80%\">\n"; - echo "$jumptitle</td></tr>\n"; - } - } else { - if ($lesson->custom && $page->qtype != LESSON_BRANCHTABLE && $page->qtype != LESSON_ENDOFBRANCH) { - echo "<tr><td align=\"right\" width=\"20%\"><b>".get_string("score", "lesson")." $i:"; - echo "</b></td><td width=\"80%\">\n"; - echo "$answer->score</td></tr>\n"; - } - echo "<tr><td align=\"right\" width=\"20%\"><b>".get_string("jump", "lesson")." $i:"; - echo "</b></td><td width=\"80%\">\n"; - echo "$jumptitle</td></tr>\n"; - } + echo "<tr><td align=\"right\" width=\"20%\"><b>".get_string("jump", "lesson")." $i:"; + echo "</b></td><td width=\"80%\">\n"; + echo "$jumptitle</td></tr>\n"; $i++; } - // print_simple_box_end(); /// CDC-FLAG /// not sure if i commented this out... hehe - echo "<tr><td colspan=\"2\" align=\"center\">"; + // print_simple_box_end(); + echo "<tr><td bgcolor=\"$THEME->cellheading2\" colspan=\"2\" align=\"center\">"; if ($page->qtype != LESSON_ENDOFBRANCH) { echo "<input type=\"button\" value=\""; if ($page->qtype == LESSON_BRANCHTABLE) { @@ -1454,36 +593,30 @@ echo get_string("checkquestion", "lesson"); } echo "\" onclick=\"document.lessonpages.pageid.value=$page->id;". - "document.lessonpages.submit();\" />"; + "document.lessonpages.submit();\">"; } echo "&nbsp;</td></tr>\n"; } - echo "</table></td></tr>\n"; + echo "</td></tr></table></td></tr>\n"; if (isteacheredit($course->id)) { - /// CDC-FLAG /// 6/16/04 - echo "<tr><td align=\"left\"><small><a href=\"import.php?id=$cm->id&amp;pageid=$page->id\">". - get_string("importquestions", "lesson")."</a> | ". - "<a href=\"lesson.php?id=$cm->id&amp;sesskey=".$USER->sesskey."&amp;action=addcluster&amp;pageid=$page->id\">". - get_string("addcluster", "lesson")."</a> | ". - "<a href=\"lesson.php?id=$cm->id&amp;sesskey=".$USER->sesskey."&amp;action=addendofcluster&amp;pageid=$page->id\">". - get_string("addendofcluster", "lesson")."</a> | ". - "<a href=\"lesson.php?id=$cm->id&amp;action=addbranchtable&amp;pageid=$page->id\">". - get_string("addabranchtable", "lesson")."</a><br />"; - /// CDC-FLAG /// + echo "<tr><td align=\"right\"><small><a href=\"import.php?id=$cm->id&pageid=$page->id\">". + get_string("importquestions", "lesson")."</a> | ". + "<a href=\"lesson.php?id=$cm->id&action=addbranchtable&pageid=$page->id\">". + get_string("addabranchtable", "lesson")."</a> | "; // the current page or the next page is an end of branch don't show EOB link $nextqtype = 0; // set to anything else EOB if ($page->nextpageid) { $nextqtype = get_field("lesson_pages", "qtype", "id", $page->nextpageid); } if (($page->qtype != LESSON_ENDOFBRANCH) and ($nextqtype != LESSON_ENDOFBRANCH)) { - echo "<a href=\"lesson.php?id=$cm->id&amp;sesskey=".$USER->sesskey."&amp;action=addendofbranch&amp;pageid=$page->id\">". + echo "<a href=\"lesson.php?id=$cm->id&action=addendofbranch&pageid=$page->id\">". get_string("addanendofbranch", "lesson")."</a> | "; } - echo "<a href=\"lesson.php?id=$cm->id&amp;action=addpage&amp;pageid=$page->id\">". + echo "<a href=\"lesson.php?id=$cm->id&action=addpage&pageid=$page->id\">". get_string("addaquestionpage", "lesson")." ".get_string("here","lesson"). "</a></small></td></tr>\n"; } -// echo "<tr><td>\n"; + echo "<tr><td>\n"; // check the prev links - fix (silently) if necessary - there was a bug in // versions 1 and 2 when add new pages. Not serious then as the backwards // links were not used in those versions @@ -1498,12 +631,7 @@ } $prevpageid = $page->id; // move to next page - /// CDC-FLAG /// - if($singlePage) { // this will make sure only one page is displayed if needed - break; - } elseif($branch && $page->qtype == LESSON_ENDOFBRANCH) { // this will display a branch table and its contents - break; - } elseif ($page->nextpageid) { /// CDC-FLAG /// + if ($page->nextpageid) { if (!$page = get_record("lesson_pages", "id", $page->nextpageid)) { error("Teacher view: Next page not found!"); } @@ -1512,467 +640,18 @@ break; } } - } /// CDC-FLAG /// end of else from above tree code!!! - echo "</table></form>\n"; - /// CDC-FLAG /// - // NoticeFix both viewAll's - if(isset($_GET['display']) && !isset($_GET['viewAll'])) { - echo "<center><a href=\"view.php?id=$id&amp;viewAll=1\">".get_string("viewallpages", "lesson")."</a><br />\n"; - } - if($lesson->tree && (isset($_GET['display']) || isset($_GET['viewAll']))) { - echo "<center><a href=\"view.php?id=$id\">".get_string("backtreeview", "lesson")."</a><br /></center>\n"; - } - /// CDC-FLAG /// - print_heading("<a href=\"view.php?id=$cm->id&amp;action=navigation\">".get_string("checknavigation", + print_heading("<a href=\"view.php?id=$cm->id&action=navigation\">".get_string("checknavigation", "lesson")."</a>\n"); - } - } - - /*******************essay view **************************************/ // 6/29/04 - elseif ($action == 'essayview') { - print_heading_with_help($lesson->name, "overview", "lesson"); - - // get lesson pages that are essay - if (!$pages = get_records_select("lesson_pages", "lessonid = $lesson->id AND qtype = ".LESSON_ESSAY)) { - error("Error: could not find lesson pages"); - } - - // get all the users who have taken this lesson, order by their last name - if (!$users = get_records_sql("SELECT DISTINCT u.* - FROM {$CFG->prefix}user u, - {$CFG->prefix}lesson_attempts a - WHERE a.lessonid = '$lesson->id' and - u.id = a.userid - ORDER BY u.lastname")) { - error("Error: could not find users"); - } - - // get only the attempts that are in response to essay questions - $pageids = implode(",", array_keys($pages)); // all the pageids in comma seperated list - if (!$essayattempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND pageid IN($pageids)")) { - error ("No one has answered essay questions yet..."); - } - // group all the essays by userid - $studentessays = array(); - foreach ($essayattempts as $essay) { - // not very nice :) but basically - // this organizes the essays so I know how many times a student answered an essay per try and per page - $studentessays[$essay->userid][$essay->pageid][$essay->retry][] = $essay; - } - - print_heading("<a href=\"view.php?id=$cm->id\">".get_string("gobacktolesson", "lesson")."</a>"); - $table = new stdClass; - $table->head = array($course->students, get_string("essays", "lesson"), get_string("email", "lesson")); - $table->align = array("left", "left", "left"); - $table->wrap = array("nowrap", "wrap", "nowrap"); - $table->width = "90%"; - $table->size = array("*", "70%", "*"); - - // get the student ids of the students who have answered the essay question - $studentids = array_keys($studentessays); - - // cycle through all the ids - foreach ($studentids as $id) { - $studentname = $users[$id]->lastname.", ".$users[$id]->firstname; - $essaylinks = array(); - // go through each essay - foreach ($studentessays[$id] as $page => $tries) { - // go through each essay per page - foreach($tries as $try) { - // make sure they didn't answer it more than the max number of attmepts - if (count($try) > $lesson->maxattempts) { - $essay = $try[$lesson->maxattempts-1]; - } else { - $essay = end($try); - } - $essayinfo = unserialize($essay->useranswer); - // different colors for all the states of an essay (graded, if sent, not graded) - if (!$essayinfo->graded) { - $style = "style='color:#DF041E;text-decoration:underline;'"; - } elseif (!$essayinfo->sent) { - $style = "style='color:#006600;text-decoration:underline;'"; - } else { - $style = "style='color:#999999;'"; - } - // link for each essay - $essaylinks[] = "<a $style href=\"view.php?id=$cm->id&amp;action=essaygrade&attemptid=$essay->id\">".$pages[$essay->pageid]->title."</a>"; - } - } - // email link for this user - $emaillink = "<a href=\"view.php?id=$cm->id&amp;action=emailessay&amp;userid=".$id."&amp;sesskey=".$USER->sesskey."\">".get_string("emailgradedessays", "lesson")."</a>"; - - $table->data[] = array($studentname, implode(", ", $essaylinks), $emaillink); - } - // email link for all users - $emailalllink = "<a href=\"view.php?id=$cm->id&amp;action=emailessay&amp;sesskey=".$USER->sesskey."\">".get_string("emailallgradedessays", "lesson")."</a>"; - - $table->data[] = array(" ", " ", $emailalllink); - - print_table($table); - } - - /*******************grade essays **************************************/ // 6/29/04 - elseif ($action == 'essaygrade') { - print_heading_with_help($lesson->name, "overview", "lesson"); - - $attemptid = required_param('attemptid', PARAM_INT); - - if (!$essay = get_record("lesson_attempts", "id", $attemptid)) { - error("Error: could not find attempt"); - } - if (!$page = get_record("lesson_pages", "id", $essay->pageid)) { - error("Error: could not find lesson pages"); - } - if (!$student = get_record("user", "id", $essay->userid)) { - error("Error: could not find users"); - } - if (!$answer = get_record("lesson_answers", "lessonid", $lesson->id, "pageid", $page->id)) { - error("Error: could not find answer"); - } - - - echo "<form name=\"essaygrade\" method=\"post\" action=\"view.php\">\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n"; - echo "<input type=\"hidden\" name=\"action\" />\n"; - echo "<input type=\"hidden\" name=\"attemptid\" value=\"$attemptid\" />\n"; - echo "<input type=\"hidden\" name=\"sesskey\" value=\"".$USER->sesskey."\" />\n"; - - // all tables will have these - $table = new stdClass; - $table->align = array("left"); - $table->wrap = array("wrap"); - $table->width = "70%"; - $table->size = array("100%"); - - - $table->head = array(get_string("question", "lesson")); - $table->data[] = array(format_text($page->contents)); - - print_table($table); - echo "<br />"; - - unset($table->data); - $essayinfo = unserialize($essay->useranswer); - - $studentname = $student->firstname." ".$student->lastname; - $table->head = array(get_string("studentresponse", "lesson", $studentname)); - $table->data[] = array(format_text($essayinfo->answer)); - - print_table($table); - echo "<br />"; - - unset($table->data); - - $table->head = array(get_string("comments", "lesson")); - $table->data[] = array("<textarea id=\"answer\" name=\"response\" align=\"center\" rows=\"15\" cols=\"60\">".$essayinfo->response."</textarea>\n"); - if ($lesson->custom) { - for ($i=$answer->score; $i>=0; $i--) { - $options[$i] = $i; - } - } else { - $options[0] = "incorrect"; - $options[1] = "correct"; - } - $table->data[] = array(get_string("essayscore", "lesson").": ".lesson_choose_from_menu($options, "score", $essayinfo->score, "", "", "", true)); - - print_table($table); - echo "<br />"; - echo "<table align=\"center\"><tr><td>"; - echo "<input type=\"button\" value=\"Cancel\" onclick=\"document.essaygrade.action.value='essayview';". - "document.essaygrade.submit();\" />"; - echo "</td><td>"; - echo "<input type=\"button\" value=\"Submit Grade\" onclick=\"document.essaygrade.action.value='updategrade';". - "document.essaygrade.submit();\" />"; - echo "</td></tr></table>"; - echo "</form>"; - - - } - - /*******************update grade**************************************/ // 6/29/04 - elseif ($action == 'updategrade') { - print_heading_with_help($lesson->name, "overview", "lesson"); - - confirm_sesskey(); - - $form = data_submitted(); - - if (!$essay = get_record("lesson_attempts", "id", clean_param($form->attemptid, PARAM_INT))) { - error("Error: could not find essay"); - } - - if (!$grades = get_records_select("lesson_grades", "lessonid = $lesson->id and userid = $essay->userid", "completed", "*", $essay->retry, 1)) { - error("Error: could not find grades"); - } - - $essayinfo = new stdClass; - $essayinfo = unserialize($essay->useranswer); - - $essayinfo->graded = 1; - $essayinfo->score = clean_param($form->score, PARAM_INT); - $essayinfo->response = clean_param(stripslashes_safe($form->response), PARAM_CLEANHTML); - $essayinfo->sent = 0; - if (!$lesson->custom && $essayinfo->score == 1) { - $essay->correct = 1; - } else { - $essay->correct = 0; - } - - $essay->useranswer = addslashes(serialize($essayinfo)); - - if (!update_record("lesson_attempts", $essay)) { - error("Could not update essay score"); - } - - $grade = current($grades); - - // I modded this function a bit so it would work here... :) ;) :P - $updategrade->grade = lesson_calculate_ongoing_score($lesson, $essay->userid, $essay->retry, true); - $updategrade->id = $grade->id; - - if(update_record("lesson_grades", $updategrade)) { - redirect("view.php?id=$cm->id&amp;action=essayview", get_string("updatesuccess", "lesson")); - } else { - echo get_string("updatefailed", "lesson")."!<br>"; - echo "<a href=\"view.php?id=$cm->id&amp;action=essayview\">".get_string("continue", "lesson")."</a>"; - exit(); } } - /*******************email essay **************************************/ // 6/29/04 - elseif ($action == 'emailessay') { - print_heading_with_help($lesson->name, "overview", "lesson"); - - confirm_sesskey(); - - if (isset($_GET['userid'])) { - $userid = clean_param($_GET['userid'], PARAM_INT); - $queryadd = " AND userid = ".$userid; - if (! $users = get_records("user", "id", $userid)) { - error("Error: could not find users"); - } - } else { - $queryadd = ""; - if (!$users = lesson_get_participants($lesson->id)) { - error("Error: could not find users"); - } - } - - // get lesson pages that are essay - if (!$pages = get_records_select("lesson_pages", "lessonid = $lesson->id AND qtype = ".LESSON_ESSAY)) { - error("Error: could not find lesson pages"); - } - - // get only the attempts that are in response to essay questions - $pageids = implode(",", array_keys($pages)); // all the pageids in comma seperated list - if (!$essayattempts = get_records_select("lesson_attempts", "lessonid = $lesson->id AND pageid IN($pageids)".$queryadd)) { - error ("No one has answered essay questions yet..."); - } - - if (!$essayanswers = get_records_select("lesson_answers", "lessonid = $lesson->id AND pageid IN($pageids)", "", "pageid, score")) { - error ("Could not find answer records."); - } - // NoticeFix big fix, change $essay[]'s that use $USER to just $USER - foreach ($essayattempts as $essay) { - $essayinfo = unserialize($essay->useranswer); - if ($essayinfo->graded && !$essayinfo->sent) { - $subject = get_string('essayemailsubject', 'lesson', $pages[$essay->pageid]->title); - $message = get_string('question', 'lesson').":<br>"; - $message .= $pages[$essay->pageid]->contents; - $message .= "<br><br>"; - $message .= get_string('yourresponse', 'lesson').":<br>"; - $message .= $essayinfo->answer; - $message .= "<br><br>"; - $message .= get_string('commentswithname', 'lesson', $USER).":<br>"; - $message .= $essayinfo->response; - $message .= "<br><br>"; - $grades = get_records_select("lesson_grades", "lessonid = $lesson->id and userid = $essay->userid", "completed", "*", $essay->retry, 1); - $grade = current($grades); - if ($lesson->custom) { - $points->score = $essayinfo->score; - $points->outof = $essayanswers[$essay->pageid]->score; - $message .= get_string("youhavereceived", "lesson", $points); - } else { - $points->score = $essayinfo->score; - $points->outof = 1; - $message .= get_string("youhavereceived", "lesson", $points); - } - $message .= "<br><br>"; - $message .= get_string("yourgradeisnow", "lesson", $grade->grade)."%."; - - $plaintxt = format_text_email($message, FORMAT_HTML); - - if(email_to_user($users[$essay->userid], $USER, $subject, $plaintxt, $message)) { - $essayinfo->sent = 1; - $essay->useranswer = addslashes(serialize($essayinfo)); - update_record("lesson_attempts", $essay); - } else { - echo "Email Failed!<br>"; - echo "<a href=\"view.php?id=$cm->id&amp;action=essayview\">".get_string("continue", "lesson")."</a>"; - echo "</div>"; - exit(); - } - } - } - redirect("view.php?id=$cm->id&amp;action=essayview", get_string("emailsuccess", "lesson")); - } - - /*******************high scores **************************************/ - elseif ($action == 'highscores') { - print_heading_with_help($lesson->name, "overview", "lesson"); - - if (!$grades = get_records_select("lesson_grades", "lessonid = $lesson->id", "completed")) { - $grades = array(); - } - - echo "<div align=\"center\">"; - $titleinfo->maxhighscores = $lesson->maxhighscores; - $titleinfo->name = $lesson->name; - echo get_string("topscorestitle", "lesson", $titleinfo)."<br><br>"; - - if (!$highscores = get_records_select("lesson_high_scores", "lessonid = $lesson->id")) { - echo get_string("nohighscores", "lesson")."<br>"; - } else { - foreach ($highscores as $highscore) { - $grade = $grades[$highscore->gradeid]->grade; - $topscores[$grade][] = $highscore->nickname; - } - krsort($topscores); - - echo "<table cellspacing=\"10px\">"; - echo "<tr align=\"center\"><td>".get_string("rank", "lesson")."</td><td>$course->students</td><td>".get_string("scores", "lesson")."</td></tr>"; - $printed = 0; - while (true) { - $temp = current($topscores); - $score = key($topscores); - $rank = $printed + 1; - sort($temp); - foreach ($temp as $student) { - echo "<tr><td align=\"right\">$rank</td><td>$student</td><td align=\"right\">$score</td></tr>"; - - } - $printed++; - if (!next($topscores) || !($printed < $lesson->maxhighscores)) { - break; - } - } - echo "</table>"; - } - if (isset($_GET['link'])) { - echo "<br><a href=\"../../course/view.php?id=$course->id\">".get_string("returntocourse", "lesson")."</a>"; - } else { - echo "<br><a href=\"../../course/view.php?id=$course->id\">".get_string("cancel", "lesson")."</a> | <a href=\"view.php?id=$cm->id&amp;action=navigation\">".get_string("startlesson", "lesson")."</a>"; - } - echo "</div>"; - - } - /*******************update high scores **************************************/ - elseif ($action == 'updatehighscores') { - print_heading_with_help($lesson->name, "overview", "lesson"); - - confirm_sesskey(); - - if (!$grades = get_records_select("lesson_grades", "lessonid = $lesson->id", "completed")) { - error("Error: could not find grades"); - } - if (!$usergrades = get_records_select("lesson_grades", "lessonid = $lesson->id and userid = $USER->id", "completed DESC")) { - error("Error: could not find grades"); - } - echo "<div align=\"center\">"; - echo get_string("waitpostscore", "lesson")."<br>"; - - foreach ($usergrades as $usergrade) { - // get their latest grade - $newgrade = $usergrade; - break; - } - - if ($pasthighscore = get_record_select("lesson_high_scores", "lessonid = $lesson->id and userid = $USER->id")) { - $pastgrade = $grades[$pasthighscore->gradeid]->grade; - if ($pastgrade >= $newgrade->grade) { - redirect("view.php?id=$cm->id&amp;action=highscores&amp;link=1", "Update Successful"); - } else { - // delete old and find out where new one goes - if (!delete_records("lesson_high_scores", "id", $pasthighscore->id)) { - error("Error: could not delete old high score"); - } - } - } - // find out if we need to delete any records - if ($highscores = get_records_select("lesson_high_scores", "lessonid = $lesson->id")) { // if no high scores... then just insert our new one - foreach ($highscores as $highscore) { - $grade = $grades[$highscore->gradeid]->grade; - $topscores[$grade][] = $highscore->userid; - } - if (!(count($topscores) < $lesson->maxhighscores)) { // if the top scores list is not full then dont need to worry about removing old scores - $scores = array_keys($topscores); - $flag = true; - // see if the new score is already listed in the top scores list - // if it is listed, then dont need to delete any records - foreach ($scores as $score) { - if ($score = $newgrade->grade) { - $flag = false; - } - } - if ($flag) { // if the score does not exist in the top scores list, then the lowest scores get thrown out. - ksort($topscores); // sort so the lowest score is first element - $lowscore = current($topscores); - // making a delete statement to delete all users with the lowest score - $deletestmt = 'lessonid = '. $lesson->id .' and userid = '; - $deletestmt .= current($lowscore); - while (next($lowscore)) { - $deletestmt .= " or userid = ".current($lowscore); - } - if (!delete_records_select('lesson_high_scores', $deletestmt)) { - /// not a big deal... - error('Did not delete extra high score(s)'); - } - } - } - } - - $newhighscore = new stdClass; - $newhighscore->lessonid = $lesson->id; - $newhighscore->userid = $USER->id; - $newhighscore->gradeid = $newgrade->id; - if (isset($_GET['name'])) { - $newhighscore->nickname = clean_param($_GET['name'], PARAM_CLEAN); - } - if (!insert_record("lesson_high_scores", $newhighscore)) { - error("Insert of new high score Failed!"); - } - - redirect("view.php?id=$cm->id&amp;action=highscores&amp;link=1", get_string("postsuccess", "lesson")); - echo "</div>"; - } - /*******************name for highscores **************************************/ - elseif ($action == 'nameforhighscores') { - print_heading_with_help($lesson->name, "overview", "lesson"); - echo "<div align=\"center\">"; - if (isset($_POST['name'])) { - $name = trim(clean_param($_POST['name'], PARAM_CLEAN)); - if (lesson_check_nickname($name)) { - redirect("view.php?id=$cm->id&amp;action=updatehighscores&amp;name=$name&amp;sesskey=".$USER->sesskey, get_string("nameapproved", "lesson")); - } else { - echo get_string("namereject", "lesson")."<br><br>"; - } - } - - echo "<form name=\"nickname\" method =\"post\" action=\"view.php\">"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />"; - echo "<input type=\"hidden\" name=\"action\" value=\"nameforhighscores\" />"; - - echo get_string("entername", "lesson").": <input type=\"text\" name=\"name\" maxlength=\"5\"><br />"; - echo "<input type=\"submit\" value=\"".get_string("submitname", "lesson")."\" />"; - echo "</form>"; - echo "</div>"; - } /*************** no man's land **************************************/ else { error("Fatal Error: Unknown Action: ".$action."\n"); } + /// Finish the page print_footer($course); diff --git a/mod/quiz/attempt.php b/mod/quiz/attempt.php index 4ff150d769a..afbbebff5ce 100644 --- a/mod/quiz/attempt.php +++ b/mod/quiz/attempt.php @@ -1,9 +1,9 @@ -<?php // $Id$ +<?PHP // $Id$ // This page prints a particular instance of quiz require_once("../../config.php"); - require_once("locallib.php"); + require_once("lib.php"); optional_variable($id); // Course Module ID, or optional_variable($q); // quiz ID @@ -33,7 +33,7 @@ } } - require_login($course->id, false, $cm); + require_login($course->id); /// Set number for next attempt: @@ -54,18 +54,13 @@ // Print the page header - if (!empty($quiz->popup)) { - define('MESSAGE_WINDOW', true); // This prevents the message window coming up - print_header("$course->shortname: ".format_string($quiz->name), '', '', '', '', false, '', '', false, ''); - - } else { - $strquizzes = get_string("modulenameplural", "quiz"); - $strquiz = get_string("modulename", "quiz"); - print_header_simple(format_string($quiz->name), "", - "<a href=\"index.php?id=$course->id\">$strquizzes</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($quiz->name,true)."</a> -> $strattemptnum", + $strquizzes = get_string("modulenameplural", "quiz"); + $strquiz = get_string("modulename", "quiz"); + + print_header_simple("$quiz->name", "", + "<A HREF=index.php?id=$course->id>$strquizzes</A> -> + <A HREF=\"view.php?id=$cm->id\">$quiz->name</A> -> $strattemptnum", "", "", true); - } echo '<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>'; // for overlib @@ -76,7 +71,7 @@ } /// Check subnet access - if ($quiz->subnet and !address_in_subnet(getremoteaddr(), $quiz->subnet)) { + if ($quiz->subnet and !address_in_subnet($_SERVER['REMOTE_ADDR'], $quiz->subnet)) { error(get_string("subneterror", "quiz"), "view.php?id=$cm->id"); } @@ -84,10 +79,10 @@ if ($quiz->password and empty($_POST['q'])) { if (empty($_POST['quizpassword'])) { - print_heading(format_string($quiz->name)); + print_heading($quiz->name); print_heading(get_string("attempt", "quiz", $attemptnumber)); if (trim(strip_tags($quiz->intro))) { - print_simple_box(format_text($quiz->intro), "center"); + print_simple_box(format_text($quiz->intro), "CENTER"); } echo "<br />\n"; @@ -97,16 +92,14 @@ echo "<div align=\"center\">\n"; print_string("requirepasswordmessage", "quiz"); echo "<br /><br />\n"; - echo " <input name=\"quizpassword\" type=\"password\" value=\"\" alt=\"password\" />"; - echo " <input type=\"submit\" value=\"".get_string("ok")."\" />\n"; + echo " <input name=\"quizpassword\" type=\"password\" value=\"\">"; + echo " <input type=\"submit\" value=\"".get_string("ok")."\">\n"; echo "</div>\n"; print_simple_box_end(); echo "</form>\n"; - if (empty($quiz->popup)) { - print_footer($course); - } + print_footer(); exit; } else { @@ -118,7 +111,7 @@ } -/// Get time limit if any. +/// BEGIN EDIT Get time limit if any. $timelimit = $quiz->timelimit * 60; @@ -136,9 +129,9 @@ if($timelimit and $timerstartvalue <= 0) { $timerstartvalue = 1; } - +/// END EDIT $timenow = time(); - $available = ($quiz->timeopen < $timenow and $timenow < $quiz->timeclose) || isteacher($course->id); + $available = ($quiz->timeopen < $timenow and $timenow < $quiz->timeclose); /// Check to see if they are submitting answers if ($rawanswers = data_submitted()) { @@ -166,14 +159,17 @@ } else if ('shuffleorder' == $key) { $shuffleorder = explode(",", $value); // Actual order questions were given in - } else if ('navigation' == $key) { - $navigation = $value; // Determines next page to show in quiz - } else { // Useful for debugging new question types. Must be last. error("Unrecognizable input has been posted ($key -> $value)"); } } + if($timelimit > 0) { + if(($timelimit + 60) <= $timesincestart) { + $quiz->timesincestart = $timesincestart; + } + } + /// Retrieve ->maxgrade for all questions If (!($grades = quiz_get_question_grades($quiz->id, $quiz->questions))) { $grades = array(); @@ -182,73 +178,42 @@ $questions[$qid]->maxgrade = $grade->grade; } - if (isset($timesincestart)) { - $quiz->timesincestart = $timesincestart; // To pass it on to quiz_grade_responses - } - - if (!$result = quiz_grade_responses($quiz, $questions, $unattempt->id)) { + if (!$result = quiz_grade_responses($quiz, $questions)) { error("Could not grade your quiz attempt!"); } - if ($attempt = quiz_save_attempt($quiz, $questions, $result, - $attemptnumber, 0 == $navigation)) { - if (empty($navigation)) { - add_to_log($course->id, "quiz", "submit", - "review.php?id=$cm->id&amp;attempt=$attempt->id", "$quiz->id", $cm->id); - } + if ($attempt = quiz_save_attempt($quiz, $questions, $result, $attemptnumber)) { + add_to_log($course->id, "quiz", "submit", + "review.php?id=$cm->id&attempt=$attempt->id", "$quiz->id", $cm->id); } else { notice(get_string("alreadysubmitted", "quiz"), "view.php?id=$cm->id"); - if (empty($quiz->popup)) { - print_footer($course); - } + print_footer($course); exit; } - if (empty($navigation)) { - /// Attempt has finished - - if (! quiz_save_best_grade($quiz, $USER->id)) { - error("Sorry! Could not calculate your best grade!"); - } - - if (empty($quiz->popup) and !$quiz->feedback) { - // No need to stop on this page, go directly to view.php - redirect('view.php?q='.$quiz->id); - } - - $strgrade = get_string("grade"); - $strscore = get_string("score", "quiz"); - - if ($quiz->grade) { - print_heading("$strscore: $result->sumgrades/$quiz->sumgrades ($result->percentage %)"); - print_heading("$strgrade: $result->grade/$quiz->grade"); - } - - /// continue button - use javascript to close down child window if in popup - include('attempt_close_js.php'); - - if ($quiz->feedback) { - $quiz->shuffleanswers = false; // Never shuffle answers in feedback - - /// Make sure to get all questions in case not all are shown - /// in quiz all the time. - $questions = quiz_get_attempt_questions($quiz, $attempt); - quiz_print_quiz_questions($quiz, $questions, - quiz_grade_responses($quiz, $questions, $unattempt->id), - $shuffleorder); - /// continue button - use javascript to close down child window if in popup - include('attempt_close_js.php'); - } - - if (empty($quiz->popup)) { - print_footer($course); - } - - exit; + if (! quiz_save_best_grade($quiz, $USER->id)) { + error("Sorry! Could not calculate your best grade!"); } - } else { - $navigation= 1; - $shuffleorder= NULL; + + $strgrade = get_string("grade"); + $strscore = get_string("score", "quiz"); + + if ($quiz->grade) { + print_heading("$strscore: $result->sumgrades/$quiz->sumgrades ($result->percentage %)"); + print_heading("$strgrade: $result->grade/$quiz->grade"); + } + + print_continue("view.php?id=$cm->id"); + + if ($quiz->feedback) { + $quiz->shuffleanswers = false; // Never shuffle answers in feedback + quiz_print_quiz_questions($quiz, $questions, $result, $shuffleorder); + print_continue("view.php?id=$cm->id"); + } + + print_footer($course); + + exit; } @@ -256,9 +221,7 @@ if (isguest()) { print_heading(get_string("guestsno", "quiz")); - if (empty($quiz->popup)) { - print_footer($course); - } + print_footer($course); exit; } @@ -269,14 +232,14 @@ } else if ($attempt = quiz_start_attempt($quiz->id, $USER->id, $attemptnumber)) { add_to_log($course->id, "quiz", "attempt", - "review.php?id=$cm->id&amp;attempt=$attempt->id", "$quiz->id", $cm->id); + "review.php?id=$cm->id&attempt=$attempt->id", "$quiz->id", $cm->id); } else { error("Sorry! Could not start the quiz (could not save starting time)"); } /// First print the headings and so on - print_heading(format_string($quiz->name)); + print_heading($quiz->name); if (!$available) { error("Sorry, this quiz is not available", "view.php?id=$cm->id"); @@ -284,7 +247,7 @@ print_heading(get_string("attempt", "quiz", $attemptnumber)); if (trim(strip_tags($quiz->intro))) { - print_simple_box(format_text($quiz->intro), "center"); + print_simple_box(format_text($quiz->intro), "CENTER"); } @@ -295,11 +258,6 @@ include("jsclock.php"); } -/// Include Javascript protection for this page if required - - if (!empty($quiz->popup)) { - include("protect_js.php"); - } /// Print all the questions @@ -307,7 +265,7 @@ $questions = quiz_get_attempt_questions($quiz, $attempt, true); if ($quiz->attemptonlast && $attemptnumber >= 2 and - $quiz->attempts == 0 || !$unattempt) { + $quiz->attempts == 0 || !unattempt) { // There are unlimited attempts or it is a new attempt. // As the attempt also builds on the last, we can here // have the student see the scores of the pre-entered @@ -321,8 +279,7 @@ // We do not show feedback or correct answers during an attempt: $quiz->feedback = $quiz->correctanswers = false; - if (!quiz_print_quiz_questions($quiz, $questions, - $result, $shuffleorder, $navigation)) { + if (!quiz_print_quiz_questions($quiz, $questions, $result)) { print_continue("view.php?id=$cm->id"); } @@ -332,8 +289,6 @@ require('jstimer.php'); } - if (empty($quiz->popup)) { - print_footer($course); - } + print_footer($course); ?> diff --git a/mod/quiz/attempt_close_js.php b/mod/quiz/attempt_close_js.php deleted file mode 100644 index 767e50e86a7..00000000000 --- a/mod/quiz/attempt_close_js.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.');?> - -<div align="center"> -<?php -if (!empty($quiz->popup)) { -?> - -<script language="javascript" type="text/javascript"> -<!-- - -document.write('<input type="button" value="<?php print_string('continue') ?>" '+ - 'onclick="javascript: window.opener.location.href=\'../../course/view.php?id=<?php echo $course->id ?>\'; '+ - 'window.close();" />'); -// --> -</script> -<noscript> -<?php print_string('closewindow'); ?> -</noscript> - -<?php -} else { - print_single_button("../../course/view.php", array( 'id' => $course->id ), get_string('continue')); -} -?> -</div> diff --git a/mod/quiz/backuplib.php b/mod/quiz/backuplib.php index eeea9867a17..46e7bc1b700 100644 --- a/mod/quiz/backuplib.php +++ b/mod/quiz/backuplib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //quiz mods @@ -9,26 +9,26 @@ // quiz quiz_categories // (CL,pk->id) (CL,pk->id) // | | - // ------------------------------------------------------------------- | - // | | | | |....................................... - // | | | | | . - // | | | | | . - // quiz_attempts quiz_grades quiz_question_grades quiz_question_versions | ----quiz_question_datasets---- . - // (UL,pk->id, fk->quiz) (UL,pk->id,fk->quiz) (CL,pk->id,fk->quiz) (CL,pk->id,fk->quiz) | | (CL,pk->id,fk->question, | . - // | | . | | fk->dataset_definition) | . - // | | . | | | . - // | | . | | | . - // | | . | | | . - // quiz_responses | quiz_questions quiz_dataset_definitions + // ----------------------------------------------- | + // | | | |....................................... + // | | | | . + // | | | | . + // quiz_attempts quiz_grades quiz_question_grades | ----quiz_question_datasets---- . + // (UL,pk->id, fk->quiz) (UL,pk->id,fk->quiz) (CL,pk->id,fk->quiz) | | (CL,pk->id,fk->question, | . + // | | | | fk->dataset_definition) | . + // | | | | | . + // | | | | | . + // | | | | | . + // quiz_responses | quiz_questions quiz_dataset_definitions // (UL,pk->id, fk->attempt)----------------------------------------------------(CL,pk->id,fk->category,files) (CL,pk->id,fk->category) // | | // | | // | | // | quiz_dataset_items // | (CL,pk->id,fk->definition) - // | - // | - // | + // | + // | + // | // -------------------------------------------------------------------------------------------------------------- // | | | | | | | // | | | | | | | @@ -86,7 +86,6 @@ // 2.-Standard module backup (Invoked via quiz_backup_mods). It includes this tables: // - quiz - // - quiz_question_versions // - quiz_question_grades // - quiz_attempts // - quiz_grades @@ -120,8 +119,6 @@ fwrite($bf,full_tag("INFO",4,false,$category->info)); fwrite($bf,full_tag("PUBLISH",4,false,$category->publish)); fwrite($bf,full_tag("STAMP",4,false,$category->stamp)); - fwrite($bf,full_tag("PARENT",4,false,$category->parent)); - fwrite($bf,full_tag("SORTORDER",4,false,$category->sortorder)); //Now, backup their questions $status = quiz_backup_question($bf,$preferences,$category->id); //End category @@ -162,7 +159,6 @@ fwrite ($bf,full_tag("QTYPE",6,false,$question->qtype)); fwrite ($bf,full_tag("STAMP",6,false,$question->stamp)); fwrite ($bf,full_tag("VERSION",6,false,$question->version)); - fwrite ($bf,full_tag("HIDDEN",6,false,$question->hidden)); //Now, depending of the qtype, call one function or other if ($question->qtype == "1") { $status = quiz_backup_shortanswer($bf,$preferences,$question->id); @@ -192,7 +188,7 @@ if ($counter % 10 == 0) { echo "."; if ($counter % 200 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -423,7 +419,6 @@ fwrite ($bf,full_tag("TOLERANCE",$level+1,false,$calculated->tolerance)); fwrite ($bf,full_tag("TOLERANCETYPE",$level+1,false,$calculated->tolerancetype)); fwrite ($bf,full_tag("CORRECTANSWERLENGTH",$level+1,false,$calculated->correctanswerlength)); - fwrite ($bf,full_tag("CORRECTANSWERFORMAT",$level+1,false,$calculated->correctanswerformat)); //Now backup numerical_units $status = quiz_backup_numerical_units($bf,$preferences,$question,7); //Now backup required dataset definitions and items... @@ -584,9 +579,7 @@ fwrite ($bf,full_tag("FEEDBACK",4,false,$quiz->feedback)); fwrite ($bf,full_tag("CORRECTANSWERS",4,false,$quiz->correctanswers)); fwrite ($bf,full_tag("GRADEMETHOD",4,false,$quiz->grademethod)); - fwrite ($bf,full_tag("DECIMALPOINTS",4,false,$quiz->decimalpoints)); fwrite ($bf,full_tag("REVIEW",4,false,$quiz->review)); - fwrite ($bf,full_tag("QUESTIONSPERPAGE",4,false,$quiz->questionsperpage)); fwrite ($bf,full_tag("SHUFFLEQUESTIONS",4,false,$quiz->shufflequestions)); fwrite ($bf,full_tag("SHUFFLEANSWERS",4,false,$quiz->shuffleanswers)); fwrite ($bf,full_tag("QUESTIONS",4,false,$quiz->questions)); @@ -597,11 +590,8 @@ fwrite ($bf,full_tag("TIMELIMIT",4,false,$quiz->timelimit)); fwrite ($bf,full_tag("PASSWORD",4,false,$quiz->password)); fwrite ($bf,full_tag("SUBNET",4,false,$quiz->subnet)); - fwrite ($bf,full_tag("POPUP",4,false,$quiz->popup)); //Now we print to xml question_grades (Course Level) $status = backup_quiz_question_grades($bf,$preferences,$quiz->id); - //Now we print to xml question_versions (Course Level) - $status = backup_quiz_question_versions($bf,$preferences,$quiz->id); //if we've selected to backup users info, then execute: // - backup_quiz_grades // - backup_quiz_attempts @@ -647,37 +637,6 @@ return $status; } - //Backup quiz_question_versions contents (executed from quiz_backup_mods) - function backup_quiz_question_versions ($bf,$preferences,$quiz) { - - global $CFG; - - $status = true; - - $quiz_question_versions = get_records("quiz_question_versions","quiz",$quiz,"id"); - //If there are question_versions - if ($quiz_question_versions) { - //Write start tag - $status =fwrite ($bf,start_tag("QUESTION_VERSIONS",4,true)); - //Iterate over each question_version - foreach ($quiz_question_versions as $que_ver) { - //Start question version - $status =fwrite ($bf,start_tag("QUESTION_VERSION",5,true)); - //Print question_version contents - fwrite ($bf,full_tag("ID",6,false,$que_ver->id)); - fwrite ($bf,full_tag("OLDQUESTION",6,false,$que_ver->oldquestion)); - fwrite ($bf,full_tag("NEWQUESTION",6,false,$que_ver->newquestion)); - fwrite ($bf,full_tag("USERID",6,false,$que_ver->userid)); - fwrite ($bf,full_tag("TIMESTAMP",6,false,$que_ver->timestamp)); - //End question version - $status =fwrite ($bf,end_tag("QUESTION_VERSION",5,true)); - } - //Write end tag - $status =fwrite ($bf,end_tag("QUESTION_VERSIONS",4,true)); - } - return $status; - } - //Backup quiz_grades contents (executed from quiz_backup_mods) function backup_quiz_grades ($bf,$preferences,$quiz) { @@ -762,7 +721,6 @@ //Print response contents fwrite ($bf,full_tag("ID",8,false,$response->id)); fwrite ($bf,full_tag("QUESTION",8,false,$response->question)); - fwrite ($bf,full_tag("ORIGINALQUESTION",8,false,$response->originalquestion)); fwrite ($bf,full_tag("ANSWER",8,false,$response->answer)); fwrite ($bf,full_tag("GRADE",8,false,$response->grade)); //End response diff --git a/mod/quiz/category.php b/mod/quiz/category.php index 4798ae5caca..119952c931f 100644 --- a/mod/quiz/category.php +++ b/mod/quiz/category.php @@ -1,793 +1,182 @@ -<?php // $Id$ +<?PHP // $Id$ // Allows a teacher to create, edit and delete categories require_once("../../config.php"); - require_once("locallib.php"); + require_once("lib.php"); - $id = required_param('id'); // course id + require_variable($id); // course if (! $course = get_record("course", "id", $id)) { error("Course ID is incorrect"); } - if (isset($_REQUEST['backtoquiz'])) { + if (isset($backtoquiz)) { redirect("edit.php"); } - require_login($course->id, false); - - if (!isteacheredit($course->id)) { - error("Only teachers authorized to edit the course '{$course->fullname}' can use this page!"); - } - - /// Header: - print_header_simple(get_string('editcategories', 'quiz'), '', - "<a href=\"index.php?id=$course->id\">".get_string('modulenameplural', 'quiz').'</a>'. - ' -> '.get_string('editcategories', 'quiz')); - - /// CHECK FOR AND ACT UPON VARIABLES SUBMITTED VIA GET OR POST - $qcobject = new quiz_category_object(); - $qcobject->set_course($course); - - // Execute commands, but only if sesskey is o.k. - if (isset($_REQUEST['sesskey']) and confirm_sesskey()) { - if (isset($_REQUEST['delete']) and !isset($_REQUEST['cancel'])) { - if (isset($_REQUEST['confirm'])) { - /// 'confirm' is the category to move existing questions to - $qcobject->delete_category($_REQUEST['delete'], $_REQUEST['confirm']); - } else { - $qcobject->delete_category($_REQUEST['delete']); - } - } else if (isset($_REQUEST['moveup'])) { - $qcobject->move_category_up_down('up', $_REQUEST['moveup']); - } else if (isset($_REQUEST['movedown'])) { - $qcobject->move_category_up_down('down', $_REQUEST['movedown']); - } else if (isset($_REQUEST['hide'])) { - $qcobject->publish_category(false, $_REQUEST['hide']); - } else if (isset($_REQUEST['move']) and isset($_REQUEST['moveto'])) { - $qcobject->move_category($_REQUEST['move'], $_REQUEST['moveto']); - } else if (isset($_REQUEST['publish'])) { - $qcobject->publish_category(true, $_REQUEST['publish']); - } else if (isset($_REQUEST['addcategory'])) { - $newparent = required_param('newparent'); - $newcategory = required_param('newcategory'); - $newinfo = required_param('newinfo'); - $newpublish = required_param('newpublish'); - $qcobject->add_category($newparent, $newcategory, $newinfo, $newpublish, $course->id); - } else if (isset($_REQUEST['edit'])) { - $qcobject->edit_single_category($_REQUEST['edit']); - } else if (isset($_REQUEST['updateid'])) { - $updateparent = required_param('updateparent'); - $updatename = required_param('updatename'); - $updateinfo = required_param('updateinfo'); - $updatepublish = required_param('updatepublish'); - $qcobject->update_category($_REQUEST['updateid'], $updateparent, $updatename, $updateinfo, $updatepublish, $course->id); - } - } - - /// DISPLAY THE NORMAL USER INTERFACE - $qcobject->display_user_interface(); - - print_footer($course); - - - -/** -* Class quiz_category_object -* -* Used for handling changes to the quiz categories -* -*/ -class quiz_category_object { - - var $str; - var $pixpath; - var $edittable; - var $newtable; - var $tab; - var $tabsize = 3; - var $categories; - var $categorystrings; - var $defaultcategory; - var $course; - -/** -* Constructor -* -* Gets necessary strings and sets relevant path information -* -*/ - function quiz_category_object() { - global $CFG; - - $this->tab = str_repeat('&nbsp;', $this->tabsize); - - $this->str->course = get_string('course'); - $this->str->category = get_string('category', 'quiz'); - $this->str->categoryinfo = get_string('categoryinfo', 'quiz'); - $this->str->questions = get_string('questions', 'quiz'); - $this->str->add = get_string('add'); - $this->str->movecategoryto = get_string('movecategoryto'); - $this->str->delete = get_string('delete'); - $this->str->moveup = get_string('moveup'); - $this->str->movedown = get_string('movedown'); - $this->str->edit = get_string('editthiscategory'); - $this->str->hide = get_string('hide'); - $this->str->publish = get_string('publish', 'quiz'); - $this->str->order = get_string('order'); - $this->str->parent = get_string('parent', 'quiz'); - $this->str->add = get_string('add'); - $this->str->action = get_string('action'); - $this->str->top = get_string('top', 'quiz'); - $this->str->addcategory = get_string('addcategory', 'quiz'); - $this->str->editcategory = get_string('editcategory', 'quiz'); - $this->str->cancel = get_string('cancel'); - $this->str->editcategories = get_string('editcategories', 'quiz'); - $this->pixpath = $CFG->pixpath; - - } - -/** -* Sets the course for this object -* -* @param object course -*/ - function set_course($course) { - $this->course = $course; - } - -/** -* Displays the user interface -* -* @param object modform -*/ - function display_user_interface() { - $this->initialize(); - - /// Interface for adding a new category: - print_heading_with_help($this->str->addcategory, 'categories_edit', 'quiz'); - $this->output_new_table(); - echo '<br />'; - - /// Interface for editing existing categories - print_heading_with_help($this->str->editcategories, 'categories', 'quiz'); - $this->output_edit_table(); - echo '<br />'; - - print_continue('edit.php'); + require_login($course->id); + if (!isteacher($course->id)) { + error("Only teachers can use this page!"); } -/** -* Initializes this classes general category-related variables -* -*/ - function initialize() { +/// Print headings - /// Get the existing categories - if (!$this->defaultcategory = quiz_get_default_category($this->course->id)) { - error("Error: Could not find or make a category!"); + $strcategory = get_string("category", "quiz"); + $strcategoryinfo = get_string("categoryinfo", "quiz"); + $strquestions = get_string("questions", "quiz"); + $strpublish = get_string("publish", "quiz"); + $strdelete = get_string("delete"); + $straction = get_string("action"); + $stradd = get_string("add"); + $strcancel = get_string("cancel"); + $strsavechanges = get_string("savechanges"); + $strbacktoquiz = get_string("backtoquiz", "quiz"); + + $streditingquiz = get_string(isset($modform->instance) ? "editingquiz" + : "editquestions", + "quiz"); + $streditcategories = get_string("editcategories", "quiz"); + + print_header_simple("$streditcategories", " $streditcategories", + "<A HREF=\"edit.php\">$streditingquiz</A> -> $streditcategories"); + + +/// Delete category if the user wants to delete it + + if (isset($delete) and !isset($cancel)) { + if (!$category = get_record("quiz_categories", "id", $delete)) { // security + error("No such category $delete!"); } - $this->categories = $this->get_quiz_categories(null, "parent, sortorder, name ASC"); - - $this->categories = $this->arrange_categories($this->categories); - - // create the array of id=>full_name strings - $this->categorystrings = $this->expanded_category_strings($this->categories); - } - - - -/** -* Outputs a table to allow entry of a new category -* -*/ - function output_new_table() { - global $USER; - $publishoptions[0] = get_string("no"); - $publishoptions[1] = get_string("yes"); - - $this->newtable->head = array ($this->str->parent, $this->str->category, $this->str->categoryinfo, $this->str->publish, $this->str->action); - $this->newtable->width = 200; - $this->newtable->data[] = array(); - $this->newtable->tablealign = 'center'; - - /// Each section below adds a data cell to the table row - - - $viableparents[0] = $this->str->top; - $viableparents = $viableparents + $this->categorystrings; - $this->newtable->align['parent'] = "left"; - $this->newtable->wrap['parent'] = "nowrap"; - $row['parent'] = choose_from_menu ($viableparents, "newparent", $this->str->top, "", "", "", true); - - $this->newtable->align['category'] = "left"; - $this->newtable->wrap['category'] = "nowrap"; - $row['category'] = '<input type="text" name="newcategory" value="" size="15" />'; - - $this->newtable->align['info'] = "left"; - $this->newtable->wrap['info'] = "nowrap"; - $row['info'] = '<input type="text" name="newinfo" value="" size="50" />'; - - $this->newtable->align['publish'] = "left"; - $this->newtable->wrap['publish'] = "nowrap"; - $row['publish'] = choose_from_menu ($publishoptions, "newpublish", "", "", "", "", true); - - $this->newtable->align['action'] = "left"; - $this->newtable->wrap['action'] = "nowrap"; - $row['action'] = '<input type="submit" value="' . $this->str->add . '" />'; - - - $this->newtable->data[] = $row; - - // wrap the table in a form and output it - echo '<form action="category.php" method="post">'; - echo "<input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />"; - echo '<input type="hidden" name="id" value="'. $this->course->id . '" />'; - echo '<input type="hidden" name="addcategory" value="true" />'; - print_table($this->newtable); - echo '</form>'; - } - -/** -* Outputs a table to allow editing/rearranging of existing categories -* -* $this->initialize() must have already been called -* -* @param object course -*/ - function output_edit_table() { - $this->edittable->head = array ($this->str->course, $this->str->category, $this->str->categoryinfo, $this->str->questions, $this->str->publish, - $this->str->delete, $this->str->order, $this->str->movecategoryto); - $this->edittable->width = 200; - $this->edittable->tablealign = 'center'; - - // get list of short names to add to the course display. Only necessary if user has admin view. - if (isadmin()) { - $keys = implode(',', $this->get_course_ids($this->categories)); - $courses = get_records_select_menu('course', "id in ($keys)", '', 'id, shortname'); - } else { - $courses = $this->course->shortname; - } - $this->build_edit_table_body($this->categories, $courses); - print_table($this->edittable); - } -/** -* Recursively builds up the edit-categories table body -* -* @param array categories contains category objects in a tree representation -* @param mixed courses String with shortname of course | array containing courseid=>shortname -* @param int depth controls the indenting -*/ - function build_edit_table_body($categories, $courses, $depth = 0) { - $countcats = count($categories); - $count = 0; - $first = true; - $last = false; - - foreach ($categories as $category) { - $count++; - if ($count == $countcats) { - $last = true; - } - $up = $first ? false : true; - $down = $last ? false : true; - $first = false; - $courseshortname = is_string($courses) ? $courses : $courses[$category->course]; - $this->quiz_edit_category_row($category, $courseshortname, $depth, $up, $down); - if (isset($category->children)) { - $this->build_edit_table_body($category->children, $courses, $depth + 1); - } - } - } - -/** -* gets all the courseids for the given categories -* -* @param array categories contains category objects in a tree representation -* @return array courseids flat array in form categoryid=>courseid -*/ - function get_course_ids($categories) { - $courseids = array(); - foreach ($categories as $key=>$cat) { - $courseids[$key] = $cat->course; - if (!empty($cat->children)) { - $courseids = array_merge($courseids, $this->get_course_ids($cat->children)); - } - } - return $courseids; - } - -/** -* Constructs each row of the edit-categories table -* -* @param object category -* @param int depth controls the indenting -* @param string shortname short name of the course -* @param boolean up can it be moved up? -* @param boolean down can it be moved down? -*/ - function quiz_edit_category_row($category, $shortname, $depth, $up = false, $down = false) { - global $USER; - $fill = str_repeat($this->tab, $depth); - - $linkcss = $category->publish ? ' class="published"' : ' class="unpublished"'; - - /// Each section below adds a data cell to this table row - $this->edittable->align["$category->id.course"] = "left"; - $this->edittable->wrap["$category->id.course"] = "nowrap"; - $row["$category->id.course"] = $shortname; - - $this->edittable->align["$category->id.name"] = "left"; - $this->edittable->wrap["$category->id.name"] = "nowrap"; - $row["$category->id.name"] = '<a ' . $linkcss . 'title="' . $this->str->edit. '" href="category.php?id=' . $this->course->id . - '&amp;edit=' . $category->id . '&amp;sesskey='.$USER->sesskey.'"><img src="' . $this->pixpath . '/t/edit.gif" height="11" width="11" border="0" - alt="' .$this->str->edit. '" /> ' . $fill . $category->name . '</a>'; - - $this->edittable->align["$category->id.info"] = "left"; - $this->edittable->wrap["$category->id.info"] = "nowrap"; - $row["$category->id.info"] = '<a ' . $linkcss . 'title="' . $this->str->edit .'" href="category.php?id=' . $this->course->id . - '&amp;edit=' . $category->id . '&amp;sesskey='.$USER->sesskey.'">' . $category->info . '</a>'; - - $this->edittable->align["$category->id.qcount"] = "center"; - $row["$category->id.qcount"] = $category->questioncount; - - $this->edittable->align["$category->id.publish"] = "center"; - $this->edittable->wrap["$category->id.publish"] = "nowrap"; - if (!empty($category->publish)) { - $row["$category->id.publish"] = '<a title="' . $this->str->hide . '" href="category.php?id=' . $this->course->id . '&amp;hide=' . $category->id . - '&amp;sesskey='.$USER->sesskey.'"><img src="' . $this->pixpath . '/t/hide.gif" height="11" width="11" border="0" alt="' .$this->str->hide. '" /></a> '; - } else { - $row["$category->id.publish"] = '<a title="' . $this->str->publish . '" href="category.php?id=' . $this->course->id . '&amp;publish=' . $category->id . - '&amp;sesskey='.$USER->sesskey.'"><img src="' . $this->pixpath . '/t/show.gif" height="11" width="11" border="0" alt="' .$this->str->publish. '" /></a> '; - } - - if ($category->id != $this->defaultcategory) { - $this->edittable->align["$category->id.delete"] = "center"; - $this->edittable->wrap["$category->id.delete"] = "nowrap"; - $row["$category->id.delete"] = '<a title="' . $this->str->delete . '" href="category.php?id=' . $this->course->id . - '&amp;delete=' . $category->id . '&amp;sesskey='.$USER->sesskey.'"><img src="' . $this->pixpath . '/t/delete.gif" height="11" width="11" border="0" alt="' .$this->str->delete. '" /></a> '; - } else { - $row["$category->id.delete"] = ''; - } - - $this->edittable->align["$category->id.order"] = "left"; - $this->edittable->wrap["$category->id.order"] = "nowrap"; - $icons = ''; - if ($up) { - $icons .= '<a title="' . $this->str->moveup .'" href="category.php?id=' . $this->course->id . '&amp;moveup=' . $category->id . '&amp;sesskey='.$USER->sesskey.'"> - <img src="' . $this->pixpath . '/t/up.gif" height="11" width="11" border="0" alt="' . $this->str->moveup. '" /></a> '; - } - if ($down) { - $icons .= '<a title="' . $this->str->movedown .'" href="category.php?id=' . $this->course->id . '&amp;movedown=' . $category->id . '&amp;sesskey='.$USER->sesskey.'"> - <img src="' . $this->pixpath . '/t/down.gif" height="11" width="11" border="0" alt="' .$this->str->movedown. '" /></a> '; - } - $row["$category->id.order"]= $icons; - - $this->edittable->align["$category->id.moveto"] = "left"; - $this->edittable->wrap["$category->id.moveto"] = "nowrap"; - if ($category->id != $this->defaultcategory) { - $viableparents = $this->categorystrings; - $this->set_viable_parents($viableparents, $category); - $viableparents = array(0=>$this->str->top) + $viableparents; - - $row["$category->id.moveto"] = popup_form ("category.php?id={$this->course->id}&amp;move={$category->id}&amp;sesskey=$USER->sesskey&amp;moveto=", - $viableparents, "moveform{$category->id}", "$category->parent", "", "", "", true); - } else { - $row["$category->id.moveto"]='---'; - } - - - $this->edittable->data[$category->id] = $row; - } - - - function edit_single_category($categoryid) { - /// Interface for adding a new category - global $USER; - $this->initialize(); - - /// Interface for editing existing categories - if ($category = get_record("quiz_categories", "id", $categoryid)) { - echo '<h2 align="center">'; - echo $this->str->edit; - helpbutton("categories_edit", $this->str->editcategory, "quiz"); - echo '</h2>'; - echo '<table width="100%"><tr><td>'; - $this->output_edit_single_table($category); - echo '</td></tr></table>'; - echo '<p><div align="center"><form action="category.php" method="get"> - <input type="hidden" name="sesskey" value="'.$USER->sesskey.'" /> - <input type="hidden" name="id" value="' . $this->course->id . '" /> - <input type="submit" value="' . $this->str->cancel . '" /></form></div></p>'; - print_footer($this->course); - exit; - } else { - error("Category $categoryid not found", "category.php?id={$this->course->id}"); - } - } - - -/** -* Outputs a table to allow editing of an existing category -* -* @param object category -*/ - function output_edit_single_table($category) { - global $USER; - $publishoptions[0] = get_string("no"); - $publishoptions[1] = get_string("yes"); - $strupdate = get_string('update'); - - unset ($edittable); - - $edittable->head = array ($this->str->parent, $this->str->category, $this->str->categoryinfo, $this->str->publish, $this->str->action); - $edittable->width = 200; - $edittable->data[] = array(); - $edittable->tablealign = 'center'; - - /// Each section below adds a data cell to the table row - - $viableparents = $this->categorystrings; - $this->set_viable_parents($viableparents, $category); - $viableparents = array(0=>$this->str->top) + $viableparents; - $edittable->align['parent'] = "left"; - $edittable->wrap['parent'] = "nowrap"; - $row['parent'] = choose_from_menu ($viableparents, "updateparent", "{$category->parent}", "", "", "", true); - - $edittable->align['category'] = "left"; - $edittable->wrap['category'] = "nowrap"; - $row['category'] = '<input type="text" name="updatename" value="' . $category->name . '" size="15" />'; - - $edittable->align['info'] = "left"; - $edittable->wrap['info'] = "nowrap"; - $row['info'] = '<input type="text" name="updateinfo" value="' . $category->info . '" size="50" />'; - - $edittable->align['publish'] = "left"; - $edittable->wrap['publish'] = "nowrap"; - $selected = (boolean)$category->publish ? 1 : 0; - $row['publish'] = choose_from_menu ($publishoptions, "updatepublish", $selected, "", "", "", true); - - $edittable->align['action'] = "left"; - $edittable->wrap['action'] = "nowrap"; - $row['action'] = '<input type="submit" value="' . $strupdate . '" />'; - - $edittable->data[] = $row; - - // wrap the table in a form and output it - echo '<p><form action="category.php" method="post">'; - echo "<input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />"; - echo '<input type="hidden" name="id" value="'. $this->course->id . '" />'; - echo '<input type="hidden" name="updateid" value=' . $category->id . '" />'; - print_table($edittable); - echo '</form></p>'; - } - - -/** -* Creates an array of "full-path" category strings -* Structure: -* key => string -* where key is the category id, and string contains the name of all ancestors as well as the particular category name -* E.g. '123'=>'Language / English / Grammar / Modal Verbs" -* -* @param array $categories an array containing categories arranged in a tree structure -*/ - function expanded_category_strings($categories, $parent=null) { - $prefix = is_null($parent) ? '' : "$parent / "; - $categorystrings = array(); - foreach ($categories as $key => $category) { - $expandedname = "$prefix$category->name"; - $categorystrings[$key] = $expandedname; - if (isset($category->children)) { - $categorystrings = $categorystrings + $this->expanded_category_strings($category->children, $expandedname); - } - } - return $categorystrings; - } - - -/** -* Arranges the categories into a hierarchical tree -* -* If a category has children, it's "children" property holds an array of children -* The questioncount for each category is also calculated -* -* @param array records a flat list of the categories -* @return array categorytree a hierarchical list of the categories -*/ - function arrange_categories($records) { - //todo: get the question count for all records with one sql statement: select category, count(*) from quiz_questions group by category - $levels = array(); - - // build a levels array, which places each record according to it's depth from the top level - $parents = array(0); - while (!empty($parents)) { - $children = array(); - foreach ($records as $record) { - if (in_array($record->parent, $parents)) { - $children[] = $record->id; - } - } - if (!empty($children)) { - $levels[] = $children; - } - $parents = $children; - } - // if there is no hierarchy (e.g., if all records have parent == 0), set level[0] to these keys - if (empty($levels)) { - $levels[0] = array_keys($records); - } - - // build a hierarchical array that depicts the parent-child relationships of the categories - $categorytree = array(); - for ($index = count($levels) - 1; $index >= 0; $index--) { - foreach($levels[$index] as $key) { - $parentkey = $records[$key]->parent; - if (!($records[$key]->questioncount = count_records('quiz_questions', 'category', $records[$key]->id, 'hidden', 0))) { - $records[$key]->questioncount = 0; - } - if ($parentkey == 0) { - $categorytree[$key] = $records[$key]; - } else { - $records[$parentkey]->children[$key] = $records[$key]; - } - } - } - return $categorytree; - } - - -/** -* Sets the viable parents -* -* Viable parents are any except for the category itself, or any of it's descendants -* The parentstrings parameter is passed by reference and changed by this function. -* -* @param array parentstrings a list of parentstrings -* @param object category -*/ - function set_viable_parents(&$parentstrings, $category) { - - unset($parentstrings[$category->id]); - if (isset($category->children)) { - foreach ($category->children as $child) { - $this->set_viable_parents($parentstrings, $child); - } - } - } - -/** -* Gets quiz categories -* -* @param int parent - if given, restrict records to those with this parent id. -* @param string sort - [[sortfield [,sortfield]] {ASC|DESC}] -* @return array categories -*/ - function get_quiz_categories($parent=null, $sort="sortorder ASC") { - - $admin = isadmin(); - if ($admin) { - if (is_null($parent)) { - $categories = get_records("quiz_categories", "", "", $sort); - } else { - $categories = get_records("quiz_categories", "parent", $parent, $sort); - } - } else { - if (is_null($parent)) { - $categories = get_records('quiz_categories', 'course', "{$this->course->id}", $sort); - } else { - $select = "parent = '$parent' AND course = '{$this->course->id}'"; - $categories = get_records_select('quiz_categories', $select, $sort); - } - } - return $categories; - } - - -/** -* Deletes an existing quiz category -* -* @param int deletecat id of category to delete -* @param int destcategoryid id of category which will inherit the orphans of deletecat -*/ - function delete_category($deletecat, $destcategoryid = null) { - global $USER; - - if (!$category = get_record("quiz_categories", "id", $deletecat)) { // security - error("No such category $deletecat!", "category.php?id={$this->course->id}"); - } - - if (!is_null($destcategoryid)) { // Need to move some questions before deleting the category - if (!$category2 = get_record("quiz_categories", "id", $destcategoryid)) { // security - error("No such category $destcategoryid!", "category.php?id={$this->course->id}"); + if (isset($confirm)) { // Need to move some questions before deleting the category + if (!$category2 = get_record("quiz_categories", "id", $confirm)) { // security + error("No such category $confirm!"); } if (! quiz_move_questions($category->id, $category2->id)) { - error("Error while moving questions from category '$category->name' to '$category2->name'", "category.php?id={$this->course->id}"); + error("Error while moving questions from category '$category->name' to '$category2->name'"); } } else { - // todo: delete any hidden questions that are not actually in use any more if ($count = count_records("quiz_questions", "category", $category->id)) { $vars->name = $category->name; $vars->count = $count; - print_simple_box(get_string("categorymove", "quiz", $vars), "center"); - $this->initialize(); - $categorystrings = $this->categorystrings; - unset ($categorystrings[$category->id]); - echo "<p><div align=\"center\"><form action=\"category.php\" method=\"get\">"; - echo "<input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />"; - echo "<input type=\"hidden\" name=\"id\" value=\"{$this->course->id}\" />"; - echo "<input type=\"hidden\" name=\"delete\" value=\"$category->id\" />"; - choose_from_menu($categorystrings, "confirm", "", ""); - echo "<input type=\"submit\" value=\"". get_string("categorymoveto", "quiz") . "\" />"; - echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->str->cancel}\" />"; - echo "</form></div></p>"; - print_footer($this->course); + print_simple_box(get_string("categorymove", "quiz", $vars), "CENTER"); + $categories = quiz_get_category_menu($course->id); + unset($categories[$category->id]); + echo "<CENTER><P><FORM ACTION=category.php METHOD=get>"; + echo "<INPUT TYPE=hidden NAME=id VALUE=\"$course->id\">"; + echo "<INPUT TYPE=hidden NAME=delete VALUE=\"$category->id\">"; + choose_from_menu($categories, "confirm", "", ""); + echo "<INPUT TYPE=submit VALUE=\"".get_string("categorymoveto", "quiz")."\">"; + echo "<INPUT TYPE=submit NAME=cancel VALUE=\"$strcancel\">"; + echo "</FORM></P></CENTER>"; + print_footer($course); exit; } } delete_records("quiz_categories", "id", $category->id); - - /// Send the children categories to live with their grandparent - if ($childcats = get_records("quiz_categories", "parent", $category->id)) { - foreach ($childcats as $childcat) { - if (! set_field("quiz_categories", "parent", $category->parent, "id", $childcat->id)) { - error("Could not update a child category!", "category.php?id={$this->course->id}"); - } - } - } - - /// Finally delete the category itself - if (delete_records("quiz_categories", "id", $category->id)) { - notify(get_string("categorydeleted", "quiz", $category->name), 'green'); - } + notify(get_string("categorydeleted", "", $category->name)); } -/** -* Moves a category up or down in the display order -* -* @param string direction up|down -* @param int categoryid id of category to move -*/ - function move_category_up_down ($direction, $categoryid) { - /// Move a category up or down - $swapcategory = NULL; - $movecategory = NULL; +/// Print heading - if ($direction == 'up') { - if ($movecategory = get_record("quiz_categories", "id", $categoryid)) { - $categories = $this->get_quiz_categories("$movecategory->parent", 'parent, sortorder, name'); + echo "<P ALIGN=CENTER><FONT SIZE=3>"; + echo $streditcategories; + helpbutton("categories", $streditcategories, "quiz"); + echo "</FONT></P>"; - foreach ($categories as $category) { - if ($category->id == $movecategory->id) { - break; - } - $swapcategory = $category; +/// If data submitted, then process and store. + + if ($form = data_submitted()) { + + $form = (array)$form; + + // Peel out all the data from variable names. + foreach ($form as $key => $val) { + $cat = NULL; + if ($key == "new" and $val != "") { + $cat->name = $val; + $cat->info = $form['newinfo']; + $cat->publish = $form['newpublish']; + $cat->course = $course->id; + $cat->stamp = make_unique_id_code(); + if (!insert_record("quiz_categories", $cat)) { + error("Could not insert the new quiz category '$val'"); + } else { + notify(get_string("categoryadded", "", $val)); } - } - } - if ($direction == 'down') { - if ($movecategory = get_record("quiz_categories", "id", $categoryid)) { - $categories = $this->get_quiz_categories("$movecategory->parent", 'parent, sortorder, name'); - $choosenext = false; - foreach ($categories as $category) { - if ($choosenext) { - $swapcategory = $category; - break; - } - if ($category->id == $movecategory->id) { - $choosenext = true; - } - } - } - } - if ($swapcategory and $movecategory) { // Renumber everything for robustness - $count=0; - foreach ($categories as $category) { - $count++; - if ($category->id == $swapcategory->id) { - $category = $movecategory; - } else if ($category->id == $movecategory->id) { - $category = $swapcategory; - } - if (! set_field("quiz_categories", "sortorder", $count, "id", $category->id)) { - notify("Could not update that category!"); + + } else if (substr($key,0,1) == "c") { + $cat->id = substr($key,1); + $cat->name = $val; + $cat->info = $form["i$cat->id"]; + $cat->publish = $form["p$cat->id"]; + $cat->course = $course->id; + if (!update_record("quiz_categories", $cat)) { + error("Could not update the quiz category '$val'"); } } } } -/** -* Changes the parent of a category -* -* @param int categoryid -* @param int parentid -*/ - function move_category($categoryid, $parentid) { - /// Move a category to a new parent - if ($tempcat = get_record("quiz_categories", "id", $categoryid)) { - if ($tempcat->parent != $parentid) { - if (! set_field("quiz_categories", "parent", $parentid, "id", $tempcat->id)) { - notify("Could not update that category!"); - } - } +/// Get the existing categories + if (!$categories = get_records("quiz_categories", "course", $course->id, "id ASC")) { + unset($categories); + if (!$categories[] = quiz_get_default_category($course->id)) { + error("Error: Could not find or make a category!"); } } -/** -* Changes the published status of a category -* -* @param boolean publish -* @param int categoryid -*/ - function publish_category($publish, $categoryid) { - /// Hide or publish a category - $publish = ($publish == false) ? 0 : 1; - $tempcat = get_record("quiz_categories", "id", $categoryid); - if ($tempcat) { - if (! set_field("quiz_categories", "publish", $publish, "id", $tempcat->id)) { - notify("Could not update that category!"); - } +/// Find lowest ID category - this is the default category + $default = 99999; + foreach ($categories as $category) { + if ($category->id < $default) { + $default = $category->id; } } -/** -* Creates a new category with given params -* -* @param int newparent -* @param string newcategory the name -* @param string newinfo -* @param int newpublish -* @param int newcourse the id of the associated course -*/ - function add_category($newparent, $newcategory, $newinfo, $newpublish, $newcourse) { - $cat = NULL; - $cat->parent = $newparent; - $cat->name = $newcategory; - $cat->info = $newinfo; - $cat->publish = $newpublish; - $cat->course = $newcourse; - $cat->sortorder = 999; - $cat->stamp = make_unique_id_code(); - if (!insert_record("quiz_categories", $cat)) { - error("Could not insert the new quiz category '$newcategory'", "category.php?id={$newcourse}"); + $publishoptions[0] = get_string("no"); + $publishoptions[1] = get_string("yes"); + + +/// Print the table of all categories + $table->head = array ($strcategory, $strcategoryinfo, $strpublish, $strquestions, $straction); + $table->align = array ("LEFT", "LEFT", "CENTER", "CENTER", "CENTER"); + $table->size = array ("80", "80", "40", "40", "50"); + $table->width = 200; + $table->nowrap = true; + + echo "<FORM ACTION=category.php METHOD=post>"; + foreach ($categories as $category) { + $count = count_records("quiz_questions", "category", $category->id); + if ($category->id == $default) { + $delete = ""; // Can't delete default category } else { - notify(get_string("categoryadded", "quiz", $newcategory), 'green'); + $delete = "<A HREF=\"category.php?id=$course->id&delete=$category->id\">$strdelete</A>"; } - + $table->data[] = array ("<INPUT TYPE=text NAME=\"c$category->id\" VALUE=\"$category->name\" SIZE=15>", + "<INPUT TYPE=text NAME=\"i$category->id\" VALUE=\"$category->info\" SIZE=50>", + choose_from_menu ($publishoptions, "p$category->id", "$category->publish", "", "", "", true), + "$count", + $delete); } + $table->data[] = array ("<INPUT TYPE=text NAME=\"new\" VALUE=\"\" SIZE=15>", + "<INPUT TYPE=text NAME=\"newinfo\" VALUE=\"\" SIZE=50>", + choose_from_menu ($publishoptions, "newpublish", "", "", "", "", true), + "", + "$stradd"); + print_table($table); + echo "<INPUT TYPE=hidden NAME=id VALUE=\"$course->id\">"; + echo "<CENTER><BR><INPUT TYPE=submit VALUE=\"$strsavechanges\"> "; + echo "<BR><BR><INPUT TYPE=submit NAME=backtoquiz VALUE=\"$strbacktoquiz\"> "; + echo "</CENTER>"; + echo "</FORM>"; -/** -* Updates an existing category with given params -* -* @param int updateid -* @param int updateparent -* @param string updatename -* @param string updateinfo -* @param int updatepublish -* @param int courseid the id of the associated course -*/ - function update_category($updateid, $updateparent, $updatename, $updateinfo, $updatepublish, $courseid) { - - $cat = NULL; - $cat->id = $updateid; - $cat->parent = $updateparent; - $cat->name = $updatename; - $cat->info = $updateinfo; - $cat->publish = $updatepublish; - if (!update_record("quiz_categories", $cat)) { - error("Could not update the category '$updatename'", "category.php?id={$courseid}"); - } else { - notify(get_string("categoryupdated", 'quiz'), 'green'); - } - } - -} + print_footer(); ?> diff --git a/mod/quiz/config.html b/mod/quiz/config.html deleted file mode 100644 index f0bbc91d603..00000000000 --- a/mod/quiz/config.html +++ /dev/null @@ -1,348 +0,0 @@ -<?php - require_once($CFG->dirroot . '/mod/quiz/locallib.php'); -?> -<form method="post" action="module.php" name="form"> -<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>"> - - -<!-- Table of config options --> -<?php - $table_created = false; // used to make sure that table is only created when needed - $submitbutton = false; - // Include the options from each question type - foreach ($QUIZ_QTYPES as $type) { - $options = $type->get_config_options(); - if ($options) { - // Temporary code - if (!$table_created) { - echo "<table cellpadding=\"9\" cellspacing=\"0\" align=\"center\">\n"; - echo '<tr><th colspan="3">'; - print_heading(get_string('questiontypesetupoptions', 'quiz')); - echo "</th></tr>\n"; - $table_created = true; - } - $typename = $type->name(); - $strtype = get_string($typename, 'quiz'); - echo "<tr valign=\"top\">\n"; - echo '<td colspan="3" align="center"><b>' . $strtype . "</b></td>\n"; - echo "</tr>\n"; - foreach ($options as $option) { - if (!isset($option->name)) { - continue; - } - echo "<tr valign=\"top\">\n"; - if (!empty($option->link)) { - echo '<td colspan="3" align="center"><a href="' . s($CFG->wwwroot) . '/mod/quiz/questiontypes/' . s($typename) . '/' . s($option->link) . '?sesskey=' . s(rawurlencode($USER->sesskey)) . '">' . get_string($option->name, 'quiz') . "</a></td>\n"; - } - else { - if (!isset($option->code)) { - $option->code = ''; - } - echo '<td align="right"><b>'; - print_string($option->name, 'quiz'); - echo ":</b></td>\n"; - echo '<td>' . $option->code . "</td>\n"; - if (empty($option->help)) { - echo "<td></td>\n"; - } - else { - echo '<td align="left">' . get_string($option->help, 'quiz') . "</td>\n"; - } - $submitbutton = 'true'; - } - echo "</tr>\n"; - } - } - } - if ($submitbutton) { -?> -<tr> - <td colspan="3" align="center"> - <input type="submit" value="<?php print_string("savechanges") ?>" /> - </td> -</tr> -</table> -<?php - } - if ($table_created) { - echo '</table>'; - print_simple_box_end(); - echo '<br />'; - print_simple_box_start('center'); - } -?> - - -<!-- Table of default values --> - -<table cellpadding="9" cellspacing="0" align="center"> - -<tr valign="top"> - <th align="right">&nbsp;</th> - <th align="left"> - <?php print_string('sitedefault'); ?> - </th> - <th align="center"> - <?php print_string('advancedsettings'); helpbutton("advancedsettings"); ?> - </th> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("timelimit", "quiz") ?>:</b></td> - <td> - <?php - print_timer_selector($CFG->quiz_timelimit, get_string("minutes","quiz"), 'quiz_timelimit'); - helpbutton("timelimit", get_string("quiztimer","quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_timelimit" value="0"> - <input type="checkbox" name="quiz_fix_timelimit" value="1" <?php p($CFG->quiz_fix_timelimit ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string('questionsperpage', 'quiz') ?>:</b></td> - <td> - <?php - $perpage= array(); - for ($i=0; $i<=50; ++$i) { - $perpage[$i] = $i; - } - $perpage[0] = get_string('allinone', 'quiz'); - - choose_from_menu($perpage, 'questionsperpage', $CFG->quiz_questionsperpage, ''); - helpbutton('questionsperpage', get_string('questionsperpage'), 'quiz'); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_questionsperpage" value="0"> - <input type="checkbox" name="quiz_fix_questionsperpage" value="1" <?php p($CFG->quiz_fix_questionsperpage ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("shufflequestions", "quiz") ?>:</b></td> - <td> - <?php - unset($options); - $options[0] = get_string("no"); - $options[1] = get_string("yes"); - choose_from_menu ($options, "quiz_shufflequestions", $CFG->quiz_shufflequestions, "", "", ""); - helpbutton("shufflequestions", get_string("shufflequestions","quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_shufflequestions" value="0"> - <input type="checkbox" name="quiz_fix_shufflequestions" value="1" <?php p($CFG->quiz_fix_shufflequestions ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("shuffleanswers", "quiz") ?>:</b></td> - <td> - <?php - unset($options); - $options[0] = get_string("no"); - $options[1] = get_string("yes"); - choose_from_menu ($options, "quiz_shuffleanswers", $CFG->quiz_shuffleanswers, "", "", ""); - helpbutton("attempts", get_string("attemptsallowed","quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_shuffleanswers" value="0"> - <input type="checkbox" name="quiz_fix_shuffleanswers" value="1" <?php p($CFG->quiz_fix_shuffleanswers ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("attemptsallowed", "quiz") ?>:</b></td> - <td> - <?php - unset($options); - $options[0] = get_string("attemptsunlimited", "quiz"); - $options[1] = "1 ".strtolower(get_string("attempt", "quiz")); - for ($i=2;$i<=6;$i++) { - $options[$i] = "$i ".strtolower(get_string("attempts", "quiz")); - } - choose_from_menu ($options, "quiz_attempts", $CFG->quiz_attempts, "", "", ""); - helpbutton("attempts", get_string("attemptsallowed","quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_attempts" value="0"> - <input type="checkbox" name="quiz_fix_attempts" value="1" <?php p($CFG->quiz_fix_attempts ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("eachattemptbuildsonthelast", "quiz") ?>:</b></td> - <td> - <?php - unset($options); - $options[0] = get_string("no"); - $options[1] = get_string("yes"); - choose_from_menu ($options, "quiz_attemptonlast", $CFG->quiz_attemptonlast, "", "", ""); - helpbutton("repeatattempts", get_string("eachattemptbuildsonthelast", "quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_attemptonlast" value="0"> - <input type="checkbox" name="quiz_fix_attemptonlast" value="1" <?php p($CFG->quiz_fix_attemptonlast ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("grademethod", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu ($QUIZ_GRADE_METHOD, "quiz_grademethod", $CFG->quiz_grademethod, "", "", ""); - helpbutton("grademethod", get_string("grademethod","quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_grademethod" value="0"> - <input type="checkbox" name="quiz_fix_grademethod" value="1" <?php p($CFG->quiz_fix_grademethod ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("decimalpoints", "quiz") ?>:</b></td> - <td> - <?php - unset($options); - $options[0] = '0'; - $options[1] = '1'; - $options[2] = '2'; - $options[3] = '3'; - choose_from_menu ($options, "quiz_decimalpoints", $CFG->quiz_decimalpoints, "", "", ""); - helpbutton("decimalpoints", get_string("decimalpoints","quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_decimalpoints" value="0"> - <input type="checkbox" name="quiz_fix_decimalpoints" value="1" <?php p($CFG->quiz_fix_decimalpoints ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("showfeedback", "quiz") ?>:</b></td> - <td> - <?php - unset($options); - $options[0] = get_string("no"); - $options[1] = get_string("yes"); - choose_from_menu ($options, "quiz_showfeedback", $CFG->quiz_showfeedback, "", "", ""); - helpbutton("feedback", get_string("showfeedback","quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_showfeedback" value="0"> - <input type="checkbox" name="quiz_fix_showfeedback" value="1" <?php p($CFG->quiz_fix_showfeedback ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("showcorrectanswer", "quiz") ?>:</b></td> - <td> - <?php - unset($options); - $options[0] = get_string("no"); - $options[1] = get_string("yes"); - choose_from_menu ($options, "quiz_showanswer", $CFG->quiz_showanswer, "", "", ""); - helpbutton("correctanswers", get_string("showcorrectanswer","quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_showanswer" value="0"> - <input type="checkbox" name="quiz_fix_showanswer" value="1" <?php p($CFG->quiz_fix_showanswer ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("allowreview", "quiz") ?>:</b></td> - <td> - <?php - $reviewoptions = array(); - $reviewoptions[0] = get_string('reviewnever', 'quiz'); - $reviewoptions[1] = get_string('reviewafter', 'quiz'); - $reviewoptions[2] = get_string('reviewbefore', 'quiz'); - $reviewoptions[3] = get_string('reviewalways', 'quiz'); - choose_from_menu ($reviewoptions, "quiz_allowreview", $CFG->quiz_allowreview, "", "", ""); - helpbutton("review2", get_string("allowreview","quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_allowreview" value="0"> - <input type="checkbox" name="quiz_fix_allowreview" value="1" <?php p($CFG->quiz_fix_allowreview ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("maximumgrade") ?>:</b></td> - <td> - <?php - unset($grades); - for ($i=100; $i>=1; $i--) { - $grades[$i] = $i; - } - $grades[0] = get_string("nograde"); - choose_from_menu ($grades, "quiz_maximumgrade", $CFG->quiz_maximumgrade, "", "", ""); - helpbutton("maxgrade", get_string("maximumgrade"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_maximumgrade" value="0"> - <input type="checkbox" name="quiz_fix_maximumgrade" value="1" <?php p($CFG->quiz_fix_maximumgrade ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("popup", "quiz") ?>:</b></td> - <td> - <?php - unset($options); - $options[0] = get_string("no"); - $options[1] = get_string("yes"); - choose_from_menu ($options, "quiz_popup", $CFG->quiz_popup, "", "", ""); - helpbutton("popup", get_string("popup","quiz"), "quiz"); - ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_popup" value="0"> - <input type="checkbox" name="quiz_fix_popup" value="1" <?php p($CFG->quiz_fix_popup ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("requirepassword", "quiz") ?>:</b></td> - <td> - <input type="text" name="quiz_password" size="20" value="<?php p($CFG->quiz_password) ?>" /> - <?php helpbutton("requirepassword", get_string("requirepassword", "quiz"), "quiz"); ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_password" value="0"> - <input type="checkbox" name="quiz_fix_password" value="1" <?php p($CFG->quiz_fix_password ? "checked" : "") ?> /> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("requiresubnet", "quiz") ?>:</b></td> - <td> - <input type="text" name="quiz_subnet" size="20" value="<?php p($CFG->quiz_subnet) ?>" /> - <?php helpbutton("requiresubnet", get_string("requiresubnet", "quiz"), "quiz"); ?> - </td> - <td align="center"> - <input type="hidden" name="quiz_fix_subnet" value="0"> - <input type="checkbox" name="quiz_fix_subnet" value="1" <?php p($CFG->quiz_fix_subnet ? "checked" : "") ?> /> - </td> -</tr> - -<tr> - <td colspan="3" align="center"> - <input type="submit" value="<?php print_string("savechanges") ?>" /> - </td> -</tr> -</table> - -</form> diff --git a/mod/quiz/db/mysql.php b/mod/quiz/db/mysql.php index f87bcf6fb46..04853452e5f 100644 --- a/mod/quiz/db/mysql.php +++ b/mod/quiz/db/mysql.php @@ -1,11 +1,10 @@ -<?php // $Id$ +<?PHP // $Id$ function quiz_upgrade($oldversion) { // This function does anything necessary to upgrade // older versions to match current functionality global $CFG; - include_once("$CFG->dirroot/mod/quiz/locallib.php"); if ($oldversion < 2002101800) { execute_sql(" ALTER TABLE `quiz_attempts` ". @@ -172,7 +171,7 @@ function quiz_upgrade($oldversion) { $questions = get_records("quiz_questions","stamp",$duplicate->id); $add = 1; foreach ($questions as $question) { - echo "Changing question id $question->id stamp to ".$duplicate->id.$add."<br />"; + echo "Changing question id $question->id stamp to ".$duplicate->id.$add."<br>"; set_field("quiz_questions","stamp",$duplicate->id.$add,"id",$question->id); $add++; } @@ -267,89 +266,7 @@ function quiz_upgrade($oldversion) { KEY `question` (`question`) ) TYPE=MyISAM COMMENT='Options for questions of type calculated'; "); } - - if ($oldversion < 2004111400) { - table_column("quiz_responses", "answer", "answer", "text", "", "", "", "not null"); - } - - if ($oldversion < 2004111700) { - execute_sql("ALTER TABLE {$CFG->prefix}quiz DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}quiz_calculated DROP INDEX answer;",false); - execute_sql("ALTER TABLE {$CFG->prefix}quiz_categories DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}quiz_dataset_definitions DROP INDEX category;",false); - execute_sql("ALTER TABLE {$CFG->prefix}quiz_numerical DROP INDEX question;",false); - execute_sql("ALTER TABLE {$CFG->prefix}quiz_numerical_units DROP INDEX question;",false); - execute_sql("ALTER TABLE {$CFG->prefix}quiz_questions DROP INDEX category;",false); - - modify_database('','ALTER TABLE prefix_quiz ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_quiz_calculated ADD INDEX answer (answer);'); - modify_database('','ALTER TABLE prefix_quiz_categories ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_quiz_dataset_definitions ADD INDEX category (category);'); - modify_database('','ALTER TABLE prefix_quiz_numerical ADD INDEX question (question);'); - modify_database('','ALTER TABLE prefix_quiz_numerical_units ADD INDEX question (question);'); - modify_database('','ALTER TABLE prefix_quiz_questions ADD INDEX category (category);'); - } - - if ($oldversion < 2004120501) { - table_column("quiz_calculated", "", "correctanswerformat", "integer", "10", "", "2", "not null", "correctanswerlength"); - } - - if ($oldversion < 2004121400) { // New field to determine popup window behaviour - table_column("quiz", "", "popup", "integer", "4", "", "0", "not null", "subnet"); - } - - if ($oldversion < 2005010201) { - table_column('quiz_categories', '', 'parent'); - table_column('quiz_categories', '', 'sortorder', 'integer', '10', '', '999'); - } - - if ($oldversion < 2005010300) { - table_column("quiz", "", "questionsperpage", "integer", "10", "", "0", "not null", "review"); - } - - if ($oldversion < 2005012700) { - table_column('quiz_grades', 'grade', 'grade', 'real', 2, ''); - } - - if ($oldversion < 2005021400) { - table_column("quiz", "", "decimalpoints", "integer", "4", "", "2", "not null", "grademethod"); - } - - if($oldversion < 2005022800) { - table_column('quiz_questions', '', 'hidden', 'integer', '1', 'unsigned', '0', 'not null', 'version'); - table_column('quiz_responses', '', 'originalquestion', 'integer', '10', 'unsigned', '0', 'not null', 'question'); - modify_database ('', "CREATE TABLE `prefix_quiz_question_version` ( - `id` int(10) unsigned NOT NULL auto_increment, - `quiz` int(10) unsigned NOT NULL default '0', - `oldquestion` int(10) unsigned NOT NULL default '0', - `newquestion` int(10) unsigned NOT NULL default '0', - `userid` int(10) unsigned NOT NULL default '0', - `timestamp` int(10) unsigned NOT NULL default '0', - PRIMARY KEY (`id`) - ) TYPE=MyISAM COMMENT='The mapping between old and new versions of a question';"); - } - - if ($oldversion < 2005032000) { - execute_sql(" INSERT INTO {$CFG->prefix}log_display VALUES ('quiz', 'editquestions', 'quiz', 'name') "); - } - - if ($oldversion < 2005032300) { - modify_database ('', 'ALTER TABLE prefix_quiz_question_version RENAME prefix_quiz_question_versions;'); - } - - if ($oldversion < 2005041200) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $sql = "select course from {$CFG->prefix}quiz_categories, {$CFG->prefix}quiz_questions "; - $sql .= "where {$CFG->prefix}quiz_category.id = {$CFG->prefix}quiz_questions.category "; - $sql .= "and {$CFG->prefix}quiz_questions.id = "; - $wtm->update( 'quiz_questions', 'questiontext', 'questiontextformat', $sql ); - } - - if ($oldversion < 2005041304) { - modify_database('', "UPDATE prefix_quiz_questions SET hidden = '1' WHERE qtype ='".RANDOM."';"); - } - + return true; } diff --git a/mod/quiz/db/mysql.sql b/mod/quiz/db/mysql.sql index 59c3e1ea56b..136b6be245f 100644 --- a/mod/quiz/db/mysql.sql +++ b/mod/quiz/db/mysql.sql @@ -25,9 +25,7 @@ CREATE TABLE `prefix_quiz` ( `feedback` tinyint(4) NOT NULL default '0', `correctanswers` tinyint(4) NOT NULL default '1', `grademethod` tinyint(4) NOT NULL default '1', - `decimalpoints` tinyint(4) NOT NULL default '2', `review` tinyint(4) NOT NULL default '0', - `questionsperpage` int(10) NOT NULL default '0', `shufflequestions` tinyint(4) NOT NULL default '0', `shuffleanswers` tinyint(4) NOT NULL default '0', `questions` text NOT NULL, @@ -38,9 +36,7 @@ CREATE TABLE `prefix_quiz` ( `timelimit` int(2) unsigned NOT NULL default '0', `password` varchar(255) NOT NULL default '', `subnet` varchar(255) NOT NULL default '', - `popup` tinyint(4) NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `course` (`course`) + PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT='Main information about each quiz'; # -------------------------------------------------------- @@ -103,10 +99,8 @@ CREATE TABLE `prefix_quiz_calculated` ( `tolerance` varchar(20) NOT NULL default '0.0', `tolerancetype` int(10) NOT NULL default '1', `correctanswerlength` int(10) NOT NULL default '2', - `correctanswerformat` int(10) NOT NULL default '2', PRIMARY KEY (`id`), - KEY `question` (`question`), - KEY `answer` (`answer`) + KEY `question` (`question`) ) TYPE=MyISAM COMMENT='Options for questions of type calculated'; # -------------------------------------------------------- @@ -121,10 +115,7 @@ CREATE TABLE `prefix_quiz_categories` ( `info` text NOT NULL, `publish` tinyint(4) NOT NULL default '0', `stamp` varchar(255) NOT NULL default '', - `parent` int(10) unsigned NOT NULL default '0', - `sortorder` int(10) unsigned NOT NULL default '999', - PRIMARY KEY (`id`), - KEY `course` (`course`) + PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT='Categories are for grouping questions'; # -------------------------------------------------------- @@ -139,8 +130,7 @@ CREATE TABLE `prefix_quiz_dataset_definitions` ( `type` int(10) NOT NULL default '0', `options` varchar(255) NOT NULL default '', `itemcount` int(10) unsigned NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `category` (`category`) + PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT='Organises and stores properties for dataset items'; # -------------------------------------------------------- @@ -166,7 +156,7 @@ CREATE TABLE `prefix_quiz_grades` ( `id` int(10) unsigned NOT NULL auto_increment, `quiz` int(10) unsigned NOT NULL default '0', `userid` int(10) unsigned NOT NULL default '0', - `grade` real NOT NULL default '0', + `grade` varchar(10) NOT NULL default '0.0', `timemodified` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `quiz` (`quiz`), @@ -243,8 +233,7 @@ CREATE TABLE `prefix_quiz_numerical` ( `min` varchar(255) NOT NULL default '', `max` varchar(255) NOT NULL default '', PRIMARY KEY (`id`), - KEY `answer` (`answer`), - KEY `question` (`question`) + KEY `answer` (`answer`) ) TYPE=MyISAM COMMENT='Options for numerical questions'; # -------------------------------------------------------- @@ -257,8 +246,7 @@ CREATE TABLE `prefix_quiz_numerical_units` ( `question` int(10) unsigned NOT NULL default '0', `multiplier` decimal(40,20) NOT NULL default '1.00000000000000000000', `unit` varchar(50) NOT NULL default '', - PRIMARY KEY (`id`), - KEY `question` (`question`) + PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT='Optional unit options for numerical questions'; # -------------------------------------------------------- @@ -290,21 +278,6 @@ CREATE TABLE `prefix_quiz_question_grades` ( ) TYPE=MyISAM COMMENT='The grade for a question in a quiz'; # -------------------------------------------------------- -# -# Table structure for table `quiz_question_versions` -# - -CREATE TABLE `prefix_quiz_question_versions` ( - `id` int(10) unsigned NOT NULL auto_increment, - `quiz` int(10) unsigned NOT NULL default '0', - `oldquestion` int(10) unsigned NOT NULL default '0', - `newquestion` int(10) unsigned NOT NULL default '0', - `userid` int(10) unsigned NOT NULL default '0', - `timestamp` int(10) unsigned NOT NULL default '0', - PRIMARY KEY (`id`) -) TYPE=MyISAM COMMENT='The mapping between old and new versions of a question'; -# -------------------------------------------------------- - # # Table structure for table `quiz_questions` # @@ -320,9 +293,7 @@ CREATE TABLE `prefix_quiz_questions` ( `qtype` smallint(6) NOT NULL default '0', `stamp` varchar(255) NOT NULL default '', `version` int(10) NOT NULL default '1', - `hidden` int(1) unsigned NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `category` (`category`) + PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT='The quiz questions themselves'; # -------------------------------------------------------- @@ -347,8 +318,7 @@ CREATE TABLE `prefix_quiz_responses` ( `id` int(10) unsigned NOT NULL auto_increment, `attempt` int(10) unsigned NOT NULL default '0', `question` int(10) unsigned NOT NULL default '0', - `originalquestion` int(10) unsigned NOT NULL default '0', - `answer` text NOT NULL default '', + `answer` varchar(255) NOT NULL default '', `grade` varchar(10) NOT NULL default '0.0', PRIMARY KEY (`id`), KEY `attempt` (`attempt`), @@ -391,4 +361,3 @@ INSERT INTO prefix_log_display VALUES ('quiz', 'report', 'quiz', 'name'); INSERT INTO prefix_log_display VALUES ('quiz', 'attempt', 'quiz', 'name'); INSERT INTO prefix_log_display VALUES ('quiz', 'submit', 'quiz', 'name'); INSERT INTO prefix_log_display VALUES ('quiz', 'review', 'quiz', 'name'); -INSERT INTO prefix_log_display VALUES ('quiz', 'editquestions', 'quiz', 'name'); diff --git a/mod/quiz/db/oci8po.php b/mod/quiz/db/oci8po.php index 9fda6e7a8b7..d2b0461c7f7 100755 --- a/mod/quiz/db/oci8po.php +++ b/mod/quiz/db/oci8po.php @@ -1,4 +1,4 @@ -<?php +<?PHP function quiz_upgrade($oldversion) { // This function does anything necessary to upgrade diff --git a/mod/quiz/db/oci8po.sql b/mod/quiz/db/oci8po.sql index 0946af353b9..d220b37b260 100755 --- a/mod/quiz/db/oci8po.sql +++ b/mod/quiz/db/oci8po.sql @@ -21,7 +21,6 @@ CREATE TABLE prefix_quiz ( feedback number(4) default '0' not null, correctanswers number(4) default '1' not null, grademethod number(4) default '1' not null, - decimalpoints number(4) default '2' not null, review number(4) default '0' not null, shufflequestions number(4) default '0' not null, shuffleanswers number(4) default '0' not null, diff --git a/mod/quiz/db/postgres7.php b/mod/quiz/db/postgres7.php index 63c11009236..1cccf954db7 100644 --- a/mod/quiz/db/postgres7.php +++ b/mod/quiz/db/postgres7.php @@ -1,11 +1,10 @@ -<?php // $Id$ +<?PHP // $Id$ function quiz_upgrade($oldversion) { // This function does anything necessary to upgrade // older versions to match current functionality global $CFG; - include_once("$CFG->dirroot/mod/quiz/locallib.php"); if ($oldversion < 2003010100) { execute_sql(" ALTER TABLE {$CFG->prefix}quiz ADD review integer DEFAULT '0' NOT NULL AFTER `grademethod` "); @@ -127,7 +126,7 @@ function quiz_upgrade($oldversion) { $questions = get_records("quiz_questions","stamp",$duplicate->id); $add = 1; foreach ($questions as $question) { - echo "Changing question id $question->id stamp to ".$duplicate->id.$add."<br />"; + echo "Changing question id $question->id stamp to ".$duplicate->id.$add."<br>"; set_field("quiz_questions","stamp",$duplicate->id.$add,"id",$question->id); $add++; } @@ -225,114 +224,7 @@ function quiz_upgrade($oldversion) { modify_database ( "", "COMMIT;"); } - - if ($oldversion < 2004111400) { - table_column("quiz_responses", "answer", "answer", "text", "", "", "", "not null"); - } - - if ($oldversion < 2004111700) { - execute_sql("DROP INDEX {$CFG->prefix}quiz_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_answers_question_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_attempts_quiz_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_attempts_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_calculated_answer_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_categories_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_dataset_definitions_category_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_grades_quiz_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_grades_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_numerical_question_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_numerical_units_question_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_question_grades_quiz_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_question_grades_question_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_questions_category_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_randomsamatch_question_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_responses_attempt_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}quiz_responses_question_idx;",false); - - modify_database('','CREATE INDEX prefix_quiz_course_idx ON prefix_quiz (course);'); - modify_database('','CREATE INDEX prefix_quiz_answers_question_idx ON prefix_quiz_answers (question);'); - modify_database('','CREATE INDEX prefix_quiz_attempts_quiz_idx ON prefix_quiz_attempts (quiz);'); - modify_database('','CREATE INDEX prefix_quiz_attempts_userid_idx ON prefix_quiz_attempts (userid);'); - modify_database('','CREATE INDEX prefix_quiz_calculated_answer_idx ON prefix_quiz_calculated (answer);'); - modify_database('','CREATE INDEX prefix_quiz_categories_course_idx ON prefix_quiz_categories (course);'); - modify_database('','CREATE INDEX prefix_quiz_dataset_definitions_category_idx ON prefix_quiz_dataset_definitions (category);'); - modify_database('','CREATE INDEX prefix_quiz_grades_quiz_idx ON prefix_quiz_grades (quiz);'); - modify_database('','CREATE INDEX prefix_quiz_grades_userid_idx ON prefix_quiz_grades (userid);'); - modify_database('','CREATE INDEX prefix_quiz_numerical_question_idx ON prefix_quiz_numerical (question);'); - modify_database('','CREATE INDEX prefix_quiz_numerical_units_question_idx ON prefix_quiz_numerical_units (question);'); - modify_database('','CREATE INDEX prefix_quiz_question_grades_quiz_idx ON prefix_quiz_question_grades (quiz);'); - modify_database('','CREATE INDEX prefix_quiz_question_grades_question_idx ON prefix_quiz_question_grades (question);'); - modify_database('','CREATE INDEX prefix_quiz_questions_category_idx ON prefix_quiz_questions (category);'); - modify_database('','CREATE INDEX prefix_quiz_randomsamatch_question_idx ON prefix_quiz_randomsamatch (question);'); - modify_database('','CREATE INDEX prefix_quiz_responses_attempt_idx ON prefix_quiz_responses (attempt);'); - modify_database('','CREATE INDEX prefix_quiz_responses_question_idx ON prefix_quiz_responses (question);'); - } - - if ($oldversion < 2004112300) { //try and clean up an old mistake - try and bring us up to what is in postgres7.sql today. - execute_sql("ALTER TABLE {$CFG->prefix}quiz_attemptonlast_datasets DROP CONSTRAINT category;",false); - execute_sql("ALTER TABLE {$CFG->prefix}quiz_attemptonlast_datasets DROP CONSTRAINT {$CFG->prefix}quiz_attemptonlast_datasets_category_userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}quiz_attemptonlast_datasets DROP CONSTRAINT {$CFG->prefix}quiz_category_userid_unique;",false); - modify_database('','ALTER TABLE prefix_quiz_attemptonlast_datasets ADD CONSTRAINT prefix_quiz_category_userid_unique UNIQUE (category,userid);'); - } - - if ($oldversion < 2004120501) { - table_column("quiz_calculated", "", "correctanswerformat", "integer", "10", "", "0", "not null", "correctanswerlength"); - } - - if ($oldversion < 2004121400) { // New field to determine popup window behaviour - table_column("quiz", "", "popup", "integer", "4", "", "0", "not null", "subnet"); - } - - if ($oldversion < 2005010201) { - table_column('quiz_categories', '', 'parent'); - table_column('quiz_categories', '', 'sortorder', 'integer', '10', '', '999'); - } - - if ($oldversion < 2005010300) { - table_column("quiz", "", "questionsperpage", "integer", "10", "", "0", "not null", "review"); - } - - if ($oldversion < 2005012700) { - table_column('quiz_grades', 'grade', 'grade', 'real', 2, ''); - } - - if ($oldversion < 2005021400) { - table_column("quiz", "", "decimalpoints", "integer", "4", "", "2", "not null", "grademethod"); - } - - if($oldversion < 2005022800) { - table_column('quiz_questions', '', 'hidden', 'integer', '1', 'unsigned', '0', 'not null', 'version'); - table_column('quiz_responses', '', 'originalquestion', 'integer', '10', 'unsigned', '0', 'not null', 'question'); - modify_database ('', "CREATE TABLE prefix_quiz_question_version ( - id SERIAL PRIMARY KEY, - quiz integer NOT NULL default '0', - oldquestion integer NOT NULL default '0', - newquestion integer NOT NULL default '0', - userid integer NOT NULL default '0', - timestamp integer NOT NULL default '0');"); - } - - if ($oldversion < 2005032000) { - execute_sql(" INSERT INTO {$CFG->prefix}log_display VALUES ('quiz', 'editquestions', 'quiz', 'name') "); - } - - if ($oldversion < 2005032300) { - modify_database ('', 'ALTER TABLE prefix_quiz_question_version RENAME TO prefix_quiz_question_versions;'); - } - - if ($oldversion < 2005041200) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $sql = "select course from {$CFG->prefix}quiz_categories, {$CFG->prefix}quiz_questions "; - $sql .= "where {$CFG->prefix}quiz_category.id = {$CFG->prefix}quiz_questions.category "; - $sql .= "and {$CFG->prefix}quiz_questions.id = "; - $wtm->update( 'quiz_questions', 'questiontext', 'questiontextformat', $sql ); - } - - if ($oldversion < 2005041300) { - modify_database('', "UPDATE prefix_quiz_questions SET hidden = '1' WHERE qtype ='".RANDOM."';"); - } - + return true; } diff --git a/mod/quiz/db/postgres7.sql b/mod/quiz/db/postgres7.sql index 6b458997109..6949b8f9638 100644 --- a/mod/quiz/db/postgres7.sql +++ b/mod/quiz/db/postgres7.sql @@ -25,9 +25,7 @@ CREATE TABLE prefix_quiz ( feedback integer NOT NULL default '0', correctanswers integer NOT NULL default '1', grademethod integer NOT NULL default '1', - decimalpoints integer NOT NULL default '2', review integer NOT NULL default '0', - questionsperpage integer NOT NULL default '0', shufflequestions integer NOT NULL default '0', shuffleanswers integer NOT NULL default '0', questions text NOT NULL default '', @@ -37,12 +35,8 @@ CREATE TABLE prefix_quiz ( timemodified integer NOT NULL default '0', timelimit integer NOT NULL default '0', password varchar(255) NOT NULL default '', - subnet varchar(255) NOT NULL default '', - popup integer NOT NULL default '0' + subnet varchar(255) NOT NULL default '' ); - -CREATE INDEX prefix_quiz_course_idx ON prefix_quiz (course); - # -------------------------------------------------------- # @@ -56,9 +50,6 @@ CREATE TABLE prefix_quiz_answers ( fraction varchar(10) NOT NULL default '0.0', feedback text NOT NULL default '' ); - -CREATE INDEX prefix_quiz_answers_question_idx ON prefix_quiz_answers (question); - # -------------------------------------------------------- # @@ -75,10 +66,6 @@ CREATE TABLE prefix_quiz_attempts ( timefinish integer NOT NULL default '0', timemodified integer NOT NULL default '0' ); - -CREATE INDEX prefix_quiz_attempts_quiz_idx ON prefix_quiz_attempts (quiz); -CREATE INDEX prefix_quiz_attempts_userid_idx ON prefix_quiz_attempts (userid); - # -------------------------------------------------------- # @@ -91,13 +78,8 @@ CREATE TABLE prefix_quiz_categories ( name varchar(255) NOT NULL default '', info text NOT NULL default '', publish integer NOT NULL default '0', - stamp varchar(255) NOT NULL default '', - parent integer NOT NULL default '0', - sortorder integer NOT NULL default '999' + stamp varchar(255) NOT NULL default '' ); - -CREATE INDEX prefix_quiz_categories_course_idx ON prefix_quiz_categories (course); - # -------------------------------------------------------- # @@ -108,13 +90,9 @@ CREATE TABLE prefix_quiz_grades ( id SERIAL PRIMARY KEY, quiz integer NOT NULL default '0', userid integer NOT NULL default '0', - grade real NOT NULL default '0', + grade varchar(10) NOT NULL default '0.0', timemodified integer NOT NULL default '0' ); - -CREATE INDEX prefix_quiz_grades_quiz_idx ON prefix_quiz_grades (quiz); -CREATE INDEX prefix_quiz_grades_userid_idx ON prefix_quiz_grades (userid); - # -------------------------------------------------------- # @@ -184,7 +162,6 @@ CREATE TABLE prefix_quiz_numerical ( ); # -------------------------------------------------------- CREATE INDEX prefix_quiz_numerical_answer_idx ON prefix_quiz_numerical (answer); -CREATE INDEX prefix_quiz_numerical_question_idx ON prefix_quiz_numerical (question); # # Table structure for table quiz_question_grades @@ -196,24 +173,6 @@ CREATE TABLE prefix_quiz_question_grades ( question integer NOT NULL default '0', grade integer NOT NULL default '0' ); - -CREATE INDEX prefix_quiz_question_grades_quiz_idx ON prefix_quiz_question_grades (quiz); -CREATE INDEX prefix_quiz_question_grades_question_idx ON prefix_quiz_question_grades (question); - -# -------------------------------------------------------- - -# -# Table structure for table `quiz_question_versions` -# - -CREATE TABLE prefix_quiz_question_versions ( - id SERIAL PRIMARY KEY, - quiz integer NOT NULL default '0', - oldquestion integer NOT NULL default '0', - newquestion integer NOT NULL default '0', - userid integer NOT NULL default '0', - timestamp integer NOT NULL default '0' -); # -------------------------------------------------------- # @@ -230,12 +189,8 @@ CREATE TABLE prefix_quiz_questions ( defaultgrade integer NOT NULL default '1', qtype integer NOT NULL default '0', stamp varchar(255) NOT NULL default '', - version integer NOT NULL default '1', - hidden integer NOT NULL default '0' + version integer NOT NULL default '1' ); - -CREATE INDEX prefix_quiz_questions_category_idx ON prefix_quiz_questions (category); - # -------------------------------------------------------- # @@ -248,8 +203,6 @@ CREATE TABLE prefix_quiz_randomsamatch ( choose integer NOT NULL default '4' ); -CREATE INDEX prefix_quiz_randomsamatch_question_idx ON prefix_quiz_randomsamatch (question); - # # Table structure for table quiz_responses # @@ -258,14 +211,9 @@ CREATE TABLE prefix_quiz_responses ( id SERIAL PRIMARY KEY, attempt integer NOT NULL default '0', question integer NOT NULL default '0', - originalquestion integer NOT NULL default '0', - answer text NOT NULL default '', + answer varchar(255) NOT NULL default '', grade varchar(10) NOT NULL default '0.0' ); - -CREATE INDEX prefix_quiz_responses_attempt_idx ON prefix_quiz_responses (attempt); -CREATE INDEX prefix_quiz_responses_question_idx ON prefix_quiz_responses (question); - # -------------------------------------------------------- # @@ -302,14 +250,13 @@ CREATE TABLE prefix_quiz_numerical_units ( unit varchar(50) NOT NULL default '' ); -CREATE INDEX prefix_quiz_numerical_units_question_idx ON prefix_quiz_numerical_units (question); CREATE TABLE prefix_quiz_attemptonlast_datasets ( id SERIAL8 PRIMARY KEY, category INT8 NOT NULL default '0', userid INT8 NOT NULL default '0', datasetnumber INT8 NOT NULL default '0', - CONSTRAINT prefix_quiz_category_userid_unique UNIQUE (category,userid) + CONSTRAINT category UNIQUE (category,userid) ); CREATE TABLE prefix_quiz_dataset_definitions ( @@ -321,8 +268,6 @@ CREATE TABLE prefix_quiz_dataset_definitions ( itemcount INT8 NOT NULL default '0' ); -CREATE INDEX prefix_quiz_dataset_definitions_category_idx ON prefix_quiz_dataset_definitions (category); - CREATE TABLE prefix_quiz_dataset_items ( id SERIAL8 PRIMARY KEY, definition INT8 NOT NULL default '0', @@ -348,13 +293,12 @@ CREATE TABLE prefix_quiz_calculated ( answer INT8 NOT NULL default '0', tolerance varchar(20) NOT NULL default '0.0', tolerancetype INT8 NOT NULL default '1', - correctanswerlength INT8 NOT NULL default '2', - correctanswerformat INT8 NOT NULL default '2' + correctanswerlength INT8 NOT NULL default '2' ); CREATE INDEX prefix_quiz_calculated_question_idx ON prefix_quiz_calculated (question); -CREATE INDEX prefix_quiz_calculated_answer_idx ON prefix_quiz_calculated (answer); + INSERT INTO prefix_log_display VALUES ('quiz', 'add', 'quiz', 'name'); @@ -364,4 +308,4 @@ INSERT INTO prefix_log_display VALUES ('quiz', 'report', 'quiz', 'name'); INSERT INTO prefix_log_display VALUES ('quiz', 'attempt', 'quiz', 'name'); INSERT INTO prefix_log_display VALUES ('quiz', 'submit', 'quiz', 'name'); INSERT INTO prefix_log_display VALUES ('quiz', 'review', 'quiz', 'name'); -INSERT INTO prefix_log_display VALUES ('quiz', 'editquestions', 'quiz', 'name'); + diff --git a/mod/quiz/defaults.php b/mod/quiz/defaults.php deleted file mode 100644 index 79453c56f88..00000000000 --- a/mod/quiz/defaults.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php // $Id$ - -// This file is generally only included from upgrade_activity_modules() -// It defines default values for any important configuration variables - - $defaults = array ( - 'quiz_allowreview' => 1, - 'quiz_attemptonlast' => 0, - 'quiz_attempts' => 0, - 'quiz_grademethod' => '', - 'quiz_decimalpoints' => 2, - 'quiz_maximumgrade' => 0, - 'quiz_password' => '', - 'quiz_popup' => 0, - 'quiz_questionsperpage' => 0, - 'quiz_showanswer' => '', - 'quiz_showfeedback' => '', - 'quiz_shuffleanswers' => 1, - 'quiz_shufflequestions' => 0, - 'quiz_subnet' => '', - 'quiz_timelimit' => 0, - - 'quiz_fix_allowreview' => 0, - 'quiz_fix_attemptonlast' => 0, - 'quiz_fix_attempts' => 0, - 'quiz_fix_grademethod' => 0, - 'quiz_fix_decimalpoints' => 0, - 'quiz_fix_maximumgrade' => 0, - 'quiz_fix_password' => 0, - 'quiz_fix_popup' => 0, - 'quiz_fix_questionsperpage' => 0, - 'quiz_fix_showanswer' => 0, - 'quiz_fix_showfeedback' => 0, - 'quiz_fix_shuffleanswers' => 0, - 'quiz_fix_shufflequestions' => 0, - 'quiz_fix_subnet' => 0, - 'quiz_fix_timelimit' => 0 - ); - -?> diff --git a/mod/quiz/edit.php b/mod/quiz/edit.php index 734a0c36c6c..a52da9bb40c 100644 --- a/mod/quiz/edit.php +++ b/mod/quiz/edit.php @@ -1,52 +1,43 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); - require_once("locallib.php"); + require_once("lib.php"); require_login(); - $courseid = optional_param('courseid'); - $quizid = optional_param('quizid'); - $page = optional_param('page', 0); - $perpage = optional_param('perpage', 20); + optional_variable($courseid); - $strquizzes = get_string('modulenameplural', 'quiz'); - $strquiz = get_string('modulename', 'quiz'); - $streditingquestions = get_string('editquestions', "quiz"); - $streditingquiz = get_string("editinga", "moodle", $strquiz); + if (empty($destination)) { + $destination = ""; + } - if ($modform = data_submitted() and !empty($modform->course)) { // data submitted + $modform = data_submitted($destination); - $SESSION->modform = $modform; // Save the form in the current session + if ($modform and !empty($modform->course)) { // form submitted from mod.html - } else if ($quizid) { - if (! $modform = get_record('quiz', 'id', $quizid)) { - error("The required quiz doesn't exist"); + $modform->name = trim($modform->name); + + if (empty($modform->name)) { + if (empty($modform->intro)) { + $modform->name = get_string('modulename', 'quiz'); + } else { + $modform->name = strip_tags($modform->intro); + } } - $modform->instance = $modform->id; - $SESSION->modform = $modform; // Save the form in the current session - $cm = get_coursemodule_from_instance('quiz', $modform->instance); - add_to_log($cm->course, 'quiz', 'editquestions', - "view.php?id=$cm->id", - "$quizid", $cm->id); + $SESSION->modform = $modform; // Save the form in the current session } else if ($courseid) { // Page retrieve through "Edit Questions" link - no quiz selected $modform->course = $courseid; unset($modform->instance); - $SESSION->modform = $modform; // Save the form in the current session - add_to_log($courseid, 'quiz', 'editquestions', "index.php?id=$courseid"); + $SESSION->modform = $modform; // Save the form in the current session } else { if (!isset($SESSION->modform)) { - // We currently also get here after editing a question by - // following the edit link on the review page. Perhaps that should be fixed. - error(''); + error("You have used this page incorrectly!"); } - // The data is obtained from a $SESSION variable. This is mostly for historic reasons. - // With the way things work now it would be just as possible to get the data from the database. $modform = $SESSION->modform; } @@ -55,7 +46,7 @@ error("This course doesn't exist"); } - require_login($course->id, false); + require_login($course->id); if (!isteacheredit($course->id)) { error("You can't modify this course!"); @@ -68,9 +59,9 @@ } -/// Now, check for commands on this page and modify variables as necessary + // Now, check for commands on this page and modify variables as necessary - if (isset($_REQUEST['up']) and confirm_sesskey()) { /// Move the given question up a slot + if (!empty($up)) { /// Move the given question up a slot $questions = explode(",", $modform->questions); if ($questions[0] <> $up) { foreach ($questions as $key => $question) { @@ -83,12 +74,9 @@ } $modform->questions = implode(",", $questions); } - if (!set_field('quiz', 'questions', $modform->questions, 'id', $modform->instance)) { - error('Could not save question list'); - } } - if (isset($_REQUEST['down']) and confirm_sesskey()) { /// Move the given question down a slot + if (!empty($down)) { /// Move the given question down a slot $questions = explode(",", $modform->questions); if ($questions[count($questions)-1] <> $down) { foreach ($questions as $key => $question) { @@ -101,40 +89,9 @@ } $modform->questions = implode(",", $questions); } - if (!set_field('quiz', 'questions', $modform->questions, 'id', $modform->instance)) { - error('Could not save question list'); - } } - if (isset($_REQUEST['addquestion']) and confirm_sesskey()) { /// Add a single question to the current quiz - - // add question to quiz->questions - $key = $_REQUEST['addquestion']; - $questions = array(); - if (!empty($modform->questions)) { - $questions = explode(",", $modform->questions); - } - if (!in_array($key, $questions)) { - $questions[] = $key; - } - $modform->questions = implode(",", $questions); - if (!set_field('quiz', 'questions', $modform->questions, 'id', $modform->instance)) { - error('Could not save question list'); - } - - // update question grades - $questionrecord = get_record("quiz_questions", "id", $key); - if (!empty($questionrecord->defaultgrade)) { - $modform->grades[$key] = $questionrecord->defaultgrade; - } else if ($questionrecord->qtype == DESCRIPTION){ - $modform->grades[$key] = 0; - } else { - $modform->grades[$key] = 1; - } - quiz_questiongrades_update($modform->grades, $modform->instance); - } - - if (isset($_REQUEST['add']) and confirm_sesskey()) { /// Add selected questions to the current quiz + if (!empty($add)) { /// Add a question to the current quiz $rawquestions = $_POST; if (!empty($modform->questions)) { $questions = explode(",", $modform->questions); @@ -154,11 +111,11 @@ $questionrecord = get_record("quiz_questions", "id", $key); if (!empty($questionrecord->defaultgrade)) { - $modform->grades[$key] = $questionrecord->defaultgrade; + $modform->grades[$key] = $questionrecord->defaultgrade; } else if ($questionrecord->qtype == DESCRIPTION){ - $modform->grades[$key] = 0; + $modform->grades[$key] = 0; } else { - $modform->grades[$key] = 1; + $modform->grades[$key] = 1; } } } @@ -167,121 +124,20 @@ } else { $modform->questions = ""; } - if (!set_field('quiz', 'questions', $modform->questions, 'id', $modform->instance)) { - error('Could not save question list'); - } - quiz_questiongrades_update($modform->grades, $modform->instance); } - if (isset($_REQUEST['move']) and confirm_sesskey()) { /// Move selected questions to new category - if (!$tocategory = get_record('quiz_categories', 'id', $_REQUEST['category'])) { - error('Invalid category'); - } - if (!isteacheredit($tocategory->course)) { - error(get_string('categorynoedit', 'quiz', $tocategory->name), 'edit.php'); - } - $rawquestions = $_POST; - foreach ($rawquestions as $key => $value) { // Parse input for question ids - if (substr($key, 0, 1) == "q") { - $key = substr($key,1); - if (!set_field('quiz_questions', 'category', $tocategory->id, 'id', $key)) { - error('Could not update category field'); - } - } - } - } - - if (isset($_REQUEST['delete']) and confirm_sesskey()) { /// Remove a question from the quiz + if (!empty($delete)) { /// Delete a question from the list $questions = explode(",", $modform->questions); foreach ($questions as $key => $question) { if ($question == $delete) { unset($questions[$key]); unset($modform->grades[$question]); - // Delete all responses associated with all attempts for this question in the quiz. - if ($attempts = get_records('quiz_attempts', 'quiz', $modform->instance)) { - foreach ($attempts as $attempt) { - if (!delete_records('quiz_responses', 'question', $question, 'attempt', $attempt->id)) { - error('Could not delete all responses for this question'); - } - } - } - // Delete question from quiz_question_grades table - if (!delete_records('quiz_question_grades', 'quiz', $modform->instance, 'question', $question)) { - error('Could not delete the question from this quiz'); - } } } $modform->questions = implode(",", $questions); - if (!set_field('quiz', 'questions', $modform->questions, 'id', $modform->instance)) { - error('Could not save question list'); - } } - if (isset($_REQUEST['deleteselected'])) { // delete selected questions from the category - - if (isset($confirm) and confirm_sesskey()) { // teacher has already confirmed the action - if ($confirm == md5($deleteselected)) { - if ($questionlist = explode(',', $deleteselected)) { - // for each question either hide it if it is in use or delete it - foreach ($questionlist as $questionid) { - if (record_exists('quiz_responses', 'question', $questionid) or - record_exists('quiz_responses', 'originalquestion', $questionid) or - record_exists('quiz_question_grades', 'question', $questionid)) { - if (!set_field('quiz_questions', 'hidden', 1, 'id', $questionid)) { - error('Was not able to hide question'); - } - } else { - if (!delete_records("quiz_questions", "id", $questionid)) { - error("An error occurred trying to delete question (id $questionid)"); - } - } - } - } - redirect("edit.php"); - } else { - error("Confirmation string was incorrect"); - } - - } else { // teacher still has to confirm - // make a list of all the questions that are selected - $rawquestions = $_POST; - $questionlist = ''; // comma separated list of ids of questions to be deleted - $questionnames = ''; // string with names of questions separated by <br /> with - // an asterix in front of those that are in use - $inuse = false; // set to true if at least one of the questions is in use - foreach ($rawquestions as $key => $value) { // Parse input for question ids - if (substr($key, 0, 1) == "q") { - $key = substr($key,1); - $questionlist .= $key.','; - if (record_exists('quiz_responses', 'question', $key) or - record_exists('quiz_responses', 'originalquestion', $key) or - record_exists('quiz_question_grades', 'question', $key)) { - $questionnames .= '* '; - $inuse = true; - } - $questionnames .= get_field('quiz_questions', 'name', 'id', $key).'<br />'; - } - } - if (!$questionlist) { // no questions were selected - redirect('edit.php'); - } - $questionlist = rtrim($questionlist, ','); - - // Add an explanation about questions in use - if ($inuse) { - $questionnames .= get_string('questionsinuse', 'quiz'); - } - print_header_simple($streditingquestions, '', - "<a href=\"index.php?id=$course->id\">$strquizzes</a>". - " -> $streditingquestions"); - notice_yesno(get_string("deletequestionscheck", "quiz", $questionnames), - "edit.php?sesskey=$USER->sesskey&amp;deleteselected=$questionlist&amp;confirm=".md5($questionlist), "edit.php"); - print_footer($course); - exit; - } - } - - if (isset($_REQUEST['setgrades']) and confirm_sesskey()) { /// The grades have been updated, so update our internal list + if (!empty($setgrades)) { /// The grades have been updated, so update our internal list $rawgrades = $_POST; unset($modform->grades); foreach ($rawgrades as $key => $value) { // Parse input for question -> grades @@ -290,116 +146,91 @@ $modform->grades[$key] = $value; } } - if (!set_field('quiz', 'questions', $modform->questions, 'id', $modform->instance)) { - error('Could not save question list'); - } - quiz_questiongrades_update($modform->grades, $modform->instance); } - if (isset($_REQUEST['cat'])) { /// coming from category selection drop-down menu + if (!empty($cat)) { //----------------------------------------------------------- $modform->category = $cat; } - if(isset($_REQUEST['displayoptions'])) { - $modform->recurse = isset($_REQUEST['recurse']) ? 1 : 0; - $modform->showhidden = isset($_REQUEST['showhidden']); + if (empty($modform->category)) { + $modform->category = ""; } -/// all commands have been dealt with, now print the page - - if (empty($modform->category) or !record_exists('quiz_categories', 'id', $modform->category)) { - $category = quiz_get_default_category($course->id); - $modform->category = $category->id; - } - if (!isset($modform->recurse)) { - $modform->recurse = 1; - } - if (!isset($modform->showhidden)) { - $modform->showhidden = false; + $modform->sumgrades = 0; + if (!empty($modform->grades)) { + foreach ($modform->grades as $grade) { + $modform->sumgrades += $grade; + } } $SESSION->modform = $modform; + $strname = get_string('name'); + $strquizzes = get_string('modulenameplural', 'quiz'); + $strediting = get_string(isset($modform->instance) ? "editingquiz" : "editquestions", "quiz"); + $strheading = empty($modform->name) ? $strediting : $modform->name; + + print_header_simple($strediting, '', + "<a href=\"$CFG->wwwroot/mod/quiz/index.php?id=$course->id\">$strquizzes</a> -> $strediting"); + // Print basic page layout. - if (isset($modform->instance) and record_exists_sql("SELECT * FROM {$CFG->prefix}quiz_attempts WHERE quiz = '$modform->instance' AND NOT (userid = '$USER->id') LIMIT 1")){ - // one column layout with table of questions used in this quiz - print_header_simple($streditingquiz, '', - "<a href=\"index.php?id=$course->id\">$strquizzes</a>". - " -> <a href=\"view.php?q=$modform->instance\">".format_string($modform->name,true)."</a>". - " -> $streditingquiz"); - print_simple_box_start("center"); - print_heading(format_string($modform->name)); - $attemptcount = count_records_select("quiz_attempts", "quiz = '$modform->instance' AND timefinish > 0"); - - $strviewallanswers = get_string("viewallanswers","quiz",$attemptcount); - $strattemptsexist = get_string("attemptsexist","quiz"); - $usercount = count_records("quiz_grades", "quiz", "$modform->instance"); - $strusers = get_string("users"); - if (! $cm = get_coursemodule_from_instance("quiz", $modform->instance, $course->id)) { - error("Course Module ID was incorrect"); - } - notify("$strattemptsexist<br /><a href=\"report.php?id=$cm->id\">$strviewallanswers ($usercount $strusers)</a>"); - - $sumgrades = quiz_print_question_list($modform->questions, $modform->grades, false, $modform->instance); - if (!set_field('quiz', 'sumgrades', $sumgrades, 'id', $modform->instance)) { - error('Failed to set sumgrades'); - } - - print_simple_box_end(); - print_continue('view.php?q='.$modform->instance); - print_footer($course); - exit; - } - if (!isset($modform->instance)) { - // one column layout for non-quiz-specific editing page - print_header_simple($streditingquestions, '', - "<a href=\"index.php?id=$course->id\">$strquizzes</a>". - " -> $streditingquestions"); echo '<table align="center" border="0" cellpadding="2" cellspacing="0">'; echo '<tr><td valign="top">'; } else { - // two column layout with quiz info in left column - print_header_simple($streditingquiz, '', - "<a href=\"index.php?id=$course->id\">$strquizzes</a>". - " -> <a href=\"view.php?q=$modform->instance\">".format_string($modform->name,true)."</a>". - " -> $streditingquiz"); echo '<table border="0" width="100%" cellpadding="2" cellspacing="0">'; echo '<tr><td width="50%" valign="top">'; - print_simple_box_start("center", "100%"); - print_heading(format_string($modform->name)); - $sumgrades = quiz_print_question_list($modform->questions, $modform->grades, true, $modform->instance); - if (!set_field('quiz', 'sumgrades', $sumgrades, 'id', $modform->instance)) { - error('Failed to set sumgrades'); + print_simple_box_start("center", "100%", $THEME->cellcontent2); + print_heading($modform->name); + quiz_print_question_list($modform->questions, $modform->grades); + ?> + <center> + <p>&nbsp;</p> + <?php + + if ($attemptcount = count_records_select("quiz_attempts", "quiz = '$modform->instance' AND timefinish > 0")) { + $strviewallanswers = get_string("viewallanswers","quiz",$attemptcount); + $strattemptsexist = get_string("attemptsexist","quiz"); + $usercount = count_records("quiz_grades", "quiz", "$modform->instance"); + $strusers = get_string("users"); + if (! $cm = get_coursemodule_from_instance("quiz", $modform->instance, $course->id)) { + error("Course Module ID was incorrect"); + } + notify("$strattemptsexist<br /><a href=\"report.php?id=$cm->id\">$strviewallanswers ($usercount $strusers)</a>"); } + ?> + <form name="theform" method="post" action=<?php echo $modform->destination ?>> + <input type="hidden" name="course" value="<?php p($modform->course) ?>"> + <input type="submit" value="<?php print_string("savequiz", "quiz") ?>"> + <input type="submit" name="cancel" value="<?php print_string("cancel") ?>"> + </form> + </center> + <?php + + print_simple_box_end(); - print_continue('view.php?q='.$modform->instance); echo '</td><td valign="top" width="50%">'; } - // non-quiz-specific column - print_simple_box_start("center", "100%"); - // starts with category selection form - quiz_print_category_form($course, $modform->category, $modform->recurse, $modform->showhidden); + print_simple_box_start("center", "100%", $THEME->cellcontent2); + quiz_print_category_form($course, $modform->category); + print_simple_box_end(); + + print_spacer(5,1); + + print_simple_box_start("center", "100%", $THEME->cellcontent2); + quiz_print_cat_question_list($modform->category, + isset($modform->instance)); print_simple_box_end(); - print_spacer(5,1); - // continues with list of questions - print_simple_box_start("center", "100%"); - quiz_print_cat_question_list($course, $modform->category, - isset($modform->instance), $modform->recurse, $page, $perpage, $modform->showhidden); - print_simple_box_end(); - if (!isset($modform->instance)) { - print_continue("index.php?id=$modform->course"); - } else { - print_continue('view.php?q='.$modform->instance); - } echo '</td></tr>'; echo '</table>'; - + if (!isset($modform->instance)) { + print_continue("index.php?id=$modform->course"); + } print_footer($course); ?> diff --git a/mod/quiz/export.php b/mod/quiz/export.php index f00681423c1..ac57cb21d75 100644 --- a/mod/quiz/export.php +++ b/mod/quiz/export.php @@ -1,8 +1,8 @@ -<?php // $Id$ +<?PHP // $Id$ // Import quiz questions into the given category require_once("../../config.php"); - require_once("locallib.php"); + require_once("lib.php"); require_variable($category); optional_variable($format); @@ -15,7 +15,7 @@ error("This category doesn't belong to a valid course!"); } - require_login($course->id, false); + require_login($course->id); if (!isteacher($course->id)) { error("Only the teacher can export quiz questions!"); @@ -33,10 +33,8 @@ if ($form = data_submitted()) { /// Filename - $form->format = clean_filename($form->format); - if (! is_readable("format/$form->format/format.php")) { - error('Format not known ('.clean_text($form->format).')'); + error("Format not known ($form->format)"); } require("format.php"); // Parent class @@ -45,42 +43,29 @@ $format = new quiz_file_format(); if (! $format->exportpreprocess($category, $course)) { // Do anything before that we need to - error("Error occurred during pre-processing!", + error("Error occurred during pre-processing!", "$CFG->wwwroot/mod/quiz/export.php?category=$category->id"); } if (! $format->exportprocess($exportfilename)) { // Process the export data - error("Error occurred during processing!", + error("Error occurred during processing!", "$CFG->wwwroot/mod/quiz/export.php?category=$category->id"); } if (! $format->exportpostprocess()) { // In case anything needs to be done after - error("Error occurred during post-processing!", + error("Error occurred during post-processing!", "$CFG->wwwroot/mod/quiz/export.php?category=$category->id"); } + echo "<hr />"; - - // link to download the finished file - $file_ext = $format->export_file_extension(); - $download_str = get_string( 'download', 'quiz' ); - $downloadextra_str = get_string( 'downloadextra','quiz' ); - if ($CFG->slasharguments) { - $efile = "{$CFG->wwwroot}/file.php/$course->id/quiz/$exportfilename".$file_ext; - } - else { - $efile = "{$CFG->wwwroot}/file.php?file=/$course->id/quiz/$exportfilename".$file_ext; - } - echo "</p><center><a href=\"$efile\">$download_str</a></center></p>"; - echo "</p><center><font size=\"-1\">$downloadextra_str</font></center></p>"; - print_continue("edit.php"); print_footer($course); exit; - } + } /// Print upload form - if (!$categories = quiz_get_category_menu($course->id, false)) { + if (!$categories = quiz_get_category_menu($course->id, true)) { error("No categories!"); } @@ -98,36 +83,36 @@ // get filename if (!isset($exportfilename)) { $exportfilename = default_export_filename($course, $category); - } + } print_heading_with_help($strexportquestions, "export", "quiz"); - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); echo "<form enctype=\"multipart/form-data\" method=\"post\" action=\"export.php\">"; - echo "<table cellpadding=\"5\">"; + echo "<table cellpadding=5>"; - echo "<tr><td align=\"right\">"; + echo "<tr><td align=right>"; print_string("category", "quiz"); echo ":</td><td>"; - echo str_replace('&nbsp;', '', $categories[$category->id]) . " ($course->shortname)"; - echo "</td></tr>"; + choose_from_menu($categories, "category", "$category->id", ""); + echo "</tr>"; - echo "<tr><td align=\"right\">"; + echo "<tr><td align=right>"; print_string("fileformat", "quiz"); echo ":</td><td>"; choose_from_menu($fileformatnames, "format", "gift", ""); helpbutton("export", $strexportquestions, "quiz"); - echo "</td></tr>"; + echo "</tr>"; echo "<tr><td align=\"right\">"; print_string("exportname", "quiz" ); echo ":</td><td>"; - echo "<input type=\"text\" size=\"40\" name=\"exportfilename\" value=\"$exportfilename\" />"; + echo "<input type=\"text\" size=\"40\" name=\"exportfilename\" value=\"$exportfilename\">"; echo "</td></tr>"; echo "<tr><td align=\"center\" colspan=\"2\">"; - echo " <input type=\"hidden\" name=\"category\" value=\"$category->id\" />"; - echo " <input type=\"submit\" name=\"save\" value=\"".get_string("exportquestions","quiz")."\" />"; + echo " <input type=hidden name=category value=\"$category->id\">"; + echo " <input type=submit name=save value=\"".get_string("exportquestions","quiz")."\">"; echo "</td></tr>"; echo "</table>"; diff --git a/mod/quiz/format.php b/mod/quiz/format.php index 7f4dd2ecd2e..5ab1d4e5604 100644 --- a/mod/quiz/format.php +++ b/mod/quiz/format.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////// /// format.php - Default format class for file imports/exports. // @@ -45,7 +45,7 @@ class quiz_default_format { foreach ($questions as $question) { // Process and store each question $count++; - echo "<hr /><p><b>$count</b>. ".stripslashes($question->questiontext)."</p>"; + echo "<hr><p><b>$count</b>. ".stripslashes($question->questiontext)."</p>"; $question->category = $this->category->id; $question->stamp = make_unique_id_code(); // Set the unique code (not to be changed) @@ -191,10 +191,7 @@ class quiz_default_format { // $questions = get_records("quiz_questions","category",$this->category->id); $questions = get_questions_category( $this->category ); - notify("Exporting questions."); - if (!count($questions)) { - return true; - } + notify("Exporting ".count($questions)." questions."); $count = 0; // results are first written into string (and then to a file) @@ -204,12 +201,8 @@ class quiz_default_format { // iterate through questions foreach($questions as $question) { $count++; - $qtype = $question->qtype; - // ignore random questiond - if ($qtype!=RANDOM) { - echo "<hr /><p><b>$count</b>. ".stripslashes($question->questiontext)."</p>"; - $expout .= $this->writequestion( $question ) . "\n"; - } + echo "<hr><p><b>$count</b>. ".stripslashes($question->questiontext)."</p>"; + $expout .= $this->writequestion( $question ) . "\n"; } // final pre-process on exported data diff --git a/mod/quiz/format/aiken/format.php b/mod/quiz/format/aiken/format.php index f5ed8a31c7c..4c888d44b27 100644 --- a/mod/quiz/format/aiken/format.php +++ b/mod/quiz/format/aiken/format.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// /// Written by Tom Robb <tom@robb.net> 2 November 2003 @@ -48,7 +48,7 @@ class quiz_file_format extends quiz_default_format { continue; } // This will show everyline when file is being processed - // print("$nowline<br />"); + // print("$nowline<br>"); $leader = substr(ltrim($nowline),0,2); if (strpos(".A)B)C)D)E)F)G)H)I)J)A.B.C.D.E.F.G.H.I.J.",$leader)>0){ //trim off the label and space diff --git a/mod/quiz/format/aon/format.php b/mod/quiz/format/aon/format.php index a228c676290..c9c39af1371 100644 --- a/mod/quiz/format/aon/format.php +++ b/mod/quiz/format/aon/format.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////// /// Academy of Nursing format @@ -38,7 +38,7 @@ class quiz_file_format extends quiz_default_format { $answerstart = strpos($text, "{"); if ($answerstart === false) { if ($this->displayerrors) { - echo "<p>$text<p>Could not find a {"; + echo "<P>$text<P>Could not find a {"; } return false; } @@ -46,7 +46,7 @@ class quiz_file_format extends quiz_default_format { $answerfinish = strpos($text, "}"); if ($answerfinish === false) { if ($this->displayerrors) { - echo "<p>$text<p>Could not find a }"; + echo "<P>$text<P>Could not find a }"; } return false; } @@ -67,7 +67,7 @@ class quiz_file_format extends quiz_default_format { switch ($countanswers) { case 0: // invalid question if ($this->displayerrors) { - echo "<p>No answers found in $answertext"; + echo "<P>No answers found in $answertext"; } return false; diff --git a/mod/quiz/format/blackboard/format.php b/mod/quiz/format/blackboard/format.php index 9197885d9d9..0d4d40678d3 100644 --- a/mod/quiz/format/blackboard/format.php +++ b/mod/quiz/format/blackboard/format.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////// /// Blackboard 6.0 Format /// @@ -53,7 +53,7 @@ class quiz_file_format extends quiz_default_format { /// readquestion(). $text = implode($lines, " "); - $xml = xmlize($text, 0); + $xml = xmlize($text); $questions = array(); diff --git a/mod/quiz/format/coursetestmanager/format.php b/mod/quiz/format/coursetestmanager/format.php index 5c971d219c0..4ba52ef9e73 100755 --- a/mod/quiz/format/coursetestmanager/format.php +++ b/mod/quiz/format/coursetestmanager/format.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////// /// Class for importing course test manager questions. // /// // @@ -6,7 +6,7 @@ //////////////////////////////////////////////////////////////////// // Based on format.php, included by ../../import.php -require_once($CFG->dirroot.'/lib/uploadlib.php'); + class quiz_file_format { function importpreprocess($category) { @@ -14,229 +14,227 @@ class quiz_file_format { return true; } function importprocess($filename) { - global $CFG,$QUIZ_FILE_FORMAT,$strimportquestions,$form,$question_category,$category,$course, + global $CFG,$QUIZ_FILE_FORMAT,$strimportquestions,$form,$question_category,$category,$course,$THEME, $hostname, $mdapath, $mdbpath; - if ((PHP_OS == "Linux") and isset($hostname)) { - $hostname = trim($hostname); - // test the ODBC socket server connection - // if failure, unset hostname and set hostname_access_error + if ((PHP_OS == "Linux") and isset($hostname)) { + $hostname = trim($hostname); + // test the ODBC socket server connection + // if failure, unset hostname and set hostname_access_error $question_categories = $this->getquestioncategories($mdbpath, $mdapath, $hostname); - if (!$question_categories) { - $hostname_access_error = $hostname . " "; - unset($hostname); + if (!$question_categories) { + $hostname_access_error = $hostname . " "; + unset($hostname); } else { - $hostname_access_error = 0; + $hostname_access_error = 0; } - } + } - if ((PHP_OS == "Linux") and !isset($hostname)) { - // copy the file to a semi-permanent location - if (! $basedir = make_upload_directory("$course->id")) { - error("The site administrator needs to fix the file permissions for the data directory"); - } - if (!isset($hostname_access_error)) { - $bname=basename($filename); - $cleanfilename = clean_filename($bname); - if ($cleanfilename) { - $newfile = "$basedir/$cleanfilename"; - if (move_uploaded_file($filename, $newfile)) { - chmod($newfile, 0666); - clam_log_upload($newfile,$course); - } else { - notify(get_string("uploadproblem", "", $filename)); - } - } - $filename = $newfile; - } - print_heading_with_help($strimportquestions, "import", "quiz"); - print_simple_box_start("center"); - if ($hostname_access_error) { notify("couldn't connect to ODBC Socket Server on " . $hostname_access_error); } - echo "<form method=\"post\" action=\"import.php\">"; - echo "<table cellpadding=\"5\">"; + if ((PHP_OS == "Linux") and !isset($hostname)) { + // copy the file to a semi-permanent location + if (! $basedir = make_upload_directory("$course->id")) { + error("The site administrator needs to fix the file permissions for the data directory"); + } + if (!isset($hostname_access_error)) { + $bname=basename($filename); + $cleanfilename = clean_filename($bname); + if ($cleanfilename) { + $newfile = "$basedir/$cleanfilename"; + if (move_uploaded_file($filename, $newfile)) { + chmod($newfile, 0666); + } else { + notify(get_string("uploadproblem", "", $filename)); + } + } + $filename = $newfile; + } + print_heading_with_help($strimportquestions, "import", "quiz"); + print_simple_box_start("center", "", "$THEME->cellheading"); + if ($hostname_access_error) { notify("couldn't connect to ODBC Socket Server on " . $hostname_access_error); } + echo "<form method=\"post\" action=\"import.php\">"; + echo "<table cellpadding=5>"; - echo "<tr><td align=\"right\">"; - echo "What is the hostname or IP address of the ODBC Socket Server:</td><td>"; - echo " <input name=\"hostname\" type=\"text\" size=\"50\" value=\"".stripslashes($hostname_access_error)."\" />"; - echo " <input name=\"filename\" type=\"hidden\" value=\"".$filename."\" />"; - echo " <input name=\"category\" type=\"hidden\" value=\"".$category->id."\" />"; - echo " <input name=\"format\" type=\"hidden\" value=\"".$form->format."\" />"; - echo "</td><td>&nbsp;</td></tr>"; - echo "<tr><td align=\"right\">"; - echo "What is the location of the database (.mdb file) on the Socket Server:</td><td>"; - echo " <input name=\"mdbpath\" type=\"text\" size=\"50\" value=\"".stripslashes($mdbpath)."\" />"; - echo "</td><td>&nbsp;</td></tr>"; - echo "<tr><td align=\"right\">"; - echo "What is the location of the system database (System.mda file) on the Socket Server:</td><td>"; - echo " <input name=\"mdapath\" type=\"text\" size=\"50\" value=\"".stripslashes($mdapath)."\" />"; - echo "</td><td>&nbsp;</td></tr>"; - echo "<tr><td>&nbsp;</td><td>"; - echo " <input type=\"submit\" name=\"save\" value=\"Connect to Server\" />"; - echo "</td></tr>"; - echo "</table>"; - echo "</form>"; - print_simple_box_end(); - print_footer($course); - exit; - } - - // we get here if running windows or after connect to ODBC socket server on linux + echo "<tr><td align=right>"; + echo "What is the hostname or IP address of the ODBC Socket Server:</td><td>"; + echo " <input name=\"hostname\" type=\"text\" size=\"50\" value=\"".stripslashes($hostname_access_error)."\">"; + echo " <input name=\"filename\" type=\"hidden\" value=\"".$filename."\">"; + echo " <input name=\"category\" type=\"hidden\" value=\"".$category->id."\">"; + echo " <input name=\"format\" type=\"hidden\" value=\"".$form->format."\">"; + echo "</td><td>&nbsp;</td></tr>"; + echo "<tr><td align=right>"; + echo "What is the location of the database (.mdb file) on the Socket Server:</td><td>"; + echo " <input name=\"mdbpath\" type=\"text\" size=\"50\" value=\"".stripslashes($mdbpath)."\">"; + echo "</td><td>&nbsp;</td></tr>"; + echo "<tr><td align=right>"; + echo "What is the location of the system database (System.mda file) on the Socket Server:</td><td>"; + echo " <input name=\"mdapath\" type=\"text\" size=\"50\" value=\"".stripslashes($mdapath)."\">"; + echo "</td><td>&nbsp;</td></tr>"; + echo "<tr><td>&nbsp;</td><td>"; + echo " <input type=submit name=save value=\"Connect to Server\">"; + echo "</td></tr>"; + echo "</table>"; + echo "</form>"; + print_simple_box_end(); + print_footer($course); + exit; + } + + // we get here if running windows or after connect to ODBC socket server on linux // // this generates the page to choose categories of questions to import // - if (!isset($question_category)) { + if (!isset($question_category)) { - if (PHP_OS == "WINNT") { - // copy the file to a semi-permanent location - if (! $basedir = make_upload_directory("$course->id")) { - error("The site administrator needs to fix the file permissions for the data directory"); - } - $bname=basename($filename); - $cleanfilename = clean_filename($bname); - if ($cleanfilename) { - $newfile = "$basedir/$cleanfilename"; - if (move_uploaded_file($filename, $newfile)) { - chmod($newfile, 0666); - clam_log_upload($newfile,$course); - } else { - notify(get_string("uploadproblem", "", $filename)); - } - } - $filename = $newfile; - } + if (PHP_OS == "WINNT") { + // copy the file to a semi-permanent location + if (! $basedir = make_upload_directory("$course->id")) { + error("The site administrator needs to fix the file permissions for the data directory"); + } + $bname=basename($filename); + $cleanfilename = clean_filename($bname); + if ($cleanfilename) { + $newfile = "$basedir/$cleanfilename"; + if (move_uploaded_file($filename, $newfile)) { + chmod($newfile, 0666); + } else { + notify(get_string("uploadproblem", "", $filename)); + } + } + $filename = $newfile; + } // end of file copy - // don't have to do this on linux, since it's alreay been done in the test above + // don't have to do this on linux, since it's alreay been done in the test above if (PHP_OS == "WINNT") { $question_categories = $this->getquestioncategories($filename); } // print the intermediary form - if (!$categories = quiz_get_category_menu($course->id, true)) { - error("No categories!"); - } - print_heading_with_help($strimportquestions, "import", "quiz"); - print_simple_box_start("center"); - echo "<form method=\"post\" action=\"import.php\">"; - echo "<table cellpadding=\"5\">"; - echo "<tr><td align=\"right\">"; - echo "Choose a category of questions to import:</td><td>"; - asort($question_categories); - choose_from_menu($question_categories, "question_category","All Categories","All Categories", "", "allcategories"); - echo " <input name=\"filename\" type=\"hidden\" value=\"".$filename."\" />"; - echo " <input name=\"category\" type=\"hidden\" value=\"".$category->id."\" />"; - echo " <input name=\"format\" type=\"hidden\" value=\"".$form->format."\" />"; - if (PHP_OS == "Linux") { - echo " <input name=\"hostname\" type=\"hidden\" value=\"".stripslashes(trim($hostname))."\" />"; - echo " <input name=\"mdbpath\" type=\"hidden\" value=\"".stripslashes($mdbpath)."\" />"; - echo " <input name=\"mdapath\" type=\"hidden\" value=\"".stripslashes($mdapath)."\" />"; - } - echo "</td><td>&nbsp;</td>"; - echo "</tr><tr><td>&nbsp;</td><td>"; - echo " <input type=\"submit\" name=\"save\" value=\"Import Questions\" />"; - echo "</td></tr>"; - echo "</table>"; - echo "</form>"; - print_simple_box_end(); - print_footer($course); - exit; - } + if (!$categories = quiz_get_category_menu($course->id, true)) { + error("No categories!"); + } + print_heading_with_help($strimportquestions, "import", "quiz"); + print_simple_box_start("center", "", "$THEME->cellheading"); + echo "<form method=\"post\" action=\"import.php\">"; + echo "<table cellpadding=5>"; + echo "<tr><td align=right>"; + echo "Choose a category of questions to import:</td><td>"; + asort($question_categories); + choose_from_menu($question_categories, "question_category","All Categories","All Categories", "", "allcategories"); + echo " <input name=\"filename\" type=\"hidden\" value=\"".$filename."\">"; + echo " <input name=\"category\" type=\"hidden\" value=\"".$category->id."\">"; + echo " <input name=\"format\" type=\"hidden\" value=\"".$form->format."\">"; + if (PHP_OS == "Linux") { + echo " <input name=\"hostname\" type=\"hidden\" value=\"".stripslashes(trim($hostname))."\">"; + echo " <input name=\"mdbpath\" type=\"hidden\" value=\"".stripslashes($mdbpath)."\">"; + echo " <input name=\"mdapath\" type=\"hidden\" value=\"".stripslashes($mdapath)."\">"; + } + echo "</td><td>&nbsp;</td>"; + echo "</tr><tr><td>&nbsp;</td><td>"; + echo " <input type=submit name=save value=\"Import Questions\">"; + echo "</td></tr>"; + echo "</table>"; + echo "</form>"; + print_simple_box_end(); + print_footer($course); + exit; + } // // this is the main import section // notify("Importing questions"); - if (PHP_OS == "Linux") { - $hostname = trim($hostname); - $records = $this->getquestions($mdbpath,$question_category,$mdapath, $hostname); + if (PHP_OS == "Linux") { + $hostname = trim($hostname); + $records = $this->getquestions($mdbpath,$question_category,$mdapath, $hostname); } else { - $records = $this->getquestions($filename,$question_category); + $records = $this->getquestions($filename,$question_category); } - foreach ($records as $qrec) - { - $question = NULL; - $question->image = ""; // No images with this format - if ($qrec[9] != "") { - $question->image = $qrec[9]; - } - $question->defaultgrade = 1; -// 0 Selected -// 1 PracticeTestOK? -// 2 QuestionText -// 3 QuestionType -// 4 Option1Text -// 5 Option2Text -// 6 Option3Text -// 7 Option4Text -// 8 CorrectAnswer -// 9 Graphic -// 10 Module -// 11 ChapterNumber -// 12 PageNumber + foreach ($records as $qrec) + { + $question = NULL; + $question->image = ""; // No images with this format + if ($qrec[9] != "") { + $question->image = $qrec[9]; + } + $question->defaultgrade = 1; +// 0 Selected +// 1 PracticeTestOK? +// 2 QuestionText +// 3 QuestionType +// 4 Option1Text +// 5 Option2Text +// 6 Option3Text +// 7 Option4Text +// 8 CorrectAnswer +// 9 Graphic +// 10 Module +// 11 ChapterNumber +// 12 PageNumber $ref = "Answer can be found in chapter ". $qrec[11] . ", page " . $qrec[12] . "."; - switch ($qrec[3]) { - case 1: - $question->qtype = MULTICHOICE; // MULTICHOICE, SHORTANSWER, TRUEFALSE - // echo "<pre>";echo htmlspecialchars($qrec[2]); echo "</pre>"; - $question->questiontext = addslashes(trim($qrec[2])); - // echo "<pre>";echo $question->questiontext; echo "</pre>"; - $question->name = preg_replace("/<br />/", "", $question->questiontext); - $question->single = 1; // Only one answer is allowed -- used for multiple choicers - $fractionset = 0; - for ($i=4;$i<=7;$i++) { - if ($qrec[$i] != "") { - $question->answer[$i-3]=addslashes($qrec[$i]); - if ($qrec[8] == $i-3) { // if this is the index of CorrectAnswer - $question->fraction[$i-3] = 1; - $fractionset = 1; - } else { - $question->fraction[$i-3] = 0; - } - $question->feedback[$i-3] = (($qrec[8] == $i-3)?"Correct. ":"Incorrect. ") . $ref; - } - } - if ($fractionset == 0) { $question->fraction[1] = 1; } - break; - case 2: // TRUE FALSE - $question->qtype = TRUEFALSE; - $question->questiontext = addslashes(trim($qrec[2])); - $question->name = preg_replace("/<br />/", "", $question->questiontext); - // for TF, $question->answer should be 1 for true, 0 for false - if ($qrec[8] == "T") { $question->answer =1;} else { $question->answer = 0; } - // for TF, use $question->feedbacktrue and feedbackfalse - $question->feedbacktrue = (($qrec[8] =="T")?"Correct. ":"Incorrect. ") . $ref; - $question->feedbackfalse = (($qrec[8] =="F")?"Correct. ":"Incorrect. ") . $ref; - break; - case 3: - $question->qtype = SHORTANSWER; - $question->questiontext = addslashes(trim($qrec[2])); - // echo "<pre>";echo $question->questiontext; echo "</pre>"; - $question->name = preg_replace("/<br />/", "", $question->questiontext); - $question->usecase=0; // Ignore case -- for SHORT ANSWER questions - $answers = explode("~", $qrec[8]); - $question->answer[0]=" "; - $question->fraction[0]=1; - for ($i=0;$i<count($answers);$i++) { - $question->answer[$i] = addslashes(trim($answers[$i])); - $question->feedback[$i] = $ref; - $question->fraction[$i] = 1; // 1 for 100%, 0 for none or somewhere in between - } - break; - case 4: - $question = 0; - notify("Cannot use essay questions - skipping question ". $qrec[2] . " " . $ref); - break; - default: - $question = 0; - notify("Misformatted Record. Question Skipped."); - break; - } + switch ($qrec[3]) { + case 1: + $question->qtype = MULTICHOICE; // MULTICHOICE, SHORTANSWER, TRUEFALSE + // echo "<pre>";echo htmlspecialchars($qrec[2]); echo "</pre>"; + $question->questiontext = addslashes(trim($qrec[2])); + // echo "<pre>";echo $question->questiontext; echo "</pre>"; + $question->name = preg_replace("/<br>/", "", $question->questiontext); + $question->single = 1; // Only one answer is allowed -- used for multiple choicers + $fractionset = 0; + for ($i=4;$i<=7;$i++) { + if ($qrec[$i] != "") { + $question->answer[$i-3]=addslashes($qrec[$i]); + if ($qrec[8] == $i-3) { // if this is the index of CorrectAnswer + $question->fraction[$i-3] = 1; + $fractionset = 1; + } else { + $question->fraction[$i-3] = 0; + } + $question->feedback[$i-3] = (($qrec[8] == $i-3)?"Correct. ":"Incorrect. ") . $ref; + } + } + if ($fractionset == 0) { $question->fraction[1] = 1; } + break; + case 2: // TRUE FALSE + $question->qtype = TRUEFALSE; + $question->questiontext = addslashes(trim($qrec[2])); + $question->name = preg_replace("/<br>/", "", $question->questiontext); + // for TF, $question->answer should be 1 for true, 0 for false + if ($qrec[8] == "T") { $question->answer =1;} else { $question->answer = 0; } + // for TF, use $question->feedbacktrue and feedbackfalse + $question->feedbacktrue = (($qrec[8] =="T")?"Correct. ":"Incorrect. ") . $ref; + $question->feedbackfalse = (($qrec[8] =="F")?"Correct. ":"Incorrect. ") . $ref; + break; + case 3: + $question->qtype = SHORTANSWER; + $question->questiontext = addslashes(trim($qrec[2])); + // echo "<pre>";echo $question->questiontext; echo "</pre>"; + $question->name = preg_replace("/<br>/", "", $question->questiontext); + $question->usecase=0; // Ignore case -- for SHORT ANSWER questions + $answers = explode("~", $qrec[8]); + $question->answer[0]=" "; + $question->fraction[0]=1; + for ($i=0;$i<count($answers);$i++) { + $question->answer[$i] = addslashes(trim($answers[$i])); + $question->feedback[$i] = $ref; + $question->fraction[$i] = 1; // 1 for 100%, 0 for none or somewhere in between + } + break; + case 4: + $question = 0; + notify("Cannot use essay questions - skipping question ". $qrec[2] . " " . $ref); + break; + default: + $question = 0; + notify("Misformatted Record. Question Skipped."); + break; + } if ($question) { $questions[] = $question; } - } - $count = 0; - // process all the questions - if (PHP_OS == "WINNT") { - $filename = str_replace("\\\\","\\",$filename); - $filename = str_replace("/","\\",$filename); - } - foreach ($questions as $question) { // Process and store each question + } + $count = 0; + // process all the questions + if (PHP_OS == "WINNT") { + $filename = str_replace("\\\\","\\",$filename); + $filename = str_replace("/","\\",$filename); + } + foreach ($questions as $question) { // Process and store each question $count++; - echo "<hr /><p><b>$count</b>. ".stripslashes($question->questiontext)."</p>"; + echo "<hr><p><b>$count</b>. ".stripslashes($question->questiontext)."</p>"; $question->category = $this->category->id; $question->stamp = make_unique_id_code(); // Set the unique code (not to be changed) $question->version = 1; // Original version of this question @@ -265,245 +263,245 @@ class quiz_file_format { return true; } - function deletedatabase($filename) { - if (! $this->fulldelete($filename)) { - echo "<br />Error: Could not delete: $filename"; + function deletedatabase($filename) { + if (! $this->fulldelete($filename)) { + echo "<BR>Error: Could not delete: $filename"; return false; } - return true; - } + return true; + } - function getquestions($filename, $category, $mdapath="", $hostname="") { - if (($category == "allcategories") or ($category == "")) { - $sql = "SELECT * FROM TBQuestions"; - } else { - $sql = "SELECT * FROM TBQuestions where module = '".$category."'"; - } - if (PHP_OS == "WINNT") { - $ldb =& $this->connect_win($filename); - $qset = $ldb->Execute("$sql"); - if ( $qset->RecordCount() > 0 ) { - $records = $qset->GetAssoc(true); - } else { - $this->err("There were no records in the database.",$dsn); - $ldb->Close(); - return false; - } - $ldb->Close(); - } else { // if PHP_OS == WINNT - // we have a linux installation - $result = $this->query_linux($sql,$filename, $mdapath,$hostname); - if ( count($result) > 0 ) { - // get rid of the ID field in the first column. - for($i=0;$i<count($result);$i++) { - foreach (array_keys($result[$i]) as $j) { - $records[$i][$j-1] = $result[$i][$j]; - } - } - } else { - $this->err("There were no records in the database.",$dsn); - $ldb->Close(); - return false; - } - // xml test and connect - } // PHP_OS TEST - return $records; - } + function getquestions($filename, $category, $mdapath="", $hostname="") { + if (($category == "allcategories") or ($category == "")) { + $sql = "SELECT * FROM TBQuestions"; + } else { + $sql = "SELECT * FROM TBQuestions where module = '".$category."'"; + } + if (PHP_OS == "WINNT") { + $ldb =& $this->connect_win($filename); + $qset = $ldb->Execute("$sql"); + if ( $qset->RecordCount() > 0 ) { + $records = $qset->GetAssoc(true); + } else { + $this->err("There were no records in the database.",$dsn); + $ldb->Close(); + return false; + } + $ldb->Close(); + } else { // if PHP_OS == WINNT + // we have a linux installation + $result = $this->query_linux($sql,$filename, $mdapath,$hostname); + if ( count($result) > 0 ) { + // get rid of the ID field in the first column. + for($i=0;$i<count($result);$i++) { + foreach (array_keys($result[$i]) as $j) { + $records[$i][$j-1] = $result[$i][$j]; + } + } + } else { + $this->err("There were no records in the database.",$dsn); + $ldb->Close(); + return false; + } + // xml test and connect + } // PHP_OS TEST + return $records; + } function getquestioncategories($filename, $mdapath="", $hostname="") { global $CFG, $result; - $sql = "SELECT Distinct module FROM TBQuestions"; - if (PHP_OS == "WINNT") { - $ldb =& $this->connect_win($filename); - $qset = $ldb->Execute("$sql"); + $sql = "SELECT Distinct module FROM TBQuestions"; + if (PHP_OS == "WINNT") { + $ldb =& $this->connect_win($filename); + $qset = $ldb->Execute("$sql"); if ( $qset->RecordCount() > 0 ) { $records = $qset->GetArray(true); - foreach ($records as $record) { - $categories[$record[0]] = $record[0]; - } - } else { // if recordcount + foreach ($records as $record) { + $categories[$record[0]] = $record[0]; + } + } else { // if recordcount $this->err("There were no records in the database.",$dsn); - $ldb->Close(); - return false; - } - $ldb->Close(); - } else { // if PHP_OS == WINNT - // we have a linux installation - $result = $this->query_linux($sql, $filename, $mdapath, $hostname); - for($i=0;$i<count($result);$i++) { - $categories[$result[$i][0]] = $result[$i][0]; - } - } // PHP_OS TEST - return $categories; + $ldb->Close(); + return false; + } + $ldb->Close(); + } else { // if PHP_OS == WINNT + // we have a linux installation + $result = $this->query_linux($sql, $filename, $mdapath, $hostname); + for($i=0;$i<count($result);$i++) { + $categories[$result[$i][0]] = $result[$i][0]; + } + } // PHP_OS TEST + return $categories; } - - function query_linux($sql, $mdbpath, $mdapath, $hostname) { - global $result; - include_once("odbcsocketserver.class.php"); - // set up socket server object to connect to remote host - $oTest = new ODBCSocketServer; - //Set the Hostname, port, and connection string - $oTest->sHostName = $hostname; - $oTest->nPort = 9628; -// $oTest->sConnectionString="DRIVER=Microsoft Access Driver (*.mdb);SystemDB=C:\CTM\System.mda;DBQ=C:\CTM\of2K3\ctm.mdb;UID=Assess;PWD=VBMango;"; - $oTest->sConnectionString="DRIVER=Microsoft Access Driver (*.mdb);SystemDB=". - $mdapath.";DBQ=".$mdbpath.";UID=Assess;PWD=VBMango;"; - // send and receive XML communication - $qResult = $oTest->ExecSQL($sql); - // set up XML parser to read the results - $xml_parser = xml_parser_create("US-ASCII"); - xml_set_element_handler($xml_parser, "quiz_xmlstart", "quiz_xmlend"); + + function query_linux($sql, $mdbpath, $mdapath, $hostname) { + global $result; + include_once("odbcsocketserver.class.php"); + // set up socket server object to connect to remote host + $oTest = new ODBCSocketServer; + //Set the Hostname, port, and connection string + $oTest->sHostName = $hostname; + $oTest->nPort = 9628; +// $oTest->sConnectionString="DRIVER=Microsoft Access Driver (*.mdb);SystemDB=C:\CTM\System.mda;DBQ=C:\CTM\of2K3\ctm.mdb;UID=Assess;PWD=VBMango;"; + $oTest->sConnectionString="DRIVER=Microsoft Access Driver (*.mdb);SystemDB=". + $mdapath.";DBQ=".$mdbpath.";UID=Assess;PWD=VBMango;"; + // send and receive XML communication + $qResult = $oTest->ExecSQL($sql); + // set up XML parser to read the results + $xml_parser = xml_parser_create("US-ASCII"); + xml_set_element_handler($xml_parser, "quiz_xmlstart", "quiz_xmlend"); xml_set_character_data_handler($xml_parser, "quiz_xmldata"); // parse the XML and get back the result set array if (!xml_parse($xml_parser, $qResult)) { - $this->err("XML error: ".xml_error_string(xml_get_error_code($xml_parser)) - ." at line ".xml_get_current_line_number($xml_parser),$oTest->sConnectionString); - return false; - } else { -// echo("Successful XML parse. "); - // prepare the array for use in the pull-down -/* echo "<br />count of rows is ". count ($result); - echo "<pre>\n"; - $qResult = HtmlSpecialChars($qResult); - echo $qResult; - echo "\n</pre>"; + $this->err("XML error: ".xml_error_string(xml_get_error_code($xml_parser)) + ." at line ".xml_get_current_line_number($xml_parser),$oTest->sConnectionString); + return false; + } else { +// echo("Successful XML parse. "); + // prepare the array for use in the pull-down +/* echo "<br>count of rows is ". count ($result); + echo "<pre>\n"; + $qResult = HtmlSpecialChars($qResult); + echo $qResult; + echo "\n</pre>"; */ - xml_parser_free($xml_parser); -// $sResult = HtmlSpecialChars($qResult); - //echo("<pre>"); -// echo($sResult); -// echo("</pre>"); + xml_parser_free($xml_parser); +// $sResult = HtmlSpecialChars($qResult); + //echo("<pre>"); +// echo($sResult); +// echo("</pre>"); - return $result; - } + return $result; } + } - function connect_win($filename) { - global $CFG, $systemdb; - // first, verify the location of System.mda - if (!isset($systemdb)) { - $systemdb=$this->findfile("System.mda"); - } - if (! $systemdb) { + function connect_win($filename) { + global $CFG, $systemdb; + // first, verify the location of System.mda + if (!isset($systemdb)) { + $systemdb=$this->findfile("System.mda"); + } + if (! $systemdb) { $this->err("The system database System.mda cannot be found. Check that you've uploaded it to the course.",$dsn); die; - } + } - $ldb = &ADONewConnection('access'); - $dsn="DRIVER=Microsoft Access Driver (*.mdb);SystemDB=".$systemdb.";DBQ=".$filename.";UID=Assess;PWD=VBMango;"; - $dbconnected = $ldb->Connect($dsn); - if (! $dbconnected) { + $ldb = &ADONewConnection('access'); + $dsn="DRIVER=Microsoft Access Driver (*.mdb);SystemDB=".$systemdb.";DBQ=".$filename.";UID=Assess;PWD=VBMango;"; + $dbconnected = $ldb->Connect($dsn); + if (! $dbconnected) { $this->err("Moodle could not connect to the database.",$dsn); die; - } - return $ldb; - } + } + return $ldb; + } function err($message, $dsn) { - echo "<font color=\"#990000\">"; - echo "<p>Error: $message</p>"; - echo "<p>ODBC File DSN: $dsn<br />"; - echo "</font>"; - } + echo "<font color=\"#990000\">"; + echo "<p>Error: $message</p>"; + echo "<p>ODBC File DSN: $dsn<br />"; + echo "</font>"; + } - function fulldelete($location) { - if (is_dir($location)) { - $currdir = opendir($location); - while ($file = readdir($currdir)) { - if ($file <> ".." && $file <> ".") { - $fullfile = $location."/".$file; - if (is_dir($fullfile)) { - if (!fulldelete($fullfile)) { - return false; - } - } else { - if (!unlink($fullfile)) { - return false; - } - } - } - } - closedir($currdir); - if (! rmdir($location)) { - return false; - } - - } else { - if (!unlink($location)) { - return false; - } - } - return true; - } + function fulldelete($location) { + if (is_dir($location)) { + $currdir = opendir($location); + while ($file = readdir($currdir)) { + if ($file <> ".." && $file <> ".") { + $fullfile = $location."/".$file; + if (is_dir($fullfile)) { + if (!fulldelete($fullfile)) { + return false; + } + } else { + if (!unlink($fullfile)) { + return false; + } + } + } + } + closedir($currdir); + if (! rmdir($location)) { + return false; + } + + } else { + if (!unlink($location)) { + return false; + } + } + return true; + } - function findfile($filename) { - global $CFG; - $dirs = $this->getcoursedirs(); - $dirs[] = $CFG->dirroot."\mod\quiz\format"; - foreach ($dirs as $dir) { - $file = $dir . "\System.mda"; - // look for System.mda - if (is_file($file)) return $file; - } - return false; + function findfile($filename) { + global $CFG; + $dirs = $this->getcoursedirs(); + $dirs[] = $CFG->dirroot."\mod\quiz\format"; + foreach ($dirs as $dir) { + $file = $dir . "\System.mda"; + // look for System.mda + if (is_file($file)) return $file; + } + return false; } function getcoursedirs() { - global $CFG; - // for every course in the system, find the root of the data directory - $courses = get_records_sql("select distinct id,fullname from ".$CFG->prefix."course"); - $dirs = array(); - if ($courses) { - foreach ($courses as $course) { - $dir = $CFG->dataroot . "/" . $course->id; - if (is_dir($dir)) { $dirs[] = $dir; } - } - } - return $dirs; + global $CFG; + // for every course in the system, find the root of the data directory + $courses = get_records_sql("select distinct id,fullname from ".$CFG->prefix."course"); + $dirs = array(); + if ($courses) { + foreach ($courses as $course) { + $dir = $CFG->dataroot . "/" . $course->id; + if (is_dir($dir)) { $dirs[] = $dir; } + } + } + return $dirs; } } // END OF CLASS - //Handler for starting elements - function quiz_xmlstart($parser, $name, $attribs) { - global $result,$row, $col, $incolumn; - $name = strtolower($name); - switch ($name) { - case "row": + //Handler for starting elements + function quiz_xmlstart($parser, $name, $attribs) { + global $result,$row, $col, $incolumn; + $name = strtolower($name); + switch ($name) { + case "row": $col=0;break; - case "column": - $incolumn = 1;break; - case "error": + case "column": + $incolumn = 1;break; + case "error": break; - case "result": - $row = 0; break; - } // switch - } + case "result": + $row = 0; break; + } // switch + } - //handler for the end of elements - function quiz_xmlend($parser, $name) { - global $result, $row, $col, $incolumn; - $name = strtolower($name); - switch ($name) { - case "row": + //handler for the end of elements + function quiz_xmlend($parser, $name) { + global $result, $row, $col, $incolumn; + $name = strtolower($name); + switch ($name) { + case "row": $row++;break; - case "column": - $incolumn = 0; + case "column": + $incolumn = 0; $col++; break; - case "error": + case "error": break; - case "result": + case "result": break; - } // switch - } // function + } // switch + } // function - //handler for character data - function quiz_xmldata($parser, $data) { - global $result, $row, $col, $incolumn; - if ($incolumn) { $result[$row][$col] = $result[$row][$col] . $data; - } - } + //handler for character data + function quiz_xmldata($parser, $data) { + global $result, $row, $col, $incolumn; + if ($incolumn) { $result[$row][$col] = $result[$row][$col] . $data; + } + } ?> diff --git a/mod/quiz/format/gift/format.php b/mod/quiz/format/gift/format.php index 30f53bd85bd..6405fa2feb6 100755 --- a/mod/quiz/format/gift/format.php +++ b/mod/quiz/format/gift/format.php @@ -126,7 +126,7 @@ class quiz_file_format extends quiz_default_format { $answerstart = strpos($text, "{"); if ($answerstart === false) { if ($this->displayerrors) { - echo "<p>$text<p>Could not find a {"; + echo "<P>$text<P>Could not find a {"; } return false; } @@ -134,7 +134,7 @@ class quiz_file_format extends quiz_default_format { $answerfinish = strpos($text, "}"); if ($answerfinish === false) { if ($this->displayerrors) { - echo "<p>$text<p>Could not find a }"; + echo "<P>$text<P>Could not find a }"; } return false; } @@ -193,7 +193,7 @@ class quiz_file_format extends quiz_default_format { if (!isset($question->qtype)) { if ($this->displayerrors) { - echo "<p>$text<p>Question type not set."; + echo "<P>$text<P>Question type not set."; } return false; } @@ -218,7 +218,7 @@ class quiz_file_format extends quiz_default_format { $countanswers = count($answers); if ($countanswers < 2) { if ($this->displayerrors) { - echo "<p>$text<p>Found tilde for multiple choice, + echo "<P>$text<P>Found tilde for multiple choice, but too few answers for Multiple Choice.<br /> Found <u>$countanswers</u> answers in answertext."; } @@ -262,7 +262,7 @@ class quiz_file_format extends quiz_default_format { $countanswers = count($answers); if ($countanswers < 3) { if ($this->displayerrors) { - echo "<p>$text<p>Found markers for Matching format + echo "<P>$text<P>Found markers for Matching format (= and ->), but too few answers -- must be at least 3.<br /> Found <u>$countanswers</u> answers in answertext."; } @@ -274,7 +274,7 @@ class quiz_file_format extends quiz_default_format { $answer = trim($answer); if (strpos($answer, "->") <= 0) { if ($this->displayerrors) { - echo "<p>$text<p>Error processing Matching question.<br /> + echo "<P>$text<P>Error processing Matching question.<br /> Improperly formatted answer: $answer"; } return false; @@ -323,7 +323,7 @@ class quiz_file_format extends quiz_default_format { if (count($answers) == 0) { // invalid question if ($this->displayerrors) { - echo "<p>$text<p>Found equals=, but no answers in answertext"; + echo "<P>$text<P>Found equals=, but no answers in answertext"; } return false; break; @@ -364,7 +364,7 @@ class quiz_file_format extends quiz_default_format { if (count($answers) == 0) { // invalid question if ($this->displayerrors) { - echo "<p>$text<p>No answers found in answertext (Numerical answer)"; + echo "<P>$text<P>No answers found in answertext (Numerical answer)"; } return false; break; @@ -407,8 +407,8 @@ class quiz_file_format extends quiz_default_format { OR !is_numeric($question->max[$key]) OR !is_numeric($question->max[$key])) { if ($this->displayerrors) { - echo "<p>$text<p>For numerical questions, answer must be numbers. - <p>Answer: <u>$answer</u><p>ErrorMargin: <u>$errormargin</u> ."; + echo "<P>$text<P>For numerical questions, answer must be numbers. + <P>Answer: <u>$answer</u><P>ErrorMargin: <u>$errormargin</u> ."; } return false; break; @@ -418,13 +418,12 @@ class quiz_file_format extends quiz_default_format { $question->defaultgrade = 1; $question->image = ""; // No images with this format - $question->multiplier = array(); // no numeric multipliers with GIFT return $question; break; default: if ($this->displayerrors) { - echo "<p>$text<p> No valid question type. Error in switch(question->qtype)"; + echo "<P>$text<P> No valid question type. Error in switch(question->qtype)"; } return false; break; @@ -433,14 +432,6 @@ class quiz_file_format extends quiz_default_format { } // end function readquestion($lines) -function repchar( $text ) { - // escapes 'reserved' characters # = ~ { ) - $reserved = array( '#','=','~','{','}' ); - $escaped = array( '\#','\=','\~','\{','\}' ); - - return str_replace( $reserved, $escaped, $text ); - } - function writequestion( $question ) { // turns question into string // question reflects database fields for general question and specific to type @@ -456,15 +447,15 @@ function writequestion( $question ) { case TRUEFALSE: if ($question->trueanswer->fraction==1) { $answertext = 'TRUE'; - $wrong_feedback = $this->repchar( $question->falseanswer->feedback ); - $right_feedback = $this->repchar( $question->trueanswer->feedback ); + $wrong_feedback = $question->falseanswer->feedback; + $right_feedback = $question->trueanswer->feedback; } else { $answertext = 'FALSE'; - $wrong_feedback = $this->repchar( $question->trueanswer->feedback ); - $right_feedback = $this->repchar( $question->falseanswer->feedback ); + $wrong_feedback = $question->trueanswer->feedback; + $right_feedback = $question->falseanswer->feedback; } - $expout .= "::".$question->name."::".$this->repchar( $question->questiontext )."{".$this->repchar( $answertext ); + $expout .= "::".$question->name."::".$question->questiontext."{".$answertext; if ($wrong_feedback!="") { $expout .= "#".$wrong_feedback; } @@ -474,43 +465,39 @@ function writequestion( $question ) { $expout .= "}\n"; break; case MULTICHOICE: - $expout .= "::".$question->name."::".$this->repchar( $question->questiontext )."{\n"; + $expout .= "::".$question->name."::".$question->questiontext."{\n"; foreach($question->answers as $answer) { if ($answer->fraction==1) { $answertext = '='; } - elseif ($answer->fraction==0) { + else { $answertext = '~'; } - else { - $export_weight = $answer->fraction*100; - $answertext = "~%$export_weight%"; - } - $expout .= "\t".$answertext.$this->repchar( $answer->answer ); + $expout .= "\t".$answertext.$answer->answer; if ($answer->feedback!="") { - $expout .= "#".$this->repchar( $answer->feedback ); + $expout .= "#".$answer->feedback; } $expout .= "\n"; } $expout .= "}\n"; break; case SHORTANSWER: - $expout .= "::".$question->name."::".$this->repchar( $question->questiontext )."{\n"; + $expout .= "::".$question->name."::".$question->questiontext."{\n"; foreach($question->answers as $answer) { $weight = 100 * $answer->fraction; - $expout .= "\t=%".$weight."%".$this->repchar( $answer->answer )."#".$this->repchar( $answer->feedback )."\n"; + $expout .= "\t=%".$weight."%".$answer->answer."#".$answer->feedback."\n"; } $expout .= "}\n"; break; case NUMERICAL: - $expout .= "::".$question->name."::".$this->repchar( $question->questiontext )."{\n"; - $expout .= "\t#".$question->min."..".$question->max."#".$this->repchar( $question->answer->feedback )."\n"; + $expout .= "::".$question->name."::".$question->questiontext."{\n"; + $expout .= "\t#".$question->min."..".$question->max."#".$question->answer->feedback."\n"; $expout .= "}\n"; break; case MATCH: - $expout .= "::".$question->name."::".$this->repchar( $question->questiontext )."{\n"; + $expout .= "::".$question->name."::".$question->questiontext."{\n"; foreach($question->subquestions as $subquestion) { - $expout .= "\t=".$this->repchar( $subquestion->questiontext )." -> ".$this->repchar( $subquestion->answertext )."\n"; + $expout .= "\t=".$subquestion->questiontext." -> ".$subquestion->answertext."\n"; } $expout .= "}\n"; break; @@ -521,7 +508,7 @@ function writequestion( $question ) { $expout .= "// CLOZE type is not supported\n"; break; default: - notify("No handler for qtype $question->qtype for GIFT export" ); + error( "No handler for qtype $question->qtype for GIFT export" ); } // add empty line to delimit questions $expout .= "\n"; diff --git a/mod/quiz/format/learnwise/format.php b/mod/quiz/format/learnwise/format.php deleted file mode 100755 index 363f69e9e20..00000000000 --- a/mod/quiz/format/learnwise/format.php +++ /dev/null @@ -1,144 +0,0 @@ -<?php // $Id$ -// Alton College, Hampshire, UK - Tom Flannaghan, Andrew Walker -// Imports learnwise multiple choice quizzes (single and multiple answers) -// currently ignores the deduct attribute for multiple answer questions -// deductions are currently simply found by dividing the award for the incorrect -// answer by the total number of options -// Based on format.php, included by ../../import.php - -class quiz_file_format extends quiz_default_format { - - function readquestions($lines) { - $questions = array(); - $currentquestion = array(); - - foreach($lines as $line) { - $line = trim($line); - $currentquestion[] = $line; - - if ($question = $this->readquestion($currentquestion)) { - $questions[] = $question; - $currentquestion = array(); - } - } - return $questions; - } - - function readquestion($lines) { - $text = implode(' ', $lines); - $text = str_replace(array('\t','\n','\r','\''), array('','','','\\\''), $text); - - $startpos = strpos($text, '<question type'); - $endpos = strpos($text, '</question>'); - if ($startpos === false || $endpos === false) { - return false; - } - - preg_match("/<question type=[\"\']([^\"\']+)[\"\']>/i", $text, $matches); - $type = strtolower($matches[1]); // multichoice or multianswerchoice - - $questiontext = $this->unhtmlentities($this->stringbetween($text, '<text>', '</text>')); - $questionhint = $this->unhtmlentities($this->stringbetween($text, '<hint>', '</hint>')); - $questionaward = $this->stringbetween($text, '<award>', '</award>'); - $optionlist = $this->stringbetween($text, '<answer>', '</answer>'); - - $optionlist = explode('<option', $optionlist); - - $n = 0; - - $optionscorrect = array(); - $optionstext = array(); - - if ($type == 'multichoice') { - foreach ($optionlist as $option) { - $correct = $this->stringbetween($option, ' correct="', '">'); - $answer = $this->stringbetween($option, '">', '</option>'); - $optionscorrect[$n] = $correct; - $optionstext[$n] = $this->unhtmlentities($answer); - ++$n; - } - } else if ($type == 'multianswerchoice') { - $numcorrect = 0; - $totalaward = 0; - - $optionsaward = array(); - - foreach ($optionlist as $option) { - preg_match("/correct=\"([^\"]*)\"/i", $option, $correctmatch); - preg_match("/award=\"([^\"]*)\"/i", $option, $awardmatch); - - $correct = $correctmatch[1]; - $award = $awardmatch[1]; - if ($correct == 'yes') { - $totalaward += $award; - ++$numcorrect; - } - - $answer = $this->stringbetween($option, '">', '</option>'); - - $optionscorrect[$n] = $correct; - $optionstext[$n] = $this->unhtmlentities($answer); - $optionsaward[$n] = $award; - ++$n; - } - - } else { - echo "<p>I don't understand this question type (type = <strong>$type</strong>).</p>\n"; - } - - $question->qtype = MULTICHOICE; - $question->name = substr($questiontext, 0, 30); - if (strlen($questiontext) > 30) { - $question->name .= '...'; - } - - $question->questiontext = $questiontext; - $question->single = ($type == 'multichoice') ? 1 : 0; - $question->feedback[] = ''; - $question->usecase = 0; - $question->defaultgrade = 1; - $question->image = ''; - - $question->fraction = array(); - $question->answer = array(); - for ($n = 0; $n < count($optionstext); ++$n) { - if ($optionstext[$n]) { - if (!isset($numcorrect)) { // single answer - if ($optionscorrect[$n] == 'yes') { - $fraction = (int) $questionaward; - } else { - $fraction = 0; - } - } else { // mulitple answers - if ($optionscorrect[$n] == 'yes') { - $fraction = $optionsaward[$n] / $totalaward; - } else { - $fraction = -$optionsaward[$n] / count($optionstext); - } - } - $question->fraction[] = $fraction; - $question->answer[] = $optionstext[$n]; - } - } - - return $question; - } - - function stringbetween($text, $start, $end) { - $startpos = strpos($text, $start) + strlen($start); - $endpos = strpos($text, $end); - - if ($startpos <= $endpos) { - return substr($text, $startpos, $endpos - $startpos); - } - } - - function unhtmlentities($string) { - $transtable = get_html_translation_table(HTML_ENTITIES); - $transtable = array_flip($transtable); - return strtr($string, $transtable); - } - -} - -?> diff --git a/mod/quiz/format/learnwise/learnwise-example.xml b/mod/quiz/format/learnwise/learnwise-example.xml deleted file mode 100644 index a44069551df..00000000000 --- a/mod/quiz/format/learnwise/learnwise-example.xml +++ /dev/null @@ -1,146 +0,0 @@ -<?xml version="1.0" ?> -<activityset setno="2"> - <title>Maths</title> - <questions> - <question type="multiChoice"> - <text>The ages, in years, of 10 horses in a field were 3, 3, 4, 5, 7, 7, 7, 8, 8, 8,&lt;p&gt; -Which one of the following is true?</text> - <award>1</award> - <hint>mean = (3+3+4+5+7+7+7+8+8+8)/10 = 6&lt;p&gt; -median = 7 i.e the middle number&lt;p&gt; -range = 8-3 = 5</hint> - <answer> - <option correct="yes">median &gt; mean &gt; range</option> - <option correct="no">mean = median</option> - <option correct="no">mean &gt; median &gt; range</option> - <option correct="no">median &gt; range &gt; mean</option> - </answer> - </question> - <question type="multiChoice"> - <text>At a college, students are given a points score calculated from their GCSE grades.&lt;p&gt; -Someone with 4 A grades and 4 B grades gains a score of 36 points.&lt;br&gt;Someone with 2 A grades and 4 B grades gains a score of 26 points.&lt;br&gt;Someone with 3 A grades and 3 B grades would have a score of</text> - <award>1</award> - <hint>4A + 4B = 36 and 2A + 4B = 26&lt;p&gt;solving simultaneously gives A = 5 and B = 4</hint> - <answer> - <option correct="yes">27 points</option> - <option correct="no">21 points</option> - <option correct="no">30 points</option> - <option correct="no">31 points</option> - </answer> - </question> - <question type="multiChoice"> - <text>A sequence consists of adding the previous three terms together to form the next term. The first three terms of the sequence are 1, 2, 3.&lt;p&gt; -What is the sixth term in the sequence?</text> - <award>1</award> - <hint>1, 2, 3, 6, 11, ...</hint> - <answer> - <option correct="yes">20</option> - <option correct="no">6</option> - <option correct="no">11</option> - <option correct="no">13</option> - </answer> - </question> - <question type="multiChoice"> - <text>The value of an item is described as decreasing exponentially. Which description below best matches this statement?</text> - <award>1</award> - <hint>No hint - you either know this or you don't!</hint> - <answer> - <option correct="yes">The value falls by a smaller amount each year.</option> - <option correct="no">The value falls by the same amount each year.</option> - <option correct="no">The value falls by the same amount each year for a while, and then remains constant.</option> - <option correct="no">The value falls by a larger amount each year.</option> - </answer> - </question> - <question type="multiChoice"> - <text>Consider the statement&lt;p&gt; -&quot;Schools with high numbers of pupils on free school meals do not do well in league tables.&quot;&lt;p&gt; -Which of the following statements follows logically from the one above?</text> - <award>1</award> - <hint>Factors other than the number of pupils on free school meals affect how well a school does in league tables.</hint> - <answer> - <option correct="yes">Schools which do well in league tables do not have high numbers of pupils on free school meals.</option> - <option correct="no">Schools with low numbers of pupils on free school meals do well in league tables.</option> - <option correct="no">Making all pupils pay for school meals will improve league table results.</option> - <option correct="no">Schools which do not do well in league tables have high numbers of pupils on free school meals.</option> - </answer> - </question> - <question type="multiChoice"> - <text>The force between two point electric charges is inversely proportional to the square of their distance apart. What effect does doubling this distance have on the force?</text> - <award>1</award> - <hint>Inversely proportional means that increasing the distance decreases the force.&lt;br&gt;2 squared gives 4.</hint> - <answer> - <option correct="yes">The force decreases by a factor of four.</option> - <option correct="no">The force is halved.</option> - <option correct="no">The force is doubled.</option> - <option correct="no">The force increases by a factor of four.</option> - </answer> - </question> - <question type="multiChoice"> - <text>Two of the five playing cards that Colin has are aces. He shuffles the five cards, then puts them face down on the table. Madge takes a card and then another. The probability that she now has &lt;b&gt;both&lt;/b&gt; of the aces is</text> - <award>1</award> - <hint>2/5 x 1/4</hint> - <answer> - <option correct="yes">1/10</option> - <option correct="no">4/25</option> - <option correct="no">1/5</option> - <option correct="no">2/5</option> - </answer> - </question> - <question type="multiChoice"> - <text>A college's guidelines say that classes must have a minimum of 12 students and a maximum of 20 students. For what numbers of students studying a particular subject is it impossible to run classes without breaking the guidelines?</text> - <award>1</award> - <hint>between 12 and 20 students - one class&lt;br&gt; -between 24 and 36 students - two classes&lt;br&gt; -between 36 and 40 students - two classes</hint> - <answer> - <option correct="yes">between 20 and 24 students</option> - <option correct="no">between 12 and 20 students</option> - <option correct="no">between 24 and 36 students</option> - <option correct="no">between 36 and 40 students</option> - </answer> - </question> - <question type="multiChoice"> - <text>The ages of two friends are in the ratio 3:4. In 8 years time their ages will be in the ratio 5:6. How old are they now?</text> - <award>1</award> - <hint>(12+8):(16+8) = 20:24 = 5:6</hint> - <answer> - <option correct="yes">12, 16</option> - <option correct="no">3, 4</option> - <option correct="no">6, 8</option> - <option correct="no">9, 12</option> - </answer> - </question> - <question type="multiChoice"> - <text>A heavy construction vehicle travels for 40 minutes between sites, at an average speed of 16 km per second. The distance between sites is</text> - <award>1</award> - <hint>16/60 x 40</hint> - <answer> - <option correct="yes">10.7 km</option> - <option correct="no">2.5 km</option> - <option correct="no">6.4 km</option> - <option correct="no">38.4 km</option> - </answer> - </question> - <question type="multianswerchoice"> - <text>Which of the following are features of a Virtual Learning Environment? (Select all that apply)</text> - <hint /> - <answer> - <option correct="yes" award="1" deduct="0">course resources are available from home and from college</option> - <option correct="yes" award="1" deduct="0">forums enable collaborative work</option> - <option correct="yes" award="1" deduct="0">assessments can give instant feedback</option> - <option correct="yes" award="1" deduct="0">course progress is recorded</option> - <option correct="no" award="1" deduct="0">kettle is put on automatically for tea/coffee</option> - </answer> - </question> - <question type="multianswerchoice"> - <text>Which of the following may a Virtual Learning Environment be used for? (Select all that apply)</text> - <hint /> - <answer> - <option correct="yes" award="1" deduct="1">delivering a course online</option> - <option correct="yes" award="1" deduct="1">supporting face-to-face teaching</option> - <option correct="no" award="1" deduct="0">as a complete replacement for teachers</option> - </answer> - </question> - </questions> - </questions> -</activityset> diff --git a/mod/quiz/format/missingword/format.php b/mod/quiz/format/missingword/format.php index ea81dcf58a9..7014b72bf7d 100644 --- a/mod/quiz/format/missingword/format.php +++ b/mod/quiz/format/missingword/format.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// Modified by Tom Robb 12 June 2003 to include percentage and comment insertion /// facility. @@ -43,7 +43,7 @@ class quiz_file_format extends quiz_default_format { $answerstart = strpos($text, "{"); if ($answerstart === false) { if ($this->displayerrors) { - echo "<p>$text<p>Could not find a {"; + echo "<P>$text<P>Could not find a {"; } return false; } @@ -51,7 +51,7 @@ class quiz_file_format extends quiz_default_format { $answerfinish = strpos($text, "}"); if ($answerfinish === false) { if ($this->displayerrors) { - echo "<p>$text<p>Could not find a }"; + echo "<P>$text<P>Could not find a }"; } return false; } @@ -79,7 +79,7 @@ class quiz_file_format extends quiz_default_format { switch ($countanswers) { case 0: // invalid question if ($this->displayerrors) { - echo "<p>No answers found in $answertext"; + echo "<P>No answers found in $answertext"; } return false; diff --git a/mod/quiz/format/multianswer/format.php b/mod/quiz/format/multianswer/format.php index 25f5972dbdc..6ac834001f1 100644 --- a/mod/quiz/format/multianswer/format.php +++ b/mod/quiz/format/multianswer/format.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////// /// MULTIANSWER FORMAT diff --git a/mod/quiz/format/qti/custommediafilter.php b/mod/quiz/format/qti/custommediafilter.php deleted file mode 100644 index 00685c22fbd..00000000000 --- a/mod/quiz/format/qti/custommediafilter.php +++ /dev/null @@ -1,146 +0,0 @@ -<?php // $id$ - -// note: modified from the original filter/mediaplugin/filter.php - -// given a href for a movie or sound file, it returns an appropriate tag - -function custom_mediaplugin_filter($text, $width = null, $height = null) { - global $CFG; - if (is_null($width) || $width == 0) { - $usedefaults = true; - $width = 400; - $height = 300; - } else { - $usedefaults = false; - } - - if (empty($CFG->filter_mediaplugin_ignore_mp3)) { - $search = '/<a(.*?)href=\"([^<]+)\.mp3\"([^>]*)>(.*?)<\/a>/i'; - - $replace = '\\0&nbsp;<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'; - $replace .= ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" '; - $replace .= ' width="35" height="18" id="mp3player" align="">'; - $replace .= " <param name=movie value=\"$CFG->wwwroot/filter/mediaplugin/mp3player.swf?src=\\2.mp3\">"; - $replace .= ' <param name=quality value=high>'; - $replace .= ' <param name=bgcolor value="#333333">'; - $replace .= " <embed src=\"$CFG->wwwroot/filter/mediaplugin/mp3player.swf?src=\\2.mp3\" "; - $replace .= " quality=high bgcolor=\"#333333\" width=\"35\" height=\"18\" name=\"mp3player\" "; - $replace .= ' type="application/x-shockwave-flash" '; - $replace .= ' pluginspage="http://www.macromedia.com/go/getflashplayer">'; - $replace .= '</embed>'; - $replace .= '</object>&nbsp;'; - - $text = preg_replace($search, $replace, $text); - } - - if (empty($CFG->filter_mediaplugin_ignore_swf)) { - $search = '/<a(.*?)href=\"([^<]+)\.swf\"([^>]*)>(.*?)<\/a>/i'; - $replace = '\\0<object '. - 'type="application/x-shockwave-flash" ' . - 'data="\\2.swf" ' . - 'width="' . $width . '" ' . - 'height="' . $height . '"> ' . - '<param name="movie" value="\\2.swf" /> ' . - '<param name="wmode" value="transparent" />' . - '</object>'; - - -/* $replace = '\\0<p class="mediaplugin"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'; - $replace .= ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" '; - $replace .= ' width="' . $width . '" height="' . $height . '" id="mp3player" align="">'; - $replace .= " <param name=movie value=\"\\2.swf\">"; - $replace .= ' <param name=quality value=high>'; - $replace .= " <embed src=\"\\2.swf\" "; - $replace .= " quality=high width=\"$width\" height=\"$height\" name=\"flashfilter\" "; - $replace .= ' type="application/x-shockwave-flash" '; - $replace .= ' pluginspage="http://www.macromedia.com/go/getflashplayer">'; - $replace .= '</embed>'; - $replace .= '</object></p>';*/ - - $text = preg_replace($search, $replace, $text); - } - - if (empty($CFG->filter_mediaplugin_ignore_mov)) { - $search = '/<a(.*?)href=\"([^<]+)\.mov\"([^>]*)>(.*?)<\/a>/i'; - - $replace = '\\0<p class="mediaplugin"><object classid="CLSID:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"'; - $replace .= ' codebase="http://www.apple.com/qtactivex/qtplugin.cab" '; - $replace .= ' height="' . $height . '" width="' . $width . '"'; - $replace .= ' id="quicktime" align="" type="application/x-oleobject">'; - $replace .= "<param name=\"src\" value=\"\\2.mov\" />"; - $replace .= '<param name="autoplay" value=false />'; - $replace .= '<param name="loop" value=true />'; - $replace .= '<param name="controller" value=true />'; - $replace .= '<param name="scale" value="aspect" />'; - $replace .= "\n<embed src=\"\\2.mov\" name=\"quicktime\" type=\"video/quicktime\" "; - $replace .= ' height="' . $height . '" width="' . $width . '" scale="aspect" '; - $replace .= ' autoplay="false" controller="true" loop="true" '; - $replace .= ' pluginspage="http://quicktime.apple.com/">'; - $replace .= '</embed>'; - $replace .= '</object>&nbsp;'; - - $text = preg_replace($search, $replace, $text); - } - - if (empty($CFG->filter_mediaplugin_ignore_wmv)) { - $search = '/<a(.*?)href=\"([^<]+)\.wmv\"([^>]*)>(.*?)<\/a>/i'; - - $replace = '\\0<p class="mediaplugin"><object classid="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95"'; - $replace .= ' codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" '; - $replace .= ' standby="Loading Microsoft? Windows? Media Player components..." '; - $replace .= ' id="msplayer" align="" type="application/x-oleobject">'; - $replace .= "<param name=\"Filename\" value=\"\\2.wmv\">"; - $replace .= '<param name="ShowControls" value=true />'; - $replace .= '<param name="AutoRewind" value=true />'; - $replace .= '<param name="AutoStart" value=false />'; - $replace .= '<param name="Autosize" value=true />'; - $replace .= '<param name="EnableContextMenu" value=true />'; - $replace .= '<param name="TransparentAtStart" value=false />'; - $replace .= '<param name="AnimationAtStart" value=false />'; - $replace .= '<param name="ShowGotoBar" value=false />'; - $replace .= '<param name="EnableFullScreenControls" value=true />'; - $replace .= "\n<embed src=\"\\2.wmv\" name=\"msplayer\" type=\"video/x-ms\" "; - $replace .= ' ShowControls="1" AutoRewind="1" AutoStart="0" Autosize="0" EnableContextMenu="1"'; - $replace .= ' TransparentAtStart="0" AnimationAtStart="0" ShowGotoBar="0" EnableFullScreenControls="1"'; - $replace .= ' pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/">'; - $replace .= '</embed>'; - $replace .= '</object>&nbsp;'; - - $text = preg_replace($search, $replace, $text); - } - - if ($usedefaults) { - $width = 240; - $height = 180; - } - - if (empty($CFG->filter_mediaplugin_ignore_mpg)) { - $search = '/<a(.*?)href=\"([^<]+)\.(mpe?g)\"([^>]*)>(.*?)<\/a>/i'; - - $replace = '\\0<p class="mediaplugin"><object width="' . $width . '" height="' . $height . '">'; - $replace .= '<param name="src" value="\\2.\\3">'; - $replace .= '<param name="controller" value="true">'; - $replace .= '<param name="autoplay" value="false">'; - $replace .= '<embed src="\\2.\\3" width="' . $width . '" height="' . $height . '" controller="true" autoplay="false"> </embed>'; - $replace .= '</object></p>'; - - $text = preg_replace($search, $replace, $text); - } - - if (empty($CFG->filter_mediaplugin_ignore_avi)) { - $search = '/<a(.*?)href=\"([^<]+)\.avi\"([^>]*)>(.*?)<\/a>/i'; - - $replace = '\\0<p class="mediaplugin"><object width="' . $width . '" height="' . $height . '">'; - $replace .= '<param name="src" value="\\2.avi">'; - $replace .= '<param name="controller" value="true">'; - $replace .= '<param name="autoplay" value="false">'; - $replace .= '<embed src="\\2.avi" width="' . $width . '" height="' . $height . '" controller="true" autoplay="false"> </embed>'; - $replace .= '</object>&nbsp;'; - - $text = preg_replace($search, $replace, $text); - } - return $text; -} - - -?> diff --git a/mod/quiz/format/qti/format.php b/mod/quiz/format/qti/format.php index e9fe7e86d1f..9c0bab3533c 100644 --- a/mod/quiz/format/qti/format.php +++ b/mod/quiz/format/qti/format.php @@ -1,993 +1,19 @@ -<?php -require_once("$CFG->dirroot/mod/quiz/format/qti/qt_common.php"); +<?PHP // $Id$ + //////////////////////////////////////////////////////////////////////////// /// IMS QTI FORMAT -/// -/// HISTORY: created 28.01.2005 brian@mediagonal.ch //////////////////////////////////////////////////////////////////////////// // Based on format.php, included by ../../import.php -define('CLOZE_TRAILING_TEXT_ID', 9999999); - class quiz_file_format extends quiz_default_format { - - var $lang; - - function indent_xhtml($source, $indenter = ' ') { - // xml tidier-upper - // (c) Ari Koivula http://ventionline.com - - // Remove all pre-existing formatting. - // Remove all newlines. - $source = str_replace("\n", '', $source); - $source = str_replace("\r", '', $source); - // Remove all tabs. - $source = str_replace("\t", '', $source); - // Remove all space after ">" and before "<". - $source = ereg_replace(">( )*", ">", $source); - $source = ereg_replace("( )*<", "<", $source); - - // Iterate through the source. - $level = 0; - $source_len = strlen($source); - $pt = 0; - while ($pt < $source_len) { - if ($source{$pt} === '<') { - // We have entered a tag. - // Remember the point where the tag starts. - $started_at = $pt; - $tag_level = 1; - // If the second letter of the tag is "/", assume its an ending tag. - if ($source{$pt+1} === '/') { - $tag_level = -1; - } - // If the second letter of the tag is "!", assume its an "invisible" tag. - if ($source{$pt+1} === '!') { - $tag_level = 0; - } - // Iterate throught the source until the end of tag. - while ($source{$pt} !== '>') { - $pt++; - } - // If the second last letter is "/", assume its a self ending tag. - if ($source{$pt-1} === '/') { - $tag_level = 0; - } - $tag_lenght = $pt+1-$started_at; - - // Decide the level of indention for this tag. - // If this was an ending tag, decrease indent level for this tag.. - if ($tag_level === -1) { - $level--; - } - // Place the tag in an array with proper indention. - $array[] = str_repeat($indenter, $level).substr($source, $started_at, $tag_lenght); - // If this was a starting tag, increase the indent level after this tag. - if ($tag_level === 1) { - $level++; - } - // if it was a self closing tag, dont do shit. - } - // Were out of the tag. - // If next letter exists... - if (($pt+1) < $source_len) { - // ... and its not an "<". - if ($source{$pt+1} !== '<') { - $started_at = $pt+1; - // Iterate through the source until the start of new tag or until we reach the end of file. - while ($source{$pt} !== '<' && $pt < $source_len) { - $pt++; - } - // If we found a "<" (we didnt find the end of file) - if ($source{$pt} === '<') { - $tag_lenght = $pt-$started_at; - // Place the stuff in an array with proper indention. - $array[] = str_repeat($indenter, $level).substr($source, $started_at, $tag_lenght); - } - // If the next tag is "<", just advance pointer and let the tag indenter take care of it. - } else { - $pt++; - } - // If the next letter doesnt exist... Were done... well, almost.. - } else { - break; - } - } - // Replace old source with the new one we just collected into our array. - $source = implode($array, "\n"); - return $source; - } - + function importpreprocess($category) { global $CFG; - error("Sorry, importing this format is not yet implemented!", - "$CFG->wwwroot/mod/quiz/import.php?category=$category->id"); + error("Sorry, this format is not yet implemented!", "$CFG->wwwroot/mod/quiz/import.php?category=$category->id"); } - function exportpreprocess($category, $course, $lang = null) { - global $CFG; - - require_once("{$CFG->libdir}/smarty/Smarty.class.php"); - - // assign the language for the export: by parameter, SESSION, USER, or the default of 'en' - if (is_null($lang)) { - global $SESSION, $USER; - $lang = empty($SESSION->lang) ? (empty($USER->lang) ? 'en' : $USER->lang) : $SESSION->lang; - } - $this->lang = $lang; - - return parent::exportpreprocess($category, $course); - } - - - function export_file_extension() { - // override default type so extension is .xml - - return ".xml"; - } - - function get_qtype( $type_id ) { - // translates question type code number into actual name - - switch( $type_id ) { - case TRUEFALSE: - $name = 'truefalse'; - break; - case MULTICHOICE: - $name = 'multichoice'; - break; - case XMULTICHOICE: - $name = 'xmultichoice'; - break; - case SHORTANSWER: - $name = 'shortanswer'; - break; - case NUMERICAL: - $name = 'numerical'; - break; - case MATCH: - $name = 'matching'; - break; - case DESCRIPTION: - $name = 'description'; - break; - case SIMPLEESSAY: - $name = 'simpleessay'; - break; - case MULTIANSWER: - $name = 'multianswer'; - break; - case DRAGDROP: - $name = 'dragdrop'; - break; - default: - $name = 'Unknown'; - } - return $name; - } - - function writetext( $raw ) { - // generates <text></text> tags, processing raw text therein - - // for now, don't allow any additional tags in text - // otherwise xml rules would probably get broken - $raw = strip_tags( $raw ); - - return "<text>$raw</text>\n"; - } - - -/** - * flattens $object['media'], copies $object['media'] to $path, and sets $object['mediamimetype'] - * - * @param array &$object containing a field 'media' - * @param string $path the full path name to where the media files need to be copied - * @param int $courseid - * @return: mixed - true on success or in case of an empty media field, an error string if the file copy fails - */ -function copy_and_flatten(&$object, $path, $courseid) { - global $CFG; - if (!empty($object['media'])) { - $location = $object['media']; - $object['media'] = $this->flatten_image_name($location); - if (!@copy("{$CFG->dataroot}/$courseid/$location", "$path/{$object['media']}")) { - return "Failed to copy {$CFG->dataroot}/$courseid/$location to $path/{$object['media']}"; - } - if (empty($object['mediamimetype'])) { - $object['mediamimetype'] = mimeinfo('type', $object['media']); - } - } - return true; -} -/** - * copies all files needed by the questions to the given $path, and flattens the file names - * - * @param array $questions the question objects - * @param string $path the full path name to where the media files need to be copied - * @param int $courseid - * @return mixed true on success, an array of error messages otherwise - */ -function handle_questions_media(&$questions, $path, $courseid) { - global $CFG; - $errors = array(); - foreach ($questions as $key=>$question) { - - // todo: handle in-line media (specified in the question text) - if (!empty($question->image)) { - $location = $questions[$key]->image; - $questions[$key]->mediaurl = $this->flatten_image_name($location); - if (!@copy("{$CFG->dataroot}/$courseid/$location", "$path/{$questions[$key]->mediaurl}")) { - $errors[] = "Failed to copy {$CFG->dataroot}/$courseid/$location to $path/{$questions[$key]->mediaurl}"; - } - if (empty($question->mediamimetype)) { - $questions[$key]->mediamimetype = mimeinfo('type', $question->image); - } - } - } - - return empty($errors) ? true : $errors; -} - -/** - * exports the questions in a question category to the given location - * - * The parent class method was overridden because the IMS export consists of multiple files - * - * @param string $filename the directory name which will hold the exported files - * @return boolean - or errors out - */ - function exportprocess($filename) { - - global $CFG; - - // create a directory for the exports (if not already existing) - $dirname = get_string("exportfilename","quiz"); - $courseid = $this->course->id; - $path = $CFG->dataroot.'/'.$courseid.'/'.$dirname; - if (!is_dir($path)) { - if (!mkdir($path, $CFG->directorypermissions)) { - error("Cannot create path: $path"); - } - } - // create directory for this particular IMS export, if not already existing - $path = $path."/".$filename; - if (!is_dir($path)) { - if (!mkdir($path, $CFG->directorypermissions)) { - error("Cannot create path: $path"); - } - } - - // get the questions (from database) in this category - // $questions = get_records("quiz_questions","category",$this->category->id); - $questions = get_questions_category( $this->category ); - - notify("Exporting ".count($questions)." questions."); - $count = 0; - - // create the imsmanifest file - $smarty =& $this->init_smarty(); - $this->add_qti_info($questions); - - // copy files used by the main questions to the export directory - $result = $this->handle_questions_media(&$questions, $path, $courseid); - if ($result !== true) { - notify(implode("<br />", $result)); - } - - $manifestquestions = $this->objects_to_array($questions); - $manifestid = str_replace(array(':', '/'), array('-','_'), "question_category_{$this->category->id}---{$CFG->wwwroot}"); - $smarty->assign('externalfiles', 1); - $smarty->assign('manifestidentifier', $manifestid); - $smarty->assign('quiztitle', "question_category_{$this->category->id}"); - $smarty->assign('quizinfo', "All questions in category {$this->category->id}"); - $smarty->assign('questions', $manifestquestions); - $smarty->assign('lang', $this->lang); - $expout = $smarty->fetch('imsmanifest.tpl'); - $filepath = $path.'/imsmanifest.xml'; - if (!$fh=fopen($filepath,"w")) { - error("Cannot open for writing: $filepath"); - } - if (!fwrite($fh, $expout)) { - error("Cannot write exported questions to $filepath"); - } - fclose($fh); - - // iterate through questions - foreach($questions as $question) { - - // results are first written into string (and then to a file) - $count++; - echo "<hr /><p><b>$count</b>. ".stripslashes($question->questiontext)."</p>"; - $expout = $this->writequestion( $question , null, true, $path) . "\n"; - $expout = $this->presave_process( $expout ); - - $filepath = $path.'/'.$this->get_assesment_item_id($question) . $this->export_file_extension(); - if (!$fh=fopen($filepath,"w")) { - error("Cannot open for writing: $filepath"); - } - if (!fwrite($fh, $expout)) { - error("Cannot write exported questions to $filepath"); - } - fclose($fh); - - } - return true; - } - -/** - * exports a quiz (as opposed to exporting a category of questions) - * - * The parent class method was overridden because the IMS export consists of multiple files - * - * @param object $quiz - * @param array $questions - an array of question objects - * @param object $result - if set, contains result of calling quiz_grade_responses() - * @param string $redirect - a URL to redirect to in case of failure - * @param string $submiturl - the URL for the qti player to send the results to (e.g. attempt.php) - * @todo use $result in the ouput - */ - function export_quiz($course, $quiz, $questions, $result, $redirect, $submiturl = null) { - $this->xml_entitize($course); - $this->xml_entitize($quiz); - $this->xml_entitize($questions); - $this->xml_entitize($result); - $this->xml_entitize($submiturl); - if (! $this->exportpreprocess(0, $course)) { // Do anything before that we need to - error("Error occurred during pre-processing!", $redirect); - } - if (! $this->exportprocess_quiz($quiz, $questions, $result, $submiturl, $course)) { // Process the export data - error("Error occurred during processing!", $redirect); - } - if (! $this->exportpostprocess()) { // In case anything needs to be done after - error("Error occurred during post-processing!", $redirect); - } - - } - - -/** - * This function is called to export a quiz (as opposed to exporting a category of questions) - * - * @uses $USER - * @param object $quiz - * @param array $questions - an array of question objects - * @param object $result - if set, contains result of calling quiz_grade_responses() - * @todo use $result in the ouput - */ - function exportprocess_quiz($quiz, $questions, $result, $submiturl, $course) { - global $USER; - global $CFG; - - $gradingmethod = array (1 => 'GRADEHIGHEST', - 2 => 'GRADEAVERAGE', - 3 => 'ATTEMPTFIRST' , - 4 => 'ATTEMPTLAST'); - - $questions = $this->quiz_export_prepare_questions($questions, $quiz->id, $course->id, $quiz->shuffleanswers); - - $smarty =& $this->init_smarty(); - $smarty->assign('questions', $questions); - - // quiz level smarty variables - $manifestid = str_replace(array(':', '/'), array('-','_'), "quiz{$quiz->id}-{$CFG->wwwroot}"); - $smarty->assign('manifestidentifier', $manifestid); - $smarty->assign('submiturl', $submiturl); - $smarty->assign('userid', $USER->id); - $smarty->assign('username', htmlspecialchars($USER->username, ENT_COMPAT, 'UTF-8')); - $smarty->assign('quiz_level_export', 1); - $smarty->assign('quiztitle', format_string($quiz->name,true)); //assigned specifically so as not to cause problems with category-level export - $smarty->assign('quiztimeopen', date('Y-m-d\TH:i:s', $quiz->timeopen)); // ditto - $smarty->assign('quiztimeclose', date('Y-m-d\TH:i:s', $quiz->timeclose)); // ditto - $smarty->assign('grademethod', $gradingmethod[$quiz->grademethod]); - $smarty->assign('quiz', $quiz); - $smarty->assign('course', $course); - $smarty->assign('lang', $this->lang); - $expout = $smarty->fetch('imsmanifest.tpl'); - echo utf8_encode($expout); - return true; - } - - - - -/** - * Prepares questions for quiz export - * - * The questions are changed as follows: - * - the question answers atached to the questions - * - image set to an http reference instead of a file path - * - qti specific info added - * - exporttext added, which contains an xml-formatted qti assesmentItem - * - * @param array $questions - an array of question objects - * @param int $quizid - * @return an array of question arrays - */ - function quiz_export_prepare_questions($questions, $quizid, $courseid, $shuffleanswers = null) { - global $CFG; - // add the answers to the questions and format the image property - foreach ($questions as $key=>$question) { - $questions[$key] = get_question_data($question); - $questions[$key]->courseid = $courseid; - $questions[$key]->quizid = $quizid; - - if ($question->image) { - - if (empty($question->mediamimetype)) { - $questions[$key]->mediamimetype = mimeinfo('type',$question->image); - } - - $localfile = (substr(strtolower($question->image), 0, 7) == 'http://') ? false : true; - - if ($localfile) { - // create the http url that the player will need to access the file - if ($CFG->slasharguments) { // Use this method if possible for better caching - $questions[$key]->mediaurl = "$CFG->wwwroot/mod/quiz/quizfile.php/$quizid/$question->id/$question->image"; - } else { - $questions[$key]->mediaurl = "$CFG->wwwroot/mod/quiz/quizfile.php?file=/$quizid/$question->id/$question->image"; - } - } else { - $questions[$key]->mediaurl = $question->image; - } - } - } - - $this->add_qti_info($questions); - $questions = $this->questions_with_export_info($questions, $shuffleanswers); - $questions = $this->objects_to_array($questions); - return $questions; - } - -/** - * calls htmlspecialchars for each string field, to convert, for example, & to &amp; - * - * collections are processed recursively - * - * @param array $collection - an array or object or string - */ -function xml_entitize(&$collection) { - if (is_array($collection)) { - foreach ($collection as $key=>$var) { - if (is_string($var)) { - $collection[$key]= htmlspecialchars($var, ENT_COMPAT, 'UTF-8'); - } else if (is_array($var) || is_object($var)) { - $this->xml_entitize($collection[$key]); - } - } - } else if (is_object($collection)) { - $vars = get_object_vars($collection); - foreach ($vars as $key=>$var) { - if (is_string($var)) { - $collection->$key = htmlspecialchars($var, ENT_COMPAT, 'UTF-8'); - } else if (is_array($var) || is_object($var)) { - $this->xml_entitize($collection->$key); - } - } - } else if (is_string($collection)) { - $collection = htmlspecialchars($collection, ENT_COMPAT, 'UTF-8'); - } -} - -/** - * adds exporttext property to the questions - * - * Adds the qti export text to the questions - * - * @param array $questions - an array of question objects - * @return an array of question objects - */ - function questions_with_export_info($questions, $shuffleanswers = null) { - $exportquestions = array(); - foreach($questions as $key=>$question) { - $expout = $this->writequestion( $question , $shuffleanswers) . "\n"; - $expout = $this->presave_process( $expout ); - $key = $this->get_assesment_item_id($question); - $exportquestions[$key] = $question; - $exportquestions[$key]->exporttext = $expout; - } - return $exportquestions; - } - -/** - * Creates the export text for a question - * - * @todo handle in-line media (specified in the question/subquestion/answer text) for course-level exports - * @param object $question - * @param boolean $shuffleanswers whether or not to shuffle the answers - * @param boolean $courselevel whether or not this is a course-level export - * @param string $path provide the path to copy question media files to, if $courselevel == true - * @return string containing export text - */ - function writequestion($question, $shuffleanswers = null, $courselevel = false, $path = '') { - // turns question into string - // question reflects database fields for general question and specific to type - global $CFG; - $expout = ''; - //need to unencode the html entities in the questiontext field. - // the whole question object was earlier run throught htmlspecialchars in xml_entitize(). - $question->questiontext = html_entity_decode($question->questiontext, ENT_COMPAT); - - $hasimage = empty($question->image) ? 0 : 1; - $hassize = empty($question->mediax) ? 0 : 1; - - $allowedtags = '<a><br><b><h1><h2><h3><h4><i><img><li><ol><strong><table><tr><td><th><u><ul><object>'; // all other tags will be stripped from question text - $smarty =& $this->init_smarty(); - $assesmentitemid = $this->get_assesment_item_id($question); - $question_type = $this->get_qtype( $question->qtype ); - $questionid = "question{$question->id}$question_type"; - $smarty->assign('question_has_image', $hasimage); - $smarty->assign('hassize', $hassize); - $smarty->assign('questionid', $questionid); - $smarty->assign('assessmentitemidentifier', $assesmentitemid); - $smarty->assign('assessmentitemtitle', $question->name); - $smarty->assign('courselevelexport', $courselevel); - - if ($question->qtype == MULTIANSWER) { - $question->questiontext = strip_tags($question->questiontext, $allowedtags . '<intro>'); - $smarty->assign('questionText', $this->get_cloze_intro($question->questiontext)); - } else { - $smarty->assign('questionText', strip_tags($question->questiontext, $allowedtags)); - } - - $smarty->assign('question', $question); - // the following two are left for compatibility; the templates should be changed, though, to make object tags for the questions - //$smarty->assign('questionimage', $question->image); - //$smarty->assign('questionimagealt', "image: $question->image"); - - // output depends on question type - switch($question->qtype) { - case TRUEFALSE: - $answers[0] = (array)$question->trueanswer; - $answers[0]['answer'] = get_string("true", "quiz"); - $answers[1] = (array)$question->falseanswer; - $answers[1]['answer'] = get_string("false", "quiz"); - - if (!empty($shuffleanswers)) { - $answers = $this->shuffle_things($answers); - } - - $correctresponseid = $question->response[$questionid]; - if ($answers[0]['id'] == $correctresponseid) { - $correctresponse = $answers[0]; - } else { - $correctresponse = $answers[1]; - } - - $smarty->assign('correctresponse', $correctresponse); - $smarty->assign('answers', $answers); - $expout = $smarty->fetch('choice.tpl'); - break; - case MULTICHOICE: - $answers = $this->objects_to_array($question->answers); - if (!empty($shuffleanswers)) { - $answers = $this->shuffle_things($answers); - } - $correctresponses = $this->get_correct_answers($answers); - $correctcount = count($correctresponses); - - - $smarty->assign('responsedeclarationcardinality', $correctcount > 1 ? 'multiple' : 'single'); - $smarty->assign('correctresponses', $correctresponses); - $smarty->assign('answers', $answers); - $smarty->assign('maxChoices', $question->single ? '1' : count($answers)); - $expout = $smarty->fetch('choiceMultiple.tpl'); - break; - case XMULTICHOICE: - $answers = $this->objects_to_array($question->choices); - if (!empty($shuffleanswers)) { - $answers = $this->shuffle_things($answers); - } - - //set the media field to the fully qualified http://etc./etc. path, if it's a quiz-level export - if (!$courselevel) { - foreach ($answers as $key=>$answer) { - if (!empty($answer['media'])) { - $answers[$key]['media'] = $this->file_full_path($answer['media'], $this->course->id); - if (empty($answer['mediamimetype'])) { - $answers[$key]['mediamimetype'] = mimeinfo('type', $answer['media']); - } - } - } - } else { - // if it's a course level export, copy the media files to the export directory, flattening their file names - foreach ($answers as $key=>$answer) { - $result = $this->copy_and_flatten($answers[$key], $path, $this->course->id); - if ($result !== true) { - notify($result); - } - } - } - $correctresponses = $this->get_correct_answers($answers); - $correctcount = count($correctresponses); - $defaultvalue = -1 * (1 / count($answers)); - - $smarty->assign('defaultvalue', $defaultvalue); - $smarty->assign('responsedeclarationcardinality', $correctcount > 1 ? 'multiple' : 'single'); - $smarty->assign('correctresponses', $correctresponses); - $smarty->assign('answers', $answers); - $smarty->assign('maxChoices', $question->single ? '1' : count($answers)); - $expout = $smarty->fetch('mmchoiceMultiple.tpl'); - break; - case SHORTANSWER: - $answers = $this->objects_to_array($question->answers); - if (!empty($shuffleanswers)) { - $answers = $this->shuffle_things($answers); - } - - $correctresponses = $this->get_correct_answers($answers); - $correctcount = count($correctresponses); - - $smarty->assign('responsedeclarationcardinality', $correctcount > 1 ? 'multiple' : 'single'); - $smarty->assign('correctresponses', $correctresponses); - $smarty->assign('answers', $answers); - $expout = $smarty->fetch('textEntry.tpl'); - break; - case NUMERICAL: - $smarty->assign('lowerbound', $question->min); - $smarty->assign('upperbound', $question->max); - $smarty->assign('answer', $question->answer); - $expout = $smarty->fetch('numerical.tpl'); - break; - case MATCH: - $this->xml_entitize($question->subquestions); - $subquestions = $this->objects_to_array($question->subquestions); - if (!empty($shuffleanswers)) { - $subquestions = $this->shuffle_things($subquestions); - } - $setcount = count($subquestions); - - $smarty->assign('setcount', $setcount); - $smarty->assign('matchsets', $subquestions); - $expout = $smarty->fetch('match.tpl'); - break; - case DESCRIPTION: - $expout = $smarty->fetch('extendedText.tpl'); - break; - case SIMPLEESSAY: - $expout = $smarty->fetch('extendedText_simpleEssay.tpl'); - break; - case MULTIANSWER: - $answers = $this->get_cloze_answers_array($question); - $questions = $this->get_cloze_questions($question, $answers, $allowedtags); - - $smarty->assign('cloze_trailing_text_id', CLOZE_TRAILING_TEXT_ID); - $smarty->assign('answers', $answers); - $smarty->assign('questions', $questions); - $expout = $smarty->fetch('composite.tpl'); - break; - case DRAGDROP: - $this->xml_entitize($question->subquestions); - $subquestions = $this->objects_to_array($question->subquestions); - if (!empty($shuffleanswers)) { - $subquestions = $this->shuffle_things($subquestions); - } - - foreach ($subquestions as $key=>$subquestion) { - $subquestions[$key]['targetrx'] = $subquestion['targetx'] + $subquestion['targetwidth']; - $subquestions[$key]['targetby'] = $subquestion['targety'] + $subquestion['targetheight']; - //set the media field to the fully qualified http://etc./etc. path, if it's a quiz-level export - if (!$courselevel) { - if (!empty($subquestion['media'])) { - $subquestions[$key]['media'] = $this->file_full_path($subquestion['media'], $this->course->id); - if (empty($subquestion['mediamimetype'])) { - $subquestions[$key]['mediamimetype'] = mimeinfo('type', $subquestion['media']); - } - } - } else { - // if it's a course level export, copy the media files to the export directory, flattening their file names - $result = $this->copy_and_flatten($subquestions[$key], $path, $this->course->id); - if ($result !== true) { - notify($result); - } - } - } - - $smarty->assign('question', $question); - $smarty->assign('hotspotmaxmatch', $question->freestyle ? count($subquestions) : 1); - $smarty->assign('gapitems', $subquestions); - $expout = $smarty->fetch('graphicGapMatch.tpl'); - break; - default: - $smarty->assign('questionText', "This question type (Unknown: type $question_type) has not yet been implemented"); - $expout = $smarty->fetch('notimplemented.tpl'); - } - - // run through xml tidy function - //$tidy_expout = $this->indent_xhtml( $expout, ' ' ) . "\n\n"; - //return $tidy_expout; - return $expout; - } - -/** - * Gets an id to use for a qti assesment item - * - * @param object $question - * @return string containing a qti assesment item id - */ - function get_assesment_item_id($question) { - return "question{$question->id}"; - } - -/** - * gets the answers whose grade fraction > 0 - * - * @param array $answers - * @return array (0-indexed) containing the answers whose grade fraction > 0 - */ - function get_correct_answers($answers) - { - $correctanswers = array(); - foreach ($answers as $answer) { - if ($answer['fraction'] > 0) { - $correctanswers[] = $answer; - } - } - return $correctanswers; - } - -/** - * gets a new Smarty object, with the template and compile directories set - * - * @return object a smarty object - */ - function & init_smarty() { - global $CFG; - $smarty = new Smarty; - $smarty->template_dir = "{$CFG->dirroot}/mod/quiz/format/qti/templates"; - $smarty->compile_dir = "{$CFG->dirroot}/mod/quiz/format/qti/templates_c"; - return $smarty; - } - -/** - * converts an array of objects to an array of arrays (not recursively) - * - * @param array $objectarray - * @return array - an array of answer arrays - */ - function objects_to_array($objectarray) - { - $arrayarray = array(); - foreach ($objectarray as $object) { - $arrayarray[] = (array)$object; - } - return $arrayarray; - } - -/** - * gets a question's cloze answer objects as arrays containing only arrays and basic data types - * - * @param object $question - * @return array - an array of answer arrays - */ - function get_cloze_answers_array($question) { - $answers = quiz_embedded_cloze_qtype::get_answers($question); - $this->xml_entitize($answers); - foreach ($answers as $answerkey => $answer) { - $answers[$answerkey]->subanswers = $this->objects_to_array($answer->subanswers); - } - return $this->objects_to_array($answers); - } - -/** - * gets an array with text and question arrays for the given cloze question - * - * To make smarty processing easier, the returned text and question sub-arrays have an equal number of elements. - * If it is necessary to add a dummy element to the question sub-array, the question will be given an id of CLOZE_TRAILING_TEXT_ID. - * - * @param object $question - * @param array $answers - an array of arrays containing the question's answers - * @param string $allowabletags - tags not to strip out of the question text (e.g. '<i><br>') - * @return array with text and question arrays for the given cloze question - */ - function get_cloze_questions($question, $answers, $allowabletags) { - $questiontext = strip_tags($question->questiontext, $allowabletags); - if (preg_match_all('/(.*){#([0-9]+)}/U', $questiontext, $matches)) { - // matches[1] contains the text inbetween the question blanks - // matches[2] contains the id of the question blanks (db: quiz_multianswers.positionkey) - - // find any trailing text after the last {#XX} and add it to the array - if (preg_match('/.*{#[0-9]+}(.*)$/', $questiontext, $tail)) { - $matches[1][] = $tail[1]; - $tailadded = true; - } - $questions['text'] = $matches[1]; - $questions['question'] = array(); - foreach ($matches[2] as $key => $questionid) { - foreach ($answers as $answer) { - if ($answer['positionkey'] == $questionid) { - $questions['question'][$key] = $answer; - break; - } - } - } - if ($tailadded) { - // to have a matching number of question and text array entries: - $questions['question'][] = array('id'=>CLOZE_TRAILING_TEXT_ID, 'answertype'=>SHORTANSWER); - } - - } else { - $questions['text'][0] = $question->questiontext; - $questions['question'][0] = array('id'=>CLOZE_TRAILING_TEXT_ID, 'answertype'=>SHORTANSWER); - } - - return $questions; - } - -/** - * strips out the <intro>...</intro> section, if any, and returns the text - * - * changes the text object passed to it. - * - * @param string $&text - * @return string the intro text, if there was an intro tag. '' otherwise. - */ - function get_cloze_intro(&$text) { - if (preg_match('/(.*)?\<intro>(.+)?\<\/intro>(.*)/s', $text, $matches)) { - $text = $matches[1] . $matches[3]; - return $matches[2]; - } - else { - return ''; - } - } - - -/** - * adds qti metadata properties to the questions - * - * The passed array of questions is altered by this function - * - * @param &questions an array of question objects - */ - function add_qti_info(&$questions) - { - foreach ($questions as $key=>$question) { - $questions[$key]->qtiinteractiontype = $this->get_qti_interaction_type($question->qtype); - $questions[$key]->qtiscoreable = $this->get_qti_scoreable($question); - $questions[$key]->qtisolutionavailable = $this->get_qti_solution_available($question); - } - - } - -/** - * returns whether or not a given question is scoreable - * - * @param object $question - * @return boolean - */ - function get_qti_scoreable($question) { - switch ($question->qtype) { - case DESCRIPTION: - return 'false'; - case SIMPLEESSAY: - return 'false'; - default: - return 'true'; - } - } - -/** - * returns whether or not a solution is available for a given question - * - * The results are based on whether or not Moodle stores answers for the given question type - * - * @param object $question - * @return boolean - */ - function get_qti_solution_available($question) { - switch($question->qtype) { - case TRUEFALSE: - return 'true'; - case MULTICHOICE: - return 'true'; - case XMULTICHOICE: - return 'true'; - case SHORTANSWER: - return 'true'; - case NUMERICAL: - return 'true'; - case MATCH: - return 'true'; - case DESCRIPTION: - return 'false'; - case SIMPLEESSAY: - return 'false'; - case MULTIANSWER: - return 'true'; - case DRAGDROP: - return 'true'; - default: - return 'true'; - } - - } - -/** - * maps a moodle question type to a qti 2.0 question type - * - * @param int type_id - the moodle question type - * @return string qti 2.0 question type - */ - function get_qti_interaction_type($type_id) { - switch( $type_id ) { - case TRUEFALSE: - $name = 'choiceInteraction'; - break; - case MULTICHOICE: - $name = 'choiceInteraction'; - break; - case XMULTICHOICE: - $name = 'choiceInteraction'; - break; - case SHORTANSWER: - $name = 'textInteraction'; - break; - case NUMERICAL: - $name = 'textInteraction'; - break; - case MATCH: - $name = 'matchInteraction'; - break; - case DESCRIPTION: - $name = 'extendedTextInteraction'; - break; - case SIMPLEESSAY: - $name = 'extendedTextInteraction'; - break; - case MULTIANSWER: - $name = 'textInteraction'; - break; - case DRAGDROP: - $name = 'graphicGapMatchInteraction'; - break; - default: - $name = 'textInteraction'; - } - return $name; - } - -/** - * returns the given array, shuffled - * - * - * @param array $things - * @return array - */ - function shuffle_things($things) { - $things = swapshuffle_assoc($things); - $oldthings = $things; - $things = array(); - foreach ($oldthings as $key=>$value) { - $things[] = $value; // This loses the index key, but doesn't matter - } - return $things; - } - -/** - * returns a flattened image name - with all /, \ and : replaced with other characters - * - * used to convert a file or url to a qti-permissable identifier - * - * @param string name - * @return string - */ - function flatten_image_name($name) { - return str_replace(array('/', '\\', ':'), array ('_','-','.'), $name); - } - - function file_full_path($file, $courseid) { - global $CFG; - if (substr(strtolower($file), 0, 7) == 'http://') { - $url = $file; - } else if ($CFG->slasharguments) { // Use this method if possible for better caching - $url = "{$CFG->wwwroot}/file.php/$courseid/{$file}"; - } else { - $url = "{$CFG->wwwroot}/file.php?file=/$courseid/{$file}"; - } - return $url; - } } ?> diff --git a/mod/quiz/format/qti/qt_common.php b/mod/quiz/format/qti/qt_common.php deleted file mode 100644 index 4fd53d00e6a..00000000000 --- a/mod/quiz/format/qti/qt_common.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php - -//*********************************** -// qt_common.php -//*********************************** -// This contains code common to mediagonal-modified questions -// - -/** - * gets a list of all the media files for the given course - * - * @param int courseid - * @return array containing filenames - * @calledfrom questiontypes/<typename>/editquestion.php - */ -function get_course_media_files($courseid) -{ -// this code lifted from mod/quiz/question.php and modified - global $CFG; - $images = null; - - make_upload_directory("$course->id"); // Just in case - $coursefiles = get_directory_list("$CFG->dataroot/$courseid", $CFG->moddata); - foreach ($coursefiles as $filename) { - if (is_media_by_extension($filename)) { - $images["$filename"] = $filename; - } - } - return $images; -} - -/** - * determines whether or not a file is an image, based on the file extension - * - * @param string $file the filename - * @return boolean - */ -function is_image_by_extentsion($file) { - $extensionsregex = '/\.(gif|jpg|jpeg|jpe|png|tif|tiff|bmp|xbm|rgb|svf)$/'; - if (preg_match($extensionsregex, $file)) { - return true; - } - return false; -} - - -/** - * determines whether or not a file is a media file, based on the file extension - * - * @param string $file the filename - * @return boolean - */ -function is_media_by_extension($file) { - $extensionsregex = '/\.(gif|jpg|jpeg|jpe|png|tif|tiff|bmp|xbm|rgb|svf|swf|mov|mpg|mpeg|wmf|avi|mpe|flv|mp3|ra|ram)$/'; - if (preg_match($extensionsregex, $file)) { - return true; - } - return false; -} - -/** - * determines whether or not a file is a multimedia file, based on the file extension - * - * @param string $file the filename - * @return boolean - */ -function is_multimedia_by_extension($file) { - $extensionsregex = '/\.(swf|mov|mpg|mpeg|wmf|avi|mpe|flv)$/'; - if (preg_match($extensionsregex, $file)) { - return true; - } - return false; -} - -/** - * determines whether or not a file is a multimedia file of a type php can get the dimension for, based on the file extension - * - * @param string $file the filename - * @return boolean - */ -function is_sizable_multimedia($file) { - $extensionsregex = '/\.(swf)$/'; - if (preg_match($extensionsregex, $file)) { - return true; - } - return false; -} - -/** - * creates a media tag to use for choice media - * - * @param string $file the filename - * @param string $courseid the course id - * @param string $alt to specify the alt tag - * @return string either an image tag, or html for an embedded object - */ -function get_media_tag($file, $courseid = 0, $alt = 'media file', $width = 0, $height = 0) { - global $CFG; - - // if it's a moodle library file, it will be served through file.php - if (substr(strtolower($file), 0, 7) == 'http://') { - $media = $file; - } else if ($CFG->slasharguments) { // Use this method if possible for better caching - $media = "{$CFG->wwwroot}/file.php/$courseid/$file"; - } else { - $media = "{$CFG->wwwroot}/file.php?file=/$courseid/$file"; - } - - $ismultimedia = false; - if (!$isimage = is_image_by_extension($file)) { - $ismultimedia = is_multimedia_by_extension($file); - } - - // if there is no known width and height, try to get one - if ($width == 0) { - if ($isimage || is_sizable_multimedia($file)) { - - } - - } - // create either an image link or a generic link. - // if the moodle multimedia filter is turned on, it'll catch multimedia content in the generic link - if (is_image_by_extension($file)) { - return "<img src=\"$media\" alt=\"$alt\" width=\"$width\" height=\"$height\" />"; - } - else { - require_once("$CFG->dirroot/mod/quiz/format/qti/custommediafilter.php"); - return custom_mediaplugin_filter('<a href="' . $media . '"></a>', $courseid, $width, $height); - } -} - -/** - * determines the x and y size of the given file - * - * @param string $file the filename - * @return array looks like array('x'=>171, 'y'=>323), or array('x'=>0, 'y'=>0) if size can't be determined - */ -function get_file_dimensions($file) { - $imginfo = @getimagesize($file); - if ($imginfo !== FALSE) { - return array('x'=>$imginfo[0], 'y'=>$imginfo[1]); - } else { - return array('x'=> 0, 'y'=> 0); - } -} - -?> \ No newline at end of file diff --git a/mod/quiz/format/qti/templates/choice.tpl b/mod/quiz/format/qti/templates/choice.tpl deleted file mode 100755 index 3a06d3378e0..00000000000 --- a/mod/quiz/format/qti/templates/choice.tpl +++ /dev/null @@ -1,70 +0,0 @@ -{if $courselevelexport}<?xml version="1.0" encoding="UTF-8"?>{/if} -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - <responseDeclaration identifier="{$questionid}" cardinality="single" baseType="identifier"> - <correctResponse> - <value>{$correctresponse.id}</value> - </correctResponse> - <mapping defaultValue="0"> - <mapEntry mapKey="{$correctresponse.id}" mappedValue="{$correctresponse.fraction}"/> - </mapping> - - </responseDeclaration> - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"> - <defaultValue> - <value>0</value> - </defaultValue> - </outcomeDeclaration> - <itemBody> - <p>{$questionText}</p> - <div class="intreactive.choiceSimple"> - <choiceInteraction responseIdentifier="{$questionid}" shuffle="false" maxChoices="1"> - {section name=answer loop=$answers} - <simpleChoice identifier="{$answers[answer].id}">{$answers[answer].answer} - {if $answers[answer].feedback != ''} - {if $answers[answer].answer != $correctresponse.answer} - <feedbackInline identifier="{$answers[answer].id}" outcomeIdentifier="FEEDBACK" showHide="hide">{$answers[answer].feedback}</feedbackInline> - {/if} - {/if} - </simpleChoice> - {/section} - </choiceInteraction> - {if $question_has_image == 1} - <div class="media"> - {if $hassize == 1} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" /> - {else} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> - {/if} - </div> - {/if} - </div> - </itemBody> - <responseProcessing xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ../imsqti_item_v2p0.xsd"> - <responseCondition> - <responseIf> - - <match> - <variable identifier="{$questionid}"/> - <correct identifier="{$questionid}"/> - </match> - <setOutcomeValue identifier="SCORE"> - <baseValue baseType="float">1</baseValue> - </setOutcomeValue> - </responseIf> - - <responseElse> - <setOutcomeValue identifier="SCORE"> - <baseValue baseType="float">0</baseValue> - </setOutcomeValue> - </responseElse> - </responseCondition> - <setOutcomeValue identifier="FEEDBACK"> - <variable identifier="{$questionid}"/> - </setOutcomeValue> - </responseProcessing> - {section name=answer loop=$answers} - {if $answers[answer].feedback != ''} - <modalFeedback outcomeIdentifier="FEEDBACK" identifier="{$answers[answer].id}" showHide="hide">{$answers[answer].feedback}</modalFeedback> - {/if} - {/section} -</assessmentItem> diff --git a/mod/quiz/format/qti/templates/choiceMultiple.tpl b/mod/quiz/format/qti/templates/choiceMultiple.tpl deleted file mode 100755 index 1746330774c..00000000000 --- a/mod/quiz/format/qti/templates/choiceMultiple.tpl +++ /dev/null @@ -1,64 +0,0 @@ -{if $courselevelexport}<?xml version="1.0" encoding="UTF-8"?>{/if} -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - <responseDeclaration identifier="{$questionid}" cardinality="{$responsedeclarationcardinality}" baseType="identifier"> - <correctResponse> - {section name=answer loop=$correctresponses} - <value>{$correctresponses[answer].id}</value> - {/section} - </correctResponse> - <mapping lowerBound="0" upperBound="1" defaultValue="-1"> - {section name=answer loop=$answers} - {if $answers[answer].fraction != 0} - <mapEntry mapKey="{$answers[answer].id}" mappedValue="{$answers[answer].fraction}" /> - {/if} - {/section} - </mapping> - </responseDeclaration> - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float" /> - <itemBody> - <div class="assesmentItemBody"> - <p>{$questionText}</p> - </div> - <div class="interactive.choiceMultiple"> - <choiceInteraction responseIdentifier="{$questionid}" shuffle="false" maxChoices="{$maxChoices}"> - {section name=answer loop=$answers} - <simpleChoice identifier="{$answers[answer].id}" fixed="false">{$answers[answer].answer}</simpleChoice> - {/section} - </choiceInteraction> - </div> - {if $question_has_image == 1} - <div class="media"> - {if $hassize == 1} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" /> - {else} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> - {/if} - </div> - {/if} - </itemBody> - <responseProcessing xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ../imsqti_item_v2p0.xsd"> - <responseCondition> - <responseIf> - <isNull> - <variable identifier="{$questionid}"/> - </isNull> - <setOutcomeValue identifier="SCORE"> - <baseValue baseType="float">0</baseValue> - </setOutcomeValue> - </responseIf> - <responseElse> - <setOutcomeValue identifier="SCORE"> - <mapResponse identifier="{$questionid}"/> - </setOutcomeValue> - </responseElse> - </responseCondition> - <setOutcomeValue identifier="FEEDBACK"> - <variable identifier="{$questionid}"/> - </setOutcomeValue> - </responseProcessing> - {section name=answer loop=$answers} - {if $answers[answer].feedback != ''} - <modalFeedback outcomeIdentifier="FEEDBACK" identifier="{$answers[answer].id}" showHide="show">{$answers[answer].feedback}</modalFeedback> - {/if} - {/section} -</assessmentItem> diff --git a/mod/quiz/format/qti/templates/composite.tpl b/mod/quiz/format/qti/templates/composite.tpl deleted file mode 100755 index 802cd08a57d..00000000000 --- a/mod/quiz/format/qti/templates/composite.tpl +++ /dev/null @@ -1,101 +0,0 @@ -{if $courselevelexport}<?xml version="1.0" encoding="UTF-8"?>{/if} -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - {section name=aid loop=$answers} - {if $answers[aid].answertype == 3} - <responseDeclaration identifier="{$questionid}{$answers[aid].id}" cardinality="single" baseType="identifier"> - <correctResponse> - {section name=subanswer loop=$answers[aid].subanswers} - {if $answers[aid].subanswers[subanswer].fraction > 0} - <value>{$answers[aid].subanswers[subanswer].id}</value> - {/if} - {/section} - </correctResponse> - <mapping defaultValue="0"> - {section name=subanswer loop=$answers[aid].subanswers} - {if $answers[aid].subanswers[subanswer].fraction != 0} - <mapEntry mapKey="{$answers[aid].subanswers[subanswer].id}" mappedValue="{$answers[aid].subanswers[subanswer].fraction}"/> - {/if} - {/section} - </mapping> - </responseDeclaration> - {elseif $answers[aid].answertype == 1} - <responseDeclaration identifier="{$questionid}{$answers[aid].id}" cardinality="single" baseType="string"> - <correctResponse> - {section name=subanswer loop=$answers[aid].subanswers} - {if $answers[aid].subanswers[subanswer].fraction > 0} - <value>{$answers[aid].subanswers[subanswer].answer}</value> - {/if} - {/section} - </correctResponse> - <mapping lowerBound="0" upperBound="1" defaultValue="0"> - {section name=subanswer loop=$answers[aid].subanswers} - {if $answers[aid].subanswers[subanswer].fraction != 0} - <mapEntry mapKey="{$answers[aid].subanswers[subanswer].answer}" mappedValue="{$answers[aid].subanswers[subanswer].fraction}" /> - {/if} - {/section} - </mapping> - </responseDeclaration> - {/if} - {/section} - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"/> - <itemBody> - {if $questionText != ''} - <div class="assesmentItemBody"> - <p>{$questionText}</p> - </div> - {/if} - <div class="interactive.cloze"><p> - {section name=qid loop=$questions.question} - {$questions.text[qid]} - {if $questions.question[qid].id != $cloze_trailing_text_id} - {if $questions.question[qid].answertype == 3} - <inlineChoiceInteraction responseIdentifier="{$questionid}{$questions.question[qid].id}" shuffle="false"> - {section name=aid loop=$questions.question[qid].subanswers} - <inlineChoice identifier="{$questions.question[qid].subanswers[aid].id}">{$questions.question[qid].subanswers[aid].answer}</inlineChoice> - {/section} - </inlineChoiceInteraction> - {elseif $questions.question[qid].answertype == 1} - <textEntryInteraction responseIdentifier="{$questionid}{$questions.question[qid].id}" expectedLength="15"/> - {/if} - {/if} - {/section}</p></div> - {if $question_has_image == 1} - <div class="media"> - {if $hassize == 1} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" /> - {else} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> - {/if} - </div> - {/if} - </itemBody> - <responseProcessing xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ../imsqti_item_v2p0.xsd"> -{section name=answer loop=$answers}{if $answers[answer].answertype == 1 || $answers[answer].answertype == 3} - <responseCondition> - <responseIf> - <isNull> - <variable identifier="{$questionid}{$answers[answer].id}"/> - </isNull> - <setOutcomeValue identifier="SCORE{$questionid}{$answers[answer].id}"> - <baseValue baseType="float">0</baseValue> - </setOutcomeValue> - </responseIf> - <responseElse> - <setOutcomeValue identifier="SCORE{$questionid}{$answers[answer].id}"> - <mapResponse identifier="{$questionid}{$answers[answer].id}"/> - </setOutcomeValue> - </responseElse> - </responseCondition> - <setOutcomeValue identifier="FEEDBACK"> - <variable identifier="{$questionid}{$answers[answer].id}"/> - </setOutcomeValue> -{/if}{/section} - </responseProcessing> -{section name=answer loop=$answers}{if $answers[answer].answertype == 1 || $answers[answer].answertype == 3} - {section name=subanswer loop=$answers[answer].subanswers} - {if $answers[answer].subanswers[subanswer].feedback != ''} - <modalFeedback outcomeIdentifier="FEEDBACK" identifier="{$answers[answer].subanswers[subanswer].id}" showHide="show">{$answers[answer].subanswers[subanswer].feedback}</modalFeedback> -{/if}{/section} - {/if} - {/section} -</assessmentItem> diff --git a/mod/quiz/format/qti/templates/extendedText.tpl b/mod/quiz/format/qti/templates/extendedText.tpl deleted file mode 100755 index 52d2bd94ed0..00000000000 --- a/mod/quiz/format/qti/templates/extendedText.tpl +++ /dev/null @@ -1,17 +0,0 @@ -{if $courselevelexport}<?xml version="1.0" encoding="UTF-8"?>{/if} -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - <responseDeclaration identifier="{$questionid}" cardinality="single" baseType="string"/> - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="integer"/> - <itemBody> - <p>{$questionText}</p> - {if $question_has_image == 1} - <div class="media"> - {if $hassize == 1} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" /> - {else} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> - {/if} - </div> - {/if} - </itemBody> -</assessmentItem> diff --git a/mod/quiz/format/qti/templates/extendedText_simpleEssay.tpl b/mod/quiz/format/qti/templates/extendedText_simpleEssay.tpl deleted file mode 100755 index 76d7d23ee26..00000000000 --- a/mod/quiz/format/qti/templates/extendedText_simpleEssay.tpl +++ /dev/null @@ -1,27 +0,0 @@ -{if $courselevelexport}<?xml version="1.0" encoding="UTF-8"?>{/if} -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - <responseDeclaration identifier="{$questionid}" cardinality="single" baseType="string"/> - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="integer"/> - <itemBody> - <div class="assesmentItemBody"> - <p>{$questionText}</p> - </div> - <div class="interactive.extendedText"> - <extendedTextInteraction responseIdentifier="{$questionid}" expectedLength="600"> - </extendedTextInteraction> - </div> - {if $question_has_image == 1} - <div class="media"> - {if $hassize == 1} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" /> - {else} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> - {/if} - </div> - {/if} - </itemBody> -{if $question->feedback != ''} - <modalFeedback outcomeIdentifier="FEEDBACK" identifier="{$questionid}" showHide="hide">{$question->feedback}</modalFeedback> - <modalFeedback outcomeIdentifier="FEEDBACK" identifier="{$questionid}" showHide="show">{$question->feedback}</modalFeedback> -{/if} -</assessmentItem> diff --git a/mod/quiz/format/qti/templates/graphicGapMatch.tpl b/mod/quiz/format/qti/templates/graphicGapMatch.tpl deleted file mode 100644 index e2b5d06ea53..00000000000 --- a/mod/quiz/format/qti/templates/graphicGapMatch.tpl +++ /dev/null @@ -1,33 +0,0 @@ -{if $courselevelexport}<?xml version="1.0" encoding="UTF-8"?>{/if} -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ../imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - <responseDeclaration identifier="{$questionid}" cardinality="multiple" baseType="directedPair"> - <correctResponse> - {section name=item loop=$gapitems} - <value>{$gapitems[item].id} {$gapitems[item].id}</value> - {/section} - </correctResponse> - <mapping defaultValue="1"> - {section name=item loop=$gapitems} - <mapEntry mapKey="{$gapitems[item].id} {$gapitems[item].id}" mappedValue="1" /> - {/section} - </mapping> - </responseDeclaration> - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"/> - <itemBody> - <div class="assesmentItemBody"><p>{$questionText}</p></div> - <div class="interactive.graphicGapMatch"> - <graphicGapMatchInteraction responseIdentifier="{$questionid}"> - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}"/> - {section name=item loop=$gapitems} - <gapImg identifier="{$gapitems[item].id}" matchMax="1"> - <object type="{$gapitems[item].mediamimetype}" data="{$gapitems[item].media}" width="{$gapitems[item].snaptowidth}" height="{$gapitems[item].snaptoheight}" label="{$gapitems[item].questiontext}"/> - </gapImg> - {/section} - {section name=item loop=$gapitems} - <associableHotspot identifier="{$gapitems[item].id}" matchMax="{$hotspotmaxmatch}" shape="rect" coords="{$gapitems[item].targetx},{$gapitems[item].targety},{$gapitems[item].targetrx},{$gapitems[item].targetby}"/> - {/section} - </graphicGapMatchInteraction> - </div> - </itemBody> - <responseProcessing template="http://www.imsglobal.org/xml/imsqti_item_v2p0/rpMapResponse" templateLocation="../RPTemplates/rpMapResponse.xml"/> -</assessmentItem> \ No newline at end of file diff --git a/mod/quiz/format/qti/templates/imsmanifest.tpl b/mod/quiz/format/qti/templates/imsmanifest.tpl deleted file mode 100755 index 570d35a7cf6..00000000000 --- a/mod/quiz/format/qti/templates/imsmanifest.tpl +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2" xmlns:imsqti="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" identifier="{$manifestidentifier}" xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd http://www.imsglobal.org/xsd/imsmd_v1p2 imsmd_v1p2p2.xsd http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd"> - <metadata> - <schema>ADL SCORM</schema> - <schemaversion>1.2</schemaversion> - <lom xmlns="http://www.imsglobal.org/xsd/imsmd_v1p2" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.imsglobal.org/xsd/imsmd_v1p2 imsmd_v1p2p2.xsd"> - <general> - <title><langstring xml:lang="{$lang}">{$quiztitle}</langstring></title> - <description><langstring xml:lang="{$lang}">{$quizinfo}</langstring></description> - <keyword><langstring xml:lang="{$lang}">{$quizkeywords}</langstring></keyword> - </general> - </lom> - {if $quiz_level_export == 1} - <imsqti:var id="submiturl">{$submiturl}</imsqti:var> - <imsqti:var id="userid">{$userid}</imsqti:var> - <imsqti:var id="username">{$username}</imsqti:var> - <imsqti:var id="id">{$quiz->id}</imsqti:var> - <imsqti:var id="course">{$quiz->course}</imsqti:var> - <imsqti:var id="timeopen">{$quiztimeopen}</imsqti:var> - <imsqti:var id="timeclose">{$quiztimeclose}</imsqti:var> - <imsqti:var id="timelimit">{$quiz->timelimit}</imsqti:var> - <imsqti:var id="shufflequestions">{$quiz->shufflequestions}</imsqti:var> - <imsqti:var id="shuffleanswers">{$quiz->shuffleanswers}</imsqti:var> - <imsqti:var id="attempts">{$quiz->attempts}</imsqti:var> - <imsqti:var id="attemptbuildsonlast">{$quiz->attemptonlast}</imsqti:var> - <imsqti:var id="grademethod">{$grademethod}</imsqti:var> - <imsqti:var id="feedback">{$quiz->feedback}</imsqti:var> - <imsqti:var id="feedbackcorrectanswers">{$quiz->correctanswers}</imsqti:var> - <imsqti:var id="maxgrade">{$quiz->grade}</imsqti:var> - <imsqti:var id="rawpointspossible">{$quiz->sumgrades}</imsqti:var> - <imsqti:var id="password">{$quiz->password}</imsqti:var> - <imsqti:var id="subnet">{$quiz->subnet}</imsqti:var> - <imsqti:var id="coursefullname">{$course->fullname}</imsqti:var> - <imsqti:var id="courseshortname">{$course->shortname}</imsqti:var> - {/if} - </metadata> - <organizations/> - <resources> - {section name=question loop=$questions} - <resource identifier="category{$questions[question].category}-question{$questions[question].id}" type="imsqti_item_xmlv2p0" {if $externalfiles == 1}href="./category{$questions[question].category}-question{$questions[question].id}.xml"{/if}> - <metadata> - <schema>IMS QTI Item</schema> - <schemaversion>2.0</schemaversion> - <imsmd:lom> - <imsmd:general> - <imsmd:identifier>category{$questions[question].category}-question{$questions[question].id}</imsmd:identifier> - <imsmd:title> - <imsmd:langstring xml:lang="{$lang}">{$questions[question].name}</imsmd:langstring> - </imsmd:title> - <imsmd:description> - <imsmd:langstring xml:lang="en">Question {$questions[question].id} from category {$questions[question].category}</imsmd:langstring> - </imsmd:description> - </imsmd:general> - <imsmd:lifecycle> - <imsmd:version> - <imsmd:langstring xml:lang="en">1.0</imsmd:langstring> - </imsmd:version> - <imsmd:status> - <imsmd:source> - <imsmd:langstring xml:lang="en">LOMv1.0</imsmd:langstring> - </imsmd:source> - <imsmd:value> - <imsmd:langstring xml:lang="en">Draft</imsmd:langstring> - </imsmd:value> - </imsmd:status> - </imsmd:lifecycle> - </imsmd:lom> - <imsqti:qtiMetadata> - <imsqti:timeDependent>false</imsqti:timeDependent> - <imsqti:interactionType>{$questions[question].qtiinteractiontype}</imsqti:interactionType> - <imsqti:canComputerScore>{$questions[question].qtiscoreable}</imsqti:canComputerScore> - <imsqti:feedbackType>nonadaptive</imsqti:feedbackType> - <imsqti:solutionAvailable>{$questions[question].qtisolutionavailable}</imsqti:solutionAvailable> - </imsqti:qtiMetadata> - </metadata> - {if $questions[question].image != ''} - <file href="{$questions[question].mediaurl}" /> - {/if} - {$questions[question].exporttext} - </resource> - {/section} - </resources> -</manifest> \ No newline at end of file diff --git a/mod/quiz/format/qti/templates/match.tpl b/mod/quiz/format/qti/templates/match.tpl deleted file mode 100644 index e1246320115..00000000000 --- a/mod/quiz/format/qti/templates/match.tpl +++ /dev/null @@ -1,62 +0,0 @@ -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - <responseDeclaration identifier="{$questionid}" cardinality="multiple" baseType="directedPair"> - <correctResponse> - {section name=set loop=$matchsets} - <value>q{$matchsets[set].id} a{$matchsets[set].id}</value> - {/section} - </correctResponse> - - <mapping defaultValue="0"> - {section name=set loop=$matchsets} - <mapEntry mapKey="q{$matchsets[set].id} a{$matchsets[set].id}" mappedValue="1"/> - {/section} - </mapping> - </responseDeclaration> - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"/> - - <itemBody> - <p>{$questionText}</p> - <div class="interactive.match"> - <matchInteraction responseIdentifier="{$questionid}" shuffle="false" maxAssociations="{$setcount}"> - <simpleMatchSet> - {section name=set loop=$matchsets} - <simpleAssociableChoice identifier="q{$matchsets[set].id}" matchMax="1">{$matchsets[set].questiontext}</simpleAssociableChoice> - {/section} - </simpleMatchSet> - <simpleMatchSet> - {section name=set loop=$matchsets} - <simpleAssociableChoice identifier="a{$matchsets[set].id}" matchMax="{$setcount}">{$matchsets[set].answertext}</simpleAssociableChoice> - {/section} - </simpleMatchSet> - </matchInteraction> - </div> - {if $question_has_image == 1} - <div class="media"> - {if $hassize == 1} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" /> - {else} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> - {/if} - </div> - {/if} - </itemBody> - <responseProcessing xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ../imsqti_item_v2p0.xsd"> - <responseCondition> - - <responseIf> - <isNull> - <variable identifier="{$questionid}"/> - </isNull> - <setOutcomeValue identifier="SCORE"> - <baseValue baseType="integer">0</baseValue> - </setOutcomeValue> - </responseIf> - - <responseElse> - <setOutcomeValue identifier="SCORE"> - <mapResponse identifier="{$questionid}"/> - </setOutcomeValue> - </responseElse> - </responseCondition> - </responseProcessing> -</assessmentItem> diff --git a/mod/quiz/format/qti/templates/mmchoiceMultiple.tpl b/mod/quiz/format/qti/templates/mmchoiceMultiple.tpl deleted file mode 100755 index 558e0774145..00000000000 --- a/mod/quiz/format/qti/templates/mmchoiceMultiple.tpl +++ /dev/null @@ -1,88 +0,0 @@ -{if $courselevelexport}<?xml version="1.0" encoding="UTF-8"?>{/if} -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - <responseDeclaration identifier="{$questionid}" cardinality="{$responsedeclarationcardinality}" baseType="identifier"> - <correctResponse> - {section name=answer loop=$correctresponses} - <value>{$correctresponses[answer].id}</value> - {/section} - </correctResponse> - <mapping lowerBound="0" upperBound="1" defaultValue="{$defaultvalue}"> - {section name=answer loop=$answers} - {if $answers[answer].fraction != 0} - <mapEntry mapKey="{$answers[answer].id}" mappedValue="{$answers[answer].fraction}" /> - {/if} - {/section} - </mapping> - </responseDeclaration> - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float" /> - <itemBody> - <div class="assesmentItemBody"> - <p>{$questionText}</p> - </div> - <div class="interactive.choiceMultiple"> - <choiceInteraction responseIdentifier="{$questionid}" shuffle="false" maxChoices="{$maxChoices}"> - {section name=answer loop=$answers} - <simpleChoice identifier="{$answers[answer].id}" fixed="false"><p>{$answers[answer].choice} - {if $answers[answer].media != ''} - <object type="{$answers[answer].mediamimetype}" data="{$answers[answer].media}" width="{$answers[answer].mediax}" height="{$answers[answer].mediay}" /> - {/if}</p> - {if $answers[answer].feedback != ''} - <feedbackInline identifier="{$answers[answer].id}" outcomeIdentifier="FEEDBACK" showHide="show">{$answers[answer].feedback}</feedbackInline> - {/if} - {if $answers[answer].altfeedback != ''} - <feedbackInline identifier="{$answers[answer].id}" outcomeIdentifier="ALTFEEDBACK" showHide="hide">{$answers[answer].altfeedback}</feedbackInline> - {/if} - </simpleChoice> - {/section} - </choiceInteraction> - </div> - {if $question_has_image == 1} - <div class="media"> - {if $hassize == 1} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" /> - {else} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> - {/if} - </div> - {/if} - </itemBody> - <responseProcessing xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ../imsqti_item_v2p0.xsd"> - <responseCondition> - <responseIf> - <isNull> - <variable identifier="{$questionid}"/> - </isNull> - <setOutcomeValue identifier="SCORE"> - <baseValue baseType="float">0</baseValue> - </setOutcomeValue> - </responseIf> - <responseElse> - <setOutcomeValue identifier="SCORE"> - <mapResponse identifier="{$questionid}"/> - </setOutcomeValue> - </responseElse> - </responseCondition> - <responseCondition> - <responseIf> - <gte> - <variable identifier="SCORE"/> - <baseValue baseType="float">{$question->feedbackfraction}</baseValue> - </gte> - <setOutcomeValue identifier="FEEDBACK"> - <variable identifier="feedbackok"/> - </setOutcomeValue> - </responseIf> - <responseElse> - <setOutcomeValue identifier="FEEDBACK"> - <variable identifier="feedbackmissed"/> - </setOutcomeValue> - </responseElse> - </responseCondition> - </responseProcessing> -{if $question->feedbackok != ''} - <modalFeedback outcomeIdentifier="FEEDBACK" identifier="feedbackok" showHide="show">{$question->feedbackok}</modalFeedback> -{/if} -{if $question->feedbackmissed != ''} - <modalFeedback outcomeIdentifier="FEEDBACK" identifier="feedbackmissed" showHide="hide">{$question->feedbackmissed}</modalFeedback> -{/if} -</assessmentItem> diff --git a/mod/quiz/format/qti/templates/notimplemented.tpl b/mod/quiz/format/qti/templates/notimplemented.tpl deleted file mode 100755 index e431354f25b..00000000000 --- a/mod/quiz/format/qti/templates/notimplemented.tpl +++ /dev/null @@ -1,20 +0,0 @@ -{if $courselevelexport}<?xml version="1.0" encoding="UTF-8"?>{/if} -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - <responseDeclaration identifier="{$questionid}" cardinality="single" baseType="string"/> - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="integer"/> - <itemBody> - <p>{$questionText}</p> - <div class="interactive.textEntry"> - <textEntryInteraction responseIdentifier="{$questionid}" expectedLength="200"></textEntryInteraction> - </div> - {if $question_has_image == 1} - <div class="media"> - {if $hassize == 1} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" /> - {else} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> - {/if} - </div> - {/if} - </itemBody> -</assessmentItem> diff --git a/mod/quiz/format/qti/templates/numerical.tpl b/mod/quiz/format/qti/templates/numerical.tpl deleted file mode 100755 index d15992ecd06..00000000000 --- a/mod/quiz/format/qti/templates/numerical.tpl +++ /dev/null @@ -1,65 +0,0 @@ -{if $courselevelexport}<?xml version="1.0" encoding="UTF-8"?>{/if} -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - <responseDeclaration identifier="{$questionid}" cardinality="single" baseType="float"> - <correctResponse> - <value>{$answer->answer}</value> - </correctResponse> - <mapping defaultValue="0"> - <mapEntry mapKey="{$answer->answer}" mappedValue="{$answer->fraction}" /> - </mapping> - </responseDeclaration> - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"/> - <itemBody> - <p>{$questionText}</p> - <div class="interactive.textEntry"> - <textEntryInteraction responseIdentifier="{$questionid}" expectedLength="10"/> - </div> - {if $question_has_image == 1} - <div class="media"> - {if $hassize == 1} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" /> - {else} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> - {/if} - </div> - {/if} - </itemBody> - <responseProcessing xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ../imsqti_item_v2p0.xsd"> - <responseCondition> - <responseIf> - <and> - <not> - <isNull> - <variable identifier="{$questionid}" /> - </isNull> - </not> - <gte> - <baseValue baseType="float">{$lowerbound}</baseValue> - <variable identifier="{$questionid}" /> - </gte> - <lte> - <baseValue baseType="float">{$upperbound}</baseValue> - <variable identifier="{$questionid}" /> - </lte> - </and> - <setOutcomeValue identifier="SCORE"> - <baseValue baseType="integer">1</baseValue> - </setOutcomeValue> - </responseIf> - <responseElse> - <setOutcomeValue identifier="SCORE"> - <baseValue baseType="integer">0</baseValue> - </setOutcomeValue> - </responseElse> - </responseCondition> - <setOutcomeValue identifier="FEEDBACK"> - <variable identifier="{$questionid}"/> - </setOutcomeValue> - </responseProcessing> -{if $answer->feedback != ''} - <modalFeedback outcomeIdentifier="FEEDBACK" identifier="{$answer->id}" showHide="show">{$answer->feedback}</modalFeedback> -{/if} -{if $answer->altfeedback != ''} - <modalFeedback outcomeIdentifier="FEEDBACK" identifier="{$answer->id}" showHide="hide">{$answer->altfeedback}</modalFeedback> -{/if} -</assessmentItem> diff --git a/mod/quiz/format/qti/templates/textEntry.tpl b/mod/quiz/format/qti/templates/textEntry.tpl deleted file mode 100755 index 6c03937998b..00000000000 --- a/mod/quiz/format/qti/templates/textEntry.tpl +++ /dev/null @@ -1,50 +0,0 @@ -{if $courselevelexport}<?xml version="1.0" encoding="UTF-8"?>{/if} -<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ./imsqti_item_v2p0.xsd" identifier="{$assessmentitemidentifier}" title="{$assessmentitemtitle}" adaptive="false" timeDependent="false"> - <responseDeclaration identifier="{$questionid}" cardinality="{$responsedeclarationcardinality}" baseType="string"> - <correctResponse> - {section name=answer loop=$correctresponses} - <value>{$correctresponses[answer].answer}</value> - {/section} - </correctResponse> - <mapping lowerBound="0" upperBound="1" defaultValue="0"> - {section name=answer loop=$answers} - {if $answers[answer].fraction != 0} - <mapEntry mapKey="{$answers[answer].answer}" mappedValue="{$answers[answer].fraction}" /> - {/if} - {/section} - </mapping> - </responseDeclaration> - <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"/> - <itemBody> - <p>{$questionText}</p> - <div class="interactive.textEntry"> - <textEntryInteraction responseIdentifier="{$questionid}" expectedLength="15"/> - </div> - {if $question_has_image == 1} - <div class="media"> - {if $hassize == 1} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" width="{$question->mediax}" height="{$question->mediay}" /> - {else} - <object type="{$question->mediamimetype}" data="{$question->mediaurl}" /> - {/if} - </div> - {/if} - </itemBody> - <responseProcessing xmlns="http://www.imsglobal.org/xsd/imsqti_item_v2p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_item_v2p0 ../imsqti_item_v2p0.xsd"> - <responseCondition> - <responseIf> - <isNull> - <variable identifier="{$questionid}"/> - </isNull> - <setOutcomeValue identifier="SCORE"> - <baseValue baseType="integer">0</baseValue> - </setOutcomeValue> - </responseIf> - <responseElse> - <setOutcomeValue identifier="SCORE"> - <mapResponse identifier="{$questionid}"/> - </setOutcomeValue> - </responseElse> - </responseCondition> - </responseProcessing> -</assessmentItem> diff --git a/mod/quiz/format/webct/format.php b/mod/quiz/format/webct/format.php index 42aab1cbe8b..0688dccac7b 100644 --- a/mod/quiz/format/webct/format.php +++ b/mod/quiz/format/webct/format.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /////////////////////////////////////////////////////////////////////////// // // // WebCT FORMAT // @@ -71,11 +71,11 @@ class quiz_format_webct_modified_calculated_qtype extends quiz_calculated_qtype // function is called from save_question... return parent::save_question_options($question, $options); } - + // function is called from format.php... - + $datasetdatas = $question->datasets; - + // Set dataset $form->dataset = array(); foreach ($datasetdatas as $datasetname => $notimportant) { @@ -93,7 +93,7 @@ class quiz_format_webct_modified_calculated_qtype extends quiz_calculated_qtype $this->save_question($question, $form, 'not used', $subtypeoptions); // Save dataset options and items... - + // Get datasetdefinitions global $CFG; $datasetdefs = get_records_sql( @@ -102,7 +102,7 @@ class quiz_format_webct_modified_calculated_qtype extends quiz_calculated_qtype {$CFG->prefix}quiz_question_datasets b WHERE a.id = b.datasetdefinition AND b.question = '$question->id' "); - + foreach ($datasetdefs as $datasetdef) { $datasetdata = $datasetdatas[$datasetdef->name]; @@ -115,7 +115,7 @@ class quiz_format_webct_modified_calculated_qtype extends quiz_calculated_qtype } } $datasetdef->itemcount = $item->number - 1; - + // Retrieve ->options if (is_numeric($datasetdata->min) && is_numeric($datasetdata->max) && $datasetdata->min <= $datasetdata->max) { @@ -148,7 +148,7 @@ function quiz_format_webct_convert_formula($formula) { // Remove empty space, as it would cause problems otherwise: $formula = str_replace(' ', '', $formula); - + // Remove paranthesis after e,E and *10**: while (ereg('[0-9.](e|E|\\*10\\*\\*)\\([+-]?[0-9]+\\)', $formula, $regs)) { $formula = str_replace( @@ -162,7 +162,7 @@ function quiz_format_webct_convert_formula($formula) { $formula = str_replace( $regs[0], str_replace('*10**', 'e', $regs[0]), $formula); } - + // Replace other 10** with 1e where possible while (ereg('(^|[^0-9.eE])10\\*\\*[+-]?[0-9]+([^0-9.eE]|$)', $formula, $regs)) { $formula = str_replace( @@ -172,14 +172,14 @@ function quiz_format_webct_convert_formula($formula) { // Replace all other base**exp with the PHP equivalent function pow(base,exp) // (Pretty tricky to exchange an operator with a function) while (2 == count($splits = explode('**', $formula, 2))) { - + // Find $base if (ereg('^(.*[^0-9.eE])?(([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][+-]?[0-9]+)?|\\{[^}]*\\})$', $splits[0], $regs)) { // The simple cases $base = $regs[2]; $splits[0] = $regs[1]; - + } else if (ereg('\\)$', $splits[0])) { // Find the start of this parenthesis $deep = 1; @@ -198,7 +198,7 @@ function quiz_format_webct_convert_formula($formula) { } $base = $regs[2]; $splits[0] = $regs[1]; - + } else { error("Bad base before **: $splits[0]**"); } @@ -209,7 +209,7 @@ function quiz_format_webct_convert_formula($formula) { // The simple case $exp = $regs[1]; $splits[1] = $regs[6]; - + } else if (ereg('^[+-]?[[:alnum:]_]*\\(', $splits[1])) { // Find the end of the parenthesis $deep = 1; @@ -235,7 +235,7 @@ function quiz_format_webct_convert_formula($formula) { } // Nothing more is known to need to be converted - + return $formula; } @@ -279,7 +279,6 @@ class quiz_file_format extends quiz_default_format { if (ereg("^:",$line)) { $answertext = addslashes(trim($answertext)); $question->answer[$currentchoice] = $answertext; - $question->subanswers[$currentchoice] = $answertext; unset($answertext); } else { @@ -367,7 +366,7 @@ class quiz_file_format extends quiz_default_format { $QuestionOK = FALSE; } break; - + case MULTICHOICE: if ($question->single) { if ($maxfraction != 1) { @@ -399,7 +398,7 @@ class quiz_file_format extends quiz_default_format { // No problemo } } - + if ($QuestionOK) { $questions[] = $question; // store it @@ -445,7 +444,7 @@ class quiz_file_format extends quiz_default_format { // To make us pass the end-of-question sanity checks $question->answer = array('dummy'); $question->fraction = array('1.0'); - + $currentchoice = -1; $ignore_rest_of_question = FALSE; continue; @@ -454,7 +453,7 @@ class quiz_file_format extends quiz_default_format { if (eregi("^:TYPE:M",$line)) { // Match Question $question->qtype = MATCH; - $ignore_rest_of_question = FALSE; // match question processing is not debugged + $ignore_rest_of_question = TRUE; // match question processing is not debugged continue; } @@ -477,7 +476,7 @@ class quiz_file_format extends quiz_default_format { } if (eregi("^:TITLE:(.*)",$line,$webct_options)) { - $name = trim($webct_options[1]); + $name = trim($webct_options[1]); if (strlen($name) > 255) { $name = substr($name,0,250)."..."; $warnings[] = get_string("questionnametoolong", "quiz", $nLineCounter); @@ -487,10 +486,10 @@ class quiz_file_format extends quiz_default_format { } if (eregi("^:IMAGE:(.*)",$line,$webct_options)) { - $filename = trim($webct_options[1]); - if (eregi("^http://",$filename)) { - $question->image = $filename; - } + $filename = trim($webct_options[1]); + if (eregi("^http://",$filename)) { + $question->image = $filename; + } continue; } @@ -519,20 +518,20 @@ class quiz_file_format extends quiz_default_format { } - $bIsHTMLText = eregi(":H$",$line); // True if next lines are coded in HTML + $bIsHTMLText = eregi(":H$",$line); // True if next lines are coded in HTML if (eregi("^:QUESTION",$line)) { $questiontext=""; // Start gathering next lines continue; } - if (eregi("^:ANSWER([0-9]+):([^:]+):([0-9\.\-]+):(.*)",$line,$webct_options)) { /// SHORTANSWER + if (eregi("^:ANSWER([0-9]+):([^:]+):([0-9\.]+):(.*)",$line,$webct_options)) { /// SHORTANSWER $currentchoice=$webct_options[1]; $answertext=$webct_options[2]; // Start gathering next lines $question->fraction[$currentchoice]=($webct_options[3]/100); continue; } - if (eregi("^:ANSWER([0-9]+):([0-9\.\-]+)",$line,$webct_options)) { + if (eregi("^:ANSWER([0-9]+):([0-9\.]+)",$line,$webct_options)) { $answertext=""; // Start gathering next lines $currentchoice=$webct_options[1]; $question->fraction[$currentchoice]=($webct_options[2]/100); @@ -551,7 +550,7 @@ class quiz_file_format extends quiz_default_format { $question->answers[$currentchoice]->tolerancetype = 2; // nominal (units in webct) $question->answers[$currentchoice]->feedback = ''; $question->answers[$currentchoice]->correctanswerlength = 4; - + $datasetnames = $qtypecalculated->find_dataset_names($webct_options[1]); foreach ($datasetnames as $datasetname) { $question->datasets[$datasetname]->items = array(); @@ -562,11 +561,10 @@ class quiz_file_format extends quiz_default_format { if (eregi("^:L([0-9]+)",$line,$webct_options)) { $answertext=""; // Start gathering next lines $currentchoice=$webct_options[1]; - $question->fraction[$currentchoice]=1; continue; } - if (eregi("^:R([0-9]+)",$line,$webct_options)) { + if (eregi("^:R[0-9]+)",$line,$webct_options)) { $responsetext=""; // Start gathering next lines $currentchoice=$webct_options[1]; continue; diff --git a/mod/quiz/format/xml/format.php b/mod/quiz/format/xml/format.php index dff3d3867c4..012b2dc4571 100755 --- a/mod/quiz/format/xml/format.php +++ b/mod/quiz/format/xml/format.php @@ -6,221 +6,8 @@ ////////////////////////////////////////////////////////////////////////// // Based on default.php, included by ../import.php - -require_once( "$CFG->libdir/xmlize.php" ); - class quiz_file_format extends quiz_default_format { -// IMPORT FUNCTIONS START HERE - -function trans_format( $name ) { - // translate text format string to its internal code - - $name = trim($name); - - if ($name=='moodle_auto_format') { - $id = 0; - } - elseif ($name=='html') { - $id = 1; - } - elseif ($name=='plain_text') { - $id = 2; - } - elseif ($name=='wiki_like') { - $id = 3; - } - elseif ($name=='markdown') { - $id = 4; - } - else { - $id = 0; // or maybe warning required - } - return $id; -} - -function trans_single( $name ) { - // translate single string to its internal format - - $name = trim($name); - - if ($name=="true") { - $id = 1; - } - elseif ($name=="false") { - $id = 0; - } - else { - $id = 0; // or maybe warning required - } - return $id; -} - -function import_text( $text ) { - // handle xml 'text' element - $data = $text[0]['#']; - $data = html_entity_decode( $data ); - return addslashes(trim( $data )); -} - -function import_headers( $question ) { - // read bits that are common to all questions - - // this routine initialises the question object - $name = $this->import_text( $question['#']['name'][0]['#']['text'] ); - $qtext = $this->import_text( $question['#']['questiontext'][0]['#']['text'] ); - $qformat = $question['#']['questiontext'][0]['@']['format']; - $image = $question['#']['image'][0]['#']; - - $qo = null; - $qo->name = $name; - $qo->questiontext = $qtext; - $qo->questiontextformat = $this->trans_format( $qformat ); - $qo->image = $image; - - return $qo; -} - - -function import_answer( $answer ) { - // import answer part of question - - $fraction = $answer['@']['fraction']; - $text = $this->import_text( $answer['#']['text']); - $feedback = $this->import_text( $answer['#']['feedback'][0]['#']['text'] ); - - $ans = null; - $ans->answer = $text; - $ans->fraction = $fraction / 100; - $ans->feedback = $feedback; - - return $ans; -} - -function import_multichoice( $question ) { - // import multichoice type questions - - // get common parts - $qo = $this->import_headers( $question ); - - // 'header' parts particular to multichoice - $qo->qtype = MULTICHOICE; - $single = $question['#']['single'][0]['#']; - $qo->single = $this->trans_single( $single ); - - // run through the answers - $answers = $question['#']['answer']; - $a_count = 0; - foreach ($answers as $answer) { - $ans = $this->import_answer( $answer ); - $qo->answer[$a_count] = $ans->answer; - $qo->fraction[$a_count] = $ans->fraction; - $qo->feedback[$a_count] = $ans->feedback; - ++$a_count; - } - - return $qo; -} - -function import_truefalse( $question ) { - // import true/false type question - - // get common parts - $qo = $this->import_headers( $question ); - - // 'header' parts particular to true/false - $qo->qtype = TRUEFALSE; - - // get answer info - $answers = $question['#']['answer']; - $fraction0 = $answers[0]['@']['fraction']; - $feedback0 = $this->import_text($answers[0]['#']['feedback'][0]['#']['text']); - $fraction1 = $answers[1]['@']['fraction']; - $feedback1 = $this->import_text($answers[1]['#']['feedback'][0]['#']['text']); - - // sort out which is true and build object accordingly - if ($fraction0==100) { // then 0 index is true - $qo->answer = 1; - $qo->feedbacktrue=$feedback0; - $qo->feedbackfalse=$feedback1; - } - else { - $qo->answer = 0; - $qo->feedbacktrue = $feedback1; - $qo->feedbackfalse = $feedback0; - } - - return $qo; -} - -function import_shortanswer( $question ) { - // import short answer question - - // get common parts - $qo = $this->import_headers( $question ); - - // header parts particular to shortanswer - $qo->qtype = SHORTANSWER; - - // run through the answers - $answers = $question['#']['answer']; - $a_count = 0; - foreach ($answers as $answer) { - $ans = $this->import_answer( $answer ); - $qo->answer[$a_count] = $ans->answer; - $qo->fraction[$a_count] = $ans->fraction; - $qo->feedback[$a_count] = $ans->feedback; - ++$a_count; - } - - return $qo; -} - -function readquestions($lines) { - // parse the array of lines into an array of questions - // this *could* burn memory - but it won't happen that much - // so fingers crossed! - - // we just need it as one big string - $text = implode($lines, " "); - unset( $lines ); - - // this converts xml to big nasty data structure - // the 0 means keep white space as it is (important for markdown format) - // print_r it if you want to see what it looks like! - $xml = xmlize( $text, 0 ); - - // set up array to hold all our questions - $questions = array(); - - // iterate through questions - foreach ($xml['quiz']['#']['question'] as $question) { - $question_type = $question['@']['type']; - echo "<b>question type = $question_type</b>"; - - if ($question_type=='multichoice') { - $qo = $this->import_multichoice( $question ); - } - elseif ($question_type=='truefalse') { - $qo = $this->import_truefalse( $question ); - } - elseif ($question_type=='shortanswer') { - $qo = $this->import_shortanswer( $question ); - } - else { - echo "<p>Question type $question_type not currently supported for xml import</p>"; - $qo = null; - } - - // stick the result in the $questions array - $questions[] = $qo; - } - - return $questions; -} - -// EXPORT FUNCTIONS START HERE - function indent_xhtml($source, $indenter = ' ') { // xml tidier-upper // (c) Ari Koivula http://ventionline.com @@ -339,69 +126,19 @@ function get_qtype( $type_id ) { $name = 'cloze'; break; default: - $name = 'unknown'; + $name = 'Unknown'; } return $name; } -function get_format( $id ) { - // translates question text format id number into something sensible - - switch( $id ) { - case 0: - $name = "moodle_auto_format"; - break; - case 1: - $name = "html"; - break; - case 2: - $name = "plain_text"; - break; - case 3: - $name = "wiki_like"; - break; - case 4: - $name = "markdown"; - break; - default: - $name = "unknown"; - } - return $name; -} - -function get_single( $id ) { - // translate single value into something sensible - - switch( $id ) { - case 0: - $name = "false"; - break; - case 1: - $name = "true"; - break; - default: - $name = "unknown"; - } - return $name; -} - -function writetext( $raw, $ilev=0, $short=true) { +function writetext( $raw ) { // generates <text></text> tags, processing raw text therein - // $ilev is the current indent level - // $short=true sticks it on one line - $indent = str_repeat( " ",$ilev ); - // encode the text to 'disguise' HTML content - $raw = htmlspecialchars( $raw ); + // for now, don't allow any additional tags in text + // otherwise xml rules would probably get broken + $raw = strip_tags( $raw ); - if ($short) { - $xml = "$indent<text>$raw</text>\n"; - } - else { - $xml = "$indent<text>\n$raw\n$indent</text>\n"; - } - - return $xml; + return "<text>$raw</text>\n"; } function presave_process( $content ) { @@ -428,14 +165,10 @@ function writequestion( $question ) { // add opening tag $question_type = $this->get_qtype( $question->qtype ); $name_text = $this->writetext( $question->name ); - $qtformat = $this->get_format($question->questiontextformat); $question_text = $this->writetext( $question->questiontext ); - $expout .= " <question type=\"$question_type\">\n"; - $expout .= " <name>$name_text</name>\n"; - $expout .= " <questiontext format=\"$qtformat\">\n"; - $expout .= $question_text; - $expout .= " </questiontext>\n"; - $expout .= " <image>".$question->image."</image>\n"; + $expout .= "<question type=\"$question_type\">\n"; + $expout .= "<name>".$this->writetext($name_text)."</name>\n"; + $expout .= "<questiontext>".$this->writetext($question_text)."</questiontext>\n"; // output depends on question type switch($question->qtype) { @@ -443,43 +176,34 @@ function writequestion( $question ) { $true_percent = round( $question->trueanswer->fraction * 100 ); $false_percent = round( $question->falseanswer->fraction * 100 ); // true answer - $expout .= " <answer fraction=\"$true_percent\">\n"; - $expout .= $this->writetext("true",3)."\n"; - $expout .= " <feedback>\n"; - $expout .= $this->writetext( $question->trueanswer->feedback,4,false ); - $expout .= " </feedback>\n"; - $expout .= " </answer>\n"; + $expout .= "<answer fraction=\"$true_percent\">\n"; + $expout .= $this->writetext("true")."\n"; + $expout .= "<feedback>".$this->writetext( $question->trueanswer->feedback )."</feedback>\n"; + $expout .= "</answer>\n"; // false answer - $expout .= " <answer fraction=\"$false_percent\">\n"; + $expout .= "<answer fraction=\"$false_percent\">\n"; $expout .= $this->writetext("false")."\n"; - $expout .= " <feedback>\n"; - $expout .= $this->writetext( $question->falseanswer->feedback,4,false ); - $expout .= " </feedback>\n"; - $expout .= " </answer>\n"; + $expout .= "<feedback>".$this->writetext( $question->falseanswer->feedback )."</feedback>\n"; + $expout .= "</answer>\n"; break; case MULTICHOICE: - $expout .= " <single>".$this->get_single($question->single)."</single>\n"; foreach($question->answers as $answer) { - $percent = $answer->fraction * 100; - $expout .= " <answer fraction=\"$percent\">\n"; - $expout .= $this->writetext( $answer->answer,4,false ); - $expout .= " <feedback>\n"; - $expout .= $this->writetext( $answer->feedback,4,false ); - $expout .= " </feedback>\n"; - $expout .= " </answer>\n"; + $percent = round( $answer->fraction * 100 ); + $expout .= "<answer fraction=\"$percent\">\n"; + $expout .= $this->writetext( $answer->answer ); + $expout .= "<feedback>".$this->writetext( $answer->feedback )."</feedback>\n"; + $expout .= "</answer>\n"; } break; case SHORTANSWER: foreach($question->answers as $answer) { $percent = 100 * $answer->fraction; - $expout .= " <answer fraction=\"$percent\">\n"; - $expout .= $this->writetext( $answer->answer,3,false ); - $expout .= " <feedback>\n"; - $expout .= $this->writetext( $answer->feedback,4,false ); - $expout .= " </feedback>\n"; - $expout .= " </answer>\n"; + $expout .= "<answer fraction=\"$percent\">\n"; + $expout .= $this->writetext( $answer->answer ); + $expout .= "<feedback>".$this->writetext( $answer->feedback )."</feedback>\n"; + $expout .= "</answer>\n"; } break; case NUMERICAL: @@ -508,9 +232,9 @@ function writequestion( $question ) { $expout .= "</question>\n"; // run through xml tidy function - // $tidy_expout = $this->indent_xhtml( $expout, ' ' ) . "\n\n"; + $tidy_expout = $this->indent_xhtml( $expout, ' ' ) . "\n\n"; - return $expout; + return $tidy_expout; } } diff --git a/mod/quiz/import.php b/mod/quiz/import.php index 5978f9ff4a1..0148c611926 100644 --- a/mod/quiz/import.php +++ b/mod/quiz/import.php @@ -1,8 +1,8 @@ -<?php // $Id$ +<?PHP // $Id$ // Import quiz questions into the given category require_once("../../config.php"); - require_once("locallib.php"); + require_once("lib.php"); require_variable($category); optional_variable($format); @@ -15,7 +15,7 @@ error("This category doesn't belong to a valid course!"); } - require_login($course->id, false); + require_login($course->id); if (!isteacher($course->id)) { error("Only the teacher can import quiz questions!"); @@ -34,23 +34,23 @@ if ($form = data_submitted()) { /// Filename if (isset($form->filename)) { // file already on server - $newfile['tmp_name'] = $form->filename; + $newfile['tmp_name'] = $form->filename; $newfile['size'] = filesize($form->filename); } else if (!empty($_FILES['newfile'])) { // file was just uploaded - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $um = new upload_manager('newfile',false,false,$course,false,0,false); - if ($um->preprocess_files()) { // validate and virus check! - $newfile = $_FILES['newfile']; - } + $newfile = $_FILES['newfile']; } - if (is_array($newfile)) { // either for file already on server or just uploaded file. + if (empty($newfile)) { + notify(get_string("uploadproblem") ); - $form->format = clean_filename($form->format); + } else if (!isset($filename) and (!is_uploaded_file($newfile['tmp_name']) or $newfile['size'] == 0)) { + notify(get_string("uploadnofilefound") ); + + } else { // Valid file is found if (! is_readable("format/$form->format/format.php")) { - error('Format not known ('.clean_text($form->format).')'); + error("Format not known ($form->format)"); } require("format.php"); // Parent class @@ -59,30 +59,30 @@ $format = new quiz_file_format(); if (! $format->importpreprocess($category)) { // Do anything before that we need to - error("Error occurred during pre-processing!", + error("Error occurred during pre-processing!", "$CFG->wwwroot/mod/quiz/import.php?category=$category->id"); } if (! $format->importprocess($newfile['tmp_name'])) { // Process the uploaded file - error("Error occurred during processing!", + error("Error occurred during processing!", "$CFG->wwwroot/mod/quiz/import.php?category=$category->id"); } if (! $format->importpostprocess()) { // In case anything needs to be done after - error("Error occurred during post-processing!", + error("Error occurred during post-processing!", "$CFG->wwwroot/mod/quiz/import.php?category=$category->id"); } - echo "<hr />"; + echo "<hr>"; print_continue("edit.php"); print_footer($course); exit; } - } + } /// Print upload form - if (!$categories = quiz_get_category_menu($course->id, false)) { + if (!$categories = quiz_get_category_menu($course->id, true)) { error("No categories!"); } @@ -100,32 +100,31 @@ print_heading_with_help($strimportquestions, "import", "quiz"); - print_simple_box_start("center"); - echo "<form enctype=\"multipart/form-data\" method=\"post\" action=\"import.php\">"; - echo "<table cellpadding=\"5\">"; + print_simple_box_start("center", "", "$THEME->cellheading"); + echo "<form enctype=\"multipart/form-data\" method=\"post\" action=import.php>"; + echo "<table cellpadding=5>"; - echo "<tr><td align=\"right\">"; + echo "<tr><td align=right>"; print_string("category", "quiz"); echo ":</td><td>"; // choose_from_menu($categories, "category", "$category->id", ""); echo quiz_get_category_coursename($category); echo "</tr>"; - echo "<tr><td align=\"right\">"; + echo "<tr><td align=right>"; print_string("fileformat", "quiz"); echo ":</td><td>"; choose_from_menu($fileformatnames, "format", "gift", ""); helpbutton("import", $strimportquestions, "quiz"); echo "</tr>"; - echo "<tr><td align=\"right\">"; + echo "<tr><td align=right>"; print_string("upload"); echo ":</td><td>"; - require_once($CFG->dirroot.'/lib/uploadlib.php'); - upload_print_form_fragment(1,array('newfile'),null,false,null,$course->maxbytes,0,false); + echo " <input name=\"newfile\" type=\"file\" size=\"50\">"; echo "</tr><tr><td>&nbsp;</td><td>"; - echo " <input type=\"hidden\" name=\"category\" value=\"$category->id\" />"; - echo " <input type=\"submit\" name=\"save\" value=\"".get_string("uploadthisfile")."\" />"; + echo " <input type=hidden name=category value=\"$category->id\">"; + echo " <input type=submit name=save value=\"".get_string("uploadthisfile")."\">"; echo "</td></tr>"; echo "</table>"; diff --git a/mod/quiz/imsattempt.php b/mod/quiz/imsattempt.php deleted file mode 100644 index 12e91a18e19..00000000000 --- a/mod/quiz/imsattempt.php +++ /dev/null @@ -1,297 +0,0 @@ -<?php // $Id$ - -// This code has been adapted from mod/quiz/attempt.php -// if called only with parameter = q, it returns an imsmanifest in xml format -// if the results are submitted, it saves the results - - require_once("../../config.php"); - //require_once("lib.php"); //for version 1.4.x - require_once("locallib.php"); //for version 1.5.x - optional_variable($id); // Course Module ID, or - optional_variable($q); // quiz ID - optional_variable ($questionIds); // set of questionids. if present, only these questions from the quiz will be exported. - optional_variable($lang); - global $USER, $CFG; - - if ($id) { - if (! $cm = get_record("course_modules", "id", $id)) { - error("Course Module ID was incorrect"); - } - - if (! $course = get_record("course", "id", $cm->course)) { - error("Course is misconfigured"); - } - - if (! $quiz = get_record("quiz", "id", $cm->instance)) { - error("Course module is incorrect"); - } - - } else { - if (! $quiz = get_record("quiz", "id", $q)) { - error("Course module is incorrect"); - } - if (! $course = get_record("course", "id", $quiz->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("quiz", $quiz->id, $course->id)) { - error("Course Module ID was incorrect"); - } - } - require_login($course->id); - - if (!$lang) { - empty($USER->lang) ? 'de' : $USER->lang; - } - -/// Set number for next attempt: - - if ($attempts = quiz_get_user_attempts($quiz->id, $USER->id)) { - $attemptnumber = 2; - foreach ($attempts as $attempt) { - if ($attempt->attempt >= $attemptnumber) { - $attemptnumber = $attempt->attempt + 1; - } - } - } else { - $attemptnumber = 1; - } - - $strattemptnum = get_string("attempt", "quiz", $attemptnumber); - - -/// Check availability - - if ($quiz->attempts and $attempts and count($attempts) >= $quiz->attempts) { - error("Sorry, you've had $quiz->attempts attempts already.", "view.php?id=$cm->id"); - } - -/// Check subnet access - if ($quiz->subnet and !address_in_subnet(getremoteaddr(), $quiz->subnet)) { - error(get_string("subneterror", "quiz"), "view.php?id=$cm->id"); - } - -/// Check password access - if ($quiz->password and empty($_POST['q'])) { - if (empty($_POST['quizpassword'])) { - - print_heading(format_string($quiz->name)); - print_heading(get_string("attempt", "quiz", $attemptnumber)); - if (trim(strip_tags($quiz->intro))) { - print_simple_box(format_text($quiz->intro), "CENTER"); - } - echo "<br />\n"; - - echo "<form name=\"passwordform\" method=\"post\" action=\"attempt.php?id=$cm->id\">\n"; - print_simple_box_start("center"); - - echo "<div align=\"center\">\n"; - print_string("requirepasswordmessage", "quiz"); - echo "<br /><br />\n"; - echo " <input name=\"quizpassword\" type=\"password\" value=\"\" />"; - echo " <input type=\"submit\" value=\"".get_string("ok")."\" />\n"; - echo "</div>\n"; - - print_simple_box_end(); - echo "</form>\n"; - - print_footer(); - exit; - - } else { - if (strcmp($quiz->password, $_POST['quizpassword']) !== 0) { - error(get_string("passworderror", "quiz"), "view.php?id=$cm->id"); - } - unset($_POST['quizpassword']); /// needed so as not to confuse later code dealing with submitted answers - } - } - - -// $unattempt = quiz_get_user_attempt_unfinished($quiz->id, $USER->id); - $timenow = time(); - $available = ($quiz->timeopen < $timenow and $timenow < $quiz->timeclose); -/// Check to see if they are submitting answers - if ($rawanswers = data_submitted()) { - - $error = null; - $rawanswers = (array)$rawanswers; - - $shuffleorder = NULL; - - unset($rawanswers["q"]); // quiz id - if (! count($rawanswers) and ! $timelimit) { - frageplayer_error(get_string("noanswers", "quiz")); - } - - if (!$questions = get_records_list("quiz_questions", "id", $quiz->questions)) { - frageplayer_error('No questions found while trying to grade test attempt!'); - } - - foreach ($rawanswers as $key => $value) { // Parse input for question->response - - if ($postedquestionid = quiz_extract_posted_id($key)) { - $questions[$postedquestionid]->response[$key] = trim($value); - - } else if ('shuffleorder' == $key) { - $shuffleorder = explode(",", $value); // Actual order questions were given in - - } else { // Useful for debugging new question types. Must be last. - $error .= "Unrecognizable input has been posted ($key -> $value)..."; - } - } - if (!is_null($error)) { - frageplayer_error($error); - } - - /// Retrieve ->maxgrade for all questions - If (!($grades = quiz_get_question_grades($quiz->id, $quiz->questions))) { - $grades = array(); - } - foreach ($grades as $qid => $grade) { - $questions[$qid]->maxgrade = $grade->grade; - } - - if (isset($timesincestart)) { - $quiz->timesincestart = $timesincestart; // To pass it on to quiz_grade_responses - } - - if (!$result = quiz_grade_responses($quiz, $questions)) { - frageplayer_error("Could not grade your quiz attempt"); - } - - if ($attempt = quiz_save_attempt($quiz, $questions, $result, $attemptnumber)) { - add_to_log($course->id, "quiz", "submit", - "review.php?id=$cm->id&amp;attempt=$attempt->id", "$quiz->id", $cm->id); - } else { - frageplayer_error(get_string("alreadysubmitted", "quiz")); - } - - if (! quiz_save_best_grade($quiz, $USER->id)) { - frageplayer_error("Sorry! Could not calculate your best grade!"); - } - - if ($quiz->grade) { - $strgrade = get_string("grade"); - $strscore = get_string("score", "quiz"); - frageplayer_success("$strscore: $result->sumgrades/$quiz->sumgrades ($result->percentage %)" - . "$strgrade: $result->grade/$quiz->grade"); - } else { - // todo: ungraded quiz response - frageplayer_success("Ungraded quiz OK"); - } - - // we shouldn't get here ... - echo "&success=unknown"; - exit; - } - - -/// Actually seeing the questions marks the start of an attempt - - if (isset($unattempt) && $unattempt) { - $attempt = $unattempt; - - } else if ($attempt = quiz_start_attempt($quiz->id, $USER->id, $attemptnumber)) { - add_to_log($course->id, "quiz", "attempt", - "review.php?id=$cm->id&amp;attempt=$attempt->id", "$quiz->id", $cm->id); - } else { - frageplayer_error("Sorry! Could not start the quiz (could not save starting time)"); - } - - - if (!$available) { - frageplayer_error("Sorry, this quiz is not available"); - } - -/// Export all the questions - $questions = quiz_get_attempt_questions($quiz, $attempt, true); - if ($questionIds){ - $subSetOfQuestions = array (); - $questionIds = explode ("_", $questionIds); - foreach ($questions as $key => $question){ - if (in_array ($key, $questionIds)){ - $subSetOfQuestions[$key] = $question; - } - - } - $questions = $subSetOfQuestions; - - } - - /* - echo "<pre>"; - print (var_export ($questions, 1)); - - die(); - */ - - if ($quiz->attemptonlast && $attemptnumber >= 2 and - $quiz->attempts == 0 || !unattempt) { - // There are unlimited attempts or it is a new attempt. - // As the attempt also builds on the last, we can here - // have the student see the scores of the pre-entered - // responses that we here will have graded: - $result = quiz_grade_responses($quiz, $questions); - $result->attemptbuildsonthelast = true; - } else { - $result = NULL; - } - - // we want all information in the ims export, so the below was commented out - // the qti player can determine how it wants to handle it. - /*// We do not show feedback or correct answers during an attempt: - // changed from false to '0' to get a meaningful qti export - $quiz->feedback = $quiz->correctanswers = 0;*/ - if (!$quiz->feedback) { - $quiz->feedback = 0; - } - if (!$quiz->correctanswers) { - $quiz->correctanswers = 0; - } - - // shuffle the order of the questions - if (!$shuffleorder) { - if (!empty($quiz->shufflequestions)) { // Mix everything up - $questions = swapshuffle_assoc($questions); - } else { - if ($questionIds) { - // only a subset of questions are being used - $shuffleorder = $questionIds; - } else { - $shuffleorder = explode(",", $quiz->questions); // Use originally defined order - } - } - } - - if ($shuffleorder) { // Order has been defined, so reorder questions - $oldquestions = $questions; - $questions = array(); - foreach ($shuffleorder as $key) { - $questions[] = $oldquestions[$key]; // This loses the index key, but doesn't matter - } - } - -// create the imsmanifest file - require("format.php"); // Parent class - require("format/qti/format.php"); - - $redirecturl = "{$CFG->wwwroot}/mod/quiz/index.php?id={$course->id}"; - //$submiturl = "{$CFG->wwwroot}/mod/quiz/attempt.php?q={$quiz->id}"; - $submiturl = "{$CFG->wwwroot}/mod/quiz/imsattempt.php"; - $format = new quiz_file_format(); - $format->export_quiz($course, $quiz, $questions, $result, $redirecturl, $submiturl); - - - function frageplayer_error($errorstr, $exit = true) { - echo "&success=false&faultstring=$errorstr"; - if ($exit) { - exit; - } - } - function frageplayer_success($successstr, $exit = true) { - echo "&success=true&resultstring=$successstr&"; - if ($exit) { - exit; - } - } - -?> diff --git a/mod/quiz/index.php b/mod/quiz/index.php index 69b572a3986..1cd1c827530 100644 --- a/mod/quiz/index.php +++ b/mod/quiz/index.php @@ -1,9 +1,9 @@ -<?php // $Id$ +<?PHP // $Id$ // This page lists all the instances of quiz in a particular course require_once("../../config.php"); - require_once("locallib.php"); + require_once("lib.php"); require_variable($id); // course @@ -76,13 +76,13 @@ foreach ($quizzes as $quiz) { if (!$quiz->visible) { //Show dimmed if the mod is hidden - $link = "<a class=\"dimmed\" href=\"view.php?id=$quiz->coursemodule\">".format_string($quiz->name,true)."</a>"; + $link = "<A class=\"dimmed\" HREF=\"view.php?id=$quiz->coursemodule\">$quiz->name</A>"; } else { //Show normal if the mod is visible - $link = "<a href=\"view.php?id=$quiz->coursemodule\">".format_string($quiz->name,true)."</a>"; + $link = "<A HREF=\"view.php?id=$quiz->coursemodule\">$quiz->name</A>"; } - $bestgrade = quiz_get_best_grade($quiz, $USER->id); + $bestgrade = quiz_get_best_grade($quiz->id, $USER->id); $printsection = ""; if ($quiz->section !== $currentsection) { @@ -98,16 +98,17 @@ $closequiz = userdate($quiz->timeclose); if (isteacher($course->id)) { - if ($usercount = count_records('quiz_grades', 'quiz', $quiz->id)) { - $attemptcount = count_records_select('quiz_attempts', 'quiz = '.$quiz->id.' AND timefinish > 0'); - $strviewallanswers = get_string('viewallanswers', 'quiz', $attemptcount); + if ($allanswers = get_records("quiz_grades", "quiz", $quiz->id)) { + $attemptcount = count_records_select("quiz_attempts", "quiz = '$quiz->id' AND timefinish > 0"); + $usercount = count_records("quiz_grades", "quiz", "$quiz->id"); + $strviewallanswers = get_string("viewallanswers","quiz",$attemptcount); $gradecol = "<a href=\"report.php?q=$quiz->id\">$strviewallanswers ($usercount $strusers)</a>"; } else { $answercount = 0; $gradecol = ""; } } else { - if ($bestgrade === NULL || $quiz->grade == 0) { + if ($bestgrade === "" or $quiz->grade == 0) { $gradecol = ""; } else { $gradecol = "$bestgrade / $quiz->grade"; diff --git a/mod/quiz/jsclock.php b/mod/quiz/jsclock.php index 07c657f2237..3929452980b 100644 --- a/mod/quiz/jsclock.php +++ b/mod/quiz/jsclock.php @@ -1,7 +1,3 @@ -<?php // $Id$ -defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.'); -?> - <script language="javascript"> <!-- /// This Javascript clock provides a little countdown in the title bar @@ -9,7 +5,7 @@ defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.'); var timerID = null; var timerRunning = false; var secondsleft = <?php echo $secondsleft ?>; -var titleafter = '<?php echo format_string($quiz->name) ?>'; +var titleafter = '<?php echo $quiz->name ?>'; var titlebefore = '<?php echo get_string("countdown", "quiz").": " ?>'; var alertmessage = '<?php print_string("countdownfinished", "quiz") ?>'; var alertmessage10 = '<?php print_string("countdowntenminutes", "quiz") ?>'; diff --git a/mod/quiz/jstimer.php b/mod/quiz/jstimer.php index 2dc2ffa2ea1..dec7ce5cf48 100644 --- a/mod/quiz/jstimer.php +++ b/mod/quiz/jstimer.php @@ -3,9 +3,7 @@ // This will produce a floating timer that counts // how much time is left to answer the quiz. // -defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.'); -?> - + ?> <script language="javascript" type="text/javascript"> <!-- function send_data() { @@ -15,7 +13,7 @@ function send_data() { var timesup = "<?php print_string("timesup","quiz");?>"; var quizclose = <?php echo ($quiz->timeclose - time()) - $timerstartvalue; ?>; // in seconds -var quizTimerValue = <?php echo $timerstartvalue; ?>; // in seconds +var quizTimerValue = <? echo $timerstartvalue; ?>; // in seconds parseInt(quizTimerValue); // --> </script> diff --git a/mod/quiz/lib.php b/mod/quiz/lib.php index 21ecf877693..16126a33256 100644 --- a/mod/quiz/lib.php +++ b/mod/quiz/lib.php @@ -1,13 +1,304 @@ -<?php // $Id$ +<?PHP // $Id$ /// Library of function for module quiz -require_once($CFG->libdir.'/pagelib.php'); - /// CONSTANTS /////////////////////////////////////////////////////////////////// +define("GRADEHIGHEST", "1"); +define("GRADEAVERAGE", "2"); +define("ATTEMPTFIRST", "3"); +define("ATTEMPTLAST", "4"); +$QUIZ_GRADE_METHOD = array ( GRADEHIGHEST => get_string("gradehighest", "quiz"), + GRADEAVERAGE => get_string("gradeaverage", "quiz"), + ATTEMPTFIRST => get_string("attemptfirst", "quiz"), + ATTEMPTLAST => get_string("attemptlast", "quiz")); + +define("SHORTANSWER", "1"); +define("TRUEFALSE", "2"); +define("MULTICHOICE", "3"); +define("RANDOM", "4"); +define("MATCH", "5"); +define("RANDOMSAMATCH", "6"); +define("DESCRIPTION", "7"); +define("NUMERICAL", "8"); +define("MULTIANSWER", "9"); +define("CALCULATED", "10"); + +$QUIZ_QUESTION_TYPE = array ( MULTICHOICE => get_string("multichoice", "quiz"), + TRUEFALSE => get_string("truefalse", "quiz"), + SHORTANSWER => get_string("shortanswer", "quiz"), + NUMERICAL => get_string("numerical", "quiz"), + CALCULATED => get_string("calculated", "quiz"), + MATCH => get_string("match", "quiz"), + DESCRIPTION => get_string("description", "quiz"), + RANDOM => get_string("random", "quiz"), + RANDOMSAMATCH => get_string("randomsamatch", "quiz"), + MULTIANSWER => get_string("multianswer", "quiz") + ); + + +define("QUIZ_PICTURE_MAX_HEIGHT", "600"); // Not currently implemented +define("QUIZ_PICTURE_MAX_WIDTH", "600"); // Not currently implemented + +define("QUIZ_MAX_NUMBER_ANSWERS", "10"); + define("QUIZ_MAX_EVENT_LENGTH", "432000"); // 5 days maximum +$QUIZ_QTYPES= array(); + +/// QUIZ_QTYPES INITIATION ////////////////// +class quiz_default_questiontype { + + function name() { + return 'default'; + } + + function uses_quizfile($question, $relativefilepath) { + // The default does only check whether the file is used as image: + return $question->image == $relativefilepath; + } + + function save_question_options($question) { + /// Given some question info and some data about the the answers + /// this function parses, organises and saves the question + /// It is used by question.php through ->save_question when + /// saving new data from a form, and also by import.php when + /// importing questions + /// + /// If this is an update, and old answers already exist, then + /// these are overwritten using an update(). To do this, it + /// it is assumed that the IDs in quiz_answers are in the same + /// sort order as the new answers being saved. This should always + /// be true, but it's something to keep in mind if fiddling with + /// question.php + /// + /// Returns $result->error or $result->noticeyesno or $result->notice + + /// This default implementation must be overridden: + + $result->error = "Unsupported question type ($question->qtype)!"; + return $result; + } + + function save_question($question, $form, $course) { + // This default implementation is suitable for most + // question types. + + // First, save the basic question itself + + $question->name = trim($form->name); + $question->questiontext = trim($form->questiontext); + $question->questiontextformat = $form->questiontextformat; + + if (empty($form->image)) { + $question->image = ""; + } else { + $question->image = $form->image; + } + + if (empty($question->name)) { + $question->name = strip_tags($question->questiontext); + if (empty($question->name)) { + $question->name = '-'; + } + } + + if (isset($form->defaultgrade)) { + $question->defaultgrade = $form->defaultgrade; + } + + if (!empty($question->id)) { // Question already exists + $question->version ++; // Update version number of question + if (!update_record("quiz_questions", $question)) { + error("Could not update question!"); + } + } else { // Question is a new one + $question->stamp = make_unique_id_code(); // Set the unique code (not to be changed) + $question->version = 1; + if (!$question->id = insert_record("quiz_questions", $question)) { + error("Could not insert new question!"); + } + } + + // Now to save all the answers and type-specific options + + $form->id = $question->id; + $form->qtype = $question->qtype; + $form->category = $question->category; + + $result = $this->save_question_options($form); + + if (!empty($result->error)) { + error($result->error); + } + + if (!empty($result->notice)) { + notice($result->notice, "question.php?id=$question->id"); + } + + if (!empty($result->noticeyesno)) { + notice_yesno($result->noticeyesno, "question.php?id=$question->id", "edit.php"); + print_footer($course); + exit; + } + + redirect("edit.php"); + } + + /// Convenience function that is used within the question types only + function extract_response_id($responsekey) { + if (ereg('[0-9]'.$this->name().'([0-9]+)', $responsekey, $regs)) { + return $regs[1]; + } else { + return false; + } + } + + function wrapped_questions($question) { + /// Overridden only by question types, whose questions can + /// wrap other questions. Two question types that do this + /// are RANDOMSAMATCH and RANDOM + + /// If there are wrapped questions, than this method returns + /// comma separated list of them... + + return false; + } + + function convert_to_response_answer_field($questionresponse) { + /// This function is very much the inverse of extract_response + /// This function and extract_response, should be + /// obsolete as soon as we get a better response storage + /// Right now they are a bridge between a consistent + /// response model and the old field answer in quiz_responses + + /// This is the default implemention... + return implode(',', $questionresponse); + } + + function get_answers($question) { + // Returns the answers for the specified question + + // The default behaviour that signals that something is wrong + return false; + } + + function create_response($question, $nameprefix, $questionsinuse) { + /// This rather smart solution works for most cases: + $rawresponse->question = $question->id; + $rawresponse->answer = ''; + return $this->extract_response($rawresponse, $nameprefix); + } + + function extract_response($rawresponse, $nameprefix) { + /// This function is very mcuh the inverse of convert_to_response_answer + /// This function and convert_to_response_answer, should be + /// obsolete as soon as we get a better response storage + /// Right now they are a bridge between a consistent + /// response model and the old field answer in quiz_responses + + /// Default behaviour that works for singlton response question types + /// like SHORTANSWER, NUMERICAL and TRUEFALSE + + return array($nameprefix => $rawresponse->answer); + } + + function print_question_number_and_grading_details + ($number, $grade, $actualgrade=false, $recentlyadded=false) { + + /// Print question number and grade: + + echo '<p align="center"><b>' . $number . '</b></p>'; + if (false !== $grade) { + $strmarks = get_string("marks", "quiz"); + echo '<p align="center"><font size="1">'; + if (false !== $actualgrade) { + echo "$strmarks: $actualgrade/$grade</font></p>"; + } else { + echo "$grade $strmarks</font></p>"; + } + } + print_spacer(1,100); + + /// Print possible recently-added information: + + if ($recentlyadded) { + echo '</td><td valign="top" align="right">'; + // Notify the user of this recently added question + echo '<font color="red">'; + echo get_string('recentlyaddedquestion', 'quiz'); + echo '</font>'; + echo '</td></tr><tr><td></td><td valign="top">'; + + } else { // The normal case + echo '</td><td valign="top">'; + } + } + + function print_question($currentnumber, $quiz, $question, + $readonly, $resultdetails) { + /// Note that this method must return the number of the next + /// question, making it possible not to increase the number when + /// overriding this method (as for qtype=DESCRIPTION). + + echo '<table width="100%" cellspacing="10">'; + echo '<tr><td nowrap="nowrap" width="100" valign="top">'; + + $this->print_question_number_and_grading_details + ($currentnumber, + $quiz->grade ? $question->maxgrade : false, + empty($resultdetails) ? false : $resultdetails->grade, + isset($question->recentlyadded) ? $question->recentlyadded : false); + + $this->print_question_formulation_and_controls( + $question, $quiz, $readonly, + empty($resultdetails) ? false : $resultdetails->answers, + empty($resultdetails) ? false : $resultdetails->correctanswers, + quiz_qtype_nameprefix($question)); + + echo "</td></tr></table>"; + return $currentnumber + 1; + } + + function print_question_formulation_and_controls($question, + $quiz, $readonly, $answers, $correctanswers, $nameprefix) { + /// This default implementation must be overridden by all + /// question type implemenations, unless the default + /// implementation of print_question has been overridden... + + notify('Error: Question formulation and input controls has not' + .' been implemented for question type '.$this->name()); + } + + function grade_response($question, $nameprefix) { + // Analyzes $question->response[] and determines the result + // The result is to be returned in this structure: + // ->grade (The fraction of maxgrade awarded on the question) + // ->answers (result answer records) + // ->correctanswers (potential answer records for best ->response[]) + + error('grade_response has not been implemented for question type ' + .$this->name()); + } +} + +quiz_load_questiontypes(); +function quiz_load_questiontypes() { + global $QUIZ_QTYPES; + global $CFG; + + $qtypenames= get_list_of_plugins('mod/quiz/questiontypes'); + foreach($qtypenames as $qtypename) { + // Instanciates all plug-in question types + $qtypefilepath= "$CFG->dirroot/mod/quiz/questiontypes/$qtypename/questiontype.php"; + + // echo "Loading $qtypename<br/>"; // Uncomment for debugging + if (is_readable($qtypefilepath)) { + require_once($qtypefilepath); + } + } +} + /// FUNCTIONS /////////////////////////////////////////////////////////////////// function quiz_add_instance($quiz) { @@ -16,6 +307,10 @@ function quiz_add_instance($quiz) { /// will create a new instance and return the id number /// of the new instance. + global $SESSION; + + unset($SESSION->modform); + $quiz->created = time(); $quiz->timemodified = time(); $quiz->timeopen = make_timestamp($quiz->openyear, $quiz->openmonth, $quiz->openday, @@ -23,21 +318,23 @@ function quiz_add_instance($quiz) { $quiz->timeclose = make_timestamp($quiz->closeyear, $quiz->closemonth, $quiz->closeday, $quiz->closehour, $quiz->closeminute, 0); - if (empty($quiz->name)) { - if (empty($quiz->intro)) { - $quiz->name = get_string('modulename', 'quiz'); - } else { - $quiz->name = strip_tags($quiz->intro); - } - } - $quiz->name = trim($quiz->name); - if (!$quiz->id = insert_record("quiz", $quiz)) { return false; // some error occurred } - if (isset($quiz->optionsettingspref)) { - set_user_preference('quiz_optionsettingspref', $quiz->optionsettingspref); + // The grades for every question in this quiz are stored in an array + if ($quiz->grades) { + foreach ($quiz->grades as $question => $grade) { + if ($question) { + unset($questiongrade); + $questiongrade->quiz = $quiz->id; + $questiongrade->question = $question; + $questiongrade->grade = $grade; + if (!insert_record("quiz_question_grades", $questiongrade)) { + return false; + } + } + } } delete_records('event', 'modulename', 'quiz', 'instance', $quiz->id); // Just in case @@ -77,35 +374,57 @@ function quiz_add_instance($quiz) { function quiz_update_instance($quiz) { /// Given an object containing all the necessary data, -/// (defined by the form in mod.html or edit.php) this function +/// (defined by the form in mod.html) this function /// will update an existing instance with new data. + global $SESSION; + + unset($SESSION->modform); + $quiz->timemodified = time(); - if (isset($quiz->openyear)) { // this would not be set if we come from edit.php - $quiz->timeopen = make_timestamp($quiz->openyear, $quiz->openmonth, $quiz->openday, - $quiz->openhour, $quiz->openminute, 0); - $quiz->timeclose = make_timestamp($quiz->closeyear, $quiz->closemonth, $quiz->closeday, - $quiz->closehour, $quiz->closeminute, 0); - } + $quiz->timeopen = make_timestamp($quiz->openyear, $quiz->openmonth, $quiz->openday, + $quiz->openhour, $quiz->openminute, 0); + $quiz->timeclose = make_timestamp($quiz->closeyear, $quiz->closemonth, $quiz->closeday, + $quiz->closehour, $quiz->closeminute, 0); $quiz->id = $quiz->instance; if (!update_record("quiz", $quiz)) { return false; // some error occurred } - if (isset($quiz->optionsettingspref)) { - set_user_preference('quiz_optionsettingspref', $quiz->optionsettingspref); - } - // currently this code deletes all existing events and adds new ones - // this should be improved to update existing events only - if ($events = get_records_select('event', "modulename = 'quiz' and instance = '$quiz->id'")) { - foreach($events as $event) { - delete_event($event->id); + // The grades for every question in this quiz are stored in an array + // Insert or update records as appropriate + + $existing = get_records("quiz_question_grades", "quiz", $quiz->id, "", "question,grade,id"); + + if ($quiz->grades) { + foreach ($quiz->grades as $question => $grade) { + if ($question) { + unset($questiongrade); + $questiongrade->quiz = $quiz->id; + $questiongrade->question = $question; + $questiongrade->grade = $grade; + if (isset($existing[$question])) { + if ($existing[$question]->grade != $grade) { + $questiongrade->id = $existing[$question]->id; + if (!update_record("quiz_question_grades", $questiongrade)) { + return false; + } + } + } else { + if (!insert_record("quiz_question_grades", $questiongrade)) { + return false; + } + } + } } } - unset($event); + delete_records('event', 'modulename', 'quiz', 'instance', $quiz->id); // Delete old and add new + + $event = NULL; + $event->name = $quiz->name; $event->description = $quiz->intro; $event->courseid = $quiz->course; $event->groupid = 0; @@ -118,21 +437,21 @@ function quiz_update_instance($quiz) { $event->timeduration = ($quiz->timeclose - $quiz->timeopen); if ($event->timeduration > QUIZ_MAX_EVENT_LENGTH) { /// Long durations create two events + $event2 = $event; - $event->name = $quiz->name.' ('.get_string('quizopens', 'quiz').')'; + $event->name .= ' ('.get_string('quizopens', 'quiz').')'; $event->timeduration = 0; - add_event($event); - $event->timestart = $quiz->timeclose; - $event->eventtype = 'close'; - $event->name = $quiz->name.' ('.get_string('quizcloses', 'quiz').')'; - unset($event->id); - add_event($event); - } else { // single event with duration - $event->name = $quiz->name; - add_event($event); + $event2->timestart = $quiz->timeclose; + $event2->eventtype = 'close'; + $event2->timeduration = 0; + $event2->name .= ' ('.get_string('quizcloses', 'quiz').')'; + + add_event($event2); } + add_event($event); + return true; } @@ -172,17 +491,8 @@ function quiz_delete_instance($id) { $result = false; } - $pagetypes = page_import_types('mod/quiz/'); - foreach($pagetypes as $pagetype) { - if(!delete_records('block_instance', 'pageid', $quiz->id, 'pagetype', $pagetype)) { - $result = false; - } - } - - if ($events = get_records_select('event', "modulename = 'quiz' and instance = '$quiz->id'")) { - foreach($events as $event) { - delete_event($event->id); - } + if (! delete_records('event', 'modulename', 'quiz', 'instance', $quiz->id)) { + $result = false; } return $result; @@ -223,16 +533,17 @@ function quiz_user_outline($course, $user, $mod, $quiz) { /// Used for user activity reports. /// $return->time = the time they did it /// $return->info = a short text description - if ($grade = get_record('quiz_grades', 'userid', $user->id, 'quiz', $quiz->id)) { + if ($grade = get_record("quiz_grades", "userid", $user->id, "quiz", $quiz->id)) { - if ((float)$grade->grade) { - $result->info = get_string('grade').':&nbsp;'.format_float($grade->grade, $quiz->decimalpoints); + if ($grade->grade) { + $result->info = get_string("grade").": $grade->grade"; } $result->time = $grade->timemodified; return $result; } return NULL; + return $return; } function quiz_user_complete($course, $user, $mod, $quiz) { @@ -255,45 +566,27 @@ function quiz_cron () { function quiz_grades($quizid) { /// Must return an array of grades, indexed by user, and a max grade. - $quiz = get_record('quiz', 'id', intval($quizid)); - if (empty($quiz) || empty($quiz->grade)) { + $quiz = get_record("quiz", "id", $quizid); + if (empty($quiz) or empty($quiz->grade)) { return NULL; } - $return->grades = get_records_menu('quiz_grades', 'quiz', $quiz->id, '', 'userid, grade'); - $return->maxgrade = get_field('quiz', 'grade', 'id', $quiz->id); + $return->grades = get_records_menu("quiz_grades", "quiz", $quizid, "", "userid,grade"); + $return->maxgrade = get_field("quiz", "grade", "id", "$quizid"); return $return; } function quiz_get_participants($quizid) { /// Returns an array of users who have data in a given quiz -/// (users with records in quiz_attempts and quiz_question_versions) +/// (users with records in quiz_attempts, students) global $CFG; - //Get users from attempts - $us_attempts = get_records_sql("SELECT DISTINCT u.id, u.id - FROM {$CFG->prefix}user u, - {$CFG->prefix}quiz_attempts a - WHERE a.quiz = '$quizid' and - u.id = a.userid"); - - //Get users from question_versions - $us_versions = get_records_sql("SELECT DISTINCT u.id, u.id - FROM {$CFG->prefix}user u, - {$CFG->prefix}quiz_question_versions v - WHERE v.quiz = '$quizid' and - u.id = v.userid"); - - //Add us_versions to us_attempts - if ($us_versions) { - foreach ($us_versions as $us_version) { - $us_attempts[$us_version->id] = $us_version; - } - } - //Return us_attempts array (it contains an array of unique users) - return ($us_attempts); - + return get_records_sql("SELECT DISTINCT u.* + FROM {$CFG->prefix}user u, + {$CFG->prefix}quiz_attempts a + WHERE a.quiz = '$quizid' and + u.id = a.userid"); } function quiz_refresh_events($courseid = 0) { @@ -376,6 +669,1059 @@ function quiz_refresh_events($courseid = 0) { return true; } +/// SQL FUNCTIONS //////////////////////////////////////////////////////////////////// + +function quiz_move_questions($category1, $category2) { + global $CFG; + return execute_sql("UPDATE {$CFG->prefix}quiz_questions + SET category = '$category2' + WHERE category = '$category1'", + false); +} + +function quiz_get_question_grades($quizid, $questionlist) { + global $CFG; + + return get_records_sql("SELECT question,grade + FROM {$CFG->prefix}quiz_question_grades + WHERE quiz = '$quizid' + AND question IN ($questionlist)"); +} + +function quiz_get_grade_records($quiz) { +/// Gets all info required to display the table of quiz results +/// for report.php + global $CFG; + + return get_records_sql("SELECT qg.*, u.firstname, u.lastname, u.picture + FROM {$CFG->prefix}quiz_grades qg, + {$CFG->prefix}user u + WHERE qg.quiz = '$quiz->id' + AND qg.userid = u.id"); +} + +function quiz_get_answers($question) { +// Given a question, returns the correct answers for a given question + global $QUIZ_QTYPES; + + return $QUIZ_QTYPES[$question->qtype]->get_answers($question); +} + +function quiz_get_attempt_questions($quiz, $attempt, $attempting = false) { + /// Returns the questions of the quiz attempt at a format used for + /// grading and printing them... + /// On top of the ordinary persistent question fields, + /// this function also set these properties + + /// ->response - contains names (as keys) and values (as values) + /// for all question html-form inputs + /// ->recentlyadded - true only if the question has been added to the quiz + /// after the responses for the attempt were saved; + /// false otherwise + /// ->maxgrade - the max grade the question has on the quiz if grades + /// are used on the quiz; false otherwise + + global $QUIZ_QTYPES; + global $CFG; + + /// Get the questions: + if (!($questions = + get_records_list('quiz_questions', 'id', $quiz->questions))) { + notify('Error when reading questions from the database!'); + return false; + } + + /// Retrieve ->maxgrade for all questions + If (!($grades = quiz_get_question_grades($quiz->id, $quiz->questions))) { + $grades = array(); + } + + /// Get any existing responses on this attempt: + if (!($rawresponses = get_records_sql + ("SELECT question, answer, attempt FROM {$CFG->prefix}quiz_responses + WHERE attempt = '$attempt->id' + AND question IN ($quiz->questions)")) + and $quiz->attemptonlast + // Try to get responses from the previous attempt: + and $lastattemptnum = $attempt->attempt - 1) { + do { + $lastattempt = get_record('quiz_attempts', + 'quiz', $quiz->id, + 'userid', $attempt->userid, + 'attempt', $lastattemptnum); + } while(empty($lastattempt) && --$lastattemptnum); + + if (0 == $lastattemptnum or + !($rawresponses = get_records_sql + ("SELECT question, answer, attempt + FROM {$CFG->prefix}quiz_responses + WHERE attempt = '$lastattempt->id' + AND question IN ($quiz->questions)"))) { + $rawresponses = array(); + } else { + /// We found a last attempt that is now to be used: + + /// This line can be uncommented for debuging + // echo "Last attempt is $lastattempt->id with number $lastattemptnum"; + } + } + + /// Set the additional question properties + /// response, recentlyadded and grade + foreach ($questions as $qid => $question) { + + if (isset($grades[$qid])) { + $questions[$qid]->maxgrade = $grades[$qid]->grade; + } else { + $questions[$qid]->maxgrade = 0.0; + } + + if (isset($rawresponses[$qid])) { + $questions[$qid]->response = $QUIZ_QTYPES[$question->qtype] + ->extract_response($rawresponses[$qid], + quiz_qtype_nameprefix($question)); + $questions[$qid]->recentlyadded = false; + } else { + $questions[$qid]->response = array(); + $questions[$qid]->recentlyadded = !empty($rawresponses); + } + } + + if ($attempting) { + /// Questions are requested for a test attempt that is + /// about to start and there are no responses to reuse + /// for current question, so we need to create new ones... + + /// For the case of wrapping question types that can + /// wrap other arbitrary questions, there is a need + /// to make sure that no question will appear twice + /// in the quiz attempt: + + $questionsinuse = $quiz->questions; + foreach ($questions as $question) { + if ($wrapped = $QUIZ_QTYPES[$question->qtype]->wrapped_questions + ($question, quiz_qtype_nameprefix($question))) { + $questionsinuse .= ",$wrapped"; + } + } + + /// Make sure all the questions will have responses: + foreach ($questions as $question) { + if (empty($question->response)) { + $nameprefix = quiz_qtype_nameprefix($question); + $questions[$question->id]->response = + $QUIZ_QTYPES[$question->qtype]->create_response + ($question, $nameprefix, $questionsinuse); + + ////////////////////////////////////////////////// + // In the future, a nice feature could be to save + // the created response right here, so that if a + // student quits the quiz without saving, the + // student will have the oppertunity to go back + // to same quiz if he/she restarts the attempt. + // Today, the student gets new RANDOM questions + // whenever he/she restarts the quiz attempt. + ////////////////////////////////////////////////// + // The above would also open the door for a new + // quiz feature that allows the student to save + // all responses if he/she needs to switch computer + // or have any other break in the middle of the quiz. + // (Or simply because the student feels more secure + // if he/she has the chance to save the responses + // a number of times during the quiz.) + ////////////////////////////////////////////////// + + /// Catch any additional wrapped questions: + if ($wrapped = $QUIZ_QTYPES[$question->qtype] + ->wrapped_questions($questions[$question->id], + $nameprefix)) { + $questionsinuse .= ",$wrapped"; + } + } + } + } + + return $questions; +} + + +function get_list_of_questions($questionlist) { +/// Returns an ordered list of questions, including course for each + + global $CFG; + + return get_records_sql("SELECT q.*,c.course + FROM {$CFG->prefix}quiz_questions q, + {$CFG->prefix}quiz_categories c + WHERE q.id in ($questionlist) + AND q.category = c.id"); +} + +////////////////////////////////////////////////////////////////////////////////////// +/// Any other quiz functions go here. Each of them must have a name that +/// starts with quiz_ + +function quiz_qtype_nameprefix($question, $prefixstart='question') { + global $QUIZ_QTYPES; + return $prefixstart.$question->id.$QUIZ_QTYPES[$question->qtype]->name(); +} +function quiz_extract_posted_id($name, $nameprefix='question') { + if (ereg("^$nameprefix([0-9]+)", $name, $regs)) { + return $regs[1]; + } else { + return false; + } +} + +function quiz_print_comment($text) { + global $THEME; + + echo "<span class=\"feedbacktext\">".format_text($text, true, false)."</span>"; +} + +function quiz_print_correctanswer($text) { + global $THEME; + + echo "<p align=\"right\"><span class=\"highlight\">$text</span></p>"; +} + +function quiz_print_question_icon($question, $editlink=true) { +// Prints a question icon + + global $QUIZ_QUESTION_TYPE; + global $QUIZ_QTYPES; + + if ($editlink) { + echo "<a href=\"question.php?id=$question->id\" title=\"" + .$QUIZ_QUESTION_TYPE[$question->qtype]."\">"; + } + echo '<img border="0" height="16" width="16" src="questiontypes/'; + echo $QUIZ_QTYPES[$question->qtype]->name().'/icon.gif"/>'; + if ($editlink) { + echo "</a>\n"; + } +} + +function quiz_print_possible_question_image($quizid, $question) { +// Includes the question image if there is one + + global $CFG; + + if ($question->image) { + echo '<img border="0" src="'; + + if (substr(strtolower($question->image), 0, 7) == 'http://') { + echo $question->image; + + } else if ($CFG->slasharguments) { // Use this method if possible for better caching + echo "$CFG->wwwroot/mod/quiz/quizfile.php/$quizid/$question->id/$question->image"; + + } else { + echo "$CFG->wwwroot/mod/quiz/quizfile.php?file=/$quizid/$question->id/$question->image"; + } + echo '" />'; + + } +} + +function quiz_print_quiz_questions($quiz, $questions, + $results=NULL, $shuffleorder=NULL) { +// Prints a whole quiz on one page. + + global $QUIZ_QTYPES; + + /// Check arguments + + if (empty($questions)) { + notify("No questions have been defined!"); + return false; + } + + if (!$shuffleorder) { + if (!empty($quiz->shufflequestions)) { // Mix everything up + $questions = swapshuffle_assoc($questions); + } else { + $shuffleorder = explode(",", $quiz->questions); // Use originally defined order + } + } + + if ($shuffleorder) { // Order has been defined, so reorder questions + $oldquestions = $questions; + $questions = array(); + foreach ($shuffleorder as $key) { + $questions[] = $oldquestions[$key]; // This loses the index key, but doesn't matter + } + } + + $strconfirmattempt = addslashes(get_string("readytosend", "quiz")); + + if (empty($quiz->grade)) { + $onsubmit = ""; + } else { + $onsubmit = "onsubmit=\"return confirm('$strconfirmattempt');\""; + } + // BEGIN EDIT + if($quiz->timelimit > 0) { + ?> + <script language="javascript" type="text/javascript"> + <!-- + document.write("<form method=\"post\" action=\"attempt.php\" <?php print(addslashes($onsubmit));?>>\n"); + // --> + </script> + <noscript> + <center><p><strong><?php print_string("noscript","quiz"); ?></strong></p></center> + </noscript> + <?php + } else { + echo "<form method=\"post\" action=\"attempt.php\" $onsubmit>\n"; + } + // END EDIT + echo "<input type=\"hidden\" name=\"q\" value=\"$quiz->id\" />\n"; + + // $count = 0; + $nextquestionnumber = 1; + $questionorder = array(); + + // $readonly determines if it is an attempt or an review, + // The condition used here is unfortunatelly somewhat confusing... + $readonly = !empty($results) && !isset($results->attemptbuildsonthelast) + ? ' readonly="readonly" ' : ''; + + foreach ($questions as $question) { + + $questionorder[] = $question->id; + + if ($results && isset($results->details[$question->id])) { + $details = $results->details[$question->id]; + } else { + $details = false; + } + + print_simple_box_start("center", "90%"); + $nextquestionnumber = $QUIZ_QTYPES[$question->qtype]->print_question + ($nextquestionnumber, $quiz, $question, $readonly, $details); + print_simple_box_end(); + echo "<br />"; + } + + if (empty($readonly)) { + if (!empty($quiz->shufflequestions)) { // Things have been mixed up, so pass the question order + $shuffleorder = implode(',', $questionorder); + echo "<input type=\"hidden\" name=\"shuffleorder\" value=\"$shuffleorder\" />\n"; + } + if($quiz->timelimit > 0) { + echo "<script language=\"javascript\" type=\"text/javascript\">\n"; + echo "<!--\n"; + echo "document.write('<center><input type=\"button\" value=\"".get_string("savemyanswers", "quiz")."\" onclick=\"return send_data();\" /></center>');\n"; + echo "// -->\n"; + echo "</script>\n"; + echo "<noscript>\n"; + echo "<center><strong>".get_string("noscript","quiz")."</strong></center>\n"; + echo "</noscript>\n"; + } else { + echo "<center>\n<input type=\"submit\" value=\"".get_string("savemyanswers", "quiz")."\" />\n</center>"; + } + } + echo "</form>"; + + return true; +} + + + +function quiz_get_default_category($courseid) { +/// Returns the current category + + if ($categories = get_records("quiz_categories", "course", $courseid, "id")) { + foreach ($categories as $category) { + return $category; // Return the first one (lowest id) + } + } + + // Otherwise, we need to make one + $category->name = get_string("default", "quiz"); + $category->info = get_string("defaultinfo", "quiz"); + $category->course = $courseid; + $category->publish = 0; + $category->stamp = make_unique_id_code(); + + if (!$category->id = insert_record("quiz_categories", $category)) { + notify("Error creating a default category!"); + return false; + } + return $category; +} + +function quiz_get_category_menu($courseid, $published=false) { +/// Returns the list of categories + $publish = ""; + if ($published) { + $publish = "OR publish = '1'"; + } + return get_records_select_menu("quiz_categories", "course='$courseid' $publish", "name ASC", "id,name"); +} + +function quiz_print_category_form($course, $current) { +// Prints a form to choose categories + + if (!$categories = get_records_select("quiz_categories", "course = '$course->id' OR publish = '1'", "name ASC")) { + if (!$category = quiz_get_default_category($course->id)) { + notify("Error creating a default category!"); + return false; + } + $categories[$category->id] = $category; + } + foreach ($categories as $key => $category) { + if ($catcourse = get_record("course", "id", $category->course)) { + if ($category->publish) { + $category->name .= " ($catcourse->shortname)"; + } + $catmenu[$category->id] = $category->name; + } + } + $strcategory = get_string("category", "quiz"); + $strshow = get_string("show", "quiz"); + $streditcats = get_string("editcategories", "quiz"); + + echo "<table width=\"100%\"><tr><td width=\"20\" nowrap=\"nowrap\">"; + echo "<b>$strcategory:</b>&nbsp;"; + echo "</td><td>"; + popup_form ("edit.php?cat=", $catmenu, "catmenu", $current, "choose", "", "", false, "self"); + echo "</td><td align=\"right\">"; + echo "<form method=\"get\" action=\"category.php\">"; + echo "<input type=\"hidden\" name=\"id\" value=\"$course->id\" />"; + echo "<input type=\"submit\" value=\"$streditcats\" />"; + echo "</form>"; + echo "</td></tr></table>"; +} + +function quiz_category_select_menu($courseid,$published=false,$only_editable=false,$selected="") { +/// displays a select menu of categories with appended coursenames +/// optionaly non editable categories may be excluded +/// added Howard Miller June '04 + // get sql fragment for published + $publishsql=""; + if ($published) { + $publishsql = "or publish=1"; + } + $categories = get_records_select("quiz_categories","course=$courseid $publishsql"); + echo "<select name=\"category\">\n"; + foreach ($categories as $category) { + $cid = $category->id; + $cname = quiz_get_category_coursename( $category ); + $seltxt = ""; + if ($cid==$selected) { + $seltxt = "selected=\"true\""; + } + if ((!$only_editable) || isteacheredit($category->course)) { + echo " <option value=\"$cid\" $seltxt>$cname</option>\n"; + } + } + echo "</select>\n"; +} + +function quiz_get_category_coursename($category) { +/// if the category is published, adds on the course +/// name + $cname=$category->name; + if ($category->publish) { + if ($catcourse=get_record("course","id",$category->id)) { + $cname .= " ($catcourse->shortname) "; + } + } + return $cname; +} + +function quiz_get_all_question_grades($questionlist, $quizid) { +// Given a list of question IDs, finds grades or invents them to +// create an array of matching grades + + if (empty($questionlist)) { + return array(); + } + + $questions = quiz_get_question_grades($quizid, $questionlist); + + $list = explode(",", $questionlist); + $grades = array(); + + foreach ($list as $qid) { + if (isset($questions[$qid])) { + $grades[$qid] = $questions[$qid]->grade; + } else { + $grades[$qid] = 1; + } + } + return $grades; +} + +function quiz_gradesmenu_options($defaultgrade) { +// Especially for multianswer questions it is often +// desirable to have the grade of the question in a quiz +// larger than the earlier maximum of 10 points. +// This function makes quiz question list grade selector drop-down +// have the maximum grade option set to the highest value between 10 +// and the defaultgrade of the question. + + if ($defaultgrade && $defaultgrade>10) { + $maxgrade = $defaultgrade; + } else { + $maxgrade = 10; + } + + unset($gradesmenu); + for ($i=$maxgrade ; $i>=0 ; --$i) { + $gradesmenu[$i] = $i; + } + return $gradesmenu; +} + +function quiz_print_question_list($questionlist, $grades) { +// Prints a list of quiz questions in a small layout form with knobs +// $questionlist is comma-separated list +// $grades is an array of corresponding grades + + global $THEME; + + if (!$questionlist) { + echo "<p align=\"center\">"; + print_string("noquestions", "quiz"); + echo "</p>"; + return; + } + + $order = explode(",", $questionlist); + + if (!$questions = get_list_of_questions($questionlist)) { + echo "<p align=\"center\">"; + print_string("noquestions", "quiz"); + echo "</p>"; + return; + + } + + $strorder = get_string("order"); + $strquestionname = get_string("questionname", "quiz"); + $strgrade = get_string("grade"); + $strdelete = get_string("delete"); + $stredit = get_string("edit"); + $strmoveup = get_string("moveup"); + $strmovedown = get_string("movedown"); + $strsavegrades = get_string("savegrades", "quiz"); + $strtype = get_string("type", "quiz"); + $strpreview = get_string("preview", "quiz"); + + $count = 0; + $sumgrade = 0; + $total = count($order); + echo "<form method=\"post\" action=\"edit.php\">"; + echo "<table border=\"0\" cellpadding=\"5\" cellspacing=\"2\" width=\"100%\">\n"; + echo "<tr><th width=\"*\" colspan=\"3\" nowrap=\"nowrap\">$strorder</th><th align=\"left\" width=\"100%\" nowrap=\"nowrap\">$strquestionname</th><th width=\"*\" nowrap=\"nowrap\">$strtype</th><th width=\"*\" nowrap=\"nowrap\">$strgrade</th><th width=\"*\" nowrap=\"nowrap\">$stredit</th></tr>\n"; + foreach ($order as $qnum) { + if (empty($questions[$qnum])) { + continue; + } + $question = $questions[$qnum]; + $canedit = isteacheredit($question->course); + $count++; + echo "<tr bgcolor=\"$THEME->cellcontent\">"; + echo "<td>$count</td>"; + echo "<td>"; + if ($count != 1) { + echo "<a title=\"$strmoveup\" href=\"edit.php?up=$qnum\"><img + src=\"../../pix/t/up.gif\" border=\"0\"></a>"; + } + echo "</td>"; + echo "<td>"; + if ($count != $total) { + echo "<a title=\"$strmovedown\" href=\"edit.php?down=$qnum\"><img + src=\"../../pix/t/down.gif\" border=\"0\"></a>"; + } + echo "</td>"; + echo "<td>$question->name</td>"; + echo "<td align=\"center\">"; + quiz_print_question_icon($question, $canedit); + echo "</td>"; + echo "<td>"; + if ($question->qtype == DESCRIPTION) { + echo "<input type=\"hidden\" name=\"q$qnum\" value=\"0\" /> \n"; + } else { + choose_from_menu(quiz_gradesmenu_options($question->defaultgrade), + "q$qnum", (string)$grades[$qnum], ""); + } + echo "<td>"; + echo "<a title=\"$strdelete\" href=\"edit.php?delete=$qnum\"><img + src=\"../../pix/t/delete.gif\" border=\"0\"></a>&nbsp;"; + echo "<a title=\"$strpreview\" href=\"#\" onClick=\"openpopup('/mod/quiz/preview.php?id=$qnum','$strpreview','scrollbars=yes,resizable=yes,width=700,height=480', false)\"><img + src=\"../../pix/i/search.gif\" border=\"0\"></a>&nbsp;"; + + if ($canedit) { + echo "<a title=\"$stredit\" href=\"question.php?id=$qnum\"><img + src=\"../../pix/t/edit.gif\" border=\"0\"></a>\n"; + } + echo "</td>"; + + $sumgrade += $grades[$qnum]; + } + echo "<tr><td colspan=5 align=\"right\">\n"; + echo "<input type=\"submit\" value=\"$strsavegrades:\" />\n"; + echo "<input type=\"hidden\" name=\"setgrades\" value=\"save\" />\n"; + echo "<td align=\"left\" bgcolor=\"$THEME->cellcontent\">\n"; + echo "<b>$sumgrade</b>"; + echo "</td><td>\n</td></tr>\n"; + echo "</table>\n"; + echo "</form>\n"; + + return $sumgrade; +} + + +function quiz_print_cat_question_list($categoryid, $quizselected=true) { +// Prints a form to choose categories + + global $THEME, $QUIZ_QUESTION_TYPE; + + $strcategory = get_string("category", "quiz"); + $strquestion = get_string("question", "quiz"); + $straddquestions = get_string("addquestions", "quiz"); + $strimportquestions = get_string("importquestions", "quiz"); + $strexportquestions = get_string("exportquestions", "quiz"); + $strnoquestions = get_string("noquestions", "quiz"); + $strselect = get_string("select", "quiz"); + $strselectall = get_string("selectall", "quiz"); + $strcreatenewquestion = get_string("createnewquestion", "quiz"); + $strquestionname = get_string("questionname", "quiz"); + $strdelete = get_string("delete"); + $stredit = get_string("edit"); + $straddselectedtoquiz = get_string("addselectedtoquiz", "quiz"); + $strtype = get_string("type", "quiz"); + $strcreatemultiple = get_string("createmultiple", "quiz"); + $strpreview = get_string("preview","quiz"); + + if (!$categoryid) { + echo "<p align=\"center\"><b>"; + print_string("selectcategoryabove", "quiz"); + echo "</b></p>"; + if ($quizselected) { + echo "<p>"; + print_string("addingquestions", "quiz"); + echo "</p>"; + } + return; + } + + if (!$category = get_record("quiz_categories", "id", "$categoryid")) { + notify("Category not found!"); + return; + } + echo "<center>"; + echo format_text($category->info, FORMAT_MOODLE); + + echo '<table><tr>'; + + // check if editing of this category is allowed + if (isteacheredit($category->course)) { + echo "<td valign=\"top\"><b>$strcreatenewquestion:</b></td>"; + echo '<td valign="top" align="right">'; + popup_form ("question.php?category=$category->id&qtype=", $QUIZ_QUESTION_TYPE, "addquestion", + "", "choose", "", "", false, "self"); + echo '<td width="10" valign="top" align="right">'; + helpbutton("questiontypes", $strcreatenewquestion, "quiz"); + echo '</td></tr>'; + + echo '<tr><td colspan="3" align="right">'; + echo '<form method="get" action="import.php">'; + echo "<input type=\"hidden\" name=\"category\" value=\"$category->id\" />"; + echo "<input type=\"submit\" value=\"$strimportquestions\" />"; + helpbutton("import", $strimportquestions, "quiz"); + echo '</form>'; + echo '</td></tr>'; + } + else { + echo '<tr><td>'; + print_string("publishedit","quiz"); + echo '</td></tr>'; + } + + echo '<tr><td colspan="3" align="right">'; + echo '<form method="get" action="export.php">'; + echo "<input type=\"hidden\" name=\"category\" value=\"$category->id\" />"; + echo "<input type=\"submit\" value=\"$strexportquestions\" />"; + helpbutton("export", $strexportquestions, "quiz"); + echo '</form>'; + echo '</td></tr>'; + + if (isteacheredit($category->course)) { + echo '<tr><td colspan="3" align="right">'; + echo '<form method="get" action="multiple.php">'; + echo "<input type=\"hidden\" name=\"category\" value=\"$category->id\" />"; + echo "<input type=\"submit\" value=\"$strcreatemultiple\" />"; + helpbutton("createmultiple", $strcreatemultiple, "quiz"); + echo '</form>'; + echo '</td></tr>'; + } + + echo '</table>'; + + echo '</center>'; + + if (!$questions = get_records("quiz_questions", "category", $category->id, "qtype ASC")) { + echo "<p align=\"center\">"; + print_string("noquestions", "quiz"); + echo "</p>"; + return; + } + + $canedit = isteacheredit($category->course); + + echo "<form method=\"post\" action=\"edit.php\">"; + echo "<table border=\"0\" cellpadding=\"5\" cellspacing=\"2\" width=\"100%\">"; + echo "<tr>"; + if ($quizselected) { + echo "<th width=\"*\" nowrap=\"nowrap\">$strselect</th>"; + } + echo "<th width=\"100%\" align=\"left\" nowrap=\"nowrap\">$strquestionname</th><th width=\"*\" nowrap=\"nowrap\">$strtype</th>"; + if ($canedit) { + echo "<th width=\"*\" nowrap=\"nowrap\">$stredit</th>"; + } + echo "</tr>\n"; + foreach ($questions as $question) { + echo "<tr bgcolor=\"$THEME->cellcontent\">\n"; + if ($quizselected) { + echo "<td align=\"center\">"; + echo "<input type=\"checkbox\" name=\"q$question->id\" value=\"1\" />\n"; + echo "</td>"; + } + echo "<td>".$question->name."</td>\n"; + echo "<td align=\"center\">\n"; + quiz_print_question_icon($question, $canedit); + echo "</td>\n"; + if ($canedit) { + echo "<td>\n"; + echo "<a title=\"$strdelete\" href=\"question.php?id=$question->id&delete=$question->id\">\n<img + src=\"../../pix/t/delete.gif\" border=0></a>&nbsp;"; + echo "<a title=\"$strpreview\" href=\"#\" onClick=\"openpopup('/mod/quiz/preview.php?id=$question->id','$strpreview','scrollbars=yes,resizable=yes,width=700,height=480', false)\"><img + src=\"../../pix/i/search.gif\" border=\"0\"></a>&nbsp;"; + echo "<a title=\"$stredit\" href=\"question.php?id=$question->id\"><img + src=\"../../pix/t/edit.gif\" border=0></a>"; + echo "</td>\n";// deleted </tr> jm + } + echo "</tr>\n"; + } + if ($quizselected) { + echo "<tr>\n<td colspan=\"3\">"; + echo "<input type=\"submit\" name=\"add\" value=\"<< $straddselectedtoquiz\" />\n"; + //echo "<input type=submit name=\"delete\" value=\"XX Delete selected\">"; + echo "<input type=\"button\" onclick=\"checkall()\" value=\"$strselectall\" />\n"; + echo "</td></tr>"; + } + echo "</table>\n"; + echo "</form>\n"; +} + + +function quiz_start_attempt($quizid, $userid, $numattempt) { + $attempt->quiz = $quizid; + $attempt->userid = $userid; + $attempt->attempt = $numattempt; + $attempt->timestart = time(); + $attempt->timefinish = 0; + $attempt->timemodified = time(); + $attempt->id = insert_record("quiz_attempts", $attempt); + return $attempt; +} + +function quiz_get_user_attempt_unfinished($quizid, $userid) { +// Returns an object containing an unfinished attempt (if there is one) + return get_record("quiz_attempts", "quiz", $quizid, "userid", $userid, "timefinish", 0); +} + +function quiz_get_user_attempts($quizid, $userid) { +// Returns a list of all attempts by a user + return get_records_select("quiz_attempts", "quiz = '$quizid' AND userid = '$userid' AND timefinish > 0", + "attempt ASC"); +} + + +function quiz_get_user_attempts_string($quiz, $attempts, $bestgrade) { +/// Returns a simple little comma-separated list of all attempts, +/// with each grade linked to the feedback report and with the best grade highlighted + + $bestgrade = format_float($bestgrade); + foreach ($attempts as $attempt) { + $attemptgrade = format_float(($attempt->sumgrades / $quiz->sumgrades) * $quiz->grade); + if ($attemptgrade == $bestgrade) { + $userattempts[] = "<span class=\"highlight\"><a href=\"review.php?q=$quiz->id&attempt=$attempt->id\">$attemptgrade</a></span>"; + } else { + $userattempts[] = "<a href=\"review.php?q=$quiz->id&attempt=$attempt->id\">$attemptgrade</a>"; + } + } + return implode(",", $userattempts); +} + +function quiz_get_best_grade($quizid, $userid) { +/// Get the best current grade for a particular user in a quiz + if (!$grade = get_record("quiz_grades", "quiz", $quizid, "userid", $userid)) { + return ""; + } + + return (round($grade->grade,0)); +} + +function quiz_save_best_grade($quiz, $userid) { +/// Calculates the best grade out of all attempts at a quiz for a user, +/// and then saves that grade in the quiz_grades table. + + if (!$attempts = quiz_get_user_attempts($quiz->id, $userid)) { + notify("Could not find any user attempts"); + return false; + } + + $bestgrade = quiz_calculate_best_grade($quiz, $attempts); + $bestgrade = (($bestgrade / $quiz->sumgrades) * $quiz->grade); + + if ($grade = get_record("quiz_grades", "quiz", $quiz->id, "userid", $userid)) { + $grade->grade = round($bestgrade, 2); + $grade->timemodified = time(); + if (!update_record("quiz_grades", $grade)) { + notify("Could not update best grade"); + return false; + } + } else { + $grade->quiz = $quiz->id; + $grade->userid = $userid; + $grade->grade = round($bestgrade, 2); + $grade->timemodified = time(); + if (!insert_record("quiz_grades", $grade)) { + notify("Could not insert new best grade"); + return false; + } + } + return true; +} + + +function quiz_calculate_best_grade($quiz, $attempts) { +/// Calculate the best grade for a quiz given a number of attempts by a particular user. + + switch ($quiz->grademethod) { + + case ATTEMPTFIRST: + foreach ($attempts as $attempt) { + return $attempt->sumgrades; + } + break; + + case ATTEMPTLAST: + foreach ($attempts as $attempt) { + $final = $attempt->sumgrades; + } + return $final; + + case GRADEAVERAGE: + $sum = 0; + $count = 0; + foreach ($attempts as $attempt) { + $sum += $attempt->sumgrades; + $count++; + } + return (float)$sum/$count; + + default: + case GRADEHIGHEST: + $max = 0; + foreach ($attempts as $attempt) { + if ($attempt->sumgrades > $max) { + $max = $attempt->sumgrades; + } + } + return $max; + } +} + + +function quiz_calculate_best_attempt($quiz, $attempts) { +/// Return the attempt with the best grade for a quiz + + switch ($quiz->grademethod) { + + case ATTEMPTFIRST: + foreach ($attempts as $attempt) { + return $attempt; + } + break; + + case GRADEAVERAGE: // need to do something with it :-) + case ATTEMPTLAST: + foreach ($attempts as $attempt) { + $final = $attempt; + } + return $final; + + default: + case GRADEHIGHEST: + $max = -1; + foreach ($attempts as $attempt) { + if ($attempt->sumgrades > $max) { + $max = $attempt->sumgrades; + $maxattempt = $attempt; + } + } + return $maxattempt; + } +} + + +function quiz_save_attempt($quiz, $questions, $result, $attemptnum) { +/// Given a quiz, a list of attempted questions and a total grade +/// this function saves EVERYTHING so it can be reconstructed later +/// if necessary. + + global $USER; + global $QUIZ_QTYPES; + + // First find the attempt in the database (start of attempt) + + if (!$attempt = quiz_get_user_attempt_unfinished($quiz->id, $USER->id)) { + notify("Trying to save an attempt that was not started!"); + return false; + } + + // Not usually necessary, but there's some sort of very rare glitch + // I've seen where the number wasn't already the same. In these cases + // We upgrade the database to match the attemptnum we calculated + $attempt->attempt = $attemptnum; + + // Now let's complete this record and save it + + $attempt->sumgrades = $result->sumgrades; + $attempt->timefinish = time(); + $attempt->timemodified = time(); + + if (! update_record("quiz_attempts", $attempt)) { + notify("Error while saving attempt"); + return false; + } + + // Now let's save all the questions for this attempt + + foreach ($questions as $question) { + $response->attempt = $attempt->id; + $response->grade = $result->details[$question->id]->grade; + $response->question = $question->id; + + if (!empty($question->response)) { + $response->answer = $QUIZ_QTYPES[$question->qtype] + ->convert_to_response_answer_field($question->response); + + /////////////////////////////////////////// + // WORKAROUND for question type RANDOM: + /////////////////////////////////////////// + if ($question->qtype == RANDOM and + ereg('^random([0-9]+)-(.*)$', $response->answer, $afields)) { + $response->answer = $afields[1]; + if (!insert_record("quiz_responses", $response)) { + notify("Error while saving response"); + return false; + } + $response->question = $response->answer; + $response->answer = $afields[2]; + } /// End of WORKAROUND ////////////////////// + + } else { + $response->answer = ""; + } + if (!insert_record("quiz_responses", $response)) { + notify("Error while saving response"); + return false; + } + } + return $attempt; +} + +function quiz_extract_correctanswers($answers, $nameprefix) { +/// Convinience function that is used by some single-response +/// question-types for determining correct answers. + + $bestanswerfraction = 0.0; + $correctanswers = array(); + foreach ($answers as $answer) { + if ($answer->fraction > $bestanswerfraction) { + $correctanswers = array($nameprefix.$answer->id => $answer); + $bestanswerfraction = $answer->fraction; + } else if ($answer->fraction == $bestanswerfraction) { + $correctanswers[$nameprefix.$answer->id] = $answer; + } + } + return $correctanswers; +} + +function quiz_grade_responses($quiz, $questions) { +/// Given a list of questions (including ->response[] and ->maxgrade +/// on each question) this function does all the hard work of calculating the +/// score for each question, as well as a total grade for +/// for the whole quiz. It returns everything in a structure +/// that lookas like this +/// ->sumgrades (sum of all grades for all questions) +/// ->grade (final grade result for the whole quiz) +/// ->percentage (Percentage of the max grade achieved) +/// ->details[] +/// The array ->details[] is indexed like the $questions argument +/// and contains scoring information per question. Each element has +/// this structure: +/// []->grade (Grade awarded on the specifik question) +/// []->answers[] (result answer records for the question response(s)) +/// []->correctanswers[] (answer records if question response(s) had been correct) +/// The array ->answers[] is indexed like ->respoonse[] on its corresponding +/// element in $questions. It is the case for ->correctanswers[] when +/// there can be multiple responses per question but if there can be only one +/// response per question then all possible correctanswers will be +/// represented, indexed like the response index concatinated with the ->id +/// of its answer record. + + global $QUIZ_QTYPES; + + if (!$questions) { + error("No questions!"); + } + + $result->sumgrades = 0.0; + foreach ($questions as $qid => $question) { + + $resultdetails = $QUIZ_QTYPES[$question->qtype]->grade_response + ($question, quiz_qtype_nameprefix($question)); + + // Negative grades will not do: + if (((float)($resultdetails->grade)) <= 0.0) { + $resultdetails->grade = 0.0; + + // Neither will extra credit: + } else if (((float)($resultdetails->grade)) >= 1.0) { + $resultdetails->grade = $question->maxgrade; + + } else { + $resultdetails->grade *= $question->maxgrade; + } + + // if time limit is enabled and exceeded, return zero grades + if ($quiz->timelimit > 0) { + if (($quiz->timelimit + 60) <= $quiz->timesincestart) { + $resultdetails->grade = 0; + } + } + + $result->sumgrades += $resultdetails->grade; + $resultdetails->grade = round($resultdetails->grade, 2); + $result->details[$qid] = $resultdetails; + } + + $fraction = (float)($result->sumgrades / $quiz->sumgrades); + $result->percentage = format_float($fraction * 100.0); + $result->grade = format_float($fraction * $quiz->grade); + $result->sumgrades = round($result->sumgrades, 2); + + return $result; +} function quiz_get_recent_mod_activity(&$activities, &$index, $sincetime, $courseid, $quiz="0", $user="", $groupid="") { // Returns all quizzes since a given time. If quiz is specified then @@ -414,8 +1760,6 @@ function quiz_get_recent_mod_activity(&$activities, &$index, $sincetime, $course foreach ($quizzes as $quiz) { if (empty($groupid) || ismember($groupid, $quiz->userid)) { - $tmpactivity = new Object; - $tmpactivity->type = "quiz"; $tmpactivity->defaultindex = $index; $tmpactivity->instance = $quiz->quiz; @@ -445,32 +1789,32 @@ function quiz_get_recent_mod_activity(&$activities, &$index, $sincetime, $course function quiz_print_recent_mod_activity($activity, $course, $detail=false) { - global $CFG; + global $CFG, $THEME; echo '<table border="0" cellpadding="3" cellspacing="0">'; - echo "<tr><td class=\"forumpostpicture\" width=\"35\" valign=\"top\">"; + echo "<tr><td bgcolor=\"$THEME->cellcontent2\" class=\"forumpostpicture\" width=\"35\" valign=\"top\">"; print_user_picture($activity->user->userid, $course, $activity->user->picture); - echo "</td><td width=\"100%\"><font size=\"2\">"; + echo "</td><td width=\"100%\"><font size=2>"; if ($detail) { echo "<img src=\"$CFG->modpixpath/$activity->type/icon.gif\" ". - "height=\"16\" width=\"16\" alt=\"$activity->type\" /> "; + "height=16 width=16 alt=\"$activity->type\"> "; echo "<a href=\"$CFG->wwwroot/mod/quiz/view.php?id=" . $activity->instance . "\">" - . format_string($activity->name,true) . "</a> - "; + . $activity->name . "</a> - "; } - if (isteacher($course)) { + if (isteacher($USER)) { $grades = "(" . $activity->content->sumgrades . " / " . $activity->content->maxgrade . ") "; echo "<a href=\"$CFG->wwwroot/mod/quiz/review.php?q=" - . $activity->instance . "&amp;attempt=" + . $activity->instance . "&attempt=" . $activity->content->attemptid . "\">" . $grades . "</a> "; - echo get_string("attempt", "quiz") . " - " . $activity->content->attempt . "<br />"; + echo get_string("attempt", "quiz") . " - " . $activity->content->attempt . "<br>"; } echo "<a href=\"$CFG->wwwroot/user/view.php?id=" - . $activity->user->userid . "&amp;course=$course\">" + . $activity->user->userid . "&course=$course\">" . $activity->user->fullname . "</a> "; echo " - " . userdate($activity->timestamp); @@ -481,4 +1825,163 @@ function quiz_print_recent_mod_activity($activity, $course, $detail=false) { return; } +// this function creates default export filename +function default_export_filename($course,$category) { + //Take off some characters in the filename !! + $takeoff = array(" ", ":", "/", "\\", "|"); + $export_word = str_replace($takeoff,"_",strtolower(get_string("exportfilename","quiz"))); + //If non-translated, use "export" + if (substr($export_word,0,1) == "[") { + $export_word= "export"; + } + + //Calculate the date format string + $export_date_format = str_replace(" ","_",get_string("exportnameformat","quiz")); + //If non-translated, use "%Y%m%d-%H%M" + if (substr($export_date_format,0,1) == "[") { + $export_date_format = "%%Y%%m%%d-%%H%%M"; + } + + //Calculate the shortname + $export_shortname = clean_filename($course->shortname); + if (empty($export_shortname) or $export_shortname == '_' ) { + $export_shortname = $course->id; + } + + //Calculate the category name + $export_categoryname = clean_filename($category->name); + + //Calculate the final export filename + //The export word + $export_name = $export_word."-"; + //The shortname + $export_name .= strtolower($export_shortname)."-"; + //The category name + $export_name .= strtolower($export_categoryname)."-"; + //The date format + $export_name .= userdate(time(),$export_date_format,99,false); + //The extension - no extension, supplied by format + // $export_name .= ".txt"; + + return $export_name; +} + +// function to read all questions for category into big array +// added by Howard Miller June 2004 +function get_questions_category( $category ) { + + // questions will be added to an array + $qresults = array(); + + // get the list of questions for the category + $questions = get_records("quiz_questions","category",$category->id); + + // iterate through questions, getting stuff we need + foreach($questions as $question) { + $new_question = get_question_data( $question ); + $qresults[] = $new_question; + } + + return $qresults; +} + +// function to read single question, parameter is object view of +// quiz_categories record, results is a combined object +// defined as follows... +// ->id quiz_questions id +// ->category category +// ->name q name +// ->questiontext +// ->image +// ->qtype see defines at the top of this file +// ->stamp not too sure +// ->version not sure +// ----SHORTANSWER +// ->usecase +// ->answers array of answers +// ----TRUEFALSE +// ->trueanswer truefalse answer +// ->falseanswer truefalse answer +// ----MULTICHOICE +// ->layout +// ->single many or just one correct answer +// ->answers array of answer objects +// ----NUMERIC +// ->min minimum answer span +// ->max maximum answer span +// ->answer single answer +// ----MATCH +// ->subquestions array of sub questions +// ---->questiontext +// ---->answertext +function get_question_data( $question ) { + // what to do next depends of question type (qtype) + switch ($question->qtype) { + case SHORTANSWER: + $shortanswer = get_record("quiz_shortanswer","question",$question->id); + $question->usecase = $shortanswer->usecase; + $question->answers = get_exp_answers( $question->id ); + break; + case TRUEFALSE: + if (!$truefalse = get_record("quiz_truefalse","question",$question->id)) { + error( "quiz_truefalse record $question->id not found" ); + } + $question->trueanswer = get_exp_answer( $truefalse->trueanswer ); + $question->falseanswer = get_exp_answer( $truefalse->falseanswer ); + break; + case MULTICHOICE: + if (!$multichoice = get_record("quiz_multichoice","question",$question->id)) { + error( "quiz_multichoice $question->id not found" ); + } + $question->layout = $multichoice->layout; + $question->single = $multichoice->single; + $question->answers = get_exp_answers( $multichoice->question ); + break; + case NUMERICAL: + if (!$numeric = get_record("quiz_numerical","question",$question->id)) { + error( "quiz_numerical $question->id not found" ); + } + $question->min = $numeric->min; + $question->max = $numeric->max; + $question->answer = get_exp_answer( $numeric->answer ); + break; + case MATCH: + if (!$subquestions = get_records("quiz_match_sub","question",$question->id)) { + error( "quiz_match_sub $question->id not found" ); + } + $question->subquestions = $subquestions; + break; + case DESCRIPTION: + // nothing to do + break; + case MULTIANSWER: + // nothing to do + break; + default: + notify("No handler for question type $question->qtype in get_question"); + } + return $question; +} + +// function to return single answer +// ->id answer id +// ->question question number +// ->answer +// ->fraction +// ->feedback +function get_exp_answer( $id ) { + if (!$answer = get_record("quiz_answers","id",$id )) { + error( "quiz_answers record $id not found" ); + } + return $answer; +} + +// function to return array of answers for export +function get_exp_answers( $question_num ) { + if (!$answers = get_records("quiz_answers","question",$question_num)) { + error( "quiz_answers question $question_num not found" ); + } + return $answers; +} + ?> diff --git a/mod/quiz/locallib.php b/mod/quiz/locallib.php deleted file mode 100644 index 6c127537642..00000000000 --- a/mod/quiz/locallib.php +++ /dev/null @@ -1,2016 +0,0 @@ -<?php // $Id$ - -include_once('lib.php'); - -/// Library of function for module quiz - -/// CONSTANTS /////////////////////////////////////////////////////////////////// - -define("GRADEHIGHEST", "1"); -define("GRADEAVERAGE", "2"); -define("ATTEMPTFIRST", "3"); -define("ATTEMPTLAST", "4"); -$QUIZ_GRADE_METHOD = array ( GRADEHIGHEST => get_string("gradehighest", "quiz"), - GRADEAVERAGE => get_string("gradeaverage", "quiz"), - ATTEMPTFIRST => get_string("attemptfirst", "quiz"), - ATTEMPTLAST => get_string("attemptlast", "quiz")); - -define("SHORTANSWER", "1"); -define("TRUEFALSE", "2"); -define("MULTICHOICE", "3"); -define("RANDOM", "4"); -define("MATCH", "5"); -define("RANDOMSAMATCH", "6"); -define("DESCRIPTION", "7"); -define("NUMERICAL", "8"); -define("MULTIANSWER", "9"); -define("CALCULATED", "10"); - -// The $QUIZ_QUESTION_TYPE array holds the names of all the question types that the user should -// be able to create directly. Some internal question types like random questions are excluded. -// The complete list of question types can be found in $QUIZ_QTYPES. -$QUIZ_QUESTION_TYPE = array ( MULTICHOICE => get_string("multichoice", "quiz"), - TRUEFALSE => get_string("truefalse", "quiz"), - SHORTANSWER => get_string("shortanswer", "quiz"), - NUMERICAL => get_string("numerical", "quiz"), - CALCULATED => get_string("calculated", "quiz"), - MATCH => get_string("match", "quiz"), - DESCRIPTION => get_string("description", "quiz"), - RANDOMSAMATCH => get_string("randomsamatch", "quiz"), - MULTIANSWER => get_string("multianswer", "quiz") - ); - - -define("QUIZ_PICTURE_MAX_HEIGHT", "600"); // Not currently implemented -define("QUIZ_PICTURE_MAX_WIDTH", "600"); // Not currently implemented - -define("QUIZ_MAX_NUMBER_ANSWERS", "10"); - -define("QUIZ_CATEGORIES_SORTORDER", "999"); - -define('QUIZ_REVIEW_AFTER', 1); -define('QUIZ_REVIEW_BEFORE', 2); - -$QUIZ_QTYPES= array(); - -/// QUIZ_QTYPES INITIATION ////////////////// -class quiz_default_questiontype { - - function name() { - return 'default'; - } - - function uses_quizfile($question, $relativefilepath) { - // The default does only check whether the file is used as image: - return $question->image == $relativefilepath; - } - - function save_question_options($question) { - /// Given some question info and some data about the the answers - /// this function parses, organises and saves the question - /// It is used by question.php through ->save_question when - /// saving new data from a form, and also by import.php when - /// importing questions - /// - /// If this is an update, and old answers already exist, then - /// these are overwritten using an update(). To do this, it - /// it is assumed that the IDs in quiz_answers are in the same - /// sort order as the new answers being saved. This should always - /// be true, but it's something to keep in mind if fiddling with - /// question.php - /// - /// Returns $result->error or $result->noticeyesno or $result->notice - - /// This default implementation must be overridden: - - $result->error = "Unsupported question type ($question->qtype)!"; - return $result; - } - - function save_question($question, $form, $course) { - // This default implementation is suitable for most - // question types. - - // First, save the basic question itself - - $question->name = trim($form->name); - $question->questiontext = trim($form->questiontext); - $question->questiontextformat = $form->questiontextformat; - - if (empty($form->image)) { - $question->image = ""; - } else { - $question->image = $form->image; - } - - if (empty($question->name)) { - $question->name = strip_tags($question->questiontext); - if (empty($question->name)) { - $question->name = '-'; - } - } - - if (isset($form->defaultgrade)) { - $question->defaultgrade = $form->defaultgrade; - } - - if (!empty($question->id)) { // Question already exists - $question->version ++; // Update version number of question - if (!update_record("quiz_questions", $question)) { - error("Could not update question!"); - } - } else { // Question is a new one - $question->stamp = make_unique_id_code(); // Set the unique code (not to be changed) - $question->version = 1; - if (!$question->id = insert_record("quiz_questions", $question)) { - error("Could not insert new question!"); - } - } - - // Now to save all the answers and type-specific options - - $form->id = $question->id; - $form->qtype = $question->qtype; - $form->category = $question->category; - - $result = $this->save_question_options($form); - - if (!empty($result->error)) { - error($result->error); - } - - if (!empty($result->notice)) { - notice($result->notice, "question.php?id=$question->id"); - } - - if (!empty($result->noticeyesno)) { - notice_yesno($result->noticeyesno, "question.php?id=$question->id", "edit.php"); - print_footer($course); - exit; - } - - return $question; - } - - /// Convenience function that is used within the question types only - function extract_response_id($responsekey) { - if (ereg('[0-9]'.$this->name().'([0-9]+)', $responsekey, $regs)) { - return $regs[1]; - } else { - return false; - } - } - - - function wrapped_questions($question) { - /// Overridden only by question types whose questions can - /// wrap other questions. Two question types that do this - /// are RANDOMSAMATCH and RANDOM - - /// If there are wrapped questions, then this method returns - /// comma separated list of them... - - return false; - } - - function convert_to_response_answer_field($questionresponse) { - /// This function is very much the inverse of extract_response - /// This function and extract_response, should be - /// obsolete as soon as we get a better response storage - /// Right now they are a bridge between a consistent - /// response model and the old field answer in quiz_responses - - /// This is the default implemention... - return implode(',', $questionresponse); - } - - function get_answers($question) { - // Returns the answers for the specified question - - // The default behaviour that signals that something is wrong - return false; - } - - function create_response($question, $nameprefix, $questionsinuse) { - /// This rather smart solution works for most cases: - $rawresponse->question = $question->id; - $rawresponse->answer = ''; - return $this->extract_response($rawresponse, $nameprefix); - } - - function extract_response($rawresponse, $nameprefix) { - /// This function is very much the inverse of convert_to_response_answer_field - /// This function and convert_to_response_answer_field, should be - /// obsolete as soon as we get a better response storage - /// Right now they are a bridge between a consistent - /// response model and the old field answer in quiz_responses - - /// Default behaviour that works for singlton response question types - /// like SHORTANSWER, NUMERICAL and TRUEFALSE - - return array($nameprefix => $rawresponse->answer); - } - - function print_question_number_and_grading_details - ($number, $grade, $actualgrade=false, $recentlyadded=false, $questionid=0, $courseid=0) { - - /// Print question number and grade: - - global $CFG; - - static $streditquestions, $strmarks, $strrecentlyaddedquestion; - - if (!isset($streditquestions)) { - $streditquestions = get_string('editquestions', 'quiz'); - $strmarks = get_string('marks', 'quiz'); - $strrecentlyaddedquestion = get_string('recentlyaddedquestion', 'quiz'); - } - - echo '<center><b>' . $number . '</b>'; - if ($questionid and isteacher($courseid)) { - echo '<br /><font size="1">( '; - link_to_popup_window ($CFG->wwwroot.'//mod/quiz/question.php?id='.$questionid, - 'editquestion', '#'.$questionid, 450, 550, $streditquestions); - echo ')</font>'; - } - echo '</center>'; - - if (false !== $grade) { - //echo '<p align="center"><font size="1">'; - echo '<br /><center><font size="1">'; - if (false !== $actualgrade) { - echo "$strmarks: $actualgrade/$grade</font></center>"; - } else { - echo "$grade $strmarks</font></center>"; - } - } - print_spacer(1,100); - - /// Print possible recently-added information: - - if ($recentlyadded) { - echo '</td><td valign="top" align="right">'; - // Notify the user of this recently added question - echo '<font color="red">'.$strrecentlyaddedquestion.'</font>'; - echo '</td></tr><tr><td></td><td valign="top">'; - - } else { // The normal case - echo '</td><td valign="top">'; - } - } - - function print_question($currentnumber, $quiz, $question, - $readonly, $resultdetails) { - /// Note that this method must return the number of the next - /// question, making it possible not to increase the number when - /// overriding this method (as for qtype=DESCRIPTION). - - echo '<table width="100%" cellspacing="10">'; - echo '<tr><td nowrap="nowrap" width="100" valign="top">'; - - $this->print_question_number_and_grading_details - ($currentnumber, - $quiz->grade ? $question->maxgrade : false, - empty($resultdetails) ? false : $resultdetails->grade, - isset($question->recentlyadded) ? $question->recentlyadded : false, - $question->id, $quiz->course); - - $this->print_question_formulation_and_controls( - $question, $quiz, $readonly, - empty($resultdetails) ? false : $resultdetails->answers, - empty($resultdetails) ? false : $resultdetails->correctanswers, - quiz_qtype_nameprefix($question)); - - echo "</td></tr></table>"; - return $currentnumber + 1; - } - - function print_question_formulation_and_controls($question, - $quiz, $readonly, $answers, $correctanswers, $nameprefix) { - /// This default implementation must be overridden by all - /// question type implemenations, unless the default - /// implementation of print_question has been overridden... - - notify('Error: Question formulation and input controls has not' - .' been implemented for question type '.$this->name()); - } - - function actual_number_of_questions($question) { - /// Used for the feature number-of-questions-per-page - /// to determine the actual number of questions wrapped - /// by this question. The default is ONE! - return 1; - } - - function grade_response($question, $nameprefix) { - // Analyzes $question->response[] and determines the result - // The result is to be returned in this structure: - // ->grade (The fraction of maxgrade awarded on the question) - // ->answers (result answer records) - // ->correctanswers (potential answer records for best ->response[]) - - error('grade_response has not been implemented for question type ' - .$this->name()); - } - - function get_config_options() { - // Returns an array of objects describing the options for the question type - // to be included on the quiz module admin page - // - // Configuration options can be included by setting the following fields in - // the object: - // ->name (The name of the option within this question type - // - the full option name will be constructed as - // "quiz_{$this->name()}_$name", the human readable name - // will be displayed with get_string($name, 'quiz')) - // ->code (The code to display the form element, help button, etc. - // i.e. the content for the central table cell. Be sure - // to name the element "quiz_{$this->name()}_$name" and - // set the value to $CFG->{"quiz_{$this->name()}_$name"}) - // ->help (Name of the string from the quiz module language file - // to be used for the help message in the third column of - // the table. An empty string (or the field not set) - // means to leave the box empty) - // - // Links to custom settings pages can be included by setting the following - // fields in the object: - // ->name (The name of the link text string - - // get_string($name, 'quiz') will be called) - // ->link (The filename part of the URL for the link - // - the full URL is contructed as - // "$CFG->wwwroot/mod/quiz/questiontypes/{$this->name()}/$link?sesskey=$sesskey" - // [but with the relavant calls to the s and rawurlencode - // functions] where $sesskey is the sesskey for the user) - - // No options by default - return false; - } - - function print_replacement_options($question, $course, $quizid='0') { - // This function is used near the end of the question edit forms in all questiontypes - // It prints the table of quizzes in which the question is used - // containing the checkboxes to allow the teacher to replace the old question version - - // no need to display replacement options if the question is new - if(empty($question->id)) { - return true; - } - - // get quizzes using the question (using the question_grades table) - $quizlist = array(); - if(!$grades = get_records('quiz_question_grades', 'question', $question->id)) { - $grades = array(); - } - foreach($grades as $grade) { - $quizlist[$grade->quiz] = $grade->quiz; - } - $quizlist = implode(',', $quizlist); - if(empty($quizlist) or !$quizzes = get_records_list('quiz', 'id', $quizlist)) { - $quizzes = array(); - } - - // do the printing - if(count($quizzes) > 0) { - // print the table - $strquizname = get_string('modulename', 'quiz'); - $strdoreplace = get_string('replace', 'quiz'); - $straffectedstudents = get_string('affectedstudents', 'quiz', $course->students); - echo "<tr valign=\"top\">\n"; - echo "<td align=\"right\"><b>".get_string("replacementoptions", "quiz").":</b></td>\n"; - echo "<td align=\"left\">\n"; - echo "<table cellpadding=\"5\" align=\"left\" class=\"generalbox\" width=\"100%\">\n"; - echo "<tr>\n"; - echo "<th align=\"left\" valign=\"top\" nowrap=\"nowrap\" class=\"generaltableheader c0\">$strquizname</th>\n"; - echo "<th align=\"center\" valign=\"top\" nowrap=\"nowrap\" class=\"generaltableheader c0\">$strdoreplace</th>\n"; - echo "<th align=\"left\" valign=\"top\" nowrap=\"nowrap\" class=\"generaltableheader c0\">$straffectedstudents</th>\n"; - echo "</tr>\n"; - foreach($quizzes as $quiz) { - // work out whethere it should be checked by default - $checked = ''; - if((int)$quizid === (int)$quiz->id - or empty($quiz->usercount)) { - $checked = "checked=\"checked\""; - } - - // find how many different students have already attempted this quiz - $students = array(); - if($attempts = get_records('quiz_attempts', 'quiz', $quiz->id)) { - foreach($attempts as $attempt) { - if (!isteacher($course->id, $attempt->userid) // Ignore teacher attempts - and record_exists('quiz_responses', 'attempt', $attempt->id, 'question', $question->id, 'originalquestion', 0)) { - $students[$attempt->userid] = 1; - } - } - } - $studentcount = count($students); - - $strstudents = $studentcount === 1 ? $course->student : $course->students; - echo "<tr>\n"; - echo "<td align=\"left\" class=\"generaltablecell c0\">".format_string($quiz->name)."</td>\n"; - echo "<td align=\"center\" class=\"generaltablecell c0\"><input name=\"q{$quiz->id}replace\" type=\"checkbox\" ".$checked." /></td>\n"; - echo "<td align=\"left\" class=\"generaltablecell c0\">".(($studentcount) ? $studentcount.' '.$strstudents : '-')."</td>\n"; - echo "</tr>\n"; - } - echo "</table>\n"; - } - echo "</td></tr>\n"; - } - - function print_question_form_end($question, $submitscript='') { - // This function is used at the end of the question edit forms in all questiontypes - // It prints the submit buttons and the standard hidden form fields - global $USER; - echo '<tr valign="top"> - <td colspan="2" align="center"> - <input type="submit" '.$submitscript.' value="'.get_string('savechanges').'" /> '; - if ($question->id) { - echo '<input type="submit" name="makecopy" '.$submitscript.' value="'.get_string("makecopy", "quiz").'" /> '; - } - echo '<input type="submit" name="cancel" value="'.get_string("cancel").'" /> - <input type="hidden" name="sesskey" value="'.$USER->sesskey.'" /> - <input type="hidden" name="id" value="'.$question->id.'" /> - <input type="hidden" name="qtype" value="'.$question->qtype.'" />'; - // The following hidden field indicates that the versioning code should be turned on, i.e., - // that old versions should be kept if necessary - echo '<input type="hidden" name="versioning" value="on" /> - </td></tr>'; - } - -} - -quiz_load_questiontypes(); -function quiz_load_questiontypes() { - global $QUIZ_QTYPES; - global $CFG; - - $qtypenames= get_list_of_plugins('mod/quiz/questiontypes'); - foreach($qtypenames as $qtypename) { - // Instanciates all plug-in question types - $qtypefilepath= "$CFG->dirroot/mod/quiz/questiontypes/$qtypename/questiontype.php"; - - // echo "Loading $qtypename<br/>"; // Uncomment for debugging - if (is_readable($qtypefilepath)) { - require_once($qtypefilepath); - } - } -} - - - -/// SQL FUNCTIONS //////////////////////////////////////////////////////////////////// - -function quiz_move_questions($category1, $category2) { - global $CFG; - return execute_sql("UPDATE {$CFG->prefix}quiz_questions - SET category = '$category2' - WHERE category = '$category1'", - false); -} - -function quiz_get_question_grades($quizid, $questionlist) { - global $CFG; - - return get_records_sql("SELECT question,grade - FROM {$CFG->prefix}quiz_question_grades - WHERE quiz = '$quizid' - AND question IN ($questionlist)"); -} - -function quiz_questiongrades_update($grades, $quizid) { - // this is called from edit.php to store changes to the question grades - // in the quiz_question_grades table. It does not update 'sumgrades' in the quiz table. - $existing = get_records("quiz_question_grades", "quiz", $quizid, "", "question,grade,id"); - foreach ($grades as $question => $grade) { - unset($questiongrade); - $questiongrade->quiz = $quizid; - $questiongrade->question = $question; - $questiongrade->grade = $grade; - if (isset($existing[$question])) { - if ($existing[$question]->grade != $grade) { - $questiongrade->id = $existing[$question]->id; - if (!update_record("quiz_question_grades", $questiongrade)) { - return false; - } - } - } else { - if (!insert_record("quiz_question_grades", $questiongrade)) { - return false; - } - } - } -} - -function quiz_get_grade_records($quiz) { -/// Gets all info required to display the table of quiz results -/// for report.php - global $CFG; - - return get_records_sql("SELECT qg.*, u.firstname, u.lastname, u.picture - FROM {$CFG->prefix}quiz_grades qg, - {$CFG->prefix}user u - WHERE qg.quiz = '$quiz->id' - AND qg.userid = u.id"); -} - -function quiz_get_answers($question) { -// Given a question, returns the correct answers for a given question - global $QUIZ_QTYPES; - - return $QUIZ_QTYPES[$question->qtype]->get_answers($question); -} - -function quiz_get_attempt_questions($quiz, $attempt, $attempting = false) { - /// Returns the questions of the quiz attempt in a format used for - /// grading and printing them... - /// - /// $attempting should be set to true if this function is called in - /// order to create an attempt page and false if it is called to create - /// a review page. - /// - /// On top of the ordinary persistent question fields, - /// this function also set these properties: - // - /// ->response - contains names (as keys) and values (as values) - /// for all question html-form inputs - /// ->recentlyadded - true only if the question has been added to the quiz - /// after the responses for the attempt were saved; - /// false otherwise - /// ->maxgrade - the max grade the question has on the quiz if grades - /// are used on the quiz; false otherwise - - global $QUIZ_QTYPES; - global $CFG; - - ///////////////////////// - /// Get the questions: - ///////////////////////// - if (!($questions = - get_records_list('quiz_questions', 'id', $quiz->questions))) { - notify('Error when reading questions from the database!'); - return false; - } - - //////////////////////////////////////////// - /// Determine ->maxgrade for all questions - //////////////////////////////////////////// - If (!($grades = quiz_get_question_grades($quiz->id, $quiz->questions))) { - $grades = array(); - } - foreach ($questions as $qid => $question) { - if (isset($grades[$qid])) { - $questions[$qid]->maxgrade = $grades[$qid]->grade; - } else { - $questions[$qid]->maxgrade = 0.0; - } - } - - ////////////////////////////////////////////////////////////// - /// Determine attributes ->response and ->recentlyadded (hard) - ////////////////////////////////////////////////////////////// - - /// Get all existing responses on this attempt - $rawresponses = get_records_sql(" - SELECT question, answer, attempt - FROM {$CFG->prefix}quiz_responses - WHERE attempt = '$attempt->id' "); - - /// The setting for ->recentlyadded depends on whether this is - /// a test attempt or just a review - if ($attempting) { - /// This is a test attempt so there is a need to create responses - /// in case there are none existing. - /// Further - the attribute recentlyadded is determined from - /// whether the question has a response in the previous attempt, - /// which might be used in case the attemptonlast quiz option - /// is true. - - $prevattempt = $attempt->attempt; - $prevresponses= array(); - while (--$prevattempt) { - $prevresponses = get_records_sql(" - SELECT r.question, r.answer, r.attempt, r.grade - FROM {$CFG->prefix}quiz_responses r, {$CFG->prefix}quiz_attempts a - WHERE a.quiz='$quiz->id' AND a.userid='$attempt->userid' - AND a.attempt='$prevattempt' AND r.attempt=a.id "); - if (!empty($prevresponses)) { - break; - } - } - - $questionsinuse = $quiz->questions; // used if responses must be created - foreach ($questions as $qid => $question) { - if ($questions[$qid]->recentlyadded = - $prevattempt && empty($prevresponses[$qid])) { - /* No action */ - - } else if ($prevattempt && $quiz->attemptonlast - && empty($rawresponses[$qid])) { - /// Store the previous response on this attempt! - $rawresponses[$qid] = $prevresponses[$qid]; - $rawresponses[$qid]->attempt = $attempt->id; - $rawresponses[$qid]->id = - insert_record("quiz_responses", $rawresponses[$qid]) - or error("Unable to create attemptonlast response for question $qid"); - } - - /* Extract possible response and its wrapped questions */ - if (!empty($rawresponses[$qid])) { - $questions[$qid]->response = $QUIZ_QTYPES[$question->qtype] - ->extract_response($rawresponses[$qid], - quiz_qtype_nameprefix($question)); - /// Catch any additional wrapped questions: - if ($wrapped = $QUIZ_QTYPES[$question->qtype] - ->wrapped_questions($questions[$question->id], - quiz_qtype_nameprefix($question))) { - $questionsinuse .= ",$wrapped"; - } - } - } - - /// Make sure all the questions will have responses: - foreach ($questions as $question) { - if (empty($question->response)) { - /// No response on this question - - $nameprefix = quiz_qtype_nameprefix($question); - $questions[$question->id]->response = - $QUIZ_QTYPES[$question->qtype]->create_response - ($question, $nameprefix, $questionsinuse); - - ////////////////////////////////////////////// - // Saving the newly created response before - // continuing with the quiz... - ////////////////////////////////////////////// - $responserecord->attempt = $attempt->id; - $responserecord->question = $question->id; - $responserecord->answer = $QUIZ_QTYPES[$question->qtype] - ->convert_to_response_answer_field - ($questions[$question->id]->response); - - insert_record("quiz_responses", $responserecord) - or error("Unable to create initial response for question $question->id"); - - /// Catch any additional wrapped questions: - if ($wrapped = $QUIZ_QTYPES[$question->qtype] - ->wrapped_questions($questions[$question->id], - quiz_qtype_nameprefix($question))) { - $questionsinuse .= ",$wrapped"; - } - } - } - - } else { - /// In the case of review, the recentlyadded flag is set true - /// when the question has been added after the attempt and new - /// responses are never created - - foreach ($questions as $qid => $question) { - if ($questions[$qid]->recentlyadded = empty($rawresponses[$qid])) { - /* No action */ - } else { - $questions[$qid]->response = $QUIZ_QTYPES[$question->qtype] - ->extract_response($rawresponses[$qid], - quiz_qtype_nameprefix($question)); - } - } - } - - return $questions; -} - - -function get_list_of_questions($questionlist) { -/// Returns an ordered list of questions, including course for each - - global $CFG; - - return get_records_sql("SELECT q.*,c.course - FROM {$CFG->prefix}quiz_questions q, - {$CFG->prefix}quiz_categories c - WHERE q.id in ($questionlist) - AND q.category = c.id"); -} - -////////////////////////////////////////////////////////////////////////////////////// -/// Any other quiz functions go here. Each of them must have a name that -/// starts with quiz_ - -function quiz_qtype_nameprefix($question, $prefixstart='question') { - global $QUIZ_QTYPES; - return $prefixstart.$question->id.$QUIZ_QTYPES[$question->qtype]->name(); -} -function quiz_extract_posted_id($name, $nameprefix='question') { - if (ereg("^$nameprefix([0-9]+)", $name, $regs)) { - return $regs[1]; - } else { - return false; - } -} - -function quiz_print_comment($text) { - echo "<span class=\"feedbacktext\">".format_text($text, true, false)."</span>"; -} - -function quiz_print_correctanswer($text) { - echo "<p align=\"right\"><span class=\"highlight\">$text</span></p>"; -} - -function quiz_print_question_icon($question, $editlink=true) { -// Prints a question icon - - global $QUIZ_QUESTION_TYPE; - global $QUIZ_QTYPES; - - if ($editlink) { - echo "<a href=\"question.php?id=$question->id\" title=\"" - .$QUIZ_QTYPES[$question->qtype]->name()."\">"; - } - echo '<img border="0" height="16" width="16" src="questiontypes/'; - echo $QUIZ_QTYPES[$question->qtype]->name().'/icon.gif" alt="'; - echo get_string($QUIZ_QTYPES[$question->qtype]->name(), 'quiz').'" />'; - if ($editlink) { - echo "</a>\n"; - } -} - -function quiz_print_possible_question_image($quizid, $question) { -// Includes the question image if there is one - - global $CFG; - - if ($quizid == '') { - $quizid = '0'; - } - - if ($question->image) { - echo '<img border="0" src="'; - - if (substr(strtolower($question->image), 0, 7) == 'http://') { - echo $question->image; - - } else if ($CFG->slasharguments) { // Use this method if possible for better caching - echo "$CFG->wwwroot/mod/quiz/quizfile.php/$quizid/$question->id/$question->image"; - - } else { - echo "$CFG->wwwroot/mod/quiz/quizfile.php?file=/$quizid/$question->id/$question->image"; - } - echo '" alt="" />'; - - } -} - -function quiz_navigation_javascript($link) { - return "javascript:navigate($link);"; -} - -function quiz_print_navigation_panel($questions, $questionsperpage, $navigation) { - global $QUIZ_QTYPES; - - $numberinglayout = array(); - $nextqnumber = 1; - foreach ($questions as $question) { - if ($qnumberinc = $QUIZ_QTYPES[$question->qtype] - ->actual_number_of_questions($question)) { - $numberinglayout[] = $nextqnumber; - $nextqnumber += $qnumberinc; - } - } - - if ($nextqnumber - $qnumberinc <= $questionsperpage) { - /// The total number of questions does not exceed the maximum - /// number of allowed questions per page so... - return 0; - } - /// else - Navigation menu will be printed! - - /////////////////////////////////////////////// - /// Determine the layout of the navigation menu - /////////////////////////////////////////////// - if (1 == $questionsperpage) { - /// The simple case: - $pagelinkagelayout = $pagenavigationlayout = $numberinglayout; - - } else { - /// More complicated: - $pagenavigationlayout = array(); - $pagelinkagelayout = array($currentpagestart = 1); - foreach ($numberinglayout as $questionnumber) { - if ($questionnumber - $currentpagestart >= $questionsperpage) { - $pagenavigationlayout[] = $currentpagestart - .'-'. ($questionnumber - 1); - if ($currentpagestart < $navigation - && $navigation < $questionnumber) { - // $navigation is out of sync so adjust for robustness - $navigation = $currentpagestart; - } - $pagelinkagelayout[] = $currentpagestart = $questionnumber; - } - } - $pagenavigationlayout[] = $currentpagestart .'-'. ($nextqnumber - 1); - if ($currentpagestart < $navigation) { - // $firstquestion is out of sync so adjust it for robustness... - $navigation = $currentpagestart; - } - } - - foreach ($pagelinkagelayout as $key => $link) { - if ($link < $navigation) { - $previouspagelink = $link; - } else if ($link == $navigation) { - $currentnavigationtitle = $pagenavigationlayout[$key]; - } else { - $endpagelink = $link; - if (false == isset($nextpagelink)) { - $nextpagelink = $link; - } - } - } - - /////////////////////////////////////////////// - /// Print the navigation menu - /////////////////////////////////////////////// - echo '<div class="pagingbar">'; - echo '<span class="title">'.get_string('questions', 'quiz').':</span>'; - if (isset($previouspagelink)) { - $strprev = get_string('previous'); - echo '<a href="' . quiz_navigation_javascript($previouspagelink) . '" title="'.$strprev.'">('.$strprev.')</a>'; - } - foreach ($pagelinkagelayout as $key => $link) { - if ($link != $navigation) { - echo '<a href="' . quiz_navigation_javascript($link) . '">'; - } else { - echo '<span class="thispage">'; - } - echo $pagenavigationlayout[$key]; - echo ($link != $navigation) ? '</a>' : '</span>'; - } - if (isset($nextpagelink)) { - $strnext = get_string('next'); - echo '<a href="'.quiz_navigation_javascript($nextpagelink).'" title="'.$strnext.'">('.$strnext.')</a></span>'; - } - echo '</div>'; - - //////////////////////////////////////////////// - /// Return the potentially adjusted $navigation - //////////////////////////////////////////////// - return $navigation; -} - -function quiz_print_quiz_questions($quiz, $questions, $results=NULL, - $shuffleorder=NULL, $navigation=0) { -// Prints a whole quiz on one page. - - if ($navigation < 0) { - $navigation = 0; // For robustness - } - - global $QUIZ_QTYPES; - - /// Check arguments - - if (empty($questions)) { - notify("No questions have been defined!"); - return false; - } - - if (!$shuffleorder) { - if (!empty($quiz->shufflequestions)) { // Mix everything up - $questions = swapshuffle_assoc($questions); - } else { - $shuffleorder = explode(",", $quiz->questions); // Use originally defined order - } - } - - if ($shuffleorder) { // Order has been defined, so reorder questions - $oldquestions = $questions; - $questions = array(); - foreach ($shuffleorder as $key) { - $questions[] = $oldquestions[$key]; // This loses the index key, but doesn't matter - } - } - - $strconfirmattempt = addslashes(get_string("readytosend", "quiz")); - - if (empty($quiz->grade)) { - $onsubmit = ""; - } else { - $onsubmit = "onsubmit=\"return confirm('$strconfirmattempt');\""; - } - // BEGIN EDIT - if($quiz->timelimit > 0) { - ?> - <script language="javascript" type="text/javascript"> - <!-- - document.write("<form name=\"responseform\" method=\"post\" action=\"attempt.php\" <?php print(addslashes($onsubmit));?>>\n"); - // --> - </script> - <noscript> - <center><p><strong><?php print_string("noscript","quiz"); ?></strong></p></center> - </noscript> - <?php - } else { - echo "<form name=\"responseform\" method=\"post\" action=\"attempt.php\" $onsubmit>\n"; - } - // END EDIT - echo "<input type=\"hidden\" name=\"q\" value=\"$quiz->id\" />\n"; - - if ($navigation && $quiz->questionsperpage) { - echo '<input type="hidden" id="navigation" name="navigation" value="0" />'; - $navigation = quiz_print_navigation_panel($questions, - $quiz->questionsperpage, $navigation); - } else { - $navigation = 0; - } - - $nextquestionnumber = 1; - $questionorder = array(); - - // $readonly determines if it is an attempt or an review, - // The condition used here is unfortunatelly somewhat confusing... - $readonly = !empty($results) && !isset($results->attemptbuildsonthelast) - ? ' disabled="disabled" ' : ''; - - foreach ($questions as $question) { - - if (empty($question->qtype)) { // Just for robustness - continue; - } - - $questionorder[] = $question->id; - - if (0 == $navigation - || $navigation <= $nextquestionnumber - && $nextquestionnumber - $navigation < $quiz->questionsperpage) { - if ($results && isset($results->details[$question->id])) { - $details = $results->details[$question->id]; - } else { - $details = false; - } - - echo "<br />"; - print_simple_box_start("center", "90%"); - $nextquestionnumber = $QUIZ_QTYPES[$question->qtype]->print_question - ($nextquestionnumber, $quiz, $question, $readonly, $details); - print_simple_box_end(); - } else { - $nextquestionnumber += $QUIZ_QTYPES[$question->qtype] - ->actual_number_of_questions($question); - } - } - - if ($navigation) { - quiz_print_navigation_panel($questions, $quiz->questionsperpage, - $navigation); - } - echo "<br />"; - - if (empty($readonly)) { - if (!empty($quiz->shufflequestions)) { // Things have been mixed up, so pass the question order - $shuffleorder = implode(',', $questionorder); - echo "<input type=\"hidden\" name=\"shuffleorder\" value=\"$shuffleorder\" />\n"; - } - if($quiz->timelimit > 0) { - echo "<script language=\"javascript\" type=\"text/javascript\">\n"; - echo "<!--\n"; - echo "document.write('<center><input type=\"button\" value=\"".get_string("savemyanswers", "quiz")."\" onclick=\"return send_data();\" /></center>');\n"; - echo "// -->\n"; - echo "</script>\n"; - echo "<noscript>\n"; - echo "<center><strong>".get_string("noscript","quiz")."</strong></center>\n"; - echo "</noscript>\n"; - } else { - echo "<center>\n<input type=\"submit\" value=\"".get_string("savemyanswers", "quiz")."\" />\n</center>"; - } - } - echo "</form>"; - - if ($navigation && $quiz->questionsperpage) { - echo '<script language="javascript" type="text/javascript">'; - echo "function navigate(link) { - document.responseform.navigation.value=link; - document.responseform.submit(); - } - </script>"; - } - - return true; -} - - - -function quiz_get_default_category($courseid) { -/// Returns the current category - - if ($categories = get_records_select("quiz_categories", "course = '$courseid' AND parent = '0'", "id")) { - foreach ($categories as $category) { - return $category; // Return the first one (lowest id) - } - } - - // Otherwise, we need to make one - $category->name = get_string("default", "quiz"); - $category->info = get_string("defaultinfo", "quiz"); - $category->course = $courseid; - $category->parent = 0; - $category->sortorder = QUIZ_CATEGORIES_SORTORDER; - $category->publish = 0; - $category->stamp = make_unique_id_code(); - - if (!$category->id = insert_record("quiz_categories", $category)) { - notify("Error creating a default category!"); - return false; - } - return $category; -} - -function quiz_get_category_menu($courseid, $published=false) { -/// Returns the list of categories - $publish = ""; - if ($published) { - $publish = "OR publish = '1'"; - } - - if (!isadmin()) { - $categories = get_records_select("quiz_categories", "course = '$courseid' $publish", 'parent, sortorder, name ASC'); - } else { - $categories = get_records_select("quiz_categories", '', 'parent, sortorder, name ASC'); - } - if (!$categories) { - return false; - } - $categories = add_indented_names($categories); - - foreach ($categories as $category) { - if ($catcourse = get_record("course", "id", $category->course)) { - if ($category->publish && ($category->course != $courseid)) { - $category->indentedname .= " ($catcourse->shortname)"; - } - $catmenu[$category->id] = $category->indentedname; - } - } - return $catmenu; -} - -function quiz_print_category_form($course, $current, $recurse=1, $showhidden=false) { -/// Prints a form to choose categories - -/// Make sure the default category exists for this course - if (!$categories = get_records("quiz_categories", "course", $course->id, "id ASC")) { - if (!$category = quiz_get_default_category($course->id)) { - notify("Error creating a default category!"); - } - } - -/// Get all the existing categories now - if (!$categories = get_records_select("quiz_categories", "course = '{$course->id}' OR publish = '1'", "parent, sortorder, name ASC")) { - notify("Could not find any question categories!"); - return false; // Something is really wrong - } - $categories = add_indented_names($categories); - foreach ($categories as $key => $category) { - if ($catcourse = get_record("course", "id", $category->course)) { - if ($category->publish && $category->course != $course->id) { - $category->indentedname .= " ($catcourse->shortname)"; - } - $catmenu[$category->id] = $category->indentedname; - } - } - $strcategory = get_string("category", "quiz"); - $strshow = get_string("show", "quiz"); - $streditcats = get_string("editcategories", "quiz"); - - echo "<table width=\"100%\"><tr><td width=\"20\" nowrap=\"nowrap\">"; - echo "<b>$strcategory:</b>&nbsp;"; - echo "</td><td>"; - popup_form ("edit.php?cat=", $catmenu, "catmenu", $current, "", "", "", false, "self"); - echo "</td><td align=\"right\">"; - echo "<form method=\"get\" action=\"category.php\">"; - echo "<input type=\"hidden\" name=\"id\" value=\"$course->id\" />"; - echo "<input type=\"submit\" value=\"$streditcats\" />"; - echo "</form>"; - echo '</td></tr></table>'; - echo '<form method="post" action="edit.php" name="displayoptions">'; - echo '<input type="hidden" name="displayoptions" value="true">'; - echo '<input type="checkbox" name="recurse" value="1"'; - if ($recurse) { - echo ' checked="checked"'; - } - echo ' onchange="document.displayoptions.submit(); return true;" />'; - print_string('recurse', 'quiz'); - // hide-feature - echo '<br />'; - echo '<input type="checkbox" name="showhidden"'; - if ($showhidden) { - echo ' checked="checked"'; - } - echo ' onchange="document.displayoptions.submit(); return true;" />'; - print_string('showhidden', 'quiz'); - echo '</form>'; -} - - -function add_indented_names(&$categories, $id = 0, $indent = 0) { -// returns the categories with their names indented to show parent-child relationships - $fillstr = '&nbsp;&nbsp;&nbsp;'; - $fill = str_repeat($fillstr, $indent); - $children = array(); - $keys = array_keys($categories); - - foreach ($keys as $key) { - if (!isset($categories[$key]->processed) && $categories[$key]->parent == $id) { - $children[$key] = $categories[$key]; - $children[$key]->indentedname = $fill . $children[$key]->name; - $categories[$key]->processed = true; - $children = $children + add_indented_names($categories, $children[$key]->id, $indent + 1); - } - } - return $children; -} - - -function quiz_category_select_menu($courseid,$published=false,$only_editable=false,$selected="") { -/// displays a select menu of categories with appended coursenames -/// optionaly non editable categories may be excluded -/// added Howard Miller June '04 - // get sql fragment for published - $publishsql=""; - if ($published) { - $publishsql = "or publish=1"; - } - - if (!isadmin()) { - $categories = get_records_select("quiz_categories","course=$courseid $publishsql", 'parent, sortorder, name ASC'); - } else { - $categories = get_records_select("quiz_categories", '', 'parent, sortorder, name ASC'); - } - - $categories = add_indented_names($categories); - - echo "<select name=\"category\">\n"; - foreach ($categories as $category) { - $cid = $category->id; - $cname = quiz_get_category_coursename($category, $courseid); - $seltxt = ""; - if ($cid==$selected) { - $seltxt = "selected=\"selected\""; - } - if ((!$only_editable) || isteacheredit($category->course)) { - echo " <option value=\"$cid\" $seltxt>$cname</option>\n"; - } - } - echo "</select>\n"; -} - -function quiz_get_category_coursename($category, $courseid = 0) { -/// if the category is not from this course and is published , adds on the course -/// name - $cname = (isset($category->indentedname)) ? $category->indentedname : $category->name; - if ($category->course != $courseid && $category->publish) { - if ($catcourse=get_record("course","id",$category->course)) { - $cname .= " ($catcourse->shortname) "; - } - } - return $cname; -} - -function quiz_get_all_question_grades($questionlist, $quizid) { -// Given a list of question IDs, finds grades or invents them to -// create an array of matching grades - - if (empty($questionlist)) { - return array(); - } - - $questions = quiz_get_question_grades($quizid, $questionlist); - - $list = explode(",", $questionlist); - $grades = array(); - - foreach ($list as $qid) { - if (isset($questions[$qid])) { - $grades[$qid] = $questions[$qid]->grade; - } else { - $grades[$qid] = 1; - } - } - return $grades; -} - -function quiz_gradesmenu_options($defaultgrade) { -// Especially for multianswer questions it is often -// desirable to have the grade of the question in a quiz -// larger than the earlier maximum of 10 points. -// This function makes quiz question list grade selector drop-down -// have the maximum grade option set to the highest value between 10 -// and the defaultgrade of the question. - - if ($defaultgrade && $defaultgrade>10) { - $maxgrade = $defaultgrade; - } else { - $maxgrade = 10; - } - - unset($gradesmenu); - for ($i=$maxgrade ; $i>=0 ; --$i) { - $gradesmenu[$i] = $i; - } - return $gradesmenu; -} - -function quiz_print_question_list($questionlist, $grades, $allowdelete=true, $quizid=0) { -// Prints a list of quiz questions in a small layout form with knobs -// returns sum of maximum grades -// $questionlist is comma-separated list -// $grades is an array of corresponding grades - - global $USER; - - if (!$questionlist) { - echo "<p align=\"center\">"; - print_string("noquestions", "quiz"); - echo "</p>"; - return; - } - - $order = explode(",", $questionlist); - - if (!$questions = get_list_of_questions($questionlist)) { - echo "<p align=\"center\">"; - print_string("noquestions", "quiz"); - echo "</p>"; - return; - - } - - $strorder = get_string("order"); - $strquestionname = get_string("questionname", "quiz"); - $strgrade = get_string("grade"); - $strremove = get_string('remove', 'quiz'); - $stredit = get_string("edit"); - $straction = get_string("action"); - $strmoveup = get_string("moveup"); - $strmovedown = get_string("movedown"); - $strsavegrades = get_string("savegrades", "quiz"); - $strtype = get_string("type", "quiz"); - $strpreview = get_string("preview", "quiz"); - - $count = 0; - $sumgrade = 0; - $total = count($order); - echo "<form method=\"post\" action=\"edit.php\">"; - echo "<input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\">"; - echo "<table border=\"0\" cellpadding=\"5\" cellspacing=\"2\" width=\"100%\">\n"; - echo "<tr><th width=\"*\" colspan=\"3\" nowrap=\"nowrap\">$strorder</th><th align=\"left\" width=\"100%\" nowrap=\"nowrap\">$strquestionname</th><th width=\"*\" nowrap=\"nowrap\">$strtype</th><th width=\"*\" nowrap=\"nowrap\">$strgrade</th><th align=\"center\" width=\"60\" nowrap=\"nowrap\">$straction</th></tr>\n"; - foreach ($order as $qnum) { - if (empty($questions[$qnum])) { - continue; - } - $question = $questions[$qnum]; - $canedit = isteacheredit($question->course); - $count++; - echo "<tr>"; - echo "<td>$count</td>"; - echo "<td>"; - if ($count != 1) { - echo "<a title=\"$strmoveup\" href=\"edit.php?up=$qnum&amp;sesskey=$USER->sesskey\"><img - src=\"../../pix/t/up.gif\" border=\"0\" alt=\"$strmoveup\" /></a>"; - } - echo "</td>"; - echo "<td>"; - if ($count != $total) { - echo "<a title=\"$strmovedown\" href=\"edit.php?down=$qnum&amp;sesskey=$USER->sesskey\"><img - src=\"../../pix/t/down.gif\" border=\"0\" alt=\"$strmovedown\" /></a>"; - } - echo "</td>"; - echo "<td>$question->name</td>"; - echo "<td align=\"center\">"; - quiz_print_question_icon($question, $canedit); - echo "</td>"; - echo "<td>"; - if ($question->qtype == DESCRIPTION) { - echo "<input type=\"hidden\" name=\"q$qnum\" value=\"0\" /> \n"; - } else { - choose_from_menu(quiz_gradesmenu_options($question->defaultgrade), - "q$qnum", (string)$grades[$qnum], ""); - } - echo '<td align="center">'; - - if ($canedit) { - $context = $quizid ? '&amp;contextquiz='.$quizid : ''; - echo "<a title=\"$strpreview\" href=\"javascript:void();\" onClick=\"openpopup('/mod/quiz/preview.php?id=$qnum','$strpreview','scrollbars=yes,resizable=yes,width=700,height=480', false)\"> - <img src=\"../../pix/t/preview.gif\" border=\"0\" alt=\"$strpreview\" /></a>&nbsp;"; - echo "<a title=\"$stredit\" href=\"question.php?id=$qnum$context\"> - <img src=\"../../pix/t/edit.gif\" border=\"0\" alt=\"$stredit\" /></a>&nbsp;"; - if ($allowdelete) { - echo "<a title=\"$strremove\" href=\"edit.php?delete=$qnum&amp;sesskey=$USER->sesskey\"> - <img src=\"../../pix/t/removeright.gif\" border=\"0\" alt=\"$strremove\" /></a>"; - } - } - echo "</td>"; - - $sumgrade += $grades[$qnum]; - } - echo "<tr><td colspan=\"5\" align=\"right\">\n"; - echo "<input type=\"submit\" value=\"$strsavegrades:\" />\n"; - echo "<input type=\"hidden\" name=\"setgrades\" value=\"save\" />\n"; - echo "<td align=\"left\">\n"; - echo "<b>$sumgrade</b>"; - echo "</td><td>\n</td></tr>\n"; - echo "</table>\n"; - echo "</form>\n"; - - return $sumgrade; -} - - -function quiz_print_cat_question_list($course, $categoryid, $quizselected=true, $recurse=1, $page, $perpage, $showhidden=false) { -// Prints the table of questions in a category with interactions - - global $QUIZ_QUESTION_TYPE, $USER; - - $strcategory = get_string("category", "quiz"); - $strquestion = get_string("question", "quiz"); - $straddquestions = get_string("addquestions", "quiz"); - $strimportquestions = get_string("importquestions", "quiz"); - $strexportquestions = get_string("exportquestions", "quiz"); - $strnoquestions = get_string("noquestions", "quiz"); - $strselect = get_string("select", "quiz"); - $strselectall = get_string("selectall", "quiz"); - $strselectnone = get_string("selectnone", "quiz"); - $strcreatenewquestion = get_string("createnewquestion", "quiz"); - $strquestionname = get_string("questionname", "quiz"); - $strdelete = get_string("delete"); - $strdeleteselected = get_string("deleteselected", 'quiz'); - $stredit = get_string("edit"); - $straction = get_string("action"); - $strrestore = get_string('restore'); - - $straddselectedtoquiz = get_string("addselectedtoquiz", "quiz"); - $straddtoquiz = get_string("addtoquiz", "quiz"); - $strtype = get_string("type", "quiz"); - $strcreatemultiple = get_string("createmultiple", "quiz"); - $strpreview = get_string("preview","quiz"); - - if (!$categoryid) { - echo "<p align=\"center\"><b>"; - print_string("selectcategoryabove", "quiz"); - echo "</b></p>"; - if ($quizselected) { - echo "<p>"; - print_string("addingquestions", "quiz"); - echo "</p>"; - } - return; - } - - if (!$category = get_record("quiz_categories", "id", "$categoryid")) { - notify("Category not found!"); - return; - } - echo "<center>"; - echo format_text($category->info, FORMAT_MOODLE); - - echo '<table><tr>'; - - // check if editing of this category is allowed - if (isteacheredit($category->course)) { - echo "<td valign=\"top\"><b>$strcreatenewquestion:</b></td>"; - echo '<td valign="top" align="right">'; - popup_form ("question.php?category=$category->id&amp;qtype=", $QUIZ_QUESTION_TYPE, "addquestion", - "", "choose", "", "", false, "self"); - echo '<td width="10" valign="top" align="right">'; - helpbutton("questiontypes", $strcreatenewquestion, "quiz"); - echo '</td></tr>'; - } - else { - echo '<tr><td>'; - print_string("publishedit","quiz"); - echo '</td></tr>'; - } - - echo '<tr><td colspan="3" align="right"><font size="2">'; - if (isteacheredit($category->course)) { - echo '<a href="import.php?category='.$category->id.'">'.$strimportquestions.'</a>'; - helpbutton("import", $strimportquestions, "quiz"); - echo ' | '; - } - echo '<a href="export.php?category='.$category->id.'">'.$strexportquestions.'</a>'; - helpbutton("export", $strexportquestions, "quiz"); - echo '</font></td></tr>'; - - echo '</table>'; - - echo '</center>'; - - $categorylist = ($recurse) ? quiz_categorylist($category->id) : $category->id; - - // hide-feature - $showhidden = $showhidden ? '' : " AND hidden = '0'"; - if (!$questions = get_records_select('quiz_questions', "category IN ($categorylist) AND qtype != '".RANDOM."'$showhidden", 'qtype, name ASC', '*', $page*$perpage, $perpage)) { - echo "<p align=\"center\">"; - print_string("noquestions", "quiz"); - echo "</p>"; - return; - } - - $canedit = isteacheredit($category->course); - - echo '<form method="post" action="edit.php">'; - echo '<input type="hidden" name="sesskey" value="'.$USER->sesskey.'">'; - echo '<table id="categoryquestions" cellspacing="0"><tr>'; - if ($canedit) { - echo "<th width=\"95\" nowrap=\"nowrap\">$straction</th>"; - } - echo "<th width=\"100%\" align=\"left\" nowrap=\"nowrap\">$strquestionname</th><th width=\"*\" nowrap=\"nowrap\">$strtype</th>"; - echo "</tr>\n"; - foreach ($questions as $question) { - if ($question->qtype == RANDOM) { - //continue; - } - echo "<tr>\n"; - if ($canedit) { - echo "<td>\n"; - if ($quizselected) { - echo "<a title=\"$straddtoquiz\" href=\"edit.php?addquestion=$question->id&amp;sesskey=$USER->sesskey\"><img - src=\"../../pix/t/moveleft.gif\" border=\"0\" alt=\"$straddtoquiz\" /></a>&nbsp;"; - } - echo "<a title=\"$strpreview\" href=\"javascript:void();\" onClick=\"openpopup('/mod/quiz/preview.php?id=$question->id','$strpreview','scrollbars=yes,resizable=yes,width=700,height=480', false)\"><img - src=\"../../pix/t/preview.gif\" border=\"0\" alt=\"$strpreview\" /></a>&nbsp;"; - echo "<a title=\"$stredit\" href=\"question.php?id=$question->id\"><img - src=\"../../pix/t/edit.gif\" border=\"0\" alt=\"$stredit\" /></a>&nbsp;"; - // hide-feature - if($question->hidden) { - echo "<a title=\"$strrestore\" href=\"question.php?id=$question->id&amp;hide=0&amp;sesskey=$USER->sesskey\"><img - src=\"../../pix/t/restore.gif\" border=\"0\" alt=\"$strrestore\" /></a>"; - } else { - echo "<a title=\"$strdelete\" href=\"question.php?id=$question->id&amp;delete=$question->id\"><img - src=\"../../pix/t/delete.gif\" border=\"0\" alt=\"$strdelete\" /></a>"; - } - echo "&nbsp;<input title=\"$strselect\" type=\"checkbox\" name=\"q$question->id\" value=\"1\" />"; - echo "</td>\n"; - } - if ($question->hidden) { - echo '<td class="dimmed_text">'.$question->name."</td>\n"; - } else { - echo "<td>".$question->name."</td>\n"; - } - echo "<td align=\"center\">\n"; - quiz_print_question_icon($question, $canedit); - echo "</td>\n"; - echo "</tr>\n"; - } - echo "</table>\n"; - - echo '<a href="javascript:select_all_in(\'TABLE\', null, \'categoryquestions\');">'.$strselectall.'</a> /'. - ' <a href="javascript:deselect_all_in(\'TABLE\', null, \'categoryquestions\');">'.$strselectnone.'</a>'; - echo "&nbsp;<input type=\"submit\" name=\"deleteselected\" value=\"$strdeleteselected\" />\n"; - echo "<br />"; - - echo '<table><tr><td>'; - if ($quizselected) { - echo "<input type=\"submit\" name=\"add\" value=\"<< $straddselectedtoquiz\" />\n"; - echo '</td><td>'; - } - echo '<input type="submit" name="move" value="'.get_string('moveto', 'quiz')."\" />\n"; - quiz_category_select_menu($course->id, false, true, $category->id); - echo "</td></tr></table>"; - - $numquestions = count_records_select('quiz_questions', "category IN ($categorylist) AND qtype != '".RANDOM."'"); - echo '<tr><td colspan="3">'; - print_paging_bar($numquestions, $page, $perpage, - "edit.php?perpage=$perpage&amp;"); - - echo "</form>\n"; - if ($quizselected) { - for ($i=1;$i<=10; $i++) { - $randomcount[$i] = $i; - } - echo '<form method="post" action="multiple.php">'; - echo "<input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\">"; - print_string('addrandom1', 'quiz'); - choose_from_menu($randomcount, 'randomcreate', '1', ''); - print_string('addrandom2', 'quiz'); - // Don't offer the option to change the grade - //choose_from_menu($randomcount, 'randomgrade', '1', ''); - echo '<input type="hidden" name="randomgrade" value="1" />'; - echo '<input type="hidden" name="recurse" value="'.$recurse.'" />'; - echo "<input type=\"hidden\" name=\"category\" value=\"$category->id\" />"; - echo ' <input type="submit" name="save" value="'. get_string('add') .'" />'; - helpbutton('random', get_string('random', 'quiz'), 'quiz'); - echo '</form>'; - } -} - - -function quiz_start_attempt($quizid, $userid, $numattempt) { - $attempt->quiz = $quizid; - $attempt->userid = $userid; - $attempt->attempt = $numattempt; - $attempt->timestart = time(); - $attempt->timefinish = 0; - $attempt->timemodified = time(); - $attempt->id = insert_record("quiz_attempts", $attempt); - return $attempt; -} - -function quiz_get_user_attempt_unfinished($quizid, $userid) { -// Returns an object containing an unfinished attempt (if there is one) - return get_record("quiz_attempts", "quiz", $quizid, "userid", $userid, "timefinish", 0); -} - -function quiz_get_user_attempts($quizid, $userid) { -// Returns a list of all attempts by a user - return get_records_select("quiz_attempts", "quiz = '$quizid' AND userid = '$userid' AND timefinish > 0", - "attempt ASC"); -} - - -function quiz_get_user_attempts_string($quiz, $attempts, $bestgrade) { -/// Returns a simple little comma-separated list of all attempts, -/// with each grade linked to the feedback report and with the best grade highlighted - - $bestgrade = format_float($bestgrade,$quiz->decimalpoints); - foreach ($attempts as $attempt) { - $attemptgrade = format_float(($attempt->sumgrades / $quiz->sumgrades) * $quiz->grade, $quiz->decimalpoints); - if ($attemptgrade == $bestgrade) { - $userattempts[] = "<span class=\"highlight\"><a href=\"review.php?q=$quiz->id&amp;attempt=$attempt->id\">$attemptgrade</a></span>"; - } else { - $userattempts[] = "<a href=\"review.php?q=$quiz->id&amp;attempt=$attempt->id\">$attemptgrade</a>"; - } - } - return implode(",", $userattempts); -} - -function quiz_get_best_grade($quiz, $userid) { -/// Get the best current grade for a particular user in a quiz -if (!$grade = get_record('quiz_grades', 'quiz', $quiz->id, 'userid', $userid)) { - return NULL; - } - - return (format_float($grade->grade,$quiz->decimalpoints)); -} - -function quiz_save_best_grade($quiz, $userid) { -/// Calculates the best grade out of all attempts at a quiz for a user, -/// and then saves that grade in the quiz_grades table. - - if (!$attempts = quiz_get_user_attempts($quiz->id, $userid)) { - notify('Could not find any user attempts'); - return false; - } - - $bestgrade = quiz_calculate_best_grade($quiz, $attempts); - $bestgrade = (($bestgrade / $quiz->sumgrades) * $quiz->grade); - - if ($grade = get_record('quiz_grades', 'quiz', $quiz->id, 'userid', $userid)) { - $grade->grade = round($bestgrade, $quiz->decimalpoints); - $grade->timemodified = time(); - if (!update_record('quiz_grades', $grade)) { - notify('Could not update best grade'); - return false; - } - } else { - $grade->quiz = $quiz->id; - $grade->userid = $userid; - $grade->grade = round($bestgrade, $quiz->decimalpoints); - $grade->timemodified = time(); - if (!insert_record('quiz_grades', $grade)) { - notify('Could not insert new best grade'); - return false; - } - } - return true; -} - - -function quiz_calculate_best_grade($quiz, $attempts) { -/// Calculate the best grade for a quiz given a number of attempts by a particular user. - - switch ($quiz->grademethod) { - - case ATTEMPTFIRST: - foreach ($attempts as $attempt) { - return $attempt->sumgrades; - } - break; - - case ATTEMPTLAST: - foreach ($attempts as $attempt) { - $final = $attempt->sumgrades; - } - return $final; - - case GRADEAVERAGE: - $sum = 0; - $count = 0; - foreach ($attempts as $attempt) { - $sum += $attempt->sumgrades; - $count++; - } - return (float)$sum/$count; - - default: - case GRADEHIGHEST: - $max = 0; - foreach ($attempts as $attempt) { - if ($attempt->sumgrades > $max) { - $max = $attempt->sumgrades; - } - } - return $max; - } -} - - -function quiz_calculate_best_attempt($quiz, $attempts) { -/// Return the attempt with the best grade for a quiz - - switch ($quiz->grademethod) { - - case ATTEMPTFIRST: - foreach ($attempts as $attempt) { - return $attempt; - } - break; - - case GRADEAVERAGE: // need to do something with it :-) - case ATTEMPTLAST: - foreach ($attempts as $attempt) { - $final = $attempt; - } - return $final; - - default: - case GRADEHIGHEST: - $max = -1; - foreach ($attempts as $attempt) { - if ($attempt->sumgrades > $max) { - $max = $attempt->sumgrades; - $maxattempt = $attempt; - } - } - return $maxattempt; - } -} - - -function quiz_save_attempt($quiz, $questions, $result, - $attemptnum, $finished = true) { -/// Given a quiz, a list of attempted questions and a total grade -/// this function saves EVERYTHING so it can be reconstructed later -/// if necessary. - - global $USER; - global $QUIZ_QTYPES; - - // First find the attempt in the database (start of attempt) - - if (!$attempt = quiz_get_user_attempt_unfinished($quiz->id, $USER->id)) { - notify("Trying to save an attempt that was not started!"); - return false; - } - - // Not usually necessary, but there's some sort of very rare glitch - // I've seen where the number wasn't already the same. In these cases - // We upgrade the database to match the attemptnum we calculated - $attempt->attempt = $attemptnum; - - // Now let's complete this record and save it - - $attempt->sumgrades = $result->sumgrades; - if ($finished) { - $attempt->timefinish = time(); - } - $attempt->timemodified = time(); - - if (!update_record("quiz_attempts", $attempt)) { - notify("Error while saving attempt"); - return false; - } - - // Now let's save all the questions for this attempt - - foreach ($questions as $question) { - - // Fetch the response record for this question... - $response = get_record('quiz_responses', - 'attempt', $attempt->id, 'question', $question->id); - - $response->grade = $result->details[$question->id]->grade; - - if (!empty($question->response)) { - $responseanswerfield = $QUIZ_QTYPES[$question->qtype] - ->convert_to_response_answer_field($question->response); - - $response->answer = $responseanswerfield; - - } else if (!isset($response->answer)) { - $response->answer = ''; - } - - if (!update_record("quiz_responses", $response)) { - notify("Error while saving response"); - return false; - } - } - return $attempt; -} - -function quiz_extract_correctanswers($answers, $nameprefix) { -/// Convinience function that is used by some single-response -/// question-types for determining correct answers. - - $bestanswerfraction = 0.0; - $correctanswers = array(); - foreach ($answers as $answer) { - if ($answer->fraction > $bestanswerfraction) { - $correctanswers = array($nameprefix.$answer->id => $answer); - $bestanswerfraction = $answer->fraction; - } else if ($answer->fraction == $bestanswerfraction) { - $correctanswers[$nameprefix.$answer->id] = $answer; - } - } - return $correctanswers; -} - -function quiz_grade_responses($quiz, $questions, $attemptid=0) { -/// Given a list of questions (including ->response[] and ->maxgrade -/// on each question) this function does all the hard work of calculating the -/// score for each question, as well as a total grade for -/// the whole quiz. It returns everything in a structure -/// that lookas like this -/// ->sumgrades (sum of all grades for all questions) -/// ->grade (final grade result for the whole quiz) -/// ->percentage (Percentage of the max grade achieved) -/// ->details[] -/// The array ->details[] is indexed like the $questions argument -/// and contains scoring information per question. Each element has -/// this structure: -/// []->grade (Grade awarded on the specific question) -/// []->answers[] (result answer records for the question response(s)) -/// []->correctanswers[] (answer records if question response(s) had been correct) -/// - HOWEVER, ->answers[] and ->correctanswers[] are supplied only -/// if there is a response on the question... -/// The array ->answers[] is indexed like ->response[] on its corresponding -/// element in $questions. It is the case for ->correctanswers[] when -/// there can be multiple responses per question but if there can be only one -/// response per question then all possible correctanswers will be -/// represented, indexed like the response index concatenated with the ->id -/// of its answer record. - - global $QUIZ_QTYPES; - - if (!$questions) { - error("No questions!"); - } - - $result->sumgrades = 0.0; - foreach ($questions as $qid => $question) { - - if (!isset($question->response) && $attemptid) { - /// No response on the question - /// This case is common if the quiz shows a limited - /// number of questions per page. - $response = get_record('quiz_responses', 'attempt', - $attemptid, 'question', $qid); - $resultdetails->grade = $response->grade; - - } else if (empty($question->qtype)) { - continue; - - } else { - - $resultdetails = $QUIZ_QTYPES[$question->qtype]->grade_response - ($question, quiz_qtype_nameprefix($question)); - - // Negative grades will not do: - if (((float)($resultdetails->grade)) <= 0.0) { - $resultdetails->grade = 0.0; - - // Neither will extra credit: - } else if (((float)($resultdetails->grade)) >= 1.0) { - $resultdetails->grade = $question->maxgrade; - - } else { - $resultdetails->grade *= $question->maxgrade; - } - } - - // if time limit is enabled and exceeded, return zero grades - if ($quiz->timelimit > 0) { - if (($quiz->timelimit + 60) <= $quiz->timesincestart) { - $resultdetails->grade = 0; - } - } - - $result->sumgrades += $resultdetails->grade; - $resultdetails->grade = round($resultdetails->grade, 2); - $result->details[$qid] = $resultdetails; - } - - $fraction = (float)($result->sumgrades / $quiz->sumgrades); - $result->percentage = format_float($fraction * 100.0); - $result->grade = format_float($fraction * $quiz->grade); - $result->sumgrades = round($result->sumgrades, 2); - - return $result; -} - - -// this function creates default export filename -function default_export_filename($course,$category) { - //Take off some characters in the filename !! - $takeoff = array(" ", ":", "/", "\\", "|"); - $export_word = str_replace($takeoff,"_",strtolower(get_string("exportfilename","quiz"))); - //If non-translated, use "export" - if (substr($export_word,0,1) == "[") { - $export_word= "export"; - } - - //Calculate the date format string - $export_date_format = str_replace(" ","_",get_string("exportnameformat","quiz")); - //If non-translated, use "%Y%m%d-%H%M" - if (substr($export_date_format,0,1) == "[") { - $export_date_format = "%%Y%%m%%d-%%H%%M"; - } - - //Calculate the shortname - $export_shortname = clean_filename($course->shortname); - if (empty($export_shortname) or $export_shortname == '_' ) { - $export_shortname = $course->id; - } - - //Calculate the category name - $export_categoryname = clean_filename($category->name); - - //Calculate the final export filename - //The export word - $export_name = $export_word."-"; - //The shortname - $export_name .= strtolower($export_shortname)."-"; - //The category name - $export_name .= strtolower($export_categoryname)."-"; - //The date format - $export_name .= userdate(time(),$export_date_format,99,false); - //The extension - no extension, supplied by format - // $export_name .= ".txt"; - - return $export_name; -} - -// function to read all questions for category into big array -// added by Howard Miller June 2004 -function get_questions_category( $category ) { - - // questions will be added to an array - $qresults = array(); - - // get the list of questions for the category - if ($questions = get_records("quiz_questions","category",$category->id)) { - - // iterate through questions, getting stuff we need - foreach($questions as $question) { - $new_question = get_question_data( $question ); - $qresults[] = $new_question; - } - } - - return $qresults; -} - -// function to read single question, parameter is object view of -// quiz_categories record, results is a combined object -// defined as follows... -// ->id quiz_questions id -// ->category category -// ->name q name -// ->questiontext -// ->image -// ->qtype see defines at the top of this file -// ->stamp not too sure -// ->version not sure -// ----SHORTANSWER -// ->usecase -// ->answers array of answers -// ----TRUEFALSE -// ->trueanswer truefalse answer -// ->falseanswer truefalse answer -// ----MULTICHOICE -// ->layout -// ->single many or just one correct answer -// ->answers array of answer objects -// ----NUMERIC -// ->min minimum answer span -// ->max maximum answer span -// ->answer single answer -// ----MATCH -// ->subquestions array of sub questions -// ---->questiontext -// ---->answertext -function get_question_data( $question ) { - // what to do next depends of question type (qtype) - switch ($question->qtype) { - case SHORTANSWER: - $shortanswer = get_record("quiz_shortanswer","question",$question->id); - $question->usecase = $shortanswer->usecase; - $question->answers = get_exp_answers( $question->id ); - break; - case TRUEFALSE: - if (!$truefalse = get_record("quiz_truefalse","question",$question->id)) { - error( "quiz_truefalse record $question->id not found" ); - } - $question->trueanswer = get_exp_answer( $truefalse->trueanswer ); - $question->falseanswer = get_exp_answer( $truefalse->falseanswer ); - break; - case MULTICHOICE: - if (!$multichoice = get_record("quiz_multichoice","question",$question->id)) { - error( "quiz_multichoice $question->id not found" ); - } - $question->layout = $multichoice->layout; - $question->single = $multichoice->single; - $question->answers = get_exp_answers( $multichoice->question ); - break; - case NUMERICAL: - if (!$numeric = get_record("quiz_numerical","question",$question->id)) { - error( "quiz_numerical $question->id not found" ); - } - $question->min = $numeric->min; - $question->max = $numeric->max; - $question->answer = get_exp_answer( $numeric->answer ); - break; - case MATCH: - if (!$subquestions = get_records("quiz_match_sub","question",$question->id)) { - error( "quiz_match_sub $question->id not found" ); - } - $question->subquestions = $subquestions; - break; - case DESCRIPTION: - // nothing to do - break; - case MULTIANSWER: - // nothing to do - break; - case RANDOM: - // nothing to do - break; - default: - notify("No handler for question type $question->qtype in get_question"); - } - return $question; -} - -// function to return single answer -// ->id answer id -// ->question question number -// ->answer -// ->fraction -// ->feedback -function get_exp_answer( $id ) { - if (!$answer = get_record("quiz_answers","id",$id )) { - error( "quiz_answers record $id not found" ); - } - return $answer; -} - -// function to return array of answers for export -function get_exp_answers( $question_num ) { - if (!$answers = get_records("quiz_answers","question",$question_num)) { - error( "quiz_answers question $question_num not found" ); - } - return $answers; -} - -function quiz_categorylist($categoryid) { - // returns a comma separated list of ids of the category and all subcategories - $categorylist = $categoryid; - if ($subcategories = get_records('quiz_categories', 'parent', $categoryid, 'sortorder ASC', 'id, id')) { - foreach ($subcategories as $subcategory) { - $categorylist .= ','. quiz_categorylist($subcategory->id); - } - } - return $categorylist; -} - -function quizzes_question_used($id) { -// $id = question id -// returns array of names of quizzes a question appears in - - $quizlist = array(); - if ($grades = get_records('quiz_question_grades', 'question', $id)) { - foreach($grades as $grade) { - $quizlist[$grade->quiz] = get_field('quiz', 'name', 'id', $grade->quiz); - } - } - - return $quizlist; -} - -function quiz_parse_fieldname($name, $nameprefix='question') { - $reg = array(); - if (preg_match("/$nameprefix(\\d+)(\w+)/", $name, $reg)) { - return array('mode' => $reg[2], 'id' => (int)$reg[1]); - } else { - return false; - } -} -?> diff --git a/mod/quiz/mod.html b/mod/quiz/mod.html index 3a4afd13ac7..4967c2443b3 100644 --- a/mod/quiz/mod.html +++ b/mod/quiz/mod.html @@ -1,9 +1,9 @@ <!-- This page defines the form to create or edit an instance of this module --> <!-- It is used from /course/mod.php. The whole instance is available as $form. --> -<?php - require_once("$CFG->dirroot/mod/quiz/locallib.php"); -// Ensure that all form variables are initialized +<?php + require_once("$CFG->dirroot/mod/quiz/lib.php"); + if (!isset($form->name)) { $form->name = ""; } @@ -17,118 +17,82 @@ $form->timeclose = ""; } if (!isset($form->attempts)) { - $form->attempts = $CFG->quiz_attempts; + $form->attempts = 0; } if (!isset($form->attemptonlast)) { - $form->attemptonlast = $CFG->quiz_attemptonlast; + $form->attemptonlast = 0; } if (!isset($form->grademethod)) { - $form->grademethod = $CFG->quiz_grademethod; - } - if (!isset($form->decimalpoints)) { - $form->decimalpoints = $CFG->quiz_decimalpoints; + $form->grademethod = ""; } if (!isset($form->feedback)) { - $form->feedback = $CFG->quiz_showfeedback; + $form->feedback = ""; } if (!isset($form->correctanswers)) { - $form->correctanswers = $CFG->quiz_showanswer; + $form->correctanswers = ""; } if (!isset($form->review)) { - $form->review = $CFG->quiz_allowreview; - } - if (!isset($form->questionsperpage)) { - $form->questionsperpage = 0; + $form->review = 0; } if (!isset($form->shufflequestions)) { - $form->shufflequestions = $CFG->quiz_shufflequestions; + $form->shufflequestions = 0; } if (!isset($form->shuffleanswers)) { - $form->shuffleanswers = $CFG->quiz_shuffleanswers; + $form->shuffleanswers = 1; } if (!isset($form->grade)) { - $form->grade = $CFG->quiz_maximumgrade; + $form->grade = 0; } if (!isset($form->questions)) { $form->questions = ""; } if (!isset($form->password)) { - $form->password = $CFG->quiz_password; + $form->password = ""; } if (!isset($form->subnet)) { - $form->subnet = $CFG->quiz_subnet; + $form->subnet = ""; } if (!isset($form->timelimit)) { - $form->timelimit = $CFG->quiz_timelimit; + $form->timelimit = 0; } - if (!isset($form->popup)) { - $form->popup = $CFG->quiz_popup; - } - - $fix = 0; // This will later be set to 1 if some of the variables have been fixed by the admin. - - // the following are used for drop-down menus - $reviewoptions = array(); - $reviewoptions[0] = get_string('reviewnever', 'quiz'); - $reviewoptions[1] = get_string('reviewafter', 'quiz'); - $reviewoptions[2] = get_string('reviewbefore', 'quiz'); - $reviewoptions[3] = get_string('reviewalways', 'quiz'); - - $yesnooptions = array(); - $yesnooptions[0] = get_string("no"); - $yesnooptions[1] = get_string("yes"); - - $attemptoptions = array(); - $attemptoptions[0] = get_string("attemptsunlimited", "quiz"); - $attemptoptions[1] = "1 ".strtolower(get_string("attempt", "quiz")); - for ($i=2;$i<=6;$i++) { - $attemptoptions[$i] = "$i ".strtolower(get_string("attempts", "quiz")); - } - - $grades = array(); - for ($i=100; $i>=1; $i--) { - $grades[$i] = $i; - } - $grades[0] = get_string("nograde"); ?> -<form name="form" method="post" action="mod.php"> +<form name="form" method="post" action="../mod/quiz/edit.php"> <center> - -<!-- Now comes a table with all the options that have not been fixed by the admin --> -<table cellpadding="5"> - -<tr valign="top"> - <td align="right"><b><?php print_string("name") ?>:</b></td> +<table cellpadding=5> +<tr valign=top> + <td align=right><p><b><?php print_string("name") ?>:</b></p></td> <td> - <input type="text" name="name" size="40" value="<?php p($form->name) ?>" /> + <input type="text" name="name" size=40 value="<?php p($form->name) ?>"> </td> </tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("introduction", "quiz") ?>:</b><br /><br /> +<tr valign=top> + <td align=right><p><b><?php print_string("introduction", "quiz") ?>:</b></p> + <br /> + <font size="1"> <?php if ($usehtmleditor) { helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); } else { - helpbutton("text", get_string("helptext"), "moodle", true, true); + helpbutton("text", get_string("helptext"), "moodle", true, true); echo '<br />'; emoticonhelpbutton("form", "description"); echo '<br />'; - } + } ?> + <br /> + </font> </td> <td> - <?php + <?php print_textarea($usehtmleditor, 20, 50, 680, 400, "intro", $form->intro); ?> </td> </tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("quizopen", "quiz") ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("quizopen", "quiz") ?>:</b></p></td> <td> <?php if (!$form->timeopen and $course->format == "weeks") { @@ -140,9 +104,8 @@ ?> </td> </tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("quizclose", "quiz") ?>:</b></td> +<tr valign=top> + <td align=right><p><b><?php print_string("quizclose", "quiz") ?>:</b></p></td> <td> <?php if (!$form->timeclose and $course->format == "weeks") { @@ -154,474 +117,161 @@ ?> </td> </tr> - -<?php if (!$CFG->quiz_fix_timelimit) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("timelimit", "quiz") ?>:</b></td> - <td> - <?php - print_timer_selector($form->timelimit, get_string("minutes","quiz")); - helpbutton("timelimit", get_string("quiztimer","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_questionsperpage) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string('questionsperpage', 'quiz') ?>:</b></td> - <td> - <?php - $perpage= array(); - for ($i=0; $i<=50; ++$i) { - $perpage[$i] = $i; - } - $perpage[0] = get_string('allinone', 'quiz'); - - choose_from_menu($perpage, 'questionsperpage', $form->questionsperpage, ''); - helpbutton('questionsperpage', get_string('questionsperpage'), 'quiz'); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_shufflequestions) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("shufflequestions", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "shufflequestions", "$form->shufflequestions", ""); - helpbutton("shufflequestions", get_string("shufflequestions","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_shuffleanswers) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("shuffleanswers", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "shuffleanswers", "$form->shuffleanswers", ""); - helpbutton("shuffleanswers", get_string("shuffleanswers","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_attempts) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("attemptsallowed", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($attemptoptions, "attempts", "$form->attempts", ""); - helpbutton("attempts", get_string("attemptsallowed","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_attemptonlast) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("eachattemptbuildsonthelast", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "attemptonlast", - "$form->attemptonlast", ""); - helpbutton("repeatattempts", - get_string("eachattemptbuildsonthelast", "quiz"), - "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_grademethod) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("grademethod", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($QUIZ_GRADE_METHOD, "grademethod", "$form->grademethod", ""); - helpbutton("grademethod", get_string("grademethod","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_decimalpoints) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("decimalpoints", "quiz") ?>:</b></td> - <td> - <?php - unset($options); - $options[0] = '0'; - $options[1] = '1'; - $options[2] = '2'; - $options[3] = '3'; - choose_from_menu($options, "decimalpoints", "$form->decimalpoints", ""); - helpbutton("decimalpoints", get_string("decimalpoints","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_showfeedback) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("showfeedback", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "feedback", "$form->feedback", ""); - helpbutton("feedback", get_string("showfeedback","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_showanswer) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("showcorrectanswer", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "correctanswers", "$form->correctanswers", ""); - helpbutton("correctanswers", get_string("showcorrectanswer","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_allowreview) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("allowreview", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($reviewoptions, "review", "$form->review", ""); - helpbutton("review2", get_string("allowreview","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_maximumgrade) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("maximumgrade") ?>:</b></td> - <td> - <?php - choose_from_menu($grades, "grade", "$form->grade", ""); - helpbutton("maxgrade", get_string("maximumgrade"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_popup) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("popup", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "popup", "$form->popup", ""); - helpbutton("popup", get_string("popup","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_password) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("requirepassword", "quiz") ?>:</b></td> - <td> - <input type="text" name="password" size="40" value="<?php p($form->password) ?>" /> - <?php helpbutton("requirepassword", get_string("requirepassword", "quiz"), "quiz"); ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php if (!$CFG->quiz_fix_subnet) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("requiresubnet", "quiz") ?>:</b></td> - <td> - <input type="text" name="subnet" size="40" value="<?php p($form->subnet) ?>" /> - <?php helpbutton("requiresubnet", get_string("requiresubnet", "quiz"), "quiz"); ?> - </td> - </tr> -<?php } else $fix=1 ?> - -<?php print_standard_coursemodule_settings($form); ?> - - - - -<?php if ($fix) { ?> - -<!-- Some javascript to allow for the hiding of advanced options - This code was derived from mod.html in the resource module --> -<script language="javascript" type="text/javascript"> - function showhide (id, set) { - divobj = document.getElementById(id); - butobj = document.getElementById(id+'button'); - prefobj = document.getElementById(id+'pref'); - if (set == true) { - if (prefobj.value == '1') { - divobj.style.display = 'block'; - butobj.value = '<?php print_string("hideadvancedsettings") ?>'; - } else { - divobj.style.display = 'none'; - butobj.value = '<?php print_string("showadvancedsettings") ?>...'; - } - } else { - if (prefobj.value == '1') { - divobj.style.display = 'none'; - butobj.value = '<?php print_string("showadvancedsettings") ?>...'; - prefobj.value = '0'; - } else { - divobj.style.display = 'block'; - butobj.value = '<?php print_string("hideadvancedsettings") ?>'; - prefobj.value = '1'; - } - } - } -</script> - -<!-- Now comes a copy of the above but enclosed in a div with id optionsettings and with - the conditions reversed, so that it shows exactly the options that are usually hidden. - The visibility of this div is controlled by javascript. --> - -<tr><td colspan="2"><hr /></td></tr> -<tr> - <td align="right"><b><?php print_string('advancedsettings') ?>:</b></td> +<!-- BEGIN EDIT --> +<tr valign=top> + <td align=right><p><b><?php print_string("timelimit", "quiz") ?>:</b></p></td> <td> - <input type="button" value="hide settings" id="optionsettingsbutton" onclick="javascript: return showhide('optionsettings');" /> - <input type="hidden" name="optionsettingspref" id="optionsettingspref" value="<?php echo get_user_preferences('quiz_optionsettingspref', 0); ?>" /> - <br /> + <?php + print_timer_selector($form->timelimit, get_string("minutes","quiz")); + helpbutton("timelimit", get_string("quiztimer","quiz"), "quiz"); + ?> </td> </tr> +<!-- END EDIT --> +<tr valign=top> + <td align=right><p><b><?php print_string("shufflequestions", "quiz") ?>:</b></p></td> + <td> + <?php + $options = array(); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); + choose_from_menu($options, "shufflequestions", "$form->shufflequestions", ""); + helpbutton("shufflequestions", get_string("shufflequestions","quiz"), "quiz"); + ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("shuffleanswers", "quiz") ?>:</b></p></td> + <td> + <?php + $options = array(); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); + choose_from_menu($options, "shuffleanswers", "$form->shuffleanswers", ""); + helpbutton("shuffleanswers", get_string("shuffleanswers","quiz"), "quiz"); + ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("attemptsallowed", "quiz") ?>:</b></p></td> + <td> + <?php + $options = array(); + $options[0] = get_string("attemptsunlimited", "quiz"); + $options[1] = "1 ".strtolower(get_string("attempt", "quiz")); + for ($i=2;$i<=6;$i++) { + $options[$i] = "$i ".strtolower(get_string("attempts", "quiz")); + } + choose_from_menu($options, "attempts", "$form->attempts", ""); + helpbutton("attempts", get_string("attemptsallowed","quiz"), "quiz"); + ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("eachattemptbuildsonthelast", "quiz") ?>:</b></p></td> + <td> + <?php + $options = array(); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); + choose_from_menu($options, "attemptonlast", + "$form->attemptonlast", ""); + helpbutton("repeatattempts", + get_string("eachattemptbuildsonthelast", "quiz"), + "quiz"); + ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("grademethod", "quiz") ?>:</b></p></td> + <td> + <?php + $options = array(); + $options[1] = get_string("gradehighest", "quiz"); + $options[2] = get_string("gradeaverage", "quiz"); + $options[3] = get_string("attemptfirst", "quiz"); + $options[4] = get_string("attemptlast", "quiz"); + choose_from_menu($QUIZ_GRADE_METHOD, "grademethod", "$form->grademethod", ""); + helpbutton("grademethod", get_string("grademethod","quiz"), "quiz"); + ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("showfeedback", "quiz") ?>:</b></p></td> + <td> + <?php + $options = array(); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); + choose_from_menu($options, "feedback", "$form->feedback", ""); + helpbutton("feedback", get_string("showfeedback","quiz"), "quiz"); + ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("showcorrectanswer", "quiz") ?>:</b></p></td> + <td> + <?php + $options = array(); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); + choose_from_menu($options, "correctanswers", "$form->correctanswers", ""); + helpbutton("correctanswers", get_string("showcorrectanswer","quiz"), "quiz"); + ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("allowreview", "quiz") ?>:</b></p></td> + <td> + <?php + $options = array(); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); + choose_from_menu($options, "review", "$form->review", ""); + helpbutton("review", get_string("allowreview","quiz"), "quiz"); + ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("maximumgrade") ?>:</b></p></td> + <td> + <?php + for ($i=100; $i>=1; $i--) { + $grades[$i] = $i; + } + $grades[0] = get_string("nograde"); -<tr><td colspan="2"> - -<div id="optionsettings"> - -<table align="center"> - -<?php if ($CFG->quiz_fix_timelimit) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("timelimit", "quiz") ?>:</b></td> - <td> - <?php - print_timer_selector($form->timelimit, get_string("minutes","quiz")); - helpbutton("timelimit", get_string("quiztimer","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_questionsperpage) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string('questionsperpage', 'quiz') ?>:</b></td> - <td> - <?php - $perpage= array(); - for ($i=0; $i<=50; ++$i) { - $perpage[$i] = $i; - } - $perpage[0] = get_string('allinone', 'quiz'); - - choose_from_menu($perpage, 'questionsperpage', $form->questionsperpage, ''); - helpbutton('questionsperpage', get_string('questionsperpage'), 'quiz'); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_shufflequestions) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("shufflequestions", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "shufflequestions", "$form->shufflequestions", ""); - helpbutton("shufflequestions", get_string("shufflequestions","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_shuffleanswers) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("shuffleanswers", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "shuffleanswers", "$form->shuffleanswers", ""); - helpbutton("shuffleanswers", get_string("shuffleanswers","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_attempts) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("attemptsallowed", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($attemptoptions, "attempts", "$form->attempts", ""); - helpbutton("attempts", get_string("attemptsallowed","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_attemptonlast) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("eachattemptbuildsonthelast", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "attemptonlast", - "$form->attemptonlast", ""); - helpbutton("repeatattempts", - get_string("eachattemptbuildsonthelast", "quiz"), - "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_grademethod) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("grademethod", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($QUIZ_GRADE_METHOD, "grademethod", "$form->grademethod", ""); - helpbutton("grademethod", get_string("grademethod","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_decimalpoints) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("decimalpoints", "quiz") ?>:</b></td> - <td> - <?php - unset($options); - $options[0] = '0'; - $options[1] = '1'; - $options[2] = '2'; - $options[3] = '3'; - choose_from_menu($options, "decimalpoints", "$form->decimalpoints", ""); - helpbutton("decimalpoints", get_string("decimalpoints","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_showfeedback) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("showfeedback", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "feedback", "$form->feedback", ""); - helpbutton("feedback", get_string("showfeedback","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_showanswer) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("showcorrectanswer", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "correctanswers", "$form->correctanswers", ""); - helpbutton("correctanswers", get_string("showcorrectanswer","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_allowreview) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("allowreview", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($reviewoptions, "review", "$form->review", ""); - helpbutton("review", get_string("allowreview","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_maximumgrade) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("maximumgrade") ?>:</b></td> - <td> - <?php - choose_from_menu($grades, "grade", "$form->grade", ""); - helpbutton("maxgrade", get_string("maximumgrade"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_popup) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("popup", "quiz") ?>:</b></td> - <td> - <?php - choose_from_menu($yesnooptions, "popup", "$form->popup", ""); - helpbutton("popup", get_string("popup","quiz"), "quiz"); - ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_password) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("requirepassword", "quiz") ?>:</b></td> - <td> - <input type="text" name="password" size="40" value="<?php p($form->password) ?>" /> - <?php helpbutton("requirepassword", get_string("requirepassword", "quiz"), "quiz"); ?> - </td> - </tr> -<?php } ?> - -<?php if ($CFG->quiz_fix_subnet) { ?> - <tr valign="top"> - <td align="right"><b><?php print_string("requiresubnet", "quiz") ?>:</b></td> - <td> - <input type="text" name="subnet" size="40" value="<?php p($form->subnet) ?>" /> - <?php helpbutton("requiresubnet", get_string("requiresubnet", "quiz"), "quiz"); ?> - </td> - </tr> -<?php } ?> - + choose_from_menu($grades, "grade", "$form->grade", ""); + helpbutton("maxgrade", get_string("maximumgrade"), "quiz"); + ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("requirepassword", "quiz") ?>:</b></p></td> + <td> + <input type="text" name="password" size=40 value="<?php p($form->password) ?>"> + <?php helpbutton("requirepassword", get_string("requirepassword", "quiz"), "quiz"); ?> + </td> +</tr> +<tr valign=top> + <td align=right><p><b><?php print_string("requiresubnet", "quiz") ?>:</b></p></td> + <td> + <input type="text" name="subnet" size=40 value="<?php p($form->subnet) ?>"> + <?php helpbutton("requiresubnet", get_string("requiresubnet", "quiz"), "quiz"); ?> + </td> +</tr> + </table> - -</div></td></tr> - -<?php } else { ?> -<input type="hidden" value="hide settings" id="optionsettingsbutton" /> -<input type="hidden" name="optionsettingspref" id="optionsettingspref" value="0" /> -<?php } ?> - -</table> -<br /> - +<input type="hidden" name=questions value="<?php p($form->questions) ?>"> <!-- these hidden variables are always the same --> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -<!-- provide an additional button to edit questions --> -<?php if ($form->instance) { ?> -<input type="hidden" name="redirecturl" value="<?php p("$CFG->wwwroot/mod/quiz/edit.php?quizid=$form->instance") ?>" /> -<input type="submit" name="redirect" value="<?php print_string('saveandedit', 'quiz') ?>" /> -<?php } ?> -<input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> +<input type="hidden" name=course value="<?php p($form->course) ?>"> +<input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name=section value="<?php p($form->section) ?>"> +<input type="hidden" name=module value="<?php p($form->module) ?>"> +<input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<input type="hidden" name=instance value="<?php p($form->instance) ?>"> +<input type="hidden" name=mode value="<?php p($form->mode) ?>"> +<input type="hidden" name=destination value="<?php echo "$CFG->wwwroot/course/mod.php" ?>"> +<input type="submit" value="<?php print_string("continue") ?>"> </center> </form> - -<script language="javascript" type="text/javascript"> - showhide('optionsettings', true); -</script> diff --git a/mod/quiz/multiple.php b/mod/quiz/multiple.php index 11f4676927b..eb93ac7648a 100644 --- a/mod/quiz/multiple.php +++ b/mod/quiz/multiple.php @@ -1,102 +1,86 @@ -<?php // $Id$ +<?PHP // $Id$ // A quick way to add lots of questions to a category (and a quiz) - require_once('../../config.php'); - require_once('locallib.php'); + require_once("../../config.php"); + require_once("lib.php"); - $category = required_param('category'); + require_variable($category); // This script can only be called while editing a quiz if (!isset($SESSION->modform)) { - error('You have used this page incorrectly!'); + error("You have used this page incorrectly!"); } else { $modform = $SESSION->modform; } - if (! $category = get_record('quiz_categories', 'id', $category)) { - error('Course ID is incorrect'); + if (! $category = get_record("quiz_categories", "id", $category)) { + error("Course ID is incorrect"); } - if (! $course = get_record('course', 'id', $category->course)) { - error('Course ID is incorrect'); + if (! $course = get_record("course", "id", $category->course)) { + error("Course ID is incorrect"); } - require_login($course->id, false); + require_login($course->id); if (!isteacher($course->id)) { - error('Only teachers can use this page!'); + error("Only teachers can use this page!"); } + /// If data submitted, then process and store. - if ($form = data_submitted() and confirm_sesskey()) { + if ($form = data_submitted()) { if ($form->randomcreate > 0) { - $newquestionids = array(); // this will hold the ids of the random questions - - // find existing random questions in this category - $random = RANDOM; - if ($existingquestions = get_records_select('quiz_questions', "qtype = '$random' AND category = '$category->id'")) { - // now remove the ones that are already used in this quiz - if ($questionids = explode(',', $modform->questions)) { - foreach ($questionids as $questionid) { - unset($existingquestions[$questionid]); - } - } - // now take as many of these as needed - $i = 0; - while (($existingquestion = array_pop($existingquestions)) and ($i < $form->randomcreate)) { - if ($existingquestion->questiontext == "$form->recurse") { - // this question has the right recurse property, so use it - $newquestionids[] = $existingquestion->id; - $i++; - } - } - $randomcreate = $form->randomcreate - $i; // the number of additional random questions needed. - } else { - $randomcreate = $form->randomcreate; - } + $existing = count_records("quiz_questions", "qtype", RANDOM, "category", $category->id); + $randomcreate = $form->randomcreate - $existing; if ($randomcreate > 0) { + $newquestionids = array(); $question->qtype = RANDOM; $question->category = $category->id; - $question->name = get_string('random', 'quiz') .' ('. $category->name .')'; - $question->questiontext = "$form->recurse"; // we use the questiontext field to store the info - // on whether to include questions in subcategories - $question->image = ''; + $question->name = get_string("random", "quiz")." (".$category->name.")"; + $question->questiontext = "---"; + $question->image = ""; $question->defaultgrade = $form->randomgrade; - $question->hidden = 1; for ($i=0; $i<$randomcreate; $i++) { $question->stamp = make_unique_id_code(); // Set the unique code (not to be changed) - if (!$newquestionids[] = insert_record('quiz_questions', $question)) { - error('Could not insert new random question!'); + if (!$newquestionids[] = insert_record("quiz_questions", $question)) { + error("Could not insert new random question!"); } } - } - // Add them to the quiz - if (!empty($modform->questions)) { - $questionids = explode(',', $modform->questions); - } else { - $questionids = array(); - } + // Add them to the quiz if necessary + if (!empty($form->addquestionstoquiz)) { + if (!empty($modform->questions)) { + $questionids = explode(",", $modform->questions); + foreach ($questionids as $questionid) { + foreach ($newquestionids as $key => $newquestionid) { + if ($newquestionid == $questionid) { + unset($newquestionids[$key]); + break; + } + } + } + } else { + $questionids = array(); + } - foreach ($newquestionids as $newquestionid) { - $modform->grades[$newquestionid] = $form->randomgrade; - $modform->sumgrades += $form->randomgrade; - } + foreach ($newquestionids as $newquestionid) { + $modform->grades[$newquestionid] = $form->randomgrade; + $modform->sumgrades += $form->randomgrade; + } - $newquestionids = array_merge($questionids, $newquestionids); - $modform->questions = implode(',', $newquestionids); - $SESSION->modform = $modform; - if (!set_field('quiz', 'questions', $modform->questions, 'id', $modform->instance)) { - error('Could not save question list'); + $newquestionids = array_merge($questionids, $newquestionids); + $modform->questions = implode(",", $newquestionids); + $SESSION->modform = $modform; + } } - quiz_questiongrades_update($modform->grades, $modform->instance); } - redirect('edit.php'); + redirect("edit.php"); } @@ -104,27 +88,27 @@ /// Print headings - $strquestions = get_string('questions', 'quiz'); - $strpublish = get_string('publish', 'quiz'); - $strdelete = get_string('delete'); - $straction = get_string('action'); - $stradd = get_string('add'); - $strcancel = get_string('cancel'); - $strsavechanges = get_string('savechanges'); - $strbacktoquiz = get_string('backtoquiz', 'quiz'); + $strquestions = get_string("questions", "quiz"); + $strpublish = get_string("publish", "quiz"); + $strdelete = get_string("delete"); + $straction = get_string("action"); + $stradd = get_string("add"); + $strcancel = get_string("cancel"); + $strsavechanges = get_string("savechanges"); + $strbacktoquiz = get_string("backtoquiz", "quiz"); $strquizzes = get_string('modulenameplural', 'quiz'); - $streditingquiz = get_string(isset($SESSION->modform->instance) ? 'editingquiz' : 'editquestions', 'quiz'); - $strcreatemultiple = get_string('createmultiple', 'quiz'); + $streditingquiz = get_string(isset($SESSION->modform->instance) ? "editingquiz" : "editquestions", "quiz"); + $strcreatemultiple = get_string("createmultiple", "quiz"); - print_header_simple($strcreatemultiple, $strcreatemultiple, + print_header_simple("$strcreatemultiple", "$strcreatemultiple", "<a href=\"$CFG->wwwroot/mod/quiz/index.php?id=$course->id\">$strquizzes</a>". " -> <a href=\"edit.php\">$streditingquiz</a> -> $strcreatemultiple"); - print_heading_with_help($strcreatemultiple, 'createmultiple', 'quiz'); + print_heading_with_help($strcreatemultiple, "createmultiple", "quiz"); - if (!$categories = quiz_get_category_menu($course->id, false)) { - error('No categories!'); + if (!$categories = quiz_get_category_menu($course->id, true)) { + error("No categories!"); } for ($i=1;$i<=100; $i++) { @@ -134,40 +118,45 @@ $gradecount[$i] = $i; } $options = array(); - $options[0] = get_string('no'); - $options[1] = get_string('yes'); + $options[0] = get_string("no"); + $options[1] = get_string("yes"); - print_simple_box_start('center'); - echo '<form method="POST" action="multiple.php">'; - echo "<input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\">"; - echo '<table cellpadding="5">'; - echo '<tr><td align="right">'; - print_string('category', 'quiz'); - echo ':</td><td>'; + print_simple_box_start("center", "", "$THEME->cellheading"); + echo "<FORM METHOD=\"POST\" ACTION=multiple.php>"; + echo "<TABLE cellpadding=5>"; + echo "<TR><TD align=right>"; + print_string("category", "quiz"); + echo ":</TD><TD>"; // choose_from_menu($categories, "category", "$category->id", ""); - quiz_category_select_menu($course->id, false, true, $category->id ); - echo '</tr>'; + quiz_category_select_menu($course->id, true, true, $category->id ); + echo "</TR>"; - echo '<tr><td align="right">'; - print_string('randomcreate', 'quiz'); - echo ':</td><td>'; - choose_from_menu($randomcount, 'randomcreate', '10', ''); - echo '</tr>'; + echo "<TR><TD align=right>"; + print_string("randomcreate", "quiz"); + echo ":</TD><TD>"; + choose_from_menu($randomcount, "randomcreate", "10", ""); + echo "</TR>"; - echo '<tr><td align="right">'; - print_string('defaultgrade', 'quiz'); - echo ':</td><td>'; - choose_from_menu($gradecount, 'randomgrade', '1', ''); - echo '</tr>'; + echo "<TR><TD align=right>"; + print_string("defaultgrade", "quiz"); + echo ":</TD><TD>"; + choose_from_menu($gradecount, "randomgrade", "1", ""); + echo "</TR>"; - echo '<tr><td>&nbsp;</td><td>'; - echo ' <input type="hidden" name="category" value="'. $category->id .'" />'; - echo ' <input type="submit" name="save" value="'. get_string('add') .'" />'; - echo '</td></tr>'; - echo '</table>'; - echo '</form>'; + echo "<TR><TD align=right>"; + print_string("addquestionstoquiz", "quiz"); + echo ":</TD><TD>"; + choose_from_menu($options, "addquestionstoquiz", "1", ""); + echo "</TR>"; + + echo "<TR><TD>&nbsp;</TD><TD>"; + echo " <INPUT TYPE=hidden NAME=category VALUE=\"$category->id\">"; + echo " <INPUT TYPE=submit NAME=save VALUE=\"$strcreatemultiple\">"; + echo "</TD></TR>"; + echo "</TABLE>"; + echo "</FORM>"; print_simple_box_end(); - print_footer($course); + print_footer(); ?> diff --git a/mod/quiz/pagelib.php b/mod/quiz/pagelib.php deleted file mode 100644 index a953f891439..00000000000 --- a/mod/quiz/pagelib.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php // $Id$ - -require_once($CFG->libdir.'/pagelib.php'); - -define('PAGE_QUIZ_VIEW', 'mod-quiz-view'); - -page_map_class(PAGE_QUIZ_VIEW, 'page_quiz'); - -$DEFINEDPAGES = array(PAGE_QUIZ_VIEW); - -/** - * Class that models the behavior of a quiz - * - * @author Jon Papaioannou - * @package pages - */ - -class page_quiz extends page_generic_activity { - - function init_quick($data) { - if(empty($data->pageid)) { - error('Cannot quickly initialize page: empty course id'); - } - $this->activityname = 'quiz'; - parent::init_quick($data); - } - - function print_header($title, $morebreadcrumbs = NULL) { - global $USER, $CFG; - - $this->init_full(); - $replacements = array( - '%fullname%' => format_string($this->activityrecord->name) - ); - foreach($replacements as $search => $replace) { - $title = str_replace($search, $replace, $title); - } - - if($this->courserecord->id == SITEID) { - $breadcrumbs = array(); - } - else { - $breadcrumbs = array($this->courserecord->shortname => $CFG->wwwroot.'/course/view.php?id='.$this->courserecord->id); - } - - $breadcrumbs[get_string('modulenameplural', 'quiz')] = $CFG->wwwroot.'/mod/quiz/index.php?id='.$this->courserecord->id; - $breadcrumbs[format_string($this->activityrecord->name)] = $CFG->wwwroot.'/mod/quiz/view.php?id='.$this->modulerecord->id; - - if(!empty($morebreadcrumbs)) { - $breadcrumbs = array_merge($breadcrumbs, $morebreadcrumbs); - } - - $total = count($breadcrumbs); - $current = 1; - $crumbtext = ''; - foreach($breadcrumbs as $text => $href) { - if($current++ == $total) { - $crumbtext .= ' '.$text; - } - else { - $crumbtext .= ' <a href="'.$href.'">'.$text.'</a> ->'; - } - } - - if(empty($morebreadcrumbs) && $this->user_allowed_editing()) { - $buttons = '<table><tr><td><form target="'.$CFG->framename.'" method="get" action="edit.php">'. - '<input type="hidden" name="quizid" value="'.$this->activityrecord->id.'" />'. - '<input type="submit" value="'.get_string('editquestions', 'quiz').'" /></form></td><td>'. - update_module_button($this->modulerecord->id, $this->courserecord->id, get_string('modulename', 'quiz')).'</td>'; - if(!empty($CFG->showblocksonmodpages)) { - $buttons .= '<td><form target="'.$CFG->framename.'" method="get" action="view.php">'. - '<input type="hidden" name="id" value="'.$this->modulerecord->id.'" />'. - '<input type="hidden" name="edit" value="'.($this->user_is_editing()?'off':'on').'" />'. - '<input type="submit" value="'.get_string($this->user_is_editing()?'blockseditoff':'blocksediton').'" /></form></td>'; - } - $buttons .= '</tr></table>'; - } - else { - $buttons = '&nbsp;'; - } - print_header($title, $this->courserecord->fullname, $crumbtext, '', '', true, $buttons, navmenu($this->courserecord, $this->modulerecord)); - - } - - function get_type() { - return PAGE_QUIZ_VIEW; - } -} - -?> diff --git a/mod/quiz/preview.php b/mod/quiz/preview.php index 136c6b2353a..63cb916e32b 100644 --- a/mod/quiz/preview.php +++ b/mod/quiz/preview.php @@ -1,104 +1,149 @@ -<?php // $Id$ +<?php + require_once("../../config.php"); + require_once("lib.php"); + require_once("../../files/mimetypes.php"); -require_once("../../config.php"); -require_once("locallib.php"); + optional_variable($id); // question id -require_variable($id); // question id -optional_variable($quizid, 0); + optional_variable($qtype); + optional_variable($category); -if (! $question = get_record("quiz_questions", "id", $id)) { - error("This question doesn't exist"); -} -if (! $category = get_record("quiz_categories", "id", $question->category)) { - error("This question doesn't belong to a valid category!"); -} -if ($quizid) { - if (! $quiz = get_record('quiz', 'id', $quizid)) { - error('Incorrect quiz id'); + if ($id) { + if (! $question = get_record("quiz_questions", "id", $id)) { + error("This question doesn't exist"); + } + if (!empty($category)) { + $question->category = $category; + } + if (! $category = get_record("quiz_categories", "id", $question->category)) { + error("This question doesn't belong to a valid category!"); + } + if (! $course = get_record("course", "id", $category->course)) { + error("This question category doesn't belong to a valid course!"); + } + + $qtype = $question->qtype; + + + } else if ($category) { + if (! $category = get_record("quiz_categories", "id", $category)) { + error("This wasn't a valid category!"); + } + if (! $course = get_record("course", "id", $category->course)) { + error("This category doesn't belong to a valid course!"); + } + + $question->category = $category->id; + $question->qtype = $qtype; + + } else { + error("Must specify question id or category"); } -} else { - // make fake quiz - $quiz->id = 0; - $quiz->course = $category->course; - $quiz->name = ""; - $quiz->intro = ""; - $quiz->timeopen = 0; - $quiz->timeclose = 0; - $quiz->attempts = $CFG->quiz_attempts; - $quiz->attemptonlast = $CFG->quiz_attemptonlast; - $quiz->feedback = $CFG->quiz_showfeedback; - $quiz->correctanswers = $CFG->quiz_showanswer; - $quiz->grademethod = $CFG->quiz_grademethod; - $quiz->review = $CFG->quiz_allowreview; - $quiz->shufflequestions = $CFG->quiz_shufflequestions; - $quiz->shuffleanswers = $CFG->quiz_shuffleanswers; - $quiz->questions = "$question->id"; - $quiz->sumgrades = $question->defaultgrade; - $quiz->grade = 0; - $quiz->timecreated = 0; - $quiz->timemodified = 0; - $quiz->timelimit = $CFG->quiz_timelimit; - $quiz->password = $CFG->quiz_password; - $quiz->subnet = $CFG->quiz_subnet; - $quiz->popup = $CFG->quiz_popup; -} -$qtype = $question->qtype; + if (empty($qtype)) { + error("No question type was specified!"); + } else if (!isset($QUIZ_QTYPES[$qtype])) { + error("Could not find question type: '$qtype'"); + } -require_login(); + require_login($course->id); -if (!isteacherinanycourse()) { - error('This page is for teachers only'); -} -if (!isteacher($category->course) and !$category->publish) { - error("You can't preview these questions!"); -} + if (!isteacheredit($course->id)) { + error("You can't modify these questions!"); + } -print_header(); -print_heading(get_string("previewquestion","quiz")); -if ($rawanswers = data_submitted()) { - $rawanswers = (array)$rawanswers; + $strquizzes = get_string('modulenameplural', 'quiz'); + $streditingquiz = get_string(isset($SESSION->modform->instance) ? "editingquiz" : "editquestions", "quiz"); + $streditingquestion = get_string("editingquestion", "quiz"); - foreach ($rawanswers as $key => $value) { // Parse input for question->response + print_header(); + print_heading(get_string("previewquestion","quiz")); + + echo "<p align='center'><input type=\"button\" onClick=\"window.close()\" value=\"" . get_string("close", "quiz") . "\"></p>"; + + if (empty($question->id)) { + $question->id = ""; + } + if (empty($question->name)) { + $question->name = ""; + } + if (empty($question->questiontext)) { + $question->questiontext = ""; + } + if (empty($question->image)) { + $question->image = ""; + } + + if ($results && isset($results->details[$question->id])) { + $details = $results->details[$question->id]; + } else { + $details = false; + } + + if($rawanswers = data_submitted()) { + $rawanswers = (array)$rawanswers; + + $answers = array(); + $feedbacks = array(); + $qids = array(); + + foreach ($rawanswers as $key => $value) { // Parse input for question->response $postedId = quiz_extract_posted_id($key); - if ($id == $postedId) $question->response[$key] = trim($value); + if ($id == $postedId) { + $question->response[$key] = trim($value); + $questionType = $QUIZ_QTYPES[$question->qtype]->name(); + $rezult = get_exp_answers($id); //answers from the database + + if($rezult) { + foreach ($rezult as $qid => $answer) { + if($qid == $value || $answer->answer == $value) { + $feedbacks[$qid] = "&nbsp;-&nbsp;<span class=\"feedbacktext\">".format_text($answer->feedback, true, false)."</span>"; + if($answer->fraction > 0) + $answers[$qid] = "<span class=\"highlight\">" . $answer->answer . "</span>"; + else + $answers[$qid] = $answer->answer; + } else { + if(!isset($answers[$qid])) { + if($answer->fraction > 0) + $answers[$qid] = "<span class=\"highlight\">" . $answer->answer . "</span>"; + else + $answers[$qid] = $answer->answer; + $feedbacks[$qid] = ''; + } + } + $qids[] = $qid; + } + }//end if rezult + }//end if pId==id + }//end for each rowanswers + + print_simple_box_start("center", "90%"); + $QUIZ_QTYPES[$question->qtype]->print_question + (1, 0, $question, true, $resultdetails); + + $qids = array_unique($qids); //erease duplicates + for($i = 0; $i < count($qids); $i++) { + global $THEME; + echo "<p align=\"left\">" . $answers[$qids[$i]] . format_text($feedbacks[$qids[$i]], true, false)."</p>"; + } + print_simple_box_end(); + + } else {//show question list + echo "<form method=\"post\" action=\"preview.php\" $onsubmit>\n"; + echo "<input type=\"hidden\" name=\"id\" value=\"$id\" />\n"; + + print_simple_box_start("center", "90%"); + $nextquestionnumber = $QUIZ_QTYPES[$question->qtype]->print_question + ($nextquestionnumber, $quiz, $question, $readonly, $resultdetails); + print_simple_box_end(); + + echo "<br />"; + echo "<center>"; + echo "<input name=\"submit\" type=\"submit\" value=\"".get_string("checkanswer", "quiz")."\"/>\n"; + echo "</center>"; + echo "</form>"; } - print_simple_box_start("center", "90%"); - - $resultdetails = $QUIZ_QTYPES[$question->qtype]->grade_response($question, quiz_qtype_nameprefix($question)); - - $question->maxgrade = 1; - $quiz->correctanswers=1; - $quiz->feedback=1; - $quiz->grade=1; - $QUIZ_QTYPES[$question->qtype]->print_question(1, $quiz, $question, true, $resultdetails); - - print_simple_box_end(); - echo "<p align=\"center\"><input name=\"backbtn\" type=\"button\" - onclick=\"history.back()\" value=\"".get_string("back", "quiz")."\" />\n"; - echo "<input type=\"button\" onClick=\"window.close()\" value=\"" . get_string("close", "quiz") . "\" /></p>\n"; - -} else { //show question list - echo "<form method=\"post\" action=\"preview.php\">\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$id\" />\n"; - - print_simple_box_start("center", "90%"); - $readonly = false; - $resultdetails = NULL; - $QUIZ_QTYPES[$question->qtype]->print_question(1, $quiz, $question, $readonly, $resultdetails); - print_simple_box_end(); - - echo "<br />"; - echo "<center>"; - echo "<input name=\"submit\" type=\"submit\" value=\"".get_string("checkanswer", "quiz")."\" />\n"; - echo "<input type=\"button\" onClick=\"window.close()\" value=\"" . get_string("close", "quiz") . "\" />"; - echo "</center>"; - echo "</form>"; -} - -print_footer(); - ?> diff --git a/mod/quiz/protect_js.php b/mod/quiz/protect_js.php deleted file mode 100644 index cd60857dba5..00000000000 --- a/mod/quiz/protect_js.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.'); ?> - -<style media="print">body {display:none}</style> - -<script language="JavaScript" type="text/javascript"> -<!-- - -var message = "<?php print_string('functiondisabled'); ?>"; - -function click(e) { - if (document.all) { - if (event.button==1) { - return false; - } - if (event.button==2) { - alert(message); - return false; - } - } - if (document.layers) { - if (e.which > 1) { - alert(message); - return false; - } - } -} -if (document.layers) { - document.captureEvents(Event.MOUSEDOWN); -} -document.onmousedown=click; -document.oncontextmenu=new Function("alert(message);return false") - -document.write(unescape("%3C%53%43%52%49%50%54%20%4C%41%4E%47%55%41%47%45%3D%22%4A%61%76%61%53%63%72%69%70%74%22%3E%3C%21%2D%2D%0D%0A%68%70%5F%6F%6B%3D%74%72%75%65%3B%66%75%6E%63%74%69%6F%6E%20%68%70%5F%64%30%30%28%73%29%7B%69%66%28%21%68%70%5F%6F%6B%29%72%65%74%75%72%6E%3B%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%73%29%7D%2F%2F%2D%2D%3E%3C%2F%53%43%52%49%50%54%3E")); - -hp_d00(unescape("%3C%53%43%52%49%50%54%20%4C%41%4E%47%55%41%47%45%3D%22%4A%61%76%61%53%63%72%69%70%74%22%3E%3C%21%2D%2D%0D%0A%66%75%6E%63%74%69%6F%6E%20%68%70%5F%6E%65%28%29%7B%72%65%74%75%72%6E%20%74%72%75%65%7D%6F%6E%65%72%72%6F%72%3D%68%70%5F%6E%65%3B%66%75%6E%63%74%69%6F%6E%20%68%70%5F%64%6E%28%61%29%7B%72%65%74%75%72%6E%20%66%61%6C%73%65%7D%3B%66%75%6E%63%74%69%6F%6E%20%68%70%5F%64%65%28%65%29%7B%72%65%74%75%72%6E%28%65%2E%74%61%72%67%65%74%2E%74%61%67%4E%61%6D%65%21%3D%6E%75%6C%6C%26%26%65%2E%74%61%72%67%65%74%2E%74%61%67%4E%61%6D%65%2E%73%65%61%72%63%68%28%27%5E%28%49%4E%50%55%54%7C%54%45%58%54%41%52%45%41%7C%42%55%54%54%4F%4E%7C%53%45%4C%45%43%54%29%24%27%29%21%3D%2D%31%29%7D%3B%66%75%6E%63%74%69%6F%6E%20%68%70%5F%6D%64%28%65%29%7B%69%66%28%65%2E%77%68%69%63%68%3D%3D%31%29%7B%77%69%6E%64%6F%77%2E%63%61%70%74%75%72%65%45%76%65%6E%74%73%28%45%76%65%6E%74%2E%4D%4F%55%53%45%4D%4F%56%45%29%3B%77%69%6E%64%6F%77%2E%6F%6E%6D%6F%75%73%65%6D%6F%76%65%3D%68%70%5F%64%6E%7D%7D%66%75%6E%63%74%69%6F%6E%20%68%70%5F%6D%75%28%65%29%7B%69%66%28%65%2E%77%68%69%63%68%3D%3D%31%29%7B%77%69%6E%64%6F%77%2E%72%65%6C%65%61%73%65%45%76%65%6E%74%73%28%45%76%65%6E%74%2E%4D%4F%55%53%45%4D%4F%56%45%29%3B%77%69%6E%64%6F%77%2E%6F%6E%6D%6F%75%73%65%6D%6F%76%65%3D%6E%75%6C%6C%7D%7D%69%66%28%6E%61%76%69%67%61%74%6F%72%2E%61%70%70%4E%61%6D%65%2E%69%6E%64%65%78%4F%66%28%27%49%6E%74%65%72%6E%65%74%20%45%78%70%6C%6F%72%65%72%27%29%3D%3D%2D%31%7C%7C%28%6E%61%76%69%67%61%74%6F%72%2E%75%73%65%72%41%67%65%6E%74%2E%69%6E%64%65%78%4F%66%28%27%4D%53%49%45%27%29%21%3D%2D%31%26%26%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%2E%6C%65%6E%67%74%68%21%3D%30%29%29%7B%69%66%28%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%29%7B%64%6F%63%75%6D%65%6E%74%2E%6F%6E%73%65%6C%65%63%74%73%74%61%72%74%3D%68%70%5F%64%6E%7D%65%6C%73%65%20%69%66%28%64%6F%63%75%6D%65%6E%74%2E%6C%61%79%65%72%73%29%7B%77%69%6E%64%6F%77%2E%63%61%70%74%75%72%65%45%76%65%6E%74%73%28%45%76%65%6E%74%2E%4D%4F%55%53%45%55%50%7C%45%76%65%6E%74%2E%4D%4F%55%53%45%44%4F%57%4E%29%3B%77%69%6E%64%6F%77%2E%6F%6E%6D%6F%75%73%65%64%6F%77%6E%3D%68%70%5F%6D%64%3B%77%69%6E%64%6F%77%2E%6F%6E%6D%6F%75%73%65%75%70%3D%68%70%5F%6D%75%7D%65%6C%73%65%20%69%66%28%64%6F%63%75%6D%65%6E%74%2E%67%65%74%45%6C%65%6D%65%6E%74%42%79%49%64%26%26%21%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%29%7B%64%6F%63%75%6D%65%6E%74%2E%6F%6E%6D%6F%75%73%65%64%6F%77%6E%3D%68%70%5F%64%65%7D%7D%69%66%28%77%69%6E%64%6F%77%2E%6C%6F%63%61%74%69%6F%6E%2E%68%72%65%66%2E%73%75%62%73%74%72%69%6E%67%28%30%2C%34%29%3D%3D%22%66%69%6C%65%22%29%77%69%6E%64%6F%77%2E%6C%6F%63%61%74%69%6F%6E%3D%22%61%62%6F%75%74%3A%62%6C%61%6E%6B%22%3B%66%75%6E%63%74%69%6F%6E%20%68%70%5F%6E%6C%73%28%29%7B%77%69%6E%64%6F%77%2E%73%74%61%74%75%73%3D%22%22%3B%73%65%74%54%69%6D%65%6F%75%74%28%22%68%70%5F%6E%6C%73%28%29%22%2C%31%30%29%7D%68%70%5F%6E%6C%73%28%29%3B%66%75%6E%63%74%69%6F%6E%20%68%70%5F%64%70%31%28%29%7B%66%6F%72%28%69%3D%30%3B%69%3C%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%2E%6C%65%6E%67%74%68%3B%69%2B%2B%29%7B%69%66%28%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%5B%69%5D%2E%73%74%79%6C%65%2E%76%69%73%69%62%69%6C%69%74%79%21%3D%22%68%69%64%64%65%6E%22%29%7B%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%5B%69%5D%2E%73%74%79%6C%65%2E%76%69%73%69%62%69%6C%69%74%79%3D%22%68%69%64%64%65%6E%22%3B%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%5B%69%5D%2E%69%64%3D%22%68%70%5F%69%64%22%7D%7D%7D%3B%66%75%6E%63%74%69%6F%6E%20%68%70%5F%64%70%32%28%29%7B%66%6F%72%28%69%3D%30%3B%69%3C%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%2E%6C%65%6E%67%74%68%3B%69%2B%2B%29%7B%69%66%28%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%5B%69%5D%2E%69%64%3D%3D%22%68%70%5F%69%64%22%29%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%5B%69%5D%2E%73%74%79%6C%65%2E%76%69%73%69%62%69%6C%69%74%79%3D%22%22%7D%7D%3B%77%69%6E%64%6F%77%2E%6F%6E%62%65%66%6F%72%65%70%72%69%6E%74%3D%68%70%5F%64%70%31%3B%77%69%6E%64%6F%77%2E%6F%6E%61%66%74%65%72%70%72%69%6E%74%3D%68%70%5F%64%70%32%3B%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%27%3C%73%74%79%6C%65%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%20%6D%65%64%69%61%3D%22%70%72%69%6E%74%22%3E%3C%21%2D%2D%62%6F%64%79%7B%64%69%73%70%6C%61%79%3A%6E%6F%6E%65%7D%2D%2D%3E%3C%2F%73%74%79%6C%65%3E%27%29%3B%66%75%6E%63%74%69%6F%6E%20%68%70%5F%64%63%28%29%7B%68%70%5F%74%61%2E%63%72%65%61%74%65%54%65%78%74%52%61%6E%67%65%28%29%2E%65%78%65%63%43%6F%6D%6D%61%6E%64%28%22%43%6F%70%79%22%29%3B%73%65%74%54%69%6D%65%6F%75%74%28%22%68%70%5F%64%63%28%29%22%2C%33%30%30%29%7D%69%66%28%6E%61%76%69%67%61%74%6F%72%2E%61%70%70%4E%61%6D%65%2E%69%6E%64%65%78%4F%66%28%27%49%6E%74%65%72%6E%65%74%20%45%78%70%6C%6F%72%65%72%27%29%3D%3D%2D%31%7C%7C%28%6E%61%76%69%67%61%74%6F%72%2E%75%73%65%72%41%67%65%6E%74%2E%69%6E%64%65%78%4F%66%28%27%4D%53%49%45%27%29%21%3D%2D%31%26%26%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%2E%6C%65%6E%67%74%68%21%3D%30%29%29%7B%69%66%28%64%6F%63%75%6D%65%6E%74%2E%61%6C%6C%26%26%6E%61%76%69%67%61%74%6F%72%2E%75%73%65%72%41%67%65%6E%74%2E%69%6E%64%65%78%4F%66%28%27%4F%70%65%72%61%27%29%3D%3D%2D%31%29%7B%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%27%3C%64%69%76%20%73%74%79%6C%65%3D%22%70%6F%73%69%74%69%6F%6E%3A%61%62%73%6F%6C%75%74%65%3B%6C%65%66%74%3A%2D%31%30%30%30%70%78%3B%74%6F%70%3A%2D%31%30%30%30%70%78%22%3E%3C%69%6E%70%75%74%20%74%79%70%65%3D%22%74%65%78%74%61%72%65%61%22%20%6E%61%6D%65%3D%22%68%70%5F%74%61%22%20%76%61%6C%75%65%3D%22%20%22%20%73%74%79%6C%65%3D%22%76%69%73%69%62%69%6C%69%74%79%3A%68%69%64%64%65%6E%22%3E%3C%2F%64%69%76%3E%27%29%3B%68%70%5F%64%63%28%29%7D%7D%66%75%6E%63%74%69%6F%6E%20%68%70%5F%6E%64%64%28%29%7B%72%65%74%75%72%6E%20%66%61%6C%73%65%7D%64%6F%63%75%6D%65%6E%74%2E%6F%6E%64%72%61%67%73%74%61%72%74%3D%68%70%5F%6E%64%64%3B%2F%2F%2D%2D%3E%3C%2F%53%43%52%49%50%54%3E")); - -//--> -</script> diff --git a/mod/quiz/question.php b/mod/quiz/question.php index b9409c0e491..02bd2b462ea 100644 --- a/mod/quiz/question.php +++ b/mod/quiz/question.php @@ -1,36 +1,14 @@ -<?php // $Id$ -/* Responsibilities of question.php - * - create new question (category, qtype) - * - edit question (id, contextquiz (o)) - * - delete question from quiz (delete, sesskey) - * - delete question (in two steps) - * - if question is in use: display this conflict (allow to hide the question?) - * - else: confirm deletion and delete from database (sesskey, id, delete, confirm) - * - cancel (cancel) - * (o) = optional - */ +<?PHP // $Id$ + /// For creating and editing quiz questions. require_once("../../config.php"); - require_once("locallib.php"); - require_once($CFG->libdir.'/filelib.php'); + require_once("lib.php"); + require_once("../../files/mimetypes.php"); - $id = optional_param('id'); // question id + optional_variable($id); // question id - $qtype = optional_param('qtype'); - $category = optional_param('category'); - - $contextquiz = optional_param('contextquiz'); // the quiz from which this question is being edited - - if (isset($_REQUEST['cancel'])) { - redirect("edit.php"); - } - - if(!empty($id) && isset($_REQUEST['hide']) && confirm_sesskey()) { - if(!set_field('quiz_questions', 'hidden', $_REQUEST['hide'], 'id', $id)) { - error("Faild to hide the question."); - } - redirect('edit.php'); - } + optional_variable($qtype); + optional_variable($category); if ($id) { if (! $question = get_record("quiz_questions", "id", $id)) { @@ -49,7 +27,7 @@ $qtype = $question->qtype; - } else if ($category) { // only for creating new questions + } else if ($category) { if (! $category = get_record("quiz_categories", "id", $category)) { error("This wasn't a valid category!"); } @@ -70,39 +48,25 @@ error("Could not find question type: '$qtype'"); } - require_login($course->id, false); + require_login($course->id); if (!isteacheredit($course->id)) { error("You can't modify these questions!"); } $strquizzes = get_string('modulenameplural', 'quiz'); - $streditingquestion = get_string('editingquestion', 'quiz'); - if (isset($SESSION->modform->instance)) { - $strediting = '<a href="edit.php">'.get_string('editingquiz', 'quiz').'</a> -> '. - $streditingquestion; - } else { - $strediting = '<a href="edit.php?courseid='.$course->id.'">'. - get_string("editquestions", "quiz").'</a> -> '.$streditingquestion; - } + $streditingquiz = get_string(isset($SESSION->modform->instance) ? "editingquiz" : "editquestions", "quiz"); + $streditingquestion = get_string("editingquestion", "quiz"); - print_header_simple("$streditingquestion", "", + print_header_simple("$streditingquestion", "$streditingquestion", "<a href=\"$CFG->wwwroot/mod/quiz/index.php?id=$course->id\">$strquizzes</a>". - " -> ".$strediting); + " -> <a href=\"edit.php\">$streditingquiz</a> -> $streditingquestion"); - if (isset($_REQUEST['delete'])) { - if (isset($confirm) and confirm_sesskey()) { + if (isset($delete)) { + if (isset($confirm)) { if ($confirm == md5($delete)) { - if (record_exists('quiz_responses', 'question', $question->id) or - record_exists('quiz_responses', 'originalquestion', $question->id) or - record_exists('quiz_question_grades', 'question', $question->id)) { - if (!set_field('quiz_questions', 'hidden', 1, 'id', $delete)) { - error('Was not able to hide question'); - } - } else { - if (!delete_records("quiz_questions", "id", $question->id)) { - error("An error occurred trying to delete question (id $question->id)"); - } + if (!delete_records("quiz_questions", "id", $question->id)) { + error("An error occurred trying to delete question (id $question->id)"); } redirect("edit.php"); } else { @@ -110,131 +74,57 @@ } } else { - if ($quiznames = quizzes_question_used($id)) { - $a->questionname = $question->name; - $a->quiznames = implode(', ', $quiznames); - notify(get_string('questioninuse', 'quiz', $a)); + // determine if the question is being used in any quiz + if ($category->publish) { + $quizzes = get_records("quiz"); + } else { + $quizzes = get_records("quiz", "course", $course->id); } - - notice_yesno(get_string("deletequestioncheck", "quiz", $question->name), - "question.php?sesskey=$USER->sesskey&amp;id=$question->id&amp;delete=$delete&amp;confirm=".md5($delete), "edit.php"); - } - print_footer($course); - exit; - } - - if ($form = data_submitted() and confirm_sesskey()) { - - if (isset($form->versioning)) { // use new code that - // handles whether to overwrite or copy a question and keeps - // track of the versions in the quiz_question_versions table - - // $replaceinquiz is an array with the ids of all quizzes in which the teacher has chosen to replace the old version - $replaceinquiz = array(); - foreach($form as $key => $val) { - if ($tmp = quiz_parse_fieldname($key, 'q')) { - if ($tmp['mode'] == 'replace') { - $replaceinquiz[$tmp['id']] = $tmp['id']; - unset($form->$key); - } - } - } - - // $quizlist is an array with the ids of quizzes which use this question - $quizlist = array(); - if ($grades = get_records('quiz_question_grades', 'question', $form->id)) { - foreach($grades as $grade) { - $quizlist[$grade->quiz] = $grade->quiz; - } - } - - if (isset($form->makecopy)) { // explicitly requested copies should be unhidden - $question->hidden = 0; - } - - // Logic to determine whether old version should be overwritten - $makecopy = isset($form->makecopy) || (!$form->id); unset($form->makecopy); - $noresponses = $makecopy || !(record_exists('quiz_responses', 'question', $form->id) or - record_exists('quiz_responses', 'originalquestion', $form->id)); // Should be improved once the preview flag exists so that teacher preview responses are not taken into account - $notused = $makecopy || !record_exists('quiz_question_grades', 'question', $form->id); - $replaceinall = ($quizlist == $replaceinquiz); // question is being replaced in all quizzes - $replaceold = (!$makecopy && $noresponses && ($notused || $replaceinall)); - - if (!$replaceold) { // create a new question - $oldquestionid = $question->id; - if (!$makecopy) { - if (!set_field("quiz_questions", 'hidden', 1, 'id', $question->id)) { - error("Could not hide question!"); - } - } - unset($question->id); - } - unset($makecopy, $noresponses, $notused, $replaceinall, $replaceold); - - $question = $QUIZ_QTYPES[$qtype]->save_question($question, $form, $course); - - if(!isset($question->id)) { - error("Failed to save the question!"); - } - - if(isset($oldquestionid)) { - // create version entries for different quizzes - $version = new object(); - $version->oldquestion = $oldquestionid; - $version->newquestion = $question->id; - $version->userid = $USER->id; // field still needs to be added to table - $version->timestamp = time(); - - foreach($replaceinquiz as $qid) { - $version->quiz = $qid; - if(!insert_record("quiz_question_versions", $version)) { - error("Could not store version information of question $oldquestionid in quiz $qid!"); - } - } - - /// now update the question references in the quizzes - - $quizzes = implode(',', $replaceinquiz); - if (empty($quizzes) || !$quizzes = get_records_list("quiz", "id", $quizzes)) { - $quizzes = array(); - } - foreach($quizzes as $quiz) { - $questionlist = ",$quiz->questions,"; // a little hack with the commas here. not nice but effective - $questionlist = str_replace(",$oldquestionid,", ",$question->id,", $questionlist); - $questionlist = substr($questionlist, 1, -1); // and get rid of the surrounding commas again - if (!set_field("quiz", 'questions', $questionlist, 'id', $quiz->id)) { - error("Could not update questionlist in quiz $quiz->id!"); - } - // the quiz_question_grades table needs to be updated too (aah, the joys of duplication :) - if (!set_field('quiz_question_grades', 'question', $question->id, 'quiz', $quiz->id, 'question', $oldquestionid)) { - error("Could not update question grade!"); - } - if (isset($SESSION->modform) && (int)$SESSION->modform->instance === (int)$quiz->id) { - $SESSION->modform->questions = $questionlist; - $SESSION->modform->grades[$question->id] = $SESSION->modform->grades[$oldquestionid]; - unset($SESSION->modform->grades[$oldquestionid]); - } - } - - // fix responses - if ($attempts = get_records_list('quiz_attempts', 'quiz', implode(',', $replaceinquiz))) { - foreach ($attempts as $attempt) { - if (!set_field('quiz_responses', 'originalquestion', $oldquestionid, 'attempt', $attempt->id, 'question', $oldquestionid) - or !set_field('quiz_responses', 'question', $question->id, 'attempt', $attempt->id, 'question', $oldquestionid)) { - error("Could not point responses to new question"); + $beingused = array(); + if ($quizzes) { + foreach ($quizzes as $quiz) { + $qqq = explode(",", $quiz->questions); + foreach ($qqq as $key => $value) { + if ($value == $delete) { + $beingused[] = $quiz->name; } } } } + if ($beingused) { + $beingused = implode(", ", $beingused); + $beingused = get_string("questioninuse", "quiz", "<I>$question->name</I>")."<P>".$beingused; + notice($beingused, "edit.php"); - redirect("edit.php"); - } else { // use the old code which simply overwrites old versions - $question = $QUIZ_QTYPES[$qtype]->save_question($question, $form, $course); - redirect("edit.php"); + } else { // the question is not used in any of the existing quizzes + + // we also have to check if the question is being used in the quiz + // which is currently being set up + if (isset($SESSION->modform)) { + if ($qus = explode(",", $SESSION->modform->questions)) { + foreach ($qus as $key => $qu) { + if ($qu == $delete) { + unset($qus[$key]); + unset($SESSION->modform->grades[$qu]); + } + } + } + $SESSION->modform->questions = implode(",", $qus); + } + + notice_yesno(get_string("deletequestioncheck", "quiz", $question->name), + "question.php?id=$question->id&delete=$delete&confirm=".md5($delete), "edit.php"); + } + print_footer($course); + exit; } + } + + if ($form = data_submitted()) { + $question = $QUIZ_QTYPES[$qtype]->save_question($question, $form, $course); } - $grades = array(1,0.9,0.8,0.75,0.70,0.66666,0.60,0.50,0.40,0.33333,0.30,0.25,0.20,0.16666,0.142857,0.10,0.05,0); + $grades = array(1,0.9,0.8,0.75,0.70,0.66666,0.60,0.50,0.40,0.33333,0.30,0.25,0.20,0.16666,0.10,0.05,0); foreach ($grades as $grade) { $percentage = 100 * $grade; $neggrade = -$grade; @@ -247,7 +137,7 @@ arsort($gradeoptions, SORT_NUMERIC); arsort($gradeoptionsfull, SORT_NUMERIC); - if (!$categories = quiz_get_category_menu($course->id, false)) { + if (!$categories = quiz_get_category_menu($course->id, true)) { error("No categories!"); } @@ -281,11 +171,8 @@ } else { $defaultformat = FORMAT_MOODLE; } - - echo '<br />'; - print_simple_box_start('center'); + require('questiontypes/'.$QUIZ_QTYPES[$qtype]->name().'/editquestion.php'); - print_simple_box_end(); if ($usehtmleditor) { use_html_editor('questiontext'); diff --git a/mod/quiz/questiontypes/calculated/calculated.html b/mod/quiz/questiontypes/calculated/calculated.html index 01b22ef894d..e454bf00be2 100644 --- a/mod/quiz/questiontypes/calculated/calculated.html +++ b/mod/quiz/questiontypes/calculated/calculated.html @@ -1,27 +1,27 @@ -<form name="theform" method="post" action="question.php"> -<center> -<input type="hidden" name="nextwizardpage" value="<?php p($nextwizardpage)?>" /> +<FORM name="theform" method="post" action="question.php"> +<CENTER> +<INPUT type="hidden" name="nextwizardpage" value="<?php p($nextwizardpage)?>"/> <?php foreach ($calculatedmessages as $message) {formerr("$message<br/>");} ?> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("category", "quiz") ?>:</b></td> - <td> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string("category", "quiz") ?>:</B></P></TD> + <TD> <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("questionname", "quiz") ?>:</b></td> - <td> - <input type="text" name="name" size="50" value="<?php p($question->name) ?>" alt="<?php print_string("questionname", "quiz") ?>" /> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("questionname", "quiz") ?>:</B></P></TD> + <TD> + <INPUT type="text" name="name" size=50 value="<?php p($question->name) ?>"> <?php if (isset($err["name"])) formerr($err["name"]); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("question", "quiz") ?>:</b> + </TD> +</TR> +<tr valign=top> + <td align="right"><p><b><?php print_string("question", "quiz") ?>:</b></p> <br /> <br /> <br /> - <span class="editorhelptext"> + <p><font SIZE="1"> <?php if ($usehtmleditor) { helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); @@ -29,7 +29,7 @@ helpbutton("text", get_string("helptext"), "moodle", true, true); } ?> - </span> + </font></p> </td> <td> <?php if (isset($err["questiontext"])) { @@ -40,9 +40,9 @@ print_textarea($usehtmleditor, 20, 60, 630, 300, "questiontext", $question->questiontext); if ($usehtmleditor) { /// Trying this out for a while - echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'" />'; + echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'">'; } else { - echo '<div align="right">'; + echo "<div align=right>"; print_string("formattexttype"); echo ":&nbsp;"; if (!isset($question->questiontextformat)) { @@ -55,105 +55,97 @@ ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("imagedisplay", "quiz") ?>:</b></td> - <td> +<TR valign=top> + <TD align=right><P><B><?php print_string("imagedisplay", "quiz") ?>:</B></P></TD> + <TD> <?php if (empty($images)) { print_string("noimagesyet"); } else { choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); } ?> - </td> -</tr> + </TD> +</TR> -<tr valign="top"> -<td align="right"><b><?php print_string("correctanswerformula", "quiz") ?>:</b></td> - <td> - <input align="left" type="text" id="formula0" name="answer[]" size="20" value="<?php p($answers[0]->answer) ?>" alt="<?php print_string("correctanswerformula", "quiz") ?>" />&nbsp;&nbsp; - <input type="hidden" name="fraction[]" value="1.0" /> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("tolerance", "quiz"); ?>:</b></td> - <td> - <input align="left" type="text" id="tolerance0" name="tolerance[]" size="15" value="<?php p($answers[0]->tolerance) ?>" alt="<?php print_string("tolerance", "quiz"); ?>" />&plusmn; - </td> -</tr> -<tr valign="top"> -<td align="right"><b><?php print_string("tolerancetype", "quiz"); ?>:</b></td> - <td> +<TR valign=top> +<TD align=right><P><B><?php print_string("correctanswerformula", "quiz") ?>:</B></P></TD> + <TD> + <INPUT align="LEFT" type="text" id="formula0" name="answer[]" size="20" value="<?php p($answers[0]->answer) ?>"/>&nbsp;&nbsp; + <INPUT type="hidden" name="fraction[]" value="1.0"/> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("tolerance", "quiz"); ?>:</B></P></TD> + <TD> + <INPUT align="LEFT" type="text" id=tolerance0" name="tolerance[]" size="15" value="<?php p($answers[0]->tolerance) ?>" />&plusmn; + </TD> +</TR> +<TR valign=top> +<TD align=right><P><B><?php print_string("tolerancetype", "quiz"); ?>:</B></P></TD> + <TD> <?php choose_from_menu($qtypeobj->tolerance_types(), 'tolerancetype[]', $answers[0]->tolerancetype, false); ?> - </td> -</tr> -<tr valign="top"> -<td align="right"><b><?php print_string("correctanswershows", "quiz"); ?>:</b></td> - <td> - <?php choose_from_menu(array('0' => ' 0 ', - '1' => ' 1 ', '2' => ' 2 ', '3' => ' 3 ', - '4' => ' 4 ', '5' => ' 5 ', '6' => ' 6 ', - '7' => ' 7 ', '8' => ' 8 ', '9' => ' 9 '), + </TD> +</TR> +<TR valign=top> +<TD align=right><P><B><?php print_string("correctanswerlength", "quiz"); ?>:</B></P></TD> + <TD> + <?php choose_from_menu(array('1' => '1', '2' => '2', '3' => '3', + '4' => '4', '5' => '5', '6' => '6', + '7' => '7', '8' => '8', '9' => '9', + '10' => '10'), 'correctanswerlength[]', $answers[0]->correctanswerlength, false); ?> - <?php choose_from_menu(array('1' => get_string('decimalformat', 'quiz'), - '2' => get_string('significantfiguresformat', 'quiz')), - 'correctanswerformat[]', - $answers[0]->correctanswerformat, false); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("feedback", "quiz") ?>:</b></td> - <td> - <textarea name="feedback[]" rows="2" cols="50"><?php p($answers[0]->feedback) ?></textarea> - </td> -</tr> -<tr valign="top"> -<td align="right"><b><?php print_string("unit", "quiz") ?>:</b></td> - <td> - <input type="hidden" name="multiplier[]" value="1.0" /> - <input align="left" type="text" id="defaultunit" name="unit[]" - size="5" value="<?php p($units[0]->unit) ?>" - alt="<?php print_string("unit", "quiz") ?>" /> - <b>(<?php print_string("optional", "quiz") ?>)</b> - </td> -</tr> -<tr valign="top"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("feedback", "quiz") ?>:</B></P></TD> + <TD> + <textarea name="feedback[]" rows=2 cols=50 wrap="virtual"><?php p($answers[0]->feedback) ?></textarea> + </TD> +</TR> +<TR valign=top> +<TD align=right><P><B><?php print_string("unit", "quiz") ?>:</B></P></TD> + <TD> + <P><INPUT type="HIDDEN" name="multiplier[]" value="1.0"/> + <INPUT align="LEFT" type="text" id="defaultunit" name="unit[]" + size="5" value="<?php p($units[0]->unit) ?>"/> + <B>(<?php print_string("optional", "quiz") ?>)</B></P> + </TD> +</TR> +<TR valign=top> <td></td> -<td align="left"><b><?php print_string("alternativeunits", "quiz") ?>:</b></td> +<TD align=left><P><B><?php print_string("alternativeunits", "quiz") ?>:</B></P></TD> <td></td> -</tr> -<?php +</TR> +<?PHP for ($i=1; $i<count($units); $i++) { $unit=$units[$i]; ?> -<tr valign="top"> +<TR valign=top> <td></td> - <td align="left"> - <b><?php print_string("multiplier", "quiz") ?>:</b> - <input type="text" id="<?php p("multiplier$i") ?>" size="10" - align="right" name="multiplier[]" - value="<?php p($unit->multiplier) ?>" - alt="<?php print_string("multiplier", "quiz") ?>" /> - <b>&nbsp;&nbsp;&nbsp;<?php print_string("unit", "quiz") ?>:</b> - <input align="left" type="text" id="<?php p("unit$i") ?>" + <TD align=left> + <P><B><?php print_string("multiplier", "quiz") ?>:</B> + <INPUT type="text" id="<?php p("multiplier$i") ?>" size="10" + align="RIGHT" name="multiplier[]" + value="<?php p($unit->multiplier) ?>"/> + <B>&nbsp;&nbsp;&nbsp;<?php print_string("unit", "quiz") ?>:</B> + <INPUT align="LEFT" type="text" id="<?php p("unit$i") ?>" name="unit[]" - size="5" value="<?php p($unit->unit) ?>" - alt="<?php print_string("unit", "quiz") ?>" /> - </td> -</tr> -<?php + size="5" value="<?php p($unit->unit) ?>"/></P> + </TD> +</TR> +<?PHP } /// END for ?> -</table> +</TABLE> -<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey; ?>" /> -<input type="hidden" name="id" value="<?php p($question->id) ?>" /> -<input type="hidden" name="qtype" value="<?php p($question->qtype) ?>" /> -<input type="submit" onclick="return determineMinAndMax();" value="<?php print_string("savechanges") ?>" /> +<input type="hidden" name=id value="<?php p($question->id) ?>"> +<input type="hidden" name=qtype value="<?php p($question->qtype) ?>"> +<input type="submit" onClick="return determineMinAndMax();" value="<?php print_string("savechanges") ?>"> </center> </form> -<script language="javascript" type="text/javascript"> +<script language="javascript"> function determineMinAndMax() { // This client-side script will determine the values for min and max // based on the input for answer and acceptederror. @@ -163,7 +155,7 @@ function determineMinAndMax() { return false; /* It could perhaps be an idea to parse the formula here * but as it is necessary at the server anyway, we can - * it leave like this for the moment. */ + * leave like this for the moment. */ } else if (''!=defaultunit.value && !isNaN(defaultunit.value)) { alert('<?php print_string("unitmustnotbenumeric","quiz") ?>'); @@ -171,10 +163,6 @@ function determineMinAndMax() { } else if (isNaN(tolerance0.value)) { alert('<?php print_string("tolerancemustbenumeric","quiz") ?>'); return false; - } else if ('2' == document.theform['correctanswerformat[]'].value - && '0' == document.theform['correctanswerlength[]'].value) { - alert('<?php print_string("zerosignificantfiguresnotallowed","quiz") ?>'); - return false; } else { return true; } diff --git a/mod/quiz/questiontypes/calculated/editquestion.php b/mod/quiz/questiontypes/calculated/editquestion.php index 4a5ffdbaa6f..fcc12d0a9b8 100644 --- a/mod/quiz/questiontypes/calculated/editquestion.php +++ b/mod/quiz/questiontypes/calculated/editquestion.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // Get a handle to the question type we are dealing with here $qtypeobj = $QUIZ_QTYPES[CALCULATED]; @@ -36,14 +36,8 @@ if ($form) { // Let's trust the drop down menus. $answers[0]->tolerancetype = array_shift($form->tolerancetype); - $answers[0]->fraction = array_shift($form->fraction); - $answers[0]->correctanswerlength = array_shift($form->correctanswerlength); - $answers[0]->correctanswerformat = array_shift($form->correctanswerformat); - - 2 == $answers[0]->correctanswerformat - and 0 == $answers[0]->correctanswerlength - and $calculatedmessages[]=get_string('zerosignificantfiguresnotallowed','quiz'); + $answers[0]->fraction = array_shift($form->fraction); // Fill with remaining answers, in case calculated.html // supports multiple formulas. @@ -56,8 +50,6 @@ if ($form) { $answers[$i]->tolerancetype = $form->tolerancetype[$key]; $answers[$i]->correctanswerlength = $form->correctanswerlength[$key]; - $answers[$i]->correctanswerformat = - $form->correctanswerformat[$key]; $answers[$i]->fraction = $form->fraction[$key]; $answers[$i]->feedback = $form->feedback[$key]; @@ -93,99 +85,65 @@ if ($form) { if (empty($calculatedmessages)) { - /*First page in the question wizard (calculated.html) passed all right!*/ + // First page calculated.html passed all right! if (!empty($form->dataset)) { - /* Second page in the question wizard has also passed all right */ - - /***** Save question! ... ****/ + // Dataset definitions have been set + // Save question! $subtypeoptions->answers = $answers; $subtypeoptions->units = $units; $question = $qtypeobj->save_question ($question, $form, $course, $subtypeoptions); - - /***** ... and continue to the dataset item editing: *****/ require("$CFG->dirroot/mod/quiz/questiontypes/datasetdependent/datasetitems.php"); exit(); + } else { + $datasetmessage = ''; } - /***** Now continue by preparing for the second page ****** - ***** in the question wizard: "questiondatasets.html" ******/ - $datasetmessage = ''; - - /*** Answer information is not to be shown ***/ - $hiddeninputnames= array(); - $hiddeninputvalues= array(); - foreach ($answers as $answer) { - $hiddeninputnames[] = 'answer[]'; - $hiddeninputvalues[] = $answer->answer; - $hiddeninputnames[] = 'fraction[]'; - $hiddeninputvalues[] = $answer->fraction; - $hiddeninputnames[] = 'feedback[]'; - $hiddeninputvalues[] = $answer->feedback; - $hiddeninputnames[] = 'tolerance[]'; - $hiddeninputvalues[] = $answer->tolerance; - $hiddeninputnames[] = 'tolerancetype[]'; - $hiddeninputvalues[] = $answer->tolerancetype; - $hiddeninputnames[] = 'correctanswerlength[]'; - $hiddeninputvalues[] = $answer->correctanswerlength; - $hiddeninputnames[] = 'correctanswerformat[]'; - $hiddeninputvalues[] = $answer->correctanswerformat; - } - foreach ($units as $unit) { - $hiddeninputnames[] = 'unit[]'; - $hiddeninputvalues[] = $unit->unit; - $hiddeninputnames[] = 'multiplier[]'; - $hiddeninputvalues[] = $unit->multiplier; - } + // Now continue by preparing for the second page questiondatasets.html - /*** Determine possible and mandatory datasets... ***/ - $possibledatasets = $qtypeobj->find_dataset_names($question->questiontext); + $possibledatasets = $qtypeobj->find_dataset_names( + $question->questiontext); + $mandatorydatasets = array(); foreach ($answers as $answer) { $mandatorydatasets += $qtypeobj ->find_dataset_names($answer->answer); } + $datasets = $qtypeobj->construct_dataset_menus( $question, $mandatorydatasets, $possibledatasets); - - /*** Print the page ***/ print_heading_with_help(get_string("choosedatasetproperties", "quiz"), "questiondatasets", "quiz"); require("$CFG->dirroot/mod/quiz/questiontypes/datasetdependent/questiondatasets.html"); exit(); } } else { -/*********************************************************/ -/***** First page in question wizard - calculated.html! **/ -/*********************************************************/ +// First page in question wizard - calculated.html! // The layout of the editing page will only support // one formula alternative for calculated questions. // However, the code behind supports up to six formulas // and the database store and attempt/review framework // does not have any limit. + if (!empty($question->id)) { + $answersraw= $qtypeobj->get_answers($question); + } $answers= array(); for ($i=0; $i<6; $i++) { - /*** Make answer slots with default values ***/ + // Make answer slots with default values $answers[$i]->answer = ""; $answers[$i]->feedback = ""; $answers[$i]->fraction = "1.0"; $answers[$i]->tolerance = "0.01"; $answers[$i]->tolerancetype = "1"; - $answers[$i]->correctanswerlength = "2"; // Defaults to two ... - $answers[$i]->correctanswerformat = "1"; // ... decimals + $answers[$i]->correctanswerlength = "2"; } - if (!empty($question->id)) { - $answersraw = $qtypeobj->get_answers($question); - if (!empty($answersraw)) { - /*** Overwrite the default valued answer slots *** - *** with correct values from database ***/ - $i=0; - foreach ($answersraw as $answer) { - $answers[$i] = $answer; - $i++; - } + if (!empty($answersraw)) { + $i=0; + foreach ($answersraw as $answer) { + $answers[$i] = $answer; + $i++; } } @@ -235,6 +193,6 @@ if ($form) { } print_heading_with_help(get_string("editingcalculated", "quiz"), "calculated", "quiz"); -require("$CFG->dirroot/mod/quiz/questiontypes/calculated/calculated.html"); +require("calculated.html"); ?> diff --git a/mod/quiz/questiontypes/calculated/modifiednumericalqtype.php b/mod/quiz/questiontypes/calculated/modifiednumericalqtype.php index ceee561b635..3f908c87167 100644 --- a/mod/quiz/questiontypes/calculated/modifiednumericalqtype.php +++ b/mod/quiz/questiontypes/calculated/modifiednumericalqtype.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /////////////////////////////// /// CALCULATED HELPER CLASS /// diff --git a/mod/quiz/questiontypes/calculated/questiontype.php b/mod/quiz/questiontypes/calculated/questiontype.php index 6224b6e6aaf..73c392868af 100644 --- a/mod/quiz/questiontypes/calculated/questiontype.php +++ b/mod/quiz/questiontypes/calculated/questiontype.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ ///////////////// /// CALCULATED /// @@ -15,7 +15,7 @@ class quiz_calculated_qtype extends quiz_dataset_dependent_questiontype { function get_answers($question) { global $CFG; return get_records_sql( - "SELECT a.*, c.tolerance, c.tolerancetype, c.correctanswerlength, c.correctanswerformat, c.id as calcid + "SELECT a.*, c.tolerance, c.tolerancetype, c.correctanswerlength, c.id calcid FROM {$CFG->prefix}quiz_answers a, {$CFG->prefix}quiz_calculated c WHERE c.question = $question->id AND a.id = c.answer"); @@ -43,12 +43,12 @@ class quiz_calculated_qtype extends quiz_dataset_dependent_questiontype { ? 'decimals' : 'significantfigures'), 'quiz', $i); } - return '<input type="submit" onClick="' + return '<INPUT TYPE="submit" onClick="' . "document.addform.regenerateddefid.value='$datasetdef->id'; return true;" - .'" value="'. get_string('generatevalue', 'quiz') . '"/><br/>' - . '<input type="text" size="3" name="calcmin[]" ' - . " value=\"$regs[2]\"/> &amp; <input name=\"calcmax[]\" " - . ' type="text" size="3" value="' . $regs[3] .'"/> ' + .'" VALUE="'. get_string('generatevalue', 'quiz') . '"/><br/>' + . '<INPUT TYPE="text" SIZE="3" NAME="calcmin[]" ' + . " VALUE=\"$regs[2]\"/> &amp; <INPUT NAME=\"calcmax[]\" " + . ' TYPE="text" SIZE="3" VALUE="' . $regs[3] .'"/> ' . choose_from_menu($lengthoptions, 'calclength[]', $regs[4], // Selected '', '', '', true) . '<br/>' @@ -126,7 +126,7 @@ class quiz_calculated_qtype extends quiz_dataset_dependent_questiontype { ++$p10; $nbr /= 10; } - // ... and have the nbr rounded off to the correct length + // ... and have the nbr rounded of to the correct length $nbr = round($nbr, $regs[4]); // Have the nbr written on a suitable format, @@ -202,8 +202,7 @@ class quiz_calculated_qtype extends quiz_dataset_dependent_questiontype { foreach ($answers as $answer) { $calculated = quiz_qtype_calculated_calculate_answer( $answer->answer, $data, $answer->tolerance, - $answer->tolerancetype, $answer->correctanswerlength, - $answer->correctanswerformat, $unit); + $answer->tolerancetype, $answer->correctanswerlength, $unit); if ($calculated->min === '') { // This should mean that something is wrong $errors .= " -$calculated->answer"; @@ -238,7 +237,6 @@ class quiz_calculated_qtype extends quiz_dataset_dependent_questiontype { $calcrec->tolerance = $newanswer->tolerance; $calcrec->tolerancetype = $newanswer->tolerancetype; $calcrec->correctanswerlength = $newanswer->correctanswerlength; - $calcrec->correctanswerformat = $newanswer->correctanswerformat; if ($oldanswer = array_shift($oldanswers)) { // Reuse old record: $calcrec->answer = $answerrec->id = $oldanswer->id; @@ -388,8 +386,7 @@ class quiz_calculated_qtype extends quiz_dataset_dependent_questiontype { $answernumerical = quiz_qtype_calculated_calculate_answer( $answer->answer, $individualdata, $answer->tolerance, $answer->tolerancetype, - $answer->correctanswerlength, - $answer->correctanswerformat, $unit); + $answer->correctanswerlength, $unit); $answers[$aid]->answer = $answernumerical->answer; $answers[$aid]->min = $answernumerical->min; $answers[$aid]->max = $answernumerical->max; @@ -413,7 +410,7 @@ class quiz_calculated_qtype extends quiz_dataset_dependent_questiontype { $QUIZ_QTYPES[CALCULATED]= new quiz_calculated_qtype(); function quiz_qtype_calculated_calculate_answer($formula, $individualdata, - $tolerance, $tolerancetype, $answerlength, $answerformat='1', $unit='') { + $tolerance, $tolerancetype, $answerlength, $unit='') { /// The return value has these properties: /// ->answer the correct answer /// ->min the lower bound for an acceptable response @@ -469,30 +466,8 @@ function quiz_qtype_calculated_calculate_answer($formula, $individualdata, $calculated->min = $min; $calculated->max = $max; - if ('1' == $answerformat) { /* Answer is to have $answerlength decimals */ - /*** Adjust to the correct number of decimals ***/ - - $calculated->answer = round($answer, $answerlength); - - if ($answerlength) { - /* Try to include missing zeros at the end */ - - if (ereg('^(.*\\.)(.*)$', $calculated->answer, $regs)) { - $calculated->answer = $regs[1] . substr( - $regs[2] . '00000000000000000000000000000000000000000x', - 0, $answerlength) - . $unit; - } else { - $calculated->answer .= - substr('.00000000000000000000000000000000000000000x', - 0, $answerlength + 1) . $unit; - } - } else { - /* Attach unit */ - $calculated->answer .= $unit; - } - - } else if ($answer) { // Significant figures does only apply if the result is non-zero + /// Adjust the number of significant digits for the correct answer + if ($answer) { // Applies only if the result is non-zero // Convert to positive answer... if ($answer < 0) { @@ -543,7 +518,6 @@ function quiz_qtype_calculated_calculate_answer($formula, $individualdata, $calculated->answer = $sign.substr($answer, 0, $oklen).$unit; } } - } else { $calculated->answer = 0.0; } diff --git a/mod/quiz/questiontypes/datasetdependent/abstractqtype.php b/mod/quiz/questiontypes/datasetdependent/abstractqtype.php index e731f7678a4..a1aaa821ff5 100644 --- a/mod/quiz/questiontypes/datasetdependent/abstractqtype.php +++ b/mod/quiz/questiontypes/datasetdependent/abstractqtype.php @@ -1,10 +1,10 @@ -<?php // $Id$ +<?PHP // $Id$ /////////////////////////////////////////////////////////////// /// ABSTRACT SUPERCLASS FOR QUSTION TYPES THAT USE DATASETS /// /////////////////////////////////////////////////////////////// -require_once($CFG->libdir.'/filelib.php'); +require_once($CFG->dirroot . '/files/mimetypes.php'); define("LITERAL", "1"); define("FILE", "2"); @@ -360,9 +360,9 @@ class quiz_dataset_dependent_questiontype extends quiz_default_questiontype { $value = $item->value; } else { - $icon = "<img src=\"$CFG->wwwroot/pix/f/" + $icon = "<IMG SRC=\"$CFG->wwwroot/pix/f/" . mimeinfo('icon', $item->value) - . '" height="16" width="16" border="0" alt="File" />'; + . '" HEIGHT="16" WIDTH="16" BORDER="0" ALT="File" />'; if (substr(strtolower($item->value), 0, 7)=='http://') { $link = $item->value; @@ -403,7 +403,7 @@ class quiz_dataset_dependent_questiontype extends quiz_default_questiontype { function create_virtual_nameprefix($nameprefix, $datasetinput) { // This default implementation is sometimes overridden if (!ereg('([0-9]+)' . $this->name() . '$', $nameprefix, $regs)) { - error("Wrongly formatted nameprefix $nameprefix"); + error("Malformed nameprefix $nameprefix"); } $virtualqtype = $this->get_virtual_qtype(); return $nameprefix . $regs[1] . $virtualqtype->name(); @@ -412,7 +412,7 @@ class quiz_dataset_dependent_questiontype extends quiz_default_questiontype { function extract_response($rawresponse, $nameprefix) { if (!ereg('^dataset([;:0-9A-Za-z+/=]+)-(.*)$', $rawresponse->answer, $regs)) { - error ("Wrongly formatted raw response answer $rawresponse->answer"); + error ("Malformated raw response answer $rawresponse->answer"); } // Truncate raw response to fit the virtual qtype @@ -439,7 +439,7 @@ class quiz_dataset_dependent_questiontype extends quiz_default_questiontype { // Print hidden field with dataset info echo '<input type="hidden" name="' . $nameprefix - . '" value="' . $datasetinput . '" />'; + . '" value="' . $datasetinput . '"/>'; // Forward to the virtual qtype unset($question->response[$nameprefix]); diff --git a/mod/quiz/questiontypes/datasetdependent/categorydatasetdefinitions.php b/mod/quiz/questiontypes/datasetdependent/categorydatasetdefinitions.php index 87aff38f5e2..08ed9667f34 100644 --- a/mod/quiz/questiontypes/datasetdependent/categorydatasetdefinitions.php +++ b/mod/quiz/questiontypes/datasetdependent/categorydatasetdefinitions.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ ///////////////////////////////////////////////////////////////////// ///// This page offers a way to define category level datasets ///// @@ -17,7 +17,7 @@ error("This category doesn't belong to a valid course!"); } - require_login($course->id, false); + require_login($course->id); if (!isteacheredit($course->id)) { error("Only the teacher can import quiz questions!"); @@ -32,7 +32,7 @@ $strquestions = get_string("questions", "quiz"); print_header_simple("$strdefinedataset", "$strdefinedataset", - "<a href=\"../../edit.php\">$streditingquiz</a> -> $strdefinedataset"); + "<A HREF=\"../../edit.php\">$streditingquiz</A> -> $strdefinedataset"); if ($form = data_submitted()) { /// Filename @@ -41,7 +41,7 @@ $definition->name = $name; $definition->id = $form->id[$key]; $definition->type = $form->type[$key]; - + if ($definition->id) { if (!update_record('quiz_dataset_definitions', $definition)) { notify("Could not update dataset item definition"); @@ -67,14 +67,14 @@ print_heading_with_help($strdefinedataset, "datasets", "quiz"); - print_simple_box_start("center"); + print_simple_box_start("center", "", "$THEME->cellheading"); echo "<form method=\"post\" action=\"categorydatasetdefinitions.php\">"; - echo "<input type=\"hidden\" name=\"category\" value=\"$category->id\" />"; + echo "<input type=\"hidden\" name=\"category\" value=\"$category->id\"/>"; if ($question) { - echo "<input type=\"hidden\" name=\"question\" value=\"$question\" />"; + echo "<input type=\"hidden\" name=\"question\" value=\"$question\"/>"; } - - echo "<table cellpadding=\"5\">"; + + echo "<table cellpadding=5>"; $definitions = get_records('quiz_dataset_definitions', 'category', @@ -86,17 +86,17 @@ $definition = NULL; } - echo "<tr><td align=\"right\">"; + echo "<tr><td align=right>"; print_string("itemdefinition", "quiz"); echo ":</td><td>"; - echo "<input name=\"name[]\" type=\"text\" size=\"20\" value=\"$definition->name\" />"; - echo "<input type=\"hidden\" name=\"id[]\" value=\"$definition->id\" />"; + echo "<input name=\"name[]\" type=\"text\" size=\"20\" value=\"$definition->name\"/>"; + echo "<input type=\"hidden\" name=\"id[]\" value=\"$definition->id\"/>"; echo " </td><td> "; choose_from_menu($DATASET_TYPES, 'type[]', $definition->type, ''); echo "</td></tr>\n"; } - echo "<tr><td align=\"CENTER\" colspan=\"3\"><input type=\"submit\" value=\"".get_string("continue")."\" /></td></tr>"; + echo "<tr><td align=\"CENTER\" colspan=\"3\"><input type=submit value=\"".get_string("continue")."\"></td></tr>"; echo "</table>"; echo "</form>"; print_simple_box_end(); diff --git a/mod/quiz/questiontypes/datasetdependent/datasetitems.php b/mod/quiz/questiontypes/datasetdependent/datasetitems.php index 170dabf0cbd..7b5b316ca30 100644 --- a/mod/quiz/questiontypes/datasetdependent/datasetitems.php +++ b/mod/quiz/questiontypes/datasetdependent/datasetitems.php @@ -1,6 +1,6 @@ -<?php // $Id$ +<?PHP // $Id$ -// Allows a teacher to create, edit and delete datasets +// Allows a teacher to create, edit and delete categories /// Print headings @@ -37,7 +37,10 @@ /// Print heading - print_heading_with_help($streditdatasets, 'questiondatasets', "quiz"); + echo "<P ALIGN=CENTER><FONT SIZE=3>"; + echo $streditdatasets; + helpbutton("categories", $streditdatasets, "quiz"); + echo "</FONT></P>"; /// If data submitted, then process and store. if ($form = data_submitted()) { @@ -124,17 +127,17 @@ $columns = array(); if ($maxnumber == $number) { $columns[] = - "<input type=\"hidden\" name=\"numbertodelete\" value=\"$number\"/> - <input type=\"submit\" name=\"deletebutton\" value=\"$strdelete\"/>"; + "<INPUT TYPE=\"hidden\" name=\"numbertodelete\" value=\"$number\"/> + <INPUT TYPE=\"submit\" name=\"deletebutton\" value=\"$strdelete\"/>"; } else { $columns[] = ''; } $columns[] = $number; foreach ($datasetdefs as $datasetdef) { $columns[] = - '<input type="hidden" name="itemid[]" value="'. $datasetdef->items[$number]->id .'"/>' - . "<input type=\"hidden\" name=\"number[]\" value=\"$number\"/> - <input type=\"hidden\" name=\"definition[]\" value=\"$datasetdef->id\"/>" + '<INPUT TYPE="hidden" name="itemid[]" value="'. $datasetdef->items[$number]->id .'"/>' + . "<INPUT TYPE=\"hidden\" name=\"number[]\" value=\"$number\"/> + <INPUT TYPE=\"hidden\" name=\"definition[]\" value=\"$datasetdef->id\"/>" . // Set $data: ($data[$datasetdef->name] = $datasetdef->items[$number]->value) ; @@ -146,7 +149,7 @@ } $table->head = array($straction, $strdatasetnumber); - $table->align = array("center", "center"); + $table->align = array("CENTER", "CENTER"); $addtable->head = $table->head; if ($qtypeobj->supports_dataset_item_generation()) { if (isset($form->forceregeneration) && $form->forceregeneration) { @@ -156,16 +159,16 @@ $force = ''; $reuse = ' checked="checked" '; } - $forceregeneration = '<br/><input type="radio" name="forceregeneration" ' + $forceregeneration = '<br/><INPUT type="radio" name="forceregeneration" ' . $reuse . ' value="0"/>' . $strreuseifpossible - . '<br/><input type="radio" name="forceregeneration" value="1" ' + . '<br/><INPUT type="radio" name="forceregeneration" value="1" ' . $force . ' />' . $strforceregeneration; } else { $forceregeneration = ''; } - $addline = array('<input type="hidden" name="numbertoadd" value="' + $addline = array('<INPUT TYPE="hidden" name="numbertoadd" value="' . ($maxnumber+1) - . "\"/><input type=\"submit\" name=\"addbutton\" value=\"$stradd\"/>" + . "\"/><INPUT TYPE=\"submit\" name=\"addbutton\" value=\"$stradd\"/>" . $forceregeneration , $maxnumber+1); foreach ($datasetdefs as $datasetdef) { @@ -175,7 +178,7 @@ . ($qtypeobj->supports_dataset_item_generation() ? '<br/>' . $qtypeobj->custom_generator_tools($datasetdef) : ''); - $table->align[] = "center"; + $table->align[] = "CENTER"; // THE if-statement IS FOR BUT ONE THING // - to determine an item value for the input field @@ -229,10 +232,10 @@ } $addline[] = - '<input type="hidden" name="itemid[]" value="'.$itemid.'"/>' - . "<input type=\"hidden\" name=\"definition[]\" value=\"$datasetdef->id\"/>" + '<INPUT TYPE="hidden" name="itemid[]" value="'.$itemid.'"/>' + . "<INPUT TYPE=\"hidden\" name=\"definition[]\" value=\"$datasetdef->id\"/>" . ( 2 != $datasetdef->type - ? '<input type="text" size="20" name="value[]" value="' + ? '<INPUT TYPE="text" size="20" name="value[]" value="' . $itemvalue . '"/>' : choose_from_menu($coursefiles, 'value[]', @@ -244,32 +247,30 @@ if ($strquestionheader) { $table->head[] = $strquestionheader; $addtable->head[] = $strquestionheader; - $table->align[] = "center"; + $table->align[] = "CENTER"; $addline[] = $qtypeobj->comment_on_datasetitems($question, $data, $maxnumber + 1); } // Print form for adding one more dataset $addtable->align = $table->align; $addtable->data = array($addline); - echo "<form name=\"addform\" method=\"post\" action=\"question.php\"> - <input type=\"hidden\" name=\"sesskey\" value=\"".sesskey()."\"/> - <input type=\"hidden\" name=\"regenerateddefid\" value=\"0\"/> - <input type=\"hidden\" name=\"id\" value=\"$question->id\"/> - <input type=\"hidden\" name=\"editdatasets\" value=\"1\"/>"; + echo "<FORM NAME=\"addform\" METHOD=\"post\" ACTION=\"question.php\"> + <INPUT TYPE=\"hidden\" NAME=\"regenerateddefid\" VALUE=\"0\"/> + <INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$question->id\"/> + <INPUT TYPE=\"hidden\" NAME=\"editdatasets\" VALUE=\"1\"/>"; print_table($addtable); - echo '</form>'; + echo '</FORM>'; // Print form with current datasets if ($table->data) { - echo "<form method=\"post\" action=\"question.php\"> - <input type=\"hidden\" name=\"sesskey\" value=\"".sesskey()."\"/> - <input type=\"hidden\" name=\"id\" value=\"$question->id\"/> - <input type=\"hidden\" name=\"editdatasets\" value=\"1\"/>"; + echo "<FORM METHOD=\"post\" ACTION=\"question.php\"> + <INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$question->id\"/> + <INPUT TYPE=\"hidden\" NAME=\"editdatasets\" VALUE=\"1\"/>"; print_table($table); - echo '</form>'; + echo '</FORM>'; } - echo "<center><br /><br /><form method=\"get\" action=\"edit.php\"><input type=\"hidden\" name=\"question\" value=\"$question->id\"/><input type=\"submit\" name=\"backtoquiz\" value=\"$strbacktoquiz\"></form></center>\n"; + echo "<center><BR><BR><FORM METHOD=\"get\" ACTION=\"edit.php\"><INPUT TYPE=\"hidden\" NAME=\"question\" VALUE=\"$question->id\"/><INPUT TYPE=submit NAME=backtoquiz VALUE=\"$strbacktoquiz\"></FORM></center>\n"; print_footer(); diff --git a/mod/quiz/questiontypes/datasetdependent/questiondatasets.html b/mod/quiz/questiontypes/datasetdependent/questiondatasets.html index 952295903bb..df30a545702 100644 --- a/mod/quiz/questiontypes/datasetdependent/questiondatasets.html +++ b/mod/quiz/questiontypes/datasetdependent/questiondatasets.html @@ -1,51 +1,58 @@ -<form name="theform" method="post" action="question.php"> -<center> -<input type="hidden" name="nextwizardpage" value="calculated.html"/> -<table cellpadding="5"> +<FORM name="theform" method="post" action="question.php"> +<CENTER> +<INPUT type="hidden" name="nextwizardpage" value="calculated.html"/> +<TABLE cellpadding=5> <?php if (!empty($datasets)) { ?> -<tr valign="top"> - <td align="right"><b><?php print_string("wildcard", "quiz") ?> </b></td> - <td align="right">{<?php foreach($datasets as $name => $tmp){break;} p($name) ?>}</td> - <td><b> - <?php print_string("substitutedby", "quiz") ?></b></td> - <td align="left"><?php echo array_shift($datasets) ?></td> -</tr> +<TR valign="top"> + <TD align="right"><B><?php print_string("wildcard", "quiz") ?> </B></TD> + <TD align="right">{<?php foreach($datasets as $name => $tmp){break;} p($name) ?>}</TD> + <TD><B> - <?php print_string("substitutedby", "quiz") ?></B></TD> + <TD align="left"><?php echo array_shift($datasets) ?></TD> +</TR> <?php foreach ($datasets as $name => $menu) { ?> -<tr valign="top"> - <td/> - <td align="right">{<?php p($name) ?>}</td> - <td/> - <td align="left"><?php echo $menu ?> -</tr> +<TR valign="top"> + <TD/> + <TD align="right">{<?php p($name) ?>}</TD> + <TD/> + <TD align="left"><?php echo $menu ?> +</TR> <?php } } else { ?> -<tr> -<td colspan="4"><?php print_string('nopossibledatasets', 'quiz') ?> -<input type="hidden" name="dataset[]" value="0"/> -</td> -</tr> +<TR> +<TD colspan="4"><?php print_string('nopossibledatasets', 'quiz') ?> +<INPUT type="hidden" name="dataset[]" value="0"/> +</TD> +</TR> <?php } ?> -<tr valign="top"> - <td/> - <td/> - <td/> - <td> - <input type="hidden" name="sesskey" value="<?php echo $USER->sesskey; ?>" /> - <input type="hidden" name="name" value="<?php p($question->name) ?>" /> - <input type="hidden" name="questiontext" value="<?php p($question->questiontext) ?>" /> - <input type="hidden" name="questiontextformat" value="<?php p($question->questiontextformat) ?>" /> - <input type="hidden" name="image" value="<?php p($question->image) ?>" /> - <?php if (!empty($hiddeninputnames)) foreach ($hiddeninputnames as $key => $hiddeninputname) { ?> - <input type="hidden" name="<?php p($hiddeninputname) ?>" - value="<?php p($hiddeninputvalues[$key]) ?>" /> +<TR valign=top> + <TD/> + <TD/> + <TD/> + <TD> + <INPUT type="hidden" name="name" value="<?php p($question->name) ?>"/> + <INPUT type="hidden" name="questiontext" value="<?php p($question->questiontext) ?>"/> + <INPUT type="hidden" name="questiontextformat" value="<?php p($question->questiontextformat) ?>"/> + <INPUT type="hidden" name="image" value="<?php p($question->image) ?>"/> + <?php foreach ($answers as $answer) { ?> + <INPUT type="hidden" name="answer[]" value="<?php p($answer->answer) ?>"/> + <INPUT type="hidden" name="fraction[]" value="<?php p($answer->fraction) ?>"/> + <INPUT type="hidden" name="feedback[]" value="<?php p($answer->feedback) ?>"/> + <INPUT type="hidden" name="tolerance[]" value="<?php p($answer->tolerance) ?>"/> + <INPUT type="hidden" name="tolerancetype[]" value="<?php p($answer->tolerancetype) ?>"/> + <INPUT type="hidden" name="correctanswerlength[]" value="<?php p($answer->correctanswerlength) ?>"/> <?php } ?> - </td> -</tr> -</table> + <?php foreach ($units as $unit) { ?> + <INPUT type="hidden" name="multiplier[]" value="<?php p($unit->multiplier) ?>"/> + <INPUT type="hidden" name="unit[]" value="<?php p($unit->unit) ?>"/> + <?php } ?> + </TD> +</TR> +</TABLE> -<input type="hidden" name="id" value="<?php p($question->id) ?>" /> -<input type="hidden" name="qtype" value="<?php p($question->qtype) ?>" /> -<input type="hidden" name="category" value="<?php p($question->category) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -</center> -</form> +<INPUT type="hidden" name=id value="<?php p($question->id) ?>"> +<INPUT type="hidden" name=qtype value="<?php p($question->qtype) ?>"> +<INPUT type="hidden" name="category" value="<?php p($question->category) ?>"/> +<INPUT type="submit" value="<?php print_string("savechanges") ?>"> +</CENTER> +</FORM> diff --git a/mod/quiz/questiontypes/description/description.html b/mod/quiz/questiontypes/description/description.html index 40ffee3d093..2016a142ff9 100644 --- a/mod/quiz/questiontypes/description/description.html +++ b/mod/quiz/questiontypes/description/description.html @@ -1,72 +1,75 @@ -<form name="theform" method="post" action="question.php"> -<center> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("category", "quiz") ?>:</b></td> - <td> - <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("questionname", "quiz") ?>:</b></td> - <td> - <input type="text" name="name" size="40" value="<?php p($question->name) ?>" alt="<?php print_string("questionname", "quiz") ?>" /> - <?php if (isset($err["name"])) formerr($err["name"]); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("question", "quiz") ?>:</b> - <br /> - <br /> - <br /> - <font size="1"> - <?php - if ($usehtmleditor) { - helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); - } else { - helpbutton("text", get_string("helptext"), "moodle", true, true); - } - ?> - </font> - </td> - <td> - <?php if (isset($err["questiontext"])) { - formerr($err["questiontext"]); - echo "<br />"; - } - print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); - if ($usehtmleditor) { - echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'" />'; - } else { - echo "<div align=\"right\">"; - print_string("formattexttype"); - echo ":&nbsp;"; - if (!isset($question->questiontextformat)) { - $question->questiontextformat = FORMAT_MOODLE; - } - choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); - helpbutton("textformat", get_string("helpformatting")); - echo "</div>"; - } - ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("imagedisplay", "quiz") ?>:</b></td> - <td> - <?php if (empty($images)) { - print_string("noimagesyet"); - } else { - choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); - } - ?> - </td> -</tr> -</table> -<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey; ?>" /> -<input type="hidden" name="id" value="<?php p($question->id) ?>" /> -<input type="hidden" name="qtype" value="<?php p($question->qtype) ?>" /> -<input type="hidden" name="defaultgrade" value="0" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -</center> -</form> +<FORM name="theform" method="post" action="question.php"> +<CENTER> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string("category", "quiz") ?>:</B></P></TD> + <TD> + <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("questionname", "quiz") ?>:</B></P></TD> + <TD> + <INPUT type="text" name="name" size=40 value="<?php p($question->name) ?>"> + <?php if (isset($err["name"])) formerr($err["name"]); ?> + </TD> +</TR> +<tr valign=top> + <td align="right"><p><b><?php print_string("question", "quiz") ?>:</b></p> + <br /> + <br /> + <br /> + <p><font SIZE="1"> + <?php + if ($usehtmleditor) { + helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); + } else { + helpbutton("text", get_string("helptext"), "moodle", true, true); + } + ?> + </font></p> + </td> + <td> + <?php if (isset($err["questiontext"])) { + formerr($err["questiontext"]); + echo "<br />"; + } + + print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); + + if ($usehtmleditor) { + echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'">'; + } else { + echo "<div align=right>"; + print_string("formattexttype"); + echo ":&nbsp;"; + if (!isset($question->questiontextformat)) { + $question->questiontextformat = FORMAT_MOODLE; + } + choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); + helpbutton("textformat", get_string("helpformatting")); + echo "</div>"; + } + ?> + </td> +</tr> +<TR valign=top> + <TD align=right><P><B><?php print_string("imagedisplay", "quiz") ?>:</B></P></TD> + <TD> + <?php if (empty($images)) { + print_string("noimagesyet"); + } else { + choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); + } + ?> + </TD> +</TR> +</TABLE> + +<INPUT type="hidden" name=id value="<?php p($question->id) ?>"> +<INPUT type="hidden" name=qtype value="<?php p($question->qtype) ?>"> +<INPUT type="hidden" name=defaultgrade value="0"> +<INPUT type="submit" value="<?php print_string("savechanges") ?>"> + +</CENTER> +</FORM> diff --git a/mod/quiz/questiontypes/description/editquestion.php b/mod/quiz/questiontypes/description/editquestion.php index 21f8c825730..4d7a67ee5f5 100644 --- a/mod/quiz/questiontypes/description/editquestion.php +++ b/mod/quiz/questiontypes/description/editquestion.php @@ -1,6 +1,6 @@ -<?php // $Id$ +<?PHP // $Id$ print_heading_with_help(get_string("editingdescription", "quiz"), "description", "quiz"); - require("$CFG->dirroot/mod/quiz/questiontypes/description/description.html"); + require("description.html"); ?> diff --git a/mod/quiz/questiontypes/description/questiontype.php b/mod/quiz/questiontypes/description/questiontype.php index f067300d562..dba6997ea66 100644 --- a/mod/quiz/questiontypes/description/questiontype.php +++ b/mod/quiz/questiontypes/description/questiontype.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /////////////////// /// DESCRIPTION /// @@ -40,15 +40,6 @@ class quiz_description_qtype extends quiz_default_questiontype { return $currentnumber; } - function actual_number_of_questions($question) { - /// Used for the feature number-of-questions-per-page - /// to determine the actual number of questions wrapped - /// by this question. - /// The question type description is not even a question - /// in itself so it will return ZERO! - return 0; - } - function grade_response($question, $nameprefix) { $result->grade = 0.0; $result->answers = array(); diff --git a/mod/quiz/questiontypes/match/editquestion.php b/mod/quiz/questiontypes/match/editquestion.php index 16be9b9af06..d6204f03a4a 100644 --- a/mod/quiz/questiontypes/match/editquestion.php +++ b/mod/quiz/questiontypes/match/editquestion.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ if (!empty($question->id)) { $options = get_record("quiz_match", "question", $question->id); @@ -7,7 +7,7 @@ } } if (empty($subquestions) and empty($subanswers)) { - for ($i=0 ; $i < QUIZ_MAX_NUMBER_ANSWERS ; $i++) { + for ($i=0; $i<QUIZ_MAX_NUMBER_ANSWERS; $i++) { $subquestions[] = ""; // Make question slots, default as blank $subanswers[] = ""; // Make answer slots, default as blank } @@ -21,6 +21,6 @@ } } print_heading_with_help(get_string("editingmatch", "quiz"), "match", "quiz"); - require("$CFG->dirroot/mod/quiz/questiontypes/match/match.html"); + require("match.html"); ?> diff --git a/mod/quiz/questiontypes/match/match.html b/mod/quiz/questiontypes/match/match.html index be18ab23fab..7483951c249 100644 --- a/mod/quiz/questiontypes/match/match.html +++ b/mod/quiz/questiontypes/match/match.html @@ -1,91 +1,99 @@ -<form name="theform" method="post" action="question.php"> -<center> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("category", "quiz") ?>:</b></td> - <td> - <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("questionname", "quiz") ?>:</b></td> - <td> - <input type="text" name="name" size="40" value="<?php p($question->name) ?>" alt="<?php print_string("questionname", "quiz") ?>" /> - <?php if (isset($err["name"])) formerr($err["name"]); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("question", "quiz") ?>:</b> - <br /> - <br /> - <br /> - <font size="1"> - <?php - if ($usehtmleditor) { - helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); - } else { - helpbutton("text", get_string("helptext"), "moodle", true, true); - } - ?> - </font> - </td> - <td> - <?php if (isset($err["questiontext"])) { - formerr($err["questiontext"]); - echo "<br />"; - } - print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); - if ($usehtmleditor) { - echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'" />'; - } else { - echo "<div align=\"right\">"; - print_string("formattexttype"); - echo ":&nbsp;"; - if (!isset($question->questiontextformat)) { - $question->questiontextformat = FORMAT_MOODLE; - } - choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); - helpbutton("textformat", get_string("helpformatting")); - echo "</div>"; - } - ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("imagedisplay", "quiz") ?>:</b></td> - <td> - <?php if (empty($images)) { - print_string("noimagesyet"); - } else { - choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); - } - ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("choices", "quiz") ?></b>:</td> - <td><?php print_string("filloutthreequestions", "quiz") ?> - </td> -</tr> -<?php - for ($i=1; $i<=QUIZ_MAX_NUMBER_ANSWERS; $i++) { -?> -<tr valign="top"> - <td align="right"><b><?php echo get_string("question", "quiz")." $i"; ?> :</b></td> - <td> - <textarea name="subquestions[]" rows="5" cols="50"><?php p($subquestions[$i-1]) ?></textarea> - <br /> - <?php echo get_string("matchanswer", "quiz")." $i"; ?>&nbsp;&nbsp; - <input type="text" name="subanswers[]" size="50" value="<?php p($subanswers[$i-1]) ?>" alt="<?php echo get_string("matchanswer", "quiz")." $i"; ?>" /> - </td> -</tr> -<?php - } - - $QUIZ_QTYPES[$question->qtype]->print_replacement_options($question, $course, $contextquiz); - $QUIZ_QTYPES[$question->qtype]->print_question_form_end($question); -?> -</table> - -</center> -</form> +<FORM name="theform" method="post" action="question.php"> +<CENTER> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string("category", "quiz") ?>:</B></P></TD> + <TD> + <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("questionname", "quiz") ?>:</B></P></TD> + <TD> + <INPUT type="text" name="name" size=40 value="<?php p($question->name) ?>"> + <?php if (isset($err["name"])) formerr($err["name"]); ?> + </TD> +</TR> +<tr valign=top> + <td align="right"><p><b><?php print_string("question", "quiz") ?>:</b></p> + <br /> + <br /> + <br /> + <p><font SIZE="1"> + <?php + if ($usehtmleditor) { + helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); + } else { + helpbutton("text", get_string("helptext"), "moodle", true, true); + } + ?> + </font></p> + </td> + <td> + <?php if (isset($err["questiontext"])) { + formerr($err["questiontext"]); + echo "<br />"; + } + + print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); + + if ($usehtmleditor) { + echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'">'; + } else { + echo "<div align=right>"; + print_string("formattexttype"); + echo ":&nbsp;"; + if (!isset($question->questiontextformat)) { + $question->questiontextformat = FORMAT_MOODLE; + } + choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); + helpbutton("textformat", get_string("helpformatting")); + echo "</div>"; + } + ?> + </td> +</tr> +<TR valign=top> + <TD align=right><P><B><?php print_string("imagedisplay", "quiz") ?>:</B></P></TD> + <TD> + <?php if (empty($images)) { + print_string("noimagesyet"); + } else { + choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); + } + ?> + </TD> +</TR> + +<TR valign=top> + <TD align=right><P><B><?php print_string("choices", "quiz") ?></B>:</P></TD> + <TD><P><?php print_string("filloutthreequestions", "quiz") ?></P> + </TD> +</TR> + +<?PHP + for ($i=1; $i<=QUIZ_MAX_NUMBER_ANSWERS; $i++) { +?> + +<TR valign=top> + <TD align=right><P><B><?php echo get_string("question", "quiz")." $i"; ?> :</B></P></TD> + <TD> + <textarea name="subquestions[]" rows=5 cols=50><?php p($subquestions[$i-1]) ?></textarea> + <br /> + <?php echo get_string("matchanswer", "quiz")." $i"; ?>&nbsp;&nbsp; + <INPUT type="text" name="subanswers[]" size=50 value="<?php p($subanswers[$i-1]) ?>"> + </TD> +</TR> + +<?PHP + } +?> + +</TABLE> + +<INPUT type="hidden" name=id value="<?php p($question->id) ?>"> +<INPUT type="hidden" name=qtype value="<?php p($question->qtype) ?>"> +<INPUT type="submit" value="<?php print_string("savechanges") ?>"> + +</CENTER> +</FORM> diff --git a/mod/quiz/questiontypes/match/questiontype.php b/mod/quiz/questiontypes/match/questiontype.php index 0abc2029c1e..419e6122417 100644 --- a/mod/quiz/questiontypes/match/questiontype.php +++ b/mod/quiz/questiontypes/match/questiontype.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ ///////////// /// MATCH /// @@ -12,7 +12,7 @@ class quiz_match_qtype extends quiz_default_questiontype { } function save_question_options($question) { - + if (!$oldsubquestions = get_records("quiz_match_sub", "question", $question->id, "id ASC")) { $oldsubquestions = array(); } @@ -80,7 +80,7 @@ class quiz_match_qtype extends quiz_default_questiontype { } return true; } - + function convert_to_response_answer_field($questionresponse) { /// This method, together with extract_response, should be /// obsolete as soon as we get a better response storage @@ -137,7 +137,7 @@ class quiz_match_qtype extends quiz_default_questiontype { /// Check whether everything turned out alright: if (empty($subquestions)) { - notify("Error: Missing subquestions for this question!"); + notify("Error: Missing subquestions for this question!"); } else { /// Everything is fine - @@ -154,25 +154,23 @@ class quiz_match_qtype extends quiz_default_questiontype { $answers = draw_rand_array($answers, count($answers)); } - ///// Print the input controls ////// + ///// Ptint the input controls ////// echo '<table border="0" cellpadding="10" align="right">'; foreach ($subquestions as $subquestion) { /// Subquestion text: echo '<tr><td align="left" valign="top">'; - echo format_text($subquestion->questiontext, - $question->questiontextformat, NULL, $quiz->course); + echo $subquestion->questiontext; echo '</td>'; /// Drop-down list: $menuname = $nameprefix.$subquestion->id; $response = isset($question->response[$menuname]) ? $question->response[$menuname] : '0'; - if ($readonly - and $quiz->correctanswers - and isset($correctanswers[$menuname]) - and ($correctanswers[$menuname]->id == $response)) { + if (isset($correctanswers[$menuname]) + && $correctanswers[$menuname]->id + == $response) { $class = ' class="highlight" '; } else { $class = ''; diff --git a/mod/quiz/questiontypes/multianswer/editquestion.php b/mod/quiz/questiontypes/multianswer/editquestion.php index b9feb484021..0e58937b527 100644 --- a/mod/quiz/questiontypes/multianswer/editquestion.php +++ b/mod/quiz/questiontypes/multianswer/editquestion.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ if ($question->questiontext and $question->id) { $answers = quiz_get_answers($question); @@ -41,6 +41,6 @@ } print_heading_with_help(get_string('editingmultianswer', 'quiz'), 'multianswer', 'quiz'); - require("$CFG->dirroot/mod/quiz/questiontypes/multianswer/multianswer.html"); + require('multianswer.html'); ?> diff --git a/mod/quiz/questiontypes/multianswer/multianswer.html b/mod/quiz/questiontypes/multianswer/multianswer.html index 553db60c3d2..b6c348e6684 100644 --- a/mod/quiz/questiontypes/multianswer/multianswer.html +++ b/mod/quiz/questiontypes/multianswer/multianswer.html @@ -1,53 +1,103 @@ -<form name="theform" method="post" action="question.php"> -<center> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("category", "quiz") ?>:</b></td> - <td> +<FORM name="theform" method="post" action="question.php"> + +<CENTER> + +<TABLE cellpadding=5> + +<TR valign=top> + + <TD align=right><P><B><?php print_string("category", "quiz") ?>:</B></P></TD> + + <TD> + <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("questionname", "quiz") ?>:</b></td> - <td> - <input type="text" name="name" size="40" value="<?php p($question->name) ?>" alt="<?php print_string("questionname", "quiz") ?>" /> + + </TD> + +</TR> + +<TR valign=top> + + <TD align=right><P><B><?php print_string("questionname", "quiz") ?>:</B></P></TD> + + <TD> + + <INPUT type="text" name="name" size=40 value="<?php p($question->name) ?>"> + <?php if (isset($err["name"])) formerr($err["name"]); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("question", "quiz") ?>:</b></td> - <td> + + </TD> + +</TR> + +<TR valign=top> + + <TD align=right><P><B><?php print_string("question", "quiz") ?>:</B></P></TD> + + <TD> + <?php if (isset($err["questiontext"])) { + formerr($err["questiontext"]); - echo "<br />"; + + echo "<BR />"; + } + print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); + if ($usehtmleditor) { + helpbutton("richtext", get_string("helprichtext"), "moodle"); + } else { + helpbutton("text", get_string("helptext"), "moodle"); + } + ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("imagedisplay", "quiz") ?>:</b></td> - <td> + + </TD> + +</TR> + +<TR valign=top> + + <TD align=right><P><B><?php print_string("imagedisplay", "quiz") ?>:</B></P></TD> + + <TD> + <?php if (empty($images)) { + print_string("noimagesyet"); + } else { + choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); + } + ?> - </td> -</tr> -<?php - $QUIZ_QTYPES[$question->qtype]->print_replacement_options($question, $course, $contextquiz); - $QUIZ_QTYPES[$question->qtype]->print_question_form_end($question); -?> -</table> -<input type="hidden" name="defaultgrade" value="<?php p($question->defaultgrade) ?>" /> + </TD> -</center> -</form> +</TR> + +</TABLE> + + + +<INPUT type="hidden" name=id value="<?php p($question->id) ?>"> + +<INPUT type="hidden" name=qtype value="<?php p($question->qtype) ?>"> + +<INPUT type="hidden" name=defaultgrade value="<?php p($question->defaultgrade) ?>"> + +<INPUT type="submit" value="<?php print_string("savechanges") ?>"> + + + +</CENTER> + +</FORM> diff --git a/mod/quiz/questiontypes/multianswer/questiontype.php b/mod/quiz/questiontypes/multianswer/questiontype.php index 04d0f802d55..a1e029ea3a6 100644 --- a/mod/quiz/questiontypes/multianswer/questiontype.php +++ b/mod/quiz/questiontypes/multianswer/questiontype.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /////////////////// /// MULTIANSWER /// (Embedded - cloze) @@ -63,16 +63,7 @@ class quiz_embedded_cloze_qtype extends quiz_default_questiontype { if (!$oldmultianswers = get_records("quiz_multianswers", "question", $question->id, "id ASC")) { $oldmultianswers = array(); } - - if (empty($question->name)) { - $result->notice = get_string("missingname", "quiz"); - return $result; - } - if (!$question->answers) { - $result->notice = get_string('noquestionintext', 'quiz'); - return $result; - } - + // Insert all the new multi answers foreach ($question->answers as $dataanswer) { if ($oldmultianswer = array_shift($oldmultianswers)) { // Existing answer, so reuse it @@ -120,9 +111,7 @@ class quiz_embedded_cloze_qtype extends quiz_default_questiontype { $question = quiz_qtype_multianswer_extract_question ($form->questiontext); - if (isset($authorizedquestion->id)) { - $question->id = $authorizedquestion->id; - } + $question->id = $authorizedquestion->id; $question->qtype = $authorizedquestion->qtype; $question->category = $authorizedquestion->category; @@ -133,40 +122,45 @@ class quiz_embedded_cloze_qtype extends quiz_default_questiontype { $question->image = $form->image; } - if (!empty($question->id)) { // Question already exists - if (!update_record("quiz_questions", $question)) { - error("Could not update question!"); + // Formcheck + $err = array(); + if (empty($question->name)) { + $err["name"] = get_string("missingname", "quiz"); + } + if (empty($question->questiontext)) { + $err["questiontext"] = get_string("missingquestiontext", "quiz"); + } + if ($err) { // Formcheck failed + notify(get_string("someerrorswerefound")); + + } else { + + if (!empty($question->id)) { // Question already exists + if (!update_record("quiz_questions", $question)) { + error("Could not update question!"); + } + } else { // Question is a new one + $question->stamp = make_unique_id_code(); // Set the unique code (not to be changed) + if (!$question->id = insert_record("quiz_questions", $question)) { + error("Could not insert new question!"); + } } - } else { // Question is a new one - $question->stamp = make_unique_id_code(); // Set the unique code (not to be changed) - if (!$question->id = insert_record("quiz_questions", $question)) { - error("Could not insert new question!"); + + // Now to save all the answers and type-specific options + $result = $this->save_question_options($question); + + if (!empty($result->error)) { + error($result->error); } - } - // Now to save all the answers and type-specific options - - $form->id = $question->id; - $form->qtype = $question->qtype; - $form->category = $question->category; - - $result = $this->save_question_options($question); - - if (!empty($result->error)) { - error($result->error); + if (!empty($result->notice)) { + notice_yesno($result->notice, "question.php?id=$question->id", "edit.php"); + print_footer($course); + exit; + } + + redirect("edit.php"); } - - if (!empty($result->notice)) { - notice($result->notice, "question.php?id=$question->id"); - } - - if (!empty($result->noticeyesno)) { - notice_yesno($result->noticeyesno, "question.php?id=$question->id", "edit.php"); - print_footer($course); - exit; - } - - return $question; } function convert_to_response_answer_field($questionresponse) { @@ -206,6 +200,7 @@ class quiz_embedded_cloze_qtype extends quiz_default_questiontype { function print_question_formulation_and_controls($question, $quiz, $readonly, $answers, $correctanswers, $nameprefix) { + global $THEME; // For this question type, we better print the image on top: quiz_print_possible_question_image($quiz->id, $question); @@ -255,7 +250,7 @@ class quiz_embedded_cloze_qtype extends quiz_default_questiontype { if ($quiz->feedback && isset($answers[$inputname]) && '' !== $answers[$inputname]->feedback) { $title = str_replace("'", "\\'", $answers[$inputname]->feedback); - $popup = " onmouseover=\"return overlib('$title', CAPTION, '$strfeedback', FGCOLOR);\" ". + $popup = " onmouseover=\"return overlib('$title', CAPTION, '$strfeedback', FGCOLOR, '$THEME->cellcontent');\" ". " onmouseout=\"return nd();\" "; } else { $popup = ''; @@ -276,7 +271,7 @@ class quiz_embedded_cloze_qtype extends quiz_default_questiontype { ? ' selected="selected" ' : ''; $outputoptions .= "<option value=\"$mcanswer->id\" $selected>$mcanswer->answer</option>"; } - echo "<select $popup $style name=\"$inputname\">"; + echo "<select $popup $style name=\"$inputname\" $readonly>"; echo $outputoptions; echo '</select>'; break; diff --git a/mod/quiz/questiontypes/multichoice/editquestion.php b/mod/quiz/questiontypes/multichoice/editquestion.php index bd9828f0f81..224607002d1 100644 --- a/mod/quiz/questiontypes/multichoice/editquestion.php +++ b/mod/quiz/questiontypes/multichoice/editquestion.php @@ -8,7 +8,7 @@ if (!empty($options->answers)) { $answersraw = get_records_list("quiz_answers", "id", $options->answers); } - for ($i=0 ; $i < QUIZ_MAX_NUMBER_ANSWERS ; $i++) { + for ($i=0; $i<QUIZ_MAX_NUMBER_ANSWERS; $i++) { $answers[] = ""; // Make answer slots, default as blank } if (!empty($answersraw)) { @@ -19,6 +19,6 @@ } } print_heading_with_help(get_string("editingmultichoice", "quiz"), "multichoice", "quiz"); - require("$CFG->dirroot/mod/quiz/questiontypes/multichoice/multichoice.html"); + require("multichoice.html"); ?> diff --git a/mod/quiz/questiontypes/multichoice/multichoice.html b/mod/quiz/questiontypes/multichoice/multichoice.html index 2560ace7370..de725266d00 100644 --- a/mod/quiz/questiontypes/multichoice/multichoice.html +++ b/mod/quiz/questiontypes/multichoice/multichoice.html @@ -1,133 +1,124 @@ -<?php - if (!isset($options->single)) { - $options->single = 1; - } -?> -<form name="theform" method="post" action="question.php"> -<center> -<table cellpadding="5"> - - <tr valign="top"> - <td align="right"><b><?php print_string("category", "quiz") ?>:</b></td> - <td> - <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> - </td> - </tr> - - <tr valign="top"> - <td align="right"><b><?php print_string("questionname", "quiz") ?>:</b></td> - <td> - <input type="text" name="name" size="40" value="<?php p($question->name) ?>" alt="<?php print_string("questionname", "quiz") ?>" /> - <?php if (isset($err["name"])) formerr($err["name"]); ?> - </td> - </tr> - - <tr valign="top"> - <td align="right"><b><?php print_string("question", "quiz") ?>:</b> - <br /><br /><br /><font size="1"> - <?php - if ($usehtmleditor) { - helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); - } else { - helpbutton("text", get_string("helptext"), "moodle", true, true); - } - ?> - </font> - </td> - <td> - <?php - if (isset($err["questiontext"])) { - formerr($err["questiontext"]); - echo "<br />"; - } - print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); - if ($usehtmleditor) { - echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'" />'; - } else { - echo "<div align=\"right\">"; - print_string("formattexttype"); - echo ":&nbsp;"; - if (!isset($question->questiontextformat)) { - $question->questiontextformat = FORMAT_MOODLE; - } - choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); - helpbutton("textformat", get_string("helpformatting")); - echo "</div>"; - } - ?> - </td> - </tr> - - <tr valign="top"> - <td align="right"><b><?php print_string("imagedisplay", "quiz") ?>:</b></td> - <td> - <?php - if (empty($images)) { - print_string("noimagesyet"); - } else { - choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); - } - ?> - </td> - </tr> - - <tr valign="top"> - <td align="right"><b><?php print_string("answerhowmany", "quiz") ?>:</b></td> - <td> - <?php - $menu[0] = get_string("answersingleno", "quiz"); - $menu[1] = get_string("answersingleyes", "quiz"); - choose_from_menu($menu, "single", "$options->single", ""); - unset($menu); - ?> - </td> - </tr> - - <tr valign="top"> - <td align="right"><b><?php print_string("choices", "quiz") ?></b>:</td> - <td><?php print_string("fillouttwochoices", "quiz") ?></td> - </tr> - -<?php - for ($i=1; $i<=QUIZ_MAX_NUMBER_ANSWERS; $i++) { - if (!isset($answers[$i-1]->fraction)) { - $answers[$i-1]->answer = ''; - $answers[$i-1]->fraction = 0; - $answers[$i-1]->feedback = ''; - } -?> - - <tr valign="top"> - <td align="right"><b><?php echo get_string("choice", "quiz")." $i"; ?>:</b></td> - <td> - <input type="text" name="answer[]" size="50" maxlength="255" value="<?php p($answers[$i-1]->answer) ?>" alt="<?php echo get_string("choice", "quiz")." $i"; ?>"/>&nbsp;&nbsp; - <?php - print_string("grade"); - echo ":&nbsp;"; - choose_from_menu($gradeoptionsfull, "fraction[]", $answers[$i-1]->fraction, ""); - ?> - <br /> - </td> - </tr> - - <tr valign="top"> - <td align="right"><b><?php print_string("feedback", "quiz") ?>:</b></td> - <td> - <textarea name="feedback[]" rows="2" cols="50"><?php p($answers[$i-1]->feedback) ?></textarea> - </td> - </tr> - - <tr valign="top"> - <td colspan="2">&nbsp;</td> - </tr> - -<?php - } /// End of loop, printing answers - $QUIZ_QTYPES[$question->qtype]->print_replacement_options($question, $course, $contextquiz); - $QUIZ_QTYPES[$question->qtype]->print_question_form_end($question); -?> -</table> - -</center> -</form> - +<FORM name="theform" method="post" action="question.php"> +<CENTER> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string("category", "quiz") ?>:</B></P></TD> + <TD> + <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("questionname", "quiz") ?>:</B></P></TD> + <TD> + <INPUT type="text" name="name" size=40 value="<?php p($question->name) ?>"> + <?php if (isset($err["name"])) formerr($err["name"]); ?> + </TD> +</TR> +<tr valign=top> + <td align="right"><p><b><?php print_string("question", "quiz") ?>:</b></p> + <br /> + <br /> + <br /> + <p><font SIZE="1"> + <?php + if ($usehtmleditor) { + helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); + } else { + helpbutton("text", get_string("helptext"), "moodle", true, true); + } + ?> + </font></p> + </td> + <td> + <?php if (isset($err["questiontext"])) { + formerr($err["questiontext"]); + echo "<br />"; + } + + print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); + + if ($usehtmleditor) { + echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'">'; + } else { + echo "<div align=right>"; + print_string("formattexttype"); + echo ":&nbsp;"; + if (!isset($question->questiontextformat)) { + $question->questiontextformat = FORMAT_MOODLE; + } + choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); + helpbutton("textformat", get_string("helpformatting")); + echo "</div>"; + } + ?> + </td> +</tr> +<TR valign=top> + <TD align=right><P><B><?php print_string("imagedisplay", "quiz") ?>:</B></P></TD> + <TD> + <?php if (empty($images)) { + print_string("noimagesyet"); + } else { + choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); + } + ?> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("answerhowmany", "quiz") ?>:</B></P></TD> + <TD> + <?php + $menu[0] = get_string("answersingleno", "quiz"); + $menu[1] = get_string("answersingleyes", "quiz"); + choose_from_menu($menu, "single", "$options->single", ""); + unset($menu); + ?> + </TD> +</TR> + +<TR valign=top> + <TD align=right><P><B><?php print_string("choices", "quiz") ?></B>:</P></TD> + <TD><P><?php print_string("fillouttwochoices", "quiz") ?></P> + </TD> +</TR> + +<?PHP + for ($i=1; $i<=QUIZ_MAX_NUMBER_ANSWERS; $i++) { + if (!isset($answers[$i-1]->fraction)) { + $answers[$i-1]->answer = ''; + $answers[$i-1]->fraction = 0; + $answers[$i-1]->feedback = ''; + } +?> +<TR valign=top> + <TD align=right><P><B><?php echo get_string("choice", "quiz")." $i"; ?>:</B></P></TD> + <TD> + <INPUT type="text" name="answer[]" size=50 maxlength=255 value="<?php p($answers[$i-1]->answer) ?>">&nbsp;&nbsp; + <?php print_string("grade"); + echo ":&nbsp;"; + choose_from_menu($gradeoptionsfull, "fraction[]", $answers[$i-1]->fraction, ""); ?> + <BR> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("feedback", "quiz") ?>:</B></P></TD> + <TD> + <textarea name="feedback[]" rows=2 cols=50 wrap="virtual"><?php p($answers[$i-1]->feedback) ?></textarea> + </TD> +</TR> + +<TR valign=top> + <TD colspan=2>&nbsp;</TD> +</TR> + +<?php + } /// End of loop, printing answers +?> +</TABLE> + +<INPUT type="hidden" name=id value="<?php p($question->id) ?>"> +<INPUT type="hidden" name=qtype value="<?php p($question->qtype) ?>"> +<INPUT type="submit" value="<?php print_string("savechanges") ?>"> + +</CENTER> +</FORM> diff --git a/mod/quiz/questiontypes/multichoice/questiontype.php b/mod/quiz/questiontypes/multichoice/questiontype.php index 8a3ea96ddbe..06c53cb2b6e 100644 --- a/mod/quiz/questiontypes/multichoice/questiontype.php +++ b/mod/quiz/questiontypes/multichoice/questiontype.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /////////////////// /// MULTICHOICE /// @@ -204,17 +204,17 @@ class quiz_multichoice_qtype extends quiz_default_questiontype { $checked = !empty($question->response[$nameprefix.$aid]) ? ' checked="checked" ' : ''; } - echo "<input $readonly $name $checked $type value=\"$answer->id\" alt=\"".s($answer->answer)."\" />"; + if ($readonly) { + $readonly = ' readonly="readonly" disabled="disabled" '; + } + echo "<input $readonly $name $checked $type value=\"$answer->id\" />"; echo "</td>"; - - /// remove para tags - not needed - $options->para = false; - - if ($readonly and $quiz->correctanswers and !empty($correctanswers[$nameprefix.$aid])) { - echo '<td valign="top" class="highlight">'.format_text("$qnumchar. $answer->answer", FORMAT_MOODLE , $options).'</td>'; + if ($readonly and $quiz->correctanswers || $quiz->feedback + and !empty($correctanswers[$nameprefix.$aid])) { + echo '<td valign="top" class="highlight">'.format_text("$qnumchar. $answer->answer").'</td>'; } else { - echo '<td valign="top">'.format_text("$qnumchar. $answer->answer", FORMAT_MOODLE, $options).'</td>'; + echo '<td valign="top">'.format_text("$qnumchar. $answer->answer").'</td>'; } if ($quiz->feedback) { echo "<td valign=\"top\">&nbsp;"; diff --git a/mod/quiz/questiontypes/numerical/editquestion.php b/mod/quiz/questiontypes/numerical/editquestion.php index 39df1bbb481..72c977627dd 100644 --- a/mod/quiz/questiontypes/numerical/editquestion.php +++ b/mod/quiz/questiontypes/numerical/editquestion.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // This will only support one answer of the type NUMERICAL // However, lib.php has support for multiple answers @@ -81,6 +81,6 @@ } print_heading_with_help(get_string("editingnumerical", "quiz"), "numerical", "quiz"); - require("$CFG->dirroot/mod/quiz/questiontypes/numerical/numerical.html"); + require("numerical.html"); ?> diff --git a/mod/quiz/questiontypes/numerical/numerical.html b/mod/quiz/questiontypes/numerical/numerical.html index 57b3cae213c..f22a15e33c6 100644 --- a/mod/quiz/questiontypes/numerical/numerical.html +++ b/mod/quiz/questiontypes/numerical/numerical.html @@ -1,25 +1,25 @@ -<form name="theform" method="post" action="question.php"> -<center> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("category", "quiz") ?>:</b></td> - <td> +<FORM name="theform" method="post" action="question.php"> +<CENTER> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string("category", "quiz") ?>:</B></P></TD> + <TD> <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("questionname", "quiz") ?>:</b></td> - <td> - <input type="text" name="name" size="50" value="<?php p($question->name) ?>" alt="<?php print_string("questionname", "quiz") ?>" /> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("questionname", "quiz") ?>:</B></P></TD> + <TD> + <INPUT type="text" name="name" size=50 value="<?php p($question->name) ?>"> <?php if (isset($err["name"])) formerr($err["name"]); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("question", "quiz") ?>:</b> + </TD> +</TR> +<tr valign=top> + <td align="right"><p><b><?php print_string("question", "quiz") ?>:</b></p> <br /> <br /> <br /> - <font size="1"> + <p><font SIZE="1"> <?php if ($usehtmleditor) { helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); @@ -27,7 +27,7 @@ helpbutton("text", get_string("helptext"), "moodle", true, true); } ?> - </font> + </font></p> </td> <td> <?php if (isset($err["questiontext"])) { @@ -38,9 +38,9 @@ print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); if ($usehtmleditor) { - echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'" />'; + echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'">'; } else { - echo "<div align=\"right\">"; + echo "<div align=right>"; print_string("formattexttype"); echo ":&nbsp;"; if (!isset($question->questiontextformat)) { @@ -53,20 +53,20 @@ ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("imagedisplay", "quiz") ?>:</b></td> - <td> +<TR valign=top> + <TD align=right><P><B><?php print_string("imagedisplay", "quiz") ?>:</B></P></TD> + <TD> <?php if (empty($images)) { print_string("noimagesyet"); } else { choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); } ?> - </td> -</tr> + </TD> +</TR> -<tr valign="top"> - <td align="right"><b><?php print_string("correctanswer", "quiz") ?>:</b></td> +<TR valign=top> + <TD align=right><P><B><?php print_string("correctanswer", "quiz") ?>:</B></P></TD> <?php // Even thou the rest of the module can handle up to six numerical answers, // this form will limit the number of numerical answers to one only. @@ -77,70 +77,69 @@ $acceptederror = ""; } ?> - <td> - <input align="left" type="text" id="correct0" name="answer[]" size="20" value="<?php p($answers[0]->answer) ?>" alt="<?php print_string("correctanswer", "quiz") ?>" />&nbsp;&nbsp; - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("acceptederror", "quiz"); ?>:</b></td> - <td> - <input align="left" type="text" id="acceptederror0" name="acceptederror[]" size="15" value="<?php p($acceptederror) ?>" alt="<?php print_string("acceptederror", "quiz"); ?>" />&plusmn; + <TD> + <INPUT align="LEFT" type="text" id="correct0" name="answer[]" size="20" value="<?php p($answers[0]->answer) ?>"/>&nbsp;&nbsp; + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("acceptederror", "quiz"); ?>:</B></P></TD> + <TD> + <INPUT align="LEFT" type="text" id="acceptederror0" name="acceptederror[]" size="15" value="<?php p($acceptederror) ?>" />&plusmn; <!-- Values max and min will be determined when the form is submitted --> - <input type="hidden" id="min0" name="min[]" value="" /> - <input type="hidden" id="max0" name="max[]" value="" /> - <input type="hidden" name="fraction[]" value="1" /> - <br/> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("feedback", "quiz") ?>:</b></td> - <td> - <textarea name="feedback[]" rows="2" cols="50"><?php p($answers[0]->feedback) ?></textarea> - </td> -</tr> -<tr valign="top"> -<td align="right"><b><?php print_string("unit", "quiz") ?>:</b></td> - <td> - <input type="hidden" name="multiplier[]" value="1.0" /> - <input align="left" type="text" id="defaultunit" name="unit[]" - size="5" value="<?php p($units[0]->unit) ?>" alt="<?php print_string("unit", "quiz") ?>" /> - <b>(<?php print_string("optional", "quiz") ?>)</b> - </td> -</tr> -<tr valign="top"> + <INPUT type="HIDDEN" id="min0" name="min[]" value=""/> + <INPUT type="HIDDEN" id="max0" name="max[]" value=""/> + <INPUT type="HIDDEN" name="fraction[]" value="1"/> + <BR/> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("feedback", "quiz") ?>:</B></P></TD> + <TD> + <textarea name="feedback[]" rows=2 cols=50 wrap="virtual"><?php p($answers[0]->feedback) ?></textarea> + </TD> +</TR> +<TR valign=top> +<TD align=right><P><B><?php print_string("unit", "quiz") ?>:</B></P></TD> + <TD> + <P><INPUT type="HIDDEN" name="multiplier[]" value="1.0"/> + <INPUT align="LEFT" type="text" id="defaultunit" name="unit[]" + size="5" value="<?php p($units[0]->unit) ?>"/> + <B>(<?php print_string("optional", "quiz") ?>)</B></P> + </TD> +</TR> +<TR valign=top> <td></td> -<td align="left"><b><?php print_string("alternativeunits", "quiz") ?>:</b></td> +<TD align=left><P><B><?php print_string("alternativeunits", "quiz") ?>:</B></P></TD> <td></td> -</tr> -<?php +</TR> +<?PHP for ($i=1; $i<count($units); $i++) { $unit=$units[$i]; ?> -<tr valign="top"> +<TR valign=top> <td></td> - <td align="left"> - <b><?php print_string("multiplier", "quiz") ?>:</b> - <input type="text" id="<?php p("multiplier$i") ?>" size="10" - align="right" name="multiplier[]" - value="<?php p($unit->multiplier) ?>" - alt="<?php print_string("multiplier", "quiz") ?>" /> - <b>&nbsp;&nbsp;&nbsp;<?php print_string("unit", "quiz") ?>:</b> - <input align="left" type="text" id="<?php p("unit$i") ?>" + <TD align=left> + <P><B><?php print_string("multiplier", "quiz") ?>:</B> + <INPUT type="text" id="<?php p("multiplier$i") ?>" size="10" + align="RIGHT" name="multiplier[]" + value="<?php p($unit->multiplier) ?>"/> + <B>&nbsp;&nbsp;&nbsp;<?php print_string("unit", "quiz") ?>:</B> + <INPUT align="LEFT" type="text" id="<?php p("unit$i") ?>" name="unit[]" - size="5" value="<?php p($unit->unit) ?>" /> - </td> -</tr> -<?php + size="5" value="<?php p($unit->unit) ?>"/></P> + </TD> +</TR> +<?PHP } /// END for - - $QUIZ_QTYPES[$question->qtype]->print_replacement_options($question, $course, $contextquiz); - $QUIZ_QTYPES[$question->qtype]->print_question_form_end($question, 'onclick="return determineMinAndMax();"'); ?> -</table> +</TABLE> -</center> -</form> -<script language="javascript" type="text/javascript"> +<INPUT type="hidden" name=id value="<?php p($question->id) ?>"> +<INPUT type="hidden" name=qtype value="<?php p($question->qtype) ?>"> +<INPUT type="submit" onClick="return determineMinAndMax();" value="<?php print_string("savechanges") ?>"> +</CENTER> +</FORM> +<SCRIPT language="JAVASCRIPT"> function determineMinAndMax() { // This client-side script will determine the values for min and max // based on the input for answer and acceptederror. @@ -175,4 +174,4 @@ function determineMinAndMax() { } } } -</script> +</SCRIPT> diff --git a/mod/quiz/questiontypes/numerical/questiontype.php b/mod/quiz/questiontypes/numerical/questiontype.php index b6e519da1c2..cc3ddb763fd 100644 --- a/mod/quiz/questiontypes/numerical/questiontype.php +++ b/mod/quiz/questiontypes/numerical/questiontype.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ ///////////////// /// NUMERICAL /// @@ -163,7 +163,7 @@ class quiz_numerical_qtype extends quiz_shortanswer_qtype { unset($responsenum); // Answer is not numeric } } else if (ereg( - '^([+-]?([0-9]+(\\.[0-9]*)?|[.][0-9]+)([eE][-+]?[0-9]+)?)([^0-9].*)?$', + '^(([0-9]+(\\.[0-9]*)?|[.][0-9]+)([eE][-+]?[0-9]+)?)([^0-9].*)?$', $responsenum, $responseparts)) { $responsenum = (float)$responseparts[1]; if ($responseparts[5]) { diff --git a/mod/quiz/questiontypes/random/editquestion.php b/mod/quiz/questiontypes/random/editquestion.php index 819a6602eab..1c67423c649 100644 --- a/mod/quiz/questiontypes/random/editquestion.php +++ b/mod/quiz/questiontypes/random/editquestion.php @@ -1,6 +1,6 @@ -<?php // $Id$ +<?PHP // $Id$ print_heading_with_help(get_string("editingrandom", "quiz"), "random", "quiz"); - require("$CFG->dirroot/mod/quiz/questiontypes/random/random.html"); + require("random.html"); ?> diff --git a/mod/quiz/questiontypes/random/questiontype.php b/mod/quiz/questiontypes/random/questiontype.php index a269a0d09b8..6bced4e9b5d 100644 --- a/mod/quiz/questiontypes/random/questiontype.php +++ b/mod/quiz/questiontypes/random/questiontype.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ ////////////// /// RANDOM /// @@ -49,6 +49,9 @@ class quiz_random_qtype extends quiz_default_questiontype { } function convert_to_response_answer_field($questionresponse) { + /// THIS IS PART OF A WORKAROUND AS THIS IS THE ONLY + /// CASE WHERE IT IS NEEDED TO STORE TWO RESPONSE RECORDS... + global $QUIZ_QTYPES; foreach ($questionresponse as $key => $response) { @@ -67,7 +70,8 @@ class quiz_random_qtype extends quiz_default_questiontype { function create_response($question, $nameprefix, $questionsinuse) { // It's for question types like RANDOMSAMATCH and RANDOM that // the true power of the pattern with this function comes to the surface. - + // This implementation will stand even after a possible exclusion of + // the funtions extract_response and convert_to_response_answer_field global $CFG; if (!isset($this->catrandoms[$question->category])) { @@ -75,20 +79,12 @@ class quiz_random_qtype extends quiz_default_questiontype { $possiblerandomqtypes = "'" . implode("','", $this->possiblerandomqtypes) . "'"; - if ($question->questiontext == "1") { - // recurse into subcategories - $categorylist = quiz_categorylist($question->category); - } else { - $categorylist = $question->category; - } $this->catrandoms[$question->category] = get_records_sql ("SELECT * FROM {$CFG->prefix}quiz_questions - WHERE category IN ($categorylist) + WHERE category = '$question->category' AND id NOT IN ($questionsinuse) AND qtype IN ($possiblerandomqtypes)"); - $this->catrandoms[$question->category] = - draw_rand_array($this->catrandoms[$question->category], - count($this->catrandoms[$question->category])); // from bug 1889 + shuffle($this->catrandoms[$question->category]); } while ($randomquestion = @@ -112,85 +108,35 @@ class quiz_random_qtype extends quiz_default_questiontype { function extract_response($rawresponse, $nameprefix) { global $QUIZ_QTYPES; - - /// The raw response records for random questions come in two flavours: - /// ---- 1 ---- - /// For responses stored by Moodle version 1.5 and later the answer - /// field has the pattern random#-* where the # part is the numeric - /// question id of the actual question shown in the quiz attempt - /// and * represents the student response to that actual question. - /// ---- 2 ---- - /// For responses stored by older Moodle versions - the answer field is - /// simply the question id of the actual question. The student response - /// to the actual question is stored in a separate response record. - /// ----------------------- - /// This means that prior to Moodle version 1.5, random questions needed - /// two response records for storing the response to a single question. - /// From version 1.5 and later the question type random works like all - /// the other question types in that it now only needs one response - /// record per question. - /// Because updating the old response records to fit the new response - /// record format could need hours of CPU time and the equivalent - /// amount of down time for the Moodle site and because a response - /// storage with two response formats for random question only effect - /// this function, where the response record is translated, this - /// function is now able to handle both types of response record. - - - /*** Pick random question id from the answer field in a way that ***/ - /*** works for both formats: ***/ - if (!ereg('^(random)?([0-9]+)(-(.*))?$', $rawresponse->answer, $answerregs)) { - error("The answer value '$rawresponse->answer' for the response with " - ."id=$rawresponse->id to the random question " - ."$rawresponse->question is malformated." - ." - No response can be extracted!"); - } - $randomquestionid = $answerregs[2]; - if ($randomquestion = get_record('quiz_questions', - 'id', $randomquestionid)) { - - if ($answerregs[1] && $answerregs[3]) { - /**** The raw response is formatted according to - /**** Moodle version 1.5 or later ****/ - $randomresponse = $rawresponse; - $randomresponse->question = $randomquestionid; - $randomresponse->answer = $answerregs[4]; - - } else if ($randomresponse = get_record + 'id', $rawresponse->answer)) { + if ($randomresponse = get_record ('quiz_responses', 'question', $rawresponse->answer, 'attempt', $rawresponse->attempt)) { - /*** The response was stored by an older version of Moodle */ - /*** :-) ***/ - } else { - notify("Error: Cannot find response to random question $randomquestionid"); - unset($randomresponse); - } - - if (isset($randomresponse)) { /// The prefered case: - /// There is a random question and a response field, from - /// which the response array can be extracted: + // The response field for the random question was found + // the response array can be extracted: $response = $QUIZ_QTYPES[$randomquestion->qtype] ->extract_response($randomresponse, quiz_qtype_nameprefix($randomquestion, $nameprefix)); } else { + notify("Error: Cannot find response to random question $randomquestion->id"); /// Instead: workaround by creating a new response: $response = $QUIZ_QTYPES[$randomquestion->qtype] ->create_response($randomquestion, quiz_qtype_nameprefix($randomquestion, $nameprefix), - "$rawresponse->question,$randomquestionid"); + "$rawresponse->question,$rawresponse->answer"); // (That last argument is instead of $questionsinuse. // It is not correct but it would be very messy to // determine the correct value, while very few // question types actually use it and they who do have // good chances to execute properly anyway.) } - $response[$nameprefix] = $randomquestionid; + $response[$nameprefix] = $randomquestion->id; return $response; } else { notify("Error: Unable to find random question $rawresponse->question"); @@ -208,7 +154,7 @@ class quiz_random_qtype extends quiz_default_questiontype { if ($actualquestion = $this->get_wrapped_question($question, $nameprefix)) { echo '<input type="hidden" name="' . $nameprefix - . '" value="' . $actualquestion->id . '" />'; + . '" value="' . $actualquestion->id . '"/>'; return $QUIZ_QTYPES[$actualquestion->qtype] ->print_question_formulation_and_controls($actualquestion, $quiz, $readonly, $answers, $correctanswers, @@ -221,7 +167,9 @@ class quiz_random_qtype extends quiz_default_questiontype { function get_wrapped_question($question, $nameprefix) { if (!empty($question->response[$nameprefix]) and $actualquestion = get_record('quiz_questions', - 'id', $question->response[$nameprefix])) { + 'id', $question->response[$nameprefix], + // The category check is a security check + 'category', $question->category)) { $actualquestion->response = $question->response; unset($actualquestion->response[$nameprefix]); $actualquestion->maxgrade = $question->maxgrade; diff --git a/mod/quiz/questiontypes/random/random.html b/mod/quiz/questiontypes/random/random.html index be8e851bed2..b112268b7ef 100644 --- a/mod/quiz/questiontypes/random/random.html +++ b/mod/quiz/questiontypes/random/random.html @@ -1,37 +1,30 @@ -<center> -<form name="theform" method="post" action="question.php"> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("category", "quiz") ?>:</b></td> - <td> - <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("questionname", "quiz") ?>:</b></td> - <td> - <?php if (empty($question->name)) { - $question->name = get_string("random", "quiz"); - } ?> - <input type="text" name="name" size="40" value="<?php p($question->name) ?>" alt="<?php print_string("questionname", "quiz") ?>" /> - <?php if (isset($err["name"])) formerr($err["name"]); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("recurse", "quiz") ?>:</b></td> - <td> - <?php if (!isset($question->questiontext)) { - $question->questiontext = "0"; - } ?> - <input type="hidden" name="questiontext" value="0" /> - <input type="checkbox" name="questiontext" value="1" <?php echo ($question->questiontext == "1") ? 'checked="checked"' : '' ?> /> - </td> -</tr> -</table> -<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey; ?>" /> -<input type="hidden" name="questiontextformat" value="0" /> -<input type="hidden" name="id" value="<?php p($question->id) ?>" /> -<input type="hidden" name="qtype" value="<?php p($question->qtype) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -</form> -</center> +<center> +<form name="theform" method="post" action="question.php"> + +<table cellpadding=5> +<tr valign=top> + <td align=right><P><B><?php print_string("category", "quiz") ?>:</B></P></TD> + <td> + <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> + </td> +</tr> +<tr valign=top> + <td align=right><P><B><?php print_string("questionname", "quiz") ?>:</B></P></TD> + <td> + <?php if (empty($question->name)) { + $question->name = get_string("random", "quiz"); + } ?> + <input type="text" name="name" size=40 value="<?php p($question->name) ?>"> + <?php if (isset($err["name"])) formerr($err["name"]); ?> + </td> +</tr> +</table> + +<input type="hidden" name=questiontext value="---"> + +<input type="hidden" name=id value="<?php p($question->id) ?>"> +<input type="hidden" name=qtype value="<?php p($question->qtype) ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> +</form> +</center> + diff --git a/mod/quiz/questiontypes/randomsamatch/editquestion.php b/mod/quiz/questiontypes/randomsamatch/editquestion.php index 8589f8d5e88..87045a9cab2 100644 --- a/mod/quiz/questiontypes/randomsamatch/editquestion.php +++ b/mod/quiz/questiontypes/randomsamatch/editquestion.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ if (!empty($question->id)) { $options = get_record("quiz_randomsamatch", "question", $question->id); } else { @@ -6,6 +6,6 @@ } $numberavailable = count_records("quiz_questions", "category", $category->id, "qtype", SHORTANSWER); print_heading_with_help(get_string("editingrandomsamatch", "quiz"), "randomsamatch", "quiz"); - require("$CFG->dirroot/mod/quiz/questiontypes/randomsamatch/randomsamatch.html"); + require("randomsamatch.html"); ?> diff --git a/mod/quiz/questiontypes/randomsamatch/questiontype.php b/mod/quiz/questiontypes/randomsamatch/questiontype.php index 06dddeb45bb..d84cfbd8a36 100644 --- a/mod/quiz/questiontypes/randomsamatch/questiontype.php +++ b/mod/quiz/questiontypes/randomsamatch/questiontype.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ ///////////////////// /// RANDOMSAMATCH /// diff --git a/mod/quiz/questiontypes/randomsamatch/randomsamatch.html b/mod/quiz/questiontypes/randomsamatch/randomsamatch.html index da238891de1..8601db1ab1a 100644 --- a/mod/quiz/questiontypes/randomsamatch/randomsamatch.html +++ b/mod/quiz/questiontypes/randomsamatch/randomsamatch.html @@ -1,87 +1,91 @@ -<form name="theform" method="post" action="question.php"> -<center> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("category", "quiz") ?>:</b></td> - <td> - <?php echo $categories[$question->category]; ?> - <input type="hidden" name="category" value="<?php echo "$question->category"; ?>" /> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("questionname", "quiz") ?>:</b></td> - <td> - <?php - if (empty($question->name)) { - $question->name = get_string("randomsamatch", "quiz"); - } - ?> - <input type="text" name="name" size="40" value="<?php p($question->name) ?>" /> - <?php if (isset($err["name"])) formerr($err["name"]); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("introduction", "quiz") ?>:</b> - <br /> - <font size="1"> - <?php - if ($usehtmleditor) { - helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); - } else { - helpbutton("text", get_string("helptext"), "moodle", true, true); - } - ?> - </font> - </td> - <td> - <?php if (isset($err["questiontext"])) { - formerr($err["questiontext"]); - echo "<br />"; - } - if (empty($question->questiontext)) { - $question->questiontext = get_string("randomsamatchintro", "quiz"); - } - print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); - if ($usehtmleditor) { - echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'" />'; - } else { - echo '<div align="right">'; - print_string("formattexttype"); - echo ":&nbsp;"; - if (empty($question->questiontextformat)) { - $question->questiontextformat = FORMAT_MOODLE; - } - choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); - helpbutton("textformat", get_string("helpformatting")); - echo "</div>"; - } - ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("randomsamatchnumber", "quiz") ?>:</b></td> - <td> - <?php - if ($numberavailable < 2) { - echo get_string('createfirst', 'quiz'); - $maxrandom=2; - } else if ($numberavailable < 6) { - $maxrandom = $numberavailable; - } else { - $maxrandom = QUIZ_MAX_NUMBER_ANSWERS; - } - for ($i=2;$i<=$maxrandom;$i++) { - $menu[$i] = $i; - } - choose_from_menu($menu, "choose", "$options->choose", ""); - unset($menu); - ?> - </td> -</tr> -<?php - $QUIZ_QTYPES[$question->qtype]->print_replacement_options($question, $course, $contextquiz); - $QUIZ_QTYPES[$question->qtype]->print_question_form_end($question); -?> -</table> -</center> -</form> +<FORM name="theform" method="post" action="question.php"> +<CENTER> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string("category", "quiz") ?>:</B></P></TD> + <TD> + <?PHP echo $categories[$question->category]; ?> + <input type="hidden" name="category" value="<?PHP echo "$question->category"; ?>"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("questionname", "quiz") ?>:</B></P></TD> + <TD> + <?PHP + if (empty($question->name)) { + $question->name = get_string("randomsamatch", "quiz"); + } + ?> + <INPUT type="text" name="name" size=40 value="<?php p($question->name) ?>"> + <?php if (isset($err["name"])) formerr($err["name"]); ?> + </TD> +</TR> +<tr valign=top> + <td align=right><p><b><?php print_string("introduction", "quiz") ?>:</b></p> + <br /> + <p><font SIZE="1"> + <?php + if ($usehtmleditor) { + helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); + } else { + helpbutton("text", get_string("helptext"), "moodle", true, true); + } + ?> + </font></p> + </td> + <td> + <?php if (isset($err["questiontext"])) { + formerr($err["questiontext"]); + echo "<br />"; + } + + if (empty($question->questiontext)) { + $question->questiontext = get_string("randomsamatchintro", "quiz"); + } + print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); + + if ($usehtmleditor) { + echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'">'; + } else { + echo "<div align=right>"; + print_string("formattexttype"); + echo ":&nbsp;"; + if (!$question->questiontextformat) { + $question->questiontextformat = FORMAT_MOODLE; + } + choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); + helpbutton("textformat", get_string("helpformatting")); + echo "</div>"; + } + ?> + </td> +</tr> +<TR valign=top> + <TD align=right><P><B><?php print_string("randomsamatchnumber", "quiz") ?>:</B></P></TD> + <TD> + <?php + if ($numberavailable < 2) { + echo "ERROR"; + $maxrandom=2; + } else if ($numberavailable < 6) { + $maxrandom = $numberavailable; + } else { + $maxrandom = QUIZ_MAX_NUMBER_ANSWERS; + } + + for ($i=2;$i<=$maxrandom;$i++) { + $menu[$i] = $i; + } + choose_from_menu($menu, "choose", "$options->choose", ""); + unset($menu); + ?> + </TD> +</TR> +</TABLE> + +<INPUT type="hidden" name=id value="<?php p($question->id) ?>"> +<INPUT type="hidden" name=qtype value="<?php p($question->qtype) ?>"> +<INPUT type="submit" value="<?php print_string("savechanges") ?>"> + +</CENTER> +</FORM> diff --git a/mod/quiz/questiontypes/shortanswer/editquestion.php b/mod/quiz/questiontypes/shortanswer/editquestion.php index 76ae780dfa5..670830ce323 100644 --- a/mod/quiz/questiontypes/shortanswer/editquestion.php +++ b/mod/quiz/questiontypes/shortanswer/editquestion.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ if (!empty($question->id)) { $options = get_record("quiz_shortanswer", "question", $question->id); } else { @@ -7,7 +7,7 @@ if (!empty($options->answers)) { $answersraw = get_records_list("quiz_answers", "id", $options->answers); } - for ($i=0 ; $i < QUIZ_MAX_NUMBER_ANSWERS ; $i++) { + for ($i=0; $i<QUIZ_MAX_NUMBER_ANSWERS; $i++) { $answers[] = ""; // Make answer slots, default as blank } if (!empty($answersraw)) { @@ -18,6 +18,6 @@ } } print_heading_with_help(get_string("editingshortanswer", "quiz"), "shortanswer", "quiz"); - require("$CFG->dirroot/mod/quiz/questiontypes/shortanswer/shortanswer.html"); + require("shortanswer.html"); ?> diff --git a/mod/quiz/questiontypes/shortanswer/questiontype.php b/mod/quiz/questiontypes/shortanswer/questiontype.php index 663d0de147d..9a9e93242d3 100644 --- a/mod/quiz/questiontypes/shortanswer/questiontype.php +++ b/mod/quiz/questiontypes/shortanswer/questiontype.php @@ -1,204 +1,204 @@ -<?php // $Id$ - -/////////////////// -/// SHORTANSWER /// -/////////////////// - -/// QUESTION TYPE CLASS ////////////////// - -/// -/// This class contains some special features in order to make the -/// question type embeddable within a multianswer (cloze) question -/// - -class quiz_shortanswer_qtype extends quiz_default_questiontype { - - function get_answers($question, $addedcondition='') { - // The added condition is one addition that has been added - // to the behaviour of this question type in order to make - // it embeddable within a multianswer (embedded cloze) question - - global $CFG; - - // There can be multiple answers - return get_records_sql("SELECT a.*, sa.usecase - FROM {$CFG->prefix}quiz_shortanswer sa, - {$CFG->prefix}quiz_answers a - WHERE sa.question = '$question->id' - AND sa.question = a.question " - . $addedcondition); - - } - - function name() { - return 'shortanswer'; - } - - function save_question_options($question) { - if (!$oldanswers = get_records("quiz_answers", "question", $question->id, "id ASC")) { - $oldanswers = array(); - } - - $answers = array(); - $maxfraction = -1; - - // Insert all the new answers - foreach ($question->answer as $key => $dataanswer) { - if ($dataanswer != "") { - if ($oldanswer = array_shift($oldanswers)) { // Existing answer, so reuse it - $answer = $oldanswer; - $answer->answer = trim($dataanswer); - $answer->fraction = $question->fraction[$key]; - $answer->feedback = $question->feedback[$key]; - if (!update_record("quiz_answers", $answer)) { - $result->error = "Could not update quiz answer! (id=$answer->id)"; - return $result; - } - } else { // This is a completely new answer - unset($answer); - $answer->answer = trim($dataanswer); - $answer->question = $question->id; - $answer->fraction = $question->fraction[$key]; - $answer->feedback = $question->feedback[$key]; - if (!$answer->id = insert_record("quiz_answers", $answer)) { - $result->error = "Could not insert quiz answer!"; - return $result; - } - } - $answers[] = $answer->id; - if ($question->fraction[$key] > $maxfraction) { - $maxfraction = $question->fraction[$key]; - } - } - } - - if ($options = get_record("quiz_shortanswer", "question", $question->id)) { - $options->answers = implode(",",$answers); - $options->usecase = $question->usecase; - if (!update_record("quiz_shortanswer", $options)) { - $result->error = "Could not update quiz shortanswer options! (id=$options->id)"; - return $result; - } - } else { - unset($options); - $options->question = $question->id; - $options->answers = implode(",",$answers); - $options->usecase = $question->usecase; - if (!insert_record("quiz_shortanswer", $options)) { - $result->error = "Could not insert quiz shortanswer options!"; - return $result; - } - } - - /// Perform sanity checks on fractional grades - if ($maxfraction != 1) { - $maxfraction = $maxfraction * 100; - $result->noticeyesno = get_string("fractionsnomax", "quiz", $maxfraction); - return $result; - } else { - return true; - } - } - - function print_question_formulation_and_controls($question, - $quiz, $readonly, $answers, $correctanswers, $nameprefix) { - /// This implementation is also used by question type NUMERICAL - - /// Print question text and media - - echo format_text($question->questiontext, - $question->questiontextformat, - NULL, $quiz->course); - quiz_print_possible_question_image($quiz->id, $question); - - /// Print input controls - - $stranswer = get_string("answer", "quiz"); - if (isset($question->response[$nameprefix])) { - $value = ' value="'.htmlSpecialChars($question->response[$nameprefix]).'" '; - } else { - $value = ' value="" '; - } - $inputname = ' name="'.$nameprefix.'" '; - echo "<p align=\"right\">$stranswer: <input type=\"text\" $readonly $inputname size=\"80\" $value /></p>"; - - if ($quiz->feedback && isset($answers[$nameprefix]) - && $feedback = $answers[$nameprefix]->feedback) { - quiz_print_comment($feedback); - } - if ($readonly && $quiz->correctanswers) { - $delimiter = ''; - $correct = ''; - foreach ($correctanswers as $correctanswer) { - $correct .= $delimiter.$correctanswer->answer; - $delimiter = ', '; - } - quiz_print_correctanswer($correct); - } - } - - function grade_response($question, $nameprefix, $addedanswercondition='') { - - if (isset($question->response[$nameprefix])) { - $response0 = trim(stripslashes($question->response[$nameprefix])); - } else { - $response0 = ''; - } - $answers = $this->get_answers($question, $addedanswercondition); - - /// Determine ->answers[] - $result->answers = array(); - if ('' !== $response0) { - - /// These are things to protect in the strings when wildcards are used - $search = array('\\', '+', '(', ')', '[', ']', '-'); - $replace = array('\\\\', '\+', '\(', '\)', '\[', '\]', '\-'); - - foreach ($answers as $answer) { - - $answer->answer = trim($answer->answer); // Just in case - - if (empty($result->answers) || $answer->fraction - > $result->answers[$nameprefix]->fraction) { - - if (!$answer->usecase) { // Don't compare case - $response0 = strtolower($response0); - $answer0 = strtolower($answer->answer); - } else { - $answer0 = $answer->answer; - } - - if (strpos(' '.$answer0, '*')) { - $answer0 = str_replace('\*','@@@@@@',$answer0); - $answer0 = str_replace('*','.*',$answer0); - $answer0 = str_replace($search, $replace, $answer0); - $answer0 = str_replace('@@@@@@', '\*',$answer0); - - if (ereg('^'.$answer0.'$', $response0)) { - $result->answers[$nameprefix] = $answer; - } - - } else if ($answer0 == $response0) { - $result->answers[$nameprefix] = $answer; - } - } - } - } - - - $result->grade = isset($result->answers[$nameprefix]) - ? $result->answers[$nameprefix]->fraction - : 0.0; - $result->correctanswers = quiz_extract_correctanswers($answers, - $nameprefix); - return $result; - } -} -//// END OF CLASS //// - -////////////////////////////////////////////////////////////////////////// -//// INITIATION - Without this line the question type is not in use... /// -////////////////////////////////////////////////////////////////////////// -$QUIZ_QTYPES[SHORTANSWER]= new quiz_shortanswer_qtype(); - -?> +<?PHP // $Id$ + +/////////////////// +/// SHORTANSWER /// +/////////////////// + +/// QUESTION TYPE CLASS ////////////////// + +/// +/// This class contains some special features in order to make the +/// question type embeddable within a multianswer (cloze) question +/// + +class quiz_shortanswer_qtype extends quiz_default_questiontype { + + function get_answers($question, $addedcondition='') { + // The added condition is one addition that has been added + // to the behaviour of this question type in order to make + // it embeddable within a multianswer (embedded cloze) question + + global $CFG; + + // There can be multiple answers + return get_records_sql("SELECT a.*, sa.usecase + FROM {$CFG->prefix}quiz_shortanswer sa, + {$CFG->prefix}quiz_answers a + WHERE sa.question = '$question->id' + AND sa.question = a.question " + . $addedcondition); + + } + + function name() { + return 'shortanswer'; + } + + function save_question_options($question) { + if (!$oldanswers = get_records("quiz_answers", "question", $question->id, "id ASC")) { + $oldanswers = array(); + } + + $answers = array(); + $maxfraction = -1; + + // Insert all the new answers + foreach ($question->answer as $key => $dataanswer) { + if ($dataanswer != "") { + if ($oldanswer = array_shift($oldanswers)) { // Existing answer, so reuse it + $answer = $oldanswer; + $answer->answer = trim($dataanswer); + $answer->fraction = $question->fraction[$key]; + $answer->feedback = $question->feedback[$key]; + if (!update_record("quiz_answers", $answer)) { + $result->error = "Could not update quiz answer! (id=$answer->id)"; + return $result; + } + } else { // This is a completely new answer + unset($answer); + $answer->answer = trim($dataanswer); + $answer->question = $question->id; + $answer->fraction = $question->fraction[$key]; + $answer->feedback = $question->feedback[$key]; + if (!$answer->id = insert_record("quiz_answers", $answer)) { + $result->error = "Could not insert quiz answer!"; + return $result; + } + } + $answers[] = $answer->id; + if ($question->fraction[$key] > $maxfraction) { + $maxfraction = $question->fraction[$key]; + } + } + } + + if ($options = get_record("quiz_shortanswer", "question", $question->id)) { + $options->answers = implode(",",$answers); + $options->usecase = $question->usecase; + if (!update_record("quiz_shortanswer", $options)) { + $result->error = "Could not update quiz shortanswer options! (id=$options->id)"; + return $result; + } + } else { + unset($options); + $options->question = $question->id; + $options->answers = implode(",",$answers); + $options->usecase = $question->usecase; + if (!insert_record("quiz_shortanswer", $options)) { + $result->error = "Could not insert quiz shortanswer options!"; + return $result; + } + } + + /// Perform sanity checks on fractional grades + if ($maxfraction != 1) { + $maxfraction = $maxfraction * 100; + $result->noticeyesno = get_string("fractionsnomax", "quiz", $maxfraction); + return $result; + } else { + return true; + } + } + + function print_question_formulation_and_controls($question, + $quiz, $readonly, $answers, $correctanswers, $nameprefix) { + /// This implementation is also used by question type NUMERICAL + + /// Print question text and media + + echo format_text($question->questiontext, + $question->questiontextformat, + NULL, $quiz->course); + quiz_print_possible_question_image($quiz->id, $question); + + /// Print input controls + + $stranswer = get_string("answer", "quiz"); + if (isset($question->response[$nameprefix])) { + $value = ' value="'.$question->response[$nameprefix].'" '; + } else { + $value = ' value="" '; + } + $inputname = ' name="'.$nameprefix.'" '; + echo "<p align=\"right\">$stranswer: <input type=\"text\" $readonly $inputname size=\"80\" $value /></p>"; + + if ($quiz->feedback && isset($answers[$nameprefix]) + && $feedback = $answers[$nameprefix]->feedback) { + quiz_print_comment("<p align=\"right\">$feedback</p>"); + } + if ($readonly && $quiz->correctanswers) { + $delimiter = ''; + $correct = ''; + foreach ($correctanswers as $correctanswer) { + $correct .= $delimiter.$correctanswer->answer; + $delimiter = ', '; + } + quiz_print_correctanswer($correct); + } + } + + function grade_response($question, $nameprefix, $addedanswercondition='') { + + if (isset($question->response[$nameprefix])) { + $response0 = trim(stripslashes($question->response[$nameprefix])); + } else { + $response0 = ''; + } + $answers = $this->get_answers($question, $addedanswercondition); + + /// Determine ->answers[] + $result->answers = array(); + if ('' !== $response0) { + + /// These are things to protect in the strings when wildcards are used + $search = array('\\', '+', '(', ')', '[', ']', '-'); + $replace = array('\\\\', '\+', '\(', '\)', '\[', '\]', '\-'); + + foreach ($answers as $answer) { + + $answer->answer = trim($answer->answer); // Just in case + + if (empty($result->answers) || $answer->fraction + > $result->answers[$nameprefix]->fraction) { + + if (!$answer->usecase) { // Don't compare case + $response0 = strtolower($response0); + $answer0 = strtolower($answer->answer); + } else { + $answer0 = $answer->answer; + } + + if (strpos(' '.$answer0, '*')) { + $answer0 = str_replace('\*','@@@@@@',$answer0); + $answer0 = str_replace('*','.*',$answer0); + $answer0 = str_replace($search, $replace, $answer0); + $answer0 = str_replace('@@@@@@', '\*',$answer0); + + if (ereg('^'.$answer0.'$', $response0)) { + $result->answers[$nameprefix] = $answer; + } + + } else if ($answer0 == $response0) { + $result->answers[$nameprefix] = $answer; + } + } + } + } + + + $result->grade = isset($result->answers[$nameprefix]) + ? $result->answers[$nameprefix]->fraction + : 0.0; + $result->correctanswers = quiz_extract_correctanswers($answers, + $nameprefix); + return $result; + } +} +//// END OF CLASS //// + +////////////////////////////////////////////////////////////////////////// +//// INITIATION - Without this line the question type is not in use... /// +////////////////////////////////////////////////////////////////////////// +$QUIZ_QTYPES[SHORTANSWER]= new quiz_shortanswer_qtype(); + +?> diff --git a/mod/quiz/questiontypes/shortanswer/shortanswer.html b/mod/quiz/questiontypes/shortanswer/shortanswer.html index b789ea3230c..968df572b28 100644 --- a/mod/quiz/questiontypes/shortanswer/shortanswer.html +++ b/mod/quiz/questiontypes/shortanswer/shortanswer.html @@ -1,124 +1,121 @@ -<form name="theform" method="post" action="question.php"> -<center> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("category", "quiz") ?>:</b></td> - <td> - <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("questionname", "quiz") ?>:</b></td> - <td> - <input type="text" name="name" size="50" value="<?php p($question->name) ?>" alt="<?php print_string("questionname", "quiz") ?>" /> - <?php if (isset($err["name"])) formerr($err["name"]); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("question", "quiz") ?>:</b> - <br /> - <br /> - <br /> - <font size="1"> - <?php - if ($usehtmleditor) { - helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); - } else { - helpbutton("text", get_string("helptext"), "moodle", true, true); - } - ?> - </font> - </td> - <td> - <?php if (isset($err["questiontext"])) { - formerr($err["questiontext"]); - echo "<br />"; - } - print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); - if ($usehtmleditor) { - echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'" />'; - } else { - echo "<div align=\"right\">"; - print_string("formattexttype"); - echo ":&nbsp;"; - if (!isset($question->questiontextformat)) { - $question->questiontextformat = FORMAT_MOODLE; - } - choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); - helpbutton("textformat", get_string("helpformatting")); - echo "</div>"; - } - ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("imagedisplay", "quiz") ?>:</b></td> - <td> - <?php if (empty($images)) { - print_string("noimagesyet"); - } else { - choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); - } - ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("casesensitive", "quiz") ?>:</b></td> - <td> - <?php - unset($menu); - $menu[0] = get_string("caseno", "quiz"); - $menu[1] = get_string("caseyes", "quiz"); - choose_from_menu($menu, "usecase", "$options->usecase", ""); - ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("correctanswers", "quiz") ?></b>:</td> - <td> - <?php print_string("filloutoneanswer", "quiz") ?> - </td> -</tr> -<?php - for ($i=1; $i<=QUIZ_MAX_NUMBER_ANSWERS; $i++) { -?> -<tr valign="top"> - <td align="right"><b><?php echo get_string("answer", "quiz")." $i"; ?>:</b></td> - <td> - <?php - if (empty($answers[$i-1]->answer)) { - $answertext = ''; - $fractionval = 0; - $feedbacktext = ''; - } else { - $answertext = $answers[$i-1]->answer; - $fractionval = $answers[$i-1]->fraction; - $feedbacktext = $answers[$i-1]->feedback; - } - ?> - <input type="text" name="answer[]" size="50" value="<?php p($answertext) ?>" alt="<?php echo get_string("answer", "quiz")." $i"; ?>" />&nbsp;&nbsp; - <?php print_string("grade"); - echo ":&nbsp;"; - choose_from_menu($gradeoptions, "fraction[]", $fractionval,""); ?> - <br /> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("feedback", "quiz") ?>:</b></td> - <td> - <textarea name="feedback[]" rows="2" cols="50"><?php p($feedbacktext) ?></textarea> - </td> -</tr> -<tr valign="top"> - <td colspan="2">&nbsp;</td> -</tr> -<?php - } -?> -<?php - $QUIZ_QTYPES[$question->qtype]->print_replacement_options($question, $course, $contextquiz); - $QUIZ_QTYPES[$question->qtype]->print_question_form_end($question); -?> -</table> -</center> -</form> +<FORM name="theform" method="post" action="question.php"> +<CENTER> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string("category", "quiz") ?>:</B></P></TD> + <TD> + <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("questionname", "quiz") ?>:</B></P></TD> + <TD> + <INPUT type="text" name="name" size=50 value="<?php p($question->name) ?>"> + <?php if (isset($err["name"])) formerr($err["name"]); ?> + </TD> +</TR> +<tr valign=top> + <td align="right"><p><b><?php print_string("question", "quiz") ?>:</b></p> + <br /> + <br /> + <br /> + <p><font SIZE="1"> + <?php + if ($usehtmleditor) { + helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); + } else { + helpbutton("text", get_string("helptext"), "moodle", true, true); + } + ?> + </font></p> + </td> + <td> + <?php if (isset($err["questiontext"])) { + formerr($err["questiontext"]); + echo "<br />"; + } + + print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); + + if ($usehtmleditor) { + echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'">'; + } else { + echo "<div align=right>"; + print_string("formattexttype"); + echo ":&nbsp;"; + if (!isset($question->questiontextformat)) { + $question->questiontextformat = FORMAT_MOODLE; + } + choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); + helpbutton("textformat", get_string("helpformatting")); + echo "</div>"; + } + ?> + </td> +</tr> +<TR valign=top> + <TD align=right><P><B><?php print_string("imagedisplay", "quiz") ?>:</B></P></TD> + <TD> + <?php if (empty($images)) { + print_string("noimagesyet"); + } else { + choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); + } + ?> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("casesensitive", "quiz") ?>:</B></P></TD> + <TD> + <?php + unset($menu); + $menu[0] = get_string("caseno", "quiz"); + $menu[1] = get_string("caseyes", "quiz"); + choose_from_menu($menu, "usecase", "$options->usecase", ""); + ?> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("correctanswers", "quiz") ?></B>:</P></TD> + <TD> + <P><?php print_string("filloutoneanswer", "quiz") ?></P> + </TD> + + +<?PHP + for ($i=1; $i<=QUIZ_MAX_NUMBER_ANSWERS; $i++) { +?> + +<TR valign=top> + <TD align=right><P><B><?php echo get_string("answer", "quiz")." $i"; ?>:</B></P></TD> + <TD> + <INPUT type="text" name="answer[]" size=50 value="<?php p($answers[$i-1]->answer) ?>">&nbsp;&nbsp; + <?php print_string("grade"); + echo ":&nbsp;"; + choose_from_menu($gradeoptions, "fraction[]", $answers[$i-1]->fraction,""); ?> + <BR> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("feedback", "quiz") ?>:</B></P></TD> + <TD> + <textarea name="feedback[]" rows=2 cols=50 wrap="virtual"><?php p($answers[$i-1]->feedback) ?></textarea> + </TD> +</TR> + +<TR valign=top> + <TD colspan=2>&nbsp;</TD> +</TR> + +<?PHP + } +?> + +</TABLE> + +<INPUT type="hidden" name=id value="<?php p($question->id) ?>"> +<INPUT type="hidden" name=qtype value="<?php p($question->qtype) ?>"> +<INPUT type="submit" value="<?php print_string("savechanges") ?>"> + +</CENTER> +</FORM> diff --git a/mod/quiz/questiontypes/truefalse/editquestion.php b/mod/quiz/questiontypes/truefalse/editquestion.php index e64b42d97f9..e113ffbed31 100644 --- a/mod/quiz/questiontypes/truefalse/editquestion.php +++ b/mod/quiz/questiontypes/truefalse/editquestion.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ if (!empty($question->id)) { $options = get_record("quiz_truefalse", "question", "$question->id"); @@ -23,6 +23,6 @@ } print_heading_with_help(get_string("editingtruefalse", "quiz"), "truefalse", "quiz"); - require("$CFG->dirroot/mod/quiz/questiontypes/truefalse/truefalse.html"); + require("truefalse.html"); ?> diff --git a/mod/quiz/questiontypes/truefalse/questiontype.php b/mod/quiz/questiontypes/truefalse/questiontype.php index df7692aba8b..30e8f6472ec 100644 --- a/mod/quiz/questiontypes/truefalse/questiontype.php +++ b/mod/quiz/questiontypes/truefalse/questiontype.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ ///////////////// /// TRUEFALSE /// @@ -122,6 +122,9 @@ class quiz_truefalse_qtype extends quiz_default_questiontype { } else if ($false->id == $question->response[$nameprefix]) { $falsechecked = 'checked="checked"'; } + if ($readonly) { + $readonly = ' readonly="readonly" disabled="disabled" '; + } $truecorrect = ""; $falsecorrect = ""; @@ -134,16 +137,16 @@ class quiz_truefalse_qtype extends quiz_default_questiontype { } } $inputname = ' name="'.$nameprefix.'" '; - echo "<table align=\"right\" cellpadding=\"5\"><tr><td align=\"right\">$stranswer:&nbsp;&nbsp;</td>"; + echo "<table align=\"right\" cellpadding=\"5\"><tr><td align=\"right\">$stranswer:&nbsp;&nbsp;"; echo "<td $truecorrect>"; - echo "<input $truechecked type=\"radio\" $readonly $inputname value=\"$true->id\" alt=\"".s($true->answer)."\" />$true->answer"; + echo "<input $truechecked type=\"radio\" $readonly $inputname value=\"$true->id\" />$true->answer"; echo "</td><td $falsecorrect>"; - echo "<input $falsechecked type=\"radio\" $readonly $inputname value=\"$false->id\" alt=\"".s($false->answer)."\" />$false->answer"; - echo "</td></tr></table><br clear=\"all\" />";// changed from clear=ALL jm + echo "<input $falsechecked type=\"radio\" $readonly $inputname value=\"$false->id\" />$false->answer"; + echo "</td></tr></table><br clear=\"all\">";// changed from CLEAR=ALL jm if ($quiz->feedback && isset($answers[$nameprefix]) && $feedback = $answers[$nameprefix]->feedback) { quiz_print_comment( - "$feedback"); + "<p align=\"right\">$feedback</p>"); } } diff --git a/mod/quiz/questiontypes/truefalse/truefalse.html b/mod/quiz/questiontypes/truefalse/truefalse.html index 66041292640..2fffc5e048e 100644 --- a/mod/quiz/questiontypes/truefalse/truefalse.html +++ b/mod/quiz/questiontypes/truefalse/truefalse.html @@ -1,93 +1,96 @@ -<form name="theform" method="post" action="question.php"> -<center> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("category", "quiz") ?>:</b></td> - <td> - <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("questionname", "quiz") ?>:</b></td> - <td> - <input type="text" name="name" size="50" value="<?php p($question->name) ?>" alt="<?php print_string("questionname", "quiz") ?>"/> - <?php if (isset($err["name"])) formerr($err["name"]); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("question", "quiz") ?>:</b> - <br /> - <br /> - <br /> - <font size="1"> - <?php - if ($usehtmleditor) { - helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); - } else { - helpbutton("text", get_string("helptext"), "moodle", true, true); - } - ?> - </font> - </td> - <td> - <?php if (isset($err["questiontext"])) { - formerr($err["questiontext"]); - echo "<br />"; - } - print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); - if ($usehtmleditor) { - echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'" />'; - } else { - echo "<div align=\"right\">"; - print_string("formattexttype"); - echo ":&nbsp;"; - if (!isset($question->questiontextformat)) { - $question->questiontextformat = FORMAT_MOODLE; - } - choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); - helpbutton("textformat", get_string("helpformatting")); - echo "</div>"; - } - ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("imagedisplay", "quiz") ?>:</b></td> - <td> - <?php if (empty($images)) { - print_string("noimagesyet"); - } else { - choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); - } - ?> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("correctanswer", "quiz") ?>:</b></td> - <td> - <?php $menu[0] = get_string("false", "quiz"); - $menu[1] = get_string("true", "quiz"); - choose_from_menu($menu, "answer", "$question->answer", ""); ?> - <br /> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("feedback", "quiz") ?> (<?php print_string("true", "quiz") ?>):</b></td> - <td> - <textarea name="feedbacktrue" rows="2" cols="50" wrap="virtual"><?php p($true->feedback) ?></textarea> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("feedback", "quiz") ?> (<?php print_string("false", "quiz") ?>):</b></td> - <td> - <textarea name="feedbackfalse" rows="2" cols="50"><?php p($false->feedback) ?></textarea> - </td> -</tr> -<?php - $QUIZ_QTYPES[$question->qtype]->print_replacement_options($question, $course, $contextquiz); - $QUIZ_QTYPES[$question->qtype]->print_question_form_end($question); -?> -</table> - -</center> -</form> +<FORM name="theform" method="post" action="question.php"> +<CENTER> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string("category", "quiz") ?>:</B></P></TD> + <TD> + <?php quiz_category_select_menu($course->id, true, true, $question->category); ?> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("questionname", "quiz") ?>:</B></P></TD> + <TD> + <INPUT type="text" name="name" size=50 value="<?php p($question->name) ?>"> + <?php if (isset($err["name"])) formerr($err["name"]); ?> + </TD> +</TR> +<tr valign=top> + <td align="right"><p><b><?php print_string("question", "quiz") ?>:</b></p> + <br /> + <br /> + <br /> + <p><font SIZE="1"> + <?php + if ($usehtmleditor) { + helpbutton("richtext", get_string("helprichtext"), "moodle", true, true); + } else { + helpbutton("text", get_string("helptext"), "moodle", true, true); + } + ?> + </font></p> + </td> + <td> + <?php if (isset($err["questiontext"])) { + formerr($err["questiontext"]); + echo "<br />"; + } + + print_textarea($usehtmleditor, 15, 60, 630, 300, "questiontext", $question->questiontext); + + if ($usehtmleditor) { + echo '<input type="hidden" name="questiontextformat" value="'.FORMAT_HTML.'">'; + } else { + echo "<div align=right>"; + print_string("formattexttype"); + echo ":&nbsp;"; + if (!isset($question->questiontextformat)) { + $question->questiontextformat = FORMAT_MOODLE; + } + choose_from_menu(format_text_menu(), "questiontextformat", $question->questiontextformat, ""); + helpbutton("textformat", get_string("helpformatting")); + echo "</div>"; + } + ?> + </td> +</tr> +<TR valign=top> + <TD align=right><P><B><?php print_string("imagedisplay", "quiz") ?>:</B></P></TD> + <TD> + <?php if (empty($images)) { + print_string("noimagesyet"); + } else { + choose_from_menu($images, "image", "$question->image", get_string("none"),"",""); + } + ?> + </TD> +</TR> + +<TR valign=top> + <TD align=right><P><B><?php print_string("correctanswer", "quiz") ?>:</B></P></TD> + <TD> + <?php $menu[0] = get_string("false", "quiz"); + $menu[1] = get_string("true", "quiz"); + choose_from_menu($menu, "answer", "$question->answer", ""); ?> + <BR> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("feedback", "quiz") ?> (<?php print_string("true", "quiz") ?>):</B></P></TD> + <TD> + <textarea name="feedbacktrue" rows=2 cols=50 wrap="virtual"><?php p($true->feedback) ?></textarea> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string("feedback", "quiz") ?> (<?php print_string("false", "quiz") ?>):</B></P></TD> + <TD> + <textarea name="feedbackfalse" rows=2 cols=50 wrap="virtual"><?php p($false->feedback) ?></textarea> + </TD> +</TR> +</TABLE> + +<INPUT type="hidden" name=id value="<?php p($question->id) ?>"> +<INPUT type="hidden" name=qtype value="<?php p($question->qtype) ?>"> +<INPUT type="submit" value="<?php print_string("savechanges") ?>"> + +</CENTER> +</FORM> diff --git a/mod/quiz/quizfile.php b/mod/quiz/quizfile.php index 04c008f40d8..74583a91c05 100644 --- a/mod/quiz/quizfile.php +++ b/mod/quiz/quizfile.php @@ -3,89 +3,86 @@ // Syntax: quizfile.php/quiz id/question id/dir/.../dir/filename.ext // It is supposed to be used by the quiz module only - require_once('../../config.php'); - require_once($CFG->libdir.'/filelib.php'); - require_once('locallib.php'); + require_once("../../config.php"); + require_once("../../files/mimetypes.php"); + require_once("lib.php"); - if (empty($CFG->filelifetime)) { - $lifetime = 86400; // Seconds for files to remain in caches + $lifetime = 86400; + + if (isset($file)) { // workaround for situations where / syntax doesn't work + $pathinfo = $file; } else { - $lifetime = $CFG->filelifetime; - } - - $relativepath = get_file_argument('quizfile.php'); - - if (!$relativepath) { - error('No valid arguments supplied or incorrect server configuration'); - } - - // extract relative path components - $args = explode('/', trim($relativepath, '/')); - if (count($args) < 3) { // always at least category, question and path - error('No valid arguments supplied'); - } - - $quizid = (int)array_shift($args); - $questionid = (int)array_shift($args); - $relativepath = implode ('/', $args); - - if (!($question = get_record('quiz_questions', 'id', $questionid))) { - error('No valid arguments supplied'); + $pathinfo = get_slash_arguments("file.php"); } - if (!($questioncategory = get_record('quiz_categories', 'id', $question->category))) { - error('No valid arguments supplied'); + if (!$pathinfo) { + error("No file parameters!"); } ///////////////////////////////////// - // Check access + // Extract info from $pathinfo ///////////////////////////////////// - if ($quizid == 0) { // teacher doing preview during quiz creation - if ($questioncategory->publish) { - require_login(); - if (!isteacherinanycourse()) { - error('No valid arguments supplied'); - } - } else { - require_login($questioncategory->course); - if (!isteacher($questioncategory->course)) { - error('Access not allowed'); - } - } - } else { - if (!($quiz = get_record('quiz', 'id', $quizid))) { - error('No valid arguments supplied'); - } - if (!($course = get_record('course', 'id', $quiz->course))) { - error('No valid arguments supplied'); - } - require_login($course->id); - - // For now, let's not worry about this. The following check causes - // problems sometimes when reviewing a quiz - //if (!isteacher($course->id) - // and !quiz_get_user_attempt_unfinished($quiz->id, $USER->id) - // and ! ($quiz->review && time() > $quiz->timeclose) - // || !quiz_get_user_attempts($quiz->id, $USER->id) ) - //{ - // error("Logged-in user is not allowed to view this quiz"); - //} - - /////////////////////////////////////////////////// - // The logged-in user has the right to view material on this quiz! - // Now verify the consistency between $quiz, $question, its category and $relativepathname - /////////////////////////////////////////////////// - - // For now, let's not worry about this. The following check doesn't - // work for randomly selected questions and it gets complicated - //if (!in_array($question->id, explode(',', $quiz->questions), FALSE)) { - // error("Specified question is not on the specified quiz"); - //} + + $idreg = '[0-9]+'; + if (!ereg("^/?($idreg)/($idreg)/((.+/)?([^/]+))$", + $pathinfo, + $regs) ) { + error("File parameters are badly formated"); + } + if (! ($quiz = get_record('quiz', 'id', $regs[1]))) { + error("No valid quiz supplied"); + } + if (! ($question = get_record('quiz_questions', 'id', $regs[2]))) { + error("No valid question supplied"); + } + if (! ($relativefilepath = $regs[3])) { + error("No valid file path supplied"); + } + if (! ($filename = $regs[5])) { + error("No valid file name supplied"); + } + + ////////////////////////////////////////// + // Info from $pathinfo is now extracted! + // Now check the user's persmissions on this quiz... + ////////////////////////////////////////// + + if (! ($course = get_record("course", "id", $quiz->course))) { + error("Supplied quiz $quiz->name does not belong to a valid course"); + } + + require_login($course->id); + + // For now, let's not worry about this. The following check causes + // problems sometimes when reviewing a quiz + //if (!isteacher($course->id) + // and !quiz_get_user_attempt_unfinished($quiz->id, $USER->id) + // and ! ($quiz->review && time() > $quiz->timeclose) + // || !quiz_get_user_attempts($quiz->id, $USER->id) ) + //{ + // error("Logged-in user is not allowed to view this quiz"); + //} + + /////////////////////////////////////////////////// + // The logged-in user has the right to view material on this quiz! + // Now verify the consistency between $quiz, $question, its category and $relativepathname + /////////////////////////////////////////////////// + + // For now, let's not worry about this. The following check doesn't + // work for randomly selected questions and it gets complicated + //if (!in_array($question->id, explode(',', $quiz->questions), FALSE)) { + // error("Specified question is not on the specified quiz"); + //} + + if (! ($questioncategory = get_record('quiz_categories', 'id', + $question->category))) + { + error("Question category is not valid"); } // Have the question check whether it uses this file or not if (!$QUIZ_QTYPES[$question->qtype]->uses_quizfile($question, - $relativepath)) { + $relativefilepath)) { error("The specified file path is not on the specified question"); } @@ -95,14 +92,34 @@ // Specified file can now be returned... ////////////////////////////////////////// - $pathname = "$CFG->dataroot/$questioncategory->course/$relativepath"; - $filename = $args[count($args)-1]; + $pathname = "$CFG->dataroot/$questioncategory->course/$relativefilepath"; + // $filename has already been extracted + ///////////////////////////////////////////////////////////////// + // The remaining code is identical to the final lines of file.php + // If you ask me - this stuff should be separated into a separate + // function for conviency. + // That function would find itself very in comfortable in the + // file mimetypes.php + ////////////////////////////////// + + $mimetype = mimeinfo("type", $filename); + if (file_exists($pathname)) { - send_file($pathname, $filename, $lifetime); + $lastmodified = filemtime($pathname); + + header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); + 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-disposition: inline; filename=$filename"); + header("Content-length: ".filesize($pathname)); + header("Content-type: $mimetype"); + readfile("$pathname"); } else { - header('HTTP/1.0 404 not found'); - error(get_string('filenotfound', 'error')); //this is not displayed on IIS?? + error("Sorry, but the file you are looking for was not found ($pathname)", "course/view.php?id=$courseid"); } + + exit; ?> diff --git a/mod/quiz/report.php b/mod/quiz/report.php index 5abf39408ed..c7c1053a4d9 100644 --- a/mod/quiz/report.php +++ b/mod/quiz/report.php @@ -1,9 +1,9 @@ -<?php // $Id$ +<?PHP // $Id$ // This script uses installed report plugins to print quiz reports require_once("../../config.php"); - require_once("locallib.php"); + require_once("lib.php"); optional_variable($id); // Course Module ID, or optional_variable($q); // quiz ID @@ -14,11 +14,11 @@ if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); } - + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); } - + if (! $quiz = get_record("quiz", "id", $cm->instance)) { error("Course module is incorrect"); } @@ -35,7 +35,7 @@ } } - require_login($course->id, false); + require_login($course->id); if (!isteacher($course->id)) { error("You are not allowed to use this script"); @@ -45,21 +45,21 @@ /// Print the page header if (empty($noheader)) { - + $strquizzes = get_string("modulenameplural", "quiz"); $strquiz = get_string("modulename", "quiz"); $strreport = get_string("report", "quiz"); - - print_header_simple(format_string($quiz->name), "", - "<a href=\"index.php?id=$course->id\">$strquizzes</a> - -> <a href=\"view.php?id=$cm->id\">".format_string($quiz->name,true)."</a> -> $strreport", + + print_header_simple("$quiz->name", "", + "<A HREF=index.php?id=$course->id>$strquizzes</A> + -> <a href=\"view.php?id=$cm->id\">$quiz->name</a> -> $strreport", "", "", true, update_module_button($cm->id, $course->id, $strquiz), navmenu($course, $cm)); - - print_heading(format_string($quiz->name)); - + + print_heading($quiz->name); + /// Print list of available quiz reports - + $allreports = get_list_of_plugins("mod/quiz/report"); $reportlist = array ("overview", "regrade"); // Standard reports we want to show first @@ -69,29 +69,23 @@ } } - $tabs = array(); - $row = array(); - $currenttab = ''; + echo "<table cellpadding=10 align=center><tr>"; foreach ($reportlist as $report) { - $row[] = new tabobject($report, "report.php?id=$cm->id&amp;mode=$report", - get_string("report$report", "quiz")); + $strreport = get_string("report$report", "quiz"); if ($report == $mode) { - $currenttab = $report; + echo "<td><u>$strreport</u></td>"; + } else { + echo "<td><a href=\"report.php?id=$cm->id&mode=$report\">$strreport</a></td>"; } } - $tabs[] = $row; - - print_tabs($tabs, $currenttab); - + echo "</tr></table><hr size=\"1\" noshade=\"noshade\" />"; } /// Open the selected quiz report and display it - $mode = clean_filename($mode); - if (! is_readable("report/$mode/report.php")) { - error("Report not known (".clean_text($mode).")"); + error("Report not known ($mode)"); } include("report/default.php"); // Parent class diff --git a/mod/quiz/report/default.php b/mod/quiz/report/default.php index 48f9f292071..083ec06a017 100644 --- a/mod/quiz/report/default.php +++ b/mod/quiz/report/default.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////// /// Default class for report plugins diff --git a/mod/quiz/report/fullstat/report.php b/mod/quiz/report/fullstat/report.php index 8768ff45fe7..071b7dbb96c 100755 --- a/mod/quiz/report/fullstat/report.php +++ b/mod/quiz/report/fullstat/report.php @@ -1,4 +1,4 @@ -<?php // $Id: report.php, +<?PHP // $Id: report.php, // created from the above 2003/11/20 by Tom Robb tom@robb.net // Version 2.5 Modified 2004/01/18 // Further errorsin percentage calculations corrected @@ -61,7 +61,7 @@ class quiz_report extends quiz_default_report { if($quests[$qid]['qtype'] == 8){ $thismin[$qid] = get_field("quiz_numerical","min","question","$qid"); $thismax[$qid] = get_field("quiz_numerical","max","question","$qid"); - $quests[$qid]["correct"] = $thismin[$qid] ."&lt; $choice_data->answer &lt;" . $thismax[$qid]; + $quests[$qid]["correct"] = $thismin[$qid] ."< $choice_data->answer >" . $thismax[$qid]; } if($quests[$qid]['qtype'] >3) {continue;} //only get choices here if type is SHORTANSWER,TRUEFALSE or MULTICHOICE @@ -312,7 +312,7 @@ class quiz_report extends quiz_default_report { require_once("$CFG->libdir/excel/Worksheet.php"); require_once("$CFG->libdir/excel/Workbook.php"); header("Content-type: application/vnd.ms-excel"); - $downloadfilename = clean_filename("$course->shortname ".format_string($quiz->name,true)); + $downloadfilename = clean_filename("$course->shortname $quiz->name"); header("Content-Disposition: attachment; filename=$downloadfilename.xls"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0,pre-check=0"); @@ -351,7 +351,7 @@ class quiz_report extends quiz_default_report { $formatblue->set_bold(1); $formatblue->set_color('blue'); $formatblue->set_align('center'); - $myxls->write_string(0,0,format_string($quiz->name,true)); + $myxls->write_string(0,0,$quiz->name); $myxls->set_column(0,0,25); $row=2; $qcount=0; @@ -472,7 +472,7 @@ class quiz_report extends quiz_default_report { $myxls->write_string($row,0,$label,$formatbrt); //display answer tallies for ($j = 1; $j <= $table_colcount; $j++){ - //substitute "<br />" for a "//" + //substitute "<br>" for a "//" $nowdata = $analysis[$i][$j]; if($slashpos = strpos($nowdata,"//")){ $text = substr($nowdata,0,$slashpos); @@ -572,7 +572,7 @@ class quiz_report extends quiz_default_report { /// Print header to force download header("Content-Type: application/download\n"); - $downloadfilename = clean_filename("$course->shortname ".format_string($quiz->name,true)); + $downloadfilename = clean_filename("$course->shortname $quiz->name"); header("Content-Disposition: attachment; filename=\"$downloadfilename.txt\""); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0,pre-check=0"); @@ -580,7 +580,7 @@ class quiz_report extends quiz_default_report { /// Print names of all the fields - echo format_string($quiz->name,true); + echo "$quiz->name"; echo "\n"; /// Print all the user data @@ -644,7 +644,7 @@ class quiz_report extends quiz_default_report { echo "M/C #$i\t"; //display answer tallies for ($j = 1; $j <= $table_colcount; $j++){ - //substitute "<br />" for a "//" + //substitute "<br>" for a "//" $nowdata = $analysis[$i][$j]; if (strpos($nowdata,"//")>0) { $nowdata = str_replace("//"," : ",$nowdata); @@ -657,9 +657,9 @@ class quiz_report extends quiz_default_report { } ////////--------------------------- If it falls through both of the $download choices, print on screen //Print user responses - print ("<table border=\"1\" align=\"center\" width=\"95%\" cellpadding=\"2\" cellspacing=\"0\">\n"); + print ("<table border=1 align=center width=95% cellpadding=2 cellspacing=0>\n"); $totcolcount = $table_colcount+2; - print("<tr><th colspan=\"$totcolcount\">$strindivresp</th></tr>"); + print("<tr><th colspan=$totcolcount>$strindivresp</th></tr>"); qr_print_headers($data_tally,"$strname","$strgrade"); //now print the lines of answers @@ -674,23 +674,23 @@ class quiz_report extends quiz_default_report { //else the data to be printed is in $thisitem['data'] and $thisitem['score'] == 1 shows that the item was correct if ($thisitem['score'] < 1) {$thiscolor = "ff0000";} else {$thiscolor = "000000";} if ($thisitemkey == 0){ - print("<th align=\"left\">$thisitem&nbsp;</th>"); + print("<th align='left'>$thisitem&nbsp;</th>"); } elseif ($thisitemkey == 1){ - print("<td align=\"right\">&nbsp;$thisitem%&nbsp;&nbsp;</td>"); + print("<td align='right'>&nbsp;$thisitem%&nbsp;&nbsp;</td>"); } elseif ($thisitemkey['qtype'] == 2){ print("<td>&nbsp;&nbsp;$thisitem[data][answer]&nbsp;&nbsp;</td>"); } elseif ($thisitem['qtype'] == 5) { if ($thisitem['score'] == 1) {$thiscolor = "blue";} if(!$thisitem['data'][1]){$thisitem['data'][1]="($strnoresponse)";} - print("<td align=\"center\"><font size=\"-2\">{$thisitem['data'][0]}<br /><font color='$thiscolor'>{$thisitem['data'][1]}</font></font></td>"); + print("<td align=center><font size=-2>{$thisitem['data'][0]}<br><font color='$thiscolor'>{$thisitem['data'][1]}</font></font></td>"); } elseif ($thisitem['qtype'] == 3) { if ($showtext) { - print("<td align=\"center\"><font color='$thiscolor' size=\"-2\">&nbsp;&nbsp;{$thisitem['data']}&nbsp;&nbsp;</font></td>"); + print("<td align=center><font color='$thiscolor' size=-2>&nbsp;&nbsp;{$thisitem['data']}&nbsp;&nbsp;</font></td>"); } else { - print("<td align=\"center\"><font color='$thiscolor'>&nbsp;&nbsp;{$thisitem['data']}&nbsp;&nbsp;</font></td>"); + print("<td align=center><font color='$thiscolor'>&nbsp;&nbsp;{$thisitem['data']}&nbsp;&nbsp;</font></td>"); } } else { - print("<td align=\"center\"><font color='$thiscolor'>&nbsp;&nbsp;{$thisitem['data']}&nbsp;&nbsp;</font></td>"); + print("<td align=center><font color='$thiscolor'>&nbsp;&nbsp;{$thisitem['data']}&nbsp;&nbsp;</font></td>"); } } } @@ -698,51 +698,51 @@ class quiz_report extends quiz_default_report { } } - print("</table><br />\n"); + print("</table><p>\n"); if($debug and !$download){ print("<h3>Qtally</h3>"); print_object($qtally); } //print tally of how many selected each choice - print ("<br /><table width=\"95%\" border=\"1\" align=\"center\" cellpadding=\"2\" cellspacing=\"0\">\n"); - print("<tr><th colspan=\"$totcolcount\">$stritemanal</th></tr>"); + print ("<p><table width=95% border=1 align=center cellpadding=2 cellspacing=0>\n"); + print("<tr><th colspan=$totcolcount>$stritemanal</th></tr>"); qr_print_headers($data_tally,"Item","&nbsp;"); //display row with correct answers - print("<tr><th colspan=\"2\" align=\"right\">$strcorrresp:</th>"); + print("<tr><th colspan=2 align=right>$strcorrresp:</th>"); foreach ($qs_in_order as $qid){ if ($quests[$qid]['qtype'] == 5) { foreach($match_answers[$qid] as $thisans){ - print("<th align=\"center\">&nbsp;$thisans&nbsp;</th>"); + print("<th align='center'>&nbsp;$thisans&nbsp;</th>"); } } else { - print("<th align=\"center\">&nbsp;{$quests[$qid]['correct']}&nbsp;</th>"); + print("<th align='center'>&nbsp;{$quests[$qid]['correct']}&nbsp;</th>"); } } print("</tr>\n"); //display a row for each possible multiple choice with $max_choices being highest row,$table_colcount is the width for ($i = 1; $i<= $max_choices;$i++){ - print("<tr valign=\"top\"><th colspan=\"2\" align=\"right\">&nbsp;M/C #$i</td>"); + print("<tr valign=top><th colspan=2 align=right>&nbsp;M/C #$i</td>"); //display answer tallies for ($j = 1; $j <= $table_colcount; $j++){ - //substitute "<br />" for a "//" + //substitute "<br>" for a "//" $nowdata = $analysis[$i][$j]; - if (strpos($nowdata,"//")>0) {$nowdata = str_replace("//","<br />",$nowdata);} - print("<td align=\"center\">&nbsp;$nowdata</td>"); + if (strpos($nowdata,"//")>0) {$nowdata = str_replace("//","<br>",$nowdata);} + print("<td align='center'>&nbsp;$nowdata</td>"); } } print("</tr>\n"); //Display the total percent correct - print("<tr valign=\"top\"><th align=\"right\" colspan=\"2\">$strpercentcorrect:</th>"); + print("<tr valign=top><th align=right colspan=2>$strpercentcorrect:</th>"); for ($i = 0; $i< $table_colcount;$i++){ print ("<th>{$pct_correct[$i]}</th> "); } print("</tr>\n"); //Finally display the itemanalysis - print("<tr valign=\"top\" valign=\"middle\"><th align=\"right\" colspan=\"2\">"); + print("<tr valign=top valign='middle'><th align=right colspan=2>"); helpbutton("discrimination", "", "quiz"); print(" $strdiscrimination:</th>"); for ($i = 1; $i<= $table_colcount;$i++){ @@ -753,30 +753,30 @@ class quiz_report extends quiz_default_report { } else { $val = 0; } - print ("<th valign=\"middle\"><font size=\"-1\">$val ({$top_scores[$i]}/{$bott_scores[$i]})</font></th> "); + print ("<th valign='middle'><font size=-1>$val ({$top_scores[$i]}/{$bott_scores[$i]})</font></th> "); } print("</tr>\n"); print("</table>\n"); //Now printout the questions (and M/C answers if $containsMC - print ("<br /><table width=\"95%\" border=\"1\" align=\"center\" cellpadding=\"2\" cellspacing=\"0\">\n"); + print ("<p><table width=95% border=1 align=center cellpadding=2 cellspacing=0>\n"); if ($containsMCTF){$ws = " ". $strwithsummary;} else {$ws = "";} - print("<tr><th colspan=\"3\">QUIZ: ".format_string($quiz->name)."&nbsp;&nbsp; -- &nbsp;&nbsp;$strlistitems$ws</th></tr>\n"); + print("<tr><th colspan=3>QUIZ: $quiz->name&nbsp;&nbsp; -- &nbsp;&nbsp;$strlistitems$ws</th></tr>\n"); $qcount = 0; $itemcount = 0; //needed since matching Qs adds additional columns of data in $analysis foreach ($qs_in_order as $qid){ $qcount++; if ($quests[$qid]['qtype']==5) { $itemcount = $itemcount + $match_number[$qid];} else {$itemcount++;} - print("<tr valign=\"top\"><th width='10%'>Q-$qcount</th><td colspan=\"2\">{$quests[$qid]['qtext']}</td></tr>\n"); + print("<tr valign=top><th width='10%'>Q-$qcount</th><td colspan=2>{$quests[$qid]['qtext']}</td></tr>\n"); if($quests[$qid]['qtype']==3){ $nowchoices = $quests[$qid]['choice']; foreach($nowchoices as $thischoice){ $cno = $thischoice['choiceno']; $nowstat = $analysis[$cno][$itemcount]; $pct_cor = qr_make_pct($nowstat,$total_user_count); - print("<tr valign=\"top\"><td align=\"right\" width=\"10%\">$nowstat ($pct_cor%)&nbsp;</td>"); - print("<td width=\"5%\" align=\"center\"><b>A-$cno</b></td><td>{$thischoice['answer']}</td></tr>\n"); + print("<tr valign=top><td align='right' width='10%'>$nowstat ($pct_cor%)&nbsp;</td>"); + print("<td width='5%' align='center'><b>A-$cno</b></td><td>{$thischoice['answer']}</td></tr>\n"); } } if($quests[$qid]['qtype']==2){ @@ -785,21 +785,21 @@ class quiz_report extends quiz_default_report { $colpos = strpos($nowstat,":"); $nowresp = substr($nowstat,$colpos+1); $pct_cor = qr_make_pct($nowresp,$total_user_count); - print("<tr valign=\"top\"><td align=\"right\">$nowresp ($pct_cor%)&nbsp;</td>"); - print("<td colspan=\"2\" align=\"left\">True</td></tr>\n"); + print("<tr valign=top><td align='right'>$nowresp ($pct_cor%)&nbsp;</td>"); + print("<td colspan=2 align=left>True</td></tr>\n"); //"False" responses $nowstat = $analysis[2][$itemcount]; $colpos = strpos($nowstat,":"); $nowresp = substr($nowstat,$colpos+1); $pct_cor = qr_make_pct($nowresp,$total_user_count); - print("<tr valign=\"top\"><td align=\"right\">$nowresp ($pct_cor%)&nbsp;</td>"); - print("<td colspan=\"2\" align=\"left\">False</td></tr>\n"); + print("<tr valign=top><td align='right'>$nowresp ($pct_cor%)&nbsp;</td>"); + print("<td colspan=2 align=left>False</td></tr>\n"); } } print("</table>\n"); echo "<br />\n"; - echo "<table border=\"0\" align=\"center\"><tr>\n"; + echo "<table border=0 align=center><tr>\n"; echo "<td>"; unset($options); $options["id"] = "$cm->id"; @@ -894,7 +894,7 @@ function qr_print_headers($data_tally,$nm,$gd){ global $qs_in_order,$qtally,$quests,$total_user_count,$match_number,$strquestion; $qcount = 0; if($nm == "Item") { - print("<tr><th colspan=\"2\" align=\"right\">$strquestion:</th>"); + print("<tr><th colspan=2 align=right>$strquestion:</th>"); } else { print("<tr><th>$nm</th><th width='5%'>$gd</th>"); } @@ -905,7 +905,7 @@ function qr_print_headers($data_tally,$nm,$gd){ } else { $colcount = 1; } - print("<th colspan=\"$colcount\">Q-$qcount</th>"); + print("<th colspan=$colcount>Q-$qcount</th>"); } print("</tr>\n"); } @@ -982,7 +982,7 @@ function qr_answer_lookup($qid,$thisanswer){ break; case 8: //NUMERICAL $returndata['data'] = $thisanswer; -// $returndata['data'] = $thismin . "&lt;" . $thisanswer . "&lt;" . $thismax; +// $returndata['data'] = $thismin . "<" . $thisanswer . ">" . $thismax; $qtally[$qid]['response'][$thisanswer]++; if ($thisanswer >= $thismin[$qid] and $thisanswer <= $thismax[$qid]){ $qtally[$qid]['correct']++; @@ -1025,20 +1025,20 @@ function qr_match_array($nowQ){ function qr_match_table($resplist){ global $quiz_matches; - $tbl = "\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\" align=\"center\"><tr valign=\"middle\" align=\"center\">"; + $tbl = "\n<table border=0 cellspacing=0 cellpadding=2 align=center><tr valign='middle' align='center'>"; $resp_array = explode(",",$resplist); $q_cnt=0; foreach ($resp_array as $resp_pair){ $q_cnt++; $tbl = $tbl ."<td><font size-1> $q_cnt</font></td>"; } - $tbl = $tbl . "</tr>\n<tr valign=\"middle\">"; + $tbl = $tbl . "</tr>\n<tr valign=middle>"; foreach ($resp_array as $resp_pair){ $resp_QA = explode("-",$resp_pair); if ($resp_QA[0] == $resp_QA[1]){ - $qa = "<b> <font size=\"-2\">{$quiz_matches[$resp_QA[0]]['Q']}</font>&nbsp;- <font color=\"blue\" size=\"-2\">{$quiz_matches[$resp_QA[1]]['A']}</font></b>"; + $qa = "<b> <font size=-2>{$quiz_matches[$resp_QA[0]]['Q']}</font>&nbsp;- <font color='blue' size=-2>{$quiz_matches[$resp_QA[1]]['A']}</font></b>"; } else{ - $qa = "<b><font size=\"-2\"> {$quiz_matches[$resp_QA[0]]['Q']}</font>&nbsp;- <font color=\"red\" size=\"-2\"> {$quiz_matches[$resp_QA[1]]['A']}</font></b>"; + $qa = "<b><font size=-2> {$quiz_matches[$resp_QA[0]]['Q']}</font>&nbsp;- <font color='red' size=-2> {$quiz_matches[$resp_QA[1]]['A']}</font></b>"; } // $qa = $resp_QA[0] . "=" . $resp_QA[1] ; $tbl = $tbl . "<td>$qa</td>"; diff --git a/mod/quiz/report/overview/report.php b/mod/quiz/report/overview/report.php index 3fc6085764c..d4ff76be65b 100644 --- a/mod/quiz/report/overview/report.php +++ b/mod/quiz/report/overview/report.php @@ -1,107 +1,75 @@ <?php // $Id$ -require_once($CFG->libdir.'/tablelib.php'); - /// Overview report just displays a big table of all the attempts class quiz_report extends quiz_default_report { function display($quiz, $cm, $course) { /// This function just displays the report - global $CFG, $SESSION, $db; + global $CFG, $QUIZ_GRADE_METHOD, $del; - $strreallydel = addslashes(get_string('deleteattemptcheck','quiz')); + $strreallydel = addslashes(get_string('deleteattemptcheck','quiz')); + $strdeleteselected = get_string('deleteselected'); + $strdeleteall = get_string('deleteall'); + $strname = get_string("name"); + $strattempts = get_string("attempts", "quiz"); $strnoattempts = get_string('noattempts','quiz'); + $strbestgrade = $QUIZ_GRADE_METHOD[$quiz->grademethod]; $strtimeformat = get_string('strftimedatetime'); + - $action = optional_param('action', ''); + if (!empty($del)) { /// Some attempts need to be deleted - switch($action) { - case 'delete': /// Some attempts need to be deleted + if (record_exists('quiz_attempts', 'quiz', $quiz->id)) { - $attemptids = isset($_POST['attemptid']) ? $_POST['attemptid'] : array(); - if(!is_array($attemptids) || empty($attemptids)) { - break; - } - - foreach($attemptids as $num => $attemptid) { - if(empty($attemptid)) { - unset($attemptids[$num]); + if ($del == 'all'){ /// Delete all the attempts + $attempts = get_records('quiz_attempts','quiz',$quiz->id); + delete_records('quiz_attempts','quiz',$quiz->id); + delete_records('quiz_grades','quiz',$quiz->id); + if ($attempts) { + foreach ($attempts as $thisattempt){ + delete_records('quiz_responses','attempt',$thisattempt->id); + } } - } - foreach($attemptids as $attemptid) { - if ($todelete = get_record('quiz_attempts', 'id', $attemptid)) { + } else { /// Delete selected attempts - delete_records('quiz_attempts', 'id', $attemptid); - delete_records('quiz_responses', 'attempt', $attemptid); + $items = (array)data_submitted(); - // Search quiz_attempts for other instances by this user. - // If none, then delete record for this quiz, this user from quiz_grades - // else recalculate best grade + unset($items['del']); + unset($items['id']); - $userid = $todelete->userid; - if (!record_exists('quiz_attempts', 'userid', $userid, 'quiz', $quiz->id)) { - delete_records('quiz_grades', 'userid', $userid,'quiz', $quiz->id); - } else { - quiz_save_best_grade($quiz, $userid); + if ($items) { + foreach ($items as $attemptid) { + if ($todelete = get_record('quiz_attempts', 'id', $attemptid)) { + delete_records('quiz_attempts', 'id', $attemptid); + delete_records('quiz_responses', 'attempt', $attemptid); + + // Search quiz_attempts for other instances by this user. + // If none, then delete record for this quiz, this user from quiz_grades + // else recalculate best grade + + $userid = $todelete->userid; + if (!record_exists('quiz_attempts', 'userid', $userid, 'quiz',$quiz->id)) { + delete_records('quiz_grades', 'userid', $userid,'quiz',$quiz->id); + } else { + quiz_save_best_grade($quiz, $userid); + } + } } } } - break; - } - - if(!isset($SESSION->quiz_overview_table)) { - $SESSION->quiz_overview_table = array('noattempts' => false, 'teacherattempts' => true, 'detailedmarks' => false); - } - - foreach($SESSION->quiz_overview_table as $option => $value) { - $urlparam = optional_param($option, NULL); - if($urlparam === NULL) { - $$option = $value; - } - else { - $$option = $SESSION->quiz_overview_table[$option] = $urlparam; } } - $tablecolumns = array('checkbox', 'picture', 'fullname', 'timefinish', 'duration', 'sumgrades'); - $tableheaders = array(NULL, '', get_string('fullname'), get_string('attemptedon', 'quiz'), get_string('attemptduration', 'quiz'), get_string('grade', 'quiz').'/'.$quiz->grade); - - if($detailedmarks) { - $questions = explode(',', $quiz->questions); - foreach($questions as $number => $questionid) { - $tablecolumns[] = '$'.$questionid; - $tableheaders[] = '#'.($number + 1); - } + if (!$grades = quiz_get_grade_records($quiz)) { + print_heading($strnoattempts); + return true; } - $table = new flexible_table('mod-quiz-report-overview-report'); - - $table->define_columns($tablecolumns); - $table->define_headers($tableheaders); - $table->define_baseurl($CFG->wwwroot.'/mod/quiz/report.php?id='.$cm->id); - - $table->sortable(true); - $table->collapsible(true); - $table->initialbars(true); - - $table->column_suppress('picture'); - $table->column_suppress('fullname'); - - $table->column_class('picture', 'picture'); - - $table->set_attribute('cellspacing', '0'); - $table->set_attribute('id', 'attempts'); - $table->set_attribute('class', 'generaltable generalbox'); - - // Start working -- this is necessary as soon as the niceties are over - $table->setup(); - - /// Check to see if groups are being used in this quiz if ($groupmode = groupmode($course, $cm)) { // Groups are being used - $currentgroup = setup_and_print_groups($course, $groupmode, "report.php?id=$cm->id&amp;mode=overview"); + $currentgroup = setup_and_print_groups($course, $groupmode, "report.php?id=$cm->id&mode=overview"); } else { $currentgroup = false; } @@ -110,145 +78,54 @@ class quiz_report extends quiz_default_report { if ($currentgroup) { $users = get_group_users($currentgroup); } - else { - $users = get_course_users($course->id); - } - if(!$teacherattempts) { - $teachers = get_course_teachers($course->id); - if(!empty($teachers)) { - $keys = array_keys($teachers); - } - foreach($keys as $key) { - unset($users[$key]); - } - } - if(empty($users)) { - print_heading($strnoattempts); - return true; - } + $table->head = array("&nbsp;", $strname, $strattempts, "$strbestgrade /$quiz->grade"); + $table->align = array("center", "left", "left", "center"); + $table->wrap = array("nowrap", "nowrap", "nowrap", "nowrap"); + $table->width = 10; + $table->size = array(10, "*", "80%", "*"); - // Construct the SQL - - if($where = $table->get_sql_where()) { - $where .= ' AND '; - } - - if($sort = $table->get_sql_sort()) { - $sortparts = explode(',', $sort); - $newsort = array(); - $firsttime = true; - foreach($sortparts as $sortpart) { - $sortpart = trim($sortpart); - if(substr($sortpart, 0, 1) == '$') { - if($firsttime) { - $qnum = intval(substr($sortpart, 1)); - $where .= '('.sql_isnull('qr.question').' OR qr.question = '.$qnum.') AND '; - $newsort[] = 'grade '.(strpos($sortpart, 'ASC')? 'ASC' : 'DESC'); - $firsttime = false; - } - } - else { - $newsort[] = $sortpart; + foreach ($grades as $grade) { + if ($currentgroup) { + if (empty($users[$grade->userid])) { /// Using groups, but this user not in group + continue; } } - $sort = ' ORDER BY '.implode(', ', $newsort); - } + $picture = print_user_picture($grade->userid, $course->id, $grade->picture, false, true); - $select = 'SELECT '.$db->Concat('u.id', '\'#\'', $db->IfNull('qa.attempt', '0')).' AS uvsa, u.id AS userid, u.firstname, u.lastname, u.picture, qa.id AS attempt, qa.sumgrades, qa.timefinish, qa.timestart, qa.timefinish - qa.timestart AS duration '; - $group = 'GROUP BY uvsa'; - $sql = 'FROM '.$CFG->prefix.'user u '. - 'LEFT JOIN '.$CFG->prefix.'quiz_attempts qa ON u.id = qa.userid '. - 'LEFT JOIN '.$CFG->prefix.'quiz_responses qr ON qr.attempt = qa.id '. - 'WHERE '.$where.'u.id IN ('.implode(',', array_keys($users)).') AND ('.($noattempts ? sql_isnull('qa.quiz').' OR ' : '') . 'qa.quiz = '.$quiz->id.') '; - - - $total = count_records_sql('SELECT COUNT(DISTINCT('.$db->Concat('u.id', '\'#\'', $db->IfNull('qa.attempt', '0')).')) '.$sql); - $table->pagesize(10, $total); - - if($table->get_page_start() !== '' && $table->get_page_size() !== '') { - $limit = ' '.sql_paging_limit($table->get_page_start(), $table->get_page_size()); - } - else { - $limit = ''; - } - - $attempts = get_records_sql($select.$sql.$group.$sort.$limit); - - if(!empty($attempts)) { - - foreach ($attempts as $attempt) { - - $picture = print_user_picture($attempt->userid, $course->id, $attempt->picture, false, true); - - $row = array( - '<input type="checkbox" name="attemptid[]" value="'.$attempt->attempt.'" />', - $picture, - '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$attempt->userid.'&amp;course='.$course->id.'">'.fullname($attempt).'</a>', - empty($attempt->attempt) ? '-' : '<a href="review.php?q='.$quiz->id.'&amp;attempt='.$attempt->attempt.'">'.userdate($attempt->timestart, $strtimeformat).'</a>', - empty($attempt->attempt) || empty($attempt->timefinish) ? '-' : format_time($attempt->duration), - $attempt->sumgrades === NULL ? '-' : format_float($attempt->sumgrades / $quiz->sumgrades * $quiz->grade,$quiz->decimalpoints) - ); - - if($detailedmarks) { - if(empty($attempt->attempt)) { - foreach($questions as $question) { - $row[] = '-'; - } - } - else { - $responses = get_records('quiz_responses', 'attempt', $attempt->attempt, 'question'); - foreach($responses as $response) { - $row[] = $response->grade; - } - } - } - - $table->add_data($row); + if ($attempts = quiz_get_user_attempts($quiz->id, $grade->userid)) { + $userattempts = $this->quiz_get_user_attempts_list($quiz, $attempts, $grade->grade, $strtimeformat); + } else { + $userattempts = ""; } - echo '<div id="tablecontainer">'; - echo '<form id="attemptsform" method="post" action="report.php" onsubmit="var menu = document.getElementById(\'actionmenu\'); return (menu.options[menu.selectedIndex].value == \'delete\' ? \''.$strreallydel.'\' : true);">'; - echo '<input type="hidden" name="id" value="'.$cm->id.'" />'; - + $table->data[] = array ($picture, + "<a href=\"$CFG->wwwroot/user/view.php?id=$grade->userid&course=$course->id\">". + fullname($grade).'</a>', + "$userattempts", format_float($grade->grade)); } - $table->print_html(); + //Embed script for warning + echo "\n<script lang=javascript>\n<!--\nfunction delcheck(){\n "; + echo "if (confirm('$strreallydel')) {\n"; + echo " document.delform.del.value='all';\n return true;\n"; + echo " } else {\n"; + echo " return false;\n }\n}\n"; + echo "//-->\n</script>\n"; + + $onsub = "return confirm('$strreallydel')"; - if(!empty($attempts)) { - echo '<table id="commands">'; - echo '<tr><td>'; - echo '<a href="javascript:select_all_in(\'DIV\', null, \'tablecontainer\');">'.get_string('selectall', 'quiz').'</a> / '; - echo '<a href="javascript:deselect_all_in(\'DIV\', null, \'tablecontainer\');">'.get_string('selectnone', 'quiz').'</a> '; - echo '</td><td style="text-align: right;">'; - $options = array('dummy' => ' ', 'delete' => get_string('delete')); - $menu = str_replace('<select', '<select id="actionmenu"', choose_from_menu($options, 'action', '', get_string('selectedattempts', 'quiz'), 'if(this.selectedIndex > 1) submitFormById(\'attemptsform\');', '', true)); - echo $menu; - echo '<noscript id="noscriptactionmenu" style="display: inline;">'; - echo '<input type="submit" value="'.get_string('go').'" /></noscript>'; - echo '<script type="text/javascript">'."\n<!--\n".'document.getElementById("noscriptactionmenu").style.display = "none";'."\n-->\n".'</script>'; - echo '</td></tr></table>'; - echo '</form></div>'; - } - else { - print_heading(get_string('noattemptsmatchingfilter', 'quiz', strtolower($course->students))); - } + echo "<form method=\"post\" action=\"report.php\" name=\"delform\" onsubmit=\"$onsub\">\n"; + echo "<input type=\"hidden\" name=\"del\" value=\"selection\">\n"; + echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; - echo '<div class="controls">'; - echo '<form method="report.php">'; - echo '<p>'.get_string('displayoptions', 'quiz').': '; - echo '<input type="hidden" name="id" value="'.$cm->id.'" />'; - echo '<input type="hidden" name="noattempts" value="0" />'; - echo '<input type="hidden" name="teacherattempts" value="0" />'; - echo '<input type="hidden" name="detailedmarks" value="0" />'; - echo '<input type="checkbox" id="checknoattempts" name="noattempts" '.($noattempts?'checked="checked" ':'').'value="1" /> <label for="checknoattempts">'.get_string('shownoattempts', 'quiz').'</label> '; - echo '<input type="checkbox" id="checkteacherattempts" name="teacherattempts" '.($teacherattempts?'checked="checked" ':'').'value="1" /> <label for="checkteacherattempts">'.get_string('showteacherattempts', 'quiz').'</label> '; - echo '<input type="checkbox" id="checkdetailedmarks" name="detailedmarks" '.($detailedmarks?'checked="checked" ':'').'value="1" /> <label for="checkdetailedmarks">'.get_string('showdetailedmarks', 'quiz').'</label> '; - echo '<input type="submit" value="'.get_string('go').'" />'; - echo '</p>'; - echo '</form>'; - echo '</div>'; + print_table($table); + + //There might be a more elegant way than using the <center> tag for this + echo "<center><input type=\"submit\" value=\"$strdeleteselected\">&nbsp;"; + echo "<input type=button value=\"$strdeleteall\" onClick=\"if(delcheck()){document.delform.submit()}\">\n</center>\n"; + echo "</form>\n"; return true; } @@ -258,18 +135,18 @@ class quiz_report extends quiz_default_report { /// with each grade linked to the feedback report and with the best grade highlighted /// Each also has information about date and lapsed time - $bestgrade = format_float($bestgrade,$quiz->decimalpoints); + $bestgrade = format_float($bestgrade); foreach ($attempts as $attempt) { - $attemptgrade = format_float(($attempt->sumgrades / $quiz->sumgrades) * $quiz->grade,$quiz->decimalpoints); + $attemptgrade = format_float(($attempt->sumgrades / $quiz->sumgrades) * $quiz->grade); $attemptdate = userdate($attempt->timestart, $timeformat); if ($attempt->timefinish) { $attemptlapse = format_time($attempt->timefinish - $attempt->timestart); } else { $attemptlapse = "..."; } - $button = "<input type=\"checkbox\" name=\"box$attempt->id\" value=\"$attempt->id\" alt=\"box$attempt->id\" />"; - $revurl = "review.php?q=$quiz->id&amp;attempt=$attempt->id"; + $button = "<input type=checkbox name=\"box$attempt->id\" value=\"$attempt->id\">"; + $revurl = "review.php?q=$quiz->id&attempt=$attempt->id"; if ($attemptgrade == $bestgrade) { $userattempts[] = "$button&nbsp;<span class=\"highlight\">$attemptgrade</span>&nbsp;<a href=\"$revurl\">$attemptdate</a>&nbsp;($attemptlapse)"; } else { diff --git a/mod/quiz/report/regrade/report.php b/mod/quiz/report/regrade/report.php index 9c13cb5e533..890b74cf855 100644 --- a/mod/quiz/report/regrade/report.php +++ b/mod/quiz/report/regrade/report.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// Overview report just displays a big table of all the attempts diff --git a/mod/quiz/report/simplestat/report.php b/mod/quiz/report/simplestat/report.php index bf8aa9a7dc0..b2e9723874e 100644 --- a/mod/quiz/report/simplestat/report.php +++ b/mod/quiz/report/simplestat/report.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// Overview report just displays a big table of all the attempts @@ -452,11 +452,7 @@ class quiz_report extends quiz_default_report { /// Check to see if groups are being used in this quiz if ($groupmode = groupmode($course, $cm)) { // Groups are being used - if (empty($download)) { // Display menu too - $currentgroup = setup_and_print_groups($course, $groupmode, "report.php?id=$cm->id&amp;mode=simplestat"); - } else { - $currentgroup = get_current_group($course->id); - } + $currentgroup = setup_and_print_groups($course, $groupmode, "report.php?id=$cm->id&mode=simplestat"); } else { $currentgroup = false; } @@ -537,8 +533,7 @@ class quiz_report extends quiz_default_report { require_once("$CFG->libdir/excel/Worksheet.php"); require_once("$CFG->libdir/excel/Workbook.php"); header("Content-type: application/vnd.ms-excel"); - $downloadfilename = clean_filename("$course->shortname ".format_string($quiz->name,true)); - header("Content-Disposition: attachment; filename=$downloadfilename.xls"); + header("Content-Disposition: attachment; filename=$course->shortname ".$quiz->name.".xls" ); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0,pre-check=0"); header("Pragma: public"); @@ -548,7 +543,7 @@ class quiz_report extends quiz_default_report { $myxls = &$workbook->add_worksheet('Simple Quiz Statistics'); /// Print names of all the fields - $myxls->write_string(0,0,format_string($quiz->name,true)); + $myxls->write_string(0,0,$quiz->name); $myxls->set_column(0,0,25); $myxls->set_column(1,$count,9); @@ -597,8 +592,7 @@ class quiz_report extends quiz_default_report { /// Print header to force download header("Content-Type: application/download\n"); - $downloadfilename = clean_filename("$course->shortname ".format_string($quiz->name,true)); - header("Content-Disposition: attachment; filename=$downloadfilename.txt"); + header("Content-Disposition: attachment; filename=$course->shortname ".$quiz->name.".txt"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0,pre-check=0"); header("Pragma: public"); @@ -606,7 +600,7 @@ class quiz_report extends quiz_default_report { /// Print names of all the fields - echo format_string($quiz->name,true); + echo "$quiz->name"; for ($i=1; $i<=$count; $i++) { echo "\t$i"; } @@ -648,7 +642,7 @@ class quiz_report extends quiz_default_report { /// Otherwise, display the table as HTML - echo "<table border=\"1\" align=\"center\">"; + echo "<table border=1 align=\"center\">"; echo "<tr>"; echo "<td>&nbsp;</td>"; for ($i=1; $i<=$count; $i++) { @@ -685,7 +679,7 @@ class quiz_report extends quiz_default_report { echo "</table>"; echo "<br />"; - echo "<table border=\"0\" align=\"center\"><tr>"; + echo "<table border=0 align=center><tr>"; echo "<td>"; unset($options); $options["id"] = "$cm->id"; diff --git a/mod/quiz/restorelib.php b/mod/quiz/restorelib.php index a4584f84206..2d3542d75d7 100644 --- a/mod/quiz/restorelib.php +++ b/mod/quiz/restorelib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //quiz mods @@ -9,17 +9,17 @@ // quiz quiz_categories // (CL,pk->id) (CL,pk->id) // | | - // ------------------------------------------------------------------- | - // | | | | |....................................... - // | | | | | . - // | | | | | . - // quiz_attempts quiz_grades quiz_question_grades quiz_question_versions | ----quiz_question_datasets---- . - // (UL,pk->id, fk->quiz) (UL,pk->id,fk->quiz) (CL,pk->id,fk->quiz) (CL,pk->id,fk->quiz) | | (CL,pk->id,fk->question, | . - // | | . | | fk->dataset_definition) | . - // | | . | | | . - // | | . | | | . - // | | . | | | . - // quiz_responses | quiz_questions quiz_dataset_definitions + // ----------------------------------------------- | + // | | | |....................................... + // | | | | . + // | | | | . + // quiz_attempts quiz_grades quiz_question_grades | ----quiz_question_datasets---- . + // (UL,pk->id, fk->quiz) (UL,pk->id,fk->quiz) (CL,pk->id,fk->quiz) | | (CL,pk->id,fk->question, | . + // | | | | fk->dataset_definition) | . + // | | | | | . + // | | | | | . + // | | | | | . + // quiz_responses | quiz_questions quiz_dataset_definitions // (UL,pk->id, fk->attempt)----------------------------------------------------(CL,pk->id,fk->category,files) (CL,pk->id,fk->category) // | | // | | @@ -84,7 +84,6 @@ // 2.-Standard module restore (Invoked via quiz_restore_mods). It includes this tables: // - quiz - // - quiz_question_versions // - quiz_question_grades // - quiz_attempts // - quiz_grades @@ -101,7 +100,7 @@ //Get record from backup_ids $data = backup_getid($restore->backup_unique_code,"quiz_categories",$category->id); - + if ($data) { //Now get completed xmlized object $info = $data->info; @@ -115,8 +114,6 @@ $quiz_cat->info = backup_todb($info['QUESTION_CATEGORY']['#']['INFO']['0']['#']); $quiz_cat->publish = backup_todb($info['QUESTION_CATEGORY']['#']['PUBLISH']['0']['#']); $quiz_cat->stamp = backup_todb($info['QUESTION_CATEGORY']['#']['STAMP']['0']['#']); - $quiz_cat->parent = backup_todb($info['QUESTION_CATEGORY']['#']['PARENT']['0']['#']); - $quiz_cat->sortorder = backup_todb($info['QUESTION_CATEGORY']['#']['SORTORDER']['0']['#']); //Now, we are going to do some calculations to decide when to create the category or no. //Based in the next logic: @@ -140,14 +137,14 @@ //Check for categories and their properties, storing in temporary variables //Count categories with the same stamp - + $count_cat = count_records("quiz_categories","stamp",$quiz_cat->stamp); //Count categories with the same stamp in the same course $count_cat_same_course = count_records("quiz_categories","course",$restore->course_id,"stamp",$quiz_cat->stamp); //Count categories with the same stamp in other course $count_cat_other_course = $count_cat - $count_cat_same_course; - - //Get categories with the same stamp in the same course + + //Get categories with the same stamp in the same course if ($count_cat_same_course > 0) { //Eloy's NOTE: Due to this select *must* be retrive only one record, we could have used get_record(), but // mantain this to be as simmilar as possible with old code (comparing by name) to be @@ -170,7 +167,7 @@ } else { $cats_other_course = false; } - + if ($count_cat == 0) { //The category doesn't exist, create it. //The structure is equal to the db, so insert the quiz_categories @@ -203,21 +200,21 @@ } else { //STAMP doesn't exists, do things by name (pre 1.1) //and calculate and insert STAMP too !! - + //Check for categories and their properties, storing in temporary variables //Count categories with the same name - + $count_cat = count_records("quiz_categories","name",$quiz_cat->name); //Count categories with the same name in the same course $count_cat_same_course = count_records("quiz_categories","course",$restore->course_id,"name",$quiz_cat->name); //Count categories with the same name in other course $count_cat_other_course = $count_cat - $count_cat_same_course; - + //Get categories with the same name in the same course //The last record will be the oldest category if ($count_cat_same_course > 0) { $cats_same_course = get_records_sql("SELECT c.* FROM {$CFG->prefix}quiz_categories c - WHERE c.course = '$restore->course_id' AND + WHERE c.course = '$restore->course_id' AND c.name = '$quiz_cat->name' ORDER BY c.id DESC"); } else { @@ -226,14 +223,14 @@ //Get categories with the same name in other course //The last record will be the oldest category with publish=1 if ($count_cat_other_course > 0) { - $cats_other_course = get_records_sql("SELECT c.* FROM {$CFG->prefix}quiz_categories c - WHERE c.course != '$restore->course_id' AND + $cats_other_course = get_records_sql("SELECT c.* FROM {$CFG->prefix}quiz_categories c + WHERE c.course != '$restore->course_id' AND c.name = '$quiz_cat->name' ORDER BY c.publish ASC, c.id DESC"); } else { $cats_other_course = false; } - + if ($count_cat == 0) { //The category doesn't exist, create it. //First, calculate the STAMP field @@ -272,10 +269,10 @@ //Do some output if ($status) { - echo "<li>".get_string('category', 'quiz')." \"".$quiz_cat->name."\"<br />"; + echo "<ul><li>".get_string("category")." \"".$quiz_cat->name."\"<br>"; } else { //We must never arrive here !! - echo "<li>".get_string('category', 'quiz')." \"".$quiz_cat->name."\" Error!<br />"; + echo "<ul><li>".get_string("category")." \"".$quiz_cat->name."\" Error!<br>"; } backup_flush(300); @@ -289,7 +286,10 @@ } else { $status = false; } - echo '</li>'; + + + //Finalize ul + echo "</ul>"; } return $status; @@ -324,12 +324,6 @@ $question->qtype = backup_todb($que_info['#']['QTYPE']['0']['#']); $question->stamp = backup_todb($que_info['#']['STAMP']['0']['#']); $question->version = backup_todb($que_info['#']['VERSION']['0']['#']); - $question->hidden = backup_todb($que_info['#']['HIDDEN']['0']['#']); - - // If it is a random question then hide it - if ($question->qtype == 4) { - $question->hidden = 1; - } //Check if the question exists //by category and stamp @@ -337,7 +331,7 @@ "stamp",$question->stamp); //If the stamp doesn't exists, check if question exists //by category, name and questiontext and calculate stamp - //Mantains pre Beta 1.1 compatibility !! + //Mantains pre Beta 1.1 compatibility !! //TO TAKE OUT SOMETIME IN THE FUTURE !! if (!$question->stamp) { $question->stamp = make_unique_id_code(); @@ -361,7 +355,7 @@ if (($i+1) % 2 == 0) { echo "."; if (($i+1) % 40 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -447,28 +441,28 @@ //traverse_xmlize($ans_info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug - + //We'll need this later!! $oldid = backup_todb($ans_info['#']['ID']['0']['#']); - + //Now, build the QUIZ_ANSWERS record structure $answer->question = $new_question_id; $answer->answer = backup_todb($ans_info['#']['ANSWER_TEXT']['0']['#']); $answer->fraction = backup_todb($ans_info['#']['FRACTION']['0']['#']); $answer->feedback = backup_todb($ans_info['#']['FEEDBACK']['0']['#']); - + //The structure is equal to the db, so insert the quiz_answers $newid = insert_record ("quiz_answers",$answer); - + //Do some output if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } - + if ($newid) { //We have the newid, update backup_ids backup_putid($restore->backup_unique_code,"quiz_answers",$oldid, @@ -488,10 +482,6 @@ $status = true; - if (!isset($info['#']['ANSWERS'])) { // No answers in this question (eg random) - return $status; - } - //Get the answers array $answers = $info['#']['ANSWERS']['0']['#']['ANSWER']; @@ -513,7 +503,7 @@ //If we are in this method is because the question exists in DB, so its //answers must exist too. - //Now, we are going to look for that answer in DB and to create the + //Now, we are going to look for that answer in DB and to create the //mappings in backup_ids to use them later where restoring responses (user level). //Get the answer from DB (by question and answer) @@ -524,7 +514,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -540,23 +530,23 @@ return $status; } - + function quiz_restore_shortanswer ($old_question_id,$new_question_id,$info,$restore) { - global $CFG; + global $CFG; $status = true; - //Get the shortanswers array + //Get the shortanswers array $shortanswers = $info['#']['SHORTANSWER']; //Iterate over shortanswers - for($i = 0; $i < sizeof($shortanswers); $i++) { + for($i = 0; $i < sizeof($shortanswers); $i++) { $sho_info = $shortanswers[$i]; //traverse_xmlize($sho_info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug - + //Now, build the QUIZ_SHORTANSWER record structure $shortanswer->question = $new_question_id; $shortanswer->answers = backup_todb($sho_info['#']['ANSWERS']['0']['#']); @@ -591,7 +581,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -603,7 +593,7 @@ return $status; } - + function quiz_restore_truefalse ($old_question_id,$new_question_id,$info,$restore) { global $CFG; @@ -644,7 +634,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -708,7 +698,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -756,7 +746,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -781,7 +771,7 @@ $match->question = $new_question_id; $match->subquestions = $subquestions_field; - //The structure is equal to the db, so insert the quiz_match_sub + //The structure is equal to the db, so insert the quiz_match_sub $newid = insert_record ("quiz_match",$match); if (!$newid) { @@ -791,14 +781,14 @@ return $status; } - function quiz_restore_map_match ($old_question_id,$new_question_id,$info,$restore) { + function quiz_restore_map_match ($old_question_id,$new_question_id,$info,$restore) { global $CFG; $status = true; - //Get the matchs array - $matchs = $info['#']['MATCHS']['0']['#']['MATCH']; + //Get the matchs array + $matchs = $info['#']['MATCHS']['0']['#']['MATCH']; //We have to build the subquestions field (a list of match_sub id) $subquestions_field = ""; @@ -832,7 +822,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -887,7 +877,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -909,7 +899,7 @@ global $CFG; - $status = true; + $status = true; //Get the randomsamatchs array $randomsamatchs = $info['#']['RANDOMSAMATCH']; @@ -932,7 +922,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -980,7 +970,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -1018,7 +1008,6 @@ $calculated->tolerance = backup_todb($cal_info['#']['TOLERANCE']['0']['#']); $calculated->tolerancetype = backup_todb($cal_info['#']['TOLERANCETYPE']['0']['#']); $calculated->correctanswerlength = backup_todb($cal_info['#']['CORRECTANSWERLENGTH']['0']['#']); - $calculated->correctanswerformat = backup_todb($cal_info['#']['CORRECTANSWERFORMAT']['0']['#']); ////We have to recode the answer field $answer = backup_getid($restore->backup_unique_code,"quiz_answers",$calculated->answer); @@ -1033,7 +1022,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -1061,14 +1050,14 @@ $status = true; //Get the multianswers array - $multianswers = $info['#']['MULTIANSWERS']['0']['#']['MULTIANSWER']; + $multianswers = $info['#']['MULTIANSWERS']['0']['#']['MULTIANSWER']; //Iterate over multianswers for($i = 0; $i < sizeof($multianswers); $i++) { $mul_info = $multianswers[$i]; //traverse_xmlize($mul_info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug - + //We need this later $oldid = backup_todb($mul_info['#']['ID']['0']['#']); @@ -1103,7 +1092,7 @@ //The structure is equal to the db, so insert the quiz_multianswers $newid = insert_record ("quiz_multianswers",$multianswer); - + //Save ids in backup_ids if ($newid) { backup_putid($restore->backup_unique_code,"quiz_multianswers", @@ -1114,11 +1103,11 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } - + //If we have created the quiz_multianswers record, now, depending of the //answertype, delegate the restore to every qtype function if ($newid) { @@ -1202,7 +1191,7 @@ //Now, we hace to decide when to create the new records or reuse an existing one $create_definition = false; - + //If the dataset_definition->category = 0, it's a individual question dataset_definition, so we'll create it if ($dataset_definition->category == 0) { $create_definition = true; @@ -1257,34 +1246,34 @@ } function quiz_restore_dataset_items ($definitionid,$info,$restore) { - + global $CFG; - + $status = true; - + //Get the items array $dataset_items = $info['#']['DATASET_ITEMS']['0']['#']['DATASET_ITEM']; - + //Iterate over dataset_items for($i = 0; $i < sizeof($dataset_items); $i++) { - $di_info = $dataset_items[$i]; + $di_info = $dataset_items[$i]; //traverse_xmlize($di_info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug - + //Now, build the QUIZ_DATASET_ITEMS record structure $dataset_item->definition = $definitionid; $dataset_item->number = backup_todb($di_info['#']['NUMBER']['0']['#']); $dataset_item->value = backup_todb($di_info['#']['VALUE']['0']['#']); - + //The structure is equal to the db, so insert the quiz_dataset_items $newid = insert_record ("quiz_dataset_items",$dataset_item); - + if (!$newid) { $status = false; } } - + return $status; } @@ -1317,9 +1306,7 @@ $quiz->feedback = backup_todb($info['MOD']['#']['FEEDBACK']['0']['#']); $quiz->correctanswers = backup_todb($info['MOD']['#']['CORRECTANSWERS']['0']['#']); $quiz->grademethod = backup_todb($info['MOD']['#']['GRADEMETHOD']['0']['#']); - $quiz->decimalpoints = backup_todb($info['MOD']['#']['DECIMALPOINTS']['0']['#']); $quiz->review = backup_todb($info['MOD']['#']['REVIEW']['0']['#']); - $quiz->questionsperpage = backup_todb($info['MOD']['#']['QUESTIONSPERPAGE']['0']['#']); $quiz->shufflequestions = backup_todb($info['MOD']['#']['SHUFFLEQUESTIONS']['0']['#']); $quiz->shuffleanswers = backup_todb($info['MOD']['#']['SHUFFLEANSWERS']['0']['#']); $quiz->questions = backup_todb($info['MOD']['#']['QUESTIONS']['0']['#']); @@ -1330,16 +1317,15 @@ $quiz->timelimit = backup_todb($info['MOD']['#']['TIMELIMIT']['0']['#']); $quiz->password = backup_todb($info['MOD']['#']['PASSWORD']['0']['#']); $quiz->subnet = backup_todb($info['MOD']['#']['SUBNET']['0']['#']); - $quiz->popup = backup_todb($info['MOD']['#']['POPUP']['0']['#']); - //We have to recode the questions field (a list of questions id) + //We have to recode the questions field (a list of questions id) //Extracts question id from sequence $questions_field = ""; $in_first = true; $tok = strtok($quiz->questions,","); while ($tok) { //Get the question from backup_ids - $question = backup_getid($restore->backup_unique_code,"quiz_questions",$tok); + $question = backup_getid($restore->backup_unique_code,"quiz_questions",$tok); if ($question) { if ($in_first) { $questions_field .= $question->new_id; @@ -1354,17 +1340,11 @@ //We have the questions field recoded to its new ids $quiz->questions = $questions_field; - //Examine the decimalpoints field to detect pre 1.5 backups - if (!isset($info['MOD']['#']['DECIMALPOINTS']['0']['#'])) { - //Default value - $quiz->decimalpoints = 2; - } - //The structure is equal to the db, so insert the quiz $newid = insert_record ("quiz",$quiz); //Do some output - echo "<li>".get_string("modulename","quiz")." \"".format_string(stripslashes($quiz->name),true)."\"</li>"; + echo "<ul><li>".get_string("modulename","quiz")." \"".$quiz->name."\"<br>"; backup_flush(300); if ($newid) { @@ -1373,20 +1353,22 @@ $mod->id, $newid); //We have to restore the question_grades now (course level table) $status = quiz_question_grades_restore_mods($newid,$info,$restore); - //We have to restore the question_versions now (course level table) - $status = quiz_question_versions_restore_mods($newid,$info,$restore); //Now check if want to restore user data and do it. if ($restore->mods['quiz']->userinfo) { //Restore quiz_attempts $status = quiz_attempts_restore_mods ($newid,$info,$restore); if ($status) { - //Restore quiz_grades + //Restore quiz_grades $status = quiz_grades_restore_mods ($newid,$info,$restore); - } + } } } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -1394,7 +1376,7 @@ return $status; } - //This function restores the quiz_question_grades + //This function restores the quiz_question_grades function quiz_question_grades_restore_mods($quiz_id,$info,$restore) { global $CFG; @@ -1432,7 +1414,7 @@ if (($i+1) % 10 == 0) { echo "."; if (($i+1) % 200 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -1449,77 +1431,6 @@ return $status; } - //This function restores the quiz_question_versions - function quiz_question_versions_restore_mods($quiz_id,$info,$restore) { - - global $CFG, $USER; - - $status = true; - - //Get the quiz_question_versions array - $versions = $info['MOD']['#']['QUESTION_VERSIONS']['0']['#']['QUESTION_VERSION']; - - //Iterate over question_versions - for($i = 0; $i < sizeof($versions); $i++) { - $ver_info = $versions[$i]; - //traverse_xmlize($ver_info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - - //We'll need this later!! - $oldid = backup_todb($ver_info['#']['ID']['0']['#']); - - //Now, build the QUESTION_VERSIONS record structure - $version->quiz = $quiz_id; - $version->oldquestion = backup_todb($ver_info['#']['OLDQUESTION']['0']['#']); - $version->newquestion = backup_todb($ver_info['#']['NEWQUESTION']['0']['#']); - $version->userid = backup_todb($ver_info['#']['USERID']['0']['#']); - $version->timestamp = backup_todb($ver_info['#']['TIMESTAMP']['0']['#']); - - //We have to recode the oldquestion field - $question = backup_getid($restore->backup_unique_code,"quiz_questions",$version->oldquestion); - if ($question) { - $version->oldquestion = $question->new_id; - } - - //We have to recode the newquestion field - $question = backup_getid($restore->backup_unique_code,"quiz_questions",$version->newquestion); - if ($question) { - $version->newquestion = $question->new_id; - } - - //We have to recode the userid field - $user = backup_getid($restore->backup_unique_code,"user",$version->userid); - if ($user) { - $version->userid = $user->new_id; - } else { //Assign to current user - $version->userid = $USER->id; - } - - //The structure is equal to the db, so insert the quiz_question_versions - $newid = insert_record ("quiz_question_versions",$version); - - //Do some output - if (($i+1) % 10 == 0) { - echo "."; - if (($i+1) % 200 == 0) { - echo "<br />"; - } - backup_flush(300); - } - - if ($newid) { - //We have the newid, update backup_ids - backup_putid($restore->backup_unique_code,"quiz_question_versions",$oldid, - $newid); - } else { - $status = false; - } - } - - return $status; - } - //This function restores the quiz_attempts function quiz_attempts_restore_mods($quiz_id,$info,$restore) { @@ -1563,7 +1474,7 @@ if (($i+1) % 10 == 0) { echo "."; if (($i+1) % 200 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -1582,7 +1493,7 @@ return $status; } - //This function restores the quiz_responses + //This function restores the quiz_responses function quiz_responses_restore_mods($attempt_id,$info,$restore) { global $CFG; @@ -1604,7 +1515,6 @@ //Now, build the RESPONSES record structure $response->attempt = $attempt_id; $response->question = backup_todb($res_info['#']['QUESTION']['0']['#']); - $response->originalquestion = backup_todb($res_info['#']['ORIGINALQUESTION']['0']['#']); $response->answer = backup_todb($res_info['#']['ANSWER']['0']['#']); $response->grade = backup_todb($res_info['#']['GRADE']['0']['#']); @@ -1614,12 +1524,6 @@ $response->question = $question->new_id; } - //We have to recode the originalquestion field - $question = backup_getid($restore->backup_unique_code,"quiz_questions",$response->originalquestion); - if ($question) { - $response->originalquestion = $question->new_id; - } - //We have to recode the answer field //It depends of the question type !! //We get the question first @@ -1643,17 +1547,17 @@ $answer_field = ""; $in_first = true; $tok = strtok($response->answer,","); - while ($tok) { + while ($tok) { //Get the answer from backup_ids $answer = backup_getid($restore->backup_unique_code,"quiz_answers",$tok); if ($answer) { - if ($in_first) { - $answer_field .= $answer->new_id; + if ($in_first) { + $answer_field .= $answer->new_id; $in_first = false; - } else { + } else { $answer_field .= ",".$answer->new_id; } - } + } //check for next $tok = strtok(","); } @@ -1662,18 +1566,18 @@ case 4: //RANDOM QTYPE //The answer links to another question id, we must recode it $answer_link = backup_getid($restore->backup_unique_code,"quiz_questions",$response->answer); - if ($answer_link) { + if ($answer_link) { $response->answer = $answer_link->new_id; } break; case 5: //MATCH QTYPE //The answer is a comma separated list of hypen separated math_subs (for question and answer) - $answer_field = ""; + $answer_field = ""; $in_first = true; $tok = strtok($response->answer,","); while ($tok) { //Extract the match_sub for the question and the answer - $exploded = explode("-",$tok); + $exploded = explode("-",$tok); $match_question_id = $exploded[0]; $match_answer_id = $exploded[1]; //Get the match_sub from backup_ids (for the question) @@ -1719,7 +1623,7 @@ if ($in_first) { $answer_field .= $que->new_id."-".$ans->new_id; $in_first = false; - } else { + } else { $answer_field .= ",".$que->new_id."-".$ans->new_id; } } @@ -1749,7 +1653,7 @@ $mul = backup_getid($restore->backup_unique_code,"quiz_multianswers",$multianswer_id); if ($mul) { //Now, depending of the answertype field in quiz_multianswers - //we do diferent things + //we do diferent things $mul_db = get_record ("quiz_multianswers","id",$mul->new_id); if ($mul_db->answertype == "1") { //Shortanswer @@ -1796,7 +1700,7 @@ if (($i+1) % 10 == 0) { echo "."; if (($i+1) % 200 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -1853,7 +1757,7 @@ if (($i+1) % 10 == 0) { echo "."; if (($i+1) % 200 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -1870,50 +1774,12 @@ return $status; } - //This function converts texts in FORMAT_WIKI to FORMAT_MARKDOWN for - //some texts in the module - function quiz_restore_wiki2markdown ($restore) { - - global $CFG; - - $status = true; - - //Convert quiz_questions->questiontext - if ($records = get_records_sql ("SELECT q.id, q.questiontext, q.questiontextformat - FROM {$CFG->prefix}quiz_questions q, - {$CFG->prefix}backup_ids b - WHERE b.backup_code = $restore->backup_unique_code AND - b.table_name = 'quiz_questions' AND - q.id = b.new_id AND - q.questiontextformat = ".FORMAT_WIKI)) { - foreach ($records as $record) { - //Rebuild wiki links - $record->questiontext = restore_decode_wiki_content($record->questiontext, $restore); - //Convert to Markdown - $wtm = new WikiToMarkdown(); - $record->questiontext = $wtm->convert($record->questiontext, $restore->course_id); - $record->questiontextformat = FORMAT_MARKDOWN; - $status = update_record('quiz_questions', addslashes_object($record)); - //Do some output - $i++; - if (($i+1) % 1 == 0) { - echo "."; - if (($i+1) % 20 == 0) { - echo "<br />"; - } - backup_flush(300); - } - } - } - return $status; - } - //This function returns a log record with all the necessay transformations //done. It's used by restore_log_module() to restore modules log. function quiz_restore_logs($restore,$log) { - + $status = false; - + //Depending of the action, we recode different things switch ($log->action) { case "add": @@ -1974,7 +1840,7 @@ //Get the new_id of the attempt (to recode the url field) $att = backup_getid($restore->backup_unique_code,"quiz_attempts",$attid); if ($att) { - $log->url = "review.php?id=".$log->cmid."&amp;attempt=".$att->new_id; + $log->url = "review.php?id=".$log->cmid."&attempt=".$att->new_id; $log->info = $mod->new_id; $status = true; } @@ -1991,14 +1857,14 @@ //Get the new_id of the attempt (to recode the url field) $att = backup_getid($restore->backup_unique_code,"quiz_attempts",$attid); if ($att) { - $log->url = "review.php?id=".$log->cmid."&amp;attempt=".$att->new_id; + $log->url = "review.php?id=".$log->cmid."&attempt=".$att->new_id; $log->info = $mod->new_id; $status = true; } } } break; - case "review": + case "review": if ($log->cmid) { //Get the new_id of the module (to recode the info field) $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); @@ -2007,27 +1873,16 @@ $attid = substr(strrchr($log->url,"="),1); //Get the new_id of the attempt (to recode the url field) $att = backup_getid($restore->backup_unique_code,"quiz_attempts",$attid); - if ($att) { - $log->url = "review.php?id=".$log->cmid."&amp;attempt=".$att->new_id; + if ($att) { + $log->url = "review.php?id=".$log->cmid."&attempt=".$att->new_id; $log->info = $mod->new_id; $status = true; } } } break; - case "editquestions": - if ($log->cmid) { - //Get the new_id of the module (to recode the url field) - $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); - if ($mod) { - $log->url = "view.php?id=".$log->cmid; - $log->info = $mod->new_id; - $status = true; - } - } - break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored<br />"; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>"; //Debug break; } diff --git a/mod/quiz/review.php b/mod/quiz/review.php index 65f8d624964..e5ba48552ce 100644 --- a/mod/quiz/review.php +++ b/mod/quiz/review.php @@ -1,9 +1,9 @@ -<?php // $Id$ +<?PHP // $Id$ // This page prints a review of a particular quiz attempt require_once("../../config.php"); - require_once("locallib.php"); + require_once("lib.php"); optional_variable($id); // Course Module ID, or optional_variable($q); // quiz ID @@ -14,11 +14,11 @@ if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); } - + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); } - + if (! $quiz = get_record("quiz", "id", $cm->instance)) { error("Course module is incorrect"); } @@ -40,24 +40,21 @@ } - require_login($course->id, false, $cm); + require_login($course->id); if (!isteacher($course->id)) { if (!$quiz->review) { error(get_string("noreview", "quiz")); } - if (time() < $quiz->timeclose and $quiz->review == QUIZ_REVIEW_AFTER) { + if (time() < $quiz->timeclose) { error(get_string("noreviewuntil", "quiz", userdate($quiz->timeclose))); } - if (time() > $quiz->timeclose and $quiz->review == QUIZ_REVIEW_BEFORE) { - error(get_string("noreview", "quiz")); - } if ($attempt->userid != $USER->id) { error("This is not your attempt!"); } } - add_to_log($course->id, "quiz", "review", "review.php?id=$cm->id&amp;attempt=$attempt->id", "$quiz->id", "$cm->id"); + add_to_log($course->id, "quiz", "review", "review.php?id=$cm->id&attempt=$attempt->id", "$quiz->id", "$cm->id"); // Print the page header @@ -75,22 +72,16 @@ $strtimecompleted = get_string("timecompleted", "quiz"); $stroverdue = get_string("overdue", "quiz"); - print_header_simple(format_string($quiz->name), "", - "<a href=\"index.php?id=$course->id\">$strquizzes</a> - -> <a href=\"view.php?id=$cm->id\">".format_string($quiz->name,true)."</a> -> $strreview", + print_header_simple("$quiz->name", "", + "<A HREF=index.php?id=$course->id>$strquizzes</A> + -> <a href=\"view.php?id=$cm->id\">$quiz->name</a> -> $strreview", "", "", true); echo '<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>'; // for overlib - print_heading(format_string($quiz->name)); + print_heading($quiz->name); -/// Include Javascript protection for this page if required - - if (!empty($quiz->popup)) { - include("protect_js.php"); - } - if (!($questions = quiz_get_attempt_questions($quiz, $attempt))) { error("Unable to get questions from database for quiz $quiz->id attempt $attempt->id number $attempt->attempt"); } @@ -113,11 +104,6 @@ } $table->align = array("right", "left"); - if ($attempt->userid <> $USER->id) { - $student = get_record('user', 'id', $attempt->userid); - $picture = print_user_picture($student->id, $course->id, $student->picture, false, true); - $table->data[] = array($picture, fullname($student, true)); - } $table->data[] = array("$strtimetaken:", $timetaken); $table->data[] = array("$strtimecompleted:", userdate($attempt->timefinish)); if (!empty($overtime)) { diff --git a/mod/quiz/version.php b/mod/quiz/version.php index 6d6856ee3d0..c62882ee05a 100644 --- a/mod/quiz/version.php +++ b/mod/quiz/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////////// // Code fragment to define the version of quiz // This fragment is called by moodle_needs_upgrading() and /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2005041304; // The (date) version of this module -$module->requires = 2005021600; // Requires this Moodle version +$module->version = 2004073001; // The (date) version of this module +$module->requires = 2004070800; // Requires this Moodle version $module->cron = 0; // How often should cron check this module (seconds)? ?> diff --git a/mod/quiz/view.php b/mod/quiz/view.php index d3b4d695817..0e358d87697 100644 --- a/mod/quiz/view.php +++ b/mod/quiz/view.php @@ -1,15 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ // This page prints a particular instance of quiz require_once("../../config.php"); - require_once("locallib.php"); - require_once($CFG->libdir.'/blocklib.php'); - require_once('pagelib.php'); + require_once("lib.php"); - $id = optional_param('id', 0, PARAM_INT); // Course Module ID, or - $q = optional_param('q', 0, PARAM_INT); // quiz ID - $edit = optional_param('edit', ''); + optional_variable($id); // Course Module ID, or + optional_variable($q); // quiz ID if ($id) { if (! $cm = get_record("course_modules", "id", $id)) { @@ -36,63 +33,40 @@ } } - require_login($course->id, false, $cm); - - // if no questions have been set up yet redirect to edit.php - if (!$quiz->questions and isteacheredit($course->id)) { - redirect('edit.php?quizid='.$quiz->id); - } + require_login($course->id); add_to_log($course->id, "quiz", "view", "view.php?id=$cm->id", $quiz->id, $cm->id); $timenow = time(); -// Initialize $PAGE, compute blocks - - $PAGE = page_create_instance($quiz->id); - $pageblocks = blocks_setup($PAGE); - $blocks_preferred_width = bounded_number(180, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT]), 210); // Print the page header - if (!empty($edit) && $PAGE->user_allowed_editing()) { - if ($edit == 'on') { - $USER->editing = true; - } else if ($edit == 'off') { - $USER->editing = false; - } - } + $strquizzes = get_string("modulenameplural", "quiz"); + $strquiz = get_string("modulename", "quiz"); - $PAGE->print_header($course->shortname.': %fullname%'); - - echo '<table id="layout-table"><tr>'; - - if(!empty($CFG->showblocksonmodpages) && (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $PAGE->user_is_editing())) { - echo '<td style="width: '.$blocks_preferred_width.'px;" id="left-column">'; - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); - echo '</td>'; - } - - echo '<td id="middle-column">'; + print_header_simple("$quiz->name", "", + "<A HREF=index.php?id=$course->id>$strquizzes</A> -> $quiz->name", + "", "", true, update_module_button($cm->id, $course->id, $strquiz), navmenu($course, $cm)); if (isteacher($course->id)) { $attemptcount = count_records_select("quiz_attempts", "quiz = '$quiz->id' AND timefinish > 0"); $usercount = count_records("quiz_grades", "quiz", "$quiz->id"); $strusers = get_string("users"); $strviewallanswers = get_string("viewallanswers","quiz",$attemptcount); - echo "<div class=\"reportlink\"><a href=\"report.php?id=$cm->id\">$strviewallanswers ($usercount $strusers)</a></div>"; + echo "<p align=right><a href=\"report.php?id=$cm->id\">$strviewallanswers ($usercount $strusers)</a></p>"; } else if (!$cm->visible) { notice(get_string("activityiscurrentlyhidden")); } - $available = ($quiz->timeopen < $timenow and $timenow < $quiz->timeclose) || isteacher($course->id); + $available = ($quiz->timeopen < $timenow and $timenow < $quiz->timeclose); // Print the main part of the page - print_heading(format_string($quiz->name)); + print_heading($quiz->name); if (trim(strip_tags($quiz->intro))) { - print_simple_box(format_text($quiz->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); + print_simple_box(format_text($quiz->intro), "CENTER"); } @@ -109,8 +83,8 @@ } if ($quiz->attempts > 1) { - echo "<p align=\"center\">".get_string("attemptsallowed", "quiz").": $quiz->attempts</p>"; - echo "<p align=\"center\">".get_string("grademethod", "quiz").": ".$QUIZ_GRADE_METHOD[$quiz->grademethod]."</p>"; + echo "<p align=center>".get_string("attemptsallowed", "quiz").": $quiz->attempts</p>"; + echo "<p align=center>".get_string("grademethod", "quiz").": ".$QUIZ_GRADE_METHOD[$quiz->grademethod]."</p>"; } else { echo "<br />"; } @@ -119,22 +93,15 @@ $strtimetaken = get_string("timetaken", "quiz"); $strtimecompleted = get_string("timecompleted", "quiz"); $strgrade = get_string("grade"); - $strmarks = get_string('marks', 'quiz'); $strbestgrade = $QUIZ_GRADE_METHOD[$quiz->grademethod]; - $mygrade = quiz_get_best_grade($quiz, $USER->id); + $mygrade = quiz_get_best_grade($quiz->id, $USER->id); if ($numattempts) { - if ($quiz->grade and $quiz->sumgrades) { - if ($quiz->grade <> $quiz->sumgrades) { - $table->head = array($strattempt, $strtimetaken, $strtimecompleted, "$strmarks / $quiz->sumgrades", "$strgrade / $quiz->grade"); - $table->align = array("center", "center", "left", "right", "right"); - $table->size = array("", "", "", "", ""); - } else { - $table->head = array($strattempt, $strtimetaken, $strtimecompleted, "$strgrade / $quiz->grade"); - $table->align = array("center", "center", "left", "right"); - $table->size = array("", "", "", ""); - } + if ($quiz->grade) { + $table->head = array($strattempt, $strtimetaken, $strtimecompleted, "$strgrade / $quiz->grade"); + $table->align = array("center", "center", "left", "right"); + $table->size = array("", "", "", ""); } else { // No grades are being used $table->head = array($strattempt, $strtimetaken, $strtimecompleted); $table->align = array("center", "center", "left"); @@ -146,31 +113,22 @@ } else { $timetaken = "-"; } - if ($quiz->grade and $quiz->sumgrades) { - $attemptmark = ''; - $attemptgrade = format_float(($attempt->sumgrades/$quiz->sumgrades)*$quiz->grade,$quiz->decimalpoints); + if ($quiz->grade) { + $attemptgrade = format_float(($attempt->sumgrades/$quiz->sumgrades)*$quiz->grade); if ($attemptgrade == $mygrade) { - $attemptgrade = "<span class=\"highlight\">$attemptgrade</span>"; + $attemptgrade = "<span class=highlight>$attemptgrade</span>"; } - if (quiz_review_allowed($quiz)) { - $attemptmark = "<a href=\"review.php?q=$quiz->id&amp;attempt=$attempt->id\">$attempt->sumgrades</a>"; - $attemptgrade = "<a href=\"review.php?q=$quiz->id&amp;attempt=$attempt->id\">$attemptgrade</a>"; - $attempt->attempt = "<a href=\"review.php?q=$quiz->id&amp;attempt=$attempt->id\">#$attempt->attempt</a>"; - } - if ($quiz->grade <> $quiz->sumgrades) { - $table->data[] = array( $attempt->attempt, - format_time($attempt->timefinish - $attempt->timestart), - userdate($attempt->timefinish), - $attemptmark, $attemptgrade); - } else { - $table->data[] = array( $attempt->attempt, - format_time($attempt->timefinish - $attempt->timestart), - userdate($attempt->timefinish), - $attemptgrade); + if (!$available and $quiz->review) { + $attemptgrade = "<a href=\"review.php?q=$quiz->id&attempt=$attempt->id\">$attemptgrade</a>"; + $attempt->attempt = "<a href=\"review.php?q=$quiz->id&attempt=$attempt->id\">$attempt->attempt</a>"; } + $table->data[] = array( $attempt->attempt, + format_time($attempt->timefinish - $attempt->timestart), + userdate($attempt->timefinish), + $attemptgrade); } else { // No grades are being used - if (quiz_review_allowed($quiz)) { - $attempt->attempt = "<a href=\"review.php?q=$quiz->id&amp;attempt=$attempt->id\">#$attempt->attempt</a>"; + if (!$available and $quiz->review) { + $attempt->attempt = "<a href=\"review.php?q=$quiz->id&attempt=$attempt->id\">$attempt->attempt</a>"; } $table->data[] = array( $attempt->attempt, format_time($attempt->timefinish - $attempt->timestart), @@ -203,12 +161,14 @@ } $strconfirmstartattempt = addslashes(get_string("confirmstartattempt","quiz")); echo "<br />"; - echo "</p>"; echo "<div align=\"center\">"; - - include("view_js.php"); - + if ($quiz->timelimit) { + include("view_js.php"); + } else { + print_single_button("attempt.php", $options, get_string("attemptquiznow","quiz")); + } echo "</div>\n"; + echo "</p>"; } } else { print_heading(get_string("nomoreattempts", "quiz")); @@ -218,22 +178,8 @@ } } -// Finish the page - echo '</td></tr></table>'; +// Finish the page print_footer($course); - - function quiz_review_allowed($quiz) { - if (!$quiz->review) { - return false; - } - if ((time() < $quiz->timeclose) and ($quiz->review == QUIZ_REVIEW_AFTER)) { - return false; - } - if ((time() > $quiz->timeclose) and ($quiz->review == QUIZ_REVIEW_BEFORE)) { - return false; - } - return true; - } ?> diff --git a/mod/quiz/view_js.php b/mod/quiz/view_js.php index 765e2baa002..3f99b4fc669 100644 --- a/mod/quiz/view_js.php +++ b/mod/quiz/view_js.php @@ -1,19 +1,9 @@ -<?php // $Id$ -defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.'); - -$window = (!empty($quiz->popup)) ? 'quizpopup' : '_self'; -$windowoptions = ($window == '_self') ? '' : "left=0, top=0, height='+window.screen.height+', width='+window.screen.width+', channelmode=yes, fullscreen=yes, scrollbars=yes, resizeable=no, directories=no, toolbar=no, titlebar=no, location=no, status=no, menubar=no"; -$buttontext = ($numattempts) ? get_string('reattemptquiz', 'quiz') : get_string('attemptquiznow', 'quiz'); - -?> - <script language="javascript" type="text/javascript"> <!-- -document.write('<input type="button" value="<?php echo $buttontext ?>" '+ - 'onclick="javascript: <?php if ($quiz->timelimit) echo "if (confirm(\\'$strconfirmstartattempt\\'))"; ?> '+ - 'window.open(\'attempt.php?id=<?php echo $cm->id ?>\', \'<?php echo $window ?>\', \'<?php echo $windowoptions ?>\'); " />'); +document.write('<form action="attempt.php" method="get"' + + ' onsubmit="return confirm(\'<?php echo $strconfirmstartattempt ?>\');">' + + '<input type="hidden" name="id" value="<?php echo $cm->id ?>" />' + + '<input type="submit" value="<?php print_string("attemptquiznow","quiz"); ?>" /></form>'); // --> </script> -<noscript> - <strong><?php print_string('noscript', 'quiz'); ?></strong> -</noscript> +<noscript><strong><?php print_string("noscript","quiz"); ?></strong></noscript> \ No newline at end of file diff --git a/mod/resource/backuplib.php b/mod/resource/backuplib.php index 307888a0c60..109192d60dd 100644 --- a/mod/resource/backuplib.php +++ b/mod/resource/backuplib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //resource mods diff --git a/mod/resource/config.html b/mod/resource/config.html index 4118cafe5a8..1380d661360 100644 --- a/mod/resource/config.html +++ b/mod/resource/config.html @@ -1,59 +1,44 @@ <form method="post" action="module.php" name="form"> -<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>"> -<table cellpadding="9" cellspacing="0" > -<tr valign="top"> - <td align="right">resource_framesize:</td> +<table cellpadding=9 cellspacing=0 > +<tr valign=top> + <td align=right><p>resource_framesize:</td> <td> - <input name="resource_framesize" type="text" size="5" value="<?php p($CFG->resource_framesize) ?>" /> + <input name=resource_framesize type=text size=5 value="<?php p($CFG->resource_framesize) ?>"> </td> <td> <?php print_string("configframesize", "resource") ?> </td> </tr> -<tr valign="top"> - <td align="right">resource_websearch:</td> +<tr valign=top> + <td align=right><p>resource_websearch:</td> <td> - <input name="resource_websearch" type="text" size="30" value="<?php p($CFG->resource_websearch) ?>" /> + <input name=resource_websearch type=text size=30 value="<?php p($CFG->resource_websearch) ?>"> </td> <td> <?php print_string("configwebsearch", "resource") ?> </td> </tr> -<tr valign="top"> - <td align="right">resource_defaulturl:</td> +<tr valign=top> + <td align=right><p>resource_defaulturl:</td> <td> - <input name="resource_defaulturl" type="text" size="30" value="<?php p($CFG->resource_defaulturl) ?>" /> + <input name=resource_defaulturl type=text size=30 value="<?php p($CFG->resource_defaulturl) ?>"> </td> <td> <?php print_string("configdefaulturl", "resource") ?> </td> </tr> -<tr valign="top"> - <td align="right">resource_secretphrase:</td> +<tr valign=top> + <td align=right><p>resource_secretphrase:</td> <td> - <input name="resource_secretphrase" type="text" size="30" value="<?php p($CFG->resource_secretphrase) ?>" /> + <input name=resource_secretphrase type=text size=30 value="<?php p($CFG->resource_secretphrase) ?>"> </td> <td> <?php print_string("configsecretphrase", "resource") ?> </td> </tr> -<tr valign="top"> - <td align="right">resource_allowlocalfiles:</td> - <td> - <?php - unset($choices); - $choices["0"] = get_string("no"); - $choices["1"] = get_string("yes"); - choose_from_menu ($choices, "resource_allowlocalfiles", $CFG->resource_allowlocalfiles, ""); - ?> - </td> - <td> - <?php print_string("configallowlocalfiles", "resource") ?> - </td> -</tr> -<tr valign="top"> - <td align="right">resource_filterexternalpages:</td> +<tr valign=top> + <td align=right><p>resource_filterexternalpages:</td> <td> <?php unset($choices); @@ -66,8 +51,8 @@ <?php print_string("configfilterexternalpages", "resource") ?> </td> </tr> -<tr valign="top"> - <td align="right">resource_popup:</td> +<tr valign=top> + <td align=right><p>resource_popup:</td> <td> <?php unset($choices); @@ -82,11 +67,11 @@ </tr> <?php foreach ($RESOURCE_WINDOW_OPTIONS as $optionname) { $defaultvalue = "resource_popup$optionname"; - echo "<tr valign=\"top\">"; - echo "<td align=\"right\">$defaultvalue:</td>"; + echo "<tr valign=top>"; + echo "<td align=right><p>$defaultvalue:</td>"; echo "<td>"; if ($optionname == "height" or $optionname == "width") { - echo "<input name=$defaultvalue type=\"text\" size=\"5\" value=\"".$CFG->$defaultvalue."\" />"; + echo "<input name=$defaultvalue type=text size=5 value=\"".$CFG->$defaultvalue."\">"; } else { choose_from_menu ($choices, $defaultvalue, $CFG->$defaultvalue, ""); } @@ -97,37 +82,9 @@ echo "</tr>"; } ?> -<tr valign="top"> - <td align="right">resource_windowsettings:</td> - <td> - <?php - unset($choices); - $choices["0"] = get_string("hidesettings"); - $choices["1"] = get_string("showsettings"); - choose_from_menu ($choices, "resource_windowsettings", $CFG->resource_windowsettings, ""); - ?> - </td> - <td> - <?php print_string("configwindowsettings", "resource") ?> - </td> -</tr> -<tr valign="top"> - <td align="right">resource_parametersettings:</td> - <td> - <?php - unset($choices); - $choices["0"] = get_string("hidesettings"); - $choices["1"] = get_string("showsettings"); - choose_from_menu ($choices, "resource_parametersettings", $CFG->resource_parametersettings, ""); - ?> - </td> - <td> - <?php print_string("configparametersettings", "resource") ?> - </td> -</tr> <tr> - <td colspan="3" align="center"> - <input type="submit" value="<?php print_string("savechanges") ?>" /></td> + <td colspan=3 align=center> + <input type="submit" value="<?php print_string("savechanges") ?>"></td> </tr> </table> diff --git a/mod/resource/coursefiles.php b/mod/resource/coursefiles.php new file mode 100644 index 00000000000..f9d92a3b001 --- /dev/null +++ b/mod/resource/coursefiles.php @@ -0,0 +1,854 @@ +<?PHP // $Id$ + +// Manage all uploaded files in a course file area + +// This file is a hack to files/index.php that removes +// the headers and adds some controls so that images +// can be selected within the Richtext editor. + +// All the Moodle-specific stuff is in this top section +// Configuration and access control occurs here. +// Must define: USER, basedir, baseweb, html_header and html_footer +// USER is a persistent variable using sessions + + require("../../config.php"); + require("../../files/mimetypes.php"); + + require_variable($id); + optional_variable($file, ""); + optional_variable($wdir, ""); + optional_variable($action, ""); + + if (! $course = get_record("course", "id", $id) ) { + error("That's an invalid course id"); + } + + require_login($course->id); + + if (! isteacher($course->id) ) { + error("Only teachers can edit files"); + } + + function html_footer() { + echo "</td></tr></table></body></html>"; + } + + function html_header($course, $wdir, $formfield=""){ + + global $CFG,$THEME; + + if (! $site = get_site()) { + error("Invalid site!"); + } + + if ($course->id == $site->id) { + $strfiles = get_string("sitefiles"); + } else { + $strfiles = get_string("files"); + } + + if ($wdir == "/") { + $fullnav = "$strfiles"; + } else { + $dirs = explode("/", $wdir); + $numdirs = count($dirs); + $link = ""; + $navigation = ""; + for ($i=1; $i<$numdirs; $i++) { + $navigation .= " -> "; + $link .= "/".urlencode($dirs[$i]); + $navigation .= "<a href=\"".$_SERVER['PHP_SELF']."?id=$course->id&wdir=$link\">".$dirs[$i]."</a>"; + } + $fullnav = "<a href=\"".$_SERVER['PHP_SELF']."?id=$course->id&wdir=/\">$strfiles</a> $navigation"; + } + + print_header(); + ?> + <script language="javascript" type="text/javascript"> + <!-- + function set_value(txt) { + opener.document.forms['form'].reference.value = txt; + window.close(); + } + --> + </script> + <?php + + echo '<table border="0" cellpadding="3" cellspacing="0" width="100%">'; + echo '<tr>'; + echo '<td bgcolor="'.$THEME->cellheading.'" class="navbar">'; + echo '<font size="2"><b>'."$course->shortname -> $fullnav".'</b></font>'; + echo '</td>'; + echo '</tr>'; + echo '</table>'; + + if ($course->id == $site->id) { + print_heading(get_string("publicsitefileswarning"), "center", 2); + } + + echo "<table border=0 align=center cellspacing=3 cellpadding=3 width=640>"; + echo "<tr>"; + echo "<td colspan=\"2\">"; + } + + if (! $basedir = make_upload_directory("$course->id")) { + error("The site administrator needs to fix the file permissions"); + } + + $baseweb = $CFG->wwwroot; + +// End of configuration and access control + + + $regexp="\\.\\."; + if (ereg( $regexp, $file, $regs )| ereg( $regexp, $wdir,$regs )) { + $message = "Error: Directories can not contain \"..\""; + $wdir = "/"; + $action = ""; + } + + if (!$wdir) { + $wdir="/"; + } + + + switch ($action) { + + case "upload": + html_header($course, $wdir); + + if (!empty($_FILES['userfile'])) { + $userfile = $_FILES['userfile']; + } else { + $save = false; + } + if (!empty($save)) { + if (!is_uploaded_file($userfile['tmp_name']) or $userfile['size'] == 0) { + notify(get_string("uploadnofilefound")); + } else { + $userfile_name = clean_filename($userfile['name']); + if ($userfile_name) { + $newfile = "$basedir$wdir/$userfile_name"; + if (move_uploaded_file($userfile['tmp_name'], $newfile)) { + chmod($newfile, 0666); + $a = NULL; + $a->file = "$userfile_name (".$userfile['type'].")"; + $a->directory = $wdir; + print_string("uploadedfileto", "", $a); + } else { + notify(get_string("uploadproblem", "", $userfile_name)); + } + } + } + displaydir($wdir); + + } else { + $upload_max_filesize = get_max_upload_file_size($CFG->maxbytes); + $filesize = display_size($upload_max_filesize); + + $struploadafile = get_string("uploadafile"); + $struploadthisfile = get_string("uploadthisfile"); + $strmaxsize = get_string("maxsize", "", $filesize); + $strcancel = get_string("cancel"); + + echo "<P>$struploadafile ($strmaxsize) --> <B>$wdir</B>"; + echo "<TABLE><TR><TD COLSPAN=2>"; + echo "<FORM ENCTYPE=\"multipart/form-data\" METHOD=\"post\" ACTION=\"".$_SERVER['PHP_SELF']."\">"; + echo " <INPUT TYPE=hidden NAME=MAX_FILE_SIZE value=\"$upload_max_filesize\">"; + 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 NAME=\"userfile\" TYPE=\"file\" size=\"60\">"; + echo " </TD><TR><TD WIDTH=10>"; + echo " <INPUT TYPE=submit NAME=save VALUE=\"$struploadthisfile\">"; + echo "</FORM>"; + echo "</TD><TD WIDTH=100%>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" 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=\"$strcancel\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } + html_footer(); + break; + + case "delete": + if (!empty($confirm)) { + html_header($course, $wdir); + foreach ($USER->filelist as $file) { + $fullfile = $basedir.$file; + if (! fulldelete($fullfile)) { + echo "<BR>Error: Could not delete: $fullfile"; + } + } + clearfilelist(); + displaydir($wdir); + html_footer(); + + } else { + html_header($course, $wdir); + if (setfilelist($_POST)) { + echo "<p align=center>".get_string("deletecheckwarning").":</p>"; + print_simple_box_start("center"); + printfilelist($USER->filelist); + print_simple_box_end(); + echo "<br />"; + notice_yesno (get_string("deletecheckfiles"), + "".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&action=delete&confirm=1", + "".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&action=cancel"); + } else { + displaydir($wdir); + } + html_footer(); + } + break; + + case "move": + html_header($course, $wdir); + if ($count = setfilelist($_POST)) { + $USER->fileop = $action; + $USER->filesource = $wdir; + echo "<p align=center>"; + print_string("selectednowmove", "moodle", $count); + echo "</p>"; + } + displaydir($wdir); + html_footer(); + break; + + case "paste": + html_header($course, $wdir); + if (isset($USER->fileop) and $USER->fileop == "move") { + foreach ($USER->filelist as $file) { + $shortfile = basename($file); + $oldfile = $basedir.$file; + $newfile = $basedir.$wdir."/".$shortfile; + if (!rename($oldfile, $newfile)) { + echo "<P>Error: $shortfile not moved"; + } + } + } + clearfilelist(); + displaydir($wdir); + html_footer(); + break; + + case "rename": + if (!empty($name)) { + html_header($course, $wdir); + $name = clean_filename($name); + if (file_exists($basedir.$wdir."/".$name)) { + echo "Error: $name already exists!"; + } else if (!rename($basedir.$wdir."/".$oldname, $basedir.$wdir."/".$name)) { + echo "Error: could not rename $oldname to $name"; + } + displaydir($wdir); + + } else { + $strrename = get_string("rename"); + $strcancel = get_string("cancel"); + $strrenamefileto = get_string("renamefileto", "moodle", $file); + html_header($course, $wdir, "form.name"); + echo "<P>$strrenamefileto:"; + echo "<TABLE><TR><TD>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=\"post\" NAME=\"form\">"; + echo " <INPUT TYPE=hidden NAME=id VALUE=$id>"; + echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>"; + echo " <INPUT TYPE=hidden NAME=action VALUE=rename>"; + echo " <INPUT TYPE=hidden NAME=oldname VALUE=\"$file\">"; + echo " <INPUT TYPE=text NAME=name SIZE=35 VALUE=\"$file\">"; + echo " <INPUT TYPE=submit VALUE=\"$strrename\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" 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=\"$strcancel\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } + html_footer(); + break; + + case "mkdir": + if (!empty($name)) { + html_header($course, $wdir); + $name = clean_filename($name); + if (file_exists("$basedir$wdir/$name")) { + echo "Error: $name already exists!"; + } else if (! make_upload_directory("$course->id/$wdir/$name")) { + echo "Error: could not create $name"; + } + displaydir($wdir); + + } else { + $strcreate = get_string("create"); + $strcancel = get_string("cancel"); + $strcreatefolder = get_string("createfolder", "moodle", $wdir); + html_header($course, $wdir, "form.name"); + echo "<P>$strcreatefolder:"; + echo "<TABLE><TR><TD>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=post NAME=form>"; + 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=text NAME=name SIZE=35>"; + echo " <INPUT TYPE=submit VALUE=\"$strcreate\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" 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=\"$strcancel\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } + html_footer(); + break; + + case "edit": + html_header($course, $wdir); + if (isset($text)) { + $fileptr = fopen($basedir.$file,"w"); + fputs($fileptr, stripslashes($text)); + fclose($fileptr); + displaydir($wdir); + + } else { + $streditfile = get_string("edit", "", "<B>$file</B>"); + $fileptr = fopen($basedir.$file, "r"); + $contents = fread($fileptr, filesize($basedir.$file)); + fclose($fileptr); + + if (mimeinfo("type", $file) == "text/html") { + if ($usehtmleditor = can_use_richtext_editor()) { + $onsubmit = "onsubmit=\"copyrichtext(document.form.text);\""; + } else { + $onsubmit = ""; + } + } else { + $usehtmleditor = false; + $onsubmit = ""; + } + + print_heading("$streditfile"); + + echo "<TABLE><TR><TD COLSPAN=2>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=\"post\" NAME=\"form\" $onsubmit>"; + echo " <INPUT TYPE=hidden NAME=id VALUE=$id>"; + echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">"; + echo " <INPUT TYPE=hidden NAME=file VALUE=\"$file\">"; + echo " <INPUT TYPE=hidden NAME=action VALUE=edit>"; + print_textarea($usehtmleditor, 25, 80, 680, 400, "text", $contents); + echo "</TD></TR><TR><TD>"; + echo " <INPUT TYPE=submit VALUE=\"".get_string("savechanges")."\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" 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=\"".get_string("cancel")."\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + + if ($usehtmleditor) { + print_richedit_javascript("form", "text", "yes"); + } + + + } + html_footer(); + break; + + case "zip": + if (!empty($name)) { + html_header($course, $wdir); + $name = clean_filename($name); + if (empty($CFG->zip)) { // Use built-in php-based zip function + $files = array(); + foreach ($USER->filelist as $file) { + $files[] = "$basedir/$file"; + } + include_once($CFG->libdir.'/pclzip/pclzip.lib.php'); + $archive = new PclZip("$basedir/$wdir/$name"); + if (($list = $archive->create($files,'',"$basedir/$wdir/")) == 0) { + error($archive->errorInfo(true)); + } + } else { // Use external zip program + $files = ""; + foreach ($USER->filelist as $file) { + $files .= basename($file); + $files .= " "; + } + $command = "cd $basedir/$wdir ; $CFG->zip -r $name $files"; + Exec($command); + } + clearfilelist(); + displaydir($wdir); + + } else { + html_header($course, $wdir, "form.name"); + + if (setfilelist($_POST)) { + echo "<P ALIGN=CENTER>".get_string("youareabouttocreatezip").":</P>"; + print_simple_box_start("center"); + printfilelist($USER->filelist); + print_simple_box_end(); + echo "<BR>"; + echo "<P ALIGN=CENTER>".get_string("whattocallzip"); + echo "<TABLE><TR><TD>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=post NAME=form>"; + echo " <INPUT TYPE=hidden NAME=id VALUE=$id>"; + echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">"; + echo " <INPUT TYPE=hidden NAME=action VALUE=zip>"; + echo " <INPUT TYPE=text NAME=name SIZE=35 VALUE=\"new.zip\">"; + echo " <INPUT TYPE=submit VALUE=\"".get_string("createziparchive")."\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" 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=\"".get_string("cancel")."\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } else { + displaydir($wdir); + clearfilelist(); + } + } + html_footer(); + break; + + case "unzip": + html_header($course, $wdir); + if (!empty($file)) { + $strname = get_string("name"); + $strsize = get_string("size"); + $strmodified = get_string("modified"); + $strstatus = get_string("status"); + $strok = get_string("ok"); + $strunpacking = get_string("unpacking", "", $file); + + echo "<P ALIGN=CENTER>$strunpacking:</P>"; + + $file = basename($file); + + if (empty($CFG->unzip)) { // Use built-in php-based unzip function + include_once($CFG->libdir.'/pclzip/pclzip.lib.php'); + $archive = new PclZip("$basedir/$wdir/$file"); + if (!$list = $archive->extract("$basedir/$wdir")) { + error($archive->errorInfo(true)); + } else { // print some output + echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=640>"; + echo "<tr><th align=left>$strname</th>"; + echo "<th align=right>$strsize</th>"; + echo "<th align=right>$strmodified</th>"; + echo "<th align=right>$strstatus</th></tr>"; + foreach ($list as $item) { + echo "<tr>"; + $item['filename'] = str_replace("$basedir/$wdir/", "", $item['filename']); + print_cell("left", $item['filename']); + if (! $item['folder']) { + print_cell("right", display_size($item['size'])); + } else { + echo "<td>&nbsp;</td>"; + } + $filedate = userdate($item['mtime'], get_string("strftimedatetime")); + print_cell("right", $filedate); + print_cell("right", $item['status']); + echo "</tr>"; + } + echo "</table>"; + } + + } else { // Use external unzip program + print_simple_box_start("center"); + echo "<PRE>"; + $command = "cd $basedir/$wdir ; $CFG->unzip -o $file 2>&1"; + passthru($command); + echo "</PRE>"; + print_simple_box_end(); + } + + echo "<CENTER><FORM ACTION=\"".$_SERVER['PHP_SELF']."\" 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=\"$strok\">"; + echo "</FORM>"; + echo "</CENTER>"; + } else { + displaydir($wdir); + } + html_footer(); + break; + + case "listzip": + html_header($course, $wdir); + if (!empty($file)) { + $strname = get_string("name"); + $strsize = get_string("size"); + $strmodified = get_string("modified"); + $strok = get_string("ok"); + $strlistfiles = get_string("listfiles", "", $file); + + echo "<P ALIGN=CENTER>$strlistfiles:</P>"; + $file = basename($file); + + include_once($CFG->libdir.'/pclzip/pclzip.lib.php'); + $archive = new PclZip("$basedir/$wdir/$file"); + if (!$list = $archive->listContent("$basedir/$wdir")) { + notify($archive->errorInfo(true)); + + } else { + echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=640>"; + echo "<tr><th align=left>$strname</th><th align=right>$strsize</th><th align=right>$strmodified</th></tr>"; + foreach ($list as $item) { + echo "<tr>"; + print_cell("left", $item['filename']); + if (! $item['folder']) { + print_cell("right", display_size($item['size'])); + } else { + echo "<td>&nbsp;</td>"; + } + $filedate = userdate($item['mtime'], get_string("strftimedatetime")); + print_cell("right", $filedate); + echo "</tr>"; + } + echo "</table>"; + } + echo "<br><center><form action=\"".$_SERVER['PHP_SELF']."\" 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=\"$strok\">"; + echo "</FORM>"; + echo "</CENTER>"; + } else { + displaydir($wdir); + } + html_footer(); + break; + + case "torte": + if($_POST) + { + while(list($key, $val) = each($_POST)) + { + if(ereg("file([0-9]+)", $key, $regs)) + { + $file = $val; + } + } + if(@filetype($CFG->dataroot ."/". $course->id . $file) == "file") + { + if(mimeinfo("icon", $file) == "image.gif") + { + $url = $CFG->wwwroot ."/file.php?file=/" .$course->id . $file; + runjavascript($url); + } + else + { + print "File is not a image!"; + } + } + else + { + print "You cannot insert FOLDER into richtext editor!!!"; + } + } + break; + case "cancel"; + clearfilelist(); + + default: + html_header($course, $wdir); + displaydir($wdir); + html_footer(); + break; +} + + +/// FILE FUNCTIONS /////////////////////////////////////////////////////////// + + +function fulldelete($location) { + if (is_dir($location)) { + $currdir = opendir($location); + while ($file = readdir($currdir)) { + if ($file <> ".." && $file <> ".") { + $fullfile = $location."/".$file; + if (is_dir($fullfile)) { + if (!fulldelete($fullfile)) { + return false; + } + } else { + if (!unlink($fullfile)) { + return false; + } + } + } + } + closedir($currdir); + if (! rmdir($location)) { + return false; + } + + } else { + if (!unlink($location)) { + return false; + } + } + return true; +} + + + +function setfilelist($VARS) { + global $USER; + + $USER->filelist = array (); + $USER->fileop = ""; + + $count = 0; + foreach ($VARS as $key => $val) { + if (substr($key,0,4) == "file") { + $count++; + $USER->filelist[] = rawurldecode($val); + } + } + return $count; +} + +function clearfilelist() { + global $USER; + + $USER->filelist = array (); + $USER->fileop = ""; +} + + +function printfilelist($filelist) { + global $basedir, $CFG; + + foreach ($filelist as $file) { + if (is_dir($basedir.$file)) { + echo "<img src=\"$CFG->pixpath/f/folder.gif\" height=16 width=16> $file<br>"; + $subfilelist = array(); + $currdir = opendir($basedir.$file); + while ($subfile = readdir($currdir)) { + if ($subfile <> ".." && $subfile <> ".") { + $subfilelist[] = $file."/".$subfile; + } + } + printfilelist($subfilelist); + + } else { + $icon = mimeinfo("icon", $file); + echo "<img src=\"$CFG->pixpath/f/$icon\" height=16 width=16> $file<br>"; + } + } +} + + +function print_cell($alignment="center", $text="&nbsp;") { + echo "<TD ALIGN=\"$alignment\" NOWRAP>"; + echo "<FONT SIZE=\"-1\" FACE=\"Arial, Helvetica\">"; + echo "$text"; + echo "</FONT>"; + echo "</TD>\n"; +} + +function displaydir ($wdir) { +// $wdir == / or /a or /a/b/c/d etc + + global $basedir; + global $id; + global $USER, $CFG; + + $fullpath = $basedir.$wdir; + + $directory = opendir($fullpath); // Find all files + while ($file = readdir($directory)) { + if ($file == "." || $file == "..") { + continue; + } + + if (is_dir($fullpath."/".$file)) { + $dirlist[] = $file; + } else { + $filelist[] = $file; + } + } + 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"); + $strlist = get_string("list"); + $strchoose = get_string("choose"); + + + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=post NAME=dirform>"; + echo "<TABLE BORDER=0 cellspacing=2 cellpadding=2 width=640>"; + echo "<TR>"; + echo "<TH WIDTH=5></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 = ""; + } + + $count = 0; + + if (!empty($dirlist)) { + asort($dirlist); + foreach ($dirlist as $dir) { + + $count++; + + $filename = $fullpath."/".$dir; + $fileurl = rawurlencode($wdir."/".$dir); + $filesafe = rawurlencode($dir); + $filedate = userdate(filectime($filename), "%d %b %Y, %I:%M %p"); + + echo "<TR>"; + + print_cell("center", "<INPUT TYPE=checkbox NAME=\"file$count\" VALUE=\"$fileurl\">"); + print_cell("left", "<A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$fileurl\"><IMG SRC=\"$CFG->pixpath/f/folder.gif\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"Folder\"></A> <A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$fileurl\">".htmlspecialchars($dir)."</A>"); + print_cell("right", "-"); + print_cell("right", $filedate); + print_cell("right", "<A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>"); + + echo "</TR>"; + } + } + + + if (!empty($filelist)) { + asort($filelist); + foreach ($filelist as $file) { + + $icon = mimeinfo("icon", $file); + + $count++; + $filename = "$fullpath/$file"; + $fileurl = "$wdir/$file"; + $filesafe = rawurlencode($file); + $fileurlsafe = rawurlencode($fileurl); + $filedate = userdate(filectime($filename), "%d %b %Y, %I:%M %p"); + + if (substr($fileurl,0,1) == '/') { + $selectfile = substr($fileurl,1); + } else { + $selectfile = $fileurl; + } + if ($CFG->slasharguments) { + $ffurl = "/file.php/$id$fileurl"; + } else { + $ffurl = "/file.php?file=/$id$fileurl"; + } + + echo "<tr>"; + + print_cell("center", "<input type=\"checkbox\" name=\"file$count\" value=\"$fileurl\">"); + + echo "<td align=left nowrap>"; + link_to_popup_window ($ffurl, "display", + "<img src=\"$CFG->pixpath/f/$icon\" height=16 width=16 border=0 alt=\"file\">", + 480, 640); + echo "<font size=\"-1\" face=\"Arial, Helvetica\">"; + link_to_popup_window ($ffurl, "display", htmlspecialchars($file), 480, 640); + echo "</font></td>"; + + $file_size = filesize($filename); + print_cell("right", display_size($file_size)); + print_cell("right", $filedate); + + $edittext = "<b><a onMouseDown=\"return set_value('$selectfile')\" href=\"\">$strchoose</a></b>&nbsp;"; + + if ($icon == "text.gif" || $icon == "html.gif") { + $edittext .= "<a href=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$fileurl&action=edit\">$stredit</a>"; + } else if ($icon == "zip.gif") { + $edittext .= "<a href=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$fileurl&action=unzip\">$strunzip</a>&nbsp;"; + $edittext .= "<a href=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$fileurl&action=listzip\">$strlist</a> "; + } + + print_cell("right", "$edittext <A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>"); + + echo "</tr>"; + } + } + echo "</table>"; + echo "<hr width=640 align=center noshade size=1>"; + + if (empty($wdir)) { + $wdir = "/"; + } + + echo "<TABLE BORDER=0 cellspacing=2 cellpadding=2 width=640>"; + echo "<TR><TD>"; + echo "<INPUT TYPE=hidden NAME=id VALUE=\"$id\">"; + echo "<INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\"> "; + $options = array ( + "move" => "$strmovetoanotherfolder", + "delete" => "$strdeletecompletely", + "zip" => "$strcreateziparchive" + ); + if (!empty($count)) { + choose_from_menu ($options, "action", "", "$strwithchosenfiles...", "javascript:document.dirform.submit()"); + } + + echo "</FORM>"; + echo "<TD ALIGN=center>"; + if (!empty($USER->fileop) and ($USER->fileop == "move") and ($USER->filesource <> $wdir)) { + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" 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=paste>"; + echo " <INPUT TYPE=submit VALUE=\"$strmovefilestohere\">"; + echo "</FORM>"; + } + echo "<TD ALIGN=right>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" 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=mkdir>"; + echo " <INPUT TYPE=submit VALUE=\"$strmakeafolder\">"; + echo "</FORM>"; + echo "</TD>"; + echo "<TD ALIGN=right>"; + echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" 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=upload>"; + echo " <INPUT TYPE=submit VALUE=\"$struploadafile\">"; + echo "</FORM>"; + echo "</TD></TR>"; + echo "</TABLE>"; + echo "<HR WIDTH=640 ALIGN=CENTER NOSHADE SIZE=1>"; + +} + +?> diff --git a/mod/resource/db/mysql.php b/mod/resource/db/mysql.php index 17e17a59d47..be5020bbde9 100644 --- a/mod/resource/db/mysql.php +++ b/mod/resource/db/mysql.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function resource_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -53,18 +53,6 @@ function resource_upgrade($oldversion) { rebuild_course_cache(); } - if ($oldversion < 2004111200) { //drop first to avoid conflicts when upgrading - execute_sql("ALTER TABLE {$CFG->prefix}resource DROP INDEX course;",false); - - modify_database('','ALTER TABLE prefix_resource ADD INDEX course (course);'); - } - - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $wtm->update( 'resource','alltext','options' ); - } - return true; } diff --git a/mod/resource/db/mysql.sql b/mod/resource/db/mysql.sql index 87a8367ea8a..12cc8b9ed2c 100755 --- a/mod/resource/db/mysql.sql +++ b/mod/resource/db/mysql.sql @@ -26,8 +26,7 @@ CREATE TABLE prefix_resource ( options varchar(255) NOT NULL default '', timemodified int(10) unsigned NOT NULL default '0', PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY `course` (`course`) + UNIQUE KEY id (id) ) TYPE=MyISAM; diff --git a/mod/resource/db/oci8po.php b/mod/resource/db/oci8po.php index 6bf08b2b69f..a86cc98b689 100755 --- a/mod/resource/db/oci8po.php +++ b/mod/resource/db/oci8po.php @@ -1,4 +1,4 @@ -<?php +<?PHP function resource_upgrade($oldversion) { // This function does anything necessary to upgrade diff --git a/mod/resource/db/postgres7.php b/mod/resource/db/postgres7.php index d0e940f648e..1caea28dd5a 100644 --- a/mod/resource/db/postgres7.php +++ b/mod/resource/db/postgres7.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function resource_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -49,18 +49,6 @@ function resource_upgrade($oldversion) { rebuild_course_cache(); } - if ($oldversion < 2004111200) {//drop first to avoid conflicts when upgrading - execute_sql("DROP INDEX {$CFG->prefix}resource_course_idx;",false); - - modify_database('','CREATE INDEX prefix_resource_course_idx ON prefix_resource (course);'); - } - - if ($oldversion < 2005041100) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $wtm->update( 'resource','alltext','options' ); - } - return true; } diff --git a/mod/resource/db/postgres7.sql b/mod/resource/db/postgres7.sql index 2a619077e93..8c1286f01aa 100644 --- a/mod/resource/db/postgres7.sql +++ b/mod/resource/db/postgres7.sql @@ -27,7 +27,6 @@ CREATE TABLE prefix_resource ( timemodified integer NOT NULL default '0' ); -CREATE INDEX prefix_resource_course_idx ON prefix_resource (course); # # Dumping data for table `log_display` diff --git a/mod/resource/fetch.php b/mod/resource/fetch.php index da82f9d2e69..c0f570b8c99 100644 --- a/mod/resource/fetch.php +++ b/mod/resource/fetch.php @@ -3,9 +3,13 @@ require_once("../../config.php"); require_once("lib.php"); - + require_variable($id); // Course Module ID require_variable($url); // url to fetch + + if (!empty($CFG->forcelogin)) { + require_login(); + } if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); @@ -15,7 +19,9 @@ error("Course is misconfigured"); } - require_course_login($course, true, $cm); + if ($course->category) { + require_login($course->id); + } if (! $resource = get_record("resource", "id", $cm->instance)) { error("Resource ID was incorrect"); diff --git a/mod/resource/filter.php b/mod/resource/filter.php index fa4e20b963f..4a981981189 100644 --- a/mod/resource/filter.php +++ b/mod/resource/filter.php @@ -1,30 +1,134 @@ -<?php // $Id$ +<?PHP // $Id$ //This function provides automatic linking to //resources when its name (title) is found inside every Moodle text - //Williams, Stronk7, Martin D + //It's based in the glosssary filter by Williams Castillo + //Modifications by stronk7. Enjoy! :-) function resource_filter($courseid, $text) { global $CFG; - /// The resources are sorted from long to short so longer ones can be linked first. - - if ($resources = get_records('resource', 'course', $courseid, 'CHAR_LENGTH(name) DESC', 'id,name')) { - - $links = array(); - - foreach ($resources as $resource) { - $currentname = trim($resource->name); - $links[] = new filterobject($currentname, - '<a class="resource autolink" title="'.strip_tags($currentname).'" href="'. - $CFG->wwwroot.'/mod/resource/view.php?r='.$resource->id.'">', - '</a>', false, true); + if (empty($courseid)) { + if ($site = get_site()) { + $courseid = $site->id; } - - $text = filter_phrases($text, $links); // Look for all these links in the text } + switch ($CFG->dbtype) { + case 'postgres7': + $as = 'as'; + break; + case 'mysql': + $as = ''; + break; + } + + ///sorting by the lenght of the title in order to assure that large resources + ///could be linked first, if they exist in the text to parse + + switch ($CFG->dbtype) { + case "postgres7": + case "mysql": + $rbylenght = "CHAR_LENGTH(name) desc"; + break; + default: + $rbylenght = ""; + break; + } + + $resources = get_records_select("resource", "course = $courseid", "$rbylenght"); + + if (!empty($resources)) { + $cm = ''; + foreach ($resources as $resource) { + if (!$cm = get_coursemodule_from_instance("resource", $resource->id, $courseid)) { + $cm->id = 1; + } + $title = strip_tags($resource->name); + $href_tag_begin = "<a class=\"autolink\" title=\"$title\" href=\"$CFG->wwwroot/mod/resource/view.php?id=$cm->id\">"; + $currentname = $resource->name; + if ($currentname = trim($currentname)) { + //Avoid integers < 1000 to be linked. See bug 1441. + $intcurrent = intval($currentname); + if (!(!empty($intcurrent) && strval($intcurrent) == $currentname && $intcurrent < 1000)) { + $text = resource_link_names($text,$currentname,$href_tag_begin, "</a>"); + } + } + } + } return $text; } + + function resource_link_names($text,$name,$href_tag_begin,$href_tag_end = "</a>") { + $list_of_words_cp = strip_tags($name); + + $list_of_words_cp = trim($list_of_words_cp,'|'); + + $list_of_words_cp = trim($list_of_words_cp); + + $list_of_words_cp = preg_quote($list_of_words_cp,'/'); + + $invalidprefixs = "([a-zA-Z0-9])"; + $invalidsufixs = "([a-zA-Z0-9])"; + + //Avoid seaching in the string if it's inside invalidprefixs and invalidsufixs + $words = array(); + $regexp = '/'.$invalidprefixs.'('.$list_of_words_cp.')|('.$list_of_words_cp.')'.$invalidsufixs.'/is'; + preg_match_all($regexp,$text,$list_of_words); + + foreach (array_unique($list_of_words[0]) as $key=>$value) { + $words['<*'.$key.'*>'] = $value; + } + if (!empty($words)) { + $text = str_replace($words,array_keys($words),$text); + } + + //Now avoid searching inside the <nolink>tag + $excludes = array(); + preg_match_all('/<nolink>(.+?)<\/nolink>/is',$text,$list_of_excludes); + foreach (array_unique($list_of_excludes[0]) as $key=>$value) { + $excludes['<+'.$key.'+>'] = $value; + } + if (!empty($excludes)) { + $text = str_replace($excludes,array_keys($excludes),$text); + } + + //Now avoid searching inside links + $links = array(); + preg_match_all('/<A[\s](.+?)>(.+?)<\/A>/is',$text,$list_of_links); + foreach (array_unique($list_of_links[0]) as $key=>$value) { + $links['<@'.$key.'@>'] = $value; + } + if (!empty($links)) { + $text = str_replace($links,array_keys($links),$text); + } + + //Now avoid searching inside every tag + $final = array(); + preg_match_all('/<(.+?)>/is',$text,$list_of_tags); + foreach (array_unique($list_of_tags[0]) as $key=>$value) { + $final['<|'.$key.'|>'] = $value; + } + if (!empty($final)) { + $text = str_replace($final,array_keys($final),$text); + } + + $text = preg_replace('/('.$list_of_words_cp.')/is', $href_tag_begin.'$1'.$href_tag_end,$text); + + //Now rebuild excluded areas + if (!empty($final)) { + $text = str_replace(array_keys($final),$final,$text); + } + if (!empty($links)) { + $text = str_replace(array_keys($links),$links,$text); + } + if (!empty($excludes)) { + $text = str_replace(array_keys($excludes),$excludes,$text); + } + if (!empty($words)) { + $text = str_replace(array_keys($words),$words,$text); + } + return $text; + } ?> diff --git a/mod/resource/index.php b/mod/resource/index.php index 2387a8af311..a6468c4e87e 100644 --- a/mod/resource/index.php +++ b/mod/resource/index.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); @@ -14,7 +14,7 @@ if ($course->category) { require_login($course->id); - $navigation = "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->"; + $navigation = "<A HREF=\"../../course/view.php?id=$course->id\">$course->shortname</A> ->"; } else { $navigation = ''; } @@ -39,17 +39,16 @@ if ($course->format == "weeks") { $table->head = array ($strweek, $strname, $strsummary); - $table->align = array ("center", "left", "left"); + $table->align = array ("CENTER", "LEFT", "LEFT"); } else if ($course->format == "topics") { $table->head = array ($strtopic, $strname, $strsummary); - $table->align = array ("center", "left", "left"); + $table->align = array ("CENTER", "LEFT", "LEFT"); } else { $table->head = array ($strlastmodified, $strname, $strsummary); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); } $currentsection = ""; - $options->para = false; foreach ($resources as $resource) { if ($course->format == "weeks" or $course->format == "topics") { $printsection = ""; @@ -72,13 +71,13 @@ } if (!$resource->visible) { // Show dimmed if the mod is hidden $table->data[] = array ($printsection, - "<a class=\"dimmed\" $extra href=\"view.php?id=$resource->coursemodule\">".format_string($resource->name,true)."</a>", - format_text($resource->summary, FORMAT_MOODLE, $options) ); + "<a class=\"dimmed\" $extra href=\"view.php?id=$resource->coursemodule\">$resource->name</a>", + format_text($resource->summary) ); } else { //Show normal if the mod is visible $table->data[] = array ($printsection, - "<a $extra href=\"view.php?id=$resource->coursemodule\">".format_string($resource->name,true)."</a>", - format_text($resource->summary, FORMAT_MOODLE, $options) ); + "<a $extra href=\"view.php?id=$resource->coursemodule\">$resource->name</a>", + format_text($resource->summary) ); } } diff --git a/mod/resource/lib.php b/mod/resource/lib.php index 733b033c85f..feb0ff9b2a2 100644 --- a/mod/resource/lib.php +++ b/mod/resource/lib.php @@ -1,57 +1,43 @@ -<?php // $Id$ +<?PHP // $Id$ if (!isset($CFG->resource_framesize)) { set_config("resource_framesize", 130); -} +} if (!isset($CFG->resource_websearch)) { set_config("resource_websearch", "http://google.com/"); -} +} if (!isset($CFG->resource_defaulturl)) { set_config("resource_defaulturl", "http://"); -} +} if (!isset($CFG->resource_filterexternalpages)) { set_config("resource_filterexternalpages", false); -} +} if (!isset($CFG->resource_secretphrase)) { set_config("resource_secretphrase", random_string(20)); -} +} if (!isset($CFG->resource_popup)) { set_config("resource_popup", ""); -} +} -if (!isset($CFG->resource_windowsettings)) { - set_config("resource_windowsettings", "0"); -} - -if (!isset($CFG->resource_parametersettings)) { - set_config("resource_parametersettings", "0"); -} - -if (!isset($CFG->resource_allowlocalfiles)) { - set_config("resource_allowlocalfiles", "0"); -} - -define('RESOURCE_LOCALPATH', 'LOCALPATH'); - -$RESOURCE_WINDOW_OPTIONS = array('resizable', 'scrollbars', 'directories', 'location', - 'menubar', 'toolbar', 'status', 'height', 'width'); +$RESOURCE_WINDOW_OPTIONS = array("resizable", "scrollbars", "directories", "location", + "menubar", "toolbar", "status", "height", "width"); foreach ($RESOURCE_WINDOW_OPTIONS as $popupoption) { $popupoption = "resource_popup$popupoption"; if (!isset($CFG->$popupoption)) { - if ($popupoption == 'resource_popupheight') { + if ($popupoption == "resource_popupheight") { set_config($popupoption, 450); - } else if ($popupoption == 'resource_popupwidth') { + } else if ($popupoption == "resource_popupwidth") { set_config($popupoption, 620); } else { - set_config($popupoption, 'checked'); + set_config($popupoption, "checked"); } - } + } } /** @@ -72,15 +58,11 @@ var $resource; * * Constructor for the base resource class. * If cmid is set create the cm, course, resource objects. -* and do some checks to make sure people can be here, and so on. * * @param cmid integer, the current course module id - not set for new resources */ function resource_base($cmid=0) { - global $CFG; - global $course; // Ugly hack, needed for course language ugly hack - if ($cmid) { if (! $this->cm = get_record("course_modules", "id", $cmid)) { error("Course Module ID was incorrect"); @@ -90,38 +72,14 @@ function resource_base($cmid=0) { error("Course is misconfigured"); } - $course = $this->course; // Make it a global so we can see it later - - require_course_login($this->course, true, $this->cm); - if (! $this->resource = get_record("resource", "id", $this->cm->instance)) { error("Resource ID was incorrect"); } - - $this->strresource = get_string("modulename", "resource"); - $this->strresources = get_string("modulenameplural", "resource"); - - if ($this->course->category) { - $this->navigation = "<a target=\"{$CFG->framename}\" href=\"$CFG->wwwroot/course/view.php?id={$this->course->id}\">{$this->course->shortname}</a> -> ". - "<a target=\"{$CFG->framename}\" href=\"index.php?id={$this->course->id}\">$this->strresources</a> ->"; - } else { - $this->navigation = "<a target=\"{$CFG->framename}\" href=\"index.php?id={$this->course->id}\">$this->strresources</a> ->"; - } - - if (!$this->cm->visible and !isteacher($this->course->id)) { - $pagetitle = strip_tags($this->course->shortname.': '.$this->strresource); - print_header($pagetitle, $this->course->fullname, "$this->navigation $this->strresource", "", "", true, '', navmenu($this->course, $this->cm)); - notice(get_string("activityiscurrentlyhidden"), "$CFG->wwwroot/course/view.php?id={$this->course->id}"); - } - } + } } -/** -* Display function does nothing in the base class -*/ function display() { - } @@ -168,9 +126,9 @@ function setup_end() { function add_instance($resource) { -// Given an object containing all the necessary data, -// (defined by the form in mod.html) this function -// will create a new instance and return the id number +// Given an object containing all the necessary data, +// (defined by the form in mod.html) this function +// will create a new instance and return the id number // of the new instance. global $RESOURCE_WINDOW_OPTIONS; @@ -197,20 +155,13 @@ function add_instance($resource) { } } - if (isset($resource->parametersettingspref)) { - set_user_preference('resource_parametersettingspref', $resource->parametersettingspref); - } - if (isset($resource->windowsettingspref)) { - set_user_preference('resource_windowsettingspref', $resource->windowsettingspref); - } - return insert_record("resource", $resource); } function update_instance($resource) { -// Given an object containing all the necessary data, -// (defined by the form in mod.html) this function +// Given an object containing all the necessary data, +// (defined by the form in mod.html) this function // will update an existing instance with new data. global $RESOURCE_WINDOW_OPTIONS; @@ -238,21 +189,14 @@ function update_instance($resource) { } } - if (isset($resource->parametersettingspref)) { - set_user_preference('resource_parametersettingspref', $resource->parametersettingspref); - } - if (isset($resource->windowsettingspref)) { - set_user_preference('resource_windowsettingspref', $resource->windowsettingspref); - } - return update_record("resource", $resource); } function delete_instance($id) { -// Given an ID of an instance of this module, -// this function will permanently delete the instance -// and any data that depends on it. +// Given an ID of an instance of this module, +// this function will permanently delete the instance +// and any data that depends on it. if (! $resource = get_record("resource", "id", "$id")) { return false; @@ -275,9 +219,7 @@ function delete_instance($id) { function resource_add_instance($resource) { global $CFG; - - $resource->type = clean_filename($resource->type); // Just to be safe - + require_once("$CFG->dirroot/mod/resource/type/$resource->type/resource.class.php"); $resourceclass = "resource_$resource->type"; $res = new $resourceclass(); @@ -287,9 +229,7 @@ function resource_add_instance($resource) { function resource_update_instance($resource) { global $CFG; - - $resource->type = clean_filename($resource->type); // Just to be safe - + require_once("$CFG->dirroot/mod/resource/type/$resource->type/resource.class.php"); $resourceclass = "resource_$resource->type"; $res = new $resourceclass(); @@ -299,13 +239,11 @@ function resource_update_instance($resource) { function resource_delete_instance($id) { global $CFG; - + if (! $resource = get_record("resource", "id", "$id")) { return false; } - - $resource->type = clean_filename($resource->type); // Just to be safe - + require_once("$CFG->dirroot/mod/resource/type/$resource->type/resource.class.php"); $resourceclass = "resource_$resource->type"; $res = new $resourceclass(); @@ -315,7 +253,7 @@ function resource_delete_instance($id) { function resource_user_outline($course, $user, $mod, $resource) { - if ($logs = get_records_select("log", "userid='$user->id' AND module='resource' + if ($logs = get_records_select("log", "userid='$user->id' AND module='resource' AND action='view' AND info='$resource->id'", "time ASC")) { $numviews = count($logs); @@ -331,9 +269,9 @@ function resource_user_outline($course, $user, $mod, $resource) { function resource_user_complete($course, $user, $mod, $resource) { - global $CFG; + global $CFG, $THEME; - if ($logs = get_records_select("log", "userid='$user->id' AND module='resource' + if ($logs = get_records_select("log", "userid='$user->id' AND module='resource' AND action='view' AND info='$resource->id'", "time ASC")) { $numviews = count($logs); $lastlog = array_pop($logs); @@ -356,7 +294,7 @@ function resource_get_participants($resourceid) { } function resource_get_coursemodule_info($coursemodule) { -/// Given a course_module object, this function returns any +/// Given a course_module object, this function returns any /// "extra" information that may be needed when printing /// this activity in a course listing. /// @@ -369,29 +307,29 @@ function resource_get_coursemodule_info($coursemodule) { if ($resource = get_record("resource", "id", $coursemodule->instance)) { if (!empty($resource->popup)) { - $info->extra = urlencode("target=\"resource$resource->id\" onclick=\"return ". - "openpopup('/mod/resource/view.php?inpopup=true&amp;id=". + $info->extra = urlencode("target=\"resource$resource->id\" onClick=\"return ". + "openpopup('/mod/resource/view.php?inpopup=true&id=". $coursemodule->id. "','resource$resource->id','$resource->popup');\""); } - require_once($CFG->libdir.'/filelib.php'); + require_once("$CFG->dirroot/files/mimetypes.php"); if ($resource->type == 'file') { - $icon = mimeinfo("icon", $resource->reference); + $icon = mimeinfo("icon", $resource->reference); if ($icon != 'unknown.gif') { - $info->icon ="f/$icon"; + $info->icon ="f/$icon"; } else { - $info->icon ="f/web.gif"; + $info->icon ="f/web.gif"; } } else if ($resource->type == 'directory') { - $info->icon ="f/folder.gif"; + $info->icon ="f/folder.gif"; } } return $info; } - + function resource_fetch_remote_file ($cm, $url, $headers = "" ) { /// Snoopy is an HTTP client in PHP @@ -400,7 +338,7 @@ function resource_fetch_remote_file ($cm, $url, $headers = "" ) { require_once("$CFG->libdir/snoopy/Snoopy.class.inc"); $client = new Snoopy(); - $ua = 'Moodle/'. $CFG->release . ' (+http://moodle.org'; + $ua = 'Moodle/'. $CFG->release . ' (+http://moodle.org'; if ( $CFG->resource_usecache ) { $ua = $ua . ')'; } else { @@ -412,7 +350,7 @@ function resource_fetch_remote_file ($cm, $url, $headers = "" ) { if (is_array($headers) ) { $client->rawheaders = $headers; } - + @$client->fetch($url); if ( $client->status >= 200 && $client->status < 300 ) { $tags = array("A" => "href=", @@ -422,9 +360,9 @@ function resource_fetch_remote_file ($cm, $url, $headers = "" ) { "FRAME" => "src=", "IFRAME" => "src=", "FORM" => "action="); - + foreach ($tags as $tag => $key) { - $prefix = "fetch.php?id=$cm->id&amp;url="; + $prefix = "fetch.php?id=$cm->id&url="; if ( $tag == "IMG" or $tag == "LINK" or $tag == "FORM") { $prefix = ""; } @@ -455,27 +393,27 @@ function resource_redirect_tags($text, $url, $tagtoparse, $keytoparse,$prefix = } else { $root = $url; } - if ( $root == "http://" or + if ( $root == "http://" or $root == "https://") { $root = $url; } if ( substr($root,strlen($root)-1) == '/' ) { $root = substr($root,0,-1); } - + $mainroot = $root; $lastslash = strrpos($mainroot,"/"); while ( $lastslash > 9) { $mainroot = substr($mainroot,0,$lastslash); - + $lastslash = strrpos($mainroot,"/"); } - $regex = "/<$tagtoparse (.+?)>/is"; - $count = preg_match_all($regex, $text, $hrefs); + $regex = "/<$tagtoparse (.+?)>/is"; + $count = preg_match_all($regex, $text, $hrefs); for ( $i = 0; $i < $count; $i++) { $tag = $hrefs[1][$i]; - + $poshref = strpos(strtolower($tag),strtolower($keytoparse)); $start = $poshref + strlen($keytoparse); $left = substr($tag,0,$start); @@ -514,7 +452,7 @@ function resource_redirect_tags($text, $url, $tagtoparse, $keytoparse,$prefix = if ( $valid ) { if ( $finalurl[0] == "/" ) { $finalurl = $mainroot . $finalurl; - } elseif ( strtolower(substr($finalurl,0,7)) != "http://" and + } elseif ( strtolower(substr($finalurl,0,7)) != "http://" and strtolower(substr($finalurl,0,8)) != "https://") { if ( $finalurl[0] == "/") { $finalurl = $mainroot . $finalurl; @@ -522,7 +460,7 @@ function resource_redirect_tags($text, $url, $tagtoparse, $keytoparse,$prefix = $finalurl = "$root/$finalurl"; } } - + $text = str_replace($tag,"$left$prefix$finalurl$right",$text); } } diff --git a/mod/resource/restorelib.php b/mod/resource/restorelib.php index 6ccdc6b25c6..15c2d1f5b32 100644 --- a/mod/resource/restorelib.php +++ b/mod/resource/restorelib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //resource mods @@ -82,7 +82,7 @@ $newid = insert_record ("resource",$resource); //Do some output - echo "<li>".get_string("modulename","resource")." \"".format_string(stripslashes($resource->name),true)."\"</li>"; + echo "<ul><li>".get_string("modulename","resource")." \"".$resource->name."\"<br>"; backup_flush(300); if ($newid) { @@ -93,6 +93,10 @@ } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -175,48 +179,12 @@ $status = true; echo "<ul>"; - - //ASSIGNMENT: Decode every ASSIGNMENT (description) in the coure - - //Check we are restoring assignments - if ($restore->mods['assignment']->restore == 1) { - echo "<li>".get_string("from")." ".get_string("modulenameplural","assignment").'</li>'; - //Get all course assignments - if ($assignments = get_records_sql ("SELECT a.id, a.description - FROM {$CFG->prefix}assignment a - WHERE a.course = $restore->course_id")) { - //Iterate over each assignment->description - $i = 0; //Counter to send some output to the browser to avoid timeouts - foreach ($assignments as $assignment) { - //Increment counter - $i++; - $content = $assignment->description; - $result = resource_decode_content_links($content,$restore); - if ($result != $content) { - //Update record - $assignment->description = addslashes($result); - $status = update_record("assignment",$assignment); - if ($CFG->debug>7) { - echo "<br><hr>".$content."<br>changed to</br>".$result."<hr><br>"; - } - } - //Do some output - if (($i+1) % 5 == 0) { - echo "."; - if (($i+1) % 100 == 0) { - echo "<br>"; - } - backup_flush(300); - } - } - } - } //FORUM: Decode every POST (message) in the coure //Check we are restoring forums if ($restore->mods['forum']->restore == 1) { - echo "<li>".get_string("from")." ".get_string("modulenameplural","forum").'</li>'; + echo "<li>".get_string("from")." ".get_string("modulenameplural","forum"); //Get all course posts if ($posts = get_records_sql ("SELECT p.id, p.message FROM {$CFG->prefix}forum_posts p, @@ -235,14 +203,14 @@ $post->message = addslashes($result); $status = update_record("forum_posts",$post); if ($CFG->debug>7) { - echo "<br /><hr />".$content."<br />changed to</br>".$result."<hr /><br />"; + echo "<br><hr>".$content."<br>changed to</br>".$result."<hr><br>"; } } //Do some output if (($i+1) % 5 == 0) { echo "."; if (($i+1) % 100 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -269,44 +237,6 @@ //Update record $forum->intro = addslashes($result); $status = update_record("forum",$forum); - if ($CFG->debug>7) { - echo "<br /><hr />".$content."<br />changed to</br>".$result."<hr /><br />"; - } - } - //Do some output - if (($i+1) % 5 == 0) { - echo "."; - if (($i+1) % 100 == 0) { - echo "<br />"; - } - backup_flush(300); - } - } - } - } - - //LESSON: Decode every LESSON PAGE (contents) in the coure - - //Check we are restoring lessons - if ($restore->mods['lesson']->restore == 1) { - echo "<li>".get_string("from")." ".get_string("modulenameplural","lesson").'</li>'; - //Get all course lesson pages - if ($pages = get_records_sql ("SELECT p.id, p.contents - FROM {$CFG->prefix}lesson l, - {$CFG->prefix}lesson_pages p - WHERE l.course = $restore->course_id AND - p.lessonid = l.id")) { - //Iterate over each lesson page - $i = 0; //Counter to send some output to the browser to avoid timeouts - foreach ($pages as $page) { - //Increment counter - $i++; - $content = $page->contents; - $result = resource_decode_content_links($content,$restore); - if ($result != $content) { - //Update record - $page->contents = addslashes($result); - $status = update_record("lesson_pages",$page); if ($CFG->debug>7) { echo "<br><hr>".$content."<br>changed to</br>".$result."<hr><br>"; } @@ -327,7 +257,7 @@ //Check we are restoring resources if ($restore->mods['resource']->restore == 1) { - echo "<li>".get_string("from")." ".get_string("modulenameplural","resource").'</li>'; + echo "<li>".get_string("from")." ".get_string("modulenameplural","resource"); //Get all course resources if ($resources = get_records_sql ("SELECT r.id, r.alltext FROM {$CFG->prefix}resource r @@ -344,14 +274,14 @@ $resource->alltext = addslashes($result); $status = update_record("resource",$resource); if ($CFG->debug>7) { - echo "<br /><hr />".$content."<br />changed to</br>".$result."<hr /><br />"; + echo "<br><hr>".$content."<br>changed to</br>".$result."<hr><br>"; } } //Do some output if (($i+1) % 5 == 0) { echo "."; if (($i+1) % 100 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -379,14 +309,14 @@ $resource->summary = addslashes($result); $status = update_record("resource",$resource); if ($CFG->debug>7) { - echo "<br /><hr />".$content."<br />changed to</br>".$result."<hr /><br />"; + echo "<br><hr>".$content."<br>changed to</br>".$result."<hr><br>"; } } //Do some output if (($i+1) % 5 == 0) { echo "."; if (($i+1) % 100 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -398,46 +328,6 @@ return $status; } - //This function converts texts in FORMAT_WIKI to FORMAT_MARKDOWN for - //some texts in the module - function resource_restore_wiki2markdown ($restore) { - - global $CFG; - - $status = true; - - //Convert resource->alltext - if ($records = get_records_sql ("SELECT r.id, r.alltext, r.options - FROM {$CFG->prefix}resource r, - {$CFG->prefix}backup_ids b - WHERE r.course = $restore->course_id AND - options = ".FORMAT_WIKI. " AND - b.backup_code = $restore->backup_unique_code AND - b.table_name = 'resource' AND - b.new_id = r.id")) { - foreach ($records as $record) { - //Rebuild wiki links - $record->alltext = restore_decode_wiki_content($record->alltext, $restore); - //Convert to Markdown - $wtm = new WikiToMarkdown(); - $record->alltext = $wtm->convert($record->alltext, $restore->course_id); - $record->options = FORMAT_MARKDOWN; - $status = update_record('resource', addslashes_object($record)); - //Do some output - $i++; - if (($i+1) % 1 == 0) { - echo "."; - if (($i+1) % 20 == 0) { - echo "<br />"; - } - backup_flush(300); - } - } - - } - return $status; - } - //This function returns a log record with all the necessay transformations //done. It's used by restore_log_module() to restore modules log. @@ -485,7 +375,7 @@ $status = true; break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored<br />"; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>"; //Debug break; } diff --git a/mod/resource/type/common.html b/mod/resource/type/common.html index 34da88273a3..636ca11636b 100644 --- a/mod/resource/type/common.html +++ b/mod/resource/type/common.html @@ -1,31 +1,32 @@ <form name="form" method="post" action="<?php echo "$CFG->wwwroot/course/mod.php" ?>"> -<input type="hidden" name="type" value="<?php p($form->type) ?>" /> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> +<input type="hidden" name="type" value="<?php p($form->type) ?>"> +<input type="hidden" name="course" value="<?php p($form->course) ?>"> +<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name="section" value="<?php p($form->section) ?>"> +<input type="hidden" name="module" value="<?php p($form->module) ?>"> +<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>"> +<input type="hidden" name="instance" value="<?php p($form->instance) ?>"> +<input type="hidden" name="mode" value="<?php p($form->mode) ?>"> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("name") ?>:</b></td> +<table cellpadding=5> +<tr valign=top> + <td align=right><p><b><?php print_string("name") ?>:</b></p></td> <td> - <input type="text" name="name" size="65" value="<?php p($form->name) ?>" alt="<?php print_string("name") ?>" /> + <input type="text" name="name" size=65 value="<?php p($form->name) ?>"> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("summary") ?>:</b><br /> +<tr valign=top> + <td align=right><p><b><?php print_string("summary") ?>:</b></p> + <font size="1"> <?php helpbutton("summary", get_string("summary"), "resource", true, true); ?> <br /> + </font> </td> <td> - <?php print_textarea($usehtmleditor, 10, 65, 680, 400, "summary", $form->summary); ?> + <?php print_textarea($usehtmleditor, 10, 50, 680, 400, "summary", $form->summary); ?> </td> </tr> diff --git a/mod/resource/type/common_end.html b/mod/resource/type/common_end.html index 7c21d5d1042..d0ad1131de5 100644 --- a/mod/resource/type/common_end.html +++ b/mod/resource/type/common_end.html @@ -1,5 +1,5 @@ </table> <div align="center"> -<input type="submit" value="<?php print_string("savechanges") ?>" /> +<input type="submit" value="<?php print_string("savechanges") ?>"> </div> </form> diff --git a/mod/resource/type/directory/directory.html b/mod/resource/type/directory/directory.html index 64e3140ed0d..0d7a79b4715 100644 --- a/mod/resource/type/directory/directory.html +++ b/mod/resource/type/directory/directory.html @@ -1,16 +1,15 @@ <tr valign="top"> - <td align="right" nowrap="nowrap"> - <b><?php print_string("resourcetypedirectory", "resource") ?>:</b> + <td align="right" nowrap> + <p><b><?php print_string("resourcetypedirectory", "resource") ?>:</b></p> </td> <td> <?php choose_from_menu($dirs, "reference", $form->reference, get_string("maindirectory", "resource"), '', '') ?> </td> </tr> -<tr valign="top"> - <td align="right" nowrap="nowrap">&nbsp; +<tr valign="top"> <td align="right" nowrap>&nbsp; </td> <td> <p><?php print_string("directoryinfo", "resource") ?></p> </td> </tr> -<?php print_visible_setting($form); ?> + diff --git a/mod/resource/type/directory/resource.class.php b/mod/resource/type/directory/resource.class.php index 1b42667f067..379699a57eb 100644 --- a/mod/resource/type/directory/resource.class.php +++ b/mod/resource/type/directory/resource.class.php @@ -8,34 +8,36 @@ function resource_directory($cmid=0) { function display() { - global $CFG; + global $CFG, $THEME; -/// Set up generic stuff first, including checking for access - parent::display(); + $strresource = get_string("modulename", "resource"); + $strresources = get_string("modulenameplural", "resource"); + $strlastmodified = get_string("lastmodified"); -/// Set up some shorthand variables - $cm = $this->cm; - $course = $this->course; - $resource = $this->resource; + $course = $this->course; // Shortcut + $resource = $this->resource; // Shortcut + + if ($course->category) { + require_login($course->id); + $navigation = "<a target=\"{$CFG->framename}\" href=\"../../course/view.php?id={$course->id}\">{$course->shortname}</a> -> + <a target=\"{$CFG->framename}\" href=\"index.php?id={$course->id}\">$strresources</a> ->"; + } else { + $navigation = "<a target=\"{$CFG->framename}\" href=\"index.php?id={$course->id}\">$strresources</a> ->"; } + + require_once("../../files/mimetypes.php"); - require_once($CFG->libdir.'/filelib.php'); - $subdir = isset($_GET['subdir']) ? $_GET['subdir'] : ''; - add_to_log($course->id, "resource", "view", "view.php?id={$cm->id}", $resource->id, $cm->id); - + add_to_log($course->id, "resource", "view", "view.php?id={$this->cm->id}", $resource->id, $this->cm->id); if ($resource->reference) { - if (detect_munged_arguments($resource->reference, 0)) { - error("The filename contains illegal characters!"); - } $relativepath = "{$course->id}/{$resource->reference}"; } else { $relativepath = "{$course->id}"; } if ($subdir) { - if (detect_munged_arguments($subdir, 0)) { + if (detect_munged_arguments($subdir)) { error("The value for 'subdir' contains illegal characters!"); } $relativepath = "$relativepath$subdir"; @@ -44,30 +46,30 @@ function display() { array_shift($subs); $countsubs = count($subs); $count = 0; - $subnav = "<a href=\"view.php?id={$cm->id}\">".format_string($resource->name,true)."</a>"; + $subnav = "<a href=\"view.php?id={$this->cm->id}\">{$resource->name}</a>"; $backsub = ''; foreach ($subs as $sub) { $count++; if ($count < $countsubs) { $backsub .= "/$sub"; - $subnav .= " -> <a href=\"view.php?id={$cm->id}&amp;subdir=$backsub\">$sub</a>"; + $subnav .= " -> <a href=\"view.php?id={$this->cm->id}&subdir=$backsub\">$sub</a>"; } else { $subnav .= " -> $sub"; } } } else { - $subnav = format_string($resource->name); + $subnav = $resource->name; } - $pagetitle = strip_tags($course->shortname.': '.format_string($resource->name)); + $pagetitle = strip_tags($course->shortname.': '.$resource->name); - print_header($pagetitle, $course->fullname, "$this->navigation $subnav", - "", "", true, update_module_button($cm->id, $course->id, $this->strresource), - navmenu($course, $cm)); + print_header($pagetitle, $course->fullname, "$navigation $subnav", + "", "", true, update_module_button($this->cm->id, $course->id, $strresource), + navmenu($course, $this->cm)); if (isteacheredit($course->id)) { - echo "<div align=\"right\"><img src=\"$CFG->pixpath/i/files.gif\" height=\"16\" width=\"16\" alt=\"\" />&nbsp". - "<a href=\"$CFG->wwwroot/files/index.php?id={$course->id}&amp;wdir=/{$resource->reference}$subdir\">". + echo "<div align=\"right\"><img src=\"$CFG->pixpath/i/files.gif\" height=16 width=16 alt=\"\">&nbsp". + "<a href=\"$CFG->wwwroot/files/index.php?id={$course->id}&wdir=/{$resource->reference}$subdir\">". get_string("editfiles")."...</a></div>"; } @@ -86,17 +88,17 @@ function display() { exit; } - print_simple_box_start("center", "", "", '0' ); + print_simple_box_start("center", "", "$THEME->cellcontent", '0' ); $strftime = get_string('strftimedatetime'); $strname = get_string("name"); $strsize = get_string("size"); $strmodified = get_string("modified"); - echo '<table cellpadding="4" cellspacing="1" class="files">'; - echo "<tr><th colspan=\"2\" class=\"header name\">$strname</th>". - "<th align=\"right\" colspan=\"2\" class=\"header size\">$strsize</th>". - "<th align=\"right\" class=\"header date\">$strmodified</th>". + echo '<table cellpadding="4" cellspacing="1">'; + echo "<tr><th colspan=\"2\">$strname</th>". + "<th align=\"right\" colspan=\"2\">$strsize</th>". + "<th align=\"right\">$strmodified</th>". "</tr>"; foreach ($files as $file) { if (is_dir("$CFG->dataroot/$relativepath/$file")) { // Must be a directory @@ -115,27 +117,24 @@ function display() { $filesize = display_size(filesize("$CFG->dataroot/$relativepath/$file")); } + echo '<tr>'; + echo '<td>'; + echo "<img src=\"$CFG->pixpath/f/$icon\" width=\"16\" height=\"16\">"; + echo '</td>'; + echo '<td nowrap="nowrap"><p>'; if ($icon == 'folder.gif') { - echo '<tr class="folder"><td>'; - echo "<img src=\"$CFG->pixpath/f/$icon\" width=\"16\" height=\"16\" alt=\"\"/>"; - echo '</td>'; - echo '<td nowrap="nowrap" class="name">'; - echo "<a href=\"view.php?id={$cm->id}&amp;subdir=$subdir/$file\">$file</a>"; + echo "<a href=\"view.php?id={$this->cm->id}&subdir=$subdir/$file\">$file</a>"; } else { - echo '<tr class="file"><td>'; - echo "<img src=\"$CFG->pixpath/f/$icon\" width=\"16\" height=\"16\" alt=\"\"/>"; - echo '</td>'; - echo '<td nowrap="nowrap" class="name">'; link_to_popup_window($relativeurl, "resourcedirectory{$resource->id}", "$file", 450, 600, ''); } - echo '</td>'; + echo '</p></td>'; echo '<td>&nbsp;</td>'; - echo '<td align="right" nowrap="nowrap" class="size">'; + echo '<td align="right" nowrap="nowrap"><p><font size="-1">'; echo $filesize; - echo '</td>'; - echo '<td align="right" nowrap="nowrap" class="date">'; + echo '</font></p></td>'; + echo '<td align="right" nowrap="nowrap"><p><font size="-1">'; echo userdate(filectime("$CFG->dataroot/$relativepath/$file"), $strftime); - echo '</td>'; + echo '</font></p></td>'; echo '</tr>'; } echo '</table>'; diff --git a/mod/resource/type/file/file.html b/mod/resource/type/file/file.html index 30e3a6b58b1..d04a91753c0 100644 --- a/mod/resource/type/file/file.html +++ b/mod/resource/type/file/file.html @@ -1,157 +1,105 @@ +<tr><td colspan="2"><hr /></td></tr> + <tr valign="top"> - <td align="right" nowrap="nowrap"> - - -<script language="javascript" type="text/javascript"> - function showhide (id, set) { - divobj = document.getElementById(id); - butobj = document.getElementById(id+'button'); - prefobj = document.getElementById(id+'pref'); - if (set == true) { - if (prefobj.value == '1') { - divobj.style.display = 'block'; - butobj.value = '<?php print_string("hidesettings") ?>'; - } else { - divobj.style.display = 'none'; - butobj.value = '<?php print_string("showsettings") ?>...'; - } - } else { - if (prefobj.value == '1') { - divobj.style.display = 'none'; - butobj.value = '<?php print_string("showsettings") ?>...'; - prefobj.value = '0'; - } else { - divobj.style.display = 'block'; - butobj.value = '<?php print_string("hidesettings") ?>'; - prefobj.value = '1'; - } - } - } -</script> - - - <b><?php echo $strfilename ?>:</b> + <td align="right" nowrap> + <p><b><?php echo $strfilename ?>:</b></p> </td> <td> <?php - echo "<input type=\"text\" name=\"reference\" size=\"90\" value=\"$form->reference\" alt=\"reference\" /><br />"; - button_to_popup_window ("/files/index.php?id=$form->course&amp;choose=form.reference", "coursefiles", $strchooseafile, 500, 750, $strchooseafile); + echo "<input name=\"reference\" size=\"90\" value=\"$form->reference\"><br />"; + button_to_popup_window ("/mod/resource/coursefiles.php?id=$form->course", "coursefiles", $strchooseafile, 500, 750, $strchooseafile); echo "<input type=\"button\" name=\"searchbutton\" value=\"$strsearch ...\" ". - "onclick=\"return window.open('$CFG->resource_websearch', 'websearch', 'menubar=1,location=1,directories=1,toolbar=1,scrollbars,resizable,width=800,height=600');\" />\n"; - if ($CFG->resource_allowlocalfiles) { - button_to_popup_window ("/mod/resource/type/file/localfile.php?choose=form.reference", - "localfiles", get_string('localfilechoose', 'resource'), 400, 600, - get_string('localfilechoose', 'resource')); - } + "onClick=\"return window.open('$CFG->resource_websearch', 'websearch', 'menubar=1,location=1,directories=1,toolbar=1,scrollbars,resizable,width=800,height=600');\">\n"; ?> </td> </tr> <tr><td colspan="2"><hr /></td></tr> -<tr> - <td align="right"><b><?php print_string("display", "resource") ?>:</b></td> - <td> - <input type="button" value="hide settings" id="windowsettingsbutton" onclick="javascript: return showhide('windowsettings');" /> - <input type="hidden" name="windowsettingspref" id="windowsettingspref" - value="<?php echo get_user_preferences('resource_windowsettingspref', $CFG->resource_windowsettings); ?>" /> - <?php helpbutton("window", get_string("display", "resource"), "resource", true) ?> - </td> -</tr> -<tr><td colspan="2"> - - <div id="windowsettings"> - -<table align="center"> - - <tr valign="top"> + <td align="right" nowrap> + <p><b><?php print_string("pagewindow", "resource") ?>:</b></p> + </td> - <td colspan="2"> - <script type="text/javascript"> + <td> + <script> var popupitems = [<?php echo $popupoptions; ?>]; var frameitem = [<?php echo $frameoption; ?>]; var allitems = [<?php echo $alloptions; ?>]; </script> - <input type="radio" name="windowpopup" value="0" alt="<?php print_string('pagewindow', 'resource') ?>" <?php echo ($windowtype != "popup") ? "checked=\"checked\"" : "" ?> - onclick="lockoptions('form', 'windowpopup[0]', frameitem); - return lockoptions('form', 'windowpopup[1]', popupitems);" /> - <b title="<?php print_string("pagedisplay", "resource") ?>"><?php print_string("pagewindow", "resource") ?></b> - <blockquote> - <input type="hidden" name="hframepage" value="0" /> - <input type="checkbox" name="framepage" value="1" <?php echo ($form->options == "frame") ? "checked=\"checked\"" : "" ?> alt="<?php print_string('frameifpossible', 'resource') ?>" /> + <input type="radio" name="windowpopup" value=0 <?php echo ($windowtype != "popup") ? "checked" : "" ?> + onClick="lockoptions('form', 'windowpopup[0]', frameitem); + return lockoptions('form', 'windowpopup[1]', popupitems);"> + <?php print_string("pagedisplay", "resource") ?> + <ul> + <input type="hidden" name="hframepage" value=0> + <input type="checkbox" name="framepage" value=1 <?php echo ($form->options == "frame") ? "checked" : "" ?> > <?php print_string("frameifpossible", "resource") ?> - </blockquote> + </ul> </td> </tr> <tr valign="top"> + <td align="right" nowrap> + <p><b><?php p($strnewwindow) ?>:</b></p> + </td> - <td colspan="2"> - <input name="windowpopup" type="radio" value="1" alt="<?php p($strnewwindow)?>" <?php echo ($windowtype == "popup") ? "checked=\"checked\"" : "" ?> + <td> + <input name="windowpopup" type=radio value=1 <?php echo ($windowtype == "popup") ? "checked" : "" ?> onclick="lockoptions('form', 'windowpopup[0]', frameitem); - return lockoptions('form', 'windowpopup[1]', popupitems);" /> - <b title="<?php p($strnewwindowopen) ?>"><?php p($strnewwindow) ?></b> - <blockquote> + return lockoptions('form', 'windowpopup[1]', popupitems);"> + <?php p($strnewwindowopen) ?> + <ul> <?php foreach ($window as $name => $value) { if ($name == "height" or $name == "width") { continue; } - echo "<input name=\"h$name\" type=\"hidden\" value=\"0\" />"; - echo "<input name=\"$name\" type=\"checkbox\" value=\"1\" ".$window->$name." alt=\"$name\" />"; + echo "<input name=\"h$name\" type=hidden value=0>"; + echo "<input name=\"$name\" type=checkbox value=1 ".$window->$name.">"; $stringname = "str$name"; echo $$stringname."<br />"; } ?> - <input name="hwidth" type="hidden" value="0" /> - <input name="width" type="text" size="4" value="<?php p($window->width) ?>" alt="<?php p($strwidth) ?>" /> + <input name="hwidth" type=hidden value=0> + <input name="width" type=text size=4 value="<?php p($window->width) ?>"> <?php p($strwidth) ?><br /> - <input name="hheight" type="hidden" value="0" /> - <input name="height" type="text" size="4" value="<?php p($window->height) ?>" alt="<?php p($strheight) ?>" /> + <input name="hheight" type=hidden value=0> + <input name="height" type=text size=4 value="<?php p($window->height) ?>"> <?php p($strheight) ?><br /> <?php if ($windowtype == "page") { - echo "<script type=\"text/javascript\">"; + echo "<script>"; echo "lockoptions('form','windowpopup[1]', popupitems);"; echo "</script>"; } else { - echo "<script type=\"text/javascript\">"; + echo "<script>"; echo "lockoptions('form','windowpopup[0]', frameitem);"; echo "</script>"; } ?> - </blockquote> + </ul> </td> </tr> -</table> - - </div> - -</td></tr> +<tr><td colspan="2"><hr /></td></tr> <tr> - <td align="right"><b><?php print_string("parameters", "resource") ?>:</b></td> - <td> - <input type="button" value="hide settings" id="parametersettingsbutton" onclick="javascript: return showhide('parametersettings');" /> - <input type="hidden" name="parametersettingspref" id="parametersettingspref" - value="<?php echo get_user_preferences('resource_parametersettingspref', $CFG->resource_parametersettings); ?>" /> - <?php helpbutton("parameters", get_string("parameters", "resource"), "resource", true) ?> + <td valign="top" align="right"> + <p><b><?php print_string("parameters", "resource") ?>:</b></p> + <?php helpbutton("parameters", get_string("parameters", "resource"), "resource", true) ?> + </td> -</tr> -<tr><td colspan="2"> - - <div id="parametersettings"> - -<table align="center"> - + <td valign="top" align="left"> + + <table> + <tr> - <td align="center"><?php print_string("parameter", "resource") ?></td> - <td align="center"><?php print_string("variablename", "resource") ?></td> + <td align="center"><p><?php print_string("parameter", "resource") ?></p></td> + <td align="center"><p><?php print_string("variablename", "resource") ?></p></td> </tr> <?php @@ -160,7 +108,7 @@ for ($i=0; $i < $this->maxparameters; $i++) { echo "<tr>\n"; echo "<td valign=\"top\">\n"; echo "<select name=\"parameter$i\">\n"; - echo "<option value=\"-\">-- ".get_string('chooseparameter', 'resource')." --</option>\n"; + echo "<option value=\"-\">-- Choose Parameter --</option>\n"; foreach ($this->parameters as $field=>$fieldarr) { if ($fieldarr['value'] === "optgroup") { echo "<optgroup label=\"{$fieldarr['langstr']}\">\n"; @@ -169,33 +117,24 @@ for ($i=0; $i < $this->maxparameters; $i++) { } else { echo "<option value=\"$field\""; if ($alltextfield[$i]['parameter'] == $field) { - echo " selected=\"selected\""; + echo " selected"; } echo ">{$fieldarr['langstr']}</option>\n"; } } - echo "</select>\n"; echo "</td>\n"; echo "<td valign=\"top\">\n"; - echo "<input type=\"text\" name=\"parse$i\" value=\"{$alltextfield[$i]['parse']}\" alt=\"parameter$i\"/>\n"; + echo "<input type=\"text\" name=\"parse$i\" value=\"{$alltextfield[$i]['parse']}\">\n"; echo "</td>\n"; echo "</tr>\n"; } ?> + </table> + </td> +</tr> -</table> - - </div> +<tr><td colspan="2"><hr /></td></tr> -<script language="javascript" type="text/javascript"> - showhide('parametersettings', true); - showhide('windowsettings', true); -</script> - - -</td></tr> - -<?php print_visible_setting($form); ?> diff --git a/mod/resource/type/file/localfile.php b/mod/resource/type/file/localfile.php deleted file mode 100644 index 6dd63e2d8ce..00000000000 --- a/mod/resource/type/file/localfile.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php // $Id$ - - require('../../../../config.php'); - require('../../lib.php'); - - $choose = required_param('choose'); - - require_login(); - - if (!$CFG->resource_allowlocalfiles) { - error('You cannot access this script'); - } - - print_header(get_string('localfilechoose', 'resource')); - - print_simple_box(get_string('localfileinfo', 'resource'), 'center'); - - $chooseparts = explode('.', $choose); - - ?> - <script language="javascript" type="text/javascript"> - <!-- - function set_value(txt) { - if (txt.indexOf('/') > -1) { - path = txt.substring(txt.indexOf('/'),txt.length); - } else if (txt.indexOf('\\') > -1) { - path = txt.substring(txt.indexOf('\\'),txt.length); - } else { - window.close(); - } - opener.document.forms['<?php echo $chooseparts[0]."'].".$chooseparts[1] ?>.value = '<?php p(RESOURCE_LOCALPATH) ?>'+path; - window.close(); - } - --> - </script> - - <br /> - <div align="center" class="form"> - <form name="myform"> - <input type="file" size="60" name="myfile"><br /> - <input type="button" value="<?php print_string('localfileselect','resource') ?>" - onClick="return set_value(document.myform.myfile.value)"> - <input type="button" value="<?php print_string('cancel') ?>" - onClick="window.close()"> - </form> - </div> - - </body> - </html> diff --git a/mod/resource/type/file/localpath.php b/mod/resource/type/file/localpath.php deleted file mode 100644 index ed177b38de2..00000000000 --- a/mod/resource/type/file/localpath.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php // $Id$ - - require('../../../../config.php'); - require('../../lib.php'); - - $pathname = optional_param('pathname', ''); - - if ($pathname) { - if (confirm_sesskey()) { - set_user_preference('resource_localpath', $pathname); - } - ?> - <script language="javascript" type="text/javascript"> - <!-- - window.close(); - --> - </script> - <?php - exit; - } - - print_header(get_string('localfilechoose', 'resource')); - - print_simple_box(get_string('localfilepath', 'resource', $CFG->wwwroot.'/user/edit.php?course='.SITEID), 'center'); - - ?> - <script language="javascript" type="text/javascript"> - <!-- - function set_value(txt) { - if (txt.indexOf('/') > -1) { - txt = txt.substring(0,txt.lastIndexOf('/')); - } else if (txt.indexOf('\\') > -1) { - txt = txt.substring(0,txt.lastIndexOf('\\')); - } - document.myform.pathname.value = txt; - document.myform.submit(); - } - --> - </script> - - <br /> - <div align="center" class="form"> - <form name="myform" action="localpath.php" method="post"> - <input type="hidden" name="sesskey" value="<?php echo sesskey(); ?>"> - <input type="hidden" name="pathname" value=""> - <input type="file" size="60" name="myfile"><br /> - <input type="button" value="<?php print_string('localfileselect','resource') ?>" - onClick="return set_value(document.myform.myfile.value)"> - <input type="button" value="<?php print_string('cancel') ?>" - onClick="window.close()"> - </form> - </div> - - </body> - </html> diff --git a/mod/resource/type/file/resource.class.php b/mod/resource/type/file/resource.class.php index 218d2c535ed..7fb23440597 100644 --- a/mod/resource/type/file/resource.class.php +++ b/mod/resource/type/file/resource.class.php @@ -26,29 +26,22 @@ var $maxparameters = 5; */ function set_parameters() { global $USER, $CFG; - + if (! empty($this->course->lang)) { $CFG->courselang = $this->course->lang; } - - if (empty($USER->id)) { // No need to set up parameters - $this->parameters = array(); - return; - } - $site = get_site(); + $this->parameters = array( 'label1' => array('langstr' => get_string('user'), 'value' => 'optgroup'), - + 'userid' => array('langstr' => 'id', 'value' => $USER->id), 'userusername' => array('langstr' => get_string('username'), 'value' => $USER->username), - 'userpassword' => array('langstr' => get_string('password'), - 'value' => $USER->password), 'useridnumber' => array('langstr' => get_string('idnumber'), 'value' => $USER->idnumber), 'userfirstname' => array('langstr' => get_string('firstname'), @@ -61,10 +54,8 @@ function set_parameters() { 'value' => $USER->email), 'usericq' => array('langstr' => get_string('icqnumber'), 'value' => $USER->icq), - 'userphone1' => array('langstr' => get_string('phone').' 1', + 'userphone1' => array('langstr' => get_string('phone'), 'value' => $USER->phone1), - 'userphone2' => array('langstr' => get_string('phone').' 2', - 'value' => $USER->phone2), 'userinstitution' => array('langstr' => get_string('institution'), 'value' => $USER->institution), 'userdepartment' => array('langstr' => get_string('department'), @@ -74,7 +65,7 @@ function set_parameters() { 'usercity' => array('langstr' => get_string('city'), 'value' => $USER->city), 'usertimezone' => array('langstr' => get_string('timezone'), - 'value' => get_user_timezone_offset()), + 'value' => get_user_timezone()), 'userurl' => array('langstr' => get_string('webpage'), 'value' => $USER->url), @@ -82,7 +73,7 @@ function set_parameters() { 'value' =>'/optgroup'), 'label3' => array('langstr' => get_string('course'), 'value' => 'optgroup'), - + 'courseid' => array('langstr' => 'id', 'value' => $this->course->id), 'coursefullname' => array('langstr' => get_string('fullname'), @@ -103,27 +94,25 @@ function set_parameters() { 'value' => $this->course->student), 'coursestudents' => array('langstr' => get_string('wordforstudents'), 'value' => $this->course->students), - + 'label4' => array('langstr' => "", 'value' =>'/optgroup'), 'label5' => array('langstr' => get_string('miscellaneous'), 'value' => 'optgroup'), - + 'lang' => array('langstr' => get_string('preferredlanguage'), 'value' => current_language()), 'sitename' => array('langstr' => get_string('fullsitename'), 'value' => $site->fullname), - 'serverurl' => array('langstr' => get_string('serverurl', 'resource', $CFG), - 'value' => $CFG->wwwroot), 'currenttime' => array('langstr' => get_string('time'), 'value' => time()), 'encryptedcode' => array('langstr' => get_string('encryptedcode'), - 'value' => $this->set_encrypted_parameter()), - + 'value' => md5($_SERVER['REMOTE_ADDR'].$CFG->resource_secretphrase)), + 'label6' => array('langstr' => "", 'value' =>'/optgroup') ); - + } @@ -144,7 +133,7 @@ function add_instance($resource) { $optionlist[] = $resource->$parametername."=".$resource->$parsename; } } - + $resource->alltext = implode(',', $optionlist); return parent::add_instance($resource); @@ -160,7 +149,7 @@ function add_instance($resource) { */ function update_instance($resource) { $optionlist = array(); - + for ($i = 0; $i < $this->maxparameters; $i++) { $parametername = "parameter$i"; $parsename = "parse$i"; @@ -168,7 +157,7 @@ function update_instance($resource) { $optionlist[] = $resource->$parametername."=".$resource->$parsename; } } - + $resource->alltext = implode(',', $optionlist); return parent::update_instance($resource); @@ -182,21 +171,30 @@ function update_instance($resource) { * Output depends on type of file resource. * * @param CFG global object +* @param THEME global object */ function display() { global $CFG, $THEME; -/// Set up generic stuff first, including checking for access - parent::display(); - -/// Set up some shorthand variables - $cm = $this->cm; - $course = $this->course; - $resource = $this->resource; - - $this->set_parameters(); // set the parameters array + $course = $this->course; // shortcut + $resource = $this->resource; // shortcut + + $strresource = get_string("modulename", "resource"); + $strresources = get_string("modulenameplural", "resource"); + $strlastmodified = get_string("lastmodified"); + + if ($course->category) { + require_login($course->id); + $navigation = "<a target=\"{$CFG->framename}\" href=\"../../course/view.php?id={$course->id}\">{$course->shortname}</a> -> + <a target=\"{$CFG->framename}\" href=\"index.php?id={$course->id}\">$strresources</a> ->"; + } else { + $navigation = "<a target=\"{$CFG->framename}\" href=\"index.php?id={$course->id}\">$strresources</a> ->"; + } + + + /////////////////////////////////////////////// /// Possible display modes are: @@ -204,30 +202,30 @@ function display() { /// File displayed embedded in a normal page /// File displayed in a popup window /// File displayed emebedded in a popup window - + /// First, find out what sort of file we are dealing with. - require_once($CFG->libdir.'/filelib.php'); + require_once("$CFG->dirroot/files/mimetypes.php"); $querystring = ''; $resourcetype = ''; $embedded = false; $mimetype = mimeinfo("type", $resource->reference); - $pagetitle = strip_tags($course->shortname.': '.format_string($resource->name)); + $pagetitle = strip_tags($course->shortname.': '.$resource->name); if ($resource->options != "frame") { if (in_array($mimetype, array('image/gif','image/jpeg','image/png'))) { // It's an image $resourcetype = "image"; $embedded = true; - + } else if ($mimetype == "audio/mp3") { // It's an MP3 audio file $resourcetype = "mp3"; $embedded = true; - + } else if (substr($mimetype, 0, 10) == "video/x-ms") { // It's a Media Player file $resourcetype = "mediaplayer"; $embedded = true; - + } else if ($mimetype == "video/quicktime") { // It's a Quicktime file $resourcetype = "quicktime"; $embedded = true; @@ -250,7 +248,7 @@ function display() { $querystring = implode('&', $querys); } - + /// Set up some variables $inpopup = !empty($_GET["inpopup"]); @@ -265,21 +263,7 @@ function display() { $fullurl .= '&'.$querystring; } } - - } else if ($CFG->resource_allowlocalfiles and (strpos($resource->reference, RESOURCE_LOCALPATH) === 0)) { // Localpath - $localpath = get_user_preferences('resource_localpath', 'D:'); - $relativeurl = str_replace(RESOURCE_LOCALPATH, $localpath, $resource->reference); - - if ($querystring) { - $relativeurl .= '?'.$querystring; - } - - $relativeurl = str_replace('\\', '/', $relativeurl); - $relativeurl = str_replace(' ', '%20', $relativeurl); - $fullurl = 'file:///'.htmlentities($relativeurl); - $localpath = true; - - } else { // Normal uploaded file + } else { if ($CFG->slasharguments) { $relativeurl = "/file.php/{$course->id}/{$resource->reference}"; if ($querystring) { @@ -294,33 +278,17 @@ function display() { $fullurl = "$CFG->wwwroot$relativeurl"; } - /// Print a notice and redirect if we are trying to access a file on a local file system - /// and the config setting has been disabled - if (!$CFG->resource_allowlocalfiles and (strpos($resource->reference, RESOURCE_LOCALPATH) === 0)) { - if ($inpopup) { - print_header($pagetitle, $course->fullname); - } else { - print_header($pagetitle, $course->fullname, "$this->navigation ".format_string($resource->name), "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm)); - } - notify(get_string('notallowedlocalfileaccess', 'resource', '')); - if ($inpopup) { - close_window_button(); - } - print_footer('none'); - die; - } - /// Check whether this is supposed to be a popup, but was called directly if ($resource->popup and !$inpopup) { /// Make a page and a pop-up window - print_header($pagetitle, $course->fullname, "$this->navigation ".format_string($resource->name), "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm)); + print_header($pagetitle, $course->fullname, "$navigation {$resource->name}", "", "", true, update_module_button($this->cm->id, $course->id, $strresource), navmenu($course, $this->cm)); - echo "\n<script language=\"javascript\" type=\"text/javascript\">"; + echo "\n<script language=\"Javascript\">"; echo "\n<!--\n"; - echo "openpopup('/mod/resource/view.php?inpopup=true&id={$cm->id}','resource{$resource->id}','{$resource->popup}');\n"; + echo "openpopup('/mod/resource/view.php?inpopup=true&id={$this->cm->id}','resource{$resource->id}','{$resource->popup}');\n"; echo "\n-->\n"; echo '</script>'; @@ -329,9 +297,9 @@ function display() { print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions), "center"); } - $link = "<a href=\"$CFG->wwwroot/mod/resource/view.php?inpopup=true&amp;id={$cm->id}\" target=\"resource{$resource->id}\" onclick=\"return openpopup('/mod/resource/view.php?inpopup=true&amp;id={$cm->id}', 'resource{$resource->id}','{$resource->popup}');\">".format_string($resource->name,true)."</a>"; + $link = "<a href=\"$CFG->wwwroot/mod/resource/view.php?inpopup=true&id={$this->cm->id}\" target=\"resource{$resource->id}\" onClick=\"return openpopup('/mod/resource/view.php?inpopup=true&id={$this->cm->id}', 'resource{$resource->id}','{$resource->popup}');\">{$resource->name}</a>"; - echo "<p>&nbsp;</p>"; + echo "<p>&nbsp</p>"; echo '<p align="center">'; print_string('popupresource', 'resource'); echo '<br />'; @@ -346,42 +314,27 @@ function display() { /// Now check whether we need to display a frameset if (empty($_GET['frameset']) and !$embedded and !$inpopup and $resource->options == "frame") { - echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n"; - echo "<html dir=\"ltr\">\n"; - echo '<head>'; - echo '<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />'; - echo "<title>{$course->shortname}: ".strip_tags(format_string($resource->name,true))."</title></head>\n"; - echo "<frameset rows=\"$CFG->resource_framesize,*\">"; - echo "<frame src=\"view.php?id={$cm->id}&amp;type={$resource->type}&amp;frameset=top\" />"; - if (!empty($localpath)) { // Show it like this so we interpose some HTML - echo "<frame src=\"view.php?id={$cm->id}&amp;type={$resource->type}&amp;inpopup=true\" />"; - } else { - echo "<frame src=\"$fullurl\" />"; - } + echo "<head><title>{$course->shortname}: {$resource->name}</title></head>\n"; + echo "<frameset rows=\"$CFG->resource_framesize,*\" border=\"2\">"; + echo "<frame src=\"view.php?id={$this->cm->id}&type={$resource->type}&frameset=top\">"; + echo "<frame src=\"$fullurl\">"; echo "</frameset>"; - echo "</html>"; exit; } /// We can only get here once per resource, so add an entry to the log - add_to_log($course->id, "resource", "view", "view.php?id={$cm->id}", $resource->id, $cm->id); + add_to_log($course->id, "resource", "view", "view.php?id={$this->cm->id}", $resource->id, $this->cm->id); /// If we are in a frameset, just print the top of it if (!empty($_GET['frameset']) and $_GET['frameset'] == "top") { - print_header($pagetitle, $course->fullname, "$this->navigation ".format_string($resource->name), "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm, "parent")); + print_header($pagetitle, $course->fullname, "$navigation <a target=\"$CFG->framename\" href=\"$fullurl\">{$resource->name}</a>", "", "", true, update_module_button($this->cm->id, $course->id, $strresource), navmenu($course, $this->cm, "parent")); - $options->para = false; - echo '<div class="summary">'.format_text($resource->summary, FORMAT_HTML, $options).'</div>'; - if (!empty($localpath)) { // Show some help - echo '<div align="right" class="helplink">'; - link_to_popup_window ('/mod/resource/type/file/localpath.php', get_string('localfile', 'resource'), get_string('localfilehelp','resource'), 400, 500, get_string('localfilehelp', 'resource')); - echo '</div>'; - } - echo '</body></html>'; + echo "<center><font size=-1>".text_to_html($resource->summary, true, false)."</font></center>"; + echo "</body></html>"; exit; } @@ -394,42 +347,30 @@ function display() { if ($inpopup) { print_header($pagetitle); } else { - print_header($pagetitle, $course->fullname, "$this->navigation <a title=\"$strdirectlink\" target=\"$CFG->framename\" href=\"$fullurl\"> ".format_string($resource->name,true)."</a>", "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm, "self")); + print_header($pagetitle, $course->fullname, "$navigation <a title=\"$strdirectlink\" target=\"$CFG->framename\" href=\"$fullurl\"> {$resource->name}</a>", "", "", true, update_module_button($this->cm->id, $course->id, $strresource), navmenu($course, $this->cm, "self")); } if ($resourcetype == "image") { echo "<center><p>"; - echo "<img title=\"".strip_tags(format_string($resource->name,true))."\" class=\"resourceimage\" src=\"$fullurl\" alt=\"\" />"; + echo "<img title=\"{$resource->name}\" class=\"resourceimage\" src=\"$fullurl\">"; echo "</p></center>"; } else if ($resourcetype == "mp3") { - if (!empty($THEME->resource_mp3player_colors)) { - $c = $THEME->resource_mp3player_colors; // You can set this up in your theme/xxx/config.php - } else { - $c = 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes'; - } - $c .= '&volText='.get_string('vol', 'resource').'&panText='.get_string('pan','resource'); - $c = htmlentities($c); - echo '<div class="mp3player" align="center">'; + echo "<center><p>"; echo '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'; echo ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" '; echo ' width="600" height="70" id="mp3player" align="">'; - echo '<param name="movie" value="'.$CFG->wwwroot.'/lib/mp3player/mp3player.swf?src='.$fullurl.'">'; - echo '<param name="quality" value="high">'; - echo '<param name="bgcolor" value="#333333">'; - echo '<param name="flashvars" value="'.$c.'&amp;" />'; - echo '<embed src="'.$CFG->wwwroot.'/lib/mp3player/mp3player.swf?src='.$fullurl.'" '; - echo ' quality="high" bgcolor="#333333" width="600" height="70" name="mp3player" '; + echo "<param name=movie value=\"$CFG->wwwroot/lib/mp3player/mp3player.swf?src=$fullurl&autostart=yes\">"; + echo '<param name=quality value=high>'; + echo '<param name=bgcolor value="#333333">'; + echo "<embed src=\"$CFG->wwwroot/lib/mp3player/mp3player.swf?src=$fullurl&autostart=yes\" "; + echo " quality=high bgcolor=\"#333333\" width=\"600\" height=\"70\" name=\"mp3player\" "; echo ' type="application/x-shockwave-flash" '; - echo ' flashvars="'.$c.'&amp;" '; echo ' pluginspage="http://www.macromedia.com/go/getflashplayer">'; echo '</embed>'; echo '</object>'; - echo '</div>'; - + echo "</p></center>"; } else if ($resourcetype == "mediaplayer") { echo "<center><p>"; @@ -438,15 +379,15 @@ function display() { echo ' standby="Loading Microsoft® Windows® Media Player components..." '; echo ' id="msplayer" align="" type="application/x-oleobject">'; echo "<param name=\"Filename\" value=\"$fullurl\">"; - echo '<param name="ShowControls" value="true" />'; - echo '<param name="AutoRewind" value="true" />'; - echo '<param name="AutoStart" value="true" />'; - echo '<param name="Autosize" value="true" />'; - echo '<param name="EnableContextMenu" value="true" />'; - echo '<param name="TransparentAtStart" value="false" />'; - echo '<param name="AnimationAtStart" value="false" />'; - echo '<param name="ShowGotoBar" value="false" />'; - echo '<param name="EnableFullScreenControls" value="true" />'; + echo '<param name="ShowControls" value=true />'; + echo '<param name="AutoRewind" value=true />'; + echo '<param name="AutoStart" value=true />'; + echo '<param name="Autosize" value=true />'; + echo '<param name="EnableContextMenu" value=true />'; + echo '<param name="TransparentAtStart" value=false />'; + echo '<param name="AnimationAtStart" value=false />'; + echo '<param name="ShowGotoBar" value=false />'; + echo '<param name="EnableFullScreenControls" value=true />'; echo "\n<embed src=\"$fullurl\" name=\"msplayer\" type=\"$mimetype\" "; echo ' ShowControls="1" AutoRewind="1" AutoStart="1" Autosize="0" EnableContextMenu="1"'; echo ' TransparentAtStart="0" AnimationAtStart="0" ShowGotoBar="0" EnableFullScreenControls="1"'; @@ -463,9 +404,9 @@ function display() { echo ' height="450" width="600"'; echo ' id="quicktime" align="" type="application/x-oleobject">'; echo "<param name=\"src\" value=\"$fullurl\" />"; - echo '<param name="autoplay" value="true" />'; - echo '<param name="loop" value="true" />'; - echo '<param name="controller" value="true" />'; + echo '<param name="autoplay" value=true />'; + echo '<param name="loop" value=true />'; + echo '<param name="controller" value=true />'; echo '<param name="scale" value="aspect" />'; echo "\n<embed src=\"$fullurl\" name=\"quicktime\" type=\"$mimetype\" "; echo ' height="450" width="600" scale="aspect"'; @@ -487,17 +428,11 @@ function display() { print_spacer(20,20); print_footer($course); } - + } else { // Display the resource on it's own - if (!empty($localpath)) { // Show a link to help work around browser security - echo '<div align="right" class="helplink">'; - link_to_popup_window ('/mod/resource/type/file/localpath.php', get_string('localfile', 'resource'), get_string('localfilehelp','resource'), 400, 500, get_string('localfilehelp', 'resource')); - echo '</div>'; - echo "<center><p>(<a href=\"$fullurl\">$fullurl</a>)</p></center>"; - } redirect($fullurl); } - + } @@ -519,7 +454,7 @@ function setup($form) { $this->set_parameters(); // set the parameter array for the form - + $strfilename = get_string("location"); $strnote = get_string("note", "resource"); $strchooseafile = get_string("chooseafile", "resource"); @@ -533,7 +468,7 @@ function setup($form) { $window->$optionname = ""; $jsoption[] = "\"$optionname\""; } - + $frameoption = "\"framepage\""; $popupoptions = implode(",", $jsoption); $jsoption[] = $frameoption; @@ -555,26 +490,21 @@ function setup($form) { $option = explode('=', trim($rawoption)); $optionname = $option[0]; $optionvalue = $option[1]; - if ($optionname == 'height' or $optionname == 'width') { + if ($optionname == "height" or $optionname == "width") { $window->$optionname = $optionvalue; } else if ($optionvalue) { - $window->$optionname = 'checked="checked"'; + $window->$optionname = "checked"; } } } } else { foreach ($RESOURCE_WINDOW_OPTIONS as $optionname) { $defaultvalue = "resource_popup$optionname"; - - if ($optionname == 'height' or $optionname == 'width') { - $window->$optionname = $CFG->$defaultvalue; - } else if ($CFG->$defaultvalue) { - $window->$optionname = 'checked="checked"'; - } + $window->$optionname = $CFG->$defaultvalue; } $windowtype = ($CFG->resource_popup) ? 'popup' : 'page'; - if (empty($form->options)) { + if (!isset($form->options)) { $form->options = 'frame'; $form->reference = $CFG->resource_defaulturl; } @@ -606,19 +536,6 @@ function setup($form) { parent::setup_end(); } -//backwards compatible with existing resources -function set_encrypted_parameter() { - global $CFG; - - if (!empty($this->resource->reference) && file_exists($CFG->dirroot ."/mod/resource//type/file/externserverfile.php")) { - include $CFG->dirroot ."/mod/resource/type/file/externserverfile.php"; - if (function_exists(extern_server_file)) { - return extern_server_file($this->resource->reference); - } - } - return md5($_SERVER['REMOTE_ADDR'].$CFG->resource_secretphrase); -} - } ?> diff --git a/mod/resource/type/html/html.html b/mod/resource/type/html/html.html index 3d24f135e5b..fb06350310c 100644 --- a/mod/resource/type/html/html.html +++ b/mod/resource/type/html/html.html @@ -1,40 +1,11 @@ - <tr valign="top"> - <td align="right" nowrap="nowrap"> - - -<script language="javascript" type="text/javascript"> - function showhide (id, set) { - divobj = document.getElementById(id); - butobj = document.getElementById(id+'button'); - prefobj = document.getElementById(id+'pref'); - if (set == true) { - if (prefobj.value == '1') { - divobj.style.display = 'block'; - butobj.value = '<?php print_string("hidesettings") ?>'; - } else { - divobj.style.display = 'none'; - butobj.value = '<?php print_string("showsettings") ?>...'; - } - } else { - if (prefobj.value == '1') { - divobj.style.display = 'none'; - butobj.value = '<?php print_string("showsettings") ?>...'; - prefobj.value = '0'; - } else { - divobj.style.display = 'block'; - butobj.value = '<?php print_string("hidesettings") ?>'; - prefobj.value = '1'; - } - } - } -</script> - - - <b><?php print_string("fulltext", "resource") ?>:</b><br /> + <td align="right" nowrap> + <p><b><?php print_string("fulltext", "resource") ?>:</b></p><br /> + <font size="1"> <?php helpbutton("writing", get_string("helpwriting"), "moodle", true, true) ?><br /> - <?php helpbutton("text", get_string("helptext"), "moodle", true, true) ?><br /> + <?php helpbutton("text", get_string("helptext"), "moodle", true, true) ?> <br /> <?php emoticonhelpbutton("theform", "alltext") ?> <br /> + </font> </td> <td> <?php print_textarea($usehtmleditor, 30, 60, 680, 500, "alltext", $form->alltext); ?> @@ -43,82 +14,59 @@ <tr><td colspan="2"><hr /></td></tr> -<tr> - <td align="right"><b><?php print_string("display", "resource") ?>:</b></td> - <td> - <input type="button" value="hide settings" id="windowsettingsbutton" onclick="javascript: return showhide('windowsettings');" /> - <input type="hidden" name="windowsettingspref" id="windowsettingspref" - value="<?php echo get_user_preferences('resource_windowsettingspref', $CFG->resource_windowsettings); ?>" /> - <?php helpbutton("window", get_string("display", "resource"), "resource", true) ?> - </td> -</tr> -<tr><td colspan="2"> - - <div id="windowsettings"> - -<table align="center"> - - <tr valign="top"> + <td align="right" nowrap> + <p><b><?php print_string("pagewindow", "resource") ?>:</b></p> + </td> - <td colspan="2"> - <script type="text/javascript"> + <td> + <script> var popupitems = [<?php echo $popupoptions; ?>]; var allitems = [<?php echo $alloptions; ?>]; </script> - <input type="radio" name="windowpopup" value="0" alt="<?php print_string('pagewindow', 'resource') ?>" <?php echo ($windowtype != 'popup') ? 'checked="checked"' : '' ?> - onclick="return lockoptions('form', 'windowpopup[1]', popupitems);" /> - <b title="<?php print_string('pagedisplay', 'resource') ?>"><?php print_string('pagewindow', 'resource') ?></b> + <input type="radio" name="windowpopup" value=0 <?php echo ($windowtype != "popup") ? "checked" : "" ?> + onClick="return lockoptions('form', 'windowpopup[1]', popupitems);"> + <?php print_string("pagedisplay", "resource") ?> </td> </tr> <tr valign="top"> + <td align="right" nowrap> + <p><b><?php p($strnewwindow) ?>:</b></p> + </td> - <td colspan="2"> - <input name="windowpopup" type="radio" value="1" alt="<?php p($strnewwindow) ?>" <?php echo ($windowtype == "popup") ? "checked=\"checked\"" : "" ?> - onclick=" return lockoptions('form', 'windowpopup[1]', popupitems);" /> - <b title="<?php p($strnewwindowopen) ?>"><?php p($strnewwindow) ?></b> - <blockquote> + <td> + <input name="windowpopup" type=radio value=1 <?php echo ($windowtype == "popup") ? "checked" : "" ?> + onclick=" return lockoptions('form', 'windowpopup[1]', popupitems);"> + <?php p($strnewwindowopen) ?> + <ul> <?php foreach ($window as $name => $value) { if ($name == "height" or $name == "width") { continue; } + echo "<input name=\"h$name\" type=hidden value=0>"; + echo "<input name=\"$name\" type=checkbox value=1 ".$window->$name.">"; $stringname = "str$name"; - echo "<input name=\"h$name\" type=\"hidden\" value=\"0\" />"; - echo "<input name=\"$name\" type=\"checkbox\" value=\"1\" alt=\"<?php echo $$stringname ?>\" ".$window->$name." />"; echo $$stringname."<br />"; } ?> - <input name="hwidth" type="hidden" value="0" /> - <input name="width" type="text" size="4" value="<?php p($window->width) ?>" alt="<?php p($strwidth) ?>" /> + <input name="hwidth" type=hidden value=0> + <input name="width" type=text size=4 value="<?php p($window->width) ?>"> <?php p($strwidth) ?><br /> - <input name="hheight" type="hidden" value="0" /> - <input name="height" type="text" size="4" value="<?php p($window->height) ?>" alt="<?php p($strheight) ?>"/> + <input name="hheight" type=hidden value=0> + <input name="height" type=text size=4 value="<?php p($window->height) ?>"> <?php p($strheight) ?><br /> <?php if ($windowtype == "page") { - echo "<script type=\"text/javascript\">"; + echo "<script>"; echo "lockoptions('form','windowpopup[1]', popupitems);"; echo "</script>"; } ?> - </blockquote> + </ul> </td> </tr> -</table> - - </div> - - -<script language="javascript" type="text/javascript"> - showhide('windowsettings', true); -</script> - - -</td></tr> - -<?php print_visible_setting($form); ?> \ No newline at end of file diff --git a/mod/resource/type/html/resource.class.php b/mod/resource/type/html/resource.class.php index 518734d9c27..8289cfa7936 100644 --- a/mod/resource/type/html/resource.class.php +++ b/mod/resource/type/html/resource.class.php @@ -30,13 +30,6 @@ function add_instance($resource) { $resource->popup = ""; } - if (isset($resource->parametersettingspref)) { - set_user_preference('resource_parametersettingspref', $resource->parametersettingspref); - } - if (isset($resource->windowsettingspref)) { - set_user_preference('resource_windowsettingspref', $resource->windowsettingspref); - } - return insert_record("resource", $resource); } @@ -64,49 +57,48 @@ function update_instance($resource) { $resource->popup = ""; } - if (isset($resource->parametersettingspref)) { - set_user_preference('resource_parametersettingspref', $resource->parametersettingspref); - } - if (isset($resource->windowsettingspref)) { - set_user_preference('resource_windowsettingspref', $resource->windowsettingspref); - } - return update_record("resource", $resource); } function display() { - global $CFG; + global $CFG, $THEME; -/// Set up generic stuff first, including checking for access - parent::display(); + $course = $this->course; // Shortcut + $resource = $this->resource; // Shortcut -/// Set up some shorthand variables - $cm = $this->cm; - $course = $this->course; - $resource = $this->resource; + $strresource = get_string("modulename", "resource"); + $strresources = get_string("modulenameplural", "resource"); + $strlastmodified = get_string("lastmodified"); - $pagetitle = strip_tags($course->shortname.': '.format_string($resource->name)); + if ($course->category) { + require_login($course->id); + $navigation = "<a target=\"{$CFG->framename}\" href=\"../../course/view.php?id={$course->id}\">{$course->shortname}</a> -> + <a target=\"{$CFG->framename}\" href=\"index.php?id={$course->id}\">$strresources</a> ->"; + } else { + $navigation = "<a target=\"{$CFG->framename}\" href=\"index.php?id={$course->id}\">$strresources</a> ->"; + } + + $pagetitle = strip_tags($course->shortname.': '.$resource->name); $formatoptions->noclean = true; $inpopup = !empty($_GET["inpopup"]); if ($resource->popup) { if ($inpopup) { /// Popup only - add_to_log($course->id, "resource", "view", "view.php?id={$cm->id}", $resource->id, $cm->id); + add_to_log($course->id, "resource", "view", "view.php?id={$this->cm->id}", $resource->id, $this->cm->id); print_header(); print_simple_box(format_text($resource->alltext, FORMAT_HTML, $formatoptions, $course->id), - "center", "", "", "20"); - print_footer($course); + "center", "", "$THEME->cellcontent", "20"); } else { /// Make a page and a pop-up window - print_header($pagetitle, $course->fullname, "$this->navigation ".format_string($resource->name), - "", "", true, update_module_button($cm->id, $course->id, $this->strresource), - navmenu($course, $cm)); + print_header($pagetitle, $course->fullname, "$navigation {$resource->name}", + "", "", true, update_module_button($this->cm->id, $course->id, $strresource), + navmenu($course, $this->cm)); - echo "\n<script language=\"javascript\" type=\"text/javascript\">"; + echo "\n<script language=\"Javascript\">"; echo "\n<!--\n"; - echo "openpopup('/mod/resource/view.php?inpopup=true&id={$cm->id}','resource{$resource->id}','{$resource->popup}');\n"; + echo "openpopup('/mod/resource/view.php?inpopup=true&id={$this->cm->id}','resource{$resource->id}','{$resource->popup}');\n"; echo "\n-->\n"; echo '</script>'; @@ -114,7 +106,7 @@ function display() { print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions, $course->id), "center"); } - $link = "<a href=\"$CFG->wwwroot/mod/resource/view.php?inpopup=true&amp;id={$cm->id}\" target=\"resource{$resource->id}\" onclick=\"return openpopup('/mod/resource/view.php?inpopup=true&amp;id={$cm->id}', 'resource{$resource->id}','{$resource->popup}');\">".format_string($resource->name,true)."</a>"; + $link = "<a href=\"$CFG->wwwroot/mod/resource/view.php?inpopup=true&id={$this->cm->id}\" target=\"resource{$resource->id}\" onClick=\"return openpopup('/mod/resource/view.php?inpopup=true&id={$this->cm->id}', 'resource{$resource->id}','{$resource->popup}');\">{$resource->name}</a>"; echo "<p>&nbsp</p>"; echo '<p align="center">'; @@ -127,15 +119,14 @@ function display() { } } else { /// not a popup at all - add_to_log($course->id, "resource", "view", "view.php?id={$cm->id}", $resource->id, $cm->id); - print_header($pagetitle, $course->fullname, "$this->navigation ".format_string($resource->name), - "", "", true, update_module_button($cm->id, $course->id, $this->strresource), - navmenu($course, $cm)); + add_to_log($course->id, "resource", "view", "view.php?id={$this->cm->id}", $resource->id, $this->cm->id); + print_header($pagetitle, $course->fullname, "$navigation {$resource->name}", + "", "", true, update_module_button($this->cm->id, $course->id, $strresource), + navmenu($course, $this->cm)); - print_simple_box(format_text($resource->alltext, FORMAT_HTML, $formatoptions, $course->id), "center", "", "", "20"); + print_simple_box(format_text($resource->alltext, FORMAT_HTML, $formatoptions, $course->id), "center", "", "$THEME->cellcontent", "20"); - $strlastmodified = get_string("lastmodified"); - echo "<center><p><font size=\"1\">$strlastmodified: ".userdate($resource->timemodified)."</font></p></center>"; + echo "<center><p><font size=1>$strlastmodified: ".userdate($resource->timemodified)."</p></center>"; print_footer($course); } @@ -185,19 +176,14 @@ function setup($form) { if ($optionname == "height" or $optionname == "width") { $window->$optionname = $optionvalue; } else if ($optionvalue) { - $window->$optionname = 'checked="checked"'; + $window->$optionname = "checked"; } } } } else { foreach ($RESOURCE_WINDOW_OPTIONS as $optionname) { $defaultvalue = "resource_popup$optionname"; - - if ($optionname == "height" or $optionname == "width") { - $window->$optionname = $CFG->$defaultvalue; - } else if ($CFG->$defaultvalue) { - $window->$optionname = 'checked="checked"'; - } + $window->$optionname = $CFG->$defaultvalue; } $windowtype = ($CFG->resource_popup) ? 'popup' : 'page'; diff --git a/mod/resource/type/text/resource.class.php b/mod/resource/type/text/resource.class.php index cbeb7e8b029..60160a40c15 100644 --- a/mod/resource/type/text/resource.class.php +++ b/mod/resource/type/text/resource.class.php @@ -31,13 +31,6 @@ function add_instance($resource) { $resource->popup = ""; } - if (isset($resource->parametersettingspref)) { - set_user_preference('resource_parametersettingspref', $resource->parametersettingspref); - } - if (isset($resource->windowsettingspref)) { - set_user_preference('resource_windowsettingspref', $resource->windowsettingspref); - } - return insert_record("resource", $resource); } @@ -64,48 +57,46 @@ function update_instance($resource) { $resource->popup = ""; } - if (isset($resource->parametersettingspref)) { - set_user_preference('resource_parametersettingspref', $resource->parametersettingspref); - } - if (isset($resource->windowsettingspref)) { - set_user_preference('resource_windowsettingspref', $resource->windowsettingspref); - } - return update_record("resource", $resource); } function display() { - global $CFG; + global $CFG, $THEME; -/// Set up generic stuff first, including checking for access - parent::display(); + $course = $this->course; // Shortcut + $resource = $this->resource; // Shortcut -/// Set up some shorthand variables - $cm = $this->cm; - $course = $this->course; - $resource = $this->resource; + $strresource = get_string("modulename", "resource"); + $strresources = get_string("modulenameplural", "resource"); + $strlastmodified = get_string("lastmodified"); - $pagetitle = strip_tags($course->shortname.': '.format_string($resource->name)); + if ($course->category) { + require_login($course->id); + $navigation = "<a target=\"{$CFG->framename}\" href=\"../../course/view.php?id={$course->id}\">{$course->shortname}</a> -> + <a target=\"{$CFG->framename}\" href=\"index.php?id={$course->id}\">$strresources</a> ->"; + } else { + $navigation = "<a target=\"{$CFG->framename}\" href=\"index.php?id={$course->id}\">$strresources</a> ->"; } + + $pagetitle = strip_tags($course->shortname.': '.$resource->name); $formatoptions->noclean = true; $inpopup = !empty($_GET["inpopup"]); if ($resource->popup) { if ($inpopup) { /// Popup only - add_to_log($course->id, "resource", "view", "view.php?id={$cm->id}", - $resource->id, $cm->id); + add_to_log($course->id, "resource", "view", "view.php?id={$this->cm->id}", + $resource->id, $this->cm->id); print_header(); print_simple_box(format_text($resource->alltext, $resource->options, $formatoptions, $course->id), - "center", "", "", "20"); - print_footer($course); + "center", "", "$THEME->cellcontent", "20"); } else { /// Make a page and a pop-up window - print_header($pagetitle, $course->fullname, "$this->navigation ".format_string($resource->name), - "", "", true, update_module_button($cm->id, $course->id, $this->strresource), - navmenu($course, $cm)); + print_header($pagetitle, $course->fullname, "$navigation {$resource->name}", + "", "", true, update_module_button($this->cm->id, $course->id, $strresource), + navmenu($course, $this->cm)); - echo "\n<script language=\"javascript\" type=\"text/javascript\">"; + echo "\n<script language=\"Javascript\">"; echo "\n<!--\n"; - echo "openpopup('/mod/resource/view.php?inpopup=true&id={$cm->id}','resource{$resource->id}','{$resource->popup}');\n"; + echo "openpopup('/mod/resource/view.php?inpopup=true&id={$this->cm->id}','resource{$resource->id}','{$resource->popup}');\n"; echo "\n-->\n"; echo '</script>'; @@ -113,7 +104,7 @@ function display() { print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions, $course->id), "center"); } - $link = "<a href=\"$CFG->wwwroot/mod/resource/view.php?inpopup=true&amp;id={$cm->id}\" target=\"resource{$resource->id}\" onclick=\"return openpopup('/mod/resource/view.php?inpopup=true&amp;id={$cm->id}', 'resource{$resource->id}','{$resource->popup}');\">".format_string($resource->name,true)."</a>"; + $link = "<a href=\"$CFG->wwwroot/mod/resource/view.php?inpopup=true&id={$this->cm->id}\" target=\"resource{$resource->id}\" onClick=\"return openpopup('/mod/resource/view.php?inpopup=true&id={$this->cm->id}', 'resource{$resource->id}','{$resource->popup}');\">{$resource->name}</a>"; echo "<p>&nbsp</p>"; echo '<p align="center">'; @@ -126,16 +117,15 @@ function display() { } } else { /// not a popup at all - add_to_log($course->id, "resource", "view", "view.php?id={$cm->id}", $resource->id, $cm->id); - print_header($pagetitle, $course->fullname, "$this->navigation ".format_string($resource->name), - "", "", true, update_module_button($cm->id, $course->id, $this->strresource), - navmenu($course, $cm)); + add_to_log($course->id, "resource", "view", "view.php?id={$this->cm->id}", $resource->id, $this->cm->id); + print_header($pagetitle, $course->fullname, "$navigation {$resource->name}", + "", "", true, update_module_button($this->cm->id, $course->id, $strresource), + navmenu($course, $this->cm)); print_simple_box(format_text($resource->alltext, $resource->options, $formatoptions, $course->id), - "center", "", "", "20"); + "center", "", "$THEME->cellcontent", "20"); - $strlastmodified = get_string("lastmodified"); - echo "<center><p><font size=\"1\">$strlastmodified: ".userdate($resource->timemodified)."</font></p></center>"; + echo "<center><p><font size=1>$strlastmodified: ".userdate($resource->timemodified)."</p></center>"; print_footer($course); } @@ -187,19 +177,14 @@ function setup($form) { if ($optionname == "height" or $optionname == "width") { $window->$optionname = $optionvalue; } else if ($optionvalue) { - $window->$optionname = 'checked="checked"'; + $window->$optionname = "checked"; } } } } else { foreach ($RESOURCE_WINDOW_OPTIONS as $optionname) { $defaultvalue = "resource_popup$optionname"; - - if ($optionname == "height" or $optionname == "width") { - $window->$optionname = $CFG->$defaultvalue; - } else if ($CFG->$defaultvalue) { - $window->$optionname = 'checked="checked"'; - } + $window->$optionname = $CFG->$defaultvalue; } $windowtype = ($CFG->resource_popup) ? 'popup' : 'page'; diff --git a/mod/resource/type/text/text.html b/mod/resource/type/text/text.html index ad4b17d72da..9384fbd0846 100644 --- a/mod/resource/type/text/text.html +++ b/mod/resource/type/text/text.html @@ -1,48 +1,18 @@ - <tr valign="top"> - <td align="right" nowrap="nowrap"> - - -<script language="javascript" type="text/javascript"> - function showhide (id, set) { - divobj = document.getElementById(id); - butobj = document.getElementById(id+'button'); - prefobj = document.getElementById(id+'pref'); - if (set == true) { - if (prefobj.value == '1') { - divobj.style.display = 'block'; - butobj.value = '<?php print_string("hidesettings") ?>'; - } else { - divobj.style.display = 'none'; - butobj.value = '<?php print_string("showsettings") ?>...'; - } - } else { - if (prefobj.value == '1') { - divobj.style.display = 'none'; - butobj.value = '<?php print_string("showsettings") ?>...'; - prefobj.value = '0'; - } else { - divobj.style.display = 'block'; - butobj.value = '<?php print_string("hidesettings") ?>'; - prefobj.value = '1'; - } - } - } -</script> - - - - <b><?php print_string("fulltext", "resource") ?>:</b><br /> + <td align="right" nowrap> + <p><b><?php print_string("fulltext", "resource") ?>:</b></p><br /> + <font size="1"> <?php helpbutton("writing", get_string("helpwriting"), "moodle", true, true) ?><br /> <?php emoticonhelpbutton("theform", "alltext") ?> <br /> + </font> </td> <td> <?php print_textarea(false, 30, 65, 680, 400, "alltext", $form->alltext); ?> </td> </tr> <tr valign="top"> - <td align="right" nowrap="nowrap"> - <b><?php print_string("formattexttype") ?>:</b><br /> + <td align="right" nowrap> + <p><b><?php print_string("formattexttype") ?>:</b></p><br /> </td> <td> <?php @@ -54,86 +24,59 @@ <tr><td colspan="2"><hr /></td></tr> - -<tr> - <td align="right"><b><?php print_string("display", "resource") ?>:</b></td> - <td> - <input type="button" value="hide settings" id="windowsettingsbutton" onclick="javascript: return showhide('windowsettings');" /> - <input type="hidden" name="windowsettingspref" id="windowsettingspref" - value="<?php echo get_user_preferences('resource_windowsettingspref', $CFG->resource_windowsettings); ?>" /> - <?php helpbutton("window", get_string("display", "resource"), "resource", true) ?> - </td> -</tr> -<tr><td colspan="2"> - - <div id="windowsettings"> - -<table align="center"> - - <tr valign="top"> + <td align="right" nowrap> + <p><b><?php print_string("pagewindow", "resource") ?>:</b></p> + </td> - <td colspan="2"> - <script type="text/javascript"> + <td> + <script> var popupitems = [<?php echo $popupoptions; ?>]; var allitems = [<?php echo $alloptions; ?>]; </script> - <input type="radio" name="windowpopup" value="0" alt="<?php print_string("pagewindow", "resource") ?>" <?php echo ($windowtype != "popup") ? 'checked="checked"' : '' ?> - onclick="return lockoptions('form', 'windowpopup[1]', popupitems);" /> - <b title="<?php print_string("pagedisplay", "resource") ?>"><?php print_string("pagewindow", "resource") ?></b> + <input type="radio" name="windowpopup" value=0 <?php echo ($windowtype != "popup") ? "checked" : "" ?> + onClick="return lockoptions('form', 'windowpopup[1]', popupitems);"> <?php print_string("pagedisplay", "resource") ?> </td> </tr> <tr valign="top"> + <td align="right" nowrap> + <p><b><?php p($strnewwindow) ?>:</b></p> + </td> - <td colspan="2"> - <input name="windowpopup" type="radio" value="1" alt="<?php p($strnewwindowopen) ?>" <?php echo ($windowtype == "popup") ? "checked=\"checked\"" : "" ?> - onclick=" return lockoptions('form', 'windowpopup[1]', popupitems);" /> - <b title="<?php p($strnewwindowopen) ?>"><?php p($strnewwindow) ?></b> + <td> + <input name="windowpopup" type=radio value=1 <?php echo ($windowtype == "popup") ? "checked" : "" ?> + onclick=" return lockoptions('form', 'windowpopup[1]', popupitems);"> <?php p($strnewwindowopen) ?> - <blockquote> + <ul> <?php foreach ($window as $name => $value) { if ($name == "height" or $name == "width") { continue; } - echo '<input name="h'.$name.'" type="hidden" value="0" />'; - echo '<input name="'.$name.'" type="checkbox" value="1" alt="'.$$stringname.'" '.$window->$name.' />'; + echo "<input name=\"h$name\" type=hidden value=0>"; + echo "<input name=\"$name\" type=checkbox value=1 ".$window->$name.">"; $stringname = "str$name"; echo $$stringname."<br />"; } ?> - <input name="hwidth" type="hidden" value="0" /> - <input name="width" type="text" size="4" value="<?php p($window->width) ?>" /> + <input name="hwidth" type=hidden value=0> + <input name="width" type=text size=4 value="<?php p($window->width) ?>"> <?php p($strwidth) ?><br /> - <input name="hheight" type="hidden" value="0" /> - <input name="height" type="text" size="4" value="<?php p($window->height) ?>" /> + <input name="hheight" type=hidden value=0> + <input name="height" type=text size=4 value="<?php p($window->height) ?>"> <?php p($strheight) ?><br /> <?php if ($windowtype == "page") { - echo "<script type=\"text/javascript\">"; + echo "<script>"; echo "lockoptions('form','windowpopup[1]', popupitems);"; echo "</script>"; } ?> - </blockquote> + </ul> </td> </tr> -</table> - - </div> - - -<script language="javascript" type="text/javascript"> - showhide('windowsettings', true); -</script> - - -</td></tr> - -<?php print_visible_setting($form); ?> - diff --git a/mod/resource/version.php b/mod/resource/version.php index 64b68692608..2d3595a7c18 100644 --- a/mod/resource/version.php +++ b/mod/resource/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////////// // Code fragment to define the module version etc. // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2005041100; -$module->requires = 2005021600; // Requires this Moodle version +$module->version = 2004080801; +$module->requires = 2004073000; // Requires this Moodle version $module->cron = 0; ?> diff --git a/mod/resource/view.php b/mod/resource/view.php index 227cd0f6129..e8ff0028f74 100644 --- a/mod/resource/view.php +++ b/mod/resource/view.php @@ -1,39 +1,25 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); - $id = optional_param('id', 0, PARAM_INT); // Course Module ID - $r = optional_param('r', 0, PARAM_INT); // Resource + require_variable($id); // Course Module ID if (!empty($CFG->forcelogin)) { require_login(); } - if ($r) { // Two ways to specify the resource - if (! $resource = get_record('resource', 'id', $r)) { - error('Resource ID was incorrect'); - } - - if (! $cm = get_coursemodule_from_instance('resource', $resource->id, $resource->course)) { - error('Course Module ID was incorrect'); - } - - } else if ($id) { - if (! $cm = get_record('course_modules', 'id', $id)) { - error('Course Module ID was incorrect'); - } - - if (! $resource = get_record('resource', 'id', $cm->instance)) { - error('Resource ID was incorrect'); - } - } else { - error('No valid parameters!!'); + if (! $cm = get_record("course_modules", "id", $id)) { + error("Course Module ID was incorrect"); } - require ($CFG->dirroot.'/mod/resource/type/'.$resource->type.'/resource.class.php'); - $resourceclass = 'resource_'.$resource->type; - $resourceinstance = new $resourceclass($cm->id); + if (! $resource = get_record("resource", "id", $cm->instance)) { + error("Resource ID was incorrect"); + } + + require ("$CFG->dirroot/mod/resource/type/$resource->type/resource.class.php"); + $resourceclass = "resource_$resource->type"; + $resourceinstance = new $resourceclass($id); $resourceinstance->display(); diff --git a/mod/scorm/api.php b/mod/scorm/api.php deleted file mode 100644 index 7117ee70aae..00000000000 --- a/mod/scorm/api.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - - require_once("../../config.php"); - - optional_variable($id); // Course Module ID, or - optional_variable($a); // scorm ID - optional_variable($userid); // user ID - - if ($id) { - if (! $cm = get_record("course_modules", "id", $id)) { - error("Course Module ID was incorrect"); - } - - if (! $course = get_record("course", "id", $cm->course)) { - error("Course is misconfigured"); - } - - if (! $scorm = get_record("scorm", "id", $cm->instance)) { - error("Course module is incorrect"); - } - - } else { - if (! $scorm = get_record("scorm", "id", $a)) { - error("Course module is incorrect"); - } - if (! $course = get_record("course", "id", $scorm->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("scorm", $scorm->id, $course->id)) { - error("Course Module ID was incorrect"); - } - } - - require_login($course->id, false, $cm); - - if (empty($userid) || !isteacher($course->id)) { - $user = $USER; - } else { - $user = get_user_info_from_db('id', $userid); - } -?> - -function SCOFinish(){ - /*if (typeof API != "undefined") { - API.SaveTotalTime(); - } */ -} - -// -// SCORM Call Implementation -// -var errorCode = "0"; - -function SCORM_Call (call,param) { - if (arguments.length < 2) { - alert ("Invalid SCORM_Call function call: too few arguments.\nYou need pass at least 2 parameters"); - } - var myRequest = NewHttpReq(); - result = DoRequest(myRequest,"<?php p($CFG->wwwroot) ?>/mod/scorm/datamodel.php","id=<?php p($id) ?>&sesskey=<?php p($USER->sesskey) ?>&call="+call+param); - //alert('Call: '+call+'\nParam: '+param+'\nResult: '+result); - results = result.split('\n'); - - errorCode = results[1]; - return results[0]; -} - -// -// SCORM 1.2 API Implementation -// -function SCORMapi1_2() { - - <?php include_once ('datamodels/scorm1_2.js.php'); ?> - -} - -var API = new SCORMapi1_2(); - -// -// SCORM 2004 API Implementation -// -function SCORMapi2004() { - - <?php include_once ('datamodels/scorm1_3.js.php'); ?> - -} - -var API_1484_11 = new SCORMapi2004(); diff --git a/mod/scorm/api1_2.php b/mod/scorm/api1_2.php new file mode 100644 index 00000000000..436a372517e --- /dev/null +++ b/mod/scorm/api1_2.php @@ -0,0 +1,387 @@ +// +// SCORM API 1.2 Implementation +// + +function SCORMapi() { + var cmi= new Object(); + var nav = new Object(); + + var errorCode = "0"; + + var Initialized = false; + + function LMSInitialize (param) { + if (param != "") { + errorCode = "201"; + return "false"; + } + if (!Initialized) { + Initialized = true; + errorCode = "0"; + + // + // CMI Initialization SCORM 1.2 + // + cmi.core = new Object(); + cmi.core._children = "student_id,student_name,lesson_location,credit,lesson_status,exit,entry,session_time,total_time,lesson_mode,score,suspend_data,launch_data"; + cmi.core.student_id = "<?php echo $USER->username; ?>"; + cmi.core.student_name = "<?php echo $USER->lastname.", ".$USER->firstname; ?>"; + cmi.core.lesson_location = "<?php echo $sco_user->cmi_core_lesson_location; ?>"; + cmi.core.credit = "<?php if ($mode != 'normal') { + echo "no-credit"; + } else { + echo "credit"; + }?>"; + cmi.core.lesson_status = "<?php echo $sco_user->cmi_core_lesson_status; ?>"; + cmi.core.exit = "<?php echo $sco_user->cmi_core_exit ?>"; + cmi.core.entry = "<?php if ($sco_user->cmi_core_lesson_status == 'not attempted') { + echo 'ab-initio'; + } else { + if ($sco_user->cmi_core_lesson_status != 'completed') { + echo 'resume'; + } else { + echo ''; + } + }?>"; + cmi.core.session_time = "00:00:00"; + cmi.core.total_time = "<?php echo $sco_user->cmi_core_total_time; ?>"; + cmi.core.lesson_mode = "<?php echo $mode; ?>"; + cmi.core.score = new Object(); + cmi.core.score._children = "raw,min,max"; + cmi.core.score.raw = "<?php echo $sco_user->cmi_core_score_raw; ?>"; + cmi.core.score.min = ""; + cmi.core.score.max = ""; + cmi.suspend_data = "<?php echo $sco_user->cmi_suspend_data; ?>"; + cmi.launch_data = "<?php echo $sco->datafromlms; ?>"; + cmi.comments = ""; + cmi.comments_from_lms = ""; + // + // end CMI Initialization + // + + // Navigation Object + <?php + if ($scorm->auto) { + echo 'nav.event = "continue";'."\n"; + } else { + echo 'nav.event = "";'."\n"; + } + ?> + + return "true"; + } else { + errorCode = "101"; + return "false"; + } + } + + function LMSGetValue (param) { + if (Initialized) { + //top.alert("GET "+param); + switch (param) { + case "cmi.core._children": + case "cmi.core.student_id": + case "cmi.core.student_name": + case "cmi.core.lesson_location": + case "cmi.core.credit": + case "cmi.core.lesson_status": + case "cmi.core.entry": + case "cmi.core.total_time": + case "cmi.core.lesson_mode": + case "cmi.core.score._children": + case "cmi.core.score.raw": + case "cmi.core.score.min": + case "cmi.core.score.max": + case "cmi.launch_data": + case "cmi.suspend_data": + case "cmi.comments": + case "cmi.comments_from_lms": + errorCode = "0"; + return eval(param); + break; + case "cmi.core.exit": + case "cmi.core.session_time": + errorCode = "404"; + return ""; + break; + default: + errorCode = "401"; + param = param.replace(/.(\d+)./g,"[$1]."); + + children = param.match(/._children$/); + if (children != null) { + objType = typeof eval(children[1]); + //alert (param+" :"+objType); + if (objType != "undefined") { + + errorCode = "202"; + } + } + + counted = param.match(/._count$/); + if (counted != null) { + objType = typeof eval(counted[1]); + //alert (param+" :"+objType); + if (objType != "undefined") { + errorCode = "203"; + } + } + //alert(param+": "+errorCode); + return ""; + break; + } + } else { + errorCode = "301"; + return ""; + } + } + + function LMSSetValue (param,value) { + if (Initialized) { + //top.alert("SET "+param+" = "+value); + switch (param) { + case "cmi.core.session_time": + if (typeof(value) == "string") { + var parsedtime = value.match(/^([0-9]{2,4}):([0-9]{2}):([0-9]{2})(\.[0-9]{1,2})?$/); + if (parsedtime != null) { + //top.alert(parsedtime); + if (((parsedtime.length == 4) || (parsedtime.length == 5)) && (parsedtime[3]>=0) && (parsedtime[3]<=59)) { + eval(param+'="'+value+'";'); + errorCode = "0"; + return "true"; + } else { + errorCode = "405"; + return "false"; + } + } else { + errorCode = "405"; + return "false"; + } + } else { + errorCode = "405"; + return "false"; + } + break; + case "cmi.core.lesson_status": + if ((value!="passed")&&(value!="completed")&&(value!="failed")&&(value!="incomplete")&&(value!="browsed")) { + errorCode = "405"; + return "false"; + } + eval(param+'="'+value+'";'); + errorCode = "0"; + return "true"; + break; + case "cmi.core.score.raw": + case "cmi.core.score.min": + case "cmi.core.score.max": + if (value != "") { + if ((parseFloat(value,10)).toString() != value) { + errorCode = "405"; + return "false"; + } else { + rawvalue = parseFloat(value,10); + if ((rawvalue<0) || (rawvalue>100)) { + errorCode = "405"; + return "false"; + } + } + } + eval(param+'="'+value+'";'); + errorCode = "0"; + return "true"; + break; + case "cmi.core.exit": + if ((value!="time-out")&&(value!="suspend")&&(value!="logout")&&(value!="")) { + errorCode = "405"; + return "false"; + } + eval(param+'="'+value+'";'); + errorCode = "0"; + return "true"; + break; + case "cmi.core.lesson_location": + if (value.length > 255) { + errorCode = "405"; + return "false"; + } + eval(param+'="'+value+'";'); + errorCode = "0"; + return "true"; + break; + case "cmi.comments": + if ((value.length + cmi.comments.length) > 4096) { + errorCode = "405"; + return "false"; + } + eval(param+'=cmi.comments + "'+value+'";'); + errorCode = "0"; + return "true"; + break; + case "cmi.suspend_data": + if (value.length > 4096) { + errorCode = "405"; + return "false"; + } + eval(param+'="'+value+'";'); + errorCode = "0"; + return "true"; + break; + case "cmi.core._children": + case "cmi.core.score._children": + errorCode = "402"; + return "false"; + break; + case "cmi.core.student_id": + case "cmi.core.student_name": + case "cmi.core.credit": + case "cmi.core.entry": + case "cmi.core.total_time": + case "cmi.core.lesson_mode": + case "cmi.launch_data": + case "cmi.comments_from_lms": + errorCode = "403"; + return "false"; + break; + case "nav.event": + if ((value == "previous") || (value == "continue")) { + eval(param+'="'+value+'";'); + errorCode = "0"; + return "true"; + } else { + erroCode = "405"; + return "false"; + } + break; + default: + errorCode = "401"; //This is more correct but may have problem with some SCOes + //errorCode = "0"; // With this disable any possible SCO errors alert + return "false"; + break; + } + } else { + errorCode = "301"; + return "false"; + } + } + + function LMSCommit (param) { + if (param != "") { + errorCode = "201"; + return "false"; + } + if (Initialized) { + if (<?php echo $navObj ?>cmi.document.theform) { + cmiform = <?php echo $navObj ?>cmi.document.forms[0]; + cmiform.scoid.value = "<?php echo $sco->id; ?>"; + cmiform.cmi_core_lesson_location.value = cmi.core.lesson_location; + cmiform.cmi_core_lesson_status.value = cmi.core.lesson_status; + cmiform.cmi_core_exit.value = cmi.core.exit; + cmiform.cmi_core_score_raw.value = cmi.core.score.raw; + cmiform.cmi_suspend_data.value = cmi.suspend_data; + cmiform.submit(); + } + errorCode = "0"; + return "true"; + } else { + errorCode = "301"; + return "false"; + } + } + + function LMSFinish (param) { + if (param != "") { + errorCode = "201"; + return "false"; + } + if (!Initialized) { + errorCode = "301"; + return "false"; + } else { + Initialized = false; + errorCode = "0"; + + if (nav.event != "") { + <?php + if ($sco != $last) { + echo "setTimeout('top.changeSco(nav.event);',500);\n"; + } else { + echo "exitloc = '".$CFG->wwwroot."/mod/scorm/view.php?id=".$cm->id."';\n"; + echo "setTimeout('top.location = exitloc;',500);\n"; + } + ?> + } + return "true"; + } + } + + function LMSGetLastError () { + return errorCode; + } + + function LMSGetErrorString (param) { + var errorString = new Array(); + errorString["0"] = "No error"; + errorString["101"] = "General exception"; + errorString["201"] = "Invalid argument error"; + errorString["202"] = "Element cannot have children"; + errorString["203"] = "Element not an array - cannot have count"; + errorString["301"] = "Not initialized"; + errorString["401"] = "Not implemented error"; + errorString["402"] = "Invalid set value, element is a keyword"; + errorString["403"] = "Element is read only"; + errorString["404"] = "Element is write only"; + errorString["405"] = "Incorrect data type"; + return errorString[param]; + } + + function LMSGetDiagnostic (param) { + return param; + } + + function AddTime (first, second) { + var sFirst = first.split(":"); + var sSecond = second.split(":"); + var change = 0; + + var secs = (Math.round((parseFloat(sFirst[2],10)+parseFloat(sSecond[2],10))*100))/100; //Seconds + change = Math.floor(secs / 60); + secs = secs - (change * 60); + if (Math.floor(secs) < 10) secs = "0" + secs.toString(); + + mins = parseInt(sFirst[1],10)+parseInt(sSecond[1],10)+change; //Minutes + change = Math.floor(mins / 60); + mins = mins - (change * 60); + if (mins < 10) mins = "0" + mins.toString(); + + hours = parseInt(sFirst[0],10)+parseInt(sSecond[0],10)+change; //Hours + if (hours < 10) hours = "0" + hours.toString(); + + return hours + ":" + mins + ":" + secs; + } + + function SaveTotalTime() { + cmi.core.total_time = AddTime(cmi.core.total_time, cmi.core.session_time); + //top.alert(cmi.core.total_time); + if (<?php echo $navObj ?>cmi.document.forms[0]) { + cmiform = <?php echo $navObj ?>cmi.document.forms[0]; + cmiform.reset(); + cmiform.scoid.value = "<?php echo $sco->id; ?>"; + cmiform.cmi_core_total_time.value = cmi.core.total_time; + cmiform.submit(); + //top.alert(cmi.core.total_time); + } + } + + this.SaveTotalTime = SaveTotalTime; + + this.LMSInitialize = LMSInitialize; + this.LMSGetValue = LMSGetValue; + this.LMSSetValue = LMSSetValue; + this.LMSCommit = LMSCommit; + this.LMSFinish = LMSFinish; + this.LMSGetLastError = LMSGetLastError; + this.LMSGetErrorString = LMSGetErrorString; + this.LMSGetDiagnostic = LMSGetDiagnostic; +} + +var API = new SCORMapi(); \ No newline at end of file diff --git a/mod/scorm/backuplib.php b/mod/scorm/backuplib.php index 35afad61217..8075e53da7d 100755 --- a/mod/scorm/backuplib.php +++ b/mod/scorm/backuplib.php @@ -1,21 +1,21 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //scorm mods //This is the "graphical" structure of the scorm mod: // - // scorm - // (CL,pk->id)--------------------- + // scorm + // (CL,pk->id)-------------------- // | | // | | // | | - // scorm_scoes | - // (UL,pk->id, fk->scorm) | + // scorm_scoes | + // (UL,pk->id, fk->scorm) | // | | // | | // | | - // scorm_scoes_track | - // (UL,k->id, fk->scormid, fk->scoid, k->element)--- + // scorm_sco_users | + // (UL,pk->id, fk->scormid, fk->scoid)---- // // Meaning: pk->primary key field of the table // fk->foreign key to link with parent @@ -45,16 +45,18 @@ fwrite ($bf,full_tag("REFERENCE",4,false,$scorm->reference)); fwrite ($bf,full_tag("MAXGRADE",4,false,$scorm->reference)); fwrite ($bf,full_tag("GRADEMETHOD",4,false,$scorm->reference)); + fwrite ($bf,full_tag("DATADIR",4,false,$scorm->datadir)); fwrite ($bf,full_tag("LAUNCH",4,false,$scorm->launch)); fwrite ($bf,full_tag("SUMMARY",4,false,$scorm->summary)); fwrite ($bf,full_tag("AUTO",4,false,$scorm->auto)); + fwrite ($bf,full_tag("POPUP",4,false,$scorm->popup)); fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$scorm->timemodified)); $status = backup_scorm_scoes($bf,$preferences,$scorm->id); - //if we've selected to backup users info, then execute backup_scorm_scoes_track + //if we've selected to backup users info, then execute backup_scorm_sco_users if ($status) { if ($preferences->mods["scorm"]->userinfo) { - $status = backup_scorm_scoes_track($bf,$preferences,$scorm->id); + $status = backup_scorm_sco_users($bf,$preferences,$scorm->id); } } //End mod @@ -77,7 +79,7 @@ $status = true; $scorm_scoes = get_records("scorm_scoes","scorm",$scorm,"id"); - //If there is scoes + //If there is submissions if ($scorm_scoes) { //Write start tag $status =fwrite ($bf,start_tag("SCOES",4,true)); @@ -92,13 +94,9 @@ fwrite ($bf,full_tag("PARENT",6,false,$sco->parent)); fwrite ($bf,full_tag("IDENTIFIER",6,false,$sco->identifier)); fwrite ($bf,full_tag("LAUNCH",6,false,$sco->launch)); - fwrite ($bf,full_tag("SCORMTYPE",6,false,$sco->scormtype)); + fwrite ($bf,full_tag("TYPE",6,false,$sco->type)); fwrite ($bf,full_tag("TITLE",6,false,$sco->title)); - fwrite ($bf,full_tag("PREREQUISITES",6,false,$sco->prerequisites)); - fwrite ($bf,full_tag("MAXTIMEALLOWED",6,false,$sco->maxtimeallowed)); - fwrite ($bf,full_tag("TIMELIMITACTION",6,false,$sco->timelimitaction)); fwrite ($bf,full_tag("DATAFROMLMS",6,false,$sco->datafromlms)); - fwrite ($bf,full_tag("MASTERYSCORE",6,false,$sco->masteryscore)); fwrite ($bf,full_tag("NEXT",6,false,$sco->next)); fwrite ($bf,full_tag("PREVIOUS",6,false,$sco->previous)); //End sco @@ -110,33 +108,38 @@ return $status; } - //Backup scorm_scoes_track contents (executed from scorm_backup_mods) - function backup_scorm_scoes_track ($bf,$preferences,$scorm) { + //Backup scorm_sco_users contents (executed from scorm_backup_mods) + function backup_scorm_sco_users ($bf,$preferences,$scorm) { global $CFG; $status = true; - $scorm_scoes_track = get_records("scorm_scoes_track","scormid",$scorm,"id"); - //If there is track - if ($scorm_scoes_track) { + $scorm_sco_users = get_records("scorm_sco_users","scormid",$scorm,"id"); + //If there is submissions + if ($scorm_sco_users) { //Write start tag - $status =fwrite ($bf,start_tag("SCO_TRACKS",4,true)); + $status =fwrite ($bf,start_tag("SCO_USERS",4,true)); //Iterate over each sco - foreach ($scorm_scoes_track as $sco_track) { - //Start sco track - $status =fwrite ($bf,start_tag("SCO_TRACK",5,true)); - //Print track contents - fwrite ($bf,full_tag("ID",6,false,$sco_track->id)); - fwrite ($bf,full_tag("USERID",6,false,$sco_track->userid)); - fwrite ($bf,full_tag("SCOID",6,false,$sco_track->scoid)); - fwrite ($bf,full_tag("ELEMENT",6,false,$sco_track->element)); - fwrite ($bf,full_tag("VALUE",6,false,$sco_track->value)); - //End sco track - $status =fwrite ($bf,end_tag("SCO_TRACK",5,true)); + foreach ($scorm_sco_users as $sco_user) { + //Start sco + $status =fwrite ($bf,start_tag("SCO_USER",5,true)); + //Print submission contents + fwrite ($bf,full_tag("ID",6,false,$sco_user->id)); + fwrite ($bf,full_tag("USERID",6,false,$sco_user->userid)); + fwrite ($bf,full_tag("SCOID",6,false,$sco_user->scoid)); + fwrite ($bf,full_tag("CMI_CORE_LESSON_LOCATION",6,false,$sco_user->cmi_core_lesson_location)); + fwrite ($bf,full_tag("CMI_CORE_LESSON_STATUS",6,false,$sco_user->cmi_core_lesson_status)); + fwrite ($bf,full_tag("CMI_CORE_EXIT",6,false,$sco_user->cmi_core_exit)); + fwrite ($bf,full_tag("CMI_CORE_TOTAL_TIME",6,false,$sco_user->cmi_core_total_time)); + fwrite ($bf,full_tag("CMI_CORE_SESSION_TIME",6,false,$sco_user->cmi_core_session_time)); + fwrite ($bf,full_tag("CMI_CORE_SCORE_RAW",6,false,$sco_user->cmi_core_score_raw)); + fwrite ($bf,full_tag("CMI_SUSPEND_DATA",6,false,$sco_user->cmi_suspend_data)); + //End sco + $status =fwrite ($bf,end_tag("SCO_USER",5,true)); } //Write end tag - $status =fwrite ($bf,end_tag("SCO_TRACKS",4,true)); + $status =fwrite ($bf,end_tag("SCO_USERS",4,true)); } return $status; } @@ -154,7 +157,7 @@ //Now, if requested, the user_data if ($user_data) { $info[1][0] = get_string("scoes","scorm"); - if ($ids = scorm_scoes_track_ids_by_course ($course)) { + if ($ids = scorm_sco_users_ids_by_course ($course)) { $info[1][1] = count($ids); } else { $info[1][1] = 0; @@ -199,12 +202,12 @@ } //Returns an array of scorm_scoes id - function scorm_scoes_track_ids_by_course ($course) { + function scorm_sco_users_ids_by_course ($course) { global $CFG; return get_records_sql ("SELECT s.id , s.scormid - FROM {$CFG->prefix}scorm_scoes_track s, + FROM {$CFG->prefix}scorm_sco_users s, {$CFG->prefix}scorm a WHERE a.course = '$course' AND s.scormid = a.id"); diff --git a/mod/scorm/cmi.php b/mod/scorm/cmi.php new file mode 100755 index 00000000000..254dd4aedf0 --- /dev/null +++ b/mod/scorm/cmi.php @@ -0,0 +1,78 @@ +<?php + require_once('../../config.php'); + require_once('lib.php'); + + optional_variable($id); // Course Module ID, or + optional_variable($a); // scorm ID + + if ($id) { + if (! $cm = get_record('course_modules', 'id', $id)) { + error('Course Module ID was incorrect'); + } + + if (! $course = get_record('course', 'id', $cm->course)) { + error('Course is misconfigured'); + } + + if (! $scorm = get_record('scorm', 'id', $cm->instance)) { + error('Course module is incorrect'); + } + + } else { + if (! $scorm = get_record('scorm', 'id', $a)) { + error('Course module is incorrect'); + } + if (! $course = get_record('course', 'id', $scorm->course)) { + error('Course is misconfigured'); + } + if (! $cm = get_coursemodule_from_instance('scorm', $scorm->id, $course->id)) { + error('Course Module ID was incorrect'); + } + } + + require_login($course->id); + if (!empty($_POST['scoid'])) { + //echo 'scoid: '.$_POST['scoid']."\n"; + if (!empty($_POST['cmi_core_lesson_location'])) { + set_field('scorm_sco_users','cmi_core_lesson_location',$_POST['cmi_core_lesson_location'],'scoid',$_POST['scoid'],'userid',$USER->id); + //echo 'cmi_core_lesson_location: '.$_POST['cmi_core_lesson_location']."\n"; + } + if (!empty($_POST['cmi_core_lesson_status'])) { + set_field('scorm_sco_users','cmi_core_lesson_status',$_POST['cmi_core_lesson_status'],'scoid',$_POST['scoid'],'userid',$USER->id); + //echo 'cmi_core_lesson_status: '.$_POST['cmi_core_lesson_status']."\n"; + } + if (!empty($_POST['cmi_core_exit'])) { + set_field('scorm_sco_users','cmi_core_exit',$_POST['cmi_core_exit'],'scoid',$_POST['scoid'],'userid',$USER->id); + //echo 'cmi_core_exit: '.$_POST['cmi_core_exit']."\n"; + } + if (!empty($_POST['cmi_core_score_raw'])) { + set_field('scorm_sco_users','cmi_core_score_raw',$_POST['cmi_core_score_raw'],'scoid',$_POST['scoid'],'userid',$USER->id); + //echo 'cmi_core_score_raw: '.$_POST['cmi_core_score_raw']."\n"; + } + if (!empty($_POST['cmi_suspend_data'])) { + set_field('scorm_sco_users','cmi_suspend_data',$_POST['cmi_suspend_data'],'scoid',$_POST['scoid'],'userid',$USER->id); + //echo 'cmi_suspend_data: '.$_POST['cmi_suspend_data']."\n"; + } + if (!empty($_POST['cmi_core_total_time'])) { + set_field('scorm_sco_users','cmi_core_total_time',$_POST['cmi_core_total_time'],'scoid',$_POST['scoid'],'userid',$USER->id); + //echo 'cmi_core_total_time: '.$_POST['cmi_core_total_time']."\n"; + } + } +?> +<html> +<head> + <title>cmi</title> +</head> +<body> + <form name="theform" method="POST" action="<?php echo $ME ?>?id=<?php echo $cm->id ?>"> + <input type="hidden" name="scoid" /> + <input type="hidden" name="cmi_core_lesson_location" /> + <input type="hidden" name="cmi_core_lesson_status" /> + <input type="hidden" name="cmi_core_exit" /> + <input type="hidden" name="cmi_core_total_time" /> + <input type="hidden" name="cmi_core_score_raw" /> + <input type="hidden" name="cmi_suspend_data" /> + + </form> +</body> +</html> diff --git a/mod/scorm/config.html b/mod/scorm/config.html index d25d383cea3..cc56c38d391 100755 --- a/mod/scorm/config.html +++ b/mod/scorm/config.html @@ -1,9 +1,8 @@ <form method="post" action="module.php" name="form"> -<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>"> -<table cellpadding="9" cellspacing="0" > -<tr valign="top"> - <td align="right">scorm_validate:</td> +<table cellpadding=9 cellspacing=0 > +<tr valign=top> + <td align=right><p>scorm_validate:</td> <td> <?php unset($choices); @@ -21,9 +20,49 @@ <?php print_string("validationtype", "scorm") ?> </td> </tr> +<tr valign=top> + <td align=right><p>scorm_framesize:</td> + <td> + <input name=scorm_framesize type=text size=5 value="<?php p($CFG->scorm_framesize) ?>"> + </td> + <td> + <?php print_string("configframesize", "scorm") ?> + </td> +</tr> +<tr valign=top> + <td align=right><p>scorm_popup:</td> + <td> + <?php + unset($choices); + $choices[""] = get_string("no"); + $choices["checked"] = get_string("yes"); + choose_from_menu ($choices, "scorm_popup", $CFG->scorm_popup, ""); + ?> + </td> + <td> + <?php print_string("configpopup", "scorm") ?> + </td> +</tr> +<?php foreach ($SCORM_WINDOW_OPTIONS as $optionname) { + $defaultvalue = "scorm_popup$optionname"; + echo "<tr valign=top>"; + echo "<td align=right><p>$defaultvalue:</td>"; + echo "<td>"; + if ($optionname == "height" or $optionname == "width") { + echo "<input name=$defaultvalue type=text size=5 value=\"".$CFG->$defaultvalue."\">"; + } else { + choose_from_menu ($choices, $defaultvalue, $CFG->$defaultvalue, ""); + } + echo "</td>"; + echo "<td>"; + print_string("configpopup$optionname", "scorm"); + echo "</td>"; + echo "</tr>"; + } +?> <tr> - <td colspan="3" align="center"> - <input type="submit" value="<?php print_string("savechanges") ?>" /> + <td colspan=3 align=center> + <input type="submit" value="<?php print_string("savechanges") ?>"> </td> </tr> </table> diff --git a/mod/scorm/coursefiles.php b/mod/scorm/coursefiles.php new file mode 100755 index 00000000000..b514910f053 --- /dev/null +++ b/mod/scorm/coursefiles.php @@ -0,0 +1,855 @@ +<?PHP // $Id$ + +// Manage ONLY ZIP & PIF uploaded files in a course file area + +// This file is a hack to files/index.php that removes +// the headers and adds some controls so that images +// can be selected within the Richtext editor. + +// All the Moodle-specific stuff is in this top section +// Configuration and access control occurs here. +// Must define: USER, basedir, baseweb, html_header and html_footer +// USER is a persistent variable using sessions + + require("../../config.php"); + require("../../files/mimetypes.php"); + + require_variable($id); + optional_variable($file, ""); + optional_variable($wdir, ""); + optional_variable($action, ""); + + if (! $course = get_record("course", "id", $id) ) { + error("That's an invalid course id"); + } + + require_login($course->id); + + if (! isteacher($course->id) ) { + error("Only teachers can edit files"); + } + + function html_footer() { + echo "</td></tr></table></body></html>"; + } + + function html_header($course, $wdir, $formfield=""){ + + global $CFG,$THEME,$ME; + + if (! $site = get_site()) { + error("Invalid site!"); + } + + if ($course->id == $site->id) { + $strfiles = get_string("sitefiles"); + } else { + $strfiles = get_string("files"); + } + + if ($wdir == "/") { + $fullnav = "$strfiles"; + } else { + $dirs = explode("/", $wdir); + $numdirs = count($dirs); + $link = ""; + $navigation = ""; + for ($i=1; $i<$numdirs; $i++) { + $navigation .= " -> "; + $link .= "/".urlencode($dirs[$i]); + $navigation .= "<a href=\"".$ME."?id=$course->id&wdir=$link\">".$dirs[$i]."</a>"; + } + $fullnav = "<a href=\"".$ME."?id=$course->id&wdir=/\">$strfiles</a> $navigation"; + } + + print_header(); + ?> + <script language="javascript" type="text/javascript"> + <!-- + function set_value(txt) { + opener.document.forms['form'].reference.value = txt; + window.close(); + } + --> + </script> + <?php + + echo '<table border="0" cellpadding="3" cellspacing="0" width="100%">'; + echo '<tr>'; + echo '<td bgcolor="'.$THEME->cellheading.'" class="navbar">'; + echo '<font size="2"><b>'."$course->shortname -> $fullnav".'</b></font>'; + echo '</td>'; + echo '</tr>'; + echo '</table>'; + + if ($course->id == $site->id) { + print_heading(get_string("publicsitefileswarning"), "center", 2); + } + + echo "<table border=0 align=center cellspacing=3 cellpadding=3 width=640>"; + echo "<tr>"; + echo "<td colspan=\"2\">"; + } + + if (! $basedir = make_upload_directory("$course->id")) { + error("The site administrator needs to fix the file permissions"); + } + + $baseweb = $CFG->wwwroot; + +// End of configuration and access control + + + $regexp="\\.\\."; + if (ereg( $regexp, $file, $regs )| ereg( $regexp, $wdir,$regs )) { + $message = "Error: Directories can not contain \"..\""; + $wdir = "/"; + $action = ""; + } + + if (!$wdir) { + $wdir="/"; + } + + + switch ($action) { + + case "upload": + html_header($course, $wdir); + + if (!empty($_FILES['userfile'])) { + $userfile = $_FILES['userfile']; + } else { + $save = false; + } + if (!empty($save)) { + if (!is_uploaded_file($userfile['tmp_name']) or $userfile['size'] == 0) { + notify(get_string("uploadnofilefound")); + } else { + $userfile_name = clean_filename($userfile['name']); + if ($userfile_name) { + $newfile = "$basedir$wdir/$userfile_name"; + if (move_uploaded_file($userfile['tmp_name'], $newfile)) { + chmod($newfile, 0666); + $a = NULL; + $a->file = "$userfile_name (".$userfile['type'].")"; + $a->directory = $wdir; + print_string("uploadedfileto", "", $a); + } else { + notify(get_string("uploadproblem", "", $userfile_name)); + } + } + } + displaydir($wdir); + + } else { + $upload_max_filesize = get_max_upload_file_size($CFG->maxbytes); + $filesize = display_size($upload_max_filesize); + + $struploadafile = get_string("uploadafile"); + $struploadthisfile = get_string("uploadthisfile"); + $strmaxsize = get_string("maxsize", "", $filesize); + $strcancel = get_string("cancel"); + + echo "<P>$struploadafile ($strmaxsize) --> <B>$wdir</B>"; + echo "<TABLE><TR><TD COLSPAN=2>"; + echo "<FORM ENCTYPE=\"multipart/form-data\" METHOD=\"post\" ACTION=\"".$ME."\">"; + echo " <INPUT TYPE=hidden NAME=MAX_FILE_SIZE value=\"$upload_max_filesize\">"; + 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 NAME=\"userfile\" TYPE=\"file\" size=\"60\">"; + echo " </TD><TR><TD WIDTH=10>"; + echo " <INPUT TYPE=submit NAME=save VALUE=\"$struploadthisfile\">"; + echo "</FORM>"; + echo "</TD><TD WIDTH=100%>"; + echo "<FORM ACTION=\"".$ME."\" 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=\"$strcancel\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } + html_footer(); + break; + + case "delete": + if (!empty($confirm)) { + html_header($course, $wdir); + foreach ($USER->filelist as $file) { + $fullfile = $basedir.$file; + if (! fulldelete($fullfile)) { + echo "<BR>Error: Could not delete: $fullfile"; + } + } + clearfilelist(); + displaydir($wdir); + html_footer(); + + } else { + html_header($course, $wdir); + if (setfilelist($_POST)) { + echo "<p align=center>".get_string("deletecheckwarning").":</p>"; + print_simple_box_start("center"); + printfilelist($USER->filelist); + print_simple_box_end(); + echo "<br />"; + notice_yesno (get_string("deletecheckfiles"), + "".basename($ME)."?id=$id&wdir=$wdir&action=delete&confirm=1", + "".basename($ME)."?id=$id&wdir=$wdir&action=cancel"); + } else { + displaydir($wdir); + } + html_footer(); + } + break; + + case "move": + html_header($course, $wdir); + if ($count = setfilelist($_POST)) { + $USER->fileop = $action; + $USER->filesource = $wdir; + echo "<p align=center>"; + print_string("selectednowmove", "moodle", $count); + echo "</p>"; + } + displaydir($wdir); + html_footer(); + break; + + case "paste": + html_header($course, $wdir); + if (isset($USER->fileop) and $USER->fileop == "move") { + foreach ($USER->filelist as $file) { + $shortfile = basename($file); + $oldfile = $basedir.$file; + $newfile = $basedir.$wdir."/".$shortfile; + if (!rename($oldfile, $newfile)) { + echo "<P>Error: $shortfile not moved"; + } + } + } + clearfilelist(); + displaydir($wdir); + html_footer(); + break; + + case "rename": + if (!empty($name)) { + html_header($course, $wdir); + $name = clean_filename($name); + if (file_exists($basedir.$wdir."/".$name)) { + echo "Error: $name already exists!"; + } else if (!rename($basedir.$wdir."/".$oldname, $basedir.$wdir."/".$name)) { + echo "Error: could not rename $oldname to $name"; + } + displaydir($wdir); + + } else { + $strrename = get_string("rename"); + $strcancel = get_string("cancel"); + $strrenamefileto = get_string("renamefileto", "moodle", $file); + html_header($course, $wdir, "form.name"); + echo "<P>$strrenamefileto:"; + echo "<TABLE><TR><TD>"; + echo "<FORM ACTION=\"".$ME."\" METHOD=\"post\" NAME=\"form\">"; + echo " <INPUT TYPE=hidden NAME=id VALUE=$id>"; + echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>"; + echo " <INPUT TYPE=hidden NAME=action VALUE=rename>"; + echo " <INPUT TYPE=hidden NAME=oldname VALUE=\"$file\">"; + echo " <INPUT TYPE=text NAME=name SIZE=35 VALUE=\"$file\">"; + echo " <INPUT TYPE=submit VALUE=\"$strrename\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$ME."\" 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=\"$strcancel\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } + html_footer(); + break; + + case "mkdir": + if (!empty($name)) { + html_header($course, $wdir); + $name = clean_filename($name); + if (file_exists("$basedir$wdir/$name")) { + echo "Error: $name already exists!"; + } else if (! make_upload_directory("$course->id/$wdir/$name")) { + echo "Error: could not create $name"; + } + displaydir($wdir); + + } else { + $strcreate = get_string("create"); + $strcancel = get_string("cancel"); + $strcreatefolder = get_string("createfolder", "moodle", $wdir); + html_header($course, $wdir, "form.name"); + echo "<P>$strcreatefolder:"; + echo "<TABLE><TR><TD>"; + echo "<FORM ACTION=\"".$ME."\" METHOD=post NAME=form>"; + 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=text NAME=name SIZE=35>"; + echo " <INPUT TYPE=submit VALUE=\"$strcreate\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$ME."\" 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=\"$strcancel\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } + html_footer(); + break; + + case "edit": + html_header($course, $wdir); + if (isset($text)) { + $fileptr = fopen($basedir.$file,"w"); + fputs($fileptr, stripslashes($text)); + fclose($fileptr); + displaydir($wdir); + + } else { + $streditfile = get_string("edit", "", "<B>$file</B>"); + $fileptr = fopen($basedir.$file, "r"); + $contents = fread($fileptr, filesize($basedir.$file)); + fclose($fileptr); + + if (mimeinfo("type", $file) == "text/html") { + if ($usehtmleditor = can_use_richtext_editor()) { + $onsubmit = "onsubmit=\"copyrichtext(document.form.text);\""; + } else { + $onsubmit = ""; + } + } else { + $usehtmleditor = false; + $onsubmit = ""; + } + + print_heading("$streditfile"); + + echo "<TABLE><TR><TD COLSPAN=2>"; + echo "<FORM ACTION=\"".$ME."\" METHOD=\"post\" NAME=\"form\" $onsubmit>"; + echo " <INPUT TYPE=hidden NAME=id VALUE=$id>"; + echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">"; + echo " <INPUT TYPE=hidden NAME=file VALUE=\"$file\">"; + echo " <INPUT TYPE=hidden NAME=action VALUE=edit>"; + print_textarea($usehtmleditor, 25, 80, 680, 400, "text", $contents); + echo "</TD></TR><TR><TD>"; + echo " <INPUT TYPE=submit VALUE=\"".get_string("savechanges")."\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$ME."\" 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=\"".get_string("cancel")."\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + + if ($usehtmleditor) { + print_richedit_javascript("form", "text", "yes"); + } + + + } + html_footer(); + break; + + case "zip": + if (!empty($name)) { + html_header($course, $wdir); + $name = clean_filename($name); + if (empty($CFG->zip)) { // Use built-in php-based zip function + $files = array(); + foreach ($USER->filelist as $file) { + $files[] = "$basedir/$file"; + } + include_once($CFG->libdir.'/pclzip/pclzip.lib.php'); + $archive = new PclZip("$basedir/$wdir/$name"); + if (($list = $archive->create($files,'',"$basedir/$wdir/")) == 0) { + error($archive->errorInfo(true)); + } + } else { // Use external zip program + $files = ""; + foreach ($USER->filelist as $file) { + $files .= basename($file); + $files .= " "; + } + $command = "cd $basedir/$wdir ; $CFG->zip -r $name $files"; + Exec($command); + } + clearfilelist(); + displaydir($wdir); + + } else { + html_header($course, $wdir, "form.name"); + + if (setfilelist($_POST)) { + echo "<P ALIGN=CENTER>".get_string("youareabouttocreatezip").":</P>"; + print_simple_box_start("center"); + printfilelist($USER->filelist); + print_simple_box_end(); + echo "<BR>"; + echo "<P ALIGN=CENTER>".get_string("whattocallzip"); + echo "<TABLE><TR><TD>"; + echo "<FORM ACTION=\"".$ME."\" METHOD=post NAME=form>"; + echo " <INPUT TYPE=hidden NAME=id VALUE=$id>"; + echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">"; + echo " <INPUT TYPE=hidden NAME=action VALUE=zip>"; + echo " <INPUT TYPE=text NAME=name SIZE=35 VALUE=\"new.zip\">"; + echo " <INPUT TYPE=submit VALUE=\"".get_string("createziparchive")."\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$ME."\" 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=\"".get_string("cancel")."\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } else { + displaydir($wdir); + clearfilelist(); + } + } + html_footer(); + break; + + case "unzip": + html_header($course, $wdir); + if (!empty($file)) { + $strname = get_string("name"); + $strsize = get_string("size"); + $strmodified = get_string("modified"); + $strstatus = get_string("status"); + $strok = get_string("ok"); + $strunpacking = get_string("unpacking", "", $file); + + echo "<P ALIGN=CENTER>$strunpacking:</P>"; + + $file = basename($file); + + if (empty($CFG->unzip)) { // Use built-in php-based unzip function + include_once($CFG->libdir.'/pclzip/pclzip.lib.php'); + $archive = new PclZip("$basedir/$wdir/$file"); + if (!$list = $archive->extract("$basedir/$wdir")) { + error($archive->errorInfo(true)); + } else { // print some output + echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=640>"; + echo "<tr><th align=left>$strname</th>"; + echo "<th align=right>$strsize</th>"; + echo "<th align=right>$strmodified</th>"; + echo "<th align=right>$strstatus</th></tr>"; + foreach ($list as $item) { + echo "<tr>"; + $item['filename'] = str_replace("$basedir/$wdir/", "", $item['filename']); + print_cell("left", $item['filename']); + if (! $item['folder']) { + print_cell("right", display_size($item['size'])); + } else { + echo "<td>&nbsp;</td>"; + } + $filedate = userdate($item['mtime'], get_string("strftimedatetime")); + print_cell("right", $filedate); + print_cell("right", $item['status']); + echo "</tr>"; + } + echo "</table>"; + } + + } else { // Use external unzip program + print_simple_box_start("center"); + echo "<PRE>"; + $command = "cd $basedir/$wdir ; $CFG->unzip -o $file 2>&1"; + passthru($command); + echo "</PRE>"; + print_simple_box_end(); + } + + echo "<CENTER><FORM ACTION=\"".$ME."\" 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=\"$strok\">"; + echo "</FORM>"; + echo "</CENTER>"; + } else { + displaydir($wdir); + } + html_footer(); + break; + + case "listzip": + html_header($course, $wdir); + if (!empty($file)) { + $strname = get_string("name"); + $strsize = get_string("size"); + $strmodified = get_string("modified"); + $strok = get_string("ok"); + $strlistfiles = get_string("listfiles", "", $file); + + echo "<P ALIGN=CENTER>$strlistfiles:</P>"; + $file = basename($file); + + include_once($CFG->libdir.'/pclzip/pclzip.lib.php'); + $archive = new PclZip("$basedir/$wdir/$file"); + if (!$list = $archive->listContent("$basedir/$wdir")) { + notify($archive->errorInfo(true)); + + } else { + echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=640>"; + echo "<tr><th align=left>$strname</th><th align=right>$strsize</th><th align=right>$strmodified</th></tr>"; + foreach ($list as $item) { + echo "<tr>"; + print_cell("left", $item['filename']); + if (! $item['folder']) { + print_cell("right", display_size($item['size'])); + } else { + echo "<td>&nbsp;</td>"; + } + $filedate = userdate($item['mtime'], get_string("strftimedatetime")); + print_cell("right", $filedate); + echo "</tr>"; + } + echo "</table>"; + } + echo "<br><center><form action=\"".$ME."\" 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=\"$strok\">"; + echo "</FORM>"; + echo "</CENTER>"; + } else { + displaydir($wdir); + } + html_footer(); + break; + + case "torte": + if($_POST) + { + while(list($key, $val) = each($_POST)) + { + if(ereg("file([0-9]+)", $key, $regs)) + { + $file = $val; + } + } + if(@filetype($CFG->dataroot ."/". $course->id . $file) == "file") + { + if(mimeinfo("icon", $file) == "image.gif") + { + $url = $CFG->wwwroot ."/file.php?file=/" .$course->id . $file; + runjavascript($url); + } + else + { + print "File is not a image!"; + } + } + else + { + print "You cannot insert FOLDER into richtext editor!!!"; + } + } + break; + case "cancel"; + clearfilelist(); + + default: + html_header($course, $wdir); + displaydir($wdir); + html_footer(); + break; +} + + +/// FILE FUNCTIONS /////////////////////////////////////////////////////////// + + +function fulldelete($location) { + if (is_dir($location)) { + $currdir = opendir($location); + while ($file = readdir($currdir)) { + if ($file <> ".." && $file <> ".") { + $fullfile = $location."/".$file; + if (is_dir($fullfile)) { + if (!fulldelete($fullfile)) { + return false; + } + } else { + if (!unlink($fullfile)) { + return false; + } + } + } + } + closedir($currdir); + if (! rmdir($location)) { + return false; + } + + } else { + if (!unlink($location)) { + return false; + } + } + return true; +} + + + +function setfilelist($VARS) { + global $USER; + + $USER->filelist = array (); + $USER->fileop = ""; + + $count = 0; + foreach ($VARS as $key => $val) { + if (substr($key,0,4) == "file") { + $count++; + $USER->filelist[] = rawurldecode($val); + } + } + return $count; +} + +function clearfilelist() { + global $USER; + + $USER->filelist = array (); + $USER->fileop = ""; +} + + +function printfilelist($filelist) { + global $basedir, $CFG; + + foreach ($filelist as $file) { + if (is_dir($basedir.$file)) { + echo "<img src=\"$CFG->pixpath/f/folder.gif\" height=16 width=16> $file<br>"; + $subfilelist = array(); + $currdir = opendir($basedir.$file); + while ($subfile = readdir($currdir)) { + if ($subfile <> ".." && $subfile <> ".") { + $subfilelist[] = $file."/".$subfile; + } + } + printfilelist($subfilelist); + + } else { + $icon = mimeinfo("icon", $file); + echo "<img src=\"$CFG->pixpath/f/$icon\" height=16 width=16> $file<br>"; + } + } +} + + +function print_cell($alignment="center", $text="&nbsp;") { + echo "<TD ALIGN=\"$alignment\" NOWRAP>"; + echo "<FONT SIZE=\"-1\" FACE=\"Arial, Helvetica\">"; + echo "$text"; + echo "</FONT>"; + echo "</TD>\n"; +} + +function displaydir ($wdir) { +// $wdir == / or /a or /a/b/c/d etc + + global $basedir; + global $id; + global $USER, $CFG, $ME; + + $fullpath = $basedir.$wdir; + + $directory = opendir($fullpath); // Find all files + while ($file = readdir($directory)) { + if ($file == "." || $file == "..") { + continue; + } + + if (is_dir($fullpath."/".$file)) { + $dirlist[] = $file; + } else { + if ((basename(strtolower($file),".zip") != basename(strtolower($file))) || (basename(strtolower($file),".pif") != basename(strtolower($file)))) + $filelist[] = $file; + } + } + 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"); + $strlist = get_string("list"); + $strchoose = get_string("choose"); + + + echo "<FORM ACTION=\"".$ME."\" METHOD=post NAME=dirform>"; + echo "<TABLE BORDER=0 cellspacing=2 cellpadding=2 width=640>"; + echo "<TR>"; + echo "<TH WIDTH=5></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 = ""; + } + + $count = 0; + + if (!empty($dirlist)) { + asort($dirlist); + foreach ($dirlist as $dir) { + + $count++; + + $filename = $fullpath."/".$dir; + $fileurl = rawurlencode($wdir."/".$dir); + $filesafe = rawurlencode($dir); + $filedate = userdate(filectime($filename), "%d %b %Y, %I:%M %p"); + + echo "<TR>"; + + print_cell("center", "<INPUT TYPE=checkbox NAME=\"file$count\" VALUE=\"$fileurl\">"); + print_cell("left", "<A HREF=\"".basename($ME)."?id=$id&wdir=$fileurl\"><IMG SRC=\"$CFG->pixpath/f/folder.gif\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"Folder\"></A> <A HREF=\"".basename($ME)."?id=$id&wdir=$fileurl\">".htmlspecialchars($dir)."</A>"); + print_cell("right", "-"); + print_cell("right", $filedate); + print_cell("right", "<A HREF=\"".basename($ME)."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>"); + + echo "</TR>"; + } + } + + + if (!empty($filelist)) { + asort($filelist); + foreach ($filelist as $file) { + + $icon = mimeinfo("icon", $file); + + $count++; + $filename = "$fullpath/$file"; + $fileurl = "$wdir/$file"; + $filesafe = rawurlencode($file); + $fileurlsafe = rawurlencode($fileurl); + $filedate = userdate(filectime($filename), "%d %b %Y, %I:%M %p"); + + if (substr($fileurl,0,1) == '/') { + $selectfile = substr($fileurl,1); + } else { + $selectfile = $fileurl; + } + if ($CFG->slasharguments) { + $ffurl = "/file.php/$id$fileurl"; + } else { + $ffurl = "/file.php?file=/$id$fileurl"; + } + + echo "<tr>"; + + print_cell("center", "<input type=\"checkbox\" name=\"file$count\" value=\"$fileurl\">"); + + echo "<td align=left nowrap>"; + link_to_popup_window ($ffurl, "display", + "<img src=\"$CFG->pixpath/f/$icon\" height=16 width=16 border=0 alt=\"file\">", + 480, 640); + echo "<font size=\"-1\" face=\"Arial, Helvetica\">"; + link_to_popup_window ($ffurl, "display", htmlspecialchars($file), 480, 640); + echo "</font></td>"; + + $file_size = filesize($filename); + print_cell("right", display_size($file_size)); + print_cell("right", $filedate); + + $edittext = "<b><a onMouseDown=\"return set_value('$selectfile')\" href=\"\">$strchoose</a></b>&nbsp;"; + + if ($icon == "text.gif" || $icon == "html.gif") { + $edittext .= "<a href=\"".basename($ME)."?id=$id&wdir=$wdir&file=$fileurl&action=edit\">$stredit</a>"; + } else if ($icon == "zip.gif") { + $edittext .= "<a href=\"".basename($ME)."?id=$id&wdir=$wdir&file=$fileurl&action=unzip\">$strunzip</a>&nbsp;"; + $edittext .= "<a href=\"".basename($ME)."?id=$id&wdir=$wdir&file=$fileurl&action=listzip\">$strlist</a> "; + } + + print_cell("right", "$edittext <A HREF=\"".basename($ME)."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>"); + + echo "</tr>"; + } + } + echo "</table>"; + echo "<hr width=640 align=center noshade size=1>"; + + if (empty($wdir)) { + $wdir = "/"; + } + + echo "<TABLE BORDER=0 cellspacing=2 cellpadding=2 width=640>"; + echo "<TR><TD>"; + echo "<INPUT TYPE=hidden NAME=id VALUE=\"$id\">"; + echo "<INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\"> "; + $options = array ( + "move" => "$strmovetoanotherfolder", + "delete" => "$strdeletecompletely", + "zip" => "$strcreateziparchive" + ); + if (!empty($count)) { + choose_from_menu ($options, "action", "", "$strwithchosenfiles...", "javascript:document.dirform.submit()"); + } + + echo "</FORM>"; + echo "<TD ALIGN=center>"; + if (!empty($USER->fileop) and ($USER->fileop == "move") and ($USER->filesource <> $wdir)) { + echo "<FORM ACTION=\"".$ME."\" 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=paste>"; + echo " <INPUT TYPE=submit VALUE=\"$strmovefilestohere\">"; + echo "</FORM>"; + } + echo "<TD ALIGN=right>"; + echo "<FORM ACTION=\"".$ME."\" 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=mkdir>"; + echo " <INPUT TYPE=submit VALUE=\"$strmakeafolder\">"; + echo "</FORM>"; + echo "</TD>"; + echo "<TD ALIGN=right>"; + echo "<FORM ACTION=\"".$ME."\" 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=upload>"; + echo " <INPUT TYPE=submit VALUE=\"$struploadafile\">"; + echo "</FORM>"; + echo "</TD></TR>"; + echo "</TABLE>"; + echo "<HR WIDTH=640 ALIGN=CENTER NOSHADE SIZE=1>"; + +} + +?> diff --git a/mod/scorm/datamodel.php b/mod/scorm/datamodel.php deleted file mode 100755 index 910a4ea22f1..00000000000 --- a/mod/scorm/datamodel.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - require_once('../../config.php'); - require_once('lib.php'); - - optional_variable($id); // Course Module ID, or - optional_variable($a); // scorm ID - - if ($id) { - if (! $cm = get_record('course_modules', 'id', $id)) { - error('Course Module ID was incorrect'); - } - - if (! $course = get_record('course', 'id', $cm->course)) { - error('Course is misconfigured'); - } - - if (! $scorm = get_record('scorm', 'id', $cm->instance)) { - error('Course module is incorrect'); - } - - } else { - if (! $scorm = get_record('scorm', 'id', $a)) { - error('Course module is incorrect'); - } - if (! $course = get_record('course', 'id', $scorm->course)) { - error('Course is misconfigured'); - } - if (! $cm = get_coursemodule_from_instance('scorm', $scorm->id, $course->id)) { - error('Course Module ID was incorrect'); - } - } - - require_login($course->id, false, $cm); - - - if (isset($_GET['call']) && confirm_sesskey()) { - if (strstr($_GET['call'],'LMS') !== false) { - // SCORM 1.2 Call - //require_once('datamodels/scorm1_2.php'); - } else { - // SCORM 1.3 (aka SCORM 2004) Call - //require_once('datamodels/scorm1_3.php'); - } - } -?> - diff --git a/mod/scorm/datamodels/scorm1_2.js.php b/mod/scorm/datamodels/scorm1_2.js.php deleted file mode 100644 index d4dbea71570..00000000000 --- a/mod/scorm/datamodels/scorm1_2.js.php +++ /dev/null @@ -1,298 +0,0 @@ - // Standard Data Type Definition - CMIString255 = '^.{0,255}$'; - CMIString4096 = '^[.|\\n|\\r]{0,4096}$'; - CMITime = '^([0-9]{2}):([0-9]{2}):([0-9]{2})(\.[0-9]{1,2})?$'; - CMITimespan = '^([0-9]{2,4}):([0-9]{2}):([0-9]{2})(\.[0-9]{1,2})?$'; - CMIInteger = '^\\d+$'; - CMISInteger = '^-?([0-9]+)$'; - CMIDecimal = '^[0-9]?(\.[0-9]{1,2})?$'; - CMIIdentifier = '^\\w{0,255}$'; - CMIFeedback = CMIString255; // This must be redefined - CMIIndex = '.\\d+.'; - // Vocabulary Data Type Definition - CMIStatus = '^passed|completed|failed|incomplete|browsed|not attempted$'; - CMIExit = '^time-out|suspend|logout|$'; - CMIType = '^true-false|choice|fill-in|matching|performance|sequencing|likert|numeric$'; - CMIResult = '^correct|wrong|unanticipated|neutral|[0-9]?(\.[0-9]{1,2})?$'; - // Children lists - cmi_children = 'core, suspend_data, launch_data, comments, objectives, student_data, student_preference, interactions'; - core_children = 'student_id, student_name, lesson_location, credit, lesson_status, entry, score, total_time, lesson_mode, exit, session_time'; - score_children = 'raw, min, max'; - objectives_children = 'id, score, status'; - student_data_children = 'mastery_score, max_time_allowed, time_limit_action'; - student_preference_children = 'audio, language, speed, text'; - interactions_children = 'id, objectives, time, type, correct_responses, weighting, student_response, result, latency'; - // Data ranges - score_range = '0#100'; - audio_range = '-1#100'; - speed_range = '-100#100'; - text_range = '-1#1'; - // The SCORM 1.2 data model - var datamodel = { - 'cmi._children':{'defaultvalue':cmi_children, 'mod':'r', 'writeerror':'402'}, - 'cmi._version':{'defaultvalue':'3.4', 'mod':'r', 'writeerror':'402'}, - 'cmi.core._children':{'defaultvalue':core_children, 'mod':'r', 'writeerror':'402'}, - 'cmi.core.student_id':{'defaultvalue':'<?php echo $user->username ?>', 'mod':'r', 'writeerror':'403'}, - 'cmi.core.student_name':{'defaultvalue':'<?php echo $user->lastname.', '.$user->firstname ?>', 'mod':'r', 'writeerror':'403'}, - 'cmi.core.lesson_location':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'}, - 'cmi.core.credit':{'mod':'r', 'writeerror':'403'}, - 'cmi.core.lesson_status':{'format':CMIStatus, 'mod':'rw', 'writeerror':'405'}, - 'cmi.core.entry':{'mod':'r', 'writeerror':'403'}, - 'cmi.core.score._children':{'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'}, - 'cmi.core.score.raw':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.core.score.max':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.core.score.min':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.core.total_time':{'mod':'r', 'writeerror':'403'}, - 'cmi.core.lesson_mode':{'mod':'r', 'writeerror':'405'}, - 'cmi.core.exit':{'format':CMIExit, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.core.session_time':{'format':CMITimespan, 'mod':'w', 'defaultvalue':'00:00:00', 'readerror':'404', 'writeerror':'405'}, - 'cmi.suspend_data':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'}, - 'cmi.launch_data':{'mod':'r', 'writeerror':'403'}, - 'cmi.comments':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'}, - 'cmi.comments_from_lms':{'mod':'r', 'writeerror':'403'}, - 'cmi.objectives._children':{'defaultvalue':objectives_children, 'mod':'r', 'writeerror':'403'}, - 'cmi.objectives._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, - 'cmi.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'rw', 'writeerror':'405'}, - 'cmi.objectives.n.score._children':{'pattern':CMIIndex, 'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'}, - 'cmi.objectives.n.score.raw':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.objectives.n.score.min':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.objectives.n.score.max':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.objectives.n.status':{'pattern':CMIIndex, 'format':CMIStatus, 'mod':'rw', 'writeerror':'405'}, - 'cmi.student_data._children':{'defaultvalue':student_data_children, 'mod':'r', 'writeerror':'403'}, - 'cmi.student_data.mastery_score':{'mod':'r', 'writeerror':'403'}, - 'cmi.student_data.max_time_allowed':{'mod':'r', 'writeerror':'403'}, - 'cmi.student_data.time_limit_action':{'mod':'r', 'writeerror':'403'}, - 'cmi.student_preference._children':{'defaultvalue':student_preference_children, 'mod':'r', 'writeerror':'403'}, - 'cmi.student_preference.audio':{'format':CMISInteger, 'range':audio_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.student_preference.language':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'}, - 'cmi.student_preference.speed':{'format':CMISInteger, 'range':speed_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.student_preference.text':{'format':CMISInteger, 'range':text_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.interactions._children':{'defaultvalue':interactions_children, 'mod':'r', 'writeerror':'403'}, - 'cmi.interactions._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, - 'cmi.interactions.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.objectives._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, - 'cmi.interactions.n.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.time':{'pattern':CMIIndex, 'format':CMITime, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.type':{'pattern':CMIIndex, 'format':CMIType, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.correct_responses._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, - 'cmi.interactions.n.correct_responses.n.pattern':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.weighting':{'pattern':CMIIndex, 'format':CMIDecimal, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.student_response':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.result':{'pattern':CMIIndex, 'format':CMIResult, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.latency':{'pattern':CMIIndex, 'format':CMITimespan, 'mod':'w', 'readerror':'404', 'writeerror':'405'} - }; - // - // Datamodel inizialization - // - var cmi = new Object(); - cmi.core = new Object(); - cmi.core.score = new Object(); - cmi.objectives = new Object(); - cmi.student_data = new Object(); - cmi.student_preference = new Object(); - cmi.interactions = new Object(); - var nav = new Object(); - for (element in datamodel) { - if (element.match(/\.n\./) == null) { - //alert (element+' = '+eval('datamodel["'+element+'"].defaultvalue')); - if ((typeof eval('datamodel["'+element+'"].defaultvalue')) != 'undefined') { - eval(element+' = datamodel["'+element+'"].defaultvalue;'); - } else { - eval(element+' = "";'); - } - //alert (element+' = '+eval(element)); - } - } - - // - // API Methods definition - // - var Initialized = false; - - function LMSInitialize (param) { - if (param == "") { - if (!Initialized) { - Initialized = true; - errorCode = "0"; - return "true"; - } else { - errorCode = "101"; - } - } else { - errorCode = "201"; - } - return "false"; - } - - function LMSFinish (param) { - if (param == "") { - if (Initialized) { - LMSCommit(""); - Initialized = false; - errorCode = "0"; - return "true"; - } else { - errorCode = "301"; - } - } else { - errorCode = "201"; - } - } - - function LMSGetValue (element) { - if (Initialized) { - if (element !="") { - expression = new RegExp(CMIIndex,'g'); - element = element.replace(expression,'.n.'); - if ((typeof eval('datamodel["'+element+'"]')) != "undefined") { - if (eval('datamodel["'+element+'"].mod') != 'w') { - errorCode = "0"; - return eval(element); - } else { - errorCode = eval('datamodel["'+element+'"].readerror'); - } - } else { - errorCode = "401" - } - } else { - errorCode = "201"; - } - } else { - errorCode = "301"; - } - return ""; - } - - function LMSSetValue (element,value) { - if (Initialized) { - if (element != "") { - //alert('LMSSetValue: '+element+'\nValue: '+value); - expression = new RegExp(CMIIndex,'g'); - elementmodel = element.replace(expression,'.n.'); - if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") { - if (eval('datamodel["'+elementmodel+'"].mod') != 'r') { - expression.compile(eval('datamodel["'+elementmodel+'"].format')); - value = value+''; - matches = value.match(expression); - if (matches != null) { - //Create dynamic data model element - if (element != elementmodel) { - elementIndexes = element.split('.'); - //alert(elementIndexes); - subelement = 'cmi'; - for (i=1;i < elementIndexes.length-1;i++) { - elementIndex = elementIndexes[i]; - //alert(elementIndex+' '+elementIndexes[i+1]); - if (elementIndexes[i+1].match(/^\d+$/)) { - if ((typeof eval(subelement+'.'+elementIndex+'._count')) == "undefined") { - eval(subelement+'.'+elementIndex+' = new Object();'); - eval(subelement+'.'+elementIndex+'._count = 0;'); - } - if (elementIndexes[i+1] <= eval(subelement+'.'+elementIndex+'._count')) { - if (elementIndexes[i+1] == eval(subelement+'.'+elementIndex+'._count')) { - eval(subelement+'.'+elementIndex+'._count++;'); - } - subelement = subelement.concat('.'+elementIndex+'_'+elementIndexes[i+1]); - i++; - } - } else { - subelement = subelement.concat('.'+elementIndex); - } - alert(subelement); - if ((typeof eval(subelement)) == "undefined") { - eval(subelement+' = new Object();'); - } - } - element = subelement.concat('.'+elementIndexes[elementIndexes.length-1]); - alert('LMSSetValue: '+element+'\nModel: '+elementmodel+'\nValue: '+value+'\nMatches: '+matches); - } - //Store data - if ((typeof eval('datamodel["'+elementmodel+'"].range')) != "undefined") { - range = eval('datamodel["'+elementmodel+'"].range'); - ranges = range.split('#'); - value = value+0.0; - if ((value >= ranges[0]) && (value <= ranges[1])) { - eval(element+'="'+value+'";'); - errorCode = "0"; - return "true"; - } else { - errorCode = eval('datamodel["'+elementmodel+'"].writeerror'); - } - } else { - eval(element+'="'+value+'";'); - errorCode = "0"; - return "true"; - } - } else { - errorCode = eval('datamodel["'+elementmodel+'"].writeerror'); - } - } else { - errorCode = eval('datamodel["'+elementmodel+'"].writeerror'); - } - } else { - errorCode = "401" - } - } else { - errorCode = "201"; - } - } else { - errorCode = "301"; - } - alert('LMSSetValue: '+element+'\nValue: '+value+'\nPattern: '+expression+'\nMatches: '+matches+'\nError Code: '+errorCode); - return "false"; - } - - function LMSCommit (param) { - if (param == "") { - if (Initialized) { - - errorCode = "0"; - return "true"; - } else { - errorCode = "301"; - } - } else { - errorCode = "201"; - } - return "false"; - } - - function LMSGetLastError () { - return errorCode; - } - - function LMSGetErrorString (param) { - if (param != "") { - var errorString = new Array(); - errorString["0"] = "No error"; - errorString["101"] = "General exception"; - errorString["201"] = "Invalid argument error"; - errorString["202"] = "Element cannot have children"; - errorString["203"] = "Element not an array - cannot have count"; - errorString["301"] = "Not initialized"; - errorString["401"] = "Not implemented error"; - errorString["402"] = "Invalid set value, element is a keyword"; - errorString["403"] = "Element is read only"; - errorString["404"] = "Element is write only"; - errorString["405"] = "Incorrect data type"; - return errorString[param]; - } else { - return ""; - } - } - - function LMSGetDiagnostic (param) { - if (param == "") { - param = errorCode; - } - return param; - } - - this.LMSInitialize = LMSInitialize; - this.LMSFinish = LMSFinish; - this.LMSGetValue = LMSGetValue; - this.LMSSetValue = LMSSetValue; - this.LMSCommit = LMSCommit; - this.LMSGetLastError = LMSGetLastError; - this.LMSGetErrorString = LMSGetErrorString; - this.LMSGetDiagnostic = LMSGetDiagnostic; diff --git a/mod/scorm/datamodels/scorm1_3.js.php b/mod/scorm/datamodels/scorm1_3.js.php deleted file mode 100644 index 870ff55a6d5..00000000000 --- a/mod/scorm/datamodels/scorm1_3.js.php +++ /dev/null @@ -1,305 +0,0 @@ - // Standard Data Type Definition - CMIString255 = '^.{0,255}$'; - CMIString4096 = '^[.|\\n|\\r]{0,4096}$'; - CMITime = '^([0-9]{2}):([0-9]{2}):([0-9]{2})(\.[0-9]{1,2})?$'; - CMITimespan = '^([0-9]{2,4}):([0-9]{2}):([0-9]{2})(\.[0-9]{1,2})?$'; - CMIInteger = '^\\d+$'; - CMISInteger = '^-?([0-9]+)$'; - CMIDecimal = '^[0-9]?(\.[0-9]{1,2})?$'; - CMIIdentifier = '^\\w{0,255}$'; - CMIFeedback = CMIString255; // This must be redefined - CMIIndex = '.\\d+.'; - // Vocabulary Data Type Definition - CMIStatus = '^passed|completed|failed|incomplete|browsed|not attempted$'; - CMIExit = '^time-out|suspend|logout|$'; - CMIType = '^true-false|choice|fill-in|matching|performance|sequencing|likert|numeric$'; - CMIResult = '^correct|wrong|unanticipated|neutral|[0-9]?(\.[0-9]{1,2})?$'; - // Children lists - cmi_children = 'core, suspend_data, launch_data, comments, objectives, student_data, student_preference, interactions'; - core_children = 'student_id, student_name, lesson_location, credit, lesson_status, entry, score, total_time, lesson_mode, exit, session_time'; - score_children = 'raw, min, max'; - objectives_children = 'id, score, status'; - student_data_children = 'mastery_score, max_time_allowed, time_limit_action'; - student_preference_children = 'audio, language, speed, text'; - interactions_children = 'id, objectives, time, type, correct_responses, weighting, student_response, result, latency'; - // Data ranges - score_range = '0#100'; - audio_range = '-1#100'; - speed_range = '-100#100'; - text_range = '-1#1'; - // The SCORM 1.2 data model - var datamodel = { - 'cmi._children':{'defaultvalue':cmi_children, 'mod':'r', 'writeerror':'402'}, - 'cmi._version':{'defaultvalue':'3.4', 'mod':'r', 'writeerror':'402'}, - 'cmi.core._children':{'defaultvalue':core_children, 'mod':'r', 'writeerror':'402'}, - 'cmi.core.student_id':{'defaultvalue':'<?php echo $user->username ?>', 'mod':'r', 'writeerror':'403'}, - 'cmi.core.student_name':{'defaultvalue':'<?php echo $user->lastname.', '.$user->firstname ?>', 'mod':'r', 'writeerror':'403'}, - 'cmi.core.lesson_location':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'}, - 'cmi.core.credit':{'mod':'r', 'writeerror':'403'}, - 'cmi.core.lesson_status':{'format':CMIStatus, 'mod':'rw', 'writeerror':'405'}, - 'cmi.core.entry':{'mod':'r', 'writeerror':'403'}, - 'cmi.core.score._children':{'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'}, - 'cmi.core.score.raw':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.core.score.max':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.core.score.min':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.core.total_time':{'mod':'r', 'writeerror':'403'}, - 'cmi.core.lesson_mode':{'mod':'r', 'writeerror':'405'}, - 'cmi.core.exit':{'format':CMIExit, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.core.session_time':{'format':CMITimespan, 'mod':'w', 'defaultvalue':'00:00:00', 'readerror':'404', 'writeerror':'405'}, - 'cmi.suspend_data':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'}, - 'cmi.launch_data':{'mod':'r', 'writeerror':'403'}, - 'cmi.comments':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'}, - 'cmi.comments_from_lms':{'mod':'r', 'writeerror':'403'}, - 'cmi.objectives._children':{'defaultvalue':objectives_children, 'mod':'r', 'writeerror':'403'}, - 'cmi.objectives._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, - 'cmi.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'rw', 'writeerror':'405'}, - 'cmi.objectives.n.score._children':{'pattern':CMIIndex, 'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'}, - 'cmi.objectives.n.score.raw':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.objectives.n.score.min':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.objectives.n.score.max':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.objectives.n.status':{'pattern':CMIIndex, 'format':CMIStatus, 'mod':'rw', 'writeerror':'405'}, - 'cmi.student_data._children':{'defaultvalue':student_data_children, 'mod':'r', 'writeerror':'403'}, - 'cmi.student_data.mastery_score':{'mod':'r', 'writeerror':'403'}, - 'cmi.student_data.max_time_allowed':{'mod':'r', 'writeerror':'403'}, - 'cmi.student_data.time_limit_action':{'mod':'r', 'writeerror':'403'}, - 'cmi.student_preference._children':{'defaultvalue':student_preference_children, 'mod':'r', 'writeerror':'403'}, - 'cmi.student_preference.audio':{'format':CMISInteger, 'range':audio_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.student_preference.language':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'}, - 'cmi.student_preference.speed':{'format':CMISInteger, 'range':speed_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.student_preference.text':{'format':CMISInteger, 'range':text_range, 'mod':'rw', 'writeerror':'405'}, - 'cmi.interactions._children':{'defaultvalue':interactions_children, 'mod':'r', 'writeerror':'403'}, - 'cmi.interactions._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, - 'cmi.interactions.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.objectives._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, - 'cmi.interactions.n.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.time':{'pattern':CMIIndex, 'format':CMITime, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.type':{'pattern':CMIIndex, 'format':CMIType, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.correct_responses._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, - 'cmi.interactions.n.correct_responses.n.pattern':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.weighting':{'pattern':CMIIndex, 'format':CMIDecimal, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.student_response':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.result':{'pattern':CMIIndex, 'format':CMIResult, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, - 'cmi.interactions.n.latency':{'pattern':CMIIndex, 'format':CMITimespan, 'mod':'w', 'readerror':'404', 'writeerror':'405'} - }; - - // - // Datamodel inizialization - // - var cmi = new Object(); - cmi.core = new Object(); - cmi.core.score = new Object(); - cmi.objectives = new Object(); - cmi.student_data = new Object(); - cmi.student_preference = new Object(); - cmi.interactions = new Object(); - var nav = new Object(); - for (element in datamodel) { - if (element.match(/\.n\./) == null) { - //alert (element+' = '+eval('datamodel["'+element+'"].defaultvalue')); - if ((typeof eval('datamodel["'+element+'"].defaultvalue')) != 'undefined') { - eval(element+' = datamodel["'+element+'"].defaultvalue;'); - } else { - eval(element+' = "";'); - } - //alert (element+' = '+eval(element)); - } - } - - // - // API Methods definition - // - var Initialized = false; - - function Initialize (param) { - if (param == "") { - if (!Initialized) { - Initialized = true; - errorCode = "0"; - return "true"; - } else { - errorCode = "101"; - } - } else { - errorCode = "201"; - } - return "false"; - } - - function Terminate (param) { - if (param == "") { - if (Initialized) { - LMSCommit(""); - Initialized = false; - errorCode = "0"; - return "true"; - } else { - errorCode = "301"; - } - } else { - errorCode = "201"; - } - } - - function GetValue (element) { - if (Initialized) { - if (element !="") { - expression = new RegExp(CMIIndex,'g'); - element = element.replace(expression,'.n.'); - if ((typeof eval('datamodel["'+element+'"]')) != "undefined") { - if (eval('datamodel["'+element+'"].mod') != 'w') { - errorCode = "0"; - return eval(element); - } else { - errorCode = eval('datamodel["'+element+'"].readerror'); - } - } else { - errorCode = "401" - } - } else { - errorCode = "201"; - } - } else { - errorCode = "301"; - } - return ""; - } - - function SetValue (element,value) { - if (Initialized) { - if (element != "") { - expression = new RegExp(CMIIndex,'g'); - elementmodel = element.replace(expression,'.n.'); - if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") { - if (eval('datamodel["'+elementmodel+'"].mod') != 'r') { - expression.compile(eval('datamodel["'+elementmodel+'"].format')); - value = value+''; - matches = value.match(expression); - if (matches != null) { - //Create dynamic data model element - if (element != elementmodel) { - elementIndexes = element.split('.'); - subelement = 'cmi'; - for (i=1;i < elementIndexes.length-1;i++) { - elementIndex = elementIndexes[i]; - if (elementIndexes[i+1].match(/^\d+$/)) { - //alert(eval(subelement+'.'+elementIndex+'._count')+1.0); - //if (elementIndexes[i+1] > eval(subelement+'.'+elementIndex+'._count')) { - // if (elementIndexes[i+1] == eval(subelement+'.'+elementIndex+'._count')) { - // eval(subelement+'.'+elementIndex+'._count')+1.0; - // } - subelement = subelement.concat('.'+elementIndex+'_'+elementIndexes[i+1]); - i++; - //} - } else { - subelement = subelement.concat('.'+elementIndex); - } - - if ((typeof eval(subelement)) == "undefined") { - eval(subelement+' = new Object();'); - /*if (elementIndexes[i].match(/^\d+$/)) { - alert(subelement.substring(0,subelement.length-elementIndexes[i]-1)); - if ((typeof eval(subelement.substring(0,subelement.length-elementIndexes[i]-1))) == "undefined") { - // create new count - } - } */ - } - } - element = subelement.concat('.'+elementIndexes[elementIndexes.length-1]); - //alert('LMSSetValue: '+element+'\nModel: '+elementmodel+'\nValue: '+value+'\nMatches: '+matches); - } - //Store data - if ((typeof eval('datamodel["'+elementmodel+'"].range')) != "undefined") { - range = eval('datamodel["'+elementmodel+'"].range'); - ranges = range.split('#'); - value = value+0.0; - if ((value >= ranges[0]) && (value <= ranges[1])) { - eval(element+'="'+value+'";'); - errorCode = "0"; - return "true"; - } else { - errorCode = eval('datamodel["'+elementmodel+'"].writeerror'); - } - } else { - eval(element+'="'+value+'";'); - errorCode = "0"; - return "true"; - } - } else { - errorCode = eval('datamodel["'+elementmodel+'"].writeerror'); - } - } else { - errorCode = eval('datamodel["'+elementmodel+'"].writeerror'); - } - } else { - errorCode = "401" - } - } else { - errorCode = "201"; - } - } else { - errorCode = "301"; - } - alert('LMSSetValue: '+element+'\nValue: '+value+'\nPattern: '+expression+'\nMatches: '+matches+'\nError Code: '+errorCode); - return "false"; - } - - function Commit (param) { - if (param == "") { - if (Initialized) { - errorCode = "0"; - return "true"; - } else { - errorCode = "301"; - } - } else { - errorCode = "201"; - } - return "false"; - } - - function GetLastError () { - return errorCode; - } - function GetErrorString (param) { - var errorString = new Array(); - errorString["0"] = "No error"; - errorString["101"] = "General exception"; - errorString["102"] = "General Inizialization Failure"; - errorString["103"] = "Already Initialized"; - errorString["104"] = "Content Instance Terminated"; - errorString["111"] = "General Termination Failure"; - errorString["112"] = "Termination Before Inizialization"; - errorString["113"] = "Termination After Termination"; - errorString["122"] = "Retrieve Data Before Initialization"; - errorString["123"] = "Retrieve Data After Termination"; - errorString["132"] = "Store Data Before Inizialization"; - errorString["133"] = "Store Data After Termination"; - errorString["142"] = "Commit Before Inizialization"; - errorString["143"] = "Commit After Termination"; - errorString["201"] = "General Argument Error"; - errorString["301"] = "General Get Failure"; - errorString["351"] = "General Set Failure"; - errorString["391"] = "General Commit Failure"; - errorString["401"] = "Undefinited Data Model"; - errorString["402"] = "Unimplemented Data Model Element"; - errorString["403"] = "Data Model Element Value Not Initialized"; - errorString["404"] = "Data Model Element Is Read Only"; - errorString["405"] = "Data Model Element Is Write Only"; - errorString["406"] = "Data Model Element Type Mismatch"; - errorString["407"] = "Data Model Element Value Out Of Range"; - errorString["408"] = "Data Model Dependency Not Established"; - return errorString[param]; - } - - function GetDiagnostic (param) { - return SCORM_Call('GetDiagnostic',param); - } - - this.Initialize = Initialize; - this.Terminate = Terminate; - this.GetValue = GetValue; - this.SetValue = SetValue; - this.Commit = Commit; - this.GetLastError = GetLastError; - this.GetErrorString = GetErrorString; - this.GetDiagnostic = GetDiagnostic; \ No newline at end of file diff --git a/mod/scorm/db/mysql.php b/mod/scorm/db/mysql.php index 2dfa3e2cff2..12866432771 100755 --- a/mod/scorm/db/mysql.php +++ b/mod/scorm/db/mysql.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function scorm_upgrade($oldversion) { /// This function does anything necessary to upgrade @@ -23,114 +23,9 @@ function scorm_upgrade($oldversion) { table_column("scorm_scoes", "", "organization", "VARCHAR", "255", "", "", "NOT NULL", "manifest"); } if ($oldversion < 2004071900) { - table_column("scorm", "", "maxgrade", "FLOAT", "3", "", "0", "NOT NULL", "reference"); - table_column("scorm", "", "grademethod", "TINYINT", "2", "", "0", "NOT NULL", "maxgrade"); + table_column("scorm", "", "maxgrade", "FLOAT", "3", "", "0", "NOT NULL", "reference"); + table_column("scorm", "", "grademethod", "TINYINT", "2", "", "0", "NOT NULL", "maxgrade"); } - - if ($oldversion < 2004111200) { - execute_sql("ALTER TABLE {$CFG->prefix}scorm DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}scorm_scoes DROP INDEX scorm;",false); - execute_sql("ALTER TABLE {$CFG->prefix}scorm_sco_users DROP INDEX scormid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}scorm_sco_users DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}scorm_sco_users DROP INDEX scoid;",false); - - modify_database('','ALTER TABLE prefix_scorm ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_scorm_scoes ADD INDEX scorm (scorm);'); - modify_database('','ALTER TABLE prefix_scorm_sco_users ADD INDEX scormid (scormid);'); - modify_database('','ALTER TABLE prefix_scorm_sco_users ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_scorm_sco_users ADD INDEX scoid (scoid);'); - } - - if ($oldversion < 2005031300) { - table_column("scorm_scoes", "", "prerequisites", "VARCHAR", "200", "", "", "NOT NULL", "title"); - table_column("scorm_scoes", "", "maxtimeallowed", "VARCHAR", "13", "", "", "NOT NULL", "prerequisites"); - modify_database('',"ALTER TABLE prefix_scorm_scoes ADD timelimitaction SET('exit,message','exit,no message','continue,message','continue,no message') DEFAULT '' AFTER `maxtimeallowed`"); - table_column("scorm_scoes", "", "masteryscore", "VARCHAR", "200", "", "", "NOT NULL", "datafromlms"); - - $oldscoes = get_records_select("scorm_scoes","1","id ASC"); - modify_database('',"ALTER TABLE prefix_scorm_scoes CHANGE type scormtype SET('sco','asset') DEFAULT '' NOT NULL"); - if(!empty($oldscoes)) { - foreach ($oldscoes as $sco) { - $sco->scormtype = $sco->type; - unset($sco->type); - update_record("scorm_scoes",$sco); - } - } - - execute_sql("CREATE TABLE {$CFG->prefix}scorm_scoes_track ( - id int(10) unsigned NOT NULL auto_increment, - userid int(10) unsigned NOT NULL default '0', - scormid int(10) NOT NULL default '0', - scoid int(10) unsigned NOT NULL default '0', - element varchar(255) NOT NULL default '', - value longtext NOT NULL default '', - PRIMARY KEY (userid, scormid, scoid, element), - UNIQUE (userid, scormid, scoid, element), - KEY userdata (userid, scormid, scoid), - KEY id (id) - ) TYPE=MyISAM;",false); - - $oldtrackingdata = get_records_select("scorm_sco_users","1","id ASC"); - $oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data'); - - if(!empty($oldtrackingdata)) { - foreach ($oldtrackingdata as $oldtrack) { - $newtrack = ''; - $newtrack->userid = $oldtrack->userid; - $newtrack->scormid = $oldtrack->scormid; - $newtrack->scoid = $oldtrack->scoid; - - foreach ( $oldelements as $element) { - $newtrack->element = $element; - $newtrack->value = $oldtrack->$element; - if ($newtrack->value == NULL) { - $newtrack->value = ''; - } - insert_record("scorm_scoes_track",$newtrack,false); - } - } - } - - modify_database('',"DROP TABLE prefix_scorm_sco_users"); - modify_database('',"INSERT INTO prefix_log_display VALUES ('scorm', 'review', 'resource', 'name')"); - } - - if ($oldversion < 2005040200) { - execute_sql('ALTER TABLE `'.$CFG->prefix.'scorm` DROP `popup`'); // Old field - } - - if ($oldversion < 2005040400) { - table_column("scorm_scoes", "", "parameters", "VARCHAR", "255", "", "", "NOT NULL", "launch"); - } - - if ($oldversion < 2005040700) { - execute_sql("ALTER TABLE {$CFG->prefix}scorm_scoes_track DROP PRIMARY KEY;"); - execute_sql("ALTER TABLE {$CFG->prefix}scorm_scoes_track DROP KEY userdata;"); - execute_sql("ALTER TABLE {$CFG->prefix}scorm_scoes_track DROP INDEX userid"); - modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD UNIQUE track (userid,scormid,scoid,element);'); - modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD PRIMARY KEY id (id);'); - modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX scormid (scormid);'); - modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX scoid (scoid);'); - modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX element (element);'); - execute_sql("ALTER TABLE {$CFG->prefix}scorm_scoes_track DROP INDEX id;"); - table_column("scorm_scoes", "timelimitaction", "timelimitaction", "VARCHAR", "19", "", "", "NOT NULL"); - table_column("scorm_scoes", "scormtype", "scormtype", "VARCHAR", "5", "", "", "NOT NULL"); - } - - if ($oldversion < 2005041500) { - if ($scorms = get_records_select("scorm","1","id ASC")) { - foreach ($scorms as $scorm) { - if (strlen($scorm->datadir) == 14) { - $basedir = $CFG->dataroot.'/'.$scorm->course; - $scormdir = '/moddata/scorm'; - rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$scorm->id); - } - } - } - execute_sql('ALTER TABLE `'.$CFG->prefix.'scorm` DROP `datadir`'); // Old field - } - return true; } diff --git a/mod/scorm/db/mysql.sql b/mod/scorm/db/mysql.sql index 93d22b55f2c..c2ff87444c9 100755 --- a/mod/scorm/db/mysql.sql +++ b/mod/scorm/db/mysql.sql @@ -9,13 +9,14 @@ CREATE TABLE prefix_scorm ( reference varchar(255) NOT NULL default '', maxgrade float(3) NOT NULL default '0', grademethod tinyint(2) NOT NULL default '0', + datadir varchar(255) NOT NULL default '', launch int(10) unsigned NOT NULL default 0, summary text NOT NULL, auto tinyint(1) unsigned NOT NULL default '0', + popup varchar(255) NOT NULL default '', timemodified int(10) unsigned NOT NULL default '0', PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY course (course) + UNIQUE KEY id (id) ) TYPE=MyISAM; CREATE TABLE prefix_scorm_scoes ( @@ -26,34 +27,28 @@ CREATE TABLE prefix_scorm_scoes ( parent varchar(255) NOT NULL default '', identifier varchar(255) NOT NULL default '', launch varchar(255) NOT NULL default '', - parameters varchar(255) NOT NULL default '', - scormtype varchar(5) NOT NULL default '', + type varchar(5) NOT NULL default '', title varchar(255) NOT NULL default '', - prerequisites varchar(200) NOT NULL default '', - maxtimeallowed varchar(19) NOT NULL default '', - timelimitaction varchar(19) NOT NULL default '', - datafromlms varchar(255) NOT NULL default '', - masteryscore varchar(200) NOT NULL default '', + datafromlms longtext, next tinyint(1) unsigned NOT NULL default '0', previous tinyint(1) unsigned NOT NULL default '0', PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY scorm (scorm) + UNIQUE KEY id (id) ) TYPE=MyISAM; -CREATE TABLE prefix_scorm_scoes_track ( +CREATE TABLE prefix_scorm_sco_users ( id int(10) unsigned NOT NULL auto_increment, userid int(10) unsigned NOT NULL default '0', scormid int(10) NOT NULL default '0', scoid int(10) unsigned NOT NULL default '0', - element varchar(255) NOT NULL default '', - value longtext NOT NULL default '', - PRIMARY KEY (id), - KEY userid (userid), - KEY scormid (scormid), - KEY scoid (scoid), - KEY elemeny (element), - UNIQUE track (userid, scormid, scoid, element) + cmi_core_lesson_location varchar(255) NOT NULL default '', + cmi_core_lesson_status varchar(30) NOT NULL default '', + cmi_core_exit varchar(30) NOT NULL default '', + cmi_core_total_time varchar(13) NOT NULL default '00:00:00', + cmi_core_session_time varchar(13) NOT NULL default '00:00:00', + cmi_core_score_raw float(3) NOT NULL default '0', + cmi_suspend_data longtext, + PRIMARY KEY (id) ) TYPE=MyISAM; # @@ -61,6 +56,5 @@ CREATE TABLE prefix_scorm_scoes_track ( # INSERT INTO prefix_log_display VALUES ('scorm', 'view', 'scorm', 'name'); -INSERT INTO prefix_log_display VALUES ('scorm', 'review', 'scorm', 'name'); INSERT INTO prefix_log_display VALUES ('scorm', 'update', 'scorm', 'name'); INSERT INTO prefix_log_display VALUES ('scorm', 'add', 'scorm', 'name'); \ No newline at end of file diff --git a/mod/scorm/db/postgres7.php b/mod/scorm/db/postgres7.php index de8455909be..4ac8e0146f1 100755 --- a/mod/scorm/db/postgres7.php +++ b/mod/scorm/db/postgres7.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function scorm_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -26,108 +26,6 @@ function scorm_upgrade($oldversion) { table_column("scorm", "", "maxgrade", "real", "3", "", "0", "NOT NULL", "reference"); table_column("scorm", "", "grademethod", "integer", "", "", "0", "NOT NULL", "maxgrade"); } - - if ($oldversion < 2004111200) { - execute_sql("DROP INDEX {$CFG->prefix}scorm_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}scorm_scoes_scorm_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}scorm_sco_users_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}scorm_sco_users_scormid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}scorm_sco_users_scoid_idx;",false); - - modify_database('','CREATE INDEX prefix_scorm_course_idx ON prefix_scorm (course);'); - modify_database('','CREATE INDEX prefix_scorm_scoes_scorm_idx ON prefix_scorm_scoes (scorm);'); - modify_database('','CREATE INDEX prefix_scorm_sco_users_userid_idx ON prefix_scorm_sco_users (userid);'); - modify_database('','CREATE INDEX prefix_scorm_sco_users_scormid_idx ON prefix_scorm_sco_users (scormid);'); - modify_database('','CREATE INDEX prefix_scorm_sco_users_scoid_idx ON prefix_scorm_sco_users (scoid);'); - } - - if ($oldversion < 2005031300) { - table_column("scorm_scoes", "", "prerequisites", "VARCHAR", "200", "", "", "NOT NULL", "title"); - table_column("scorm_scoes", "", "maxtimeallowed", "VARCHAR", "13", "", "", "NOT NULL", "prerequisites"); - table_column("scorm_scoes", "", "timelimitaction", "VARCHAR", "19", "", "", "NOT NULL", "maxtimeallowed"); - table_column("scorm_scoes", "", "masteryscore", "VARCHAR", "200", "", "", "NOT NULL", "datafromlms"); - - $oldscoes = get_records_select("scorm_scoes",null,"id ASC"); - table_column("scorm_scoes", "type", "scormtype", "VARCHAR", "5", "", "", "NOT NULL"); - if(!empty($oldscoes)) { - foreach ($oldscoes as $sco) { - $sco->scormtype = $sco->type; - unset($sco->type); - update_record("scorm_scoes",$sco); - } - } - - execute_sql("CREATE TABLE prefix_scorm_scoes_track ( - id SERIAL, - userid integer NOT NULL default '0', - scormid integer NOT NULL default '0', - scoid integer NOT NULL default '0', - element varchar(255) NOT NULL default '', - value text NOT NULL default '', - PRIMARY KEY (userid, scormid, scoid, element), - UNIQUE (userid, scormid, scoid, element) - );",false); - - modify_database('','CREATE INDEX prefix_scorm_scoes_track_userdata_idx ON prefix_scorm_scoes_track (userid, scormid, scoid);'); - - $oldtracking = get_records_select('scorm_sco_users',null,'id ASC'); - $oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data'); - - if(!empty($oldtrackings)) { - foreach ($oldtrackings as $oldtrack) { - $newtrack = ''; - $newtrack->userid = $oldtrack->userid; - $newtrack->scormid = $oldtrack->scormid; - $newtrack->scoid = $oldtrack->scoid; - - foreach ( $oldelements as $element) { - $newtrack->element = $element; - $newtrack->value = $oldtrack->$element; - if ($newtrack->value == NULL) { - $newtrack->value = ''; - } - insert_record('scorm_scoes_track',$newtrack,false); - } - } - } - - modify_database('',"DROP TABLE prefix_scorm_sco_users"); - modify_database('',"INSERT INTO prefix_log_display VALUES ('resource', 'review', 'resource', 'name')"); - } - - if ($oldversion < 2005040200) { - execute_sql('ALTER TABLE '.$CFG->prefix.'scorm DROP popup'); // Old field - } - - if ($oldversion < 2005040400) { - table_column('scorm_scoes', '', 'parameters', 'VARCHAR', '255', '', '', 'NOT NULL', 'launch'); - } - - if ($oldversion < 2005040700) { - //execute_sql('DROP PRIMARY KEY '.$CFG->prefix.'scorm_scoes_track_pkey;',false); - execute_sql('DROP INDEX '.$CFG->prefix.'scorm_scoes_track_userdata_idx;',false); - execute_sql('DROP INDEX '.$CFG->prefix.'scorm_scoes_track_userid_key;',false); - modify_database('','CREATE UNIQUE INDEX prefix_scorm_scoes_track_track_idx ON prefix_scorm_scoes_track (userid, scormid, scoid, element);'); - execute_sql('ALTER TABLE '.$CFG->prefix.'scorm_scoes_track ADD PRIMARY KEY ("id");',false); - modify_database('','CREATE INDEX prefix_scorm_scoes_track_scormid_idx ON prefix_scorm_scoes_track (scormid);'); - modify_database('','CREATE INDEX prefix_scorm_scoes_track_userid_idx ON prefix_scorm_scoes_track (userid);'); - modify_database('','CREATE INDEX prefix_scorm_scoes_track_scoid_idx ON prefix_scorm_scoes_track (scoid);'); - modify_database('','CREATE INDEX prefix_scorm_scoes_track_element_idx ON prefix_scorm_scoes_track (element);'); - } - - if ($oldversion < 2005041500) { - if ($scorms = get_records_select('scorm','1','id ASC')) { - foreach ($scorms as $scorm) { - if (strlen($scorm->datadir) == 14) { - $basedir = $CFG->dataroot.'/'.$scorm->course; - $scormdir = '/moddata/scorm'; - rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$scorm->id); - } - } - } - execute_sql('ALTER TABLE '.$CFG->prefix.'scorm DROP datadir'); // Old field - } - return true; } diff --git a/mod/scorm/db/postgres7.sql b/mod/scorm/db/postgres7.sql index 852d7399b32..73b4cc02ffe 100755 --- a/mod/scorm/db/postgres7.sql +++ b/mod/scorm/db/postgres7.sql @@ -9,14 +9,14 @@ CREATE TABLE prefix_scorm ( reference varchar(255) NOT NULL default '', maxgrade real NOT NULL default '0', grademethod integer NOT NULL default '0', + datadir varchar(255) NOT NULL default '', launch integer NOT NULL default '0', summary text NOT NULL default '', auto integer NOT NULL default '0', + popup varchar(255) NOT NULL default '', timemodified integer NOT NULL default '0' ); -CREATE INDEX prefix_scorm_course_idx ON prefix_scorm (course); - CREATE TABLE prefix_scorm_scoes ( id SERIAL PRIMARY KEY, scorm integer NOT NULL default '0', @@ -25,40 +25,31 @@ CREATE TABLE prefix_scorm_scoes ( parent varchar(255) NOT NULL default '', identifier varchar(255) NOT NULL default '', launch varchar(255) NOT NULL default '', - parameters varchar(255) NOT NULL default '', - scormtype varchar(5) NOT NULL default '', + type varchar(5) NOT NULL default '', title varchar(255) NOT NULL default '', - prerequisites varchar(200) NOT NULL default '', - maxtimeallowed varchar(19) NOT NULL default '', - timelimitaction varchar(19) NOT NULL default '', - datafromlms varchar(255) NOT NULL default '', - masteryscore varchar(200) NOT NULL default '', + datafromlms text NOT NULL default '', next integer NOT NULL default '0', previous integer NOT NULL default '0' ); -CREATE INDEX prefix_scorm_scoes_scorm_idx ON prefix_scorm_scoes (scorm); - -CREATE TABLE prefix_scorm_scoes_track ( +CREATE TABLE prefix_scorm_sco_users ( id SERIAL PRIMARY KEY, userid integer NOT NULL default '0', scormid integer NOT NULL default '0', scoid integer NOT NULL default '0', - element varchar(255) NOT NULL default '', - value text NOT NULL default '', - UNIQUE (userid, scormid, scoid, element) + cmi_core_lesson_location varchar(255) NOT NULL default '', + cmi_core_lesson_status varchar(30) NOT NULL default '', + cmi_core_exit varchar(30) NOT NULL default '', + cmi_core_total_time varchar(13) NOT NULL default '00:00:00', + cmi_core_session_time varchar(13) NOT NULL default '00:00:00', + cmi_core_score_raw real NOT NULL default '0', + cmi_suspend_data text NOT NULL default '' ); -CREATE INDEX prefix_scorm_scoes_track_user_idx ON prefix_scorm_scoes_track (userid); -CREATE INDEX prefix_scorm_scoes_track_scorm_idx ON prefix_scorm_scoes_track (scormid); -CREATE INDEX prefix_scorm_scoes_track_sco_idx ON prefix_scorm_scoes_track (scoid); -CREATE INDEX prefix_scorm_scoes_track_element_idx ON prefix_scorm_scoes_track (element); - # # Dumping data for table `log_display` # INSERT INTO prefix_log_display VALUES ('resource', 'view', 'resource', 'name'); -INSERT INTO prefix_log_display VALUES ('resource', 'review', 'resource', 'name'); INSERT INTO prefix_log_display VALUES ('resource', 'update', 'resource', 'name'); INSERT INTO prefix_log_display VALUES ('resource', 'add', 'resource', 'name'); diff --git a/mod/scorm/details.php b/mod/scorm/details.php new file mode 100755 index 00000000000..bbea86e5d29 --- /dev/null +++ b/mod/scorm/details.php @@ -0,0 +1,272 @@ +<?PHP // $Id$ + + require_once("../../config.php"); + require_once("lib.php"); + + require_login(); + if ($form = data_submitted($destination)) { + + if (! $course = get_record("course", "id", $form->course)) { + error("This course doesn't exist"); + } + + require_login($course->id); + + if (!isteacher($course->id)) { + error("You can't modify this course!"); + } + + $strediting = get_string("validateascorm", "scorm"); + $strname = get_string("name"); + + print_header_simple("$strediting", "$strediting", + "$strediting"); + + if (!$form->name or !$form->reference or !$form->summary) { + error(get_string("filloutallfields"), $_SERVER["HTTP_REFERER"]); + } + + // + // Create a temporary directory to unzip package and validate imsmanifest + // + + $coursedir = "$CFG->dataroot/$course->id"; + + if ($scormdir = make_upload_directory("$course->id/$CFG->moddata/scorm")) { + if ($tempdir = scorm_datadir($scormdir, $form->datadir)) { + copy ("$coursedir/$form->reference", $tempdir."/".basename($form->reference)); + if (empty($CFG->unzip)) { // Use built-in php-based unzip function + include_once($CFG->dirroot.'/lib/pclzip/pclzip.lib.php'); + $archive = new PclZip($tempdir."/".basename($form->reference)); + if (!$list = $archive->extract($tempdir)) { + error($archive->errorInfo(true)); + } + } else { + $command = "cd $tempdir; $CFG->unzip -o ".basename($form->reference)." 2>&1"; + exec($command); + } + $result = scorm_validate($tempdir."/imsmanifest.xml"); + } else { + $result = "packagedir"; + } + } else { + $result = "datadir"; + } + $errorlogs = ''; + if (($result != "regular") && ($result != "found")) { + if ($CFG->scorm_validate == 'domxml') { + foreach ($errors as $error) { + $errorlogs .= get_string($error->type,"scorm",$error->data) . ".\n"; + } + } + // + // Delete files and temporary directory + // + if (is_dir($tempdir)) + scorm_delete_files($tempdir); + } else { + // + // Delete package file + // + unlink ($tempdir."/".basename($form->reference)); + if ($form->mode == "update") { + $fp = fopen($coursedir."/".$form->reference,"r"); + $fstat = fstat($fp); + fclose($fp); + if (get_field("scorm","timemodified","id",$form->instance) < $fstat["mtime"]) + $form->launch = 0; + } + } + // + // Print validation result + // + print_simple_box_start("center", "", "$THEME->cellheading"); + echo "<table cellpadding=\"5\" align=\"center\">\n"; + echo " <tr><td align=\"right\" nowrap><p><b>$strname:</b></p></td><td><p>$form->name</p></a></td></tr>\n"; + echo " <tr><td align=\"right\" nowrap><p><b>".get_string("validation","scorm").":</b></p></td><td><p>".get_string($result,"scorm")."</p></a></td></tr>\n"; + if ($errorlogs != '') { + $lines = round(count($errors)/4); + if ($lines < 5) { + $lines = 5; + } + echo " <tr><td align=\"right\" nowrap><p><b>".get_string("errorlogs","scorm").":</b></p></td><td><textarea rows=\"".$lines."\" cols=\"30\" readonly>".$errorlogs."</textarea></a></td></tr>\n"; + } + if (($form->mode == "update") && ($form->launch == 0) && (get_records("scorm_sco_users","scormid",$form->instance))) + echo " <tr><td align=\"center\" colspan=\"2\" nowrap><p><b>".get_string("trackingloose","scorm")."</b></p></td></tr>\n"; + echo "</table>\n"; + if (($result == "regular") || ($result == "found")){ + if (empty($form->auto)) { + $form->auto = ""; + } + if (empty($form->maxgrade)) { + $form->maxgrade = ""; + } + if (empty($form->grademethod)) { + $form->grademethod = "0"; + } + echo "<form name=\"theform\" method=\"post\" action=\"$form->destination\">\n"; + + //$form->popup = $CFG->scorm_popup; + $strnewwindow = get_string("newwindow", "scorm"); + $strnewwindowopen = get_string("newwindowopen", "scorm"); + foreach ($SCORM_WINDOW_OPTIONS as $optionname) { + $stringname = "str$optionname"; + $$stringname = get_string("new$optionname", "scorm"); + $window->$optionname = ""; + $jsoption[] = "\"$optionname\""; + } + $alljsoptions = implode(",", $jsoption); + + if ($form->instance) { // Re-editing + if ($form->popup == "") { + $newwindow = ""; // Disable the new window + foreach ($SCORM_WINDOW_OPTIONS as $optionname) { + $defaultvalue = "scorm_popup$optionname"; + $window->$optionname = $CFG->$defaultvalue; + } + } else { + $newwindow = "checked"; + $rawoptions = explode(',', $form->popup); + foreach ($rawoptions as $rawoption) { + $option = explode('=', trim($rawoption)); + if (($option[0] != 'location') && ($option[0] != 'menubar') && ($option[0] != 'toolbar')) { + $optionname = $option[0]; + $optionvalue = $option[1]; + if ($optionname == "height" or $optionname == "width") { + $window->$optionname = $optionvalue; + } else if ($optionvalue == 1) { + $window->$optionname = "checked"; + } + } + } + } + } else { + foreach ($SCORM_WINDOW_OPTIONS as $optionname) { + $defaultvalue = "scorm_popup$optionname"; + $window->$optionname = $CFG->$defaultvalue; + } + $newwindow = $CFG->scorm_popup; + } + +?> + <table cellpadding="5" align="center"> + <tr valign=top> + <td align=right><p><b><?php print_string("grademethod", "scorm") ?>:</b></p></td> + <td> + <?php + $options = array(); + $options[0] = get_string("gradescoes", "scorm"); + $options[1] = get_string("gradehighest", "scorm"); + $options[2] = get_string("gradeaverage", "scorm"); + choose_from_menu($SCORM_GRADE_METHOD, "grademethod", "$form->grademethod", ""); + helpbutton("grademethod", get_string("grademethod","scorm"), "scorm"); + ?> + </td> + </tr> + <tr valign=top> + <td align=right><p><b><?php print_string("maximumgrade") ?>:</b></p></td> + <td> + <?php + for ($i=100; $i>=1; $i--) { + $grades[$i] = $i; + } + + choose_from_menu($grades, "maxgrade", "$form->maxgrade", ""); + helpbutton("maxgrade", get_string("maximumgrade"), "scorm"); + ?> + </td> + </tr> + <tr valign=top> + <td align=right><p><b><?php print_string("autocontinue","scorm") ?>:</b></p></td> + <td> + <?php + $options = array(); + $options[0]=get_string("no"); + $options[1]=get_string("yes"); + choose_from_menu ($options, "auto", $form->auto); + ?> + </td> + </tr> + <tr valign="top"> + <td align="right" nowrap> + <p><b><?php p($strnewwindow) ?></b></p> + </td> + <td> + <script> + var subitems = [<?php echo $alljsoptions; ?>]; + + function autowindow() { + if (document.theform.newwindow.checked) + document.theform.auto.disabled=true; + else + document.theform.auto.disabled=false; + } + + <?php + if ($newwindow == "checked") + echo "document.theform.auto.disabled=true;\n"; + ?> + </script> + <input name="setnewwindow" type=hidden value=1 /> + <input name="newwindow" type=checkbox value=1 <?php p($newwindow) ?> onclick="autowindow();return lockoptions('theform','newwindow', subitems);" /> + <?php p($strnewwindowopen) ?> + <ul> + <?php + foreach ($window as $name => $value) { + if ($name == "height" or $name == "width") { + continue; + } + echo "\t\t<input name=\"h$name\" type=\"hidden\" value=\"0\" />\n"; + echo "\t\t<input name=\"$name\" type=\"checkbox\" value=\"1\" ".$window->$name." /> "; + $stringname = "str$name"; + echo $$stringname."<br />\n"; + } + ?> + + <input name="hwidth" type=hidden value="0" /> + <input name="width" type=text size=4 value="<?php p($window->width) ?>" /> <?php p($strwidth) ?><br /> + <input name="hheight" type=hidden value="0" /> + <input name="height" type=text size=4 value="<?php p($window->height) ?>" /> <?php p($strheight) ?><br /> + <?php + if (!$newwindow) { + echo "<script>\n<!--\n"; + echo "\tlockoptions('theform','newwindow', subitems);"; + echo "\n-->\n</script>"; + } + ?> + </ul> + </p> + </td> + </tr> + </table> + <input type="hidden" name="reference" value="<?php p($form->reference) ?>" /> + <input type="hidden" name="datadir" value="<?php p(substr($tempdir,strlen($scormdir))) ?>" /> + <input type="hidden" name="summary" value="<?php p($form->summary) ?>" /> + <input type="hidden" name="name" value="<?php p($form->name) ?>" /> + <input type="hidden" name="launch" value="<?php p($form->launch) ?>" /> + <input type="hidden" name="course" value="<?php p($form->course) ?>" /> + <input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> + <input type="hidden" name="section" value="<?php p($form->section) ?>" /> + <input type="hidden" name="module" value="<?php p($form->module) ?>" /> + <input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> + <input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> + <input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> + <div align="center"> + <input type="submit" value="<?php print_string("savechanges") ?>" /> + <input type="submit" name=cancel value="<?php print_string("cancel") ?>" /> + </div> + </form> +<?php + } else { +?> + <center> + <input type="button" value="<?php print_string("continue") ?>" onClick="document.location='<?php echo $CFG->wwwroot ?>/course/view.php?id=<?php echo $course->id ?>';"> + </center> +<?php + } + print_simple_box_end(); + print_footer($course); + } else { + error("This script was called incorrectly"); + } +?> diff --git a/mod/scorm/index.php b/mod/scorm/index.php index 3758284d332..48f5c8b2ebf 100755 --- a/mod/scorm/index.php +++ b/mod/scorm/index.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); @@ -8,7 +8,12 @@ error("Course ID is incorrect"); } - require_course_login($course); + if ($course->category) { + require_login($course->id); + $navigation = "<A HREF=\"../../course/view.php?id=$course->id\">$course->shortname</A> ->"; + } else { + $navigation = ''; + } add_to_log($course->id, "scorm", "view all", "index.php?id=$course->id", ""); @@ -20,7 +25,7 @@ $strsummary = get_string("summary"); $strlastmodified = get_string("lastmodified"); - print_header_simple("$strscorms", "", "$strscorms", + print_header("$course->shortname: $strscorms", "$course->fullname", "$navigation $strscorms", "", "", true, "", navmenu($course)); if ($course->format == "weeks" or $course->format == "topics") { @@ -36,13 +41,13 @@ if ($course->format == "weeks") { $table->head = array ($strweek, $strname, $strsummary); - $table->align = array ("center", "left", "left"); + $table->align = array ("CENTER", "LEFT", "LEFT"); } else if ($course->format == "topics") { $table->head = array ($strtopic, $strname, $strsummary); - $table->align = array ("center", "left", "left"); + $table->align = array ("CENTER", "LEFT", "LEFT"); } else { $table->head = array ($strlastmodified, $strname, $strsummary); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); } foreach ($scorms as $scorm) { @@ -53,25 +58,25 @@ $tt = "$scorm->section"; } } else { - $tt = "<font size=\"1\">".userdate($scorm->timemodified); + $tt = "<FONT SIZE=1>".userdate($scorm->timemodified); } if (!$scorm->visible) { //Show dimmed if the mod is hidden - $table->data[] = array ($tt, "<a class=\"dimmed\" href=\"view.php?id=$scorm->coursemodule\">$scorm->name</a>", + $table->data[] = array ($tt, "<A class=\"dimmed\" HREF=\"view.php?id=$scorm->coursemodule\">$scorm->name</A>", text_to_html($scorm->summary) ); } else { //Show normal if the mod is visible - $table->data[] = array ($tt, "<a href=\"view.php?id=$scorm->coursemodule\">$scorm->name</a>", + $table->data[] = array ($tt, "<A HREF=\"view.php?id=$scorm->coursemodule\">$scorm->name</A>", text_to_html($scorm->summary) ); } } - echo "<br />"; + echo "<BR>"; print_table($table); print_footer($course); - + ?> diff --git a/mod/scorm/lib.php b/mod/scorm/lib.php index 0b625132514..9a096cac275 100755 --- a/mod/scorm/lib.php +++ b/mod/scorm/lib.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// Library of functions and constants for module scorm /// (replace scorm with the name of your module and delete this line) @@ -7,22 +7,42 @@ define('VALUESCOES', '0'); define('VALUEHIGHEST', '1'); define('VALUEAVERAGE', '2'); define('VALUESUM', '3'); -$SCORM_GRADE_METHOD = array (VALUESCOES => get_string('gradescoes', 'scorm'), - VALUEHIGHEST => get_string('gradehighest', 'scorm'), - VALUEAVERAGE => get_string('gradeaverage', 'scorm'), - VALUESUM => get_string('gradesum', 'scorm')); +$SCORM_GRADE_METHOD = array (VALUESCOES => get_string("gradescoes", "scorm"), + VALUEHIGHEST => get_string("gradehighest", "scorm"), + VALUEAVERAGE => get_string("gradeaverage", "scorm"), + VALUESUM => get_string("gradesum", "scorm")); + +$SCORM_WINDOW_OPTIONS = array('resizable', 'scrollbars', 'status', 'height', 'width'); +if (!isset($CFG->scorm_popup)) { + set_config('scorm_popup', ''); +} if (!isset($CFG->scorm_validate)) { - $scormvalidate = 'none'; - //I've commented this out for Moodle 1.4, as I've seen errors in - //SCORM packages even though the actual package worked fine. -- Martin Dougiamas - if (extension_loaded('domxml') && version_compare(phpversion(),'5.0.0','<')) { - $scormvalidate = 'domxml'; + $scorm_validate = 'none'; + if (extension_loaded('domxml')) { + $scorm_validate = 'domxml'; } if (version_compare(phpversion(),'5.0.0','>=')) { - $scormvalidate = 'php5'; + $scorm_validate = 'php5'; } - set_config('scorm_validate', $scormvalidate); + set_config('scorm_validate', $scorm_validate); +} + +foreach ($SCORM_WINDOW_OPTIONS as $popupoption) { + $popupoption = "scorm_popup$popupoption"; + if (!isset($CFG->$popupoption)) { + if ($popupoption == 'scorm_popupheight') { + set_config($popupoption, 450); + } else if ($popupoption == 'scorm_popupwidth') { + set_config($popupoption, 620); + } else { + set_config($popupoption, 'checked'); + } + } +} + +if (!isset($CFG->scorm_framesize)) { + set_config('scorm_framesize', 140); } function scorm_add_instance($scorm) { @@ -34,26 +54,25 @@ function scorm_add_instance($scorm) { $scorm->timemodified = time(); # May have to add extra stuff in here # - global $CFG; + global $SCORM_WINDOW_OPTIONS; - $id = insert_record('scorm', $scorm); + $scorm->popup = ''; - // - // Rename temp scorm dir to scorm id - // + $optionlist = array(); + foreach ($SCORM_WINDOW_OPTIONS as $option) { + if (isset($scorm->$option)) { + $optionlist[] = $option.'='.$scorm->$option; + } + } + $scorm->popup = implode(',', $optionlist); - $basedir = $CFG->dataroot.'/'.$scorm->course; - $scormdir = '/moddata/scorm'; - rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$id); - // - // Parse scorm manifest - // - if ($scorm->launch == 0) { - $scorm->launch = scorm_parse($basedir,$scormdir.'/'.$id.'/imsmanifest.xml',$id); - set_field('scorm','launch',$scorm->launch,'id',$id); + + if ($scorm->popup != '') { + $scorm->popup .= ',location=0,menubar=0,toolbar=0'; + $scorm->auto = '0'; } - return $id; + return insert_record('scorm', $scorm); } @@ -66,18 +85,22 @@ function scorm_update_instance($scorm) { $scorm->id = $scorm->instance; # May have to add extra stuff in here # - global $CFG; + global $SCORM_WINDOW_OPTIONS; + $scorm->popup = ''; - // - // Check if scorm manifest needs to be reparsed - // - if ($scorm->launch == 0) { - $basedir = $CFG->dataroot.'/'.$scorm->course; - $scormdir = '/moddata/scorm/'; - $scorm->launch = scorm_parse($basedir,$scormdir.$scorm->id.'/imsmanifest.xml',$scorm->id); + $optionlist = array(); + foreach ($SCORM_WINDOW_OPTIONS as $option) { + if (isset($scorm->$option)) { + $optionlist[] = $option.'='.$scorm->$option; + } + } + $scorm->popup = implode(',', $optionlist); + + if ($scorm->popup != '') { + $scorm->popup .= ',location=0,menubar=0,toolbar=0'; + $scorm->auto = '0'; } - return update_record('scorm', $scorm); } @@ -96,10 +119,10 @@ function scorm_delete_instance($id) { $result = true; # Delete any dependent files # - scorm_delete_files($CFG->dataroot.'/'.$scorm->course.'/moddata/scorm'.$scorm->id); + scorm_delete_files($CFG->dataroot.'/'.$scorm->course.'/moddata/scorm'.$scorm->datadir); # Delete any dependent records here # - if (! delete_records('scorm_scoes_track', 'scormid', $scorm->id)) { + if (! delete_records('scorm_sco_users', 'scormid', $scorm->id)) { $result = false; } if (! delete_records('scorm_scoes', 'scorm', $scorm->id)) { @@ -120,14 +143,14 @@ function scorm_user_outline($course, $user, $mod, $scorm) { /// $return->time = the time they did it /// $return->info = a short text description - return true; // TO FIX + return $return; } function scorm_user_complete($course, $user, $mod, $scorm) { /// Print a detailed representation of what a user has done with /// a given particular instance of this module, for user activity reports. - return true; // TO FIX + return true; } function scorm_print_recent_activity(&$logs, $isteacher=false) { @@ -136,7 +159,11 @@ function scorm_print_recent_activity(&$logs, $isteacher=false) { /// If isteacher is true then perhaps additional information is printed. /// This function is called from course/lib.php: print_recent_activity() - return false; // True if anything was printed, otherwise false + global $CFG, $COURSE_TEACHER_COLOR; + + $content = NULL; + + return $content; // True if anything was printed, otherwise false } function scorm_cron () { @@ -155,7 +182,7 @@ function scorm_grades($scormid) { global $CFG; - if (!$scorm = get_record('scorm', 'id', $scormid)) { + if (!$scorm = get_record("scorm", "id", $scormid)) { return NULL; } @@ -165,40 +192,40 @@ function scorm_grades($scormid) { } $return->grades = NULL; - if ($scousers=get_records_select('scorm_scoes_track', "scormid='$scormid' GROUP BY userid")) { - foreach ($scousers as $scouser) { - $userdata=get_records_select('scorm_scoes_track',"scormid='$scormid' AND userid='$scouser->userid' AND element='cmi_core_lesson_status'"); + if ($sco_users=get_records_select('scorm_sco_users', "scormid='$scormid' GROUP BY userid")) { + foreach ($sco_users as $sco_user) { + $user_data=get_records_select('scorm_sco_users',"scormid='$scormid' AND userid='$sco_user->userid'"); $scores->completed=0; $scores->browsed=0; $scores->incomplete=0; $scores->failed=0; $scores->notattempted=0; $result=''; - $data = current($userdata); - foreach ($userdata as $data) { - if ($data->value=='passed') + $data = current($user_data); + foreach ($user_data as $data) { + if ($data->cmi_core_lesson_status=='passed') $scores->completed++; else - $scores->{scorm_remove_spaces($data->value)}++; + $scores->{scorm_remove_spaces($data->cmi_core_lesson_status)}++; } if ($scores->completed) - $result.='<img src="'.$CFG->wwwroot.'/mod/scorm/pix/completed.gif" alt="'.get_string('completed','scorm').'" title="'.get_string('completed','scorm').'" /> '.$scores->completed; + $result.="<img src=\"$CFG->wwwroot/mod/scorm/pix/completed.gif\" alt=\"".get_string('completed','scorm')."\" title=\"".get_string('completed','scorm')."\"> $scores->completed "; if ($scores->incomplete) - $result.="<img src=\"$CFG->wwwroot/mod/scorm/pix/incomplete.gif\" alt=\"".get_string('incomplete','scorm')."\" title=\"".get_string('incomplete','scorm')."\" /> $scores->incomplete "; + $result.="<img src=\"$CFG->wwwroot/mod/scorm/pix/incomplete.gif\" alt=\"".get_string('incomplete','scorm')."\" title=\"".get_string('incomplete','scorm')."\"> $scores->incomplete "; if ($scores->failed) - $result.="<img src=\"$CFG->wwwroot/mod/scorm/pix/failed.gif\" alt=\"".get_string('failed','scorm')."\" title=\"".get_string('failed','scorm')."\" /> $scores->failed "; + $result.="<img src=\"$CFG->wwwroot/mod/scorm/pix/failed.gif\" alt=\"".get_string('failed','scorm')."\" title=\"".get_string('failed','scorm')."\"> $scores->failed "; if ($scores->browsed) - $result.="<img src=\"$CFG->wwwroot/mod/scorm/pix/browsed.gif\" alt=\"".get_string('browsed','scorm')."\" title=\"".get_string('browsed','scorm')."\" /> $scores->browsed "; + $result.="<img src=\"$CFG->wwwroot/mod/scorm/pix/browsed.gif\" alt=\"".get_string('browsed','scorm')."\" title=\"".get_string('browsed','scorm')."\"> $scores->browsed "; if ($scores->notattempted) - $result.="<img src=\"$CFG->wwwroot/mod/scorm/pix/notattempted.gif\" alt=\"".get_string('notattempted','scorm')."\" title=\"".get_string('notattempted','scorm')."\" /> $scores->notattempted "; + $result.="<img src=\"$CFG->wwwroot/mod/scorm/pix/notattempted.gif\" alt=\"".get_string('notattempted','scorm')."\" title=\"".get_string('notattempted','scorm')."\"> $scores->notattempted "; - $return->grades[$scouser->userid]=$result; + $return->grades[$sco_user->userid]=$result; } } } else { - $grades = get_records_select('scorm_scoes_track', "scormid=$scormid AND element='cmi_core_score_raw' AND value<>''",'','id,userid,value'); - //$grades = get_records_menu("scorm_scoes_track", "scormid",$scormid,"","userid,cmi_core_score_raw"); + $grades = get_records_select("scorm_sco_users", "scormid=$scormid AND cmi_core_score_raw>0","","id,userid,cmi_core_score_raw"); + //$grades = get_records_menu("scorm_sco_users", "scormid",$scormid,"","userid,cmi_core_score_raw"); $valutations = array(); foreach ($grades as $grade) { if (!isset($valutations[$grade->userid])) { @@ -211,16 +238,16 @@ function scorm_grades($scormid) { } switch ($scorm->grademethod) { case VALUEHIGHEST: - if ($grade->value > $valutations[$grade->userid]) { - $valutations[$grade->userid] = $grade->value; + if ($grade->cmi_core_score_raw > $valutations[$grade->userid]) { + $valutations[$grade->userid] = $grade->cmi_core_score_raw; } break; case VALUEAVERAGE: - $values[$grade->userid]->grade += $grade->value; + $values[$grade->userid]->grade += $grade->cmi_core_score_raw; $values[$grade->userid]->values++; break; case VALUESUM: - $valutations[$grade->userid] += $grade->value; + $valutations[$grade->userid] += $grade->cmi_core_score_raw; break; } } @@ -259,7 +286,7 @@ function scorm_randstring($len = '8') } -function scorm_datadir($strPath, $existingdir='') +function scorm_datadir($strPath, $existingdir='', $prefix = 'SCORM') { global $CFG; @@ -268,7 +295,7 @@ function scorm_datadir($strPath, $existingdir='') if (is_dir($strPath)) { do { - $datadir='/'.scorm_randstring(); + $datadir='/'.$prefix.scorm_randstring(); } while (file_exists($strPath.$datadir)); mkdir($strPath.$datadir, $CFG->directorypermissions); @chmod($strPath.$datadir, $CFG->directorypermissions); // Just in case mkdir didn't do it @@ -294,12 +321,12 @@ function scorm_validate($manifest) if (is_file ($manifest)) { if (file_exists($manifest)) { if ($CFG->scorm_validate == 'domxml') { - $manifeststring = file_get_contents($manifest); + $manifest_string = file_get_contents($manifest); /* Elimino i caratteri speciali di spaziatura e ritorno a capo dal file xml */ $spec = array('\n', '\r', '\t', '\0', '\x0B'); - $content = str_replace($spec, '', $manifeststring); + $content = str_replace($spec, '', $manifest_string); if ($xmldoc = domxml_open_mem($content)) { $root = $xmldoc->document_element(); @@ -339,12 +366,15 @@ function scorm_validate($manifest) } } -function scorm_delete_files($directory) { - if (is_dir($directory)) { - $files=scorm_scandir($directory); - //print_r($files); - foreach($files as $file) { - if (($file != '.') && ($file != '..')) { +function scorm_delete_files($directory) +{ + if (is_dir($directory)) + { + $handle=opendir($directory); + while (($file = readdir($handle)) != '') + { + if ($file != '.' && $file != '..') + { if (!is_dir($directory.'/'.$file)) { //chmod($directory.'/'.$file,0777); unlink($directory.'/'.$file); @@ -357,27 +387,11 @@ function scorm_delete_files($directory) { } } -function scorm_scandir($directory) { - if (version_compare(phpversion(),'5.0.0','>=')) { - return scandir($directory); - } else { - $files = null; - if ($dh = opendir($directory)) { - while (($file = readdir($dh)) !== false) { - $files[] = $file; - } - closedir($dh); - } - return $files; - } -} - function scorm_startElement($parser, $name, $attrs) { global $scoes,$i,$resources,$parent,$level,$organization,$manifest,$defaultorg; - - switch ($name) { - case 'ITEM': + + if ($name == 'ITEM') { $i++; $scoes[$i]['manifest'] = $manifest; $scoes[$i]['organization'] = $organization; @@ -388,14 +402,11 @@ function scorm_startElement($parser, $name, $attrs) { if (empty($attrs['ISVISIBLE'])) $attrs['ISVISIBLE'] = ''; $scoes[$i]['isvisible'] = $attrs['ISVISIBLE']; - if (empty($attrs['PARAMETERS'])) - $attrs['PARAMETERS'] = ''; - $scoes[$i]['parameters'] = $attrs['PARAMETERS']; $scoes[$i]['parent'] = $parent[$level]; $level++; $parent[$level] = $attrs['IDENTIFIER']; - break; - case 'RESOURCE': + } + if ($name == 'RESOURCE') { if (!isset($attrs['HREF'])) { $attrs['HREF'] = ''; } @@ -403,9 +414,9 @@ function scorm_startElement($parser, $name, $attrs) { if (!isset($attrs['ADLCP:SCORMTYPE'])) { $attrs['ADLCP:SCORMTYPE'] = ''; } - $resources[$attrs['IDENTIFIER']]['scormtype']=$attrs['ADLCP:SCORMTYPE']; - break; - case 'ORGANIZATION': + $resources[$attrs['IDENTIFIER']]['type']=$attrs['ADLCP:SCORMTYPE']; + } + if ($name == 'ORGANIZATION') { $i++; $scoes[$i]['manifest'] = $manifest; $scoes[$i]['organization'] = ''; @@ -416,16 +427,15 @@ function scorm_startElement($parser, $name, $attrs) { $level++; $parent[$level] = $attrs['IDENTIFIER']; $organization = $attrs['IDENTIFIER']; - break; - case 'MANIFEST': + } + if ($name == 'MANIFEST') { $manifest = $attrs['IDENTIFIER']; - break; - case 'ORGANIZATIONS': + } + if ($name == 'ORGANIZATIONS') { if (!isset($attrs['DEFAULT'])) { $attrs['DEFAULT'] = ''; } $defaultorg = $attrs['DEFAULT']; - break; } } @@ -444,18 +454,6 @@ function scorm_endElement($parser, $name) { if ($name == 'ADLCP:DATAFROMLMS') { $scoes[$i]['datafromlms'] = $datacontent; } - if ($name == 'ADLCP:PREREQUISITES') { - $scoes[$i]['prerequisites'] = $datacontent; - } - if ($name == 'ADLCP:MAXTIMEALLOWED') { - $scoes[$i]['maxtimeallowed'] = $datacontent; - } - if ($name == 'ADLCP:TIMELIMITACTION') { - $scoes[$i]['timelimitaction'] = $datacontent; - } - if ($name == 'ADLCP:MASTERYSCORE') { - $scoes[$i]['masteryscore'] = $datacontent; - } if ($name == 'ORGANIZATION') { $organization = ''; $level--; @@ -467,7 +465,7 @@ function scorm_endElement($parser, $name) { function scorm_characterData($parser, $data) { global $datacontent; - $datacontent = utf8_decode($data); + $datacontent = $data; } function scorm_parse($basedir,$file,$scorm_id) { @@ -481,7 +479,7 @@ function scorm_parse($basedir,$file,$scorm_id) { $level = 0; $parent[$level] = '/'; - $xml_parser = xml_parser_create('UTF-8'); + $xml_parser = xml_parser_create(); // use case-folding so we are sure to find the tag in $map_array xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true); xml_set_element_handler($xml_parser, 'scorm_startElement', 'scorm_endElement'); @@ -502,7 +500,7 @@ function scorm_parse($basedir,$file,$scorm_id) { $sco->scorm = $scorm_id; delete_records('scorm_scoes','scorm',$scorm_id); - delete_records('scorm_scoes_track','scormid',$scorm_id); + delete_records('scorm_sco_users','scormid',$scorm_id); if (isset($scoes[1])) { for ($j=1; $j<=$i; $j++) { @@ -514,37 +512,16 @@ function scorm_parse($basedir,$file,$scorm_id) { $scoes[$j]['datafromlms'] = ''; } $sco->datafromlms = $scoes[$j]['datafromlms']; - if (!isset($scoes[$j]['prerequisites'])) { - $scoes[$j]['prerequisites'] = ''; - } - $sco->prerequisites = $scoes[$j]['prerequisites']; - if (!isset($scoes[$j]['maxtimeallowed'])) { - $scoes[$j]['maxtimeallowed'] = ''; - } - $sco->maxtimeallowed = $scoes[$j]['maxtimeallowed']; - if (!isset($scoes[$j]['timelimitaction'])) { - $scoes[$j]['timelimitaction'] = ''; - } - $sco->timelimitaction = $scoes[$j]['timelimitaction']; - if (!isset($scoes[$j]['masteryscore'])) { - $scoes[$j]['masteryscore'] = ''; - } - $sco->masteryscore = $scoes[$j]['masteryscore']; if (!isset($resources[($scoes[$j]['identifierref'])]['href'])) { $resources[($scoes[$j]['identifierref'])]['href'] = ''; } $sco->launch = $resources[($scoes[$j]['identifierref'])]['href']; - - if (!isset($scoes[$j]['parameters'])) { - $scoes[$j]['parameters'] = ''; - } - $sco->parameters = $scoes[$j]['parameters']; - if (!isset($resources[($scoes[$j]['identifierref'])]['scormtype'])) { - $resources[($scoes[$j]['identifierref'])]['scormtype'] = ''; + if (!isset($resources[($scoes[$j]['identifierref'])]['type'])) { + $resources[($scoes[$j]['identifierref'])]['type'] = ''; } - $sco->scormtype = $resources[($scoes[$j]['identifierref'])]['scormtype']; + $sco->type = $resources[($scoes[$j]['identifierref'])]['type']; if (!isset($scoes[$j]['previous'])) { $scoes[$j]['previous'] = 0; @@ -566,12 +543,12 @@ function scorm_parse($basedir,$file,$scorm_id) { } } else { foreach ($resources as $label => $resource) { - if (!empty($resource['href'])) { + if ((isset($resource['type'])) && ($resource['type'] == 'sco')) { $sco->identifier = $label; $sco->title = $label; $sco->parent = '/'; $sco->launch = $resource['href']; - $sco->scormtype = $resource['type']; + $sco->type = $resource['type']; $id = insert_record('scorm_scoes',$sco); if ($launch == 0) { @@ -583,51 +560,17 @@ function scorm_parse($basedir,$file,$scorm_id) { return $launch; } -function scorm_get_tracks($scoid,$userid) { -/// Gets all tracks of specified sco and user - global $CFG; - - if ($tracks = get_records_select('scorm_scoes_track',"userid=$userid AND scoid=$scoid")) { - $user_tracks->userid = $userid; - $user_tracks->scoid = $scoid; - $user_tracks->score_raw = ''; - $user_tracks->status = ''; - foreach ($tracks as $track) { - $element = str_replace('.','_',$track->element); - switch ($element) { - case 'cmi_core_lesson_status': - case 'cmi_completition_status': - if ($track->value == 'not attempted') { - $track->value = 'notattempted'; - } - $user_tracks->status = $track->value; - break; - case 'cmi_core_score_raw': - case 'cmi_score_raw': - $user_tracks->score_raw = $track->value; - break; - default: - $user_tracks->{$element} = $track->value; - } - } - //print_r($user_tracks); - return $user_tracks; - } else { - return false; - } -} - function scorm_get_scoes_records($sco_user) { /// Gets all info required to display the table of scorm results /// for report.php global $CFG; return get_records_sql("SELECT su.*, u.firstname, u.lastname, u.picture - FROM {$CFG->prefix}scorm_scoes_track su, + FROM {$CFG->prefix}scorm_sco_users su, {$CFG->prefix}user u WHERE su.scormid = '$sco_user->scormid' AND su.userid = u.id - AND su.userid = '$sco_user->userid' + AND su.userid = $sco_user->userid ORDER BY scoid"); } @@ -641,10 +584,11 @@ function scorm_remove_spaces($sourcestr) { return $newstr; } -function scorm_string_round($stringa, $len=11) { +function scorm_string_round($stringa) { // Crop a string to $len character and set an anchor title to the full string + $len=11; if ( strlen($stringa)>$len ) { - return '<a name="none" title="'.$stringa.'">'.substr($stringa,0,$len-4).'...'.substr($stringa,strlen($stringa)-1,1).'</a>'; + return "<A name=\"\" title=\"$stringa\">".substr($stringa,0,$len-4).'...'.substr($stringa,strlen($stringa)-1,1).'</A>'; } else return $stringa; } @@ -659,120 +603,14 @@ function scorm_external_link($link) { $result = true; else if (substr($link,0,4) == 'www.') $result = true; + /*else if (substr($link,0,7) == 'rstp://') + $result = true; + else if (substr($link,0,6) == 'rtp://') + $result = true; + else if (substr($link,0,6) == 'ftp://') + $result = true; + else if (substr($link,0,9) == 'gopher://') + $result = true; */ return $result; -} - -function scorm_display_structure($scorm,$liststyle,$currentorg='',$scoid='',$mode='normal',$play=false) { - global $USER; - - $strexpand = get_string('expcoll','scorm'); - - echo "<ul id='0' class='$liststyle'>"; - $incomplete = false; - $organizationsql = ''; - if (empty($currentorg)) { - // - } else { - $organizationsql = "AND organization='$currentorg'"; - } - if ($scoes = get_records_select('scorm_scoes',"scorm='$scorm->id' $organizationsql order by id ASC")){ - $level=0; - $sublist=1; - $previd = 0; - $nextid = 0; - $parents[$level]='/'; - foreach ($scoes as $sco) { - if ($parents[$level]!=$sco->parent) { - if ($level>0 && $parents[$level-1]==$sco->parent) { - echo "\t\t</ul></li>\n"; - $level--; - } else { - $i = $level; - $closelist = ''; - while (($i > 0) && ($parents[$level] != $sco->parent)) { - $closelist .= "\t\t</ul></li>\n"; - $i--; - } - if (($i == 0) && ($sco->parent != $currentorg)) { - echo "\t\t<li><ul id='$sublist' class='$liststyle'>\n"; - $level++; - } else { - echo $closelist; - $level = $i; - } - $parents[$level]=$sco->parent; - } - } - echo "\t\t<li>"; - $nextsco = next($scoes); - if (($nextsco !== false) && ($sco->parent != $nextsco->parent) && (($level==0) || (($level>0) && ($nextsco->parent == $sco->identifier)))) { - $sublist++; - echo '<a href="#" onClick="expandCollide(img'.$sublist.','.$sublist.');"><img id="img'.$sublist.'" src="pix/minus.gif" alt="'.$strexpand.'" title="'.$strexpand.'"/></a>'; - } else { - echo '<img src="pix/spacer.gif" />'; - } - - if ($sco->launch) { - $startbold = ''; - $endbold = ''; - $score = ''; - if ($user_tracks=scorm_get_tracks($sco->id,$USER->id)) { - if ( $user_tracks->status == '') { - $user_tracks->status = 'notattempted'; - } - $strstatus = get_string($user_tracks->status,'scorm'); - echo "<img src='pix/".$user_tracks->status.".gif' alt='$strstatus' title='$strstatus' />"; - if (($user_tracks->status == 'notattempted') || ($user_tracks->status == 'incomplete')) { - $incomplete = true; - if ($play && empty($scoid)) { - $scoid = $sco->id; - } - } - if ($user_tracks->score_raw != '') { - $score = '('.get_string('score','scorm').':&nbsp;'.$user_tracks->score_raw.')'; - } - } else { - if ($play && empty($scoid)) { - $scoid = $sco->id; - } - if ($sco->scormtype == 'sco') { - echo '<img src="pix/notattempted.gif" alt="'.get_string('notattempted','scorm').'" />'; - $incomplete = true; - } else { - echo '<img src="pix/asset.gif" alt="'.get_string('asset','scorm').'" />'; - } - } - - if ($sco->id == $scoid) { - $startbold = '&gt; <b>'; - $endbold = '</b> &lt;'; - if ($nextsco !== false) { - $nextid = $nextsco->id; - } else { - $nextid = 0; - } - } - if ($nextid == 0) { - $previd = $sco->id; - } - - echo "&nbsp;$startbold<a href='javascript:playSCO(".$sco->id.");'>$sco->title</a> $score$endbold</li>\n"; - } else { - echo "&nbsp;$sco->title</li>\n"; - } - } - for ($i=0;$i<$level;$i++) { - echo "\t\t</ul></li>\n"; - } - } - echo "\t</ul>\n"; - if ($play) { - $result->id = $scoid; - $result->prev = $previd; - $result->next = $nextid; - return $result; - } else { - return $incomplete; - } -} +} ?> diff --git a/mod/scorm/loadSCO.php b/mod/scorm/loadSCO.php deleted file mode 100755 index a6d2e49558b..00000000000 --- a/mod/scorm/loadSCO.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - require_once("../../config.php"); - require_once("lib.php"); - - optional_variable($id); // Course Module ID, or - optional_variable($a); // scorm ID - optional_variable($scoid); // sco ID - - if ($id) { - if (! $cm = get_record("course_modules", "id", $id)) { - error("Course Module ID was incorrect"); - } - - if (! $course = get_record("course", "id", $cm->course)) { - error("Course is misconfigured"); - } - - if (! $scorm = get_record("scorm", "id", $cm->instance)) { - error("Course module is incorrect"); - } - - } else { - if (! $scorm = get_record("scorm", "id", $a)) { - error("Course module is incorrect"); - } - if (! $course = get_record("course", "id", $scorm->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("scorm", $scorm->id, $course->id)) { - error("Course Module ID was incorrect"); - } - } - - require_login($course->id, false, $cm); - - if (!empty($scoid)) { - // - // Direct sco request - // - if ($sco = get_record("scorm_scoes","id",$scoid)) { - if ($sco->launch == '') { - // Search for the next launchable sco - if ($scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>'' AND id>".$scoid,"id ASC")) { - $sco = current($scoes); - } - } - } - } else { - // - // Search for first incomplete sco - // - if ( $scoes_track = get_records_select("scorm_scoes_track","userid=".$USER->id." AND element='cmi.core.lesson_status' AND scormid=".$scorm->id,"scoid ASC") ) { - $sco_track = current($scoes_track); - while ((($sco_track->value == "completed") || ($sco_track->value == "passed") || ($sco_track->value == "failed")) && ($mode == "normal")) { - $sco_track = next($scoes_track); - } - $sco = get_record("scorm_scoes","id",$sco_track->scoid); - } - - } - - // - // If no sco was found get the first of SCORM package - // - if (!isset($sco)) { - $scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>''","id ASC"); - $sco = current($scoes); - } - - // - // Forge SCO URL - // - $connector = ''; - if (!empty($sco->parameters)) { - if (stripos($sco->launch,'?') !== false) { - $connector = '&'; - } else { - $connector = '?'; - } - } - if (scorm_external_link($sco->launch)) { - $result = $sco->launch; - } else { - if ($CFG->slasharguments) { - $result = $CFG->wwwroot.'/file.php/'.$scorm->course.'/moddata/scorm'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters; - } else { - $result = $CFG->wwwroot.'/file.php?file=/'.$scorm->course.'/moddata/scorm'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters; - } - } -?> -<html> - <head> - <title>LoadSCO</title> - </head> - <body> - <script language="javascript"> - document.location='<?php echo $result ?>'; - </script> - </body> -</html> \ No newline at end of file diff --git a/mod/scorm/mod.html b/mod/scorm/mod.html index e07d099af2b..8ad46718451 100755 --- a/mod/scorm/mod.html +++ b/mod/scorm/mod.html @@ -1,5 +1,4 @@ <?php - require_once("$CFG->dirroot/mod/scorm/lib.php"); if (empty($form->name)) { $form->name = ""; } @@ -12,65 +11,15 @@ if (empty($form->launch)) { $form->launch = ""; } - if (empty($form->auto)) { - $form->auto = ""; - } - if (empty($form->datadir)) { - $form->datadir = ""; - } - if (empty($form->maxgrade)) { - $form->maxgrade = ""; - } - if (empty($form->grademethod)) { - $form->grademethod = "0"; - } - $scormid = ''; - if (!empty($form->instance)) { - $scormid = '&instance='.$form->instance; - } - $datadir = ''; - if (!empty($form->datadir)) { - $datadir = '&datadir='.$form->datadir; - } - $sessionkey = ''; - if (!empty($form->sesskey)) { - $sessionkey = '&sesskey='.$form->sesskey; - } ?> -<script type="text/javascript" src="<?php p($CFG->wwwroot) ?>/mod/scorm/request.js" > -</script> -<script type="text/javascript"> - function validate_scorm(theform,filename) { - //alert(filename); - var myRequest = NewHttpReq(); - result = DoRequest(myRequest,"<?php p($CFG->wwwroot) ?>/mod/scorm/validate.php","id=<?php p($form->course) ?>&reference="+filename+"<?php echo $sessionkey.$scormid.$datadir ?>"); - //alert(result); - results = result.split('\n'); - if ((results[0] == "found") || (results[0] == "regular")) { - theform.datadir.value = results[2]; - if (results[1] == 0) { - theform.launch.value = results[1]; - if ('<?php echo $scormid ?>' != '') { - return confirm('<?php print_string('trackingloose','scorm') ?>'); - } - } - return true; - } else { - result = '<?php print_string('validation','scorm') ?>: '+ results[0] + '\n'; - result.concat('<?php print_string('errorlogs','scorm') ?>:\n',results[3]); - alert(result); - return false; - } - } -</script> -<form name="form" method="post" action="mod.php" onsubmit="return validate_scorm(document.form,document.form.reference.value);"> - <table cellpadding="5"> - <tr valign="top"> - <td align="right"><b><?php print_string("name") ?>:</b></td> +<form name="form" method="post" action="<?php echo $CFG->wwwroot ?>/mod/scorm/details.php"> + <table cellpadding=5> + <tr valign=top> + <td align=right><p><b><?php print_string("name") ?>:</b></p></td> <td> - <input type="text" name="name" size="50" value="<?php p($form->name) ?>" alt="<?php print_string("name") ?>" /> + <input type="text" name="name" size=50 value="<?php p($form->name) ?>"> </td> </tr> <?php @@ -78,79 +27,49 @@ $strchooseafile = get_string("chooseapacket", "scorm"); ?> <tr valign="top"> - <td align="right"><b><?php print_string("summary") ?>:</b><br /> - <font size="1"> - <?php helpbutton("summary", get_string("summary"), "scorm", true, true) ?> - </font> - </td> - <td> - <?php print_textarea($usehtmleditor, 10, 50, 680, 400, "summary", $form->summary); ?> - </td> - </tr> - <tr valign="top"> - <td align="right" nowrap="nowrap"> - <b><?php echo $strfilename?>:</b> + <td align="right" nowrap> + <p><b><?php echo $strfilename?>:</b></p> </td> <td> <?php - echo "<input name=\"reference\" size=\"50\" value=\"$form->reference\" alt=\"$strfilename\" />&nbsp;"; - button_to_popup_window ("/files/index.php?id=$course->id&amp;choose=form.reference", + echo "<input name=\"reference\" size=\"50\" value=\"$form->reference\">&nbsp;"; + button_to_popup_window ("/mod/scorm/coursefiles.php?id=$course->id", "coursefiles", $strchooseafile, 500, 750, $strchooseafile); - helpbutton("package", get_string("coursepacket", "scorm"), "scorm", true); ?> </td> </tr> - <tr valign="top"> - <td align="right"><b><?php print_string("grademethod", "scorm") ?>:</b></td> - <td> - <?php - choose_from_menu($SCORM_GRADE_METHOD, "grademethod", "$form->grademethod", ""); - helpbutton("grademethod", get_string("grademethod","scorm"), "scorm"); - ?> - </td> - </tr> - <tr valign="top"> - <td align="right"><b><?php print_string("maximumgrade") ?>:</b></td> - <td> - <?php - for ($i=100; $i>=1; $i--) { - $grades[$i] = $i; - } - - choose_from_menu($grades, "maxgrade", "$form->maxgrade", ""); - helpbutton("maxgrade", get_string("maximumgrade"), "scorm"); - ?> - </td> - </tr> - <tr> - <td align="right"><b><?php print_string("autocontinue","scorm") ?>:</b></td> - <td> - <?php - $options = array(); - $options[0]=get_string("no"); - $options[1]=get_string("yes"); - choose_from_menu ($options, "auto", $form->auto); - helpbutton("autocontinue", get_string("autocontinue", "scorm"), "scorm", true); - ?> + <tr valign=top> + <td align=right><p><b><?php print_string("summary") ?>:</b></p> + <font size="1"> + <?php + helpbutton("summary", get_string("summary"), "scorm", true, true); + echo "<br \>"; + helpbutton("writing", get_string("helpwriting"), "moodle", true, true); + echo "<br \>"; + helpbutton("text", get_string("helptext"), "moodle", true, true); + ?> + </font> + </td> + <td> + <?php print_textarea($usehtmleditor, 20, 50, 680, 400, "summary", $form->summary); ?> </td> </tr> </table> - <input type="hidden" name="datadir" value="<?php p($form->datadir) ?>" /> - <input type="hidden" name="launch" value="<?php p($form->launch) ?>" /> - <input type="hidden" name="auto" value="<?php p($form->auto) ?>" /> + <input type="hidden" name=course value="<?php p($form->course) ?>"> + <input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> + <input type="hidden" name=datadir value="<?php p($form->datadir) ?>"> + <input type="hidden" name=launch value="<?php p($form->launch) ?>"> + <input type="hidden" name=popup value="<?php p($form->popup) ?>"> + <input type="hidden" name=auto value="<?php p($form->auto) ?>"> <input type="hidden" name="maxgrade" value="<?php p($form->maxgrade) ?>" /> <input type="hidden" name="grademethod" value="<?php p($form->grademethod) ?>" /> - - <input type="hidden" name="course" value="<?php p($form->course) ?>" /> - <input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> - <input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> - <input type="hidden" name="section" value="<?php p($form->section) ?>" /> - <input type="hidden" name="module" value="<?php p($form->module) ?>" /> - <input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> - <input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> - <input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> + <input type="hidden" name=section value="<?php p($form->section) ?>"> + <input type="hidden" name=module value="<?php p($form->module) ?>"> + <input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> + <input type="hidden" name=instance value="<?php p($form->instance) ?>"> + <input type="hidden" name=mode value="<?php p($form->mode) ?>"> + <input type="hidden" name=destination value="<?php echo $ME ?>"> <center> - <input type="submit" value="<?php print_string('savechanges') ?>" /> - <input type="button" name="cancel" value="<?php print_string('cancel') ?>" onclick="document.location='view.php?id=<?php echo $form->course ?>'" /> + <input type="submit" value="<?php print_string("continue") ?>"> </center> </form> diff --git a/mod/scorm/playscorm.php b/mod/scorm/playscorm.php index 745794afb86..43fc87dc0eb 100755 --- a/mod/scorm/playscorm.php +++ b/mod/scorm/playscorm.php @@ -1,43 +1,45 @@ <?PHP // $Id$ /// This page prints a particular instance of scorm +/// (Replace scorm with the name of your module) - require_once('../../config.php'); - require_once('lib.php'); + require_once("../../config.php"); + require_once("lib.php"); optional_variable($id); // Course Module ID, or optional_variable($a); // scorm ID + optional_variable($frameset, ""); if ($id) { - if (! $cm = get_record('course_modules', 'id', $id)) { - error('Course Module ID was incorrect'); + if (! $cm = get_record("course_modules", "id", $id)) { + error("Course Module ID was incorrect"); } - if (! $course = get_record('course', 'id', $cm->course)) { - error('Course is misconfigured'); + if (! $course = get_record("course", "id", $cm->course)) { + error("Course is misconfigured"); } - if (! $scorm = get_record('scorm', 'id', $cm->instance)) { - error('Course module is incorrect'); + if (! $scorm = get_record("scorm", "id", $cm->instance)) { + error("Course module is incorrect"); } } else { - if (! $scorm = get_record('scorm', 'id', $a)) { - error('Course module is incorrect'); + if (! $scorm = get_record("scorm", "id", $a)) { + error("Course module is incorrect"); } - if (! $course = get_record('course', 'id', $scorm->course)) { - error('Course is misconfigured'); + if (! $course = get_record("course", "id", $scorm->course)) { + error("Course is misconfigured"); } - if (! $cm = get_coursemodule_from_instance('scorm', $scorm->id, $course->id)) { - error('Course Module ID was incorrect'); + if (! $cm = get_coursemodule_from_instance("scorm", $scorm->id, $course->id)) { + error("Course Module ID was incorrect"); } } - require_login($course->id, false, $cm); + require_login($course->id); - $strscorms = get_string('modulenameplural', 'scorm'); - $strscorm = get_string('modulename', 'scorm'); + $strscorms = get_string("modulenameplural", "scorm"); + $strscorm = get_string("modulename", "scorm"); if ($course->category) { $navigation = "<a target=\"{$CFG->framename}\" href=\"../../course/view.php?id=$course->id\">$course->shortname</a> -> @@ -49,120 +51,227 @@ $pagetitle = strip_tags("$course->shortname: $scorm->name"); if (!$cm->visible and !isteacher($course->id)) { - print_header($pagetitle, "$course->fullname", "$navigation $scorm->name", '', '', true, + print_header($pagetitle, "$course->fullname", "$navigation $scorm->name", "", "", true, update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm)); notice(get_string("activityiscurrentlyhidden")); } - // - // Checkin script parameters - // - $mode = ''; - $scoid=''; - $currentorg=''; - $modestring = ''; - $scoidstring = ''; - $currentorgstring = ''; - if (!empty($_POST['mode'])) { - $mode = $_POST['mode']; - $modestring = '&mode='.$mode; - } - if (!empty($_POST['scoid'])) { - $scoid = $_POST['scoid']; - $scoidstring = '&scoid='.$scoid; - } + if (!empty($_POST["scoid"])) + $scoid = "&scoid=".$_POST["scoid"]; if (!empty($_POST['currentorg'])) { $currentorg = $_POST['currentorg']; - $currentorgstring = '&currentorg='.$currentorg; } + if (($scorm->popup != "") && (!empty($_POST["mode"]))) + $mode = $_POST["mode"]; + if (($scorm->popup == "") && (!empty($_GET["mode"]))) + $mode = $_GET["mode"]; - $strexpand = get_string('expcoll','scorm'); - - // - // Print the page header - // - $bodyscripts = "onUnload='SCOFinish();'"; - print_header($pagetitle, "$course->fullname", - "$navigation <a target='{$CFG->framename}' href='view.php?id=$cm->id'>$scorm->name</a>", - '', '', true, update_module_button($cm->id, $course->id, $strscorm), "", "", $bodyscripts); -?> - <style type="text/css"> - .scormlist { - list-style-type:none; - text-indent:-4ex; - } - - .fullscreen { - width: 100%; - vertical-align: top; - } - </style> - <script language="Javascript"> - <!-- - function playSCO(scoid) { - if (scoid == 0) { - document.location = 'view.php?id=<?php echo $cm->id ?>'; - } else { - document.navform.scoid.value=scoid; - document.navform.submit(); - } - } - - function expandCollide(which,list) { - var nn=document.ids?true:false - var w3c=document.getElementById?true:false - var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all."; - var mid=w3c?").style":".style"; + if (($frameset == "top") || ($scorm->popup != "")) { + add_to_log($course->id, "scorm", "view", "playscorm.php?id=$cm->id", "$scorm->id"); + // + // Print the page header + // + $bodyscripts = ""; + if ($scorm->popup != "") { + $bodyscripts = "onLoad='SCOInitialize();' onUnload='API.SaveTotalTime(); closeMain();' onbeforeUnload='API.SaveTotalTime();'"; + } + print_header($pagetitle, "$course->fullname", + "$navigation <a target=\"{$CFG->framename}\" href=\"view.php?id=$cm->id\" title=\"$scorm->summary\">$scorm->name</a>", + "", "", true, update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm, '_top'),"",$bodyscripts); - if (eval(beg+list+mid+".display") != "none") { - which.src = "pix/plus.gif"; - eval(beg+list+mid+".display='none';"); - } else { - which.src = "pix/minus.gif"; - eval(beg+list+mid+".display='block';"); - } - } - --> - </script> - - <script language="JavaScript" type="text/javascript" src="request.js"></script> - <script language="JavaScript" type="text/javascript" src="api.php?id=<?php echo $cm->id ?>"></script> - <table class="fullscreen" height="90%"> - <tr><td valign="top"> - <p><?php echo text_to_html($scorm->summary, false, false) ?></p> - <p><?php echo $mode == 'browse' ? get_string('browsemode','scorm') : '&nbsp;'; ?></p> - <table class='generalbox' cellpadding='5' cellspacing='0'> - <tr> - <th> - <div style='float: left;'><?php print_string('coursestruct','scorm') ?></div> - <div style='float:right;'> - <a href='#' onClick='expandCollide(imgmain,0);'> - <img id='imgmain' src="pix/minus.gif" alt="<?php echo $strexpand ?>" title="<?php echo $strexpand ?>"/> - </a> - </div> - </th> - </tr> - <tr><td nowrap> -<?php - $sco = scorm_display_structure($scorm,'scormlist',$currentorg,$scoid,$mode,true); - add_to_log($course->id, 'scorm', 'view', "reviewscorm.php?id=$cm->id&uid=$USER->id&scoid=$sco->id", "$scorm->id"); + echo "<table width=\"100%\">\n <tr><td align=\"center\">".text_to_html($scorm->summary, true, false)."</td>\n"; + if ($mode == "browse") + echo "<td align=\"right\" width=\"10%\" nowrap>".get_string("browsemode","scorm")."</td>\n"; + echo " </tr>\n</table>\n"; + + if ($scorm->popup != "") { + echo "<script id=\"scormAPI\" language=\"JavaScript\" type=\"text/javascript\" src=\"scormAPI.php?id=$cm->id&mode=".$mode.$scoid."\"></script>\n"; + $currentSCO = ""; + if (!empty($_POST['scoid'])) + $currentSCO = $_POST['scoid']; + ?> + <br /> + <script language="Javascript"> + <!-- + function playSCO(scoid) { + document.navform.scoid.value=scoid; + document.navform.submit(); + } + + function expandCollide(which,list) { + var nn=document.ids?true:false + var w3c=document.getElementById?true:false + var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all."; + var mid=w3c?").style":".style"; + + if (eval(beg+list+mid+".display") != "none") { + which.src = "pix/plus.gif"; + eval(beg+list+mid+".display='none';"); + } else { + which.src = "pix/minus.gif"; + eval(beg+list+mid+".display='block';"); + } + + } + --> + </script> + <style type="text/css"> + .scormlist { list-style-type:none; } + </style> + <?php + print_simple_box_start("CENTER"); + echo "<table>\n"; + echo " <tr><th>".get_string("coursestruct","scorm")."</th></tr>\n"; + echo " <tr><td nowrap>\n<ul class=\"scormlist\"'>\n"; + $incomplete = false; + if ($scoes = get_records_select("scorm_scoes","scorm='$scorm->id' AND organization='$currentorg' order by id ASC")){ + $level=0; + $sublist=0; + $parents[$level]="/"; + foreach ($scoes as $sco) { + if ($parents[$level]!=$sco->parent) { + if ($level>0 && $parents[$level-1]==$sco->parent) { + echo " </ul></li>\n"; + $level--; + } else { + $i = $level; + $closelist = ""; + while (($i > 0) && ($parents[$level] != $sco->parent)) { + $closelist .= " </ul></li>\n"; + $i--; + } + if (($i == 0) && ($sco->parent != $currentorg)) { + echo " <li><ul id='".$sublist."' class=\"scormlist\"'>\n"; + $level++; + } else { + echo $closelist; + $level = $i; + } + $parents[$level]=$sco->parent; + } + } + echo " <li>\n"; + $nextsco = next($scoes); + if (($nextsco !== false) && ($sco->parent != $nextsco->parent) && (($level==0) || (($level>0) && ($nextsco->parent == $sco->identifier)))) { + $sublist++; + echo " <img src=\"pix/minus.gif\" onClick='expandCollide(this,".$sublist.");'/>\n"; + } else { + echo " <img src=\"pix/spacer.gif\" />\n"; + } + + if ($sco->launch) { + $startbold = ''; + $endbold = ''; + if ($sco->id == $currentSCO) { + $startbold = '-> <b>'; + $endbold = '</b> <-'; + } + if (($currentSCO == "") && ($mode != "normal")) { + $currentSCO = $sco->id; + $startbold = '-> <b>'; + $endbold = '</b> <-'; + } + $score = ""; + if ($sco_user=get_record("scorm_sco_users","scoid",$sco->id,"userid",$USER->id)) { + if ( $sco_user->cmi_core_lesson_status == "") + $sco_user->cmi_core_lesson_status = "not attempted"; + echo " <img src=\"pix/".scorm_remove_spaces($sco_user->cmi_core_lesson_status).".gif\" alt=\"".get_string(scorm_remove_spaces($sco_user->cmi_core_lesson_status),"scorm")."\" title=\"".get_string(scorm_remove_spaces($sco_user->cmi_core_lesson_status),"scorm")."\" />\n"; + if (($sco_user->cmi_core_lesson_status == "not attempted") || ($sco_user->cmi_core_lesson_status == "incomplete")) { + if ($currentSCO == "") { + $incomplete = true; + $currentSCO = $sco->id; + $startbold = '-> <b>'; + $endbold = '</b> <-'; + } + } + if ($sco_user->cmi_core_score_raw > 0) { + $score = "(".get_string("score","scorm").":&nbsp;".$sco_user->cmi_core_score_raw.")"; + } + } else { + echo " <img src=\"pix/notattempted.gif\" alt=\"".get_string("notattempted","scorm")."\" />"; + $incomplete = true; + } + echo " &nbsp;$startbold<a href=\"javascript:playSCO(".$sco->id.");\">$sco->title</a> $score$endbold\n </li>\n"; + } else { + echo " &nbsp;$sco->title\n </li>\n"; + } + } + for ($i=0;$i<$level;$i++){ + echo " </ul></li>\n"; + } + } + echo "</ul></td></tr>\n"; + echo "</table>\n"; + print_simple_box_end(); + + } + + echo "<table width=\"100%\">\n <tr>\n"; + echo " <td align=\"center\" nowrap> + <iframe name=\"cmi\" width=\"1\" height=\"1\" src=\"cmi.php?id=$cm->id\" style=\"visibility: hidden\"></iframe> + <form name=\"navform\" method=\"POST\" action=\"playscorm.php?id=$cm->id\" target=\"_top\"> + <input name=\"scoid\" type=\"hidden\" /> + <input name=\"currentorg\" type=\"hidden\" value=\"$currentorg\" /> + <input name=\"mode\" type=\"hidden\" value=\"".$mode."\" /> + <input name=\"prev\" type=\"button\" value=\"".get_string("prev","scorm")."\" onClick=\"top.changeSco('previous');\" />&nbsp;\n"; + + if ($scorm->popup == "") { + $currentorg = ''; + if (isset($_GET['currentorg'])) { + $currentorg = $_GET['currentorg']; + } + if ($scoes = get_records_select("scorm_scoes","scorm='$scorm->id' AND organization='$currentorg' order by id ASC")){ + $level=0; + $parents[$level]="/"; + foreach ($scoes as $sco) { + if ($parents[$level]!=$sco->parent) { + if ($level>0 && $parents[$level-1]==$sco->parent) { + $level--; + } else { + $i = $level; + while (($i > 0) && ($parents[$level] != $sco->parent)) { + $i--; + } + if (($i == 0) && ($sco->parent != $currentorg)) { + $level++; + } else { + $level = $i; + } + $parents[$level]=$sco->parent; + } + } + $indenting = ""; + for ($i=0;$i<$level;$i++) { + $indenting .= "-"; + } + $options[$sco->id] = $indenting."&gt; ".$sco->title; + } + } + choose_from_menu($options, "courseStructure", "", "", "document.navform.scoid.value=document.navform.courseStructure.options[document.navform.courseStructure.selectedIndex].value;document.navform.submit();"); + } + echo " &nbsp;<input name=\"next\" type=\"button\" value=\"".get_string("next","scorm")."\" onClick=\"top.changeSco('continue')\" />\n"; + echo " </form> + </td>\n"; + + echo "</tr>\n</table>\n"; + if ($scorm->popup == "") { + echo "</body>\n</html>\n"; + } else { + print_footer($course); + } + } else { + if ($scorm->popup == "") { + // + // Frameset + // + echo "<html>\n"; + echo "<head><title>$course->shortname: $scorm->name</title></head>\n"; + echo "<script id=\"scormAPI\" language=\"JavaScript\" type=\"text/javascript\" src=\"scormAPI.php?id=$cm->id&mode=".$mode.$scoid."\"></script>\n"; + echo "<frameset rows=\"$CFG->scorm_framesize,*\" onLoad=\"SCOInitialize();\" onUnload=\"API.SaveTotalTime();\" onbeforeUnload=\"API.SaveTotalTime();\">\n"; + echo "\t <frame name=\"navigation\" src=\"playscorm.php?id=$cm->id&mode=".$mode.'&currentorg='.$currentorg."&frameset=top\">\n"; + echo "\t <frame name=\"main\" src=\"\">\n"; + echo "</frameset>\n"; + echo "</html>\n"; + } + } ?> - </td></tr> - <tr><td align="center"> - <form name="navform" method="post" action="playscorm.php?id=<?php echo $cm->id ?>" target="_top"> - <input name="scoid" type="hidden" /> - <input name="currentorg" type="hidden" value="<?php echo $currentorg ?>" /> - <input name="mode" type="hidden" value="<?php echo $mode ?>" /> - <input name="prev" type="<?php if ($sco->prev == 0) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('prev','scorm') ?>" onClick="playSCO(<?php echo $sco->prev ?>);" /> - <input name="next" type="button" value="<?php if ($sco->next == 0) { print_string('exit','scorm'); } else { print_string('next','scorm'); } ?>" onClick="playSCO(<?php echo $sco->next ?>)" /> - </form> - </td></tr> - </table> - </td> - <td class="fullscreen" height="90%"> - <iframe name="main" class="fullscreen" height="640" src="loadSCO.php?id=<?php echo $cm->id.$scoidstring ?>"></iframe> - <!--<iframe name="main" class="fullscreen" height="100%" src="loadSCO.php?id=<?php echo $cm->id.$scoidstring ?>"></iframe> --> - </td></tr> - </table> -</body> -</html> diff --git a/mod/scorm/report.php b/mod/scorm/report.php index ec3bef4ea5d..ca0bc7a66fd 100755 --- a/mod/scorm/report.php +++ b/mod/scorm/report.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // This script uses installed report plugins to print quiz reports @@ -11,11 +11,11 @@ if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); } - + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); } - + if (! $scorm = get_record("scorm", "id", $cm->instance)) { error("Course module is incorrect"); } @@ -32,7 +32,7 @@ } } - require_login($course->id, false, $cm); + require_login($course->id); if (!isteacher($course->id)) { error("You are not allowed to use this script"); @@ -45,67 +45,71 @@ if ($course->category) { $navigation = "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->"; - } else { - $navigation = ''; } - + $strscorms = get_string("modulenameplural", "scorm"); $strscorm = get_string("modulename", "scorm"); $strreport = get_string("report", "scorm"); - + print_header("$course->shortname: $scorm->name", "$course->fullname", - "$navigation <a href=\"index.php?id=$course->id\">$strscorms</a> - -> <a href=\"view.php?id=$cm->id\">$scorm->name</a> -> $strreport", + "$navigation <A HREF=index.php?id=$course->id>$strscorms</A> + -> <a href=\"view.php?id=$cm->id\">$scorm->name</a> -> $strreport", "", "", true); - + print_heading($scorm->name); } if ($scoes =get_records_select("scorm_scoes","scorm='$scorm->id' ORDER BY id")) { - if ($sco_users=get_records_select("scorm_scoes_track", "scormid='$scorm->id' GROUP BY userid")) { + if ($sco_users=get_records_select("scorm_sco_users", "scormid='$scorm->id' GROUP BY userid")) { + + $strname = get_string("name"); - $strname = get_string("name"); + $table->head = array("&nbsp;", $strname); + $table->align = array("center", "left"); + $table->wrap = array("nowrap", "nowrap"); + $table->width = "100%"; + $table->size = array(10, "*"); + foreach ($scoes as $sco) { + if ($sco->launch!="") { + $table->head[]=scorm_string_round($sco->title); + $table->align[] = "center"; + $table->wrap[] = "nowrap"; + $table->size[] = "*"; + } + } - $table->head = array("&nbsp;", $strname); - $table->align = array("center", "left"); - $table->wrap = array("nowrap", "nowrap"); - $table->width = "100%"; - $table->size = array(10, "*"); - foreach ($scoes as $sco) { - if ($sco->launch!="") { - $table->head[]=scorm_string_round($sco->title); - $table->align[] = "center"; - $table->wrap[] = "nowrap"; - $table->size[] = "*"; - } - } - - foreach ($sco_users as $sco_user) { - $user_data = scorm_get_user_track($scorm->id,$sco_user->userid); - - $row = array(); - $data = current($user_data); - $row[] = print_user_picture($sco_user->userid, $course->id, $data->picture, false, true); - $row[] = "<a href=\"$CFG->wwwroot/user/view.php?id=$data->userid&course=$course->id\">". - "$data->firstname $data->lastname</a>"; - foreach ($user_data as $data) { - $scoreview = ""; - if ($data->cmi_core_score_raw > 0) - $scoreview = "<br />".get_string("score","scorm").":&nbsp;".$data->cmi_core_score_raw; - if ( $data->cmi_core_lesson_status == "") - $data->cmi_core_lesson_status = "not attempted"; - $row[]="<img src=\"pix/".scorm_remove_spaces($data->cmi_core_lesson_status).".gif\" - alt=\"".get_string(scorm_remove_spaces($data->cmi_core_lesson_status),"scorm")."\" - title=\"".get_string(scorm_remove_spaces($data->cmi_core_lesson_status),"scorm")."\">&nbsp;" - .$data->cmi_core_total_time.$scoreview; - } - $table->data[] = $row; - } - - print_table($table); - - } else { - notice("No users to report"); - } + foreach ($sco_users as $sco_user) { + $user_data=scorm_get_scoes_records($sco_user); + $userpict = ""; + if (isset($user_data->picture)) { + $userpict = $user_data->picture; + } + $picture = print_user_picture($sco_user->userid, $course->id, $userpict, false, true); + $row=""; + $row[] = $picture; + if (is_array($user_data)) { + $data = current($user_data); + $row[] = "<a href=\"$CFG->wwwroot/user/view.php?id=$data->userid&course=$course->id\">". + "$data->firstname $data->lastname</a>"; + foreach ($user_data as $data) { + $scoreview = ""; + if ($data->cmi_core_score_raw > 0) + $scoreview = "<br />".get_string("score","scorm").":&nbsp;".$data->cmi_core_score_raw; + if ( $data->cmi_core_lesson_status == "") + $data->cmi_core_lesson_status = "not attempted"; + $row[]="<img src=\"pix/".scorm_remove_spaces($data->cmi_core_lesson_status).".gif\" + alt=\"".get_string(scorm_remove_spaces($data->cmi_core_lesson_status),"scorm")."\" + title=\"".get_string(scorm_remove_spaces($data->cmi_core_lesson_status),"scorm")."\">&nbsp;" + .$data->cmi_core_total_time.$scoreview; + } + } + $table->data[] = $row; + } + + print_table($table); + + } else { + notice("No users to report"); + } } if (empty($noheader)) { print_footer($course); diff --git a/mod/scorm/request.js b/mod/scorm/request.js deleted file mode 100644 index 321c931a580..00000000000 --- a/mod/scorm/request.js +++ /dev/null @@ -1,35 +0,0 @@ -function NewHttpReq() { - var httpReq = false; - if (typeof XMLHttpRequest!='undefined') { - httpReq = new XMLHttpRequest(); - } else { - try { - httpReq = new ActiveXObject("Msxml2.XMLHTTP.4.0"); - } catch (e) { - try { - httpReq = new ActiveXObject("Msxml2.XMLHTTP"); - } catch (ee) { - try { - httpReq = new ActiveXObject("Microsoft.XMLHTTP"); - } catch (eee) { - httpReq = false; - } - } - } - } - return httpReq; -} - -function DoRequest(httpReq,url,param) { - // - // httpReq.open (Method("get","post"), URL(string), Asyncronous(true,false)) - // - httpReq.open("get", url+'?'+param,false); - //httpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - httpReq.send(null); - if (httpReq.status == 200) { - return httpReq.responseText; - } else { - return httpReq.status; - } -} \ No newline at end of file diff --git a/mod/scorm/restorelib.php b/mod/scorm/restorelib.php index d18ae554347..f3e20f61878 100755 --- a/mod/scorm/restorelib.php +++ b/mod/scorm/restorelib.php @@ -1,21 +1,21 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //reservation mods //This is the "graphical" structure of the scorm mod: // - // scorm - // (CL,pk->id)--------------------- + // scorm + // (CL,pk->id)-------------------- // | | // | | // | | - // scorm_scoes | - // (UL,pk->id, fk->scorm) | + // scorm_scoes | + // (UL,pk->id, fk->scorm) | // | | // | | // | | - // scorm_scoes_track | - // (UL,pk->id, fk->scormid, fk->scoid, fk->userid)-- + // scorm_sco_users | + // (UL,pk->id, fk->scormid, fk->scoid)---- // // Meaning: pk->primary key field of the table // fk->foreign key to link with parent @@ -49,15 +49,17 @@ $scorm->reference = backup_todb($info['MOD']['#']['REFERENCE']['0']['#']); $scorm->reference = backup_todb($info['MOD']['#']['MAXGRADE']['0']['#']); $scorm->reference = backup_todb($info['MOD']['#']['GRADEMETHOD']['0']['#']); + $scorm->datadir = backup_todb($info['MOD']['#']['DATADIR']['0']['#']); $scorm->launch = backup_todb($info['MOD']['#']['LAUNCH']['0']['#']); $scorm->summary = backup_todb($info['MOD']['#']['SUMMARY']['0']['#']); $scorm->auto = backup_todb($info['MOD']['#']['AUTO']['0']['#']); + $scorm->popup = backup_todb($info['MOD']['#']['POPUP']['0']['#']); $scorm->timemodified = backup_todb($info['MOD']['#']['TIMEMODIFIED']['0']['#']); //The structure is equal to the db, so insert the scorm $newid = insert_record ("scorm",$scorm); //Do some output - echo "<li>".get_string("modulename","scorm")." \"".$scorm->name."\"</li>"; + echo "<ul><li>".get_string("modulename","scorm")." \"".$scorm->name."\"<br>"; backup_flush(300); if ($newid) { @@ -66,14 +68,24 @@ $mod->id, $newid); //Now copy moddata associated files - $status = scorm_restore_files ($scorm, $restore); + $status = scorm_restore_files ($scorm->datadir, $restore); if ($status) $status = scorm_scoes_restore_mods ($newid,$info,$restore); + //Now check if want to restore user data and do it. + if ($restore->mods['scorm']->userinfo) { + //Restore scorm_scoes + if ($status) + $status = scorm_sco_users_restore_mods ($newid,$info,$restore); + } } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -105,32 +117,20 @@ $sco->parent = backup_todb($sub_info['#']['PARENT']['0']['#']); $sco->identifier = backup_todb($sub_info['#']['IDENTIFIER']['0']['#']); $sco->launch = backup_todb($sub_info['#']['LAUNCH']['0']['#']); - $sco->scormtype = backup_todb($sub_info['#']['SCORMTYPE']['0']['#']); + $sco->type = backup_todb($sub_info['#']['TYPE']['0']['#']); $sco->title = backup_todb($sub_info['#']['TITLE']['0']['#']); - $sco->title = backup_todb($sub_info['#']['PREREQUISITES']['0']['#']); - $sco->title = backup_todb($sub_info['#']['MAXTIMEALLOWED']['0']['#']); - $sco->title = backup_todb($sub_info['#']['TIMELIMITACTION']['0']['#']); $sco->datafromlms = backup_todb($sub_info['#']['DATAFROMLMS']['0']['#']); - $sco->title = backup_todb($sub_info['#']['MASTERYSCORE']['0']['#']); $sco->next = backup_todb($sub_info['#']['NEXT']['0']['#']); $sco->previous = backup_todb($sub_info['#']['PREVIOUS']['0']['#']); //The structure is equal to the db, so insert the scorm_scoes $newid = insert_record ("scorm_scoes",$sco); - - //Now check if want to restore user data and do it. - if ($restore->mods['scorm']->userinfo) { - //Restore scorm_scoes - if ($status) { - $status = scorm_scoes_tracks_restore_mods ($scorm_id,$info,$restore); - } - } //Do some output if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -146,54 +146,59 @@ return $status; } - //This function restores the scorm_scoes_track - function scorm_scoes_tracks_restore_mods($scorm_id,$info,$restore) { + //This function restores the scorm_sco_users + function scorm_sco_users_restore_mods($scorm_id,$info,$restore) { global $CFG; $status = true; - $sco_tracks = NULL; + $sco_users = NULL; //Get the sco array - if (!empty($info['MOD']['#']['SCO_TRACKS']['0']['#']['SCO_TRACK'])) - $sco_tracks = $info['MOD']['#']['SCO_TRACKS']['0']['#']['SCO_TRACK']; + if (!empty($info['MOD']['#']['SCO_USERS']['0']['#']['SCO_USER'])) + $sco_users = $info['MOD']['#']['SCO_USERS']['0']['#']['SCO_USER']; //Iterate over sco_users - for($i = 0; $i < sizeof($sco_tracks); $i++) { - $sco_track = $sco_tracks[$i]; + for($i = 0; $i < sizeof($sco_users); $i++) { + $sub_info = $sco_users[$i]; //We'll need this later!! $oldid = backup_todb($sub_info['#']['ID']['0']['#']); $oldscoid = backup_todb($sub_info['#']['SCOID']['0']['#']); $olduserid = backup_todb($sub_info['#']['USERID']['0']['#']); - //Now, build the scorm_scoes_track record structure + //Now, build the scorm_sco_users record structure $sco_user->scormid = $scorm_id; $sco_user->userid = backup_todb($sub_info['#']['USERID']['0']['#']); $sco_user->scoid = backup_todb($sub_info['#']['SCOID']['0']['#']); - $sco_user->element = backup_todb($sub_info['#']['ELEMENT']['0']['#']); - $sco_user->value = backup_todb($sub_info['#']['VALUE']['0']['#']); + $sco_user->cmi_core_lesson_location = backup_todb($sub_info['#']['CMI_CORE_LESSON_LOCATION']['0']['#']); + $sco_user->cmi_core_lesson_status = backup_todb($sub_info['#']['CMI_CORE_LESSON_STATUS']['0']['#']); + $sco_user->cmi_core_exit = backup_todb($sub_info['#']['CMI_CORE_EXIT']['0']['#']); + $sco_user->cmi_core_total_time = backup_todb($sub_info['#']['CMI_CORE_TOTAL_TIME']['0']['#']); + $sco_user->cmi_core_session_time = backup_todb($sub_info['#']['CMI_CORE_SESSION_TIME']['0']['#']); + $sco_user->cmi_core_score_raw = backup_todb($sub_info['#']['CMI_CORE_SCORE_RAW']['0']['#']); + $sco_user->cmi_suspend_data = backup_todb($sub_info['#']['CMI_SUSPEND_DATA']['0']['#']); //We have to recode the userid field - $user = backup_getid($restore->backup_unique_code,"user",$sco_track->userid); + $user = backup_getid($restore->backup_unique_code,"user",$sco_user->userid); if ($user) { - $sco_track->userid = $user->new_id; + $sco_user->userid = $user->new_id; } //We have to recode the scoid field - $sco = backup_getid($restore->backup_unique_code,"scorm_scoes",$sco_track->scoid); + $sco = backup_getid($restore->backup_unique_code,"scorm_scoes",$sco_user->scoid); if ($sco) { - $sco_track->scoid = $sco->new_id; + $sco_user->scoid = $sco->new_id; } - //The structure is equal to the db, so insert the scorm_scoes_track - $newid = insert_record ("scorm_scoes_track",$sco_track); + //The structure is equal to the db, so insert the scorm_sco_users + $newid = insert_record ("scorm_sco_users",$sco_user); //Do some output if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -205,7 +210,7 @@ //This function copies the scorm related info from backup temp dir to course moddata folder, //creating it if needed - function scorm_restore_files ($package, $restore) { + function scorm_restore_files ($packagedir, $restore) { global $CFG; @@ -236,7 +241,7 @@ //Now locate the temp dir we are restoring from if ($status) { $temp_path = $CFG->dataroot."/temp/backup/".$restore->backup_unique_code. - "/moddata/scorm/".$package->id; + "/moddata/scorm/".$packagedir; //Check it exists if (is_dir($temp_path)) { $todo = true; @@ -246,7 +251,7 @@ //If todo, we create the neccesary dirs in course moddata/scorm if ($status and $todo) { //Make scorm package directory path - $this_scorm_path = $scorm_path."/".$package->id; + $this_scorm_path = $scorm_path."/".$packagedir; $status = backup_copy_file($temp_path, $this_scorm_path); } diff --git a/mod/scorm/scormAPI.php b/mod/scorm/scormAPI.php new file mode 100755 index 00000000000..5d43cebed6b --- /dev/null +++ b/mod/scorm/scormAPI.php @@ -0,0 +1,206 @@ +<?php + require_once("../../config.php"); + require_once("lib.php"); + + optional_variable($id); // Course Module ID, or + optional_variable($a); // scorm ID + optional_variable($scoid); // sco ID + optional_variable($mode); + + if ($id) { + if (! $cm = get_record("course_modules", "id", $id)) { + error("Course Module ID was incorrect"); + } + + if (! $course = get_record("course", "id", $cm->course)) { + error("Course is misconfigured"); + } + + if (! $scorm = get_record("scorm", "id", $cm->instance)) { + error("Course module is incorrect"); + } + + } else { + if (! $scorm = get_record("scorm", "id", $a)) { + error("Course module is incorrect"); + } + if (! $course = get_record("course", "id", $scorm->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("scorm", $scorm->id, $course->id)) { + error("Course Module ID was incorrect"); + } + } + + require_login($course->id); + + if ( $scoes_user = get_records_select("scorm_sco_users","userid = ".$USER->id." AND scormid = ".$scorm->id,"scoid ASC") ) { + // + // Already user + // + if (!empty($scoid)) { + // Direct sco request + //$sco = get_record("scorm_scoes","id",$scoid); + if ($sco = get_record("scorm_scoes","id",$scoid)) { + if ($sco->launch == '') { + // Search for th first launchable sco + if ($scoes = get_records("scorm_scoes","scorm",$scorm->id,"id ASC")) { + $sco = current($scoes); + while ($sco->id < $scoid) { + $sco = next($scoes); + } + while ($sco->launch == '') { + $sco = next($scoes); + } + } + } + } + } else { + // Search for first incomplete sco + foreach ( $scoes_user as $sco_user ) { + if (($sco_user->cmi_core_lesson_status != "completed") && ($sco_user->cmi_core_lesson_status != "passed") && ($sco_user->cmi_core_lesson_status != "failed")) { + $sco = get_record("scorm_scoes","id",$sco_user->scoid); + break; + } else { + // If review mode get the first + if ($mode == "review") { + $sco = get_record("scorm_scoes","id",$sco_user->scoid); + break; + } + } + } + } + if (!isset($sco)) { // If no sco was found get the first of SCORM package + $scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>'' order by id ASC"); + $sco = each($scoes); + } + } else { + // + // A new user + // + if ($scoes = get_records("scorm_scoes","scorm",$scorm->id,"id ASC")) { + // + // Create user scoes records + // + foreach ($scoes as $sco) { + if ($sco->launch != "") { + if (!isset($first)) + $first = $sco; + $sco_user->userid = $USER->id; + $sco_user->scoid = $sco->id; + $sco_user->scormid = $scorm->id; + $element = "cmi_core_lesson_status"; + if ($sco->type == "sco") + $sco_user->$element = "not attempted"; + else if (($sco->type == "sca") || ($sco->type == "asset")) + $sco_user->$element = "completed"; + $ident = insert_record("scorm_sco_users",$sco_user); + } + } + if (isset($first)) + $sco = $first; + if (!empty($scoid)) { + if ($sco = get_record("scorm_scoes","id",$scoid)) + unset($first); + } + } + } + // + // Get first, last, prev and next scoes + // + $scoes = get_records("scorm_scoes","scorm",$scorm->id,"id ASC"); + $min = 0; + $max = 0; + $prevsco = 0; + $nextsco = 0; + foreach ($scoes as $fsco) { + if ($fsco->launch != "") { + if (!$min || ($min > $fsco->id)) + $min = $fsco->id; + if (!$max || ($max < $fsco->id)) + $max = $fsco->id; + if ((!$prevsco) || ($sco->id > $fsco->id)) { + $prevsco = $fsco->id; + } + if ((!$nextsco) && ($sco->id < $fsco->id)) { + $nextsco = $fsco->id; + } + } + } + $first = NULL; + $last = NULL; + if ($sco->id == $min) + $first = $sco; + if ($sco->id == $max) + $last = $sco; + + // Get current sco User data + $sco_user = get_record("scorm_sco_users","userid",$USER->id,"scoid",$sco->id); + + if (scorm_external_link($sco->launch)) { + $result = $sco->launch; + } else { + if ($CFG->slasharguments) { + $result = "$CFG->wwwroot/file.php/$scorm->course/moddata/scorm$scorm->datadir/$sco->launch"; + } else { + $result = "$CFG->wwwroot/file.php?file=/$scorm->course/moddata/scorm$scorm->datadir/$sco->launch"; + } + } + $navObj = "top."; + if ($scorm->popup == "") + $navObj = "top.navigation."; + + include("api1_2.php"); + +?> + +function hilightcurrent(popupmenu) { + for (i=0;i < popupmenu.options.length;i++) { + if ( popupmenu.options[i].value == <?php echo $sco->id; ?> ) + popupmenu.options[i].selected = true; + } +} + +function SCOInitialize() { +<?php + if ( $sco->previous || $first) { + print "\t".$navObj."document.navform.prev.disabled = true;\n"; + print "\t".$navObj."document.navform.prev.style.display = 'none';\n"; + } + if ( $sco->next || $last) { + print "\t".$navObj."document.navform.next.disabled = true;\n"; + print "\t".$navObj."document.navform.next.style.display = 'none';\n"; + } +?> +<?php + if ($scorm->popup == "") { + echo "\t top.main.location=\"$result\";\n"; + echo "\t hilightcurrent(".$navObj."document.navform.courseStructure);\n"; + } else { + $popuplocation = ''; + if (isset($_COOKIE["SCORMpopup"])) { + $popuplocation = $_COOKIE["SCORMpopup"]; + } + echo "\t top.main = window.open('$result','main','$scorm->popup$popuplocation');\n"; + } +?> +} + +function changeSco(direction) { + if (direction == "previous") + <?php echo $navObj ?>document.navform.scoid.value="<?php echo $prevsco; ?>"; + else + <?php echo $navObj ?>document.navform.scoid.value="<?php echo $nextsco; ?>"; + + //alert ("Prev: <?php echo $prevsco; ?>\nNext: <?php echo $nextsco; ?>\nNew SCO: "+<?php echo $navObj ?>document.navform.scoid.value); + <?php echo $navObj ?>document.navform.submit(); +} + +function closeMain() { + if (document.all) { + document.cookie = "SCORMpopup=" + escape(",top="+top.main.screenTop+",left="+top.main.screenLeft); + } else { + document.cookie = "SCORMpopup=" + escape(",top="+top.main.screenY+",left="+top.main.screenX); + } + top.main.close(); +} \ No newline at end of file diff --git a/mod/scorm/validate.php b/mod/scorm/validate.php deleted file mode 100755 index 8510b59547a..00000000000 --- a/mod/scorm/validate.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php // $Id$ - -require_once("../../config.php"); -require_once("lib.php"); - -require_login(); - -if (confirm_sesskey()) { - $reference = clean_param($_GET["reference"], PARAM_PATH); - $courseid = $_GET["id"]; - $datadir = ''; - if (isset($_GET["datadir"])) { - $datadir = $_GET["datadir"]; - } - - $scormid = 0; - $launch = 0; - $result = ''; - $errorlogs = ''; - if (isset($_GET["instance"])) { - $scormid = $_GET["instance"]; - $launch = 1; - $fp = fopen($CFG->dataroot.'/'.$courseid.'/'.$reference,"r"); - $fstat = fstat($fp); - fclose($fp); - if ($scorm = get_record("scorm","id",$scormid)) { - if ((($scorm->timemodified < $fstat["mtime"]) && ($scorm->reference == $reference)) || ($scorm->reference != $reference)) { - // This is a new package - $launch = 0; - } else { - // Old package already validated - $result = 'found'; - } - } - } - if ($launch == 0) { - // - // Package must be validated - // - - // Create a temporary directory to unzip package and validate imsmanifest - $tempdir = ''; - $scormdir = ''; - if ($scormdir = make_upload_directory("$courseid/$CFG->moddata/scorm")) { - if ($tempdir = scorm_datadir($scormdir, $datadir)) { - copy ("$CFG->dataroot/$courseid/$reference", $tempdir."/".basename($reference)); - unzip_file($tempdir."/".basename($reference), $tempdir, false); - $result = scorm_validate($tempdir."/imsmanifest.xml"); - } else { - $result = "packagedir"; - } - } else { - $result = "datadir"; - } - if (($result != "regular") && ($result != "found")) { - // Generate error log string - $result = get_string($result,'scorm'); - if ($CFG->scorm_validate == 'domxml') { - foreach ($errors as $error) { - $errorlogs .= get_string($error->type,"scorm",$error->data) . ".\n"; - } - } - if (is_dir($tempdir)) { - // Delete files and temporary directory - scorm_delete_files($tempdir); - } else { - // Delete package file - unlink ($tempdir."/".basename($reference)); - } - } else { - $datadir = substr($tempdir,strlen($scormdir)); - } - } - // - // Print validation result - // - echo $result . "\n"; - echo $launch . "\n"; - echo $datadir . "\n"; - if ($errorlogs != '') { - echo $errorlogs; - } -} else { - print_string('badrequest','scorm'); -} -?> - \ No newline at end of file diff --git a/mod/scorm/validatordomxml.php b/mod/scorm/validatordomxml.php index f9f075866f7..54c4ad21adb 100755 --- a/mod/scorm/validatordomxml.php +++ b/mod/scorm/validatordomxml.php @@ -264,8 +264,8 @@ function testNode($DomNode) $error->data->tag = "metadata"; array_push($errors, $error); //echo "WARNING, se il tag metadata non e' figlio di manifest non deve avere schema - // come figlio <br />"; - //echo "Probabilmente la versione e' antecedente alla 1.3 <br />"; + // come figlio <br>"; + //echo "Probabilmente la versione e' antecedente alla 1.3 <br>"; } if($new_t_scv < $t_scv) { @@ -273,8 +273,8 @@ function testNode($DomNode) $error->data->tag = "metadata"; array_push($errors, $error); //echo "WARNING, se il tag metadata non e' figlio di manifest, non deve avere schemaversion - // come figlio <br />"; - //echo "Probabilmente la versione e' antecedente alla 1.3 <br />"; + // come figlio <br>"; + //echo "Probabilmente la versione e' antecedente alla 1.3 <br>"; } } } @@ -376,7 +376,7 @@ function testNode($DomNode) $cont_err++; } } - //echo "<br /> SCANSIONE DI LOCATION TERMINATA, OK \n"; + //echo "<br> SCANSIONE DI LOCATION TERMINATA, OK \n"; } if($nome_figlio == "organizations") diff --git a/mod/scorm/version.php b/mod/scorm/version.php index 0ba47ae4eca..2d4e9034ec3 100755 --- a/mod/scorm/version.php +++ b/mod/scorm/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ ///////////////////////////////////////////////////////////////////////////////// /// Code fragment to define the version of scorm /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2005041500; // The (date) version of this module -$module->requires = 2005021600; // The version of Moodle that is required +$module->version = 2004071900; // The (date) version of this module +$module->requires = 2004051600; // The version of Moodle that is required $module->cron = 0; // How often should cron check this module (seconds)? ?> diff --git a/mod/scorm/view.php b/mod/scorm/view.php index eedd8e3acd0..b89c9aa631c 100755 --- a/mod/scorm/view.php +++ b/mod/scorm/view.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// This page prints a particular instance of scorm /// (Replace scorm with the name of your module) @@ -34,7 +34,7 @@ } } - require_login($course->id, false, $cm); + require_login($course->id); $strscorms = get_string("modulenameplural", "scorm"); @@ -50,30 +50,38 @@ $pagetitle = strip_tags("$course->shortname: $scorm->name"); add_to_log($course->id, "scorm", "pre-view", "view.php?id=$cm->id", "$scorm->id"); - + // + // Checking if parsed scorm manifest + // + if ($scorm->launch == 0) { + $basedir = $CFG->dataroot."/".$course->id; + $scormdir = "/moddata/scorm"; + $scorm->launch = scorm_parse($basedir,$scormdir.$scorm->datadir."/imsmanifest.xml",$scorm->id); + set_field("scorm","launch",$scorm->launch,"id",$scorm->id); + } // // Print the page header // if (!$cm->visible and !isteacher($course->id)) { print_header($pagetitle, "$course->fullname", "$navigation $scorm->name", "", "", true, - update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm)); + update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm)); notice(get_string("activityiscurrentlyhidden")); } else { - print_header($pagetitle, "$course->fullname","$navigation <a target=\"{$CFG->framename}\" href=\"view.php?id=$cm->id\">$scorm->name</a>", + print_header($pagetitle, "$course->fullname","$navigation <a target=\"{$CFG->framename}\" href=\"$ME?id=$cm->id\" title=\"$scorm->summary\">$scorm->name</a>", "", "", true, update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm)); if (isteacher($course->id)) { - if ($sco_users = get_records_select("scorm_scoes_track", "scormid='$scorm->id' GROUP BY userid")) { - echo "<div class=\"reportlink\"><a target=\"{$CFG->framename}\" href=\"report.php?id=$cm->id\">".get_string("viewallreports","scorm",count($sco_users))."</a></div>"; + if ($sco_users = get_records_select("scorm_sco_users", "scormid='$scorm->id' GROUP BY userid")) { + echo "<p align=right><a target=\"{$CFG->framename}\" href=\"report.php?id=$cm->id\">".get_string("viewallreports","scorm",count($sco_users))."</a></p>"; } else { - echo "<div class=\"reportlink\">".get_string("noreports","scorm")."</div>"; + echo "<p align=right>".get_string("noreports","scorm")."</p>"; } } // Print the main part of the page print_heading($scorm->name); - print_simple_box(format_text($scorm->summary), 'center', '70%', '', 5, 'generalbox', 'intro'); + print_simple_box(text_to_html($scorm->summary), "CENTER"); if (isguest()) { print_heading(get_string("guestsno", "scorm")); @@ -81,8 +89,8 @@ exit; } echo "<br />"; - $liststyle = "style=\"list-style-type:none;\""; - print_simple_box_start("center"); + echo "<style type=\"text/css\">.scormlist { list-style-type:none; }</style>\n"; + print_simple_box_start("CENTER"); echo "<table>\n"; echo " <tr><th>".get_string("coursestruct","scorm")."</th></tr>\n"; $organization = $scorm->launch; @@ -91,7 +99,7 @@ if (isset($_POST['organization'])) { $organization = $_POST['organization']; } - echo "<tr><td align='center'><form name='changeorg' method='post' action='view.php?id=$cm->id'>".get_string('organizations','scorm').": \n"; + echo "<tr><td align='center'><form name='changeorg' method='POST' action='view.php?id=$cm->id'>".get_string('organizations','scorm').": \n"; choose_from_menu($orgs, 'organization', "$organization", '','submit()'); echo "</form></td></tr>\n"; } @@ -104,19 +112,80 @@ $orgidentifier = $org->organization; } } - echo " <tr><td nowrap=\"nowrap\">\n"; - $incomplete = scorm_display_structure($scorm,'scormlist',$orgidentifier); - echo "</td></tr>\n"; + echo " <tr><td nowrap>\n<ul class=\"scormlist\"'>\n"; + $incomplete = false; + if ($scoes = get_records_select("scorm_scoes","scorm='$scorm->id' AND organization='$orgidentifier' order by id ASC")){ + $level=0; + $sublist=0; + $parents[$level]="/"; + foreach ($scoes as $sco) { + if ($parents[$level]!=$sco->parent) { + if ($level>0 && $parents[$level-1]==$sco->parent) { + echo " </ul></li>\n"; + $level--; + } else { + $i = $level; + $closelist = ""; + while (($i > 0) && ($parents[$level] != $sco->parent)) { + $closelist .= " </ul></li>\n"; + $i--; + } + if (($i == 0) && ($sco->parent != $orgidentifier)) { + echo " <li><ul id='".$sublist."' class=\"scormlist\"'>\n"; + $level++; + } else { + echo $closelist; + $level = $i; + } + $parents[$level]=$sco->parent; + } + } + + echo " <li>\n"; + $nextsco = next($scoes); + if (($nextsco !== false) && ($sco->parent != $nextsco->parent) && (($level==0) || (($level>0) && ($nextsco->parent == $sco->identifier)))) { + $sublist++; + echo " <img src=\"pix/minus.gif\" onClick='expandCollide(this,".$sublist.");'/>\n"; + } else { + echo " <img src=\"pix/spacer.gif\" />\n"; + } + if ($sco->launch) { + $score = ""; + if ($sco_user=get_record("scorm_sco_users","scoid",$sco->id,"userid",$USER->id)) { + if ( $sco_user->cmi_core_lesson_status == "") { + $sco_user->cmi_core_lesson_status = "not attempted"; + } + echo " <img src=\"pix/".scorm_remove_spaces($sco_user->cmi_core_lesson_status).".gif\" alt=\"".get_string(scorm_remove_spaces($sco_user->cmi_core_lesson_status),"scorm")."\" title=\"".get_string(scorm_remove_spaces($sco_user->cmi_core_lesson_status),"scorm")."\" />\n"; + if (($sco_user->cmi_core_lesson_status == "not attempted") || ($sco_user->cmi_core_lesson_status == "incomplete")) { + $incomplete = true; + } + if ($sco_user->cmi_core_score_raw > 0) { + $score = "(".get_string("score","scorm").":&nbsp;".$sco_user->cmi_core_score_raw.")"; + } + } else { + echo " <img src=\"pix/notattempted.gif\" alt=\"".get_string("notattempted","scorm")."\" />"; + $incomplete = true; + } + echo " &nbsp;<a href=\"javascript:playSCO(".$sco->id.")\">$sco->title</a> $score\n </li>\n"; + } else { + echo " &nbsp;$sco->title\n </li>\n"; + } + } + for ($i=0;$i<$level;$i++){ + echo " </ul></li>\n"; + } + } + echo "</ul></td></tr>\n"; echo "</table>\n"; print_simple_box_end(); - echo "<form name=\"theform\" method=\"post\" action=\"playscorm.php?id=$cm->id\">\n"; - echo "<table align=\"center\">\n<tr>\n<td align=\"center\">"; + echo "<form name=\"theform\" method=\"POST\" action=\"playscorm.php?id=$cm->id\">\n"; + echo "<table align=\"CENTER\">\n<tr>\n<td align=\"center\">"; print_string("mode","scorm"); echo ": <input type=\"radio\" id=\"b\" name=\"mode\" value=\"browse\" /><label for=\"b\">".get_string("browse","scorm")."</label>\n"; if ($incomplete === true) { - echo "<input type=\"radio\" id=\"n\" name=\"mode\" value=\"normal\" checked=\"checked\" /><label for=\"n\">".get_string("normal","scorm")."</label>\n"; + echo "<input type=\"radio\" id=\"n\" name=\"mode\" value=\"normal\" checked /><label for=\"n\">".get_string("normal","scorm")."</label>\n"; } else { - echo "<input type=\"radio\" id=\"r\" name=\"mode\" value=\"review\" checked=\"checked\" /><label for=\"r\">".get_string("review","scorm")."</label>\n"; + echo "<input type=\"radio\" id=\"r\" name=\"mode\" value=\"review\" checked /><label for=\"r\">".get_string("review","scorm")."</label>\n"; } echo "</td>\n</tr>\n<tr><td align=\"center\">"; echo '<input type="hidden" name="scoid" /> @@ -124,14 +193,9 @@ <input type="submit" value="'.get_string("entercourse","scorm").'" />'; echo "\n</td>\n</tr>\n</table>\n</form><br />"; ?> -<style type="text/css"> - .scormlist { - list-style-type:none; - } -</style> -<script language="javascript" type="text/javascript"> +<script language="javascript"> <!-- - function playSCO(scoid) { + function playSCO(scoid,status) { document.theform.scoid.value = scoid; document.theform.submit(); } @@ -148,7 +212,8 @@ } else { which.src = "pix/minus.gif"; eval(beg+list+mid+".display='block';"); - } + } + } --> </script> diff --git a/mod/survey/backuplib.php b/mod/survey/backuplib.php index 78423af1342..d3a61357103 100644 --- a/mod/survey/backuplib.php +++ b/mod/survey/backuplib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //survey mods diff --git a/mod/survey/db/mysql.php b/mod/survey/db/mysql.php index d5000bb7703..6ed3c66515e 100644 --- a/mod/survey/db/mysql.php +++ b/mod/survey/db/mysql.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function survey_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -177,22 +177,6 @@ function survey_upgrade($oldversion) { modify_database("", "INSERT INTO prefix_log_display VALUES ('survey', 'update', 'survey', 'name');"); } - if ($oldversion < 2004111200) { - execute_sql("ALTER TABLE {$CFG->prefix}survey DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}survey_analysis DROP INDEX survey;",false); - execute_sql("ALTER TABLE {$CFG->prefix}survey_analysis DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}survey_answers DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}survey_answers DROP INDEX survey;",false); - execute_sql("ALTER TABLE {$CFG->prefix}survey_answers DROP INDEX question;",false); - - modify_database('','ALTER TABLE prefix_survey ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_survey_analysis ADD INDEX survey (survey);'); - modify_database('','ALTER TABLE prefix_survey_analysis ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_survey_answers ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_survey_answers ADD INDEX survey (survey);'); - modify_database('','ALTER TABLE prefix_survey_answers ADD INDEX question (question);'); - } - return true; } diff --git a/mod/survey/db/mysql.sql b/mod/survey/db/mysql.sql index 92e8fd610b7..16f73eb24c1 100755 --- a/mod/survey/db/mysql.sql +++ b/mod/survey/db/mysql.sql @@ -24,8 +24,7 @@ CREATE TABLE prefix_survey ( name varchar(255) NOT NULL default '', intro text, questions varchar(255) default NULL, - PRIMARY KEY (id), - KEY `course` (`course`) + PRIMARY KEY (id) ) TYPE=MyISAM COMMENT='all surveys'; # @@ -50,9 +49,7 @@ CREATE TABLE prefix_survey_analysis ( userid int(10) unsigned NOT NULL default '0', notes text NOT NULL, PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY survey (survey), - KEY userid (userid) + UNIQUE KEY id (id) ) TYPE=MyISAM; # @@ -74,10 +71,7 @@ CREATE TABLE prefix_survey_answers ( answer1 text default NULL, answer2 text default NULL, PRIMARY KEY (id), - UNIQUE KEY id (id), - KEY userid (userid), - KEY survey (survey), - KEY question (question) + UNIQUE KEY id (id) ) TYPE=MyISAM; # diff --git a/mod/survey/db/oci8po.php b/mod/survey/db/oci8po.php index b24c215d20d..c8d3f09c613 100755 --- a/mod/survey/db/oci8po.php +++ b/mod/survey/db/oci8po.php @@ -1,4 +1,4 @@ -<?php +<?PHP function survey_upgrade($oldversion) { // This function does anything necessary to upgrade // older versions to match current functionality diff --git a/mod/survey/db/postgres7.php b/mod/survey/db/postgres7.php index 66f0eef5241..3748daa273a 100644 --- a/mod/survey/db/postgres7.php +++ b/mod/survey/db/postgres7.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function survey_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -24,26 +24,6 @@ function survey_upgrade($oldversion) { modify_database("", "INSERT INTO prefix_log_display VALUES ('survey', 'update', 'survey', 'name');"); } - if ($oldversion < 2004111200) { - execute_sql("DROP INDEX {$CFG->prefix}survey_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}survey_analysis_survey_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}survey_analysis_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}survey_answers_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}survey_answers_survey_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}survey_answers_question_idx;",false); - - modify_database('','CREATE INDEX prefix_survey_course_idx ON prefix_survey (course);'); - modify_database('','CREATE INDEX prefix_survey_analysis_survey_idx ON prefix_survey_analysis (survey);'); - modify_database('','CREATE INDEX prefix_survey_analysis_userid_idx ON prefix_survey_analysis (userid);'); - modify_database('','CREATE INDEX prefix_survey_answers_userid_idx ON prefix_survey_answers (userid);'); - modify_database('','CREATE INDEX prefix_survey_answers_survey_idx ON prefix_survey_answers (survey);'); - modify_database('','CREATE INDEX prefix_survey_answers_question_idx ON prefix_survey_answers (question);'); - } - - if ($oldversion < 2005031600) { - execute_sql('SELECT setval(\''.$CFG->prefix.'survey_id_seq\', (select max(id) from '.$CFG->prefix.'survey))'); - execute_sql('SELECT setval(\''.$CFG->prefix.'survey_questions_id_seq\', (select max(id) from '.$CFG->prefix.'survey_questions))'); - } return true; } diff --git a/mod/survey/db/postgres7.sql b/mod/survey/db/postgres7.sql index 550eba862d8..e86549ce8d3 100755 --- a/mod/survey/db/postgres7.sql +++ b/mod/survey/db/postgres7.sql @@ -26,8 +26,6 @@ CREATE TABLE prefix_survey ( questions varchar(255) default NULL ); -CREATE INDEX prefix_survey_course_idx ON prefix_survey (course); - # # Dumping data for table survey # @@ -39,12 +37,6 @@ INSERT INTO prefix_survey (id, course, template, days, timecreated, timemodified INSERT INTO prefix_survey (id, course, template, days, timecreated, timemodified, name, intro, questions) VALUES (5, 0, 0, 0, 985017600, 985017600, 'ciqname', 'ciqintro', '69,70,71,72,73'); -# Reset the sequence. doing it this way rather than simply taking out -# id from the preceeding sql to avoid missing fks. -SELECT setval('prefix_survey_id_seq', (select max(id) from prefix_survey)); - - - # # Table structure for table survey_analysis @@ -57,9 +49,6 @@ CREATE TABLE prefix_survey_analysis ( notes text NOT NULL default '' ); -CREATE INDEX prefix_survey_analysis_survey_idx ON prefix_survey_analysis (survey); -CREATE INDEX prefix_survey_analysis_userid_idx ON prefix_survey_analysis (userid); - # # Dumping data for table survey_analysis # @@ -80,10 +69,6 @@ CREATE TABLE prefix_survey_answers ( answer2 text default NULL ); -CREATE INDEX prefix_survey_answers_userid_idx ON prefix_survey_answers (userid); -CREATE INDEX prefix_survey_answers_survey_idx ON prefix_survey_answers (survey); -CREATE INDEX prefix_survey_answers_question_idx ON prefix_survey_answers (question); - # # Dumping data for table survey_answers # @@ -183,12 +168,6 @@ INSERT INTO prefix_survey_questions (id, text, shorttext, multi, intro, type, op INSERT INTO prefix_survey_questions (id, text, shorttext, multi, intro, type, options) VALUES (72, 'ciq4', 'ciq4short', '', '', 0, ''); INSERT INTO prefix_survey_questions (id, text, shorttext, multi, intro, type, options) VALUES (73, 'ciq5', 'ciq5short', '', '', 0, ''); -# Reset the sequence. doing it this way rather than simply taking out -# id from the preceeding sql to avoid missing fks. -SELECT setval('prefix_survey_questions_id_seq', (select max(id) from prefix_survey_questions)); - - - # # Dumping data for table log_display # diff --git a/mod/survey/details.php b/mod/survey/details.php index a36f0cc53af..31846cf2afd 100644 --- a/mod/survey/details.php +++ b/mod/survey/details.php @@ -1,14 +1,14 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); - if ($form = data_submitted($destination)) { + if ($form = data_submitted($destination)) { if (! $course = get_record("course", "id", $form->course)) { error("This course doesn't exist"); } - require_login($course->id, false); + require_login($course->id); if (!isteacher($course->id)) { error("You can't modify this course!"); @@ -25,16 +25,16 @@ error(get_string("filloutallfields"), $_SERVER["HTTP_REFERER"]); } - print_simple_box_start('center'); + print_simple_box_start("center", "", "$THEME->cellheading"); ?> - <form name="form" method="post" action="<?php p($form->destination)?>"> - <table cellpadding="5" align="center"> - <tr><td align="right" nowrap="nowrap"><b><?php print_string("name") ?>:</b></td> - <td><?php p($form->name) ?></a></td></tr> + <form name=form method=post action="<?php p($form->destination)?>"> + <table cellpadding=5 align=center> + <tr><td align=right nowrap><p><b><?php print_string("name") ?>:</b></p></td> + <td><p><?php p($form->name) ?></p></a></td></tr> - <tr valign="top"> - <td align="right" nowrap="nowrap"> - <b><?php print_string("introtext", "survey") ?>:</b><br /> + <tr valign=top> + <td align=right nowrap> + <p><b><?php print_string("introtext", "survey") ?>:</b></p><br> <font size="1"> <?php helpbutton("writing", get_string("helpwriting"), "moodle", true, true) ?> <br /> <?php helpbutton("text", get_string("helptext"), "moodle", true, true) ?> <br /> @@ -42,7 +42,7 @@ </font> </td> <td> - <textarea name="intro" rows="20" cols="50" wrap="virtual"><?php + <textarea name="intro" rows=20 cols=50 wrap="virtual"><?php if ($form->intro) { p($form->intro); } else { @@ -54,19 +54,18 @@ </td> </tr> </table> - <input type="hidden" name="name" value="<?php p($form->name) ?>" /> - <input type="hidden" name="template" value="<?php p($form->template) ?>" /> + <input type="hidden" name=name value="<?php p($form->name) ?>"> + <input type="hidden" name=template value="<?php p($form->template) ?>"> - <input type="hidden" name="course" value="<?php p($form->course) ?>" /> - <input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> - <input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> - <input type="hidden" name="section" value="<?php p($form->section) ?>" /> - <input type="hidden" name="module" value="<?php p($form->module) ?>" /> - <input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> - <input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> - <input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> + <input type="hidden" name=course value="<?php p($form->course) ?>"> + <input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> + <input type="hidden" name=section value="<?php p($form->section) ?>"> + <input type="hidden" name=module value="<?php p($form->module) ?>"> + <input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> + <input type="hidden" name=instance value="<?php p($form->instance) ?>"> + <input type="hidden" name=mode value="<?php p($form->mode) ?>"> <center> - <input type="submit" value="<?php print_string("savechanges") ?>" /> + <input type="submit" value="<?php print_string("savechanges") ?>"> </center> </form> <?php diff --git a/mod/survey/download.php b/mod/survey/download.php index 5b16acbfa7f..a434f290d1f 100644 --- a/mod/survey/download.php +++ b/mod/survey/download.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require ("../../config.php"); @@ -16,7 +16,7 @@ error("Course is misconfigured"); } - require_login($course->id, false); + require_login($course->id); if (!isteacher($course->id)) { error("Sorry, only teachers can see this."); @@ -26,7 +26,7 @@ error("Survey ID was incorrect"); } - add_to_log($course->id, "survey", "download", "download.php?id=$cm->id&amp;type=$type", "$survey->id", $cm->id); + add_to_log($course->id, "survey", "download", "download.php?id=$cm->id&type=$type", "$survey->id", $cm->id); /// Check to see if groups are being used in this survey @@ -46,7 +46,7 @@ foreach ($order as $key => $qid) { // Do we have virtual scales? $question = $questions[$qid]; - if ($question->type < 0) { + if ($question->type < 0) { $virtualscales = true; break; } @@ -65,7 +65,7 @@ } else { $addlist = $qid; } - + if ($virtualscales && ($question->type < 0)) { // only use them $fullorderlist .= $addlist; @@ -103,7 +103,7 @@ if (! $aaa = get_records("survey_answers", "survey", "$survey->id", "time ASC")) { error("There are no answers for this survey yet."); } - + foreach ($aaa as $a) { if (!$group or isset($users[$a->userid])) { if (!$results["$a->userid"]) { // init new array @@ -125,7 +125,7 @@ require_once("$CFG->libdir/excel/Workbook.php"); header("Content-type: application/vnd.ms-excel"); - $downloadfilename = clean_filename("$course->shortname ".strip_tags(format_string($survey->name,true))); + $downloadfilename = clean_filename("$course->shortname $survey->name"); header("Content-Disposition: attachment; filename=$downloadfilename.xls"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0,pre-check=0"); @@ -133,7 +133,7 @@ $workbook = new Workbook("-"); // Creating the first worksheet - $myxls =& $workbook->add_worksheet(substr(strip_tags(format_string($survey->name,true)), 0, 31)); + $myxls =& $workbook->add_worksheet(substr($survey->name, 0, 31)); $header = array("surveyid","surveyname","userid","firstname","lastname","email","idnumber","time", "notes"); $col=0; @@ -166,7 +166,7 @@ $notes = "No notes made"; } $myxls->write_string($row,$col++,$survey->id); - $myxls->write_string($row,$col++,strip_tags(format_text($survey->name,true))); + $myxls->write_string($row,$col++,$survey->name); $myxls->write_string($row,$col++,$user); $myxls->write_string($row,$col++,$u->firstname); $myxls->write_string($row,$col++,$u->lastname); @@ -175,7 +175,7 @@ $myxls->write_string($row,$col++, userdate($results["$user"]["time"], "%d-%b-%Y %I:%M:%S %p") ); // $myxls->write_number($row,$col++,$results["$user"]["time"],$date); $myxls->write_string($row,$col++,$notes); - + foreach ($order as $key => $qid) { $question = $questions["$qid"]; if ($question->type == "0" || $question->type == "1" || $question->type == "3" || $question->type == "-1") { @@ -195,9 +195,9 @@ // Print header to force download - header("Content-Type: application/download\n"); + header("Content-Type: application/download\n"); - $downloadfilename = clean_filename("$course->shortname ".strip_tags(format_string($survey->name,true))); + $downloadfilename = clean_filename("$course->shortname $survey->name"); header("Content-Disposition: attachment; filename=\"$downloadfilename.txt\""); // Print names of all the fields @@ -221,7 +221,7 @@ error("Error finding student # $user"); } echo $survey->id."\t"; - echo strip_tags(format_string($survey->name,true))."\t"; + echo $survey->name."\t"; echo $user."\t"; echo $u->firstname."\t"; echo $u->lastname."\t"; diff --git a/mod/survey/graph.php b/mod/survey/graph.php index 73058a446a1..7c371677266 100644 --- a/mod/survey/graph.php +++ b/mod/survey/graph.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("$CFG->libdir/graphlib.php"); @@ -17,7 +17,7 @@ error("Course is misconfigured"); } - require_login($course->id, false, $cm); + require_login($course->id); $groupmode = groupmode($course, $cm); // Groups are being used @@ -49,8 +49,6 @@ $strpreferredclass = get_string("preferredclass", "survey"); $strpreferredstudent = get_string("preferredstudent", "survey", $course->student); - $virtualscales = false; //set default value for case clauses - switch ($type) { case "question.png": @@ -58,7 +56,7 @@ $question = get_record("survey_questions", "id", $qid); $question->text = get_string($question->text, "survey"); $question->options = get_string($question->options, "survey"); - + $options = explode(",",$question->options); while (list($key,) = each($options)) { @@ -79,7 +77,7 @@ } } - + $maxbuckets1 = max($buckets1); $maxbuckets2 = max($buckets2); $maxbuckets = ($maxbuckets1 > $maxbuckets2) ? $maxbuckets1 : $maxbuckets2; @@ -105,11 +103,11 @@ } else { $graph->y_order = array('answers2'); } - + $graph->parameter['y_axis_gridlines']= $maxbuckets + 1; $graph->parameter['y_resolution_left']= 1; $graph->parameter['y_decimal_left'] = 0; - $graph->parameter['x_axis_angle'] = 20; + $graph->parameter['x_axis_angle'] = 0; $graph->parameter['shadow'] = 'none'; $graph->draw_stack(); @@ -194,7 +192,7 @@ $buckets2[$i] = $buckets2[$i] - 1; } - + $maxbuckets1 = max($buckets1); $maxbuckets2 = max($buckets2); @@ -205,16 +203,16 @@ $graph->x_data = $names; $graph->y_data['answers1'] = $buckets1; - $graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square', + $graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 4, 'legend' => $stractual); $graph->y_data['answers2'] = $buckets2; - $graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square', + $graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 4, 'legend' => $strpreferred); $graph->y_data['stdev1'] = $stdev1; - $graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill', + $graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill', 'shadow_offset' => '4', 'legend' => 'none', 'bar_size' => 0.3); $graph->y_data['stdev2'] = $stdev2; - $graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill', + $graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill', 'shadow_offset' => '4', 'legend' => 'none', 'bar_size' => 0.2); $graph->offset_relation['stdev1'] = 'answers1'; $graph->offset_relation['stdev2'] = 'answers2'; @@ -234,24 +232,23 @@ } else { $graph->y_order = array('stdev2', 'answers2'); } - + $graph->parameter['y_max_left']= count($options) - 1; $graph->parameter['y_axis_gridlines']= count($options); $graph->parameter['y_resolution_left']= 1; $graph->parameter['y_decimal_left']= 1; - $graph->parameter['x_axis_angle'] = 20; + $graph->parameter['x_axis_angle'] = 0; $graph->draw(); break; - + case "overall.png": $qqq = get_records_list("survey_questions", "id", $survey->questions); - foreach ($qqq as $key => $qq) { if ($qq->multi) { $qqq[$key]->text = get_string($qq->text, "survey"); @@ -333,7 +330,7 @@ $buckets1[$i] = $buckets1[$i] - 1; // Hack because there should not be ANY 0 values in the data. $buckets2[$i] = $buckets2[$i] - 1; - + } $maxbuckets1 = max($buckets1); @@ -341,22 +338,22 @@ $graph = new graph($SURVEY_GWIDTH,$SURVEY_GHEIGHT); - $graph->parameter['title'] = strip_tags(format_string($survey->name,true)); + $graph->parameter['title'] = "$survey->name"; $graph->x_data = $names; $graph->y_data['answers1'] = $buckets1; - $graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square', + $graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 4, 'legend' => $stractual); $graph->y_data['answers2'] = $buckets2; - $graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square', + $graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 4, 'legend' => $strpreferred); $graph->y_data['stdev1'] = $stdev1; - $graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill', + $graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill', 'shadow_offset' => '4', 'legend' => 'none', 'bar_size' => 0.3); $graph->y_data['stdev2'] = $stdev2; - $graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill', + $graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill', 'shadow_offset' => '4', 'legend' => 'none', 'bar_size' => 0.2); $graph->offset_relation['stdev1'] = 'answers1'; $graph->offset_relation['stdev2'] = 'answers2'; @@ -374,13 +371,12 @@ } else { $graph->y_order = array('stdev2', 'answers2'); } - + $graph->parameter['y_max_left']= $numoptions - 1; $graph->parameter['y_axis_gridlines']= $numoptions; $graph->parameter['y_resolution_left']= 1; $graph->parameter['y_decimal_left']= 1; $graph->parameter['x_axis_angle'] = 0; - $graph->parameter['x_inner_padding'] = 6; $graph->draw(); @@ -502,27 +498,27 @@ $graph = new graph($SURVEY_GWIDTH,$SURVEY_GHEIGHT); - $graph->parameter['title'] = strip_tags(format_string($survey->name,true)); + $graph->parameter['title'] = "$survey->name"; $graph->x_data = $names; $graph->y_data['answers1'] = $buckets1; - $graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square', + $graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 0.1, 'legend' => $stractualclass); $graph->y_data['answers2'] = $buckets2; - $graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square', + $graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 0.1, 'legend' => $strpreferredclass); $graph->y_data['studanswers1'] = $studbuckets1; - $graph->y_format['studanswers1'] = array('colour' => 'blue', 'line' => 'line', 'point' => 'square', + $graph->y_format['studanswers1'] = array('colour' => 'blue', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 4, 'legend' => $stractualstudent); $graph->y_data['studanswers2'] = $studbuckets2; - $graph->y_format['studanswers2'] = array('colour' => 'orange', 'line' => 'line', 'point' => 'square', + $graph->y_format['studanswers2'] = array('colour' => 'orange', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 4, 'legend' => $strpreferredstudent); $graph->y_data['stdev1'] = $stdev1; - $graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill', + $graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill', 'shadow_offset' => 0.1, 'legend' => 'none', 'bar_size' => 0.3); $graph->y_data['stdev2'] = $stdev2; - $graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill', + $graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill', 'shadow_offset' => 0.1, 'legend' => 'none', 'bar_size' => 0.2); $graph->offset_relation['stdev1'] = 'answers1'; $graph->offset_relation['stdev2'] = 'answers2'; @@ -542,12 +538,12 @@ } else { $graph->y_order = array('stdev2', 'answers2', 'studanswers2'); } - + $graph->parameter['y_max_left']= $numoptions - 1; $graph->parameter['y_axis_gridlines']= $numoptions; $graph->parameter['y_resolution_left']= 1; $graph->parameter['y_decimal_left']= 1; - $graph->parameter['x_axis_angle'] = 20; + $graph->parameter['x_axis_angle'] = 0; $graph->draw(); break; @@ -650,7 +646,7 @@ $studbuckets2[$i] = $studbuckets2[$i] - 1; } - + $maxbuckets1 = max($buckets1); $maxbuckets2 = max($buckets2); @@ -661,22 +657,22 @@ $graph->x_data = $names; $graph->y_data['answers1'] = $buckets1; - $graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square', + $graph->y_format['answers1'] = array('colour' => 'ltblue', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 0.1, 'legend' => $stractualclass); $graph->y_data['answers2'] = $buckets2; - $graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square', + $graph->y_format['answers2'] = array('colour' => 'ltorange', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 0.1, 'legend' => $strpreferredclass); $graph->y_data['studanswers1'] = $studbuckets1; - $graph->y_format['studanswers1'] = array('colour' => 'blue', 'line' => 'line', 'point' => 'square', + $graph->y_format['studanswers1'] = array('colour' => 'blue', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 4, 'legend' => $stractualstudent); $graph->y_data['studanswers2'] = $studbuckets2; - $graph->y_format['studanswers2'] = array('colour' => 'orange', 'line' => 'line', 'point' => 'square', + $graph->y_format['studanswers2'] = array('colour' => 'orange', 'line' => 'line', 'point' => 'square', 'shadow_offset' => 4, 'legend' => $strpreferredstudent); $graph->y_data['stdev1'] = $stdev1; - $graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill', + $graph->y_format['stdev1'] = array('colour' => 'ltltblue', 'bar' => 'fill', 'shadow_offset' => 0.1, 'legend' => 'none', 'bar_size' => 0.3); $graph->y_data['stdev2'] = $stdev2; - $graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill', + $graph->y_format['stdev2'] = array('colour' => 'ltltorange', 'bar' => 'fill', 'shadow_offset' => 0.1, 'legend' => 'none', 'bar_size' => 0.2); $graph->offset_relation['stdev1'] = 'answers1'; $graph->offset_relation['stdev2'] = 'answers2'; @@ -696,12 +692,12 @@ } else { $graph->y_order = array('stdev2', 'answers2', 'studanswers2'); } - + $graph->parameter['y_max_left']= count($options)-1; $graph->parameter['y_axis_gridlines']= count($options); $graph->parameter['y_resolution_left']= 1; $graph->parameter['y_decimal_left']= 1; - $graph->parameter['x_axis_angle'] = 20; + $graph->parameter['x_axis_angle'] = 0; $graph->draw(); @@ -713,5 +709,5 @@ exit; - + ?> diff --git a/mod/survey/index.php b/mod/survey/index.php index dbdff21a538..cf5d76cd41d 100644 --- a/mod/survey/index.php +++ b/mod/survey/index.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); @@ -60,20 +60,20 @@ //Calculate the href if (!$survey->visible) { //Show dimmed if the mod is hidden - $tt_href = "<a class=\"dimmed\" href=\"view.php?id=$survey->coursemodule\">".format_string($survey->name,true)."</a>"; + $tt_href = "<A class=\"dimmed\" HREF=\"view.php?id=$survey->coursemodule\">$survey->name</A>"; } else { //Show normal if the mod is visible - $tt_href = "<a href=\"view.php?id=$survey->coursemodule\">".format_string($survey->name,true)."</a>"; + $tt_href = "<A HREF=\"view.php?id=$survey->coursemodule\">$survey->name</A>"; } if ($course->format == "weeks" or $course->format == "topics") { - $table->data[] = array ($printsection, $tt_href, "<a href=\"view.php?id=$survey->coursemodule\">$ss</a>"); + $table->data[] = array ($printsection, $tt_href, "<A HREF=\"view.php?id=$survey->coursemodule\">$ss</A>"); } else { - $table->data[] = array ($tt_href, "<a href=\"view.php?id=$survey->coursemodule\">$ss</a>"); + $table->data[] = array ($tt_href, "<A HREF=\"view.php?id=$survey->coursemodule\">$ss</A>"); } } - echo "<br />"; + echo "<BR>"; print_table($table); print_footer($course); diff --git a/mod/survey/lib.php b/mod/survey/lib.php index e56cc59c9b8..ee96418a703 100644 --- a/mod/survey/lib.php +++ b/mod/survey/lib.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ // Graph size $SURVEY_GHEIGHT = 500; @@ -124,7 +124,7 @@ function survey_user_complete($course, $user, $mod, $survey) { } else { - survey_print_graph("id=$mod->id&amp;sid=$user->id&amp;type=student.png"); + survey_print_graph("id=$mod->id&sid=$user->id&type=student.png"); } } else { @@ -138,10 +138,10 @@ function survey_print_recent_activity($course, $isteacher, $timestart) { $content = false; $surveys = NULL; - if (!$logs = get_records_select('log', 'time > \''.$timestart.'\' AND '. - 'course = \''.$course->id.'\' AND '. - 'module = \'survey\' AND '. - 'action = \'submit\' ', 'time ASC')) { + if (!$logs = get_records_select("log", "time > '$timestart' AND ". + "course = '$course->id' AND ". + "module = 'survey' AND ". + "action = 'submit' ", "time ASC")) { return false; } @@ -156,16 +156,20 @@ function survey_print_recent_activity($course, $isteacher, $timestart) { if ($modvisible) { $surveys[$log->id] = survey_log_info($log); $surveys[$log->id]->time = $log->time; - $surveys[$log->id]->url = str_replace('&', '&amp;', $log->url); + $surveys[$log->id]->url = $log->url; } } if ($surveys) { $content = true; - print_headline(get_string('newsurveyresponses', 'survey').':'); + $strftimerecent = get_string("strftimerecent"); + print_headline(get_string("newsurveyresponses", "survey").":"); foreach ($surveys as $survey) { - print_recent_activity_note($survey->time, $survey, $isteacher, $survey->name, - $CFG->wwwroot.'/mod/survey/'.$survey->url); + $date = userdate($survey->time, $strftimerecent); + echo "<p><font size=1>$date - ".fullname($survey)."<br />"; + echo "\"<a href=\"$CFG->wwwroot/mod/survey/$survey->url\">"; + echo "$survey->name"; + echo "</a>\"</font></p>"; } } @@ -179,13 +183,13 @@ function survey_get_participants($surveyid) { global $CFG; //Get students from survey_analysis - $st_analysis = get_records_sql("SELECT DISTINCT u.id, u.id + $st_analysis = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}survey_analysis a WHERE a.survey = '$surveyid' and u.id = a.userid"); //Get students from survey_answers - $st_answers = get_records_sql("SELECT DISTINCT u.id, u.id + $st_answers = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}survey_answers a WHERE a.survey = '$surveyid' and @@ -230,7 +234,7 @@ function survey_get_responses($surveyid, $groupid) { {$CFG->prefix}user AS u $groupsdb WHERE a.survey = $surveyid AND a.userid = u.id $groupsql - GROUP BY u.id, u.firstname, u.lastname, u.picture + GROUP BY u.id, u.firstname, u.lastname ORDER BY time ASC"); } @@ -308,6 +312,7 @@ function survey_count_responses($surveyid, $groupid) { function survey_print_all_responses($cmid, $results, $courseid) { + global $THEME; $table->head = array ("", get_string("name"), get_string("time")); $table->align = array ("", "left", "left"); @@ -315,7 +320,7 @@ function survey_print_all_responses($cmid, $results, $courseid) { foreach ($results as $a) { $table->data[] = array(print_user_picture($a->id, $courseid, $a->picture, false, true, false), - "<a href=\"report.php?action=student&amp;student=$a->id&amp;id=$cmid\">".fullname($a)."</a>", + "<a href=\"report.php?action=student&student=$a->id&id=$cmid\">".fullname($a)."</a>", userdate($a->time)); } @@ -348,15 +353,15 @@ function survey_shorten_name ($name, $numwords) { function survey_print_multi($question) { - GLOBAL $db, $qnum, $checklist; + GLOBAL $db, $qnum, $checklist, $THEME; $stripreferthat = get_string("ipreferthat", "survey"); $strifoundthat = get_string("ifoundthat", "survey"); - echo "<br />\n"; - echo "<font size=\"4\"><b>$question->text</b></font><br />"; + echo "<P>&nbsp</P>\n"; + echo "<P><FONT SIZE=4><B>$question->text</B></FONT></P>"; - echo "<table align=\"center\" width=\"90%\" cellpadding=\"4\" cellspacing=\"1\" border=\"0\">"; + echo "<TABLE ALIGN=CENTER WIDTH=90% CELLPADDING=4 CELLSPACING=1 BORDER=0>"; $options = explode( ",", $question->options); $numoptions = count($options); @@ -369,58 +374,58 @@ function survey_print_multi($question) { } if ($oneanswer) { - echo "<tr><td colspan=\"2\">$question->intro</td>"; + echo "<TR WIDTH=100% ><TD COLSPAN=2><P>$question->intro</P></TD>"; } else { - echo "<tr><td colspan=\"3\">$question->intro</td>"; + echo "<TR WIDTH=100% ><TD COLSPAN=3><P>$question->intro</P></TD>"; } while (list ($key, $val) = each ($options)) { - echo "<td width=\"10%\" align=\"center\"><font size=\"1\">$val</font></td>\n"; + echo "<TD width=10% ALIGN=CENTER><FONT SIZE=1><P>$val</P></FONT></TD>\n"; } - echo "<td align=\"center\">&nbsp;</td></tr>\n"; + echo "<TD ALIGN=CENTER BGCOLOR=\"$THEME->body\">&nbsp</TD></TR>\n"; $subquestions = get_records_list("survey_questions", "id", $question->multi); foreach ($subquestions as $q) { $qnum++; - $rowclass = survey_question_rowclass($qnum); + $bgcolor = survey_question_color($qnum); if ($q->text) { $q->text = get_string($q->text, "survey"); } - echo "<tr class=\"$rowclass\">"; + echo "<TR BGCOLOR=$bgcolor>"; if ($oneanswer) { - echo "<td width=\"10\" valign=\"top\"><b>$qnum</b></td>"; - echo "<td valign=\"top\">$q->text</td>"; + echo "<TD WIDTH=10 VALIGN=top><P><B>$qnum</B></P></TD>"; + echo "<TD VALIGN=top><P>$q->text</P></TD>"; for ($i=1;$i<=$numoptions;$i++) { - echo "<td width=\"10%\" align=\"center\"><input type=\"radio\" name=\"q$P$q->id\" value=\"$i\" alt=\"$i\" /></td>"; + echo "<TD WIDTH=10% ALIGN=CENTER><INPUT TYPE=radio NAME=q$P$q->id VALUE=$i></TD>"; } - echo "<td bgcolor=\"white\"><input type=\"radio\" name=\"q$P$q->id\" value=\"0\" checked=\"checked\" alt=\"0\" /></td>"; + echo "<TD BGCOLOR=white><INPUT TYPE=radio NAME=q$P$q->id VALUE=0 checked></TD>"; $checklist["q$P$q->id"] = $numoptions; } else { - echo "<td width=\"10\" valign=\"middle\" rowspan=\"2\"><b>$qnum</b></td>"; - echo "<td width=\"10%\" nowrap=\"nowrap\"><font size=\"1\">$stripreferthat&nbsp;</font></td>"; - echo "<td width=\"40%\" valign=\"middle\" rowspan=\"2\">$q->text</td>"; + echo "<TD WIDTH=10 VALIGN=middle rowspan=2><P><B>$qnum</B></P></TD>"; + echo "<TD WIDTH=10% NOWRAP><P><FONT SIZE=1>$stripreferthat&nbsp;</FONT></P></TD>"; + echo "<TD WIDTH=40% VALIGN=middle rowspan=2><P>$q->text</P></TD>"; for ($i=1;$i<=$numoptions;$i++) { - echo "<td width=\"10%\" align=\"center\"><input type=\"radio\" name=\"qP$q->id\" value=\"$i\" alt=\"$i\"/></td>"; + echo "<TD WIDTH=10% ALIGN=CENTER><INPUT TYPE=radio NAME=qP$q->id VALUE=$i></TD>"; } - echo "<td><input type=\"radio\" name=\"qP$q->id\" value=\"0\" checked=\"checked\" alt=\"0\" /></td>"; - echo "</tr>"; + echo "<TD BGCOLOR=\"$THEME->body\"><INPUT TYPE=radio NAME=qP$q->id VALUE=0 checked></TD>"; + echo "</TR>"; - echo "<tr class=\"$rowclass\">"; - echo "<td width=\"10%\" nowrap=\"nowrap\"><font size=\"1\">$strifoundthat&nbsp;</font></td>"; + echo "<TR BGCOLOR=$bgcolor>"; + echo "<TD WIDTH=10% NOWRAP><P><FONT SIZE=1>$strifoundthat&nbsp;</P></TD>"; for ($i=1;$i<=$numoptions;$i++) { - echo "<td width=\"10%\" align=\"center\"><input type=\"radio\" name=\"q$q->id\" value=\"$i\" alt=\"$i\" /></td>"; + echo "<TD WIDTH=10% ALIGN=CENTER><INPUT TYPE=radio NAME=q$q->id VALUE=$i></TD>"; } - echo "<td width=\"5%\"><input type=\"radio\" name=\"q$q->id\" value=\"0\" checked=\"checked\" alt=\"0\" /></td>"; + echo "<TD WIDTH=5% BGCOLOR=\"$THEME->body\"><INPUT TYPE=radio NAME=q$q->id VALUE=0 checked></TD>"; $checklist["qP$q->id"] = $numoptions; $checklist["q$q->id"] = $numoptions; } - echo "</tr>\n"; + echo "</TR>\n"; } - echo "</table>"; + echo "</TABLE>"; } @@ -428,47 +433,49 @@ function survey_print_multi($question) { function survey_print_single($question) { GLOBAL $db, $qnum; - $rowclass = survey_question_rowclass(0); + $bgcolor = survey_question_color(0); $qnum++; - echo "<br />\n"; - echo "<table align=\"center\" width=\"90%\" cellpadding=\"4\" cellspacing=\"0\">\n"; - echo "<tr class=\"$rowclass\">"; - echo "<td valign=\"top\"><b>$qnum</b></td>"; - echo "<td width=\"50%\" valign=\"top\">$question->text</td>\n"; - echo "<td width=\"50%\" valign=\"top\"><font size=\"+1\">\n"; + echo "<P>&nbsp</P>\n"; + echo "<TABLE ALIGN=CENTER WIDTH=90% CELLPADDING=4 CELLSPACING=0>\n"; + echo "<TR BGCOLOR=$bgcolor>"; + echo "<TD VALIGN=top><B>$qnum</B></TD>"; + echo "<TD WIDTH=50% VALIGN=top><P>$question->text</P></TD>\n"; + echo "<TD WIDTH=50% VALIGN=top><P><FONT SIZE=+1>\n"; if ($question->type == 0) { // Plain text field - echo "<textarea rows=\"3\" cols=\"30\" name=\"$question->id\">$question->options</textarea>"; + echo "<TEXTAREA ROWS=3 COLS=30 WRAP=virtual NAME=\"$question->id\">$question->options</TEXTAREA>"; } else if ($question->type > 0) { // Choose one of a number $strchoose = get_string("choose"); - echo "<select name=\"$question->id\">"; - echo "<option value=\"0\" selected=\"selected\">$strchoose...</option>"; + echo "<SELECT NAME=$question->id>"; + echo "<OPTION VALUE=0 SELECTED>$strchoose...</OPTION>"; $options = explode( ",", $question->options); foreach ($options as $key => $val) { $key++; - echo "<option value=\"$key\">$val</option>"; + echo "<OPTION VALUE=\"$key\">$val</OPTION>"; } - echo "</select>"; + echo "</SELECT>"; } else if ($question->type < 0) { // Choose several of a number $options = explode( ",", $question->options); notify("This question type not supported yet"); } - echo "</font></td></tr></table>"; + echo "</FONT></TD></TR></TABLE>"; } -function survey_question_rowclass($qnum) { +function survey_question_color($qnum) { + global $THEME; if ($qnum) { - return $qnum % 2 ? 'r0' : 'r1'; + return $qnum % 2 ? $THEME->cellcontent : $THEME->cellcontent2; + //return $qnum % 2 ? "#CCFFCC" : "#CCFFFF"; } else { - return 'r0'; + return $THEME->cellcontent; } } @@ -480,7 +487,7 @@ function survey_print_graph($url) { } else { echo "<img height=\"$SURVEY_GHEIGHT\" width=\"$SURVEY_GWIDTH\" border=\"1\"". - " src=\"$CFG->wwwroot/mod/survey/graph.php?$url\" alt=\"\" />"; + " src=\"$CFG->wwwroot/mod/survey/graph.php?$url\">"; } } diff --git a/mod/survey/mod.html b/mod/survey/mod.html index 2fc9128a6bc..06e8e9143da 100644 --- a/mod/survey/mod.html +++ b/mod/survey/mod.html @@ -12,15 +12,15 @@ ?> <form name="form" method="post" action="../mod/survey/details.php"> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("surveyname", "survey") ?>:</b></td> +<table cellpadding=5> +<tr valign=top> + <td align=right><P><B><?php print_string("surveyname", "survey") ?>:</B></P></TD> <td> - <input type="text" name="name" size="30" value="<?php p($form->name) ?>" alt="<?php print_string("surveyname", "survey") ?>" /> + <input type="text" name="name" size=30 value="<?php p($form->name) ?>"> </td> </tr> <tr> - <td align="right"><b><?php print_string("surveytype", "survey") ?>:</b></td> + <td align=right><P><B><?php print_string("surveytype", "survey") ?>:</B></P></TD> <td> <?php if ($options = get_records_menu("survey", "template", 0, "name", "id, name")) { @@ -35,21 +35,19 @@ ?> </td> </tr> -<?php print_standard_coursemodule_settings($form); ?> </table> -<center> -<input type="hidden" name="intro" value="<?php p($form->intro) ?>" /> -<input type="hidden" name="destination" value="<?php echo "$CFG->wwwroot/course/mod.php" ?>" /> +<CENTER> +<input type="hidden" name=intro value="<?php p($form->intro) ?>"> +<input type="hidden" name=destination value="<?php echo "$CFG->wwwroot/course/mod.php" ?>"> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -<input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> -</center> -</form> +<input type="hidden" name=course value="<?php p($form->course) ?>"> +<input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name=section value="<?php p($form->section) ?>"> +<input type="hidden" name=module value="<?php p($form->module) ?>"> +<input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<input type="hidden" name=instance value="<?php p($form->instance) ?>"> +<input type="hidden" name=mode value="<?php p($form->mode) ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> +<input type="submit" name=cancel value="<?php print_string("cancel") ?>"> +</CENTER> +</FORM> diff --git a/mod/survey/report.php b/mod/survey/report.php index 73c72201028..fbdf83dd88f 100644 --- a/mod/survey/report.php +++ b/mod/survey/report.php @@ -1,10 +1,10 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); // Check that all the parameters have been provided. - + require_variable($id); // Course Module ID optional_variable($action, ""); // What to look at optional_variable($qid, "0"); // Question id @@ -17,7 +17,7 @@ error("Course is misconfigured"); } - require_login($course->id, false); + require_login($course->id); if (!isteacher($course->id)) { error("Sorry, only teachers can see this."); @@ -53,21 +53,21 @@ if ($course->category) { $navigation = "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> -> <a href=\"index.php?id=$course->id\">$strsurveys</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($survey->name,true)."</a> -> "; + <a href=\"view.php?id=$cm->id\">$survey->name</a> -> "; } else { $navigation = "<a href=\"index.php?id=$course->id\">$strsurveys</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($survey->name,true)."</a> -> "; + <a href=\"view.php?id=$cm->id\">$survey->name</a> -> "; } - print_header("$course->shortname: ".format_string($survey->name), "$course->fullname", "$navigation $strreport", + print_header("$course->shortname: $survey->name", "$course->fullname", "$navigation $strreport", "", "", true, update_module_button($cm->id, $course->id, $strsurvey), navmenu($course, $cm)); /// Check to see if groups are being used in this survey if ($groupmode = groupmode($course, $cm)) { // Groups are being used $menuaction = $action == "student" ? "students" : $action; - $currentgroup = setup_and_print_groups($course, $groupmode, - "report.php?id=$cm->id&amp;action=$menuaction&amp;qid=$qid"); + $currentgroup = setup_and_print_groups($course, $groupmode, + "report.php?id=$cm->id&action=$menuaction&qid=$qid"); } else { $currentgroup = 0; } @@ -80,18 +80,18 @@ print_simple_box_start("center"); if ($showscales) { - echo "<a href=\"report.php?action=summary&amp;id=$id\">$strsummary</a>"; - echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=scales&amp;id=$id\">$strscales</a>"; - echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=questions&amp;id=$id\">$strquestions</a>"; - echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=students&amp;id=$id\">$course->students</a>"; - echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=download&amp;id=$id\">$strdownload</a>"; + echo "<a href=\"report.php?action=summary&id=$id\">$strsummary</a>"; + echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=scales&id=$id\">$strscales</a>"; + echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=questions&id=$id\">$strquestions</a>"; + echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=students&id=$id\">$course->students</a>"; + echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=download&id=$id\">$strdownload</a>"; if (empty($action)) { $action = "summary"; } } else { - echo "<a href=\"report.php?action=questions&amp;id=$id\">$strquestions</a>"; - echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=students&amp;id=$id\">$course->students</a>"; - echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=download&amp;id=$id\">$strdownload</a>"; + echo "<a href=\"report.php?action=questions&id=$id\">$strquestions</a>"; + echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=students&id=$id\">$course->students</a>"; + echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=download&id=$id\">$strdownload</a>"; if (empty($action)) { $action = "questions"; } @@ -109,9 +109,9 @@ print_heading($strsummary); if (survey_count_responses($survey->id, $currentgroup)) { - echo "<center><a href=\"report.php?action=scales&amp;id=$id\">"; - survey_print_graph("id=$id&amp;group=$currentgroup&amp;type=overall.png"); - echo "</a></center>"; + echo "<p align=center><a href=\"report.php?action=scales&id=$id\">"; + survey_print_graph("id=$id&group=$currentgroup&type=overall.png"); + echo "</a>"; } else { notify(get_string("nobodyyet","survey")); } @@ -139,13 +139,13 @@ foreach ($questionorder as $key => $val) { $question = $questions[$val]; if ($question->multi) { - if (!empty($virtualscales) && $question->type > 0) { // Don't show non-virtual scales if virtual + if ($virtualscales && $question->type > 0) { // Don't show non-virtual scales if virtual continue; } - echo "<p align=\"center\"><a title=\"$strseemoredetail\" href=\"report.php?action=questions&amp;id=$id&amp;qid=$question->multi\">"; - survey_print_graph("id=$id&amp;qid=$question->id&amp;group=$currentgroup&amp;type=multiquestion.png"); - echo "</a></p><br />"; - } + echo "<p align=center><a title=\"$strseemoredetail\" href=report.php?action=questions&id=$id&qid=$question->multi>"; + survey_print_graph("id=$id&qid=$question->id&group=$currentgroup&type=multiquestion.png"); + echo "</a></p><br>"; + } } } @@ -200,16 +200,16 @@ foreach ($subquestionorder as $key => $val) { $subquestion = $subquestions[$val]; if ($subquestion->type > 0) { - echo "<p align=\"center\">"; - echo "<a title=\"$strseemoredetail\" href=\"report.php?action=question&amp;id=$id&amp;qid=$subquestion->id\">"; - survey_print_graph("id=$id&amp;qid=$subquestion->id&amp;group=$currentgroup&amp;type=question.png"); + echo "<p align=center>"; + echo "<a title=\"$strseemoredetail\" href=\"report.php?action=question&id=$id&qid=$subquestion->id\">"; + survey_print_graph("id=$id&qid=$subquestion->id&group=$currentgroup&type=question.png"); echo "</a></p>"; } } } else if ($question->type > 0 ) { - echo "<p align=\"center\">"; - echo "<a title=\"$strseemoredetail\" href=\"report.php?action=question&amp;id=$id&amp;qid=$question->id\">"; - survey_print_graph("id=$id&amp;qid=$question->id&amp;group=$currentgroup&amp;type=question.png"); + echo "<p align=center>"; + echo "<a title=\"$strseemoredetail\" href=\"report.php?action=question&id=$id&qid=$question->id\">"; + survey_print_graph("id=$id&qid=$question->id&group=$currentgroup&type=question.png"); echo "</a></p>"; } else { @@ -276,10 +276,10 @@ $table->data[] = array( print_user_picture($a->userid, $course->id, $a->picture, false, true, true), - "<a href=\"report.php?id=$id&amp;action=student&amp;student=$a->userid\">".fullname($a)."</a>", - userdate($a->time), + "<a href=\"report.php?id=$id&action=student&student=$a->userid\">".fullname($a)."</a>", + userdate($a->time), $answer1, $answer2); - + } } @@ -290,7 +290,7 @@ case "students": print_heading(get_string("analysisof", "survey", "$course->students")); - + if (! $results = survey_get_responses($survey->id, $currentgroup) ) { notify(get_string("nobodyyet","survey")); } else { @@ -322,7 +322,7 @@ } } - echo "<p align=\"center\">"; + echo "<p align=center>"; print_user_picture($user->id, $course->id, $user->picture, true); echo "</p>"; @@ -331,12 +331,12 @@ if ($showscales) { // Print overall summary - echo "<p align=\"center\">"; - survey_print_graph("id=$id&amp;sid=$student&amp;type=student.png"); + echo "<p align=center>"; + survey_print_graph("id=$id&sid=$student&type=student.png"); echo "</p>"; - + // Print scales - + foreach ($questionorder as $key => $val) { $question = $questions[$val]; if ($question->type < 0) { // We have some virtual scales. Just show them. @@ -344,20 +344,20 @@ break; } } - + foreach ($questionorder as $key => $val) { $question = $questions[$val]; if ($question->multi) { if ($virtualscales && $question->type > 0) { // Don't show non-virtual scales if virtual continue; } - echo "<p align=\"center\">"; - echo "<a title=\"$strseemoredetail\" href=\"report.php?action=questions&amp;id=$id&amp;qid=$question->multi\">"; - survey_print_graph("id=$id&amp;qid=$question->id&amp;sid=$student&amp;type=studentmultiquestion.png"); - echo "</a></p><br />"; - } + echo "<p align=center>"; + echo "<a title=\"$strseemoredetail\" href=report.php?action=questions&id=$id&qid=$question->multi>"; + survey_print_graph("id=$id&qid=$question->id&sid=$student&type=studentmultiquestion.png"); + echo "</a></p><br>"; + } } - } + } // Print non-scale questions @@ -380,22 +380,22 @@ } else { $notes = ""; } - echo "<hr noshade=\"noshade\" size=\"1\" />"; + echo "<hr noshade size=1>"; echo "<center>"; - echo "<form action=\"report.php\" method=\"post\" name=\"form\">"; + echo "<form action=report.php method=post name=form>"; echo "<h3>$strnotes:</h3>"; echo "<blockquote>"; - echo "<textarea name=\"notes\" rows=\"10\" cols=\"60\">"; + echo "<textarea name=notes rows=10 cols=60>"; p($notes); - echo "</textarea><br />"; - echo "<input type=\"hidden\" name=\"action\" value=\"student\" />"; - echo "<input type=\"hidden\" name=\"student\" value=\"$student\" />"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />"; - echo "<input type=\"submit\" value=\"".get_string("savechanges")."\" />"; + echo "</textarea><br>"; + echo "<input type=hidden name=action value=student>"; + echo "<input type=hidden name=student value=$student>"; + echo "<input type=hidden name=id value=$cm->id>"; + echo "<input type=submit value=\"".get_string("savechanges")."\">"; echo "</blockquote>"; echo "</form>"; echo "</center>"; - + break; @@ -413,7 +413,7 @@ $options["type"] = "txt"; print_single_button("download.php", $options, get_string("downloadtext", "survey")); echo '</center>'; - + break; } diff --git a/mod/survey/restorelib.php b/mod/survey/restorelib.php index 086b0c27265..d8eeda7c0f8 100644 --- a/mod/survey/restorelib.php +++ b/mod/survey/restorelib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //survey mods @@ -53,7 +53,7 @@ $newid = insert_record ("survey",$survey); //Do some output - echo "<li>".get_string("modulename","survey")." \"".format_string(stripslashes($survey->name),true)."\"</li>"; + echo "<ul><li>".get_string("modulename","survey")." \"".$survey->name."\"<br>"; backup_flush(300); if ($newid) { @@ -72,6 +72,10 @@ } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -121,7 +125,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -177,7 +181,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -272,21 +276,8 @@ $log->url = "index.php?id=".$log->course; $status = true; break; - case "download": - if ($log->cmid) { - //Get the new_id of the module (to recode the info field) - $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); - if ($mod) { - //Rebuild the url, extracting the type (txt, xls) - $filetype = substr($log->url,-3); - $log->url = "download.php?id=".$log->cmid."&amp;type=".$filetype; - $log->info = $mod->new_id; - $status = true; - } - } - break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored<br />"; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>"; //Debug break; } diff --git a/mod/survey/save.php b/mod/survey/save.php index 385573f299e..1c270b3a244 100644 --- a/mod/survey/save.php +++ b/mod/survey/save.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once('../../config.php'); require_once('lib.php'); @@ -24,7 +24,7 @@ error("Course is misconfigured"); } - require_login($course->id, false, $cm); + require_login($course->id); if (! $survey = get_record("survey", "id", $cm->instance)) { error("Survey ID was incorrect"); @@ -39,14 +39,14 @@ // Sort through the data and arrange it -// This is necessary because some of the questions +// This is necessary because some of the questions // may have two answers, eg Question 1 -> 1 and P1 - $answers = array(); + $answers = array(); foreach ($formdata as $key => $val) { if ($key <> "userid" && $key <> "id") { - if ( substr($key,0,1) == "q") { + if ( substr($key,0,1) == "q") { $key = substr($key,1); // keep everything but the 'q' } if ( substr($key,0,1) == "P") { @@ -57,7 +57,7 @@ } } } - + // Now store the data. @@ -89,13 +89,13 @@ $strsurveys = get_string("modulenameplural", "survey"); $strsurveysaved = get_string("surveysaved", "survey"); - print_header_simple("$strsurveysaved", "", - "<a href=\"index.php?id=$course->id\">$strsurveys</a> -> ".format_string($survey->name)." -> $strsurveysaved", ""); + print_header_simple("$strsurveysaved", "", + "<a href=\"index.php?id=$course->id\">$strsurveys</a> -> $survey->name -> $strsurveysaved", ""); notice(get_string("thanksforanswers","survey", $USER->firstname), "$CFG->wwwroot/course/view.php?id=$course->id"); - + exit; - + ?> diff --git a/mod/survey/version.php b/mod/survey/version.php index 7cdea8ed4eb..f3ad30b6188 100644 --- a/mod/survey/version.php +++ b/mod/survey/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////////// // Code fragment to define the module version etc. // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2005031600; -$module->requires = 2005031000; // Requires this Moodle version +$module->version = 2004060400; +$module->requires = 2004051600; // Requires this Moodle version $module->cron = 0; ?> diff --git a/mod/survey/view.php b/mod/survey/view.php index bcf1597869b..2054db176c5 100644 --- a/mod/survey/view.php +++ b/mod/survey/view.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../../config.php"); require_once("lib.php"); @@ -13,7 +13,7 @@ error("Course is misconfigured"); } - require_login($course->id, false, $cm); + require_login($course->id); if (! $survey = get_record("survey", "id", $cm->instance)) { error("Survey ID was incorrect"); @@ -28,8 +28,8 @@ $strsurveys = get_string("modulenameplural", "survey"); $strsurvey = get_string("modulename", "survey"); - print_header_simple(format_string($survey->name), "", - "<a href=\"index.php?id=$course->id\">$strsurveys</a> -> ".format_string($survey->name), "", "", true, + print_header_simple("$survey->name", "", + "<A HREF=index.php?id=$course->id>$strsurveys</A> -> $survey->name", "", "", true, update_module_button($cm->id, $course->id, $strsurvey), navmenu($course, $cm)); /// Check to see if groups are being used in this survey @@ -45,8 +45,8 @@ if (isteacher($course->id)) { $numusers = survey_count_responses($survey->id, $currentgroup); - echo "<div class=\"reportlink\"><a href=\"report.php?id=$cm->id\">". - get_string("viewsurveyresponses", "survey", $numusers)."</a></div>"; + echo "<p align=right><a href=\"report.php?id=$cm->id\">". + get_string("viewsurveyresponses", "survey", $numusers)."</A></P>"; } else if (!$cm->visible) { notice(get_string("activityiscurrentlyhidden")); } @@ -67,12 +67,12 @@ print_heading(get_string("surveycompleted", "survey")); print_heading(get_string("peoplecompleted", "survey", $numusers)); echo "<center>"; - survey_print_graph("id=$cm->id&amp;sid=$USER->id&amp;group=$currentgroup&amp;type=student.png"); + survey_print_graph("id=$cm->id&sid=$USER->id&group=$currentgroup&type=student.png"); echo "</center>"; } else { - print_simple_box(format_text($survey->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); + print_simple_box(format_text($survey->intro), "center", "80%"); print_spacer(30); $questions = get_records_list("survey_questions", "id", $survey->questions); @@ -91,7 +91,7 @@ } } } - + print_footer($course); exit; } @@ -99,10 +99,10 @@ // Start the survey form add_to_log($course->id, "survey", "view form", "view.php?id=$cm->id", $survey->id, $cm->id); - echo "<form name=\"form\" method=\"post\" action=\"save.php\">"; - echo "<input type=\"hidden\" name=\"id\" value=\"$id\" />"; + echo "<form name=form method=post action=save.php>"; + echo "<input type=hidden name=id value=$id>"; - print_simple_box(format_text($survey->intro), 'center', '70%', '', 5, 'generalbox', 'intro'); + print_simple_box(format_text($survey->intro), "center", "80%"); // Get all the major questions and their proper order if (! $questions = get_records_list("survey_questions", "id", $survey->questions)) { @@ -116,7 +116,7 @@ foreach ($questionorder as $key => $val) { $question = $questions["$val"]; $question->id = $val; - + if ($question->type >= 0) { if ($question->text) { @@ -153,7 +153,7 @@ <center> <br /> -<script type="text/javascript"> +<script> <!-- // BEGIN function checkform() { @@ -176,14 +176,14 @@ function checkform() { } } -<?php echo "document.write('<input type=\"button\" value=\"".get_string("clicktocontinuecheck", "survey")."\" onClick=\"checkform()\" />');"; ?> +<?php echo "document.write('<INPUT TYPE=button VALUE=\"".get_string("clicktocontinuecheck", "survey")."\" onClick=\"checkform()\">');"; ?> // END --> -</script> +</SCRIPT> <noscript> <!-- Without Javascript, no checking is done --> - <input type="submit" value="<?php get_string("clicktocontinue", "survey") ?>" /> + <input type="submit" value="<?php get_string("clicktocontinue", "survey") ?>"> </noscript> </center> diff --git a/mod/wiki/admin.php b/mod/wiki/admin.php index 49349d8e3fe..cd7026f2609 100644 --- a/mod/wiki/admin.php +++ b/mod/wiki/admin.php @@ -1,19 +1,22 @@ <?PHP // $Id$ /// Extended by Michael Schneider +/// This page prints a particular instance of wiki + require_once("../../config.php"); require_once("lib.php"); + + + require_login($course->id); + optional_variable($id); // Course Module ID, or - optional_variable($a); // wiki ID - optional_variable($page, false); // Pagename + optional_variable($wikipage); // Pagename optional_variable($confirm, ""); optional_variable($action,""); // Admin Action - optional_variable($userid, 0); // User wiki. - optional_variable($groupid, 0); // Group wiki. - - $action = clean_text($action); - + optional_variable($userid); // User wiki. + optional_variable($groupid); // Group wiki. + if ($id) { if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); @@ -38,21 +41,19 @@ error("Course Module ID was incorrect"); } } - - require_login($course->id, false, $cm); - + /// Build the ewsiki script constant $ewbase = 'view.php?id='.$id; - if (isset($userid) && $userid!=0) $ewbase .= '&amp;userid='.$userid; - if (isset($groupid) && $groupid!=0) $ewbase .= '&amp;groupid='.$groupid; - $ewscript = $ewbase.'&amp;page='; + if (isset($userid)) $ewbase .= '&userid='.$userid; + if (isset($groupid)) $ewbase .= '&groupid='.$groupid; + $ewscript = $ewbase.'&wikipage='; define("EWIKI_SCRIPT", $ewscript); if($wiki->ewikiacceptbinary) { define("EWIKI_UPLOAD_MAXSIZE", get_max_upload_file_size()); define("EWIKI_SCRIPT_BINARY", $ewbase."&binary="); } - - + + /// Add the course module 'groupmode' to the wiki object, for easy access. $wiki->groupmode = $cm->groupmode; @@ -60,13 +61,13 @@ if(!$action) { error(get_string("noadministrationaction","wiki")); } - + /// Correct Action ? if(!in_array($action, array("setpageflags", "removepages", "strippages", "checklinks", "revertpages"))) { error("Unknown action '$action'","wiki"); } - - + + /// May the User administrate it ? if (($wiki_entry = wiki_get_entry($wiki, $course, $userid, $groupid)) === false || wiki_can_edit_entry($wiki_entry, $wiki, $USER, $course) === false) { error(get_string("notadministratewiki","wiki")); @@ -77,13 +78,13 @@ if(!($wiki->wtype=="student" || isteacher($course->id))) { add_to_log($course->id, "wiki", "hack", "", $wiki->name.": Tried to trick admin.php with action=$action."); error("Hack attack detected !"); - } + } } - + # Database and Binary Handler include_once($CFG->dirroot."/mod/wiki/ewikimoodlelib.php"); include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/moodle_binary_store.php"); - + /// The wiki_entry->pagename is set to the specified value of the wiki, /// or the default value in the 'lang' file if the specified value was empty. define("EWIKI_PAGE_INDEX",$wiki_entry->pagename); @@ -95,32 +96,32 @@ /// Validate Form if ($form = data_submitted()) { - switch($action) { + switch($action) { case "revertpages": if(!$form->deleteversions || 0 > $form->deleteversions || $form->deleteversions > 1000) { $focus="form.deleteversions"; $err->deleteversions=get_string("deleteversionserror","wiki"); - } + } if(!$form->changesfield || 0 > $form->changesfield || $form->changesfield > 100000) { $focus="form.changesfield"; $err->changesfield=get_string("changesfielderror","wiki"); - } + } if($form->authorfieldpattern=="") { $focus="form.authorfieldpattern"; $err->authorfieldpattern=get_string("authorfieldpatternerror","wiki"); - } + } break; default: break; } - } - + } + print_header_simple("$wiki_entry->pagename", "", - "<A HREF=\"index.php?id=$course->id\">$strwikis</A> -> <A HREF=\"view.php?id=$id\">".format_string($wiki->name,true)."</a> ->". + "<A HREF=\"index.php?id=$course->id\">$strwikis</A> -> <A HREF=\"view.php?id=$id\">$wiki->name</a> ->". get_string("administration","wiki"), $focus, "", true, update_module_button($cm->id, $course->id, $strwiki), navmenu($course, $cm)); - + //////////////////////////////////////////////////////////// /// Check if the Form has been submitted and display confirmation //////////////////////////////////////////////////////////// @@ -130,9 +131,9 @@ /// Get additional info $addloginfo=""; switch($action) { - case "removepages": + case "removepages": $addloginfo=@join(", ", $form->pagestodelete); - break; + break; case "strippages": $addloginfo=@join(", ", $form->pagestostrip); break; @@ -146,53 +147,54 @@ // No additional info break; } - add_to_log($course->id, "wiki", $action, "admin.php?action=$action&amp;userid=$userid&amp;groupid=$groupid&amp;id=$id", $wiki->name.($addloginfo?": ".$addloginfo:"")); - $link="admin.php?action=$action".($userid?"&amp;userid=".$userid:"").($groupid?"&amp;groupid=".$groupid:"")."&amp;id=$id&amp;page=$page"; + add_to_log($course->id, "wiki", $action, "admin.php?action=$action&userid=$userid&groupid=$groupid&id=$id", $wiki->name.($addloginfo?": ".$addloginfo:"")); + $link="admin.php?action=$action&userid=$userid&groupid=$groupid&id=$id&wikipage=$wikipage"; switch($action) { - case "removepages": - if($form->proceed) { + case "removepages": + if($form->proceed) { if(!$confirm && $form->pagestodelete) { - notice_yesno(get_string("removepagecheck", "wiki")."<br />".join(", ", $form->pagestodelete), - $link."&amp;confirm=".urlencode(join(" ",$form->pagestodelete)), $link); + notice_yesno(get_string("removepagecheck", "wiki")."<br>".join(", ", $form->pagestodelete), + $link."&confirm=".urlencode(join(" ",$form->pagestodelete)), $link); print_footer($course); exit; } } break; case "strippages": - if($form->proceed) { + if($form->proceed) { if(!$confirm && $form->pagestostrip) { $err=array(); $strippages=wiki_admin_strip_versions($form->pagestostrip,$form->version, $err); + $confirm=""; foreach($strippages as $cnfid => $cnfver) { $confirm.="&confirm[$cnfid]=".urlencode(join(" ",$cnfver)); } if(count($err)==0) { - notice_yesno(get_string("strippagecheck", "wiki")."<br />".join(", ", $form->pagestostrip), - $link.$confirm, $link); + notice_yesno(get_string("strippagecheck", "wiki")."<br>".join(", ", $form->pagestostrip), + $link.$confirm, $link); print_footer($course); exit; } } } - break; + break; case "checklinks": - if($form->proceed) { + if($form->proceed) { if(!$confirm && $form->pagetocheck) { - $confirm="&amp;confirm=".$form->pagetocheck; + $confirm="&confirm=".$form->pagetocheck; notice_yesno(get_string("checklinkscheck", "wiki").$form->pagetocheck, - $link.$confirm, $link); + $link.$confirm, $link); print_footer($course); exit; } } - break; + break; case "setpageflags": // pageflagstatus is used in setpageflags.html $pageflagstatus=wiki_admin_setpageflags($form->flags); - break; - case "revertpages": + break; + case "revertpages": if(!$err) { if(!$confirm) { $confirm="&confirm[changesfield]=".urlencode($form->changesfield). @@ -201,23 +203,23 @@ "&confirm[deleteversions]=".urlencode($form->deleteversions); $revertedpages=wiki_admin_revert("", $form->authorfieldpattern, $form->changesfield, $form->howtooperate, $form->deleteversions); if($revertedpages) { - notice_yesno(get_string("revertpagescheck", "wiki")."<br />".$revertedpages, - $link.$confirm, $link); + notice_yesno(get_string("revertpagescheck", "wiki")."<br>".$revertedpages, + $link.$confirm, $link); print_footer($course); - exit; + exit; } else { $err->remark=get_string("nochangestorevert","wiki"); } } } - break; + break; default: error("No such Wiki-Admin action: $action"); break; } - } - + } + /// Actions which need a confirmation. If confirmed, do the action - $redirect="view.php?".($groupid?"&amp;groupid=".$groupid:"").($userid?"&amp;userid=".$userid:"")."&amp;id=$id&amp;page=$page"; + $redirect="view.php?userid=$userid&groupid=$groupid&id=$id&wikipage=$wikipage"; if($confirm && !$err) { switch($action) { case "removepages": @@ -239,11 +241,11 @@ } else { error($ret); } - exit; + exit; case "checklinks": $ret=wiki_admin_checklinks($confirm); - redirect($redirect, get_string("linkschecked","wiki")."<br />".$ret, 5); - exit; + redirect($redirect, get_string("linkschecked","wiki")."<br>".$ret, 5); + exit; case "revertpages": $revertedpages=wiki_admin_revert(1, $confirm["authorfieldpattern"], $confirm["changesfield"], $confirm["howtooperate"], $confirm["deleteversions"]); redirect($redirect, get_string("pagesreverted","wiki"), 1); @@ -252,9 +254,9 @@ # No confirmation needed break; default: error("No such action '$action' with confirmation"); - } + } } - + /// The top row contains links to other wikis, if applicable. if ($wiki_list = wiki_get_other_wikis($wiki, $USER, $course, $wiki_entry->id)) { @@ -266,23 +268,23 @@ echo '<form name="otherwikis" action="'.$CFG->wwwroot.'/mod/wiki/admin.php">'; echo '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>'; - echo '<td class="sideblockheading">&nbsp;' + echo '<td class="sideblockheading" bgcolor="'.$THEME->cellheading.'">&nbsp;' .$WIKI_TYPES[$wiki->wtype].' ' .get_string('modulename', 'wiki').' for ' .wiki_get_owner($wiki_entry).':</td>'; - echo '<td class="sideblockheading" align="right">' + echo '<td class="sideblockheading" bgcolor="'.$THEME->cellheading.'" align="right">' .get_string('otherwikis', 'wiki').':&nbsp;&nbsp;'; $script = 'self.location=document.otherwikis.wikiselect.options[document.otherwikis.wikiselect.selectedIndex].value'; - + /// Add Admin-Action reset($wiki_list); $wiki_admin_list=array(); while(list($key,$val)=each($wiki_list)) { - $wiki_admin_list[$key."&amp;action=$action"]=$val; + $wiki_admin_list[$key."&action=$action"]=$val; } choose_from_menu($wiki_admin_list, "wikiselect", $selected, "choose", $script); - echo '</td>'; + echo '</td>'; echo '</tr></table>'; echo '</form>'; @@ -292,52 +294,52 @@ if ($wiki_entry) { - + /// Page Actions echo '<table border="0" width="100%">'; echo '<tr>'; # echo '<tr><td align="center">'; # $specialpages=array("SearchPages", "PageIndex","NewestPages","MostVisitedPages","MostOftenChangedPages","UpdatedPages","FileDownload","FileUpload","OrphanedPages","WantedPages"); # wiki_print_page_actions($cm->id, $specialpages, $ewiki_id, $ewiki_action, $wiki->ewikiacceptbinary, $canedit); -# echo '</td>'; +# echo '</td>'; /// Searchform - echo '<td align="center">'; + echo '<td align="center">'; wiki_print_search_form($cm->id, $q, $userid, $groupid, false); echo '</td>'; - + /// Internal Wikilinks - + /// TODO: DOES NOT WORK !!!! echo '<td align="center">'; wiki_print_wikilinks_block($cm->id, $wiki->ewikiacceptbinary); echo '</td>'; - - /// Administrative Links - echo '<td align="center">'; - wiki_print_administration_actions($wiki, $cm->id, $userid, $groupid, $page, $wiki->htmlmode!=2, $course); + + /// Administrative Links + echo '<td align="center">'; + wiki_print_administration_actions($wiki, $cm->id, $userid, $groupid, $wikipage, $wiki->htmlmode!=2, $course); echo '</td>'; - + # if($wiki->htmlmode!=2) { -# echo '<td align="center">'; +# echo '<td align="center">'; # helpbutton('formattingrules', get_string('formattingrules', 'wiki'), 'wiki'); # echo get_string("formattingrules","wiki"); # echo '</td>'; # } - + echo '</tr></table>'; } // The wiki Contents - print_simple_box_start( 'center', '100%', '', '20'); - // Do the Action + print_simple_box_start( "center", "100%", "$THEME->cellcontent", "20"); + // Do the Action # "setpageflags", "removepages", "strippages", "checklinks", "revertpages" print_heading_with_help(get_string($action,"wiki"), $action, "wiki"); - include $action.".html"; + include $action.".html"; print_simple_box_end(); /// Finish the page print_footer($course); exit; - -?> + +?> \ No newline at end of file diff --git a/mod/wiki/backuplib.php b/mod/wiki/backuplib.php index f90a25659db..c16587e320c 100644 --- a/mod/wiki/backuplib.php +++ b/mod/wiki/backuplib.php @@ -41,18 +41,13 @@ fwrite ($bf,full_tag("PAGENAME",4,false,$wiki->wtype)); fwrite ($bf,full_tag("WTYPE",4,false,$wiki->wtype)); fwrite ($bf,full_tag("EWIKIPRINTTITLE",4,false,$wiki->ewikiprinttitle)); - fwrite ($bf,full_tag("HTMLMODE",4,false,$wiki->htmlmode)); + fwrite ($bf,full_tag("HTMLMODE",4,false,$wiki->allowsafehtml)); fwrite ($bf,full_tag("EWIKIACCEPTBINARY",4,false,$wiki->ewikiacceptbinary)); - fwrite ($bf,full_tag("DISABLECAMELCASE",4,false,$wiki->disablecamelcase)); - fwrite ($bf,full_tag("SETPAGEFLAGS",4,false,$wiki->setpageflags)); - fwrite ($bf,full_tag("STRIPPAGES",4,false,$wiki->strippages)); - fwrite ($bf,full_tag("REMOVEPAGES",4,false,$wiki->removepages)); - fwrite ($bf,full_tag("REVERTCHANGES",4,false,$wiki->revertchanges)); fwrite ($bf,full_tag("INITIALCONTENT",4,false,$wiki->initialcontent)); fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$wiki->timemodified)); //backup entries and pages - if ($preferences->mods["wiki"]->userinfo) { + if ($preferences->mods["forum"]->userinfo) { $status=backup_wiki_entries($bf,$preferences,$wiki->id, $preferences->mods["wiki"]->userinfo); } @@ -87,33 +82,42 @@ $wiki_entries = get_records("wiki_entries","wikiid",$wiki,"id"); //If there are entries if ($wiki_entries) { - //Write start tag - $status =fwrite ($bf,start_tag("ENTRIES",4,true)); + $dumped_entries = 0; + //Iterate over each entry foreach ($wiki_entries as $wik_ent) { - //Entry start - $status =fwrite ($bf,start_tag("ENTRY",5,true)); + //Start entry + //Print submission contents + if ($userinfo) { + $dumped_entries++; + if ($dumped_entries == 1) { + //Write start tag + $status =fwrite ($bf,start_tag("ENTRIES",4,true)); + } + $status =fwrite ($bf,start_tag("ENTRY",5,true)); - fwrite ($bf,full_tag("ID",6,false,$wik_ent->id)); - fwrite ($bf,full_tag("GROUPID",6,false,$wik_ent->groupid)); - fwrite ($bf,full_tag("USERID",6,false,$wik_ent->userid)); - fwrite ($bf,full_tag("PAGENAME",6,false,$wik_ent->pagename)); - fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$wik_ent->timemodified)); + fwrite ($bf,full_tag("ID",6,false,$wik_ent->id)); + fwrite ($bf,full_tag("GROUPID",6,false,$wik_ent->groupid)); + fwrite ($bf,full_tag("USERID",6,false,$wik_ent->userid)); + fwrite ($bf,full_tag("PAGENAME",6,false,$wik_ent->pagename)); + fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$wik_ent->timemodified)); - //Now save entry pages - $status = backup_wiki_pages($bf,$preferences,$wik_ent->id); - //Entry end - $status =fwrite ($bf,end_tag("ENTRY",5,true)); + if ( $userinfo ) { + $status = backup_wiki_pages($bf,$preferences,$wik_ent->id); + } + + $status =fwrite ($bf,end_tag("ENTRY",5,true)); + } + } + if ( $dumped_entries > 0 ) { + //Write end tag + $status =fwrite ($bf,end_tag("ENTRIES",4,true)); } - //Write end tag - $status =fwrite ($bf,end_tag("ENTRIES",4,true)); } return $status; } - - //Write wiki_pages contents - function backup_wiki_pages ($bf,$preferences,$entryid) { + function backup_wiki_pages ($bf,$preferences,$entryid) { global $CFG; @@ -121,22 +125,18 @@ $pages = get_records("wiki_pages","wiki",$entryid); if ($pages) { - //Start tag $status =fwrite ($bf,start_tag("PAGES",6,true)); - //Iterate over each page foreach ($pages as $page) { $status =fwrite ($bf,start_tag("PAGE",7,true)); - fwrite ($bf,full_tag("ID",8,false,$page->id)); fwrite ($bf,full_tag("PAGENAME",8,false,$page->pagename)); fwrite ($bf,full_tag("VERSION",8,false,$page->version)); fwrite ($bf,full_tag("FLAGS",8,false,$page->flags)); fwrite ($bf,full_tag("CONTENT",8,false,$page->content)); fwrite ($bf,full_tag("AUTHOR",8,false,$page->author)); - fwrite ($bf,full_tag("USERID",8,false,$page->userid)); fwrite ($bf,full_tag("CREATED",8,false,$page->created)); fwrite ($bf,full_tag("LASTMODIFIED",8,false,$page->lastmodified)); - fwrite ($bf,full_tag("REFS",8,false,str_replace("\n","$@LINEFEED@$",$page->refs))); + fwrite ($bf,full_tag("REFS",8,false,$page->refs)); fwrite ($bf,full_tag("META",8,false,$page->meta)); fwrite ($bf,full_tag("HITS",8,false,$page->hits)); diff --git a/mod/wiki/checklinks.html b/mod/wiki/checklinks.html index dc1e567f1ad..6b08ac4ac95 100644 --- a/mod/wiki/checklinks.html +++ b/mod/wiki/checklinks.html @@ -3,14 +3,14 @@ ?> <FORM ACTION="admin.php" METHOD="POST" ENCTYPE="multipart/form-data"> -<INPUT TYPE="HIDDEN" NAME="userid" VALUE="<?php print $userid; ?>" /> -<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="<?php print $groupid ?>" /> -<INPUT TYPE="HIDDEN" NAME="action" VALUE="<?php print $action; ?>" /> -<INPUT TYPE="HIDDEN" NAME="id" VALUE="<?php print $cm->id ?>" /> -<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="<?php print $wikipage?>" /> -<?php +<INPUT TYPE="HIDDEN" NAME="userid" VALUE="<? print $userid; ?>"> +<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="<? print $groupid ?>"> +<INPUT TYPE="HIDDEN" NAME="action" VALUE="<? print $action; ?>"> +<INPUT TYPE="HIDDEN" NAME="id" VALUE="<? print $cm->id ?>"> +<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="<? print $wikipage?>"> +<? $pagelist=wiki_admin_checklinks_list(); choose_from_menu($pagelist, "pagetocheck", $wikipage, ""); ?> - <input type="submit" name="proceed" value="<?php print get_string("checklinks","wiki"); ?>" /> + <input type="submit" name="proceed" value="<? print get_string("checklinks","wiki"); ?>"> </center> \ No newline at end of file diff --git a/mod/wiki/db/mysql.php b/mod/wiki/db/mysql.php index 8396bfeed8e..9104d2b8802 100644 --- a/mod/wiki/db/mysql.php +++ b/mod/wiki/db/mysql.php @@ -71,84 +71,6 @@ function wiki_upgrade($oldversion) { } } - if ($oldversion < 2004111200) { - execute_sql("ALTER TABLE {$CFG->prefix}wiki DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}wiki_entries DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}wiki_entries DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}wiki_entries DROP INDEX groupid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}wiki_entries DROP INDEX wikiid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}wiki_entries DROP INDEX pagename;",false); - - modify_database('','ALTER TABLE prefix_wiki ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_wiki_entries ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_wiki_entries ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_wiki_entries ADD INDEX groupid (groupid);'); - modify_database('','ALTER TABLE prefix_wiki_entries ADD INDEX wikiid (wikiid);'); - modify_database('','ALTER TABLE prefix_wiki_entries ADD INDEX pagename (pagename);'); - } - - if ($oldversion < 2005022000) { - // recreating the wiki_pages table completelly (missing id, bug 2608) - if ($rows = count_records("wiki_pages")) { - // we need to use the temp stuff - modify_database("","CREATE TABLE `prefix_wiki_pages_tmp` ( - `pagename` VARCHAR(160) NOT NULL, - `version` INT(10) UNSIGNED NOT NULL DEFAULT 0, - `flags` INT(10) UNSIGNED DEFAULT 0, - `content` MEDIUMTEXT, - `author` VARCHAR(100) DEFAULT 'ewiki', - `userid` INT(10) UNSIGNED NOT NULL DEFAULT 0, - `created` INT(10) UNSIGNED DEFAULT 0, - `lastmodified` INT(10) UNSIGNED DEFAULT 0, - `refs` MEDIUMTEXT, - `meta` MEDIUMTEXT, - `hits` INT(10) UNSIGNED DEFAULT 0, - `wiki` INT(10) UNSIGNED NOT NULL);"); - - execute_sql("INSERT INTO {$CFG->prefix}wiki_pages_tmp (pagename, version, flags, content, - author, userid, created, lastmodified, - refs, meta, hits, wiki) - SELECT pagename, version, flags, content, - author, userid, created, lastmodified, - refs, meta, hits, wiki - FROM {$CFG->prefix}wiki_pages"); - - $insertafter = true; - } - - execute_sql("DROP TABLE {$CFG->prefix}wiki_pages"); - - modify_database("","CREATE TABLE `prefix_wiki_pages` ( - `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, - `pagename` VARCHAR(160) NOT NULL, - `version` INT(10) UNSIGNED NOT NULL DEFAULT 0, - `flags` INT(10) UNSIGNED DEFAULT 0, - `content` MEDIUMTEXT, - `author` VARCHAR(100) DEFAULT 'ewiki', - `userid` INT(10) UNSIGNED NOT NULL DEFAULT 0, - `created` INT(10) UNSIGNED DEFAULT 0, - `lastmodified` INT(10) UNSIGNED DEFAULT 0, - `refs` MEDIUMTEXT, - `meta` MEDIUMTEXT, - `hits` INT(10) UNSIGNED DEFAULT 0, - `wiki` INT(10) UNSIGNED NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `wiki_pages_uk` (`pagename`,`version`,`wiki`)) - TYPE=MyISAM COMMENT='Holds the Wiki-Pages';"); - - if (!empty($insertafter)) { - execute_sql("INSERT INTO {$CFG->prefix}wiki_pages (pagename, version, flags, content, - author, userid, created, lastmodified, - refs, meta, hits, wiki) - SELECT pagename, version, flags, content, - author, userid, created, lastmodified, - refs, meta, hits, wiki - FROM {$CFG->prefix}wiki_pages_tmp"); - - execute_sql("DROP TABLE {$CFG->prefix}wiki_pages_tmp"); - } - } - return true; } diff --git a/mod/wiki/db/mysql.sql b/mod/wiki/db/mysql.sql index aacdb84a5b7..cb6e0885b18 100644 --- a/mod/wiki/db/mysql.sql +++ b/mod/wiki/db/mysql.sql @@ -22,8 +22,7 @@ CREATE TABLE `prefix_wiki` ( `revertchanges` tinyint(4) NOT NULL default '1', `initialcontent` varchar(255) default NULL, `timemodified` int(10) NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `course` (`course`) + PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT='Main wiki table'; @@ -39,17 +38,11 @@ CREATE TABLE `prefix_wiki_entries` ( `userid` int(10) NOT NULL default '0', `pagename` varchar(255) NOT NULL default '', `timemodified` int(10) NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `wikiid` (`wikiid`), - KEY `course` (`course`), - KEY `gropuid` (`groupid`), - KEY `userid` (`userid`), - KEY `pagename` (`pagename`) + PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT='Holds entries for each wiki start instance.'; CREATE TABLE `prefix_wiki_pages` ( - `id` int(10) unsigned NOT NULL auto_increment, `pagename` VARCHAR(160) NOT NULL, `version` INTEGER UNSIGNED NOT NULL DEFAULT 0, `flags` INTEGER UNSIGNED DEFAULT 0, @@ -62,6 +55,5 @@ CREATE TABLE `prefix_wiki_pages` ( `meta` MEDIUMTEXT, `hits` INTEGER UNSIGNED DEFAULT 0, `wiki` int(10) unsigned NOT NULL, - PRIMARY KEY `id` (`id`), - UNIQUE KEY `wiki_pages_uk` (`pagename`, `version`, `wiki`) + PRIMARY KEY id (pagename, version, wiki) ) TYPE=MyISAM COMMENT='Holds the Wiki-Pages'; diff --git a/mod/wiki/db/postgres7.php b/mod/wiki/db/postgres7.php index 80ceaf30dff..3d8d2bf9946 100644 --- a/mod/wiki/db/postgres7.php +++ b/mod/wiki/db/postgres7.php @@ -36,95 +36,6 @@ function wiki_upgrade($oldversion) { } } } - - if ($oldversion < 2004111200) { - execute_sql("DROP INDEX {$CFG->prefix}wiki_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}wiki_entries_wikiid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}wiki_entries_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}wiki_entries_groupid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}wiki_entries_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}wiki_entries_pagename_idx;",false); - - modify_database('','CREATE INDEX prefix_wiki_course_idx ON prefix_wiki (course);'); - modify_database('','CREATE INDEX prefix_wiki_entries_wikiid_idx ON prefix_wiki_entries (wikiid);'); - modify_database('','CREATE INDEX prefix_wiki_entries_userid_idx ON prefix_wiki_entries (userid);'); - modify_database('','CREATE INDEX prefix_wiki_entries_groupid_idx ON prefix_wiki_entries (groupid);'); - modify_database('','CREATE INDEX prefix_wiki_entries_course_idx ON prefix_wiki_entries (course);'); - modify_database('','CREATE INDEX prefix_wiki_entries_pagename_idx ON prefix_wiki_entries (pagename);'); - } - - - if ($oldversion < 2004112400) { - execute_sql("ALTER TABLE {$CFG->prefix}wiki_pages DROP CONSTRAINT id;",false); - execute_sql("ALTER TABLE {$CFG->prefix}wiki_pages DROP CONSTRAINT {$CFG->prefix}wiki_pages_id;",false); - execute_sql("ALTER TABLE {$CFG->prefix}wiki_pages DROP CONSTRAINT {$CFG->prefix}wiki_pages_pagename_version_wiki_unique;",false); - modify_database("", "ALTER TABLE ONLY prefix_wiki_pages - ADD CONSTRAINT prefix_wiki_pages_pagename_version_wiki_unique PRIMARY KEY (pagename, \"version\", wiki);"); - } - - if ($oldversion < 2005022000) { - // recreating the wiki_pages table completelly (missing id, bug 2608) - if ($rows = count_records("wiki_pages")) { - // we need to use the temp stuff - modify_database("","CREATE TABLE prefix_wiki_pages_tmp ( - id SERIAL8 PRIMARY KEY, - pagename VARCHAR(160) NOT NULL, - version INTEGER NOT NULL DEFAULT 0, - flags INTEGER DEFAULT 0, - content TEXT, - author VARCHAR(100) DEFAULT 'ewiki', - userid INTEGER NOT NULL DEFAULT 0, - created INTEGER DEFAULT 0, - lastmodified INTEGER DEFAULT 0, - refs TEXT, - meta TEXT, - hits INTEGER DEFAULT 0, - wiki INT8 NOT NULL);"); - - execute_sql("INSERT INTO {$CFG->prefix}wiki_pages_tmp (pagename, version, flags, content, - author, userid, created, lastmodified, - refs, meta, hits, wiki) - SELECT pagename, version, flags, content, - author, userid, created, lastmodified, - refs, meta, hits, wiki - FROM {$CFG->prefix}wiki_pages"); - - $insertafter = true; - } - - execute_sql("DROP TABLE {$CFG->prefix}wiki_pages"); - - modify_database("","CREATE TABLE prefix_wiki_pages ( - id SERIAL8 PRIMARY KEY, - pagename VARCHAR(160) NOT NULL, - version INTEGER NOT NULL DEFAULT 0, - flags INTEGER DEFAULT 0, - content TEXT, - author VARCHAR(100) DEFAULT 'ewiki', - userid INTEGER NOT NULL DEFAULT 0, - created INTEGER DEFAULT 0, - lastmodified INTEGER DEFAULT 0, - refs TEXT, - meta TEXT, - hits INTEGER DEFAULT 0, - wiki INT8 NOT NULL);"); - - modify_database("","CREATE UNIQUE INDEX prefix_wiki_pages_pagename_version_wiki_uk - ON prefix_wiki_pages (pagename, version, wiki);"); - - if (!empty($insertafter)) { - execute_sql("INSERT INTO {$CFG->prefix}wiki_pages (pagename, version, flags, content, - author, userid, created, lastmodified, - refs, meta, hits, wiki) - SELECT pagename, version, flags, content, - author, userid, created, lastmodified, - refs, meta, hits, wiki - FROM {$CFG->prefix}wiki_pages_tmp"); - - execute_sql("DROP TABLE {$CFG->prefix}wiki_pages_tmp"); - } - } - return true; } diff --git a/mod/wiki/db/postgres7.sql b/mod/wiki/db/postgres7.sql index fb699c634a1..47b0a9931f6 100644 --- a/mod/wiki/db/postgres7.sql +++ b/mod/wiki/db/postgres7.sql @@ -24,7 +24,6 @@ CREATE TABLE prefix_wiki ( timemodified INT8 NOT NULL default '0' ) ; -CREATE INDEX prefix_wiki_course_idx ON prefix_wiki (course); # # Table structure for table mdl_wiki_entries @@ -40,15 +39,8 @@ CREATE TABLE prefix_wiki_entries ( timemodified INT8 NOT NULL default '0' ) ; -CREATE INDEX prefix_wiki_entries_wikiid_idx ON prefix_wiki_entries (wikiid); -CREATE INDEX prefix_wiki_entries_userid_idx ON prefix_wiki_entries (userid); -CREATE INDEX prefix_wiki_entries_groupid_idx ON prefix_wiki_entries (groupid); -CREATE INDEX prefix_wiki_entries_course_idx ON prefix_wiki_entries (course); -CREATE INDEX prefix_wiki_entries_pagename_idx ON prefix_wiki_entries (pagename); - CREATE TABLE prefix_wiki_pages ( - id SERIAL8 PRIMARY KEY, pagename VARCHAR(160) NOT NULL, version INTEGER NOT NULL DEFAULT 0, flags INTEGER DEFAULT 0, @@ -63,4 +55,7 @@ CREATE TABLE prefix_wiki_pages ( wiki INT8 NOT NULL ) ; -CREATE UNIQUE INDEX prefix_wiki_pages_pagename_version_wiki_uk ON prefix_wiki_pages (pagename, version, wiki) ; +ALTER TABLE ONLY prefix_wiki_pages + ADD CONSTRAINT id PRIMARY KEY (pagename, version, wiki); + +CREATE INDEX prefix_wiki_pages_pagename_version_wiki_idx ON prefix_wiki_pages (pagename, version, wiki) ; diff --git a/mod/wiki/ewiki/ewiki.php b/mod/wiki/ewiki/ewiki.php index 0119e948b7f..91f5d20d264 100644 --- a/mod/wiki/ewiki/ewiki.php +++ b/mod/wiki/ewiki/ewiki.php @@ -235,7 +235,7 @@ "<" => "&lt;", ), "wm_source" => array( - "%%%" => "<br />", + "%%%" => "<br>", "\t" => " ", "\n;:" => "\n ", # workaround, replaces the old ;: ), @@ -341,8 +341,8 @@ "EDIT_FORM_1" => "<a href=\"".EWIKI_SCRIPT."GoodStyle\">GoodStyle</a> is to write what comes to your mind. Don't care about how it looks too much now. You can add <a href=\"".EWIKI_SCRIPT."WikiMarkup\">WikiMarkup</a> - also later if you think it is necessary.<br />", - "EDIT_FORM_2" => "<br />Please do not write things, which may make other + also later if you think it is necessary.<br>", + "EDIT_FORM_2" => "<br>Please do not write things, which may make other people angry. And please keep in mind that you are not all that anonymous in the internet (find out more about your computers '<a href=\"http://google.com/search?q=my+computers+IP+address\">IP address</a>' at Google).", @@ -378,8 +378,8 @@ "EDIT_FORM_1" => "<a href=\"".EWIKI_SCRIPT."BuenEstilo\">BuenEstilo</a> es escribir lo que viene a su mente. No se preocupe mucho por la apariencia. También puede agregar <a href=\"".EWIKI_SCRIPT."ReglasDeMarcadoWiki\">ReglasDeMarcadoWiki</a> - más adelante si piensa que es necesario.<br />", - "EDIT_FORM_2" => "<br />Por favor no escriba cosas, que puedan + más adelante si piensa que es necesario.<br>", + "EDIT_FORM_2" => "<br>Por favor no escriba cosas, que puedan enfadar a otras personas. Y por favor tenga en mente que usted no es del todo anónimo en Internet (encuentre más sobre @@ -406,7 +406,7 @@ zurück und speichere Deine Änderungen in der Zwischenablage (Bearbeiten->Kopieren) um sie dann wieder an der richtigen Stelle einzufügen, nachdem du die EditBoxSeite nocheinmal - geladen hast.<br /> + geladen hast.<br> Vielen Dank für Deine Mühe.", "ERRORSAVING" => "Beim Abspeichern ist ein Fehler aufgetreten. Bitte versuche es erneut.", "THANKSFORCONTRIBUTION" => "Vielen Dank für Deinen Beitrag!", @@ -421,8 +421,8 @@ Sinn kommt. Du solltest dich jetzt noch nicht so sehr darum kümmern, wie die Seite aussieht. Du kannst später immernoch zurückkommen und den Text mit <a href=\"".EWIKI_SCRIPT."FormatierungsRegeln\">WikiTextFormatierungsRegeln</a> - aufputschen.<br />", - "EDIT_FORM_2" => "<br />Bitte schreib keine Dinge, die andere Leute + aufputschen.<br>", + "EDIT_FORM_2" => "<br>Bitte schreib keine Dinge, die andere Leute verärgern könnten. Und bedenke auch, daß es schnell auf dich zurückfallen kann wenn du verschiedene andere Dinge sagst (mehr Informationen zur '<a href=\"http://google.de/search?q=computer+IP+adresse\">IP Adresse</a>' @@ -443,7 +443,7 @@ "InterWikiSearch" => "http://sunir.org/apps/meta.pl?", "Wiki" => "WardsWiki", "WardsWiki" => "http://www.c2.com/cgi/wiki?", - "WikiFind" => "http://c2.com/cgi/wiki?FindPage&amp;value=", + "WikiFind" => "http://c2.com/cgi/wiki?FindPage&value=", "WikiPedia" => "http://www.wikipedia.com/wiki.cgi?", "MeatBall" => "MeatballWiki", "MeatballWiki" => "http://www.usemod.com/cgi-bin/mb.pl?", @@ -479,12 +479,12 @@ function ewiki_page($id=false) { #-- selected page if (!isset($_REQUEST)) { - $_REQUEST = @array_merge($_GET, $_POST); + $_REQUEST = @array_merge($HTTP_GET_VARS, $HTTP_POST_VARS); } if (!strlen($id)) { $id = ewiki_id(); } - $id = format_string($id,true); + #-- page action $action = EWIKI_DEFAULT_ACTION; if ($delim = strpos($id, EWIKI_ACTION_SEP_CHAR)) { @@ -594,7 +594,6 @@ function ewiki_page($id=false) { $pf($o, $id, $data, $action); } } - (EWIKI_ESCAPE_AT) && ($o = str_replace("@", "&#x40;", $o)); return($o); @@ -731,11 +730,7 @@ function ewiki_page_view($id, &$data, $action, $all=1) { return($o); } #### MOODLE CHANGE - /// Add Moodle filters to text porion of wiki. - global $moodle_format; // from wiki/view.php - $o = format_text($o, $moodle_format); - $o.= "<br /><br />"; - + $o.= "<br><br>"; #-- control line + other per-page info stuff if ($pf_a = $ewiki_plugins["view_append"]) { ksort($pf_a); @@ -802,7 +797,6 @@ function ewiki_script($asid="", $id=false, $params="", $bin=0, $html=1, $script= $script = &$ewiki_config[!$bin?"script":"script_binary"]; } - #-- separate $action and $id for old style requests if ($id === false) { if (strpos($asid, EWIKI_ACTION_SEP_CHAR) !== false) { @@ -861,11 +855,7 @@ function ewiki_script($asid="", $id=false, $params="", $bin=0, $html=1, $script= #-- fin if ($html) { - //Don't replace & if it's part of encoded character (bug 2209) - $url = preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,5};)/","&amp;", $url); - } else { - //This is going to be used in some header or meta redirect, so It cannot use &amp; (bug 2620) - $url = preg_replace('/&amp;/', '&', $url); + $url = str_replace("&", "&amp;", $url); } return($url); } @@ -1011,7 +1001,7 @@ function ewiki_list_pages($pages=array(), $limit=EWIKI_LIST_LIMIT, $o = $pf_list($lines); } elseif($lines) { - $o = "&middot; " . implode("<br />\n&middot; ", $lines) . "<br />\n"; + $o = "&middot; " . implode("<br>\n&middot; ", $lines) . "<br>\n"; } return($o); @@ -1091,9 +1081,9 @@ function ewiki_page_search($id, &$data, $action) { if (! ($q = @$_REQUEST["q"])) { - $o .= '<form action="' . ewiki_script("", $id) . '" method="post">'; - $o .= '<input name="q" size="30" /><br /><br />'; - $o .= '<input type="submit" value="'.$id.'" />'; + $o .= '<form action="' . ewiki_script("", $id) . '" method="POST">'; + $o .= '<input name="q" size="30"><br><br>'; + $o .= '<input type="submit" value="'.$id.'">'; $o .= '</form>'; } else { @@ -1194,7 +1184,7 @@ function ewiki_page_info($id, &$data, $action) { continue; // MOODLE DOESN'T USE IT $str = ""; if ($first && $value) { foreach ($value as $n=>$d) { - $str .= htmlentities("$n: $d") . "<br />\n"; + $str .= htmlentities("$n: $d") . "<br>\n"; } } $value = $str; } @@ -1255,7 +1245,7 @@ function ewiki_page_info($id, &$data, $action) { $course->id = 1; } $picture = print_user_picture($user->id, $course->id, $user->picture, false, true, true); - $value = $picture." <a href=\"$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id\">".fullname($user)."</a>"; + $value = $picture." <a href=\"$CFG->wwwroot/user/view.php?id=$user->id&course=$course->id\">".fullname($user)."</a>"; } else { continue; //$value = @$current['author']; @@ -1274,7 +1264,7 @@ function ewiki_page_info($id, &$data, $action) { #-- page result split if ($v >= 1) { - $o .= "<br />\n show " . ewiki_chunked_page($this, $id, -1, $v+1, 1) . "\n <br />"; + $o .= "<br>\n show " . ewiki_chunked_page($this, $id, -1, $v+1, 1) . "\n <br>"; } return($o); @@ -1404,7 +1394,7 @@ function ewiki_page_edit($id, $data, $action) { if (!$pf || !$pf($id, $data)) { $error = 1; - $o .= ewiki_t("ERRVERSIONSAVE") . "<br /><br />"; + $o .= ewiki_t("ERRVERSIONSAVE") . "<br><br>"; } } @@ -1447,12 +1437,11 @@ function ewiki_page_edit($id, $data, $action) { #-- prevent double saving, when ewiki_page() is re-called $_REQUEST = $_GET = $_POST = array(); - $o = ewiki_t("THANKSFORCONTRIBUTION") . "<br /><br />"; + $o = ewiki_t("THANKSFORCONTRIBUTION") . "<br><br>"; $o .= ewiki_page($id); if (EWIKI_EDIT_REDIRECT) { $url = ewiki_script("", $id, "thankyou=1", 0, 0, EWIKI_HTTP_HEADERS?ewiki_script_url():0); - if (EWIKI_HTTP_HEADERS && !headers_sent()) { header("Status: 303 Redirect for GET"); header("Location: $url"); @@ -1504,8 +1493,7 @@ function ewiki_data_update(&$data, $author="") { #-- edit <textarea> function ewiki_page_edit_form(&$id, &$data, &$hidden_postdata) { global $ewiki_plugins, $ewiki_config; - - $o=''; + $o=""; #-- previously edited, or db fetched content if (@$_REQUEST["content"] || @$_REQUEST["version"]) { @@ -1530,13 +1518,13 @@ function ewiki_page_edit_form(&$id, &$data, &$hidden_postdata) { #-- edit textarea/form $o .= ewiki_t("EDIT_FORM_1") - . '<form method="post" enctype="multipart/form-data" action="' + . '<form method="POST" enctype="multipart/form-data" action="' . ewiki_script("edit", $id) . '" name="ewiki"' . ' accept-charset="'.EWIKI_CHARSET.'">' . "\n"; #-- additional POST vars foreach ($hidden_postdata as $name => $value) { - $o .= '<input type="hidden" name="'.$name.'" value="'.$value.'" />'."\n"; + $o .= '<input type="hidden" name="'.$name.'" value="'.$value.'">'."\n"; } if (EWIKI_CHARSET=="UTF-8") { @@ -1548,9 +1536,7 @@ function ewiki_page_edit_form(&$id, &$data, &$hidden_postdata) { if($ewiki_use_editor) { ob_start(); $usehtmleditor = can_use_html_editor(); - echo '<table><tr><td>'; print_textarea($usehtmleditor, $rows, $cols, 680, 400, "content", ewiki_format($data["content"])); - echo '</td></tr></table>'; if ($usehtmleditor) { use_html_editor("content"); } @@ -1573,10 +1559,10 @@ function ewiki_page_edit_form(&$id, &$data, &$hidden_postdata) { } ##### BEGIN MOODLE ADDITION (Cancel Editing into Button) ##### - $o .= "\n<br />\n" - . '<input type="submit" name="save" value="'. ewiki_t("SAVE") . '" />'."\n" - . '<input type="submit" name="preview" value="'. ewiki_t("PREVIEW") . '" />' . "\n" - . '<input type="submit" name="canceledit" value="'. ewiki_t("CANCEL_EDIT") . '" />' . "\n"; + $o .= "\n<br>\n" + . '<input type="submit" name="save" value="'. ewiki_t("SAVE") . '">'."\n" + . '<input type="submit" name="preview" value="'. ewiki_t("PREVIEW") . '">' . "\n" + . '<input type="submit" name="canceledit" value="'. ewiki_t("CANCEL_EDIT") . '">' . "\n"; # . ' &nbsp; <a href="'. ewiki_script("", $id) . '">' . ewiki_t("CANCEL_EDIT") . '</a>'; ##### END MOODLE ADDITION ##### @@ -1588,7 +1574,7 @@ function ewiki_page_edit_form(&$id, &$data, &$hidden_postdata) { $o .= "\n</form>\n"; // . ewiki_t("EDIT_FORM_2"); // MOODLE DELETION - return('<div align="center" class="edit-box">'. $o .'</div>'); + return('<div class="edit-box">'. $o .'</div>'); } @@ -1596,16 +1582,15 @@ function ewiki_page_edit_form(&$id, &$data, &$hidden_postdata) { #-- pic upload form function ewiki_page_edit_form_final_imgupload(&$o, &$id, &$data, &$action) { if (EWIKI_SCRIPT_BINARY && EWIKI_UP_UPLOAD && EWIKI_IMAGE_MAXSIZE) { - $o .= "\n<br />\n". '<div class="image-upload">' + $o .= "\n<br>\n". '<div class="image-upload">' . '<form action=' . '"'. ewiki_script_binary("", EWIKI_IDF_INTERNAL, "", "_UPLOAD=1") .'"' - . ' method="post" enctype="multipart/form-data" target="_upload">' - . '<input type="hidden" name="MAX_FILE_SIZE" value="'.EWIKI_IMAGE_MAXSIZE.'" />' + . ' method="POST" enctype="multipart/form-data" target="_upload">' . '<input type="file" name="'.EWIKI_UP_UPLOAD.'"' - . (defined("EWIKI_IMAGE_ACCEPT") ? ' accept="'.EWIKI_IMAGE_ACCEPT.'" />' : " />") - . '<input type="hidden" name="'.EWIKI_UP_BINARY.'" value="'.EWIKI_IDF_INTERNAL.'" />' + . (defined("EWIKI_IMAGE_ACCEPT") ? ' accept="'.EWIKI_IMAGE_ACCEPT.'">' : "") + . '<input type="hidden" name="'.EWIKI_UP_BINARY.'" value="'.EWIKI_IDF_INTERNAL.'">' . '&nbsp;&nbsp;&nbsp;' - . '<input type="submit" value="'.ewiki_t("UPLOAD_PICTURE_BUTTON").'" />' + . '<input type="submit" value="'.ewiki_t("UPLOAD_PICTURE_BUTTON").'">' . '</form></div>'. "\n"; } } @@ -1617,9 +1602,9 @@ function ewiki_page_edit_preview(&$data) { $preview_text=$GLOBALS["ewiki_plugins"]["render"][0]($_REQUEST["content"], 1, EWIKI_ALLOW_HTML || (@$data["flags"]&EWIKI_DB_F_HTML)); return( '<div class="preview">' . "<hr noshade>" - . "<div align=\"right\">" . ewiki_t("PREVIEW") . "</div><hr noshade><br />\n" + . "<div align=\"right\">" . ewiki_t("PREVIEW") . "</div><hr noshade><br>\n" . format_text($preview_text, $moodle_format) - . "<br /><br /><hr noshade><br />" + . "<br><br><hr noshade><br>" . "</div>" ); #### END MOODLE CHANGES @@ -1638,15 +1623,15 @@ function ewiki_control_links($id, &$data, $action) { $o = "\n" . '<div align="right" class="action-links control-links">' - . "\n<br />\n" + . "\n<br>\n" . "<hr noshade>" . "\n"; if (@$data["forced_version"]) { - $o .= '<form action="' . ewiki_script("edit", $id) . '" method="post">' . - '<input type="hidden" name="edit" value="old" />' . - '<input type="hidden" name="version" value="'.$data["forced_version"].'" />' . - '<input type="submit" value="' . ewiki_t("OLDVERCOMEBACK") . '" /></form> '; + $o .= '<form action="' . ewiki_script("edit", $id) . '" method="POST">' . + '<input type="hidden" name="edit" value="old">' . + '<input type="hidden" name="version" value="'.$data["forced_version"].'">' . + '<input type="submit" value="' . ewiki_t("OLDVERCOMEBACK") . '"></form> '; } else { foreach ($action_links as $action => $title) @@ -1923,17 +1908,6 @@ function ewiki_format ( } - #-- text style triggers - foreach ($wm_style as $find=>$replace) { - $find_len = strlen($find); - $loop = 20; - while(($loop--) && (($l = strpos($line, $find)) !== false) && ($r = strpos($line, $find, $l + $find_len))) { - $line = substr($line, 0, $l) . $replace[0] . - substr($line, $l + strlen($find), $r - $l - $find_len) . - $replace[1] . substr($line, $r + $find_len); - } - } - #-- list markup if (isset($wm_list[$c0])) { @@ -2002,6 +1976,17 @@ function ewiki_format ( } + #-- text style triggers + foreach ($wm_style as $find=>$replace) { + $find_len = strlen($find); + $loop = 20; + while(($loop--) && (($l = strpos($line, $find)) !== false) && ($r = strpos($line, $find, $l + $find_len))) { + $line = substr($line, 0, $l) . $replace[0] . + substr($line, $l + strlen($find), $r - $l - $find_len) . + $replace[1] . substr($line, $r + $find_len); + } + } + #-- start-end markup foreach ($wm_start_end as $d) { $len0 = strlen($d[0]); @@ -2268,7 +2253,6 @@ function ewiki_link_regex_callback($uu, $force_noimg=0) { if (strpos("://", $title) || strpos($title, ":") && !strpos($href, ":")) { $uu = $title; $title = $href; $href = $uu; } - #-- new entitling scheme [ url "title" ] if ((($l=strpos($str, '"')) < ($r=strrpos($str, '"'))) && ($l!==false) ) { $title = substr($str, $l + 1, $r - $l - 1); @@ -2302,6 +2286,7 @@ function ewiki_link_regex_callback($uu, $force_noimg=0) { $href = $ewiki_id; } + #-- for case-insensitivines $href_i = EWIKI_CASE_INSENSITIVE ? strtolower($href) : ($href); @@ -2416,7 +2401,7 @@ function ewiki_link_regex_callback($uu, $force_noimg=0) { ' alt="' . ($title) . '"' . (@$states["titled"] ? ' title="' . ($title) . '"' : ''). ($x && $y ? " width=\"$x\" height=\"$y\"" : "") . - $align . " />" . ($obj ? "</embed>" : ""); + $align . ">" . ($obj ? "</embed>" : ""); # htmlentities($title) } @@ -2550,9 +2535,9 @@ function ewiki_binary($break=0) { <html><head><title>File/Picture Upload</title><script language="JavaScript" type="text/javascript"><!-- opener.document.forms["ewiki"].elements["content"].value += "\\nUPLOADED PICTURE: [$id$title]\\n"; window.setTimeout("self.close()", 5000); -//--></script></head><body bgcolor="#440707" text="#FFFFFF">Your uploaded file was saved as<br /><big><b> +//--></script></head><body bgcolor="#440707" text="#FFFFFF">Your uploaded file was saved as<br><big><b> [$id] -</b></big>.<br /><br /><noscript>Please copy this &uarr; into the text input box:<br />select/mark it with your mouse, press [Ctrl]+[Insert], go back<br />to the previous screen and paste it into the textbox by pressing<br />[Shift]+[Insert] inside there.</noscript></body></html> +</b></big>.<br><br><noscript>Please copy this &uarr; into the text input box:<br>select/mark it with your mouse, press [Ctrl]+[Insert], go back<br>to the previous screen and paste it into the textbox by pressing<br>[Shift]+[Insert] inside there.</noscript></body></html> EOF; } } @@ -2897,7 +2882,7 @@ function ewiki_log($msg, $error_type=3) { if ((EWIKI_LOGLEVEL >= 0) && ($error_type <= EWIKI_LOGLEVEL)) { $msg = time() . " - " . - getremoteaddr() . ":" . $_SERVER["REMOTE_PORT"] . " - " . + $_SERVER["REMOTE_ADDR"] . ":" . $_SERVER["REMOTE_PORT"] . " - " . $_SERVER["REQUEST_METHOD"] . " " . $_SERVER["REQUEST_URI"] . " - " . strtr($msg, "\n\r\000\377\t\f", "\r\r\r\r\t\f") . "\n"; error_log($msg, 3, EWIKI_LOGFILE); @@ -2993,7 +2978,7 @@ function ewiki_array($array, $key=false, $am=1, $ci=EWIKI_CASE_INSENSITIVE) { function ewiki_author($defstr="") { $author = @$GLOBALS["ewiki_author"]; - ($ip = getremoteaddr()) or ($ip = "127.0.0.0"); + ($ip = &$_SERVER["REMOTE_ADDR"]) or ($ip = "127.0.0.0"); ($port = $_SERVER["REMOTE_PORT"]) or ($port = "null"); $hostname = gethostbyaddr($ip); $remote = (($ip != $hostname) ? $hostname . " " : "") @@ -3028,7 +3013,7 @@ function ewiki_auth($id, &$data, $action, $ring=false, $request_auth=0) { $ok = true; $ewiki_errmsg=""; -#echo "_a($id,dat,$action,$ring,$request_auth)<br />\n"; +#echo "_a($id,dat,$action,$ring,$request_auth)<br>\n"; if (EWIKI_PROTECTED_MODE) { @@ -3179,7 +3164,7 @@ function ewiki_eventually_initialize(&$id, &$data, &$action) { closedir($dh); } else { - echo "<b>ewiki error</b>: could not read from directory ". realpath($path) ."<br />\n"; + echo "<b>ewiki error</b>: could not read from directory ". realpath($path) ."<br>\n"; } } #### END MOODLE CHANGE diff --git a/mod/wiki/ewiki/plugins/aview/backlinks.php b/mod/wiki/ewiki/plugins/aview/backlinks.php index 110dbaf477e..9977548f1b8 100755 --- a/mod/wiki/ewiki/plugins/aview/backlinks.php +++ b/mod/wiki/ewiki/plugins/aview/backlinks.php @@ -15,7 +15,7 @@ function ewiki_view_append_backlinks($id, $data, $action) { foreach ($pages as $id) { $o .= ' <a href="'.ewiki_script("",$id).'">'.$id.'</a>'; } - ($o) && ($o = "<div class=\"wiki_backlinks\"><small>".get_string('backlinks', 'wiki').":</small><br />$o</div>\n"); + ($o) && ($o = "<div class=\"wiki_backlinks\"><small>".get_string('backlinks', 'wiki').":</small><br>$o</div>\n"); return($o); } diff --git a/mod/wiki/ewiki/plugins/aview/downloads.php b/mod/wiki/ewiki/plugins/aview/downloads.php index efb744ae191..d0455c49ead 100644 --- a/mod/wiki/ewiki/plugins/aview/downloads.php +++ b/mod/wiki/ewiki/plugins/aview/downloads.php @@ -19,31 +19,25 @@ $ewiki_t["de"]["ATTACHMENTS"] = "Anh function ewiki_view_append_attachments($id, $data, $action) { - $o = '<hr /><h4><a href="' . ewiki_script(EWIKI_ACTION_ATTACHMENTS, $id) . + $o = '<hr><h4><a href="' . ewiki_script(EWIKI_ACTION_ATTACHMENTS, $id) . '">' . ewiki_t("ATTACHMENTS") . '</a></h4>'; $scan = 's:7:"section";' . serialize($id); $result = ewiki_database("SEARCH", array("meta" => $scan)); -#### BEGIN MOODLE CHANGES - show attachments link only if there are attachments. -#### - don't show the attachments on the content page. - if (count($result->entries) <= 0) { - $o = ''; + $ord = array(); + while ($row = $result->get()) { + $ord[$row["id"]] = $row["created"]; + } + arsort($ord); + + foreach ($ord as $id => $uu) { + $row = ewiki_database("GET", array("id"=>$id)); + if (EWIKI_PROTECTED_MODE && EWIKI_PROTECTED_MODE_HIDING && !ewiki_auth($row["id"], $row, "view")) { + continue; + } + $o .= ewiki_entry_downloads($row, "*"); } -// $ord = array(); -// while ($row = $result->get()) { -// $ord[$row["id"]] = $row["created"]; -// } -// arsort($ord); -// -// foreach ($ord as $id => $uu) { -// $row = ewiki_database("GET", array("id"=>$id)); -// if (EWIKI_PROTECTED_MODE && EWIKI_PROTECTED_MODE_HIDING && !ewiki_auth($row["id"], $row, "view")) { -// continue; -// } -// $o .= ewiki_entry_downloads($row, "*"); -// } -#### END MOODLE CHANGES return($o); } @@ -58,4 +52,4 @@ function ewiki_attachments() { -?> +?> \ No newline at end of file diff --git a/mod/wiki/ewiki/plugins/email_protect.php b/mod/wiki/ewiki/plugins/email_protect.php index e7673079a16..9c684b2b150 100644 --- a/mod/wiki/ewiki/plugins/email_protect.php +++ b/mod/wiki/ewiki/plugins/email_protect.php @@ -118,21 +118,21 @@ (empty($url)) and ($url = ewiki_script("", EWIKI_PAGE_EMAIL)); - $html .= ewiki_t($text) . "<br /><br /><br />\n"; + $html .= ewiki_t($text) . "<br><br><br>\n"; $html .= '<form action="' . $url . '" method="POST" enctype="multipart/form-data" encoding="iso-8859-1">'; - $html .= '<input type="hidden" name="'.EWIKI_UP_ENCEMAIL.'" value="' . $email . '" />'; + $html .= '<input type="hidden" name="'.EWIKI_UP_ENCEMAIL.'" value="' . $email . '">'; foreach (array_merge($_GET, $_POST) as $var=>$value) { if (($var != "id") && ($var != EWIKI_UP_ENCEMAIL) && ($var != EWIKI_UP_NOSPAMBOT)) { - $html .= '<input type="hidden" name="' . htmlentities($var) . '" value="' . htmlentities($value) . '" />'; + $html .= '<input type="hidden" name="' . htmlentities($var) . '" value="' . htmlentities($value) . '">'; } } - $html .= '<input type="checkbox" name="'.EWIKI_UP_NOSPAMBOT.'" value="true" /> ' . ewiki_t("PROTE4") . '<br /><br />'; - $html .= '<input type="submit" name="go" /></form><br /><br />'; + $html .= '<input type="checkbox" name="'.EWIKI_UP_NOSPAMBOT.'" value="true"> ' . ewiki_t("PROTE4") . '<br><br>'; + $html .= '<input type="submit" name="go"></form><br><br>'; if (EWIKI_FAKE_EMAIL_LOOP) { - $html .= "\n" . ewiki_t("PROTE7") . "<br />\n"; + $html .= "\n" . ewiki_t("PROTE7") . "<br>\n"; $html .= ewiki_email_protect_feedbots(); } @@ -141,7 +141,7 @@ $email = ewiki_email_protect_encode($email, -1); - $html .= ewiki_t("PROTE6") . "<br />"; + $html .= ewiki_t("PROTE6") . "<br>"; $html .= '<a href="mailto:' . $email . '">' . $email . '</a>'; if (EWIKI_HTTP_HEADERS && empty($_COOKIE[EWIKI_UP_NOSPAMBOT])) { @@ -206,7 +206,7 @@ if (!defined("STR_ROT17")) { $i = @$_SERVER["SERVER_SOFTWARE"] . @$_SERVER["HTTP_USER_AGENT"] . - getremoteaddr(); + @$_SERVER["REMOTE_ADDR"]; $i .= 'MxQXF^e-0OKC1\\s{\"?i!8PRoNnljHf65`Eb&A(\':g[D}_|S#~3hG>*9yvdI%<=.urcp/@$ZkqL,TWBw]a;72UzYJ)4mt+ V'; $f = ""; while (strlen($i)) { @@ -263,7 +263,7 @@ switch ($dom = $domains[rand(0, $n_dom)]) { case "123webhosting.org": - $m = strtr(".", "-", getremoteaddr())."-".$_SERVER["SERVER_NAME"]."-".time(); + $m = strtr(".", "-", $_SERVER["REMOTE_ADDR"])."-".$_SERVER["SERVER_NAME"]."-".time(); break; default: @@ -276,13 +276,13 @@ $html .= '<a href="mailto:'.$traps[rand(0, $n_trp)].'">'.$traps[rand(0, $n_trp)].'</a>'; if (($rl = 1 + @$_REQUEST[EWIKI_UP_REQUESTLV]) < EWIKI_FAKE_EMAIL_LOOP) { - $html .= ",\n" . '<br /><a href="' . + $html .= ",\n" . '<br><a href="' . ewiki_script("", EWIKI_PAGE_EMAIL, array( EWIKI_UP_ENCEMAIL=>ewiki_email_protect_encode($m, 1), EWIKI_UP_REQUESTLV=>"$rl" ) - ) . '">' . ewiki_t("PROTE5") . '</a><br />' . "\n"; + ) . '">' . ewiki_t("PROTE5") . '</a><br>' . "\n"; ($rl > 1) && sleep(3); } @@ -302,4 +302,4 @@ } -?> +?> \ No newline at end of file diff --git a/mod/wiki/ewiki/plugins/init.php b/mod/wiki/ewiki/plugins/init.php index 2359c5a9d08..1f5ac26dbc1 100644 --- a/mod/wiki/ewiki/plugins/init.php +++ b/mod/wiki/ewiki/plugins/init.php @@ -36,23 +36,23 @@ function ewiki_initialization_wizard($id, &$data, &$action) { elseif (empty($_REQUEST["init"])) { $o = "<h2>WikiSetupWizard</h2>\n"; - $o .= "You don't have any pages in your Wiki yet, so we should try to read-in the default ones from <tt>init-pages/</tt> now.<br /><br />"; + $o .= "You don't have any pages in your Wiki yet, so we should try to read-in the default ones from <tt>init-pages/</tt> now.<br><br>"; $o .= '<a href="'.ewiki_script("",$id,array("init"=>"now")).'">[InitializeWikiDatabase]</a>'; $o .= " &nbsp; "; $o .= '<a href="'.ewiki_script("",$id,array("abort"=>"this")).'">[NoThanks]</a>'; - $o .= "<br /><br />"; + $o .= "<br><br>"; #-- analyze and print settings and misconfigurations $pf_db = $ewiki_plugins["database"][0]; $db = substr($pf_db, strrpos($pf_db, "_") + 1); $o .= '<table border="0" width="90%" class="diagnosis">'; $o .= '<tr><td>DatabaseBackend</td><td>'; - $o .= "<b>" . $db . "</b><br />"; + $o .= "<b>" . $db . "</b><br>"; if ($db == "files") { $o .= "<small>_DBFILES_DIR='</small><tt>" . EWIKI_DBFILES_DIRECTORY . "'</tt>"; if (strpos(EWIKI_DBFILES_DIRECTORY, "tmp")) { - $o .= "<br /><b>Warning</b>: Storing your pages into a temporary directory is not what you want (there they would get deleted randomly), except for testing purposes of course. See the README."; + $o .= "<br><b>Warning</b>: Storing your pages into a temporary directory is not what you want (there they would get deleted randomly), except for testing purposes of course. See the README."; } } else { @@ -65,10 +65,10 @@ function ewiki_initialization_wizard($id, &$data, &$action) { #-- more diagnosis if (ini_get("magic_quotes")) { - $o.= "<b>Warning</b>: Your PHP interpreter has enabled the ugly and outdated '<i>magic_quotes</i>'. This will lead to problems, so please ask your provider to correct it; or fix it yourself with .htaccess settings as documented in the README. Otherwise don't forget to include() the <tt>fragments/strip_wonderful_slashes.php</tt> (it's ok to proceed for the moment).<br /><br />"; + $o.= "<b>Warning</b>: Your PHP interpreter has enabled the ugly and outdated '<i>magic_quotes</i>'. This will lead to problems, so please ask your provider to correct it; or fix it yourself with .htaccess settings as documented in the README. Otherwise don't forget to include() the <tt>fragments/strip_wonderful_slashes.php</tt> (it's ok to proceed for the moment).<br><br>"; } if (ini_get("register_globals")) { - $o.= "<b>Security warning</b>: The horrible '<i>register_globals</i>' setting is enabled. Without always using <tt>fragments/strike_register_globals.php</tt> or letting your provider fix that, you could get into trouble some day.<br /><br />"; + $o.= "<b>Security warning</b>: The horrible '<i>register_globals</i>' setting is enabled. Without always using <tt>fragments/strike_register_globals.php</tt> or letting your provider fix that, you could get into trouble some day.<br><br>"; } return('<div class="wiki view WikiSetupWizard">' . $o . '</div>'); @@ -103,7 +103,7 @@ function ewiki_initialization_wizard($id, &$data, &$action) { closedir($dh); } else { - return("<b>ewiki error</b>: could not read from directory ". realpath($path) ."<br />\n"); + return("<b>ewiki error</b>: could not read from directory ". realpath($path) ."<br>\n"); } #-- try to view/ that newly inserted page diff --git a/mod/wiki/ewiki/plugins/markup/footnotes.php b/mod/wiki/ewiki/plugins/markup/footnotes.php index 8c853d04cd8..6f9021d8937 100755 --- a/mod/wiki/ewiki/plugins/markup/footnotes.php +++ b/mod/wiki/ewiki/plugins/markup/footnotes.php @@ -52,7 +52,7 @@ function ewiki_format_source_footnotes (&$source) { $source .= "\n----"; } $source .= "\n" . - "<a name=\"fn$notenum\">·$notenum</a> ". $footnote . "\n<br />"; + "<a name=\"fn$notenum\">·$notenum</a> ". $footnote . "\n<br>"; } } diff --git a/mod/wiki/ewiki/plugins/moodle/diff.php b/mod/wiki/ewiki/plugins/moodle/diff.php index 9e444bd5d48..bd09eba1983 100755 --- a/mod/wiki/ewiki/plugins/moodle/diff.php +++ b/mod/wiki/ewiki/plugins/moodle/diff.php @@ -34,25 +34,12 @@ # Different handling for html: closes Bug #1530 - Wiki diffs useless when using HTML editor if($wiki->htmlmode==2) { - /// Remove all new line characters. They will be placed at HTML line breaks. - $content0 = preg_replace('/\n|\r/i', ' ', $data0['content']); - $content0 = preg_replace('/(\S)\s+(\S)/', '$1 $2', $content0); // Remove multiple spaces. - $content = preg_replace('/\n|\r/i', ' ', $data['content']); - $content = preg_replace('/(\S)\s+(\S)/', '$1 $2', $content); - - /// Replace <p>&nbsp;</p> - $content0 = preg_replace('#(<p.*>(&nbsp;|\s+)</p>|<p.*></p>)#i', "\n", $content0); - $content = preg_replace('#(<p.*>(&nbsp;|\s+)</p>|<p.*></p>)#i', "\n", $content); - - /// Place new line characters at logical HTML positions. - $htmlendings = array('+(<br.*>)+iU', '+(<p.*>)+iU', '+(</p>)+i', '+(<hr.*>)+iU', '+(<ol.*>)+iU', - '+(</ol>)+i', '+(<ul.*>)+iU', '+(</ul>)+i', '+(<li.*>)+iU', '+(</li>)+i', - '+(</tr>)+i', '+(<div.*>)+iU', '+(</div>)+i'); - $htmlrepl = array("\n\$1\n", "\n\$1\n", "\n\$1\n", "\n\$1\n", "\n\$1\n", - "\n\$1\n", "\n\$1\n", "\n\$1\n", "\n\$1\n", "\n\$1\n", - "\n\$1\n", "\n\$1\n", "\n\$1\n"); - $content0 = preg_replace($htmlendings, $htmlrepl, $content0); - $content = preg_replace($htmlendings, $htmlrepl, $content); + $htmlendings=array("<br />","<br>","<p>","</p>","<p />","<hr />","<hr>","</li>","</tr>"); + /// Replace <p>&nbsp;</p> + $content0=preg_replace("+<p>&nbsp;</p>+i","\n",$data0["content"]); + $content0=preg_replace("+(".join("|",$htmlendings).")+","\n",$content0); + $content=preg_replace("+<p>&nbsp;</p>+i","\n",$data["content"]); + $content=preg_replace("+(".join("|",$htmlendings).")+","\n",$content); } else { $content0=$data0["content"]; $content=$data["content"]; @@ -71,42 +58,63 @@ ///print "</pre>"; ///exit; + /// Remove empty lines in html + if($wiki->htmlmode==2) { + $html0=$txt0; + $html2=$txt2; + $txt0=array(); + $txt2=array(); + + for($i=0;$i<count($html0);$i++) { +# $linecontent=trim(strip_tags(preg_replace("+&nbsp;+","",$html0[$i]))); +# if($linecontent) { // There is something ! + $txt0[]=$html0[$i]; +# } + } + for($i=0;$i<count($html2);$i++) { +# $linecontent=trim(strip_tags(preg_replace("+&nbsp;+","",$html2[$i]))); +# if($linecontent) { // There is something ! + $txt2[]=$html2[$i]; +# } + } + } + $diff0 = array_diff($txt0, $txt2); $diff2 = array_diff($txt2, $txt0); foreach ($txt2 as $i => $line) { -// if($wiki->htmlmode != 2) { -// $line = htmlentities($line); -// } + if($wiki->htmlmode != 2) { + $line = htmlentities($line); + } $i2 = $i; while ($rm = $diff0[$i2++]) { if($wiki->htmlmode == 2) { - $o .= "<b>-</b><font color=\"#990000\">$rm</font><br />\n"; + $o .= "<b>-</b><font color=\"#990000\">$rm</font><br>\n"; } else { - $o .= "<b>-</b><font color=\"#990000\"><tt>$rm</tt></font><br />\n"; + $o .= "<b>-</b><font color=\"#990000\"><tt>$rm</tt></font><br>\n"; } unset($diff0[$i2-1]); } if (in_array($line, $diff2)) { if($wiki->htmlmode == 2) { - $o .= "<b>+</b><font color=\"#009900\">$line</font><br />\n"; + $o .= "<b>+</b><font color=\"#009900\">$line</font><br>\n"; } else { - $o .= "<b>+</b><font color=\"#009900\"><tt>$line</tt></font><br />\n"; + $o .= "<b>+</b><font color=\"#009900\"><tt>$line</tt></font><br>\n"; } } else { if($wiki->htmlmode == 2) { - $o .= "$line\n"; + $o .= "$line<br>\n"; } else { - $o .= "&nbsp; $line<br />\n"; + $o .= "&nbsp; $line<br>\n"; } } } foreach ($diff0 as $rm) { - $o .= "<b>-</b><font color=\"#990000\"> <tt>$rm</tt></font><br />\n"; + $o .= "<b>-</b><font color=\"#990000\"> <tt>$rm</tt></font><br>\n"; } return($o); diff --git a/mod/wiki/ewiki/plugins/moodle/downloads.php b/mod/wiki/ewiki/plugins/moodle/downloads.php index 6d05d3eaeb2..e22ed6f9eee 100644 --- a/mod/wiki/ewiki/plugins/moodle/downloads.php +++ b/mod/wiki/ewiki/plugins/moodle/downloads.php @@ -1,6 +1,6 @@ <?php require_once("../../config.php"); - require_once($CFG->libdir.'/filelib.php'); + require_once("$CFG->dirroot/files/mimetypes.php"); # this is the upload/download plugin, which allows to put arbitrary binary # files into the ewiki database using the provided specialized form, or the @@ -47,52 +47,52 @@ $ewiki_upload_sections = array( #-- text, translations -$ewiki_t["en"]["UPLOAD0"] = "Use this form to upload an arbitrary binary file into the wiki:<br />"; +$ewiki_t["en"]["UPLOAD0"] = "Use this form to upload an arbitrary binary file into the wiki:<br>"; $ewiki_t["en"]["UPL_NEWNAM"] = "Save with different filename"; $ewiki_t["en"]["UPL_INSECT"] = "Upload into section"; $ewiki_t["en"]["UPL_TOOLARGE"] = "Your upload has been rejected, because that file was too large!"; -$ewiki_t["en"]["UPL_REJSECT"] = 'The given download section "$sect" has been rejected. Please only use the default ones, or tell the WikiAdmin to reenable per-page uploads; else others can\'t find your uploaded files easily.<br /><br />'; -$ewiki_t["en"]["UPL_OK"] = "Your file was uploaded correctly, please see <a href=\"\$script".EWIKI_PAGE_DOWNLOAD."\">".EWIKI_PAGE_DOWNLOAD."</a>.<br /><br />"; -$ewiki_t["en"]["UPL_ERROR"] = "We're sorry, but something went wrong during the file upload.<br /><br />"; -$ewiki_t["en"]["DWNL_SEEUPL"] = 'See also <a href="$script'.EWIKI_PAGE_UPLOAD.'">FileUpload</a>, this page is only about downloading.<br /><br />'; -$ewiki_t["en"]["DWNL_NOFILES"] = "No files uploaded yet.<br />\n"; +$ewiki_t["en"]["UPL_REJSECT"] = 'The given download section "$sect" has been rejected. Please only use the default ones, or tell the WikiAdmin to reenable per-page uploads; else others can\'t find your uploaded files easily.<br><br>'; +$ewiki_t["en"]["UPL_OK"] = "Your file was uploaded correctly, please see <a href=\"\$script".EWIKI_PAGE_DOWNLOAD."\">".EWIKI_PAGE_DOWNLOAD."</a>.<br><br>"; +$ewiki_t["en"]["UPL_ERROR"] = "We're sorry, but something went wrong during the file upload.<br><br>"; +$ewiki_t["en"]["DWNL_SEEUPL"] = 'See also <a href="$script'.EWIKI_PAGE_UPLOAD.'">FileUpload</a>, this page is only about downloading.<br><br>'; +$ewiki_t["en"]["DWNL_NOFILES"] = "No files uploaded yet.<br>\n"; $ewiki_t["en"]["file"] = "File"; $ewiki_t["en"]["of"] = "of"; $ewiki_t["en"]["comment"] = "Comment"; $ewiki_t["en"]["dwnl_section"] = "download section"; $ewiki_t["en"]["DWNL_ENTRY_FORMAT"] = - '<div class="download"><a href="$url">$icon$title</a><small>$size<br />'. - 'uploaded on <b>$time</b>, downloaded <tt>$hits</tt> times<br />'. - '(<a href="$url">$id</a>)<br />'. + '<div class="download"><a href="$url">$icon$title</a><small>$size<br>'. + 'uploaded on <b>$time</b>, downloaded <tt>$hits</tt> times<br>'. + '(<a href="$url">$id</a>)<br>'. '$section'.'file is of type <tt>$type</tt>'. - '$comment'."</small></div><br />\n"; + '$comment'."</small></div><br>\n"; -$ewiki_t["de"]["UPLOAD0"] = "Mit diesem Formular kannst du beliebige Dateien in das Wiki abspeichern:<br />"; +$ewiki_t["de"]["UPLOAD0"] = "Mit diesem Formular kannst du beliebige Dateien in das Wiki abspeichern:<br>"; $ewiki_t["de"]["UPL_NEWNAM"] = "Mit unterschiedlichem Dateinamen speichern"; $ewiki_t["de"]["UPL_INSECT"] = "Hochladen in Bereich:"; $ewiki_t["de"]["UPL_TOOLARGE"] = "Deine Datei wurde nicht aufgenommen, weil sie zu groß war!"; -$ewiki_t["de"]["UPL_REJSECT"] = 'Der angegebene Download-Bereich "$sect" wird nicht verwendet. Bitte verwende einen von den voreingestellten Bereichen, damit Andere die Datei später auch finden können, oder frag den Administrator das Hochladen für beliebige Seiten zu aktivieren.<br /><br />'; -$ewiki_t["de"]["UPL_OK"] = "Deine Datei wurde korrekt hochgeladen, sehe einfach auf der <a href=\"\$script".EWIKI_PAGE_DOWNLOAD."\">".EWIKI_PAGE_DOWNLOAD."</a> nach.<br /><br />"; -$ewiki_t["de"]["UPL_ERROR"] = "'Tschuldige, aber irgend etwas ist während des Hochladens gründlich schief gelaufen.<br /><br />"; -$ewiki_t["de"]["DWNL_SEEUPL"] = 'Siehe auch <a href="$script'.EWIKI_PAGE_UPLOAD.'">DateiHochladen</a>, auf dieser Seite stehen nur die Downloads.<br /><br />'; -$ewiki_t["de"]["DWNL_NOFILES"] = "Noch keine Dateien hochgeladen.<br />\n"; +$ewiki_t["de"]["UPL_REJSECT"] = 'Der angegebene Download-Bereich "$sect" wird nicht verwendet. Bitte verwende einen von den voreingestellten Bereichen, damit Andere die Datei später auch finden können, oder frag den Administrator das Hochladen für beliebige Seiten zu aktivieren.<br><br>'; +$ewiki_t["de"]["UPL_OK"] = "Deine Datei wurde korrekt hochgeladen, sehe einfach auf der <a href=\"\$script".EWIKI_PAGE_DOWNLOAD."\">".EWIKI_PAGE_DOWNLOAD."</a> nach.<br><br>"; +$ewiki_t["de"]["UPL_ERROR"] = "'Tschuldige, aber irgend etwas ist während des Hochladens gründlich schief gelaufen.<br><br>"; +$ewiki_t["de"]["DWNL_SEEUPL"] = 'Siehe auch <a href="$script'.EWIKI_PAGE_UPLOAD.'">DateiHochladen</a>, auf dieser Seite stehen nur die Downloads.<br><br>'; +$ewiki_t["de"]["DWNL_NOFILES"] = "Noch keine Dateien hochgeladen.<br>\n"; $ewiki_t["de"]["file"] = "Datei"; $ewiki_t["de"]["of"] = "von"; $ewiki_t["de"]["comment"] = "Kommentar"; $ewiki_t["de"]["dwnl_section"] = "Download Bereich"; $ewiki_t["de"]["DWNL_ENTRY_FORMAT"] = - '<div class="download"><a href="$url">$icon$title</a><small>$size<br />'. - 'am <b>$time</b> hochgeladen, <tt>$hits</tt> mal abgerufen<br />'. - '(<a href="$url">$id</a>)<br />'. + '<div class="download"><a href="$url">$icon$title</a><small>$size<br>'. + 'am <b>$time</b> hochgeladen, <tt>$hits</tt> mal abgerufen<br>'. + '(<a href="$url">$id</a>)<br>'. '$section'.'Datei ist vom Typ <tt>$type</tt>'. - '$comment'."</small></div><br />\n"; + '$comment'."</small></div><br>\n"; function ewiki_page_fileupload($id, $data, $action, $def_sec="") { - global $CFG, $ewiki_upload_sections, $ewiki_plugins; + global $ewiki_upload_sections, $ewiki_plugins; $o = ewiki_make_title($id, $id, 2); @@ -104,12 +104,12 @@ function ewiki_page_fileupload($id, $data, $action, $def_sec="") { $o .= '<div class="upload">'. '<form action="' . ewiki_script( ($action!="view" ? $action : ""), $id). - '" method="POST" enctype="multipart/form-data">' ; - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $o .= upload_print_form_fragment(1,array(EWIKI_UP_UPLOAD),array(ewiki_t("file")),false,null,0,0,true); - $o .= '<input type="submit" value="' . EWIKI_PAGE_UPLOAD . '"><br /><br />' - .'<b>' . ewiki_t("comment") . '</b><br /><textarea name="comment" cols="35" rows="3"></textarea><br /><br />'; - + '" method="POST" enctype="multipart/form-data">' . + '<b>'.ewiki_t("file").'</b><br><input type="file" name="'.EWIKI_UP_UPLOAD.'"><br><br>' . + '<input type="submit" value="' . EWIKI_PAGE_UPLOAD . '"><br><br>'; + + $o .= '<b>' . ewiki_t("comment") . '</b><br><textarea name="comment" cols="35" rows="3"></textarea><br><br>'; + if (empty($ewiki_upload_sections[$def_sec])) { $ewiki_upload_sections[$def_sec] = $def_sec; } @@ -117,14 +117,14 @@ function ewiki_page_fileupload($id, $data, $action, $def_sec="") { if (empty($def_sec)) { $def_sec = $_REQUEST["section"]; } - $o .= '<b>'.ewiki_t("UPL_INSECT").'</b><br /><select name="section">'; + $o .= '<b>'.ewiki_t("UPL_INSECT").'</b><br><select name="section">'; foreach ($ewiki_upload_sections as $id => $title) { $o .= '<option value="'.$id.'"' .($id==$def_sec?' selected':''). '>'.$title.'</option>'; } - $o .= '</select><br /><br />'; + $o .= '</select><br><br>'; } - $o .= '<b>'.ewiki_t("UPL_NEWNAM").'</b><br /><input type="text" name="new_filename" size="20" /><br /><br />'; + $o .= '<b>'.ewiki_t("UPL_NEWNAM").'</b><br><input type="text" name="new_filename" size="20"><br><br>'; $o .= '</form></div>'; @@ -215,7 +215,7 @@ function ewiki_page_filedownload($id, $data, $action, $def_sec="") { "orderby"=>$orderby, "section" => $sec)) . '">' . $title . "</a>"; } - $o .= '<div align="center" class="darker">'.implode(" &middot; ", $oa).'</div><br />'; + $o .= '<div align="center" class="darker">'.implode(" &middot; ", $oa).'</div><br>'; } } @@ -223,7 +223,7 @@ function ewiki_page_filedownload($id, $data, $action, $def_sec="") { #-- collect entries $files = array(); $sorted = array(); - $result = ewiki_database("GETALL", array("flags", "meta", "created", "hits", "userid")); + $result = ewiki_database("GETALL", array("flags", "meta", "created", "hits")); while ($row = $result->get()) { if (($row["flags"] & EWIKI_DB_F_TYPE) == EWIKI_DB_F_BINARY) { @@ -263,7 +263,7 @@ function ewiki_page_filedownload($id, $data, $action, $def_sec="") { "orderby"=>$orderby, "section"=>$section, EWIKI_UP_PAGENUM=>$n)) . '">[' . $n . "]</a> "; } - $o_nl .= '</div><br />'; + $o_nl .= '</div><br>'; $o .= $o_nl; } $sorted = array_slice($sorted, $pnum * EWIKI_LIST_LIMIT, EWIKI_LIST_LIMIT); @@ -278,7 +278,7 @@ function ewiki_page_filedownload($id, $data, $action, $def_sec="") { foreach ($sorted as $id=>$uu) { $row = $files[$id]; - $o .= ewiki_entry_downloads($row, $section[0]=="*", true); + $o .= ewiki_entry_downloads($row, $section[0]=="*"); } } @@ -291,7 +291,7 @@ function ewiki_page_filedownload($id, $data, $action, $def_sec="") { -function ewiki_entry_downloads($row, $show_section=0, $fullinfo=false) { +function ewiki_entry_downloads($row, $show_section=0) { global $ewiki_binary_icons, $ewiki_upload_sections; @@ -299,7 +299,7 @@ function ewiki_entry_downloads($row, $show_section=0, $fullinfo=false) { $id = $row["id"]; $p_title = basename($meta["Content-Location"]); - $p_time = userdate($row["created"]); + $p_time = strftime("%c", $row["created"]); $p_hits = ($row["hits"] ? $row["hits"] : "0"); @@ -316,7 +316,7 @@ function ewiki_entry_downloads($row, $show_section=0, $fullinfo=false) { $p_section = $p_section ? $p_section : $meta["section"]; $p_comment = strlen($meta["comment"]) ? '<table border="1" cellpadding="2" cellspacing="0"><tr><td class="lighter">'. str_replace('</p>', '', str_replace('<p>', '', - ewiki_format($meta["comment"]))) . '</td></tr></table>' : "<br />"; + ewiki_format($meta["comment"]))) . '</td></tr></table>' : "<br>"; $p_icon = ""; /*foreach ($ewiki_binary_icons as $str => $i) { @@ -334,40 +334,21 @@ function ewiki_entry_downloads($row, $show_section=0, $fullinfo=false) { $info->id = $id; $info->size = $p_size; - $info->icon = ($p_icon ? '<img src="'.$p_icon.'" alt="['.$p_icon_t.']" align="left" width="14" height="14" border="0" /> ' : ''); + $info->icon = ($p_icon ? '<img src="'.$p_icon.'" alt="['.$p_icon_t.']" align="left" width="14" height="14" border="0"> ' : ''); $info->time = $p_time; $info->hits = $p_hits; - $info->section = ($show_section ? ewiki_t('dwnl_section') . ": $p_section<br />" : ''); + $info->section = ($show_section ? ewiki_t('dwnl_section') . ": $p_section<br>" : ''); $info->type = $p_ct; $info->url = ewiki_script_binary("", $row["id"]); $info->title = $p_title; $info->comment = $p_comment; - if ($fullinfo) { - if ($user = get_record('user', 'id', $row['userid'])) { - if (!isset($course->id)) { - $course->id = 1; - } - $picture = print_user_picture($user->id, $course->id, $user->picture, false, true, true); - $value = $picture." <a href=\"$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id\">". - fullname($user)."</a>"; - } - - $o .= '<a href="'.$info->url.'">'.$info->icon.$info->title.'</a>'.$info->size.'<br />'. - $info->comment. - $info->section." ".get_string("fileisoftype","wiki").": ".$info->type.'<br />'. - get_string("uploadedon","wiki").": ".$info->time.", ". - ' by '.$value.'<br />'. - get_string("downloadtimes","wiki",$info->hits)."<br />". -// '(<a href="'.$info->url.'">'.$info->id."</a>)<br />". - '<br /><br />'; - } - else { -// global $moodle_format; // from wiki/view.php - $o .= '<a href="'.$info->url.'">'.$info->icon.$info->title.'</a>'.$info->size.'<br />'. - $info->comment.'<br /><br />'; -// $o = format_text($o, $moodle_format); - } + + $o .= '<a href="'.$info->url.'">'.$info->icon.$info->title.'</a>'.$info->size.'<br>'. + get_string("uploadedon","wiki").": ".$info->time.", ".get_string("downloadtimes","wiki",$info->hits)."<br>". + '(<a href="'.$info->url.'">'.$info->id."</a>)<br>". + $info->section." ".get_string("fileisoftype","wiki").": ".$info->type. + "$info->comment<br><br>"; diff --git a/mod/wiki/ewiki/plugins/moodle/f_fixhtml.php b/mod/wiki/ewiki/plugins/moodle/f_fixhtml.php index 07967752111..8202cda8a63 100644 --- a/mod/wiki/ewiki/plugins/moodle/f_fixhtml.php +++ b/mod/wiki/ewiki/plugins/moodle/f_fixhtml.php @@ -13,7 +13,7 @@ */ -define("EWIKI_XHTML", 1); +define("EWIKI_XHTML", 0); $ewiki_plugins["page_final"][] = "ewiki_html_tag_balancer"; diff --git a/mod/wiki/ewiki/plugins/moodle/moodle_binary_store.php b/mod/wiki/ewiki/plugins/moodle/moodle_binary_store.php index 6352ed4d26b..ec70c5d09ae 100644 --- a/mod/wiki/ewiki/plugins/moodle/moodle_binary_store.php +++ b/mod/wiki/ewiki/plugins/moodle/moodle_binary_store.php @@ -65,25 +65,60 @@ function moodle_binary_store_file(&$filename, &$id, &$meta, $ext=".bin") { return 0; } + $maxbytes = get_max_upload_file_size(); $entry=wiki_get_entry($wiki, $course, $userid, $groupid); if(!$entry->id) { error("Cannot get entry."); } - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $um = new upload_manager('upload',false,false,$course,false,0,true,true); - if ($um->process_file_uploads("$course->id/$CFG->moddata/wiki/$wiki->id/$entry->id/$ewiki_title")) { - $filename = ''; // this to make sure we don't keep processing in the parent function - if(!$id) { - $newfilename = $um->get_new_filename(); - $id = EWIKI_IDF_INTERNAL.$newfilename; + $newfile = $_FILES["upload"]; + if(!$id) { + $newfilename = clean_filename($newfile['name']); + $id = EWIKI_IDF_INTERNAL.$newfilename; + } + $dir=make_upload_directory("$course->id/$CFG->moddata/wiki/$wiki->id/$entry->id/$ewiki_title"); + if ($maxbytes and $newfile['size'] > $maxbytes) { + return 0; + } + if (! $newfilename) { + notify("This file had a weird filename and couldn't be uploaded"); + } else { + if (move_uploaded_file($filename, "$dir/$newfilename")) { + chmod("$dir/$newfilename", $CFG->directorypermissions); + $meta["binary_store"]=$ewiki_title; + $filename=""; + return true; + } else { + notify("An error happened while saving the file on the server"); + return false; } - return true; } - error($um->print_upload_log(true)); return false; - + + +/* if (($meta["size"] >= EWIKI_DB_STORE_MINSIZE) && ($meta["size"] <= EWIKI_DB_STORE_MAXSIZE)) { + + #-- generate internal://md5sum + if (empty($id)) { + $md5sum = md5_file($filename); + $id = EWIKI_IDF_INTERNAL . $md5sum . ".$ext"; + ewiki_log("generated md5sum '$md5sum' from file content"); + } + + #-- move file to dest. location + $dbfname = EWIKI_DB_STORE_DIRECTORY."/".rawurlencode($id); + if (@rename($filename, $dbfname) || copy($filename, $dbfname) && unlink($filename)) { + $filename = ""; + $meta["binary_store"] = 1; + return(true); + } + else { + ewiki_log("file store error with '$dbfname'", 0); + } + } + + return(false);*/ } diff --git a/mod/wiki/ewiki/plugins/moodle/moodle_wikidump.php b/mod/wiki/ewiki/plugins/moodle/moodle_wikidump.php index 9f56f859956..598df51cd06 100644 --- a/mod/wiki/ewiki/plugins/moodle/moodle_wikidump.php +++ b/mod/wiki/ewiki/plugins/moodle/moodle_wikidump.php @@ -14,7 +14,7 @@ $ewiki_t["en"]["DOWNLOAD_ARCHIVE"] = "Download"; #define("EWIKI_WIKIDUMP_ARCNAME", "WikiDump_"); #define("EWIKI_WIKIDUMP_DEFAULTTYPE", "TAR"); #define("EWIKI_WIKIDUMP_MAXLEVEL", 1); -define('EWIKI_DUMP_FILENAME_REGEX',"/\W\+/"); +define('EWIKI_DUMP_FILENAME_REGEX',"/\W/"); #-- glue #if((function_exists(gzcompress) && EWIKI_WIKIDUMP_DEFAULTTYPE=="ZIP") || EWIKI_WIKIDUMP_DEFAULTTYPE=="TAR"){ @@ -62,35 +62,35 @@ function moodle_ewiki_page_wiki_dump($id=0, $data=0, $action=0) { $url = ewiki_script("", "WikiExport"); $ret = ewiki_make_title($id, $id, 2); - $ret .= ($cont&&$cont!==true)?$cont."<br /><br />\n":""; + $ret .= ($cont&&$cont!==true)?$cont."<br><br>\n":""; $ret .= get_string("wikiexportcomment","wiki"); - $ret .= "<br /><br />\n". + $ret .= "<br><br>\n". '<FORM name="form" method="post" action="'.$url.'">'."\n". - '<INPUT TYPE="HIDDEN" NAME="userid" VALUE="'.$userid.'" />'."\n". - '<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="'.$groupid.'" />'."\n". - '<INPUT TYPE="HIDDEN" NAME="id" VALUE="'.$cm->id.'" />'."\n". - '<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="'.$wikipage.'" />'."\n". + '<INPUT TYPE="HIDDEN" NAME="userid" VALUE="'.$userid.'">'."\n". + '<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="'.$groupid.'">'."\n". + '<INPUT TYPE="HIDDEN" NAME="id" VALUE="'.$cm->id.'">'."\n". + '<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="'.$wikipage.'">'."\n". "<CENTER>\n"; - // Export binaries too ? + // Export binaroes too ? if(!$wiki->ewikiacceptbinary) { - $ret.='<INPUT TYPE="HIDDEN" NAME="exportbinaries" VALUE="0" />'.$exportdestinations[0]."\n"; + $ret.='<INPUT TYPE="HIDDEN" NAME="exportbinaries" VALUE="0">'.$exportdestinations[0]."\n"; } else { - $ret.='<INPUT TYPE="HIDDEN" NAME="exportbinaries" VALUE="0" />'."\n"; + $ret.='<INPUT TYPE="HIDDEN" NAME="exportbinaries" VALUE="0">'."\n"; } $ret.="<TABLE cellpadding=5>\n"; if($wiki->ewikiacceptbinary) { $ret.=" <TR valign=top>\n". ' <TD align=right>'.get_string("withbinaries","wiki").":</TD>\n". " <TD>\n". - ' <input type="checkbox" name="exportbinaries" value="1"'.($_REQUEST["exportbinaries"]==1?" checked":"")." />\n". + ' <input type="checkbox" name="exportbinaries" value="1"'.($_REQUEST["exportbinaries"]==1?" checked":"").">\n". " </TD>\n". " </TR>\n"; } $ret.=" <TR valign=top>\n". ' <TD align=right>'.get_string("withvirtualpages","wiki").":</TD>\n". " <TD>\n". - ' <input type="checkbox" name="withvirtualpages" value="1"'.($_REQUEST["withvirtualpages"]==1?" checked":"")." />\n". + ' <input type="checkbox" name="withvirtualpages" value="1"'.($_REQUEST["withvirtualpages"]==1?" checked":"").">\n". " </TD>\n". " </TR>\n"; $exportformats=array( "0" => get_string("plaintext","wiki") , "1" => get_string("html","wiki")); @@ -101,7 +101,7 @@ function moodle_ewiki_page_wiki_dump($id=0, $data=0, $action=0) { if($wiki->htmlmode!=2) { $ret.= choose_from_menu($exportformats, "exportformats", $_REQUEST["exportformats"], "", "", "", true)."\n"; } else { - $ret.= '<INPUT TYPE="HIDDEN" NAME="exportformats" VALUE="1" />'. + $ret.= '<INPUT TYPE="HIDDEN" NAME="exportformats" VALUE="1">'. get_string("html","wiki"); } $ret.=" </TD>\n". @@ -121,14 +121,14 @@ function moodle_ewiki_page_wiki_dump($id=0, $data=0, $action=0) { ' <TD align=right>'.get_string("exportto","wiki").":</TD>\n". " <TD>\n"; if(count($exportdestinations)==1) { - $ret.='<INPUT TYPE="HIDDEN" NAME="exportdestinations" VALUE="0" />'.$exportdestinations[0]."\n"; + $ret.='<INPUT TYPE="HIDDEN" NAME="exportdestinations" VALUE="0">'.$exportdestinations[0]."\n"; } else { $ret.=choose_from_menu($exportdestinations, "exportdestinations", $_REQUEST["exportdestinations"], "", "", "", true)."\n"; } $ret.=" </TD>\n". " </TR>\n". "</TABLE>\n". - ' <input type="submit" name="wikiexport" value= "'.get_string("export","wiki").'" />'."\n". + ' <input type="submit" name="wikiexport" value= "'.get_string("export","wiki").'">'."\n". "</CENTER>\n"; "</FORM>\n"; return $ret; @@ -139,14 +139,12 @@ function ewiki_page_wiki_dump_send($exportbinaries=0, $exportformats=0, $withvir $filestozip=array(); #-- disable protected email - if (is_array($ewiki_plugins["link_url"])) { - foreach($ewiki_plugins["link_url"] as $key => $linkplugin){ - if($linkplugin == "ewiki_email_protect_link"){ - unset($ewiki_plugins["link_url"][$key]); - } - } + foreach($ewiki_plugins["link_url"] as $key => $linkplugin){ + if($linkplugin == "ewiki_email_protect_link"){ + unset($ewiki_plugins["link_url"][$key]); + } } - + /// HTML-Export if($exportformats==1) { #-- if exportformats is html @@ -211,7 +209,7 @@ function ewiki_page_wiki_dump_send($exportbinaries=0, $exportformats=0, $withvir } #print "<pre>"; print_r($a_validpages); print "</pre>"; - #print "<hr /><pre>"; print_r($a_pagelist); print "</pre>"; + #print "<hr><pre>"; print_r($a_pagelist); print "</pre>"; $a_sitemap = ewiki_sitemap_create($wiki_entry->pagename, $a_validpages, 99, 0); if ($a_pagelist) { @@ -227,12 +225,12 @@ function ewiki_page_wiki_dump_send($exportbinaries=0, $exportformats=0, $withvir #} /// Create/Set Directory - $wname=clean_filename(strip_tags(format_string($wiki->name,true))); + $wname=clean_filename($wiki->name); if($exportdestinations) { if(isteacher($course->id)) { $exportdir=$CFG->dataroot."/".$course->id."/".$exportdestinations; } else { - add_to_log($course->id, "wiki", "hack", "", format_string($wiki->name,true).": Tried to export a wiki as non-teacher into $exportdestinations."); + add_to_log($course->id, "wiki", "hack", "", $wiki->name.": Tried to export a wiki as non-teacher into $exportdestinations."); error("You are not a teacher !"); } } else { @@ -251,7 +249,8 @@ function ewiki_page_wiki_dump_send($exportbinaries=0, $exportformats=0, $withvir #-- convert all pages - foreach($a_pagelist as $pagename){ + foreach($a_pagelist as $pagename){ + if ((!in_array($pagename, $a_virtual))) { $id = $pagename; #-- not a virtual page @@ -274,10 +273,8 @@ function ewiki_page_wiki_dump_send($exportbinaries=0, $exportformats=0, $withvir if (empty($content)){ switch ($row["flags"] & EWIKI_DB_F_TYPE) { - // Text Page case (EWIKI_DB_F_TEXT): #print "<pre>"; print_r($row[content]); print "\n-------------</pre>"; - if($exportformats==1) {/// HTML-Export $content = ewiki_format($row["content"]); } else { @@ -288,7 +285,6 @@ function ewiki_page_wiki_dump_send($exportbinaries=0, $exportformats=0, $withvir if($exportformats==1) { $content = str_replace($a_images, $a_rimages, $content); } - $fn = preg_replace(EWIKI_DUMP_FILENAME_REGEX, "", urlencode($id)); $fn = $fn.$html_ext; if($exportformats==1) {/// HTML-Export @@ -296,7 +292,7 @@ function ewiki_page_wiki_dump_send($exportbinaries=0, $exportformats=0, $withvir } break; case (EWIKI_DB_F_BINARY): - #print "Binary: $row[id]<br />"; + #print "Binary: $row[id]<br>"; if (($row["meta"]["class"]=="image" || $row["meta"]["class"]=="file") && ($exportbinaries)) { # Copy files to the appropriate directory $fn= moodle_binary_get_path($id, $row["meta"], $course, $wiki, $userid, $groupid); @@ -402,7 +398,21 @@ function ewiki_page_wiki_dump_send($exportbinaries=0, $exportformats=0, $withvir if(!$exportdestinations) { $archivename=$wname.".zip"; - zip_files($filestozip, "$exportbasedir/$archivename"); + if (empty($CFG->zip)) { // Use built-in php-based zip function + include_once("$CFG->libdir/pclzip/pclzip.lib.php"); + $archive = new PclZip("$exportbasedir/$archivename"); + if (($list = $archive->create($filestozip,'',"$exportbasedir/")) == 0) { + error($archive->errorInfo(true)); + } + } else { // Use external zip program + $files = ""; + foreach ($filestozip as $file) { + $files .= $wname."/".basename($file); + $files .= " "; + } + $command = "cd $exportbasedir ; $CFG->zip -r $archivename $files"; + Exec($command); + } #-- Headers Header("Content-type: application/zip"); @@ -417,10 +427,9 @@ function ewiki_page_wiki_dump_send($exportbinaries=0, $exportformats=0, $withvir if(!deldir($exportbasedir)) { error("Cannot delete $exportbasedir"); } - #exit(); return false; } else { - return get_string("exportsuccessful","wiki")."<br />"; + return get_string("exportsuccessful","wiki")."<br>"; } } } @@ -443,4 +452,4 @@ function deldir($dir) { $success = true; } return $success; } -?> +?> \ No newline at end of file diff --git a/mod/wiki/ewikimoodlelib.php b/mod/wiki/ewikimoodlelib.php index d049480dc00..4d5e54dff95 100644 --- a/mod/wiki/ewikimoodlelib.php +++ b/mod/wiki/ewikimoodlelib.php @@ -32,9 +32,10 @@ function ewiki_database_moodle($action, &$args, $sw1, $sw2) { */ # Ugly, but we need to choose which wiki we are about to change/read case "GET": - $id = "'" . anydb_escape_string($args["id"]) . "'"; + $id = "'" . mysql_escape_string($args["id"]) . "'"; ($version = 0 + @$args["version"]) and ($version = "AND (version=$version)") or ($version=""); + # $result = mysql_query("SELECT * FROM " . EWIKI_DB_TABLE_NAME # . " WHERE (pagename=$id) $version ORDER BY version DESC LIMIT 1" #); @@ -48,15 +49,9 @@ function ewiki_database_moodle($action, &$args, $sw1, $sw2) { $select="(pagename=$id) AND wiki=".$wiki_entry->id." $version "; $sort="version DESC"; - if ($result_arr = get_records_select(EWIKI_DB_TABLE_NAME, $select,$sort,"*",0,1)) { - //Iterate to get the first (and unique!) - foreach ($result_arr as $obj) { - $result_obj = $obj; - } - } + $result_obj=get_records_select(EWIKI_DB_TABLE_NAME, $select,$sort,"*",0,1); if($result_obj) { - //Convert to array - $r=get_object_vars($result_obj); + $r=get_object_vars($result_obj[$args["id"]]); $r["id"] = $r["pagename"]; unset($r["pagename"]); $r["meta"] = @unserialize($r["meta"]); @@ -69,10 +64,10 @@ function ewiki_database_moodle($action, &$args, $sw1, $sw2) { with "id" index key. */ case "HIT": - #mysql_query("UPDATE " . EWIKI_DB_TABLE_NAME . " SET hits=(hits+1) WHERE pagename='" . anydb_escape_string($args["id"]) . "'"); + #mysql_query("UPDATE " . EWIKI_DB_TABLE_NAME . " SET hits=(hits+1) WHERE pagename='" . mysql_escape_string($args["id"]) . "'"); # set_field does not work because of the "hits+1" construct - #print "DO ".anydb__escape_string($args["id"]); exit; - execute_sql("UPDATE " .$CFG->prefix.EWIKI_DB_TABLE_NAME . " SET hits=(hits+1) WHERE pagename='" . anydb_escape_string($args["id"]) . "' and wiki=".$wiki_entry->id, 0); + #print "DO ".mysql_escape_string($args["id"]); exit; + execute_sql("UPDATE " .$CFG->prefix.EWIKI_DB_TABLE_NAME . " SET hits=(hits+1) WHERE pagename='" . mysql_escape_string($args["id"]) . "' and wiki=".$wiki_entry->id, 0); break; /* Stores the $data array into the database, while not overwriting existing entries (using WRITE); returns 0 on failure and 1 if @@ -98,7 +93,7 @@ function ewiki_database_moodle($action, &$args, $sw1, $sw2) { # } # $a = ($sql1 ? ', ' : ''); # $sql1 .= $a . $index; - # $sql2 .= $a . "'" . anydb_escape_string($value) . "'"; + # $sql2 .= $a . "'" . mysql_escape_string($value) . "'"; #} #strlen(@$COMMAND) || ($COMMAND = "INSERT"); @@ -107,7 +102,7 @@ function ewiki_database_moodle($action, &$args, $sw1, $sw2) { if (is_int($index)) { continue; } - $args[$index] =anydb_escape_string($value); + $args[$index] =mysql_escape_string($value); } $args["wiki"]=$wiki_entry->id; @@ -143,7 +138,7 @@ function ewiki_database_moodle($action, &$args, $sw1, $sw2) { if (strlen($id)) { $r[$id] = 0; $select .= ($select ? " OR " : "") . - "(pagename='" . anydb_escape_string($id) . "')"; + "(pagename='" . mysql_escape_string($id) . "')"; } } if($select) { @@ -181,21 +176,17 @@ function ewiki_database_moodle($action, &$args, $sw1, $sw2) { e.g. array("flags","meta","lastmodified"); */ case "GETALL": - switch ($CFG->dbtype) { - case 'postgres7': - $sql= "SELECT pagename AS id, ". - implode(", ", $args) . - " FROM ". $CFG->prefix.EWIKI_DB_TABLE_NAME . - " WHERE wiki = ".$wiki_entry->id. - " GROUP BY pagename, ".implode(", ", $args); - break; - default: - $sql= "SELECT pagename AS id, ". - implode(", ", $args) . - " FROM ". $CFG->prefix.EWIKI_DB_TABLE_NAME . - " WHERE wiki = ".$wiki_entry->id. - " GROUP BY id, version " ; - } + + #$result = mysql_query("SELECT pagename AS id, ". + # implode(", ", $args) . + # " FROM ". EWIKI_DB_TABLE_NAME . + # " GROUP BY id, version DESC" + #); + $sql= "SELECT pagename AS id, ". + implode(", ", $args) . + " FROM ". $CFG->prefix.EWIKI_DB_TABLE_NAME . + " WHERE wiki = ".$wiki_entry->id. + " GROUP BY id, version"; #print "$sql"; $result=get_records_sql($sql); @@ -235,24 +226,19 @@ function ewiki_database_moodle($action, &$args, $sw1, $sw2) { $field = implode("", array_keys($args)); $content = strtolower(implode("", $args)); if ($field == "id") { $field = "pagename"; } - switch ($CFG->dbtype) { - case 'postgres7': - $sql= "SELECT pagename AS id, version, flags" . - (EWIKI_DBQUERY_BUFFER && ($field!="pagename") ? ", $field" : "") . - " FROM " . $CFG->prefix.EWIKI_DB_TABLE_NAME . - " WHERE $field ILIKE '%".$content."%' and wiki=".$wiki_entry->id . - " GROUP BY id, version, flags ". - (EWIKI_DBQUERY_BUFFER && ($field!="pagename") ? ", $field" : "") ; - break; - default: - $sql= "SELECT pagename AS id, version, flags" . - (EWIKI_DBQUERY_BUFFER && ($field!="pagename") ? ", $field" : "") . - " FROM " . $CFG->prefix.EWIKI_DB_TABLE_NAME . - " WHERE LOCATE('" . anydb_escape_string($content) . "', LCASE($field)) and wiki=".$wiki_entry->id . - " GROUP BY id, version DESC"; - } - $result=get_records_sql($sql); + #$result = mysql_query("SELECT pagename AS id, version, flags" . + # (EWIKI_DBQUERY_BUFFER && ($field!="pagename") ? ", $field" : "") . + # " FROM " . EWIKI_DB_TABLE_NAME . + # " WHERE LOCATE('" . mysql_escape_string($content) . "', LCASE($field)) " . + # " GROUP BY id, version DESC" + #); + $sql= "SELECT pagename AS id, version, flags" . + (EWIKI_DBQUERY_BUFFER && ($field!="pagename") ? ", $field" : "") . + " FROM " . $CFG->prefix.EWIKI_DB_TABLE_NAME . + " WHERE LOCATE('" . mysql_escape_string($content) . "', LCASE($field)) and wiki=".$wiki_entry->id . + " GROUP BY id, version DESC"; + $result=get_records_sql($sql); $r = new ewiki_dbquery_result(array("id","version",$field)); $drop = ""; #while ($result && ($row = mysql_fetch_array($result, MYSQL_ASSOC))) { @@ -274,12 +260,12 @@ function ewiki_database_moodle($action, &$args, $sw1, $sw2) { case "DELETE": - $id = anydb_escape_string($args["id"]); + $id = mysql_escape_string($args["id"]); $version = $args["version"]; #mysql_query("DELETE FROM " . EWIKI_DB_TABLE_NAME ." # WHERE pagename='$id' AND version=$version"); - # print "DELETING wiki:".$wiki_entry->id."Pagename: $id Version: $version <br />\n"; + # print "DELETING wiki:".$wiki_entry->id."Pagename: $id Version: $version <br>\n"; delete_records(EWIKI_DB_TABLE_NAME,"wiki", $wiki_entry->id,"pagename",$id,"version",$version); break; @@ -308,21 +294,3 @@ function ewiki_database_moodle($action, &$args, $sw1, $sw2) { return($r); } - -function anydb_escape_string($s) { - global $CFG ; - $type = ($CFG->dbtype); - switch ($CFG->dbtype) { - case 'mysql': - $s = mysql_escape_string($s); - break; - case 'postgres7': - $s = pg_escape_string($s); - break; - default: - $s = addslashes($s); - } - - return($s); -} - diff --git a/mod/wiki/filter.php b/mod/wiki/filter.php index 1c387c64cf9..6243e5d361d 100755 --- a/mod/wiki/filter.php +++ b/mod/wiki/filter.php @@ -1,59 +1,126 @@ -<?PHP // $Id$ - //This function provides automatic linking to - //wiki pages when its page title is found inside every Moodle text - //It's based in the glosssary filter by Williams Castillo - //Modifications by mchurch. Enjoy! :-) - - require_once($CFG->dirroot.'/mod/wiki/lib.php'); - - function wiki_filter($courseid, $text) { - - global $CFG; - - if (empty($courseid)) { - if ($site = get_site()) { - $courseid = $site->id; - } - } - - if (!($course = get_record('course', 'id', $courseid))) { - return $text; - } - - $linkarray = array(); - -// Get all wikis for this course. - $wikis = wiki_get_course_wikis($courseid); - if (empty($wikis)) { - return $text; - } - -// Walk through each wiki, and get entries. - foreach ($wikis as $wiki) { - if ($wiki_entries = wiki_get_entries($wiki)) { - -// Walk through each entry and get the pages. - foreach ($wiki_entries as $wiki_entry) { - if ($wiki_pages = get_records('wiki_pages', 'wiki', $wiki_entry->id, 'pagename, version DESC')) { -// Walk through each page and filter. - $wikientries = array(); - foreach ($wiki_pages as $wiki_page) { - if (!in_array($wiki_page->pagename, $wikientries)) { - $startlink = '<a class="wiki autolink" title="Wiki" href="' - .$CFG->wwwroot.'/mod/wiki/view.php?wid='.$wiki->id - .'&amp;userid='.$wiki_entry->userid - .'&amp;groupid='.$wiki_entry->groupid - .'&amp;page='.$wiki_page->pagename.'">'; - $linkarray[] = new filterobject($wiki_page->pagename, $startlink, '</a>', false, true); - $wikientries[] = $wiki_page->pagename; - } - } - } - } - } - } - - return filter_phrases($text, $linkarray); - } - -?> +<?PHP // $Id$ + //This function provides automatic linking to + //wiki pages when its page title is found inside every Moodle text + //It's based in the glosssary filter by Williams Castillo + //Modifications by mchurch. Enjoy! :-) + + require_once($CFG->dirroot.'/mod/wiki/lib.php'); + + function wiki_filter($courseid, $text) { + + global $CFG; + + if (empty($courseid)) { + if ($site = get_site()) { + $courseid = $site->id; + } + } + + if (!($course = get_record('course', 'id', $courseid))) { + return $text; + } + +// Get all wikis for this course. + $wikis = wiki_get_course_wikis($courseid); + if (empty($wikis)) { + return $text; + } + +// Walk through each wiki, and get entries. + foreach ($wikis as $wiki) { + if ($wiki_entries = wiki_get_entries($wiki)) { + +// Walk through each entry and get the pages. + foreach ($wiki_entries as $wiki_entry) { + if ($wiki_pages = get_records('wiki_pages', 'wiki', $wiki_entry->id)) { + +// Walk through each page and filter. + foreach ($wiki_pages as $wiki_page) { + $startlink = '<a class="autolink" title="Wiki" href="' + .$CFG->wwwroot.'/mod/wiki/view.php?wid='.$wiki->id + .'&userid='.$wiki_entry->userid + .'&groupid='.$wiki_entry->groupid + .'&wikipage='.$wiki_page->pagename.'">'; + $text = wiki_link_names($text, $wiki_page->pagename, $startlink, '</a>'); + } + } + } + } + } + + return $text; + } + + function wiki_link_names($text,$name,$href_tag_begin,$href_tag_end = "</a>") { + + $list_of_words_cp = strip_tags($name); + + $list_of_words_cp = trim($list_of_words_cp,'|'); + + $list_of_words_cp = trim($list_of_words_cp); + + $list_of_words_cp = preg_quote($list_of_words_cp,'/'); + + $invalidprefixs = "([a-zA-Z0-9])"; + $invalidsufixs = "([a-zA-Z0-9])"; + + //Avoid seaching in the string if it's inside invalidprefixs and invalidsufixs + $words = array(); + $regexp = '/'.$invalidprefixs.'('.$list_of_words_cp.')|('.$list_of_words_cp.')'.$invalidsufixs.'/is'; + preg_match_all($regexp,$text,$list_of_words); + + foreach (array_unique($list_of_words[0]) as $key=>$value) { + $words['<*'.$key.'*>'] = $value; + } + if (!empty($words)) { + $text = str_replace($words,array_keys($words),$text); + } + + //Now avoid searching inside the <nolink>tag + $excludes = array(); + preg_match_all('/<nolink>(.+?)<\/nolink>/is',$text,$list_of_excludes); + foreach (array_unique($list_of_excludes[0]) as $key=>$value) { + $excludes['<+'.$key.'+>'] = $value; + } + if (!empty($excludes)) { + $text = str_replace($excludes,array_keys($excludes),$text); + } + + //Now avoid searching inside links + $links = array(); + preg_match_all('/<A[\s](.+?)>(.+?)<\/A>/is',$text,$list_of_links); + foreach (array_unique($list_of_links[0]) as $key=>$value) { + $links['<@'.$key.'@>'] = $value; + } + if (!empty($links)) { + $text = str_replace($links,array_keys($links),$text); + } + + //Now avoid searching inside every tag + $final = array(); + preg_match_all('/<(.+?)>/is',$text,$list_of_tags); + foreach (array_unique($list_of_tags[0]) as $key=>$value) { + $final['<|'.$key.'|>'] = $value; + } + if (!empty($final)) { + $text = str_replace($final,array_keys($final),$text); + } + + $text = preg_replace('/('.$list_of_words_cp.')/is', $href_tag_begin.'$1'.$href_tag_end,$text); + + //Now rebuild excluded areas + if (!empty($final)) { + $text = str_replace(array_keys($final),$final,$text); + } + if (!empty($links)) { + $text = str_replace(array_keys($links),$links,$text); + } + if (!empty($excludes)) { + $text = str_replace(array_keys($excludes),$excludes,$text); + } + if (!empty($words)) { + $text = str_replace(array_keys($words),$words,$text); + } + return $text; + } +?> diff --git a/mod/wiki/index.php b/mod/wiki/index.php index f894d4c2366..031dff2562b 100644 --- a/mod/wiki/index.php +++ b/mod/wiki/index.php @@ -58,14 +58,14 @@ foreach ($wikis as $wiki) { if (!$wiki->visible) { //Show dimmed if the mod is hidden - $link = '<A class="dimmed" HREF="view.php?id='.$wiki->coursemodule.'">'.format_string($wiki->name,true).'</A>'; + $link = '<A class="dimmed" HREF="view.php?id='.$wiki->coursemodule.'">'.$wiki->name.'</A>'; } else { //Show normal if the mod is visible - $link = '<A HREF="view.php?id='.$wiki->coursemodule.'">'.format_string($wiki->name,true).'</A>'; + $link = '<A HREF="view.php?id='.$wiki->coursemodule.'">'.$wiki->name.'</A>'; } $timmod = '<span class="smallinfo">'.userdate($wiki->timemodified).'</span>'; - $summary = '<span class="smallinfo">'.format_text($wiki->summary).'</span>'; + $summary = '<span class="smallinfo">'.$wiki->summary.'</span>'; $site = get_site(); switch ($wiki->wtype) { @@ -93,7 +93,7 @@ } } - echo "<br />"; + echo "<BR>"; print_table($table); diff --git a/mod/wiki/lib.php b/mod/wiki/lib.php index aaa8203f0d1..083818ab71e 100644 --- a/mod/wiki/lib.php +++ b/mod/wiki/lib.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// Library of functions and constants for module wiki /// (replace wiki with the name of your module and delete this line) @@ -12,9 +12,9 @@ $WIKI_TYPES = array ('teacher' => get_string('defaultcourseteacher'), define("EWIKI_ESCAPE_AT", 0); # For the algebraic filter function wiki_add_instance($wiki) { -/// Given an object containing all the necessary data, -/// (defined by the form in mod.html) this function -/// will create a new instance and return the id number +/// Given an object containing all the necessary data, +/// (defined by the form in mod.html) this function +/// will create a new instance and return the id number /// of the new instance. $wiki->timemodified = time(); @@ -36,8 +36,8 @@ function wiki_add_instance($wiki) { function wiki_update_instance($wiki) { -/// Given an object containing all the necessary data, -/// (defined by the form in mod.html) this function +/// Given an object containing all the necessary data, +/// (defined by the form in mod.html) this function /// will update an existing instance with new data. /// Determine the pagename for this wiki. @@ -60,9 +60,9 @@ function wiki_rmdir($basedir) { $handle = @opendir($basedir); if($handle) { while (false!==($folder = readdir($handle))) { - if($folder != "." && $folder != ".." && $Folder != "CVS") { + if($folder != "." && $folder != ".." && $Folder != "CVS") { wiki_rmdir("$basedir/$folder"); // recursive - } + } } closedir($handle); } @@ -71,10 +71,10 @@ function wiki_rmdir($basedir) { function wiki_delete_instance($id) { /// Given an ID of an instance of this module, -/// this function will permanently delete the instance -/// and any data that depends on it. +/// this function will permanently delete the instance +/// and any data that depends on it. global $CFG; - + if (! $wiki = get_record("wiki", "id", $id)) { return false; } @@ -94,11 +94,11 @@ function wiki_delete_instance($id) { } } #if (!$exception) { // Delete directory as well, if empty - wiki_rmdir("$basedir"); + wiki_rmdir("$basedir"); #} - } + } } - + # Delete any dependent records here # if (! delete_records("wiki", "id", $wiki->id)) { $result = false; @@ -115,7 +115,7 @@ function wiki_delete_instance($id) { } } } - + return $result; } @@ -126,7 +126,6 @@ function wiki_user_outline($course, $user, $mod, $wiki) { /// $return->time = the time they did it /// $return->info = a short text description - $return = NULL; return $return; } @@ -138,56 +137,19 @@ function wiki_user_complete($course, $user, $mod, $wiki) { } function wiki_print_recent_activity($course, $isteacher, $timestart) { -/// Given a course and a time, this module should find recent activity -/// that has occurred in wiki activities and print it out. +/// Given a course and a time, this module should find recent activity +/// that has occurred in wiki activities and print it out. /// Return true if there was output, or false is there was none. global $CFG; - if (!$logs = get_records_select('log', 'time > \''.$timestart.'\' AND '. - 'course = \''.$course->id.'\' AND '. - 'module = \'wiki\' AND '. - 'action LIKE \'edit%\' ', 'time ASC')){ - return false; - } - foreach ($logs as $log) { - //Create a temp valid module structure (course,id) - $tempmod->course = $log->course; - $tempmod->id = $log->cmid; - //Obtain the visible property from the instance - $modvisible = instance_is_visible($log->module,$tempmod); - - //Only if the mod is visible - if ($modvisible) { - $wikis[$log->info] = wiki_log_info($log); - $wikis[$log->info]->pagename = $log->info; - $wikis[$log->info]->time = $log->time; - $wikis[$log->info]->url = str_replace('&', '&amp;', $log->url); - } - } - - if ($wikis) { - $content = true; - print_headline(get_string('updatedwikipages', 'wiki').':', 3); - foreach ($wikis as $wiki) { - print_recent_activity_note($wiki->time, $wiki, $isteacher, $wiki->pagename, - $CFG->wwwroot.'/mod/wiki/'.$wiki->url); - } - } - return true; // True if anything was printed, otherwise false -} - -function wiki_log_info($log) { - global $CFG; - return get_record_sql("SELECT u.firstname, u.lastname - FROM {$CFG->prefix}user u - WHERE u.id = '$log->userid'"); + return false; // True if anything was printed, otherwise false } function wiki_cron () { /// Function to be run periodically according to the moodle cron -/// This function searches for things that need to be done, such -/// as sending out mail, toggling flags etc ... +/// This function searches for things that need to be done, such +/// as sending out mail, toggling flags etc ... global $CFG; @@ -195,47 +157,23 @@ function wiki_cron () { } function wiki_grades($wikiid) { -/// Must return an array of grades for a given instance of this module, +/// Must return an array of grades for a given instance of this module, /// indexed by user. It also returns a maximum allowed grade. return NULL; } function wiki_get_participants($wikiid) { -//Returns the users with data in one wiki -//(users with records in wiki_pages and wiki_entries) +//Must return an array of user records (all data) who are participants +//for a given instance of wiki. Must include every user involved +//in the instance, independient of his role (student, teacher, admin...) +//See other modules as example. - global $CFG; - - //Get users from wiki_pages - $st_pages = get_records_sql("SELECT DISTINCT u.id, u.id - FROM {$CFG->prefix}user u, - {$CFG->prefix}wiki_entries e, - {$CFG->prefix}wiki_pages p - WHERE e.wikiid = '$wikiid' and - p.wiki = e.id and - u.id = p.userid"); - - //Get users from wiki_entries - $st_entries = get_records_sql("SELECT DISTINCT u.id, u.id - FROM {$CFG->prefix}user u, - {$CFG->prefix}wiki_entries e - WHERE e.wikiid = '$wikiid' and - u.id = e.userid"); - - //Add entries to pages - if ($st_entries) { - foreach ($st_entries as $st_entry) { - $st_pages[$st_entry->id] = $st_entry; - } - } - - return $st_pages; + return false; } - ////////////////////////////////////////////////////////////////////////////////////// -/// Any other wiki functions go here. Each of them must have a name that +/// Any other wiki functions go here. Each of them must have a name that /// starts with wiki_ function wiki_wiki_name($wikiname) { @@ -264,7 +202,7 @@ function wiki_wiki_name($wikiname) { function wiki_is_wiki_name($wikiname) { /// Check for correct wikiname syntax and return true or false. - /// If there are spaces between the words, incorrect format. + /// If there are spaces between the words, incorrect format. if (preg_match_all('/\w+/', $wikiname, $out) > 1) { return false; } @@ -273,7 +211,7 @@ function wiki_is_wiki_name($wikiname) { else if (preg_match_all('/[A-Z]+[a-z_]+/', $wikiname, $out) > 1) { return true; } - else { + else { return false; } } @@ -340,11 +278,11 @@ function wiki_get_entries(&$wiki, $byindex=NULL) { /// Valid values for $byindex are 'student', 'group'. if ($byindex == 'student') { - return get_records('wiki_entries', 'wikiid', $wiki->id, '', + return get_records('wiki_entries', 'wikiid', $wiki->id, '', 'userid,id,wikiid,course,groupid,pagename,timemodified'); } else if ($byindex == 'group') { - return get_records('wiki_entries', 'wikiid', $wiki->id, '', + return get_records('wiki_entries', 'wikiid', $wiki->id, '', 'groupid,id,wikiid,course,userid,pagename,timemodified'); } else { @@ -461,7 +399,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { /// Returns a list of other wikis to display, depending on the type, group and user. /// Returns the key containing the currently selected entry as well. - global $CFG, $id; + global $CFG, $ME, $id; $wikis = false; @@ -469,17 +407,18 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { $mygroupid = mygroupid($course->id); $isteacher = isteacher($course->id, $user->id); $isteacheredit = isteacheredit($course->id, $user->id); + $site = get_site(); switch ($wiki->wtype) { case 'student': /// Get all the existing entries for this wiki. $wiki_entries = wiki_get_entries($wiki, 'student'); - if ($isteacher and (SITEID != $course->id)) { + if ($isteacher and ($site->id != $course->id)) { /// If the user is an editing teacher, or a non-editing teacher not assigned to a group, show all student /// wikis, regardless of creation. - if ((SITEID != $course->id) and ($isteacheredit or ($groupmode == NOGROUPS))) { + if (($site->id != $course->id) and ($isteacheredit or ($groupmode == NOGROUPS))) { if ($students = get_course_students($course->id)) { /// Default pagename is dependent on the wiki settings. @@ -495,7 +434,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { $pagename = $defpagename; } - $key = 'view.php?id='.$id.'&userid='.$student->id.'&page='.$pagename; + $key = $ME.'?id='.$id.'&userid='.$student->id.'&wikipage='.$pagename; $wikis[$key] = fullname($student).':'.$pagename; } } @@ -513,13 +452,13 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { $pagename = $defpagename; } - $key = 'view.php?id='.$id.'&userid='.$student->id.'&page='.$pagename; + $key = $ME.'?id='.$id.'&userid='.$student->id.'&wikipage='.$pagename; $wikis[$key] = fullname($student).':'.$pagename; } } } else if ($groupmode == VISIBLEGROUPS) { - /// Get all students in your group. + /// Get all students in your group. if ($students = get_group_students($mygroupid)) { $defpagename = empty($wiki->pagename) ? get_string('wikidefaultpagename', 'wiki') : $wiki->pagename; foreach ($students as $student) { @@ -530,7 +469,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { else { $pagename = $defpagename; } - $key = 'view.php?id='.$id.'&userid='.$student->id.'&page='.$pagename; + $key = $ME.'?id='.$id.'&userid='.$student->id.'&wikipage='.$pagename; $wikis[$key] = fullname($student).':'.$pagename; } } @@ -542,20 +481,20 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { $wiki_entries = get_records_sql($sql); $wiki_entries=is_array($wiki_entries)?$wiki_entries:array(); foreach ($wiki_entries as $wiki_entry) { - $key = 'view.php?id='.$id.'&userid='.$wiki_entry->userid.'&page='.$wiki_entry->pagename; + $key = $ME.'?id='.$id.'&userid='.$wiki_entry->userid.'&wikipage='.$wiki_entry->pagename; $wikis[$key] = fullname($wiki_entry).':'.$wiki_entry->pagename; if ($currentid == $wiki_entry->id) { $wikis['selected'] = $key; } } - } + } } else { /// A user can see other student wikis if they are a member of the same /// group (for separate groups) or there are visible groups, or if this is /// a site-level wiki, and they are an administrator. if (($groupmode == VISIBLEGROUPS) or - ((SITEID == $course->id) and isadmin())) { + (($site->id == $course->id) and isadmin())) { $viewall = true; } else if ($groupmode == SEPARATEGROUPS) { @@ -574,7 +513,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { $wiki_entries=is_array($wiki_entries)?$wiki_entries:array(); foreach ($wiki_entries as $wiki_entry) { if (($viewall === true) or ismember($viewall, $wiki_entry->userid)) { - $key = 'view.php?id='.$id.'&userid='.$wiki_entry->userid.'&page='.$wiki_entry->pagename; + $key = $ME.'?id='.$id.'&userid='.$wiki_entry->userid.'&wikipage='.$wiki_entry->pagename; $wikis[$key] = fullname($wiki_entry).':'.$wiki_entry->pagename; if ($currentid == $wiki_entry->id) { $wikis['selected'] = $key; @@ -605,7 +544,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { $pagename = $defpagename; } - $key = 'view.php?id='.$id.($group->id?"&groupid=".$group->id:"").'&page='.$pagename; + $key = $ME.'?id='.$id.'&groupid='.$group->id.'&wikipage='.$pagename; $wikis[$key] = $group->name.':'.$pagename; } } @@ -619,7 +558,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { $wiki_entries = get_records_sql($sql); $wiki_entries=is_array($wiki_entries)?$wiki_entries:array(); foreach ($wiki_entries as $wiki_entry) { - $key = 'view.php?id='.$id.($wiki_entry->groupid?"&groupid=".$wiki_entry->groupid:"").'&page='.$wiki_entry->pagename; + $key = $ME.'?id='.$id.'&groupid='.$wiki_entry->groupid.'&wikipage='.$wiki_entry->pagename; $wikis[$key] = $wiki_entry->gname.':'.$wiki_entry->pagename; if ($currentid == $wiki_entry->id) { $wikis['selected'] = $key; @@ -635,7 +574,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { if ($groupmode and ($isteacheredit or ($isteacher and !$mygroupid))) { if ($groups = get_groups($course->id)) { $defpagename = empty($wiki->pagename) ? get_string('wikidefaultpagename', 'wiki') : $wiki->pagename; - + foreach ($groups as $group) { /// If this group already has an entry, use its pagename. if ($wiki_entries[$group->id]) { @@ -645,7 +584,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { $pagename = $defpagename; } - $key = 'view.php?id='.$id.($group->id?"&groupid=".$group->id:"").'&page='.$pagename; + $key = $ME.'?id='.$id.'&groupid='.$group->id.'&wikipage='.$pagename; $wikis[$key] = $group->name.':'.$pagename; } } @@ -659,7 +598,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { $wiki_entries = get_records_sql($sql); $wiki_entries=is_array($wiki_entries)?$wiki_entries:array(); foreach ($wiki_entries as $wiki_entry) { - $key = 'view.php?id='.$id.($wiki_entry->groupid?"&groupid=".$wiki_entry->groupid:"").'&page='.$wiki_entry->pagename; + $key = $ME.'?id='.$id.'&groupid='.$wiki_entry->groupid.'&wikipage='.$wiki_entry->pagename; $wikis[$key] = $wiki_entry->gname.':'.$wiki_entry->pagename; if ($currentid == $wiki_entry->id) { $wikis['selected'] = $key; @@ -688,7 +627,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { $wiki_entries=is_array($wiki_entries)?$wiki_entries:array(); foreach ($wiki_entries as $wiki_entry) { if (($viewall === true) or $viewall == $wiki_entry->groupid) { - $key = 'view.php??id='.$id.($wiki_entry->groupid?"&groupid=".$wiki_entry->groupid:"").'&page='.$wiki_entry->pagename; + $key = $ME.'?id='.$id.'&groupid='.$wiki_entry->groupid.'&wikipage='.$wiki_entry->pagename; $wikis[$key] = $wiki_entry->gname.':'.$wiki_entry->pagename; if ($currentid == $wiki_entry->id) { $wikis['selected'] = $key; @@ -699,7 +638,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) { } break; } - + return $wikis; } @@ -758,8 +697,6 @@ function wiki_add_entry(&$wiki, &$course, $userid=0, $groupid=0) { $wiki_entry->timemodified = time(); break; } - $wiki_entry->pagename = addslashes($wiki_entry->pagename); - return insert_record("wiki_entries", $wiki_entry, true); } @@ -769,6 +706,7 @@ function wiki_can_add_entry(&$wiki, &$user, &$course, $userid=0, $groupid=0) { /// Get the groupmode. It's been added to the wiki object. $groupmode = groupmode($course, $wiki); $mygroupid = mygroupid($course->id); + $site = get_site(); switch ($wiki->wtype) { @@ -777,7 +715,7 @@ function wiki_can_add_entry(&$wiki, &$user, &$course, $userid=0, $groupid=0) { /// A user can create their own wiki at the site level. if ($userid == 0) { return (isstudent($course->id, $user->id) or - ((SITEID == $course->id) and !empty($user) and !isguest())); + (($site->id == $course->id) and !empty($user) and !isguest())); } /// An editing teacher can create any student wiki, or /// a non-editing teacher, if not assigned to a group can create any student wiki, or if assigned to a group can @@ -792,11 +730,11 @@ function wiki_can_add_entry(&$wiki, &$user, &$course, $userid=0, $groupid=0) { /// If mode is 'nogroups', then all participants can add wikis. if (!$groupmode) { return (isstudent($course->id, $user->id) or isteacher($course->id, $user->id) or - ((SITEID == $course->id) and !empty($user) and !isguest())); + (($site->id == $course->id) and !empty($user) and !isguest())); } /// If not requesting a group, must be a member of a group. else if ($groupid == 0) { - return ($mygroupid != 0); + return ($mygroupid != 0); } /// If requesting a group, must be an editing teacher, a non-editing teacher with no assigned group, /// or a non-editing teacher requesting their group. @@ -809,16 +747,16 @@ function wiki_can_add_entry(&$wiki, &$user, &$course, $userid=0, $groupid=0) { case 'teacher': /// If mode is 'nogroups', then all teachers can add wikis. if (!$groupmode) { - return (isteacher($course->id, $user->id) or ((SITEID == $course->id) and isadmin())); + return (isteacher($course->id, $user->id) or (($site->id == $course->id) and isadmin())); } /// If not requesting a group, must be a member of a group. else if ($groupid == 0) { - return ($mygroupid != 0 and isteacher($course->id)); + return ($mygroupid != 0 and isteacher($course->id)); } - /// If there is a group mode, non-editing teachers with an assigned group, can only create wikis + /// If there is a group mode, non-editing teachers with an assigned group, can only create wikis /// in their group. Non-editing teachers with no assigned group and editing teachers can create any wiki. else { - return (isteacheredit($course->id) or + return (isteacheredit($course->id) or (isteacher($course->id) and ($mygroupid == 0 or $mygroupid == $groupid))); } break; @@ -833,10 +771,11 @@ function wiki_can_edit_entry(&$wiki_entry, &$wiki, &$user, &$course) { $can_edit = false; $groupmode = groupmode($course, $wiki); $mygroupid = mygroupid($course->id); + $site = get_site(); - /// Editing teacher's and admins can edit all wikis, non-editing teachers can edit wikis in their groups, + /// Editing teacher's and admins can edit all wikis, non-editing teachers can edit wikis in their groups, /// or all wikis if group mode is 'no groups' or they don't belong to a group. - if (isadmin($user->id) or isteacheredit($course->id, $user->id) or + if (isadmin() or isteacheredit($course->id, $user->id) or ((!$groupmode or $mygroupid == 0) and isteacher($course->id, $user->id))) { $can_edit = true; } @@ -859,7 +798,7 @@ function wiki_can_edit_entry(&$wiki_entry, &$wiki, &$user, &$course) { /// If mode is 'nogroups', then all participants can edit the wiki. else { $can_edit = (isstudent($course->id, $user->id) or isteacher($course->id, $user->id) or - ((SITEID == $course->id) and !empty($user) and !isguest())); + (($site->id == $course->id) and !empty($user) and !isguest())); } break; @@ -870,7 +809,7 @@ function wiki_can_edit_entry(&$wiki_entry, &$wiki, &$user, &$course) { $can_edit = (isteacher($course->id, $user->id) and ismember($wiki_entry->groupid, $user->id)); } else { - $can_edit = (isteacher($course->id, $user->id) or ((SITEID == $course->id) and isadmin())); + $can_edit = (isteacher($course->id, $user->id) or (($site->id == $course->id) and isadmin())); } break; } @@ -898,7 +837,7 @@ function wiki_user_can_access_student_wiki(&$wiki, $userid, &$course) { /// - they are a non-editing teacher and group mode is NOGROUPS. /// - they are an administrator (mostly for site-level wikis). if (($userid and ($USER->id == $userid)) or ($groupmode == VISIBLEGROUPS) or - (($groupmode == SEPARATEGROUPS) and ismember($usersgroup, $userid)) or + (($groupmode == SEPARATEGROUPS) and ismember($usersgroup, $userid)) or (isteacheredit($course->id, $USER->id)) or (isteacher($course->id, $USER->id) and (!$usersgroup or ($groupmode == NOGROUPS))) or (isadmin())) { @@ -924,8 +863,8 @@ function wiki_user_can_access_group_wiki(&$wiki, $groupid, &$course) { /// - group mode is SEPARATEGROUPS, and they are a member of the requested group, /// - they are an editing teacher or administrator, /// - they are a non-editing teacher not assigned to a specific group. - if (($groupmode == NOGROUPS) or ($groupmode == VISIBLEGROUPS) or - (($groupmode == SEPARATEGROUPS) and ($usersgroup == $groupid)) or + if (($groupmode == NOGROUPS) or ($groupmode == VISIBLEGROUPS) or + (($groupmode == SEPARATEGROUPS) and ($usersgroup == $groupid)) or (isteacheredit($course->id, $USER->id)) or (isteacher($course->id, $USER->id) and !$usersgroup)) { $can_access = true; @@ -947,7 +886,7 @@ function wiki_user_can_access_teacher_wiki(&$wiki, $groupid, &$course) { /// - group mode is VISIBLEGROUPS, /// - group mode is SEPARATEGROUPS, and they are a member of the requested group, /// - they are a teacher or administrator, - if (($groupmode == NOGROUPS) or ($groupmode == VISIBLEGROUPS) or + if (($groupmode == NOGROUPS) or ($groupmode == VISIBLEGROUPS) or (($groupmode == SEPARATEGROUPS) and (mygroupid($course->id) == $groupid)) or (isteacher($course->id, $USER->id))){ $can_access = true; @@ -982,13 +921,13 @@ function wiki_print_search_form($cmid, $search="", $userid, $groupid, $return=fa # TODO: Add Group and User !!! $output = "<form name=\"search\" action=\"$CFG->wwwroot/mod/wiki/view.php\">"; $output .= "<font size=\"-1\">"; - $output .= "<input value=\"".get_string("searchwiki", "wiki").":\" type=\"submit\" />"; - $output .= "<input name=\"id\" type=\"hidden\" value=\"$cmid\" />"; - $output = $output.($groupid?"<input name=\"groupid\" type=\"hidden\" value=\"$groupid\" />":""); - $output = $output.($userid?"<input name=\"userid\" type=\"hidden\" value=\"$userid\" />":""); - $output .= "<input name=\"q\" type=\"text\" size=\"20\" value=\"$search\" />".' '; + $output .= "<input value=\"".get_string("searchwiki", "wiki").":\" type=\"submit\">"; + $output .= "<input name=\"id\" type=\"hidden\" value=\"$cmid\">"; + $output = $output.($groupid?"<input name=\"groupid\" type=\"hidden\" value=\"$groupid\">":""); + $output = $output.($userid?"<input name=\"userid\" type=\"hidden\" value=\"$userid\">":""); + $output .= "<input name=\"q\" type=\"text\" size=\"20\" value=\"$search\">".' '; $output .= "</font>"; - $output .= "<input name=\"page\" type=\"hidden\" value=\"SearchPages\" />"; + $output .= "<input name=\"wikipage\" type=\"hidden\" value=\"SearchPages\">"; $output .= "</form>"; if ($return) { @@ -998,7 +937,7 @@ function wiki_print_search_form($cmid, $search="", $userid, $groupid, $return=fa } function wiki_print_wikilinks_block($cmid, $binary=false, $return=false) { -/// Prints a link-list of special wiki-pages +/// Prints a lin-list of special wiki-pages global $CFG, $ewiki_title; $links=array(); @@ -1015,43 +954,45 @@ function wiki_print_wikilinks_block($cmid, $binary=false, $return=false) { if($binary) { $links["FileDownload"]=get_string("filedownload", "wiki"); } - popup_form(EWIKI_SCRIPT, $links, "wikilinks", "", get_string("choosewikilinks", "wiki"), "", "", $return); + popup_form(EWIKI_SCRIPT, $links, "wikilinks", "", get_string("choosewikilinks", "wiki"), "", "", $return); } -function wiki_print_page_actions($cmid, $specialpages, $page, $action, $binary=false, $canedit=true) { +function wiki_print_page_actions($cmid, $specialpages, $wikipage, $action, $binary=false, $canedit=true) { /// Displays actions which can be performed on the page $page=array(); // Edit this Page if (in_array($action, array("edit", "links", "info", "attachments"))) { - $page["view/$page"]=get_string("viewpage","wiki"); + $page["view/$wikipage"]=get_string("viewpage","wiki"); } - if ($canedit && !in_array($page, $specialpages) && $action != "edit") { - $page["edit/$page"]=get_string("editthispage","wiki"); + if ($canedit && !in_array($wikipage, $specialpages) && $action != "edit") { + $page["edit/$wikipage"]=get_string("editthispage","wiki"); } if ($action != "links") { - $page["links/$page"]=get_string("backlinks","wiki"); + $page["links/$wikipage"]=get_string("backlinks","wiki"); } - if ($canedit && !in_array($page, $specialpages) && $action!="info") { - $page["info/$page"]=get_string("pageinfo","wiki"); + if ($canedit && !in_array($wikipage, $specialpages) && $action!="info") { + $page["info/$wikipage"]=get_string("pageinfo","wiki"); } - if($canedit && $binary && !in_array($page, $specialpages) && $action != "attachments") { - $page["attachments/$page"]=get_string("attachments","wiki"); + if($canedit && $binary && !in_array($wikipage, $specialpages) && $action != "attachments") { + $page["attachments/$wikipage"]=get_string("attachments","wiki"); } - popup_form(EWIKI_SCRIPT, $page, "wikiactions", "", get_string("action", "wiki"), "", "", false); + popup_form(EWIKI_SCRIPT, $page, "wikiactions", "", get_string("action", "wiki"), "", "", false); } -function wiki_print_administration_actions($wiki, $cmid, $userid, $groupid, $page, $noeditor, $course) { +function wiki_print_administration_actions($wiki, $cmid, $userid, $groupid, $wikipage, $noeditor, $course) { /// Displays actions which can be performed on the page + global $ME; + /// Create the URL $ewscript = 'admin.php?id='.$cmid; - if (isset($userid) && $userid!=0) $ewscript .= '&amp;userid='.$userid; - if (isset($groupid) && $groupid!=0) $ewscript .= '&amp;groupid='.$groupid; - if (isset($page)) $ewscript .= '&amp;page='.$page; - $ewscript.="&amp;action="; + if (isset($userid)) $ewscript .= '&userid='.$userid; + if (isset($groupid)) $ewscript .= '&groupid='.$groupid; + if (isset($wikipage)) $ewscript .= '&wikipage='.$wikipage; + $ewscript.="&action="; /// Build that action array according to wiki flags. @@ -1074,7 +1015,7 @@ function wiki_print_administration_actions($wiki, $cmid, $userid, $groupid, $pag if($noeditor) { $action["checklinks"]=get_string("checklinks", "wiki"); } - popup_form($ewscript, $action, "wikiadministration", "", get_string("chooseadministration", "wiki"), "", "", false); + popup_form($ewscript, $action, "wikiadministration", "", get_string("chooseadministration", "wiki"), "", "", false); } function wiki_admin_get_flagarray() { @@ -1086,18 +1027,18 @@ function wiki_admin_get_flagarray() { EWIKI_DB_F_READONLY => get_string("flagro","wiki"), EWIKI_DB_F_WRITEABLE => get_string("flagwr","wiki"), ); - + return $ret; } ///////// Ewiki Administration. Mostly taken from the ewiki/tools folder and changed function wiki_admin_setpageflags_list($pageflagstatus) { - $FD = wiki_admin_get_flagarray(); + $FD = wiki_admin_get_flagarray(); $table->head = array(get_string("pagename","wiki"), get_string("flags","wiki")); if($pageflagstatus) { $table->head[]=get_string("status","wiki"); } - + $result = ewiki_database("GETALL", array("version", "flags")); while ($row = $result->get()) { $id = $row["id"]; @@ -1111,12 +1052,12 @@ function wiki_admin_setpageflags_list($pageflagstatus) { $cell_pagename .= '<A HREF="' . EWIKI_SCRIPT_BINARY . $id . '">'; } $cell_pagename .= htmlentities($id) . '</A> / '.get_string("version","wiki").": ".$row["version"]; - + foreach ($FD as $n=>$str) { $cell_flags .='<INPUT TYPE="checkbox" NAME="flags['. rawurlencode($id) . '][' . $n . ']" VALUE="1" ' - . (($data["flags"] & $n) ? "CHECKED=\"checked\"" : "") - . ' />'.$str. ' '; + . (($data["flags"] & $n) ? "CHECKED" : "") + . '>'.$str. ' '; } if($pageflagstatus) { $table->data[]=array($cell_pagename, $cell_flags, $pageflagstatus[$id]); @@ -1129,9 +1070,9 @@ function wiki_admin_setpageflags_list($pageflagstatus) { function wiki_admin_setpageflags($pageflags) { $FD = wiki_admin_get_flagarray(); - + $status=array(); - if($pageflags) { + if($pageflags) { foreach($pageflags as $page=>$fa) { $page = rawurldecode($page); @@ -1158,14 +1099,14 @@ function wiki_admin_setpageflags($pageflags) { } } } - return $status; + return $status; } function wiki_admin_remove_list($listall="") { /// Table header $table->head = array("&nbsp;", get_string("pagename","wiki"), get_string("errororreason","wiki")); - + /// Get all pages $result = ewiki_database("GETALL", array("version")); $selected = array(); @@ -1173,19 +1114,19 @@ function wiki_admin_remove_list($listall="") { /// User wants to see all pages if ($listall) { while ($row = $result->get()) { - $selected[$row["id"]] = get_string("listall","wiki")."<br />"; + $selected[$row["id"]] = get_string("listall","wiki")."<br>"; } } - while ($page = $result->get()) { + while ($page = $result->get()) { $id = $page["id"]; $page = ewiki_database("GET", array("id"=>$id)); $flags = $page["flags"]; - #print "$id ".strlen(trim(($page["content"])))."<br />"; + #print "$id ".strlen(trim(($page["content"])))."<br>"; if (!strlen(trim(($page["content"]))) && !($flags & EWIKI_DB_F_BINARY)) { - @$selected[$id] .= get_string("emptypage","wiki")."<br />"; + @$selected[$id] .= get_string("emptypage","wiki")."<br>"; } - + // Check for orphaned pages $result2 = ewiki_database("SEARCH", array("content" => $id)); $orphanedpage=true; @@ -1193,55 +1134,55 @@ function wiki_admin_remove_list($listall="") { while ($row = $result2->get()) { $checkcontent = ewiki_database("GET", array("id"=>$row["id"])); $checkcontent = strtolower($checkcontent["content"]); - + if(strpos($checkcontent, strtolower($id)) !== false) { $orphanedpage=false; } - #echo "rc({$row['id']})==>($id): $check2 <br />"; + #echo "rc({$row['id']})==>($id): $check2 <br>"; } } - /// Some more reasons for Deletion... + /// Some more reasons for Deletion... if ($orphanedpage && $id!=EWIKI_PAGE_INDEX &&!($flags & EWIKI_DB_F_BINARY)) { - @$selected[$id] .= get_string("orphanedpage","wiki")."<br />"; + @$selected[$id] .= get_string("orphanedpage","wiki")."<br>"; } if ($flags & EWIKI_DB_F_DISABLED) { - @$selected[$id] .= get_string("disabledpage","wiki")."<br />"; + @$selected[$id] .= get_string("disabledpage","wiki")."<br>"; } if (($flags & 3) == 3) { - @$selected[$id] .= get_string("errorbinandtxt","wiki")."<br />"; + @$selected[$id] .= get_string("errorbinandtxt","wiki")."<br>"; } if (!($flags & 3)) { - @$selected[$id] .= get_string("errornotype","wiki")."<br />"; + @$selected[$id] .= get_string("errornotype","wiki")."<br>"; } if ($flags & EWIKI_DB_F_HTML) { - @$selected[$id] .= get_string("errorhtml","wiki")."<br />"; + @$selected[$id] .= get_string("errorhtml","wiki")."<br>"; } if (($flags & EWIKI_DB_F_READONLY) && !($flags & EWIKI_DB_F_BINARY)) { - @$selected[$id] .= get_string("readonly","wiki")."<br />"; + @$selected[$id] .= get_string("readonly","wiki")."<br>"; } if (($flags & EWIKI_DB_F_READONLY) && ($flags & EWIKI_DB_F_WRITEABLE)) { - @$selected[$id] .= get_string("errorroandwr","wiki")."<br />"; + @$selected[$id] .= get_string("errorroandwr","wiki")."<br>"; } if (strlen($page["content"]) >= 65536) { - @$selected[$id] .= get_string("errorsize","wiki")."<br />"; + @$selected[$id] .= get_string("errorsize","wiki")."<br>"; } if (strpos($page["refs"], "\n".get_string("deletemewikiword","wiki")."\n")!==false) { - @$selected[$id] .= get_string("deletemewikiwordfound","wiki",get_string("deletemewikiword","wiki"))."<br />"; + @$selected[$id] .= get_string("deletemewikiwordfound","wiki",get_string("deletemewikiword","wiki"))."<br>"; } } - - foreach ($selected as $id => $reason) { - $table_checkbox='<INPUT TYPE="checkbox" VALUE="'.rawurlencode($id).'" NAME="pagestodelete[]" />'; + + foreach ($selected as $id => $reason) { + $table_checkbox='<INPUT TYPE="checkbox" VALUE="'.rawurlencode($id).'" NAME="pagestodelete[]">'; #-- link & id if (strpos($id, EWIKI_IDF_INTERNAL) === false) { @@ -1253,16 +1194,16 @@ function wiki_admin_remove_list($listall="") { #-- print reason $table_reason=$reason; - + $table->data[]=array($table_checkbox, $table_page, $table_reason); - } - - return $table; + } + + return $table; } /// This function actually removes the pages function wiki_admin_remove($pagestodelete, $course, $wiki, $userid, $groupid) { - $ret=""; + $ret=""; foreach ($pagestodelete as $id) { $id = rawurldecode($id); @@ -1275,7 +1216,7 @@ function wiki_admin_remove($pagestodelete, $course, $wiki, $userid, $groupid) { @unlink("$filepath"); } } - + } return $ret; } @@ -1283,7 +1224,7 @@ function wiki_admin_remove($pagestodelete, $course, $wiki, $userid, $groupid) { function wiki_admin_strip_list($pagestostrip="",$version="",$err="") { /// Table header $table->head = array("&nbsp;", get_string("pagename","wiki"), get_string("deleteversions","wiki")); - + $vc=ewiki_database("COUNTVERSIONS", array()); $result = ewiki_database("GETALL",array()); $i=0; @@ -1293,7 +1234,7 @@ function wiki_admin_strip_list($pagestostrip="",$version="",$err="") { $error=""; if($err[$id]) { $error=" ".join(", ",$err[$id]); - } + } $checked=""; if($pagestostrip=="" || $pagestostrip[$i]) { $checked=" CHECKED"; @@ -1303,10 +1244,10 @@ function wiki_admin_strip_list($pagestostrip="",$version="",$err="") { } else { $versiondefault=$version[$i]; } - $table->data[]=array('<input type="checkbox" value="'.rawurlencode($id).'" name="pagestostrip['.$i.']" '.$checked.' />', + $table->data[]=array('<input type="checkbox" value="'.rawurlencode($id).'" name="pagestostrip['.$i.']" '.$checked.'>', '<A HREF="'.EWIKI_SCRIPT.$id.'">'.htmlentities($id).'</A> / '.get_string("version","wiki").": ".$row["version"], - '<input name="version['.$i.']" value="'.$versiondefault.'" size="7" />'.$error); - + '<input name="version['.$i.']" value="'.$versiondefault.'" size="7">'.$error); + } $i++; } @@ -1316,16 +1257,16 @@ function wiki_admin_strip_list($pagestostrip="",$version="",$err="") { function wiki_admin_strip_versions($pagestostrip, $version, &$err) { $ret=array(); foreach ($pagestostrip as $key => $id_ue) { - + $id = rawurldecode($id_ue); if (preg_match('/^(\d+)[-\s._:]+(\d+)$/', trim($version[$key]), $uu)) { $versA = $uu[1]; $versZ = $uu[2]; - + // Let the last Version in the database - $checkdata = ewiki_database("GET", array("id" => $id)); + $checkdata = ewiki_database("GET", array("id" => $id_ue)); if($versZ>=$checkdata["version"]) { - $err[$id][] = get_string("versionrangetoobig","wiki"); + $err[$id][] = get_string("versionrangetoobig","wiki"); } else { if($versA<=$versZ) { for ($v=$versA; $v<=$versZ; $v++) { @@ -1342,7 +1283,7 @@ function wiki_admin_strip_versions($pagestostrip, $version, &$err) { } return $ret; } - + function wiki_admin_strip($pagestostrip) { /// Purges old page-versions foreach($pagestostrip as $id => $versions) { @@ -1350,7 +1291,7 @@ function wiki_admin_strip($pagestostrip) { ewiki_database("DELETE", array("id"=>$id, "version"=>$version)); } } -} +} function wiki_admin_checklinks_list() { $ret=array(); @@ -1370,29 +1311,29 @@ function wiki_admin_checklinks($pagetocheck) { if($pagetocheck) { $get = ewiki_database("GET", array("id" => $pagetocheck)); $content = $get["content"]; - + preg_match_all('_(http.?://[^\s"\'<>#,;]+[^\s"\'<>#,;.])_', $content, $links); $badlinks = array(); if(!$links[1]) { - $ret = get_string("nolinksfound","wiki")."<br /><br />"; + $ret = get_string("nolinksfound","wiki")."<br><br>"; } else { foreach ($links[1] as $href) { #print "[ $href ]"; - #$d = @implode("", @file($href)); + #$d = @implode("", @file($href)); $d=""; if($checkfd = @fopen($href, 'r')) { fclose($checkfd); $d="OK"; } if (empty($d) || !strlen(trim($d)) || stristr("not found", $d) || stristr("error 404", $d)) { - $ret.="[".get_string("linkdead","wiki")."] $href <br />\n"; + $ret.="[".get_string("linkdead","wiki")."] $href <br>\n"; $badlinks[] = $href; } else { - $ret.="[".get_string("linkok","wiki")."] $href <br />\n"; + $ret.="[".get_string("linkok","wiki")."] $href <br>\n"; } - } + } } - + /// Remove old Notices $content = eregi_replace(' µµ__~\['.get_string("offline","wiki").'\]__µµ ','', $content); @@ -1420,7 +1361,7 @@ function wiki_admin_revert($proceed, $authorfieldpattern, $changesfield, $howtoo $m_time = $changesfield * 3600; $depth = $deleteversions - 1; $depth = ($depth>0?$depth:0); - + #-- walk through $result = ewiki_database("GETALL", array("id", "author", "lastmodified")); while ($row = $result->get()) { @@ -1432,7 +1373,7 @@ function wiki_admin_revert($proceed, $authorfieldpattern, $changesfield, $howtoo } else { $verA = $verZ-$depth; - if ($verA <= 0) { + if ($verA <= 0) { $verA = 1; } } @@ -1463,7 +1404,7 @@ function wiki_admin_revert($proceed, $authorfieldpattern, $changesfield, $howtoo ewiki_database("DELETE", $row); } } - $ret .= ")<br />"; + $ret .= ")<br>"; break; } } #-- for($ver) diff --git a/mod/wiki/mod.html b/mod/wiki/mod.html index 178a59a6f4f..cdd42908faf 100644 --- a/mod/wiki/mod.html +++ b/mod/wiki/mod.html @@ -13,6 +13,12 @@ if (!isset($form->summary)) { $form->summary = ''; } + if (!isset($form->pagename)) { + $form->pagename = ''; + } + if (!isset($form->pagename)) { + $form->pagename = ''; + } if (!isset($form->wtype)) { $form->wtype = 'group'; } @@ -59,26 +65,27 @@ } ?> -<form name="form" method="post" action="mod.php"> -<center> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string('name') ?>:</b></td> - <td> - <input type="text" name="name" size="30" value="<?php p($form->name) ?>" alt="<?php print_string('name') ?>" /> - </td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string('summary') ?>:</b></td> - <td> +<FORM name="form" method="post" action="<?php echo $ME ?>"> +<CENTER> +<TABLE cellpadding=5> +<TR valign=top> + <TD align=right><P><B><?php print_string('name') ?>:</B></P></TD> + <TD> + <INPUT type="text" name="name" size=30 value="<?php p($form->name) ?>"> + </TD> +</TR> +<TR valign=top> + <TD align=right><P><B><?php print_string('summary') ?>:</B></P></TD> + <TD> <?php print_textarea($usehtmleditor, 5, 60, 680, 400, "summary", $form->summary); ?> - </td> -</tr> + </TD> +</TR> -<tr valign="top"> - <td align="right"> - <b><?php print_string('wikitype', "wiki") ?>:</b></td> - <td> +<tr valign=top> + <TD align=right><P> + <?php helpbutton('wikitype', get_string('wikitype', 'wiki'), 'wiki'); ?> + <B><?php print_string('wikitype', "wiki") ?>:</B></P></TD> + <TD> <?php if ($wikihasentries) { echo $WIKI_TYPES[$form->wtype]; @@ -86,69 +93,67 @@ else { choose_from_menu($WIKI_TYPES, 'wtype', $form->wtype, ""); } - helpbutton('wikitype', get_string('wikitype', 'wiki'), 'wiki'); ?> - </td> + </TD> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string('ewikiprinttitle', 'wiki') ?>:</b></td> - <td> +<TR valign=top> + <TD align=right><P><B><?php print_string('ewikiprinttitle', 'wiki') ?>:</B></P></TD> + <TD> <select size="1" name="ewikiprinttitle"> - <option value="1" <?php if ( $form->ewikiprinttitle) { echo 'selected="selected"'; }?>><?php print_string('yes') ?></option> - <option value="0" <?php if ( !$form->ewikiprinttitle) { echo 'selected="selected"'; }?>><?php print_string('no') ?></option> + <option value="1" <?php if ( $form->ewikiprinttitle) { echo 'selected'; }?>><?php print_string('yes') ?></option> + <option value="0" <?php if ( !$form->ewikiprinttitle) { echo 'selected'; }?>><?php print_string('no') ?></option> </select> - </td> -</tr> -<tr valign="top"> - <td align="right"> - <b><?php print_string('htmlmode', 'wiki') ?>:</b></td> -<td> - <?php - $htmlmodes=array( 0 => get_string("nohtml","wiki") , 1 => get_string("safehtml","wiki"), 2 => get_string("htmlonly","wiki")); + </TD> +</TR> +<TR valign=top> + <TD align=right><P> + <?php helpbutton('htmlmode', get_string('htmlmode', 'wiki'), 'wiki'); ?> + <B><?php print_string('htmlmode', 'wiki') ?>:</B></P></TD> + <TD> + <?php + $htmlmodes=array( "0" => get_string("nohtml","wiki") , "1" => get_string("safehtml","wiki"), "2" => get_string("htmlonly","wiki")); choose_from_menu($htmlmodes, "htmlmode", $form->htmlmode, ""); - helpbutton('htmlmode', get_string('htmlmode', 'wiki'), 'wiki'); ?> - </td> -</tr> -<tr valign="top"> - <td align="right"> - <b><?php print_string('ewikiacceptbinary', 'wiki') ?>:</b></td> - <td> + </TD> +</TR> +<TR valign=top> + <TD align=right><P> + <?php helpbutton('ewikiacceptbinary', get_string('ewikiacceptbinary', 'wiki'), 'wiki') ?> + <B><?php print_string('ewikiacceptbinary', 'wiki') ?>:</B></P></TD> + <TD> <select size="1" name="ewikiacceptbinary"> - <option value="1" <?php if ( $form->ewikiacceptbinary) { echo 'selected="selected"'; }?>><?php print_string('yes') ?></option> - <option value="0" <?php if ( !$form->ewikiacceptbinary) { echo 'selected="selected"'; }?>><?php print_string('no') ?></option> + <option value="1" <?php if ( $form->ewikiacceptbinary) { echo 'selected'; }?>><?php print_string('yes') ?></option> + <option value="0" <?php if ( !$form->ewikiacceptbinary) { echo 'selected'; }?>><?php print_string('no') ?></option> </select> - <?php helpbutton('ewikiacceptbinary', get_string('ewikiacceptbinary', 'wiki'), 'wiki') ?> - </td> -</tr> + </TD> +</TR> <tr valign="top"> <td align="right"> + <?php helpbutton('wikilinkoptions', get_string('wikilinkoptions', 'wiki'), 'wiki') ?> <b> <?php print_string('wikilinkoptions', 'wiki') ?>:</b></td> <td> - <input type="checkbox" name="disablecamelcase" value="1" <?php echo $form->disablecamelcase?"CHECKED":""; ?> alt="<?php print_string('disablecamel', 'wiki') ?>" /> + <input type="checkbox" name="disablecamelcase" value="1" <?php echo $form->disablecamelcase?"CHECKED":""; ?> /> <?php print_string('disablecamel', 'wiki') ?><br /> - <?php helpbutton('wikilinkoptions', get_string('wikilinkoptions', 'wiki'), 'wiki') ?> </td> </tr> <tr valign="top"> <td align="right"> + <?php helpbutton('studentadminoptions', get_string('studentadminoptions', 'wiki'), 'wiki') ?> <b> <?php print_string('studentadminoptions', 'wiki') ?>:</b></td> <td> <table cellpadding="0" cellspacing="0" border="0" width="100%"><tr> <td width="50%"> - <input type="checkbox" name="setpageflags" value="1" <?php echo $form->setpageflags?"CHECKED":""; ?> alt="<?php print_string('allowsetpage', 'wiki') ?>" /> + <input type="checkbox" name="setpageflags" value="1" <?php echo $form->setpageflags?"CHECKED":""; ?> /> <?php print_string('allowsetpage', 'wiki') ?><br /> - <input type="checkbox" name="strippages" value="1" <?php echo $form->strippages?"CHECKED":""; ?> alt="<?php print_string('allowstrippages', 'wiki') ?>" /> + <input type="checkbox" name="strippages" value="1" <?php echo $form->strippages?"CHECKED":""; ?> /> <?php print_string('allowstrippages', 'wiki') ?><br /> </td> <td width="50%"> - <input type="checkbox" name="removepages" value="1" <?php echo $form->removepages?"CHECKED":""; ?> alt="<?php print_string('allowremovepages', 'wiki') ?>" /> - <?php print_string('allowremovepages', 'wiki') ?> - <?php helpbutton('studentadminoptions', get_string('studentadminoptions', 'wiki'), 'wiki') ?> - <br /> - <input type="checkbox" name="revertchanges" value="1" <?php echo $form->revertchanges?"CHECKED":""; ?> alt="<?php print_string('allowrevertchanges', 'wiki') ?>" /> + <input type="checkbox" name="removepages" value="1" <?php echo $form->removepages?"CHECKED":""; ?> /> + <?php print_string('allowremovepages', 'wiki') ?><br /> + <input type="checkbox" name="revertchanges" value="1" <?php echo $form->revertchanges?"CHECKED":""; ?> /> <?php print_string('allowrevertchanges', 'wiki') ?><br /> </td> </tr></table> @@ -160,28 +165,29 @@ <td></td> </tr> -<tr valign="top"> - <td align="right"> - <b><?php print_string('wikiname', 'wiki') ?>:</b></td> - <td> +<TR valign=top> + <TD align=right><P> + <?php helpbutton('wikiname', get_string('wikiname', 'wiki'), 'wiki'); ?> + <B><?php print_string('wikiname', 'wiki') ?>:</B></P></TD> + <TD> <?php if ($wikihasentries) { - echo format_string($form->pagename,true); + echo $form->pagename; } else { ?> - <input type="text" name="pagename" size="30" value="<?php p($form->pagename) ?>" alt="<?php print_string('wikiname', 'wiki') ?>" /><b> + <INPUT type="text" name="pagename" size=30 value="<?php p($form->pagename) ?>"><b> <?php print_string('pagenamechoice', 'wiki'); ?></b> <?php } ?> - <?php helpbutton('wikiname', get_string('wikiname', 'wiki'), 'wiki'); ?> - </td> -</tr> + </TD> +</TR> <tr valign="top"> - <td align="right" nowrap="nowrap"> - <b><?php echo get_string("initialcontent", "wiki") ?>:</b> + <td align="right" nowrap> + <?php helpbutton('initialcontent', get_string('initialcontent', 'wiki'), 'wiki'); ?> + <B><?php echo get_string("initialcontent", "wiki") ?>:</B></P> </td> <td> <?php @@ -190,26 +196,24 @@ } else { $strchooseafile = get_string("chooseafile", "wiki"); - echo "<input type=\"text\" name=\"initialcontent\" size=\"50\" value=\"$form->initialcontent\" alt=\"".get_string("initialcontent", "wiki")."\" />&nbsp;"; - button_to_popup_window ("/files/index.php?choose=form.initialcontent&amp;id=$course->id", + echo "<input name=\"initialcontent\" size=\"50\" value=\"$form->initialcontent\">&nbsp;"; + button_to_popup_window ("/mod/wiki/wikifiles.php?id=$course->id", "wikifiles", $strchooseafile, 500, 750, $strchooseafile); } ?> - <?php helpbutton('initialcontent', get_string('initialcontent', 'wiki'), 'wiki'); ?> </td> </tr> -<?php print_standard_coursemodule_settings($form); ?> -</table> + +</TABLE> <!-- These hidden variables are always the same --> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="id" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string('savechanges') ?>" /> -</center> -</form> +<INPUT type="hidden" name=course value="<?php p($form->course) ?>"> +<INPUT type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<INPUT type="hidden" name=section value="<?php p($form->section) ?>"> +<INPUT type="hidden" name=module value="<?php p($form->module) ?>"> +<INPUT type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<INPUT type="hidden" name=instance value="<?php p($form->instance) ?>"> +<INPUT type="hidden" name=id value="<?php p($form->instance) ?>"> +<INPUT type="hidden" name=mode value="<?php p($form->mode) ?>"> +<INPUT type="submit" value="<?php print_string('savechanges') ?>"> +</CENTER> +</FORM> diff --git a/mod/wiki/removepages.html b/mod/wiki/removepages.html index a05ab6579d8..2a74fc304a0 100644 --- a/mod/wiki/removepages.html +++ b/mod/wiki/removepages.html @@ -1,32 +1,32 @@ <?PHP // Make sure all variables are defined - print get_string("removenotice","wiki")."<br /><br />"; + print get_string("removenotice","wiki")."<br><br>"; ?> <FORM ACTION="admin.php" METHOD="POST" ENCTYPE="multipart/form-data"> -<INPUT TYPE="HIDDEN" NAME="userid" VALUE="<?php print $userid; ?>" /> -<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="<?php print $groupid ?>" /> -<INPUT TYPE="HIDDEN" NAME="action" VALUE="<?php print $action; ?>" /> -<INPUT TYPE="HIDDEN" NAME="id" VALUE="<?php print $cm->id ?>" /> -<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="<?php print $wikipage?>" /> -<?php - $remove_table=wiki_admin_remove_list($form->listall); +<INPUT TYPE="HIDDEN" NAME="userid" VALUE="<? print $userid; ?>"> +<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="<? print $groupid ?>"> +<INPUT TYPE="HIDDEN" NAME="action" VALUE="<? print $action; ?>"> +<INPUT TYPE="HIDDEN" NAME="id" VALUE="<? print $cm->id ?>"> +<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="<? print $wikipage?>"> +<? + $remove_table=wiki_admin_remove_list($form->listall); print_table($remove_table); ?> <center> -<?php +<? if(!count($remove_table->data)) { - print get_string("nocandidatestoremove","wiki",get_string("listall","wiki"))."<br /><br />"; + print get_string("nocandidatestoremove","wiki",get_string("listall","wiki"))."<br><br>"; } ?> -<?php +<? if($form->listall) { - print ' <input type="submit" name="listcandidates" value="'.get_string("listcandidates","wiki").'" />'."\n"; + print ' <input type="submit" name="listcandidates" value="'.get_string("listcandidates","wiki").'">'."\n"; } else { - print ' <input type="submit" name="listall" value="'.get_string("listall","wiki").'" />'."\n"; + print ' <input type="submit" name="listall" value="'.get_string("listall","wiki").'">'."\n"; } -?> - <input type="submit" name="proceed" value="<?php print get_string("removeselectedpages","wiki"); ?>" /> +?> + <input type="submit" name="proceed" value="<? print get_string("removeselectedpages","wiki"); ?>"> </center> \ No newline at end of file diff --git a/mod/wiki/restorelib.php b/mod/wiki/restorelib.php index 9c8d2616b19..9e50e97a5b0 100644 --- a/mod/wiki/restorelib.php +++ b/mod/wiki/restorelib.php @@ -45,35 +45,32 @@ $wiki->pagename = backup_todb($info['MOD']['#']['PAGENAME']['0']['#']); $wiki->wtype = backup_todb($info['MOD']['#']['WTYPE']['0']['#']); $wiki->ewikiprinttitle = backup_todb($info['MOD']['#']['EWIKIPRINTTITLE']['0']['#']); - $wiki->htmlmode = backup_todb($info['MOD']['#']['HTMLMODE']['0']['#']); + $wiki->ewikiallowsafehtml = backup_todb($info['MOD']['#']['HTMLMODE']['0']['#']); $wiki->ewikiacceptbinary = backup_todb($info['MOD']['#']['EWIKIACCEPTBINARY']['0']['#']); - $wiki->disablecamelcase = backup_todb($info['MOD']['#']['DISABLECAMELCASE']['0']['#']); - $wiki->setpageflags = backup_todb($info['MOD']['#']['SETPAGEFLAGS']['0']['#']); - $wiki->strippages = backup_todb($info['MOD']['#']['STRIPPAGES']['0']['#']); - $wiki->removepages = backup_todb($info['MOD']['#']['REMOVEPAGES']['0']['#']); - $wiki->revertchanges = backup_todb($info['MOD']['#']['REVERTCHANGES']['0']['#']); $wiki->initialcontent = backup_todb($info['MOD']['#']['INITIALCONTENT']['0']['#']); $wiki->timemodified = backup_todb($info['MOD']['#']['TIMEMODIFIED']['0']['#']); + //The structure is equal to the db, so insert the wiki $newid = insert_record ("wiki",$wiki); //Do some output - echo "<li>".get_string("modulename","wiki")." \"".format_string(stripslashes($wiki->name),true)."\"</li>"; + echo "<ul><li>".get_string("modulename","wiki")." \"".$wiki->name."\"<br>"; backup_flush(300); if ($newid) { //We have the newid, update backup_ids backup_putid($restore->backup_unique_code,$mod->modtype, $mod->id, $newid); - //Now check if want to restore user data and do it. - if ($restore->mods['wiki']->userinfo) { - //Restore wiki_entries - $status = wiki_entries_restore_mods($mod->id,$newid,$info,$restore); - } + //Restore wiki_entries + $status = wiki_entries_restore_mods($mod->id,$newid,$info,$restore); } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -100,10 +97,12 @@ //We'll need this later!! $oldid = backup_todb($ent_info['#']['ID']['0']['#']); + $olduserid = backup_todb($ent_info['#']['USERID']['0']['#']); + $oldgroupid = backup_todb($ent_info['#']['GROUPID']['0']['#']); //Now, build the wiki_ENTRIES record structure $entry->wikiid = $new_wiki_id; - $entry->course = $restore->course_id; + $entry->course= $restore->course_id; $entry->userid = backup_todb($ent_info['#']['USERID']['0']['#']); $entry->groupid = backup_todb($ent_info['#']['GROUPID']['0']['#']); $entry->pagename = backup_todb($ent_info['#']['PAGENAME']['0']['#']); @@ -114,35 +113,38 @@ if ($user) { $entry->userid = $user->new_id; } - //We have to recode the groupid field $group = backup_getid($restore->backup_unique_code,"group",$entry->groupid); if ($group) { $entry->groupid = $group->new_id; } + //If userinfo was selected, restore the entry + if ($restore->mods['wiki']->userinfo) { + //The structure is equal to the db, so insert the wiki_entries + $newid = insert_record ("wiki_entries",$entry); - //The structure is equal to the db, so insert the wiki_entries - $newid = insert_record ("wiki_entries",$entry); - - //Do some output - if (($i+1) % 50 == 0) { - echo "."; - if (($i+1) % 1000 == 0) { - echo "<br />"; + //Do some output + if (($i+1) % 50 == 0) { + echo "."; + if (($i+1) % 1000 == 0) { + echo "<br>"; + } + backup_flush(300); } - backup_flush(300); - } + if ($newid) { + //We have the newid, update backup_ids + backup_putid($restore->backup_unique_code,"wiki_entries",$oldid,$newid); + //Get old wiki id from backup_ids + $rec = get_record("backup_ids","backup_code",$restore->backup_unique_code, + "table_name","wiki", + "new_id",$new_wiki_id); + //Now copy moddata associated files + $status = wiki_restore_files ($rec->old_id, $new_wiki_id, $oldid, $newid, $restore); - if ($newid) { - //We have the newid, update backup_ids - backup_putid($restore->backup_unique_code,"wiki_entries",$oldid,$newid); - - //Restore wiki_pages - $status = wiki_pages_restore_mods($oldid,$newid,$ent_info,$restore); - - //Now copy moddata associated files - $status = wiki_restore_files ($old_wiki_id, $new_wiki_id, $oldid, $newid, $restore); - } else { - $status = false; + //Restore wiki_pages + $status = wiki_pages_restore_mods($oldid,$newid,$ent_info,$restore); + } else { + $status = false; + } } } return $status; @@ -161,12 +163,12 @@ //Iterate over pages for($i = 0; $i < sizeof($pages); $i++) { $pag_info = $pages[$i]; - //traverse_xmlize($pag_info); //Debug + //traverse_xmlize($com_info); //Debug //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug //We'll need this later!! - $oldid = backup_todb($pag_info['#']['ID']['0']['#']); + $oldid = backup_todb($pag_info['#']['PAGENAME']['0']['#']."_".$pag_info['#']['VERSION']['0']['#']."_".$pag_info['#']['WIKI']['0']['#']); //Now, build the wiki_page record structure $page->wiki = $new_entry_id; @@ -175,35 +177,33 @@ $page->flags = backup_todb($pag_info['#']['FLAGS']['0']['#']); $page->content = backup_todb($pag_info['#']['CONTENT']['0']['#']); $page->author = backup_todb($pag_info['#']['AUTHOR']['0']['#']); - $page->userid = backup_todb($pag_info['#']['USERID']['0']['#']); $page->created = backup_todb($pag_info['#']['CREATED']['0']['#']); $page->lastmodified = backup_todb($pag_info['#']['LASTMODIFIED']['0']['#']); - $page->refs = str_replace("$@LINEFEED@$","\n",backup_todb($pag_info['#']['REFS']['0']['#'])); + $page->refs = backup_todb($pag_info['#']['REFS']['0']['#']); $page->meta = backup_todb($pag_info['#']['META']['0']['#']); $page->hits = backup_todb($pag_info['#']['HITS']['0']['#']); - - //We have to recode the userid field - $user = backup_getid($restore->backup_unique_code,"user",$page->userid); - if ($user) { - $page->userid = $user->new_id; - } - //The structure is equal to the db, so insert the wiki_pages - $newid = insert_record ("wiki_pages",$page); - + //The structure is equal to the db, so insert the wiki_comments + insert_record ("wiki_pages",$page, false,"pagename"); +#print "<pre>"; print_r($page); print "</pre>"; + print ($r?"TRUE":"FALSE")."<br>\n"; + #$newid = insert_record ("wiki_pages",$page); + #if($newid) { + # $newid = backup_todb($pag_info['#']['PAGENAME']['0']['#']."_".$pag_info['#']['VERSION']['0']['#']."_".$new_entry_id); + #} //Do some output if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } - if ($newid) { - //We have the newid, update backup_ids - backup_putid($restore->backup_unique_code,"wiki_pages",$oldid,$newid); - } else { - $status = false; - } + #if ($newid) { + # //We have the newid, update backup_ids + # backup_putid($restore->backup_unique_code,"wiki_pages",$oldid,$newid); + #} else { + # $status = false; + #} } return $status; } @@ -229,7 +229,7 @@ //Check it exists and create it $status = check_dir_exists($moddata_path,true); - //Now, locate wiki directory + //Now, locate forum directory if ($status) { $wiki_path = $moddata_path."/wiki"; //Check it exists and create it @@ -246,17 +246,17 @@ } } - //If todo, we create the neccesary dirs in course moddata/wiki + //If todo, we create the neccesary dirs in course moddata/forum if ($status and $todo) { - //First this wiki id + //First this forum id $this_wiki_path = $wiki_path."/".$newwikiid; $status = check_dir_exists($this_wiki_path,true); - //Now this entry id + //Now this post id $entry_wiki_path = $this_wiki_path."/".$newentryid; - //And now, copy temp_path to entry_wiki_path + //And now, copy temp_path to post_forum_path $status = backup_copy_file($temp_path, $entry_wiki_path); } return $status; } -?> +?> \ No newline at end of file diff --git a/mod/wiki/revertpages.html b/mod/wiki/revertpages.html index 0ee37735dac..734178fd1b4 100644 --- a/mod/wiki/revertpages.html +++ b/mod/wiki/revertpages.html @@ -9,14 +9,14 @@ if (!isset($form->changesfield)) { ?> <FORM ACTION="admin.php" METHOD="POST" ENCTYPE="multipart/form-data"> -<INPUT TYPE="HIDDEN" NAME="userid" VALUE="<?php print $userid; ?>" /> -<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="<?php print $groupid ?>" /> -<INPUT TYPE="HIDDEN" NAME="action" VALUE="<?php print $action; ?>" /> -<INPUT TYPE="HIDDEN" NAME="id" VALUE="<?php print $cm->id ?>" /> -<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="<?php print $wikipage?>" /> +<INPUT TYPE="HIDDEN" NAME="userid" VALUE="<? print $userid; ?>"> +<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="<? print $groupid ?>"> +<INPUT TYPE="HIDDEN" NAME="action" VALUE="<? print $action; ?>"> +<INPUT TYPE="HIDDEN" NAME="id" VALUE="<? print $cm->id ?>"> +<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="<? print $wikipage?>"> <CENTER> -<?php +<? if($err->remark) { formerr($err->remark); } @@ -25,26 +25,26 @@ if($err->remark) { <TR valign=top> <TD align=right><P><B><?php print_string('authorfieldpattern','wiki') ?>:</B></P></TD> <TD> - <INPUT type="text" name="authorfieldpattern" size=30 value="<?php p($form->authorfieldpattern) ?>" /> + <INPUT type="text" name="authorfieldpattern" size=30 value="<?php p($form->authorfieldpattern) ?>"> <?php helpbutton('revertauthorfieldpattern', get_string('authorfieldpattern', 'wiki'), 'wiki'); if (!empty($err->authorfieldpattern)) { formerr($err->authorfieldpattern); } -?> +?> </TD> </TR> <TR valign=top> <TD align=right><P><B><?php print_string('changesfield','wiki') ?>:</B></P></TD> <TD> - <INPUT type="text" name="changesfield" size=30 value="<?php p($form->changesfield) ?>" /> - <?php if (!empty($err->changesfield)) { formerr($err->changesfield); } ?> + <INPUT type="text" name="changesfield" size=30 value="<?php p($form->changesfield) ?>"> + <? if (!empty($err->changesfield)) { formerr($err->changesfield); } ?> </TD> </TR> <TR valign=top> <TD align=right><P><B><?php print_string('howtooperate', 'wiki') ?>:</B></P></TD> <TD> <?php - $operations=array( "lastonly" => get_string("revertlastonly","wiki"), - "allsince" => get_string("revertallsince","wiki"), + $operations=array( "lastonly" => get_string("revertlastonly","wiki"), + "allsince" => get_string("revertallsince","wiki"), "the" => get_string("revertthe","wiki")); choose_from_menu($operations, "howtooperate", $form->howtooperate, ""); ?> @@ -53,10 +53,10 @@ if($err->remark) { <TR valign=top> <TD align=right><P><B><?php print_string('deleteversions','wiki') ?>:</B></P></TD> <TD> - <INPUT type="text" name="deleteversions" size=2 value="<?php p($form->deleteversions) ?>" /> - <?php if (!empty($err->deleteversions)) { formerr($err->deleteversions); } ?> + <INPUT type="text" name="deleteversions" size=2 value="<?php p($form->deleteversions) ?>"> + <? if (!empty($err->deleteversions)) { formerr($err->deleteversions); } ?> </TD> </TR> </TABLE> - <input type="submit" name="proceed" value="<?php print get_string("revertchanges","wiki"); ?>" /> + <input type="submit" name="proceed" value="<? print get_string("revertchanges","wiki"); ?>"> </center> \ No newline at end of file diff --git a/mod/wiki/setpageflags.html b/mod/wiki/setpageflags.html index 9bfd23fdf97..5dae71542ed 100644 --- a/mod/wiki/setpageflags.html +++ b/mod/wiki/setpageflags.html @@ -3,16 +3,16 @@ ?> <FORM ACTION="admin.php" METHOD="POST" ENCTYPE="multipart/form-data"> -<INPUT TYPE="HIDDEN" NAME="userid" VALUE="<?php print $userid; ?>" /> -<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="<?php print $groupid ?>" /> -<INPUT TYPE="HIDDEN" NAME="action" VALUE="<?php print $action; ?>" /> -<INPUT TYPE="HIDDEN" NAME="id" VALUE="<?php print $cm->id ?>" /> -<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="<?php print $wikipage?>" /> -<?php - $pageflags_table=wiki_admin_setpageflags_list($pageflagstatus); +<INPUT TYPE="HIDDEN" NAME="userid" VALUE="<? print $userid; ?>"> +<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="<? print $groupid ?>"> +<INPUT TYPE="HIDDEN" NAME="action" VALUE="<? print $action; ?>"> +<INPUT TYPE="HIDDEN" NAME="id" VALUE="<? print $cm->id ?>"> +<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="<? print $wikipage?>"> +<? + $pageflags_table=wiki_admin_setpageflags_list($pageflagstatus); print_table($pageflags_table); ?> -<br /> +<br> <center> - <input type="submit" name="proceed" value="<?php print get_string("setpageflags","wiki"); ?>" /> + <input type="submit" name="proceed" value="<? print get_string("setpageflags","wiki"); ?>"> </center> \ No newline at end of file diff --git a/mod/wiki/strippages.html b/mod/wiki/strippages.html index e0202c0ecac..7a13cd7056e 100644 --- a/mod/wiki/strippages.html +++ b/mod/wiki/strippages.html @@ -3,20 +3,20 @@ ?> <FORM ACTION="admin.php" METHOD="POST" ENCTYPE="multipart/form-data"> -<INPUT TYPE="HIDDEN" NAME="userid" VALUE="<?php print $userid; ?>" /> -<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="<?php print $groupid ?>" /> -<INPUT TYPE="HIDDEN" NAME="action" VALUE="<?php print $action; ?>" /> -<INPUT TYPE="HIDDEN" NAME="id" VALUE="<?php print $cm->id ?>" /> -<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="<?php print $wikipage?>" /> -<?php - $strip_table=wiki_admin_strip_list($form->pagestostrip, $form->version, $err); +<INPUT TYPE="HIDDEN" NAME="userid" VALUE="<? print $userid; ?>"> +<INPUT TYPE="HIDDEN" NAME="groupid" VALUE="<? print $groupid ?>"> +<INPUT TYPE="HIDDEN" NAME="action" VALUE="<? print $action; ?>"> +<INPUT TYPE="HIDDEN" NAME="id" VALUE="<? print $cm->id ?>"> +<INPUT TYPE="HIDDEN" NAME="wikipage" VALUE="<? print $wikipage?>"> +<? + $strip_table=wiki_admin_strip_list($form->pagestostrip, $form->version, $err); print_table($strip_table); ?> <center> -<?php +<? if(!count($strip_table->data)) { - print get_string("nothingtostrip","wiki")."<br /><br />"; + print get_string("nothingtostrip","wiki")."<br><br>"; } -?> - <input type="submit" name="proceed" value="<?php print get_string("strippages","wiki"); ?>" /> +?> + <input type="submit" name="proceed" value="<? print get_string("strippages","wiki"); ?>"> </center> \ No newline at end of file diff --git a/mod/wiki/test.php b/mod/wiki/test.php index 6dc9c0432a1..0560d66d14d 100644 --- a/mod/wiki/test.php +++ b/mod/wiki/test.php @@ -3,7 +3,7 @@ require_once("$CFG->dirroot/course/lib.php"); // For side-blocks require_once('wiki.class.php'); - echo "Test Harness<br />"; + echo "Test Harness<br>"; $wiki = new cWiki(9); diff --git a/mod/wiki/version.php b/mod/wiki/version.php index 3b4fb86c036..8ade8e1c468 100644 --- a/mod/wiki/version.php +++ b/mod/wiki/version.php @@ -5,8 +5,7 @@ /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2005031000; // The current module version (Date: YYYYMMDDXX) -$module->requires = 2005031000; // The current module version (Date: YYYYMMDDXX) +$module->version = 2004082303; // The current module version (Date: YYYYMMDDXX) $module->cron = 0; // Period for cron to check this module (secs) ?> diff --git a/mod/wiki/view.php b/mod/wiki/view.php index c75dc4dc56a..b11ad4f9d34 100644 --- a/mod/wiki/view.php +++ b/mod/wiki/view.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ /// Extended by Michael Schneider /// This page prints a particular instance of wiki @@ -11,11 +11,14 @@ optional_variable($ewiki_action,""); // Action on Wiki-Page optional_variable($id); // Course Module ID, or optional_variable($wid); // Wiki ID - optional_variable($page, false); // Wiki Page Name + optional_variable($wikipage, false); // Wiki Page Name optional_variable($q,""); // Search Context - optional_variable($userid, 0); // User wiki. - optional_variable($groupid, 0); // Group wiki. + optional_variable($userid); // User wiki. + optional_variable($groupid); // Group wiki. optional_variable($canceledit,""); // Editing has been cancelled + if($canceledit) { + $wikipage=$ewiki_id; + } if ($id) { if (! $cm = get_record("course_modules", "id", $id)) { @@ -44,7 +47,9 @@ $_REQUEST["id"] = $id; } - require_course_login($course, true, $cm); + if ($course->category or !empty($CFG->forcelogin)) { + require_login($course->id); + } /// Add the course module 'groupmode' to the wiki object, for easy access. $wiki->groupmode = $cm->groupmode; @@ -65,40 +70,35 @@ /// or the default value in the 'lang' file if the specified value was empty. define("EWIKI_PAGE_INDEX",$wiki_entry->pagename); - /// If the page has a ' in it, it may have slashes added to it. Remove them if it does. - $page = ($page === false) ? stripslashes(EWIKI_PAGE_INDEX) : stripslashes($page); + $wikipage = ($wikipage === false) ? EWIKI_PAGE_INDEX: $wikipage; -/// # Prevent ewiki getting id as PageID... +/// ### Prevent ewiki getting id as PageID... unset($_REQUEST["id"]); unset($_GET["id"]); unset($_POST["id"]); unset($_POST["id"]); unset($_SERVER["QUERY_STRING"]); - if (isset($HTTP_GET_VARS)) { - unset($HTTP_GET_VARS["id"]); - } - if (isset($HTTP_POST_VARS)) { - unset($HTTP_POST_VARS["id"]); - } + unset($HTTP_GET_VARS["id"]); + unset($HTTP_POST_VARS["id"]); global $ewiki_title; /// #-- predefine some of the configuration constants - - + + /// EWIKI_NAME is defined in ewikimoodlelibs, so that also admin.php can use this #define("EWIKI_NAME", $wiki_entry->pagename); /// Search Hilighting if($ewiki_title=="SearchPages") { - $qArgument="&amp;q=".urlencode($q); + $qArgument="&q=".urlencode($q); } - + /// Build the ewsiki script constant /// ewbase will also be needed by EWIKI_SCRIPT_BINARY - $ewbase = 'view.php?id='.$moodleID; - if (isset($userid) && $userid!=0) $ewbase .= '&amp;userid='.$userid; - if (isset($groupid) && $groupid!=0) $ewbase .= '&amp;groupid='.$groupid; - $ewscript = $ewbase.'&amp;page='; + $ewbase = $ME.'?id='.$moodleID; + if (isset($userid)) $ewbase .= '&userid='.$userid; + if (isset($groupid)) $ewbase .= '&groupid='.$groupid; + $ewscript = $ewbase.'&wikipage='; define("EWIKI_SCRIPT", $ewscript); define("EWIKI_SCRIPT_URL", $ewscript); @@ -118,13 +118,12 @@ # Database Handler include_once($CFG->dirroot."/mod/wiki/ewikimoodlelib.php"); # Plugins - //include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/email_protect.php"); + include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/email_protect.php"); include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/patchsaving.php"); include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/notify.php"); include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/feature/imgresize_gd.php"); include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/moodle_highlight.php"); include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/f_fixhtml.php"); - #include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/wikinews.php"); include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/sitemap.php"); include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/moodle_wikidump.php"); include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/aview/backlinks.php"); @@ -155,13 +154,6 @@ # The mighty Wiki itself include_once($CFG->dirroot."/mod/wiki/ewiki/ewiki.php"); - if($canceledit) { - if ($delim = strpos($page, EWIKI_ACTION_SEP_CHAR)) { - @$page = substr($page, $delim + 1); - } else { - @$page=""; - } - } # Language-stuff: eWiki gets language from Browser. Lets correct it. Empty arrayelements do no harm $ewiki_t["languages"]=array(current_language(), $course->lang, $CFG->lang,"en","c"); @@ -186,7 +178,7 @@ $moodle_format=FORMAT_HTML; } if($wiki->htmlmode == 2) { - # HTML Only + # HTML Only $moodle_format=FORMAT_HTML; $ewiki_use_editor=1; $ewiki_config["htmlentities"]=array(); // HTML is allowed @@ -199,7 +191,7 @@ global $ewiki_author, $USER; $ewiki_author=fullname($USER); - $content=ewiki_page($page); + $content=ewiki_page($wikipage); $content2=''; ### RESTORE ID from Moodle @@ -212,32 +204,28 @@ $content2 = '<div align="center">'.get_string('nowikicreated', 'wiki').'</div>'; } - # Group wiki, ...: No page and no ewiki_title + + # Group wiki, ...: No wikipage and no ewiki_title if(!isset($ewiki_title)) { $ewiki_title=""; } - - + /// Moodle Log - add_to_log($course->id, "wiki", $ewiki_action, - addslashes("view.php?id=$cm->id&amp;groupid=$groupid&amp;userid=$userid&amp;page=$ewiki_title"), - format_string($wiki->name,true).": ".$ewiki_title, $cm->id, $userid); + add_to_log($course->id, "wiki", $ewiki_action, "view.php?id=$cm->id&groupid=$groupid&userid=$userid&wikipage=$wikipage", $wiki->name." ".$ewiki_title); + /// Print the page header $strwikis = get_string("modulenameplural", "wiki"); $strwiki = get_string("modulename", "wiki"); - - print_header_simple($ewiki_title?$ewiki_title:format_string($wiki->name), "", - "<a href=\"index.php?id=$course->id\">$strwikis</a> -> <a href=\"view.php?id=$moodleID\">".format_string($wiki->name,true)."</a>".($ewiki_title?" -> $ewiki_title":""), + print_header_simple(($ewiki_title?$ewiki_title:$wiki->name), "", + "<A HREF=\"index.php?id=$course->id\">$strwikis</A> -> <A HREF=\"view.php?id=$moodleID\">$wiki->name</a>".($ewiki_title?" -> $ewiki_title":""), "", "", true, update_module_button($cm->id, $course->id, $strwiki), navmenu($course, $cm)); /// Print Page - echo ' <div id="wikiPageActions"> - '; /// The top row contains links to other wikis, if applicable. if ($wiki_list = wiki_get_other_wikis($wiki, $USER, $course, $wiki_entry->id)) { @@ -250,16 +238,16 @@ echo '<form name="otherwikis" action="'.$CFG->wwwroot.'/mod/wiki/view.php">'; echo '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>'; - echo '<td class="sideblockheading">&nbsp;' + echo '<td class="sideblockheading" bgcolor="'.$THEME->cellheading.'">&nbsp;' .$WIKI_TYPES[$wiki->wtype].' ' .get_string('modulename', 'wiki')." ".get_string('for',"wiki")." " .wiki_get_owner($wiki_entry).':</td>'; - echo '<td class="sideblockheading" align="right">' + echo '<td class="sideblockheading" bgcolor="'.$THEME->cellheading.'" align="right">' .get_string('otherwikis', 'wiki').':&nbsp;&nbsp;'; $script = 'self.location=document.otherwikis.wikiselect.options[document.otherwikis.wikiselect.selectedIndex].value'; choose_from_menu($wiki_list, "wikiselect", $selected, "choose", $script); - echo '</td>'; + echo '</td>'; echo '</tr></table>'; echo '</form>'; @@ -272,90 +260,76 @@ /// Page Actions echo '<table border="0" width="100%">'; echo '<tr>'; - + /// Searchform - echo '<td align="center">'; + echo '<td align="center">'; wiki_print_search_form($cm->id, $q, $userid, $groupid, false); echo '</td>'; - + /// Internal Wikilinks echo '<td align="center">'; wiki_print_wikilinks_block($cm->id, $wiki->ewikiacceptbinary); echo '</td>'; - + /// Administrative Links if($canedit) { - echo '<td align="center">'; + echo '<td align="center">'; wiki_print_administration_actions($wiki, $cm->id, $userid, $groupid, $ewiki_title, $wiki->htmlmode!=2, $course); echo '</td>'; } - + /// Formatting Rules - echo '<td align="right">'; + echo '<td align="right">'; helpbutton('howtowiki', get_string('howtowiki', 'wiki'), 'wiki'); echo '</td>'; - + echo '</tr></table>'; } - echo '</div> - <div id="wiki-view" class="mwiki"> - '; - if($ewiki_title==$wiki_entry->pagename && !empty($wiki->summary)) { if (trim(strip_tags($wiki->summary))) { - print_simple_box(format_text($wiki->summary, FORMAT_MOODLE), 'center', '70%', '', 5, 'generalbox', 'intro'); + print "<br>"; + print_simple_box(format_text($wiki->summary, FORMAT_MOODLE), "center"); + print "<br>"; } } - + // The wiki Contents - if (!empty($canedit)) { /// Print tabs with commands for this page + if ($canedit) { /// Print tabs with commands for this page $tabstyle = ' style="padding-left: 5px;padding-right: 5px" '; + echo "<table align=right border=0>"; + echo "<tr>"; $tabs = array('view', 'edit','links','info'); - if ($wiki->ewikiacceptbinary) { + if ($binary) { $tabs[] = 'attachments'; } - - $tabrows = array(); - $row = array(); - $currenttab = ''; foreach ($tabs as $tab) { $tabname = get_string("tab$tab", 'wiki'); - $row[] = new tabobject($tabname, $ewbase.'&amp;page='.$tab.'/'.$ewiki_id, $tabname); - if ($ewiki_action == "$tab" or in_array($page, $specialpages)) { - $currenttab = $tabname; + if ($ewiki_action != "$tab" && !in_array($wikipage, $specialpages)) { + echo '<td class="generaltab" '.$tabstyle.' bgcolor="'.$THEME->cellheading.'">'; + echo '<a href="'.$ewbase.'&wikipage='.$tab.'/'.$ewiki_id.'">'.$tabname.'</a>'; + echo '</td>'; + } else { + echo '<td class="generaltabselected" '.$tabstyle.' bgcolor="'.$THEME->cellcontent.'">'.$tabname.'</td>'; } } - $tabrows[] = $row; - - print_tabs($tabrows, $currenttab); - + echo "</tr>"; + echo "</table>"; } - - - print_simple_box_start( 'right', '100%', '', '20'); - - /// Don't filter any pages containing wiki actions (except view). A wiki page containing - /// actions will have the form [action]/[pagename]. If the '/' isn't there, or the action - /// is 'view', filter it. Also, if the page doesn't exist, it will default to 'edit'. - $actions = explode('/', $page); - if ($ewiki_action == "edit" || ($actions !== false && count($actions) > 1 && $actions[0] != 'view') || - (count($actions) == 1 && !record_exists('wiki_pages', 'pagename', addslashes($page), 'wiki', $wiki_entry->id))) { - print $content; + print_simple_box_start( "right", "100%", "$THEME->cellcontent", "20"); + if($ewiki_action=="edit") { + # When editing, the filters shall not interfere the wiki-source + print $content.$content2; + } else { + //print(format_text($content, $moodle_format)); /// DISABLED UNTIL IT CAN BE FIXED + print $content; + print $content2; } - else { - print(format_text($content, $moodle_format)); /// DISABLED UNTIL IT CAN BE FIXED - } - print $content2; print_simple_box_end(); - echo "<br clear=\"all\" />"; + echo "<br clear=all />"; /// Finish the page - echo ' - </div> - '; - print_footer($course); ?> diff --git a/mod/wiki/wiki_styles.php b/mod/wiki/wiki_styles.php index 2be2e0b2e4c..3ee62724980 100644 --- a/mod/wiki/wiki_styles.php +++ b/mod/wiki/wiki_styles.php @@ -27,7 +27,7 @@ <!-- Defines the <div> tag surrounding the backlinks feature. --> .wiki_backlinks { - border-top: 2px #EEEEEE solid; + border-top: 2px <?php echo $THEME->borders?> solid; } .indent { @@ -35,7 +35,7 @@ <!-- defines the h2 class for the title --> h2.page.title { - border-bottom: 2px #EEEEEE solid; + border-bottom: 2px <?php echo $THEME->borders?> solid; } <!-- Defines the table used for the version information --> diff --git a/mod/wiki/wikifiles.php b/mod/wiki/wikifiles.php new file mode 100755 index 00000000000..c903eff33ac --- /dev/null +++ b/mod/wiki/wikifiles.php @@ -0,0 +1,848 @@ +<?PHP // $Id$ + +// Manage all uploaded files in a course file area + +// This file is a hack to files/index.php that removes +// the headers and adds some controls so that images +// can be selected within the Richtext editor. + +// All the Moodle-specific stuff is in this top section +// Configuration and access control occurs here. +// Must define: USER, basedir, baseweb, html_header and html_footer +// USER is a persistent variable using sessions + + require("../../config.php"); + require("../../files/mimetypes.php"); + + require_variable($id); + optional_variable($file, ""); + optional_variable($wdir, ""); + optional_variable($action, ""); + + if (! $course = get_record("course", "id", $id) ) { + error("That's an invalid course id"); + } + + require_login($course->id); + + if (! isteacher($course->id) ) { + error("Only teachers can edit files"); + } + + function html_footer() { + echo "</td></tr></table></body></html>"; + } + + function html_header($course, $wdir, $formfield=""){ + + global $CFG, $THEME, $ME; + + if (! $site = get_site()) { + error("Invalid site!"); + } + + if ($course->id == $site->id) { + $strfiles = get_string("sitefiles"); + } else { + $strfiles = get_string("files"); + } + + if ($wdir == "/") { + $fullnav = "$strfiles"; + } else { + $dirs = explode("/", $wdir); + $numdirs = count($dirs); + $link = ""; + $navigation = ""; + for ($i=1; $i<$numdirs; $i++) { + $navigation .= " -> "; + $link .= "/".urlencode($dirs[$i]); + $navigation .= "<a href=\"".$ME."?id=$course->id&wdir=$link\">".$dirs[$i]."</a>"; + } + $fullnav = "<a href=\"".$ME."?id=$course->id&wdir=/\">$strfiles</a> $navigation"; + } + + print_header(); + ?> + <script language="javascript" type="text/javascript"> + <!-- + function set_value(txt) { + opener.document.forms['form'].initialcontent.value = txt; + window.close(); + } + --> + </script> + <?php + + echo '<table border="0" cellpadding="3" cellspacing="0" width="100%">'; + echo '<tr>'; + echo '<td bgcolor="'.$THEME->cellheading.'" class="navbar">'; + echo '<font size="2"><b>'."$course->shortname -> $fullnav".'</b></font>'; + echo '</td>'; + echo '</tr>'; + echo '</table>'; + + if ($course->id == $site->id) { + print_heading(get_string("publicsitefileswarning"), "center", 2); + } + + echo "<table border=0 align=center cellspacing=3 cellpadding=3 width=640>"; + echo "<tr>"; + echo "<td colspan=\"2\">"; + } + + if (! $basedir = make_upload_directory("$course->id")) { + error("The site administrator needs to fix the file permissions"); + } + + $baseweb = $CFG->wwwroot; + +// End of configuration and access control + + + $regexp="\\.\\."; + if (ereg( $regexp, $file, $regs )| ereg( $regexp, $wdir,$regs )) { + $message = "Error: Directories can not contain \"..\""; + $wdir = "/"; + $action = ""; + } + + if (!$wdir) { + $wdir="/"; + } + + + switch ($action) { + + case "upload": + html_header($course, $wdir); + + if (!empty($_FILES['userfile'])) { + $userfile = $_FILES['userfile']; + } else { + $save = false; + } + if (!empty($save)) { + if (!is_uploaded_file($userfile['tmp_name']) or $userfile['size'] == 0) { + notify(get_string("uploadnofilefound")); + } else { + $userfile_name = clean_filename($userfile['name']); + if ($userfile_name) { + $newfile = "$basedir$wdir/$userfile_name"; + if (move_uploaded_file($userfile['tmp_name'], $newfile)) { + chmod($newfile, 0666); + $a = NULL; + $a->file = "$userfile_name (".$userfile['type'].")"; + $a->directory = $wdir; + print_string("uploadedfileto", "", $a); + } else { + notify(get_string("uploadproblem", "", $userfile_name)); + } + } + } + displaydir($wdir); + + } else { + $upload_max_filesize = get_max_upload_file_size($CFG->maxbytes); + $filesize = display_size($upload_max_filesize); + + $struploadafile = get_string("uploadafile"); + $struploadthisfile = get_string("uploadthisfile"); + $strmaxsize = get_string("maxsize", "", $filesize); + $strcancel = get_string("cancel"); + + echo "<P>$struploadafile ($strmaxsize) --> <B>$wdir</B>"; + echo "<TABLE><TR><TD COLSPAN=2>"; + echo "<FORM ENCTYPE=\"multipart/form-data\" METHOD=\"post\" ACTION=\"".$ME."\">"; + echo " <INPUT TYPE=hidden NAME=MAX_FILE_SIZE value=\"$upload_max_filesize\">"; + 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 NAME=\"userfile\" TYPE=\"file\" size=\"60\">"; + echo " </TD><TR><TD WIDTH=10>"; + echo " <INPUT TYPE=submit NAME=save VALUE=\"$struploadthisfile\">"; + echo "</FORM>"; + echo "</TD><TD WIDTH=100%>"; + echo "<FORM ACTION=\"".$ME."\" 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=\"$strcancel\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } + html_footer(); + break; + + case "delete": + if (!empty($confirm)) { + html_header($course, $wdir); + foreach ($USER->filelist as $file) { + $fullfile = $basedir.$file; + if (! fulldelete($fullfile)) { + echo "<BR>Error: Could not delete: $fullfile"; + } + } + clearfilelist(); + displaydir($wdir); + html_footer(); + + } else { + html_header($course, $wdir); + if (setfilelist($_POST)) { + echo "<p align=center>".get_string("deletecheckwarning").":</p>"; + print_simple_box_start("center"); + printfilelist($USER->filelist); + print_simple_box_end(); + echo "<br />"; + notice_yesno (get_string("deletecheckfiles"), + "".basename($ME)."?id=$id&wdir=$wdir&action=delete&confirm=1", + "".basename($ME)."?id=$id&wdir=$wdir&action=cancel"); + } else { + displaydir($wdir); + } + html_footer(); + } + break; + + case "move": + html_header($course, $wdir); + if ($count = setfilelist($_POST)) { + $USER->fileop = $action; + $USER->filesource = $wdir; + echo "<p align=center>"; + print_string("selectednowmove", "moodle", $count); + echo "</p>"; + } + displaydir($wdir); + html_footer(); + break; + + case "paste": + html_header($course, $wdir); + if (isset($USER->fileop) and $USER->fileop == "move") { + foreach ($USER->filelist as $file) { + $shortfile = basename($file); + $oldfile = $basedir.$file; + $newfile = $basedir.$wdir."/".$shortfile; + if (!rename($oldfile, $newfile)) { + echo "<P>Error: $shortfile not moved"; + } + } + } + clearfilelist(); + displaydir($wdir); + html_footer(); + break; + + case "rename": + if (!empty($name)) { + html_header($course, $wdir); + $name = clean_filename($name); + if (file_exists($basedir.$wdir."/".$name)) { + echo "Error: $name already exists!"; + } else if (!rename($basedir.$wdir."/".$oldname, $basedir.$wdir."/".$name)) { + echo "Error: could not rename $oldname to $name"; + } + displaydir($wdir); + + } else { + $strrename = get_string("rename"); + $strcancel = get_string("cancel"); + $strrenamefileto = get_string("renamefileto", "moodle", $file); + html_header($course, $wdir, "form.name"); + echo "<P>$strrenamefileto:"; + echo "<TABLE><TR><TD>"; + echo "<FORM ACTION=\"".$ME."\" METHOD=\"post\" NAME=\"form\">"; + echo " <INPUT TYPE=hidden NAME=id VALUE=$id>"; + echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>"; + echo " <INPUT TYPE=hidden NAME=action VALUE=rename>"; + echo " <INPUT TYPE=hidden NAME=oldname VALUE=\"$file\">"; + echo " <INPUT TYPE=text NAME=name SIZE=35 VALUE=\"$file\">"; + echo " <INPUT TYPE=submit VALUE=\"$strrename\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$ME."\" 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=\"$strcancel\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } + html_footer(); + break; + + case "mkdir": + if (!empty($name)) { + html_header($course, $wdir); + $name = clean_filename($name); + if (file_exists("$basedir$wdir/$name")) { + echo "Error: $name already exists!"; + } else if (! make_upload_directory("$course->id/$wdir/$name")) { + echo "Error: could not create $name"; + } + displaydir($wdir); + + } else { + $strcreate = get_string("create"); + $strcancel = get_string("cancel"); + $strcreatefolder = get_string("createfolder", "moodle", $wdir); + html_header($course, $wdir, "form.name"); + echo "<P>$strcreatefolder:"; + echo "<TABLE><TR><TD>"; + echo "<FORM ACTION=\"".$ME."\" METHOD=post NAME=form>"; + 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=text NAME=name SIZE=35>"; + echo " <INPUT TYPE=submit VALUE=\"$strcreate\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$ME."\" 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=\"$strcancel\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } + html_footer(); + break; + + case "edit": + html_header($course, $wdir); + if (isset($text)) { + $fileptr = fopen($basedir.$file,"w"); + fputs($fileptr, stripslashes($text)); + fclose($fileptr); + displaydir($wdir); + + } else { + $streditfile = get_string("edit", "", "<B>$file</B>"); + $fileptr = fopen($basedir.$file, "r"); + $contents = fread($fileptr, filesize($basedir.$file)); + fclose($fileptr); + + if (mimeinfo("type", $file) == "text/html") { + $usehtmleditor = can_use_html_editor(); + } else { + $usehtmleditor = false; + } + + print_heading("$streditfile"); + + echo "<TABLE><TR><TD COLSPAN=2>"; + echo "<FORM ACTION=\"".$ME."\" METHOD=\"post\" NAME=\"form\">"; + echo " <INPUT TYPE=hidden NAME=id VALUE=$id>"; + echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">"; + echo " <INPUT TYPE=hidden NAME=file VALUE=\"$file\">"; + echo " <INPUT TYPE=hidden NAME=action VALUE=edit>"; + print_textarea($usehtmleditor, 25, 80, 680, 400, "text", $contents); + echo "</TD></TR><TR><TD>"; + echo " <INPUT TYPE=submit VALUE=\"".get_string("savechanges")."\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$ME."\" 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=\"".get_string("cancel")."\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + + if ($usehtmleditor) { + use_html_editor(); + } + + } + html_footer(); + break; + + case "zip": + if (!empty($name)) { + html_header($course, $wdir); + $name = clean_filename($name); + if (empty($CFG->zip)) { // Use built-in php-based zip function + $files = array(); + foreach ($USER->filelist as $file) { + $files[] = "$basedir/$file"; + } + include_once($CFG->libdir.'/pclzip/pclzip.lib.php'); + $archive = new PclZip("$basedir/$wdir/$name"); + if (($list = $archive->create($files,'',"$basedir/$wdir/")) == 0) { + error($archive->errorInfo(true)); + } + } else { // Use external zip program + $files = ""; + foreach ($USER->filelist as $file) { + $files .= basename($file); + $files .= " "; + } + $command = "cd $basedir/$wdir ; $CFG->zip -r $name $files"; + Exec($command); + } + clearfilelist(); + displaydir($wdir); + + } else { + html_header($course, $wdir, "form.name"); + + if (setfilelist($_POST)) { + echo "<P ALIGN=CENTER>".get_string("youareabouttocreatezip").":</P>"; + print_simple_box_start("center"); + printfilelist($USER->filelist); + print_simple_box_end(); + echo "<BR>"; + echo "<P ALIGN=CENTER>".get_string("whattocallzip"); + echo "<TABLE><TR><TD>"; + echo "<FORM ACTION=\"".$ME."\" METHOD=post NAME=form>"; + echo " <INPUT TYPE=hidden NAME=id VALUE=$id>"; + echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">"; + echo " <INPUT TYPE=hidden NAME=action VALUE=zip>"; + echo " <INPUT TYPE=text NAME=name SIZE=35 VALUE=\"new.zip\">"; + echo " <INPUT TYPE=submit VALUE=\"".get_string("createziparchive")."\">"; + echo "</FORM>"; + echo "</TD><TD>"; + echo "<FORM ACTION=\"".$ME."\" 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=\"".get_string("cancel")."\">"; + echo "</FORM>"; + echo "</TD></TR></TABLE>"; + } else { + displaydir($wdir); + clearfilelist(); + } + } + html_footer(); + break; + + case "unzip": + html_header($course, $wdir); + if (!empty($file)) { + $strname = get_string("name"); + $strsize = get_string("size"); + $strmodified = get_string("modified"); + $strstatus = get_string("status"); + $strok = get_string("ok"); + $strunpacking = get_string("unpacking", "", $file); + + echo "<P ALIGN=CENTER>$strunpacking:</P>"; + + $file = basename($file); + + if (empty($CFG->unzip)) { // Use built-in php-based unzip function + include_once($CFG->libdir.'/pclzip/pclzip.lib.php'); + $archive = new PclZip("$basedir/$wdir/$file"); + if (!$list = $archive->extract("$basedir/$wdir")) { + error($archive->errorInfo(true)); + } else { // print some output + echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=640>"; + echo "<tr><th align=left>$strname</th>"; + echo "<th align=right>$strsize</th>"; + echo "<th align=right>$strmodified</th>"; + echo "<th align=right>$strstatus</th></tr>"; + foreach ($list as $item) { + echo "<tr>"; + $item['filename'] = str_replace("$basedir/$wdir/", "", $item['filename']); + print_cell("left", $item['filename']); + if (! $item['folder']) { + print_cell("right", display_size($item['size'])); + } else { + echo "<td>&nbsp;</td>"; + } + $filedate = userdate($item['mtime'], get_string("strftimedatetime")); + print_cell("right", $filedate); + print_cell("right", $item['status']); + echo "</tr>"; + } + echo "</table>"; + } + + } else { // Use external unzip program + print_simple_box_start("center"); + echo "<PRE>"; + $command = "cd $basedir/$wdir ; $CFG->unzip -o $file 2>&1"; + passthru($command); + echo "</PRE>"; + print_simple_box_end(); + } + + echo "<CENTER><FORM ACTION=\"".$ME."\" 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=\"$strok\">"; + echo "</FORM>"; + echo "</CENTER>"; + } else { + displaydir($wdir); + } + html_footer(); + break; + + case "listzip": + html_header($course, $wdir); + if (!empty($file)) { + $strname = get_string("name"); + $strsize = get_string("size"); + $strmodified = get_string("modified"); + $strok = get_string("ok"); + $strlistfiles = get_string("listfiles", "", $file); + + echo "<P ALIGN=CENTER>$strlistfiles:</P>"; + $file = basename($file); + + include_once($CFG->libdir.'/pclzip/pclzip.lib.php'); + $archive = new PclZip("$basedir/$wdir/$file"); + if (!$list = $archive->listContent("$basedir/$wdir")) { + notify($archive->errorInfo(true)); + + } else { + echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=640>"; + echo "<tr><th align=left>$strname</th><th align=right>$strsize</th><th align=right>$strmodified</th></tr>"; + foreach ($list as $item) { + echo "<tr>"; + print_cell("left", $item['filename']); + if (! $item['folder']) { + print_cell("right", display_size($item['size'])); + } else { + echo "<td>&nbsp;</td>"; + } + $filedate = userdate($item['mtime'], get_string("strftimedatetime")); + print_cell("right", $filedate); + echo "</tr>"; + } + echo "</table>"; + } + echo "<br><center><form action=\"".$ME."\" 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=\"$strok\">"; + echo "</FORM>"; + echo "</CENTER>"; + } else { + displaydir($wdir); + } + html_footer(); + break; + + case "torte": + if($_POST) + { + while(list($key, $val) = each($_POST)) + { + if(ereg("file([0-9]+)", $key, $regs)) + { + $file = $val; + } + } + if(@filetype($CFG->dataroot ."/". $course->id . $file) == "file") + { + if(mimeinfo("icon", $file) == "image.gif") + { + $url = $CFG->wwwroot ."/file.php?file=/" .$course->id . $file; + runjavascript($url); + } + else + { + print "File is not a image!"; + } + } + else + { + print "You cannot insert FOLDER into richtext editor!!!"; + } + } + break; + case "cancel"; + clearfilelist(); + + default: + html_header($course, $wdir); + displaydir($wdir); + html_footer(); + break; +} + + +/// FILE FUNCTIONS /////////////////////////////////////////////////////////// + + +function fulldelete($location) { + if (is_dir($location)) { + $currdir = opendir($location); + while ($file = readdir($currdir)) { + if ($file <> ".." && $file <> ".") { + $fullfile = $location."/".$file; + if (is_dir($fullfile)) { + if (!fulldelete($fullfile)) { + return false; + } + } else { + if (!unlink($fullfile)) { + return false; + } + } + } + } + closedir($currdir); + if (! rmdir($location)) { + return false; + } + + } else { + if (!unlink($location)) { + return false; + } + } + return true; +} + + + +function setfilelist($VARS) { + global $USER; + + $USER->filelist = array (); + $USER->fileop = ""; + + $count = 0; + foreach ($VARS as $key => $val) { + if (substr($key,0,4) == "file") { + $count++; + $USER->filelist[] = rawurldecode($val); + } + } + return $count; +} + +function clearfilelist() { + global $USER; + + $USER->filelist = array (); + $USER->fileop = ""; +} + + +function printfilelist($filelist) { + global $basedir, $CFG; + + foreach ($filelist as $file) { + if (is_dir($basedir.$file)) { + echo "<img src=\"$CFG->pixpath/f/folder.gif\" height=16 width=16> $file<br>"; + $subfilelist = array(); + $currdir = opendir($basedir.$file); + while ($subfile = readdir($currdir)) { + if ($subfile <> ".." && $subfile <> ".") { + $subfilelist[] = $file."/".$subfile; + } + } + printfilelist($subfilelist); + + } else { + $icon = mimeinfo("icon", $file); + echo "<img src=\"$CFG->pixpath/f/$icon\" height=16 width=16> $file<br>"; + } + } +} + + +function print_cell($alignment="center", $text="&nbsp;") { + echo "<TD ALIGN=\"$alignment\" NOWRAP>"; + echo "<FONT SIZE=\"-1\" FACE=\"Arial, Helvetica\">"; + echo "$text"; + echo "</FONT>"; + echo "</TD>\n"; +} + +function displaydir ($wdir) { +// $wdir == / or /a or /a/b/c/d etc + + global $basedir; + global $id; + global $USER, $CFG; + + $fullpath = $basedir.$wdir; + + $directory = opendir($fullpath); // Find all files + while ($file = readdir($directory)) { + if ($file == "." || $file == "..") { + continue; + } + + if (is_dir($fullpath."/".$file)) { + $dirlist[] = $file; + } else { + $filelist[] = $file; + } + } + 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"); + $strlist = get_string("list"); + $strchoose = get_string("choose"); + + + echo "<FORM ACTION=\"".$ME."\" METHOD=post NAME=dirform>"; + echo "<TABLE BORDER=0 cellspacing=2 cellpadding=2 width=640>"; + echo "<TR>"; + echo "<TH WIDTH=5></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 = ""; + } + + $count = 0; + + if (!empty($dirlist)) { + asort($dirlist); + foreach ($dirlist as $dir) { + + $count++; + + $filename = $fullpath."/".$dir; + $fileurl = rawurlencode($wdir."/".$dir); + $filesafe = rawurlencode($dir); + $filedate = userdate(filectime($filename), "%d %b %Y, %I:%M %p"); + + echo "<TR>"; + + print_cell("center", "<INPUT TYPE=checkbox NAME=\"file$count\" VALUE=\"$fileurl\">"); + print_cell("left", "<A HREF=\"".basename($ME)."?id=$id&wdir=$fileurl\"><IMG SRC=\"$CFG->pixpath/f/folder.gif\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"Folder\"></A> <A HREF=\"".basename($ME)."?id=$id&wdir=$fileurl\">".htmlspecialchars($dir)."</A>"); + print_cell("right", "-"); + print_cell("right", $filedate); + print_cell("right", "<A HREF=\"".basename($ME)."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>"); + + echo "</TR>"; + } + } + + + if (!empty($filelist)) { + asort($filelist); + foreach ($filelist as $file) { + + $icon = mimeinfo("icon", $file); + + $count++; + $filename = "$fullpath/$file"; + $fileurl = "$wdir/$file"; + $filesafe = rawurlencode($file); + $fileurlsafe = rawurlencode($fileurl); + $filedate = userdate(filectime($filename), "%d %b %Y, %I:%M %p"); + + if (substr($fileurl,0,1) == '/') { + $selectfile = substr($fileurl,1); + } else { + $selectfile = $fileurl; + } + if ($CFG->slasharguments) { + $ffurl = "/file.php/$id$fileurl"; + } else { + $ffurl = "/file.php?file=/$id$fileurl"; + } + + echo "<tr>"; + + print_cell("center", "<input type=\"checkbox\" name=\"file$count\" value=\"$fileurl\">"); + + echo "<td align=left nowrap>"; + link_to_popup_window ($ffurl, "display", + "<img src=\"$CFG->pixpath/f/$icon\" height=16 width=16 border=0 alt=\"file\">", + 480, 640); + echo "<font size=\"-1\" face=\"Arial, Helvetica\">"; + link_to_popup_window ($ffurl, "display", htmlspecialchars($file), 480, 640); + echo "</font></td>"; + + $file_size = filesize($filename); + print_cell("right", display_size($file_size)); + print_cell("right", $filedate); + + $edittext = "<b><a onMouseDown=\"return set_value('$selectfile')\" href=\"\">$strchoose</a></b>&nbsp;"; + + if ($icon == "text.gif" || $icon == "html.gif") { + $edittext .= "<a href=\"".basename($ME)."?id=$id&wdir=$wdir&file=$fileurl&action=edit\">$stredit</a>"; + } else if ($icon == "zip.gif") { + $edittext .= "<a href=\"".basename($ME)."?id=$id&wdir=$wdir&file=$fileurl&action=unzip\">$strunzip</a>&nbsp;"; + $edittext .= "<a href=\"".basename($ME)."?id=$id&wdir=$wdir&file=$fileurl&action=listzip\">$strlist</a> "; + } + + print_cell("right", "$edittext <A HREF=\"".basename($ME)."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>"); + + echo "</tr>"; + } + } + echo "</table>"; + echo "<hr width=640 align=center noshade size=1>"; + + if (empty($wdir)) { + $wdir = "/"; + } + + echo "<TABLE BORDER=0 cellspacing=2 cellpadding=2 width=640>"; + echo "<TR><TD>"; + echo "<INPUT TYPE=hidden NAME=id VALUE=\"$id\">"; + echo "<INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\"> "; + $options = array ( + "move" => "$strmovetoanotherfolder", + "delete" => "$strdeletecompletely", + "zip" => "$strcreateziparchive" + ); + if (!empty($count)) { + choose_from_menu ($options, "action", "", "$strwithchosenfiles...", "javascript:document.dirform.submit()"); + } + + echo "</FORM>"; + echo "<TD ALIGN=center>"; + if (!empty($USER->fileop) and ($USER->fileop == "move") and ($USER->filesource <> $wdir)) { + echo "<FORM ACTION=\"".$ME."\" 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=paste>"; + echo " <INPUT TYPE=submit VALUE=\"$strmovefilestohere\">"; + echo "</FORM>"; + } + echo "<TD ALIGN=right>"; + echo "<FORM ACTION=\"".$ME."\" 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=mkdir>"; + echo " <INPUT TYPE=submit VALUE=\"$strmakeafolder\">"; + echo "</FORM>"; + echo "</TD>"; + echo "<TD ALIGN=right>"; + echo "<FORM ACTION=\"".$ME."\" 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=upload>"; + echo " <INPUT TYPE=submit VALUE=\"$struploadafile\">"; + echo "</FORM>"; + echo "</TD></TR>"; + echo "</TABLE>"; + echo "<HR WIDTH=640 ALIGN=CENTER NOSHADE SIZE=1>"; + +} + +?> diff --git a/mod/workshop/Overview.html b/mod/workshop/Overview.html new file mode 100644 index 00000000000..2835609af65 --- /dev/null +++ b/mod/workshop/Overview.html @@ -0,0 +1,173 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> + <meta http-equiv="content-type" + content="text/html; charset=ISO-8859-1"> + <title>Another Assignment Overview</title> +</head> +<body> +<h2> Another Assignment Module</h2> +<br> +<div style="margin-left: 40px;"> "Assessment is the most powerful lever +teachers have to influence the way students respond to courses and +behave as learners"<br> +</div> +<br> +<div style="text-align: right; margin-left: 80px;"><small> from Graham +Gibbs, "Using Assessment Strategically to Change the Way Students Learn" +in "Asessment Matter in Higher Education, edited by Sally Brown and +Angela Glasner, OU Press, 1999</small><br> +</div> +<br> +<h3>Overview</h3> +This new module enables the teacher to set up a controlled assignment +which encourages students to become more critical of both their own work +and that of others. In its standard form, the module usually begins with +a preparatory phase where the teacher sets up the assessment criteria. +These will depend on which assessment strategy the teacher decides to +use for the assignment. There are four separate strategies:<br> +<ol> + <li><b>No grading:</b> In this type of assignment the teacher is not + interested in quantative assessment from the students at all. The +students make comments of the pieces of works but not not grade them. +The teacher, however, can, if desired, grade the student comments. +These "grading grades" form the basis of the students' final grades. + If the teacher does not grade the student assessments then the +assignment does not have any final grades. </li> + <li><b>Accumulative grading:</b> This is the default type of grading. + In this type of assignment the grade of each assessment is made up of +a number of "assessment elements". Each element should cover a +particular aspect of the assignment. Typically an assignment will have + something between 5 to 15 elements for comments and grading, the + actual number depending on the size and complexity of the assignment. A +peer assignment with only one element is allowed and has a similar +assessment strategy to the standard Moodle Assignment.</li> + <li><b>Error Banded Grading:</b> In this type of assignment the +submissions are graded on a set of Yes/No scales. The grade is +determined by the "Grade Table " which gives the relationship between +the number of "errors" and the suggested grade. For example an +assignment may have six significant items which should be present, the +Grade Table will give suggested grades if all are present, one is +absent, if two are absent, etc.</li> + <li><b>Criteria Grading:</b> This is simpliest type of assessment to +grade (although not necessarily the most straightforward to set up). +The submissions are graded against a set of criterion statments. The +assessor choses which statement best fits the piece of work. The grade +is determined by a "Criteria Table" which gives the suggested grade +for each criterion. </li> +</ol> +Next the teacher submits a small number (probably between 5 and 10) +example pieces of work. These most likely have been gleaned from +previous cohorts and should probably include both good and poor attempts +at the assignment.<br> +<br> +Lastly the teacher assesses these examples using the "grading form" set +up for the asssignment. The teacher's assessments are there to guide the +students when they start the assignment.<br> +<br> +With these three sets of items in place, the assessment elements (and +possibly the associated grade table), the example assignments and the +specimen assessments, the assignment can be opened up to the students. +The students' first task is usually to assess a selection of the +example assignments. As these assessments are produced the teacher +reviews them and, if satisfactory, the individual students are allowed +to progress to the next stage. The teacher may ask a student to +re-assess one or more of the example assessments. This should be easy to +do as once an example assignment is assessed the student is able to view +the teacher's "specimen" assessments. This loop is basically there to +check that the weaker students are aware of the specimen assessments and +have looked at them.<br> +<br> +At the end of this initial stage the students should have a fair idea +of what the assignment is about and how it is being assessed. They are +now allowed to submit their own work. This is not a fixed milestone, +each student will reach this second stage independently. With all the +inital assessments graded the teacher can sit back and let the module +run until the deadline date.<br> +<br> +The module can be set up to allow single submission or multiple +submissions. Depending on this setting, the student' first submission is +either their first draft or their only attempt.When the students have +submitted work they are asked to assess work from the other students. +They are also shown the assessments of their own work by the other +students. However, they must do at least one assessment before they are +shown the peer assessments. When the assignment allows resubmission the +student may, in the light of the feedback, revise their work and submit +a new copy for peer assessment. The peer assessment of student +submissions continues until the deadline date is reached.<br> +<br> +The teacher now has several choices. The module allows a flexible +approach to calculating the final grade for the students. In fact, the +final grade can be a teacher-defined combination of:<br> +<ol> + <li>The teacher's grade of the (final) submission</li> + <li>The average peer grade of the (final) submission</li> + <li>The student's grading performance</li> +</ol> +Obviously if (1) is to be included then the teacher has to assess the +student submissions after the deadline. There is no real need for the +students' assessments produced during the peer asessment phase to be +graded by the teacher. The module can assess the quality of these +assignments by internal comparison. This is probably just as well as the +number of assessments generated at that phase could be quite large even +for reasonably sized classes. The final phase of the module is the +release of the final grades to the students.<br> +<br> +Thus the module normally runs through four phases:<br> +<ol> + <li>Set up</li> + <li>Student assessment of the example assignments, submission of work +and peer assessment</li> + <li>Calculation of final grades</li> + <li>Release of final grades</li> +</ol> +And there's a single deadline occurring between phases 2 and 3.<br> +<br> +<h3>Variants</h3> +That describes the "standard" assignment which this module supports. +The module also lends itself to a few other types of assignment. For +example, a "case study" assignment can be handled where the teacher +sets up a number of scenarios for the students to comment on. Here there +are no student submissions the teacher simply grades the students +responses to each scenario and uses those to calculate the final grades.<br> +<br> +A second example using the module in an abbrieviated way is as a simple +peer assessment assignment. Here the teacher sets up the assessment +elements but does not submit any example assignments and the students go +straight in to the peer assessment phase, possibly going where no class +has boldly gone before!<br> +<br> +For certain assignments the teacher may decide that the example +assignments would simply lead the students into doing a cut-and-paste +exercise to produce their assignments. Here the initial assessment phase +would be better performed on a set of examples from a related subject +rather than those directly pertaining to the particular assignment. In +this way the students are shown what is expected of them and how it is +being assessed but "the cat is still in the bag" so to speak. Careful +monitoring of the assignment would be necessary else many students, not +reading the instructions, would reproduce the examples rather then the +required assignment.<br> +<br> +The module can also be set up to ask the students to asssess their own +work. That is instead of peer assessment the assignment becomes one +involving self assessment. Here it is likely that the teacher would +grade the (self) assessments make in the second half of phase 2 and +include these grades in the final grades.<br> +<br> +<h3>Conclusion</h3> +Thus the module is quite flexible while still being relatively easy to +set up and run. The module has been keep purposely simple. For example +it does not allow the students to enter into an assessment - reply - +assessment cycle during the peer assessment phase. &nbsp;If that +sophistication is required then the Peer Graded Assignment module should +be used. Other technical restrictions are that the submitted assignments +are limited to a single file, that is although multiple submissions are +allowed each submission can only be just one file. The files themselves +are limited to a prediefined size and the module does not support links +to external pieces of work.<br> +&nbsp;<br> +Ray Kingdon <br> +April 2003<br> +<br> +</body> +</html> diff --git a/mod/workshop/assess.php b/mod/workshop/assess.php deleted file mode 100644 index cfe4471e2ee..00000000000 --- a/mod/workshop/assess.php +++ /dev/null @@ -1,137 +0,0 @@ -<?php // $Id: assess.php - - require("../../config.php"); - require("lib.php"); - require("locallib.php"); - - require_variable($sid); // Submission ID - optional_variable($allowcomments, false); - optional_variable($redirect, ''); - - if (! $submission = get_record('workshop_submissions', 'id', $sid)) { - error("Incorrect submission id"); - } - if (! $workshop = get_record("workshop", "id", $submission->workshopid)) { - error("Submission is incorrect"); - } - if (! $course = get_record("course", "id", $workshop->course)) { - error("Workshop is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id)) { - error("No coursemodule found"); - } - - if (!$redirect) { - $redirect = urlencode($_SERVER["HTTP_REFERER"].'#sid='.$submission->id); - } - - require_login($course->id, false, $cm); - - $strworkshops = get_string("modulenameplural", "workshop"); - $strworkshop = get_string("modulename", "workshop"); - $strassess = get_string("assess", "workshop"); - - /// Now check whether we need to display a frameset - - if (empty($_GET['frameset'])) { - echo "<head><title>{$course->shortname}: ".format_string($workshop->name,true)."</title></head>\n"; - echo "<frameset rows=\"50%,*\" border=\"10\">"; - echo "<frame src=\"assess.php?id=$id&amp;sid=$sid&amp;frameset=top&amp;redirect=$redirect\" border=\"10\">"; - echo "<frame src=\"assess.php?id=$id&amp;sid=$sid&amp;frameset=bottom&amp;redirect=$redirect\">"; - echo "</frameset>"; - exit; - } - - /// top frame with the navigation bar and the assessment form - - if (!empty($_GET['frameset']) and $_GET['frameset'] == "top") { - - print_header_simple(format_string($workshop->name), "", - "<a href=\"index.php?id=$course->id\">$strworkshops</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($workshop->name,true)."</a> -> $strassess", - "", '<base target="_parent" />', true); - - // there can be an assessment record (for teacher submissions), if there isn't... - if (!$assessment = get_record("workshop_assessments", "submissionid", $submission->id, "userid", - $USER->id)) { - // if it's the teacher see if the user has done a self assessment if so copy it - if (isteacher($course->id) and ($assessment = get_record("workshop_assessments", "submissionid", - $submission->id, "userid", $submission->userid))) { - $assessment = workshop_copy_assessment($assessment, $submission, true); - // need to set owner of assessment - set_field("workshop_assessments", "userid", $USER->id, "id", $assessment->id); - $assessment->resubmission = 0; // not set by workshop_copy_assessment - $assessment->timegraded = 0; // not set by workshop_copy_assessment - $assessment->timeagreed = 0; // not set by workshop_copy_assessment - } else { - $yearfromnow = time() + 365 * 86400; - // ...create one and set timecreated way in the future, this is reset when record is updated - $assessment->workshopid = $workshop->id; - $assessment->submissionid = $submission->id; - $assessment->userid = $USER->id; - $assessment->timecreated = $yearfromnow; - $assessment->grade = -1; // set impossible grade - $assessment->timegraded = 0; - $assessment->timeagreed = 0; - $assessment->resubmission = 0; - if (!$assessment->id = insert_record("workshop_assessments", $assessment)) { - error("Could not insert workshop assessment!"); - } - // if it's the teacher and the workshop is error banded set all the elements to Yes - if (isteacher($course->id) and ($workshop->gradingstrategy == 2)) { - for ($i =0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = ''; - $element->grade = 1; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now set the adjustment - unset($element); - $i = $workshop->nelements; - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->grade = 0; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - } - } - - print_heading_with_help(get_string("assessthissubmission", "workshop"), "grading", "workshop"); - - // show assessment and allow changes - workshop_print_assessment($workshop, $assessment, true, $allowcomments, $redirect); - - print_heading("<a target=\"{$CFG->framename}\" href=\"$redirect\">".get_string("cancel")."</a>"); - print_footer($course); - exit; - } - - /// print bottom frame with the submission - - print_header('', '', '', '', '<base target="_parent" />'); - $title = '"'.$submission->title.'" '; - if (isteacher($course->id)) { - $title .= ' '.get_string('by', 'workshop').' '.workshop_fullname($submission->userid, $course->id); - } - print_heading($title); - workshop_print_submission($workshop, $submission); - - if (isteacher($course->id)) { - echo '<br /><center><b>'.get_string('assessments', 'workshop').': </b><br />'; - echo workshop_print_submission_assessments($workshop, $submission, "all"); - echo '</center>'; - } - - - print_footer('none'); - -?> - diff --git a/mod/workshop/assessment_grading_form.html b/mod/workshop/assessment_grading_form.html deleted file mode 100644 index dc9546fd666..00000000000 --- a/mod/workshop/assessment_grading_form.html +++ /dev/null @@ -1,29 +0,0 @@ -<?php - if (!isset($assessment->teachercomment)) { - $assessment->teachercomment = ''; - } -?> -<form name="gradingform" action="assessments.php" method="post"> - <input type="hidden" name="action" value="updategrading" /> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="redirect" value="<?php echo $redirect ?>" /> - <input type="hidden" name="aid" value="<?php echo $aid ?>" /> - <center> - <table cellpadding="5" border="1"> - <tr valign="top"> - <td align="right"><b><?php print_string("teacherscomment", "workshop") ?>:</b></td> - <td> - <textarea name="teachercomment" rows="5" cols="75"><?php echo $assessment->teachercomment; ?></textarea> - </td> - </tr> - <tr> - <td align="right"> - <b><?php print_string("gradeforstudentsassessment", "workshop") ?></td> - <td> - <input type="text" name="gradinggrade" size="3" value="<?php p($assessment->gradinggrade) ?>" />% - </td> - </tr> - </table> - <input type="submit" value="<?php print_string("savemygrading", "workshop") ?>" /> - </center> -</form> \ No newline at end of file diff --git a/mod/workshop/assessments.php b/mod/workshop/assessments.php index 4f71767695d..a2b98b7175f 100644 --- a/mod/workshop/assessments.php +++ b/mod/workshop/assessments.php @@ -1,65 +1,70 @@ -<?php // $Id: lib.php,v 1.1 22 Aug 2003 +<?PHP // $Id: lib.php,v 1.1 22 Aug 2003 /************************************************* ACTIONS handled are: addcomment - addstockcomment - confirmdelete - delete + adminconfirmdelete + admindelete adminlist agreeassessment + assesssubmission displaygradingform editcomment editelements (teachers only) - gradeallassessments (teachers only) gradeassessment (teachers only) insertcomment insertelements (for teachers) listungradedstudentsubmissions (for teachers) listungradedteachersubmissions (for teachers) listteachersubmissions - regradestudentassessments (for teachers) updateassessment updatecomment updategrading + userconfirmdelete + userdelete + viewassessment ************************************************/ require("../../config.php"); - require("lib.php"); + require("lib.php"); require("locallib.php"); - optional_variable($id, ''); // Course Module ID - optional_variable($wid, ''); // Workshop ID + optional_variable($id); // Course Module ID + optional_variable($a); // workshop ID // get some useful stuff... if ($id) { if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); } + + if (! $course = get_record("course", "id", $cm->course)) { + error("Course is misconfigured"); + } + if (! $workshop = get_record("workshop", "id", $cm->instance)) { error("Course module is incorrect"); } - } else if ($wid) { - if (! $workshop = get_record("workshop", "id", $wid)) { - error("Workshop id is incorrect"); - } - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("No coursemodule found"); - } + } else { - error("No id given"); - } - if (! $course = get_record("course", "id", $cm->course)) { - error("Course is misconfigured"); + if (! $workshop = get_record("workshop", "id", $a)) { + error("Course module is incorrect"); + } + if (! $course = get_record("course", "id", $workshop->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id)) { + error("Course Module ID was incorrect"); + } } - require_login($course->id, false, $cm); - + require_login($course->id); + $navigation = ""; if ($course->category) { - $navigation = "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->"; + $navigation = "<A HREF=\"../../course/view.php?id=$course->id\">$course->shortname</A> ->"; } $strworkshops = get_string("modulenameplural", "workshop"); @@ -67,283 +72,90 @@ $strassessments = get_string("assessments", "workshop"); // ... print the header and... - print_header_simple(format_string($workshop->name), "", - "<a href=\"index.php?id=$course->id\">$strworkshops</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($workshop->name,true)."</a> -> $strassessments", + print_header("$course->shortname: $workshop->name", "$course->fullname", + "$navigation <A HREF=index.php?id=$course->id>$strworkshops</A> -> + <A HREF=\"view.php?a=$workshop->id\">$workshop->name</A> -> $strassessments", "", "", true); - //...get the action + //...get the action require_variable($action); - + /*************** add comment to assessment (by author, assessor or teacher) ***************************/ if ($action == 'addcomment') { - + print_heading_with_help(get_string("addacomment", "workshop"), "addingacomment", "workshop"); // get assessment record if (!$assessmentid = $_REQUEST['aid']) { // comes from link or hidden form variable error("Assessment id not given"); - } + } $assessment = get_record("workshop_assessments", "id", $assessmentid); if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { error("Submission not found"); - } + } ?> - <form name="commentform" action="assessments.php" method="post"> - <input type="hidden" name="action" value="insertcomment" /> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="aid" value="<?php echo $_REQUEST['aid'] ?>" /> - <center> - <table cellpadding="5" border="1"> - <?php + <FORM NAME="commentform" ACTION="assessments.php" METHOD="post"> + <INPUT TYPE="HIDDEN" NAME="action" VALUE="insertcomment"> + <INPUT TYPE="HIDDEN" NAME="id" VALUE="<?PHP echo $cm->id ?>"> + <INPUT TYPE="HIDDEN" NAME="aid" VALUE="<?PHP echo $_REQUEST['aid'] ?>"> + <CENTER> + <TABLE CELLPADDING=5 BORDER=1> + <?PHP // now get the comment - echo "<tr valign=\"top\">\n"; + echo "<TR valign=top>\n"; - echo " <td align=\"right\"><b>". get_string("comment", "workshop").":</b></td>\n"; + echo " <TD align=right><P><B>". get_string("comment", "workshop").":</B></P></TD>\n"; - echo " <td>\n"; + echo " <TD>\n"; - echo " <textarea name=\"comments\" rows=\"5\" cols=\"75\">\n"; + echo " <textarea name=\"comments\" rows=5 cols=75 wrap=\"virtual\">\n"; echo "</textarea>\n"; - echo " </td></tr></table>\n"; - echo "<input type=\"submit\" value=\"".get_string("savemycomment", "workshop")."\" />\n"; - echo "</center></form>\n"; - echo "<center><b>".get_string("assessment", "workshop"). "</b></center>\n"; + echo " </TD></TR></TABLE>\n"; + echo "<INPUT TYPE=submit VALUE=\"".get_string("savemycomment", "workshop")."\">\n"; + echo "</CENTER></FORM>\n"; + echo "<P><CENTER><B>".get_string("assessment", "workshop"). "</B></CENTER>\n"; workshop_print_assessment($workshop, $assessment); - } + } - /*************** add stock comment (by teacher ) ***************************/ - elseif ($action == 'addstockcomment') { - require_variable($aid); - require_variable($elementno); + /******************* admin confirm delete ************************************/ + elseif ($action == 'adminconfirmdelete' ) { if (!isteacher($course->id)) { error("Only teachers can look at this page"); - } - - if (!$assessment = get_record("workshop_assessments", "id", $aid)) { - error("workshop assessment is misconfigured"); - } - $form = data_submitted('nomatch'); //Nomatch because we can come from assess.php - - // store the comment in the stock comments table - if ($elementno == 99) { // it's the general comment - $form->feedback_99 = $form->generalcomment; - } - $comment->workshopid = $workshop->id; - $comment->elementno = $elementno; - $comment->comments = $form->{"feedback_$elementno"}; - if (!(trim($comment->comments))) { - // no comment given - just redisplay assessment form - workshop_print_assessment($workshop, $assessment, true, true, $form->returnto); - print_footer($course); - exit(); - } - - if (!$element->id = insert_record("workshop_stockcomments", $comment)) { - error("Could not insert comment into comment bank"); - } - - // now upate the assessment (just the elements, the assessment itself is not updated) - - // first get the assignment elements for maxscores and weights... - $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC"); - if (count($elementsraw) < $workshop->nelements) { - print_string("noteonassignmentelements", "workshop"); - } - if ($elementsraw) { - foreach ($elementsraw as $element) { - $elements[] = $element; // to renumber index 0,1,2... } - } else { - $elements = null; - } - - $timenow = time(); - // don't fiddle about, delete all the old and add the new! - delete_records("workshop_grades", "assessmentid", $assessment->id); - - - //determine what kind of grading we have - switch ($workshop->gradingstrategy) { - case 0: // no grading - // Insert all the elements that contain something - for ($i = 0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - $grade = 0; // set to satisfy save to db - break; - - case 1: // accumulative grading - // Insert all the elements that contain something - foreach ($form->grade as $key => $thegrade) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; - $element->grade = $thegrade; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now work out the grade... - $rawgrade=0; - $totalweight=0; - foreach ($form->grade as $key => $grade) { - $maxscore = $elements[$key]->maxscore; - $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { - $totalweight += $weight; - } - $rawgrade += ($grade / $maxscore) * $weight; - // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />"; - } - $grade = 100.0 * ($rawgrade / $totalweight); - break; - - case 2: // error banded graded - // Insert all the elements that contain something - $error = 0.0; - for ($i =0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; - $element->grade = $form->grade[$i]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - if (empty($form->grade[$i])){ - $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight]; - } - } - // now save the adjustment - unset($element); - $i = $workshop->nelements; - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->grade = $form->grade[$i]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade; - // do sanity check - if ($grade < 0) { - $grade = 0; - } elseif ($grade > 100) { - $grade = 100; - } - echo "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\n"; - break; - - case 3: // criteria grading - // save in the selected criteria value in element zero, - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = 0; - $element->grade = $form->grade[0]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - // now save the adjustment in element one - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = 1; - $element->grade = $form->grade[1]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]); - break; - - case 4: // rubric grading (identical to accumulative grading) - // Insert all the elements that contain something - foreach ($form->grade as $key => $thegrade) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; - $element->grade = $thegrade; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now work out the grade... - $rawgrade=0; - $totalweight=0; - foreach ($form->grade as $key => $grade) { - $maxscore = $elements[$key]->maxscore; - $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { - $totalweight += $weight; - } - $rawgrade += ($grade / $maxscore) * $weight; - } - $grade = 100.0 * ($rawgrade / $totalweight); - break; - - } // end of switch - - - // any comment? - if (!empty($form->generalcomment)) { // update the object (no need to update the db record) - $assessment->generalcomment = $form->generalcomment; - } - - // redisplay form, going back to original returnto address - workshop_print_assessment($workshop, $assessment, true, true, $form->returnto); - - // add_to_log($course->id, "workshop", "assess", "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$assessment->id", "$cm->id"); - - } - - - /******************* confirm delete ************************************/ - elseif ($action == 'confirmdelete' ) { - if (empty($_GET['aid'])) { - error("Confirm delete: assessment id missing"); + error("Admin confirm delete: assessment id missing"); } - - notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("assessment", "workshop")), - "assessments.php?action=delete&amp;id=$cm->id&amp;aid=$_GET[aid]", "submissions.php?action=adminlist&amp;id=$cm->id"); + + notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("assessment", "workshop")), + "assessments.php?action=admindelete&id=$cm->id&aid=$_GET[aid]", "submissions.php?action=adminlist&id=$cm->id"); } + + /******************* admin delete ************************************/ + elseif ($action == 'admindelete' ) { - /******************* delete ************************************/ - elseif ($action == 'delete' ) { - - if (empty($_GET['aid'])) { - error("Delete: submission id missing"); + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); } - + if (empty($_GET['aid'])) { + error("Admin delete: submission id missing"); + } + print_string("deleting", "workshop"); // first delete all the associated records... delete_records("workshop_comments", "assessmentid", $_GET['aid']); delete_records("workshop_grades", "assessmentid", $_GET['aid']); // ...now delete the assessment... delete_records("workshop_assessments", "id", $_GET['aid']); - - print_continue("view.php?id=$cm->id"); + + print_continue("submissions.php?id=$cm->id&action=adminlist"); } - + /*********************** admin list of asssessments (of a submission) (by teachers)**************/ elseif ($action == 'adminlist') { @@ -351,13 +163,13 @@ if (!isteacher($course->id)) { error("Only teachers can look at this page"); } - + if (empty($_GET['sid'])) { error ("Workshop asssessments: adminlist called with no sid"); } $submission = get_record("workshop_submissions", "id", $_GET['sid']); workshop_print_assessments_for_admin($workshop, $submission); - print_continue("submissions.php?action=adminlist&amp;id=$cm->id"); + print_continue("submissions.php?action=adminlist&a=$workshop->id"); } @@ -367,13 +179,13 @@ if (!isteacher($course->id)) { error("Only teachers can look at this page"); } - + if (empty($_GET['userid'])) { error ("Workshop asssessments: adminlistbystudent called with no userid"); } $user = get_record("user", "id", $_GET['userid']); workshop_print_assessments_by_user_for_admin($workshop, $user); - print_continue("submissions.php?action=adminlist&amp;id=$cm->id"); + print_continue("submissions.php?action=adminlist&a=$workshop->id"); } @@ -381,32 +193,72 @@ elseif ($action == 'agreeassessment') { $timenow = time(); // assessment id comes from link or hidden form variable - if (!$assessment = get_record("workshop_assessments", "id", $_REQUEST['aid'])) { + if (!$assessment = get_record("workshop_assessments", "id", $_REQUEST['aid'])) { error("Assessment : agree assessment failed"); } //save time of agreement set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id); - echo "<centre><b>".get_string("savedok", "workshop")."</b></center><br />\n"; - - add_to_log($course->id, "workshop", "agree", "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$assessment->id"); + echo "<CENTRE><B>".get_string("savedok", "workshop")."</B></CENTER><BR>\n"; + + add_to_log($course->id, "workshop", "agree", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id"); print_continue("view.php?id=$cm->id"); } + /*************** Assess submission (by teacher or student) ***************************/ + elseif ($action == 'assesssubmission') { + + require_variable($sid); + + optional_variable($allowcomments); + if (!isset($allowcomments)) { + $allowcomments = false; + } + + if (! $submission = get_record("workshop_submissions", "id", $sid)) { + error("Assess submission is misconfigured - no submission record!"); + } + + // there can be an assessment record (for teacher submissions), if there isn't... + if (!$assessment = get_record("workshop_assessments", "submissionid", $submission->id, "userid", + $USER->id)) { + $yearfromnow = time() + 365 * 86400; + // ...create one and set timecreated way in the future, this is reset when record is updated + $assessment->workshopid = $workshop->id; + $assessment->submissionid = $submission->id; + $assessment->userid = $USER->id; + $assessment->grade = -1; // set impossible grade + $assessment->timecreated = $yearfromnow; + $assessment->timegraded = 0; + $assessment->timeagreed = 0; + $assessment->resubmission = 0; + if (!$assessment->id = insert_record("workshop_assessments", $assessment)) { + error("Could not insert workshop assessment!"); + } + } + + print_heading_with_help(get_string("assessthissubmission", "workshop"), "grading", "workshop"); + + // show assessment and allow changes + workshop_print_assessment($workshop, $assessment, true, $allowcomments, $_SERVER["HTTP_REFERER"]); + } + + /*************** display grading form (viewed by student) *********************************/ elseif ($action == 'displaygradingform') { - print_heading_with_help(get_string("specimenassessmentform", "workshop"), "specimen", "workshop"); - - workshop_print_assessment($workshop); // called with no assessment - print_continue("view.php?id=$cm->id"); + print_heading_with_help(get_string("specimenassessmentform", "workshop"), "specimen", "workshop"); + + workshop_print_assessment($workshop); // called with no assessment + print_continue("view.php?a=$workshop->id"); } + /*************** edit comment on assessment (by author, assessor or teacher) ***************************/ elseif ($action == 'editcomment') { - + print_heading_with_help(get_string("editacomment", "workshop"), "editingacomment", "workshop"); // get the comment record... if (!$comment = get_record("workshop_comments", "id", $_GET['cid'])) { @@ -419,26 +271,26 @@ error("Edit Comment: Submission not found"); } ?> - <form name="gradingform" action="assessments.php" method="post"> - <input type="hidden" name="action" value="updatecomment" /> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="cid" value="<?php echo $_GET['cid'] ?>" /> - <center> - <table cellpadding="5" border="1"> - <?php + <FORM NAME="gradingform" ACTION="assessments.php" METHOD="post"> + <INPUT TYPE="HIDDEN" NAME="action" VALUE="updatecomment"> + <INPUT TYPE="HIDDEN" NAME="id" VALUE="<?PHP echo $cm->id ?>"> + <INPUT TYPE="HIDDEN" NAME="cid" VALUE="<?PHP echo $_GET['cid'] ?>"> + <CENTER> + <TABLE CELLPADDING=5 BORDER=1> + <?PHP // now show the comment - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><b>". get_string("comment", "workshop").":</b></td>\n"; - echo " <td>\n"; - echo " <textarea name=\"comments\" rows=\"5\" cols=\"75\">\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("comment", "workshop").":</B></P></TD>\n"; + echo " <TD>\n"; + echo " <textarea name=\"comments\" rows=5 cols=75 wrap=\"virtual\">\n"; if (isset($comment->comments)) { echo $comment->comments; } echo " </textarea>\n"; - echo " </td></tr></table>\n"; - echo "<input type=\"submit\" value=\"".get_string("savemycomment", "workshop")."\" />\n"; - echo "</center></form>\n"; + echo " </TD></TR></TABLE>\n"; + echo "<INPUT TYPE=submit VALUE=\"".get_string("savemycomment", "workshop")."\">\n"; + echo "</CENTER></FORM>\n"; workshop_print_assessment($workshop, $assessment); } @@ -448,27 +300,27 @@ if (!isteacher($course->id)) { error("Only teachers can look at this page"); - } + } $count = count_records("workshop_grades", "workshopid", $workshop->id); - if ($count) { + if ($workshop->phase > 1 and $count) { notify(get_string("warningonamendingelements", "workshop")); - } + } // set up heading, form and table print_heading_with_help(get_string("editingassessmentelements", "workshop"), "elements", "workshop"); ?> <form name="form" method="post" action="assessments.php"> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="action" value="insertelements" /> - <center><table cellpadding="5" border="1"> - <?php - + <input type="hidden" name="id" value="<?PHP echo $cm->id ?>"> + <input type="hidden" name="action" value="insertelements"> + <CENTER><TABLE cellpadding=5 border=1> + <?PHP + // get existing elements, if none set up appropriate default ones if ($elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC" )) { foreach ($elementsraw as $element) { $elements[] = $element; // to renumber index 0,1,2... + } } - } // check for missing elements (this happens either the first time round or when the number of elements is icreased) for ($i=0; $i<$workshop->nelements; $i++) { if (!isset($elements[$i])) { @@ -476,200 +328,230 @@ $elements[$i]->scale =0; $elements[$i]->maxscore = 0; $elements[$i]->weight = 11; + } } - } - + switch ($workshop->gradingstrategy) { case 0: // no grading for ($i=0; $i<$workshop->nelements; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n"; - echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n"; - echo " </td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo "</tr>\n"; - } + echo "<TR valign=top>\n"; + echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n"; + echo "<TD><textarea name=\"description[]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n"; + echo " </TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; + } break; case 1: // accumulative grading // set up scales name foreach ($WORKSHOP_SCALES as $KEY => $SCALE) { $SCALES[] = $SCALE['name']; - } + } for ($i=0; $i<$workshop->nelements; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n"; - echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n"; - echo " </td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><b>". get_string("typeofscale", "workshop"). ":</b></td>\n"; - echo "<td valign=\"top\">\n"; + echo "<TR valign=top>\n"; + echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n"; + echo "<TD><textarea name=\"description[]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n"; + echo " </TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("typeofscale", "workshop"). ":</B></P></TD>\n"; + echo "<TD valign=\"top\">\n"; choose_from_menu($SCALES, "scale[]", $elements[$i]->scale, ""); if ($elements[$i]->weight == '') { // not set $elements[$i]->weight = 11; // unity - } - echo "</td></tr>\n"; - echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n"; + } + echo "</TR>\n"; + echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "workshop").":</B></TD><TD>\n"; workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo "</tr>\n"; - } + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; + } break; - + case 2: // error banded grading for ($i=0; $i<$workshop->nelements; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n"; - echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n"; - echo " </td></tr>\n"; + echo "<TR valign=top>\n"; + echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n"; + echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n"; + echo " </TD></TR>\n"; if ($elements[$i]->weight == '') { // not set $elements[$i]->weight = 11; // unity } - echo "</tr>\n"; - echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n"; + echo "</TR>\n"; + echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "workshop").":</B></TD><TD>\n"; workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo "</tr>\n"; - } - echo "</center></table><br />\n"; - echo "<center><b>".get_string("gradetable","workshop")."</b></center>\n"; - echo "<center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"CENTER\">". + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; + } + echo "</CENTER></TABLE><BR>\n"; + echo "<P><CENTER><B>".get_string("gradetable","workshop")."</B></CENTER>\n"; + echo "<CENTER><TABLE cellpadding=5 border=1><TR><TD ALIGN=\"CENTER\">". get_string("numberofnegativeresponses", "workshop"); - echo "</td><td>". get_string("suggestedgrade", "workshop")."</td></tr>\n"; + echo "</TD><TD>". get_string("suggestedgrade", "workshop")."</TD></TR>\n"; for ($j = $workshop->grade; $j >= 0; $j--) { $numbers[$j] = $j; - } + } for ($i=0; $i<=$workshop->nelements; $i++) { - echo "<tr><td align=\"CENTER\">$i</td><td align=\"CENTER\">"; + echo "<TR><TD ALIGN=\"CENTER\">$i</TD><TD ALIGN=\"CENTER\">"; if (!isset($elements[$i])) { // the "last one" will be! $elements[$i]->description = ""; $elements[$i]->maxscore = 0; - } + } choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, ""); - echo "</td></tr>\n"; - } - echo "</table></center>\n"; + echo "</TD></TR>\n"; + } + echo "</TABLE></CENTER>\n"; break; - + case 3: // criterion grading for ($j = 100; $j >= 0; $j--) { $numbers[$j] = $j; - } + } for ($i=0; $i<$workshop->nelements; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><b>". get_string("criterion","workshop")." $iplus1:</b></td>\n"; - echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n"; - echo " </td></tr>\n"; - echo "<tr><td><b>". get_string("suggestedgrade", "workshop").":</b></td><td>\n"; + echo "<TR valign=top>\n"; + echo " <TD ALIGN=RIGHT><P><B>". get_string("criterion","workshop")." $iplus1:</B></TD>\n"; + echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n"; + echo " </TD></TR>\n"; + echo "<TR><TD><B>". get_string("suggestedgrade", "workshop").":</B></TD><TD>\n"; choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, ""); - echo "</td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo "</tr>\n"; - } + echo "</TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; + } break; case 4: // rubric for ($j = 100; $j >= 0; $j--) { $numbers[$j] = $j; - } + } if ($rubricsraw = get_records("workshop_rubrics", "workshopid", $workshop->id)) { foreach ($rubricsraw as $rubric) { $rubrics[$rubric->elementno][$rubric->rubricno] = $rubric->description; // reindex 0,1,2... + } } - } for ($i=0; $i<$workshop->nelements; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n"; - echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n"; - echo " </td></tr>\n"; - echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n"; + echo "<TR valign=top>\n"; + echo " <TD ALIGN=RIGHT><P><B>". get_string("element","workshop")." $iplus1:</B></TD>\n"; + + echo "<TD><textarea name=\"description[$i]\" rows=3 cols=75 wrap=\"virtual\">".$elements[$i]->description."</textarea>\n"; + + echo " </TD></TR>\n"; + echo "<TR valign=top><TD ALIGN=RIGHT><B>".get_string("elementweight", "workshop").":</B></TD><TD>\n"; workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); - echo " </td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; for ($j=0; $j<5; $j++) { $jplus1 = $j+1; if (empty($rubrics[$i][$j])) { $rubrics[$i][$j] = ""; + } + echo "<TR valign=top>\n"; + + echo " <TD ALIGN=RIGHT><P><B>". get_string("grade","workshop")." $j:</B></TD>\n"; + + echo "<TD><textarea name=\"rubric[$i][$j]\" rows=3 cols=75 wrap=\"virtual\">".$rubrics[$i][$j]."</textarea>\n"; + + echo " </TD></TR>\n"; } - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><b>". get_string("grade","workshop")." $j:</b></td>\n"; - echo "<td><textarea name=\"rubric[$i][$j]\" rows=\"3\" cols=\"75\">".$rubrics[$i][$j]."</textarea>\n"; - echo " </td></tr>\n"; - } - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo "<TR valign=top>\n"; + + echo " <TD colspan=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + + echo "</TR>\n"; } break; } // close table and form ?> - </table><br /> - <input type="submit" value="<?php print_string("savechanges") ?>" /> - <input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> - </center> - </form> - <?php - } + </TABLE> + <input type="submit" value="<?php print_string("savechanges") ?>"> + <input type="submit" name=cancel value="<?php print_string("cancel") ?>"> + </CENTER> - - /*************** grade all assessments (by teacher) ***************************/ - elseif ($action == 'gradeallassessments') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); + </FORM> + <?PHP } - - print_heading(get_string("gradingallassessments", "workshop")); - workshop_grade_assessments($workshop); - print_continue("view.php?id=$cm->id"); - } - - + + /*************** grade (student's) assessment (by teacher) ***************************/ elseif ($action == 'gradeassessment') { - + if (!isteacher($course->id)) { error("Only teachers can look at this page"); - } + } + // set up coment scale + for ($i=COMMENTSCALE; $i>=0; $i--) { + $num[$i] = $i; + } + print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop"); // get assessment record if (!$assessmentid = $_GET['aid']) { error("Assessment id not given"); - } + } $assessment = get_record("workshop_assessments", "id", $assessmentid); if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { error("Submission not found"); - } + } // get the teacher's assessment first if ($teachersassessment = workshop_get_submission_assessment($submission, $USER)) { - echo "<center><b>".get_string("teacherassessments", "workshop", $course->teacher)."</b></center>\n"; + echo "<P><CENTER><B>".get_string("teacherassessments", "workshop", $course->teacher)."</B></CENTER>\n"; workshop_print_assessment($workshop, $teachersassessment); - } + } // now the student's assessment (don't allow changes) $user = get_record("user", "id", $assessment->userid); - echo "<center><b>".get_string("assessmentby", "workshop", $user->firstname." ".$user->lastname)."</b></center>\n"; + echo "<P><CENTER><B>".get_string("assessmentby", "workshop", fullname($user))."</B></CENTER>\n"; workshop_print_assessment($workshop, $assessment); + + ?> + <FORM NAME="gradingform" ACTION="assessments.php" METHOD="post"> + <INPUT TYPE="HIDDEN" NAME="action" VALUE="updategrading"> + <INPUT TYPE="HIDDEN" NAME="id" VALUE="<?PHP echo $cm->id ?>"> + <INPUT TYPE="HIDDEN" NAME="stype" VALUE="<?PHP echo $_GET['stype'] ?>"> + <INPUT TYPE="HIDDEN" NAME="aid" VALUE="<?PHP echo $_GET['aid'] ?>"> + <CENTER> + <TABLE CELLPADDING=5 BORDER=1> + <?PHP + + // now get the teacher's comment + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("teacherscomment", "workshop").":</B></P></TD>\n"; + + echo " <TD>\n"; + + echo " <textarea name=\"teachercomment\" rows=5 cols=75 wrap=\"virtual\">\n"; + if (isset($assessment->teachercomment)) { + echo $assessment->teachercomment; + } + echo "</textarea>\n"; + + echo " </TD>\n"; + + echo "</TR>\n"; + + echo "<TR><TD ALIGN=RIGHT><B>".get_string("gradeforstudentsassessment", "workshop")."</TD><TD>\n"; + choose_from_menu($num, "gradinggrade", $assessment->gradinggrade, ""); + echo "</TD></TR></TABLE>\n"; + echo "<INPUT TYPE=submit VALUE=\"".get_string("savemygrading", "workshop")."\">\n"; + echo "</CENTER></FORM>\n"; + } - include('assessment_grading_form.html'); - die; - } /*************** insert (new) comment (by author, assessor or teacher) ***************************/ @@ -677,7 +559,7 @@ $timenow = time(); $form = (object)$_POST; - + if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) { error("Unable to insert comment"); } @@ -690,13 +572,14 @@ if (!$comment->id = insert_record("workshop_comments", $comment)) { error("Could not insert workshop comment!"); } - + add_to_log($course->id, "workshop", "comment", "view.php?id=$cm->id", "$comment->id"); - print_continue("viewassessment.php?id=$cm->id&amp;aid=$assessment->id"); + print_continue("assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id"); } + /*********************** insert/update assignment elements (for teachers)***********************/ elseif ($action == 'insertelements') { @@ -704,11 +587,11 @@ error("Only teachers can look at this page"); } - $form = data_submitted(); - + $form = (object)$HTTP_POST_VARS; + // let's not fool around here, dump the junk! delete_records("workshop_elements", "workshopid", $workshop->id); - + // determine wich type of grading switch ($workshop->gradingstrategy) { case 0: // no grading @@ -725,7 +608,7 @@ } } break; - + case 1: // accumulative grading // Insert all the elements that contain something foreach ($form->description as $key => $description) { @@ -752,7 +635,7 @@ } } break; - + case 2: // error banded grading... case 3: // ...and criterion grading // Insert all the elements that contain something, the number of descriptions is one less than the number of grades @@ -772,7 +655,7 @@ } } break; - + case 4: // ...and criteria grading // Insert all the elements that contain something foreach ($form->description as $key => $description) { @@ -821,7 +704,7 @@ error("Only teachers can look at this page"); } workshop_list_ungraded_assessments($workshop, "student"); - print_continue("view.php?id=$cm->id"); + print_continue("view.php?a=$workshop->id"); } @@ -832,7 +715,7 @@ error("Only teachers can look at this page"); } workshop_list_ungraded_assessments($workshop, "teacher"); - print_continue("view.php?id=$cm->id"); + print_continue("view.php?a=$workshop->id"); } @@ -840,218 +723,7 @@ elseif ($action == 'listteachersubmissions') { workshop_list_teacher_submissions($workshop, $USER); - print_continue("view.php?id=$cm->id"); - } - - - /******************* regrade student assessments ************************************/ - elseif ($action == 'regradestudentassessments' ) { - - $timenow = time(); - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - // get all the submissions... - if ($submissions = get_records("workshop_submissions", "workshopid", $workshop->id)) { - foreach ($submissions as $submission) { - // ...if cold... - if (($submission->timecreated + $CFG->maxeditingtime) < $timenow) { - // ...clear assessment count so workshop_grade_assessments() can do its thing - set_field("workshop_submissions", "nassessments", 0, "id", $submission->id); - } - } - } - echo "<pre>"; - workshop_grade_assessments($workshop); - echo '</pre>'; - print_continue("submissions.php?id=$cm->id&action=adminlist"); - } - - - /*************** remove stock comment (by teacher ) ***************************/ - elseif ($action == 'removestockcomment') { - - require_variable($aid); - require_variable($stockcommentid); - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - if (!$assessment = get_record("workshop_assessments", "id", $aid)) { - error("workshop assessment is misconfigured"); - } - $form = data_submitted('nomatch'); //Nomatch because we can come from assess.php - - // delete the comment from the stock comments table - if (!delete_records("workshop_stockcomments", "id", $stockcommentid)) { - error("Could not remove comment from the comment bank"); - } - - // now upate the assessment (just the elements, the assessment itself is not updated) - - // first get the assignment elements for maxscores and weights... - $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC"); - if (count($elementsraw) < $workshop->nelements) { - print_string("noteonassignmentelements", "workshop"); - } - if ($elementsraw) { - foreach ($elementsraw as $element) { - $elements[] = $element; // to renumber index 0,1,2... - } - } else { - $elements = null; - } - - $timenow = time(); - // don't fiddle about, delete all the old and add the new! - delete_records("workshop_grades", "assessmentid", $assessment->id); - - - //determine what kind of grading we have - switch ($workshop->gradingstrategy) { - case 0: // no grading - // Insert all the elements that contain something - for ($i =0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - $grade = 0; // set to satisfy save to db - break; - - case 1: // accumulative grading - // Insert all the elements that contain something - foreach ($form->grade as $key => $thegrade) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; - $element->grade = $thegrade; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now work out the grade... - $rawgrade=0; - $totalweight=0; - foreach ($form->grade as $key => $grade) { - $maxscore = $elements[$key]->maxscore; - $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { - $totalweight += $weight; - } - $rawgrade += ($grade / $maxscore) * $weight; - // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />"; - } - $grade = 100.0 * ($rawgrade / $totalweight); - break; - - case 2: // error banded graded - // Insert all the elements that contain something - $error = 0.0; - for ($i =0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; - $element->grade = $form->grade[$i]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - if (empty($form->grade[$i])){ - $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight]; - } - } - // now save the adjustment - unset($element); - $i = $workshop->nelements; - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->grade = $form->grade[$i]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade; - // do sanity check - if ($grade < 0) { - $grade = 0; - } elseif ($grade > 100) { - $grade = 100; - } - echo "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\n"; - break; - - case 3: // criteria grading - // save in the selected criteria value in element zero, - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = 0; - $element->grade = $form->grade[0]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - // now save the adjustment in element one - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = 1; - $element->grade = $form->grade[1]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]); - break; - - case 4: // rubric grading (identical to accumulative grading) - // Insert all the elements that contain something - foreach ($form->grade as $key => $thegrade) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; - $element->grade = $thegrade; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now work out the grade... - $rawgrade=0; - $totalweight=0; - foreach ($form->grade as $key => $grade) { - $maxscore = $elements[$key]->maxscore; - $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { - $totalweight += $weight; - } - $rawgrade += ($grade / $maxscore) * $weight; - } - $grade = 100.0 * ($rawgrade / $totalweight); - break; - - } // end of switch - - - // any comment? - if (!empty($form->generalcomment)) { // update the object (no need to update the db record) - $assessment->generalcomment = $form->generalcomment; - } - - // redisplay form, going back to original returnto address - workshop_print_assessment($workshop, $assessment, true, true, $form->returnto); - - // add_to_log($course->id, "workshop", "assess", "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$assessment->id", "$cm->id"); - + print_continue("view.php?a=$workshop->id"); } @@ -1079,26 +751,26 @@ $timenow = time(); // don't fiddle about, delete all the old and add the new! delete_records("workshop_grades", "assessmentid", $assessment->id); - - $form = data_submitted('nomatch'); //Nomatch because we can come from assess.php - + + $form = (object)$HTTP_POST_VARS; + //determine what kind of grading we have switch ($workshop->gradingstrategy) { case 0: // no grading // Insert all the elements that contain something - for ($i = 0; $i < $workshop->nelements; $i++) { + foreach ($form->feedback as $key => $thefeedback) { unset($element); $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; + $element->elementno = $key; + $element->feedback = $thefeedback; if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); + error("Could not insert workshop element!"); } } $grade = 0; // set to satisfy save to db break; - + case 1: // accumulative grading // Insert all the elements that contain something foreach ($form->grade as $key => $thegrade) { @@ -1106,10 +778,10 @@ $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; + $element->feedback = $form->feedback[$key]; $element->grade = $thegrade; if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); + error("Could not insert workshop element!"); } } // now work out the grade... @@ -1118,27 +790,27 @@ foreach ($form->grade as $key => $grade) { $maxscore = $elements[$key]->maxscore; $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { + if ($weight > 0) { $totalweight += $weight; } $rawgrade += ($grade / $maxscore) * $weight; - // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />"; + // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<BR>"; } - $grade = 100.0 * ($rawgrade / $totalweight); + $grade = $workshop->grade * ($rawgrade / $totalweight); break; case 2: // error banded graded // Insert all the elements that contain something - $error = 0.0; + $error = 0.0; for ($i =0; $i < $workshop->nelements; $i++) { unset($element); $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; + $element->feedback = $form->feedback[$i]; $element->grade = $form->grade[$i]; if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); + error("Could not insert workshop element!"); } if (empty($form->grade[$i])){ $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight]; @@ -1152,27 +824,21 @@ $element->elementno = $i; $element->grade = $form->grade[$i]; if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); + error("Could not insert workshop element!"); } - $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade; - // do sanity check - if ($grade < 0) { - $grade = 0; - } elseif ($grade > 100) { - $grade = 100; - } - echo "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\n"; + $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]); + echo "<P><B>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</B>\n"; break; - + case 3: // criteria grading - // save in the selected criteria value in element zero, + // save in the selected criteria value in element zero, unset($element); $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = 0; $element->grade = $form->grade[0]; if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); + error("Could not insert workshop element!"); } // now save the adjustment in element one unset($element); @@ -1181,9 +847,9 @@ $element->elementno = 1; $element->grade = $form->grade[1]; if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); + error("Could not insert workshop element!"); } - $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]); + $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]) * $workshop->grade / 100; break; case 4: // rubric grading (identical to accumulative grading) @@ -1193,10 +859,10 @@ $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; + $element->feedback = $form->feedback[$key]; $element->grade = $thegrade; if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); + error("Could not insert workshop element!"); } } // now work out the grade... @@ -1205,87 +871,51 @@ foreach ($form->grade as $key => $grade) { $maxscore = $elements[$key]->maxscore; $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { + if ($weight > 0) { $totalweight += $weight; } $rawgrade += ($grade / $maxscore) * $weight; } - $grade = 100.0 * ($rawgrade / $totalweight); + $grade = $workshop->grade * ($rawgrade / $totalweight); break; } // end of switch - + // update the time of the assessment record (may be re-edited)... set_field("workshop_assessments", "timecreated", $timenow, "id", $assessment->id); - + if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { error ("Updateassessment: submission record not found"); } - + // if the workshop does need peer agreement AND it's self assessment then set timeagreed if ($workshop->agreeassessments and ($submission->userid == $assessment->userid)) { set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id); } - - // set grade... + set_field("workshop_assessments", "grade", $grade, "id", $assessment->id); - // ...and clear the timegraded but set the graddinggrade to maximum, may be reduced subsequently... + // ...and clear any grading of this assessment... set_field("workshop_assessments", "timegraded", 0, "id", $assessment->id); - set_field("workshop_assessments", "gradinggrade", 100, "id", $assessment->id); + set_field("workshop_assessments", "gradinggrade", 0, "id", $assessment->id); // ...and the resubmission flag set_field("workshop_assessments", "resubmission", 0, "id", $assessment->id); - - // if there's examples or peer assessments clear the counter in the submission so that - // all assessments for this submission will be regraded - if ($workshop->ntassessments or $workshop->nsassessments) { - set_field("workshop_submissions", "nassessments", 0, "id", $submission->id); - workshop_grade_assessments($workshop); - } else { // it could be self assessment.... - // now see if there's a corresponding assessment so that the gradinggrade can be set - if (isteacher($course->id)) { - // see if there's are student assessments, if so set their gradinggrade - if ($assessments = workshop_get_assessments($submission)) { - foreach($assessments as $studentassessment) { - // skip if it's not a student assessment - if (!isstudent($course->id, $studentassessment->userid)) { - continue; - } - $gradinggrade = workshop_compare_assessments($workshop, $assessment, $studentassessment); - set_field("workshop_assessments", "timegraded", $timenow, "id", $studentassessment->id); - set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $studentassessment->id); - } - } - } else { //it's a student assessment, see if there's a corresponding teacher's assessment - if ($assessments = workshop_get_assessments($submission)) { - foreach($assessments as $teacherassessment) { - if (isteacher($course->id, $teacherassessment->userid)) { - $gradinggrade = workshop_compare_assessments($workshop, $assessment, $teacherassessment); - set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id); - set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $assessment->id); - break; // only look for the first teacher assessment - } - } - } - } - } - + // any comment? if (!empty($form->generalcomment)) { set_field("workshop_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id); } - + add_to_log($course->id, "workshop", "assess", - "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$assessment->id", "$cm->id"); - + "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->id"); + // set up return address if (!$returnto = $form->returnto) { $returnto = "view.php?id=$cm->id"; } - + // show grade if grading strategy is not zero if ($workshop->gradingstrategy) { - redirect($returnto, get_string("thegradeis", "workshop").": ". - number_format($grade * $workshop->grade / 100, 2). + redirect($returnto, get_string("thegradeis", "workshop").": ".number_format($grade, 2). " (".get_string("maximumgrade")." ".number_format($workshop->grade).")"); } else { @@ -1299,7 +929,7 @@ $timenow = time(); $form = (object)$_POST; - + // get the comment record... if (!$comment = get_record("workshop_comments", "id", $_POST['cid'])) { error("Update to Comment failed"); @@ -1313,13 +943,13 @@ set_field("workshop_comments", "timecreated", $timenow, "id", $comment->id); // ..and kick to comment into life (probably not needed but just in case) set_field("workshop_comments", "mailed", 0, "id", $comment->id); - echo "<centre><b>".get_string("savedok", "workshop")."</b></center><br />\n"; - - add_to_log($course->id, "workshop", "comment", - "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$comment->id"); + echo "<CENTRE><B>".get_string("savedok", "workshop")."</B></CENTER><BR>\n"; + + add_to_log($course->id, "workshop", "comment", + "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$comment->id"); } - print_continue("viewassessment.php?id=$cm->id&amp;aid=$assessment->id"); + print_continue("assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id"); } @@ -1332,48 +962,106 @@ } $form = (object)$_POST; - + if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) { error("Update Grading failed"); } - //save the comment and grade for the assessment + //save the comment and grade for the assessment if (isset($form->teachercomment)) { set_field("workshop_assessments", "teachercomment", $form->teachercomment, "id", $assessment->id); set_field("workshop_assessments", "gradinggrade", $form->gradinggrade, "id", $assessment->id); set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id); set_field("workshop_assessments", "mailed", 0, "id", $assessment->id); - set_field("workshop_assessments", "teachergraded", 1, "id", $assessment->id); - echo "<centre><b>".get_string("savedok", "workshop")."</b></centre><br />\n"; - - add_to_log($course->id, "workshop", "grade", - "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$assessment->id", "$cm->id"); + echo "<CENTRE><B>".get_string("savedok", "workshop")."</B></CENTRE><BR>\n"; + + add_to_log($course->id, "workshop", "grade", + "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->id"); + } + switch ($form->stype) { + case "student" : + redirect("assessments.php?action=listungradedstudentsubmissions&id=$cm->id"); + break; + case "teacher" : + redirect("assessments.php?action=listungradedteachersubmissions&id=$cm->id"); + break; } - redirect($form->redirect); } + /****************** user confirm delete ************************************/ + elseif ($action == 'userconfirmdelete' ) { + + if (empty($_GET['aid'])) { + error("User confirm delete: assessment id missing"); + } + + notice_yesno(get_string("confirmdeletionofthisitem","workshop", + get_string("assessment", "workshop")), + "assessments.php?action=userdelete&id=$cm->id&aid=$_GET[aid]", "view.php?id=$cm->id"); + } + + + /****************** user delete ************************************/ + elseif ($action == 'userdelete' ) { + + if (empty($_GET['aid'])) { + error("User delete: assessment id missing"); + } + + print_string("deleting", "workshop"); + // first delete all the associated records... + delete_records("workshop_comments", "assessmentid", $_GET['aid']); + delete_records("workshop_grades", "assessmentid", $_GET['aid']); + // ...now delete the assessment... + delete_records("workshop_assessments", "id", $_GET['aid']); + + print_continue("view.php?id=$cm->id"); + } + + /****************** view all assessments ***********************/ elseif ($action == 'viewallassessments') { - + if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) { error("View All Assessments: submission record not found"); - } - + } + if ($assessments = workshop_get_assessments($submission)) { foreach ($assessments as $assessment) { workshop_print_assessment($workshop, $assessment); } } // only called from list all submissions - print_continue("submissions.php?action=listallsubmissions&amp;id=$cm->id"); + print_continue("submissions.php?action=listallsubmissions&id=$cm->id"); } + + /****************** view assessment *****************************/ + elseif ($action == 'viewassessment') { + + optional_variable($allowcomments); + if (!isset($allowcomments)) { + $allowcomments = false; + } + + // get the assessment record + if (!$assessment = get_record("workshop_assessments", "id", $_GET['aid'])) { + error("Assessment record not found"); + } + + // show assessment but don't allow changes + workshop_print_assessment($workshop, $assessment, false, $allowcomments); + + print_continue("view.php?a=$workshop->id"); + } + + /*************** no man's land **************************************/ else { error("Fatal Error: Unknown Action: ".$action."\n"); } print_footer($course); - + ?> diff --git a/mod/workshop/backuplib.php b/mod/workshop/backuplib.php index 737c69c49ab..4b54353b9f4 100644 --- a/mod/workshop/backuplib.php +++ b/mod/workshop/backuplib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //workshop mods @@ -16,15 +16,15 @@ // | workshop_submissions // | (UL,pk->id,fk->workshopid,files) // | | - // | |-------------------------------------| |----------------------| | - // | | | | | | - // workshop_elements workshop_grades workshop_assessments - // (CL,pk->id,fk->workshopid) (UL,pk->id,fk->assessmentid) (UL,pk->id,fk->submissionid) - // | | ( fk->elementno ) | - // | | | - // | | | - // workshop_rubrics workshop_stockcomments workshop_comments - // (CL,pk->id,fk->elementno) (CL, pk->id, fk->elementno) (UL,pk->id,fk->assessmentid) + // | |---------------------------| |--------------------------------| | + // | | | | | | + // workshop_elements workshop_grades workshop_assessments + // (CL,pk->id,fk->workshopid) (UL,pk->id,fk->assessmentid) (UL,pk->id,fk->submissionid) + // | ( fk->elementno ) | + // | | + // | | + // workshop_rubrics workshop_comments + // (CL,pk->id,fk->elementno) (UL,pk->id,fk->assessmentid) // // Meaning: pk->primary key field of the table // fk->foreign key to link with parent @@ -53,9 +53,8 @@ fwrite ($bf,full_tag("MODTYPE",4,false,"workshop")); fwrite ($bf,full_tag("NAME",4,false,$workshop->name)); fwrite ($bf,full_tag("DESCRIPTION",4,false,$workshop->description)); - fwrite ($bf,full_tag("WTYPE",4,false,$workshop->wtype)); fwrite ($bf,full_tag("NELEMENTS",4,false,$workshop->nelements)); - fwrite ($bf,full_tag("NATTACHMENTS",4,false,$workshop->nattachments)); + fwrite ($bf,full_tag("PHASE",4,false,$workshop->phase)); fwrite ($bf,full_tag("FORMAT",4,false,$workshop->format)); fwrite ($bf,full_tag("GRADINGSTRATEGY",4,false,$workshop->gradingstrategy)); fwrite ($bf,full_tag("RESUBMIT",4,false,$workshop->resubmit)); @@ -64,22 +63,22 @@ fwrite ($bf,full_tag("ANONYMOUS",4,false,$workshop->anonymous)); fwrite ($bf,full_tag("INCLUDESELF",4,false,$workshop->includeself)); fwrite ($bf,full_tag("MAXBYTES",4,false,$workshop->maxbytes)); - fwrite ($bf,full_tag("SUBMISSIONSTART",4,false,$workshop->submissionstart)); - fwrite ($bf,full_tag("ASSESSMENTSTART",4,false,$workshop->assessmentstart)); - fwrite ($bf,full_tag("SUBMISSIONEND",4,false,$workshop->submissionend)); - fwrite ($bf,full_tag("ASSESSMENTEND",4,false,$workshop->assessmentend)); - fwrite ($bf,full_tag("RELEASEGRADES",4,false,$workshop->releasegrades)); + fwrite ($bf,full_tag("DEADLINE",4,false,$workshop->deadline)); fwrite ($bf,full_tag("GRADE",4,false,$workshop->grade)); - fwrite ($bf,full_tag("GRADINGGRADE",4,false,$workshop->gradinggrade)); fwrite ($bf,full_tag("NTASSESSMENTS",4,false,$workshop->ntassessments)); - fwrite ($bf,full_tag("ASSESSMENTCOMPS",4,false,$workshop->assessmentcomps)); fwrite ($bf,full_tag("NSASSESSMENTS",4,false,$workshop->nsassessments)); fwrite ($bf,full_tag("OVERALLOCATION",4,false,$workshop->overallocation)); fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$workshop->timemodified)); + fwrite ($bf,full_tag("MERGEGRADES",4,false,$workshop->mergegrades)); fwrite ($bf,full_tag("TEACHERWEIGHT",4,false,$workshop->teacherweight)); + fwrite ($bf,full_tag("PEERWEIGHT",4,false,$workshop->peerweight)); + fwrite ($bf,full_tag("INCLUDETEACHERSGRADE",4,false,$workshop->includeteachersgrade)); + fwrite ($bf,full_tag("BIASWEIGHT",4,false,$workshop->biasweight)); + fwrite ($bf,full_tag("RELIABILITYWEIGHT",4,false,$workshop->reliabilityweight)); + fwrite ($bf,full_tag("GRADINGWEIGHT",4,false,$workshop->gradingweight)); fwrite ($bf,full_tag("SHOWLEAGUETABLE",4,false,$workshop->showleaguetable)); - fwrite ($bf,full_tag("USEPASSWORD",4,false,$workshop->usepassword)); - fwrite ($bf,full_tag("PASSWORD",4,false,$workshop->password)); + fwrite ($bf,full_tag("TEACHERLOADING",4,false,$workshop->teacherloading)); + fwrite ($bf,full_tag("ASSESSMENTSTODROP",4,false,$workshop->assessmentstodrop)); //Now we backup workshop elements $status = backup_workshop_elements($bf,$preferences,$workshop->id); //if we've selected to backup users info, then execute backup_workshop_submisions @@ -121,12 +120,8 @@ fwrite ($bf,full_tag("SCALE",6,false,$wor_ele->scale)); fwrite ($bf,full_tag("MAXSCORE",6,false,$wor_ele->maxscore)); fwrite ($bf,full_tag("WEIGHT",6,false,$wor_ele->weight)); - fwrite ($bf,full_tag("STDDEV",6,false,$wor_ele->stddev)); - fwrite ($bf,full_tag("TOTALASSESSMENTS",6,false,$wor_ele->totalassessments)); //Now we backup workshop rubrics $status = backup_workshop_rubrics($bf,$preferences,$workshop,$wor_ele->elementno); - //Now we backup element's stock comments - $status = backup_workshop_stockcomments($bf,$preferences,$workshop,$wor_ele->elementno); //End element $status =fwrite ($bf,end_tag("ELEMENT",5,true)); } @@ -167,36 +162,6 @@ return $status; } - //Backup workshop_stockcomments contents (executed from backup_workshop_elements) - function backup_workshop_stockcomments ($bf,$preferences,$workshop,$elementid) { - - global $CFG; - - $status = true; - - $workshop_stockcomments = get_records_sql("SELECT * from {$CFG->prefix}workshop_stockcomments c - WHERE c.workshopid = '$workshop' and c.elementno = '$elementno' - ORDER BY c.id"); - - //If there is workshop_stockcomments - if ($workshop_stockcomments) { - //Write start tag - $status =fwrite ($bf,start_tag("STOCKCOMMENTS",6,true)); - //Iterate over each comment - foreach ($workshop_stockcomments as $wor_com) { - //Start comment - $status =fwrite ($bf,start_tag("STOCKCOMMENT",7,true)); - //Print comment contents - fwrite ($bf,full_tag("COMMENT_TEXT",8,false,$wor_com->comments)); - //End comment - $status =fwrite ($bf,end_tag("STOCKCOMMENT",7,true)); - } - //Write end tag - $status =fwrite ($bf,end_tag("STOCKCOMMENTS",6,true)); - } - return $status; - } - //Backup workshop_submissions contents (executed from workshop_backup_mods) function backup_workshop_submissions ($bf,$preferences,$workshop) { @@ -219,11 +184,12 @@ fwrite ($bf,full_tag("TITLE",6,false,$wor_sub->title)); fwrite ($bf,full_tag("TIMECREATED",6,false,$wor_sub->timecreated)); fwrite ($bf,full_tag("MAILED",6,false,$wor_sub->mailed)); - fwrite ($bf,full_tag("DESCRIPTION",6,false,$wor_sub->description)); + fwrite ($bf,full_tag("TEACHERGRADE",6,false,$wor_sub->teachergrade)); + fwrite ($bf,full_tag("PEERGRADE",6,false,$wor_sub->peergrade)); + fwrite ($bf,full_tag("BIASGRADE",6,false,$wor_sub->biasgrade)); + fwrite ($bf,full_tag("RELIABILITYGRADE",6,false,$wor_sub->reliabilitygrade)); fwrite ($bf,full_tag("GRADINGGRADE",6,false,$wor_sub->gradinggrade)); fwrite ($bf,full_tag("FINALGRADE",6,false,$wor_sub->finalgrade)); - fwrite ($bf,full_tag("LATE",6,false,$wor_sub->late)); - fwrite ($bf,full_tag("NASSESSMENTS",6,false,$wor_sub->nassessments)); //Now we backup workshop assessments $status = backup_workshop_assessments($bf,$preferences,$workshop,$wor_sub->id); //End submission @@ -263,7 +229,6 @@ fwrite ($bf,full_tag("TIMEAGREED",8,false,$wor_ass->timeagreed)); fwrite ($bf,full_tag("GRADE",8,false,$wor_ass->grade)); fwrite ($bf,full_tag("GRADINGGRADE",8,false,$wor_ass->gradinggrade)); - fwrite ($bf,full_tag("TEACHERGRADED",8,false,$wor_ass->teachergraded)); fwrite ($bf,full_tag("MAILED",8,false,$wor_ass->mailed)); fwrite ($bf,full_tag("RESUBMISSION",8,false,$wor_ass->resubmission)); fwrite ($bf,full_tag("DONOTUSE",8,false,$wor_ass->donotuse)); diff --git a/mod/workshop/db/mysql.php b/mod/workshop/db/mysql.php index c6cf1a42853..b1d5bcc50e3 100644 --- a/mod/workshop/db/mysql.php +++ b/mod/workshop/db/mysql.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function workshop_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -7,52 +7,52 @@ function workshop_upgrade($oldversion) { global $CFG; if ($oldversion < 2003050400) { - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` CHANGE `graded` `agreeassessments` TINYINT(2) UNSIGNED DEFAULT '0' NOT NULL"); - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` CHANGE `showgrades` `hidegrades` TINYINT(2) UNSIGNED DEFAULT '0' NOT NULL"); - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `timeagreed` INT(10) UNSIGNED DEFAULT '0' NOT NULL AFTER `timecreated`"); - execute_sql(" + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` CHANGE `graded` `agreeassessments` TINYINT(2) UNSIGNED DEFAULT '0' NOT NULL"); + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` CHANGE `showgrades` `hidegrades` TINYINT(2) UNSIGNED DEFAULT '0' NOT NULL"); + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `timeagreed` INT(10) UNSIGNED DEFAULT '0' NOT NULL AFTER `timecreated`"); + execute_sql(" CREATE TABLE `{$CFG->prefix}workshop_comments` ( `id` int(10) unsigned NOT NULL auto_increment, - # workshopid not necessary just makes deleting instance easier - `workshopid` int(10) unsigned NOT NULL default '0', + # workshopid not necessary just makes deleting instance easier + `workshopid` int(10) unsigned NOT NULL default '0', `assessmentid` int(10) unsigned NOT NULL default '0', `userid` int(10) unsigned NOT NULL default '0', `timecreated` int(10) unsigned NOT NULL default '0', - `mailed` tinyint(2) unsigned NOT NULL default '0', + `mailed` tinyint(2) unsigned NOT NULL default '0', `comments` text NOT NULL, PRIMARY KEY (`id`) ) COMMENT='Defines comments' "); - } + } - if ($oldversion < 2003051400) { - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` ADD `showleaguetable` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `gradingweight`"); - execute_sql(" - CREATE TABLE `{$CFG->prefix}workshop_rubrics` ( - `id` int(10) unsigned NOT NULL auto_increment, - `workshopid` int(10) unsigned NOT NULL default '0', - `elementid` int(10) unsigned NOT NULL default '0', - `rubricno` tinyint(3) unsigned NOT NULL default '0', - `description` text NOT NULL, - PRIMARY KEY (`id`) - ) COMMENT='Info about the rubrics marking scheme' + if ($oldversion < 2003051400) { + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` ADD `showleaguetable` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `gradingweight`"); + execute_sql(" + CREATE TABLE `{$CFG->prefix}workshop_rubrics` ( + `id` int(10) unsigned NOT NULL auto_increment, + `workshopid` int(10) unsigned NOT NULL default '0', + `elementid` int(10) unsigned NOT NULL default '0', + `rubricno` tinyint(3) unsigned NOT NULL default '0', + `description` text NOT NULL, + PRIMARY KEY (`id`) + ) COMMENT='Info about the rubrics marking scheme' "); - } + } + + if ($oldversion < 2003082200) { + + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_rubrics` CHANGE `elementid` `elementno` INT(10) UNSIGNED NOT NULL DEFAULT '0'"); + } - if ($oldversion < 2003082200) { - - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_rubrics` CHANGE `elementid` `elementno` INT(10) UNSIGNED NOT NULL DEFAULT '0'"); - } - - if ($oldversion < 2003092500) { - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` ADD `overallocation` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `nsassessments`"); - } + if ($oldversion < 2003092500) { + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` ADD `overallocation` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `nsassessments`"); + } if ($oldversion < 2003100200) { - - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `resubmission` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `mailed`"); - } - + + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `resubmission` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `mailed`"); + } + if ($oldversion < 2003100800) { // tidy up log_display entries execute_sql("DELETE FROM `{$CFG->prefix}log_display` WHERE `module` = 'workshop'"); @@ -65,13 +65,13 @@ function workshop_upgrade($oldversion) { execute_sql("INSERT INTO `{$CFG->prefix}log_display` VALUES ('workshop', 'view', 'workshop', 'name')"); execute_sql("INSERT INTO `{$CFG->prefix}log_display` VALUES ('workshop', 'update', 'workshop', 'name')"); } - + if ($oldversion < 2003113000) { - execute_sql("ALTER TABLE `{$CFG->prefix}workshop` ADD `teacherloading` tinyint(3) unsigned + execute_sql("ALTER TABLE `{$CFG->prefix}workshop` ADD `teacherloading` tinyint(3) unsigned NOT NULL default '5'"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop` ADD `assessmentstodrop` tinyint(3) unsigned + execute_sql("ALTER TABLE `{$CFG->prefix}workshop` ADD `assessmentstodrop` tinyint(3) unsigned NOT NULL default '0'"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `donotuse` tinyint(3) unsigned + execute_sql("ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `donotuse` tinyint(3) unsigned NOT NULL default '0' AFTER `resubmission`"); execute_sql("ALTER TABLE `{$CFG->prefix}workshop_grades` ADD INDEX (`assessmentid`)"); } @@ -81,134 +81,7 @@ function workshop_upgrade($oldversion) { workshop_refresh_events(); } - if ($oldversion < 2004081100) { - table_column("workshop", "", "gradinggrade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); - table_column("workshop", "", "assessmentcomps", "INTEGER", "4", "UNSIGNED", "2", "NOT NULL", "ntassessments"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `gradingweight`"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `mergegrades`"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `peerweight`"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `includeteachersgrade`"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `biasweight`"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `reliabilityweight`"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `teacherloading`"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `assessmentstodrop`"); - } - - if ($oldversion < 2004092400) { - table_column("workshop", "", "nattachments", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "nelements"); - table_column("workshop_submissions", "", "description", "TEXT", "", "", "", "", "mailed"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop_submissions` ADD INDEX (`userid`)"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD INDEX (`submissionid`)"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD INDEX (`userid`)"); - } - - if ($oldversion < 2004092700) { - table_column("workshop", "", "wtype", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "description"); - table_column("workshop", "", "usepassword", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL"); - table_column("workshop", "", "password", "VARCHAR", "32", "", "", "NOT NULL"); - table_column("workshop_submissions", "", "late", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL"); - - // update wkey value - if ($workshops = get_records("workshop")) { - foreach ($workshops as $workshop) { - $wtype = 0; // 3 phases, no grading grades - if ($workshop->includeself or $workshop->ntassessments) $wtype = 1; // 3 phases with grading grades - if ($workshop->nsassessments) $wtype = 2; // 5 phases with grading grades - set_field("workshop", "wtype", $wtype, "id", $workshop->id); - } - } - } - - if ($oldversion < 2004102800) { - table_column("workshop", "", "releasegrades", "INTEGER", "10", "UNSIGNED", "0", "NOT NULL", "deadline"); - execute_sql(" - CREATE TABLE `{$CFG->prefix}workshop_stockcomments` ( - `id` int(10) unsigned NOT NULL auto_increment, - `workshopid` int(10) unsigned NOT NULL default '0', - `elementno` int(10) unsigned NOT NULL default '0', - `comments` text NOT NULL, - PRIMARY KEY (`id`) - ) COMMENT='Defines stockcomments, the teacher comment bank' - "); - } - - if ($oldversion < 2004111000) { - table_column("workshop_elements", "", "stddev", "FLOAT", "", "", "0", "NOT NULL"); - table_column("workshop_elements", "", "totalassessments", "INTEGER", "10", "", "0", "NOT NULL"); - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_elements` CHANGE `weight` `weight` INT(4) UNSIGNED NOT NULL DEFAULT '11'"); - table_column("workshop_submissions", "", "nassessments", "INTEGER", "10", "", "0", "NOT NULL"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop_submissions` DROP COLUMN `teachergrade`"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop_submissions` DROP COLUMN `peergrade`"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop_submissions` DROP COLUMN `biasgrade`"); - execute_sql("ALTER TABLE `{$CFG->prefix}workshop_submissions` DROP COLUMN `reliabilitygrade`"); - } - - if ($oldversion < 2004111200) { - execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP INDEX course;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_assessments DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_assessments DROP INDEX workshopid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_assessments DROP INDEX submissionid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_assessments DROP INDEX mailed;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_comments DROP INDEX workshopid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_comments DROP INDEX assessmentid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_comments DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_comments DROP INDEX mailed;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_elements DROP INDEX workshopid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_grades DROP INDEX workshopid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_grades DROP INDEX assessmentid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_submissions DROP INDEX workshopid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_submissions DROP INDEX userid;",false); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_submissions DROP INDEX mailed;",false); - - modify_database('','ALTER TABLE prefix_workshop ADD INDEX course (course);'); - modify_database('','ALTER TABLE prefix_workshop_assessments ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_workshop_assessments ADD INDEX workshopid (workshopid);'); - modify_database('','ALTER TABLE prefix_workshop_assessments ADD INDEX submissionid (submissionid);'); - modify_database('','ALTER TABLE prefix_workshop_assessments ADD INDEX mailed (mailed);'); - modify_database('','ALTER TABLE prefix_workshop_comments ADD INDEX workshopid (workshopid);'); - modify_database('','ALTER TABLE prefix_workshop_comments ADD INDEX assessmentid (assessmentid);'); - modify_database('','ALTER TABLE prefix_workshop_comments ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_workshop_comments ADD INDEX mailed (mailed);'); - modify_database('','ALTER TABLE prefix_workshop_elements ADD INDEX workshopid (workshopid);'); - modify_database('','ALTER TABLE prefix_workshop_grades ADD INDEX workshopid (workshopid);'); - modify_database('','ALTER TABLE prefix_workshop_grades ADD INDEX assessmentid (assessmentid);'); - modify_database('','ALTER TABLE prefix_workshop_submissions ADD INDEX workshopid (workshopid);'); - modify_database('','ALTER TABLE prefix_workshop_submissions ADD INDEX userid (userid);'); - modify_database('','ALTER TABLE prefix_workshop_submissions ADD INDEX mailed (mailed);'); - } - - if ($oldversion < 2004120402) { - table_column('workshop', '', 'submissionstart', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'maxbytes'); - table_column('workshop', '', 'assessmentstart', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'submissionstart'); - table_column('workshop', 'deadline', 'submissionend', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL'); - table_column('workshop', '', 'assessmentend', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'submissionend'); - - $workshops = get_records('workshop'); - if(!empty($workshops)) { - foreach ($workshops as $workshop) { - $early = (time() < $workshop->submissionend) ? 0 : $workshop->submissionend; - $late = (time() > $workshop->submissionend) ? 0 : $workshop->submissionend; - set_field('workshop', 'submissionstart', ($workshop->phase > 1) ? $early : $late, 'id', $workshop->id); - set_field('workshop', 'assessmentstart', ($workshop->phase > 2) ? $early : $late, 'id', $workshop->id); - set_field('workshop', 'submissionend', ($workshop->phase > 3) ? $early : $late, 'id', $workshop->id); - set_field('workshop', 'assessmentend', ($workshop->phase > 4) ? $early : $late, 'id', $workshop->id); - } - } - execute_sql('ALTER TABLE '. $CFG->prefix .'workshop DROP COLUMN phase'); - - execute_sql("UPDATE {$CFG->prefix}event SET eventtype = 'submissionend' WHERE eventtype = 'deadline' AND modulename = 'workshop'", false); - } - - if ($oldversion < 2004120900) { - table_column('workshop_assessments', '', 'teachergraded', 'INTEGER', '4', 'UNSIGNED', '0', 'NOT NULL', 'gradinggrade'); - } - - if ($oldversion < 2005041200) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $wtm->update( 'workshop','description','format' ); - } - + return true; } diff --git a/mod/workshop/db/mysql.sql b/mod/workshop/db/mysql.sql index 3d004eeb550..356ff53043c 100644 --- a/mod/workshop/db/mysql.sql +++ b/mod/workshop/db/mysql.sql @@ -7,9 +7,7 @@ CREATE TABLE `prefix_workshop` ( `course` int(10) unsigned NOT NULL default '0', `name` varchar(255) NOT NULL default '', `description` text NOT NULL, - `wtype` tinyint(3) unsigned NOT NULL default '0', `nelements` tinyint(3) unsigned NOT NULL default '1', - `nattachments` tinyint(3) unsigned NOT NULL default '0', `phase` tinyint(2) unsigned NOT NULL default '0', `format` tinyint(2) unsigned NOT NULL default '0', `gradingstrategy` tinyint(2) unsigned NOT NULL default '1', @@ -19,24 +17,23 @@ CREATE TABLE `prefix_workshop` ( `anonymous` tinyint(2) unsigned NOT NULL default '0', `includeself` tinyint(2) unsigned NOT NULL default '0', `maxbytes` int(10) unsigned NOT NULL default '100000', - `submissionstart` int(10) unsigned NOT NULL default '0', - `assessmentstart` int(10) unsigned NOT NULL default '0', - `submissionend` int(10) unsigned NOT NULL default '0', - `assessmentend` int(10) unsigned NOT NULL default '0', - `releasegrades` int(10) unsigned NOT NULL default '0', - `grade` tinyint(3) NOT NULL default '0', - `gradinggrade` tinyint(3) NOT NULL default '0', + `deadline` int(10) unsigned NOT NULL default '0', + `grade` int(10) NOT NULL default '0', `ntassessments` tinyint(3) unsigned NOT NULL default '0', - `assessmentcomps` tinyint(3) unsigned NOT NULL default '2', `nsassessments` tinyint(3) unsigned NOT NULL default '0', `overallocation` tinyint(3) unsigned NOT NULL default '0', `timemodified` int(10) unsigned NOT NULL default '0', - `teacherweight` tinyint(3) unsigned NOT NULL default '1', + `mergegrades` tinyint(3) unsigned NOT NULL default '0', + `teacherweight` tinyint(3) unsigned NOT NULL default '5', + `peerweight` tinyint(3) unsigned NOT NULL default '5', + `includeteachersgrade` tinyint(3) unsigned NOT NULL default '0', + `biasweight` tinyint(3) unsigned NOT NULL default '5', + `reliabilityweight` tinyint(3) unsigned NOT NULL default '5', + `gradingweight` tinyint(3) unsigned NOT NULL default '5', + `teacherloading` tinyint(3) unsigned NOT NULL default '5', + `assessmentstodrop` tinyint(3) unsigned NOT NULL default '0', `showleaguetable` tinyint(3) unsigned NOT NULL default '0', - `usepassword` tinyint(3) unsigned NOT NULL default '0', - `password` varchar(32) NOT NULL default '', - PRIMARY KEY (`id`), - KEY `course` (`course`) + PRIMARY KEY (`id`) ) COMMENT='Defines workshop'; # -------------------------------------------------------- @@ -51,15 +48,14 @@ CREATE TABLE `prefix_workshop_submissions` ( `title` varchar(100) NOT NULL default '', `timecreated` int(10) unsigned NOT NULL default '0', `mailed` tinyint(2) unsigned NOT NULL default '0', - `description` text NOT NULL, + `teachergrade` int(3) unsigned NOT NULL default '0', + `peergrade` int(3) unsigned NOT NULL default '0', + `biasgrade` int(3) unsigned NOT NULL default '0', + `reliabilitygrade` int(3) unsigned NOT NULL default '0', `gradinggrade` int(3) unsigned NOT NULL default '0', `finalgrade` int(3) unsigned NOT NULL default '0', - `late` int(3) unsigned NOT NULL default '0', - `nassessments` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`), - INDEX `userid` (`userid`), - INDEX `workshopid` (`workshopid`), - INDEX `mailed` (`mailed`) + INDEX `title` (`title`) ) COMMENT='Info about submitted work from teacher and students'; # -------------------------------------------------------- @@ -82,11 +78,7 @@ CREATE TABLE `prefix_workshop_assessments` ( `donotuse` tinyint(3) unsigned NOT NULL default '0', `generalcomment` text NOT NULL, `teachercomment` text NOT NULL, - PRIMARY KEY (`id`), - INDEX (`submissionid`), - INDEX (`userid`), - INDEX `workshopid` (`workshopid`), - INDEX `mailed` (`mailed`) + PRIMARY KEY (`id`) ) COMMENT='Info about assessments by teacher and students'; # -------------------------------------------------------- @@ -101,11 +93,8 @@ CREATE TABLE `prefix_workshop_elements` ( `description` text NOT NULL, `scale` tinyint(3) unsigned NOT NULL default '0', `maxscore` tinyint(3) unsigned NOT NULL default '1', - `weight` tinyint(3) unsigned NOT NULL default '11', - `stddev` float NOT NULL default '0.0', - `totalassessments` int(10) NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `workshopid` (`workshopid`) + `weight` float NOT NULL default '1.0', + PRIMARY KEY (`id`) ) COMMENT='Info about marking scheme of assignment'; # -------------------------------------------------------- @@ -135,24 +124,8 @@ CREATE TABLE `prefix_workshop_grades` ( `elementno` int(10) unsigned NOT NULL default '0', `feedback` text NOT NULL default '', `grade` tinyint(3) NOT NULL default '0', - PRIMARY KEY (`id`), - INDEX (`assessmentid`), - INDEX `workshopid` (`workshopid`) -) COMMENT='Info about individual grades given to each element'; -# -------------------------------------------------------- - - -# -# Table structure for table `workshop_stockcomments` -# - -CREATE TABLE `prefix_workshop_stockcomments` ( - `id` int(10) unsigned NOT NULL auto_increment, - `workshopid` int(10) unsigned NOT NULL default '0', - `elementno` int(10) unsigned NOT NULL default '0', - `comments` text NOT NULL default '', PRIMARY KEY (`id`) -) COMMENT='Info about the teacher comment bank'; +) COMMENT='Info about individual grades given to each element'; # -------------------------------------------------------- # @@ -167,11 +140,7 @@ CREATE TABLE `prefix_workshop_comments` ( `timecreated` int(10) unsigned NOT NULL default '0', `mailed` tinyint(2) unsigned NOT NULL default '0', `comments` text NOT NULL, - PRIMARY KEY (`id`), - KEY `workshopid` (`workshopid`), - KEY `assessmentid` (`assessmentid`), - KEY `userid` (`userid`), - KEY `mailed` (`mailed`) + PRIMARY KEY (`id`) ) COMMENT='Defines comments'; # -------------------------------------------------------- @@ -185,3 +154,4 @@ INSERT INTO `prefix_log_display` VALUES ('workshop', 'set up', 'workshop', 'name INSERT INTO `prefix_log_display` VALUES ('workshop', 'submissions', 'workshop', 'name'); INSERT INTO `prefix_log_display` VALUES ('workshop', 'view', 'workshop', 'name'); INSERT INTO `prefix_log_display` VALUES ('workshop', 'update', 'workshop', 'name'); + diff --git a/mod/workshop/db/oci8po.php b/mod/workshop/db/oci8po.php index de197760d80..a04437aadc5 100644 --- a/mod/workshop/db/oci8po.php +++ b/mod/workshop/db/oci8po.php @@ -1,4 +1,4 @@ -<?php +<?PHP function workshop_upgrade($oldversion) { // This function does anything necessary to upgrade diff --git a/mod/workshop/db/postgres7.php b/mod/workshop/db/postgres7.php index 20a7550d112..708aa4cca87 100644 --- a/mod/workshop/db/postgres7.php +++ b/mod/workshop/db/postgres7.php @@ -1,4 +1,4 @@ -<?php // $Id$ +<?PHP // $Id$ function workshop_upgrade($oldversion) { // This function does anything necessary to upgrade @@ -7,203 +7,28 @@ function workshop_upgrade($oldversion) { global $CFG; if ($oldversion < 2003050400) { - table_column("workshop","graded", "agreeassessments", "INT","2", "", "0" ,"NOT NULL"); - table_column("workshop", "showgrades","hidegrades", "INT","2", "","0", "NOT NULL"); - table_column("workshop_assessments","","timeagreed", "INT","8", "UNSIGNED", "0", "NOT NULL" ); - - execute_sql(" + table_column("workshop","graded", "agreeassessments", "INT","2", "", "0" ,"NOT NULL"); + table_column("workshop", "showgrades","hidegrades", "INT","2", "","0", "NOT NULL"); + table_column("workshop_assessments","","timeagreed", "INT","8", "UNSIGNED", "0", "NOT NULL" ); + + execute_sql(" CREATE TABLE {$CFG->prefix}workshop_comments ( id SERIAL8 PRIMARY KEY , - workshopid int8 NOT NULL default '0', + workshopid int8 NOT NULL default '0', assessmentid int8 NOT NULL default '0', userid int8 NOT NULL default '0', timecreated int8 NOT NULL default '0', - mailed int2 NOT NULL default '0', + mailed int2 NOT NULL default '0', comments text NOT NULL ) "); } - - if ($oldversion < 2003051400) { - table_column("workshop","","showleaguetable", "INTEGER", "4", "unsigned", "0", "not null", "gradingweight"); - execute_sql(" - CREATE TABLE {$CFG->prefix}workshop_rubrics ( - id SERIAL8 PRIMARY KEY, - workshopid int8 NOT NULL default '0', - elementid int8 NOT NULL default '0', - rubricno int4 NOT NULL default '0', - description text NOT NULL, - ) - "); - } - - if ($oldversion < 2003082200) { - table_column("workshop_rubrics", "elementid", "elementno", "INTEGER", "10", "unsigned", "0", "not null", "id"); - } - - if ($oldversion < 2003092500) { - table_column("workshop", "", "overallocation", "INTEGER", "4", "unsigned", "0", "not null", "nsassesments"); - } - - if ($oldversion < 2003100200) { - - table_column("workshop_assesments", "", "resubmission", "INTEGER", "4", "unsigned", "0", "not null", "mailed"); - } - - if ($oldversion < 2003100800) { - // tidy up log_display entries - execute_sql("DELETE FROM {$CFG->prefix}log_display WHERE module = 'workshop'"); - execute_sql("INSERT INTO {$CFG->prefix}log_display VALUES('workshop', 'assessments', 'workshop', 'name')"); - execute_sql("INSERT INTO {$CFG->prefix}log_display VALUES ('workshop', 'close', 'workshop', 'name')"); - execute_sql("INSERT INTO {$CFG->prefix}log_display VALUES ('workshop', 'display', 'workshop', 'name')"); - execute_sql("INSERT INTO {$CFG->prefix}log_display VALUES ('workshop', 'resubmit', 'workshop', 'name')"); - execute_sql("INSERT INTO {$CFG->prefix}log_display VALUES ('workshop', 'set up', 'workshop', 'name')"); - execute_sql("INSERT INTO {$CFG->prefix}log_display VALUES ('workshop', 'submissions', 'workshop', 'name')"); - execute_sql("INSERT INTO {$CFG->prefix}log_display VALUES ('workshop', 'view', 'workshop', 'name')"); - execute_sql("INSERT INTO {$CFG->prefix}log_display VALUES ('workshop', 'update', 'workshop', 'name')"); - } - - if ($oldversion < 2003113000) { - table_column("workshop", "", "teacherloading", "INTEGER", "4", "unsigned", "5", "NOT NULL", "mailed"); - table_column("workshop", "", "assessmentstodrop", "INTEGER", "4", "unsigned", "0", "NOT NULL", ""); - table_column("workshop_assessments", "", "donotuse", "INTEGER", "4", "unsigned", "0", "NOT NULL", "resubmission"); - execute_sql("CREATE INDEX {$CFG->prefix}workshop_grades_assesmentid_idx ON {$CFG->prefix}workshop_grades (assessmentid)"); - } + return true; if ($oldversion < 2004052100) { include_once("$CFG->dirroot/mod/workshop/lib.php"); workshop_refresh_events(); } - - if ($oldversion < 2004081100) { - table_column("workshop", "", "gradinggrade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); - table_column("workshop", "", "assessmentcomps", "INTEGER", "4", "UNSIGNED", "2", "NOT NULL", "ntassessments"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN gradingweight"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN mergegrades"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN peerweight"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN includeteachersgrade"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN biasweight"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN reliabilityweight"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN teacherloading"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN assessmentstodrop"); - } - - if ($oldversion < 2004092400) { - table_column("workshop", "", "nattachments", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "nelements"); - table_column("workshop_submissions", "", "description", "TEXT", "", "", "", "", "mailed"); - execute_sql("CREATE INDEX {$CFG->prefix}workshop_submissions_userid_idx ON {$CFG->prefix}workshop_submissions (userid)"); - execute_sql("CREATE INDEX {$CFG->prefix}workshop_assessments_submissionid_idx ON {$CFG->prefix}workshop_assessments (submissionid)"); - execute_sql("CREATE INDEX {$CFG->prefix}workshop_assessments_userid_idx ON {$CFG->prefix}workshop_assessments (userid)"); - } - - if ($oldversion < 2004092700) { - table_column("workshop", "", "wtype", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "description"); - table_column("workshop", "", "usepassword", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL"); - table_column("workshop", "", "password", "VARCHAR", "32", "", "", "NOT NULL"); - table_column("workshop_submissions", "", "late", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL"); - - // update wkey value - if ($workshops = get_records("workshop")) { - foreach ($workshops as $workshop) { - $wtype = 0; // 3 phases, no grading grades - if ($workshop->includeself or $workshop->ntassessments) $wtype = 1; // 3 phases with grading grades - if ($workshop->nsassessments) $wtype = 2; // 5 phases with grading grades - set_field("workshop", "wtype", $wtype, "id", $workshop->id); - } - } - } - - if ($oldversion < 2004102800) { - table_column("workshop", "", "releasegrades", "INTEGER", "10", "UNSIGNED", "0", "NOT NULL", "deadline"); - execute_sql(" - CREATE TABLE {$CFG->prefix}workshop_stockcomments ( - id SERIAL PRIMARY KEY, - workshopid INT8 NOT NULL default '0', - elementno INT8 NOT NULL default '0', - comments text NOT NULL - ) - "); - } - - if ($oldversion < 2004111000) { - table_column("workshop_elements", "", "stddev", "FLOAT", "", "", "0", "NOT NULL"); - table_column("workshop_elements", "", "totalassessments", "INTEGER", "10", "", "0", "NOT NULL"); - table_column("workshop_elements", "weight", "weight", "INTEGER", "4", "UNSIGNED", "11", "NOT NULL"); - table_column("workshop_submissions", "", "nassessments", "INTEGER", "10", "", "0", "NOT NULL"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_submissions DROP COLUMN teachergrade"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_submissions DROP COLUMN peergrade"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_submissions DROP COLUMN biasgrade"); - execute_sql("ALTER TABLE {$CFG->prefix}workshop_submissions DROP COLUMN reliabilitygrade"); - } - - if ($oldversion < 2004111200) { - execute_sql("DROP INDEX {$CFG->prefix}workshop_course_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_assessments_workshopid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_assessments_submissionid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_assessments_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_assessments_mailed_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_comments_workshopid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_comments_assessmentid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_comments_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_comments_mailed_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_elements_workshopid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_grades_workshopid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_grades_assessmentid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_submissions_workshopid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_submissions_userid_idx;",false); - execute_sql("DROP INDEX {$CFG->prefix}workshop_submissions_mailed_idx;",false); - - modify_database('','CREATE INDEX prefix_workshop_course_idx ON prefix_workshop (course);'); - modify_database('','CREATE INDEX prefix_workshop_assessments_workshopid_idx ON prefix_workshop_assessments (workshopid);'); - modify_database('','CREATE INDEX prefix_workshop_assessments_submissionid_idx ON prefix_workshop_assessments (submissionid);'); - modify_database('','CREATE INDEX prefix_workshop_assessments_userid_idx ON prefix_workshop_assessments (userid);'); - modify_database('','CREATE INDEX prefix_workshop_assessments_mailed_idx ON prefix_workshop_assessments (mailed);'); - modify_database('','CREATE INDEX prefix_workshop_comments_workshopid_idx ON prefix_workshop_comments (workshopid);'); - modify_database('','CREATE INDEX prefix_workshop_comments_assessmentid_idx ON prefix_workshop_comments (assessmentid);'); - modify_database('','CREATE INDEX prefix_workshop_comments_userid_idx ON prefix_workshop_comments (userid);'); - modify_database('','CREATE INDEX prefix_workshop_comments_mailed_idx ON prefix_workshop_comments (mailed);'); - modify_database('','CREATE INDEX prefix_workshop_elements_workshopid_idx ON prefix_workshop_elements (workshopid);'); - modify_database('','CREATE INDEX prefix_workshop_grades_workshopid_idx ON prefix_workshop_grades (workshopid);'); - modify_database('','CREATE INDEX prefix_workshop_grades_assessmentid_idx ON prefix_workshop_grades (assessmentid);'); - modify_database('','CREATE INDEX prefix_workshop_submissions_workshopid_idx ON prefix_workshop_submissions (workshopid);'); - modify_database('','CREATE INDEX prefix_workshop_submissions_userid_idx ON prefix_workshop_submissions (userid);'); - modify_database('','CREATE INDEX prefix_workshop_submissions_mailed_idx ON prefix_workshop_submissions (mailed);'); - } - - if ($oldversion < 2004120402) { - table_column('workshop', '', 'submissionstart', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'maxbytes'); - table_column('workshop', '', 'assessmentstart', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'submissionstart'); - table_column('workshop', 'deadline', 'submissionend', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL'); - table_column('workshop', '', 'assessmentend', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'submissionend'); - - $workshops = get_records('workshop'); - if(!empty($workshops)) { - foreach ($workshops as $workshop) { - $early = (time() < $workshop->submissionend) ? 0 : $workshop->submissionend; - $late = (time() > $workshop->submissionend) ? 0 : $workshop->submissionend; - set_field('workshop', 'submissionstart', ($workshop->phase > 1) ? $early : $late, 'id', $workshop->id); - set_field('workshop', 'assessmentstart', ($workshop->phase > 2) ? $early : $late, 'id', $workshop->id); - set_field('workshop', 'submissionend', ($workshop->phase > 3) ? $early : $late, 'id', $workshop->id); - set_field('workshop', 'assessmentend', ($workshop->phase > 4) ? $early : $late, 'id', $workshop->id); - } - } - execute_sql('ALTER TABLE '. $CFG->prefix .'workshop DROP COLUMN phase'); - - execute_sql("UPDATE {$CFG->prefix}event SET eventtype = 'submissionend' WHERE eventtype = 'deadline' AND modulename = 'workshop'", false); - } - - if ($oldversion < 2004120900) { - table_column('workshop_assessments', '', 'teachergraded', 'INTEGER', '4', 'UNSIGNED', '0', 'NOT NULL', 'gradinggrade'); - } - - if ($oldversion < 2005041200) { // replace wiki-like with markdown - include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" ); - $wtm = new WikiToMarkdown(); - $wtm->update( 'workshop','description','format' ); - } - - return true; - } diff --git a/mod/workshop/db/postgres7.sql b/mod/workshop/db/postgres7.sql index 83106a9d8f2..975ce1a41e2 100644 --- a/mod/workshop/db/postgres7.sql +++ b/mod/workshop/db/postgres7.sql @@ -7,9 +7,7 @@ CREATE TABLE prefix_workshop ( course INT8 NOT NULL default '0', name varchar(255) NOT NULL default '', description text NOT NULL default '', - wtype INT NOT NULL DEFAULT '0', nelements INT NOT NULL default '10', - nattachments INT NOT NULL DEFAULT '0', phase INT2 NOT NULL default '0', format INT2 NOT NULL default '0', gradingstrategy INT2 NOT NULL default '1', @@ -19,26 +17,21 @@ CREATE TABLE prefix_workshop ( anonymous INT2 NOT NULL default '0', includeself INT2 NOT NULL default '0', maxbytes INT8 NOT NULL default '100000', - submissionstart INT8 NOT NULL default '0', - assessmentstart INT8 NOT NULL default '0', - submissionend INT8 NOT NULL default '0', - assessmentend INT8 NOT NULL default '0', - releasegrades INT8 NOT NULL default'0', + deadline INT8 NOT NULL default '0', grade INT8 NOT NULL default '0', - gradinggrade INT4 NOT NULL default '0', ntassessments INT NOT NULL default '0', - assessmentcomps int4 NOT NULL default '2', nsassessments INT NOT NULL default '0', overallocation INT NOT NULL default '0', timemodified INT8 NOT NULL default '0', - teacherweight INT NOT NULL default '1', - showleaguetable INT4 NOT NULL default '0', - usepassword INT NOT NULL DEFAULT '0', - password VARCHAR(32) NOT NULL DEFAULT '' + mergegrades INT NOT NULL default '0', + teacherweight INT NOT NULL default '5', + peerweight INT NOT NULL default '5', + includeteachersgrade INT NOT NULL default '0', + biasweight INT NOT NULL default '5', + reliabilityweight INT NOT NULL default '5', + gradingweight INT NOT NULL default '5', + timeagreed INT8 NOT NULL default '0' ); - -CREATE INDEX prefix_workshop_course_idx ON prefix_workshop (course); - # -------------------------------------------------------- # @@ -52,18 +45,14 @@ CREATE TABLE prefix_workshop_submissions ( title varchar(100) NOT NULL default '', timecreated INT8 NOT NULL default '0', mailed INT2 NOT NULL default '0', - description TEXT, + teachergrade INT NOT NULL default '0', + peergrade INT NOT NULL default '0', + biasgrade INT NOT NULL default '0', + reliabilitygrade INT NOT NULL default '0', gradinggrade INT NOT NULL default '0', - late INT NOT NULL DEFAULT '0', - inalgrade INT NOT NULL default '0', - nassessments INT8 NOT NULL default 0 - + finalgrade INT NOT NULL default '0' ); CREATE INDEX prefix_workshop_submissions_title_idx on prefix_workshop_submissions (title); -CREATE INDEX prefix_workshop_submissions_userid_idx ON prefix_workshop_submissions (userid); -CREATE INDEX prefix_workshop_submissions_workshopid_idx ON prefix_workshop_submissions (workshopid); -CREATE INDEX prefix_workshop_submissions_mailed_idx ON prefix_workshop_submissions (mailed); - # -------------------------------------------------------- # @@ -77,28 +66,19 @@ CREATE TABLE prefix_workshop_assessments ( userid INT8 NOT NULL default '0', timecreated INT8 NOT NULL default '0', timegraded INT8 NOT NULL default '0', - timeagreed INT8 NOT NULL default '0', grade float NOT NULL default '0', gradinggrade INT NOT NULL default '0', mailed INT2 NOT NULL default '0', resubmission INT2 NOT NULL default '0', - donotuse int4 NOT NULL default '0', generalcomment text NOT NULL default '', teachercomment text NOT NULL default '' - ); - -CREATE INDEX prefix_workshop_assessments_workshopid_idx ON prefix_workshop_assessments (workshopid); -CREATE INDEX prefix_workshop_assessments_submissionid_idx ON prefix_workshop_assessments (submissionid); -CREATE INDEX prefix_workshop_assessments_userid_idx ON prefix_workshop_assessments (userid); -CREATE INDEX prefix_workshop_assessments_mailed_idx ON prefix_workshop_assessments (mailed); - # -------------------------------------------------------- - + # # Table structure for table workshop_elements # - + CREATE TABLE prefix_workshop_elements ( id SERIAL PRIMARY KEY, workshopid INT8 NOT NULL default '0', @@ -106,23 +86,9 @@ CREATE TABLE prefix_workshop_elements ( description text NOT NULL default '', scale INT NOT NULL default '0', maxscore INT NOT NULL default '1', - weight INT4 NOT NULL default '11', - stddev FLOAT NOT NULL default '0', - totalrassesments INT8 NOT NULL DEFAULT '0' + weight float NOT NULL default '1.0' ); - -CREATE INDEX prefix_workshop_elements_workshopid_idx ON prefix_workshop_elements (workshopid); - # -------------------------------------------------------- -CREATE TABLE prefix_workshop_rubrics ( - id SERIAL PRIMARY KEY, - workshopid int8 NOT NULL default '0', - elementno int8 NOT NULL default '0', - rubricno int4 NOT NULL default '0', - description text NOT NULL -) ; -# -------------------------------------------------------- - # # Table structure for table workshop_grades @@ -136,10 +102,6 @@ CREATE TABLE prefix_workshop_grades ( feedback text NOT NULL default '', grade INT NOT NULL default '0' ); - -CREATE INDEX prefix_workshop_grades_workshopid_idx ON prefix_workshop_grades (workshopid); -CREATE INDEX prefix_workshop_grades_assessmentid_idx ON prefix_workshop_grades (assessmentid); - # -------------------------------------------------------- CREATE TABLE prefix_workshop_comments ( id SERIAL PRIMARY KEY, @@ -151,26 +113,14 @@ CREATE TABLE prefix_workshop_comments ( comments text NOT NULL default '' ); -CREATE INDEX prefix_workshop_comments_workshopid_idx ON prefix_workshop_comments (workshopid); -CREATE INDEX prefix_workshop_comments_assessmentid_idx ON prefix_workshop_comments (assessmentid); -CREATE INDEX prefix_workshop_comments_userid_idx ON prefix_workshop_comments (userid); -CREATE INDEX prefix_workshop_comments_mailed_idx ON prefix_workshop_comments (mailed); -#--------------------------------------------------------- -CREATE TABLE prefix_workshop_stockcomments ( - id SERIAL PRIMARY KEY, - workshopid INT8 NOT NULL default '0', - elementno INT8 NOT NULL default '0', - comments text NOT NULL -); - -INSERT INTO prefix_log_display VALUES ('workshop', 'assessments', 'workshop', 'name'); +INSERT INTO prefix_log_display VALUES ('workshop', 'assess', 'workshop', 'name'); INSERT INTO prefix_log_display VALUES ('workshop', 'close', 'workshop', 'name'); -INSERT INTO prefix_log_display VALUES ('workshop', 'display', 'workshop', 'name'); -INSERT INTO prefix_log_display VALUES ('workshop', 'resubmit', 'workshop', 'name'); -INSERT INTO prefix_log_display VALUES ('workshop', 'set up', 'workshop', 'name'); -INSERT INTO prefix_log_display VALUES ('workshop', 'submissions', 'workshop', 'name'); +INSERT INTO prefix_log_display VALUES ('workshop', 'display grades', 'workshop', 'name'); +INSERT INTO prefix_log_display VALUES ('workshop', 'grade', 'workshop', 'name'); +INSERT INTO prefix_log_display VALUES ('workshop', 'hide grades', 'workshop', 'name'); +INSERT INTO prefix_log_display VALUES ('workshop', 'open', 'workshop', 'name'); +INSERT INTO prefix_log_display VALUES ('workshop', 'submit', 'workshop', 'name'); INSERT INTO prefix_log_display VALUES ('workshop', 'view', 'workshop', 'name'); INSERT INTO prefix_log_display VALUES ('workshop', 'update', 'workshop', 'name'); - COMMIT; diff --git a/mod/workshop/icon.png b/mod/workshop/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cbb8c2a61a771491372e34a40b77fcd0ec64a49d GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G_YAk0{w5<d|r$X?><>&kwag@sdBx}7Q33MjP2)5S5QV$RaZ7X@1scwDB>UfpE2 zVOfOm6_(r!ZhyEoyBwLl^RM$}ed*={^SNf1|MGtOY9Uj@t2g|KQ~c!k1I)hNV`MON z<Bz%&5;|RtKluc2Le^T}hAEefS{bjL|D)DiW0}+=xOB?eK$l|{3<eBl(Puy1nt8b{ z%=LI=!JMZb&&+Z&_$l)5%vR;bc<J)*k8VBXu-<%~p+Lv@nvSyFVY%%It0MF6{<QW9 lmoDji(_R_1)N$uOrrpP*diaGU)PU}1@O1TaS?83{1OUd{ZutNJ literal 0 HcmV?d00001 diff --git a/mod/workshop/icon1.gif b/mod/workshop/icon1.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d4baef46549539099aff8065f56d652b8a36800 GIT binary patch literal 209 zcmXYoF%E)25JhJqkS%vQTB$7TjETlpG<F-qB$U`pIK~pi+R9|_wAbJQc2>9xPV@8s zdvm^=cKe$K4WA6cc_+>}@BJ_g<2c3%VEIiDA%k@+(S^mk6?uxt9H5%1DZ@R)(e!1- zDk$d2by-;vQ*SqSPNfYBGuNruswh^)_0eQ$PSlZUTBEH-tpZDka>AM6pLM8dVn{j8 P48ev!#n2I<;ujo#fd@B6 literal 0 HcmV?d00001 diff --git a/mod/workshop/icon2.gif b/mod/workshop/icon2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a40a640ece56742d0f50d99c75c97287f83536a9 GIT binary patch literal 256 zcmZ?wbhEHb6krfw_{_-w1X@~JY02>^DJe}6x--*^PtQpG{{H#Dzkfk;7(nqS3nL=~ zCxZ@124n^U%UXk_Q-Zt{fJBofkYHkHoFe1{WC<~F@UkR$0a*+V89XfPOdyt1hC+vc z6UP#uIu1t{0jJ~z6N0=rnOt}rnH5_cybPAQ^eA%38VNKhfLIv{NgOU56M-y-g^mjh zQv{rQ4399dTvR+JklbN-Od^B9saYbq$MBd#G7sYmg`^%sHmT$uMHYn#9flVqlD#xF URVM^B9RadH&H%b<A_s#t05>s4BLDyZ literal 0 HcmV?d00001 diff --git a/mod/workshop/icon2.png b/mod/workshop/icon2.png new file mode 100644 index 0000000000000000000000000000000000000000..466d4b785c3045d397c105e3c6aec4d37245f998 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!eSlAhE06|)|NsA|q@*x0F*QZ# zW@Tk*X=$CAnfCkF&tE^k|N8Om`}^mA|Ni~=@87Y>iGTn6{`viDT5|mF@1JL;8P{9> z5(MgJED7=pW^j0RBMrn!@^*J&=wOxg0CG4BJR*x37`TN%nDNrxx<5cc_7YEDSN6*+ z?1G|l56V3<fI|76E{-7;b3*$$`5F{>STbK{3FiO&AFb=^YOa{rW|rc-V&MmF!OQZI zvkIrA@$lNj8gIDF&EMbHq}ul<$I*8Qr;+}bO+O^mL-gbmLpio=aO&K?cTa|>*lf!` uQd+meY=rkQE#=FbSiFz>u<JjOqpbOv%r7-Gimw8#X7F_Nb6Mw<&;$V2d~i4b literal 0 HcmV?d00001 diff --git a/mod/workshop/icon3.gif b/mod/workshop/icon3.gif new file mode 100755 index 0000000000000000000000000000000000000000..d9ffc4d3d1785d9f9396d65aaf15ec5088c9a235 GIT binary patch literal 127 zcmZ?wbhEHb6krfwSj5V3W@Z`#1H=FS|IeHOGL3-@AQuP}f3h$#Ft9S{fH)wv49qSP zyJWuVcX+OBcI~^nYfI<~j@t{SE;VRccy;27WlSZ1D@*O3J2<dxiSKtm!&qywBsY?W ZiSba%<xFLkYA&sdvwkazA7o*$1^^6WE^q(< literal 0 HcmV?d00001 diff --git a/mod/workshop/icon4.gif b/mod/workshop/icon4.gif new file mode 100755 index 0000000000000000000000000000000000000000..199488609839e5d836ce7a58197145cab9c27c79 GIT binary patch literal 132 zcmZ?wbhEHb6krfwSi}GV|Ns9#Gc&EcynJSwF^~-wV^I9b!pOkD%Af<{g48lFdvfgJ z`O4qoxw6^y*0IAsqPB)!O0R2t)Tku6>?~KbQ*L`!*88Su%uGxM94tI(R&i&a-{!5J cd_Pyi#%#(F4HkzNnpsY7r>Uo?FfdpH07mpJ+yDRo literal 0 HcmV?d00001 diff --git a/mod/workshop/icon5.gif b/mod/workshop/icon5.gif new file mode 100755 index 0000000000000000000000000000000000000000..161116298d837bbefef02ff16307f0566957f80a GIT binary patch literal 122 zcmZ?wbhEHb6krfwSj50ElY!xkvGJKRXJ*cvnU<FJ|NnmmFi`x-!pOkD%Af<{fz&cE z+ea8*{pa7IxVj~achS}gsq2+|iSr%@%}Z0SYmIE%*tJnRjKSuEfK}Xq<<$&KhZhxk WguI(^?$|`}+MvakmnkzcSOWlTeJgDM literal 0 HcmV?d00001 diff --git a/mod/workshop/index.php b/mod/workshop/index.php index 92b5a619442..a50e7acec5c 100644 --- a/mod/workshop/index.php +++ b/mod/workshop/index.php @@ -1,8 +1,8 @@ -<?php // $Id$ +<?PHP // $Id$ require("../../config.php"); - require("lib.php"); - require("locallib.php"); + require("lib.php"); + require("locallib.php"); require_variable($id); // course @@ -10,7 +10,7 @@ error("Course ID is incorrect"); } - require_course_login($course); + require_login($course->id); add_to_log($course->id, "workshop", "view all", "index.php?id=$course->id", ""); $strworkshops = get_string("modulenameplural", "workshop"); @@ -18,11 +18,7 @@ $strweek = get_string("week"); $strtopic = get_string("topic"); $strname = get_string("name"); - if (isstudent($course->id)) { - $strinfo = get_string("grade"); - } else { - $strinfo = get_string("phase", "workshop"); - } + $strphase = get_string("phase", "workshop"); $strdeadline = get_string("deadline", "workshop"); $strsubmitted = get_string("submitted", "assignment"); @@ -36,93 +32,73 @@ $timenow = time(); if ($course->format == "weeks") { - $table->head = array ($strweek, $strname, $strinfo, $strsubmitted, $strdeadline); + $table->head = array ($strweek, $strname, $strphase, $strsubmitted, $strdeadline); $table->align = array ("CENTER", "LEFT", "LEFT", "LEFT", "LEFT"); } elseif ($course->format == "topics") { - $table->head = array ($strtopic, $strname, $strinfo, $strsubmitted, $strdeadline); + $table->head = array ($strtopic, $strname, $strphase, $strsubmitted, $strdeadline); $table->align = array ("CENTER", "LEFT", "left", "LEFT", "LEFT"); } else { - $table->head = array ($strname, $strinfo, $strsubmitted, $strdeadline); + $table->head = array ($strname, $strphase, $strsubmitted, $strdeadline); $table->align = array ("LEFT", "LEFT", "LEFT", "LEFT"); } foreach ($workshops as $workshop) { - if (isteacher($course->id, $USER->id)) { // teacher see info (students see grade) - $info = workshop_phase($workshop, 'short'); - if (time() > $workshop->submissionstart) { - if ($num = workshop_count_student_submissions_for_assessment($workshop, $USER)) { - $info .= " [".get_string("unassessed", "workshop", $num)."]"; - } - } + switch ($workshop->phase) { + case 0: + case 1: $phase = get_string("phase1short", "workshop"); + break; + case 2: $phase = get_string("phase2short", "workshop"); + break; + case 3: $phase = get_string("phase3short", "workshop"); + break; + case 4: $phase = get_string("phase4short", "workshop"); + break; + case 5: $phase = get_string("phase5short", "workshop"); + break; + case 6: $phase = get_string("phase6short", "workshop"); + break; } - - $due = userdate($workshop->submissionend); - if ($submissions = workshop_get_user_submissions($workshop, $USER)) { foreach ($submissions as $submission) { - if ($submission->timecreated <= $workshop->submissionend) { + if ($submission->timecreated <= $workshop->deadline) { $submitted = userdate($submission->timecreated); - } + } else { - $submitted = "<font color=\"red\">".userdate($submission->timecreated)."</font>"; + $submitted = "<FONT COLOR=red>".userdate($submission->timecreated)."</FONT>"; } + $due = userdate($workshop->deadline); if (!$workshop->visible) { //Show dimmed if the mod is hidden - $link = "<a class=\"dimmed\" href=\"view.php?id=$workshop->coursemodule\">".format_string($workshop->name,true)."</a><br />"; - } else { + $link = "<A class=\"dimmed\" HREF=\"view.php?id=$workshop->coursemodule\">$workshop->name</A><br />". + "($submission->title)"; + } else { //Show normal if the mod is visible - $link = "<a href=\"view.php?id=$workshop->coursemodule\">".format_string($workshop->name,true)."</a><br />"; - } - if (isstudent($course->id)) { - $link .= " ($submission->title)"; // show students the title of their submission(s) - $gradinggrade = workshop_gradinggrade($workshop, $USER); - $grade = workshop_submission_grade($workshop, $submission); - if ($workshop->wtype) { - if (workshop_count_assessments($submission)) { - $info = get_string("gradeforassessments", "workshop"). - ": $gradinggrade/$workshop->gradinggrade; ".get_string("gradeforsubmission", - "workshop").": $grade/$workshop->grade"; - } else { - $info = get_string("gradeforassessments", "workshop"). - ": $gradinggrade/$workshop->gradinggrade; ".get_string("gradeforsubmission", - "workshop").": ".get_string("noassessments", "workshop"); - } - } else { // simple assignemnt, don't show grading grade - $info = get_string("gradeforsubmission", "workshop").": $grade/$workshop->grade"; - } - if ($workshop->releasegrades > $timenow) { - $info = get_string("notavailable", "workshop"); - } + $link = "<A HREF=\"view.php?id=$workshop->coursemodule\">$workshop->name</A><br />". + "($submission->title)"; } if ($course->format == "weeks" or $course->format == "topics") { - $table->data[] = array ($workshop->section, $link, $info, $submitted, $due); - } + $table->data[] = array ($workshop->section, $link, $phase, $submitted, $due); + } else { - $table->data[] = array ($link, $info, $submitted, $due); - } - if (isteacher($course->id)) { - // teacher only needs to see one "submission" - break; + $table->data[] = array ($link, $phase, $submitted, $due); } } } - else { // no submission + else { $submitted = get_string("no"); + $due = userdate($workshop->deadline); if (!$workshop->visible) { //Show dimmed if the mod is hidden - $link = "<a class=\"dimmed\" href=\"view.php?id=$workshop->coursemodule\">".format_string($workshop->name,true)."</a>"; + $link = "<A class=\"dimmed\" HREF=\"view.php?id=$workshop->coursemodule\">$workshop->name</A>"; } else { //Show normal if the mod is visible - $link = "<a href=\"view.php?id=$workshop->coursemodule\">".format_string($workshop->name,true)."</a>"; - } - if (isstudent($course->id)) { - $info = '0'; + $link = "<A HREF=\"view.php?id=$workshop->coursemodule\">$workshop->name</A>"; } if ($course->format == "weeks" or $course->format == "topics") { - $table->data[] = array ($workshop->section, $link, $info, $submitted, $due); - } + $table->data[] = array ($workshop->section, $link, $phase, $submitted, $due); + } else { - $table->data[] = array ($link, $info, $submitted, $due); + $table->data[] = array ($link, $phase, $submitted, $due); } } } diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php index ca6ce0b6d04..93523ba1382 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -1,14 +1,50 @@ -<?php // $Id: lib.php,v 1.1 23 Aug 2003 +<?PHP // $Id: lib.php,v 1.1 23 Aug 2003 // workshop constants and standard Moodle functions plus the workshop functions // called by the standard functions // see also locallib.php for other non-standard workshop functions -require_once($CFG->libdir.'/filelib.php'); +include_once("$CFG->dirroot/files/mimetypes.php"); /*** Constants **********************************/ +$WORKSHOP_TYPE = array (0 => get_string("notgraded", "workshop"), + 1 => get_string("accumulative", "workshop"), + 2 => get_string("errorbanded", "workshop"), + 3 => get_string("criterion", "workshop"), + 4 => get_string("rubric", "workshop") ); + +$WORKSHOP_SHOWGRADES = array (0 => get_string("dontshowgrades", "workshop"), + 1 => get_string("showgrades", "workshop") ); + +$WORKSHOP_SCALES = array( + 0 => array( 'name' => get_string("scaleyes", "workshop"), 'type' => 'radio', + 'size' => 2, 'start' => get_string("yes"), 'end' => get_string("no")), + 1 => array( 'name' => get_string("scalepresent", "workshop"), 'type' => 'radio', + 'size' => 2, 'start' => get_string("present", "workshop"), + 'end' => get_string("absent", "workshop")), + 2 => array( 'name' => get_string("scalecorrect", "workshop"), 'type' => 'radio', + 'size' => 2, 'start' => get_string("correct", "workshop"), + 'end' => get_string("incorrect", "workshop")), + 3 => array( 'name' => get_string("scalegood3", "workshop"), 'type' => 'radio', + 'size' => 3, 'start' => get_string("good", "workshop"), + 'end' => get_string("poor", "workshop")), + 4 => array( 'name' => get_string("scaleexcellent4", "workshop"), 'type' => 'radio', + 'size' => 4, 'start' => get_string("excellent", "workshop"), + 'end' => get_string("verypoor", "workshop")), + 5 => array( 'name' => get_string("scaleexcellent5", "workshop"), 'type' => 'radio', + 'size' => 5, 'start' => get_string("excellent", "workshop"), + 'end' => get_string("verypoor", "workshop")), + 6 => array( 'name' => get_string("scaleexcellent7", "workshop"), 'type' => 'radio', + 'size' => 7, 'start' => get_string("excellent", "workshop"), + 'end' => get_string("verypoor", "workshop")), + 7 => array( 'name' => get_string("scale10", "workshop"), 'type' => 'selection', + 'size' => 10), + 8 => array( 'name' => get_string("scale20", "workshop"), 'type' => 'selection', + 'size' => 20), + 9 => array( 'name' => get_string("scale100", "workshop"), 'type' => 'selection', + 'size' => 100)); $WORKSHOP_EWEIGHTS = array( 0 => -4.0, 1 => -2.0, 2 => -1.5, 3 => -1.0, 4 => -0.75, 5 => -0.5, 6 => -0.25, 7 => 0.0, 8 => 0.25, 9 => 0.5, 10 => 0.75, 11=> 1.0, 12 => 1.5, 13=> 2.0, @@ -17,19 +53,13 @@ $WORKSHOP_EWEIGHTS = array( 0 => -4.0, 1 => -2.0, 2 => -1.5, 3 => -1.0, 4 => -0 $WORKSHOP_FWEIGHTS = array( 0 => 0, 1 => 0.1, 2 => 0.25, 3 => 0.5, 4 => 0.75, 5 => 1.0, 6 => 1.5, 7 => 2.0, 8 => 3.0, 9 => 5.0, 10 => 7.5, 11=> 10.0, 12=>50.0); - -$WORKSHOP_ASSESSMENT_COMPS = array ( - 0 => array('name' => get_string('verylax', 'workshop'), 'value' => 1), - 1 => array('name' => get_string('lax', 'workshop'), 'value' => 0.6), - 2 => array('name' => get_string('fair', 'workshop'), 'value' => 0.4), - 3 => array('name' => get_string('strict', 'workshop'), 'value' => 0.33), - 4 => array('name' => get_string('verystrict', 'workshop'), 'value' => 0.2) ); - +if (!defined("COMMENTSCALE")) { + define("COMMENTSCALE", 20); + } /*** Standard Moodle functions ****************** workshop_add_instance($workshop) -workshop_check_dates($workshop) workshop_cron () workshop_delete_instance($id) workshop_grades($workshopid) @@ -48,76 +78,31 @@ function workshop_add_instance($workshop) { // of the new instance. $workshop->timemodified = time(); - - $workshop->submissionstart = make_timestamp($workshop->submissionstartyear, - $workshop->submissionstartmonth, $workshop->submissionstartday, $workshop->submissionstarthour, - $workshop->submissionstartminute); - - $workshop->assessmentstart = make_timestamp($workshop->assessmentstartyear, - $workshop->assessmentstartmonth, $workshop->assessmentstartday, $workshop->assessmentstarthour, - $workshop->assessmentstartminute); - - $workshop->submissionend = make_timestamp($workshop->submissionendyear, - $workshop->submissionendmonth, $workshop->submissionendday, $workshop->submissionendhour, - $workshop->submissionendminute); - - $workshop->assessmentend = make_timestamp($workshop->assessmentendyear, - $workshop->assessmentendmonth, $workshop->assessmentendday, $workshop->assessmentendhour, - $workshop->assessmentendminute); - - $workshop->releasegrades = make_timestamp($workshop->releaseyear, - $workshop->releasemonth, $workshop->releaseday, $workshop->releasehour, - $workshop->releaseminute); - if (!workshop_check_dates($workshop)) { - return get_string('invaliddates', 'workshop'); - } + $workshop->deadline = make_timestamp($workshop->deadlineyear, + $workshop->deadlinemonth, $workshop->deadlineday, $workshop->deadlinehour, + $workshop->deadlineminute); if ($returnid = insert_record("workshop", $workshop)) { $event = NULL; - $event->name = get_string('submissionstartevent','workshop', $workshop->name); + $event->name = $workshop->name; $event->description = $workshop->description; $event->courseid = $workshop->course; $event->groupid = 0; $event->userid = 0; $event->modulename = 'workshop'; $event->instance = $returnid; - $event->eventtype = 'submissionstart'; - $event->timestart = $workshop->submissionstart; + $event->eventtype = 'deadline'; + $event->timestart = $workshop->deadline; $event->timeduration = 0; - add_event($event); - $event->name = get_string('submissionendevent','workshop', $workshop->name); - $event->eventtype = 'submissionend'; - $event->timestart = $workshop->submissionend; - add_event($event); - - $event->name = get_string('assessmentstartevent','workshop', $workshop->name); - $event->eventtype = 'assessmentstart'; - $event->timestart = $workshop->assessmentstart; - add_event($event); - - $event->name = get_string('assessmentendevent','workshop', $workshop->name); - $event->eventtype = 'assessmentend'; - $event->timestart = $workshop->assessmentend; add_event($event); } return $returnid; } -/////////////////////////////////////////////////////////////////////////////// -// returns true if the dates are valid, false otherwise -function workshop_check_dates($workshop) { - // allow submission and assessment to start on the same date and to end on the same date - // but enforce non-empty submission period and non-empty assessment period. - return ($workshop->submissionstart < $workshop->submissionend and - $workshop->submissionstart <= $workshop->assessmentstart and - $workshop->assessmentstart < $workshop->assessmentend and - $workshop->submissionend <= $workshop->assessmentend); -} - /////////////////////////////////////////////////////////////////////////////// function workshop_cron () { @@ -125,22 +110,13 @@ function workshop_cron () { global $CFG, $USER; - // if there any ungraded assessments run the grading routine - if ($workshops = get_records("workshop")) { - foreach ($workshops as $workshop) { - // automatically grade assessments if workshop has examples and/or peer assessments - if ($workshop->gradingstrategy and ($workshop->ntassessments or $workshop->nsassessments)) { - workshop_grade_assessments($workshop); - } - } - } - $timenow = time(); - // Find all workshop notifications that have yet to be mailed out, and mails them - $cutofftime = $timenow - $CFG->maxeditingtime; + $cutofftime = time() - $CFG->maxeditingtime; // look for new assessments if ($assessments = workshop_get_unmailed_assessments($cutofftime)) { + $timenow = time(); + foreach ($assessments as $assessment) { echo "Processing workshop assessment $assessment->id\n"; @@ -201,26 +177,25 @@ function workshop_cron () { " ".fullname($assessmentowner)."\n"; } // "The comments and grade can be seen in the workshop assignment '$workshop->name' - // I have taken the following line out because the info is repeated below. - // $msg .= get_string("mail2", "workshop", $workshop->name)."\n\n"; + $msg .= get_string("mail2", "workshop", $workshop->name)."\n\n"; - $postsubject = "$course->shortname: $strworkshops: ".format_string($workshop->name,true); - $posttext = "$course->shortname -> $strworkshops -> ".format_string($workshop->name,true)."\n"; + $postsubject = "$course->shortname: $strworkshops: $workshop->name"; + $posttext = "$course->shortname -> $strworkshops -> $workshop->name\n"; $posttext .= "---------------------------------------------------------------------\n"; $posttext .= $msg; - // "The comments and grade can be seen in ..." - $posttext .= get_string("mail2", "workshop", - format_string($workshop->name,true).", $CFG->wwwroot/mod/workshop/view.php?id=$cm->id")."\n"; + // "You can see it in your workshop assignment" + $posttext .= get_string("mail3", "workshop").":\n"; + $posttext .= " $CFG->wwwroot/mod/workshop/view.php?id=$cm->id\n"; $posttext .= "---------------------------------------------------------------------\n"; if ($sendto->mailformat == 1) { // HTML - $posthtml = "<p><font face=\"sans-serif\">". - "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ->". - "<a href=\"$CFG->wwwroot/mod/workshop/index.php?id=$course->id\">$strworkshops</a> ->". - "<a href=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">".format_string($workshop->name,true)."</a></font></p>"; - $posthtml .= "<hr><font face=\"sans-serif\">"; - $posthtml .= "<p>$msg</p>"; - $posthtml .= "<p>".get_string("mail2", "workshop", - " <a href=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">".format_string($workshop->name,true)."</a>")."</p></font><hr>"; + $posthtml = "<P><FONT FACE=sans-serif>". + "<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/workshop/index.php?id=$course->id\">$strworkshops</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">$workshop->name</A></FONT></P>"; + $posthtml .= "<HR><FONT FACE=sans-serif>"; + $posthtml .= "<P>$msg</P>"; + $posthtml .= "<P>".get_string("mail3", "workshop"). + " <A HREF=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">$workshop->name</A>.</P></FONT><HR>"; } else { $posthtml = ""; } @@ -291,25 +266,25 @@ function workshop_cron () { // "The assignment \"$submission->title\" is a revised piece of work. " $msg = get_string("mail8", "workshop", $submission->title)."\n"; // "Please assess it in the workshop assignment '$workshop->name' - // $msg .= get_string("mail9", "workshop", $workshop->name)."\n\n"; + $msg .= get_string("mail9", "workshop", $workshop->name)."\n\n"; - $postsubject = "$course->shortname: $strworkshops: ".format_string($workshop->name,true); - $posttext = "$course->shortname -> $strworkshops -> ".format_string($workshop->name,true)."\n"; + $postsubject = "$course->shortname: $strworkshops: $workshop->name"; + $posttext = "$course->shortname -> $strworkshops -> $workshop->name\n"; $posttext .= "---------------------------------------------------------------------\n"; $posttext .= $msg; - // "Please assess it in ..." - $posttext .= get_string("mail9", "workshop", - format_string($workshop->name,true).", $CFG->wwwroot/mod/workshop/view.php?id=$cm->id")."\n"; + // "You can assess it in your workshop assignment" + $posttext .= get_string("mail10", "workshop").":\n"; + $posttext .= " $CFG->wwwroot/mod/workshop/view.php?id=$cm->id\n"; $posttext .= "---------------------------------------------------------------------\n"; if ($sendto->mailformat == 1) { // HTML - $posthtml = "<p><font face=\"sans-serif\">". - "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ->". - "<a href=\"$CFG->wwwroot/mod/workshop/index.php?id=$course->id\">$strworkshops</a> ->". - "<a href=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">".format_string($workshop->name,true)."</a></font></p>"; - $posthtml .= "<hr><font face=\"sans-serif\">"; - $posthtml .= "<p>$msg</p>"; - $posthtml .= "<p>".get_string("mail9", "workshop", - " <a href=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">".format_string($workshop->name,true)."</a>").'</p></font><hr>'; + $posthtml = "<P><FONT FACE=sans-serif>". + "<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/workshop/index.php?id=$course->id\">$strworkshops</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">$workshop->name</A></FONT></P>"; + $posthtml .= "<HR><FONT FACE=sans-serif>"; + $posthtml .= "<P>$msg</P>"; + $posthtml .= "<P>".get_string("mail3", "workshop"). + " <A HREF=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">$workshop->name</A>.</P></FONT><HR>"; } else { $posthtml = ""; @@ -386,45 +361,45 @@ function workshop_cron () { // "A comment has been added to the assignment \"$submission->title\" by if (isstudent($course->id, $assessmentowner->id)) { $msg = get_string("mail4", "workshop", $submission->title)." a $course->student.\n"; - } + } else { $msg = get_string("mail4", "workshop", $submission->title)." ".fullname($assessmentowner)."\n"; - } + } // "The new comment can be seen in the workshop assignment '$workshop->name' - // $msg .= get_string("mail5", "workshop", $workshop->name)."\n\n"; + $msg .= get_string("mail5", "workshop", $workshop->name)."\n\n"; - $postsubject = "$course->shortname: $strworkshops: ".format_string($workshop->name,true); - $posttext = "$course->shortname -> $strworkshops -> ".format_string($workshop->name,true)."\n"; + $postsubject = "$course->shortname: $strworkshops: $workshop->name"; + $posttext = "$course->shortname -> $strworkshops -> $workshop->name\n"; $posttext .= "---------------------------------------------------------------------\n"; $posttext .= $msg; - // "The new comment can be seen in ..." - $posttext .= get_string("mail5", "workshop", - format_string($workshop->name,true).", $CFG->wwwroot/mod/workshop/view.php?id=$cm->id")."\n"; + // "You can see it in your workshop assignment" + $posttext .= get_string("mail3", "workshop").":\n"; + $posttext .= " $CFG->wwwroot/mod/workshop/view.php?id=$cm->id\n"; $posttext .= "---------------------------------------------------------------------\n"; if ($sendto->mailformat == 1) { // HTML - $posthtml = "<p><font face=\"sans-serif\">". - "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ->". - "<a href=\"$CFG->wwwroot/mod/workshop/index.php?id=$course->id\">$strworkshops</a> ->". - "<a href=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">".format_string($workshop->name,true)."</a></font></p>"; - $posthtml .= "<hr><font face=\"sans-serif\">"; - $posthtml .= "<p>$msg</p>"; - $posthtml .= "<p>".get_string("mail5", "workshop", - " <a href=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">".format_string($workshop->name,true)."</a>") - ."</p></font><hr>"; - } + $posthtml = "<P><FONT FACE=sans-serif>". + "<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/workshop/index.php?id=$course->id\">$strworkshops</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">$workshop->name</A></FONT></P>"; + $posthtml .= "<HR><FONT FACE=sans-serif>"; + $posthtml .= "<P>$msg</P>"; + $posthtml .= "<P>".get_string("mail3", "workshop"). + " <A HREF=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">$workshop->name</A> + .</P></FONT><HR>"; + } else { $posthtml = ""; - } + } if (!$teacher = get_teacher($course->id)) { echo "Error: can not find teacher for course $course->id!\n"; - } + } if (! email_to_user($sendto, $teacher, $postsubject, $posttext, $posthtml)) { echo "Error: workshop cron: Could not send out mail for id $submission->id to user $sendto->id ($sendto->email)\n"; + } } - } // see if the assessor needs to to told if ($comment->userid != $assessment->userid) { $USER->lang = $assessmentowner->lang; @@ -432,51 +407,142 @@ function workshop_cron () { // "A comment has been added to the assignment \"$submission->title\" by if (isstudent($course->id, $submissionowner->id)) { $msg = get_string("mail4", "workshop", $submission->title)." a $course->student.\n"; - } + } else { $msg = get_string("mail4", "workshop", $submission->title). " ".fullname($submissionowner)."\n"; - } + } // "The new comment can be seen in the workshop assignment '$workshop->name' - // $msg .= get_string("mail5", "workshop", $workshop->name)."\n\n"; + $msg .= get_string("mail5", "workshop", $workshop->name)."\n\n"; - $postsubject = "$course->shortname: $strworkshops: ".format_string($workshop->name,true); - $posttext = "$course->shortname -> $strworkshops -> ".format_string($workshop->name,true)."\n"; + $postsubject = "$course->shortname: $strworkshops: $workshop->name"; + $posttext = "$course->shortname -> $strworkshops -> $workshop->name\n"; $posttext .= "---------------------------------------------------------------------\n"; $posttext .= $msg; - // "The new comment can be seen in ..." - $posttext .= get_string("mail5", "workshop", - format_string($workshop->name,true).", $CFG->wwwroot/mod/workshop/view.php?id=$cm->id")."\n"; + // "You can see it in your workshop assignment" + $posttext .= get_string("mail3", "workshop").":\n"; + $posttext .= " $CFG->wwwroot/mod/workshop/view.php?id=$cm->id\n"; $posttext .= "---------------------------------------------------------------------\n"; if ($sendto->mailformat == 1) { // HTML - $posthtml = "<p><font face=\"sans-serif\">". - "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ->". - "<a href=\"$CFG->wwwroot/mod/workshop/index.php?id=$course->id\">$strworkshops</a> ->". - "<a href=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">".format_string($workshop->name,true)."</a></font></p>"; - $posthtml .= "<hr><font face=\"sans-serif\">"; - $posthtml .= "<p>$msg</p>"; - $posthtml .= "<p>".get_string("mail5", "workshop", - " <a href=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">".format_string($workshop->name,true)."</a>") - ."</p></font><hr>"; - } + $posthtml = "<P><FONT FACE=sans-serif>". + "<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/workshop/index.php?id=$course->id\">$strworkshops</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">$workshop->name</A></FONT></P>"; + $posthtml .= "<HR><FONT FACE=sans-serif>"; + $posthtml .= "<P>$msg</P>"; + $posthtml .= "<P>".get_string("mail3", "workshop"). + " <A HREF=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">$workshop->name</A>.</P></FONT><HR>"; + } else { $posthtml = ""; - } + } if (!$teacher = get_teacher($course->id)) { echo "Error: can not find teacher for course $course->id!\n"; - } + } if (! email_to_user($sendto, $teacher, $postsubject, $posttext, $posthtml)) { echo "Error: workshop cron: Could not send out mail for id $submission->id to user $sendto->id ($sendto->email)\n"; - } + } if (! set_field("workshop_comments", "mailed", "1", "id", "$comment->id")) { echo "Could not update the mailed field for comment id $comment->id\n"; + } } } } + + + // look for new gradings + if ($assessments = workshop_get_unmailed_graded_assessments($cutofftime)) { + $timenow = time(); + + foreach ($assessments as $assessment) { + + echo "Processing workshop assessment $assessment->id (graded)\n"; + + // only process the entry once + if (! set_field("workshop_assessments", "mailed", "1", "id", "$assessment->id")) { + echo "Could not update the mailed field for id $assessment->id\n"; + } + + if (! $submission = get_record("workshop_submissions", "id", "$assessment->submissionid")) { + echo "Could not find submission $assessment->submissionid\n"; + continue; + } + + if (! $workshop = get_record("workshop", "id", $submission->workshopid)) { + echo "Could not find workshop id $submission->workshopid\n"; + continue; + } + if (! $course = get_record("course", "id", $workshop->course)) { + error("Could not find course id $workshop->course"); + continue; + } + if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id)) { + error("Course Module ID was incorrect"); + continue; + } + if (! $submissionowner = get_record("user", "id", "$submission->userid")) { + echo "Could not find user $submission->userid\n"; + continue; + } + if (! $assessmentowner = get_record("user", "id", "$assessment->userid")) { + echo "Could not find user $assessment->userid\n"; + continue; + } + if (! isstudent($course->id, $submissionowner->id) and !isteacher($course->id, + $submissionowner->id)) { + continue; // Not an active participant + } + if (! isstudent($course->id, $assessmentowner->id) and !isteacher($course->id, + $assessmentowner->id)) { + continue; // Not an active participant + } + + $strworkshops = get_string("modulenameplural", "workshop"); + $strworkshop = get_string("modulename", "workshop"); + + // it's a grading tell the assessment owner + $USER->lang = $assessmentowner->lang; + $sendto = $assessmentowner; + // Your assessment of the assignment \"$submission->title\" has by reviewed + $msg = get_string("mail6", "workshop", $submission->title).".\n"; + // The comments given by the $course->teacher can be seen in the Workshop Assignment + $msg .= get_string("mail7", "workshop", $course->teacher)." '$workshop->name'.\n\n"; + + $postsubject = "$course->shortname: $strworkshops: $workshop->name"; + $posttext = "$course->shortname -> $strworkshops -> $workshop->name\n"; + $posttext .= "---------------------------------------------------------------------\n"; + $posttext .= $msg; + // "You can see it in your workshop assignment" + $posttext .= get_string("mail3", "workshop").":\n"; + $posttext .= " $CFG->wwwroot/mod/workshop/view.php?id=$cm->id\n"; + $posttext .= "---------------------------------------------------------------------\n"; + if ($sendto->mailformat == 1) { // HTML + $posthtml = "<P><FONT FACE=sans-serif>". + "<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/workshop/index.php?id=$course->id\">$strworkshops</A> ->". + "<A HREF=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">$workshop->name</A></FONT></P>"; + $posthtml .= "<HR><FONT FACE=sans-serif>"; + $posthtml .= "<P>$msg</P>"; + $posthtml .= "<P>".get_string("mail3", "workshop"). + " <A HREF=\"$CFG->wwwroot/mod/workshop/view.php?id=$cm->id\">$workshop->name</A>.</P></FONT><HR>"; + } else { + $posthtml = ""; + } + + if (!$teacher = get_teacher($course->id)) { + echo "Error: can not find teacher for course $course->id!\n"; + } + + if (! email_to_user($sendto, $teacher, $postsubject, $posttext, $posthtml)) { + echo "Error: workshop cron: Could not send out mail for id $submission->id to user + $sendto->id ($sendto->email)\n"; + } + } } + return true; } @@ -498,10 +564,6 @@ function workshop_delete_instance($id) { $result = false; } - if (! delete_records("workshop_stockcomments", "workshopid", "$workshop->id")) { - $result = false; - } - if (! delete_records("workshop_grades", "workshopid", "$workshop->id")) { $result = false; } @@ -533,50 +595,24 @@ function workshop_delete_instance($id) { /////////////////////////////////////////////////////////////////////////////// function workshop_grades($workshopid) { /// Must return an array of grades, indexed by user, and a max grade. -/// only returns grades once assessment has started -/// returns nothing if workshop is not graded - global $CFG; +/// only retruns grades in phase 6 +global $CFG; - $return = null; if ($workshop = get_record("workshop", "id", $workshopid)) { - if (($workshop->assessmentstart < time()) and $workshop->gradingstrategy) { - if ($students = get_course_students($workshop->course)) { - foreach ($students as $student) { - if ($workshop->wtype) { - $gradinggrade = workshop_gradinggrade($workshop, $student); - } else { // ignore grading grades for simple assignments - $gradinggrade = 0; - } - $bestgrade = 0; - if ($submissions = workshop_get_user_submissions($workshop, $student)) { - foreach ($submissions as $submission) { - if (!$submission->late) { - $grade = workshop_submission_grade($workshop, $submission); - } else { - $grade = 0.01; - } - if ($grade > $bestgrade) { - $bestgrade = $grade; - } - } - } - $return->grades[$student->id] = $gradinggrade + $bestgrade; + if ($workshop->phase == 6) { + if ($bestsubmissions = get_records_sql("SELECT userid, max(finalgrade) finalgrade FROM + {$CFG->prefix}workshop_submissions WHERE workshopid = $workshopid GROUP + BY userid")) { + foreach ($bestsubmissions as $bestgrade) { + $return->grades[$bestgrade->userid] = $bestgrade->finalgrade; } } } - // set maximum grade if graded - if ($workshop->gradingstrategy) { - if ($workshop->wtype) { - $return->maxgrade = $workshop->grade + $workshop->gradinggrade; - } else { // ignore grading grades for simple assignemnts - $return->maxgrade = $workshop->grade; - } - } + $return->maxgrade = $workshop->grade; } return $return; } -////////////////////////////////////////////////////////////////////////////////////// function workshop_is_recent_activity($course, $isteacher, $timestart) {//jlw1 added for adding mark to courses with activity in My Moodle global $CFG; @@ -622,6 +658,7 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { } // if we got some "live" ones then output them if ($agreecontent) { + $strftimerecent = get_string("strftimerecent"); print_headline(get_string("workshopagreedassessments", "workshop").":"); foreach ($logs as $log) { //Create a temp valid module structure (only need courseid, moduleid) @@ -629,17 +666,21 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { $tempmod->id = $log->workshopid; //Obtain the visible property from the instance if (instance_is_visible("workshop",$tempmod)) { - if (!isteacher($course->id, $log->userid)) { // don't break anonymous rule - $log->firstname = $course->student; - $log->lastname = ''; + $date = userdate($log->time, $strftimerecent); + if (isteacher($course->id, $log->userid)) { + echo "<p><font size=1>$date - ".fullname($log)."<br />"; + } + else { // don't break anonymous rule + echo "<p><font size=1>$date - A $course->student<br />"; + } + echo "\"<a href=\"$CFG->wwwroot/mod/workshop/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; } - print_recent_activity_note($log->time, $log, $isteacher, $log->name, - $CFG->wwwroot.'/mod/workshop/'.$log->url); } } } } - } // have a look for new assessments for this user (assess) $assesscontent = false; @@ -658,6 +699,7 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { } // if we got some "live" ones then output them if ($assesscontent) { + $strftimerecent = get_string("strftimerecent"); print_headline(get_string("workshopassessments", "workshop").":"); foreach ($logs as $log) { //Create a temp valid module structure (only need courseid, moduleid) @@ -665,17 +707,22 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { $tempmod->id = $log->workshopid; //Obtain the visible property from the instance if (instance_is_visible("workshop",$tempmod)) { - if (!isteacher($course->id, $log->userid)) { // don't break anonymous rule - $log->firstname = $course->student; - $log->lastname = ''; + $date = userdate($log->time, $strftimerecent); + if (isteacher($course->id, $log->userid)) { + echo "<p><font size=1>$date - ".fullname($log)."<br />"; + } + else { // don't break anonymous rule + echo "<p><font size=1>$date - A $course->student<br />"; + } + echo "\"<a href=\"$CFG->wwwroot/mod/workshop/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; } - print_recent_activity_note($log->time, $log, $isteacher, $log->name, - $CFG->wwwroot.'/mod/workshop/'.$log->url); } } } } - } + // have a look for new comments for this user (comment) $commentcontent = false; if (!$isteacher) { // teachers only need to see submissions @@ -693,6 +740,7 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { } // if we got some "live" ones then output them if ($commentcontent) { + $strftimerecent = get_string("strftimerecent"); print_headline(get_string("workshopcomments", "workshop").":"); foreach ($logs as $log) { //Create a temp valid module structure (only need courseid, moduleid) @@ -700,15 +748,16 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { $tempmod->id = $log->workshopid; //Obtain the visible property from the instance if (instance_is_visible("workshop",$tempmod)) { - $log->firstname = $course->student; // Keep anonymous - $log->lastname = ''; - print_recent_activity_note($log->time, $log, $isteacher, $log->name, - $CFG->wwwroot.'/mod/workshop/'.$log->url); + $date = userdate($log->time, $strftimerecent); + echo "<p><font size=1>$date - A $course->student<br />"; + echo "\"<a href=\"$CFG->wwwroot/mod/workshop/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; + } } } } } - } // have a look for new assessment gradings for this user (grade) $gradecontent = false; @@ -726,6 +775,7 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { } // if we got some "live" ones then output them if ($gradecontent) { + $strftimerecent = get_string("strftimerecent"); print_headline(get_string("workshopfeedback", "workshop").":"); foreach ($logs as $log) { //Create a temp valid module structure (only need courseid, moduleid) @@ -733,14 +783,15 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { $tempmod->id = $log->workshopid; //Obtain the visible property from the instance if (instance_is_visible("workshop",$tempmod)) { - $log->firstname = $course->teacher; // Keep anonymous - $log->lastname = ''; - print_recent_activity_note($log->time, $log, $isteacher, $log->name, - $CFG->wwwroot.'/mod/workshop/'.$log->url); + $date = userdate($log->time, $strftimerecent); + echo "<p><font size=1>$date - $course->teacher<br />"; + echo "\"<a href=\"$CFG->wwwroot/mod/workshop/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; + } } } } - } // have a look for new submissions (only show to teachers) (submit) $submitcontent = false; @@ -759,6 +810,7 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { } // if we got some "live" ones then output them if ($submitcontent) { + $strftimerecent = get_string("strftimerecent"); print_headline(get_string("workshopsubmissions", "workshop").":"); foreach ($logs as $log) { //Create a temp valid module structure (only need courseid, moduleid) @@ -766,13 +818,16 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { $tempmod->id = $log->workshopid; //Obtain the visible property from the instance if (instance_is_visible("workshop",$tempmod)) { - print_recent_activity_note($log->time, $log, $isteacher, $log->name, - $CFG->wwwroot.'/mod/workshop/'.$log->url); + $date = userdate($log->time, $strftimerecent); + echo "<p><font size=1>$date - ".fullname($log)."<br />"; + echo "\"<a href=\"$CFG->wwwroot/mod/workshop/$log->url\">"; + echo "$log->name"; + echo "</a>\"</font></p>"; + } } } } } - } return $agreecontent or $assesscontent or $commentcontent or $gradecontent or $submitcontent; } @@ -798,37 +853,26 @@ function workshop_refresh_events($courseid = 0) { $moduleid = get_field('modules', 'id', 'name', 'workshop'); foreach ($workshops as $workshop) { + $event = NULL; + $event->name = addslashes($workshop->name); + $event->description = addslashes($workshop->description); + $event->timestart = $workshop->deadline; + + if ($event->id = get_field('event', 'id', 'modulename', 'workshop', 'instance', $workshop->id)) { + update_event($event); - $dates = array( - 'submissionstart' => $workshop->submissionstart, - 'submissionend' => $workshop->submissionend, - 'assessmentstart' => $workshop->assessmentstart, - 'assessmentend' => $workshop->assessmentend - ); - - foreach ($dates as $type => $date) { - - if ($date) { - if ($event = get_record('event', 'modulename', 'workshop', 'instance', $workshop->id, 'eventtype', $type)) { - $event->name = addslashes(get_string($type.'event','workshop', $workshop->name)); - $event->description = addslashes($workshop->description); - $event->eventtype = $type; - $event->timestart = $date; - update_event($event); - } else { - $event->courseid = $workshop->course; - $event->modulename = 'workshop'; - $event->instance = $workshop->id; - $event->name = addslashes(get_string($type.'event','workshop', $workshop->name)); - $event->description = addslashes($workshop->description); - $event->eventtype = $type; - $event->timestart = $date; - $event->timeduration = 0; - $event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $workshop->id); - add_event($event); - } - } + } else { + $event->courseid = $workshop->course; + $event->groupid = 0; + $event->userid = 0; + $event->modulename = 'workshop'; + $event->instance = $workshop->id; + $event->eventtype = 'deadline'; + $event->timeduration = 0; + $event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $workshop->id); + add_event($event); } + } return true; } @@ -839,93 +883,33 @@ function workshop_update_instance($workshop) { // Given an object containing all the necessary data, // (defined by the form in mod.html) this function // will update an existing instance with new data. - global $CFG; $workshop->timemodified = time(); - $workshop->submissionstart = make_timestamp($workshop->submissionstartyear, - $workshop->submissionstartmonth, $workshop->submissionstartday, $workshop->submissionstarthour, - $workshop->submissionstartminute); - - $workshop->assessmentstart = make_timestamp($workshop->assessmentstartyear, - $workshop->assessmentstartmonth, $workshop->assessmentstartday, $workshop->assessmentstarthour, - $workshop->assessmentstartminute); - - $workshop->submissionend = make_timestamp($workshop->submissionendyear, - $workshop->submissionendmonth, $workshop->submissionendday, $workshop->submissionendhour, - $workshop->submissionendminute); - - $workshop->assessmentend = make_timestamp($workshop->assessmentendyear, - $workshop->assessmentendmonth, $workshop->assessmentendday, $workshop->assessmentendhour, - $workshop->assessmentendminute); - - $workshop->releasegrades = make_timestamp($workshop->releaseyear, - $workshop->releasemonth, $workshop->releaseday, $workshop->releasehour, - $workshop->releaseminute); - - if (!workshop_check_dates($workshop)) { - return get_string('invaliddates', 'workshop'); - } - - // set the workshop's type - $wtype = 0; // 3 phases, no grading grades - if ($workshop->includeself or $workshop->ntassessments) $wtype = 1; // 3 phases with grading grades - if ($workshop->nsassessments) $wtype = 2; // 5 phases with grading grades - $workshop->wtype = $wtype; - - // encode password if necessary - if (!empty($workshop->password)) { - $workshop->password = md5($workshop->password); - } else { - unset($workshop->password); - } + $workshop->deadline = make_timestamp($workshop->deadlineyear, + $workshop->deadlinemonth, $workshop->deadlineday, $workshop->deadlinehour, + $workshop->deadlineminute); $workshop->id = $workshop->instance; if ($returnid = update_record("workshop", $workshop)) { - $dates = array( - 'submissionstart' => $workshop->submissionstart, - 'submissionend' => $workshop->submissionend, - 'assessmentstart' => $workshop->assessmentstart, - 'assessmentend' => $workshop->assessmentend - ); - $moduleid = get_field('modules', 'id', 'name', 'workshop'); - - foreach ($dates as $type => $date) { - if ($event = get_record('event', 'modulename', 'workshop', 'instance', $workshop->id, 'eventtype', $type)) { - $event->name = get_string($type.'event','workshop', $workshop->name); - $event->description = $workshop->description; - $event->eventtype = $type; - $event->timestart = $date; - update_event($event); - } else if ($date) { - $event = NULL; - $event->name = get_string($type.'event','workshop', $workshop->name); - $event->description = $workshop->description; - $event->courseid = $workshop->course; - $event->groupid = 0; - $event->userid = 0; - $event->modulename = 'workshop'; - $event->instance = $workshop->instance; - $event->eventtype = $type; - $event->timestart = $date; - $event->timeduration = 0; - $event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $workshop->id); - add_event($event); - } - } - } + $event = NULL; - if (time() > $workshop->assessmentstart) { - // regrade all the submissions... - set_field("workshop_submissions", "nassessments", 0, "workshopid", $workshop->id); - workshop_grade_assessments($workshop); + if ($event->id = get_field('event', 'id', 'modulename', 'workshop', 'instance', $workshop->id)) { + + $event->name = $workshop->name; + $event->description = $workshop->description; + $event->timestart = $workshop->deadline; + + update_event($event); + } } return $returnid; } + /////////////////////////////////////////////////////////////////////////////// function workshop_user_complete($course, $user, $mod, $workshop) { if ($submission = workshop_get_student_submission($workshop, $user)) { @@ -977,20 +961,20 @@ function workshop_get_participants($workshopid) { global $CFG; //Get students from workshop_submissions - $st_submissions = get_records_sql("SELECT DISTINCT u.id, u.id + $st_submissions = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}workshop_submissions s WHERE s.workshopid = '$workshopid' and u.id = s.userid"); //Get students from workshop_assessments - $st_assessments = get_records_sql("SELECT DISTINCT u.id, u.id + $st_assessments = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}workshop_assessments a WHERE a.workshopid = '$workshopid' and u.id = a.userid"); //Get students from workshop_comments - $st_comments = get_records_sql("SELECT DISTINCT u.id, u.id + $st_comments = get_records_sql("SELECT DISTINCT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}workshop_comments c WHERE c.workshopid = '$workshopid' and @@ -1012,200 +996,9 @@ function workshop_get_participants($workshopid) { return ($st_submissions); } -////////////////////////////////////////////////////////////////////////////////////// -function workshop_get_recent_mod_activity(&$activities, &$index, $sincetime, $courseid, - $workshop="0", $user="", $groupid="") { - // Returns all workshop posts since a given time. If workshop is specified then - // this restricts the results - - global $CFG; - - if ($workshop) { - $workshopselect = " AND cm.id = '$workshop'"; - } else { - $workshopselect = ""; - } - - if ($user) { - $userselect = " AND u.id = '$user'"; - } else { - $userselect = ""; - } - - $posts = get_records_sql("SELECT s.*, u.firstname, u.lastname, - u.picture, cm.instance, w.name, cm.section - FROM {$CFG->prefix}workshop_submissions s, - {$CFG->prefix}user u, - {$CFG->prefix}course_modules cm, - {$CFG->prefix}workshop w - WHERE s.timecreated > '$sincetime' $workshopselect - AND s.userid = u.id $userselect - AND w.course = '$courseid' $groupselect - AND cm.instance = w.id - AND cm.course = w.course - AND s.workshopid = w.id - ORDER BY s.id"); - - - if (empty($posts)) { - return; - } - - foreach ($posts as $post) { - - if (empty($groupid) || ismember($groupid, $post->userid)) { - - $tmpactivity = new Object; - - $tmpactivity->type = "workshop"; - $tmpactivity->defaultindex = $index; - $tmpactivity->instance = $post->instance; - $tmpactivity->name = $post->name; - $tmpactivity->section = $post->section; - - $tmpactivity->content->id = $post->id; - $tmpactivity->content->title = $post->title; - - $tmpactivity->user->userid = $post->userid; - $tmpactivity->user->fullname = fullname($post); - $tmpactivity->user->picture = $post->picture; - - $tmpactivity->timestamp = $post->timecreated; - $activities[] = $tmpactivity; - - $index++; - } - } - - return; -} - -////////////////////////////////////////////////////////////////////////////////////// -function workshop_print_recent_mod_activity($activity, $course, $detail=false) { - - global $CFG; - - echo '<table border="0" cellpadding="3" cellspacing="0">'; - - if (!empty($activity->content->parent)) { - $openformat = "<font size=\"2\"><i>"; - $closeformat = "</i></font>"; - } else { - $openformat = "<b>"; - $closeformat = "</b>"; - } - - echo "<tr><td class=\"workshoppostpicture\" width=\"35\" valign=\"top\">"; - print_user_picture($activity->user->userid, $course, $activity->user->picture); - echo "</td><td>$openformat"; - - if ($detail) { - echo "<img src=\"$CFG->modpixpath/$activity->type/icon.gif\" ". - "height=\"16\" width=\"16\" alt=\"".strip_tags(format_string($activity->name,true))."\" /> "; - } - echo "<a href=\"$CFG->wwwroot/mod/workshop/view.php?" - . "#" . $activity->content->id . "\">".$activity->content->title; - - echo "</a>$closeformat"; - - echo "<br /><font size=\"2\">"; - echo "<a href=\"$CFG->wwwroot/user/view.php?id=" . $activity->user->userid . "&amp;course=" . "$course\">" - . $activity->user->fullname . "</a>"; - echo " - " . userdate($activity->timestamp) . "</font></td></tr>"; - echo "</table>"; - - return; - -} - ////////////////////////////////////////////////////////////////////////////////////// // Non-standard workshop functions -/////////////////////////////////////////////////////////////////////////////////////////////// -function workshop_compare_assessments($workshop, $assessment1, $assessment2) { - global $WORKSHOP_ASSESSMENT_COMPS, $WORKSHOP_EWEIGHTS; - // first get the assignment elements for maxscores... - $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC"); - foreach ($elementsraw as $element) { - $maxscore[] = $element->maxscore; // to renumber index 0,1,2... - $weight[] = $WORKSHOP_EWEIGHTS[$element->weight]; // get real value and renumber index 0,1,2... - } - for ($i = 0; $i < 2; $i++) { - if ($i) { - $rawgrades = get_records("workshop_grades", "assessmentid", $assessment1->id, "elementno ASC"); - } else { - $rawgrades = get_records("workshop_grades", "assessmentid", $assessment2->id, "elementno ASC"); - } - foreach ($rawgrades as $grade) { - $grades[$i][] = $grade->grade; - } - } - $sumdiffs = 0; - $sumweights = 0; - switch ($workshop->gradingstrategy) { - case 1 : // accumulative grading and... - case 4 : // ...rubic grading - for ($i=0; $i < $workshop->nelements; $i++) { - $diff = ($grades[0][$i] - $grades[1][$i]) * $weight[$i] / $maxscore[$i]; - $sumdiffs += $diff * $diff; // use squared distances - $sumweights += $weight[$i]; - } - break; - case 2 : // error banded grading - // ignore maxscores here, the grades are either 0 or 1, - for ($i=0; $i < $workshop->nelements; $i++) { - $diff = ($grades[0][$i] - $grades[1][$i]) * $weight[$i]; - $sumdiffs += $diff * $diff; // use squared distances - $sumweights += $weight[$i]; - } - break; - case 3 : // criterion grading - // here we only need to look at the difference between the "zero" grade elements - $diff = ($grades[0][0] - $grades[1][0]) / (count($elementsraw) - 1); - $sumdiffs = $diff * $diff; - $sumweights = 1; - break; - } - // convert to a sensible grade (always out of 100) - $COMP = (object)$WORKSHOP_ASSESSMENT_COMPS[$workshop->assessmentcomps]; - $factor = $COMP->value; - $gradinggrade = (($factor - ($sumdiffs / $sumweights)) / $factor) * 100; - if ($gradinggrade < 0) { - $gradinggrade = 0; - } - return $gradinggrade; -} - - -////////////////////////////////////////////////////////////////////////////////////// -function workshop_count_assessments($submission) { - // Return the (real) assessments for this submission, - $timenow = time(); - return count_records_select("workshop_assessments", - "submissionid = $submission->id AND timecreated < $timenow"); -} - - -////////////////////////////////////////////////////////////////////////////////////// -function workshop_count_ungraded_assessments($workshop) { - // function returns the number of ungraded assessments by students - global $CFG; - - $timenow = time(); - $n = 0; - // get all the cold assessments that have not been graded - if ($assessments = get_records_select("workshop_assessments", "workshopid = $workshop->id AND - (timecreated + $CFG->maxeditingtime) < $timenow AND timegraded = 0")) { - foreach ($assessments as $assessment) { - if (isstudent($workshop->course, $assessment->userid)) { - $n++; - } - } - } - return $n; -} - - ////////////////////////////////////////////////////////////////////////////////////// function workshop_file_area($workshop, $submission) { return make_upload_directory( workshop_file_area_name($workshop, $submission) ); @@ -1223,7 +1016,7 @@ function workshop_file_area_name($workshop, $submission) { /////////////////////////////////////////////////////////////////////////////////////////////// function workshop_get_agree_logs($course, $timestart) { - // get the "agree" entries for this user (the assessment owner) and add the first and last names + // get the "agree" entries for this user (the assessment owner and add the first and last names // the last two probably wont be used... global $CFG, $USER; if (empty($USER->id)) { @@ -1266,28 +1059,6 @@ function workshop_get_assess_logs($course, $timestart) { } -////////////////////////////////////////////////////////////////////////////////////// -function workshop_get_assessments($submission, $all = '', $order = '') { - // Return assessments for this submission ordered oldest first, newest last - // new assessments made within the editing time are NOT returned unless they - // belong to the user or the second argument is set to ALL - global $CFG, $USER; - - $timenow = time(); - if (!$order) { - $order = "timecreated DESC"; - } - if ($all != 'ALL') { - return get_records_select("workshop_assessments", "(submissionid = $submission->id) AND - ((timecreated < $timenow - $CFG->maxeditingtime) or - ((timecreated < $timenow) AND (userid = $USER->id)))", $order); - } else { - return get_records_select("workshop_assessments", "submissionid = $submission->id AND - (timecreated < $timenow)", $order); - } -} - - /////////////////////////////////////////////////////////////////////////////////////////////// function workshop_get_comment_logs($course, $timestart) { // get the "comment" entries for this user and add the first and last names (which may not be used)... @@ -1349,37 +1120,6 @@ function workshop_get_student_submission($workshop, $user) { } -////////////////////////////////////////////////////////////////////////////////////// -function workshop_get_student_submissions($workshop, $order = "title") { -// Return all ENROLLED student submissions - global $CFG; - - if ($order == "title") { - $order = "s.title"; - } - if ($order == "name") { - $order = "a.lastname, a.firstname"; - } - if ($order == "time") { - $order = "s.timecreated ASC"; - } - // make sure it works on the site course - $select = "u.course = '$workshop->course' AND"; - $site = get_site(); - if ($workshop->course == $site->id) { - $select = ''; - } - - return get_records_sql("SELECT s.* FROM {$CFG->prefix}workshop_submissions s, - {$CFG->prefix}user_students u, {$CFG->prefix}user a - WHERE $select s.userid = u.userid - AND a.id = u.userid - AND s.workshopid = $workshop->id - AND s.timecreated > 0 - ORDER BY $order"); -} - - /////////////////////////////////////////////////////////////////////////////////////////////// function workshop_get_submit_logs($course, $timestart) { // get the "submit" entries and add the first and last names... @@ -1400,14 +1140,14 @@ function workshop_get_submit_logs($course, $timestart) { ////////////////////////////////////////////////////////////////////////////////////// function workshop_get_unmailed_assessments($cutofftime) { - /// Return list of assessments that have not been mailed out + /// Return list of (ungraded) assessments that have not been mailed out global $CFG; return get_records_sql("SELECT a.*, g.course, g.name FROM {$CFG->prefix}workshop_assessments a, {$CFG->prefix}workshop g WHERE a.mailed = 0 + AND a.timegraded = 0 AND a.timecreated < $cutofftime - AND g.id = a.workshopid - AND g.releasegrades < $cutofftime"); + AND g.id = a.workshopid"); } @@ -1449,350 +1189,44 @@ function workshop_get_unmailed_resubmissions($cutofftime) { ////////////////////////////////////////////////////////////////////////////////////// -function workshop_get_user_assessments($workshop, $user) { -// Return all the user's assessments, newest first, oldest last (hot, warm and cold ones) - return get_records_select("workshop_assessments", "workshopid = $workshop->id AND userid = $user->id", - "timecreated DESC"); +function workshop_get_student_submissions($workshop, $order = "title") { +// Return all ENROLLED student submissions + global $CFG; + + if ($order == "title") { + $order = "s.title"; + } + if ($order == "name") { + $order = "a.firstname, a.lastname"; + } + if ($order == "grade") { + $order = "$workshop->teacherweight * s.teachergrade + $workshop->peerweight * s.peergrade DESC"; + } + + // make sure it works on the site course + $select = "u.course = '$workshop->course' AND"; + $site = get_site(); + if ($workshop->course == $site->id) { + $select = ''; + } + + return get_records_sql("SELECT s.* FROM {$CFG->prefix}workshop_submissions s, + {$CFG->prefix}user_students u, {$CFG->prefix}user a + WHERE $select s.userid = u.userid + AND a.id = u.userid + AND s.workshopid = $workshop->id + AND s.timecreated > 0 + ORDER BY $order"); } ////////////////////////////////////////////////////////////////////////////////////// function workshop_get_user_submissions($workshop, $user) { // return real submissions of user newest first, oldest last. Ignores the dummy submissions - // which get created to hold the final grades for users that make no submissions + // which get created to hold the final grades for users for make no submissions) return get_records_select("workshop_submissions", "workshopid = $workshop->id AND userid = $user->id AND timecreated > 0", "timecreated DESC" ); } -////////////////////////////////////////////////////////////////////////////////////// -function workshop_grade_assessments($workshop, $verbose=false) { - global $WORKSHOP_EWEIGHTS; - - // timeout after 10 minutes - @set_time_limit(600); - - $timenow = time(); - - // set minumim value for the variance (of the elements) - $minvar = 0.05; - - // check when the standard deviations were calculated - $oldtotalassessments = get_field("workshop_elements", "totalassessments", "workshopid", $workshop->id, - "elementno", 0); - $totalassessments = count_records("workshop_assessments", "workshopid", $workshop->id); - // calculate the std. devs every 10 assessments for low numbers of assessments, thereafter every 100 new assessments - if ((($totalassessments < 100) and (($totalassessments - $oldtotalassessments) > 10)) or - (($totalassessments - $oldtotalassessments) > 100)) { - // calculate the means for each submission using just the "good" assessments - if ($submissions = get_records("workshop_submissions", "workshopid", $workshop->id)) { - foreach ($submissions as $submission) { - $nassessments[$submission->id] = 0; - if ($assessments = workshop_get_assessments($submission)) { - foreach ($assessments as $assessment) { - // test if assessment is "good", a teacher assessment always "good", but may be weighted out - if (isteacher($workshop->course, $assessment->userid)) { - if (!$workshop->teacherweight) { - // drop teacher's assessment as weight is zero - continue; - } - } elseif ((!$assessment->gradinggrade and $assessment->timegraded) or - ($workshop->agreeassessments and !$assessment->timeagreed)) { - // it's a duff assessment, or it's not been agreed - continue; - } - if (isset($num[$submission->id])) { - if (isteacher($workshop->course, $assessment->userid)) { - $num[$submission->id] += $workshop->teacherweight; // weight teacher's assessment - } else { - $num[$submission->id]++; // number of assessments - } - $nassessments[$submission->id]++; - } else { - if (isteacher($workshop->course, $assessment->userid)) { - $num[$submission->id] = $workshop->teacherweight; - } else { - $num[$submission->id] = 1; - } - $nassessments[$submission->id] = 1; - } - for ($i = 0; $i < $workshop->nelements; $i++) { - $grade = get_field("workshop_grades", "grade", - "assessmentid", $assessment->id, "elementno", $i); - if (isset($sum[$submission->id][$i])) { - if (isteacher($workshop->course, $assessment->userid)) { - $sum[$submission->id][$i] += $workshop->teacherweight * $grade; // teacher's grade - } else { - $sum[$submission->id][$i] += $grade; // student's grade - } - } else { - if (isteacher($workshop->course, $assessment->userid)) { - $sum[$submission->id][$i] = $workshop->teacherweight * $grade; // teacher's grade - } else { - $sum[$submission->id][$i] = $grade; // students's grade - } - } - } - } - } - } - - if (!isset($num)) { - // no assessments yet - return; - } - reset($num); - // calculate the means for each submission - $total = 0; - foreach ($num as $submissionid => $n) { - if ($n) { // stop division by zero - for ($i = 0; $i < $workshop->nelements; $i++) { - $mean[$submissionid][$i] = $sum[$submissionid][$i] / $n; - // echo "Submission: $submissionid; Element: $i; Mean: {$mean[$submissionid][$i]}<br />\n"; - } - $total += $n; // weighted total - } - } - if ($verbose) { - echo "<p align=\"center\">".get_string("numberofsubmissions", "workshop", count($num))."<br />\n"; - echo get_string("numberofassessmentsweighted", "workshop", $total)."</p>\n"; - } - - // now get an estimate of the standard deviation of each element in the assessment - // this is just a rough measure, all assessments are included and teacher's assesments are not weighted - $n = 0; - for ($i = 0; $i < $workshop->nelements; $i++) { - $var[$i] = 0; - } - foreach ($submissions as $submission) { - if ($assessments = workshop_get_assessments($submission)) { - foreach ($assessments as $assessment) { - $n++; - for ($i = 0; $i < $workshop->nelements; $i++) { - $grade = get_field("workshop_grades", "grade", - "assessmentid", $assessment->id, "elementno", $i); - $temp = $mean[$submission->id][$i] - $grade; - $var[$i] += $temp * $temp; - } - } - } - } - for ($i = 0; $i < $workshop->nelements; $i++) { - if ($n > 1) { - $sd[$i] = sqrt($var[$i] / ($n - 1)); - } else { - $sd[$i] = 0; - } - set_field("workshop_elements", "stddev", $sd[$i], "workshopid", $workshop->id, "elementno", $i); - set_field("workshop_elements", "totalassessments", $totalassessments, "workshopid", $workshop->id, - "elementno", $i); - if ($verbose) { - echo get_string("standarddeviationofelement", "workshop", $i+1)." $sd[$i]<br />"; - if ($sd[$i] <= $minvar) { - print_string("standarddeviationnote", "workshop")."<br />\n"; - } - } - } - } - } - - // this section looks at each submission if the number of assessments made has increased it recalculates the - // grading grades for those assessments - // first get the assignment elements for the weights and the stddevs... - $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC"); - foreach ($elementsraw as $element) { - $weight[] = $element->weight; // to renumber index 0,1,2... - $sd[] = $element->stddev; // to renumber index 0,1,2... - } - - unset($num); // may have been used in calculating stddevs - unset($sum); // ditto - if ($submissions = get_records("workshop_submissions", "workshopid", $workshop->id)) { - foreach ($submissions as $submission) { - // see if the number of assessments has changed - $nassessments = workshop_count_assessments($submission); - if ($submission->nassessments <> $nassessments) { - // ...if there are three or more assessments calculate the variance of each assessment. - // Use the variance to find the "best" assessment. (When there is only one or two assessments they - // are not altered by this routine.) - if ($verbose) echo "Processing submission $submission->id ($nassessments asessments)...\n"; - if ($nassessments > 2) { - $num = 0; // weighted number of assessments - for ($i = 0; $i < $workshop->nelements; $i++) { - $sum[$i] = 0; // weighted sum of grades - } - if ($assessments = workshop_get_assessments($submission)) { - // first calculate the mean grades for each element - foreach ($assessments as $assessment) { - // test if assessment is "good", a teacher assessment always "good", but may be weighted out - if (isteacher($workshop->course, $assessment->userid)) { - if (!$workshop->teacherweight) { - // drop teacher's assessment as weight is zero - continue; - } - } elseif ((!$assessment->gradinggrade and $assessment->timegraded) or - ($workshop->agreeassessments and !$assessment->timeagreed)) { - // it's a duff assessment, or it's not been agreed - continue; - } - if (isteacher($workshop->course, $assessment->userid)) { - $num += $workshop->teacherweight; // weight teacher's assessment - } else { - $num++; // student assessment just add one - } - for ($i = 0; $i < $workshop->nelements; $i++) { - $grade = get_field("workshop_grades", "grade", - "assessmentid", $assessment->id, "elementno", $i); - if (isteacher($workshop->course, $assessment->userid)) { - $sum[$i] += $workshop->teacherweight * $grade; // teacher's grade - } else { - $sum[$i] += $grade; // student's grade - } - } - } - if ($num) { // could all the assessments be duff? - for ($i = 0; $i < $workshop->nelements; $i++) { - $mean[$i] = $sum[$i] / $num; - if ($verbose) echo "Submission: $submission->id; Element: $i; Mean: {$mean[$i]}\n"; - } - } else { - continue; // move to the next submission - } - // run through the assessments again to see which is the "best" one (the one - // closest to the mean) - $lowest = 10e9; - foreach ($assessments as $assessment) { - if ($workshop->agreeassessments and !$assessment->timeagreed) { - // ignore assessments that have not been agreed - continue; - } - $var = 0; - for ($i = 0; $i < $workshop->nelements; $i++) { - $grade = get_field("workshop_grades", "grade", - "assessmentid", $assessment->id, "elementno", $i); - if ($sd[$i] > $minvar) { - $temp = ($mean[$i] - $grade) * - $WORKSHOP_EWEIGHTS[$weight[$i]] / $sd[$i]; - } else { - $temp = 0; - } - $var += $temp * $temp; - } - // find the "best" assessment of this submission - if ($lowest > $var) { - $lowest = $var; - $bestassessmentid = $assessment->id; - } - } - - if (!$best = get_record("workshop_assessments", "id", $bestassessmentid)) { - error("Workshop grade assessments: cannot find best assessment"); - } - if ($verbose) echo "Best assessment is $bestassessmentid;\n"; - foreach ($assessments as $assessment) { - // don't overwrite teacher's grade - if ($assessment->teachergraded) { - continue; - } - if ($assessment->id == $bestassessmentid) { - // it's the best one, set the grading grade to the maximum - set_field("workshop_assessments", "gradinggrade", 100, "id", $assessment->id); - set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id); - } else { - // it's one of the pack, compare with the best... - $gradinggrade = workshop_compare_assessments($workshop, $best, $assessment); - // ...and save the grade for the assessment - set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $assessment->id); - set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id); - } - } - } - } else { - // there are less than 3 assessments for this submission - if ($assessments = workshop_get_assessments($submission)) { - foreach ($assessments as $assessment) { - if (!$assessment->timegraded and !$assessment->teachergraded) { - // set the grading grade to the maximum and say it's been graded - set_field("workshop_assessments", "gradinggrade", 100, "id", $assessment->id); - set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id); - } - } - } - } - // set the number of assessments for this submission - set_field("workshop_submissions", "nassessments", $nassessments, "id", $submission->id); - } - } - } - return; -} - - -////////////////////////////////////////////////////////////////////////////////////// -function workshop_gradinggrade($workshop, $student) { - // returns the current (external) grading grade of the based on their (cold) assessments - // (needed as it's called by grade) - - $gradinggrade = 0; - if ($assessments = workshop_get_user_assessments($workshop, $student)) { - $n = 0; - foreach ($assessments as $assessment) { - $gradinggrade += $assessment->gradinggrade; - $n++; - } - if ($n < ($workshop->ntassessments + $workshop->nsassessments)) { // the minimum students should do - $n = $workshop->ntassessments + $workshop->nsassessments; - } - $gradinggrade = $gradinggrade / $n; - } - return number_format($gradinggrade * $workshop->gradinggrade / 100, 1); -} - - -////////////////////////////////////////////////////////////////////////////////////// -function workshop_submission_grade($workshop, $submission) { - // returns the current (external) grade of the submission based on the "good" (cold) assessments - // (needed as it's called by grade) - - $grade = 0; - if ($assessments = workshop_get_assessments($submission)) { - $n = 0; - foreach ($assessments as $assessment) { - if ($workshop->agreeassessments and !$assessment->timeagreed) { - // ignore assessments which have not been agreed - continue; - } - if ($assessment->gradinggrade or !$assessment->timegraded) { - // a good assessment (or one that has not been graded yet) - if (isteacher($workshop->course, $assessment->userid)) { - $timenow = time(); - if ($timenow > $workshop->releasegrades) { - // teacher's grade is available - $grade += $workshop->teacherweight * $assessment->grade; - $n += $workshop->teacherweight; - } - } else { - $grade += $assessment->grade; - $n++; - } - } - } - if ($n) { // stop division by zero - $grade = $grade / $n; - } - } - return number_format($grade * $workshop->grade / 100, 1); -} - - -///////////////////////////////////////////////////////////////////////////// -function workshop_fullname($userid, $courseid) { - global $CFG; - if (!$user = get_record('user', 'id', $userid)) { - return ''; - } - return '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$user->id.'&amp;course='.$courseid.'">'. - fullname($user).'</a>'; -} - ?> diff --git a/mod/workshop/locallib.php b/mod/workshop/locallib.php index d3c57da6683..d3d93ba39fa 100644 --- a/mod/workshop/locallib.php +++ b/mod/workshop/locallib.php @@ -1,45 +1,7 @@ -<?php // $Id$ +<?PHP // $Id$ /// Library of extra functions and module workshop -$WORKSHOP_TYPE = array (0 => get_string('notgraded', 'workshop'), - 1 => get_string('accumulative', 'workshop'), - 2 => get_string('errorbanded', 'workshop'), - 3 => get_string('criterion', 'workshop'), - 4 => get_string('rubric', 'workshop') ); - -$WORKSHOP_SHOWGRADES = array (0 => get_string('dontshowgrades', 'workshop'), - 1 => get_string('showgrades', 'workshop') ); - -$WORKSHOP_SCALES = array( - 0 => array( 'name' => get_string('scaleyes', 'workshop'), 'type' => 'radio', - 'size' => 2, 'start' => get_string('yes'), 'end' => get_string('no')), - 1 => array( 'name' => get_string('scalepresent', 'workshop'), 'type' => 'radio', - 'size' => 2, 'start' => get_string('present', 'workshop'), - 'end' => get_string('absent', 'workshop')), - 2 => array( 'name' => get_string('scalecorrect', 'workshop'), 'type' => 'radio', - 'size' => 2, 'start' => get_string('correct', 'workshop'), - 'end' => get_string('incorrect', 'workshop')), - 3 => array( 'name' => get_string('scalegood3', 'workshop'), 'type' => 'radio', - 'size' => 3, 'start' => get_string('good', 'workshop'), - 'end' => get_string('poor', 'workshop')), - 4 => array( 'name' => get_string('scaleexcellent4', 'workshop'), 'type' => 'radio', - 'size' => 4, 'start' => get_string('excellent', 'workshop'), - 'end' => get_string('verypoor', 'workshop')), - 5 => array( 'name' => get_string('scaleexcellent5', 'workshop'), 'type' => 'radio', - 'size' => 5, 'start' => get_string('excellent', 'workshop'), - 'end' => get_string('verypoor', 'workshop')), - 6 => array( 'name' => get_string('scaleexcellent7', 'workshop'), 'type' => 'radio', - 'size' => 7, 'start' => get_string('excellent', 'workshop'), - 'end' => get_string('verypoor', 'workshop')), - 7 => array( 'name' => get_string('scale10', 'workshop'), 'type' => 'selection', - 'size' => 10), - 8 => array( 'name' => get_string('scale20', 'workshop'), 'type' => 'selection', - 'size' => 20), - 9 => array( 'name' => get_string('scale100', 'workshop'), 'type' => 'selection', - 'size' => 100)); - - ////////////////////////////////////////////////////////////////////////////////////// /*** Functions for the workshop module ****** @@ -47,19 +9,16 @@ $WORKSHOP_SCALES = array( workshop_choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="", $nothingvalue="0", $return=false) { -workshop_compare_assessments($workshop, $assessment1, $assessment2) { ---> in lib.php workshop_count_all_submissions_for_assessment($workshop, $user) { -workshop_count_assessments($submission) { ---> in lib.php +workshop_count_assessments($submission) { workshop_count_comments($assessment) { workshop_count_peer_assessments($workshop, $user) { workshop_count_self_assessments($workshop, $user) { workshop_count_student_submissions($workshop) { workshop_count_student_submissions_for_assessment($workshop, $user) { -workshop_count_teacher_assessments($courseid, $submission) { -workshop_count_teacher_assessments_by_user($workshop, $user) { +workshop_count_teacher_assessments($workshop, $user) { workshop_count_teacher_submissions($workshop) { workshop_count_teacher_submissions_for_assessment($workshop, $user) { -workshop_count_ungraded_assessments($workshop) { --->in lib.php workshop_count_ungraded_assessments_student($workshop) { workshop_count_ungraded_assessments_teacher($workshop) { workshop_count_user_assessments($worshop, $user, $type = "all") { $type is all, student or teacher @@ -68,44 +27,39 @@ workshop_count_user_submissions($workshop, $user) { workshop_delete_submitted_files($workshop, $submission) { workshop_delete_user_files($workshop, $user, $exception) { -workshop_file_area($workshop, $submission) { ---> in lib.php -workshop_file_area_name($workshop, $submission) { ---> in lib.php +workshop_file_area($workshop, $submission) { <--- in lib.php +workshop_file_area_name($workshop, $submission) { <--- in lib.php -workshop_get_all_teacher_assessments($workshop) { -workshop_get_assessments($submission, $all = '') { ---> in lib.php +workshop_get_assessments($submission) { workshop_get_comments($assessment) { workshop_get_participants($workshopid) { workshop_get_student_assessments($workshop, $user) { -workshop_get_student_submission($workshop, $user) { ---> in lib.php +workshop_get_student_submission($workshop, $user) { <--- in lib.php workshop_get_student_submission_assessments($workshop) { -workshop_get_student_submissions($workshop) { ---> in lib.php +workshop_get_student_submissions($workshop) { <--- in lib.php workshop_get_submission_assessment($submission, $user) { -workshop_get_teacher_assessments($courseid, $submission) { workshop_get_teacher_submission_assessments($workshop) { workshop_get_teacher_submissions($workshop) { workshop_get_ungraded_assessments($workshop) { workshop_get_unmailed_assessments($cutofftime) { workshop_get_unmailed_marked_assessments($cutofftime) { -workshop_get_user_assessments($workshop, $user) { ---> in lib.php -workshop_get_user_submissions($workshop, $user) { ---> in lib.php +workshop_get_user_assessments($workshop, $user) { +workshop_get_user_submissions($workshop, $user) { <--- in lib.php workshop_get_users_done($workshop) { -workshop_grade_assessments($workshop) { ---> in lib.php - workshop_list_all_submissions($workshop) { workshop_list_all_ungraded_assessments($workshop) { workshop_list_assessed_submissions($workshop, $user) { workshop_list_peer_assessments($workshop, $user) { workshop_list_student_submissions($workshop, $user) { workshop_list_submissions_for_admin($workshop, $order) { -workshop_list_teacher_assessments_by_user($workshop, $user) { +workshop_list_teacher_assessments($workshop, $user) { workshop_list_teacher_submissions($workshop) { workshop_list_unassessed_student_submissions($workshop, $user) { workshop_list_unassessed_teacher_submissions($workshop, $user) { workshop_list_ungraded_assessments($workshop, $stype) { workshop_list_user_submissions($workshop, $user) { -workshop_calculate_phase($workshop, $style='') { workshop_print_assessment($workshop, $assessment, $allowchanges, $showcommentlinks, $returnto) workshop_print_assessments_by_user_for_admin($workshop, $user) { @@ -116,12 +70,11 @@ workshop_print_feedback($course, $submission) { workshop_print_league_table($workshop) { workshop_print_submission_assessments($workshop, $submission, $type) { workshop_print_submission_title($workshop, $user) { +workshop_print_tabbed_table($table) { workshop_print_time_to_deadline($time) { workshop_print_upload_form($workshop) { workshop_print_user_assessments($workshop, $user) { -workshop_submission_grade($submission) { ---> in lib.php - workshop_test_user_assessments($workshop, $user) { ***************************************/ @@ -142,31 +95,31 @@ function workshop_choose_from_menu ($options, $name, $selected="", $nothing="cho $javascript = ""; } - $output = "<select name=\"$name\" $javascript>\n"; + $output = "<SELECT NAME=$name $javascript>\n"; if ($nothing) { - $output .= " <option value=\"$nothingvalue\"\n"; + $output .= " <OPTION VALUE=\"$nothingvalue\"\n"; if ($nothingvalue == $selected) { - $output .= " selected=\"selected\""; + $output .= " SELECTED"; } - $output .= ">$nothing</option>\n"; + $output .= ">$nothing</OPTION>\n"; } if (!empty($options)) { foreach ($options as $value => $label) { - $output .= " <option value=\"$value\""; + $output .= " <OPTION VALUE=\"$value\""; if ($value == $selected) { - $output .= " selected=\"selected\""; + $output .= " SELECTED"; } // stop zero label being replaced by array index value // if ($label) { - // $output .= ">$label</option>\n"; + // $output .= ">$label</OPTION>\n"; // } else { - // $output .= ">$value</option>\n"; + // $output .= ">$value</OPTION>\n"; // } - $output .= ">$label</option>\n"; + $output .= ">$label</OPTION>\n"; } } - $output .= "</select>\n"; + $output .= "</SELECT>\n"; if ($return) { return $output; @@ -198,7 +151,6 @@ function workshop_copy_assessment($assessment, $submission, $withfeedback = fals if ($grades = get_records("workshop_grades", "assessmentid", $assessment->id)) { foreach ($grades as $grade) { - unset($grade->id); // clear id, insert record now seems to believe it! if (!$withfeedback) { $grade->feedback = ''; } @@ -237,6 +189,15 @@ function workshop_count_all_submissions_for_assessment($workshop, $user) { } +////////////////////////////////////////////////////////////////////////////////////// +function workshop_count_assessments($submission) { + // Return the (real) assessments for this submission, + $timenow = time(); + return count_records_select("workshop_assessments", + "submissionid = $submission->id AND timecreated < $timenow"); +} + + ////////////////////////////////////////////////////////////////////////////////////// function workshop_count_comments($assessment) { // Return the number of comments for this assessment provided they are newer than the assessment, @@ -289,7 +250,8 @@ function workshop_count_student_submissions($workshop) { // make sure it works on the site course $select = "s.course = '$workshop->course' AND"; - if ($workshop->course == SITEID) { + $site = get_site(); + if ($workshop->course == $site->id) { $select = ''; } @@ -304,62 +266,22 @@ function workshop_count_student_submissions($workshop) { ////////////////////////////////////////////////////////////////////////////////////// function workshop_count_student_submissions_for_assessment($workshop, $user) { global $CFG; - - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } - if (! $course = get_record("course", "id", $workshop->course)) { - error("Course is misconfigured"); - } $timenow = time(); - if (groupmode($course, $cm) == SEPARATEGROUPS) { - $groupid = get_current_group($course->id); - } else { - $groupid = 0; - } - $n = 0; if ($submissions = workshop_get_student_submissions($workshop)) { + $n =count($submissions); foreach ($submissions as $submission) { - // check group membership, if necessary - if ($groupid) { - // check user's group - if (!ismember($groupid, $submission->userid)) { - continue; // skip this user - } - } - // check if submission is cold - if (($submission->timecreated + $CFG->maxeditingtime) > $timenow) { - continue; // skip this submission - } - // has any teacher assessed this submission? - if (!workshop_count_teacher_assessments($course->id, $submission)) { - $n++; + $n -= count_records_select("workshop_assessments", "submissionid = $submission->id AND + userid = $user->id AND timecreated < $timenow - $CFG->maxeditingtime"); } } - } return $n; -} + } ////////////////////////////////////////////////////////////////////////////////////// -function workshop_count_teacher_assessments($courseid, $submission) { -// Return count of (cold) teacher assessments of a submission - global $CFG; - - $timenow = time(); - return count_records_sql("SELECT count(*) FROM {$CFG->prefix}workshop_assessments a, - {$CFG->prefix}user_teachers u - WHERE u.course = $courseid - AND a.userid = u.userid - AND a.submissionid = $submission->id - AND $timenow > (a.timecreated + $CFG->maxeditingtime)"); -} - - -////////////////////////////////////////////////////////////////////////////////////// -function workshop_count_teacher_assessments_by_user($workshop, $user) { +function workshop_count_teacher_assessments($workshop, $user) { // returns the number of assessments made by teachers on user's submissions $n = 0; @@ -559,16 +481,20 @@ function workshop_delete_user_files($workshop, $user, $exception) { ////////////////////////////////////////////////////////////////////////////////////// -function workshop_get_all_teacher_assessments($workshop) { -// Return all teacher assessments, ordered by timecreated, oldest first +function workshop_get_assessments($submission, $all = '') { + // Return assessments for this submission ordered oldest first, newest last + // new assessments made within the editing time are NOT return unless the + // second argument is set to ALL global $CFG; - - return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_assessments a, - {$CFG->prefix}user_teachers u - WHERE u.course = $workshop->course - AND a.userid = u.userid - AND a.workshopid = $workshop->id - ORDER BY a.timecreated"); + + if ($all != 'ALL') { + $timenow = time(); + return get_records_select("workshop_assessments", "(submissionid = $submission->id) AND + (timecreated < $timenow - $CFG->maxeditingtime)", "timecreated DESC"); + } else { + return get_records_select("workshop_assessments", "submissionid = $submission->id", + "timecreated DESC"); + } } @@ -589,7 +515,8 @@ function workshop_get_student_assessments($workshop, $user) { // make sure it works on the site course $select = "u.course = '$workshop->course' AND"; - if ($workshop->course == SITEID) { + $site = get_site(); + if ($workshop->course == $site->id) { $select = ''; } @@ -611,7 +538,8 @@ function workshop_get_student_submission_assessments($workshop) { // make sure it works on the site course $select = "u.course = '$workshop->course' AND"; - if ($workshop->course == SITEID) { + $site = get_site(); + if ($workshop->course == $site->id) { $select = ''; } @@ -634,20 +562,6 @@ function workshop_get_submission_assessment($submission, $user) { } -////////////////////////////////////////////////////////////////////////////////////// -function workshop_get_teacher_assessments($courseid, $submission) { -// Return teacher assessments of a submission, ordered by timecreated, oldest first - global $CFG; - - return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_assessments a, - {$CFG->prefix}user_teachers u - WHERE u.course = $courseid - AND a.userid = u.userid - AND a.submissionid = $submission->id - ORDER BY a.timecreated"); -} - - ////////////////////////////////////////////////////////////////////////////////////// function workshop_get_teacher_submission_assessments($workshop) { // Return all assessments on the teacher submissions, order by youngest first, oldest last @@ -681,7 +595,7 @@ function workshop_get_teacher_submissions($workshop) { function workshop_get_ungraded_assessments($workshop) { global $CFG; // Return all assessments which have not been graded or just graded - $cutofftime = time() - $CFG->maxeditingtime; + $cutofftime =time() - $CFG->maxeditingtime; return get_records_select("workshop_assessments", "workshopid = $workshop->id AND (timegraded = 0 OR timegraded > $cutofftime)", "timecreated"); } @@ -694,7 +608,8 @@ function workshop_get_ungraded_assessments_student($workshop) { // make sure it works on the site course $select = "u.course = '$workshop->course' AND"; - if ($workshop->course == SITEID) { + $site = get_site(); + if ($workshop->course == $site->id) { $select = ''; } @@ -728,14 +643,22 @@ function workshop_get_ungraded_assessments_teacher($workshop) { } +////////////////////////////////////////////////////////////////////////////////////// +function workshop_get_user_assessments($workshop, $user) { +// Return all the user's assessments, newest first, oldest last (hot, warm and cold ones) + return get_records_select("workshop_assessments", "workshopid = $workshop->id AND userid = $user->id", + "timecreated DESC"); +} + + ////////////////////////////////////////////////////////////////////////////////////// function workshop_get_user_assessments_done($workshop, $user) { -// Return all the user's assessments, oldest first, newest last (warm and cold ones only) +// Return all the user's assessments, newest first, oldest last (warm and cold ones only) // ignores maxeditingtime $timenow = time(); return get_records_select("workshop_assessments", "workshopid = $workshop->id AND userid = $user->id AND timecreated < $timenow", - "timecreated ASC"); + "timecreated DESC"); } @@ -745,7 +668,8 @@ function workshop_get_users_done($workshop) { // make sure it works on the site course $select = "s.course = '$workshop->course' AND"; - if ($workshop->course == SITEID) { + $site = get_site(); + if ($workshop->course == $site->id) { $select = ''; } @@ -763,9 +687,6 @@ function workshop_list_all_submissions($workshop, $user) { // list the teacher sublmissions first global $CFG; - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); } @@ -789,8 +710,8 @@ function workshop_list_all_submissions($workshop, $user) { AND userid = $user->id")) { $curtime = time(); if (($curtime - $assessment->timecreated) > $CFG->maxeditingtime) { - $action = "<a href=\"viewassessment.php?id=$cm->id&amp;aid=$assessment->id\">" - .get_string("view", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">" + .get_string("view", "workshop")."</A>"; // has teacher graded user's assessment? if ($assessment->timegraded) { if (($curtime - $assessment->timegraded) > $CFG->maxeditingtime) { @@ -799,13 +720,13 @@ function workshop_list_all_submissions($workshop, $user) { } } else { // there's still time left to edit... - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("edit", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("edit", "workshop")."</A>"; } } else { // user has not graded this submission - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("assess", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("assess", "workshop")."</A>"; } $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment); @@ -813,12 +734,12 @@ function workshop_list_all_submissions($workshop, $user) { print_table($table); } - echo "<center><p><b>".get_string("studentsubmissions", "workshop", $course->student). - "</b></center><br />\n"; + echo "<CENTER><P><B>".get_string("studentsubmissions", "workshop", $course->student). + "</B></CENTER><BR>\n"; unset($table); $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -836,8 +757,8 @@ function workshop_list_all_submissions($workshop, $user) { AND userid = $user->id")) { $curtime = time(); if (($curtime - $assessment->timecreated) > $CFG->maxeditingtime) { - $action = "<a href=\"viewassessment.php?id=$cm->id&amp;aid=$assessment->id\">". - get_string("view", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">". + get_string("view", "workshop")."</A>"; // has teacher graded on user's assessment? if ($assessment->timegraded) { if (($curtime - $assessment->timegraded) > $CFG->maxeditingtime) { @@ -846,18 +767,18 @@ function workshop_list_all_submissions($workshop, $user) { } $otherassessments = workshop_get_assessments($submission); if (count($otherassessments) > 1) { - $comment .= "<a href=\"assessments.php?action=viewallassessments&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("viewotherassessments", "workshop")."</a>"; + $comment .= "<A HREF=\"assessments.php?action=viewallassessments&a=$workshop->id&sid=$submission->id\">". + get_string("viewotherassessments", "workshop")."</A>"; } } else { // there's still time left to edit... - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("edit", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("edit", "workshop")."</A>"; } } else { // user has not assessed this submission - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("assess", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("assess", "workshop")."</A>"; } $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment); @@ -871,13 +792,9 @@ function workshop_list_all_submissions($workshop, $user) { function workshop_list_all_ungraded_assessments($workshop) { // lists all the assessments for comment by teacher global $CFG; - - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } $table->head = array (get_string("title", "workshop"), get_string("timeassessed", "workshop"), get_string("action", "workshop")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -887,12 +804,12 @@ function workshop_list_all_ungraded_assessments($workshop) { foreach ($assessments as $assessment) { if (!isteacher($workshop->course, $assessment->userid)) { if (($timenow - $assessment->timegraded) < $CFG->maxeditingtime) { - $action = "<a href=\"viewassessment.php?&amp;id=$cm->id&amp;aid=$assessment->id\">". - get_string("edit", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=gradeassessment&a=$workshop->id&aid=$assessment->id\">". + get_string("edit", "workshop")."</A>"; } else { - $action = "<a href=\"viewassessment.php?&amp;id=$cm->id&amp;aid=$assessment->id\">". - get_string("gradeassessment", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=gradeassessment&a=$workshop->id&aid=$assessment->id\">". + get_string("gradeassessment", "workshop")."</A>"; } $submission = get_record("workshop_submissions", "id", $assessment->submissionid); $table->data[] = array(workshop_print_submission_title($workshop, $submission), @@ -909,23 +826,20 @@ function workshop_list_all_ungraded_assessments($workshop) { ////////////////////////////////////////////////////////////////////////////////////// function workshop_list_assessed_submissions($workshop, $user) { // list the submissions that have been assessed by this user and are COLD - global $CFG, $USER; + global $CFG; - $timenow = time(); - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); } $table->head = array (get_string("title","workshop"), get_string("action","workshop"), get_string("comment","workshop")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; if ($assessments = workshop_get_student_assessments($workshop, $user)) { + $timenow = time(); foreach ($assessments as $assessment) { $comment = ""; $submission = get_record("workshop_submissions", "id", $assessment->submissionid); @@ -933,84 +847,61 @@ function workshop_list_assessed_submissions($workshop, $user) { // 1. "hot", just created but not completed (timecreated is in the future) // 2. "warm" just created and still capable of being edited, and // 3. "cold" after the editing time - if ($assessment->timecreated < ($timenow - $CFG->maxeditingtime)) { // it's cold - if ($workshop->agreeassessments) { - if (!$assessment->timeagreed) { - $action = "<a href=\"viewassessment.php?id=$cm->id&amp;aid=$assessment->id&". - "allowcomments=$workshop->agreeassessments\">". - get_string("view", "workshop")."</a>"; - $action .= " | <a href=\"assess.php?sid=$submission->id\">". - get_string("reassess", "workshop")."</a>"; - } else { - $action = "<a href=\"viewassessment.php?id=$cm->id&amp;aid=$assessment->id&". - "allowcomments=false\">".get_string("view", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id&". + "allowcomments=$workshop->agreeassessments\">". + get_string("view", "workshop")."</A>"; + if ($workshop->agreeassessments and !$assessment->timeagreed) { + $action .= " | <A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("reassess", "workshop")."</A>"; } - } else { - // if it been graded allow student to re-assess, except if it's a self assessment - if ($assessment->timegraded and !($USER->id == $assessment->userid)) { - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("reassess", "workshop")."</a>"; - } else { - $action = "<a href=\"viewassessment.php?id=$cm->id&amp;aid=$assessment->id\">". - get_string("view", "workshop")."</a>"; - } - } - if ($assessment->timecreated < $timenow) { // only show the date if it's in the past (future dates cause confusion) + if ($assessment->timecreated < $timenow) { // only show the date if it's in the past (future dates cause confusion $comment = get_string("assessedon", "workshop", userdate($assessment->timecreated)); - } + } else { $comment = ''; - } + } if ($submission->userid == $user->id) { // self assessment? $comment .= "; ".get_string("ownwork", "workshop"); // just in case they don't know! - } - // has assessment been graded? - if ($assessment->timegraded and ($timenow - $assessment->timegraded > $CFG->maxeditingtime)) { - if ($workshop->gradingstrategy) { // supress grading grade if not graded - $comment .= "; ".get_string("thegradeforthisassessmentis", "workshop", - number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0)). - " / $workshop->gradinggrade"; } - } - // if peer agreements show whether agreement has been reached + // has teacher commented on user's assessment? + if ($assessment->timegraded and ($timenow - $assessment->timegraded > $CFG->maxeditingtime)) { + $comment .= "; ".get_string("gradedbyteacher", "workshop", $course->teacher); + } + // if peer agrrements show whether agreement has been reached if ($workshop->agreeassessments) { if ($assessment->timeagreed) { $comment .= "; ".get_string("assessmentwasagreedon", "workshop", userdate($assessment->timeagreed)); - } + } else { $comment .= "; ".get_string("assessmentnotyetagreed", "workshop"); + } } - } $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment); + } } } - } if (isset($table->data)) { print_table($table); - } + } else { - echo "<center>".get_string("noassessmentsdone", "workshop")."</center>\n"; + echo "<CENTER>".get_string("noassessmentsdone", "workshop")."</CENTER>\n"; + } } -} - ////////////////////////////////////////////////////////////////////////////////////// function workshop_list_peer_assessments($workshop, $user) { global $CFG; - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); } $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1026,25 +917,17 @@ function workshop_list_peer_assessments($workshop, $user) { ($assessment->userid != $user->id)) { $timenow = time(); if (($timenow - $assessment->timecreated) > $CFG->maxeditingtime) { - $action = "<a href=\"viewassessment.php?id=$cm->id&amp;aid=$assessment->id&". + $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id&". "allowcomments=$workshop->agreeassessments\">". - get_string("view", "workshop")."</a>"; - $comment = get_string("assessedon", "workshop", userdate($assessment->timecreated)); - $grade = number_format($assessment->grade * $workshop->grade / 100, 1); - if ($workshop->gradingstrategy) { // supress grade if not graded - $comment .= "; ".get_string("gradeforsubmission", "workshop"). - ": $grade / $workshop->grade"; - } - if ($assessment->timegraded) { - if (!$assessment->gradinggrade) { - // it's a bad assessment - $comment .= "; ".get_string("thisisadroppedassessment", "workshop"); + get_string("view", "workshop")."</A>"; + $comment = get_string("assessedon", "workshop", + userdate($assessment->timecreated)); + // has teacher commented on user's assessment? + if ($assessment->timegraded and + ($timenow - $assessment->timegraded > $CFG->maxeditingtime)) { + $comment .= "; ".get_string("gradedbyteacher", "workshop", $course->teacher); } - } - if (isteacher($workshop->course, $assessment->userid) and $workshop->teacherweight) { - $comment .= "; ".get_string("thisisadroppedassessment", "workshop"); - } - // if peer agreements show whether agreement has been reached + // if peer agrrements show whether agreement has been reached if ($workshop->agreeassessments) { if ($assessment->timeagreed) { $comment .= "; ".get_string("assessmentwasagreedon", "workshop", @@ -1066,7 +949,7 @@ function workshop_list_peer_assessments($workshop, $user) { print_table($table); } else { - echo "<center>".get_string("noassessmentsdone", "workshop")."</center>\n"; + echo "<CENTER>".get_string("noassessmentsdone", "workshop")."</CENTER>\n"; } } @@ -1077,16 +960,12 @@ function workshop_list_self_assessments($workshop, $user) { // list user's submissions for the user to assess global $CFG; - $timenow = time(); - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); } $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1094,29 +973,24 @@ function workshop_list_self_assessments($workshop, $user) { // get the user's submissions if ($submissions = workshop_get_user_submissions($workshop, $user)) { foreach ($submissions as $submission) { - $comment = get_string("ownwork", "workshop"); // just in case they don't know! + $comment = ""; if (!$assessment = get_record_select("workshop_assessments", "submissionid = $submission->id AND userid = $user->id")) { - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("assess", "workshop")."</a>"; + if ($submission->userid == $user->id) { // this will always be true + $comment = get_string("ownwork", "workshop"); // just in case they don't know! + } + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("assess", "workshop")."</A>"; $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment); - } else { - // may still be warm - if (($assessment->timecreated + $CFG->maxeditingtime) > $timenow) { - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("reassess", "workshop")."</a>"; - $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment); } } - + } + if (isset($table->data)) { + echo "<P><CENTER><B>".get_string("pleaseassessyoursubmissions", "workshop", $course->student). + "</B></CENTER><BR>\n"; + print_table($table); } } - if (isset($table->data)) { - echo "<p><center><b>".get_string("pleaseassessyoursubmissions", "workshop", $course->student). - "</b></center><br />\n"; - print_table($table); - } -} ////////////////////////////////////////////////////////////////////////////////////// @@ -1125,24 +999,16 @@ function workshop_list_student_submissions($workshop, $user) { // of assessments are show first global $CFG; - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } + $timenow = time(); if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); } - - $timenow = time(); - - // set student's group if workshop is in SEPARATEGROUPS mode - if (groupmode($course, $cm) == SEPARATEGROUPS) { - $groupid = get_current_group($course->id); - } else { - $groupid = 0; + if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id)) { + error("Course Module ID was incorrect"); } $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1156,13 +1022,6 @@ function workshop_list_student_submissions($workshop, $user) { if ($submissions = workshop_get_student_submissions($workshop)) { // srand ((float)microtime()*1000000); // now done automatically in PHP 4.2.0-> foreach ($submissions as $submission) { - // check group membership, if necessary - if ($groupid) { - // check user's group - if (!ismember($groupid, $submission->userid)) { - continue; // skip this submission - } - } // process only cold submissions if (($submission->timecreated + $CFG->maxeditingtime) > $timenow) { continue; @@ -1172,7 +1031,7 @@ function workshop_list_student_submissions($workshop, $user) { $nassessments[$submission->id] = $n + rand(0, 98) / 100; } - if (isset($nassessments)) { // make sure we end up with something to play with + if (isset($nassessments)) { // make sure we end up with something to play with :-) // put the submissions with the lowest number of assessments first asort($nassessments); reset($nassessments); @@ -1225,13 +1084,13 @@ function workshop_list_student_submissions($workshop, $user) { // just assessed but still editable [warm]; and "static" (may or may not have been graded by teacher, that // is shown in the comment) [cold] if ($assessment->timecreated > $timenow) { // user needs to assess this submission - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("assess", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">". + get_string("assess", "workshop")."</A>"; $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment); } elseif ($assessment->timecreated > ($timenow - $CFG->maxeditingtime)) { // there's still time left to edit... - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("edit", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&id=$cm->id&sid=$submission->id\">". + get_string("edit", "workshop")."</A>"; $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment); } } @@ -1239,12 +1098,12 @@ function workshop_list_student_submissions($workshop, $user) { } if (isset($table->data)) { - echo "<p><center><b>".get_string("pleaseassessthesestudentsubmissions", "workshop", $course->student). - "</b></center><br />\n"; + echo "<P><CENTER><B>".get_string("pleaseassessthesestudentsubmissions", "workshop", $course->student). + "</B></CENTER><BR>\n"; print_table($table); } else { - echo "<p><center><b>".get_string("nosubmissionsavailableforassessment", "workshop")."</b></center><br />\n"; + echo "<P><CENTER><B>".get_string("nosubmissionsavailableforassessment", "workshop")."</B></CENTER><BR>\n"; } } @@ -1254,164 +1113,153 @@ function workshop_list_submissions_for_admin($workshop, $order) { // list the teacher sublmissions first global $CFG, $USER; - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); } if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id)) { error("Course Module ID was incorrect"); } - if (groupmode($course, $cm) == SEPARATEGROUPS) { - $groupid = get_current_group($course->id); - } else { - $groupid = 0; - } - + workshop_print_assignment_info($workshop); - if (isteacheredit($course->id)) { - // list any teacher submissions - $table->head = array (get_string("title", "workshop"), get_string("submittedby", "workshop"), - get_string("action", "workshop")); - $table->align = array ("left", "left", "left"); - $table->size = array ("*", "*", "*"); - $table->cellpadding = 2; - $table->cellspacing = 0; + // if peer assessments allow teacher to change overallocation option + if ($workshop->nsassessments) { + print_simple_box_start("center"); + print_heading_with_help(get_string("setoverallocation", "workshop"), "overallocation", "workshop"); + echo "<form name=\"overform\" method=\"post\" action=\"submissions.php\">\n"; + echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\">\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"updateoverallocation\">\n"; + echo "<center><table width=\"90%\" border=\"1\"><tr valign=\"top\">\n"; + echo "<td align=\"right\"><p><b>".get_string("overallocation", "workshop").": </b></p></td>\n"; + echo "<td valign=\"middle\">\n"; + for ($i=2; $i>=0; $i--) { + $numbers[$i] = $i; + } + choose_from_menu($numbers, "overallocation", "$workshop->overallocation", ""); + echo "</td></tr></table><br />\n"; + echo "<INPUT TYPE=submit VALUE=\"".get_string("saveoverallocation", "workshop")."\">\n"; + echo "</form></center>\n"; + print_simple_box_end(); + } - if ($submissions = workshop_get_teacher_submissions($workshop)) { - foreach ($submissions as $submission) { - $action = "<a href=\"submissions.php?action=adminamendtitle&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("amendtitle", "workshop")."</a>"; - // has user already assessed this submission - if ($assessment = get_record_select("workshop_assessments", "submissionid = $submission->id - AND userid = $USER->id")) { - $curtime = time(); + echo "<br />"; + print_simple_box_start("center"); + print_heading_with_help(get_string("leaguetable", "workshop"), "leaguetable", "workshop"); + echo "<form name=\"leagueform\" method=\"post\" action=\"submissions.php\">\n"; + echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$cm->id\">\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"updateleaguetable\">\n"; + echo "<center><TABLE WIDTH=\"90%\" BORDER=\"1\">\n"; + echo "<tr><td align=\"right\"><p><b>".get_string("numberofentries", "workshop").": </b><p></td>\n"; + echo "<TD>"; + unset($numbers); + $numbers[22] = 'All'; + $numbers[21] = 50; + for ($i=20; $i>=0; $i--) { + $numbers[$i] = $i; + } + $nentries = $workshop->showleaguetable; + if ($nentries == 99) { + $nentries = 'All'; + } + choose_from_menu($numbers, "nentries", "$nentries", ""); + echo "</td></tr>\n"; + echo "<tr><td align=right><p>".get_string("hidenamesfromstudents", "workshop", $course->students)."</p></td><td>\n"; + $options[0] = get_string("no"); $options[1] = get_string("yes"); + choose_from_menu($options, "anonymous", $workshop->anonymous, ""); + echo "</td></tr>\n"; + echo "</table><br />\n"; + echo "<INPUT TYPE=submit VALUE=\"".get_string("saveleaguetableoptions", "workshop")."\">\n"; + echo "</center></form>\n"; + print_simple_box_end(); + + // list any teacher submissions + $table->head = array (get_string("title", "workshop"), get_string("submittedby", "workshop"), get_string("action", "workshop")); + $table->align = array ("left", "left", "left"); + $table->size = array ("*", "*", "*"); + $table->cellpadding = 2; + $table->cellspacing = 0; + + if ($submissions = workshop_get_teacher_submissions($workshop)) { + foreach ($submissions as $submission) { + $action = "<a href=\"submissions.php?action=adminamendtitle&a=$workshop->id&sid=$submission->id\">". + get_string("amendtitle", "workshop")."</a>"; + // has user already assessed this submission + if ($assessment = get_record_select("workshop_assessments", "submissionid = $submission->id + AND userid = $USER->id")) { + $curtime = time(); if ($assessment->timecreated > $curtime) { // it's a "hanging" assessment - $action .= " | <a href=\"assess.php?sid=$submission->id\">". + $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". get_string("assess", "workshop")."</a>"; } elseif (($curtime - $assessment->timecreated) > $CFG->maxeditingtime) { - $action .= " | <a href=\"assess.php?sid=$submission->id\">" + $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">" .get_string("reassess", "workshop")."</a>"; } else { // there's still time left to edit... - $action .= " | <a href=\"assess.php?sid=$submission->id\">". + $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". get_string("edit", "workshop")."</a>"; } } - else { // user has not graded this submission - $action .= " | <a href=\"assess.php?sid=$submission->id\">". - get_string("assess", "workshop")."</a>"; - } - if ($assessments = workshop_get_assessments($submission)) { - $action .= " | <a href=\"assessments.php?action=adminlist&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("listassessments", "workshop")."</a>"; - } - if (isteacheredit($course->id)) { - $action .= " | <a href=\"submissions.php?action=confirmdelete&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("delete", "workshop")."</a>"; - } - $table->data[] = array("<a href=\"submissions.php?action=editsubmission&amp;id=$cm->id&amp;sid=$submission->id\">$submission->title</a>", $course->teacher, $action); + else { // user has not graded this submission + $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("assess", "workshop")."</a>"; } - print_heading(get_string("studentsubmissions", "workshop", $course->teacher), "center"); - print_table($table); + if ($assessments = workshop_get_assessments($submission)) { + $action .= " | <a href=\"assessments.php?action=adminlist&a=$workshop->id&sid=$submission->id\">". + get_string("listassessments", "workshop")."</a>"; + } + $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&a=$workshop->id&sid=$submission->id\">". + get_string("delete", "workshop")."</a>"; + $table->data[] = array(workshop_print_submission_title($workshop, $submission), $course->teacher, $action); } + print_heading(get_string("studentsubmissions", "workshop", $course->teacher), "center"); + print_table($table); } // list student assessments // Get all the students... - if ($users = get_course_students($course->id, "u.lastname, u.firstname")) { + if ($users = get_course_students($course->id, "u.firstname, u.lastname")) { $timenow = time(); + print_heading(get_string("studentassessments", "workshop", $course->student)); unset($table); $table->head = array(get_string("name"), get_string("title", "workshop"), get_string("action", "workshop")); $table->align = array ("left", "left", "left"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; - $nassessments = 0; foreach ($users as $user) { - // check group membership, if necessary - if ($groupid) { - // check user's group - if (!ismember($groupid, $user->id)) { - continue; // skip this user - } - } // list the assessments which have been done (exclude the hot ones) if ($assessments = workshop_get_user_assessments_done($workshop, $user)) { $title =''; foreach ($assessments as $assessment) { if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { - error("Workshop_list_submissions_for_admin: Submission $assessment->submissionid not found!"); + error("Workshop_list_submissions_for_admin: Submission record not found!"); } $title .= $submission->title; - if ($workshop->agreeassessments and !$assessment->timeagreed and - isstudent($workshop->course, $submission->userid)) { // agreements for student work only - $title .= " &lt;&lt;".number_format($assessment->grade * $workshop->grade / 100, 0)." (". - number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0).")&gt;&gt; "; - } elseif ($assessment->timegraded) { - if ($assessment->gradinggrade) { - // a good assessment - $title .= " {".number_format($assessment->grade * $workshop->grade / 100, 0)." (". - number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0).")} "; - } else { - // a poor assessment - $title .= " &lt;".number_format($assessment->grade * $workshop->grade / 100, 0)." (". - number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0).")&gt; "; - } - } else { - // not yet graded - $title .= " {".number_format($assessment->grade * $workshop->grade / 100, 0)." ((". - number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0)."))} "; + // test for allocated assesments which have not been done + if ($assessment->timecreated < $timenow) { + $title .= " {".number_format($assessment->grade, 0); } + else { // assessment record created but user has not yet assessed this submission + $title .= " {-"; + } + if ($assessment->timegraded) { + $title .= "/".number_format($assessment->gradinggrade * 100 / COMMENTSCALE, 0)."%"; + } + $title .= "} "; if ($realassessments = workshop_count_user_assessments_done($workshop, $user)) { - $action = "<a href=\"assessments.php?action=adminlistbystudent&amp;id=$cm->id&amp;userid=$user->id\">". + $action = "<a href=\"assessments.php?action=adminlistbystudent&a=$workshop->id&userid=$user->id\">". get_string("liststudentsassessments", "workshop")." ($realassessments)</a>"; - } else { + } + else { $action =""; } } - $nassessments++; $table->data[] = array(fullname($user), $title, $action); } } if (isset($table->data)) { - print_heading(get_string("studentassessments", "workshop", $course->student)." [$nassessments]"); print_table($table); - workshop_print_key($workshop); - // grading grade analysis - unset($table); - $table->head = array (get_string("count", "workshop"), get_string("mean", "workshop"), - get_string("standarddeviation", "workshop"), get_string("maximum", "workshop"), - get_string("minimum", "workshop")); - $table->align = array ("center", "center", "center", "center", "center"); - $table->size = array ("*", "*", "*", "*", "*"); - $table->cellpadding = 2; - $table->cellspacing = 0; - if ($groupid) { - $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean, - STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max - FROM {$CFG->prefix}groups_members g, {$CFG->prefix}workshop_assessments a - WHERE g.groupid = $groupid AND a.userid = g.userid AND a.timegraded > 0 - AND a.workshopid = $workshop->id"); - } else { // no group/all participants - $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean, - STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max - FROM {$CFG->prefix}workshop_assessments a - WHERE a.timegraded > 0 AND a.workshopid = $workshop->id"); - } - $table->data[] = array($stats->count, number_format($stats->mean * $workshop->gradinggrade / 100, 1), - number_format($stats->stddev * $workshop->gradinggrade /100, 1), - number_format($stats->max * $workshop->gradinggrade / 100, 1), - number_format($stats->min* $workshop->gradinggrade / 100, 1)); - print_heading(get_string("gradinggrade", "workshop")." ".get_string("analysis", "workshop")); - print_table($table); - echo "<p align=\"center\"><a href=\"assessments.php?id=$cm->id&amp;action=regradestudentassessments\">". - get_string("regradestudentassessments", "workshop")."</a> "; - helpbutton("regrading", get_string("regradestudentassessments", "workshop"), "workshop"); - echo "</p>\n"; } } @@ -1419,96 +1267,69 @@ function workshop_list_submissions_for_admin($workshop, $order) { unset($table); switch ($order) { case "title" : - $table->head = array("<a href=\"submissions.php?action=adminlist&amp;id=$cm->id&amp;order=name\">". - get_string("submittedby", "workshop")."</a>", get_string("title", "workshop"), - get_string("submitted", "workshop"), get_string("action", "workshop")); + $table->head = array("<a href=\"submissions.php?action=adminlist&a=$workshop->id&order=name\">". + get_string("submittedby", "workshop")."</a>", get_string("title", "workshop"), get_string("action", "workshop")); break; case "name" : $table->head = array (get_string("submittedby", "workshop"), - "<a href=\"submissions.php?action=adminlist&amp;id=$cm->id&amp;order=title\">". - get_string("title", "workshop")."</a>", get_string("submitted", "workshop"), - get_string("action", "workshop")); + "<a href=\"submissions.php?action=adminlist&a=$workshop->id&order=title\">". + get_string("title", "workshop")."</a>", get_string("action", "workshop")); break; } - $table->align = array ("left", "left", "left", "left"); - $table->size = array ("*", "*", "*", "*"); + $table->align = array ("left", "left", "left"); + $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; - - $nsubmissions = 0; + if ($submissions = workshop_get_student_submissions($workshop, $order)) { foreach ($submissions as $submission) { if (!$user = get_record("user", "id", $submission->userid)) { error("workshop_list_submissions_for_admin: failure to get user record"); } - // check group membership, if necessary - if ($groupid) { - // check user's group - if (!ismember($groupid, $user->id)) { - continue; // skip this user - } - } - $datesubmitted = userdate($submission->timecreated); - if ($submission->late) { - $datesubmitted = "<font color=\"red\">".$datesubmitted."</font>"; - } - $action = "<a href=\"submissions.php?action=adminamendtitle&amp;id=$cm->id&amp;sid=$submission->id\">". + $action = "<a href=\"submissions.php?action=adminamendtitle&a=$workshop->id&sid=$submission->id\">". get_string("amendtitle", "workshop")."</a>"; // has teacher already assessed this submission if ($assessment = get_record_select("workshop_assessments", "submissionid = $submission->id AND userid = $USER->id")) { $curtime = time(); if (($curtime - $assessment->timecreated) > $CFG->maxeditingtime) { - $action .= " | <a href=\"assess.php?sid=$submission->id\">". + $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". get_string("reassess", "workshop")."</a>"; } else { // there's still time left to edit... - $action .= " | <a href=\"assess.php?sid=$submission->id\">". + $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". get_string("edit", "workshop")."</a>"; } } else { // user has not assessed this submission - $action .= " | <a href=\"assess.php?sid=$submission->id\">". + $action .= " | <a href=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". get_string("assess", "workshop")."</a>"; } if ($nassessments = workshop_count_assessments($submission)) { - $action .= " | <a href=\"assessments.php?action=adminlist&amp;id=$cm->id&amp;sid=$submission->id\">". + $action .= " | <a href=\"assessments.php?action=adminlist&a=$workshop->id&sid=$submission->id\">". get_string("listassessments", "workshop")." ($nassessments)</a>"; } - if ($submission->late) { - $action .= " | <a href=\"submissions.php?action=adminlateflag&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("clearlateflag", "workshop")."</a>"; - } - $action .= " | <a href=\"submissions.php?action=confirmdelete&amp;id=$cm->id&amp;sid=$submission->id\">". + $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&a=$workshop->id&sid=$submission->id\">". get_string("delete", "workshop")."</a>"; - $nsubmissions++; - $table->data[] = array("$user->firstname $user->lastname", $submission->title. - " (".get_string("grade").": ".workshop_submission_grade($workshop, $submission)." ". - workshop_print_submission_assessments($workshop, $submission, "teacher"). - " ".workshop_print_submission_assessments($workshop, $submission, "student").")", $datesubmitted, - $action); + $table->data[] = array(fullname($user), $submission->title. + " ".workshop_print_submission_assessments($workshop, $submission, "teacher"). + " ".workshop_print_submission_assessments($workshop, $submission, "student"), $action); } - print_heading(get_string("studentsubmissions", "workshop", $course->student)." [$nsubmissions]", "center"); + print_heading(get_string("studentsubmissions", "workshop", $course->student), "center"); print_table($table); - workshop_print_key($workshop); } } ////////////////////////////////////////////////////////////////////////////////////// -function workshop_list_teacher_assessments_by_user($workshop, $user) { +function workshop_list_teacher_assessments($workshop, $user) { global $CFG; - $timenow = time(); - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); - } - + } $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1520,8 +1341,8 @@ function workshop_list_teacher_assessments_by_user($workshop, $user) { if ($assessments = workshop_get_assessments($submission)) { foreach ($assessments as $assessment) { if (isteacher($workshop->course, $assessment->userid)) { // assessments by teachers only - $action = "<a href=\"viewassessment.php?id=$cm->id&amp;aid=$assessment->id\">". - get_string("view", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">". + get_string("view", "workshop")."</A>"; // has teacher commented on teacher's assessment? shouldn't happen but leave test in if ($assessment->timegraded and ($timenow - $assessment->timegraded > $CFG->maxeditingtime)) { $comment = get_string("gradedbyteacher", "workshop", $course->teacher); @@ -1539,7 +1360,7 @@ function workshop_list_teacher_assessments_by_user($workshop, $user) { print_table($table); } else { - echo "<center>".get_string("noassessmentsdone", "workshop")."</center>\n"; + echo "<CENTER>".get_string("noassessmentsdone", "workshop")."</CENTER>\n"; } } @@ -1548,18 +1369,12 @@ function workshop_list_teacher_assessments_by_user($workshop, $user) { ////////////////////////////////////////////////////////////////////////////////////// function workshop_list_teacher_submissions($workshop, $user) { global $CFG; - - // set threshold on re-assessments - $reassessthreshold = 80; - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); - } + } $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop")); - $table->align = array ("left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1576,7 +1391,7 @@ function workshop_list_teacher_submissions($workshop, $user) { $n = count_records("workshop_assessments", "submissionid", $submission->id); // ...OK to have zero, we add a small random number to randomise things... $nassessments[$submission->id] = $n + rand(0, 99) / 100; - } + } // ...put the submissions with the lowest number of assessments first... asort($nassessments); reset($nassessments); @@ -1595,57 +1410,50 @@ function workshop_list_teacher_submissions($workshop, $user) { $assessment->timecreated = $yearfromnow; if (!$assessment->id = insert_record("workshop_assessments", $assessment)) { error("Could not insert workshop assessment!"); - } + } $nassessed++; if ($nassessed >= $workshop->ntassessments) { break; + } } } } } - } // now list user's assessments (but only list those which come from teacher submissions) if ($assessments = workshop_get_user_assessments($workshop, $user)) { $timenow = time(); foreach ($assessments as $assessment) { if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { error ("workshop_list_teacher_submissions: unable to get submission"); - } + } // submission from a teacher? if (isteacher($workshop->course, $submission->userid)) { $comment = ''; - // user assessment has two states: record created but not assessed (date created in the future); - // assessed but always available for re-assessment - if ($assessment->timecreated > $timenow) { // user needs to assess this submission - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("assess", "workshop")."</a>"; - } - elseif ($assessment->timegraded and ($assessment->gradinggrade < $reassessthreshold)) { - // allow student to improve on their assessment once it's been graded and is below threshold - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("reassess", "workshop")."</a>"; - } else { - // allow student just to see their assessment if it hasn't been graded (or above threshold) - $action = "<a href=\"viewassessment.php?id=$cm->id&amp;aid=$assessment->id\">". - get_string("view", "workshop")."</a>"; - } - // see if the assessment is graded - if ($assessment->timegraded) { - // show grading grade (supressed if workshop not graded) - if ($workshop->gradingstrategy) { - $comment = get_string("thegradeforthisassessmentis", "workshop", - number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 1))." / ". - $workshop->gradinggrade; + // user assessment has three states: record created but not assessed (date created in the future); + // just assessed but still editable; and "static" (may or may not have been graded by teacher, that + // is shown in the comment) + if ($assessment->timecreated> $timenow) { // user needs to assess this submission + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("assess", "workshop")."</A>"; + } + elseif (($timenow - $assessment->timecreated) < $CFG->maxeditingtime) { // there's still time left to edit... + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("edit", "workshop")."</A>"; + } + else { + $action = "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">" + .get_string("view", "workshop")."</A>"; + } + // see if teacher has graded assessment + if ($assessment->timegraded and (($timenow - $assessment->timegraded) > $CFG->maxeditingtime)) { + $comment .= get_string("thereisfeedbackfromtheteacher", "workshop", $course->teacher); } - } elseif ($assessment->timecreated < $timenow) { - $comment = get_string("awaitinggradingbyteacher", "workshop", $course->teacher); - } $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment); + } } } - } print_table($table); -} + } ////////////////////////////////////////////////////////////////////////////////////// @@ -1653,63 +1461,35 @@ function workshop_list_unassessed_student_submissions($workshop, $user) { // list the student submissions not assessed by this user global $CFG; - $timenow = time(); - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } - if (! $course = get_record("course", "id", $workshop->course)) { - error("Course is misconfigured"); - } - - if (groupmode($course, $cm) == SEPARATEGROUPS) { - $groupid = get_current_group($course->id); - } else { - $groupid = 0; - } - $table->head = array (get_string("title", "workshop"), get_string("submittedby", "workshop"), - get_string("submitted", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop")); - $table->align = array ("left", "left", "left", "left", "left"); - $table->size = array ("*", "*", "*", "*", "*"); + get_string("action", "workshop"), get_string("comment", "workshop")); + $table->align = array ("LEFT", "LEFT", "LEFT", "LEFT"); + $table->size = array ("*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; - if ($submissions = workshop_get_student_submissions($workshop, 'time')) { // oldest first + if ($submissions = workshop_get_student_submissions($workshop)) { foreach ($submissions as $submission) { - // check group membership, if necessary - if ($groupid) { - // check user's group - if (!ismember($groupid, $submission->userid)) { - continue; // skip this user - } - } - // see if submission is cold - if (($submission->timecreated +$CFG->maxeditingtime) > $timenow) { - continue; // skip this submission - } $comment = ""; - $timegap = get_string("ago", "workshop", format_time($submission->timecreated - $timenow)); // see if user already graded this assessment if ($assessment = get_record_select("workshop_assessments", "submissionid = $submission->id AND userid = $user->id")) { + $timenow = time(); if (($timenow - $assessment->timecreated < $CFG->maxeditingtime)) { // last chance salon $submissionowner = get_record("user", "id", $submission->userid); - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("edit", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("edit", "workshop")."</A>"; $table->data[] = array(workshop_print_submission_title($workshop, $submission), - fullname($submissionowner), $timegap, $action, $comment); + fullname($submissionowner), $action, $comment); } } - else { - // no assessment by this user, if no other teacher has assessed submission then list it - if (!workshop_count_teacher_assessments($course->id, $submission)) { - $submissionowner = get_record("user", "id", $submission->userid); - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("assess", "workshop")."</a>"; - $table->data[] = array(workshop_print_submission_title($workshop, $submission), - fullname($submissionowner), $timegap, $action, $comment); - } + else { // no assessment + $submissionowner = get_record("user", "id", $submission->userid); + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("assess", "workshop")."</A>"; + $table->data[] = array(workshop_print_submission_title($workshop, $submission), + fullname($submissionowner), $action, $comment); } } if (isset($table->data)) { @@ -1724,13 +1504,8 @@ function workshop_list_unassessed_teacher_submissions($workshop, $user) { // list the teacher submissions not assessed by this user global $CFG; - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } - - $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), - get_string("comment", "workshop")); - $table->align = array ("left", "left", "left"); + $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("comment", "workshop")); + $table->align = array ("LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1744,14 +1519,14 @@ function workshop_list_unassessed_teacher_submissions($workshop, $user) { $timenow = time(); if (($timenow - $assessment->timecreated < $CFG->maxeditingtime)) { // last chance salon - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("edit", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("edit", "workshop")."</A>"; $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment); } } else { // no assessment - $action = "<a href=\"assess.php?sid=$submission->id\">". - get_string("assess", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=assesssubmission&a=$workshop->id&sid=$submission->id\">". + get_string("assess", "workshop")."</A>"; $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment); } } @@ -1764,16 +1539,12 @@ function workshop_list_unassessed_teacher_submissions($workshop, $user) { ////////////////////////////////////////////////////////////////////////////////////// function workshop_list_ungraded_assessments($workshop, $stype) { - // lists all the assessments of student submissions for grading by teacher global $CFG; - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } - + // lists all the assessments of student submissions for grading by teacher $table->head = array (get_string("title", "workshop"), get_string("submittedby", "workshop"), get_string("assessor", "workshop"), get_string("timeassessed", "workshop"), get_string("action", "workshop")); - $table->align = array ("left", "left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1791,12 +1562,12 @@ function workshop_list_ungraded_assessments($workshop, $stype) { foreach ($assessments as $assessment) { if (!isteacher($workshop->course, $assessment->userid)) { // don't let teacher grade their own assessments if (($timenow - $assessment->timegraded) < $CFG->maxeditingtime) { - $action = "<a href=\"viewassessment.php?&amp;id=$cm->id&amp;stype=$stype&amp;aid=$assessment->id\">". - get_string("edit", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=gradeassessment&a=$workshop->id&stype=$stype&aid=$assessment->id\">". + get_string("edit", "workshop")."</A>"; } else { - $action = "<a href=\"viewassessment.php?&amp;id=$cm->id&amp;stype=$stype&amp;aid=$assessment->id\">". - get_string("grade", "workshop")."</a>"; + $action = "<A HREF=\"assessments.php?action=gradeassessment&a=$workshop->id&stype=$stype&aid=$assessment->id\">". + get_string("grade", "workshop")."</A>"; } $submission = get_record("workshop_submissions", "id", $assessment->submissionid); $submissionowner = get_record("user", "id", $submission->userid); @@ -1816,77 +1587,40 @@ function workshop_list_ungraded_assessments($workshop, $stype) { function workshop_list_user_submissions($workshop, $user) { global $CFG; - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } - $timenow = time(); $table->head = array (get_string("title", "workshop"), get_string("action", "workshop"), get_string("submitted", "assignment"), get_string("assessments", "workshop")); - $table->align = array ("left", "left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT", "LEFT"); $table->size = array ("*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; if ($submissions = workshop_get_user_submissions($workshop, $user)) { foreach ($submissions as $submission) { - // allow user to edit or delete a submission if it's warm OR if assessment period has not started - if (($submission->timecreated > ($timenow - $CFG->maxeditingtime)) or ($workshop->assessmentstart > time())) { - $action = "<a href=\"submissions.php?action=editsubmission&amp;id=$cm->id&amp;sid=$submission->id\">". - get_string("edit", "workshop")."</a> | ". - "<a href=\"submissions.php?action=confirmdelete&amp;id=$cm->id&amp;sid=$submission->id\">". + // allow user to delete a submission if it's warm + if ($submission->timecreated > ($timenow - $CFG->maxeditingtime)) { + $action = "<a href=\"submissions.php?action=userconfirmdelete&a=$workshop->id&sid=$submission->id\">". get_string("delete", "workshop")."</a>"; } else { $action = ''; } - $datesubmitted = userdate($submission->timecreated); - if ($submission->late) { - $datesubmitted = "<font color=\"red\">".$datesubmitted."</font>"; - } $n = count_records_select("workshop_assessments", "submissionid = $submission->id AND timecreated < ($timenow - $CFG->maxeditingtime)"); $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, - $datesubmitted, $n); + userdate($submission->timecreated), $n); } print_table($table); } } - -/////////////////////////////////////////////////////////////////////////////// -function workshop_phase($workshop, $style='') { - $time = time(); - if ($time < $workshop->submissionstart) { - return get_string('phase1'.$style, 'workshop'); - } - else if ($time < $workshop->submissionend) { - if ($time < $workshop->assessmentstart) { - return get_string('phase2'.$style, 'workshop'); - } else { - return get_string('phase3'.$style, 'workshop'); - } - } - else if ($time < $workshop->assessmentstart) { - return get_string('phase0'.$style, 'workshop'); - } - else if ($time < $workshop->assessmentend) { - return get_string('phase4'.$style, 'workshop'); - } - else { - return get_string('phase5'.$style, 'workshop'); - } - error('Something is wrong with the workshop dates'); -} - - ////////////////////////////////////////////////////////////////////////////////////// function workshop_print_assessment($workshop, $assessment = false, $allowchanges = false, $showcommentlinks = false, $returnto = '') { - // $allowchanges added 14/7/03. The form is inactive unless allowchanges = true - // $returnto added 28/8/03. The page to go to after the assessment has been submitted - global $CFG, $USER, $WORKSHOP_SCALES, $WORKSHOP_EWEIGHTS; + // $allowchanges added 14/7/03 + // $returnto added 28/8/03 + global $CFG, $THEME, $USER, $WORKSHOP_SCALES, $WORKSHOP_EWEIGHTS; if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); @@ -1894,34 +1628,31 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id)) { error("Course Module ID was incorrect"); } - if ($assessment) { - if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { - error ("Workshop_print_assessment: Submission record not found"); - } - - print_heading(get_string('assessmentof', 'workshop', - "<a href=\"submissions.php?id=$cm->id&amp;action=showsubmission&amp;sid=$submission->id\" target=\"submission\">". - $submission->title.'</a>')); - } $timenow = time(); // reset the internal flags if ($assessment) { $showgrades = false; - } + } else { // if no assessment, i.e. specimen grade form always show grading scales $showgrades = true; - } + } if ($assessment) { - // set the internal flag if necessary + // set the internal flag is necessary if ($allowchanges or !$workshop->agreeassessments or !$workshop->hidegrades or $assessment->timeagreed) { $showgrades = true; - } - - echo "<center>\n"; + } + + echo "<CENTER><TABLE BORDER=\"1\" WIDTH=\"30%\"><TR> + <TD ALIGN=CENTER BGCOLOR=\"$THEME->cellcontent\">\n"; + if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { + error ("Workshop_print_assessment: Submission record not found"); + } + echo workshop_print_submission_title($workshop, $submission); + echo "</TD></TR></TABLE><BR CLEAR=ALL>\n"; // see if this is a pre-filled assessment for a re-submission... if ($assessment->resubmission) { @@ -1931,96 +1662,81 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges // print agreement time if the workshop requires peer agreement if ($workshop->agreeassessments and $assessment->timeagreed) { - echo "<p>".get_string("assessmentwasagreedon", "workshop", userdate($assessment->timeagreed)); - } + echo "<P>".get_string("assessmentwasagreedon", "workshop", userdate($assessment->timeagreed)); + } // first print any comments on this assessment if ($comments = workshop_get_comments($assessment)) { - echo "<table cellpadding=\"2\" border=\"1\">\n"; + echo "<TABLE CELLPADDING=2 BORDER=1>\n"; $firstcomment = TRUE; foreach ($comments as $comment) { - echo "<tr valign=\"top\"><td class=\"workshopassessmentheading\"><p><b>". + echo "<TR valign=top><TD BGCOLOR=\"$THEME->cellheading2\"><P><B>". get_string("commentby","workshop")." "; if (isteacher($workshop->course, $comment->userid)) { echo $course->teacher; - } + } elseif ($assessment->userid == $comment->userid) { print_string("assessor", "workshop"); - } + } else { print_string("authorofsubmission", "workshop"); - } - echo " ".get_string("on", "workshop", userdate($comment->timecreated))."</b></p></td></tr><tr><td>\n"; - echo format_text($comment->comments)."&nbsp;\n"; + } + echo " ".get_string("on", "workshop", userdate($comment->timecreated))."</B></P></TD></TR><TR><TD>\n"; + echo text_to_html($comment->comments)."&nbsp;\n"; // add the links if needed if ($firstcomment and $showcommentlinks and !$assessment->timeagreed) { // show links depending on who doing the viewing $firstcomment = FALSE; if (isteacher($workshop->course, $USER->id) and ($comment->userid != $USER->id)) { - echo "<p align=\"right\"><a href=\"assessments.php?action=addcomment&amp;id=$cm->id&amp;aid=$assessment->id\">". - get_string("reply", "workshop")."</a></p>\n"; - } + echo "<P ALIGN=RIGHT><A HREF=\"assessments.php?action=addcomment&a=$workshop->id&aid=$assessment->id\">". + get_string("reply", "workshop")."</A>\n"; + } elseif (($comment->userid ==$USER->id) and (($timenow - $comment->timecreated) < $CFG->maxeditingtime)) { - echo "<p align=\"right\"><a href=\"assessments.php?action=editcomment&amp;id=$cm->id&amp;cid=$comment->id\">". - get_string("edit", "workshop")."</a>\n"; + echo "<P ALIGN=RIGHT><A HREF=\"assessments.php?action=editcomment&a=$workshop->id&cid=$comment->id\">". + get_string("edit", "workshop")."</A>\n"; if ($USER->id == $submission->userid) { - echo " | <a href=\"assessments.php?action=agreeassessment&amp;id=$cm->id&amp;aid=$assessment->id\">". - get_string("agreetothisassessment", "workshop")."</a>\n"; + echo " | <A HREF=\"assessments.php?action=agreeassessment&a=$workshop->id&aid=$assessment->id\">". + get_string("agreetothisassessment", "workshop")."</A>\n"; + } } - echo '</p>'; - } elseif (($comment->userid != $USER->id) and (($USER->id == $assessment->userid) or ($USER->id == $submission->userid))) { - echo "<p align=\"right\"><a href=\"assessments.php?action=addcomment&amp;id=$cm->id&amp;aid=$assessment->id\">". - get_string("reply", "workshop")."</a>\n"; + echo "<P ALIGN=RIGHT><A HREF=\"assessments.php?action=addcomment&a=$workshop->id&aid=$assessment->id\">". + get_string("reply", "workshop")."</A>\n"; if ($USER->id == $submission->userid) { - echo " | <a href=\"assessments.php?action=agreeassessment&amp;id=$cm->id&amp;aid=$assessment->id\">". - get_string("agreetothisassessment", "workshop")."</a>\n"; + echo " | <A HREF=\"assessments.php?action=agreeassessment&a=$workshop->id&aid=$assessment->id\">". + get_string("agreetothisassessment", "workshop")."</A>\n"; + } } - echo '</p>'; } + echo "</TD></TR>\n"; } - echo '</td></tr>'; + echo "</TABLE>\n"; + } + + // only show the grade if grading strategy > 0 and the grade is positive + if ($showgrades and $workshop->gradingstrategy and $assessment->grade >= 0) { + echo "<CENTER><B>".get_string("thegradeis", "workshop").": ".number_format($assessment->grade, 2)." (". + get_string("maximumgrade")." ".number_format($workshop->grade, 0).")</B></CENTER><BR CLEAR=ALL>\n"; } - echo '</table>'; } - echo '</center>'; - } - // now print the grading form with the grading grade if any + // now print the grading form with the teacher's comments if any // FORM is needed for Mozilla browsers, else radio bttons are not checked ?> <form name="assessmentform" method="post" action="assessments.php"> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="aid" value="<?php echo $assessment->id ?>" /> - <input type="hidden" name="action" value="updateassessment" /> - <input type="hidden" name="returnto" value="<?php echo $returnto ?>" /> - <input type="hidden" name="elementno" value="" /> - <input type="hidden" name="stockcommentid" value="" /> + <input type="hidden" name="id" value="<?php echo $cm->id ?>"> + <input type="hidden" name="aid" value="<?php echo $assessment->id ?>"> + <input type="hidden" name="action" value="updateassessment"> + <input type="hidden" name="returnto" value="<?php echo $returnto ?>"> <center> - <table cellpadding="2" border="1"> + <table cellpadding=2 border=1> <?php - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\"><center><b>"; - if ($assessment and isteacher($course->id)) { - $user = get_record('user', 'id', $assessment->userid); - print_string("assessmentby", "workshop", fullname($user)); - } else { - print_string('assessment', 'workshop'); - } - echo '</b><br />'.userdate($assessment->timecreated)."</center></td>\n"; + echo "<tr valign=top>\n"; + echo " <td colspan=2 bgcolor=\"$THEME->cellheading2\"><center><b>".get_string("assessment", "workshop"). + "</b></center></td>\n"; echo "</tr>\n"; - - // only show the grade if grading strategy > 0 and the grade is positive - if ($showgrades and $workshop->gradingstrategy and $assessment->grade >= 0) { - echo "<tr valign=\"top\">\n - <td colspan=\"2\" align=\"center\"> - <b>".get_string("thegradeis", "workshop").": ". - number_format($assessment->grade * $workshop->grade / 100, 2)." (". - get_string("maximumgrade")." ".number_format($workshop->grade, 0).")</b> - </td></tr><tr><td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td></tr>\n"; - } - + // get the assignment elements... $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC"); if (count($elementsraw) < $workshop->nelements) { @@ -2056,51 +1772,28 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges // now print the form for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","workshop")." $iplus1:</b></p></td>\n"; - echo " <td>".format_text($elements[$i]->description); - echo "</td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("element","workshop")." $iplus1:</B></P></TD>\n"; + echo " <TD>".text_to_html($elements[$i]->description); + echo "</TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback_$i\" rows=\"3\" cols=\"75\" >\n"; + echo " <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } echo "</textarea>\n"; } else { - echo format_text($grades[$i]->feedback); + echo text_to_html($grades[$i]->feedback); } - echo " </td>\n"; - echo "</tr>\n"; - - // if active and the teacher show stock comments... - if ($allowchanges and isteacher($course->id, $USER->id)) { - echo "<tr><td valign=\"top\" align=\"right\"><input type=\"button\" value=\"". - get_string("addcomment", "workshop")."\" - onclick=\"document.assessmentform.action.value='addstockcomment'; - document.assessmentform.elementno.value=$i;document.assessmentform.submit();\" /> \n"; - helpbutton("addcommenttobank", get_string("addcomment", "workshop"), "workshop"); - echo "</td><td>\n"; - if ($stockcomments = get_records_select("workshop_stockcomments", "workshopid = $workshop->id - AND elementno = $i", "id")) { // show comments in fixed order (oldest first) - foreach ($stockcomments as $stockcomment) { - echo "<a onclick=\"document.assessmentform.feedback_$i.value+=' '+'". - addslashes($stockcomment->comments)."';\">&lt;&lt;$stockcomment->comments&gt;&gt;</a>\n"; - if (isteacheredit($course->id, $USER->id)) { - echo " <a onclick=\"document.assessmentform.action.value='removestockcomment';document.assessmentform.stockcommentid.value=$stockcomment->id;document.assessmentform.submit();\"> <small><i>&lt;--".get_string("delete","workshop")."</i></small></a>\n"; - } - echo "<br />\n"; - } - } - echo "</td></tr>\n"; - } - - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } break; @@ -2108,16 +1801,16 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges // now print the form for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","workshop")." $iplus1:</b></p></td>\n"; - echo " <td>".format_text($elements[$i]->description); - echo "<p align=\"right\"><font size=\"1\">".get_string("weight", "workshop").": ". - number_format($WORKSHOP_EWEIGHTS[$elements[$i]->weight], 2)."</font></p>\n"; - echo "</td></tr>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("element","workshop")." $iplus1:</B></P></TD>\n"; + echo " <TD>".text_to_html($elements[$i]->description); + echo "<P align=right><FONT size=1>".get_string("weight", "workshop").": ". + number_format($WORKSHOP_EWEIGHTS[$elements[$i]->weight], 2)."</FONT>\n"; + echo "</TD></TR>\n"; if ($showgrades) { - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("grade"). ":</b></p></td>\n"; - echo " <td valign=\"top\">\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("grade"). ":</B></P></TD>\n"; + echo " <TD valign=\"top\">\n"; // get the appropriate scale $scalenumber=$elements[$i]->scale; @@ -2125,7 +1818,7 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges switch ($SCALE->type) { case 'radio' : // show selections highest first - echo "<center><b>$SCALE->start</b>&nbsp;&nbsp;&nbsp;"; + echo "<CENTER><B>$SCALE->start</B>&nbsp;&nbsp;&nbsp;"; for ($j = $SCALE->size - 1; $j >= 0 ; $j--) { $checked = false; if (isset($grades[$i]->grade)) { @@ -2139,13 +1832,13 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges } } if ($checked) { - echo " <input type=\"radio\" name=\"grade[$i]\" value=\"$j\" checked=\"checked\" alt=\"$j\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\" CHECKED> &nbsp;&nbsp;&nbsp;\n"; } else { - echo " <input type=\"radio\" name=\"grade[$i]\" value=\"$j\" alt=\"$j\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\"> &nbsp;&nbsp;&nbsp;\n"; } } - echo "&nbsp;&nbsp;&nbsp;<b>$SCALE->end</b></center>\n"; + echo "&nbsp;&nbsp;&nbsp;<B>$SCALE->end</B></CENTER>\n"; break; case 'selection' : unset($numbers); @@ -2161,51 +1854,27 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges break; } - echo " </td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; } - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback_$i\" rows=\"3\" cols=\"75\" >\n"; + echo " <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } echo "</textarea>\n"; } else { - echo format_text($grades[$i]->feedback); + echo text_to_html($grades[$i]->feedback); } - echo " </td>\n"; - echo "</tr>\n"; - - // if active and the teacher show stock comments... - if ($allowchanges and isteacher($course->id, $USER->id)) { - echo "<tr><td valign=\"top\" align=\"right\"><input type=\"button\" value=\"". - get_string("addcomment", "workshop")."\" - onclick=\"document.assessmentform.action.value='addstockcomment'; - document.assessmentform.elementno.value=$i;document.assessmentform.submit();\" /> \n"; - helpbutton("addcommenttobank", get_string("addcomment", "workshop"), "workshop"); - echo "</td><td>\n"; - if ($stockcomments = get_records_select("workshop_stockcomments", "workshopid = $workshop->id - AND elementno = $i", "id")) { // get comments in a fixed order - oldest first - foreach ($stockcomments as $stockcomment) { - echo "<a onclick=\"document.assessmentform.feedback_$i.value+=' '+'". - addslashes($stockcomment->comments). - "';\">&lt;&lt;$stockcomment->comments&gt;&gt;</a>\n"; - if (isteacheredit($course->id, $USER->id)) { - echo " <a onclick=\"document.assessmentform.action.value='removestockcomment';document.assessmentform.stockcommentid.value=$stockcomment->id;document.assessmentform.submit();\"> <small><i>&lt;--".get_string("delete","workshop")."</i></small></a>\n"; - } - echo "<br />\n"; - } - } - echo "</td></tr>\n"; - } - - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; } break; @@ -2214,22 +1883,22 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges $negativecount = 0; for ($i=0; $i < count($elements) - 1; $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("element","workshop")." $iplus1:</b></p></td>\n"; - echo " <td>".format_text($elements[$i]->description); - echo "<p align=\"right\"><font size=\"1\">".get_string("weight", "workshop").": ". - number_format($WORKSHOP_EWEIGHTS[$elements[$i]->weight], 2)."</font>\n"; - echo "</td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("grade"). ":</b></p></td>\n"; - echo " <td valign=\"top\">\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("element","workshop")." $iplus1:</B></P></TD>\n"; + echo " <TD>".text_to_html($elements[$i]->description); + echo "<P align=right><FONT size=1>".get_string("weight", "workshop").": ". + number_format($WORKSHOP_EWEIGHTS[$elements[$i]->weight], 2)."</FONT>\n"; + echo "</TD></TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("grade"). ":</B></P></TD>\n"; + echo " <TD valign=\"top\">\n"; // get the appropriate scale - yes/no scale (0) $SCALE = (object) $WORKSHOP_SCALES[0]; switch ($SCALE->type) { case 'radio' : // show selections highest first - echo "<center><b>$SCALE->start</b>&nbsp;&nbsp;&nbsp;"; + echo "<CENTER><B>$SCALE->start</B>&nbsp;&nbsp;&nbsp;"; for ($j = $SCALE->size - 1; $j >= 0 ; $j--) { $checked = false; if (isset($grades[$i]->grade)) { @@ -2243,13 +1912,13 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges } } if ($checked) { - echo " <input type=\"radio\" name=\"grade[$i]\" value=\"$j\" checked=\"checked\" alt=\"$j\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\" CHECKED> &nbsp;&nbsp;&nbsp;\n"; } else { - echo " <input type=\"radio\" name=\"grade[$i]\" value=\"$j\" alt=\"$j\" /> &nbsp;&nbsp;&nbsp;\n"; + echo " <INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\"> &nbsp;&nbsp;&nbsp;\n"; } } - echo "&nbsp;&nbsp;&nbsp;<b>$SCALE->end</b></center>\n"; + echo "&nbsp;&nbsp;&nbsp;<B>$SCALE->end</B></CENTER>\n"; break; case 'selection' : unset($numbers); @@ -2265,13 +1934,13 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges break; } - echo " </td>\n"; - echo "</tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo " </TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback_$i\" rows=\"3\" cols=\"75\" >\n"; + echo " <textarea name=\"feedback[$i]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; } @@ -2279,65 +1948,42 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges } else { if (isset($grades[$i]->feedback)) { - echo format_text($grades[$i]->feedback); + echo text_to_html($grades[$i]->feedback); } } - echo "&nbsp;</td>\n"; - echo "</tr>\n"; - - // if active and the teacher show stock comments... - if ($allowchanges and isteacher($course->id, $USER->id)) { - echo "<tr><td valign=\"top\" align=\"right\"><input type=\"button\" value=\"". - get_string("addcomment", "workshop")."\" - onclick=\"document.assessmentform.action.value='addstockcomment'; - document.assessmentform.elementno.value=$i;document.assessmentform.submit();\" /> \n"; - helpbutton("addcommenttobank", get_string("addcomment", "workshop"), "workshop"); - echo "</td><td>\n"; - if ($stockcomments = get_records_select("workshop_stockcomments", "workshopid = $workshop->id - AND elementno = $i", "id")) { // get comments in a fixed order - oldest first - foreach ($stockcomments as $stockcomment) { - echo "<a onclick=\"document.assessmentform.feedback_$i.value+=' '+'". - addslashes($stockcomment->comments). - "';\">&lt;&lt;$stockcomment->comments&gt;&gt;</a>\n"; - if (isteacheredit($course->id, $USER->id)) { - echo " <a onclick=\"document.assessmentform.action.value='removestockcomment';document.assessmentform.stockcommentid.value=$stockcomment->id;document.assessmentform.submit();\"> <small><i>&lt;--".get_string("delete","workshop")."</i></small></a>\n"; - } - echo "<br />\n"; - } - } - echo "</td></tr>\n"; - } - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo "</tr>\n"; + echo "&nbsp;</TD>\n"; + echo "</TR>\n"; + echo "<TR valign=top>\n"; + echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TR>\n"; if (empty($grades[$i]->grade)) { $negativecount++; } } // print the number of negative elements - // echo "<tr><td>".get_string("numberofnegativeitems", "workshop")."</td><td>$negativecount</td></tr>\n"; - // echo "<tr valign=\"top\">\n"; - // echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo "</table></center>\n"; + // echo "<TR><TD>".get_string("numberofnegativeitems", "workshop")."</TD><TD>$negativecount</TD></TR>\n"; + // echo "<TR valign=top>\n"; + // echo " <TD COLSPAN=2 BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</TABLE></CENTER>\n"; // now print the grade table - echo "<p><center><b>".get_string("gradetable","workshop")."</b></center>\n"; - echo "<center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"CENTER\">". + echo "<P><CENTER><B>".get_string("gradetable","workshop")."</B></CENTER>\n"; + echo "<CENTER><TABLE cellpadding=5 border=1><TR><TD ALIGN=\"CENTER\">". get_string("numberofnegativeresponses", "workshop"); - echo "</td><td>". get_string("suggestedgrade", "workshop")."</td></tr>\n"; + echo "</TD><TD>". get_string("suggestedgrade", "workshop")."</TD></TR>\n"; for ($j = 100; $j >= 0; $j--) { $numbers[$j] = $j; } for ($i=0; $i<=$workshop->nelements; $i++) { if ($i == $negativecount) { - echo "<tr><td align=\"CENTER\"><img src=\"$CFG->pixpath/t/right.gif\" alt=\"\" /> $i</td><td align=\"center\">{$elements[$i]->maxscore}</td></tr>\n"; + echo "<TR><TD ALIGN=\"CENTER\"><IMG SRC=\"$CFG->pixpath/t/right.gif\"> $i</TD><TD ALIGN=\"CENTER\">{$elements[$i]->maxscore}</TD></TR>\n"; } else { - echo "<tr><td align=\"CENTER\">$i</td><td align=\"CENTER\">{$elements[$i]->maxscore}</td></tr>\n"; + echo "<TR><TD ALIGN=\"CENTER\">$i</TD><TD ALIGN=\"CENTER\">{$elements[$i]->maxscore}</TD></TR>\n"; } } - echo "</table></center>\n"; - echo "<p><center><table cellpadding=\"5\" border=\"1\"><tr><td><b>".get_string("optionaladjustment", - "workshop")."</b></td><td>\n"; + echo "</TABLE></CENTER>\n"; + echo "<P><CENTER><TABLE cellpadding=5 border=1><TR><TD><b>".get_string("optionaladjustment", + "workshop")."</b></TD><TD>\n"; unset($numbers); for ($j = 20; $j >= -20; $j--) { $numbers[$j] = $j; @@ -2348,15 +1994,15 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges else { choose_from_menu($numbers, "grade[$workshop->nelements]", 0, ""); } - echo "</td></tr>\n"; + echo "</TD></TR>\n"; break; case 3: // criteria grading - echo "<tr valign=\"top\">\n"; - echo " <td class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo " <td class=\"workshopassessmentheading\"><b>". get_string("criterion","workshop")."</b></td>\n"; - echo " <td class=\"workshopassessmentheading\"><b>".get_string("select", "workshop")."</b></td>\n"; - echo " <td class=\"workshopassessmentheading\"><b>".get_string("suggestedgrade", "workshop")."</b></td>\n"; + echo "<TR valign=top>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>". get_string("criterion","workshop")."</B></TD>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("select", "workshop")."</B></TD>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("suggestedgrade", "workshop")."</B></TD>\n"; // find which criteria has been selected (saved in the zero element), if any if (isset($grades[0]->grade)) { $selection = $grades[0]->grade; @@ -2367,19 +2013,19 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges // now run through the elements for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo " <td>$iplus1</td><td>".format_text($elements[$i]->description)."</td>\n"; + echo "<TR valign=top>\n"; + echo " <TD>$iplus1</TD><TD>".text_to_html($elements[$i]->description)."</TD>\n"; if ($selection == $i) { - echo " <td align=\"center\"><input type=\"radio\" name=\"grade[0]\" value=\"$i\" checked=\"checked\" alt=\"$i\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[0]\" VALUE=\"$i\" CHECKED></TD>\n"; } else { - echo " <td align=\"center\"><input type=\"radio\" name=\"grade[0]\" value=\"$i\" alt=\"$i\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[0]\" VALUE=\"$i\"></TD>\n"; } - echo "<td align=\"center\">{$elements[$i]->maxscore}</td></tr>\n"; + echo "<TD align=center>{$elements[$i]->maxscore}</TD></TR>\n"; } - echo "</table></center>\n"; - echo "<p><center><table cellpadding=\"5\" border=\"1\"><tr><td><b>".get_string("optionaladjustment", - "workshop")."</b></td><td>\n"; + echo "</TABLE></CENTER>\n"; + echo "<P><CENTER><TABLE cellpadding=5 border=1><TR><TD><b>".get_string("optionaladjustment", + "workshop")."</b></TD><TD>\n"; unset($numbers); for ($j = 20; $j >= -20; $j--) { $numbers[$j] = $j; @@ -2390,213 +2036,156 @@ function workshop_print_assessment($workshop, $assessment = false, $allowchanges else { choose_from_menu($numbers, "grade[1]", 0, ""); } - echo "</td></tr>\n"; + echo "</TD></TR>\n"; break; case 4: // rubric grading // now run through the elements... for ($i=0; $i < count($elements); $i++) { $iplus1 = $i+1; - echo "<tr valign=\"top\">\n"; - echo "<td align=\"right\"><b>".get_string("element", "workshop")." $iplus1:</b></td>\n"; - echo "<td>".format_text($elements[$i]->description). - "<p align=\"right\"><font size=\"1\">".get_string("weight", "workshop").": ". - number_format($WORKSHOP_EWEIGHTS[$elements[$i]->weight], 2)."</font></td></tr>\n"; - echo "<tr valign=\"top\">\n"; - echo " <td class=\"workshopassessmentheading\" align=\"center\"><b>".get_string("select", "workshop"). - "</b></td>\n"; - echo " <td class=\"workshopassessmentheading\"><b>". get_string("criterion","workshop"). - "</b></td></tr>\n"; + echo "<TR valign=\"top\">\n"; + echo "<TD align=\"right\"><b>".get_string("element", "workshop")." $iplus1:</b></TD>\n"; + echo "<TD>".text_to_html($elements[$i]->description). + "<P align=\"right\"><font size=\"1\">".get_string("weight", "workshop").": ". + number_format($WORKSHOP_EWEIGHTS[$elements[$i]->weight], 2)."</font></TD></tr>\n"; + echo "<TR valign=\"top\">\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\" align=\"center\"><B>".get_string("select", "workshop")."</B></TD>\n"; + echo " <TD BGCOLOR=\"$THEME->cellheading2\"><B>". get_string("criterion","workshop")."</B></TD></tr>\n"; if (isset($grades[$i])) { $selection = $grades[$i]->grade; - } else { + } else { $selection = 0; - } + } // ...and the rubrics if ($rubricsraw = get_records_select("workshop_rubrics", "workshopid = $workshop->id AND elementno = $i", "rubricno ASC")) { unset($rubrics); foreach ($rubricsraw as $rubic) { $rubrics[] = $rubic; // to renumber index 0,1,2... - } + } for ($j=0; $j<5; $j++) { if (empty($rubrics[$j]->description)) { break; // out of inner for loop - } - echo "<tr valign=\"top\">\n"; + } + echo "<TR valign=top>\n"; if ($selection == $j) { - echo " <td align=\"center\"><input type=\"radio\" name=\"grade[$i]\" value=\"$j\" - checked=\"checked\" alt=\"$j\" /></td>\n"; - } else { - echo " <td align=\"center\"><input type=\"radio\" name=\"grade[$i]\" value=\"$j\" - alt=\"$j\" /></td>\n"; + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\" CHECKED></TD>\n"; + }else { + echo " <TD align=center><INPUT TYPE=\"RADIO\" NAME=\"grade[$i]\" VALUE=\"$j\"></TD>\n"; + } + echo "<TD>".text_to_html($rubrics[$j]->description)."</TD>\n"; } - echo "<td>".format_text($rubrics[$j]->description)."</td>\n"; - } - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("feedback").":</b></p></td>\n"; - echo " <td>\n"; + echo "<TR valign=top>\n"; + echo " <TD align=right><P><B>". get_string("feedback").":</B></P></TD>\n"; + echo " <TD>\n"; if ($allowchanges) { - echo " <textarea name=\"feedback_$i\" rows=\"3\" cols=\"75\" >\n"; + echo " <textarea name=\"feedback[]\" rows=3 cols=75 wrap=\"virtual\">\n"; if (isset($grades[$i]->feedback)) { echo $grades[$i]->feedback; - } + } echo "</textarea>\n"; - } else { - echo format_text($grades[$i]->feedback); - } + } + else { + echo text_to_html($grades[$i]->feedback); + } echo " </td>\n"; echo "</tr>\n"; - - // if active and the teacher show stock comments... - if ($allowchanges and isteacher($course->id, $USER->id)) { - echo "<tr><td valign=\"top\" align=\"right\"><input type=\"button\" value=\"". - get_string("addcomment", "workshop")."\" - onclick=\"document.assessmentform.action.value='addstockcomment'; - document.assessmentform.elementno.value=$i;document.assessmentform.submit();\" /> \n"; - helpbutton("addcommenttobank", get_string("addcomment", "workshop"), "workshop"); - echo "</td><td>\n"; - if ($stockcomments = get_records_select("workshop_stockcomments", "workshopid = $workshop->id - AND elementno = $i", "id")) { // show comments in fixed (creation) order - foreach ($stockcomments as $stockcomment) { - echo "<a onclick=\"document.assessmentform.feedback_$i.value+=' '+'". - addslashes($stockcomment->comments). - "';\">&lt;&lt;$stockcomment->comments&gt;&gt;</a>\n"; - if (isteacheredit($course->id, $USER->id)) { - echo " <a onclick=\"document.assessmentform.action.value='removestockcomment';document.assessmentform.stockcommentid.value=$stockcomment->id;document.assessmentform.submit();\"> <small><i>&lt;--".get_string("delete","workshop")."</i></small></a>\n"; - } - echo "<br />\n"; - } - } - echo "</td></tr>\n"; - } - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; + echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</TD>\n"; echo "</tr>\n"; + } } - } break; } // end of outer switch - // now get the general comment (present in all types) - echo "<tr valign=\"top\">\n"; - switch ($workshop->gradingstrategy) { - case 0: - case 1: - case 4 : // no grading, accumulative and rubic - echo " <td align=\"right\"><p><b>". get_string("generalcomment", "workshop").":</b></p></td>\n"; - break; - default : - echo " <td align=\"right\"><p><b>".get_string("generalcomment", "workshop")."/<br />". - get_string("reasonforadjustment", "workshop").":</b></p></td>\n"; + // now get the general comment (present in all types) + echo "<tr valign=\"top\">\n"; + switch ($workshop->gradingstrategy) { + case 0: + case 1: + case 4 : // no grading, accumulative and rubic + echo " <td align=\"right\"><P><B>". get_string("generalcomment", "workshop").":</B></P></TD>\n"; + break; + default : + echo " <td align=\"right\"><P><B>". get_string("reasonforadjustment", "workshop").":</B></P></TD>\n"; } - echo " <td>\n"; - if ($allowchanges) { - echo " <textarea name=\"generalcomment\" rows=\"5\" cols=\"75\" >\n"; - if (isset($assessment->generalcomment)) { - echo $assessment->generalcomment; + echo " <td>\n"; + if ($allowchanges) { + echo " <textarea name=\"generalcomment\" rows=5 cols=75 wrap=\"virtual\">\n"; + if (isset($assessment->generalcomment)) { + echo $assessment->generalcomment; } - echo "</textarea>\n"; - } else { + echo "</textarea>\n"; + } + else { if ($assessment) { if (isset($assessment->generalcomment)) { - echo format_text($assessment->generalcomment); + echo text_to_html($assessment->generalcomment); + } } - } else { + else { print_string("yourfeedbackgoeshere", "workshop"); + } } - } echo "&nbsp;</td>\n"; echo "</tr>\n"; - // if active and the teacher show stock comments... - if ($allowchanges and isteacher($course->id, $USER->id)) { - echo "<tr><td valign=\"top\" align=\"right\"><input type=\"button\" value=\"". - get_string("addcomment", "workshop")."\" - onclick=\"document.assessmentform.action.value='addstockcomment'; - document.assessmentform.elementno.value=99;document.assessmentform.submit();\" /> \n"; - helpbutton("addcommenttobank", get_string("addcomment", "workshop"), "workshop"); - echo "</td><td>\n"; - if ($stockcomments = get_records_select("workshop_stockcomments", "workshopid = $workshop->id - AND elementno = 99", "id")) { // show in the same order (oldest at the top) - foreach ($stockcomments as $stockcomment) { - echo "<a onclick=\"document.assessmentform.generalcomment.value+=' '+'". - addslashes($stockcomment->comments)."';\">&lt;&lt;$stockcomment->comments&gt;&gt;</a>\n"; - if (isteacheredit($course->id, $USER->id)) { - echo " <a onclick=\"document.assessmentform.action.value='removestockcomment';document.assessmentform.stockcommentid.value=$stockcomment->id;document.assessmentform.submit();\"> <small><i>&lt;--".get_string("delete","workshop")."</i></small></a>\n"; - } - echo "<br />\n"; - } - } - echo "</td></tr>\n"; - } + echo "<tr valign=\"top\">\n"; + echo " <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + echo "</tr>\n"; $timenow = time(); - // now show the grading grade if available... - if ($assessment->timegraded) { - echo "<tr valign=\"top\">\n"; - echo "<td colspan=\"2\" class=\"workshopassessmentheading\" align=\"center\"><b>". - get_string('gradeforstudentsassessment', 'workshop')."</b></td>\n"; - echo "</tr>\n"; - - if ($assessment->teachercomment) { - echo "<tr valign=top>\n"; - echo " <td align=\"right\"><p><b>". get_string("teacherscomment", "workshop").":</b></p></td>\n"; - echo " <td>\n"; - echo text_to_html($assessment->teachercomment); - echo "&nbsp;</td>\n"; - echo "</tr>\n"; - } - - echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>"; - print_string('grade', 'workshop'); - echo ":</b></p></td><td>\n"; - echo number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0); + // now show the teacher's comment if available... + if ($assessment->timegraded and (($timenow - $assessment->timegraded) > $CFG->maxeditingtime)) { + echo "<tr valign=top>\n"; + echo " <td align=\"right\"><p><b>". get_string("teacherscomment", "workshop").":</b></p></td>\n"; + echo " <td>\n"; + echo text_to_html($assessment->teachercomment); echo "&nbsp;</td>\n"; echo "</tr>\n"; - } - - echo "<tr valign=\"top\">\n"; - echo " <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n"; - echo "</tr>\n"; - + // only show the grading grade if it's the teacher + if (isteacher($course->id)) { + echo "<tr valign=\"top\">\n"; + echo " <td align=\"right\"><p><b>". get_string("teachersgrade", "workshop").":</b></p></td>\n"; + echo " <td>\n"; + echo number_format($assessment->gradinggrade * 100 / COMMENTSCALE, 0)."%"; + echo "&nbsp;</td>\n"; + echo "</tr>\n"; + } + echo "<tr valign=\"top\">\n"; + echo "<td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n"; + echo "</tr>\n"; + } + // ...and close the table, show submit button if needed... echo "</table>\n"; if ($assessment) { if ($allowchanges) { - echo "<input type=\"submit\" value=\"".get_string("savemyassessment", "workshop")."\" />\n"; - } + echo "<input type=\"submit\" VALUE=\"".get_string("savemyassessment", "workshop")."\">\n"; + } // ...if user is author, assessment not agreed, there's no comments, the showcommentlinks flag is set and // it's not self assessment then show some buttons! if (($submission->userid == $USER->id) and !$assessment->timeagreed and !$comments and $showcommentlinks and $submission->userid != $assessment->userid) { - echo "<input type=\"button\" value=\"".get_string("agreetothisassessment", "workshop")."\" - onclick=\"document.assessmentform.action.value='agreeassessment';document.assessmentform.submit();\" />\n"; - echo "<input type=\"submit\" value=\"".get_string("disagreewiththisassessment", "workshop")."\" - onclick=\"document.assessmentform.action.value='addcomment';document.assessmentform.submit();\" />\n"; + echo "<input type=button VALUE=\"".get_string("agreetothisassessment", "workshop")."\" + onclick=\"document.assessmentform.action.value='agreeassessment';document.assessmentform.submit();\">\n"; + echo "<input type=submit value=\"".get_string("disagreewiththisassessment", "workshop")."\" + onclick=\"document.assessmentform.action.value='addcomment';document.assessmentform.submit();\">\n"; + } } - } echo "</center>"; echo "</form>\n"; -} + } ////////////////////////////////////////////////////////////////////////////////////// function workshop_print_assessments_by_user_for_admin($workshop, $user) { - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } - - if ($assessments = workshop_get_user_assessments_done($workshop, $user)) { + if ($assessments =workshop_get_user_assessments($workshop, $user)) { foreach ($assessments as $assessment) { + echo "<p><center><b>".get_string("assessmentby", "workshop", fullname($user))."</b></center></p>\n"; workshop_print_assessment($workshop, $assessment); - echo "<p align=\"right\">". - '<a href="viewassessment.php?&amp;id='.$cm->id.'&amp;stype=student&amp;aid='.$assessment->id.'">'. - get_string('assessthisassessment', 'workshop').'</a> | '. - "<a href=\"assessments.php?action=confirmdelete&amp;id=$cm->id&amp;aid=$assessment->id\">". - get_string("delete", "workshop")."</a></p><hr />\n"; + echo "<p align=\"right\"><a href=\"assessments.php?action=adminconfirmdelete&a=$workshop->id&aid=$assessment->id\">". + get_string("delete", "workshop")."</a></p><hr>\n"; } } } @@ -2605,10 +2194,6 @@ function workshop_print_assessments_by_user_for_admin($workshop, $user) { ////////////////////////////////////////////////////////////////////////////////////// function workshop_print_assessments_for_admin($workshop, $submission) { - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } - if ($assessments =workshop_get_assessments($submission)) { foreach ($assessments as $assessment) { if (!$user = get_record("user", "id", $assessment->userid)) { @@ -2616,8 +2201,8 @@ function workshop_print_assessments_for_admin($workshop, $submission) { } echo "<p><center><b>".get_string("assessmentby", "workshop", fullname($user))."</b></center></p>\n"; workshop_print_assessment($workshop, $assessment); - echo "<p align=\"right\"><a href=\"assessments.php?action=confirmdelete&amp;id=$cm->id&amp;aid=$assessment->id\">". - get_string("delete", "workshop")."</a></p><hr />\n"; + echo "<p align=\"right\"><a href=\"assessments.php?action=adminconfirmdelete&a=$workshop->id&aid=$assessment->id\">". + get_string("delete", "workshop")."</a></p><hr>\n"; } } } @@ -2625,7 +2210,6 @@ function workshop_print_assessments_for_admin($workshop, $submission) { ////////////////////////////////////////////////////////////////////////////////////// function workshop_print_assignment_info($workshop) { - global $CFG; if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); @@ -2634,49 +2218,32 @@ function workshop_print_assignment_info($workshop) { error("Course Module ID was incorrect"); } // print standard assignment heading - print_heading(format_string($workshop->name), "center"); + $strdifference = format_time($workshop->deadline - time()); + if (($workshop->deadline - time()) < 0) { + $strdifference = "<font color=\"red\">$strdifference</font>"; + } + $strduedate = userdate($workshop->deadline)." ($strdifference)"; print_simple_box_start("center"); - - // print phase and date info - $string = '<b>'.get_string('currentphase', 'workshop').'</b>: '.workshop_phase($workshop).'<br />'; - $dates = array( - 'submissionstart' => $workshop->submissionstart, - 'submissionend' => $workshop->submissionend, - 'assessmentstart' => $workshop->assessmentstart, - 'assessmentend' => $workshop->assessmentend - ); - foreach ($dates as $type => $date) { - if ($date) { - $strdifference = format_time($date - time()); - if (($date - time()) < 0) { - $strdifference = "<font color=\"red\">$strdifference</font>"; - } - $string .= '<b>'.get_string($type, 'workshop').'</b>: '.userdate($date)." ($strdifference)<br />"; - } - } - echo $string; - - $grade = $workshop->gradinggrade + $workshop->grade; - echo "<br /><b>".get_string("maximumgrade")."</b>: $grade "; - // print link to specimen assessment form - echo "(<a href=\"assessments.php?id=$cm->id&amp;action=displaygradingform\">". - get_string("specimenassessmentform", "workshop")."</a>"; - // print edit icon - if (isteacheredit($course->id) and $workshop->nelements) { - echo " <a href=\"assessments.php?id=$cm->id&amp;action=editelements\">". - "<img src=\"$CFG->pixpath/t/edit.gif\" ". - 'height="11" width="11" border="0" alt="'.get_string('amendassessmentelements', 'workshop').'" /></a>'; - } - echo ")<br />"; + print_heading($workshop->name, "center"); + print_simple_box_start("center"); + echo "<b>".get_string("duedate", "assignment")."</b>: $strduedate<br />"; + echo "<b>".get_string("maximumgrade")."</b>: $workshop->grade<br />"; + echo "<b>".get_string("detailsofassessment", "workshop")."</b>: + <a href=\"assessments.php?id=$cm->id&action=displaygradingform\">". + get_string("specimenassessmentform", "workshop")."</a><br />"; print_simple_box_end(); -} + echo "<br />"; + echo format_text($workshop->description, $workshop->format); + print_simple_box_end(); + echo "<br />"; + } ////////////////////////////////////////////////////////////////////////////////////// function workshop_print_difference($time) { if ($time < 0) { $timetext = get_string("late", "assignment", format_time($time)); - return " (<font color=\"red\">$timetext</font>)"; + return " (<FONT COLOR=RED>$timetext</FONT>)"; } else { $timetext = get_string("early", "assignment", format_time($time)); return " ($timetext)"; @@ -2686,58 +2253,39 @@ function workshop_print_difference($time) { ////////////////////////////////////////////////////////////////////////////////////// function workshop_print_feedback($course, $submission) { - global $CFG, $RATING; + global $CFG, $THEME, $RATING; if (! $teacher = get_record("user", "id", $submission->teacher)) { error("Weird workshop error"); } - echo "\n<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" class=\"feedbackbox\">"; + echo "\n<TABLE BORDER=0 CELLPADDING=1 CELLSPACING=1 ALIGN=CENTER><TR><TD BGCOLOR=#888888>"; + echo "\n<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=0 VALIGN=TOP>"; - echo "\n<tr>"; - echo "\n<td rowspan=\"3\" class=\"userpicture\" width=\"35\" valign=\"top\">"; + echo "\n<TR>"; + echo "\n<TD ROWSPAN=3 BGCOLOR=\"$THEME->body\" WIDTH=35 VALIGN=TOP>"; print_user_picture($teacher->id, $course->id, $teacher->picture); - echo "</td>"; - echo "<td nowrap=\"nowrap\" width=\"100%\" class=\"feedbackby\">".fullname($teacher); - echo "&nbsp;&nbsp;<font size=\"2\"><i>".userdate($submission->timemarked)."</i>"; - echo "</tr>"; + echo "</TD>"; + echo "<TD NOWRAP WIDTH=100% BGCOLOR=\"$THEME->cellheading\">".fullname($teacher); + echo "&nbsp;&nbsp;<FONT SIZE=2><I>".userdate($submission->timemarked)."</I>"; + echo "</TR>"; - echo "\n<tr><td width=\"100%\" class=\"feedback\">"; + echo "\n<TR><TD WIDTH=100% BGCOLOR=\"$THEME->cellcontent\">"; - echo "<p align=\"right\"><font size=\"-1\"><i>"; + echo "<P ALIGN=RIGHT><FONT SIZE=-1><I>"; if ($submission->grade) { echo get_string("grade").": $submission->grade"; } else { echo get_string("nograde"); } - echo "</i></font></p>"; + echo "</I></FONT></P>"; - echo format_text($submission->assessorcomment); - echo "</td></tr></table>"; + echo text_to_html($submission->assessorcomment); + echo "</TD></TR></TABLE>"; + echo "</TD></TR></TABLE>"; } -////////////////////////////////////////////////////////////////////////////////////// -function workshop_print_key($workshop) { - // print an explaination of the grades - - if (!$course = get_record("course", "id", $workshop->course)) { - error("Print key: course not found"); - } - echo "<div align=\"center\">\n"; - echo "<p><small>{} ".get_string("assessmentby", "workshop", $course->student).";&nbsp;&nbsp;\n"; - echo "[] ".get_string("assessmentby", "workshop", $course->teacher).";&nbsp;&nbsp;\n"; - echo "&lt;&gt; ".get_string("assessmentdropped", "workshop").";\n"; - if ($workshop->agreeassessments) echo "&lt;&lt;&gt;&gt; ".get_string("assessmentnotyetagreed", "workshop").";\n"; - echo "<br />() ".get_string("automaticgradeforassessment", "workshop").";&nbsp;&nbsp;\n"; - echo "[] ".get_string("teachergradeforassessment", "workshop", $course->teacher).".\n"; - echo "<br />".get_string("gradesforsubmissionsare", "workshop", $workshop->grade).";&nbsp;&nbsp;\n"; - echo get_string("gradesforassessmentsare", "workshop", $workshop->gradinggrade).".</small></p>\n"; - echo "</div>\n"; - return; -} - - ////////////////////////////////////////////////////////////////////////////////////// function workshop_print_league_table($workshop) { // print an order table of (student) submissions showing teacher's and student's assessments @@ -2745,175 +2293,116 @@ function workshop_print_league_table($workshop) { if (! $course = get_record("course", "id", $workshop->course)) { error("Print league table: Course is misconfigured"); } - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } - // set $groupid if workshop is in SEPARATEGROUPS mode - if (groupmode($course, $cm) == SEPARATEGROUPS) { - $groupid = get_current_group($course->id); - } else { - $groupid = 0; - } - $nentries = $workshop->showleaguetable; + if ($nentries == 99) { + $nentries = 999999; // a large number + } + if ($workshop->anonymous and isstudent($course->id)) { $table->head = array (get_string("title", "workshop"), get_string("teacherassessments", "workshop", $course->teacher), get_string("studentassessments", "workshop", $course->student), get_string("overallgrade", "workshop")); $table->align = array ("left", "center", "center", "center"); $table->size = array ("*", "*", "*", "*"); - } + } else { // show names $table->head = array (get_string("title", "workshop"), get_string("name"), get_string("teacherassessments", "workshop", $course->teacher), get_string("studentassessments", "workshop", $course->student), get_string("overallgrade", "workshop")); $table->align = array ("left", "left", "center", "center", "center"); $table->size = array ("*", "*", "*", "*", "*"); - } + } $table->cellpadding = 2; $table->cellspacing = 0; - if ($submissions = workshop_get_student_submissions($workshop)) { - foreach ($submissions as $submission) { - if ($groupid) { - // check submission's group - if (!ismember($groupid, $submission->userid)) { - continue; // skip this submission - } - } - $grades[$submission->id] = workshop_submission_grade($workshop, $submission); - } - arsort($grades); // largest grade first - reset($grades); + if ($submissions = workshop_get_student_submissions($workshop, "grade")) { $n = 1; - while (list($submissionid, $grade) = each($grades)) { - if (!$submission = get_record("workshop_submissions", "id", $submissionid)) { - error("Print league table: submission not found"); - } + foreach ($submissions as $submission) { if (!$user = get_record("user", "id", $submission->userid)) { error("Print league table: user not found"); - } + } if ($workshop->anonymous and isstudent($course->id)) { $table->data[] = array(workshop_print_submission_title($workshop, $submission), - workshop_print_submission_assessments($workshop, $submission, "teacher"), - workshop_print_submission_assessments($workshop, $submission, "student"), $grade); - } + workshop_print_submission_assessments($workshop, $submission, "teacher"), + workshop_print_submission_assessments($workshop, $submission, "student"), + number_format(($workshop->teacherweight * $submission->teachergrade + $workshop->peerweight * + $submission->peergrade) / ($workshop->teacherweight + $workshop->peerweight), 1)) ; + } else { $table->data[] = array(workshop_print_submission_title($workshop, $submission), fullname($user), - workshop_print_submission_assessments($workshop, $submission, "teacher"), - workshop_print_submission_assessments($workshop, $submission, "student"), $grade); - } + workshop_print_submission_assessments($workshop, $submission, "teacher"), + workshop_print_submission_assessments($workshop, $submission, "student"), + number_format(($workshop->teacherweight * $submission->teachergrade + $workshop->peerweight * + $submission->peergrade) / ($workshop->teacherweight + $workshop->peerweight), 1)) ; + } $n++; if ($n > $nentries) { break; + } } - } print_heading(get_string("leaguetable", "workshop")); print_table($table); - workshop_print_key($workshop); + echo "<p>&lt; &gt; ".get_string("assessmentdropped", "workshop")."</p>\n"; + } } -} -////////////////////////////////////////////////////////////////////////////////////// -function workshop_print_submission($workshop, $submission) { - // prints the submission with optional attachments - global $CFG; - - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } - print_simple_box(format_text($submission->description), 'center'); - if ($workshop->nattachments) { - $n = 1; - echo "<table align=\"center\">\n"; - $filearea = workshop_file_area_name($workshop, $submission); - if ($basedir = workshop_file_area($workshop, $submission)) { - if ($files = get_directory_list($basedir)) { - foreach ($files as $file) { - $icon = mimeinfo("icon", $file); - if ($CFG->slasharguments) { - $ffurl = "file.php/$filearea/$file"; - } else { - $ffurl = "file.php?file=/$filearea/$file"; - } - echo "<tr><td><b>".get_string("attachment", "workshop")." $n:</b> \n"; - echo "<img src=\"$CFG->pixpath/f/$icon\" height=\"16\" width=\"16\" - border=\"0\" alt=\"File\" />". - "&nbsp;<a target=\"uploadedfile\" href=\"$CFG->wwwroot/$ffurl\">$file</a></td></tr>"; - $n++; - } - } - } - echo "</table>\n"; - } - return; -} - - ////////////////////////////////////////////////////////////////////////////////////// function workshop_print_submission_assessments($workshop, $submission, $type) { - global $USER, $CFG; // Returns the teacher or peer grade and a hyperlinked list of grades for this submission - + $str = ''; - // get the assessments in grade order, highest first - if ($assessments = workshop_get_assessments($submission, "", "grade DESC")) { - if ($type == 'teacher' or $type == 'all') { - // students can see teacher assessments only if the release date has passed - $timenow = time(); - if (isteacher($workshop->course, $USER->id) or ($timenow > $workshop->releasegrades)) { + if ($assessments = workshop_get_assessments($submission)) { + switch ($type) { + case "teacher" : + if ($submission->teachergrade) { // if there's a final teacher's grade... + $str = "$submission->teachergrade "; + } foreach ($assessments as $assessment) { if (isteacher($workshop->course, $assessment->userid)) { - if ($type == 'all') { - $str .= workshop_fullname($assessment->userid, $workshop->course).': '; - } - $str .= "<a href=\"viewassessment.php?aid=$assessment->id\">" - . "[".number_format($assessment->grade *$workshop->grade / 100, 0)."]</a>"; - if (isteacher($workshop->course, $USER->id)) { - $str .= ' <a title="'.get_string('reassess', 'workshop'). - "\" href=\"assess.php?sid=$submission->id\"><img src=\"$CFG->pixpath/t/edit.gif\" ". - ' height="11" width="11" border="0" alt="'.get_string('reassess', 'workshop').'" /></a>'; - $str .= ' <a title="'.get_string('delete', 'workshop'). - "\" href=\"assessments.php?action=confirmdelete&amp;wid=$workshop->id&amp;aid=$assessment->id\"><img src=\"$CFG->pixpath/t/delete.gif\" ". - ' height="11" width="11" border="0" alt="'.get_string('delete', 'workshop').'" /></a><br />'; - } - } - } - } - } - if ($type == 'student' or $type == 'all') { - foreach ($assessments as $assessment) { - if (isstudent($workshop->course, $assessment->userid)) { - if ($type == 'all') { - $str .= workshop_fullname($assessment->userid, $workshop->course).': '; - } - $str .= "<a href=\"viewassessment.php?aid=$assessment->id\">"; - if ($workshop->agreeassessments and !$assessment->timeagreed and - isstudent($workshop->course, $submission->userid)) { // agreement on student work only - $str .= "&lt;&lt;".number_format($assessment->grade * $workshop->grade / 100, 0)." (". - number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0). - ")&gt;&gt;</a> "; - } elseif ($assessment->timegraded) { - if ($assessment->gradinggrade) { - $str .= "{".number_format($assessment->grade * $workshop->grade / 100, 0); - if ($assessment->teachergraded) { - $str .= " [".number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0). - "]}</a> "; - } else { - $str .= " (".number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0). - ")}</a> "; - } + + $str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">"; + if ($assessment->donotuse) { + $str .= "&lt;"; } else { - $str .= "&lt;".number_format($assessment->grade * $workshop->grade / 100, 0). - " (0)&gt;</a> "; + $str .= "["; + } + $str .= number_format($assessment->grade, 0); + if ($assessment->gradinggrade) { // funny, teacher is grading self! + $str .= "/".number_format($assessment->gradinggrade*100/COMMENTSCALE, 0)."%"; + } + if ($assessment->donotuse) { + $str .= "&gt;</A> "; + } else { + $str .= "]</A> "; } - } else { - $str .= "{".number_format($assessment->grade * $workshop->grade / 100, 0)."}</a> "; } - $str .= '<br />'; } - } + break; + case "student" : + if ($submission->peergrade) { // if there's a final peer grade... + $str = "$submission->peergrade "; + } + foreach ($assessments as $assessment) { + if (isstudent($workshop->course, $assessment->userid)) { + $str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">"; + if ($assessment->donotuse) { + $str .= "&lt;"; + } else { + $str .= "{"; + } + $str .= number_format($assessment->grade, 0); + if ($assessment->gradinggrade) { + $str .= "/".number_format($assessment->gradinggrade*100/COMMENTSCALE, 0)."%"; + } + if ($assessment->donotuse) { + $str .= "&gt;</A> "; + } else { + $str .= "}</A> "; + } + } + } + break; } } if (!$str) { @@ -2927,22 +2416,117 @@ function workshop_print_submission_assessments($workshop, $submission, $type) { function workshop_print_submission_title($workshop, $submission) { // Arguments are objects - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } + global $CFG; if (!$submission->timecreated) { // a "no submission" return $submission->title; + } + + $filearea = workshop_file_area_name($workshop, $submission); + if ($basedir = workshop_file_area($workshop, $submission)) { + if (list($file) = get_directory_list($basedir)) { + $icon = mimeinfo("icon", $file); + if ($CFG->slasharguments) { + $ffurl = "file.php/$filearea/$file"; + } else { + $ffurl = "file.php?file=/$filearea/$file"; + } + return "<IMG SRC=\"$CFG->pixpath/f/$icon\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"File\">". + "&nbsp;<A TARGET=\"uploadedfile$submission->id\" HREF=\"$CFG->wwwroot/$ffurl\">$submission->title</A>"; + } } - return "<a name=\"sid_$submission->id\" href=\"submissions.php?id=$cm->id&amp;action=showsubmission&amp;sid=$submission->id\">$submission->title</a>"; } +////////////////////////////////////////////////////////////////////////////////////// +function workshop_print_tabbed_heading($tabs) { +// Prints a tabbed heading where one of the tabs highlighted. +// $tabs is an object with several properties. +// $tabs->names is an array of tab names +// $tabs->urls is an array of links +// $tabs->align is an array of column alignments (defaults to "center") +// $tabs->size is an array of column sizes +// $tabs->wrap is an array of "nowrap"s or nothing +// $tabs->highlight is an index (zero based) of "active" heading . +// $tabs->width is an percentage of the page (defualts to 80%) +// $tabs->cellpadding padding on each cell (defaults to 5) + + global $CFG, $THEME; + + if (isset($tabs->names)) { + foreach ($tabs->names as $key => $name) { + if (!empty($tabs->urls[$key])) { + $url =$tabs->urls[$key]; + if ($tabs->highlight == $key) { + $tabcontents[$key] = "<b>$name</b>"; + } else { + $tabcontents[$key] = "<a class= \"dimmed\" href=\"$url\"><b>$name</b></a>"; + } + } else { + $tabcontents[$key] = "<b>$name</b>"; + } + } + } + + if (empty($tabs->width)) { + $tabs->width = "80%"; + } + + if (empty($tabs->cellpadding)) { + $tabs->cellpadding = "5"; + } + + // print_simple_box_start("center", "$table->width", "#ffffff", 0); + echo "<table width=\"$tabs-width\" border=\"0\" valign=\"top\" align=\"center\" "; + echo " cellpadding=\"$tabs->cellpadding\" cellspacing=\"0\" class=\"generaltable\">\n"; + + if (!empty($tabs->names)) { + echo "<tr>"; + echo "<td class=\"generaltablecell\">". + "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td>\n"; + foreach ($tabcontents as $key => $tab) { + if (isset($align[$key])) { + $alignment = "align=\"$align[$key]\""; + } else { + $alignment = "align=\"center\""; + } + if (isset($size[$key])) { + $width = "width=\"$size[$key]\""; + } else { + $width = ""; + } + if (isset($wrap[$key])) { + $wrapping = "no wrap"; + } else { + $wrapping = ""; + } + if ($key == $tabs->highlight) { + echo "<td valign=top class=\"generaltabselected\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading2\">$tab</td>\n"; + } else { + echo "<td valign=top class=\"generaltab\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading\">$tab</td>\n"; + } + echo "<td class=\"generaltablecell\">". + "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td>\n"; + } + echo "</tr>\n"; + } else { + echo "<tr><td>No names specified</td></tr>\n"; + } + // bottom stripe + $ncells = count($tabs->names)*2 +1; + $height = 2; + echo "<tr><td colspan=\"$ncells\" bgcolor=\"$THEME->cellheading2\">". + "<img height=\"$height\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\"></td></tr>\n"; + echo "</table>\n"; + // print_simple_box_end(); + + return true; +} function workshop_print_time_to_deadline($time) { if ($time < 0) { $timetext = get_string("afterdeadline", "workshop", format_time($time)); - return " (<font color=\"red\">$timetext</font>)"; + return " (<FONT COLOR=RED>$timetext</FONT>)"; } else { $timetext = get_string("beforedeadline", "workshop", format_time($time)); return " ($timetext)"; @@ -2952,7 +2536,7 @@ function workshop_print_time_to_deadline($time) { ////////////////////////////////////////////////////////////////////////////////////// function workshop_print_upload_form($workshop) { - global $CFG; +// Arguments are objects, needs title coming in if (! $course = get_record("course", "id", $workshop->course)) { error("Course is misconfigured"); @@ -2960,74 +2544,46 @@ function workshop_print_upload_form($workshop) { if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id)) { error("Course Module ID was incorrect"); } - $usehtmleditor = can_use_html_editor(); - echo "<div align=\"center\">"; - echo "<form enctype=\"multipart/form-data\" method=\"POST\" action=\"upload.php\">"; - echo " <input type=\"hidden\" name=\"id\" value=\"$cm->id\" />"; - echo "<table celpadding=\"5\" border=\"1\" align=\"center\">\n"; - // now get the submission - echo "<tr valign=\"top\"><td><b>". get_string("title", "workshop").":</b>\n"; - echo "<input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"\" />\n"; - echo "</td></tr><tr><td><b>".get_string("submission", "workshop").":</b><br />\n"; - print_textarea($usehtmleditor, 25,70, 630, 400, "description"); - use_html_editor("description"); - echo "</td></tr><tr><td>\n"; - if ($workshop->nattachments) { - require_once($CFG->dirroot.'/lib/uploadlib.php'); - for ($i=0; $i < $workshop->nattachments; $i++) { - $iplus1 = $i + 1; - $tag[$i] = get_string("attachment", "workshop")." $iplus1:"; - } - upload_print_form_fragment($workshop->nattachments,null,$tag,false,null,$course->maxbytes, - $workshop->maxbytes,false); - } - echo "</td></tr></table>\n"; - echo " <input type=\"submit\" name=\"save\" value=\"".get_string("submitassignment","workshop")."\" />"; - echo "</form>"; - echo "</div>"; + echo "<DIV ALIGN=CENTER>"; + echo "<FORM ENCTYPE=\"multipart/form-data\" METHOD=\"POST\" ACTION=upload.php>"; + echo " <INPUT TYPE=hidden NAME=MAX_FILE_SIZE value=\"$workshop->maxbytes\">"; + echo " <INPUT TYPE=hidden NAME=id VALUE=\"$cm->id\">"; + echo "<b>".get_string("title", "workshop")."</b>: <INPUT NAME=\"title\" TYPE=\"text\" SIZE=\"60\" MAXSIZE=\"100\"><BR><BR>\n"; + echo " <INPUT NAME=\"newfile\" TYPE=\"file\" size=\"50\">"; + echo " <INPUT TYPE=submit NAME=save VALUE=\"".get_string("uploadthisfile")."\">"; + echo "</FORM>"; + echo "</DIV>"; } ////////////////////////////////////////////////////////////////////////////////////// -function workshop_print_user_assessments($workshop, $user, &$gradinggrade) { +function workshop_print_user_assessments($workshop, $user) { // Returns the number of assessments and a hyperlinked list of grading grades for the assessments made by this user - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) { - error("Course Module ID was incorrect"); - } - $gradinggrade = 0; - $n = 0; - $str = ''; if ($assessments = workshop_get_user_assessments_done($workshop, $user)) { + $n = count($assessments); + $str = "$n ("; foreach ($assessments as $assessment) { - $gradinggrade += $assessment->gradinggrade; - $n++; - $str .= "<a href=\"viewassessment.php?aid=$assessment->id\">"; if ($assessment->timegraded) { - if ($assessment->gradinggrade) { - $str .= "{".number_format($assessment->grade * $workshop->grade / 100, 0); - if ($assessment->teachergraded) { - $str .= " [".number_format($assessment->gradinggrade * $workshop->gradinggrade / 100)."]}</a> "; - } else { - $str .= " (".number_format($assessment->gradinggrade * $workshop->gradinggrade / 100).")}</a> "; - } + $gradingscaled = intval($assessment->gradinggrade * $workshop->grade / COMMENTSCALE); + $str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">"; + $str .= "$gradingscaled</A> "; + } + else { + $str .= "<A HREF=\"assessments.php?action=viewassessment&a=$workshop->id&aid=$assessment->id\">"; + if ($assessment->donotuse) { + $str .= "&lt;".number_format($assessment->grade, 0)."&gt;</A> "; } else { - $str .= "&lt;".number_format($assessment->grade * $workshop->grade / 100, 0)." (0)&gt;</a> "; + $str .= number_format($assessment->grade, 0)."</A> "; } - } else { - $str .= "{".number_format($assessment->grade * $workshop->grade / 100, 0)." (-)}</a> "; } - $str .= '<br />'; } + $str .= ")"; } else { $str ="0"; } - if ($n = max($n, $workshop->ntassessments + $workshop->nsassessments)) { - $gradinggrade = number_format($gradinggrade/$n * $workshop->gradinggrade / 100, 1); - } - return $str; } @@ -3046,15 +2602,116 @@ function workshop_test_user_assessments($workshop, $user) { // ...the date stamp on the assessment should be in the past if ($assessment->timecreated < $timenow) { $n++; + } } } - } if ($n < min($workshop->ntassessments, workshop_count_teacher_submissions($workshop))) { $result = false; + } + } + return $result; + } + +function workshop_get_recent_mod_activity(&$activities, &$index, $sincetime, $courseid, + $workshop="0", $user="", $groupid="") { + // Returns all workshop posts since a given time. If workshop is specified then + // this restricts the results + + global $CFG; + + if ($workshop) { + $workshopselect = " AND cm.id = '$workshop'"; + } else { + $workshopselect = ""; + } + + if ($user) { + $userselect = " AND u.id = '$user'"; + } else { + $userselect = ""; + } + + $posts = get_records_sql("SELECT s.*, u.firstname, u.lastname, + u.picture, cm.instance, w.name, cm.section + FROM {$CFG->prefix}workshop_submissions s, + {$CFG->prefix}user u, + {$CFG->prefix}course_modules cm, + {$CFG->prefix}workshop w + WHERE s.timecreated > '$sincetime' $workshopselect + AND s.userid = u.id $userselect + AND w.course = '$courseid' $groupselect + AND cm.instance = w.id + AND cm.course = w.course + AND s.workshopid = w.id + ORDER BY s.id"); + + + if (empty($posts)) { + return; + } + + foreach ($posts as $post) { + + if (empty($groupid) || ismember($groupid, $post->userid)) { + $tmpactivity->type = "workshop"; + $tmpactivity->defaultindex = $index; + $tmpactivity->instance = $post->instance; + $tmpactivity->name = $post->name; + $tmpactivity->section = $post->section; + + $tmpactivity->content->id = $post->id; + $tmpactivity->content->title = $post->title; + + $tmpactivity->user->userid = $post->userid; + $tmpactivity->user->fullname = fullname($post); + $tmpactivity->user->picture = $post->picture; + + $tmpactivity->timestamp = $post->timecreated; + $activities[] = $tmpactivity; + + $index++; } } - return $result; + + return; } - + +function workshop_print_recent_mod_activity($activity, $course, $detail=false) { + + global $CFG; + + echo '<table border="0" cellpadding="3" cellspacing="0">'; + + if ($activity->content->parent) { + $openformat = "<font size=\"2\"><i>"; + $closeformat = "</i></font>"; + } else { + $openformat = "<b>"; + $closeformat = "</b>"; + } + + echo "<tr><td bgcolor=\"$THEME->cellcontent2\" class=\"workshoppostpicture\" width=\"35\" valign=\"top\">"; + print_user_picture($activity->user->userid, $course, $activity->user->picture); + echo "</td><td>$openformat"; + + if ($detail) { + echo "<img src=\"$CFG->modpixpath/$activity->type/icon.gif\" ". + "height=16 width=16 alt=\"$activity->name\"> "; + } + echo "<a href=\"$CFG->wwwroot/mod/workshop/view.php?" + . "#" . $activity->content->id . "\">".$activity->content->title; + + echo "</a>$closeformat"; + + echo "<br><font size=\"2\">"; + echo "<a href=\"$CFG->wwwroot/user/view.php?id=" . $activity->user->userid . "&course=" . "$course\">" + . $activity->user->fullname . "</a>"; + echo " - " . userdate($activity->timestamp) . "</font></td></tr>"; + echo "</table>"; + + return; + +} + ?> diff --git a/mod/workshop/mod.html b/mod/workshop/mod.html index 29739213374..cec406c85da 100644 --- a/mod/workshop/mod.html +++ b/mod/workshop/mod.html @@ -1,8 +1,5 @@ <?php - require_once("$CFG->dirroot/mod/workshop/lib.php"); // for parameter arrays - require_once("$CFG->dirroot/mod/workshop/locallib.php"); // for parameter arrays - - // ...and fill the form if needed + // ...and fill the form if needed if (empty($form->name)) { $form->name = ""; } @@ -12,39 +9,21 @@ if (empty($form->format)) { $form->format = ""; } - if (!isset($form->gradinggrade)) { - $form->gradinggrade = 100; - } if (!isset($form->grade)) { $form->grade = 100; } - if (!isset($form->gradingstrategy)) { - $form->gradingstrategy = 1; // default is accumulative - } if (!isset($form->nelements)) { $form->nelements = 1; } - if (!isset($form->nattachments)) { - $form->nattachments = 0; - } if (empty($form->resubmit)) { $form->resubmit = ""; } if (!isset($form->ntassessments)) { $form->ntassessments = 0; } - if (!isset($form->assessmentcomps)) { - $form->assessmentcomps = 2; - } if (!isset($form->nsassessments)) { $form->nsassessments = 0; } - if (!isset($form->teacherweight)) { - $form->teacherweight = 1; - } - if (!isset($form->overallocation)) { - $form->overallocation = 0; - } if (empty($form->includeself)) { $form->includeself = ""; } @@ -54,45 +33,24 @@ if (empty($form->hidegrades)) { $form->hidegrades = ""; } - if (empty($form->showleaguetable)) { - $form->showleaguetable = 0; - } - if (empty($form->anonymous)) { - $form->anonymous = 0; - } - if (empty($form->usepassword)) { - $form->usepassword = 0; - } if (empty($form->maxbytes)) { $form->maxbytes = ""; } - if (empty($form->submissionstart)) { - $form->submissionstart = time(); - } - if (empty($form->assessmentstart)) { - $form->assessmentstart = time(); - } - if (empty($form->submissionend)) { - $form->submissionend = time(); - } - if (empty($form->assessmentend)) { - $form->assessmentend = time(); - } - if (empty($form->releasegrades)) { - $form->releasegrades = time(); + if (empty($form->deadline)) { + $form->deadline = ""; } ?> <form name="form" method="post" action="mod.php"> -<table cellpadding="5"> -<tr valign="top"> - <td align="right"><b><?php print_string("title", "workshop") ?>:</b></td> +<table cellpadding=5> +<tr valign=top> + <td align=right><P><B><?php print_string("title", "workshop") ?>:</B></P></TD> <td> - <input type="text" name="name" size="60" value="<?php p($form->name) ?>" alt="<?php print_string("title", "workshop") ?>" /> + <input type="text" name="name" size=60 value="<?php p($form->name) ?>"> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("description", "workshop") ?>:</b><br /> +<tr valign=top> + <td align=right><p><b><?php print_string("description", "workshop") ?>:</b></p> <font size="1"> <?php helpbutton("writing", get_string("helpwriting"), "moodle", true, true); @@ -104,15 +62,14 @@ echo "<br />"; emoticonhelpbutton("form", "description", "moodle", true, true); echo "<br />"; - } + } ?> <br /> </font> - </td> <td> - <?php + <?php print_textarea($usehtmleditor, 20, 60, 595, 400, "description", $form->description); - + if ($usehtmleditor) { echo '<input type="hidden" name="format" value="'.FORMAT_HTML.'" />'; } else { @@ -123,48 +80,41 @@ if (!$form->format) { $form->format = $defaultformat; } - choose_from_menu(format_text_menu(), "format", $form->format, ""); + choose_from_menu(format_text_menu(), "format", $form->format, ""); echo '</p>'; } ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("gradeforassessments", "workshop") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("maximumgrade") ?>:</B></P></TD> <td> <?php for ($i=100; $i>=0; $i--) { $grades[$i] = $i; } - choose_from_menu($grades, "gradinggrade", "$form->gradinggrade", ""); - helpbutton("gradinggrade", get_string("gradeforassessments", "workshop"), "workshop"); - ?> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("gradeforsubmission", "workshop") ?>:</b></td> - <td> - <?php choose_from_menu($grades, "grade", "$form->grade", ""); - helpbutton("grade", get_string("gradeforsubmission", "workshop"), "workshop"); ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("gradingstrategy", "workshop") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("gradingstrategy", "workshop") ?>:</B></P></TD> <td> - <?php + <?PHP + require("$CFG->dirroot/mod/workshop/lib.php"); + if (!isset($form->gradingstrategy)) { + $form->gradingstrategy = 1; // default + } choose_from_menu($WORKSHOP_TYPE, "gradingstrategy", $form->gradingstrategy, ""); helpbutton("gradingstrategy", get_string("gradingstrategy", "workshop"), "workshop"); ?> </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("numberofassessmentelements", "workshop") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("numberofassessmentelements", "workshop") ?>:</B></P></TD> <td valign="middle"> <?php for ($i=20; $i>=0; $i--) { @@ -176,24 +126,10 @@ </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("numberofattachments", "workshop") ?>:</b></td> - <td valign="middle"> - <?php - unset($numbers); - for ($i=5; $i>=0; $i--) { - $numbers[$i] = $i; - } - choose_from_menu($numbers, "nattachments", "$form->nattachments", ""); - helpbutton("nattachments", get_string("numberofattachments", "workshop"), "workshop"); - ?> - </td> -</tr> - <tr> - <td align="right"><b><?php print_string("allowresubmit", "workshop") ?>:</b></td> + <td align=right><P><B><?php print_string("allowresubmit", "workshop") ?>:</B></P></TD> <td> - <?php + <?PHP $options[0] = get_string("no"); $options[1] = get_string("yes"); choose_from_menu($options, "resubmit", $form->resubmit, ""); helpbutton("resubmit", get_string("allowresubmit", "workshop"), "workshop"); @@ -201,80 +137,36 @@ </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("numberofassessmentsofteachersexamples", "workshop") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("numberofassessmentsofteachersexamples", "workshop") ?>:</B></P></TD> <td> - <?php - unset($numbers); - for ($i=20; $i>=0; $i--) { - $numbers[$i] = $i; - } - choose_from_menu($numbers, "ntassessments", $form->ntassessments, ""); + <?PHP + for ($i=20; $i>=0; $i--) { + $numbers[$i] = $i; + } + choose_from_menu($numbers, "ntassessments", $form->ntassessments, ""); helpbutton("nassessmentsofteachersexamples", get_string("numberofassessmentsofteachersexamples", "workshop"), "workshop"); - ?> + ?> </td> </tr> -<tr> - <td align="right"><b><?php print_string("comparisonofassessments", "workshop") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("numberofassessmentsofstudentsubmissions", "workshop") ?>:</B></P></TD> <td> - <?php - // set up comparison names - foreach ($WORKSHOP_ASSESSMENT_COMPS as $KEY => $COMPARISON) { - $COMPARISONS[] = $COMPARISON['name']; - } - choose_from_menu($COMPARISONS, "assessmentcomps", $form->assessmentcomps, ""); - helpbutton("comparisonofassessments", get_string("comparisonofassessments", "workshop"), "workshop"); - ?> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("numberofassessmentsofstudentsubmissions", "workshop") ?>:</b></td> - <td> - <?php - unset($numbers); - for ($i=20; $i>=0; $i--) { - $numbers[$i] = $i; - } - choose_from_menu($numbers, "nsassessments", $form->nsassessments, ""); + <?PHP + for ($i=20; $i>=0; $i--) { + $numbers[$i] = $i; + } + choose_from_menu($numbers, "nsassessments", $form->nsassessments, ""); helpbutton("nassessmentsofstudentsubmissions", get_string("numberofassessmentsofstudentsubmissions", "workshop"), "workshop"); - ?> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("weightforteacherassessments", "workshop") ?>:</b></td> - <td> - <?php - unset($numbers); - for ($i=10; $i>=0; $i--) { - $numbers[$i] = $i; - } - choose_from_menu($numbers, "teacherweight", $form->teacherweight, ""); - helpbutton("teacherweight", get_string("weightforteacherassessments", "workshop"), "workshop"); - ?> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("overallocation", "workshop") ?>:</b></td> - <td> - <?php - unset($numbers); - for ($i=2; $i>=0; $i--) { - $numbers[$i] = $i; - } - choose_from_menu($numbers, "overallocation", "$form->overallocation", ""); - helpbutton("overallocation", get_string("overallocation", "workshop"), "workshop"); - ?> + ?> </td> </tr> <tr> - <td align="right"><b><?php print_string("selfassessment", "workshop") ?>:</b></td> + <td align=right><P><B><?php print_string("selfassessment", "workshop") ?>:</B></P></TD> <td> - <?php + <?PHP $options[0] = get_string("no"); $options[1] = get_string("yes"); choose_from_menu($options, "includeself", $form->includeself, ""); helpbutton("selfassessment", get_string("selfassessment", "workshop"), "workshop"); @@ -283,9 +175,10 @@ </tr> <tr> - <td align="right"><b><?php print_string("assessmentsmustbeagreed", "workshop") ?>:</b></td> + <td align=right><P><B><?php print_string("assessmentsmustbeagreed", "workshop") ?>:</B></P></TD> <td> - <?php + <?PHP + $options[0] = get_string("no"); $options[1] = get_string("yes"); choose_from_menu($options, "agreeassessments", $form->agreeassessments, ""); helpbutton("agreeassessments", get_string("assessmentsmustbeagreed", "workshop"), "workshop"); ?> @@ -293,62 +186,18 @@ </tr> <tr> - <td align="right"><b><?php print_string("hidegradesbeforeagreement", "workshop") ?>:</b></td> + <td align=right><P><B><?php print_string("hidegradesbeforeagreement", "workshop") ?>:</B></P></TD> <td> - <?php + <?PHP + $options[0] = get_string("no"); $options[1] = get_string("yes"); choose_from_menu($options, "hidegrades", $form->hidegrades, ""); helpbutton("showinggrades", get_string("hidegradesbeforeagreement", "workshop"), "workshop"); ?> </td> </tr> -<tr> - <td align="right"><b><?php print_string("leaguetable", "workshop"); ?>:</b></td> - <td> - <?php - unset($numbers); - $numbers[22] = '100'; - $numbers[21] = 50; - for ($i=20; $i>=0; $i--) { - $numbers[$i] = $i; - } - choose_from_menu($numbers, "showleaguetable", $form->showleaguetable, ""); - helpbutton("leaguetable", get_string("showleaguetable", "workshop"), "workshop"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("hidenamesfromstudents", "workshop", $course->students) ?>:</b></td> - <td> - <?php - choose_from_menu($options, "anonymous", $form->anonymous, ""); - helpbutton("anonymous", get_string("hidenamesfromstudents", "workshop", $course->students), "workshop"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("usepassword", "workshop"); ?>:</b></td> - <td> - <?php - $options[0] = get_string("no"); $options[1] = get_string("yes"); - choose_from_menu($options, "usepassword", $form->usepassword, ""); - helpbutton("usepassword", get_string("usepassword", "workshop"), "workshop"); - ?> - </td> -</tr> - -<tr> - <td align="right"><b><?php print_string("password"); ?>:</b></td> - <td> - <input type="text" name="password" size="10" value="" alt="<?php print_string("password"); ?>" /> <?php echo " (".get_string("leavetokeep").")"; ?> - <?php helpbutton("password", get_string("password"), "workshop"); ?> - </td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("maximumsize", "workshop") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("maximumsize", "workshop") ?>:</B></P></TD> <td> <?php $sizelist = array("10Kb", "50Kb", "100Kb", "500Kb", "1Mb", "2Mb", "5Mb", "10Mb", "20Mb", "50Mb"); @@ -373,69 +222,29 @@ </td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("submissionstart", "workshop") ?>:</b></td> +<tr valign=top> + <td align=right><P><B><?php print_string("deadline", "workshop") ?>:</B></td> <td><?php - print_date_selector("submissionstartday", "submissionstartmonth", "submissionstartyear", $form->submissionstart); - echo "&nbsp;-&nbsp;"; - print_time_selector("submissionstarthour", "submissionstartminute", $form->submissionstart); - helpbutton("submissionstart", get_string("submissionstart", "workshop"), "workshop"); + print_date_selector("deadlineday", "deadlinemonth", "deadlineyear", $form->deadline); + echo "&nbsp;-&nbsp;"; + print_time_selector("deadlinehour", "deadlineminute", $form->deadline); ?></td> </tr> -<tr valign="top"> - <td align="right"><b><?php print_string("assessmentstart", "workshop") ?>:</b></td> - <td><?php - print_date_selector("assessmentstartday", "assessmentstartmonth", "assessmentstartyear", $form->assessmentstart); - echo "&nbsp;-&nbsp;"; - print_time_selector("assessmentstarthour", "assessmentstartminute", $form->assessmentstart); - helpbutton("assessmentstart", get_string("assessmentstart", "workshop"), "workshop"); - ?></td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("submissionend", "workshop") ?>:</b></td> - <td><?php - print_date_selector("submissionendday", "submissionendmonth", "submissionendyear", $form->submissionend); - echo "&nbsp;-&nbsp;"; - print_time_selector("submissionendhour", "submissionendminute", $form->submissionend); - helpbutton("submissionend", get_string("submissionend", "workshop"), "workshop"); - ?></td> -</tr> - -<tr valign="top"> - <td align="right"><b><?php print_string("assessmentend", "workshop") ?>:</b></td> - <td><?php - print_date_selector("assessmentendday", "assessmentendmonth", "assessmentendyear", $form->assessmentend); - echo "&nbsp;-&nbsp;"; - print_time_selector("assessmentendhour", "assessmentendminute", $form->assessmentend); - helpbutton("assessmentend", get_string("assessmentend", "workshop"), "workshop"); - ?></td> -</tr> -<tr valign="top"> - <td align="right"><b><?php print_string("releaseteachergrades", "workshop") ?>:</b></td> - <td><?php - print_date_selector("releaseday", "releasemonth", "releaseyear", $form->releasegrades); - echo "&nbsp;-&nbsp;"; - print_time_selector("releasehour", "releaseminute", $form->releasegrades); - helpbutton("releasegrades", get_string("releaseteachergrades", "workshop"), "workshop"); - ?></td> -</tr> -<?php print_standard_coursemodule_settings($form); ?> </table> -<br /> -<center> -<input type="hidden" name="course" value="<?php p($form->course) ?>" /> -<input type="hidden" name="sesskey" value="<?php p($form->sesskey) ?>" /> -<input type="hidden" name="coursemodule" value="<?php p($form->coursemodule) ?>" /> -<input type="hidden" name="section" value="<?php p($form->section) ?>" /> -<input type="hidden" name="module" value="<?php p($form->module) ?>" /> -<input type="hidden" name="modulename" value="<?php p($form->modulename) ?>" /> -<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> -<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> -<input type="submit" value="<?php print_string("savechanges") ?>" /> -<input type="submit" name="cancel" value="<?php print_string("cancel") ?>" /> +<BR> +<CENTER> +<input type="hidden" name=course value="<?php p($form->course) ?>"> +<input type="hidden" name=coursemodule value="<?php p($form->coursemodule) ?>"> +<input type="hidden" name=section value="<?php p($form->section) ?>"> +<input type="hidden" name=module value="<?php p($form->module) ?>"> +<input type="hidden" name=modulename value="<?php p($form->modulename) ?>"> +<input type="hidden" name=instance value="<?php p($form->instance) ?>"> +<input type="hidden" name=mode value="<?php p($form->mode) ?>"> +<input type="submit" value="<?php print_string("savechanges") ?>"> +<input type="submit" name=cancel value="<?php print_string("cancel") ?>"> +<p> +<p><?PHP notify(get_string("noteonassessmentelements", "workshop")); ?> - -</center> -</form> +</CENTER> +</FORM> diff --git a/mod/workshop/restorelib.php b/mod/workshop/restorelib.php index b8494dcc722..f94cf7634cd 100644 --- a/mod/workshop/restorelib.php +++ b/mod/workshop/restorelib.php @@ -1,4 +1,4 @@ -<?php //$Id$ +<?PHP //$Id$ //This php script contains all the stuff to backup/restore //workshop mods @@ -16,15 +16,15 @@ // | workshop_submissions // | (UL,pk->id,fk->workshopid,files) // | | - // | |-------------------------------------| |----------------------| | - // | | | | | | - // workshop_elements workshop_grades workshop_assessments - // (CL,pk->id,fk->workshopid) (UL,pk->id,fk->assessmentid) (UL,pk->id,fk->submissionid) - // | | ( fk->elementno ) | - // | | | - // | | | - // workshop_rubrics workshop_stockcomments workshop_comments - // (CL,pk->id,fk->elementno) (CL, pk->id, fk->elementno) (UL,pk->id,fk->assessmentid) + // | |---------------------------| |--------------------------------| | + // | | | | | | + // workshop_elements workshop_grades workshop_assessments + // (CL,pk->id,fk->workshopid) (UL,pk->id,fk->assessmentid) (UL,pk->id,fk->submissionid) + // | ( fk->elementno ) | + // | | + // | | + // workshop_rubrics workshop_comments + // (CL,pk->id,fk->elementno) (UL,pk->id,fk->assessmentid) // // Meaning: pk->primary key field of the table // fk->foreign key to link with parent @@ -56,9 +56,7 @@ $workshop->course = $restore->course_id; $workshop->name = backup_todb($info['MOD']['#']['NAME']['0']['#']); $workshop->description = backup_todb($info['MOD']['#']['DESCRIPTION']['0']['#']); - $workshop->wtype = backup_todb($info['MOD']['#']['WTYPE']['0']['#']); $workshop->nelements = backup_todb($info['MOD']['#']['NELEMENTS']['0']['#']); - $workshop->nattachments = backup_todb($info['MOD']['#']['NATTACHMENTS']['0']['#']); $workshop->phase = backup_todb($info['MOD']['#']['PHASE']['0']['#']); $workshop->format = backup_todb($info['MOD']['#']['FORMAT']['0']['#']); $workshop->gradingstrategy = backup_todb($info['MOD']['#']['GRADINGSTRATEGY']['0']['#']); @@ -68,77 +66,28 @@ $workshop->anonymous = backup_todb($info['MOD']['#']['ANONYMOUS']['0']['#']); $workshop->includeself = backup_todb($info['MOD']['#']['INCLUDESELF']['0']['#']); $workshop->maxbytes = backup_todb($info['MOD']['#']['MAXBYTES']['0']['#']); - $workshop->submissionstart = backup_todb($info['MOD']['#']['SUBMISSIONSTART']['0']['#']); - $workshop->assessmentstart = backup_todb($info['MOD']['#']['ASSESSMENTSTART']['0']['#']); $workshop->deadline = backup_todb($info['MOD']['#']['DEADLINE']['0']['#']); - $workshop->submissionend = backup_todb($info['MOD']['#']['SUBMISSIONEND']['0']['#']); - $workshop->assessmentend = backup_todb($info['MOD']['#']['ASSESSMENTEND']['0']['#']); - $workshop->releasegrades = backup_todb($info['MOD']['#']['RELEASEGRADES']['0']['#']); $workshop->grade = backup_todb($info['MOD']['#']['GRADE']['0']['#']); - $workshop->gradinggrade = backup_todb($info['MOD']['#']['GRADINGGRADE']['0']['#']); $workshop->ntassessments = backup_todb($info['MOD']['#']['NTASSESSMENTS']['0']['#']); - $workshop->assessmentcomps = backup_todb($info['MOD']['#']['ASSESSMENTCOMPS']['0']['#']); $workshop->nsassessments = backup_todb($info['MOD']['#']['NSASSESSMENTS']['0']['#']); $workshop->overallocation = backup_todb($info['MOD']['#']['OVERALLOCATION']['0']['#']); $workshop->timemodified = backup_todb($info['MOD']['#']['TIMEMODIFIED']['0']['#']); + $workshop->mergegrades = backup_todb($info['MOD']['#']['MERGEGRADES']['0']['#']); $workshop->teacherweight = backup_todb($info['MOD']['#']['TEACHERWEIGHT']['0']['#']); + $workshop->peerweight = backup_todb($info['MOD']['#']['PEERWEIGHT']['0']['#']); + $workshop->includeteachersgrade = backup_todb($info['MOD']['#']['INCLUDETEACHERSGRADE']['0']['#']); + $workshop->biasweight = backup_todb($info['MOD']['#']['BIASWEIGHT']['0']['#']); + $workshop->reliabilityweight = backup_todb($info['MOD']['#']['RELIABILITYWEIGHT']['0']['#']); + $workshop->gradingweight = backup_todb($info['MOD']['#']['GRADINGWEIGHT']['0']['#']); $workshop->showleaguetable = backup_todb($info['MOD']['#']['SHOWLEAGUETABLE']['0']['#']); - $workshop->usepassword = backup_todb($info['MOD']['#']['USEPASSWORD']['0']['#']); - $workshop->password = backup_todb($info['MOD']['#']['PASSWORD']['0']['#']); - - //If we have retrieved workshop->phase, it's a pre 1.5 backup, so we have to do - //some conversions before inserting to DB. Upwards compatibility :-) - if ( isset($info['MOD']['#']['PHASE']['0']['#'])) { //It's a pre-15 backup file - - //Adjust the wtype field (mimetised from the upgrade script) - $workshop->wtype = 0; - if ($workshop->includeself || $workshop->ntassessments) { - $workshop->wtype = 1; // 3 phases with grading grades - } else if ($workshop->nsassessments) { - $workshop->wtype = 2; // 5 phases with grading grades - } - - //Now, adjust phases time limits (mimetised from the upgrade script too) - $early = 0; - $late = 0; - $now = time(); - if ($now < $workshop->deadline) { - $late = $workshop->deadline; - } else { - $early = $workshop->deadline; - } - if ($workshop->phase > 1) { - $workshop->submissionstart = $early; - } else { - $workshop->submissionstart = $late; - } - if ($workshop->phase > 2) { - $workshop->assessmentstart = $early; - } else { - $workshop->assessmentstart = $late; - } - if ($workshop->phase > 3) { - $workshop->submissionend = $early; - } else { - $workshop->submissionend = $late; - } - if ($workshop->phase > 4) { - $workshop->assessmentend = $early; - } else { - $workshop->assessmentend = $late; - } - if ($workshop->phase > 5) { - $workshop->releasegrades = $now; - } else { - $workshop->releasegrades = $now + (4 * 7 * 24 * 60 * 60); //Grades will be available in 4 weeks - } - } + $workshop->teacherloading = backup_todb($info['MOD']['#']['TEACHERLOADING']['0']['#']); + $workshop->assessmentstodrop = backup_todb($info['MOD']['#']['ASSESSMENTSTODROP']['0']['#']); //The structure is equal to the db, so insert the workshop $newid = insert_record ("workshop",$workshop); //Do some output - echo "<li>".get_string("modulename","workshop")." \"".format_string(stripslashes($workshop->name),true)."\"</li>"; + echo "<ul><li>".get_string("modulename","workshop")." \"".$workshop->name."\"<br>"; backup_flush(300); if ($newid) { @@ -155,6 +104,10 @@ } else { $status = false; } + + //Finalize ul + echo "</ul>"; + } else { $status = false; } @@ -186,8 +139,6 @@ $element->scale = backup_todb($ele_info['#']['SCALE']['0']['#']); $element->maxscore = backup_todb($ele_info['#']['MAXSCORE']['0']['#']); $element->weight = backup_todb($ele_info['#']['WEIGHT']['0']['#']); - $element->stddev = backup_todb($ele_info['#']['STDDEV']['0']['#']); - $element->totalassessments = backup_todb($ele_info['#']['TOTALASSESSMENTS']['0']['#']); //The structure is equal to the db, so insert the workshop_elements $newid = insert_record ("workshop_elements",$element); @@ -196,7 +147,7 @@ if (($i+1) % 10 == 0) { echo "."; if (($i+1) % 200 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -204,8 +155,6 @@ if ($newid) { //We have to restore the workshop_rubrics table now (course level table) $status = workshop_rubrics_restore_mods($workshop_id,$element->elementno,$ele_info,$restore); - //We have to restore the workshop_stockcomment table now (course level table) - $status = workshop_stockcomments_restore_mods($workshop_id,$element->elementno,$ele_info,$restore); } else { $status = false; } @@ -246,7 +195,7 @@ if (($i+1) % 10 == 0) { echo "."; if (($i+1) % 200 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -260,50 +209,6 @@ } - //This function restores the workshop_stockcomments - function workshop_stockcomments_restore_mods($new_workshop_id, $elementno, $info, $restore) { - - global $CFG; - - $status = true; - - //Get the stockcomments array (optional) - if (isset($info['#']['STOCKCOMMENTS']['0']['#']['STOCKCOMMENT'])) { - $stockcomments = $info['#']['STOCKCOMMENTS']['0']['#']['STOCKCOMMENT']; - - //Iterate over stock comments - for($i = 0; $i < sizeof($stockcomments); $i++) { - $com_info = $stockcomments[$i]; - //traverse_xmlize($com_info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - - //Now, build the WORKSHOP_STOCKCOMMENTS record structure - $stockcomment->workshopid = $new_workshop_id; - $stockcomment->elementno = $elementno; - $stockcomment->comments = backup_todb($com_info['#']['COMMENT_TEXT']['0']['#']); - - //The structure is equal to the db, so insert the workshop_comment - $newid = insert_record ("workshop_stockcomments",$stockcomment); - - //Do some output - if (($i+1) % 50 == 0) { - echo "."; - if (($i+1) % 1000 == 0) { - echo "<br />"; - } - backup_flush(300); - } - - if (!$newid) { - $status = false; - } - } - } - - return $status; - } - //This function restores the workshop_submissions function workshop_submissions_restore_mods($old_workshop_id, $new_workshop_id,$info,$restore) { @@ -331,11 +236,12 @@ $submission->title = backup_todb($sub_info['#']['TITLE']['0']['#']); $submission->timecreated = backup_todb($sub_info['#']['TIMECREATED']['0']['#']); $submission->mailed = backup_todb($sub_info['#']['MAILED']['0']['#']); - $submission->description = backup_todb($sub_info['#']['DESCRIPTION']['0']['#']); + $submission->teachergrade = backup_todb($sub_info['#']['TEACHERGRADE']['0']['#']); + $submission->peergrade = backup_todb($sub_info['#']['PEERGRADE']['0']['#']); + $submission->biasgrade = backup_todb($sub_info['#']['BIASGRADE']['0']['#']); + $submission->reliabilitygrade = backup_todb($sub_info['#']['RELIABILITYGRADE']['0']['#']); $submission->gradinggrade = backup_todb($sub_info['#']['GRADINGGRADE']['0']['#']); $submission->finalgrade = backup_todb($sub_info['#']['FINALGRADE']['0']['#']); - $submission->late = backup_todb($sub_info['#']['LATE']['0']['#']); - $submission->nassessments = backup_todb($sub_info['#']['NASSESSMENTS']['0']['#']); //We have to recode the userid field $user = backup_getid($restore->backup_unique_code,"user",$olduserid); @@ -350,7 +256,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -424,7 +330,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -493,7 +399,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -539,7 +445,7 @@ if (($i+1) % 50 == 0) { echo "."; if (($i+1) % 1000 == 0) { - echo "<br />"; + echo "<br>"; } backup_flush(300); } @@ -605,46 +511,6 @@ return $status; } - //This function converts texts in FORMAT_WIKI to FORMAT_MARKDOWN for - //some texts in the module - function workshop_restore_wiki2markdown ($restore) { - - global $CFG; - - $status = true; - - //Convert workshop->description - if ($records = get_records_sql ("SELECT w.id, w.description, w.format - FROM {$CFG->prefix}workshop w, - {$CFG->prefix}backup_ids b - WHERE w.course = $restore->course_id AND - format = ".FORMAT_WIKI. " AND - b.backup_code = $restore->backup_unique_code AND - b.table_name = 'workshop' AND - b.new_id = w.id")) { - foreach ($records as $record) { - //Rebuild wiki links - $record->description = restore_decode_wiki_content($record->description, $restore); - //Convert to Markdown - $wtm = new WikiToMarkdown(); - $record->description = $wtm->convert($record->description, $restore->course_id); - $record->format = FORMAT_MARKDOWN; - $status = update_record('workshop', addslashes_object($record)); - //Do some output - $i++; - if (($i+1) % 1 == 0) { - echo "."; - if (($i+1) % 20 == 0) { - echo "<br />"; - } - backup_flush(300); - } - } - - } - return $status; - } - //This function returns a log record with all the necessay transformations //done. It's used by restore_log_module() to restore modules log. function workshop_restore_logs($restore,$log) { @@ -805,7 +671,7 @@ //Get the new_id of the workshop assessments $ass = backup_getid($restore->backup_unique_code,"workshop_assessments",$log->info); if ($ass) { - $log->url = "assessments.php?action=viewassessment&amp;id=".$log->cmid."&amp;aid=".$ass->new_id; + $log->url = "assessments.php?action=viewassessment&id=".$log->cmid."&aid=".$ass->new_id; $log->info = $ass->new_id; $status = true; } @@ -816,14 +682,14 @@ //Get the new_id of the workshop assessments $ass = backup_getid($restore->backup_unique_code,"workshop_assessments",$log->info); if ($ass) { - $log->url = "assessments.php?action=viewassessment&amp;id=".$log->cmid."&amp;aid=".$ass->new_id; + $log->url = "assessments.php?action=viewassessment&id=".$log->cmid."&aid=".$ass->new_id; $log->info = $ass->new_id; $status = true; } } break; default: - echo "action (".$log->module."-".$log->action.") unknow. Not restored<br />"; //Debug + echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>"; //Debug break; } diff --git a/mod/workshop/submissions.php b/mod/workshop/submissions.php index ac741cc1299..d616e547459 100644 --- a/mod/workshop/submissions.php +++ b/mod/workshop/submissions.php @@ -1,19 +1,22 @@ -<?php // $Id: lib.php,v 1.1 22 Aug 2003 +<?PHP // $Id: lib.php,v 1.1 22 Aug 2003 /************************************************* ACTIONS handled are: - adminamendtitle - confirmdelete - delete + adminconfirmdelete + admindelete adminlist - editsubmission + analysisofassessments + calculatefinalgrades + displayfinalgrades (teachers only) + displayfinalweights listallsubmissions listforassessmentstudent listforassessmentteacher - showsubmission - updatesubmission - + updateoverallocation + userconfirmdelete + userdelete + ************************************************/ @@ -21,127 +24,115 @@ require("lib.php"); require("locallib.php"); - require_variable($id); // Course Module ID - - $timenow = time(); + optional_variable($id); // Course Module ID + optional_variable($a); // workshop ID // get some useful stuff... - if (! $cm = get_record("course_modules", "id", $id)) { - error("Course Module ID was incorrect"); - } - if (! $course = get_record("course", "id", $cm->course)) { - error("Course is misconfigured"); - } - if (! $workshop = get_record("workshop", "id", $cm->instance)) { - error("Course module is incorrect"); + if ($id) { + if (! $cm = get_record("course_modules", "id", $id)) { + error("Course Module ID was incorrect"); + } + + if (! $course = get_record("course", "id", $cm->course)) { + error("Course is misconfigured"); + } + + if (! $workshop = get_record("workshop", "id", $cm->instance)) { + error("Course module is incorrect"); + } + + } else { + if (! $workshop = get_record("workshop", "id", $a)) { + error("Course module is incorrect"); + } + if (! $course = get_record("course", "id", $workshop->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id)) { + error("Course Module ID was incorrect"); + } } - require_login($course->id, false, $cm); + require_login($course->id); $strworkshops = get_string("modulenameplural", "workshop"); $strworkshop = get_string("modulename", "workshop"); $strsubmissions = get_string("submissions", "workshop"); // ... print the header and... - print_header_simple(format_string($workshop->name), "", - "<a href=\"index.php?id=$course->id\">$strworkshops</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($workshop->name,true)."</a> -> $strsubmissions", + print_header_simple("$workshop->name", "", + "<A HREF=index.php?id=$course->id>$strworkshops</A> -> + <A HREF=\"view.php?a=$workshop->id\">$workshop->name</A> -> $strsubmissions", "", "", true); //...get the action or set up an suitable default optional_variable($action); if (empty($action)) { $action = "listallsubmissions"; - } + } -/******************* admin amend title ************************************/ - elseif ($action == 'adminamendtitle' ) { + /******************* admin amend title ************************************/ + if ($action == 'adminamendtitle' ) { if (!isteacher($course->id)) { error("Only teachers can look at this page"); - } + } if (empty($_GET['sid'])) { error("Admin Amend Title: submission id missing"); - } - + } + $submission = get_record("workshop_submissions", "id", $_GET['sid']); print_heading(get_string("amendtitle", "workshop")); ?> <form name="amendtitleform" action="submissions.php" method="post"> - <input type="hidden" name="action" value="adminupdatetitle" /> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="sid" value="<?php echo $_REQUEST['sid'] ?>" /> + <input type="hidden" name="action" value="adminupdatetitle"> + <input type="hidden" name="id" value="<?PHP echo $cm->id ?>"> + <input type="hidden" name="sid" value="<?PHP echo $_REQUEST['sid'] ?>"> <center> - <table cellpadding="5" border="1"> - <?php + <table celpadding="5" border="1"> + <?PHP // now get the comment echo "<tr valign=\"top\">\n"; - echo " <td align=\"right\"><p><b>". get_string("title", "workshop").":</b></p></td>\n"; + echo " <td align=\"right\"><P><B>". get_string("title", "workshop").":</b></p></td>\n"; echo " <td>\n"; - echo " <input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"$submission->title\" />\n"; + echo " <input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"$submission->title\">\n"; echo " </td></tr></table>\n"; - echo "<input type=\"submit\" value=\"".get_string("amendtitle", "workshop")."\" />\n"; + echo "<input type=submit VALUE=\"".get_string("amendtitle", "workshop")."\">\n"; echo "</center></form>\n"; - print_heading("<a target=\"{$CFG->framename}\" href=\"view.php?id=$cm->id#sid=$submission->id\">".get_string("cancel")."</a>"); - } + } + - - /******************* admin clear late (flag) ************************************/ - elseif ($action == 'adminclearlate' ) { + /******************* admin confirm delete ************************************/ + elseif ($action == 'adminconfirmdelete' ) { if (!isteacher($course->id)) { error("Only teachers can look at this page"); - } - if (empty($_GET['sid'])) { - error("Admin clear late flag: submission id missing"); - } - - if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) { - error("Admin clear late flag: can not get submission record"); - } - if (set_field("workshop_submissions", "late", 0, "id", $_GET['sid'])) { - print_heading(get_string("clearlateflag", "workshop")." ".get_string("ok")); - } - - add_to_log($course->id, "workshop", "late flag cleared", "view.php?id=$cm->id", "submission $submission->id"); - - redirect("view.php?id=$cm->id"); - } - - - /******************* confirm delete ************************************/ - elseif ($action == 'confirmdelete' ) { - - if (empty($_GET['sid'])) { - error("Confirm delete: submission id missing"); } - $sid = $_GET['sid']; - notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("submission", "workshop")), - "submissions.php?action=delete&amp;id=$cm->id&amp;sid=$sid", "view.php?id=$cm->id#sid=$sid"); - } - - - /******************* delete ************************************/ - elseif ($action == 'delete' ) { - if (empty($_GET['sid'])) { - error("Delete: submission id missing"); + error("Admin confirm delete: submission id missing"); + } + + notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("submission", "workshop")), + "submissions.php?action=admindelete&id=$cm->id&sid=$_GET[sid]", "submissions.php?id=$cm->id&action=adminlist"); } + + /******************* admin delete ************************************/ + elseif ($action == 'admindelete' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + if (empty($_GET['sid'])) { + error("Admin delete: submission id missing"); + } + if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) { error("Admin delete: can not get submission record"); - } - - // students are only allowed to delete their own submission and only up to the deadline - if (!(isteacher($course->id) or - (($USER->id = $submission->userid) and ($timenow < $workshop->submissionend) - and (($timenow < $workshop->assessmentstart) or ($timenow < $submission->timecreated + $CFG->maxeditingtime))))) { - error("You are not authorized to delete this submission"); - } - + } print_string("deleting", "workshop"); // first get any assessments... if ($assessments = workshop_get_assessments($submission, 'ALL')) { @@ -150,158 +141,1180 @@ delete_records("workshop_comments", "assessmentid", $assessment->id); delete_records("workshop_grades", "assessmentid", $assessment->id); echo "."; - } + } // ...now delete the assessments... delete_records("workshop_assessments", "submissionid", $submission->id); - } + } // ...and the submission record... delete_records("workshop_submissions", "id", $submission->id); // ..and finally the submitted file workshop_delete_submitted_files($workshop, $submission); - - redirect("view.php?id=$cm->id"); - } - - - /******************* admin (confirm) late flag ************************************/ - elseif ($action == 'adminlateflag' ) { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); + + print_continue("submissions.php?id=$cm->id&action=adminlist"); } - if (empty($_GET['sid'])) { - error("Admin confirm late flag: submission id missing"); - } - if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) { - error("Admin confirm late flag: can not get submission record"); - } - - notice_yesno(get_string("clearlateflag","workshop")."?", - "submissions.php?action=adminclearlate&amp;id=$cm->id&amp;sid=$_GET[sid]", - "view.php?id=$cm->id"); - } - + /******************* list all submissions ************************************/ elseif ($action == 'adminlist' ) { if (!isteacher($course->id)) { error("Only teachers can look at this page"); - } + } if (empty($_GET['order'])) { $order = "name"; - } + } else { $order = $_GET['order']; - } - + } + workshop_list_submissions_for_admin($workshop, $order); print_continue("view.php?id=$cm->id"); - - } - + + } + /******************* admin update title ************************************/ elseif ($action == 'adminupdatetitle' ) { if (!isteacher($course->id)) { error("Only teachers can look at this page"); - } + } if (empty($_POST['sid'])) { error("Admin Update Title: submission id missing"); - } - + } + if (set_field("workshop_submissions", "title", $_POST['title'], "id", $_POST['sid'])) { print_heading(get_string("amendtitle", "workshop")." ".get_string("ok")); + } + print_continue("submissions.php?id=$cm->id&action=adminlist"); } - print_continue("view.php?id=$cm->id"); - } + + /*************** analysis of assessments (by teacher) ***************************/ + elseif ($action == 'analysisofassessments') { - /******************* confirm remove attachments ************************************/ - elseif ($action == 'confirmremoveattachments' ) { - - if (empty($_GET['sid'])) { - error("Admin confirm delete: submission id missing"); - } - if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) { - error("Admin delete: can not get submission record"); + // timeout after 10 minutes + @set_time_limit(600); + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); } - notice_yesno(get_string("confirmremoveattachments","workshop"), - "submissions.php?action=removeattachments&amp;id=$cm->id&amp;sid=$_GET[sid]", - "view.php?id=$cm->id"); - } + // this analysis does not use bias or reliability... + set_field("workshop", "biasweight", 0, "id", $workshop->id); + set_field("workshop", "reliabilityweight", 0, "id", $workshop->id); + // ...and unity weights for teacher and peer assessments + set_field("workshop", "teacherweight", 5, "id", $workshop->id); + set_field("workshop", "peerweight", 5, "id", $workshop->id); + echo "<form name=\"optionsform\" method=\"post\" action=\"submissions.php\">\n"; + echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$cm->id\">\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"saveanalysisoptions\">\n"; - /******************* edit submission ************************************/ - elseif ($action == 'editsubmission' ) { + // get the options from the database... + $teacherloading = get_field("workshop", "teacherloading", "id", $workshop->id); + $gradingweight = get_field("workshop", "gradingweight", "id", $workshop->id); + $assessmentstodrop = get_field("workshop", "assessmentstodrop", "id", $workshop->id); - if (empty($_GET['sid'])) { - error("Edit submission: submission id missing"); + // ...now show the options used in a table + print_heading_with_help(get_string("analysisofassessments", "workshop"), "analysisofassessments", + "workshop"); + echo "<center><TABLE WIDTH=\"50%\" BORDER=\"1\">\n"; + echo "<TR><td COLSPAN=\"2\" bgcolor=\"$THEME->cellheading2\"><CENTER><B>". + get_string("optionsusedinanalysis", "workshop")."</B></CENTER></TD></TR>\n"; + echo "<tr><td align=\"right\">".get_string("loadingforteacherassessments", "workshop", + $course->teacher).":</td>\n"; + echo "<TD>"; + workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "teacherloading", $teacherloading, ""); + echo "</TD></TR>\n"; + echo "<tr><td align=\"right\">".get_string("weightforgradingofassessments", "workshop").":</td>\n"; + echo "<TD>"; + workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "gradingweight", $gradingweight, ""); + echo "</TD></TR>\n"; + echo "<TR><TD ALIGN=\"right\">".get_string("percentageofassessments", "workshop").":</TD>\n"; + echo "<TD>"; + for ($i = 0; $i <= 100; $i++) { + $numbers[$i] = $i; } - $usehtmleditor = can_use_html_editor(); + choose_from_menu($numbers, "assessmentstodrop", $assessmentstodrop, ""); + echo "</TD></TR>\n"; + echo "</TABLE><br />\n"; + echo "<INPUT TYPE=submit VALUE=\"".get_string("repeatanalysis", "workshop")."\">\n"; + echo "</FORM>\n"; - $submission = get_record("workshop_submissions", "id", $_GET['sid']); - print_heading(get_string("editsubmission", "workshop")); - if ($submission->userid <> $USER->id) { - error("Edit submission: Userids do not match"); + + // set up the array of users who have made assessments + if (!$students = get_course_students($course->id, "u.lastname, u.firstname")) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; } - if (($submission->timecreated < ($timenow - $CFG->maxeditingtime)) and ($workshop->assessmentstart < $timenow)) { - error(get_string('notallowed', 'workshop')); + $teachers = get_course_teachers($course->id); + $users = array_merge($students, $teachers); + $nassessments = 0; + foreach ($users as $user) { + if ($assessments = workshop_get_user_assessments_done($workshop, $user)) { + // the value put into the array element is not particularly important at this stage + // it will hold the user's assessment error after the first iteration + $n = count($assessments); + $assessors[$user->id] = $n; + $nassessments += $n; + } } - ?> - <form name="editform" enctype="multipart/form-data" action="submissions.php" method="post"> - <input type="hidden" name="action" value="updatesubmission" /> - <input type="hidden" name="id" value="<?php echo $cm->id ?>" /> - <input type="hidden" name="sid" value="<?php echo $_GET['sid'] ?>" /> - <center> - <table cellpadding="5" border="1"> - <?php - echo "<tr valign=\"top\"><td><b>". get_string("title", "workshop").":</b>\n"; - echo "<input type=\"text\" name=\"title\" size=\"60\" maxlength=\"100\" value=\"$submission->title\" />\n"; - echo "</td></tr><tr><td><b>".get_string("submission", "workshop").":</b><br />\n"; - print_textarea($usehtmleditor, 25,70, 630, 400, "description", $submission->description); - use_html_editor("description"); - echo "</td></tr>\n"; - if ($workshop->nattachments) { - $filearea = workshop_file_area_name($workshop, $submission); - if ($basedir = workshop_file_area($workshop, $submission)) { - if ($files = get_directory_list($basedir)) { - echo "<tr><td><b>".get_string("attachments", "workshop"). - "</b><div align=\"right\"><input type=\"button\" value=\"".get_string("removeallattachments", - "workshop")."\" onclick=\"document.editform.action.value='removeattachments'; - document.editform.submit();\"/></div></td></tr>\n"; - $n = 1; - foreach ($files as $file) { - $icon = mimeinfo("icon", $file); - if ($CFG->slasharguments) { - $ffurl = "file.php/$filearea/$file"; + + $ntodrop = intval(($assessmentstodrop * $nassessments / 100.0) + 0.5); + + // set minumim value for the variance (of the elements) + $minvar = 0.05; + + flush(); + // we now do up to five iterations, the first with all users. The second and subsequent if + // the number of assessors is not the full set. Two or three iterations with the reduced set + // should be enough to stablise the list of dropped assessments. + if ($ntodrop == 0) { + $loopcount = 1; + } else { + $loopcount = 7; // max loops, should finish before that loop + } + for ($loop = 0; $loop < $loopcount; $loop++) { + // calculate the means for each submission using just the "good" assessments + // on the first iteration all the assessments are included + unset($num); + unset($sum); + foreach ($assessors as $userid => $error) { + if (!$user = get_record("user", "id", $userid)) { + error("Analysis of assessments: User record not found"); + } + $assessments = workshop_get_user_assessments_done($workshop, $user); + foreach ($assessments as $assessment) { + if (isset($drop[$assessment->id])) { + continue; + } + if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { + error("Analysis of Assessments: submission record not found"); + } + if (isset($num[$submission->id])) { + if (isteacher($course->id, $userid)) { + $num[$submission->id] += $WORKSHOP_FWEIGHTS[$workshop->teacherloading]; } else { - $ffurl = "file.php?file=/$filearea/$file"; + $num[$submission->id]++; } - echo "<tr><td>".get_string("attachment", "workshop")." $n: <img src=\"$CFG->pixpath/f/$icon\" - height=\"16\" width=\"16\" border=\"0\" alt=\"File\" />". - "&nbsp;<a target=\"uploadedfile\" href=\"$CFG->wwwroot/$ffurl\">$file</a></td></tr>\n"; + } else { + if (isteacher($course->id, $userid)) { + $num[$submission->id] = $WORKSHOP_FWEIGHTS[$workshop->teacherloading]; + } else { + $num[$submission->id] = 1; + } + } + for ($i = 0; $i < $workshop->nelements; $i++) { + $grade = get_field("workshop_grades", "grade", + "assessmentid", $assessment->id, "elementno", $i); + if (isset($sum[$submission->id][$i])) { + if (isteacher($course->id, $userid)) { + $sum[$submission->id][$i] += $grade * $WORKSHOP_FWEIGHTS[$workshop->teacherloading]; + } else { + $sum[$submission->id][$i] += $grade; + } + } else { + if (isteacher($course->id, $userid)) { + $sum[$submission->id][$i] = $grade * $WORKSHOP_FWEIGHTS[$workshop->teacherloading]; + } else { + $sum[$submission->id][$i] = $grade; + } + } } - } else { - echo "<tr><td><b>".get_string("noattachments", "workshop")."</b></td></tr>\n"; } } - echo "<tr><td>\n"; - require_once($CFG->dirroot.'/lib/uploadlib.php'); - for ($i=0; $i < $workshop->nattachments; $i++) { - $iplus1 = $i + 1; - $tag[$i] = get_string("newattachment", "workshop")." $iplus1:"; + reset($num); + if (!$loop) { + echo "<p>".get_string("numberofsubmissions", "workshop", count($num))."</p>\n"; + } + + // (re)calculate the means for each submission + foreach ($num as $submissionid => $n) { + for ($i = 0; $i < $workshop->nelements; $i++) { + $mean[$submissionid][$i] = $sum[$submissionid][$i] / $n; + // echo "Submission: $submissionid; Element: $i; Mean: {$mean[$submissionid][$i]}<br />\n"; + } + } + + // only calculate the sd's and the error from guessing once + if (!$loop) { + // now get an estimate of the standard deviation of each element in the assessment + $n = 0; + for ($i = 0; $i < $workshop->nelements; $i++) { + $var[$i] = 0; + } + foreach ($assessors as $userid => $error) { + if (!$user = get_record("user", "id", $userid)) { + error("Submissions: User record not found"); + } + $assessments = workshop_get_user_assessments_done($workshop, $user); + foreach ($assessments as $assessment) { + if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { + error("Analysis of Assessments: submission record not found"); + } + $n++; + for ($i = 0; $i < $workshop->nelements; $i++) { + $grade = get_field("workshop_grades", "grade", + "assessmentid", $assessment->id, "elementno", $i); + $temp = $mean[$submission->id][$i] - $grade; + $var[$i] += $temp * $temp; + } + } + } + for ($i = 0; $i < $workshop->nelements; $i++) { + $sd[$i] = sqrt($var[$i] / ($n - 1)); + echo get_string("standarddeviation", "workshop", $i+1)." $sd[$i]<br />"; + if ($sd[$i] <= $minvar) { + get_string("standarddeviationnote", "workshop")."<br />\n"; + } + echo "<br />\n"; + } + + // calculate the mean variance (error) if just guessing + // first get the assignment elements for maxscores... + $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC"); + foreach ($elementsraw as $element) { + $maxscore[] = $element->maxscore; // to renumber index 0,1,2... + $weight[] = $element->weight; // to renumber index 0,1,2... + } + $n = 0; + $totvar = 0; + foreach ($assessors as $userid => $error) { + if (!$user = get_record("user", "id", $userid)) { + error("Submissions: User record not found"); + } + $assessments = workshop_get_user_assessments_done($workshop, $user); + foreach ($assessments as $assessment) { + if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { + error("Analysis of Assessments: submission record not found"); + } + $n++; + for ($i = 0; $i < $workshop->nelements; $i++) { + $grade = mt_rand(0, $maxscore[$i]); + if ($sd[$i] > $minvar) { + $temp = ($mean[$submission->id][$i] - $grade) * + $WORKSHOP_EWEIGHTS[$weight[$i]] / $sd[$i]; + } else { + $temp = 0; + } + $totvar += $temp * $temp; + } + } + } + // take the average of these variances + $varguess = $totvar / $n; + } + + // calculate the variance (error) for each assessment (adjusted after the first loop) + // and work out the user's average error with all their assessments and without + // the dropped assessments (their "good" assessments) + foreach ($assessors as $userid => $error) { + if (!$user = get_record("user", "id", $userid)) { + error("Submissions: User record not found"); + } + $assessments = workshop_get_user_assessments_done($workshop, $user); + $n = 0; + $ngood = 0; + $totvar = 0; + $totvargood = 0; + foreach ($assessments as $assessment) { + if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { + error("Analysis of Assessments: submission record not found"); + } + $n++; + $var = 0; + for ($i = 0; $i < $workshop->nelements; $i++) { + $grade = get_field("workshop_grades", "grade", + "assessmentid", $assessment->id, "elementno", $i); + if ($sd[$i] > $minvar) { + $temp = ($mean[$submission->id][$i] - $grade) * + $WORKSHOP_EWEIGHTS[$weight[$i]] / $sd[$i]; + } else { + $temp = 0; + } + $var += $temp * $temp; + } + // the variances are adjusted by the user's overall error (once it's calculated) + if ($loop) { + $assessmentvar[$assessment->id] = $var * $error; + } else { + $assessmentvar[$assessment->id] = $var; + } + $totvar += $var; + if (empty($drop[$assessment->id])) { + $ngood++; + $totvargood += $var; + } + } + $nsubmissions[$userid] = $n; + $newassessors[$userid] = $totvar / $n; + if ($ngood) { + $vargood[$userid] = $totvargood / $ngood; + } else { + $vargood[$userid] = 0; + } + // echo fullname($user)." Error: {$newassessors[$userid]}; n: $n<br />\n"; + } + + // echo "<hr>\n"; + + + // now drop the assessments with the largest (adjusted) variances + $nchanged = 0; + if ($ntodrop) { + asort($assessmentvar); + $n = 1; + foreach ($assessmentvar as $assessmentid => $adjvar) { + if ($n <= ($nassessments - $ntodrop)) { + if (isset($drop[$assessmentid])) { + unset($drop[$assessmentid]); + $nchanged++; + } + } else { + if (empty($drop[$assessmentid])) { + $drop[$assessmentid] = 1; + $nchanged++; + } + } + $n++; + } + } + + // reset the assessors array + $assessors = $newassessors; + // put the assessors in order (for the next iteration, if there is one) + asort($assessors); + reset($assessors); + $i = $loop + 1; + echo get_string("iteration", "workshop", "$i / $loopcount")."<br />\n"; + echo get_string("numberofassessmentschanged", "workshop", $nchanged)."<br />\n"; + flush(); + if (!$nchanged) { + break; + } + } // end of iteration loop + + // flag the assessments which were classed as outliers + // but first clear any existing flags + execute_sql("UPDATE {$CFG->prefix}workshop_assessments SET donotuse = 0 + WHERE workshopid = $workshop->id", false); + if ($ntodrop) { + foreach ($drop as $assessmentid => $flag) { + if (!set_field("workshop_assessments", "donotuse", 1, "id", $assessmentid)) { + error("Analysis of assessments: unable to set donotuse field"); + } + $userid = get_field("workshop_assessments", "userid", "id", $assessmentid); + if (empty($ndropped[$userid])) { + $ndropped[$userid] = 1; + } else { + $ndropped[$userid]++; + } } - upload_print_form_fragment($workshop->nattachments,null,$tag,false,null,$course->maxbytes, - $workshop->maxbytes,false); - echo "</td></tr>\n"; } - echo "</table>\n"; - echo "<input type=\"submit\" value=\"".get_string("savemysubmission", "workshop")."\" />\n"; - echo "</center></form>\n"; + // echo "<p>".get_string("expectederror", "workshop", $varguess)."</p>\n"; + print_heading(get_string("errortable", "workshop")); + $table->head = array(" ",get_string("name"), get_string("averageerror", "workshop"), + get_string("averageerror", "workshop")."<br />". + get_string("excludingdroppedassessments", "workshop"), + get_string("numberofassessments", "workshop")); + $table->align = array ("left","left", "center", "center", "center"); + $table->size = array ("*", "*", "*", "*", "*"); + $table->cellpadding = 2; + $table->cellspacing = 0; + $n = 1; + foreach ($assessors as $userid => $error) { + if (!$user = get_record("user", "id", $userid)) { + error("Assessment analysis: user record not found"); + } + if ($vargood[$userid]) { + $vargoodtext = number_format($vargood[$userid] * 100 / $varguess, 2)."%"; + } else { + $vargoodtext = "-"; + } + if (empty($ndropped[$userid])) { + $numtext = "$nsubmissions[$userid]"; + } else { + $numtext = "$nsubmissions[$userid] &lt;$ndropped[$userid]&gt;"; + } + $table->data[] = array($n, fullname($user), + number_format($error * 100 / $varguess, 2)."%", $vargoodtext, + $numtext); + $n++; + } + print_table($table); + echo "<p>&lt; &gt; ".get_string("assessmentsexcluded", "workshop", $course->student)."</p>\n"; + echo "<p>".get_string("submissionsused", "workshop", count($num))."</p>\n";; + + // display student grades + print_heading(get_string("gradetable", "workshop")); + unset($table); + $table->head = array(get_string("name"), get_string("submission", "workshop"), + get_string("assessmentsdone", "workshop"), get_string("assessments", "workshop"), + get_string("studentassessments", "workshop", $course->teacher), + get_string("studentassessments", "workshop", $course->student), + get_string("submission", "workshop"), get_string("overallgrade", "workshop")); + $table->align = array ("left", "center", "center", "center", "center", "center", "center", "center"); + $table->size = array ("*", "*", "*", "*", "*", "*", "*", "*"); + $table->cellpadding = 2; + $table->cellspacing = 0; + $table->data[] = array("<b>".get_string("weight", "workshop")."</b>", " ", " ", + "<b>".$WORKSHOP_FWEIGHTS[$workshop->gradingweight]."</b>", " ", " ","<b>1</b>", " "); + $maxassessments = $workshop->nsassessments + $workshop->ntassessments; + foreach ($students as $user) { + if ($assessments = workshop_get_user_assessments_done($workshop, $user)) { + $n = 0; + foreach ($assessments as $assessment) { + if (!$assessment->donotuse) { + $n++; + } + } + if ($maxassessments) { + $assessmentgrade = ($n / $maxassessments) * $workshop->grade; + } else { + $assessmentgrade = 0; + } + } else { + // no assessments + $assessmentgrade = 0; + } + if ($submissions = workshop_get_user_submissions($workshop, $user)) { + foreach ($submissions as $submission) { + $submissiongrade = 0; + $n = 0; + if ($assessments = workshop_get_assessments($submission)) { + $sum = 0; + foreach ($assessments as $assessment) { + if (!$assessment->donotuse) { + $n++; + $sum += $assessment->grade; + } + } + if ($n) { + $submissiongrade = $sum / $n; + } + } + $finalgrade = ($assessmentgrade * $WORKSHOP_FWEIGHTS[$workshop->gradingweight] + + $submissiongrade) / ($WORKSHOP_FWEIGHTS[$workshop->gradingweight] + 1.0); + if ($n) { + $table->data[] = array(fullname($user), + workshop_print_submission_title($workshop, $submission), + workshop_print_user_assessments($workshop, $user), + number_format($assessmentgrade, 2), + workshop_print_submission_assessments($workshop, $submission, "teacher"), + workshop_print_submission_assessments($workshop, $submission, "student"), + number_format($submissiongrade, 2), + number_format($finalgrade, 2)); + } else { + $table->data[] = array(fullname($user), + workshop_print_submission_title($workshop, $submission), + workshop_print_user_assessments($workshop, $user), + number_format($assessmentgrade, 2), + workshop_print_submission_assessments($workshop, $submission, "teacher"), + workshop_print_submission_assessments($workshop, $submission, "student"), + "<b>".get_string("noassessments", "workshop")."</b>", + number_format($finalgrade, 2)); + } + // save grades in submission record + set_field("workshop_submissions", "teachergrade", intval($submissiongrade + 0.5), "id", + $submission->id); + set_field("workshop_submissions", "peergrade", intval($submissiongrade + 0.5), "id", + $submission->id); + set_field("workshop_submissions", "finalgrade", intval($finalgrade + 0.5), "id", + $submission->id); + set_field("workshop_submissions", "gradinggrade", intval($assessmentgrade + 0.5), "id", + $submission->id); + } + } else { + // no submissions + $finalgrade = ($assessmentgrade * $WORKSHOP_FWEIGHTS[$workshop->gradingweight]) / + ($WORKSHOP_FWEIGHTS[$workshop->gradingweight] + 1.0); + $table->data[] = array(fullname($user), + "-", workshop_print_user_assessments($workshop, $user), + number_format($assessmentgrade, 2), "-", "-", + get_string("nosubmission", "workshop"), + number_format($finalgrade,2)); + } + } + print_table($table); + echo "<p>&lt; &gt; ".get_string("assessmentdropped", "workshop")."</p>\n"; + echo "</CENTER>"; + print_continue("view.php?a=$workshop->id"); + } + + + /*************** calculate final grades (by teacher) ***************************/ + elseif ($action == 'calculatefinalgrades') { + + $form = (object)$_POST; + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + // Get all the students in surname order + if (!$users = get_course_students($course->id, "u.firstname, u.lastname")) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; + } + + // set up the weights from the calculate final grades form... + if (isset($form->teacherweight)) { + $teacherweight = $form->teacherweight; + // ...and save them + set_field("workshop", "teacherweight", $teacherweight, "id", "$workshop->id"); + } + + if (isset($form->peerweight)) { + $peerweight = $form->peerweight; + // ...and save them + set_field("workshop", "peerweight", $peerweight, "id", "$workshop->id"); + } + + // get the include teachers grade flag + if (isset($form->includeteachersgrade)) { + $includeteachersgrade = $form->includeteachersgrade; + set_field("workshop", "includeteachersgrade", $includeteachersgrade, "id", "$workshop->id"); + } + + if (isset($form->biasweight)) { + $biasweight = $form->biasweight; + // ...and save them + set_field("workshop", "biasweight", $biasweight, "id", "$workshop->id"); + } + + if (isset($form->reliabilityweight)) { + $reliabilityweight = $form->reliabilityweight; + // ...and save them + set_field("workshop", "reliabilityweight", $reliabilityweight, "id", "$workshop->id"); + } + + if (isset($form->gradingweight)) { + $gradingweight = $form->gradingweight; + // ...and save them + set_field("workshop", "gradingweight", $gradingweight, "id", "$workshop->id"); + } + + // save number of entries in showleaguetable option + if ($form->nentries == 'All') { + $form->nentries = 99; + } + set_field("workshop", "showleaguetable", $form->nentries, "id", "$workshop->id"); + + // save the anonymous option + set_field("workshop", "anonymous", $form->anonymous, "id", "$workshop->id"); + + // work out what to show in the final grades tables and what to include in the calculation of the final grade + // teacher grades? + if ($workshop->gradingstrategy and $teacherweight) { + $useteachersgrades = 1; + } + else { + $useteachersgrades = 0; + } + // peergrades? + if ($workshop->gradingstrategy and $workshop->nsassessments and $peerweight) { + $usepeergrades = 1; + } + else { + $usepeergrades = 0; + } + // bias grades? + if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades) + and $biasweight ) { + $usebiasgrades = 1; + } + else { + $usebiasgrades = 0; + } + // reliability grades? + if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades) + and $reliabilityweight ) { + $usereliabilitygrades = 1; + } + else { + $usereliabilitygrades = 0; + } + // grading grades? + if (($workshop->ntassessments or $workshop->nsassessments) and $gradingweight ) { + $usegradinggrades = 1; + } + else { + $usegradinggrades = 0; + } + + // start to calculate the grand means + $sumallteachergrades = 0.0; + $nallteachergrades = 0; + $sumallpeergrades = 0.0; + $nallpeergrades = 0; + // get the grades of each student's submission... + // the method used allowed a submission to be graded by more than one teacher + if (workshop_count_student_submissions($workshop)) { + echo "<CENTER><B>".get_string("studentsubmissions", "workshop", $course->student); + echo "<BR><TABLE BORDER=1 WIDTH=\"90%\"><TR>\n"; + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$course->student</B></TD>\n"; + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("submissions","workshop")."</B></TD>\n"; + if ($useteachersgrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("assessmentsby", "workshop", $course->teachers)."</B></TD>\n"; + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("numberofassessments", "workshop")."</B></TD>\n"; + } + if ($usepeergrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("assessmentsby", "workshop", $course->students)."</B></TD>\n"; + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("numberofassessments", "workshop")."</B></TD>\n"; + } + if ($useteachersgrades or $usepeergrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("gradeofsubmission", "workshop")."</B></TD></TR>\n"; + } + // display weights + echo "<TR><TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("weights","workshop")."</B></TD>\n"; + echo "<TD BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + if ($useteachersgrades) { + echo "<TD COLSPAN=\"2\" BGCOLOR=\"$THEME->cellheading2\"><CENTER><B>$WORKSHOP_FWEIGHTS[$teacherweight]</B></CENTER></TD>\n"; + } + if ($usepeergrades) { + echo "<TD COLSPAN=\"2\" BGCOLOR=\"$THEME->cellheading2\"><CENTER><B>$WORKSHOP_FWEIGHTS[$peerweight]</B></CENTER></TD>\n"; + } + if ($useteachersgrades or $usepeergrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\">&nbsp;</TD>\n"; + } + echo "<TR>\n"; + // go through the submissions in "user" order, makes comparing the two tables easier + foreach ($users as $user) { + if ($submissions = workshop_get_user_submissions($workshop, $user)) { + foreach ($submissions as $submission) { + $sumteachergrades = 0.0; + $nteachergrades = 0; + $sumpeergrades = 0.0; + $npeergrades = 0; + // have a look at each assessment and add to arrays + if ($assessments = workshop_get_assessments($submission)) { + foreach ($assessments as $assessment) { + if (isteacher($workshop->course, $assessment->userid)) { + // it's a teacher's + $sumteachergrades += $assessment->grade; + $nteachergrades++; + if ($includeteachersgrade) { // add it to the student grades + $sumpeergrades += $assessment->grade; + $npeergrades++; + } + } + else { + // its' a student's + $sumpeergrades += $assessment->grade; + $npeergrades++; + } + } + } + if ($nteachergrades) { + $teachergrade = intval($sumteachergrades / $nteachergrades + 0.5); + $sumallteachergrades += $teachergrade; + $nallteachergrades++; + } + else { + $teachergrade = 0; + } + if ($npeergrades) { + $peergrade = intval($sumpeergrades / $npeergrades + 0.5); + $sumallpeergrades += $peergrade; + $nallpeergrades++; + } + else { + $peergrade = 0; + } + if ($teacherweight + $peerweight > 0) { + $grade = intval((($useteachersgrades * $teachergrade * $WORKSHOP_FWEIGHTS[$teacherweight] + + $usepeergrades * $peergrade * $WORKSHOP_FWEIGHTS[$peerweight]) / + ($useteachersgrades * $WORKSHOP_FWEIGHTS[$teacherweight] + + $usepeergrades * $WORKSHOP_FWEIGHTS[$peerweight])) + 0.5); + } + else { + $grade = 0; + } + // display the grades... + echo "<TR><TD>".fullname($user)."</TD>\n"; + echo "<TD>".workshop_print_submission_title($workshop, $submission)."</TD>\n"; + if ($useteachersgrades) { + echo "<TD>$teachergrade</TD>\n"; + echo "<TD>[$nteachergrades]</TD>\n"; + } + if ($usepeergrades) { + echo "<TD>$peergrade</TD>\n"; + echo "<TD>[$npeergrades]</TD>\n"; + } + if ($useteachersgrades or $usepeergrades) { + echo "<TD>$grade</TD></TR>\n"; + } + // ...and save in the database + set_field("workshop_submissions", "teachergrade", $teachergrade, "id", $submission->id); + set_field("workshop_submissions", "peergrade", $peergrade, "id", $submission->id); + } + } + } + echo "</TABLE></CENTER>\n"; + } + // now display the overall teacher and peer means + if ($nallteachergrades) { + $grandteachergrade = $sumallteachergrades / $nallteachergrades; + } + else { + $grandteachergrade = 0; + } + if ($nallpeergrades) { + $grandpeergrade = $sumallpeergrades / $nallpeergrades; + } + else { + $grandpeergrade = 0; + } + if ($useteachersgrades) { + echo "<P><B>".get_string("overallteachergrade", "workshop", number_format($grandteachergrade, 2))." [$nallteachergrades]</B>\n"; + } + if ($usepeergrades) { + echo "<P><B>".get_string("overallpeergrade", "workshop", number_format($grandpeergrade, 2))." [$nallpeergrades]</B><BR>\n"; + } + // run thru each users and see how their assessments faired, we may junk the grading stats but what the heck! + foreach ($users as $user) { + // we need to calculate a user bias before we can calculate their reliability + $sumbias = 0.0; + // nbias is used later to show how many peer assessments the user has done + $nbias[$user->id] = 0; + if ($workshop->nsassessments) { // peer assessments? + // run thru this user's assessments on the STUDENT submissions + if ($assessments = workshop_get_student_assessments($workshop, $user)) { + foreach ($assessments as $assessment) { + $submission = get_record("workshop_submissions", "id", $assessment->submissionid); + // calculate the sum of "validity" values, the bias in a user's grading... + $sumbias += $submission->peergrade - $assessment->grade; + $nbias[$user->id]++; + } + } + } + if ($nbias[$user->id] > 1) { + // we could divide by n-1 to remove own score from calculation of mean but we don't because we re-use bias + // values in the calculation of reliability, and it's all relative anyway + $bias[$user->id] = $sumbias / $nbias[$user->id]; + } + else { + $bias[$user->id] = 0.0; + } + // now look at all the user's assessments of both the TEACHER's submissions and the STUDENT submissions + // to calculate their overall grading grade + $sumgradinggrade = 0.0; + $ngradinggrades = 0; + if ($workshop->ntassessments or $workshop->nsassessments) { // worth looking? + if ($assessments = workshop_get_user_assessments($workshop, $user)) { + foreach ($assessments as $assessment) { + if ($assessment->timegraded > 0) { + $sumgradinggrade += $assessment->gradinggrade; + $ngradinggrades++; + } + } + } + } + if ($ngradinggrades) { + $gradinggrade[$user->id] = $sumgradinggrade / $ngradinggrades; + } + else { + $gradinggrade[$user->id] = 0.0; + } + } + + // calculate the mean value of "reliability", the accuracy of a user's grading (disregarding bias) + // use a linear function rather than a squared function for reliability + // at the same time calculate a reliability of a "dumb user" whose grades everything at the grand mean value + $sumdumbreliability = 0.0; + $ndumbreliability =0; + foreach ($users as $user) { + $sumreliability = 0.0; + $nreliability = 0; + if ($workshop->nsassessments) { // worth a look? + // look only at the user's assessment of STUDENT submissions + if ($assessments = workshop_get_student_assessments($workshop, $user)) { + foreach ($assessments as $assessment) { + $submission = get_record("workshop_submissions", "id", $assessment->submissionid); + $sumreliability += abs($submission->peergrade - $assessment->grade - $bias[$user->id]); + $nreliability++; + $sumdumbreliability += abs($submission->peergrade - $grandpeergrade); + $ndumbreliability++; + } + } + } + // calculate the mean reliability values + if ($nreliability) { + $reliability[$user->id] = $sumreliability / $nreliability; + } + else { + $reliability[$user->id] = 999999; // big number + } + } + if ($ndumbreliability) { + $dumbreliability = $sumdumbreliability / $ndumbreliability; + } + else { + $dumbreliability = 999999; // big number + } + + // convert bias and reliability values into scales where 1 is prefect, 0 is no grading done... + // ...but first find the largest (absolute) value of the bias measures + if (max($bias) > abs(min($bias))) { + $maxbias = max($bias); + } + else { + $maxbias = abs(min($bias)); + } + + echo "<P><CENTER>".get_string("studentgrades", "workshop", $course->student)."<BR>\n"; + echo "<CENTER><TABLE BORDER=1 WIDTH=\"90%\"><TR> + <TD BGCOLOR=\"$THEME->cellheading2\"><B>$course->student</B></TD>\n"; + if ($useteachersgrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("assessmentsby", "workshop", $course->teachers)."</B></TD>\n"; + } + if ($usepeergrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("assessmentsby", "workshop", $course->students)."</B></TD>\n"; + } + if ($usebiasgrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("gradeforbias", "workshop")."</B></TD>\n"; + } + if ($usereliabilitygrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("gradeforreliability", "workshop")."</B></TD>\n"; + } + if ($usegradinggrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("gradeforassessments", "workshop")."</B></TD>\n"; + } + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("overallgrade", "workshop")."</B></TD></TR>\n"; + // now display the weights + echo "<TR><TD BGCOLOR=\"$THEME->cellheading2\"><B>".get_string("weights","workshop")."</B></TD>\n"; + if ($useteachersgrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$WORKSHOP_FWEIGHTS[$teacherweight]</B></TD>\n"; + } + if ($usepeergrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$WORKSHOP_FWEIGHTS[$peerweight]</B></TD>\n"; + } + if ($usebiasgrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$WORKSHOP_FWEIGHTS[$biasweight]</B></TD>\n"; + } + if ($usereliabilitygrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$WORKSHOP_FWEIGHTS[$reliabilityweight]</B></TD>\n"; + } + if ($usegradinggrades) { + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>$WORKSHOP_FWEIGHTS[$gradingweight]</B></TD>\n"; + } + echo "<TD BGCOLOR=\"$THEME->cellheading2\"><B>&nbsp;</B></TD></TR>\n"; + foreach ($users as $user) { + // get user's best submission + $bestgrade = -1; + $teachergrade = 0; + $peergrade = 0; + if ($submissions = workshop_get_user_submissions($workshop, $user)) { + foreach ($submissions as $submission) { + $grade = ($submission->teachergrade * $WORKSHOP_FWEIGHTS[$teacherweight] + + $submission->peergrade * $WORKSHOP_FWEIGHTS[$peerweight]) / + ($WORKSHOP_FWEIGHTS[$teacherweight] + $WORKSHOP_FWEIGHTS[$peerweight]); + if ($grade > $bestgrade) { + $bestgrade = $grade; + $teachergrade = $submission->teachergrade; + $peergrade = $submission->peergrade; + $bestsubmission = $submission; + } + } + } + else { // funny this user did not submit - create a dummy submission to hold any grades they might have + unset($bestsubmission); + $bestsubmission->workshopid = $workshop->id; + $bestsubmission->userid = $user->id; + $bestsubmission->title = "No Submission"; + $bestsubmission->timecreated = 0; + if (!$bestsubmission->id = insert_record("workshop_submissions", $bestsubmission)) { + error("Unable to create dummy submission record"); + } + } + // biasgrade is scaled between zero and one NEED TO ADD TEST FOR NO PEER ASSESSMENTS OF SUBMITTED WORK + if ($maxbias) { + $biasgrade = max(($nbias[$user->id] / $workshop->nsassessments) - (abs($bias[$user->id]) / $maxbias), + 0.0); + } + else { + $biasgrade = 0; + } + // reliabilitygrade is scaled between zero and one + + if ($dumbreliability and $workshop->nsassessments) { + // nbias used here as it contains the number of assessments the user has done + $reliabilitygrade = max(($nbias[$user->id] / $workshop->nsassessments) - + ($reliability[$user->id] / $dumbreliability), 0.0); + } + else { + $reliabilitygrade = 0; + } + $biasscaled = intval($biasgrade * $workshop->grade + 0.5); + $reliabilityscaled = intval($reliabilitygrade * $workshop->grade + 0.5); + $gradingscaled = intval($gradinggrade[$user->id] * $workshop->grade / COMMENTSCALE + 0.5); + $finalgrade = intval((($teachergrade * $WORKSHOP_FWEIGHTS[$teacherweight] * $useteachersgrades) + + ($peergrade * $WORKSHOP_FWEIGHTS[$peerweight] * $usepeergrades) + + ($biasscaled * $WORKSHOP_FWEIGHTS[$biasweight] * $usebiasgrades) + + ($reliabilityscaled * $WORKSHOP_FWEIGHTS[$reliabilityweight] * $usereliabilitygrades) + + ($gradingscaled * $WORKSHOP_FWEIGHTS[$gradingweight] * $usegradinggrades) + 0.5) / + (($WORKSHOP_FWEIGHTS[$teacherweight] * $useteachersgrades) + + ($WORKSHOP_FWEIGHTS[$peerweight] * $usepeergrades) + + ($WORKSHOP_FWEIGHTS[$biasweight] * $usebiasgrades) + + ($WORKSHOP_FWEIGHTS[$reliabilityweight] * $usereliabilitygrades) + + ($WORKSHOP_FWEIGHTS[$gradingweight] * $usegradinggrades))); + echo "<TR><TD>".fullname($user)."</TD>"; + if ($useteachersgrades) { + echo "<TD>$teachergrade</TD>"; + } + if ($usepeergrades) { + echo "<TD>$peergrade</TD>"; + } + if ($usebiasgrades) { + echo "<TD>$biasscaled</TD>"; + } + if ($usereliabilitygrades) { + echo "<TD>$reliabilityscaled</TD>"; + } + if ($usegradinggrades) { + echo "<TD>$gradingscaled</TD>"; + } + echo "<TD>$finalgrade</TD></TR>\n"; + + // save the grades + set_field("workshop_submissions", "biasgrade", $biasscaled, "id", $bestsubmission->id); + set_field("workshop_submissions", "reliabilitygrade", $reliabilityscaled, "id", $bestsubmission->id); + set_field("workshop_submissions", "gradinggrade", $gradingscaled, "id", $bestsubmission->id); + set_field("workshop_submissions", "finalgrade", $finalgrade, "id", $bestsubmission->id); + } + echo "</TABLE><BR CLEAR=ALL>\n"; + print_string("allgradeshaveamaximumof", "workshop", $workshop->grade); + echo "</CENTER><BR>\n"; + + print_continue("view.php?a=$workshop->id"); + } + + + /*************** display final grades (by teacher) ***************************/ + elseif ($action == 'displayfinalgrades') { + // Get all the students + if (!$users = get_course_students($course->id, "u.lastname, u.firstname")) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; + } + + // get the final weights from the database + $teacherweight = get_field("workshop","teacherweight", "id", $workshop->id); + $peerweight = get_field("workshop","peerweight", "id", $workshop->id); + $includeteachersgrade = get_field("workshop","includeteachersgrade", "id", $workshop->id); + $biasweight = get_field("workshop","biasweight", "id", $workshop->id); + $reliabilityweight = get_field("workshop","reliabilityweight", "id", $workshop->id); + $gradingweight = get_field("workshop","gradingweight", "id", $workshop->id); + // work out what to show in the final grades tables and what to include in the calculation of the final grade + // teacher grades? + if ($workshop->gradingstrategy and $teacherweight) { + $useteachersgrades = 1; + } + else { + $useteachersgrades = 0; + } + // peergrades? + if ($workshop->gradingstrategy and $workshop->nsassessments and $peerweight) { + $usepeergrades = 1; + } + else { + $usepeergrades = 0; + } + // bias grades? + if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades) + and $biasweight ) { + $usebiasgrades = 1; + } + else { + $usebiasgrades = 0; + } + // reliability grades? + if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and ($useteachersgrades or $usepeergrades) + and $reliabilityweight ) { + $usereliabilitygrades = 1; + } + else { + $usereliabilitygrades = 0; + } + // grading grades? + if (($workshop->ntassessments or $workshop->nsassessments) and $gradingweight ) { + $usegradinggrades = 1; + } + else { + $usegradinggrades = 0; + } + + // show the final grades as stored in the tables... + print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop"); + echo "<center><table border=\"1\" width=\"90%\"><tr> + <td bgcolor=\"$THEME->cellheading2\"><b>".$course->student."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submission", "workshop")."</b></td>"; + if ($useteachersgrades) { + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", $course->teachers)."</b></td>"; + } + if ($usepeergrades) { + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", $course->students)."</b></td>"; + } + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsdone", "workshop")."</b></td>"; + if ($usebiasgrades) { + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforbias", "workshop")."</b></td>"; + } + if ($usereliabilitygrades) { + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforreliability", "workshop")."</b></td>"; + } + if ($usegradinggrades) { + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforassessments", "workshop")."</b></td>"; + } + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "workshop")."</b></td></TR>\n"; + // now the weights + echo "<TR><td bgcolor=\"$THEME->cellheading2\"><b>".get_string("weights", "workshop")."</b></td>"; + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>&nbsp;</b></td>\n"; + if ($useteachersgrades) { + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$teacherweight]</b></td>\n"; + } + if ($usepeergrades) { + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$peerweight]</b></td>\n"; + } + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>&nbsp;</b></td>\n"; + if ($usebiasgrades) { + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$biasweight]</b></td>\n"; + } + if ($usereliabilitygrades) { + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$reliabilityweight]</b></td>\n"; + } + if ($usegradinggrades) { + echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>$WORKSHOP_FWEIGHTS[$gradingweight]</b></td>\n"; + } + echo "<td bgcolor=\"$THEME->cellheading2\"><b>&nbsp;</b></td></tr>\n"; + foreach ($users as $user) { + if ($submissions = workshop_get_user_submissions($workshop, $user)) { + foreach ($submissions as $submission) { + echo "<tr><td>".fullname($user)".</td>"; + echo "<td>".workshop_print_submission_title($workshop, $submission)."</td>\n"; + if ($useteachersgrades) { + echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, "teacher")."</td>"; + } + if ($usepeergrades) { + echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, "student")."</td>"; + } + echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $user)."</td>"; + if ($usebiasgrades) { + echo "<td align=\"center\">$submission->biasgrade</td>"; + } + if ($usereliabilitygrades) { + echo "<td align=\"center\">$submission->reliabilitygrade</td>"; + } + if ($usegradinggrades) { + echo "<td align=\"center\">$submission->gradinggrade</td>"; + } + echo "<td align=\"center\">$submission->finalgrade</td></tr>\n"; + } + } + } + echo "</table><br clear=\"all\">\n"; + if ($workshop->showleaguetable) { + workshop_print_league_table($workshop); + if ($workshop->anonymous) { + echo "<p>".get_string("namesnotshowntostudents", "workshop", $course->students)."</p>\n"; + } + } + echo "<p>".get_string("allgradeshaveamaximumof", "workshop", $workshop->grade)."</p>\n"; + print_continue("view.php?a=$workshop->id"); + } + + + /*************** display final weights (by teacher) ***************************/ + elseif ($action == 'displayfinalweights') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + if ($workshop->phase != 5) { // is this at the expected phase? + print_heading(get_string("assignmentnotinthecorrectphase", "workshop")); + print_continue("view.php?a=$workshop->id"); + } + else { + + ?> + <form name="weightsform" method="post" action="submissions.php"> + <INPUT TYPE="hidden" NAME="id" VALUE="<?PHP echo $cm->id ?>"> + <input type="hidden" name="action" value="calculatefinalgrades"> + <CENTER> + <?PHP + + // get the final weights from the database + $teacherweight = get_field("workshop","teacherweight", "id", $workshop->id); + $peerweight = get_field("workshop","peerweight", "id", $workshop->id); + $includeteachersgrade = get_field("workshop","includeteachersgrade", "id", $workshop->id); + $biasweight = get_field("workshop","biasweight", "id", $workshop->id); + $reliabilityweight = get_field("workshop","reliabilityweight", "id", $workshop->id); + $gradingweight = get_field("workshop","gradingweight", "id", $workshop->id); + + // now show the weights used in the final grades + print_heading_with_help(get_string("calculationoffinalgrades", "workshop"), "calculatingfinalgrade", "workshop"); + echo "<TABLE WIDTH=\"50%\" BORDER=\"1\">\n"; + echo "<TR><td COLSPAN=\"2\" bgcolor=\"$THEME->cellheading2\"><CENTER><B>". + get_string("weightsusedforfinalgrade", "workshop")."</B></CENTER></TD></TR>\n"; + echo "<tr><td align=\"right\">".get_string("weightforteacherassessments", "workshop", $course->teacher).":</td>\n"; + echo "<TD>"; + workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "teacherweight", $teacherweight, ""); + echo "</TD></TR>\n"; + echo "<TR><TD ALIGN=\"right\">".get_string("weightforpeerassessments", "workshop").":</TD>\n"; + echo "<TD>"; + workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "peerweight", $peerweight, ""); + echo "</TD></TR>\n"; + echo "<TR><TD ALIGN=\"right\">".get_string("weightforbias", "workshop").":</TD>\n"; + echo "<TD>"; + workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "biasweight", $biasweight, ""); + echo "</TD></TR>\n"; + echo "<TR><TD ALIGN=\"right\">".get_string("weightforreliability", "workshop").":</TD>\n"; + echo "<TD>"; + workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "reliabilityweight", $reliabilityweight, ""); + echo "</TD></TR>\n"; + echo "<TR><TD ALIGN=\"right\">".get_string("weightforgradingofassessments", "workshop").":</TD>\n"; + echo "<TD>"; + workshop_choose_from_menu($WORKSHOP_FWEIGHTS, "gradingweight", $gradingweight, ""); + echo "</TD></TR>\n"; + echo "<TR><TD COLSPAN=\"2\" bgcolor=\"$THEME->cellheading2\"><CENTER><B>". + get_string("optionforpeergrade", "workshop")."</B></CENTER></TD></TR>\n"; + echo "<TR><TD ALIGN=\"right\">".get_string("includeteachersgrade", "workshop").":</TD>\n"; + echo "<TD>"; + $options[0] = get_string("no"); $options[1] = get_string("yes"); + choose_from_menu($options, "includeteachersgrade", $includeteachersgrade, ""); + helpbutton("includeteachersgrade", get_string("includeteachersgrade", "workshop"), "workshop"); + echo "</TD></TR>\n"; + echo "</TABLE>\n"; + + print_heading_with_help(get_string("leaguetable", "workshop"), "leaguetable", "workshop"); + echo "<TABLE WIDTH=\"50%\" BORDER=\"1\">\n"; + echo "<tr><td align=\"right\">".get_string("numberofentries", "workshop").":</td>\n"; + echo "<TD>"; + $numbers[22] = 'All'; + $numbers[21] = 50; + for ($i=20; $i>=0; $i--) { + $numbers[$i] = $i; + } + $nentries = $workshop->showleaguetable; + if ($nentries == 99) { + $nentries = 'All'; + } + choose_from_menu($numbers, "nentries", "$nentries", ""); + echo "</td></tr>\n"; + echo "<tr><td align=right><p>".get_string("hidenamesfromstudents", "workshop", $course->students)."</p></td><td>\n"; + $options[0] = get_string("no"); $options[1] = get_string("yes"); + choose_from_menu($options, "anonymous", $workshop->anonymous, ""); + echo "</td></tr>\n"; + echo "</table><br />\n"; + echo "<INPUT TYPE=submit VALUE=\"".get_string("calculationoffinalgrades", "workshop")."\">\n"; + echo "</CENTER>"; + echo "</FORM>\n"; + } } @@ -311,13 +1324,13 @@ print_heading(get_string("nostudentsyet")); print_footer($course); exit; - } + } print_heading(get_string("listofallsubmissions", "workshop").":", "CENTER"); workshop_list_all_submissions($workshop, $USER); print_continue("view.php?id=$cm->id"); - - } - + + } + /******************* list for assessment student (submissions) ************************************/ elseif ($action == 'listforassessmentstudent' ) { @@ -325,143 +1338,124 @@ print_heading(get_string("nostudentsyet")); print_footer($course); exit; - } + } workshop_list_unassessed_student_submissions($workshop, $USER); print_continue("view.php?id=$cm->id"); - - } - + + } + /******************* list for assessment teacher (submissions) ************************************/ elseif ($action == 'listforassessmentteacher' ) { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - + if (!$users = get_course_students($course->id)) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; + } workshop_list_unassessed_teacher_submissions($workshop, $USER); print_continue("view.php?id=$cm->id"); - - } - - - /******************* remove (all) attachments ************************************/ - elseif ($action == 'removeattachments' ) { - - $form = data_submitted(); - - if (empty($form->sid)) { - error("Update submission: submission id missing"); + } + - $submission = get_record("workshop_submissions", "id", $form->sid); + /******************* save analysis options (for teachers only) ************************************/ + elseif ($action == 'saveanalysisoptions' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } - // students are only allowed to remove their own attachments and only up to the deadline - if (!(isteacher($course->id) or - (($USER->id = $submission->userid) and ($timenow < $workshop->submissionend) - and (($timenow < $workshop->assessmentstart) or ($timenow < $submission->timecreated + $CFG->maxeditingtime))))) { - error("You are not authorized to delete these attachments"); + set_field("workshop", "teacherloading", $_POST['teacherloading'], "id", "$workshop->id"); + set_field("workshop", "gradingweight", $_POST['gradingweight'], "id", "$workshop->id"); + set_field("workshop", "assessmentstodrop", $_POST['assessmentstodrop'], "id", "$workshop->id"); + redirect("submissions.php?id=$cm->id&action=analysisofassessments", + get_string("savedok", "workshop")); + } - - // amend title... just in case they were modified - // check existence of title - if (empty($form->title)) { - notify(get_string("notitlegiven", "workshop")); - } else { - set_field("workshop_submissions", "title", $form->title, "id", $submission->id); - set_field("workshop_submissions", "description", trim($form->description), "id", $submission->id); - } - print_string("removeallattachments", "workshop"); - workshop_delete_submitted_files($workshop, $submission); - add_to_log($course->id, "workshop", "removeattachments", "view.php?id=$cm->id", "submission $submission->id"); - - print_continue("view.php?id=$cm->id#sid=$submission->id"); - } - - - /******************* show submission ************************************/ - elseif ($action == 'showsubmission' ) { - - if (empty($_GET['sid'])) { - error("Show submission: submission id missing"); - } - - $submission = get_record("workshop_submissions", "id", $_GET['sid']); - $title = '"'.$submission->title.'" '; - if (isteacher($course->id)) { - $title .= get_string('by', 'workshop').' '.workshop_fullname($submission->userid, $course->id); - } - print_heading($title); - echo '<center>'.get_string('submitted', 'workshop').': '.userdate($submission->timecreated).'</center><br />'; - workshop_print_submission($workshop, $submission); - print_continue($_SERVER['HTTP_REFERER'].'#sid='.$submission->id); - } - + /*************** update (league table options teacher) ***************************/ elseif ($action == 'updateleaguetable') { - + if (!isteacher($course->id)) { error("Only teachers can look at this page"); } $form = (object)$_POST; - + // save number of entries in showleaguetable option if ($form->nentries == 'All') { $form->nentries = 99; - } + } set_field("workshop", "showleaguetable", $form->nentries, "id", "$workshop->id"); - + // save the anonymous option set_field("workshop", "anonymous", $form->anonymous, "id", "$workshop->id"); add_to_log($course->id, "workshop", "league table", "view.php?id=$cm->id", $form->nentries, $cm->id); - redirect("view.php?id=$cm->id"); - } - - - /*************** update submission ***************************/ - elseif ($action == 'updatesubmission') { - - $form = data_submitted(); - - if (empty($form->sid)) { - error("Update submission: submission id missing"); - } - $submission = get_record("workshop_submissions", "id", $form->sid); - - // students are only allowed to update their own submission and only up to the deadline - if (!(isteacher($course->id) or - (($USER->id = $submission->userid) and ($timenow < $workshop->submissionend) - and (($timenow < $workshop->assessmentstart) or ($timenow < $submission->timecreated + $CFG->maxeditingtime))))) { - error("You are not authorized to update your submission"); + redirect("submissions.php?action=adminlist&id=$cm->id"); } - // check existence of title - if (empty($form->title)) { - $title = get_string("notitle", "workshop"); + + /*************** update over allocation (by teacher) ***************************/ + elseif ($action == 'updateoverallocation') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); } - set_field("workshop_submissions", "title", $form->title, "id", $submission->id); - set_field("workshop_submissions", "description", trim($form->description), "id", $submission->id); - set_field("workshop_submissions", "timecreated", $timenow, "id", $submission->id); - if ($workshop->nattachments) { - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $um = new upload_manager(null,false,false,$course,false,$workshop->maxbytes); - if ($um->preprocess_files()) { - $dir = workshop_file_area_name($workshop, $submission); - if ($um->save_files($dir)) { - add_to_log($course->id, "workshop", "newattachment", "view.php?id=$cm->id", "$workshop->id"); - print_heading(get_string("uploadsuccess", "workshop")); - } - // upload manager will print errors. + + $form = (object)$_POST; + + set_field("workshop", "overallocation", $form->overallocation, "id", $workshop->id); + echo "<p align=\"center\"><b>".get_string("overallocation", "workshop").": $form->overallocation</b></p>\n"; + add_to_log($course->id, "workshop", "over allocation", "view.php?id=$cm->id", $form->overallocation,$cm->id); + + redirect("submissions.php?action=adminlist&id=$cm->id"); + } + + + /******************* user confirm delete ************************************/ + elseif ($action == 'userconfirmdelete' ) { + + if (empty($_GET['sid'])) { + error("User Confirm Delete: submission id missing"); } - print_continue("view.php?id=$cm->id"); - } else { - redirect("view.php?id=$cm->id#sid=$submission->id"); + + notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("submission", "workshop")), + "submissions.php?action=userdelete&id=$cm->id&sid=$_GET[sid]", "view.php?id=$cm->id"); } - } + + /******************* user delete ************************************/ + elseif ($action == 'userdelete' ) { + + if (empty($_GET['sid'])) { + error("User Delete: submission id missing"); + } + + if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) { + error("User Delete: can not get submission record"); + } + print_string("deleting", "workshop"); + // first get any assessments... + if ($assessments = workshop_get_assessments($submission, 'ALL')) { + foreach($assessments as $assessment) { + // ...and all the associated records... + delete_records("workshop_comments", "assessmentid", $assessment->id); + delete_records("workshop_grades", "assessmentid", $assessment->id); + echo "."; + } + // ...now delete the assessments... + delete_records("workshop_assessments", "submissionid", $submission->id); + } + // ...and the submission record... + delete_records("workshop_submissions", "id", $submission->id); + // ..and finally the submitted file + workshop_delete_submitted_files($workshop, $submission); + + print_continue("view.php?id=$cm->id"); + } + /*************** no man's land **************************************/ @@ -469,9 +1463,10 @@ error("Fatal Error: Unknown Action: ".$action."\n"); - } + } print_footer($course); - + ?> + diff --git a/mod/workshop/todo.txt b/mod/workshop/todo.txt new file mode 100644 index 00000000000..b35c3d30246 --- /dev/null +++ b/mod/workshop/todo.txt @@ -0,0 +1,27 @@ +To Do +===== + +Use a better method to measure bias in peer grades, probably based on the + percentage difference rather the relative difference used at present. + +Add time-agreed test to calculation of final grades. + +Comments are seen by a third party, is this standard Moodle behaviour? + +Cron function should email something to the assessor when an assessment is + agreed. + +Add a league table of submissions in the final phase for students. + +--- + +Self assessments may need special handling, remove duplication in student + view - Done + +Add student names to assessments and submissions for teachers - Done + + +Ray Kingdon +28 July 2003 + + diff --git a/mod/workshop/upload.php b/mod/workshop/upload.php index af265406308..29fb7761102 100644 --- a/mod/workshop/upload.php +++ b/mod/workshop/upload.php @@ -1,4 +1,4 @@ -<?php // $Id: upload.php, v1.0 30th April 2003 +<?PHP // $Id: upload.php, v1.0 30th April 2003 require("../../config.php"); require("lib.php"); @@ -6,115 +6,111 @@ require_variable($id); // CM ID + $newfile = $HTTP_POST_FILES["newfile"]; if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); } + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); } + if (! $workshop = get_record("workshop", "id", $cm->instance)) { error("Course module is incorrect"); } - require_login($course->id, false, $cm); + require_login($course->id); - $strworkshops = get_string('modulenameplural', 'workshop'); - $strworkshop = get_string('modulename', 'workshop'); - $strsubmission = get_string('submission', 'workshop'); + $strworkshops = get_string("modulenameplural", "workshop"); + $strworkshop = get_string("modulename", "workshop"); + $strupload = get_string("upload"); - print_header_simple(format_string($workshop->name)." : $strsubmission", "", - "<a href=\"index.php?id=$course->id\">$strworkshops</a> -> - <a href=\"view.php?a=$workshop->id\">".format_string($workshop->name,true)."</a> -> $strsubmission", + print_header_simple("$workshop->name : $strupload", "", + "<A HREF=index.php?id=$course->id>$strworkshops</A> -> + <A HREF=\"view.php?a=$workshop->id\">$workshop->name</A> -> $strupload", "", "", true); + /**** + if ($submissions = workshop_get_submissions($workshop, $USER)) { + if ($submission->grade and !$workshop->resubmit) { + error("You've already been graded - there's no point in uploading anything"); + } + } +****/ $timenow = time(); - - $form = data_submitted("nomatch"); // POST may come from two forms - - // don't be picky about not having a title - if (!$title = $form->title) { - $title = get_string("notitle", "workshop"); + if (!$title = $_POST['title']) { + notify(get_string("notitlegiven", "workshop") ); } - - // check that this is not a "rapid" second submission, caused by using the back button - // only check if a student, teachers may want to submit a set of workshop examples rapidly - if (isstudent($course->id)) { - if ($submissions = workshop_get_user_submissions($workshop, $USER)) { - // returns all submissions, newest on first - foreach ($submissions as $submission) { - if ($submission->timecreated > $timenow - $CFG->maxeditingtime) { - // ignore this new submission - redirect("view.php?id=$cm->id"); - print_footer($course); - exit(); - } - } - } - } - - // get the current set of submissions - $submissions = workshop_get_user_submissions($workshop, $USER); - // add new submission record - $newsubmission->workshopid = $workshop->id; - $newsubmission->userid = $USER->id; - $newsubmission->title = $title; - $newsubmission->description = trim($form->description); - $newsubmission->timecreated = $timenow; - if ($timenow > $workshop->submissionend) { - $newsubmission->late = 1; - } - if (!$newsubmission->id = insert_record("workshop_submissions", $newsubmission)) { - error("Workshop submission: Failure to create new submission record!"); - } - // see if this is a resubmission by looking at the previous submissions... - if ($submissions and ($workshop->submissionstart > time())) { // ...but not teacher submissions - // find the last submission - foreach ($submissions as $submission) { - $lastsubmission = $submission; - break; - } - // find all the possible assessments of this submission - // ...and if they have been assessed give the assessor a new assessment - // based on their old assessment, if the assessment has not be made - // just delete it! - if ($assessments = workshop_get_assessments($submission, 'ALL')) { - foreach ($assessments as $assessment) { - if ($assessment->timecreated < $timenow) { - // a Cold or Warm assessment... - if ($assessment->userid <> $USER->id) { - // only copy other students assessment not the self assessment (if present) - // copy it with feedback.. - $newassessment = workshop_copy_assessment($assessment, $newsubmission, true); - // set the resubmission flag so student can be emailed/told about - // this assessment - set_field("workshop_assessments", "resubmission", 1, "id", $newassessment->id); + else { + if (is_uploaded_file($newfile['tmp_name']) and $newfile['size'] > 0) { + if ($newfile['size'] > $workshop->maxbytes) { + notify(get_string("uploadfiletoobig", "assignment", $workshop->maxbytes)); + } + else { + $newfile_name = clean_filename($newfile['name']); + if ($newfile_name) { + // get the current set of submissions + $submissions = workshop_get_user_submissions($workshop, $USER); + // add new submission record + $newsubmission->workshopid = $workshop->id; + $newsubmission->userid = $USER->id; + $newsubmission->title = $title; + $newsubmission->timecreated = time(); + if (!$newsubmission->id = insert_record("workshop_submissions", $newsubmission)) { + error("Workshop upload: Failure to create new submission record!"); + } + // see if this is a resubmission by looking at the previous submissions... + if ($submissions and ($workshop->phase >1)) { // ...but not teacher submissions + // find the last submission + foreach ($submissions as $submission) { + $lastsubmission = $submission; + break; + } + // find all the possible assessments of this submission + // ...and if they have been assessed give the assessor a new assessment + // based on their old assessment, if the assessment has not be made + // just delete it! + if ($assessments = workshop_get_assessments($submission, 'ALL')) { + foreach ($assessments as $assessment) { + if ($assessment->timecreated < $timenow) { + // a Cold or Warm assessment - copy it with feedback.. + $newassessment = workshop_copy_assessment($assessment, $newsubmission, + true); + // set the resubmission flag so student can be emailed/told about + // this assessment + set_field("workshop_assessments", "resubmission", 1, "id", + $newassessment->id); + } else { + // a hot assessment, was not used, just dump it + delete_records("workshop_assessments", "id", $assessment->id); + } + } + } + add_to_log($course->id, "workshop", "resubmit", "view.php?id=$cm->id", + "$workshop->id","$cm->id"); + } + if (! $dir = workshop_file_area($workshop, $newsubmission)) { + error("Sorry, an error in the system prevents you from uploading files: contact your teacher or system administrator"); + } + if (move_uploaded_file($newfile['tmp_name'], "$dir/$newfile_name")) { + print_heading(get_string("uploadsuccess", "assignment", $newfile_name) ); + add_to_log($course->id, "workshop", "submit", "view.php?id=$cm->id", "$workshop->id", "$cm->id"); + } + else { + notify(get_string("uploaderror", "assignment") ); } - } else { - // a hot assessment, was not used, just dump it - delete_records("workshop_assessments", "id", $assessment->id); } } - } - add_to_log($course->id, "workshop", "resubmit", "view.php?id=$cm->id", "$workshop->id","$cm->id"); - } - // do something about the attachments, if there are any - if ($workshop->nattachments) { - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $um = new upload_manager(null,false,false,$course,false,$workshop->maxbytes); - if ($um->preprocess_files()) { - $dir = workshop_file_area_name($workshop, $newsubmission); - if ($um->save_files($dir)) { - print_heading(get_string("uploadsuccess", "workshop")); - } - // um will take care of printing errors. + } + elseif (!is_uploaded_file($newfile['tmp_name']) and !$newfile['size'] > 0 and $newfile['name']) { + notify(get_string("uploadfiletoobig", "assignment", $workshop->maxbytes)); + } + else { + notify(get_string("uploadnofilefound", "assignment")); } } - if (!$workshop->nattachments) { - print_heading(get_string("submitted", "workshop")." ".get_string("ok")); - } - add_to_log($course->id, "workshop", "submit", "view.php?id=$cm->id", "$workshop->id", "$cm->id"); - print_continue("view.php?id=$cm->id"); + print_continue("view.php?a=$workshop->id"); + print_footer($course); ?> - diff --git a/mod/workshop/version.php b/mod/workshop/version.php index 77073ddea37..087b4bedf3e 100644 --- a/mod/workshop/version.php +++ b/mod/workshop/version.php @@ -1,12 +1,12 @@ -<?php // $Id$ +<?PHP // $Id$ //////////////////////////////////////////////////////////////////////////////// // Code fragment to define the module version etc. // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2005041200; -$module->requires = 2005031000; // Requires this Moodle version +$module->version = 2004060400; +$module->requires = 2004051600; // Requires this Moodle version $module->cron = 60; ?> diff --git a/mod/workshop/view.php b/mod/workshop/view.php index 4aefadc41ef..d6dcc523a0b 100644 --- a/mod/workshop/view.php +++ b/mod/workshop/view.php @@ -1,54 +1,70 @@ -<?php // $Id: view.php, v1.1 23 Aug 2003 +<?PHP // $Id: view.php, v1.1 23 Aug 2003 /************************************************* ACTIONS handled are: + allowassessments (for teachers) + allowboth (for teachers) + allowsubmissions (for teachers) + close workshop( for teachers) displayfinalgrade (for students) notavailable (for students) + setupassignment (for teachers) studentsview - submitexample + submitassignment teachersview - showdescription - showallsubmissions - + ************************************************/ require("../../config.php"); require("lib.php"); require("locallib.php"); - - require_variable($id); // Course Module ID - optional_variable($action, ''); - optional_variable($sort, "lastname"); - optional_variable($dir, "ASC"); - - $timenow = time(); + + optional_variable($id); // Course Module ID + optional_variable($a); // workshop ID // get some useful stuff... - if (! $cm = get_record("course_modules", "id", $id)) { - error("Course Module ID was incorrect"); - } - if (! $course = get_record("course", "id", $cm->course)) { - error("Course is misconfigured"); - } - if (! $workshop = get_record("workshop", "id", $cm->instance)) { - error("Course module is incorrect"); + if ($id) { + if (! $cm = get_record("course_modules", "id", $id)) { + error("Course Module ID was incorrect"); + } + + if (! $course = get_record("course", "id", $cm->course)) { + error("Course is misconfigured"); + } + + if (! $workshop = get_record("workshop", "id", $cm->instance)) { + error("Course module is incorrect"); + } + + } else { + if (! $workshop = get_record("workshop", "id", $a)) { + error("Course module is incorrect"); + } + if (! $course = get_record("course", "id", $workshop->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id)) { + error("Course Module ID was incorrect"); + } } - require_login($course->id, false, $cm); + require_login($course->id); + + // ...log activity... + add_to_log($course->id, "workshop", "view", "view.php?id=$cm->id", $workshop->id, $cm->id); $strworkshops = get_string("modulenameplural", "workshop"); $strworkshop = get_string("modulename", "workshop"); - $straction = ($action) ? '-> '.get_string($action, 'workshop') : ''; // ...display header... - print_header_simple(format_string($workshop->name), "", - "<a href=\"index.php?id=$course->id\">$strworkshops</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($workshop->name,true)."</a> $straction", + print_header_simple("$workshop->name", "", + "<A HREF=index.php?id=$course->id>$strworkshops</A> -> $workshop->name", "", "", true, update_module_button($cm->id, $course->id, $strworkshop), navmenu($course, $cm)); - // ...and if necessary set default action - + // ...and if necessary set default action + + optional_variable($action); if (isteacher($course->id)) { if (empty($action)) { // no action specified, either go straight to elements page else the admin page // has the assignment any elements @@ -64,160 +80,279 @@ if (!$cm->visible) { notice(get_string("activityiscurrentlyhidden")); } - if ($timenow < $workshop->submissionstart) { - $action = 'notavailable'; - } else if (!$action) { - if ($timenow < $workshop->assessmentend) { - $action = 'studentsview'; - } else { - $action = 'displayfinalgrade'; - } + switch ($workshop->phase) { + case 0 : + case 1 : $action = 'notavailable'; break; + case 2 : + case 3 : + case 4 : $action = 'studentsview'; break; + case 5 : $action = 'notavailable'; break; + case 6 : $action = 'displayfinalgrade'; } } else { // it's a guest, oh no! $action = 'notavailable'; } + + + /************** allow (peer) assessments only (move to phase 4) (for teachers)**/ + if ($action == 'allowassessments') { - // ...log activity... - add_to_log($course->id, "workshop", "view", "view.php?id=$cm->id", $workshop->id, $cm->id); + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + // move to phase 4 + set_field("workshop", "phase", 4, "id", "$workshop->id"); + add_to_log($course->id, "workshop", "assessments only", "view.php?id=$cm->id", "$workshop->id", $cm->id); + redirect("view.php?a=$workshop->id", get_string("movingtophase", "workshop", 4)); + } + + + /************** allow both (submissions and assessments) (move to phase 3) (for teachers)**/ + if ($action == 'allowboth') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + // move to phase 3 + set_field("workshop", "phase", 3, "id", "$workshop->id"); + add_to_log($course->id, "workshop", "allow both", "view.php?id=$cm->id", "$workshop->id", $cm->id); + redirect("view.php?a=$workshop->id", get_string("movingtophase", "workshop", 3)); + } + + + /************** allow submissions only (move to phase 2) (for teachers)**/ + if ($action == 'allowsubmissions') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + // move to phase 2, check that teacher has made enough submissions + if (workshop_count_teacher_submissions($workshop) < $workshop->ntassessments) { + redirect("view.php?id=$cm->id", get_string("notenoughexamplessubmitted", "workshop", + $course->teacher)); + } + else { + set_field("workshop", "phase", 2, "id", "$workshop->id"); + add_to_log($course->id, "workshop", "submissions", "view.php?id=$cm->id", "$workshop->id", $cm->id); + redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 2)); + } + } + + + /****************** close workshop for student assessments/submissions (move to phase 5) (for teachers)**/ + elseif ($action == 'closeworkshop') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + // move to phase 5 + set_field("workshop", "phase", 5, "id", "$workshop->id"); + add_to_log($course->id, "workshop", "close", "view.php?id=$cm->id", "$workshop->id", $cm->id); + redirect("view.php?a=$workshop->id", get_string("movingtophase", "workshop", 5)); + } + /****************** display final grade (for students) ************************************/ - if ($action == 'displayfinalgrade' ) { + elseif ($action == 'displayfinalgrade' ) { - print_heading("<b><a href=\"view.php?id=$cm->id&amp;action=showdescription\">". - get_string("showdescription", 'workshop')."</a></b>"); + // get the final weights from the database + $teacherweight = get_field("workshop","teacherweight", "id", $workshop->id); + $peerweight = get_field("workshop","peerweight", "id", $workshop->id); + $includeteachersgrade = get_field("workshop","includeteachersgrade", "id", $workshop->id); + $biasweight = get_field("workshop","biasweight", "id", $workshop->id); + $reliabilityweight = get_field("workshop","reliabilityweight", "id", $workshop->id); + $gradingweight = get_field("workshop","gradingweight", "id", $workshop->id); + // work out what to show in the final grades tables and what to include in the calculation of the final grade + // teacher grades? + if ($workshop->gradingstrategy and $teacherweight) { + $useteachersgrades = 1; + } + else { + $useteachersgrades = 0; + } + // peergrades? + if ($workshop->gradingstrategy and $workshop->nsassessments and $peerweight) { + $usepeergrades = 1; + } + else { + $usepeergrades = 0; + } + // bias grades? + if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and $biasweight ) { + $usebiasgrades = 1; + } + else { + $usebiasgrades = 0; + } + // reliability grades? + if ((($workshop->ntassessments >= 3) or ($workshop->nsassessments >= 3)) and $reliabilityweight ) { + $usereliabilitygrades = 1; + } + else { + $usereliabilitygrades = 0; + } + // grading grades? + if (($workshop->ntassessments or $workshop->nsassessments) and $gradingweight ) { + $usegradinggrades = 1; + } + else { + $usegradinggrades = 0; + } + // show the final grades as stored in the tables... + print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop"); if ($submissions = workshop_get_user_submissions($workshop, $USER)) { // any submissions from user? - print_heading(get_string("displayoffinalgrades", "workshop")); echo "<center><table border=\"1\" width=\"90%\"><tr>"; echo "<td><b>".get_string("submissions", "workshop")."</b></td>"; - if ($workshop->wtype) { - echo "<td align=\"center\"><b>".get_string("assessmentsdone", "workshop")."</b></td>"; - echo "<td align=\"center\"><b>".get_string("gradeforassessments", "workshop")."</b></td>"; - } - echo "<td align=\"center\"><b>".get_string("teacherassessments", "workshop", + if ($useteachersgrades) { + echo "<td align=\"center\"><b>".get_string("teacherassessments", "workshop", $course->teacher)."</b></td>"; - if ($workshop->wtype) { - echo "<td align=\"center\"><b>".get_string("studentassessments", "workshop", + } + if ($usepeergrades) { + echo "<td align=\"center\"><b>".get_string("studentassessments", "workshop", $course->student)."</b></td>"; } - echo "<td align=\"center\"><b>".get_string("gradeforsubmission", "workshop")."</b></td>"; - echo "<td align=\"center\"><b>".get_string("overallgrade", "workshop")."</b></td></tr>\n"; + echo "<td align=\"center\"><b>".get_string("assessmentsdone", "workshop")."</b></td>"; + if ($usebiasgrades) { + echo "<td align=\"center\"><b>".get_string("gradeforbias", "workshop")."</b></td>"; + } + if ($usereliabilitygrades) { + echo "<td align=\"center\"><b>".get_string("gradeforreliability", "workshop")."</b></td>"; + } + if ($usegradinggrades) { + echo "<td align=\"center\"><b>".get_string("gradeforassessments", "workshop")."</b></td>"; + } + echo "<td align=\"center\"><b>".get_string("overallgrade", "workshop")."</b></td></TR>\n"; + // now the weights + echo "<TR><td><b>".get_string("weights", "workshop")."</b></td>"; + if ($useteachersgrades) { + echo "<td align=\"center\"><b>$WORKSHOP_FWEIGHTS[$teacherweight]</b></td>\n"; + } + if ($usepeergrades) { + echo "<td align=\"center\"><b>$WORKSHOP_FWEIGHTS[$peerweight]</b></td>\n"; + } + echo "<td><b>&nbsp;</b></td>\n"; + if ($usebiasgrades) { + echo "<td align=\"center\"><b>$WORKSHOP_FWEIGHTS[$biasweight]</b></td>\n"; + } + if ($usereliabilitygrades) { + echo "<td align=\"center\"><b>$WORKSHOP_FWEIGHTS[$reliabilityweight]</b></td>\n"; + } + if ($usegradinggrades) { + echo "<td align=\"center\"><b>$WORKSHOP_FWEIGHTS[$gradingweight]</b></td>\n"; + } + echo "<td><b>&nbsp;</b></td></TR>\n"; foreach ($submissions as $submission) { - $grade = workshop_submission_grade($workshop, $submission); - echo "<tr><td>".workshop_print_submission_title($workshop, $submission)."</td>\n"; - if ($workshop->wtype) { - echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $USER, $gradinggrade)."</td>"; - echo "<td align=\"center\">$gradinggrade</td>"; - } - echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, + echo "<TR><td>".workshop_print_submission_title($workshop, $submission)."</td>\n"; + if ($useteachersgrades) { + echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, "teacher")."</td>"; - if ($workshop->wtype) { - echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, + } + if ($usepeergrades) { + echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, "student")."</td>"; } - echo "<td align=\"center\">$grade</td>"; - echo "<td align=\"center\">".number_format($gradinggrade + $grade, 1)."</td></tr>\n"; + echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $USER)."</td>"; + if ($usebiasgrades) { + echo "<td align=\"center\">$submission->biasgrade</td>"; + } + if ($usereliabilitygrades) { + echo "<td align=\"center\">$submission->reliabilitygrade</td>"; + } + if ($usegradinggrades) { + echo "<td align=\"center\">$submission->gradinggrade</td>"; + } + echo "<td align=\"center\">$submission->finalgrade</td></TR>\n"; } - echo "</table><br clear=\"all\" />\n"; - workshop_print_key($workshop); - } else { - print_heading(get_string('nowork', 'workshop')); } + echo "</TABLE><BR CLEAR=ALL>\n"; + echo "<p>&lt; &gt; ".get_string("assessmentdropped", "workshop")."</p>\n"; if ($workshop->showleaguetable) { workshop_print_league_table($workshop); } + echo "<br />".get_string("allgradeshaveamaximumof", "workshop", $workshop->grade); } + /****************** make final grades available (go to phase 6) (for teachers only)********/ + elseif ($action == 'makefinalgradesavailable') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + set_field("workshop", "phase", 6, "id", "$workshop->id"); + add_to_log($course->id, "workshop", "display grades", "view.php?id=$cm->id", "$workshop->id", $cm->id); + redirect("view.php?a=$workshop->id", get_string("movingtophase", "workshop", 6)); + } + + /****************** assignment not available (for students)***********************/ elseif ($action == 'notavailable') { print_heading(get_string("notavailable", "workshop")); } + /****************** set up assignment (move back to phase 1) (for teachers)***********************/ + elseif ($action == 'setupassignment') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + set_field("workshop", "phase", 1, "id", "$workshop->id"); + add_to_log($course->id, "workshop", "set up", "view.php?id=$cm->id", "$workshop->id", $cm->id); + redirect("view.php?a=$workshop->id", get_string("movingtophase", "workshop", 1)); + } + + /****************** student's view could be in 1 of 4 stages ***********************/ elseif ($action == 'studentsview') { - // is a password needed? - if ($workshop->usepassword) { - $correctpass = false; - if (isset($_POST['userpassword'])) { - if ($workshop->password == md5(trim($_POST['userpassword']))) { - $USER->workshoploggedin[$workshop->id] = true; - $correctpass = true; - } - } elseif (isset($USER->workshoploggedin[$workshop->id])) { - $correctpass = true; - } - - if (!$correctpass) { - print_simple_box_start("center"); - echo "<form name=\"password\" method=\"post\" action=\"view.php\">\n"; - echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n"; - echo "<table cellpadding=\"7px\">"; - if (isset($_POST['userpassword'])) { - echo "<tr align=\"center\" style='color:#DF041E;'><td>".get_string("wrongpassword", "workshop"). - "</td></tr>"; - } - echo "<tr align=\"center\"><td>".get_string("passwordprotectedworkshop", "workshop", format_string($workshop->name)). - "</td></tr>"; - echo "<tr align=\"center\"><td>".get_string("enterpassword", "workshop"). - " <input type=\"password\" name=\"userpassword\" /></td></tr>"; - - echo "<tr align=\"center\"><td>"; - echo "<input type=\"button\" value=\"".get_string("cancel"). - "\" onclick=\"parent.location='../../course/view.php?id=$course->id';\"> "; - echo "<input type=\"button\" value=\"".get_string("continue"). - "\" onclick=\"document.password.submit();\" />"; - echo "</td></tr></table>"; - print_simple_box_end(); - exit(); - } - } workshop_print_assignment_info($workshop); - - // if the student has not yet submitted show the full description - if (!record_exists('workshop_submissions', 'workshopid', $workshop->id, 'userid', $USER->id)) { - print_simple_box(format_text($workshop->description, $workshop->format), 'center', '70%', '', 5, 'generalbox', 'intro'); - } else { - print_heading("<b><a href=\"view.php?id=$cm->id&amp;action=showdescription\">". - get_string("showdescription", 'workshop')."</a></b>"); - } - // in Stage 1? - are there any teacher's submissions? and... - // ...has student assessed the required number of the teacher's submissions + // ...has student assessed the required number of the teacher's submissions if ($workshop->ntassessments and (!workshop_test_user_assessments($workshop, $USER))) { - print_heading(get_string("pleaseassesstheseexamplesfromtheteacher", "workshop", + print_heading(get_string("pleaseassesstheseexamplesfromtheteacher", "workshop", $course->teacher)); workshop_list_teacher_submissions($workshop, $USER); } // in stage 2? - submit own first attempt else { - if ($workshop->ntassessments) { - // show assessment of the teacher's examples, there may be feedback from teacher - print_heading(get_string("yourassessmentsofexamplesfromtheteacher", "workshop", + if ($workshop->ntassessments) { + // show assessment the teacher's examples, there may be feedback from teacher + print_heading(get_string("yourassessmentsofexamplesfromtheteacher", "workshop", $course->teacher)); workshop_list_teacher_submissions($workshop, $USER); } - // has user submitted anything yet? + // has user submitted anything yet? (only allowed in phases 2 and 3) if (!workshop_get_user_submissions($workshop, $USER)) { - if ($timenow < $workshop->submissionend) { + if ($workshop->phase < 4) { // print upload form print_heading(get_string("submitassignmentusingform", "workshop").":"); workshop_print_upload_form($workshop); } else { print_heading(get_string("submissionsnolongerallowed", "workshop")); } - } + } // in stage 3? - grade other student's submissions, resubmit and list all submissions else { + // list any assessments by teachers + if (workshop_count_teacher_assessments($workshop, $USER)) { + print_heading(get_string("assessmentsby", "workshop", $course->teachers)); + workshop_list_teacher_assessments($workshop, $USER); + } // is self assessment used in this workshop? if ($workshop->includeself) { // prints a table if there are any submissions which have not been self assessed yet workshop_list_self_assessments($workshop, $USER); } - // if peer assessments are being done then show some to assess... - if ($workshop->nsassessments and ($workshop->assessmentstart < $timenow and $workshop->assessmentend > $timenow)) { + // if peer assessments are being done and workshop is in phase 3 then show some to assess... + if ($workshop->nsassessments and ($workshop->phase > 2)) { workshop_list_student_submissions($workshop, $USER); } // ..and any they have already done (and have gone cold)... @@ -225,345 +360,178 @@ print_heading(get_string("yourassessments", "workshop")); workshop_list_assessed_submissions($workshop, $USER); } - // list any assessments by teachers - if (workshop_count_teacher_assessments_by_user($workshop, $USER) and ($timenow > $workshop->releasegrades)) { - print_heading(get_string("assessmentsby", "workshop", $course->teachers)); - workshop_list_teacher_assessments_by_user($workshop, $USER); - } // ... and show peer assessments if (workshop_count_peer_assessments($workshop, $USER)) { print_heading(get_string("assessmentsby", "workshop", $course->students)); workshop_list_peer_assessments($workshop, $USER); } // list previous submissions - print_heading(get_string("yoursubmissions", "workshop")); + print_heading(get_string("submissions", "workshop")); workshop_list_user_submissions($workshop, $USER); - - // are resubmissions allowed and the workshop is in submission/assessment phase? - if ($workshop->resubmit and ($timenow > $workshop->assessmentstart and $timenow < $workshop->submissionend)) { - // see if there are any cold assessments of the last submission + // are resubmissions allowed and the workshop is in submission phases (2 and 3)? + if ($workshop->resubmit and ($workshop->phase < 4)) { + // see if there are any cold (warm included as well) assessments of the last submission // if there are then print upload form if ($submissions = workshop_get_user_submissions($workshop, $USER)) { foreach ($submissions as $submission) { $lastsubmission = $submission; break; } - $n = 0; // number of cold assessments (not include self assessments) - if ($assessments = workshop_get_assessments($lastsubmission)) { - foreach ($assessments as $assessment) { - if ($assessment->userid <> $USER->id) { - $n++; - } - } - } - if ($n) { - echo "<hr size=\"1\" noshade=\"noshade\" />"; + if (workshop_count_assessments($lastsubmission)) { + echo "<hr size=\"1\" noshade>"; print_heading(get_string("submitrevisedassignment", "workshop").":"); workshop_print_upload_form($workshop); - echo "<hr size=\"1\" noshade=\"noshade\" />"; + echo "<hr size=\"1\" noshade>"; } } } + // allow user to list their submissions and assessments in a general way???? + // print_heading("<A HREF=\"submissions.php?action=listallsubmissions&id=$cm->id\">". + // get_string("listofallsubmissions", "workshop")); } } } - /****************** submission of example by teacher only***********************/ - elseif ($action == 'submitexample') { - + /****************** submission of assignment by teacher only***********************/ + elseif ($action == 'submitassignment') { + if (!isteacher($course->id)) { error("Only teachers can look at this page"); } - - // list previous submissions from teacher + + $strdifference = format_time($workshop->deadline - time()); + if (($workshop->deadline - time()) < 0) { + $strdifference = "<FONT COLOR=RED>$strdifference</FONT>"; + } + $strduedate = userdate($workshop->deadline)." ($strdifference)"; + + workshop_print_assignment_info($workshop); + + // list previous submissions from teacher workshop_list_user_submissions($workshop, $USER); - - echo "<hr size=\"1\" noshade=\"noshade\" />"; - + + echo "<HR SIZE=1 NOSHADE>"; + // print upload form - print_heading(get_string("submitexampleassignment", "workshop").":"); + print_heading(get_string("submitassignment", "assignment").":"); workshop_print_upload_form($workshop); - - print_heading("<a target=\"{$CFG->framename}\" href=\"view.php?id=$cm->id\">".get_string("cancel")."</a>"); } - /****************** teacher's view - display admin page ************/ + /****************** teacher's view - display admin page (current phase options) ************/ elseif ($action == 'teachersview') { if (!isteacher($course->id)) { error("Only teachers can look at this page"); } - // automatically grade assessments if workshop has examples and/or peer assessments - if ($workshop->gradingstrategy and ($workshop->ntassessments or $workshop->nsassessments)) { - workshop_grade_assessments($workshop); - } - - /// Check to see if groups are being used in this workshop - /// and if so, set $currentgroup to reflect the current group - $changegroup = isset($_GET['group']) ? $_GET['group'] : -1; // Group change requested? - $groupmode = groupmode($course, $cm); // Groups are being used? - $currentgroup = get_and_set_current_group($course, $groupmode, $changegroup); - - /// Print settings and things in a table across the top - echo '<table width="100%" border="0" cellpadding="3" cellspacing="0"><tr valign="top">'; - - /// Allow the teacher to change groups (for this session) - if ($groupmode and isteacheredit($course->id)) { - if ($groups = get_records_menu("groups", "courseid", $course->id, "name ASC", "id,name")) { - echo '<td>'; - print_group_menu($groups, $groupmode, $currentgroup, "view.php?id=$cm->id"); - echo '</td>'; - } - } - /// Print admin links - echo "<td align=\"right\">"; - echo "<a href=\"submissions.php?id=$cm->id&amp;action=adminlist\">". - get_string("administration")."</a>\n"; - - echo '</td></tr>'; - - echo '<tr><td>'; + print_heading_with_help(get_string("managingassignment", "workshop"), "managing", "workshop"); + workshop_print_assignment_info($workshop); - print_heading("<a href=\"view.php?id=$cm->id&amp;action=showdescription\">". - get_string("showdescription", 'workshop')."</a>"); - echo '</td></tr>'; - - /// Print grade tables ///////////////////////////////////////////////// - - // display the teacher's submissions - if ($workshop->ntassessments) { - $table->head = array(get_string("examplesubmissions", "workshop"), - get_string("assessmentsby", "workshop", $course->teachers), - get_string("assessmentsby", "workshop", $course->students)); - $table->data = array(); - if ($submissions = workshop_get_teacher_submissions($workshop)) { - foreach ($submissions as $submission) { - $teacherassessments = workshop_print_submission_assessments($workshop, $submission, "teacher"); - // If not yet assessed, show assess link - if ($teacherassessments == '&nbsp;') { - $teacherassessments = '<a href="assess.php?id='. - $cm->id.'&amp;sid='.$submission->id.'">'.get_string('assess', 'workshop').'</a>'; - } - $title = workshop_print_submission_title($workshop, $submission). - " <a href=\"submissions.php?action=editsubmission&amp;id=$cm->id&amp;sid=$submission->id\">". - "<img src=\"$CFG->pixpath/t/edit.gif\" ". - 'height="11" width="11" border="0" alt="'.get_string('edit').'" /></a>'. - " <a href=\"submissions.php?action=confirmdelete&amp;id=$cm->id&amp;sid=$submission->id\">". - "<img src=\"$CFG->pixpath/t/delete.gif\" ". - 'height="11" width="11" border="0" alt="'.get_string('delete', 'workshop').'" /></a>'; - $table->data[] = array($title, $teacherassessments, - workshop_print_submission_assessments($workshop, $submission, "student")); - } - } - // Put in a submission link - $table->data[] = array("<b><a href=\"view.php?id=$cm->id&amp;action=submitexample\">". - get_string("submitexampleassignment", "workshop")."</a></b>". - helpbutton("submissionofexamples", get_string("submitexampleassignment", "workshop"), "workshop", true, false, '', true), - '&nbsp;', '&nbsp;'); - print_table($table); - workshop_print_key($workshop); - } - - // Get all the students - if (!$users = get_course_students($course->id, "u.lastname, u.firstname")) { - print_heading(get_string("nostudentsyet")); - print_footer($course); - exit; - } - - /// Now prepare table with student assessments and submissions - $tablesort->data = array(); - $tablesort->sortdata = array(); - foreach ($users as $user) { - // skip if student not in group - if ($currentgroup) { - if (!ismember($currentgroup, $user->id)) { - continue; - } - } - if ($submissions = workshop_get_user_submissions($workshop, $user)) { - foreach ($submissions as $submission) { - $data = array(); - $sortdata = array(); - - $data[] = "<a name=\"userid$user->id\" href=\"{$CFG->wwwroot}/user/view.php?id=$user->id&amp;course=$course->id\">". - fullname($user).'</a>'; - $sortdata['firstname'] = $user->firstname; - $sortdata['lastname'] = $user->lastname; - - if ($workshop->wtype) { - $data[] = workshop_print_user_assessments($workshop, $user, $gradinggrade); - - $data[] = $gradinggrade; - $sortdata['agrade'] = $gradinggrade; - } - - $data[] = workshop_print_submission_title($workshop, $submission). - " <a href=\"submissions.php?action=adminamendtitle&amp;id=$cm->id&amp;sid=$submission->id\">". - "<img src=\"$CFG->pixpath/t/edit.gif\" ". - 'height="11" width="11" border="0" alt="'.get_string('amendtitle', 'workshop').'" /></a>'. - " <a href=\"submissions.php?action=confirmdelete&amp;id=$cm->id&amp;sid=$submission->id\">". - "<img src=\"$CFG->pixpath/t/delete.gif\" ". - 'height="11" width="11" border="0" alt="'.get_string('delete', 'workshop').'" /></a>'; - $sortdata['title'] = $submission->title; - - $data[] = userdate($submission->timecreated, get_string('datestr', 'workshop')); - $sortdata['date'] = $submission->timecreated; - - if (($tmp = workshop_print_submission_assessments($workshop, $submission, "teacher")) == '&nbsp;') { - $data[] = '<a href="assess.php?id='. - $cm->id.'&amp;sid='.$submission->id.'">'.get_string('assess', 'workshop').'</a>'; - $sortdata['tassmnt'] = -1; - } else { - $data[] = $tmp; - $sortdata['tassmnt'] = 1; // GWD still have to fix this - } - - if ($workshop->wtype) { - $data[] = workshop_print_submission_assessments($workshop, $submission, "student"); - } - - $grade = workshop_submission_grade($workshop, $submission); - $data[] = $grade; - $sortdata['sgrade'] = $grade; - - if ($workshop->wtype) { - $data[] = number_format($gradinggrade + $grade, 1); - $sortdata['ograde'] = $gradinggrade + $grade; - } - - $tablesort->data[] = $data; - $tablesort->sortdata[] = $sortdata; - } - } - } - - function workshop_sortfunction($a, $b) { - global $sort, $dir; - if ($dir == 'ASC') { - return ($a[$sort] > $b[$sort]); - } else { - return ($a[$sort] < $b[$sort]); - } - } - uasort($tablesort->sortdata, 'workshop_sortfunction'); - $table->data = array(); - foreach($tablesort->sortdata as $key => $row) { - $table->data[] = $tablesort->data[$key]; - } - - if ($workshop->wtype) { - $table->align = array ('left', 'center', 'center', 'left', 'center', 'center', 'center', 'center', 'center', 'center'); - $columns = array('firstname', 'lastname', 'agrade', 'title', 'date', 'tassmnt', 'sgrade', 'ograde'); + + $tabs->names = array("1. ".get_string("phase1", "workshop"), + "2. ".get_string("phase2", "workshop", $course->student), + "3. ".get_string("phase3", "workshop", $course->student), + "4. ".get_string("phase4", "workshop", $course->student), + "5. ".get_string("phase5", "workshop"), + "6. ".get_string("phase6", "workshop")); + $tabs->urls = array("view.php?id=$cm->id&action=setupassignment", + "view.php?id=$cm->id&action=allowsubmissions", + "view.php?id=$cm->id&action=allowboth", + "view.php?id=$cm->id&action=allowassessments", + "view.php?id=$cm->id&action=closeworkshop", + "view.php?id=$cm->id&action=makefinalgradesavailable"); + if ($workshop->phase) { // phase 1 or more + $tabs->highlight = $workshop->phase - 1; } else { - $table->align = array ('left', 'left', 'center', 'center', 'center', 'center'); - $columns = array('firstname', 'lastname', 'title', 'date', 'tassmnt', 'ograde'); + $tabs->highlight = 0; // phase is zero } - $table->width = "95%"; - - foreach ($columns as $column) { - $string[$column] = get_string("$column", 'workshop'); - if ($sort != $column) { - $columnicon = ''; - $columndir = 'ASC'; - } else { - $columndir = $dir == 'ASC' ? 'DESC':'ASC'; - if ($column == 'lastaccess') { - $columnicon = $dir == 'ASC' ? 'up':'down'; - } else { - $columnicon = $dir == 'ASC' ? 'down':'up'; - } - $columnicon = " <img src=\"$CFG->pixpath/t/$columnicon.gif\" alt=\"$columnicon\" />"; - - } - $$column = "<a href=\"view.php?id=$id&amp;sort=$column&amp;dir=$columndir\">".$string[$column]."</a>$columnicon"; + workshop_print_tabbed_heading($tabs); + echo "<center>\n"; + switch ($workshop->phase) { + case 0: + case 1: // set up assignment + if ($workshop->nelements) { + echo "<p><b><a href=\"assessments.php?id=$cm->id&action=editelements\">". + get_string("amendassessmentelements", "workshop")."</a></b> \n"; + helpbutton("elements", get_string("amendassessmentelements", "workshop"), "workshop"); + } + if ($workshop->ntassessments) { + // if teacher examples show submission and assessment links + echo "<p><b><a href=\"view.php?id=$cm->id&action=submitassignment\">". + get_string("submitexampleassignment", "workshop")."</a></b> \n"; + helpbutton("submissionofexamples", get_string("submitexampleassignment", "workshop"), + "workshop"); + echo "<p><b><a href=\"submissions.php?id=$cm->id&action=listforassessmentteacher\">". + get_string("teachersubmissionsforassessment", "workshop", + workshop_count_teacher_submissions_for_assessment($workshop, $USER)). + "</a></b> \n"; + helpbutton("assessmentofexamples", get_string("teachersubmissionsforassessment", + "workshop"), "workshop"); + } + break; + + case 2: // submissions and assessments + case 3: + case 4: + if ($workshop->ntassessments) { // if teacher example show student assessments link + echo "<p><b><a href=\"assessments.php?id=$cm->id&action=listungradedteachersubmissions\">". + get_string("ungradedassessmentsofteachersubmissions", "workshop", + workshop_count_ungraded_assessments_teacher($workshop))."</a></b> \n"; + helpbutton("ungradedassessments_teacher", + get_string("ungradedassessmentsofteachersubmissions", "workshop"), "workshop"); + } + echo "<p><b><a href=\"assessments.php?id=$cm->id&action=listungradedstudentsubmissions\">". + get_string("ungradedassessmentsofstudentsubmissions", "workshop", + workshop_count_ungraded_assessments_student($workshop))."</a></b> \n"; + helpbutton("ungradedassessments_student", + get_string("ungradedassessmentsofstudentsubmissions", "workshop"), "workshop"); + echo "<p><b><a href=\"submissions.php?id=$cm->id&action=listforassessmentstudent\">". + get_string("studentsubmissionsforassessment", "workshop", + workshop_count_student_submissions_for_assessment($workshop, $USER))."</a></b> \n"; + helpbutton("gradingsubmissions", + get_string("studentsubmissionsforassessment", "workshop"), "workshop"); + break; + + case 5: // calculate final grades + if ($workshop->ntassessments) { // if teacher example show student assessments link + echo "<p><b><a href=\"assessments.php?id=$cm->id&action=listungradedteachersubmissions\">". + get_string("ungradedassessmentsofteachersubmissions", "workshop", + workshop_count_ungraded_assessments_teacher($workshop))."</a></b> \n"; + helpbutton("ungradedassessments_teacher", + get_string("ungradedassessmentsofteachersubmissions", "workshop"), "workshop"); + } + echo "<p><b><a href=\"assessments.php?id=$cm->id&action=listungradedstudentsubmissions\">". + get_string("ungradedassessmentsofstudentsubmissions", "workshop", + workshop_count_ungraded_assessments_student($workshop))."</a></b> \n"; + helpbutton("ungradedassessments_student", + get_string("ungradedassessmentsofstudentsubmissions", "workshop"), "workshop"); + echo "<p><b><a href=\"submissions.php?id=$cm->id&action=listforassessmentstudent\">". + get_string("studentsubmissionsforassessment", "workshop", + workshop_count_student_submissions_for_assessment($workshop, $USER))."</a></b> \n"; + helpbutton("gradingsubmissions", + get_string("studentsubmissionsforassessment", "workshop"), "workshop"); + print_heading("<a href=\"submissions.php?id=$cm->id&action=displayfinalweights\">". + get_string("calculationoffinalgrades", "workshop")."</a>"); + print_heading("<a href=\"submissions.php?id=$cm->id&action=analysisofassessments\">". + get_string("analysisofassessments", "workshop")."</a>"); + break; + + case 6: // show final grades + print_heading("<A HREF=\"submissions.php?id=$cm->id&action=displayfinalgrades\">". + get_string("displayoffinalgrades", "workshop")."</A>"); } - - if ($workshop->wtype) { - $table->head = array ("$firstname / $lastname", get_string("assmnts", "workshop"), $agrade, - $title, $date, $tassmnt, get_string('passmnts', 'workshop'), $sgrade, $ograde); - } else { - $table->head = array ("$firstname / $lastname", $title, $date, $tassmnt, $ograde); - } - - echo '<tr><td>'; - print_table($table); - echo '</td></tr>'; - echo '<tr><td>'; - workshop_print_key($workshop); - echo '</td></tr>'; - - // grading grade analysis - unset($table); - $table->head = array (get_string("count", "workshop"), get_string("mean", "workshop"), - get_string("standarddeviation", "workshop"), get_string("maximum", "workshop"), - get_string("minimum", "workshop")); - $table->align = array ("center", "center", "center", "center", "center"); - $table->size = array ("*", "*", "*", "*", "*"); - $table->cellpadding = 2; - $table->cellspacing = 0; - if ($currentgroup) { - $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean, - STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max - FROM {$CFG->prefix}groups_members g, {$CFG->prefix}workshop_assessments a - WHERE g.groupid = $currentgroup AND a.userid = g.userid AND a.timegraded > 0 - AND a.workshopid = $workshop->id"); - } else { // no group/all participants - $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean, - STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max - FROM {$CFG->prefix}workshop_assessments a - WHERE a.timegraded > 0 AND a.workshopid = $workshop->id"); - } - $table->data[] = array($stats->count, number_format($stats->mean * $workshop->gradinggrade / 100, 1), - number_format($stats->stddev * $workshop->gradinggrade /100, 1), - number_format($stats->max * $workshop->gradinggrade / 100, 1), - number_format($stats->min* $workshop->gradinggrade / 100, 1)); - echo '<tr><td>'; - print_heading(get_string("gradinggrade", "workshop")." ".get_string("analysis", "workshop")); - print_table($table); - echo '</td></tr>'; - - if ($workshop->showleaguetable and time() > $workshop->assessmentend) { - workshop_print_league_table($workshop); - if ($workshop->anonymous) { - echo "<p>".get_string("namesnotshowntostudents", "workshop", $course->students)."</p>\n"; - } - } - echo '</table>'; + print_heading("<A HREF=\"submissions.php?id=$cm->id&action=adminlist\">". + get_string("administration")."</A>"); } - - - /****************** show description ************/ - elseif ($action == 'showdescription') { - - workshop_print_assignment_info($workshop); - print_simple_box(format_text($workshop->description, $workshop->format), 'center', '70%', '', 5, 'generalbox', 'intro'); - print_continue($_SERVER["HTTP_REFERER"]); - } - - - /****************** teacher's view - list all submissions ************/ - elseif ($action == 'allsubmissions') { - - if ($submissions = get_records('workshop_submissions', 'workshopid', $workshop->id)) { - foreach($submissions as $submission) { - $user = get_record('user', 'id', $submission->userid); - print_heading('"'.$submission->title.'" '.get_string('by', 'workshop').' '.fullname($user)); - workshop_print_submission($workshop, $submission); - } - } - } - - + + /*************** no man's land **************************************/ else { error("Fatal Error: Unknown Action: ".$action."\n"); } - print_footer($course); - + ?> diff --git a/mod/workshop/viewassessment.php b/mod/workshop/viewassessment.php deleted file mode 100644 index 5debc6855a0..00000000000 --- a/mod/workshop/viewassessment.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php // $Id: viewassessment.php - - require("../../config.php"); - require("lib.php"); - require("locallib.php"); - - require_variable($aid); // Assessment ID - optional_variable($allowcomments, false); - optional_variable($redirect, ''); - - if (! $assessment = get_record("workshop_assessments", "id", $aid)) { - error("Assessment id is incorrect"); - } - if (! $submission = get_record('workshop_submissions', 'id', $assessment->submissionid)) { - error("Incorrect submission id"); - } - if (! $workshop = get_record("workshop", "id", $submission->workshopid)) { - error("Submission is incorrect"); - } - if (! $course = get_record("course", "id", $workshop->course)) { - error("Workshop is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $course->id)) { - error("No coursemodule found"); - } - - if (!$redirect) { - $redirect = urlencode($_SERVER["HTTP_REFERER"].'#sid='.$submission->id); - } - - require_login($course->id, false, $cm); - - $strworkshops = get_string("modulenameplural", "workshop"); - $strworkshop = get_string("modulename", "workshop"); - $strassess = get_string("viewassessment", "workshop"); - - /// Now check whether we need to display a frameset - - if (empty($_GET['frameset'])) { - echo "<head><title>{$course->shortname}: ".format_string($workshop->name,true)."</title></head>\n"; - echo "<frameset rows=\"90%,*\" border=\"10\">"; - echo "<frame src=\"viewassessment.php?id=$id&amp;aid=$aid&amp;allowcomments=$allowcomments&amp;frameset=top&amp;redirect=$redirect\" border=\"10\">"; - echo "<frame src=\"viewassessment.php?id=$id&amp;aid=$aid&amp;allowcomments=$allowcomments&amp;frameset=bottom&amp;redirect=$redirect\">"; - echo "</frameset>"; - exit; - } - - /// top frame with the navigation bar and the assessment form - - if (!empty($_GET['frameset']) and $_GET['frameset'] == "top") { - - print_header_simple(format_string($workshop->name), "", - "<a href=\"index.php?id=$course->id\">$strworkshops</a> -> - <a href=\"view.php?id=$cm->id\">".format_string($workshop->name,true)."</a> -> $strassess", - "", '<base target="_parent" />', true); - - // show assessment but don't allow changes - workshop_print_assessment($workshop, $assessment, false, $allowcomments); - - if (isteacher($course->id) and !isteacher($course->id, $assessment->userid)) { - print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop"); - include('assessment_grading_form.html'); - } - print_continue($redirect); - print_footer($course); - exit; - } - - /// print bottom frame with the submission - - print_header('', '', '', '', '<base target="_parent" />'); - $title = '"'.$submission->title.'" '; - if (isteacher($course->id)) { - $title .= ' '.get_string('by', 'workshop').' '.workshop_fullname($submission->userid, $course->id); - } - print_heading($title); - workshop_print_submission($workshop, $submission); - print_footer('none'); - -?> - diff --git a/pix/t/copy.gif b/pix/t/copy.gif deleted file mode 100644 index b38e0d08d004ad650cd82f51280ac6df8380cd20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 869 zcmZ?wbhEHb<YwSz_|5<V5)u-cnwo}&hL)C=US3|w$;rjV#XUVeOP4NPyLRo~y?c)x zJ9h2bwR`vOJ%9fE{rmUdzkmNf3PwX<ScHHMC<lP@0t1H^gDQuN$A$$CY)lLs83_gl zm^eAuBvd#Yni^R+d0ZrZI5e<uFmpI4bT~A&aImoDh}?M4aG+b#+|IzD=z$j-YnB<y Ofz6MOG%_+WSOWkbf&9b( diff --git a/pix/t/go.gif b/pix/t/go.gif deleted file mode 100755 index 0414ee5c52ed86b43cce6b43cbc4147091fd992e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHb<YwSzn8?Tg1poj4XIR7oWGMb*0SYiO=zv5)@(fH;J&hUMkN9rP-sqd9 Ve@5!%^IE5`uE$f2Jfj#GtO0QF6W;&; diff --git a/pix/t/log.gif b/pix/t/log.gif deleted file mode 100755 index a1268e84fec701f976db3736541418447afac1fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67 zcmZ?wbhEHb<YwSzn8?JCmX^i<1ByRc7#SFt7<51aAbAERktq$G$KG<ynX>Sf)$_A| N4qP>q4`yJn1^}J05MKZQ diff --git a/pix/t/message.gif b/pix/t/message.gif deleted file mode 100755 index f60d2718c3953f3c97b1477692b5f9934984a21e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmZ?wbhEHb<YwSzn8*ME|NsC0!odL~6@RiYGB7YR=zv5)@(fIpbNW{@zkS~{N0BM& U_1U8BlBLpWlN4I?JQx|Q0sr6?vj6}9 diff --git a/pix/t/moveleft.gif b/pix/t/moveleft.gif deleted file mode 100644 index b44f6e326abe8a674319025c0b0e0e22619566b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmchWF>aJm41@<M3Pfo(oPdZ32}I{+qf~%I6zY@+0YW}V8Y&LpE;+)UASoy)d;o3& zRKw>7XUJ<-mfstHGyeDd;_deI)1eOaOaD$tDV5ZcMHQh)MJZb0X=W%>S;|&=?pCN$ zRjO8bo_45HUFudFB{}4jOKzD0ZKToSF}FQ)=43=gbcAOtRc2&GcBF@bW@S`Gb(9B+ zyPeS$-O+}Tr{N4&xWi0^8Zn@u1dASn(MB3A9(xQ;&8f`J^!Q^eRaI7JdF(<#vn#u^ zjeDTDo33=Hu}2<Y@|rmC4+IXOMhs{uxe5n^(MB3APjb_y=5&=ONc=IDs=M0cid`sZ zmb*-jBuxNtah;%XOO)gRCa;MDCJf^cYQ%u%C0KAU7;U6IE1KK1sX1n21c^V!Qnft` zT<af-wb9w<TGBwR+-JQj%3)mT%(j=|L0%qa`3q|ttVu}oIj|+d!xN)^-=6&c81MJz z_|M)0>8D=K*!fTB(F^SkzVCm$zPoyO^z8k1qt{>ej~`!dcQ>!Dj-J2!@?-b;&9^5{ KKkRKbI{ORivR0)4 diff --git a/pix/t/preview.gif b/pix/t/preview.gif deleted file mode 100755 index 0889d1cd3b52a4c3449ff1aa6497ee73215f4925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmZ?wbhEHb<YwSz*v!B%Gi~O~ng7q6`G00++W-ImJ32aCTwE9!7=Uabi3t>cvM@3* za4_hAq(Ejku;>b$OzPS*{gyGGQKLdvOQEczM%8l-0Ub4E_U>hdK}+-!U#^<SU#uWu Lxl_`JiNP8G@;oIp diff --git a/pix/t/removeright.gif b/pix/t/removeright.gif deleted file mode 100644 index 7e1fb2deccaf4255031c0c2650f6f3e17d7a84d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmchWF=~}j5QR@bjPM9*AqXNQ5K;uYX(CoJ5V5nc4oNe0HW5KcVLRYnERw=v7GQ6a z9jMjGH&@r-Z63qid*(Z5{`c<v>Cx+pjW+tFzbB-WN@~fXicqAY6s_<yGnA<;Wh*^* zD^#f}RjWKtJJhKzb*qh%9CFGfw@iUH(rEFR+nzadGNK|n!ZVgCGqNH((nCSBGOD6F z$^*sS&ghEnXv4_UaE2?~VWvWj7|>9HMUTN~BaIf1J%*;{RAy&-{4tiQDyy?RcA=oz zmEGCKJy6_DSGv>KBM&fnO&s_K0*6o|1~imhg@eIpBaN0PxoJ~#y2=wI{uoQuU2Ss3 zE)+D&T_#78CIGm&PSCg|O7Z}c*Tex6hH(frVnFi}EI1g9HqxFI&28G$9J4Wk#2;g+ z+MWfj^$*3`=<IVXX`oi_v)&cuFs^iF+sp7EFAuZ)g*6V=B&7Kq*b?F4iBZ45?f?52 z|L@P<p9fpg551bP^PkY8Lv5YEIQp=AtcRO}+fQG1Z?1M8zx{f5xp(sU+0N<5?@xc; OTyMWT+kgH<Z|(ukuvWAH diff --git a/pix/t/stop.gif b/pix/t/stop.gif deleted file mode 100755 index d707473056e70b3a2f646da14948c4f0594e0556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHb<YwSzn8?Tg1poj4Kf=liWGMb*0SYiO=zv5)@(fH;J&hUMkN9rP-sqd9 Ve@5!%^IE5`uE$f2Jfj#GtO0mi6aN4J diff --git a/pix/t/switch.gif b/pix/t/switch.gif deleted file mode 100644 index 84ac3532459419c05bf4d53206d14f3864524fde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmV-?0E7QWNk%w1VG95Y0J9DNva+)O|NmiOVX3L9u&}VPv9YMAsI#-Po}QkZoSc-D zl&7bst*x!Eudo0A{{R30A^8LW000gEEC2ui01E&M000Cj5P=B}ZELvAIWb*GXq?a$ e<YsaO=m;>pecd{z?}>+K*bxazWynxO0029>=rm;j diff --git a/pix/t/switch_minus.gif b/pix/t/switch_minus.gif deleted file mode 100644 index 959a5c2286ba8e2eacac86e2c917a0eec6be90db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmZ?wbhEHb<YwSz*v!kYY15{aD_15aCT`fUVdKV)D^{%7ym|AKDN~j&Up{Z%ytQlB zu3x`?&YU^_|NmzI1I3>#j0_CC3_2hl$P5M+6@x}jo>+}7XMbwMT4X4?Pe^rc=zXy3 V_Vi;JmFKc_jY6Jkw{tL90|4C(FZ=)i diff --git a/pix/t/switch_plus.gif b/pix/t/switch_plus.gif deleted file mode 100644 index 84ac3532459419c05bf4d53206d14f3864524fde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmV-?0E7QWNk%w1VG95Y0J9DNva+)O|NmiOVX3L9u&}VPv9YMAsI#-Po}QkZoSc-D zl&7bst*x!Eudo0A{{R30A^8LW000gEEC2ui01E&M000Cj5P=B}ZELvAIWb*GXq?a$ e<YsaO=m;>pecd{z?}>+K*bxazWynxO0029>=rm;j diff --git a/pix/t/usernot.gif b/pix/t/usernot.gif deleted file mode 100755 index 9f0a7b1fe7638166dbcf64289c5a3cf51a86c93b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94 zcmZ?wbhEHb<YwSzSj5aQGtKzS%rpit`2YVugaITKf3h$#FfcRdfJ8uQ8JLwVl<%x+ mI-&Vs&k{EQ&hy-EtygZO%DN}5Vpx#5)$7$|gYy#@7_0#$C>oFe diff --git a/rss/file.php b/rss/file.php index 17ee76bce23..4715b99e4ce 100644 --- a/rss/file.php +++ b/rss/file.php @@ -2,9 +2,9 @@ //This file returns the required rss feeds //The URL format MUST include: // course: the course id - // user: the user id - // name: the name of the module (forum...) - // id: the id (instance) of the module (forumid...) + // user: the user id + // name: the name of the module (forum...) + // id: the id (instance) of the module (forumid...) //If the course has a password or it doesn't //allow guest access then the user field is //required to see that the user is enrolled @@ -13,75 +13,82 @@ //to correct users. It isn't unbreakable, //obviously, but its the best I've thought!! - $nomoodlecookie = true; // Because it interferes with caching - - require_once('../config.php'); - require_once($CFG->libdir.'/filelib.php'); - require_once($CFG->libdir.'/rsslib.php'); + require_once("../config.php"); + require_once("$CFG->dirroot/files/mimetypes.php"); + $allowed = true; + $error = false; - $lifetime = 3600; // Seconds for files to remain in caches - 1 hour - - $relativepath = get_file_argument('file.php'); - - if (!$relativepath) { - not_found(); + if (empty($CFG->filelifetime)) { + $CFG->filelifetime = 86400; /// Seconds for files to remain in caches } - // extract relative path components - $args = explode('/', trim($relativepath, '/')); - - if (count($args) < 5) { - not_found(); + if (isset($file)) { // workaround for situations where / syntax doesn't work + $pathinfo = $file; + } else { + $pathinfo = get_slash_arguments("file.php"); } - $courseid = (int)$args[0]; - $userid = (int)$args[1]; - $modulename = clean_param($args[2], PARAM_FILE); - $instance = (int)$args[3]; - $filename = 'rss.xml'; - - if (!$course = get_record("course", "id", $courseid)) { - not_found(); + if (!$pathinfo) { + $error = true; } - - //Check name of module - $mods = get_list_of_plugins("mod"); - if (!in_array(strtolower($modulename), $mods)) { - not_found(); + + $pathinfo = urldecode($pathinfo); + + if (! $args = parse_slash_arguments($pathinfo)) { + $error = true; + } + + $numargs = count($args); + if ($numargs < 5 or empty($args[1])) { + $error = true; + } + + $courseid = (integer)$args[0]; + $userid = (integer)$args[1]; + $modulename = $args[2]; + $instance = (integer)$args[3]; + + if (! $course = get_record("course", "id", $courseid)) { + $error = true; } //Get course_module to check it's visible - if (!$cm = get_coursemodule_from_instance($modulename,$instance,$courseid)) { - not_found(); + if (! $cm = get_coursemodule_from_instance($modulename,$instance,$courseid)) { + $error = true; } + $cmvisible = $cm->visible; $isstudent = isstudent($courseid,$userid); $isteacher = isteacher($courseid,$userid); //Check for "security" if !course->guest or course->password - if ((!$course->guest || $course->password) && (!($isstudent || $isteacher))) { - not_found(); + if (!$course->guest || $course->password) { + $allowed = ($isstudent || $isteacher); } //Check for "security" if the course is hidden or the activity is hidden - if ((!$course->visible || !$cm->visible) && (!$isteacher)) { - not_found(); + if ($allowed && (!$course->visible || !$cmvisible)) { + $allowed = $isteacher; } - $pathname = $CFG->dataroot.'/rss/'.$modulename.'/'.$instance.'.xml'; + $pathname = $CFG->dataroot."/rss/".$modulename."/".$instance.".xml"; + $filename = $args[$numargs-1]; - //Check that file exists - if (!file_exists($pathname)) { - not_found(); + //If the file exists and its allowed for me, download it! + if (file_exists($pathname) && $allowed && !$error) { + $lastmodified = filemtime($pathname); + $mimetype = mimeinfo("type", $filename); + + header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); + header("Expires: " . gmdate("D, d M Y H:i:s", time() + $CFG->filelifetime) . " GMT"); + header("Cache-control: max_age = $CFG->filelifetime"); + header("Pragma: "); + header("Content-disposition: inline; filename=$filename"); + + header("Content-length: ".filesize($pathname)); + header("Content-type: $mimetype"); + readfile($pathname); } - //Send it to user! - send_file($pathname, $filename, $lifetime); - - function not_found() { - /// error, send some XML with error message - global $lifetime, $filename; - send_file(rss_geterrorxmlfile(), $filename, $lifetime, false, true); - } ?> diff --git a/rss/rsslib.php b/rss/rsslib.php new file mode 100644 index 00000000000..a3e5565bc0a --- /dev/null +++ b/rss/rsslib.php @@ -0,0 +1,285 @@ +<?PHP // $Id$ + // This file contains all the common stuff to be used in RSS System + +//This function returns the icon (from theme) with the link to rss/file.php +function rss_get_link($courseid, $userid, $modulename, $id, $tooltiptext="") { + + global $CFG, $THEME, $USER; + + static $pixpath = ''; + static $rsspath = ''; + + if ($CFG->slasharguments) { + $rsspath = "$CFG->wwwroot/rss/file.php/$courseid/$userid/$modulename/$id/rss.xml"; + } else { + $rsspath = "$CFG->wwwroot/rss/file.php?file=/$courseid/$userid/$modulename/$id/rss.xml"; + } + + if (empty($pixpath)) { + if (empty($THEME->custompix)) { + $pixpath = "$CFG->wwwroot/pix"; + } else { + $pixpath = "$CFG->wwwroot/theme/$CFG->theme/pix"; + } + } + + $rsspix = $pixpath."/i/rss.gif"; + + return "<a href=\"".$rsspath."\"><img src=\"$rsspix\" title=\"$tooltiptext\"></a>"; + +} + +//This function prints the icon (from theme) with the link to rss/file.php +function rss_print_link($courseid, $userid, $modulename, $id, $tooltiptext="") { + + echo rss_get_link($courseid, $userid, $modulename, $id, $tooltiptext); + +} +//This function iterates over each module in the server to see if +//it supports generating rss feeds, searching for a MODULENAME_rss_feeds() +//function and invoking it foreach activity as necessary +function cron_rss_feeds () { + + global $CFG; + + $status = true; + + mtrace(" Generating rssfeeds..."); + + //Check for required functions... + if(!function_exists('utf8_encode')) { + mtrace(" ERROR: You need to add XML support to your PHP installation!"); + return true; + } + + if ($allmods = get_records("modules") ) { + foreach ($allmods as $mod) { + mtrace(' '.$mod->name.': ', ''); + $modname = $mod->name; + $modfile = "$CFG->dirroot/mod/$modname/rsslib.php"; + //If file exists and we have selected to restore that type of module + if (file_exists($modfile)) { + include_once($modfile); + $generaterssfeeds = $modname.'_rss_feeds'; + if (function_exists($generaterssfeeds)) { + if ($status) { + mtrace('generating ', '');; + $status = $generaterssfeeds(); + if (!empty($status)) { + mtrace("...OK"); + } else { + mtrace("...FAILED"); + } + } else { + mtrace("...SKIPPED (failed above)"); + } + } else { + mtrace("...NOT SUPPORTED (function)"); + } + } else { + mtrace("...NOT SUPPORTED (file)"); + } + } + } + mtrace(" Ending rssfeeds...", ''); + if (!empty($status)) { + mtrace("...OK"); + } else { + mtrace("...FAILED"); + } + + return $status; +} + +//This function saves to file the rss feed specified in the parameters +function rss_save_file ($modname,$mod,$result) { + + global $CFG; + + $status = true; + + if (! $basedir = make_upload_directory ("rss/".$modname)) { + //Cannot be created, so error + $status = false; + } + + if ($status) { + $file = rss_file_name($modname, $mod); + $rss_file = fopen($file,"w"); + if ($rss_file) { + $status = fwrite ($rss_file,$result); + fclose($rss_file); + } else { + $status = false; + } + } + return $status; +} + + +function rss_file_name($modname, $mod) { + global $CFG; + + return "$CFG->dataroot/rss/$modname/$mod->id.xml"; +} + +//This function return all the common headers for every rss feed in the site +function rss_standard_header($title = NULL, $link = NULL, $description = NULL) { + + global $CFG, $THEME, $USER; + + static $pixpath = ''; + + $status = true; + $result = ""; + + if (!$site = get_site()) { + $status = false; + } + + if ($status) { + + //Calculate title, link and description + if (empty($title)) { + $title = $site->fullname; + } + if (empty($link)) { + $link = $CFG->wwwroot; + } + if (empty($description)) { + $description = $site->summary; + } + + //xml headers + $result .= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; + $result .= "<rss version=\"2.0\">\n"; + + //open the channel + $result .= rss_start_tag("channel",1,true); + + //write channel info + $result .= rss_full_tag("title",2,false,$title); + $result .= rss_full_tag("link",2,false,$link); + $result .= rss_full_tag("description",2,false,$description); + $result .= rss_full_tag("language",2,false,substr($USER->lang,0,2)); + $today = getdate(); + $result .= rss_full_tag("copyright",2,false,"&copy; ".$today['year']." ".$site->fullname); + $result .= rss_full_tag("managingEditor",2,false,$USER->email); + $result .= rss_full_tag("webMaster",2,false,$USER->email); + + //write image info + //Calculate the origin + if (empty($pixpath)) { + if (empty($THEME->custompix)) { + $pixpath = "$CFG->wwwroot/pix"; + } else { + $pixpath = "$CFG->wwwroot/theme/$CFG->theme/pix"; + } + } + $rsspix = $pixpath."/i/rsssitelogo.gif"; + + //write the info + $result .= rss_start_tag("image",2,true); + $result .= rss_full_tag("url",3,false,$rsspix); + $result .= rss_full_tag("title",3,false,"moodle"); + $result .= rss_full_tag("link",3,false,$CFG->wwwroot); + $result .= rss_full_tag("width",3,false,"140"); + $result .= rss_full_tag("height",3,false,"35"); + $result .= rss_end_tag("image",2,true); + } + + if (!$status) { + return false; + } else { + return $result; + } +} + +//This function returns the rss XML code for every item passed in the array +//item->title: The title of the item +//item->author: The author of the item. Optional !! +//item->pubdate: The pubdate of the item +//item->link: The link url of the item +//item->description: The content of the item +function rss_add_items($items) { + + global $CFG; + + $result = ""; + + if (!empty($items)) { + foreach ($items as $item) { + $result .= rss_start_tag("item",2,true); + $result .= rss_full_tag("title",3,false,$item->title); + $result .= rss_full_tag("link",3,false,$item->link); + $result .= rss_full_tag("pubDate",3,false,date("r",$item->pubdate)); + //Include the author if exists + if (isset($item->author)) { + $item->description = get_string("byname","",$item->author)."<p>".$item->description; + } + $result .= rss_full_tag("description",3,false,$item->description); + $result .= rss_end_tag("item",2,true); + + } + } else { + $result = false; + } + return $result; +} + +//This function return all the common footers for every rss feed in the site +function rss_standard_footer($title = NULL, $link = NULL, $description = NULL) { + + global $CFG, $USER; + + $status = true; + $result = ""; + + //Close the chanel + $result .= rss_end_tag("channel",1,true); + ////Close the rss tag + $result .= "</rss>"; + + return $result; +} + +// ===== This function are used to write XML tags ========= +// [stronk7]: They are similar to the glossary export and backup generation +// but I've replicated them here because they have some minor +// diferences. Someday all they should go to a common place. + +//Return the xml start tag +function rss_start_tag($tag,$level=0,$endline=false) { + if ($endline) { + $endchar = "\n"; + } else { + $endchar = ""; + } + return str_repeat(" ",$level*2)."<".$tag.">".$endchar; +} + +//Return the xml end tag +function rss_end_tag($tag,$level=0,$endline=true) { + if ($endline) { + $endchar = "\n"; + } else { + $endchar = ""; + } + return str_repeat(" ",$level*2)."</".$tag.">".$endchar; +} + +//Return the start tag, the contents and the end tag +function rss_full_tag($tag,$level=0,$endline=true,$content,$to_utf=true) { + //Here we encode absolute links + $st = rss_start_tag($tag,$level,$endline); + $co=""; + if ($to_utf) { + $co = preg_replace("/\r\n|\r/", "\n", utf8_encode(htmlspecialchars($content))); + } else { + $co = preg_replace("/\r\n|\r/", "\n", htmlspecialchars($content)); + } + $et = rss_end_tag($tag,0,true); + return $st.$co.$et; +} + +?> diff --git a/tags b/tags index a9f2a8011f7..73e5f2caee2 100644 --- a/tags +++ b/tags @@ -4,8 +4,8 @@ !_TAG_PROGRAM_NAME Exuberant Ctags // !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ !_TAG_PROGRAM_VERSION 5.4 // -ADOConnection lib/adodb/adodb-connection.inc.php /^ class ADOConnection {$/;" c -ADOConnection lib/adodb/adodb-connection.inc.php /^ function ADOConnection()$/;" f +ADOConnection lib/adodb/adodb-connection.inc.php /^ class ADOConnection {$/;" c +ADOConnection lib/adodb/adodb-connection.inc.php /^ function ADOConnection() $/;" f ADOConnection lib/adodb/adodb.inc.php /^ class ADOConnection {$/;" c ADOConnection lib/adodb/adodb.inc.php /^ function ADOConnection() $/;" f ADODB2_access lib/adodb/datadict/datadict-access.inc.php /^class ADODB2_access extends ADODB_DataDict {$/;" c @@ -18,7 +18,6 @@ ADODB2_mssql lib/adodb/datadict/datadict-mssql.inc.php /^class ADODB2_mssql exte ADODB2_mysql lib/adodb/datadict/datadict-mysql.inc.php /^class ADODB2_mysql extends ADODB_DataDict {$/;" c ADODB2_oci8 lib/adodb/datadict/datadict-oci8.inc.php /^class ADODB2_oci8 extends ADODB_DataDict {$/;" c ADODB2_postgres lib/adodb/datadict/datadict-postgres.inc.php /^class ADODB2_postgres extends ADODB_DataDict {$/;" c -ADODB2_sapdb lib/adodb/datadict/datadict-sapdb.inc.php /^class ADODB2_sapdb extends ADODB_DataDict {$/;" c ADODB2_sybase lib/adodb/datadict/datadict-sybase.inc.php /^class ADODB2_sybase extends ADODB_DataDict {$/;" c ADODB_BASE_RS lib/adodb/adodb-iterator.inc.php /^class ADODB_BASE_RS implements IteratorAggregate {$/;" c ADODB_BASE_RS lib/adodb/adodb-php4.inc.php /^class ADODB_BASE_RS {$/;" c @@ -44,15 +43,14 @@ ADODB_SAPDB lib/adodb/drivers/adodb-sapdb.inc.php /^ function ADODB_SAPDB()$/;" ADODB_SAPDB lib/adodb/drivers/adodb-sapdb.inc.php /^class ADODB_SAPDB extends ADODB_odbc {$/;" c ADODB_Session lib/adodb/session/adodb-session.php /^class ADODB_Session {$/;" c ADODB_Session_Key lib/adodb/adodb-cryptsession.php /^function ADODB_Session_Key() $/;" f +ADODB_Session_Key lib/adodb/session/old/adodb-cryptsession.php /^function ADODB_Session_Key() $/;" f ADODB_Setup lib/adodb/adodb.inc.php /^ function ADODB_Setup()$/;" f -ADODB_TransMonitor lib/adodb/adodb-connection.inc.php /^ function ADODB_TransMonitor($dbms, $fn, $errno, $errmsg, $p1, $p2, &$thisConnection)$/;" f +ADODB_TransMonitor lib/adodb/adodb-connection.inc.php /^ function ADODB_TransMonitor($dbms, $fn, $errno, $errmsg, $p1, $p2, &$thisConnection)$/;" f ADODB_TransMonitor lib/adodb/adodb.inc.php /^ function ADODB_TransMonitor($dbms, $fn, $errno, $errmsg, $p1, $p2, &$thisConnection)$/;" f ADODB_access lib/adodb/drivers/adodb-access.inc.php /^ function ADODB_access()$/;" f ADODB_access lib/adodb/drivers/adodb-access.inc.php /^class ADODB_access extends ADODB_odbc { $/;" c ADODB_ado lib/adodb/drivers/adodb-ado.inc.php /^ function ADODB_ado() $/;" f ADODB_ado lib/adodb/drivers/adodb-ado.inc.php /^class ADODB_ado extends ADOConnection {$/;" c -ADODB_ado lib/adodb/drivers/adodb-ado5.inc.php /^ function ADODB_ado() $/;" f -ADODB_ado lib/adodb/drivers/adodb-ado5.inc.php /^class ADODB_ado extends ADOConnection {$/;" c ADODB_ado_access lib/adodb/drivers/adodb-ado_access.inc.php /^ function ADODB_ado_access()$/;" f ADODB_ado_access lib/adodb/drivers/adodb-ado_access.inc.php /^class ADODB_ado_access extends ADODB_ado { $/;" c ADODB_ado_mssql lib/adodb/drivers/adodb-ado_mssql.inc.php /^ function ADODB_ado_mssql()$/;" f @@ -80,7 +78,6 @@ ADODB_mysql lib/adodb/drivers/adodb-mysql.inc.php /^ function ADODB_mysql() $/;" ADODB_mysql lib/adodb/drivers/adodb-mysql.inc.php /^class ADODB_mysql extends ADOConnection {$/;" c ADODB_mysqli lib/adodb/drivers/adodb-mysqli.inc.php /^ function ADODB_mysqli() $/;" f ADODB_mysqli lib/adodb/drivers/adodb-mysqli.inc.php /^class ADODB_mysqli extends ADOConnection {$/;" c -ADODB_mysqlt lib/adodb/drivers/adodb-mysqlt.inc.php /^ function ADODB_mysqlt() $/;" f ADODB_mysqlt lib/adodb/drivers/adodb-mysqlt.inc.php /^class ADODB_mysqlt extends ADODB_mysql {$/;" c ADODB_netezza lib/adodb/drivers/adodb-netezza.inc.php /^ function ADODB_netezza() $/;" f ADODB_netezza lib/adodb/drivers/adodb-netezza.inc.php /^class ADODB_netezza extends ADODB_postgres64 {$/;" c @@ -135,8 +132,6 @@ ADORecordSet_access lib/adodb/drivers/adodb-access.inc.php /^ function ADORecord ADORecordSet_access lib/adodb/drivers/adodb-access.inc.php /^class ADORecordSet_access extends ADORecordSet_odbc { $/;" c ADORecordSet_ado lib/adodb/drivers/adodb-ado.inc.php /^ function ADORecordSet_ado($id,$mode=false)$/;" f ADORecordSet_ado lib/adodb/drivers/adodb-ado.inc.php /^class ADORecordSet_ado extends ADORecordSet { $/;" c -ADORecordSet_ado lib/adodb/drivers/adodb-ado5.inc.php /^ function ADORecordSet_ado($id,$mode=false)$/;" f -ADORecordSet_ado lib/adodb/drivers/adodb-ado5.inc.php /^class ADORecordSet_ado extends ADORecordSet { $/;" c ADORecordSet_ado_access lib/adodb/drivers/adodb-ado_access.inc.php /^ function ADORecordSet_ado_access($id,$mode=false)$/;" f ADORecordSet_ado_access lib/adodb/drivers/adodb-ado_access.inc.php /^class ADORecordSet_ado_access extends ADORecordSet_ado { $/;" c ADORecordSet_ado_mssql lib/adodb/drivers/adodb-ado_mssql.inc.php /^ class ADORecordSet_ado_mssql extends ADORecordSet_ado { $/;" c @@ -147,19 +142,11 @@ ADORecordSet_array_mssql lib/adodb/drivers/adodb-mssql.inc.php /^ function ADORe ADORecordSet_array_mssql lib/adodb/drivers/adodb-mssql.inc.php /^class ADORecordSet_array_mssql extends ADORecordSet_array {$/;" c ADORecordSet_array_sybase lib/adodb/drivers/adodb-sybase.inc.php /^ function ADORecordSet_array_sybase($id=-1)$/;" f ADORecordSet_array_sybase lib/adodb/drivers/adodb-sybase.inc.php /^class ADORecordSet_array_sybase extends ADORecordSet_array {$/;" c -ADORecordSet_assoc_postgres7 lib/adodb/drivers/adodb-postgres7.inc.php /^ function ADORecordSet_assoc_postgres7($queryID,$mode=false) $/;" f -ADORecordSet_assoc_postgres7 lib/adodb/drivers/adodb-postgres7.inc.php /^class ADORecordSet_assoc_postgres7 extends ADORecordSet_postgres64{$/;" c ADORecordSet_borland_ibase lib/adodb/drivers/adodb-borland_ibase.inc.php /^ function ADORecordSet_borland_ibase($id,$mode=false)$/;" f ADORecordSet_borland_ibase lib/adodb/drivers/adodb-borland_ibase.inc.php /^class ADORecordSet_borland_ibase extends ADORecordSet_ibase { $/;" c ADORecordSet_db2 lib/adodb/drivers/adodb-db2.inc.php /^ function ADORecordSet_db2($id,$mode=false)$/;" f ADORecordSet_db2 lib/adodb/drivers/adodb-db2.inc.php /^class ADORecordSet_db2 extends ADORecordSet_odbc { $/;" c ADORecordSet_empty lib/adodb/adodb.inc.php /^ class ADORecordSet_empty$/;" c -ADORecordSet_ext_mysql lib/adodb/drivers/adodb-mysql.inc.php /^ function ADORecordSet_ext_mysql($queryID,$mode=false) $/;" f -ADORecordSet_ext_mysql lib/adodb/drivers/adodb-mysql.inc.php /^class ADORecordSet_ext_mysql extends ADORecordSet_mysql { $/;" c -ADORecordSet_ext_mysqli lib/adodb/drivers/adodb-mysqlt.inc.php /^ function ADORecordSet_ext_mysqli($queryID,$mode=false) $/;" f -ADORecordSet_ext_mysqlt lib/adodb/drivers/adodb-mysqlt.inc.php /^class ADORecordSet_ext_mysqlt extends ADORecordSet_mysqlt { $/;" c -ADORecordSet_ext_oci8 lib/adodb/drivers/adodb-oci8.inc.php /^ function ADORecordSet_ext_oci8($queryID,$mode=false) $/;" f -ADORecordSet_ext_oci8 lib/adodb/drivers/adodb-oci8.inc.php /^class ADORecordSet_ext_oci8 extends ADORecordSet_oci8 { $/;" c ADORecordSet_fbsql lib/adodb/drivers/adodb-fbsql.inc.php /^ function ADORecordSet_fbsql($queryID,$mode=false) $/;" f ADORecordSet_fbsql lib/adodb/drivers/adodb-fbsql.inc.php /^class ADORecordSet_fbsql extends ADORecordSet{ $/;" c ADORecordSet_firebird lib/adodb/drivers/adodb-firebird.inc.php /^ function ADORecordSet_firebird($id,$mode=false)$/;" f @@ -170,7 +157,7 @@ ADORecordSet_mysql lib/adodb/drivers/adodb-mysql.inc.php /^ function ADORecordSe ADORecordSet_mysql lib/adodb/drivers/adodb-mysql.inc.php /^class ADORecordSet_mysql extends ADORecordSet{ $/;" c ADORecordSet_mysqli lib/adodb/drivers/adodb-mysqli.inc.php /^ function ADORecordSet_mysqli($queryID, $mode = false) $/;" f ADORecordSet_mysqli lib/adodb/drivers/adodb-mysqli.inc.php /^class ADORecordSet_mysqli extends ADORecordSet{ $/;" c -ADORecordSet_mysqlt lib/adodb/drivers/adodb-mysqlt.inc.php /^ function ADORecordSet_mysqlt($queryID,$mode=false) $/;" f +ADORecordSet_mysqlt lib/adodb/drivers/adodb-mysqlt.inc.php /^ function ADORecordSet_mysqlt($queryID,$mode=false) {$/;" f ADORecordSet_mysqlt lib/adodb/drivers/adodb-mysqlt.inc.php /^class ADORecordSet_mysqlt extends ADORecordSet_mysql{ $/;" c ADORecordSet_netezza lib/adodb/drivers/adodb-netezza.inc.php /^ function ADORecordSet_netezza($queryID,$mode=false) $/;" f ADORecordSet_netezza lib/adodb/drivers/adodb-netezza.inc.php /^class ADORecordSet_netezza extends ADORecordSet_postgres64$/;" c @@ -182,16 +169,8 @@ ADORecordSet_odbc_oracle lib/adodb/drivers/adodb-odbc_oracle.inc.php /^ function ADORecordSet_odbc_oracle lib/adodb/drivers/adodb-odbc_oracle.inc.php /^class ADORecordSet_odbc_oracle extends ADORecordSet_odbc { $/;" c ADORecordSet_odbtp lib/adodb/drivers/adodb-odbtp.inc.php /^ function ADORecordSet_odbtp($queryID,$mode=false)$/;" f ADORecordSet_odbtp lib/adodb/drivers/adodb-odbtp.inc.php /^class ADORecordSet_odbtp extends ADORecordSet {$/;" c -ADORecordSet_odbtp_access lib/adodb/drivers/adodb-odbtp.inc.php /^ function ADORecordSet_odbtp_access($id,$mode=false)$/;" f -ADORecordSet_odbtp_access lib/adodb/drivers/adodb-odbtp.inc.php /^class ADORecordSet_odbtp_access extends ADORecordSet_odbtp {$/;" c -ADORecordSet_odbtp_mssql lib/adodb/drivers/adodb-odbtp.inc.php /^ function ADORecordSet_odbtp_mssql($id,$mode=false)$/;" f -ADORecordSet_odbtp_mssql lib/adodb/drivers/adodb-odbtp.inc.php /^class ADORecordSet_odbtp_mssql extends ADORecordSet_odbtp {$/;" c -ADORecordSet_odbtp_oci8 lib/adodb/drivers/adodb-odbtp.inc.php /^ function ADORecordSet_odbtp_oci8($id,$mode=false)$/;" f -ADORecordSet_odbtp_oci8 lib/adodb/drivers/adodb-odbtp.inc.php /^class ADORecordSet_odbtp_oci8 extends ADORecordSet_odbtp {$/;" c -ADORecordSet_odbtp_sybase lib/adodb/drivers/adodb-odbtp.inc.php /^ function ADORecordSet_odbtp_sybase($id,$mode=false)$/;" f -ADORecordSet_odbtp_sybase lib/adodb/drivers/adodb-odbtp.inc.php /^class ADORecordSet_odbtp_sybase extends ADORecordSet_odbtp {$/;" c -ADORecordSet_odbtp_vfp lib/adodb/drivers/adodb-odbtp.inc.php /^ function ADORecordSet_odbtp_vfp($id,$mode=false)$/;" f -ADORecordSet_odbtp_vfp lib/adodb/drivers/adodb-odbtp.inc.php /^class ADORecordSet_odbtp_vfp extends ADORecordSet_odbtp {$/;" c +ADORecordSet_odbtp_unicode lib/adodb/drivers/adodb-odbtp_unicode.inc.php /^ function ADORecordSet_odbtp_unicode($queryID,$mode=false)$/;" f +ADORecordSet_odbtp_unicode lib/adodb/drivers/adodb-odbtp_unicode.inc.php /^class ADORecordSet_odbtp_unicode extends ADORecordSet_odbtp {$/;" c ADORecordSet_pdo lib/adodb/drivers/adodb-pdo.inc.php /^ function ADORecordSet_pdo($id,$mode=false)$/;" f ADORecordSet_pdo lib/adodb/drivers/adodb-pdo.inc.php /^class ADORecordSet_pdo extends ADORecordSet { $/;" c ADORecordSet_postgres64 lib/adodb/drivers/adodb-postgres64.inc.php /^ function ADORecordSet_postgres64($queryID,$mode=false) $/;" f @@ -220,7 +199,7 @@ ADORecordset_oci8 lib/adodb/drivers/adodb-oci8.inc.php /^ function ADORecordset_ ADORecordset_oci8 lib/adodb/drivers/adodb-oci8.inc.php /^class ADORecordset_oci8 extends ADORecordSet {$/;" c ADORecordset_oci805 lib/adodb/drivers/adodb-oci805.inc.php /^ function ADORecordset_oci805($id,$mode=false)$/;" f ADORecordset_oci805 lib/adodb/drivers/adodb-oci805.inc.php /^class ADORecordset_oci805 extends ADORecordset_oci8 { $/;" c -ADORecordset_oci8po lib/adodb/drivers/adodb-oci8po.inc.php /^ function ADORecordset_oci8po($queryID,$mode=false)$/;" f +ADORecordset_oci8po lib/adodb/drivers/adodb-oci8po.inc.php /^ function ADORecordset_oci8po($queryID,$mode=false)$/;" f ADORecordset_oci8po lib/adodb/drivers/adodb-oci8po.inc.php /^class ADORecordset_oci8po extends ADORecordset_oci8 {$/;" c ADORecordset_oracle lib/adodb/drivers/adodb-oracle.inc.php /^ function ADORecordset_oracle($queryID,$mode=false)$/;" f ADORecordset_oracle lib/adodb/drivers/adodb-oracle.inc.php /^class ADORecordset_oracle extends ADORecordSet {$/;" c @@ -236,7 +215,7 @@ AbsolutePage lib/adodb/adodb-recordset.inc.php /^ function AbsolutePage($page=-1 AbsolutePage lib/adodb/adodb.inc.php /^ function AbsolutePage($page=-1)$/;" f AbsolutePosition lib/adodb/adodb-recordset.inc.php /^ function AbsolutePosition() {return $this->_currentRow;}$/;" f AbsolutePosition lib/adodb/adodb.inc.php /^ function AbsolutePosition() {return $this->_currentRow;}$/;" f -ActualType lib/adodb/adodb-connection.inc.php /^ function ActualType($meta)$/;" f +ActualType lib/adodb/adodb-connection.inc.php /^ function ActualType($meta)$/;" f ActualType lib/adodb/adodb-datadict.inc.php /^ function ActualType($meta)$/;" f ActualType lib/adodb/datadict/datadict-access.inc.php /^ function ActualType($meta)$/;" f ActualType lib/adodb/datadict/datadict-db2.inc.php /^ function ActualType($meta)$/;" f @@ -249,7 +228,6 @@ ActualType lib/adodb/datadict/datadict-mssql.inc.php /^ function ActualType($met ActualType lib/adodb/datadict/datadict-mysql.inc.php /^ function ActualType($meta)$/;" f ActualType lib/adodb/datadict/datadict-oci8.inc.php /^ function ActualType($meta)$/;" f ActualType lib/adodb/datadict/datadict-postgres.inc.php /^ function ActualType($meta)$/;" f -ActualType lib/adodb/datadict/datadict-sapdb.inc.php /^ function ActualType($meta)$/;" f ActualType lib/adodb/datadict/datadict-sybase.inc.php /^ function ActualType($meta)$/;" f AddAddress lib/phpmailer/class.phpmailer.php /^ function AddAddress($address, $name = "") {$/;" f AddAttachment lib/phpmailer/class.phpmailer.php /^ function AddAttachment($path, $name = "", $encoding = "base64", $/;" f @@ -258,19 +236,19 @@ AddCC lib/phpmailer/class.phpmailer.php /^ function AddCC($address, $name = " AddColumnSQL lib/adodb/adodb-datadict.inc.php /^ function AddColumnSQL($tabname, $flds)$/;" f AddColumnSQL lib/adodb/datadict/datadict-mssql.inc.php /^ function AddColumnSQL($tabname, $flds)$/;" f AddColumnSQL lib/adodb/datadict/datadict-oci8.inc.php /^ function AddColumnSQL($tabname, $flds)$/;" f -AddColumnSQL lib/adodb/datadict/datadict-postgres.inc.php /^ function AddColumnSQL($tabname, $flds)$/;" f -AddColumnSQL lib/adodb/datadict/datadict-sapdb.inc.php /^ function AddColumnSQL($tabname, $flds)$/;" f AddColumnSQL lib/adodb/datadict/datadict-sybase.inc.php /^ function AddColumnSQL($tabname, $flds)$/;" f AddCustomHeader lib/phpmailer/class.phpmailer.php /^ function AddCustomHeader($custom_header) {$/;" f AddEmbeddedImage lib/phpmailer/class.phpmailer.php /^ function AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64", $/;" f AddReplyTo lib/phpmailer/class.phpmailer.php /^ function AddReplyTo($address, $name = "") {$/;" f AddStringAttachment lib/phpmailer/class.phpmailer.php /^ function AddStringAttachment($string, $filename, $encoding = "base64", $/;" f +AddTab tabs/index.php /^ function AddTab ( $name , $href )$/;" f +AddTime mod/scorm/api1_2.php /^ function AddTime (first, second) {$/;" f AddrAppend lib/phpmailer/class.phpmailer.php /^ function AddrAppend($type, $addr) {$/;" f AddrFormat lib/phpmailer/class.phpmailer.php /^ function AddrFormat($addr) {$/;" f -Affected_Rows lib/adodb/adodb-connection.inc.php /^ function Affected_Rows()$/;" f +Affected_Rows lib/adodb/adodb-connection.inc.php /^ function Affected_Rows()$/;" f Affected_Rows lib/adodb/adodb.inc.php /^ function Affected_Rows()$/;" f Affected_Rows lib/adodb/drivers/adodb-pdo.inc.php /^ function Affected_Rows()$/;" f -AlterColumnSQL lib/adodb/adodb-datadict.inc.php /^ function AlterColumnSQL($tabname, $flds, $tableflds='',$tableoptions='')$/;" f +AlterColumnSQL lib/adodb/adodb-datadict.inc.php /^ function AlterColumnSQL($tabname, $flds)$/;" f AlterColumnSQL lib/adodb/datadict/datadict-access.inc.php /^ function AlterColumnSQL($tabname, $flds)$/;" f AlterColumnSQL lib/adodb/datadict/datadict-db2.inc.php /^ function AlterColumnSQL($tabname, $flds)$/;" f AlterColumnSQL lib/adodb/datadict/datadict-generic.inc.php /^ function AlterColumnSQL($tabname, $flds)$/;" f @@ -278,8 +256,7 @@ AlterColumnSQL lib/adodb/datadict/datadict-ibase.inc.php /^ function AlterColumn AlterColumnSQL lib/adodb/datadict/datadict-informix.inc.php /^ function AlterColumnSQL($tabname, $flds)$/;" f AlterColumnSQL lib/adodb/datadict/datadict-mssql.inc.php /^ function AlterColumnSQL($tabname, $flds)$/;" f AlterColumnSQL lib/adodb/datadict/datadict-oci8.inc.php /^ function AlterColumnSQL($tabname, $flds)$/;" f -AlterColumnSQL lib/adodb/datadict/datadict-postgres.inc.php /^ function AlterColumnSQL($tabname, $flds, $tableflds='',$tableoptions='')$/;" f -AlterColumnSQL lib/adodb/datadict/datadict-sapdb.inc.php /^ function AlterColumnSQL($tabname, $flds)$/;" f +AlterColumnSQL lib/adodb/datadict/datadict-postgres.inc.php /^ function AlterColumnSQL($tabname, $flds)$/;" f AlterColumnSQL lib/adodb/datadict/datadict-sybase.inc.php /^ function AlterColumnSQL($tabname, $flds)$/;" f AtFirstPage lib/adodb/adodb-recordset.inc.php /^ function AtFirstPage($status=false)$/;" f AtFirstPage lib/adodb/adodb.inc.php /^ function AtFirstPage($status=false)$/;" f @@ -290,20 +267,17 @@ Auth_Container_ADOdb lib/adodb/pear/Auth/Container/ADOdb.php /^ function Auth Auth_Container_ADOdb lib/adodb/pear/Auth/Container/ADOdb.php /^class Auth_Container_ADOdb extends Auth_Container$/;" c Authenticate lib/phpmailer/class.smtp.php /^ function Authenticate($username, $password) {$/;" f AutoDetect_MSSQL_Date_Order lib/adodb/drivers/adodb-mssql.inc.php /^function AutoDetect_MSSQL_Date_Order($conn)$/;" f -AutoExecute lib/adodb/adodb.inc.php /^ function AutoExecute($table, $fields_values, $mode = 'INSERT', $where = FALSE, $forceUpdate=true, $magicq=false) $/;" f BIFFWriter lib/excel/BIFFwriter.php /^class BIFFWriter$/;" c BIFFwriter lib/excel/BIFFwriter.php /^ function BIFFwriter()$/;" f -BeginTrans lib/adodb/adodb-connection.inc.php /^ function BeginTrans() {return false;}$/;" f +BeginTrans lib/adodb/adodb-connection.inc.php /^ function BeginTrans() {return false;}$/;" f BeginTrans lib/adodb/adodb.inc.php /^ function BeginTrans() {return false;}$/;" f BeginTrans lib/adodb/drivers/adodb-access.inc.php /^ function BeginTrans() { return false;}$/;" f BeginTrans lib/adodb/drivers/adodb-ado.inc.php /^ function BeginTrans() $/;" f -BeginTrans lib/adodb/drivers/adodb-ado5.inc.php /^ function BeginTrans() $/;" f BeginTrans lib/adodb/drivers/adodb-ado_access.inc.php /^ function BeginTrans() { return false;}$/;" f BeginTrans lib/adodb/drivers/adodb-borland_ibase.inc.php /^ function BeginTrans()$/;" f BeginTrans lib/adodb/drivers/adodb-ibase.inc.php /^ function BeginTrans()$/;" f BeginTrans lib/adodb/drivers/adodb-informix72.inc.php /^ function BeginTrans()$/;" f BeginTrans lib/adodb/drivers/adodb-mssql.inc.php /^ function BeginTrans()$/;" f -BeginTrans lib/adodb/drivers/adodb-mysql.inc.php /^ function BeginTrans()$/;" f BeginTrans lib/adodb/drivers/adodb-mysqli.inc.php /^ function BeginTrans()$/;" f BeginTrans lib/adodb/drivers/adodb-mysqlt.inc.php /^ function BeginTrans()$/;" f BeginTrans lib/adodb/drivers/adodb-oci8.inc.php /^ function BeginTrans()$/;" f @@ -316,49 +290,45 @@ BeginTrans lib/adodb/drivers/adodb-sqlite.inc.php /^ function BeginTrans()$/;" f BeginTrans lib/adodb/drivers/adodb-sybase.inc.php /^ function BeginTrans()$/;" f BeginTrans lib/adodb/drivers/adodb-vfp.inc.php /^ function BeginTrans() { return false;}$/;" f Bind lib/adodb/drivers/adodb-oci8.inc.php /^ function Bind(&$stmt,&$var,$size=4000,$type=false,$name=false,$isOutput=false)$/;" f -BlobDecode lib/adodb/adodb-connection.inc.php /^ function BlobDecode($blob)$/;" f +BlobDecode lib/adodb/adodb-connection.inc.php /^ function BlobDecode($blob)$/;" f BlobDecode lib/adodb/adodb.inc.php /^ function BlobDecode($blob)$/;" f BlobDecode lib/adodb/drivers/adodb-ibase.inc.php /^ function BlobDecode($blob)$/;" f BlobDecode lib/adodb/drivers/adodb-informix72.inc.php /^ function BlobDecode($blobid)$/;" f -BlobDecode lib/adodb/drivers/adodb-postgres64.inc.php /^ function BlobDecode($blob,$maxsize=false,$hastrans=true) $/;" f -BlobEncode lib/adodb/adodb-connection.inc.php /^ function BlobEncode($blob)$/;" f +BlobDecode lib/adodb/drivers/adodb-postgres64.inc.php /^ function BlobDecode( $blob) $/;" f +BlobEncode lib/adodb/adodb-connection.inc.php /^ function BlobEncode($blob)$/;" f BlobEncode lib/adodb/adodb.inc.php /^ function BlobEncode($blob)$/;" f BlobEncode lib/adodb/drivers/adodb-ibase.inc.php /^ function BlobEncode( $blob ) $/;" f BlobEncode lib/adodb/drivers/adodb-postgres64.inc.php /^ function BlobEncode($blob)$/;" f -CASClient lib/cas/client.php /^ function CASClient($server_version,$/;" f -CASClient lib/cas/client.php /^class CASClient$/;" c CPULoad lib/adodb/adodb-perf.inc.php /^ function CPULoad()$/;" f -CacheExecute lib/adodb/adodb-connection.inc.php /^ function &CacheExecute($secs2cache,$sql=false,$inputarr=false,$arg3=false)$/;" f +CacheExecute lib/adodb/adodb-connection.inc.php /^ function &CacheExecute($secs2cache,$sql=false,$inputarr=false,$arg3=false)$/;" f CacheExecute lib/adodb/adodb.inc.php /^ function &CacheExecute($secs2cache,$sql=false,$inputarr=false)$/;" f -CacheFlush lib/adodb/adodb-connection.inc.php /^ function CacheFlush($sql=false,$inputarr=false)$/;" f +CacheFlush lib/adodb/adodb-connection.inc.php /^ function CacheFlush($sql=false,$inputarr=false)$/;" f CacheFlush lib/adodb/adodb.inc.php /^ function CacheFlush($sql=false,$inputarr=false)$/;" f -CacheGetAll lib/adodb/adodb-connection.inc.php /^ function CacheGetAll($secs2cache,$sql=false,$inputarr=false)$/;" f +CacheGetAll lib/adodb/adodb-connection.inc.php /^ function CacheGetAll($secs2cache,$sql=false,$inputarr=false)$/;" f CacheGetAll lib/adodb/adodb.inc.php /^ function &CacheGetAll($secs2cache,$sql=false,$inputarr=false)$/;" f CacheGetArray lib/adodb/adodb.inc.php /^ function &CacheGetArray($secs2cache,$sql=false,$inputarr=false)$/;" f CacheGetAssoc lib/adodb/adodb.inc.php /^ function &CacheGetAssoc($secs2cache, $sql=false, $inputarr=false,$force_array = false, $first2cols = false)$/;" f -CacheGetCol lib/adodb/adodb-connection.inc.php /^ function CacheGetCol($secs, $sql, $inputarr = false,$trim=false)$/;" f +CacheGetCol lib/adodb/adodb-connection.inc.php /^ function CacheGetCol($secs, $sql, $inputarr = false,$trim=false)$/;" f CacheGetCol lib/adodb/adodb.inc.php /^ function CacheGetCol($secs, $sql = false, $inputarr = false,$trim=false)$/;" f -CacheGetOne lib/adodb/adodb-connection.inc.php /^ function CacheGetOne($secs2cache,$sql=false,$inputarr=false)$/;" f +CacheGetOne lib/adodb/adodb-connection.inc.php /^ function CacheGetOne($secs2cache,$sql=false,$inputarr=false)$/;" f CacheGetOne lib/adodb/adodb.inc.php /^ function CacheGetOne($secs2cache,$sql=false,$inputarr=false)$/;" f -CacheGetRow lib/adodb/adodb-connection.inc.php /^ function CacheGetRow($secs2cache,$sql=false,$inputarr=false)$/;" f +CacheGetRow lib/adodb/adodb-connection.inc.php /^ function CacheGetRow($secs2cache,$sql=false,$inputarr=false)$/;" f CacheGetRow lib/adodb/adodb.inc.php /^ function &CacheGetRow($secs2cache,$sql=false,$inputarr=false)$/;" f -CachePageExecute lib/adodb/adodb-connection.inc.php /^ function &CachePageExecute($secs2cache, $sql, $nrows, $page,$inputarr=false, $arg3=false) $/;" f +CachePageExecute lib/adodb/adodb-connection.inc.php /^ function &CachePageExecute($secs2cache, $sql, $nrows, $page,$inputarr=false, $arg3=false) $/;" f CachePageExecute lib/adodb/adodb.inc.php /^ function &CachePageExecute($secs2cache, $sql, $nrows, $page,$inputarr=false) $/;" f -CacheSelectLimit lib/adodb/adodb-connection.inc.php /^ function &CacheSelectLimit($secs2cache,$sql,$nrows=-1,$offset=-1,$inputarr=false, $arg3=false)$/;" f +CacheSelectLimit lib/adodb/adodb-connection.inc.php /^ function &CacheSelectLimit($secs2cache,$sql,$nrows=-1,$offset=-1,$inputarr=false, $arg3=false)$/;" f CacheSelectLimit lib/adodb/adodb.inc.php /^ function &CacheSelectLimit($secs2cache,$sql,$nrows=-1,$offset=-1,$inputarr=false)$/;" f ChangeTableSQL lib/adodb/adodb-datadict.inc.php /^ function ChangeTableSQL($tablename, $flds, $tableoptions = false)$/;" f -CharMax lib/adodb/adodb-connection.inc.php /^ function CharMax()$/;" f +CharMax lib/adodb/adodb-connection.inc.php /^ function CharMax()$/;" f CharMax lib/adodb/drivers/adodb-mysql.inc.php /^ function CharMax()$/;" f CharMax lib/adodb/drivers/adodb-mysqli.inc.php /^ function CharMax()$/;" f CharMax lib/adodb/drivers/adodb-oci8.inc.php /^ function CharMax()$/;" f CharMax lib/adodb/drivers/adodb-postgres64.inc.php /^ function CharMax()$/;" f -ChatConnection mod/chat/chatd.php /^ function ChatConnection($resource) {$/;" f -ChatConnection mod/chat/chatd.php /^class ChatConnection {$/;" c -ChatDaemon mod/chat/chatd.php /^ function ChatDaemon() {$/;" f -ChatDaemon mod/chat/chatd.php /^class ChatDaemon {$/;" c +ChatConnection mod/chat/gui_sockets/arscd.php /^class ChatConnection {$/;" c CheckMemory lib/adodb/adodb-perf.inc.php /^ function CheckMemory()$/;" f CheckMemory lib/adodb/perf/perf-oci8.inc.php /^ function CheckMemory()$/;" f CheckWS lib/adodb/tests/test.php /^function CheckWS($conn)$/;" f +Clear tabs/index.php /^ function Clear ()$/;" f ClearAddresses lib/phpmailer/class.phpmailer.php /^ function ClearAddresses() {$/;" f ClearAllRecipients lib/phpmailer/class.phpmailer.php /^ function ClearAllRecipients() {$/;" f ClearAttachments lib/phpmailer/class.phpmailer.php /^ function ClearAttachments() {$/;" f @@ -366,20 +336,16 @@ ClearBCCs lib/phpmailer/class.phpmailer.php /^ function ClearBCCs() {$/;" f ClearCCs lib/phpmailer/class.phpmailer.php /^ function ClearCCs() {$/;" f ClearCustomHeaders lib/phpmailer/class.phpmailer.php /^ function ClearCustomHeaders() {$/;" f ClearReplyTos lib/phpmailer/class.phpmailer.php /^ function ClearReplyTos() {$/;" f -Close lib/adodb/adodb-connection.inc.php /^ function Close() $/;" f +Close lib/adodb/adodb-connection.inc.php /^ function Close() $/;" f Close lib/adodb/adodb-recordset.inc.php /^ function Close() $/;" f Close lib/adodb/adodb.inc.php /^ function Close(){return true;}$/;" f Close lib/adodb/adodb.inc.php /^ function Close() $/;" f -Close lib/adodb/adodb.inc.php /^ function Close()$/;" f Close lib/phpmailer/class.smtp.php /^ function Close() {$/;" f -Commit mod/scorm/datamodels/scorm1_3.js.php /^ function Commit (param) {$/;" f -CommitLock lib/adodb/adodb-connection.inc.php /^ function CommitLock($table)$/;" f +CommitLock lib/adodb/adodb-connection.inc.php /^ function CommitLock($table)$/;" f CommitLock lib/adodb/adodb.inc.php /^ function CommitLock($table)$/;" f -CommitTrans lib/adodb/adodb-connection.inc.php /^ function CommitTrans($ok=true) $/;" f +CommitTrans lib/adodb/adodb-connection.inc.php /^ function CommitTrans($ok=true) $/;" f CommitTrans lib/adodb/adodb.inc.php /^ function CommitTrans($ok=true) $/;" f CommitTrans lib/adodb/drivers/adodb-ado.inc.php /^ function CommitTrans($ok=true) $/;" f -CommitTrans lib/adodb/drivers/adodb-ado5.inc.php /^ function CommitTrans($ok=true) $/;" f -CommitTrans lib/adodb/drivers/adodb-ado_access.inc.php /^ function CommitTrans() { return false;}$/;" f CommitTrans lib/adodb/drivers/adodb-ibase.inc.php /^ function CommitTrans($ok=true) $/;" f CommitTrans lib/adodb/drivers/adodb-informix72.inc.php /^ function CommitTrans($ok=true) $/;" f CommitTrans lib/adodb/drivers/adodb-mssql.inc.php /^ function CommitTrans($ok=true) $/;" f @@ -393,17 +359,16 @@ CommitTrans lib/adodb/drivers/adodb-pdo.inc.php /^ function CommitTrans($ok=true CommitTrans lib/adodb/drivers/adodb-postgres64.inc.php /^ function CommitTrans($ok=true) $/;" f CommitTrans lib/adodb/drivers/adodb-sqlite.inc.php /^ function CommitTrans($ok=true) $/;" f CommitTrans lib/adodb/drivers/adodb-sybase.inc.php /^ function CommitTrans($ok=true) $/;" f -CompleteTrans lib/adodb/adodb-connection.inc.php /^ function CompleteTrans($autoComplete = true)$/;" f +CompleteTrans lib/adodb/adodb-connection.inc.php /^ function CompleteTrans($autoComplete = true)$/;" f CompleteTrans lib/adodb/adodb.inc.php /^ function CompleteTrans($autoComplete = true)$/;" f -Concat lib/adodb/adodb-connection.inc.php /^ function Concat()$/;" f +Concat lib/adodb/adodb-connection.inc.php /^ function Concat()$/;" f Concat lib/adodb/adodb.inc.php /^ function Concat()$/;" f Concat lib/adodb/drivers/adodb-fbsql.inc.php /^ function Concat()$/;" f -Concat lib/adodb/drivers/adodb-mssql.inc.php /^ function Concat()$/;" f Concat lib/adodb/drivers/adodb-mysql.inc.php /^ function Concat()$/;" f Concat lib/adodb/drivers/adodb-mysqli.inc.php /^ function Concat()$/;" f Config_File lib/smarty/Config_File.class.php /^ function Config_File($config_path = NULL)$/;" f Config_File lib/smarty/Config_File.class.php /^class Config_File {$/;" c -Connect lib/adodb/adodb-connection.inc.php /^ function Connect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "", $forceNew = false) $/;" f +Connect lib/adodb/adodb-connection.inc.php /^ function Connect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "", $forceNew = false) $/;" f Connect lib/adodb/adodb.inc.php /^ function Connect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "", $forceNew = false) $/;" f Connect lib/phpmailer/class.smtp.php /^ function Connect($host,$port=0,$tval=30) {$/;" f Connected lib/phpmailer/class.smtp.php /^ function Connected() {$/;" f @@ -412,6 +377,38 @@ ConvertSchemaFile lib/adodb/adodb-xmlschema.inc.php /^ function ConvertSchemaFil ConvertSchemaString lib/adodb/adodb-xmlschema.inc.php /^ function ConvertSchemaString( $schema, $newVersion = NULL, $newFile = NULL ) {$/;" f CountCachedExecs lib/adodb/tests/test.php /^function CountCachedExecs($db, $secs2cache, $sql, $inputarray)$/;" f CountExecs lib/adodb/tests/test.php /^function CountExecs($db, $sql, $inputarray)$/;" f +CourseBlock_activity_modules blocks/activity_modules/block_activity_modules.php /^ function CourseBlock_activity_modules($course) {$/;" f +CourseBlock_activity_modules blocks/activity_modules/block_activity_modules.php /^class CourseBlock_activity_modules extends MoodleBlock {$/;" c +CourseBlock_admin blocks/admin/block_admin.php /^ function CourseBlock_admin($course) {$/;" f +CourseBlock_admin blocks/admin/block_admin.php /^class CourseBlock_admin extends MoodleBlock {$/;" c +CourseBlock_advertisement blocks/advertisement/block_advertisement.php /^ function CourseBlock_advertisement ($course) {$/;" f +CourseBlock_advertisement blocks/advertisement/block_advertisement.php /^class CourseBlock_advertisement extends MoodleBlock {$/;" c +CourseBlock_calendar_month blocks/calendar_month/block_calendar_month.php /^ function CourseBlock_calendar_month($course) {$/;" f +CourseBlock_calendar_month blocks/calendar_month/block_calendar_month.php /^class CourseBlock_calendar_month extends MoodleBlock {$/;" c +CourseBlock_calendar_upcoming blocks/calendar_upcoming/block_calendar_upcoming.php /^ function CourseBlock_calendar_upcoming ($course) {$/;" f +CourseBlock_calendar_upcoming blocks/calendar_upcoming/block_calendar_upcoming.php /^class CourseBlock_calendar_upcoming extends MoodleBlock {$/;" c +CourseBlock_course_list blocks/course_list/block_course_list.php /^ function CourseBlock_course_list ($course) {$/;" f +CourseBlock_course_list blocks/course_list/block_course_list.php /^class CourseBlock_course_list extends MoodleBlock {$/;" c +CourseBlock_course_summary blocks/course_summary/block_course_summary.php /^ function CourseBlock_course_summary ($course) {$/;" f +CourseBlock_course_summary blocks/course_summary/block_course_summary.php /^class CourseBlock_course_summary extends MoodleBlock {$/;" c +CourseBlock_news_items blocks/news_items/block_news_items.php /^ function CourseBlock_news_items ($course) {$/;" f +CourseBlock_news_items blocks/news_items/block_news_items.php /^class CourseBlock_news_items extends MoodleBlock {$/;" c +CourseBlock_online_users blocks/online_users/block_online_users.php /^ function CourseBlock_online_users ($course) {$/;" f +CourseBlock_online_users blocks/online_users/block_online_users.php /^class CourseBlock_online_users extends MoodleBlock {$/;" c +CourseBlock_participants blocks/participants/block_participants.php /^ function CourseBlock_participants ($course) {$/;" f +CourseBlock_participants blocks/participants/block_participants.php /^class CourseBlock_participants extends MoodleBlock {$/;" c +CourseBlock_recent_activity blocks/recent_activity/block_recent_activity.php /^ function CourseBlock_recent_activity ($course) {$/;" f +CourseBlock_recent_activity blocks/recent_activity/block_recent_activity.php /^class CourseBlock_recent_activity extends MoodleBlock {$/;" c +CourseBlock_rssfeed blocks/rssfeed/block_rssfeed.php /^ function CourseBlock_rssfeed ($course) {$/;" f +CourseBlock_rssfeed blocks/rssfeed/block_rssfeed.php /^class CourseBlock_rssfeed extends MoodleBlock {$/;" c +CourseBlock_search_forums blocks/search_forums/block_search_forums.php /^ function CourseBlock_search_forums ($course) {$/;" f +CourseBlock_search_forums blocks/search_forums/block_search_forums.php /^class CourseBlock_search_forums extends MoodleBlock {$/;" c +CourseBlock_section_links blocks/section_links/block_section_links.php /^ function CourseBlock_section_links ($course) {$/;" f +CourseBlock_section_links blocks/section_links/block_section_links.php /^class CourseBlock_section_links extends MoodleBlock {$/;" c +CourseBlock_site_main_menu blocks/site_main_menu/block_site_main_menu.php /^ function CourseBlock_site_main_menu ($course) {$/;" f +CourseBlock_site_main_menu blocks/site_main_menu/block_site_main_menu.php /^class CourseBlock_site_main_menu extends MoodleBlock {$/;" c +CourseBlock_social_activities blocks/social_activities/block_social_activities.php /^ function CourseBlock_social_activities ($course) {$/;" f +CourseBlock_social_activities blocks/social_activities/block_social_activities.php /^class CourseBlock_social_activities extends MoodleBlock {$/;" c CreateBody lib/phpmailer/class.phpmailer.php /^ function CreateBody() {$/;" f CreateDatabase lib/adodb/adodb-datadict.inc.php /^ function CreateDatabase($dbname,$options=false)$/;" f CreateDatabase lib/adodb/datadict/datadict-access.inc.php /^ function CreateDatabase($dbname,$options=false)$/;" f @@ -420,7 +417,7 @@ CreateDatabase lib/adodb/datadict/datadict-oci8.inc.php /^ function CreateDataba CreateHeader lib/phpmailer/class.phpmailer.php /^ function CreateHeader() {$/;" f CreateIndexSQL lib/adodb/adodb-datadict.inc.php /^ function CreateIndexSQL($idxname, $tabname, $flds, $idxoptions = false)$/;" f CreateLogTable lib/adodb/adodb-perf.inc.php /^ function CreateLogTable()$/;" f -CreateSequence lib/adodb/adodb-connection.inc.php /^ function CreateSequence($seqname='adodbseq',$startID=1)$/;" f +CreateSequence lib/adodb/adodb-connection.inc.php /^ function CreateSequence($seqname='adodbseq',$startID=1)$/;" f CreateSequence lib/adodb/adodb.inc.php /^ function CreateSequence($seqname='adodbseq',$startID=1)$/;" f CreateSequence lib/adodb/drivers/adodb-ibase.inc.php /^ function CreateSequence($seqname,$startID=1)$/;" f CreateSequence lib/adodb/drivers/adodb-mssql.inc.php /^ function CreateSequence($seq='adodbseq',$start=1)$/;" f @@ -433,24 +430,25 @@ CreateTableSQL lib/adodb/adodb-datadict.inc.php /^ function CreateTableSQL($tabn CurrentRow lib/adodb/adodb-recordset.inc.php /^ function CurrentRow() {return $this->_currentRow;}$/;" f CurrentRow lib/adodb/adodb.inc.php /^ function CurrentRow() {return $this->_currentRow;}$/;" f DB lib/adodb/adodb-pear.inc.php /^class DB$/;" c -DBDate lib/adodb/adodb-connection.inc.php /^ function DBDate($d)$/;" f +DBDate lib/adodb/adodb-connection.inc.php /^ function DBDate($d)$/;" f DBDate lib/adodb/adodb.inc.php /^ function DBDate($d)$/;" f DBDate lib/adodb/drivers/adodb-oci8.inc.php /^ function DBDate($d)$/;" f DBDate lib/adodb/drivers/adodb-oracle.inc.php /^ function DBDate($d)$/;" f DBParameter lib/adodb/adodb-perf.inc.php /^ function DBParameter($param)$/;" f -DBTimeStamp lib/adodb/adodb-connection.inc.php /^ function DBTimeStamp($ts)$/;" f +DBTimeStamp lib/adodb/adodb-connection.inc.php /^ function DBTimeStamp($ts)$/;" f DBTimeStamp lib/adodb/adodb.inc.php /^ function DBTimeStamp($ts)$/;" f DBTimeStamp lib/adodb/drivers/adodb-oci8.inc.php /^ function DBTimeStamp($ts)$/;" f DBTimeStamp lib/adodb/drivers/adodb-oracle.inc.php /^ function DBTimeStamp($ts)$/;" f Data lib/phpmailer/class.smtp.php /^ function Data($msg_data) {$/;" f Decrypt lib/adodb/crypt.inc.php /^ function Decrypt($txt,$key)$/;" f Decrypt lib/adodb/session/crypt.inc.php /^ function Decrypt($txt,$key)$/;" f +Decrypt lib/adodb/session/old/crypt.inc.php /^ function Decrypt($txt,$key)$/;" f Destroy lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function Destroy() {$/;" f Destroy lib/adodb/adodb-xmlschema.inc.php /^ function Destroy() {$/;" f -Disconnect lib/adodb/adodb-connection.inc.php /^ function Disconnect()$/;" f +Disconnect lib/adodb/adodb-connection.inc.php /^ function Disconnect()$/;" f Disconnect lib/adodb/adodb.inc.php /^ function Disconnect()$/;" f DoSQLForm lib/adodb/adodb-perf.inc.php /^ function DoSQLForm()$/;" f -DropColumnSQL lib/adodb/adodb-datadict.inc.php /^ function DropColumnSQL($tabname, $flds, $tableflds='',$tableoptions='')$/;" f +DropColumnSQL lib/adodb/adodb-datadict.inc.php /^ function DropColumnSQL($tabname, $flds)$/;" f DropColumnSQL lib/adodb/datadict/datadict-access.inc.php /^ function DropColumnSQL($tabname, $flds)$/;" f DropColumnSQL lib/adodb/datadict/datadict-db2.inc.php /^ function DropColumnSQL($tabname, $flds)$/;" f DropColumnSQL lib/adodb/datadict/datadict-generic.inc.php /^ function DropColumnSQL($tabname, $flds)$/;" f @@ -458,18 +456,17 @@ DropColumnSQL lib/adodb/datadict/datadict-ibase.inc.php /^ function DropColumnSQ DropColumnSQL lib/adodb/datadict/datadict-informix.inc.php /^ function DropColumnSQL($tabname, $flds)$/;" f DropColumnSQL lib/adodb/datadict/datadict-mssql.inc.php /^ function DropColumnSQL($tabname, $flds)$/;" f DropColumnSQL lib/adodb/datadict/datadict-oci8.inc.php /^ function DropColumnSQL($tabname, $flds)$/;" f -DropColumnSQL lib/adodb/datadict/datadict-postgres.inc.php /^ function DropColumnSQL($tabname, $flds, $tableflds='',$tableoptions='')$/;" f -DropColumnSQL lib/adodb/datadict/datadict-sapdb.inc.php /^ function DropColumnSQL($tabname, $flds)$/;" f +DropColumnSQL lib/adodb/datadict/datadict-postgres.inc.php /^ function DropColumnSQL($tabname, $flds)$/;" f DropColumnSQL lib/adodb/datadict/datadict-sybase.inc.php /^ function DropColumnSQL($tabname, $flds)$/;" f DropIndexSQL lib/adodb/adodb-datadict.inc.php /^ function DropIndexSQL ($idxname, $tabname = NULL)$/;" f -DropSequence lib/adodb/adodb-connection.inc.php /^ function DropSequence($seqname)$/;" f -DropSequence lib/adodb/adodb.inc.php /^ function DropSequence($seqname='adodbseq')$/;" f +DropSequence lib/adodb/adodb-connection.inc.php /^ function DropSequence($seqname)$/;" f +DropSequence lib/adodb/adodb.inc.php /^ function DropSequence($seqname)$/;" f DropSequence lib/adodb/drivers/adodb-ibase.inc.php /^ function DropSequence($seqname)$/;" f DropSequence lib/adodb/drivers/adodb-odbc.inc.php /^ function DropSequence($seqname)$/;" f DropSequence lib/adodb/drivers/adodb-odbtp.inc.php /^ function DropSequence($seqname)$/;" f DropSequence lib/adodb/drivers/adodb-sqlite.inc.php /^ function DropSequence($seqname)$/;" f DropTableSQL lib/adodb/adodb-datadict.inc.php /^ function DropTableSQL($tabname)$/;" f -DropTableSQL lib/adodb/datadict/datadict-postgres.inc.php /^ function DropTableSQL($tabname)$/;" f +EmbeddedImageCount lib/phpmailer/class.phpmailer.php /^ function EmbeddedImageCount() {$/;" f EncodeFile lib/phpmailer/class.phpmailer.php /^ function EncodeFile ($path, $encoding = "base64") {$/;" f EncodeHeader lib/phpmailer/class.phpmailer.php /^ function EncodeHeader ($str, $position = 'text') {$/;" f EncodeQ lib/phpmailer/class.phpmailer.php /^ function EncodeQ ($str, $position = "text") {$/;" f @@ -477,12 +474,12 @@ EncodeQP lib/phpmailer/class.phpmailer.php /^ function EncodeQP ($str) {$/;" EncodeString lib/phpmailer/class.phpmailer.php /^ function EncodeString ($str, $encoding = "base64") {$/;" f Encrypt lib/adodb/crypt.inc.php /^ function Encrypt($txt,$key)$/;" f Encrypt lib/adodb/session/crypt.inc.php /^ function Encrypt($txt,$key)$/;" f +Encrypt lib/adodb/session/old/crypt.inc.php /^ function Encrypt($txt,$key)$/;" f EndBoundary lib/phpmailer/class.phpmailer.php /^ function EndBoundary($boundary) {$/;" f Err lib/adodb/tests/test.php /^function Err($msg)$/;" f -ErrorMsg lib/adodb/adodb-connection.inc.php /^ function ErrorMsg()$/;" f +ErrorMsg lib/adodb/adodb-connection.inc.php /^ function ErrorMsg()$/;" f ErrorMsg lib/adodb/adodb.inc.php /^ function ErrorMsg()$/;" f ErrorMsg lib/adodb/drivers/adodb-ado.inc.php /^ function ErrorMsg() $/;" f -ErrorMsg lib/adodb/drivers/adodb-ado5.inc.php /^ function ErrorMsg() $/;" f ErrorMsg lib/adodb/drivers/adodb-csv.inc.php /^ function ErrorMsg() $/;" f ErrorMsg lib/adodb/drivers/adodb-fbsql.inc.php /^ function ErrorMsg() $/;" f ErrorMsg lib/adodb/drivers/adodb-ibase.inc.php /^ function ErrorMsg() $/;" f @@ -497,13 +494,12 @@ ErrorMsg lib/adodb/drivers/adodb-oracle.inc.php /^ function ErrorMsg() $/;" f ErrorMsg lib/adodb/drivers/adodb-pdo.inc.php /^ function ErrorMsg()$/;" f ErrorMsg lib/adodb/drivers/adodb-postgres64.inc.php /^ function ErrorMsg() $/;" f ErrorMsg lib/adodb/drivers/adodb-sqlite.inc.php /^ function ErrorMsg() $/;" f -ErrorMsg lib/adodb/drivers/adodb-sybase.inc.php /^ function ErrorMsg()$/;" f -ErrorNative lib/adodb/adodb-connection.inc.php /^ function ErrorNative()$/;" f +ErrorMsg lib/adodb/drivers/adodb-sybase.inc.php /^ function ErrorMsg() $/;" f +ErrorNative lib/adodb/adodb-connection.inc.php /^ function ErrorNative()$/;" f ErrorNative lib/adodb/adodb.inc.php /^ function ErrorNative()$/;" f -ErrorNo lib/adodb/adodb-connection.inc.php /^ function ErrorNo() $/;" f +ErrorNo lib/adodb/adodb-connection.inc.php /^ function ErrorNo() $/;" f ErrorNo lib/adodb/adodb.inc.php /^ function ErrorNo() $/;" f ErrorNo lib/adodb/drivers/adodb-ado.inc.php /^ function ErrorNo() $/;" f -ErrorNo lib/adodb/drivers/adodb-ado5.inc.php /^ function ErrorNo() $/;" f ErrorNo lib/adodb/drivers/adodb-csv.inc.php /^ function ErrorNo() $/;" f ErrorNo lib/adodb/drivers/adodb-fbsql.inc.php /^ function ErrorNo() $/;" f ErrorNo lib/adodb/drivers/adodb-ibase.inc.php /^ function ErrorNo() $/;" f @@ -519,7 +515,7 @@ ErrorNo lib/adodb/drivers/adodb-pdo.inc.php /^ function ErrorNo()$/;" f ErrorNo lib/adodb/drivers/adodb-postgres64.inc.php /^ function ErrorNo()$/;" f ErrorNo lib/adodb/drivers/adodb-sqlite.inc.php /^ function ErrorNo() $/;" f ExecSQL lib/odbc.php /^ function ExecSQL($sSQL) {$/;" f -Execute lib/adodb/adodb-connection.inc.php /^ function &Execute($sql,$inputarr=false,$arg3=false) $/;" f +Execute lib/adodb/adodb-connection.inc.php /^ function &Execute($sql,$inputarr=false,$arg3=false) $/;" f Execute lib/adodb/adodb.inc.php /^ function &Execute($sql,$inputarr=false) $/;" f Execute lib/adodb/drivers/adodb-pdo.inc.php /^ function Execute($inputArr=false)$/;" f ExecuteCursor lib/adodb/drivers/adodb-oci8.inc.php /^ function &ExecuteCursor($sql,$cursorName='rs',$params=false)$/;" f @@ -537,13 +533,12 @@ Explain lib/adodb/perf/perf-mysql.inc.php /^ function Explain($sql,$partial=fals Explain lib/adodb/perf/perf-oci8.inc.php /^ function Explain($sql,$partial=false) $/;" f Explain lib/adodb/perf/perf-postgres.inc.php /^ function Explain($sql,$partial=false)$/;" f ExtractSchema lib/adodb/adodb-xmlschema.inc.php /^ function ExtractSchema( $data = FALSE ) {$/;" f -FailTrans lib/adodb/adodb-connection.inc.php /^ function FailTrans()$/;" f +FailTrans lib/adodb/adodb-connection.inc.php /^ function FailTrans()$/;" f FailTrans lib/adodb/adodb.inc.php /^ function FailTrans()$/;" f FetchField lib/adodb/adodb-recordset.inc.php /^ function &FetchField($fieldoffset) $/;" f FetchField lib/adodb/adodb.inc.php /^ function &FetchField($fieldOffset = -1) $/;" f FetchField lib/adodb/adodb.inc.php /^ function &FetchField($fieldoffset) $/;" f FetchField lib/adodb/drivers/adodb-ado.inc.php /^ function FetchField($fieldOffset = -1) {$/;" f -FetchField lib/adodb/drivers/adodb-ado5.inc.php /^ function FetchField($fieldOffset = -1) {$/;" f FetchField lib/adodb/drivers/adodb-fbsql.inc.php /^ function &FetchField($fieldOffset = -1) {$/;" f FetchField lib/adodb/drivers/adodb-ibase.inc.php /^ function &FetchField($fieldOffset = -1)$/;" f FetchField lib/adodb/drivers/adodb-informix72.inc.php /^ function &FetchField($fieldOffset = -1)$/;" f @@ -580,13 +575,12 @@ Fields lib/adodb/adodb-recordset.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/adodb.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/adodb.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/drivers/adodb-ado.inc.php /^ function Fields($colname)$/;" f -Fields lib/adodb/drivers/adodb-ado5.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/drivers/adodb-ibase.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/drivers/adodb-mssql.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/drivers/adodb-mysql.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/drivers/adodb-mysqli.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/drivers/adodb-oci8.inc.php /^ function Fields($colname)$/;" f -Fields lib/adodb/drivers/adodb-oci8po.inc.php /^ function Fields($colname)$/;" f +Fields lib/adodb/drivers/adodb-oci8po.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/drivers/adodb-odbc.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/drivers/adodb-oracle.inc.php /^ function Fields($colname)$/;" f Fields lib/adodb/drivers/adodb-postgres64.inc.php /^ function Fields($colname)$/;" f @@ -597,7 +591,7 @@ Format lib/excel/Format.php /^ function Format($index = 0,$properties = arra Format lib/excel/Format.php /^class Format$/;" c Free lib/adodb/adodb-recordset.inc.php /^ function Free()$/;" f Free lib/adodb/adodb.inc.php /^ function Free()$/;" f -GenID lib/adodb/adodb-connection.inc.php /^ function GenID($seqname='adodbseq',$startID=1)$/;" f +GenID lib/adodb/adodb-connection.inc.php /^ function GenID($seqname='adodbseq',$startID=1)$/;" f GenID lib/adodb/adodb.inc.php /^ function GenID($seqname='adodbseq',$startID=1)$/;" f GenID lib/adodb/drivers/adodb-ibase.inc.php /^ function GenID($seqname='adodbseq',$startID=1)$/;" f GenID lib/adodb/drivers/adodb-mssql.inc.php /^ function GenID($seq='adodbseq',$start=1)$/;" f @@ -606,7 +600,8 @@ GenID lib/adodb/drivers/adodb-mysqli.inc.php /^ function GenID($seqname='adodbse GenID lib/adodb/drivers/adodb-odbc.inc.php /^ function GenID($seq='adodbseq',$start=1)$/;" f GenID lib/adodb/drivers/adodb-odbtp.inc.php /^ function GenID($seq='adodbseq',$start=1)$/;" f GenID lib/adodb/drivers/adodb-sqlite.inc.php /^ function GenID($seq='adodbseq',$start=1)$/;" f -GetAll lib/adodb/adodb-connection.inc.php /^ function GetAll($sql,$inputarr=false)$/;" f +GetAlign tabs/index.php /^ function GetAlign()$/;" f +GetAll lib/adodb/adodb-connection.inc.php /^ function GetAll($sql,$inputarr=false)$/;" f GetAll lib/adodb/adodb.inc.php /^ function &GetAll($nRows = -1)$/;" f GetAll lib/adodb/adodb.inc.php /^ function &GetAll($sql, $inputarr=false)$/;" f GetArray lib/adodb/adodb-recordset.inc.php /^ function GetArray($nRows = -1) $/;" f @@ -619,35 +614,33 @@ GetArrayLimit lib/adodb/drivers/adodb-oci8.inc.php /^ function &GetArrayLimit($n GetArrayLimit lib/adodb/drivers/adodb-oci8po.inc.php /^ function &GetArrayLimit($nrows,$offset=-1) $/;" f GetArrayLimit lib/adodb/drivers/adodb-odbc.inc.php /^ function &GetArrayLimit($nrows,$offset=-1) $/;" f GetAssoc lib/adodb/adodb-recordset.inc.php /^ function GetAssoc($force_array = false, $first2cols = false) {$/;" f -GetAssoc lib/adodb/adodb.inc.php /^ function &GetAssoc($force_array = false, $first2cols = false) $/;" f +GetAssoc lib/adodb/adodb.inc.php /^ function &GetAssoc($force_array = false, $first2cols = false) {$/;" f GetAssoc lib/adodb/adodb.inc.php /^ function &GetAssoc($sql, $inputarr=false,$force_array = false, $first2cols = false)$/;" f GetAssoc lib/adodb/drivers/adodb-ldap.inc.php /^ function &GetAssoc($force_array = false, $first2cols = false) $/;" f GetAssocKeys lib/adodb/adodb-recordset.inc.php /^ function GetAssocKeys($upper=true)$/;" f GetAssocKeys lib/adodb/adodb.inc.php /^ function GetAssocKeys($upper=true)$/;" f +GetBgColor tabs/index.php /^ function GetBgColor($bgcolor)$/;" f GetBoundary lib/phpmailer/class.phpmailer.php /^ function GetBoundary($boundary, $charSet, $contentType, $encoding) {$/;" f GetCharSet lib/adodb/adodb.inc.php /^ function GetCharSet()$/;" f GetCharSet lib/adodb/drivers/adodb-postgres7.inc.php /^ function GetCharSet()$/;" f -GetCol lib/adodb/adodb-connection.inc.php /^ function GetCol($sql, $inputarr = false, $trim = false)$/;" f +GetCol lib/adodb/adodb-connection.inc.php /^ function GetCol($sql, $inputarr = false, $trim = false)$/;" f GetCol lib/adodb/adodb.inc.php /^ function GetCol($sql, $inputarr = false, $trim = false)$/;" f GetCommentSQL lib/adodb/adodb-datadict.inc.php /^ function GetCommentSQL($table,$col)$/;" f GetCommentSQL lib/adodb/datadict/datadict-oci8.inc.php /^ function GetCommentSQL($table,$col)$/;" f -GetDiagnostic mod/scorm/datamodels/scorm1_3.js.php /^ function GetDiagnostic (param) {$/;" f -GetErrorString mod/scorm/datamodels/scorm1_3.js.php /^ function GetErrorString (param) {$/;" f GetInnoDBHitRatio lib/adodb/perf/perf-mysql.inc.php /^ function GetInnoDBHitRatio()$/;" f -GetInsertSQL lib/adodb/adodb-connection.inc.php /^ function GetInsertSQL(&$rs, $arrFields,$magicq=false)$/;" f -GetInsertSQL lib/adodb/adodb.inc.php /^ function GetInsertSQL(&$rs, $arrFields,$magicq=false,$force=null)$/;" f +GetInsertSQL lib/adodb/adodb-connection.inc.php /^ function GetInsertSQL(&$rs, $arrFields,$magicq=false)$/;" f +GetInsertSQL lib/adodb/adodb.inc.php /^ function GetInsertSQL(&$rs, $arrFields,$magicq=false,$forcenulls=null)$/;" f GetKeyHitRatio lib/adodb/perf/perf-mysql.inc.php /^ function GetKeyHitRatio()$/;" f -GetLastError mod/scorm/datamodels/scorm1_3.js.php /^ function GetLastError () {$/;" f GetMenu lib/adodb/adodb-recordset.inc.php /^ function GetMenu($name,$defstr='',$blank1stItem=true,$multiple=false,$/;" f GetMenu lib/adodb/adodb.inc.php /^ function GetMenu($name,$defstr='',$blank1stItem=true,$multiple=false,$/;" f GetMenu2 lib/adodb/adodb-recordset.inc.php /^ function GetMenu2($name,$defstr='',$blank1stItem=true,$multiple=false,$size=0, $selectAttr='') $/;" f GetMenu2 lib/adodb/adodb.inc.php /^ function GetMenu2($name,$defstr='',$blank1stItem=true,$multiple=false,$size=0, $selectAttr='') $/;" f -GetOne lib/adodb/adodb-connection.inc.php /^ function GetOne($sql,$inputarr=false)$/;" f +GetOne lib/adodb/adodb-connection.inc.php /^ function GetOne($sql,$inputarr=false)$/;" f GetOne lib/adodb/adodb.inc.php /^ function GetOne($sql,$inputarr=false)$/;" f GetOne lib/adodb/drivers/adodb-mysql.inc.php /^ function GetOne($sql,$inputarr=false)$/;" f GetQHitRatio lib/adodb/perf/perf-mysql.inc.php /^ function GetQHitRatio()$/;" f GetReads lib/adodb/perf/perf-mysql.inc.php /^ function GetReads()$/;" f -GetRow lib/adodb/adodb-connection.inc.php /^ function GetRow($sql,$inputarr=false)$/;" f +GetRow lib/adodb/adodb-connection.inc.php /^ function GetRow($sql,$inputarr=false)$/;" f GetRow lib/adodb/adodb.inc.php /^ function &GetRow($sql,$inputarr=false)$/;" f GetRowAssoc lib/adodb/adodb-recordset.inc.php /^ function GetRowAssoc($upper=1)$/;" f GetRowAssoc lib/adodb/adodb.inc.php /^ function &GetRowAssoc($upper=1)$/;" f @@ -658,14 +651,13 @@ GetRowAssoc lib/adodb/drivers/adodb-postgres64.inc.php /^ function &GetRowAssoc( GetRowNums lib/adodb/drivers/adodb-ldap.inc.php /^ function GetRowNums()$/;" f GetRows lib/adodb/adodb-recordset.inc.php /^ function GetRows($nRows = -1) $/;" f GetRows lib/adodb/adodb.inc.php /^ function &GetRows($nRows = -1) $/;" f -GetUpdateSQL lib/adodb/adodb-connection.inc.php /^ function GetUpdateSQL(&$rs, $arrFields,$forceUpdate=false,$magicq=false)$/;" f -GetUpdateSQL lib/adodb/adodb.inc.php /^ function GetUpdateSQL(&$rs, $arrFields,$forceUpdate=false,$magicq=false,$force=null)$/;" f -GetValue mod/scorm/datamodels/scorm1_3.js.php /^ function GetValue (element) {$/;" f +GetUpdateSQL lib/adodb/adodb-connection.inc.php /^ function GetUpdateSQL(&$rs, $arrFields,$forceUpdate=false,$magicq=false)$/;" f +GetUpdateSQL lib/adodb/adodb.inc.php /^ function GetUpdateSQL(&$rs, $arrFields,$forceUpdate=false,$magicq=false,$forcenulls=null)$/;" f +GetWidth tabs/index.php /^ function GetWidth ()$/;" f GetWrites lib/adodb/perf/perf-mysql.inc.php /^ function GetWrites()$/;" f -GuessOID lib/adodb/drivers/adodb-postgres64.inc.php /^ function GuessOID($oid)$/;" f +Get_Results blocks/rssfeed/class_rss_feed.php /^ function Get_Results()$/;" f HTMLArea lib/editor/htmlarea.php /^function HTMLArea(textarea, config) {$/;" f HTMLArea lib/editor/htmlarea_bak.php /^function HTMLArea(textarea, config) {$/;" f -HTMLFilterOutput lib/cas/client.php /^ function HTMLFilterOutput($str)$/;" f HasFailedTrans lib/adodb/adodb.inc.php /^ function HasFailedTrans()$/;" f HeaderLine lib/phpmailer/class.phpmailer.php /^ function HeaderLine($name, $value) {$/;" f HeaderingExcel lib/excel/test.php /^ function HeaderingExcel($filename) {$/;" f @@ -693,63 +685,54 @@ Init lib/adodb/adodb.inc.php /^ function Init() {}$/;" f Init lib/adodb/adodb.inc.php /^ function Init()$/;" f Init lib/adodb/drivers/adodb-oci8.inc.php /^ function Init()$/;" f Init lib/adodb/drivers/adodb-pdo.inc.php /^ function Init()$/;" f -Init lib/editor/popups/createanchor.php /^function Init() {$/;" f Init lib/editor/popups/dlg_ins_char.php /^function Init() {$/;" f Init lib/editor/popups/dlg_ins_smile.php /^function Init() {$/;" f Init lib/editor/popups/insert_image.php /^function Init() {$/;" f Init lib/editor/popups/insert_image_std.php /^function Init() {$/;" f Init lib/editor/popups/insert_table.php /^function Init() {$/;" f Init lib/editor/popups/link_std.php /^function Init() {$/;" f -Init lib/editor/popups/searchandreplace.php /^function Init() {$/;" f Init lib/editor/popups/select_color.php /^function Init() {$/;" f InitArray lib/adodb/adodb.inc.php /^ function InitArray($array,$typearr,$colnames=false)$/;" f InitArrayFields lib/adodb/adodb.inc.php /^ function InitArrayFields(&$array,&$fieldarr)$/;" f -Initialize mod/scorm/datamodels/scorm1_3.js.php /^ function Initialize (param) {$/;" f -InlineImageExists lib/phpmailer/class.phpmailer.php /^ function InlineImageExists() {$/;" f -Insert_ID lib/adodb/adodb-connection.inc.php /^ function Insert_ID()$/;" f -Insert_ID lib/adodb/adodb.inc.php /^ function Insert_ID($table='',$column='')$/;" f +Insert_ID lib/adodb/adodb-connection.inc.php /^ function Insert_ID()$/;" f +Insert_ID lib/adodb/adodb.inc.php /^ function Insert_ID()$/;" f InvalidSQL lib/adodb/adodb-perf.inc.php /^ function InvalidSQL($numsql = 10)$/;" f -IsConnected lib/adodb/adodb.inc.php /^ function IsConnected()$/;" f IsError lib/phpmailer/class.phpmailer.php /^ function IsError() {$/;" f IsHTML lib/phpmailer/class.phpmailer.php /^ function IsHTML($bool) {$/;" f IsMail lib/phpmailer/class.phpmailer.php /^ function IsMail() {$/;" f IsQmail lib/phpmailer/class.phpmailer.php /^ function IsQmail() {$/;" f IsSMTP lib/phpmailer/class.phpmailer.php /^ function IsSMTP() {$/;" f IsSendmail lib/phpmailer/class.phpmailer.php /^ function IsSendmail() {$/;" f -LMSCommit mod/scorm/datamodels/scorm1_2.js.php /^ function LMSCommit (param) {$/;" f -LMSFinish mod/scorm/datamodels/scorm1_2.js.php /^ function LMSFinish (param) {$/;" f -LMSGetDiagnostic mod/scorm/datamodels/scorm1_2.js.php /^ function LMSGetDiagnostic (param) {$/;" f -LMSGetErrorString mod/scorm/datamodels/scorm1_2.js.php /^ function LMSGetErrorString (param) {$/;" f -LMSGetLastError mod/scorm/datamodels/scorm1_2.js.php /^ function LMSGetLastError () {$/;" f -LMSGetValue mod/scorm/datamodels/scorm1_2.js.php /^ function LMSGetValue (element) {$/;" f -LMSInitialize mod/scorm/datamodels/scorm1_2.js.php /^ function LMSInitialize (param) {$/;" f -LMSSetValue mod/scorm/datamodels/scorm1_2.js.php /^ function LMSSetValue (element,value) {$/;" f +LMSCommit mod/scorm/api1_2.php /^ function LMSCommit (param) {$/;" f +LMSFinish mod/scorm/api1_2.php /^ function LMSFinish (param) {$/;" f +LMSGetDiagnostic mod/scorm/api1_2.php /^ function LMSGetDiagnostic (param) {$/;" f +LMSGetErrorString mod/scorm/api1_2.php /^ function LMSGetErrorString (param) {$/;" f +LMSGetLastError mod/scorm/api1_2.php /^ function LMSGetLastError () {$/;" f +LMSGetValue mod/scorm/api1_2.php /^ function LMSGetValue (param) {$/;" f +LMSInitialize mod/scorm/api1_2.php /^ function LMSInitialize (param) {$/;" f +LMSSetValue mod/scorm/api1_2.php /^ function LMSSetValue (param,value) {$/;" f Lang lib/phpmailer/class.phpmailer.php /^ function Lang($key) {$/;" f LastPageNo lib/adodb/adodb-recordset.inc.php /^ function LastPageNo($page = false)$/;" f LastPageNo lib/adodb/adodb.inc.php /^ function LastPageNo($page = false)$/;" f Lens_ParseArgs lib/adodb/adodb-datadict.inc.php /^function Lens_ParseArgs($args,$endstmtchar=',',$tokenchars='_.-')$/;" f Lens_ParseTest lib/adodb/adodb-datadict.inc.php /^function Lens_ParseTest()$/;" f -Lexer lib/lexer.php /^ function Lexer(&$parser, $start = "accept", $case = false) {$/;" f -Lexer lib/lexer.php /^ class Lexer {$/;" c -LimitQuery lib/adodb/adodb-connection.inc.php /^ function &LimitQuery($sql, $offset, $count)$/;" f +LimitQuery lib/adodb/adodb-connection.inc.php /^ function &LimitQuery($sql, $offset, $count)$/;" f LimitQuery lib/adodb/adodb.inc.php /^ function &LimitQuery($sql, $offset, $count, $params=false)$/;" f LogSQL lib/adodb/adodb.inc.php /^ function LogSQL($enable=true)$/;" f MD5Crypt lib/adodb/crypt.inc.php /^class MD5Crypt{$/;" c MD5Crypt lib/adodb/session/crypt.inc.php /^class MD5Crypt{$/;" c +MD5Crypt lib/adodb/session/old/crypt.inc.php /^class MD5Crypt{$/;" c Mail lib/phpmailer/class.smtp.php /^ function Mail($from) {$/;" f MailSend lib/phpmailer/class.phpmailer.php /^ function MailSend($header, $body) {$/;" f -Markdown lib/markdown.php /^function Markdown($text) {$/;" f MaxRecordCount lib/adodb/adodb-recordset.inc.php /^ function MaxRecordCount()$/;" f MaxRecordCount lib/adodb/adodb.inc.php /^ function MaxRecordCount()$/;" f MemInfo lib/adodb/adodb-perf.inc.php /^ function MemInfo()$/;" f -MetaColumnNames lib/adodb/adodb-connection.inc.php /^ function MetaColumnNames($table) $/;" f +MetaColumnNames lib/adodb/adodb-connection.inc.php /^ function MetaColumnNames($table) $/;" f MetaColumnNames lib/adodb/adodb.inc.php /^ function &MetaColumnNames($table, $numIndexes=false) $/;" f -MetaColumnNames lib/adodb/drivers/adodb-sapdb.inc.php /^ function MetaColumnNames($table)$/;" f -MetaColumns lib/adodb/adodb-connection.inc.php /^ function MetaColumns($table,$upper=true) $/;" f +MetaColumns lib/adodb/adodb-connection.inc.php /^ function MetaColumns($table,$upper=true) $/;" f MetaColumns lib/adodb/adodb-datadict.inc.php /^ function &MetaColumns($tab, $upper=true, $schema=false)$/;" f MetaColumns lib/adodb/adodb.inc.php /^ function &MetaColumns($table,$upper=true) $/;" f MetaColumns lib/adodb/drivers/adodb-ado.inc.php /^ function &MetaColumns($table)$/;" f -MetaColumns lib/adodb/drivers/adodb-ado5.inc.php /^ function &MetaColumns($table)$/;" f MetaColumns lib/adodb/drivers/adodb-ado_mssql.inc.php /^ function MetaColumns($table)$/;" f MetaColumns lib/adodb/drivers/adodb-csv.inc.php /^ function &MetaColumns($table) $/;" f MetaColumns lib/adodb/drivers/adodb-fbsql.inc.php /^ function &MetaColumns($table) $/;" f @@ -763,22 +746,20 @@ MetaColumns lib/adodb/drivers/adodb-odbc.inc.php /^ function &MetaColumns($table MetaColumns lib/adodb/drivers/adodb-odbc_mssql.inc.php /^ function &MetaColumns($table)$/;" f MetaColumns lib/adodb/drivers/adodb-odbc_oracle.inc.php /^ function &MetaColumns($table) $/;" f MetaColumns lib/adodb/drivers/adodb-odbtp.inc.php /^ function &MetaColumns($table,$upper=true)$/;" f -MetaColumns lib/adodb/drivers/adodb-postgres64.inc.php /^ function &MetaColumns($table,$normalize=true) $/;" f -MetaColumns lib/adodb/drivers/adodb-sapdb.inc.php /^ function &MetaColumns ($table)$/;" f +MetaColumns lib/adodb/drivers/adodb-postgres64.inc.php /^ function &MetaColumns($table,$upper=true) $/;" f MetaColumns lib/adodb/drivers/adodb-sqlite.inc.php /^ function &MetaColumns($tab)$/;" f -MetaDatabases lib/adodb/adodb-connection.inc.php /^ function MetaDatabases() $/;" f +MetaDatabases lib/adodb/adodb-connection.inc.php /^ function MetaDatabases() $/;" f MetaDatabases lib/adodb/adodb.inc.php /^ function MetaDatabases() $/;" f MetaDatabases lib/adodb/drivers/adodb-csv.inc.php /^ function &MetaDatabases()$/;" f MetaDatabases lib/adodb/drivers/adodb-fbsql.inc.php /^ function &MetaDatabases()$/;" f MetaDatabases lib/adodb/drivers/adodb-mssql.inc.php /^ function MetaDatabases() $/;" f MetaDatabases lib/adodb/drivers/adodb-mysql.inc.php /^ function &MetaDatabases()$/;" f MetaDatabases lib/adodb/drivers/adodb-mysqli.inc.php /^ function &MetaDatabases()$/;" f -MetaError lib/adodb/adodb-connection.inc.php /^ function MetaError($err=false)$/;" f +MetaError lib/adodb/adodb-connection.inc.php /^ function MetaError($err=false)$/;" f MetaError lib/adodb/adodb.inc.php /^ function MetaError($err=false)$/;" f -MetaErrorMsg lib/adodb/adodb-connection.inc.php /^ function MetaErrorMsg($errno)$/;" f +MetaErrorMsg lib/adodb/adodb-connection.inc.php /^ function MetaErrorMsg($errno)$/;" f MetaErrorMsg lib/adodb/adodb.inc.php /^ function MetaErrorMsg($errno)$/;" f MetaForeignKeys lib/adodb/adodb.inc.php /^ function MetaForeignKeys($table, $owner=false, $upper=false)$/;" f -MetaForeignKeys lib/adodb/drivers/adodb-informix72.inc.php /^ function MetaForeignKeys($table, $owner=false, $upper=false) \/\/!Eos$/;" f MetaForeignKeys lib/adodb/drivers/adodb-mssql.inc.php /^ function MetaForeignKeys($table, $owner=false, $upper=false)$/;" f MetaForeignKeys lib/adodb/drivers/adodb-oci8.inc.php /^ function MetaForeignKeys($table, $owner=false)$/;" f MetaForeignKeys lib/adodb/drivers/adodb-odbc_mssql.inc.php /^ function MetaForeignKeys($table, $owner=false, $upper=false)$/;" f @@ -786,33 +767,26 @@ MetaForeignKeys lib/adodb/drivers/adodb-odbtp.inc.php /^ function &MetaForeignKe MetaForeignKeys lib/adodb/drivers/adodb-postgres7.inc.php /^function MetaForeignKeys($table, $owner=false, $upper=false)$/;" f MetaIndexes lib/adodb/adodb-datadict.inc.php /^ function &MetaIndexes($table, $primary = false, $owner = false)$/;" f MetaIndexes lib/adodb/adodb.inc.php /^ function &MetaIndexes($table, $primary = false, $owner = false)$/;" f -MetaIndexes lib/adodb/drivers/adodb-db2.inc.php /^ function &MetaIndexes ($table, $primary = FALSE, $owner=false)$/;" f MetaIndexes lib/adodb/drivers/adodb-ibase.inc.php /^ function &MetaIndexes ($table, $primary = FALSE, $owner=false)$/;" f -MetaIndexes lib/adodb/drivers/adodb-mssql.inc.php /^ function &MetaIndexes($table,$primary=false)$/;" f MetaIndexes lib/adodb/drivers/adodb-mysql.inc.php /^ function &MetaIndexes ($table, $primary = FALSE, $owner=false)$/;" f MetaIndexes lib/adodb/drivers/adodb-mysqli.inc.php /^ function &MetaIndexes ($table, $primary = FALSE)$/;" f -MetaIndexes lib/adodb/drivers/adodb-oci8.inc.php /^ function &MetaIndexes ($table, $primary = FALSE, $owner=false)$/;" f MetaIndexes lib/adodb/drivers/adodb-postgres64.inc.php /^ function &MetaIndexes ($table, $primary = FALSE)$/;" f -MetaIndexes lib/adodb/drivers/adodb-sapdb.inc.php /^ function &MetaIndexes ($table, $primary = FALSE)$/;" f -MetaIndexes lib/adodb/drivers/adodb-sqlite.inc.php /^ function &MetaIndexes ($table, $primary = FALSE, $owner=false)$/;" f -MetaPrimaryKeys lib/adodb/adodb-connection.inc.php /^ function MetaPrimaryKeys($table, $owner=false)$/;" f +MetaPrimaryKeys lib/adodb/adodb-connection.inc.php /^ function MetaPrimaryKeys($table, $owner=false)$/;" f MetaPrimaryKeys lib/adodb/adodb-datadict.inc.php /^ function &MetaPrimaryKeys($tab,$owner=false,$intkey=false)$/;" f MetaPrimaryKeys lib/adodb/adodb.inc.php /^ function MetaPrimaryKeys($table, $owner=false)$/;" f MetaPrimaryKeys lib/adodb/drivers/adodb-ibase.inc.php /^ function MetaPrimaryKeys($table,$owner_notused=false,$internalKey=false)$/;" f -MetaPrimaryKeys lib/adodb/drivers/adodb-mssql.inc.php /^ function &MetaPrimaryKeys($table)$/;" f +MetaPrimaryKeys lib/adodb/drivers/adodb-mssql.inc.php /^ function MetaPrimaryKeys($table)$/;" f MetaPrimaryKeys lib/adodb/drivers/adodb-oci8.inc.php /^ function MetaPrimaryKeys($table, $owner=false,$internalKey=false)$/;" f MetaPrimaryKeys lib/adodb/drivers/adodb-odbc.inc.php /^ function MetaPrimaryKeys($table)$/;" f MetaPrimaryKeys lib/adodb/drivers/adodb-odbc_mssql.inc.php /^ function &MetaPrimaryKeys($table)$/;" f MetaPrimaryKeys lib/adodb/drivers/adodb-odbtp.inc.php /^ function &MetaPrimaryKeys($table, $owner='')$/;" f -MetaPrimaryKeys lib/adodb/drivers/adodb-sapdb.inc.php /^ function MetaPrimaryKeys($table)$/;" f MetaPrimaryKeys lib/adodb/drivers/adodb-sybase.inc.php /^ function MetaPrimaryKeys($table)$/;" f -MetaTables lib/adodb/adodb-connection.inc.php /^ function MetaTables() $/;" f +MetaTables lib/adodb/adodb-connection.inc.php /^ function MetaTables() $/;" f MetaTables lib/adodb/adodb-datadict.inc.php /^ function &MetaTables()$/;" f MetaTables lib/adodb/adodb.inc.php /^ function &MetaTables($ttype=false,$showSchema=false,$mask=false) $/;" f MetaTables lib/adodb/drivers/adodb-access.inc.php /^ function &MetaTables()$/;" f MetaTables lib/adodb/drivers/adodb-ado.inc.php /^ function &MetaTables()$/;" f -MetaTables lib/adodb/drivers/adodb-ado5.inc.php /^ function &MetaTables()$/;" f -MetaTables lib/adodb/drivers/adodb-db2.inc.php /^ function &MetaTables($ttype=false,$showSchema=false, $qtable="%", $qschema="%")$/;" f +MetaTables lib/adodb/drivers/adodb-db2.inc.php /^ function &MetaTables($ttype=false,$showSchema=false)$/;" f MetaTables lib/adodb/drivers/adodb-mssql.inc.php /^ function &MetaTables($ttype=false,$showSchema=false,$mask=false) $/;" f MetaTables lib/adodb/drivers/adodb-mysql.inc.php /^ function &MetaTables($ttype=false,$showSchema=false,$mask=false) $/;" f MetaTables lib/adodb/drivers/adodb-oci8.inc.php /^ function &MetaTables($ttype=false,$showSchema=false,$mask=false) $/;" f @@ -828,10 +802,8 @@ MetaType lib/adodb/datadict/datadict-mssql.inc.php /^ function MetaType($t,$len= MetaType lib/adodb/datadict/datadict-mysql.inc.php /^ function MetaType($t,$len=-1,$fieldobj=false)$/;" f MetaType lib/adodb/datadict/datadict-oci8.inc.php /^ function MetaType($t,$len=-1)$/;" f MetaType lib/adodb/datadict/datadict-postgres.inc.php /^ function MetaType($t,$len=-1,$fieldobj=false)$/;" f -MetaType lib/adodb/datadict/datadict-sapdb.inc.php /^ function MetaType($t,$len=-1,$fieldobj=false)$/;" f MetaType lib/adodb/datadict/datadict-sybase.inc.php /^ function MetaType($t,$len=-1,$fieldobj=false)$/;" f MetaType lib/adodb/drivers/adodb-ado.inc.php /^ function MetaType($t,$len=-1,$fieldobj=false)$/;" f -MetaType lib/adodb/drivers/adodb-ado5.inc.php /^ function MetaType($t,$len=-1,$fieldobj=false)$/;" f MetaType lib/adodb/drivers/adodb-db2.inc.php /^ function MetaType($t,$len=-1,$fieldobj=false)$/;" f MetaType lib/adodb/drivers/adodb-fbsql.inc.php /^ function MetaType($t,$len=-1,$fieldobj=false)$/;" f MetaType lib/adodb/drivers/adodb-ibase.inc.php /^ function MetaType($t,$len=-1,$fieldobj=false)$/;" f @@ -841,6 +813,8 @@ MetaType lib/adodb/drivers/adodb-oci8.inc.php /^ function MetaType($t,$len=-1)$/ MetaType lib/adodb/drivers/adodb-oracle.inc.php /^ function MetaType($t,$len=-1)$/;" f MetaType lib/adodb/drivers/adodb-postgres64.inc.php /^ function MetaType($t,$len=-1,$fieldobj=false)$/;" f MetaType lib/adodb/drivers/adodb-vfp.inc.php /^ function MetaType($t,$len=-1)$/;" f +MoodleBlock blocks/moodleblock.class.php /^class MoodleBlock {$/;" c +MoodleBlock_Nuke blocks/moodleblock.class.php /^class MoodleBlock_Nuke extends MoodleBlock {$/;" c MoodleParser backup/restorelib.php /^ class MoodleParser {$/;" c Move lib/adodb/adodb-recordset.inc.php /^ function Move($rowNumber = 0) $/;" f Move lib/adodb/adodb.inc.php /^ function Move($rowNumber = 0) $/;" f @@ -851,38 +825,38 @@ MoveFirst lib/adodb/drivers/adodb-odbtp.inc.php /^ function MoveFirst()$/;" f MoveLast lib/adodb/adodb-recordset.inc.php /^ function MoveLast() $/;" f MoveLast lib/adodb/adodb.inc.php /^ function MoveLast() $/;" f MoveLast lib/adodb/drivers/adodb-informix72.inc.php /^ function MoveLast()$/;" f -MoveLast lib/adodb/drivers/adodb-odbtp.inc.php /^ function MoveLast()$/;" f +MoveLast lib/adodb/drivers/adodb-odbtp.inc.php /^ function MoveLast()$/;" f MoveNext lib/adodb/adodb-recordset.inc.php /^ function MoveNext() $/;" f MoveNext lib/adodb/adodb.inc.php /^ function MoveNext() $/;" f MoveNext lib/adodb/adodb.inc.php /^ function MoveNext() $/;" f MoveNext lib/adodb/drivers/adodb-mssql.inc.php /^ function MoveNext() $/;" f -MoveNext lib/adodb/drivers/adodb-mysql.inc.php /^ function MoveNext()$/;" f +MoveNext lib/adodb/drivers/adodb-mysql.inc.php /^ function MoveNext() $/;" f MoveNext lib/adodb/drivers/adodb-mysqli.inc.php /^ function MoveNext() $/;" f -MoveNext lib/adodb/drivers/adodb-mysqlt.inc.php /^ function MoveNext()$/;" f -MoveNext lib/adodb/drivers/adodb-oci8.inc.php /^ function MoveNext()$/;" f +MoveNext lib/adodb/drivers/adodb-mysqlt.inc.php /^ function MoveNext() $/;" f +MoveNext lib/adodb/drivers/adodb-oci8.inc.php /^ function MoveNext() $/;" f MoveNext lib/adodb/drivers/adodb-oci8po.inc.php /^ function MoveNext() $/;" f -MoveNext lib/adodb/drivers/adodb-oci8po.inc.php /^ function MoveNext()$/;" f MoveNext lib/adodb/drivers/adodb-odbc.inc.php /^ function MoveNext() $/;" f MoveNext lib/adodb/drivers/adodb-postgres64.inc.php /^ function MoveNext() $/;" f MoveNext lib/adodb/drivers/adodb-postgres7.inc.php /^ function MoveNext() $/;" f -NConnect lib/adodb/adodb-connection.inc.php /^ function NConnect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "") $/;" f +NConnect lib/adodb/adodb-connection.inc.php /^ function NConnect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "") $/;" f NConnect lib/adodb/adodb.inc.php /^ function NConnect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "") $/;" f -Name lib/cas/domxml-php4-php5.php /^ function Name() {return $this->myDOMNode->name;}$/;" f +NEWMODULE_upgrade mod/scheduler/db/mysql.php /^function NEWMODULE_upgrade($oldversion) {$/;" f NameQuote lib/adodb/adodb-datadict.inc.php /^ function NameQuote($name = NULL)$/;" f NameQuote lib/adodb/datadict/datadict-firebird.inc.php /^ function NameQuote($name = NULL)$/;" f NewADOConnection lib/adodb/adodb.inc.php /^ function &NewADOConnection($db='')$/;" f -NewDataDictionary lib/adodb/adodb.inc.php /^ function &NewDataDictionary(&$conn,$drivername=false)$/;" f +NewDataDictionary lib/adodb/adodb.inc.php /^ function &NewDataDictionary(&$conn)$/;" f NewPerfMonitor lib/adodb/adodb.inc.php /^ function &NewPerfMonitor(&$conn)$/;" f NextRecordSet lib/adodb/adodb-recordset.inc.php /^ function NextRecordSet()$/;" f NextRecordSet lib/adodb/adodb.inc.php /^ function NextRecordSet()$/;" f NextRecordSet lib/adodb/drivers/adodb-ado.inc.php /^ function NextRecordSet()$/;" f -NextRecordSet lib/adodb/drivers/adodb-ado5.inc.php /^ function NextRecordSet()$/;" f NextRecordSet lib/adodb/drivers/adodb-mssql.inc.php /^ function NextRecordSet()$/;" f NextRecordSet lib/adodb/drivers/adodb-odbtp.inc.php /^ function NextRecordSet()$/;" f Noop lib/phpmailer/class.smtp.php /^ function Noop() {$/;" f NotifyExpire lib/adodb/tests/testsessions.php /^function NotifyExpire($ref,$key)$/;" f NotifyFn lib/adodb/adodb-session-clob.php /^ function NotifyFn($expireref, $sesskey)$/;" f NotifyFn lib/adodb/adodb-session.php /^ function NotifyFn($expireref, $sesskey)$/;" f +NotifyFn lib/adodb/session/old/adodb-session-clob.php /^ function NotifyFn($expireref, $sesskey)$/;" f +NotifyFn lib/adodb/session/old/adodb-session.php /^ function NotifyFn($expireref, $sesskey)$/;" f NumCols lib/adodb/adodb-recordset.inc.php /^ function NumCols()$/;" f NumCols lib/adodb/adodb.inc.php /^ function NumCols()$/;" f NumRows lib/adodb/adodb-recordset.inc.php /^ function NumRows()$/;" f @@ -891,48 +865,41 @@ ODBCSocketServer lib/odbc.php /^class ODBCSocketServer {$/;" c ODBCTypes lib/adodb/drivers/adodb-odbc.inc.php /^ function ODBCTypes($t)$/;" f OLEwriter lib/excel/OLEwriter.php /^ function OLEwriter($OLEfilename)$/;" f OLEwriter lib/excel/OLEwriter.php /^class OLEwriter$/;" c -OffsetDate lib/adodb/adodb-connection.inc.php /^ function OffsetDate($dayFraction,$date=false)$/;" f +OffsetDate lib/adodb/adodb-connection.inc.php /^ function OffsetDate($dayFraction,$date=false)$/;" f OffsetDate lib/adodb/adodb.inc.php /^ function OffsetDate($dayFraction,$date=false)$/;" f OffsetDate lib/adodb/drivers/adodb-mysql.inc.php /^ function OffsetDate($dayFraction,$date=false)$/;" f OffsetDate lib/adodb/drivers/adodb-mysqli.inc.php /^ function OffsetDate($dayFraction,$date=false)$/;" f OffsetDate lib/adodb/drivers/adodb-postgres64.inc.php /^ function OffsetDate($dayFraction,$date=false)$/;" f OldUpdateBlob lib/adodb/drivers/adodb-ibase.inc.php /^ function OldUpdateBlob($table,$column,$val,$where,$blobtype='BLOB')$/;" f OutParameter lib/adodb/adodb.inc.php /^ function OutParameter(&$stmt,&$var,$name,$maxLen=4000,$type=false)$/;" f -PConnect lib/adodb/adodb-connection.inc.php /^ function PConnect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "")$/;" f +PConnect lib/adodb/adodb-connection.inc.php /^ function PConnect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "")$/;" f PConnect lib/adodb/adodb.inc.php /^ function PConnect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "")$/;" f PGA lib/adodb/perf/perf-oci8.inc.php /^ function PGA()$/;" f -PGTStorage lib/cas/PGTStorage/pgt-main.php /^ function PGTStorage($cas_parent)$/;" f -PGTStorage lib/cas/PGTStorage/pgt-main.php /^class PGTStorage$/;" c -PGTStorageDB lib/cas/PGTStorage/pgt-db.php /^ function PGTStorageDB($cas_parent,$user,$password,$database_type,$hostname,$port,$database,$table)$/;" f -PGTStorageDB lib/cas/PGTStorage/pgt-db.php /^class PGTStorageDB extends PGTStorage$/;" c -PGTStorageFile lib/cas/PGTStorage/pgt-file.php /^ function PGTStorageFile($cas_parent,$format,$path)$/;" f -PGTStorageFile lib/cas/PGTStorage/pgt-file.php /^class PGTStorageFile extends PGTStorage$/;" c -PHPMailer lib/phpmailer/class.phpmailer.php /^ function PHPMailer () {$/;" f PHPMailer lib/phpmailer/class.phpmailer.php /^class PHPMailer$/;" c -PO_Insert_ID lib/adodb/adodb-connection.inc.php /^ function PO_Insert_ID($table="", $id="") $/;" f +PO_Insert_ID lib/adodb/adodb-connection.inc.php /^ function PO_Insert_ID($table="", $id="") $/;" f PO_Insert_ID lib/adodb/adodb.inc.php /^ function PO_Insert_ID($table="", $id="") $/;" f PO_RecordCount lib/adodb/adodb-recordset.inc.php /^ function PO_RecordCount($table="", $condition="") {$/;" f PO_RecordCount lib/adodb/adodb.inc.php /^ function PO_RecordCount(){return 0;}$/;" f PO_RecordCount lib/adodb/adodb.inc.php /^ function PO_RecordCount($table="", $condition="") {$/;" f -PageExecute lib/adodb/adodb-connection.inc.php /^ function &PageExecute($sql, $nrows, $page, $inputarr=false, $arg3=false, $secs2cache=0) $/;" f +PageExecute lib/adodb/adodb-connection.inc.php /^ function &PageExecute($sql, $nrows, $page, $inputarr=false, $arg3=false, $secs2cache=0) $/;" f PageExecute lib/adodb/adodb.inc.php /^ function &PageExecute($sql, $nrows, $page, $inputarr=false, $secs2cache=0) $/;" f -ParallelRegex lib/lexer.php /^ function ParallelRegex($case) {$/;" f -ParallelRegex lib/lexer.php /^ class ParallelRegex {$/;" c -Param lib/adodb/adodb.inc.php /^ function Param($name,$type='C')$/;" f -Param lib/adodb/drivers/adodb-oci8.inc.php /^ function Param($name,$type=false)$/;" f +PageLoad lib/forms/test_encoded_password.php /^function PageLoad()$/;" f +PageLoad lib/forms/test_upload.php /^function PageLoad()$/;" f +Param lib/adodb/adodb.inc.php /^ function Param($name)$/;" f +Param lib/adodb/drivers/adodb-oci8.inc.php /^ function Param($name)$/;" f Param lib/adodb/drivers/adodb-oci8po.inc.php /^ function Param($name)$/;" f -Parameter lib/adodb/adodb-connection.inc.php /^ function Parameter(&$stmt,&$var,$name,$isOutput=false,$maxLen=4000,$type=false)$/;" f +Parameter lib/adodb/adodb-connection.inc.php /^ function Parameter(&$stmt,&$var,$name,$isOutput=false,$maxLen=4000,$type=false)$/;" f Parameter lib/adodb/adodb.inc.php /^ function Parameter(&$stmt,&$var,$name,$isOutput=false,$maxLen=4000,$type=false)$/;" f Parameter lib/adodb/drivers/adodb-mssql.inc.php /^ function Parameter(&$stmt, &$var, $name, $isOutput=false, $maxLen=4000, $type=false)$/;" f Parameter lib/adodb/drivers/adodb-oci8.inc.php /^ function Parameter(&$stmt,&$var,$name,$isOutput=false,$maxLen=4000,$type=false)$/;" f Parameter lib/adodb/drivers/adodb-odbtp.inc.php /^ function Parameter(&$stmt, &$var, $name, $isOutput=false, $maxLen=0, $type=0)$/;" f ParseSchema lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function ParseSchema( $file ) {$/;" f -ParseSchema lib/adodb/adodb-xmlschema.inc.php /^ function ParseSchema( $filename, $returnSchema = FALSE ) {$/;" f -ParseSchemaFile lib/adodb/adodb-xmlschema.inc.php /^ function ParseSchemaFile( $filename, $returnSchema = FALSE ) {$/;" f -ParseSchemaString lib/adodb/adodb-xmlschema.inc.php /^ function ParseSchemaString( $xmlstring, $returnSchema = FALSE ) {$/;" f +ParseSchema lib/adodb/adodb-xmlschema.inc.php /^ function ParseSchema( $filename ) {$/;" f +ParseSchemaFile lib/adodb/adodb-xmlschema.inc.php /^ function ParseSchemaFile( $filename ) {$/;" f +ParseSchemaString lib/adodb/adodb-xmlschema.inc.php /^ function ParseSchemaString( $xmlstring ) {$/;" f Parser lib/excel/Parser.php /^ function Parser($byte_order = 0)$/;" f Parser lib/excel/Parser.php /^class Parser$/;" c -PclZip lib/pclzip/pclzip.lib.php /^ class PclZip$/;" c +PclZip lib/pclzip/pclzip.lib.php /^ class PclZip$/;" c PclZip lib/pclzip/pclzip.lib.php /^ function PclZip($p_zipname)$/;" f PclZipUtilCopyBlock lib/pclzip/pclzip.lib.php /^ function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0)$/;" f PclZipUtilOptionText lib/pclzip/pclzip.lib.php /^ function PclZipUtilOptionText($p_option)$/;" f @@ -943,7 +910,7 @@ PclZipUtilTranslateWinPath lib/pclzip/pclzip.lib.php /^ function PclZipUtilTran PivotTableSQL lib/adodb/pivottable.inc.php /^ function PivotTableSQL($db,$tables,$rowfields,$colfield, $where=false,$/;" f Poll lib/adodb/adodb-perf.inc.php /^ function Poll($secs=5)$/;" f PollParameters lib/adodb/adodb-perf.inc.php /^ function &PollParameters()$/;" f -Prepare lib/adodb/adodb-connection.inc.php /^ function Prepare($sql)$/;" f +Prepare lib/adodb/adodb-connection.inc.php /^ function Prepare($sql)$/;" f Prepare lib/adodb/adodb.inc.php /^ function Prepare($sql)$/;" f Prepare lib/adodb/drivers/adodb-ibase.inc.php /^ function Prepare($sql)$/;" f Prepare lib/adodb/drivers/adodb-informix72.inc.php /^ function Prepare($sql)$/;" f @@ -955,7 +922,7 @@ Prepare lib/adodb/drivers/adodb-odbc.inc.php /^ function Prepare($sql)$/;" f Prepare lib/adodb/drivers/adodb-odbtp.inc.php /^ function Prepare($sql)$/;" f Prepare lib/adodb/drivers/adodb-pdo.inc.php /^ function Prepare($sql)$/;" f Prepare lib/adodb/drivers/adodb-postgres7.inc.php /^ function Prepare($sql)$/;" f -PrepareSP lib/adodb/adodb-connection.inc.php /^ function PrepareSP($sql)$/;" f +PrepareSP lib/adodb/adodb-connection.inc.php /^ function PrepareSP($sql)$/;" f PrepareSP lib/adodb/adodb.inc.php /^ function PrepareSP($sql,$param=true)$/;" f PrepareSP lib/adodb/drivers/adodb-mssql.inc.php /^ function PrepareSP($sql)$/;" f PrepareSP lib/adodb/drivers/adodb-mssqlpo.inc.php /^ function PrepareSP($sql)$/;" f @@ -963,39 +930,37 @@ PrepareSP lib/adodb/drivers/adodb-odbtp.inc.php /^ function PrepareSP($sql)$/;" PrepareStmt lib/adodb/drivers/adodb-pdo.inc.php /^ function PrepareStmt($sql)$/;" f PrintSQL lib/adodb/adodb-xmlschema.inc.php /^ function PrintSQL( $format = 'NONE' ) {$/;" f QMagic lib/adodb/adodb.inc.php /^ function QMagic($s)$/;" f -Query lib/adodb/adodb-connection.inc.php /^ function &Query($sql, $inputarr=false)$/;" f +Query lib/adodb/adodb-connection.inc.php /^ function &Query($sql, $inputarr=false)$/;" f Query lib/adodb/adodb.inc.php /^ function &Query($sql, $inputarr=false)$/;" f Quit lib/phpmailer/class.smtp.php /^ function Quit($close_on_error=true) {$/;" f -Quote lib/adodb/adodb-connection.inc.php /^ function Quote($s)$/;" f +Quote lib/adodb/adodb-connection.inc.php /^ function Quote($s)$/;" f Quote lib/adodb/adodb.inc.php /^ function Quote($s)$/;" f RFCDate lib/phpmailer/class.phpmailer.php /^ function RFCDate() {$/;" f RSFilter lib/adodb/rsfilter.inc.php /^function &RSFilter($rs,$fn)$/;" f +RSS_feed blocks/rssfeed/class_rss_feed.php /^ function RSS_feed()$/;" f +RSS_feed blocks/rssfeed/class_rss_feed.php /^class RSS_feed $/;" c RandPass lib/adodb/crypt.inc.php /^ function RandPass()$/;" f RandPass lib/adodb/session/crypt.inc.php /^ function RandPass()$/;" f +RandPass lib/adodb/session/old/crypt.inc.php /^ function RandPass()$/;" f +Received lib/phpmailer/class.phpmailer.php /^ function Received() {$/;" f Recipient lib/phpmailer/class.smtp.php /^ function Recipient($to) {$/;" f RecordCount lib/adodb/adodb-recordset.inc.php /^ function RecordCount() {return $this->_numOfRows;}$/;" f RecordCount lib/adodb/adodb.inc.php /^ function RecordCount() {return 0;}$/;" f RecordCount lib/adodb/adodb.inc.php /^ function RecordCount() {return $this->_numOfRows;}$/;" f -RemoveSchema lib/adodb/adodb-xmlschema.inc.php /^ function RemoveSchema( $filename, $returnSchema = FALSE ) {$/;" f -RemoveSchemaString lib/adodb/adodb-xmlschema.inc.php /^ function RemoveSchemaString( $schema, $returnSchema = FALSE ) {$/;" f -RenameColumnSQL lib/adodb/adodb-datadict.inc.php /^ function RenameColumnSQL($tabname,$oldcolumn,$newcolumn,$flds='')$/;" f -RenameTableSQL lib/adodb/adodb-datadict.inc.php /^ function RenameTableSQL($tabname,$newname)$/;" f Render lib/adodb/adodb-pager.inc.php /^ function Render($rows=10)$/;" f RenderGrid lib/adodb/adodb-pager.inc.php /^ function RenderGrid()$/;" f RenderLayout lib/adodb/adodb-pager.inc.php /^ function RenderLayout($header,$grid,$footer,$attributes='border=1 bgcolor=beige')$/;" f RenderNav lib/adodb/adodb-pager.inc.php /^ function RenderNav()$/;" f RenderPageCount lib/adodb/adodb-pager.inc.php /^ function RenderPageCount()$/;" f Render_First lib/adodb/adodb-pager.inc.php /^ function Render_First($anchor=true)$/;" f -Replace lib/adodb/adodb-connection.inc.php /^ function Replace($table, $fieldArray, $keyCol, $autoQuote=false, $has_autoinc=false)$/;" f +Replace lib/adodb/adodb-connection.inc.php /^ function Replace($table, $fieldArray, $keyCol, $autoQuote=false, $has_autoinc=false)$/;" f Replace lib/adodb/adodb.inc.php /^ function Replace($table, $fieldArray, $keyCol, $autoQuote=false, $has_autoinc=false)$/;" f Reset lib/phpmailer/class.smtp.php /^ function Reset() {$/;" f -RollbackLock lib/adodb/adodb-connection.inc.php /^ function RollbackLock($table)$/;" f +RollbackLock lib/adodb/adodb-connection.inc.php /^ function RollbackLock($table)$/;" f RollbackLock lib/adodb/adodb.inc.php /^ function RollbackLock($table)$/;" f -RollbackTrans lib/adodb/adodb-connection.inc.php /^ function RollbackTrans() $/;" f +RollbackTrans lib/adodb/adodb-connection.inc.php /^ function RollbackTrans() $/;" f RollbackTrans lib/adodb/adodb.inc.php /^ function RollbackTrans() $/;" f RollbackTrans lib/adodb/drivers/adodb-ado.inc.php /^ function RollbackTrans() {$/;" f -RollbackTrans lib/adodb/drivers/adodb-ado5.inc.php /^ function RollbackTrans() {$/;" f -RollbackTrans lib/adodb/drivers/adodb-ado_access.inc.php /^ function RollbackTrans() { return false;}$/;" f RollbackTrans lib/adodb/drivers/adodb-ibase.inc.php /^ function RollbackTrans()$/;" f RollbackTrans lib/adodb/drivers/adodb-informix72.inc.php /^ function RollbackTrans()$/;" f RollbackTrans lib/adodb/drivers/adodb-mssql.inc.php /^ function RollbackTrans()$/;" f @@ -1012,7 +977,7 @@ RollbackTrans lib/adodb/drivers/adodb-sybase.inc.php /^ function RollbackTrans() RowCount lib/adodb/adodb-recordset.inc.php /^ function RowCount() {return $this->_numOfRows;} $/;" f RowCount lib/adodb/adodb.inc.php /^ function RowCount() {return 0;}$/;" f RowCount lib/adodb/adodb.inc.php /^ function RowCount() {return $this->_numOfRows;} $/;" f -RowLock lib/adodb/adodb-connection.inc.php /^ function RowLock($table,$where)$/;" f +RowLock lib/adodb/adodb-connection.inc.php /^ function RowLock($table,$where)$/;" f RowLock lib/adodb/adodb.inc.php /^ function RowLock($table,$where)$/;" f RowLock lib/adodb/drivers/adodb-db2.inc.php /^ function RowLock($tables,$where)$/;" f RowLock lib/adodb/drivers/adodb-ibase.inc.php /^ function RowLock($tables,$where,$col)$/;" f @@ -1021,13 +986,11 @@ RowLock lib/adodb/drivers/adodb-mssql.inc.php /^ function RowLock($tables,$where RowLock lib/adodb/drivers/adodb-oci8.inc.php /^ function RowLock($tables,$where) $/;" f RowLock lib/adodb/drivers/adodb-postgres64.inc.php /^ function RowLock($tables,$where) $/;" f RowLock lib/adodb/drivers/adodb-sybase.inc.php /^ function RowLock($tables,$where) $/;" f -SCOFinish mod/scorm/api.php /^function SCOFinish(){$/;" f -SCORM_Call mod/scorm/api.php /^function SCORM_Call (call,param) {$/;" f -SCORMapi1_2 mod/scorm/api.php /^function SCORMapi1_2() {$/;" f -SCORMapi2004 mod/scorm/api.php /^function SCORMapi2004() {$/;" f +SCOInitialize mod/scorm/scormAPI.php /^function SCOInitialize() { $/;" f +SCORMapi mod/scorm/api1_2.php /^function SCORMapi() {$/;" f SMTP lib/phpmailer/class.smtp.php /^ function SMTP() {$/;" f SMTP lib/phpmailer/class.smtp.php /^class SMTP$/;" c -SQLDate lib/adodb/adodb-connection.inc.php /^ function SQLDate($fmt, $col=false)$/;" f +SQLDate lib/adodb/adodb-connection.inc.php /^ function SQLDate($fmt, $col=false)$/;" f SQLDate lib/adodb/adodb.inc.php /^ function SQLDate($fmt, $col=false)$/;" f SQLDate lib/adodb/drivers/adodb-db2.inc.php /^ function SQLDate($fmt, $col=false)$/;" f SQLDate lib/adodb/drivers/adodb-ibase.inc.php /^ function SQLDate($fmt, $col=false)$/;" f @@ -1040,9 +1003,10 @@ SQLDate lib/adodb/drivers/adodb-postgres64.inc.php /^ function SQLDate($fmt, $co SQLDate lib/adodb/drivers/adodb-sqlite.inc.php /^ function SQLDate($fmt, $col=false)$/;" f SQLDate lib/adodb/drivers/adodb-sybase.inc.php /^ function SQLDate($fmt, $col=false)$/;" f SaveSQL lib/adodb/adodb-xmlschema.inc.php /^ function SaveSQL( $filename = '.\/schema.sql' ) {$/;" f +SaveTotalTime mod/scorm/api1_2.php /^ function SaveTotalTime() {$/;" f SchemaFileVersion lib/adodb/adodb-xmlschema.inc.php /^ function SchemaFileVersion( $filename ) {$/;" f SchemaStringVersion lib/adodb/adodb-xmlschema.inc.php /^ function SchemaStringVersion( $xmlstring ) {$/;" f -SelectDB lib/adodb/adodb-connection.inc.php /^ function SelectDB($dbName) $/;" f +SelectDB lib/adodb/adodb-connection.inc.php /^ function SelectDB($dbName) $/;" f SelectDB lib/adodb/adodb.inc.php /^ function SelectDB($dbName) $/;" f SelectDB lib/adodb/drivers/adodb-fbsql.inc.php /^ function SelectDB($dbName) $/;" f SelectDB lib/adodb/drivers/adodb-ibase.inc.php /^ function SelectDB($dbName) $/;" f @@ -1051,8 +1015,8 @@ SelectDB lib/adodb/drivers/adodb-mysql.inc.php /^ function SelectDB($dbName) $/; SelectDB lib/adodb/drivers/adodb-mysqli.inc.php /^ function SelectDB($dbName) $/;" f SelectDB lib/adodb/drivers/adodb-oci8.inc.php /^ function SelectDB($dbName) $/;" f SelectDB lib/adodb/drivers/adodb-odbtp.inc.php /^ function SelectDB($dbName)$/;" f -SelectDB lib/adodb/drivers/adodb-sybase.inc.php /^ function SelectDB($dbName) $/;" f -SelectLimit lib/adodb/adodb-connection.inc.php /^ function &SelectLimit($sql,$nrows=-1,$offset=-1, $inputarr=false,$arg3=false,$secs2cache=0)$/;" f +SelectDB lib/adodb/drivers/adodb-sybase.inc.php /^ function SelectDB($dbName) {$/;" f +SelectLimit lib/adodb/adodb-connection.inc.php /^ function &SelectLimit($sql,$nrows=-1,$offset=-1, $inputarr=false,$arg3=false,$secs2cache=0)$/;" f SelectLimit lib/adodb/adodb.inc.php /^ function &SelectLimit($sql,$nrows=-1,$offset=-1, $inputarr=false,$secs2cache=0)$/;" f SelectLimit lib/adodb/drivers/adodb-borland_ibase.inc.php /^ function &SelectLimit($sql,$nrows=-1,$offset=-1,$inputarr=false,$secs2cache=0)$/;" f SelectLimit lib/adodb/drivers/adodb-csv.inc.php /^ function &SelectLimit($sql,$nrows=-1,$offset=-1)$/;" f @@ -1078,10 +1042,9 @@ SendOrMail lib/phpmailer/class.smtp.php /^ function SendOrMail($from) {$/;" f SendmailSend lib/phpmailer/class.phpmailer.php /^ function SendmailSend($header, $body) {$/;" f SerializableRS lib/adodb/adodb.inc.php /^ function &SerializableRS(&$rs)$/;" f ServerHostname lib/phpmailer/class.phpmailer.php /^ function ServerHostname() {$/;" f -ServerInfo lib/adodb/adodb-connection.inc.php /^ function ServerInfo()$/;" f +ServerInfo lib/adodb/adodb-connection.inc.php /^ function ServerInfo()$/;" f ServerInfo lib/adodb/adodb.inc.php /^ function ServerInfo()$/;" f ServerInfo lib/adodb/drivers/adodb-ado.inc.php /^ function ServerInfo()$/;" f -ServerInfo lib/adodb/drivers/adodb-ado5.inc.php /^ function ServerInfo()$/;" f ServerInfo lib/adodb/drivers/adodb-borland_ibase.inc.php /^ function ServerInfo()$/;" f ServerInfo lib/adodb/drivers/adodb-db2.inc.php /^ function ServerInfo()$/;" f ServerInfo lib/adodb/drivers/adodb-firebird.inc.php /^ function ServerInfo()$/;" f @@ -1096,26 +1059,32 @@ ServerInfo lib/adodb/drivers/adodb-odbc.inc.php /^ function ServerInfo()$/;" f ServerInfo lib/adodb/drivers/adodb-odbc_mssql.inc.php /^ function ServerInfo()$/;" f ServerInfo lib/adodb/drivers/adodb-odbtp.inc.php /^ function ServerInfo()$/;" f ServerInfo lib/adodb/drivers/adodb-postgres64.inc.php /^ function ServerInfo()$/;" f -ServerInfo lib/adodb/drivers/adodb-sapdb.inc.php /^ function ServerInfo()$/;" f ServerInfo lib/adodb/drivers/adodb-sqlite.inc.php /^ function ServerInfo()$/;" f ServerVar lib/phpmailer/class.phpmailer.php /^ function ServerVar($varName) {$/;" f Set lib/editor/popups/select_color.php /^function Set(string) {$/;" f +SetAlign tabs/index.php /^ function SetAlign($align)$/;" f +SetBgColor tabs/index.php /^ function SetBgColor($bgcolor)$/;" f SetCharSet lib/adodb/adodb.inc.php /^ function SetCharSet($charset)$/;" f SetCharSet lib/adodb/drivers/adodb-postgres7.inc.php /^ function SetCharSet($charset_name)$/;" f SetCommentSQL lib/adodb/adodb-datadict.inc.php /^ function SetCommentSQL($table,$col,$cmt)$/;" f SetCommentSQL lib/adodb/datadict/datadict-oci8.inc.php /^ function SetCommentSQL($table,$col,$cmt)$/;" f SetDateLocale lib/adodb/adodb.inc.php /^ function SetDateLocale($locale = 'En')$/;" f SetError lib/phpmailer/class.phpmailer.php /^ function SetError($msg) {$/;" f -SetFetchMode lib/adodb/adodb-connection.inc.php /^ function SetFetchMode($mode)$/;" f +SetFetchMode lib/adodb/adodb-connection.inc.php /^ function SetFetchMode($mode)$/;" f SetFetchMode lib/adodb/adodb.inc.php /^ function SetFetchMode($mode)$/;" f -SetLanguage lib/phpmailer/class.phpmailer.php /^ function SetLanguage($lang_type, $lang_path = "language\/") {$/;" f +SetLanguage lib/phpmailer/class.phpmailer.php /^ function SetLanguage($lang_type, $lang_path = "") {$/;" f SetMessageType lib/phpmailer/class.phpmailer.php /^ function SetMessageType() {$/;" f SetPrefix lib/adodb/adodb-xmlschema.inc.php /^ function SetPrefix( $prefix = '', $underscore = TRUE ) {$/;" f SetSchema lib/adodb/adodb-datadict.inc.php /^ function SetSchema($schema)$/;" f SetSchema lib/adodb/datadict/datadict-access.inc.php /^ function SetSchema($schema)$/;" f SetUpgradeMethod lib/adodb/adodb-xmlschema.inc.php /^ function SetUpgradeMethod( $method = '' ) {$/;" f -SetValue mod/scorm/datamodels/scorm1_3.js.php /^ function SetValue (element,value) {$/;" f +SetWidth tabs/index.php /^ function SetWidth ($width)$/;" f SetWordWrap lib/phpmailer/class.phpmailer.php /^ function SetWordWrap() {$/;" f +Set_Limit blocks/rssfeed/class_rss_feed.php /^ function Set_Limit($cnt)$/;" f +Set_URL blocks/rssfeed/class_rss_feed.php /^ function Set_URL($url)$/;" f +Show tabs/index.php /^ function Show ()$/;" f +Show_Description blocks/rssfeed/class_rss_feed.php /^ function Show_Description($tf)$/;" f +Show_Image blocks/rssfeed/class_rss_feed.php /^ function Show_Image($tf)$/;" f Smarty lib/smarty/Smarty.class.php /^ function Smarty()$/;" f Smarty lib/smarty/Smarty.class.php /^class Smarty$/;" c Smarty_Compiler lib/smarty/Smarty_Compiler.class.php /^ function Smarty_Compiler()$/;" f @@ -1123,47 +1092,42 @@ Smarty_Compiler lib/smarty/Smarty_Compiler.class.php /^class Smarty_Compiler ext SmtpClose lib/phpmailer/class.phpmailer.php /^ function SmtpClose() {$/;" f SmtpConnect lib/phpmailer/class.phpmailer.php /^ function SmtpConnect() {$/;" f SmtpSend lib/phpmailer/class.phpmailer.php /^ function SmtpSend($header, $body) {$/;" f -Specified lib/cas/domxml-php4-php5.php /^ function Specified() {return $this->myDOMNode->specified;}$/;" f SplitSQL lib/adodb/adodb-perf.inc.php /^ function SplitSQL($sql)$/;" f -StartTrans lib/adodb/adodb-connection.inc.php /^ function StartTrans($errfn = 'ADODB_TransMonitor')$/;" f +StartTrans lib/adodb/adodb-connection.inc.php /^ function StartTrans($errfn = 'ADODB_TransMonitor')$/;" f StartTrans lib/adodb/adodb.inc.php /^ function StartTrans($errfn = 'ADODB_TransMonitor')$/;" f -StateStack lib/lexer.php /^ function StateStack($start) {$/;" f -StateStack lib/lexer.php /^ class StateStack {$/;" c SuspiciousSQL lib/adodb/adodb-perf.inc.php /^ function SuspiciousSQL($numsql=10)$/;" f SuspiciousSQL lib/adodb/perf/perf-oci8.inc.php /^ function SuspiciousSQL($numsql=10)$/;" f +Tab tabs/index.php /^ function Tab( $bgcolor = "#ccccff", $align = "center", $width = "99%")$/;" f +Tab tabs/index.php /^class Tab $/;" c TableName lib/adodb/adodb-datadict.inc.php /^ function TableName($name)$/;" f Tables lib/adodb/adodb-perf.inc.php /^ function Tables($orderby='1')$/;" f Tables lib/adodb/perf/perf-db2.inc.php /^ function Tables()$/;" f Tables lib/adodb/perf/perf-mssql.inc.php /^ function Tables()$/;" f Tables lib/adodb/perf/perf-mysql.inc.php /^ function Tables()$/;" f -Terminate mod/scorm/datamodels/scorm1_3.js.php /^ function Terminate (param) {$/;" f TextLine lib/phpmailer/class.phpmailer.php /^ function TextLine($value) {$/;" f -TextMax lib/adodb/adodb-connection.inc.php /^ function TextMax()$/;" f +TextMax lib/adodb/adodb-connection.inc.php /^ function TextMax()$/;" f TextMax lib/adodb/drivers/adodb-mysql.inc.php /^ function TextMax()$/;" f TextMax lib/adodb/drivers/adodb-mysqli.inc.php /^ function TextMax()$/;" f TextMax lib/adodb/drivers/adodb-oci8.inc.php /^ function TextMax()$/;" f TextMax lib/adodb/drivers/adodb-postgres64.inc.php /^ function TextMax()$/;" f -Textile lib/markdown.php /^ class Textile {$/;" c -TextileThis lib/markdown.php /^ function TextileThis($text, $lite='', $encode='', $noimage='', $strict='') {$/;" f Time lib/adodb/adodb.inc.php /^ function Time()$/;" f Time lib/adodb/drivers/adodb-access.inc.php /^ function Time()$/;" f Time lib/adodb/drivers/adodb-oci8.inc.php /^ function Time()$/;" f Time lib/adodb/drivers/adodb-vfp.inc.php /^ function Time()$/;" f Tracer lib/adodb/adodb-perf.inc.php /^ function Tracer($sql)$/;" f -TransformSchema lib/adodb/adodb-xmlschema.inc.php /^ function TransformSchema( $schema, $xsl, $schematype='string' )$/;" f Turn lib/phpmailer/class.smtp.php /^ function Turn() {$/;" f UI lib/adodb/adodb-perf.inc.php /^ function UI($pollsecs=5)$/;" f -UnixDate lib/adodb/adodb-connection.inc.php /^ function UnixDate($v)$/;" f +UnixDate lib/adodb/adodb-connection.inc.php /^ function UnixDate($v)$/;" f UnixDate lib/adodb/adodb-recordset.inc.php /^ function UnixDate($v)$/;" f UnixDate lib/adodb/adodb.inc.php /^ function UnixDate($v)$/;" f UnixDate lib/adodb/drivers/adodb-mssql.inc.php /^ function UnixDate($v)$/;" f UnixDate lib/adodb/drivers/adodb-sybase.inc.php /^ function UnixDate($v)$/;" f -UnixTimeStamp lib/adodb/adodb-connection.inc.php /^ function UnixTimeStamp($v)$/;" f +UnixTimeStamp lib/adodb/adodb-connection.inc.php /^ function UnixTimeStamp($v)$/;" f UnixTimeStamp lib/adodb/adodb-recordset.inc.php /^ function UnixTimeStamp($v)$/;" f UnixTimeStamp lib/adodb/adodb.inc.php /^ function UnixTimeStamp($v)$/;" f UnixTimeStamp lib/adodb/drivers/adodb-mssql.inc.php /^ function UnixTimeStamp($v)$/;" f UnixTimeStamp lib/adodb/drivers/adodb-sybase.inc.php /^ function UnixTimeStamp($v)$/;" f -UpdateBlob lib/adodb/adodb-connection.inc.php /^ function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB')$/;" f +UpdateBlob lib/adodb/adodb-connection.inc.php /^ function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB')$/;" f UpdateBlob lib/adodb/adodb.inc.php /^ function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB')$/;" f UpdateBlob lib/adodb/drivers/adodb-ibase.inc.php /^ function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB') $/;" f UpdateBlob lib/adodb/drivers/adodb-informix72.inc.php /^ function UpdateBlob($table, $column, $val, $where, $blobtype = 'BLOB')$/;" f @@ -1173,14 +1137,14 @@ UpdateBlob lib/adodb/drivers/adodb-odbc.inc.php /^ function UpdateBlob($table,$c UpdateBlob lib/adodb/drivers/adodb-odbtp.inc.php /^ function UpdateBlob($table,$column,$val,$where,$blobtype='image')$/;" f UpdateBlob lib/adodb/drivers/adodb-postgres64.inc.php /^ function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB')$/;" f UpdateBlob lib/adodb/drivers/adodb-sqlanywhere.inc.php /^ function UpdateBlob($table,$column,&$val,$where,$blobtype='BLOB')$/;" f -UpdateBlobFile lib/adodb/adodb-connection.inc.php /^ function UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB')$/;" f +UpdateBlobFile lib/adodb/adodb-connection.inc.php /^ function UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB')$/;" f UpdateBlobFile lib/adodb/adodb.inc.php /^ function UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB')$/;" f UpdateBlobFile lib/adodb/drivers/adodb-ibase.inc.php /^ function UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB') $/;" f UpdateBlobFile lib/adodb/drivers/adodb-oci8.inc.php /^ function UpdateBlobFile($table,$column,$val,$where,$blobtype='BLOB')$/;" f UpdateBlobFile lib/adodb/drivers/adodb-postgres64.inc.php /^ function UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB') $/;" f -UpdateClob lib/adodb/adodb-connection.inc.php /^ function UpdateClob($table,$column,$val,$where)$/;" f +UpdateClob lib/adodb/adodb-connection.inc.php /^ function UpdateClob($table,$column,$val,$where)$/;" f UpdateClob lib/adodb/adodb.inc.php /^ function UpdateClob($table,$column,$val,$where)$/;" f -UserDate lib/adodb/adodb-connection.inc.php /^ function UserDate($v,$fmt='Y-m-d')$/;" f +UserDate lib/adodb/adodb-connection.inc.php /^ function UserDate($v,$fmt='Y-m-d')$/;" f UserDate lib/adodb/adodb-recordset.inc.php /^ function UserDate($v,$fmt='Y-m-d')$/;" f UserDate lib/adodb/adodb.inc.php /^ function UserDate($v,$fmt='Y-m-d')$/;" f UserDate lib/adodb/adodb.inc.php /^ function UserDate($v,$fmt='Y-m-d',$gmt=false)$/;" f @@ -1188,24 +1152,21 @@ UserTimeStamp lib/adodb/adodb-recordset.inc.php /^ function UserTimeStamp($v,$fm UserTimeStamp lib/adodb/adodb.inc.php /^ function UserTimeStamp($v,$fmt='Y-m-d H:i:s')$/;" f UserTimeStamp lib/adodb/adodb.inc.php /^ function UserTimeStamp($v,$fmt='Y-m-d H:i:s',$gmt=false)$/;" f ValidateColor lib/editor/popups/select_color.php /^function ValidateColor(string) { \/\/ return valid color code$/;" f -Value lib/cas/domxml-php4-php5.php /^ function Value() {return $this->myDOMNode->value;}$/;" f Verify lib/phpmailer/class.smtp.php /^ function Verify($name) {$/;" f Version lib/adodb/adodb.inc.php /^ function Version()$/;" f View lib/editor/popups/select_color.php /^function View(color) {$/;" f WarnCacheRatio lib/adodb/adodb-perf.inc.php /^ function WarnCacheRatio($val)$/;" f -WarnIndexCost lib/adodb/perf/perf-oci8.inc.php /^ function WarnIndexCost($val)$/;" f -WarnPageCost lib/adodb/perf/perf-oci8.inc.php /^ function WarnPageCost($val)$/;" f Wiki lib/wiki.php /^class Wiki {$/;" c -WikiToMarkdown lib/wiki_to_markdown.php /^class WikiToMarkdown {$/;" c Workbook lib/excel/Workbook.php /^ function Workbook($filename)$/;" f Workbook lib/excel/Workbook.php /^class Workbook extends BIFFwriter$/;" c Worksheet lib/excel/Worksheet.php /^ function Worksheet($name,$index,&$activesheet,&$firstsheet,&$url_format,&$parser)$/;" f Worksheet lib/excel/Worksheet.php /^class Worksheet extends BIFFwriter$/;" c WrapText lib/phpmailer/class.phpmailer.php /^ function WrapText($message, $length, $qp_mode = false) {$/;" f +XMLParser filter/multilang/filter.php /^ function XMLParser($data) {$/;" f +XMLParser filter/multilang/filter.php /^class XMLParser { $/;" c _BlobDecode lib/adodb/drivers/adodb-ibase.inc.php /^ function _BlobDecode( $blob ) $/;" f _CPULoad lib/adodb/adodb-perf.inc.php /^ function _CPULoad()$/;" f _CloseOnEsc lib/editor/popups/fullscreen.php /^function _CloseOnEsc(ev) {$/;" f -_CloseOnEsc lib/editor/popups/searchandreplace.php /^function _CloseOnEsc(ev) {$/;" f _CloseOnEsc lib/editor/popups/select_color.php /^function _CloseOnEsc() {$/;" f _ConvertFieldType lib/adodb/drivers/adodb-ibase.inc.php /^ function _ConvertFieldType(&$fld, $ftype, $flen, $fscale, $fsubtype, $fprecision, $dialect3)$/;" f _CreateSuffix lib/adodb/adodb-datadict.inc.php /^ function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint)$/;" f @@ -1217,103 +1178,55 @@ _CreateSuffix lib/adodb/datadict/datadict-mssql.inc.php /^ function _CreateSuffi _CreateSuffix lib/adodb/datadict/datadict-mysql.inc.php /^ function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned)$/;" f _CreateSuffix lib/adodb/datadict/datadict-oci8.inc.php /^ function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned)$/;" f _CreateSuffix lib/adodb/datadict/datadict-postgres.inc.php /^ function _CreateSuffix($fname, &$ftype, $fnotnull,$fdefault,$fautoinc,$fconstraint)$/;" f -_CreateSuffix lib/adodb/datadict/datadict-sapdb.inc.php /^ function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned)$/;" f _CreateSuffix lib/adodb/datadict/datadict-sybase.inc.php /^ function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint)$/;" f _DBParameter lib/adodb/adodb-perf.inc.php /^ function _DBParameter($sql)$/;" f -_Detab lib/markdown.php /^function _Detab($text) {$/;" f -_DoAnchors lib/markdown.php /^function _DoAnchors($text) {$/;" f -_DoAnchors_inline_callback lib/markdown.php /^function _DoAnchors_inline_callback($matches) {$/;" f -_DoAnchors_reference_callback lib/markdown.php /^function _DoAnchors_reference_callback($matches) {$/;" f -_DoAutoLinks lib/markdown.php /^function _DoAutoLinks($text) {$/;" f -_DoBlockQuotes lib/markdown.php /^function _DoBlockQuotes($text) {$/;" f -_DoBlockQuotes_callback lib/markdown.php /^function _DoBlockQuotes_callback($matches) {$/;" f -_DoBlockQuotes_callback2 lib/markdown.php /^function _DoBlockQuotes_callback2($matches) {$/;" f -_DoCodeBlocks lib/markdown.php /^function _DoCodeBlocks($text) {$/;" f -_DoCodeBlocks_callback lib/markdown.php /^function _DoCodeBlocks_callback($matches) {$/;" f -_DoCodeSpans lib/markdown.php /^function _DoCodeSpans($text) {$/;" f -_DoCodeSpans_callback lib/markdown.php /^function _DoCodeSpans_callback($matches) {$/;" f -_DoHeaders lib/markdown.php /^function _DoHeaders($text) {$/;" f -_DoImages lib/markdown.php /^function _DoImages($text) {$/;" f -_DoImages_inline_callback lib/markdown.php /^function _DoImages_inline_callback($matches) {$/;" f -_DoImages_reference_callback lib/markdown.php /^function _DoImages_reference_callback($matches) {$/;" f -_DoItalicsAndBold lib/markdown.php /^function _DoItalicsAndBold($text) {$/;" f -_DoLists lib/markdown.php /^function _DoLists($text) {$/;" f -_DoLists_callback lib/markdown.php /^function _DoLists_callback($matches) {$/;" f _DropAutoIncrement lib/adodb/adodb-datadict.inc.php /^ function _DropAutoIncrement($tabname)$/;" f _DropAutoIncrement lib/adodb/datadict/datadict-firebird.inc.php /^ function _DropAutoIncrement($t)$/;" f _DropAutoIncrement lib/adodb/datadict/datadict-oci8.inc.php /^ function _DropAutoIncrement($t)$/;" f -_DropAutoIncrement lib/adodb/datadict/datadict-postgres.inc.php /^ function _DropAutoIncrement($tabname)$/;" f -_EncodeAmpsAndAngles lib/markdown.php /^function _EncodeAmpsAndAngles($text) {$/;" f -_EncodeBackslashEscapes lib/markdown.php /^function _EncodeBackslashEscapes($text) {$/;" f -_EncodeCode lib/markdown.php /^function _EncodeCode($_) {$/;" f -_EncodeEmailAddress lib/markdown.php /^function _EncodeEmailAddress($addr) {$/;" f -_EncodeEmailAddress_callback lib/markdown.php /^function _EncodeEmailAddress_callback($matches) {$/;" f -_EscapeSpecialChars lib/markdown.php /^function _EscapeSpecialChars($text) {$/;" f -_Execute lib/adodb/adodb.inc.php /^ function &_Execute($sql,$inputarr=false)$/;" f +_DropAutoIncrement lib/adodb/datadict/datadict-postgres.inc.php /^ function _DropAutoIncrement($t)$/;" f _Execute lib/adodb/drivers/adodb-csv.inc.php /^ function &_Execute($sql,$inputarr=false)$/;" f _Execute lib/adodb/drivers/adodb-ibase.inc.php /^ function &_Execute($sql,$inputarr=false) $/;" f _ExpensiveSQL lib/adodb/adodb-perf.inc.php /^ function _ExpensiveSQL($numsql = 10)$/;" f _FetchField lib/adodb/drivers/adodb-oci8.inc.php /^ function &_FetchField($fieldOffset = -1)$/;" f -_FetchField lib/adodb/drivers/adodb-oci8po.inc.php /^ function &_FetchField($fieldOffset = -1)$/;" f -_FormParagraphs lib/markdown.php /^function _FormParagraphs($text) {$/;" f -_GenFields lib/adodb/adodb-datadict.inc.php /^ function _GenFields($flds,$widespacing=false)$/;" f +_FetchField lib/adodb/drivers/adodb-oci8po.inc.php /^ function &_FetchField($fieldOffset = -1)$/;" f +_GenFields lib/adodb/adodb-datadict.inc.php /^ function _GenFields($flds)$/;" f _GetSize lib/adodb/adodb-datadict.inc.php /^ function _GetSize($ftype, $ty, $fsize, $fprec)$/;" f _GetSize lib/adodb/datadict/datadict-mssql.inc.php /^ function _GetSize($ftype, $ty, $fsize, $fprec)$/;" f -_HashHTMLBlocks lib/markdown.php /^function _HashHTMLBlocks($text) {$/;" f -_HashHTMLBlocks_callback lib/markdown.php /^function _HashHTMLBlocks_callback($matches) {$/;" f _IndexSQL lib/adodb/adodb-datadict.inc.php /^ function _IndexSQL($idxname, $tabname, $flds, $idxoptions)$/;" f _IndexSQL lib/adodb/datadict/datadict-mssql.inc.php /^ function _IndexSQL($idxname, $tabname, $flds, $idxoptions)$/;" f _IndexSQL lib/adodb/datadict/datadict-mysql.inc.php /^ function _IndexSQL($idxname, $tabname, $flds, $idxoptions)$/;" f _IndexSQL lib/adodb/datadict/datadict-oci8.inc.php /^ function _IndexSQL($idxname, $tabname, $flds,$idxoptions)$/;" f _IndexSQL lib/adodb/datadict/datadict-postgres.inc.php /^ function _IndexSQL($idxname, $tabname, $flds, $idxoptions)$/;" f _IndexSQL lib/adodb/datadict/datadict-sybase.inc.php /^ function _IndexSQL($idxname, $tabname, $flds, $idxoptions)$/;" f -_MoveNext lib/adodb/drivers/adodb-oci8.inc.php /^ function _MoveNext() $/;" f _Options lib/adodb/adodb-datadict.inc.php /^ function _Options($opts)$/;" f -_Outdent lib/markdown.php /^function _Outdent($text) {$/;" f -_ProcessListItems lib/markdown.php /^function _ProcessListItems($list_str, $marker_any) {$/;" f -_ProcessListItems_callback lib/markdown.php /^function _ProcessListItems_callback($matches) {$/;" f -_RunBlockGamut lib/markdown.php /^function _RunBlockGamut($text) {$/;" f -_RunSpanGamut lib/markdown.php /^function _RunSpanGamut($text) {$/;" f -_StripLinkDefinitions lib/markdown.php /^function _StripLinkDefinitions($text) {$/;" f -_StripLinkDefinitions_callback lib/markdown.php /^function _StripLinkDefinitions_callback($matches) {$/;" f _SuspiciousSQL lib/adodb/adodb-perf.inc.php /^ function _SuspiciousSQL($numsql = 10)$/;" f _TableSQL lib/adodb/adodb-datadict.inc.php /^ function _TableSQL($tabname,$lines,$pkey,$tableoptions)$/;" f -_TokenizeHTML lib/markdown.php /^ function _TokenizeHTML($str) {$/;" f _Triggers lib/adodb/adodb-datadict.inc.php /^ function _Triggers($tabname,$taboptions)$/;" f _Triggers lib/adodb/datadict/datadict-firebird.inc.php /^ function _Triggers($tabname,$tableoptions)$/;" f _Triggers lib/adodb/datadict/datadict-oci8.inc.php /^ function _Triggers($tabname,$tableoptions)$/;" f -_UnescapeSpecialChars lib/markdown.php /^function _UnescapeSpecialChars($text) {$/;" f -_UnslashQuotes lib/markdown.php /^function _UnslashQuotes($text) {$/;" f _XF lib/excel/Worksheet.php /^ function _XF(&$format)$/;" f __call lib/adodb/adodb-iterator.inc.php /^ function __call($func, $params)$/;" f -__construct blocks/moodleblock.class.php /^ function __construct() {$/;" f __construct lib/adodb/adodb-exceptions.inc.php /^ function __construct($dbms, $fn, $errno, $errmsg, $p1, $p2, $thisConnection)$/;" f __construct lib/adodb/adodb-iterator.inc.php /^ function __construct($rs) $/;" f -__construct lib/pagelib.php /^ function __construct() {$/;" f __get lib/adodb/drivers/adodb-sqlite.inc.php /^ function __get($name) $/;" f -__get lib/cas/domxml-php4-php5.php /^ function __get($name)$/;" f __toString lib/adodb/adodb-iterator.inc.php /^ function __toString()$/;" f _add_continue lib/excel/BIFFwriter.php /^ function _add_continue($data)$/;" f -_add_edit_controls blocks/moodleblock.class.php /^ function _add_edit_controls($options) {$/;" f _add_plugin lib/smarty/Smarty_Compiler.class.php /^ function _add_plugin($type, $name, $delayed_loading = null)$/;" f -_adodb_backtrace lib/adodb/adodb-lib.inc.php /^function _adodb_backtrace($printOrArr=true,$levels=9999)$/;" f _adodb_column_sql lib/adodb/adodb-lib.inc.php /^function _adodb_column_sql(&$zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq, $recurse=true) $/;" f _adodb_column_sql_oci8 lib/adodb/adodb-lib.inc.php /^function _adodb_column_sql_oci8(&$zthis,$action, $type, $fname, $fnameq, $arrFields, $magicq) $/;" f -_adodb_debug_execute lib/adodb/adodb-lib.inc.php /^function _adodb_debug_execute(&$zthis, $sql, $inputarr)$/;" f _adodb_export lib/adodb/toexport.inc.php /^function _adodb_export(&$rs,$sep,$sepreplace,$fp=false,$addtitles=true,$quote = '"',$escquote = '"',$replaceNewLine = ' ')$/;" f _adodb_getcount lib/adodb/adodb-lib.inc.php /^function _adodb_getcount(&$zthis, $sql,$inputarr=false,$secs2cache=0) $/;" f _adodb_getdate lib/adodb/adodb-time.inc.php /^function _adodb_getdate($origd=false,$fast=false,$is_gmt=false)$/;" f _adodb_getdriver lib/adodb/adodb.inc.php /^ function _adodb_getdriver($provider,$drivername,$perf=false)$/;" f -_adodb_getinsertsql lib/adodb/adodb-lib.inc.php /^function _adodb_getinsertsql(&$zthis,&$rs,$arrFields,$magicq=false,$force=2)$/;" f +_adodb_getinsertsql lib/adodb/adodb-lib.inc.php /^function _adodb_getinsertsql(&$zthis,&$rs,$arrFields,$magicq=false,$forcenulls=false)$/;" f _adodb_getmenu lib/adodb/adodb-lib.inc.php /^function _adodb_getmenu(&$zthis, $name,$defstr='',$blank1stItem=true,$multiple=false,$/;" f -_adodb_getupdatesql lib/adodb/adodb-lib.inc.php /^function _adodb_getupdatesql(&$zthis,&$rs, $arrFields,$forceUpdate=false,$magicq=false,$force=2)$/;" f +_adodb_getupdatesql lib/adodb/adodb-lib.inc.php /^function _adodb_getupdatesql(&$zthis,&$rs, $arrFields,$forceUpdate=false,$magicq=false,$forcenulls=false)$/;" f _adodb_is_leap_year lib/adodb/adodb-time.inc.php /^function _adodb_is_leap_year($year) $/;" f _adodb_pageexecute_all_rows lib/adodb/adodb-lib.inc.php /^function &_adodb_pageexecute_all_rows(&$zthis, $sql, $nrows, $page, $/;" f _adodb_pageexecute_no_last_page lib/adodb/adodb-lib.inc.php /^function &_adodb_pageexecute_no_last_page(&$zthis, $sql, $nrows, $page, $inputarr=false, $secs2cache=0) $/;" f _adodb_replace lib/adodb/adodb-lib.inc.php /^function _adodb_replace(&$zthis, $table, $fieldArray, $keyCol, $autoQuote, $has_autoinc)$/;" f _advance lib/excel/Parser.php /^ function _advance()$/;" f _affectedrows lib/adodb/drivers/adodb-ado.inc.php /^ function _affectedrows()$/;" f -_affectedrows lib/adodb/drivers/adodb-ado5.inc.php /^ function _affectedrows()$/;" f _affectedrows lib/adodb/drivers/adodb-ado_mssql.inc.php /^ function _affectedrows()$/;" f _affectedrows lib/adodb/drivers/adodb-csv.inc.php /^ function _affectedrows()$/;" f _affectedrows lib/adodb/drivers/adodb-fbsql.inc.php /^ function _affectedrows()$/;" f @@ -1341,8 +1254,6 @@ _close lib/adodb/adodb.inc.php /^ function _close() $/;" f _close lib/adodb/adodb.inc.php /^ function _close() {}$/;" f _close lib/adodb/drivers/adodb-ado.inc.php /^ function _close() {$/;" f _close lib/adodb/drivers/adodb-ado.inc.php /^ function _close()$/;" f -_close lib/adodb/drivers/adodb-ado5.inc.php /^ function _close() {$/;" f -_close lib/adodb/drivers/adodb-ado5.inc.php /^ function _close()$/;" f _close lib/adodb/drivers/adodb-csv.inc.php /^ function _close()$/;" f _close lib/adodb/drivers/adodb-fbsql.inc.php /^ function _close() {$/;" f _close lib/adodb/drivers/adodb-fbsql.inc.php /^ function _close()$/;" f @@ -1392,7 +1303,6 @@ _compile_source lib/smarty/Smarty.class.php /^ function _compile_source($reso _compile_tag lib/smarty/Smarty_Compiler.class.php /^ function _compile_tag($template_tag)$/;" f _conn lib/adodb/session/adodb-session.php /^ function &_conn($conn=null) {$/;" f _connect lib/adodb/drivers/adodb-ado.inc.php /^ function _connect($argHostname, $argUsername, $argPassword, $argProvider= 'MSDASQL')$/;" f -_connect lib/adodb/drivers/adodb-ado5.inc.php /^ function _connect($argHostname, $argUsername, $argPassword, $argProvider= 'MSDASQL')$/;" f _connect lib/adodb/drivers/adodb-csv.inc.php /^ function _connect($argHostname, $argUsername, $argPassword, $argDatabasename)$/;" f _connect lib/adodb/drivers/adodb-fbsql.inc.php /^ function _connect($argHostname, $argUsername, $argPassword, $argDatabasename)$/;" f _connect lib/adodb/drivers/adodb-ibase.inc.php /^ function _connect($argHostname, $argUsername, $argPassword, $argDatabasename,$persist=false)$/;" f @@ -1421,16 +1331,15 @@ _createFunctions lib/adodb/drivers/adodb-sqlite.inc.php /^ function _createFunct _create_tree lib/excel/Parser.php /^ function _create_tree($value, $left, $right)$/;" f _decode lib/adodb/drivers/adodb-postgres64.inc.php /^ function _decode($blob)$/;" f _dequote lib/smarty/Smarty.class.php /^ function _dequote($string)$/;" f -_dispatchTokens lib/lexer.php /^ function _dispatchTokens($unmatched, $matched, $mode = false) {$/;" f _dumprs lib/adodb/session/adodb-session.php /^ function _dumprs($rs) {$/;" f _encode_password lib/excel/Worksheet.php /^ function _encode_password($plaintext)$/;" f _eval lib/smarty/Smarty.class.php /^ function _eval($code, $params=null)$/;" f _expand_quoted_text lib/smarty/Smarty_Compiler.class.php /^ function _expand_quoted_text($var_expr)$/;" f _expression lib/excel/Parser.php /^ function _expression()$/;" f _fact lib/excel/Parser.php /^ function _fact()$/;" f +_fail mod/questionnaire/phpESP/admin/test.php /^function _fail($str)$/;" f _fetch lib/adodb/adodb.inc.php /^ function _fetch()$/;" f _fetch lib/adodb/drivers/adodb-ado.inc.php /^ function _fetch()$/;" f -_fetch lib/adodb/drivers/adodb-ado5.inc.php /^ function _fetch()$/;" f _fetch lib/adodb/drivers/adodb-fbsql.inc.php /^ function _fetch($ignore_fields=false)$/;" f _fetch lib/adodb/drivers/adodb-ibase.inc.php /^ function _fetch() $/;" f _fetch lib/adodb/drivers/adodb-informix72.inc.php /^ function _fetch($ignore_fields=false)$/;" f @@ -1445,26 +1354,27 @@ _fetch lib/adodb/drivers/adodb-odbtp.inc.php /^ function _fetch()$/;" f _fetch lib/adodb/drivers/adodb-oracle.inc.php /^ function _fetch($ignore_fields=false) {$/;" f _fetch lib/adodb/drivers/adodb-pdo.inc.php /^ function _fetch()$/;" f _fetch lib/adodb/drivers/adodb-postgres64.inc.php /^ function _fetch()$/;" f -_fetch lib/adodb/drivers/adodb-postgres7.inc.php /^ function _fetch()$/;" f _fetch lib/adodb/drivers/adodb-sqlite.inc.php /^ function _fetch($ignore_fields=false) $/;" f _fetch lib/adodb/drivers/adodb-sqlitepo.inc.php /^ function _fetch($ignore_fields=false)$/;" f _fetch lib/adodb/drivers/adodb-sybase.inc.php /^ function _fetch($ignore_fields=false) $/;" f _fetch_odbtp lib/adodb/drivers/adodb-odbtp.inc.php /^ function _fetch_odbtp($type=0)$/;" f _fetch_resource_info lib/smarty/Smarty.class.php /^ function _fetch_resource_info(&$params)$/;" f _findschema lib/adodb/adodb.inc.php /^ function _findschema(&$table,&$schema)$/;" f -_findvers lib/adodb/adodb-connection.inc.php /^ function _findvers($str)$/;" f +_findvers lib/adodb/adodb-connection.inc.php /^ function _findvers($str)$/;" f _findvers lib/adodb/adodb.inc.php /^ function _findvers($str)$/;" f _fixblobs lib/adodb/drivers/adodb-postgres64.inc.php /^ function _fixblobs()$/;" f _func lib/excel/Parser.php /^ function _func()$/;" f -_gencachename lib/adodb/adodb-connection.inc.php /^ function _gencachename($sql,$createdir)$/;" f +_gencachename lib/adodb/adodb-connection.inc.php /^ function _gencachename($sql,$createdir)$/;" f _gencachename lib/adodb/adodb.inc.php /^ function _gencachename($sql,$createdir)$/;" f -_getCompoundedRegex lib/lexer.php /^ function _getCompoundedRegex() {$/;" f -_getPerlMatchingFlags lib/lexer.php /^ function _getPerlMatchingFlags() {$/;" f _get_auto_filename lib/smarty/Smarty.class.php /^ function _get_auto_filename($auto_base, $auto_source = null, $auto_id = null)$/;" f _get_auto_id lib/smarty/Smarty.class.php /^ function _get_auto_id($cache_id=null, $compile_id=null) {$/;" f _get_color lib/excel/Format.php /^ function _get_color($name_color = '')$/;" f _get_compile_path lib/smarty/Smarty.class.php /^ function _get_compile_path($resource_name)$/;" f _get_plugin_filepath lib/smarty/Smarty.class.php /^ function _get_plugin_filepath($type, $name)$/;" f +_get_rss_version blocks/rssfeed/class_rss_feed.php /^ function _get_rss_version()$/;" f +_handle_character_data blocks/rssfeed/class_rss_feed.php /^ function _handle_character_data(&$p, &$cdata)$/;" f +_handle_close_element blocks/rssfeed/class_rss_feed.php /^ function _handle_close_element(&$p, &$element)$/;" f +_handle_open_element blocks/rssfeed/class_rss_feed.php /^ function _handle_open_element (&$p, &$element, &$attributes)$/;" f _handleerror lib/adodb/drivers/adodb-ibase.inc.php /^ function _handleerror()$/;" f _include lib/smarty/Smarty.class.php /^ function _include($filename, $once=false, $params=null)$/;" f _init lib/adodb/session/adodb-session.php /^ function _init() {$/;" f @@ -1473,7 +1383,6 @@ _initialize lib/excel/Worksheet.php /^ function _initialize()$/;" f _initialize_hashes lib/excel/Parser.php /^ function _initialize_hashes()$/;" f _initrs lib/adodb/adodb.inc.php /^ function _initrs()$/;" f _initrs lib/adodb/drivers/adodb-ado.inc.php /^ function _initrs()$/;" f -_initrs lib/adodb/drivers/adodb-ado5.inc.php /^ function _initrs()$/;" f _initrs lib/adodb/drivers/adodb-fbsql.inc.php /^ function _initrs()$/;" f _initrs lib/adodb/drivers/adodb-ibase.inc.php /^ function _initrs()$/;" f _initrs lib/adodb/drivers/adodb-informix72.inc.php /^ function _initrs()$/;" f @@ -1485,6 +1394,7 @@ _initrs lib/adodb/drivers/adodb-netezza.inc.php /^ function _initrs()$/;" f _initrs lib/adodb/drivers/adodb-oci8.inc.php /^ function _initrs()$/;" f _initrs lib/adodb/drivers/adodb-odbc.inc.php /^ function _initrs()$/;" f _initrs lib/adodb/drivers/adodb-odbtp.inc.php /^ function _initrs()$/;" f +_initrs lib/adodb/drivers/adodb-odbtp_unicode.inc.php /^ function _initrs()$/;" f _initrs lib/adodb/drivers/adodb-oracle.inc.php /^ function _initrs()$/;" f _initrs lib/adodb/drivers/adodb-pdo.inc.php /^ function _initrs()$/;" f _initrs lib/adodb/drivers/adodb-postgres64.inc.php /^ function _initrs()$/;" f @@ -1501,23 +1411,22 @@ _insertid lib/adodb/drivers/adodb-mysqli.inc.php /^ function _insertid()$/;" f _insertid lib/adodb/drivers/adodb-odbc_mssql.inc.php /^ function _insertid()$/;" f _insertid lib/adodb/drivers/adodb-odbtp.inc.php /^ function _insertid()$/;" f _insertid lib/adodb/drivers/adodb-pdo.inc.php /^ function _insertid()$/;" f -_insertid lib/adodb/drivers/adodb-postgres64.inc.php /^ function _insertid($table,$column)$/;" f -_insertid lib/adodb/drivers/adodb-sapdb.inc.php /^ function _insertid($table,$column)$/;" f +_insertid lib/adodb/drivers/adodb-postgres64.inc.php /^ function _insertid()$/;" f _insertid lib/adodb/drivers/adodb-sqlanywhere.inc.php /^ function _insertid() {$/;" f _insertid lib/adodb/drivers/adodb-sqlite.inc.php /^ function _insertid()$/;" f _insertid lib/adodb/drivers/adodb-sybase.inc.php /^ function _insertid()$/;" f -_invokeParser lib/lexer.php /^ function _invokeParser($content, $is_match) {$/;" f _is_compiled lib/smarty/Smarty.class.php /^ function _is_compiled($resource_name, $compile_path)$/;" f +_load_file blocks/rssfeed/class_rss_feed.php /^ function _load_file()$/;" f _load_filters lib/smarty/Smarty_Compiler.class.php /^ function _load_filters()$/;" f -_load_instance blocks/moodleblock.class.php /^ function _load_instance($instance) {$/;" f _match lib/excel/Parser.php /^ function _match($token)$/;" f -_nconnect lib/adodb/adodb-connection.inc.php /^ function _nconnect($argHostname, $argUsername, $argPassword, $argDatabaseName)$/;" f +_nconnect lib/adodb/adodb-connection.inc.php /^ function _nconnect($argHostname, $argUsername, $argPassword, $argDatabaseName)$/;" f _nconnect lib/adodb/adodb.inc.php /^ function _nconnect($argHostname, $argUsername, $argPassword, $argDatabaseName)$/;" f _nconnect lib/adodb/drivers/adodb-mysql.inc.php /^ function _nconnect($argHostname, $argUsername, $argPassword, $argDatabasename)$/;" f _nconnect lib/adodb/drivers/adodb-mysqli.inc.php /^ function _nconnect($argHostname, $argUsername, $argPassword, $argDatabasename)$/;" f _nconnect lib/adodb/drivers/adodb-oci8.inc.php /^ function _nconnect($argHostname, $argUsername, $argPassword, $argDatabasename)$/;" f _nconnect lib/adodb/drivers/adodb-postgres64.inc.php /^ function _nconnect($argHostname, $argUsername, $argPassword, $argDatabaseName)$/;" f _parenthesized_expression lib/excel/Parser.php /^ function _parenthesized_expression()$/;" f +_parseDsn lib/adodb/pear/Auth/Container/ADOdb.php /^ function _parseDsn( $dsn ) $/;" f _parseOptions lib/adodb/pear/Auth/Container/ADOdb.php /^ function _parseOptions($array)$/;" f _parse_attrs lib/smarty/Smarty_Compiler.class.php /^ function _parse_attrs($tag_args)$/;" f _parse_conf_var lib/smarty/Smarty_Compiler.class.php /^ function _parse_conf_var($conf_var_expr)$/;" f @@ -1529,8 +1438,8 @@ _parse_section_prop lib/smarty/Smarty_Compiler.class.php /^ function _parse_s _parse_var lib/smarty/Smarty_Compiler.class.php /^ function _parse_var($var_expr)$/;" f _parse_var_props lib/smarty/Smarty_Compiler.class.php /^ function _parse_var_props($val)$/;" f _parse_vars_props lib/smarty/Smarty_Compiler.class.php /^ function _parse_vars_props(&$tokens)$/;" f +_pass mod/questionnaire/phpESP/admin/test.php /^function _pass($str)$/;" f _pconnect lib/adodb/drivers/adodb-ado.inc.php /^ function _pconnect($argHostname, $argUsername, $argPassword, $argProvider='MSDASQL')$/;" f -_pconnect lib/adodb/drivers/adodb-ado5.inc.php /^ function _pconnect($argHostname, $argUsername, $argPassword, $argProvider='MSDASQL')$/;" f _pconnect lib/adodb/drivers/adodb-csv.inc.php /^ function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename)$/;" f _pconnect lib/adodb/drivers/adodb-fbsql.inc.php /^ function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename)$/;" f _pconnect lib/adodb/drivers/adodb-ibase.inc.php /^ function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename)$/;" f @@ -1552,14 +1461,11 @@ _pop_tag lib/smarty/Smarty_Compiler.class.php /^ function _pop_tag($close_tag _position_image lib/excel/Worksheet.php /^ function _position_image($col_start, $row_start, $x1, $y1, $width, $height)$/;" f _prepare lib/adodb/pear/Auth/Container/ADOdb.php /^ function _prepare()$/;" f _prepend lib/excel/BIFFwriter.php /^ function _prepend($data)$/;" f -_print_block blocks/moodleblock.class.php /^ function _print_block() {$/;" f -_print_shadow blocks/moodleblock.class.php /^ function _print_shadow() {$/;" f _process_bitmap lib/excel/Worksheet.php /^ function _process_bitmap($bitmap)$/;" f _process_compiled_include_callback lib/smarty/Smarty.class.php /^ function _process_compiled_include_callback($match) {$/;" f _push_cacheable_state lib/smarty/Smarty_Compiler.class.php /^ function _push_cacheable_state($type, $name) {$/;" f _push_tag lib/smarty/Smarty_Compiler.class.php /^ function _push_tag($open_tag)$/;" f _query lib/adodb/drivers/adodb-ado.inc.php /^ function &_query($sql,$inputarr=false) $/;" f -_query lib/adodb/drivers/adodb-ado5.inc.php /^ function &_query($sql,$inputarr=false) $/;" f _query lib/adodb/drivers/adodb-fbsql.inc.php /^ function _query($sql,$inputarr)$/;" f _query lib/adodb/drivers/adodb-ibase.inc.php /^ function _query($sql,$iarr=false)$/;" f _query lib/adodb/drivers/adodb-informix72.inc.php /^ function _query($sql,$inputarr)$/;" f @@ -1579,16 +1485,14 @@ _query lib/adodb/drivers/adodb-postgres64.inc.php /^ function _query($sql,$input _query lib/adodb/drivers/adodb-sqlite.inc.php /^ function _query($sql,$inputarr=false)$/;" f _query lib/adodb/drivers/adodb-sybase.inc.php /^ function _query($sql,$inputarr)$/;" f _quote_replace lib/smarty/Smarty_Compiler.class.php /^ function _quote_replace($string)$/;" f +_rdf_handle_open_element blocks/rssfeed/class_rss_feed.php /^ function _rdf_handle_open_element(&$p, &$element, &$attributes)$/;" f _read_file lib/smarty/Smarty.class.php /^ function _read_file($filename, $start=null, $lines=null)$/;" f -_recreate_copy_table lib/adodb/datadict/datadict-postgres.inc.php /^ function _recreate_copy_table($tabname,$dropflds,$tableflds,$tableoptions='')$/;" f -_reduce lib/lexer.php /^ function _reduce(&$raw) {$/;" f -_rs2rs lib/adodb/adodb-connection.inc.php /^ function &_rs2rs(&$rs,$nrows=-1,$offset=-1,$close=true)$/;" f +_rs2rs lib/adodb/adodb-connection.inc.php /^ function &_rs2rs(&$rs,$nrows=-1,$offset=-1,$close=true)$/;" f _rs2rs lib/adodb/adodb.inc.php /^ function &_rs2rs(&$rs,$nrows=-1,$offset=-1,$close=true)$/;" f _rs2serialize lib/adodb/adodb-csvlib.inc.php /^ function _rs2serialize(&$rs,$conn=false,$sql='')$/;" f _run_mod_handler lib/smarty/Smarty.class.php /^ function _run_mod_handler()$/;" f _seek lib/adodb/adodb.inc.php /^ function _seek($row)$/;" f _seek lib/adodb/drivers/adodb-ado.inc.php /^ function _seek($row)$/;" f -_seek lib/adodb/drivers/adodb-ado5.inc.php /^ function _seek($row)$/;" f _seek lib/adodb/drivers/adodb-fbsql.inc.php /^ function _seek($row)$/;" f _seek lib/adodb/drivers/adodb-ibase.inc.php /^ function _seek($row)$/;" f _seek lib/adodb/drivers/adodb-informix72.inc.php /^ function _seek($row)$/;" f @@ -1662,7 +1566,6 @@ _trigger_error_msg lib/smarty/Config_File.class.php /^ function _trigger_erro _trigger_fatal_error lib/smarty/Smarty.class.php /^ function _trigger_fatal_error($error_msg, $tpl_file = null, $tpl_line = null,$/;" f _unlink lib/smarty/Smarty.class.php /^ function _unlink($resource, $exp_time = null)$/;" f _updatefields lib/adodb/drivers/adodb-oci8po.inc.php /^ function _updatefields()$/;" f -_updatefields lib/adodb/drivers/adodb-postgres7.inc.php /^ function _updatefields()$/;" f _write_big_block_depot lib/excel/OLEwriter.php /^ function _write_big_block_depot()$/;" f _write_padding lib/excel/OLEwriter.php /^ function _write_padding()$/;" f _write_pps lib/excel/OLEwriter.php /^ function _write_pps($name,$type,$dir,$start,$size)$/;" f @@ -1674,61 +1577,42 @@ _write_url_web lib/excel/Worksheet.php /^ function _write_url_web($row1, $col _xmlcb_cData lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function _xmlcb_cData( $parser, $data ) {$/;" f _xmlcb_endElement lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function _xmlcb_endElement( $parser, $name ) {$/;" f _xmlcb_startElement lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function _xmlcb_startElement( $parser, $name, $attrs ) {$/;" f -accept lib/searchlib.php /^ function accept() {$/;" f activate lib/excel/Worksheet.php /^ function activate()$/;" f +activity_link_names filter/activitynames/filter.php /^ function activity_link_names($text,$name,$href_tag_begin,$href_tag_end = "<\/a>") {$/;" f activity_modules_upgrade blocks/activity_modules/db/mysql.php /^function activity_modules_upgrade($oldversion=0) {$/;" f activity_modules_upgrade blocks/activity_modules/db/postgres7.php /^function activity_modules_upgrade($oldversion=0) {$/;" f activitynames_filter filter/activitynames/filter.php /^ function activitynames_filter($courseid, $text) {$/;" f -actual_number_of_questions mod/quiz/locallib.php /^ function actual_number_of_questions($question) {$/;" f -actual_number_of_questions mod/quiz/questiontypes/description/questiontype.php /^ function actual_number_of_questions($question) {$/;" f add lib/pclzip/pclzip.lib.php /^ function add($p_filelist \/* options *\/)$/;" f add mod/wiki/ewiki/ewiki.php /^ function add($row) {$/;" f -addData lib/adodb/adodb-xmlschema.inc.php /^ function &addData( $attributes ) {$/;" f -addData lib/adodb/adodb-xmlschema.inc.php /^ function addData( $cdata ) {$/;" f -addEntryPattern lib/lexer.php /^ function addEntryPattern($pattern, $mode, $new_mode) {$/;" f -addExitPattern lib/lexer.php /^ function addExitPattern($pattern, $mode) {$/;" f addField lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function addField( $name ) {$/;" f addField lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function addField( $name, $type, $size = NULL, $opts = NULL ) {$/;" f -addField lib/adodb/adodb-xmlschema.inc.php /^ function addField( $attributes ) {$/;" f addField lib/adodb/adodb-xmlschema.inc.php /^ function addField( $name ) {$/;" f addField lib/adodb/adodb-xmlschema.inc.php /^ function addField( $name, $type, $size = NULL, $opts = NULL ) {$/;" f addFieldOpt lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function addFieldOpt( $field, $opt, $value = NULL ) {$/;" f addFieldOpt lib/adodb/adodb-xmlschema.inc.php /^ function addFieldOpt( $field, $opt, $value = NULL ) {$/;" f addIndex lib/adodb/adodb-xmlschema.inc.php /^ function &addIndex( $attributes ) {$/;" f addIndexOpt lib/adodb/adodb-xmlschema.inc.php /^ function addIndexOpt( $opt ) {$/;" f -addPattern lib/lexer.php /^ function addPattern($pattern, $label = true) {$/;" f -addPattern lib/lexer.php /^ function addPattern($pattern, $mode = "accept") {$/;" f addQuery lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function addQuery() {$/;" f addQuery lib/adodb/adodb-xmlschema.inc.php /^ function addQuery() {$/;" f addSQL lib/adodb/adodb-xmlschema.inc.php /^ function addSQL( $sql = NULL ) {$/;" f -addSpecialPattern lib/lexer.php /^ function addSpecialPattern($pattern, $mode, $special) {$/;" f addTableOpt lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function addTableOpt( $opt ) {$/;" f addTableOpt lib/adodb/adodb-xmlschema.inc.php /^ function addTableOpt( $opt ) {$/;" f addUser lib/adodb/pear/Auth/Container/ADOdb.php /^ function addUser($username, $password, $additional = "")$/;" f add_admin lib/moodlelib.php /^function add_admin($userid) {$/;" f -add_category mod/quiz/category.php /^ function add_category($newparent, $newcategory, $newinfo, $newpublish, $newcourse) {$/;" f add_course_module course/lib.php /^function add_course_module($mod) {$/;" f add_creator lib/moodlelib.php /^function add_creator($userid) {$/;" f -add_data lib/tablelib.php /^ function add_data($row) {$/;" f -add_event lib/moodlelib.php /^ function add_event($event) {$/;" f +add_edit_controls blocks/moodleblock.class.php /^ function add_edit_controls($options, $blockid) {$/;" f +add_event lib/moodlelib.php /^function add_event($event) {$/;" f add_format lib/excel/Workbook.php /^ function &add_format($properties = array())$/;" f -add_indented_names mod/quiz/locallib.php /^function add_indented_names(&$categories, $id = 0, $indent = 0) {$/;" f add_instance mod/resource/lib.php /^function add_instance($resource) {$/;" f add_instance mod/resource/type/file/resource.class.php /^function add_instance($resource) {$/;" f -add_instance mod/resource/type/html/resource.class.php /^function add_instance($resource) {$/;" f -add_instance mod/resource/type/text/resource.class.php /^function add_instance($resource) {$/;" f add_mod_to_section course/lib.php /^function add_mod_to_section($mod, $beforemod=NULL) {$/;" f -add_qti_info mod/quiz/format/qti/format.php /^ function add_qti_info(&$questions)$/;" f -add_separator lib/tablelib.php /^ function add_separator() {$/;" f -add_teacher lib/moodlelib.php /^function add_teacher($userid, $courseid, $editall=1, $role='', $timestart=0, $timeend=0, $enrol='manual') {$/;" f -add_to_log lib/datalib.php /^function add_to_log($courseid, $module, $action, $url='', $info='', $cm=0, $user=0) {$/;" f -add_to_metacourse lib/moodlelib.php /^function add_to_metacourse ($metacourseid, $courseid) {$/;" f -add_user_to_group lib/moodlelib.php /^function add_user_to_group ($groupid, $userid) {$/;" f +add_teacher lib/moodlelib.php /^function add_teacher($userid, $courseid, $editall=1, $role="", $timestart=0, $timeend=0) {$/;" f +add_to_log lib/datalib.php /^function add_to_log($courseid, $module, $action, $url="", $info="", $cm=0, $user=0) {$/;" f add_worksheet lib/excel/Workbook.php /^ function &add_worksheet($name = '')$/;" f addformat lib/excel/Workbook.php /^ function &addformat($properties = array())$/;" f addq lib/adodb/adodb.inc.php /^ function addq($s,$magic_quotes=false)$/;" f address_in_subnet lib/moodlelib.php /^function address_in_subnet($addr, $subnetstr) {$/;" f -addslashes_deep lib/setup.php /^ function addslashes_deep($value) {$/;" f addworksheet lib/excel/Workbook.php /^ function &addworksheet($name = '')$/;" f admin_upgrade blocks/admin/db/mysql.php /^function admin_upgrade($oldversion=0) {$/;" f admin_upgrade blocks/admin/db/postgres7.php /^function admin_upgrade($oldversion=0) {$/;" f @@ -1758,60 +1642,91 @@ adodb_errormsg lib/adodb/adodb-error.inc.php /^function adodb_errormsg($value)$/ adodb_get_gmt_diff lib/adodb/adodb-time.inc.php /^function adodb_get_gmt_diff() $/;" f adodb_getdate lib/adodb/adodb-time.inc.php /^function adodb_getdate($d=false,$fast=false)$/;" f adodb_gmdate lib/adodb/adodb-time.inc.php /^function adodb_gmdate($fmt,$d=false)$/;" f -adodb_gmmktime lib/adodb/adodb-time.inc.php /^function adodb_gmmktime($hr,$min,$sec,$mon=false,$day=false,$year=false,$is_dst=false)$/;" f +adodb_gmmktime lib/adodb/adodb-time.inc.php /^function adodb_gmmktime($hr,$min,$sec,$mon,$day,$year,$is_dst=false)$/;" f adodb_is_leap_year lib/adodb/adodb-time.inc.php /^function adodb_is_leap_year($year) $/;" f -adodb_key_exists lib/adodb/adodb-lib.inc.php /^function adodb_key_exists($key, &$arr,$force=2)$/;" f +adodb_key_exists lib/adodb/adodb-lib.inc.php /^function adodb_key_exists($key, &$arr,$forcenulls=false)$/;" f adodb_microtime lib/adodb/adodb-perf.inc.php /^function adodb_microtime()$/;" f -adodb_mktime lib/adodb/adodb-time.inc.php /^function adodb_mktime($hr,$min,$sec,$mon=false,$day=false,$year=false,$is_dst=false,$is_gmt=false) $/;" f +adodb_mktime lib/adodb/adodb-time.inc.php /^function adodb_mktime($hr,$min,$sec,$mon,$day,$year,$is_dst=false,$is_gmt=false) $/;" f adodb_perf lib/adodb/adodb-perf.inc.php /^class adodb_perf {$/;" c -adodb_pr lib/adodb/adodb.inc.php /^ function adodb_pr($var,$as_string=false)$/;" f +adodb_pr lib/adodb/adodb.inc.php /^ function adodb_pr($var)$/;" f adodb_round lib/adodb/adodb-perf.inc.php /^function adodb_round($n,$prec)$/;" f adodb_sess_close lib/adodb/adodb-cryptsession.php /^function adodb_sess_close() $/;" f adodb_sess_close lib/adodb/adodb-session-clob.php /^function adodb_sess_close() $/;" f adodb_sess_close lib/adodb/adodb-session.php /^function adodb_sess_close() $/;" f +adodb_sess_close lib/adodb/session/old/adodb-cryptsession.php /^function adodb_sess_close() $/;" f +adodb_sess_close lib/adodb/session/old/adodb-session-clob.php /^function adodb_sess_close() $/;" f +adodb_sess_close lib/adodb/session/old/adodb-session.php /^function adodb_sess_close() $/;" f adodb_sess_destroy lib/adodb/adodb-cryptsession.php /^function adodb_sess_destroy($key) $/;" f adodb_sess_destroy lib/adodb/adodb-session-clob.php /^function adodb_sess_destroy($key) $/;" f adodb_sess_destroy lib/adodb/adodb-session.php /^function adodb_sess_destroy($key) $/;" f +adodb_sess_destroy lib/adodb/session/old/adodb-cryptsession.php /^function adodb_sess_destroy($key) $/;" f +adodb_sess_destroy lib/adodb/session/old/adodb-session-clob.php /^function adodb_sess_destroy($key) $/;" f +adodb_sess_destroy lib/adodb/session/old/adodb-session.php /^function adodb_sess_destroy($key) $/;" f adodb_sess_gc lib/adodb/adodb-cryptsession.php /^function adodb_sess_gc($maxlifetime) {$/;" f adodb_sess_gc lib/adodb/adodb-session-clob.php /^function adodb_sess_gc($maxlifetime) $/;" f adodb_sess_gc lib/adodb/adodb-session.php /^function adodb_sess_gc($maxlifetime) $/;" f adodb_sess_gc lib/adodb/session/adodb-session.php /^function adodb_sess_gc($t)$/;" f +adodb_sess_gc lib/adodb/session/old/adodb-cryptsession.php /^function adodb_sess_gc($maxlifetime) {$/;" f +adodb_sess_gc lib/adodb/session/old/adodb-session-clob.php /^function adodb_sess_gc($maxlifetime) $/;" f +adodb_sess_gc lib/adodb/session/old/adodb-session.php /^function adodb_sess_gc($maxlifetime) $/;" f adodb_sess_open lib/adodb/adodb-cryptsession.php /^function adodb_sess_open($save_path, $session_name) $/;" f adodb_sess_open lib/adodb/adodb-session-clob.php /^function adodb_sess_open($save_path, $session_name,$persist=true) $/;" f adodb_sess_open lib/adodb/adodb-session.php /^function adodb_sess_open($save_path, $session_name,$persist=true) $/;" f adodb_sess_open lib/adodb/session/adodb-session.php /^function adodb_sess_open($save_path, $session_name, $persist = true) {$/;" f +adodb_sess_open lib/adodb/session/old/adodb-cryptsession.php /^function adodb_sess_open($save_path, $session_name) $/;" f +adodb_sess_open lib/adodb/session/old/adodb-session-clob.php /^function adodb_sess_open($save_path, $session_name,$persist=true) $/;" f +adodb_sess_open lib/adodb/session/old/adodb-session.php /^function adodb_sess_open($save_path, $session_name,$persist=true) $/;" f adodb_sess_read lib/adodb/adodb-cryptsession.php /^function adodb_sess_read($key) $/;" f adodb_sess_read lib/adodb/adodb-session-clob.php /^function adodb_sess_read($key) $/;" f adodb_sess_read lib/adodb/adodb-session.php /^function adodb_sess_read($key) $/;" f +adodb_sess_read lib/adodb/session/old/adodb-cryptsession.php /^function adodb_sess_read($key) $/;" f +adodb_sess_read lib/adodb/session/old/adodb-session-clob.php /^function adodb_sess_read($key) $/;" f +adodb_sess_read lib/adodb/session/old/adodb-session.php /^function adodb_sess_read($key) $/;" f adodb_sess_write lib/adodb/adodb-cryptsession.php /^function adodb_sess_write($key, $val) $/;" f adodb_sess_write lib/adodb/adodb-session-clob.php /^function adodb_sess_write($key, $val) $/;" f adodb_sess_write lib/adodb/adodb-session.php /^function adodb_sess_write($key, $val) $/;" f +adodb_sess_write lib/adodb/session/old/adodb-cryptsession.php /^function adodb_sess_write($key, $val) $/;" f +adodb_sess_write lib/adodb/session/old/adodb-session-clob.php /^function adodb_sess_write($key, $val) $/;" f +adodb_sess_write lib/adodb/session/old/adodb-session.php /^function adodb_sess_write($key, $val) $/;" f adodb_test_err lib/adodb/tests/test.php /^function adodb_test_err($dbms, $fn, $errno, $errmsg, $p1=false, $p2=false)$/;" f adodb_throw lib/adodb/adodb-exceptions.inc.php /^function adodb_throw($dbms, $fn, $errno, $errmsg, $p1, $p2, $thisConnection)$/;" f -adodb_unserialize lib/adodb/session/adodb-session.php /^function adodb_unserialize( $serialized_string ) $/;" f -adodb_write_file lib/adodb/adodb-csvlib.inc.php /^ function adodb_write_file($filename, $contents,$debug=false)$/;" f +adodb_write_file lib/adodb/adodb.inc.php /^ function adodb_write_file($filename, $contents,$debug=false)$/;" f adodb_year_digit_check lib/adodb/adodb-time.inc.php /^function adodb_year_digit_check($y) $/;" f +advertisement_upgrade blocks/advertisement/db/mysql.php /^function advertisement_upgrade($oldversion=0) {$/;" f +advertisement_upgrade blocks/advertisement/db/postgres7.php /^function advertisement_upgrade($oldversion=0) {$/;" f algebra2tex filter/algebra/algebradebug.php /^function algebra2tex($algebra) {$/;" f algebra_filter filter/algebra/filter.php /^function algebra_filter ($courseid, $text) {$/;" f -alter_email filter/emailprotect/filter.php /^function alter_email($matches) {$/;" f -alter_mailto filter/emailprotect/filter.php /^function alter_mailto($matches) {$/;" f answerweightparser mod/quiz/format/gift/format.php /^ function answerweightparser(&$answer) {$/;" f -anydb_escape_string mod/wiki/ewikimoodlelib.php /^function anydb_escape_string($s) {$/;" f apiVersion lib/adodb/adodb-pear.inc.php /^ function apiVersion()$/;" f append lib/smarty/Smarty.class.php /^ function append($tpl_var, $value=null, $merge=false)$/;" f append_by_ref lib/smarty/Smarty.class.php /^ function append_by_ref($tpl_var, &$value, $merge=false)$/;" f -append_child lib/cas/domxml-php4-php5.php /^ function append_child($newnode) {return new php4DOMElement($this->myDOMNode->appendChild($newnode->myDOMNode),$this->myOwnerDocument);}$/;" f -append_sibling lib/cas/domxml-php4-php5.php /^ function append_sibling($newnode) {return new php4DOMElement($this->myDOMNode->parentNode->appendChild($newnode->myDOMNode),$this->myOwnerDocument);}$/;" f -applicable_formats blocks/html/block_html.php /^ function applicable_formats() {$/;" f -applicable_formats blocks/login/block_login.php /^ function applicable_formats() {$/;" f +applicable_formats blocks/admin/block_admin.php /^ function applicable_formats() {$/;" f +applicable_formats blocks/calendar_month/block_calendar_month.php /^ function applicable_formats() {$/;" f +applicable_formats blocks/calendar_upcoming/block_calendar_upcoming.php /^ function applicable_formats() {$/;" f +applicable_formats blocks/course_list/block_course_list.php /^ function applicable_formats() {$/;" f +applicable_formats blocks/course_summary/block_course_summary.php /^ function applicable_formats() {$/;" f applicable_formats blocks/moodleblock.class.php /^ function applicable_formats() {$/;" f -applicable_formats blocks/quiz_results/block_quiz_results.php /^ function applicable_formats() {$/;" f +applicable_formats blocks/news_items/block_news_items.php /^ function applicable_formats() {$/;" f +applicable_formats blocks/online_users/block_online_users.php /^ function applicable_formats() {$/;" f applicable_formats blocks/section_links/block_section_links.php /^ function applicable_formats() {$/;" f applicable_formats blocks/site_main_menu/block_site_main_menu.php /^ function applicable_formats() {$/;" f applicable_formats blocks/social_activities/block_social_activities.php /^ function applicable_formats() {$/;" f +appointment_add_instance mod/appointment/lib.php /^function appointment_add_instance($appointment) {$/;" f +appointment_cron mod/appointment/lib.php /^function appointment_cron () {$/;" f +appointment_delete_instance mod/appointment/lib.php /^function appointment_delete_instance($id) {$/;" f +appointment_grades mod/appointment/lib.php /^function appointment_grades($appointmentid) {$/;" f +appointment_print_recent_activity mod/appointment/lib.php /^function appointment_print_recent_activity($course, $isteacher, $timestart) {$/;" f +appointment_update_instance mod/appointment/lib.php /^function appointment_update_instance($appointment) {$/;" f +appointment_upgrade mod/appointment/db/mysql.php /^function appointment_upgrade($oldversion) {$/;" f +appointment_user_complete mod/appointment/lib.php /^function appointment_user_complete($course, $user, $mod, $appointment) {$/;" f +appointment_user_outline mod/appointment/lib.php /^function appointment_user_outline($course, $user, $mod, $appointment) {$/;" f area lib/graphlib.php /^function area($x_start, $y_start, $x_end, $y_end, $type, $colour, $offset) {$/;" f arr2html lib/adodb/tohtml.inc.php /^function arr2html(&$arr,$ztabhtml='',$zheaderarray='')$/;" f -arrange_categories mod/quiz/category.php /^ function arrange_categories($records) {$/;" f +array_diff_assoc calendar/lib.php /^ function array_diff_assoc($source, $diff) {$/;" f +arsc_getmessages mod/chat/gui_sockets/arscd.php /^function arsc_getmessages($chatuser, $groupid) {$/;" f +arsc_microtime mod/chat/gui_sockets/arscd.php /^function arsc_microtime()$/;" f +arsc_shutdown mod/chat/gui_push_js/chatmsg.php /^function arsc_shutdown()$/;" f +arsc_socket_write mod/chat/gui_sockets/arscd.php /^function arsc_socket_write(&$connection, $text) {$/;" f assertExtension lib/adodb/adodb-pear.inc.php /^ function assertExtension($name)$/;" f assign lib/smarty/Smarty.class.php /^ function assign($tpl_var, $value = null)$/;" f assign_by_ref lib/smarty/Smarty.class.php /^ function assign_by_ref($tpl_var, &$value)$/;" f @@ -1822,21 +1737,20 @@ assignment_count_real_submissions mod/assignment/lib.php /^function assignment_c assignment_cron mod/assignment/lib.php /^function assignment_cron () {$/;" f assignment_delete_instance mod/assignment/lib.php /^function assignment_delete_instance($id) {$/;" f assignment_delete_user_files mod/assignment/lib.php /^function assignment_delete_user_files($assignment, $user, $exception) {$/;" f -assignment_email_teachers mod/assignment/lib.php /^function assignment_email_teachers($course, $cm, $assignment, $submission) {$/;" f assignment_file_area mod/assignment/lib.php /^function assignment_file_area($assignment, $user) {$/;" f assignment_file_area_name mod/assignment/lib.php /^function assignment_file_area_name($assignment, $user) {$/;" f assignment_get_all_submissions mod/assignment/lib.php /^function assignment_get_all_submissions($assignment, $sort="", $dir="DESC") {$/;" f assignment_get_participants mod/assignment/lib.php /^function assignment_get_participants($assignmentid) {$/;" f assignment_get_recent_mod_activity mod/assignment/lib.php /^function assignment_get_recent_mod_activity(&$activities, &$index, $sincetime, $courseid, $assignment="0", $user="", $groupid="") {$/;" f assignment_get_submission mod/assignment/lib.php /^function assignment_get_submission($assignment, $user) {$/;" f -assignment_get_unmailed_submissions mod/assignment/lib.php /^function assignment_get_unmailed_submissions($starttime, $endtime) {$/;" f +assignment_get_unmailed_submissions mod/assignment/lib.php /^function assignment_get_unmailed_submissions($cutofftime) {$/;" f assignment_get_user_file mod/assignment/lib.php /^function assignment_get_user_file($assignment, $user) {$/;" f assignment_get_users_done mod/assignment/lib.php /^function assignment_get_users_done($assignment) {$/;" f assignment_grades mod/assignment/lib.php /^function assignment_grades($assignmentid) {$/;" f assignment_ids mod/assignment/backuplib.php /^ function assignment_ids ($course) {$/;" f assignment_log_info mod/assignment/lib.php /^function assignment_log_info($log) {$/;" f assignment_print_difference mod/assignment/lib.php /^function assignment_print_difference($time) {$/;" f -assignment_print_feedback mod/assignment/lib.php /^function assignment_print_feedback($course, $submission, $assignment) {$/;" f +assignment_print_feedback mod/assignment/lib.php /^function assignment_print_feedback($course, $submission) {$/;" f assignment_print_recent_activity mod/assignment/lib.php /^function assignment_print_recent_activity($course, $isteacher, $timestart) {$/;" f assignment_print_recent_mod_activity mod/assignment/lib.php /^function assignment_print_recent_mod_activity($activity, $course, $detail=false) {$/;" f assignment_print_submission mod/assignment/lib.php /^function assignment_print_submission($assignment, $user, $submission, $teachers, $grades) {$/;" f @@ -1851,6 +1765,7 @@ assignment_submission_ids_by_course mod/assignment/backuplib.php /^ function assignment_submissions_restore_mods mod/assignment/restorelib.php /^ function assignment_submissions_restore_mods($old_assignment_id, $new_assignment_id,$info,$restore) {$/;" f assignment_update_instance mod/assignment/lib.php /^function assignment_update_instance($assignment) {$/;" f assignment_upgrade mod/assignment/db/mysql.php /^function assignment_upgrade($oldversion) {$/;" f +assignment_upgrade mod/assignment/db/oci8po.php /^function assignment_upgrade($oldversion) {$/;" f assignment_upgrade mod/assignment/db/postgres7.php /^function assignment_upgrade($oldversion) {$/;" f assignment_user_complete mod/assignment/lib.php /^function assignment_user_complete($course, $user, $mod, $assignment) {$/;" f assignment_user_outline mod/assignment/lib.php /^function assignment_user_outline($course, $user, $mod, $assignment) {$/;" f @@ -1873,6 +1788,7 @@ attendance_print_header mod/attendance/viewall.php /^function attendance_print_h attendance_print_header mod/attendance/viewweek.php /^function attendance_print_header() {$/;" f attendance_print_pagenav mod/attendance/viewall.php /^function attendance_print_pagenav() {$/;" f attendance_print_pagenav mod/attendance/viewweek.php /^function attendance_print_pagenav() {$/;" f +attendance_print_recent_activity mod/attendance/lib.php /^function attendance_print_recent_activity($course, $isteacher, $timestart) {$/;" f attendance_restore_mods mod/attendance/restorelib.php /^ function attendance_restore_mods($mod,$restore) {$/;" f attendance_roll_ids_by_course mod/attendance/backuplib.php /^ function attendance_roll_ids_by_course ($course) {$/;" f attendance_roll_restore_mods mod/attendance/restorelib.php /^ function attendance_roll_restore_mods($attendance_id,$info,$restore) {$/;" f @@ -1885,72 +1801,40 @@ attendance_upgrade mod/attendance/db/postgres7.php /^function attendance_upgrade attendance_user_complete mod/attendance/lib.php /^function attendance_user_complete($course, $user, $mod, $attendance) {$/;" f attendance_user_outline mod/attendance/lib.php /^function attendance_user_outline($course, $user, $mod, $attendance) {$/;" f attr lib/editor/popups/dlg_ins_smile.php /^function attr(name, value) {$/;" f -attributes lib/cas/domxml-php4-php5.php /^ function attributes()$/;" f -authError lib/cas/client.php /^ function authError($failure,$cas_url,$no_response,$bad_response='',$cas_response='',$err_code='',$err_msg='')$/;" f auth_get_userinfo auth/db/lib.php /^function auth_get_userinfo($username){$/;" f -auth_get_userinfo auth/fc/lib.php /^function auth_get_userinfo($username){$/;" f auth_get_userinfo auth/ldap/lib.php /^function auth_get_userinfo($username){$/;" f -auth_get_userinfo auth/shibboleth/lib.php /^function auth_get_userinfo($username) {$/;" f -auth_get_userinfo_asobj auth/ldap/lib.php /^function auth_get_userinfo_asobj($username){$/;" f auth_get_userlist auth/ldap/lib.php /^function auth_get_userlist () {$/;" f -auth_get_users auth/ldap/lib.php /^function auth_get_users($filter='*', $dontlistcreated=false) {$/;" f -auth_iscreator auth/fc/lib.php /^function auth_iscreator($username=0) {$/;" f auth_iscreator auth/ldap/lib.php /^function auth_iscreator($username=0) {$/;" f auth_ldap_attributes auth/ldap/lib.php /^function auth_ldap_attributes (){$/;" f -auth_ldap_bulk_insert auth/ldap/lib.php /^function auth_ldap_bulk_insert($users){$/;" f -auth_ldap_connect auth/ldap/lib.php /^function auth_ldap_connect($binddn='',$bindpwd=''){$/;" f -auth_ldap_expirationtime2unix auth/ldap/lib.php /^function auth_ldap_expirationtime2unix ($time) {$/;" f -auth_ldap_find_userdn auth/ldap/lib.php /^function auth_ldap_find_userdn ($ldapconnection, $username){$/;" f -auth_ldap_get_entries auth/ldap/lib.php /^function auth_ldap_get_entries($conn, $searchresult){$/;" f +auth_ldap_bind auth/ldap/lib.php /^function auth_ldap_bind($ldap_connection){$/;" f +auth_ldap_connect auth/ldap/lib.php /^function auth_ldap_connect(){$/;" f +auth_ldap_find_userdn auth/ldap/lib.php /^function auth_ldap_find_userdn ($ldap_connection, $username){$/;" f auth_ldap_get_userlist auth/ldap/lib.php /^function auth_ldap_get_userlist($filter="*") {$/;" f -auth_ldap_getbinaryfields auth/ldap/lib.php /^function auth_ldap_getbinaryfields () {$/;" f -auth_ldap_getdefaults auth/ldap/lib.php /^function auth_ldap_getdefaults(){$/;" f -auth_ldap_init auth/ldap/lib.php /^function auth_ldap_init () {$/;" f -auth_ldap_isbinary auth/ldap/lib.php /^function auth_ldap_isbinary ($field) {$/;" f -auth_ldap_isgroupmember auth/ldap/lib.php /^function auth_ldap_isgroupmember ($username='', $groupdns='') {$/;" f -auth_ldap_suppported_usertypes auth/ldap/lib.php /^function auth_ldap_suppported_usertypes (){$/;" f -auth_ldap_unix2expirationtime auth/ldap/lib.php /^function auth_ldap_unix2expirationtime ($time) {$/;" f -auth_ldap_update_user_record auth/ldap/lib.php /^function auth_ldap_update_user_record($username, $updatekeys=false) {$/;" f -auth_password_expire auth/ldap/lib.php /^function auth_password_expire($username) {$/;" f -auth_shib_attributes auth/shibboleth/lib.php /^function auth_shib_attributes (){$/;" f -auth_sync_users auth/ldap/lib.php /^function auth_sync_users ($bulk_insert_records = 1000, $do_updates=1) {$/;" f auth_user_activate auth/ldap/lib.php /^function auth_user_activate ($username) {$/;" f auth_user_create auth/ldap/lib.php /^function auth_user_create ($userobject,$plainpass) {$/;" f auth_user_disable auth/ldap/lib.php /^function auth_user_disable ($username) {$/;" f auth_user_exists auth/ldap/lib.php /^function auth_user_exists ($username) {$/;" f auth_user_login auth/db/lib.php /^function auth_user_login ($username, $password) {$/;" f auth_user_login auth/email/lib.php /^function auth_user_login ($username, $password) {$/;" f -auth_user_login auth/fc/lib.php /^function auth_user_login ($username, $password) {$/;" f auth_user_login auth/imap/lib.php /^function auth_user_login ($username, $password) {$/;" f auth_user_login auth/ldap/lib.php /^function auth_user_login ($username, $password) {$/;" f auth_user_login auth/manual/lib.php /^function auth_user_login ($username, $password) {$/;" f auth_user_login auth/nntp/lib.php /^function auth_user_login ($username, $password) {$/;" f auth_user_login auth/none/lib.php /^function auth_user_login ($username, $password) {$/;" f -auth_user_login auth/pam/lib.php /^function auth_user_login ($username, $password) {$/;" f auth_user_login auth/pop3/lib.php /^function auth_user_login ($username, $password) {$/;" f -auth_user_login auth/shibboleth/lib.php /^function auth_user_login ($username, $password) {$/;" f -auth_user_update auth/ldap/lib.php /^function auth_user_update($olduser, $newuser) {$/;" f -auth_user_update_password auth/ldap/lib.php /^function auth_user_update_password($username, $newpassword) {$/;" f -authenticate lib/cas/CAS.php /^ function authenticate()$/;" f -authenticateIfNeeded lib/cas/CAS.php /^ function authenticateIfNeeded()$/;" f -authenticateIfNeeded lib/cas/client.php /^ function authenticateIfNeeded()$/;" f authenticate_user_login lib/moodlelib.php /^function authenticate_user_login($username, $password) {$/;" f -backtrace lib/cas/CAS.php /^ function backtrace()$/;" f +autowindow mod/scorm/details.php /^ function autowindow() {$/;" f backup_assignment_files mod/assignment/backuplib.php /^ function backup_assignment_files($bf,$preferences) {$/;" f backup_assignment_submissions mod/assignment/backuplib.php /^ function backup_assignment_submissions ($bf,$preferences,$assignment) {$/;" f backup_attendance_roll mod/attendance/backuplib.php /^ function backup_attendance_roll ($bf,$preferences,$attendance) {$/;" f backup_chat_messages mod/chat/backuplib.php /^ function backup_chat_messages ($bf,$preferences,$chat) {$/;" f backup_choice_answers mod/choice/backuplib.php /^ function backup_choice_answers ($bf,$preferences,$choice) {$/;" f -backup_choice_options mod/choice/backuplib.php /^ function backup_choice_options ($bf,$preferences,$choice) {$/;" f backup_close_xml backup/backuplib.php /^ function backup_close_xml($backup_file) {$/;" f backup_copy_course_files backup/backuplib.php /^ function backup_copy_course_files ($preferences) {$/;" f backup_copy_dir backup/lib.php /^ function backup_copy_dir($from_file,$to_file) {$/;" f backup_copy_file backup/lib.php /^ function backup_copy_file ($from_file,$to_file) {$/;" f -backup_copy_group_files backup/backuplib.php /^ function backup_copy_group_files ($preferences) {$/;" f backup_copy_user_files backup/backuplib.php /^ function backup_copy_user_files ($preferences) {$/;" f -backup_course_blocks backup/backuplib.php /^ function backup_course_blocks ($bf,$preferences) {$/;" f backup_course_end backup/backuplib.php /^ function backup_course_end ($bf,$preferences) {$/;" f -backup_course_metacourse backup/backuplib.php /^ function backup_course_metacourse ($bf,$preferences) {$/;" f backup_course_modules backup/backuplib.php /^ function backup_course_modules ($bf,$preferences,$section) {$/;" f backup_course_sections backup/backuplib.php /^ function backup_course_sections ($bf,$preferences) {$/;" f backup_course_start backup/backuplib.php /^ function backup_course_start ($bf,$preferences) {$/;" f @@ -1976,13 +1860,12 @@ backup_forum_discussions mod/forum/backuplib.php /^ function backup_forum_dis backup_forum_files mod/forum/backuplib.php /^ function backup_forum_files($bf,$preferences) {$/;" f backup_forum_posts mod/forum/backuplib.php /^ function backup_forum_posts ($bf,$preferences,$discussion) {$/;" f backup_forum_ratings mod/forum/backuplib.php /^ function backup_forum_ratings ($bf,$preferences,$post) {$/;" f -backup_forum_read mod/forum/backuplib.php /^ function backup_forum_read ($bf,$preferences,$forum) { $/;" f backup_forum_subscriptions mod/forum/backuplib.php /^ function backup_forum_subscriptions ($bf,$preferences,$forum) { $/;" f backup_general_info backup/backuplib.php /^ function backup_general_info ($bf,$preferences) {$/;" f backup_get_all_users backup/backuplib.php /^ function backup_get_all_users() {$/;" f backup_get_config backup/lib.php /^ function backup_get_config() {$/;" f backup_get_enrolled_users backup/backuplib.php /^ function backup_get_enrolled_users ($courseid) {$/;" f -backup_get_needed_users backup/backuplib.php /^ function backup_get_needed_users ($courseid, $includemessages=false) {$/;" f +backup_get_needed_users backup/backuplib.php /^ function backup_get_needed_users ($courseid) {$/;" f backup_getid backup/lib.php /^ function backup_getid ($backup_unique_code, $table, $old_id) {$/;" f backup_glossary_aliases mod/glossary/backuplib.php /^ function backup_glossary_aliases ($bf,$preferences,$entryid) {$/;" f backup_glossary_categories mod/glossary/backuplib.php /^ function backup_glossary_categories ($bf,$preferences,$glossary, $userinfo) {$/;" f @@ -1996,14 +1879,9 @@ backup_groups_members_info backup/backuplib.php /^ function backup_groups_mem backup_journal_entries mod/journal/backuplib.php /^ function backup_journal_entries ($bf,$preferences,$journal) {$/;" f backup_lesson_answers mod/lesson/backuplib.php /^ function backup_lesson_answers($bf,$preferences,$pageno) {$/;" f backup_lesson_attempts mod/lesson/backuplib.php /^ function backup_lesson_attempts ($bf,$preferences,$answerid) {$/;" f -backup_lesson_branch mod/lesson/backuplib.php /^ function backup_lesson_branch($bf,$preferences,$pageno) {$/;" f -backup_lesson_default mod/lesson/backuplib.php /^ function backup_lesson_default ($bf,$preferences) {$/;" f backup_lesson_grades mod/lesson/backuplib.php /^ function backup_lesson_grades ($bf,$preferences,$lessonid) {$/;" f -backup_lesson_high_scores mod/lesson/backuplib.php /^ function backup_lesson_high_scores($bf, $preferences, $lessonid) {$/;" f backup_lesson_pages mod/lesson/backuplib.php /^ function backup_lesson_pages ($bf, $preferences, $lessonid) {$/;" f -backup_lesson_timer mod/lesson/backuplib.php /^ function backup_lesson_timer ($bf,$preferences,$lessonid) {$/;" f backup_log_info backup/backuplib.php /^ function backup_log_info($bf,$preferences) {$/;" f -backup_messages backup/backuplib.php /^ function backup_messages ($bf,$preferences) {$/;" f backup_module backup/backuplib.php /^ function backup_module($bf,$preferences,$module) {$/;" f backup_modules_end backup/backuplib.php /^ function backup_modules_end ($bf,$preferences) {$/;" f backup_modules_start backup/backuplib.php /^ function backup_modules_start ($bf,$preferences) {$/;" f @@ -2012,100 +1890,62 @@ backup_putid backup/lib.php /^ function backup_putid ($backup_unique_code, $t backup_quiz_attempts mod/quiz/backuplib.php /^ function backup_quiz_attempts ($bf,$preferences,$quiz) {$/;" f backup_quiz_grades mod/quiz/backuplib.php /^ function backup_quiz_grades ($bf,$preferences,$quiz) {$/;" f backup_quiz_question_grades mod/quiz/backuplib.php /^ function backup_quiz_question_grades ($bf,$preferences,$quiz) {$/;" f -backup_quiz_question_versions mod/quiz/backuplib.php /^ function backup_quiz_question_versions ($bf,$preferences,$quiz) {$/;" f backup_quiz_responses mod/quiz/backuplib.php /^ function backup_quiz_responses ($bf,$preferences,$attempt) {$/;" f backup_required_functions backup/lib.php /^ function backup_required_functions() {$/;" f backup_scales_info backup/backuplib.php /^ function backup_scales_info($bf,$preferences) {$/;" f backup_scorm_files mod/scorm/backuplib.php /^ function backup_scorm_files($bf,$preferences) {$/;" f +backup_scorm_sco_users mod/scorm/backuplib.php /^ function backup_scorm_sco_users ($bf,$preferences,$scorm) {$/;" f backup_scorm_scoes mod/scorm/backuplib.php /^ function backup_scorm_scoes ($bf,$preferences,$scorm) {$/;" f -backup_scorm_scoes_track mod/scorm/backuplib.php /^ function backup_scorm_scoes_track ($bf,$preferences,$scorm) {$/;" f backup_set_config backup/lib.php /^ function backup_set_config($name, $value) {$/;" f backup_survey_analysis mod/survey/backuplib.php /^ function backup_survey_analysis ($bf,$preferences,$survey) {$/;" f backup_survey_answers mod/survey/backuplib.php /^ function backup_survey_answers ($bf,$preferences,$survey) {$/;" f -backup_to_restore_array backup/restorelib.php /^ function backup_to_restore_array($backup,$k=0) {$/;" f backup_todb backup/lib.php /^ function backup_todb ($data) {$/;" f backup_upgrade backup/db/mysql.php /^function backup_upgrade($oldversion=0) {$/;" f backup_upgrade backup/db/postgres7.php /^function backup_upgrade($oldversion=0) {$/;" f backup_user_info backup/backuplib.php /^ function backup_user_info ($bf,$preferences) {$/;" f backup_wiki_entries mod/wiki/backuplib.php /^ function backup_wiki_entries ($bf,$preferences,$wiki, $userinfo) {$/;" f backup_wiki_files mod/wiki/backuplib.php /^ function backup_wiki_files($bf,$preferences) {$/;" f -backup_wiki_pages mod/wiki/backuplib.php /^ function backup_wiki_pages ($bf,$preferences,$entryid) {$/;" f +backup_wiki_pages mod/wiki/backuplib.php /^ function backup_wiki_pages ($bf,$preferences,$entryid) {$/;" f backup_workshop_assessments mod/workshop/backuplib.php /^ function backup_workshop_assessments ($bf,$preferences,$workshop,$submission) {$/;" f backup_workshop_comments mod/workshop/backuplib.php /^ function backup_workshop_comments ($bf,$preferences,$workshop,$assessmentid) {$/;" f backup_workshop_elements mod/workshop/backuplib.php /^ function backup_workshop_elements ($bf,$preferences,$workshop) {$/;" f backup_workshop_files mod/workshop/backuplib.php /^ function backup_workshop_files($bf,$preferences) {$/;" f backup_workshop_grades mod/workshop/backuplib.php /^ function backup_workshop_grades ($bf,$preferences,$workshop,$assessmentid) {$/;" f backup_workshop_rubrics mod/workshop/backuplib.php /^ function backup_workshop_rubrics ($bf,$preferences,$workshop,$elementno) {$/;" f -backup_workshop_stockcomments mod/workshop/backuplib.php /^ function backup_workshop_stockcomments ($bf,$preferences,$workshop,$elementid) {$/;" f backup_workshop_submissions mod/workshop/backuplib.php /^ function backup_workshop_submissions ($bf,$preferences,$workshop) {$/;" f backup_zip backup/backuplib.php /^ function backup_zip ($preferences) {$/;" f bar lib/graphlib.php /^function bar($x, $y, $type, $size, $colour, $offset, $index, $yoffset) {$/;" f -begin_sql lib/datalib.php /^function begin_sql() {$/;" f -blackboard_convert backup/bb/restore_bb.php /^function blackboard_convert($dir){$/;" f -block_activity_modules blocks/activity_modules/block_activity_modules.php /^class block_activity_modules extends block_list {$/;" c -block_admin blocks/admin/block_admin.php /^class block_admin extends block_list {$/;" c -block_base blocks/moodleblock.class.php /^ function block_base() {$/;" f -block_base blocks/moodleblock.class.php /^class block_base {$/;" c -block_calendar_month blocks/calendar_month/block_calendar_month.php /^class block_calendar_month extends block_base {$/;" c -block_calendar_upcoming blocks/calendar_upcoming/block_calendar_upcoming.php /^class block_calendar_upcoming extends block_base {$/;" c -block_course_list blocks/course_list/block_course_list.php /^class block_course_list extends block_list {$/;" c -block_course_summary blocks/course_summary/block_course_summary.php /^class block_course_summary extends block_base {$/;" c -block_glossary_random blocks/glossary_random/block_glossary_random.php /^class block_glossary_random extends block_base {$/;" c -block_html blocks/html/block_html.php /^class block_html extends block_base {$/;" c -block_instance lib/blocklib.php /^function block_instance($blockname, $instance = NULL) {$/;" f -block_list blocks/moodleblock.class.php /^class block_list extends block_base {$/;" c +block_action lib/blocklib.php /^function block_action(&$course, &$leftblocks, &$rightblocks, $blockaction, $blockid) {$/;" f +block_find lib/blocklib.php /^function block_find($blockid, $leftblocks, $rightblocks) {$/;" f +block_get_id_by_name lib/blocklib.php /^function block_get_id_by_name ($blockname) {$/;" f +block_get_name_by_id lib/blocklib.php /^function block_get_name_by_id ($blockid) {$/;" f +block_have_active lib/blocklib.php /^function block_have_active($array) {$/;" f +block_instance lib/blocklib.php /^function block_instance($blockname, $argument) {$/;" f block_load_class lib/blocklib.php /^function block_load_class($blockname) {$/;" f -block_login blocks/login/block_login.php /^class block_login extends block_base {$/;" c -block_messages blocks/messages/block_messages.php /^class block_messages extends block_base {$/;" c block_method_result lib/blocklib.php /^function block_method_result($blockname, $method) {$/;" f -block_news_items blocks/news_items/block_news_items.php /^class block_news_items extends block_base {$/;" c -block_nuke blocks/moodleblock.class.php /^class block_nuke extends block_base {$/;" c -block_online_users blocks/online_users/block_online_users.php /^class block_online_users extends block_base {$/;" c -block_participants blocks/participants/block_participants.php /^class block_participants extends block_list {$/;" c -block_quiz_results blocks/quiz_results/block_quiz_results.php /^class block_quiz_results extends block_base {$/;" c -block_recent_activity blocks/recent_activity/block_recent_activity.php /^class block_recent_activity extends block_base {$/;" c -block_rss_client blocks/rss_client/block_rss_client.php /^class block_rss_client extends block_base {$/;" c -block_rss_client_upgrade blocks/rss_client/db/mysql.php /^function block_rss_client_upgrade($oldversion) {$/;" f -block_rss_client_upgrade blocks/rss_client/db/postgres7.php /^function block_rss_client_upgrade($oldversion) {$/;" f -block_search_forums blocks/search_forums/block_search_forums.php /^class block_search_forums extends block_base {$/;" c -block_section_links blocks/section_links/block_section_links.php /^class block_section_links extends block_base {$/;" c -block_site_main_menu blocks/site_main_menu/block_site_main_menu.php /^class block_site_main_menu extends block_list {$/;" c -block_social_activities blocks/social_activities/block_social_activities.php /^class block_social_activities extends block_list {$/;" c -blocks_default_position blocks/pagedemo.php /^ function blocks_default_position() {$/;" f -blocks_default_position lib/pagelib.php /^ function blocks_default_position() {$/;" f -blocks_delete_instance lib/blocklib.php /^function blocks_delete_instance($instance) {$/;" f -blocks_execute_action lib/blocklib.php /^function blocks_execute_action($page, &$pageblocks, $blockaction, $instanceorid) {$/;" f -blocks_execute_repositioning lib/blocklib.php /^function blocks_execute_repositioning(&$instance, $newpos, $newweight) {$/;" f -blocks_execute_url_action lib/blocklib.php /^function blocks_execute_url_action(&$PAGE, &$pageblocks) {$/;" f -blocks_find_block lib/blocklib.php /^function blocks_find_block($blockid, $blocksarray) {$/;" f -blocks_find_instance lib/blocklib.php /^function blocks_find_instance($instanceid, $blocksarray) {$/;" f -blocks_get_by_page lib/blocklib.php /^function blocks_get_by_page($page) {$/;" f -blocks_get_default lib/pagelib.php /^ function blocks_get_default() {$/;" f -blocks_get_missing lib/blocklib.php /^function blocks_get_missing(&$page, &$pageblocks) {$/;" f -blocks_get_positions blocks/pagedemo.php /^ function blocks_get_positions() {$/;" f -blocks_get_positions lib/pagelib.php /^ function blocks_get_positions() {$/;" f -blocks_get_record lib/blocklib.php /^function blocks_get_record($blockid = NULL, $invalidate = false) {$/;" f -blocks_have_content lib/blocklib.php /^function blocks_have_content(&$pageblocks, $position) {$/;" f -blocks_move_position blocks/pagedemo.php /^ function blocks_move_position(&$instance, $move) {$/;" f -blocks_move_position lib/pagelib.php /^ function blocks_move_position(&$instance, $move) {$/;" f -blocks_name_allowed_in_format lib/blocklib.php /^function blocks_name_allowed_in_format($name, $pageformat) {$/;" f -blocks_preferred_width lib/blocklib.php /^function blocks_preferred_width(&$instances) {$/;" f -blocks_print_adminblock lib/blocklib.php /^function blocks_print_adminblock(&$page, &$pageblocks) {$/;" f -blocks_print_group lib/blocklib.php /^function blocks_print_group(&$page, &$pageblocks, $position) {$/;" f -blocks_remove_inappropriate lib/blocklib.php /^function blocks_remove_inappropriate($page) {$/;" f -blocks_repopulate_page lib/blocklib.php /^function blocks_repopulate_page($page) {$/;" f -blocks_setup lib/blocklib.php /^function blocks_setup(&$PAGE) {$/;" f +block_print_blocks_admin lib/blocklib.php /^function block_print_blocks_admin(&$course, $missingblocks) {$/;" f +blocks_get_block_ids lib/blocklib.php /^function blocks_get_block_ids ($blockinfo) {$/;" f +blocks_get_block_names lib/blocklib.php /^function blocks_get_block_names ($blockinfo) {$/;" f +blocks_get_courses_using_block_by_id lib/blocklib.php /^function blocks_get_courses_using_block_by_id($blockid) {$/;" f +blocks_get_default_blocks lib/blocklib.php /^function blocks_get_default_blocks ($courseid = NULL, $blocknames="") {$/;" f +blocks_preferred_width lib/blocklib.php /^function blocks_preferred_width($blockarray, $blockinfos) {$/;" f +blocks_update_every_block_by_id lib/blocklib.php /^function blocks_update_every_block_by_id($blockid,$action) {$/;" f blocks_upgrade blocks/db/mysql.php /^function blocks_upgrade($oldversion=0) {$/;" f blocks_upgrade blocks/db/postgres7.php /^function blocks_upgrade($oldversion=0) {$/;" f -bounded_number lib/moodlelib.php /^function bounded_number($min, $value, $max) {$/;" f +blocks_used lib/blocklib.php /^function blocks_used($blocks = NULL, $records = NULL) {$/;" f +brainstorm_add_instance mod/brainstorm/lib.php /^function brainstorm_add_instance($brainstorm) {$/;" f +brainstorm_delete_instance mod/brainstorm/lib.php /^function brainstorm_delete_instance($id) {$/;" f +brainstorm_get_brainstorm mod/brainstorm/lib.php /^function brainstorm_get_brainstorm($brainstormid) {$/;" f +brainstorm_get_participants mod/brainstorm/lib.php /^function brainstorm_get_participants($brainstormid) {$/;" f +brainstorm_update_instance mod/brainstorm/lib.php /^function brainstorm_update_instance($brainstorm) {$/;" f +brainstorm_upgrade mod/brainstorm/db/mysql.php /^function brainstorm_upgrade($oldversion) {$/;" f +brainstorm_user_complete mod/brainstorm/lib.php /^function brainstorm_user_complete($course, $user, $mod, $brainstorm) {$/;" f +brainstorm_user_outline mod/brainstorm/lib.php /^function brainstorm_user_outline($course, $user, $mod, $brainstorm) {$/;" f break_up_long_words lib/weblib.php /^function break_up_long_words($string, $maxsize=20, $cutchar=' ') {$/;" f buildQuery lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function buildQuery( $data = NULL ) {$/;" f buildQuery lib/adodb/adodb-xmlschema.inc.php /^ function buildQuery( $sql = NULL ) {$/;" f -build_edit_table_body mod/quiz/category.php /^ function build_edit_table_body($categories, $courses, $depth = 0) {$/;" f -button_to_popup_window lib/weblib.php /^function button_to_popup_window ($url, $name='popup', $linkname='click here',$/;" f -calculate_user_dst_table lib/moodlelib.php /^function calculate_user_dst_table($from_year = NULL, $to_year = NULL) {$/;" f +button_to_popup_window lib/weblib.php /^function button_to_popup_window ($url, $name="popup", $linkname="click here",$/;" f calendar_add_event_allowed calendar/event.php /^function calendar_add_event_allowed($courseid, $groupid, $userid) {$/;" f -calendar_add_event_metadata calendar/lib.php /^function calendar_add_event_metadata($event) {$/;" f calendar_add_month calendar/lib.php /^function calendar_add_month($month, $year) {$/;" f calendar_course_filter_selector calendar/view.php /^function calendar_course_filter_selector($getvars = '') {$/;" f calendar_day_representation calendar/lib.php /^function calendar_day_representation($tstamp, $now = false, $usecommonwords = true) {$/;" f @@ -2113,27 +1953,26 @@ calendar_days_in_month calendar/lib.php /^function calendar_days_in_month($month calendar_edit_event_allowed calendar/lib.php /^function calendar_edit_event_allowed($event) {$/;" f calendar_events_by_day calendar/lib.php /^function calendar_events_by_day($events, $month, $year, &$eventsbyday, &$durationbyday, &$typesbyday) {$/;" f calendar_filter_controls calendar/lib.php /^function calendar_filter_controls($type, $vars = NULL, $course = NULL) {$/;" f -calendar_format_event_time calendar/lib.php /^function calendar_format_event_time($event, $now, $morehref, $usecommonwords = true) {$/;" f calendar_get_allowed_types calendar/event.php /^function calendar_get_allowed_types(&$allowed) {$/;" f calendar_get_course_cached calendar/lib.php /^function calendar_get_course_cached(&$coursecache, $courseid) {$/;" f calendar_get_default_courses calendar/lib.php /^function calendar_get_default_courses($ignoreref = false) {$/;" f -calendar_get_filters_status calendar/lib.php /^function calendar_get_filters_status() {$/;" f calendar_get_link_href calendar/lib.php /^function calendar_get_link_href($linkbase, $d, $m, $y) {$/;" f calendar_get_link_tag calendar/lib.php /^function calendar_get_link_tag($text, $linkbase, $d, $m, $y) {$/;" f calendar_get_mini calendar/lib.php /^function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_year = false) {$/;" f -calendar_get_module_cached calendar/lib.php /^function calendar_get_module_cached(&$coursecache, $modulename, $instance) {$/;" f -calendar_get_sideblock_upcoming calendar/lib.php /^function calendar_get_sideblock_upcoming($events, $linkhref = NULL) {$/;" f +calendar_get_module_cached calendar/lib.php /^function calendar_get_module_cached(&$coursecache, $modulename, $instance, $courseid) {$/;" f +calendar_get_sideblock_upcoming calendar/lib.php /^function calendar_get_sideblock_upcoming($courses, $groups, $users, $daysinfuture, $maxevents) {$/;" f +calendar_get_tz_offset calendar/lib.php /^function calendar_get_tz_offset() {$/;" f calendar_get_upcoming calendar/lib.php /^function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxevents, $fromtime=0) {$/;" f -calendar_human_readable_dst calendar/lib.php /^function calendar_human_readable_dst($preset) {$/;" f +calendar_gmmktime_check calendar/lib.php /^function calendar_gmmktime_check($m, $d, $y, $default = false) {$/;" f +calendar_mktime_check calendar/lib.php /^function calendar_mktime_check($m, $d, $y, $default = false) {$/;" f calendar_month_upgrade blocks/calendar_month/db/mysql.php /^function calendar_month_upgrade($oldversion=0) {$/;" f calendar_month_upgrade blocks/calendar_month/db/postgres7.php /^function calendar_month_upgrade($oldversion=0) {$/;" f calendar_overlib_html calendar/lib.php /^function calendar_overlib_html() {$/;" f +calendar_preferences_array calendar/lib.php /^function calendar_preferences_array() {$/;" f calendar_preferences_button calendar/lib.php /^function calendar_preferences_button() {$/;" f -calendar_print_event calendar/lib.php /^function calendar_print_event($event) {$/;" f -calendar_print_month_selector calendar/lib.php /^function calendar_print_month_selector($name, $selected) {$/;" f +calendar_print_event calendar/view.php /^function calendar_print_event($event) {$/;" f calendar_session_vars calendar/lib.php /^function calendar_session_vars() {$/;" f calendar_set_filters calendar/lib.php /^function calendar_set_filters(&$courses, &$group, &$user, $courseeventsfrom = NULL, $groupeventsfrom = NULL, $ignorefilters = false) {$/;" f -calendar_set_filters_status calendar/lib.php /^function calendar_set_filters_status($packed_bitfield) {$/;" f calendar_set_referring_course calendar/lib.php /^function calendar_set_referring_course($courseid) {$/;" f calendar_show_day calendar/view.php /^function calendar_show_day($d, $m, $y, $courses, $groups, $users) {$/;" f calendar_show_month_detailed calendar/view.php /^function calendar_show_month_detailed($m, $y, $courses, $groups, $users) {$/;" f @@ -2145,34 +1984,31 @@ calendar_top_controls calendar/lib.php /^function calendar_top_controls($type, $ calendar_upcoming_upgrade blocks/calendar_upcoming/db/mysql.php /^function calendar_upcoming_upgrade($oldversion=0) {$/;" f calendar_upcoming_upgrade blocks/calendar_upcoming/db/postgres7.php /^function calendar_upcoming_upgrade($oldversion=0) {$/;" f calendar_wday_name calendar/lib.php /^function calendar_wday_name($englishname) {$/;" f -callback lib/cas/client.php /^ function callback()$/;" f -can_use_html_editor lib/moodlelib.php /^ function can_use_html_editor() {$/;" f -can_use_richtext_editor lib/moodlelib.php /^ function can_use_richtext_editor() {$/;" f +can_use_html_editor lib/moodlelib.php /^function can_use_html_editor() {$/;" f +can_use_richtext_editor lib/moodlelib.php /^function can_use_richtext_editor() {$/;" f cancel lib/editor/popups/dlg_ins_char.php /^function cancel() {$/;" f cancel lib/editor/popups/dlg_ins_smile.php /^function cancel() {$/;" f -cas_authenticate_user_login auth/cas/lib.php /^function cas_authenticate_user_login ($username, $password) {$/;" f -cas_automatic_authenticate auth/cas/lib.php /^function cas_automatic_authenticate ($user="") {$/;" f -cas_ldap_auth_user_login auth/cas/lib.php /^function cas_ldap_auth_user_login ($username, $password) {$/;" f censor_filter filter/censor/filter.php /^function censor_filter($courseid, $text) {$/;" f center_horizontally lib/excel/Worksheet.php /^ function center_horizontally($center = 1)$/;" f center_vertically lib/excel/Worksheet.php /^ function center_vertically($center = 1)$/;" f +changeSco mod/scorm/scormAPI.php /^function changeSco(direction) {$/;" f changecolor mod/quiz/jstimer.php /^function changecolor(col) {$/;" f characterData backup/restorelib.php /^ function characterData($parser, $data) {$/;" f +characterData filter/multilang/filter.php /^ function characterData($parser, $data) {$/;" f chat_add_instance mod/chat/lib.php /^function chat_add_instance($chat) {$/;" f chat_backup_mods mod/chat/backuplib.php /^ function chat_backup_mods($bf,$preferences) {$/;" f +chat_browser_detect mod/chat/lib.php /^function chat_browser_detect($HTTP_USER_AGENT) {$/;" f chat_check_backup_mods mod/chat/backuplib.php /^ function chat_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f chat_cron mod/chat/lib.php /^function chat_cron () {$/;" f chat_delete_instance mod/chat/lib.php /^function chat_delete_instance($id) {$/;" f chat_delete_old_users mod/chat/lib.php /^function chat_delete_old_users() {$/;" f -chat_empty_connection mod/chat/chatd.php /^function chat_empty_connection() {$/;" f -chat_force_language mod/chat/lib.php /^function chat_force_language($lang) {$/;" f -chat_format_message mod/chat/lib.php /^function chat_format_message($message, $courseid, $currentuser) {$/;" f -chat_format_message_manually mod/chat/lib.php /^function chat_format_message_manually($message, $courseid, $sender, $currentuser) {$/;" f +chat_display_version mod/chat/lib.php /^function chat_display_version($version, $browser)$/;" f +chat_format_message mod/chat/lib.php /^function chat_format_message($message, $courseid=0) {$/;" f chat_get_latest_message mod/chat/lib.php /^function chat_get_latest_message($chatid, $groupid=0) {$/;" f chat_get_participants mod/chat/lib.php /^function chat_get_participants($chatid, $groupid=0) {$/;" f chat_get_users mod/chat/lib.php /^function chat_get_users($chatid, $groupid=0) {$/;" f chat_ids mod/chat/backuplib.php /^ function chat_ids ($course) {$/;" f -chat_login_user mod/chat/lib.php /^function chat_login_user($chatid, $version, $groupid, $course) {$/;" f +chat_login_user mod/chat/lib.php /^function chat_login_user($chatid, $version="header_js", $groupid=0) {$/;" f chat_message_ids_by_course mod/chat/backuplib.php /^ function chat_message_ids_by_course ($course) {$/;" f chat_messages_restore_mods mod/chat/restorelib.php /^ function chat_messages_restore_mods($old_chat_id, $new_chat_id,$info,$restore) {$/;" f chat_print_recent_activity mod/chat/lib.php /^function chat_print_recent_activity($course, $isteacher, $timestart) {$/;" f @@ -2188,39 +2024,38 @@ chat_user_complete mod/chat/lib.php /^function chat_user_complete($course, $user chat_user_outline mod/chat/lib.php /^function chat_user_outline($course, $user, $mod, $chat) {$/;" f check_and_create_backup_dir backup/lib.php /^ function check_and_create_backup_dir($backup_unique_code) {$/;" f check_and_create_course_files_dir backup/backuplib.php /^ function check_and_create_course_files_dir($backup_unique_code) {$/;" f -check_and_create_group_files_dir backup/backuplib.php /^ function check_and_create_group_files_dir($backup_unique_code) {$/;" f check_and_create_moddata_dir backup/backuplib.php /^ function check_and_create_moddata_dir($backup_unique_code) {$/;" f check_and_create_user_files_dir backup/backuplib.php /^ function check_and_create_user_files_dir($backup_unique_code) {$/;" f -check_before_renaming lib/uploadlib.php /^ function check_before_renaming($destination, $nametocheck, $file) {$/;" f -check_browser_version lib/moodlelib.php /^ function check_browser_version($brand='MSIE', $version=5.5) {$/;" f +check_bool mod/questionnaire/phpESP/admin/test.php /^function check_bool($have, $want)$/;" f +check_browser_version lib/moodlelib.php /^function check_browser_version($brand="MSIE", $version=5.5) {$/;" f check_dir_exists backup/lib.php /^ function check_dir_exists($dir,$create=false) {$/;" f check_entry enrol/database/enrol.php /^function check_entry($form, $course) {$/;" f check_entry enrol/enrol.class.php /^function check_entry($form, $course) {$/;" f check_entry enrol/flatfile/enrol.php /^function check_entry($form, $course) {$/;" f -check_entry enrol/ldap/enrol.php /^function check_entry($form, $course) {$/;" f -check_for_restricted_user lib/moodlelib.php /^function check_for_restricted_user($username=NULL, $redirect='') {$/;" f +check_entry enrol/paypal/enrol.php /^function check_entry($form, $course) {$/;" f +check_extension mod/questionnaire/phpESP/admin/test.php /^function check_extension($ext)$/;" f +check_for_restricted_user lib/moodlelib.php /^function check_for_restricted_user($username=NULL, $redirect="") {$/;" f +check_gd_version lib/compatible.php /^function check_gd_version() {$/;" f check_gd_version lib/moodlelib.php /^function check_gd_version() {$/;" f -check_group_entry enrol/enrol.class.php /^function check_group_entry ($courseid, $password) {$/;" f -check_language lib/speller/server-scripts/spellchecker.php /^function check_language($cmd) {$/;" f -check_memory_limit install.php /^function check_memory_limit() {$/;" f -check_php_version lib/moodlelib.php /^function check_php_version($version='4.1.0') {$/;" f +check_php_version lib/compatible.php /^function check_php_version($version="4.1.0") {$/;" f +check_php_version lib/moodlelib.php /^function check_php_version($version="4.1.0") {$/;" f +check_string mod/questionnaire/phpESP/admin/test.php /^function check_string($have, $want)$/;" f +check_version mod/questionnaire/phpESP/admin/test.php /^function check_version()$/;" f +checkall lib/javascript.php /^function checkall() {$/;" f checked lib/weblib.php /^function checked(&$var, $set_value = 1, $unset_value = 0) {$/;" f checkform mod/survey/view.php /^function checkform() {$/;" f checkvalue lib/editor/popups/insert_image.php /^function checkvalue(elm,formname) {$/;" f checkvalue lib/editor/popups/link.php /^function checkvalue(elm,formname) {$/;" f -child_nodes lib/cas/domxml-php4-php5.php /^ function child_nodes()$/;" f -children lib/cas/domxml-php4-php5.php /^ function children() {return $this->child_nodes();}$/;" f choice_add_instance mod/choice/lib.php /^function choice_add_instance($choice) {$/;" f choice_answer_ids_by_course mod/choice/backuplib.php /^ function choice_answer_ids_by_course ($course) {$/;" f -choice_answers_restore_mods mod/choice/restorelib.php /^ function choice_answers_restore_mods($choiceid,$info,$restore) {$/;" f +choice_answers_restore_mods mod/choice/restorelib.php /^ function choice_answers_restore_mods($choice_id,$info,$restore) {$/;" f choice_backup_mods mod/choice/backuplib.php /^ function choice_backup_mods($bf,$preferences) {$/;" f choice_check_backup_mods mod/choice/backuplib.php /^ function choice_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f choice_delete_instance mod/choice/lib.php /^function choice_delete_instance($id) {$/;" f +choice_get_answer mod/choice/lib.php /^function choice_get_answer($choice, $code) {$/;" f choice_get_choice mod/choice/lib.php /^function choice_get_choice($choiceid) {$/;" f -choice_get_option_text mod/choice/lib.php /^function choice_get_option_text($choice, $id) {$/;" f choice_get_participants mod/choice/lib.php /^function choice_get_participants($choiceid) {$/;" f choice_ids mod/choice/backuplib.php /^ function choice_ids ($course) {$/;" f -choice_options_restore_mods mod/choice/restorelib.php /^function choice_options_restore_mods($choiceid,$info,$restore) {$/;" f choice_restore_logs mod/choice/restorelib.php /^ function choice_restore_logs($restore,$log) {$/;" f choice_restore_mods mod/choice/restorelib.php /^ function choice_restore_mods($mod,$restore) {$/;" f choice_update_instance mod/choice/lib.php /^function choice_update_instance($choice) {$/;" f @@ -2229,19 +2064,8 @@ choice_upgrade mod/choice/db/oci8po.php /^function choice_upgrade($oldversion) { choice_upgrade mod/choice/db/postgres7.php /^function choice_upgrade($oldversion) {$/;" f choice_user_complete mod/choice/lib.php /^function choice_user_complete($course, $user, $mod, $choice) {$/;" f choice_user_outline mod/choice/lib.php /^function choice_user_outline($course, $user, $mod, $choice) {$/;" f -choose_bb_xsl backup/bb/restore_bb.php /^function choose_bb_xsl($manifest){$/;" f -choose_from_menu lib/weblib.php /^function choose_from_menu ($options, $name, $selected='', $nothing='choose', $script='', $nothingvalue='0', $return=false, $disabled=false) {$/;" f -clam_change_log lib/uploadlib.php /^function clam_change_log($oldpath, $newpath, $update=true) {$/;" f -clam_handle_infected_file lib/uploadlib.php /^function clam_handle_infected_file($file, $userid=0, $basiconly=false) {$/;" f -clam_log_infected lib/uploadlib.php /^function clam_log_infected($oldfilepath='', $newfilepath='', $userid=0) {$/;" f -clam_log_upload lib/uploadlib.php /^function clam_log_upload($newfilepath, $course=null, $nourl=false) {$/;" f -clam_mail_admins lib/uploadlib.php /^function clam_mail_admins($notice) {$/;" f -clam_replace_infected_file lib/uploadlib.php /^function clam_replace_infected_file($file) {$/;" f -clam_scan_file lib/uploadlib.php /^function clam_scan_file(&$file, $course) {$/;" f -cleanAttributes lib/weblib.php /^function cleanAttributes($str){$/;" f -cleanAttributes2 lib/weblib.php /^function cleanAttributes2($htmlTag){$/;" f +choose_from_menu lib/weblib.php /^function choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="", $nothingvalue="0", $return=false) {$/;" f clean_filename lib/moodlelib.php /^function clean_filename($string) {$/;" f -clean_param lib/moodlelib.php /^function clean_param($param, $options) {$/;" f clean_temp_data backup/lib.php /^ function clean_temp_data ($preferences) {$/;" f clean_text lib/weblib.php /^function clean_text($text, $format=FORMAT_MOODLE) {$/;" f clear lib/smarty/Config_File.class.php /^ function clear($file_name = NULL)$/;" f @@ -2253,81 +2077,46 @@ clear_backup_dir backup/lib.php /^ function clear_backup_dir($backup_unique_c clear_cache lib/smarty/Smarty.class.php /^ function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)$/;" f clear_compiled_tpl lib/smarty/Smarty.class.php /^ function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)$/;" f clear_config lib/smarty/Smarty.class.php /^ function clear_config($var = null)$/;" f -cleardoubleslashes lib/moodlelib.php /^function cleardoubleslashes ($path) {$/;" f clearfilelist files/index.php /^function clearfilelist() {$/;" f clearfilelist lib/editor/coursefiles.php /^function clearfilelist() {$/;" f -cli_switch mod/chat/chatd.php /^ function cli_switch($switch, $param = NULL) {$/;" f -click mod/quiz/protect_js.php /^function click(e) {$/;" f -client lib/cas/CAS.php /^ function client($server_version,$/;" f +clearfilelist lib/editor/courseimages.php /^function clearfilelist() {$/;" f +clearfilelist mod/resource/coursefiles.php /^function clearfilelist() {$/;" f +clearfilelist mod/scorm/coursefiles.php /^function clearfilelist() {$/;" f +clearfilelist mod/wiki/wikifiles.php /^function clearfilelist() {$/;" f clob lib/adodb/session/adodb-session.php /^ function clob($clob = null) {$/;" f -clone lib/moodlelib.php /^ function clone($obj) {$/;" f cloneObject lib/editor/popups/fullscreen.php /^function cloneObject(obj) {$/;" f -clone_node lib/cas/domxml-php4-php5.php /^ function clone_node($deep=false) {return new php4DOMElement($this->myDOMNode->cloneNode($deep),$this->myOwnerDocument);}$/;" f -close auth/fc/fcFPP.php /^ function close()$/;" f close lib/adodb/session/adodb-session.php /^ function close() {$/;" f close lib/excel/OLEwriter.php /^ function close() $/;" f close lib/excel/Workbook.php /^ function close()$/;" f close lib/excel/Worksheet.php /^ function close($sheetnames)$/;" f +closeMain mod/scorm/scormAPI.php /^function closeMain() {$/;" f close_block lib/wiki.php /^ function close_block( $state ) {$/;" f -close_block lib/wiki_to_markdown.php /^ function close_block( $state ) {$/;" f -close_window lib/weblib.php /^function close_window($delay=0) {$/;" f -close_window_button lib/weblib.php /^function close_window_button($name='closewindow') {$/;" f -collapsible lib/tablelib.php /^ function collapsible($bool) {$/;" f -column_class lib/tablelib.php /^ function column_class($column, $classname) {$/;" f -column_style lib/tablelib.php /^ function column_style($column, $property, $value) {$/;" f -column_style_all lib/tablelib.php /^ function column_style_all($property, $value) {$/;" f -column_suppress lib/tablelib.php /^ function column_suppress($column) {$/;" f -column_type lib/datalib.php /^function column_type($table, $column) {$/;" f -comment_header mod/quiz/questiontypes/calculated/questiontype.php /^ function comment_header($question) {$/;" f -comment_header mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function comment_header($question) {$/;" f -comment_on_datasetitems mod/quiz/questiontypes/calculated/questiontype.php /^ function comment_on_datasetitems($question, $data, $number) {$/;" f -comment_on_datasetitems mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function comment_on_datasetitems($question, $data, $number) {$/;" f +close_window_button lib/weblib.php /^function close_window_button() {$/;" f commentparser mod/quiz/format/gift/format.php /^ function commentparser(&$answer) {$/;" f -commit_sql lib/datalib.php /^function commit_sql() {$/;" f compare_activities_by_time_asc course/recent.php /^function compare_activities_by_time_asc($a, $b) {$/;" f compare_activities_by_time_desc course/recent.php /^function compare_activities_by_time_desc($a, $b) {$/;" f -comparemodulenamesbylength filter/activitynames/filter.php /^ function comparemodulenamesbylength($a, $b) {$/;" f -config_form enrol/database/enrol.php /^function config_form($frm) {$/;" f config_form enrol/enrol.class.php /^function config_form($page) {$/;" f -config_form enrol/flatfile/enrol.php /^function config_form($frm) {$/;" f -config_form enrol/ldap/enrol.php /^function config_form($frm) {$/;" f -config_form enrol/paypal/enrol.php /^function config_form($frm) {$/;" f config_load lib/smarty/Smarty.class.php /^ function config_load($file, $section = null, $scope = 'global')$/;" f -config_print blocks/moodleblock.class.php /^ function config_print() {$/;" f -config_save blocks/moodleblock.class.php /^ function config_save($data) {$/;" f -configvar admin/configvars.php /^ function configvar($help, $field, $warning='') {$/;" f -configvar admin/configvars.php /^class configvar {$/;" c -configvarrss admin/configvars.php /^class configvarrss extends configvar {$/;" c -confirm_sesskey lib/moodlelib.php /^function confirm_sesskey($sesskey=NULL) {$/;" f -conn_accept mod/chat/chatd.php /^ function conn_accept() {$/;" f -conn_activity_ufo mod/chat/chatd.php /^ function conn_activity_ufo (&$handles) {$/;" f connect lib/adodb/adodb-pear.inc.php /^ function &connect($dsn, $options = false)$/;" f -connect_win mod/quiz/format/coursetestmanager/format.php /^ function connect_win($filename) {$/;" f -construct lib/pagelib.php /^ function construct() {$/;" f -construct_dataset_menus mod/quiz/questiontypes/calculated/questiontype.php /^ function construct_dataset_menus($question, $mandatorydatasets,$/;" f -convert lib/wiki_to_markdown.php /^ function convert( $content, $courseid ) {$/;" f -convert_high_ascii lib/moodlelib.php /^function convert_high_ascii($s) {$/;" f -convert_to_response_answer_field mod/quiz/locallib.php /^ function convert_to_response_answer_field($questionresponse) {$/;" f -convert_to_response_answer_field mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function convert_to_response_answer_field($questionresponse) {$/;" f +connect_win mod/quiz/format/coursetestmanager/format.php /^ function connect_win($filename) {$/;" f +convert_to_response_answer_field mod/quiz/lib.php /^ function convert_to_response_answer_field($questionresponse) {$/;" f convert_to_response_answer_field mod/quiz/questiontypes/match/questiontype.php /^ function convert_to_response_answer_field($questionresponse) {$/;" f convert_to_response_answer_field mod/quiz/questiontypes/multianswer/questiontype.php /^ function convert_to_response_answer_field($questionresponse) {$/;" f convert_to_response_answer_field mod/quiz/questiontypes/random/questiontype.php /^ function convert_to_response_answer_field($questionresponse) {$/;" f convert_urls_into_links lib/weblib.php /^function convert_urls_into_links(&$text) {$/;" f -copy_and_flatten mod/quiz/format/qti/format.php /^function copy_and_flatten(&$object, $path, $courseid) {$/;" f copy_zip_to_course_dir backup/backuplib.php /^ function copy_zip_to_course_dir ($preferences) {$/;" f +copyrichtext lib/javascript.php /^function copyrichtext(textname) { $/;" f count mod/wiki/ewiki/ewiki.php /^ function count() {$/;" f -count_course_students lib/datalib.php /^function count_course_students($course, $search='', $firstinitial='', $lastinitial='', $group=NULL, $exceptions='') {$/;" f +count_course_students lib/datalib.php /^function count_course_students($course, $search="", $firstinitial="", $lastinitial="", $group=NULL) {$/;" f count_login_failures lib/datalib.php /^function count_login_failures($mode, $username, $lastlogin) {$/;" f -count_records lib/datalib.php /^function count_records($table, $field1='', $value1='', $field2='', $value2='', $field3='', $value3='') {$/;" f -count_records_select lib/datalib.php /^function count_records_select($table, $select='', $countitem='COUNT(*)') {$/;" f +count_records lib/datalib.php /^function count_records($table, $field1="", $value1="", $field2="", $value2="", $field3="", $value3="") {$/;" f +count_records_select lib/datalib.php /^function count_records_select($table, $select="", $countitem="COUNT(*)") {$/;" f count_records_sql lib/datalib.php /^function count_records_sql($sql) {$/;" f count_words lib/moodlelib.php /^function count_words($string) {$/;" f course_files_check_backup backup/backuplib.php /^ function course_files_check_backup($course,$backup_unique_code) {$/;" f -course_format_name course/lib.php /^function course_format_name ($course,$max=100) {$/;" f -course_in_meta course/lib.php /^function course_in_meta ($course) {$/;" f course_list_upgrade blocks/course_list/db/mysql.php /^function course_list_upgrade($oldversion=0) {$/;" f course_list_upgrade blocks/course_list/db/postgres7.php /^function course_list_upgrade($oldversion=0) {$/;" f -course_scale_used lib/moodlelib.php /^function course_scale_used($courseid, $scaleid) {$/;" f +course_scale_used lib/moodlelib.php /^function course_scale_used($courseid,$scaleid) {$/;" f course_set_display course/lib.php /^function course_set_display($courseid, $display=0) {$/;" f course_summary_upgrade blocks/course_summary/db/mysql.php /^function course_summary_upgrade($oldversion=0) {$/;" f course_summary_upgrade blocks/course_summary/db/postgres7.php /^function course_summary_upgrade($oldversion=0) {$/;" f @@ -2337,50 +2126,28 @@ create lib/adodb/adodb-xmlschema.inc.php /^ function create( &$xmls ) {$/;" f create lib/adodb/adodb-xmlschema.inc.php /^ function create() {$/;" f create lib/pclzip/pclzip.lib.php /^ function create($p_filelist \/*, options *\/)$/;" f createButton lib/editor/htmlarea.php /^ function createButton(txt) {$/;" f -createButton lib/editor/htmlarea_bak.php /^ function createButton(txt) {$/;" f +createButton lib/editor/htmlarea_bak.php /^ function createButton(txt) {$/;" f createSelect lib/editor/htmlarea.php /^ function createSelect(txt) {$/;" f -createSelect lib/editor/htmlarea_bak.php /^ function createSelect(txt) {$/;" f -create_attribute lib/cas/domxml-php4-php5.php /^ function create_attribute($name,$value)$/;" f +createSelect lib/editor/htmlarea_bak.php /^ function createSelect(txt) {$/;" f create_blobvar lib/adodb/drivers/adodb-sqlanywhere.inc.php /^ function create_blobvar($blobVarName) {$/;" f -create_cdata_section lib/cas/domxml-php4-php5.php /^ function create_cdata_section($content) {return new php4DOMNode($this->myDOMNode->createCDATASection($content),$this);}$/;" f -create_comment lib/cas/domxml-php4-php5.php /^ function create_comment($data) {return new php4DOMNode($this->myDOMNode->createComment($data),$this);}$/;" f -create_course enrol/ldap/enrol.php /^function create_course ($course_ext,$skip_fix_course_sortorder=0){$/;" f -create_element lib/cas/domxml-php4-php5.php /^ function create_element($name) {return new php4DOMElement($this->myDOMNode->createElement($name),$this);}$/;" f create_parser lib/adodb/adodb-xmlschema.inc.php /^ function &create_parser() {$/;" f -create_response mod/quiz/locallib.php /^ function create_response($question, $nameprefix, $questionsinuse) {$/;" f -create_response mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function create_response($question, $nameprefix, $questionsinuse) {$/;" f +create_response mod/quiz/lib.php /^ function create_response($question, $nameprefix, $questionsinuse) {$/;" f create_response mod/quiz/questiontypes/description/questiontype.php /^ function create_response($question, $nameprefix, $questionsinuse) {$/;" f create_response mod/quiz/questiontypes/random/questiontype.php /^ function create_response($question, $nameprefix, $questionsinuse) {$/;" f create_response mod/quiz/questiontypes/randomsamatch/questiontype.php /^ function create_response($question, $nameprefix, $questionsinuse) {$/;" f -create_text_node lib/cas/domxml-php4-php5.php /^ function create_text_node($content) {return new php4DOMNode($this->myDOMNode->createTextNode($content),$this);}$/;" f -create_user_record lib/moodlelib.php /^function create_user_record($username, $password, $auth='') {$/;" f -create_virtual_nameprefix mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function create_virtual_nameprefix($nameprefix, $datasetinput) {$/;" f -create_virtual_qtype mod/quiz/questiontypes/calculated/questiontype.php /^ function create_virtual_qtype() {$/;" f -create_virtual_qtype mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function create_virtual_qtype() {$/;" f -createtab lib/weblib.php /^ function createtab ($selected=false, $inactive=false, $last=false) {$/;" f +create_user_record lib/moodlelib.php /^function create_user_record($username, $password) {$/;" f cron enrol/enrol.class.php /^function cron() {$/;" f cron enrol/flatfile/enrol.php /^ function cron() {$/;" f -cron_rss_feeds lib/rsslib.php /^function cron_rss_feeds () {$/;" f -css_styles install.php /^function css_styles() {$/;" f -csv2rs lib/adodb/adodb-csvlib.inc.php /^ function &csv2rs($url,&$err,$timeout=0, $rsclass='ADORecordSet_array')$/;" f +cron_rss_feeds rss/rsslib.php /^function cron_rss_feeds () {$/;" f +csv2rs lib/adodb/adodb-csvlib.inc.php /^ function &csv2rs($url,&$err,$timeout=0)$/;" f ctype_alnum lib/adodb/adodb-datadict.inc.php /^ function ctype_alnum($text) {$/;" f current lib/adodb/adodb-iterator.inc.php /^ function current() $/;" f current_language lib/moodlelib.php /^function current_language() {$/;" f -current_theme lib/weblib.php /^function current_theme() {$/;" f -custom_generator_tools mod/quiz/questiontypes/calculated/questiontype.php /^ function custom_generator_tools($datasetdef) {$/;" f -custom_generator_tools mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function custom_generator_tools($datasetdef) {$/;" f -custom_mediaplugin_filter mod/quiz/format/qti/custommediafilter.php /^function custom_mediaplugin_filter($text, $width = null, $height = null) {$/;" f cut_copy_paste lib/editor/htmlarea.php /^ function cut_copy_paste(e, cmd, obj) {$/;" f -cut_copy_paste lib/editor/htmlarea_bak.php /^ function cut_copy_paste(e, cmd, obj) {$/;" f +cut_copy_paste lib/editor/htmlarea_bak.php /^ function cut_copy_paste(e, cmd, obj) {$/;" f dataFieldName lib/adodb/session/adodb-session.php /^ function dataFieldName($data_field_name = null) {$/;" f -data_submitted lib/weblib.php /^function data_submitted($url='') {$/;" f +data_submitted lib/weblib.php /^function data_submitted($url="") {$/;" f database lib/adodb/session/adodb-session.php /^ function database($database = null) {$/;" f -dataset_options mod/quiz/questiontypes/calculated/questiontype.php /^ function dataset_options($question, $name, $renameabledatasets=false) {$/;" f -dataset_options mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function dataset_options($question, $name) {$/;" f -dayofweek lib/moodlelib.php /^function dayofweek($day, $month, $year) {$/;" f -days_in_month lib/moodlelib.php /^function days_in_month($month, $year) {$/;" f -dbData lib/adodb/adodb-xmlschema.inc.php /^ function dbData( &$parent, $attributes = NULL ) {$/;" f -dbData lib/adodb/adodb-xmlschema.inc.php /^class dbData extends dbObject {$/;" c dbIndex lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function dbIndex( $name, $table ) {$/;" f dbIndex lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^class dbIndex {$/;" c dbIndex lib/adodb/adodb-xmlschema.inc.php /^ function dbIndex( &$parent, $attributes = NULL ) {$/;" f @@ -2395,33 +2162,28 @@ dbTable lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ dbTable lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^class dbTable {$/;" c dbTable lib/adodb/adodb-xmlschema.inc.php /^ function dbTable( &$parent, $attributes = NULL ) {$/;" f dbTable lib/adodb/adodb-xmlschema.inc.php /^class dbTable extends dbObject {$/;" c -db_lowercase lib/datalib.php /^function db_lowercase() {$/;" f -db_uppercase lib/datalib.php /^function db_uppercase() {$/;" f debug lib/adodb/session/adodb-session.php /^ function debug($debug = null) {$/;" f -default_export_filename mod/quiz/locallib.php /^function default_export_filename($course,$category) {$/;" f -define_baseurl lib/tablelib.php /^ function define_baseurl($url) {$/;" f -define_columns lib/tablelib.php /^ function define_columns($columns) {$/;" f -define_headers lib/tablelib.php /^ function define_headers($headers) {$/;" f +default_export_filename mod/quiz/lib.php /^ function default_export_filename($course,$category) {$/;" f +deldir mod/shelf/delete.php /^ function deldir($directory)$/;" f deldir mod/wiki/ewiki/plugins/moodle/moodle_wikidump.php /^function deldir($dir)$/;" f +deldir2 mod/shelf/lib.php /^function deldir2($directory)$/;" f delete lib/pclzip/pclzip.lib.php /^ function delete(\/* options *\/)$/;" f deleteByIndex lib/pclzip/pclzip.lib.php /^ function deleteByIndex($p_index)$/;" f -delete_category mod/quiz/category.php /^ function delete_category($deletecat, $destcategoryid = null) {$/;" f delete_category_ids backup/backuplib.php /^ function delete_category_ids ($backup_unique_code) {$/;" f -delete_course_module course/lib.php /^function delete_course_module($id) {$/;" f +delete_course_module course/lib.php /^function delete_course_module($mod) {$/;" f delete_dir_contents backup/lib.php /^ function delete_dir_contents ($dir,$excludeddir="") {$/;" f delete_event lib/moodlelib.php /^function delete_event($id) {$/;" f delete_instance mod/resource/lib.php /^function delete_instance($id) {$/;" f delete_mod_from_section course/lib.php /^function delete_mod_from_section($mod, $section) {$/;" f -delete_other_files lib/uploadlib.php /^ function delete_other_files($destination, $exceptions=null) {$/;" f -delete_records lib/datalib.php /^function delete_records($table, $field1='', $value1='', $field2='', $value2='', $field3='', $value3='') {$/;" f -delete_records_select lib/datalib.php /^function delete_records_select($table, $select='') {$/;" f +delete_records lib/datalib.php /^function delete_records($table, $field1="", $value1="", $field2="", $value2="", $field3="", $value3="") {$/;" f +delete_records_select lib/datalib.php /^function delete_records_select($table, $select="") {$/;" f delete_subdirectories admin/delete.php /^function delete_subdirectories($rootdir) {$/;" f -deletedatabase mod/quiz/format/coursetestmanager/format.php /^ function deletedatabase($filename) {$/;" f -description admin/health.php /^ function description() {$/;" f +deletedatabase mod/quiz/format/coursetestmanager/format.php /^ function deletedatabase($filename) {$/;" f +delfile mod/shelf/delete.php /^ function delfile($fileId)$/;" f destroy lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function destroy() {$/;" f destroy lib/adodb/adodb-xmlschema.inc.php /^ function destroy() {$/;" f destroy lib/adodb/session/adodb-session.php /^ function destroy($key) {$/;" f -detect_munged_arguments lib/weblib.php /^function detect_munged_arguments($string, $allowdots=1) {$/;" f +detect_munged_arguments lib/weblib.php /^function detect_munged_arguments($string) {$/;" f dialogue_add_instance mod/dialogue/lib.php /^function dialogue_add_instance($dialogue) {$/;" f dialogue_backup_mods mod/dialogue/backuplib.php /^ function dialogue_backup_mods($bf,$preferences) {$/;" f dialogue_check_backup_mods mod/dialogue/backuplib.php /^ function dialogue_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f @@ -2463,11 +2225,6 @@ dialogue_upgrade mod/dialogue/db/postgres7.php /^function dialogue_upgrade($oldv dialogue_user_complete mod/dialogue/lib.php /^function dialogue_user_complete($course, $user, $mod, $dialogue) {$/;" f dialogue_user_outline mod/dialogue/lib.php /^function dialogue_user_outline($course, $user, $mod, $dialogue) {$/;" f discardQuery lib/adodb/adodb-xmlschema.inc.php /^ function discardQuery() {$/;" f -disconnect_session mod/chat/chatd.php /^ function disconnect_session($sessionid) {$/;" f -dismiss_half mod/chat/chatd.php /^ function dismiss_half($sessionid, $disconnect = true) {$/;" f -dismiss_set mod/chat/chatd.php /^ function dismiss_set($sessionid) {$/;" f -dismiss_ufo mod/chat/chatd.php /^ function dismiss_ufo($handle, $disconnect = true, $message = NULL) {$/;" f -dispatch_sidekick mod/chat/chatd.php /^ function dispatch_sidekick($handle, $type, $sessionid, $customdata) {$/;" f display lib/smarty/Smarty.class.php /^ function display($resource_name, $cache_id = null, $compile_id = null)$/;" f display mod/quiz/report/default.php /^ function display($cm, $course, $quiz) { \/\/\/ This function just displays the report$/;" f display mod/quiz/report/fullstat/report.php /^ function display($quiz, $cm, $course) { \/\/\/ This function just displays the report$/;" f @@ -2478,30 +2235,23 @@ display mod/resource/lib.php /^function display() {$/;" f display mod/resource/type/directory/resource.class.php /^function display() {$/;" f display mod/resource/type/file/resource.class.php /^function display() {$/;" f display mod/resource/type/html/resource.class.php /^function display() {$/;" f +display mod/resource/type/reference/resource.class.php /^function display() {$/;" f display mod/resource/type/text/resource.class.php /^function display() {$/;" f +display mod/resource/url/resource.class.php /^function display() {$/;" f display_size lib/moodlelib.php /^function display_size($size) {$/;" f -display_user_interface mod/quiz/category.php /^ function display_user_interface() {$/;" f -display_warning admin/configvars.php /^ function display_warning() {$/;" f displaydir files/index.php /^function displaydir ($wdir) {$/;" f displaydir lib/editor/coursefiles.php /^function displaydir ($wdir) {$/;" f +displaydir lib/editor/courseimages.php /^function displaydir ($wdir) {$/;" f +displaydir mod/resource/coursefiles.php /^function displaydir ($wdir) {$/;" f +displaydir mod/scorm/coursefiles.php /^function displaydir ($wdir) {$/;" f +displaydir mod/wiki/wikifiles.php /^function displaydir ($wdir) {$/;" f do_list lib/wiki.php /^ function do_list( $line, $blank=false ) {$/;" f -do_list lib/wiki_to_markdown.php /^ function do_list( $line, $blank=false ) {$/;" f do_replace lib/wiki.php /^ function do_replace( $line, $mark, $tag ) {$/;" f -do_replace lib/wiki_to_markdown.php /^ function do_replace( $line, $mark, $tag ) {$/;" f -do_replace_markdown lib/wiki_to_markdown.php /^ function do_replace_markdown( $line, $mark, $tag ) {$/;" f do_replace_sub lib/wiki.php /^ function do_replace_sub( $line, $mark, $tag ) {$/;" f -do_replace_sub lib/wiki_to_markdown.php /^ function do_replace_sub( $line, $mark, $tag ) {$/;" f do_strtolower lib/adodb/tests/test.php /^function do_strtolower(&$arr)$/;" f do_ucwords lib/adodb/rsfilter.inc.php /^ function do_ucwords(&$arr,$rs)$/;" f -document_element lib/cas/domxml-php4-php5.php /^ function document_element() {return new php4DOMElement($this->myDOMNode->documentElement,$this);}$/;" f document_file lib/moodlelib.php /^function document_file($file, $include=true) {$/;" f doloop lib/adodb/tests/test-pgblob.php /^function doloop()$/;" f -domxml_new_doc lib/cas/domxml-php4-php5.php /^function domxml_new_doc($version) {return new php4DOMDocument('');}$/;" f -domxml_open_file lib/cas/domxml-php4-php5.php /^function domxml_open_file($filename) {return new php4DOMDocument($filename);}$/;" f -domxml_open_mem lib/cas/domxml-php4-php5.php /^function domxml_open_mem($str)$/;" f -domxml_xslt_stylesheet lib/cas/domxml-php4-php5.php /^ function domxml_xslt_stylesheet($xslstring) {return new php4DomXsltStylesheet(DOMDocument::loadXML($xslstring));}$/;" f -domxml_xslt_stylesheet_doc lib/cas/domxml-php4-php5.php /^ function domxml_xslt_stylesheet_doc($dom_document) {return new php4DomXsltStylesheet($dom_document);}$/;" f -domxml_xslt_stylesheet_file lib/cas/domxml-php4-php5.php /^ function domxml_xslt_stylesheet_file($xslfile) {return new php4DomXsltStylesheet(DOMDocument::load($xslfile));}$/;" f draw lib/graphlib.php /^function draw() {$/;" f draw_brush lib/graphlib.php /^function draw_brush($x, $y, $size, $type, $colour) {$/;" f draw_brush_line lib/graphlib.php /^function draw_brush_line($x0, $y0, $x1, $y1, $size, $type, $colour) {$/;" f @@ -2523,34 +2273,21 @@ draw_zero_axis_right lib/graphlib.php /^function draw_zero_axis_right() {$/;" f driver lib/adodb/session/adodb-session.php /^ function driver($driver = null) {$/;" f drop lib/adodb/adodb-xmlschema.inc.php /^ function drop() {$/;" f drop_blobvar lib/adodb/drivers/adodb-sqlanywhere.inc.php /^ function drop_blobvar($blobVarName) {$/;" f -dst_changes_for_year lib/moodlelib.php /^function dst_changes_for_year($year, $timezone) {$/;" f -dst_offset_on lib/moodlelib.php /^function dst_offset_on($time) {$/;" f dump lib/adodb/pear/Auth/Container/ADOdb.php /^function dump( $var, $str, $vardump = false ) {$/;" f -dump_file lib/cas/domxml-php4-php5.php /^ function dump_file($filename,$compressionmode=false,$format=false) {return $this->myDOMNode->save($filename);}$/;" f -dump_mem lib/cas/domxml-php4-php5.php /^ function dump_mem($format=false,$encoding=false) {return $this->myDOMNode->saveXML();}$/;" f duplicate lib/pclzip/pclzip.lib.php /^ function duplicate($p_archive)$/;" f -edit_single_category mod/quiz/category.php /^ function edit_single_category($categoryid) {$/;" f -editor_convert_to_array admin/editor.php /^function editor_convert_to_array ($string) {$/;" f -editor_get_dictionaries admin/editor.php /^function editor_get_dictionaries () {$/;" f -editor_update_config admin/editor.php /^function editor_update_config ($data) {$/;" f -email_is_not_allowed lib/moodlelib.php /^function email_is_not_allowed($email) {$/;" f email_paypal_error_to_admin enrol/paypal/ipn.php /^function email_paypal_error_to_admin($subject, $data) {$/;" f -email_paypal_error_to_admin enrol/paypal/ipn2.php /^function email_paypal_error_to_admin($subject, $data) {$/;" f -email_to_user lib/moodlelib.php /^function email_to_user($user, $from, $subject, $messagetext, $messagehtml='', $attachment='', $attachname='', $usetrueaddress=true, $repyto='', $replytoname='') {$/;" f -emailprotect_filter filter/emailprotect/filter.php /^function emailprotect_filter($courseid, $text) {$/;" f +email_to_user lib/moodlelib.php /^function email_to_user($user, $from, $subject, $messagetext, $messagehtml="", $attachment="", $attachname="", $usetrueaddress=true) {$/;" f emoticonhelpbutton lib/weblib.php /^function emoticonhelpbutton($form, $field) {$/;" f -empty_field_and_submit mod/chat/gui_header_js/chatinput.php /^ function empty_field_and_submit() {$/;" f +empty_field_and_submit mod/chat/gui_header_js/chatinput.php /^function empty_field_and_submit() {$/;" f empty_field_and_submit mod/chat/gui_sockets/chatinput.php /^function empty_field_and_submit() {$/;" f encryptionKey lib/adodb/session/adodb-session.php /^ function encryptionKey($encryption_key = null) {$/;" f endElement backup/restorelib.php /^ function endElement($parser, $tagName) {$/;" f -endElementBlocks backup/restorelib.php /^ function endElementBlocks($parser, $tagName) {$/;" f +endElement filter/multilang/filter.php /^ function endElement($parser, $tag) { $/;" f endElementCourseHeader backup/restorelib.php /^ function endElementCourseHeader($parser, $tagName) {$/;" f endElementEvents backup/restorelib.php /^ function endElementEvents($parser, $tagName) {$/;" f endElementGroups backup/restorelib.php /^ function endElementGroups($parser, $tagName) {$/;" f endElementInfo backup/restorelib.php /^ function endElementInfo($parser, $tagName) {$/;" f endElementLogs backup/restorelib.php /^ function endElementLogs($parser, $tagName) {$/;" f -endElementMessages backup/restorelib.php /^ function endElementMessages($parser, $tagName) {$/;" f -endElementMetacourse backup/restorelib.php /^ function endElementMetacourse($parser, $tagName) {$/;" f endElementModules backup/restorelib.php /^ function endElementModules($parser, $tagName) {$/;" f endElementQuestions backup/restorelib.php /^ function endElementQuestions($parser, $tagName) {$/;" f endElementScales backup/restorelib.php /^ function endElementScales($parser, $tagName) {$/;" f @@ -2558,26 +2295,18 @@ endElementSections backup/restorelib.php /^ function endElementSections($ endElementUsers backup/restorelib.php /^ function endElementUsers($parser, $tagName) {$/;" f end_tag backup/backuplib.php /^ function end_tag($tag,$level=0,$endline=true) {$/;" f endecrypt lib/moodlelib.php /^function endecrypt ($pwd, $data, $case) {$/;" f -enrol_ldap_bind enrol/ldap/enrol.php /^function enrol_ldap_bind($ldap_connection){$/;" f -enrol_ldap_connect enrol/ldap/enrol.php /^function enrol_ldap_connect(){$/;" f -enrol_student lib/moodlelib.php /^function enrol_student($userid, $courseid, $timestart=0, $timeend=0, $enrol='') {$/;" f +enrol_student lib/moodlelib.php /^function enrol_student($userid, $courseid, $timestart=0, $timeend=0) {$/;" f enrolment_base enrol/enrol.class.php /^class enrolment_base {$/;" c enrolment_plugin enrol/database/enrol.php /^class enrolment_plugin extends enrolment_base {$/;" c enrolment_plugin enrol/flatfile/enrol.php /^class enrolment_plugin extends enrolment_base {$/;" c enrolment_plugin enrol/internal/enrol.php /^class enrolment_plugin extends enrolment_base {$/;" c -enrolment_plugin enrol/ldap/enrol.php /^class enrolment_plugin extends enrolment_base {$/;" c enrolment_plugin enrol/paypal/enrol.php /^class enrolment_plugin extends enrolment_base {$/;" c -enter lib/lexer.php /^ function enter($state) {$/;" f err lib/adodb/server.php /^function err($s)$/;" f err mod/quiz/format/coursetestmanager/format.php /^ function err($message, $dsn) {$/;" f -error lib/cas/CAS.php /^ function error($msg)$/;" f -error lib/weblib.php /^function error ($message, $link='') {$/;" f +error lib/weblib.php /^function error ($message, $link="") {$/;" f errorCode lib/pclzip/pclzip.lib.php /^ function errorCode()$/;" f errorInfo lib/pclzip/pclzip.lib.php /^ function errorInfo($p_full=false)$/;" f errorName lib/pclzip/pclzip.lib.php /^ function errorName($p_with_code=false)$/;" f -error_handler lib/speller/server-scripts/spellchecker.php /^function error_handler( $err ) {$/;" f -error_handler mod/chat/chatd.php /^ function error_handler ($errno, $errmsg, $filename, $linenum, $vars) {$/;" f -escape_quote lib/speller/server-scripts/spellchecker.php /^function escape_quote( $str ) {$/;" f escapedchar_post mod/quiz/format/gift/format.php /^ function escapedchar_post($string) {$/;" f escapedchar_pre mod/quiz/format/gift/format.php /^ function escapedchar_pre($string) {$/;" f ewiki_action_attachments mod/wiki/ewiki/plugins/moodle/downloads.php /^function ewiki_action_attachments($id, $data, $action=EWIKI_ACTION_ATTACHMENTS) {$/;" f @@ -2608,7 +2337,7 @@ ewiki_email_protect_enctext mod/wiki/ewiki/plugins/email_protect.php /^ function ewiki_email_protect_feedbots mod/wiki/ewiki/plugins/email_protect.php /^ function ewiki_email_protect_feedbots() {$/;" f ewiki_email_protect_form mod/wiki/ewiki/plugins/email_protect.php /^ function ewiki_email_protect_form($id, $data=0, $action=0, $text="PROTE1", $url="") {$/;" f ewiki_email_protect_link mod/wiki/ewiki/plugins/email_protect.php /^ function ewiki_email_protect_link(&$href, &$title) {$/;" f -ewiki_entry_downloads mod/wiki/ewiki/plugins/moodle/downloads.php /^function ewiki_entry_downloads($row, $show_section=0, $fullinfo=false) {$/;" f +ewiki_entry_downloads mod/wiki/ewiki/plugins/moodle/downloads.php /^function ewiki_entry_downloads($row, $show_section=0) {$/;" f ewiki_etag mod/wiki/ewiki/ewiki.php /^function ewiki_etag(&$data) {$/;" f ewiki_eventually_initialize mod/wiki/ewiki/ewiki.php /^function ewiki_eventually_initialize(&$id, &$data, &$action) {$/;" f ewiki_format mod/wiki/ewiki/ewiki.php /^function ewiki_format ($/;" f @@ -2680,15 +2409,12 @@ ewiki_valid_pages mod/wiki/ewiki/plugins/moodle/sitemap.php /^function ewiki_val ewiki_view_append_attachments mod/wiki/ewiki/plugins/aview/downloads.php /^function ewiki_view_append_attachments($id, $data, $action) {$/;" f ewiki_view_append_backlinks mod/wiki/ewiki/plugins/aview/backlinks.php /^function ewiki_view_append_backlinks($id, $data, $action) {$/;" f execute_sql lib/datalib.php /^function execute_sql($command, $feedback=true) {$/;" f -execute_teacherwarning mod/lesson/locallib.php /^function execute_teacherwarning($lesson) {$/;" f -exercise_add_custom_scales mod/exercise/locallib.php /^function exercise_add_custom_scales($exercise) {$/;" f exercise_add_instance mod/exercise/lib.php /^function exercise_add_instance($exercise) $/;" f exercise_add_instance mod/exercise/lib.php /^function exercise_add_instance($exercise) {$/;" f exercise_assessments_restore mod/exercise/restorelib.php /^ function exercise_assessments_restore($new_exercise_id, $new_submission_id,$info,$restore) {$/;" f exercise_backup_mods mod/exercise/backuplib.php /^ function exercise_backup_mods($bf,$preferences) {$/;" f exercise_check_backup_mods mod/exercise/backuplib.php /^ function exercise_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f exercise_choose_from_menu mod/exercise/lib.php /^function exercise_choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="", $nothingvalue="0", $return=false) {$/;" f -exercise_compare_assessments mod/exercise/locallib.php /^function exercise_compare_assessments($exercise, $assessment1, $assessment2) {$/;" f exercise_copy_assessment mod/exercise/locallib.php /^function exercise_copy_assessment($assessment, $submission, $withfeedback = false) {$/;" f exercise_count_all_submissions_for_assessment mod/exercise/locallib.php /^function exercise_count_all_submissions_for_assessment($exercise, $user) {$/;" f exercise_count_assessments mod/exercise/locallib.php /^function exercise_count_assessments($submission) {$/;" f @@ -2699,7 +2425,6 @@ exercise_count_teacher_submissions mod/exercise/locallib.php /^function exercise exercise_count_teacher_submissions_for_assessment mod/exercise/locallib.php /^function exercise_count_teacher_submissions_for_assessment($exercise, $user) {$/;" f exercise_count_unassessed_student_submissions mod/exercise/locallib.php /^function exercise_count_unassessed_student_submissions($exercise) {$/;" f exercise_count_ungraded_assessments_student mod/exercise/locallib.php /^function exercise_count_ungraded_assessments_student($exercise) {$/;" f -exercise_count_ungraded_assessments_student mod/exercise/locallib.php /^function exercise_count_ungraded_assessments_student($exercise, $groupid = 0) {$/;" f exercise_count_ungraded_assessments_teacher mod/exercise/locallib.php /^function exercise_count_ungraded_assessments_teacher($exercise) {$/;" f exercise_count_user_assessments mod/exercise/locallib.php /^function exercise_count_user_assessments($exercise, $user, $stype = "all") {$/;" f exercise_count_user_assessments mod/exercise/locallib.php /^function exercise_count_user_assessments($exercise, $user, $type = "all") { $type is all, student or teacher$/;" f @@ -2707,7 +2432,7 @@ exercise_count_user_assessments_done mod/exercise/locallib.php /^function exerci exercise_count_user_assessments_done mod/exercise/locallib.php /^function exercise_count_user_assessments_done($exercise,$user) {$/;" f exercise_count_user_submissions mod/exercise/locallib.php /^function exercise_count_user_submissions($exercise, $user) {$/;" f exercise_cron mod/exercise/lib.php /^function exercise_cron () $/;" f -exercise_cron mod/exercise/lib.php /^function exercise_cron() {$/;" f +exercise_cron mod/exercise/lib.php /^function exercise_cron () {$/;" f exercise_delete_instance mod/exercise/lib.php /^function exercise_delete_instance($id) $/;" f exercise_delete_instance mod/exercise/lib.php /^function exercise_delete_instance($id) {$/;" f exercise_delete_submitted_files mod/exercise/locallib.php /^function exercise_delete_submitted_files($exercise, $submission) {$/;" f @@ -2732,8 +2457,7 @@ exercise_get_mean_submission_grades mod/exercise/locallib.php /^function exercis exercise_get_participants mod/exercise/lib.php /^function exercise_get_participants($exerciseid) {$/;" f exercise_get_student_submission mod/exercise/locallib.php /^function exercise_get_student_submission($exercise, $user) {$/;" f exercise_get_student_submissions mod/exercise/locallib.php /^function exercise_get_student_submissions($exercise) {$/;" f -exercise_get_student_submissions mod/exercise/locallib.php /^function exercise_get_student_submissions($exercise, $order = "time", $groupid = 0) {$/;" f -exercise_get_submission_assessment mod/exercise/locallib.php /^function exercise_get_submission_assessment($submission, $user = null) {$/;" f +exercise_get_student_submissions mod/exercise/locallib.php /^function exercise_get_student_submissions($exercise, $order = "") {$/;" f exercise_get_submission_assessment mod/exercise/locallib.php /^function exercise_get_submission_assessment($submission, $user) {$/;" f exercise_get_submit_logs mod/exercise/lib.php /^function exercise_get_submit_logs($course, $timestart) {$/;" f exercise_get_submit_logs mod/exercise/locallib.php /^function exercise_get_submit_logs($course, $timestart) {$/;" f @@ -2745,6 +2469,7 @@ exercise_get_ungraded_assessments_student mod/exercise/locallib.php /^function e exercise_get_ungraded_assessments_teacher mod/exercise/locallib.php /^function exercise_get_ungraded_assessments_teacher($exercise) {$/;" f exercise_get_unmailed_assessments mod/exercise/lib.php /^function exercise_get_unmailed_assessments($cutofftime) {$/;" f exercise_get_unmailed_assessments mod/exercise/locallib.php /^function exercise_get_unmailed_assessments($cutofftime) { <--- in lib.php$/;" f +exercise_get_unmailed_graded_assessments mod/exercise/lib.php /^function exercise_get_unmailed_graded_assessments($cutofftime) {$/;" f exercise_get_unmailed_graded_assessments mod/exercise/locallib.php /^function exercise_get_unmailed_graded_assessments($cutofftime) { <--- in lib.php$/;" f exercise_get_user_assessments mod/exercise/locallib.php /^function exercise_get_user_assessments($exercise, $user) {$/;" f exercise_get_user_submissions mod/exercise/lib.php /^function exercise_get_user_submissions($exercise, $user) {$/;" f @@ -2768,6 +2493,8 @@ exercise_print_assessments_by_user_for_admin mod/exercise/locallib.php /^functio exercise_print_assessments_for_admin mod/exercise/locallib.php /^function exercise_print_assessments_for_admin($exercise, $submission) {$/;" f exercise_print_assignment_info mod/exercise/locallib.php /^function exercise_print_assignment_info($exercise) {$/;" f exercise_print_difference mod/exercise/locallib.php /^function exercise_print_difference($time) {$/;" f +exercise_print_dual_assessment_form mod/exercise/locallib.php /^function exercise_print_dual_assessment_form($exercise, $assessment, $submission, $returnto = '') {$/;" f +exercise_print_dual_assessment_form mod/exercise/locallib.php /^function exercise_print_dual_assessment_form($exercise, $assessment, $submission, $returnto)$/;" f exercise_print_feedback mod/exercise/locallib.php /^function exercise_print_feedback($course, $submission) {$/;" f exercise_print_league_table mod/exercise/locallib.php /^function exercise_print_league_table($exercise) {$/;" f exercise_print_recent_activity mod/exercise/lib.php /^function exercise_print_recent_activity($course, $isteacher, $timestart) {$/;" f @@ -2778,13 +2505,10 @@ exercise_print_submission_title mod/exercise/lib.php /^function exercise_print_s exercise_print_submission_title mod/exercise/locallib.php /^function exercise_print_submission_title($exercise, $submission) { <--- in lib.php$/;" f exercise_print_tabbed_heading mod/exercise/locallib.php /^function exercise_print_tabbed_heading($tabs) {$/;" f exercise_print_tabbed_table mod/exercise/locallib.php /^function exercise_print_tabbed_table($table) {$/;" f -exercise_print_teacher_assessment_form mod/exercise/locallib.php /^function exercise_print_teacher_assessment_form($exercise, $assessment, $submission, $returnto = '') {$/;" f -exercise_print_teacher_assessment_form mod/exercise/locallib.php /^function exercise_print_teacher_assessment_form($exercise, $assessment, $submission, $returnto)$/;" f exercise_print_teacher_table mod/exercise/locallib.php /^function exercise_print_teacher_table($course) {$/;" f exercise_print_time_to_deadline mod/exercise/locallib.php /^function exercise_print_time_to_deadline($time) {$/;" f exercise_print_upload_form mod/exercise/locallib.php /^function exercise_print_upload_form($exercise) {$/;" f exercise_print_user_assessments mod/exercise/locallib.php /^function exercise_print_user_assessments($exercise, $user) {$/;" f -exercise_refresh_events mod/exercise/lib.php /^function exercise_refresh_events($courseid = 0) {$/;" f exercise_restore_files mod/exercise/restorelib.php /^ function exercise_restore_files ($oldsubmiss, $newsubmiss, $restore) {$/;" f exercise_restore_mods mod/exercise/restorelib.php /^ function exercise_restore_mods($mod,$restore) {$/;" f exercise_rubrics_restore mod/exercise/restorelib.php /^ function exercise_rubrics_restore($exercise_id,$elementno,$info,$restore) {$/;" f @@ -2800,81 +2524,53 @@ exercise_user_complete mod/exercise/lib.php /^function exercise_user_complete($c exercise_user_complete mod/exercise/lib.php /^function exercise_user_complete($course, $user, $mod, $exercise) {$/;" f exercise_user_outline mod/exercise/lib.php /^function exercise_user_outline($course, $user, $mod, $exercise) $/;" f exercise_user_outline mod/exercise/lib.php /^function exercise_user_outline($course, $user, $mod, $exercise) {$/;" f -exists admin/health.php /^ function exists() {$/;" f -expandCollide mod/scorm/playscorm.php /^ function expandCollide(which,list) {$/;" f +expandCollide mod/scorm/playscorm.php /^ function expandCollide(which,list) {$/;" f expandCollide mod/scorm/view.php /^ function expandCollide(which,list) {$/;" f -expanded_category_strings mod/quiz/category.php /^ function expanded_category_strings($categories, $parent=null) {$/;" f expireNotify lib/adodb/session/adodb-session.php /^ function expireNotify($expire_notify = null) {$/;" f -export_file_extension mod/quiz/format.php /^ function export_file_extension() {$/;" f -export_file_extension mod/quiz/format/qti/format.php /^ function export_file_extension() {$/;" f -export_file_extension mod/quiz/format/xml/format.php /^function export_file_extension() {$/;" f -export_quiz mod/quiz/format/qti/format.php /^ function export_quiz($course, $quiz, $questions, $result, $redirect, $submiturl = null) {$/;" f exportpostprocess mod/quiz/format.php /^ function exportpostprocess() {$/;" f exportpreprocess mod/quiz/format.php /^ function exportpreprocess($category, $course) {$/;" f -exportpreprocess mod/quiz/format/qti/format.php /^ function exportpreprocess($category, $course, $lang = null) {$/;" f exportprocess mod/quiz/format.php /^ function exportprocess($filename) {$/;" f -exportprocess mod/quiz/format/qti/format.php /^ function exportprocess($filename) {$/;" f -exportprocess_quiz mod/quiz/format/qti/format.php /^ function exportprocess_quiz($quiz, $questions, $result, $submiturl, $course) {$/;" f extract lib/pclzip/pclzip.lib.php /^ function extract(\/* options *\/)$/;" f extractByIndex lib/pclzip/pclzip.lib.php /^ function extractByIndex($p_index \/* $options *\/)$/;" f -extract_response mod/quiz/locallib.php /^ function extract_response($rawresponse, $nameprefix) {$/;" f -extract_response mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function extract_response($rawresponse, $nameprefix) {$/;" f +extract_response mod/quiz/lib.php /^ function extract_response($rawresponse, $nameprefix) {$/;" f extract_response mod/quiz/questiontypes/match/questiontype.php /^ function extract_response($rawresponse, $nameprefix) {$/;" f extract_response mod/quiz/questiontypes/multianswer/questiontype.php /^ function extract_response($rawresponse, $nameprefix) {$/;" f extract_response mod/quiz/questiontypes/multichoice/questiontype.php /^ function extract_response($rawresponse, $nameprefix) {$/;" f extract_response mod/quiz/questiontypes/random/questiontype.php /^ function extract_response($rawresponse, $nameprefix) {$/;" f extract_response mod/quiz/questiontypes/randomsamatch/questiontype.php /^ function extract_response($rawresponse, $nameprefix) {$/;" f -extract_response_id mod/quiz/locallib.php /^ function extract_response_id($responsekey) {$/;" f +extract_response_id mod/quiz/lib.php /^ function extract_response_id($responsekey) {$/;" f factory lib/adodb/adodb-pear.inc.php /^ function &factory($type)$/;" f -fatal mod/chat/chatd.php /^ function fatal($message) {$/;" f -fcFPP auth/fc/fcFPP.php /^ function fcFPP($host="localhost", $port="3333")$/;" f -fcFPP auth/fc/fcFPP.php /^class fcFPP$/;" c fetch lib/smarty/Smarty.class.php /^ function fetch($resource_name, $cache_id = null, $compile_id = null, $display = false)$/;" f fetchData lib/adodb/pear/Auth/Container/ADOdb.php /^ function fetchData($username, $password)$/;" f fields lib/adodb/drivers/adodb-odbtp.inc.php /^ function fields($colname)$/;" f -file_full_path mod/quiz/format/qti/format.php /^ function file_full_path($file, $courseid) {$/;" f -file_get_contents lib/filelib.php /^ function file_get_contents($file) {$/;" f +fillmessagebox lib/javascript.php /^function fillmessagebox(text) {$/;" f filter lib/adodb/session/adodb-session.php /^ function filter($filter = null) {$/;" f -filter_phrases lib/filterlib.php /^function filter_phrases ($text, $link_array, $ignoretagsopen=NULL, $ignoretagsclose=NULL) {$/;" f -filter_remove_duplicates lib/filterlib.php /^function filter_remove_duplicates($linkarray) {$/;" f filter_text lib/weblib.php /^function filter_text($text, $courseid=NULL) {$/;" f -filterobject lib/filterlib.php /^ function filterobject($phrase, $hreftagbegin='<span class="highlight">', $/;" f -filterobject lib/filterlib.php /^class filterobject {$/;" c -find_dataset_names mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function find_dataset_names($text) {$/;" f -find_day_in_month lib/moodlelib.php /^function find_day_in_month($startday, $weekday, $month, $year) {$/;" f -find_ext_enrolments enrol/ldap/enrol.php /^function find_ext_enrolments ($ldap_connection, $memberuid, $type){$/;" f -find_form_errors user/edit.php /^function find_form_errors(&$user, &$usernew, &$err, &$um) {$/;" f +find_form_errors user/edit.php /^function find_form_errors(&$user, &$usernew, &$err) {$/;" f find_range lib/graphlib.php /^function find_range($data, $min, $max, $resolution) {$/;" f -findfile mod/quiz/format/coursetestmanager/format.php /^ function findfile($filename) {$/;" f -first_child lib/cas/domxml-php4-php5.php /^ function first_child() {return new php4DOMElement($this->myDOMNode->firstChild,$this->myOwnerDocument);}$/;" f +findfile mod/quiz/format/coursetestmanager/format.php /^ function findfile($filename) { $/;" f fit_to_pages lib/excel/Worksheet.php /^ function fit_to_pages($width, $height)$/;" f -fix_course_sortorder lib/datalib.php /^function fix_course_sortorder($categoryid=0, $n=0, $safe=0) {$/;" f -fix_orphaned_questions backup/backuplib.php /^ function fix_orphaned_questions ($course) {$/;" f -flatten_image_name mod/quiz/format/qti/format.php /^ function flatten_image_name($name) {$/;" f -flexible_table lib/tablelib.php /^ function flexible_table($uniqueid) {$/;" f -flexible_table lib/tablelib.php /^class flexible_table {$/;" c -forceAuthentication lib/cas/CAS.php /^ function forceAuthentication()$/;" f -forceAuthentication lib/cas/client.php /^ function forceAuthentication()$/;" f -form_table install.php /^function form_table($nextstage = 0, $formaction = "install.php") {$/;" f -format lib/wiki.php /^ function format( $content, $courseid ) {$/;" f +fix_course_sortorder lib/datalib.php /^function fix_course_sortorder($categoryid=0, $n=0) {$/;" f +form_class lib/forms/forms.php /^class form_class$/;" c +form_custom_class lib/forms/forms.php /^class form_custom_class$/;" c +form_date_class lib/forms/form_date.php /^class form_date_class extends form_custom_class$/;" c +format lib/wiki.php /^ function format( $content ) {$/;" f format_float lib/moodlelib.php /^function format_float($num, $places=1) {$/;" f format_sitemap mod/wiki/ewiki/plugins/moodle/sitemap.php /^function format_sitemap($a_sitemap, $str_rootpage, &$str_formatted, &$prevlevel, &$timer, &$fordump){$/;" f -format_string lib/weblib.php /^function format_string ($string, $striplinks = false, $courseid=NULL ) {$/;" f format_text lib/weblib.php /^function format_text($text, $format=FORMAT_MOODLE, $options=NULL, $courseid=NULL ) {$/;" f format_text_email lib/weblib.php /^function format_text_email($text, $format) {$/;" f format_text_menu lib/weblib.php /^function format_text_menu() {$/;" f -format_time lib/moodlelib.php /^ function format_time($totalsecs, $str=NULL) {$/;" f +format_time lib/moodlelib.php /^function format_time($totalsecs, $str=NULL) {$/;" f +formcheck mod/quiz/question.php /^function formcheck($question) {$/;" f formerr lib/weblib.php /^function formerr($error) {$/;" f -forum_add_attachment mod/forum/lib.php /^function forum_add_attachment($post, $inputname,&$message) {$/;" f -forum_add_discussion mod/forum/lib.php /^function forum_add_discussion($discussion,&$message) {$/;" f +forum_add_attachment mod/forum/lib.php /^function forum_add_attachment($post, $newfile) {$/;" f +forum_add_discussion mod/forum/lib.php /^function forum_add_discussion($discussion) {$/;" f forum_add_instance mod/forum/lib.php /^function forum_add_instance($forum) {$/;" f -forum_add_new_post mod/forum/lib.php /^function forum_add_new_post($post,&$message) {$/;" f -forum_add_user mod/forum/lib.php /^function forum_add_user($userid, $courseid) {$/;" f +forum_add_new_post mod/forum/lib.php /^function forum_add_new_post($post) {$/;" f forum_backup_mods mod/forum/backuplib.php /^ function forum_backup_mods($bf,$preferences) {$/;" f forum_change_discussionid mod/forum/lib.php /^function forum_change_discussionid($postid, $discussionid) {$/;" f forum_check_backup_mods mod/forum/backuplib.php /^ function forum_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f -forum_clean_search_terms mod/forum/search.php /^function forum_clean_search_terms($words, $prefix='') {$/;" f -forum_count_discussion_replies mod/forum/lib.php /^function forum_count_discussion_replies($forum='0', $course='0', $user='0') {$/;" f +forum_count_discussion_replies mod/forum/lib.php /^function forum_count_discussion_replies($forum="0") {$/;" f forum_count_unrated_posts mod/forum/lib.php /^function forum_count_unrated_posts($discussionid, $userid) {$/;" f forum_cron mod/forum/lib.php /^function forum_cron () {$/;" f forum_decode_content_links mod/forum/restorelib.php /^ function forum_decode_content_links ($content,$restore) {$/;" f @@ -2901,7 +2597,7 @@ forum_get_ratings mod/forum/lib.php /^function forum_get_ratings($postid, $sort= forum_get_ratings_mean mod/forum/lib.php /^function forum_get_ratings_mean($postid, $scale, $ratings=NULL) {$/;" f forum_get_ratings_summary mod/forum/lib.php /^function forum_get_ratings_summary($postid, $scale, $ratings=NULL) {$/;" f forum_get_recent_mod_activity mod/forum/lib.php /^function forum_get_recent_mod_activity(&$activities, &$index, $sincetime, $courseid, $cmid="0", $user="", $groupid="") {$/;" f -forum_get_unmailed_posts mod/forum/lib.php /^function forum_get_unmailed_posts($starttime, $endtime) {$/;" f +forum_get_unmailed_posts mod/forum/lib.php /^function forum_get_unmailed_posts($cutofftime) {$/;" f forum_get_user_discussions mod/forum/lib.php /^function forum_get_user_discussions($courseid, $userid, $groupid=0) {$/;" f forum_get_user_grades mod/forum/lib.php /^function forum_get_user_grades($forumid) {$/;" f forum_get_user_posts mod/forum/lib.php /^function forum_get_user_posts($forumid, $userid) {$/;" f @@ -2913,63 +2609,45 @@ forum_is_subscribed mod/forum/lib.php /^function forum_is_subscribed($userid, $f forum_make_mail_html mod/forum/lib.php /^function forum_make_mail_html($course, $forum, $discussion, $post, $userfrom, $userto) {$/;" f forum_make_mail_post mod/forum/lib.php /^function forum_make_mail_post(&$post, $user, $touser, $course,$/;" f forum_make_mail_text mod/forum/lib.php /^function forum_make_mail_text($course, $forum, $discussion, $post, $userfrom, $userto, $bare = false) {$/;" f -forum_mark_old_posts_as_mailed mod/forum/lib.php /^function forum_mark_old_posts_as_mailed($endtime) {$/;" f -forum_menu_list mod/forum/search.php /^function forum_menu_list($course) {$/;" f forum_move_attachments mod/forum/lib.php /^function forum_move_attachments($discussion, $forumid) {$/;" f forum_post_ids_by_course mod/forum/backuplib.php /^ function forum_post_ids_by_course ($course) {$/;" f forum_post_subscription mod/forum/lib.php /^function forum_post_subscription($post) {$/;" f forum_posts_restore_mods mod/forum/restorelib.php /^ function forum_posts_restore_mods($new_forum_id,$discussion_id,$info,$restore) {$/;" f forum_print_attachments mod/forum/lib.php /^function forum_print_attachments($post, $return=NULL) {$/;" f -forum_print_big_search_form mod/forum/search.php /^function forum_print_big_search_form($course) {$/;" f forum_print_discussion mod/forum/lib.php /^function forum_print_discussion($course, $forum, $discussion, $post, $mode, $canreply=NULL) {$/;" f -forum_print_discussion_header mod/forum/lib.php /^function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring="") {$/;" f -forum_print_latest_discussions mod/forum/lib.php /^function forum_print_latest_discussions($course, $forum, $maxdiscussions=5, $displayformat='plain', $sort='',$/;" f +forum_print_discussion_header mod/forum/lib.php /^function forum_print_discussion_header(&$post, $forum, $datestring="") {$/;" f +forum_print_latest_discussions mod/forum/lib.php /^function forum_print_latest_discussions($forum_id=0, $forum_numdiscussions=5,$/;" f forum_print_mode_form mod/forum/lib.php /^function forum_print_mode_form($discussion, $mode) {$/;" f forum_print_post mod/forum/lib.php /^function forum_print_post(&$post, $courseid, $ownpost=false, $reply=false, $link=false,$/;" f -forum_print_posts_flat mod/forum/lib.php /^function forum_print_posts_flat($discussion, $courseid, $direction, $ratings, $reply, &$user_read_array, $forumid=0) {$/;" f -forum_print_posts_nested mod/forum/lib.php /^function forum_print_posts_nested($parent, $courseid, $ratings, $reply, &$user_read_array, $forumid=0) {$/;" f -forum_print_posts_threaded mod/forum/lib.php /^function forum_print_posts_threaded($parent, $courseid, $depth, $ratings, $reply, &$user_read_array, $forumid=0) {$/;" f +forum_print_posts_flat mod/forum/lib.php /^function forum_print_posts_flat($discussion, $course, $direction, $ratings, $reply) {$/;" f +forum_print_posts_nested mod/forum/lib.php /^function forum_print_posts_nested($parent, $course, $ratings, $reply) {$/;" f +forum_print_posts_threaded mod/forum/lib.php /^function forum_print_posts_threaded($parent, $course, $depth, $ratings, $reply) {$/;" f forum_print_rating_menu mod/forum/lib.php /^function forum_print_rating_menu($postid, $userid, $scale) {$/;" f forum_print_ratings_mean mod/forum/lib.php /^function forum_print_ratings_mean($postid, $scale, $link=true) {$/;" f forum_print_recent_activity mod/forum/lib.php /^function forum_print_recent_activity($course, $isteacher, $timestart) {$/;" f forum_print_recent_mod_activity mod/forum/lib.php /^function forum_print_recent_mod_activity($activity, $course, $detail=false) {$/;" f +forum_print_search_form mod/forum/lib.php /^function forum_print_search_form($course, $search="", $return=false, $type="") {$/;" f +forum_print_user_discussions mod/forum/lib.php /^function forum_print_user_discussions($courseid, $userid, $groupid=0) {$/;" f forum_rating_ids_by_course mod/forum/backuplib.php /^ function forum_rating_ids_by_course ($course) { $/;" f forum_ratings_restore_mods mod/forum/restorelib.php /^ function forum_ratings_restore_mods($new_post_id,$info,$restore) {$/;" f -forum_read_restore_mods mod/forum/restorelib.php /^ function forum_read_restore_mods($forum_id,$info,$restore) {$/;" f forum_restore_files mod/forum/restorelib.php /^ function forum_restore_files ($oldforid, $newforid, $oldpostid, $newpostid, $restore) {$/;" f forum_restore_logs mod/forum/restorelib.php /^ function forum_restore_logs($restore,$log) {$/;" f forum_restore_mods mod/forum/restorelib.php /^ function forum_restore_mods($mod,$restore) {$/;" f forum_rss_feed mod/forum/rsslib.php /^ function forum_rss_feed($forum) {$/;" f -forum_rss_feed_discussions mod/forum/rsslib.php /^ function forum_rss_feed_discussions($forum, $newsince=0) {$/;" f -forum_rss_feed_posts mod/forum/rsslib.php /^ function forum_rss_feed_posts($forum, $newsince=0) {$/;" f +forum_rss_feed_discussions mod/forum/rsslib.php /^ function forum_rss_feed_discussions($forum) {$/;" f +forum_rss_feed_posts mod/forum/rsslib.php /^ function forum_rss_feed_posts($forum) {$/;" f forum_rss_feeds mod/forum/rsslib.php /^ function forum_rss_feeds() {$/;" f -forum_rss_newstuff mod/forum/rsslib.php /^ function forum_rss_newstuff($forum, $time) {$/;" f forum_scale_used mod/forum/lib.php /^function forum_scale_used ($forumid,$scaleid) {$/;" f -forum_search_form mod/forum/lib.php /^function forum_search_form($course, $search='') {$/;" f -forum_search_posts mod/forum/lib.php /^function forum_search_posts($searchterms, $courseid, $page=0, $recordsperpage=50, &$totalcount, $groupid=0, $extrasql='') {$/;" f +forum_search_posts mod/forum/lib.php /^function forum_search_posts($searchterms, $courseid, $page=0, $recordsperpage=50, &$totalcount) {$/;" f forum_set_return mod/forum/lib.php /^function forum_set_return() {$/;" f forum_shorten_post mod/forum/lib.php /^function forum_shorten_post($message) {$/;" f forum_subscribe mod/forum/lib.php /^function forum_subscribe($userid, $forumid) {$/;" f forum_subscribed_users mod/forum/lib.php /^function forum_subscribed_users($course, $forum, $groupid=0) {$/;" f forum_subscription_ids_by_course mod/forum/backuplib.php /^ function forum_subscription_ids_by_course ($course) {$/;" f forum_subscriptions_restore_mods mod/forum/restorelib.php /^ function forum_subscriptions_restore_mods($forum_id,$info,$restore) {$/;" f -forum_tp_add_read_record mod/forum/lib.php /^function forum_tp_add_read_record($userid, $postid, $discussionid=-1, $forumid=-1) {$/;" f -forum_tp_clean_read_records mod/forum/lib.php /^function forum_tp_clean_read_records() {$/;" f -forum_tp_count_discussion_read_records mod/forum/lib.php /^function forum_tp_count_discussion_read_records($userid, $discussionid) {$/;" f -forum_tp_count_discussion_unread_posts mod/forum/lib.php /^function forum_tp_count_discussion_unread_posts($userid, $discussionid) {$/;" f -forum_tp_count_forum_posts mod/forum/lib.php /^function forum_tp_count_forum_posts($forumid, $groupid=false) {$/;" f -forum_tp_count_forum_read_records mod/forum/lib.php /^function forum_tp_count_forum_read_records($userid, $forumid, $groupid=false) {$/;" f -forum_tp_count_forum_unread_posts mod/forum/lib.php /^function forum_tp_count_forum_unread_posts($userid, $forumid, $groupid=false) {$/;" f -forum_tp_delete_read_records mod/forum/lib.php /^function forum_tp_delete_read_records($userid=-1, $postid=-1, $discussionid=-1, $forumid=-1) {$/;" f -forum_tp_get_discussion_read_records mod/forum/lib.php /^function forum_tp_get_discussion_read_records($userid, $discussionid) {$/;" f -forum_tp_get_read_records mod/forum/lib.php /^function forum_tp_get_read_records($userid=-1, $postid=-1, $discussionid=-1, $forumid=-1) {$/;" f -forum_tp_is_post_old mod/forum/lib.php /^function forum_tp_is_post_old(&$post, $time=null) {$/;" f -forum_tp_is_post_read mod/forum/lib.php /^function forum_tp_is_post_read($userid, &$post) {$/;" f -forum_tp_mark_post_read mod/forum/lib.php /^function forum_tp_mark_post_read($userid, &$post, $forumid) {$/;" f forum_unsubscribe mod/forum/lib.php /^function forum_unsubscribe($userid, $forumid) {$/;" f forum_update_instance mod/forum/lib.php /^function forum_update_instance($forum) {$/;" f -forum_update_post mod/forum/lib.php /^function forum_update_post($post,&$message) {$/;" f -forum_update_subscriptions_button mod/forum/lib.php /^function forum_update_subscriptions_button($courseid, $forumid) {$/;" f +forum_update_post mod/forum/lib.php /^function forum_update_post($post) {$/;" f forum_upgrade mod/forum/db/mysql.php /^function forum_upgrade($oldversion) {$/;" f forum_upgrade mod/forum/db/oci8po.php /^function forum_upgrade($oldversion) {$/;" f forum_upgrade mod/forum/db/postgres7.php /^function forum_upgrade($oldversion) {$/;" f @@ -2978,78 +2656,34 @@ forum_user_can_post_discussion mod/forum/lib.php /^function forum_user_can_post_ forum_user_complete mod/forum/lib.php /^function forum_user_complete($course, $user, $mod, $forum) {$/;" f forum_user_has_posted_discussion mod/forum/lib.php /^function forum_user_has_posted_discussion($forumid, $userid) {$/;" f forum_user_outline mod/forum/lib.php /^function forum_user_outline($course, $user, $mod, $forum) {$/;" f -frageplayer_error mod/quiz/imsattempt.php /^ function frageplayer_error($errorstr, $exit = true) {$/;" f -frageplayer_success mod/quiz/imsattempt.php /^ function frageplayer_success($successstr, $exit = true) {$/;" f freeze_panes lib/excel/Worksheet.php /^ function freeze_panes($panes)$/;" f -frmchecked lib/weblib.php /^function frmchecked(&$var, $true_value = 'checked', $false_value = '') {$/;" f +frmchecked lib/weblib.php /^function frmchecked(&$var, $true_value = "checked", $false_value = "") {$/;" f full_tag backup/backuplib.php /^ function full_tag($tag,$level=0,$endline=true,$content,$to_utf=true) {$/;" f fulldelete files/index.php /^function fulldelete($location) { $/;" f fulldelete lib/editor/coursefiles.php /^function fulldelete($location) {$/;" f -fulldelete mod/quiz/format/coursetestmanager/format.php /^ function fulldelete($location) {$/;" f +fulldelete lib/editor/courseimages.php /^function fulldelete($location) { $/;" f +fulldelete mod/quiz/format/coursetestmanager/format.php /^ function fulldelete($location) { $/;" f +fulldelete mod/resource/coursefiles.php /^function fulldelete($location) { $/;" f +fulldelete mod/scorm/coursefiles.php /^function fulldelete($location) { $/;" f +fulldelete mod/wiki/wikifiles.php /^function fulldelete($location) { $/;" f fullname lib/moodlelib.php /^function fullname($user, $override=false) {$/;" f gc lib/adodb/session/adodb-session.php /^ function gc($maxlifetime) {$/;" f -generate_dataset_item mod/quiz/questiontypes/calculated/questiontype.php /^ function generate_dataset_item($options) {$/;" f -generate_dataset_item mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function generate_dataset_item($options) {$/;" f -generate_email_processing_address lib/moodlelib.php /^function generate_email_processing_address($modid,$modargs) {$/;" f generate_password lib/moodlelib.php /^function generate_password($maxlen=10) {$/;" f get lib/smarty/Config_File.class.php /^ function &get($file_name, $section_name = NULL, $var_name = NULL)$/;" f get mod/wiki/ewiki/ewiki.php /^ function get($all=0, $flags=0x00) {$/;" f getBlockSize lib/adodb/session/adodb-compress-bzip2.php /^ function getBlockSize() {$/;" f -getCallbackURL lib/cas/client.php /^ function getCallbackURL()$/;" f getCipher lib/adodb/session/adodb-encrypt-mcrypt.php /^ function getCipher() {$/;" f getContents backup/restorelib.php /^ function getContents() {$/;" f -getCurrent lib/lexer.php /^ function getCurrent() {$/;" f -getErrorMessage lib/cas/PGTStorage/pgt-main.php /^ function getErrorMessage()$/;" f -getFormat lib/cas/PGTStorage/pgt-file.php /^ function getFormat()$/;" f -getGroups auth/fc/fcFPP.php /^ function getGroups($userid){$/;" f getIterator lib/adodb/adodb-iterator.inc.php /^ function getIterator() {$/;" f -getLang lib/cas/client.php /^ function getLang()$/;" f getLevel lib/adodb/session/adodb-compress-gzip.php /^ function getLevel() {$/;" f -getLink lib/cas/PGTStorage/pgt-db.php /^ function getLink()$/;" f getMinLength lib/adodb/session/adodb-compress-bzip2.php /^ function getMinLength() {$/;" f getMinLength lib/adodb/session/adodb-compress-gzip.php /^ function getMinLength() {$/;" f getMode lib/adodb/session/adodb-encrypt-mcrypt.php /^ function getMode() {$/;" f -getMozSelection lib/editor/htmlarea.php /^ function getMozSelection(txtarea) {$/;" f -getPGT lib/cas/client.php /^ function getPGT()$/;" f -getPGTIouFilename lib/cas/PGTStorage/pgt-file.php /^ function getPGTIouFilename($pgt_iou)$/;" f -getPT lib/cas/client.php /^ function getPT()$/;" f -getPath lib/cas/PGTStorage/pgt-file.php /^ function getPath()$/;" f -getResume auth/fc/fcFPP.php /^ function getResume($userid){$/;" f getSQL lib/adodb/adodb-xmlschema.inc.php /^ function getSQL( $format = NULL, $sqlArray = NULL ) {$/;" f -getST lib/cas/client.php /^ function getST()$/;" f -getServerBaseURL lib/cas/client.php /^ function getServerBaseURL()$/;" f -getServerHostname lib/cas/client.php /^ function getServerHostname()$/;" f -getServerLoginURL lib/cas/CAS.php /^ function getServerLoginURL()$/;" f -getServerLoginURL lib/cas/client.php /^ function getServerLoginURL()$/;" f -getServerLogoutURL lib/cas/CAS.php /^ function getServerLogoutURL()$/;" f -getServerLogoutURL lib/cas/client.php /^ function getServerLogoutURL()$/;" f -getServerPort lib/cas/client.php /^ function getServerPort()$/;" f -getServerProxyURL lib/cas/client.php /^ function getServerProxyURL()$/;" f -getServerProxyValidateURL lib/cas/client.php /^ function getServerProxyValidateURL()$/;" f -getServerServiceValidateURL lib/cas/client.php /^ function getServerServiceValidateURL()$/;" f -getServerURI lib/cas/client.php /^ function getServerURI()$/;" f -getServerVersion lib/cas/client.php /^ function getServerVersion()$/;" f getSource lib/adodb/session/adodb-encrypt-mcrypt.php /^ function getSource() {$/;" f -getStorageInfo lib/cas/PGTStorage/pgt-db.php /^ function getStorageInfo()$/;" f -getStorageInfo lib/cas/PGTStorage/pgt-file.php /^ function getStorageInfo()$/;" f -getStorageInfo lib/cas/PGTStorage/pgt-main.php /^ function getStorageInfo()$/;" f -getStorageType lib/cas/PGTStorage/pgt-db.php /^ function getStorageType()$/;" f -getStorageType lib/cas/PGTStorage/pgt-file.php /^ function getStorageType()$/;" f -getStorageType lib/cas/PGTStorage/pgt-main.php /^ function getStorageType()$/;" f -getString lib/cas/client.php /^ function getString($str)$/;" f -getTable lib/cas/PGTStorage/pgt-db.php /^ function getTable()$/;" f -getType lib/searchlib.php /^ function getType(){$/;" f -getURL lib/cas/PGTStorage/pgt-db.php /^ function getURL()$/;" f -getURL lib/cas/client.php /^ function getURL()$/;" f -getUser lib/cas/CAS.php /^ function getUser()$/;" f -getUser lib/cas/client.php /^ function getUser()$/;" f -getUserInfo auth/fc/fcFPP.php /^ function getUserInfo($userid, $field){$/;" f -getValue lib/searchlib.php /^ function getValue(){ $/;" f -getVersion lib/cas/CAS.php /^ function getVersion()$/;" f getWorkLevel lib/adodb/session/adodb-compress-bzip2.php /^ function getWorkLevel() {$/;" f get_access_icons enrol/database/enrol.php /^function get_access_icons($course) {$/;" f get_access_icons enrol/enrol.class.php /^function get_access_icons($course) {$/;" f -get_access_icons enrol/ldap/enrol.php /^function get_access_icons($course) {$/;" f get_access_icons enrol/paypal/enrol.php /^function get_access_icons($course) {$/;" f get_admin lib/datalib.php /^function get_admin () {$/;" f get_admins lib/datalib.php /^function get_admins() {$/;" f @@ -3057,198 +2691,131 @@ get_all_instances_in_course lib/datalib.php /^function get_all_instances_in_cour get_all_mods course/lib.php /^function get_all_mods($courseid, &$mods, &$modnames, &$modnamesplural, &$modnamesused) {$/;" f get_all_sections course/lib.php /^function get_all_sections($courseid) {$/;" f get_and_set_current_group lib/moodlelib.php /^function get_and_set_current_group($course, $groupmode, $groupid=-1) {$/;" f -get_answers mod/quiz/locallib.php /^ function get_answers($question) {$/;" f -get_answers mod/quiz/questiontypes/calculated/modifiednumericalqtype.php /^ function get_answers($question, $addedcondition='') {$/;" f -get_answers mod/quiz/questiontypes/calculated/questiontype.php /^ function get_answers($question) {$/;" f +get_answers mod/quiz/lib.php /^ function get_answers($question) {$/;" f get_answers mod/quiz/questiontypes/multianswer/questiontype.php /^ function get_answers($question) {$/;" f get_answers mod/quiz/questiontypes/multichoice/questiontype.php /^ function get_answers($question, $addedcondition= '') {$/;" f get_answers mod/quiz/questiontypes/numerical/questiontype.php /^ function get_answers($question, $addedcondition='') {$/;" f get_answers mod/quiz/questiontypes/shortanswer/questiontype.php /^ function get_answers($question, $addedcondition='') {$/;" f get_array_of_activities course/lib.php /^function get_array_of_activities($courseid) {$/;" f -get_assesment_item_id mod/quiz/format/qti/format.php /^ function get_assesment_item_id($question) {$/;" f get_attendance_for_section mod/attendance/lib.php /^function get_attendance_for_section($instance, $courseid) {$/;" f get_attendance_for_week mod/attendance/lib.php /^function get_attendance_for_week($id, $courseid) {$/;" f -get_attribute lib/cas/domxml-php4-php5.php /^ function get_attribute($name) {return $this->myDOMNode->getAttribute($name);}$/;" f -get_body_class lib/pagelib.php /^ function get_body_class() {$/;" f -get_body_id lib/pagelib.php /^ function get_body_id() {$/;" f get_boundaryBox lib/graphlib.php /^function get_boundaryBox($message) {$/;" f -get_categories lib/datalib.php /^function get_categories($parent='none', $sort='sortorder ASC') {$/;" f -get_clam_error_code lib/uploadlib.php /^function get_clam_error_code($returncode) {$/;" f +get_categories lib/datalib.php /^function get_categories($parent="none", $sort="sortorder ASC") {$/;" f get_class_constructor lib/blocklib.php /^function get_class_constructor($classname) {$/;" f -get_cloze_answers_array mod/quiz/format/qti/format.php /^ function get_cloze_answers_array($question) {$/;" f -get_cloze_intro mod/quiz/format/qti/format.php /^ function get_cloze_intro(&$text) {$/;" f -get_cloze_questions mod/quiz/format/qti/format.php /^ function get_cloze_questions($question, $answers, $allowabletags) {$/;" f -get_config_options mod/quiz/locallib.php /^ function get_config_options() {$/;" f get_config_vars lib/smarty/Smarty.class.php /^ function &get_config_vars($name=null)$/;" f get_content blocks/activity_modules/block_activity_modules.php /^ function get_content() {$/;" f get_content blocks/admin/block_admin.php /^ function get_content() {$/;" f +get_content blocks/advertisement/block_advertisement.php /^ function get_content() {$/;" f get_content blocks/calendar_month/block_calendar_month.php /^ function get_content() {$/;" f get_content blocks/calendar_upcoming/block_calendar_upcoming.php /^ function get_content() {$/;" f get_content blocks/course_list/block_course_list.php /^ function get_content() {$/;" f get_content blocks/course_summary/block_course_summary.php /^ function get_content() {$/;" f -get_content blocks/glossary_random/block_glossary_random.php /^ function get_content() {$/;" f -get_content blocks/html/block_html.php /^ function get_content() {$/;" f -get_content blocks/login/block_login.php /^ function get_content () {$/;" f -get_content blocks/messages/block_messages.php /^ function get_content() {$/;" f get_content blocks/moodleblock.class.php /^ function get_content() {$/;" f get_content blocks/news_items/block_news_items.php /^ function get_content() {$/;" f get_content blocks/online_users/block_online_users.php /^ function get_content() {$/;" f get_content blocks/participants/block_participants.php /^ function get_content() {$/;" f -get_content blocks/quiz_results/block_quiz_results.php /^ function get_content() {$/;" f get_content blocks/recent_activity/block_recent_activity.php /^ function get_content() {$/;" f -get_content blocks/rss_client/block_rss_client.php /^ function get_content() {$/;" f +get_content blocks/rssfeed/block_rssfeed.php /^ function get_content() {$/;" f get_content blocks/search_forums/block_search_forums.php /^ function get_content() {$/;" f get_content blocks/section_links/block_section_links.php /^ function get_content() {$/;" f get_content blocks/site_main_menu/block_site_main_menu.php /^ function get_content() {$/;" f get_content blocks/social_activities/block_social_activities.php /^ function get_content() {$/;" f -get_content lib/cas/domxml-php4-php5.php /^ function get_content() {return $this->myDOMNode->textContent;}$/;" f get_content_type blocks/moodleblock.class.php /^ function get_content_type() {$/;" f -get_correct_answers mod/quiz/format/qti/format.php /^ function get_correct_answers($answers)$/;" f -get_course_ids mod/quiz/category.php /^ function get_course_ids($categories) {$/;" f -get_course_media_files mod/quiz/format/qti/qt_common.php /^function get_course_media_files($courseid) $/;" f get_course_mods lib/datalib.php /^function get_course_mods($courseid) {$/;" f -get_course_students lib/datalib.php /^function get_course_students($courseid, $sort='s.timeaccess', $dir='', $page=0, $recordsperpage=99999,$/;" f -get_course_teachers lib/datalib.php /^function get_course_teachers($courseid, $sort='t.authority ASC', $exceptions='') {$/;" f -get_course_users lib/datalib.php /^function get_course_users($courseid, $sort='timeaccess DESC', $exceptions='', $fields='') {$/;" f -get_coursemodule_from_instance lib/datalib.php /^function get_coursemodule_from_instance($modulename, $instance, $courseid=0) {$/;" f +get_course_students lib/datalib.php /^function get_course_students($courseid, $sort="s.timeaccess", $dir="", $page=0, $recordsperpage=99999,$/;" f +get_course_teachers lib/datalib.php /^function get_course_teachers($courseid, $sort="t.authority ASC") {$/;" f +get_course_users lib/datalib.php /^function get_course_users($courseid, $sort="timeaccess DESC") {$/;" f +get_coursemodule_from_instance lib/datalib.php /^function get_coursemodule_from_instance($modulename, $instance, $courseid) {$/;" f get_courses lib/datalib.php /^function get_courses($categoryid="all", $sort="c.sortorder ASC", $fields="c.*") {$/;" f -get_courses_in_metacourse lib/datalib.php /^function get_courses_in_metacourse($metacourseid) {$/;" f -get_courses_notin_metacourse lib/datalib.php /^function get_courses_notin_metacourse($metacourseid,$count=false) {$/;" f -get_courses_page lib/datalib.php /^function get_courses_page($categoryid="all", $sort="c.sortorder ASC", $fields="c.*",$/;" f -get_courses_search lib/datalib.php /^function get_courses_search($searchterms, $sort='fullname ASC', $page=0, $recordsperpage=50, &$totalcount) {$/;" f +get_courses_page lib/datalib.php /^function get_courses_page($categoryid="all", $sort="c.sortorder ASC", $fields="c.*", $/;" f +get_courses_search lib/datalib.php /^function get_courses_search($searchterms, $sort="fullname ASC", $page=0, $recordsperpage=50, &$totalcount) {$/;" f get_creators lib/datalib.php /^function get_creators() {$/;" f get_current_group lib/moodlelib.php /^function get_current_group($courseid, $full=false) {$/;" f get_data lib/excel/Worksheet.php /^ function get_data()$/;" f -get_directory_list lib/moodlelib.php /^function get_directory_list($rootdir, $excludefile='', $descend=true, $getdirs=false, $getfiles=true) {$/;" f -get_directory_size lib/moodlelib.php /^function get_directory_size($rootdir, $excludefile='') {$/;" f -get_element_by_id lib/cas/domxml-php4-php5.php /^ function get_element_by_id($id) {return new php4DOMElement($this->myDOMNode->getElementById($id),$this);}$/;" f -get_elements_by_tagname lib/cas/domxml-php4-php5.php /^ function get_elements_by_tagname($name)$/;" f -get_errors lib/uploadlib.php /^ function get_errors() {$/;" f -get_exp_answer mod/quiz/locallib.php /^function get_exp_answer( $id ) {$/;" f -get_exp_answers mod/quiz/locallib.php /^function get_exp_answers( $question_num ) {$/;" f -get_field lib/datalib.php /^function get_field($table, $return, $field1, $value1, $field2='', $value2='', $field3='', $value3='') {$/;" f +get_directory_list lib/moodlelib.php /^function get_directory_list($rootdir, $excludefile="", $descend=true, $getdirs=false, $getfiles=true) {$/;" f +get_directory_size lib/moodlelib.php /^function get_directory_size($rootdir, $excludefile="") {$/;" f +get_exp_answer mod/quiz/lib.php /^function get_exp_answer( $id ) {$/;" f +get_exp_answers mod/quiz/lib.php /^function get_exp_answers( $question_num ) {$/;" f +get_field lib/datalib.php /^function get_field($table, $return, $field1, $value1, $field2="", $value2="", $field3="", $value3="") {$/;" f get_field_sql lib/datalib.php /^function get_field_sql($sql) {$/;" f -get_file_argument lib/weblib.php /^function get_file_argument($scriptname) {$/;" f -get_file_dimensions mod/quiz/format/qti/qt_common.php /^function get_file_dimensions($file) {$/;" f get_file_names lib/smarty/Config_File.class.php /^ function get_file_names()$/;" f -get_file_upload_error lib/uploadlib.php /^ function get_file_upload_error(&$file) {$/;" f get_font lib/excel/Format.php /^ function get_font()$/;" f get_font_key lib/excel/Format.php /^ function get_font_key()$/;" f -get_format mod/quiz/format/xml/format.php /^function get_format( $id ) {$/;" f -get_format_name lib/pagelib.php /^ function get_format_name() {$/;" f -get_group_students lib/datalib.php /^function get_group_students($groupid, $sort='u.lastaccess DESC') {$/;" f -get_group_teachers mod/assignment/lib.php /^ function get_group_teachers($courseid, $groupid) {$/;" f -get_group_users lib/datalib.php /^function get_group_users($groupid, $sort='u.lastaccess DESC', $exceptions='', $fields='u.*') {$/;" f +get_group_students lib/datalib.php /^function get_group_students($groupid, $sort="u.lastaccess DESC") {$/;" f +get_group_users lib/datalib.php /^function get_group_users($groupid, $sort="u.lastaccess DESC") {$/;" f get_groups lib/datalib.php /^function get_groups($courseid, $userid=0) {$/;" f get_guest lib/datalib.php /^function get_guest() {$/;" f -get_id lib/pagelib.php /^ function get_id() {$/;" f +get_header blocks/moodleblock.class.php /^ function get_header() {$/;" f get_image_size lib/editor/coursefiles.php /^function get_image_size($filepath) {$/;" f get_key lib/smarty/Config_File.class.php /^ function &get_key($config_key)$/;" f get_lines lib/phpmailer/class.smtp.php /^ function get_lines() {$/;" f get_list_of_countries lib/moodlelib.php /^function get_list_of_countries() {$/;" f get_list_of_languages lib/moodlelib.php /^function get_list_of_languages() {$/;" f get_list_of_pixnames lib/moodlelib.php /^function get_list_of_pixnames() {$/;" f -get_list_of_plugins lib/moodlelib.php /^function get_list_of_plugins($plugin='mod', $exclude='') {$/;" f -get_list_of_questions mod/quiz/locallib.php /^function get_list_of_questions($questionlist) {$/;" f -get_list_of_themes lib/moodlelib.php /^function get_list_of_themes() {$/;" f -get_list_of_timezones lib/moodlelib.php /^function get_list_of_timezones() {$/;" f -get_logs lib/datalib.php /^function get_logs($select, $order='l.time DESC', $limitfrom='', $limitnum='', &$totalcount) {$/;" f +get_list_of_plugins lib/moodlelib.php /^function get_list_of_plugins($plugin="mod", $exclude="") {$/;" f +get_list_of_questions mod/quiz/lib.php /^function get_list_of_questions($questionlist) {$/;" f +get_logs lib/datalib.php /^function get_logs($select, $order="l.time DESC", $limitfrom="", $limitnum="", &$totalcount) {$/;" f get_logs_usercourse lib/datalib.php /^function get_logs_usercourse($userid, $courseid, $coursestart) {$/;" f get_logs_userday lib/datalib.php /^function get_logs_userday($userid, $courseid, $daystart) {$/;" f get_max_upload_file_size lib/moodlelib.php /^function get_max_upload_file_size($sitebytes=0, $coursebytes=0, $modulebytes=0) {$/;" f get_max_upload_sizes lib/moodlelib.php /^function get_max_upload_sizes($sitebytes=0, $coursebytes=0, $modulebytes=0) {$/;" f -get_media_tag mod/quiz/format/qti/qt_common.php /^function get_media_tag($file, $courseid = 0, $alt = 'media file', $width = 0, $height = 0) {$/;" f -get_memory_limit install.php /^function get_memory_limit() {$/;" f get_module_type backup/lib.php /^ function get_module_type ($courseid,$moduleid) {$/;" f get_moodle_cookie lib/moodlelib.php /^function get_moodle_cookie() {$/;" f -get_multianswers mod/quiz/questiontypes/multianswer/questiontype.php /^ function get_multianswers($questionid) {$/;" f -get_my_courses lib/datalib.php /^function get_my_courses($userid, $sort='visible DESC,sortorder ASC') {$/;" f +get_my_courses lib/datalib.php /^function get_my_courses($userid, $sort="visible DESC,sortorder ASC") {$/;" f get_name lib/excel/Worksheet.php /^ function get_name()$/;" f -get_new_filename lib/uploadlib.php /^ function get_new_filename() {$/;" f -get_new_filepath lib/uploadlib.php /^ function get_new_filepath() {$/;" f get_null_size lib/graphlib.php /^function get_null_size() {$/;" f -get_original_filename lib/uploadlib.php /^ function get_original_filename() {$/;" f -get_page_size lib/tablelib.php /^ function get_page_size() {$/;" f -get_page_start lib/tablelib.php /^ function get_page_start() {$/;" f -get_parsed_array lib/searchlib.php /^ function get_parsed_array(){$/;" f -get_performance_info lib/moodlelib.php /^function get_performance_info() {$/;" f -get_position_multianswer mod/quiz/questiontypes/multianswer/questiontype.php /^ function get_position_multianswer($questionid, $positionkey) {$/;" f -get_qti_interaction_type mod/quiz/format/qti/format.php /^ function get_qti_interaction_type($type_id) {$/;" f -get_qti_scoreable mod/quiz/format/qti/format.php /^ function get_qti_scoreable($question) {$/;" f -get_qti_solution_available mod/quiz/format/qti/format.php /^ function get_qti_solution_available($question) {$/;" f -get_qtype mod/quiz/format/qti/format.php /^ function get_qtype( $type_id ) {$/;" f -get_qtype mod/quiz/format/xml/format.php /^function get_qtype( $type_id ) {$/;" f -get_question_data mod/quiz/locallib.php /^function get_question_data( $question ) {$/;" f -get_questions_category mod/quiz/locallib.php /^function get_questions_category( $category ) {$/;" f -get_quiz_categories mod/quiz/category.php /^ function get_quiz_categories($parent=null, $sort="sortorder ASC") {$/;" f +get_question_data mod/quiz/lib.php /^function get_question_data( $question ) {$/;" f +get_questions_category mod/quiz/lib.php /^function get_questions_category( $category ) {$/;" f get_real_size lib/moodlelib.php /^function get_real_size($size=0) {$/;" f get_recent_enrolments lib/datalib.php /^function get_recent_enrolments($courseid, $timestart) {$/;" f -get_record lib/datalib.php /^function get_record($table, $field1, $value1, $field2='', $value2='', $field3='', $value3='', $fields='*') {$/;" f -get_record_select lib/datalib.php /^function get_record_select($table, $select='', $fields='*') {$/;" f +get_record lib/datalib.php /^function get_record($table, $field1, $value1, $field2="", $value2="", $field3="", $value3="") {$/;" f +get_record_select lib/datalib.php /^function get_record_select($table, $select="", $fields="*") {$/;" f get_record_sql lib/datalib.php /^function get_record_sql($sql) {$/;" f -get_records lib/datalib.php /^function get_records($table, $field='', $value='', $sort='', $fields='*', $limitfrom='', $limitnum='') {$/;" f -get_records_csv lib/filelib.php /^function get_records_csv($file, $table) {$/;" f -get_records_list lib/datalib.php /^function get_records_list($table, $field='', $values='', $sort='', $fields='*') {$/;" f -get_records_menu lib/datalib.php /^function get_records_menu($table, $field='', $value='', $sort='', $fields='*') {$/;" f -get_records_select lib/datalib.php /^function get_records_select($table, $select='', $sort='', $fields='*', $limitfrom='', $limitnum='') {$/;" f -get_records_select_menu lib/datalib.php /^function get_records_select_menu($table, $select='', $sort='', $fields='*') {$/;" f +get_records lib/datalib.php /^function get_records($table, $field="", $value="", $sort="", $fields="*", $limitfrom="", $limitnum="") {$/;" f +get_records_list lib/datalib.php /^function get_records_list($table, $field="", $values="", $sort="", $fields="*") {$/;" f +get_records_menu lib/datalib.php /^function get_records_menu($table, $field="", $value="", $sort="", $fields="*") {$/;" f +get_records_select lib/datalib.php /^function get_records_select($table, $select="", $sort="", $fields="*", $limitfrom="", $limitnum="") {$/;" f +get_records_select_menu lib/datalib.php /^function get_records_select_menu($table, $select="", $sort="", $fields="*") {$/;" f get_records_sql lib/datalib.php /^function get_records_sql($sql) {$/;" f get_records_sql_menu lib/datalib.php /^function get_records_sql_menu($sql) {$/;" f get_referer lib/weblib.php /^function get_referer() {$/;" f get_registered_object lib/smarty/Smarty.class.php /^ function &get_registered_object($name) {$/;" f -get_rss_by_id blocks/rss_client/block_rss_client.php /^ function get_rss_by_id($rssid, $display_description, $shownumentries, $showtitle=false) {$/;" f get_scales_menu lib/datalib.php /^function get_scales_menu($courseid=0) {$/;" f get_section_names lib/smarty/Config_File.class.php /^ function get_section_names($file_name)$/;" f -get_single mod/quiz/format/xml/format.php /^function get_single( $id ) {$/;" f -get_site lib/datalib.php /^function get_site() {$/;" f -get_site_users lib/datalib.php /^function get_site_users($sort='u.lastaccess DESC', $fields='*', $exceptions='') {$/;" f -get_slash_arguments lib/weblib.php /^function get_slash_arguments($file='file.php') {$/;" f -get_sql_sort lib/tablelib.php /^ function get_sql_sort() {$/;" f -get_sql_where lib/tablelib.php /^ function get_sql_where() {$/;" f -get_string lib/moodlelib.php /^function get_string($identifier, $module='', $a=NULL) {$/;" f +get_site lib/datalib.php /^function get_site () {$/;" f +get_site_users lib/datalib.php /^function get_site_users($sort="u.lastaccess DESC", $select="") {$/;" f +get_slash_arguments lib/weblib.php /^function get_slash_arguments($file="file.php") {$/;" f +get_string lib/moodlelib.php /^function get_string($identifier, $module="", $a=NULL) {$/;" f get_string_from_file lib/moodlelib.php /^function get_string_from_file($identifier, $langfile, $destination) {$/;" f get_strings lib/moodlelib.php /^function get_strings($array, $module='') {$/;" f get_student_courses enrol/database/enrol.php /^function get_student_courses(&$user) {$/;" f get_student_courses enrol/enrol.class.php /^function get_student_courses(&$user) {$/;" f -get_student_courses enrol/ldap/enrol.php /^function get_student_courses(&$user) {$/;" f -get_subdirs backup/bb/restore_bb.php /^function get_subdirs($directory){$/;" f get_teacher lib/datalib.php /^function get_teacher($courseid) {$/;" f get_teacher_courses enrol/enrol.class.php /^function get_teacher_courses(&$user) {$/;" f -get_teacher_courses enrol/ldap/enrol.php /^function get_teacher_courses(&$user) {$/;" f get_template_vars lib/smarty/Smarty.class.php /^ function &get_template_vars($name=null)$/;" f -get_timezone_record lib/moodlelib.php /^function get_timezone_record($timezonename) {$/;" f get_title blocks/moodleblock.class.php /^ function get_title() {$/;" f -get_type blocks/pagedemo.php /^ function get_type() {$/;" f -get_type lib/pagelib.php /^ function get_type() {$/;" f -get_type mod/chat/pagelib.php /^ function get_type() {$/;" f -get_type mod/quiz/pagelib.php /^ function get_type() {$/;" f -get_user_courses enrol/ldap/enrol.php /^function get_user_courses(&$user, $type) {$/;" f -get_user_fieldnames lib/moodlelib.php /^function get_user_fieldnames() {$/;" f get_user_info_from_db lib/datalib.php /^function get_user_info_from_db($field, $value) {$/;" f -get_user_preferences lib/moodlelib.php /^function get_user_preferences($name=NULL, $default=NULL, $userid=NULL) {$/;" f +get_user_preferences lib/moodlelib.php /^function get_user_preferences($name=NULL, $default=NULL) {$/;" f get_user_timezone lib/moodlelib.php /^function get_user_timezone($tz = 99) {$/;" f -get_user_timezone_offset lib/moodlelib.php /^function get_user_timezone_offset($tz = 99) {$/;" f -get_user_window mod/chat/chatd.php /^ function get_user_window($sessionid) {$/;" f -get_users lib/datalib.php /^function get_users($get=true, $search='', $confirmed=false, $exceptions='', $sort='firstname ASC',$/;" f +get_users lib/datalib.php /^function get_users($get=true, $search="", $confirmed=false, $exceptions="", $sort="firstname ASC",$/;" f get_users_confirmed lib/datalib.php /^function get_users_confirmed() {$/;" f -get_users_listing lib/datalib.php /^function get_users_listing($sort='lastaccess', $dir='ASC', $page=0, $recordsperpage=99999,$/;" f +get_users_listing lib/datalib.php /^function get_users_listing($sort="lastaccess", $dir="ASC", $page=0, $recordsperpage=99999,$/;" f get_users_longtimenosee lib/datalib.php /^function get_users_longtimenosee($cutofftime) {$/;" f get_users_not_in_group lib/datalib.php /^function get_users_not_in_group($courseid) {$/;" f get_users_unconfirmed lib/datalib.php /^function get_users_unconfirmed($cutofftime=2000000000) {$/;" f get_var_names lib/smarty/Config_File.class.php /^ function get_var_names($file_name, $section = NULL)$/;" f get_version blocks/moodleblock.class.php /^ function get_version() {$/;" f -get_virtual_qtype mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function get_virtual_qtype() {$/;" f get_wrapped_question mod/quiz/questiontypes/random/questiontype.php /^ function get_wrapped_question($question, $nameprefix) {$/;" f get_xf lib/excel/Format.php /^ function get_xf($style)$/;" f get_xf_index lib/excel/Format.php /^ function get_xf_index()$/;" f getchar lib/editor/popups/dlg_ins_char.php /^function getchar(obj) {$/;" f getcoursedirs mod/quiz/format/coursetestmanager/format.php /^ function getcoursedirs() {$/;" f getmicrotime lib/adodb/tests/test-pgblob.php /^function getmicrotime()$/;" f +getmicrotime speed.php /^function getmicrotime(){ $/;" f getquestioncategories mod/quiz/format/coursetestmanager/format.php /^ function getquestioncategories($filename, $mdapath="", $hostname="") {$/;" f -getquestions mod/quiz/format/coursetestmanager/format.php /^ function getquestions($filename, $category, $mdapath="", $hostname="") {$/;" f -getremoteaddr lib/moodlelib.php /^ function getremoteaddr() {$/;" f +getquestions mod/quiz/format/coursetestmanager/format.php /^ function getquestions($filename, $category, $mdapath="", $hostname="") {$/;" f getweek lib/moodlelib.php /^function getweek ($startdate, $thedate) {$/;" f -glossary_add_attachment mod/glossary/lib.php /^function glossary_add_attachment($entry, $inputname) {$/;" f +glossary_add_attachment mod/glossary/lib.php /^function glossary_add_attachment($entry, $newfile) {$/;" f glossary_add_instance mod/glossary/lib.php /^function glossary_add_instance($glossary) {$/;" f glossary_addslashes mod/glossary/filter.php /^ function glossary_addslashes ( $chars, $text ) {$/;" f glossary_alias_restore_mods mod/glossary/restorelib.php /^ function glossary_alias_restore_mods($old_entry_id,$new_entry_id,$info,$restore) {$/;" f @@ -3266,21 +2833,19 @@ glossary_debug mod/glossary/lib.php /^function glossary_debug($debug,$text,$br=1 glossary_delete_attachments mod/glossary/lib.php /^function glossary_delete_attachments($glossary) {$/;" f glossary_delete_instance mod/glossary/lib.php /^function glossary_delete_instance($id) {$/;" f glossary_delete_old_attachments mod/glossary/lib.php /^function glossary_delete_old_attachments($entry, $exception="") {$/;" f +glossary_dynamic_link mod/glossary/filter.php /^ function glossary_dynamic_link($courseid, $text) {$/;" f glossary_end_tag mod/glossary/lib.php /^function glossary_end_tag($tag,$level=0,$endline=true) {$/;" f glossary_entries_categories_restore_mods mod/glossary/restorelib.php /^ function glossary_entries_categories_restore_mods($old_category_id,$new_category_id,$info,$restore) {$/;" f glossary_entries_ids_by_course mod/glossary/backuplib.php /^ function glossary_entries_ids_by_course ($course) {$/;" f glossary_entries_restore_mods mod/glossary/restorelib.php /^ function glossary_entries_restore_mods($old_glossary_id,$new_glossary_id,$info,$restore) {$/;" f glossary_file_area mod/glossary/lib.php /^function glossary_file_area($entry) {$/;" f glossary_file_area_name mod/glossary/lib.php /^function glossary_file_area_name($entry) {$/;" f -glossary_filter mod/glossary/filter.php /^ function glossary_filter($courseid, $text) {$/;" f glossary_full_tag mod/glossary/lib.php /^function glossary_full_tag($tag,$level=0,$endline=true,$content,$to_utf=true) {$/;" f glossary_generate_export_file mod/glossary/lib.php /^function glossary_generate_export_file($glossary, $hook = "", $hook = 0) {$/;" f glossary_get_available_formats mod/glossary/lib.php /^function glossary_get_available_formats() {$/;" f glossary_get_entries mod/glossary/lib.php /^function glossary_get_entries($glossaryid, $entrylist, $pivot = "") {$/;" f glossary_get_entries_by_category mod/glossary/lib.php /^function glossary_get_entries_by_category($glossary, $hook, $where="", $orderby="", $pivot = "") {$/;" f -glossary_get_entries_search mod/glossary/lib.php /^function glossary_get_entries_search($concept, $courseid) {$/;" f glossary_get_entries_sorted mod/glossary/lib.php /^function glossary_get_entries_sorted($glossary, $where="", $orderby="", $pivot = "") {$/;" f -glossary_get_paging_bar mod/glossary/lib.php /^function glossary_get_paging_bar($totalcount, $page, $perpage, $baseurl, $maxpageallowed=99999, $maxdisplay=20, $separator="&nbsp;", $specialtext="", $specialvalue=-1, $previousandnext = true) {$/;" f glossary_get_participants mod/glossary/lib.php /^function glossary_get_participants($glossaryid) {$/;" f glossary_get_ratings mod/glossary/lib.php /^function glossary_get_ratings($entryid, $sort="u.firstname ASC") {$/;" f glossary_get_ratings_mean mod/glossary/lib.php /^function glossary_get_ratings_mean($entryid, $scale, $ratings=NULL) {$/;" f @@ -3289,6 +2854,7 @@ glossary_get_user_entries mod/glossary/lib.php /^function glossary_get_user_entr glossary_get_user_grades mod/glossary/lib.php /^function glossary_get_user_grades($glossaryid) {$/;" f glossary_grades mod/glossary/lib.php /^function glossary_grades($glossaryid) {$/;" f glossary_ids mod/glossary/backuplib.php /^ function glossary_ids ($course) {$/;" f +glossary_link_concepts mod/glossary/filter.php /^ function glossary_link_concepts($text,$concept,$href_tag_begin,$href_tag_end = "<\/a>",$casesensitive,$fullmatch) {$/;" f glossary_log_info mod/glossary/lib.php /^function glossary_log_info($log) {$/;" f glossary_main_file_area mod/glossary/lib.php /^function glossary_main_file_area($glossary) {$/;" f glossary_mod_file_area mod/glossary/lib.php /^function glossary_mod_file_area($glossary) {$/;" f @@ -3304,24 +2870,15 @@ glossary_print_author_menu mod/glossary/lib.php /^function glossary_print_author glossary_print_categories_menu mod/glossary/lib.php /^function glossary_print_categories_menu($cm, $glossary, $hook, $category) {$/;" f glossary_print_comment mod/glossary/lib.php /^function glossary_print_comment($course, $cm, $glossary, $entry, $comment) {$/;" f glossary_print_dynaentry mod/glossary/lib.php /^function glossary_print_dynaentry($courseid, $entries, $displayformat = -1) {$/;" f -glossary_print_entry mod/glossary/lib.php /^function glossary_print_entry($course, $cm, $glossary, $entry, $mode='',$hook='',$printicons = 1, $displayformat = -1, $ratings = NULL, $printview = false) {$/;" f -glossary_print_entry_TEMPLATE mod/glossary/formats/TEMPLATE/TEMPLATE_format.php /^function glossary_print_entry_TEMPLATE($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) {$/;" f -glossary_print_entry_aliases mod/glossary/lib.php /^function glossary_print_entry_aliases($course, $cm, $glossary, $entry,$mode='',$hook='', $type = 'print') {$/;" f -glossary_print_entry_approval mod/glossary/lib.php /^function glossary_print_entry_approval($cm, $entry, $mode,$align="right",$insidetable=true) {$/;" f -glossary_print_entry_attachment mod/glossary/lib.php /^function glossary_print_entry_attachment($entry,$format=NULL,$align="right",$insidetable=true) {$/;" f +glossary_print_entry mod/glossary/lib.php /^function glossary_print_entry($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons = 1, $displayformat = -1, $ratings = NULL) {$/;" f +glossary_print_entry_aliases mod/glossary/lib.php /^function glossary_print_entry_aliases($course, $cm, $glossary, $entry,$mode="",$hook="", $type = 'print') {$/;" f +glossary_print_entry_approval mod/glossary/lib.php /^function glossary_print_entry_approval($cm, $entry, $mode,$align="right") {$/;" f +glossary_print_entry_attachment mod/glossary/lib.php /^function glossary_print_entry_attachment($entry,$format=NULL,$align="right") {$/;" f glossary_print_entry_commentslink mod/glossary/lib.php /^function glossary_print_entry_commentslink($course, $cm, $glossary, $entry,$mode,$hook, $type = 'print') {$/;" f glossary_print_entry_concept mod/glossary/lib.php /^function glossary_print_entry_concept($entry) {$/;" f -glossary_print_entry_continuous mod/glossary/formats/continuous/continuous_format.php /^function glossary_print_entry_continuous($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) {$/;" f -glossary_print_entry_default mod/glossary/lib.php /^function glossary_print_entry_default ($entry) {$/;" f glossary_print_entry_definition mod/glossary/lib.php /^function glossary_print_entry_definition($entry) {$/;" f -glossary_print_entry_dictionary mod/glossary/formats/dictionary/dictionary_format.php /^function glossary_print_entry_dictionary($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) {$/;" f -glossary_print_entry_encyclopedia mod/glossary/formats/encyclopedia/encyclopedia_format.php /^function glossary_print_entry_encyclopedia($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) {$/;" f -glossary_print_entry_entrylist mod/glossary/formats/entrylist/entrylist_format.php /^function glossary_print_entry_entrylist($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) {$/;" f -glossary_print_entry_faq mod/glossary/formats/faq/faq_format.php /^function glossary_print_entry_faq($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL) {$/;" f -glossary_print_entry_fullwithauthor mod/glossary/formats/fullwithauthor/fullwithauthor_format.php /^function glossary_print_entry_fullwithauthor($course, $cm, $glossary, $entry, $mode="", $hook="", $printicons=1, $ratings=NULL) {$/;" f -glossary_print_entry_fullwithoutauthor mod/glossary/formats/fullwithoutauthor/fullwithoutauthor_format.php /^function glossary_print_entry_fullwithoutauthor($course, $cm, $glossary, $entry, $mode="", $hook="", $printicons=1, $ratings=NULL) {$/;" f -glossary_print_entry_icons mod/glossary/lib.php /^function glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode='',$hook='', $type = 'print') {$/;" f -glossary_print_entry_lower_section mod/glossary/lib.php /^function glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook,$printicons,$ratings,$aliases=true) {$/;" f +glossary_print_entry_icons mod/glossary/lib.php /^function glossary_print_entry_icons($course, $cm, $glossary, $entry,$mode="",$hook="", $type = 'print') {$/;" f +glossary_print_entry_lower_section mod/glossary/lib.php /^function glossary_print_entry_lower_section($course, $cm, $glossary, $entry, $mode, $hook,$printicons,$ratings) {$/;" f glossary_print_entry_ratings mod/glossary/lib.php /^function glossary_print_entry_ratings($course, $entry, $ratings = NULL) {$/;" f glossary_print_export_menu mod/glossary/lib.php /^function glossary_print_export_menu($cm, $glossary, $mode, $hook, $sortkey='', $sortorder = '') {$/;" f glossary_print_import_menu mod/glossary/lib.php /^function glossary_print_import_menu($cm, $glossary, $mode, $hook, $sortkey='', $sortorder = '') {$/;" f @@ -3331,30 +2888,28 @@ glossary_print_recent_activity mod/glossary/lib.php /^function glossary_print_re glossary_print_sorting_links mod/glossary/lib.php /^function glossary_print_sorting_links($cm, $mode, $sortkey = '',$sortorder = '') {$/;" f glossary_print_special_links mod/glossary/lib.php /^function glossary_print_special_links($cm, $glossary, $mode, $hook) {$/;" f glossary_print_tabbed_table_end mod/glossary/lib.php /^function glossary_print_tabbed_table_end() {$/;" f -glossary_print_tabbed_table_start mod/glossary/lib.php /^function glossary_print_tabbed_table_start($data, $currenttab, $tabsperrow=4) {$/;" f +glossary_print_tabbed_table_start mod/glossary/lib.php /^function glossary_print_tabbed_table_start($data, $currenttab, $tTHEME = NULL) {$/;" f glossary_ratings_restore_mods mod/glossary/restorelib.php /^ function glossary_ratings_restore_mods($old_entry_id,$new_entry_id,$info,$restore) {$/;" f glossary_read_imported_file mod/glossary/lib.php /^function glossary_read_imported_file($file) {$/;" f glossary_restore_files mod/glossary/restorelib.php /^ function glossary_restore_files ($oldgloid, $newgloid, $oldentryid, $newentryid, $restore) {$/;" f glossary_restore_logs mod/glossary/restorelib.php /^ function glossary_restore_logs($restore,$log) {$/;" f glossary_restore_mods mod/glossary/restorelib.php /^ function glossary_restore_mods($mod,$restore) {$/;" f glossary_rss_feed mod/glossary/rsslib.php /^ function glossary_rss_feed($glossary) {$/;" f -glossary_rss_feed_withauthor mod/glossary/rsslib.php /^ function glossary_rss_feed_withauthor($glossary, $newsince=0) {$/;" f -glossary_rss_feed_withoutauthor mod/glossary/rsslib.php /^ function glossary_rss_feed_withoutauthor($glossary, $newsince=0) {$/;" f +glossary_rss_feed_withauthor mod/glossary/rsslib.php /^ function glossary_rss_feed_withauthor($glossary) {$/;" f +glossary_rss_feed_withoutauthor mod/glossary/rsslib.php /^ function glossary_rss_feed_withoutauthor($glossary) {$/;" f glossary_rss_feeds mod/glossary/rsslib.php /^ function glossary_rss_feeds() {$/;" f -glossary_rss_newstuff mod/glossary/rsslib.php /^ function glossary_rss_newstuff($glossary, $time) {$/;" f glossary_scale_used mod/glossary/lib.php /^function glossary_scale_used ($glossaryid,$scaleid) {$/;" f glossary_search mod/glossary/lib.php /^function glossary_search($course, $searchterms, $extended = 0, $glossary = NULL) {$/;" f glossary_search_entries mod/glossary/lib.php /^function glossary_search_entries($searchterms, $glossary, $extended) {$/;" f -glossary_show_entry_TEMPLATE mod/glossary/formats/TEMPLATE/TEMPLATE_format.php /^function glossary_show_entry_TEMPLATE($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL, $aliases=true) {$/;" f -glossary_show_entry_continuous mod/glossary/formats/continuous/continuous_format.php /^function glossary_show_entry_continuous($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL, $aliases=false) {$/;" f -glossary_show_entry_dictionary mod/glossary/formats/dictionary/dictionary_format.php /^function glossary_show_entry_dictionary($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL, $aliases=true) {$/;" f -glossary_show_entry_encyclopedia mod/glossary/formats/encyclopedia/encyclopedia_format.php /^function glossary_show_entry_encyclopedia($course, $cm, $glossary, $entry, $mode='',$hook='',$printicons=1,$ratings=NULL, $aliases=true) {$/;" f -glossary_show_entry_entrylist mod/glossary/formats/entrylist/entrylist_format.php /^function glossary_show_entry_entrylist($course, $cm, $glossary, $entry, $mode='', $hook='', $printicons=1, $ratings=NULL, $aliases=true) {$/;" f -glossary_show_entry_faq mod/glossary/formats/faq/faq_format.php /^function glossary_show_entry_faq($course, $cm, $glossary, $entry, $mode="", $hook="", $printicons=1, $ratings=NULL, $aliases=true) {$/;" f -glossary_show_entry_fullwithauthor mod/glossary/formats/fullwithauthor/fullwithauthor_format.php /^function glossary_show_entry_fullwithauthor($course, $cm, $glossary, $entry, $mode="", $hook="", $printicons=1, $ratings=NULL, $aliases=true) {$/;" f -glossary_show_entry_fullwithoutauthor mod/glossary/formats/fullwithoutauthor/fullwithoutauthor_format.php /^function glossary_show_entry_fullwithoutauthor($course, $cm, $glossary, $entry, $mode="", $hook="", $printicons=1, $ratings=NULL, $aliases=true) {$/;" f +glossary_show_entry_continuous mod/glossary/formats/continuous/continuous_format.php /^function glossary_show_entry_continuous($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) {$/;" f +glossary_show_entry_dictionary mod/glossary/formats/dictionary/dictionary_format.php /^function glossary_show_entry_dictionary($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) {$/;" f +glossary_show_entry_encyclopedia mod/glossary/formats/encyclopedia/encyclopedia_format.php /^function glossary_show_entry_encyclopedia($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) {$/;" f +glossary_show_entry_entrylist mod/glossary/formats/entrylist/entrylist_format.php /^function glossary_show_entry_entrylist($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) {$/;" f +glossary_show_entry_faq mod/glossary/formats/faq/faq_format.php /^function glossary_show_entry_faq($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) {$/;" f +glossary_show_entry_fullwithauthor mod/glossary/formats/fullwithauthor/fullwithauthor_format.php /^function glossary_show_entry_fullwithauthor($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) {$/;" f +glossary_show_entry_fullwithoutauthor mod/glossary/formats/fullwithoutauthor/fullwithoutauthor_format.php /^function glossary_show_entry_fullwithoutauthor($course, $cm, $glossary, $entry, $mode="",$hook="",$printicons=1,$ratings=NULL) {$/;" f glossary_sort_entries mod/glossary/lib.php /^function glossary_sort_entries ( $entry0, $entry1 ) {$/;" f -glossary_sort_entries_by_length mod/glossary/filter.php /^ function glossary_sort_entries_by_length ( $entry0, $entry1 ) {$/;" f +glossary_sort_entries_by_lenght mod/glossary/filter.php /^ function glossary_sort_entries_by_lenght ( $entry0, $entry1 ) {$/;" f glossary_start_tag mod/glossary/lib.php /^function glossary_start_tag($tag,$level=0,$endline=false) {$/;" f glossary_update_instance mod/glossary/lib.php /^function glossary_update_instance($glossary) {$/;" f glossary_upgrade mod/glossary/db/mysql.php /^function glossary_upgrade($oldversion) {$/;" f @@ -3362,36 +2917,7 @@ glossary_upgrade mod/glossary/db/oci8po.php /^function glossary_upgrade($oldvers glossary_upgrade mod/glossary/db/postgres7.php /^function glossary_upgrade($oldversion) {$/;" f glossary_user_complete mod/glossary/lib.php /^function glossary_user_complete($course, $user, $mod, $glossary) {$/;" f glossary_user_outline mod/glossary/lib.php /^function glossary_user_outline($course, $user, $mod, $glossary) {$/;" f -grade_add_category_form grade/lib.php /^function grade_add_category_form() {$/;" f -grade_assign_categories grade/lib.php /^function grade_assign_categories() {$/;" f -grade_category_select grade/lib.php /^function grade_category_select($id_selected) {$/;" f -grade_delete_category grade/lib.php /^function grade_delete_category() {$/;" f -grade_delete_category_form grade/lib.php /^function grade_delete_category_form() {$/;" f -grade_display_grade_preferences grade/lib.php /^function grade_display_grade_preferences($course, $preferences) {$/;" f -grade_display_grade_weights grade/lib.php /^function grade_display_grade_weights() {$/;" f -grade_display_letter_grades grade/lib.php /^function grade_display_letter_grades() {$/;" f -grade_download grade/lib.php /^function grade_download($download, $id) {$/;" f -grade_download_form grade/lib.php /^function grade_download_form($type='both') {$/;" f -grade_drop_lowest grade/lib.php /^function grade_drop_lowest($grades, $drop, $total) {$/;" f -grade_get_category_weight grade/lib.php /^function grade_get_category_weight($course, $category) {$/;" f -grade_get_exceptions grade/lib.php /^function grade_get_exceptions($course) {$/;" f -grade_get_formatted_grades grade/lib.php /^function grade_get_formatted_grades() {$/;" f -grade_get_grade_item_exceptions grade/exceptions.php /^function grade_get_grade_item_exceptions($id) {$/;" f -grade_get_grade_items grade/lib.php /^function grade_get_grade_items($course) {$/;" f -grade_get_grade_letter grade/lib.php /^function grade_get_grade_letter($course, $grade) {$/;" f -grade_get_grades grade/lib.php /^function grade_get_grades() {$/;" f -grade_get_module_link grade/lib.php /^function grade_get_module_link($course, $cminstance, $modid) {$/;" f -grade_get_preference grade/lib.php /^function grade_get_preference($courseid, $name) {$/;" f -grade_get_preferences grade/lib.php /^function grade_get_preferences($courseid) {$/;" f -grade_get_stats grade/lib.php /^function grade_get_stats($category='all') {$/;" f -grade_get_users_by_group grade/lib.php /^function grade_get_users_by_group($course, $group) {$/;" f -grade_insert_category grade/lib.php /^function grade_insert_category() {$/;" f -grade_letters_set grade/lib.php /^function grade_letters_set($course) {$/;" f -grade_mode grade/lib.php /^function grade_mode($items) {$/;" f -grade_nav grade/lib.php /^function grade_nav($course, $action='grades') {$/;" f -grade_preferences_menu grade/lib.php /^function grade_preferences_menu($action, $course, $group=0) {$/;" f -grade_response mod/quiz/locallib.php /^ function grade_response($question, $nameprefix) {$/;" f -grade_response mod/quiz/questiontypes/calculated/questiontype.php /^ function grade_response($question, $nameprefix) {$/;" f +grade_response mod/quiz/lib.php /^ function grade_response($question, $nameprefix) {$/;" f grade_response mod/quiz/questiontypes/description/questiontype.php /^ function grade_response($question, $nameprefix) {$/;" f grade_response mod/quiz/questiontypes/match/questiontype.php /^ function grade_response($question, $nameprefix) {$/;" f grade_response mod/quiz/questiontypes/multianswer/questiontype.php /^ function grade_response($question, $nameprefix) {$/;" f @@ -3401,74 +2927,59 @@ grade_response mod/quiz/questiontypes/random/questiontype.php /^ function gra grade_response mod/quiz/questiontypes/randomsamatch/questiontype.php /^ function grade_response($question, $nameprefix) {$/;" f grade_response mod/quiz/questiontypes/shortanswer/questiontype.php /^ function grade_response($question, $nameprefix, $addedanswercondition='') {$/;" f grade_response mod/quiz/questiontypes/truefalse/questiontype.php /^ function grade_response($question, $nameprefix) {$/;" f -grade_set_categories grade/lib.php /^function grade_set_categories() {$/;" f -grade_set_grade_weights grade/lib.php /^function grade_set_grade_weights() {$/;" f -grade_set_letter_grades grade/lib.php /^function grade_set_letter_grades() {$/;" f -grade_set_preference grade/lib.php /^function grade_set_preference($courseid, $name, $value) {$/;" f -grade_set_preferences grade/lib.php /^function grade_set_preferences($course, $newprefs) {$/;" f -grade_set_uncategorized grade/lib.php /^function grade_set_uncategorized() {$/;" f -grade_sort_by_firstname grade/lib.php /^function grade_sort_by_firstname($x,$y)$/;" f -grade_sort_by_highgrade_category grade/lib.php /^function grade_sort_by_highgrade_category($x,$y) {$/;" f -grade_sort_by_highgrade_category_asc grade/lib.php /^function grade_sort_by_highgrade_category_asc($x,$y) {$/;" f -grade_sort_by_lastname grade/lib.php /^function grade_sort_by_lastname($x,$y)$/;" f -grade_sort_by_percent grade/lib.php /^function grade_sort_by_percent($x,$y) {$/;" f -grade_sort_by_percent_asc grade/lib.php /^function grade_sort_by_percent_asc($x,$y) {$/;" f -grade_sort_by_points grade/lib.php /^function grade_sort_by_points($x,$y) {$/;" f -grade_sort_by_points_asc grade/lib.php /^function grade_sort_by_points_asc($x,$y) {$/;" f -grade_sort_by_weighted grade/lib.php /^function grade_sort_by_weighted($x,$y) {$/;" f -grade_sort_by_weighted_asc grade/lib.php /^function grade_sort_by_weighted_asc($x,$y) {$/;" f -grade_stats grade/lib.php /^function grade_stats() {$/;" f -grade_view_all_grades grade/lib.php /^function grade_view_all_grades($view_by_student) {$/;" f -grade_view_category_grades grade/lib.php /^function grade_view_category_grades($view_by_student) {$/;" f graph lib/graphlib.php /^class graph {$/;" c graph lib/graphlib.php /^function graph() {$/;" f groupmode lib/moodlelib.php /^function groupmode($course, $cm=null) {$/;" f guest_user lib/moodlelib.php /^function guest_user() {$/;" f -handle_filename_collision lib/uploadlib.php /^ function handle_filename_collision($destination, &$file, $format='%s_%d.%s') {$/;" f -handle_questions_media mod/quiz/format/qti/format.php /^function handle_questions_media(&$questions, $path, $courseid) {$/;" f +handle_config blocks/course_list/block_course_list.php /^ function handle_config($config) {$/;" f +handle_config blocks/moodleblock.class.php /^ function handle_config() {$/;" f +handle_config blocks/online_users/block_online_users.php /^ function handle_config($config) {$/;" f +handle_config blocks/rssfeed/block_rssfeed.php /^ function handle_config($config) {$/;" f hasMore lib/adodb/adodb-iterator.inc.php /^ function hasMore()$/;" f -hasPGT lib/cas/client.php /^ function hasPGT()$/;" f -hasPT lib/cas/client.php /^ function hasPT()$/;" f -hasST lib/cas/client.php /^ function hasST()$/;" f -has_attribute lib/cas/domxml-php4-php5.php /^ function has_attribute($name) {return $this->myDOMNode->hasAttribute($name);}$/;" f -has_attributes lib/cas/domxml-php4-php5.php /^ function has_attributes() {return $this->myDOMNode->hasAttributes();}$/;" f -has_child_nodes lib/cas/domxml-php4-php5.php /^ function has_child_nodes() {return $this->myDOMNode->hasChildNodes();}$/;" f has_config blocks/course_list/block_course_list.php /^ function has_config() {$/;" f has_config blocks/moodleblock.class.php /^ function has_config() {$/;" f has_config blocks/online_users/block_online_users.php /^ function has_config() {return true;}$/;" f -has_config blocks/rss_client/block_rss_client.php /^ function has_config() {$/;" f -health_find_problems admin/health.php /^function health_find_problems() {$/;" f -health_print_solution admin/health.php /^function health_print_solution($classname) {$/;" f -helpbutton lib/weblib.php /^function helpbutton ($page, $title='', $module='moodle', $image=true, $linktext=false, $text='', $return=false,$/;" f +has_config blocks/rssfeed/block_rssfeed.php /^ function has_config() {return true;}$/;" f +helpbutton lib/weblib.php /^function helpbutton ($page, $title="", $module="moodle", $image=true, $linktext=false, $text="") {$/;" f hex lib/editor/htmlarea.php /^ function hex(d) {$/;" f -hex lib/editor/htmlarea_bak.php /^ function hex(d) {$/;" f +hex lib/editor/htmlarea_bak.php /^ function hex(d) {$/;" f +hide_course_module course/lib.php /^function hide_course_module($mod) {$/;" f hide_event lib/moodlelib.php /^function hide_event($event) {$/;" f hide_gridlines lib/excel/Worksheet.php /^ function hide_gridlines()$/;" f -hide_header blocks/course_summary/block_course_summary.php /^ function hide_header() {$/;" f -hide_header blocks/glossary_random/block_glossary_random.php /^ function hide_header() {$/;" f +hide_header blocks/advertisement/block_advertisement.php /^ function hide_header() {$/;" f +hide_header blocks/course_summary/block_course_summary.php /^ function hide_header() {return true;}$/;" f hide_header blocks/moodleblock.class.php /^ function hide_header() {$/;" f highlight lib/weblib.php /^function highlight($needle, $haystack, $case=0,$/;" f highlightfast lib/weblib.php /^function highlightfast($needle, $haystack) {$/;" f +hilightcurrent mod/scorm/scormAPI.php /^function hilightcurrent(popupmenu) {$/;" f host lib/adodb/session/adodb-session.php /^ function host($host = null) {$/;" f +hotpot_add_instance mod/hotpot/lib.php /^function hotpot_add_instance($hotpot) {$/;" f +hotpot_cron mod/hotpot/lib.php /^function hotpot_cron () {$/;" f +hotpot_delete_instance mod/hotpot/lib.php /^function hotpot_delete_instance($id) {$/;" f +hotpot_get_grade_records mod/hotpot/report.php /^function hotpot_get_grade_records($hotpot) {$/;" f +hotpot_get_participants mod/hotpot/lib.php /^function hotpot_get_participants($hotpotid) {$/;" f +hotpot_grades mod/hotpot/lib.php /^function hotpot_grades($hotpotid) {$/;" f +hotpot_print_recent_activity mod/hotpot/lib.php /^function hotpot_print_recent_activity($course, $isteacher, $timestart) {$/;" f +hotpot_update_instance mod/hotpot/lib.php /^function hotpot_update_instance($hotpot) {$/;" f +hotpot_upgrade mod/hotpot/db/mysql.php /^function hotpot_upgrade($oldversion) {$/;" f +hotpot_user_complete mod/hotpot/lib.php /^function hotpot_user_complete($course, $user, $mod, $hotpot) {$/;" f +hotpot_user_outline mod/hotpot/lib.php /^function hotpot_user_outline($course, $user, $mod, $hotpot) {$/;" f hover lib/editor/popups/dlg_ins_char.php /^function hover(obj,val) {$/;" f html2text lib/html2text.php /^function html2text( $badStr ) {$/;" f html_attributes blocks/moodleblock.class.php /^ function html_attributes() {$/;" f -html_dump_mem lib/cas/domxml-php4-php5.php /^ function html_dump_mem() {return $this->myDOMNode->saveHTML();}$/;" f -html_entity_decode lib/moodlelib.php /^ function html_entity_decode($string) {$/;" f html_footer files/index.php /^ function html_footer() {$/;" f html_footer lib/editor/coursefiles.php /^ function html_footer() {$/;" f +html_footer lib/editor/courseimages.php /^ function html_footer() {$/;" f +html_footer mod/resource/coursefiles.php /^ function html_footer() {$/;" f +html_footer mod/scorm/coursefiles.php /^ function html_footer() {$/;" f +html_footer mod/wiki/wikifiles.php /^ function html_footer() {$/;" f html_header files/index.php /^ function html_header($course, $wdir, $formfield=""){$/;" f html_header lib/editor/coursefiles.php /^ function html_header($course, $wdir, $formfield=""){$/;" f +html_header lib/editor/courseimages.php /^ function html_header($course, $wdir, $formfield=""){$/;" f +html_header mod/resource/coursefiles.php /^ function html_header($course, $wdir, $formfield=""){$/;" f +html_header mod/scorm/coursefiles.php /^ function html_header($course, $wdir, $formfield=""){$/;" f +html_header mod/wiki/wikifiles.php /^ function html_header($course, $wdir, $formfield=""){$/;" f html_to_text lib/weblib.php /^function html_to_text($html) {$/;" f -identify_modifier_markdown lib/markdown.php /^function identify_modifier_markdown() {$/;" f -ifx_props lib/adodb/drivers/adodb-informix72.inc.php /^function ifx_props($coltype,$collength){$/;" f -import_answer mod/quiz/format/xml/format.php /^function import_answer( $answer ) {$/;" f -import_headers mod/quiz/format/xml/format.php /^function import_headers( $question ) {$/;" f -import_multichoice mod/quiz/format/xml/format.php /^function import_multichoice( $question ) {$/;" f -import_shortanswer mod/quiz/format/xml/format.php /^function import_shortanswer( $question ) {$/;" f -import_text mod/quiz/format/xml/format.php /^function import_text( $text ) {$/;" f -import_truefalse mod/quiz/format/xml/format.php /^function import_truefalse( $question ) {$/;" f -importmodifiedaikenstyle mod/lesson/reformat.php /^function importmodifiedaikenstyle($filename) {$/;" f importpostprocess mod/lesson/format.php /^ function importpostprocess() {$/;" f importpostprocess mod/quiz/format.php /^ function importpostprocess() {$/;" f importpostprocess mod/quiz/format/aon/format.php /^ function importpostprocess() {$/;" f @@ -3480,109 +2991,41 @@ importpreprocess mod/quiz/format/qti/format.php /^ function importpreprocess( importprocess mod/lesson/format.php /^ function importprocess($filename, $lesson, $pageid) {$/;" f importprocess mod/quiz/format.php /^ function importprocess($filename) {$/;" f importprocess mod/quiz/format/coursetestmanager/format.php /^ function importprocess($filename) {$/;" f -indatefrom lib/searchlib.php /^ function indatefrom($content){$/;" f -indateto lib/searchlib.php /^ function indateto($content){$/;" f -indent_xhtml mod/quiz/format/qti/format.php /^ function indent_xhtml($source, $indenter = ' ') { $/;" f -indent_xhtml mod/quiz/format/xml/format.php /^function indent_xhtml($source, $indenter = ' ') { $/;" f -inexcluded lib/searchlib.php /^ function inexcluded($content){$/;" f +ini_get_bool lib/compatible.php /^function ini_get_bool($ini_get_arg) {$/;" f ini_get_bool lib/moodlelib.php /^function ini_get_bool($ini_get_arg) {$/;" f -ininstance lib/searchlib.php /^ function ininstance($content){$/;" f -init blocks/activity_modules/block_activity_modules.php /^ function init() {$/;" f -init blocks/admin/block_admin.php /^ function init() {$/;" f -init blocks/calendar_month/block_calendar_month.php /^ function init() {$/;" f -init blocks/calendar_upcoming/block_calendar_upcoming.php /^ function init() {$/;" f -init blocks/course_list/block_course_list.php /^ function init() {$/;" f -init blocks/course_summary/block_course_summary.php /^ function init() {$/;" f -init blocks/glossary_random/block_glossary_random.php /^ function init() {$/;" f -init blocks/html/block_html.php /^ function init() {$/;" f -init blocks/login/block_login.php /^ function init() {$/;" f -init blocks/messages/block_messages.php /^ function init() {$/;" f -init blocks/news_items/block_news_items.php /^ function init() {$/;" f -init blocks/online_users/block_online_users.php /^ function init() {$/;" f -init blocks/participants/block_participants.php /^ function init() {$/;" f -init blocks/quiz_results/block_quiz_results.php /^ function init() {$/;" f -init blocks/recent_activity/block_recent_activity.php /^ function init() {$/;" f -init blocks/rss_client/block_rss_client.php /^ function init() {$/;" f -init blocks/search_forums/block_search_forums.php /^ function init() {$/;" f -init blocks/section_links/block_section_links.php /^ function init() {$/;" f -init blocks/site_main_menu/block_site_main_menu.php /^ function init() {$/;" f -init blocks/social_activities/block_social_activities.php /^ function init(){$/;" f -init lib/cas/PGTStorage/pgt-db.php /^ function init()$/;" f -init lib/cas/PGTStorage/pgt-file.php /^ function init()$/;" f -init lib/cas/PGTStorage/pgt-main.php /^ function init()$/;" f init lib/editor/popups/fullscreen.php /^function init() {$/;" f init lib/graphlib.php /^function init() {$/;" f -initIframe lib/editor/htmlarea_bak.php /^ function initIframe() {$/;" f -initPGTStorage lib/cas/client.php /^ function initPGTStorage()$/;" f +initIframe lib/editor/htmlarea.php /^ function initIframe() {$/;" f +initIframe lib/editor/htmlarea_bak.php /^ function initIframe() {$/;" f init_colours lib/graphlib.php /^function init_colours() {$/;" f init_data lib/graphlib.php /^function init_data() {$/;" f -init_full lib/pagelib.php /^ function init_full() {$/;" f init_labels lib/graphlib.php /^function init_labels() {$/;" f init_legend lib/graphlib.php /^function init_legend() {$/;" f -init_performance_info lib/setup.php /^function init_performance_info() {$/;" f -init_quick lib/pagelib.php /^ function init_quick($data) {$/;" f -init_quick mod/chat/pagelib.php /^ function init_quick($data) {$/;" f -init_quick mod/quiz/pagelib.php /^ function init_quick($data) {$/;" f -init_sockets mod/chat/chatd.php /^ function init_sockets() {$/;" f -init_spell lib/speller/server-scripts/spellchecker.php /^function init_spell() {$/;" f init_variable lib/graphlib.php /^function init_variable(&$variable, $value, $default) {$/;" f init_x_axis lib/graphlib.php /^function init_x_axis() {$/;" f init_x_ticks lib/graphlib.php /^function init_x_ticks() {$/;" f init_y_axis lib/graphlib.php /^function init_y_axis() {$/;" f init_y_ticks lib/graphlib.php /^function init_y_ticks() {$/;" f -initialbars lib/tablelib.php /^ function initialbars($bool) {$/;" f -initialize mod/quiz/category.php /^ function initialize() {$/;" f -inmeta lib/searchlib.php /^ function inmeta($content){ $/;" f -inquotedstring lib/searchlib.php /^ function inquotedstring($content){$/;" f -inrequired lib/searchlib.php /^ function inrequired($content){$/;" f insert lib/editor/popups/dlg_ins_smile.php /^function insert(img,text) {$/;" f -insert_before lib/cas/domxml-php4-php5.php /^ function insert_before($newnode,$refnode) {return new php4DOMElement($this->myDOMNode->insertBefore($newnode->myDOMNode,$refnode->myDOMNode),$this->myOwnerDocument);}$/;" f insert_bitmap lib/excel/Worksheet.php /^ function insert_bitmap($row, $col, $bitmap, $x = 0, $y = 0, $scale_x = 1, $scale_y = 1)$/;" f insert_category_ids backup/backuplib.php /^ function insert_category_ids ($course,$backup_unique_code) {$/;" f insert_record lib/datalib.php /^function insert_record($table, $dataobject, $returnid=true, $primarykey='id') {$/;" f +insertform mod/hotpot/hotpot.php /^function insertform() {$/;" f inserttext lib/javascript.php /^function inserttext(text) {$/;" f -install_helpbutton install.php /^function install_helpbutton($url, $title='') {$/;" f -instance_allow_config blocks/moodleblock.class.php /^ function instance_allow_config() {$/;" f -instance_allow_config blocks/rss_client/block_rss_client.php /^ function instance_allow_config() {$/;" f -instance_allow_multiple blocks/glossary_random/block_glossary_random.php /^ function instance_allow_multiple() {$/;" f -instance_allow_multiple blocks/html/block_html.php /^ function instance_allow_multiple() {$/;" f -instance_allow_multiple blocks/moodleblock.class.php /^ function instance_allow_multiple() {$/;" f -instance_allow_multiple blocks/quiz_results/block_quiz_results.php /^ function instance_allow_multiple() {$/;" f -instance_allow_multiple blocks/rss_client/block_rss_client.php /^ function instance_allow_multiple() {$/;" f -instance_config blocks/section_links/block_section_links.php /^ function instance_config($instance) {$/;" f -instance_config_commit blocks/moodleblock.class.php /^ function instance_config_commit() {$/;" f -instance_config_print blocks/glossary_random/block_glossary_random.php /^ function instance_config_print() {$/;" f -instance_config_print blocks/moodleblock.class.php /^ function instance_config_print() {$/;" f -instance_config_save blocks/moodleblock.class.php /^ function instance_config_save($data) {$/;" f instance_is_visible lib/datalib.php /^function instance_is_visible($moduletype, $module) {$/;" f -inuserid lib/searchlib.php /^ function inuserid($content){$/;" f -inusername lib/searchlib.php /^ function inusername($content){$/;" f -isAuthenticated lib/cas/CAS.php /^ function isAuthenticated()$/;" f -isAuthenticated lib/cas/client.php /^ function isAuthenticated()$/;" f -isCallbackMode lib/cas/client.php /^ function isCallbackMode()$/;" f isError lib/adodb/adodb-pear.inc.php /^ function isError($value)$/;" f -isInitialized lib/cas/PGTStorage/pgt-main.php /^ function isInitialized()$/;" f -isMemberOf auth/fc/fcFPP.php /^ function isMemberOf($userid, $groups){$/;" f -isProxy lib/cas/client.php /^ function isProxy()$/;" f isWarning lib/adodb/adodb-pear.inc.php /^ function isWarning($value)$/;" f is_action1 mod/scorm/validatordomxml.php /^function is_action1($str1)$/;" f is_action2 mod/scorm/validatordomxml.php /^function is_action2($str2)$/;" f -is_blank_node lib/cas/domxml-php4-php5.php /^ function is_blank_node()$/;" f is_cached lib/smarty/Smarty.class.php /^ function is_cached($tpl_file, $cache_id = null, $compile_id = null)$/;" f is_cond_val mod/scorm/validatordomxml.php /^function is_cond_val($st)$/;" f -is_empty blocks/moodleblock.class.php /^ function is_empty() {$/;" f -is_enabled admin/health.php /^ function is_enabled() {$/;" f is_hch_cont mod/scorm/validatordomxml.php /^function is_hch_cont($str6)$/;" f -is_image_by_extentsion mod/quiz/format/qti/qt_common.php /^function is_image_by_extentsion($file) {$/;" f -is_internal_auth lib/moodlelib.php /^function is_internal_auth($auth='') {$/;" f -is_media_by_extension mod/quiz/format/qti/qt_common.php /^function is_media_by_extension($file) {$/;" f +is_internal_auth lib/moodlelib.php /^function is_internal_auth() {$/;" f is_message mod/scorm/validatordomxml.php /^function is_message($str)$/;" f -is_multimedia_by_extension mod/quiz/format/qti/qt_common.php /^function is_multimedia_by_extension($file) {$/;" f is_randT_attr mod/scorm/validatordomxml.php /^function is_randT_attr($str4)$/;" f is_rcond_val mod/scorm/validatordomxml.php /^function is_rcond_val($st1)$/;" f is_rolAc_val mod/scorm/validatordomxml.php /^function is_rolAc_val($str3)$/;" f is_rolCo_val mod/scorm/validatordomxml.php /^function is_rolCo_val($str5)$/;" f -is_sizable_multimedia mod/quiz/format/qti/qt_common.php /^function is_sizable_multimedia($file) {$/;" f is_spec mod/scorm/validatordomxml.php /^function is_spec($stringa)$/;" f isadmin lib/moodlelib.php /^function isadmin($userid=0) {$/;" f iscreator lib/moodlelib.php /^function iscreator ($userid=0) {$/;" f @@ -3593,7 +3036,6 @@ ismoving lib/moodlelib.php /^function ismoving($courseid) {$/;" f isstudent lib/moodlelib.php /^function isstudent($courseid, $userid=0) {$/;" f isteacher lib/moodlelib.php /^function isteacher($courseid=0, $userid=0, $includeadmin=true) {$/;" f isteacheredit lib/moodlelib.php /^function isteacheredit($courseid, $userid=0) {$/;" f -isteacherinanycourse lib/moodlelib.php /^function isteacherinanycourse($userid=0, $includeadmin=true) {$/;" f journal_add_instance mod/journal/lib.php /^function journal_add_instance($journal) {$/;" f journal_backup_mods mod/journal/backuplib.php /^ function journal_backup_mods($bf,$preferences) {$/;" f journal_check_backup_mods mod/journal/backuplib.php /^ function journal_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f @@ -3624,25 +3066,7 @@ journal_user_outline mod/journal/lib.php /^function journal_user_outline($course key lib/adodb/adodb-iterator.inc.php /^ function key() $/;" f keyED lib/adodb/crypt.inc.php /^ function keyED($txt,$encrypt_key)$/;" f keyED lib/adodb/session/crypt.inc.php /^ function keyED($txt,$encrypt_key)$/;" f -kses lib/kses.php /^function kses($string, $allowed_html, $allowed_protocols =$/;" f -kses_array_lc lib/kses.php /^function kses_array_lc($inarray)$/;" f -kses_attr lib/kses.php /^function kses_attr($element, $attr, $allowed_html, $allowed_protocols)$/;" f -kses_bad_protocol lib/kses.php /^function kses_bad_protocol($string, $allowed_protocols)$/;" f -kses_bad_protocol_once lib/kses.php /^function kses_bad_protocol_once($string, $allowed_protocols)$/;" f -kses_bad_protocol_once2 lib/kses.php /^function kses_bad_protocol_once2($string, $allowed_protocols)$/;" f -kses_check_attr_val lib/kses.php /^function kses_check_attr_val($value, $vless, $checkname, $checkvalue)$/;" f -kses_decode_entities lib/kses.php /^function kses_decode_entities($string)$/;" f -kses_hair lib/kses.php /^function kses_hair($attr, $allowed_protocols)$/;" f -kses_hook lib/kses.php /^function kses_hook($string)$/;" f -kses_html_error lib/kses.php /^function kses_html_error($string)$/;" f -kses_js_entities lib/kses.php /^function kses_js_entities($string)$/;" f -kses_no_null lib/kses.php /^function kses_no_null($string)$/;" f -kses_normalize_entities lib/kses.php /^function kses_normalize_entities($string)$/;" f -kses_normalize_entities2 lib/kses.php /^function kses_normalize_entities2($i)$/;" f -kses_split lib/kses.php /^function kses_split($string, $allowed_html, $allowed_protocols)$/;" f -kses_split2 lib/kses.php /^function kses_split2($string, $allowed_html, $allowed_protocols)$/;" f -kses_stripslashes lib/kses.php /^function kses_stripslashes($string)$/;" f -kses_version lib/kses.php /^function kses_version()$/;" f +keyED lib/adodb/session/old/crypt.inc.php /^ function keyED($txt,$encrypt_key)$/;" f label_add_instance mod/label/lib.php /^function label_add_instance($label) {$/;" f label_backup_mods mod/label/backuplib.php /^ function label_backup_mods($bf,$preferences) {$/;" f label_check_backup_mods mod/label/backuplib.php /^ function label_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f @@ -3654,48 +3078,27 @@ label_restore_mods mod/label/restorelib.php /^ function label_restore_mods($m label_update_instance mod/label/lib.php /^function label_update_instance($label) {$/;" f label_upgrade mod/label/db/mysql.php /^function label_upgrade($oldversion) {$/;" f label_upgrade mod/label/db/postgres7.php /^function label_upgrade($oldversion) {$/;" f +lang_decode lang/el/fonts/lang_decode.php /^function lang_decode($s) {$/;" f lang_save_file admin/lang.php /^function lang_save_file($path, $file, $strings) {$/;" f -langdoc_save_file admin/langdoc.php /^function langdoc_save_file($path, $file, $content) {$/;" f -last_child lib/cas/domxml-php4-php5.php /^ function last_child() {return new php4DOMElement($this->myDOMNode->lastChild,$this->myOwnerDocument);}$/;" f -leave lib/lexer.php /^ function leave() {$/;" f lesson_add_instance mod/lesson/lib.php /^function lesson_add_instance($lesson) {$/;" f lesson_answers_restore mod/lesson/restorelib.php /^ function lesson_answers_restore($lessonid,$pageid,$info,$restore) {$/;" f lesson_attempts_ids_by_course mod/lesson/backuplib.php /^ function lesson_attempts_ids_by_course ($course) {$/;" f lesson_attempts_restore mod/lesson/restorelib.php /^ function lesson_attempts_restore($lessonid, $pageid, $answerid, $info, $restore) {$/;" f lesson_backup_mods mod/lesson/backuplib.php /^ function lesson_backup_mods($bf, $preferences) {$/;" f -lesson_branch_restore mod/lesson/restorelib.php /^ function lesson_branch_restore($lessonid, $pageid, $info, $restore) {$/;" f -lesson_calculate_ongoing_score mod/lesson/locallib.php /^function lesson_calculate_ongoing_score($lesson, $userid, $retries, $return=false) {$/;" f lesson_check_backup_mods mod/lesson/backuplib.php /^ function lesson_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f -lesson_check_nickname mod/lesson/locallib.php /^function lesson_check_nickname($name) {$/;" f -lesson_choose_from_menu mod/lesson/locallib.php /^function lesson_choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="", $nothingvalue="0", $return=false) {$/;" f -lesson_cluster_jump mod/lesson/locallib.php /^function lesson_cluster_jump($lesson, $user, $pageid) {$/;" f +lesson_choose_from_menu mod/lesson/lib.php /^function lesson_choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="", $nothingvalue="0", $return=false) {$/;" f lesson_cron mod/lesson/lib.php /^function lesson_cron () {$/;" f -lesson_default_restore_mods mod/lesson/restorelib.php /^ function lesson_default_restore_mods($info, $restore) {$/;" f lesson_delete_instance mod/lesson/lib.php /^function lesson_delete_instance($id) {$/;" f -lesson_display_branch_jumps mod/lesson/locallib.php /^function lesson_display_branch_jumps($lesson_id, $pageid) {$/;" f -lesson_display_cluster_jump mod/lesson/locallib.php /^function lesson_display_cluster_jump($lesson_id, $pageid) {$/;" f lesson_get_participants mod/lesson/lib.php /^function lesson_get_participants($lessonid) {$/;" f lesson_grades mod/lesson/lib.php /^function lesson_grades($lessonid) {$/;" f lesson_grades_restore_mods mod/lesson/restorelib.php /^ function lesson_grades_restore_mods($lessonid, $info, $restore) {$/;" f -lesson_high_scores_restore_mods mod/lesson/restorelib.php /^ function lesson_high_scores_restore_mods($lessonid, $info, $restore) {$/;" f lesson_ids mod/lesson/backuplib.php /^ function lesson_ids ($course) {$/;" f -lesson_is_page_in_branch mod/lesson/locallib.php /^function lesson_is_page_in_branch($pages, $pageid) {$/;" f -lesson_is_page_in_cluster mod/lesson/locallib.php /^function lesson_is_page_in_cluster($pages, $pageid) {$/;" f -lesson_iscorrect mod/lesson/locallib.php /^function lesson_iscorrect($pageid, $jumpto) {$/;" f -lesson_pages_in_branch mod/lesson/locallib.php /^function lesson_pages_in_branch($lessonpages, $branchid) {$/;" f +lesson_iscorrect mod/lesson/lib.php /^function lesson_iscorrect($pageid, $jumpto) {$/;" f lesson_pages_restore_mods mod/lesson/restorelib.php /^ function lesson_pages_restore_mods($lessonid,$info,$restore) {$/;" f lesson_print_recent_activity mod/lesson/lib.php /^function lesson_print_recent_activity($course, $isteacher, $timestart) {$/;" f -lesson_print_tree mod/lesson/locallib.php /^function lesson_print_tree($pageid, $lessonid, $cmid, $pixpath) {$/;" f -lesson_print_tree_link_menu mod/lesson/locallib.php /^function lesson_print_tree_link_menu($page, $id, $showpages=false) { $/;" f -lesson_print_tree_menu mod/lesson/locallib.php /^function lesson_print_tree_menu($lessonid, $pageid, $id, $showpages=false) {$/;" f -lesson_qtype_menu mod/lesson/locallib.php /^function lesson_qtype_menu($qtypes, $selected="", $link="", $onclick="") {$/;" f -lesson_random_question_jump mod/lesson/locallib.php /^function lesson_random_question_jump($lesson, $pageid) {$/;" f lesson_restore_logs mod/lesson/restorelib.php /^ function lesson_restore_logs($restore,$log) {$/;" f lesson_restore_mods mod/lesson/restorelib.php /^ function lesson_restore_mods($mod,$restore) {$/;" f -lesson_save_question_options mod/lesson/locallib.php /^function lesson_save_question_options($question) {$/;" f -lesson_timer_restore_mods mod/lesson/restorelib.php /^ function lesson_timer_restore_mods($lessonid, $info, $restore) {$/;" f -lesson_unseen_branch_jump mod/lesson/locallib.php /^function lesson_unseen_branch_jump($lesson, $user) {$/;" f -lesson_unseen_question_jump mod/lesson/locallib.php /^function lesson_unseen_question_jump($lesson, $user, $pageid) {$/;" f +lesson_save_question_options mod/lesson/lib.php /^function lesson_save_question_options($question) {$/;" f lesson_update_instance mod/lesson/lib.php /^function lesson_update_instance($lesson) {$/;" f lesson_upgrade mod/lesson/db/mysql.php /^function lesson_upgrade($oldversion) {$/;" f lesson_upgrade mod/lesson/db/postgres7.php /^function lesson_upgrade($oldversion) {$/;" f @@ -3705,96 +3108,60 @@ library lib/adodb/adodb.inc.php /^ class library to hide the differences between lifetime lib/adodb/session/adodb-session.php /^ function lifetime($lifetime = null) {$/;" f line lib/graphlib.php /^function line($x_start, $y_start, $x_end, $y_end, $type, $brush_type, $brush_size, $colour, $offset) {$/;" f line_replace lib/wiki.php /^ function line_replace( $line ) {$/;" f -line_replace lib/wiki_to_markdown.php /^ function line_replace( $line ) {$/;" f -link_to_popup_window lib/weblib.php /^function link_to_popup_window ($url, $name='popup', $linkname='click here',$/;" f +link_to_popup_window lib/weblib.php /^function link_to_popup_window ($url, $name="popup", $linkname="click here",$/;" f listContent lib/pclzip/pclzip.lib.php /^ function listContent()$/;" f listUsers lib/adodb/pear/Auth/Container/ADOdb.php /^ function listUsers()$/;" f list_directories backup/lib.php /^ function list_directories ($rootdir) {$/;" f list_directories_and_files backup/lib.php /^ function list_directories_and_files ($rootdir) {$/;" f -loadPGT lib/cas/client.php /^ function loadPGT($pgt_iou)$/;" f load_blobvar_from_file lib/adodb/drivers/adodb-sqlanywhere.inc.php /^ function load_blobvar_from_file($blobVarName, $filename) {$/;" f load_blobvar_from_var lib/adodb/drivers/adodb-sqlanywhere.inc.php /^ function load_blobvar_from_var($blobVarName, &$varName) {$/;" f load_content_for_course blocks/admin/block_admin.php /^ function load_content_for_course() {$/;" f load_content_for_site blocks/admin/block_admin.php /^ function load_content_for_site() {$/;" f load_file lib/smarty/Config_File.class.php /^ function load_file($file_name, $prepend_path = true)$/;" f load_filter lib/smarty/Smarty.class.php /^ function load_filter($type, $name)$/;" f -log lib/cas/CAS.php /^ function log($str)$/;" f -logMsg lib/adodb/adodb-xmlschema.inc.php /^function logMsg( $msg, $title = NULL, $force = FALSE ) {$/;" f +lockoption lib/javascript.php /^function lockoption(form,item) {$/;" f +lockoptions lib/javascript.php /^function lockoptions(form, master, subitems) {$/;" f +logMsg lib/adodb/adodb-xmlschema.inc.php /^function logMsg( $msg, $title = NULL ) {$/;" f log_check_backup backup/backuplib.php /^ function log_check_backup($course) {$/;" f -login auth/fc/fcFPP.php /^ function login($userid, $passwd)$/;" f -logout lib/cas/CAS.php /^ function logout($url = "")$/;" f -logout lib/cas/client.php /^ function logout($url = "")$/;" f mailerc lib/phpmailer/mailerc.php /^class mailerc extends phpmailer$/;" c main_upgrade lib/db/mysql.php /^function main_upgrade($oldversion=0) {$/;" f +main_upgrade lib/db/oci8po.php /^function main_upgrade($oldversion=0) {$/;" f main_upgrade lib/db/postgres7.php /^function main_upgrade($oldversion=0) {$/;" f -make_attributes_string lib/tablelib.php /^ function make_attributes_string(&$attributes) {$/;" f make_categories_list course/lib.php /^function make_categories_list(&$list, &$parents, $category=NULL, $path="") {$/;" f make_default_scale lib/datalib.php /^function make_default_scale() {$/;" f -make_editing_buttons course/lib.php /^function make_editing_buttons($mod, $absolute=false, $moveselect=true, $indent=-1, $section=-1) {$/;" f +make_editing_buttons course/lib.php /^function make_editing_buttons($mod, $absolute=false, $moveselect=true, $indent=-1) {$/;" f make_grades_menu lib/moodlelib.php /^function make_grades_menu($gradingtype) {$/;" f make_log_url course/lib.php /^function make_log_url($module, $url) {$/;" f -make_menu_from_list lib/moodlelib.php /^function make_menu_from_list($list, $separator=',') {$/;" f +make_menu_from_list lib/moodlelib.php /^function make_menu_from_list($list, $separator=",") {$/;" f make_mod_upload_directory lib/moodlelib.php /^function make_mod_upload_directory($courseid) {$/;" f -make_styles_string lib/tablelib.php /^ function make_styles_string(&$styles) {$/;" f make_table lib/weblib.php /^function make_table($table) {$/;" f -make_timestamp lib/moodlelib.php /^function make_timestamp($year, $month=1, $day=1, $hour=0, $minute=0, $second=0, $timezone=99, $applydst=true) {$/;" f -make_unique_id_code lib/moodlelib.php /^function make_unique_id_code($extra='') {$/;" f -make_upload_directory lib/moodlelib.php /^function make_upload_directory($directory, $shownotices=true) {$/;" f -mapHandler lib/lexer.php /^ function mapHandler($mode, $handler) {$/;" f -markdown_to_html lib/weblib.php /^function markdown_to_html($text) {$/;" f -match lib/lexer.php /^ function match($subject, &$match) {$/;" f -match_referer lib/weblib.php /^function match_referer($goodreferer = '') {$/;" f -me lib/weblib.php /^ function me() {$/;" f +make_timestamp lib/moodlelib.php /^function make_timestamp($year, $month=1, $day=1, $hour=0, $minute=0, $second=0, $timezone=99) {$/;" f +make_unique_id_code lib/moodlelib.php /^function make_unique_id_code($extra="") {$/;" f +make_upload_directory lib/moodlelib.php /^function make_upload_directory($directory) {$/;" f +match_referer lib/weblib.php /^function match_referer($goodreferer = "") {$/;" f +me lib/weblib.php /^function me() {$/;" f mediaplugin_filter filter/mediaplugin/filter.php /^function mediaplugin_filter($courseid, $text) {$/;" f merge lib/pclzip/pclzip.lib.php /^ function merge($p_archive_to_add)$/;" f merge_cells lib/excel/Worksheet.php /^ function merge_cells($first_row, $first_col, $last_row, $last_col)$/;" f -message_add_contact message/lib.php /^function message_add_contact($contactid, $blocked=0) {$/;" f -message_block_contact message/lib.php /^function message_block_contact($contactid) {$/;" f -message_broadcast mod/chat/chatd.php /^ function message_broadcast($message, $sender) {$/;" f -message_contact_link message/lib.php /^function message_contact_link($userid, $linktype='add', $return=false, $script="index.php?tab=contacts") {$/;" f -message_count_messages message/lib.php /^function message_count_messages($messagearray, $field='', $value='') {$/;" f -message_format_message message/lib.php /^function message_format_message(&$message, &$user, $format='', $keywords='') {$/;" f -message_get_contact message/lib.php /^function message_get_contact($contactid) {$/;" f -message_get_fragment message/lib.php /^function message_get_fragment($message, $keywords) {$/;" f -message_get_history message/lib.php /^function message_get_history($user1, $user2) {$/;" f -message_get_participants message/lib.php /^function message_get_participants() {$/;" f -message_history_link message/lib.php /^function message_history_link($userid1, $userid2=0, $returnstr=false, $keywords='', $position='', $linktext='') {$/;" f -message_popup_window lib/moodlelib.php /^function message_popup_window() {$/;" f -message_post_message message/lib.php /^function message_post_message($userfrom, $userto, $message, $format, $messagetype) {$/;" f -message_print_contacts message/lib.php /^function message_print_contacts() {$/;" f -message_print_search message/lib.php /^function message_print_search() {$/;" f -message_print_search_results message/lib.php /^function message_print_search_results($frm) {$/;" f -message_print_settings message/lib.php /^function message_print_settings() {$/;" f -message_print_user message/lib.php /^function message_print_user ($user=false, $iscontact=false, $isblocked=false) {$/;" f -message_remove_contact message/lib.php /^function message_remove_contact($contactid) {$/;" f -message_search message/lib.php /^function message_search($searchterms, $fromme=true, $tome=true, $courseid='none', $userid=0) {$/;" f -message_search_users message/lib.php /^function message_search_users($courseid, $searchtext, $sort='', $exceptions='') {$/;" f -message_shorten_message message/lib.php /^function message_shorten_message($message, $minlength=0) {$/;" f -message_unblock_contact message/lib.php /^function message_unblock_contact($contactid) {$/;" f microtime_diff lib/moodlelib.php /^function microtime_diff($a, $b) {$/;" f mime_content_type lib/adodb/tohtml.inc.php /^ function mime_content_type ($file) {$/;" f -mimeinfo lib/filelib.php /^function mimeinfo($element, $filename) {$/;" f -modify_database lib/datalib.php /^function modify_database($sqlfile='', $sqlstring='') {$/;" f +mimeinfo files/mimetypes.php /^function mimeinfo($element, $filename) {$/;" f +modify_database lib/datalib.php /^function modify_database($sqlfile="", $sqlstring="") {$/;" f moodle_binary_get_path mod/wiki/ewiki/plugins/moodle/moodle_binary_store.php /^function moodle_binary_get_path($id, $meta, $course, $wiki, $userid, $groupid) {$/;" f moodle_binary_store_file mod/wiki/ewiki/plugins/moodle/moodle_binary_store.php /^function moodle_binary_store_file(&$filename, &$id, &$meta, $ext=".bin") {$/;" f moodle_binary_store_get_file mod/wiki/ewiki/plugins/moodle/moodle_binary_store.php /^function moodle_binary_store_get_file($id, &$meta) {$/;" f moodle_ewiki_page_wiki_dump mod/wiki/ewiki/plugins/moodle/moodle_wikidump.php /^function moodle_ewiki_page_wiki_dump($id=0, $data=0, $action=0) {$/;" f moodle_needs_upgrading lib/moodlelib.php /^function moodle_needs_upgrading() {$/;" f -moodle_process_email lib/moodlelib.php /^function moodle_process_email($modargs,$body) {$/;" f moodle_setlocale lib/moodlelib.php /^function moodle_setlocale($locale='') {$/;" f moodle_strtolower lib/moodlelib.php /^function moodle_strtolower ($string, $encoding='') {$/;" f -move_category mod/quiz/category.php /^ function move_category($categoryid, $parentid) {$/;" f -move_category_up_down mod/quiz/category.php /^ function move_category_up_down ($direction, $categoryid) {$/;" f +move_module course/lib.php /^function move_module($cm, $move) {$/;" f move_section course/lib.php /^function move_section($course, $section, $move) {$/;" f moveto_module course/lib.php /^function moveto_module($mod, $section, $beforemod=NULL) {$/;" f -mtrace lib/moodlelib.php /^function mtrace($string, $eol="\\n", $sleep=0) {$/;" f multilang_filter filter/multilang/filter.php /^function multilang_filter($courseid, $text) {$/;" f my_file_get_contents admin/uploaduser.php /^function my_file_get_contents($filename, $use_include_path = 0) {$/;" f mygroupid lib/moodlelib.php /^function mygroupid($courseid) {$/;" f name blocks/moodleblock.class.php /^ function name() {$/;" f -name mod/quiz/locallib.php /^ function name() {$/;" f -name mod/quiz/questiontypes/calculated/questiontype.php /^ function name() {$/;" f -name mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function name() {$/;" f +name mod/quiz/lib.php /^ function name() {$/;" f name mod/quiz/questiontypes/description/questiontype.php /^ function name() {$/;" f name mod/quiz/questiontypes/match/questiontype.php /^ function name() {$/;" f name mod/quiz/questiontypes/multianswer/questiontype.php /^ function name() {$/;" f @@ -3805,106 +3172,58 @@ name mod/quiz/questiontypes/randomsamatch/questiontype.php /^ function name() name mod/quiz/questiontypes/shortanswer/questiontype.php /^ function name() {$/;" f name mod/quiz/questiontypes/truefalse/questiontype.php /^ function name() {$/;" f nat_rand mod/wiki/ewiki/plugins/email_protect.php /^ function nat_rand($max, $dr=0.5) {$/;" f -navmenu lib/weblib.php /^function navmenu($course, $cm=NULL, $targetwindow='self') {$/;" f -navmenulist lib/weblib.php /^function navmenulist($course, $sections, $modinfo, $isteacher, $strsection, $strjumpto, $width=50, $cmid=0) {$/;" f +navmenu lib/weblib.php /^function navmenu($course, $cm=NULL, $targetwindow="self") {$/;" f newLine lib/editor/htmlarea.php /^ function newLine() {$/;" f -newLine lib/editor/htmlarea_bak.php /^ function newLine() {$/;" f +newLine lib/editor/htmlarea_bak.php /^ function newLine() {$/;" f newQuery lib/adodb/adodb-xmlschema.inc.php /^ function newQuery() {$/;" f -new_child lib/cas/domxml-php4-php5.php /^ function new_child($name,$content)$/;" f -new_ufo_id mod/chat/chatd.php /^ function new_ufo_id() {$/;" f news_items_upgrade blocks/news_items/db/mysql.php /^function news_items_upgrade($oldversion=0) {$/;" f news_items_upgrade blocks/news_items/db/postgres7.php /^function news_items_upgrade($oldversion=0) {$/;" f next lib/adodb/adodb-iterator.inc.php /^ function next() $/;" f -nextId lib/adodb/adodb-connection.inc.php /^ function nextId($seq_name)$/;" f +nextId lib/adodb/adodb-connection.inc.php /^ function nextId($seq_name)$/;" f nextId lib/adodb/adodb.inc.php /^ function nextId($seq_name)$/;" f -next_sibling lib/cas/domxml-php4-php5.php /^ function next_sibling() {return new php4DOMElement($this->myDOMNode->nextSibling,$this->myOwnerDocument);}$/;" f -node_name lib/cas/domxml-php4-php5.php /^ function node_name() {return $this->myDOMNode->localName;}$/;" f -node_type lib/cas/domxml-php4-php5.php /^ function node_type() {return $this->myDOMNode->nodeType;}$/;" f -node_value lib/cas/domxml-php4-php5.php /^ function node_value() {return $this->myDOMNode->nodeValue;}$/;" f -not_found file.php /^ function not_found($courseid) {$/;" f -not_found rss/file.php /^ function not_found() {$/;" f -notice lib/weblib.php /^function notice ($message, $link='') {$/;" f +notice lib/weblib.php /^function notice ($message, $link="") {$/;" f notice_yesno lib/weblib.php /^function notice_yesno ($message, $linkyes, $linkno) {$/;" f -notify lib/weblib.php /^function notify ($message, $style='notifyproblem', $align='center') {$/;" f -notify_admins admin/handlevirus.php /^function notify_admins($user,$subject,$a) {$/;" f -notify_admins_unknown admin/handlevirus.php /^function notify_admins_unknown($file,$a) {$/;" f +notify lib/weblib.php /^function notify ($message, $color="red", $align="center") {$/;" f notify_login_failures lib/moodlelib.php /^function notify_login_failures() {$/;" f -notify_user admin/handlevirus.php /^function notify_user($user,$subject,$a) {$/;" f -nvl lib/weblib.php /^function nvl(&$var, $default='') {$/;" f -obfuscate_email lib/weblib.php /^ function obfuscate_email($email) {$/;" f -obfuscate_mailto lib/weblib.php /^function obfuscate_mailto($email, $label='', $dimmed=false) {$/;" f +nvl lib/weblib.php /^function nvl(&$var, $default="") {$/;" f +obfuscate_email lib/weblib.php /^function obfuscate_email($email) {$/;" f +obfuscate_mailto lib/weblib.php /^function obfuscate_mailto($email, $label="", $dimmed=false) {$/;" f obfuscate_text lib/weblib.php /^function obfuscate_text($plaintext) {$/;" f object lib/setup.php /^ class object {};$/;" c -objects_to_array mod/quiz/format/qti/format.php /^ function objects_to_array($objectarray)$/;" f oci_lob_desc lib/adodb/drivers/adodb-oci8.inc.php /^function oci_lob_desc($type) {$/;" f -olson_parse_at lib/olson.php /^function olson_parse_at ($at, $set = 'set', $gmtoffset) {$/;" f -olson_parse_offset lib/olson.php /^function olson_parse_offset ($offset) {$/;" f -olson_parse_on lib/olson.php /^function olson_parse_on ($on) {$/;" f -olson_simple_rule_parser lib/olson.php /^function olson_simple_rule_parser ($filename) {$/;" f -olson_simple_zone_parser lib/olson.php /^function olson_simple_zone_parser ($filename) {$/;" f -olson_to_timezones lib/olson.php /^function olson_to_timezones ($filename) {$/;" f onBrowse lib/editor/popups/link_std.php /^function onBrowse() {$/;" f -onCancel lib/editor/popups/createanchor.php /^function onCancel() {$/;" f onCancel lib/editor/popups/insert_image.php /^function onCancel() {$/;" f onCancel lib/editor/popups/insert_image_std.php /^function onCancel() {$/;" f onCancel lib/editor/popups/insert_table.php /^function onCancel() {$/;" f onCancel lib/editor/popups/link.php /^function onCancel() {$/;" f onCancel lib/editor/popups/link_std.php /^function onCancel() {$/;" f -onCancel lib/editor/popups/searchandreplace.php /^function onCancel() {$/;" f -onOK lib/editor/popups/createanchor.php /^function onOK() {$/;" f onOK lib/editor/popups/insert_image.php /^function onOK() {$/;" f onOK lib/editor/popups/insert_image_std.php /^function onOK() {$/;" f onOK lib/editor/popups/insert_table.php /^function onOK() {$/;" f onOK lib/editor/popups/link_std.php /^function onOK() {$/;" f onPreview lib/editor/popups/insert_image.php /^function onPreview() {$/;" f onPreview lib/editor/popups/insert_image_std.php /^function onPreview() {$/;" f -onReplaceAll lib/editor/popups/searchandreplace.php /^function onReplaceAll() {$/;" f onTargetChanged lib/editor/popups/link_std.php /^function onTargetChanged() {$/;" f online_users_upgrade blocks/online_users/db/mysql.php /^function online_users_upgrade($oldversion=0) {$/;" f online_users_upgrade blocks/online_users/db/postgres7.php /^function online_users_upgrade($oldversion=0) {$/;" f -open auth/fc/fcFPP.php /^ function open()$/;" f open lib/adodb/session/adodb-session.php /^ function open($save_path, $session_name, $persist = null) {$/;" f openpopup lib/javascript.php /^function openpopup(url,name,options,fullscreen) {$/;" f optimize lib/adodb/session/adodb-session.php /^ function optimize($optimize = null) {$/;" f -optional_param lib/moodlelib.php /^function optional_param($varname, $default=NULL, $options=PARAM_CLEAN) {$/;" f optional_variable lib/moodlelib.php /^function optional_variable(&$var, $default=0) {$/;" f -outp lib/adodb/adodb-connection.inc.php /^ function outp($msg,$newline=true)$/;" f +other_check mod/questionnaire/phpESP/public/handler.php /^function other_check(name)$/;" f +outp lib/adodb/adodb-connection.inc.php /^ function outp($msg,$newline=true)$/;" f outp lib/adodb/adodb.inc.php /^ function outp($msg,$newline=true)$/;" f output lib/graphlib.php /^function output() {$/;" f outputText filter/algebra/algebradebug.php /^function outputText($texexp) {$/;" f outputText filter/tex/texdebug.php /^ function outputText($texexp) {$/;" f -output_edit_single_table mod/quiz/category.php /^ function output_edit_single_table($category) {$/;" f -output_edit_table mod/quiz/category.php /^ function output_edit_table() {$/;" f -output_new_table mod/quiz/category.php /^ function output_new_table() {$/;" f -over_bounce_threshold lib/moodlelib.php /^function over_bounce_threshold($user) {$/;" f -owner_document lib/cas/domxml-php4-php5.php /^ function owner_document() {return $this->myOwnerDocument;}$/;" f p lib/weblib.php /^function p($var) {$/;" f -page_base lib/pagelib.php /^ function page_base() {$/;" f -page_base lib/pagelib.php /^class page_base {$/;" c -page_chat mod/chat/pagelib.php /^class page_chat extends page_generic_activity {$/;" c -page_course lib/pagelib.php /^class page_course extends page_base {$/;" c -page_create_instance lib/pagelib.php /^function page_create_instance($instance) {$/;" f -page_create_object lib/pagelib.php /^function page_create_object($type, $id = NULL) {$/;" f -page_generic_activity lib/pagelib.php /^class page_generic_activity extends page_base {$/;" c -page_id_and_class lib/weblib.php /^function page_id_and_class(&$getid, &$getclass) {$/;" f -page_import_types lib/pagelib.php /^function page_import_types($path) {$/;" f -page_map_class lib/pagelib.php /^function page_map_class($type, $classname = NULL) {$/;" f -page_quiz mod/quiz/pagelib.php /^class page_quiz extends page_generic_activity {$/;" c -page_test blocks/pagedemo.php /^ class page_test extends page_base {$/;" c -pageable lib/tablelib.php /^ function pageable($bool) {$/;" f -pagesize lib/tablelib.php /^ function pagesize($perpage, $total) {$/;" f -parent_node lib/cas/domxml-php4-php5.php /^ function parent_node() {return new php4DOMElement($this->myDOMNode->parentNode,$this->myOwnerDocument);}$/;" f parse lib/excel/Parser.php /^ function parse($formula)$/;" f -parse lib/lexer.php /^ function parse($raw) {$/;" f parseDSN lib/adodb/adodb-pear.inc.php /^ function parseDSN($dsn)$/;" f parse_contents lib/smarty/Config_File.class.php /^ function parse_contents($contents)$/;" f -parse_datasetinput mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function parse_datasetinput($datasetinput) {$/;" f parse_slash_arguments lib/weblib.php /^function parse_slash_arguments($string, $i=0) {$/;" f participants_upgrade blocks/participants/db/mysql.php /^function participants_upgrade($oldversion=0) {$/;" f participants_upgrade blocks/participants/db/postgres7.php /^function participants_upgrade($oldversion=0) {$/;" f password lib/adodb/session/adodb-session.php /^ function password($password = null) {$/;" f -paypal_upgrade enrol/paypal/db/mysql.php /^function paypal_upgrade($oldversion=0) {$/;" f -paypal_upgrade enrol/paypal/db/postgres7.php /^function paypal_upgrade($oldversion=0) {$/;" f perf_db2 lib/adodb/perf/perf-db2.inc.php /^ function perf_db2(&$conn)$/;" f perf_db2 lib/adodb/perf/perf-db2.inc.php /^class perf_db2 extends adodb_perf{$/;" c perf_informix lib/adodb/perf/perf-informix.inc.php /^ function perf_informix(&$conn)$/;" f @@ -3917,100 +3236,67 @@ perf_oci8 lib/adodb/perf/perf-oci8.inc.php /^ function perf_oci8(&$conn)$/;" f perf_oci8 lib/adodb/perf/perf-oci8.inc.php /^class perf_oci8 extends ADODB_perf{$/;" c perf_postgres lib/adodb/perf/perf-postgres.inc.php /^ function perf_postgres(&$conn)$/;" f perf_postgres lib/adodb/perf/perf-postgres.inc.php /^class perf_postgres extends adodb_perf{$/;" c -persist lib/adodb/session/adodb-session.php /^ function persist($persist = null) $/;" f +persist lib/adodb/session/adodb-session.php /^ function persist($persist = null) {$/;" f pg_insert_id lib/adodb/drivers/adodb-postgres64.inc.php /^ function pg_insert_id($tablename,$fieldname)$/;" f -php4DOMAttr lib/cas/domxml-php4-php5.php /^ function php4DOMAttr($aDOMAttr) {$this->myDOMNode=$aDOMAttr;}$/;" f -php4DOMAttr lib/cas/domxml-php4-php5.php /^class php4DOMAttr extends php4DOMNode$/;" c -php4DOMDocument lib/cas/domxml-php4-php5.php /^ function php4DOMDocument($filename='')$/;" f -php4DOMDocument lib/cas/domxml-php4-php5.php /^class php4DOMDocument extends php4DOMNode$/;" c -php4DOMElement lib/cas/domxml-php4-php5.php /^class php4DOMElement extends php4DOMNode$/;" c -php4DOMNode lib/cas/domxml-php4-php5.php /^ function php4DOMNode($aDomNode,$aOwnerDocument)$/;" f -php4DOMNode lib/cas/domxml-php4-php5.php /^class php4DOMNode$/;" c -php4DOMNodelist lib/cas/domxml-php4-php5.php /^ function php4DOMNodelist($aDOMNodelist,$aOwnerDocument)$/;" f -php4DOMNodelist lib/cas/domxml-php4-php5.php /^class php4DOMNodelist$/;" c -php4DOMXPath lib/cas/domxml-php4-php5.php /^ function php4DOMXPath($dom_document)$/;" f -php4DOMXPath lib/cas/domxml-php4-php5.php /^class php4DOMXPath$/;" c -php4DomXsltStylesheet lib/cas/domxml-php4-php5.php /^ function php4DomXsltStylesheet($dom_document)$/;" f -php4DomXsltStylesheet lib/cas/domxml-php4-php5.php /^ class php4DomXsltStylesheet$/;" c -phpCAS lib/cas/CAS.php /^class phpCAS$/;" c -plainstring lib/searchlib.php /^ function plainstring($content){$/;" f -playSCO mod/scorm/playscorm.php /^ function playSCO(scoid) {$/;" f -playSCO mod/scorm/view.php /^ function playSCO(scoid) {$/;" f +playSCO mod/scorm/playscorm.php /^ function playSCO(scoid) {$/;" f +playSCO mod/scorm/view.php /^ function playSCO(scoid,status) {$/;" f plot lib/graphlib.php /^function plot($x, $y, $type, $size, $colour, $offset) {$/;" f -poll_idle_chats mod/chat/chatd.php /^ function poll_idle_chats($now) {$/;" f -popup_form lib/weblib.php /^function popup_form($common, $options, $formname, $selected='', $nothing='choose', $help='', $helptext='', $return=false, $targetwindow='self') {$/;" f -preferred_width blocks/calendar_month/block_calendar_month.php /^ function preferred_width() {$/;" f -preferred_width blocks/course_summary/block_course_summary.php /^ function preferred_width() {$/;" f +popUpProperties lib/javascript.php /^function popUpProperties(inobj) {$/;" f +popup_form lib/weblib.php /^function popup_form ($common, $options, $formname, $selected="", $nothing="choose", $help="", $helptext="", $return=false, $targetwindow="self") {$/;" f preferred_width blocks/moodleblock.class.php /^ function preferred_width() {$/;" f prefix lib/adodb/adodb-xmlschema.inc.php /^ function prefix( $name = '' ) {$/;" f -prefix lib/cas/domxml-php4-php5.php /^ function prefix() {return $this->myDOMNode->prefix;}$/;" f prefixQuery lib/adodb/adodb-xmlschema.inc.php /^ function prefixQuery( $regex, $query, $prefix = NULL ) {$/;" f -prepareusers mod/chat/gui_sockets/chatinput.php /^function prepareusers() {$/;" f -preprocess_files lib/uploadlib.php /^ function preprocess_files() {$/;" f -presave_process mod/quiz/format.php /^ function presave_process( $content ) {$/;" f -presave_process mod/quiz/format/xml/format.php /^function presave_process( $content ) {$/;" f -previous_sibling lib/cas/domxml-php4-php5.php /^ function previous_sibling() {return new php4DOMElement($this->myDOMNode->previousSibling,$this->myOwnerDocument);}$/;" f -printHTMLFooter lib/cas/client.php /^ function printHTMLFooter()$/;" f -printHTMLHeader lib/cas/client.php /^ function printHTMLHeader($title)$/;" f print_TTF lib/graphlib.php /^function print_TTF($message) {$/;" f print_area lib/excel/Worksheet.php /^ function print_area($first_row, $first_col, $last_row, $last_col)$/;" f +print_block blocks/moodleblock.class.php /^ function print_block() {$/;" f print_category_edit course/index.php /^function print_category_edit($category, $displaylist, $parentslist, $depth=-1, $up=false, $down=false) {$/;" f print_category_info course/lib.php /^function print_category_info($category, $depth) {$/;" f -print_cell files/index.php /^function print_cell($alignment='center', $text='&nbsp;', $class='') {$/;" f +print_cell files/index.php /^function print_cell($alignment="center", $text="&nbsp;") {$/;" f print_cell lib/editor/coursefiles.php /^function print_cell($alignment="center", $text="&nbsp;") {$/;" f -print_checker_results lib/speller/server-scripts/spellchecker.php /^function print_checker_results() {$/;" f -print_compatibility_row install.php /^function print_compatibility_row($success, $testtext, $errormessage, $helpfield='', $caution=false) {$/;" f +print_cell lib/editor/courseimages.php /^function print_cell($alignment="center", $text="&nbsp;") {$/;" f +print_cell mod/resource/coursefiles.php /^function print_cell($alignment="center", $text="&nbsp;") {$/;" f +print_cell mod/scorm/coursefiles.php /^function print_cell($alignment="center", $text="&nbsp;") {$/;" f +print_cell mod/wiki/wikifiles.php /^function print_cell($alignment="center", $text="&nbsp;") {$/;" f +print_config blocks/course_list/block_course_list.php /^ function print_config() {$/;" f +print_config blocks/moodleblock.class.php /^ function print_config() {$/;" f +print_config blocks/online_users/block_online_users.php /^ function print_config() {$/;" f +print_config blocks/rssfeed/block_rssfeed.php /^ function print_config() {$/;" f +print_config enrol/temp.php /^ function print_config($page) {$/;" f print_continue lib/weblib.php /^function print_continue($link) {$/;" f print_course course/lib.php /^function print_course($course, $width="100%") {$/;" f +print_course_blocks lib/blocklib.php /^function print_course_blocks(&$course, $blocksarray, $side) {$/;" f print_course_search course/lib.php /^function print_course_search($value="", $return=false, $format="plain") {$/;" f print_courses course/lib.php /^function print_courses($category, $width="100%") {$/;" f print_date_selector lib/weblib.php /^function print_date_selector($day, $month, $year, $currenttime=0) {$/;" f -print_editor_config lib/weblib.php /^ function print_editor_config($editorhidebuttons='') {$/;" f print_entry enrol/database/enrol.php /^function print_entry($course) {$/;" f print_entry enrol/enrol.class.php /^function print_entry($course) {$/;" f print_entry enrol/flatfile/enrol.php /^function print_entry($course) {$/;" f -print_entry enrol/ldap/enrol.php /^function print_entry($course) {$/;" f print_entry enrol/paypal/enrol.php /^function print_entry($course) {$/;" f -print_error lib/weblib.php /^function print_error ($string, $link='') {$/;" f -print_file_picture lib/weblib.php /^function print_file_picture($path, $courseid=0, $height='', $width='', $link='') {$/;" f -print_file_upload_error lib/moodlelib.php /^function print_file_upload_error($filearray = '', $returnerror = false) {$/;" f -print_footer lib/weblib.php /^function print_footer($course=NULL, $usercourse=NULL) {$/;" f +print_file_picture lib/weblib.php /^function print_file_picture($path, $courseid=0, $height="", $width="", $link="") {$/;" f +print_footer lib/weblib.php /^function print_footer ($course=NULL) {$/;" f print_grade_menu lib/weblib.php /^function print_grade_menu($courseid, $name, $current, $includenograde=true) {$/;" f print_group_menu lib/weblib.php /^function print_group_menu($groups, $groupmode, $currentgroup, $urlroot) {$/;" f print_group_picture lib/weblib.php /^function print_group_picture($group, $courseid, $large=false, $returnstring=false, $link=true) {$/;" f -print_groupmode_setting course/lib.php /^function print_groupmode_setting($form, $course=NULL) {$/;" f -print_header blocks/pagedemo.php /^ function print_header($title) {$/;" f -print_header lib/pagelib.php /^ function print_header($title, $morebreadcrumbs = NULL) {$/;" f -print_header lib/pagelib.php /^ function print_header($title, $morebreadcrumbs) {$/;" f -print_header lib/weblib.php /^function print_header ($title='', $heading='', $navigation='', $focus='', $meta='',$/;" f -print_header mod/chat/pagelib.php /^ function print_header($title, $morebreadcrumbs = NULL) {$/;" f -print_header mod/quiz/pagelib.php /^ function print_header($title, $morebreadcrumbs = NULL) {$/;" f -print_header_simple lib/weblib.php /^function print_header_simple($title='', $heading='', $navigation='', $focus='', $meta='',$/;" f -print_heading lib/weblib.php /^function print_heading($text, $align='', $size=2, $class='main') {$/;" f -print_heading_block lib/weblib.php /^function print_heading_block($heading, $class='') {$/;" f -print_heading_with_help lib/weblib.php /^function print_heading_with_help($text, $helppage, $module='moodle', $icon='') {$/;" f +print_header lib/weblib.php /^function print_header ($title="", $heading="", $navigation="", $focus="", $meta="",$/;" f +print_heading lib/weblib.php /^function print_heading($text, $align="center", $size=3) {$/;" f +print_heading_block course/lib.php /^function print_heading_block($heading, $width="100%", $class="headingblock") {$/;" f +print_heading_with_help lib/weblib.php /^function print_heading_with_help($text, $helppage, $module="moodle", $icon="") {$/;" f print_headline lib/weblib.php /^function print_headline($text, $size=2) {$/;" f print_help lib/phpmailer/mailerc.php /^function print_help()$/;" f -print_html lib/tablelib.php /^ function print_html() {$/;" f -print_install_help install.php /^function print_install_help($help) {$/;" f -print_log course/lib.php /^function print_log($course, $user=0, $date=0, $order="l.time ASC", $page=0, $perpage=100,$/;" f +print_log course/lib.php /^function print_log($course, $user=0, $date=0, $order="l.time ASC", $page=0, $perpage=100, $/;" f print_log_graph course/lib.php /^function print_log_graph($course, $userid=0, $type="course.png", $date=0) {$/;" f print_log_selector_form course/lib.php /^function print_log_selector_form($course, $selecteduser=0, $selecteddate="today",$/;" f -print_maintenance_message lib/weblib.php /^function print_maintenance_message () {$/;" f print_my_moodle course/lib.php /^function print_my_moodle() {$/;" f print_navigation lib/weblib.php /^function print_navigation ($navigation) {$/;" f -print_object install.php /^function print_object($object) {$/;" f print_object lib/datalib.php /^function print_object($object) {$/;" f print_outline_row course/outline_rep.php /^function print_outline_row($mod, $instance, $result) {$/;" f print_outline_row course/user.php /^function print_outline_row($mod, $instance, $result) {$/;" f print_paging_bar lib/weblib.php /^function print_paging_bar($totalcount, $page, $perpage, $baseurl) {$/;" f print_png lib/weblib.php /^function print_png($url, $sizex, $sizey, $returnstring, $parameters='alt=""') {$/;" f print_pre lib/adodb/tests/client.php /^ function print_pre($s)$/;" f -print_question mod/quiz/locallib.php /^ function print_question($currentnumber, $quiz, $question,$/;" f +print_question mod/quiz/lib.php /^ function print_question($currentnumber, $quiz, $question,$/;" f print_question mod/quiz/questiontypes/description/questiontype.php /^ function print_question($currentnumber, $quiz, $question,$/;" f -print_question_form_end mod/quiz/locallib.php /^ function print_question_form_end($question, $submitscript='') {$/;" f -print_question_formulation_and_controls mod/quiz/locallib.php /^ function print_question_formulation_and_controls($question,$/;" f -print_question_formulation_and_controls mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function print_question_formulation_and_controls($question,$/;" f +print_question_formulation_and_controls mod/quiz/lib.php /^ function print_question_formulation_and_controls($question,$/;" f print_question_formulation_and_controls mod/quiz/questiontypes/match/questiontype.php /^ function print_question_formulation_and_controls($question,$/;" f print_question_formulation_and_controls mod/quiz/questiontypes/multianswer/questiontype.php /^ function print_question_formulation_and_controls($question,$/;" f print_question_formulation_and_controls mod/quiz/questiontypes/multichoice/questiontype.php /^ function print_question_formulation_and_controls($question,$/;" f @@ -4019,57 +3305,48 @@ print_question_formulation_and_controls mod/quiz/questiontypes/randomsamatch/que print_question_formulation_and_controls mod/quiz/questiontypes/shortanswer/questiontype.php /^ function print_question_formulation_and_controls($question,$/;" f print_question_formulation_and_controls mod/quiz/questiontypes/truefalse/questiontype.php /^ function print_question_formulation_and_controls($question,$/;" f print_recent_activity course/lib.php /^function print_recent_activity($course) {$/;" f -print_recent_activity_note lib/weblib.php /^function print_recent_activity_note($time, $user, $isteacher, $text, $link) {$/;" f print_recent_selector_form course/lib.php /^function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, $selecteddate="lastlogin",$/;" f -print_replacement_options mod/quiz/locallib.php /^ function print_replacement_options($question, $course, $quizid='0') {$/;" f -print_richedit_javascript lib/weblib.php /^function print_richedit_javascript($form, $name, $source='no') {$/;" f +print_richedit_javascript lib/weblib.php /^function print_richedit_javascript($form, $name, $source="no") {$/;" f +print_row lib/compatible.php /^function print_row($name, $value, $badcomment='') {$/;" f print_row user/view.php /^function print_row($left, $right) {$/;" f print_row_col_headers lib/excel/Worksheet.php /^ function print_row_col_headers($print = 1)$/;" f print_scale_menu lib/weblib.php /^function print_scale_menu($courseid, $name, $current) {$/;" f print_scale_menu_helpbutton lib/weblib.php /^function print_scale_menu_helpbutton($courseid, $scale) {$/;" f print_section course/lib.php /^function print_section($course, $section, $mods, $modnamesused, $absolute=false, $width="100%") {$/;" f print_section_add_menus course/lib.php /^function print_section_add_menus($course, $section, $modnames, $vertical=false, $return=false) {$/;" f +print_shadow blocks/moodleblock.class.php /^ function print_shadow() {$/;" f print_side_block lib/weblib.php /^function print_side_block($heading='', $content='', $list=NULL, $icons=NULL, $footer='', $attributes = array()) {$/;" f -print_side_block_end lib/weblib.php /^function print_side_block_end($attributes) {$/;" f +print_side_block_end lib/weblib.php /^function print_side_block_end() {$/;" f print_side_block_start lib/weblib.php /^function print_side_block_start($heading='', $attributes = array()) {$/;" f -print_simple_box lib/weblib.php /^function print_simple_box($message, $align='', $width='', $color='', $padding=5, $class='generalbox', $id='') {$/;" f +print_simple_box lib/weblib.php /^function print_simple_box($message, $align="", $width="", $color="#FFFFFF", $padding=5, $class="generalbox") {$/;" f print_simple_box_end lib/weblib.php /^function print_simple_box_end() {$/;" f -print_simple_box_start lib/weblib.php /^function print_simple_box_start($align='', $width='', $color='', $padding=5, $class='generalbox', $id='') {$/;" f -print_single_button lib/weblib.php /^function print_single_button($link, $options, $label='OK', $method='get', $target='_self') {$/;" f +print_simple_box_start lib/weblib.php /^function print_simple_box_start($align="", $width="", $color="#FFFFFF", $padding=5, $class="generalbox") {$/;" f +print_single_button lib/weblib.php /^function print_single_button($link, $options, $label="OK", $method="get") {$/;" f print_spacer lib/weblib.php /^function print_spacer($height=1, $width=1, $br=true) {$/;" f -print_speller_button lib/weblib.php /^function print_speller_button () {$/;" f -print_speller_code lib/weblib.php /^function print_speller_code ($usehtmleditor=false) {$/;" f -print_standard_coursemodule_settings course/lib.php /^function print_standard_coursemodule_settings($form) {$/;" f -print_string lib/moodlelib.php /^function print_string($identifier, $module='', $a=NULL) {$/;" f -print_suggs_elem lib/speller/server-scripts/spellchecker.php /^function print_suggs_elem( $suggs, $index, $text_input_idx ) {$/;" f +print_string lib/moodlelib.php /^function print_string($identifier, $module="", $a=NULL) {$/;" f print_table lib/weblib.php /^function print_table($table) {$/;" f -print_tabs lib/weblib.php /^function print_tabs($tabrows, $selected=NULL, $inactive=NULL, $return=false) {$/;" f -print_textarea lib/weblib.php /^function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $value='', $courseid=0) {$/;" f -print_textindex_decl lib/speller/server-scripts/spellchecker.php /^function print_textindex_decl( $text_input_idx ) {$/;" f -print_textinputs_var lib/speller/server-scripts/spellchecker.php /^function print_textinputs_var() {$/;" f +print_textarea lib/weblib.php /^function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $value="", $courseid=0) {$/;" f print_time_selector lib/weblib.php /^function print_time_selector($hour, $minute, $currenttime=0, $step=5) {$/;" f -print_timer_selector lib/weblib.php /^function print_timer_selector($timelimit = 0, $unit = '', $name = 'timelimit') {$/;" f -print_upload_log lib/uploadlib.php /^ function print_upload_log($return=false) {$/;" f +print_timer_selector lib/weblib.php /^function print_timer_selector($timelimit = 0, $unit = "") {$/;" f print_user lib/weblib.php /^function print_user($user, $course) {$/;" f -print_user_picture lib/weblib.php /^function print_user_picture($userid, $courseid, $picture, $size=0, $returnstring=false, $link=true, $target='') {$/;" f -print_user_table user/index.php /^function print_user_table($users, $isteacher) {$/;" f +print_user_picture lib/weblib.php /^function print_user_picture($userid, $courseid, $picture, $large=false, $returnstring=false, $link=true) {$/;" f print_version lib/phpmailer/mailerc.php /^function print_version()$/;" f -print_visible_setting course/lib.php /^function print_visible_setting($form, $course=NULL) {$/;" f print_whole_category_list course/lib.php /^function print_whole_category_list($category=NULL, $displaylist=NULL, $parentslist=NULL, $depth=-1) {$/;" f -print_words_elem lib/speller/server-scripts/spellchecker.php /^function print_words_elem( $word, $index, $text_input_idx ) {$/;" f printfilelist files/index.php /^function printfilelist($filelist) {$/;" f printfilelist lib/editor/coursefiles.php /^function printfilelist($filelist) {$/;" f +printfilelist lib/editor/courseimages.php /^function printfilelist($filelist) {$/;" f +printfilelist mod/resource/coursefiles.php /^function printfilelist($filelist) {$/;" f +printfilelist mod/scorm/coursefiles.php /^function printfilelist($filelist) {$/;" f +printfilelist mod/wiki/wikifiles.php /^function printfilelist($filelist) {$/;" f printsqla lib/adodb/tests/test-datadict.php /^function printsqla($dbType,$sqla)$/;" f privAdd lib/pclzip/pclzip.lib.php /^ function privAdd($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)$/;" f privAddFile lib/pclzip/pclzip.lib.php /^ function privAddFile($p_filename, &$p_header, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)$/;" f privAddFileList lib/pclzip/pclzip.lib.php /^ function privAddFileList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)$/;" f privAddList lib/pclzip/pclzip.lib.php /^ function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)$/;" f -privCheckFileHeaders lib/pclzip/pclzip.lib.php /^ function privCheckFileHeaders(&$p_local_header, &$p_central_header)$/;" f privCheckFormat lib/pclzip/pclzip.lib.php /^ function privCheckFormat($p_level=0)$/;" f privCloseFd lib/pclzip/pclzip.lib.php /^ function privCloseFd()$/;" f privConvertHeader2FileInfo lib/pclzip/pclzip.lib.php /^ function privConvertHeader2FileInfo($p_header, &$p_info)$/;" f privCreate lib/pclzip/pclzip.lib.php /^ function privCreate($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)$/;" f -privDecrypt lib/pclzip/pclzip.lib.php /^ function privDecrypt($p_encryption_header, &$p_buffer, $p_size, $p_crc)$/;" f privDeleteByRule lib/pclzip/pclzip.lib.php /^ function privDeleteByRule(&$p_result_list, &$p_options)$/;" f privDirCheck lib/pclzip/pclzip.lib.php /^ function privDirCheck($p_dir, $p_is_dir=false)$/;" f privDuplicate lib/pclzip/pclzip.lib.php /^ function privDuplicate($p_archive_filename)$/;" f @@ -4078,49 +3355,25 @@ privErrorReset lib/pclzip/pclzip.lib.php /^ function privErrorReset()$/;" f privExtractByRule lib/pclzip/pclzip.lib.php /^ function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)$/;" f privExtractFile lib/pclzip/pclzip.lib.php /^ function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)$/;" f privExtractFileAsString lib/pclzip/pclzip.lib.php /^ function privExtractFileAsString(&$p_entry, &$p_string)$/;" f -privExtractFileInOutput lib/pclzip/pclzip.lib.php /^ function privExtractFileInOutput(&$p_entry, &$p_options)$/;" f privList lib/pclzip/pclzip.lib.php /^ function privList(&$p_list)$/;" f privMerge lib/pclzip/pclzip.lib.php /^ function privMerge(&$p_archive_to_add)$/;" f privOpenFd lib/pclzip/pclzip.lib.php /^ function privOpenFd($p_mode)$/;" f -privParseOptions lib/pclzip/pclzip.lib.php /^ function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false)$/;" f +privParseOptions lib/pclzip/pclzip.lib.php /^ function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options)$/;" f privReadCentralFileHeader lib/pclzip/pclzip.lib.php /^ function privReadCentralFileHeader(&$p_header)$/;" f privReadEndCentralDir lib/pclzip/pclzip.lib.php /^ function privReadEndCentralDir(&$p_central_dir)$/;" f privReadFileHeader lib/pclzip/pclzip.lib.php /^ function privReadFileHeader(&$p_header)$/;" f privWriteCentralFileHeader lib/pclzip/pclzip.lib.php /^ function privWriteCentralFileHeader(&$p_header)$/;" f privWriteCentralHeader lib/pclzip/pclzip.lib.php /^ function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment)$/;" f privWriteFileHeader lib/pclzip/pclzip.lib.php /^ function privWriteFileHeader(&$p_header)$/;" f -problem_000001 admin/health.php /^class problem_000001 extends problem_base {$/;" c -problem_000002 admin/health.php /^class problem_000002 extends problem_base {$/;" c -problem_000003 admin/health.php /^class problem_000003 extends problem_base {$/;" c -problem_000004 admin/health.php /^class problem_000004 extends problem_base {$/;" c -problem_000005 admin/health.php /^class problem_000005 extends problem_base {$/;" c -problem_000006 admin/health.php /^class problem_000006 extends problem_base {$/;" c -problem_000007 admin/health.php /^class problem_000007 extends problem_base {$/;" c -problem_000008 admin/health.php /^class problem_000008 extends problem_base {$/;" c -problem_000009 admin/health.php /^class problem_000009 extends problem_base {$/;" c -problem_00000x admin/health.php /^class problem_00000x extends problem_base {$/;" c -problem_000010 admin/health.php /^class problem_000010 extends problem_base {$/;" c -problem_base admin/health.php /^class problem_base {$/;" c -process lib/cas/domxml-php4-php5.php /^ function process($dom_document,$xslt_parameters=array(),$param_is_xpath=false)$/;" f -process_config enrol/database/enrol.php /^function process_config($config) {$/;" f process_config enrol/enrol.class.php /^function process_config($config) {$/;" f -process_config enrol/flatfile/enrol.php /^function process_config($config) {$/;" f -process_config enrol/ldap/enrol.php /^function process_config($config) {$/;" f -process_config enrol/paypal/enrol.php /^function process_config($config) {$/;" f +process_config enrol/temp.php /^ function process_config($config) {$/;" f process_fib mod/quiz/format/blackboard/format.php /^function process_fib($xml, &$questions) {$/;" f -process_file_uploads lib/uploadlib.php /^ function process_file_uploads($destination) {$/;" f process_ma mod/quiz/format/blackboard/format.php /^function process_ma($xml, &$questions) {$/;" f process_matching mod/quiz/format/blackboard/format.php /^function process_matching($xml, &$questions) {$/;" f process_mc mod/quiz/format/blackboard/format.php /^function process_mc($xml, &$questions) {$/;" f -process_sidekicks mod/chat/chatd.php /^ function process_sidekicks($sessionid) {$/;" f process_tf mod/quiz/format/blackboard/format.php /^function process_tf($xml, &$questions) {$/;" f -promote_final mod/chat/chatd.php /^ function promote_final($sessionid, $customdata) {$/;" f -promote_ufo mod/chat/chatd.php /^ function promote_ufo($handle, $type, $sessionid, $customdata) {$/;" f properties lib/pclzip/pclzip.lib.php /^ function properties()$/;" f protect lib/excel/Worksheet.php /^ function protect($password)$/;" f -proxy lib/cas/CAS.php /^ function proxy($server_version,$/;" f -publish_category mod/quiz/category.php /^ function publish_category($publish, $categoryid) {$/;" f -put_records_csv lib/filelib.php /^function put_records_csv($file, $records, $table = NULL) {$/;" f q lib/adodb/adodb.inc.php /^ function q(&$s)$/;" f qr_answer_lookup mod/quiz/report/fullstat/report.php /^function qr_answer_lookup($qid,$thisanswer){$/;" f qr_getqs mod/quiz/report/fullstat/report.php /^function qr_getqs($quiz){$/;" f @@ -4134,7 +3387,7 @@ qr_match_array mod/quiz/report/fullstat/report.php /^function qr_match_array($no qr_match_table mod/quiz/report/fullstat/report.php /^function qr_match_table($resplist){$/;" f qr_print_headers mod/quiz/report/fullstat/report.php /^function qr_print_headers($data_tally,$nm,$gd){$/;" f qr_quiz_responses mod/quiz/report/fullstat/report.php /^function qr_quiz_responses($quiz) {$/;" f -qstr lib/adodb/adodb-connection.inc.php /^ function qstr($s,$magic_quotes=false)$/;" f +qstr lib/adodb/adodb-connection.inc.php /^ function qstr($s,$magic_quotes=false)$/;" f qstr lib/adodb/adodb.inc.php /^ function qstr($s,$magic_quotes=false)$/;" f qstr lib/adodb/drivers/adodb-mysql.inc.php /^ function qstr($s,$magic_quotes=false)$/;" f qstr lib/adodb/drivers/adodb-mysqli.inc.php /^ function qstr($s, $magic_quotes = false)$/;" f @@ -4143,112 +3396,108 @@ qstr lib/adodb/drivers/adodb-postgres64.inc.php /^ function qstr($s,$magic_quote qstr lib/adodb/drivers/adodb-vfp.inc.php /^ function qstr($s,$nofixquotes=false)$/;" f qualified_me lib/weblib.php /^function qualified_me() {$/;" f query lib/adodb/pear/Auth/Container/ADOdb.php /^ function query($query)$/;" f -query lib/cas/domxml-php4-php5.php /^ function query($eval_str,$contextnode)$/;" f -query_linux mod/quiz/format/coursetestmanager/format.php /^ function query_linux($sql, $mdbpath, $mdapath, $hostname) {$/;" f -query_start mod/chat/chatd.php /^ function query_start() {$/;" f -questions_with_export_info mod/quiz/format/qti/format.php /^ function questions_with_export_info($questions, $shuffleanswers = null) {$/;" f +query_linux mod/quiz/format/coursetestmanager/format.php /^ function query_linux($sql, $mdbpath, $mdapath, $hostname) {$/;" f +questionnaire_add_instance mod/questionnaire/lib.php /^function questionnaire_add_instance($questionnaire) {$/;" f +questionnaire_cron mod/questionnaire/lib.php /^function questionnaire_cron () {$/;" f +questionnaire_delete_instance mod/questionnaire/lib.php /^function questionnaire_delete_instance($id) {$/;" f +questionnaire_get_active_surveys_menu mod/questionnaire/lib.php /^function questionnaire_get_active_surveys_menu() {$/;" f +questionnaire_get_participants mod/questionnaire/lib.php /^function questionnaire_get_participants($questionnaireid) {$/;" f +questionnaire_get_surveys_menu mod/questionnaire/lib.php /^function questionnaire_get_surveys_menu($status=NULL) {$/;" f +questionnaire_grades mod/questionnaire/lib.php /^function questionnaire_grades($questionnaireid) {$/;" f +questionnaire_is_active mod/questionnaire/lib.php /^function questionnaire_is_active(&$questionnaire) {$/;" f +questionnaire_is_multi_submission mod/questionnaire/lib.php /^function questionnaire_is_multi_submission(&$questionnaire) {$/;" f +questionnaire_is_single_submission mod/questionnaire/lib.php /^function questionnaire_is_single_submission(&$questionnaire) {$/;" f +questionnaire_print_recent_activity mod/questionnaire/lib.php /^function questionnaire_print_recent_activity($course, $isteacher, $timestart) {$/;" f +questionnaire_record_submission mod/questionnaire/lib.php /^function questionnaire_record_submission(&$questionnaire, $userid) {$/;" f +questionnaire_update_instance mod/questionnaire/lib.php /^function questionnaire_update_instance($questionnaire) {$/;" f +questionnaire_upgrade mod/questionnaire/db/mysql.php /^function questionnaire_upgrade($oldversion) {$/;" f +questionnaire_user_can_take mod/questionnaire/lib.php /^function questionnaire_user_can_take(&$questionnaire, $userid) {$/;" f +questionnaire_user_complete mod/questionnaire/lib.php /^function questionnaire_user_complete($course, $user, $mod, $questionnaire) {$/;" f +questionnaire_user_outline mod/questionnaire/lib.php /^function questionnaire_user_outline($course, $user, $mod, $questionnaire) {$/;" f +quick_findposts course/quickreport.php /^function quick_findposts($courseid){$/;" f +quick_findrecs course/quickreport.php /^function quick_findrecs($tbl1,$tbl2,$pointer,$courseid){$/;" f +quick_findusers course/quickreport.php /^function quick_findusers($courseid){$/;" f +quick_headers course/quickreport.php /^function quick_headers($course){$/;" f +quick_moduleorder course/quickreport.php /^function quick_moduleorder($courseid){$/;" f +quick_show course/quickreport.php /^function quick_show($x){$/;" f quiz_add_instance mod/quiz/lib.php /^function quiz_add_instance($quiz) {$/;" f quiz_attempts_restore_mods mod/quiz/restorelib.php /^ function quiz_attempts_restore_mods($quiz_id,$info,$restore) {$/;" f quiz_backup_answers mod/quiz/backuplib.php /^ function quiz_backup_answers($bf,$preferences,$question) {$/;" f -quiz_backup_calculated mod/quiz/backuplib.php /^ function quiz_backup_calculated($bf,$preferences,$question,$level=6,$include_answers=true) {$/;" f -quiz_backup_dataset_items mod/quiz/backuplib.php /^ function quiz_backup_dataset_items($bf,$preferences,$datasetdefinition,$level=9) {$/;" f -quiz_backup_datasets mod/quiz/backuplib.php /^ function quiz_backup_datasets($bf,$preferences,$question,$level=7) {$/;" f quiz_backup_match mod/quiz/backuplib.php /^ function quiz_backup_match($bf,$preferences,$question) {$/;" f quiz_backup_mods mod/quiz/backuplib.php /^ function quiz_backup_mods($bf,$preferences) {$/;" f quiz_backup_multianswer mod/quiz/backuplib.php /^ function quiz_backup_multianswer($bf,$preferences,$question) {$/;" f quiz_backup_multichoice mod/quiz/backuplib.php /^ function quiz_backup_multichoice($bf,$preferences,$question,$level=6,$include_answers=true) {$/;" f quiz_backup_numerical mod/quiz/backuplib.php /^ function quiz_backup_numerical($bf,$preferences,$question,$level=6,$include_answers=true) {$/;" f -quiz_backup_numerical_units mod/quiz/backuplib.php /^ function quiz_backup_numerical_units($bf,$preferences,$question,$level=7) {$/;" f quiz_backup_question mod/quiz/backuplib.php /^ function quiz_backup_question($bf,$preferences,$category) {$/;" f quiz_backup_question_categories mod/quiz/backuplib.php /^ function quiz_backup_question_categories($bf,$preferences) {$/;" f quiz_backup_randomsamatch mod/quiz/backuplib.php /^ function quiz_backup_randomsamatch($bf,$preferences,$question) {$/;" f quiz_backup_shortanswer mod/quiz/backuplib.php /^ function quiz_backup_shortanswer($bf,$preferences,$question,$level=6,$include_answers=true) {$/;" f quiz_backup_truefalse mod/quiz/backuplib.php /^ function quiz_backup_truefalse($bf,$preferences,$question) {$/;" f -quiz_calculate_best_attempt mod/quiz/locallib.php /^function quiz_calculate_best_attempt($quiz, $attempts) {$/;" f -quiz_calculate_best_grade mod/quiz/locallib.php /^function quiz_calculate_best_grade($quiz, $attempts) {$/;" f -quiz_calculated_qtype mod/quiz/questiontypes/calculated/questiontype.php /^class quiz_calculated_qtype extends quiz_dataset_dependent_questiontype {$/;" c -quiz_calculated_qtype_numerical_helper mod/quiz/questiontypes/calculated/modifiednumericalqtype.php /^class quiz_calculated_qtype_numerical_helper extends quiz_numerical_qtype {$/;" c +quiz_calculate_best_attempt mod/quiz/lib.php /^function quiz_calculate_best_attempt($quiz, $attempts) {$/;" f +quiz_calculate_best_grade mod/quiz/lib.php /^function quiz_calculate_best_grade($quiz, $attempts) {$/;" f quiz_category_ids_by_backup mod/quiz/backuplib.php /^ function quiz_category_ids_by_backup ($backup_unique_code) {$/;" f -quiz_category_object mod/quiz/category.php /^ function quiz_category_object() {$/;" f -quiz_category_object mod/quiz/category.php /^class quiz_category_object {$/;" c -quiz_category_select_menu mod/quiz/locallib.php /^function quiz_category_select_menu($courseid,$published=false,$only_editable=false,$selected="") {$/;" f -quiz_categorylist mod/quiz/locallib.php /^function quiz_categorylist($categoryid) {$/;" f +quiz_category_select_menu mod/quiz/lib.php /^function quiz_category_select_menu($courseid,$published=false,$only_editable=false,$selected="") {$/;" f quiz_check_backup_mods mod/quiz/backuplib.php /^ function quiz_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f quiz_cron mod/quiz/lib.php /^function quiz_cron () {$/;" f -quiz_dataset_dependent_questiontype mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^class quiz_dataset_dependent_questiontype extends quiz_default_questiontype {$/;" c quiz_default_format mod/lesson/format.php /^class quiz_default_format {$/;" c quiz_default_format mod/quiz/format.php /^class quiz_default_format {$/;" c -quiz_default_questiontype mod/quiz/locallib.php /^class quiz_default_questiontype {$/;" c +quiz_default_questiontype mod/quiz/lib.php /^class quiz_default_questiontype {$/;" c quiz_default_report mod/quiz/report/default.php /^class quiz_default_report {$/;" c quiz_delete_course mod/quiz/lib.php /^function quiz_delete_course($course) {$/;" f quiz_delete_instance mod/quiz/lib.php /^function quiz_delete_instance($id) {$/;" f quiz_description_qtype mod/quiz/questiontypes/description/questiontype.php /^class quiz_description_qtype extends quiz_default_questiontype {$/;" c -quiz_edit_category_row mod/quiz/category.php /^ function quiz_edit_category_row($category, $shortname, $depth, $up = false, $down = false) {$/;" f quiz_embedded_cloze_qtype mod/quiz/questiontypes/multianswer/questiontype.php /^class quiz_embedded_cloze_qtype extends quiz_default_questiontype {$/;" c -quiz_export_prepare_questions mod/quiz/format/qti/format.php /^ function quiz_export_prepare_questions($questions, $quizid, $courseid, $shuffleanswers = null) {$/;" f -quiz_extract_correctanswers mod/quiz/locallib.php /^function quiz_extract_correctanswers($answers, $nameprefix) {$/;" f -quiz_extract_posted_id mod/quiz/locallib.php /^function quiz_extract_posted_id($name, $nameprefix='question') {$/;" f +quiz_extract_correctanswers mod/quiz/lib.php /^function quiz_extract_correctanswers($answers, $nameprefix) {$/;" f +quiz_extract_posted_id mod/quiz/lib.php /^function quiz_extract_posted_id($name, $nameprefix='question') {$/;" f quiz_file_format mod/quiz/format/aiken/format.php /^class quiz_file_format extends quiz_default_format {$/;" c quiz_file_format mod/quiz/format/aon/format.php /^class quiz_file_format extends quiz_default_format {$/;" c quiz_file_format mod/quiz/format/blackboard/format.php /^class quiz_file_format extends quiz_default_format {$/;" c quiz_file_format mod/quiz/format/coursetestmanager/format.php /^class quiz_file_format {$/;" c quiz_file_format mod/quiz/format/gift/format.php /^class quiz_file_format extends quiz_default_format {$/;" c -quiz_file_format mod/quiz/format/learnwise/format.php /^class quiz_file_format extends quiz_default_format {$/;" c quiz_file_format mod/quiz/format/missingword/format.php /^class quiz_file_format extends quiz_default_format {$/;" c quiz_file_format mod/quiz/format/multianswer/format.php /^class quiz_file_format extends quiz_default_format {$/;" c quiz_file_format mod/quiz/format/qti/format.php /^class quiz_file_format extends quiz_default_format {$/;" c quiz_file_format mod/quiz/format/webct/format.php /^class quiz_file_format extends quiz_default_format {$/;" c -quiz_file_format mod/quiz/format/xml/format.php /^class quiz_file_format extends quiz_default_format {$/;" c -quiz_format_webct_convert_formula mod/quiz/format/webct/format.php /^function quiz_format_webct_convert_formula($formula) {$/;" f -quiz_format_webct_modified_calculated_qtype mod/quiz/format/webct/format.php /^class quiz_format_webct_modified_calculated_qtype extends quiz_calculated_qtype {$/;" c -quiz_get_all_question_grades mod/quiz/locallib.php /^function quiz_get_all_question_grades($questionlist, $quizid) {$/;" f -quiz_get_answers mod/quiz/locallib.php /^function quiz_get_answers($question) {$/;" f -quiz_get_attempt_questions mod/quiz/locallib.php /^function quiz_get_attempt_questions($quiz, $attempt, $attempting = false) {$/;" f -quiz_get_best_grade mod/quiz/locallib.php /^function quiz_get_best_grade($quiz, $userid) {$/;" f -quiz_get_category_coursename mod/quiz/locallib.php /^function quiz_get_category_coursename($category, $courseid = 0) {$/;" f -quiz_get_category_menu mod/quiz/locallib.php /^function quiz_get_category_menu($courseid, $published=false) {$/;" f -quiz_get_default_category mod/quiz/locallib.php /^function quiz_get_default_category($courseid) {$/;" f -quiz_get_grade_records mod/quiz/locallib.php /^function quiz_get_grade_records($quiz) {$/;" f +quiz_get_all_question_grades mod/quiz/lib.php /^function quiz_get_all_question_grades($questionlist, $quizid) {$/;" f +quiz_get_answers mod/quiz/lib.php /^function quiz_get_answers($question) {$/;" f +quiz_get_attempt_questions mod/quiz/lib.php /^function quiz_get_attempt_questions($quiz, $attempt, $attempting = false) {$/;" f +quiz_get_best_grade mod/quiz/lib.php /^function quiz_get_best_grade($quizid, $userid) {$/;" f +quiz_get_category_coursename mod/quiz/lib.php /^function quiz_get_category_coursename($category) {$/;" f +quiz_get_category_menu mod/quiz/lib.php /^function quiz_get_category_menu($courseid, $published=false) {$/;" f +quiz_get_default_category mod/quiz/lib.php /^function quiz_get_default_category($courseid) {$/;" f +quiz_get_grade_records mod/quiz/lib.php /^function quiz_get_grade_records($quiz) {$/;" f quiz_get_participants mod/quiz/lib.php /^function quiz_get_participants($quizid) {$/;" f -quiz_get_question_grades mod/quiz/locallib.php /^function quiz_get_question_grades($quizid, $questionlist) {$/;" f +quiz_get_question_grades mod/quiz/lib.php /^function quiz_get_question_grades($quizid, $questionlist) {$/;" f quiz_get_recent_mod_activity mod/quiz/lib.php /^function quiz_get_recent_mod_activity(&$activities, &$index, $sincetime, $courseid, $quiz="0", $user="", $groupid="") {$/;" f -quiz_get_user_attempt_unfinished mod/quiz/locallib.php /^function quiz_get_user_attempt_unfinished($quizid, $userid) {$/;" f -quiz_get_user_attempts mod/quiz/locallib.php /^function quiz_get_user_attempts($quizid, $userid) {$/;" f +quiz_get_user_attempt_unfinished mod/quiz/lib.php /^function quiz_get_user_attempt_unfinished($quizid, $userid) {$/;" f +quiz_get_user_attempts mod/quiz/lib.php /^function quiz_get_user_attempts($quizid, $userid) {$/;" f quiz_get_user_attempts_list mod/quiz/report/overview/report.php /^ function quiz_get_user_attempts_list($quiz, $attempts, $bestgrade, $timeformat) {$/;" f -quiz_get_user_attempts_string mod/quiz/locallib.php /^function quiz_get_user_attempts_string($quiz, $attempts, $bestgrade) {$/;" f +quiz_get_user_attempts_string mod/quiz/lib.php /^function quiz_get_user_attempts_string($quiz, $attempts, $bestgrade) {$/;" f quiz_grade_ids_by_course mod/quiz/backuplib.php /^ function quiz_grade_ids_by_course ($course) {$/;" f -quiz_grade_responses mod/quiz/locallib.php /^function quiz_grade_responses($quiz, $questions, $attemptid=0) {$/;" f +quiz_grade_responses mod/quiz/lib.php /^function quiz_grade_responses($quiz, $questions) {$/;" f quiz_grades mod/quiz/lib.php /^function quiz_grades($quizid) {$/;" f quiz_grades_restore_mods mod/quiz/restorelib.php /^ function quiz_grades_restore_mods($quiz_id,$info,$restore) {$/;" f -quiz_gradesmenu_options mod/quiz/locallib.php /^function quiz_gradesmenu_options($defaultgrade) {$/;" f +quiz_gradesmenu_options mod/quiz/lib.php /^function quiz_gradesmenu_options($defaultgrade) {$/;" f quiz_ids mod/quiz/backuplib.php /^ function quiz_ids ($course) {$/;" f -quiz_load_questiontypes mod/quiz/locallib.php /^function quiz_load_questiontypes() {$/;" f +quiz_load_questiontypes mod/quiz/lib.php /^function quiz_load_questiontypes() {$/;" f quiz_match_qtype mod/quiz/questiontypes/match/questiontype.php /^class quiz_match_qtype extends quiz_default_questiontype {$/;" c -quiz_move_questions mod/quiz/locallib.php /^function quiz_move_questions($category1, $category2) {$/;" f +quiz_move_questions mod/quiz/lib.php /^function quiz_move_questions($category1, $category2) {$/;" f quiz_multichoice_qtype mod/quiz/questiontypes/multichoice/questiontype.php /^class quiz_multichoice_qtype extends quiz_default_questiontype {$/;" c -quiz_navigation_javascript mod/quiz/locallib.php /^function quiz_navigation_javascript($link) {$/;" f quiz_numerical_qtype mod/quiz/questiontypes/numerical/questiontype.php /^class quiz_numerical_qtype extends quiz_shortanswer_qtype {$/;" c -quiz_parse_fieldname mod/quiz/locallib.php /^function quiz_parse_fieldname($name, $nameprefix='question') {$/;" f -quiz_print_cat_question_list mod/quiz/locallib.php /^function quiz_print_cat_question_list($course, $categoryid, $quizselected=true, $recurse=1, $page, $perpage, $showhidden=false) {$/;" f -quiz_print_category_form mod/quiz/locallib.php /^function quiz_print_category_form($course, $current, $recurse=1, $showhidden=false) {$/;" f -quiz_print_comment mod/quiz/locallib.php /^function quiz_print_comment($text) {$/;" f -quiz_print_correctanswer mod/quiz/locallib.php /^function quiz_print_correctanswer($text) {$/;" f -quiz_print_navigation_panel mod/quiz/locallib.php /^function quiz_print_navigation_panel($questions, $questionsperpage, $navigation) {$/;" f -quiz_print_possible_question_image mod/quiz/locallib.php /^function quiz_print_possible_question_image($quizid, $question) {$/;" f -quiz_print_question_icon mod/quiz/locallib.php /^function quiz_print_question_icon($question, $editlink=true) {$/;" f -quiz_print_question_list mod/quiz/locallib.php /^function quiz_print_question_list($questionlist, $grades, $allowdelete=true, $quizid=0) {$/;" f -quiz_print_quiz_questions mod/quiz/locallib.php /^function quiz_print_quiz_questions($quiz, $questions, $results=NULL,$/;" f +quiz_print_cat_question_list mod/quiz/lib.php /^function quiz_print_cat_question_list($categoryid, $quizselected=true) {$/;" f +quiz_print_category_form mod/quiz/lib.php /^function quiz_print_category_form($course, $current) {$/;" f +quiz_print_comment mod/quiz/lib.php /^function quiz_print_comment($text) {$/;" f +quiz_print_correctanswer mod/quiz/lib.php /^function quiz_print_correctanswer($text) {$/;" f +quiz_print_possible_question_image mod/quiz/lib.php /^function quiz_print_possible_question_image($quizid, $question) {$/;" f +quiz_print_question_icon mod/quiz/lib.php /^function quiz_print_question_icon($question, $editlink=true) {$/;" f +quiz_print_question_list mod/quiz/lib.php /^function quiz_print_question_list($questionlist, $grades) {$/;" f +quiz_print_quiz_questions mod/quiz/lib.php /^function quiz_print_quiz_questions($quiz, $questions,$/;" f quiz_print_recent_mod_activity mod/quiz/lib.php /^function quiz_print_recent_mod_activity($activity, $course, $detail=false) {$/;" f -quiz_qtype_calculated_calculate_answer mod/quiz/questiontypes/calculated/questiontype.php /^function quiz_qtype_calculated_calculate_answer($formula, $individualdata,$/;" f -quiz_qtype_calculated_find_formula_errors mod/quiz/questiontypes/calculated/questiontype.php /^function quiz_qtype_calculated_find_formula_errors($formula) {$/;" f -quiz_qtype_dataset_pick_new mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^function quiz_qtype_dataset_pick_new($category, $maxnumber) {$/;" f quiz_qtype_multianswer_extract_question mod/quiz/questiontypes/multianswer/questiontype.php /^function quiz_qtype_multianswer_extract_question($text) {$/;" f quiz_qtype_multianswer_save_alternatives mod/quiz/questiontypes/multianswer/questiontype.php /^function quiz_qtype_multianswer_save_alternatives($questionid,$/;" f -quiz_qtype_nameprefix mod/quiz/locallib.php /^function quiz_qtype_nameprefix($question, $prefixstart='question') {$/;" f +quiz_qtype_nameprefix mod/quiz/lib.php /^function quiz_qtype_nameprefix($question, $prefixstart='question') {$/;" f quiz_question_grades_restore_mods mod/quiz/restorelib.php /^ function quiz_question_grades_restore_mods($quiz_id,$info,$restore) {$/;" f quiz_question_ids_by_backup mod/quiz/backuplib.php /^ function quiz_question_ids_by_backup ($backup_unique_code) {$/;" f -quiz_question_versions_restore_mods mod/quiz/restorelib.php /^ function quiz_question_versions_restore_mods($quiz_id,$info,$restore) {$/;" f -quiz_questiongrades_update mod/quiz/locallib.php /^function quiz_questiongrades_update($grades, $quizid) {$/;" f quiz_random_qtype mod/quiz/questiontypes/random/questiontype.php /^class quiz_random_qtype extends quiz_default_questiontype {$/;" c quiz_randomsamatch_qtype mod/quiz/questiontypes/randomsamatch/questiontype.php /^class quiz_randomsamatch_qtype extends quiz_match_qtype {$/;" c quiz_refresh_events mod/quiz/lib.php /^function quiz_refresh_events($courseid = 0) {$/;" f @@ -4263,9 +3512,6 @@ quiz_report_simplestat_grade_attempt_results mod/quiz/report/simplestat/report.p quiz_report_simplestat_remove_unwanted_questions mod/quiz/report/simplestat/report.php /^function quiz_report_simplestat_remove_unwanted_questions(&$questions, $quiz) {$/;" f quiz_responses_restore_mods mod/quiz/restorelib.php /^ function quiz_responses_restore_mods($attempt_id,$info,$restore) {$/;" f quiz_restore_answers mod/quiz/restorelib.php /^ function quiz_restore_answers ($old_question_id,$new_question_id,$info,$restore) {$/;" f -quiz_restore_calculated mod/quiz/restorelib.php /^ function quiz_restore_calculated ($old_question_id,$new_question_id,$info,$restore) {$/;" f -quiz_restore_dataset_definitions mod/quiz/restorelib.php /^ function quiz_restore_dataset_definitions ($old_question_id,$new_question_id,$info,$restore) {$/;" f -quiz_restore_dataset_items mod/quiz/restorelib.php /^ function quiz_restore_dataset_items ($definitionid,$info,$restore) {$/;" f quiz_restore_logs mod/quiz/restorelib.php /^ function quiz_restore_logs($restore,$log) {$/;" f quiz_restore_map_answers mod/quiz/restorelib.php /^ function quiz_restore_map_answers ($old_question_id,$new_question_id,$info,$restore) {$/;" f quiz_restore_map_match mod/quiz/restorelib.php /^ function quiz_restore_map_match ($old_question_id,$new_question_id,$info,$restore) { $/;" f @@ -4275,17 +3521,15 @@ quiz_restore_mods mod/quiz/restorelib.php /^ function quiz_restore_mods($mod, quiz_restore_multianswer mod/quiz/restorelib.php /^ function quiz_restore_multianswer ($old_question_id,$new_question_id,$info,$restore) {$/;" f quiz_restore_multichoice mod/quiz/restorelib.php /^ function quiz_restore_multichoice ($old_question_id,$new_question_id,$info,$restore) {$/;" f quiz_restore_numerical mod/quiz/restorelib.php /^ function quiz_restore_numerical ($old_question_id,$new_question_id,$info,$restore) {$/;" f -quiz_restore_numerical_units mod/quiz/restorelib.php /^ function quiz_restore_numerical_units ($old_question_id,$new_question_id,$info,$restore) {$/;" f quiz_restore_question_categories mod/quiz/restorelib.php /^ function quiz_restore_question_categories($category,$restore) {$/;" f quiz_restore_questions mod/quiz/restorelib.php /^ function quiz_restore_questions ($old_category_id,$new_category_id,$info,$restore) {$/;" f quiz_restore_randomsamatch mod/quiz/restorelib.php /^ function quiz_restore_randomsamatch ($old_question_id,$new_question_id,$info,$restore) {$/;" f quiz_restore_shortanswer mod/quiz/restorelib.php /^ function quiz_restore_shortanswer ($old_question_id,$new_question_id,$info,$restore) {$/;" f quiz_restore_truefalse mod/quiz/restorelib.php /^ function quiz_restore_truefalse ($old_question_id,$new_question_id,$info,$restore) {$/;" f -quiz_review_allowed mod/quiz/view.php /^ function quiz_review_allowed($quiz) {$/;" f -quiz_save_attempt mod/quiz/locallib.php /^function quiz_save_attempt($quiz, $questions, $result,$/;" f -quiz_save_best_grade mod/quiz/locallib.php /^function quiz_save_best_grade($quiz, $userid) {$/;" f +quiz_save_attempt mod/quiz/lib.php /^function quiz_save_attempt($quiz, $questions, $result, $attemptnum) {$/;" f +quiz_save_best_grade mod/quiz/lib.php /^function quiz_save_best_grade($quiz, $userid) {$/;" f quiz_shortanswer_qtype mod/quiz/questiontypes/shortanswer/questiontype.php /^class quiz_shortanswer_qtype extends quiz_default_questiontype {$/;" c -quiz_start_attempt mod/quiz/locallib.php /^function quiz_start_attempt($quizid, $userid, $numattempt) {$/;" f +quiz_start_attempt mod/quiz/lib.php /^function quiz_start_attempt($quizid, $userid, $numattempt) {$/;" f quiz_truefalse_qtype mod/quiz/questiontypes/truefalse/questiontype.php /^class quiz_truefalse_qtype extends quiz_default_questiontype {$/;" c quiz_update_instance mod/quiz/lib.php /^function quiz_update_instance($quiz) {$/;" f quiz_upgrade mod/quiz/db/mysql.php /^function quiz_upgrade($oldversion) {$/;" f @@ -4293,12 +3537,10 @@ quiz_upgrade mod/quiz/db/oci8po.php /^function quiz_upgrade($oldversion) {$/;" f quiz_upgrade mod/quiz/db/postgres7.php /^function quiz_upgrade($oldversion) {$/;" f quiz_user_complete mod/quiz/lib.php /^function quiz_user_complete($course, $user, $mod, $quiz) {$/;" f quiz_user_outline mod/quiz/lib.php /^function quiz_user_outline($course, $user, $mod, $quiz) {$/;" f -quiz_xmldata mod/quiz/format/coursetestmanager/format.php /^ function quiz_xmldata($parser, $data) {$/;" f -quiz_xmlend mod/quiz/format/coursetestmanager/format.php /^ function quiz_xmlend($parser, $name) {$/;" f -quiz_xmlstart mod/quiz/format/coursetestmanager/format.php /^ function quiz_xmlstart($parser, $name, $attribs) {$/;" f -quizzes_question_used mod/quiz/locallib.php /^function quizzes_question_used($id) {$/;" f +quiz_xmldata mod/quiz/format/coursetestmanager/format.php /^ function quiz_xmldata($parser, $data) {$/;" f +quiz_xmlend mod/quiz/format/coursetestmanager/format.php /^ function quiz_xmlend($parser, $name) {$/;" f +quiz_xmlstart mod/quiz/format/coursetestmanager/format.php /^ function quiz_xmlstart($parser, $name, $attribs) { $/;" f qvar lib/phpmailer/mailerc.php /^ function qvar($qarray, $data) {$/;" f -raise_memory_limit lib/moodlelib.php /^function raise_memory_limit ($newlimit) {$/;" f random_string lib/moodlelib.php /^function random_string ($length=15) {$/;" f rc4decrypt lib/moodlelib.php /^function rc4decrypt($data) {$/;" f rc4encrypt lib/moodlelib.php /^function rc4encrypt($data) {$/;" f @@ -4308,9 +3550,6 @@ read lib/adodb/session/adodb-encrypt-mcrypt.php /^ function read($data, $key) {$ read lib/adodb/session/adodb-encrypt-md5.php /^ function read($data, $key) {$/;" f read lib/adodb/session/adodb-encrypt-secret.php /^ function read($data, $key) {$/;" f read lib/adodb/session/adodb-session.php /^ function read($key) {$/;" f -read lib/cas/PGTStorage/pgt-file.php /^ function read($pgt_iou)$/;" f -read lib/cas/PGTStorage/pgt-main.php /^ function read($pgt_iou)$/;" f -readURL lib/cas/client.php /^ function readURL($url,$cookies,&$headers,&$body,&$err_msg)$/;" f read_template lib/weblib.php /^function read_template($filename, &$var) {$/;" f readdata mod/lesson/format.php /^ function readdata($filename) {$/;" f readdata mod/quiz/format.php /^ function readdata($filename) {$/;" f @@ -4320,23 +3559,20 @@ readquestion mod/quiz/format.php /^ function readquestion($lines) {$/;" f readquestion mod/quiz/format/aiken/format.php /^ function readquestion($lines) {$/;" f readquestion mod/quiz/format/aon/format.php /^ function readquestion($lines) {$/;" f readquestion mod/quiz/format/gift/format.php /^ function readquestion($lines) {$/;" f -readquestion mod/quiz/format/learnwise/format.php /^ function readquestion($lines) {$/;" f readquestion mod/quiz/format/missingword/format.php /^ function readquestion($lines) {$/;" f readquestions mod/lesson/format.php /^ function readquestions($lines) {$/;" f readquestions mod/quiz/format.php /^ function readquestions($lines) {$/;" f readquestions mod/quiz/format/aiken/format.php /^ function readquestions($lines){$/;" f readquestions mod/quiz/format/blackboard/format.php /^ function readquestions ($lines) {$/;" f -readquestions mod/quiz/format/learnwise/format.php /^ function readquestions($lines) {$/;" f readquestions mod/quiz/format/multianswer/format.php /^ function readquestions($lines) {$/;" f readquestions mod/quiz/format/webct/format.php /^ function readquestions ($lines) {$/;" f -readquestions mod/quiz/format/xml/format.php /^function readquestions($lines) {$/;" f rebuild_course_cache course/lib.php /^function rebuild_course_cache($courseid=0) {$/;" f rebuildnolinktag lib/weblib.php /^function rebuildnolinktag($text) {$/;" f recent_activity_upgrade blocks/recent_activity/db/mysql.php /^function recent_activity_upgrade($oldversion=0) {$/;" f recent_activity_upgrade blocks/recent_activity/db/postgres7.php /^function recent_activity_upgrade($oldversion=0) {$/;" f -record_exists lib/datalib.php /^function record_exists($table, $field1='', $value1='', $field2='', $value2='', $field3='', $value3='') {$/;" f +record_exists lib/datalib.php /^function record_exists($table, $field1="", $value1="", $field2="", $value2="", $field3="", $value3="") {$/;" f record_exists_sql lib/datalib.php /^function record_exists_sql($sql) {$/;" f -redirect lib/weblib.php /^function redirect($url, $message='', $delay='0') {$/;" f +redirect lib/weblib.php /^function redirect($url, $message="", $delay="0") {$/;" f refineTeX filter/algebra/algebradebug.php /^function refineTeX($texexp) {$/;" f refresh_content blocks/moodleblock.class.php /^ function refresh_content() {$/;" f register_block lib/smarty/Smarty.class.php /^ function register_block($block, $block_impl, $cacheable=true, $cache_attrs=null)$/;" f @@ -4349,35 +3585,26 @@ register_postfilter lib/smarty/Smarty.class.php /^ function register_postfilt register_prefilter lib/smarty/Smarty.class.php /^ function register_prefilter($function)$/;" f register_resource lib/smarty/Smarty.class.php /^ function register_resource($type, $functions)$/;" f reload_user_preferences lib/moodlelib.php /^function reload_user_preferences() {$/;" f -reloadusers mod/chat/gui_sockets/chatinput.php /^function reloadusers() {$/;" f removeUser lib/adodb/pear/Auth/Container/ADOdb.php /^ function removeUser($username)$/;" f remove_admin lib/moodlelib.php /^function remove_admin($userid) {$/;" f -remove_attribute lib/cas/domxml-php4-php5.php /^ function remove_attribute($name) {return $this->myDOMNode->removeAttribute($name);}$/;" f -remove_child lib/cas/domxml-php4-php5.php /^ function remove_child($oldchild) {return new php4DOMElement($this->myDOMNode->removeChild($oldchild->myDOMNode),$this->myOwnerDocument);}$/;" f remove_course_contents lib/moodlelib.php /^function remove_course_contents($courseid, $showfeedback=true) {$/;" f -remove_course_userdata lib/moodlelib.php /^function remove_course_userdata($courseid, $showfeedback=true,$/;" f remove_creator lib/moodlelib.php /^function remove_creator($userid) {$/;" f -remove_from_metacourse lib/moodlelib.php /^function remove_from_metacourse($metacourseid, $courseid) {$/;" f remove_teacher lib/moodlelib.php /^function remove_teacher($userid, $courseid=0) {$/;" f -removedoublecr mod/lesson/reformat.php /^function removedoublecr($filename) {$/;" f render_last lib/adodb/adodb-pager.inc.php /^ function render_last($anchor=true)$/;" f render_next lib/adodb/adodb-pager.inc.php /^ function render_next($anchor=true)$/;" f render_pagelinks lib/adodb/adodb-pager.inc.php /^ function render_pagelinks()$/;" f render_prev lib/adodb/adodb-pager.inc.php /^ function render_prev($anchor=true)$/;" f -repchar mod/quiz/format/gift/format.php /^function repchar( $text ) {$/;" f repeat_columns lib/excel/Worksheet.php /^ function repeat_columns($first_col, $last_col = NULL)$/;" f repeat_rows lib/excel/Worksheet.php /^ function repeat_rows($first_row, $last_row = NULL)$/;" f -replace_child lib/cas/domxml-php4-php5.php /^ function replace_child($oldnode,$newnode) {return new php4DOMElement($this->myDOMNode->replaceChild($oldnode->myDOMNode,$newnode->myDOMNode),$this->myOwnerDocument);}$/;" f replace_smilies lib/weblib.php /^function replace_smilies(&$text) {$/;" f -require_course_login lib/moodlelib.php /^function require_course_login($course, $autologinguest=true, $cm=null) {$/;" f -require_login lib/moodlelib.php /^function require_login($courseid=0, $autologinguest=true, $cm=null) {$/;" f +require_login lib/moodlelib.php /^function require_login($courseid=0, $autologinguest=true) {$/;" f require_variable lib/moodlelib.php /^function require_variable($var) {$/;" f -required_param lib/moodlelib.php /^function required_param($varname, $options=PARAM_CLEAN) {$/;" f reset_login_count lib/moodlelib.php /^function reset_login_count() {$/;" f reset_password_and_mail lib/moodlelib.php /^function reset_password_and_mail($user) {$/;" f -reset_to_defaults admin/editor.php /^function reset_to_defaults () {$/;" f reset_value lib/editor/coursefiles.php /^ function reset_value() {$/;" f resize_editor lib/editor/popups/fullscreen.php /^function resize_editor() { \/\/ resize editor to fix window$/;" f +resource mod/resource/url/resource.class.php /^class resource extends resource_base {$/;" c +resource mod/resource/url/resource.class.php /^function resource($cmid=0) {$/;" f resource_add_instance mod/resource/lib.php /^function resource_add_instance($resource) {$/;" f resource_backup_mods mod/resource/backuplib.php /^ function resource_backup_mods($bf,$preferences) {$/;" f resource_base mod/resource/lib.php /^class resource_base {$/;" c @@ -4392,15 +3619,17 @@ resource_encode_content_links mod/resource/backuplib.php /^ function resource resource_fetch_remote_file mod/resource/lib.php /^function resource_fetch_remote_file ($cm, $url, $headers = "" ) {$/;" f resource_file mod/resource/type/file/resource.class.php /^class resource_file extends resource_base {$/;" c resource_file mod/resource/type/file/resource.class.php /^function resource_file($cmid=0) {$/;" f -resource_filter mod/resource/filter.php /^ function resource_filter($courseid, $text) {$/;" f resource_get_coursemodule_info mod/resource/lib.php /^function resource_get_coursemodule_info($coursemodule) {$/;" f resource_get_participants mod/resource/lib.php /^function resource_get_participants($resourceid) {$/;" f -resource_get_resource_types mod/resource/lib.php /^function resource_get_resource_types() {$/;" f resource_html mod/resource/type/html/resource.class.php /^class resource_html extends resource_base {$/;" c resource_html mod/resource/type/html/resource.class.php /^function resource_html($cmid=0) {$/;" f resource_ids mod/resource/backuplib.php /^ function resource_ids ($course) {$/;" f resource_is_url mod/resource/lib.php /^function resource_is_url($path) {$/;" f +resource_link_names mod/resource/filter.php /^ function resource_link_names($text,$name,$href_tag_begin,$href_tag_end = "<\/a>") {$/;" f +resource_names_filter mod/resource/filter.php /^ function resource_names_filter($courseid, $text) {$/;" f resource_redirect_tags mod/resource/lib.php /^function resource_redirect_tags($text, $url, $tagtoparse, $keytoparse,$prefix = "" ) {$/;" f +resource_reference mod/resource/type/reference/resource.class.php /^class resource_reference extends resource_base {$/;" c +resource_reference mod/resource/type/reference/resource.class.php /^function resource_reference($cmid=0) {$/;" f resource_restore_logs mod/resource/restorelib.php /^ function resource_restore_logs($restore,$log) {$/;" f resource_restore_mods mod/resource/restorelib.php /^ function resource_restore_mods($mod,$restore) {$/;" f resource_text mod/resource/type/text/resource.class.php /^class resource_text extends resource_base {$/;" c @@ -4414,14 +3643,10 @@ resource_user_outline mod/resource/lib.php /^function resource_user_outline($cou restore_check_instances backup/restorelib.php /^ function restore_check_instances($restore) {$/;" f restore_check_moodle_file backup/restorelib.php /^ function restore_check_moodle_file ($file) {$/;" f restore_course_files backup/restorelib.php /^ function restore_course_files($restore) {$/;" f -restore_create_block_instances backup/restorelib.php /^ function restore_create_block_instances($restore,$xml_file) {$/;" f -restore_create_blocks backup/restorelib.php /^ function restore_create_blocks($restore, $backup_block_format, $blockinfo, $xml_file) {$/;" f restore_create_events backup/restorelib.php /^ function restore_create_events($restore,$xml_file) {$/;" f restore_create_groups backup/restorelib.php /^ function restore_create_groups($restore,$xml_file) {$/;" f restore_create_groups_members backup/restorelib.php /^ function restore_create_groups_members($group_id,$info,$restore) {$/;" f restore_create_logs backup/restorelib.php /^ function restore_create_logs($restore,$xml_file) {$/;" f -restore_create_messages backup/restorelib.php /^ function restore_create_messages($restore,$xml_file) {$/;" f -restore_create_metacourse backup/restorelib.php /^ function restore_create_metacourse($restore,$xml_file) {$/;" f restore_create_modules backup/restorelib.php /^ function restore_create_modules($restore,$xml_file) {$/;" f restore_create_new_course backup/restorelib.php /^ function restore_create_new_course($restore,&$course_header) {$/;" f restore_create_questions backup/restorelib.php /^ function restore_create_questions($restore,$xml_file) {$/;" f @@ -4432,36 +3657,26 @@ restore_decode_absolute_links backup/restorelib.php /^ function restore_decod restore_decode_content_links backup/restorelib.php /^ function restore_decode_content_links($restore) {$/;" f restore_decode_wiki_content backup/restorelib.php /^ function restore_decode_wiki_content($content,$restore) {$/;" f restore_decode_wiki_texts backup/restorelib.php /^ function restore_decode_wiki_texts($restore) {$/;" f -restore_group_files backup/restorelib.php /^ function restore_group_files($restore) {$/;" f restore_log_course backup/restorelib.php /^ function restore_log_course($restore,$log) {$/;" f restore_log_module backup/restorelib.php /^ function restore_log_module($restore,$log) {$/;" f restore_log_user backup/restorelib.php /^ function restore_log_user($restore,$log) {$/;" f -restore_precheck backup/restorelib.php /^ function restore_precheck($id,$file,$silent=false) {$/;" f restore_print_course_header backup/restorelib.php /^ function restore_print_course_header ($course_header) {$/;" f restore_print_info backup/restorelib.php /^ function restore_print_info ($info) {$/;" f restore_read_xml backup/restorelib.php /^ function restore_read_xml ($xml_file,$todo,$preferences) {$/;" f -restore_read_xml_blocks backup/restorelib.php /^ function restore_read_xml_blocks ($xml_file) {$/;" f restore_read_xml_course_header backup/restorelib.php /^ function restore_read_xml_course_header ($xml_file) {$/;" f restore_read_xml_events backup/restorelib.php /^ function restore_read_xml_events ($restore,$xml_file) {$/;" f restore_read_xml_groups backup/restorelib.php /^ function restore_read_xml_groups ($restore,$xml_file) {$/;" f restore_read_xml_info backup/restorelib.php /^ function restore_read_xml_info ($xml_file) {$/;" f restore_read_xml_logs backup/restorelib.php /^ function restore_read_xml_logs ($restore,$xml_file) {$/;" f -restore_read_xml_messages backup/restorelib.php /^ function restore_read_xml_messages ($restore,$xml_file) {$/;" f -restore_read_xml_metacourse backup/restorelib.php /^ function restore_read_xml_metacourse ($xml_file) {$/;" f restore_read_xml_modules backup/restorelib.php /^ function restore_read_xml_modules ($restore,$xml_file) {$/;" f restore_read_xml_questions backup/restorelib.php /^ function restore_read_xml_questions ($restore,$xml_file) {$/;" f restore_read_xml_scales backup/restorelib.php /^ function restore_read_xml_scales ($restore,$xml_file) {$/;" f restore_read_xml_sections backup/restorelib.php /^ function restore_read_xml_sections ($xml_file) {$/;" f restore_read_xml_users backup/restorelib.php /^ function restore_read_xml_users ($restore,$xml_file) {$/;" f restore_refresh_events backup/restorelib.php /^ function restore_refresh_events($restore) {$/;" f -restore_setup_for_check backup/restorelib.php /^ function restore_setup_for_check(&$restore,$backup_unique_code) {$/;" f restore_unzip backup/restorelib.php /^ function restore_unzip ($file) {$/;" f restore_user_files backup/restorelib.php /^ function restore_user_files($restore) {$/;" f -result_dump_file lib/cas/domxml-php4-php5.php /^ function result_dump_file($dom_document,$filename)$/;" f -result_dump_mem lib/cas/domxml-php4-php5.php /^ function result_dump_mem($dom_document) {return $dom_document->myDOMNode->saveHTML();}$/;" f -retrievePT lib/cas/client.php /^ function retrievePT($target_service,&$err_code,&$err_msg)$/;" f rewind lib/adodb/adodb-iterator.inc.php /^ function rewind() $/;" f -root lib/cas/domxml-php4-php5.php /^ function root() {return new php4DOMElement($this->myDOMNode->documentElement,$this);}$/;" f rs2csv lib/adodb/toexport.inc.php /^function rs2csv(&$rs,$addtitles=true)$/;" f rs2csvfile lib/adodb/toexport.inc.php /^function rs2csvfile(&$rs,$fp,$addtitles=true)$/;" f rs2csvout lib/adodb/toexport.inc.php /^function rs2csvout(&$rs,$addtitles=true)$/;" f @@ -4469,32 +3684,20 @@ rs2html lib/adodb/tohtml.inc.php /^function rs2html(&$rs,$ztabhtml=false,$zheade rs2tab lib/adodb/toexport.inc.php /^function rs2tab(&$rs,$addtitles=true)$/;" f rs2tabfile lib/adodb/toexport.inc.php /^function rs2tabfile(&$rs,$fp,$addtitles=true)$/;" f rs2tabout lib/adodb/toexport.inc.php /^function rs2tabout(&$rs,$addtitles=true)$/;" f -rss_add_items lib/rsslib.php /^function rss_add_items($items) {$/;" f -rss_display_feeds lib/rsslib.php /^function rss_display_feeds($rssid='none') {$/;" f -rss_end_tag lib/rsslib.php /^function rss_end_tag($tag,$level=0,$endline=true) {$/;" f -rss_file_name lib/rsslib.php /^function rss_file_name($modname, $mod) {$/;" f -rss_full_tag lib/rsslib.php /^function rss_full_tag($tag,$level=0,$endline=true,$content,$to_utf=true) {$/;" f -rss_get_form blocks/rss_client/block_rss_client_action.php /^function rss_get_form($act, $url, $rssid, $preferredtitle, $printnow=true) {$/;" f -rss_get_link lib/rsslib.php /^function rss_get_link($courseid, $userid, $modulename, $id, $tooltiptext='') {$/;" f -rss_geterrorxmlfile lib/rsslib.php /^function rss_geterrorxmlfile() {$/;" f -rss_print_link lib/rsslib.php /^function rss_print_link($courseid, $userid, $modulename, $id, $tooltiptext='') {$/;" f -rss_save_file lib/rsslib.php /^function rss_save_file ($modname, $mod, $result) {$/;" f -rss_standard_footer lib/rsslib.php /^function rss_standard_footer($title = NULL, $link = NULL, $description = NULL) {$/;" f -rss_standard_header lib/rsslib.php /^function rss_standard_header($title = NULL, $link = NULL, $description = NULL) {$/;" f -rss_start_tag lib/rsslib.php /^function rss_start_tag($tag,$level=0,$endline=false) {$/;" f -rss_unhtmlentities lib/rsslib.php /^function rss_unhtmlentities($string) {$/;" f +rss_add_items rss/rsslib.php /^function rss_add_items($items) {$/;" f +rss_end_tag rss/rsslib.php /^function rss_end_tag($tag,$level=0,$endline=true) {$/;" f +rss_full_tag rss/rsslib.php /^function rss_full_tag($tag,$level=0,$endline=true,$content,$to_utf=true) {$/;" f +rss_print_link rss/rsslib.php /^function rss_print_link($courseid, $userid, $modulename, $id, $tooltiptext="") {$/;" f +rss_save_file rss/rsslib.php /^function rss_save_file ($modname,$mod,$result) {$/;" f +rss_standard_footer rss/rsslib.php /^function rss_standard_footer($title = NULL, $link = NULL, $description = NULL) {$/;" f +rss_standard_header rss/rsslib.php /^function rss_standard_header($title = NULL, $link = NULL, $description = NULL) {$/;" f +rss_start_tag rss/rsslib.php /^function rss_start_tag($tag,$level=0,$endline=false) {$/;" f +rssfeed_upgrade blocks/rssfeed/db/mysql.php /^function rssfeed_upgrade($oldversion=0) {$/;" f s lib/weblib.php /^function s($var) {$/;" f -sanitise_for_paypal enrol/paypal/enrol.php /^function sanitise_for_paypal($text) {$/;" f -sanitize lib/searchlib.php /^ function sanitize($userstring){$/;" f -save_files lib/uploadlib.php /^ function save_files($destination) {$/;" f -save_profile_image lib/gdlib.php /^function save_profile_image($id, $uploadmanager, $dir='users') {$/;" f -save_question mod/quiz/locallib.php /^ function save_question($question, $form, $course) {$/;" f -save_question mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function save_question($question, $form, $course, $subtypeoptions=false) {$/;" f +save_profile_image lib/gdlib.php /^function save_profile_image($id, $filename, $dir="users") {$/;" f +save_question mod/quiz/lib.php /^ function save_question($question, $form, $course) {$/;" f save_question mod/quiz/questiontypes/multianswer/questiontype.php /^ function save_question($authorizedquestion, $form, $course) {$/;" f -save_question_options mod/quiz/format/webct/format.php /^ function save_question_options($question, $options = false) {$/;" f -save_question_options mod/quiz/locallib.php /^ function save_question_options($question) {$/;" f -save_question_options mod/quiz/questiontypes/calculated/questiontype.php /^ function save_question_options($question, $options) {$/;" f -save_question_options mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function save_question_options($question, $options) {$/;" f +save_question_options mod/quiz/lib.php /^ function save_question_options($question) {$/;" f save_question_options mod/quiz/questiontypes/description/questiontype.php /^ function save_question_options($question) {$/;" f save_question_options mod/quiz/questiontypes/match/questiontype.php /^ function save_question_options($question) {$/;" f save_question_options mod/quiz/questiontypes/multianswer/questiontype.php /^ function save_question_options($question) {$/;" f @@ -4511,19 +3714,26 @@ schedule_backup_cron backup/backup_scheduled.php /^function schedule_backup_cron schedule_backup_launch_backup backup/backup_scheduled.php /^function schedule_backup_launch_backup($course,$starttime = 0) {$/;" f schedule_backup_log backup/backup_scheduled.php /^function schedule_backup_log($starttime,$courseid,$message) {$/;" f schedule_backup_next_execution backup/backup_scheduled.php /^function schedule_backup_next_execution ($backup_course,$backup_config,$now,$timezone) {$/;" f +scheduler_add_instance mod/scheduler/lib.php /^function scheduler_add_instance($scheduler) {$/;" f +scheduler_cron mod/scheduler/lib.php /^function scheduler_cron () {$/;" f +scheduler_delete_instance mod/scheduler/lib.php /^function scheduler_delete_instance($id) {$/;" f +scheduler_get_participants mod/scheduler/lib.php /^function scheduler_get_participants($schedulerid) {$/;" f +scheduler_grades mod/scheduler/lib.php /^function scheduler_grades($schedulerid) {$/;" f +scheduler_print_recent_activity mod/scheduler/lib.php /^function scheduler_print_recent_activity($course, $isteacher, $timestart) {$/;" f +scheduler_update_instance mod/scheduler/lib.php /^function scheduler_update_instance($scheduler) {$/;" f +scheduler_user_complete mod/scheduler/lib.php /^function scheduler_user_complete($course, $user, $mod, $scheduler) {$/;" f +scheduler_user_outline mod/scheduler/lib.php /^function scheduler_user_outline($course, $user, $mod, $scheduler) {$/;" f scorm_add_instance mod/scorm/lib.php /^function scorm_add_instance($scorm) {$/;" f scorm_backup_mods mod/scorm/backuplib.php /^ function scorm_backup_mods($bf,$preferences) {$/;" f scorm_characterData mod/scorm/lib.php /^function scorm_characterData($parser, $data) {$/;" f scorm_check_backup_mods mod/scorm/backuplib.php /^ function scorm_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f scorm_cron mod/scorm/lib.php /^function scorm_cron () {$/;" f scorm_datadir mod/scorm/lib.php /^function scorm_datadir($strPath, $existingdir='', $prefix = 'SCORM')$/;" f -scorm_delete_files mod/scorm/lib.php /^function scorm_delete_files($directory) {$/;" f +scorm_delete_files mod/scorm/lib.php /^function scorm_delete_files($directory)$/;" f scorm_delete_instance mod/scorm/lib.php /^function scorm_delete_instance($id) {$/;" f -scorm_display_structure mod/scorm/lib.php /^function scorm_display_structure($scorm,$liststyle,$currentorg='',$scoid='',$mode='normal',$play=false) {$/;" f scorm_endElement mod/scorm/lib.php /^function scorm_endElement($parser, $name) {$/;" f scorm_external_link mod/scorm/lib.php /^function scorm_external_link($link) {$/;" f scorm_get_scoes_records mod/scorm/lib.php /^function scorm_get_scoes_records($sco_user) {$/;" f -scorm_get_tracks mod/scorm/lib.php /^function scorm_get_tracks($scoid,$userid) {$/;" f scorm_grades mod/scorm/lib.php /^function scorm_grades($scormid) {$/;" f scorm_ids mod/scorm/backuplib.php /^ function scorm_ids ($course) {$/;" f scorm_parse mod/scorm/lib.php /^function scorm_parse($basedir,$file,$scorm_id) {$/;" f @@ -4533,12 +3743,11 @@ scorm_remove_spaces mod/scorm/lib.php /^function scorm_remove_spaces($sourcestr) scorm_restore_files mod/scorm/restorelib.php /^ function scorm_restore_files ($packagedir, $restore) {$/;" f scorm_restore_logs mod/scorm/restorelib.php /^ function scorm_restore_logs($restore,$log) {$/;" f scorm_restore_mods mod/scorm/restorelib.php /^ function scorm_restore_mods($mod,$restore) {$/;" f -scorm_scandir mod/scorm/lib.php /^function scorm_scandir($directory) {$/;" f +scorm_sco_users_ids_by_course mod/scorm/backuplib.php /^ function scorm_sco_users_ids_by_course ($course) {$/;" f +scorm_sco_users_restore_mods mod/scorm/restorelib.php /^ function scorm_sco_users_restore_mods($scorm_id,$info,$restore) {$/;" f scorm_scoes_restore_mods mod/scorm/restorelib.php /^ function scorm_scoes_restore_mods($scorm_id,$info,$restore) {$/;" f -scorm_scoes_track_ids_by_course mod/scorm/backuplib.php /^ function scorm_scoes_track_ids_by_course ($course) {$/;" f -scorm_scoes_tracks_restore_mods mod/scorm/restorelib.php /^ function scorm_scoes_tracks_restore_mods($scorm_id,$info,$restore) {$/;" f scorm_startElement mod/scorm/lib.php /^function scorm_startElement($parser, $name, $attrs) {$/;" f -scorm_string_round mod/scorm/lib.php /^function scorm_string_round($stringa, $len=11) {$/;" f +scorm_string_round mod/scorm/lib.php /^function scorm_string_round($stringa) {$/;" f scorm_update_instance mod/scorm/lib.php /^function scorm_update_instance($scorm) {$/;" f scorm_upgrade mod/scorm/db/mysql.php /^function scorm_upgrade($oldversion) {$/;" f scorm_upgrade mod/scorm/db/postgres7.php /^function scorm_upgrade($oldversion) {$/;" f @@ -4547,81 +3756,44 @@ scorm_user_outline mod/scorm/lib.php /^function scorm_user_outline($course, $use scorm_validate mod/scorm/lib.php /^function scorm_validate($manifest)$/;" f search_forums_upgrade blocks/search_forums/db/mysql.php /^function search_forums_upgrade($oldversion=0) {$/;" f search_forums_upgrade blocks/search_forums/db/postgres7.php /^function search_forums_upgrade($oldversion=0) {$/;" f -search_generate_SQL lib/searchlib.php /^function search_generate_SQL($parsetree, $datafield, $metafield, $mainidfield, $useridfield,$/;" f -search_lexer lib/searchlib.php /^ function search_lexer(&$parser){$/;" f -search_lexer lib/searchlib.php /^class search_lexer extends Lexer{$/;" c -search_parser lib/searchlib.php /^class search_parser {$/;" c -search_token lib/searchlib.php /^ function search_token($type,$value){$/;" f -search_token lib/searchlib.php /^class search_token {$/;" c -search_users lib/datalib.php /^function search_users($courseid, $groupid, $searchtext, $sort='', $exceptions='') {$/;" f section_links_upgrade blocks/section_links/db/mysql.php /^function section_links_upgrade($oldversion=0) {$/;" f section_links_upgrade blocks/section_links/db/postgres7.php /^function section_links_upgrade($oldversion=0) {$/;" f select lib/excel/Worksheet.php /^ function select()$/;" f send2server lib/adodb/tests/client.php /^ function &send2server($url,$sql)$/;" f -send_confirmation_email lib/moodlelib.php /^ function send_confirmation_email($user) {$/;" f +send_confirmation_email lib/moodlelib.php /^function send_confirmation_email($user) {$/;" f send_data mod/quiz/jstimer.php /^function send_data() {$/;" f -send_file lib/filelib.php /^function send_file($path, $filename, $lifetime=86400 , $filter=false, $pathisstring=false) {$/;" f +send_get speed.php /^function send_get()$/;" f send_message lib/phpmailer/mailerc.php /^function send_message($filePath)$/;" f send_password_change_confirmation_email lib/moodlelib.php /^function send_password_change_confirmation_email($user) {$/;" f -serviceMail lib/cas/CAS.php /^ function serviceMail($url,$flags,&$err_code,&$err_msg,&$pt)$/;" f -serviceMail lib/cas/client.php /^ function serviceMail($url,$flags,&$err_code,&$err_msg,&$pt)$/;" f -serviceWeb lib/cas/CAS.php /^ function serviceWeb($url,&$err_code,&$output)$/;" f -serviceWeb lib/cas/client.php /^ function serviceWeb($url,&$err_code,&$output)$/;" f -sesskey lib/moodlelib.php /^function sesskey() {$/;" f setBlockSize lib/adodb/session/adodb-compress-bzip2.php /^ function setBlockSize($block_size) {$/;" f setButtonStatus lib/editor/htmlarea.php /^ function setButtonStatus(id, newval) {$/;" f -setButtonStatus lib/editor/htmlarea_bak.php /^ function setButtonStatus(id, newval) {$/;" f -setCallbackMode lib/cas/client.php /^ function setCallbackMode($callback_mode)$/;" f +setButtonStatus lib/editor/htmlarea_bak.php /^ function setButtonStatus(id, newval) {$/;" f setCipher lib/adodb/session/adodb-encrypt-mcrypt.php /^ function setCipher($cipher) {$/;" f -setDebug lib/cas/CAS.php /^ function setDebug($filename='')$/;" f -setErrorMessage lib/cas/PGTStorage/pgt-main.php /^ function setErrorMessage($error_message)$/;" f -setHTMLFooter lib/cas/CAS.php /^ function setHTMLFooter($footer)$/;" f -setHTMLFooter lib/cas/client.php /^ function setHTMLFooter($footer)$/;" f -setHTMLHeader lib/cas/CAS.php /^ function setHTMLHeader($header)$/;" f -setHTMLHeader lib/cas/client.php /^ function setHTMLHeader($header)$/;" f -setLang lib/cas/CAS.php /^ function setLang($lang)$/;" f -setLang lib/cas/client.php /^ function setLang($lang)$/;" f setLevel lib/adodb/session/adodb-compress-gzip.php /^ function setLevel($level) {$/;" f setMinLength lib/adodb/session/adodb-compress-bzip2.php /^ function setMinLength($min_length) {$/;" f setMinLength lib/adodb/session/adodb-compress-gzip.php /^ function setMinLength($min_length) {$/;" f setMode lib/adodb/session/adodb-encrypt-mcrypt.php /^ function setMode($mode) {$/;" f -setPGT lib/cas/client.php /^ function setPGT($pgt)$/;" f -setPGTStorageDB lib/cas/CAS.php /^ function setPGTStorageDB($user,$/;" f -setPGTStorageDB lib/cas/client.php /^ function setPGTStorageDB($user,$/;" f -setPGTStorageFile lib/cas/CAS.php /^ function setPGTStorageFile($format='',$/;" f -setPGTStorageFile lib/cas/client.php /^ function setPGTStorageFile($format='',$/;" f -setPT lib/cas/client.php /^ function setPT($pt)$/;" f -setST lib/cas/client.php /^ function setST($st)$/;" f setSource lib/adodb/session/adodb-encrypt-mcrypt.php /^ function setSource($source) {$/;" f -setUser lib/cas/client.php /^ function setUser($user)$/;" f setWorkLevel lib/adodb/session/adodb-compress-bzip2.php /^ function setWorkLevel($work_level) {$/;" f set_align lib/excel/Format.php /^ function set_align($location)$/;" f -set_answers mod/quiz/questiontypes/calculated/modifiednumericalqtype.php /^ function set_answers($calculatedanswers) {$/;" f -set_attribute lib/cas/domxml-php4-php5.php /^ function set_attribute($name,$value) {return $this->myDOMNode->setAttribute($name,$value);}$/;" f -set_attribute lib/tablelib.php /^ function set_attribute($attribute, $value) {$/;" f set_bg_color lib/excel/Format.php /^ function set_bg_color($color)$/;" f set_bold lib/excel/Format.php /^ function set_bold($weight = 1)$/;" f set_border lib/excel/Format.php /^ function set_border($style)$/;" f set_border_color lib/excel/Format.php /^ function set_border_color($color)$/;" f set_bottom lib/excel/Format.php /^ function set_bottom($style)$/;" f set_bottom_color lib/excel/Format.php /^ function set_bottom_color($color)$/;" f -set_bounce_count lib/moodlelib.php /^function set_bounce_count($user,$reset=false) {$/;" f set_color lib/excel/Format.php /^ function set_color($color)$/;" f set_column lib/excel/Worksheet.php /^ function set_column($firstcol, $lastcol, $width, $format = 0, $hidden = 0)$/;" f set_config lib/moodlelib.php /^function set_config($name, $value) {$/;" f -set_content lib/cas/domxml-php4-php5.php /^ function set_content($text)$/;" f -set_course mod/quiz/category.php /^ function set_course($course) {$/;" f -set_coursemodule_groupmode course/lib.php /^function set_coursemodule_groupmode($id, $groupmode) {$/;" f -set_coursemodule_visible course/lib.php /^function set_coursemodule_visible($id, $visible) {$/;" f set_current_group lib/moodlelib.php /^function set_current_group($courseid, $groupid) {$/;" f set_custom_color lib/excel/Workbook.php /^ function set_custom_color($index,$red,$green,$blue)$/;" f set_dir lib/editor/coursefiles.php /^ function set_dir(strdir) {$/;" f -set_encrypted_parameter mod/resource/type/file/resource.class.php /^function set_encrypted_parameter() {$/;" f set_fg_color lib/excel/Format.php /^ function set_fg_color($color)$/;" f -set_field lib/datalib.php /^function set_field($table, $newfield, $newvalue, $field1, $value1, $field2='', $value2='', $field3='', $value3='') {$/;" f +set_field lib/datalib.php /^function set_field($table, $newfield, $newvalue, $field1, $value1, $field2="", $value2="", $field3="", $value3="") {$/;" f set_file_contents lib/smarty/Config_File.class.php /^ function set_file_contents($config_file, $contents)$/;" f set_first_sheet lib/excel/Worksheet.php /^ function set_first_sheet()$/;" f set_footer lib/excel/Worksheet.php /^ function set_footer($string,$margin = 0.50)$/;" f +set_groupmode_for_module course/lib.php /^function set_groupmode_for_module($id, $groupmode) {$/;" f set_h_pagebreaks lib/excel/Worksheet.php /^ function set_h_pagebreaks($breaks)$/;" f set_header lib/excel/Worksheet.php /^ function set_header($string,$margin = 0.50)$/;" f set_italic lib/excel/Format.php /^ function set_italic()$/;" f @@ -4650,44 +3822,51 @@ set_right_color lib/excel/Format.php /^ function set_right_color($color)$/;" set_row lib/excel/Worksheet.php /^ function set_row($row, $height, $format = 0)$/;" f set_section_visible course/lib.php /^function set_section_visible($courseid, $sectionnumber, $visibility) {$/;" f set_selection lib/excel/Worksheet.php /^ function set_selection($first_row,$first_column,$last_row,$last_column)$/;" f -set_send_count lib/moodlelib.php /^function set_send_count($user,$reset=false) {$/;" f set_size lib/excel/Format.php /^ function set_size($size)$/;" f set_size lib/excel/OLEwriter.php /^ function set_size($biffsize)$/;" f set_text_wrap lib/excel/Format.php /^ function set_text_wrap($text_wrap = 1)$/;" f set_top lib/excel/Format.php /^ function set_top($style)$/;" f set_top_color lib/excel/Format.php /^ function set_top_color($color)$/;" f set_underline lib/excel/Format.php /^ function set_underline($underline)$/;" f -set_user_preference lib/moodlelib.php /^function set_user_preference($name, $value, $otheruser=NULL) {$/;" f -set_user_preferences lib/moodlelib.php /^function set_user_preferences($prefarray, $userid=NULL) {$/;" f +set_user_preference lib/moodlelib.php /^function set_user_preference($name, $value) {$/;" f +set_user_preferences lib/moodlelib.php /^function set_user_preferences($prefarray) {$/;" f set_v_pagebreaks lib/excel/Worksheet.php /^ function set_v_pagebreaks($breaks)$/;" f -set_value files/index.php /^ function set_value(txt) {$/;" f set_value lib/editor/coursefiles.php /^ function set_value(params) {$/;" f -set_value mod/resource/type/file/localfile.php /^ function set_value(txt) {$/;" f -set_value mod/resource/type/file/localpath.php /^ function set_value(txt) {$/;" f -set_viable_parents mod/quiz/category.php /^ function set_viable_parents(&$parentstrings, $category) {$/;" f +set_value lib/editor/courseimages.php /^ function set_value(url) {$/;" f +set_value mod/resource/coursefiles.php /^ function set_value(txt) {$/;" f +set_value mod/scorm/coursefiles.php /^ function set_value(txt) {$/;" f +set_value mod/wiki/wikifiles.php /^ function set_value(txt) {$/;" f set_zoom lib/excel/Worksheet.php /^ function set_zoom($scale = 100)$/;" f setfilelist files/index.php /^function setfilelist($VARS) {$/;" f setfilelist lib/editor/coursefiles.php /^function setfilelist($VARS) {$/;" f -setup lib/tablelib.php /^ function setup() {$/;" f +setfilelist lib/editor/courseimages.php /^function setfilelist($VARS) {$/;" f +setfilelist mod/resource/coursefiles.php /^function setfilelist($VARS) {$/;" f +setfilelist mod/scorm/coursefiles.php /^function setfilelist($VARS) {$/;" f +setfilelist mod/wiki/wikifiles.php /^function setfilelist($VARS) {$/;" f setup mod/resource/lib.php /^function setup(&$form) {$/;" f setup mod/resource/type/directory/resource.class.php /^function setup($form) {$/;" f setup mod/resource/type/file/resource.class.php /^function setup($form) {$/;" f setup mod/resource/type/html/resource.class.php /^function setup($form) {$/;" f +setup mod/resource/type/reference/resource.class.php /^function setup($form) {$/;" f setup mod/resource/type/text/resource.class.php /^function setup($form) {$/;" f +setup mod/resource/url/resource.class.php /^function setup($form) {$/;" f setup_and_print_groups lib/moodlelib.php /^function setup_and_print_groups($course, $groupmode, $urlroot) {$/;" f setup_end mod/resource/lib.php /^function setup_end() {$/;" f -seturl lib/editor/popups/link_std.php /^function seturl() {$/;" f -severity admin/health.php /^ function severity() {$/;" f sheets lib/excel/Workbook.php /^ function sheets()$/;" f +shelf_add_instance mod/shelf/lib.php /^function shelf_add_instance($shelf) {$/;" f +shelf_cron mod/shelf/lib.php /^function shelf_cron () {$/;" f +shelf_delete_instance mod/shelf/lib.php /^function shelf_delete_instance($id) {$/;" f +shelf_grades mod/shelf/lib.php /^function shelf_grades($shelfid) {$/;" f +shelf_print_recent_activity mod/shelf/lib.php /^function shelf_print_recent_activity($course, $isteacher, $timestart) {$/;" f +shelf_update_instance mod/shelf/lib.php /^function shelf_update_instance($shelf) {$/;" f +shelf_upgrade mod/shelf/db/mysql.php /^function shelf_upgrade($oldversion) {$/;" f +shelf_user_complete mod/shelf/lib.php /^function shelf_user_complete($course, $user, $mod, $shelf) {$/;" f +shelf_user_outline mod/shelf/lib.php /^function shelf_user_outline($course, $user, $mod, $shelf) {$/;" f showDbg lib/adodb/pear/Auth/Container/ADOdb.php /^function showDbg( $string ) {$/;" f +show_course_module course/lib.php /^function show_course_module($mod) {$/;" f show_event lib/moodlelib.php /^function show_event($event) {$/;" f -showhide shane.javascript.functions.php /^ function showhide (id, set) {$/;" f -showhide_button shane.javascript.functions.php /^function showhide_button($blockid, $settingsname='', $returnstring=false) {$/;" f -showhide_init shane.javascript.functions.php /^function showhide_init($blockid, $returnstring=false) {$/;" f -showhide_jsfunctions shane.javascript.functions.php /^function showhide_jsfunctions() {$/;" f showtime mod/quiz/jsclock.php /^function showtime() {$/;" f -shuffle_things mod/quiz/format/qti/format.php /^ function shuffle_things($things) {$/;" f -site_scale_used lib/moodlelib.php /^function site_scale_used($scaleid,&$courses) {$/;" f +site_scale_used lib/moodlelib.php /^function site_scale_used($scaleid) {$/;" f size_col lib/excel/Worksheet.php /^ function size_col($col)$/;" f size_row lib/excel/Worksheet.php /^ function size_row($row)$/;" f smarty_block_textformat lib/smarty/plugins/block.textformat.php /^function smarty_block_textformat($params, $content, &$smarty)$/;" f @@ -4738,6 +3917,10 @@ smarty_function_mailto lib/smarty/plugins/function.mailto.php /^function smarty_ smarty_function_math lib/smarty/plugins/function.math.php /^function smarty_function_math($params, &$smarty)$/;" f smarty_function_popup lib/smarty/plugins/function.popup.php /^function smarty_function_popup($params, &$smarty)$/;" f smarty_function_popup_init lib/smarty/plugins/function.popup_init.php /^function smarty_function_popup_init($params, &$smarty)$/;" f +smarty_insert_formadddatapart lib/forms/plugins/insert.formadddatapart.php /^function smarty_insert_formadddatapart($params, &$smarty)$/;" f +smarty_insert_formaddinputhiddenpart lib/forms/plugins/insert.formaddinputhiddenpart.php /^function smarty_insert_formaddinputhiddenpart($params, &$smarty)$/;" f +smarty_insert_formaddinputpart lib/forms/plugins/insert.formaddinputpart.php /^function smarty_insert_formaddinputpart($params, &$smarty)$/;" f +smarty_insert_formaddlabelpart lib/forms/plugins/insert.formaddlabelpart.php /^function smarty_insert_formaddlabelpart($params, &$smarty)$/;" f smarty_make_timestamp lib/smarty/plugins/shared.make_timestamp.php /^function smarty_make_timestamp($string)$/;" f smarty_modifier_capitalize lib/smarty/plugins/modifier.capitalize.php /^function smarty_modifier_capitalize($string)$/;" f smarty_modifier_cat lib/smarty/plugins/modifier.cat.php /^function smarty_modifier_cat($string, $cat)$/;" f @@ -4751,7 +3934,6 @@ smarty_modifier_default lib/smarty/plugins/modifier.default.php /^function smart smarty_modifier_escape lib/smarty/plugins/modifier.escape.php /^function smarty_modifier_escape($string, $esc_type = 'html')$/;" f smarty_modifier_indent lib/smarty/plugins/modifier.indent.php /^function smarty_modifier_indent($string,$chars=4,$char=" ")$/;" f smarty_modifier_lower lib/smarty/plugins/modifier.lower.php /^function smarty_modifier_lower($string)$/;" f -smarty_modifier_markdown lib/markdown.php /^function smarty_modifier_markdown($text) {$/;" f smarty_modifier_nl2br lib/smarty/plugins/modifier.nl2br.php /^function smarty_modifier_nl2br($string)$/;" f smarty_modifier_regex_replace lib/smarty/plugins/modifier.regex_replace.php /^function smarty_modifier_regex_replace($string, $search, $replace)$/;" f smarty_modifier_replace lib/smarty/plugins/modifier.replace.php /^function smarty_modifier_replace($string, $search, $replace)$/;" f @@ -4764,32 +3946,19 @@ smarty_modifier_upper lib/smarty/plugins/modifier.upper.php /^function smarty_mo smarty_modifier_wordwrap lib/smarty/plugins/modifier.wordwrap.php /^function smarty_modifier_wordwrap($string,$length=80,$break="\\n",$cut=false)$/;" f smarty_outputfilter_trimwhitespace lib/smarty/plugins/outputfilter.trimwhitespace.php /^function smarty_outputfilter_trimwhitespace($source, &$smarty)$/;" f smarty_outputfilter_trimwhitespace_replace lib/smarty/plugins/outputfilter.trimwhitespace.php /^function smarty_outputfilter_trimwhitespace_replace($search_str, $replace, &$subject) {$/;" f +smarty_prefilter_form lib/forms/plugins/prefilter.form.php /^function smarty_prefilter_form($tpl_source, &$smarty)$/;" f social_activities_upgrade blocks/social_activities/db/mysql.php /^function social_activities_upgrade($oldversion=0) {$/;" f social_activities_upgrade blocks/social_activities/db/postgres7.php /^function social_activities_upgrade($oldversion=0) {$/;" f -solution admin/health.php /^ function solution() {$/;" f -sortable lib/tablelib.php /^ function sortable($bool) {$/;" f +socket_set_option mod/chat/gui_sockets/arscd.php /^ function socket_set_option($socket, $level, $name, $val) {$/;" f sp_who lib/adodb/perf/perf-mssql.inc.php /^ function sp_who()$/;" f -specialization blocks/course_summary/block_course_summary.php /^ function specialization() {$/;" f -specialization blocks/glossary_random/block_glossary_random.php /^ function specialization() {$/;" f -specialization blocks/html/block_html.php /^ function specialization() {$/;" f -specialization blocks/moodleblock.class.php /^ function specialization() {$/;" f -specialization blocks/rss_client/block_rss_client.php /^ function specialization() {$/;" f spellcheck lib/wiki.php /^ function spellcheck( $line,$pspell_link ) {$/;" f -speller_enable lib/speller/lib.php /^function speller_enable (&$CFG) {$/;" f -sql_fullname lib/datalib.php /^function sql_fullname($firstname='firstname',$lastname='lastname') {$/;" f -sql_ilike lib/datalib.php /^function sql_ilike() {$/;" f -sql_isnull lib/datalib.php /^function sql_isnull($fieldname) {$/;" f -sql_paging_limit lib/datalib.php /^function sql_paging_limit($page, $recordsperpage) {$/;" f -start mod/chat/gui_header_js/users.php /^ function start() {$/;" f startElement backup/restorelib.php /^ function startElement($parser, $tagName, $attrs) {$/;" f -startElementBlocks backup/restorelib.php /^ function startElementBlocks($parser, $tagName, $attrs) {$/;" f +startElement filter/multilang/filter.php /^ function startElement($parser, $tag, $attributeList) {$/;" f startElementCourseHeader backup/restorelib.php /^ function startElementCourseHeader($parser, $tagName, $attrs) {$/;" f startElementEvents backup/restorelib.php /^ function startElementEvents($parser, $tagName, $attrs) {$/;" f startElementGroups backup/restorelib.php /^ function startElementGroups($parser, $tagName, $attrs) {$/;" f startElementInfo backup/restorelib.php /^ function startElementInfo($parser, $tagName, $attrs) {$/;" f startElementLogs backup/restorelib.php /^ function startElementLogs($parser, $tagName, $attrs) {$/;" f -startElementMessages backup/restorelib.php /^ function startElementMessages($parser, $tagName, $attrs) {$/;" f -startElementMetacourse backup/restorelib.php /^ function startElementMetacourse($parser, $tagName, $attrs) {$/;" f startElementModules backup/restorelib.php /^ function startElementModules($parser, $tagName, $attrs) {$/;" f startElementQuestions backup/restorelib.php /^ function startElementQuestions($parser, $tagName, $attrs) {$/;" f startElementScales backup/restorelib.php /^ function startElementScales($parser, $tagName, $attrs) {$/;" f @@ -4797,10 +3966,7 @@ startElementSections backup/restorelib.php /^ function startElementSectio startElementUsers backup/restorelib.php /^ function startElementUsers($parser, $tagName, $attrs) {$/;" f start_tag backup/backuplib.php /^ function start_tag($tag,$level=0,$endline=false) {$/;" f startclock mod/quiz/jsclock.php /^function startclock() {$/;" f -status admin/health.php /^ function status() {$/;" f -stop mod/chat/gui_header_js/users.php /^ function stop() {$/;" f stopclock mod/quiz/jsclock.php /^function stopclock() {$/;" f -storePGT lib/cas/client.php /^ function storePGT($pgt,$pgt_iou)$/;" f store_footer lib/excel/Worksheet.php /^ function store_footer()$/;" f store_hcenter lib/excel/Worksheet.php /^ function store_hcenter()$/;" f store_header lib/excel/Worksheet.php /^ function store_header()$/;" f @@ -4810,20 +3976,16 @@ store_vcenter lib/excel/Worksheet.php /^ function store_vcenter()$/;" f store_workbook lib/excel/Workbook.php /^ function store_workbook()$/;" f str_ireplace lib/weblib.php /^ function str_ireplace($find, $replace, $string) {$/;" f str_rot17 mod/wiki/ewiki/plugins/email_protect.php /^ function str_rot17($string) {$/;" f -string_file_picture_algebra filter/algebra/filter.php /^function string_file_picture_algebra($imagefile, $tex= "", $height="", $width="", $align="middle") {$/;" f -string_file_picture_tex filter/tex/filter.php /^function string_file_picture_tex($imagefile, $tex= "", $height="", $width="", $align="middle") {$/;" f -stringbetween mod/quiz/format/learnwise/format.php /^ function stringbetween($text, $start, $end) {$/;" f -strip_querystring lib/weblib.php /^ function strip_querystring($url) {$/;" f +string_file_picture_algebra filter/algebra/filter.php /^function string_file_picture_algebra($imagefile, $tex= "", $height="", $width="") {$/;" f +string_file_picture_tex filter/tex/filter.php /^function string_file_picture_tex($imagefile, $tex= "", $height="", $width="") {$/;" f +strip_querystring lib/weblib.php /^function strip_querystring($url) {$/;" f stripos lib/weblib.php /^ function stripos($haystack, $needle, $offset=0) {$/;" f -stripslashes_recursive lib/weblib.php /^function stripslashes_recursive($var) {$/;" f stripslashes_safe lib/weblib.php /^function stripslashes_safe($string) {$/;" f -style_sheet_setup lib/weblib.php /^function style_sheet_setup($lastmodified=0, $lifetime=300, $themename='', $forceconfig='') {$/;" f +style_sheet_setup lib/weblib.php /^function style_sheet_setup($lastmodified=0, $lifetime=300, $themename="") {$/;" f submit_form lib/editor/popups/insert_image.php /^function submit_form(dothis) {$/;" f submit_form lib/editor/popups/link.php /^function submit_form(dothis) {$/;" f supportedPlatform lib/adodb/adodb-xmlschema-0.0.1-snap20030511/adodb-xmlschema.inc.php /^ function supportedPlatform( $platform = NULL ) {$/;" f supportedPlatform lib/adodb/adodb-xmlschema.inc.php /^ function supportedPlatform( $platform = NULL ) {$/;" f -supports_dataset_item_generation mod/quiz/questiontypes/calculated/questiontype.php /^ function supports_dataset_item_generation() {$/;" f -supports_dataset_item_generation mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function supports_dataset_item_generation() {$/;" f survey_add_analysis mod/survey/lib.php /^function survey_add_analysis($survey, $user, $notes) {$/;" f survey_add_instance mod/survey/lib.php /^function survey_add_instance($survey) {$/;" f survey_already_done mod/survey/lib.php /^function survey_already_done($survey, $user) {$/;" f @@ -4847,7 +4009,7 @@ survey_print_graph mod/survey/lib.php /^function survey_print_graph($url) {$/;" survey_print_multi mod/survey/lib.php /^function survey_print_multi($question) {$/;" f survey_print_recent_activity mod/survey/lib.php /^function survey_print_recent_activity($course, $isteacher, $timestart) {$/;" f survey_print_single mod/survey/lib.php /^function survey_print_single($question) {$/;" f -survey_question_rowclass mod/survey/lib.php /^function survey_question_rowclass($qnum) {$/;" f +survey_question_color mod/survey/lib.php /^function survey_question_color($qnum) {$/;" f survey_restore_logs mod/survey/restorelib.php /^ function survey_restore_logs($restore,$log) {$/;" f survey_restore_mods mod/survey/restorelib.php /^ function survey_restore_mods($mod,$restore) {$/;" f survey_shorten_name mod/survey/lib.php /^function survey_shorten_name ($name, $numwords) {$/;" f @@ -4861,17 +4023,11 @@ survey_user_outline mod/survey/lib.php /^function survey_user_outline($course, $ swapshuffle lib/moodlelib.php /^function swapshuffle($array) {$/;" f swapshuffle_assoc lib/moodlelib.php /^function swapshuffle_assoc($array) {$/;" f syncSeconds lib/adodb/session/adodb-session.php /^ function syncSeconds($sync_seconds = null) {$/;" f -sync_enrolments enrol/ldap/enrol.php /^function sync_enrolments($type, $enrol) {$/;" f -sync_metacourse lib/moodlelib.php /^function sync_metacourse($metacourseid) {$/;" f -sync_metacourses lib/moodlelib.php /^function sync_metacourses() {$/;" f tab lib/editor/popups/dlg_ins_char.php /^function tab(w,h) {$/;" f table lib/adodb/adodb-perf.inc.php /^ function table($newtable = false)$/;" f table lib/adodb/session/adodb-session.php /^ function table($table = null) {$/;" f -table_column lib/datalib.php /^function table_column($table, $oldfield, $field, $type='integer', $size='10',$/;" f -tabobject lib/weblib.php /^ function tabobject ($id, $link='', $text='') {$/;" f -tabobject lib/weblib.php /^class tabobject {$/;" c +table_column lib/datalib.php /^function table_column($table, $oldfield, $field, $type="integer", $size="10",$/;" f tadodb lib/adodb/tests/tmssql.php /^function tadodb()$/;" f -tagname lib/cas/domxml-php4-php5.php /^ function tagname() {return $this->myDOMNode->tagName;}$/;" f template_exists lib/smarty/Smarty.class.php /^ function template_exists($tpl_file)$/;" f testNode mod/scorm/validatordomxml.php /^function testNode($DomNode)$/;" f testRoot mod/scorm/validatordomxml.php /^function testRoot($DomNode)$/;" f @@ -4885,29 +4041,18 @@ tex2image filter/tex/texdebug.php /^ function tex2image($texexp) {$/;" f tex_filter filter/tex/filter.php /^function tex_filter ($courseid, $text) {$/;" f text_to_html lib/weblib.php /^function text_to_html($text, $smiley=true, $para=true, $newlines=true) {$/;" f thaw_panes lib/excel/Worksheet.php /^ function thaw_panes($panes)$/;" f -theme_setup lib/weblib.php /^function theme_setup($theme = '', $params=NULL) {$/;" f -tidy_filter filter/tidy/filter.php /^function tidy_filter($courseid, $text) {$/;" f -title admin/health.php /^ function title() {$/;" f tmssql lib/adodb/tests/tmssql.php /^function tmssql()$/;" f to_reverse_polish lib/excel/Parser.php /^ function to_reverse_polish($tree = array())$/;" f tohtml lib/adodb/perf/perf-oci8.inc.php /^ function tohtml(&$rs,$type)$/;" f -tolerance_types mod/quiz/questiontypes/calculated/questiontype.php /^ function tolerance_types() {$/;" f tpear lib/adodb/tests/tmssql.php /^function tpear()$/;" f -trace lib/cas/CAS.php /^ function trace($str)$/;" f -trace mod/chat/chatd.php /^ function trace($message, $level = E_USER_NOTICE) {$/;" f -traceBegin lib/cas/CAS.php /^ function traceBegin()$/;" f -traceEnd lib/cas/CAS.php /^ function traceEnd($res='')$/;" f -traceExit lib/cas/CAS.php /^ function traceExit()$/;" f -trans_format mod/quiz/format/xml/format.php /^function trans_format( $name ) {$/;" f -trans_single mod/quiz/format/xml/format.php /^function trans_single( $name ) {$/;" f -traverse_xmlize lib/xmlize.php /^function traverse_xmlize($array, $arrName = 'array', $level = 0) {$/;" f +trace mod/chat/gui_sockets/arscd.php /^function trace($message, $level = E_NOTICE) {$/;" f +traverse_xmlize lib/xmlize.php /^function traverse_xmlize($array, $arrName = "array", $level = 0) {$/;" f trigger_error lib/smarty/Smarty.class.php /^ function trigger_error($error_msg, $error_type = E_USER_WARNING)$/;" f -truncate_userinfo lib/moodlelib.php /^function truncate_userinfo($info) {$/;" f undomq lib/adodb/adodb-perf.inc.php /^ function undomq(&$m) $/;" f undomq lib/adodb/server.php /^function undomq(&$m) $/;" f unenrol_student lib/moodlelib.php /^function unenrol_student($userid, $courseid=0) {$/;" f -unhtmlentities mod/quiz/format/learnwise/format.php /^ function unhtmlentities($string) {$/;" f unhtmlentities mod/quiz/format/webct/format.php /^function unhtmlentities($string){$/;" f +unlockoption lib/javascript.php /^function unlockoption(form,item) {$/;" f unregister_block lib/smarty/Smarty.class.php /^ function unregister_block($block)$/;" f unregister_compiler_function lib/smarty/Smarty.class.php /^ function unregister_compiler_function($function)$/;" f unregister_function lib/smarty/Smarty.class.php /^ function unregister_function($function)$/;" f @@ -4917,83 +4062,48 @@ unregister_outputfilter lib/smarty/Smarty.class.php /^ function unregister_ou unregister_postfilter lib/smarty/Smarty.class.php /^ function unregister_postfilter($function)$/;" f unregister_prefilter lib/smarty/Smarty.class.php /^ function unregister_prefilter($function)$/;" f unregister_resource lib/smarty/Smarty.class.php /^ function unregister_resource($type)$/;" f -unset_user_preference lib/moodlelib.php /^function unset_user_preference($name, $userid=NULL) {$/;" f -unzip_cleanfilename lib/moodlelib.php /^function unzip_cleanfilename ($p_event, &$p_header) {$/;" f -unzip_file lib/moodlelib.php /^function unzip_file ($zipfile, $destination = '', $showstatus = true) {$/;" f -unzip_show_status lib/moodlelib.php /^function unzip_show_status ($list,$removepath) {$/;" f -update mod/chat/gui_header_js/users.php /^ function update() {$/;" f update_boundaryBox lib/graphlib.php /^function update_boundaryBox(&$boundaryBox, $coords) {$/;" f update_categories_button lib/weblib.php /^function update_categories_button() {$/;" f -update_category mod/quiz/category.php /^ function update_category($updateid, $updateparent, $updatename, $updateinfo, $updatepublish, $courseid) {$/;" f update_category_button lib/weblib.php /^function update_category_button($categoryid) {$/;" f update_course_icon lib/weblib.php /^function update_course_icon($courseid) {$/;" f -update_dataset_options mod/quiz/questiontypes/calculated/questiontype.php /^ function update_dataset_options($datasetdefs, $form) {$/;" f -update_dataset_options mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function update_dataset_options($datasetdefs, $form) {$/;" f update_event lib/moodlelib.php /^function update_event($event) {$/;" f update_group_button lib/weblib.php /^function update_group_button($courseid, $groupid) {$/;" f update_groups_button lib/weblib.php /^function update_groups_button($courseid) {$/;" f update_instance mod/resource/lib.php /^function update_instance($resource) {$/;" f update_instance mod/resource/type/file/resource.class.php /^function update_instance($resource) {$/;" f -update_instance mod/resource/type/html/resource.class.php /^function update_instance($resource) {$/;" f -update_instance mod/resource/type/text/resource.class.php /^function update_instance($resource) {$/;" f update_login_count lib/moodlelib.php /^function update_login_count() {$/;" f update_module_button lib/weblib.php /^function update_module_button($moduleid, $courseid, $string) {$/;" f update_parent lib/editor/popups/fullscreen.php /^function update_parent() {$/;" f update_record lib/datalib.php /^function update_record($table, $dataobject) {$/;" f -update_timezone_records lib/datalib.php /^function update_timezone_records($timezones) {$/;" f +update_user_in_db lib/datalib.php /^function update_user_in_db() {$/;" f update_user_login_times lib/moodlelib.php /^function update_user_login_times() {$/;" f -update_user_record lib/moodlelib.php /^function update_user_record($username) {$/;" f -upgrade_activity_modules lib/adminlib.php /^function upgrade_activity_modules($return) {$/;" f upgrade_backup_db backup/lib.php /^ function upgrade_backup_db($continueto) {$/;" f upgrade_blocks_db lib/blocklib.php /^function upgrade_blocks_db($continueto) {$/;" f upgrade_blocks_plugins lib/blocklib.php /^function upgrade_blocks_plugins($continueto) {$/;" f -upgrade_enrol_plugins lib/adminlib.php /^function upgrade_enrol_plugins($return) {$/;" f -upload_manager lib/uploadlib.php /^ function upload_manager($inputname='', $deleteothers=false, $handlecollisions=false, $course=null, $recoverifmultiple=false, $modbytes=0, $silent=false, $allownull=false) {$/;" f -upload_manager lib/uploadlib.php /^class upload_manager {$/;" c -upload_print_form_fragment lib/uploadlib.php /^function upload_print_form_fragment($numfiles=1, $names=null, $descriptions=null, $uselabels=false, $labelnames=null, $coursebytes=0, $modbytes=0, $return=false) {$/;" f -url_get_full lib/pagelib.php /^ function url_get_full($extraparams = array()) {$/;" f -url_get_parameters lib/pagelib.php /^ function url_get_parameters() {$/;" f -url_get_path blocks/pagedemo.php /^ function url_get_path() {$/;" f -url_get_path lib/pagelib.php /^ function url_get_path() {$/;" f -use_html_editor lib/weblib.php /^function use_html_editor($name='', $editorhidebuttons='') {$/;" f +use_html_editor lib/weblib.php /^function use_html_editor($name="") {$/;" f user lib/adodb/session/adodb-session.php /^ function user($user = null) {$/;" f -user_allowed_editing blocks/pagedemo.php /^ function user_allowed_editing() {$/;" f -user_allowed_editing lib/pagelib.php /^ function user_allowed_editing() {$/;" f -user_check_backup backup/backuplib.php /^ function user_check_backup($course,$backup_unique_code,$backup_users,$backup_messages) {$/;" f +user_check_backup backup/backuplib.php /^ function user_check_backup($course,$backup_unique_code,$backup_users) {$/;" f user_files_check_backup backup/backuplib.php /^ function user_files_check_backup($course,$backup_unique_code) {$/;" f user_group lib/datalib.php /^function user_group($courseid, $userid) {$/;" f -user_is_editing blocks/pagedemo.php /^ function user_is_editing() {$/;" f -user_is_editing lib/pagelib.php /^ function user_is_editing() {$/;" f -user_lazy_update mod/chat/chatd.php /^ function user_lazy_update($sessionid) {$/;" f -user_login_string lib/weblib.php /^function user_login_string($course=NULL, $user=NULL) {$/;" f +user_login_string lib/weblib.php /^function user_login_string($course, $user=NULL) {$/;" f user_not_fully_set_up lib/moodlelib.php /^function user_not_fully_set_up($user) {$/;" f -userdate lib/moodlelib.php /^function userdate($date, $format='', $timezone=99, $fixday = true) {$/;" f -usergetdate lib/moodlelib.php /^function usergetdate($time, $timezone=99) {$/;" f +userdate lib/moodlelib.php /^function userdate($date, $format="", $timezone=99, $fixday = true) {$/;" f +usergetdate lib/moodlelib.php /^function usergetdate($date, $timezone=99) {$/;" f usergetmidnight lib/moodlelib.php /^function usergetmidnight($date, $timezone=99) {$/;" f usertime lib/moodlelib.php /^function usertime($date, $timezone=99) {$/;" f usertimezone lib/moodlelib.php /^function usertimezone($timezone=99) {$/;" f -uses_quizfile mod/quiz/locallib.php /^ function uses_quizfile($question, $relativefilepath) {$/;" f -uses_quizfile mod/quiz/questiontypes/datasetdependent/abstractqtype.php /^ function uses_quizfile($question, $relativefilepath) {$/;" f valid lib/adodb/adodb-iterator.inc.php /^ function valid() $/;" f valid_uploaded_file lib/moodlelib.php /^function valid_uploaded_file($newfile) {$/;" f -validateEmailSyntax lib/validateurlsyntax.php /^function validateEmailSyntax( $emailaddr, $options="" ){$/;" f -validateFtpSyntax lib/validateurlsyntax.php /^function validateFtpSyntax( $ftpaddr, $options="" ){$/;" f -validatePGT lib/cas/client.php /^ function validatePGT(&$validate_url,$text_response,$tree_response)$/;" f -validatePT lib/cas/client.php /^ function validatePT(&$validate_url,&$text_response,&$tree_response)$/;" f -validateST lib/cas/client.php /^ function validateST($validate_url,&$text_response,&$tree_response)$/;" f -validateUrlSyntax lib/validateurlsyntax.php /^function validateUrlSyntax( $urladdr, $options="" ){$/;" f -validate_email lib/weblib.php /^function validate_email($address) {$/;" f -validate_file lib/uploadlib.php /^ function validate_file(&$file) {$/;" f +validate_email lib/weblib.php /^function validate_email ($address) {$/;" f validate_form admin/auth.php /^function validate_form(&$form, &$err) {$/;" f validate_form admin/config.php /^function validate_form(&$form, &$err) {$/;" f validate_form admin/site.php /^function validate_form(&$form, &$err) {$/;" f validate_form calendar/event.php /^function validate_form(&$form, &$err) {$/;" f validate_form course/edit.php /^function validate_form($course, &$form, &$err) {$/;" f +validate_form enrol/temp.php /^function validate_form(&$form, &$err) {$/;" f validate_form login/change_password.php /^function validate_form($frm, &$err) {$/;" f validate_form login/forgot_password.php /^function validate_form($frm, &$err) {$/;" f validate_form login/signup.php /^function validate_form($user, &$err) {$/;" f -validate_line admin/handlevirus.php /^function validate_line($line) {$/;" f -wasPreviouslyAuthenticated lib/cas/client.php /^ function wasPreviouslyAuthenticated()$/;" f wiki_add_entry mod/wiki/lib.php /^function wiki_add_entry(&$wiki, &$course, $userid=0, $groupid=0) {$/;" f wiki_add_instance mod/wiki/lib.php /^function wiki_add_instance($wiki) {$/;" f wiki_admin_checklinks mod/wiki/lib.php /^function wiki_admin_checklinks($pagetocheck) {$/;" f @@ -5015,7 +4125,6 @@ wiki_content_dir mod/wiki/lib.php /^function wiki_content_dir(&$wiki) {$/;" f wiki_cron mod/wiki/lib.php /^function wiki_cron () {$/;" f wiki_delete_instance mod/wiki/lib.php /^function wiki_delete_instance($id) {$/;" f wiki_entries_restore_mods mod/wiki/restorelib.php /^ function wiki_entries_restore_mods($old_wiki_id,$new_wiki_id,$info,$restore) {$/;" f -wiki_filter mod/wiki/filter.php /^ function wiki_filter($courseid, $text) {$/;" f wiki_get_course_wikis mod/wiki/lib.php /^function wiki_get_course_wikis($courseid, $wtype='*') {$/;" f wiki_get_default_entry mod/wiki/lib.php /^function wiki_get_default_entry(&$wiki, &$course, $userid=0, $groupid=0) {$/;" f wiki_get_entries mod/wiki/lib.php /^function wiki_get_entries(&$wiki, $byindex=NULL) {$/;" f @@ -5029,18 +4138,19 @@ wiki_get_teacher_entry mod/wiki/lib.php /^function wiki_get_teacher_entry(&$wiki wiki_grades mod/wiki/lib.php /^function wiki_grades($wikiid) {$/;" f wiki_has_entries mod/wiki/lib.php /^function wiki_has_entries(&$wiki) {$/;" f wiki_is_wiki_name mod/wiki/lib.php /^function wiki_is_wiki_name($wikiname) {$/;" f -wiki_log_info mod/wiki/lib.php /^function wiki_log_info($log) {$/;" f +wiki_link_names mod/wiki/filter.php /^ function wiki_link_names($text,$name,$href_tag_begin,$href_tag_end = "<\/a>") {$/;" f +wiki_page_filter mod/wiki/filter.php /^ function wiki_page_filter($courseid, $text) {$/;" f wiki_page_name mod/wiki/lib.php /^function wiki_page_name(&$wiki) {$/;" f wiki_pages_restore_mods mod/wiki/restorelib.php /^ function wiki_pages_restore_mods($old_entry_id,$new_entry_id,$info,$restore) {$/;" f -wiki_print_administration_actions mod/wiki/lib.php /^function wiki_print_administration_actions($wiki, $cmid, $userid, $groupid, $page, $noeditor, $course) {$/;" f -wiki_print_page_actions mod/wiki/lib.php /^function wiki_print_page_actions($cmid, $specialpages, $page, $action, $binary=false, $canedit=true) {$/;" f +wiki_print_administration_actions mod/wiki/lib.php /^function wiki_print_administration_actions($wiki, $cmid, $userid, $groupid, $wikipage, $noeditor, $course) {$/;" f +wiki_print_page_actions mod/wiki/lib.php /^function wiki_print_page_actions($cmid, $specialpages, $wikipage, $action, $binary=false, $canedit=true) {$/;" f wiki_print_recent_activity mod/wiki/lib.php /^function wiki_print_recent_activity($course, $isteacher, $timestart) {$/;" f wiki_print_search_form mod/wiki/lib.php /^function wiki_print_search_form($cmid, $search="", $userid, $groupid, $return=false) {$/;" f wiki_print_wikilinks_block mod/wiki/lib.php /^function wiki_print_wikilinks_block($cmid, $binary=false, $return=false) {$/;" f wiki_restore_files mod/wiki/restorelib.php /^ function wiki_restore_files ($oldwikiid, $newwikiid, $oldentryid, $newentryid, $restore) {$/;" f wiki_restore_mods mod/wiki/restorelib.php /^ function wiki_restore_mods($mod,$restore) {$/;" f wiki_rmdir mod/wiki/lib.php /^function wiki_rmdir($basedir) {$/;" f -wiki_to_html lib/weblib.php /^function wiki_to_html($text, $courseid) {$/;" f +wiki_to_html lib/weblib.php /^function wiki_to_html($text) {$/;" f wiki_update_instance mod/wiki/lib.php /^function wiki_update_instance($wiki) {$/;" f wiki_upgrade mod/wiki/db/mysql.php /^function wiki_upgrade($oldversion) {$/;" f wiki_upgrade mod/wiki/db/postgres7.php /^function wiki_upgrade($oldversion) {$/;" f @@ -5055,23 +4165,19 @@ workshop_add_instance mod/workshop/lib.php /^function workshop_add_instance($wor workshop_assessments_restore_mods mod/workshop/restorelib.php /^ function workshop_assessments_restore_mods($new_workshop_id, $new_submission_id,$info,$restore) {$/;" f workshop_backup_mods mod/workshop/backuplib.php /^ function workshop_backup_mods($bf,$preferences) {$/;" f workshop_check_backup_mods mod/workshop/backuplib.php /^ function workshop_check_backup_mods($course,$user_data=false,$backup_unique_code) {$/;" f -workshop_check_dates mod/workshop/lib.php /^function workshop_check_dates($workshop) {$/;" f workshop_choose_from_menu mod/workshop/locallib.php /^function workshop_choose_from_menu ($options, $name, $selected="", $nothing="choose", $script="", $/;" f workshop_comments_restore_mods mod/workshop/restorelib.php /^ function workshop_comments_restore_mods($new_workshop_id, $new_assessment_id,$info,$restore) {$/;" f -workshop_compare_assessments mod/workshop/lib.php /^function workshop_compare_assessments($workshop, $assessment1, $assessment2) {$/;" f workshop_copy_assessment mod/workshop/locallib.php /^function workshop_copy_assessment($assessment, $submission, $withfeedback = false) {$/;" f workshop_count_all_submissions_for_assessment mod/workshop/locallib.php /^function workshop_count_all_submissions_for_assessment($workshop, $user) {$/;" f -workshop_count_assessments mod/workshop/lib.php /^function workshop_count_assessments($submission) {$/;" f +workshop_count_assessments mod/workshop/locallib.php /^function workshop_count_assessments($submission) {$/;" f workshop_count_comments mod/workshop/locallib.php /^function workshop_count_comments($assessment) {$/;" f workshop_count_peer_assessments mod/workshop/locallib.php /^function workshop_count_peer_assessments($workshop, $user) {$/;" f workshop_count_self_assessments mod/workshop/locallib.php /^function workshop_count_self_assessments($workshop, $user) {$/;" f workshop_count_student_submissions mod/workshop/locallib.php /^function workshop_count_student_submissions($workshop) {$/;" f workshop_count_student_submissions_for_assessment mod/workshop/locallib.php /^function workshop_count_student_submissions_for_assessment($workshop, $user) {$/;" f -workshop_count_teacher_assessments mod/workshop/locallib.php /^function workshop_count_teacher_assessments($courseid, $submission) {$/;" f -workshop_count_teacher_assessments_by_user mod/workshop/locallib.php /^function workshop_count_teacher_assessments_by_user($workshop, $user) {$/;" f +workshop_count_teacher_assessments mod/workshop/locallib.php /^function workshop_count_teacher_assessments($workshop, $user) {$/;" f workshop_count_teacher_submissions mod/workshop/locallib.php /^function workshop_count_teacher_submissions($workshop) {$/;" f workshop_count_teacher_submissions_for_assessment mod/workshop/locallib.php /^function workshop_count_teacher_submissions_for_assessment($workshop, $user) {$/;" f -workshop_count_ungraded_assessments mod/workshop/lib.php /^function workshop_count_ungraded_assessments($workshop) {$/;" f workshop_count_ungraded_assessments_student mod/workshop/locallib.php /^function workshop_count_ungraded_assessments_student($workshop) {$/;" f workshop_count_ungraded_assessments_teacher mod/workshop/locallib.php /^function workshop_count_ungraded_assessments_teacher($workshop) {$/;" f workshop_count_user_assessments mod/workshop/locallib.php /^function workshop_count_user_assessments($workshop, $user, $stype = "all") {$/;" f @@ -5084,23 +4190,20 @@ workshop_delete_user_files mod/workshop/locallib.php /^function workshop_delete_ workshop_elements_restore_mods mod/workshop/restorelib.php /^ function workshop_elements_restore_mods($workshop_id,$info,$restore) {$/;" f workshop_file_area mod/workshop/lib.php /^function workshop_file_area($workshop, $submission) {$/;" f workshop_file_area_name mod/workshop/lib.php /^function workshop_file_area_name($workshop, $submission) {$/;" f -workshop_fullname mod/workshop/lib.php /^function workshop_fullname($userid, $courseid) {$/;" f workshop_get_agree_logs mod/workshop/lib.php /^function workshop_get_agree_logs($course, $timestart) {$/;" f -workshop_get_all_teacher_assessments mod/workshop/locallib.php /^function workshop_get_all_teacher_assessments($workshop) {$/;" f workshop_get_assess_logs mod/workshop/lib.php /^function workshop_get_assess_logs($course, $timestart) {$/;" f -workshop_get_assessments mod/workshop/lib.php /^function workshop_get_assessments($submission, $all = '', $order = '') {$/;" f +workshop_get_assessments mod/workshop/locallib.php /^function workshop_get_assessments($submission, $all = '') {$/;" f workshop_get_comment_logs mod/workshop/lib.php /^function workshop_get_comment_logs($course, $timestart) {$/;" f workshop_get_comments mod/workshop/locallib.php /^function workshop_get_comments($assessment) {$/;" f workshop_get_grade_logs mod/workshop/lib.php /^function workshop_get_grade_logs($course, $timestart) {$/;" f workshop_get_participants mod/workshop/lib.php /^function workshop_get_participants($workshopid) { $/;" f -workshop_get_recent_mod_activity mod/workshop/lib.php /^function workshop_get_recent_mod_activity(&$activities, &$index, $sincetime, $courseid, $/;" f +workshop_get_recent_mod_activity mod/workshop/locallib.php /^function workshop_get_recent_mod_activity(&$activities, &$index, $sincetime, $courseid, $/;" f workshop_get_student_assessments mod/workshop/locallib.php /^function workshop_get_student_assessments($workshop, $user) {$/;" f workshop_get_student_submission mod/workshop/lib.php /^function workshop_get_student_submission($workshop, $user) {$/;" f workshop_get_student_submission_assessments mod/workshop/locallib.php /^function workshop_get_student_submission_assessments($workshop) {$/;" f workshop_get_student_submissions mod/workshop/lib.php /^function workshop_get_student_submissions($workshop, $order = "title") {$/;" f workshop_get_submission_assessment mod/workshop/locallib.php /^function workshop_get_submission_assessment($submission, $user) {$/;" f workshop_get_submit_logs mod/workshop/lib.php /^function workshop_get_submit_logs($course, $timestart) {$/;" f -workshop_get_teacher_assessments mod/workshop/locallib.php /^function workshop_get_teacher_assessments($courseid, $submission) {$/;" f workshop_get_teacher_submission_assessments mod/workshop/locallib.php /^function workshop_get_teacher_submission_assessments($workshop) {$/;" f workshop_get_teacher_submissions mod/workshop/locallib.php /^function workshop_get_teacher_submissions($workshop) {$/;" f workshop_get_ungraded_assessments mod/workshop/locallib.php /^function workshop_get_ungraded_assessments($workshop) {$/;" f @@ -5110,14 +4213,12 @@ workshop_get_unmailed_assessments mod/workshop/lib.php /^function workshop_get_u workshop_get_unmailed_comments mod/workshop/lib.php /^function workshop_get_unmailed_comments($cutofftime) {$/;" f workshop_get_unmailed_graded_assessments mod/workshop/lib.php /^function workshop_get_unmailed_graded_assessments($cutofftime) {$/;" f workshop_get_unmailed_resubmissions mod/workshop/lib.php /^function workshop_get_unmailed_resubmissions($cutofftime) {$/;" f -workshop_get_user_assessments mod/workshop/lib.php /^function workshop_get_user_assessments($workshop, $user) {$/;" f +workshop_get_user_assessments mod/workshop/locallib.php /^function workshop_get_user_assessments($workshop, $user) {$/;" f workshop_get_user_assessments_done mod/workshop/locallib.php /^function workshop_get_user_assessments_done($workshop, $user) {$/;" f workshop_get_user_submissions mod/workshop/lib.php /^function workshop_get_user_submissions($workshop, $user) {$/;" f workshop_get_users_done mod/workshop/locallib.php /^function workshop_get_users_done($workshop) {$/;" f -workshop_grade_assessments mod/workshop/lib.php /^function workshop_grade_assessments($workshop, $verbose=false) {$/;" f workshop_grades mod/workshop/lib.php /^function workshop_grades($workshopid) {$/;" f workshop_grades_restore_mods mod/workshop/restorelib.php /^ function workshop_grades_restore_mods($new_workshop_id, $new_assessment_id,$info,$restore) {$/;" f -workshop_gradinggrade mod/workshop/lib.php /^function workshop_gradinggrade($workshop, $student) {$/;" f workshop_ids mod/workshop/backuplib.php /^ function workshop_ids ($course) {$/;" f workshop_is_recent_activity mod/workshop/lib.php /^function workshop_is_recent_activity($course, $isteacher, $timestart) {\/\/jlw1 added for adding mark to courses with activity in My Moodle$/;" f workshop_list_all_submissions mod/workshop/locallib.php /^function workshop_list_all_submissions($workshop, $user) {$/;" f @@ -5127,37 +4228,32 @@ workshop_list_peer_assessments mod/workshop/locallib.php /^function workshop_lis workshop_list_self_assessments mod/workshop/locallib.php /^function workshop_list_self_assessments($workshop, $user) {$/;" f workshop_list_student_submissions mod/workshop/locallib.php /^function workshop_list_student_submissions($workshop, $user) {$/;" f workshop_list_submissions_for_admin mod/workshop/locallib.php /^function workshop_list_submissions_for_admin($workshop, $order) {$/;" f -workshop_list_teacher_assessments_by_user mod/workshop/locallib.php /^function workshop_list_teacher_assessments_by_user($workshop, $user) {$/;" f +workshop_list_teacher_assessments mod/workshop/locallib.php /^function workshop_list_teacher_assessments($workshop, $user) {$/;" f workshop_list_teacher_submissions mod/workshop/locallib.php /^function workshop_list_teacher_submissions($workshop, $user) {$/;" f workshop_list_unassessed_student_submissions mod/workshop/locallib.php /^function workshop_list_unassessed_student_submissions($workshop, $user) {$/;" f workshop_list_unassessed_teacher_submissions mod/workshop/locallib.php /^function workshop_list_unassessed_teacher_submissions($workshop, $user) {$/;" f workshop_list_ungraded_assessments mod/workshop/locallib.php /^function workshop_list_ungraded_assessments($workshop, $stype) {$/;" f workshop_list_user_submissions mod/workshop/locallib.php /^function workshop_list_user_submissions($workshop, $user) {$/;" f -workshop_phase mod/workshop/locallib.php /^function workshop_phase($workshop, $style='') {$/;" f workshop_print_assessment mod/workshop/locallib.php /^function workshop_print_assessment($workshop, $assessment = false, $allowchanges = false, $/;" f workshop_print_assessments_by_user_for_admin mod/workshop/locallib.php /^function workshop_print_assessments_by_user_for_admin($workshop, $user) {$/;" f workshop_print_assessments_for_admin mod/workshop/locallib.php /^function workshop_print_assessments_for_admin($workshop, $submission) {$/;" f workshop_print_assignment_info mod/workshop/locallib.php /^function workshop_print_assignment_info($workshop) {$/;" f workshop_print_difference mod/workshop/locallib.php /^function workshop_print_difference($time) {$/;" f workshop_print_feedback mod/workshop/locallib.php /^function workshop_print_feedback($course, $submission) {$/;" f -workshop_print_key mod/workshop/locallib.php /^function workshop_print_key($workshop) {$/;" f workshop_print_league_table mod/workshop/locallib.php /^function workshop_print_league_table($workshop) {$/;" f workshop_print_recent_activity mod/workshop/lib.php /^function workshop_print_recent_activity($course, $isteacher, $timestart) {$/;" f -workshop_print_recent_mod_activity mod/workshop/lib.php /^function workshop_print_recent_mod_activity($activity, $course, $detail=false) {$/;" f -workshop_print_submission mod/workshop/locallib.php /^function workshop_print_submission($workshop, $submission) {$/;" f +workshop_print_recent_mod_activity mod/workshop/locallib.php /^function workshop_print_recent_mod_activity($activity, $course, $detail=false) {$/;" f workshop_print_submission_assessments mod/workshop/locallib.php /^function workshop_print_submission_assessments($workshop, $submission, $type) {$/;" f workshop_print_submission_title mod/workshop/locallib.php /^function workshop_print_submission_title($workshop, $submission) {$/;" f +workshop_print_tabbed_heading mod/workshop/locallib.php /^function workshop_print_tabbed_heading($tabs) {$/;" f workshop_print_time_to_deadline mod/workshop/locallib.php /^function workshop_print_time_to_deadline($time) {$/;" f workshop_print_upload_form mod/workshop/locallib.php /^function workshop_print_upload_form($workshop) {$/;" f -workshop_print_user_assessments mod/workshop/locallib.php /^function workshop_print_user_assessments($workshop, $user, &$gradinggrade) {$/;" f +workshop_print_user_assessments mod/workshop/locallib.php /^function workshop_print_user_assessments($workshop, $user) {$/;" f workshop_refresh_events mod/workshop/lib.php /^function workshop_refresh_events($courseid = 0) {$/;" f workshop_restore_files mod/workshop/restorelib.php /^ function workshop_restore_files ($oldsubmiss, $newsubmiss, $restore) {$/;" f workshop_restore_logs mod/workshop/restorelib.php /^ function workshop_restore_logs($restore,$log) {$/;" f workshop_restore_mods mod/workshop/restorelib.php /^ function workshop_restore_mods($mod,$restore) {$/;" f workshop_rubrics_restore_mods mod/workshop/restorelib.php /^ function workshop_rubrics_restore_mods($workshop_id,$elementno,$info,$restore) {$/;" f -workshop_sortfunction mod/workshop/view.php /^ function workshop_sortfunction($a, $b) {$/;" f -workshop_stockcomments_restore_mods mod/workshop/restorelib.php /^ function workshop_stockcomments_restore_mods($new_workshop_id, $elementno, $info, $restore) {$/;" f -workshop_submission_grade mod/workshop/lib.php /^function workshop_submission_grade($workshop, $submission) {$/;" f workshop_submission_ids_by_course mod/workshop/backuplib.php /^ function workshop_submission_ids_by_course ($course) {$/;" f workshop_submissions_restore_mods mod/workshop/restorelib.php /^ function workshop_submissions_restore_mods($old_workshop_id, $new_workshop_id,$info,$restore) {$/;" f workshop_test_user_assessments mod/workshop/locallib.php /^function workshop_test_user_assessments($workshop, $user) {$/;" f @@ -5167,7 +4263,7 @@ workshop_upgrade mod/workshop/db/oci8po.php /^function workshop_upgrade($oldvers workshop_upgrade mod/workshop/db/postgres7.php /^function workshop_upgrade($oldversion) {$/;" f workshop_user_complete mod/workshop/lib.php /^function workshop_user_complete($course, $user, $mod, $workshop) {$/;" f workshop_user_outline mod/workshop/lib.php /^function workshop_user_outline($course, $user, $mod, $workshop) {$/;" f -wrapped_questions mod/quiz/locallib.php /^ function wrapped_questions($question) {$/;" f +wrapped_questions mod/quiz/lib.php /^ function wrapped_questions($question) {$/;" f wrapped_questions mod/quiz/questiontypes/random/questiontype.php /^ function wrapped_questions($question) {$/;" f wrapped_questions mod/quiz/questiontypes/randomsamatch/questiontype.php /^ function wrapped_questions($question) {$/;" f write lib/adodb/session/adodb-compress-bzip2.php /^ function write($data, $key) {$/;" f @@ -5176,12 +4272,9 @@ write lib/adodb/session/adodb-encrypt-mcrypt.php /^ function write($data, $key) write lib/adodb/session/adodb-encrypt-md5.php /^ function write($data, $key) {$/;" f write lib/adodb/session/adodb-encrypt-secret.php /^ function write($data, $key) {$/;" f write lib/adodb/session/adodb-session.php /^ function write($key, $val) {$/;" f -write lib/cas/PGTStorage/pgt-file.php /^ function write($pgt,$pgt_iou)$/;" f -write lib/cas/PGTStorage/pgt-main.php /^ function write($pgt,$pgt_iou)$/;" f write lib/excel/OLEwriter.php /^ function write($data) \/\/por ahora sólo a STDOUT$/;" f write lib/excel/Worksheet.php /^ function write($row, $col, $token, $format = 0)$/;" f write_blank lib/excel/Worksheet.php /^ function write_blank($row, $col, $format = 0)$/;" f -write_data mod/chat/chatd.php /^ function write_data($connection, $text) {$/;" f write_formula lib/excel/Worksheet.php /^ function write_formula($row, $col, $formula, $format = 0)$/;" f write_header lib/excel/OLEwriter.php /^ function write_header()$/;" f write_note lib/excel/Worksheet.php /^ function write_note($row, $col, $note)$/;" f @@ -5190,17 +4283,8 @@ write_string lib/excel/Worksheet.php /^ function write_string($row, $col, $st write_url lib/excel/Worksheet.php /^ function write_url($row, $col, $url, $string = '', $format = 0)$/;" f writequestion mod/quiz/format.php /^ function writequestion($question) {$/;" f writequestion mod/quiz/format/gift/format.php /^function writequestion( $question ) {$/;" f -writequestion mod/quiz/format/qti/format.php /^ function writequestion($question, $shuffleanswers = null, $courselevel = false, $path = '') {$/;" f -writequestion mod/quiz/format/xml/format.php /^function writequestion( $question ) {$/;" f -writetext mod/quiz/format/qti/format.php /^ function writetext( $raw ) {$/;" f -writetext mod/quiz/format/xml/format.php /^function writetext( $raw, $ilev=0, $short=true) {$/;" f -xChangeTableSQL lib/adodb/datadict/datadict-db2.inc.php /^ function xChangeTableSQL($tablename, $flds, $tableoptions = false)$/;" f xMetaColumns lib/adodb/drivers/adodb-informix72.inc.php /^ function &xMetaColumns($table)$/;" f +xMetaForeignKeys lib/adodb/drivers/adodb-postgres7.inc.php /^ function xMetaForeignKeys($table, $owner=false, $upper=false)$/;" f xml_depth lib/xmlize.php /^function xml_depth($vals, &$i) {$/;" f -xml_entitize mod/quiz/format/qti/format.php /^function xml_entitize(&$collection) {$/;" f -xmlize lib/xmlize.php /^function xmlize($data, $WHITE=1, $encoding='UTF-8') {$/;" f -xpath_eval lib/cas/domxml-php4-php5.php /^function xpath_eval($xpath_context,$eval_str,$contextnode=null) {return $xpath_context->query($eval_str,$contextnode);}$/;" f -xpath_new_context lib/cas/domxml-php4-php5.php /^function xpath_new_context($dom_document) {return new php4DOMXPath($dom_document);}$/;" f -xpath_register_ns lib/cas/domxml-php4-php5.php /^ function xpath_register_ns($prefix,$namespaceURI) {return $this->myDOMXPath->registerNamespace($prefix,$namespaceURI);}$/;" f +xmlize lib/xmlize.php /^function xmlize($data, $WHITE=1) {$/;" f xslt_error_handler lib/adodb/adodb-xmlschema.inc.php /^ function xslt_error_handler( $parser, $errno, $level, $fields ) {$/;" f -zip_files lib/moodlelib.php /^function zip_files ($originalfiles, $destination) {$/;" f diff --git a/theme/UPGRADE.txt b/theme/UPGRADE.txt index 0888cb90505..bc9d6029dc1 100644 --- a/theme/UPGRADE.txt +++ b/theme/UPGRADE.txt @@ -265,20 +265,3 @@ Changes from 1.3.2 - 1.3.3 $bodytags variable is now included in header.html (important for SCORM) - -================================ -Changes from 1.3.x - 1.4 --------------------------------- - -/* Make the course summary look like it used to on the front page */ - -#block_course_summary, #block_course_summary .sideblockmain { } - -#block_course_summary .sideblockmain { } - -/* Make the front page topic box look nice */ - -.sitetopic { } - -.sitetopiccontent { } - diff --git a/theme/brightretro/footer.html b/theme/brightretro/footer.html index 160cf23dacb..ee5aaf4bc55 100644 --- a/theme/brightretro/footer.html +++ b/theme/brightretro/footer.html @@ -2,8 +2,8 @@ <!-- START OF FOOTER --> <center> <hr size="1" noshade="noshade" /> -<?php echo $loggedinas ?> +<p class="logininfo"><?php echo $loggedinas ?></p> <p class="homelink"><?php echo $homelink ?></p> -</center> + </body> </html> diff --git a/theme/brightretro/header.html b/theme/brightretro/header.html index a1254257fca..14567f305e7 100644 --- a/theme/brightretro/header.html +++ b/theme/brightretro/header.html @@ -12,7 +12,7 @@ <body<?php echo " $bodytags"; if ($focus) { - echo " onload=\"setfocus()\""; + echo " onload=setfocus()"; } echo " bgcolor=\"$THEME->body\">"; ?> @@ -22,7 +22,7 @@ <table width="100%" cellpadding="10" cellspacing="0" border="0" class="headerhome"> <tr> <td valign="top" class="headerhomemain"><img - border="0" src="<?php echo "$CFG->wwwroot/theme/$CFG->theme/logo.jpg" ?>" alt="" /></td> + border="0" src="<?php echo "$CFG->wwwroot/theme/$CFG->theme/logo.jpg" ?>"></td> <td align="right" valign="top" class="headerhomemenu"><?php echo $menu ?></td> </tr> </table> @@ -51,11 +51,11 @@ ?></td> </tr> </table> - <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height="5" width="1" /><br /> + <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height=5 width=1><br> <?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> - <hr size="1" noshade="noshade" /> + <hr size="1" noshade /> <?php } ?> diff --git a/theme/brightretro/styles.php b/theme/brightretro/styles.php index c75f327769b..0d88adb3a60 100644 --- a/theme/brightretro/styles.php +++ b/theme/brightretro/styles.php @@ -2,18 +2,12 @@ /// We use PHP so we can do value substitutions into the styles - $nomoodlecookie = true; - require_once("../../config.php"); - if (!isset($themename)) { $themename = NULL; } - if (isset($localconfig)) { - unset($THEME); - include('config.php'); - } - + $nomoodlecookie = true; + require_once("../../config.php"); $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); /// From here on it's nearly a normal stylesheet. @@ -387,7 +381,6 @@ a.dimmed:hover { } .courseboxsummary { - font-size: small; } a.autolink:link { diff --git a/theme/cordoroyblue/footer.html b/theme/cordoroyblue/footer.html index 9e31a094177..66432e81e55 100644 --- a/theme/cordoroyblue/footer.html +++ b/theme/cordoroyblue/footer.html @@ -1,10 +1,10 @@ <!-- START OF FOOTER --> -<center> -<hr size="1" noshade="noshade" /> -<font size="1"> -<?php echo $loggedinas ?> -<p><?php echo $homelink ?></p> -</font> -</center> -</body> -</html> +<CENTER> +<HR SIZE=1 NOSHADE> +<FONT SIZE=1> +<P><?php echo $loggedinas ?></P> +<P><?php echo $homelink ?></P> +</FONT> + +</BODY> +</HTML> diff --git a/theme/cordoroyblue/header.html b/theme/cordoroyblue/header.html index 1fa812e0613..13765be9534 100644 --- a/theme/cordoroyblue/header.html +++ b/theme/cordoroyblue/header.html @@ -11,7 +11,7 @@ <body<?php echo " $bodytags"; if ($focus) { - echo " onload=\"setfocus()\""; + echo " onload=setfocus()"; } echo " bgcolor=\"$THEME->body\">"; ?> diff --git a/theme/cordoroyblue/styles.php b/theme/cordoroyblue/styles.php index 37abc5688c1..c830bcd94dc 100644 --- a/theme/cordoroyblue/styles.php +++ b/theme/cordoroyblue/styles.php @@ -4,16 +4,6 @@ $nomoodlecookie = true; require_once("../../config.php"); - - if (!isset($themename)) { - $themename = NULL; - } - - if (isset($localconfig)) { - unset($THEME); - include('config.php'); - } - $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); @@ -418,7 +408,6 @@ a.dimmed:hover { } .courseboxsummary { - font-size: small; } a.autolink:link { diff --git a/theme/cornflower/docstyles.php b/theme/cornflower/docstyles.php deleted file mode 100644 index a0448ef2115..00000000000 --- a/theme/cornflower/docstyles.php +++ /dev/null @@ -1,97 +0,0 @@ -<?PHP /* $Id$ */ - -/// We use PHP so we can do value substitutions into the styles - - if (!isset($themename)) { - $themename = NULL; - } - - $nomoodlecookie = true; - require_once("../../config.php"); - $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - -/// -/// You can hardcode colours in this file if you -/// don't care about this. - -?> -body { - background-color:#FFFFFF; -} - -h1, h2, h3 { - background-color:transparent; - color:#000000; -} - -h1 { - font-size: 2em; - margin: .67em 0; -} - -h2 { - font-size: 1.5em; - margin: .75em 0; -} - -h3 { - font-size: 1.17em; - margin: .83em 0; -} - - -li { - margin-bottom: 10px; -} - -ul { - margin-top: 10px; -} - -.question { - font-size: medium; - font-weight: bold; - border: 1px dotted; - padding: 10px; - background-color: #EEEEEE; -} - -.answer { - font-size: medium; - border: none; - padding-left: 40px; -} - -.normaltext { - font-size: medium; - border: none; - margin-left: 30px; -} - -.answercode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: none; - padding-left: 60px; -} - -.questionlink { - font-size: medium; - border: none; - padding-left: 40px; -} - -.examplecode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: thin dashed #999999; - background-color: #FBFBFB; - margin: auto; - padding: 30px; - height: auto; - width: auto; -} - -.spaced { - margin-bottom: 30px; -} diff --git a/theme/cornflower/footer.html b/theme/cornflower/footer.html index 3b1d04e1675..724ced9561a 100644 --- a/theme/cornflower/footer.html +++ b/theme/cornflower/footer.html @@ -2,9 +2,9 @@ <!-- START OF FOOTER --> <center> <hr size="1" noshade="noshade" /> -<?php echo $loggedinas ?> +<p class="logininfo"><?php echo $loggedinas ?></p> <p class="homelink"><?php echo $homelink ?></p> </body> -</center> + </td></table></body> </html> diff --git a/theme/cornflower/header.html b/theme/cornflower/header.html index 0dd09e45633..57fa75debfc 100644 --- a/theme/cornflower/header.html +++ b/theme/cornflower/header.html @@ -12,7 +12,7 @@ <body bgcolor="#006699" <?php echo " $bodytags"; if ($focus) { - echo " onload=\"setfocus()\""; + echo " onload=setfocus()"; } ?>> <table align="center" width="100%" border="1" cellpadding="5" bgcolor="#739fc4"> diff --git a/theme/cornflower/styles.php b/theme/cornflower/styles.php index e9b84d18443..22351f88684 100644 --- a/theme/cornflower/styles.php +++ b/theme/cornflower/styles.php @@ -4,14 +4,6 @@ $nomoodlecookie = true; require_once("../../config.php"); - if (!isset($themename)) { - $themename = NULL; - } - - if (isset($localconfig)) { - unset($THEME); - include('config.php'); - } $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); /// From here on it's nearly a normal stylesheet. @@ -382,7 +374,6 @@ a.dimmed:hover { } .courseboxsummary { - font-size: small; } a.autolink:link { diff --git a/theme/formal_white/README.html b/theme/formal_white/README.html deleted file mode 100644 index 78ea2eaf966..00000000000 --- a/theme/formal_white/README.html +++ /dev/null @@ -1,19 +0,0 @@ -<h3>Formal_White Theme</h3> -<hr /> - -<p>This theme has the colour gamma into the pale grey/brown area. Those colours - renders in a very similar way in both RGB and LCD monitors. Custom logo can - be easely substituded (see instruction below). Fonts used are &quot;Arial, Helvetica&quot; - for text and menu items and &quot;Verdana,Geneva&quot; for headers, both fonts are - fine for screen reading.</p> -<p>To update logos with your own: </p> -<ul> - <li>create two file with two different sized logos: </li> - <li>logo.jpg, height100 pixel </li> - <li>logo_small.jpg, height 50 pixel</li> - <li>via FTP upload the jpg files into /moodle/theme/formal_withe folder, - overwriting the existing jpg.</li> -</ul> -<p>The bigger logo will be used for the home page only, while the smaller will - be used for all -the other pages. </p> diff --git a/theme/formal_white/config.php b/theme/formal_white/config.php index d7cdab08e5c..37a94ca6339 100644 --- a/theme/formal_white/config.php +++ b/theme/formal_white/config.php @@ -1,124 +1,18 @@ -<?PHP // $Id$ - -//////////////////////////////////////////////////////////////////////////////// -/// This file contains a few configuration variables that control -/// how Moodle uses this theme. -//////////////////////////////////////////////////////////////////////////////// - -$THEME->sheets = array('fw_layout','fw_color','fw_fonts'); -///$THEME->sheets = false; - -/// This variable is an array containing the names of all the -/// stylesheet files you want included in this theme, and in what order -//////////////////////////////////////////////////////////////////////////////// - -$THEME->standardsheets = array('styles_layout'); -///$THEME->standardsheets = true; - -/// This variable can be set to an array containing -/// filenames from the *STANDARD* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - -$THEME->parent = ''; - -/// This variable can be set to the name of a parent theme -/// which you want to have included before the current theme. -/// This can make it easy to make modifications to another -/// theme without having to actually change the files -/// If this variable is empty or false then a parent theme -/// is not used. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parentsheets = false; - -/// This variable can be set to an array containing -/// filenames from a chosen *PARENT* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->parentsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->modsheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Activity modules and -/// include them. This allows modules to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->blocksheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Block modules and -/// include them. This allows Blocks to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->langsheets = false; - -/// By setting this to true, then this theme will search for -/// a file named "styles.php" inside the current language -/// directory. This allows different languages to provide -/// different styles. - - -$THEME->resource_mp3player_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes'; - -/// With this you can control the colours of the "big" MP3 player -/// that is used for MP3 resources. - - -$THEME->filter_mediaplugin_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'waitForPlay=yes'; - -/// ...And this controls the small embedded player - - -$THEME->custompix = false; - -/// If true, then this theme must have a "pix" -/// subdirectory that contains copies of all -/// files from the moodle/pix directory, plus a -/// "pix/mod" directory containing all the icons -/// for all the activity modules. -//////////////////////////////////////////////////////////////////////////////// - - - -// These colours are not used anymore, so I've set them to -// bright green to help identify where they should be removed -// These lines will be deleted soon - -$THEME->body = "#22FF22"; // Main page color -$THEME->cellheading = "#22FF22"; // Standard headings of big tables -$THEME->cellheading2 = "#22FF22"; // Highlight headings of tables -$THEME->cellcontent = "#22FF22"; // For areas with text -$THEME->cellcontent2 = "#22FF22"; // Alternate colour -$THEME->borders = "#22FF22"; // Table borders -$THEME->highlight = "#22FF22"; // Highlighted text (eg after a search) -$THEME->hidden = "#22FF22"; // To color things that are hidden -$THEME->autolink = "#22FF22"; // To color auto-generated links (eg glossary) - -?> +<?PHP // $Id$ + +$THEME->body = "#F7F6F1"; // Main page color +$THEME->cellheading = "#C6BDA8"; // Standard headings of big tables +$THEME->cellheading2 = "#849DBC"; // Highlight headings of tables +$THEME->cellcontent = "#FFFFFF"; // For areas with text +$THEME->cellcontent2 = "#C6BDA8"; // Alternate colour +$THEME->borders = "#C6BDA8"; // Table borders +$THEME->highlight = "#849DBC"; // Highlighted text (eg after a search) +$THEME->hidden = "#979EA8"; // To color things that are hidden +$THEME->autolink = "#FEF9F6"; // To color auto-generated links (eg glossary) + +$THEME->custompix = false; // If true, then this theme must have a "pix" + // subdirectory that contains copies of all + // files from the moodle/pix directory + // See "cordoroyblue" for an up-to-date example. + +?> diff --git a/theme/formal_white/docstyles.php b/theme/formal_white/docstyles.php deleted file mode 100644 index 4ef8a8027c6..00000000000 --- a/theme/formal_white/docstyles.php +++ /dev/null @@ -1,17 +0,0 @@ -<?PHP /* $Id$ */ - -/// We use PHP so we can do value substitutions into the styles - - if (!isset($themename)) { - $themename = NULL; - } - - $nomoodlecookie = true; - require_once("../../config.php"); - $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - -/// -/// You can hardcode colours in this file if you -/// don't care about this. - -?> diff --git a/theme/formal_white/footer.html b/theme/formal_white/footer.html index 73aa6e885e7..cadad76a0fa 100644 --- a/theme/formal_white/footer.html +++ b/theme/formal_white/footer.html @@ -1,30 +1,9 @@ - -</div> <!-- end div containerContent --> -<!-- START OF FOOTER --> -<div id="footer"> - -<?php if ($navigation) { ?> - <div class="navbar"> - <div class="breadcrumb"><?php print_navigation($navigation); ?></div> - <div class="menu"><?php echo $menu; ?></div> - </div> - <div class="clearer">&nbsp;</div> -<?php } ?> - -<?php echo $loggedinas ?> - -<?php if (isadmin()) { ?> -<br /> -<hr size="1" noshade="noshade" /> -<p align="center"> -<a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a> | -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a> | -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a> -</p> -<?php } ?> - - -</div> -</div> -</body> -</html> +<!-- START OF FOOTER --> +<hr size="1" noshade="noshade" /> +<table width="100%" border="0" cellpadding="5" cellspacing="0"> + <tr> + <td align="center"><p class="logininfo"><?php echo $loggedinas ?> | <?php echo $homelink ?></p></td> + </tr> +</table> +</body> +</html> diff --git a/theme/formal_white/fw_color.css b/theme/formal_white/fw_color.css deleted file mode 100644 index f9a8eff4465..00000000000 --- a/theme/formal_white/fw_color.css +++ /dev/null @@ -1,209 +0,0 @@ -/* Core */ - -body { - background-color: #F7F6F1; -} - -a:link { - color: #0033CC; -} - -a:visited { - color:#0033CC; -} - -a:hover { - color: #990000; -} - -h1 { - background-color: #C6BDA8; - border-color: #333333; - color: #333333; -} - -h2 { - background-color: #E3DFD4; - border-color:#C6BDA8; -} -h3 { - border-color:#C6BDA8; -} -h4 { - border-color:#C6BDA8; -} - - -th { - background-color:#E3DFD4; - -} - -th.header, -td.header, -div.header { - background-color: #E3DFD4; - -} - -#layout-table #left-column { - /* background-color: yellow; */ -} - -.generalbox { - border-color:#C6BDA8; - background-color:#FFFFFF; -} - -.navbar { - background-color:#C6BDA8; - border-color:#666666; - /* height: 20px; */ - background: url(pix/grad/bg_bread.jpg) repeat-x; -} - -.sitetopiccontent { - border-color:#C6BDA8; - background-color:#FFFFFF; -} - - -/*** - *** Header - ***/ - -#header-home, #header { - background-color: #E3DFD4; - border-color:#C6BDA8; -} - -/*** - *** Login - ***/ - - -.loginbox .header { - border-color:#C6BDA8; -} - -.loginbox .content { - border-color:#C6BDA8; -} - - -/*** - *** Blocks - ***/ - -.sideblock { - border-color:#C6BDA8; -} - -.sideblock .content { - background-color:#FEF9F6; -} - -.sideblock .footer { - border-top-color:#C6BDA8; -} - -/*** - *** Calendar -***/ - -#calendar .maincalendar, -#calendar .sidecalendar { - border-color: #C6BDA8; -} - -#calendar .maincalendar table.calendarmonth th { - border-color: #C6BDA8; -} - - -table.calendarmonth tr td { - border-color:#C6BDA8; -} - -table.minicalendar { - border-color:#C6BDA8; -} - -table.minicalendar tr.weekdays th { - background-color:#FEF9F6; - border-color:#C6BDA8; - } - -table.minicalendar tr td.day { - border-color:#C6BDA8; - } - -table.minicalendar tr td.weekend { - border-color:#C6BDA8; - color: red; - } - -#calendar .today, -.minicalendar .today { - border-color:#000000 !important; -} - -/* colors for calendar events */ -#calendar .event_global, -.minicalendar .event_global, -.block_calendar_month .event_global { - border-color:#2EBA0E !important; - background-color:#2EBA0E; -} - -#calendar .event_course, -.minicalendar .event_course, -.block_calendar_month .event_course { - border-color:#FF9966 !important; - background-color:#FF9966; -} - -#calendar .event_group, -.minicalendar .event_group, -.block_calendar_month .event_group { - border-color:#FBBB23 !important; - background-color:#FBBB23; -} - -#calendar .event_user, -.minicalendar .event_user, -.block_calendar_month .event_user { - border-color:#A1BECB !important; - background-color:#A1BECB; -} - - - -/*** - *** Course - ***/ - -.headingblock { - border-color:#C6BDA8; -} - -.categoryboxcontent, -.courseboxcontent { - border-color:#C6BDA8; - background: #FFFFFF; -} - -.categorybox .category, -.categorybox .category { - border-color: #C6BDA8; -} - -#course-view .section .content { - border-color: #C6BDA8; - background-color: #FFFFFF; -} - -#course-view .section .side { - border-color: #C6BDA8; - background-color: #FFFFFF; -} diff --git a/theme/formal_white/fw_fonts.css b/theme/formal_white/fw_fonts.css deleted file mode 100644 index cf17b1fd6d4..00000000000 --- a/theme/formal_white/fw_fonts.css +++ /dev/null @@ -1,131 +0,0 @@ -/* Core */ - -.clearer { - font-size:1px; -} - -body, td, li { - font-family: Arial, Helvetica, sans-serif; - font-size : 13px; - } - -body { - margin : 5px; - } - -th { - font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; - font-size: 11px; - font-weight: bold; -} - - -a:link { - text-decoration: none; -} - -a:visited { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -h1, h2, h3, h4 { - font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; -} - -h1 { - font-size:1.2em; - font-weight: bold; -} - -h2 { - font-size:1.15em; -} -h3 { - font-size:1.1em; -} -h4 { - font-weight:bold; -} - -th.header, -td.header, -div.header, -.headingblock { - font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; - font-weight: bold; - font-size: 0.9em; -} - - -.categorybox .category, -.categorybox .category { -/* font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; */ - font-size: 1.2em; - font-weight: bold; -} - - -/*** - *** Header - ***/ - -.breadcrumb { - font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; - font-size:.85em; - font-weight:bold; -} - -.logininfo, -#header-home .headermenu font { - font-size:.8em; -} - - /*** - *** Blocks - ***/ - -.sideblock .footer { - font-size:0.85em; - text-align: left; -} - -/*** - *** Calendar - ***/ -#calendar .maincalendar table.calendarmonth td { - font-size:.8em; -} - -#calendar .maincalendar .calendar-controls .current { - font-weight: bold; -} - -#calendar .sidecalendar .filters { - font-size:0.75em - } - -table.minicalendar tr.weekdays th { - font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; - font-size:0.7em; - font-weight:normal; - } - -table.minicalendar tr td.day { - font-size:0.7em; - } - -/*** - *** Course - ***/ - -#course-view .section .left { - font-weight: bold; - font-size: 1.2em; -} - - - diff --git a/theme/formal_white/fw_layout.css b/theme/formal_white/fw_layout.css deleted file mode 100644 index fe899ac8311..00000000000 --- a/theme/formal_white/fw_layout.css +++ /dev/null @@ -1,192 +0,0 @@ -/* Core */ - -body { - margin: 5px; -} - - -h1.main, -h2.main, -h3.main, -h4.main, -h5.main, -h6.main { - text-align: left; - padding-left: 5px; -} - -h1, h2, h3, h4 { - text-align: left; - padding-left: 5px; -} - -h1, h2, h3 { - border-width: 1px; - border-style: solid; -} - -h4 { - border-bottom-style: solid; - border-bottom-width:1px; -} - -input { - -} - -.generalbox { - border-width:1px; - border-style:solid; -} - -.sitetopiccontent { - border-width:1px; - border-style:solid; -} - -/*** - *** Header - ***/ - -#header-home { - /* padding:1em 0.5em; */ - height:100px; - border-width:1px; - border-style:solid; - -} - -#header { - height:55px; - border-width:1px; - border-style:solid; -} - -.headermenu { - float:right; - text-align:right; -} - -.navbar { - margin-right: 5px; - width: 100%; - padding:0px; - height: 25px; - border-width:1px; - border-style:solid; -} - -.breadcrumb { - padding-top: 3px; - padding-left: 3px; - } - -.navbar .navbutton { - padding-right: 3px; - padding-top: 2px; - } - - -/*** - *** Login - ***/ - -TABLE.loginbox { - margin-top: 20px; - } - -.loginbox .header { - border-width:1px; - border-style:solid; - border-bottom-width: 0px; -} - -.loginbox .content { - border-top-width: 0px; -} - - -/*** - *** Footer - ***/ - -#footer { - text-align:left; -} - - -/*** - *** Blocks - ***/ - - -.sideblock { - width: 100%; - margin-bottom:1em; - border-collapse:separate; - border-width:1px; - border-style:solid; -} - -.sideblock .footer { - border-top-width:1px; - border-top-style:dashed; -} - - -/*** - *** Calendar - ***/ - - table.minicalendar { - width: 100%; - margin:10px auto; - padding:2px; - border-width:1px; - border-style:solid; - border-collapse:separate; - border-spacing:1px !important; -} - -table.minicalendar tr.weekdays th { - border-style: none; -} - -table.minicalendar tr td.day { - border-style: solid; - border-width: 1px; -} - -table.calendarmonth { - border-collapse:separate; - border-spacing:1px !important; -} - -table.calendarmonth tr td { - border-style: solid; - border-width: 1px; -} - - -/*** - *** Course - ***/ - -.headingblock { - border-width:1px; - border-style:solid; - padding:5px; -} - - -.categorybox .category, -.categorybox .category { - border-bottom: solid; - border-width: 1px; - padding-top: 7px; -} - -#course-view .section .left { - border-right-width: 1px; - border-right-style: dashed; -} \ No newline at end of file diff --git a/theme/formal_white/gradient.jpg b/theme/formal_white/gradient.jpg deleted file mode 100644 index dbb2126a3b038f7f91a5d44c7331662c67f34bc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmex=<NpH&0WUXCHwH!~28I+MWcdGvLC~c%IlGd9k%5JQfx#Ro^p1hgF(p4Kl_BK- zP=xXSZH5*Gc2*DolI&dUZ0uY-ob2qJJbc{TJlx!Tf;?a#$R{8uC@8=uDk?56Dk?80 zCnv8A2aFsX9DKZd(n3Pga^fQ5a&QS^8UGJ32y!q4FlaC{3NkPWGBOJ?{y)MH40JX# zBhZxyz{t$P!N`az2K0phra~cMK|yqN4F7L2@BmF@5@Z%+uxEJ5&6vS-fwf_S#ttdQ q1wdr<f~_F~h<L6uJ&56MEC{~IQs(ex!Mqh^jvNR#z*zSGZvp@|A2<;J diff --git a/theme/formal_white/header.html b/theme/formal_white/header.html index e1d5e167996..cd257b4599d 100644 --- a/theme/formal_white/header.html +++ b/theme/formal_white/header.html @@ -1,45 +1,63 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html<?php echo $direction ?>> <head> - <?php echo $meta ?> - <meta name="keywords" content="moodle, <?php echo $title ?> " /> - <title><?php echo $title ?></title> - <link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> - <?php include("$CFG->javascript"); ?> +<?php echo $meta ?> +<title><?php echo $title ?></title> +<meta name="keywords" content="moodle, <?php echo $title ?> " /> +<link rel="stylesheet" type="text/css" href="<?php echo $styles ?>" /> +<link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> +<?php include("$CFG->javascript"); ?> </head> -<body<?php - echo " $bodytags"; - if ($focus) { - echo " onload=\"setfocus()\""; - } - ?>> - -<div id="page"> +<body<?php + echo " $bodytags"; + if ($focus) { + echo " onload=setfocus()"; + } + echo " bgcolor=\"$THEME->body\">"; +?> + +<?php if ($home) { // This is what gets printed on the home page only ?> + + <table width="100%" cellpadding="10" cellspacing="0" border="0" class="headerhome"> + <tr> + <td valign="top" class="headerhomemain"> + <img border="0" src="<?php echo "$CFG->wwwroot/theme/$CFG->theme/logo.jpg" ?>"> + </td> + <td align="right" valign="top" class="headerhomemenu"><?php echo $menu ?></td> + </tr> + </table> + +<?php } else if ($heading) { // This is what gets printed on any other page with a heading ?> + + <table width="100%" cellpadding="0" cellspacing="0" border="0" class="header"> + <tr> + <td valign="top" class="headermain"> + <img border="0" src="<?php echo "$CFG->wwwroot/theme/$CFG->theme/logo_small.jpg" ?>"> + <td align="right" valign="top" class="headermenu"><?php echo $menu ?></td> + </tr> + </table> -<?php if ($home) { // This is what gets printed on the home page only -?> - <div id="header-home"> - <div class="headermain"><img src='<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/logo.jpg' /></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> -<?php } else if ($heading) { // This is what gets printed on any other page with a heading -?> - <div id="header"> - <div class="headermain"><img src='<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/logo_small.jpg' /></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> <?php } ?> - <div class="clearer">&nbsp;</div> + + <?php if ($navigation) { // This is the navigation table with breadcrumbs ?> - <div class="navbar"> - <div class="breadcrumb"><?php print_navigation("$navigation"); ?></div> - <div class="navbutton"><?php echo $button; ?></div> - </div> -<?php } else if ($heading) { // If no navigation, but a heading, then print a line -?> - <hr size="1" noshade="noshade" /> + + <table border="0" cellpadding="3" cellspacing="0" width="100%"> + <tr> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar"> + <?php print_navigation("$navigation"); ?> + </td> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar" align="right" width="20" valign="top"><?php + echo $button; + ?></td> + </tr> + </table> + <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height="5" width="1" /><br /> + +<?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> + + <hr size="1" noshade="noshade" /> + <?php } ?> - <div class="clearer">&nbsp;</div> - <!-- END OF HEADER --> - <div id="content"> + +<!-- END OF HEADER --> diff --git a/theme/formal_white/pix/grad/bg_bread.jpg b/theme/formal_white/pix/grad/bg_bread.jpg deleted file mode 100644 index a6cfe63ed51f0d2b33f26c546ef93d3bc6c44e6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmex=<NpH&0WUXCHwH#VMg|WcWcYuZ!I^=Lg@uKcg^iV!jgt+CxjER_IJkMZxVX8v zcm#OBK!AsjUx1&FM_5=yL|9lxT3T900S-WhFtW3=^YZXY2na|>i3*BJ!6k`h{6D}T z$iX1TAi~Tj$iO7X$SlbC{|JLP$f=AB$bglF9Vj6o02F3M7H1G<5=jKffHa`WFflT- z0A)l4(TrkX5d43Ofrpt9Xd$y8gFVBWX+>t!m<}9H*%ZOely*KaB<IV*&6hgGPl~#J L(uh~;|9=wzBW*Hq diff --git a/theme/formal_white/pix/grad/bg_header.jpg b/theme/formal_white/pix/grad/bg_header.jpg deleted file mode 100644 index ee619f0d33c6be54ef3322dba0a82bd57935c39a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmex=<NpH&0WUXCHwH#VMg|WcWcYuZ!I^=Lg@uKcg^iV!jgt+CxjER_IJkMZxVX8v zcm#OBK!AsjUx1&FM_5=yL|9lxT3T900S-WhFtW3=^YZXY2na|>i3*BJ!6k`h{6D}T z$iX1VAi~Tj$iO7X$SlbC{|JLP$f=AB$bglN11KROz{tRiD#0R}C<c-Nsz;MyWMXCk z877Efn4pmG|62?^K=n+5%z_N|3@={uriQh)O#!0LS4$WKes%mfz38S@$Bz=DQo#=| NQrn768QA~d1OT57HmLvr diff --git a/theme/formal_white/screenshot.jpg b/theme/formal_white/screenshot.jpg deleted file mode 100644 index bcbcab441b64f1004737b174588e0e10be3576c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27324 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 diff --git a/theme/formal_white/styles.php b/theme/formal_white/styles.php index 080b57c7271..754788be5c6 100644 --- a/theme/formal_white/styles.php +++ b/theme/formal_white/styles.php @@ -1,18 +1,833 @@ <?PHP /* $Id$ */ -/// Every theme should contain a copy of this script. It lets us -/// set up variables and so on before we include the raw CSS files. -/// The output of this script should be a completely standard CSS file. +/// We use PHP so we can do value substitutions into the styles -/// THERE SHOULD BE NO NEED TO MODIFY THIS FILE!! USE CONFIG.PHP INSTEAD. + if (!isset($themename)) { + $themename = NULL; + } + $nomoodlecookie = true; + require_once("../../config.php"); + $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - $lifetime = 600; // Seconds to cache this stylesheet - $nomoodlecookie = true; // Cookies prevent caching, so don't use them - require_once("../../config.php"); // Load up the Moodle libraries - $themename = basename(dirname(__FILE__)); // Name of the folder we are in - $forceconfig = optional_param('forceconfig', '', PARAM_FILE); // Get config from this theme +/// From here on it's nearly a normal stylesheet. +/// First are some CSS definitions for normal tags, +/// then custom tags follow. +/// +/// New classes always get added to the end of the file. +/// +/// Note that a group of standard colours are all +/// defined in config.php in this directory. The +/// reason for this is because Moodle uses the same +/// colours to provide oldstyle formatting for +/// browsers without CSS. +/// +/// You can hardcode colours in this file if you +/// don't care about this. - style_sheet_setup(filemtime('styles.php'), $lifetime, $themename, $forceconfig); - ?> + + +body { + font-family: Arial, Helvetica, sans-serif; + font-size : 13px; + margin : 5px; +} + +td, th { + font-family: Arial, Helvetica, sans-serif; + font-size : 13px;} + +th { + font-weight: bold; + background-color: <?PHP echo $THEME->cellheading?>; +} + +ul { + margin-bottom: 5px; + margin-top: 0px; +} + +a:link { + text-decoration: none; + color: #0033CC; +} + +a:visited { + text-decoration: none; + color:#0033CC; +} + +a:hover { + text-decoration: underline; + color: #990000; +} + +form { + margin-bottom: 0; +} + +input { + background : transparent; + +} + +h2 { + font-size : 16px; + font-weight: bold; + background-color: #FEF9F6; + padding : 3; + border : 1px solid <?PHP echo $THEME->borders?>; +} + +h4 { + font-size : 13px; + font-weight: bold; + +} + + + +.highlight { + background-color: <?PHP echo $THEME->highlight?>; +} + +.headingblock { + font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 11px; + font-weight: bold; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + background-color: #E3DFD4; +} + +.navbar { + font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 11px; + font-weight: bold; + background-color: #C6BDA8; +} + +.generaltable { +} + +.generaltableheader { + +} + +.generaltablecell { +} + +.sideblock { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockheading { + font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 11px; + font-weight: bold; + background-color: #E3DFD4; +} + +.sideblockmain { + background-color: #FEF9F6; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblocklinks { + background-color: #FEF9F6; +} + +.sideblocklatestnews { + background-color: #FEF9F6; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockrecentactivity { + background-color: #FEF9F6; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.outlineheadingblock { + font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 11px; + font-weight: bold; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.forumpost { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.forumpostpicture { + background-color: #C6BDA8; +} + +.forumpostside { + background-color: #E3DFD4; + -moz-border-radius-bottomleft: 20px; +} + +.forumpostmessage { + -moz-border-radius-bottomright: 20px; +} + + +.weeklyoutline { +} + +.weeklyoutlineside { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.weeklyoutlinesidehighlight { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.weeklyoutlinesidehidden { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: dashed; +} + +.weeklyoutlinecontent { + border-width: 0px; + border-top: 1px; + border-bottom: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.weeklyoutlinecontenthighlight { + background: #FFFFFF; + border-width: 0px; + border-top: 1px; + border-bottom: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.weeklyoutlinecontenthidden { + background: #F7F6F1; + border-width: 0px; + border-top: 1px; + border-bottom: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: dashed; +} + +.weeklydatetext { + font-weight: bold; +} + +.topicsoutline { +} + +.topicsoutlineside { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.topicsoutlinesidehighlight { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.topicsoutlinesidehidden { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: dashed; +} + +.topicsoutlinecontent { + border-width: 0px; + border-top: 1px; + border-bottom: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.topicsoutlinecontenthighlight { + background: #FFFFFF; + border-width: 0px; + border-top: 1px; + border-bottom: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.topicsoutlinecontenthidden { + background-color: #F7F6F1; + border-width: 0px; + border-top: 1px; + border-bottom: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: dashed; +} + +.siteinfo { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.siteinfocontent { + background-color: #FEF9F6; + -moz-border-radius: 20px; + +} + + +.generalbox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + background-color: #FEF9F6; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.generalboxcontent { + background-image: none; + background-color: <?PHP echo $THEME->cellcontent?>; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.noticebox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.noticeboxcontent { + text-align: center; +} + + +.feedbacktext { + color: <?PHP echo $THEME->cellheading2?>; +} + +a.dimmed:link { + text-decoration: none; + color: #AAAAAA; +} + +a.dimmed:visited { + text-decoration: none; + color: #AAAAAA; +} + +a.dimmed:hover { + text-decoration: underline; + color: #990000; +} + +.dimmed_text { + color: #AAAAAA; +} + +.forumpostheader { +} + +.forumpostheadertopic { + font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; + background-color: #C6BDA8 +} + +.forumpostheaderpicture { + background-color: #FEF9F6; +} + +.forumpostheadername { + background-color: #FEF9F6; +} + +.forumpostheaderreplies { + +} + +.forumpostheaderdate { + background-color: #FEF9F6; +} + +.logininfo { + font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 10px; +} + +.homelink { + font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 11px; +} + +.teacheronly { + color: #990000; +} + +.header { + background-color: #E3DFD4; +} + +.headermain { + font-weight: bold; +} + +.headermenu { +} + +.headerhome { + background-color: #E3DFD4; +} + +.headerhomemain { + font-weight: bold; +} + +.headerhomemenu { +} + +.categorybox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.categoryboxcontent { + +} + +.categoryname { + font-weight: bold; +} + +.categorynumber { + font-weight: bold; +} + +.coursename { +} + +.coursebox { +} + +.courseboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.courseboxinfo { + font-size : 11px; + font-weight: bold; +} + +.courseboxsummary { +} + +a.autolink:link { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; + border-bottom: dashed 1px #000000; + cursor: help; +} + +a.autolink:visited { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; + border-bottom: dashed 1px #000000; + cursor: help; +} + +a.autolink:hover { + text-decoration: none; + border-bottom: solid 1px #000000; + color: #000000; + cursor: help; +} + +.userinfobox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; + margin-bottom: 5px; +} + +.userinfoboxside { + -moz-border-radius-bottomleft: 20px; +} + +.userinfoboxcontent { + -moz-border-radius-bottomright: 20px; +} + +.userinfoboxsummary { +} + +.userinfoboxlinkcontent { + -moz-border-radius-bottomright: 20px; +} + +.generaltab { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.generaltabselected { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.forumheaderlist { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.smallinfo { +} + +.smallinfohead { + color: #555555; +} + +.tabledivider { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + border-left: 0px; + border-right: 0px; + border-top: 0px; +} + +.headingblockcontent { +} + + + + +TABLE.calendarmini { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-size : 10px; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmonth { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 0px; + -moz-border-radius: 10px; +} + +TABLE.calendarmini TBODY TD { + text-align: center; + vertical-align: center; + width: 14%; + border-width: 1px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + -moz-border-radius: 4px; +} + +TABLE.calendarmonth TBODY TD { + width: 14%; + border-width: 1px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + vertical-align: top; + background-color: <?PHP echo $THEME->body?>; +} + +TABLE.calendarmonth TBODY TD TABLE { + margin-top: 0px; + margin-left: 0px; + font-size : 10px; + line-height: 1.2em; +} + +TABLE.calendarmonth TBODY TD TABLE TD { + border: none; + background: none; +} + +TABLE.calendarmonth TBODY TD DIV { + margin-top: 0px; + margin-left: 0px; + font-size: 10px; + line-height: 1.2em; +} + +TABLE.calendarmini THEAD TD { + font-size: 10px; + font-weight: bold; + text-align: center; + vertical-align: center; +} + +TABLE.calendarmonth THEAD TD { + text-align: center; + vertical-align: center; + font-weight: bold; + padding-bottom: 3px; + border-bottom: 2px <?PHP echo $THEME->borders?> solid; + background-color: <?PHP echo $THEME->body?>; +} + +.sideblockmain .cal_event { + +} +.sideblockmain .cal_event_date { + +} + +.cal_event_global { + background-color: #009999 !important; + border: 2px #009999 solid !important; +} + +.cal_event_course { + background-color: #ff3333 !important; + border: 2px #ff3333 solid !important; +} + +.cal_event_group { + background-color: #ffcc33 !important; + border: 2px #ffcc33 solid !important; +} + +.cal_event_user { + background-color: #99ccff !important; + border: 2px #99ccff solid !important; +} + +.cal_duration_global { + border-top: 2px #009999 solid !important; + border-bottom: 2px #009999 solid !important; +} + +.cal_duration_course { + border-top: 2px #ff3333 solid !important; + border-bottom: 2px #ff3333 solid !important; +} + +.cal_duration_user { + border-top: 2px #99ccff solid !important; + border-bottom: 2px #99ccff solid !important; +} + +.cal_duration_group { + border-top: 2px #ffcc33 solid !important; + border-bottom: 2px #ffcc33 solid !important; +} + +.cal_weekend { + color: red; +} + +.cal_today { + border: 2px black solid !important; +} + +.mycalendar { + background-color: <?PHP echo $THEME->cellcontent?>; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.mycalendar .cal_event { + font-weight: bold; +} +.mycalendar .cal_event_date { + font-size: 10px; +} + +.mycalendar TABLE.cal_filters { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_filters THEAD TD { + border-bottom: 2px <?PHP echo $THEME->borders?> solid; + margin: 0px; + padding: 2px; +} + + +.mycalendar .cal_event_table { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_event_table THEAD { + background-color: <?PHP echo $THEME->cellcontent?>; + text-align: center; + font-weight: bold; +} + +.sideblockmain HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.mycalendar HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.calendarexpired { + color: red; + font-weight: bold; +} + +.calendarreferer { + font-weight: bold; +} + +TD.cal_event_description { + width: 80%; + border-left: 2px <?php echo $THEME->borders?> solid; + vertical-align: top; + padding: 5px; +} + +.cal_popup_fg { + background-color: <?php echo $THEME->cellcontent?>; +} + +.cal_popup_bg { + border-top: 2px #C6BDA8 solid; + border-left: 2px #C6BDA8 solid; + border-right: 2px #663300 solid; + border-bottom: 2px #663300 solid; + background-color: #E3DFD4; + padding: 0px; + margin: 0px; +} + +.cal_popup_caption { + background-color: #E3DFD4; + font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size: 10px; + font-weight: bold; +} + + +.cal_popup_close { + font-size: 75%; + font-weight: bold; + font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; + margin-right: 5px; +} + +.sideblock .cal_controls { + font-size: 8px; +} + +A IMG { + border: none; +} + +TABLE.formtable TD { + padding: 9px; +} + + + +.eventfull { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.eventfullheader { +} + +.eventfullpicture { + padding:8px; +} + +.eventfullside { + -moz-border-radius-bottomleft: 15px; +} + +.eventfullmessage { + -moz-border-radius-bottomright: 15px; +} + +#block_course_summary, #block_course_summary .sideblockmain { + -moz-border-radius: 20px; +} + +#block_course_summary .sideblockmain { + padding: 10px; +} + +.sitetopic { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 15px; +} + +.sitetopiccontent { + -moz-border-radius: 15px; +} + diff --git a/theme/garden/footer.html b/theme/garden/footer.html index bdecf1ecb7f..e8283b3428b 100755 --- a/theme/garden/footer.html +++ b/theme/garden/footer.html @@ -1,8 +1,8 @@ <!-- START OF FOOTER --> <center> -<hr size="2" noshade="noshade" /> -<?php echo $loggedinas ?> +<hr size=2 noshade="noshade" /> +<p class="logininfo"><?php echo $loggedinas ?></p> <p class="homelink"><?php echo $homelink ?></p> -</center> + </body> </html> diff --git a/theme/garden/header.html b/theme/garden/header.html index fb628df0ad4..1d47cbd5bef 100755 --- a/theme/garden/header.html +++ b/theme/garden/header.html @@ -12,7 +12,7 @@ <body<?php echo " $bodytags"; if ($focus) { - echo " onload=\"setfocus()\""; + echo " onload=setfocus()"; } echo " bgcolor=\"$THEME->body\">"; ?> @@ -50,11 +50,11 @@ ?></td> </tr> </table> - <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height="5" width="1" /><br /> + <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height=5 width=1><br> <?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> - <hr size="1" noshade="noshade" /> + <hr size="1" noshade /> <?php } ?> diff --git a/theme/garden/styles.php b/theme/garden/styles.php index f8de1c0f246..0fed480e920 100755 --- a/theme/garden/styles.php +++ b/theme/garden/styles.php @@ -4,14 +4,6 @@ $nomoodlecookie = true; require_once("../../config.php"); - if (!isset($themename)) { - $themename = NULL; - } - - if (isset($localconfig)) { - unset($THEME); - include('config.php'); - } $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); /// From here on it's nearly a normal stylesheet. @@ -341,7 +333,6 @@ a.dimmed:hover { } .courseboxsummary { - font-size: small; } a.autolink:link { diff --git a/theme/index.php b/theme/index.php index a791ce0361b..b8cf52c2e3f 100644 --- a/theme/index.php +++ b/theme/index.php @@ -1,8 +1,9 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../config.php"); - $choose = optional_param("choose",'',PARAM_FILE); // set this theme as default + optional_variable($preview); // which theme to show + optional_variable($choose); // set this theme as default if (! $site = get_site()) { error("Site doesn't exist!"); @@ -14,30 +15,35 @@ error("You must be an administrator to change themes."); } - unset($SESSION->theme); + if ($choose) { + if (!is_dir($choose)) { + error("This theme is not installed!"); + } + $preview = $choose; + } + + if ($preview) { + $CFG->theme = $preview; + $CFG->stylesheet = "$CFG->wwwroot/theme/$CFG->theme/styles.php?themename=$preview"; + $CFG->header = "$CFG->dirroot/theme/$CFG->theme/header.html"; + $CFG->footer = "$CFG->dirroot/theme/$CFG->theme/footer.html"; + include ("$CFG->theme/config.php"); + } $stradministration = get_string("administration"); $strconfiguration = get_string("configuration"); $strthemes = get_string("themes"); $strpreview = get_string("preview"); - $strchoose = get_string("choose"); - $strinfo = get_string("info"); + $strsavechanges = get_string("savechanges"); $strtheme = get_string("theme"); $strthemesaved = get_string("themesaved"); - $strscreenshot = get_string("screenshot"); - $stroldtheme = get_string("oldtheme"); + print_header("$site->shortname: $strthemes", $site->fullname, + "<a href=\"$CFG->wwwroot/admin/index.php\">$stradministration</a> -> ". + "<a href=\"$CFG->wwwroot/admin/configure.php\">$strconfiguration</a> -> $strthemes"); - if ($choose and confirm_sesskey()) { - if (!is_dir($choose)) { - error("This theme is not installed!"); - } + if ($choose) { if (set_config("theme", $choose)) { - theme_setup($choose); - - print_header("$site->shortname: $strthemes", $site->fullname, - "<a href=\"$CFG->wwwroot/$CFG->admin/index.php\">$stradministration</a> -> ". - "<a href=\"$CFG->wwwroot/$CFG->admin/configure.php\">$strconfiguration</a> -> $strthemes"); print_heading(get_string("themesaved")); print_continue("$CFG->wwwroot/"); @@ -59,85 +65,29 @@ } } - print_header("$site->shortname: $strthemes", $site->fullname, - "<a href=\"$CFG->wwwroot/$CFG->admin/index.php\">$stradministration</a> -> ". - "<a href=\"$CFG->wwwroot/$CFG->admin/configure.php\">$strconfiguration</a> -> $strthemes"); - - - print_heading($strthemes); + print_heading(get_string("previeworchoose")); $themes = get_list_of_plugins("theme"); - $sesskey = !empty($USER->id) ? $USER->sesskey : ''; - echo "<table align=\"center\" cellpadding=\"7\" cellspacing=\"5\">"; - echo "<tr class=\"generaltableheader\"><th>$strtheme</th><th>$strinfo</th></tr>"; + echo "<TABLE ALIGN=CENTER cellpadding=7 cellspacing=5>"; + echo "<TR><TH class=\"generaltableheader\">$strtheme<TH class=\"generaltableheader\">&nbsp;</TR>"; foreach ($themes as $theme) { - - unset($THEME); - - if (!file_exists($CFG->themedir.$theme.'/config.php')) { // bad folder - continue; - } - - include_once($CFG->themedir.$theme.'/config.php'); - - $readme = ''; - $screenshot = ''; - $screenshotpath = ''; - - if (file_exists("$theme/README.html")) { - $readme = '<li>'. - link_to_popup_window('/theme/'.$theme.'/README.html', $theme, $strinfo, 400, 500, '', 'none', true).'</li>'; - } else if (file_exists("$theme/README.txt")) { - $readme = '<li>'. - link_to_popup_window('/theme/'.$theme.'/README.txt', $theme, $strinfo, 400, 500, '', 'none', true).'</li>'; - } - if (file_exists("$theme/screenshot.png")) { - $screenshotpath = "$theme/screenshot.png"; - } else if (file_exists("$theme/screenshot.jpg")) { - $screenshotpath = "$theme/screenshot.jpg"; - } - - echo "<tr>"; - echo "<td align=\"center\">"; - - if ($screenshotpath) { - $screenshot = "<li><a target=\"$theme\" href=\"$theme/screenshot.jpg\">$strscreenshot</a></li>"; - echo "<iframe name=\"$theme\" src=\"$screenshotpath\" height=\"200\" width=\"400\"></iframe></td>"; - } else { - echo "<iframe name=\"$theme\" src=\"preview.php?preview=$theme\" height=\"200\" width=\"400\"></iframe></td>"; - } - - + include ("$theme/config.php"); + echo "<TR>"; if ($CFG->theme == $theme) { - echo '<td valign="top" style="border-style:solid; border-width:1px; border-color=#555555">'; + echo "<TD ALIGN=CENTER BGCOLOR=\"$THEME->body\">$theme</TD>"; + echo "<TD ALIGN=CENTER><A HREF=\"index.php?choose=$theme\">$strsavechanges</A></TD>"; } else { - echo '<td valign="top">'; + echo "<TD ALIGN=CENTER BGCOLOR=\"$THEME->body\">"; + echo "<A TITLE=\"$strpreview\" HREF=\"index.php?preview=$theme\">$theme</A>"; + echo "</TD>"; + echo "<TD>&nbsp;</TD>"; } - if (isset($THEME->sheets)) { - echo '<p style="font-size:1.5em;font-style:bold;">'.$theme.'</p>'; - } else { - echo '<p style="font-size:1.5em;font-style:bold;color:red;">'.$theme.' (Moodle 1.4)</p>'; - } - - echo '<ul>'; - - if ($screenshot or $readme) { - echo "<li><a target=\"$theme\" href=\"preview.php?preview=$theme\">$strpreview</a></li>"; - } - echo $screenshot.$readme; - echo '</ul>'; - - $options = null; - $options['choose'] = $theme; - $options['sesskey'] = $sesskey; - print_single_button('index.php', $options, $strchoose); - echo '</td>'; echo "</tr>"; } echo "</table>"; - echo "<br /><div align=\"center\">"; + echo "<br><div align=center>"; $options["frame"] = "developer.html"; $options["sub"] = "themes"; print_single_button("$CFG->wwwroot/doc/index.php", $options, get_string("howtomakethemes")); diff --git a/theme/metal/footer.html b/theme/metal/footer.html index bbc107fe362..76d3e769bf8 100644 --- a/theme/metal/footer.html +++ b/theme/metal/footer.html @@ -2,7 +2,7 @@ <!-- START OF FOOTER --> <div class="footer"> -<?php echo $loggedinas ?> +<p class="logininfo"><?php echo $loggedinas ?></p> <p class="homelink"><?php echo $homelink ?></p> </div> </body> diff --git a/theme/metal/header.html b/theme/metal/header.html index 461d7a35b71..1d314905e18 100644 --- a/theme/metal/header.html +++ b/theme/metal/header.html @@ -11,7 +11,7 @@ <body<?php echo " $bodytags"; if ($focus) { - echo " onload=\"setfocus()\""; + echo " onload=setfocus()"; } echo " bgcolor=\"$THEME->body\">"; ?> diff --git a/theme/metal/styles.php b/theme/metal/styles.php index aa903b6e0f7..7cd5a0dd5e2 100644 --- a/theme/metal/styles.php +++ b/theme/metal/styles.php @@ -2,16 +2,12 @@ /// We use PHP so we can do value substitutions into the styles - $nomoodlecookie = true; - require_once("../../config.php"); if (!isset($themename)) { $themename = NULL; } - if (isset($localconfig)) { - unset($THEME); - include('config.php'); - } + $nomoodlecookie = true; + require_once("../../config.php"); $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); /// From here on it's nearly a normal stylesheet. @@ -404,7 +400,6 @@ a.dimmed:hover { } .courseboxsummary { - font-size: small; } a.autolink:link { diff --git a/theme/oceanblue/README b/theme/oceanblue/README new file mode 100644 index 00000000000..813dd712990 --- /dev/null +++ b/theme/oceanblue/README @@ -0,0 +1,8 @@ +Theme Ocean Blue +------------------------ +Author: Mitsuhiro Yoshida(mits@mitstek.com) +http://www.mitstek.com/ + +To add your original jpeg Logo, +1. Rename header.html_logo as header.html +2. Save your original Logo as logo.jpg diff --git a/theme/oceanblue/README.txt b/theme/oceanblue/README.txt deleted file mode 100644 index 3442de8e9b6..00000000000 --- a/theme/oceanblue/README.txt +++ /dev/null @@ -1,4 +0,0 @@ -Theme Ocean Blue ------------------------- -Author: Mitsuhiro Yoshida -http://mitstek.com/ diff --git a/theme/oceanblue/config.php b/theme/oceanblue/config.php index 53fe202c1bb..80fe789a72c 100644 --- a/theme/oceanblue/config.php +++ b/theme/oceanblue/config.php @@ -1,127 +1,17 @@ <?PHP // $Id$ -//////////////////////////////////////////////////////////////////////////////// -/// This file contains a few configuration variables that control -/// how Moodle uses this theme. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->sheets = array('styles_layout', 'styles_fonts', 'styles_color'); - -/// This variable is an array containing the names of all the -/// stylesheet files you want included in this theme, and in what order -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->standardsheets = true; - -/// This variable can be set to an array containing -/// filenames from the *STANDARD* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parent = ''; - -/// This variable can be set to the name of a parent theme -/// which you want to have included before the current theme. -/// This can make it easy to make modifications to another -/// theme without having to actually change the files -/// If this variable is empty or false then a parent theme -/// is not used. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parentsheets = false; - -/// This variable can be set to an array containing -/// filenames from a chosen *PARENT* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->parentsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->modsheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Activity modules and -/// include them. This allows modules to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->blocksheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Block modules and -/// include them. This allows Blocks to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->langsheets = false; - -/// By setting this to true, then this theme will search for -/// a file named "styles.php" inside the current language -/// directory. This allows different languages to provide -/// different styles. - - -$THEME->navmenuwidth = 50; - -/// You can use this to control the cutoff point for strings -/// in the navmenus (list of activities in popup menu etc) -/// Default is 50 characters wide. - - -$THEME->makenavmenulist = false; - -/// By setting this to true, then you will have access to a -/// new variable in your header.html and footer.html called -/// $navmenulist ... this contains a simple XHTML menu of -/// all activities in the current course, mostly useful for -/// creating popup navigation menus and so on. - - - -$THEME->resource_mp3player_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes'; - -/// With this you can control the colours of the "big" MP3 player -/// that is used for MP3 resources. - - -$THEME->filter_mediaplugin_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'waitForPlay=yes'; - -/// ...And this controls the small embedded player - - -$THEME->custompix = false; - -/// If true, then this theme must have a "pix" -/// subdirectory that contains copies of all -/// files from the moodle/pix directory, plus a -/// "pix/mod" directory containing all the icons -/// for all the activity modules. -//////////////////////////////////////////////////////////////////////////////// - +$THEME->body = "#AAAAFF"; // Main page color +$THEME->cellheading = "#CCCCFF"; // Standard headings of big tables +$THEME->cellheading2 = "#8080c0"; // Highlight headings of tables +$THEME->cellcontent = "#F0F0FF"; // For areas with text +$THEME->cellcontent2 = "#CCCCFF"; // Alternate colour +$THEME->borders = "#AAAAFF"; // Table borders +$THEME->highlight = "#AAFFAA"; // Highlighted text (eg after a search) +$THEME->hidden = "#AAAAAA"; // To color things that are hidden +$THEME->autolink = "#DDDDDD"; // To color auto-generated links (eg glossary) +$THEME->custompix = false; // If true, then this theme must have a "pix" + // subdirectory that contains copies of all + // files from the moodle/pix directory + // See "cordoroyblue" for an up-to-date example. ?> diff --git a/theme/oceanblue/docstyles.php b/theme/oceanblue/docstyles.php deleted file mode 100644 index a82f2b474aa..00000000000 --- a/theme/oceanblue/docstyles.php +++ /dev/null @@ -1,102 +0,0 @@ -<?PHP /* $Id$ */ - -/// We use PHP so we can do value substitutions into the styles - - if (!isset($themename)) { - $themename = NULL; - } - - $nomoodlecookie = true; - require_once("../../config.php"); - $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - -/// -/// You can hardcode colours in this file if you -/// don't care about this. - -?> -body { - background-color:#FFFFFF; -} -p, a { - font-size:small; -} - -h1, h2, h3 { - padding-left:0px; - background-color:transparent; - color:#555555; -} - -h1 { - font-size:1.7em; - margin:0.5em 0 0; -} - -h2 { - font-size:1.4em; - margin:0.5em 0 0; -} - -h3 { - font-size:1.2em; - margin:0.5em 0 0; -} - - -li { - margin-bottom: 10px; -} - -ul { - margin-top: 10px; -} - -.question { - font-size: medium; - font-weight: normal; - border: 1px dotted; - padding: 10px; - background-color: #EEEEEE; -} - -.answer { - font-size: medium; - border: none; - padding-left: 40px; -} - -.normaltext { - font-size: medium; - border: none; - margin-left: 30px; -} - -.answercode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: none; - padding-left: 60px; -} - -.questionlink { - font-size: medium; - border: none; - padding-left: 40px; -} - -.examplecode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: thin dashed #999999; - background-color: #FBFBFB; - margin: auto; - margin-top: 0.5em; - padding: 30px; - height: auto; - width: auto; -} - -.spaced { - margin-bottom: 30px; -} diff --git a/theme/oceanblue/footer.html b/theme/oceanblue/footer.html index ecdfb3bf506..ee5aaf4bc55 100644 --- a/theme/oceanblue/footer.html +++ b/theme/oceanblue/footer.html @@ -1,33 +1,9 @@ -</div> <!-- end div containerContent --> <!-- START OF FOOTER --> -<div id="footer"> +<center> +<hr size="1" noshade="noshade" /> +<p class="logininfo"><?php echo $loggedinas ?></p> +<p class="homelink"><?php echo $homelink ?></p> -<?php if ($navigation and false) { ?> - <table class="navbar"><tr><td> - <div class="breadcrumb"><?php print_navigation($navigation); ?></div> - <div class="menu"><?php echo $menu; ?></div> - </td></tr></table> - <div class="clearer">&nbsp;</div> -<?php } ?> - -<?php echo $loggedinas ?> - - -<?php if ($CFG->debug > 7) { - echo $performanceinfo; -?> - <br /> - <hr size="1" noshade="noshade" /> - <p align="center"> - <a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a> | - <a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a> | - <a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a> - </p> -<?php } ?> - - -</div> -</div> </body> </html> diff --git a/theme/oceanblue/header.html b/theme/oceanblue/header.html index b414cfa7250..1d47cbd5bef 100644 --- a/theme/oceanblue/header.html +++ b/theme/oceanblue/header.html @@ -1,45 +1,61 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- No doctype yet - we are slowly migrating towards XHTML transitional 1.0 --> <html<?php echo $direction ?>> <head> - <?php echo $meta ?> - <meta name="keywords" content="moodle, <?php echo $title ?> " /> - <title><?php echo $title ?></title> - <link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> - <?php include("$CFG->javascript"); ?> +<?php echo $meta ?> +<title><?php echo $title ?></title> +<meta name="keywords" content="moodle, <?php echo $title ?> "> +<link rel="stylesheet" type="text/css" href="<?php echo $styles ?>"> +<link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico"> +<?php include("$CFG->javascript"); ?> </head> -<body<?php - echo " $bodytags"; - if ($focus) { - echo " onload=\"setfocus()\""; - } - ?>> - -<div id="page"> +<body<?php + echo " $bodytags"; + if ($focus) { + echo " onload=setfocus()"; + } + echo " bgcolor=\"$THEME->body\">"; +?> + +<?php if ($home) { // This is what gets printed on the home page only ?> + + <table width="100%" cellpadding="10" cellspacing="0" border="0" class="headerhome"> + <tr> + <td valign="top" class="headerhomemain"><?php echo $heading?></td> + <td align="right" valign="top" class="headerhomemenu"><?php echo $menu ?></td> + </tr> + </table> + +<?php } else if ($heading) { // This is what gets printed on any other page with a heading ?> + + <table width="100%" cellpadding="0" cellspacing="0" border="0" class="header"> + <tr> + <td valign="top" class="headermain"><?php echo $heading?></td> + <td align="right" valign="top" class="headermenu"><?php echo $menu ?></td> + </tr> + </table> -<?php if ($home) { // This is what gets printed on the home page only -?> - <div id="header-home"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> -<?php } else if ($heading) { // This is what gets printed on any other page with a heading -?> - <div id="header"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> <?php } ?> - <div class="clearer">&nbsp;</div> + + <?php if ($navigation) { // This is the navigation table with breadcrumbs ?> - <table class="navbar"><tr><td> - <div class="breadcrumb"><?php print_navigation($navigation); ?></div> - <div class="navbutton"><?php echo $button; ?></div> - </td></tr></table> -<?php } else if ($heading) { // If no navigation, but a heading, then print a line -?> - <hr size="1" noshade="noshade" /> + + <table border="0" cellpadding="3" cellspacing="0" width="100%"> + <tr> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar"> + <font size="2"><b><?php print_navigation("$navigation"); ?></b></font> + </td> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar" align="right" width="20" valign="top"><?php + echo $button; + ?></td> + </tr> + </table> + <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height=5 width=1><br> + +<?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> + + <hr size="1" noshade /> + <?php } ?> - <div class="clearer">&nbsp;</div> - <!-- END OF HEADER --> - <div id="content"> + +<!-- END OF HEADER --> diff --git a/theme/oceanblue/header.html_logo b/theme/oceanblue/header.html_logo new file mode 100644 index 00000000000..9a93e23ea97 --- /dev/null +++ b/theme/oceanblue/header.html_logo @@ -0,0 +1,53 @@ +<HTML<?php echo $direction?>> +<HEAD> +<TITLE><?php echo $title ?></TITLE> +<META NAME="keywords" CONTENT="Moodle, <?php echo $title ?> "> +<?php echo $meta ?> +<LINK REL="stylesheet" TYPE="text/css" HREF="<?php echo $styles ?>"> +<LINK REL="SHORTCUT ICON" HREF="<?php echo $CFG->wwwroot?>/theme/oceanblue/favicon.ico"> +<?php include("$CFG->javascript"); ?> +</HEAD> + +<BODY <?php if ($focus) { echo "onLoad=setfocus()"; } echo " bgcolor=\"$THEME->body\">"; ?> + +<?php if ($home) { // This is what gets printed on the home page only ?> + + <TABLE WIDTH=100% CELLPADDING=10 CELLSPACING=0 BORDER=0> + <TR> + <TD VALIGN=TOP><A HREF="<?php echo $CFG->wwwroot?>" TARGET="<?php echo $CFG->framename?>"><IMG SRC="<?php echo $CFG->wwwroot?>/theme/oceanblue/logo.jpg" ALT="Moodle" BORDER="0"></A></TD> + <TD ALIGN=RIGHT VALIGN=TOP><?php echo $menu ?></TD> + </TR> + </TABLE> + + +<?php } else if ($heading) { // This is what gets printed on any other page with a heading ?> + + <TABLE WIDTH=100% CELLPADDING=0 CELLSPACING=0 BORDER=0> + <TR> + <TD VALIGN=TOP><FONT SIZE=4><B><?php echo $heading?></B></FONT></TD> + <TD ALIGN=RIGHT VALIGN=TOP><?php echo $menu ?></TD> + </TR> + </TABLE> + +<?php } ?> + + +<?php if ($navigation) { // This is the navigation table with breadcrumbs ?> + + <TABLE BORDER=0 CELLPADDING=3 CELLSPACING=0 WIDTH=100%> + <TR> + <TD BGCOLOR="<?php echo $THEME->cellheading?>" CLASS="navbar"> + <FONT SIZE=2><B><?php print_navigation("$navigation"); ?></B></FONT> + </TD> + <TD BGCOLOR="<?php echo $THEME->cellheading?>" CLASS="navbar" ALIGN=RIGHT WIDTH=20 VALIGN=TOP><?php echo $button ?></TD> + </TR> + </TABLE> + <IMG SRC="<?php echo $CFG->wwwroot?>/pix/spacer.gif" ALT="" HEIGHT=5 WIDTH=1><BR> + +<?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> + + <HR SIZE=1 NOSHADE> + +<?php } ?> + +<!-- END OF HEADER --> diff --git a/theme/oceanblue/logo.jpg b/theme/oceanblue/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdf2ce8e6cb53a7d0da3af0d0f79cf0ae008fca6 GIT binary patch literal 2756 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 literal 0 HcmV?d00001 diff --git a/theme/oceanblue/logo_base.jpg b/theme/oceanblue/logo_base.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ac94f69865a20dc1c810add29d4d209d9178436b GIT binary patch literal 820 zcmex=<NpH&0WUXCHwH#VMur3+WcYuZ!I^=Bjg6g+m4ls~os*M;i${c)hnt&6Qb?Fz zL{>^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<<Uft5x!pKI?*u)5A2qPyaCl5D|1TU|I zk)n*E5y{~H0R}-11|5c9%#2D5OoEKef{g!<Fvv47FtP$&3vw_NFfuW-u(GjpaB^`2 z6>Jq?U}9uuW@2GxWo2Ojs;&jfGq4D<3Mm>ovIz$!vMUve7&T5@$f4}C@t|nX#SbdR zNkvVZTw>x9l2WQ_>Kd9_CZ=ZQ7M51dF0O9w9-dyoA)#U65s^{JDXD4c8JStdC8cHM z6_r)ZEv;?s9i3g1CQq3<ZTgIvvlcC0vUJ(<6)RV5+Pr1!w(UE1?mBe%$kAiRPn<k; z>GGAU*RJ2VdF$b$$4{O<d;a3(tB;>PfBE|D`;VW$K>lK6V1{@L?lUxh2?G7a#KOYN z!VdBmBU3pLGYhh?DjKp0IR>&P778mFHFAhJO<cI~Ag8i%&<D|^qKjN&DkcwAKZ3jl u_8D;=Ya+{MaE~GUb&G+AnGqOy%z_N|3~x0Sb^Qt!Sk$G#Fhnu)|C<0NWDf`c literal 0 HcmV?d00001 diff --git a/theme/oceanblue/pix/tab/left.gif b/theme/oceanblue/pix/tab/left.gif deleted file mode 100644 index 3702865ceb0475715ad68cf87254adf81528efc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmV<0044uNNk%w1VGaNy0J94KnVFgQ_xJDb@893wrKP3+|NqR)%&o1h<>lqIwYAsR z*9{E~zP`Qy0000000000A^8LW000XBEC2ui01f~m000DsaLGxly*TU5<uC_<83e&7 zh&2$&P`pLO5H9>uM-tfZ#OS=<g0u_X1O$Y!$6zdB0f6B7QXB%<tQMPKY`=lS0KAow zwdR08&0enoZS0z@mI~bXw)xKQ-|c>ZfPsC3gnx&AhKEuJ0*;W6k^qsFk_eQKkeid5 Uo(Pqcjsu^dpa7_;s;UtHJ3m-vM*si- diff --git a/theme/oceanblue/pix/tab/left_active.gif b/theme/oceanblue/pix/tab/left_active.gif deleted file mode 100644 index 3a8aa78421e47b20ed57142348bc584cb8ed0050..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmZ?wbhEHb<YQ1`*v!E&bLPzd|NrmVv**Es2dh@C`uzFxnKNfLZ{Ezo!NGtHDE?$& zWMJT6&;dz;%wS*%5IE_%dauRnvri4!8zdPNBw9@wjtJ~=RNZ3WBj_G@dy>K%)6T{P y%=-jb7hQZ7eTb`Jk?@liS)Qxny3%La81CguyiqMa{-WsDn!L^TLyJwB7_0#Y4LQgF diff --git a/theme/oceanblue/pix/tab/left_active_hover.gif b/theme/oceanblue/pix/tab/left_active_hover.gif deleted file mode 100644 index d081a0de41053920f1cfb6ba60bda28d9ba8ac59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmZ?wbhEHb<YQ1`*v!B%bLPzN-@m_q|NhytXG@nZ{r~^})~#Fb-@kwT`t`MI*Pc0Z z1}L&`-#!KyQ2fcl$iTqOpaT*BnZdvkQE<|;->4zTmBYDdn@mfgNXA0LBQqC;B(daM z85Za2%d9=jbm&2PvO&j628RY0MIqlQ4<&qe%xcikTK&{*Z$vI*kBabF`z?O4$@}kU S{s_~Nzx+P-Pq+*tgEas>IY~GG diff --git a/theme/oceanblue/pix/tab/left_hover.gif b/theme/oceanblue/pix/tab/left_hover.gif deleted file mode 100644 index 142c9d0eea262b638d399d183003e6f19e9036d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmV<H02Kd6Nk%w1VGaNy0J94KnVFgQ_xJDb@8;&_rKP3+|NphMwcp?0*Vosrt*y+= z%nc0<zP`Qy0000000000A^8LW000XBEC2ui01f~m000D-aLGxJGJsM=2t$Il9E5Qc zXrVF0nW9u;1aCSqb8Rmit-}Js;Adknh^YWTfJ7k@fv9vEH87~yK;n?4F1ypOATTbI z$$+zYtt`9A?xkQpht~yix?Z2(@B4mqfPr`d19OLohK2x#i;j?m1B#Q61C54>nu(2* lm7kuSnVzJVrKgjfsHCc^sjjR82eP!YwwD08y1Tj&06W#{YXSfO diff --git a/theme/oceanblue/pix/tab/right.gif b/theme/oceanblue/pix/tab/right.gif deleted file mode 100644 index 67527441896a7c7f6e39087731d35264b4bfac01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2379 zcmV-R3AFY{Nk%w1VcZ2G0J8u9rlzLf-`~8vysfRR%*@QSwYApP*5>Bs_xJainVIkJ z@Bjb*|Ns900000000000A^8LW000aCEC2ui0Ne#4000F4kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuX#v z&*-#z&2GEj@VI<VuiNkVynfH``~QG}f`f#GhKGoWhY5_0j*pO$l9QB`mY0~Bnwy-R zo}ZwhqNAjxrl+W>s;jK6uCK7Mva__cwzs&sy1Tr+zQ4eX00jgA84JkC%FE2n&d<=% z($mz{*4NnC+S}aS-rwNi;^XAy=I7|?>g(+7?(gvN^7Hid_V@Vt`uqF~2nPlP002PX zLcfCu6DnNDu%W|;5F<*QNU@^Dix@L%+=ws00074SC~zD}vZTqAC{wCj$+D%(moQ_> zv=<<O0Fg6u>fFh*r_Y~2g9;r=wCG9&1qMto%CxD|r%<Cxol3Q;)vMDG47kYvtJkk! z!-^eCwyfE+O%V|6inguWw{YXiolCdw*#H0(*xk#wuiw9b0}CE}u7Ci-h!ZPb%($`R z$1`gpm`u5{<;$2eYu?Pcv**vCLyI0wy0q!js8g$6&APSg*RW&Do=v;9?c2C>>)y?~ zx9{J;g9{%{ytwh>p9dgc&b+zv=g^}|pH98H_3PNPYv0bjyZ7(S1%Mw<zP$PK=+moT z&%V9;_weJ(KW<>Y{rmXy>)+46zyJRL1}I?vd<P()fPn}es9=H&F6dx`5I!hjgcMF_ zVTBl8s9}a2Zs=i$Abu!fh$N0^Vu=Qxs3M9hw#ed(F2)Gsj55|p<Bc}vh~thr_Q>Op zJ_ZTokU|zo<dH@uiDZLHHo2seP(CT;h72ND<$+gDwxE?;V%epZT!QJPm|$jU=9g!N zndX>lmWk$;ZHCF_n`+WIXPtQ7si&KH^0}v+eg+EYpo5P2r=fx(S}2)|#;NF|j6&*Y zq?Ar-shxc`im9fVO1i11omTp(sG(k3>Zqn3%4n*IlBz1JoW6?ctf$s0tF5iJdF!sZ z(#mVBz2XY&u%P~0Y_O^t>ngI$61%Mbv#=fut*^~WYwfd$DyVIO+ji?<w<(6}Ew|!| z`)#=jfSWG5>bA@7yX%fCues#L>u$XC&TDVI=i<AszW4SkFuw!?4DY}Or;BjD4FB73 zzy&{iaKsK*3~|B>TRbtw^=>S&zZZX;amX5j>~YB>pG@+~Dz|L%%N)lnGQ}*zOtZ@= z+blE6H|soe!Z`Pw^Uy*Uy>rb(A04#PJ~xfD(LYDcGt)^+{WR53Pi^(a+A6GYie7i^ zHP~Z^ZEx6Qe{HtdYMY(**=4)E_S<a3-8R~D=N&iRa`(;m-+Kpsx8QacUiaa2C$2Z( zgMY2K--IK+c;t^WZg}OCPu}?d<(hL2`R3nRF8Sx4i;g+yr<a~N>7$$8dF!jY&U)IZ z!;bpvwdaoe?z8hQ`|q&_ueR>J7Z3dH#tW}H^2aalyzS4EO?>mvS3kY-*87hA^~`Ut zefMjJFaG%Cmv8?0=%=s#`s}yw{`>I9FaP}X*Khy*_~)<x{`~jv|Nj6Cpa2I*zyccZ zfCx;W0vE`@20HM85R9M%CrH5xTJVAx%%BE0$iWVJ@Pi->p$JDv!V;SBgeXj*3RlR& z7P|0-FpQxLXGp^u+VF-r%%Ki<$ip7`@P|MQq7a8j#3CB8eg{xM5|^mNCNlAfPK+WH zrzpiLQt^sb%pw-IsKqY-a`B5^3?mrFD8@39@r-6nBN~&a#x}0ejc|OU9OFpGIoh#~ zc)X(?^T@|N`mv9I{G%WPNytGOvXF>8q#_f^$VEc2k&tv`Bqu4!N@g*NO~fP{nV3mV zZnBf<@?<DMsmW1(vXrP4WhzOj%2u-Sm8WziC}RoBQLd7fxU{7!b2&?0*0Ptt{3I`h z>C0g%Y?sAMW-v{uOkytcmd#}5Gm$yXUpn)e(!?e-OKHq)YLlAZv}QKP=}mHi)12Zg zr#jEM&UAK@o$z$0Jl{FbXttA{__Sv{^T|zp*0Y-Y3}-;mInaChv!MGtC_xnpP=*TB zp$l!OL?1fQh*I?bq8804G!O8^Ep}9kAH8BotvJ#tmQ;!-EvZMHxY8w_F{LbxsYqo? zQkt67rYOa!N<peqo3>PmKi%m}UCL9U4i%_HMe0#GnpCDPHK<T+YE-9MQ=?W@saJJs zR;hYZt9BKuU)5?@xtde2mKCgL6>C~w+EcHRRj6B)s$8Es*SOO4u6E5UTg?jBvDVeE zcm=Fp*ZNn&2G+2H?dw~8TG+lKR<MwLtYjTaS;ii=vTkjvQeDbX&TbZ{odxY@JL}Za zZZ@>2H7aREYg*EJwzaEG?P*J^TF}yVw6PT{Y;F5m)uy(#u4S!nZwuSs;?}suCGK#0 zJ6q<`R=LXmZLV;oE8FKfm$T8e?sT<VUF=?$x7+n@c){CU^6oac-E}Q;mpfkco;SC^ zh3|2*E8g<DH@@qo?tAmg-Tl(ny!a(<d*z$l@7{O51|~3j?W<t@1~|d|t*?I}{NDpx zc)=4MaD)MjU=3He!To)(hbc_r5t}%)C(bZ~H+*3ScX-7gW-*8*EMgd!*v2WYadJm% zTimkry+4j`kbR6@BKP>bM+R<^d7N7&{}#waMskx|yJRX)*{x8nGM0rLWhGx3tf(Eb zlo>2$FO#{;PR{a|b*ttxYZ=UKj&n!Vie@XjdCha?@|)SLXFQiV&3(SJpyh02KX-Z1 zfhP3$m=$eiMgzLgh=#PI?L6r{=ULK;&NQYsy=YB$n$wN;bf`f+=`Dl$(VtHBs8x;X zRlB;?u%@)AW1VO9-q+T*#`TkRZCzgT*4MnwHL!!dYhuHf*uU0wvT?m^TQ^(1&la|_ zjos^MQ`_3cj`p#Gt?goC8`;<HcD0!u?s8xI+}<5_w#~h6YKuGF-{v;E!R_vO%NyO^ zCU?E}-R^$V+u!#FxVryM@POlc+XFYa!V}K$csE?%0(ZE?AzpBMKit_CpE$<(U2%;= xJL42zxW}a(@`MND<S0+M%2&?vmb?7rFps&+XHN5)+x+G@&$-TbuJQ-~06Qx!CAR<o diff --git a/theme/oceanblue/pix/tab/right_active.gif b/theme/oceanblue/pix/tab/right_active.gif deleted file mode 100644 index bc7114eea4e3dfb612155108fe21cf0166bce179..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmV-y0+anmNk%w1VcZ2G0J8u9nVFgY|No|@rp(OD?d|Qnyu97r-K?yv2nYxO00000 z00000000000000000000A^8LW000O8EC2ui0Ne#4000F45Xniay*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuX#v z&*-#z&2GEj@VI<VuiNkVynfH``~QG}f`f#GhKGoWhX9O?j*pO$l9QB`mY0~Bnwy-R zo}ZwhqNAjxrl+W>s;jK6uCK7Mva__cwzs&sy1Tr+zQ4eX0tW*I83D-2%FE2n&d<=% z($mz{*4NnC+S}aS-rwNi;^XAy=I7|?>g(+7?(gvN^7Hid_V@Vt`uqII1O^2J2pDjo zpTUC&6DnNDu%W|;5F<*QNU@^Dix@L%#Ao1u0Am#YHi{fcvZTqAC{wCj$+D%(moQ`6 zGa#TqNSQcu>fFh*r_Y~2g9;r=R3(7}2PPC<%CxD|r%<Cxol3Q;RcZ%pBDl)6tJkk! z!-^eCwk%Tu1Gk!8%eJlCw{YXiom-YB0lIke>fOt?uiw9b&lM;TxUk{Fh!ZPb%vdG? z0F5I{o=my2<;$3<3CPU3v**vCLyK-oc(m!$s8g$6&6=Kp*05vCo=v-U=)1Oa>)y?~ zx9{J;g9{%{ytwh>$dfBy&b+zv=g^}|pH98H_3PNPYv0bjyZ7(l!;2qJzP$PK=+moT z&%V9;_weJ(pHIKO{rmXy>)+46zyJRL1}NYefCLt3;DHDxsNjMOHt67k5Jo8BgcKea G0RTIdJy)Lq diff --git a/theme/oceanblue/pix/tab/right_active_hover.gif b/theme/oceanblue/pix/tab/right_active_hover.gif deleted file mode 100644 index 6408c3afb771cf7459abd56af3276e6afa5fc217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmV+n0`vVxNk%w1VcZ2G0J8u9=H}+^?(Y2j{Q3F$!otG$_xG-@uBN7@-QC@_wY8a< zng9R)|Ns900000000000A^8LW000aCEC2ui0Ne#4000F4P{~QFy*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~C5Hq7!Du?2i>P!;ty-_xtai)odcWYXcuX#v z&*-#z&2GEj@VI<VuiNkVynfH``~QG}f`f#G3k3iO1P2EMPf&)Dl9QB`mY0~Bnwy-R zo}ZwhqNAjxfCvT$Oi!k*uCK7Mva__cwzs&sy1Tr82nvpny~D)C#>dFX%FE2n&d;;~ z2?oN@*4NnC+S}aS-rwNiSp^2c;^*k;>g(+7?(gu|1&s{x_V@Vt`uqI-{_zM71o%g= zpuvL(6DnND5RQ_D5F<*QNU@^Di@knf+{m$`$B!VnLyF`wz`)3pC{wCj$+G3Ok}hM) zoJq5$&6|A$n8eAmr_Y~2gQ^rjK&a89NRujEx=sKBrck3wol3Q;DFFkmYTe4UtJkk< z3V<C;wyfE+Xw#})%eJlCw{YXiolCc_-Me`6>fOt?uiw9b0}CEZxUk{Fh!ZPb%($`R z$B-jSo=my2<;$2eYu?Pcv**vCLyI0wy0q!js8g$6&APSg*RW&Do=v;9?c2C>>)y?~ Ox9{J;gA1<}0RTJDsVKPs diff --git a/theme/oceanblue/pix/tab/right_end.gif b/theme/oceanblue/pix/tab/right_end.gif deleted file mode 100644 index 4b5256885bddd19d260746ca99e5806788900a5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69 zcmZ?wbhEHbWMoicSj5V(cKw=XFP>hzadr3Z-7{y-{Qv(y0~jd&WMO1rU}ew&@jz-B Tn7JZ$ol#_-;JI3rlffDQhnp4| diff --git a/theme/oceanblue/pix/tab/right_hover.gif b/theme/oceanblue/pix/tab/right_hover.gif deleted file mode 100644 index 880d4a9d175c60c8bfab7532eec9b940257115c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2188 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 OR=fJuu=aEW0027!V6!Oz diff --git a/theme/oceanblue/styles.php b/theme/oceanblue/styles.php index 080b57c7271..97c011745b5 100644 --- a/theme/oceanblue/styles.php +++ b/theme/oceanblue/styles.php @@ -1,18 +1,738 @@ <?PHP /* $Id$ */ -/// Every theme should contain a copy of this script. It lets us -/// set up variables and so on before we include the raw CSS files. -/// The output of this script should be a completely standard CSS file. +/// We use PHP so we can do value substitutions into the styles -/// THERE SHOULD BE NO NEED TO MODIFY THIS FILE!! USE CONFIG.PHP INSTEAD. + $nomoodlecookie = true; + require_once("../../config.php"); + $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); +/// From here on it's nearly a normal stylesheet. +/// First are some CSS definitions for normal tags, +/// then custom tags follow. +/// +/// New classes always get added to the end of the file. +/// +/// Note that a group of standard colours are all +/// defined in config.php in this directory. The +/// reason for this is because Moodle uses the same +/// colours to provide oldstyle formatting for +/// browsers without CSS. +/// +/// You can hardcode colours in this file if you +/// don't care about this. - $lifetime = 600; // Seconds to cache this stylesheet - $nomoodlecookie = true; // Cookies prevent caching, so don't use them - require_once("../../config.php"); // Load up the Moodle libraries - $themename = basename(dirname(__FILE__)); // Name of the folder we are in - $forceconfig = optional_param('forceconfig', '', PARAM_FILE); // Get config from this theme - - style_sheet_setup(filemtime('styles.php'), $lifetime, $themename, $forceconfig); - ?> + + +body, td, th, li { + font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; +} + +th { + font-weight: bold; + background-color: <?PHP echo $THEME->cellheading?>; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +a:link { + text-decoration: none; + color: #0000CC; +} + +a:visited { + text-decoration: none; + color: #0000CC; +} + +a:hover { + text-decoration: underline; + color: #FF0000; +} + +form { + margin-bottom: 0; +} + + + + + +.highlight { + background-color: <?PHP echo $THEME->highlight?>; +} + +.headingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.navbar { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltable { +} + +.generaltableheader { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltablecell { +} + +.sideblock { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockheading { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.sideblockmain { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblocklinks { +} + +.sideblocklatestnews { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockrecentactivity { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.outlineheadingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.forumpost { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.forumpostpicture { +} + +.forumpostside { + -moz-border-radius-bottomleft: 20px; +} + +.forumpostmessage { + -moz-border-radius-bottomright: 20px; +} + + +.weeklyoutline { +} + +.weeklyoutlineside { +} + +.weeklyoutlinesidehighlight { +} + +.weeklyoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.weeklyoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklydatetext { + font-size: medium; + font-weight: bold; + color: <?PHP echo $THEME->cellheading2?>; +} + +.topicsoutline { +} + +.topicsoutlineside { +} + +.topicsoutlinesidehighlight { +} + +.topicsoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.topicsoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.siteinfo { +} + +.siteinfocontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; + padding: 10px; +} + + +.generalbox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.generalboxcontent { + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.noticebox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.noticeboxcontent { + text-align: center; +} + + +.feedbacktext { + color: <?PHP echo $THEME->cellheading2?>; +} + +a.dimmed:link { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:visited { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:hover { + text-decoration: underline; + color: red; +} + +.dimmed_text { + color: #AAAAAA; +} + +.forumpostheader { +} + +.forumpostheadertopic { +} + +.forumpostheaderpicture { +} + +.forumpostheadername { + font-size: small; +} + +.forumpostheaderreplies { + font-size: small; +} + +.forumpostheaderdate { + font-size: small; +} + +.logininfo { + font-size: x-small; +} + +.homelink { + font-size: x-small; +} + +.teacheronly { + color: #990000; +} + +.header { +} + +.headermain { + font-size: large; + font-weight: bold; +} + +.headermenu { +} + +.headerhome { +} + +.headerhomemain { + font-size: x-large; + font-weight: bold; +} + +.headerhomemenu { +} + +.categorybox { +} + +.categoryboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.categoryname { + font-size: larger; + font-weight: bold; +} + +.coursename { +} + +.coursebox { +} + +.courseboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.courseboxinfo { +} + +.courseboxsummary { +} + +a.autolink:link { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:visited { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:hover { + text-decoration: underline; + color: red; +} + +.userinfobox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; + margin-bottom: 5px; +} + +.userinfoboxside { + -moz-border-radius-bottomleft: 20px; +} + +.userinfoboxcontent { + -moz-border-radius-bottomright: 20px; +} + +.userinfoboxsummary { +} + +.userinfoboxlinkcontent { + -moz-border-radius-bottomright: 20px; +} + +.generaltab { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.generaltabselected { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + + +.forumheaderlist { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.smallinfo { +} + +.smallinfohead { + color: #555555; +} + +.tabledivider { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + border-left: 0px; + border-right: 0px; + border-top: 0px; +} + +.headingblockcontent { +} + +TABLE.calendarmini { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-size: .7em; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmonth { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmini TBODY TD { + text-align: center; + vertical-align: center; + width: 14%; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + -moz-border-radius: 4px; +} + +TABLE.calendarmonth TBODY TD { + width: 14%; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + vertical-align: top; +} + +.cal_event_global { + background-color: #99cc99; + border: 2px #99cc99 solid !important; +} + +.cal_event_course { + background-color: #ff9966; + border: 2px #ff9966 solid !important; +} + +.cal_event_group { + background-color: orange; + border: 2px orange solid !important; +} + +.cal_event_user { + background-color: #ffcc99; + border: 2px #ffcc99 solid !important; +} + +.cal_duration_global { + border-top: 2px #99cc99 solid !important; + border-bottom: 2px #99cc99 solid !important; +} + +.cal_duration_course { + border-top: 2px #ff9966 solid !important; + border-bottom: 2px #ff9966 solid !important; +} + +.cal_duration_user { + border-top: 2px #ffcc99 solid !important; + border-bottom: 2px #ffcc99 solid !important; +} + +.cal_duration_group { + border-top: 2px orange solid !important; + border-bottom: 2px orange solid !important; +} + +.cal_weekend { + color: red; +} + +.cal_today { + border: 2px black solid !important; +} + +TABLE.calendarmonth TBODY TD TABLE { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmonth TBODY TD TABLE TD { + border: none; +} + +TABLE.calendarmonth TBODY TD DIV { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmini THEAD TD { + font-size: .95em; + text-align: center; + vertical-align: center; +} + +TABLE.calendarmonth THEAD TD { + text-align: center; + vertical-align: center; + padding-bottom: 3px; + border-bottom: 2px <?PHP echo $THEME->borders?> solid; +} + +.sideblockmain .cal_event { + font-size: 0.8em; + font-weight: bold; +} +.sideblockmain .cal_event_date { + font-size: 0.6em; +} + +.mycalendar { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.mycalendar .cal_event { + font-weight: bold; +} +.mycalendar .cal_event_date { + font-size: 0.8em; +} + +.mycalendar TABLE.cal_filters { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_filters THEAD TD { + border-bottom: 2px <?PHP echo $THEME->borders?> solid; + margin: 0px; + padding: 2px; +} + + +.mycalendar .cal_event_table { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_event_table THEAD { + background-color: <?PHP echo $THEME->cellcontent?>; + text-align: center; + font-weight: bold; +} + +.sideblockmain HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.mycalendar HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.calendarexpired { + color: red; + font-weight: bold; +} + +.calendarreferer { + font-weight: bold; +} + +TD.cal_event_description { + width: 80%; + border-left: 2px <?php echo $THEME->borders?> solid; + vertical-align: top; + padding: 5px; +} + +.cal_popup_fg { + background-color: <?php echo $THEME->cellcontent?>; +} + +.cal_popup_bg { + border-top: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-left: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-right: 2px <?php echo $THEME->cellheading2 ?> solid; + border-bottom: 2px <?php echo $THEME->cellheading2 ?> solid; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + padding: 0px; + margin: 0px; +} + +.cal_popup_caption { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; +} + +.cal_popup_close { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; + margin-right: 5px; +} + +.sideblock .cal_controls { + text-align: center; + font-size: 9px; +} + +A IMG { + border: none; +} + +TABLE.formtable TD { + padding: 9px; +} + +.eventfull { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.eventfullheader { +} + +.eventfullpicture { + padding:8px; +} + +.eventfullside { + -moz-border-radius-bottomleft: 15px; +} + +.eventfullmessage { + -moz-border-radius-bottomright: 15px; +} + +#block_course_summary, #block_course_summary .sideblockmain { + -moz-border-radius: 20px; +} + +#block_course_summary .sideblockmain { + padding: 10px; +} + +.sitetopic { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 15px; +} + +.sitetopiccontent { + -moz-border-radius: 15px; +} + diff --git a/theme/oceanblue/styles_color.css b/theme/oceanblue/styles_color.css deleted file mode 100644 index 92a2da02328..00000000000 --- a/theme/oceanblue/styles_color.css +++ /dev/null @@ -1,717 +0,0 @@ -/******************************************************************* - styles_color.css - - This CSS file contains all color definitions like - background-color, font-color, border-color etc. - - Styles are organised into the following sections: - - core - header - footer - - admin - blocks - calendar - course - doc - login - message - tabs - user - - various modules - -*******************************************************************/ - -/*** - *** Core - ***/ - -a:link, -a:visited { - color:#0000FF; -} - -a.dimmed:link, -a.dimmed:visited { - color:#AAAAAA; -} - -a:hover { - color:#FF0000; -} - -a.autolink:link, -a.autolink:visited { - color:#000000; - background: #DDDDDD; -} - -a.autolink.glossary:hover { - cursor: help; -} - -body { - background-color:#AAAAFF; - color:#000066; -} - -th.header, -td.header, -div.header { - background-color:#EEEEEE; -} - -.navbar { - background-color:#EEEEEE; - border-color:#DDDDDD; -} -table.formtable tbody th { - background: none; -} -.highlight { - background-color:#AAFFAA; -} - -.highlight2 { - color:#AA0000; /* highlight missing terms in forum search */ -} - -/* Alternate rows even */ -.r0 { -} - -/* Alternate rows odd */ -.r1 { -} - -/* notification messages (can be good or bad) */ -.notifyproblem { - color:#660000; -} - -.notifysuccess { - color:#006600; -} - -.required { - background-color:#DDDDDD; -} - -.generalbox { - border-color:#9999FF; -} -.informationbox { - border-color:#9999FF; -} -.feedbackbox { - border-color: #888888; -} -.feedbackby { - background-color:#BBBBBB; -} - -.noticebox { - border-color:#9999FF; -} - -.errorbox { - color:#ffffff; - border-color:#660000; - background-color:#990000; -} - -.tabledivider { - border-color:#9999FF; -} - -.sitetopic { -} - -.sitetopiccontent { - border-color:#DDDDDD; - background-color:#FFFFFF; - border-color:#9999FF; -} - -.dimmed_text { - color:#AAAAAA; -} - -.teacheronly { - color:#990000; -} - -.unread { - background: #FFD991; -} - -.censoredtext { - color:#000000; - background:#000000; -} - - -/* kept for backward compatibility with some non-standard modules - which use these classes for various things */ -.generaltab, .generaltabinactive { - background-color:#BBBBBB; -} -.generaltabselected { - background-color:#DDDDDD; -} -.generaltabinactive { - color:#CCCCCC; -} - - - -/*** - *** Header - ***/ - -/*** - *** Footer - ***/ - -.homelink a:link, -.homelink a:visited, -.homelink a:hover { - background-color: #dddddd; - color: #000; - text-decoration: none; -} -.homelink a:link, -.homelink a:visited { - border-top: 1px solid #cecece; - border-bottom: 2px solid #4a4a4a; - border-left: 1px solid #cecece; - border-right: 2px solid #4a4a4a; -} -.homelink a:hover { - border-bottom: 1px solid #cecece; - border-top: 2px solid #4a4a4a; - border-right: 1px solid #cecece; - border-left: 2px solid #4a4a4a; -} - - -/*** - *** Admin - ***/ - -.admin .generalboxcontent { - background-color:#EEEEEE; -} -.admin .generalbox { - border-color:#BBBBBB; -} - -.admin .informationbox { - border-color:#BBBBBB; - background-color:#FFFFFF; -} -body#admin-index .c0 { - background-color: #FAFAFA; -} - - - -/*** - *** Blocks - ***/ - -.sideblock { - border-color:#9999FF; -} - -.sideblock .header { -} - -.sideblock .content { - background-color:#FCFCFC; -} - -.sideblock .content hr { - border-top-color:#999999; -} - -.sideblock .list { -} -.sideblock .header .hide-show img.hide-show-image { - background: url('../../pix/t/switch_minus.gif') no-repeat bottom; -} - -.sideblock.hidden .header .hide-show img.hide-show-image { - background: url('../../pix/t/switch_plus.gif') no-repeat bottom; -} - - - -/*** - *** Calendar - ***/ - -#calendar .maincalendar, -#calendar .sidecalendar { - border-color: #DDDDDD; -} - -#calendar .maincalendar table.calendarmonth th { - border-color: #000000; -} - -table.minicalendar { - border-color:#9999FF; -} - -#calendar .maincalendar .eventlist .event { - border-color:#9999FF; -} - -#calendar .maincalendar .eventlist .event .topic, -#calendar .maincalendar .eventlist .event .picture, -#calendar .maincalendar .eventlist .event .side { - background-color:#EEEEEE; -} - -#calendar .maincalendar table.calendarmonth ul.events-underway { - color:#999999; -} - -#calendar .event_global, -.minicalendar .event_global, -.block_calendar_month .event_global { - border-color:#2EBA0E !important; - background-color:#2EBA0E; -} - -#calendar .event_course, -.minicalendar .event_course, -.block_calendar_month .event_course { - border-color:#FF9966 !important; - background-color:#FF9966; -} - -#calendar .event_group, -.minicalendar .event_group, -.block_calendar_month .event_group { - border-color:#FBBB23 !important; - background-color:#FBBB23; -} - -#calendar .event_user, -.minicalendar .event_user, -.block_calendar_month .event_user { - border-color:#A1BECB !important; - background-color:#A1BECB; -} - -#calendar .duration_global, -.minicalendar .duration_global { - border-top-color:#2EBA0E !important; - border-bottom-color:#2EBA0E !important; -} - -#calendar .duration_course, -.minicalendar .duration_course { - border-top-color:#FF9966 !important; - border-bottom-color:#FF9966 !important; -} - -#calendar .duration_group, -.minicalendar .duration_group { - border-top-color:#FBBB23 !important; - border-bottom-color:#FBBB23 !important; -} - -#calendar .duration_user, -.minicalendar .duration_user { - border-top-color:#A1BECB !important; - border-bottom-color:#A1BECB !important; -} - -#calendar .weekend, -.minicalendar .weekend { - color:#FF0000; -} - -#calendar .today, -.minicalendar .today { - border-color:#000000 !important; -} - -.cal_popup_fg { - background-color:#FFFFFF; -} - -.cal_popup_bg { - border-color:#000000; - background-color:#FFFFFF; -} -#calendar .maincalendar .filters table, -#calendar .sidecalendar .filters table, -.block_calendar_month .filters table { - background-color: #EEEEEE; -} - - - -/*** - *** Course - ***/ - -/* course, entry-page, login */ -.headingblock { - border-color:#9999FF; -} - -/* course */ -.headingblock .outline { - border-color:#9999FF; -} - -#course-view .section td { - border-color:#9999FF; -} - -#course-view .section .content { -} - -#course-view .section .side { - background: #EEEEEE; -} - -#course-view .section .left { -} - -#course-view .section .right { -} - -#course-view .current .side{ - background: #FFD991; -} - -#course-view .topics { -} - -#course-view .weeks { -} - -#course-view .section .spacer { -} - -#course-view .section .weekdates { - color:#FFFFFF; -} - -.categoryboxcontent, -.courseboxcontent { - border-color:#9999FF; - background: #FFFFFF; -} -body#course-user .section { - border-color:#AAAAAA; -} - - - -/*** - *** Doc - ***/ - -/*** - *** Login - ***/ - -.loginbox .content { - border-color:#9999FF; - background: #EEEEEE; -} - - -/*** - *** Message - ***/ - -table.message_search_results td { - border-color:#9999FF; -} - -.message .author { - color: #999999; -} - -.message .time { - color: #999999; -} - -.message .content { -} - - -/*** - *** Tabs - ***/ - -.tablink a:link, -.tablink a:visited { - color:#000066; -} - -.selected .tablink a:link, -.selected .tablink a:visited { - color:#000000; -} -.tabs .side { - border-color: #AAAAAA; -} -.tabrow td { - background:url(pix/tab/left.gif) top left no-repeat; -} -.tabrow td .tablink { - background:url(pix/tab/right.gif) top right no-repeat; -} -.tabrow td:hover { - background-image:url(pix/tab/left_hover.gif); -} -.tabrow td:hover .tablink { - background-image:url(pix/tab/right_hover.gif); -} -.tabrow .last span { - background:url(pix/tab/right_end.gif) top right no-repeat; -} -.tabrow .selected { - background:url(pix/tab/left_active.gif) top left no-repeat; -} -.tabrow .selected .tablink { - background:url(pix/tab/right_active.gif) top right no-repeat; -} -.tabrow td.selected:hover { - background-image:url(pix/tab/left_active_hover.gif); -} -.tabrow td.selected:hover .tablink { - background-image:url(pix/tab/right_active_hover.gif); -} - - -/*** - *** User - ***/ - -.userpicture { - background:#EEEEEE; -} - -.userinfobox { - border-color: #DDDDDD; - background-color: #F7F7F7; -} -.groupinfobox { - border-color: #DDDDDD; - background-color: #FCFCFC; -} - - -/*** - *** Modules: Assignment - ***/ - -.assignmentsubmission { -} - -.assignmentnew .assignmentfeedback{ - background-color:#DDDDDD; -} - -.assignmentold .assignmentfeedback{ - background-color:#BBBBBB; -} - -.assignmentheading { - background-color:#BBBBBB; -} - - -/*** - *** Modules: Chat - ***/ - -/*** - *** Modules: Choice - ***/ - -/*** - *** Modules: Forum - ***/ - -.forumheaderlist, -.forumpost { - border-color:#9999FF; -} - -.forumpost .content { - background: #FFFFFF; -} - -.forumpost .left { - background:#EEEEEE; -} - -.forumpost .topic { - border-bottom-color: #EEEEEE; -} - -.forumpost .starter { - background:#DDDDDD; -} - -.forumheaderlist .discussion .starter { - background:#DDDDDD; -} - -.forumheaderlist td { - border-color: #FFFFFF; -} - -.sideblock .post .head { - color:#555555; -} - -.forumthread .unread { - background: #FFD991; -} -#mod-forum-discuss .forumpost { - background: none; -} - -#mod-forum-discuss .forumpost.unread .content { - border-color: #FFD991; -} - -#mod-forum-discuss .forumthread .unread { -} - -#mod-forum-index .unread { -} - - -/*** - *** Modules: Glossary - ***/ - -.entryboxheader { - border-color: #BBBBBB; -} - -.entrybox { - border-color: #BBBBBB; -} - -.entry { -} - -.glossarypost { - border-color: #DDDDDD; -} - -.glossarypost .entryheader, -.glossarypost .entryapproval, -.glossarypost .picture, -.glossarypost .entryattachment, -.glossarypost .left { - background-color: #F0F0F0; -} - -.glossarycomment { - border-color: #DDDDDD; -} - -.glossarycomment .entryheader, -.glossarycomment .picture, -.glossarycomment .left { - background-color: #F0F0F0; - -} - -#mod-glossary-report .generalbox .teacher { - background: #F0F0F0; -} - -.categoryheader { - background-color: #dddddd; -} - -.glossaryformatheader { - background-color: #dddddd; -} - - -/*** - *** Modules: Journal - ***/ - -#mod-journal-view .feedbackbox .left, -#mod-journal-view .feedbackbox .entryheader { - background-color: #dddddd; -} - -/*** - *** Modules: Label - ***/ - -/*** - *** Modules: Lesson - ***/ - -/*** - *** Modules: Quiz - ***/ - -body#mod-quiz-report table#attempts td { - border-color: #dddddd; -} -body#mod-quiz-report table#attempts .r1 { - background-color: #eeeeee; -} - - -/*** - *** Modules: Resource - ***/ - -/*** - *** Modules: Scorm - ***/ - -/*** - *** Modules: Survey - ***/ - -#mod-survey-view .r0 { - background-color: #EEEEEE; -} -#mod-survey-view .r1 { - background-color: #DDDDDD; -} - - -/*** - *** Modules: Wiki - ***/ - -/*** - *** Modules: Workshop - ***/ - -.workshoppostpicture { - background-color:#FEE6B9; -} - -.workshopassessmentheading { - background-color:#DDDDDD; -} - - - diff --git a/theme/oceanblue/styles_fonts.css b/theme/oceanblue/styles_fonts.css deleted file mode 100644 index 0f26a1604a9..00000000000 --- a/theme/oceanblue/styles_fonts.css +++ /dev/null @@ -1,506 +0,0 @@ -/******************************************************************* - styles_color.css - - This CSS file contains all font definitions like family, size, - weight, text-align, letter-spacing etc. - - Styles are organised into the following sections: - core - header - footer - - admin - blocks - calendar - course - doc - login - message - tabs - user - - various modules - -*******************************************************************/ - - -/*** - *** Core - ***/ - -.clearer { - font-size:1px; -} - -body, td, th, li { - font-family:"Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - font-size:0.95em; -} - -th { - font-weight: normal; -} - -a:link, -a:visited { - text-decoration:none; -} - -a:hover { - text-decoration: underline; -} - -h1.main, -h2.main, -h3.main, -h4.main, -h5.main, -h6.main { - font-weight:normal; -} - -h1 { - font-size:1.7em; -} - -h2 { - font-size:1.4em; -} -h3 { - font-size:1.1em; -} -h4 { - font-size:1.0em; -} - -.bold { - font-weight:bold; -} - -.warning { - font-weight: normal; - font-style: italic; -} - -.errorbox .title { - font-weight: normal; - font-size: 1.2em; - text-align: center; -} - -.pagingbar .title { - font-weight: normal; -} -.pagingbar .thispage { - font-weight: normal; -} - -.categorybox .category, -.categorybox .category { - font-size:1.2em; - font-weight:normal; -} - -.helplink { - font-size:0.8em; -} - -.headingblock { - font-weight: normal; -} - -.headingblock .link { - font-size: 0.9em; -} - -.files .file { - font-size: 0.9em; -} - -.files .folder { - font-size: 0.9em; -} - -.files .folder .size { - font-weight: normal; -} - - -/*** - *** Header - ***/ - -.headermain { - font-weight:normal; -} - -#header-home .headermain { - font-size:1.5em; -} - -#header .headermain { - font-size:1.3em; -} - -.breadcrumb { - font-size:0.9em; - font-weight:normal; -} - -.logininfo, -#header-home .headermenu font { - font-size:x-small; -} - - -/*** - *** Footer - ***/ - -.homelink { -} - - -.performanceinfo { - font-size: 0.6em; -} - - -/*** - *** Admin - ***/ - -table.formtable tbody th { - font-weight: normal; - text-align: right; -} - - -/*** - *** Blocks - ***/ - -.sideblock .content h3, -.sideblock .content h2 { - font-size:1.0em; -} -.sideblock .header .commands { - font-size: 0.75em; -} - -.sideblock .footer { - font-size:0.75em; -} - -.sideblock .head, -.sideblock .info { - font-size: 0.85em; -} - -.sideblock .date { - font-style: italic; -} - - - -/*** - *** Calendar - ***/ - -#calendar .maincalendar .eventlist .event .referer { - font-weight:normal; -} - -#calendar .maincalendar .eventlist .event .course { - font-size:0.8em; -} - -#calendar .maincalendar .eventlist .event .description .commands { - text-align: right; -} - -#calendar .maincalendar table.calendarmonth td { - font-size:0.8em; -} - -#calendar div.header -{ - font-weight:normal; -} - -#calendar .sidecalendar .filters { - font-size:0.75em; -} - -#calendar .maincalendar .controls { - font-size:1.2em; -} - -#calendar .maincalendar .day { - font-weight: normal; -} - -table.minicalendar { - font-size:0.85em; -} - -.cal_popup_caption { - font-family:sans-serif; - font-size:0.8em; - font-weight:normal; -} - -.cal_popup_close { - font-family:sans-serif; - font-size:0.8em; - font-weight:normal; -} -#calendar .maincalendar .calendar-controls .current { - font-weight: normal; -} - - -/*** - *** Course - ***/ - -.activitydate, .activityhead { - font-size:0.7em; -} - -.weeklydatetext { - font-size:0.9em; - font-weight:normal; -} - -.coursebox .info { - font-size:1em; -} - -.coursebox .teachers, -.coursebox .cost { - font-size:0.8em; -} - -.coursebox .summary { - font-size:0.7em; -} - - -#course-view .section .left { - font-weight:normal; -} - - - -/*** - *** Doc - ***/ -body#doc-contents h1 { - font-size: 1em; -} -body#doc-contents ul { - font-size: 0.8em; -} - - - -/*** - *** Login - ***/ - - -/*** - *** Message - ***/ - -.message_summary_link { - font-size:small; -} - -.message_link { - font-size:x-small; -} - -.message_form { - font-size:0.78em; -} - -.message_heading { - font-size:medium; - font-weight:normal; -} - -.message_date, -.message_contact, -.message_summary { - font-size:small; -} - -.message_small_note, -.message_pix { - font-size:x-small; -} - -.message .author { - font-weight: normal; -} - -.message .time { - font-style: italic; -} - -.message .content { -} - -#message-user .commands span { - font-size:0.7em; - white-space:nowrap; -} - -#message-user .name { - font-weight: normal; - font-size:1.1em; -} - - -/*** - *** Tabs - ***/ -.tablink a:hover { - text-decoration: none; -} - - -/*** - *** User - ***/ - -.userinfobox .username { - font-weight: normal; -} - -.userinfobox .links { - font-size: 0.7em; -} - - -/*** - *** Modules: Assignment - ***/ - -/*** - *** Modules: Chat - ***/ - -/*** - *** Modules: Choice - ***/ - -/*** - *** Modules: Forum - ***/ - -.forumnodiscuss{ - font-weight:normal; -} -.forumpost .topic .subject { - font-weight: normal; -} -.forumpost .topic .author { - font-size: 0.8em; -} -.forumheaderlist .discussion .lastpost { - font-size: 0.7em; -} -body#mod-forum-search .introcontent { - font-weight:normal; -} - - - -/*** - *** Modules: Glossary - ***/ - -.glossarypost .commands { - font-size: 0.7em; -} -.glossarypost .entryheader .author { - font-size: 0.7em; - font-style: italic; -} -.concept { - font-weight: normal; -} -.glossarycomment .time { - font-size: 0.7em; - font-style: italic; -} -.entrylowersection .aliases { - font-size: 0.8em; -} -.entrylowersection .icons, -.entrylowersection .ratings { - font-size: 0.8em; -} - - - -/*** - *** Modules: Journal - ***/ -#mod-journal-view .lastedit, -#mod-journal-view .editend { - font-size: 0.7em; -} -#mod-journal-view .author { - font-size: 1em; - font-weight: normal; -} -#mod-journal-view .time { - font-size: 0.7em; - font-style: italic; -} -#mod-journal-view .grade { - font-weight: normal; - font-style: italic; -} - -/*** - *** Modules: Label - ***/ - -/*** - *** Modules: Lesson - ***/ - -/*** - *** Modules: Quiz - ***/ - -.editorhelptext { - font-size:x-small; -} - - -/*** - *** Modules: Resource - ***/ - -/*** - *** Modules: Scorm - ***/ - -/*** - *** Modules: Survey - ***/ - -/*** - *** Modules: Wiki - ***/ - -/*** - *** Modules: Workshop - ***/ - diff --git a/theme/oceanblue/styles_layout.css b/theme/oceanblue/styles_layout.css deleted file mode 100644 index 7cff285da4a..00000000000 --- a/theme/oceanblue/styles_layout.css +++ /dev/null @@ -1,1260 +0,0 @@ -/******************************************************************* - styles_layout.css - - This CSS file contains all layout definitions like positioning, - floats, margins, paddding, borders etc. - - Styles are organised into the following sections: - core - header - footer - - admin - blocks - calendar - course - doc - login - message - tabs - user - - various modules - -*******************************************************************/ - - -/*** - *** Core - ***/ - -h1.main, -h2.main, -h3.main, -h4.main, -h5.main, -h6.main { - text-align: center; -} - -#layout-table { - width:100%; - border-collapse:separate; - margin-top: 8px; -} - -#layout-table #left-column, -#layout-table #middle-column, -#layout-table #right-column -{ - vertical-align:top; -} - -#layout-table #middle-column { - padding-left:12px; - padding-right:12px; -} - -.clearer { - clear:both; - margin:0px; - padding:0px; - height:1px; - border:none; - background:transparent; -} - -.continuebutton { - text-align: center; -} - -form { - margin-bottom:0px; -} - -table { - border-spacing: 0px; - border-collapse: collapse; -} - -a img { - border:none; -} -.notifyproblem { - text-align: center; - padding: 10px; -} - -.notifysuccess { - text-align:center; - padding: 10px; -} - -.generalbox { - border-width:1px; - border-style:solid; -} - -.generalbox#intro { - text-align:center; -} - -.noticebox { - border-width:1px; - border-style:solid; -} -.errorbox { - border-width:1px; - border-style:solid; - margin: 1em 15%; - width: 70%; -} -.errorbox .title { - padding: 5px; -} -.informationbox { - border-width:1px; - border-style:solid; -} -.feedbackbox { - border-width:1px; - border-style:solid; -} -.feedbackby { -} -.feedback { -} -.initialbar { - text-align: center; -} - -#help .indent { - margin-left:3em; -} - -.tabledivider { - border-width:1px; - border-style:solid; - border-left:0px; - border-right:0px; - border-top:0px; -} - -.sitetopic { - margin-bottom:20px; -} - -.sitetopiccontent { - border-width:1px; - border-style:solid; -} - -.pagingbar { - text-align:center; -} -.pagingbar a { - padding-left: 10px; -} -.pagingbar .thispage { - padding-left: 10px; -} - -table.formtable { - margin: auto; -} - -table.formtable tbody th { - vertical-align: top; -} - -table.formtable tbody td, -table.formtable tbody th -{ - padding: 5px; -} - -.paging { - text-align: center; - margin: 10px 0px 10px 0px; -} - -.unread { - padding-right:2px; -} - -.cell { - vertical-align: top; -} - - -/*** - *** Header - ***/ - -#header-home { -} - -#header { -} - -.headermain { - float:left; -} - -.headermenu { - float:right; - text-align:right; -} - -.navbar { - width:100%; - background-image:url(gradient.jpg); - padding:3px 0.5em; - height:1.3em; - border-width:1px; - border-style:solid; -} - -.navbar .breadcrumb { - float:left; - margin:0.2em 0em; -} - -.navbar .navbutton, -.navbar .menu { - float:right; -} - -#footer .navbar { - margin-top: 4em; -} - -.reportlink { - text-align:right; -} - - -/*** - *** Footer - ***/ - -#footer { - text-align:center; -} - -.homelink { - margin: 1em 0; -} - -.homelink a { - padding-left:1em; - padding-right:1em; -} - -.performanceinfo { - margin: 2em; -} - -.performanceinfo span { - display: block; -} - - - -/*** - *** Admin - ***/ - -body#admin-index .c0 { - vertical-align: top; -} - -body#admin-modules table.generaltable td.cell, -body#admin-modules .generaltablecell { - padding-top: 2px; - padding-bottom: 2px; -} - -body#admin-blocks table.generaltable td.cell, -body#admin-blocks .generaltablecell { - padding-top: 1px; - padding-bottom: 1px; -} - -body#admin-config .confighelp { - display: block; - padding-bottom: 20px; -} - - -/*** - *** Blocks - ***/ - -.sideblock .content h3, -.sideblock .content h2 { - text-align: left; -} - -.sideblock { - width: 100%; - margin-bottom:1em; - border-collapse:separate; - border-width:1px; - border-style:solid; -} - -.sideblock .header { - background-image:url(gradient.jpg); - text-align: left; - padding:4px; -} - -.sideblock .header .hide-show { - float:right; -} - -.sideblock .header .hide-show img.hide-show-image { - height:11px; - width:11px; - margin-top:0.25em; -} - -.sideblock .header .commands { - float: right; - margin-top: 0.3em; -} - -.sideblock .header .title { - float: left; -} - -.sideblock .header .commands a { - margin: 0px 2px; -} - -.sideblock .content { - padding:4px; -} - -.sideblock .content hr { - height:1px; - margin-top:4px; - margin-bottom:4px; - border:none; - border-top:1px solid; -} -.sideblock.hidden .content { - display: none; -} - -.sideblock .list { - width: 100%; -} - -.sideblock .list .c0{ - padding: 2px; -} - -.sideblock .footer { - margin-top:4px; - text-align:center; -} -.sideblock .header .icon.hide, -.sideblock .header .icon.edit { - margin-right: 6px; -} - -.sideblock .head { - margin-top: 5px; -} - - - - -/*** - *** Calendar - ***/ - -#calendar { - width: 100%; - border-spacing: 5px; - border-collapse: separate; -} - -#calendar .maincalendar, -#calendar .sidecalendar -{ - vertical-align: top; - border: 1px solid; -} - -#calendar .sidecalendar { - width: 25%; -} - -#calendar .maincalendar table.calendarmonth { - border-collapse: separate; - margin: 0px auto; - width: 98%; -} - -#calendar .maincalendar table.calendarmonth th { - padding:10px; - border-bottom:2px solid; -} - -#calendar .maincalendar table.calendarmonth td { - height: 5em; - padding-left: 4px; - padding-top: 4px; - line-height:1.2em; -} - -#calendar .maincalendar table.calendarmonth td, -table.minicalendar td, -table.minicalendar th { - width:14%; - vertical-align:top; -} -table.minicalendar td { - text-align: center; -} -#calendar .maincalendar table.calendarmonth td table td { - height: auto; -} - -#calendar div.header -{ - padding: 5px; -} - -#calendar .maincalendar .buttons { - float: right; -} - -#calendar .maincalendar .filters table, -#calendar .sidecalendar .filters table -{ - border-collapse:separate; - border-spacing: 2px; - padding: 2px; - width: 100%; -} - -#calendar .maincalendar .filters { - padding: 0px 10px; -} - -#calendar .sidecalendar .filters { - padding: 5px; -} - -#calendar .maincalendar .controls { - clear:both; - padding:10px; -} - -#calendar .maincalendar table.calendarmonth ul.events-new, -#calendar .maincalendar table.calendarmonth ul.events-underway -{ - padding:0px; - margin:0px; - list-style-type:none; -} - -#calendar .maincalendar table.calendarmonth ul li { - margin-top: 4px; -} - -table.minicalendar { - width: 100%; - margin:10px auto; - padding:2px; - border-width:1px; - border-style:solid; - border-collapse:separate; - border-spacing:1px !important; -} - -table.minicalendar th { - padding: 0px 2px; -} - -#calendar .maincalendar .eventlist { - padding: 10px; -} - -#calendar .maincalendar .eventlist .topic { - padding: 5px; - border-style:solid; - border-width: 0px; - border-bottom-color: #EEEEEE; - border-bottom-width: 1px; -} - -#calendar .maincalendar .eventlist .event { - width:100%; - margin-bottom:10px; - border-spacing:0px; - border-collapse:separate; - border-width:1px; - border-style:solid; -} - -#calendar .maincalendar .eventlist .event .name { - float:left; -} - -#calendar .maincalendar .eventlist .event .course { - float:left; - clear:left; -} - -#calendar .maincalendar .eventlist .event .date { - float:right; -} - -#calendar .maincalendar .eventlist .event .description .commands { - width:100%; -} - -#calendar .maincalendar .eventlist .event .description { - padding:5px; -} - -#calendar .maincalendar .eventlist .event .picture { - padding:8px; -} - -#calendar .maincalendar .eventlist .event .side { - width:32px; -} - -#calendar #selecteventtype table { - margin:auto; -} - -#calendar .event_global, -#calendar .event_course, -#calendar .event_group, -#calendar .event_user, -.minicalendar .event_global, -.minicalendar .event_course, -.minicalendar .event_group, -.minicalendar .event_user { - border:2px solid !important; -} - -#calendar .duration_global, -#calendar .duration_course, -#calendar .duration_group, -#calendar .duration_user, -.minicalendar .duration_global, -.minicalendar .duration_course, -.minicalendar .duration_group, -.minicalendar .duration_user -{ - border-top:2px solid !important; - border-bottom:2px solid !important; -} - -#calendar .today, -.minicalendar .today { - border:2px solid !important; -} - -.cal_popup_bg { - padding:0px; - margin:0px; - border:1px solid; -} - -.cal_popup_close { - margin-right:5px; -} - -.cal_popup_caption { - border-width:0px 0px 1px 0px; - border-style:solid; - padding-bottom:2px; -} - -table.calendar-controls { - width: 100%; -} - -table.calendar-controls .previous, -table.calendar-controls .next -{ - width: 12%; -} -table.calendar-controls .previous { - text-align: left; -} -table.calendar-controls .current { - text-align: center; -} -table.calendar-controls .next { - text-align: right; -} - -#calendar .maincalendar .calendar-controls .previous, -#calendar .maincalendar .calendar-controls .next -{ - width: 30%; -} - - -/*** - *** Course - ***/ -.activitydate, .activityhead { - text-align:center; -} - -#course-view .section td { - vertical-align:top; -} - -#course-view .section .content { - padding:5px; - border-style:solid; - border-width:1px; - border-left:0px; - border-right:0px; -} - -#course-view .section .side { - padding:5px; - border-style:solid; - border-width:1px; -} - -#course-view .section .left { - border-right:0px; - text-align:center; - width: 1.5em; -} - -#course-view .section .right { - border-left:0px; - text-align:center; - width: 1.5em; -} - -#course-view .current .side { -} - -#course-view .topics { - margin-top: 9px; -} - -#course-view .weeks { - margin-top: 9px; -} - -#course-view .section .spacer { - height:0.5em; -} - -#course-view .section .weekdates { -} - -.section .activity img.activityicon { - vertical-align:middle; - height:16px; - width:16px; -} - -.section img.movetarget { - height:16px; - width:80px; -} - -body#course-view .unread { - margin-left: 3em; -} - -body#course-enrol .generalbox { - margin-top: 20px; -} -body#course-enrol .coursebox { - margin-top: 20px; -} - -body#course-user .graph { - text-align: center; -} - -body#course-user .section, -body#course-user .content { - margin-left: 30px; - margin-right: 30px; -} - -body#course-user .section { - border-width:1px; - border-style:solid; - padding:10px; - margin-bottom: 20px; -} - -body#course-user .section h2 { - margin-top: 0px; -} - - -.headingblock { - background-image:url(gradient.jpg); - border-width:1px; - border-style:solid; - padding:5px; -} - -.headingblock .link { - text-align:right; -} - -body#site-index .headingblock { - margin-bottom: 8px; -} - -.coursebox { - margin-bottom: 8px; -} - -.categoryboxcontent, -.courseboxcontent { - border-width:1px; - border-style:solid; -} - - - -/*** - *** Doc - ***/ - -body#doc-contents h1 { - margin: 1em 0px 0px 0px; -} - -body#doc-contents ul { - list-style-type: none; - margin: 0px; - padding: 0px; - width: 90%; -} - - -/*** - *** Login - ***/ - -.loginbox .content { - border-width:1px; - border-style:solid; - padding:15px; -} - -.loginbox .header { - background-image:url(gradient.jpg); -} - -/*** - *** Message - ***/ - -.message_link { - vertical-align:middle; -} - -.message_search_results { - border-collapse:collapse; - border-spacing:0px; -} - -table.message_search_results td { - padding:5px; - border-width:1px; - border-style:solid; -} -.message_summary_link { - text-align:right; -} -.message_heading { - text-align:center; -} - -#message-user .commands span { - margin-left:10px; - margin-right:10px; -} - - -/*** - *** Tabs - ***/ - -.tabs { - width: auto; - margin-bottom: 15px; -} -.tabs .side { - border-style: solid; - border-width: 0px 0px 1px 0px; - width: 50%; -} - -.tabrow { - border-collapse:collapse; - width:100%; - margin:0; -} -.tabrow td { - height:34px; - padding:0 0 0 14px; -} -.tabrow th { - display:none; -} -.tabrow td .tablink { - display:block; - height:34px; - line-height:38px; - padding:0 14px 0 0; - text-align:center; - white-space:nowrap; - text-decoration:none; -} -.tabrow .last span { - display:block; - padding:0px 1px 0px 0px; -} - -.tabrow .selected .tablink { - line-height:38px; -} - - -/*** - *** User - ***/ - -.userinfobox { - margin-bottom:5px; - border-width: 1px; - border-style: solid; - border-collapse: separate; -} - -.userinfobox .left { - padding: 10px; - width: 100px; - vertical-align: top; -} - -.userinfobox .content { - padding: 10px; - vertical-align: top; -} - -.userinfobox .links { - width: 100px; - padding: 5px; - vertical-align: bottom; -} - -.userinfobox .list td { - padding: 3px; -} - -.userinfobox .username { - padding-bottom: 20px; -} - - -table.userinfobox { - width: 80%; - margin-left: 10%; - margin-right: 10%; -} - -table.groupinfobox { - width: 60%; - margin-left: 20%; - margin-right: 20%; - border-width:1px; - border-style:solid; - margin-bottom: 20px; -} - -.groupinfobox .left { - padding: 10px; - width: 100px; - vertical-align: top; -} -body#user-index #longtimenosee { - text-align:center; -} - - -/*** - *** Modules: Assignment - ***/ - -/*** - *** Modules: Chat - ***/ - -/*** - *** Modules: Choice - ***/ - -/*** - *** Modules: Forum - ***/ - -.forumheaderlist, -.forumpost { - border-width:1px; - border-style:solid; - border-collapse:separate; -} - -.forumpost { - margin-top: 15px; -} - -.forumpost .topic { - padding: 4px; - border-style:solid; - border-width: 0px; - border-bottom-width: 1px; -} - -.forumpost .commands { - padding-top: 0.5em; - text-align:right; -} - -.forumpost .ratings { - padding-top: 1em; - text-align:right; -} - -.forumpost .content { - padding: 4px; -} - -.forumpost .footer { - padding-top: 0.5em; - text-align:right; -} - -.forumpost .link { - padding-top: 0.5em; - text-align:right; -} - -.forumpost .left { - width: 35px; - padding: 4px; - text-align: center; - vertical-align: top; -} - -.mod-forum .indent { - margin-left: 30px; -} - -body#user-view .forumpost, -.course .forumpost { - width: 100%; -} - -body#mod-forum-search .c0 { - text-align: right; -} - -body#mod-forum-search .introcontent { - padding: 15px; -} - -.forumolddiscuss { - text-align: right; -} - -.forumheaderlist { - width: 100%; -} - -.forumheaderlist td { - border-width:1px 0px 0px 1px; - border-style:solid; -} - -.forumheaderlist .replies { - text-align: center; -} - -.forumheaderlist .picture { - width: 35px; -} - -.forumheaderlist .discussion .starter { - vertical-align: middle; -} - -.forumheaderlist .lastpost { - white-space: nowrap; - text-align: right; -} - -.forumheaderlist .discussion .author { - white-space: nowrap; -} -.forumolddiscuss { - text-align:right; -} -.forumaddnew, -.forumnodiscuss, -.noticeboxcontent { - text-align:center; -} -#mod-forum-view .unread { - padding-left: 3px; - padding-right: 3px; -} -#mod-forum-discuss .forumpost.unread .content { - border-style: solid; - border-width: 2px; -} - - -/*** - *** Modules: Glossary - ***/ - -.glossarypost .commands { - width: 200px; - white-space: nowrap; -} - -.entryboxheader { - border-width: 1px 1px 0px 1px; - border-style: solid; -} - -.entrybox { - border-width: 0px 1px 1px 1px; - border-style: solid; -} - -.glossarypost { - width: 95%; - border-width:1px; - border-style:solid; - border-collapse:separate; - margin-bottom: 5px; - text-align: left; -} - - -.entrylist { - border-width:0px; -} - -.entrylowersection { - padding-top: 10px; -} -.entrylowersection table{ - width: 100%; -} -.entrylowersection .aliases { - text-align:center; -} -.entrylowersection .icons, -.entrylowersection .ratings { - text-align:right; - padding-right: 5px; -} -.entrylowersection .ratings { - padding-bottom: 2px; -} -.categoryheader { - width: 95%; -} -.glossaryformatheader { - width: 90%; -} - -.glossarypost .entry { - padding: 3px; -} - -.glossarypost .picture { - width: 35px; -} - -.glossarycomment { - border-width:1px; - border-style:solid; - border-collapse:separate; - margin-bottom: 5px; - text-align: left; -} - - -.glossarycomment .entry { - padding: 3px; -} - -.glossarycomment .picture { - width: 35px; -} - -.glossarycomment .icons { - text-align: right; -} - -.glossarydisplay { - width: 70%; -} - -.glossarydisplay .tabs { - width: 100%; -} - -.glossarydisplay .separator { - width: 4px; -} - -.glossarydisplay .tabs .selected, -.glossarydisplay .tabs .inactive, -.glossarydisplay .tabs .general { -} - -.glossarypopup { - width: 95%; -} - -.glossaryapproval { - width: 100%; -} - -.mod-glossary .tabs { - margin-bottom: 0px; -} -.mod-glossary .tabs .side { - border-style: none; - border-width: 0px; - width: auto; -} - - -/*** - *** Modules: Journal - ***/ -#mod-journal-view .lastedit, -#mod-journal-view .editend { - margin: 5px; - text-align: center; -} -#mod-journal-view .feedbackbox { - width: 75%; - border-collapse: separate; -} -#mod-journal-view .entrycontent { - padding: 3px; -} -#mod-journal-view .picture { - width: 35px; -} -#mod-journal-view .grade { - text-align: right; -} -#mod-journal-view .info { - margin-bottom: 5px; - text-align: right; -} - - -/*** - *** Modules: Label - ***/ - -/*** - *** Modules: Lesson - ***/ - -/*** - *** Modules: Quiz - ***/ - -.feedbacktext { - display:block; -} - -body#mod-quiz-report table#attempts, -body#mod-quiz-report table#commands -{ - width: 80%; - margin: auto; -} -body#mod-quiz-report table#attempts { - margin: 20px auto; -} -body#mod-quiz-report table#attempts .header, -body#mod-quiz-report table#attempts .cell -{ - padding: 4px; -} -body#mod-quiz-report table#attempts .header .commands { - display: inline; -} -body#mod-quiz-report table#attempts .picture { - width: 40px; -} -body#mod-quiz-report table#attempts td { - border-left-width: 1px; - border-right-width: 1px; - border-left-style: solid; - border-right-style: solid; -} -.feedbacktext { - text-align:right; -} -body#mod-quiz-report table#attempts .header { - text-align: left; -} -body#mod-quiz-report table#attempts .picture { - text-align: center !important; -} -body#mod-quiz-report .controls { - text-align: center; -} - - - -/*** - *** Modules: Resource - ***/ - -/*** - *** Modules: Scorm - ***/ - -/*** - *** Modules: Survey - ***/ - -/*** - *** Modules: Wiki - ***/ - -/*** - *** Modules: Workshop - ***/ - diff --git a/theme/orangewhite/README.html b/theme/orangewhite/README.html deleted file mode 100644 index 7f06ed516b4..00000000000 --- a/theme/orangewhite/README.html +++ /dev/null @@ -1,7 +0,0 @@ -<h3>Moodle Theme ORANGEWHITE</h3> - -<p>A custom Moodle theme by <strong>Urs Hunkler, unodo</strong>.</p> - -<p>The design approach of this theme directs more to the known page layout with navigation left and information right and less to the overall equal blocks.</p> - -<p>This theme is not connected to the standard theme, actual changes in Moodle development can lead to inconsistencies in the Moodle page design.</p> diff --git a/theme/orangewhite/colorstrip.gif b/theme/orangewhite/colorstrip.gif deleted file mode 100644 index 371bb3697b5656ecd35710e2d87578e22a062c99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 zcmV+u1nm1qNk%w1VF(8(0HOc@|F%2-+nxXI&i}}4|Kzs++MNIZ00000EC2ui00;*t z000C32)f+<Fv>}*y>jTyyZ>M)j$~<`XsWJk>%MR-&uU@cc&_h!@BhG{a7Zi~kI1BQ z$!t2G(5Q4uty-_xtai)odcWYXcuX#rG3c~<%~sRi@VI<VuiNkVxp~j;`~QG}f`f#G zhKGoWii?bmjzVpbl9QAfd6$@(nwy-Ro*<8*qNAjxrl+W>s;jK6uCGRwva_@ppSQTV zy1Tr2u)n~;!o$SH#>dFX%89kj&d<Hk($mz{xy#tu+S}aS-rwNi;ylmg=9AXx>g(+7 zC*$z(^7Hid_V@VU=llG&?*9M-3dEJKpuvL(6DnNDuwjpW5F<VqNU@^Di!vN)+{m&2 zqsNaRLz<CDQX<BaC{wB&AhM;)moQ_>oLR4=O@1qL>fD)*rq7>1g9;r=)X&YM<#;Mx z%Cu9_r%<Cxok~?G(yO(aYTe2ePSvkq!-^eCmK)ZymAa~3%hp8Mw{YXiol6%G+Pjh3 z>fNiiuHV0a0}CF!1FvB>d=o2XO1QD($B-k_JWTn*;>(y-O5V)5v**w7DvO?wxwPql zpi`?}&APRz0I*}ro=v;9?c2C>>)y?~H*NyJg9{%{ytwh>$dfBy&b+zv=g^}|pH98H z_3PNPLl?lkyZ7(l!;2qJzP$PK=+moT&%V9;?ylp@pHCl)@B8@k>))SWyZ`_H00t=F zfCLt3;DG|Zr{IDNHt67k5Uy9>gcMe2;Sc;}sNsej{)XU(AciR7h$NP1qHz(XsN#w& zw#eXxFvcjOYaP~T<Bh(ZsN;@2_UPk}2)ZcbkVF;<;fzQosib2#HtFP(Kt?I$lvGy9 zqmfu<spXdNE$QW#V3PIZm}G8f<(X)vspgu^ap~rpa6TC3oOISXRGE0@nIoHg_UY%J zJH{#KpoErZ=b?xu3X-0THd-5?kVY!$q}UZ|>7|1zs_CYj7Ubxsj#4V>sHB!k0H&y> znq{Y~w(6=kpvIb~skGK=>zS(Nsw<1H_Uh}e!pJJ@n70;d?6D>8s_e4hF9PfAv(Sz* z?6f!{Ywfkz{>SXL+@=@px8R052({#PnC-dfrpsKn?6wP@xbVg+?-%9Po1wb+=8Lbp z{I)yqzW@jPguMj!r|-cCAKUN3+Y0RP!w_Rw@Wi|&Z1KgVGOY2g5qIqI!xV>{8^$D; z4Cuxvr~2{AEW<1E%a58Y^US!WY;&P4=d3fZF!vlA%|HkJ<IO}1y7SRUbLz9tLO1O+ ziA6{4X3|twP3O`*KdtrF1xoGps#b?B_KaA=%=Ou5XZQ8mM2_wD+Y^@ka@us)y&c<l N^9uLge5;lK06VJ2U|9eF diff --git a/theme/orangewhite/config.php b/theme/orangewhite/config.php deleted file mode 100644 index 90b476becb7..00000000000 --- a/theme/orangewhite/config.php +++ /dev/null @@ -1,141 +0,0 @@ -<?PHP // $Id$ - -//////////////////////////////////////////////////////////////////////////////// -/// This file contains a few configuration variables that control -/// how Moodle uses this theme. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->sheets = array('styles_layout', 'styles_fonts', 'styles_color', 'styles_tabs'); - -/// This variable is an array containing the names of all the -/// stylesheet files you want included in this theme, and in what order -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->standardsheets = false; - -/// This variable can be set to an array containing -/// filenames from the *STANDARD* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout', 'styles_fonts', -/// 'styles_color', 'styles_moz'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parent = ''; - -/// This variable can be set to the name of a parent theme -/// which you want to have included before the current theme. -/// This can make it easy to make modifications to another -/// theme without having to actually change the files -/// If this variable is empty or false then a parent theme -/// is not used. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parentsheets = false; - -/// This variable can be set to an array containing -/// filenames from a chosen *PARENT* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout', 'styles_fonts', -/// 'styles_color', 'styles_moz'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->modsheets = false; - -/// By setting this to true, then this theme will search for -/// files named "styles.php" inside all Activity modules and -/// include them. This allows modules to provide some basic -/// layouts so they work out of the box. - - -$THEME->blocksheets = false; - -/// By setting this to true, then this theme will search for -/// files named "styles.php" inside all Block modules and -/// include them. This allows Blocks to provide some basic -/// layouts so they work out of the box. - - -$THEME->langsheets = false; - -/// By setting this to true, then this theme will search for -/// a file named "styles.php" inside the current language -/// directory. This allows different languages to provide -/// different styles. - - -$THEME->navmenuwidth = 30; - -/// You can use this to control the cutoff point for strings -/// in the navmenus (list of activities in popup menu etc) -/// Default is 50 characters wide. - - -$THEME->makenavmenulist = true; - -/// By setting this to true, then you will have access to a -/// new variable in your header.html and footer.html called -/// $navmenulist ... this contains a simple XHTML menu of -/// all activities in the current course, mostly useful for -/// creating popup navigation menus and so on. - - -$THEME->resource_mp3player_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes'; - -/// With this you can control the colours of the "big" MP3 player -/// that is used for MP3 resources. - - -$THEME->filter_mediaplugin_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'waitForPlay=yes'; - -/// ...And this controls the small embedded player - - -$THEME->custompix = false; - -/// If true, then this theme must have a "pix" -/// subdirectory that contains copies of all -/// files from the moodle/pix directory, plus a -/// "pix/mod" directory containing all the icons -/// for all the activity modules. -//////////////////////////////////////////////////////////////////////////////// - - - -// These colours are not used anymore, so I've set them to -// bright green to help identify where they should be removed -// These lines will be deleted soon - -$THEME->body = "#22FF22"; // Main page color -$THEME->cellheading = "#22FF22"; // Standard headings of big tables -$THEME->cellheading2 = "#22FF22"; // Highlight headings of tables -$THEME->cellcontent = "#22FF22"; // For areas with text -$THEME->cellcontent2 = "#22FF22"; // Alternate colour -$THEME->borders = "#22FF22"; // Table borders -$THEME->highlight = "#22FF22"; // Highlighted text (eg after a search) -$THEME->hidden = "#22FF22"; // To color things that are hidden -$THEME->autolink = "#22FF22"; // To color auto-generated links (eg glossary) - -?> diff --git a/theme/orangewhite/css.gif b/theme/orangewhite/css.gif deleted file mode 100644 index 312cde94381c20c32f83488c2f1eb94d31c83d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 750 zcmV<K0ulX3Nk%w1VO9VS0OkMy-{0Tp@AVr~mEz*!{r&%To58cj+&XHa3q_1pf3Jz9 z$Nm5RB~p~w<L=Vl>sf=d`TG2)rlq62)S<c5oV3g$T9__kojhlt=9d8f|NmxYX8!*E zL2jqEwzjp%-TV9g`uqK~#@(~9uDHwMRDrOv#o5f-=*rvZ@b>$Ifq&K2)!patUWc^) z{{Q;_|6W~O`~CjS-s|J*@?VU%ho{Kh=I`6(?~ba<(%<YrZKN_}o={Lw|Ns4dp~SDm z+6O?0cb&o)Qj+}q{OjuJVu-d9MT_R`^yTdJM|Z7fXJ_#6@ZH_r#KgqFz`#mzro7SO zCtR8G`2Km7zVr6^@%8zkp`lrYvg+*Yv$M0GyVlXr&{>DHU|?YP`TLcXmGk!d#LLk8 z{QQcj$3ktTd7;Gf^Yi-p`uqL;m9WjfzrQnRqmZr4H)WuYvCzla=rC87&(YHB@%M&? zhDu6G3^#<-;_cYk*=dox`uzR<{r>#@{Z&;}grv%=!`g$R$7qVUA^8LV00000EC2ui z09F7G000O7fEt2>goTEOh>41ejENbKkdcy;l$Dm3n3<D;nwc1%prN9pq@|{(pc$MQ z1O^frMidPhdOmjr1wAN3UL6Bhkf_4L#HFelk9ib2XEF~o88tZvWJMfNDRW#JcEQEp z;HJlr4HZui4;L9FPzHSmBU&$MOma%zpO2yV_~GH>kGfd-6UPFBItp0Ccr(U@hzO6$ zL`s#f;y!;EQ?1H?M?!@*Y7)%Yf+m0z0es*L5Hg9PD1E6iWb_B{k&Pe>fMoe`!9)fs z3IyQTK*^=di%4e{tC?X+0y=ISAaHWxNQMvyDDZd$06;&O82EuzN{lIp2^?SqAaY{@ z8$T9HkbsHMp~?;w{mANlx$)78H5oQ|@Bl%~0TK?vG)b}ti<!K8BQwpg;KQR0dNO=* g5THfiB>?hFj7&OT-%hAgt6trxwd>cg83h6WI}%!-BLDyZ diff --git a/theme/orangewhite/csshover.htc b/theme/orangewhite/csshover.htc deleted file mode 100644 index 7aa6c79e291..00000000000 --- a/theme/orangewhite/csshover.htc +++ /dev/null @@ -1,88 +0,0 @@ -<attach event="ondocumentready" handler="parseStylesheets" /> -<script language="JScript"> -/** - * PSUEDOS - V1.21.041022 - hover & active - * --------------------------------------------- - * Peterned - http://www.xs4all.nl/~peterned/ - * (c) 2004 - Peter Nederlof - * - * Credits - Arnoud Berendsen - * - Martin Reurings - * for inspiring me and finding really sick bugs - * - * howto: body { behavior:url("csshover.htc"); } - * --------------------------------------------- - */ - -var currentSheet, doc = window.document; -var activators = { - onhover:{on:'onmouseover', off:'onmouseout'}, - onactive:{on:'onmousedown', off:'onmouseup'} -} - -function parseStylesheets() { - var sheets = doc.styleSheets, l = sheets.length; - for(var i=0; i<l; i++) - parseStylesheet(sheets[i]); -} - function parseStylesheet(sheet) { - var l, rules, imports; - if(sheet.imports) { - imports = sheet.imports, l = imports.length; - for(var i=0; i<l; i++) - parseStylesheet(sheet.imports[i]); - } - - rules = (currentSheet = sheet).rules, l = rules.length; - for(var j=0; j<l; j++) parseCSSRule(rules[j]); - } - - function parseCSSRule(rule) { - var select = rule.selectorText, style = rule.style.cssText; - if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i).test(select) || !style) return; - - var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1'); - var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo); - var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1]; - var affected = select.replace(/:hover.*$/, ''); - var elements = getElementsBySelect(affected); - - currentSheet.addRule(newSelect, style); - for(var i=0; i<elements.length; i++) - new HoverElement(elements[i], className, activators[pseudo]); - } - -function HoverElement(node, className, events) { - if(!node.hovers) node.hovers = {}; - if(node.hovers[className]) return; - node.hovers[className] = true; - node.attachEvent(events.on, - function() { node.className += ' ' + className; }); - node.attachEvent(events.off, - function() { node.className = - node.className.replace(new RegExp('\\s+'+className, 'g'),''); }); -} - -function getElementsBySelect(rule) { - var parts, nodes = [doc]; - parts = rule.split(' '); - for(var i=0; i<parts.length; i++) { - nodes = getSelectedNodes(parts[i], nodes); - } return nodes; -} - function getSelectedNodes(select, elements) { - var result, node, nodes = []; - var classname = (/\.([a-z0-9_-]+)/i).exec(select); - var identify = (/\#([a-z0-9_-]+)/i).exec(select); - var tagName = (/^[a-z0-9]+/i).exec(select.toUpperCase()) || '*'; - for(var i=0; i<elements.length; i++) { - result = elements[i].getElementsByTagName(tagName); - for(var j=0; j<result.length; j++) { - node = result[j]; - if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b' + - classname[1] + '\\b').exec(node.className)))) continue; - nodes[nodes.length] = node; - } - } return nodes; - } -</script> diff --git a/theme/orangewhite/docstyles.php b/theme/orangewhite/docstyles.php deleted file mode 100644 index 0123ea291e3..00000000000 --- a/theme/orangewhite/docstyles.php +++ /dev/null @@ -1,102 +0,0 @@ -<?PHP /* $Id$ */ - -/// We use PHP so we can do value substitutions into the styles - - if (!isset($themename)) { - $themename = NULL; - } - - $nomoodlecookie = true; - require_once("../../config.php"); - $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - -/// -/// You can hardcode colours in this file if you -/// don't care about this. - -?> -body { - background-color:#FFFFFF; -} -p, a { - font-size:90%; -} - -h1, h2, h3 { - padding-left:0px; - background-color:transparent; - color:#000000; -} - -h1 { - font-size:1.7em; - margin:0.5em 0 0; -} - -h2 { - font-size:1.4em; - margin:0.5em 0 0; -} - -h3 { - font-size:1.2em; - margin:0.5em 0 0; -} - - -li { - margin-bottom: 10px; -} - -ul { - margin-top: 10px; -} - -.question { - font-size: medium; - font-weight: bold; - border: 1px dotted; - padding: 10px; - background-color: #EEEEEE; -} - -.answer { - font-size: medium; - border: none; - padding-left: 40px; -} - -.normaltext { - font-size: medium; - border: none; - margin-left: 30px; -} - -.answercode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: none; - padding-left: 60px; -} - -.questionlink { - font-size: medium; - border: none; - padding-left: 40px; -} - -.examplecode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: thin dashed #999999; - background-color: #FBFBFB; - margin: auto; - margin-top: 0.5em; - padding: 30px; - height: auto; - width: auto; -} - -.spaced { - margin-bottom: 30px; -} diff --git a/theme/orangewhite/favicon.ico b/theme/orangewhite/favicon.ico deleted file mode 100644 index 975435068884e683a59934bd5eb36a6a6334321c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmZQzU<5(|0R|u`!H~hsz#zuJz@P!dKp_SNAO?vKIbb{CFhl-MrSiEDm+MbD!c@3Z zC}SFg>oxZxXX##+)QNC^1s(V=xcI+f^+t$@>%RZetN(IUu7+^qPW)5e@SmX+Dhm`u cQxD_<)x)&|xj^+0?(#LOK<W?u6It;K0Ic&d5dZ)H diff --git a/theme/orangewhite/footer.html b/theme/orangewhite/footer.html deleted file mode 100644 index 9c7c7c99668..00000000000 --- a/theme/orangewhite/footer.html +++ /dev/null @@ -1,17 +0,0 @@ - -</div> <!-- end div containerContent --> -<!-- START OF FOOTER --> -<?php global $CFG, $course; ?> -<div id="footer"> -<?php echo $loggedinas ?> -<p class="homelink"><?php echo $homelink ?></p> -<!-- <p><div class="homelink"><a target="<?php echo $CFG->framename ?>" href="<?php $CFG->wwwroot ?>/course/view.php?id=<?php $course->id ?>"> <?php $course->shortname ?> </a></div></p> --> -<p> -<!-- <<a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>"><img src="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/xhtml_1_0.gif" alt="XHTML Validator" /></a> -<a href="http://jigsaw.w3.org/css-validator/validator?uri=<?php echo urlencode(qualified_me()) ?>&amp;warning=1&amp;profile=css2&amp;usermedium=all"><img src="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/css.gif" alt="CSS Validator" /></a> -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>"><img src="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/section_508.gif" alt="Section 508 Validator" /></a> --> -</p> -</div> -</div> -</body> -</html> diff --git a/theme/orangewhite/header.html b/theme/orangewhite/header.html deleted file mode 100644 index 9e14fc9fca9..00000000000 --- a/theme/orangewhite/header.html +++ /dev/null @@ -1,46 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html<?php echo $direction ?>> -<head> - <?php echo $meta ?> - <meta name="keywords" content="moodle, <?php echo $title ?> " /> - <title><?php echo $title ?></title> - <link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> - <?php include("$CFG->javascript"); ?> -</head> - -<body<?php - echo " $bodytags"; - if ($focus) { - echo " onload=\"setfocus()\""; - }; - ?> - -<div id="page"> - -<?php if ($home) { // This is what gets printed on the home page only -?> - <div id="header-home"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> - <div class="clearer"></div> - <div id="nav-bar"> - </div> -<?php } else if ($heading) { // This is what gets printed on any other page with a heading -?> - <div id="header"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - <!-- <div class="headermenu"><div id="new-menu"><?php echo $navmenulist ?></div></div> --> - </div> -<?php } ?> - <div class="clearer"></div> -<?php if ($navigation) { // This is the navigation table with breadcrumbs ?> - <div id="nav-bar"> - <div id="breadcrumb"><?php print_navigation("$navigation"); ?></div> - <div id="navbutton"><?php echo $button; ?></div> - </div> -<?php } ?> - <div class="clearer"></div> - <!-- END OF HEADER --> -<div id="content"> \ No newline at end of file diff --git a/theme/orangewhite/nostyle.css b/theme/orangewhite/nostyle.css deleted file mode 100644 index 31c52ca6a6f..00000000000 --- a/theme/orangewhite/nostyle.css +++ /dev/null @@ -1,9 +0,0 @@ -*, body, p, td, -h1, h2, h3, h4, h5, h6 -{ - font-style:inherit; - font-family:inherit; - font-size:100%; - background-color:#FFFFFF; - color:#000000; -} \ No newline at end of file diff --git a/theme/orangewhite/pix/rightarrow2.gif b/theme/orangewhite/pix/rightarrow2.gif deleted file mode 100644 index fb0fbe9475524df0f58c2de82d41a50257d97ee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmZ?wbhEHbWM$xFXkcWhO?LSI|G(l-7DfgJMg|=QAOOiQF!8v^B`m-FEh#8RRfLPd F8UR|343z)? diff --git a/theme/orangewhite/pix/tab/left.gif b/theme/orangewhite/pix/tab/left.gif deleted file mode 100644 index 972738aa6f772c4017ad41e01527a31106741f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmZ?wbhEHb<YQ1`xN5-g|MuMfcjo`UJ@3TH)Bo=+`G0Te|NG1T-(T_n-m*`Z=l;LD z=+^GG|92Mrzq|O??WO<kEc}0e<?1!-UY?rz@KDdY51-zD{QUCNl#{2=oH={`!>7-W zpFTf({=$PpJ?Af8K6l~biBqRfoj!B=%(;!5x9r%t`_!3pA3l9~{r3HbkDm`6K6>cL z(My-Fo;q{(;lZ9=yZ4?xd;a#Fdq6W8NCApJSr{1@3>b7knm~SHVB734qrgK)s{h22 zpcOB9=3RKfa81y4-HjX;Glq)&3Hs(fY(1wR7)RZS-F!EHN0qI6uwB!hy7~J*|7Q{r zXKZP0YiVllVr=5+>z~jks?9%j+VrWSDqM5s&YL5u$h&yS(#4_@EUQ+pS+#<7!^TY; z)TKGL@7TFrQkrew{sa3Y<=BrNJAPDEPT<Vhb7#~P_%2_$dRa<?^VaP<xAb*|9zGHh e6MHD8r7Wx?EF=8>-Fsm@P3~{se|&Rfum%9p%gvMk diff --git a/theme/orangewhite/pix/tab/left2.gif b/theme/orangewhite/pix/tab/left2.gif deleted file mode 100644 index b35a17d5c52901bf4a31494059f6ce1dae9e9915..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmV;M0c8G1Nk%w1VGaNy0M$7F|J$Aa+@Js4p#R&R$jQs*$C28*hVs&y>dKV+*`W5- zoZY^NtE{g5+o1m3px?lY_}8BA&X?oFj^o3Q?(p)-%go5i%l_M-&(YKF&X@Vup0&5R z=IH9m%gw~a$Hm9U<K*Vw;p4Qmx7XR*u(Gqx(9yuc!@j@4<K^eEv$V&_%I)s(-@%L2 z*4OLp@8H0Txx2i=#KrvEpwZIQ?(p&3-QUa2&$6_&>Fe$8@bUlv000000000000000 z00000A^8LW0021vEC2ui01f~m000KKz?^VMEE<o<q*92&5T4K|A%{sZuGlOiM*w)g zU@tdJ28_$#Gg{nTv)ymFdOb%|EQ7p$pTG0}0~8ejgoTELf`^I$f&z|@kd71`k(B~8 z6%LvX7Z;nGD;5n6GNY!aE-DGDtgWj!9}uz-8nd*r93Be0yuG_1CI`a9#KIvb5y{CJ z%FGcpFbLAq)Y2mx1=-r$*)2B{5)u>R;^5&kBoFE@>JKdK4<#ZC^!4`iHZcbK{Qdhu F06W!2;BNo` diff --git a/theme/orangewhite/pix/tab/left_active.gif b/theme/orangewhite/pix/tab/left_active.gif deleted file mode 100644 index 8fa33e8c583065cf1bce67d27a6c979d2ff8a507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmV-|0Db>QNk%w1VGaNy0HOu}|NsA}sjGT>e6+T=+1lKNhKKI(@&Et;A^8LW000I6 zEC2ui01f~m0009=Xu90~FiJ&6xHtzhiuhnC7y)3Os7a<Qu(s$6tL04FH!jaR+_yhg kFg1+TY{gSDhdlC}J}6Ksq!O)0oC~Yuss>sEL7M;oI~{v7E&u=k diff --git a/theme/orangewhite/pix/tab/left_active2.gif b/theme/orangewhite/pix/tab/left_active2.gif deleted file mode 100644 index 595bbc95ebecb7f5777519e95a9bb23d27bf6e88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmV-|0Db>QNk%w1VGaNy0HOu}|NsBU$;+#(uFuia<K^eEv$XE;@&Et;A^8LW000I6 zEC2ui01f~m0009=Xu90~FiJ&6xHtzhiuhnC7y)3Os7a<Qu(s$6tL04FH!jaR+_yhg kFg1+TY{gSDhdlC}J}6Ksq!O)0oC~Yuss>sEL7M;oJL{7*8UO$Q diff --git a/theme/orangewhite/pix/tab/left_hover.gif b/theme/orangewhite/pix/tab/left_hover.gif deleted file mode 100644 index 23386b58efdaa343d6eb5baed7e5b665f4292c36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 388 zcmZ?wbhEHb<YQ1`xT?wU|LwW|Z_odKcj5p0%m3e9JaO{$|M!>vzq|D5@rnQMue`jq z|JSSYw@z<Zy=L9Ri`(9P`1Jnc=aZ+;oH%v*@zdvL&Ypj8aohQemp^>^eD?f>a~CeY ze*6Bzr!Tkf+&g{d+^*ewPn|h;=*ZCzA3vWub9Tqh-KS2UIdu5w#?4zUUA}ty?0KMR z3={*!pDc_F44Mo&Ad^6TVqjZ%U`m09j#U4NB|#P&Mdn?|P)s#6U3Vi#Ih3Jde}cZb z4_nXa2gXr%VmIH--%(}jZm&{s!1loV-#_^U>zf%HTk6}|YXy{;`uZpI3CK^J$|NAm zGHdpnSpp(+7qZM}U%G7hQbh^2HEY+c5tm@zyk+ZVamj7Fn588-_a8X8UrL4h*zps` ngjG4to;!b5Mvm*s)oWMOmHBRq-sZb|PeXy{$<t>~92u+uaQn7d diff --git a/theme/orangewhite/pix/tab/left_hover2.gif b/theme/orangewhite/pix/tab/left_hover2.gif deleted file mode 100644 index b7d9c7476f502119bc1e90d1dddf89b5ae1b97e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmZ?wbhEHb<YQ1`xN64m|LwW|Z_l4NdHU0%V|UMPx^;TP<I6jqUEBTp)!A=PPyTy* z{?)Dh_b+Vy`{vy0HS2!7IQ{<q;ddWCojiT!#HrKo?;SpW@$%0Xr{CQ_{NTdYi<hpP zyKwQ(n{!8w9^bfm%exOBH*MLvbN8OdPoMvPdtu-HgBvz&e)i(kp(97{KYaZ7$+In6 zw_mw-ee3p}x9{G+e)IN$Lx*3#eSiGqsZ*!VzI^@m^x5-AkDqw^?gP*|2HZgLCkrD3 zgBgPkND0VK3~Xy0W*2zqNcEps5+t#TW8Q@o2f|)jth=%1uo^?f{set<AGV&;4~(Pk z#BRQuzoW|5-CeEVfbD_zzkdn})i*OXw$!(^*9sc8DAmacaZR2wb+V~2FR%2hx%2c5 zI2J8lvdGAUe<i=zs?{r1WjHr&-m*zUk9p^=-8<El1w;f6i60UWKd7U?efrGV)4JO1 rmo8tqq$SUG^VaQ~k}5n8Bpy6|ETzfv;^nIs#%iqZKYV=e$Y2csK49B| diff --git a/theme/orangewhite/pix/tab/left_inactive.gif b/theme/orangewhite/pix/tab/left_inactive.gif deleted file mode 100644 index b5affdc81da4c03bc71fcbbac43c633f5c05af1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmZ?wbhEHb<YQ1`xT?(X>C>mrpFf{CdHU+rtM~5Rd;a|S`Sa)BzkmPb%a_$_*1iAu z`Q3+4Cr_U_fAR8(Q>V{exOn#bg~v~yfB5wI%-Qp|@7%j|`ReI2=XUMhd+6}dLr0G8 z*tz@E=`$NQZ+ZRp{fCdAPn|jU;nSB>XU?8Jdmd;G0}X)UPZmZ724w~vkl7$VF|c(U zm{{PUBh`OmNsvS)$Gi(G60ST@S$88RNrj<ee}cZb4_nXa2gXr%VmIH--%(}jt}jz? zz;=Jahrb22m0XI9ZS5UxT=Jd0j9g-Uom|3`I;Ko(mlK%TCNyWR5dU081%8edD_5<M rm1bYRVdHv13D#}fcWe_8XW6@N|6Wlk<|9Xs9Z`~GI}P-+BZD;n+O(P_ diff --git a/theme/orangewhite/pix/tab/left_inactive2.gif b/theme/orangewhite/pix/tab/left_inactive2.gif deleted file mode 100644 index e5aed73277d9c6fd6e051d4ed39980f45db2d84a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 zcmZ?wbhEHb<YQ1`xT??a>C>kZCr@9zc=7u6>+j#cfA#9shYue<e*F0M?c4L`&p&(i z?Dp;3j~_q2fB*iKD_2&pS@-V4r<148oH%v*{Kd-~Hf=s~^!UryZ#Qn<a_aQioxAru ze)|0W!^c;yUEi{G`?(7jFJ8KG;LzdMZ{Kg)vUT77gYQ0keEj6up(96c-@X6#-G`&c zPdt0^>iEf1*KgiFefIp;?K^>nGmr=rf3h$#Fz7Srfb@a<#K1Q5!1MwS9jX2kOM+I+ zWSMs%<ALc;n{_wdJQiiB*q@+p?!(q|`hjuOo!HHH^LJF)x;v{B9I)l@{P4G+wnm~- zMUcItv#Ucxh^>FZ#C}C>mTA*xOcT@Om^*L&TrE-7B}<nrQB~kty=LudX=R>Go40II zm*m~KYxhnaJ?;Ys4;_$EVm^N2<Z*cszH{d<oRgDfx_a&URb4gCJ9qEhab&Ot03RpA AO#lD@ diff --git a/theme/orangewhite/pix/tab/right.gif b/theme/orangewhite/pix/tab/right.gif deleted file mode 100644 index caa97a96386cd6c951fb81e5ebed21c42569ce56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1095 zcmb7@=}(#m0LD=ijrK#AF4k;To$EGKbR=zzTTNrS&M8`J;$ob!Yd0H%N1W*z*Xgo& zRh?309%xkrFGN5=K~N46Pk3Jtm3mZ^L*x=I2zFM@d}sfJJs+Rs_awg$&vyxN(O>-( z=oSK7MZ+L95!xa_>Mp4a+!RznTiwtW8QSiFw1d!gFQn;*G?Y_yzf(nov;&Zq3TgW2 zjA1L#qMyd;rg2uFSuerqBslw_>y5)H1LY2<ORi8ZE-g>b&KZnm<+4f&fC}Z3<In}l z7ah){@d?2Qn<E1i7cE~P0_2N;T%q35th`#a9oR2MVE-qdoOrmwU}zZXJ@noQhJa$* z3gb~9HAwrO$nw7?Em5ChhBBBNj3V%$Sgd0`ON#7JS~$gu0)cj^?2lxo+Wt=Xr_z1~ zm6nxPR6eh&{w+8N{lSa+2K?WRP0cNY*0z`J9i7B361lsl@rz(Ij5<i8GlqtltdUVR zXN=1mpWq9GqG9;J<n+w!-28%6CY=Hli^`?t6`5SMw!ZOtb8c0w(dzW;+dD>+*}~nm z?jO9-+w4x)5pekS-O1@5+Wj1Y!F>YaS!79t_m!|rDXV*?`tqlk&Uo})M6Lgg+%4%y z??OXR1j0XIv`^NAOr>SYM*G25bQaK=z@{iVqEmCFc=mu2BE?qtT*EY5lHu`9VGjV# zplTqc7emC1(N^i{?A&c&jIJVjPS;*b<T75fu`1dFkUOO26&e6yB5!z`jY0=(fIOyF zTnhIMOd4nDXKJp5|0o|HF)ZNW%qcv1)CjiS$kWIt*k&d9o4UYze2!H`O{Hs++~Jk$ ztSqqWo`8Fx9{<&*Q3!Z;?No(tP_i(}>yl4n_`^lvgv-3tn@CC)@!#4u*m>GTk>J?8 zaJ44r{-p54Wl_-|Dknu}#|{HXx-Xvm_ssGwu5d~$h9DRMsVnvH!|KYsKd0)-FGX2& z6_?|XWbcn-9_gR^XH)f60Yw%_UmaY9+^M-v!0!Boq)>Ni1BzH~?&x`>0e5o^Yj_cD zq8jRB{;?PuViBRc_`7~NSze!^$-9k7QP$n2l(<l1^Y>{v#+LN#K_elv$ZBj&>2chF zKPKduUScVOruKZU)zncqA8PJ=x|U-mJ~Itcyn^C&W>RSy%tEe2gkig@PJhSt)M0|L zz4dXm$R2!HZVtIAn`Z59i8{5AyUu?Ir8JgjNP2n+#W~%03P7XPJ}IVAIk|fSJ`qW1 zH&6Z^VDs=h+O#o62tgi8oKYwlo;k%Zn4(BQxaUep9*TK2{SkvDJO^ytWgl>esoSGP zuwG$qJ!bIvX}%244`*$RaVMc9UvM~IQouIdsVkU}gn;|(op#&MgalI}k=P?+BG@ZG zC!&PMx8+|7!P~yS@UFD!+}(n!QBLXg)_kW7IlyoNDBivkL@%IR@|)}Vqh6sGpS$%R DG<s~# diff --git a/theme/orangewhite/pix/tab/right2.gif b/theme/orangewhite/pix/tab/right2.gif deleted file mode 100644 index 22f57fa2b5c92dedfb32154694ef52db1cc534e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1349 zcmV-L1-kl2Nk%w1VIBb@0M$GI|J$Aa+@Sy4p8wpR$jQs{(wg?woZ7pF=Esrh%9Q)r zpsTE|-M)zL&X@Stp8njR{oA19!;as;i{r$O{M(@Z+o1W^p6<?<;J}OD!HeL*i`>45 z?(p*6y@<)n%*e{i&(YJz$;z>_wAb0&wzs+F=<3VO&)?zW>+SE((9yKDx4^=~u(Gr5 z?(oXX&Az|E>Fe#=-QUH>$nNj)<K^eMyS&83$Fj7w(bCky#Kq&~=G4~L?(p&e00000 z00000A^8LW002AyEC2ui03HD%000L6K%Q_&EE<o<q;kn@I-k&}bV{vSuh^`1%k6r< z;IMd1E}PHjw0g~MyWdcPd`_?1@A$la&+q&HfPsR8goTEOcOW!83yqGCkdcy;l$Dm3 zn3<ZJoSmMZprN9YA|N~fsHv)}tgWuEu(7hUw6(UkxVgH!yuGdjr@q3&#Kp$P$jQjS z%FWKt(9zP#%+uD_*xA~})!W|R;NjQZ;^pS&=(gnP?CtL1>+kaO^vdz|`1$(kJOcjz z00RmfNU)&6g9sBUT*$DY!-o(fN}NdW0|$y2Giuz(v7^V2A1w|TNwTELlPFWFT*<Pf z%a<@?%A85Frp=o;Q+nW#v!~DhpFo2O9ZHnw&HzZ0DqYI7sne%Wqe`7hwW`&tShH%~ z%C)Q0qh7;`9ZR;X*|TWRy5LZu!UMN%AH0=2w=Lbbapl^*yZ5eNy?XQ3{hK$gV7`F| z|HZp_E?~!W4@a&G7q8^Tf+g=YY}qkq$e<0|<$SpEXvB;!qh4%Uap25xJ<Om0fp%>O zxGB)qy_+}g+r5A17XI6|@!Gv@=iZH6Ir7`jffFx2e7bMu%8x&HPMkaT;k<Q&*Dk&} z_2%WL3r|ix`+4@z-7{AYzWeg+zUkBd&_aR#{{RLk;D7`cXyAbeCaB<o3^wTCgAhh2 z;e-T+fPw=UTHt_&8DhBq;f5A)7@~(Ak_e)PBYr4ih#Z>eA&MV@=pu<J##p0^EygHg zi8tOj<BLC*Xd{h223cc^IqFDbkTxc{<dZ@o3FL?=iZ~;RFv3Wp3@{kr<(FWFDdw1D zmTBghXr`&=nryb|=9_TFDd(JI+E79Pc;>0+o_zM{=bwNED(Iku7Ha6Bh$gD&qKr1` z=L$MBaDk)^RBGv^mriP_rj=g6DW{l%>S?Buj*4lhr;<wPs;PFms;He#3hJh&wkqqV zl;V1-rn0(fYpKBYI_s;d5?gDgwT_x>teeuhYq701D{TWWoRGk^*k-Hkw%m5>?YH2D zEAF`DmTT_0=%%ax?z-%DTSE*8#4GQ-^ww+dz4+#<@4o!@>+in+2Q2Ww1Q%@Zy(Ekf z!NL<vurR|9JN$425>GsF#S&xOaK#iuY;nU8I}Gy0BQsob$0nz2al{{A95Tfi!z}a2 z9J37a#wep)GtMy6+%w4^i+nQAH_trt&>P1r^UFrJ%yQ2)FMPue5@a9&1`=eQwbc@6 zkO9_OhaL9U8i;*$)>vZz_SIl#paIriqrLXlSC>6D)?8;DcLr{k?RD9BR~>fQe1{#l z+H9j;H3oJg-u2g7zl}Ere5cL$*;`Y7b>)Q5UAW+m+iiB`bZb2~=y{v2w&rv<-Zs~6 z3$FO%X)8`*c<F|Bt+mx)gUtdC3<NLy@Er_q{PD;qul(}NH_!YA%69<0^VC-#eDTXq zZ~gY$Yfn7#-g94l_zYmLy$UHDp#J*ox9|S@@W(Iz{Pfpv|NZ#qumAr1_wWDz@XLV- Hf&c(Jt$hf> diff --git a/theme/orangewhite/pix/tab/right_active.gif b/theme/orangewhite/pix/tab/right_active.gif deleted file mode 100644 index dd73b7a4b0bf5d6f096b022dc980b3c463f50948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmV-70m%MGNk%w1VIBb@0HOu}|NsA}sjGT>e6+T=+1lKNhKKI(@&Et;A^8LW000I6 zEC2ui03HD%000C0Xu90~Fv>}*y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3ySfKBG@BhG{ za7Zi~kI1BQ$!t2GzX8D@s9LYstai)odcWYXcuX#v&*-#TTNoGs@VI<VuiNkVynfH` z`~QG}f`f#Gb^&jOii?bmj*pO$kcg6%mY0~Bnvs;7o}ZwhqK%!Srl+W>pQWm;uCK6u ztg*DUwyCqXy1TrRxxK)_!m^3O#>dEVzsbzawad=Y(x=eV*4LTU*xTHs#ogfHi`wGl z=6B@h>gwt1?&0n4^4Rh7_R;nC`pEhF{=xnJ3DgyEput!L4=PlZaG}Fd4IfJM<YuBp JTT>DM06Vu7v-<!5 diff --git a/theme/orangewhite/pix/tab/right_active2.gif b/theme/orangewhite/pix/tab/right_active2.gif deleted file mode 100644 index d1f3e3ece1aa8e0b48fffd3341b1e618fc221841..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmV-70m%MGNk%w1VIBb@0HOu}|NsBU$;+#(uFuia<K^eEv$XE;@&Et;A^8LW000I6 zEC2ui03HD%000C0Xu90~Fv>}*y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3ySfKBG@BhG{ za7Zi~kI1BQ$!t2GzX8D@s9LYstai)odcWYXcuX#v&*-#TTNoGs@VI<VuiNkVynfH` z`~QG}f`f#Gb^&jOii?bmj*pO$kcg6%mY0~Bnvs;7o}ZwhqK%!Srl+W>pQWm;uCK6u ztg*DUwyCqXy1TrRxxK)_!m^3O#>dEVzsbzawad=Y(x=eV*4LTU*xTHs#ogfHi`wGl z=6B@h>gwt1?&0n4^4Rh7_R;nC`pEhF{=xnJ3DgyEput!L4=PlZaG}Fd4IfJM<YuBp JTT>DM06XC(wdVi; diff --git a/theme/orangewhite/pix/tab/right_end.gif b/theme/orangewhite/pix/tab/right_end.gif deleted file mode 100644 index 4d2a71e730bb6a21135740461dd72db25cd810d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmZ?wbhEHbWMoic*v!T7{^RF&A3lBf^!f4A=a;Tref{?R>9glQeEM?x&b<#{DF#%a l_>+Z^fq{!b2P6zKgMo!V;G}2v4)Kh+Efz-`1l(8{tO0K~C@KH| diff --git a/theme/orangewhite/pix/tab/right_end2.gif b/theme/orangewhite/pix/tab/right_end2.gif deleted file mode 100644 index 3f771143580fad0fcbca9579a19ce6dc72850889..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99 zcmV-p0G$6vNk%w1VF3Ul0J9DN?(p*K?eEUe(bU%0?e6gA=<3_u-{0Zm*V)_d@bSyd z&*SCh>Fe#$($wzo@&Et;A^8LW000gEEC2ui0096Z000CK(8)<FxHyr($~p!zG=dTV F06S!XGG+h( diff --git a/theme/orangewhite/pix/tab/right_hover.gif b/theme/orangewhite/pix/tab/right_hover.gif deleted file mode 100644 index c8cba3a6656a501ff388e7a0a2e273148247d4b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 911 zcmb`C{ZEn!0LLHGI61Gz&T8#uX=#qEd2O|u-L>X&>l78UTdkbtwIfD$*SvP~PItQz zT<T?|hxme+l7<qXq9DkNV3^6n13V!4e!_!~A}=8bb(gu_bM`;n_t(#7pY8i~&iRbf z*AGS=2BwJs7O-Fe7+betK|8i?HGmKne6;{cu;5e}HN5w2qbcu#P9*Mk+2n{#9^8nm zhr%FaLRZ)HFD77{-C%^wu+?OSL*a<UYE!94r(R8uDAgcj4sAprlf@qhZX2QS8>7iQ zD3vY#<uIBo+Y#XZ*rCmsC;%V=$3MhAd;)M-Cc8ZQ_-FNor+2{bzwERMej@c14a|uv zpg@%lk^GXE&V@a)D)Vi%)5`djJg^vir}+&IZejGh4Ce3ms%w7U8&BNz@KJrkpR7i9 zQ*%ozr;XeGxTBNzq>FWAFA)$t6N<!r{R5K0A*pOwt{73O)SA)$oxNK9_=|~`lLpW* zW;9!1t8EH2*=J_w<`*WW7adN-HM_LD>R$86SG=zS>n?vV9C>5hc>8Yiz3=(fzZh`o zYAu1sd(MoFPb)S^o{ZNJl1c5^gIyDK`%jh?XOwqO)+c4%Pskaf<ltlSg~i|yA8JV{ z)VJqId(7O!g`duW(q0(r%w&FifFu*xy0aV8N{q5+_TCFj7M(CGoEBY?mMs~Z{P@@% z`uhiR<>GlM%`Pl~<b8{Za@6=ZSJA&DO&W77L5cyVjvgJi`$3eRF<u*g?3!t05S?sD z&h5xk4y{71CvQ1S${(-C@UrR-=Bs30yWktqHM45iKP&kT>d05iy>W>+kHf511f65d zxJ0sMWCJxc9xJtIl##Wu&na~BsOqhMPI}9!Ey=<~Bja_61zOE!#A6qg!rIZTe?lnK zS)kKa?n>U{al$$sh5<MtLXX);L+-|=3J}I8Uw9BEP(?VmW6x!p>)w8<z*U`4;SsxP zlB$WzwJFWC<v)l$f<rswPaw;6CtecK2d8Fe=)(-R0DW}kZx33Zi95Q|aO(EAjOg8G z=qW5xx|hN#NS~)PUbuMrNK+mOT#3F?gulVQM8&5zlgW50r}!*~$|<~4$#0{SDf!$V zW{$c!BzI*hx74Vlwp99Vy4$W6&GXq+UHBUxB_tr8?uPSe-ly!#WnO+ORp{+$ukd+$ QdDUq?0sCUoIRfz2f0OL($^ZZW diff --git a/theme/orangewhite/pix/tab/right_hover2.gif b/theme/orangewhite/pix/tab/right_hover2.gif deleted file mode 100644 index ce9a232e8e21f63eaa7c5ac2cef6a9376612990f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1172 zcmV;F1Z(?8Nk%w1VIBb@0M$4E|LxBI?a#=`%l75T`|8d9?a$iFu<F{s<I}k2*1PiJ z#;dHZ-OaN2=*!>Gwf*eQ@884x?9SlOwfX4F?%%`j-ox(R!`#iX?(p*e?a;}~%*e{i z&(YJ=*4Mzo!{6cKu(Gq!($vn-(Xq3%#mC6Y&Cl)b@XE{0?(gxwzrokp+vDZuxx2jM z<>u+@?Y6hM#Kp(!?eE9Q%CfYz!o<bf-QTpex8~^T?(p&e00000000000000000000 z00000A^8LW001}uEC2ui03HD%000L6K%8($EE<o<q;kn@I-k&}bV{vSuh^`1%k6r< z;IMd1E}PHjw0g~MyWdcOd`_?1@A$la&+q&HfPsR8goTEOcN{A?3yqGCkdcy;l$Dm3 zn3<ZJoSmMZprN9YBOEvYsHv)}tgWuEu(7hUw6(UkxVgH!yuGdhr@q3&#Kp$P$jQjS z%FWKt(9zP#%+uD_*xA~})!W|R;NjQZ;^pS&=(gnP?CtL1>+kaO^vdz|`1$(k!TbLI z099?k5TKyJg9sBUT*$DY!-o(fN}NcsqQ#3CGiqEoaHGeMAVZ2ANwQ=~4FpZ9T*<Pf z%a<fk!kkI7rp=ooWp2#ilBZ4opE!dGtq64C2@D02DqYI7sne%Wqe`7hwW`&tShH%~ z%C)Q4ry5X1crcdigR>FFrd7N4tXZ~h(Z+RKwk}z=Wznj=oA<6+zi;Q#l`FXI-n@4G z_MN-<u-vt2A198?cQ9Ydg5%;HjM(z#zn%AHe#}^};<lqlZ!kfiwd>cgW6PdRySDAy zxO3~?&AYen-@t<lpDiOsgX0q#Bu9Q+x$+6ip*Lqf{dscf&Z9$LUcLEs=g+%O#}1x+ zckbZBQ#Ws3ym$B1%a3mlpFDT;>Bqw_k6*w4`1idh9d^-)cing2O-F(Y12pL1gAhh2 z;e-@cXyJtzW~kwY9Cqmc;fElGDB^@L+@QdTD5j|5iY&J1;)^iGDC3MY)@b96IOeG1 zjy$&LK?@L20D%P%6lr9U6&x94k`PoNWRpWa=_Ha!Ci!HM6kNF^1r}(jq?J&HSpk?s zlBuMT6%a{*nL%Qy=9xie3Fnw?%86y07BETVkz*1$rI1cCiRPF>%GqU|ZKAnkqE<5b zq?%r0X=j|2VriwHfl5kclWRhGWs*z^%I1|Rd~m?2sHUpws;su^>Z`EED(kGY)@tjm zxaO+suDrI&LJbK7E9|hu7HjOW$R?}ovdlK??6c5DEA6z@R%`9CFQ|aPw%m5>?YH2D zEAF`DmTT_0=%%Z&?z-%@>+ZYohC4$C4%90_z4+pL@4fl<t1rL#^1Cm<5)i!azy3N< zu)hH78}PvgC)}{Z_6}@s#TYBBam4~(TyVq}Z@lov2`k)j$s`9XvBV!UoN>PscN{Uu zCDSZ&y&#0Zz|K7P?DNk+2QBo_L>Fx|&le1x^wCT=P4v=EN6j?UMN=*H(N^~iwGAQ| m;PuyFhb{KlWS4FB*=VP&_S$T>?e^Pn$1V5VWYbVW5CA(vuc$Nt diff --git a/theme/orangewhite/pix/tab/right_inactive.gif b/theme/orangewhite/pix/tab/right_inactive.gif deleted file mode 100644 index 7cc5e40836def4f8868841690a69eba33be94197..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmcJKTTfB}0Dup{oaTmZt=7#;_`=k+wqC5Z)VVGKq0afzysWi0m(96!>6~kjWt+`= zsYQZ$DHP?7a>rB>&f#!SA}!=%WT1oxIJ7WVq(7qX{rk4>TH)243%62nB)~=j!r?H6 zVFn}Q^?DHmvDs{qNCZVur_;%s;_n2*Xb3YxCbMN3S+<&B1V$|Li~3*~^K5zzAQTKo z<O&sNGTYak!4RfYX+#n!1S9?cx-S_ac;%xFG{O5F;Qw%Dmw*ER5|Dk6KX?M-VtGAv z*RxM{8OH7#?_K0rxDAx)n}W5e2T-6{=N2~6&ax1nv>C2dxr&)Bbb%d>svjcgUW~zf z)cW{I+tWtk5mG`&XIFPmZ{PD5{R4w9U$I^fu{pzUMtV;XNdR|Zk~cNY7YIdSiBvW- zD_1C0Y7PI;JMH|!qW;5@!DyHRVKZV`UNM@ipH|mCf6?3QPM3RQ)$w)nyVp1KZR<y1 zXTy(%u?QIY8QuN8{eJIn3@9rpP8JU5x8Rd9%LhAg`EAJ=we@7th`ySLuU<EZMwhzM z3))W?ipPw7<kHD<qj($|NH54{6iVL0tepDobp<w0^Re?<52sM1TzXP&M`i^mohW4` z^<EyL$R^9iO9Xcvpv+H+KcQ|<q4sAH67E<hE2vT?0bl0<hp4lBhpGwNc0jWNmyUr? zOr^<%j<};la-~Tw@+@^{P}wwvcoP~tU*j|>BwnODx8Zo6Qo3d3mhviLrOdx7ybZB$ zsAd9oc|EW59FB>)=2{ce=xTY$W9ZAOGOHDs*D^}w(97{{ht?!DF0)4U3w19%ODoc< vcQK!pSA}Rbjfv^;22PPq`)4nT`CW)k7mERLWH*CwtlG_tUYW~J1}^;r%M*M{ diff --git a/theme/orangewhite/pix/tab/right_inactive2.gif b/theme/orangewhite/pix/tab/right_inactive2.gif deleted file mode 100644 index 6727b814bdf8434607308189f8744a5cb9da13f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 844 zcmb7?`%e=G0LQP=5h9C{fNW7je5NR|Br`@`j5rN~;3F}cWI@Hbkb=e-HAsvx6%Z9v zkSgE{5EWXAwDkI*w9@jZ?cGtXwS@!EdM(!;eRy0SGs4L1^iS~n`{$E<lJCCU>}}gm zrn1%m<6Iyd4x1pv@Arp7p<pmb(=@{{R;v}mFdWBG6eS3PBuTs7PEnM&yJt2ShLBMc zjG$H<>6x*<wa+r4p%H_@Xp$>bq=!PxDB&VU3`Tl3s2>`Z$rWmi);@tLRq9?)j!ofX z7AuUHDX-rbpa*n=MhM0ogj5CwXy&UN_|C1KXR`o+3uJubzBK`{QGL_7oQ&mlrWfa- zGdo%>!i)P~{VAF3E<@<cI;XTefAeG1E5B?$t064>D+eVwGpD_ZG7C}uwTjBB>(w_d zB_?r~-nm;>f3HDs|3PC@^TS7vpFC}8ZF|<<ur84c2t{4u?pHk$X|D{FE0n4}b-zaY zx`)*{Ff=@3cw;m{COvE(LoL>~(5P(!o1A)Q7{@;lP8a5w_E0lkrQ7$Bo^=J7aO592 z^l5JXU;p63mniUiE<Zuqw);xV(v5}9n-}e_PFQ>P0;jj#z)RwmzAyO5u41L_sY%I| zy?_LqBVC1%>?P8ac?y1#3wA(p$#LHI5ZH-ETeB(`uiP&eTA$|#HXeiJB3ozH`tr;y zMc25v04#OD3Na=r8m?KHr|g~rdA8DHu691II!D4!^He<!O?kxcKvWV!$B&6m&Hri7 zV%E*XO~*(3dP!sb+Ps#0wakMw|8n}ns2U`fa8hoj9_W|*Y{Dbr<K})v0F$0VS`KKG zG%no5E7EIJ456=#Uv*I17a~o9O(({*>d1`cdHm7Alh-~4Cc)Fh*lW#a#yMQO>d=68 zKH{~BPoO*5wd^2?v>wt8{I@U{2@t4G7mWh394DWh%p>B~r?ojNe%$JHRwiU~TvbVb z@Lbn_E*83~Q_8$0t{VvzX}`s+YvfJe;&ce7YciDH>DtUU9P;*-2_AW88zuZJep!l> ztjmf`ch~PtE^*(>*&uQ^<Zt!41&6cKJ@@w(7ga1OC>D7d3(I_-rlRU}s`>B666ztZ SLqt6~qx5-xSn>6Ezy1$`HR138 diff --git a/theme/orangewhite/pix/tab/tabsbg.gif b/theme/orangewhite/pix/tab/tabsbg.gif deleted file mode 100644 index 51950d9ead33813768061ecc821942e6f4b2e13a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmZ?wbhEHb<YZ7{*v!lD{^RF&A3lBf^!dZ5FCRXBK7IE5>$mSOUAg-B>GRun?%ld` z@5$5Wmo8rgs$l>F#h)yU3=F&sIv^g%3<ehK4JSQU@3nY+cK82yg}#)`c^O=5a$fH% s&=D?)<*r!w{^x`L_RR$rE(&7DRGcPe7|rfH+^D!#j_XE_854sw0JIB6IsgCw diff --git a/theme/orangewhite/pix/tab/tabsbg2.gif b/theme/orangewhite/pix/tab/tabsbg2.gif deleted file mode 100644 index 5206c71d906bc5be9ef448bc8d6e7a241e3f9858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmZ?wbhEHb<YZ7{I3mRG?!%{-uiw6Y`~KOBS68lGKYjN6^_#bE-@SkT;p1}`E?&HJ z<?+*J?>>Bd`|iV=cOTxp|M>XHvx}Fn0Ch1C2NZv@FfuR*G3bDlgY0Br^<1FRmy$Uz zW7WEx*ZcGp&X?rgub5}=^Zs*hoAL_{GnNx6Mh9}t*e_(1IL11x327<YZCkNFzPZ9i YZN~ZM9Z6@yT!cPU>~UCs-I>7}076Mxx&QzG diff --git a/theme/orangewhite/pix/tab/tabsbg_x2.gif b/theme/orangewhite/pix/tab/tabsbg_x2.gif deleted file mode 100644 index e99c2c7e5dc0dcf2e2cdef8f1a1b20fb58d1688b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmV+f0sH<(Nk%w1VF>_40K^;s?(p*O@$>NV^UKZ8>+SE?+1uOQ-{$D*>Fe$A^7Pc! z*YNT4&d|}{;p5WO)#K&o+uYvc<>v12@zK)M?e6gG?(pvK@#Ey?(bLr0+}_gD)#T;p z?(p&e0000000000A^8LW000~SEC2ui00{s@000GnASaGwX`X1Ru59bRCLqsrZQppF zTT<`y6iOvnDN+c?WD>z_HV@EfG(wGBtki~fyES;f--38NR+!Ic%w)};U>NXtd_b?) zVfeg$&+o5vfPsMlgoTEOh>41e3yqGB0+EuFl#&UTn3zhN4-Xripbr@kq@$z|4h|Zr KtPXasApkq$1CC(; diff --git a/theme/orangewhite/screenshot.jpg b/theme/orangewhite/screenshot.jpg deleted file mode 100644 index d9001161fe77129e152175f431641057b794a97b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37408 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 WG<`aE@;@lR|0iANfAuTB#{MrvH?J}P diff --git a/theme/orangewhite/section_508.gif b/theme/orangewhite/section_508.gif deleted file mode 100644 index 89e9c9a1817070a1848626a06bd76fd76d351fba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 zcmZ?wbhEHb3}fJDc*el+Y&ygL|Nqm{(j3zF{rmU#9}xfj<&d_|A$6Za@;<w??GD-d z9J2N~Wb7-LdhYg<4*}JCk6(G|P_*yW`|pomeYo}b<DI9UK7ajr;m*63g=aUPcyjU1 zyVVCDeERysA$jktEw?uvf3o_}qc7inX7nDp_TYm<?!N3vXAWI_?ohn%__f!4D{o9* zcPXOfsD0wD`8)0|*m2h(Y43?^uik(B`18k?sT*%D+;Q*s@2?JF`y6ui&e(MG!riw) zb%#HE{vJ?sVCR|VyU#p3a^+R#q*HYZE;uCZb4UOx+vkwE&mnQ&mHTh6KYV}a^2?)F zUfp~8#vyBO?Se}a*4^~3I_QwUuVeWYhlITj*?U784l@iWQ2faPwqFNCg5rdM{eJ^f zQ*%peTYE=mS9eb*WB-JSlO|7@I&J!lnUk9s8RpGjuyE1hC5suEnfdzFSFBw-cj?CY zjB_?^+rDgtH7lc|>$>$jmTqC%aOn8P<;)hWPUh_F+y{=G*t~VYgn2h_9lL$^?&i%a zIE4946&3tc*WK^meC6GZ>$etu`0|}$!>>C(mU9Iuag^+EIB-<3?BRyHx6{`~>@E8t z^eozAeeiZhWsU%Y1<A~u-1aM29<${s*;n$p8ZNofzjR+7_l$%W3sXF~6byN0Bs6r* z@}73<+0$<GFS8HTsro)MHhRoCk!^+0mIr}~j_1oiY`P{KwRW``n^6tV#0Dj=$sCp( z4krx`q?;z?S?pD^-rB^#&CijrM<Jk<fl)g5DVwk6j@A2BSWH$pI6XKlA|<21BE}Ow W`RVBy#^G5<c5Z%tzK4mC!5RQ*Cq(N2 diff --git a/theme/orangewhite/styles.php b/theme/orangewhite/styles.php deleted file mode 100644 index 080b57c7271..00000000000 --- a/theme/orangewhite/styles.php +++ /dev/null @@ -1,18 +0,0 @@ -<?PHP /* $Id$ */ - -/// Every theme should contain a copy of this script. It lets us -/// set up variables and so on before we include the raw CSS files. -/// The output of this script should be a completely standard CSS file. - -/// THERE SHOULD BE NO NEED TO MODIFY THIS FILE!! USE CONFIG.PHP INSTEAD. - - - $lifetime = 600; // Seconds to cache this stylesheet - $nomoodlecookie = true; // Cookies prevent caching, so don't use them - require_once("../../config.php"); // Load up the Moodle libraries - $themename = basename(dirname(__FILE__)); // Name of the folder we are in - $forceconfig = optional_param('forceconfig', '', PARAM_FILE); // Get config from this theme - - style_sheet_setup(filemtime('styles.php'), $lifetime, $themename, $forceconfig); - -?> diff --git a/theme/orangewhite/styles_color.css b/theme/orangewhite/styles_color.css deleted file mode 100644 index 0afaad60588..00000000000 --- a/theme/orangewhite/styles_color.css +++ /dev/null @@ -1,639 +0,0 @@ -/* $Id$ */ - -/************************************************* -*** -*** color -*** -**************************************************/ - -/************************************************* -*** -*** This CSS file contains all color definitions -*** like background-color, font-color, -*** border-color etc. -*** -*** Shortindex: -*** basic and general styles -*** header and footer styles -*** content styles (alphabetically) -*** admin, course, activities, calendar, blocks -*** -*** Please sort new styles for existing content -*** into the appropriate part of this CSS file. -*** Styles for new Blocks or Activities please -*** place at the end. -*** Wouldn't the alphabetical order be better? -*** -**************************************************/ - - -/* basic styles */ -font { - background-color:transparent; -} - -a:link { - color:#1246A3; -} -a:visited { - color:#AE1107; -} -a:hover { - border-bottom-color:#EC6E0A; -} - -a.autolink:link { - background-color:transparent; - color:#000000; - border-bottom-color:#000000; -} - -a.autolink:visited { - background-color:transparent; - color:#000000; - border-bottom-color:#000000; -} - -a.autolink:hover { - background-color:transparent; - color:#000000; - border-bottom-color:#000000; -} - -a.dimmed:link { - color:#AAAAAA; -} - -a.dimmed:visited { - color:#AAAAAA; -} - -a.dimmed:hover { - color:#990000; -} - - -/* general styles */ -body { - /*margin:0px; - padding:0px;*/ - background-color:#FFFFFF; - color:#000000; -} - -.highlight { - background-color:#C0CAD4; -} - -.highlight2 { - color:#AA0000; /* highlight missing terms in forum search */ -} - -.dimmed_text { - color:#AAAAAA; -} - -/* header styles */ -#nav-bar a:link { - color:#1246A3; -} - -#nav-bar a:visited { - color:#AE1107; -} - -#nav-bar, -#nav-bar td, -#nav-bar input { - color:#000000; -} - -#nav-bar hr { - background-color:#0B4161; - color:#0B4161; -} - - -/* footer styles */ - - -/***************************** -*** -*** content styles -*** -******************************/ -#content { - background-color:#EEF0F2; - border-color:#FFFFFF; -} - -#layout-table { - background-color:#FFFFFF; -} - - -/* many places */ -.generalbox { - background-color:#FFFFFF; - border-color:#D1D7DC; -} - -.generalboxcontent { - background-color:#FFFFFF; - border-color:#D1D7DC; -} - -.noticebox { - border-color:#D1D7DC; -} - - -/* weblib.php table */ -.tabledivider { - border-color:#C0CAD4; -} - - -/* entry page */ -#site-index { - background-color:#FFFFFF; -} - -#site-index #left-column { - background-color:#F9FAFA; -} - -#site-index #middle-column .headingblock, -#site-index #middle-column .forumpostheadertopic, -#course-view #middle-column .headingblock, -#course-view #middle-column .forumpostheadertopic { - background-color:transparent; - border-color:#FFC86C; -} - - -/* entry-page index.php */ -.sitetopic, -.siteinfo { - border-color:#D1D7DC; -} - -.siteinfocontent { - background-color:#EEF0F2; -} - - -/* summary of a user in a nice little box - weblib.php */ -.userinfobox { - border-color:#D1D7DC; - background-color:#FFFFFF; -} - -#mod-forum-user .forumpost { - background-color:#FFFFFF; - margin:0; - padding:10px 2em -} - -/***************************** -*** -*** Admin -*** -******************************/ - - -/***************************** -*** -*** Login -*** -******************************/ -#login-index .content { - background-color:#FFFFFF; -} - -/***************************** -*** -*** Course -*** -******************************/ -.course .course-content { - background-color:#FFFFFF; -} - - -/* course, entry-page, login */ - - -/* course */ -#left-column { - background-color:#F9FAFA; -} - -#right-column .sideblockheading { - background-color:#FFDA9D; -} - -#left-column .sideblocklinks { - background-color:#F9FAFA; - border-color:#FFFFFF; -} - -#left-column td.sideblocklinks:hover, -#left-column td.sideblocklinks:active { - background-color:#FFB63B; -} - -#course-view .headingblock { - background-color:#FFFFFF; - border-left-color:#FFC86C; -} - -#course-view .activity { - background-color:transparent; -} - -#course-view .section .left { - border-left-color:#FFC86C; -} - -#course-view .hidden .left { - border-left-color:#EEF0F2; -} - -#course-view .section .left a { - color:#FFFFFF; -} - -.categorybox { - border-color:#D1D7DC; -} - -.courseboxcontent { - border-color:#D1D7DC; -} - - -/***************************** -*** -*** Activities -*** -******************************/ -/* assignment, forum, glossary */ -.forumpost { - border-color:#D1D7DC; -} - -.forumpostpicture { - background-color:#FFFFFF; -} - -.forumpost .side { - background-color:#EEF0F2; -} - - -/* forum */ -.forum { - background-color:#FFFFFF; - border-color:#D1D7DC; -} - -.forumpost .header .topic { - background-color:#C0CAD4; -} - -.forumpost .header .starter { - background-color:#FFC86C; -} - -.forumpost .picture { - background-color:#EEF0F2; -} - -.forumpost .content { - background-color:#FFFFFF; -} - -.forumpostheadername { - background-color:#EEF0F2; -} - -.forumpostheaderdate { - background-color:#EEF0F2; -} - -.forumheaderlist, -.forumheaderlist thead tr th { - border-color:#D1D7DC; -} - -.forumthread .unread { - background:#FFD991; -} - -.unread { - border-color:#FFB63B; - color:#555555; -} - - -/* glossary */ -.glossary { - /*background-color:#FFFFFF;*/ - background-color:#EEF0F2; - border-color:#D1D7DC; -} - -.glossary .forumpost td { - background-color:#FFFFFF; -} - -/*.glossary td, -.glossary-edit td { - background-color:transparent; -} - -.glossary center center td table td, -.glossary-edit center center td table td { - background-color:#FFFFFF; -} - -.glossary center center td, -.glossary-edit center center td { - background-color:#EEF0F2; -} - -.glossary table.generaltabselected td, -.glossary form table.generaltabselected td { - background-color:#FFC86C;*/ -} - -.glossary form table.forumpost td { - background-color:#F9FAFA; -} - -.glossary .generaltabselected { - background-color:#FFD991 !important; -} - -/* new glossary styles */ -.glossarypost .entry, -.glossary .glossaryintrobox { - background-color:#FFFFFF; -} - -.glossary .generaltab, -.glossary .general { - background-color:#D1D7DC !important; -} - -.glossary table.tabs { - border-color:#D1D7DC; -} - -.glossary .inactive { - background-color:transparent; - border-color:#D1D7DC; -} - -.mod-glossary .entrybox { - background-color:#FFFFFF; -} - -/* lang, forum */ -.teacheronly { - color:#AE1107; -} - - -/* quiz */ -.feedbacktext { - color:#C0CAD4; -} - - -/* wiki styles */ -.mwiki { - border-color:#D1D7DC; -} - -.mwiki .edit { - background-color:#FFFFFF; -} - -.wiki { - border-color:#A7B1B7; -} - -.wiki .title { - background-color:#EEF0F2; - border-color:#C6BDA8; -} - -.mwiki .generaltab { - background-color:#D1D7DC !important; -} - -.mwiki .generaltabselected { - background-color:#FFD991 !important; -} - - -/***************************** -*** -*** Calendar -*** -******************************/ -body.calendar #calendar { - background-color:#FFFFFF; -} - -body.calendar #calendar .sidecalendar { - background-color:#F9FAFA; -} - -TABLE.minicalendar { - border-color:#C0CAD4; -} - -TABLE.calendarmonth { - border-color:#C0CAD4; -} - -TABLE.minicalendar TBODY TD { - border-color:#C0CAD4; -} - -TABLE.calendarmonth TBODY TD { - /*background-color:#EEF0F2;*/ - border-color:#C0CAD4; -} - -TABLE.calendarmonth THEAD TD { - /*background-color:#EEF0F2;*/ - border-bottom-color:#666666; -} - -.event_global { - background-color:#2FCD0D !important; - border-color:#2FCD0D !important; -} - -.event_course { - background-color:#ff3333 !important; - border-color:#ff3333 !important; -} - -.event_group { - background-color:#ffcc33 !important; - border-color:#ffcc33 !important; -} - -.event_user { - background-color:#99ccff !important; - border-color:#99ccff !important; -} - -.cal_duration_global { - border-top-color:#2FCD0D !important; - border-bottom-color:#2FCD0D !important; -} - -.cal_duration_course { - border-top-color:#ff3333 !important; - border-bottom-color:#ff3333 !important; -} - -.cal_duration_user { - border-top-color:#99ccff !important; - border-bottom-color:#99ccff !important; -} - -.cal_duration_group { - border-top-color:#ffcc33 !important; - border-bottom-color:#ffcc33 !important; -} - -.cal_weekend { - color:red; -} - -.cal_today { - border-color:#666666 !important; -} - -.mycalendar { - background-color:#EEF0F2; -} - -.mycalendar TABLE.cal_filters { - border-color:#C0CAD4; -} - -.mycalendar .cal_filters THEAD TD { - border-bottom-color:#666666; -} - -.mycalendar .event_table { - border-color:#C0CAD4; -} - -.mycalendar .event_table THEAD { - background-color:#EEF0F2; -} - -.mycalendar HR { - border-top-color:#999; -} - -.calendarexpired { - color:red; -} - -TD.event_description { - border-left-color:#C6BDA8; -} - -#calendar .today, -.minicalendar .today { - border-color:#C0CAD4 !important; -} - -.cal_popup_fg { - background-color:#EEF0F2; -} - -.cal_popup_bg { - background-color:#FFFFFF; - border-top-color:#C6BDA8; - border-left-color:#C6BDA8; - border-right-color:#663300; - border-bottom-color:#663300; -} - -.cal_popup_caption { - background-color:#FFFFFF; -} - -.eventfull { - border-color:#D1D7DC; -} - - -/***************************** -*** -*** Blocks -*** -******************************/ -/* sideblock */ -.sideblock a:link { - color:#4B809E; -} - -.sideblock a:visited { - color:#C16E28; -} - -.sideblock, -.sideblock .content, -.sideblock .list { - background-color:#F9FAFA; -} - -.sideblock .header { - background-color:#EEF0F2; - color:#666666; -} - -.sideblock .content { - color:#666666; -} - -.sideblock .content hr { - border-top-color:#999; -} - -/* sideblock intermediate styles */ -#right-column th.header { - background-color:#FFEDCE; -} - -#right-column .sideblock, -#right-column .sideblock .content, -#right-column .sideblock .list { - background-color:#FFFFFF; - border-color:#C0CAD4; - -} - -/* course summary */ -#block_course_summary .sideblockmain { - background-color:#F9FAFA; - color:#000000; -} - - -/* glossary random */ -#block_glossary_random .sideblockmain { - /*background-color:#FFDA9D;*/ -} diff --git a/theme/orangewhite/styles_fonts.css b/theme/orangewhite/styles_fonts.css deleted file mode 100644 index e2a87cf6a10..00000000000 --- a/theme/orangewhite/styles_fonts.css +++ /dev/null @@ -1,396 +0,0 @@ -/* $Id$ */ - -/************************************************* -*** -*** fonts -*** -**************************************************/ - -/************************************************* -*** -*** This CSS file contains all font definitions -*** like family, size, weight, -*** text-align, letter-spacing -*** etc. -*** -*** Shortindex: -*** basic and general styles -*** header and footer styles -*** content styles (alphabetically) -*** admin, course, activities, calendar, blocks -*** -*** Please sort new styles for existing content -*** into the appropriate part of this CSS file. -*** Styles for new Blocks or Activities please -*** place at the end. -*** Wouldn't the alphabetical order be better? -*** -**************************************************/ - - -/* basic styles */ -font { - font-size:100% !important; -} - -.clearer { - font-size:1px; -} - -.smallinfo { - font-size:100%; -} - -.smallinfohead { - font-size:100%; -} - - -/* general styles */ -body { - font-family:"Lucida Grande", Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif !important; - font-size:1em; - line-height:1.2em; - letter-spacing:0.02em; -} - -/*td, th, p, a { - font-family:inherit; - font-family:inherit; - font-size:inherit; -}*/ - -th { - font-weight:bold; -} - -a { - font-family:inherit; - font-size:inherit; - line-height:150%; - text-decoration:none; -} - -a:hover { - text-decoration:underline; -} - -a.dimmed:link, -a.dimmed:visited, -a.dimmed:hover, -a.autolink:link, -a.autolink:visited, -a.autolink:hover { - text-decoration:none; -} - -h2 { - font-size:150%; - font-weight:bold; -} - -h3 { - font-size:130%; - font-weight:bold; -} - -h4 { - font-size:110%; - font-weight:bold; -} - - - -/* header styles */ -#header, -#header-home { - font-size:90%; -} - -#nav-bar { - font-size:80%; -} - -#header-home .headermain { - font-size:150%; -} - -#header .headermain { - font-size:130%; -} - -.headermenu { - font-size:90%; - text-align:right; -} - -.headermain, -.headerhomemain { - font-weight:bold; -} - -.headerhomemenu, -.headerhomemenu a { - font-size:90%; -} - -.logininfo { - font-size:90%; -} - - -/* footer styles */ -#footer { - font-size:90%; - text-align:center; -} - -.homelink { - font-size:90%; -} - - -/***************************** -*** -*** content styles -*** -******************************/ -#content { - font-size:80%; - text-align:left; -} - - -/* many places */ -.noticeboxcontent { - text-align:center; -} - - -/* entry page */ -#site-index #layout-table { } - -#site-index #layout-table .sideblock a { } - -#site-index #block_course_summary { - line-height:1.5em; -} - - -/***************************** -*** -*** Admin -*** -******************************/ -#admin-config .generalbox, -#admin-site .generalbox, -#admin-backup .generalbox, -#admin-calendar .generalbox, -#admin-editor .generalbox, -#admin-lang .generalbox { - font-size:90%; - text-align:left; -} - -#admin-index .generaltable { - /*font-size:0.9em;*/ - text-align:left; -} - -#admin-lang FORM { - /*font-size:0.9em;*/ -} - -#admin-blocks #content p, -#admin-modules #content p { - margin:0; - padding:0; -} - - -/***************************** -*** -*** Login -*** -******************************/ -#login-index .content { - text-align:left; -} - - -/***************************** -*** -*** Course -*** -******************************/ -.course { - text-align:left; -} - - -/* course, entry-page, login */ -.headingblock { - font-weight:bold; -} - - -/* course */ -#left-column, -#right-column { - text-align:left; -} - -#middle-column{ - text-align:left; -} - -.outlineheadingblock { - font-weight:bold; -} - -.weeklydatetext { - font-weight:bold; -} - -.courseboxinfo { - font-weight:bold; -} - - -/***************************** -*** -*** Activities -*** -******************************/ -/* index, admin, course, lang, adodb, quiz */ -.categoryname, -.categorynumber { - font-weight:bold; -} - - -/* forum */ -.forum { - text-align:left; -} - -.forumpostheadertopic { } - -.unread { - font-style:normal; -} - - -/* glossary */ -.glossary .generaltab B, -.glossary .generaltabselected B, -.glossary .general B, -.glossary .inactive B { - font-weight:normal; -} - -.glossaryintrobox { - text-align:left; -} - -/* wiki */ -.mwiki { - text-align:left; -} - -.wiki .upload { - font-size:0.9em; -} - -.mwiki .generaltab, -.mwiki .generaltabselected { } - -#containerPageActions { - text-align:left; -} - - -/***************************** -*** -*** Calendar -*** -******************************/ -TABLE.minicalendar { - letter-spacing:0em; -} - -TABLE.minicalendar .day { - text-align:center; -} - -TABLE.minicalendar TBODY TD { - text-align:center; -} - -TABLE.calendarmonth TBODY TD TABLE { - line-height:1.2em; -} - -TABLE.calendarmonth TBODY TD DIV { - line-height:1.2em; -} - -TABLE.minicalendar THEAD TD, -TABLE.calendarmonth THEAD TD { - font-weight:bold; - text-align:center; -} - -TABLE.cal_controls td { - line-height:1.2em; -} - -.mycalendar .event { - font-weight:bold; -} - -.mycalendar .event_date { } - -.mycalendar .event_table THEAD { - text-align:center; - font-weight:bold; -} - -.calendarexpired { - font-weight:bold; -} - -.calendarreferer { - font-weight:bold; -} - -.cal_popup_caption { - font-weight:bold; -} - -.cal_popup_close { - font-weight:bold; -} - -.sideblock .cal_controls { } - - -/***************************** -*** -*** Blocks -*** -******************************/ -/* sideblock */ -.sideblock { - font-size:90%; -} - -.sideblock.header { - font-weight:bold; -} - -.sideblock .links { } - -td.sideblock .content { - text-align:left; -} \ No newline at end of file diff --git a/theme/orangewhite/styles_layout.css b/theme/orangewhite/styles_layout.css deleted file mode 100644 index d15de86bec0..00000000000 --- a/theme/orangewhite/styles_layout.css +++ /dev/null @@ -1,921 +0,0 @@ -/* $Id$ */ -/************************************************* -*** -*** layout -*** -**************************************************/ -/************************************************* -*** -*** This CSS file contains all layout definitions -*** like positioning, floats, -*** margins, paddding, -*** borders etc. -*** -*** Shortindex: -*** basic and general styles -*** header and footer styles -*** content styles (alphabetically) -*** admin, course, activities, calendar, blocks -*** -*** Please sort new styles for existing content -*** into the appropriate part of this CSS file. -*** Styles for new Blocks or Activities please -*** place at the end. -*** Wouldn't the alphabetical order be better? -*** -**************************************************/ - -/*** - *** Core - ***/ - -h1.main, -h2.main, -h3.main, -h4.main, -h5.main, -h6.main { - width:80%; - margin-left:auto; - margin-right:auto; -} - -/* basic styles */ - -.clearer { - clear:both; - margin:0; - padding:0; - border:none; - background:transparent; - height:1px; -} - -a.autolink:link { - border-bottom:dashed 1px; - cursor:help; -} - -a.autolink:visited { - border-bottom:dashed 1px; - cursor:help; -} - -a.autolink:hover { - border-bottom:solid 1px; - cursor:help; -} - -/* general styles */ -body { - margin:10px; /*behavior:url(/htc/csshover.htc);*/ -} - -ul { - margin-bottom:5px; - margin-top:0; -} - -form { - margin-bottom:0; -} - -a img { - border:none; -} - -input { - background:transparent; -} - - -/* header styles */ -#header-home { - padding:0.5em 0.5em; - height:2em; -} - -#header, -#header-main, -#nav-bar { - margin:0; -} - -#header { - padding:0.1em 0.5em; - height:50px; -} - -.headermain { - float:left; -} - -#header .headermain { - margin:0.2em 0; -} - -.headermenu { - float:right; - padding:0; - margin:0; -} - -#nav-bar { - margin-bottom:0; - padding:1px 0.5em; - background:url(colorstrip.gif) left no-repeat; - height:3em; -} - -#breadcrumb { - float:left; - padding-top:13px; - margin:0.2em 0; -} - -#navbutton { - float:right; - padding-top:13px; - margin:0.2em 0; -} - -#nav-bar hr { - height:1px; -} - -/* footer styles */ -#footer br { - display:none; -} - -#footer hr { - display:none; -} - -/***************************** -*** -*** content styles -*** -******************************/ -#content { - margin:0; - padding:0; - border:thin solid; -} - -/* many places */ -.generalbox { - margin-left:auto; - margin-right:auto; - border-width:1px; - border-style:solid; -} - -.generalboxcontent { - background-image:none; -} - -.noticebox { - border-width:1px; - border-style:solid; -} - -/* weblib.php table */ -.tabledivider { - border-width:1px; - border-style:solid; - border-left:0; - border-right:0; - border-top:0; -} - -/* entry page */ -#site-index #left-column, -#site-index #left-column .sideblock { - width:250px !important; -} - -#site-index #left-column .sideblock .content { - padding:0.5em; -} - -#site-index #middle-column { - width:auto; - padding:0 2.5em; -} - -#site-index #right-column { - width:30%; -} - -#site-index #middle-column .forumpost { - border-width:0; - border-style:none; -} - -#site-index #middle-column .forumpostpicture, -#site-index #middle-column .forumpostside { - display:none; -} - -#site-index #middle-column .headingblock, -#site-index #middle-column .forumpostheadertopic { - padding:1em; - border-width:0 0 0 25px; - border-style:solid; -} - -/* entry-page index.php */ -.sitetopic, -.siteinfo { - border-width:1px; - border-style:solid; -} - - -/*** - *** User - ***/ - -.userinfobox { - margin-bottom:5px; - border:1px solid; - border-collapse: separate; -} - -.userinfobox .left { - padding: 10px; - width: 100px; - vertical-align: top; -} - -.userinfobox .content { - padding: 10px; - vertical-align: top; -} - -.userinfobox .links { - width: 100px; - padding: 5px; - vertical-align: bottom; -} - -.userinfobox .list td { - padding: 3px; -} - -.userinfobox .username { - padding-bottom: 20px; -} - -.userinfobox { - width: 80%; - margin-left: 10%; - margin-right: 10%; -} - -table.groupinfobox { - width: 60%; - margin-left: 20%; - margin-right: 20%; - border-width:1px; - border-style:solid; - margin-bottom: 20px; -} - -.groupinfobox .left { - padding: 10px; - width: 100px; - vertical-align: top; -} -body#user-index #longtimenosee { - text-align:center; -} - -#user-edit .generalbox { - border-top-width:0; -} - -/***************************** -*** -*** Admin -*** -******************************/ -/* admin, calendar */ -table.formtable td { - padding:9px; -} - -/* admin */ -.admin #content, -.admin .generalboxcontent, -.admin .generalbox { - width:auto -} - -#user-edit .generalboxcontent { - width:100% -} - - -/***************************** -*** -*** Course -*** -******************************/ -/* course, entry-page, login */ -.generaltableheader { - background-image:none; -} - -/* course */ -#layout-table { - width:100%; - margin:0; - border-spacing:5px; - border-collapse:separate; -} - -#layout-table tr, -#layout-table td { - vertical-align:top; -} - -#left-column, -#right-column { - margin:0; - padding:0; - border:0; -} - -#middle-column { - padding:0 15px; -} - -#course-view .headingblock { - border-style:none; - margin-left:2px; - padding-left:1.5em; - border-left:1.5em solid; - background-image:none; -} - -#course-view .activity { - border:0 none; -} - -#course-view table.section { - border-collapse:collapse; - border-spacing:0; -} - -#course-view .section td { - vertical-align:top; -} - -#course-view .section .content { - padding:0 1em; -} - -#course-view .section .side { -} - -#course-view .section .left { - width:0; - padding:0; - border-left:1.5em solid; -} - -#course-view .section .right { - width:2em; - padding:0.5em; - text-align:center; -} - -#course-view .current .side { -} - -#course-view .topics { - margin-top:9px; -} - -#course-view .weeks { - margin-top:9px; -} - -#course-view .section .spacer { - height:2em; -} - -#course-view .section .weekdates { -} - -.categorybox { - border-width:1px; - border-style:solid; -} - -.courseboxcontent { - border-width:1px; - border-style:solid; -} - -/***************************** -*** -*** Activities -*** -******************************/ -/* assignment, forum, glossary */ -.forumpost, -.forumheaderlist { - border-width:1px; - border-style:solid; -} - -/* forum */ -.forum { - width:100%; - margin-left:auto; - margin-right:auto; - border:1px solid; - position:relative; - /*width:45em;*/ -} - -/* new */ -.forumheaderlist, -.forumpost { - width:100%; - border-width:1px solid; - border-collapse:separate; -} - -.forumheaderlist thead tr th { - border:1px solid; -} - -.forumpost { - margin-top:15px; -} - -.forumpost .topic { - padding:4px; -} - -.forumpost .commands { - padding-top:0.5em; - text-align:right; -} - -.forumpost .ratings { - padding-top:1em; - text-align:right; -} - -.forumpost .content { - padding:4px; -} - -.forumpost .footer { - padding-top:0.5em; - text-align:right; -} - -.forumpost .left { - width:35px; - padding:4px; - text-align:center; - vertical-align:top; -} - -.forumpostindent { - margin-left:45px; -} - -.unread { - margin-left:1em; - border-width:0 0 1px 3px; - border-style:solid; -} - -/* glossary */ -.mod-glossary #glossary-view { - width:45em; - margin-left:auto; - margin-right:auto; - border:1px solid; - position:relative; -} - -/*.mod-glossary table { - width:100%; -}*/ -#mod-glossary-edit { - margin:0; - width:auto; -} - -.mod-glossary .generaltab, -.mod-glossary .generaltabselected, -.mod-glossary .general, -.mod-glossary .inactive { - width:100%; - padding:0 1px; - text-align:center; -} - -.mod-glossary table.tabs td.separator { - width:1%; -} - -.mod-glossary .glossarydisplay { - width:80%; -} - -.mod-glossary .tabs { - margin-bottom:0; - padding-bottom:0; -} - -.mod-glossary .entryboxheader hr { - display:none; -} - -.mod-glossary .entrybox { - border:1px solid #D1D7DC; - border-top:0 none; -} - -/* -.glossary .inactive { - border:1px solid; -}*/ -/* quiz */ -table.quiz td { - padding-top:0.1em; - line-height:1.7em; -} - -table.quiz input { - padding-top:0.1em; - height:1.7em; - vertical-align:top; -} - -/* wiki */ -.wiki { - border-width:1px; - border-style:solid; -} - -.mwiki .view { - margin-left:auto; - margin-right:auto; - width:35em; -} - -.mwiki .edit { - margin-right:auto; - margin-left:auto; - padding:0; -} - -.wiki .title { - padding:3px; - border:1px solid; -} - -.wiki .upload { - padding-top:1em; -} - -#wikipageactions { - width:auto !important; - margin:auto; - position:relative; -} - -#wikipageactions td { - text-align:left !important; -} - -#wikipageactions input { - padding:0; - margin:0; -} - -.mwiki { - width:45em; - margin-left:auto; - margin-right:auto; - border:1px solid; - position:relative; -} - -/***************************** -*** -*** Calendar -*** -******************************/ -body.calendar #calendar tr, -body.calendar #calendar td { - vertical-align:top; -} - -body.calendar #calendar td.maincalendar { - padding:0 2em; -} - -body.calendar #calendar td.maincalendar .buttons { - float:right; -} - -body.calendar #calendar table.calendarmonth { - padding:1em 0; -} - -table.minicalendar { - width:100%; - margin:0; - padding:0; - border-width:1px; - border-style:solid; -} - -table.calendarmonth { - width:100%; - margin:0; - padding:0; - border-width:1px; - border-style:solid; -} - -table.minicalendar tbody td { - width:14%; - border-width:1px 0; - border-style:none; - vertical-align:center; -} - -table.calendarmonth tbody td { - width:14%; - border-width:1px; - border-style:solid; - vertical-align:top; -} - -table.calendarmonth tbody td table { - margin-top:0; - margin-left:0; -} - -table.calendarmonth tbody td table td { - border:none; - background:none; -} - -table.calendarmonth tbody td div { - margin-top:0; - margin-left:0; -} - -table.minicalendar thead td { - vertical-align:center; -} - -table.calendarmonth thead td { - padding-bottom:3px; - border-bottom:2px solid; - vertical-align:center; -} - -.event_global { - border:2px solid !important; -} - -.event_course { - border:2px solid !important; -} - -.event_group { - border:2px solid !important; -} - -.event_user { - border:2px solid !important; -} - -.cal_duration_global { - border-top:2px solid !important; - border-bottom:2px solid !important; -} - -.cal_duration_course { - border-top:2px solid !important; - border-bottom:2px solid !important; -} - -.cal_duration_user { - border-top:2px solid !important; - border-bottom:2px solid !important; -} - -.cal_duration_group { - border-top:2px solid !important; - border-bottom:2px solid !important; -} - -.cal_today { - border:2px solid !important; -} - -.mycalendar table.cal_filters { - margin:0; - padding:2px; - width:100%; - border-width:1px; - border-style:solid; -} - -.mycalendar .cal_filters thead td { - margin:0; - padding:2px; - border-bottom:2px solid; -} - -.mycalendar .event_table { - margin:0; - padding:2px; - width:100%; - border-width:1px; - border-style:solid; -} - -.mycalendar hr { - border:none; - border-top:1px solid; - margin-top:4px; - margin-bottom:4px; - height:1px; -} - -td.event_description { - width:80%; - border-left:2px solid; - padding:5px; - vertical-align:top; -} - -#calendar .today, -.minicalendar .today { - border:1px solid !important; -} - -.cal_popup_bg { - padding:0; - margin:0; - border-top:2px solid; - border-left:2px solid; - border-right:2px solid; - border-bottom:2px solid; -} - -.cal_popup_close { - margin-right:5px; -} - -.eventfull { - border-width:1px; - border-style:solid; -} - -.eventfullpicture { - padding:8px; -} - -table.calendar-controls { - width:100%; - text-align:center; -} - -table.calendar-controls .previous, -table.calendar-controls .next { - width:12%; -} - -#calendar .maincalendar .calendar-controls .previous, -#calendar .maincalendar .calendar-controls .next { - width:30%; -} - -/***************************** -*** -*** Blocks -*** -******************************/ -/* sideblock */ -.sideblock { - width:100%; - border:0 none; -} - -.sideblock .header { - padding:0 5px; - border:0 none; - background-image:none; -} - -#right-column .sideblock { - border:1px solid; -} - -.sideblock .header .hide-show { - float:right; -} - -.sideblock .header .hide-show img.hide-show-image { - width:11px; - padding-top:0.35em; - height:11px; -} - -.sideblock .header .hide-show img.hide-show-image { - background:url('../../pix/t/switch_minus.gif') no-repeat bottom; -} - -.sideblock.hidden .header .hide-show img.hide-show-image { - background:url('../../pix/t/switch_plus.gif') no-repeat bottom; -} - -.sideblock .header .title { - float:left; - width:auto; -} - -.sideblock.hidden .content { - display:none; -} - -.sideblock .header .commands { - float:right; - padding-left:0.2em; -} - -.sideblock .header .commands a { - border-bottom:none; - cursor:pointer; -} - -.sideblock .header .commands a img { - padding-top:0.5em; -} - -.sideblock .list { - width:100%; -} - -.sideblockmain hr { - border:none; - border-top:1px solid; - margin-top:4px; - margin-bottom:4px; - height:1px; -} - -#left-column .sideblock { - margin-bottom:0; -} - -#left-column .sideblockmain { - padding:1px 0; -} - -#left-column .sideblock .header, -#left-column .sideblock { - border-width:0 0 0 1px; -} - -#left-column .sideblock .list { - padding-left:5px; -} - -#right-column .sideblock { - margin:1em 0 0.5em; -} - -/* glossary random */ -.block_glossary_random .sideblockheading, -.block_glossary_random .sideblockmain br, -.block_glossary_random .sideblockmain b { - display:none; -} - -.block_glossary_random .sideblockmain { - text-align:center; -} - -/* course summary */ -.block_course_summary .sideblockmain { - padding:10px; -} - diff --git a/theme/orangewhite/styles_tabs.css b/theme/orangewhite/styles_tabs.css deleted file mode 100644 index efe12c9be2e..00000000000 --- a/theme/orangewhite/styles_tabs.css +++ /dev/null @@ -1,220 +0,0 @@ -/******************************************************************* -*** Tabs -*******************************************************************/ - -.userinfobox { - border-top:0 none; - padding-top:0; - margin-top:0; -} - -#mod-forum-user .forumpost, -#course-user .section .content { - border-top:0 none; -} - -#user-view .tabs td, -#user-edit .tabs td, -#mod-forum-user .tabs td { - padding-bottom:0; -} - -#user-edit .generalbox { - width:100% -} - -#mod-glossary-view .glossarydisplay tr, -#mod-glossary-view .glossarydisplay td { - border:0 none !important; -} - -#mod-glossary-view .entryboxheader { - display:none; -} - -.tabs { - width:auto; - margin-left:auto; - margin-right:auto; - margin-bottom:0; -} - -#user-view .tabs { - width:80%; -} - -.tabs tr { - border:1px none #FF0000; - background:url(pix/tab/tabsbg_x2.gif) bottom left repeat-x; -} - -.tabs .left { - width:0; -} - -.tabs .right { - width:75%; -} - -.tabrow { - width:100%; - margin:0; - border-collapse:collapse; -} - -.tabrow td { - padding:0 0 0 14px; - height:34px; -} - -.tabs .r1 { - margin-bottom:1px; -} - -.tabs .r0 .active { - background:url(pix/tab/left.gif) bottom left no-repeat; -} - -.tabs .r1 .active { - background:url(pix/tab/left2.gif) bottom left no-repeat; -} - -.tabs .r0 .inactive { - background:url(pix/tab/left_inactive.gif) bottom left no-repeat; -} - -.tabs .r1 .inactive { - background:url(pix/tab/left_inactive2.gif) bottom left no-repeat; -} - -.tabs, -.tabs tr, -.tabs .td, -.tabrow, -.tabrow tbody, -.tabrow tr, -.tabrow td { - background-color:transparent; -} - -.tabrow th { - display:none; -} - -.tabrow td .tablink { - padding:0 14px 0 0; - /*display:block;*/ - white-space:nowrap; - line-height:32px; - text-align:center; - text-decoration:none; - height:34px; - width:auto; -} - -.tabs .r0 .active .tablink { - background:url(pix/tab/right.gif) bottom right no-repeat; -} - -.tabs .r1 .active .tablink { - background:url(pix/tab/right2.gif) bottom right no-repeat; -} - -.tabs .r0 .inactive .tablink { - background:url(pix/tab/right_inactive.gif) bottom right no-repeat; -} - -.tabs .r1 .inactive .tablink { - background:url(pix/tab/right_inactive2.gif) bottom right no-repeat; -} - -.tabrow td .tablink a { - width:auto; - line-height:32px; -} - -.tabs .r0 .active:hover { - background:url(pix/tab/left_hover.gif) bottom left no-repeat; -} - -.tabs .r0 .active:hover .tablink { - background:url(pix/tab/right_hover.gif) bottom right no-repeat; - line-height:32px; -} - -.tabs .r0 .inactive:hover { - background:url(pix/tab/left_inactive.gif) bottom left no-repeat; -} - -.tabs .r0 .inactive:hover .tablink { - background:url(pix/tab/right_inactive.gif) bottom right no-repeat; - line-height:32px; -} - -.tabs .r1 .active:hover { - background:url(pix/tab/left_hover2.gif) bottom left no-repeat; -} - -.tabs .r1 .active:hover .tablink { - background:url(pix/tab/right_hover2.gif) bottom right no-repeat; - line-height:32px; -} - -.tabrow .last span { - padding:0 1px 0 0; - display:block; - background:url(pix/tab/right_end.gif) bottom right no-repeat; -} - -.tabs .r0 .selected { - background:url(pix/tab/left_active.gif) bottom left no-repeat; -} - -.tabs .r1 .selected { - background:url(pix/tab/left_active2.gif) bottom left no-repeat; -} - -.tabs .r0 .selected .tablink { - background:url(pix/tab/right_active.gif) bottom right no-repeat; - line-height:32px; -} - -.tabs .r1 .selected .tablink { - background:url(pix/tab/right_active2.gif) bottom right no-repeat; - line-height:32px; -} - -.tabrow td.selected:hover { - background:url(pix/tab/left_active.gif) bottom left no-repeat; -} - -.tabrow td.selected .tablink:hover { - background:url(pix/tab/right_active.gif) bottom right no-repeat; -} - - - -.tabs { - border:0 none -} - - -/******************************************************************* -*** Tabs -*******************************************************************/ -.tabs { - font-size:90% -} -.tablink a:link, -.tablink a:visited { - color:#000066; -} - -.tablink a:hover { - text-decoration: none; -} - -.selected .tablink a:link, -.selected .tablink a:visited { - color:#000000; -} \ No newline at end of file diff --git a/theme/orangewhite/xhtml_1_0.gif b/theme/orangewhite/xhtml_1_0.gif deleted file mode 100644 index 119e2ca7ea191e758d555197017c7044cc031a5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 780 zcmV+n1M~bxNk%w1VO9VS0OkMy-{0Tp@AVr~mEz*!{r&%To58cj+&XHa3q_1pf3Jz9 z$Nm5RB~p~w<L=Vl>sf=d`TG2)rlq62)S<c5oV3g$T9__kojhlt=9d8f|NmxYX8!*E zL2jqEwzjp%-TV9g`uqK~#@(~9uDHwMRDrOv#o5f-=*rvZ@b>$Ifq&K2)!patUWc^) z{{Q;_|6W~O`~CjS-s|J*@?VU%ho{Kh=I`6(?~ba<(%<YrZKN_}o={Lw|Ns4dp~SDm z+6O?0cb&o)Qj+}q{OjuJVu-d9MT_R`^yTdJM|Z7fXJ_#6@ZH_r#KgqFz`#mzro7SO zCtR8G`2Km7zVr6^@%8zkp`lrYvg+*Yv$M0GyVlXr&{>DHU|?YP`TLcXmGk!d#LLk8 z{QQcj$3ktTd7;Gf^Yi-p`uqL;m9WjfzrQnRqmZr4H)WuYvCzla=rC87&(YHB@%M&? zhDu6G3^#<-;_cYk*=dox`uzR<{r>#@{Z&;}grv%=!`g$R$7qVUA^8LV00000EC2ui z09F7G000O7fEt2>goTEOh>41ejENbKkdcy;l$Dm3n3<D;nwc1%prN9pq@|{(pc$MQ z1O^frMidPhdOmjr1wAN3UL6Bhkf_4L#HFelk9ib2XEF~o88tZvWJMfNDRW#JcEQEp z;HJlr4HZui4;L9FPzHSmBU&$MOma%zpBbt7{21Q){Q!=7G*BR^agVxK`4h(igE|UW z#CS8tg@_1`%0v>SPar^#sXBfX$FbkRRT=O|sL)1Df*D)T1dt+t51au)CJhX=(PT$| zCU^1-$`NG-8$lQV$@1fZi40T}2*9y{Qb~|NeeTP8uq4-kMyDj8<Hi93Cnt_%2!VhC zk4FG$0N~>~lJ3^5bMq1OXb>ziNFXL~fDwSmjR|c0SU>_MLWe3lROAgu`5Qt=E7oM# z;K2g~F$YLE2-76V9xP@iS6+?k@}mVG9&ON*;fsR+EjBL!kf$f>->r>y8cw{p@kYp# KD__ni5CA(5BB=xb diff --git a/theme/orangewhitepda/config.php b/theme/orangewhitepda/config.php deleted file mode 100644 index 9638eaca1e8..00000000000 --- a/theme/orangewhitepda/config.php +++ /dev/null @@ -1,68 +0,0 @@ -<?PHP // $Id$ - -//////////////////////////////////////////////////////////////////////////////// -/// This file contains a few configuration variables that control -/// how Moodle uses this theme. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->sheets = array('styles_layout', 'styles_font', 'styles_color'); - -/// This variable is an array containing the names of all the -/// stylesheet files you want included in this theme, and in what order -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->standardsheets = false; - -/// This variable can be set to an array containing -/// filenames from the *STANDARD* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout', 'styles_fonts', -/// 'styles_color', 'styles_moz'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parent = ''; - -/// This variable can be set to the name of a parent theme -/// which you want to have included before the current theme. -/// This can make it easy to make modifications to another -/// theme without having to actually change the files -/// If this variable is empty or false then a parent theme -/// is not used. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parentsheets = false; - -/// This variable can be set to an array containing -/// filenames from a chosen *PARENT* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout', 'styles_fonts', -/// 'styles_color', 'styles_moz'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->custompix = false; - -/// If true, then this theme must have a "pix" -/// subdirectory that contains copies of all -/// files from the moodle/pix directory, plus a -/// "pix/mod" directory containing all the icons -/// for all the activity modules. -//////////////////////////////////////////////////////////////////////////////// - -?> diff --git a/theme/orangewhitepda/css.gif b/theme/orangewhitepda/css.gif deleted file mode 100644 index 312cde94381c20c32f83488c2f1eb94d31c83d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 750 zcmV<K0ulX3Nk%w1VO9VS0OkMy-{0Tp@AVr~mEz*!{r&%To58cj+&XHa3q_1pf3Jz9 z$Nm5RB~p~w<L=Vl>sf=d`TG2)rlq62)S<c5oV3g$T9__kojhlt=9d8f|NmxYX8!*E zL2jqEwzjp%-TV9g`uqK~#@(~9uDHwMRDrOv#o5f-=*rvZ@b>$Ifq&K2)!patUWc^) z{{Q;_|6W~O`~CjS-s|J*@?VU%ho{Kh=I`6(?~ba<(%<YrZKN_}o={Lw|Ns4dp~SDm z+6O?0cb&o)Qj+}q{OjuJVu-d9MT_R`^yTdJM|Z7fXJ_#6@ZH_r#KgqFz`#mzro7SO zCtR8G`2Km7zVr6^@%8zkp`lrYvg+*Yv$M0GyVlXr&{>DHU|?YP`TLcXmGk!d#LLk8 z{QQcj$3ktTd7;Gf^Yi-p`uqL;m9WjfzrQnRqmZr4H)WuYvCzla=rC87&(YHB@%M&? zhDu6G3^#<-;_cYk*=dox`uzR<{r>#@{Z&;}grv%=!`g$R$7qVUA^8LV00000EC2ui z09F7G000O7fEt2>goTEOh>41ejENbKkdcy;l$Dm3n3<D;nwc1%prN9pq@|{(pc$MQ z1O^frMidPhdOmjr1wAN3UL6Bhkf_4L#HFelk9ib2XEF~o88tZvWJMfNDRW#JcEQEp z;HJlr4HZui4;L9FPzHSmBU&$MOma%zpO2yV_~GH>kGfd-6UPFBItp0Ccr(U@hzO6$ zL`s#f;y!;EQ?1H?M?!@*Y7)%Yf+m0z0es*L5Hg9PD1E6iWb_B{k&Pe>fMoe`!9)fs z3IyQTK*^=di%4e{tC?X+0y=ISAaHWxNQMvyDDZd$06;&O82EuzN{lIp2^?SqAaY{@ z8$T9HkbsHMp~?;w{mANlx$)78H5oQ|@Bl%~0TK?vG)b}ti<!K8BQwpg;KQR0dNO=* g5THfiB>?hFj7&OT-%hAgt6trxwd>cg83h6WI}%!-BLDyZ diff --git a/theme/orangewhitepda/csshover.htc b/theme/orangewhitepda/csshover.htc deleted file mode 100644 index 7aa6c79e291..00000000000 --- a/theme/orangewhitepda/csshover.htc +++ /dev/null @@ -1,88 +0,0 @@ -<attach event="ondocumentready" handler="parseStylesheets" /> -<script language="JScript"> -/** - * PSUEDOS - V1.21.041022 - hover & active - * --------------------------------------------- - * Peterned - http://www.xs4all.nl/~peterned/ - * (c) 2004 - Peter Nederlof - * - * Credits - Arnoud Berendsen - * - Martin Reurings - * for inspiring me and finding really sick bugs - * - * howto: body { behavior:url("csshover.htc"); } - * --------------------------------------------- - */ - -var currentSheet, doc = window.document; -var activators = { - onhover:{on:'onmouseover', off:'onmouseout'}, - onactive:{on:'onmousedown', off:'onmouseup'} -} - -function parseStylesheets() { - var sheets = doc.styleSheets, l = sheets.length; - for(var i=0; i<l; i++) - parseStylesheet(sheets[i]); -} - function parseStylesheet(sheet) { - var l, rules, imports; - if(sheet.imports) { - imports = sheet.imports, l = imports.length; - for(var i=0; i<l; i++) - parseStylesheet(sheet.imports[i]); - } - - rules = (currentSheet = sheet).rules, l = rules.length; - for(var j=0; j<l; j++) parseCSSRule(rules[j]); - } - - function parseCSSRule(rule) { - var select = rule.selectorText, style = rule.style.cssText; - if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i).test(select) || !style) return; - - var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1'); - var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo); - var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1]; - var affected = select.replace(/:hover.*$/, ''); - var elements = getElementsBySelect(affected); - - currentSheet.addRule(newSelect, style); - for(var i=0; i<elements.length; i++) - new HoverElement(elements[i], className, activators[pseudo]); - } - -function HoverElement(node, className, events) { - if(!node.hovers) node.hovers = {}; - if(node.hovers[className]) return; - node.hovers[className] = true; - node.attachEvent(events.on, - function() { node.className += ' ' + className; }); - node.attachEvent(events.off, - function() { node.className = - node.className.replace(new RegExp('\\s+'+className, 'g'),''); }); -} - -function getElementsBySelect(rule) { - var parts, nodes = [doc]; - parts = rule.split(' '); - for(var i=0; i<parts.length; i++) { - nodes = getSelectedNodes(parts[i], nodes); - } return nodes; -} - function getSelectedNodes(select, elements) { - var result, node, nodes = []; - var classname = (/\.([a-z0-9_-]+)/i).exec(select); - var identify = (/\#([a-z0-9_-]+)/i).exec(select); - var tagName = (/^[a-z0-9]+/i).exec(select.toUpperCase()) || '*'; - for(var i=0; i<elements.length; i++) { - result = elements[i].getElementsByTagName(tagName); - for(var j=0; j<result.length; j++) { - node = result[j]; - if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b' + - classname[1] + '\\b').exec(node.className)))) continue; - nodes[nodes.length] = node; - } - } return nodes; - } -</script> diff --git a/theme/orangewhitepda/docstyles.php b/theme/orangewhitepda/docstyles.php deleted file mode 100644 index 0123ea291e3..00000000000 --- a/theme/orangewhitepda/docstyles.php +++ /dev/null @@ -1,102 +0,0 @@ -<?PHP /* $Id$ */ - -/// We use PHP so we can do value substitutions into the styles - - if (!isset($themename)) { - $themename = NULL; - } - - $nomoodlecookie = true; - require_once("../../config.php"); - $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - -/// -/// You can hardcode colours in this file if you -/// don't care about this. - -?> -body { - background-color:#FFFFFF; -} -p, a { - font-size:90%; -} - -h1, h2, h3 { - padding-left:0px; - background-color:transparent; - color:#000000; -} - -h1 { - font-size:1.7em; - margin:0.5em 0 0; -} - -h2 { - font-size:1.4em; - margin:0.5em 0 0; -} - -h3 { - font-size:1.2em; - margin:0.5em 0 0; -} - - -li { - margin-bottom: 10px; -} - -ul { - margin-top: 10px; -} - -.question { - font-size: medium; - font-weight: bold; - border: 1px dotted; - padding: 10px; - background-color: #EEEEEE; -} - -.answer { - font-size: medium; - border: none; - padding-left: 40px; -} - -.normaltext { - font-size: medium; - border: none; - margin-left: 30px; -} - -.answercode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: none; - padding-left: 60px; -} - -.questionlink { - font-size: medium; - border: none; - padding-left: 40px; -} - -.examplecode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: thin dashed #999999; - background-color: #FBFBFB; - margin: auto; - margin-top: 0.5em; - padding: 30px; - height: auto; - width: auto; -} - -.spaced { - margin-bottom: 30px; -} diff --git a/theme/orangewhitepda/farbstreifen_moodle.gif b/theme/orangewhitepda/farbstreifen_moodle.gif deleted file mode 100644 index 8bdd82568a5ec6b2b8a9591db8976f90114c9453..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005 zcmV<J0}}j4Nk%w1Vekbg0HOc@|F%2-+nxXI&i}}4|Kzs++MNIZ00000A^8LV00000 zEC2ui0PqDU000C32)f+<Fv>}*y>jTyyZ>M)j$~<`XsWJk>%MR-&uU@cc&_h!@BhG{ za7Zi~kI1BQ$!t2G(5Q4uty-_xtai)odcR;CW=t-d&t;l=&2GEj@VI>L4%_eeynfH` z`~QG}f`f#GhEr&Xii?aHbdQjcl9QB`mLP|jnwy-Ro}ZwhqNAjxNsXwfsu-88uCK7M zvUH}kwzs&sy1Tr+zQ1Ct!o$O}#>dFX%CEr9&d<=%($mz{gT&a`i_6^I-rwLS*5l;m z=I7|?>YUo`?yTYQ^7Hhr>-YHi`uqI-<?jFkKBz~qpuvMO{3%?>u%W|;5VZ)LC=j8= zix@Kwh{&=3qsNaRL!zTd(w)YWC{uD1$+D%(moQ@jDoGQY%9}WIR+7oHr_Y~2gYKwF zbd}DdNRzG+%CxD|r%>+|o!UsL)vH)dMBU1@tJklhsESRLwXE5)VAHBy%eHNnv2fFz zol7^T+q-!4>fKu)uHOrF0}IZ`x3J;Eh<W~9JYlfo$Mq6Ro=mwizW|ssYu?Pcv**vC zLyI0wx-@74s8g$6&APSg*RW&Do=v;9?c2C>>)y?~x9{J;gX0!Jytwh>$dfBy&b+zv z=g^}|pH98H_2QPZYu`S|wD<4e!;1$myuA7I=+moT&%V9;^w;CdpHIKO{rl6o>)+4+ z%lQBQ00t=FY3~(i;DHDxsNjMOx`y9_5Jo8Bg!A=h;e{AJG2n(Ac4%6IAciR7h$NQy z9)&2TsN#zEW$5CIF#h1-j5OA0;*B`wsN;?zvgqTFKn96jj6@dcVvR^986b~LHtFP( zP}U~olvGw}pOIK*sh^TucKKnHV1_B?m?2te=9y?Vr{$V#O6KL8aCS!KoOIS{Cva)z zsppw(_UUI{aRwUaorD%@=%EDcspz6V{^{tWU<oQ|mxxws>7`6Es_CW@Lh9+KPE9H* zl9-li>ZuEIs_Lp0g6it4GL0&$hp5(S>#gRos_U-N!RqU;A<Zi6fVdWG?6I`*s_e3| z$N}r@vkna_?SIHtYi+g6X1gr3+;*$awBV9=?YQKgs_nVDdaLfb=7j5RY30T%@1f|{ z%PG6~<{Qns{DwB~zW|eI@4$=dYw*Fm^sBI(0XOV$rUXZvCc+d~T*|^2XZG;M9G58Z z$7WhA^2nTIoN>n}r>r2zEKf=D%P<RKGR7*`Y%_Z;=iF$_Jok*p%nRQv^w7cSY_y6# bC#^IWKr2l2(@+n0^wga$ZS~bsBme+AGJQjf diff --git a/theme/orangewhitepda/footer.html b/theme/orangewhitepda/footer.html deleted file mode 100644 index 98821c25101..00000000000 --- a/theme/orangewhitepda/footer.html +++ /dev/null @@ -1,15 +0,0 @@ - -</div> <!-- end div containerContent --> -<!-- START OF FOOTER --> -<div id="footer"> -<?php echo $loggedinas ?> -<p class="homelink"><?php echo $homelink ?></p> -<p> -<a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>"><img src="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/xhtml_1_0.gif" alt="XHTML Validator" /></a> -<a href="http://jigsaw.w3.org/css-validator/validator?uri=<?php echo urlencode(qualified_me()) ?>&amp;warning=1&amp;profile=css2&amp;usermedium=all"><img src="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/css.gif" alt="CSS Validator" /></a> -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>"><img src="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/section_508.gif" alt="Section 508 Validator" /></a> -</p> -</div> -</div> -</body> -</html> diff --git a/theme/orangewhitepda/header.html b/theme/orangewhitepda/header.html deleted file mode 100644 index e5813d6caa1..00000000000 --- a/theme/orangewhitepda/header.html +++ /dev/null @@ -1,45 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html<?php echo $direction ?>> -<head> - <?php echo $meta ?> - <meta name="keywords" content="moodle, <?php echo $title ?> " /> - <title><?php echo $title ?></title> - <link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> - <?php include("$CFG->javascript"); ?> -</head> - -<body<?php - echo " $bodytags"; - if ($focus) { - echo " onload=\"setfocus()\""; - }; - ?> - -<div id="page"> - -<?php if ($home) { // This is what gets printed on the home page only -?> - <div id="header-home"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> - <div class="clearer"></div> - <div id="nav-bar"> - </div> -<?php } else if ($heading) { // This is what gets printed on any other page with a heading -?> - <div id="header"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> -<?php } ?> - <div class="clearer"></div> -<?php if ($navigation) { // This is the navigation table with breadcrumbs ?> - <div id="nav-bar"> - <div id="breadcrumb"><?php print_navigation("$navigation"); ?></div> - <div id="navbutton"><?php echo $button; ?></div> - </div> -<?php } ?> - <div class="clearer"></div> - <!-- END OF HEADER --> -<div id="content"> \ No newline at end of file diff --git a/theme/orangewhitepda/nostyle.css b/theme/orangewhitepda/nostyle.css deleted file mode 100644 index 31c52ca6a6f..00000000000 --- a/theme/orangewhitepda/nostyle.css +++ /dev/null @@ -1,9 +0,0 @@ -*, body, p, td, -h1, h2, h3, h4, h5, h6 -{ - font-style:inherit; - font-family:inherit; - font-size:100%; - background-color:#FFFFFF; - color:#000000; -} \ No newline at end of file diff --git a/theme/orangewhitepda/section_508.gif b/theme/orangewhitepda/section_508.gif deleted file mode 100644 index 89e9c9a1817070a1848626a06bd76fd76d351fba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 zcmZ?wbhEHb3}fJDc*el+Y&ygL|Nqm{(j3zF{rmU#9}xfj<&d_|A$6Za@;<w??GD-d z9J2N~Wb7-LdhYg<4*}JCk6(G|P_*yW`|pomeYo}b<DI9UK7ajr;m*63g=aUPcyjU1 zyVVCDeERysA$jktEw?uvf3o_}qc7inX7nDp_TYm<?!N3vXAWI_?ohn%__f!4D{o9* zcPXOfsD0wD`8)0|*m2h(Y43?^uik(B`18k?sT*%D+;Q*s@2?JF`y6ui&e(MG!riw) zb%#HE{vJ?sVCR|VyU#p3a^+R#q*HYZE;uCZb4UOx+vkwE&mnQ&mHTh6KYV}a^2?)F zUfp~8#vyBO?Se}a*4^~3I_QwUuVeWYhlITj*?U784l@iWQ2faPwqFNCg5rdM{eJ^f zQ*%peTYE=mS9eb*WB-JSlO|7@I&J!lnUk9s8RpGjuyE1hC5suEnfdzFSFBw-cj?CY zjB_?^+rDgtH7lc|>$>$jmTqC%aOn8P<;)hWPUh_F+y{=G*t~VYgn2h_9lL$^?&i%a zIE4946&3tc*WK^meC6GZ>$etu`0|}$!>>C(mU9Iuag^+EIB-<3?BRyHx6{`~>@E8t z^eozAeeiZhWsU%Y1<A~u-1aM29<${s*;n$p8ZNofzjR+7_l$%W3sXF~6byN0Bs6r* z@}73<+0$<GFS8HTsro)MHhRoCk!^+0mIr}~j_1oiY`P{KwRW``n^6tV#0Dj=$sCp( z4krx`q?;z?S?pD^-rB^#&CijrM<Jk<fl)g5DVwk6j@A2BSWH$pI6XKlA|<21BE}Ow W`RVBy#^G5<c5Z%tzK4mC!5RQ*Cq(N2 diff --git a/theme/orangewhitepda/styles.php b/theme/orangewhitepda/styles.php deleted file mode 100644 index cb2c3cbad78..00000000000 --- a/theme/orangewhitepda/styles.php +++ /dev/null @@ -1,48 +0,0 @@ -<?PHP /* $Id$ */ - -/// This PHP script is used because it provides a place for setting -/// up any necessary variables, and lets us include raw CSS files. -/// The output of this script should be a completely standard CSS file. - -/// There should be no need to modify this file!! Use config.php instead. - - $nomoodlecookie = true; - require_once("../../config.php"); - - $lastmodified = 0; - $lifetime = 600; - -/// If we are a parent theme, then check for parent definitions - - if (isset($parent)) { - if (!isset($THEME->parentsheets) or $THEME->parentsheets === true) { // Use all the sheets we have - $THEME->sheets = array('styles_layout', 'styles_fonts', 'styles_color', 'styles_moz'); - } else if (empty($THEME->parentsheets)) { // We can stop right now! - exit; - } else { // Use the provided subset only - $THEME->sheets = $THEME->parentsheets; - } - } - -/// Work out the last modified date for this theme - - foreach ($THEME->sheets as $sheet) { - if (file_exists($sheet.'.css')) { - $sheetmodified = filemtime($sheet.'.css'); - if ($sheetmodified > $lastmodified) { - $lastmodified = $sheetmodified; - } - } - } - -/// Print out the entire style sheet - - style_sheet_setup($lastmodified, $lifetime); - - foreach ($THEME->sheets as $sheet) { - echo "/***** $sheet.css start *****/\n\n"; - include_once($sheet.'.css'); - echo "\n\n/***** $sheet.css end *****/\n\n"; - } - -?> diff --git a/theme/orangewhitepda/styles_color.css b/theme/orangewhitepda/styles_color.css deleted file mode 100644 index 70c11eb2cbf..00000000000 --- a/theme/orangewhitepda/styles_color.css +++ /dev/null @@ -1,639 +0,0 @@ -/* $Id$ */ - -/************************************************* -*** -*** color -*** -**************************************************/ - -/************************************************* -*** -*** This CSS file contains all color definitions -*** like background-color, font-color, -*** border-color etc. -*** -*** Shortindex: -*** basic and general styles -*** header and footer styles -*** content styles (alphabetically) -*** admin, course, activities, calendar, blocks -*** -*** Please sort new styles for existing content -*** into the appropriate part of this CSS file. -*** Styles for new Blocks or Activities please -*** place at the end. -*** Wouldn't the alphabetical order be better? -*** -**************************************************/ - - -/* basic styles */ -font { - background-color:transparent; -} - -a:link { - color:#1246A3; -} -a:visited { - color:#AE1107; -} -a:hover { - border-bottom-color:#EC6E0A; -} - -a.autolink:link { - background-color:transparent; - color:#000000; - border-bottom-color:#000000; -} - -a.autolink:visited { - background-color:transparent; - color:#000000; - border-bottom-color:#000000; -} - -a.autolink:hover { - background-color:transparent; - color:#000000; - border-bottom-color:#000000; -} - -a.dimmed:link { - color:#AAAAAA; -} - -a.dimmed:visited { - color:#AAAAAA; -} - -a.dimmed:hover { - color:#990000; -} - - -/* general styles */ -body { - /*margin:0px; - padding:0px;*/ - background-color:#FFFFFF; - color:#000000; -} - -.highlight { - background-color:#C0CAD4; -} - -.highlight2 { - color:#AA0000; /* highlight missing terms in forum search */ -} - -.dimmed_text { - color:#AAAAAA; -} - -/* header styles */ -#nav-bar a:link { - color:#1246A3; -} - -#nav-bar a:visited { - color:#AE1107; -} - -#nav-bar, -#nav-bar td, -#nav-bar input { - color:#000000; -} - -#nav-bar hr { - background-color:#0B4161; - color:#0B4161; -} - - -/* footer styles */ - - -/***************************** -*** -*** content styles -*** -******************************/ -#content { - background-color:#EEF0F2; - border-color:#FFFFFF; -} - -#layout-table { - background-color:#FFFFFF; -} - - -/* many places */ -.generalbox { - background-color:#FFFFFF; - border-color:#D1D7DC; -} - -.generalboxcontent { - background-color:#FFFFFF; - border-color:#D1D7DC; -} - -.noticebox { - border-color:#D1D7DC; -} - - -/* weblib.php table */ -.tabledivider { - border-color:#C0CAD4; -} - - -/* entry page */ -#site-index { - background-color:#FFFFFF; -} - -#site-index #left-column { - background-color:#F9FAFA; -} - -#site-index #middle-column .headingblock, -#site-index #middle-column .forumpostheadertopic, -#course-view #middle-column .headingblock, -#course-view #middle-column .forumpostheadertopic { - background-color:transparent; - border-color:#FFC86C; -} - - -/* entry-page index.php */ -.sitetopic, -.siteinfo { - border-color:#D1D7DC; -} - -.siteinfocontent { - background-color:#EEF0F2; -} - - -/* summary of a user in a nice little box - weblib.php */ -.userinfobox { - border-color:#D1D7DC; -} - - -/***************************** -*** -*** Admin -*** -******************************/ - - -/***************************** -*** -*** Course -*** -******************************/ -.course .course-content { - background-color:#FFFFFF; -} - - -/* course, entry-page, login */ -.headingblock { - background-color:#FFFFFF; -} - - -/* course */ -#left-column { - background-color:#F9FAFA; -} - -#right-column .sideblockheading { - background-color:#FFDA9D; -} - -#left-column .sideblocklist { - background-color:#F9FAFA; - border-color:#FFFFFF; -} - -#left-column td.sideblocklist:hover, -#left-column td.sideblocklist:active { - background-color:#FFB63B; -} - -.outlineheadingblock { - background-color:#FFFFFF; -} - -.topicsoutlinecontent, -.topicsoutlinecontenthighlight { - background-color:#FFFFFF; - border-color:#FFC86C; -} - -.course-2 .topicsoutlinecontent, -.course-2 .topicsoutlinecontenthighlight { - background-color:#FFFFFF; - border-color:#F1F3C2; -} - -.course-3 .topicsoutlinecontent, -.course-3 .topicsoutlinecontenthighlight { - background-color:#FFFFFF; - border-color:#C2F3C7; -} - -.course-4 .topicsoutlinecontent, -.course-4 .topicsoutlinecontenthighlight { - background-color:#FFFFFF; - border-color:#C2D3F3; -} - -.course-5 .topicsoutlinecontent, -.course-5 .topicsoutlinecontenthighlight { - background-color:#FFFFFF; - border-color:#F3C6C2; -} - -.topicsoutlinecontenthidden { - background-color:#FFFFFF; - border-color:#EEF0F2; -} - -.topicsoutlineside, -.topicsoutlinesidehighlight, -.topicsoutlinesidehidden { - background-color:#FFFFFF; - border-color:#FFFFFF; -} - -.topicsoutlinecontent span.unread, -.topicsoutlinecontenthighlight span.unread, -.topicsoutlinecontenthidden span.unread { - border-bottom-color:#FFB63B; -} - -.weeklyoutlineside { - border-color:#D1D7DC; -} - -.weeklyoutlinesidehighlight { - border-color:#D1D7DC; -} - -.weeklyoutlinesidehidden { - border-color:#D1D7DC; -} - -.weeklyoutlinecontent { - border-color:#D1D7DC; -} - -.weeklyoutlinecontenthighlight { - background-color:#FFFFFF; - border-color:#D1D7DC; -} - -.weeklyoutlinecontenthidden { - background-color:#F7F6F1; - border-color:#D1D7DC; -} - -.categorybox { - border-color:#D1D7DC; -} - -.courseboxcontent { - border-color:#D1D7DC; -} - - -/***************************** -*** -*** Activities -*** -******************************/ -/* assignment, forum, glossary */ -.forumpost { - border-color:#D1D7DC; -} - -.forumpostpicture { - background-color:#FFFFFF; -} - -.forumpostside { - background-color:#EEF0F2; -} - - -/* forum */ -.forum { - background-color:#FFFFFF; - border-color:#D1D7DC; -} - -.forumpostheadertopic { - background-color:#FFC86C} - -.forumpostheaderpicture { - background-color:#EEF0F2; -} - -.forumpostheadername { - background-color:#EEF0F2; -} - -.forumpostheaderdate { - background-color:#EEF0F2; -} - -.forumheaderlist { - border-color:#D1D7DC; -} - -.forumthread .unread { - background: #FFD991; -} - -.unread { - border-color:#FFB63B; - color:#555555; -} - - -/* glossary */ -.glossary { - /*background-color:#FFFFFF;*/ - background-color:#EEF0F2; - border-color:#D1D7DC; -} - -.glossary .forumpost td { - background-color:#FFFFFF; -} - -.glossary td, -.glossary-edit td { - background-color:transparent; -} - -.glossary center center td table td, -.glossary-edit center center td table td { - background-color:#FFFFFF; -} - -.glossary center center td, -.glossary-edit center center td { - background-color:#EEF0F2; -} - -.glossary table.generaltabselected td, -.glossary form table.generaltabselected td { - background-color:#FFC86C; -} - -.glossary form table.forumpost td { - background-color:#F9FAFA; -} - -.glossary .generaltab { - background-color:#D1D7DC !important; -} - -.glossary .generaltabselected { - background-color:#FFD991 !important; -} - - -/* lang, forum */ -.teacheronly { - color:#AE1107; -} - - -/* quiz */ -.feedbacktext { - color:#C0CAD4; -} - - -/* wiki styles */ -.mwiki { - border-color:#D1D7DC; -} - -.mwiki .edit { - background-color:#FFFFFF; -} - -.wiki { - border-color:#A7B1B7; -} - -.wiki .title { - background-color:#EEF0F2; - border-color:#C6BDA8; -} - -.mwiki .generaltab { - background-color:#D1D7DC !important; -} - -.mwiki .generaltabselected { - background-color:#FFD991 !important; -} - - -/***************************** -*** -*** Calendar -*** -******************************/ -TABLE.calendarmini { - border-color:#C0CAD4; -} - -TABLE.calendarmonth { - border-color:#C0CAD4; -} - -TABLE.calendarmini TBODY TD { - border-color:#C0CAD4; -} - -TABLE.calendarmonth TBODY TD { - background-color:#EEF0F2; - border-color:#C0CAD4; -} - -TABLE.calendarmonth THEAD TD { - background-color:#EEF0F2; - border-bottom-color:#666666; -} - -.cal_event_global { - background-color:#009999 !important; - border-color:#009999 !important; -} - -.cal_event_course { - background-color:#ff3333 !important; - border-color:#ff3333 !important; -} - -.cal_event_group { - background-color:#ffcc33 !important; - border-color:#ffcc33 !important; -} - -.cal_event_user { - background-color:#99ccff !important; - border-color:#99ccff !important; -} - -.cal_duration_global { - border-top-color:#009999 !important; - border-bottom-color:#009999 !important; -} - -.cal_duration_course { - border-top-color:#ff3333 !important; - border-bottom-color:#ff3333 !important; -} - -.cal_duration_user { - border-top-color:#99ccff !important; - border-bottom-color:#99ccff !important; -} - -.cal_duration_group { - border-top-color:#ffcc33 !important; - border-bottom-color:#ffcc33 !important; -} - -.cal_weekend { - color:red; -} - -.cal_today { - border-color:#666666 !important; -} - -.mycalendar { - background-color:#EEF0F2; -} - -.mycalendar TABLE.cal_filters { - border-color:#C0CAD4; -} - -.mycalendar .cal_filters THEAD TD { - border-bottom-color:#666666; -} - -.mycalendar .cal_event_table { - border-color:#C0CAD4; -} - -.mycalendar .cal_event_table THEAD { - background-color:#EEF0F2; -} - -.mycalendar HR { - border-top-color:#999; -} - -.calendarexpired { - color:red; -} - -TD.cal_event_description { - border-left-color:#C6BDA8; -} - -.cal_popup_fg { - background-color:#EEF0F2; -} - -.cal_popup_bg { - background-color:#FFFFFF; - border-top-color:#C6BDA8; - border-left-color:#C6BDA8; - border-right-color:#663300; - border-bottom-color:#663300; -} - -.cal_popup_caption { - background-color:#FFFFFF; -} - -.eventfull { - border-color:#D1D7DC; -} - - -/***************************** -*** -*** Blocks -*** -******************************/ -/* sideblock */ -.sideblock a:link { - color:#4B809E; -} - -.sideblock a:visited { - color:#C16E28; -} - -.sideblock, -.sideblockmain, -.sideblocklist { - background-color:#F9FAFA; -} - -.sideblockheading { - background-color:#EEF0F2; -} - -.sideblock, -.sideblockheading { - border-color:#D1D7DC; -} - -.sideblockheading { - color:#666666; -} - -.sideblockmain { - color:#666666; -} - -.sideblockmain HR { - border-top-color:#999; -} - - -/* course summary */ -#block_course_summary .sideblockmain { - background-color:#F9FAFA; - color:#000000; -} - - -/* glossary random */ -#block_glossary_random .sideblockmain { - /*background-color:#FFDA9D;*/ -} - diff --git a/theme/orangewhitepda/styles_font.css b/theme/orangewhitepda/styles_font.css deleted file mode 100644 index f42127c85f4..00000000000 --- a/theme/orangewhitepda/styles_font.css +++ /dev/null @@ -1,390 +0,0 @@ -/* $Id$ */ - -/************************************************* -*** -*** fonts -*** -**************************************************/ - -/************************************************* -*** -*** This CSS file contains all font definitions -*** like family, size, weight, -*** text-align, letter-spacing -*** etc. -*** -*** Shortindex: -*** basic and general styles -*** header and footer styles -*** content styles (alphabetically) -*** admin, course, activities, calendar, blocks -*** -*** Please sort new styles for existing content -*** into the appropriate part of this CSS file. -*** Styles for new Blocks or Activities please -*** place at the end. -*** Wouldn't the alphabetical order be better? -*** -**************************************************/ - - -/* basic styles */ -font { - font-size:100% !important; -} - -.clearer { - font-size:1px; -} - -.smallinfo { - font-size:100%; -} - -.smallinfohead { - font-size:100%; -} - - -/* general styles */ -body { - font-family:"Lucida Grande", Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif !important; - font-size:1em; - line-height:1.2em; - letter-spacing:0.02em; -} - -/*td, th, p, a { - font-family:inherit; - font-family:inherit; - font-size:inherit; -}*/ - -th { - font-weight:bold; -} - -a { - font-family:inherit; - font-size:inherit; - line-height:150%; - text-decoration:none; -} - -a:hover { - text-decoration:underline; -} - -a.dimmed:link, -a.dimmed:visited, -a.dimmed:hover, -a.autolink:link, -a.autolink:visited, -a.autolink:hover { - text-decoration:none; -} - -h2 { - font-size:150%; - font-weight:bold; -} - -h3 { - font-size:130%; - font-weight:bold; -} - -h4 { - font-size:110%; - font-weight:bold; -} - - -/* header styles */ -#header, -#header-home { - font-size:90%; -} - -#nav-bar { - font-size:80%; -} - -#header-home .headermain { - font-size:150%; -} - -#header .headermain { - font-size:130%; -} - -#breadcrumb { - font-size:80%; -} - -.headermenu { - font-size:90%; - text-align:right; -} - -.headermain, -.headerhomemain { - font-weight:bold; -} - -.headerhomemenu, -.headerhomemenu a { - font-size:90%; -} - -.logininfo { - font-size:90%; -} - - -/* footer styles */ -#footer { - font-size:90%; - text-align:center; -} - -.homelink { - font-size:90%; -} - - -/***************************** -*** -*** content styles -*** -******************************/ -#content { - font-size:80%; - text-align:left; -} - - -/* many places */ -.noticeboxcontent { - text-align:center; -} - - -/* entry page */ -#site-index #layout-table { } - -#site-index #layout-table .sideblock a { } - -#site-index #block_course_summary { - line-height:1.5em; -} - - -/***************************** -*** -*** Admin -*** -******************************/ -#admin-config .generalbox, -#admin-site .generalbox, -#admin-backup .generalbox, -#admin-calendar .generalbox, -#admin-editor .generalbox, -#admin-lang .generalbox { - font-size:90%; - text-align:left; -} - -#admin-index .generaltable { - /*font-size:0.9em;*/ - text-align:left; -} - -#admin-lang FORM { - /*font-size:0.9em;*/ -} - -#admin-blocks #content p, -#admin-modules #content p { - margin:0; - padding:0; -} - - -/***************************** -*** -*** Course -*** -******************************/ -.course { - text-align:left; -} - - -/* course, entry-page, login */ -.headingblock { - font-weight:bold; -} - - -/* course */ -#left-column, -#right-column { - text-align:left; -} - -#middle-column{ - text-align:left; -} - -.outlineheadingblock { - font-weight:bold; -} - -.weeklydatetext { - font-weight:bold; -} - -.courseboxinfo { - font-weight:bold; -} - - -/***************************** -*** -*** Activities -*** -******************************/ -/* index, admin, course, lang, adodb, quiz */ -.categoryname, -.categorynumber { - font-weight:bold; -} - - -/* forum */ -.forum { - text-align:left; -} - -.forumpostheadertopic { } - -.unread { - font-style:normal; -} - - -/* glossary */ -.glossary .generaltab B, -.glossary .generaltabselected B { - font-weight:normal; -} - -.glossary .generaltab, -.glossary .generaltabselected { - font-size:80%; -} - - -/* wiki */ -.mwiki { - text-align:left; -} - -.wiki .upload { - font-size:0.9em; -} - -.mwiki .generaltab, -.mwiki .generaltabselected { } - -#containerPageActions { - text-align:left; -} - - -/***************************** -*** -*** Calendar -*** -******************************/ -TABLE.calendarmini { - letter-spacing:0.1em; -} - -TABLE.calendarmini TBODY TD { - text-align:center; - letter-spacing:0em; -} - -TABLE.calendarmonth TBODY TD TABLE { - line-height:1.2em; -} - -TABLE.calendarmonth TBODY TD DIV { - line-height:1.2em; -} - -TABLE.calendarmini THEAD TD, -TABLE.calendarmonth THEAD TD { - font-weight:bold; - text-align:center; -} - -TABLE.cal_controls td { - line-height:1.2em; -} - -.mycalendar .cal_event { - font-weight:bold; -} - -.mycalendar .cal_event_date { } - -.mycalendar .cal_event_table THEAD { - text-align:center; - font-weight:bold; -} - -.calendarexpired { - font-weight:bold; -} - -.calendarreferer { - font-weight:bold; -} - -.cal_popup_caption { - font-weight:bold; -} - -.cal_popup_close { - font-weight:bold; -} - -.sideblock .cal_controls { } - - -/***************************** -*** -*** Blocks -*** -******************************/ -/* sideblock */ -.sideblock { - font-size:90%; -} - -.sideblockheading { - font-weight:bold; -} - -.sideblocklist { } - -td.sideblockmain center, td.sideblockmain p, td.sideblockmain div { - text-align:left; -} - - -/* course summary */ -#block_course_summary .sideblockmain { } \ No newline at end of file diff --git a/theme/orangewhitepda/styles_layout.css b/theme/orangewhitepda/styles_layout.css deleted file mode 100644 index c3eb414ac34..00000000000 --- a/theme/orangewhitepda/styles_layout.css +++ /dev/null @@ -1,751 +0,0 @@ -/* $Id$ */ - -/************************************************* -*** -*** layout -*** -**************************************************/ - -/************************************************* -*** -*** This CSS file contains all layout definitions -*** like positioning, floats, -*** margins, paddding, -*** borders etc. -*** -*** Shortindex: -*** basic and general styles -*** header and footer styles -*** content styles (alphabetically) -*** admin, course, activities, calendar, blocks -*** -*** Please sort new styles for existing content -*** into the appropriate part of this CSS file. -*** Styles for new Blocks or Activities please -*** place at the end. -*** Wouldn't the alphabetical order be better? -*** -**************************************************/ - -/* basic styles */ -.clearer { - clear:both; - margin:0px; - padding:0px; - height:1px; - border:none; - background:transparent; -} - -a.autolink:link { - border-bottom:dashed 1px; - cursor:help; -} - -a.autolink:visited { - border-bottom:dashed 1px; - cursor:help; -} - -a.autolink:hover { - border-bottom:solid 1px; - cursor:help; -} - - -/* general styles */ -body { - behavior:url(/htc/csshover.htc); - margin:10px; -} - -ul { - margin-bottom:5px; - margin-top:0px; -} - -form { - margin-bottom:0px; -} - -a img { - border:none; -} - -input { - background:transparent; -} - - -/* header styles */ -#header-home { - padding:0.5em 0.5em; - height:2em; -} - -#header, -#header-main, -#nav-bar { - margin:0px; -} - -#header { - padding:0.1em 0.5em; - height:50px; -} - -.headermain { - float:left; -} - -#header .headermain { - margin:0.2em 0em; -} - -.headermenu { - float:right; - padding:0px; - margin:0px, -} - -#nav-bar { - background-image:url(farbstreifen_moodle.gif); - background-position:left; - background-repeat:no-repeat; - margin-bottom:0px; - padding:1px 0.5em; - height:3em; -} - -#breadcrumb { - float:left; - padding-top:13px; - margin:0.2em 0em; -} - -#navbutton { - float:right; - padding-top:13px; - margin:0.2em 0em; -} - -#nav-bar hr { - height:1px; -} - - -/* footer styles */ -#footer br { - display:none; -} - -#footer HR { - display:none; -} - - -/***************************** -*** -*** content styles -*** -******************************/ -#content { - margin-left:auto; - margin-right:auto; - padding:0px; - width:240px: - border:thin solid; -} - - -/* many places */ -.generalbox { - margin-left:auto; - margin-right:auto; - border-width:1px; - border-style:solid; -} - -.generalboxcontent { - background-image:none; -} - -.noticebox { - border-width:1px; - border-style:solid; -} - - -/* weblib.php table */ -.tabledivider { - border-width:1px; - border-style:solid; - border-left:0px; - border-right:0px; - border-top:0px; -} - - -/* entry page */ -#layout-table { - width:240px; -} - -#course-view #left-column, -#course-view #left-column .sideblock -{ - width:100%; -} - -#course-view #middle-column -{ - width:100%; - padding:0em 0em; -} - -#course-view #right-column{ - width:100%; -} - -#site-index #middle-column .forumpost, -#course-view #middle-column .forumpost { - border-width:0px; - border-style:none; -} - -#site-index #middle-column .forumpostpicture, -#site-index #middle-column .forumpostside, -#course-view #middle-column .forumpostpicture, -#course-view #middle-column .forumpostside { - display:none; -} - -#site-index #middle-column .headingblock, -#site-index #middle-column .forumpostheadertopic, -#course-view #middle-column .headingblock, -#course-view #middle-column .forumpostheadertopic { - padding:0.2em; - border-width:0px 0px 0px 5px; - border-style:solid; -} - - -/* entry-page index.php */ -.sitetopic, -.siteinfo { - border-width:1px; - border-style:solid; -} - - -/* summary of a user in a nice little box - weblib.php */ -.userinfobox { - margin-bottom:5px; - border-width:1px; - border-style:solid; -} - - -/***************************** -*** -*** Admin -*** -******************************/ -/* admin, calendar */ -table.formtable td { - padding:9px; -} - - -/* admin */ -.admin #content, -.admin .generalboxcontent, -.admin .generalbox { - width:auto; -} - - -/***************************** -*** -*** Course -*** -******************************/ -/* course, entry-page, login */ -.headingblock { - background-image:none; - border-style:none; -} - -.generaltableheader { - background-image:none; -} - - -/* course */ -#left-column, -#right-column { - margin:0px; - padding:0px; - border:0px; -} - -#middle-column { - padding:0px 0px; -} - -.outlineheadingblock { - background-image:none; - display:none; -} - -.topicsoutlineside, -.topicsoutlinesidehighlight, -.topicsoutlinesidehidden { - border-width:0px; -} - -.topicsoutlineside p b, -.topicsoutlinesidehighlight p b, -.topicsoutlinesidehidden p b { - display:none; -} - -.topicsoutlinecontent, -.topicsoutlinecontenthighlight, -.topicsoutlinecontenthidden { - margin:0em; - padding:0.5em 0.2em; - border-width:0px 0px 0px 5px; - border-style:solid; -} - -.topicsoutlinecontent span.unread, -.topicsoutlinecontenthighlight span.unread, -.topicsoutlinecontenthidden span.unread { - padding:0em; - margin-left:0.8em; -} - -.weeklyoutlineside { - border-width:1px; - border-style:solid; -} - -.weeklyoutlinesidehighlight { - border-width:1px; - border-style:solid; -} - -.weeklyoutlinesidehidden { - border-width:1px; - border-style:dashed; -} - -.weeklyoutlinecontent { - border-width:0px; - border-top:1px; - border-bottom:1px; - border-style:solid; -} - -.weeklyoutlinecontenthighlight { - border-width:0px; - border-top:1px; - border-bottom:1px; - border-style:solid; -} - -.weeklyoutlinecontenthidden { - border-width:0px; - border-top:1px; - border-bottom:1px; - border-style:dashed; -} - -.categorybox { - border-width:1px; - border-style:solid; -} - -.courseboxcontent { - border-width:1px; - border-style:solid; -} - - -/***************************** -*** -*** Activities -*** -******************************/ -/* assignment, forum, glossary */ -.forumpost, -.forumheaderlist { - border-width:1px; - border-style:solid; -} - - -/* forum */ -.forum { - position:relative; - width:240px; - margin-left:0px; - margin-right:auto; - border:1px solid; -} - -#forum-post { - margin:0px; - width:auto; -} - -.unread { - border-width:0px 0px 1px 3px; - border-style:solid; -} - - -/* glossary */ -.glossary { - position:relative; - width:240px; - margin-left:0px; - margin-right:auto; - border:1px solid; -} - -#glossary-edit { - margin:0px; - width:auto; -} - -.glossary .generaltab, -.glossary .generaltabselected { - padding:0px 1px; -} - -.glossary table { - width:auto; - margin-left:0px; -} - -.glossary center, -.glossary center table, -.glossary center table tr { - width:240px; -} - - -/* quiz */ -.mod-quiz #content { - position:relative; - width:240px; - margin-left:0px; - margin-right:auto; - border:1px solid; -} - -.mod-quiz table { - width:auto; -} - -table.quiz td { - padding-top:0.1em; - line-height:1.7em; -} - -table.quiz input { - height:1.7em; - padding-top:0.1em; - vertical-align:top; -} - - -/* wiki */ -.wiki { - border-width:1px; - border-style:solid; -} - -.mwiki .view { - margin-left:auto; - margin-right:auto; - width:35em; -} - -.mwiki .edit { - margin-right:auto; - margin-left:auto; - padding:0em; -} - -.wiki .title { - padding:3px; - border:1px solid; -} - -.wiki .upload { - padding-top:1em; -} - -#wikiPageActions { - position:relative; - width:auto !important; - margin:auto; -} - -#wikiPageActions td { - text-align:left !important; -} - -#wikiPageActions INPUT { - padding:0px; - margin:0px; -} - -.mwiki { - position:relative; - width:45em; - margin-left:auto; - margin-right:auto; - border:1px solid; -} - - -/***************************** -*** -*** Calendar -*** -******************************/ -TABLE.calendarmini { - width:100%; - margin:0px; - padding:0px; - border-width:1px; - border-style:solid; -} - -TABLE.calendarmonth { - width:100%; - margin:0px; - padding:0px; - border-width:1px; - border-style:solid; -} - -TABLE.calendarmini TBODY TD { - width:14%; - border-width:1px 0px; - border-style:none; - vertical-align:center; -} - -TABLE.calendarmonth TBODY TD { - width:14%; - border-width:1px; - border-style:solid; - vertical-align:top; -} - -TABLE.calendarmonth TBODY TD TABLE { - margin-top:0px; - margin-left:0px; -} - -TABLE.calendarmonth TBODY TD TABLE TD { - background:none; - border:none; -} - -TABLE.calendarmonth TBODY TD DIV { - margin-top:0px; - margin-left:0px; -} - -TABLE.calendarmini THEAD TD { - vertical-align:center; -} - -TABLE.calendarmonth THEAD TD { - padding-bottom:3px; - border-bottom:2px solid; - vertical-align:center; -} - -.cal_event_global { - border:2px solid !important; -} - -.cal_event_course { - border:2px solid !important; -} - -.cal_event_group { - border:2px solid !important; -} - -.cal_event_user { - border:2px solid !important; -} - -.cal_duration_global { - border-top:2px solid !important; - border-bottom:2px solid !important; -} - -.cal_duration_course { - border-top:2px solid !important; - border-bottom:2px solid !important; -} - -.cal_duration_user { - border-top:2px solid !important; - border-bottom:2px solid !important; -} - -.cal_duration_group { - border-top:2px solid !important; - border-bottom:2px solid !important; -} - -.cal_today { - border:2px solid !important; -} - -.mycalendar TABLE.cal_filters { - margin:0px; - padding:2px; - width:100%; - border-width:1px; - border-style:solid; -} - -.mycalendar .cal_filters THEAD TD { - margin:0px; - padding:2px; - border-bottom:2px solid; -} - -.mycalendar .cal_event_table { - margin:0px; - padding:2px; - width:100%; - border-width:1px; - border-style:solid; -} - -.mycalendar HR { - height:1px; - border:none; - border-top:1px solid; - margin-top:4px; - margin-bottom:4px; -} - -TD.cal_event_description { - width:80%; - border-left:2px solid; - vertical-align:top; - padding:5px; -} - -.cal_popup_bg { - padding:0px; - margin:0px; - border-top:2px solid; - border-left:2px solid; - border-right:2px solid; - border-bottom:2px solid; -} - -.cal_popup_close { - margin-right:5px; -} - -.eventfull { - border-width:1px; - border-style:solid; -} - -.eventfullpicture { - padding:8px; -} - - -/***************************** -*** -*** Blocks -*** -******************************/ -/* sideblock */ -.sideblock { - width:100%; - border-width:1px 1px 1px 1px; - border-style:solid; -} - -.sideblockheading { - background-image:none; - padding:0px 5px; - border-width:1px 0px 0px 1px; - border-style:solid; -} - -.sideblockheading a { - cursor:pointer; - border-bottom:none; -} - -.sideblockheading a img { - padding-top:0.5em; -} - -.sideblockmain HR { - height:1px; - border:none; - border-top:1px solid; - margin-top:4px; - margin-bottom:4px; -} - -#left-column .sideblock { - margin-bottom:0; -} - -#left-column .sideblockmain { - padding:1px 0px; -} - -#left-column .sideblockheading, -#left-column .sideblock { - border-width:0px 0px 0px 1px; -} - -#left-column .sideblocklist { - padding-left:5px; - border-width:0px 0px 1px 0px; - border-style:solid; -} - -#right-column .sideblock { - margin:1em 0em 0.5em; -} - - -/* glossary random */ -#block_glossary_random .sideblockheading, -#block_glossary_random .sideblockmain br, -#block_glossary_random .sideblockmain b { - display:none; -} - -#block_glossary_random .sideblockmain { - text-align:center; -} - - -/* course summary */ -#block_course_summary .sideblockmain { - padding:10px; -} \ No newline at end of file diff --git a/theme/orangewhitepda/xhtml_1_0.gif b/theme/orangewhitepda/xhtml_1_0.gif deleted file mode 100644 index 119e2ca7ea191e758d555197017c7044cc031a5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 780 zcmV+n1M~bxNk%w1VO9VS0OkMy-{0Tp@AVr~mEz*!{r&%To58cj+&XHa3q_1pf3Jz9 z$Nm5RB~p~w<L=Vl>sf=d`TG2)rlq62)S<c5oV3g$T9__kojhlt=9d8f|NmxYX8!*E zL2jqEwzjp%-TV9g`uqK~#@(~9uDHwMRDrOv#o5f-=*rvZ@b>$Ifq&K2)!patUWc^) z{{Q;_|6W~O`~CjS-s|J*@?VU%ho{Kh=I`6(?~ba<(%<YrZKN_}o={Lw|Ns4dp~SDm z+6O?0cb&o)Qj+}q{OjuJVu-d9MT_R`^yTdJM|Z7fXJ_#6@ZH_r#KgqFz`#mzro7SO zCtR8G`2Km7zVr6^@%8zkp`lrYvg+*Yv$M0GyVlXr&{>DHU|?YP`TLcXmGk!d#LLk8 z{QQcj$3ktTd7;Gf^Yi-p`uqL;m9WjfzrQnRqmZr4H)WuYvCzla=rC87&(YHB@%M&? zhDu6G3^#<-;_cYk*=dox`uzR<{r>#@{Z&;}grv%=!`g$R$7qVUA^8LV00000EC2ui z09F7G000O7fEt2>goTEOh>41ejENbKkdcy;l$Dm3n3<D;nwc1%prN9pq@|{(pc$MQ z1O^frMidPhdOmjr1wAN3UL6Bhkf_4L#HFelk9ib2XEF~o88tZvWJMfNDRW#JcEQEp z;HJlr4HZui4;L9FPzHSmBU&$MOma%zpBbt7{21Q){Q!=7G*BR^agVxK`4h(igE|UW z#CS8tg@_1`%0v>SPar^#sXBfX$FbkRRT=O|sL)1Df*D)T1dt+t51au)CJhX=(PT$| zCU^1-$`NG-8$lQV$@1fZi40T}2*9y{Qb~|NeeTP8uq4-kMyDj8<Hi93Cnt_%2!VhC zk4FG$0N~>~lJ3^5bMq1OXb>ziNFXL~fDwSmjR|c0SU>_MLWe3lROAgu`5Qt=E7oM# z;K2g~F$YLE2-76V9xP@iS6+?k@}mVG9&ON*;fsR+EjBL!kf$f>->r>y8cw{p@kYp# KD__ni5CA(5BB=xb diff --git a/theme/poweraid/README.txt b/theme/poweraid/README.txt new file mode 100644 index 00000000000..55beb7348d1 --- /dev/null +++ b/theme/poweraid/README.txt @@ -0,0 +1,46 @@ +Filename: README.txt +Purpose of file: Give the admin user some usefull? info for the Moodle + PowerAid theme + +Author of file: Bjarne Varoystrand aka Black Skorpio +E-mail: webmaster@postnuke-sweden.com +Web: www.postnuke-sweden.com +ICQ: 1194177 + +--------------------------------------------------------------------- +LICENSE + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License (GPL) +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. + +To read the license please visit http://www.gnu.org/copyleft/gpl.html +--------------------------------------------------------------------- + + + +This theme has no hardcoded colors, everything is set in the files +style.php and config.php +Remember; +If you change the; + $THEME->themeborders +It can hurt your eyes if you choose the wrong color ;-) + +To change the logo to something that is more like you... +edit the files frontlogo.jpg and smalllogo.jpg that you can find inside the; +moodledir/theme/poweraid/images/ + +For other configuration options for this theme please see the config.php + +Other than that, i should think that most of the options for this theme +is simple to understand. + +---- +5 Jan 2003 - Martin made some changes to this theme and some of the + filenames in this file to match diff --git a/theme/poweraid/config.php b/theme/poweraid/config.php new file mode 100644 index 00000000000..237c2bde4f0 --- /dev/null +++ b/theme/poweraid/config.php @@ -0,0 +1,52 @@ +<?PHP // $Id$ +/* + Filename: config.php + Purpose of file: Setting defines for the theme + + Author of file: Bjarne Varoystrand aka Black Skorpio + E-mail: webmaster@postnuke-sweden.com + Web: www.postnuke-sweden.com + ICQ: 1194177 + + --------------------------------------------------------------------- + LICENSE + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License (GPL) + 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. + + To read the license please visit http://www.gnu.org/copyleft/gpl.html +*/ + +$THEME->themewidth = "98%"; // The total width of the theme +$THEME->themeborders = "#cccccc"; // Is used as border color for the theme +$THEME->topmargin = "10"; // Used in the theme <body> tag +$THEME->leftmargin = "0"; // Used in the theme <body> tag +$THEME->marginheight = "10"; // Used in the theme <body> tag +$THEME->marginwidth = "0"; // Used in the theme <body> tag + +$THEME->body = "#FFFFFF"; // Main page color +$THEME->cellheading = "#E8E8E8"; // Standard headings of big tables +$THEME->cellheading2 = "#AAAAAA"; // Highlight headings of tables +$THEME->cellcontent = "#FFFFFF"; // For areas with text +$THEME->cellcontent2 = "#EFEFEF"; // Alternate colour +$THEME->borders = "#555555"; // Table borders + +$THEME->frontlogo = "images/frontlogo.jpg"; // Logo on front page +$THEME->smalllogo = "images/smalllogo.jpg"; // Header logo on other pages + +$THEME->highlight = "#AAFFAA"; // Highlighted text (eg after a search) +$THEME->hidden = "#AAAAAA"; // To color things that are hidden +$THEME->autolink = "#DDDDDD"; // To color auto-generated links (eg glossary) + +$THEME->custompix = false; // If true, then this theme must have a "pix" + // subdirectory that contains copies of all + // files from the moodle/pix directory + // See "cordoroyblue" for an up-to-date example. +?> diff --git a/theme/orangewhitepda/favicon.ico b/theme/poweraid/favicon.ico old mode 100644 new mode 100755 similarity index 100% rename from theme/orangewhitepda/favicon.ico rename to theme/poweraid/favicon.ico diff --git a/theme/poweraid/footer.html b/theme/poweraid/footer.html new file mode 100644 index 00000000000..0bbc897d08a --- /dev/null +++ b/theme/poweraid/footer.html @@ -0,0 +1,44 @@ +<?php +/* + Filename: footer.html + Purpose of file: Printing out the Moodle theme footer + + Author of file: Bjarne Varoystrand aka Black Skorpio + E-mail: webmaster@postnuke-sweden.com + Web: www.postnuke-sweden.com + ICQ: 1194177 + + --------------------------------------------------------------------- + LICENSE + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License (GPL) + 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. + + To read the license please visit http://www.gnu.org/copyleft/gpl.html +*/ +?> +</td> +<td width="6" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/left_sidebar.jpg"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/left_sidebar.jpg" width="6" height="100%" /></td> +</tr><tr> +<td height="9" width="6"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/right_corner_bott.jpg" width="6" height="9" /></td> +<td height="9" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/bott_bar.jpg"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/bott_bar.jpg" width="1" height="9" /></td> +<td height="9" width="6"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/left_corner_bott.jpg" width="6" height="9" /></td> +</tr> +</table></td> +<td width="1" bgcolor="<?php echo $THEME->themeborder?>"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/side_right.gif" width="2" height="100%" /></td> +</tr> +</table><table border="0" cellspacing="0" cellpadding="0" width="<?php echo $THEME->themewidth?>"> +<tr> +<td width="93" height="19" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/client_tools_bot_mid.gif"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/login_lower_left.gif" width="93" height="19" /></td> +<td height="19" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/client_tools_bot_mid.gif"><center><FONT SIZE=1><?php echo $loggedinas ?></FONT></center></td> +<td width="93" height="19" align="right" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/client_tools_bot_mid.gif"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/login_lower_right.gif" width="93" height="19" border="0" /></a></td> +</tr> +</table> +<P align=center><font size="1"><?php echo $homelink ?></font></P> diff --git a/theme/poweraid/header.html b/theme/poweraid/header.html new file mode 100644 index 00000000000..d79b10b8a35 --- /dev/null +++ b/theme/poweraid/header.html @@ -0,0 +1,147 @@ +<?php +/* + Filename: header.html + Purpose of file: Printing out the Moodle theme header + + Author of file: Bjarne Varoystrand aka Black Skorpio + E-mail: webmaster@postnuke-sweden.com + Web: www.postnuke-sweden.com + ICQ: 1194177 + + --------------------------------------------------------------------- + LICENSE + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License (GPL) + 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. + + To read the license please visit http://www.gnu.org/copyleft/gpl.html +*/ +?> +<HTML<?php echo $direction?>> +<HEAD> +<?php echo $meta ?> +<TITLE><?php echo $title ?></TITLE> +<META NAME="keywords" CONTENT="Moodle, <?php echo $title ?> " /> +<meta name="ROBOTS" content="INDEX,FOLLOW" /> +<meta name="resource-type" content="document" /> +<meta http-equiv="expires" content="0" /> +<meta name="author" content="<?php echo $title ?>" /> +<meta name="copyright" content="Copyright (c) 2003 by <?php echo $title ?>" /> +<meta name="revisit-after" content="1 days" /> +<meta name="distribution" content="Global" /> +<meta name="generator" content="Moodle - http://moodle.com" /> +<meta name="rating" content="General" /> + +<LINK REL="stylesheet" HREF="<?php echo $styles ?>" /> +<LINK REL="SHORTCUT ICON" HREF="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/favicon.ico" /> +</script> +<?php include("$CFG->javascript"); ?> +</HEAD> + +<BODY <?php echo " $bodytags"; if ($focus) { echo "onLoad=setfocus()"; } echo " bgcolor=\"$THEME->body\" topmargin=\"$THEME->topmargin\" leftmargin=\"$THEME->leftmargin\" marginheight=\"$THEME->marginheight\" marginwidth=\"$THEME->marginwidth\" />"; ?> + + +<?php if ($home) { // This is what gets printed on the home page only ?> +<div align="center"> +<table border="0" cellspacing="0" cellpadding="0" width="<?php echo $THEME->themewidth?>"> +<tr> +<td width="6" ><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/right_corner_top.jpg" width="6" height="9" /></td> +<td valign="bottom" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/top_bar.jpg"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/top_bar.jpg" width="1" height="9" /></td> +<td width="6"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/left_corner_top.jpg" width="6" height="9" /></td> +</tr> +<tr> +<td width="6" bgcolor="<?php echo $THEME->body?>"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/side_left.gif" width="2" height="100%" /></td> +<td align="left" valign="top"><A TARGET="<?php echo $CFG->framename?>" HREF="<?php echo $CFG->wwwroot?>"><img src="<?php echo "$CFG->wwwroot/theme/$CFG->theme/$THEME->frontlogo" ?>" border="0" /></A></td> +<td width="6" bgcolor="<?php echo $THEME->body?>"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/left_sidebar.jpg" width="6" height="100%" /></td> +</tr> +</table><table border="0" cellspacing="0" cellpadding="0" width="<?php echo $THEME->themewidth?>"> +<tr> +<td width="1" bgcolor="<?php echo $THEME->themeborders?>"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/side_left.gif" width="2" height="100%" /></td> +<td align="center" valign="middle" width="100%"> +<TABLE WIDTH=100% CELLPADDING=0 CELLSPACING=0 BORDER=0> +<TR> +<TD ALIGN=LEFT VALIGN=middle>&nbsp;<FONT SIZE=4><B><?php echo $heading?></B></FONT></TD> +<TD ALIGN=RIGHT VALIGN=middle><?php echo $menu ?>&nbsp;</TD> +</TR> +</TABLE> + +</td> +<td width="1" bgcolor="<?php echo $THEME->themeborders?>"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/side_right.gif" width="2" height="100%" /></td> +</tr> +</table><table border="0" cellspacing="0" cellpadding="0" width="<?php echo $THEME->themewidth?>"> +<tr> +<td width="1" bgcolor="<?php echo $THEME->themeborders?>"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/side_left.gif" width="2" height="100%" /></td> +<td align="center" valign="top"> +<table border="0" cellspacing="0" cellpadding="0" width="<?php echo $THEME->themewidth?>"> +<tr> +<td width="6"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/right_corner_top.jpg" width="6" height="9" /></td> +<td valign="bottom" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/top_bar.jpg"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/top_bar.jpg" width="1" height="9" /></td> +<td width="6"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/left_corner_top.jpg" width="6" height="9" /></td> +</tr><tr> +<td width="6" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/right_sidebar.jpg"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/right_sidebar.jpg" width="6" height="100" /></td> +<td align="left" valign="top"> + + +<?php } else if ($heading) { // This is what gets printed on any other page with a heading ?> +<div align="center"> +<table border="0" cellspacing="0" cellpadding="0" width="<?php echo $THEME->themewidth?>"> +<tr> +<td width="6"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/right_corner_top.jpg" width="6" height="9" /></td> +<td valign="bottom" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/top_bar.jpg"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/top_bar.jpg" width="1" height="9" /></td> +<td width="6"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/left_corner_top.jpg" width="6" height="9" /></td> +</tr> +<tr> +<td width="6" bgcolor="<?php echo $THEME->body?>"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/side_left.gif" width="2" height="100%" /></td> +<td align="left" valign="top"><A TARGET="<?php echo $CFG->framename?>" HREF="<?php echo $CFG->wwwroot ?>"><img src="<?php echo "$CFG->wwwroot/theme/$CFG->theme/$THEME->smalllogo" ?>" border="0" /></A></td> +<td width="6" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/left_sidebar.jpg"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/left_sidebar.jpg" width="6" height="100%" /></td> +</tr> +</table><table border="0" cellspacing="0" cellpadding="0" width="<?php echo $THEME->themewidth?>"> +<tr> +<td width="1" bgcolor="<?php echo $THEME->themeborders?>"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/side_left.gif" width="2" height="100%" /></td> +<td align="center" valign="middle"> +<table WIDTH=100% CELLPADDING=0 CELLSPACING=0 BORDER=0> +<TR> +<TD ALIGN=LEFT VALIGN=middle>&nbsp;<FONT SIZE=4><B><?php echo $heading?></B></FONT></TD> +<TD ALIGN=RIGHT VALIGN=middle><?php echo $menu ?>&nbsp;</TD> +</TR> +</table> + + <?php if ($navigation) { // This is the navigation table with breadcrumbs ?> + <table BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%> + <TR> + <TD BGCOLOR="<?php echo $THEME->cellheading?>" CLASS="navbar" VALIGN=middle>&nbsp;<FONT SIZE=2><B><?php print_navigation("$navigation"); ?></B></FONT></TD> + <TD BGCOLOR="<?php echo $THEME->cellheading?>" CLASS="navbar" ALIGN=RIGHT WIDTH=20 VALIGN=TOP><?php echo $button ?></TD> + </TR> + </table> + <?php } ?> + +</td> +<td width="1" bgcolor="<?php echo $THEME->themeborders?>"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/side_right.gif" width="2" height="100%" /></td> +</tr> +</table><table border="0" cellspacing="0" cellpadding="0" width="<?php echo $THEME->themewidth?>"> +<tr> +<td width="1" bgcolor="<?php echo $THEME->themeborders?>"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/side_left.gif" width="2" height="100%" /></td> +<td align="center" valign="top"> +<table border="0" cellspacing="0" cellpadding="0" width="<?php echo $THEME->themewidth?>"> +<tr> +<td width="6"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/right_corner_top.jpg" width="6" height="9" /></td> +<td valign="bottom" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/top_bar.jpg"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/top_bar.jpg" width="1" height="9" /></td> +<td width="6"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/left_corner_top.jpg" width="6" height="9" /></td> +</tr><tr> +<td width="6" background="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/right_sidebar.jpg"><img src="<?php echo $CFG->wwwroot?>/theme/<?php echo $CFG->theme ?>/images/right_sidebar.jpg" width="6" height="100" /></td> +<td align="left" valign="top"> + + +<?php } else { // This is what gets printed on any other page (no heading, not home page) ?> +<BLOCKQUOTE> + +<?php } ?> + +<!-- End of header --> diff --git a/theme/poweraid/images/bott_bar.jpg b/theme/poweraid/images/bott_bar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9052cb2fb261b14270bebca33fc310b7681d9da6 GIT binary patch literal 724 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91NTcjLeLR3`~NI%z}*n zZ!z#NGXgoxf(-Ty|6c98{?Ytjqm=nS_VfQ4PF$&7|0w@2lS%#`{`vnICaz#!wy44W G|4jh*D%}?V literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/bott_left.jpg b/theme/poweraid/images/bott_left.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b80406b22715670ac346a3e06876887833a91e4d GIT binary patch literal 753 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91NTcY|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|6bkq_~_rhe6O9@t}XMucg#5d&HLwEyOYXK=bxS!c+$<@?9gJC ljqL0q_qYG?{?D+WuKPbjGw1%Fat+qoe{cM&WySFSCIH0S>xlpW literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/bott_middle.jpg b/theme/poweraid/images/bott_middle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..051c8cbd6938165894190622b466a07dce4680e1 GIT binary patch literal 726 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91NTcOw5dm3`~NI%z}*n zZ!z#NGXgoxf(-Ty|6c#Q`O*Jh>tFu=3~c4{f71H5)dc@%SXl4;pW)!#<Np~X7w|pn IV)%a(0IkK{g#Z8m literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/bott_right.jpg b/theme/poweraid/images/bott_right.jpg new file mode 100644 index 0000000000000000000000000000000000000000..932c607eadbcf67576ff6a1e6f6682d0797df7ac GIT binary patch literal 749 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91NTcY|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|K7f-v8^qv*W3B%=HqE!7k^UNx?NBA&Epekx95nLDTo!Z-wj|m gn){z2HDmwhC;MmDe+*&F+<!ItKf?|!D~A6!0WOE>xc~qF literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/client_tools_bot_mid.gif b/theme/poweraid/images/client_tools_bot_mid.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d32e862f187667223012905b6e05f86377afd3a GIT binary patch literal 169 zcmV;a09OA;Nk%w1VUPh60FeLy%*@RH|Ns600ssI2A^8LZ6afDKEC2ui0FVI_0007d zjE||y?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9hYgr_`$Tip^@b+^+Wv4vWX+viXcotJmzd`wfrF=k&V$j?e4&K!E=b7$`VMSZH{N Xn5ekO*y#8O87VnQS!sDGSpWb#mflri literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/dots.gif b/theme/poweraid/images/dots.gif new file mode 100644 index 0000000000000000000000000000000000000000..0bb8f7885cab6776a76b995cf106ea8e4271de11 GIT binary patch literal 72 zcmZ?wbhEHbJkP+$Fp+^FEiLW;|Ns9OnHU%t6o0a?h%o$T&;ha;K=KSsk}i1_6Zi1W Z54m!+V)@+}uleed+^SM5`ob6)tN|`&7tjCz literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/dots_002.gif b/theme/poweraid/images/dots_002.gif new file mode 100644 index 0000000000000000000000000000000000000000..38fc6f93dd5683c3d10a346a5a88e41175e7652a GIT binary patch literal 58 zcmZ?wbhEHb>|$VK_{d=R|NsBAw6uSWObiSRIzY?-5@%o%=E<v=u!nbk$d#)V%kR#3 L%~zMi$Y2cs5NQ(P literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/favicon.ico b/theme/poweraid/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ff943576e27cb0f7af663d34bc5bc43e56b5960e GIT binary patch literal 766 zcmcIhI~Kw)3{!bM19L}?!L7Vz^s#arMs8pvrz!OFC<{)lM3SB6CBVQjO(PVK3vlIp zV@}LFb3pSz?>Gv;52dt;$R)F&)=DGtLxfgL4oQNuU{S;~QJ|*JAa|$WLc)%_n|UmN zEjPf}M$lo5W6hn?+js1_SuFkXk2pmSZr%Mg*O}zo>>u+i%Ke)^^Caxg;Qo6~Nuh#} jKS$%bJ_!wYzkQkF4-a(qfZzT8mURRwOaGPqKil~Qg02hH literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/frontlogo.jpg b/theme/poweraid/images/frontlogo.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a42457496345d362eda756f3897ec3f2caf3eb02 GIT binary patch literal 5018 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 LqtuW0uBQJ3?7JGf literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/gradient.jpg b/theme/poweraid/images/gradient.jpg new file mode 100644 index 0000000000000000000000000000000000000000..61d792c77036adebe070de83dc8749491882b6a1 GIT binary patch literal 488 zcmex=<NpH&0WUXCHwH!~28I+MWcdGvLC~c%IlGd9k%5JQfx#0f^p1hgF(p4Kl_BK- zP=xXSZH5*G7A7VpW+oP9W)@avW@c7479e0_XJut$Wo74N=U@jSPEIavZf-749x&hs z0YNxm1gd9eW9Q}M<Q3-Q<r5YG$$$yC68wz+2N(o77y=kHm>C5bm;@P_1sVSzVF+Vj z1OcEk;ed^unFCb>BqhMW$ij@Gj*%%yEO4P{k|2sGNbUby3_L)!OoGgU4E7A)(_?2k z$d;utl-``ecs(tE9mrM6=~fVPoxrVhf^}jF(}_*Y)?2C=Grllge8IZ-0=N4D<JnrL z6LePVHf&n6jp@{;8{9yy)3>=3WS6I~XWnGIRpwAOcY<Z%T>+VL7k1f;jK@nHfE?Y| zbq-;F8rJ?~jQ+&5{Rywwx`~Y89u2FPID}qO(0VCg5_QSlLEBT7VXaCD)0T-BxPaW4 YkC6g0VJ_^V6B&=DI21+-*#Ex?07(RDP5=M^ literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/index.php b/theme/poweraid/images/index.php new file mode 100644 index 00000000000..f42dda36f35 --- /dev/null +++ b/theme/poweraid/images/index.php @@ -0,0 +1,3 @@ +<?php + header("Location: ../../../index.php"); +?> \ No newline at end of file diff --git a/theme/poweraid/images/left_corner_bott.jpg b/theme/poweraid/images/left_corner_bott.jpg new file mode 100644 index 0000000000000000000000000000000000000000..837171e1ad276dd8b40452eecfa84fad36a71605 GIT binary patch literal 753 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91NTcY|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|K66oWe?oBe{#%6-zP!wKb1Ig7ZmBfd8}g05RrO!rlVeHMF0bX k%oq8av&#Q`?*I3X|DRfe-u^$;$Nw`h{&QP(f&KqY07u#B^#A|> literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/left_corner_top.jpg b/theme/poweraid/images/left_corner_top.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d62c0696d1d447a61ecf7700293a934a56990cf1 GIT binary patch literal 755 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91NTcY|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|K6L_3$1;6^;qwk%wxx6+f-++eKKW}x8&n9T|PChcR#fZRrvex o#Jc|TTmSv3|Ne9Tp$3cd;`Jx$9sV<{w?6-u@7ksp%>Qo!02D0od;kCd literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/left_sidebar.jpg b/theme/poweraid/images/left_sidebar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3e4019637fd35f33173d999673cbb5c7d3b3ad8 GIT binary patch literal 707 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91KhhY|M;`3`~NI%z}*n oZ!z#NGXgoxf(-Ty|K8LD{%24YZ?AuS?Du~Lx2UUG4F7Ke0D3LbrT_o{ literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/login_lower_left.gif b/theme/poweraid/images/login_lower_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..be2a678275c3267971ce1a320ad6213fa7cfa7ea GIT binary patch literal 143 zcmV;A0C4|DNk%w1VO;<d0HOc@%*@RH|Nqw3*4*6O_xJbX<KzAT0ssI2A^8La6aWSQ zEC2ui09^nR000A2D6!oBFv>}*4eIL6JI!7wjuA+nC}*Z@3$1S4!g5X0cHZH7Zvnm_ x2PiC7h{oiLplmh@1*eq2llq`m=OCI@76b)mw@CN`&gisy&2GEj@OV1`06UffKaT(a literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/login_lower_right.gif b/theme/poweraid/images/login_lower_right.gif new file mode 100755 index 0000000000000000000000000000000000000000..7e7119c528bab230294f2d5edb773a2370de9384 GIT binary patch literal 146 zcmV;D0B!$ANk%w1VO;<d0HOc@%*@RH|Nqw3*4*6O_xJbX<KzAT0ssI2A^8LW000I6 zEC2ui09^nR000A57`oj4Fv>}55H{=0Dehn>M&D?jT#2qMq_%MT#<V%tcz5T#wfDdX zAV{nXi%7^Z$y5-2&0e7pZ3+n0<TQ&c47fo;K|oai&gisy&2GEj@OYbyT_gYiJAKMP A$p8QV literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/right_bott.jpg b/theme/poweraid/images/right_bott.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9be2db541c0fd6cb11a3ce5246fc92132cc96c4 GIT binary patch literal 727 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91Ls>Y|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|6V=)QU0)Z!IJO?a|Hi02=8@YUjH*Ii~mRXJlTIw|1<pKH|76l J=^+3ACIF2|-RA%R literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/right_corner_bott.jpg b/theme/poweraid/images/right_corner_bott.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b80406b22715670ac346a3e06876887833a91e4d GIT binary patch literal 753 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91NTcY|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|6bkq_~_rhe6O9@t}XMucg#5d&HLwEyOYXK=bxS!c+$<@?9gJC ljqL0q_qYG?{?D+WuKPbjGw1%Fat+qoe{cM&WySFSCIH0S>xlpW literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/right_corner_top.jpg b/theme/poweraid/images/right_corner_top.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2eeb31c0069b2757e167711f63ca31a1c34024a GIT binary patch literal 761 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91NTcY|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|6b?)30!eM=HAVUU<dKn*&1z+9(gZs5}m-8>=sg17H6L5AbHU8 t#H#tX;sxwqcy9U6aPa8y{|w3j?2Zrme~MrKw_m^h%d)K3E13V^1OUGZ?u`Hd literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/right_sidebar.jpg b/theme/poweraid/images/right_sidebar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d4e13d4e549875fecf919043e5c6365af379121 GIT binary patch literal 709 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91KhhY|M;`3`~NI%z}*n qZ!z#NGXgoxf(-Ty|33WT^Z%p#`uv}Lar4i;%DEmp`Bet<|C<0r!PY$h literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/right_top.jpg b/theme/poweraid/images/right_top.jpg new file mode 100644 index 0000000000000000000000000000000000000000..abec6834630295461bf592c55fbc09cb09801b2a GIT binary patch literal 725 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91Ls>Y|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty{~q5yZl|uyd}vpF+^;>ydy@CAb^p)6xxK6YMfm0YA2QYdGbmkP H|9=wzv2fhK literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/side_left.gif b/theme/poweraid/images/side_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..258796281d9e187cf1b1ee899118f97fecb28ba7 GIT binary patch literal 92 zcmZ?wbhEHbWMbf9_{?DV|Ns9pXU<%^cJ0ocJKw*5fBg9IKSm}7+(7Xs3nK#q8-or= V3CIiw7R~?$Pj!xMUOmbT)&SUe7(W02 literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/side_right.gif b/theme/poweraid/images/side_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..c54c008cafacb72cd59fb26a85608a4faef3ab63 GIT binary patch literal 84 zcmZ?wbhEHbWMbf9_{?DV|NsB*-@l(ZbLQH$Yfqm(y>sUd174s5k_G8?VBr+t@q8{~ Knk>l3U=0A~NfojH literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/sidebar_left.jpg b/theme/poweraid/images/sidebar_left.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37424e8e932c57f8ef3263b012334c473a3fdf0e GIT binary patch literal 740 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91H>sY|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|L)gGr~HWNdAfhgSD*h34{Fbr@0PyQVDtH5!}*qE9nb#^oqbE^ XvBz(Z`BgvPZ|V!{;6Ggq|8D{S3^?V} literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/sidebar_right.jpg b/theme/poweraid/images/sidebar_right.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c35ddafaa76c29b7a90f5abf893f26bdb2f0e16 GIT binary patch literal 751 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91H>sY|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|8Chtc>Q>Ph$Y$nrquF#_Fr!Mt&U6n&v4oP_lpZ`_Wde?71s}* jiERJl_0{oH&wqx~v34u|uC0H*W&ZaA{~5R#{@(-u=kM$+ literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/smalllogo.jpg b/theme/poweraid/images/smalllogo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c74b38c17d7058f033e8f2d6d96609a40160618a GIT binary patch literal 2644 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 X#~sQ#tn82BLYpW?FvQ;qr%(I~7WKS& literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/top_bar.jpg b/theme/poweraid/images/top_bar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2518b4c6a47d55d1848f84355af9185d55f271eb GIT binary patch literal 726 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91NTcjLeLR3`~NI%z}*n zZ!z#NGXgoxf(-Ty|6c6hTBrD*;lkwf{|wEu=l^qG{5$-S{9jJ9`X81%|1&(PV)*h( IgZckW0HXNa>;M1& literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/top_middle.gif b/theme/poweraid/images/top_middle.gif new file mode 100644 index 0000000000000000000000000000000000000000..0bcccc86a9b875ddaa9564f28fede3c8c7671959 GIT binary patch literal 63 zcmZ?wbhEHb<YMq)_`qQJ|Ns9pXU^y_00BtEfl02Xf5GXu{EO#oxz)Y--k#t5ZI3*r RJ?mWd>eMz}CU#Z^YXBM$8qWX# literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/top_right.gif b/theme/poweraid/images/top_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7907d355a036bb7f1631ef9c68f96943b76af25 GIT binary patch literal 526 zcmV+p0`dJvNk%w1VdVf!0P+Aa|NsBq-rmg2%;x6i_xJbL*Vh0500000EC2ui0ObHo z06+u(D7xJKFv>}*y*TU5X$b@%0s>*4XsWJk>%MR-&vb3yc&+4o@BhG{aA?{QkI1BQ zc{DPg(5Q6joLaBgY^$p6dcR37cuX$S#OAbGjb6Lo+BSSnUls_Zx_+;e^Z$T4d4Yt5 zGk%7NhKP!de~gZibdZvjYm}CmWSE+rSOEbdgPx>m1*4^@V4SM0eW<RnQ>?PJKeV>F zIJmmKhp@iEKD@%kD#XUgc)-fdFUZcp(9ylq)VbEzwb|OS+}*9;;He4&=I7|?>g(+7 z?(gvN^7Hid_V@Vl1p^}jBmV#c3LHqVpuvL(6DnNDu%W|;4b73rN3o*Cix@L%+&BQ+ zls||dLy8<pvZTqABm{6=$+D%(mn;>aoJq5$&6_mK!Q9ESr%#wNaS9zuv?xxUKa(n5 z%G6y@qfnztomvoS)2mpsx_nBttJkkKt!f=hwroAFVAHBy%TTP@w{YX4WlOiNUAJ-b z>b*MGuHV01@$MZ=cxPY0h!YDHT)460jE5CVo?Mdg<I9-Oex%H~vq;OCLyKM)*|X`> z13`~oExI)7*Qiyqp8eQ0?Ax4W)80MUHtyevb@Lt$*EjIvcU2N!?$|i;=W2yBpU$^~ Q_3PNPYv0bjJA(uOJJr)4z5oCK literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/topbar_left.jpg b/theme/poweraid/images/topbar_left.jpg new file mode 100644 index 0000000000000000000000000000000000000000..46258aec700270b50c9c50393e71832896437811 GIT binary patch literal 861 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91M~SY|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|6Z@R$yAPuji{)0Z+n|N|J05hJ9dhF(AjaaS7NoK1e19}Lb~L6 z(dd6d`-ST-Y+YLa;PHQkEdlJpi?TKzewb^U_iQV}{Va8Hjx$C2>ay(%jz0{u-?rua z&-csg@3;SF;9~f>>+s|J#xJ^7vC^SGrZ0<lRrYJ$s>x9&S4637l;0kcVCAWhYN7DS vN-((ou)`nA{|t+cF8$B&;Mn2+4E+J@QzE}yt$$;<y8h*%S8Fe@|Gx<U^~WK~ literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/topbar_middle.jpg b/theme/poweraid/images/topbar_middle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53823d7c59c81e6bc01f5165d4897e339ebcf800 GIT binary patch literal 794 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91M~SOw5dm3`~NI%z}*n zZ!z#NGXgoxf(-Ty|DM-B)cv^rFSnKcKmPr{edRw)`*HnW>s;yo4D9#+E^9Eb-;!(p zeBaFf3=Nm+Tjg(=&HsGg=Rd=NO#4F(cG>?K+FE}U{%3Hl2Z|k>Hupcn@eFKY%;z%} I@c+LF0GvDmWdHyG literal 0 HcmV?d00001 diff --git a/theme/poweraid/images/topbar_right.jpg b/theme/poweraid/images/topbar_right.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9768722ffc97f8b30d91bcc5590c2a57c73a3566 GIT binary patch literal 843 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG&!6(??EhOAA$kj?AurxC{J0vqVRl!uxK+n{g z*TpdeC~Rb4U}R-rXk}=kU}$M&XaGdkydM6+Ayx{$iOK%K3Wf%HhI&TUy#H@Aw1CWp z0wyL#CMISk5MX9zW@2W60ai9v77%7(WoKn$V`FD$2eLTW**QQ=pdPRepeA;pGN1^F z;QtZEMGOp#tPoc)KmjArepWVi4o)s^Mh0e>6B!}0NRk2!OpHLsvM{p(-3K(L7AVKS zBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWz zS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_O zw0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrH ze)|07>$mSee*O{!I+=-ug_#8yUMviZOyxk#EXcyDXviky7|5PjD6C}E$RXl1apA^; zoXW;QA4HRiE^>*fm^@Vd2y!*p(ZspAi7ZFM-3)i~{{swy91M~SY|M;`3`~NI%z}*n zZ!z#NGXgoxf(-Ty|K4xW7mI#Xe0FJ8nbY~mF4GxDQia@Y-206**_hYW1s_oOD%11j zU+wfi-~4~S2w-o2Wz~GX{9!Q9L<6zukH0f4dSJUe`F!!uEAumV{%6Sk_iF(^*N6WM zN9B1cZXcN^zv;vMUY%0UhnGz`)1sqKS1#$0%yH1!usfH1j_`}@D|J`xzn_1S!Tjt! c(|?8&@0b2(xS<~KpW))I+Ulna_5W`I0L2Fy9smFU literal 0 HcmV?d00001 diff --git a/theme/poweraid/index.php b/theme/poweraid/index.php new file mode 100644 index 00000000000..490cac8ec15 --- /dev/null +++ b/theme/poweraid/index.php @@ -0,0 +1,3 @@ +<?php + header("Location: ../../index.php"); +?> \ No newline at end of file diff --git a/theme/poweraid/license.txt b/theme/poweraid/license.txt new file mode 100644 index 00000000000..dcfa4c235e8 --- /dev/null +++ b/theme/poweraid/license.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/theme/poweraid/styles.php b/theme/poweraid/styles.php new file mode 100644 index 00000000000..c9c9726e432 --- /dev/null +++ b/theme/poweraid/styles.php @@ -0,0 +1,642 @@ +<?PHP // $Id$ +/* + Filename: style.php + Purpose of file: Setting the CSS defines for the theme + + Author of file: Bjarne Varoystrand aka Black Skorpio + E-mail: webmaster@postnuke-sweden.com + Web: www.postnuke-sweden.com + ICQ: 1194177 + + --------------------------------------------------------------------- + LICENSE + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License (GPL) + 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. + + To read the license please visit http://www.gnu.org/copyleft/gpl.html +*/ + +/* We use PHP so we can do value substitutions into the styles */ + + $nomoodlecookie = true; + require_once("../../config.php"); + $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); + +/* + From here on it's nearly a normal stylesheet. + First are some CSS definitions for normal tags, + then custom tags follow. + + Note that colours are all defined in config.php + in this directory +*/ + +?> +a:link { + color: #333333; + text-decoration: none; + font-weight: bold +} +a:visited { + color: #333333; + text-decoration: none; + font-weight: bolder; +} +a:hover { + color: #000000; + text-decoration: underline; + background-color: #CCCCCC; +} +a:active { + color: #000000; + text-decoration: underline; +} + +body { + font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; + color: #000000; +} +p { +} +h1 { +} +h2 { +} +h3 { +} +h4 { +} +th { + font-weight: bold; + background-color: #FFD991; +} +td { +} + +li { +} + +form { + margin-bottom: 0; +} + +.highlight { + background-color: #AAFFAA; +} + +.headingblock { + background-image: url(<?PHP echo "$themeurl"?>/images/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-weight: bold; +} + +.navbar { + background-image: url(<?PHP echo "$themeurl"?>/images/gradient.jpg); +} + +.generalbox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.generaltable { +} + +.generaltableheader { + background-image: url(<?PHP echo "$themeurl"?>/images/gradient.jpg); +} + +.generaltablecell { +} + +.sideblock { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.sideblockheading { + background-image: url(<?PHP echo "$themeurl"?>/images/gradient.jpg); + font-weight: bold; +} + +.sideblockmain { +} + +.sideblocklinks { +} + +.sideblocklatestnews { +} + +.sideblockrecentactivity { +} + +.outlineheadingblock { + background-image: url(<?PHP echo "$themeurl"?>/images/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-weight: bold; +} + +.weeklyoutline { +} + +.topicsoutline { +} + +.forumpost { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.forumpostheader { + background-image: url(<?PHP echo "$themeurl"?>/images/gradient.jpg); +} + +.forumpostpicture { +} + +.forumpostside { +} + +.forumpostmessage { +} + +.forumpostheadertopic { +} + +.forumpostheaderpicture { +} + +.forumpostheadername { + font-size: small; +} + +.forumpostheaderreplies { + font-size: small; +} + +.forumpostheaderdate { + font-size: small; +} + +input { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + font-weight: bold; + color: #000000; + background-color: #999999; +} +select { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + font-weight: bold; + color: #000000; + background-color: #999999; +} + +.logininfo { + font-size: x-small; +} + +.homelink { + font-size: x-small; +} + +.teacheronly { + color: #990000; +} + +.header { +} + +.headermain { + font-size: large; + font-weight: bold; +} + +.headermenu { +} + +.headerhome { +} + +.headerhomemain { + font-size: x-large; + font-weight: bold; +} + +.headerhomemenu { +} + +.categorybox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.categoryboxcontent { +} + +.categoryname { + font-size: larger; + font-weight: bold; +} + +.coursename { +} + + +.coursebox { +} + +.courseboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.courseboxinfo { +} + +.courseboxsummary { +} + +a.autolink:link { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:visited { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:hover { + text-decoration: underline; + color: red; +} + +.userinfobox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; + margin-bottom: 5px; +} + +.userinfoboxside { + -moz-border-radius-bottomleft: 20px; +} + +.userinfoboxcontent { + -moz-border-radius-bottomright: 20px; +} + + +.userinfoboxsummary { +} + +.userinfoboxlinkcontent { + -moz-border-radius-bottomright: 20px; +} + +.generaltab { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.generaltabselected { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.forumheaderlist { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.smallinfo { +} + +.smallinfohead { + color: #555555; +} + +.tabledivider { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + border-left: 0px; + border-right: 0px; + border-top: 0px; +} + +.headingblockcontent { +} + +TABLE.calendarmini { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-size: .7em; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmonth { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmini TBODY TD { + text-align: center; + vertical-align: center; + width: 14%; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + -moz-border-radius: 4px; +} + +TABLE.calendarmonth TBODY TD { + width: 14%; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + vertical-align: top; +} + +.cal_event_global { + background-color: #99cc99; + border: 2px #99cc99 solid !important; +} + +.cal_event_course { + background-color: #ff9966; + border: 2px #ff9966 solid !important; +} + +.cal_event_group { + background-color: orange; + border: 2px orange solid !important; +} + +.cal_event_user { + background-color: #ffcc99; + border: 2px #ffcc99 solid !important; +} + +.cal_duration_global { + border-top: 2px #99cc99 solid !important; + border-bottom: 2px #99cc99 solid !important; +} + +.cal_duration_course { + border-top: 2px #ff9966 solid !important; + border-bottom: 2px #ff9966 solid !important; +} + +.cal_duration_user { + border-top: 2px #ffcc99 solid !important; + border-bottom: 2px #ffcc99 solid !important; +} + +.cal_duration_group { + border-top: 2px orange solid !important; + border-bottom: 2px orange solid !important; +} + +.cal_weekend { + color: red; +} + +.cal_today { + border: 2px black solid !important; +} + +TABLE.calendarmonth TBODY TD TABLE { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmonth TBODY TD TABLE TD { + border: none; +} + +TABLE.calendarmonth TBODY TD DIV { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmini THEAD TD { + font-size: .95em; + text-align: center; + vertical-align: center; +} + +TABLE.calendarmonth THEAD TD { + text-align: center; + vertical-align: center; + padding-bottom: 3px; + border-bottom: 2px <?PHP echo $THEME->borders?> solid; +} + +.sideblockmain .cal_event { + font-size: 0.8em; + font-weight: bold; +} +.sideblockmain .cal_event_date { + font-size: 0.6em; +} + +.mycalendar { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.mycalendar .cal_event { + font-weight: bold; +} +.mycalendar .cal_event_date { + font-size: 0.8em; +} + +.mycalendar TABLE.cal_filters { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_filters THEAD TD { + border-bottom: 2px <?PHP echo $THEME->borders?> solid; + margin: 0px; + padding: 2px; +} + + +.mycalendar .cal_event_table { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_event_table THEAD { + background-color: <?PHP echo $THEME->cellcontent?>; + text-align: center; + font-weight: bold; +} + +.sideblockmain HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.mycalendar HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.calendarexpired { + color: red; + font-weight: bold; +} + +.calendarreferer { + font-weight: bold; +} + +TD.cal_event_description { + width: 80%; + border-left: 2px <?php echo $THEME->borders?> solid; + vertical-align: top; + padding: 5px; +} + +.cal_popup_fg { + background-color: <?php echo $THEME->cellcontent?>; +} + +.cal_popup_bg { + border-top: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-left: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-right: 2px <?php echo $THEME->cellheading2 ?> solid; + border-bottom: 2px <?php echo $THEME->cellheading2 ?> solid; + background-image: url(<?PHP echo "$themeurl"?>/images/gradient.jpg); + padding: 0px; + margin: 0px; +} + +.cal_popup_caption { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; +} + +.cal_popup_close { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; + margin-right: 5px; +} + + +.sideblock .cal_controls { + text-align: center; + font-size: 9px; +} + +A IMG { + border: none; +} + +TABLE.formtable TD { + padding: 9px; +} + +.eventfull { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.eventfullheader { +} + +.eventfullpicture { + padding:8px; +} + +.eventfullside { + -moz-border-radius-bottomleft: 15px; +} + +.eventfullmessage { + -moz-border-radius-bottomright: 15px; +} + +#block_course_summary, #block_course_summary .sideblockmain { + -moz-border-radius: 20px; +} + +#block_course_summary .sideblockmain { + padding: 10px; +} + +.sitetopic { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 15px; +} + +.sitetopiccontent { + -moz-border-radius: 15px; +} + diff --git a/theme/preview.php b/theme/preview.php deleted file mode 100644 index 819151ba64a..00000000000 --- a/theme/preview.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php // $Id$ - - require_once("../config.php"); - - $preview = optional_param('preview','standard',PARAM_FILE); // which theme to show - - if (!file_exists($preview)) { - $preview = 'standard'; - } - - if (! $site = get_site()) { - error("Site doesn't exist!"); - } - - require_login(); - - if (!isadmin()) { - error("You must be an administrator to change themes."); - } - - $CFG->theme = $preview; - - theme_setup($CFG->theme, array('forceconfig='.$CFG->theme)); - - $stradministration = get_string("administration"); - $strconfiguration = get_string("configuration"); - $strthemes = get_string("themes"); - $strpreview = get_string("preview"); - $strsavechanges = get_string("savechanges"); - $strtheme = get_string("theme"); - $strthemesaved = get_string("themesaved"); - - print_header("$site->shortname: $strpreview", $site->fullname, "$strthemes -> $strpreview"); - - print_simple_box_start('center', '80%'); - print_heading($preview); - print_simple_box_end(); - - print_footer(); - -?> diff --git a/theme/standard/README.html b/theme/standard/README.html deleted file mode 100644 index 08e658bfb05..00000000000 --- a/theme/standard/README.html +++ /dev/null @@ -1,15 +0,0 @@ -<h3>STANDARD THEME</h3> -<hr /> - -<p>Moodle's default theme is a very neutral grey/white theme.</p> - -<p>This theme is always the most up-to date.</p> - -<p>Programmers working on Moodle should always design for this -theme, and add new styles to this theme.</p> - -<p>By default, these styles are automatically loaded before any other -themes, so that all custom themes need to do is to define their -own styles to augment or overwrite particular standard styles.</p> - -<p>In this way custom themes are not "left behind" by Moodle upgrades.</p> diff --git a/theme/standard/config.php b/theme/standard/config.php index 871981788de..33fd176b8ea 100644 --- a/theme/standard/config.php +++ b/theme/standard/config.php @@ -1,142 +1,17 @@ <?PHP // $Id$ -//////////////////////////////////////////////////////////////////////////////// -/// This file contains a few configuration variables that control -/// how Moodle uses this theme. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->sheets = array('styles_layout', 'styles_fonts', 'styles_color'); - -/// This variable is an array containing the names of all the -/// stylesheet files you want included in this theme, and in what order -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->standardsheets = true; - -/// This variable can be set to an array containing -/// filenames from the *STANDARD* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parent = ''; - -/// This variable can be set to the name of a parent theme -/// which you want to have included before the current theme. -/// This can make it easy to make modifications to another -/// theme without having to actually change the files -/// If this variable is empty or false then a parent theme -/// is not used. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parentsheets = false; - -/// This variable can be set to an array containing -/// filenames from a chosen *PARENT* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->parentsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->modsheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Activity modules and -/// include them. This allows modules to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->blocksheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Block modules and -/// include them. This allows Blocks to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->langsheets = false; - -/// By setting this to true, then this theme will search for -/// a file named "styles.php" inside the current language -/// directory. This allows different languages to provide -/// different styles. - - -$THEME->navmenuwidth = 50; - -/// You can use this to control the cutoff point for strings -/// in the navmenus (list of activities in popup menu etc) -/// Default is 50 characters wide. - - -$THEME->makenavmenulist = false; - -/// By setting this to true, then you will have access to a -/// new variable in your header.html and footer.html called -/// $navmenulist ... this contains a simple XHTML menu of -/// all activities in the current course, mostly useful for -/// creating popup navigation menus and so on. - - - -$THEME->resource_mp3player_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes'; - -/// With this you can control the colours of the "big" MP3 player -/// that is used for MP3 resources. - - -$THEME->filter_mediaplugin_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'waitForPlay=yes'; - -/// ...And this controls the small embedded player - - -$THEME->custompix = false; - -/// If true, then this theme must have a "pix" -/// subdirectory that contains copies of all -/// files from the moodle/pix directory, plus a -/// "pix/mod" directory containing all the icons -/// for all the activity modules. -//////////////////////////////////////////////////////////////////////////////// - - - -// These colours are not used anymore, so I've set them to -// bright green to help identify where they should be removed -// These lines will be deleted soon - -$THEME->body = "#22FF22"; // Main page color -$THEME->cellheading = "#22FF22"; // Standard headings of big tables -$THEME->cellheading2 = "#22FF22"; // Highlight headings of tables -$THEME->cellcontent = "#22FF22"; // For areas with text -$THEME->cellcontent2 = "#22FF22"; // Alternate colour -$THEME->borders = "#22FF22"; // Table borders -$THEME->highlight = "#22FF22"; // Highlighted text (eg after a search) -$THEME->hidden = "#22FF22"; // To color things that are hidden -$THEME->autolink = "#22FF22"; // To color auto-generated links (eg glossary) +$THEME->body = "#FFEECE"; // Main page color +$THEME->cellheading = "#FFD991"; // Standard headings of big tables +$THEME->cellheading2 = "#FFC85F"; // Highlight headings of tables +$THEME->cellcontent = "#FFFFFF"; // For areas with text +$THEME->cellcontent2 = "#FEE6B9"; // Alternate colour +$THEME->borders = "#FFC85F"; // Table borders +$THEME->highlight = "#AAFFAA"; // Highlighted text (eg after a search) +$THEME->hidden = "#AAAAAA"; // To color things that are hidden +$THEME->autolink = "#DDDDDD"; // To color auto-generated links (eg glossary) +$THEME->custompix = false; // If true, then this theme must have a "pix" + // subdirectory that contains copies of all + // files from the moodle/pix directory + // See "cordoroyblue" for an up-to-date example. ?> diff --git a/theme/standard/docstyles.php b/theme/standard/docstyles.php deleted file mode 100644 index ff753dbae43..00000000000 --- a/theme/standard/docstyles.php +++ /dev/null @@ -1,102 +0,0 @@ -<?PHP /* $Id$ */ - -/// We use PHP so we can do value substitutions into the styles - - if (!isset($themename)) { - $themename = NULL; - } - - $nomoodlecookie = true; - require_once("../../config.php"); - $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - -/// -/// You can hardcode colours in this file if you -/// don't care about this. - -?> -body { - background-color:#FFFFFF; -} -p, a { - font-size:small; -} - -h1, h2, h3 { - padding-left:0px; - background-color:transparent; - color:#000000; -} - -h1 { - font-size:1.7em; - margin:0.5em 0 0; -} - -h2 { - font-size:1.4em; - margin:0.5em 0 0; -} - -h3 { - font-size:1.2em; - margin:0.5em 0 0; -} - - -li { - margin-bottom: 10px; -} - -ul { - margin-top: 10px; -} - -.question { - font-size: medium; - font-weight: bold; - border: 1px dotted; - padding: 10px; - background-color: #EEEEEE; -} - -.answer { - font-size: medium; - border: none; - padding-left: 40px; -} - -.normaltext { - font-size: medium; - border: none; - margin-left: 30px; -} - -.answercode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: none; - padding-left: 60px; -} - -.questionlink { - font-size: medium; - border: none; - padding-left: 40px; -} - -.examplecode { - font-family: "Courier New", Courier, mono; - font-size: small; - border: thin dashed #999999; - background-color: #FBFBFB; - margin: auto; - margin-top: 0.5em; - padding: 30px; - height: auto; - width: auto; -} - -.spaced { - margin-bottom: 30px; -} diff --git a/theme/standard/footer.html b/theme/standard/footer.html index ecdfb3bf506..466d942bc69 100644 --- a/theme/standard/footer.html +++ b/theme/standard/footer.html @@ -1,33 +1,9 @@ -</div> <!-- end div containerContent --> <!-- START OF FOOTER --> -<div id="footer"> - -<?php if ($navigation and false) { ?> - <table class="navbar"><tr><td> - <div class="breadcrumb"><?php print_navigation($navigation); ?></div> - <div class="menu"><?php echo $menu; ?></div> - </td></tr></table> - <div class="clearer">&nbsp;</div> -<?php } ?> - -<?php echo $loggedinas ?> - - -<?php if ($CFG->debug > 7) { - echo $performanceinfo; -?> - <br /> - <hr size="1" noshade="noshade" /> - <p align="center"> - <a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a> | - <a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a> | - <a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a> - </p> -<?php } ?> - - -</div> -</div> +<center> +<hr size="1" noshade="noshade" /> +<p class="logininfo"><?php echo $loggedinas ?></p> +<p class="homelink"><?php echo $homelink ?></p> +</center> </body> </html> diff --git a/theme/standard/gradient.jpg b/theme/standard/gradient.jpg index dbb2126a3b038f7f91a5d44c7331662c67f34bc2..a122ff238d4ea8cb57463e97905f758175be6ed3 100755 GIT binary patch literal 379 zcmex=<NpH&0WUXCHwH#VMg|WcWcYuZ!I^=Xi3x;&fCY$HIapa)SXjB(+1WUFxOjND zxwyG``Gf>``2_j6xdp@o1cgOJMMZh|#U;c<B!omnML>oyG6VInuyV4pa*FVB^NNrR z{vTiv<X{M3&|qd%Vqg+vWEN!ne}q8-<W!(zkpK%LGbd0+Rsbl>$ij>y!zj!wC?vuX zm<W`X0_kExmStdMVr6Dy2N^1eVJM@JFw_5A3_Q$0O@hpV4E79P7>dqH&VGITtL%N# z8--_1ueF`sJ?owNu0#1JXSHuQ{Y2@xU+B{J(R_vJi8C)1t+}`HZMb0Ub)kHh*Wm(; L2hJcn>;Fvv7iU9n literal 373 zcmex=<NpH&0WUXCHwH!~28I+MWcdGvLC~c%IlGd9k%5JQfx#Ro^p1hgF(p4Kl_BK- zP=xXSZH5*Gc2*DolI&dUZ0uY-ob2qJJbc{TJlx!Tf;?a#$R{8uC@8=uDk?56Dk?80 zCnv8A2aFsX9DKZd(n3Pga^fQ5a&QS^8UGJ32y!q4FlaC{3NkPWGBOJ?{y)MH40JX# zBhZxyz{t$P!N`az2K0phra~cMK|yqN4F7L2@BmF@5@Z%+uxEJ5&6vS-fwf_S#ttdQ q1wdr<f~_F~h<L6uJ&56MEC{~IQs(ex!Mqh^jvNR#z*zSGZvp@|A2<;J diff --git a/theme/standard/header.html b/theme/standard/header.html index b414cfa7250..13765be9534 100644 --- a/theme/standard/header.html +++ b/theme/standard/header.html @@ -1,45 +1,60 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html<?php echo $direction ?>> <head> - <?php echo $meta ?> - <meta name="keywords" content="moodle, <?php echo $title ?> " /> - <title><?php echo $title ?></title> - <link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> - <?php include("$CFG->javascript"); ?> +<?php echo $meta ?> +<title><?php echo $title ?></title> +<meta name="keywords" content="moodle, <?php echo $title ?> " /> +<link rel="stylesheet" type="text/css" href="<?php echo $styles ?>" /> +<link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> +<?php include("$CFG->javascript"); ?> </head> -<body<?php - echo " $bodytags"; - if ($focus) { - echo " onload=\"setfocus()\""; - } - ?>> - -<div id="page"> +<body<?php + echo " $bodytags"; + if ($focus) { + echo " onload=setfocus()"; + } + echo " bgcolor=\"$THEME->body\">"; +?> + +<?php if ($home) { // This is what gets printed on the home page only ?> + + <table width="100%" cellpadding="10" cellspacing="0" border="0" class="headerhome"> + <tr> + <td valign="top" class="headerhomemain"><?php echo $heading?></td> + <td align="right" valign="top" class="headerhomemenu"><?php echo $menu ?></td> + </tr> + </table> + +<?php } else if ($heading) { // This is what gets printed on any other page with a heading ?> + + <table width="100%" cellpadding="0" cellspacing="0" border="0" class="header"> + <tr> + <td valign="top" class="headermain"><?php echo $heading?></td> + <td align="right" valign="top" class="headermenu"><?php echo $menu ?></td> + </tr> + </table> -<?php if ($home) { // This is what gets printed on the home page only -?> - <div id="header-home"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> -<?php } else if ($heading) { // This is what gets printed on any other page with a heading -?> - <div id="header"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> <?php } ?> - <div class="clearer">&nbsp;</div> + + <?php if ($navigation) { // This is the navigation table with breadcrumbs ?> - <table class="navbar"><tr><td> - <div class="breadcrumb"><?php print_navigation($navigation); ?></div> - <div class="navbutton"><?php echo $button; ?></div> - </td></tr></table> -<?php } else if ($heading) { // If no navigation, but a heading, then print a line -?> - <hr size="1" noshade="noshade" /> + + <table border="0" cellpadding="3" cellspacing="0" width="100%"> + <tr> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar"> + <font size="2"><b><?php print_navigation("$navigation"); ?></b></font> + </td> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar" align="right" width="20" valign="top"><?php + echo $button; + ?></td> + </tr> + </table> + <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height="5" width="1" /><br /> + +<?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> + + <hr size="1" noshade="noshade" /> + <?php } ?> - <div class="clearer">&nbsp;</div> - <!-- END OF HEADER --> - <div id="content"> + +<!-- END OF HEADER --> diff --git a/theme/standard/pix/tab/left.gif b/theme/standard/pix/tab/left.gif deleted file mode 100644 index 3702865ceb0475715ad68cf87254adf81528efc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmV<0044uNNk%w1VGaNy0J94KnVFgQ_xJDb@893wrKP3+|NqR)%&o1h<>lqIwYAsR z*9{E~zP`Qy0000000000A^8LW000XBEC2ui01f~m000DsaLGxly*TU5<uC_<83e&7 zh&2$&P`pLO5H9>uM-tfZ#OS=<g0u_X1O$Y!$6zdB0f6B7QXB%<tQMPKY`=lS0KAow zwdR08&0enoZS0z@mI~bXw)xKQ-|c>ZfPsC3gnx&AhKEuJ0*;W6k^qsFk_eQKkeid5 Uo(Pqcjsu^dpa7_;s;UtHJ3m-vM*si- diff --git a/theme/standard/pix/tab/left_active.gif b/theme/standard/pix/tab/left_active.gif deleted file mode 100644 index 3a8aa78421e47b20ed57142348bc584cb8ed0050..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmZ?wbhEHb<YQ1`*v!E&bLPzd|NrmVv**Es2dh@C`uzFxnKNfLZ{Ezo!NGtHDE?$& zWMJT6&;dz;%wS*%5IE_%dauRnvri4!8zdPNBw9@wjtJ~=RNZ3WBj_G@dy>K%)6T{P y%=-jb7hQZ7eTb`Jk?@liS)Qxny3%La81CguyiqMa{-WsDn!L^TLyJwB7_0#Y4LQgF diff --git a/theme/standard/pix/tab/left_active_hover.gif b/theme/standard/pix/tab/left_active_hover.gif deleted file mode 100644 index d081a0de41053920f1cfb6ba60bda28d9ba8ac59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmZ?wbhEHb<YQ1`*v!B%bLPzN-@m_q|NhytXG@nZ{r~^})~#Fb-@kwT`t`MI*Pc0Z z1}L&`-#!KyQ2fcl$iTqOpaT*BnZdvkQE<|;->4zTmBYDdn@mfgNXA0LBQqC;B(daM z85Za2%d9=jbm&2PvO&j628RY0MIqlQ4<&qe%xcikTK&{*Z$vI*kBabF`z?O4$@}kU S{s_~Nzx+P-Pq+*tgEas>IY~GG diff --git a/theme/standard/pix/tab/left_hover.gif b/theme/standard/pix/tab/left_hover.gif deleted file mode 100644 index 142c9d0eea262b638d399d183003e6f19e9036d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmV<H02Kd6Nk%w1VGaNy0J94KnVFgQ_xJDb@8;&_rKP3+|NphMwcp?0*Vosrt*y+= z%nc0<zP`Qy0000000000A^8LW000XBEC2ui01f~m000D-aLGxJGJsM=2t$Il9E5Qc zXrVF0nW9u;1aCSqb8Rmit-}Js;Adknh^YWTfJ7k@fv9vEH87~yK;n?4F1ypOATTbI z$$+zYtt`9A?xkQpht~yix?Z2(@B4mqfPr`d19OLohK2x#i;j?m1B#Q61C54>nu(2* lm7kuSnVzJVrKgjfsHCc^sjjR82eP!YwwD08y1Tj&06W#{YXSfO diff --git a/theme/standard/pix/tab/right.gif b/theme/standard/pix/tab/right.gif deleted file mode 100644 index 67527441896a7c7f6e39087731d35264b4bfac01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2379 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 diff --git a/theme/standard/pix/tab/right_active.gif b/theme/standard/pix/tab/right_active.gif deleted file mode 100644 index bc7114eea4e3dfb612155108fe21cf0166bce179..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmV-y0+anmNk%w1VcZ2G0J8u9nVFgY|No|@rp(OD?d|Qnyu97r-K?yv2nYxO00000 z00000000000000000000A^8LW000O8EC2ui0Ne#4000F45Xniay*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuX#v z&*-#z&2GEj@VI<VuiNkVynfH``~QG}f`f#GhKGoWhX9O?j*pO$l9QB`mY0~Bnwy-R zo}ZwhqNAjxrl+W>s;jK6uCK7Mva__cwzs&sy1Tr+zQ4eX0tW*I83D-2%FE2n&d<=% z($mz{*4NnC+S}aS-rwNi;^XAy=I7|?>g(+7?(gvN^7Hid_V@Vt`uqII1O^2J2pDjo zpTUC&6DnNDu%W|;5F<*QNU@^Dix@L%#Ao1u0Am#YHi{fcvZTqAC{wCj$+D%(moQ`6 zGa#TqNSQcu>fFh*r_Y~2g9;r=R3(7}2PPC<%CxD|r%<Cxol3Q;RcZ%pBDl)6tJkk! z!-^eCwk%Tu1Gk!8%eJlCw{YXiom-YB0lIke>fOt?uiw9b&lM;TxUk{Fh!ZPb%vdG? z0F5I{o=my2<;$3<3CPU3v**vCLyK-oc(m!$s8g$6&6=Kp*05vCo=v-U=)1Oa>)y?~ zx9{J;g9{%{ytwh>$dfBy&b+zv=g^}|pH98H_3PNPYv0bjyZ7(l!;2qJzP$PK=+moT z&%V9;_weJ(pHIKO{rmXy>)+46zyJRL1}NYefCLt3;DHDxsNjMOHt67k5Jo8BgcKea G0RTIdJy)Lq diff --git a/theme/standard/pix/tab/right_active_hover.gif b/theme/standard/pix/tab/right_active_hover.gif deleted file mode 100644 index 6408c3afb771cf7459abd56af3276e6afa5fc217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmV+n0`vVxNk%w1VcZ2G0J8u9=H}+^?(Y2j{Q3F$!otG$_xG-@uBN7@-QC@_wY8a< zng9R)|Ns900000000000A^8LW000aCEC2ui0Ne#4000F4P{~QFy*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~C5Hq7!Du?2i>P!;ty-_xtai)odcWYXcuX#v z&*-#z&2GEj@VI<VuiNkVynfH``~QG}f`f#G3k3iO1P2EMPf&)Dl9QB`mY0~Bnwy-R zo}ZwhqNAjxfCvT$Oi!k*uCK7Mva__cwzs&sy1Tr82nvpny~D)C#>dFX%FE2n&d;;~ z2?oN@*4NnC+S}aS-rwNiSp^2c;^*k;>g(+7?(gu|1&s{x_V@Vt`uqI-{_zM71o%g= zpuvL(6DnND5RQ_D5F<*QNU@^Di@knf+{m$`$B!VnLyF`wz`)3pC{wCj$+G3Ok}hM) zoJq5$&6|A$n8eAmr_Y~2gQ^rjK&a89NRujEx=sKBrck3wol3Q;DFFkmYTe4UtJkk< z3V<C;wyfE+Xw#})%eJlCw{YXiolCc_-Me`6>fOt?uiw9b0}CEZxUk{Fh!ZPb%($`R z$B-jSo=my2<;$2eYu?Pcv**vCLyI0wy0q!js8g$6&APSg*RW&Do=v;9?c2C>>)y?~ Ox9{J;gA1<}0RTJDsVKPs diff --git a/theme/standard/pix/tab/right_end.gif b/theme/standard/pix/tab/right_end.gif deleted file mode 100644 index 4b5256885bddd19d260746ca99e5806788900a5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69 zcmZ?wbhEHbWMoicSj5V(cKw=XFP>hzadr3Z-7{y-{Qv(y0~jd&WMO1rU}ew&@jz-B Tn7JZ$ol#_-;JI3rlffDQhnp4| diff --git a/theme/standard/pix/tab/right_hover.gif b/theme/standard/pix/tab/right_hover.gif deleted file mode 100644 index 880d4a9d175c60c8bfab7532eec9b940257115c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2188 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 OR=fJuu=aEW0027!V6!Oz diff --git a/theme/standard/screenshot.jpg b/theme/standard/screenshot.jpg deleted file mode 100755 index a6a18ab60bc235a2452eface24081da281dd3a3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43147 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 diff --git a/theme/standard/styles.php b/theme/standard/styles.php index 080b57c7271..c9de45d65e4 100644 --- a/theme/standard/styles.php +++ b/theme/standard/styles.php @@ -1,18 +1,741 @@ <?PHP /* $Id$ */ -/// Every theme should contain a copy of this script. It lets us -/// set up variables and so on before we include the raw CSS files. -/// The output of this script should be a completely standard CSS file. +/// We use PHP so we can do value substitutions into the styles -/// THERE SHOULD BE NO NEED TO MODIFY THIS FILE!! USE CONFIG.PHP INSTEAD. + if (!isset($themename)) { + $themename = NULL; + } + $nomoodlecookie = true; + require_once("../../config.php"); + $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - $lifetime = 600; // Seconds to cache this stylesheet - $nomoodlecookie = true; // Cookies prevent caching, so don't use them - require_once("../../config.php"); // Load up the Moodle libraries - $themename = basename(dirname(__FILE__)); // Name of the folder we are in - $forceconfig = optional_param('forceconfig', '', PARAM_FILE); // Get config from this theme +/// From here on it's nearly a normal stylesheet. +/// First are some CSS definitions for normal tags, +/// then custom tags follow. +/// +/// New classes always get added to the end of the file. +/// +/// Note that a group of standard colours are all +/// defined in config.php in this directory. The +/// reason for this is because Moodle uses the same +/// colours to provide oldstyle formatting for +/// browsers without CSS. +/// +/// You can hardcode colours in this file if you +/// don't care about this. - style_sheet_setup(filemtime('styles.php'), $lifetime, $themename, $forceconfig); - ?> + + +body, td, th, li { + font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; +} + +th { + font-weight: bold; + background-color: <?PHP echo $THEME->cellheading?>; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +a:link { + text-decoration: none; + color: blue; +} + +a:visited { + text-decoration: none; + color: blue; +} + +a:hover { + text-decoration: underline; + color: red; +} + +form { + margin-bottom: 0; +} + + + + + +.highlight { + background-color: <?PHP echo $THEME->highlight?>; +} + +.headingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.navbar { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltable { +} + +.generaltableheader { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltablecell { +} + +.sideblock { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockheading { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.sideblockmain { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblocklinks { +} + +.sideblocklatestnews { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockrecentactivity { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.outlineheadingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.forumpost { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.forumpostpicture { +} + +.forumpostside { + -moz-border-radius-bottomleft: 20px; +} + +.forumpostmessage { + -moz-border-radius-bottomright: 20px; +} + + +.weeklyoutline { +} + +.weeklyoutlineside { +} + +.weeklyoutlinesidehighlight { +} + +.weeklyoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.weeklyoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklydatetext { + font-size: medium; + font-weight: bold; + color: <?PHP echo $THEME->cellheading2?>; +} + +.topicsoutline { +} + +.topicsoutlineside { +} + +.topicsoutlinesidehighlight { +} + +.topicsoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.topicsoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.siteinfo { +} + +.siteinfocontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; + padding: 10px; +} + + +.generalbox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.generalboxcontent { + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.noticebox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.noticeboxcontent { + text-align: center; +} + + +.feedbacktext { + color: <?PHP echo $THEME->cellheading2?>; +} + +a.dimmed:link { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:visited { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:hover { + text-decoration: underline; + color: red; +} + +.dimmed_text { + color: #AAAAAA; +} + +.forumpostheader { +} + +.forumpostheadertopic { +} + +.forumpostheaderpicture { +} + +.forumpostheadername { + font-size: small; +} + +.forumpostheaderreplies { + font-size: small; +} + +.forumpostheaderdate { + font-size: small; +} + +.logininfo { + font-size: x-small; +} + +.homelink { + font-size: x-small; +} + +.teacheronly { + color: #990000; +} + +.header { +} + +.headermain { + font-size: large; + font-weight: bold; +} + +.headermenu { +} + +.headerhome { +} + +.headerhomemain { + font-size: x-large; + font-weight: bold; +} + +.headerhomemenu { +} + +.categorybox { +} + +.categoryboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.categoryname { + font-size: larger; + font-weight: bold; +} + +.categorynumber { + font-size: larger; + font-weight: bold; +} + +.coursename { +} + +.coursebox { +} + +.courseboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.courseboxinfo { +} + +.courseboxsummary { +} + +a.autolink:link { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:visited { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:hover { + text-decoration: underline; + color: red; +} + +.userinfobox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; + margin-bottom: 5px; +} + +.userinfoboxside { + -moz-border-radius-bottomleft: 20px; +} + +.userinfoboxcontent { + -moz-border-radius-bottomright: 20px; +} + +.userinfoboxsummary { +} + +.userinfoboxlinkcontent { + -moz-border-radius-bottomright: 20px; +} + +.generaltab { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.generaltabselected { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.forumheaderlist { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.smallinfo { +} + +.smallinfohead { + color: #555555; +} + +.tabledivider { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + border-left: 0px; + border-right: 0px; + border-top: 0px; +} + +.headingblockcontent { +} + +TABLE.calendarmini { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-size: .7em; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmonth { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmini TBODY TD { + text-align: center; + vertical-align: center; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + -moz-border-radius: 4px; +} + +TABLE.calendarmonth TBODY TD { + width: 14%; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + vertical-align: top; +} + +.cal_event_global { + background-color: #2EBA0E; + border: 2px #2EBA0E solid !important; +} + +.cal_event_course { + background-color: #ff9966; + border: 2px #ff9966 solid !important; +} + +.cal_event_group { + background-color: #FBBB23; + border: 2px #FBBB23 solid !important; +} + +.cal_event_user { + background-color: #A1BECB; + border: 2px #A1BECB solid !important; +} + +.cal_duration_global { + border-top: 2px #2EBA0E solid !important; + border-bottom: 2px #2EBA0E solid !important; +} + +.cal_duration_course { + border-top: 2px #ff9966 solid !important; + border-bottom: 2px #ff9966 solid !important; +} + +.cal_duration_user { + border-top: 2px #A1BECB solid !important; + border-bottom: 2px #A1BECB solid !important; +} + +.cal_duration_group { + border-top: 2px #FBBB23 solid !important; + border-bottom: 2px #FBBB23 solid !important; +} + +.cal_weekend { + color: red; +} + +.cal_today { + border: 2px black solid !important; +} + +TABLE.calendarmonth TBODY TD TABLE { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmonth TBODY TD TABLE TD { + border: none; +} + +TABLE.calendarmonth TBODY TD DIV { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmini THEAD TD { + font-size: .95em; + text-align: center; + vertical-align: center; +} + +TABLE.calendarmonth THEAD TD { + text-align: center; + vertical-align: center; + padding-bottom: 3px; + border-bottom: 2px <?PHP echo $THEME->borders?> solid; +} + +.sideblockmain .cal_event { + font-size: 0.8em; + font-weight: bold; +} + +.sideblockmain .cal_event_date { + font-size: 0.6em; +} + +.mycalendar { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.mycalendar .cal_event { + font-weight: bold; +} +.mycalendar .cal_event_date { + font-size: 0.8em; +} + +.mycalendar TABLE.cal_filters { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_filters THEAD TD { + border-bottom: 2px <?PHP echo $THEME->borders?> solid; + margin: 0px; + padding: 2px; +} + + +.mycalendar .cal_event_table { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_event_table THEAD { + background-color: <?PHP echo $THEME->cellcontent?>; + text-align: center; + font-weight: bold; +} + +.sideblockmain HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.mycalendar HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.calendarreferer { + font-weight: bold; +} + +TD.cal_event_description { + width: 80%; + border-left: 2px <?php echo $THEME->borders?> solid; + vertical-align: top; + padding: 5px; +} + +.cal_popup_fg { + background-color: <?php echo $THEME->cellcontent?>; +} + +.cal_popup_bg { + border-top: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-left: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-right: 2px <?php echo $THEME->cellheading2 ?> solid; + border-bottom: 2px <?php echo $THEME->cellheading2 ?> solid; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + padding: 0px; + margin: 0px; +} + +.cal_popup_caption { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; +} + +.cal_popup_close { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; + margin-right: 5px; +} + +.sideblock .cal_controls { + text-align: center; + font-size: 9px; +} + +A IMG { + border: none; +} + +TABLE.formtable TD { + padding: 9px; +} + +.eventfull { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.eventfullheader { +} + +.eventfullpicture { + padding:8px; +} + +.eventfullside { + -moz-border-radius-bottomleft: 15px; +} + +.eventfullmessage { + -moz-border-radius-bottomright: 15px; +} + +#block_course_summary, #block_course_summary .sideblockmain { + -moz-border-radius: 20px; +} + +#block_course_summary .sideblockmain { + padding: 10px; +} + +.sitetopic { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 15px; +} + +.sitetopiccontent { + -moz-border-radius: 15px; +} + diff --git a/theme/standard/styles_color.css b/theme/standard/styles_color.css deleted file mode 100644 index eddc72d6b14..00000000000 --- a/theme/standard/styles_color.css +++ /dev/null @@ -1,716 +0,0 @@ -/******************************************************************* - styles_color.css - - This CSS file contains all color definitions like - background-color, font-color, border-color etc. - - Styles are organised into the following sections: - - core - header - footer - - admin - blocks - calendar - course - doc - login - message - tabs - user - - various modules - -*******************************************************************/ - -/*** - *** Core - ***/ - -a:link, -a:visited { - color:#0000FF; -} - -a.dimmed:link, -a.dimmed:visited { - color:#AAAAAA; -} - -a:hover { - color:#FF0000; -} - -a.autolink:link, -a.autolink:visited { - color:#000000; - background: #DDDDDD; -} - -a.autolink.glossary:hover { - cursor: help; -} - -body { - background-color:#FAFAFA; -} - -th.header, -td.header, -div.header { - background-color:#EEEEEE; -} - -.navbar { - background-color:#EEEEEE; - border-color:#DDDDDD; -} - -table.formtable tbody th { - background: none; -} - -.highlight { - background-color:#AAFFAA; -} - -.highlight2 { - color:#AA0000; /* highlight missing terms in forum search */ -} - -/* Alternate rows even */ -.r0 { -} - -/* Alternate rows odd */ -.r1 { -} - -/* notification messages (can be good or bad) */ -.notifyproblem { - color:#660000; -} -.notifysuccess { - color:#006600; -} - -.required { - background-color:#DDDDDD; -} - -.generalbox { - border-color:#DDDDDD; -} -.informationbox { - border-color:#DDDDDD; -} -.feedbackbox { - border-color: #888888; -} -.feedbackby { - background-color:#BBBBBB; -} - -.noticebox { - border-color:#DDDDDD; -} - -.errorbox { - color:#ffffff; - border-color:#660000; - background-color:#990000; -} - -.tabledivider { - border-color:#DDDDDD; -} - -.sitetopic { -} - -.sitetopiccontent { - border-color:#DDDDDD; - background-color:#FFFFFF; -} - -.dimmed_text { - color:#AAAAAA; -} - -.teacheronly { - color:#990000; -} - -.unread { - background: #FFD991; -} - -.censoredtext { - color:#000000; - background:#000000; -} - - -/* kept for backward compatibility with some non-standard modules - which use these classes for various things */ -.generaltab, .generaltabinactive { - background-color:#BBBBBB; -} -.generaltabselected { - background-color:#DDDDDD; -} -.generaltabinactive { - color:#CCCCCC; -} - - - -/*** - *** Header - ***/ - -/*** - *** Footer - ***/ - -.homelink a:link, -.homelink a:visited, -.homelink a:hover { - background-color: #dddddd; - color: #000; - text-decoration: none; -} -.homelink a:link, -.homelink a:visited { - border-top: 1px solid #cecece; - border-bottom: 2px solid #4a4a4a; - border-left: 1px solid #cecece; - border-right: 2px solid #4a4a4a; -} -.homelink a:hover { - border-bottom: 1px solid #cecece; - border-top: 2px solid #4a4a4a; - border-right: 1px solid #cecece; - border-left: 2px solid #4a4a4a; -} - - -/*** - *** Admin - ***/ - -.admin .generalboxcontent { - background-color:#EEEEEE; -} - -.admin .generalbox { - border-color:#BBBBBB; -} - -.admin .informationbox { - border-color:#BBBBBB; - background-color:#FFFFFF; -} - -body#admin-index .c0 { - background-color: #FAFAFA; -} - - - -/*** - *** Blocks - ***/ - -.sideblock { - border-color:#DDDDDD; -} - -.sideblock .header { -} - -.sideblock .content { - background-color:#FCFCFC; -} - -.sideblock .content hr { - border-top-color:#999999; -} - -.sideblock .list { -} -.sideblock .header .hide-show img.hide-show-image { - background: url('../../pix/t/switch_minus.gif') no-repeat bottom; -} - -.sideblock.hidden .header .hide-show img.hide-show-image { - background: url('../../pix/t/switch_plus.gif') no-repeat bottom; -} - - - -/*** - *** Calendar - ***/ - -#calendar .maincalendar, -#calendar .sidecalendar { - border-color: #DDDDDD; -} - -#calendar .maincalendar table.calendarmonth th { - border-color: #000000; -} - -table.minicalendar { - border-color:#DDDDDD; -} - -#calendar .maincalendar .eventlist .event { - border-color:#DDDDDD; -} - -#calendar .maincalendar .eventlist .event .topic, -#calendar .maincalendar .eventlist .event .picture, -#calendar .maincalendar .eventlist .event .side { - background-color:#EEEEEE; -} - -#calendar .maincalendar table.calendarmonth ul.events-underway { - color:#999999; -} - -#calendar .event_global, -.minicalendar .event_global, -.block_calendar_month .event_global { - border-color:#2EBA0E !important; - background-color:#2EBA0E; -} - -#calendar .event_course, -.minicalendar .event_course, -.block_calendar_month .event_course { - border-color:#FF9966 !important; - background-color:#FF9966; -} - -#calendar .event_group, -.minicalendar .event_group, -.block_calendar_month .event_group { - border-color:#FBBB23 !important; - background-color:#FBBB23; -} - -#calendar .event_user, -.minicalendar .event_user, -.block_calendar_month .event_user { - border-color:#A1BECB !important; - background-color:#A1BECB; -} - -#calendar .duration_global, -.minicalendar .duration_global { - border-top-color:#2EBA0E !important; - border-bottom-color:#2EBA0E !important; -} - -#calendar .duration_course, -.minicalendar .duration_course { - border-top-color:#FF9966 !important; - border-bottom-color:#FF9966 !important; -} - -#calendar .duration_group, -.minicalendar .duration_group { - border-top-color:#FBBB23 !important; - border-bottom-color:#FBBB23 !important; -} - -#calendar .duration_user, -.minicalendar .duration_user { - border-top-color:#A1BECB !important; - border-bottom-color:#A1BECB !important; -} - -#calendar .weekend, -.minicalendar .weekend { - color:#FF0000; -} - -#calendar .today, -.minicalendar .today { - border-color:#000000 !important; -} - -.cal_popup_fg { - background-color:#FFFFFF; -} - -.cal_popup_bg { - border-color:#000000; - background-color:#FFFFFF; -} - -#calendar .maincalendar .filters table, -#calendar .sidecalendar .filters table, -.block_calendar_month .filters table { - background-color: #EEEEEE; -} - - - -/*** - *** Course - ***/ - -/* course, entry-page, login */ -.headingblock { - border-color:#DDDDDD; -} - -/* course */ -.headingblock .outline { - border-color:#DDDDDD; -} - -#course-view .section td { - border-color:#DDDDDD; -} - -#course-view .section .content { -} - -#course-view .section .side { - background: #EEEEEE; -} - -#course-view .section .left { -} - -#course-view .section .right { -} - -#course-view .current .side{ - background: #FFD991; -} - -#course-view .topics { -} - -#course-view .weeks { -} - -#course-view .section .spacer { -} - -#course-view .section .weekdates { - color:#AAAAAA; -} - -.categoryboxcontent, -.courseboxcontent { - border-color:#DDDDDD; - background: #FFFFFF; -} -body#course-user .section { - border-color:#AAAAAA; -} - - - -/*** - *** Doc - ***/ - -/*** - *** Login - ***/ - -.loginbox .content { - border-color:#DDDDDD; -} - - -/*** - *** Message - ***/ - -table.message_search_results td { - border-color:#DDDDDD; -} - -.message .author { - color: #999999; -} - -.message .time { - color: #999999; -} - -.message .content { -} - - -/*** - *** Tabs - ***/ - -.tablink a:link, -.tablink a:visited { - color:#000066; -} - -.selected .tablink a:link, -.selected .tablink a:visited { - color:#000000; -} -.tabs .side { - border-color: #AAAAAA; -} -.tabrow td { - background:url(pix/tab/left.gif) top left no-repeat; -} -.tabrow td .tablink { - background:url(pix/tab/right.gif) top right no-repeat; -} -.tabrow td:hover { - background-image:url(pix/tab/left_hover.gif); -} -.tabrow td:hover .tablink { - background-image:url(pix/tab/right_hover.gif); -} -.tabrow .last span { - background:url(pix/tab/right_end.gif) top right no-repeat; -} -.tabrow .selected { - background:url(pix/tab/left_active.gif) top left no-repeat; -} -.tabrow .selected .tablink { - background:url(pix/tab/right_active.gif) top right no-repeat; -} -.tabrow td.selected:hover { - background-image:url(pix/tab/left_active_hover.gif); -} -.tabrow td.selected:hover .tablink { - background-image:url(pix/tab/right_active_hover.gif); -} - - -/*** - *** User - ***/ - -.userpicture { - background:#EEEEEE; -} - -.userinfobox { - border-color: #DDDDDD; - background-color: #F7F7F7; -} -.groupinfobox { - border-color: #DDDDDD; - background-color: #FCFCFC; -} - - -/*** - *** Modules: Assignment - ***/ - -.assignmentsubmission { -} - -.assignmentnew .assignmentfeedback{ - background-color:#DDDDDD; -} - -.assignmentold .assignmentfeedback{ - background-color:#BBBBBB; -} - -.assignmentheading { - background-color:#BBBBBB; -} - - -/*** - *** Modules: Chat - ***/ - -/*** - *** Modules: Choice - ***/ - -/*** - *** Modules: Forum - ***/ - -.forumheaderlist, -.forumpost { - border-color:#DDDDDD; -} - -.forumpost .content { - background: #FFFFFF; -} - -.forumpost .left { - background:#EEEEEE; -} - -.forumpost .topic { - border-bottom-color: #EEEEEE; -} - -.forumpost .starter { - background:#DDDDDD; -} - -.forumheaderlist .discussion .starter { - background:#DDDDDD; -} - -.forumheaderlist td { - border-color: #FFFFFF; -} - -.sideblock .post .head { - color:#555555; -} - -.forumthread .unread { - background: #FFD991; -} -#mod-forum-discuss .forumpost { - background: none; -} - -#mod-forum-discuss .forumpost.unread .content { - border-color: #FFD991; -} - -#mod-forum-discuss .forumthread .unread { -} - -#mod-forum-index .unread { -} - - -/*** - *** Modules: Glossary - ***/ - -.entryboxheader { - border-color: #BBBBBB; -} - -.entrybox { - border-color: #BBBBBB; -} - -.entry { -} - -.glossarypost { - border-color: #DDDDDD; -} - -.glossarypost .entryheader, -.glossarypost .entryapproval, -.glossarypost .picture, -.glossarypost .entryattachment, -.glossarypost .left { - background-color: #F0F0F0; -} - -.glossarycomment { - border-color: #DDDDDD; -} - -.glossarycomment .entryheader, -.glossarycomment .picture, -.glossarycomment .left { - background-color: #F0F0F0; - -} - -#mod-glossary-report .generalbox .teacher { - background: #F0F0F0; -} - -.categoryheader { - background-color: #dddddd; -} - -.glossaryformatheader { - background-color: #dddddd; -} - - -/*** - *** Modules: Journal - ***/ - -#mod-journal-view .feedbackbox .left, -#mod-journal-view .feedbackbox .entryheader { - background-color: #dddddd; -} - -/*** - *** Modules: Label - ***/ - -/*** - *** Modules: Lesson - ***/ - -/*** - *** Modules: Quiz - ***/ - -body#mod-quiz-report table#attempts td { - border-color: #dddddd; -} -body#mod-quiz-report table#attempts .r1 { - background-color: #eeeeee; -} - - -/*** - *** Modules: Resource - ***/ - -/*** - *** Modules: Scorm - ***/ - -/*** - *** Modules: Survey - ***/ - -#mod-survey-view .r0 { - background-color: #EEEEEE; -} -#mod-survey-view .r1 { - background-color: #DDDDDD; -} - - -/*** - *** Modules: Wiki - ***/ - -/*** - *** Modules: Workshop - ***/ - -.workshoppostpicture { - background-color:#FEE6B9; -} - -.workshopassessmentheading { - background-color:#DDDDDD; -} - diff --git a/theme/standard/styles_fonts.css b/theme/standard/styles_fonts.css deleted file mode 100644 index 11660abed69..00000000000 --- a/theme/standard/styles_fonts.css +++ /dev/null @@ -1,506 +0,0 @@ -/******************************************************************* - styles_color.css - - This CSS file contains all font definitions like family, size, - weight, text-align, letter-spacing etc. - - Styles are organised into the following sections: - core - header - footer - - admin - blocks - calendar - course - doc - login - message - tabs - user - - various modules - -*******************************************************************/ - - -/*** - *** Core - ***/ - -.clearer { - font-size:1px; -} - -body, td, th, li { - font-family:"Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - font-size:0.95em; -} - -th { - font-weight: bold; -} - -a:link, -a:visited { - text-decoration:none; -} - -a:hover { - text-decoration: underline; -} - -h1.main, -h2.main, -h3.main, -h4.main, -h5.main, -h6.main { - font-weight:bold; -} - -h1 { - font-size:1.7em; -} - -h2 { - font-size:1.4em; -} -h3 { - font-size:1.1em; -} -h4 { - font-size:1.0em; -} - -.bold { - font-weight:bold; -} - -.warning { - font-weight: bold; - font-style: italic; -} - -.errorbox .title { - font-weight: bold; - font-size: 1.2em; - text-align: center; -} - -.pagingbar .title { - font-weight: bold; -} -.pagingbar .thispage { - font-weight: bold; -} - -.categorybox .category, -.categorybox .category { - font-size:1.2em; - font-weight:bold; -} - -.helplink { - font-size:0.8em; -} - -.headingblock { - font-weight: bold; -} - -.headingblock .link { - font-size: 0.9em; -} - -.files .file { - font-size: 0.9em; -} - -.files .folder { - font-size: 0.9em; -} - -.files .folder .size { - font-weight: bold; -} - - -/*** - *** Header - ***/ - -.headermain { - font-weight:bold; -} - -#header-home .headermain { - font-size:1.5em; -} - -#header .headermain { - font-size:1.3em; -} - -.breadcrumb { - font-size:0.9em; - font-weight:bold; -} - -.logininfo, -#header-home .headermenu font { - font-size:x-small; -} - - -/*** - *** Footer - ***/ - -.homelink { -} - - -.performanceinfo { - font-size: 0.6em; -} - - -/*** - *** Admin - ***/ - -table.formtable tbody th { - font-weight: normal; - text-align: right; -} - - -/*** - *** Blocks - ***/ - -.sideblock .content h3, -.sideblock .content h2 { - font-size:1.0em; -} -.sideblock .header .commands { - font-size: 0.75em; -} - -.sideblock .footer { - font-size:0.75em; -} - -.sideblock .head, -.sideblock .info { - font-size: 0.85em; -} - -.sideblock .date { - font-style: italic; -} - - - -/*** - *** Calendar - ***/ - -#calendar .maincalendar .eventlist .event .referer { - font-weight:bold; -} - -#calendar .maincalendar .eventlist .event .course { - font-size:0.8em; -} - -#calendar .maincalendar .eventlist .event .description .commands { - text-align: right; -} - -#calendar .maincalendar table.calendarmonth td { - font-size:0.8em; -} - -#calendar div.header -{ - font-weight:bold; -} - -#calendar .sidecalendar .filters { - font-size:0.75em; -} - -#calendar .maincalendar .controls { - font-size:1.2em; -} - -#calendar .maincalendar .day { - font-weight: bold; -} - -table.minicalendar { - font-size:0.85em; -} - -.cal_popup_caption { - font-family:sans-serif; - font-size:0.8em; - font-weight:bold; -} - -.cal_popup_close { - font-family:sans-serif; - font-size:0.8em; - font-weight:bold; -} -#calendar .maincalendar .calendar-controls .current { - font-weight: bold; -} - - -/*** - *** Course - ***/ - -.activitydate, .activityhead { - font-size:0.7em; -} - -.weeklydatetext { - font-size:0.9em; - font-weight:bold; -} - -.coursebox .info { - font-size:1em; -} - -.coursebox .teachers, -.coursebox .cost { - font-size:0.8em; -} - -.coursebox .summary { - font-size:0.7em; -} - - -#course-view .section .left { - font-weight:bold; -} - - - -/*** - *** Doc - ***/ -body#doc-contents h1 { - font-size: 1em; -} -body#doc-contents ul { - font-size: 0.8em; -} - - - -/*** - *** Login - ***/ - - -/*** - *** Message - ***/ - -.message_summary_link { - font-size:small; -} - -.message_link { - font-size:x-small; -} - -.message_form { - font-size:0.78em; -} - -.message_heading { - font-size:medium; - font-weight:bold; -} - -.message_date, -.message_contact, -.message_summary { - font-size:small; -} - -.message_small_note, -.message_pix { - font-size:x-small; -} - -.message .author { - font-weight: bold; -} - -.message .time { - font-style: italic; -} - -.message .content { -} - -#message-user .commands span { - font-size:0.7em; - white-space:nowrap; -} - -#message-user .name { - font-weight: bold; - font-size:1.1em; -} - - -/*** - *** Tabs - ***/ -.tablink a:hover { - text-decoration: none; -} - - -/*** - *** User - ***/ - -.userinfobox .username { - font-weight: bold; -} - -.userinfobox .links { - font-size: 0.7em; -} - - -/*** - *** Modules: Assignment - ***/ - -/*** - *** Modules: Chat - ***/ - -/*** - *** Modules: Choice - ***/ - -/*** - *** Modules: Forum - ***/ - -.forumnodiscuss{ - font-weight:bold; -} -.forumpost .topic .subject { - font-weight: bold; -} -.forumpost .topic .author { - font-size: 0.8em; -} -.forumheaderlist .discussion .lastpost { - font-size: 0.7em; -} -body#mod-forum-search .introcontent { - font-weight:bold; -} - - - -/*** - *** Modules: Glossary - ***/ - -.glossarypost .commands { - font-size: 0.7em; -} -.glossarypost .entryheader .author { - font-size: 0.7em; - font-style: italic; -} -.concept { - font-weight: bold; -} -.glossarycomment .time { - font-size: 0.7em; - font-style: italic; -} -.entrylowersection .aliases { - font-size: 0.8em; -} -.entrylowersection .icons, -.entrylowersection .ratings { - font-size: 0.8em; -} - - - -/*** - *** Modules: Journal - ***/ -#mod-journal-view .lastedit, -#mod-journal-view .editend { - font-size: 0.7em; -} -#mod-journal-view .author { - font-size: 1em; - font-weight: bold; -} -#mod-journal-view .time { - font-size: 0.7em; - font-style: italic; -} -#mod-journal-view .grade { - font-weight: bold; - font-style: italic; -} - -/*** - *** Modules: Label - ***/ - -/*** - *** Modules: Lesson - ***/ - -/*** - *** Modules: Quiz - ***/ - -.editorhelptext { - font-size:x-small; -} - - -/*** - *** Modules: Resource - ***/ - -/*** - *** Modules: Scorm - ***/ - -/*** - *** Modules: Survey - ***/ - -/*** - *** Modules: Wiki - ***/ - -/*** - *** Modules: Workshop - ***/ - diff --git a/theme/standard/styles_layout.css b/theme/standard/styles_layout.css deleted file mode 100644 index 51177db8888..00000000000 --- a/theme/standard/styles_layout.css +++ /dev/null @@ -1,1254 +0,0 @@ -/******************************************************************* - styles_layout.css - - This CSS file contains all layout definitions like positioning, - floats, margins, paddding, borders etc. - - Styles are organised into the following sections: - core - header - footer - - admin - blocks - calendar - course - doc - login - message - tabs - user - - various modules - -*******************************************************************/ - - -/*** - *** Core - ***/ - -h1.main, -h2.main, -h3.main, -h4.main, -h5.main, -h6.main { - text-align: center; -} - -#layout-table { - width:100%; - border-collapse:separate; - margin-top: 8px; -} - -#layout-table #left-column, -#layout-table #middle-column, -#layout-table #right-column -{ - vertical-align:top; -} - -#layout-table #middle-column { - padding-left:12px; - padding-right:12px; -} - -.clearer { - clear:both; - margin:0px; - padding:0px; - height:1px; - border:none; - background:transparent; -} - -.continuebutton { - text-align: center; -} - -form { - margin-bottom:0px; -} - -table { - border-spacing: 0px; - border-collapse: collapse; -} - -a img { - border:none; -} -.notifyproblem { - text-align: center; - padding: 10px; -} - -.notifysuccess { - text-align:center; - padding: 10px; -} - -.generalbox { - border-width:1px; - border-style:solid; -} - -.generalbox#intro { - text-align:center; -} - -.noticebox { - border-width:1px; - border-style:solid; -} -.errorbox { - border-width:1px; - border-style:solid; - margin: 1em 15%; - width: 70%; -} -.errorbox .title { - padding: 5px; -} -.informationbox { - border-width:1px; - border-style:solid; -} -.feedbackbox { - border-width:1px; - border-style:solid; -} -.feedbackby { -} -.feedback { -} -.initialbar { - text-align: center; -} - -#help .indent { - margin-left:3em; -} - -.tabledivider { - border-width:1px; - border-style:solid; - border-left:0px; - border-right:0px; - border-top:0px; -} - -.sitetopic { - margin-bottom:20px; -} - -.sitetopiccontent { - border-width:1px; - border-style:solid; -} - -.pagingbar { - text-align:center; -} -.pagingbar a { - padding-left: 10px; -} -.pagingbar .thispage { - padding-left: 10px; -} - -table.formtable { - margin: auto; -} - -table.formtable tbody th { - vertical-align: top; -} - -table.formtable tbody td, -table.formtable tbody th -{ - padding: 5px; -} - -.paging { - text-align: center; - margin: 10px 0px 10px 0px; -} - -.unread { - padding-right:2px; -} - -.cell { - vertical-align: top; -} - - -/*** - *** Header - ***/ - -#header-home { -} - -#header { -} - -.headermain { - float:left; -} - -.headermenu { - float:right; - text-align:right; -} - -.navbar { - width:100%; - padding:3px 0.5em; - height:1.3em; - border-width:1px; - border-style:solid; -} - -.navbar .breadcrumb { - float:left; - margin:0.2em 0em; -} - -.navbar .navbutton, -.navbar .menu { - float:right; -} - -#footer .navbar { - margin-top: 4em; -} - -.reportlink { - text-align:right; -} - - -/*** - *** Footer - ***/ - -#footer { - text-align:center; -} - -.homelink { - margin: 1em 0; -} - -.homelink a { - padding-left:1em; - padding-right:1em; -} - -.performanceinfo { - margin: 2em; -} - -.performanceinfo span { - display: block; -} - - - -/*** - *** Admin - ***/ - -body#admin-index .c0 { - vertical-align: top; -} - -body#admin-modules table.generaltable td.cell, -body#admin-modules .generaltablecell { - padding-top: 2px; - padding-bottom: 2px; -} - -body#admin-blocks table.generaltable td.cell, -body#admin-blocks .generaltablecell { - padding-top: 1px; - padding-bottom: 1px; -} - -body#admin-config .confighelp { - display: block; - padding-bottom: 20px; -} - - -/*** - *** Blocks - ***/ - -.sideblock .content h3, -.sideblock .content h2 { - text-align: left; -} - -.sideblock { - width: 100%; - margin-bottom:1em; - border-collapse:separate; - border-width:1px; - border-style:solid; -} - -.sideblock .header { - text-align: left; - padding:4px; -} - -.sideblock .header .hide-show { - float:right; -} - -.sideblock .header .hide-show img.hide-show-image { - height:11px; - width:11px; - margin-top:0.25em; -} - -.sideblock .header .commands { - float: right; - margin-top: 0.3em; -} - -.sideblock .header .title { - float: left; -} - -.sideblock .header .commands a { - margin: 0px 2px; -} - -.sideblock .content { - padding:4px; -} - -.sideblock .content hr { - height:1px; - margin-top:4px; - margin-bottom:4px; - border:none; - border-top:1px solid; -} -.sideblock.hidden .content { - display: none; -} - -.sideblock .list { - width: 100%; -} - -.sideblock .list .c0{ - padding: 2px; -} - -.sideblock .footer { - margin-top:4px; - text-align:center; -} -.sideblock .header .icon.hide, -.sideblock .header .icon.edit { - margin-right: 6px; -} - -.sideblock .head { - margin-top: 5px; -} - - - - -/*** - *** Calendar - ***/ - -#calendar { - width: 100%; - border-spacing: 5px; - border-collapse: separate; -} - -#calendar .maincalendar, -#calendar .sidecalendar -{ - vertical-align: top; - border: 1px solid; -} - -#calendar .sidecalendar { - width: 25%; -} - -#calendar .maincalendar table.calendarmonth { - border-collapse: separate; - margin: 0px auto; - width: 98%; -} - -#calendar .maincalendar table.calendarmonth th { - padding:10px; - border-bottom:2px solid; -} - -#calendar .maincalendar table.calendarmonth td { - height: 5em; - padding-left: 4px; - padding-top: 4px; - line-height:1.2em; -} - -#calendar .maincalendar table.calendarmonth td, -table.minicalendar td, -table.minicalendar th { - width:14%; - vertical-align:top; -} -table.minicalendar td { - text-align: center; -} -#calendar .maincalendar table.calendarmonth td table td { - height: auto; -} - -#calendar div.header -{ - padding: 5px; -} - -#calendar .maincalendar .buttons { - float: right; -} - -#calendar .maincalendar .filters table, -#calendar .sidecalendar .filters table -{ - border-collapse:separate; - border-spacing: 2px; - padding: 2px; - width: 100%; -} - -#calendar .maincalendar .filters { - padding: 0px 10px; -} - -#calendar .sidecalendar .filters { - padding: 5px; -} - -#calendar .maincalendar .controls { - clear:both; - padding:10px; -} - -#calendar .maincalendar table.calendarmonth ul.events-new, -#calendar .maincalendar table.calendarmonth ul.events-underway -{ - padding:0px; - margin:0px; - list-style-type:none; -} - -#calendar .maincalendar table.calendarmonth ul li { - margin-top: 4px; -} - -table.minicalendar { - width: 100%; - margin:10px auto; - padding:2px; - border-width:1px; - border-style:solid; - border-collapse:separate; - border-spacing:1px !important; -} - -table.minicalendar th { - padding: 0px 2px; -} - -#calendar .maincalendar .eventlist { - padding: 10px; -} - -#calendar .maincalendar .eventlist .topic { - padding: 5px; - border-style:solid; - border-width: 0px; - border-bottom-color: #EEEEEE; - border-bottom-width: 1px; -} - -#calendar .maincalendar .eventlist .event { - width:100%; - margin-bottom:10px; - border-spacing:0px; - border-collapse:separate; - border-width:1px; - border-style:solid; -} - -#calendar .maincalendar .eventlist .event .name { - float:left; -} - -#calendar .maincalendar .eventlist .event .course { - float:left; - clear:left; -} - -#calendar .maincalendar .eventlist .event .date { - float:right; -} - -#calendar .maincalendar .eventlist .event .description .commands { - width:100%; -} - -#calendar .maincalendar .eventlist .event .description { - padding:5px; -} - -#calendar .maincalendar .eventlist .event .picture { - padding:8px; -} - -#calendar .maincalendar .eventlist .event .side { - width:32px; -} - -#calendar #selecteventtype table { - margin:auto; -} - -#calendar .event_global, -#calendar .event_course, -#calendar .event_group, -#calendar .event_user, -.minicalendar .event_global, -.minicalendar .event_course, -.minicalendar .event_group, -.minicalendar .event_user { - border:2px solid !important; -} - -#calendar .duration_global, -#calendar .duration_course, -#calendar .duration_group, -#calendar .duration_user, -.minicalendar .duration_global, -.minicalendar .duration_course, -.minicalendar .duration_group, -.minicalendar .duration_user -{ - border-top:2px solid !important; - border-bottom:2px solid !important; -} - -#calendar .today, -.minicalendar .today { - border:2px solid !important; -} - -.cal_popup_bg { - padding:0px; - margin:0px; - border:1px solid; -} - -.cal_popup_close { - margin-right:5px; -} - -.cal_popup_caption { - border-width:0px 0px 1px 0px; - border-style:solid; - padding-bottom:2px; -} - -table.calendar-controls { - width: 100%; -} - -table.calendar-controls .previous, -table.calendar-controls .next -{ - width: 12%; -} -table.calendar-controls .previous { - text-align: left; -} -table.calendar-controls .current { - text-align: center; -} -table.calendar-controls .next { - text-align: right; -} - -#calendar .maincalendar .calendar-controls .previous, -#calendar .maincalendar .calendar-controls .next -{ - width: 30%; -} - - -/*** - *** Course - ***/ -.activitydate, .activityhead { - text-align:center; -} - -#course-view .section td { - vertical-align:top; -} - -#course-view .section .content { - padding:5px; - border-style:solid; - border-width:1px; - border-left:0px; - border-right:0px; -} - -#course-view .section .side { - padding:5px; - border-style:solid; - border-width:1px; -} - -#course-view .section .left { - border-right:0px; - text-align:center; - width: 1.5em; -} - -#course-view .section .right { - border-left:0px; - text-align:center; - width: 1.5em; -} - -#course-view .current .side { -} - -#course-view .topics { - margin-top: 9px; -} - -#course-view .weeks { - margin-top: 9px; -} - -#course-view .section .spacer { - height:0.5em; -} - -#course-view .section .weekdates { -} - -.section .activity img.activityicon { - vertical-align:middle; - height:16px; - width:16px; -} - -.section img.movetarget { - height:16px; - width:80px; -} - -body#course-view .unread { - margin-left: 3em; -} - -body#course-enrol .generalbox { - margin-top: 20px; -} -body#course-enrol .coursebox { - margin-top: 20px; -} - -body#course-user .graph { - text-align: center; -} - -body#course-user .section, -body#course-user .content { - margin-left: 30px; - margin-right: 30px; -} - -body#course-user .section { - border-width:1px; - border-style:solid; - padding:10px; - margin-bottom: 20px; -} - -body#course-user .section h2 { - margin-top: 0px; -} - - -.headingblock { - border-width:1px; - border-style:solid; - padding:5px; -} - -.headingblock .link { - text-align:right; -} - -body#site-index .headingblock { - margin-bottom: 8px; -} - -.coursebox { - margin-bottom: 8px; -} - -.categoryboxcontent, -.courseboxcontent { - border-width:1px; - border-style:solid; -} - - - -/*** - *** Doc - ***/ - -body#doc-contents h1 { - margin: 1em 0px 0px 0px; -} - -body#doc-contents ul { - list-style-type: none; - margin: 0px; - padding: 0px; - width: 90%; -} - - -/*** - *** Login - ***/ - -.loginbox .content { - border-width:1px; - border-style:solid; - padding:15px; -} - - -/*** - *** Message - ***/ - -.message_link { - vertical-align:middle; -} - -.message_search_results { - border-collapse:collapse; - border-spacing:0px; -} - -table.message_search_results td { - padding:5px; - border-width:1px; - border-style:solid; -} -.message_summary_link { - text-align:right; -} -.message_heading { - text-align:center; -} - -#message-user .commands span { - margin-left:10px; - margin-right:10px; -} - - -/*** - *** Tabs - ***/ - -.tabs { - width: auto; - margin-bottom: 15px; -} -.tabs .side { - border-style: solid; - border-width: 0px 0px 1px 0px; - width: 50%; -} - -.tabrow { - border-collapse:collapse; - width:100%; - margin:0; -} -.tabrow td { - height:34px; - padding:0 0 0 14px; -} -.tabrow th { - display:none; -} -.tabrow td .tablink { - display:block; - height:34px; - line-height:38px; - padding:0 14px 0 0; - text-align:center; - white-space:nowrap; - text-decoration:none; -} -.tabrow .last span { - display:block; - padding:0px 1px 0px 0px; -} - -.tabrow .selected .tablink { - line-height:38px; -} - - -/*** - *** User - ***/ - -.userinfobox { - margin-bottom:5px; - border-width: 1px; - border-style: solid; - border-collapse: separate; -} - -.userinfobox .left { - padding: 10px; - width: 100px; - vertical-align: top; -} - -.userinfobox .content { - padding: 10px; - vertical-align: top; -} - -.userinfobox .links { - width: 100px; - padding: 5px; - vertical-align: bottom; -} - -.userinfobox .list td { - padding: 3px; -} - -.userinfobox .username { - padding-bottom: 20px; -} - - -table.userinfobox { - width: 80%; - margin-left: 10%; - margin-right: 10%; -} - -table.groupinfobox { - width: 60%; - margin-left: 20%; - margin-right: 20%; - border-width:1px; - border-style:solid; - margin-bottom: 20px; -} - -.groupinfobox .left { - padding: 10px; - width: 100px; - vertical-align: top; -} -body#user-index #longtimenosee { - text-align:center; -} - - -/*** - *** Modules: Assignment - ***/ - -/*** - *** Modules: Chat - ***/ - -/*** - *** Modules: Choice - ***/ - -/*** - *** Modules: Forum - ***/ - -.forumheaderlist, -.forumpost { - border-width:1px; - border-style:solid; - border-collapse:separate; -} - -.forumpost { - margin-top: 15px; -} - -.forumpost .topic { - padding: 4px; - border-style:solid; - border-width: 0px; - border-bottom-width: 1px; -} - -.forumpost .commands { - padding-top: 0.5em; - text-align:right; -} - -.forumpost .ratings { - padding-top: 1em; - text-align:right; -} - -.forumpost .content { - padding: 4px; -} - -.forumpost .footer { - padding-top: 0.5em; - text-align:right; -} - -.forumpost .link { - padding-top: 0.5em; - text-align:right; -} - -.forumpost .left { - width: 35px; - padding: 4px; - text-align: center; - vertical-align: top; -} - -.mod-forum .indent { - margin-left: 30px; -} - -body#user-view .forumpost, -.course .forumpost { - width: 100%; -} - -body#mod-forum-search .c0 { - text-align: right; -} - -body#mod-forum-search .introcontent { - padding: 15px; -} - -.forumolddiscuss { - text-align: right; -} - -.forumheaderlist { - width: 100%; -} - -.forumheaderlist td { - border-width:1px 0px 0px 1px; - border-style:solid; -} - -.forumheaderlist .replies { - text-align: center; -} - -.forumheaderlist .picture { - width: 35px; -} - -.forumheaderlist .discussion .starter { - vertical-align: middle; -} - -.forumheaderlist .lastpost { - white-space: nowrap; - text-align: right; -} - -.forumheaderlist .discussion .author { - white-space: nowrap; -} -.forumolddiscuss { - text-align:right; -} -.forumaddnew, -.forumnodiscuss, -.noticeboxcontent { - text-align:center; -} -#mod-forum-view .unread { - padding-left: 3px; - padding-right: 3px; -} -#mod-forum-discuss .forumpost.unread .content { - border-style: solid; - border-width: 2px; -} - - -/*** - *** Modules: Glossary - ***/ - -.glossarypost .commands { - width: 200px; - white-space: nowrap; -} - -.entryboxheader { - border-width: 1px 1px 0px 1px; - border-style: solid; -} - -.entrybox { - border-width: 0px 1px 1px 1px; - border-style: solid; -} - -.glossarypost { - width: 95%; - border-width:1px; - border-style:solid; - border-collapse:separate; - margin-bottom: 5px; - text-align: left; -} - - -.entrylist { - border-width:0px; -} - -.entrylowersection { - padding-top: 10px; -} -.entrylowersection table{ - width: 100%; -} -.entrylowersection .aliases { - text-align:center; -} -.entrylowersection .icons, -.entrylowersection .ratings { - text-align:right; - padding-right: 5px; -} -.entrylowersection .ratings { - padding-bottom: 2px; -} -.categoryheader { - width: 95%; -} -.glossaryformatheader { - width: 90%; -} - -.glossarypost .entry { - padding: 3px; -} - -.glossarypost .picture { - width: 35px; -} - -.glossarycomment { - border-width:1px; - border-style:solid; - border-collapse:separate; - margin-bottom: 5px; - text-align: left; -} - - -.glossarycomment .entry { - padding: 3px; -} - -.glossarycomment .picture { - width: 35px; -} - -.glossarycomment .icons { - text-align: right; -} - -.glossarydisplay { - width: 70%; -} - -.glossarydisplay .tabs { - width: 100%; -} - -.glossarydisplay .separator { - width: 4px; -} - -.glossarydisplay .tabs .selected, -.glossarydisplay .tabs .inactive, -.glossarydisplay .tabs .general { -} - -.glossarypopup { - width: 95%; -} - -.glossaryapproval { - width: 100%; -} - -.mod-glossary .tabs { - margin-bottom: 0px; -} -.mod-glossary .tabs .side { - border-style: none; - border-width: 0px; - width: auto; -} - - -/*** - *** Modules: Journal - ***/ -#mod-journal-view .lastedit, -#mod-journal-view .editend { - margin: 5px; - text-align: center; -} -#mod-journal-view .feedbackbox { - width: 75%; - border-collapse: separate; -} -#mod-journal-view .entrycontent { - padding: 3px; -} -#mod-journal-view .picture { - width: 35px; -} -#mod-journal-view .grade { - text-align: right; -} -#mod-journal-view .info { - margin-bottom: 5px; - text-align: right; -} - - -/*** - *** Modules: Label - ***/ - -/*** - *** Modules: Lesson - ***/ - -/*** - *** Modules: Quiz - ***/ - -.feedbacktext { - display:block; -} - -body#mod-quiz-report table#attempts, -body#mod-quiz-report table#commands -{ - width: 80%; - margin: auto; -} -body#mod-quiz-report table#attempts { - margin: 20px auto; -} -body#mod-quiz-report table#attempts .header, -body#mod-quiz-report table#attempts .cell -{ - padding: 4px; -} -body#mod-quiz-report table#attempts .header .commands { - display: inline; -} -body#mod-quiz-report table#attempts .picture { - width: 40px; -} -body#mod-quiz-report table#attempts td { - border-left-width: 1px; - border-right-width: 1px; - border-left-style: solid; - border-right-style: solid; -} -.feedbacktext { - text-align:right; -} -body#mod-quiz-report table#attempts .header { - text-align: left; -} -body#mod-quiz-report table#attempts .picture { - text-align: center !important; -} -body#mod-quiz-report .controls { - text-align: center; -} - - - -/*** - *** Modules: Resource - ***/ - -/*** - *** Modules: Scorm - ***/ - -/*** - *** Modules: Survey - ***/ - -/*** - *** Modules: Wiki - ***/ - -/*** - *** Modules: Workshop - ***/ - diff --git a/theme/standard/styles_moz.css b/theme/standard/styles_moz.css deleted file mode 100644 index 2a23103bf0c..00000000000 --- a/theme/standard/styles_moz.css +++ /dev/null @@ -1,331 +0,0 @@ -/******************************************************************* - styles_moz.css - - This CSS file uses the non-standard Mozilla CSS extensions - to add round corners to the current theme. - - Styles are organised into the following sections: - core - header - footer - - admin - blocks - calendar - course - doc - login - message - tabs - user - - various modules - -*******************************************************************/ - - - -/*** - *** Core - ***/ - -.headingblock { - -moz-border-radius:3px; -} - -.notifyproblem { - -moz-border-radius:10px; -} - -.notifysuccess { - -moz-border-radius:10px; -} -.generalbox { - -moz-border-radius-topleft:3px; - -moz-border-radius-topright:3px; - -moz-border-radius-bottomleft:15px; - -moz-border-radius-bottomright:15px; -} - -.generalboxcontent { - -moz-border-radius-topleft:3px; - -moz-border-radius-topright:3px; - -moz-border-radius-bottomleft:15px; - -moz-border-radius-bottomright:15px; -} - -.noticebox { - -moz-border-radius:5px; -} - -.informationbox { - -moz-border-radius-topleft:3px; - -moz-border-radius-topright:3px; - -moz-border-radius-bottomleft:15px; - -moz-border-radius-bottomright:15px; -} - -.informationboxcontent { - -moz-border-radius-topleft:3px; - -moz-border-radius-topright:3px; - -moz-border-radius-bottomleft:15px; - -moz-border-radius-bottomright:15px; -} - -.sitetopiccontent { - -moz-border-radius:15px; -} - -.headingblock { - -moz-border-radius:3px; -} - -.categorybox, .categoryboxcontent, -.coursebox, .courseboxcontent { - -moz-border-radius:20px; -} - - - - -/* kept for backward compatibility with some non-standard modules - which use these classes for various things */ -.generaltab, .generaltabinactive{ - -moz-border-radius-topleft:15px; - -moz-border-radius-topright:15px; -} - -.generaltabselected { - -moz-border-radius-topleft:15px; - -moz-border-radius-topright:15px; -} - - -/*** - *** Header - ***/ - -/*** - *** Footer - ***/ - -/*** - *** Admin - ***/ - -/*** - *** Blocks - ***/ -.sideblock { - -moz-border-radius-bottomleft:20px; - -moz-border-radius-bottomright:20px; -} - -.sideblock.hidden { - -moz-border-radius: 0px; -} - -.sideblock { - -moz-border-radius-bottomleft:20px; - -moz-border-radius-bottomright:20px; -} - -.sideblock .content { - -moz-border-radius-bottomleft:20px; - -moz-border-radius-bottomright:20px; -} - - -.block_course_summary, .block_course_summary .content { - -moz-border-radius:20px; -} - - - -/*** - *** Calendar - ***/ - -#calendar .eventlist .event { - -moz-border-radius-bottomleft:15px; - -moz-border-radius-bottomright:15px; -} - -#calendar .eventlist .event .side { - -moz-border-radius-bottomleft:15px; -} - -#calendar .eventlist .event .description { - -moz-border-radius-bottomright:15px; -} - -#calendar .maincalendar, -#calendar .sidecalendar -{ - -moz-border-radius-bottomright:20px; - -moz-border-radius-bottomleft:20px; -} - -#calendar .maincalendar .filters table, -#calendar .sidecalendar .filters table, -.sideblock.block_calendar_month .filters table -{ - -moz-border-radius:4px; -} - -table.minicalendar { - -moz-border-radius:10px; -} - -table.minicalendar td { - -moz-border-radius:4px; -} - -/*** - *** Course - ***/ -body#course-user .section { - -moz-border-radius:20px; -} - - -/*** - *** Doc - ***/ - -/*** - *** Login - ***/ -.loginbox { - -moz-border-radius-bottomleft:20px; - -moz-border-radius-bottomright:20px; -} - -.loginbox .content.left { - -moz-border-radius-bottomleft:20px; -} -.loginbox .content.right { - -moz-border-radius-bottomright:20px; -} - -/*** - *** Message - ***/ - -/*** - *** Tabs - ***/ - -/*** - *** User - ***/ -.userinfobox { - -moz-border-radius-bottomleft:20px; - -moz-border-radius-bottomright:20px; -} - -.groupinfobox { - -moz-border-radius-bottomleft:20px; - -moz-border-radius-bottomright:20px; -} -#user-view .left { - -moz-border-radius-bottomleft:20px; -} - -/*** - *** Modules: Assignment - ***/ - -/*** - *** Modules: Chat - ***/ - -/*** - *** Modules: Choice - ***/ - -/*** - *** Modules: Forum - ***/ -.forumpost { - -moz-border-radius-bottomleft:20px; - -moz-border-radius-bottomright:20px; -} - -.forumpost .side { - -moz-border-radius-bottomleft:20px; -} - -.forumpost .content { - -moz-border-radius-bottomright:20px; -} - -.forumpost .message { - -moz-border-radius-bottomright:20px; -} - - -/*** - *** Modules: Glossary - ***/ -.categoryheader { - -moz-border-radius-topleft:15px; - -moz-border-radius-topright:15px; -} - -.glossaryformatheader { - -moz-border-radius-topleft:15px; - -moz-border-radius-topright:15px; -} - -.entryboxheader { - -moz-border-radius-topleft:10px; - -moz-border-radius-topright:10px; -} - -.entrybox { - -moz-border-radius-bottomleft:10px; - -moz-border-radius-bottomright:10px; -} - -.glossarypost { - -moz-border-radius-bottomleft:15px; - -moz-border-radius-bottomright:15px; -} - -.glossarypost .side { - -moz-border-radius-bottomleft:15px; -} - -.encyclopedia .entrylowersection { - -moz-border-radius-bottomright:15px; -} -.glossarycomment { - -moz-border-radius-bottomleft:20px; - -moz-border-radius-bottomright:20px; -} - -.glossarycomment .side { - -moz-border-radius-bottomleft:20px; -} - -.glossarycomment .entry { - -moz-border-radius-bottomright:20px; -} - - -/*** - *** Modules: Journal - ***/ - -#mod-journal-view .feedbackbox { - -moz-border-radius-bottomleft:15px; - -moz-border-radius-bottomright:15px; -} -#mod-journal-view .feedbackbox .side { - -moz-border-radius-bottomleft:15px; -} -#mod-journal-view .feedbackbox .entrycontent { - -moz-border-radius-bottomright:15px; -} - diff --git a/theme/standardblue/config.php b/theme/standardblue/config.php index 68f9af7b47a..d8747d52076 100644 --- a/theme/standardblue/config.php +++ b/theme/standardblue/config.php @@ -1,124 +1,17 @@ <?PHP // $Id$ -//////////////////////////////////////////////////////////////////////////////// -/// This file contains a few configuration variables that control -/// how Moodle uses this theme. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->sheets = array('gradients'); - -/// This variable is an array containing the names of all the -/// stylesheet files you want included in this theme, and in what order -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->standardsheets = array('styles_layout','styles_fonts','styles_color','styles_moz'); - -/// This variable can be set to an array containing -/// filenames from the *STANDARD* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parent = ''; - -/// This variable can be set to the name of a parent theme -/// which you want to have included before the current theme. -/// This can make it easy to make modifications to another -/// theme without having to actually change the files -/// If this variable is empty or false then a parent theme -/// is not used. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parentsheets = false; - -/// This variable can be set to an array containing -/// filenames from a chosen *PARENT* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->parentsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->modsheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Activity modules and -/// include them. This allows modules to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->blocksheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Block modules and -/// include them. This allows Blocks to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->langsheets = false; - -/// By setting this to true, then this theme will search for -/// a file named "styles.php" inside the current language -/// directory. This allows different languages to provide -/// different styles. - -$THEME->navmenuwidth = 50; - -/// You can use this to control the cutoff point for strings -/// in the navmenus (list of activities in popup menu etc) -/// Default is 50 characters wide. - - -$THEME->makenavmenulist = false; - -/// By setting this to true, then you will have access to a -/// new variable in your header.html and footer.html called -/// $navmenulist ... this contains a simple XHTML menu of -/// all activities in the current course, mostly useful for -/// creating popup navigation menus and so on. - - -$THEME->resource_mp3player_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes'; - -/// With this you can control the colours of the "big" MP3 player -/// that is used for MP3 resources. - - -$THEME->filter_mediaplugin_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'waitForPlay=yes'; - -/// ...And this controls the small embedded player - - -$THEME->custompix = false; - -/// If true, then this theme must have a "pix" -/// subdirectory that contains copies of all -/// files from the moodle/pix directory, plus a -/// "pix/mod" directory containing all the icons -/// for all the activity modules. -//////////////////////////////////////////////////////////////////////////////// +$THEME->body = "#C5EFFF"; // Main page color +$THEME->cellheading = "#9ADAF4"; // Standard headings of big tables +$THEME->cellheading2 = "#73C1E1"; // Highlight headings of tables +$THEME->cellcontent = "#FFFFFF"; // For areas with text +$THEME->cellcontent2 = "#B3EAFF"; // Alternate colour +$THEME->borders = "#73C1E1"; // Table borders +$THEME->highlight = "#AAFFAA"; // Highlighted text (eg after a search) +$THEME->hidden = "#AAAAAA"; // To color things that are hidden +$THEME->autolink = "#EEEEEE"; // To color auto-generated links (eg glossary) +$THEME->custompix = false; // If true, then this theme must have a "pix" + // subdirectory that contains copies of all + // files from the moodle/pix directory + // See "cordoroyblue" for an up-to-date example. ?> diff --git a/theme/standardblue/footer.html b/theme/standardblue/footer.html index 86679a52e9d..ee5aaf4bc55 100644 --- a/theme/standardblue/footer.html +++ b/theme/standardblue/footer.html @@ -1,24 +1,9 @@ -</div> <!-- end div content --> - -<div id="footer"> +<!-- START OF FOOTER --> +<center> <hr size="1" noshade="noshade" /> -<?php echo $loggedinas ?> -<?php echo $homelink ?> +<p class="logininfo"><?php echo $loggedinas ?></p> +<p class="homelink"><?php echo $homelink ?></p> -<?php if (isadmin()) { ?> -<hr size="1" noshade="noshade" /> -<p align="center"> -<a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a> | -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a> | -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a> -</p> -<?php } ?> - - - -</div> -</div> -<?php echo $navmenulist ?> </body> </html> diff --git a/theme/standardblue/gradients.css b/theme/standardblue/gradients.css deleted file mode 100644 index 1f66d8f5c3f..00000000000 --- a/theme/standardblue/gradients.css +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Adds all the nice finish to the standard theme - * - */ - -th.header, -td.header, -div.header { - background-image:url(gradient.jpg); - background-position:top; - background-repeat:repeat-x; -} - -.navbar { - background-image:url(gradient.jpg); - background-position:top; - background-repeat:repeat-x; -} - diff --git a/theme/standardblue/header.html b/theme/standardblue/header.html index b414cfa7250..13765be9534 100644 --- a/theme/standardblue/header.html +++ b/theme/standardblue/header.html @@ -1,45 +1,60 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html<?php echo $direction ?>> <head> - <?php echo $meta ?> - <meta name="keywords" content="moodle, <?php echo $title ?> " /> - <title><?php echo $title ?></title> - <link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> - <?php include("$CFG->javascript"); ?> +<?php echo $meta ?> +<title><?php echo $title ?></title> +<meta name="keywords" content="moodle, <?php echo $title ?> " /> +<link rel="stylesheet" type="text/css" href="<?php echo $styles ?>" /> +<link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> +<?php include("$CFG->javascript"); ?> </head> -<body<?php - echo " $bodytags"; - if ($focus) { - echo " onload=\"setfocus()\""; - } - ?>> - -<div id="page"> +<body<?php + echo " $bodytags"; + if ($focus) { + echo " onload=setfocus()"; + } + echo " bgcolor=\"$THEME->body\">"; +?> + +<?php if ($home) { // This is what gets printed on the home page only ?> + + <table width="100%" cellpadding="10" cellspacing="0" border="0" class="headerhome"> + <tr> + <td valign="top" class="headerhomemain"><?php echo $heading?></td> + <td align="right" valign="top" class="headerhomemenu"><?php echo $menu ?></td> + </tr> + </table> + +<?php } else if ($heading) { // This is what gets printed on any other page with a heading ?> + + <table width="100%" cellpadding="0" cellspacing="0" border="0" class="header"> + <tr> + <td valign="top" class="headermain"><?php echo $heading?></td> + <td align="right" valign="top" class="headermenu"><?php echo $menu ?></td> + </tr> + </table> -<?php if ($home) { // This is what gets printed on the home page only -?> - <div id="header-home"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> -<?php } else if ($heading) { // This is what gets printed on any other page with a heading -?> - <div id="header"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> <?php } ?> - <div class="clearer">&nbsp;</div> + + <?php if ($navigation) { // This is the navigation table with breadcrumbs ?> - <table class="navbar"><tr><td> - <div class="breadcrumb"><?php print_navigation($navigation); ?></div> - <div class="navbutton"><?php echo $button; ?></div> - </td></tr></table> -<?php } else if ($heading) { // If no navigation, but a heading, then print a line -?> - <hr size="1" noshade="noshade" /> + + <table border="0" cellpadding="3" cellspacing="0" width="100%"> + <tr> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar"> + <font size="2"><b><?php print_navigation("$navigation"); ?></b></font> + </td> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar" align="right" width="20" valign="top"><?php + echo $button; + ?></td> + </tr> + </table> + <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height="5" width="1" /><br /> + +<?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> + + <hr size="1" noshade="noshade" /> + <?php } ?> - <div class="clearer">&nbsp;</div> - <!-- END OF HEADER --> - <div id="content"> + +<!-- END OF HEADER --> diff --git a/theme/standardblue/styles.php b/theme/standardblue/styles.php index d897beac9c4..0d88adb3a60 100644 --- a/theme/standardblue/styles.php +++ b/theme/standardblue/styles.php @@ -1,18 +1,741 @@ <?PHP /* $Id$ */ -/// Every theme should contain a copy of this script. It lets us -/// set up variables and so on before we include the raw CSS files. -/// The output of this script should be a completely standard CSS file. +/// We use PHP so we can do value substitutions into the styles -/// THERE SHOULD BE NO NEED TO MODIFY THIS FILE!! USE CONFIG.PHP INSTEAD. + if (!isset($themename)) { + $themename = NULL; + } + $nomoodlecookie = true; + require_once("../../config.php"); + $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - $lifetime = 1800; // Seconds to cache this stylesheet - $nomoodlecookie = true; // Cookies prevent caching, so don't use them - require_once("../../config.php"); // Load up the Moodle libraries - $themename = basename(dirname(__FILE__)); // Name of the folder we are in - $forceconfig = optional_param('forceconfig', '', PARAM_FILE); // Get config from this theme +/// From here on it's nearly a normal stylesheet. +/// First are some CSS definitions for normal tags, +/// then custom tags follow. +/// +/// New classes always get added to the end of the file. +/// +/// Note that a group of standard colours are all +/// defined in config.php in this directory. The +/// reason for this is because Moodle uses the same +/// colours to provide oldstyle formatting for +/// browsers without CSS. +/// +/// You can hardcode colours in this file if you +/// don't care about this. - style_sheet_setup(filemtime('styles.php'), $lifetime, $themename, $forceconfig); - ?> + + +body, td, th, li { + font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; +} + +th { + font-weight: bold; + background-color: <?PHP echo $THEME->cellheading?>; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +a:link { + text-decoration: none; + color: blue; +} + +a:visited { + text-decoration: none; + color: blue; +} + +a:hover { + text-decoration: underline; + color: red; +} + +form { + margin-bottom: 0; +} + + + + + +.highlight { + background-color: <?PHP echo $THEME->highlight?>; +} + +.headingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.navbar { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltable { +} + +.generaltableheader { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltablecell { +} + +.sideblock { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockheading { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.sideblockmain { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblocklinks { +} + +.sideblocklatestnews { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockrecentactivity { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.outlineheadingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.forumpost { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.forumpostpicture { +} + +.forumpostside { + -moz-border-radius-bottomleft: 20px; +} + +.forumpostmessage { + -moz-border-radius-bottomright: 20px; +} + + +.weeklyoutline { +} + +.weeklyoutlineside { +} + +.weeklyoutlinesidehighlight { +} + +.weeklyoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.weeklyoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklydatetext { + font-size: medium; + font-weight: bold; + color: <?PHP echo $THEME->cellheading2?>; +} + +.topicsoutline { +} + +.topicsoutlineside { +} + +.topicsoutlinesidehighlight { +} + +.topicsoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.topicsoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.siteinfo { +} + +.siteinfocontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; + padding: 10px; +} + + +.generalbox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.generalboxcontent { + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.noticebox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.noticeboxcontent { + text-align: center; +} + + +.feedbacktext { + color: <?PHP echo $THEME->cellheading2?>; +} + +a.dimmed:link { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:visited { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:hover { + text-decoration: underline; + color: red; +} + +.dimmed_text { + color: #AAAAAA; +} + +.forumpostheader { +} + +.forumpostheadertopic { +} + +.forumpostheaderpicture { +} + +.forumpostheadername { + font-size: small; +} + +.forumpostheaderreplies { + font-size: small; +} + +.forumpostheaderdate { + font-size: small; +} + +.logininfo { + font-size: x-small; +} + +.homelink { + font-size: x-small; +} + +.teacheronly { + color: #990000; +} + +.header { +} + +.headermain { + font-size: large; + font-weight: bold; +} + +.headermenu { +} + +.headerhome { +} + +.headerhomemain { + font-size: x-large; + font-weight: bold; +} + +.headerhomemenu { +} + +.categorybox { +} + +.categoryboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.categoryname { + font-size: larger; + font-weight: bold; +} + +.categorynumber { + font-size: larger; + font-weight: bold; +} + +.coursename { +} + +.coursebox { +} + +.courseboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.courseboxinfo { +} + +.courseboxsummary { +} + +a.autolink:link { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:visited { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:hover { + text-decoration: underline; + color: red; +} + +.userinfobox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; + margin-bottom: 5px; +} + +.userinfoboxside { + -moz-border-radius-bottomleft: 20px; +} + +.userinfoboxcontent { + -moz-border-radius-bottomright: 20px; +} + +.userinfoboxsummary { +} + +.userinfoboxlinkcontent { + -moz-border-radius-bottomright: 20px; +} + +.generaltab { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.generaltabselected { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.forumheaderlist { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.smallinfo { +} + +.smallinfohead { + color: #555555; +} + +.tabledivider { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + border-left: 0px; + border-right: 0px; + border-top: 0px; +} + +.headingblockcontent { +} + +TABLE.calendarmini { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-size: .7em; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmonth { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmini TBODY TD { + text-align: center; + vertical-align: center; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + -moz-border-radius: 4px; +} + +TABLE.calendarmonth TBODY TD { + width: 14%; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + vertical-align: top; +} + +.cal_event_global { + background-color: #2EBA0E; + border: 2px #2EBA0E solid !important; +} + +.cal_event_course { + background-color: #ff9966; + border: 2px #ff9966 solid !important; +} + +.cal_event_group { + background-color: #FBBB23; + border: 2px #FBBB23 solid !important; +} + +.cal_event_user { + background-color: #A1BECB; + border: 2px #A1BECB solid !important; +} + +.cal_duration_global { + border-top: 2px #2EBA0E solid !important; + border-bottom: 2px #2EBA0E solid !important; +} + +.cal_duration_course { + border-top: 2px #ff9966 solid !important; + border-bottom: 2px #ff9966 solid !important; +} + +.cal_duration_user { + border-top: 2px #A1BECB solid !important; + border-bottom: 2px #A1BECB solid !important; +} + +.cal_duration_group { + border-top: 2px #FBBB23 solid !important; + border-bottom: 2px #FBBB23 solid !important; +} + +.cal_weekend { + color: red; +} + +.cal_today { + border: 2px black solid !important; +} + +TABLE.calendarmonth TBODY TD TABLE { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmonth TBODY TD TABLE TD { + border: none; +} + +TABLE.calendarmonth TBODY TD DIV { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmini THEAD TD { + font-size: .95em; + text-align: center; + vertical-align: center; +} + +TABLE.calendarmonth THEAD TD { + text-align: center; + vertical-align: center; + padding-bottom: 3px; + border-bottom: 2px <?PHP echo $THEME->borders?> solid; +} + +.sideblockmain .cal_event { + font-size: 0.8em; + font-weight: bold; +} + +.sideblockmain .cal_event_date { + font-size: 0.6em; +} + +.mycalendar { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.mycalendar .cal_event { + font-weight: bold; +} +.mycalendar .cal_event_date { + font-size: 0.8em; +} + +.mycalendar TABLE.cal_filters { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_filters THEAD TD { + border-bottom: 2px <?PHP echo $THEME->borders?> solid; + margin: 0px; + padding: 2px; +} + + +.mycalendar .cal_event_table { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_event_table THEAD { + background-color: <?PHP echo $THEME->cellcontent?>; + text-align: center; + font-weight: bold; +} + +.sideblockmain HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.mycalendar HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.calendarreferer { + font-weight: bold; +} + +TD.cal_event_description { + width: 80%; + border-left: 2px <?php echo $THEME->borders?> solid; + vertical-align: top; + padding: 5px; +} + +.cal_popup_fg { + background-color: <?php echo $THEME->cellcontent?>; +} + +.cal_popup_bg { + border-top: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-left: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-right: 2px <?php echo $THEME->cellheading2 ?> solid; + border-bottom: 2px <?php echo $THEME->cellheading2 ?> solid; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + padding: 0px; + margin: 0px; +} + +.cal_popup_caption { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; +} + +.cal_popup_close { + font-size: 75%; + font-weight: bold; + font-family: Tahoma, Helvetica, sans-serif; + margin-right: 5px; +} + +.sideblock .cal_controls { + text-align: center; + font-size: 9px; +} + +A IMG { + border: none; +} + +TABLE.formtable TD { + padding: 9px; +} + +.eventfull { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.eventfullheader { +} + +.eventfullpicture { + padding:8px; +} + +.eventfullside { + -moz-border-radius-bottomleft: 15px; +} + +.eventfullmessage { + -moz-border-radius-bottomright: 15px; +} + +#block_course_summary, #block_course_summary .sideblockmain { + -moz-border-radius: 20px; +} + +#block_course_summary .sideblockmain { + padding: 10px; +} + +.sitetopic { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 15px; +} + +.sitetopiccontent { + -moz-border-radius: 15px; +} + diff --git a/theme/standardgreen/config.php b/theme/standardgreen/config.php index 68f9af7b47a..7353de4d162 100644 --- a/theme/standardgreen/config.php +++ b/theme/standardgreen/config.php @@ -1,124 +1,17 @@ <?PHP // $Id$ -//////////////////////////////////////////////////////////////////////////////// -/// This file contains a few configuration variables that control -/// how Moodle uses this theme. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->sheets = array('gradients'); - -/// This variable is an array containing the names of all the -/// stylesheet files you want included in this theme, and in what order -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->standardsheets = array('styles_layout','styles_fonts','styles_color','styles_moz'); - -/// This variable can be set to an array containing -/// filenames from the *STANDARD* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parent = ''; - -/// This variable can be set to the name of a parent theme -/// which you want to have included before the current theme. -/// This can make it easy to make modifications to another -/// theme without having to actually change the files -/// If this variable is empty or false then a parent theme -/// is not used. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parentsheets = false; - -/// This variable can be set to an array containing -/// filenames from a chosen *PARENT* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->parentsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->modsheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Activity modules and -/// include them. This allows modules to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->blocksheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Block modules and -/// include them. This allows Blocks to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->langsheets = false; - -/// By setting this to true, then this theme will search for -/// a file named "styles.php" inside the current language -/// directory. This allows different languages to provide -/// different styles. - -$THEME->navmenuwidth = 50; - -/// You can use this to control the cutoff point for strings -/// in the navmenus (list of activities in popup menu etc) -/// Default is 50 characters wide. - - -$THEME->makenavmenulist = false; - -/// By setting this to true, then you will have access to a -/// new variable in your header.html and footer.html called -/// $navmenulist ... this contains a simple XHTML menu of -/// all activities in the current course, mostly useful for -/// creating popup navigation menus and so on. - - -$THEME->resource_mp3player_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes'; - -/// With this you can control the colours of the "big" MP3 player -/// that is used for MP3 resources. - - -$THEME->filter_mediaplugin_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'waitForPlay=yes'; - -/// ...And this controls the small embedded player - - -$THEME->custompix = false; - -/// If true, then this theme must have a "pix" -/// subdirectory that contains copies of all -/// files from the moodle/pix directory, plus a -/// "pix/mod" directory containing all the icons -/// for all the activity modules. -//////////////////////////////////////////////////////////////////////////////// +$THEME->body = "#B4EFC1"; // Main page color +$THEME->cellheading = "#8CDD94"; // Standard headings of big tables +$THEME->cellheading2 = "#3DD35F"; // Highlight headings of tables +$THEME->cellcontent = "#FFFFFF"; // For areas with text +$THEME->cellcontent2 = "#AFE9BB"; // Alternate colour +$THEME->borders = "#3DD35F"; // Table borders +$THEME->highlight = "#AAFFAA"; // Highlighted text (eg after a search) +$THEME->hidden = "#AAAAAA"; // To color things that are hidden +$THEME->autolink = "#EEEEEE"; // To color auto-generated links (eg glossary) +$THEME->custompix = false; // If true, then this theme must have a "pix" + // subdirectory that contains copies of all + // files from the moodle/pix directory + // See "cordoroyblue" for an up-to-date example. ?> diff --git a/theme/standardgreen/footer.html b/theme/standardgreen/footer.html index 86679a52e9d..ee5aaf4bc55 100644 --- a/theme/standardgreen/footer.html +++ b/theme/standardgreen/footer.html @@ -1,24 +1,9 @@ -</div> <!-- end div content --> - -<div id="footer"> +<!-- START OF FOOTER --> +<center> <hr size="1" noshade="noshade" /> -<?php echo $loggedinas ?> -<?php echo $homelink ?> +<p class="logininfo"><?php echo $loggedinas ?></p> +<p class="homelink"><?php echo $homelink ?></p> -<?php if (isadmin()) { ?> -<hr size="1" noshade="noshade" /> -<p align="center"> -<a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a> | -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a> | -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a> -</p> -<?php } ?> - - - -</div> -</div> -<?php echo $navmenulist ?> </body> </html> diff --git a/theme/standardgreen/gradients.css b/theme/standardgreen/gradients.css deleted file mode 100644 index 1f66d8f5c3f..00000000000 --- a/theme/standardgreen/gradients.css +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Adds all the nice finish to the standard theme - * - */ - -th.header, -td.header, -div.header { - background-image:url(gradient.jpg); - background-position:top; - background-repeat:repeat-x; -} - -.navbar { - background-image:url(gradient.jpg); - background-position:top; - background-repeat:repeat-x; -} - diff --git a/theme/standardgreen/header.html b/theme/standardgreen/header.html index b414cfa7250..13765be9534 100644 --- a/theme/standardgreen/header.html +++ b/theme/standardgreen/header.html @@ -1,45 +1,60 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html<?php echo $direction ?>> <head> - <?php echo $meta ?> - <meta name="keywords" content="moodle, <?php echo $title ?> " /> - <title><?php echo $title ?></title> - <link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> - <?php include("$CFG->javascript"); ?> +<?php echo $meta ?> +<title><?php echo $title ?></title> +<meta name="keywords" content="moodle, <?php echo $title ?> " /> +<link rel="stylesheet" type="text/css" href="<?php echo $styles ?>" /> +<link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> +<?php include("$CFG->javascript"); ?> </head> -<body<?php - echo " $bodytags"; - if ($focus) { - echo " onload=\"setfocus()\""; - } - ?>> - -<div id="page"> +<body<?php + echo " $bodytags"; + if ($focus) { + echo " onload=setfocus()"; + } + echo " bgcolor=\"$THEME->body\">"; +?> + +<?php if ($home) { // This is what gets printed on the home page only ?> + + <table width="100%" cellpadding="10" cellspacing="0" border="0" class="headerhome"> + <tr> + <td valign="top" class="headerhomemain"><?php echo $heading?></td> + <td align="right" valign="top" class="headerhomemenu"><?php echo $menu ?></td> + </tr> + </table> + +<?php } else if ($heading) { // This is what gets printed on any other page with a heading ?> + + <table width="100%" cellpadding="0" cellspacing="0" border="0" class="header"> + <tr> + <td valign="top" class="headermain"><?php echo $heading?></td> + <td align="right" valign="top" class="headermenu"><?php echo $menu ?></td> + </tr> + </table> -<?php if ($home) { // This is what gets printed on the home page only -?> - <div id="header-home"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> -<?php } else if ($heading) { // This is what gets printed on any other page with a heading -?> - <div id="header"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> <?php } ?> - <div class="clearer">&nbsp;</div> + + <?php if ($navigation) { // This is the navigation table with breadcrumbs ?> - <table class="navbar"><tr><td> - <div class="breadcrumb"><?php print_navigation($navigation); ?></div> - <div class="navbutton"><?php echo $button; ?></div> - </td></tr></table> -<?php } else if ($heading) { // If no navigation, but a heading, then print a line -?> - <hr size="1" noshade="noshade" /> + + <table border="0" cellpadding="3" cellspacing="0" width="100%"> + <tr> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar"> + <font size="2"><b><?php print_navigation("$navigation"); ?></b></font> + </td> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar" align="right" width="20" valign="top"><?php + echo $button; + ?></td> + </tr> + </table> + <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height="5" width="1" /><br /> + +<?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> + + <hr size="1" noshade="noshade" /> + <?php } ?> - <div class="clearer">&nbsp;</div> - <!-- END OF HEADER --> - <div id="content"> + +<!-- END OF HEADER --> diff --git a/theme/standardgreen/styles.php b/theme/standardgreen/styles.php index d897beac9c4..0d88adb3a60 100644 --- a/theme/standardgreen/styles.php +++ b/theme/standardgreen/styles.php @@ -1,18 +1,741 @@ <?PHP /* $Id$ */ -/// Every theme should contain a copy of this script. It lets us -/// set up variables and so on before we include the raw CSS files. -/// The output of this script should be a completely standard CSS file. +/// We use PHP so we can do value substitutions into the styles -/// THERE SHOULD BE NO NEED TO MODIFY THIS FILE!! USE CONFIG.PHP INSTEAD. + if (!isset($themename)) { + $themename = NULL; + } + $nomoodlecookie = true; + require_once("../../config.php"); + $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - $lifetime = 1800; // Seconds to cache this stylesheet - $nomoodlecookie = true; // Cookies prevent caching, so don't use them - require_once("../../config.php"); // Load up the Moodle libraries - $themename = basename(dirname(__FILE__)); // Name of the folder we are in - $forceconfig = optional_param('forceconfig', '', PARAM_FILE); // Get config from this theme +/// From here on it's nearly a normal stylesheet. +/// First are some CSS definitions for normal tags, +/// then custom tags follow. +/// +/// New classes always get added to the end of the file. +/// +/// Note that a group of standard colours are all +/// defined in config.php in this directory. The +/// reason for this is because Moodle uses the same +/// colours to provide oldstyle formatting for +/// browsers without CSS. +/// +/// You can hardcode colours in this file if you +/// don't care about this. - style_sheet_setup(filemtime('styles.php'), $lifetime, $themename, $forceconfig); - ?> + + +body, td, th, li { + font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; +} + +th { + font-weight: bold; + background-color: <?PHP echo $THEME->cellheading?>; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +a:link { + text-decoration: none; + color: blue; +} + +a:visited { + text-decoration: none; + color: blue; +} + +a:hover { + text-decoration: underline; + color: red; +} + +form { + margin-bottom: 0; +} + + + + + +.highlight { + background-color: <?PHP echo $THEME->highlight?>; +} + +.headingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.navbar { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltable { +} + +.generaltableheader { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltablecell { +} + +.sideblock { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockheading { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.sideblockmain { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblocklinks { +} + +.sideblocklatestnews { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockrecentactivity { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.outlineheadingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.forumpost { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.forumpostpicture { +} + +.forumpostside { + -moz-border-radius-bottomleft: 20px; +} + +.forumpostmessage { + -moz-border-radius-bottomright: 20px; +} + + +.weeklyoutline { +} + +.weeklyoutlineside { +} + +.weeklyoutlinesidehighlight { +} + +.weeklyoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.weeklyoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklydatetext { + font-size: medium; + font-weight: bold; + color: <?PHP echo $THEME->cellheading2?>; +} + +.topicsoutline { +} + +.topicsoutlineside { +} + +.topicsoutlinesidehighlight { +} + +.topicsoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.topicsoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.siteinfo { +} + +.siteinfocontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; + padding: 10px; +} + + +.generalbox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.generalboxcontent { + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.noticebox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.noticeboxcontent { + text-align: center; +} + + +.feedbacktext { + color: <?PHP echo $THEME->cellheading2?>; +} + +a.dimmed:link { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:visited { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:hover { + text-decoration: underline; + color: red; +} + +.dimmed_text { + color: #AAAAAA; +} + +.forumpostheader { +} + +.forumpostheadertopic { +} + +.forumpostheaderpicture { +} + +.forumpostheadername { + font-size: small; +} + +.forumpostheaderreplies { + font-size: small; +} + +.forumpostheaderdate { + font-size: small; +} + +.logininfo { + font-size: x-small; +} + +.homelink { + font-size: x-small; +} + +.teacheronly { + color: #990000; +} + +.header { +} + +.headermain { + font-size: large; + font-weight: bold; +} + +.headermenu { +} + +.headerhome { +} + +.headerhomemain { + font-size: x-large; + font-weight: bold; +} + +.headerhomemenu { +} + +.categorybox { +} + +.categoryboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.categoryname { + font-size: larger; + font-weight: bold; +} + +.categorynumber { + font-size: larger; + font-weight: bold; +} + +.coursename { +} + +.coursebox { +} + +.courseboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.courseboxinfo { +} + +.courseboxsummary { +} + +a.autolink:link { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:visited { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:hover { + text-decoration: underline; + color: red; +} + +.userinfobox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; + margin-bottom: 5px; +} + +.userinfoboxside { + -moz-border-radius-bottomleft: 20px; +} + +.userinfoboxcontent { + -moz-border-radius-bottomright: 20px; +} + +.userinfoboxsummary { +} + +.userinfoboxlinkcontent { + -moz-border-radius-bottomright: 20px; +} + +.generaltab { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.generaltabselected { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.forumheaderlist { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.smallinfo { +} + +.smallinfohead { + color: #555555; +} + +.tabledivider { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + border-left: 0px; + border-right: 0px; + border-top: 0px; +} + +.headingblockcontent { +} + +TABLE.calendarmini { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-size: .7em; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmonth { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmini TBODY TD { + text-align: center; + vertical-align: center; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + -moz-border-radius: 4px; +} + +TABLE.calendarmonth TBODY TD { + width: 14%; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + vertical-align: top; +} + +.cal_event_global { + background-color: #2EBA0E; + border: 2px #2EBA0E solid !important; +} + +.cal_event_course { + background-color: #ff9966; + border: 2px #ff9966 solid !important; +} + +.cal_event_group { + background-color: #FBBB23; + border: 2px #FBBB23 solid !important; +} + +.cal_event_user { + background-color: #A1BECB; + border: 2px #A1BECB solid !important; +} + +.cal_duration_global { + border-top: 2px #2EBA0E solid !important; + border-bottom: 2px #2EBA0E solid !important; +} + +.cal_duration_course { + border-top: 2px #ff9966 solid !important; + border-bottom: 2px #ff9966 solid !important; +} + +.cal_duration_user { + border-top: 2px #A1BECB solid !important; + border-bottom: 2px #A1BECB solid !important; +} + +.cal_duration_group { + border-top: 2px #FBBB23 solid !important; + border-bottom: 2px #FBBB23 solid !important; +} + +.cal_weekend { + color: red; +} + +.cal_today { + border: 2px black solid !important; +} + +TABLE.calendarmonth TBODY TD TABLE { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmonth TBODY TD TABLE TD { + border: none; +} + +TABLE.calendarmonth TBODY TD DIV { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmini THEAD TD { + font-size: .95em; + text-align: center; + vertical-align: center; +} + +TABLE.calendarmonth THEAD TD { + text-align: center; + vertical-align: center; + padding-bottom: 3px; + border-bottom: 2px <?PHP echo $THEME->borders?> solid; +} + +.sideblockmain .cal_event { + font-size: 0.8em; + font-weight: bold; +} + +.sideblockmain .cal_event_date { + font-size: 0.6em; +} + +.mycalendar { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.mycalendar .cal_event { + font-weight: bold; +} +.mycalendar .cal_event_date { + font-size: 0.8em; +} + +.mycalendar TABLE.cal_filters { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_filters THEAD TD { + border-bottom: 2px <?PHP echo $THEME->borders?> solid; + margin: 0px; + padding: 2px; +} + + +.mycalendar .cal_event_table { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_event_table THEAD { + background-color: <?PHP echo $THEME->cellcontent?>; + text-align: center; + font-weight: bold; +} + +.sideblockmain HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.mycalendar HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.calendarreferer { + font-weight: bold; +} + +TD.cal_event_description { + width: 80%; + border-left: 2px <?php echo $THEME->borders?> solid; + vertical-align: top; + padding: 5px; +} + +.cal_popup_fg { + background-color: <?php echo $THEME->cellcontent?>; +} + +.cal_popup_bg { + border-top: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-left: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-right: 2px <?php echo $THEME->cellheading2 ?> solid; + border-bottom: 2px <?php echo $THEME->cellheading2 ?> solid; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + padding: 0px; + margin: 0px; +} + +.cal_popup_caption { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; +} + +.cal_popup_close { + font-size: 75%; + font-weight: bold; + font-family: Tahoma, Helvetica, sans-serif; + margin-right: 5px; +} + +.sideblock .cal_controls { + text-align: center; + font-size: 9px; +} + +A IMG { + border: none; +} + +TABLE.formtable TD { + padding: 9px; +} + +.eventfull { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.eventfullheader { +} + +.eventfullpicture { + padding:8px; +} + +.eventfullside { + -moz-border-radius-bottomleft: 15px; +} + +.eventfullmessage { + -moz-border-radius-bottomright: 15px; +} + +#block_course_summary, #block_course_summary .sideblockmain { + -moz-border-radius: 20px; +} + +#block_course_summary .sideblockmain { + padding: 10px; +} + +.sitetopic { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 15px; +} + +.sitetopiccontent { + -moz-border-radius: 15px; +} + diff --git a/theme/standardlogo/README.html b/theme/standardlogo/README.html index b5f19a3b5b4..1431b76386e 100644 --- a/theme/standardlogo/README.html +++ b/theme/standardlogo/README.html @@ -1,4 +1,4 @@ -<h2>Standard Logo Theme</h2> +<H2>Standard Logo Theme</h2> <p>To add your own homepage logo to this theme, you can simply:</p> diff --git a/theme/standardlogo/config.php b/theme/standardlogo/config.php index 68f9af7b47a..33fd176b8ea 100644 --- a/theme/standardlogo/config.php +++ b/theme/standardlogo/config.php @@ -1,124 +1,17 @@ <?PHP // $Id$ -//////////////////////////////////////////////////////////////////////////////// -/// This file contains a few configuration variables that control -/// how Moodle uses this theme. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->sheets = array('gradients'); - -/// This variable is an array containing the names of all the -/// stylesheet files you want included in this theme, and in what order -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->standardsheets = array('styles_layout','styles_fonts','styles_color','styles_moz'); - -/// This variable can be set to an array containing -/// filenames from the *STANDARD* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parent = ''; - -/// This variable can be set to the name of a parent theme -/// which you want to have included before the current theme. -/// This can make it easy to make modifications to another -/// theme without having to actually change the files -/// If this variable is empty or false then a parent theme -/// is not used. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parentsheets = false; - -/// This variable can be set to an array containing -/// filenames from a chosen *PARENT* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->parentsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->modsheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Activity modules and -/// include them. This allows modules to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->blocksheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Block modules and -/// include them. This allows Blocks to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->langsheets = false; - -/// By setting this to true, then this theme will search for -/// a file named "styles.php" inside the current language -/// directory. This allows different languages to provide -/// different styles. - -$THEME->navmenuwidth = 50; - -/// You can use this to control the cutoff point for strings -/// in the navmenus (list of activities in popup menu etc) -/// Default is 50 characters wide. - - -$THEME->makenavmenulist = false; - -/// By setting this to true, then you will have access to a -/// new variable in your header.html and footer.html called -/// $navmenulist ... this contains a simple XHTML menu of -/// all activities in the current course, mostly useful for -/// creating popup navigation menus and so on. - - -$THEME->resource_mp3player_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes'; - -/// With this you can control the colours of the "big" MP3 player -/// that is used for MP3 resources. - - -$THEME->filter_mediaplugin_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'waitForPlay=yes'; - -/// ...And this controls the small embedded player - - -$THEME->custompix = false; - -/// If true, then this theme must have a "pix" -/// subdirectory that contains copies of all -/// files from the moodle/pix directory, plus a -/// "pix/mod" directory containing all the icons -/// for all the activity modules. -//////////////////////////////////////////////////////////////////////////////// +$THEME->body = "#FFEECE"; // Main page color +$THEME->cellheading = "#FFD991"; // Standard headings of big tables +$THEME->cellheading2 = "#FFC85F"; // Highlight headings of tables +$THEME->cellcontent = "#FFFFFF"; // For areas with text +$THEME->cellcontent2 = "#FEE6B9"; // Alternate colour +$THEME->borders = "#FFC85F"; // Table borders +$THEME->highlight = "#AAFFAA"; // Highlighted text (eg after a search) +$THEME->hidden = "#AAAAAA"; // To color things that are hidden +$THEME->autolink = "#DDDDDD"; // To color auto-generated links (eg glossary) +$THEME->custompix = false; // If true, then this theme must have a "pix" + // subdirectory that contains copies of all + // files from the moodle/pix directory + // See "cordoroyblue" for an up-to-date example. ?> diff --git a/theme/standardlogo/footer.html b/theme/standardlogo/footer.html index 86679a52e9d..ee5aaf4bc55 100644 --- a/theme/standardlogo/footer.html +++ b/theme/standardlogo/footer.html @@ -1,24 +1,9 @@ -</div> <!-- end div content --> - -<div id="footer"> +<!-- START OF FOOTER --> +<center> <hr size="1" noshade="noshade" /> -<?php echo $loggedinas ?> -<?php echo $homelink ?> +<p class="logininfo"><?php echo $loggedinas ?></p> +<p class="homelink"><?php echo $homelink ?></p> -<?php if (isadmin()) { ?> -<hr size="1" noshade="noshade" /> -<p align="center"> -<a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a> | -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a> | -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a> -</p> -<?php } ?> - - - -</div> -</div> -<?php echo $navmenulist ?> </body> </html> diff --git a/theme/standardlogo/header.html b/theme/standardlogo/header.html index f90754fa6e6..f35c48ca14e 100644 --- a/theme/standardlogo/header.html +++ b/theme/standardlogo/header.html @@ -1,24 +1,25 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- No doctype yet - we are slowly migrating towards XHTML transitional 1.0 --> <html<?php echo $direction ?>> <head> - <?php echo $meta ?> - <meta name="keywords" content="moodle, <?php echo $title ?> " /> - <title><?php echo $title ?></title> - <link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> - <?php include("$CFG->javascript"); ?> +<?php echo $meta ?> +<title><?php echo $title ?></title> +<meta name="keywords" content="moodle, <?php echo $title ?> " /> +<link rel="stylesheet" type="text/css" href="<?php echo $styles ?>" /> +<link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> +<?php include("$CFG->javascript"); ?> </head> -<body<?php - echo " $bodytags"; - if ($focus) { - echo " onload=\"setfocus()\""; - } - ?>> - -<div id="page"> +<body<?php + echo " $bodytags"; + if ($focus) { + echo " onload=setfocus()"; + } + echo " bgcolor=\"$THEME->body\">"; +?> -<?php if ($home) { // This is what gets printed on the home page only - if (file_exists("$CFG->dirroot/logo.jpg")) { +<?php if ($home) { // This is what gets printed on the home page only ?> + +<?php if (file_exists("$CFG->dirroot/logo.jpg")) { $standardlogo = "$CFG->wwwroot/logo.jpg"; } else if (file_exists("$CFG->dataroot/1/logo.jpg")) { if (empty($CFG->slasharguments)) { @@ -30,27 +31,45 @@ $standardlogo = "$CFG->wwwroot/theme/$CFG->theme/logo.jpg"; } ?> - <div id="header-home"> - <div class="headermain"><img src="<?php echo $standardlogo ?>" border="0" alt="" /></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> -<?php } else if ($heading) { // This is what gets printed on any other page with a heading -?> - <div id="header"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> + + <table width="100%" cellpadding="0" cellspacing="0" border="0" class="headerhome"> + <tr> + <td valign="top" class="headerhomemain"><img + border="0" src="<?php echo $standardlogo ?>"></td> + <td align="right" valign="top" class="headerhomemenu"><?php echo $menu ?></td> + </tr> + </table> + +<?php } else if ($heading) { // This is what gets printed on any other page with a heading ?> + + <table width="100%" cellpadding="0" cellspacing="0" border="0" class="header"> + <tr> + <td valign="top" class="headermain"><?php echo $heading?></td> + <td align="right" valign="top" class="headermenu"><?php echo $menu ?></td> + </tr> + </table> + <?php } ?> - <div class="clearer">&nbsp;</div> + + <?php if ($navigation) { // This is the navigation table with breadcrumbs ?> - <table class="navbar"><tr><td> - <div class="breadcrumb"><?php print_navigation($navigation); ?></div> - <div class="navbutton"><?php echo $button; ?></div> - </td></tr></table> -<?php } else if ($heading) { // If no navigation, but a heading, then print a line -?> - <hr size="1" noshade="noshade" /> + + <table border="0" cellpadding="3" cellspacing="0" width="100%"> + <tr> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar"> + <font size="2"><b><?php print_navigation("$navigation"); ?></b></font> + </td> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar" align="right" width="20" valign="top"><?php + echo $button; + ?></td> + </tr> + </table> + <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height="5" width="1" /><br /> + +<?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> + + <hr size="1" noshade="noshade" /> + <?php } ?> - <div class="clearer">&nbsp;</div> - <!-- END OF HEADER --> - <div id="content"> + +<!-- END OF HEADER --> diff --git a/theme/standardlogo/styles.php b/theme/standardlogo/styles.php index d897beac9c4..4747ac41568 100644 --- a/theme/standardlogo/styles.php +++ b/theme/standardlogo/styles.php @@ -1,18 +1,741 @@ <?PHP /* $Id$ */ -/// Every theme should contain a copy of this script. It lets us -/// set up variables and so on before we include the raw CSS files. -/// The output of this script should be a completely standard CSS file. +/// We use PHP so we can do value substitutions into the styles -/// THERE SHOULD BE NO NEED TO MODIFY THIS FILE!! USE CONFIG.PHP INSTEAD. + if (!isset($themename)) { + $themename = NULL; + } + $nomoodlecookie = true; + require_once("../../config.php"); + $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - $lifetime = 1800; // Seconds to cache this stylesheet - $nomoodlecookie = true; // Cookies prevent caching, so don't use them - require_once("../../config.php"); // Load up the Moodle libraries - $themename = basename(dirname(__FILE__)); // Name of the folder we are in - $forceconfig = optional_param('forceconfig', '', PARAM_FILE); // Get config from this theme +/// From here on it's nearly a normal stylesheet. +/// First are some CSS definitions for normal tags, +/// then custom tags follow. +/// +/// New classes always get added to the end of the file. +/// +/// Note that a group of standard colours are all +/// defined in config.php in this directory. The +/// reason for this is because Moodle uses the same +/// colours to provide oldstyle formatting for +/// browsers without CSS. +/// +/// You can hardcode colours in this file if you +/// don't care about this. - style_sheet_setup(filemtime('styles.php'), $lifetime, $themename, $forceconfig); - ?> + + +body, td, th, li { + font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; +} + +th { + font-weight: bold; + background-color: <?PHP echo $THEME->cellheading?>; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +a:link { + text-decoration: none; + color: blue; +} + +a:visited { + text-decoration: none; + color: blue; +} + +a:hover { + text-decoration: underline; + color: red; +} + +form { + margin-bottom: 0; +} + + + + + +.highlight { + background-color: <?PHP echo $THEME->highlight?>; +} + +.headingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.navbar { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltable { +} + +.generaltableheader { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltablecell { +} + +.sideblock { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockheading { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.sideblockmain { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblocklinks { +} + +.sideblocklatestnews { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockrecentactivity { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.outlineheadingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.forumpost { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.forumpostpicture { +} + +.forumpostside { + -moz-border-radius-bottomleft: 20px; +} + +.forumpostmessage { + -moz-border-radius-bottomright: 20px; +} + + +.weeklyoutline { +} + +.weeklyoutlineside { +} + +.weeklyoutlinesidehighlight { +} + +.weeklyoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.weeklyoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklydatetext { + font-size: medium; + font-weight: bold; + color: <?PHP echo $THEME->cellheading2?>; +} + +.topicsoutline { +} + +.topicsoutlineside { +} + +.topicsoutlinesidehighlight { +} + +.topicsoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.topicsoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.siteinfo { +} + +.siteinfocontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; + padding: 10px; +} + + +.generalbox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.generalboxcontent { + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.noticebox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.noticeboxcontent { + text-align: center; +} + + +.feedbacktext { + color: <?PHP echo $THEME->cellheading2?>; +} + +a.dimmed:link { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:visited { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:hover { + text-decoration: underline; + color: red; +} + +.dimmed_text { + color: #AAAAAA; +} + +.forumpostheader { +} + +.forumpostheadertopic { +} + +.forumpostheaderpicture { +} + +.forumpostheadername { + font-size: small; +} + +.forumpostheaderreplies { + font-size: small; +} + +.forumpostheaderdate { + font-size: small; +} + +.logininfo { + font-size: x-small; +} + +.homelink { + font-size: x-small; +} + +.teacheronly { + color: #990000; +} + +.header { +} + +.headermain { + font-size: large; + font-weight: bold; +} + +.headermenu { +} + +.headerhome { +} + +.headerhomemain { + font-size: x-large; + font-weight: bold; +} + +.headerhomemenu { +} + +.categorybox { +} + +.categoryboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.categoryname { + font-size: larger; + font-weight: bold; +} + +.categorynumber { + font-size: larger; + font-weight: bold; +} + +.coursename { +} + +.coursebox { +} + +.courseboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.courseboxinfo { +} + +.courseboxsummary { +} + +a.autolink:link { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:visited { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:hover { + text-decoration: underline; + color: red; +} + +.userinfobox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; + margin-bottom: 5px; +} + +.userinfoboxside { + -moz-border-radius-bottomleft: 20px; +} + +.userinfoboxcontent { + -moz-border-radius-bottomright: 20px; +} + +.userinfoboxsummary { +} + +.userinfoboxlinkcontent { + -moz-border-radius-bottomright: 20px; +} + +.generaltab { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.generaltabselected { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.forumheaderlist { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.smallinfo { +} + +.smallinfohead { + color: #555555; +} + +.tabledivider { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + border-left: 0px; + border-right: 0px; + border-top: 0px; +} + +.headingblockcontent { +} + +TABLE.calendarmini { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-size: .7em; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmonth { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmini TBODY TD { + text-align: center; + vertical-align: center; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + -moz-border-radius: 4px; +} + +TABLE.calendarmonth TBODY TD { + width: 14%; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + vertical-align: top; +} + +.cal_event_global { + background-color: #2EBA0E; + border: 2px #2EBA0E solid !important; +} + +.cal_event_course { + background-color: #ff9966; + border: 2px #ff9966 solid !important; +} + +.cal_event_group { + background-color: #FBBB23; + border: 2px #FBBB23 solid !important; +} + +.cal_event_user { + background-color: #A1BECB; + border: 2px #A1BECB solid !important; +} + +.cal_duration_global { + border-top: 2px #2EBA0E solid !important; + border-bottom: 2px #2EBA0E solid !important; +} + +.cal_duration_course { + border-top: 2px #ff9966 solid !important; + border-bottom: 2px #ff9966 solid !important; +} + +.cal_duration_user { + border-top: 2px #A1BECB solid !important; + border-bottom: 2px #A1BECB solid !important; +} + +.cal_duration_group { + border-top: 2px #FBBB23 solid !important; + border-bottom: 2px #FBBB23 solid !important; +} + +.cal_weekend { + color: red; +} + +.cal_today { + border: 2px black solid !important; +} + +TABLE.calendarmonth TBODY TD TABLE { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmonth TBODY TD TABLE TD { + border: none; +} + +TABLE.calendarmonth TBODY TD DIV { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmini THEAD TD { + font-size: .95em; + text-align: center; + vertical-align: center; +} + +TABLE.calendarmonth THEAD TD { + text-align: center; + vertical-align: center; + padding-bottom: 3px; + border-bottom: 2px <?PHP echo $THEME->borders?> solid; +} + +.sideblockmain .cal_event { + font-size: 0.8em; + font-weight: bold; +} + +.sideblockmain .cal_event_date { + font-size: 0.6em; +} + +.mycalendar { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.mycalendar .cal_event { + font-weight: bold; +} +.mycalendar .cal_event_date { + font-size: 0.8em; +} + +.mycalendar TABLE.cal_filters { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_filters THEAD TD { + border-bottom: 2px <?PHP echo $THEME->borders?> solid; + margin: 0px; + padding: 2px; +} + + +.mycalendar .cal_event_table { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_event_table THEAD { + background-color: <?PHP echo $THEME->cellcontent?>; + text-align: center; + font-weight: bold; +} + +.sideblockmain HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.mycalendar HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.calendarreferer { + font-weight: bold; +} + +TD.cal_event_description { + width: 80%; + border-left: 2px <?php echo $THEME->borders?> solid; + vertical-align: top; + padding: 5px; +} + +.cal_popup_fg { + background-color: <?php echo $THEME->cellcontent?>; +} + +.cal_popup_bg { + border-top: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-left: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-right: 2px <?php echo $THEME->cellheading2 ?> solid; + border-bottom: 2px <?php echo $THEME->cellheading2 ?> solid; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + padding: 0px; + margin: 0px; +} + +.cal_popup_caption { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; +} + +.cal_popup_close { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; + margin-right: 5px; +} + +.sideblock .cal_controls { + text-align: center; + font-size: 9px; +} + +A IMG { + border: none; +} + +TABLE.formtable TD { + padding: 9px; +} + +.eventfull { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.eventfullheader { +} + +.eventfullpicture { + padding:8px; +} + +.eventfullside { + -moz-border-radius-bottomleft: 15px; +} + +.eventfullmessage { + -moz-border-radius-bottomright: 15px; +} + +#block_course_summary, #block_course_summary .sideblockmain { + -moz-border-radius: 20px; +} + +#block_course_summary .sideblockmain { + padding: 10px; +} + +.sitetopic { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 15px; +} + +.sitetopiccontent { + -moz-border-radius: 15px; +} + diff --git a/theme/standardred/config.php b/theme/standardred/config.php index 68f9af7b47a..a26c13c7311 100644 --- a/theme/standardred/config.php +++ b/theme/standardred/config.php @@ -1,124 +1,17 @@ <?PHP // $Id$ -//////////////////////////////////////////////////////////////////////////////// -/// This file contains a few configuration variables that control -/// how Moodle uses this theme. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->sheets = array('gradients'); - -/// This variable is an array containing the names of all the -/// stylesheet files you want included in this theme, and in what order -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->standardsheets = array('styles_layout','styles_fonts','styles_color','styles_moz'); - -/// This variable can be set to an array containing -/// filenames from the *STANDARD* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parent = ''; - -/// This variable can be set to the name of a parent theme -/// which you want to have included before the current theme. -/// This can make it easy to make modifications to another -/// theme without having to actually change the files -/// If this variable is empty or false then a parent theme -/// is not used. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parentsheets = false; - -/// This variable can be set to an array containing -/// filenames from a chosen *PARENT* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->parentsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->modsheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Activity modules and -/// include them. This allows modules to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->blocksheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Block modules and -/// include them. This allows Blocks to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->langsheets = false; - -/// By setting this to true, then this theme will search for -/// a file named "styles.php" inside the current language -/// directory. This allows different languages to provide -/// different styles. - -$THEME->navmenuwidth = 50; - -/// You can use this to control the cutoff point for strings -/// in the navmenus (list of activities in popup menu etc) -/// Default is 50 characters wide. - - -$THEME->makenavmenulist = false; - -/// By setting this to true, then you will have access to a -/// new variable in your header.html and footer.html called -/// $navmenulist ... this contains a simple XHTML menu of -/// all activities in the current course, mostly useful for -/// creating popup navigation menus and so on. - - -$THEME->resource_mp3player_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes'; - -/// With this you can control the colours of the "big" MP3 player -/// that is used for MP3 resources. - - -$THEME->filter_mediaplugin_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'waitForPlay=yes'; - -/// ...And this controls the small embedded player - - -$THEME->custompix = false; - -/// If true, then this theme must have a "pix" -/// subdirectory that contains copies of all -/// files from the moodle/pix directory, plus a -/// "pix/mod" directory containing all the icons -/// for all the activity modules. -//////////////////////////////////////////////////////////////////////////////// +$THEME->body = "#F5E7E7"; // Main page color +$THEME->cellheading = "#ECD2D2"; // Standard headings of big tables +$THEME->cellheading2 = "#E9C5C6"; // Highlight headings of tables +$THEME->cellcontent = "#FFFFFF"; // For areas with text +$THEME->cellcontent2 = "#ECD9D9"; // Alternate colour +$THEME->borders = "#E9C5C6"; // Table borders +$THEME->highlight = "#AAFFAA"; // Highlighted text (eg after a search) +$THEME->hidden = "#AAAAAA"; // To color things that are hidden +$THEME->autolink = "#EEEEEE"; // To color auto-generated links (eg glossary) +$THEME->custompix = false; // If true, then this theme must have a "pix" + // subdirectory that contains copies of all + // files from the moodle/pix directory + // See "cordoroyblue" for an up-to-date example. ?> diff --git a/theme/standardred/footer.html b/theme/standardred/footer.html index 86679a52e9d..ee5aaf4bc55 100644 --- a/theme/standardred/footer.html +++ b/theme/standardred/footer.html @@ -1,24 +1,9 @@ -</div> <!-- end div content --> - -<div id="footer"> +<!-- START OF FOOTER --> +<center> <hr size="1" noshade="noshade" /> -<?php echo $loggedinas ?> -<?php echo $homelink ?> +<p class="logininfo"><?php echo $loggedinas ?></p> +<p class="homelink"><?php echo $homelink ?></p> -<?php if (isadmin()) { ?> -<hr size="1" noshade="noshade" /> -<p align="center"> -<a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a> | -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a> | -<a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a> -</p> -<?php } ?> - - - -</div> -</div> -<?php echo $navmenulist ?> </body> </html> diff --git a/theme/standardred/gradients.css b/theme/standardred/gradients.css deleted file mode 100644 index 1f66d8f5c3f..00000000000 --- a/theme/standardred/gradients.css +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Adds all the nice finish to the standard theme - * - */ - -th.header, -td.header, -div.header { - background-image:url(gradient.jpg); - background-position:top; - background-repeat:repeat-x; -} - -.navbar { - background-image:url(gradient.jpg); - background-position:top; - background-repeat:repeat-x; -} - diff --git a/theme/standardred/header.html b/theme/standardred/header.html index b414cfa7250..13765be9534 100644 --- a/theme/standardred/header.html +++ b/theme/standardred/header.html @@ -1,45 +1,60 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html<?php echo $direction ?>> <head> - <?php echo $meta ?> - <meta name="keywords" content="moodle, <?php echo $title ?> " /> - <title><?php echo $title ?></title> - <link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> - <?php include("$CFG->javascript"); ?> +<?php echo $meta ?> +<title><?php echo $title ?></title> +<meta name="keywords" content="moodle, <?php echo $title ?> " /> +<link rel="stylesheet" type="text/css" href="<?php echo $styles ?>" /> +<link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> +<?php include("$CFG->javascript"); ?> </head> -<body<?php - echo " $bodytags"; - if ($focus) { - echo " onload=\"setfocus()\""; - } - ?>> - -<div id="page"> +<body<?php + echo " $bodytags"; + if ($focus) { + echo " onload=setfocus()"; + } + echo " bgcolor=\"$THEME->body\">"; +?> + +<?php if ($home) { // This is what gets printed on the home page only ?> + + <table width="100%" cellpadding="10" cellspacing="0" border="0" class="headerhome"> + <tr> + <td valign="top" class="headerhomemain"><?php echo $heading?></td> + <td align="right" valign="top" class="headerhomemenu"><?php echo $menu ?></td> + </tr> + </table> + +<?php } else if ($heading) { // This is what gets printed on any other page with a heading ?> + + <table width="100%" cellpadding="0" cellspacing="0" border="0" class="header"> + <tr> + <td valign="top" class="headermain"><?php echo $heading?></td> + <td align="right" valign="top" class="headermenu"><?php echo $menu ?></td> + </tr> + </table> -<?php if ($home) { // This is what gets printed on the home page only -?> - <div id="header-home"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> -<?php } else if ($heading) { // This is what gets printed on any other page with a heading -?> - <div id="header"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> <?php } ?> - <div class="clearer">&nbsp;</div> + + <?php if ($navigation) { // This is the navigation table with breadcrumbs ?> - <table class="navbar"><tr><td> - <div class="breadcrumb"><?php print_navigation($navigation); ?></div> - <div class="navbutton"><?php echo $button; ?></div> - </td></tr></table> -<?php } else if ($heading) { // If no navigation, but a heading, then print a line -?> - <hr size="1" noshade="noshade" /> + + <table border="0" cellpadding="3" cellspacing="0" width="100%"> + <tr> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar"> + <font size="2"><b><?php print_navigation("$navigation"); ?></b></font> + </td> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar" align="right" width="20" valign="top"><?php + echo $button; + ?></td> + </tr> + </table> + <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height="5" width="1" /><br /> + +<?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> + + <hr size="1" noshade="noshade" /> + <?php } ?> - <div class="clearer">&nbsp;</div> - <!-- END OF HEADER --> - <div id="content"> + +<!-- END OF HEADER --> diff --git a/theme/standardred/styles.php b/theme/standardred/styles.php index d897beac9c4..0d88adb3a60 100644 --- a/theme/standardred/styles.php +++ b/theme/standardred/styles.php @@ -1,18 +1,741 @@ <?PHP /* $Id$ */ -/// Every theme should contain a copy of this script. It lets us -/// set up variables and so on before we include the raw CSS files. -/// The output of this script should be a completely standard CSS file. +/// We use PHP so we can do value substitutions into the styles -/// THERE SHOULD BE NO NEED TO MODIFY THIS FILE!! USE CONFIG.PHP INSTEAD. + if (!isset($themename)) { + $themename = NULL; + } + $nomoodlecookie = true; + require_once("../../config.php"); + $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - $lifetime = 1800; // Seconds to cache this stylesheet - $nomoodlecookie = true; // Cookies prevent caching, so don't use them - require_once("../../config.php"); // Load up the Moodle libraries - $themename = basename(dirname(__FILE__)); // Name of the folder we are in - $forceconfig = optional_param('forceconfig', '', PARAM_FILE); // Get config from this theme +/// From here on it's nearly a normal stylesheet. +/// First are some CSS definitions for normal tags, +/// then custom tags follow. +/// +/// New classes always get added to the end of the file. +/// +/// Note that a group of standard colours are all +/// defined in config.php in this directory. The +/// reason for this is because Moodle uses the same +/// colours to provide oldstyle formatting for +/// browsers without CSS. +/// +/// You can hardcode colours in this file if you +/// don't care about this. - style_sheet_setup(filemtime('styles.php'), $lifetime, $themename, $forceconfig); - ?> + + +body, td, th, li { + font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; +} + +th { + font-weight: bold; + background-color: <?PHP echo $THEME->cellheading?>; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +a:link { + text-decoration: none; + color: blue; +} + +a:visited { + text-decoration: none; + color: blue; +} + +a:hover { + text-decoration: underline; + color: red; +} + +form { + margin-bottom: 0; +} + + + + + +.highlight { + background-color: <?PHP echo $THEME->highlight?>; +} + +.headingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.navbar { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltable { +} + +.generaltableheader { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltablecell { +} + +.sideblock { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockheading { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.sideblockmain { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblocklinks { +} + +.sideblocklatestnews { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockrecentactivity { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.outlineheadingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.forumpost { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.forumpostpicture { +} + +.forumpostside { + -moz-border-radius-bottomleft: 20px; +} + +.forumpostmessage { + -moz-border-radius-bottomright: 20px; +} + + +.weeklyoutline { +} + +.weeklyoutlineside { +} + +.weeklyoutlinesidehighlight { +} + +.weeklyoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.weeklyoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklydatetext { + font-size: medium; + font-weight: bold; + color: <?PHP echo $THEME->cellheading2?>; +} + +.topicsoutline { +} + +.topicsoutlineside { +} + +.topicsoutlinesidehighlight { +} + +.topicsoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.topicsoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.siteinfo { +} + +.siteinfocontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; + padding: 10px; +} + + +.generalbox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.generalboxcontent { + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.noticebox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.noticeboxcontent { + text-align: center; +} + + +.feedbacktext { + color: <?PHP echo $THEME->cellheading2?>; +} + +a.dimmed:link { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:visited { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:hover { + text-decoration: underline; + color: red; +} + +.dimmed_text { + color: #AAAAAA; +} + +.forumpostheader { +} + +.forumpostheadertopic { +} + +.forumpostheaderpicture { +} + +.forumpostheadername { + font-size: small; +} + +.forumpostheaderreplies { + font-size: small; +} + +.forumpostheaderdate { + font-size: small; +} + +.logininfo { + font-size: x-small; +} + +.homelink { + font-size: x-small; +} + +.teacheronly { + color: #990000; +} + +.header { +} + +.headermain { + font-size: large; + font-weight: bold; +} + +.headermenu { +} + +.headerhome { +} + +.headerhomemain { + font-size: x-large; + font-weight: bold; +} + +.headerhomemenu { +} + +.categorybox { +} + +.categoryboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.categoryname { + font-size: larger; + font-weight: bold; +} + +.categorynumber { + font-size: larger; + font-weight: bold; +} + +.coursename { +} + +.coursebox { +} + +.courseboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.courseboxinfo { +} + +.courseboxsummary { +} + +a.autolink:link { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:visited { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:hover { + text-decoration: underline; + color: red; +} + +.userinfobox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; + margin-bottom: 5px; +} + +.userinfoboxside { + -moz-border-radius-bottomleft: 20px; +} + +.userinfoboxcontent { + -moz-border-radius-bottomright: 20px; +} + +.userinfoboxsummary { +} + +.userinfoboxlinkcontent { + -moz-border-radius-bottomright: 20px; +} + +.generaltab { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.generaltabselected { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.forumheaderlist { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.smallinfo { +} + +.smallinfohead { + color: #555555; +} + +.tabledivider { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + border-left: 0px; + border-right: 0px; + border-top: 0px; +} + +.headingblockcontent { +} + +TABLE.calendarmini { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-size: .7em; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmonth { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmini TBODY TD { + text-align: center; + vertical-align: center; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + -moz-border-radius: 4px; +} + +TABLE.calendarmonth TBODY TD { + width: 14%; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + vertical-align: top; +} + +.cal_event_global { + background-color: #2EBA0E; + border: 2px #2EBA0E solid !important; +} + +.cal_event_course { + background-color: #ff9966; + border: 2px #ff9966 solid !important; +} + +.cal_event_group { + background-color: #FBBB23; + border: 2px #FBBB23 solid !important; +} + +.cal_event_user { + background-color: #A1BECB; + border: 2px #A1BECB solid !important; +} + +.cal_duration_global { + border-top: 2px #2EBA0E solid !important; + border-bottom: 2px #2EBA0E solid !important; +} + +.cal_duration_course { + border-top: 2px #ff9966 solid !important; + border-bottom: 2px #ff9966 solid !important; +} + +.cal_duration_user { + border-top: 2px #A1BECB solid !important; + border-bottom: 2px #A1BECB solid !important; +} + +.cal_duration_group { + border-top: 2px #FBBB23 solid !important; + border-bottom: 2px #FBBB23 solid !important; +} + +.cal_weekend { + color: red; +} + +.cal_today { + border: 2px black solid !important; +} + +TABLE.calendarmonth TBODY TD TABLE { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmonth TBODY TD TABLE TD { + border: none; +} + +TABLE.calendarmonth TBODY TD DIV { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmini THEAD TD { + font-size: .95em; + text-align: center; + vertical-align: center; +} + +TABLE.calendarmonth THEAD TD { + text-align: center; + vertical-align: center; + padding-bottom: 3px; + border-bottom: 2px <?PHP echo $THEME->borders?> solid; +} + +.sideblockmain .cal_event { + font-size: 0.8em; + font-weight: bold; +} + +.sideblockmain .cal_event_date { + font-size: 0.6em; +} + +.mycalendar { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.mycalendar .cal_event { + font-weight: bold; +} +.mycalendar .cal_event_date { + font-size: 0.8em; +} + +.mycalendar TABLE.cal_filters { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_filters THEAD TD { + border-bottom: 2px <?PHP echo $THEME->borders?> solid; + margin: 0px; + padding: 2px; +} + + +.mycalendar .cal_event_table { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_event_table THEAD { + background-color: <?PHP echo $THEME->cellcontent?>; + text-align: center; + font-weight: bold; +} + +.sideblockmain HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.mycalendar HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.calendarreferer { + font-weight: bold; +} + +TD.cal_event_description { + width: 80%; + border-left: 2px <?php echo $THEME->borders?> solid; + vertical-align: top; + padding: 5px; +} + +.cal_popup_fg { + background-color: <?php echo $THEME->cellcontent?>; +} + +.cal_popup_bg { + border-top: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-left: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-right: 2px <?php echo $THEME->cellheading2 ?> solid; + border-bottom: 2px <?php echo $THEME->cellheading2 ?> solid; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + padding: 0px; + margin: 0px; +} + +.cal_popup_caption { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; +} + +.cal_popup_close { + font-size: 75%; + font-weight: bold; + font-family: Tahoma, Helvetica, sans-serif; + margin-right: 5px; +} + +.sideblock .cal_controls { + text-align: center; + font-size: 9px; +} + +A IMG { + border: none; +} + +TABLE.formtable TD { + padding: 9px; +} + +.eventfull { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.eventfullheader { +} + +.eventfullpicture { + padding:8px; +} + +.eventfullside { + -moz-border-radius-bottomleft: 15px; +} + +.eventfullmessage { + -moz-border-radius-bottomright: 15px; +} + +#block_course_summary, #block_course_summary .sideblockmain { + -moz-border-radius: 20px; +} + +#block_course_summary .sideblockmain { + padding: 10px; +} + +.sitetopic { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 15px; +} + +.sitetopiccontent { + -moz-border-radius: 15px; +} + diff --git a/theme/standardwhite/config.php b/theme/standardwhite/config.php index 68f9af7b47a..efb81c5cf4f 100644 --- a/theme/standardwhite/config.php +++ b/theme/standardwhite/config.php @@ -1,124 +1,17 @@ <?PHP // $Id$ -//////////////////////////////////////////////////////////////////////////////// -/// This file contains a few configuration variables that control -/// how Moodle uses this theme. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->sheets = array('gradients'); - -/// This variable is an array containing the names of all the -/// stylesheet files you want included in this theme, and in what order -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->standardsheets = array('styles_layout','styles_fonts','styles_color','styles_moz'); - -/// This variable can be set to an array containing -/// filenames from the *STANDARD* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->standardsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parent = ''; - -/// This variable can be set to the name of a parent theme -/// which you want to have included before the current theme. -/// This can make it easy to make modifications to another -/// theme without having to actually change the files -/// If this variable is empty or false then a parent theme -/// is not used. -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->parentsheets = false; - -/// This variable can be set to an array containing -/// filenames from a chosen *PARENT* theme. If the -/// array exists, it will be used to choose the -/// files to include in the standard style sheet. -/// When false, then no files are used. -/// When true or NON-EXISTENT, then ALL standard files are used. -/// This parameter can be used, for example, to prevent -/// having to override too many classes. -/// Note that the trailing .css should not be included -/// eg $THEME->parentsheets = array('styles_layout','styles_fonts','styles_color'); -//////////////////////////////////////////////////////////////////////////////// - - -$THEME->modsheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Activity modules and -/// include them. This allows modules to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->blocksheets = true; - -/// When this is enabled, then this theme will search for -/// files named "styles.php" inside all Block modules and -/// include them. This allows Blocks to provide some basic -/// layouts so they work out of the box. -/// It is HIGHLY recommended to leave this enabled. - - -$THEME->langsheets = false; - -/// By setting this to true, then this theme will search for -/// a file named "styles.php" inside the current language -/// directory. This allows different languages to provide -/// different styles. - -$THEME->navmenuwidth = 50; - -/// You can use this to control the cutoff point for strings -/// in the navmenus (list of activities in popup menu etc) -/// Default is 50 characters wide. - - -$THEME->makenavmenulist = false; - -/// By setting this to true, then you will have access to a -/// new variable in your header.html and footer.html called -/// $navmenulist ... this contains a simple XHTML menu of -/// all activities in the current course, mostly useful for -/// creating popup navigation menus and so on. - - -$THEME->resource_mp3player_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes'; - -/// With this you can control the colours of the "big" MP3 player -/// that is used for MP3 resources. - - -$THEME->filter_mediaplugin_colors = - 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'waitForPlay=yes'; - -/// ...And this controls the small embedded player - - -$THEME->custompix = false; - -/// If true, then this theme must have a "pix" -/// subdirectory that contains copies of all -/// files from the moodle/pix directory, plus a -/// "pix/mod" directory containing all the icons -/// for all the activity modules. -//////////////////////////////////////////////////////////////////////////////// +$THEME->body = "#FFFFFF"; // Main page color +$THEME->cellheading = "#E8E8E8"; // Standard headings of big tables +$THEME->cellheading2 = "#AAAAAA"; // Highlight headings of tables +$THEME->cellcontent = "#FFFFFF"; // For areas with text +$THEME->cellcontent2 = "#EFEFEF"; // Alternate colour +$THEME->borders = "#999999"; // Table borders +$THEME->highlight = "#AAFFAA"; // Highlighted text (eg after a search) +$THEME->hidden = "#AAAAAA"; // To color things that are hidden +$THEME->autolink = "#EEEEEE"; // To color auto-generated links (eg glossary) +$THEME->custompix = false; // If true, then this theme must have a "pix" + // subdirectory that contains copies of all + // files from the moodle/pix directory + // See "cordoroyblue" for an up-to-date example. ?> diff --git a/theme/standardwhite/footer.html b/theme/standardwhite/footer.html index 3f5af312a8f..ee5aaf4bc55 100644 --- a/theme/standardwhite/footer.html +++ b/theme/standardwhite/footer.html @@ -1,24 +1,9 @@ -</div> <!-- end div content --> - -<div id="footer"> -<hr size="1" noshade="noshade" /> -<?php echo $loggedinas ?> -<?php echo $homelink ?> +<!-- START OF FOOTER --> +<center> <hr size="1" noshade="noshade" /> +<p class="logininfo"><?php echo $loggedinas ?></p> +<p class="homelink"><?php echo $homelink ?></p> -<?php if ($CFG->debug > 7) { - echo $performanceinfo; -?> - <hr size="1" noshade="noshade" /> - <p align="center"> - <a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a> | - <a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a> | - <a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a> - </p> -<?php } ?> - -</div> -</div> </body> </html> diff --git a/theme/standardwhite/gradient.jpg b/theme/standardwhite/gradient.jpg index dbb2126a3b038f7f91a5d44c7331662c67f34bc2..61d792c77036adebe070de83dc8749491882b6a1 100755 GIT binary patch literal 488 zcmex=<NpH&0WUXCHwH!~28I+MWcdGvLC~c%IlGd9k%5JQfx#0f^p1hgF(p4Kl_BK- zP=xXSZH5*G7A7VpW+oP9W)@avW@c7479e0_XJut$Wo74N=U@jSPEIavZf-749x&hs z0YNxm1gd9eW9Q}M<Q3-Q<r5YG$$$yC68wz+2N(o77y=kHm>C5bm;@P_1sVSzVF+Vj z1OcEk;ed^unFCb>BqhMW$ij@Gj*%%yEO4P{k|2sGNbUby3_L)!OoGgU4E7A)(_?2k z$d;utl-``ecs(tE9mrM6=~fVPoxrVhf^}jF(}_*Y)?2C=Grllge8IZ-0=N4D<JnrL z6LePVHf&n6jp@{;8{9yy)3>=3WS6I~XWnGIRpwAOcY<Z%T>+VL7k1f;jK@nHfE?Y| zbq-;F8rJ?~jQ+&5{Rywwx`~Y89u2FPID}qO(0VCg5_QSlLEBT7VXaCD)0T-BxPaW4 YkC6g0VJ_^V6B&=DI21+-*#Ex?07(RDP5=M^ literal 373 zcmex=<NpH&0WUXCHwH!~28I+MWcdGvLC~c%IlGd9k%5JQfx#Ro^p1hgF(p4Kl_BK- zP=xXSZH5*Gc2*DolI&dUZ0uY-ob2qJJbc{TJlx!Tf;?a#$R{8uC@8=uDk?56Dk?80 zCnv8A2aFsX9DKZd(n3Pga^fQ5a&QS^8UGJ32y!q4FlaC{3NkPWGBOJ?{y)MH40JX# zBhZxyz{t$P!N`az2K0phra~cMK|yqN4F7L2@BmF@5@Z%+uxEJ5&6vS-fwf_S#ttdQ q1wdr<f~_F~h<L6uJ&56MEC{~IQs(ex!Mqh^jvNR#z*zSGZvp@|A2<;J diff --git a/theme/standardwhite/gradients.css b/theme/standardwhite/gradients.css deleted file mode 100644 index 1f66d8f5c3f..00000000000 --- a/theme/standardwhite/gradients.css +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Adds all the nice finish to the standard theme - * - */ - -th.header, -td.header, -div.header { - background-image:url(gradient.jpg); - background-position:top; - background-repeat:repeat-x; -} - -.navbar { - background-image:url(gradient.jpg); - background-position:top; - background-repeat:repeat-x; -} - diff --git a/theme/standardwhite/header.html b/theme/standardwhite/header.html index b414cfa7250..13765be9534 100644 --- a/theme/standardwhite/header.html +++ b/theme/standardwhite/header.html @@ -1,45 +1,60 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html<?php echo $direction ?>> <head> - <?php echo $meta ?> - <meta name="keywords" content="moodle, <?php echo $title ?> " /> - <title><?php echo $title ?></title> - <link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> - <?php include("$CFG->javascript"); ?> +<?php echo $meta ?> +<title><?php echo $title ?></title> +<meta name="keywords" content="moodle, <?php echo $title ?> " /> +<link rel="stylesheet" type="text/css" href="<?php echo $styles ?>" /> +<link rel="shortcut icon" href="<?php echo "$CFG->wwwroot/theme/$CFG->theme" ?>/favicon.ico" /> +<?php include("$CFG->javascript"); ?> </head> -<body<?php - echo " $bodytags"; - if ($focus) { - echo " onload=\"setfocus()\""; - } - ?>> - -<div id="page"> +<body<?php + echo " $bodytags"; + if ($focus) { + echo " onload=setfocus()"; + } + echo " bgcolor=\"$THEME->body\">"; +?> + +<?php if ($home) { // This is what gets printed on the home page only ?> + + <table width="100%" cellpadding="10" cellspacing="0" border="0" class="headerhome"> + <tr> + <td valign="top" class="headerhomemain"><?php echo $heading?></td> + <td align="right" valign="top" class="headerhomemenu"><?php echo $menu ?></td> + </tr> + </table> + +<?php } else if ($heading) { // This is what gets printed on any other page with a heading ?> + + <table width="100%" cellpadding="0" cellspacing="0" border="0" class="header"> + <tr> + <td valign="top" class="headermain"><?php echo $heading?></td> + <td align="right" valign="top" class="headermenu"><?php echo $menu ?></td> + </tr> + </table> -<?php if ($home) { // This is what gets printed on the home page only -?> - <div id="header-home"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> -<?php } else if ($heading) { // This is what gets printed on any other page with a heading -?> - <div id="header"> - <div class="headermain"><?php echo $heading ?></div> - <div class="headermenu"><?php echo $menu ?></div> - </div> <?php } ?> - <div class="clearer">&nbsp;</div> + + <?php if ($navigation) { // This is the navigation table with breadcrumbs ?> - <table class="navbar"><tr><td> - <div class="breadcrumb"><?php print_navigation($navigation); ?></div> - <div class="navbutton"><?php echo $button; ?></div> - </td></tr></table> -<?php } else if ($heading) { // If no navigation, but a heading, then print a line -?> - <hr size="1" noshade="noshade" /> + + <table border="0" cellpadding="3" cellspacing="0" width="100%"> + <tr> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar"> + <font size="2"><b><?php print_navigation("$navigation"); ?></b></font> + </td> + <td bgcolor="<?php echo $THEME->cellheading?>" class="navbar" align="right" width="20" valign="top"><?php + echo $button; + ?></td> + </tr> + </table> + <img src="<?php echo $CFG->wwwroot?>/pix/spacer.gif" alt="" height="5" width="1" /><br /> + +<?php } else if ($heading) { // If no navigation, but a heading, then print a line ?> + + <hr size="1" noshade="noshade" /> + <?php } ?> - <div class="clearer">&nbsp;</div> - <!-- END OF HEADER --> - <div id="content"> + +<!-- END OF HEADER --> diff --git a/theme/standardwhite/styles.php b/theme/standardwhite/styles.php index d897beac9c4..0d88adb3a60 100644 --- a/theme/standardwhite/styles.php +++ b/theme/standardwhite/styles.php @@ -1,18 +1,741 @@ <?PHP /* $Id$ */ -/// Every theme should contain a copy of this script. It lets us -/// set up variables and so on before we include the raw CSS files. -/// The output of this script should be a completely standard CSS file. +/// We use PHP so we can do value substitutions into the styles -/// THERE SHOULD BE NO NEED TO MODIFY THIS FILE!! USE CONFIG.PHP INSTEAD. + if (!isset($themename)) { + $themename = NULL; + } + $nomoodlecookie = true; + require_once("../../config.php"); + $themeurl = style_sheet_setup(filemtime("styles.php"), 300, $themename); - $lifetime = 1800; // Seconds to cache this stylesheet - $nomoodlecookie = true; // Cookies prevent caching, so don't use them - require_once("../../config.php"); // Load up the Moodle libraries - $themename = basename(dirname(__FILE__)); // Name of the folder we are in - $forceconfig = optional_param('forceconfig', '', PARAM_FILE); // Get config from this theme +/// From here on it's nearly a normal stylesheet. +/// First are some CSS definitions for normal tags, +/// then custom tags follow. +/// +/// New classes always get added to the end of the file. +/// +/// Note that a group of standard colours are all +/// defined in config.php in this directory. The +/// reason for this is because Moodle uses the same +/// colours to provide oldstyle formatting for +/// browsers without CSS. +/// +/// You can hardcode colours in this file if you +/// don't care about this. - style_sheet_setup(filemtime('styles.php'), $lifetime, $themename, $forceconfig); - ?> + + +body, td, th, li { + font-family: "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; +} + +th { + font-weight: bold; + background-color: <?PHP echo $THEME->cellheading?>; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +a:link { + text-decoration: none; + color: blue; +} + +a:visited { + text-decoration: none; + color: blue; +} + +a:hover { + text-decoration: underline; + color: red; +} + +form { + margin-bottom: 0; +} + + + + + +.highlight { + background-color: <?PHP echo $THEME->highlight?>; +} + +.headingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.navbar { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltable { +} + +.generaltableheader { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.generaltablecell { +} + +.sideblock { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockheading { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); +} + +.sideblockmain { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblocklinks { +} + +.sideblocklatestnews { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.sideblockrecentactivity { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.outlineheadingblock { + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.forumpost { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.forumpostpicture { +} + +.forumpostside { + -moz-border-radius-bottomleft: 20px; +} + +.forumpostmessage { + -moz-border-radius-bottomright: 20px; +} + + +.weeklyoutline { +} + +.weeklyoutlineside { +} + +.weeklyoutlinesidehighlight { +} + +.weeklyoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.weeklyoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklyoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.weeklydatetext { + font-size: medium; + font-weight: bold; + color: <?PHP echo $THEME->cellheading2?>; +} + +.topicsoutline { +} + +.topicsoutlineside { +} + +.topicsoutlinesidehighlight { +} + +.topicsoutlinesidehidden { + background-color: <?PHP echo $THEME->hidden?>; +} + +.topicsoutlinecontent { + border-color: <?PHP echo $THEME->cellheading ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthighlight { + border-color: <?PHP echo $THEME->cellheading2 ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.topicsoutlinecontenthidden { + border-color: <?PHP echo $THEME->hidden ?>; + border-style: solid; + border-width: 1px; + border-left: 0px; + border-right: 0px; +} + +.siteinfo { +} + +.siteinfocontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; + padding: 10px; +} + + +.generalbox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.generalboxcontent { + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.noticebox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 3px; +} + +.noticeboxcontent { + text-align: center; +} + + +.feedbacktext { + color: <?PHP echo $THEME->cellheading2?>; +} + +a.dimmed:link { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:visited { + text-decoration: none; + color: <?PHP echo $THEME->hidden?>; +} + +a.dimmed:hover { + text-decoration: underline; + color: red; +} + +.dimmed_text { + color: #AAAAAA; +} + +.forumpostheader { +} + +.forumpostheadertopic { +} + +.forumpostheaderpicture { +} + +.forumpostheadername { + font-size: small; +} + +.forumpostheaderreplies { + font-size: small; +} + +.forumpostheaderdate { + font-size: small; +} + +.logininfo { + font-size: x-small; +} + +.homelink { + font-size: x-small; +} + +.teacheronly { + color: #990000; +} + +.header { +} + +.headermain { + font-size: large; + font-weight: bold; +} + +.headermenu { +} + +.headerhome { +} + +.headerhomemain { + font-size: x-large; + font-weight: bold; +} + +.headerhomemenu { +} + +.categorybox { +} + +.categoryboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.categoryname { + font-size: larger; + font-weight: bold; +} + +.categorynumber { + font-size: larger; + font-weight: bold; +} + +.coursename { +} + +.coursebox { +} + +.courseboxcontent { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 20px; +} + +.courseboxinfo { +} + +.courseboxsummary { +} + +a.autolink:link { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:visited { + text-decoration: none; + color: #000000; + background-color: <?PHP echo $THEME->autolink?>; +} + +a.autolink:hover { + text-decoration: underline; + color: red; +} + +.userinfobox { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; + margin-bottom: 5px; +} + +.userinfoboxside { + -moz-border-radius-bottomleft: 20px; +} + +.userinfoboxcontent { + -moz-border-radius-bottomright: 20px; +} + +.userinfoboxsummary { +} + +.userinfoboxlinkcontent { + -moz-border-radius-bottomright: 20px; +} + +.generaltab { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.generaltabselected { + -moz-border-radius-topleft: 15px; + -moz-border-radius-topright: 15px; +} + +.forumheaderlist { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; +} + +.smallinfo { +} + +.smallinfohead { + color: #555555; +} + +.tabledivider { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + border-left: 0px; + border-right: 0px; + border-top: 0px; +} + +.headingblockcontent { +} + +TABLE.calendarmini { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + font-size: .7em; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmonth { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +TABLE.calendarmini TBODY TD { + text-align: center; + vertical-align: center; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + -moz-border-radius: 4px; +} + +TABLE.calendarmonth TBODY TD { + width: 14%; + border-width: 2px; + border-color: <?PHP echo $THEME->cellcontent2?>; + border-style: solid; + vertical-align: top; +} + +.cal_event_global { + background-color: #2EBA0E; + border: 2px #2EBA0E solid !important; +} + +.cal_event_course { + background-color: #ff9966; + border: 2px #ff9966 solid !important; +} + +.cal_event_group { + background-color: #FBBB23; + border: 2px #FBBB23 solid !important; +} + +.cal_event_user { + background-color: #A1BECB; + border: 2px #A1BECB solid !important; +} + +.cal_duration_global { + border-top: 2px #2EBA0E solid !important; + border-bottom: 2px #2EBA0E solid !important; +} + +.cal_duration_course { + border-top: 2px #ff9966 solid !important; + border-bottom: 2px #ff9966 solid !important; +} + +.cal_duration_user { + border-top: 2px #A1BECB solid !important; + border-bottom: 2px #A1BECB solid !important; +} + +.cal_duration_group { + border-top: 2px #FBBB23 solid !important; + border-bottom: 2px #FBBB23 solid !important; +} + +.cal_weekend { + color: red; +} + +.cal_today { + border: 2px black solid !important; +} + +TABLE.calendarmonth TBODY TD TABLE { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmonth TBODY TD TABLE TD { + border: none; +} + +TABLE.calendarmonth TBODY TD DIV { + margin-top: 0px; + margin-left: 0px; + font-size: 0.75em; + line-height: 1.2em; +} + +TABLE.calendarmini THEAD TD { + font-size: .95em; + text-align: center; + vertical-align: center; +} + +TABLE.calendarmonth THEAD TD { + text-align: center; + vertical-align: center; + padding-bottom: 3px; + border-bottom: 2px <?PHP echo $THEME->borders?> solid; +} + +.sideblockmain .cal_event { + font-size: 0.8em; + font-weight: bold; +} + +.sideblockmain .cal_event_date { + font-size: 0.6em; +} + +.mycalendar { + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; +} + +.mycalendar .cal_event { + font-weight: bold; +} +.mycalendar .cal_event_date { + font-size: 0.8em; +} + +.mycalendar TABLE.cal_filters { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_filters THEAD TD { + border-bottom: 2px <?PHP echo $THEME->borders?> solid; + margin: 0px; + padding: 2px; +} + + +.mycalendar .cal_event_table { + width: 100%; + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + margin: 0px; + padding: 2px; + -moz-border-radius: 10px; +} + +.mycalendar .cal_event_table THEAD { + background-color: <?PHP echo $THEME->cellcontent?>; + text-align: center; + font-weight: bold; +} + +.sideblockmain HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.mycalendar HR { + height: 1px; + border: none; + border-top: 1px #999 solid; + margin-top: 4px; + margin-bottom: 4px; +} + +.calendarreferer { + font-weight: bold; +} + +TD.cal_event_description { + width: 80%; + border-left: 2px <?php echo $THEME->borders?> solid; + vertical-align: top; + padding: 5px; +} + +.cal_popup_fg { + background-color: <?php echo $THEME->cellcontent?>; +} + +.cal_popup_bg { + border-top: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-left: 2px <?php echo $THEME->cellcontent2 ?> solid; + border-right: 2px <?php echo $THEME->cellheading2 ?> solid; + border-bottom: 2px <?php echo $THEME->cellheading2 ?> solid; + background-image: url(<?PHP echo "$themeurl"?>/gradient.jpg); + padding: 0px; + margin: 0px; +} + +.cal_popup_caption { + font-size: 75%; + font-weight: bold; + font-family: sans-serif; +} + +.cal_popup_close { + font-size: 75%; + font-weight: bold; + font-family: Tahoma, Helvetica, sans-serif; + margin-right: 5px; +} + +.sideblock .cal_controls { + text-align: center; + font-size: 9px; +} + +A IMG { + border: none; +} + +TABLE.formtable TD { + padding: 9px; +} + +.eventfull { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius-bottomleft: 15px; + -moz-border-radius-bottomright: 15px; +} + +.eventfullheader { +} + +.eventfullpicture { + padding:8px; +} + +.eventfullside { + -moz-border-radius-bottomleft: 15px; +} + +.eventfullmessage { + -moz-border-radius-bottomright: 15px; +} + +#block_course_summary, #block_course_summary .sideblockmain { + -moz-border-radius: 20px; +} + +#block_course_summary .sideblockmain { + padding: 10px; +} + +.sitetopic { + border-width: 1px; + border-color: <?PHP echo $THEME->borders?>; + border-style: solid; + -moz-border-radius: 15px; +} + +.sitetopiccontent { + -moz-border-radius: 15px; +} + diff --git a/user/edit.html b/user/edit.html index dfebf4ac487..2b2f5c8af93 100644 --- a/user/edit.html +++ b/user/edit.html @@ -1,5 +1,5 @@ <?php - if (!isset($user->htmleditor)) { + if (!isset($user->htmleDITOr)) { $user->htmleditor = 1; } if (!isset($user->picture)) { @@ -8,101 +8,69 @@ if (empty($user->lang)) { $user->lang = $CFG->lang; } - if (!isset($user->theme)) { - $user->theme = ''; - } ?> -<form method="post" name="form" enctype="multipart/form-data" action="edit.php"> -<table class="formtable"> +<form method="post" enctype="multipart/form-data" action="edit.php"> +<table cellpadding=9 cellspacing=0 > <?php if (isadmin()) { $theadmin = get_admin(); $adminself = (($theadmin->id == $USER->id) and ($USER->id == $user->id)); - echo '<tr>'; - echo '<th>'.get_string('username').':</th>'; + echo "<tr valign=top>"; + echo "<td align=right><p>".get_string("username").":</td>"; if ($adminself || is_internal_auth($user->auth) ){ - echo "<td><input type=\"text\" name=\"username\" size=\"20\" alt=\"".get_string("username")."\" value=\""; + echo "<td><input type=\"text\" name=\"username\" size=20 value=\""; p($user->username); - echo "\" />"; + echo "\">"; if (isset($err["username"])) formerr($err["username"]); } else { echo "<td>"; p($user->username); echo "<input type=\"hidden\" name=\"username\" value=\""; p($user->username); - echo "\" />"; + echo "\">"; } echo "</td>"; - echo "</tr>\n"; + echo "</tr>"; - $modules = get_list_of_plugins("auth"); - foreach ($modules as $module) { - $auth_options[$module] = get_string("auth_$module"."title", "auth"); - } - if (!$adminself) { /// Main admin is ALWAYS default manual - echo '<tr>'; - echo '<th>'.get_string("chooseauthmethod","auth").'</th>' . "\n<td>"; - choose_from_menu ($auth_options, "auth", $user->auth); - echo "</td></tr>\n"; - } - - if ($adminself || is_internal_auth($user->auth) || (!empty($CFG->{'auth_'.$user->auth.'_stdchangepassword'}))) { - echo '<tr>'; - echo '<th>'.get_string('newpassword').':</th>'; - echo "<td><input type=\"text\" name=\"newpassword\" size=\"20\" alt=\"".get_string("newpassword")."\" value=\""; - if (isset($user->newpassword)) { - p($user->newpassword); - } - echo "\" />"; + if ($adminself || is_internal_auth($user->auth) ){ + echo "<tr valign=top>"; + echo "<td align=right><p>".get_string("newpassword").":</td>"; + echo "<td><input type=\"text\" name=\"newpassword\" size=20 value=\""; + if (isset($user->newpassword)) p($user->newpassword); + echo "\">"; if (isset($err["newpassword"])) { formerr($err["newpassword"]); } else if (empty($user->newpassword)) { echo " (".get_string("leavetokeep").")"; } echo "</td>"; - echo "</tr>\n"; - if (!$adminself && (!empty($CFG->{'auth_'.$user->auth.'_stdchangepassword'}) || $CFG->changepassword)){ - if (get_user_preferences('auth_forcepasswordchange', NULL, $user->id)) { - $checked = ' checked="checked" '; - } else { - $checked = ''; - } - echo '<tr>'; - echo '<th>'.get_string('forcepasswordchange').':</th>'; - echo '<td><input type="checkbox" name="forcepasswordchange" alt="'.get_string('forcepasswordchange').'" '.$checked.' /> '.get_string('forcepasswordchangehelp').'</td>'; - echo '</tr>'; - } - - echo '<tr><td colspan="2"><hr /></td></tr>'; + echo "</tr>"; + echo "<tr><td colspan=2><HR></td></tr>"; } } - ?> -<tr> - <th><?php print_string("firstname") ?>:</th> - <td> - <input type="text" name="firstname" size="30" alt="<?php print_string("firstname") ?>" maxlength="20" value="<?php p($user->firstname) ?>" /> +<tr valign=top> + <td align=right><p><?php print_string("firstname") ?>:</td> + <td><input type="text" name="firstname" size="30" maxlength="20" value="<?php p($user->firstname) ?>"> <?php if (isset($err["firstname"])) formerr($err["firstname"]); ?> </td> </tr> -<tr> - <th><?php print_string("lastname") ?>:</th> - <td> - <input type="text" name="lastname" size="30" alt="<?php print_string("lastname") ?>" maxlength="20" value="<?php p($user->lastname) ?>" /> +<tr valign=top> + <td align=right><p><?php print_string("lastname") ?>:</td> + <td><input type="text" name="lastname" size="30" maxlength="20" value="<?php p($user->lastname) ?>"> <?php if (isset($err["lastname"])) formerr($err["lastname"]); ?> </td> </tr> -<tr> - <th><?php print_string("email") ?>:</th> - <td> - <input type="text" name="email" size="30" alt="<?php print_string("email") ?>" maxlength="100" value="<?php p($user->email) ?>" /> +<tr valign=top> + <td align=right><p><?php print_string("email") ?>:</td> + <td><input type="text" name="email" size="30" maxlength="100" value="<?php p($user->email) ?>"> <?php if (isset($err["email"])) formerr($err["email"]); ?> </td> </tr> -<tr> - <th><?php print_string("emaildisplay") ?>:</th> +<tr valign=top> + <td align=right><p><?php print_string("emaildisplay") ?>:</td> <td><?php unset($choices); $choices["0"] = get_string("emaildisplayno"); @@ -111,8 +79,8 @@ if (isadmin()) { choose_from_menu ($choices, "maildisplay", $user->maildisplay, "") ?> </td> </tr> -<tr> - <th><?php print_string("emailactive") ?>:</th> +<tr valign=top> + <td align=right><p><?php print_string("emailactive") ?>:</td> <td><?php unset($choices); $choices["0"] = get_string("emailenable"); @@ -120,8 +88,8 @@ if (isadmin()) { choose_from_menu ($choices, "emailstop", $user->emailstop, "") ?> </td> </tr> -<tr> - <th><?php print_string("emailformat") ?>:</th> +<tr valign=top> + <td align=right><p><?php print_string("emailformat") ?>:</td> <td><?php unset($choices); $choices["0"] = get_string("textformat"); @@ -129,8 +97,8 @@ if (isadmin()) { choose_from_menu ($choices, "mailformat", $user->mailformat, "") ?> </td> </tr> -<tr> - <th><?php print_string('emaildigest') ?>:</th> +<tr valign=top> + <td align=right><p><?php print_string('emaildigest') ?>:</td> <td><?php unset($choices); $choices['0'] = get_string('emaildigestoff'); @@ -139,8 +107,8 @@ if (isadmin()) { choose_from_menu ($choices, 'maildigest', $user->maildigest, "") ?> </td> </tr> -<tr> - <th><?php print_string("autosubscribe") ?>:</th> +<tr valign=top> + <td align=right><p><?php print_string("autosubscribe") ?>:</td> <td><?php unset($choices); $choices["1"] = get_string("autosubscribeyes"); @@ -149,8 +117,8 @@ if (isadmin()) { </td> </tr> <?php if ($CFG->htmleditor) { ?> -<tr> - <th><?php print_string("textediting") ?>:</th> +<tr valign=top> + <td align=right><p><?php print_string("textediting") ?>:</td> <td><?php unset($choices); $choices["0"] = get_string("texteditor"); @@ -159,42 +127,26 @@ if (isadmin()) { </td> </tr> <?php } ?> -<tr> - <th><?php print_string("city") ?>:</th> - <td> - <input type="text" name="city" size="25" alt="<?php print_string("city") ?>" maxlength="20" value="<?php p($user->city) ?>" /> +<tr valign=top> + <td align=right><p><?php print_string("city") ?>:</td> + <td><input type="text" name="city" size="25" maxlength="20" value="<?php p($user->city) ?>"> <?php if (isset($err["city"])) formerr($err["city"]); ?> </td> </tr> -<tr> - <th><?php print_string("country") ?>:</th> - <td> - <?php +<tr valign=top> + <td align=right><p><?php print_string("country") ?>:</td> + <td><?php if (!$user->country and $CFG->country) { $user->country = $CFG->country; } - choose_from_menu(get_list_of_countries(), "country", $user->country, get_string("selectacountry")."...", "", ""); - ?> + choose_from_menu (get_list_of_countries(), "country", $user->country, get_string("selectacountry")."...", "", "") ?> <?php if (isset($err["country"])) formerr($err["country"]); ?> </td> </tr> -<tr> - <th><?php print_string('timezone')?>:</th> - <td> - <?php - $timezones = get_list_of_timezones(); - if ($CFG->forcetimezone != 99) { - choose_from_menu($timezones, 'timezone', $CFG->forcetimezone, get_string('serverlocaltime'), '', '99', false, true); - } else { - choose_from_menu($timezones, 'timezone', $user->timezone, get_string('serverlocaltime'), '', '99'); - } - ?> - </td> -</tr> -<tr> - <th><?php print_string("preferredlanguage") ?>:</th> +<tr valign=top> + <td align=right><p><?php print_string("preferredlanguage") ?>:</td> <td><?php if ($languages = get_list_of_languages()) { if (!$user->lang) { $user->lang = $CFG->lang; @@ -205,37 +157,44 @@ if (isadmin()) { ?> </td> </tr> -<?php if (!empty($CFG->allowuserthemes)) { ?> -<tr> - <th><?php print_string("preferredtheme") ?>:</th> - <td><?php - $themes[''] = get_string('default'); - $themes += get_list_of_themes(); - choose_from_menu($themes, 'theme', $user->theme, "", "", ""); - if (isset($err["theme"])) formerr($err["theme"]); - ?> - </td> -</tr> -<?php } ?> -<tr> - <th><?php print_string("userdescription") ?>:</th> - <td><?php - if (isset($err["description"])) { - formerr($err["description"]); - echo "<br />"; - } - print_textarea(false, 10, 50, 50, 10, 'description', "$user->description"); - helpbutton("text", get_string("helptext")); +<tr valign=top> + <td align=right><p><?php print_string("timezone") ?>:</td> + <td><?php + if (abs($user->timezone) > 13) { + $user->timezone = 99; + } + $timenow = time(); + + for ($tz = -26; $tz <= 26; $tz++) { + $zone = (float)$tz/2.0; + $usertime = $timenow + ($tz * 1800); + if ($tz == 0) { + $timezones["$zone"] = gmstrftime("%a, %I:%M %p", $usertime)." (GMT)"; + } else if ($tz < 0) { + $timezones["$zone"] = gmstrftime("%a, %I:%M %p", $usertime)." (GMT$zone)"; + } else { + $timezones["$zone"] = gmstrftime("%a, %I:%M %p", $usertime)." (GMT+$zone)"; + } + } + + choose_from_menu ($timezones, "timezone", $user->timezone, get_string("serverlocaltime"), "", "99"); + + echo "(".get_string("currentlocaltime").")"; ?> </td> </tr> -<tr> - <td colspan="2" style="text-align: center;"><input type="submit" value="<?php print_string("updatemyprofile") ?>" /></td> +<tr valign=top> + <td align=right><p><?php print_string("userdescription") ?>:</td> + <td><?php if (isset($err["description"])) { + formerr($err["description"]); + echo "<br />"; + } ?> + <textarea name=description cols=50 rows=10 wrap=virtual><?php p($user->description) ?></textarea> + <?php helpbutton("text", get_string("helptext")) ?> + </td> </tr> - - <tr> - <td colspan="2" align="center"> <br /><b><?php print_string("followingoptional") ?>:</b></td> + <td colspan=2 align=center><br /><b><?php print_string("followingoptional") ?>:</b></td> </tr> @@ -243,32 +202,31 @@ if (isadmin()) { $maxbytes = get_max_upload_file_size($CFG->maxbytes, $course->maxbytes); if (!empty($CFG->gdversion) and $maxbytes and empty($CFG->disableuserimages)) { ?> -<tr> - <th><?php print_string("currentpicture") ?>:</th> +<tr valign=top> + <td align=right><p><?php print_string("currentpicture") ?>:</td> <td> <?php print_user_picture($user->id, $course->id, $user->picture, false, false, false); if ($user->picture) { - echo '&nbsp;&nbsp;<input type="checkbox" name="deletepicture" alt="'.get_string("delete").'" value="1" />'; + echo '&nbsp;&nbsp;<input type="checkbox" name="deletepicture" value="1">'; print_string("delete"); } ?> </td> </tr> -<tr> - <th><?php print_string("newpicture") ?>:</th> +<tr valign=top> + <td align=right><p><?php print_string("newpicture") ?>:</td> <td> - <?php - require_once($CFG->dirroot.'/lib/uploadlib.php'); - upload_print_form_fragment(1,array('imagefile'),null,false,null,0,0,false); - helpbutton("picture", get_string("helppicture")); + <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $maxbytes ?>"> + <input type="file" name="imagefile" size=40> + <?php helpbutton("picture", get_string("helppicture")); print_string("maxsize", "", display_size($maxbytes)); if (isset($err["imagefile"])) formerr($err["imagefile"]); ?> </td> </tr> <?php } else if (empty($CFG->gdversion) and isadmin()) { ?> -<tr> - <th><?php print_string("newpicture") ?>:</th> +<tr valign=top> + <td align=right><p><?php print_string("newpicture") ?>:</td> <td> <?php echo "<a href=\"$CFG->wwwroot/$CFG->admin/config.php\">"; @@ -279,87 +237,58 @@ if (isadmin()) { </tr> <?php } ?> -<tr> - <th><?php print_string("webpage") ?>:</th> - <td><input type="text" name="url" size="50" alt="<?php print_string("webpage") ?>" maxlength="255" value="<?php p($user->url) ?>" /> +<tr valign=top> + <td align=right><p><?php print_string("webpage") ?>:</td> + <td><input type="text" name="url" size="50" maxlength="255" value="<?php p($user->url) ?>"> <?php if (isset($err["url"])) formerr($err["url"]); ?> </td> </tr> -<tr> - <th><?php print_string("icqnumber") ?>:</th> - <td><input type="text" name="icq" size="25" alt="<?php print_string("icqnumber") ?>" maxlength="15" value="<?php p($user->icq) ?>" /> +<tr valign=top> + <td align=right><p><?php print_string("icqnumber") ?>:</td> + <td><input type="text" name="icq" size="25" maxlength="15" value="<?php p($user->icq) ?>"> <?php if (isset($err["icq"])) formerr($err["icq"]); ?> </td> </tr> -<tr> - <th><?php print_string("skypeid") ?>:</th> - <td><input type="text" name="skype" size="25" alt="<?php print_string("skypeid") ?>" maxlength="50" value="<?php p($user->skype) ?>" /> - <?php if (isset($err["skype"])) formerr($err["skype"]); ?> - </td> -</tr> -<tr> - <th><?php print_string("aimid") ?>:</th> - <td><input type="text" name="aim" size="25" alt="<?php print_string("aimid") ?>" maxlength="50" value="<?php p($user->aim) ?>" /> - <?php if (isset($err["aim"])) formerr($err["aim"]); ?> - </td> -</tr> -<tr> - <th><?php print_string("yahooid") ?>:</th> - <td><input type="text" name="yahoo" size="25" alt="<?php print_string("yahooid") ?>" maxlength="50" value="<?php p($user->yahoo) ?>" /> - <?php if (isset($err["yahoo"])) formerr($err["yahoo"]); ?> - </td> -</tr> -<tr> - <th><?php print_string("msnid") ?>:</th> - <td><input type="text" name="msn" size="25" alt="<?php print_string("msnid") ?>" maxlength="50" value="<?php p($user->msn) ?>" /> - <?php if (isset($err["msn"])) formerr($err["msn"]); ?> - </td> -</tr> -<tr> - <th><?php print_string("idnumber") ?>:</th> - <td> - <input type="text" name="idnumber" size="25" alt="<?php print_string("idnumber") ?>" maxlength="12" value="<?php p($user->idnumber) ?>" /> <?php p($teacheronly) ?> +<tr valign=top> + <td align=right><p><?php print_string("idnumber") ?>:</td> + <td><input type="text" name="idnumber" size="25" maxlength="12" value="<?php p($user->idnumber) ?>"> <?php p($teacheronly) ?> <?php if (isset($err["idnumber"])) formerr($err["idnumber"]); ?> </td> </tr> <?php if (isadmin()) { ?> -<tr> - <th><?php print_string("institution") ?>:</th> - <td><input type="text" name="institution" size="25" alt="<?php print_string("institution") ?>" maxlength="40" value="<?php p($user->institution) ?>" /> <?php p($teacheronly) ?> +<tr valign=top> + <td align=right><p><?php print_string("institution") ?>:</td> + <td><input type="text" name="institution" size="25" maxlength="40" value="<?php p($user->institution) ?>"> <?php p($teacheronly) ?> </td> </tr> -<tr> - <th><?php print_string("department") ?>:</th> - <td> - <input type="text" name="department" size="25" alt="<?php print_string("department") ?>" maxlength="30" value="<?php p($user->department) ?>" /> <?php p($teacheronly) ?> +<tr valign=top> + <td align=right><p><?php print_string("department") ?>:</td> + <td><input type="text" name="department" size="25" maxlength="30" value="<?php p($user->department) ?>"> <?php p($teacheronly) ?> </td> </tr> <?php } ?> -<tr> - <th><?php print_string("phone") ?> 1:</th> - <td> - <input type="text" name="phone1" size="25" alt="<?php print_string("phone") ?>" maxlength="20" value="<?php p($user->phone1) ?>" /> <?php p($teacheronly) ?> +<tr valign=top> + <td align=right><p><?php print_string("phone") ?> 1:</td> + <td><input type="text" name="phone1" size="25" maxlength="20" value="<?php p($user->phone1) ?>"> <?php p($teacheronly) ?> <?php if (isset($err["phone1"])) formerr($err["phone1"]); ?> </td> </tr> -<tr> - <th><?php print_string("phone") ?> 2:</th> - <td> - <input type="text" name="phone2" size="25" alt="<?php print_string("phone") ?>" maxlength="20" value="<?php p($user->phone2) ?>" /> <?php p($teacheronly) ?> +<tr valign=top> + <td align=right><p><?php print_string("phone") ?> 2:</td> + <td><input type="text" name="phone2" size="25" maxlength="20" value="<?php p($user->phone2) ?>"> <?php p($teacheronly) ?> <?php if (isset($err["phone2"])) formerr($err["phone2"]); ?> </td> </tr> -<tr> - <th><?php print_string("address") ?>:</th> - <td> - <input type="text" name="address" size="25" alt="<?php print_string("address") ?>" maxlength="70" value="<?php p($user->address) ?>" /> <?php p($teacheronly) ?> +<tr valign=top> + <td align=right><p><?php print_string("address") ?>:</td> + <td><input type="text" name="address" size="25" maxlength="70" value="<?php p($user->address) ?>"> <?php p($teacheronly) ?> <?php if (isset($err["address"])) formerr($err["address"]); ?> </td> </tr> <tr> - <td colspan="2" style="text-align: center;"><input type="submit" value="<?php print_string("updatemyprofile") ?>" /></td> -</tr> + <td></td> + <td align=right><input type="submit" value="<?php print_string("updatemyprofile") ?>"></td> </table> -<input type="hidden" name="course" value="<?php p($course->id) ?>" /> -<input type="hidden" name="id" value="<?php p($user->id) ?>" /> +<input type="hidden" name="course" value="<?php p($course->id) ?>"> +<input type="hidden" name="id" value="<?php p($user->id) ?>"> </form> diff --git a/user/edit.php b/user/edit.php index 191725f4350..d58f4ed8ab1 100644 --- a/user/edit.php +++ b/user/edit.php @@ -1,15 +1,10 @@ -<?php // $Id$ +<?PHP // $Id$ require_once("../config.php"); require_once("$CFG->libdir/gdlib.php"); - $id = optional_param('id', 0, PARAM_INT); // user id - $course = optional_param('course', SITEID, PARAM_INT); // course id (defaults to Site) - - if (empty($id)) { // See your own profile by default - require_login(); - $id = $USER->id; - } + require_variable($id); // user id + require_variable($course); // course id if (! $user = get_record("user", "id", $id)) { error("User ID was incorrect"); @@ -20,13 +15,13 @@ } if ($user->confirmed and user_not_fully_set_up($user)) { - // Special case which can only occur when a new account + // Special case which can only occur when a new account // has just been created by EXTERNAL authentication // This is the only page in Moodle that has the exception // so that users can set up their accounts $newaccount = true; - if (empty($USER->id)) { + if (empty($USER)) { error("Sessions don't seem to be working on this server!"); } @@ -35,16 +30,8 @@ require_login($course->id); } - if ($USER->id <> $user->id) { // Current user editing someone else's profile - if (isadmin()) { // Current user is an admin - if ($mainadmin = get_admin()) { - if ($user->id == $mainadmin->id) { // Can't edit primary admin - print_error('adminprimarynoedit'); - } - } - } else { - print_error('onlyeditown'); - } + if ($USER->id <> $user->id and !isadmin()) { + error("You can only edit your own information"); } if (isguest()) { @@ -56,75 +43,32 @@ } - // load the relevant auth libraries - if ($user->auth) { - $auth = $user->auth; - if (!file_exists("$CFG->dirroot/auth/$auth/lib.php")) { - $auth = "manual"; // Can't find auth module, default to internal - } - require_once("$CFG->dirroot/auth/$auth/lib.php"); - } - - /// If data submitted, then process and store. if ($usernew = data_submitted()) { - if (($USER->id <> $usernew->id) && !isadmin()) { - error("You can only edit your own information"); - } - if (isset($USER->username)) { check_for_restricted_user($USER->username, "$CFG->wwwroot/course/view.php?id=$course->id"); } - // data cleanup - // username is validated in find_form_errors - $usernew->country = clean_param($usernew->country, PARAM_ALPHA); - $usernew->lang = clean_param($usernew->lang, PARAM_FILE); - $usernew->url = clean_param($usernew->url, PARAM_URL); - $usernew->icq = clean_param($usernew->icq, PARAM_INT); - if (!$usernew->icq) { - $usernew->icq = ''; - } - $usernew->skype = clean_param($usernew->skype, PARAM_CLEAN); - $usernew->yahoo = clean_param($usernew->yahoo, PARAM_CLEAN); - $usernew->aim = clean_param($usernew->aim, PARAM_CLEAN); - $usernew->msn = clean_param($usernew->msn, PARAM_CLEAN); - - $usernew->maildisplay = clean_param($usernew->maildisplay, PARAM_INT); - $usernew->mailformat = clean_param($usernew->mailformat, PARAM_INT); - $usernew->maildigest = clean_param($usernew->maildigest, PARAM_INT); - $usernew->autosubscribe = clean_param($usernew->autosubscribe, PARAM_INT); - $usernew->htmleditor = clean_param($usernew->htmleditor, PARAM_INT); - $usernew->emailstop = clean_param($usernew->emailstop, PARAM_INT); - - if (isset($usernew->timezone)) { - if ($CFG->forcetimezone != 99) { // Don't allow changing this in any way - unset($usernew->timezone); - } else { // Clean up the data a bit, just in case of injections - $usernew->timezone = str_replace(';', '', $usernew->timezone); - $usernew->timezone = str_replace('\'', '', $usernew->timezone); - } - } - foreach ($usernew as $key => $data) { - $usernew->$key = addslashes(clean_text(stripslashes(trim($usernew->$key)), FORMAT_MOODLE)); + $usernew->$key = clean_text($usernew->$key, FORMAT_MOODLE); } - $usernew->firstname = strip_tags($usernew->firstname); - $usernew->lastname = strip_tags($usernew->lastname); + $usernew->firstname = trim(strip_tags($usernew->firstname)); + $usernew->lastname = trim(strip_tags($usernew->lastname)); if (isset($usernew->username)) { - $usernew->username = moodle_strtolower($usernew->username); + $usernew->username = trim(moodle_strtolower($usernew->username)); } + if (empty($_FILES['imagefile'])) { + $_FILES['imagefile'] = NULL; // To avoid using uninitialised variable later + } - require_once($CFG->dirroot.'/lib/uploadlib.php'); - $um = new upload_manager('imagefile',false,false,null,false,0,true,true); - - if (find_form_errors($user, $usernew, $err, $um)) { - if (empty($err['imagefile']) && $usernew->picture = save_profile_image($user->id, $um,'users')) { + if (find_form_errors($user, $usernew, $err)) { + if ($filename = valid_uploaded_file($_FILES['imagefile'])) { + $usernew->picture = save_profile_image($user->id, $filename); set_field('user', 'picture', $usernew->picture, 'id', $user->id); /// Note picture in DB } else { if (!empty($usernew->deletepicture)) { @@ -133,13 +77,14 @@ } } - $usernew->auth = $user->auth; $user = $usernew; } else { $timenow = time(); - - if (!$usernew->picture = save_profile_image($user->id,$um,'users')) { + + if ($filename = valid_uploaded_file($_FILES['imagefile'])) { + $usernew->picture = save_profile_image($user->id, $filename); + } else { if (!empty($usernew->deletepicture)) { set_field('user', 'picture', 0, 'id', $user->id); /// Delete picture $usernew->picture = 0; @@ -147,29 +92,12 @@ $usernew->picture = $user->picture; } } - + $usernew->timemodified = time(); if (isadmin()) { if (!empty($usernew->newpassword)) { $usernew->password = md5($usernew->newpassword); - // update external passwords - if (!empty($CFG->{'auth_'. $user->auth.'_stdchangepassword'})) { - if (function_exists('auth_user_update_password')){ - if (!auth_user_update_password($user->username, $usernew->newpassword)){ - error('Failed to update password on external auth: ' . $user->auth . - '. See the server logs for more details.'); - } - } else { - error('Your external authentication module is misconfigued!'); - } - } - } - // store forcepasswordchange in user's preferences - if (!empty($usernew->forcepasswordchange)){ - set_user_preference('auth_forcepasswordchange', 1, $user->id); - } else { - unset_user_preference('auth_forcepasswordchange', $user->id); } } else { if (isset($usernew->newpassword)) { @@ -181,16 +109,6 @@ } if (update_record("user", $usernew)) { - if (function_exists("auth_user_update")){ - // pass a true $userold here - auth_user_update($userold, $usernew); - }; - - if ($userold->email != $usernew->email) { - set_bounce_count($usernew,true); - set_send_count($usernew,true); - } - add_to_log($course->id, "user", "update", "view.php?id=$user->id&course=$course->id", ""); if ($user->id == $USER->id) { @@ -212,17 +130,13 @@ } } } - + /// Otherwise fill and print the form. $streditmyprofile = get_string("editmyprofile"); $strparticipants = get_string("participants"); $strnewuser = get_string("newuser"); - if (over_bounce_threshold($user) && empty($err['email'])) { - $err['email'] = get_string('toomanybounces'); - } - if (($user->firstname and $user->lastname) or $newaccount) { if ($newaccount) { $userfullname = $strnewuser; @@ -231,16 +145,16 @@ } if ($course->category) { print_header("$course->shortname: $streditmyprofile", "$course->fullname: $streditmyprofile", - "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> - -> <a href=\"index.php?id=$course->id\">$strparticipants</a> - -> <a href=\"view.php?id=$user->id&amp;course=$course->id\">$userfullname</a> + "<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> + -> <A HREF=\"index.php?id=$course->id\">$strparticipants</A> + -> <A HREF=\"view.php?id=$user->id&course=$course->id\">$userfullname</A> -> $streditmyprofile", ""); } else { if (isset($USER->newadminuser)) { print_header(); } else { print_header("$course->shortname: $streditmyprofile", "$course->fullname", - "<a href=\"view.php?id=$user->id&amp;course=$course->id\">$userfullname</a> + "<A HREF=\"view.php?id=$user->id&course=$course->id\">$userfullname</A> -> $streditmyprofile", ""); } } @@ -254,17 +168,6 @@ "<a href=\"$CFG->wwwroot/$CFG->admin/users.php\">$strusers</a> -> $straddnewuser", ""); } - -/// Print tabs at top -/// This same call is made in: -/// /user/view.php -/// /user/edit.php -/// /course/user.php - $currenttab = 'editprofile'; - include('tabs.php'); - - - $teacher = strtolower($course->teacher); if (!isadmin()) { $teacheronly = "(".get_string("teacheronly", "", $teacher).")"; @@ -272,38 +175,20 @@ $teacheronly = ""; } + print_heading( get_string("userprofilefor", "", "$userfullname") ); + if (isset($USER->newadminuser)) { - print_simple_box(get_string("configintroadmin", 'admin'), "center", "50%"); + print_simple_box(get_string("configintroadmin"), "center", "50%"); echo "<br />"; } - print_simple_box_start("center"); - + print_simple_box_start("center", "", "$THEME->cellheading"); if (!empty($err)) { - echo "<center>"; - notify(get_string("someerrorswerefound")); - echo "</center>"; + echo "<CENTER>"; + notify(get_string("someerrorswerefound")); + echo "</CENTER>"; } - include("edit.html"); - - if (!isadmin()) { /// Lock all the locked fields using Javascript - $fields = get_user_fieldnames(); - - echo '<script type="text/javascript">'."\n"; - echo '<!--'."\n"; - - foreach ($fields as $field) { - $configvariable = 'auth_user_'.$field.'_editlock'; - if (!empty($CFG->$configvariable)) { - echo "eval('document.form.$field.disabled=true');\n"; - } - } - - echo '-->'."\n"; - echo '</script>'."\n"; - } - print_simple_box_end(); if (!isset($USER->newadminuser)) { @@ -316,7 +201,7 @@ /// FUNCTIONS //////////////////// -function find_form_errors(&$user, &$usernew, &$err, &$um) { +function find_form_errors(&$user, &$usernew, &$err) { global $CFG; if (isadmin()) { @@ -324,7 +209,7 @@ function find_form_errors(&$user, &$usernew, &$err, &$um) { $err["username"] = get_string("missingusername"); } else if (record_exists("user", "username", $usernew->username) and $user->username == "changeme") { - $err["username"] = get_string("usernameexists"); + $err["username"] = get_string("usernameexists"); } else { if (empty($CFG->extendedusernamechars)) { @@ -346,9 +231,6 @@ function find_form_errors(&$user, &$usernew, &$err, &$um) { if (empty($usernew->email)) $err["email"] = get_string("missingemail"); - if (over_bounce_threshold($user) && $user->email == $usernew->email) - $err['email'] = get_string('toomanybounces'); - if (empty($usernew->description) and !isadmin()) $err["description"] = get_string("missingdescription"); @@ -364,38 +246,15 @@ function find_form_errors(&$user, &$usernew, &$err, &$um) { if (empty($usernew->country)) $err["country"] = get_string("missingcountry"); - if (! validate_email($usernew->email)) { + if (! validate_email($usernew->email)) $err["email"] = get_string("invalidemail"); - } else if ($otheruser = get_record("user", "email", $usernew->email)) { + else if ($otheruser = get_record("user", "email", $usernew->email)) { if ($otheruser->id <> $user->id) { $err["email"] = get_string("emailexists"); } } - if (empty($err["email"]) and !isadmin()) { - if ($error = email_is_not_allowed($usernew->email)) { - $err["email"] = $error; - } - } - - if (!$um->preprocess_files()) { - $err['imagefile'] = $um->notify; - } - - if (!isadmin()) { /// Make sure that locked fields are not being edited - $fields = get_user_fieldnames(); - - foreach ($fields as $field) { - $configvariable = 'auth_user_'.$field.'_editlock'; - if (!empty($CFG->$configvariable)) { - if ($user->$field !== $usernew->$field) { - $err[$field] = get_string("editlock"); - } - } - } - } - $user->email = $usernew->email; return count($err); diff --git a/user/index.php b/user/index.php index 9706b6f3e6f..037e3b2dedc 100644 --- a/user/index.php +++ b/user/index.php @@ -14,8 +14,6 @@ optional_variable($lastinitial, ""); // only show students with this last initial optional_variable($firstinitial, ""); // only show students with this first initial optional_variable($perpage, "20"); // how many per page - optional_variable($group, "-1"); // Group to show - $mode = optional_param('mode', NULL); // '0' for less details, '1' for more if (! $course = get_record("course", "id", $id)) { @@ -24,15 +22,6 @@ require_login($course->id); - if (!$course->category) { - if (!$CFG->showsiteparticipantslist and !isteacher(SITEID)) { - notice(get_string('sitepartlist0')); - } - if ($CFG->showsiteparticipantslist < 2 and !isteacherinanycourse()) { - notice(get_string('sitepartlist1')); - } - } - add_to_log($course->id, "user", "view all", "index.php?id=$course->id", ""); $isteacher = isteacher($course->id); @@ -44,129 +33,44 @@ $participantslink = "<a href=\"index.php?id=$course->id\">".get_string("participants")."</a>"; } - if ($mode !== NULL) { - $SESSION->userindexmode = $fullmode = ($mode == 1); - } else if (isset($SESSION->userindexmode)) { - $fullmode = $SESSION->userindexmode; - } else { - $fullmode = false; - } - - - -/// Check to see if groups are being used in this forum -/// and if so, set $currentgroup to reflect the current group - - $changegroup = isset($_GET['group']) ? $_GET['group'] : -1; // Group change requested? - $groupmode = groupmode($course); // Groups are being used - $currentgroup = get_and_set_current_group($course, $groupmode, $changegroup); - - - $isseparategroups = ($course->groupmode == SEPARATEGROUPS and $course->groupmodeforce and + $isseparategroups = ($course->groupmode == SEPARATEGROUPS and $course->groupmodeforce and !isteacheredit($course->id)); - if ($isseparategroups and (!$currentgroup) ) { //XXX - print_heading(get_string("notingroup", "forum")); - print_footer($course); - exit; - } - - if (!$currentgroup) { // To make some other functions work better later - $currentgroup = NULL; - } - - -/// Print headers + $currentgroup = $isseparategroups ? get_current_group($course->id) : NULL; if ($course->category) { print_header("$course->shortname: ".get_string("participants"), "$course->fullname", - "<a href=\"../course/view.php?id=$course->id\">$course->shortname</a> -> ". + "<A HREF=../course/view.php?id=$course->id>$course->shortname</A> -> ". "$participantslink", "", "", true, "&nbsp;", navmenu($course)); } else { - print_header("$course->shortname: ".get_string("participants"), "$course->fullname", + print_header("$course->shortname: ".get_string("participants"), "$course->fullname", "$participantslink", "", "", true, "&nbsp;", navmenu($course)); } -/// Print settings and things in a table across the top - - echo '<table width="100%" border="0" cellpadding="3" cellspacing="0"><tr valign="top">'; - - if ($groupmode == VISIBLEGROUPS or ($groupmode and isteacheredit($course->id))) { - if ($groups = get_records_menu("groups", "courseid", $course->id, "name ASC", "id,name")) { - echo '<td class="left">'; - print_group_menu($groups, $groupmode, $currentgroup, "index.php?id=$course->id"); - echo '</td>'; - } - } - - echo '<td class="right" align="right">'; - echo get_string('userlist').': '; - $formatmenu = array( '0' => get_string('detailedless'), - '1' => get_string('detailedmore')); - echo popup_form("index.php?id=$id&amp;sort=$sort&amp;dir=$dir&amp;perpage=$perpage&amp;lastinitial=$lastinitial&amp;mode=", $formatmenu, 'formatmenu', $fullmode, '', '', '', true); - echo '</td></tr></table>'; - - if ($currentgroup and (!$isseparategroups or isteacheredit($course->id))) { /// Display info about the group - if ($group = get_record('groups', 'id', $currentgroup)) { - if (!empty($group->description) or (!empty($group->picture) and empty($group->hidepicture))) { - echo '<table class="groupinfobox"><tr><td class="left side picture">'; - print_group_picture($group, $course->id, true, false, false); - echo '</td><td class="content">'; - echo '<h3>'.$group->name; - echo '&nbsp;<a title="'.get_string('editgroupprofile').'" href="../course/groups.php?id='.$course->id.'&amp;group='.$group->id.'">'; - echo '<img src="'.$CFG->pixpath.'/t/edit.gif" alt="" border="0">'; - echo '</a>'; - echo '</h3>'; - echo format_text($group->description); - echo '</td></tr></table>'; - } - } - } - - $exceptions = ''; // This will be a list of userids that are shown as teachers and thus // do not have to be shown as users as well. Only relevant on site course. if ($showteachers) { if ($teachers = get_course_teachers($course->id)) { - echo "<h2 align=\"center\">$course->teachers"; - if (isadmin() or ($course->category and (iscreator() or (isteacheredit($course->id) and !empty($CFG->teacherassignteachers))))) { - echo ' <a href="../course/teacher.php?id='.$course->id.'">'; - echo '<img src="'.$CFG->pixpath.'/i/edit.gif" height="16" width="16" alt="" /></a>'; - } - echo '</h2>'; - - foreach ($teachers as $key => $teacher) { + echo "<h2 align=\"center\">$course->teachers</h2>"; + foreach ($teachers as $teacher) { if ($isseparategroups) { - if ($teacher->editall or ismember($currentgroup, $teacher->id) and ($teacher->authority > 0)) { - continue; - } - } else if ($currentgroup) { // Displaying a group by choice - if (ismember($currentgroup, $teacher->id) and ($teacher->authority > 0)) { - continue; + if ($teacher->editall or ismember($currentgroup, $teacher->id)) { + print_user($teacher, $course); + $exceptions .= "$teacher->id,"; } } else if ($teacher->authority > 0) { // Don't print teachers with no authority - continue; - } - unset($teachers[$key]); - } - - $exceptions .= implode(',', array_keys($teachers)); - if ($fullmode) { - foreach ($teachers as $key => $teacher) { print_user($teacher, $course); + $exceptions .= "$teacher->id,"; } - } else { - print_user_table($teachers, $isteacher); } } } - $guest = get_guest(); $exceptions .= $guest->id; - - if ($course->id == SITEID) { // Show all site users (even unconfirmed) - $students = get_users(true, '', true, $exceptions, $sort.' '.$dir, - $firstinitial, $lastinitial, $page*$perpage, $perpage); + + $site = get_site(); + if ($course->id == $site->id) { // Show all site users (even unconfirmed) + $students = get_users(true, '', true, $exceptions, $sort.' '.$dir, $firstinitial, $lastinitial, $page*$perpage, $perpage); $totalcount = get_users(false, '', true, '', '', '', '') - 1; // -1 to not count guest user if ($firstinitial or $lastinitial) { $matchcount = get_users(false, '', true, '', '', $firstinitial, $lastinitial) - 1; @@ -179,8 +83,8 @@ } else { $dsort = "u.$sort"; } - $students = get_course_students($course->id, $dsort, $dir, $page*$perpage, $perpage, - $firstinitial, $lastinitial, $currentgroup); + $students = get_course_students($course->id, $dsort, $dir, $page*$perpage, + $perpage, $firstinitial, $lastinitial, $currentgroup); $totalcount = count_course_students($course, "", "", "", $currentgroup); if ($firstinitial or $lastinitial) { $matchcount = count_course_students($course, "", $firstinitial, $lastinitial, $currentgroup); @@ -189,17 +93,12 @@ } } - $a->count = $totalcount; - $a->items = $course->students; - echo '<h2 align="center">'.get_string('counteditems', '', $a); - if (isteacheredit($course->id)) { - echo ' <a href="../course/student.php?id='.$course->id.'">'; - echo '<img src="'.$CFG->pixpath.'/i/edit.gif" height="16" width="16" alt="" /></a>'; - } - echo '</h2>'; + echo "<h2 align=center>$totalcount $course->students</h2>"; - if (($CFG->longtimenosee > 0) and ($CFG->longtimenosee < 1000) and (!$page) and ($sort == "lastaccess")) { - echo '<p id="longtimenosee">('.get_string('unusedaccounts', '', $CFG->longtimenosee).')</p>'; + if (($CFG->longtimenosee < 500) and (!$page) and ($sort == "lastaccess")) { + echo "<center><p><font size=1>("; + print_string("unusedaccounts","",$CFG->longtimenosee); + echo ")</font></p></center>"; } /// Print paging bars if necessary @@ -214,8 +113,8 @@ echo "<center><p align=\"center\">"; echo get_string("firstname")." : "; if ($firstinitial) { - echo " <a href=\"index.php?id=$course->id&amp;sort=firstname&amp;dir=ASC&amp;group=$currentgroup&amp;". - "perpage=$perpage&amp;lastinitial=$lastinitial\">$strall</a> "; + echo " <a href=\"index.php?id=$course->id&sort=firstname&dir=ASC&". + "perpage=$perpage&lastinitial=$lastinitial\">$strall</a> "; } else { echo " <b>$strall</b> "; } @@ -223,8 +122,8 @@ if ($letter == $firstinitial) { echo " <b>$letter</b> "; } else { - echo " <a href=\"index.php?id=$course->id&amp;sort=firstname&amp;dir=ASC&amp;group=$currentgroup&amp;". - "perpage=$perpage&amp;lastinitial=$lastinitial&amp;firstinitial=$letter\">$letter</a> "; + echo " <a href=\"index.php?id=$course->id&sort=firstname&dir=ASC&". + "perpage=$perpage&lastinitial=$lastinitial&firstinitial=$letter\">$letter</a> "; } } echo "<br />"; @@ -233,8 +132,8 @@ echo get_string("lastname")." : "; if ($lastinitial) { - echo " <a href=\"index.php?id=$course->id&amp;sort=lastname&amp;dir=ASC&amp;group=$currentgroup&amp;". - "perpage=$perpage&amp;firstinitial=$firstinitial\">$strall</a> "; + echo " <a href=\"index.php?id=$course->id&sort=lastname&dir=ASC&". + "perpage=$perpage&firstinitial=$firstinitial\">$strall</a> "; } else { echo " <b>$strall</b> "; } @@ -242,49 +141,29 @@ if ($letter == $lastinitial) { echo " <b>$letter</b> "; } else { - echo " <a href=\"index.php?id=$course->id&amp;sort=lastname&amp;dir=ASC&amp;group=$currentgroup&amp;". - "perpage=$perpage&amp;firstinitial=$firstinitial&amp;lastinitial=$letter\">$letter</a> "; + echo " <a href=\"index.php?id=$course->id&sort=lastname&dir=ASC&". + "perpage=$perpage&firstinitial=$firstinitial&lastinitial=$letter\">$letter</a> "; } } echo "</p>"; echo "</center>"; - print_paging_bar($matchcount, $page, $perpage, - "index.php?id=$course->id&amp;sort=$sort&amp;dir=$dir&amp;group=$currentgroup&amp;perpage=$perpage&amp;firstinitial=$firstinitial&amp;lastinitial=$lastinitial&amp;"); + print_paging_bar($matchcount, $page, $perpage, + "index.php?id=$course->id&sort=$sort&dir=$dir&perpage=$perpage&firstinitial=$firstinitial&lastinitial=$lastinitial&"); } if ($matchcount < 1) { print_heading(get_string("nostudentsfound", "", $course->students)); - } else if ($fullmode) { // Print simple listing + } if (0 < $matchcount and $matchcount < USER_SMALL_CLASS) { // Print simple listing foreach ($students as $student) { print_user($student, $course); } } else if ($matchcount > 0) { - print_user_table($students, $isteacher); - print_paging_bar($matchcount, $page, $perpage, - "index.php?id=$course->id&amp;sort=$sort&amp;dir=$dir&amp;group=$currentgroup&amp;perpage=$perpage&amp;firstinitial=$firstinitial&amp;lastinitial=$lastinitial&amp;"); - - if ($perpage < $totalcount) { - echo "<center><p>"; - echo "<a href=\"index.php?id=$course->id&amp;sort=$sort&amp;dir=$dir&amp;group=$currentgroup&amp;perpage=99999\">".get_string("showall", "", $totalcount)."</a>"; - echo "</p></center>"; - } - } - - print_footer($course); - exit; - - - - -function print_user_table($users, $isteacher) { // Print one big table with abbreviated info - global $mode, $sort, $course, $dir, $CFG; - $columns = array("firstname", "lastname", "city", "country", "lastaccess"); $countries = get_list_of_countries(); @@ -316,52 +195,63 @@ function print_user_table($users, $isteacher) { } else { $columnicon = $dir == "asc" ? "down":"up"; } - $columnicon = " <img src=\"$CFG->pixpath/t/$columnicon.gif\" alt=\"\"/>"; + $columnicon = " <img src=\"$CFG->pixpath/t/$columnicon.gif\" />"; } - $$column = "<a href=\"index.php?id=$course->id&amp;sort=$column&amp;dir=$columndir\">".$colname["$column"]."</a>$columnicon"; + $$column = "<a href=\"index.php?id=$course->id&sort=$column&dir=$columndir\">".$colname["$column"]."</a>$columnicon"; } - foreach ($users as $key => $user) { - $users[$key]->country = ($user->country) ? $countries[$user->country] : ''; + foreach ($students as $key => $student) { + $students[$key]->country = ($student->country) ? $countries[$student->country] : ''; } if ($sort == "country") { // Need to re-sort by full country name, not code - foreach ($users as $user) { - $sstudents[$user->id] = $user->country; + foreach ($students as $student) { + $sstudents[$student->id] = $student->country; } asort($sstudents); foreach ($sstudents as $key => $value) { - $nstudents[] = $users[$key]; + $nstudents[] = $students[$key]; } - $users = $nstudents; + $students = $nstudents; } $table->head = array ("&nbsp;", "$firstname / $lastname", $city, $country, $lastaccess); - $table->align = array ("left", "left", "left", "left", "left"); + $table->align = array ("LEFT", "LEFT", "LEFT", "LEFT", "LEFT"); $table->size = array ("10", "*", "*", "*", "*"); $table->size = array ("10", "*", "*", "*", "*"); $table->cellpadding = 4; $table->cellspacing = 0; + + foreach ($students as $student) { - foreach ($users as $user) { - - if ($user->lastaccess) { - $lastaccess = format_time(time() - $user->lastaccess, $datestring); + if ($student->lastaccess) { + $lastaccess = format_time(time() - $student->lastaccess, $datestring); } else { $lastaccess = $strnever; } - $picture = print_user_picture($user->id, $course->id, $user->picture, false, true); + $picture = print_user_picture($student->id, $course->id, $student->picture, false, true); - $fullname = fullname($user, $isteacher); + $fullname = fullname($student, $isteacher); $table->data[] = array ($picture, - "<b><a href=\"$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id\">$fullname</a></b>", - $user->city, - $user->country, - $lastaccess); + "<b><a href=\"$CFG->wwwroot/user/view.php?id=$student->id&course=$course->id\">$fullname</a></b>", + "<font size=2>$student->city</font>", + "<font size=2>$student->country</font>", + "<font size=2>$lastaccess</font>"); } print_table($table); -} + + print_paging_bar($matchcount, $page, $perpage, + "index.php?id=$course->id&sort=$sort&dir=$dir&perpage=$perpage&firstinitial=$firstinitial&lastinitial=$lastinitial&"); + + if ($perpage != 99999) { + echo "<center><p>"; + echo "<a href=\"index.php?id=$course->id&sort=$sort&dir=$dir&perpage=99999\">".get_string("showall", "", $totalcount)."</a>"; + echo "</p></center>"; + } + } + + print_footer($course); ?> diff --git a/user/pix.php b/user/pix.php index 838ff8bb0d0..97921489386 100644 --- a/user/pix.php +++ b/user/pix.php @@ -5,26 +5,45 @@ $nomoodlecookie = true; // Because it interferes with caching - require_once('../config.php'); - require_once($CFG->libdir.'/filelib.php'); + require_once("../config.php"); - $relativepath = get_file_argument('pix.php'); + $lifetime = 86400; - $args = explode('/', trim($relativepath, '/')); + if (isset($file)) { // workaround for situations where / syntax doesn't work + $pathinfo = $file; - if (count($args) == 2) { - $userid = (integer)$args[0]; - $image = $args[1]; - $pathname = $CFG->dataroot.'/users/'.$userid.'/'.$image; } else { - $image = 'f1.png'; - $pathname = $CFG->dirroot.'/pix/u/f1.png'; + $pathinfo = get_slash_arguments("pix.php"); } - if (file_exists($pathname) and !is_dir($pathname)) { - send_file($pathname, $image); - } else { - header('HTTP/1.0 404 not found'); - error(get_string('filenotfound', 'error')); //this is not displayed on IIS?? + if (! $args = parse_slash_arguments($pathinfo)) { + error("No valid arguments supplied"); } + + $numargs = count($args); + + if ($numargs == 2) { + $userid = (integer)$args[0]; + $image = $args[1]; + $pathname = "$CFG->dataroot/users/$userid/$image"; + $filetype = "image/jpeg"; + } else { + $pathname = "$CFG->dirroot/pix/u/f1.png"; + $filetype = "image/png"; + } + + $lastmodified = filemtime($pathname); + + if (file_exists($pathname)) { + header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); + 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-disposition: inline; filename=$image"); + header("Content-length: ".filesize($pathname)); + header("Content-type: $filetype"); + readfile("$pathname"); + } + + exit; ?> diff --git a/user/pixgroup.php b/user/pixgroup.php index 3e793ef1079..c5505a204cb 100644 --- a/user/pixgroup.php +++ b/user/pixgroup.php @@ -5,26 +5,45 @@ $nomoodlecookie = true; // Because it interferes with caching - require_once('../config.php'); - require_once($CFG->libdir.'/filelib.php'); + require_once("../config.php"); - $relativepath = get_file_argument('pixgroup.php'); + $lifetime = 86400; - $args = explode('/', trim($relativepath, '/')); + if (isset($file)) { // workaround for situations where / syntax doesn't work + $pathinfo = $file; - if (count($args) == 2) { - $groupid = (integer)$args[0]; - $image = $args[1]; - $pathname = $CFG->dataroot.'/groups/'.$groupid.'/'.$image; } else { - $image = 'f1.png'; - $pathname = $CFG->dirroot.'/pix/g/f1.png'; + $pathinfo = get_slash_arguments("pixgroup.php"); } - if (file_exists($pathname) and !is_dir($pathname)) { - send_file($pathname, $image); - } else { - header('HTTP/1.0 404 not found'); - error(get_string('filenotfound', 'error')); //this is not displayed on IIS?? + if (! $args = parse_slash_arguments($pathinfo)) { + error("No valid arguments supplied"); } + + $numargs = count($args); + + if ($numargs == 2) { + $groupid = (integer)$args[0]; + $image = $args[1]; + $pathname = "$CFG->dataroot/groups/$groupid/$image"; + $filetype = "image/jpeg"; + } else { + $pathname = "$CFG->dirroot/pix/g/f1.png"; + $filetype = "image/png"; + } + + $lastmodified = filemtime($pathname); + + if (file_exists($pathname)) { + header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); + 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-disposition: inline; filename=$image"); + header("Content-length: ".filesize($pathname)); + header("Content-type: $filetype"); + readfile("$pathname"); + } + + exit; ?> diff --git a/user/policy.php b/user/policy.php deleted file mode 100644 index bcc1b9aa913..00000000000 --- a/user/policy.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php // $Id$ - - require_once("../config.php"); - - $agree = optional_param('agree', 0, PARAM_INT); - - define('MESSAGE_WINDOW', true); // This prevents the message window coming up - - - if (!isset($USER->id)) { - require_login(); - } - - if ($agree == 1 and confirm_sesskey()) { // User has agreed - if ($USER->username != 'guest') { // Don't remember guests - if (!set_field('user', 'policyagreed', 1, 'id', $USER->id)) { - error('Could not save your agreement'); - } - } - $USER->policyagreed = 1; - - if (!empty($SESSION->wantsurl)) { - $wantsurl = $SESSION->wantsurl; - unset($SESSION->wantsurl); - redirect($wantsurl); - } else { - redirect($CFG->wwwroot.'/'); - } - exit; - } - - $strpolicyagree = get_string('policyagree'); - $strpolicyagreement = get_string('policyagreement'); - $strpolicyagreementclick = get_string('policyagreementclick'); - - print_header($strpolicyagreement, $SITE->fullname, $strpolicyagreement); - - print_heading($strpolicyagreement); - - echo '<center>'; - echo '<iframe width="90%" height="70%" src="'.$CFG->sitepolicy.'">'; - echo link_to_popup_window ($CFG->sitepolicy, 'agreement', $strpolicyagreementclick, - 500, 500, 'Popup window', 'none', true); - echo '</iframe>'; - echo '</center>'; - - notice_yesno($strpolicyagree, "policy.php?agree=1&amp;sesskey=$USER->sesskey", $CFG->wwwroot); - - print_footer(); - -?> diff --git a/user/tabs.php b/user/tabs.php deleted file mode 100644 index 638d7595d64..00000000000 --- a/user/tabs.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php // $Id$ -/// This file to be included so we can assume config.php has already been included. -/// We also assume that $user, $course, $currenttab have been set - - - if (empty($currenttab) or empty($user) or empty($course)) { - error('You cannot call this script in that way'); - } - - print_heading(fullname($user, isteacher($course->id))); - -//if (!empty($USER) and (isteacher($course->id) or (($USER->id == $user->id) and !isguest()))) { // tabs are shown - - $inactive = NULL; - $toprow = array(); - - $toprow[] = new tabobject('profile', $CFG->wwwroot.'/user/view.php?id='.$user->id.'&amp;course='.$course->id, - get_string('profile')); - - - -/// Can only edit profile if it belongs to user or current user is admin and not editing primary admin - - if (($mainadmin = get_admin()) === false) { - $mainadmin->id = 0; /// Weird - no primary admin! - } - if ((!empty($USER->id) and ($USER->id == $user->id) and !isguest()) or - (isadmin() and ($user->id != $mainadmin->id)) ) { - - if(empty($CFG->loginhttps)) { - $wwwroot = $CFG->wwwroot; - } else { - $wwwroot = str_replace('http','https',$CFG->wwwroot); - } - $toprow[] = new tabobject('editprofile', $wwwroot.'/user/edit.php?id='.$user->id.'&amp;course='.$course->id, - get_string('editmyprofile')); - } - - -/// Everyone can see posts for this user - - $toprow[] = new tabobject('forumposts', $CFG->wwwroot.'/mod/forum/user.php?id='.$user->id.'&amp;course='.$course->id, - get_string('forumposts', 'forum')); - - if (in_array($currenttab, array('posts', 'discussions'))) { - $inactive = array('forumposts'); - - $secondrow = array(); - $secondrow[] = new tabobject('posts', $CFG->wwwroot.'/mod/forum/user.php?course='.$course->id. - '&amp;id='.$user->id.'&amp;mode=posts', get_string('posts', 'forum')); - $secondrow[] = new tabobject('discussions', $CFG->wwwroot.'/mod/forum/user.php?course='.$course->id. - '&amp;id='.$user->id.'&amp;mode=discussions', get_string('discussions', 'forum')); - } - - -/// Current user must be teacher of the course or the course allows user to view their reports - if (isteacher($course->id) or ($course->showreports and $USER->id == $user->id)) { - - $toprow[] = new tabobject('reports', $CFG->wwwroot.'/course/user.php?id='.$course->id. - '&amp;user='.$user->id.'&amp;mode=outline', get_string('activityreports')); - - if (in_array($currenttab, array('outline', 'complete', 'todaylogs', 'alllogs'))) { - $inactive = array('reports'); - - $secondrow = array(); - $secondrow[] = new tabobject('outline', $CFG->wwwroot.'/course/user.php?id='.$course->id. - '&amp;user='.$user->id.'&amp;mode=outline', get_string('outlinereport')); - $secondrow[] = new tabobject('complete', $CFG->wwwroot.'/course/user.php?id='.$course->id. - '&amp;user='.$user->id.'&amp;mode=complete', get_string('completereport')); - $secondrow[] = new tabobject('todaylogs', $CFG->wwwroot.'/course/user.php?id='.$course->id. - '&amp;user='.$user->id.'&amp;mode=todaylogs', get_string('todaylogs')); - $secondrow[] = new tabobject('alllogs', $CFG->wwwroot.'/course/user.php?id='.$course->id. - '&amp;user='.$user->id.'&amp;mode=alllogs', get_string('alllogs')); - } - - } - - -/// Add second row to display if there is one - - if (!empty($secondrow)) { - $tabs = array($toprow, $secondrow); - } else { - $tabs = array($toprow); - } - - -/// Print out the tabs and continue! - - print_tabs($tabs, $currenttab, $inactive); - -?> diff --git a/user/view.php b/user/view.php index 6115978d725..f42a1ed7880 100644 --- a/user/view.php +++ b/user/view.php @@ -3,22 +3,13 @@ // Display profile for a particular user require_once("../config.php"); + require_once("../mod/forum/lib.php"); - $id = optional_param('id', 0, PARAM_INT); // user id - $course = optional_param('course', SITEID, PARAM_INT); // course id (defaults to Site) - $enable = optional_param('enable', ''); // enable email - $disable = optional_param('disable', ''); // disable email + require_variable($id); + require_variable($course); + optional_variable($enable, ""); + optional_variable($disable, ""); - if (!empty($SESSION->wantsurl)) { - $wantsurl = $SESSION->wantsurl; - unset($SESSION->wantsurl); - redirect($wantsurl); - } - - if (empty($id)) { // See your own profile by default - require_login(); - $id = $USER->id; - } if (! $user = get_record("user", "id", $id) ) { error("No such user in this course"); @@ -39,12 +30,10 @@ add_to_log($course->id, "user", "view", "view.php?id=$user->id&course=$course->id", "$user->id"); - if ($course->id != SITEID) { - if ($student = get_record("user_students", "userid", $user->id, "course", $course->id)) { - $user->lastaccess = $student->timeaccess; - } else if ($teacher = get_record("user_teachers", "userid", $user->id, "course", $course->id)) { - $user->lastaccess = $teacher->timeaccess; - } + if ($student = get_record("user_students", "userid", $user->id, "course", $course->id)) { + $user->lastaccess = $student->timeaccess; + } else if ($teacher = get_record("user_teachers", "userid", $user->id, "course", $course->id)) { + $user->lastaccess = $teacher->timeaccess; } $fullname = fullname($user, isteacher($course->id)); @@ -60,7 +49,7 @@ if (groupmode($course) == SEPARATEGROUPS and !isteacheredit($course->id)) { // Groups must be kept separate require_login(); - if (!$currentuser && !isteacheredit($course->id, $user->id) && !ismember(mygroupid($course->id), $user->id)) { + if (!isteacheredit($course->id, $user->id) and !ismember(mygroupid($course->id), $user->id)) { print_header("$personalprofile: ", "$personalprofile: ", "<a href=\"../course/view.php?id=$course->id\">$course->shortname</a> -> <a href=\"index.php?id=$course->id\">$participants</a>", @@ -69,8 +58,8 @@ } } - if ($course->id == SITEID and !$currentuser) { // To reduce possibility of "browsing" userbase at site level - if (!isteacherinanycourse() and !isteacherinanycourse($user->id) ) { // Teachers can browse and be browsed at site level + if (!$course->category and !$currentuser) { // To reduce possibility of "browsing" userbase at site level + if (!isteacher() and !isteacher(0, $user->id) ) { // Teachers can browse and be browsed at site level print_header("$personalprofile: ", "$personalprofile: ", "<a href=\"index.php?id=$course->id\">$participants</a>", "", "", true, "&nbsp;", navmenu($course)); @@ -104,32 +93,42 @@ print_heading(get_string("userdeleted")); } - -/// Print tabs at top -/// This same call is made in: -/// /user/view.php -/// /user/edit.php -/// /course/user.php - $currenttab = 'profile'; - include('tabs.php'); - - - - echo "<table width=\"80%\" align=\"center\" border=\"0\" cellspacing=\"0\" class=\"userinfobox\">"; + echo "<table width=\"80%\" align=\"center\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\" class=\"userinfobox\">"; echo "<tr>"; - echo "<td width=\"100\" valign=\"top\" class=\"side\">"; + echo "<td width=\"100\" valign=\"top\" class=\"userinfoboxside\">"; print_user_picture($user->id, $course->id, $user->picture, true, false, false); - echo "</td><td width=\"100%\" class=\"content\">"; + echo "</td><td width=\"100%\" bgcolor=\"$THEME->cellcontent\" class=\"userinfoboxcontent\">"; + + + // Print name and edit button across top + + echo "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td nowrap>"; + echo "<h3>$fullname</h3>"; + echo "</td><td align=\"right\">"; + if (($currentuser and !isguest()) or isadmin()) { + if(empty($CFG->loginhttps)) { + $wwwroot = $CFG->wwwroot; + } else { + $wwwroot = str_replace('http','https',$CFG->wwwroot); + } + echo "<p><form action=\"$wwwroot/user/edit.php\" method=\"get\">"; + echo "<input type=\"hidden\" name=\"id\" value=\"$id\" />"; + echo "<input type=\"hidden\" name=\"course\" value=\"$course->id\" />"; + echo "<input type=\"submit\" value=\"".get_string("editmyprofile")."\" />"; + echo "</form></p>"; + } + echo "</td></tr></table>"; + // Print the description if ($user->description) { - echo format_text($user->description, FORMAT_MOODLE)."<hr />"; + echo "<p>".format_text(clean_text($user->description, FORMAT_MOODLE))."</p><hr>"; } // Print all the little details in a list - echo '<table border="0" cellpadding="0" cellspacing="0" class="list">'; + echo "<table border=\"0\" cellpadding=\"5\" cellspacing=\"2\">"; if ($user->city or $user->country) { $countries = get_list_of_countries(); @@ -152,20 +151,15 @@ ($user->maildisplay == 2 and $course->category and !isguest()) or isteacher($course->id)) { - $emailswitch = ''; - if (isteacheredit($course->id) or $currentuser) { /// Can use the enable/disable email stuff - if (!empty($_GET['enable'])) { /// Recieved a parameter to enable the email address + if (!empty($_GET['enable'])) { /// Recieved a paramter to enable the email address set_field('user', 'emailstop', 0, 'id', $user->id); $user->emailstop = 0; } - if (!empty($_GET['disable'])) { /// Recieved a parameter to disable the email address + if (!empty($_GET['disable'])) { /// Recieved a paramter to disable the email address set_field('user', 'emailstop', 1, 'id', $user->id); $user->emailstop = 1; } - } - - if (isteacheredit($course->id)) { /// Can use the enable/disable email stuff if ($user->emailstop) { $switchparam = 'enable'; $switchtitle = get_string('emaildisable'); @@ -178,18 +172,10 @@ $switchpix = 'email.gif'; } $emailswitch = "&nbsp<a title=\"$switchclick\" ". - "href=\"view.php?id=$user->id&course=$course->id&$switchparam=1\">". + "href=\"view.php?id=$user->id&course=$course->id&$switchparam=$user->id\">". "<img border=\"0\" width=11 height=11 src=\"$CFG->pixpath/t/$switchpix\"></a>"; - - } else if ($currentuser) { /// Can only re-enable an email this way - if ($user->emailstop) { // Include link that tells how to re-enable their email - $switchparam = 'enable'; - $switchtitle = get_string('emaildisable'); - $switchclick = get_string('emailenableclick'); - - $emailswitch = "&nbsp(<a title=\"$switchclick\" ". - "href=\"view.php?id=$user->id&course=$course->id&enable=1\">$switchtitle</a>)"; - } + } else { + $emailswitch = ''; } print_row(get_string("email").":", obfuscate_mailto($user->email, '', $user->emailstop)."$emailswitch"); @@ -200,20 +186,7 @@ } if ($user->icq) { - print_row(get_string('icqnumber').':',"<a href=\"http://web.icq.com/wwp?uin=$user->icq\">$user->icq <img src=\"http://web.icq.com/whitepages/online?icq=$user->icq&amp;img=5\" width=\"18\" height=\"18\" border=\"0\" alt=\"\" /></a>"); - } - - if ($user->skype) { - print_row(get_string('skypeid').':','<a href="callto:'.urlencode($user->skype).'">'.s($user->skype).'</a>'); - } - if ($user->yahoo) { - print_row(get_string('yahooid').':', '<a href="http://edit.yahoo.com/config/send_webmesg?.target='.s($user->yahoo).'&amp;.src=pg">'.s($user->yahoo).'</a>'); - } - if ($user->aim) { - print_row(get_string('aimid').':', '<a href="aim:goim?screenname='.s($user->aim).'">'.s($user->aim).'</a>'); - } - if ($user->msn) { - print_row(get_string('msnid').':', s($user->msn)); + print_row("ICQ:","<a href=\"http://web.icq.com/wwp?uin=$user->icq\">$user->icq <img src=\"http://web.icq.com/whitepages/online?icq=$user->icq&img=5\" width=18 height=18 border=0></a>"); } if (isteacher($course->id)) { @@ -221,7 +194,7 @@ $courselisting = ''; foreach ($mycourses as $mycourse) { if ($mycourse->visible and $mycourse->category) { - $courselisting .= "<a href=\"$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$mycourse->id\">$mycourse->fullname</a>, "; + $courselisting .= "<a href=\"$CFG->wwwroot/user/view.php?id=$user->id&course=$mycourse->id\">$mycourse->fullname</a>, "; } } print_row(get_string('courses').':', rtrim($courselisting,', ')); @@ -239,81 +212,68 @@ echo "</td></tr></table>"; - $internalpassword = false; - if (is_internal_auth() or (!empty($CFG->{'auth_'.$USER->auth.'_stdchangepassword'}))) { - if (empty($CFG->loginhttps)) { - $internalpassword = "$CFG->wwwroot/login/change_password.php"; + if (is_internal_auth()) { + if(empty($CFG->loginhttps)) { + $internalpassword = "$CFG->wwwroot/login/change_password.php"; } else { $internalpassword = str_replace('http','https',$CFG->wwwroot.'/login/change_password.php'); } } // Print other functions - echo '<div class="buttons"><table align="center"><tr>'; + echo "<center><table align=center><tr>"; if ($currentuser and !isguest()) { - if ($internalpassword ) { - echo "<td nowrap=\"nowrap\"><form action=\"$internalpassword\" method=\"get\">"; - echo "<input type=\"hidden\" name=\"id\" value=\"$course->id\" />"; - echo "<input type=\"submit\" value=\"".get_string("changepassword")."\" />"; - echo "</form></td>"; - } else if ( strlen($CFG->changepassword) > 1 ) { - echo "<td nowrap=\"nowrap\"><form action=\"$CFG->changepassword\" method=\"get\">"; - echo "<input type=\"submit\" value=\"".get_string("changepassword")."\" />"; - echo "</form></td>"; + if ($internalpassword) { + echo "<td nowrap><p><form action=\"$internalpassword\" method=get>"; + echo "<input type=hidden name=id value=\"$course->id\">"; + echo "<input type=submit value=\"".get_string("changepassword")."\">"; + echo "</form></p></td>"; + } else if (strlen($CFG->changepassword) > 1) { + echo "<td nowrap><p><form action=\"$CFG->changepassword\" method=get>"; + echo "<input type=submit value=\"".get_string("changepassword")."\">"; + echo "</form></p></td>"; } } if ($course->category and ((isstudent($course->id) and ($user->id == $USER->id) and !isguest() and $CFG->allowunenroll) or (isteacheredit($course->id) and isstudent($course->id, $user->id))) ) { - echo "<td nowrap=\"nowrap\"><form action=\"../course/unenrol.php\" method=\"get\" />"; - echo "<input type=\"hidden\" name=\"id\" value=\"$course->id\" />"; - echo "<input type=\"hidden\" name=\"user\" value=\"$user->id\" />"; - echo "<input type=\"submit\" value=\"".get_string("unenrolme", "", $course->shortname)."\">"; - echo "</form></td>"; + echo "<td nowrap><p><form action=\"../course/unenrol.php\" method=get>"; + echo "<input type=hidden name=id value=\"$course->id\">"; + echo "<input type=hidden name=user value=\"$user->id\">"; + echo "<input type=submit value=\"".get_string("unenrolme", "", $course->shortname)."\">"; + echo "</form></p></td>"; } -/* if (isteacher($course->id) or ($course->showreports and $USER->id == $user->id)) { - echo "<td nowrap=\"nowrap\"><form action=\"../course/user.php\" method=\"get\">"; - echo "<input type=\"hidden\" name=\"id\" value=\"$course->id\" />"; - echo "<input type=\"hidden\" name=\"user\" value=\"$user->id\" />"; - echo "<input type=\"submit\" value=\"".get_string("activityreport")."\" />"; - echo "</form></td>"; + if (isteacher($course->id) or ($course->showreports and $USER->id == $user->id)) { + echo "<td nowrap><p><form action=\"../course/user.php\" method=get>"; + echo "<input type=hidden name=id value=\"$course->id\">"; + echo "<input type=hidden name=user value=\"$user->id\">"; + echo "<input type=submit value=\"".get_string("activityreport")."\">"; + echo "</form></p></td>"; } -*/ - if ((isadmin() and !isadmin($user->id)) or (isteacher($course->id) and ($USER->id != $user->id) and !iscreator($user->id))) { - echo "<td nowrap=\"nowrap\"><form action=\"../course/loginas.php\" method=\"get\">"; - echo "<input type=\"hidden\" name=\"id\" value=\"$course->id\" />"; - echo "<input type=\"hidden\" name=\"user\" value=\"$user->id\" />"; - echo "<input type=\"submit\" value=\"".get_string("loginas")."\" />"; - echo "</form></td>"; + if (isteacher($course->id) and ($USER->id != $user->id) and !iscreator($user->id)) { + echo "<td nowrap><p><form action=\"../course/loginas.php\" method=get>"; + echo "<input type=hidden name=id value=\"$course->id\">"; + echo "<input type=hidden name=user value=\"$user->id\">"; + echo "<input type=submit value=\"".get_string("loginas")."\">"; + echo "</form></p></td>"; } - if (!empty($CFG->messaging) and !isguest()) { - if (!empty($USER->id) and ($USER->id == $user->id)) { - if ($countmessages = count_records('message', 'useridto', $user->id)) { - $messagebuttonname = get_string("messages", "message")."($countmessages)"; - } else { - $messagebuttonname = get_string("messages", "message"); - } - echo "<td nowrap=\"nowrap\"><form target=\"message\" action=\"../message/index.php\" method=\"get\">"; - echo "<input type=\"submit\" value=\"$messagebuttonname\" onclick=\"return openpopup('/message/index.php', 'message', 'menubar=0,location=0,scrollbars,status,resizable,width=400,height=500', 0);\" />"; - echo "</form></td>"; - } else { - echo "<td nowrap=\"nowrap\"><form target=\"message_$user->id\" action=\"../message/discussion.php\" method=\"get\">"; - echo "<input type=\"hidden\" name=\"id\" value=\"$user->id\" />"; - echo "<input type=\"submit\" value=\"".get_string("sendmessage", "message")."\" onclick=\"return openpopup('/message/discussion.php?id=$user->id', 'message_$user->id', 'menubar=0,location=0,scrollbars,status,resizable,width=400,height=500', 0);\" />"; - echo "</form></td>"; - } - } - echo "<td></td>"; - echo "</tr></table></div>\n"; + echo "</tr></table></center>\n"; + $isseparategroups = ($course->groupmode == SEPARATEGROUPS and + $course->groupmodeforce and + !isteacheredit($course->id)); + + $groupid = $isseparategroups ? get_current_group($course->id) : NULL; + + forum_print_user_discussions($course->id, $user->id, $groupid); print_footer($course); /// Functions /////// function print_row($left, $right) { - echo "\n<tr><td nowrap=\"nowrap\" align=\"right\" valign=\"top\" class=\"label c0\">$left</td><td align=\"left\" valign=\"top\" class=\"info c1\">$right</td></tr>\n"; + echo "<tr><td nowrap align=right valign=top><p>$left</td><td align=left valign=top><p>$right</p></td></tr>"; } ?> diff --git a/userpix/index.php b/userpix/index.php index a744cfb5674..ec417609146 100644 --- a/userpix/index.php +++ b/userpix/index.php @@ -25,17 +25,11 @@ print_header($title, $title, $title); foreach ($users as $user) { - $fullname = fullname($user); - echo "<a href=\"$CFG->wwwroot/user/view.php?id=$user->id&amp;course=1\"". - "title=\"$fullname\">"; - if ($CFG->slasharguments) { // Use this method if possible for better caching - echo '<img src="'. $CFG->wwwroot .'/user/pix.php/'.$user->id.'/f1.jpg"'. - ' border="0" width="100" height="100" alt="'.$fullname.'" />'; - } else { - echo '<img src="'. $CFG->wwwroot .'/user/pix.php?file=/'. $user->id .'/f1.jpg"'. - ' border="0" width="100" height="100" alt="'.$fullname.'" />'; - } - echo "</a> \n"; + echo "<a href=\"$CFG->wwwroot/user/view.php?id=$user->id&course=1\"". + "title=\"$user->firstname $user->lastname\">"; + echo "<img border=0 src=\"$CFG->wwwroot/user/pix.php/$user->id/f1.jpg\" ". + "width=100 height=100 alt=\"$user->firstname $user->lastname\" />"; + echo "</a> \n"; } print_footer(); diff --git a/version.php b/version.php index 010658313c3..012dee078ac 100644 --- a/version.php +++ b/version.php @@ -1,14 +1,12 @@ -<?php +<?PHP //$Id$ +// This file defines the current version of the +// Moodle code that is being used. This can be +// compared against the values stored in the +// database to determine whether upgrades should +// be performed (see lib/db/*.php) -// MOODLE VERSION INFORMATION +$version = 2004082300; // The current version is a date (YYYYMMDDXX) -// This file defines the current version of the core Moodle code being used. -// This is compared against the values stored in the database to determine -// whether upgrades should be performed (see lib/db/*.php) - - $version = 2005041101; // YYYYMMDD = date - // XY = increments within a single day - - $release = '1.5 UNSTABLE DEVELOPMENT'; // Human-friendly version name +$release = "1.4 beta"; // User-friendly version number ?>